[
  {
    "path": ".idea/artifacts/mongo_war.xml",
    "content": "<component name=\"ArtifactManager\">\n  <artifact type=\"war\" name=\"mongo:war\">\n    <output-path>$PROJECT_DIR$/target</output-path>\n    <root id=\"archive\" name=\"mongo.war\">\n      <element id=\"artifact\" artifact-name=\"mongo:war exploded\" />\n    </root>\n  </artifact>\n</component>"
  },
  {
    "path": ".idea/artifacts/mongo_war_exploded.xml",
    "content": "<component name=\"ArtifactManager\">\n  <artifact type=\"exploded-war\" name=\"mongo:war exploded\">\n    <output-path>$PROJECT_DIR$/target/mongo</output-path>\n    <root id=\"root\">\n      <element id=\"directory\" name=\"WEB-INF\">\n        <element id=\"directory\" name=\"classes\">\n          <element id=\"module-output\" name=\"mongo\" />\n        </element>\n        <element id=\"directory\" name=\"lib\">\n          <element id=\"library\" level=\"project\" name=\"Maven: org.slf4j:slf4j-api:1.7.12\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: ch.qos.logback:logback-core:1.1.1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: ch.qos.logback:logback-classic:1.1.1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: mysql:mysql-connector-java:5.1.22\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: taglibs:standard:1.1.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: jstl:jstl:1.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.5.4\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.fasterxml.jackson.core:jackson-annotations:2.5.0\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.fasterxml.jackson.core:jackson-core:2.5.4\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-core:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-logging:commons-logging:1.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-beans:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-context:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-aop:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: aopalliance:aopalliance:1.0\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-expression:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework.data:spring-data-mongodb:1.8.0.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework.data:spring-data-commons:1.11.0.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.slf4j:jcl-over-slf4j:1.7.12\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.mongodb:mongo-java-driver:3.2.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-tx:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-web:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-webmvc:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-test:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-orm:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-jdbc:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.springframework:spring-aspects:4.1.7.RELEASE\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-collections:commons-collections:3.2.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-fileupload:commons-fileupload:1.3.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-io:commons-io:2.2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-codec:commons-codec:1.10\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.thoughtworks.xstream:xstream:1.4.1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: xmlpull:xmlpull:1.1.3.1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: xpp3:xpp3_min:1.1.4c\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: dom4j:dom4j:1.6\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: xml-apis:xml-apis:1.0.b2\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: net.sf.json-lib:json-lib:2.4\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-beanutils:commons-beanutils:1.8.0\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-lang:commons-lang:2.5\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: net.sf.ezmorph:ezmorph:1.0.6\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: commons-httpclient:commons-httpclient:3.1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: log4j:log4j:1.2.16\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: net.sf.json-lib:json-lib:jdk15:2.4\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.json:json:20160212\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.hibernate:hibernate-core:4.3.1.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.jboss.logging:jboss-logging:3.1.3.GA\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.hibernate.common:hibernate-commons-annotations:4.0.4.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.javassist:javassist:3.18.1-GA\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: antlr:antlr:2.7.7\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.jboss:jandex:1.1.0.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.hibernate:hibernate-validator:4.3.1.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: javax.validation:validation-api:1.0.0.GA\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.hibernate:hibernate-entitymanager:4.3.1.Final\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.apache.poi:poi:3.12-beta1\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.alibaba:fastjson:1.2.7\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: com.alibaba:druid:1.0.17\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: org.aspectj:aspectjweaver:1.6.11\" />\n          <element id=\"library\" level=\"project\" name=\"Maven: aspectj:aspectjrt:1.5.3\" />\n        </element>\n      </element>\n      <element id=\"directory\" name=\"META-INF\">\n        <element id=\"file-copy\" path=\"$PROJECT_DIR$/target/mongo/META-INF/MANIFEST.MF\" />\n      </element>\n      <element id=\"javaee-facet-resources\" facet=\"mongo/web/Web\" />\n    </root>\n  </artifact>\n</component>"
  },
  {
    "path": ".idea/compiler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <resourceExtensions />\n    <wildcardResourcePatterns>\n      <entry name=\"!?*.java\" />\n      <entry name=\"!?*.form\" />\n      <entry name=\"!?*.class\" />\n      <entry name=\"!?*.groovy\" />\n      <entry name=\"!?*.scala\" />\n      <entry name=\"!?*.flex\" />\n      <entry name=\"!?*.kt\" />\n      <entry name=\"!?*.clj\" />\n      <entry name=\"!?*.aj\" />\n    </wildcardResourcePatterns>\n    <annotationProcessing>\n      <profile default=\"true\" name=\"Default\" enabled=\"false\">\n        <processorPath useClasspath=\"true\" />\n      </profile>\n      <profile default=\"false\" name=\"Maven default annotation processors profile\" enabled=\"true\">\n        <sourceOutputDir name=\"target/generated-sources/annotations\" />\n        <sourceTestOutputDir name=\"target/generated-test-sources/test-annotations\" />\n        <outputRelativeToContentRoot value=\"true\" />\n        <processorPath useClasspath=\"true\" />\n        <module name=\"mongo\" />\n      </profile>\n    </annotationProcessing>\n    <bytecodeTargetLevel>\n      <module name=\"mongo\" target=\"1.8\" />\n    </bytecodeTargetLevel>\n  </component>\n  <component name=\"JavacSettings\">\n    <option name=\"ADDITIONAL_OPTIONS_STRING\" value=\"-encoding utf-8\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "content": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": ".idea/encodings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\" defaultCharsetForPropertiesFiles=\"UTF-8\">\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/main/MenuManager.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/BaseMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/ImageMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/LinkMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/TextMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/VoiceMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Article.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Music.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/TextMessage.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/model/Button.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/model/CommonButton.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/model/WeixinUserInfo.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/service/CoreService.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMes.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMesService.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MessageUtil.java\" charset=\"GBK\" />\n    <file url=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/WeixinUtil.java\" charset=\"GBK\" />\n    <file url=\"PROJECT\" charset=\"UTF-8\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/libraries/Maven__antlr_antlr_2_7_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: antlr:antlr:2.7.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/antlr/antlr/2.7.7/antlr-2.7.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__aopalliance_aopalliance_1_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: aopalliance:aopalliance:1.0\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__aspectj_aspectjrt_1_5_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: aspectj:aspectjrt:1.5.3\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: ch.qos.logback:logback-classic:1.1.1\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__ch_qos_logback_logback_core_1_1_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: ch.qos.logback:logback-core:1.1.1\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_druid_1_0_17.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba:druid:1.0.17\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.0.17/druid-1.0.17.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.0.17/druid-1.0.17-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.0.17/druid-1.0.17-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_alibaba_fastjson_1_2_7.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.alibaba:fastjson:1.2.7\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.7/fastjson-1.2.7.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.7/fastjson-1.2.7-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/com/alibaba/fastjson/1.2.7/fastjson-1.2.7-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_5_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-annotations:2.5.0\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_5_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-core:2.5.4\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.5.4/jackson-core-2.5.4.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.5.4/jackson-core-2.5.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.5.4/jackson-core-2.5.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_5_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.5.4\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.4/jackson-databind-2.5.4.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.4/jackson-databind-2.5.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.4/jackson-databind-2.5.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: com.thoughtworks.xstream:xstream:1.4.1\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/thoughtworks/xstream/xstream/1.4.1/xstream-1.4.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/thoughtworks/xstream/xstream/1.4.1/xstream-1.4.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/com/thoughtworks/xstream/xstream/1.4.1/xstream-1.4.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_beanutils_commons_beanutils_1_8_0.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-beanutils:commons-beanutils:1.8.0\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_codec_commons_codec_1_10.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-codec:commons-codec:1.10\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-collections:commons-collections:3.2.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_fileupload_commons_fileupload_1_3_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-fileupload:commons-fileupload:1.3.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-fileupload/commons-fileupload/1.3.2/commons-fileupload-1.3.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-fileupload/commons-fileupload/1.3.2/commons-fileupload-1.3.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-fileupload/commons-fileupload/1.3.2/commons-fileupload-1.3.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-httpclient:commons-httpclient:3.1\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_io_commons_io_2_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-io:commons-io:2.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_lang_commons_lang_2_5.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-lang:commons-lang:2.5\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__commons_logging_commons_logging_1_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: commons-logging:commons-logging:1.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__dom4j_dom4j_1_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: dom4j:dom4j:1.6\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/dom4j/dom4j/1.6/dom4j-1.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/dom4j/dom4j/1.6/dom4j-1.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/dom4j/dom4j/1.6/dom4j-1.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__javax_validation_validation_api_1_0_0_GA.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: javax.validation:validation-api:1.0.0.GA\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__jstl_jstl_1_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: jstl:jstl:1.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/jstl/jstl/1.2/jstl-1.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/jstl/jstl/1.2/jstl-1.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/jstl/jstl/1.2/jstl-1.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__junit_junit_4_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: junit:junit:4.11\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/junit/junit/4.11/junit-4.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/junit/junit/4.11/junit-4.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/junit/junit/4.11/junit-4.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__log4j_log4j_1_2_16.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: log4j:log4j:1.2.16\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__mysql_mysql_connector_java_5_1_22.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: mysql:mysql-connector-java:5.1.22\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/mysql/mysql-connector-java/5.1.22/mysql-connector-java-5.1.22.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/mysql/mysql-connector-java/5.1.22/mysql-connector-java-5.1.22-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/mysql/mysql-connector-java/5.1.22/mysql-connector-java-5.1.22-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.sf.ezmorph:ezmorph:1.0.6\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_sf_json_lib_json_lib_2_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.sf.json-lib:json-lib:2.4\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: net.sf.json-lib:json-lib:jdk15:2.4\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_apache_poi_poi_3_12_beta1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.apache.poi:poi:3.12-beta1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.12-beta1/poi-3.12-beta1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.12-beta1/poi-3.12-beta1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.12-beta1/poi-3.12-beta1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_aspectj_aspectjweaver_1_6_11.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.aspectj:aspectjweaver:1.6.11\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.6.11/aspectjweaver-1.6.11.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.6.11/aspectjweaver-1.6.11-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.6.11/aspectjweaver-1.6.11-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hamcrest:hamcrest-core:1.3\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_4_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate.common:hibernate-commons-annotations:4.0.4.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/4.0.4.Final/hibernate-commons-annotations-4.0.4.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/4.0.4.Final/hibernate-commons-annotations-4.0.4.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/common/hibernate-commons-annotations/4.0.4.Final/hibernate-commons-annotations-4.0.4.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_hibernate_core_4_3_1_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate:hibernate-core:4.3.1.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/4.3.1.Final/hibernate-core-4.3.1.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/4.3.1.Final/hibernate-core-4.3.1.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-core/4.3.1.Final/hibernate-core-4.3.1.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_hibernate_entitymanager_4_3_1_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate:hibernate-entitymanager:4.3.1.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-entitymanager/4.3.1.Final/hibernate-entitymanager-4.3.1.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-entitymanager/4.3.1.Final/hibernate-entitymanager-4.3.1.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-entitymanager/4.3.1.Final/hibernate-entitymanager-4.3.1.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_hibernate_validator_4_3_1_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate:hibernate-validator:4.3.1.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.1.Final/hibernate-validator-4.3.1.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.1.Final/hibernate-validator-4.3.1.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/hibernate-validator/4.3.1.Final/hibernate-validator-4.3.1.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/hibernate/javax/persistence/hibernate-jpa-2.1-api/1.0.0.Final/hibernate-jpa-2.1-api-1.0.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.javassist:javassist:3.18.1-GA\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss:jandex:1.1.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/1.1.0.Final/jandex-1.1.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/1.1.0.Final/jandex-1.1.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/jandex/1.1.0.Final/jandex-1.1.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.logging:jboss-logging:3.1.3.GA\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging-annotations/1.2.0.Beta1/jboss-logging-annotations-1.2.0.Beta1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging-annotations/1.2.0.Beta1/jboss-logging-annotations-1.2.0.Beta1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/logging/jboss-logging-annotations/1.2.0.Beta1/jboss-logging-annotations-1.2.0.Beta1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Final/jboss-transaction-api_1.2_spec-1.0.0.Final.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Final/jboss-transaction-api_1.2_spec-1.0.0.Final-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Final/jboss-transaction-api_1.2_spec-1.0.0.Final-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_json_json_20160212.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.json:json:20160212\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_mongodb_mongo_java_driver_3_2_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.mongodb:mongo-java-driver:3.2.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/mongodb/mongo-java-driver/3.2.2/mongo-java-driver-3.2.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/mongodb/mongo-java-driver/3.2.2/mongo-java-driver-3.2.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/mongodb/mongo-java-driver/3.2.2/mongo-java-driver-3.2.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_12.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.slf4j:jcl-over-slf4j:1.7.12\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.12/jcl-over-slf4j-1.7.12.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.12/jcl-over-slf4j-1.7.12-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.12/jcl-over-slf4j-1.7.12-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_slf4j_slf4j_api_1_7_12.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.slf4j:slf4j-api:1.7.12\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_commons_1_11_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-commons:1.11.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-commons/1.11.0.RELEASE/spring-data-commons-1.11.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-commons/1.11.0.RELEASE/spring-data-commons-1.11.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-commons/1.11.0.RELEASE/spring-data-commons-1.11.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_data_spring_data_mongodb_1_8_0_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework.data:spring-data-mongodb:1.8.0.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-mongodb/1.8.0.RELEASE/spring-data-mongodb-1.8.0.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-mongodb/1.8.0.RELEASE/spring-data-mongodb-1.8.0.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/data/spring-data-mongodb/1.8.0.RELEASE/spring-data-mongodb-1.8.0.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_aop_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-aop:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-aop/4.1.7.RELEASE/spring-aop-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-aop/4.1.7.RELEASE/spring-aop-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-aop/4.1.7.RELEASE/spring-aop-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_aspects_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-aspects:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/4.1.7.RELEASE/spring-aspects-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/4.1.7.RELEASE/spring-aspects-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aspects/4.1.7.RELEASE/spring-aspects-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_beans_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-beans:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-beans/4.1.7.RELEASE/spring-beans-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-beans/4.1.7.RELEASE/spring-beans-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-beans/4.1.7.RELEASE/spring-beans-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_context_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-context:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-context/4.1.7.RELEASE/spring-context-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-context/4.1.7.RELEASE/spring-context-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-context/4.1.7.RELEASE/spring-context-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_core_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-core:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-core/4.1.7.RELEASE/spring-core-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-core/4.1.7.RELEASE/spring-core-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-core/4.1.7.RELEASE/spring-core-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_expression_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-expression:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-expression/4.1.7.RELEASE/spring-expression-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-expression/4.1.7.RELEASE/spring-expression-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-expression/4.1.7.RELEASE/spring-expression-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_jdbc_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-jdbc:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/4.1.7.RELEASE/spring-jdbc-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/4.1.7.RELEASE/spring-jdbc-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/4.1.7.RELEASE/spring-jdbc-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_orm_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-orm:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/4.1.7.RELEASE/spring-orm-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/4.1.7.RELEASE/spring-orm-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-orm/4.1.7.RELEASE/spring-orm-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_test_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-test:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-test/4.1.7.RELEASE/spring-test-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-test/4.1.7.RELEASE/spring-test-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-test/4.1.7.RELEASE/spring-test-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_tx_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-tx:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-tx/4.1.7.RELEASE/spring-tx-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-tx/4.1.7.RELEASE/spring-tx-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-tx/4.1.7.RELEASE/spring-tx-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_web_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-web:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-web/4.1.7.RELEASE/spring-web-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-web/4.1.7.RELEASE/spring-web-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-web/4.1.7.RELEASE/spring-web-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__org_springframework_spring_webmvc_4_1_7_RELEASE.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: org.springframework:spring-webmvc:4.1.7.RELEASE\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-webmvc/4.1.7.RELEASE/spring-webmvc-4.1.7.RELEASE.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-webmvc/4.1.7.RELEASE/spring-webmvc-4.1.7.RELEASE-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/org/springframework/spring-webmvc/4.1.7.RELEASE/spring-webmvc-4.1.7.RELEASE-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__taglibs_standard_1_1_2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: taglibs:standard:1.1.2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/taglibs/standard/1.1.2/standard-1.1.2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/taglibs/standard/1.1.2/standard-1.1.2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/taglibs/standard/1.1.2/standard-1.1.2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: xml-apis:xml-apis:1.0.b2\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: xmlpull:xmlpull:1.1.3.1\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml",
    "content": "<component name=\"libraryTable\">\n  <library name=\"Maven: xpp3:xpp3_min:1.1.4c\">\n    <CLASSES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar!/\" />\n    </CLASSES>\n    <JAVADOC>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-javadoc.jar!/\" />\n    </JAVADOC>\n    <SOURCES>\n      <root url=\"jar://$USER_HOME$/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-sources.jar!/\" />\n    </SOURCES>\n  </library>\n</component>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"EntryPointsManager\">\n    <entry_points version=\"2.0\" />\n  </component>\n  <component name=\"FrameworkDetectionExcludesConfiguration\">\n    <file type=\"web\" url=\"file://$PROJECT_DIR$\" />\n  </component>\n  <component name=\"MavenProjectsManager\">\n    <option name=\"originalFiles\">\n      <list>\n        <option value=\"$PROJECT_DIR$/pom.xml\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"false\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" languageLevel=\"JDK_1_8\" default=\"true\" assert-keyword=\"true\" jdk-15=\"true\" project-jdk-name=\"1.8\" project-jdk-type=\"JavaSDK\">\n    <output url=\"file://$PROJECT_DIR$/classes\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/mongo.iml\" filepath=\"$PROJECT_DIR$/mongo.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"8ce33278-6dfd-4bbb-a974-5309dbf2cf5e\" name=\"Default\" comment=\"农业大数据平台升级版（mongodb+mysql)\">\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/img/alpha.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/img/hue.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/img/saturation.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-datepicker/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-datepicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-daterangepicker/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-inputmask/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-timepicker/compiled/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-timepicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-toggle-buttons/static/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-toggle-buttons/static/stylesheets/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/img/bstree-halflings.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wizard/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wysihtml5/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/img/glyphicons-halflings-white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/img/glyphicons-halflings.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chart-master/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chosen-bootstrap/chosen/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chosen-bootstrap/chosen/chosen-sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/ckeditor/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/clockface/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/clockface/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/sort_asc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/sort_asc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/sort_both.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/sort_desc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/images/sort_desc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/deps/emitter/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/images/spritemap.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/images/spritemap_402x.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/lib/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/fancybox_loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/fancybox_overlay.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/fancybox_sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/fontawesome-webfont.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/fontawesome-webfont.eot@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/fontawesome-webfont.ttf@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fullcalendar/fullcalendar/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/images/gritter-light.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/images/gritter.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/images/ie-spacer.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-easy-pie-chart/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-slimscroll/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-tags-input/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/animated-overlay.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_5F40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_diagonals-thick_20_666666_5F40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_flat_10_000000_5F40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-icons_222222_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-icons_228ef1_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-icons_ef8c08_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-icons_ffd27a_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/images/ui-icons_ffffff_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/data/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/grain.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/link.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/link_clean.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/lupe.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/socialbar-bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/tiles/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/tiles/list.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/tiles/topgradient.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/assets/zoom_clean.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/comments.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/facebook.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/like.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/more.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/icons/twitter.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/nestable/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/plugins/bootstrap-tree/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/plugins/bootstrap-tree/bootstrap-tree/img/ajax-loader.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/uniform/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprobold.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprobold.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprobold.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprobold.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproit.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproit.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproit.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproit.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprolight.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprolight.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprolight.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprolight.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproregular.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproregular.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproregular.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproregular.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/datePicker.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/default/img.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/whyGreen/bg.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/whyGreen/img.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/back.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/cancel.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/cut.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/edit_add.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/edit_remove.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/filesave.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/mini_add.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/mini_edit.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/mini_refresh.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/no.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/ok.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/pencil.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/print.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/redo.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/reload.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/search.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/sum.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/tip.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icons/undo.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/awkward.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/bye.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/crazy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/curse.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/cute.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/despise.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/doubt.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/envy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/fastcry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/knock.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/mad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/ohmy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/panic.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/proud.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/quiet.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/shutup.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/shy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/sleep.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/struggle.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/titter.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/wail.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/wronged.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/alien.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/angel.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/bandit.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/biglaugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/blink.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/blush.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/cool.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/depres.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/devil.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/glare.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/heart.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/joyful.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/kiss.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/magician.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/ninja.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/pinch.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/police.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/sick.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/sideways.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/sleep.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/surprised.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/unsure.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/w00t.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/whistling.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/wondering.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/wub.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/10.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/11.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/12.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/13.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/14.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/15.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/16.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/17.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/18.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/19.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/20.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/21.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/22.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/23.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/25.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/26.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/27.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/28.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/29.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/30.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/31.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/32.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/33.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/34.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/35.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/36.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/37.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/38.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/39.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/40.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/7.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/8.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/msn/9.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/bad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/blush.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/brokenheart.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/bye.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/coffee.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/cool.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/curse.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/cute.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/devil.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/envy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/gift.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/good.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/kiss.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/love.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/music.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/question.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/rose.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/shocked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/shout.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/sick.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/sleepy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/soccer.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/sweat.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/tired.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/victory.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/wink.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/add.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/bg1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/bg2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/btnbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/btnbgr.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/clear.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/start.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/titlebg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/font/FontAwesome.otf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.otf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/demo/preview-admin.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/demo/preview-front.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/docs/mobile-responsive-tables-block.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/docs/mobile-responsive-tables-horizontal-swipe.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/docs/mobile-responsive-tables-regular.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/front-home-banner.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/13.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/14.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/15.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery-2/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/gallery/rs/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/lang/en.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/lang/fr.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/lang/it.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/lang/pl.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/lang/ro.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/marker.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/marker_shadow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/pattern1.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/images/pattern2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/img/easy-pie-chart.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-down.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-left.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-right.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-up.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/hs-2004-27-a-large_web.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/marker.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/mask.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/wheel.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.minicolors.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/images/spritemap.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/images/spritemap@2x.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/fonts/Anorexia.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/checked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/cmxform-divider.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/cmxform-fieldset.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/unchecked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/header1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/page.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/required_star.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/backRequiredGray.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/back_green-fade.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/back_nav_blue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/button-submit.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/favicon.ico\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/left-nav-callout-long.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/login-sprite.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/logo_marketo.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/sf.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step1-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step2-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step3-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/tab-sprite.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/tab_green.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/time.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/toggle.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/warning.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/left_white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/right_white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/errorIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/infoIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/warningIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/img/switch.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/bg-input-focus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/bg-input.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/class.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/event.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/inherit-arrow.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/inherited.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/loader.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/magnifier.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/method.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/namespace.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/page_white_code.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/page_white_copy.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/printer.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/property.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/root.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/static.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/treeview-famfamfam.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/wrapping.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/clipboard.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/bg.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/backgrounds.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/buttons-disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/buttons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/delete.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/done.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/error.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/throbber.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/transp50.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/img/plupload-bw.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/img/plupload.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.xap\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2-spinner.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2x2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/ff.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/img/tlyguide/tlyguide_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/img/tlyguide/tlyguide_icon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/jquery_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/jqueryui_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/sizzlejs_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/transparent_1x1.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/ui-anim_basic_16x16.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/images/calendar.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras2_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras3_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras4_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/calendar.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-config-on-tile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-config-on.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-spindown-closed.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-spindown-open.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/icon-docs-info.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/pbar-ani.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/earth.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/flight.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/rocket.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/images/pbar-ani.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/images/st-stephens.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/images/tower-bridge.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/images/filler.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/images/insert.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/images/button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/images/loading-background.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/lib/AlivePDF.swc\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/Sorting icons.psd\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_enabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_enabled_hover.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/favicon.ico\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_enabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_enabled_hover.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_asc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_asc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_both.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_desc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_desc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/img/down.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/img/minus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/img/plus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/img/sorting_sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/img/up.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/device-sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/images/active.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/images/disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/images/external.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/images/suspended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/screenshot.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/screenshot.pdn\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/controller/MongoController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/controller/WeChatController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/dao/PersonDao.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/entity/Address.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/entity/Person.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/main/MenuManager.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/req/BaseMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/req/ImageMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/req/LinkMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/req/TextMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/req/VoiceMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/Article.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/BaseMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/Music.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/MusicMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/NewsMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/message/resp/TextMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/AccessToken.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/BaiduPlace.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/Button.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/CommonButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/ComplexButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/Menu.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/SNSUserInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/UserLocation.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/ViewButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/WeixinOauth2Token.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/model/WeixinUserInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/mongoDao/PersonMongoDao.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/mongoDao/PersonMongoImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/service/CoreService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/service/TemplateMes.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/service/TemplateMesService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/service/WeatherService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/task/TestTask.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/AdvancedUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/Client.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/CommonUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/Count.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/HttpClientUtils.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/HttpRequestUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/MD5ForDiscuz.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/MessageUtil$1$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/MessageUtil$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/MessageUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/MyX509TrustManager.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/SignUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/com/lida/mongo/uril/WeixinUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/base/BaseController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/manual/EFManualCategoryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/manual/EFManualContentController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/news/EFCategoryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/news/EFNewsController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/DictionaryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/DictionarytypeController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/IndexController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/OrganizationController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/PictureCheckCode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/ResourceController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/RoleController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/controller/sys/UserController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/dao/BaseDaoI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/dao/impl/BaseDaoImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/constant/GlobalConstant$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/constant/GlobalConstant$2.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/constant/GlobalConstant$3.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/constant/GlobalConstant$4.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/constant/GlobalConstant.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/interceptors/SecurityInterceptor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/framework/interceptors/SecurityInterceptorFront.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/base/IdEntity.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/base/IdEntityORACLE.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/base/baseEntity.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/manual/TEFmanualCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/manual/TEFmanualContent.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/manual/TEFmanualKeyword.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/news/TEFcategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/news/TEFnews.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sensor/TmonitoringNode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sensor/TpestData.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFDictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFDictionaryCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFLoginUser.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFNotice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFOrganization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFPersonalInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFResource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFResourceMeta.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/TEFRole.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Tdictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Tdictionarytype.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Torganization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Tresource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Trole.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/model/sys/Tuser.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/Grid.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/Json.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/JsonAPI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/JsonToMobile.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/Notice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/PageFilter.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/Result.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/SessionInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/base/Tree.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/manual/EFExpertList.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/manual/EFmanualCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/manual/EFmanualCategoryList.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/manual/EFmanualContent.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/manual/EFmanualKeyword.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/news/EFCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/news/EFNews.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sensor/monitoringNode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sensor/pestData.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/Dictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/Dictionarytype.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/EFNotice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/EFResourceMeta.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/Organization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/Resource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/Role.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/pageModel/sys/User.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/base/ServiceException.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/impl/manual/EFManualCategoryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/impl/manual/EFManualContentServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/impl/manual/EFManualKeywordServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/impl/news/EFCategoryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/impl/news/EFNewsServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/manual/EFManualCategoryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/manual/EFManualContentServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/manual/EFManualKeywordServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/news/EFCategoryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/news/EFNewsServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sensor/impl/monitoringNodeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sensor/impl/pestDataServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sensor/monitoringNodeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sensor/pestDataServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/DictionaryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/DictionarytypeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/EFNoticeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/OrganizationServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/ResourceMetaServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/ResourceServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/RoleServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/UserServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/DictionaryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/DictionarytypeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/EFNoticeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/OrganizationServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/ResourceMetaImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/ResourceServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/RoleServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/service/sys/impl/UserServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/DateTimeUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/ExcelUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/FastJsonHttpMessageConverter.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/MD5Util.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/MyImageUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/PropertiesLoader.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/StringEscapeEditor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/StringUnEscapeEditor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/StringUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/light/mvc/utils/coder.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/controller/MongoController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/controller/WeChatController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/dao/PersonDao.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/entity/Address.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/entity/Person.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/main/MenuManager.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/req/BaseMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/req/ImageMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/req/LinkMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/req/TextMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/req/VoiceMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/Article.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/BaseMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/Music.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/MusicMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/NewsMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/message/resp/TextMessage.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/AccessToken.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/BaiduPlace.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/Button.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/CommonButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/ComplexButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/Menu.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/SNSUserInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/UserLocation.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/ViewButton.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/WeixinOauth2Token.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/model/WeixinUserInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/mongoDao/PersonMongoDao.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/mongoDao/PersonMongoImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/service/CoreService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/service/TemplateMes.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/service/TemplateMesService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/service/WeatherService.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/task/TestTask.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/AdvancedUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/Client.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/CommonUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/Count.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/HttpClientUtils.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/HttpRequestUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/MD5ForDiscuz.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/MessageUtil$1$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/MessageUtil$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/MessageUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/MyX509TrustManager.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/SignUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/uril/WeixinUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/base/BaseController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/manual/EFManualCategoryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/manual/EFManualContentController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/news/EFCategoryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/news/EFNewsController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/DictionaryController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/DictionarytypeController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/IndexController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/OrganizationController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/PictureCheckCode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/ResourceController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/RoleController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/controller/sys/UserController.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/dao/BaseDaoI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/dao/impl/BaseDaoImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/constant/GlobalConstant$1.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/constant/GlobalConstant$2.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/constant/GlobalConstant$3.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/constant/GlobalConstant$4.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/constant/GlobalConstant.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/interceptors/SecurityInterceptor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/framework/interceptors/SecurityInterceptorFront.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/base/IdEntity.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/base/IdEntityORACLE.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/base/baseEntity.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/manual/TEFmanualCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/manual/TEFmanualContent.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/manual/TEFmanualKeyword.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/news/TEFcategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/news/TEFnews.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sensor/TmonitoringNode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sensor/TpestData.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFDictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFDictionaryCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFLoginUser.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFNotice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFOrganization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFPersonalInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFResource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFResourceMeta.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/TEFRole.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Tdictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Tdictionarytype.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Torganization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Tresource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Trole.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/model/sys/Tuser.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/Grid.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/Json.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/JsonAPI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/JsonToMobile.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/Notice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/PageFilter.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/Result.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/SessionInfo.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/base/Tree.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/manual/EFExpertList.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/manual/EFmanualCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/manual/EFmanualCategoryList.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/manual/EFmanualContent.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/manual/EFmanualKeyword.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/news/EFCategory.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/news/EFNews.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sensor/monitoringNode.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sensor/pestData.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/Dictionary.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/Dictionarytype.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/EFNotice.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/EFResourceMeta.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/Organization.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/Resource.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/Role.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/pageModel/sys/User.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/base/ServiceException.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/impl/manual/EFManualCategoryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/impl/manual/EFManualContentServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/impl/manual/EFManualKeywordServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/impl/news/EFCategoryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/impl/news/EFNewsServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/manual/EFManualCategoryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/manual/EFManualContentServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/manual/EFManualKeywordServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/news/EFCategoryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/news/EFNewsServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sensor/impl/monitoringNodeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sensor/impl/pestDataServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sensor/monitoringNodeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sensor/pestDataServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/DictionaryServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/DictionarytypeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/EFNoticeServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/OrganizationServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/ResourceMetaServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/ResourceServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/RoleServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/UserServiceI.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/DictionaryServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/DictionarytypeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/EFNoticeServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/OrganizationServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/ResourceMetaImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/ResourceServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/RoleServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/service/sys/impl/UserServiceImpl.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/DateTimeUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/ExcelUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/FastJsonHttpMessageConverter.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/MD5Util.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/MyImageUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/PropertiesLoader.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/StringEscapeEditor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/StringUnEscapeEditor.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/StringUtil.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/light/mvc/utils/coder.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/antlr-2.7.7.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/aopalliance-1.0.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/aspectjrt-1.5.3.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/aspectjweaver-1.6.11.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-beanutils-1.8.0.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-codec-1.10.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-collections-3.2.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-fileupload-1.3.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-httpclient-3.1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-io-2.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-lang-2.5.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/commons-logging-1.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/dom4j-1.6.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/druid-1.0.17.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/ezmorph-1.0.6.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/fastjson-1.2.7.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/hibernate-commons-annotations-4.0.4.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/hibernate-core-4.3.1.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/hibernate-entitymanager-4.3.1.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/hibernate-validator-4.3.1.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jackson-annotations-2.5.0.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jackson-core-2.5.4.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jackson-databind-2.5.4.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jandex-1.1.0.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/javassist-3.18.1-GA.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jboss-logging-3.1.3.GA.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jboss-logging-annotations-1.2.0.Beta1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jboss-transaction-api_1.2_spec-1.0.0.Final.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jcl-over-slf4j-1.7.12.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/json-20160212.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/json-lib-2.4-jdk15.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/jstl-1.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/log4j-1.2.16.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/logback-classic-1.1.1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/logback-core-1.1.1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/mongo-java-driver-3.2.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/mysql-connector-java-5.1.22.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/poi-3.12-beta1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/slf4j-api-1.7.12.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-aop-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-aspects-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-beans-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-context-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-core-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-data-commons-1.11.0.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-data-mongodb-1.8.0.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-expression-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-jdbc-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-orm-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-test-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-tx-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-web-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/spring-webmvc-4.1.7.RELEASE.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/standard-1.1.2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/validation-api-1.0.0.GA.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/xml-apis-1.0.b2.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/xmlpull-1.1.3.1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/xpp3_min-1.1.4c.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/lib/xstream-1.4.1.jar\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/img/alpha.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/img/hue.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/img/saturation.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-datepicker/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-datepicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-daterangepicker/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-inputmask/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-timepicker/compiled/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-timepicker/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-toggle-buttons/static/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-toggle-buttons/static/stylesheets/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/img/bstree-halflings.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wizard/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wysihtml5/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/img/glyphicons-halflings-white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/img/glyphicons-halflings.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chart-master/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chosen-bootstrap/chosen/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chosen-bootstrap/chosen/chosen-sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/ckeditor/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/clockface/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/clockface/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/sort_asc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/sort_asc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/sort_both.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/sort_desc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/images/sort_desc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/deps/emitter/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/images/spritemap.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/images/spritemap_402x.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/lib/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/fancybox_loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/fancybox_overlay.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/fancybox_sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/fontawesome-webfont.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/fontawesome-webfont.eot@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/fontawesome-webfont.ttf@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/img/body.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/img/portal.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fullcalendar/fullcalendar/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/images/gritter-light.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/images/gritter.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/images/ie-spacer.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-easy-pie-chart/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-slimscroll/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-tags-input/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/animated-overlay.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_5F40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_diagonals-thick_20_666666_5F40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_flat_10_000000_5F40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-icons_222222_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-icons_228ef1_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-icons_ef8c08_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-icons_ffd27a_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/images/ui-icons_ffffff_5F256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/data/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/grain.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/link.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/link_clean.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/lupe.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/socialbar-bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/tiles/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/tiles/list.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/tiles/topgradient.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/assets/zoom_clean.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/css/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/comments.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/facebook.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/like.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/more.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/icons/twitter.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/nestable/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/plugins/bootstrap-tree/bootstrap-tree/img/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/plugins/bootstrap-tree/bootstrap-tree/img/ajax-loader.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/uniform/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprobold.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprobold.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprobold.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprobold.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproit.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproit.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproit.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproit.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprolight.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprolight.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprolight.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprolight.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproregular.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproregular.eot@\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproregular.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproregular.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/Descr.WD3\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/datePicker.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/default/img.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/whyGreen/bg.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/whyGreen/img.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/back.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/cancel.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/cut.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/edit_add.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/edit_remove.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/filesave.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/mini_add.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/mini_edit.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/mini_refresh.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/no.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/ok.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/pencil.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/print.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/redo.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/reload.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/search.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/sum.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/tip.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icons/undo.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/accordion_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/calendar_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/combo_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/datagrid_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/datebox_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/layout_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/linkbutton_bg.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/menu_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/messager_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/pagination_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/panel_tools.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/searchbox_button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/slider_handle.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/spinner_arrows.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/tabs_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/tree_icons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/images/validatebox_warning.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/awkward.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/bye.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/crazy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/curse.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/cute.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/despise.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/doubt.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/envy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/fastcry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/knock.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/mad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/ohmy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/panic.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/proud.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/quiet.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/shutup.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/shy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/sleep.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/struggle.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/titter.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/wail.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/wronged.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/alien.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/angel.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/bandit.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/biglaugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/blink.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/blush.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/cool.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/depres.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/devil.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/glare.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/heart.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/joyful.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/kiss.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/magician.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/ninja.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/pinch.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/police.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/sick.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/sideways.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/sleep.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/surprised.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/unsure.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/w00t.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/whistling.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/wondering.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/wub.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/10.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/11.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/12.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/13.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/14.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/15.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/16.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/17.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/18.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/19.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/20.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/21.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/22.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/23.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/25.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/26.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/27.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/28.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/29.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/30.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/31.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/32.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/33.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/34.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/35.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/36.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/37.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/38.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/39.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/40.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/7.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/8.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/msn/9.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/angry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/bad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/blush.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/brokenheart.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/bye.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/coffee.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/cool.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/cry.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/curse.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/cute.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/devil.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/envy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/gift.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/good.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/kiss.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/laugh.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/love.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/music.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/question.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/rose.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/sad.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/shocked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/shout.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/sick.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/sleepy.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/smile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/soccer.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/sweat.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/tired.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/tongue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/victory.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/wink.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/add.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/bg1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/bg2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/btnbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/btnbgr.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/clear.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/img/start.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/anchor.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/buttonbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/close.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/flash.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/progress.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/progressbg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-address.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-div.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h1.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h2.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h3.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h4.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h5.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-h6.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-p.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/tag-pre.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/titlebg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/waiting.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/wmp.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/img/wordimg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/font/FontAwesome.otf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.eot\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.otf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.woff\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/demo/preview-admin.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/demo/preview-front.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/docs/mobile-responsive-tables-block.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/docs/mobile-responsive-tables-horizontal-swipe.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/docs/mobile-responsive-tables-regular.PNG\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/front-home-banner.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/13.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/14.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/15.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery-2/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/10.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/11.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/12.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/5.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/6.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/7.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/8.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/gallery/rs/9.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/lang/en.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/lang/fr.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/lang/it.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/lang/pl.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/lang/ro.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/marker.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/marker_shadow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/pattern1.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/images/pattern2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/img/easy-pie-chart.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-down.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-left.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-right.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/arrow-up.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/hs-2004-27-a-large_web.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/marker.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/mask.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/wheel.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.minicolors.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/images/spritemap.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/images/spritemap@2x.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/fonts/Anorexia.ttf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/checked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/cmxform-divider.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/cmxform-fieldset.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/loading.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/images/unchecked.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/header1.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/page.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/images/required_star.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/backRequiredGray.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/back_green-fade.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/back_nav_blue.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/blank.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/button-submit.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/favicon.ico\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/left-nav-callout-long.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/login-sprite.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/logo_marketo.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/sf.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step1-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step2-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/step3-24.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/tab-sprite.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/tab_green.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/time.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/toggle.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/images/warning.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/bg.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/left_white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/right_white.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/img/icons.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/errorIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/infoIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/warningIcon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/img/switch.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/bg-input-focus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/bg-input.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/images/sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/class.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/event.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/help.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/inherit-arrow.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/inherited.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/loader.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/magnifier.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/method.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/namespace.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/page_white_code.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/page_white_copy.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/printer.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/property.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/root.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/static.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/treeview-famfamfam.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/img/wrapping.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/clipboard.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/bg.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/backgrounds.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/buttons-disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/buttons.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/delete.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/done.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/error.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/throbber.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/img/transp50.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/img/plupload-bw.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/img/plupload.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.swf\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.xap\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2-spinner.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2x2.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/ff.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/img/tlyguide/tlyguide_arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/img/tlyguide/tlyguide_icon.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/jquery_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/jqueryui_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/sizzlejs_32x32.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/transparent_1x1.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/images/ui-anim_basic_16x16.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/images/calendar.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras2.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras2_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras3.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras3_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras4.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras4_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/images/high_tatras_min.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/calendar.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-config-on-tile.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-config-on.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-spindown-closed.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/demo-spindown-open.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/icon-docs-info.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/images/pbar-ani.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/earth.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/flight.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/images/rocket.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/images/pbar-ani.gif\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/images/st-stephens.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/images/tower-bridge.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_2e83ff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_454545_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_888888_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/images/ui-icons_cd0a0a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_diagonals-thick_18_b81900_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_diagonals-thick_20_666666_40x40.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_flat_10_000000_40x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_100_f6f6f6_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_100_fdf5ce_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_glass_65_ffffff_1x400.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_gloss-wave_35_f6a828_500x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_highlight-soft_100_eeeeee_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-bg_highlight-soft_75_ffe45c_1x100.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_222222_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_228ef1_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ef8c08_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ffd27a_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/images/ui-icons_ffffff_256x240.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/images/filler.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/images/insert.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/images/button.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/arrow.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/arrow.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/images/extended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/images/loading-background.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/lib/AlivePDF.swc\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.min.js.gz\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/Sorting icons.psd\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_enabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/back_enabled_hover.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/favicon.ico\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_enabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/forward_enabled_hover.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_asc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_asc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_both.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_desc.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/images/sort_desc_disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/img/down.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/img/minus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/img/plus.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/img/sorting_sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/img/up.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/device-sprite.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/images/active.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/images/disabled.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/images/external.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/images/suspended.png\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/screenshot.jpg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/screenshot.pdn\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/test-classes/dao/MongoTemplateTest.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/test-classes/dao/PersonDaoTest.class\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__antlr_antlr_2_7_7.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__aspectj_aspectjrt_1_5_3.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_druid_1_0_17.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_fastjson_1_2_7.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__javax_validation_validation_api_1_0_0_GA.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_3_12_beta1.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_6_11.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_4_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_1_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_hibernate_entitymanager_4_3_1_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_hibernate_validator_4_3_1_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_0_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_json_json_20160212.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_aspects_4_1_7_RELEASE.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jdbc_4_1_7_RELEASE.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_orm_4_1_7_RELEASE.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/.idea/workspace.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/base/BaseController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/manual/EFManualCategoryController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/manual/EFManualContentController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/news/EFCategoryController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/news/EFNewsController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/DictionaryController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/DictionarytypeController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/IndexController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/OrganizationController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/PictureCheckCode.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/ResourceController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/RoleController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/UserController.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/dao/BaseDaoI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/dao/impl/BaseDaoImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/framework/constant/GlobalConstant.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptor.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptorFront.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/base/IdEntity.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/base/IdEntityORACLE.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/base/baseEntity.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/manual/TEFmanualCategory.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/manual/TEFmanualContent.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/manual/TEFmanualKeyword.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/news/TEFcategory.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/news/TEFnews.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sensor/TmonitoringNode.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sensor/TpestData.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFDictionary.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFDictionaryCategory.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFLoginUser.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFNotice.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFOrganization.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFPersonalInfo.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFResource.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFResourceMeta.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/TEFRole.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tdictionary.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tdictionarytype.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Torganization.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tresource.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Trole.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tuser.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/Grid.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/Json.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/JsonAPI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/JsonToMobile.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/Notice.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/PageFilter.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/Result.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/SessionInfo.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/base/Tree.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/manual/EFExpertList.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/manual/EFmanualCategory.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/manual/EFmanualCategoryList.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/manual/EFmanualContent.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/manual/EFmanualKeyword.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/news/EFCategory.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/news/EFNews.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sensor/monitoringNode.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sensor/pestData.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/Dictionary.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/Dictionarytype.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/EFNotice.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/EFResourceMeta.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/Organization.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/Resource.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/Role.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/pageModel/sys/User.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/base/ServiceException.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/manual/EFManualCategoryServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/manual/EFManualContentServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/manual/EFManualKeywordServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/news/EFCategoryServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/news/EFNewsServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/manual/EFManualCategoryServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/manual/EFManualContentServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/manual/EFManualKeywordServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/news/EFCategoryServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/news/EFNewsServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sensor/impl/monitoringNodeServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sensor/impl/pestDataServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sensor/monitoringNodeServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sensor/pestDataServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/DictionaryServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/DictionarytypeServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/EFNoticeServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/OrganizationServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/ResourceMetaServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/ResourceServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/RoleServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/UserServiceI.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/DictionaryServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/DictionarytypeServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/EFNoticeServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/OrganizationServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/ResourceMetaImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/ResourceServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/RoleServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/UserServiceImpl.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/DateTimeUtil.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/ExcelUtil.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/FastJsonHttpMessageConverter.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/MD5Util.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/MyImageUtil.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/PropertiesLoader.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/StringEscapeEditor.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/StringUnEscapeEditor.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/StringUtil.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/java/light/mvc/utils/coder.java\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/resources/config.properties\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/resources/spring/spring-hibernate.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/404.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/500.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/about_us.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/basic_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/blank.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/blog.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/button.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/calendar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/chartjs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/contact_us.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/draggable_portlet.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/dynamic_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/editable_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/faq.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/flot_chart.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/font_awesome.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/form_component.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/form_layout.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/form_validation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/form_wizard.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/gallery.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/general.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/general_portlet.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/glyphicons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/grids.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/index - 副本.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/invoice.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/lock.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/login.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/metro_view.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/nestable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/pricing_tables.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/profile.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/search_result.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/slider.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/tabs_accordion.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/timeline.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/tree_view.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/typography.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/inc.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/index.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/login.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/category.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/categoryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/categoryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/manual.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/manualAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/manual/manualDetail.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/category.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/categoryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/categoryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/news.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/newsAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/newsDetail.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/news/newsEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/dictionary.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/dictionaryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/dictionaryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/organization.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/organizationAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/organizationEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/resource.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/resourceAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/resourceEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/role.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/roleAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/roleEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/roleGrant.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/user.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/userAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/userEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/userEditPwd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/views/eumode/sys/userManual.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/css/colorpicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-datepicker/css/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-datepicker/js/bootstrap-datepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-daterangepicker/date.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-daterangepicker/daterangepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-daterangepicker/daterangepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-inputmask/bootstrap-inputmask.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-timepicker/compiled/timepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-timepicker/js/bootstrap-timepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/htmlexample.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/jsonexample.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-tree/xmlexample.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wizard/jquery.bootstrap.wizard.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/css/bootstrap-fileupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/css/bootstrap-responsive.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/css/bootstrap.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/js/bootstrap-fileupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/bootstrap/js/bootstrap.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chart-master/Chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chosen-bootstrap/chosen/chosen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/chosen-bootstrap/chosen/chosen.jquery.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/ckeditor/ckeditor.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/clockface/css/clockface.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/clockface/js/clockface.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/DT_bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/DT_bootstrap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/data-tables/jquery.dataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/css/dropzone.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/deps/emitter/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/dropzone/lib/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/jquery.fancybox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fancybox/source/jquery.fancybox.pack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/jquery.flot.crosshair.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/jquery.flot.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/jquery.flot.pie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/jquery.flot.resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/flot/jquery.flot.stack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13053E3D2A0B\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t06C14E9A4A\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -9008AD2B1A63\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19072F5ECA8B\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t10853ADFA9F\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q03F7DC5A5A\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 0606112A72\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-0A62DD2A40\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.03ECFC9A16\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -064148EA68\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/css/font-awesome.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/fontawesome-webfont.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/font-awesome/font/fontawesome-webfont.woff@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/fullcalendar/fullcalendar/fullcalendar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/css/jquery.gritter.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/gritter/js/jquery.gritter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-slimscroll/jquery-ui-1.9.2.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-slimscroll/jquery.slimscroll.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-tags-input/jquery.tagsinput.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-tags-input/jquery.tagsinput.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/data/jquery.vmap.sampledata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/jquery.vmap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/jqvmap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.europe.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.germany.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.russia.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.usa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.world.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/css/metro-gallery.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/js/jquery.metro-gal.megafoliopro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/metr-folio/js/jquery.metro-gal.plugins.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/nestable/jquery.nestable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/nestable/jquery.nestable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/assets/uniform/jquery.uniform.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/error/404.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/error/500.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/error/noSecurity.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/error/noSession.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/error/noSessionFront.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprobold.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproit.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadprolight.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/font/myriadproregular.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/additional-methods.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/all-chartjs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/common-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/custom-flot-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/draggable-portlet.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/dynamic-table.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/editable-table.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/external-dragging-calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/flot-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/form-component.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/form-validation-script.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/form-wizard.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/gmaps-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/gmaps.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/gritter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/home-chartjs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/home-page-calender.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jQuery.dualListBox-1.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery-1.8.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery-1.8.3.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.blockui.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.nicescroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.pulsate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.scrollTo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.sparkline.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/jquery.validate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/nestable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/pulstate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/respond.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/sliders.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/sparkline-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/tree.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/bs_js/vmaps-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/WdatePicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/lang/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/lang/zh-cn.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/lang/zh-tw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/WdatePicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/default/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/My97DatePicker/skin/whyGreen/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/jquery.easyui.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/locale/easyui-lang-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icon.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/extEasyUI.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/extJquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/lightmvc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor-1.2.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/zh-tw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/html2markdown.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/htmldomparser.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/showdown.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/ubb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/article.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/comment.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/commpany.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/countryside.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/css.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/dashicons.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/detailinputunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/embed.default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/expert.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/information.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/knowledgedata.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/login.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/performance.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/personalquestionlist.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/play.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/themepark.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/index/thickbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/css/style-default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/css/style-flat.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/bootstrap.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/core.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/extras.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/font-awesome-ie7.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/font-awesome.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/icons.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/mixins.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/path.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/less/variables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_bootstrap.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_core.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_extras.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_icons.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_mixins.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_path.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_variables.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/font-awesome-ie7.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/font-awesome/scss/font-awesome.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/css/glyphicons.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/accordions.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/alerts.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/buttons.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/calendar.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/choose.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/documentation.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/form-wizards.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/forms.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/front.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/gallery.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/guidedtour.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/jquery-ui.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/labels.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/landings.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/layout.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/login.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/lt-ie9.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/menus.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/mixins.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/modals.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/notifications.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/pagination.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/popovers.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/progress-bars.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/responsive.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/rtl.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/scaffolding.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/sliders.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/style-default.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/style-flat.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/tables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/tabs.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/themer.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/timeline.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/tooltips.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/variables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/less/widgets.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/charts.helper.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/charts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/choose.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/common.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/contact.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/file_managers.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/finances.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/form_elements.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/form_validator.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/form_wizards.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/google_analytics.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/image_crop.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/infinite_scroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/maps_google.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/maps_vector.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/modals.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/notifications.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/sliders.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/tables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/tables_responsive.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/themer.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/tour_demo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/twitter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/ui.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/demo/widgets.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/Makefile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/Readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.coffee\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/API.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/FAQ.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/Makefile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/NEWS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/PLUGINS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/README.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/ajax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/annotating.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/basic.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-1.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-2.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-3.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-4.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-5.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-japan-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-usa-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/graph-types.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/image.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/interacting-axes.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/interacting.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/multiple-axes.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/navigate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/percentiles.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/pie.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/realtime.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/selection.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/setting-options.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/stacking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/symbols.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/thresholding.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/time.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/tracking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/turning-series.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/visitors.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/zooming.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/excanvas.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.orderBars.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/charts/sparkline/jquery.sparkline.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/CHANGELOG.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/README.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/demo1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/demo2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/css/datetimepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.kr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.bowerrc\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.travis.yml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/less/timepicker.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/KeyboardEventsSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/MouseEventsSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/TimepickerSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/fixtures/timepicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/SpecHelper.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/jasmine-jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/css/basic.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/css/dropzone.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/upload.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.date.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.numeric.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.regex.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.date.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.numeric.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.regex.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/changelog.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/ajaxSubmit-intergration-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/captcha.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/image_req.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/image.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/index.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/newsession.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/process.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/rand.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/chili.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxform.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxformTemplate.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/reset.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/screen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-messages-metadata-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-methods-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/dynamic-totals.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/errorcontainer-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/file_input.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/jquerymobile.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/js/chili-1.7.pack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/screen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/ie6.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/jquery.maskedinput.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/mktSignup.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/step2.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/stylesheet.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.accordion.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.core.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/radio-checkbox-select-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tabs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/themerollered.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/editor_template.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/langs/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/tiny_mce.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/grunt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.3.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.4.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.5.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.6.1.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.7.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.form.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.metadata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.mockjax.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_eu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ka.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_kk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_no.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_PT.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_si.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_vi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh_TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebugx.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/large.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/messages.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/rules.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/selects/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/test.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/css/multi-select.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/js/jquery.multi-select.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/README.textile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/demo/demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/changelog.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.File.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.QueueProgress.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Runtime.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Uploader.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.BrowserPlus.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Flash.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Gears.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html4.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html5.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Silverlight.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/general.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/grids.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/jquery.treeview.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/reset.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shThemeMoxieDoc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/general.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/jquery.treeview.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/model.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/plupload.vsdoc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/custom.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/dump.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/jquery_ui_widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/queue_widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/s3.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/upload.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr-ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ko.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pt-br.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.browserplus.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.full.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.gears.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html4.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html5.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/license.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/release.sh\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-PT.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/addons/markerclustererplus/markerclusterer.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/data/demo.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microdata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microformat.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.overlays.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.rdfa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.services.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.full.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.microdata.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.microformat.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.overlays.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.rdfa.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.services.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/elements.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.1.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.2.2.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/france-elections.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/gdp-data.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/jquery-jvectormap-1.1.1.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/jquery-jvectormap-1.2.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-de-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-es-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-fr-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-aea-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-lcc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-world-mill-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/mall-map.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/AUTHORS\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/COPYING\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/README\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example3.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/excanvas.compiled.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/arc.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/clearpath.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/drawimage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/linewidth.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/overflow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/quadraticcurve.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/resizing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/saverestorepath.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-scale-rotate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-should-not-close-path.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-apollo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-clj.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-css.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-go.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-hs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lisp.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lua.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-ml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-n.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-proto.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-scala.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-sql.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-tex.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vhdl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-wiki.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-xq.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-yaml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/holder/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/holder/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/holder/holder.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/holder/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/ChangeLog.markdown\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/README.markdown\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/test/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/allow-page-scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/chaining.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/disable-fade-out.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/dynamic-content.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/height-width.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/mouse-wheel.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/multiple-elements.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/navigation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/nested.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/programmatic-scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/rail.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scroll-events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scrollbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/start-position.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/slimScroll.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/jquery.ba-resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/js-beautify/beautify-html.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/js-beautify/beautify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/json2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/less/pageguide.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/AUTHORS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/MIT-LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/collapsible.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/custom-icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/fillspace.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/hoverintent.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/no-auto-height.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/categories.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/combobox.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/custom-data.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/folding.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/london.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/maxheight.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple-remote.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-jsonp.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-with-cache.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/search.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/xml.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/checkbox.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/radio.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/splitbutton.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/toolbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/alt-field.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/animation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/buttonbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-formats.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-range.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/dropdown-month-year.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/icon-trigger.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/inline.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/localization.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/min-max.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/multiple-calendars.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/other-months.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/show-week.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/demos.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/animated.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-confirmation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-form.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-message.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/constrain-movement.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/cursor-style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/handle.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/revert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/snap-to.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/accepted-elements.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/photo-manager.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/propagation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/revert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/shopping-cart.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/easing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/cycler.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/animated.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/animate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/aspect-ratio.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/constrain-area.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/helper.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/max-min.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/snap-to-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/synchronous-resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/textarea.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/display-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/serialize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/colorpicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/hotelrooms.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/multiple-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemin.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/side-scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/slider-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/steps.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists-through-tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/display-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/empty-lists.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/items.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/placeholder.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/portlets.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/currency.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/decimal.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/latlong.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/overflow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/time.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content3-slow.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content4-broken.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/bottom.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/collapsible.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/manipulation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/mouseover.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-animation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-content.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/forms.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/tracking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/video-player.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/accordion.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/autocomplete.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/blind-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/bounce-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/button.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/clip-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/datepicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/dialog.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/draggable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/drop-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/droppable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/explode-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fade-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fold-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/highlight-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/jQuery.widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/menu.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/mouse.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/position.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/progressbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/puff-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/pulsate-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/resizable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/scale-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/selectable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/shake-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/size-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slide-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slider.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/spinner.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tooltip.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/transfer-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.de-DE.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.ja-JP.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.bgiframe-2.1.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.cookie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.metadata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.mousewheel.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jshint.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/grunt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery-ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.all.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.autocomplete.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.base.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.button.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.resizable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.selectable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.theme.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery-ui.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.accordion.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.autocomplete.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.button.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.core.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.datepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.dialog.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.menu.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.progressbar.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.resizable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.selectable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.slider.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.spinner.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.tabs.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.theme.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.tooltip.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery-ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.all.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.base.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.button.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.resizable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.selectable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.theme.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery-ui.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.accordion.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.autocomplete.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.button.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.core.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.datepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.dialog.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.menu.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.progressbar.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.resizable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.selectable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.slider.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.spinner.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.tabs.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.theme.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.tooltip.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.accordion.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.autocomplete.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.button.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.core.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.datepicker.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.dialog.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.draggable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.droppable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-blind.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-bounce.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-clip.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-drop.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-explode.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fade.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fold.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-highlight.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-pulsate.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-scale.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-shake.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-slide.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-transfer.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.menu.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.mouse.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.position.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.progressbar.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.resizable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.selectable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.slider.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.sortable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.spinner.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tabs.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tooltip.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.widget.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery-ui-i18n.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-af.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar-DZ.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-az.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cy-GB.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-AU.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-NZ.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-gl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-id.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-is.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ka.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-kk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-km.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-mk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl-BE.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-no.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-rm.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tj.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery-ui.custom.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.accordion.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.autocomplete.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.button.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.core.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.datepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.dialog.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.draggable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.droppable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-blind.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-bounce.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-clip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-drop.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-explode.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fade.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fold.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-highlight.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-pulsate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-scale.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-shake.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-slide.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-transfer.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.menu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.mouse.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.position.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.progressbar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.resizable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.selectable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.slider.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.sortable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.spinner.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tabs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tooltip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.widget.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery-ui-i18n.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-af.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ar-DZ.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-az.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-bg.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-bs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ca.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-cs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-cy-GB.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-da.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-de.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-el.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-AU.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-GB.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-NZ.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-eo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-es.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-et.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-eu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fa.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fr-CH.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-gl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-he.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hy.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-id.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-is.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-it.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ja.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ka.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-kk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-km.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ko.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lb.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lt.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lv.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-mk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ml.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ms.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-nl-BE.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-nl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-no.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pt-BR.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pt.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-rm.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ro.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ru.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sq.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sr-SR.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sv.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ta.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-th.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-tj.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-tr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-uk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-vi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-CN.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-HK.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-TW.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery-ui.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.accordion.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.autocomplete.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.button.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.core.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.datepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.dialog.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.draggable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.droppable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-blind.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-bounce.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-clip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-drop.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-explode.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-fade.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-fold.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-highlight.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-pulsate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-scale.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-shake.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-slide.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-transfer.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.menu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.mouse.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.position.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.progressbar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.resizable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.selectable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.slider.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.sortable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.spinner.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.tabs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.tooltip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.widget.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/jquery.cookie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/less.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/system/modernizr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/34cdb56b2c.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oAria.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oPaginate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.ext.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.ext.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oColumn.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oRow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oBrowser.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oFeatures.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oLanguage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oPreviousSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oScroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/callbacks.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/inputs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/css/AutoFill.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/02ff627f40.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/36456bf45f.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/47cac4f141.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/5a72546831.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/8ee4007a12.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/AutoFill.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/b44bd4821a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/c6945fdb4a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/alt_insert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/col_filter.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/colvis.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedcolumns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedheader.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/css/ColReorder.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/46848f6f3b.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/4f1246032c.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/ColReorder.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/predefined.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/reset.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/server_side.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/state_save.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/theme.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/exclude_columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVis.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVisAlt.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ColVis.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ccb5a49865.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/mouseover.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/text.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/theme.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/title_callback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables_identical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable_scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/editing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/form.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/api_scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/large_js_source.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/css/dataTables.scroller.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/2500.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/server_processing.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.oDefaults.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/baed189d4a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/c6053fac6b.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/server-side_processing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/state_saving.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/ZeroClipboard.as\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/ZeroClipboard.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/DT_bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_page.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table_jui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables_themeroller.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/DT_bootstrap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/DataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.internal.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.static.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.ajax.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.columns.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.constructor.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.data.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.draw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.filter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.info.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.init.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.length.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.page.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.processing.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.scrolling.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sizing.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sort.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.state.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.support.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.classes.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.paging.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.sorting.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.types.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.column.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.columns.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.ext.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.row.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.search.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.settings.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/.gitattributes\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-responsive.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-tab.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable-0.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.paginate.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.sortable-0.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-bootstrapSwitch.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-colspan.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-events.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-enter-disabled.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-via-events.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-group-headers.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination-multiple.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-toc.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-widthHeightOverride.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-with-bootstrap.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-zebra.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo2.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo3.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo4.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/footable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/data-generator.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.filter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.paginate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.plugin.template.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.sortable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/responsive-container.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/test-adding-attribs.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/skins/css/blue-gray.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/src/main/webapp/style/eu/theme/skins/less/blue-gray.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/config.properties\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/logback.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/mongo.properties\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/spring/spring-context.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/spring/spring-hibernate.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/spring/spring-mongo.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/classes/spring/spring-web.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/META-INF/MANIFEST.MF\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/config.properties\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/logback.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/mongo.properties\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/spring/spring-context.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/spring/spring-hibernate.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/spring/spring-mongo.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/classes/spring/spring-web.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/404.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/500.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/about_us.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/basic_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/blank.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/blog.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/button.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/calendar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/chartjs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/contact_us.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/draggable_portlet.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/dynamic_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/editable_table.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/faq.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/flot_chart.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/font_awesome.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/form_component.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/form_layout.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/form_validation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/form_wizard.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/gallery.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/general.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/general_portlet.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/glyphicons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/grids.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/index - 副本.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/invoice.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/lock.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/login.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/metro_view.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/nestable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/pricing_tables.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/profile.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/search_result.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/slider.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/tabs_accordion.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/timeline.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/tree_view.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/bsmode/html/typography.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/inc.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/index.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/login.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/category.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/categoryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/categoryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/manual.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/manualAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/manual/manualDetail.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/category.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/categoryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/categoryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/news.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/newsAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/newsDetail.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/news/newsEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/dictionary.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/dictionaryAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/dictionaryEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/organization.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/organizationAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/organizationEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/resource.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/resourceAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/resourceEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/role.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/roleAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/roleEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/roleGrant.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/user.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/userAdd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/userEdit.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/userEditPwd.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/eumode/sys/userManual.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/views/mogoList.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/WEB-INF/web.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/css/colorpicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-datepicker/css/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-datepicker/js/bootstrap-datepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-daterangepicker/date.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-daterangepicker/daterangepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-daterangepicker/daterangepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-inputmask/bootstrap-inputmask.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-timepicker/compiled/timepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-timepicker/js/bootstrap-timepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/htmlexample.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/jsonexample.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-tree/xmlexample.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wizard/jquery.bootstrap.wizard.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/css/bootstrap-fileupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/css/bootstrap-responsive.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/css/bootstrap.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/js/bootstrap-fileupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/bootstrap/js/bootstrap.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chart-master/Chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chosen-bootstrap/chosen/chosen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/chosen-bootstrap/chosen/chosen.jquery.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/ckeditor/ckeditor.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/clockface/css/clockface.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/clockface/js/clockface.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/DT_bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/DT_bootstrap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/data-tables/jquery.dataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/css/dropzone.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/deps/emitter/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/dropzone/lib/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/jquery.fancybox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fancybox/source/jquery.fancybox.pack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/jquery.flot.crosshair.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/jquery.flot.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/jquery.flot.pie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/jquery.flot.resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/flot/jquery.flot.stack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13053E3D2A0B\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t06C14E9A4A\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -9008AD2B1A63\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19072F5ECA8B\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t10853ADFA9F\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q03F7DC5A5A\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 0606112A72\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-0A62DD2A40\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.03ECFC9A16\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -064148EA68\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/css/font-awesome.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/fontawesome-webfont.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/font-awesome/font/fontawesome-webfont.woff@v=3.2.1\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/fullcalendar/fullcalendar/fullcalendar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/css/jquery.gritter.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/gritter/js/jquery.gritter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-slimscroll/jquery-ui-1.9.2.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-slimscroll/jquery.slimscroll.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-tags-input/jquery.tagsinput.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-tags-input/jquery.tagsinput.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/data/jquery.vmap.sampledata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/jquery.vmap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/jqvmap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.europe.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.germany.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.russia.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.usa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.world.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/css/metro-gallery.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/js/jquery.metro-gal.megafoliopro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/metr-folio/js/jquery.metro-gal.plugins.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/nestable/jquery.nestable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/nestable/jquery.nestable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/assets/uniform/jquery.uniform.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/error/404.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/error/500.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/error/noSecurity.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/error/noSession.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/error/noSessionFront.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprobold.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproit.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadprolight.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/font/myriadproregular.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/index.jsp\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/additional-methods.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/all-chartjs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/common-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/custom-flot-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/draggable-portlet.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/dynamic-table.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/editable-table.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/external-dragging-calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/flot-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/form-component.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/form-validation-script.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/form-wizard.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/gmaps-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/gmaps.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/gritter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/home-chartjs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/home-page-calender.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jQuery.dualListBox-1.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery-1.8.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery-1.8.3.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.blockui.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.nicescroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.pulsate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.scrollTo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.sparkline.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/jquery.validate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/nestable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/pulstate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/respond.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/sliders.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/sparkline-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/tree.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/bs_js/vmaps-scripts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/WdatePicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/lang/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/lang/zh-cn.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/lang/zh-tw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/WdatePicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/default/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/My97DatePicker/skin/whyGreen/datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/jquery.easyui.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/locale/easyui-lang-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/default/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/icon.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/calendar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/combo.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/combobox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/datagrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/datebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/easyui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/linkbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/menubutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/messager.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/pagination.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/panel.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/propertygrid.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/searchbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/splitbutton.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tree.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/validatebox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/window.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/extEasyUI.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/extJquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/lightmvc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor-1.2.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/config.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_lang/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_lang/zh-tw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/html2markdown.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/htmldomparser.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/showdown.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_plugins/ubb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/iframe.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/article.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/comment.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/commpany.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/countryside.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/css.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/dashicons.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/detailinputunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/embed.default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/expert.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/information.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/knowledgedata.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/login.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/performance.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/personalquestionlist.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/play.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/themepark.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/index/thickbox.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/css/style-default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/css/style-flat.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/font/fontawesome-webfont.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/bootstrap.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/core.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/extras.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/font-awesome-ie7.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/font-awesome.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/icons.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/mixins.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/path.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/less/variables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_bootstrap.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_core.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_extras.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_icons.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_mixins.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_path.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/_variables.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/font-awesome-ie7.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/font-awesome/scss/font-awesome.scss\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/css/glyphicons.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/fonts/glyphicons/fonts/glyphicons-regular.svg\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/accordions.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/alerts.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/buttons.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/calendar.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/choose.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/documentation.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/form-wizards.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/forms.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/front.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/gallery.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/guidedtour.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/jquery-ui.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/labels.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/landings.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/layout.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/login.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/lt-ie9.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/menus.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/mixins.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/modals.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/notifications.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/pagination.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/popovers.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/progress-bars.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/responsive.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/rtl.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/scaffolding.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/sliders.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/style-default.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/style-flat.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/tables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/tabs.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/themer.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/timeline.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/tooltips.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/variables.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/less/widgets.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/calendar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/charts.helper.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/charts.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/choose.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/common.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/contact.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/file_managers.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/finances.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/form_elements.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/form_validator.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/form_wizards.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/google_analytics.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/image_crop.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/index.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/infinite_scroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/maps_google.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/maps_vector.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/modals.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/notifications.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/sliders.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/tables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/tables_responsive.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/themer.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/tour_demo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/twitter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/ui.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/demo/widgets.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/Makefile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/Readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.coffee\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/API.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/FAQ.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/Makefile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/NEWS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/PLUGINS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/README.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/ajax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/annotating.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/basic.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-1.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-2.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-3.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-4.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-5.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-japan-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-usa-gdp-growth.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/graph-types.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/image.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/interacting-axes.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/interacting.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/layout.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/multiple-axes.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/navigate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/percentiles.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/pie.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/realtime.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/selection.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/setting-options.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/stacking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/symbols.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/thresholding.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/time.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/tracking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/turning-series.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/visitors.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/zooming.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/excanvas.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.orderBars.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/charts/sparkline/jquery.sparkline.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/CHANGELOG.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/README.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/demo1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/demo2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/css/datetimepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.kr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.bowerrc\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.travis.yml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/less/timepicker.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/KeyboardEventsSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/MouseEventsSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/TimepickerSpec.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/fixtures/timepicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/SpecHelper.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/jasmine-jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/css/basic.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/css/dropzone.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/upload.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.date.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.numeric.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.regex.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.date.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.numeric.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.regex.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/changelog.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/ajaxSubmit-intergration-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/captcha.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/image_req.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/image.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/index.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/newsession.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/process.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/rand.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/chili.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxform.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxformTemplate.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/reset.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/screen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-messages-metadata-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-methods-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/dynamic-totals.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/errorcontainer-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/file_input.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/jquerymobile.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/js/chili-1.7.pack.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/screen.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/ie6.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/jquery.maskedinput.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/mktSignup.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/step2.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/stylesheet.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.phps\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.accordion.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.core.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/radio-checkbox-select-demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tabs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/themerollered.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/editor_template.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/langs/en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/tiny_mce.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/grunt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.3.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.4.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.5.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.6.1.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.7.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.form.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.metadata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.mockjax.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_eu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ka.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_kk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_no.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_PT.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_si.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_vi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh_TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebugx.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/large.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/messages.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/rules.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/selects/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/test.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/css/multi-select.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/js/jquery.multi-select.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/README.textile\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/demo/demo.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/changelog.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.File.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.QueueProgress.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Runtime.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Uploader.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.BrowserPlus.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Flash.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Gears.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html4.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html5.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Silverlight.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/general.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/grids.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/jquery.treeview.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/reset.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shThemeMoxieDoc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/general.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/jquery.treeview.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/model.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/plupload.vsdoc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/custom.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/dump.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/jquery_ui_widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/queue_widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/s3.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/upload.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr-ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ko.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pt-br.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.browserplus.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.full.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.gears.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html4.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html5.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/license.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/plupload/readme.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/release.sh\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-PT.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/addons/markerclustererplus/markerclusterer.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/data/demo.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.extensions.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microdata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microformat.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.overlays.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.rdfa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.services.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.full.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.microdata.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.microformat.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.overlays.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.rdfa.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/min/jquery.ui.map.services.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/elements.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.1.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.2.2.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/france-elections.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/gdp-data.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/jquery-jvectormap-1.1.1.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/jquery-jvectormap-1.2.2.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-de-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-es-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-fr-merc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-aea-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-lcc-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-world-mill-en.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/mall-map.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/AUTHORS\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/COPYING\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/README\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example3.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/excanvas.compiled.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/excanvas.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/arc.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/clearpath.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/drawimage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/linewidth.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/overflow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/quadraticcurve.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/resizing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/saverestorepath.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-scale-rotate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-should-not-close-path.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-apollo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-clj.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-css.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-go.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-hs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lisp.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lua.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-ml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-n.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-proto.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-scala.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-sql.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-tex.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vhdl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-wiki.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-xq.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-yaml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/holder/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/holder/component.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/holder/holder.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/holder/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/ChangeLog.markdown\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/README.markdown\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/test/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/allow-page-scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/chaining.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/disable-fade-out.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/dynamic-content.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/height-width.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/mouse-wheel.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/multiple-elements.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/navigation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/nested.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/programmatic-scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/rail.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scroll-events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scrollbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/start-position.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/style.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/slimScroll.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/jquery.ba-resize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/js-beautify/beautify-html.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/js-beautify/beautify.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/json2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/other/pageguide/less/pageguide.less\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/AUTHORS.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/MIT-LICENSE.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/collapsible.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/custom-icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/fillspace.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/hoverintent.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/no-auto-height.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/categories.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/combobox.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/custom-data.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/folding.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/london.xml\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/maxheight.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple-remote.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-jsonp.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-with-cache.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/search.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/xml.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/checkbox.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/radio.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/splitbutton.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/toolbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/alt-field.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/animation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/buttonbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-formats.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-range.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/dropdown-month-year.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/icon-trigger.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/inline.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/localization.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/min-max.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/multiple-calendars.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/other-months.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/show-week.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/demos.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/animated.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-confirmation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-form.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-message.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/constrain-movement.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/cursor-style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/events.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/handle.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/revert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/snap-to.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/accepted-elements.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/photo-manager.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/propagation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/revert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/shopping-cart.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/easing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/icons.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/cycler.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/animated.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/animate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/aspect-ratio.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/constrain-area.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/helper.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/max-min.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/snap-to-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/synchronous-resize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/textarea.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/visual-feedback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/display-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/serialize.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/colorpicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/hotelrooms.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/multiple-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemin.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/side-scroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/slider-vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/steps.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists-through-tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/delay-start.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/display-grid.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/empty-lists.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/items.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/placeholder.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/portlets.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/currency.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/decimal.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/latlong.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/overflow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/time.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content3-slow.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content4-broken.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/bottom.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/collapsible.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/manipulation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/mouseover.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/vertical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content1.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-animation.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-content.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/forms.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/tracking.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/video-player.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/default.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/accordion.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/autocomplete.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/blind-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/bounce-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/button.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/clip-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/datepicker.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/dialog.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/draggable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/drop-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/droppable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/explode-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fade-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fold-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/highlight-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/jQuery.widget.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/menu.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/mouse.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/position.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/progressbar.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/puff-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/pulsate-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/resizable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/scale-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/selectable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/shake-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/size-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slide-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slider.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/sortable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/spinner.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tabs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tooltip.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/transfer-effect.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.de-DE.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.ja-JP.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.bgiframe-2.1.2.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.cookie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.metadata.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.mousewheel.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jshint.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/grunt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/package.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery-ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.all.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.autocomplete.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.base.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.button.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.resizable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.selectable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.theme.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery-ui.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.accordion.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.autocomplete.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.button.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.core.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.datepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.dialog.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.menu.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.progressbar.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.resizable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.selectable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.slider.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.spinner.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.tabs.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.theme.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/minified/jquery.ui.tooltip.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery-ui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.accordion.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.all.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.base.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.button.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.core.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.dialog.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.menu.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.resizable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.selectable.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.slider.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.spinner.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tabs.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.theme.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tooltip.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery-ui.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.accordion.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.autocomplete.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.button.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.core.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.datepicker.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.dialog.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.menu.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.progressbar.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.resizable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.selectable.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.slider.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.spinner.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.tabs.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.theme.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/minified/jquery.ui.tooltip.min.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.accordion.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.autocomplete.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.button.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.core.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.datepicker.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.dialog.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.draggable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.droppable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-blind.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-bounce.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-clip.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-drop.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-explode.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fade.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fold.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-highlight.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-pulsate.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-scale.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-shake.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-slide.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-transfer.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.menu.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.mouse.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.position.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.progressbar.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.resizable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.selectable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.slider.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.sortable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.spinner.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tabs.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tooltip.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.widget.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery-ui-i18n.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-af.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar-DZ.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-az.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cy-GB.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-da.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-de.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-el.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-AU.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-NZ.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-es.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-et.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-gl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-he.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-id.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-is.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-it.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ka.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-kk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-km.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lb.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-mk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ml.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl-BE.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-no.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-rm.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-th.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tj.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery-ui.custom.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.accordion.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.autocomplete.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.button.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.core.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.datepicker.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.dialog.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.draggable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.droppable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-blind.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-bounce.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-clip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-drop.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-explode.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fade.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fold.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-highlight.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-pulsate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-scale.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-shake.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-slide.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-transfer.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.menu.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.mouse.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.position.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.progressbar.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.resizable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.selectable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.slider.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.sortable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.spinner.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tabs.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tooltip.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.widget.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery-ui-i18n.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-af.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ar-DZ.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-az.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-bg.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-bs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ca.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-cs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-cy-GB.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-da.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-de.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-el.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-AU.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-GB.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-en-NZ.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-eo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-es.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-et.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-eu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fa.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fo.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fr-CH.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-fr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-gl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-he.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-hy.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-id.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-is.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-it.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ja.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ka.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-kk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-km.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ko.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lb.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lt.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-lv.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-mk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ml.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ms.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-nl-BE.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-nl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-no.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pt-BR.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-pt.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-rm.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ro.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ru.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sl.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sq.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sr-SR.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-sv.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-ta.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-th.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-tj.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-tr.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-uk.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-vi.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-CN.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-HK.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/i18n/jquery.ui.datepicker-zh-TW.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery-ui.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.accordion.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.autocomplete.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.button.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.core.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.datepicker.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.dialog.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.draggable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.droppable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-blind.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-bounce.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-clip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-drop.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-explode.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-fade.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-fold.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-highlight.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-pulsate.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-scale.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-shake.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-slide.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect-transfer.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.effect.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.menu.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.mouse.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.position.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.progressbar.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.resizable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.selectable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.slider.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.sortable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.spinner.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.tabs.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.tooltip.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/minified/jquery.ui.widget.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-1.8.3.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/jquery.cookie.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/less.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/system/modernizr.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/34cdb56b2c.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oAria.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oPaginate.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.ext.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.ext.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oColumn.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oRow.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oBrowser.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oFeatures.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oLanguage.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oPreviousSearch.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oScroll.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/callbacks.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/inputs.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/css/AutoFill.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/02ff627f40.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/36456bf45f.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/47cac4f141.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/5a72546831.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/8ee4007a12.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/AutoFill.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/b44bd4821a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/c6945fdb4a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/alt_insert.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/col_filter.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/colvis.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedcolumns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedheader.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/css/ColReorder.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/46848f6f3b.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/4f1246032c.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/ColReorder.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/predefined.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/reset.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/server_side.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/state_save.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/theme.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/exclude_columns.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVis.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVisAlt.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ColVis.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/a69b02bcf2.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ccb5a49865.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/global.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/mouseover.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/style.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/text.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/theme.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/title_callback.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables_identical.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable_scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/editing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/form.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/api_scrolling.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/large_js_source.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/css/dataTables.scroller.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/2500.txt\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/server_processing.php\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.oDefaults.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/baed189d4a.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/c6053fac6b.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/index.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/doc.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shCore.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shThemeDataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/doc.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shBrushJScript.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shCore.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/license/Syntax Highlighter\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/server-side_processing.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/state_saving.html\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/ZeroClipboard.as\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/ZeroClipboard.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/DT_bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_page.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table_jui.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables_themeroller.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/DT_bootstrap.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.min.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/DataTables.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.internal.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.methods.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.static.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.ajax.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.columns.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.constructor.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.data.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.draw.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.filter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.info.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.init.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.length.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.page.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.processing.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.scrolling.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sizing.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sort.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.state.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.support.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.classes.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.paging.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.sorting.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.types.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.column.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.columns.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.ext.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.row.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.search.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.settings.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/.gitattributes\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/.gitignore\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/LICENSE\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/README.md\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-responsive.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-tab.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable-0.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.paginate.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.sortable-0.1.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-bootstrapSwitch.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-colspan.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-events.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-enter-disabled.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-via-events.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-group-headers.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination-multiple.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-pagination.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-toc.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-widthHeightOverride.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-with-bootstrap.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-zebra.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo2.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo3.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo4.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/footable.jquery.json\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/data-generator.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.filter.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.paginate.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.plugin.template.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.sortable.js\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/responsive-container.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/test-adding-attribs.htm\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/skins/css/blue-gray.css\" />\n      <change type=\"NEW\" beforePath=\"\" afterPath=\"$PROJECT_DIR$/target/mongo/style/eu/theme/skins/less/blue-gray.less\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/.idea/artifacts/mongo_war_exploded.xml\" afterPath=\"$PROJECT_DIR$/.idea/artifacts/mongo_war_exploded.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/.idea/compiler.xml\" afterPath=\"$PROJECT_DIR$/.idea/compiler.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/.idea/encodings.xml\" afterPath=\"$PROJECT_DIR$/.idea/encodings.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/mongo.iml\" afterPath=\"$PROJECT_DIR$/mongo.iml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/pom.xml\" afterPath=\"$PROJECT_DIR$/pom.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/MongoController.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/MongoController.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/WeChatController.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/WeChatController.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/dao/PersonDao.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/dao/PersonDao.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/entity/Person.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/entity/Person.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/main/MenuManager.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/main/MenuManager.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/BaseMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/BaseMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/ImageMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/ImageMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/LinkMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/LinkMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/TextMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/TextMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/VoiceMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/req/VoiceMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Article.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Article.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/BaseMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/BaseMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Music.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/Music.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/MusicMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/MusicMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/NewsMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/NewsMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/TextMessage.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/message/resp/TextMessage.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/AccessToken.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/AccessToken.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/BaiduPlace.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/BaiduPlace.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/Button.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/Button.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/CommonButton.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/CommonButton.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/ComplexButton.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/ComplexButton.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/Menu.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/Menu.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/SNSUserInfo.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/SNSUserInfo.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/UserLocation.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/UserLocation.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/ViewButton.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/ViewButton.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/WeixinOauth2Token.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/WeixinOauth2Token.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/WeixinUserInfo.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/model/WeixinUserInfo.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoDao.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoDao.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoImpl.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoImpl.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/CoreService.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/CoreService.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMes.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMes.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMesService.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/TemplateMesService.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/WeatherService.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/service/WeatherService.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/task/TestTask.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/task/TestTask.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/AdvancedUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/AdvancedUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/Client.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/Client.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/CommonUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/CommonUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/Count.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/Count.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/HttpClientUtils.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/HttpClientUtils.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/HttpRequestUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/HttpRequestUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MD5ForDiscuz.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MD5ForDiscuz.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MessageUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MessageUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MyX509TrustManager.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/MyX509TrustManager.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/SignUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/SignUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/WeixinUtil.java\" afterPath=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/uril/WeixinUtil.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/resources/logback.xml\" afterPath=\"$PROJECT_DIR$/src/main/resources/logback.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/resources/mongo.properties\" afterPath=\"$PROJECT_DIR$/src/main/resources/mongo.properties\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/resources/spring/spring-context.xml\" afterPath=\"$PROJECT_DIR$/src/main/resources/spring/spring-context.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/resources/spring/spring-mongo.xml\" afterPath=\"$PROJECT_DIR$/src/main/resources/spring/spring-mongo.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/resources/spring/spring-web.xml\" afterPath=\"$PROJECT_DIR$/src/main/resources/spring/spring-web.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml\" afterPath=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/test/java/dao/MongoTemplateTest.java\" afterPath=\"$PROJECT_DIR$/src/test/java/dao/MongoTemplateTest.java\" />\n      <change type=\"MODIFICATION\" beforePath=\"$PROJECT_DIR$/src/test/java/dao/PersonDaoTest.java\" afterPath=\"$PROJECT_DIR$/src/test/java/dao/PersonDaoTest.java\" />\n    </list>\n    <ignored path=\"springMvcPlusMongo.iws\" />\n    <ignored path=\".idea/workspace.xml\" />\n    <ignored path=\"$PROJECT_DIR$/target/\" />\n    <ignored path=\".idea/dataSources.local.xml\" />\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"TRACKING_ENABLED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"CreatePatchCommitExecutor\">\n    <option name=\"PATCH_PATH\" value=\"\" />\n  </component>\n  <component name=\"ExecutionTargetManager\" SELECTED_TARGET=\"default_target\" />\n  <component name=\"FavoritesManager\">\n    <favorites_list name=\"springMvcPlusMongo\" />\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf SIDE_TABS_SIZE_LIMIT_KEY=\"300\">\n      <file leaf-file-name=\"pom.xml\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/pom.xml\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"138\">\n              <caret line=\"103\" column=\"50\" selection-start-line=\"103\" selection-start-column=\"50\" selection-end-line=\"103\" selection-end-column=\"50\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"MongoController.java\" pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/MongoController.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"361\">\n              <caret line=\"29\" column=\"18\" selection-start-line=\"29\" selection-start-column=\"18\" selection-end-line=\"29\" selection-end-column=\"18\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"mongo.properties\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/resources/mongo.properties\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"0\">\n              <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"9\" selection-end-column=\"24\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"MongoTemplateTest.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/test/java/dao/MongoTemplateTest.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"456\">\n              <caret line=\"36\" column=\"65\" selection-start-line=\"31\" selection-start-column=\"8\" selection-end-line=\"36\" selection-end-column=\"65\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"spring-mongo.xml\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-mongo.xml\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"86\">\n              <caret line=\"14\" column=\"22\" selection-start-line=\"14\" selection-start-column=\"22\" selection-end-line=\"14\" selection-end-column=\"22\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"SecurityInterceptorFront.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptorFront.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"-377\">\n              <caret line=\"21\" column=\"0\" selection-start-line=\"21\" selection-start-column=\"0\" selection-end-line=\"21\" selection-end-column=\"0\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"SecurityInterceptor.java\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptor.java\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"133\">\n              <caret line=\"54\" column=\"16\" selection-start-line=\"54\" selection-start-column=\"16\" selection-end-line=\"54\" selection-end-column=\"16\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file leaf-file-name=\"config.properties\" pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/src/main/resources/config.properties\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"95\">\n              <caret line=\"5\" column=\"22\" selection-start-line=\"5\" selection-start-column=\"22\" selection-end-line=\"5\" selection-end-column=\"22\" />\n              <folding />\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"Git.Settings\">\n    <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$\" />\n  </component>\n  <component name=\"GradleLocalSettings\">\n    <option name=\"externalProjectsViewState\">\n      <projects_view />\n    </option>\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoImpl.java\" />\n        <option value=\"$PROJECT_DIR$/src/test/java/dao/MongoTemplateTest.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/logback.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/mvc/model/sys/Tresource.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/DictionaryController.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tresource.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/light/mvc/service/impl/news/EFCategoryServiceImpl.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/light/mvc/controller/manual/EFManualContentController.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/spring/spring-context.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/spring/spring-hibernate.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/config.properties\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/spring/spring-web.xml\" />\n        <option value=\"$PROJECT_DIR$/pom.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/spring/spring-mongo.xml\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptor.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/MongoController.java\" />\n        <option value=\"$PROJECT_DIR$/src/main/resources/mongo.properties\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"JsBuildToolGruntFileManager\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsBuildToolPackageJson\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsGulpfileManager\">\n    <detection-done>true</detection-done>\n    <sorting>DEFINITION_ORDER</sorting>\n  </component>\n  <component name=\"LogFilters\">\n    <option name=\"FILTER_ERRORS\" value=\"false\" />\n    <option name=\"FILTER_WARNINGS\" value=\"false\" />\n    <option name=\"FILTER_INFO\" value=\"true\" />\n    <option name=\"FILTER_DEBUG\" value=\"true\" />\n    <option name=\"CUSTOM_FILTER\" />\n  </component>\n  <component name=\"MavenImportPreferences\">\n    <option name=\"generalSettings\">\n      <MavenGeneralSettings>\n        <option name=\"mavenHome\" value=\"Bundled (Maven 3)\" />\n      </MavenGeneralSettings>\n    </option>\n    <option name=\"importingSettings\">\n      <MavenImportingSettings>\n        <option name=\"importAutomatically\" value=\"true\" />\n      </MavenImportingSettings>\n    </option>\n  </component>\n  <component name=\"ProjectFrameBounds\">\n    <option name=\"width\" value=\"1920\" />\n    <option name=\"height\" value=\"1040\" />\n  </component>\n  <component name=\"ProjectInspectionProfilesVisibleTreeState\">\n    <entry key=\"Project Default\">\n      <profile-state>\n        <expanded-state>\n          <State>\n            <id />\n          </State>\n          <State>\n            <id>CSS</id>\n          </State>\n          <State>\n            <id>Java</id>\n          </State>\n          <State>\n            <id>Java language level migration aidsJava</id>\n          </State>\n          <State>\n            <id>Memory issuesJava</id>\n          </State>\n          <State>\n            <id>Performance issuesJava</id>\n          </State>\n          <State>\n            <id>Probable bugsJava</id>\n          </State>\n        </expanded-state>\n        <selected-state>\n          <State>\n            <id>Android</id>\n          </State>\n        </selected-state>\n      </profile-state>\n    </entry>\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"false\">\n    <OptionsSetting value=\"true\" id=\"Add\" />\n    <OptionsSetting value=\"true\" id=\"Remove\" />\n    <OptionsSetting value=\"true\" id=\"Checkout\" />\n    <OptionsSetting value=\"true\" id=\"Update\" />\n    <OptionsSetting value=\"true\" id=\"Status\" />\n    <OptionsSetting value=\"true\" id=\"Edit\" />\n    <ConfirmationsSetting value=\"0\" id=\"Add\" />\n    <ConfirmationsSetting value=\"0\" id=\"Remove\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator currentView=\"ProjectPane\" proportions=\"\" version=\"1\">\n      <flattenPackages />\n      <showMembers />\n      <showModules />\n      <showLibraryContents />\n      <hideEmptyPackages />\n      <abbreviatePackageNames />\n      <autoscrollToSource />\n      <autoscrollFromSource />\n      <sortByType />\n      <manualOrder />\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"Scratches\" />\n      <pane id=\"PackagesPane\" />\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"webapp\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"resources\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"resources\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"spring\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"mvc\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"mvc\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"framework\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"interceptors\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"mvc\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"framework\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"mongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n          <PATH>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"springMvcPlusMongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"src\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"main\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"java\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"mongo\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n            <PATH_ELEMENT>\n              <option name=\"myItemId\" value=\"controller\" />\n              <option name=\"myItemType\" value=\"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode\" />\n            </PATH_ELEMENT>\n          </PATH>\n        </subPane>\n      </pane>\n      <pane id=\"Scope\" />\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"aspect.path.notification.shown\" value=\"true\" />\n    <property name=\"WebServerToolWindowFactoryState\" value=\"false\" />\n    <property name=\"project.structure.last.edited\" value=\"Modules\" />\n    <property name=\"project.structure.proportion\" value=\"0.15\" />\n    <property name=\"project.structure.side.proportion\" value=\"0.2\" />\n    <property name=\"settings.editor.selected.configurable\" value=\"reference.projectsettings.compiler.javacompiler\" />\n    <property name=\"settings.editor.splitter.proportion\" value=\"0.2\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"MoveFile.RECENT_KEYS\">\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\resources\" />\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\resources\\spring\" />\n    </key>\n    <key name=\"CopyFile.RECENT_KEYS\">\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\webapp\" />\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\webapp\\WEB-INF\\views\" />\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\java\" />\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\resources\\spring\" />\n      <recent name=\"C:\\Users\\lenovo\\IdeaProjects\\springMvcPlusMongo\\src\\main\\resources\" />\n    </key>\n  </component>\n  <component name=\"RunManager\" selected=\"Tomcat Server.Tomcat\">\n    <configuration default=\"false\" name=\"MongoTemplateTest.testMongoTemplate\" type=\"JUnit\" factoryName=\"JUnit\" temporary=\"true\" nameIsGenerated=\"true\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\">\n        <pattern>\n          <option name=\"PATTERN\" value=\"dao.*\" />\n          <option name=\"ENABLED\" value=\"true\" />\n        </pattern>\n      </extension>\n      <module name=\"mongo\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" value=\"dao\" />\n      <option name=\"MAIN_CLASS_NAME\" value=\"dao.MongoTemplateTest\" />\n      <option name=\"METHOD_NAME\" value=\"testMongoTemplate\" />\n      <option name=\"TEST_OBJECT\" value=\"method\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory\" factoryName=\"Local\" ALTERNATIVE_JRE_ENABLED=\"false\">\n      <deployment />\n      <server-settings />\n      <predefined_log_file id=\"Tomcat\" enabled=\"true\" />\n      <predefined_log_file id=\"Tomcat Catalina\" enabled=\"true\" />\n      <predefined_log_file id=\"Tomcat Manager\" enabled=\"false\" />\n      <predefined_log_file id=\"Tomcat Host Manager\" enabled=\"false\" />\n      <predefined_log_file id=\"Tomcat Localhost Access\" enabled=\"false\" />\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory\" factoryName=\"Remote\" ALTERNATIVE_JRE_ENABLED=\"false\">\n      <option name=\"LOCAL\" value=\"false\" />\n      <deployment />\n      <server-settings>\n        <data>\n          <option name=\"transportHostId\" value=\"\" />\n          <host-id />\n        </data>\n      </server-settings>\n      <predefined_log_file id=\"Tomcat\" enabled=\"true\" />\n      <predefined_log_file id=\"TOMCAT_LOCALHOST_LOG_ID\" enabled=\"true\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"#org.jetbrains.idea.devkit.run.PluginConfigurationType\" factoryName=\"Plugin\">\n      <module name=\"\" />\n      <option name=\"VM_PARAMETERS\" value=\"-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"AndroidRunConfigurationType\" factoryName=\"Android Application\">\n      <module name=\"\" />\n      <option name=\"DEPLOY\" value=\"true\" />\n      <option name=\"ARTIFACT_NAME\" value=\"\" />\n      <option name=\"PM_INSTALL_OPTIONS\" value=\"\" />\n      <option name=\"ACTIVITY_EXTRA_FLAGS\" value=\"\" />\n      <option name=\"MODE\" value=\"default_activity\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"SHOW_DIALOG\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"SKIP_NOOP_APK_INSTALLATIONS\" value=\"true\" />\n      <option name=\"FORCE_STOP_RUNNING_APP\" value=\"true\" />\n      <option name=\"DEBUGGER_TYPE\" value=\"Java\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <Java />\n      <Profilers>\n        <option name=\"GAPID_DISABLE_PCS\" value=\"false\" />\n      </Profilers>\n      <option name=\"DEEP_LINK\" value=\"\" />\n      <option name=\"ACTIVITY_CLASS\" value=\"\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"AndroidTestRunConfigurationType\" factoryName=\"Android Tests\">\n      <module name=\"\" />\n      <option name=\"TESTING_TYPE\" value=\"0\" />\n      <option name=\"INSTRUMENTATION_RUNNER_CLASS\" value=\"\" />\n      <option name=\"METHOD_NAME\" value=\"\" />\n      <option name=\"CLASS_NAME\" value=\"\" />\n      <option name=\"PACKAGE_NAME\" value=\"\" />\n      <option name=\"EXTRA_OPTIONS\" value=\"\" />\n      <option name=\"TARGET_SELECTION_MODE\" value=\"SHOW_DIALOG\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <option name=\"CLEAR_LOGCAT\" value=\"false\" />\n      <option name=\"SHOW_LOGCAT_AUTOMATICALLY\" value=\"true\" />\n      <option name=\"SKIP_NOOP_APK_INSTALLATIONS\" value=\"true\" />\n      <option name=\"FORCE_STOP_RUNNING_APP\" value=\"true\" />\n      <option name=\"DEBUGGER_TYPE\" value=\"Java\" />\n      <option name=\"USE_LAST_SELECTED_DEVICE\" value=\"false\" />\n      <option name=\"PREFERRED_AVD\" value=\"\" />\n      <Java />\n      <Profilers>\n        <option name=\"GAPID_DISABLE_PCS\" value=\"false\" />\n      </Profilers>\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Applet\" factoryName=\"Applet\">\n      <option name=\"HTML_USED\" value=\"false\" />\n      <option name=\"WIDTH\" value=\"400\" />\n      <option name=\"HEIGHT\" value=\"300\" />\n      <option name=\"POLICY_FILE\" value=\"$APPLICATION_HOME_DIR$/bin/appletviewer.policy\" />\n      <module />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Application\" factoryName=\"Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"ArquillianJUnit\" factoryName=\"\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"arquillianRunConfiguration\">\n        <value>\n          <option name=\"containerStateName\" value=\"\" />\n        </value>\n      </option>\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"ArquillianTestNG\" factoryName=\"\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"arquillianRunConfiguration\">\n        <value>\n          <option name=\"containerStateName\" value=\"\" />\n        </value>\n      </option>\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Cold Fusion runner description\" factoryName=\"Cold Fusion\" custom_browser=\"\" web_path=\"\">\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"CucumberJavaRunConfigurationType\" factoryName=\"Cucumber java\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"myFilePath\" />\n      <option name=\"GLUE\" />\n      <option name=\"myNameFilter\" />\n      <option name=\"myGeneratedName\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"FlashRunConfigurationType\" factoryName=\"Flash App\">\n      <option name=\"BCName\" value=\"\" />\n      <option name=\"IOSSimulatorSdkPath\" value=\"\" />\n      <option name=\"adlOptions\" value=\"\" />\n      <option name=\"airProgramParameters\" value=\"\" />\n      <option name=\"appDescriptorForEmulator\" value=\"Android\" />\n      <option name=\"debugTransport\" value=\"USB\" />\n      <option name=\"debuggerSdkRaw\" value=\"BC SDK\" />\n      <option name=\"emulator\" value=\"NexusOne\" />\n      <option name=\"emulatorAdlOptions\" value=\"\" />\n      <option name=\"fastPackaging\" value=\"true\" />\n      <option name=\"fullScreenHeight\" value=\"0\" />\n      <option name=\"fullScreenWidth\" value=\"0\" />\n      <option name=\"launchUrl\" value=\"false\" />\n      <option name=\"launcherParameters\">\n        <LauncherParameters>\n          <option name=\"browser\" value=\"a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8\" />\n          <option name=\"launcherType\" value=\"OSDefault\" />\n          <option name=\"newPlayerInstance\" value=\"false\" />\n          <option name=\"playerPath\" value=\"FlashPlayerDebugger.exe\" />\n        </LauncherParameters>\n      </option>\n      <option name=\"mobileRunTarget\" value=\"Emulator\" />\n      <option name=\"moduleName\" value=\"\" />\n      <option name=\"overriddenMainClass\" value=\"\" />\n      <option name=\"overriddenOutputFileName\" value=\"\" />\n      <option name=\"overrideMainClass\" value=\"false\" />\n      <option name=\"runTrusted\" value=\"true\" />\n      <option name=\"screenDpi\" value=\"0\" />\n      <option name=\"screenHeight\" value=\"0\" />\n      <option name=\"screenWidth\" value=\"0\" />\n      <option name=\"url\" value=\"http://\" />\n      <option name=\"usbDebugPort\" value=\"7936\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"FlexUnitRunConfigurationType\" factoryName=\"FlexUnit\" appDescriptorForEmulator=\"Android\" class_name=\"\" emulatorAdlOptions=\"\" method_name=\"\" package_name=\"\" scope=\"Class\">\n      <option name=\"BCName\" value=\"\" />\n      <option name=\"launcherParameters\">\n        <LauncherParameters>\n          <option name=\"browser\" value=\"a7bb68e0-33c0-4d6f-a81a-aac1fdb870c8\" />\n          <option name=\"launcherType\" value=\"OSDefault\" />\n          <option name=\"newPlayerInstance\" value=\"false\" />\n          <option name=\"playerPath\" value=\"FlashPlayerDebugger.exe\" />\n        </LauncherParameters>\n      </option>\n      <option name=\"moduleName\" value=\"\" />\n      <option name=\"trusted\" value=\"true\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"GradleRunConfiguration\" factoryName=\"Gradle\">\n      <ExternalSystemSettings>\n        <option name=\"executionName\" />\n        <option name=\"externalProjectPath\" />\n        <option name=\"externalSystemIdString\" value=\"GRADLE\" />\n        <option name=\"scriptParameters\" />\n        <option name=\"taskDescriptions\">\n          <list />\n        </option>\n        <option name=\"taskNames\">\n          <list />\n        </option>\n        <option name=\"vmOptions\" />\n      </ExternalSystemSettings>\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"GrailsRunConfigurationType\" factoryName=\"Grails\">\n      <setting name=\"vmparams\" value=\"\" />\n      <setting name=\"cmdLine\" value=\"run-app\" />\n      <setting name=\"passParentEnv\" value=\"true\" />\n      <setting name=\"launchBrowser\" value=\"true\" />\n      <setting name=\"depsClasspath\" value=\"false\" />\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnit\" factoryName=\"JUnit\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JUnitTestDiscovery\" factoryName=\"JUnit Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"class\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <envs />\n      <patterns />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JarApplication\" factoryName=\"JAR Application\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Java Scratch\" factoryName=\"Java Scratch\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"SCRATCH_FILE_ID\" value=\"0\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"ENABLE_SWING_INSPECTOR\" value=\"false\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JavascriptDebugType\" factoryName=\"JavaScript Debug\">\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"JetRunConfigurationType\" factoryName=\"Kotlin\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PROGRAM_PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <module name=\"mongo\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"KotlinStandaloneScriptRunConfigurationType\" factoryName=\"Kotlin script\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <option name=\"filePath\" />\n      <option name=\"vmParameters\" />\n      <option name=\"alternativeJrePath\" />\n      <option name=\"programParameters\" />\n      <option name=\"passParentEnvs\" value=\"true\" />\n      <option name=\"workingDirectory\" />\n      <option name=\"isAlternativeJrePathEnabled\" value=\"false\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"Remote\" factoryName=\"Remote\">\n      <option name=\"USE_SOCKET_TRANSPORT\" value=\"true\" />\n      <option name=\"SERVER_MODE\" value=\"false\" />\n      <option name=\"SHMEM_ADDRESS\" value=\"javadebug\" />\n      <option name=\"HOST\" value=\"localhost\" />\n      <option name=\"PORT\" value=\"5005\" />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"SpringBootApplicationConfigurationType\" factoryName=\"Spring Boot\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNG\" factoryName=\"TestNG\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" value=\"-ea\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" value=\"$MODULE_DIR$\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"TestNGTestDiscovery\" factoryName=\"TestNG Test Discovery\" changeList=\"All\">\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <module name=\"\" />\n      <option name=\"ALTERNATIVE_JRE_PATH_ENABLED\" value=\"false\" />\n      <option name=\"ALTERNATIVE_JRE_PATH\" />\n      <option name=\"SUITE_NAME\" />\n      <option name=\"PACKAGE_NAME\" />\n      <option name=\"MAIN_CLASS_NAME\" />\n      <option name=\"METHOD_NAME\" />\n      <option name=\"GROUP_NAME\" />\n      <option name=\"TEST_OBJECT\" value=\"CLASS\" />\n      <option name=\"VM_PARAMETERS\" />\n      <option name=\"PARAMETERS\" />\n      <option name=\"WORKING_DIRECTORY\" />\n      <option name=\"OUTPUT_DIRECTORY\" />\n      <option name=\"ANNOTATION_TYPE\" />\n      <option name=\"ENV_VARIABLES\" />\n      <option name=\"PASS_PARENT_ENVS\" value=\"true\" />\n      <option name=\"TEST_SEARCH_SCOPE\">\n        <value defaultName=\"singleModule\" />\n      </option>\n      <option name=\"USE_DEFAULT_REPORTERS\" value=\"false\" />\n      <option name=\"PROPERTIES_FILE\" />\n      <envs />\n      <properties />\n      <listeners />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"js.build_tools.gulp\" factoryName=\"Gulp.js\">\n      <node-interpreter>project</node-interpreter>\n      <node-options />\n      <gulpfile />\n      <tasks />\n      <arguments />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"js.build_tools.npm\" factoryName=\"npm\">\n      <command value=\"run-script\" />\n      <scripts />\n      <node-interpreter value=\"project\" />\n      <envs />\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"osgi.bnd.run\" factoryName=\"Run Launcher\">\n      <method />\n    </configuration>\n    <configuration default=\"true\" type=\"osgi.bnd.run\" factoryName=\"Test Launcher (JUnit)\">\n      <method />\n    </configuration>\n    <configuration default=\"false\" name=\"Tomcat\" type=\"#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory\" factoryName=\"Local\" APPLICATION_SERVER_NAME=\"Tomcat 8.0.91\" ALTERNATIVE_JRE_ENABLED=\"false\">\n      <option name=\"UPDATING_POLICY\" value=\"restart-server\" />\n      <deployment>\n        <artifact name=\"mongo:war exploded\">\n          <settings>\n            <option name=\"CONTEXT_PATH\" value=\"/mongo\" />\n          </settings>\n        </artifact>\n      </deployment>\n      <server-settings>\n        <option name=\"BASE_DIRECTORY_NAME\" value=\"Unnamed_springMvcPlusMongo\" />\n        <option name=\"HTTP_PORT\" value=\"80\" />\n      </server-settings>\n      <predefined_log_file id=\"Tomcat\" enabled=\"true\" />\n      <predefined_log_file id=\"Tomcat Catalina\" enabled=\"true\" />\n      <predefined_log_file id=\"Tomcat Manager\" enabled=\"false\" />\n      <predefined_log_file id=\"Tomcat Host Manager\" enabled=\"false\" />\n      <predefined_log_file id=\"Tomcat Localhost Access\" enabled=\"false\" />\n      <extension name=\"coverage\" enabled=\"false\" merge=\"false\" sample_coverage=\"true\" runner=\"idea\" />\n      <RunnerSettings RunnerId=\"Debug\">\n        <option name=\"DEBUG_PORT\" value=\"58450\" />\n      </RunnerSettings>\n      <ConfigurationWrapper VM_VAR=\"JAVA_OPTS\" RunnerId=\"Cover\">\n        <option name=\"USE_ENV_VARIABLES\" value=\"true\" />\n        <STARTUP>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </STARTUP>\n        <SHUTDOWN>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </SHUTDOWN>\n      </ConfigurationWrapper>\n      <ConfigurationWrapper VM_VAR=\"JAVA_OPTS\" RunnerId=\"Debug\">\n        <option name=\"USE_ENV_VARIABLES\" value=\"true\" />\n        <STARTUP>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </STARTUP>\n        <SHUTDOWN>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </SHUTDOWN>\n      </ConfigurationWrapper>\n      <ConfigurationWrapper VM_VAR=\"JAVA_OPTS\" RunnerId=\"Run\">\n        <option name=\"USE_ENV_VARIABLES\" value=\"true\" />\n        <STARTUP>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </STARTUP>\n        <SHUTDOWN>\n          <option name=\"USE_DEFAULT\" value=\"true\" />\n          <option name=\"SCRIPT\" value=\"\" />\n          <option name=\"VM_PARAMETERS\" value=\"\" />\n          <option name=\"PROGRAM_PARAMETERS\" value=\"\" />\n        </SHUTDOWN>\n      </ConfigurationWrapper>\n      <method>\n        <option name=\"BuildArtifacts\" enabled=\"true\">\n          <artifact name=\"mongo:war exploded\" />\n        </option>\n      </method>\n    </configuration>\n    <list size=\"2\">\n      <item index=\"0\" class=\"java.lang.String\" itemvalue=\"Tomcat Server.Tomcat\" />\n      <item index=\"1\" class=\"java.lang.String\" itemvalue=\"JUnit.MongoTemplateTest.testMongoTemplate\" />\n    </list>\n    <recent_temporary>\n      <list size=\"1\">\n        <item index=\"0\" class=\"java.lang.String\" itemvalue=\"JUnit.MongoTemplateTest.testMongoTemplate\" />\n      </list>\n    </recent_temporary>\n  </component>\n  <component name=\"ShelveChangesManager\" show_recycled=\"false\">\n    <option name=\"remove_strategy\" value=\"false\" />\n  </component>\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"8ce33278-6dfd-4bbb-a974-5309dbf2cf5e\" name=\"Default\" comment=\"\" />\n      <created>1479107192905</created>\n      <option name=\"number\" value=\"Default\" />\n      <option name=\"presentableId\" value=\"Default\" />\n      <updated>1479107192905</updated>\n      <workItem from=\"1479107194224\" duration=\"1805000\" />\n      <workItem from=\"1479128137193\" duration=\"2940000\" />\n      <workItem from=\"1479131107145\" duration=\"866000\" />\n      <workItem from=\"1479184683171\" duration=\"57000\" />\n      <workItem from=\"1479260987876\" duration=\"1863000\" />\n      <workItem from=\"1479262897234\" duration=\"3815000\" />\n      <workItem from=\"1479349154531\" duration=\"9346000\" />\n    </task>\n    <task id=\"LOCAL-00001\" summary=\"logback改造\">\n      <created>1479184719508</created>\n      <option name=\"number\" value=\"00001\" />\n      <option name=\"presentableId\" value=\"LOCAL-00001\" />\n      <option name=\"project\" value=\"LOCAL\" />\n      <updated>1479184719508</updated>\n    </task>\n    <option name=\"localTasksCounter\" value=\"2\" />\n    <servers />\n  </component>\n  <component name=\"TestHistory\">\n    <history-entry file=\"MongoTemplateTest_testMongoTemplate - 2016.11.14 at 21h 39m 13s.xml\">\n      <configuration name=\"MongoTemplateTest.testMongoTemplate\" configurationId=\"JUnit\" />\n    </history-entry>\n    <history-entry file=\"MongoTemplateTest_testMongoTemplate - 2016.11.17 at 14h 51m 49s.xml\">\n      <configuration name=\"MongoTemplateTest.testMongoTemplate\" configurationId=\"JUnit\" />\n    </history-entry>\n    <history-entry file=\"MongoTemplateTest_testMongoTemplate - 2016.11.17 at 14h 52m 04s.xml\">\n      <configuration name=\"MongoTemplateTest.testMongoTemplate\" configurationId=\"JUnit\" />\n    </history-entry>\n    <history-entry file=\"MongoTemplateTest_testMongoTemplate - 2016.11.17 at 14h 52m 32s.xml\">\n      <configuration name=\"MongoTemplateTest.testMongoTemplate\" configurationId=\"JUnit\" />\n    </history-entry>\n  </component>\n  <component name=\"TimeTrackingManager\">\n    <option name=\"totallyTimeSpent\" value=\"20692000\" />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"0\" y=\"0\" width=\"1920\" height=\"1040\" extended-state=\"0\" />\n    <editor active=\"false\" />\n    <layout>\n      <window_info id=\"Palette\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Event Log\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.39892474\" sideWeight=\"0.5021008\" order=\"7\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Application Servers\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.32980973\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Maven Projects\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Capture Tool\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Designer\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Database\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Structure\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Ant Build\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"UI Designer\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Debug\" active=\"true\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" show_stripe_button=\"true\" weight=\"0.59354836\" sideWeight=\"0.49789914\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"TODO\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"6\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Messages\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.32903227\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Palette&#9;\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Java Enterprise\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Capture Analysis\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"3\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Version Control\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Run\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25268817\" sideWeight=\"0.49789914\" order=\"2\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Spring\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Terminal\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Project\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"true\" show_stripe_button=\"true\" weight=\"0.25210086\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Bean Validation\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"4\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Web\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Find\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.32903227\" sideWeight=\"0.5\" order=\"1\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Favorites\" active=\"false\" anchor=\"left\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"2\" side_tool=\"true\" content_ui=\"tabs\" />\n      <window_info id=\"Cvs\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"4\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Message\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.33\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Commander\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"0\" side_tool=\"false\" content_ui=\"tabs\" />\n      <window_info id=\"Hierarchy\" active=\"false\" anchor=\"right\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.25\" sideWeight=\"0.5\" order=\"2\" side_tool=\"false\" content_ui=\"combo\" />\n      <window_info id=\"Inspection\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.4\" sideWeight=\"0.5\" order=\"5\" side_tool=\"false\" content_ui=\"tabs\" />\n    </layout>\n  </component>\n  <component name=\"Vcs.Log.UiProperties\">\n    <option name=\"RECENTLY_FILTERED_USER_GROUPS\">\n      <collection />\n    </option>\n    <option name=\"RECENTLY_FILTERED_BRANCH_GROUPS\">\n      <collection />\n    </option>\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"VcsManagerConfiguration\">\n    <MESSAGE value=\"logback改造\" />\n    <MESSAGE value=\"农业大数据平台升级版（mongodb+mysql)\" />\n    <option name=\"LAST_COMMIT_MESSAGE\" value=\"农业大数据平台升级版（mongodb+mysql)\" />\n  </component>\n  <component name=\"XDebuggerManager\">\n    <breakpoint-manager />\n    <watches-manager />\n  </component>\n  <component name=\"antWorkspaceConfiguration\">\n    <option name=\"IS_AUTOSCROLL_TO_SOURCE\" value=\"false\" />\n    <option name=\"FILTER_TARGETS\" value=\"false\" />\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"152\">\n          <caret line=\"19\" column=\"56\" selection-start-line=\"19\" selection-start-column=\"56\" selection-end-line=\"19\" selection-end-column=\"56\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/task/TestTask.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"285\">\n          <caret line=\"15\" column=\"43\" selection-start-line=\"15\" selection-start-column=\"43\" selection-end-line=\"15\" selection-end-column=\"43\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoDao.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"9\" column=\"17\" selection-start-line=\"9\" selection-start-column=\"17\" selection-end-line=\"9\" selection-end-column=\"17\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/service/CoreService.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-457\">\n          <caret line=\"21\" column=\"75\" selection-start-line=\"21\" selection-start-column=\"4\" selection-end-line=\"21\" selection-end-column=\"75\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/logback.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"684\">\n          <caret line=\"36\" column=\"72\" selection-start-line=\"36\" selection-start-column=\"72\" selection-end-line=\"36\" selection-end-column=\"72\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/mongoDao/PersonMongoImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"209\">\n          <caret line=\"22\" column=\"40\" selection-start-line=\"22\" selection-start-column=\"40\" selection-end-line=\"22\" selection-end-column=\"40\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tdictionary.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"266\">\n          <caret line=\"14\" column=\"13\" selection-start-line=\"14\" selection-start-column=\"13\" selection-end-line=\"14\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-ehcache.xml\" />\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/utils/MyImageUtil.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/DictionaryController.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"551\">\n          <caret line=\"32\" column=\"41\" selection-start-line=\"32\" selection-start-column=\"41\" selection-end-line=\"32\" selection-end-column=\"41\" />\n          <folding>\n            <element signature=\"imports\" expanded=\"false\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/service/sys/impl/UserServiceImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/utils/MD5Util.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/pageModel/news/EFCategory.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/service/news/EFNewsServiceI.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/controller/sys/PictureCheckCode.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"19\">\n          <caret line=\"35\" column=\"11\" selection-start-line=\"35\" selection-start-column=\"11\" selection-end-line=\"35\" selection-end-column=\"11\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/service/sensor/pestDataServiceI.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/dao/BaseDaoI.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"190\">\n          <caret line=\"14\" column=\"28\" selection-start-line=\"14\" selection-start-column=\"28\" selection-end-line=\"14\" selection-end-column=\"28\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/service/impl/manual/EFManualCategoryServiceImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"393\">\n          <caret line=\"21\" column=\"13\" selection-start-line=\"21\" selection-start-column=\"13\" selection-end-line=\"21\" selection-end-column=\"13\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"uml://MAVEN/com.liad:mongo:1.0-SNAPSHOT\">\n      <provider selected=\"true\" editor-type-id=\"UmlEditorProvider\">\n        <state>\n          <ID>MAVEN</ID>\n          <OriginalElement>com.liad:mongo:1.0-SNAPSHOT</OriginalElement>\n          <nodes>\n            <node x=\"\" y=\"\">com.liad:mongo:1.0-SNAPSHOT</node>\n            <node x=\"\" y=\"\">junit:junit:jar:4.11</node>\n            <node x=\"\" y=\"\">junit:junit:jar:4.11/org.hamcrest:hamcrest-core:jar:1.3</node>\n            <node x=\"\" y=\"\">org.slf4j:slf4j-api:jar:1.7.12</node>\n            <node x=\"\" y=\"\">ch.qos.logback:logback-core:jar:1.1.1</node>\n            <node x=\"\" y=\"\">ch.qos.logback:logback-classic:jar:1.1.1</node>\n            <node x=\"\" y=\"\">mysql:mysql-connector-java:jar:5.1.22</node>\n            <node x=\"\" y=\"\">taglibs:standard:jar:1.1.2</node>\n            <node x=\"\" y=\"\">jstl:jstl:jar:1.2</node>\n            <node x=\"\" y=\"\">com.fasterxml.jackson.core:jackson-databind:jar:2.5.4</node>\n            <node x=\"\" y=\"\">com.fasterxml.jackson.core:jackson-databind:jar:2.5.4/com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0</node>\n            <node x=\"\" y=\"\">com.fasterxml.jackson.core:jackson-databind:jar:2.5.4/com.fasterxml.jackson.core:jackson-core:jar:2.5.4</node>\n            <node x=\"\" y=\"\">org.springframework:spring-core:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-core:jar:4.1.7.RELEASE/commons-logging:commons-logging:jar:1.2</node>\n            <node x=\"\" y=\"\">org.springframework:spring-beans:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-context:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-context:jar:4.1.7.RELEASE/org.springframework:spring-aop:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-context:jar:4.1.7.RELEASE/org.springframework:spring-aop:jar:4.1.7.RELEASE/aopalliance:aopalliance:jar:1.0</node>\n            <node x=\"\" y=\"\">org.springframework:spring-context:jar:4.1.7.RELEASE/org.springframework:spring-expression:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework.data:spring-data-mongodb:jar:1.8.0.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework.data:spring-data-mongodb:jar:1.8.0.RELEASE/org.springframework.data:spring-data-commons:jar:1.11.0.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework.data:spring-data-mongodb:jar:1.8.0.RELEASE/org.slf4j:jcl-over-slf4j:jar:1.7.12</node>\n            <node x=\"\" y=\"\">org.mongodb:mongo-java-driver:jar:3.2.2</node>\n            <node x=\"\" y=\"\">org.springframework:spring-tx:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-web:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-webmvc:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">org.springframework:spring-test:jar:4.1.7.RELEASE</node>\n            <node x=\"\" y=\"\">commons-collections:commons-collections:jar:3.2.2</node>\n            <node x=\"\" y=\"\">commons-fileupload:commons-fileupload:jar:1.3.2</node>\n            <node x=\"\" y=\"\">commons-fileupload:commons-fileupload:jar:1.3.2/commons-io:commons-io:jar:2.2</node>\n            <node x=\"\" y=\"\">commons-codec:commons-codec:jar:1.10</node>\n            <node x=\"\" y=\"\">com.thoughtworks.xstream:xstream:jar:1.4.1</node>\n            <node x=\"\" y=\"\">com.thoughtworks.xstream:xstream:jar:1.4.1/xmlpull:xmlpull:jar:1.1.3.1</node>\n            <node x=\"\" y=\"\">com.thoughtworks.xstream:xstream:jar:1.4.1/xpp3:xpp3_min:jar:1.1.4c</node>\n            <node x=\"\" y=\"\">dom4j:dom4j:jar:1.6</node>\n            <node x=\"\" y=\"\">dom4j:dom4j:jar:1.6/xml-apis:xml-apis:jar:1.0.b2</node>\n            <node x=\"\" y=\"\">net.sf.json-lib:json-lib:jar:2.4</node>\n            <node x=\"\" y=\"\">net.sf.json-lib:json-lib:jar:2.4/commons-beanutils:commons-beanutils:jar:1.8.0</node>\n            <node x=\"\" y=\"\">net.sf.json-lib:json-lib:jar:2.4/commons-lang:commons-lang:jar:2.5</node>\n            <node x=\"\" y=\"\">net.sf.json-lib:json-lib:jar:2.4/net.sf.ezmorph:ezmorph:jar:1.0.6</node>\n            <node x=\"\" y=\"\">commons-httpclient:commons-httpclient:jar:3.1</node>\n            <node x=\"\" y=\"\">log4j:log4j:jar:1.2.16</node>\n            <node x=\"\" y=\"\">net.sf.json-lib:json-lib:jar:jdk15:2.4</node>\n          </nodes>\n          <notes />\n          <edges />\n          <settings layout=\"Hierarchic Group\" zoom=\"0.43482587064676614\" x=\"369.0\" y=\"995.0\" />\n          <SelectedNodes />\n          <Categories />\n          <SCOPE>All</SCOPE>\n          <VISIBILITY>All</VISIBILITY>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/service/impl/news/EFCategoryServiceImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"225\">\n          <caret line=\"117\" column=\"44\" selection-start-line=\"117\" selection-start-column=\"44\" selection-end-line=\"117\" selection-end-column=\"44\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/controller/manual/EFManualContentController.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"304\">\n          <caret line=\"16\" column=\"44\" selection-start-line=\"16\" selection-start-column=\"43\" selection-end-line=\"16\" selection-end-column=\"44\" />\n          <folding>\n            <element signature=\"e#5232#5250#0\" expanded=\"true\" />\n            <element signature=\"e#7194#7210#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/dao/impl/BaseDaoImpl.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"56\">\n          <caret line=\"3\" column=\"20\" selection-start-line=\"3\" selection-start-column=\"7\" selection-end-line=\"3\" selection-end-column=\"20\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/model/sensor/TpestData.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/model/sys/Tresource.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"437\">\n          <caret line=\"23\" column=\"31\" selection-start-line=\"23\" selection-start-column=\"31\" selection-end-line=\"23\" selection-end-column=\"31\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/webapp/WEB-INF/views/bsmode/html/404.html\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"0\" selection-end-column=\"0\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/mongo.iml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-1020\">\n          <caret line=\"10\" column=\"19\" selection-start-line=\"10\" selection-start-column=\"19\" selection-end-line=\"10\" selection-end-column=\"19\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/utils/ExcelUtil.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"2\" column=\"21\" selection-start-line=\"2\" selection-start-column=\"7\" selection-end-line=\"2\" selection-end-column=\"21\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/utils/FastJsonHttpMessageConverter.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"38\">\n          <caret line=\"2\" column=\"18\" selection-start-line=\"2\" selection-start-column=\"7\" selection-end-line=\"2\" selection-end-column=\"18\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/controller/manual/EFManualCategoryController.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"19\">\n          <caret line=\"29\" column=\"29\" selection-start-line=\"29\" selection-start-column=\"22\" selection-end-line=\"29\" selection-end-column=\"29\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/target/mongo/WEB-INF/classes/com/lida/mongo/controller/MongoController.class\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"209\">\n          <caret line=\"17\" column=\"30\" selection-start-line=\"17\" selection-start-column=\"30\" selection-end-line=\"17\" selection-end-column=\"30\" />\n          <folding>\n            <element signature=\"e#0#980#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/4.1.7.RELEASE/spring-aop-4.1.7.RELEASE-sources.jar!/org/springframework/aop/aspectj/autoproxy/AspectJAwareAdvisorAutoProxyCreator.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"424\">\n          <caret line=\"127\" column=\"0\" selection-start-line=\"117\" selection-start-column=\"88\" selection-end-line=\"127\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-hibernate.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-437\">\n          <caret line=\"76\" column=\"46\" selection-start-line=\"76\" selection-start-column=\"46\" selection-end-line=\"76\" selection-end-column=\"46\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/webapp/WEB-INF/views/mogoList.jsp\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"209\">\n          <caret line=\"11\" column=\"7\" selection-start-line=\"11\" selection-start-column=\"7\" selection-end-line=\"11\" selection-end-column=\"7\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/webapp/index.jsp\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"95\">\n          <caret line=\"5\" column=\"0\" selection-start-line=\"5\" selection-start-column=\"0\" selection-end-line=\"5\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"2277\">\n          <caret line=\"124\" column=\"22\" selection-start-line=\"124\" selection-start-column=\"22\" selection-end-line=\"124\" selection-end-column=\"22\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-context.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-247\">\n          <caret line=\"8\" column=\"67\" selection-start-line=\"8\" selection-start-column=\"67\" selection-end-line=\"8\" selection-end-column=\"67\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-web.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"376\">\n          <caret line=\"22\" column=\"46\" selection-start-line=\"22\" selection-start-column=\"46\" selection-end-line=\"22\" selection-end-column=\"46\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/pom.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"138\">\n          <caret line=\"103\" column=\"50\" selection-start-line=\"103\" selection-start-column=\"50\" selection-end-line=\"103\" selection-end-column=\"50\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"jar://$MAVEN_REPOSITORY$/org/mongodb/mongo-java-driver/3.2.2/mongo-java-driver-3.2.2-sources.jar!/com/mongodb/connection/SocketStream.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"88\">\n          <caret line=\"62\" column=\"0\" selection-start-line=\"62\" selection-start-column=\"0\" selection-end-line=\"62\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptorFront.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-377\">\n          <caret line=\"21\" column=\"0\" selection-start-line=\"21\" selection-start-column=\"0\" selection-end-line=\"21\" selection-end-column=\"0\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/target/mongo/index.jsp\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"6\" selection-start-line=\"0\" selection-start-column=\"6\" selection-end-line=\"0\" selection-end-column=\"6\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/target/mongo/WEB-INF/views/mogoList.jsp\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"7\" column=\"45\" selection-start-line=\"7\" selection-start-column=\"45\" selection-end-line=\"7\" selection-end-column=\"45\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/target/test-classes/dao/MongoTemplateTest.class\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"171\">\n          <caret line=\"24\" column=\"0\" selection-start-line=\"24\" selection-start-column=\"0\" selection-end-line=\"24\" selection-end-column=\"0\" />\n          <folding>\n            <element signature=\"e#0#1330#0\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/test/java/dao/MongoTemplateTest.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"456\">\n          <caret line=\"36\" column=\"65\" selection-start-line=\"31\" selection-start-column=\"8\" selection-end-line=\"36\" selection-end-column=\"65\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/mongo.properties\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"0\">\n          <caret line=\"0\" column=\"0\" selection-start-line=\"0\" selection-start-column=\"0\" selection-end-line=\"9\" selection-end-column=\"24\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/spring/spring-mongo.xml\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"86\">\n          <caret line=\"14\" column=\"22\" selection-start-line=\"14\" selection-start-column=\"22\" selection-end-line=\"14\" selection-end-column=\"22\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/target/classes/com/lida/mongo/controller/MongoController.class\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"551\">\n          <caret line=\"40\" column=\"5\" selection-start-line=\"40\" selection-start-column=\"5\" selection-end-line=\"40\" selection-end-column=\"5\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/resources/config.properties\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"95\">\n          <caret line=\"5\" column=\"22\" selection-start-line=\"5\" selection-start-column=\"22\" selection-end-line=\"5\" selection-end-column=\"22\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/light/mvc/framework/interceptors/SecurityInterceptor.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"133\">\n          <caret line=\"54\" column=\"16\" selection-start-line=\"54\" selection-start-column=\"16\" selection-end-line=\"54\" selection-end-column=\"16\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/WeChatController.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"323\">\n          <caret line=\"26\" column=\"61\" selection-start-line=\"26\" selection-start-column=\"61\" selection-end-line=\"26\" selection-end-column=\"61\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/src/main/java/com/lida/mongo/controller/MongoController.java\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"361\">\n          <caret line=\"29\" column=\"18\" selection-start-line=\"29\" selection-start-column=\"18\" selection-end-line=\"29\" selection-end-column=\"18\" />\n          <folding />\n        </state>\n      </provider>\n    </entry>\n  </component>\n  <component name=\"masterDetails\">\n    <states>\n      <state key=\"ArtifactsStructureConfigurable.UI\">\n        <settings>\n          <artifact-editor />\n          <last-edited>mongo:war</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n                <option value=\"0.5\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"FacetStructureConfigurable.UI\">\n        <settings>\n          <last-edited>Spring</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"GlobalLibrariesConfigurable.UI\">\n        <settings>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"JdkListConfigurable.UI\">\n        <settings>\n          <last-edited>1.8</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ModuleStructureConfigurable.UI\">\n        <settings>\n          <last-edited>mongo</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n      <state key=\"ProjectLibrariesConfigurable.UI\">\n        <settings>\n          <last-edited>Maven: aopalliance:aopalliance:1.0</last-edited>\n          <splitter-proportions>\n            <option name=\"proportions\">\n              <list>\n                <option value=\"0.2\" />\n              </list>\n            </option>\n          </splitter-proportions>\n        </settings>\n      </state>\n    </states>\n  </component>\n</project>"
  },
  {
    "path": "mongo.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"web\" name=\"Web\">\n      <configuration>\n        <descriptors>\n          <deploymentDescriptor name=\"web.xml\" url=\"file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml\" />\n        </descriptors>\n        <webroots>\n          <root url=\"file://$MODULE_DIR$/src/main/webapp\" relative=\"/\" />\n        </webroots>\n        <sourceRoots>\n          <root url=\"file://$MODULE_DIR$/src/main/java\" />\n          <root url=\"file://$MODULE_DIR$/src/main/resources\" />\n        </sourceRoots>\n      </configuration>\n    </facet>\n    <facet type=\"Spring\" name=\"Spring\">\n      <configuration />\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_6\" inherit-compiler-output=\"false\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/resources\" type=\"java-resource\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/test/java\" isTestSource=\"true\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" scope=\"PROVIDED\" name=\"Tomcat 8.0.91\" level=\"application_server_libraries\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: junit:junit:4.11\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: org.hamcrest:hamcrest-core:1.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.slf4j:slf4j-api:1.7.12\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: ch.qos.logback:logback-core:1.1.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: ch.qos.logback:logback-classic:1.1.1\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"RUNTIME\" name=\"Maven: mysql:mysql-connector-java:5.1.22\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: taglibs:standard:1.1.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: jstl:jstl:1.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.5.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-annotations:2.5.0\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-core:2.5.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-core:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-logging:commons-logging:1.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-beans:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-context:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-aop:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: aopalliance:aopalliance:1.0\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-expression:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework.data:spring-data-mongodb:1.8.0.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework.data:spring-data-commons:1.11.0.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"RUNTIME\" name=\"Maven: org.slf4j:jcl-over-slf4j:1.7.12\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.mongodb:mongo-java-driver:3.2.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-tx:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-web:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-webmvc:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-test:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-orm:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-jdbc:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-aspects:4.1.7.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-collections:commons-collections:3.2.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-fileupload:commons-fileupload:1.3.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-io:commons-io:2.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-codec:commons-codec:1.10\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.thoughtworks.xstream:xstream:1.4.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: xmlpull:xmlpull:1.1.3.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: xpp3:xpp3_min:1.1.4c\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: dom4j:dom4j:1.6\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: xml-apis:xml-apis:1.0.b2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: net.sf.json-lib:json-lib:2.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-beanutils:commons-beanutils:1.8.0\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-lang:commons-lang:2.5\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: net.sf.ezmorph:ezmorph:1.0.6\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-httpclient:commons-httpclient:3.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: log4j:log4j:1.2.16\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: net.sf.json-lib:json-lib:jdk15:2.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.json:json:20160212\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hibernate:hibernate-core:4.3.1.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.jboss.logging:jboss-logging:3.1.3.GA\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hibernate.common:hibernate-commons-annotations:4.0.4.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.javassist:javassist:3.18.1-GA\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: antlr:antlr:2.7.7\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.jboss:jandex:1.1.0.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hibernate:hibernate-validator:4.3.1.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: javax.validation:validation-api:1.0.0.GA\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hibernate:hibernate-entitymanager:4.3.1.Final\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.poi:poi:3.12-beta1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.alibaba:fastjson:1.2.7\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.alibaba:druid:1.0.17\" level=\"project\" />\n    <orderEntry type=\"module-library\">\n      <library name=\"Maven: com.alibaba:jconsole:1.8.0\">\n        <CLASSES>\n          <root url=\"jar://C:/Program Files/Java/jdk1.8.0_111/jre/../lib/jconsole.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"module-library\">\n      <library name=\"Maven: com.alibaba:tools:1.8.0\">\n        <CLASSES>\n          <root url=\"jar://C:/Program Files/Java/jdk1.8.0_111/jre/../lib/tools.jar!/\" />\n        </CLASSES>\n        <JAVADOC />\n        <SOURCES />\n      </library>\n    </orderEntry>\n    <orderEntry type=\"library\" name=\"Maven: org.aspectj:aspectjweaver:1.6.11\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: aspectj:aspectjrt:1.5.3\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.liad</groupId>\n    <artifactId>mongo</artifactId>\n    <packaging>war</packaging>\n    <version>1.0-SNAPSHOT</version>\n    <name>mongo Maven Webapp</name>\n    <url>http://maven.apache.org</url>\n    <dependencies>\n        <!--使用junit4，注解的方式测试-->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>test</scope>\n        </dependency>\n        <!--日志-->\n        <!--日志 slf4j,log4j,logback,common-logging-->\n        <!--slf4j是规范/接口-->\n        <!--log4j,logback,common-logging是日志实现 本项目使用slf4j + logback -->\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n            <version>1.7.12</version>\n        </dependency>\n        <!--实现slf4j并整合-->\n        <dependency>\n            <groupId>ch.qos.logback</groupId>\n            <artifactId>logback-core</artifactId>\n            <version>1.1.3</version>\n        </dependency>\n        <dependency>\n            <groupId>ch.qos.logback</groupId>\n            <artifactId>logback-classic</artifactId>\n            <version>1.1.3</version>\n        </dependency>\n        <!--数据库相关-->\n        <dependency>\n            <groupId>mysql</groupId>\n            <artifactId>mysql-connector-java</artifactId>\n            <version>5.1.22</version>\n            <!--maven工作范围   驱动在真正工作的时候使用，故生命周期改为runtime-->\n            <scope>runtime</scope>\n        </dependency>\n\n        <!--servlet web相关-->\n        <dependency>\n            <groupId>taglibs</groupId>\n            <artifactId>standard</artifactId>\n            <version>1.1.2</version>\n        </dependency>\n        <dependency>\n            <groupId>jstl</groupId>\n            <artifactId>jstl</artifactId>\n            <version>1.2</version>\n        </dependency>\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-databind</artifactId>\n            <version>2.5.4</version>\n        </dependency>\n\n        <!--spring-->\n        <!--spring核心-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-core</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-beans</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-context</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <!--spring dao-->\n        <dependency>\n            <groupId>org.springframework.data</groupId>\n            <artifactId>spring-data-mongodb</artifactId>\n            <version>1.8.0.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>org.mongodb</groupId>\n            <artifactId>mongo-java-driver</artifactId>\n            <version>2.13.2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-tx</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <!--spring web-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-web</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-webmvc</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n        <!--spring test-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-orm</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-aspects</artifactId>\n            <version>4.1.7.RELEASE</version>\n        </dependency>\n\n        <dependency>\n            <groupId>commons-collections</groupId>\n            <artifactId>commons-collections</artifactId>\n            <version>3.2.2</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-fileupload</groupId>\n            <artifactId>commons-fileupload</artifactId>\n            <version>1.3.2</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-codec</groupId>\n            <artifactId>commons-codec</artifactId>\n            <version>1.10</version>\n        </dependency>\n        <dependency>\n            <groupId>com.thoughtworks.xstream</groupId>\n            <artifactId>xstream</artifactId>\n            <version>1.4.1</version>\n        </dependency>\n        <dependency>\n            <groupId>dom4j</groupId>\n            <artifactId>dom4j</artifactId>\n            <version>1.6</version>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.json-lib</groupId>\n            <artifactId>json-lib</artifactId>\n            <version>2.4</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-httpclient</groupId>\n            <artifactId>commons-httpclient</artifactId>\n            <version>3.1</version>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n            <version>1.2.16</version>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.json-lib</groupId>\n            <artifactId>json-lib</artifactId>\n            <version>2.4</version>\n            <classifier>jdk15</classifier>\n        </dependency>\n        <dependency>\n            <groupId>org.json</groupId>\n            <artifactId>json</artifactId>\n            <version>20160212</version>\n        </dependency>\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-core</artifactId>\n            <version>4.3.1.Final</version>\n        </dependency>\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-validator</artifactId>\n            <version>4.3.1.Final</version>\n        </dependency>\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-entitymanager</artifactId>\n            <version>4.3.1.Final</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.poi</groupId>\n            <artifactId>poi</artifactId>\n            <version>3.12-beta1</version>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>fastjson</artifactId>\n            <version>1.2.7</version>\n        </dependency>\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>druid</artifactId>\n            <version>1.0.17</version>\n        </dependency>\n        <dependency>\n            <groupId>org.aspectj</groupId>\n            <artifactId>aspectjweaver</artifactId>\n            <version>1.6.11</version>\n            <type>jar</type>\n            <scope>compile</scope>\n        </dependency>\n        <dependency>\n            <groupId>aspectj</groupId>\n            <artifactId>aspectjrt</artifactId>\n            <version>1.5.3</version>\n        </dependency>\n        <dependency>\n            <groupId>us.codecraft</groupId>\n            <artifactId>webmagic-core</artifactId>\n            <version>0.5.3</version>\n        </dependency>\n        <dependency>\n            <groupId>us.codecraft</groupId>\n            <artifactId>webmagic-extension</artifactId>\n            <version>0.5.3</version>\n        </dependency>\n        <dependency>\n                <groupId>org.apache.httpcomponents</groupId>\n                <artifactId>httpclient</artifactId>\n                <version>4.5.2</version>\n            </dependency>\n            <dependency>\n                <groupId>org.jsoup</groupId>\n                <artifactId>jsoup</artifactId>\n                <version>1.7.2</version>\n            </dependency>\n        <dependency>\n            <groupId>javax.annotation</groupId>\n            <artifactId>jsr250-api</artifactId>\n            <version>1.0</version>\n        </dependency>\n        <dependency>\n            <groupId>javax.annotation</groupId>\n            <artifactId>javax.annotation-api</artifactId>\n            <version>1.2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.jodd</groupId>\n            <artifactId>jodd</artifactId>\n            <version>3.2.6</version>\n        </dependency>\n        <dependency>\n            <groupId>org.json</groupId>\n            <artifactId>json</artifactId>\n            <version>20160212</version>\n        </dependency>\n    </dependencies>\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-framework-bom</artifactId>\n                <version>${spring.version}</version>\n                <type>pom</type>\n                <scope>import</scope>\n            </dependency>\n            <dependency>\n                <groupId>net.sf.ehcache</groupId>\n                <artifactId>ehcache-core</artifactId>\n                <version>2.6.9</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n    <build>\n        <finalName>mongo</finalName>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>1.6</source>\n                    <target>1.6</target>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "src/doc/mogodb.txt",
    "content": "db.mengwei.insert({\n    title: 'PHP PHP 教程',\n    description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言',\n    by: '菜鸟教程',\n    url: 'http://www.runoob.com',\n    tags: ['php'],\n    likes: 200\n})\ndb.mengwei.insert({title: 'Java 教程',\n    description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',\n    by: '菜鸟教程',\n    url: 'http://www.runoob.com',\n    tags: ['java'],\n    likes: 150\n})\ndb.mengwei.insert({title: 'MongoDB 教程',\n    description: 'MongoDB 是一个 Nosql 数据库',\n    by: '菜鸟教程',\n    url: 'http://www.runoob.com',\n    tags: ['mongodb'],\n    likes: 100\n})"
  },
  {
    "path": "src/main/java/com/lida/mongo/log/Impl/MongoDBAppender.java",
    "content": "package com.lida.mongo.log.Impl;\n\nimport ch.qos.logback.classic.spi.ILoggingEvent;\nimport com.lida.mongo.log.MongoDBAppenderBase;\nimport com.mongodb.BasicDBObject;\nimport jodd.datetime.JDateTime;\n\n/**\n * Created by lenovo on 2016/12/7.\n */\npublic class MongoDBAppender extends MongoDBAppenderBase<ILoggingEvent> {\n    public MongoDBAppender() {\n        super(\"loggingEvents\");\n    }\n\n    @Override\n    protected BasicDBObject toMongoDocument(ILoggingEvent eventObject) {\n        final BasicDBObject doc = new BasicDBObject();\n        doc.append(\"date\", new JDateTime(eventObject.getTimeStamp()).toString(\"YYYY-MM-DD hh:mm:ss\"));\n        doc.append(\"source\", source);\n        doc.append(\"level\", eventObject.getLevel().toString());\n        doc.append(\"logger\", eventObject.getLoggerName());\n        doc.append(\"thread\", eventObject.getThreadName());\n        doc.append(\"message\", eventObject.getFormattedMessage());\n        if (eventObject.getMdc() != null && !eventObject.getMdc().isEmpty())\n            doc.append(\"mdc\", eventObject.getMdc());\n        //...\n        return doc;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/log/MongoDBAppenderBase.java",
    "content": "package com.lida.mongo.log;\n\nimport ch.qos.logback.core.UnsynchronizedAppenderBase;\nimport com.mongodb.*;\nimport org.springframework.data.mongodb.core.MongoTemplate;\n\nimport javax.annotation.Resource;\nimport java.net.UnknownHostException;\n\n/**\n * Created by lenovo on 2016/12/7.\n */\npublic abstract class MongoDBAppenderBase<E>  extends UnsynchronizedAppenderBase<E>{\n    private Mongo mongo;\n    private DBCollection eventsCollection;\n\n    @Resource\n    private MongoTemplate mongoTemplate;\n\n    private String host = \"172.16.31.206\";\n    private int port = 27017;\n    private String dbName = \"db\";\n    private String collectionName;\n    private String username;\n    private String password;\n    protected String source;\n\n    private int connectionsPerHost = 10;\n    private int threadsAllowedToBlockForConnectionMultiplier = 5;\n    private int maxWaitTime = 1000 * 60 * 2;\n    private int connectTimeout;\n    private int socketTimeout;\n    private boolean autoConnectRetry;\n    private boolean slaveOk;\n    private boolean safe;\n    private int w;\n    private int wtimeout;\n    private boolean fsync;\n\n    protected MongoDBAppenderBase(String collectionName) {\n        this.collectionName = collectionName;\n    }\n\n    @Override\n    public void start() {\n        try {\n            connectToMongoDB();\n            super.start();\n        } catch (UnknownHostException e) {\n            addError(\n                    \"Error connecting to MongoDB server: \" + host + \":\" + port,\n                    e);\n        }\n    }\n\n    private void connectToMongoDB() throws UnknownHostException {\n        mongo = new Mongo(new ServerAddress(\"127.0.0.1\", 27017), buildOptions());\n        DB db = mongo.getDB(dbName);\n        if (username != null && password != null)\n            db.authenticate(username, password.toCharArray());\n        eventsCollection = db.getCollection(collectionName);\n    }\n\n    private MongoOptions buildOptions() {\n        final MongoOptions options = new MongoOptions();\n        options.connectionsPerHost = connectionsPerHost;\n        options.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;\n        options.maxWaitTime = maxWaitTime;\n        options.connectTimeout = connectTimeout;\n        options.socketTimeout = socketTimeout;\n        options.autoConnectRetry = autoConnectRetry;\n        options.slaveOk = slaveOk;\n        options.safe = safe;\n        options.w = w;\n        options.wtimeout = wtimeout;\n        options.fsync = fsync;\n        return options;\n    }\n\n    protected abstract BasicDBObject toMongoDocument(E event);\n\n    @Override\n    protected void append(E eventObject) {\n        BasicDBObject basicDBObject = toMongoDocument(eventObject);\n        if(basicDBObject.get(\"message\").toString().indexOf(\"=\")!=-1&&basicDBObject.get(\"level\").equals(\"INFO\")) {\n            eventsCollection.insert(toMongoDocument(eventObject));\n        }\n    }\n\n    @Override\n    public void stop() {\n        if (mongo != null)\n            mongo.close();\n        super.stop();\n    }\n\n    public void setHost(String host) {\n        this.host = host;\n    }\n\n    public void setPort(int port) {\n        this.port = port;\n    }\n\n    public void setDbName(String dbName) {\n        this.dbName = dbName;\n    }\n\n    public void setCollectionName(String collectionName) {\n        this.collectionName = collectionName;\n    }\n\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    public void setConnectionsPerHost(int connectionsPerHost) {\n        this.connectionsPerHost = connectionsPerHost;\n    }\n\n    public void setThreadsAllowedToBlockForConnectionMultiplier(\n            int threadsAllowedToBlockForConnectionMultiplier) {\n        this.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;\n    }\n\n    public void setMaxWaitTime(int maxWaitTime) {\n        this.maxWaitTime = maxWaitTime;\n    }\n\n    public void setConnectTimeout(int connectTimeout) {\n        this.connectTimeout = connectTimeout;\n    }\n\n    public void setSocketTimeout(int socketTimeout) {\n        this.socketTimeout = socketTimeout;\n    }\n\n    public void setAutoConnectRetry(boolean autoConnectRetry) {\n        this.autoConnectRetry = autoConnectRetry;\n    }\n\n    public void setSlaveOk(boolean slaveOk) {\n        this.slaveOk = slaveOk;\n    }\n\n    public void setSafe(boolean safe) {\n        this.safe = safe;\n    }\n\n    public void setW(int w) {\n        this.w = w;\n    }\n\n    public void setWtimeout(int wtimeout) {\n        this.wtimeout = wtimeout;\n    }\n\n    public void setFsync(boolean fsync) {\n        this.fsync = fsync;\n    }\n\n    public String getSource() {\n        return source;\n    }\n\n    public void setSource(String source) {\n        this.source = source;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/controller/MongoController.java",
    "content": "package com.lida.mongo.person.controller;\n\n\nimport com.lida.mongo.log.Impl.MongoDBAppender;\nimport com.lida.mongo.person.mongoDao.PersonMongoImpl;\nimport com.lida.mongo.sensor.dao.impl.SensorMongoImpl;\nimport com.lida.mongo.sensor.service.impl.CalculateAverageImpl;\nimport com.lida.mongo.sensor.service.impl.UpdateDataImpl;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\n\nimport javax.annotation.Resource;\nimport java.math.BigInteger;\nimport java.text.ParseException;\nimport java.util.Date;\n\n/**\n * Created by DuLida on 2016/10/20.\n */\n@Controller\n@RequestMapping(value = \"/goMongo\")\npublic class MongoController {\n    @Resource\n    private PersonMongoImpl personMongo;\n    @Resource\n    private SensorMongoImpl sensorMongo;\n    @Resource\n    private UpdateDataImpl updateData;\n    @Resource\n    private CalculateAverageImpl calculateAverage;\n\n    private static Logger log = LoggerFactory.getLogger(MongoController.class);\n\n    @RequestMapping(value = \"/list\", method = RequestMethod.GET)\n    public String go() throws ParseException {\n        String dateStr = \"2016-11-19 19:10:00\";\n        log.info(\"===========================================\"+sensorMongo.findForRequery(BigInteger.valueOf(318861587)).size());\n        log.info(\"===========================================\"+calculateAverage.calculateAverageOfCo2(dateStr,BigInteger.valueOf(318861587)));\n        return \"mogoList\";\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/dao/PersonDao.java",
    "content": "package com.lida.mongo.person.dao;\n\nimport com.lida.mongo.person.entity.Person;\nimport org.bson.types.ObjectId;\nimport org.springframework.data.mongodb.repository.MongoRepository;\nimport org.springframework.data.mongodb.repository.Query;\n\nimport java.util.List;\n\n/**\n * Created by DuLida on 2016/10/20.\n */\npublic interface PersonDao extends MongoRepository<Person, ObjectId> {\n\n    @Query(value = \"{'age' : {'$gte' : ?0, '$lte' : ?1}, 'name':?2 }\", fields = \"{ 'name' : 1, 'age' : 1}\")\n    List<Person> findByAge(int age1, int age2, String name);\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/entity/Address.java",
    "content": "package com.lida.mongo.person.entity;\n\n/**\n * Created by DuLida on 2016/10/20.\n */\npublic class Address {\n\n    private String city;\n    private String street;\n    private int num;\n\n    public Address() {\n    }\n\n    public Address(String city, String street, int num) {\n        this.city = city;\n        this.street = street;\n        this.num = num;\n    }\n\n    public String getCity() {\n        return city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    public String getStreet() {\n        return street;\n    }\n\n    public void setStreet(String street) {\n        this.street = street;\n    }\n\n    public int getNum() {\n        return num;\n    }\n\n    public void setNum(int num) {\n        this.num = num;\n    }\n\n    @Override\n    public String toString() {\n        return \"Address{\" +\n                \"city='\" + city + '\\'' +\n                \", street='\" + street + '\\'' +\n                \", num=\" + num +\n                '}';\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/entity/Person.java",
    "content": "package com.lida.mongo.person.entity;\n\nimport org.bson.types.ObjectId;\nimport org.springframework.data.annotation.Id;\nimport org.springframework.data.mongodb.core.mapping.Document;\n\nimport java.io.Serializable;\n\n/**\n * Created by DuLida on 2016/10/20.\n */\n@Document(collection = \"person\")\npublic class Person implements Serializable {\n\n    @Id\n    private ObjectId id;\n    private String name;\n    private int age;\n    private Address address;\n\n    public Person() {\n    }\n\n    public Person(String name, int age, Address address) {\n        this.name = name;\n        this.age = age;\n        this.address = address;\n    }\n\n    public ObjectId getId() {\n        return id;\n    }\n\n    public void setId(ObjectId id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public int getAge() {\n        return age;\n    }\n\n    public void setAge(int age) {\n        this.age = age;\n    }\n\n    public Address getAddress() {\n        return address;\n    }\n\n    public void setAddress(Address address) {\n        this.address = address;\n    }\n\n    @Override\n    public String toString() {\n        return \"Person{\" +\n                \"id=\" + id +\n                \", name='\" + name + '\\'' +\n                \", age=\" + age +\n                \", address=\" + address +\n                '}';\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/mongoDao/PersonMongoDao.java",
    "content": "package com.lida.mongo.person.mongoDao;\n\nimport com.lida.mongo.person.entity.Person;\n\nimport java.util.List;\n\n/**\n * Created by DuLida on 2016/10/21.\n */\npublic interface PersonMongoDao {\n    List<Person> findAll();\n\n    void insertPerson(Person user);\n\n    void removePerson(String userName);\n\n    void updatePerson();\n\n    List<Person> findForRequery(String userName);\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/person/mongoDao/PersonMongoImpl.java",
    "content": "package com.lida.mongo.person.mongoDao;\n\nimport com.lida.mongo.person.entity.Person;\nimport org.springframework.data.mongodb.core.MongoTemplate;\nimport org.springframework.data.mongodb.core.query.Criteria;\nimport org.springframework.data.mongodb.core.query.Query;\nimport org.springframework.data.mongodb.core.query.Update;\nimport org.springframework.stereotype.Repository;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\n/**\n * Created by DuLida on 2016/10/21.\n */\n@Repository(\"personMongoImpl\")\npublic class PersonMongoImpl implements PersonMongoDao {\n\n    @Resource\n    private MongoTemplate mongoTemplate;\n\n    @Override\n    public List<Person> findAll() {\n        return mongoTemplate.findAll(Person.class, \"person\");\n    }\n\n    @Override\n    public void insertPerson(Person person) {\n        mongoTemplate.insert(person, \"person\");\n    }\n\n    @Override\n    public void removePerson(String userName) {\n        mongoTemplate.remove(Query.query(Criteria.where(\"name\").is(userName)), \"person\");\n    }\n\n    @Override\n    public void updatePerson() {\n        mongoTemplate.updateMulti(Query.query(Criteria.where(\"age\").gt(3).lte(5)), Update.update(\"age\", 3), \"person\");\n    }\n\n    @Override\n    public List<Person> findForRequery(String userName) {\n        return mongoTemplate.find(Query.query(Criteria.where(\"name\").is(userName)), Person.class);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/qq/controller/LoginController.java",
    "content": "package com.lida.mongo.qq.controller;\n\nimport com.lida.mongo.qq.model.QQUserInfo;\nimport com.lida.mongo.util.QQUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\n/**\n * Created by stevenfen on 2016/12/19.\n */\n@Controller\n@RequestMapping(value = \"/login\")\npublic class LoginController {\n    private static Logger log = LoggerFactory.getLogger(LoginController.class);\n    @RequestMapping(\"/result\")\n    public String login_result(String access_token, String openid) {\n        QQUserInfo user = QQUtils.getUserInfo(access_token, openid);\n        log.debug(\"==========================================\"+user+\"=============================================\");\n        return \"mogoList\";\n    }\n\n    @RequestMapping(\"/index\")\n    public String goIndex(){\n        return \"qq\";\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/qq/model/QQUserInfo.java",
    "content": "package com.lida.mongo.qq.model;\n\n/**\n * Created by stevenfen on 2016/12/22.\n */\npublic class QQUserInfo {\n    private String ret;\n    private String msg;\n    private Integer is_lost;\n    private String nickname;\n    private String gender;\n    private String province;\n    private String city;\n    private Integer year;\n    private String figureurl;\n    private String figureurl_1;\n    private String figureurl_2;\n    private String figureurl_qq_1;\n    private String figureurl_qq_2;\n    private Integer is_yellow_vip;\n    private Integer vip;\n    private Integer yellow_vip_level;\n    private Integer level;\n    private Integer is_yellow_year_vip;\n\n    public String getRet() {\n        return ret;\n    }\n\n    public void setRet(String ret) {\n        this.ret = ret;\n    }\n\n    public String getMsg() {\n        return msg;\n    }\n\n    public void setMsg(String msg) {\n        this.msg = msg;\n    }\n\n    public Integer getIs_lost() {\n        return is_lost;\n    }\n\n    public void setIs_lost(Integer is_lost) {\n        this.is_lost = is_lost;\n    }\n\n    public String getNickname() {\n        return nickname;\n    }\n\n    public void setNickname(String nickname) {\n        this.nickname = nickname;\n    }\n\n    public String getGender() {\n        return gender;\n    }\n\n    public void setGender(String gender) {\n        this.gender = gender;\n    }\n\n    public String getProvince() {\n        return province;\n    }\n\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    public String getCity() {\n        return city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    public Integer getYear() {\n        return year;\n    }\n\n    public void setYear(Integer year) {\n        this.year = year;\n    }\n\n    public String getFigureurl() {\n        return figureurl;\n    }\n\n    public void setFigureurl(String figureurl) {\n        this.figureurl = figureurl;\n    }\n\n    public String getFigureurl_1() {\n        return figureurl_1;\n    }\n\n    public void setFigureurl_1(String figureurl_1) {\n        this.figureurl_1 = figureurl_1;\n    }\n\n    public String getFigureurl_2() {\n        return figureurl_2;\n    }\n\n    public void setFigureurl_2(String figureurl_2) {\n        this.figureurl_2 = figureurl_2;\n    }\n\n    public String getFigureurl_qq_1() {\n        return figureurl_qq_1;\n    }\n\n    public void setFigureurl_qq_1(String figureurl_qq_1) {\n        this.figureurl_qq_1 = figureurl_qq_1;\n    }\n\n    public String getFigureurl_qq_2() {\n        return figureurl_qq_2;\n    }\n\n    public void setFigureurl_qq_2(String figureurl_qq_2) {\n        this.figureurl_qq_2 = figureurl_qq_2;\n    }\n\n    public Integer getIs_yellow_vip() {\n        return is_yellow_vip;\n    }\n\n    public void setIs_yellow_vip(Integer is_yellow_vip) {\n        this.is_yellow_vip = is_yellow_vip;\n    }\n\n    public Integer getVip() {\n        return vip;\n    }\n\n    public void setVip(Integer vip) {\n        this.vip = vip;\n    }\n\n    public Integer getYellow_vip_level() {\n        return yellow_vip_level;\n    }\n\n    public void setYellow_vip_level(Integer yellow_vip_level) {\n        this.yellow_vip_level = yellow_vip_level;\n    }\n\n    public Integer getLevel() {\n        return level;\n    }\n\n    public void setLevel(Integer level) {\n        this.level = level;\n    }\n\n    public Integer getIs_yellow_year_vip() {\n        return is_yellow_year_vip;\n    }\n\n    public void setIs_yellow_year_vip(Integer is_yellow_year_vip) {\n        this.is_yellow_year_vip = is_yellow_year_vip;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/qq/package-info.java",
    "content": "/**\n * Created by stevenfen on 2016/12/19.\n */\npackage com.lida.mongo.qq;"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/Enum/SerialNum.java",
    "content": "package com.lida.mongo.sensor.Enum;\n\nimport java.math.BigInteger;\n\n/**\n * Created by stevenfen on 2016/12/17.\n */\npublic enum SerialNum {\n    stationNine(\"stationNine\",BigInteger.valueOf(318861587)),\n    stationSeven(\"stationSeven\",BigInteger.valueOf(318861616)),\n    stationThree(\"stationThree\",BigInteger.valueOf(318861652)),\n    stationFive(\"stationFive\",BigInteger.valueOf(318861653))\n    ;\n    private String key;\n    private BigInteger value;\n    //自定义的构造函数，参数数量，名字随便自己取\n    //构造器默认也只能是private, 从而保证构造函数只能在内部使用\n    private SerialNum(String key, BigInteger value)\n    {\n        this.key = key;\n        this.value = value;\n    }\n\n    public String getKey()\n    {\n        return key;\n    }\n\n    public void setKey(String key)\n    {\n        this.key = key;\n    }\n\n    public BigInteger getValue()\n    {\n        return value;\n    }\n\n    public void setValue(BigInteger value)\n    {\n        this.value = value;\n    }\n    //重新toString方法，默认的toString方法返回的就是枚举变量的名字，和name()方法返回值一样\n    @Override\n    public String toString()\n    {\n        return this.key+\":\"+this.value;\n\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/Enum/StationType.java",
    "content": "package com.lida.mongo.sensor.Enum;\n\n/**\n * Created by stevenfen on 2016/12/6.\n */\npublic enum StationType {\n    //不需要从云端拉数据的操作\n    NoNeedUpdate(\"不需要更新\",61L);\n    private String key;\n    private Long value;\n    //自定义的构造函数，参数数量，名字随便自己取\n    //构造器默认也只能是private, 从而保证构造函数只能在内部使用\n    private StationType(String key, Long value)\n    {\n        this.key = key;\n        this.value = value;\n    }\n\n    public String getKey()\n    {\n        return key;\n    }\n\n    public void setKey(String key)\n    {\n        this.key = key;\n    }\n\n    public Long getValue()\n    {\n        return value;\n    }\n\n    public void setValue(Long value)\n    {\n        this.value = value;\n    }\n    //重新toString方法，默认的toString方法返回的就是枚举变量的名字，和name()方法返回值一样\n    @Override\n    public String toString()\n    {\n        return this.key+\":\"+this.value;\n\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/dao/SensorMongoDao.java",
    "content": "package com.lida.mongo.sensor.dao;\n\nimport com.lida.mongo.sensor.entity.Sensor;\n\nimport java.math.BigInteger;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\npublic interface SensorMongoDao {\n\n    List<Sensor> findAll();\n\n    void insertSensor(Sensor sensor);\n\n    void batchInsertSensor(List<Sensor> sensors);\n\n    List<Sensor> findForRequery(BigInteger serialNum);\n\n    List<Sensor> findByCreateDate(Date startDate,Date endDate,BigInteger serialNum);\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/dao/impl/SensorMongoImpl.java",
    "content": "package com.lida.mongo.sensor.dao.impl;\n\nimport com.lida.mongo.sensor.dao.SensorMongoDao;\nimport com.lida.mongo.sensor.entity.Sensor;\nimport com.lida.mongo.util.StringUtil;\nimport org.springframework.data.mongodb.core.MongoTemplate;\nimport org.springframework.data.mongodb.core.query.Criteria;\nimport org.springframework.data.mongodb.core.query.Query;\nimport org.springframework.stereotype.Repository;\n\nimport javax.annotation.Resource;\nimport java.math.BigInteger;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\n@Repository(\"SensorMongoImpl\")\npublic class SensorMongoImpl implements SensorMongoDao {\n\n    @Resource\n    private MongoTemplate mongoTemplate;\n\n    @Override\n    public List<Sensor> findAll() {\n        return mongoTemplate.findAll(Sensor.class, \"sensor\");\n    }\n\n    @Override\n    public void insertSensor(Sensor sensor) {\n        mongoTemplate.insert(sensor,\"sensor\");\n    }\n\n    @Override\n    public void batchInsertSensor(List<Sensor> sensors) {\n        mongoTemplate.insert(sensors,\"sensor\");\n    }\n\n    @Override\n    public List<Sensor> findForRequery(BigInteger serialNum) {\n        return mongoTemplate.find(Query.query(Criteria.where(\"serialNum\").is(serialNum)),Sensor.class);\n    }\n\n    @Override\n    public List<Sensor> findByCreateDate(Date startDate,Date endDate,BigInteger serialNum) {\n        return mongoTemplate.find(Query.query(Criteria.where(\"timeLine\").gte(startDate.getTime()).lte(endDate.getTime()).and(\"serialNum\").is(serialNum)),Sensor.class);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/entity/Sensor.java",
    "content": "package com.lida.mongo.sensor.entity;\n\nimport org.bson.types.ObjectId;\nimport org.springframework.data.annotation.Id;\nimport org.springframework.data.mongodb.core.mapping.Document;\n\nimport java.math.BigInteger;\nimport java.util.Date;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\n@Document(collection = \"sensor\")\npublic class Sensor {\n    @Id\n    private ObjectId id;\n    /*\n     *传感器是否活跃\n     */\n    private Integer Active;\n    private String CreateBy;\n    private Date createDate;\n    private String UpdateBy;\n    private Date updateDate;\n    private Integer Deleted;\n    private Long timeLine;\n    private BigInteger MonitoringNodeId;\n    private BigInteger serialNum;\n    private Integer sensor_ch;\n    private Double sensor1;\n    private Double sensor2;\n    private Double sensor3;\n    private Double sensor4;\n    private Double sensor5;\n    private Double sensor6;\n    private Double sensor7;\n    private Double sensor8;\n    private Double sensor9;\n    private Double sensor10;\n    private Double sensor11;\n    private Double sensor12;\n    private Double sensor13;\n    private Double sensor14;\n    private Double sensor15;\n    private Double sensor16;\n    private Double sensor17;\n    private Double sensor18;\n    private Double sensor19;\n    private Double sensor20;\n    private Double sensor21;\n    private Double sensor22;\n    private Double sensor23;\n    private Double sensor24;\n    private Double sensor25;\n    private Double sensor26;\n    private Double sensor27;\n    private Double sensor28;\n    private Double sensor29;\n    private Double sensor30;\n\n    public ObjectId getId() {\n        return id;\n    }\n\n    public void setId(ObjectId id) {\n        this.id = id;\n    }\n\n    public Integer getActive() {\n        return Active;\n    }\n\n    public void setActive(Integer active) {\n        Active = active;\n    }\n\n    public String getCreateBy() {\n        return CreateBy;\n    }\n\n    public void setCreateBy(String createBy) {\n        CreateBy = createBy;\n    }\n\n    public Date getCreateDate() {\n        return createDate;\n    }\n\n    public void setCreateDate(Date createDate) {\n        this.createDate = createDate;\n    }\n\n    public String getUpdateBy() {\n        return UpdateBy;\n    }\n\n    public void setUpdateBy(String updateBy) {\n        UpdateBy = updateBy;\n    }\n\n    public Date getUpdateDate() {\n        return updateDate;\n    }\n\n    public void setUpdateDate(Date updateDate) {\n        this.updateDate = updateDate;\n    }\n\n    public Integer getDeleted() {\n        return Deleted;\n    }\n\n    public void setDeleted(Integer deleted) {\n        Deleted = deleted;\n    }\n\n    public Long getTimeLine() {\n        return timeLine;\n    }\n\n    public void setTimeLine(Long timeLine) {\n        this.timeLine = timeLine;\n    }\n\n    public BigInteger getMonitoringNodeId() {\n        return MonitoringNodeId;\n    }\n\n    public void setMonitoringNodeId(BigInteger monitoringNodeId) {\n        MonitoringNodeId = monitoringNodeId;\n    }\n\n    public BigInteger getSerialNum() {\n        return serialNum;\n    }\n\n    public void setSerialNum(BigInteger serialNum) {\n        this.serialNum = serialNum;\n    }\n\n    public Integer getSensor_ch() {\n        return sensor_ch;\n    }\n\n    public void setSensor_ch(Integer sensor_ch) {\n        this.sensor_ch = sensor_ch;\n    }\n\n    public Double getSensor1() {\n        return sensor1;\n    }\n\n    public void setSensor1(Double sensor1) {\n        this.sensor1 = sensor1;\n    }\n\n    public Double getSensor2() {\n        return sensor2;\n    }\n\n    public void setSensor2(Double sensor2) {\n        this.sensor2 = sensor2;\n    }\n\n    public Double getSensor3() {\n        return sensor3;\n    }\n\n    public void setSensor3(Double sensor3) {\n        this.sensor3 = sensor3;\n    }\n\n    public Double getSensor4() {\n        return sensor4;\n    }\n\n    public void setSensor4(Double sensor4) {\n        this.sensor4 = sensor4;\n    }\n\n    public Double getSensor5() {\n        return sensor5;\n    }\n\n    public void setSensor5(Double sensor5) {\n        this.sensor5 = sensor5;\n    }\n\n    public Double getSensor6() {\n        return sensor6;\n    }\n\n    public void setSensor6(Double sensor6) {\n        this.sensor6 = sensor6;\n    }\n\n    public Double getSensor7() {\n        return sensor7;\n    }\n\n    public void setSensor7(Double sensor7) {\n        this.sensor7 = sensor7;\n    }\n\n    public Double getSensor8() {\n        return sensor8;\n    }\n\n    public void setSensor8(Double sensor8) {\n        this.sensor8 = sensor8;\n    }\n\n    public Double getSensor9() {\n        return sensor9;\n    }\n\n    public void setSensor9(Double sensor9) {\n        this.sensor9 = sensor9;\n    }\n\n    public Double getSensor10() {\n        return sensor10;\n    }\n\n    public void setSensor10(Double sensor10) {\n        this.sensor10 = sensor10;\n    }\n\n    public Double getSensor11() {\n        return sensor11;\n    }\n\n    public void setSensor11(Double sensor11) {\n        this.sensor11 = sensor11;\n    }\n\n    public Double getSensor12() {\n        return sensor12;\n    }\n\n    public void setSensor12(Double sensor12) {\n        this.sensor12 = sensor12;\n    }\n\n    public Double getSensor13() {\n        return sensor13;\n    }\n\n    public void setSensor13(Double sensor13) {\n        this.sensor13 = sensor13;\n    }\n\n    public Double getSensor14() {\n        return sensor14;\n    }\n\n    public void setSensor14(Double sensor14) {\n        this.sensor14 = sensor14;\n    }\n\n    public Double getSensor15() {\n        return sensor15;\n    }\n\n    public void setSensor15(Double sensor15) {\n        this.sensor15 = sensor15;\n    }\n\n    public Double getSensor16() {\n        return sensor16;\n    }\n\n    public void setSensor16(Double sensor16) {\n        this.sensor16 = sensor16;\n    }\n\n    public Double getSensor17() {\n        return sensor17;\n    }\n\n    public void setSensor17(Double sensor17) {\n        this.sensor17 = sensor17;\n    }\n\n    public Double getSensor18() {\n        return sensor18;\n    }\n\n    public void setSensor18(Double sensor18) {\n        this.sensor18 = sensor18;\n    }\n\n    public Double getSensor19() {\n        return sensor19;\n    }\n\n    public void setSensor19(Double sensor19) {\n        this.sensor19 = sensor19;\n    }\n\n    public Double getSensor20() {\n        return sensor20;\n    }\n\n    public void setSensor20(Double sensor20) {\n        this.sensor20 = sensor20;\n    }\n\n    public Double getSensor21() {\n        return sensor21;\n    }\n\n    public void setSensor21(Double sensor21) {\n        this.sensor21 = sensor21;\n    }\n\n    public Double getSensor22() {\n        return sensor22;\n    }\n\n    public void setSensor22(Double sensor22) {\n        this.sensor22 = sensor22;\n    }\n\n    public Double getSensor23() {\n        return sensor23;\n    }\n\n    public void setSensor23(Double sensor23) {\n        this.sensor23 = sensor23;\n    }\n\n    public Double getSensor24() {\n        return sensor24;\n    }\n\n    public void setSensor24(Double sensor24) {\n        this.sensor24 = sensor24;\n    }\n\n    public Double getSensor25() {\n        return sensor25;\n    }\n\n    public void setSensor25(Double sensor25) {\n        this.sensor25 = sensor25;\n    }\n\n    public Double getSensor26() {\n        return sensor26;\n    }\n\n    public void setSensor26(Double sensor26) {\n        this.sensor26 = sensor26;\n    }\n\n    public Double getSensor27() {\n        return sensor27;\n    }\n\n    public void setSensor27(Double sensor27) {\n        this.sensor27 = sensor27;\n    }\n\n    public Double getSensor28() {\n        return sensor28;\n    }\n\n    public void setSensor28(Double sensor28) {\n        this.sensor28 = sensor28;\n    }\n\n    public Double getSensor29() {\n        return sensor29;\n    }\n\n    public void setSensor29(Double sensor29) {\n        this.sensor29 = sensor29;\n    }\n\n    public Double getSensor30() {\n        return sensor30;\n    }\n\n    public void setSensor30(Double sensor30) {\n        this.sensor30 = sensor30;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/UpdateData.java",
    "content": "package com.lida.mongo.sensor.service;\n\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport org.json.JSONArray;\n\nimport java.text.ParseException;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\npublic interface UpdateData {\n\n   void updateDataByCloud(Long stationId);\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/calculateAverage.java",
    "content": "package com.lida.mongo.sensor.service;\n\nimport java.math.BigInteger;\nimport java.text.ParseException;\n\n/**\n * Created by stevenfen on 2016/12/17.\n */\npublic interface calculateAverage {\n    public Double calculateAverageOfCo2(String dateStr, BigInteger serialNum) throws ParseException;\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/impl/CalculateAverageImpl.java",
    "content": "package com.lida.mongo.sensor.service.impl;\n\nimport com.lida.mongo.sensor.Enum.SerialNum;\nimport com.lida.mongo.sensor.dao.impl.SensorMongoImpl;\nimport com.lida.mongo.sensor.entity.Sensor;\nimport com.lida.mongo.sensor.service.calculateAverage;\nimport com.lida.mongo.util.StringUtil;\nimport org.springframework.stereotype.Repository;\n\nimport javax.annotation.Resource;\nimport java.math.BigInteger;\nimport java.text.ParseException;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by stevenfen on 2016/12/17.\n */\n@Repository(\"CalculateAverageImpl\")\npublic class CalculateAverageImpl implements calculateAverage {\n    @Resource\n    private SensorMongoImpl sensorMongo;\n\n    @Override\n    public Double calculateAverageOfCo2(String dateStr, BigInteger serialNum) throws ParseException {\n\n        Date startDate = StringUtil.string2Date(dateStr);\n        Date endDate = StringUtil.plusOneHour(startDate);\n\n        List<Sensor> sensors = sensorMongo.findByCreateDate(startDate,endDate,serialNum);\n        Double sumOfCo2 = 0.0;\n\n        if(serialNum.equals(SerialNum.stationNine.getValue())){\n            for(Sensor sensor : sensors){\n                sumOfCo2+=sensor.getSensor6();\n            }\n            return sumOfCo2<=0?0:sumOfCo2/sensors.size();\n        }\n        else if(serialNum.equals(SerialNum.stationSeven.getValue())){\n            for(Sensor sensor : sensors){\n                sumOfCo2+=sensor.getSensor13();\n            }\n            return sumOfCo2<=0?0:sumOfCo2/sensors.size();\n        }\n        else if(serialNum.equals(SerialNum.stationThree.getValue())){\n            for(Sensor sensor : sensors){\n                sumOfCo2+=sensor.getSensor24();\n            }\n            return sumOfCo2<=0?0:sumOfCo2/sensors.size();\n        }\n        return 0.0;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/impl/SensorService.java",
    "content": "package com.lida.mongo.sensor.service.impl;\n\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport org.json.JSONArray;\n\nimport java.text.ParseException;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\npublic interface SensorService {\n    void insertApi(JSONArray dataJson, Station station, List<monitoringNode> nodeList) throws ParseException;\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/impl/SensorServiceImpl.java",
    "content": "package com.lida.mongo.sensor.service.impl;\n\nimport com.lida.mongo.sensor.dao.impl.SensorMongoImpl;\nimport com.lida.mongo.sensor.entity.Sensor;\nimport com.lida.mongo.util.StringUtil;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Repository;\n\nimport javax.annotation.Resource;\nimport java.math.BigInteger;\nimport java.text.ParseException;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\n@Repository(\"SensorServiceImpl\")\npublic class SensorServiceImpl implements SensorService{\n    private static Logger log = LoggerFactory.getLogger(SensorServiceImpl.class);\n\n    @Resource\n    private SensorMongoImpl sensorMongo;\n\n\n    /**\n     *\n     * @param dataJson\n     * @param station\n     * @param nodeList\n     * 批量插入云数据\n     */\n    @Override\n    public void insertApi(JSONArray dataJson, Station station, List<monitoringNode> nodeList) throws ParseException {\n        List<Sensor> sensors = new ArrayList<Sensor>();\n        for(int i=0;i<dataJson.length();i++){\n            Sensor sensor = new Sensor();\n\n            JSONObject jo = (JSONObject)dataJson.get(i);\n            String dateStr=jo.getString(\"date\");\n            dateStr= dateStr.replace(\"T\", \" \");\n            sensor.setCreateDate(StringUtil.string2Date(dateStr));\n            sensor.setCreateBy(station.getLoginName());\n            sensor.setUpdateDate(StringUtil.string2Date(dateStr));\n            sensor.setUpdateBy(station.getLoginName());\n            sensor.setTimeLine(StringUtil.string2Date(dateStr).getTime());\n\n            //初始化为未删除\n            sensor.setDeleted(0);\n            sensor.setActive(1);\n\n            for (int j=0;j<nodeList.size();j++){\n                monitoringNode node = nodeList.get(j);\n                Double value = Double.MIN_VALUE;\n                log.info(jo.get(node.getDataKey())+\"===========================================\");\n                if(!jo.get(node.getDataKey()).toString().equals(\"null\")) {value = Double.parseDouble(jo.get(node.getDataKey()) + \"\");\n                }\n                StringUtil.judgeField(node.getMap(),value,sensor);\n            }\n            sensor.setSerialNum(BigInteger.valueOf(station.getSerialNum()));\n            sensors.add(sensor);\n        }\n        log.info(\"new data:\"+sensors.toString()+\"=====================================================\");\n        sensorMongo.batchInsertSensor(sensors);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/sensor/service/impl/UpdateDataImpl.java",
    "content": "package com.lida.mongo.sensor.service.impl;\n\nimport com.lida.mongo.sensor.Enum.StationType;\nimport com.lida.mongo.sensor.service.UpdateData;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport light.mvc.service.sensor.monitoringNodeServiceI;\nimport light.mvc.service.sensor.pestSensorServiceI;\nimport light.mvc.service.sensor.stationServiceI;\nimport org.apache.http.HttpEntity;\nimport org.apache.http.client.CookieStore;\nimport org.apache.http.client.methods.CloseableHttpResponse;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.client.methods.HttpPost;\nimport org.apache.http.cookie.Cookie;\nimport org.apache.http.impl.client.BasicCookieStore;\nimport org.apache.http.impl.client.CloseableHttpClient;\nimport org.apache.http.impl.client.HttpClients;\nimport org.apache.http.impl.cookie.BasicClientCookie;\nimport org.apache.http.util.EntityUtils;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Repository;\n\nimport javax.annotation.Resource;\nimport java.io.IOException;\nimport java.lang.reflect.Array;\nimport java.math.BigInteger;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/6.\n */\n@Repository(\"UpdateDataImpl\")\npublic class UpdateDataImpl implements UpdateData {\n    @Autowired\n    private monitoringNodeServiceI moniService;\n\n    @Autowired\n    private stationServiceI stationS;\n\n    @Autowired\n    private pestSensorServiceI Service;\n\n    @Resource\n    private SensorServiceImpl sensorService;\n\n\n\n    private static Logger log = LoggerFactory.getLogger(UpdateDataImpl.class);\n\n    /**\n     **更新数据的时间间隔\n     **/\n    private static final Long timeInterval = 1000L;\n\n    @Override\n    public void updateDataByCloud(Long stationId) {\n        try {\n\n            Station station = stationS.get(stationId);\n            if (station.getType() != StationType.NoNeedUpdate.getValue()) {\n                log.info(\"该节点无需更新\");\n                return ;\n            }\n            Date startUpdateDate = station.getSensorDateUpdate();\n            SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n            String startDateStr=dateFormat.format(startUpdateDate);\n            startDateStr=startDateStr.replace(' ', 'T');\n            String[] cookiesByLogin=getCookieByLogin(station.getLoginName(),station.getPassword());\n            for(String cookieStr:cookiesByLogin) {\n                String[] coookieInfo = cookStringToItemString(cookieStr);\n                String getStationDateURL = GlobalConstant.caipoStationDateURL + \"?serial=\" + station.getSerialNum().toString() + \"&group=0&limit=100&verb=FromDate&dtfirst=\";\n                String getData = getStationInfo(getStationDateURL + startDateStr, coookieInfo);\n                JSONObject jsonObj = new JSONObject(getData);\n                Long serialNum = jsonObj.getLong(\"serial_number\");\n                if (!serialNum.equals(station.getSerialNum())) {\n                    continue;\n                }\n                JSONArray array = jsonObj.getJSONArray(\"data\");\n                monitoringNode node = new monitoringNode();\n                node.setStation(stationId);\n                List<monitoringNode> nodeList = moniService.dataGrid(node, null);\n                sensorService.insertApi(array,station,nodeList);\n                Service.insertApi(array, station,nodeList);\n\n               //修改下次更新数据\n                light.mvc.pageModel.sensor.Sensor sLast = Service.getLastSensor(station.getSerialNum());\n                Date lastDate = new Date(sLast.getCreateDate().getTime()+timeInterval);\n                stationS.updateSensorLastTime(lastDate,stationId);\n            }\n            log.info(\"更新数据成功===================================================\");\n        } catch (Exception e) {\n            log.error(e.getMessage());\n        }\n\n    }\n\n\n\n    public String[] getCookieByLogin(String loginName, String password)\n    {\n        String[] cookieStr= null;\n        String loginURL= GlobalConstant.caipoLoginURL+\"?\"+GlobalConstant.caipoLoginName+loginName+\"&\"+GlobalConstant.caipoPasswork+password;\n        BasicCookieStore cookieStore = new BasicCookieStore();\n        CloseableHttpClient httpclient = HttpClients.custom()\n                .setDefaultCookieStore(cookieStore)\n                .build();\n        try {\n            HttpGet httpget = new HttpGet(loginURL);\n            CloseableHttpResponse response1 = httpclient.execute(httpget);\n            try {\n                HttpEntity entity = response1.getEntity();\n\n                EntityUtils.consume(entity);\n\n                List<Cookie> cookies = cookieStore.getCookies();\n\n                cookieStr=new String[cookies.size()];\n                if (cookies.isEmpty()) {\n                    System.out.println(\"cookie is None\");\n                } else {\n                    for (int i = 0; i < cookies.size(); i++) {\n\n                        cookieStr[i]=new String(cookies.get(i).toString() );\n                        System.out.println(\"\\n(  getCookieByLogin(String loginURL) )in cookie i=\"+i+\"     \"+ cookieStr[i]);\n                    }\n\n                }\n            }catch(Exception e){\n                System.out.println(e);\n            }finally {\n                try {\n                    response1.close();\n                } catch (IOException e) {\n                    // TODO Auto-generated catch block\n                    e.printStackTrace();\n                }\n            }\n        }catch(Exception e){\n            System.out.println(e);\n        } finally {\n            try {\n                httpclient.close();\n            } catch (IOException e) {\n                // TODO Auto-generated catch block\n                e.printStackTrace();\n            }\n        }\n        return cookieStr;\n    }\n\n\n    public static String[] cookStringToItemString(String cookieStr){\n\n        String temp[]=cookieStr.split(\"]\");\n        String dest[]=new String[ temp.length ];\n        for(int i=0; i<temp.length; i++){\n            int start=temp[i].indexOf(\": \");\n            dest[i]=new String( temp[i].substring(start+2) );\n        }\n        return dest;\n    }\n\n    public static String getStationInfo(String url,String[] cookieInfo){\n\n        String stationInfo=null;\n\n        CookieStore cookieStore2 = new BasicCookieStore();\n        BasicClientCookie cookie2 = new BasicClientCookie(cookieInfo[1], cookieInfo[2]);\n        cookie2.setVersion(Integer.valueOf( cookieInfo[0]) );\n        cookie2.setDomain(cookieInfo[3]);\n        cookie2.setPath(cookieInfo[4]);\n        cookieStore2.addCookie(cookie2);\n        // Set the store\n        CloseableHttpClient httpclient = HttpClients.custom()\n                .setDefaultCookieStore(cookieStore2)\n                .build();\n\n        try{\n            HttpPost get = new HttpPost(url);\n            CloseableHttpResponse response2 = httpclient.execute(get);\n\n            try{\n                HttpEntity entity2 = response2.getEntity();\n\n                stationInfo = EntityUtils.toString(entity2,\"utf-8\");\n\n            }finally {\n                response2.close();\n            }\n        }catch(Exception e){\n            System.out.println(e);\n        }finally{\n            try {\n                httpclient.close();\n            } catch (IOException e) {\n                // TODO Auto-generated catch block\n                e.printStackTrace();\n            }\n        }\n\n        return stationInfo ;\n    }\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/spider/GithubRepoPageProcessor.java",
    "content": "package com.lida.mongo.spider;\n\nimport us.codecraft.webmagic.Page;\nimport us.codecraft.webmagic.Site;\nimport us.codecraft.webmagic.Spider;\nimport us.codecraft.webmagic.pipeline.JsonFilePipeline;\nimport us.codecraft.webmagic.processor.PageProcessor;\n\n\n/**\n * Created by stevenfen on 2016/11/30.\n */\npublic class GithubRepoPageProcessor implements PageProcessor {\n    private Site site = Site.me().setRetryTimes(3).setSleepTime(100);\n\n    @Override\n    public void process(Page page) {\n        page.addTargetRequests(page.getHtml().links().regex(\"(https://github\\\\.com/\\\\w+/\\\\w+)\").all());\n        page.putField(\"author\", page.getUrl().regex(\"https://github\\\\.com/(\\\\w+)/.*\").toString());\n        page.putField(\"name\", page.getHtml().xpath(\"//h1[@class='entry-title public']/strong/a/text()\").toString());\n        if (page.getResultItems().get(\"name\")==null){\n            //skip this page\n            page.setSkip(true);\n        }\n        page.putField(\"readme\", page.getHtml().xpath(\"//div[@id='readme']/tidyText()\"));\n\n        System.out.println(page.getResultItems()+\"==========================================================\");\n    }\n\n    @Override\n    public Site getSite() {\n        return site;\n    }\n\n    public static void main(String[] args) {\n        //Spider.create(new GithubRepoPageProcessor()).addUrl(\"http://www.gdagri.gov.cn/\").thread(5).run();\n        Spider.create(new GithubRepoPageProcessor())\n                //从\"https://github.com/code4craft\"开始抓\n                .addUrl(\"https://github.com/code4craft\")\n                .addPipeline(new JsonFilePipeline(\"D:\\\\webmagic\\\\\"))\n                //开启5个线程抓取\n                .thread(5)\n                //启动爬虫\n                .run();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/task/TestTask.java",
    "content": "package com.lida.mongo.task;\n\nimport com.lida.mongo.sensor.service.impl.UpdateDataImpl;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\nimport javax.annotation.Resource;\nimport java.text.DateFormat;\nimport java.util.Date;\n\n/**\n * Created by stevenfen on 2016/11/14.\n */\n@Component(\"annotationTask\")\npublic class TestTask {\n    @Resource\n    private UpdateDataImpl updateData;\n    @Scheduled(cron = \"* * */9 * * ?\")\n    public void print() {\n        //updateData.updateDataByCloud(9L);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/task/UpdateDataTask.java",
    "content": "package com.lida.mongo.task;\n\nimport com.lida.mongo.sensor.service.impl.UpdateDataImpl;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\nimport javax.annotation.Resource;\n\n/**\n * Created by stevenfen on 2016/12/7.\n */\n@Component(\"updateDataTask\")\npublic class UpdateDataTask {\n    @Resource\n    private UpdateDataImpl updateData;\n\n    /**\n     * 每个9个小时更新一下站点9的数据\n     */\n    @Scheduled(cron = \"*/5 * * * * ?\")\n    public void updataStaionNine(){\n        //updateData.updateDataByCloud(9L);\n    }\n\n    /**\n     * 每隔12小时更新一下站点3,5,7的数据\n     */\n    @Scheduled(cron = \"*/5 * * * * ?\")\n    public void updatStationSeven(){\n        //updateData.updateDataByCloud(7L);\n    }\n\n    @Scheduled(cron = \"*/5 * * * * ?\")\n    public void updatStationFive(){\n        //updateData.updateDataByCloud(5L);\n    }\n    @Scheduled(cron = \"*/5 * * * * ?\")\n    public void updatStationThree(){\n        //updateData.updateDataByCloud(3L);\n    }\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/AdvancedUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport com.lida.mongo.weixin.model.SNSUserInfo;\nimport com.lida.mongo.weixin.model.WeixinOauth2Token;\nimport com.lida.mongo.weixin.model.WeixinUserInfo;\nimport net.sf.json.JSONArray;\nimport net.sf.json.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport java.util.List;\n\n/**\n * �߼��ӿڹ�����\n */\npublic class AdvancedUtil {\n    private static Logger log = LoggerFactory.getLogger(AdvancedUtil.class);\n\n    /**\n     * ��ȡ��ҳ��Ȩƾ֤\n     *\n     * @param appId     �����˺ŵ�Ψһ��ʶ\n     * @param appSecret �����˺ŵ���Կ\n     * @param code\n     * @return WeixinAouth2Token\n     */\n    public static WeixinOauth2Token getOauth2AccessToken(String appId, String appSecret, String code) {\n        WeixinOauth2Token wat = null;\n        // ƴ�������ַ\n        String requestUrl = \"https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code\";\n        requestUrl = requestUrl.replace(\"APPID\", appId);\n        requestUrl = requestUrl.replace(\"SECRET\", appSecret);\n        requestUrl = requestUrl.replace(\"CODE\", code);\n        // ��ȡ��ҳ��Ȩƾ֤\n        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, \"GET\", null);\n        if (null != jsonObject) {\n            try {\n                wat = new WeixinOauth2Token();\n                wat.setAccessToken(jsonObject.getString(\"access_token\"));\n                wat.setExpiresIn(jsonObject.getInt(\"expires_in\"));\n                wat.setRefreshToken(jsonObject.getString(\"refresh_token\"));\n                wat.setOpenId(jsonObject.getString(\"openid\"));\n                wat.setScope(jsonObject.getString(\"scope\"));\n            } catch (Exception e) {\n                wat = null;\n                int errorCode = jsonObject.getInt(\"errcode\");\n                String errorMsg = jsonObject.getString(\"errmsg\");\n                log.error(\"��ȡ��ҳ��Ȩƾ֤ʧ�� errcode:{} errmsg:{}\", errorCode, errorMsg);\n            }\n        }\n        return wat;\n    }\n\n    /**\n     * ˢ����ҳ��Ȩƾ֤\n     *\n     * @param appId        �����˺ŵ�Ψһ��ʶ\n     * @param refreshToken\n     * @return WeixinAouth2Token\n     */\n    public static WeixinOauth2Token refreshOauth2AccessToken(String appId, String refreshToken) {\n        WeixinOauth2Token wat = null;\n        // ƴ�������ַ\n        String requestUrl = \"https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN\";\n        requestUrl = requestUrl.replace(\"APPID\", appId);\n        requestUrl = requestUrl.replace(\"REFRESH_TOKEN\", refreshToken);\n        // ˢ����ҳ��Ȩƾ֤\n        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, \"GET\", null);\n        if (null != jsonObject) {\n            try {\n                wat = new WeixinOauth2Token();\n                wat.setAccessToken(jsonObject.getString(\"access_token\"));\n                wat.setExpiresIn(jsonObject.getInt(\"expires_in\"));\n                wat.setRefreshToken(jsonObject.getString(\"refresh_token\"));\n                wat.setOpenId(jsonObject.getString(\"openid\"));\n                wat.setScope(jsonObject.getString(\"scope\"));\n            } catch (Exception e) {\n                wat = null;\n                int errorCode = jsonObject.getInt(\"errcode\");\n                String errorMsg = jsonObject.getString(\"errmsg\");\n                log.error(\"ˢ����ҳ��Ȩƾ֤ʧ�� errcode:{} errmsg:{}\", errorCode, errorMsg);\n            }\n        }\n        return wat;\n\n    }\n\n    /**\n     * ͨ����ҳ��Ȩ��ȡ�û���Ϣ\n     *\n     * @param accessToken ��ҳ��Ȩ�ӿڵ���ƾ֤\n     * @param openId      �û���ʶ\n     * @return SNSUserInfo\n     */\n    @SuppressWarnings({\"deprecation\", \"unchecked\"})\n    public static SNSUserInfo getSNSUserInfo(String accessToken, String openId) {\n        SNSUserInfo snsUserInfo = null;\n        // ƴ�������ַ\n        String requestUrl = \"https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID\";\n        requestUrl = requestUrl.replace(\"ACCESS_TOKEN\", accessToken).replace(\"OPENID\", openId);\n        // ͨ����ҳ��Ȩ��ȡ�û���Ϣ\n        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, \"GET\", null);\n\n        if (null != jsonObject) {\n            try {\n                snsUserInfo = new SNSUserInfo();\n                // �û��ı�ʶ\n                snsUserInfo.setOpenId(jsonObject.getString(\"openid\"));\n                // �ǳ�\n                snsUserInfo.setNickname(jsonObject.getString(\"nickname\"));\n                // �Ա�1�����ԣ�2��Ů�ԣ�0��δ֪��\n                snsUserInfo.setSex(jsonObject.getInt(\"sex\"));\n                // �û����ڹ���\n                snsUserInfo.setCountry(jsonObject.getString(\"country\"));\n                // �û�����ʡ��\n                snsUserInfo.setProvince(jsonObject.getString(\"province\"));\n                // �û����ڳ���\n                snsUserInfo.setCity(jsonObject.getString(\"city\"));\n                // �û�ͷ��\n                snsUserInfo.setHeadImgUrl(jsonObject.getString(\"headimgurl\"));\n                // �û���Ȩ��Ϣ\n                snsUserInfo.setPrivilegeList(JSONArray.toList(jsonObject.getJSONArray(\"privilege\"), List.class));\n            } catch (Exception e) {\n                snsUserInfo = null;\n                int errorCode = jsonObject.getInt(\"errcode\");\n                String errorMsg = jsonObject.getString(\"errmsg\");\n                log.error(\"��ȡ�û���Ϣʧ�� errcode:{} errmsg:{}\", errorCode, errorMsg);\n            }\n        }\n        return snsUserInfo;\n    }\n\n    /**\n     * ��ȡ�û���Ϣ\n     *\n     * @param accessToken �ӿڷ���ƾ֤\n     * @param openId      �û���ʶ\n     * @return WeixinUserInfo\n     */\n    public static WeixinUserInfo getUserInfo(String accessToken, String openId) {\n        WeixinUserInfo weixinUserInfo = null;\n        // ƴ�������ַ\n        String requestUrl = \"https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID\";\n        requestUrl = requestUrl.replace(\"ACCESS_TOKEN\", accessToken).replace(\"OPENID\", openId);\n        // ��ȡ�û���Ϣ\n        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, \"GET\", null);\n        if (null != jsonObject) {\n            try {\n                weixinUserInfo = new WeixinUserInfo();\n                // �û��ı�ʶ\n                weixinUserInfo.setOpenId(jsonObject.getString(\"openid\"));\n                // ��ע״̬��1�ǹ�ע��0��δ��ע����δ��עʱ��ȡ����������Ϣ\n                weixinUserInfo.setSubscribe(jsonObject.getInt(\"subscribe\"));\n                // �û���עʱ��\n                weixinUserInfo.setSubscribeTime(jsonObject.getString(\"subscribe_time\"));\n                // �ǳ�\n                weixinUserInfo.setNickname(jsonObject.getString(\"nickname\"));\n                // �û����Ա�1�����ԣ�2��Ů�ԣ�0��δ֪��\n                weixinUserInfo.setSex(jsonObject.getInt(\"sex\"));\n                // �û����ڹ���\n                weixinUserInfo.setCountry(jsonObject.getString(\"country\"));\n                // �û�����ʡ��\n                weixinUserInfo.setProvince(jsonObject.getString(\"province\"));\n                // �û����ڳ���\n                weixinUserInfo.setCity(jsonObject.getString(\"city\"));\n                // �û������ԣ���������Ϊzh_CN\n                weixinUserInfo.setLanguage(jsonObject.getString(\"language\"));\n                // �û�ͷ��\n                weixinUserInfo.setHeadImgUrl(jsonObject.getString(\"headimgurl\"));\n            } catch (Exception e) {\n                if (0 == weixinUserInfo.getSubscribe()) {\n                    log.error(\"�û�{}��ȡ����ע\", weixinUserInfo.getOpenId());\n                } else {\n                    int errorCode = jsonObject.getInt(\"errcode\");\n                    String errorMsg = jsonObject.getString(\"errmsg\");\n                    log.error(\"��ȡ�û���Ϣʧ�� errcode:{} errmsg:{}\", errorCode, errorMsg);\n                }\n            }\n        }\n        return weixinUserInfo;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/Client.java",
    "content": "package com.lida.mongo.util;\n\nimport java.io.*;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.net.URLConnection;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class Client {\n\n    /*\n     * webservice����������\n     */\n    // �������е�Demo��������GBK�����²��Եġ�\n    //�������ϵͳ��utf-8,����ע�᷽�����ܲ��ɹ���\n    //java.io.IOException: Server returned HTTP response code: 400 for URL: http://sdk2.zucp.net:8060/webservice.asmx��\n    //�����������400������ο���105�С�\n    //�������ϵͳ��utf-8���յ��Ķ��ſ��������룬��ο���298��\n    //���Ը���������Ҫ���н�������ĵ�ַ\n    //http://sdk2.zucp.net:8060/webservice.asmx?wsdl\n    private String serviceURL = \"http://sdk.entinfo.cn:8060/webservice.asmx\";\n    private String sn = \"\";// ���к�\n    private String password = \"\";// ����\n    private String pwd = \"\";\n\n    /*\n     * ���캯��\n     */\n    public Client(String sn, String password)\n            throws UnsupportedEncodingException {\n        this.sn = sn;\n        this.password = password;\n        this.pwd = this.getMD5(sn + password);\n    }\n\n    /*\n     * �������ƣ�getMD5\n     * ��    �ܣ��ַ���MD5����\n     * ��    ������ת���ַ���\n     * �� �� ֵ������֮���ַ���\n     */\n    public String getMD5(String sourceStr) throws UnsupportedEncodingException {\n        String resultStr = \"\";\n        try {\n            byte[] temp = sourceStr.getBytes();\n            MessageDigest md5 = MessageDigest.getInstance(\"MD5\");\n            md5.update(temp);\n            // resultStr = new String(md5.digest());\n            byte[] b = md5.digest();\n            for (int i = 0; i < b.length; i++) {\n                char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8',\n                        '9', 'A', 'B', 'C', 'D', 'E', 'F'};\n                char[] ob = new char[2];\n                ob[0] = digit[(b[i] >>> 4) & 0X0F];\n                ob[1] = digit[b[i] & 0X0F];\n                resultStr += new String(ob);\n            }\n            return resultStr;\n        } catch (NoSuchAlgorithmException e) {\n            e.printStackTrace();\n            return null;\n        }\n    }\n\n    /*\n     * �������ƣ�register\n     * ��    �ܣ�ע��\n     * ��    ������Ӧ���� ʡ�ݣ����У���ҵ����ҵ���ƣ���ϵ�ˣ��绰���ֻ����������䣬���棬��ַ���ʱ�\n     * �� �� ֵ��ע������String��\n     */\n    public String register(String province, String city, String trade,\n                           String entname, String linkman, String phone, String mobile,\n                           String email, String fax, String address, String postcode, String sign) {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/Register\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap12:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap12=\\\"http://www.w3.org/2003/05/soap-envelope\\\">\";\n        xml += \"<soap12:Body>\";\n        xml += \"<Register xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + password + \"</pwd>\";\n        xml += \"<province>\" + province + \"</province>\";\n        xml += \"<city>\" + city + \"</city>\";\n        xml += \"<trade>\" + trade + \"</trade>\";\n        xml += \"<entname>\" + entname + \"</entname>\";\n        xml += \"<linkman>\" + linkman + \"</linkman>\";\n        xml += \"<phone>\" + phone + \"</phone>\";\n        xml += \"<mobile>\" + mobile + \"</mobile>\";\n        xml += \"<email>\" + email + \"</email>\";\n        xml += \"<fax>\" + fax + \"</fax>\";\n        xml += \"<address>\" + address + \"</address>\";\n        xml += \"<postcode>\" + postcode + \"</postcode>\";\n        xml += \"<sign>\" + sign + \"</sign>\";\n        xml += \"</Register>\";\n        xml += \"</soap12:Body>\";\n        xml += \"</soap12:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n//\t\t\tbout.write(xml.getBytes());\n            bout.write(xml.getBytes(\"GBK\"));\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<RegisterResult>(.*)</RegisterResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            in.close();\n            return new String(result.getBytes(), \"utf-8\");\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n    /*\n     * �������ƣ�chargeFee\n     * ��    �ܣ���ֵ\n     * ��    ������ֵ���ţ���ֵ����\n     * �� �� ֵ�����������String��\n     */\n    public String chargeFee(String cardno, String cardpwd) {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/ChargUp\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap12:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap12=\\\"http://www.w3.org/2003/05/soap-envelope\\\">\";\n        xml += \"<soap12:Body>\";\n        xml += \"<ChargUp xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + password + \"</pwd>\";\n        xml += \"<cardno>\" + cardno + \"</cardno>\";\n        xml += \"<cardpwd>\" + cardpwd + \"</cardpwd>\";\n        xml += \"</ChargUp>\";\n        xml += \"</soap12:Body>\";\n        xml += \"</soap12:Envelope>\";\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<ChargUpResult>(.*)</ChargUpResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            in.close();\n            // return result;\n            return new String(result.getBytes(), \"utf-8\");\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n    /*\n     * �������ƣ�getBalance\n     * ��    �ܣ���ȡ���\n     * ��    ������\n     * �� �� ֵ����String��\n     */\n    public String getBalance() {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/balance\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\">\";\n        xml += \"<soap:Body>\";\n        xml += \"<balance xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + pwd + \"</pwd>\";\n        xml += \"</balance>\";\n        xml += \"</soap:Body>\";\n        xml += \"</soap:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<balanceResult>(.*)</balanceResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            in.close();\n            return new String(result.getBytes());\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n    /*\n     * �������ƣ�mt\n     * ��    �ܣ����Ͷ��� ,������ֻ��ž���Ⱥ����һ���ֻ��ž��ǵ����ύ\n     * ��    ����mobile,content,ext,stime,rrid(�ֻ��ţ����ݣ���չ�룬��ʱʱ�䣬Ψһ��ʶ)\n     * �� �� ֵ��Ψһ��ʶ���������дrrid������ϵͳ���ɵ�\n     */\n    public String mt(String mobile, String content, String ext, String stime,\n                     String rrid) {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/mt\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\">\";\n        xml += \"<soap:Body>\";\n        xml += \"<mt xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + pwd + \"</pwd>\";\n        xml += \"<mobile>\" + mobile + \"</mobile>\";\n        xml += \"<content>\" + content + \"</content>\";\n        xml += \"<ext>\" + ext + \"</ext>\";\n        xml += \"<stime>\" + stime + \"</stime>\";\n        xml += \"<rrid>\" + rrid + \"</rrid>\";\n        xml += \"</mt>\";\n        xml += \"</soap:Body>\";\n        xml += \"</soap:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n//\t\t\tbout.write(xml.getBytes());\n//\t\t\t�������ϵͳ��utf-8,������ĳ�\n            bout.write(xml.getBytes(\"GBK\"));\n\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern.compile(\"<mtResult>(.*)</mtResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            return result;\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n    /*\n     * �������ƣ�mo\n     * ��    �ܣ����ն���\n     * ��    ������\n     * �� �� ֵ�����յ�����Ϣ\n     */\n    public String mo() {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/mo\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\">\";\n        xml += \"<soap:Body>\";\n        xml += \"<mo xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + pwd + \"</pwd>\";\n        xml += \"</mo>\";\n        xml += \"</soap:Body>\";\n        xml += \"</soap:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStream isr = httpconn.getInputStream();\n            StringBuffer buff = new StringBuffer();\n            byte[] byte_receive = new byte[10240];\n            for (int i = 0; (i = isr.read(byte_receive)) != -1; ) {\n                buff.append(new String(byte_receive, 0, i));\n            }\n            isr.close();\n            String result_before = buff.toString();\n            int start = result_before.indexOf(\"<moResult>\");\n            int end = result_before.indexOf(\"</moResult>\");\n            result = result_before.substring(start + 10, end);\n\n            return result;\n\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n    /*\n * �������ƣ�gxmt �� �ܣ����͸��Զ��� ��������ͬ���ֻ��ŷ��Ͳ�ͬ�����ݣ��ֻ��ź�������Ӣ�ĵĶ��Ŷ�Ӧ��\n     * ������mobile,content,ext,stime,rrid(�ֻ��ţ����ݣ���չ�룬��ʱʱ�䣬Ψһ��ʶ) �� ��\n     * ֵ��Ψһ��ʶ���������дrrid������ϵͳ���ɵ�\n     */\n    public String gxmt(String mobile, String content, String ext, String stime,\n                       String rrid) {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/gxmt\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\">\";\n        xml += \"<soap:Body>\";\n        xml += \"<gxmt xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + pwd + \"</pwd>\";\n        xml += \"<mobile>\" + mobile + \"</mobile>\";\n        xml += \"<content>\" + content + \"</content>\";\n        xml += \"<ext>\" + ext + \"</ext>\";\n        xml += \"<stime>\" + stime + \"</stime>\";\n        xml += \"<rrid>\" + rrid + \"</rrid>\";\n        xml += \"</gxmt>\";\n        xml += \"</soap:Body>\";\n        xml += \"</soap:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<gxmtResult>(.*)</gxmtResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            return result;\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n\n    public String UnRegister() {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/UnRegister\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap12:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap12=\\\"http://www.w3.org/2003/05/soap-envelope\\\">\";\n        xml += \"<soap12:Body>\";\n        xml += \"<UnRegister xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + password + \"</pwd>\";\n        xml += \"</UnRegister>\";\n        xml += \"</soap12:Body>\";\n        xml += \"</soap12:Envelope>\";\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=utf-8\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<UnRegisterResult>String</UnRegisterResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            in.close();\n            return new String(result.getBytes());\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n\n\n    /*\n     * �������ƣ�UDPPwd\n     * ��    �ܣ��޸�����\n     * ��    ����������\n     * �� �� ֵ�����������String��\n     */\n    public String UDPPwd(String newPwd) {\n        String result = \"\";\n        String soapAction = \"http://tempuri.org/UDPPwd\";\n        String xml = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\";\n        xml += \"<soap12:Envelope xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:soap12=\\\"http://www.w3.org/2003/05/soap-envelope\\\">\";\n        xml += \"<soap12:Body>\";\n        xml += \"<UDPPwd  xmlns=\\\"http://tempuri.org/\\\">\";\n        xml += \"<sn>\" + sn + \"</sn>\";\n        xml += \"<pwd>\" + password + \"</pwd>\";\n        xml += \"<newpwd>\" + newPwd + \"</newpwd>\";\n        xml += \"</UDPPwd>\";\n        xml += \"</soap12:Body>\";\n        xml += \"</soap12:Envelope>\";\n\n        URL url;\n        try {\n            url = new URL(serviceURL);\n\n            URLConnection connection = url.openConnection();\n            HttpURLConnection httpconn = (HttpURLConnection) connection;\n            ByteArrayOutputStream bout = new ByteArrayOutputStream();\n            bout.write(xml.getBytes());\n            byte[] b = bout.toByteArray();\n            httpconn.setRequestProperty(\"Content-Length\", String\n                    .valueOf(b.length));\n            httpconn.setRequestProperty(\"Content-Type\",\n                    \"text/xml; charset=gb2312\");\n            httpconn.setRequestProperty(\"SOAPAction\", soapAction);\n            httpconn.setRequestMethod(\"POST\");\n            httpconn.setDoInput(true);\n            httpconn.setDoOutput(true);\n\n            OutputStream out = httpconn.getOutputStream();\n            out.write(b);\n            out.close();\n\n            InputStreamReader isr = new InputStreamReader(httpconn\n                    .getInputStream());\n            BufferedReader in = new BufferedReader(isr);\n            String inputLine;\n            while (null != (inputLine = in.readLine())) {\n                Pattern pattern = Pattern\n                        .compile(\"<UDPPwdResult>(.*)</UDPPwdResult>\");\n                Matcher matcher = pattern.matcher(inputLine);\n                while (matcher.find()) {\n                    result = matcher.group(1);\n                }\n            }\n            in.close();\n            // return result;\n            return new String(result.getBytes(), \"utf-8\");\n        } catch (Exception e) {\n            e.printStackTrace();\n            return \"\";\n        }\n    }\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/CommonUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport net.sf.json.JSONObject;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport javax.net.ssl.HttpsURLConnection;\nimport javax.net.ssl.SSLContext;\nimport javax.net.ssl.SSLSocketFactory;\nimport javax.net.ssl.TrustManager;\nimport java.io.*;\nimport java.net.ConnectException;\nimport java.net.URL;\n\n/**\n * ͨ�ù�����\n */\npublic class CommonUtil {\n    private static Logger log = LoggerFactory.getLogger(CommonUtil.class);\n\n    // ƾ֤��ȡ��GET��\n    public final static String token_url = \"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET\";\n\n    /**\n     * ����https����\n     *\n     * @param requestUrl    �����ַ\n     * @param requestMethod ����ʽ��GET��POST��\n     * @param outputStr     �ύ������\n     * @return JSONObject(ͨ��JSONObject.get(key)�ķ�ʽ��ȡjson���������ֵ)\n     */\n    public static JSONObject httpsRequest(String requestUrl,\n                                          String requestMethod, String outputStr) {\n        JSONObject jsonObject = null;\n        try {\n            // ����SSLContext���󣬲�ʹ������ָ�������ι�������ʼ��\n            TrustManager[] tm = {new MyX509TrustManager()};\n            SSLContext sslContext = SSLContext.getInstance(\"SSL\", \"SunJSSE\");\n            sslContext.init(null, tm, new java.security.SecureRandom());\n            // ������SSLContext�����еõ�SSLSocketFactory����\n            SSLSocketFactory ssf = sslContext.getSocketFactory();\n\n            URL url = new URL(requestUrl);\n            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();\n            conn.setSSLSocketFactory(ssf);\n\n            conn.setDoOutput(true);\n            conn.setDoInput(true);\n            conn.setUseCaches(false);\n            // ��������ʽ��GET/POST��\n            conn.setRequestMethod(requestMethod);\n\n            // ��outputStr��Ϊnullʱ�������д����\n            if (null != outputStr) {\n                OutputStream outputStream = conn.getOutputStream();\n                // ע������ʽ\n                outputStream.write(outputStr.getBytes(\"UTF-8\"));\n                outputStream.close();\n            }\n\n            // ����������ȡ��������\n            InputStream inputStream = conn.getInputStream();\n            InputStreamReader inputStreamReader = new InputStreamReader(\n                    inputStream, \"utf-8\");\n            BufferedReader bufferedReader = new BufferedReader(\n                    inputStreamReader);\n            String str = null;\n            StringBuffer buffer = new StringBuffer();\n            while ((str = bufferedReader.readLine()) != null) {\n                buffer.append(str);\n            }\n\n            // �ͷ���Դ\n            bufferedReader.close();\n            inputStreamReader.close();\n            inputStream.close();\n            inputStream = null;\n            conn.disconnect();\n            jsonObject = JSONObject.fromObject(buffer.toString());\n        } catch (ConnectException ce) {\n            log.error(\"���ӳ�ʱ��{}\", ce);\n        } catch (Exception e) {\n            log.error(\"https�����쳣��{}\", e);\n        }\n        return jsonObject;\n    }\n\n    /**\n     * URL���루utf-8��\n     *\n     * @param source\n     * @return\n     */\n    public static String urlEncodeUTF8(String source) {\n        String result = source;\n        try {\n            result = java.net.URLEncoder.encode(source, \"utf-8\");\n        } catch (UnsupportedEncodingException e) {\n            e.printStackTrace();\n        }\n        return result;\n    }\n\n    // String oauthUrl=\"http://yw.ysh365.com/coreServlet\";\n\n    /**\n     * �������������ж��ļ���չ��\n     *\n     * @param contentType ��������\n     * @return\n     */\n    public static String getFileExt(String contentType) {\n        String fileExt = \"\";\n        if (\"image/jpeg\".equals(contentType))\n            fileExt = \".jpg\";\n        else if (\"audio/mpeg\".equals(contentType))\n            fileExt = \".mp3\";\n        else if (\"audio/amr\".equals(contentType))\n            fileExt = \".amr\";\n        else if (\"video/mp4\".equals(contentType))\n            fileExt = \".mp4\";\n        else if (\"video/mpeg4\".equals(contentType))\n            fileExt = \".mp4\";\n        return fileExt;\n    }\n\n    public static void main(String[] args) {\n        String oauthUrl = \"http://yw.ysh365.com/oauthServlet\";\n        System.out.println(urlEncodeUTF8(oauthUrl));\n    }\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/Count.java",
    "content": "package com.lida.mongo.util;\n\nimport java.math.BigDecimal;\n\npublic class Count {\n    //������λС��\n    public double getnum(String num) {\n        String str;\n        String a = num;\n        if (a.indexOf(\".\") == -1)\n            str = a + \".00\";\n        else {\n            String b = a.substring(a.indexOf(\".\"));\n\n            if (b.length() > 2)\n                str = a.substring(0, a.indexOf(\".\") + 3);\n            else if (b.length() > 1)\n                str = a + \"0\";\n            else\n                str = a + \".00\";\n        }\n        return Double.valueOf(str);\n    }\n\n    /**\n     * double ���\n     *\n     * @param d1\n     * @param d2\n     * @return\n     */\n    public double add(double a, double b) {\n        BigDecimal bd1 = new BigDecimal(Double.toString(a));\n        BigDecimal bd2 = new BigDecimal(Double.toString(b));\n        return getnum(bd1.add(bd2).toString());\n    }\n\n    /**\n     * double ���\n     *\n     * @param d1\n     * @param d2\n     * @return\n     */\n    public double sub(double d1, double d2) {\n        BigDecimal bd1 = new BigDecimal(Double.toString(d1));\n        BigDecimal bd2 = new BigDecimal(Double.toString(d2));\n        return getnum(bd1.subtract(bd2).toString());\n    }\n\n    /**\n     * double ���\n     *\n     * @param d1\n     * @param d2\n     * @return\n     */\n    public double mul(double a, double b) {\n        BigDecimal bd1 = new BigDecimal(Double.toString(a));\n        BigDecimal bd2 = new BigDecimal(Double.toString(b));\n        return getnum(bd1.multiply(bd2).toString());\n    }\n\n    /**\n     * double ���\n     *\n     * @param d1\n     * @param d2\n     * @return\n     */\n    public double divide(double a, double b) {\n        BigDecimal bd1 = new BigDecimal(Double.toString(a));\n        BigDecimal bd2 = new BigDecimal(Double.toString(b));\n        return getnum(bd1.divide(bd2).toString());\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/HttpClientUtils.java",
    "content": "package com.lida.mongo.util;\n\nimport org.apache.commons.httpclient.HttpClient;\nimport org.apache.commons.httpclient.HttpException;\nimport org.apache.commons.httpclient.HttpStatus;\nimport org.apache.commons.httpclient.NameValuePair;\nimport org.apache.commons.httpclient.methods.GetMethod;\nimport org.apache.commons.httpclient.methods.PostMethod;\nimport org.apache.commons.httpclient.params.HttpMethodParams;\nimport org.apache.log4j.Logger;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStreamWriter;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Iterator;\nimport java.util.Map;\n\n/**\n * @璇存槑锛欻TTP璇锋眰\n */\npublic class HttpClientUtils {\n\n    private static final Logger logger = Logger\n            .getLogger(HttpClientUtils.class);\n\n    /**\n     * 鎵цHTTP GET璇锋眰锛屽弬鏁板皝瑁呭湪URL\n     *\n     * @param url\n     * @return\n     */\n    public static String httpGet(String url) {\n        HttpClient client = new HttpClient();\n        GetMethod method = new GetMethod(url);\n        method.getParams().setContentCharset(\"UTF-8\");\n\n        String result = null;\n        try {\n            client.executeMethod(method);\n            if (method.getStatusCode() == HttpStatus.SC_OK) {\n                result = method.getResponseBodyAsString();\n            } else {\n                logger.info(\"Method failed: \" + method.getStatusLine());\n            }\n        } catch (HttpException e) {\n            // 鍙戠敓鑷村懡鐨勫紓甯革紝鍙兘鏄崗璁笉瀵规垨鑰呰繑鍥炵殑鍐呭鏈夐棶棰�?\n            logger.info(\"Please check your provided http address!\");\n            e.printStackTrace();\n        } catch (IOException e) {\n            // 鍙戠敓缃戠粶寮傚父\n            logger.info(\"鍙戠敓缃戠粶寮傚父\");\n            e.printStackTrace();\n        } finally {\n            // 閲婃斁杩炴帴\n            if (method != null)\n                method.releaseConnection();\n            method = null;\n            client = null;\n        }\n        return result;\n    }\n\n    /**\n     * 鎵цpost璇锋眰 鍙傛暟JSON鏍煎紡\n     */\n    public static String postJSON(String strUrl, String param) {\n//\t\t\tString params=JSONObject.fromObject(param).toString();\n        try {\n            URL url = new URL(strUrl);// 鍒涘缓杩炴帴\n            HttpURLConnection connection = (HttpURLConnection) url.openConnection();\n            connection.setDoOutput(true);\n            connection.setDoInput(true);\n            connection.setUseCaches(false);\n            connection.setInstanceFollowRedirects(true);\n            connection.setRequestMethod(\"POST\"); // 璁剧疆璇锋眰鏂瑰紡\n            connection.setRequestProperty(\"Accept\", \"application/json\"); // 璁剧疆鎺ユ敹鏁版嵁鐨勬牸寮�?\n            connection.setRequestProperty(\"Content-Type\", \"application/json\"); // 璁剧疆鍙戦�佹暟鎹殑鏍煎紡?\n            connection.connect();\n            OutputStreamWriter out = new OutputStreamWriter(\n                    connection.getOutputStream(), \"UTF-8\"); // utf-8缂栫爜\n            out.append(param);\n            out.flush();\n            out.close();\n            // 璇诲彇鍝嶅簲\n            int length = (int) connection.getContentLength();// 鑾峰彇闀垮害\n            InputStream is = connection.getInputStream();\n            if (length != -1) {\n                byte[] data = new byte[length];\n                byte[] temp = new byte[512];\n                int readLen = 0;\n                int destPos = 0;\n                while ((readLen = is.read(temp)) > 0) {\n                    System.arraycopy(temp, 0, data, destPos, readLen);\n                    destPos += readLen;\n                }\n                String result = new String(data, \"UTF-8\"); // utf-8缂栫爜\n                return result;\n            }\n        } catch (IOException e) {\n            // TODO Auto-generated catch block\n            e.printStackTrace();\n        }\n        return null;\n    }\n\n    /**\n     * 鎵цHTTP POST璇锋眰锛屽弬鏁扮敤map瀵硅薄?\n     *\n     * @param url\n     * @param paramMap\n     * @return\n     */\n    @SuppressWarnings(\"rawtypes\")\n    protected static String httpPost(String url, Map<String, Object> paramMap) {\n        String content = null;\n        if (url == null || url.trim().length() == 0)\n            return null;\n        HttpClient httpClient = new HttpClient();\n\n        httpClient.getParams().setContentCharset(\"UTF-8\");\n        // 璁剧疆header\n        httpClient\n                .getParams()\n                .setParameter(\n                        HttpMethodParams.USER_AGENT,\n                        \"Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2\");\n\n        // 浠ｇ悊璁剧疆\n        // httpClient.getHostConfiguration().setProxy(\"128.128.176.74\", 808);\n\n        PostMethod method = new PostMethod(url);\n        if (paramMap != null) {\n            Iterator it = paramMap.keySet().iterator();\n\n            while (it.hasNext()) {\n                String key = it.next() + \"\";\n                Object o = paramMap.get(key);\n                if (o != null && o instanceof String) {\n                    method.addParameter(new NameValuePair(key, o.toString()));\n                }\n                if (o != null && o instanceof String[]) {\n                    String[] s = (String[]) o;\n                    if (s != null)\n                        for (int i = 0; i < s.length; i++) {\n                            method.addParameter(new NameValuePair(key, s[i]));\n                        }\n                }\n            }\n        }\n\n        try {\n            logger.info(\"method.getPath=\" + method.getQueryString());\n            logger.info(\"getURI=\" + method.getURI());\n            httpClient.executeMethod(method);\n            if (method.getStatusCode() == HttpStatus.SC_OK) {\n                content = method.getResponseBodyAsString();\n            } else {\n                logger.info(\"Method failed: \" + method.getStatusLine());\n            }\n        } catch (HttpException e1) {\n            e1.printStackTrace();\n        } catch (IOException e1) {\n            e1.printStackTrace();\n        } finally {\n            if (method != null)\n                method.releaseConnection();\n            method = null;\n            httpClient = null;\n        }\n        return content;\n    }\n\n    /**\n     * HTTP GET璇锋眰鍙傛暟灏佽,灏嗗弬鏁版坊鍔犲埌URL\n     *\n     * @param url\n     * @param paramMap\n     * @return\n     */\n    @SuppressWarnings(\"rawtypes\")\n    public static String urlParamPac(String url, Map<String, Object> paramMap) {\n        StringBuilder stringBuilder = new StringBuilder(url + \"?\");\n        Iterator it = paramMap.keySet().iterator();\n\n        while (it.hasNext()) {\n            String key = it.next() + \"\";\n            Object value = paramMap.get(key);\n            stringBuilder.append(key + \"=\" + value + \"&\");\n        }\n\n        return stringBuilder.substring(0, stringBuilder.length() - 1);\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    protected static String urlParamSet(String url, Map<String, Object> paramMap) {\n        StringBuilder stringBuilder = new StringBuilder(url);\n        Iterator it = paramMap.keySet().iterator();\n\n        while (it.hasNext()) {\n            String key = it.next() + \"\";\n            Object value = paramMap.get(key);\n            stringBuilder.append(key + \"=\" + value + \"&\");\n        }\n\n        return stringBuilder.substring(0, stringBuilder.length() - 1);\n    }\n\n    public static void main(String[] args) {\n/*//\t\tString URL = \"http://116.204.64.165:7880/IWMS/PayNotify/ccbpayCallBack\";\n//\t\tMap<String, Object> map = new HashMap<String, Object>();\n//\t\tmap.put(\"success\", true);\n//\t\tmap.put(\"code\", \"123\");\n//\t\tSystem.out.println(HttpClientUtils.httpPost(URL, map));\n\t\t\n\t\tString Url=\"http://119.79.224.116:20014/JLESServer/POST_SCM_DJ?Type=Post_EsOrder&USERNAME=JLSOFT&PASSWORD=88888&SIGNXML={\\\"Parms\\\":\\\"JSONXML\\\",\\\"Sign\\\":\\\"4d4d7828d59fd5f797ea7bccae99c9ec\\\"}&JSONXML={\\\"OrderId\\\":\\\"201312050001\\\",\\\"created\\\":\\\"2013-11-11\\\",\\\"modified\\\":\\\"2013-11-11\\\",\\\"Pay_time\\\":\\\"2013-11-11\\\",\\\"end_time\\\":\\\"2013-11-11\\\",\\\"Status\\\":\\\"绛夊緟鍗栧鍙戣揣\\\",\\\"shipping_type\\\":\\\"express\\\",\\\"title\\\":\\\"骞跨櫨瀹樻柟鍟嗗煄\\\",\\\"seller_nick\\\":\\\"骞跨櫨瀹樻柟鍟嗗煄\\\",\\\"buyer_nick\\\":\\\"lizhiqiang\\\",\\\"total_fee\\\":\\\"2000\\\",\\\"payment\\\":\\\"1800\\\",\\\"adjust_fee\\\":\\\"0\\\",\\\"discount_fee\\\":\\\"200\\\",\\\"point_fee\\\":\\\"0\\\",\\\"buyer_obtain_point_fee\\\":\\\"0\\\",\\\"post_fee\\\":\\\"100\\\",\\\"seller_memo\t\\\":\\\"宸插\\\",\\\"buyer_message\\\":\\\"璇峰敖蹇畨鎺掔墿娴佸彂璐э紝璋㈣阿\\\",\\\"receiver_name\\\":\\\"鏉庡織寮篭\",\\\"receiver_state\\\":\\\"婀栧寳鐪乗\",\\\"receiver_city\\\":\\\"姝︽眽甯俓\",\\\"receiver_district\\\":\\\"纭氬彛鍖篭\",\\\"receiver_address\\\":\\\"姹夋锟�?90鍙穃\",\\\"receiver_zip\\\":\\\"430033\\\",\\\"receiver_mobile\\\":\\\"13419644646\\\",\\\"receiver_phone\\\":\\\" \\\",\\\"invoice\\\":\\\"1\\\",\\\"invoice_name\\\":\\\"姝︽眽閲戝姏杞欢鏈夐檺鍏徃\\\",\\\"SysTemCon\\\":\\\"1\\\",\\\"SPLIST\\\":[{\\\"OrderItemId\\\":\\\"20131205000101\\\",\\\"sku_id\\\":\\\"123456789\\\",\\\"ProductID\\\":\\\"000001\\\",\\\" sp_title \\\":\\\"鏍煎姏2鍖圭┖璋僜\",\\\"Price \\\":\\\"2000\\\",\\\"num\\\":\\\"1\\\",\\\"total_fee\\\":\\\"0\\\",\\\" adjust_fee_ITEM\\\":\\\"2000\\\",\\\"discount_fee_item\\\":\\\"200\\\",\\\"payment_item\\\":\\\"1800,\\\"WhNo \\\":\\\"01019901\\\" }]}\";\n\t\tSystem.out.println(HttpClientUtils.httpGet(Url));*/\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/HttpRequestUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport java.io.BufferedReader;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.UnsupportedEncodingException;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\n\npublic class HttpRequestUtil {\n    /**\n     * ����\n     *\n     * @param source\n     * @return\n     */\n    public static String urlEncode(String source, String encode) {\n        String result = source;\n        try {\n            result = java.net.URLEncoder.encode(source, encode);\n        } catch (UnsupportedEncodingException e) {\n            e.printStackTrace();\n            return \"0\";\n        }\n        return result;\n    }\n\n    /**\n     * ����http�����ȡ���ؽ��\n     *\n     * @param requestUrl �����ַ\n     * @return\n     */\n    public static String httpRequest(String requestUrl) {\n        StringBuffer buffer = new StringBuffer();\n        try {\n            URL url = new URL(requestUrl);\n            HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();\n\n            httpUrlConn.setDoOutput(false);\n            httpUrlConn.setDoInput(true);\n            httpUrlConn.setUseCaches(false);\n\n            httpUrlConn.setRequestMethod(\"GET\");\n            httpUrlConn.connect();\n\n            // �����ص�������ת�����ַ���  \n            InputStream inputStream = httpUrlConn.getInputStream();\n            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, \"utf-8\");\n            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);\n\n            String str = null;\n            while ((str = bufferedReader.readLine()) != null) {\n                buffer.append(str);\n            }\n            bufferedReader.close();\n            inputStreamReader.close();\n            // �ͷ���Դ  \n            inputStream.close();\n            inputStream = null;\n            httpUrlConn.disconnect();\n\n        } catch (Exception e) {\n            System.out.println(e.getStackTrace());\n        }\n        return buffer.toString();\n    }\n\n    /**\n     * ����http����ȡ�÷��ص�������\n     *\n     * @param requestUrl �����ַ\n     * @return InputStream\n     */\n    public static InputStream httpRequestIO(String requestUrl) {\n        InputStream inputStream = null;\n        try {\n            URL url = new URL(requestUrl);\n            HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();\n            httpUrlConn.setDoInput(true);\n            httpUrlConn.setRequestMethod(\"GET\");\n            httpUrlConn.connect();\n            // ��÷��ص�������  \n            inputStream = httpUrlConn.getInputStream();\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n        return inputStream;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/JsonUtil.java",
    "content": "package com.lida.mongo.util;\n\n\nimport net.sf.json.JSONObject;\n\n/**\n * Created by stevenfen on 2016/12/22.\n * json工具类\n */\npublic class JsonUtil {\n    public static <T> T fromJson(String resultString,Class<T> beanClass){\n        JSONObject jsonObject = JSONObject.fromObject(resultString);\n        return (T) JSONObject.toBean(jsonObject, beanClass);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/MD5ForDiscuz.java",
    "content": "package com.lida.mongo.util;\n\nimport java.security.MessageDigest;\n\n/**\n * md5����\n *\n * @author Administrator\n */\npublic class MD5ForDiscuz {\n    public final static String MD5(String s) {\n        char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n                'A', 'B', 'C', 'D', 'E', 'F'};\n\n        try {\n            byte[] btInput = s.getBytes();\n            // ���MD5ժҪ�㷨�� MessageDigest ����\n            MessageDigest mdInst = MessageDigest.getInstance(\"MD5\");\n            // ʹ��ָ�����ֽڸ���ժҪ\n            mdInst.update(btInput);\n            // �������\n            byte[] md = mdInst.digest();\n            // ������ת����ʮ�����Ƶ��ַ�����ʽ\n            int j = md.length;\n            char str[] = new char[j * 2];\n            int k = 0;\n            for (int i = 0; i < j; i++) {\n                byte byte0 = md[i];\n                str[k++] = hexDigits[byte0 >>> 4 & 0xf];\n                str[k++] = hexDigits[byte0 & 0xf];\n            }\n            return new String(str);\n        } catch (Exception e) {\n            e.printStackTrace();\n            return null;\n        }\n    }\n\n    public static void main(String[] args) {\n        String aa = \"3d7b0@2a\";\n        String bb = \"SDK-NSF-010-00039\";\n        MD5ForDiscuz md5 = new MD5ForDiscuz();\n        String md5aa = md5.MD5(bb + aa);\n        StringBuffer sb = new StringBuffer();\n        sb.append(md5aa);\n        sb.append(bb);\n        String pwd = sb.toString();\n        String md5aa1 = md5.MD5(pwd);\n\n        System.out.println(md5aa);\n        System.out.println(md5aa1);\n\n        System.out.println(md5aa.toLowerCase());\n    }\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/MenuManager.java",
    "content": "package com.lida.mongo.util;\n\n\nimport com.lida.mongo.weixin.model.*;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\n/**\n * �˵���������\n */\npublic class MenuManager {\n\n    private static Logger log = LoggerFactory.getLogger(MenuManager.class);\n\n    public static void main(String[] args) {\n        // �������û�Ψһƾ֤\n        String appId = \"wx796e5452641c1b3e\";\n        // �������û�Ψһƾ֤��Կ\n        String appSecret = \"af9ebd266419f224d51e95bde72d727d\";\n\n        // ���ýӿڻ�ȡaccess_token\n        AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);\n        System.out.println(\"token:\" + at.getToken());\n\n\n        if (null != at) {\n            // ���ýӿڴ����˵�\n            int result = WeixinUtil.createMenu(getMenu(), at.getToken());\n\n            // �жϲ˵��������\n            if (0 == result)\n                log.info(\"�˵������ɹ���\");\n            else\n                log.info(\"�˵�����ʧ�ܣ������룺\" + result);\n        }\n    }\n\n    /**\n     * ��װ�˵�����\n     *\n     * @return\n     */\n    private static Menu getMenu() {\n        CommonButton btn11 = new CommonButton();\n        btn11.setName(\"11\");\n        btn11.setType(\"click\");\n        btn11.setKey(\"11\");\n\n        CommonButton btn12 = new CommonButton();\n        btn12.setName(\"12\");\n        btn12.setType(\"click\");\n        btn12.setKey(\"12\");\n\n        CommonButton btn13 = new CommonButton();\n        btn13.setName(\"13\");\n        btn13.setType(\"click\");\n        btn13.setKey(\"13\");\n\n        CommonButton btn14 = new CommonButton();\n        btn14.setName(\"14\");\n        btn14.setType(\"click\");\n        btn14.setKey(\"14\");\n//\t\tScancode_waitmsgButton btn14 = new Scancode_waitmsgButton();\n//\t\tbtn14.setName(\"ɨһɨ\");\n//\t\tbtn14.setType(\"scancode_push\");\n//\t\tbtn14.setKey(\"14\");\n//\t\tbtn14.setSub_button(\"scancode_push\");\n//\t\t\n//\t\tpic_sysphotoButton btn15 = new pic_sysphotoButton();\n//\t\tbtn15.setName(\"���ջ�����ᷢͼ\");\n//\t\tbtn15.setType(\"pic_photo_or_album\");\n//\t\tbtn15.setKey(\"15\");\n\n\n        CommonButton btn21 = new CommonButton();\n        btn21.setName(\"21\");\n        btn21.setType(\"click\");\n        btn21.setKey(\"21\");\n\n        CommonButton btn22 = new CommonButton();\n        btn22.setName(\"22\");\n        btn22.setType(\"click\");\n        btn22.setKey(\"22\");\n\n        CommonButton btn23 = new CommonButton();\n        btn23.setName(\"23\");\n        btn23.setType(\"click\");\n        btn23.setKey(\"23\");\n\n        CommonButton btn24 = new CommonButton();\n        btn24.setName(\"24\");\n        btn24.setType(\"click\");\n        btn24.setKey(\"24\");\n\n\n        CommonButton btn25 = new CommonButton();\n        btn25.setName(\"25\");\n        btn25.setType(\"click\");\n        btn25.setKey(\"25\");\n\n        ViewButton btn31 = new ViewButton();\n        btn31.setName(\"31\");\n        btn31.setType(\"view\");\n        btn31.setUrl(\"http://160d6436o1.51mypc.cn/mongo/goMongo/list\");\n\n        ViewButton btn32 = new ViewButton();\n        btn32.setName(\"32\");\n        btn32.setType(\"view\");\n        btn32.setUrl(\"http://www.m.ysh365.com/article/33.html\");\n\n\n        ViewButton btn33 = new ViewButton();\n        btn33.setName(\"С��\");\n        btn33.setType(\"view\");\n        btn33.setUrl(\"http://www.duopao.com/games/info?game_code=g20140212153040377809\");\n\n        ViewButton btn34 = new ViewButton();\n        btn34.setName(\"����\");\n        btn34.setType(\"view\");\n        btn34.setUrl(\"http://www.duopao.com/games/info?game_code=g20140120233048400063\");\n\n\n        ViewButton btn35 = new ViewButton();\n        btn35.setName(\"��Ȩ\");\n        btn35.setType(\"view\");\n        btn35.setUrl(\"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx55cbb77820db8240&redirect_uri=http%3A%2F%2Fyw.ysh365.com%2FoauthServlet&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\");\n\n        ComplexButton mainBtn1 = new ComplexButton();\n        mainBtn1.setName(\"����\");\n        mainBtn1.setSub_button(new Button[]{btn11, btn12, btn13, btn14});\n\n        ComplexButton mainBtn2 = new ComplexButton();\n        mainBtn2.setName(\"ɨһɨ\");\n        mainBtn2.setSub_button(new Button[]{btn21, btn22, btn23, btn24, btn25});\n\n        ComplexButton mainBtn3 = new ComplexButton();\n        mainBtn3.setName(\"����\");\n        mainBtn3.setSub_button(new Button[]{btn31, btn32, btn33, btn34, btn35});\n\n        /**\n         * ÿ��һ���˵����ж����˵���<br>\n         *\n         * ��ĳ��һ���˵���û�ж����˵��������menu����ζ����أ�<br>\n         * ���磬������һ���˵���ǡ��������顱����ֱ���ǡ���ĬЦ��������ômenuӦ���������壺<br>\n         * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 });\n         */\n        Menu menu = new Menu();\n        menu.setButton(new Button[]{mainBtn1, mainBtn2, mainBtn3});\n\n        return menu;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/MessageUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport com.thoughtworks.xstream.XStream;\nimport com.thoughtworks.xstream.core.util.QuickWriter;\nimport com.thoughtworks.xstream.io.HierarchicalStreamWriter;\nimport com.thoughtworks.xstream.io.xml.PrettyPrintWriter;\nimport com.thoughtworks.xstream.io.xml.XppDriver;\nimport com.lida.mongo.weixin.message.resp.Article;\nimport com.lida.mongo.weixin.message.resp.MusicMessage;\nimport com.lida.mongo.weixin.message.resp.NewsMessage;\nimport com.lida.mongo.weixin.message.resp.TextMessage;\nimport org.dom4j.Document;\nimport org.dom4j.Element;\nimport org.dom4j.io.SAXReader;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.io.InputStream;\nimport java.io.Writer;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Ϣ\n */\npublic class MessageUtil {\n    /**\n     * Ϣͣı\n     */\n    public static final String RESP_MESSAGE_TYPE_TEXT = \"text\";\n\n    /**\n     * Ϣͣ\n     */\n    public static final String RESP_MESSAGE_TYPE_MUSIC = \"music\";\n\n    /**\n     * Ϣͣͼ\n     */\n    public static final String RESP_MESSAGE_TYPE_NEWS = \"news\";\n\n    /**\n     * Ϣͣı\n     */\n    public static final String REQ_MESSAGE_TYPE_TEXT = \"text\";\n\n    /**\n     * ϢͣͼƬ\n     */\n    public static final String REQ_MESSAGE_TYPE_IMAGE = \"image\";\n\n    /**\n     * Ϣͣ\n     */\n    public static final String REQ_MESSAGE_TYPE_LINK = \"link\";\n\n    /**\n     * Ϣͣλ\n     */\n    public static final String REQ_MESSAGE_TYPE_LOCATION = \"location\";\n\n    /**\n     * ϢͣƵ\n     */\n    public static final String REQ_MESSAGE_TYPE_VOICE = \"voice\";\n\n    /**\n     * Ϣͣ\n     */\n    public static final String REQ_MESSAGE_TYPE_EVENT = \"event\";\n\n    /**\n     * ¼ͣsubscribe()\n     */\n    public static final String EVENT_TYPE_SUBSCRIBE = \"subscribe\";\n\n    /**\n     * ¼ͣunsubscribe(ȡ)\n     */\n    public static final String EVENT_TYPE_UNSUBSCRIBE = \"unsubscribe\";\n\n    /**\n     * ¼ͣCLICK(Զ˵¼)\n     */\n    public static final String EVENT_TYPE_CLICK = \"CLICK\";\n\n    /**\n     * ΢ŷXML\n     *\n     * @param request\n     * @return\n     * @throws Exception\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static Map<String, String> parseXml(HttpServletRequest request)\n            throws Exception {\n        // 洢HashMap\n        Map<String, String> map = new HashMap<String, String>();\n\n        // requestȡ\n        InputStream inputStream = request.getInputStream();\n        // ȡ\n        SAXReader reader = new SAXReader();\n        Document document = reader.read(inputStream);\n        // õxmlԪ\n        Element root = document.getRootElement();\n        // õԪصӽڵ\n        List<Element> elementList = root.elements();\n\n        // ӽڵ\n        for (Element e : elementList)\n            map.put(e.getName(), e.getText());\n\n        // ͷԴ\n        inputStream.close();\n        inputStream = null;\n\n        return map;\n    }\n\n    /**\n     * ıϢתxml\n     *\n     * @param textMessage ıϢ\n     * @return xml\n     */\n    public static String textMessageToXml(com.lida.mongo.weixin.message.resp.TextMessage textMessage) {\n        xstream.alias(\"xml\", textMessage.getClass());\n        return xstream.toXML(textMessage);\n    }\n\n    /**\n     * Ϣתxml\n     *\n     * @param musicMessage Ϣ\n     * @return xml\n     */\n    public static String messageToXml(MusicMessage musicMessage) {\n        xstream.alias(\"xml\", musicMessage.getClass());\n        return xstream.toXML(musicMessage);\n    }\n\n    /**\n     * ͼϢתxml\n     *\n     * @param newsMessage ͼϢ\n     * @return xml\n     */\n    public static String newsMessageToXml(NewsMessage newsMessage) {\n        xstream.alias(\"xml\", newsMessage.getClass());\n        xstream.alias(\"item\", new Article().getClass());\n        return xstream.toXML(newsMessage);\n    }\n\n    /**\n     * չxstreamʹ֧CDATA\n     *\n     * @date 2013-05-19\n     */\n    private static XStream xstream = new XStream(new XppDriver() {\n        public HierarchicalStreamWriter createWriter(Writer out) {\n            return new PrettyPrintWriter(out) {\n                // xmlڵתCDATA\n                boolean cdata = true;\n\n                @SuppressWarnings(\"unchecked\")\n                public void startNode(String name, Class clazz) {\n                    super.startNode(name, clazz);\n                }\n\n                protected void writeText(QuickWriter writer, String text) {\n                    if (cdata) {\n                        writer.write(\"<![CDATA[\");\n                        writer.write(text);\n                        writer.write(\"]]>\");\n                    } else {\n                        writer.write(text);\n                    }\n                }\n            };\n        }\n    });\n\n    /**\n     * ˵\n     *\n     * @return\n     */\n    public static String getMainMenu() {\n        StringBuffer buffer = new StringBuffer();\n        buffer.append(\"ãСС갻Ϊظѡ\").append(\"\\n\\n\");\n        buffer.append(\"1  ʷϵĽ\").append(\"\\n\");\n        buffer.append(\"2  Ϸ\").append(\"\\n\");\n        buffer.append(\"3  ܱ()\").append(\"\\n\");\n        buffer.append(\"4  ѯ()\").append(\"\\n\");\n        buffer.append(\"6  Ų̊()\").append(\"\\n\");\n        buffer.append(\"7  ѯ()\").append(\"\\n\");\n        buffer.append(\"8  ()\").append(\"\\n\\n\");\n        buffer.append(\"ظ?ʾ˰˵\");\n        return buffer.toString();\n    }\n\n    public static String youxi() {\n        StringBuffer buffer = new StringBuffer();\n        buffer.append(\"ֱӵ\").append(\"\\n\\n\");\n        buffer.append(\"1  <a href=\\\"http://www.duopao.com/games/info?game_code=g20140120233048400063\\\">׵</a>\").append(\"\\n\");\n        buffer.append(\"2  <a href=\\\"http://www.duopao.com/games/info?game_code=g20140212153040377809\\\">Flappy Bird</a>С\").append(\"\\n\");\n        buffer.append(\"3  <a href=\\\"http://www.duopao.com/games/info?game_code=g20140324115109221580\\\">2048</a>Ϸ\").append(\"\\n\");\n        return buffer.toString();\n    }\n\n    /**\n     * ıϢתxml\n     *\n     * @param textMessage ıϢ\n     * @return xml\n     */\n    public static String messageToXml(TextMessage textMessage) {\n        xstream.alias(\"xml\", textMessage.getClass());\n        return xstream.toXML(textMessage);\n    }\n\n    /**\n     * ͼϢתxml\n     *\n     * @param newsMessage ͼϢ\n     * @return xml\n     */\n    public static String messageToXml(NewsMessage newsMessage) {\n        xstream.alias(\"xml\", newsMessage.getClass());\n        xstream.alias(\"item\", new Article().getClass());\n        return xstream.toXML(newsMessage);\n    }\n\n\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/MongodbUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport com.lida.mongo.person.entity.Person;\nimport com.lida.mongo.sensor.entity.Sensor;\nimport com.mongodb.*;\n\nimport java.net.UnknownHostException;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by lenovo on 2016/12/7.\n */\npublic class MongodbUtil {\n    public static void main(String[] args) throws UnknownHostException {\n        Mongo  mongo = new Mongo(new ServerAddress(\"172.16.31.206\", 27017));\n        //MongoClientURI mongoURI = new MongoClientURI(\"mongodb://172.16.31.206:27017/mongoLida\");\n        List<String> lists =  mongo.getDatabaseNames();\n        DB db = mongo.getDB(\"mongoLida\");\n        DBCollection collection = db.getCollection(\"sensor\");\n        System.out.println(collection.count());\n    }\n    private static MongoClientOptions getConfOptions() {\n        return new MongoClientOptions.Builder().socketKeepAlive(true) // 是否保持长链接\n                .connectTimeout(5000) // 链接超时时间\n                .socketTimeout(5000) // read数据超时时间\n                .readPreference(ReadPreference.primary()) // 最近优先策略\n                .autoConnectRetry(false) // 是否重试机制\n                .connectionsPerHost(30) // 每个地址最大请求数\n                .maxWaitTime(1000 * 60 * 2) // 长链接的最大等待时间\n                .threadsAllowedToBlockForConnectionMultiplier(50) // 一个socket最大的等待请求数\n                .writeConcern(WriteConcern.NORMAL).build();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/MyX509TrustManager.java",
    "content": "package com.lida.mongo.util;\n\nimport javax.net.ssl.X509TrustManager;\nimport java.security.cert.CertificateException;\nimport java.security.cert.X509Certificate;\n\n/**\n * ֤�����ι�����������https����\n */\n\npublic class MyX509TrustManager implements X509TrustManager {\n\n    public void checkClientTrusted(X509Certificate[] chain, String authType)\n            throws CertificateException {\n    }\n\n    public void checkServerTrusted(X509Certificate[] chain, String authType)\n            throws CertificateException {\n    }\n\n    public X509Certificate[] getAcceptedIssuers() {\n        return null;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/QQUtils.java",
    "content": "package com.lida.mongo.util;\n\nimport com.lida.mongo.qq.model.QQUserInfo;\nimport jdk.nashorn.internal.runtime.GlobalConstants;\nimport org.apache.commons.lang.StringUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * Created by stevenfen on 2016/12/22.\n */\npublic class QQUtils {\n    public static String appId = \"101375254\";\n    public static String appSecret = \"xxx\";\n\n    public static String baseUrl = \"https://graph.qq.com\";\n\n    protected static final String URL_GET_USERINFO = baseUrl\n            + \"/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s\";\n\n    protected static final long ACCESS_TIMEOUT = 15;\n\n    protected static final String DEF_APP_TOKEN_EXPIRE = \"3h\";\n\n    private static Logger log = LoggerFactory.getLogger(QQUtils.class);\n    /**\n     * 获取用户信息\n     *\n     * <pre>\n     * http://wiki.connect.qq.com/get_user_info\n     *\n     *\n     * 调用地址：\n     * https://graph.qq.com/user/get_user_info\n     * 参数\n     *   access_token=*************&\n     *   oauth_consumer_key=12345&\n     *   openid\n     *\n     * 返回结果如下：\n     * {\n     *     \"ret\": 0,\n     *     \"msg\": \"\",\n     *     \"is_lost\": 0,\n     *     \"nickname\": \"小吞\",\n     *     \"gender\": \"女\",\n     *     \"province\": \"广东\",\n     *     \"city\": \"广州\",\n     *     \"year\": \"1993\",\n     *     \"figureurl\": \"http://qzapp.qlogo.cn/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/30\",\n     *     \"figureurl_1\": \"http://qzapp.qlogo.cn/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/50\",\n     *     \"figureurl_2\": \"http://qzapp.qlogo.cn/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/100\",\n     *     \"figureurl_qq_1\": \"http://q.qlogo.cn/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/40\",\n     *     \"figureurl_qq_2\": \"http://q.qlogo.cn/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/100\",\n     *     \"is_yellow_vip\": \"0\",\n     *     \"vip\": \"0\",\n     *     \"yellow_vip_level\": \"0\",\n     *     \"level\": \"0\",\n     *     \"is_yellow_year_vip\": \"0\"\n     * }\n     * </pre>\n     *\n     * @param accessToken\n     * @return\n     */\n    public static QQUserInfo getUserInfo(String accessToken, String openid) {\n        if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(openid)) {\n            return null;\n        }\n\n        String url = String.format(URL_GET_USERINFO, accessToken, appId, openid);\n\n        String resultString = HttpClientUtils.httpGet(url);\n\n        log.debug(\"[sso-qq]get　userinfo. use url '%s'\", url);\n\n        QQUserInfo userinfo = JsonUtil.fromJson(resultString, QQUserInfo.class);\n        if (userinfo == null ) {\n            log.debug(\"[sso-qq]get userinfo failed, with result of '%s'\", resultString);\n            return null;\n        }\n\n        log.debug(\"[sso-qq]get userinfo success, with result of '%s'\", resultString);\n        return userinfo;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/SignUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * ����У�鹤����\n */\npublic class SignUtil {\n    private static String token = \"co3oopVScm6zzoQWb04_Nlss9r04Ag4B8GfBUrbbvgFbxNvXK15WXqNEFjIHO07obMyya_tHkwTw7NJekr-hhMn_dTnVPGN7pMg0oZGcsXh6iBQhoFYUF8cGPKdbtRqYEVYbAGAOFI\";\n\n    /**\n     * ��֤ǩ��\n     *\n     * @param signature\n     * @param timestamp\n     * @param nonce\n     * @return\n     */\n    public static boolean checkSignature(String signature, String timestamp, String nonce) {\n        String[] arr = new String[]{token, timestamp, nonce};\n        Arrays.sort(arr);\n        StringBuilder content = new StringBuilder();\n        for (int i = 0; i < arr.length; i++) {\n            content.append(arr[i]);\n        }\n        MessageDigest md = null;\n        String tmpStr = null;\n\n        try {\n            md = MessageDigest.getInstance(\"SHA-1\");\n            byte[] digest = md.digest(content.toString().getBytes());\n            tmpStr = byteToStr(digest);\n        } catch (NoSuchAlgorithmException e) {\n            e.printStackTrace();\n        }\n\n        content = null;\n        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;\n    }\n\n    /**\n     * ���ֽ�����ת��Ϊʮ�������ַ���\n     *\n     * @param byteArray\n     * @return\n     */\n    private static String byteToStr(byte[] byteArray) {\n        String strDigest = \"\";\n        for (int i = 0; i < byteArray.length; i++) {\n            strDigest += byteToHexStr(byteArray[i]);\n        }\n        return strDigest;\n    }\n\n    /**\n     * ���ֽ�ת��Ϊʮ�������ַ���\n     *\n     * @param mByte\n     * @return\n     */\n    private static String byteToHexStr(byte mByte) {\n        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};\n        char[] tempArr = new char[2];\n        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];\n        tempArr[1] = Digit[mByte & 0X0F];\n\n        String s = new String(tempArr);\n        return s;\n    }\n}  "
  },
  {
    "path": "src/main/java/com/lida/mongo/util/StringUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport com.lida.mongo.sensor.entity.Sensor;\n\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\n/**\n * Created by lenovo on 2016/12/6.\n */\npublic class StringUtil {\n    private static  final  String format = \"yyyy-MM-dd HH:mm:ss\";\n\n    public static Date string2Date(String dateStr) throws ParseException {\n        SimpleDateFormat sdf = new SimpleDateFormat(format);\n        Date date=sdf.parse(dateStr);\n        return date;\n    }\n\n    public static void judgeField(String nodeMap, Double value, Sensor sensor){\n        if(nodeMap.equals(\"sensor1\")){\n            sensor.setSensor1(value);\n        }\n        else if(nodeMap.equals(\"sensor2\")){\n            sensor.setSensor2(value);\n        }\n        else if(nodeMap.equals(\"sensor3\")){\n            sensor.setSensor3(value);\n        }\n        else if(nodeMap.equals(\"sensor4\")){\n            sensor.setSensor4(value);\n        }\n        else if(nodeMap.equals(\"sensor5\")){\n            sensor.setSensor5(value);\n        }\n        else if(nodeMap.equals(\"sensor6\")){\n            sensor.setSensor6(value);\n        }\n        else if(nodeMap.equals(\"sensor7\")){\n            sensor.setSensor7(value);\n        }\n        else if(nodeMap.equals(\"sensor8\")){\n            sensor.setSensor8(value);\n        }\n        else if(nodeMap.equals(\"sensor9\")){\n            sensor.setSensor9(value);\n        }\n        else if(nodeMap.equals(\"sensor10\")){\n            sensor.setSensor10(value);\n        }\n        else if(nodeMap.equals(\"sensor11\")){\n            sensor.setSensor11(value);\n        }\n        else if(nodeMap.equals(\"sensor12\")){\n            sensor.setSensor12(value);\n        }\n        else if(nodeMap.equals(\"sensor13\")){\n            sensor.setSensor13(value);\n        }\n        else if(nodeMap.equals(\"sensor14\")){\n            sensor.setSensor14(value);\n        }\n        else if(nodeMap.equals(\"sensor15\")){\n            sensor.setSensor15(value);\n        }\n        else if(nodeMap.equals(\"sensor16\")){\n            sensor.setSensor16(value);\n        }\n        else if(nodeMap.equals(\"sensor17\")){\n            sensor.setSensor17(value);\n        }\n        else if(nodeMap.equals(\"sensor18\")){\n            sensor.setSensor18(value);\n        }\n        else if(nodeMap.equals(\"sensor19\")){\n            sensor.setSensor19(value);\n        }\n        else if(nodeMap.equals(\"sensor20\")){\n            sensor.setSensor20(value);\n        }\n\n    }\n\n    /**\n     * 计算输入日期后的一个小时的时间\n     * @param date\n     * @return\n     */\n    public static Date plusOneHour(Date date){\n        Calendar calendar=Calendar.getInstance();\n        calendar.setTime(date);\n        calendar.add(Calendar.HOUR_OF_DAY, 1);\n        return calendar.getTime();\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/util/WeixinUtil.java",
    "content": "package com.lida.mongo.util;\n\nimport com.lida.mongo.weixin.model.AccessToken;\nimport com.lida.mongo.weixin.model.Menu;\nimport net.sf.json.JSONException;\nimport net.sf.json.JSONObject;\n\nimport javax.net.ssl.HttpsURLConnection;\nimport javax.net.ssl.SSLContext;\nimport javax.net.ssl.SSLSocketFactory;\nimport javax.net.ssl.TrustManager;\nimport java.io.BufferedReader;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.OutputStream;\nimport java.net.ConnectException;\nimport java.net.URL;\n\n\n/**\n * ????????????????\n */\n\npublic class WeixinUtil {\n//\tprivate static Logger log = LoggerFactory.getLogger(WeixinUtil.class);  \n\n    /**\n     * ????https?????????\n     *\n     * @param requestUrl    ??????\n     * @param requestMethod ???????GET??POST??\n     * @param outputStr     ????????\n     * @return JSONObject(???JSONObject.get(key)???????json??????????)\n     */\n    public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {\n        JSONObject jsonObject = null;\n        StringBuffer buffer = new StringBuffer();\n        try {\n            // ????SSLContext??????????????????????????????  \n            TrustManager[] tm = {new MyX509TrustManager()};\n            SSLContext sslContext = SSLContext.getInstance(\"SSL\", \"SunJSSE\");\n            sslContext.init(null, tm, new java.security.SecureRandom());\n            // ??????SSLContext???????SSLSocketFactory????  \n            SSLSocketFactory ssf = sslContext.getSocketFactory();\n\n            URL url = new URL(requestUrl);\n            HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();\n            httpUrlConn.setSSLSocketFactory(ssf);\n\n            httpUrlConn.setDoOutput(true);\n            httpUrlConn.setDoInput(true);\n            httpUrlConn.setUseCaches(false);\n            // ???????????GET/POST??  \n            httpUrlConn.setRequestMethod(requestMethod);\n\n            if (\"GET\".equalsIgnoreCase(requestMethod))\n                httpUrlConn.connect();\n\n            // ??????????????  \n            if (null != outputStr) {\n                OutputStream outputStream = httpUrlConn.getOutputStream();\n                // ?????????????????????  \n                outputStream.write(outputStr.getBytes(\"UTF-8\"));\n                outputStream.close();\n            }\n\n            // ???????????????????????  \n            InputStream inputStream = httpUrlConn.getInputStream();\n            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, \"utf-8\");\n            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);\n\n            String str = null;\n            while ((str = bufferedReader.readLine()) != null) {\n                buffer.append(str);\n            }\n            bufferedReader.close();\n            inputStreamReader.close();\n            // ??????  \n            inputStream.close();\n            inputStream = null;\n            httpUrlConn.disconnect();\n            jsonObject = JSONObject.fromObject(buffer.toString());\n        } catch (ConnectException ce) {\n            System.out.println(\"Weixin server connection timed out.\");\n        } catch (Exception e) {\n            System.out.println(\"https request error:{}\" + e);\n        }\n        return jsonObject;\n    }\n\n    // ???access_token????????GET?? ??200????/??  \n    public final static String access_token_url = \"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET\";\n\n    /**\n     * ???access_token\n     *\n     * @param appid     ??\n     * @param appsecret ???\n     * @return\n     */\n    public static AccessToken getAccessToken(String appid, String appsecret) {\n        AccessToken accessToken = null;\n\n        String requestUrl = access_token_url.replace(\"APPID\", appid).replace(\"APPSECRET\", appsecret);\n        JSONObject jsonObject = httpRequest(requestUrl, \"GET\", null);\n        // ?????????  \n        if (null != jsonObject) {\n            try {\n                accessToken = new AccessToken();\n                accessToken.setToken(jsonObject.getString(\"access_token\"));\n                accessToken.setExpiresIn(jsonObject.getInt(\"expires_in\"));\n                System.setProperty(\"javax.net.debug\", \"ssl,handshake\");\n            } catch (JSONException e) {\n                accessToken = null;\n                // ???token???  \n                System.out.println(\"???token??? errcode:{} errmsg:{}\" + jsonObject.getInt(\"errcode\") + jsonObject.getString(\"errmsg\"));\n            }\n        }\n        return accessToken;\n    }\n\n    // ?????????POST?? ??100????/??\n    public static String menu_create_url = \"https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN\";\n\n    /**\n     * ???????\n     *\n     * @param menu        ??????\n     * @param accessToken ????access_token\n     * @return 0???????????????????\n     */\n    public static int createMenu(Menu menu, String accessToken) {\n        int result = 0;\n\n        // ???????????url  \n        String url = menu_create_url.replace(\"ACCESS_TOKEN\", accessToken);\n        // ??????????????json?????  \n        String jsonMenu = JSONObject.fromObject(menu).toString();\n        // ????????????  \n        JSONObject jsonObject = httpRequest(url, \"POST\", jsonMenu);\n\n        if (null != jsonObject) {\n            if (0 != jsonObject.getInt(\"errcode\")) {\n                result = jsonObject.getInt(\"errcode\");\n                System.out.println(\"?????????? errcode:{} errmsg:{}\" + jsonObject.getInt(\"errcode\") + jsonObject.getString(\"errmsg\"));\n            }\n        }\n        return result;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/controller/WeChatController.java",
    "content": "package com.lida.mongo.weixin.controller;\n\nimport com.lida.mongo.weixin.service.CoreService;\nimport com.lida.mongo.util.SignUtil;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\n\nimport javax.annotation.Resource;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.PrintWriter;\n\n\n/**\n * Created by stevenfen on 2016/11/12.\n */\n@Controller\n@RequestMapping(value = \"wechat\")\npublic class WeChatController {\n    @Resource\n    private CoreService coreService;\n\n    @RequestMapping(method = RequestMethod.GET)\n    public void doget(HttpServletRequest request, HttpServletResponse response, PrintWriter out) {\n        // 微信加密签名\n        String signature = request.getParameter(\"signature\");\n        // 时间戳\n        String timestamp = request.getParameter(\"timestamp\");\n        // 随机数\n        String nonce = request.getParameter(\"nonce\");\n        // 随机字符串\n        String echostr = request.getParameter(\"echostr\");\n\n        // 通过检验signature对请求进行校验，若校验成功则原样返回echostr，表示接入成功，否则接入失败\n        if (SignUtil.checkSignature(signature, timestamp, nonce)) {\n            out.print(echostr);\n        } else {\n            System.out.println(\"不是微信服务器发来的请求!\");\n        }\n        out.flush();\n        out.close();\n    }\n\n    @RequestMapping(method = {RequestMethod.POST})\n    public void dopose(HttpServletRequest request, HttpServletResponse response) throws Exception {\n            /* 消息的接收、处理、响应 */\n        // 将请求、响应的编码均设置为UTF-8（防止中文乱码）\n        request.setCharacterEncoding(\"UTF-8\");\n        response.setCharacterEncoding(\"UTF-8\");\n        // 调用核心业务类接收消息、处理消息\n        String respMessage = coreService.processRequest(request, response);\n        // 响应消息\n        PrintWriter out = response.getWriter();\n        out.print(respMessage);\n        out.close();\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/req/BaseMessage.java",
    "content": "package com.lida.mongo.weixin.message.req;\n\n/**\n * Ϣࣨͨû -> ʺţ\n */\npublic class BaseMessage {\n    // ΢ź  \n    private String ToUserName;\n    // ͷʺţһOpenID  \n    private String FromUserName;\n    // Ϣʱ ͣ  \n    private long CreateTime;\n    // Ϣͣtext/image/location/link  \n    private String MsgType;\n    // Ϣid64λ  \n    private long MsgId;\n\n    public String getToUserName() {\n        return ToUserName;\n    }\n\n    public void setToUserName(String toUserName) {\n        ToUserName = toUserName;\n    }\n\n    public String getFromUserName() {\n        return FromUserName;\n    }\n\n    public void setFromUserName(String fromUserName) {\n        FromUserName = fromUserName;\n    }\n\n    public long getCreateTime() {\n        return CreateTime;\n    }\n\n    public void setCreateTime(long createTime) {\n        CreateTime = createTime;\n    }\n\n    public String getMsgType() {\n        return MsgType;\n    }\n\n    public void setMsgType(String msgType) {\n        MsgType = msgType;\n    }\n\n    public long getMsgId() {\n        return MsgId;\n    }\n\n    public void setMsgId(long msgId) {\n        MsgId = msgId;\n    }\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/req/ImageMessage.java",
    "content": "package com.lida.mongo.weixin.message.req;\n\n/**\n * ͼƬϢ\n */\n\npublic class ImageMessage extends BaseMessage {\n\n    // ͼƬ\n    private String PicUrl;\n\n    public String getPicUrl() {\n        return PicUrl;\n    }\n\n    public void setPicUrl(String picUrl) {\n        PicUrl = picUrl;\n    }\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/req/LinkMessage.java",
    "content": "package com.lida.mongo.weixin.message.req;\n\n/**\n * Ϣ\n */\n\npublic class LinkMessage extends BaseMessage {\n\n    // Ϣ\n    private String Title;\n    // Ϣ  \n    private String Description;\n    // Ϣ  \n    private String Url;\n\n    public String getTitle() {\n        return Title;\n    }\n\n    public void setTitle(String title) {\n        Title = title;\n    }\n\n    public String getDescription() {\n        return Description;\n    }\n\n    public void setDescription(String description) {\n        Description = description;\n    }\n\n    public String getUrl() {\n        return Url;\n    }\n\n    public void setUrl(String url) {\n        Url = url;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/req/TextMessage.java",
    "content": "package com.lida.mongo.weixin.message.req;\n\n\n/**\n * ıϢ\n */\npublic class TextMessage extends BaseMessage {\n    // Ϣ\n    private String Content;\n\n    public String getContent() {\n        return Content;\n    }\n\n    public void setContent(String content) {\n        Content = content;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/req/VoiceMessage.java",
    "content": "package com.lida.mongo.weixin.message.req;\n\n/**\n * ƵϢ\n */\n\npublic class VoiceMessage extends BaseMessage {\n    // ýID\n    private String MediaId;\n    // ʽ  \n    private String Format;\n\n    public String getMediaId() {\n        return MediaId;\n    }\n\n    public void setMediaId(String mediaId) {\n        MediaId = mediaId;\n    }\n\n    public String getFormat() {\n        return Format;\n    }\n\n    public void setFormat(String format) {\n        Format = format;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/Article.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\n/**\n * ͼmodel\n */\n\npublic class Article {\n    // ͼϢ\n    private String Title;\n    // ͼϢ  \n    private String Description;\n    // ͼƬӣ֧JPGPNGʽϺõЧΪͼ640*320Сͼ80*80ͼƬӵҪ뿪дĻеUrlһ  \n    private String PicUrl;\n    // ͼϢת  \n    private String Url;\n\n    public String getTitle() {\n        return Title;\n    }\n\n    public void setTitle(String title) {\n        Title = title;\n    }\n\n    public String getDescription() {\n        return null == Description ? \"\" : Description;\n    }\n\n    public void setDescription(String description) {\n        Description = description;\n    }\n\n    public String getPicUrl() {\n        return null == PicUrl ? \"\" : PicUrl;\n    }\n\n    public void setPicUrl(String picUrl) {\n        PicUrl = picUrl;\n    }\n\n    public String getUrl() {\n        return null == Url ? \"\" : Url;\n    }\n\n    public void setUrl(String url) {\n        Url = url;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/BaseMessage.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\n\n/**\n * ��Ϣ���ࣨ�����ʺ� -> ��ͨ�û���\n */\npublic class BaseMessage {\n    // ���շ��ʺţ��յ���OpenID��\n    private String ToUserName;\n    // ������΢�ź�  \n    private String FromUserName;\n    // ��Ϣ����ʱ�� �����ͣ�  \n    private long CreateTime;\n    // ��Ϣ���ͣ�text/music/news��  \n    private String MsgType;\n    // λ0x0001����־ʱ���Ǳ���յ�����Ϣ  \n    private int FuncFlag;\n\n    public String getToUserName() {\n        return ToUserName;\n    }\n\n    public void setToUserName(String toUserName) {\n        ToUserName = toUserName;\n    }\n\n    public String getFromUserName() {\n        return FromUserName;\n    }\n\n    public void setFromUserName(String fromUserName) {\n        FromUserName = fromUserName;\n    }\n\n    public long getCreateTime() {\n        return CreateTime;\n    }\n\n    public void setCreateTime(long createTime) {\n        CreateTime = createTime;\n    }\n\n    public String getMsgType() {\n        return MsgType;\n    }\n\n    public void setMsgType(String msgType) {\n        MsgType = msgType;\n    }\n\n    public int getFuncFlag() {\n        return FuncFlag;\n    }\n\n    public void setFuncFlag(int funcFlag) {\n        FuncFlag = funcFlag;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/Music.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\n/**\n * model\n */\npublic class Music {\n    // ֱ\n    private String Title;\n    // \n    private String Description;\n    // \n    private String MusicUrl;\n    // ӣWIFIʹøӲ\n    private String HQMusicUrl;\n    // ͼýidͨϴýļõid\n    private String ThumbMediaId;\n\n    public String getTitle() {\n        return Title;\n    }\n\n    public void setTitle(String title) {\n        Title = title;\n    }\n\n    public String getDescription() {\n        return Description;\n    }\n\n    public void setDescription(String description) {\n        Description = description;\n    }\n\n    public String getMusicUrl() {\n        return MusicUrl;\n    }\n\n    public void setMusicUrl(String musicUrl) {\n        MusicUrl = musicUrl;\n    }\n\n    public String getHQMusicUrl() {\n        return HQMusicUrl;\n    }\n\n    public void setHQMusicUrl(String musicUrl) {\n        HQMusicUrl = musicUrl;\n    }\n\n    public String getThumbMediaId() {\n        return ThumbMediaId;\n    }\n\n    public void setThumbMediaId(String thumbMediaId) {\n        ThumbMediaId = thumbMediaId;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/MusicMessage.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\n/**\n * ������Ϣ\n */\npublic class MusicMessage extends BaseMessage {\n    // ����\n    private com.lida.mongo.weixin.message.resp.Music Music;\n\n    public com.lida.mongo.weixin.message.resp.Music getMusic() {\n        return Music;\n    }\n\n    public void setMusic(com.lida.mongo.weixin.message.resp.Music music) {\n        Music = music;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/NewsMessage.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\nimport java.util.List;\n\n/**\n * �ı���Ϣ\n */\n\npublic class NewsMessage extends BaseMessage {\n\n    // ͼ����Ϣ����������Ϊ10������\n    private int ArticleCount;\n    // ����ͼ����Ϣ��Ϣ��Ĭ�ϵ�һ��itemΪ��ͼ  \n    private List<Article> Articles;\n\n    public int getArticleCount() {\n        return ArticleCount;\n    }\n\n    public void setArticleCount(int articleCount) {\n        ArticleCount = articleCount;\n    }\n\n    public List<Article> getArticles() {\n        return Articles;\n    }\n\n    public void setArticles(List<Article> articles) {\n        Articles = articles;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/message/resp/TextMessage.java",
    "content": "package com.lida.mongo.weixin.message.resp;\n\n/**\n * ıϢ\n */\npublic class TextMessage extends BaseMessage {\n    // ظϢ\n    private String Content;\n\n    public String getContent() {\n        return Content;\n    }\n\n    public void setContent(String content) {\n        Content = content;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/AccessToken.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * ΢��ͨ�ýӿ�ƾ֤\n */\npublic class AccessToken {\n\n    // ��ȡ����ƾ֤\n    private String token;\n    // ƾ֤��Чʱ�䣬��λ����  \n    private int expiresIn;\n\n    public String getToken() {\n        return token;\n    }\n\n    public void setToken(String token) {\n        this.token = token;\n    }\n\n    public int getExpiresIn() {\n        return expiresIn;\n    }\n\n    public void setExpiresIn(int expiresIn) {\n        this.expiresIn = expiresIn;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/BaiduPlace.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * ��ַ��Ϣ\n *\n * @author liufeng\n * @date 2013-03-16\n */\npublic class BaiduPlace implements Comparable<BaiduPlace> {\n    // ����\n    private String name;\n    // ��ϸ��ַ\n    private String address;\n    // ����\n    private String lng;\n    // γ��\n    private String lat;\n    // ��ϵ�绰\n    private String telephone;\n    // ����\n    private int distance;\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    public String getLng() {\n        return lng;\n    }\n\n    public void setLng(String lng) {\n        this.lng = lng;\n    }\n\n    public String getLat() {\n        return lat;\n    }\n\n    public void setLat(String lat) {\n        this.lat = lat;\n    }\n\n    public String getTelephone() {\n        return telephone;\n    }\n\n    public void setTelephone(String telephone) {\n        this.telephone = telephone;\n    }\n\n    public int getDistance() {\n        return distance;\n    }\n\n    public void setDistance(int distance) {\n        this.distance = distance;\n    }\n\n    public int compareTo(BaiduPlace baiduPlace) {\n        return this.distance - baiduPlace.getDistance();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/Button.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * ťĻ\n */\n\npublic class Button {\n    private String name;\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/CommonButton.java",
    "content": "package com.lida.mongo.weixin.model;\n\n\n/**\n * ͨťӰť\n */\npublic class CommonButton extends Button {\n\n    private String type;\n    private String key;\n\n    public String getType() {\n        return type;\n    }\n\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    public String getKey() {\n        return key;\n    }\n\n    public void setKey(String key) {\n        this.key = key;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/ComplexButton.java",
    "content": "package com.lida.mongo.weixin.model;\n\n\n/**\n * ���Ӱ�ť������ť��\n */\npublic class ComplexButton extends Button {\n\n    private Button[] sub_button;\n\n    public Button[] getSub_button() {\n        return sub_button;\n    }\n\n    public void setSub_button(Button[] sub_button) {\n        this.sub_button = sub_button;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/Menu.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * �˵�\n */\npublic class Menu {\n\n    private Button[] button;\n\n    public Button[] getButton() {\n        return button;\n    }\n\n    public void setButton(Button[] button) {\n        this.button = button;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/SNSUserInfo.java",
    "content": "package com.lida.mongo.weixin.model;\n\nimport java.util.List;\n\n/**\n * ͨ����ҳ��Ȩ��ȡ���û���Ϣ\n */\npublic class SNSUserInfo {\n    // �û���ʶ\n    private String openId;\n    // �û��ǳ�\n    private String nickname;\n    // �Ա�1�����ԣ�2��Ů�ԣ�0��δ֪��\n    private int sex;\n    // ����\n    private String country;\n    // ʡ��\n    private String province;\n    // ����\n    private String city;\n    // �û�ͷ������\n    private String headImgUrl;\n    // �û���Ȩ��Ϣ\n    private List<String> privilegeList;\n\n    public String getOpenId() {\n        return openId;\n    }\n\n    public void setOpenId(String openId) {\n        this.openId = openId;\n    }\n\n    public String getNickname() {\n        return nickname;\n    }\n\n    public void setNickname(String nickname) {\n        this.nickname = nickname;\n    }\n\n    public int getSex() {\n        return sex;\n    }\n\n    public void setSex(int sex) {\n        this.sex = sex;\n    }\n\n    public String getCountry() {\n        return country;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n\n    public String getProvince() {\n        return province;\n    }\n\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    public String getCity() {\n        return city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    public String getHeadImgUrl() {\n        return headImgUrl;\n    }\n\n    public void setHeadImgUrl(String headImgUrl) {\n        this.headImgUrl = headImgUrl;\n    }\n\n    public List<String> getPrivilegeList() {\n        return privilegeList;\n    }\n\n    public void setPrivilegeList(List<String> privilegeList) {\n        this.privilegeList = privilegeList;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/UserLocation.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * �û�����λ��model\n */\npublic class UserLocation {\n    private String openId;\n    private String lng;\n    private String lat;\n    private String bd09Lng;\n    private String bd09Lat;\n\n    public String getOpenId() {\n        return openId;\n    }\n\n    public void setOpenId(String openId) {\n        this.openId = openId;\n    }\n\n    public String getLng() {\n        return lng;\n    }\n\n    public void setLng(String lng) {\n        this.lng = lng;\n    }\n\n    public String getLat() {\n        return lat;\n    }\n\n    public void setLat(String lat) {\n        this.lat = lat;\n    }\n\n    public String getBd09Lng() {\n        return bd09Lng;\n    }\n\n    public void setBd09Lng(String bd09Lng) {\n        this.bd09Lng = bd09Lng;\n    }\n\n    public String getBd09Lat() {\n        return bd09Lat;\n    }\n\n    public void setBd09Lat(String bd09Lat) {\n        this.bd09Lat = bd09Lat;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/ViewButton.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * view���͵Ĳ˵�\n */\npublic class ViewButton extends Button {\n    private String type;\n    private String url;\n\n    public String getType() {\n        return type;\n    }\n\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    public String getUrl() {\n        return url;\n    }\n\n    public void setUrl(String url) {\n        this.url = url;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/WeixinOauth2Token.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * ��ҳ��Ȩ��Ϣ\n */\npublic class WeixinOauth2Token {\n    // ��ҳ��Ȩ�ӿڵ���ƾ֤\n    private String accessToken;\n    // ƾ֤��Чʱ��\n    private int expiresIn;\n    // ����ˢ��ƾ֤\n    private String refreshToken;\n    // �û���ʶ\n    private String openId;\n    // �û���Ȩ������\n    private String scope;\n\n    public String getAccessToken() {\n        return accessToken;\n    }\n\n    public void setAccessToken(String accessToken) {\n        this.accessToken = accessToken;\n    }\n\n    public int getExpiresIn() {\n        return expiresIn;\n    }\n\n    public void setExpiresIn(int expiresIn) {\n        this.expiresIn = expiresIn;\n    }\n\n    public String getRefreshToken() {\n        return refreshToken;\n    }\n\n    public void setRefreshToken(String refreshToken) {\n        this.refreshToken = refreshToken;\n    }\n\n    public String getOpenId() {\n        return openId;\n    }\n\n    public void setOpenId(String openId) {\n        this.openId = openId;\n    }\n\n    public String getScope() {\n        return scope;\n    }\n\n    public void setScope(String scope) {\n        this.scope = scope;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/model/WeixinUserInfo.java",
    "content": "package com.lida.mongo.weixin.model;\n\n/**\n * ΢ûĻϢ\n */\npublic class WeixinUserInfo {\n    // ûıʶ\n    private String openId;\n    // ע״̬1ǹע0δעδעʱȡϢ\n    private int subscribe;\n    // ûעʱ䣬Ϊʱûιעȡעʱ\n    private String subscribeTime;\n    // ǳ\n    private String nickname;\n    // ûԱ1ԣ2Ůԣ0δ֪\n    private int sex;\n    // ûڹ\n    private String country;\n    // ûʡ\n    private String province;\n    // ûڳ\n    private String city;\n    // ûԣΪzh_CN\n    private String language;\n    // ûͷ\n    private String headImgUrl;\n\n    public String getOpenId() {\n        return openId;\n    }\n\n    public void setOpenId(String openId) {\n        this.openId = openId;\n    }\n\n    public int getSubscribe() {\n        return subscribe;\n    }\n\n    public void setSubscribe(int subscribe) {\n        this.subscribe = subscribe;\n    }\n\n    public String getSubscribeTime() {\n        return subscribeTime;\n    }\n\n    public void setSubscribeTime(String subscribeTime) {\n        this.subscribeTime = subscribeTime;\n    }\n\n    public String getNickname() {\n        return nickname;\n    }\n\n    public void setNickname(String nickname) {\n        this.nickname = nickname;\n    }\n\n    public int getSex() {\n        return sex;\n    }\n\n    public void setSex(int sex) {\n        this.sex = sex;\n    }\n\n    public String getCountry() {\n        return country;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n\n    public String getProvince() {\n        return province;\n    }\n\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    public String getCity() {\n        return city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    public String getLanguage() {\n        return language;\n    }\n\n    public void setLanguage(String language) {\n        this.language = language;\n    }\n\n    public String getHeadImgUrl() {\n        return headImgUrl;\n    }\n\n    public void setHeadImgUrl(String headImgUrl) {\n        this.headImgUrl = headImgUrl;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/service/CoreService.java",
    "content": "package com.lida.mongo.weixin.service;\n\nimport com.lida.mongo.weixin.message.resp.TextMessage;\nimport com.lida.mongo.util.MessageUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.stereotype.Repository;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.util.Date;\nimport java.util.Map;\n\n\n/**\n * ķ\n */\n\n@Repository(\"CoreService\")\npublic class CoreService {\n    private static Logger log = LoggerFactory.getLogger(CoreService.class);\n\n    private static String emoji(int codePoint) {\n        return String.valueOf(Character.toChars(codePoint));\n    }\n\n    /**\n     * ΢ŷ\n     *\n     * @param request\n     * @return\n     */\n\n    public String processRequest(HttpServletRequest request, HttpServletResponse response) {\n\n        // ĬϷصıϢ\n        String respMessage = null;\n        try {\n            String respContent = null;\n            Map<String, String> requestMap = MessageUtil.parseXml(request);\n            String fromUserName = requestMap.get(\"FromUserName\");\n            String toUserName = requestMap.get(\"ToUserName\");\n            String msgType = requestMap.get(\"MsgType\");\n            TextMessage textMessage = new TextMessage();\n            textMessage.setToUserName(fromUserName);\n            textMessage.setFromUserName(toUserName);\n            textMessage.setCreateTime(new Date().getTime());\n            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);\n            textMessage.setFuncFlag(0);\n            String openid = requestMap.get(\"FromUserName\");\n            String Content = requestMap.get(\"Content\");\n            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {\n                if (\"1\".equals(Content)) {\n                    respContent = \"ûɶ,İ\";\n                    textMessage.setContent(respContent);\n                    respMessage = MessageUtil.textMessageToXml(textMessage);\n//            \t\t// ͼϢ\n//\t\t\t\t\tNewsMessage newsMessage = new NewsMessage();\n//\t\t\t\t\tnewsMessage.setToUserName(fromUserName);\n//\t\t\t\t\tnewsMessage.setFromUserName(toUserName);\n//\t\t\t\t\tnewsMessage.setCreateTime(new Date().getTime());\n//\t\t\t\t\tnewsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);\n//\t\t\t\t\tnewsMessage.setFuncFlag(0);\n//\t\t\t\t\t\n//\t\t\t\t\t//1\n//\t\t\t\t\tList<Article> articleList = new ArrayList<Article>();\n//\t\t\t\t\tArticle article1 = new Article();\n//\t\t\t\t\tarticle1.setTitle(\"С\");\n//\t\t\t\t\tarticle1.setDescription(\"СϷ\");\n//\t\t\t\t\tarticle1.setPicUrl(\"http://resource.duopao.com/sg/image/20140221170627.jpg\");\n//\t\t\t\t\tarticle1.setUrl(\"http://www.duopao.com/games/info?game_code=g20140212153040377809\");\n//\t\t\t\t\t//2\n//\t\t\t\t\tArticle article2 = new Article();\n//\t\t\t\t\tarticle2.setTitle(\"\");\n//\t\t\t\t\tarticle2.setDescription(\"СϷ\");\n//\t\t\t\t\tarticle2.setPicUrl(\"http://resource.duopao.com/sg/image/20140120233041.jpg\");\n//\t\t\t\t\tarticle2.setUrl(\"http://www.duopao.com/games/info?game_code=g20140120233048400063\");\n//\n//\t\t\t\t\tarticleList.add(article1);\n//\t\t\t\t\tarticleList.add(article2);\n//\t\t\t\t\tnewsMessage.setArticleCount(articleList.size());\n//\t\t\t\t\tnewsMessage.setArticles(articleList);\n//\t\t\t\t\trespMessage = MessageUtil.newsMessageToXml(newsMessage);\n\n                } else if (\"2\".equals(Content)) {\n                    respContent = MessageUtil.youxi();\n                    textMessage.setContent(respContent);\n                    respMessage = MessageUtil.textMessageToXml(textMessage);\n                } else if (\"\".equals(Content) || \"?\".equals(Content)) {\n                    respContent = MessageUtil.getMainMenu();\n                    textMessage.setContent(respContent);\n                    respMessage = MessageUtil.textMessageToXml(textMessage);\n                } else {\n                    respContent = \"\";\n                    textMessage.setContent(respContent);\n                    respMessage = MessageUtil.textMessageToXml(textMessage);\n                }\n            }\n            // ͼƬϢ  \n            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {\n                String MediaId = requestMap.get(\"MediaId\");\n                respContent = \"ͼƬַǣ\" + MediaId;\n                textMessage.setContent(respContent);\n                respMessage = MessageUtil.textMessageToXml(textMessage);\n            }\n            // λϢ\n            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {\n\n            }\n            // Ϣ\n            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {\n                respContent = \"˵в\";\n                textMessage.setContent(respContent);\n                respMessage = MessageUtil.textMessageToXml(textMessage);\n            }\n            // ƵϢ\n            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {\n                respContent = \"˵в\";\n                textMessage.setContent(respContent);\n                respMessage = MessageUtil.textMessageToXml(textMessage);\n            }\n            // ¼         \n            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {\n                // ¼\n                String eventType = requestMap.get(\"Event\");\n                // \n                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {\n                    respContent = emoji(0x1F334) + \"ллעСС\" + MessageUtil.getMainMenu();\n                    textMessage.setContent(respContent);\n                    respMessage = MessageUtil.textMessageToXml(textMessage);\n                }\n                // Զ˵¼\n                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {\n                    String eventKey = requestMap.get(\"EventKey\");\n                    if (eventKey.equals(\"11\")) {\n                        respContent = emoji(0x274C) + \"ǰûа˻ֱӻظҵûа󶨡\";\n                        textMessage.setContent(respContent);\n                        respMessage = MessageUtil.textMessageToXml(textMessage);\n\n                    } else if (eventKey.equals(\"12\")) {\n                    } else if (eventKey.equals(\"13\")) {\n                    } else if (eventKey.equals(\"14\")) {\n                    } else if (eventKey.equals(\"21\")) {\n                    } else if (eventKey.equals(\"22\")) {\n                    } else if (eventKey.equals(\"23\")) {\n                    } else if (eventKey.equals(\"24\")) {\n                    } else if (eventKey.equals(\"31\")) {\n                    } else if (eventKey.equals(\"32\")) {\n                    }\n                }\n            }\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n        return respMessage;\n    }\n\n}"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/service/TemplateMes.java",
    "content": "package com.lida.mongo.weixin.service;\n\nimport com.lida.mongo.weixin.model.AccessToken;\nimport com.lida.mongo.util.HttpClientUtils;\nimport com.lida.mongo.util.WeixinUtil;\n\nimport java.util.Map;\n\n\n/**\n * ģϢ\n *\n * @author Administrator\n */\npublic class TemplateMes {\n\n\n    String appId = \"wx247b80e8e951fe79\";\n    // ûΨһƾ֤Կ\n    String appSecret = \"4fc4112c0abac60c04997c8ac4d87b92\";\n\n    // ýӿڻȡaccess_token\n    AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);\n\n\n    // ¶֪ͨ\n    private static String NEWORDERS = \"9x4PdTRa_FehBFX2HCQHMXAGRshlFj5AFg6zUe3MAA4\";\n    // ̶\n    private static String ORDERSSHIPMENTS = \"9x4PdTRa_FehBFX2HCQHMXAGRshlFj5AFg6zUe3MAA4\";\n    //  Earnings\n    private static String EARNINGS = \"n5BDnJ787UBXuYdBVhZsGdcf-yv51kyz0roptFdC3S8\";\n    // Ʒȱ stockout\n    private static String GOODSSTOCKOUT = \"Kfk7pITiatD9GiR84Hi99NU5jAFZ6ttBhI23elmOuIQ\";\n\n    private static String MESSAGE_TYPE_NEWORDERS = \"neworders\";\n    private static String MESSAGE_TYPE_ORDERSSHIPMENTS = \"ordersshipments\";\n    private static String MESSAGE_TYPE_EARNINGS = \"earnings\";\n    private static String MESSAGE_TYPE_GOODSSTOCKOUT = \"goodsstockout\";\n\n    public String sendWXMes(String type, Map<String, String> mesinfo)\n            throws Exception {\n        String jsoninfo = null;\n        if (MESSAGE_TYPE_NEWORDERS.equals(type.trim())) {\n            // ֧ɹ֪ͨ\n            jsoninfo = TemplateMes.sendCaptcha(mesinfo);\n            System.out.println(jsoninfo);\n        } else if (MESSAGE_TYPE_ORDERSSHIPMENTS.equals(type.trim())) {\n            // \n            jsoninfo = TemplateMes.sendRebate(mesinfo);\n            System.out.println(jsoninfo);\n        } else if (MESSAGE_TYPE_EARNINGS.equals(type.trim())) {\n            // \n            jsoninfo = TemplateMes.sendgoodcode(mesinfo);\n            System.out.println(jsoninfo);\n        } else if (MESSAGE_TYPE_GOODSSTOCKOUT.equals(type.trim())) {\n            // \n            jsoninfo = TemplateMes.sendgoodsstockout(mesinfo);\n            System.out.println(jsoninfo);\n        }\n        String strUrl = \"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=\" + at.getToken();\n        System.out.println(at.getToken());\n        return HttpClientUtils.postJSON(strUrl, jsoninfo);\n\n    }\n\n    // ¶֪ͨ\n    private static String sendCaptcha(Map<String, String> mesinfo) {\n        String jsoninfo = \"{\\\"template_id\\\": \\\"\" + NEWORDERS + \"\\\",\\\"topcolor\\\": \\\"#FF0000\\\",\\\"touser\\\": \\\"\" + mesinfo.get(\"openid\") + \"\\\",\\\"url\\\": \\\"\" + mesinfo.get(\"url\") + \"\\\", \"\n                + \"\\\"data\\\":\"\n                + \"{\\\"first\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"first\") + \"\\\" },\"\n                + \"\\\"orderno\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\":\\\"\" + mesinfo.get(\"orderno\") + \"\\\"}, \"\n                + \"\\\"refundno\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"refundno\") + \"\\\"},\"\n                + \"\\\"refundproduct\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"refundproduct\") + \"\\\"},\"\n                + \"\\\"remark\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"remark\") + \"\\\" }}}\";\n        return jsoninfo;\n    }\n\n    // ̶\n    private static String sendRebate(Map<String, String> mesinfo) {\n        String jsoninfo = \"{\\\"template_id\\\": \\\"\" + ORDERSSHIPMENTS + \"\\\",\\\"topcolor\\\": \\\"#FF0000\\\",\\\"touser\\\": \\\"\" + mesinfo.get(\"openid\") + \"\\\",\\\"url\\\": \\\"\" + mesinfo.get(\"url\") + \"\\\", \"\n                + \"\\\"data\\\":\"\n                + \"{\\\"first\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"first\") + \"\\\" },\"\n                + \"\\\"orderno\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\":\\\"\" + mesinfo.get(\"orderno\") + \"\\\"}, \"\n                + \"\\\"refundno\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"refundno\") + \"\\\"},\"\n                + \"\\\"refundproduct\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"refundproduct\") + \"\\\"},\"\n                + \"\\\"remark\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"remark\") + \"\\\" }}}\";\n        return jsoninfo;\n    }\n\n    //\n    private static String sendgoodcode(Map<String, String> mesinfo) {\n        String jsoninfo = \"{\\\"template_id\\\": \\\"\" + EARNINGS + \"\\\",\\\"topcolor\\\": \\\"#FF0000\\\",\\\"touser\\\": \\\"\" + mesinfo.get(\"openid\") + \"\\\",\\\"url\\\": \\\"\" + mesinfo.get(\"url\") + \"\\\", \"\n                + \"\\\"data\\\":\"\n                + \"{\\\"first\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"first\") + \"\\\" },\"\n                + \"\\\"keyword1\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\":\\\"\" + mesinfo.get(\"keyword1\") + \"\\\"}, \"\n                + \"\\\"keyword2\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"keyword2\") + \"\\\"},\"\n                + \"\\\"keyword3\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"keyword3\") + \"\\\"},\"\n                + \"\\\"keyword4\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"keyword4\") + \"\\\"},\"\n                + \"\\\"remark\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"remark\") + \"\\\" }}}\";\n        return jsoninfo;\n    }\n\n    //Ʒȱ\n    private static String sendgoodsstockout(Map<String, String> mesinfo) {\n        String jsoninfo = \"{\\\"template_id\\\": \\\"\" + GOODSSTOCKOUT + \"\\\",\\\"topcolor\\\": \\\"#FF0000\\\",\\\"touser\\\": \\\"\" + mesinfo.get(\"openid\") + \"\\\",\\\"url\\\": \\\"\" + mesinfo.get(\"url\") + \"\\\", \"\n                + \"\\\"data\\\":\"\n                + \"{\\\"first\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"first\") + \"\\\" },\"\n                + \"\\\"keyword1\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\":\\\"\" + mesinfo.get(\"keyword1\") + \"\\\"}, \"\n                + \"\\\"keyword2\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"keyword2\") + \"\\\"},\"\n                + \"\\\"remark\\\": {\\\"color\\\": \\\"#173177\\\",\\\"value\\\": \\\"\" + mesinfo.get(\"remark\") + \"\\\" }}}\";\n        return jsoninfo;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/service/TemplateMesService.java",
    "content": "package com.lida.mongo.weixin.service;\n\n\npublic class TemplateMesService {\n    /*\n\t*//**\n     * ¶ģϢ\n     *//*\n\tpublic void neworders(String order_sn){\n\t\t//ȡϢ\n\t\tYlOrderInfo ylOrderInfo=ylOrderInfoDao.neworder(order_sn);\n\t\t//ȡ󶨸ҵԱϢ\n\t\tList<YeEtWxBind> list=yeEtWxBindDao.getopenid(ylOrderInfo.getService_id());\n\t\tString goodsnumber=String.valueOf(ylOrderInfo.getGoods_number());\n\t\tSystem.out.println(goodsnumber);\n\t\t//ʱת\n\t\tString addtime=yeEtWxBindDao.TimeStamp2Date(ylOrderInfo.getAdd_time());\n\t\tfor(int i=0;i<list.size();i++){\n\t\t\t//װģϢ\n\t\t\tMap<String, String> mesinfo = new HashMap<String, String>();\n\t\t\tmesinfo.put(\"openid\", \"oETn-sqq2T92ncxeAR_Xvdd12L68\");//΢openid oETn-sqq2T92ncxeAR_Xvdd12L68\n\t\t\tmesinfo.put(\"url\", \"http://m.ysh365.com\");//Ժתӵַ\n\t\t\tmesinfo.put(\"first\", \"ã̳յһ¶ȴ\");\n\t\t\tmesinfo.put(\"orderno\", order_sn);//\n\t\t\tmesinfo.put(\"refundno\",goodsnumber);//Ʒ\n\t\t\tmesinfo.put(\"refundproduct\", ylOrderInfo.getOrder_amount()+\"Ԫ\");//Ʒ\n\t\t\tmesinfo.put(\"remark\", \"µʱ:\"+addtime+\",\"+\"µ磬СƽһʱΪ\");\n\t\t\ttry {\n\t\t\t\tString res=\ttemplateMes.sendWXMes(\"neworders\", mesinfo);\n\t\t\t\tSystem.out.println(res);\n\t\t\t} catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\t\n\t\t}\n\t}\n\t*//**\n     * ̷\n     *//*\n\tpublic void ordersshipments(String order_sn) {\n\t\tMap<String, String> mesinfo = new HashMap<String, String>();\n\t\t//ȡӶϢ\n\t\tYeOrderInfo yeOrderInfo=yeOrderInfoDao.getyeordersn(order_sn);\n\t\t//ѯ󶨵ĻԱ\n\t\tList<YeEtWxBind> list=yeEtWxBindDao.getopenid(yeOrderInfo.getSupply_id());\n\t\t//ʱת\n\t\tString addtime=yeEtWxBindDao.TimeStamp2Date(yeOrderInfo.getAdd_time());\n\t\tfor(int i=0;i<list.size();i++){\n\t\t\tmesinfo.put(\"openid\", list.get(i).getOpenid());//΢openid\n\t\t\tmesinfo.put(\"url\", \"http://m.ysh365.com\");//Ժתӵַ\n\t\t\tmesinfo.put(\"first\", \"ãѷ뼰ʱջŶ~\");\n\t\t\tmesinfo.put(\"orderno\", order_sn);//\n\t\t\tmesinfo.put(\"refundno\", yeOrderInfo.getOrder_amount()+\"\");//ѽ\n\t\t\tmesinfo.put(\"refundproduct\", addtime);//ʱ\n\t\t\tmesinfo.put(\"remark\", \"µ~~ֱ΢ԣСƽһʱΪ\");\n\t\t\ttry {\n\t\t\t\tString res=\ttemplateMes.sendWXMes(\"ordersshipments\", mesinfo);\n\t\t\t\tSystem.out.println(res);\n\t\t\t} catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t}\n\t*//**\n     *\n     *//*\n\tpublic void Earnings(String order_sn) {\n\t\tYeOrderInfo yeOrderInfo= yeOrderInfoDao.getyeordersn(order_sn);\n\t\t//ȡ󶨸ҵԱϢ\n\t\tList<YeEtWxBind> list=yeEtWxBindDao.getopenid(yeOrderInfo.getSupply_id());\n\t\t//ʱת\n\t\tString addtime=yeEtWxBindDao.TimeStamp2Date(yeOrderInfo.getAdd_time());\n\t\tfor(int i=0;i<list.size();i++){\n\t\t\tMap<String, String> mesinfo = new HashMap<String, String>();\n\t\t\tmesinfo.put(\"openid\", \"oETn-sqq2T92ncxeAR_Xvdd12L68\");//΢openid\n\t\t\tmesinfo.put(\"url\", \"http://m.ysh365.com\");//Ժתӵַ\n\t\t\tmesinfo.put(\"first\", \"𾴵û,һ涩\");\n\t\t\tmesinfo.put(\"keyword1\", order_sn);//\n\t\t\tmesinfo.put(\"keyword2\", yeOrderInfo.getOrder_amount()+\"\");//ѽ\n\t\t\tmesinfo.put(\"keyword3\", addtime);//֧ʱ\n\t\t\tmesinfo.put(\"keyword4\", \"\");//\n\t\t\tmesinfo.put(\"remark\", \"µ~~ֱ΢ԣСƽһʱΪ\");\n\t\t\ttry {\n\t\t\t\tString res=\ttemplateMes.sendWXMes(\"earnings\", mesinfo);\n\t\t\t\tSystem.out.println(res);\n\t\t\t} catch (Exception e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t*//**\n     * ƷȱԤ\n     *//*\n\tpublic void goodsstockout(int product_id) {\n\t\tMap<String, String> mesinfo = new HashMap<String, String>();\n\t\tYeEtSupplyProducts yeEtSupplyProducts=yeEtSupplyProductsDao.stock(product_id);\n\t\tmesinfo.put(\"openid\", \"oETn-sqq2T92ncxeAR_Xvdd12L68\");//΢openid\n\t\tmesinfo.put(\"url\", \"http://m.ysh365.com\");//Ժתӵַ\n\t\tmesinfo.put(\"first\", \"𾴵Ĺ̻Ա,һƷ汨\");\n\t\tmesinfo.put(\"keyword1\", yeEtSupplyProducts.getGoods_name());//Ʒ\n\t\tmesinfo.put(\"keyword2\", \"ʣ\"+yeEtSupplyProducts.getStock());//Ч\n\t\tmesinfo.put(\"remark\", \"뼰ʱӿ,µ~~ֱ΢ԣСƽһʱΪ\");\n\t\ttry {\n\t\t\tString res=\ttemplateMes.sendWXMes(\"goodsstockout\", mesinfo);\n\t\t\tSystem.out.println(res);\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\t\n\t}\n\t*/\n\n}\n"
  },
  {
    "path": "src/main/java/com/lida/mongo/weixin/service/WeatherService.java",
    "content": "package com.lida.mongo.weixin.service;\n\nimport com.lida.mongo.util.HttpRequestUtil;\n\nimport java.io.UnsupportedEncodingException;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class WeatherService {\n    public static String urlEncodeGBK(String source) {\n        String result = source;\n        try {\n            result = java.net.URLEncoder.encode(source, \"GBK\");\n        } catch (UnsupportedEncodingException e) {\n            e.printStackTrace();\n        }\n        return result;\n    }\n\n    /**\n     * ??????????XML?????????\n     *\n     * @param source\n     * @return\n     */\n    public static String getWeatherXml(String source, int day) {\n        String dst = null;\n        // ?????????  \n        String requestUrl = \"http://php.weather.sina.com.cn/xml.php?city={keyWord}&password=DJOYnieT8234jlsK&day=\" + day;\n        // ?????q???????urlEncode utf-8????  \n        requestUrl = requestUrl.replace(\"{keyWord}\", HttpRequestUtil.urlEncode(source, \"GBK\"));\n        dst = HttpRequestUtil.httpRequest(requestUrl);\n        return dst;\n    }\n\n    /**\n     * ????????????????????????????????\n     *\n     * @param source\n     * @return\n     */\n    public static String getWeatherInfo(String source) {\n        StringBuffer buffer = new StringBuffer();\n        buffer.append(source).append(\" ??????????????????????\\n\\n\");\n        for (int i = 0; i < 3; i++) {\n            String weatherXml = getWeatherXml(source, i);\n            if (null == weatherXml || \"\".equals(weatherXml))\n                return \"\";\n            String status1 = \"\";\n            String direction1 = \"\";\n            String temperature1 = \"\";\n            String temperature2 = \"\";\n            String savedate_weather = \"\";\n            String ssd_l = \"\";\n            String yd_s = \"\";\n            Pattern p = Pattern.compile(\"(.*)(<status1>)(.*?)(</status1>)(.*)\");\n            Matcher m = p.matcher(weatherXml);\n            if (m.matches())\n                status1 = m.group(3);\n            if (null == status1 || \"\".endsWith(status1))\n                return \"\";\n            p = Pattern.compile(\"(.*)(<direction1>)(.*?)(</direction1>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                direction1 = m.group(3);\n            p = Pattern.compile(\"(.*)(<temperature1>)(.*?)(</temperature1>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                temperature1 = m.group(3);\n            p = Pattern.compile(\"(.*)(<temperature2>)(.*?)(</temperature2>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                temperature2 = m.group(3);\n            p = Pattern.compile(\"(.*)(<savedate_weather>)(.*?)(</savedate_weather>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                savedate_weather = m.group(3);\n            p = Pattern.compile(\"(.*)(<ssd_l>)(.*?)(</ssd_l>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                ssd_l = m.group(3);\n            p = Pattern.compile(\"(.*)(<yd_s>)(.*?)(</yd_s>)(.*)\");\n            m = p.matcher(weatherXml);\n            if (m.matches())\n                yd_s = m.group(3);\n            buffer.append(savedate_weather).append(\"\\n\").append(status1).append(\" \").append(direction1).append(\" \").append(temperature2)\n                    .append(\"??-\").append(temperature1).append(\"?? \").append(ssd_l).append(\"\\n\").append(\"????????\").append(yd_s).append(\"\\n\\n\");\n        }\n        return (null == buffer ? \"\" : buffer.toString());\n    }\n\n    /**\n     * @param args\n     */\n    public static void main(String[] args) {\n        System.out.println(getWeatherInfo(\"当家花旦\"));\n    }\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/base/BaseController.java",
    "content": "package light.mvc.controller.base;\n\nimport light.mvc.utils.StringEscapeEditor;\nimport org.springframework.beans.propertyeditors.CustomDateEditor;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.ServletRequestDataBinder;\nimport org.springframework.web.bind.annotation.InitBinder;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n@Controller\n@RequestMapping(\"/base\")\npublic class BaseController {\n\n\tprotected int page = 1;// 当前页\n\tprotected int rows = 10;// 每页显示记录数\n\tprotected String sort;// 排序字段\n\tprotected String order = \"asc\";// asc/desc\n\n\tprotected String ids;// 主键集合，逗号分割\n\n\t@InitBinder\n\tpublic void initBinder(ServletRequestDataBinder binder) {\n\t\t/**\n\t\t * 自动转换日期类型的字段格式\n\t\t */\n\t\t\n\t\tbinder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\"), true));\n\t\tbinder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat(\"yyyy-MM-dd\"), true));\n\t\t\n\n\t\t/**\n\t\t * 防止XSS攻击\n\t\t */\n\t\tbinder.registerCustomEditor(String.class, new StringEscapeEditor(true, false));\n\t}\n\n\t/**\n\t * 用户跳转JSP页面\n\t * \n\t * 此方法不考虑权限控制\n\t * \n\t * @param folder\n\t *            路径\n\t * @param jspName\n\t *            JSP名称(不加后缀)\n\t * @return 指定JSP页面\n\t */\n\t@RequestMapping(\"/{folder}/{jspName}\")\n\tpublic String redirectJsp(@PathVariable String folder, @PathVariable String jspName) {\n\t\treturn \"/\" + folder + \"/\" + jspName;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/manual/EFManualCategoryController.java",
    "content": "package light.mvc.controller.manual;\n\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.manual.EFExpertList;\nimport light.mvc.pageModel.manual.EFmanualCategory;\nimport light.mvc.pageModel.sys.User;\nimport light.mvc.service.manual.EFManualCategoryServiceI;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n\n@Controller\n@RequestMapping(\"/manualCategory\")\npublic class EFManualCategoryController extends BaseController{\n\n\t@Autowired\n\tprivate EFManualCategoryServiceI categoryService;\n\t\n\t@RequestMapping(\"/getPage\")\n\tpublic String categoryPage(HttpServletRequest request) {\n\t\tList<EFmanualCategory> rootList = categoryService.getByPid((long)0);\n\t\trequest.setAttribute(\"rootList\", rootList);\n\t\t\n\t\treturn \"/eumode/manual/category\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid dataGrid(EFmanualCategory category, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(categoryService.dataGrid(category, ph));\n\t\tgrid.setTotal(categoryService.count(category, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/treeGrid\")\n\t@ResponseBody\n\tpublic  List<EFmanualCategory> treeGrid(EFmanualCategory category, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\t\t\n\t\treturn \tcategoryService.treeGrid(category);\n\t}\n\t\n\t\n\t@RequestMapping(\"/getAllManualTree\")\n\t@ResponseBody\n\tpublic List<Tree> getAllManualTree() {\n\t\treturn categoryService.allTree();\n\t}\n\t\n\t@RequestMapping(\"/getManualTreeByCode\")\n\t@ResponseBody\n\tpublic List<Tree> getManualTreeByCode(HttpServletRequest request,String categoryRoot) {\n\t\tif(categoryRoot==null)\n\t\t{\n\t\t\tcategoryRoot=\"\";\n\t\t}\n\n\t\treturn categoryService.getTreeByCode(categoryRoot);\n\t}\n\t\n\t@ResponseBody\n\t@RequestMapping(\"/getExpertByCategory\")\n\tpublic List<User> getExpertByCategory(Long id)\n\t{\n\t\tEFExpertList expertList =categoryService.getExpertList(id);\n\t\treturn expertList.getList();\n\t}\n\t\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids,HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tcategoryService.delete(id,request);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage(HttpServletRequest request,String categoryRoot) {\n\t\trequest.setAttribute(\"categoryRoot\", categoryRoot);\n\t\treturn \"/eumode/manual/categoryAdd\";\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String getEditPage(HttpServletRequest request,Long id,String categoryRoot) {\n\t\tEFmanualCategory category = categoryService.get(id);\n\t\trequest.setAttribute(\"category\", category);\n\t\trequest.setAttribute(\"categoryRoot\", categoryRoot);\n\t\treturn \"/eumode/manual/categoryEdit\";\n\t}\n\t\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(EFmanualCategory nobj) {\n\t\t\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tcategoryService.edit(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(EFmanualCategory nobj) {\n\t\t\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tcategoryService.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/getRootCategory\")\n\t@ResponseBody\n\tpublic Json getRootCategory() {\n\t\t\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tList<EFmanualCategory> rootList=categoryService.getByPid((long)0);\n\t\t\t\tj.setObj(rootList);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n}"
  },
  {
    "path": "src/main/java/light/mvc/controller/manual/EFManualContentController.java",
    "content": "package light.mvc.controller.manual;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.manual.EFmanualCategory;\nimport light.mvc.pageModel.manual.EFmanualContent;\nimport light.mvc.pageModel.manual.EFmanualKeyword;\nimport light.mvc.pageModel.sys.EFResourceMeta;\nimport light.mvc.service.manual.EFManualCategoryServiceI;\nimport light.mvc.service.manual.EFManualContentServiceI;\nimport light.mvc.service.manual.EFManualKeywordServiceI;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport light.mvc.service.sys.ResourceMetaServiceI;\nimport org.apache.commons.fileupload.disk.DiskFileItem;\nimport org.apache.commons.fileupload.servlet.ServletFileUpload;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.multipart.MultipartFile;\nimport org.springframework.web.multipart.MultipartHttpServletRequest;\nimport org.springframework.web.multipart.commons.CommonsMultipartFile;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.*;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.UUID;\n\n@Controller\n@RequestMapping(\"/manualContent\")\npublic class EFManualContentController extends BaseController{\n\n\t@Autowired\n\tprivate EFManualContentServiceI contentService;\n\t\n\t@Autowired\n\tprivate EFManualCategoryServiceI categoryService;\n\t\n\t@Autowired\n\tprivate EFManualKeywordServiceI keywordService;\n\t\n\t@Autowired\n\tprivate DictionaryServiceI dictService;\n\t\n\t@Autowired\n\tprivate ResourceMetaServiceI resourceMetaService;\n\t\n\t@RequestMapping(\"/getPage\")\n\tpublic String get_news_page() {\n\t\t\n\t\treturn \"/eumode/manual/manual\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid data_grid(EFmanualContent content, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(contentService.dataGrid(content, ph));\n\t\tgrid.setTotal(contentService.count(content, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids,HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\t\n\t\t\t\tEFmanualKeyword kw = new EFmanualKeyword();\n\t\t\t\tkw.setManualContentID(id);\n\n\t\t\t\tList<EFmanualKeyword> keywordlist = keywordService.getAllKeyword(kw);\n\t\t\t\tfor(EFmanualKeyword mk : keywordlist){\n\t\t\t\t\tkeywordService.delete(mk.getAutoID());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tList<EFResourceMeta> attachmentlist = resourceMetaService.get(id, dictService.getDictionary(\"ResourceMetaType\", \"Knowledge\").getId());\n\t\t\t\tif(attachmentlist != null && attachmentlist.size() > 0){\n\t\t\t\t\tfor(EFResourceMeta rm : attachmentlist){\n\t\t\t\t\t\tresourceMetaService.delete(rm.getAutoID());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcontentService.delete(id);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")//知识库添加\n\tpublic String addPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryRoot\", \"Variety\");\n\t\treturn \"/eumode/manual/manualAdd\";\n\t}\n\t\n\t@RequestMapping(\"/addVarietyPage\")//知识库添加\n\tpublic String addVarietyPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryRoot\", \"Variety\");\n\t\treturn \"/eumode/manual/manualAdd\";\n\t}\n\t\n\t@RequestMapping(\"/addIndustryPage\")//知识库添加\n\tpublic String addIndustryPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryRoot\", \"Industry\");\n\t\treturn \"/eumode/manual/manualAdd\";\n\t}\n\t@RequestMapping(\"/addAchievementPage\")//知识库添加\n\tpublic String addAchievementPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryRoot\", \"Achievement\");\n\t\treturn \"/eumode/manual/manualAdd\";\n\t}\n\t@RequestMapping(\"/addTechnologyPage\")//知识库添加\n\tpublic String addTechnologyPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryRoot\", \"Technology\");\n\t\treturn \"/eumode/manual/manualAdd\";\n\t}\n\t\n\t@RequestMapping(\"/detailPage\")//知识库详情\n\tpublic String viewDetailPage(Long id, HttpServletRequest request) {\n\t\tEFmanualKeyword kw = new EFmanualKeyword();\n\t\tkw.setManualContentID(id);\n\t\tList<EFmanualKeyword> keywordlist = keywordService.getAllKeyword(kw);\n\t\tEFmanualContent content = contentService.get(id);\n\t\t\n\t\tEFmanualCategory mc = categoryService.get(content.getManualCategoryID());\n\t\tList<EFmanualCategory> mcList = new ArrayList<EFmanualCategory>();\n\t\twhile(mc != null){\n\t\t\tmcList.add(mc);\n\t\t\tif(mc.getParentID() != null && mc.getParentID() > 0){\n\t\t\t\tmc = categoryService.get(mc.getParentID());\n\t\t\t}\n\t\t\telse{\n\t\t\t\tmc = null;\n\t\t\t}\n\t\t}\n\t\tif(mcList.size() > 0){\n\t\t\tString categoryList = \"\";\n\t\t\tfor(EFmanualCategory category : mcList){\n\t\t\t\tcategoryList += category.getCategoryName() + \"<--\";\n\t\t\t}\n\t\t\tcategoryList = categoryList.substring(0, categoryList.length() - 3);\n\t\t\trequest.setAttribute(\"categoryList\", categoryList);\n\t\t}\n\n\t\tif(content != null){\n\t\t\trequest.setAttribute(\"manualContent\", content);\n\t\t}\n\t\tif(keywordlist != null && keywordlist.size() > 0){\n\t\t\tString keyworddesc = \"\";\n\t\t\tfor(EFmanualKeyword mk : keywordlist){\n\t\t\t\tkeyworddesc += mk.getKeyword() + \"，\";\n\t\t\t}\n\t\t\tkeyworddesc = keyworddesc.substring(0, keyworddesc.length() - 1);\n\t\t\trequest.setAttribute(\"keywordList\", keyworddesc);\n\t\t}\n\t\tif(content.getFilePath() != null && content.getFilePath().length() > 0){\n\t\t\tList<EFResourceMeta> attachmentlist = resourceMetaService.get(content.getAutoID(), dictService.getDictionary(\"ResourceMetaType\", \"Knowledge\").getId());\n\t\t\trequest.setAttribute(\"attachmentList\", attachmentlist);\n\t\t}\n\t\t\n\t\treturn \"/eumode/manual/manualDetail\";\n\t}\n\t\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(EFmanualContent nobj) {\n\t\t//System.out.println(\"addnews\");\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\n\t\t\t    nobj.setCategoryCode(categoryService.get(nobj.getManualCategoryID()).getCategoryCode());\t\n\t\t\t    \n\t\t\t    Long manualID = null;\n\t\t\t    if(nobj.getAttachmentContent() != null && nobj.getAttachmentContent().length() > 0){\n\t\t\t    \tList<EFResourceMeta> rmlist = new ArrayList<EFResourceMeta>();\n\t\t\t    \tString filenamelist = \"\";\n\t\t\t    \tString[] attachmentList = nobj.getAttachmentContent().split(\";\");\n\t\t\t\t\tfor(String attachment : attachmentList)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(attachment.length() == 0)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tString[] arrayList = attachment.split(\"\\\\^\");\n\t\t\t\t\t\tString attachmentName = arrayList[0];\n\t\t\t\t\t\tString attachmentPath = arrayList[1];\n\t\t\t\t\t\tfilenamelist += attachmentName + \";\";\n\n\t\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"Knowledge\").getId());\n\t\t\t\t\t\trm.setMetaPath(attachmentPath);\n\t\t\t\t\t\trm.setMetaDescription(attachmentName);\n\t\t\t\t\t\trmlist.add(rm);\n\t\t\t\t\t}\n\t\t\t\t\tif(filenamelist.length() > 0){\n\t\t\t\t\t\tfilenamelist = filenamelist.substring(0, filenamelist.length() - 1);\n\t\t\t\t\t}\n\t\t\t\t\tnobj.setFilePath(filenamelist);\n\t\t\t\t\tnobj.setContent(\"\");\n\t\t\t\t\t\n\t\t\t\t\tmanualID = contentService.add(nobj);\n\t\t\t\t\t\n\t\t\t\t\tif(manualID > 0 && rmlist.size() > 0){\n\t\t\t\t\t\tfor(EFResourceMeta rm : rmlist){\n\t\t\t\t\t\t\trm.setMetaID(manualID);\n\t\t\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t    else if(nobj.getPageContent() != null && nobj.getPageContent().length() > 0){\n\t\t\t    \tnobj.setContent(java.net.URLDecoder.decode(nobj.getPageContent(), \"UTF-8\"));\n\t\t\t    \t\n\t\t\t    \tmanualID=contentService.add(nobj);\n\t\t\t    }\n\n\t\t\t\tif(manualID != null && manualID > 0)\n\t\t\t\t{\n\t\t\t\t    if(nobj.getKeywordList()!=null&&nobj.getKeywordList().length()>0)\n\t\t\t\t    {\n\t\t\t\t    \tString[] keywordList= nobj.getKeywordList().split(\",\");\n\t\t\t\t    \tfor(String keyword: keywordList)\n\t\t\t\t    \t{\n\t\t\t\t    \t\tEFmanualKeyword mk = new EFmanualKeyword();\n\t\t\t\t    \t\tmk.setCategoryCode(nobj.getCategoryCode());\n\t\t\t\t    \t\tmk.setCategoryID(nobj.getManualCategoryID());\n\t\t\t\t    \t\tmk.setKeyword(keyword);\n\t\t\t\t    \t\tmk.setManualContentID(manualID);\n\t\t\t\t    \t\tkeywordService.add(mk);\n\t\t\t\t    \t}\n\t\t\t\t    }\n\t\t\t\t    /*\n\t\t\t\t\tif(nobj.getAttachmentContent() != null && nobj.getAttachmentContent().length() > 0){\n\t\t\t\t\t\tString[] attachmentList = nobj.getAttachmentContent().split(\";\");\n\t\t\t\t\t\tfor(String attachment : attachmentList)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(attachment.length() == 0)\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tString[] arrayList = attachment.split(\"\\\\^\");\n\t\t\t\t\t\t\tString attachmentName = arrayList[0];\n\t\t\t\t\t\t\tString attachmentPath = arrayList[1];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\t\t\t\t\trm.setMetaID(manualID);\n\t\t\t\t\t\t\trm.setMetaPath(attachmentPath);\n\t\t\t\t\t\t\trm.setMetaDescription(attachmentName);\n\t\t\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t*/\n\t\t\t\t}\n\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t\n\t\n\t//允许上传的文件后缀\n\tprivate static String fileExt = \"jpg,jpeg,bmp,gif,png,pdf\";\n\t//上传文件的大小限制，10M\n\tprivate static Long maxSize = 10485760L;  \t\t\t\t\t\n\t// 0:不建目录 1:按天存入目录 2:按月存入目录 3:按扩展名存目录 建议使用按天存  \n    private static String dirType = \"1\";  \n    //上传文件存储目录\n    private static String baseAttachmentDir = \"/uploadfile/manual_attachment/\";\n    \n    /*\n     * 上传文件操作\n\t * @param request, response\n\t * @return\n     * */\n\t@RequestMapping(\"/getUploadFile\")\n\t@ResponseBody\n\tpublic void getUploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException\n\t{\n\t\tresponse.setContentType(\"text/html; charset=UTF-8\");  \n        response.setHeader(\"Cache-Control\", \"no-cache\");  \n        \n        String err = \"\";  \n        String newFileName = \"\";  \n        //System.out.println(\"up\");\n\n        if (\"application/octet-stream\".equals(request.getContentType())) { //HTML 5 上传\n            try {\n                String dispoString = request.getHeader(\"Content-Disposition\");\n                int iFindStart = dispoString.indexOf(\"name=\\\"\")+6;\n                int iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n \n                iFindStart = dispoString.indexOf(\"filename=\\\"\")+10;\n                iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n                String sFileName = dispoString.substring(iFindStart, iFindEnd);\n \n                int i = request.getContentLength();\n                byte buffer[] = new byte[i];\n                int j = 0;\n                while(j < i) { //获取表单的上传文件\n                    int k = request.getInputStream().read(buffer, j, i-j);\n                    j += k;\n                }\n \n                if (buffer.length == 0) { //文件是否为空\n                    printInfo(response, \"上传文件不能为空\", \"\");\n                    return;\n                }\n                if (maxSize > 0 && buffer.length > maxSize) { //检查文件大小\n                    printInfo(response, \"上传文件的大小超出限制\", \"\");\n                    return;\n                }\n \n                String filepathString = getSaveFilePath(sFileName, request, response);\n                if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n \n                //System.out.println(\"newFileName:\" + request.getSession().getServletContext().getRealPath(\"\") + filepathString);  \n                OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n                out.write(buffer);\n                out.close();\n                \n                newFileName = request.getContextPath() + filepathString;\n            } catch (Exception ex) {\n                System.out.println(ex.getMessage());\n                newFileName = \"\";\n                err = \"错误: \" + ex.getMessage();\n            }\n        }\n        else{\n        \tBoolean mulipart = ServletFileUpload.isMultipartContent(request);\n        \tif(!mulipart)\n        \t{\n        \t\tprintInfo(response, \"上传格式错误\", \"\");\n                return;\n        \t}\n        \t//以下部分供上传附件使用\n        \tMultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;\n            List<MultipartFile> fileList = multipartRequest.getFiles(\"Filedata\");\n            \n        \ttry {\n        \t\tfor (MultipartFile mf : fileList) {\n                    if(mf.isEmpty()){  \n                    \tcontinue;\n                    }\n                    CommonsMultipartFile cf= (CommonsMultipartFile)mf;\n                    DiskFileItem fi = (DiskFileItem)cf.getFileItem();\n                    String fileNameLong = fi.getName();\t//获取文件上传路径名称\n                    fileNameLong = fileNameLong.replaceAll(\"^\", \"\");\n                \t\n                \tif (mf.getSize() == 0) { //文件是否为空\n                        printInfo(response, \"上传文件不能为空\", \"\");\n                        return;\n                    }\n                    if (maxSize > 0 && mf.getSize() > maxSize) { //检查文件大小\n                        printInfo(response, \"上传文件的大小超出限制\", \"\");\n                        return;\n                    }\n\n                    String filepathString = getSaveFilePath(fileNameLong, request, response);\n                    if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n                    \n                    OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n                    out.write(mf.getBytes());\n                    out.close();\n                    \n                    newFileName += fileNameLong + \"^\" + request.getContextPath() + filepathString + \";\";\n                } \n            } catch (Exception ex) {\n                System.out.println(ex.getMessage());\n                newFileName = \"\";\n                err = \"错误: \" + ex.getMessage();\n            }\n        }\n\n        printInfo(response, err, newFileName);  \n\t}\n\t\n\tprivate String getSaveFilePath(String sFileName, HttpServletRequest request, HttpServletResponse response) throws IOException {\n\t\t/*获取文件扩展名*/  \n        /*索引加1的效果是只取xxx.jpg的jpg*/  \n        String extensionName = sFileName.substring(sFileName.lastIndexOf(\".\") + 1);  \n        extensionName = extensionName.toLowerCase();\n        //System.out.println(\"extensionName:\" + extensionName);  \n    \t\n        /*检查文件类型*/  \n        if ((\",\" + fileExt.toLowerCase() + \",\").indexOf(\",\" + extensionName + \",\") < 0){  \n            printInfo(response, \"不允许上传此类型的文件\", \"\");  \n            return \"不允许上传此类型的文件\";  \n        }  \n        \n        //0:不建目录, 1:按天存入目录, 2:按月存入目录, 3:按扩展名存目录.建议使用按天存.  \n        String fileFolder = \"\";  \n        if (dirType.equalsIgnoreCase(\"1\"))  \n            fileFolder = new SimpleDateFormat(\"yyyyMMdd\").format(new Date());\n        if (dirType.equalsIgnoreCase(\"2\"))  \n            fileFolder = new SimpleDateFormat(\"yyyyMM\").format(new Date());  \n        if (dirType.equalsIgnoreCase(\"3\"))  \n            fileFolder = extensionName;  \n        \n        /*文件存储的相对路径*/ \n        String saveDirPath = \"\";\n        saveDirPath = baseAttachmentDir + fileFolder + \"/\";\n        //System.out.println(\"saveDirPath:\" + saveDirPath);  \n          \n        /*文件存储在容器中的绝对路径*/  \n        String saveFilePath = request.getSession().getServletContext().getRealPath(\"\") + saveDirPath;  \n        //System.out.println(\"saveFilePath:\" + saveFilePath);  \n                      \n        /*构建文件目录以及目录文件*/  \n        File fileDir = new File(saveFilePath);  \n        if (!fileDir.exists()) {fileDir.mkdirs();}  \n        \n        /*重命名文件*/  \n        String filename = UUID.randomUUID().toString();  \n        \n        return saveDirPath + filename + \".\" + extensionName;\n    }\n\t\n\t /** \n     * 使用I/O流输出 json格式的数据 \n     * @param response \n     * @param err \n     * @param newFileName \n     * @throws IOException \n     */  \n    private void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {  \n        PrintWriter out = response.getWriter();  \n        //String filename = newFileName.substring(newFileName.lastIndexOf(\"/\") + 1);  \n        out.println(\"{\\\"err\\\":\\\"\" + err + \"\\\",\\\"msg\\\":\\\"\" + newFileName + \"\\\"}\");  \n        out.flush();  \n        out.close();  \n    }  \n}\n\n\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/news/EFCategoryController.java",
    "content": "package light.mvc.controller.news;\n\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.news.EFCategory;\nimport light.mvc.pageModel.sys.Dictionary;\nimport light.mvc.service.news.EFCategoryServiceI;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n\n@Controller\n@RequestMapping(\"/category\")\npublic class EFCategoryController extends BaseController{\n\n\t@Autowired\n\tprivate EFCategoryServiceI categoryService;\n\t\n\t@Autowired\n\tprivate DictionaryServiceI dictService;\n\t\n\t/**\n\t * 跳转到列表页面\n\t * @return\n\t */\n\t@RequestMapping(\"/getPage\")\n\tpublic String categoryPage(HttpServletRequest request) {\n\t\tList<Dictionary> typeList = dictService.combox(\"NewsCategoryType\");\n\t\trequest.setAttribute(\"typeList\", typeList);\n\t\t\n\t\treturn \"/eumode/news/category\";\n\t}\n\t\n\t/**\n\t * 获取列表数据\n\t * @param category\n\t * @param ph\n\t * @return\n\t */\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid dataGrid(EFCategory category, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\t\n\t\tList<EFCategory> list = categoryService.dataGrid(category, ph);\n\t\tfor(EFCategory t : list){\n\t\t\tt.setTypeDesc(dictService.get(t.getType()).getText());\n\t\t}\n\t\tgrid.setRows(list);\n\t\tgrid.setTotal(categoryService.count(category, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids, HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tcategoryService.delete(id,request);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t/**\n\t * 跳转到新增页面\n\t * @param request\n\t * @return\n\t */\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage(HttpServletRequest request) {\n\t\tList<Dictionary> typeList = dictService.combox(\"NewsCategoryType\");\n\t\trequest.setAttribute(\"typeList\", typeList);\n\t\t\n\t\treturn \"/eumode/news/categoryAdd\";\n\t}\n\t\n\t/**\n\t * 新增操作\n\t * @param nobj\n\t * @return\n\t */\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(EFCategory category) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tcategoryService.add(category);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t/**\n\t * 跳转到编辑页面\n\t * @param request\n\t * @param id\n\t * @return\n\t */\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request, Long id) {\n\t\tEFCategory category = categoryService.get(id);\n\t\trequest.setAttribute(\"category\", category); \n\t\t\n\t\tList<Dictionary> typeList = dictService.combox(\"NewsCategoryType\");\n\t\trequest.setAttribute(\"typeList\", typeList);\n\t\t\n\t\treturn \"/eumode/news/categoryEdit\";\n\t}\n\t\n\t/**\n\t * 更新操作\n\t * @param category\n\t * @return\n\t */\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json update(EFCategory category) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tcategoryService.edit(category);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"编辑成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/news/EFNewsController.java",
    "content": "package light.mvc.controller.news;\n\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.news.EFCategory;\nimport light.mvc.pageModel.news.EFNews;\nimport light.mvc.pageModel.sys.EFResourceMeta;\nimport light.mvc.service.news.EFCategoryServiceI;\nimport light.mvc.service.news.EFNewsServiceI;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport light.mvc.service.sys.ResourceMetaServiceI;\nimport org.apache.commons.fileupload.disk.DiskFileItem;\nimport org.apache.commons.fileupload.servlet.ServletFileUpload;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.multipart.MultipartFile;\nimport org.springframework.web.multipart.MultipartHttpServletRequest;\nimport org.springframework.web.multipart.commons.CommonsMultipartFile;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.*;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.UUID;\n\n\n@Controller\n@RequestMapping(\"/news\")\npublic class EFNewsController extends BaseController{\n\n\t@Autowired\n\tprivate EFNewsServiceI newsService;\n\t\n\t@Autowired\n\tprivate EFCategoryServiceI categoryService;\n\t\n\t@Autowired\n\tprivate DictionaryServiceI dictService;\n\t\n\t@Autowired\n\tprivate ResourceMetaServiceI resourceMetaService;\n\t\n\t/**\n\t * 跳转到列表页面\n\t * @return\n\t */\n\t@RequestMapping(\"/newsPage\")\n\tpublic String get_news_page(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryTypeID\", dictService.getDictionary(\"NewsCategoryType\", \"News\").getId());\n\t\trequest.setAttribute(\"categoryList\", getCategoryByTypeId(dictService.getDictionary(\"NewsCategoryType\", \"News\").getId()));\n\t\t\n\t\treturn \"/eumode/news/news\";\n\t}\n\t\n\t@RequestMapping(\"/informationPage\")\n\tpublic String get_information_page(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryTypeID\", dictService.getDictionary(\"NewsCategoryType\", \"Information\").getId());\n\t\trequest.setAttribute(\"categoryList\", getCategoryByTypeId(dictService.getDictionary(\"NewsCategoryType\", \"Information\").getId()));\n\t\t\n\t\treturn \"/eumode/news/news\";\n\t}\n\t\n\t@RequestMapping(\"/reportPage\")\n\tpublic String get_report_page(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryTypeID\", dictService.getDictionary(\"NewsCategoryType\", \"Report\").getId());\n\t\trequest.setAttribute(\"categoryList\", getCategoryByTypeId(dictService.getDictionary(\"NewsCategoryType\", \"Report\").getId()));\n\t\t\t\t\n\t\treturn \"/eumode/news/news\";\n\t}\n\t\n\t@RequestMapping(\"/baseConstructionPage\")\n\tpublic String get_baseConstruction(HttpServletRequest request) {\n\t\trequest.setAttribute(\"categoryTypeID\", dictService.getDictionary(\"NewsCategoryType\", \"BaseConstruction\").getId());\n\t\trequest.setAttribute(\"categoryList\", getCategoryByTypeId(dictService.getDictionary(\"NewsCategoryType\", \"BaseConstruction\").getId()));\n\t\t\n\t\treturn \"/eumode/news/news\";\n\t}\n\t\n\tprivate List<EFCategory> getCategoryByTypeId(Long id){\n\t\tEFCategory c = new EFCategory();\n\t\tc.setType(id);\n\t\tList<EFCategory> categoryList = categoryService.getAllData(c);\n\t\treturn categoryList;\n\t}\n\t\n\t/**\n\t * 获取列表数据\n\t * @param news\n\t * @param ph\n\t * @return\n\t */\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid data_grid(EFNews news, Integer selectPersonal, PageFilter ph,HttpServletRequest request) {\n\t\tGrid grid = new Grid();\n\t\t\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(\"sessionInfo\");\n\t\tnews.setPersonalID(sessionInfo.getId());\t//默认只搜索出本人添加的记录\n\t\tif(selectPersonal != null && selectPersonal == 1){\n\t\t\t//搜出全部人添加的记录\n\t\t\tnews.setPersonalID(null);\n\t\t}\n\n\t\tList<EFNews> list = newsService.dataGrid(news, ph);\n\t\tfor(EFNews t : list){\n\t\t\tt.setStatusDesc(dictService.get(t.getStatus()).getText());\n\t\t\tt.setCategoryName(categoryService.get(t.getCategoryID()).getCategoryName());\n\t\t}\n\t\tgrid.setRows(list);\n\t\tgrid.setTotal(newsService.count(news,ph));\n\t\treturn grid;\n\t}\n\t\n\t/**\n\t * 删除操作\n\t * @param ids\n\t * @param request\n\t * @return\n\t */\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids,HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tnewsService.delete(id);\n\t\t\t\t\n\t\t\t\t//删除相关附件\n\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\t\trm.setMetaID(id);\n\t\t\t\tList<EFResourceMeta> list = resourceMetaService.dataGrid(rm);\n\t\t\t\tfor(EFResourceMeta t : list){\n\t\t\t\t\tresourceMetaService.delete(t.getAutoID());\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t/**\n\t * 删除附件操作\n\t * @param ids\n\t * @param request\n\t * @return\n\t */\n\t@RequestMapping(\"/deleteAttachment\")\n\t@ResponseBody\n\tpublic Json deleteAttachment(String id, String newsid, HttpServletRequest request){\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\t//删除相关附件\n\t\t\tEFResourceMeta rm = resourceMetaService.get(Long.parseLong(id));\n\t\t\tif(rm.getType()==dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId() \n\t\t\t\t\t&& rm.getMetaID() == Long.parseLong(newsid)){\n\t\t\t\tresourceMetaService.delete(rm.getAutoID());\n\t\t\t\tj.setMsg(\"删除附件成功！\");\n\t\t\t\tj.setSuccess(true);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tj.setMsg(\"没有权限删除该附件！\");\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t/**\n\t * 跳转到新增页面\n\t * @param request\n\t * @return\n\t */\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage(Long categoryTypeID, HttpServletRequest request) {\n\t\tEFCategory c = new EFCategory();\n\t\tc.setType(categoryTypeID);\n\t\tList<EFCategory> categories = categoryService.getAllData(c);\n\t\tfor(EFCategory t:categories){\n\t\t\tt.setTypeDesc(dictService.get(t.getType()).getText());\n\t\t}\n\t\trequest.setAttribute(\"categories\", categories);\n\t\tif(categoryTypeID == dictService.getDictionary(\"NewsCategoryType\", \"Information\").getId()){\n\t\t\t//通知公告才允许上传附件\n\t\t\trequest.setAttribute(\"allowAttachment\", true);\n\t\t}\n\t\treturn \"/eumode/news/newsAdd\";\n\t}\n\t\n\n\t/**\n\t * 新增操作\n\t * @param nobj\n\t * @return\n\t */\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(EFNews news, HttpServletRequest request) {\n\t\tJson j = new Json();\n\t\t//添加额外信息\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(\"sessionInfo\");\n\t\tnews.setPersonalID(sessionInfo.getId());//发布者ID\n\t\tnews.setAuthor(sessionInfo.getName());//作者\n\t\tnews.setReadCount(0);//浏览次数默认为0\n\t\tnews.setStatus(dictService.getDictionary(\"NewsContentStatus\", \"Edit\").getId());//17:编辑 | 18：发布\n\t\t\n\t\ttry {\n\t\t\tString fileName = generateTmpArticleFileName(sessionInfo.getId().toString(),request);\n\t\t\tString saveFilePath = request.getSession().getServletContext().getRealPath(\"\");\n\t\t\twriteContentToFile(news.getPageContent(), saveFilePath + fileName);\n\t\t\tnews.setContent(fileName);\n\t\t\tLong newsId = newsService.add(news);\n\t\t\tif(newsId != null)\n\t\t\t{\n\t\t\t\tif(news.getAttachmentContent() != null && news.getAttachmentContent().length() > 0){\n\t\t\t\t\tString[] attachmentList = news.getAttachmentContent().split(\";\");\n\t\t\t\t\tfor(String attachment : attachmentList)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(attachment.length() == 0)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tString[] arrayList = attachment.split(\"\\\\^\");\n\t\t\t\t\t\tString attachmentName = arrayList[0];\n\t\t\t\t\t\tString attachmentPath = arrayList[1];\n\t\t\t\t\t\t\n\t\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\t\t\t\trm.setMetaID(newsId);\n\t\t\t\t\t\trm.setMetaPath(attachmentPath);\n\t\t\t\t\t\trm.setMetaDescription(attachmentName);\n\t\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"保存成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\t\n\t\treturn j;\n\t}\n\n\t/**\n\t * 跳转到详细页面\n\t * @param id\n\t * @return\n\t */\n\t@RequestMapping(\"detailPage\")\n\tpublic String detailPage(Long id, HttpServletRequest request){\n\t\tEFNews news = newsService.get(id);\n\t\tif(news != null)\n\t\t{\n\t\t\tString saveFilePath = request.getSession().getServletContext().getRealPath(\"\");\n\t\t\tString fileName = news.getContent();\n\t\t\ttry\n\t\t\t{\n\t\t\t\tnews.setPageContent(readContentFromFile(saveFilePath + fileName));\n\t\t\t}catch(Exception ex){\n\t\t\t\t\n\t\t\t}\n\t\t\trequest.setAttribute(\"news\", news);\n\t\t\tEFCategory category = categoryService.get(news.getCategoryID());\n\t\t\trequest.setAttribute(\"category\", category);\n\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\trm.setMetaID(id);\n\t\t\tList<EFResourceMeta> list = resourceMetaService.dataGrid(rm);\n\t\t\tif(list.size() > 0)\n\t\t\t{\n\t\t\t\trequest.setAttribute(\"attachmentList\", list);\n\t\t\t}\n\t\t\treturn \"/eumode/news/newsDetail\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tList<EFCategory> categories = categoryService.getAllData(null);\n\t\t\trequest.setAttribute(\"categories\", categories);\n\t\t\treturn \"/eumode/news/newsAdd\";\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * 跳转到编辑页面\n\t * @param id\n\t * @return\n\t */\n\t@RequestMapping(\"editPage\")\n\tpublic String editPage(Long id, HttpServletRequest request){\t\t\n\t\tEFNews news = newsService.get(id);\n\t\tif(news != null)\n\t\t{\n\t\t\tEFCategory category = categoryService.get(news.getCategoryID());\n\t\t\tEFCategory c = new EFCategory();\n\t\t\tc.setType(category.getType());\n\t\t\t\n\t\t\tList<EFCategory> categories = categoryService.getAllData(c);\n\t\t\tfor(EFCategory t:categories){\n\t\t\t\tt.setTypeDesc(dictService.get(t.getType()).getText());\n\t\t\t}\n\t\t\trequest.setAttribute(\"categories\", categories);\n\t\t\t\n\t\t\tif(category.getType() == dictService.getDictionary(\"NewsCategoryType\", \"Information\").getId()){\n\t\t\t\t//通知公告才允许上传附件\n\t\t\t\trequest.setAttribute(\"allowAttachment\", true);\n\t\t\t\t\n\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\t\trm.setMetaID(id);\n\t\t\t\tList<EFResourceMeta> list = resourceMetaService.dataGrid(rm);\n\t\t\t\tif(list.size() > 0)\n\t\t\t\t{\n\t\t\t\t\trequest.setAttribute(\"attachmentList\", list);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tString saveFilePath = request.getSession().getServletContext().getRealPath(\"\");\n\t\t\tString fileName = news.getContent();\n\t\t\ttry\n\t\t\t{\n\t\t\t\tnews.setPageContent(readContentFromFile(saveFilePath + fileName));\n\t\t\t}catch(Exception ex){\n\t\t\t\t\n\t\t\t}\n\t\t\trequest.setAttribute(\"news\", news);\n\t\t\trequest.setAttribute(\"cate\", category);\n\n\t\t\treturn \"/eumode/news/newsEdit\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn \"/eumode/news/newsAdd\";\n\t\t}\n\t}\n\t\n\t/**\n\t * 更新操作\n\t * @param nobj\n\t * @return\n\t */\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(EFNews news, HttpServletRequest request) {\n\t\tJson j = new Json();\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(\"sessionInfo\");\n\t\tEFNews oldnews = newsService.get(news.getAutoID());\n\t\ttry {\n\t\t\tString fileName = oldnews.getContent();\n\t\t\tString saveFilePath = request.getSession().getServletContext().getRealPath(\"\");\n\t\t\twriteContentToFile(news.getPageContent(), saveFilePath + fileName);\n\t\t\tnews.setContent(oldnews.getContent());\n\t\t\tnewsService.edit(news);\n\t\t\tif(news.getAttachmentContent() != null && news.getAttachmentContent().length() > 0){\n\t\t\t\tString[] attachmentList = news.getAttachmentContent().split(\";\");\n\t\t\t\tfor(String attachment : attachmentList)\n\t\t\t\t{\n\t\t\t\t\tif(attachment.length() == 0)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tString[] arrayList = attachment.split(\"\\\\^\");\n\t\t\t\t\tString attachmentName = arrayList[0];\n\t\t\t\t\tString attachmentPath = arrayList[1];\n\t\t\t\t\t\n\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\trm.setType(dictService.getDictionary(\"ResourceMetaType\", \"NewsInformation\").getId());\n\t\t\t\t\trm.setMetaID(news.getAutoID());\n\t\t\t\t\trm.setMetaPath(attachmentPath);\n\t\t\t\t\trm.setMetaDescription(attachmentName);\n\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t}\n\t\t\t}\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/publish\")\n\t@ResponseBody\n\tpublic Json publish(Long id, HttpServletRequest request){\n\t\tJson j = new Json();\n\t\tLong publishFlagVal = dictService.getDictionary(\"NewsContentStatus\", \"Publish\").getId();\n\t\ttry {\n\t\t\tString saveFilePath = request.getSession().getServletContext().getRealPath(\"\");\n\t\t\tEFNews news = newsService.get(id);\n\t\t\tString fileName = news.getContent();\n\t\t\tString pageContent = readContentFromFile(saveFilePath + fileName);\n\t\t\tpageContent = java.net.URLDecoder.decode(pageContent, \"UTF-8\");\n\t\t\t\n\t\t\tString template = \"<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'><title>%s</title></head><body>%s</body></html>\";\n\t\t\tpageContent = String.format(template, news.getTitle(), pageContent);\n\t\t\tString webFileName = \"\";\n\t\t\tif(news.getWebPath() == null || news.getWebPath().length() == 0){\n\t\t\t\twebFileName = generateWebSitePath(request);\n\t\t\t}\n\t\t\telse{\n\t\t\t\twebFileName = news.getWebPath();\n\t\t\t}\n\t\t\t\n\t\t\twriteContentToFile(pageContent, saveFilePath + webFileName);\n\t\t\t\n\t\t\tnews.setWebPath(webFileName);\n\t\t\tnews.setStatus(publishFlagVal);\n\t\t\tnewsService.publish(news);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"发布成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/unPublish\")\n\t@ResponseBody\n\tpublic Json unPublish(Long id){\n\t\tJson j = new Json();\n\t\tLong unPublishFlagVal = dictService.getDictionary(\"NewsContentStatus\", \"Edit\").getId();\n\t\tEFNews news = newsService.get(id);\n\t\ttry {\n\t\t\tnews.setStatus(unPublishFlagVal);\n\t\t\tnewsService.unPublish(news);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"撤回成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t//允许上传的文件后缀\n\tprivate static String fileExt = \"jpg,jpeg,bmp,gif,png,doc,docx,xls,xlsx,pdf\";\n\t//上传文件的大小限制，5M\n\tprivate static Long maxSize = 5242880L;  \t\t\t\t\t\n\t// 0:不建目录 1:按天存入目录 2:按月存入目录 3:按扩展名存目录 建议使用按天存  \n    private static String dirType = \"1\";  \n    //上传文件存储目录\n    private static String baseImageDir = \"/uploadfile/article_image/\";\n  //上传文件存储目录\n    private static String baseAttachmentDir = \"/uploadfile/article_attachment/\";\n    \n    /*\n     * 上传文件操作\n\t * @param request, response\n\t * @return\n     * */\n\t@RequestMapping(\"/getUploadFile\")\n\t@ResponseBody\n\tpublic void getUploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException\n\t{\n\t\tresponse.setContentType(\"text/html; charset=UTF-8\");  \n        response.setHeader(\"Cache-Control\", \"no-cache\");  \n        \n        String err = \"\";  \n        String newFileName = \"\";  \n\n        if (\"application/octet-stream\".equals(request.getContentType())) { //HTML 5 上传\n            try {\n                String dispoString = request.getHeader(\"Content-Disposition\");\n                int iFindStart = dispoString.indexOf(\"name=\\\"\")+6;\n                int iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n \n                iFindStart = dispoString.indexOf(\"filename=\\\"\")+10;\n                iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n                String sFileName = dispoString.substring(iFindStart, iFindEnd);\n \n                int i = request.getContentLength();\n                byte buffer[] = new byte[i];\n                int j = 0;\n                while(j < i) { //获取表单的上传文件\n                    int k = request.getInputStream().read(buffer, j, i-j);\n                    j += k;\n                }\n \n                if (buffer.length == 0) { //文件是否为空\n                    printInfo(response, \"上传文件不能为空\", \"\");\n                    return;\n                }\n                if (maxSize > 0 && buffer.length > maxSize) { //检查文件大小\n                    printInfo(response, \"上传文件的大小超出限制\", \"\");\n                    return;\n                }\n \n                String filepathString = getSaveFilePath(sFileName, request, response, 1);\n                if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n \n                //System.out.println(\"newFileName:\" + request.getSession().getServletContext().getRealPath(\"\") + filepathString);  \n                OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n                out.write(buffer);\n                out.close();\n                \n                newFileName = request.getContextPath() + filepathString;\n            } catch (Exception ex) {\n                System.out.println(ex.getMessage());\n                newFileName = \"\";\n                err = \"错误: \" + ex.getMessage();\n            }\n        }\n        else{\n        \tBoolean mulipart = ServletFileUpload.isMultipartContent(request);\n        \tif(!mulipart)\n        \t{\n        \t\tprintInfo(response, \"上传格式错误\", \"\");\n                return;\n        \t}\n        \t//以下部分供上传附件使用\n        \tMultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;\n            List<MultipartFile> fileList = multipartRequest.getFiles(\"Filedata\");\n            \n        \ttry {\n        \t\tfor (MultipartFile mf : fileList) {\n                    if(mf.isEmpty()){  \n                    \tcontinue;\n                    }\n                    CommonsMultipartFile cf= (CommonsMultipartFile)mf;\n                    DiskFileItem fi = (DiskFileItem)cf.getFileItem();\n                    String fileNameLong = fi.getName();\t//获取文件上传路径名称\n                    fileNameLong = fileNameLong.replaceAll(\"^\", \"\");\n                \t\n                \tif (mf.getSize() == 0) { //文件是否为空\n                        printInfo(response, \"上传文件不能为空\", \"\");\n                        return;\n                    }\n                    if (maxSize > 0 && mf.getSize() > maxSize) { //检查文件大小\n                        printInfo(response, \"上传文件的大小超出限制\", \"\");\n                        return;\n                    }\n\n                    String filepathString = getSaveFilePath(fileNameLong, request, response, 2);\n                    if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n                    \n                    OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n                    out.write(mf.getBytes());\n                    out.close();\n                    \n                    newFileName += fileNameLong + \"^\" + request.getContextPath() + filepathString + \";\";\n                } \n            } catch (Exception ex) {\n                System.out.println(ex.getMessage());\n                newFileName = \"\";\n                err = \"错误: \" + ex.getMessage();\n            }\n        }\n\n        printInfo(response, err, newFileName);  \n\t}\n\t\n\tprivate String getSaveFilePath(String sFileName, HttpServletRequest request, HttpServletResponse response, int type) throws IOException {\n\t\t/*获取文件扩展名*/  \n        /*索引加1的效果是只取xxx.jpg的jpg*/  \n        String extensionName = sFileName.substring(sFileName.lastIndexOf(\".\") + 1);  \n        extensionName = extensionName.toLowerCase();\n        //System.out.println(\"extensionName:\" + extensionName);  \n    \t\n        /*检查文件类型*/  \n        if ((\",\" + fileExt.toLowerCase() + \",\").indexOf(\",\" + extensionName + \",\") < 0){  \n            printInfo(response, \"不允许上传此类型的文件\", \"\");  \n            return \"不允许上传此类型的文件\";  \n        }  \n        \n        //0:不建目录, 1:按天存入目录, 2:按月存入目录, 3:按扩展名存目录.建议使用按天存.  \n        String fileFolder = \"\";  \n        if (dirType.equalsIgnoreCase(\"1\"))  \n            fileFolder = new SimpleDateFormat(\"yyyyMMdd\").format(new Date());\n        if (dirType.equalsIgnoreCase(\"2\"))  \n            fileFolder = new SimpleDateFormat(\"yyyyMM\").format(new Date());  \n        if (dirType.equalsIgnoreCase(\"3\"))  \n            fileFolder = extensionName;  \n        \n        /*文件存储的相对路径*/ \n        String saveDirPath = \"\";\n        if(type == 1){\n        \t//文章中的图片\n        \tsaveDirPath = baseImageDir + fileFolder + \"/\";\n        }\n        else if(type == 2){\n        \t//文章中的附件\n        \tsaveDirPath = baseAttachmentDir + fileFolder + \"/\";\n        }\n        //System.out.println(\"saveDirPath:\" + saveDirPath);  \n          \n        /*文件存储在容器中的绝对路径*/  \n        String saveFilePath = request.getSession().getServletContext().getRealPath(\"\") + saveDirPath;  \n        //System.out.println(\"saveFilePath:\" + saveFilePath);  \n                      \n        /*构建文件目录以及目录文件*/  \n        File fileDir = new File(saveFilePath);  \n        if (!fileDir.exists()) {fileDir.mkdirs();}  \n        \n        /*重命名文件*/  \n        String filename = UUID.randomUUID().toString();  \n        \n        return saveDirPath + filename + \".\" + extensionName;\n    }\n\t\n\t /** \n     * 使用I/O流输出 json格式的数据 \n     * @param response \n     * @param err \n     * @param newFileName \n     * @throws IOException \n     */  \n    private void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {  \n        PrintWriter out = response.getWriter();  \n        //String filename = newFileName.substring(newFileName.lastIndexOf(\"/\") + 1);  \n        out.println(\"{\\\"err\\\":\\\"\" + err + \"\\\",\\\"msg\\\":\\\"\" + newFileName + \"\\\"}\");  \n        out.flush();  \n        out.close();  \n    }  \n    \n    //未发布的新闻公告文件\n    private static String tmpArticleDir = \"/tmpArticle/\";\n    private static String tmpArticleExt = \".tmparticle\";\n    /** \n     * 创建临时文件名称\n     */ \n    private String generateTmpArticleFileName(String authorid, HttpServletRequest request)\n    {\n    \tString fileFolder = new SimpleDateFormat(\"yyyyMMdd\").format(new Date());\n    \t/*文件存储的相对路径*/  \n        String saveDirPath = tmpArticleDir + authorid + \"/\" + fileFolder + \"/\";  \n        \n        String saveFilePath = request.getSession().getServletContext().getRealPath(\"\") + saveDirPath;\n        \n        /*构建文件目录以及目录文件*/  \n        File fileDir = new File(saveFilePath);  \n        if (!fileDir.exists()) {fileDir.mkdirs();}  \n        \n        /*重命名文件*/  \n        String filename = UUID.randomUUID().toString();  \n\n        return saveDirPath + filename + tmpArticleExt;\n    }\n    \n    /** \n     * 将字符串写入文件\n     * @param 绝对路径\n     */ \n    private void writeContentToFile(String content, String fileName) throws IOException\n    {\n    \ttry\n    \t{\n    \t\tOutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName),\"UTF-8\");\n    \t\tosw.write(content);\n    \t\tosw.close();\n    \t}catch (IOException e) {  \n    \t\te.printStackTrace();  \n    \t}  \n    }\n    \n    /** \n     * 从文件读取字符串\n     * @param 绝对路径\n     */ \n    private String readContentFromFile(String  fileName) throws IOException\n    {\n    \tString content = \"\";\n    \tBufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));\n    \tString data = null;\n    \twhile((data = br.readLine())!=null)\n    \t{\n    \t\tcontent += data; \n    \t}\n    \treturn content;\n    }\n    \n    //发布的新闻公告文件\n    private static String webSitePath = \"/Article/\";\n    /** \n     * 创建html文件名\n     */\n    private String generateWebSitePath(HttpServletRequest request)\n    {\n    \tString fileFolder = new SimpleDateFormat(\"yyyyMMdd\").format(new Date());\n    \t/*文件存储的相对路径*/  \n        String saveDirPath = webSitePath + fileFolder + \"/\";  \n        \n        String saveFilePath = request.getSession().getServletContext().getRealPath(\"\") + saveDirPath;\n        \n        /*构建文件目录以及目录文件*/  \n        File fileDir = new File(saveFilePath);  \n        if (!fileDir.exists()) {fileDir.mkdirs();}  \n        \n        /*重命名文件*/  \n        String filename = new SimpleDateFormat(\"hhmmssSSS\").format(new Date()); \n\n        return saveDirPath + filename + \".html\";\n    }\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/apiSensorController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.sensor.Sensor;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport light.mvc.service.sensor.monitoringNodeServiceI;\nimport light.mvc.service.sensor.pestSensorServiceI;\nimport light.mvc.service.sensor.stationServiceI;\nimport org.apache.http.HttpEntity;\nimport org.apache.http.client.CookieStore;\nimport org.apache.http.client.methods.CloseableHttpResponse;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.client.methods.HttpPost;\nimport org.apache.http.cookie.Cookie;\nimport org.apache.http.impl.client.BasicCookieStore;\nimport org.apache.http.impl.client.CloseableHttpClient;\nimport org.apache.http.impl.client.HttpClients;\nimport org.apache.http.impl.cookie.BasicClientCookie;\nimport org.apache.http.util.EntityUtils;\nimport org.json.JSONArray;\nimport org.json.JSONObject;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.io.IOException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/sensorUpdate\")\npublic class apiSensorController {\n\t@Autowired\n\tprivate monitoringNodeServiceI moniService;\n\t\n\t@Autowired\n\tprivate stationServiceI stationS;\n\t\n\t@Autowired\n\tprivate pestSensorServiceI Service;\n\t\n\t\n\n\t@RequestMapping(\"/updateStation\")\n\t@ResponseBody\n\tpublic Json Update(Long stationId) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\t\n\t\t\tStation station = stationS.get(stationId);\n\t\t\tif(station.getType()!=61)\n\t\t\t{\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"该节点无需更新\");\n\t\t\t\treturn j;\n\t\t\t\t\n\t\t\t}\n\t\t\tDate startUpdateDate = station.getSensorDateUpdate();\n\t\t\tSimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n\t\t\tString startDateStr=dateFormat.format(startUpdateDate);\n\t\t\tstartDateStr=startDateStr.replace(' ', 'T');\n\t\t\t String[] cookiesByLogin=getCookieByLogin(station.getLoginName(),station.getPassword());\n\t\t\t for(String cookieStr:cookiesByLogin)\n\t\t\t {\n\t\t\t\t String[] coookieInfo=cookStringToItemString(cookieStr);\n\t\t\t\t String getStationDateURL=GlobalConstant.caipoStationDateURL+\"?serial=\"+station.getSerialNum().toString()+\"&group=0&limit=100&verb=FromDate&dtfirst=\";\n\t\t\t\t String getData=getStationInfo(getStationDateURL+startDateStr,coookieInfo);  \n\t\t\t\t JSONObject jsonObj = new JSONObject(getData);\n\t\t\t\t Long serialNum=jsonObj.getLong(\"serial_number\");\n\t\t\t\t if(!serialNum.equals(station.getSerialNum()))\n\t\t\t\t {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\t\t\t\t JSONArray array = jsonObj.getJSONArray(\"data\");\n\t\t\t\t\n\t\t\t\t monitoringNode node = new monitoringNode();\n\t\t\t\t node.setStation(stationId);\n\t\t\t\t List<monitoringNode> nodeList= moniService.dataGrid(node, null);\n\t\t\t\t Service.insertApi(array, station,nodeList);\n\t\t\t\t\n\t\t\t\t Sensor sLast = Service.getLastSensor(station.getSerialNum());\t\t\n\t\t\t\t Date lastDate = new Date(sLast.getCreateDate().getTime()+1000);\n\t\t\t\t stationS.updateSensorLastTime(lastDate,stationId);\n\t\t\t }\n\t\t\t \n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"更新成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t\n\tpublic String[] getCookieByLogin(String loginName, String password)\n\t{\n\t\tString[] cookieStr= null;\n\t\tString loginURL= GlobalConstant.caipoLoginURL+\"?\"+GlobalConstant.caipoLoginName+loginName+\"&\"+GlobalConstant.caipoPasswork+password;\n\t\t BasicCookieStore cookieStore = new BasicCookieStore();\n         CloseableHttpClient httpclient = HttpClients.custom()\n                 .setDefaultCookieStore(cookieStore)\n                 .build();\n         try {\n             HttpGet httpget = new HttpGet(loginURL);\n             CloseableHttpResponse response1 = httpclient.execute(httpget);\n             try {\n                 HttpEntity entity = response1.getEntity();\n             \n                 EntityUtils.consume(entity);\n           \n                 List<Cookie> cookies = cookieStore.getCookies();\n               \n                 cookieStr=new String[cookies.size()];\n                 if (cookies.isEmpty()) {\n                     System.out.println(\"cookie is None\");\n                 } else {\n                     for (int i = 0; i < cookies.size(); i++) {\n                       \n                         cookieStr[i]=new String(cookies.get(i).toString() );\n                         System.out.println(\"\\n(  getCookieByLogin(String loginURL) )in cookie i=\"+i+\"     \"+ cookieStr[i]);\n                     }\n                    \n                 }\n             }catch(Exception e){\n            \t System.out.println(e);\n             }finally {\n                 try {\n\t\t\t\t\tresponse1.close();\n\t\t\t\t} catch (IOException e) {\n\t\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\t\te.printStackTrace();\n\t\t\t\t}\n             }\n         }catch(Exception e){\n        \t System.out.println(e);\n         } finally {\n             try {\n\t\t\t\thttpclient.close();\n\t\t\t} catch (IOException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t}\n         }\n\t\treturn cookieStr;\n\t}\n\t\n\t\n    public static String[] cookStringToItemString(String cookieStr){\n    \t\n    \tString temp[]=cookieStr.split(\"]\");\n    \tString dest[]=new String[ temp.length ];\n    \tfor(int i=0; i<temp.length; i++){\n    \t    int start=temp[i].indexOf(\": \");\n    \t    dest[i]=new String( temp[i].substring(start+2) );   \t       \n    \t}    \n    \treturn dest;\n    }\n    \n    public static String getStationInfo(String url,String[] cookieInfo){\n    \t   \n    \tString stationInfo=null;\n    \t\t \n         CookieStore cookieStore2 = new BasicCookieStore();\n         BasicClientCookie cookie2 = new BasicClientCookie(cookieInfo[1], cookieInfo[2]);\n         cookie2.setVersion(Integer.valueOf( cookieInfo[0]) );\n         cookie2.setDomain(cookieInfo[3]);\n         cookie2.setPath(cookieInfo[4]);\n         cookieStore2.addCookie(cookie2);\n         // Set the store\n         CloseableHttpClient httpclient = HttpClients.custom()\n                 .setDefaultCookieStore(cookieStore2)\n                 .build();\n         \n         try{\n         HttpPost get = new HttpPost(url);\n         CloseableHttpResponse response2 = httpclient.execute(get);\n           \n          try{\n        \t   HttpEntity entity2 = response2.getEntity();\n            \n               stationInfo = EntityUtils.toString(entity2,\"utf-8\");\n \t         \n          }finally {\n           response2.close();\n         }\n         }catch(Exception e){\n        \t System.out.println(e);\n         }finally{\n        \t try {\n\t\t\t\thttpclient.close();\n\t\t\t } catch (IOException e) {\n\t\t\t\t// TODO Auto-generated catch block\n\t\t\t\te.printStackTrace();\n\t\t\t}\n         }\n         \n \t    return stationInfo ;\n    }\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/mapController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.service.sys.ResourceServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\n@Controller\n@RequestMapping(\"/map\")\npublic class mapController extends BaseController{\n\n\t@Autowired\n\tprivate ResourceServiceI resourceService;\n\t\n\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/moniNodeController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport com.alibaba.fastjson.JSONObject;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport light.mvc.service.sensor.monitoringNodeServiceI;\nimport light.mvc.service.sensor.pestDataServiceI;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n\n@Controller\n@RequestMapping(\"/pestMoniNode\")\npublic class moniNodeController {\n\t@Autowired\n\tprivate monitoringNodeServiceI moniService;\n\t\n\t@Autowired\n\tprivate pestDataServiceI pestDataService;\n\t\n\t@RequestMapping(\"/getPage\")\n\tpublic String getPage(Model model) {\n\t\tmonitoringNode data = new monitoringNode();\n\t\tdata.setStation(9L);\n\n\t\tPageFilter ph = new PageFilter();\n\t\tph.setPage(1);\n\t\tph.setSort(\"type\");\n\t\tph.setRows(50);\n\t\tph.setOrder(\"asc\");\n\n\t\tList<monitoringNode> monitoringNode = moniService.dataGrid(data, ph);\n\t\tfor(monitoringNode m : monitoringNode){\n\t\t\tmodel.addAttribute(m.getMap(),m.getName());\n\t\t}\n\t\treturn \"/eumode/MoniNode/MoniNodeList\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid dataGrid(monitoringNode data, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\t\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(moniService.dataGrid(data, ph));\n\t\tgrid.setTotal(moniService.count(data, ph));\n\t\treturn grid;\n\t}\n\n\t@RequestMapping(\"/getnodeinfo\")\n\t@ResponseBody\n\tpublic List<monitoringNode> getNodeInfo(@RequestBody JSONObject monitoringNode){\n\n\t\tmonitoringNode data = new monitoringNode();\n\t\tdata.setStation(monitoringNode.getLong(\"station\"));\n\n\t\tPageFilter ph = new PageFilter();\n\t\tph.setPage(1);\n\t\tph.setSort(\"type\");\n\t\tph.setRows(50);\n\t\tph.setOrder(\"asc\");\n\n\t\tList<monitoringNode> monitoringNodeList = moniService.dataGrid(data, ph);\n\t\treturn monitoringNodeList;\n\t}\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids,HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tmoniService.delete(id);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/MoniNode/MoniNodeAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(monitoringNode nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tmoniService.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t/*\n\t@RequestMapping(\"/getMoniNodeInfo\")\n\tpublic String getNodeInfo(HttpServletResponse response,HttpServletRequest request)\n\t{\n\t\tlong nid=Integer.parseInt(request.getParameter(\"idString\"));\n\t\tmonitoringNode n=moniService.get(nid);\n\t\trequest.setAttribute(\"moniNode_info\", n);\n\t\tList<pestData> data= pestDataService.getAlldataFromNodeId(nid);\n\t\trequest.setAttribute(\"node_data\", data);\n\t\treturn \"/admin/pestMoniNode/MoniNodeInfo\";\n\t}\n\t\n\t@RequestMapping(\"/getMoniNodeLocation\")\n\tpublic void getNodeLocation(HttpServletResponse response) throws JSONException//暂时使用该方法\n\t{\n\t\tList<monitoringNode> moniN = moniService.getAllData();\n\t\tPrintWriter out = null;\n\t\tresponse.setContentType(\"text/json\");\n\t\t response.setCharacterEncoding(\"UTF-8\"); \n\t\tJSONArray jsonArray = new JSONArray();\n\n\t\t\n\t\t\n\t\tfor(int i=0;i<moniN.size();i++)\n\t\t{\n\t\t\tJSONObject obj = new JSONObject();\n\t\n\t\t\tmonitoringNode n1=(monitoringNode)moniN.get(i);\n\t\t\tobj.put(\"location_x\", n1.getLocationX());\n\t\t\tobj.put(\"location_y\", n1.getLocationY());\n\t\t\tobj.put(\"moninodeId\", n1.getAutoID());\n\t\t\tobj.put(\"moniNodeName\", n1.getName());\n\t\t\tjsonArray.put(obj);\n\n\t\t}\n\t\n\t\tString nodeJson=jsonArray.toString();\n\t\ttry {\n\t\t\tout = response.getWriter();\n\t\t\tout.write(nodeJson);\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\n\t}\n\t*/\n\t@RequestMapping(\"/getSearchPage\")\n\tpublic String getSearchPage() {\n\t\treturn \"/eumode/pestMoniNode/pestMoniSearch\";\n\t}\n\t\n\t\n\t@RequestMapping(\"/search\")\n\t@ResponseBody\n\tpublic Json search(Object nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\t//Service.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/pestDataController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.pestData;\nimport light.mvc.service.sensor.pestDataServiceI;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\n@Controller\n@RequestMapping(\"/pestData\")\npublic class pestDataController extends BaseController{\n\n\t@Autowired\n\tprivate pestDataServiceI pestDataService;\n\t\n\t@RequestMapping(\"/getPage\")\n\tpublic String getPage() {\n\t\treturn \"/eumode/pestData/pestdata\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid dataGrid(pestData data, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(pestDataService.dataGrid(data, ph));\n\t\tgrid.setTotal(pestDataService.count(data, ph));\n\t\treturn grid;\n\t}\n\t\n\t/*\n\t@RequestMapping(\"/pestSensordataGrid\")\n\t@ResponseBody\n\tpublic  Grid pestSensordataGrid(pestDataWithSensor data, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(Service.PestSensorDataGrid(data, ph));\n\t\tgrid.setTotal(Service.count());\n\t\treturn grid;\n\t}\n\t*/\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tpestDataService.delete(id);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/pestData/pestdataAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(pestData nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tpestDataService.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/getSearchPage\")\n\tpublic String getSearchPage() {\n\t\treturn \"/eumode/pestData/pestdataSearch\";\n\t}\n\t\n\t\n\t@RequestMapping(\"/search\")\n\t@ResponseBody\n\tpublic Json search(Object nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\t//Service.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/sensorController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.Sensor;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.service.sensor.monitoringNodeServiceI;\nimport light.mvc.service.sensor.pestSensorServiceI;\nimport light.mvc.service.sensor.stationServiceI;\nimport org.json.JSONArray;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\n\n@Controller\n@RequestMapping(\"/sensor\")\npublic class sensorController {\n\t@Autowired\n\tprivate pestSensorServiceI Service;\n\t\n\t@Autowired\n\tprivate stationServiceI stationS;\n\t\n\t@Autowired\n\tprivate monitoringNodeServiceI moniService;\n\t\n\t@RequestMapping(\"/getpage\")\n\tpublic String getPage() {\n\t\treturn \"/eumode/sensor/sensordata\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic  Grid dataGrid(Sensor data, PageFilter ph,HttpServletRequest request) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t//\tList<monitoringNode> moniNodeList = null;\n\t\tif(data.getStation()!=null&&data.getStation()!=0)\n\t\t{\t\t\t\n\t\t\tStation s = stationS.get(data.getStation());\n\t\t\tdata.setSerialNum(s.getSerialNum());\n\t//\t\tmonitoringNode node =new monitoringNode();\n\t//\t\tnode.setStation(data.getStation());\n\t//\t\t moniNodeList =moniService.dataGrid(node, ph);\n\t\t\t\n\t\t}\n\t//\trequest.setAttribute(\"moniNodeList\", moniNodeList);\n\t\tgrid.setRows(Service.dataGrid(data, ph));\n\t\tgrid.setTotal(Service.count(data, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(String ids,HttpServletRequest request) {\n\t\tJSONArray jsonIds;\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tjsonIds = new JSONArray(ids);\n\t\t\tfor (int i = 0; i < jsonIds.length(); i++) {\n\t\t\t\tlong id = jsonIds.getLong(i);\n\t\t\t\tService.delete(id,request);\n\t\t\t}\n\t\t\t\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/news/newsAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Sensor nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\tService.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n\t\n\t\n\t@RequestMapping(\"/getSearchPage\")\n\tpublic String getSearchPage() {\n\t\treturn \"/eumode/sensor/sensorSearch\";\n\t}\n\t\n\t\n\t@RequestMapping(\"/search\")\n\t@ResponseBody\n\tpublic Json search(Object nobj) {\n\t\tJson j = new Json();\n\t\t\ttry {\n\t\t\t\t//Service.add(nobj);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\n\t\treturn j;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sensor/stationController.java",
    "content": "package light.mvc.controller.sensor;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.service.base.ServiceException;\nimport light.mvc.service.sensor.stationServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/station\")\npublic class stationController extends BaseController{\n\t\n\t@Autowired\n\tprivate stationServiceI stationS;\n\t\n\t\n\t@RequestMapping(\"/getPage\")\n\tpublic String getPage() {\n\t\treturn \"/eumode/station/station\";\n\t}\n\n\t@RequestMapping(\"/treeGrid\")\n\t@ResponseBody\n\tpublic List<Station> treeGrid()\n\t{\n\t\treturn stationS.treeGrid();\n\t}\n\t\n\t@RequestMapping(\"/tree\")\n\t@ResponseBody\n\tpublic List<Tree> tree(HttpSession session) {\n\t\treturn stationS.tree();\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/station/stationAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Station station) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tstationS.add(station);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"添加成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Station get(Long id) {\n\t\treturn stationS.get(id);\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request,Long id) {\n\t\tStation o = stationS.get(id);\n\t\trequest.setAttribute(\"station\", o);\n\t\treturn \"/eumode/station/pestMoniNodeEdit\";\n\t}\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Station org) throws InterruptedException {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tstationS.edit(org);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tstationS.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (ServiceException e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/DictionaryController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.Dictionary;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/dictionary\")\npublic class DictionaryController extends BaseController {\n\n\t@Autowired\n\tprivate DictionaryServiceI dictionaryService;\n\t\n\t@RequestMapping(\"/manager\")\n\tpublic String manager() {\n\t\treturn \"/eumode/sys/dictionary\";\n\t}\n\t\n\t@RequestMapping(\"/combox\")\n\t@ResponseBody\n\tpublic List<Dictionary> combox(String code) {\n\t\treturn dictionaryService.combox(code);\n\t}\n\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic Grid dataGrid(Dictionary dictionary, PageFilter ph) {\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(dictionaryService.dataGrid(dictionary, ph));\n\t\tgrid.setTotal(dictionaryService.count(dictionary, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"stateList\", GlobalConstant.statelist);\n\t\treturn \"/eumode/sys/dictionaryAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Dictionary dictionary) {\n\t\tJson j = new Json();\n\t\tDictionary dic = dictionaryService.checkUnique(dictionary);\n\t\tif(dic==null){\n\t\t\ttry {\n\t\t\t\tdictionaryService.add(dictionary);\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t}else{\n\t\t\tj.setMsg(\"编码不能重复\");\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tdictionaryService.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Dictionary get(Long id)  {\n\t\treturn dictionaryService.get(id);\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request,Long id) {\n\t\tDictionary dic = dictionaryService.get(id);\n\t\trequest.setAttribute(\"dictionary\", dic);\n\t\trequest.setAttribute(\"stateList\", GlobalConstant.statelist);\n\t\treturn \"/eumode/sys/dictionaryEdit\";\n\t}\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Dictionary dictionary) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tdictionaryService.edit(dictionary);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/DictionarytypeController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Dictionarytype;\nimport light.mvc.service.sys.DictionarytypeServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpSession;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/dictionarytype\")\npublic class DictionarytypeController extends BaseController {\n\n\t@Autowired\n\tprivate DictionarytypeServiceI dictionarytypeService;\n\n\t\n\t@RequestMapping(\"/tree\")\n\t@ResponseBody\n\tpublic List<Tree> tree(HttpSession session) {\n\t\treturn dictionarytypeService.tree();\n\t}\n\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Dictionarytype dictionarytype) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tdictionarytypeService.add(dictionarytype);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"添加成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\tdictionarytypeService.delete(id);\n\t\tj.setMsg(\"删除成功！\");\n\t\tj.setSuccess(true);\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Dictionarytype get(Long id)  {\n\t\treturn dictionarytypeService.get(id);\n\t}\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Dictionarytype dictionarytype) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tdictionarytypeService.edit(dictionarytype);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/IndexController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.sys.User;\nimport light.mvc.service.sys.ResourceServiceI;\nimport light.mvc.service.sys.UserServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\n\n@Controller\n@RequestMapping(\"/admin\")\npublic class IndexController extends BaseController {\n\n\t@Autowired\n\tprivate UserServiceI userService;\n\t\n\t@Autowired\n\tprivate ResourceServiceI resourceService;\n\n\t@RequestMapping(\"/index\")\n\tpublic String index(HttpServletRequest request) {\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_INFO_ADMIN);\n\t\trequest.setAttribute(\"sessionInfo\", sessionInfo); \n\t\tif ((sessionInfo != null) && (sessionInfo.getId() != null)) {\n\t\t\treturn \"/eumode/index\";\n\t\t}\n\t\trequest.setAttribute(\"originUrl\", \"/admin/index\");\n\t\treturn \"/eumode/login\";\n\t}\n\n\t@ResponseBody\n\t@RequestMapping(\"/login\")\n\tpublic Json login(User user, HttpSession session) {\n\t\tJson j = new Json();\n\t\tUser sysuser = userService.login(user);\n\t\tif (sysuser != null) {\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"登陆成功！\");\n\n\t\t\tSessionInfo sessionInfo = new SessionInfo();\n\t\t\tsessionInfo.setId(sysuser.getAutoID());\n\t\t\tsessionInfo.setLoginname(sysuser.getLoginName());\n\t\t\tsessionInfo.setName(sysuser.getRealName());\n\t\t\t// user.setIp(IpUtil.getIpAddr(getRequest()));\n\t\t\tsessionInfo.setResourceList(userService.resourceList(sysuser.getAutoID()));\n\t\t\tsessionInfo.setResourceAllList(resourceService.resourceAllList());\n\t\t\tsession.setAttribute(GlobalConstant.SESSION_INFO_ADMIN, sessionInfo);\n\t\t\tsessionInfo.setSessionId(session.getId());\n//\t\t\t获取管理员的role类型name属性，回传给客户端进行分类，这里我们认为每个管理员的role类型都只有一个\n\t\t\tsessionInfo.setRoleType(sysuser.getRoleNames());\n\t\t\tj.setObj(sessionInfo);\n\t\t} else {\n\t\t\tj.setMsg(\"用户名或密码错误！\");\n\t\t}\n\t\treturn j;\n\t}\n\n\t@ResponseBody\n\t@RequestMapping(\"/logout\")\n\tpublic Json logout(HttpSession session) {\n\t\tJson j = new Json();\n\t\tif (session != null) {\n\t\t\tsession.invalidate();\n\t\t}\n\t\tj.setSuccess(true);\n\t\tj.setMsg(\"注销成功！\");\n\t\treturn j;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/OrganizationController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Organization;\nimport light.mvc.service.base.ServiceException;\nimport light.mvc.service.sys.OrganizationServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/organization\")\npublic class OrganizationController extends BaseController {\n\n\t@Autowired\n\tprivate OrganizationServiceI organizationService;\n\t\n\t@RequestMapping(\"/manager\")\n\tpublic String manager() {\n\t\treturn \"/eumode/sys/organization\";\n\t}\n\n\t@RequestMapping(\"/treeGrid\")\n\t@ResponseBody\n\tpublic List<Organization> treeGrid() {\n\t\treturn organizationService.treeGrid();\n\t}\n\n\t@RequestMapping(\"/tree\")\n\t@ResponseBody\n\tpublic List<Tree> tree(HttpSession session) {\n\t\treturn organizationService.tree();\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/sys/organizationAdd\";\n\t}\n\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Organization organization) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\torganizationService.add(organization);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"添加成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Organization get(Long id) {\n\t\treturn organizationService.get(id);\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request,Long id) {\n\t\tOrganization o = organizationService.get(id);\n\t\trequest.setAttribute(\"organization\", o);\n\t\treturn \"/eumode/sys/organizationEdit\";\n\t}\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Organization org) throws InterruptedException {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\torganizationService.edit(org);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\torganizationService.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (ServiceException e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/PictureCheckCode.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.SessionInfo;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.imageio.ImageIO;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\nimport java.awt.*;\nimport java.awt.image.BufferedImage;\nimport java.io.IOException;\nimport java.util.Random;\n\n@Controller\n@RequestMapping(\"/baseUtil\")\npublic class PictureCheckCode  extends BaseController{\n\n\t  private static final long serialVersionUID = 1L; \n\t  \n\t  /*该方法主要作用是获得随机生成的颜色*/   \n\t    public Color getRandColor(int s,int e){  \n\t        Random random=new Random ();  \n\t        if(s>255) s=255;  \n\t        if(e>255) e=255;  \n\t        int r,g,b;  \n\t        r=s+random.nextInt(e-s);    //随机生成RGB颜色中的r值  \n\t        g=s+random.nextInt(e-s);    //随机生成RGB颜色中的g值  \n\t        b=s+random.nextInt(e-s);    //随机生成RGB颜色中的b值  \n\t        return new Color(r,g,b);  \n\t    }  \n\t    \n\t\t@RequestMapping(\"/getCheckCode\")\n\t\t@ResponseBody\n\t\tpublic void getCheckCode(HttpSession session,HttpServletRequest request, HttpServletResponse response) throws IOException {\n\t\t\tSessionInfo sessionInfo = (SessionInfo) session.getAttribute(GlobalConstant.SESSION_INFO_ADMIN);\n\t\t\t   //设置不缓存图片  \n\t        response.setHeader(\"Pragma\", \"No-cache\");  \n\t        response.setHeader(\"Cache-Control\", \"No-cache\");  \n\t        response.setDateHeader(\"Expires\", 0);  \n\t        //指定生成的响应图片,一定不能缺少这句话,否则错误.  \n\t        response.setContentType(\"image/jpeg\");  \n\t        int width=86,height=22;     //指定生成验证码的宽度和高度\n\t        BufferedImage image = new BufferedImage(width, height,    \n\t                BufferedImage.TYPE_INT_RGB);    \n\t        // 获取图形上下文    \n\t        Graphics g = image.getGraphics();    \n\t        // 生成随机类    \n\t        Random random = new Random();    \n\t        // 设定背景色    \n\t        g.setColor(getRandColor(200, 250));    \n\t        g.fillRect(0, 0, width, height);    \n\t        // 设定字体    \n\t        g.setFont(new Font(\"Times New Roman\", Font.PLAIN, 24));    \n\t        // 画边框    \n\t        g.setColor(getRandColor(160, 200));    \n\t        g.drawRect(0, 0, width - 1, height - 1);    \n\t        // 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到    \n\t        g.setColor(getRandColor(160, 200));    \n\t        for (int i = 0; i < 155; i++) {    \n\t            int x = random.nextInt(width);    \n\t            int y = random.nextInt(height);    \n\t            int xl = random.nextInt(12);    \n\t            int yl = random.nextInt(12);    \n\t            g.drawLine(x, y, x + xl, y + yl);    \n\t        }    \n\t        // 取随机产生的认证码(4位数字)    \n\t        String sRand = \"\";    \n\t        for (int i = 0; i < 4; i++) {    \n\t            String rand = String.valueOf(random.nextInt(10));    \n\t            sRand += rand;    \n\t            // 将认证码显示到图象中    \n\t            g.setColor(new Color(20 + random.nextInt(110), 20 + random    \n\t                    .nextInt(110), 20 + random.nextInt(110)));    \n\t            // 调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成    \n\t            g.drawString(rand, 13 * i + 14, 20);    \n\t        }    \n\t    \n\t        // 将认证码存入SESSION    \n\t        session.setAttribute(\"vcode\", sRand);    \n\t        System.out.println(sRand);\n\t    \n\t        // 图象生效    \n\t        g.dispose();    \n\t        // 输出图象到页面    \n\t        ImageIO.write(image, \"JPEG\", response.getOutputStream());   \n\t\t}\n\t\t\n\t\t@RequestMapping(\"/CheckCode\")\n\t\t@ResponseBody\n\t\tpublic Json checkCode(HttpSession session,String ValidateCode)\n\t\t{\n\t\t\tJson j = new Json();\n\t\t\tString code =(String) session.getAttribute(\"vcode\");\n\t\t\t\n\t\t\tif(ValidateCode.equals(code))\n\t\t\t{\n\t\t\t\tj.setSuccess(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tj.setSuccess(false);\n\t\t\t}\n\t\t\treturn j;\n\t\t}\n\t    \n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/ResourceController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Resource;\nimport light.mvc.service.sys.ResourceServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/resource\")\npublic class ResourceController extends BaseController {\n\n\t@Autowired\n\tprivate ResourceServiceI resourceService;\n\t\n\t@RequestMapping(\"/manager\")\n\tpublic String manager() {\n\t\treturn \"/eumode/sys/resource\";\n\t}\n\n\t@RequestMapping(\"/tree\")\n\t@ResponseBody\n\tpublic List<Tree> tree(HttpSession session) {\n\t\tSessionInfo sessionInfo = (SessionInfo) session.getAttribute(GlobalConstant.SESSION_INFO_ADMIN);\n\t\treturn resourceService.tree(sessionInfo);\n\t}\n\n\t@RequestMapping(\"/allTree\")\n\t@ResponseBody\n\tpublic List<Tree> allTree(boolean flag) {//true获取全部资源,false只获取菜单资源\n\t\treturn resourceService.allTree(flag);\n\t}\n\n\t@RequestMapping(\"/treeGrid\")\n\t@ResponseBody\n\tpublic List<Resource> treeGrid() {\n\t\treturn resourceService.treeGrid();\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Resource get(Long id) {\n\t\treturn resourceService.get(id);\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request,Long id) {\n\t\tResource r = resourceService.get(id);\n\t\trequest.setAttribute(\"resource\", r);\n\t\treturn \"/eumode/sys/resourceEdit\";\n\t}\n\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Resource resource) throws InterruptedException {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tresourceService.edit(resource);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tresourceService.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/sys/resourceAdd\";\n\t}\n\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Resource resource) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tresourceService.add(resource);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"添加成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/RoleController.java",
    "content": "package light.mvc.controller.sys;\n\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Role;\nimport light.mvc.service.sys.RoleServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"/role\")\npublic class RoleController extends BaseController {\n\n\t@Autowired\n\tprivate RoleServiceI roleService;\n\t\n\t@RequestMapping(\"/manager\")\n\tpublic String manager() {\n\t\treturn \"/eumode/sys/role\";\n\t}\n\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic Grid dataGrid(Role role, PageFilter ph) {\n//\t\tspring自动将参数注入到ph对象中\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(roleService.dataGrid(role, ph));\n\t\tgrid.setTotal(roleService.count(role, ph));\n\t\treturn grid;\n\t}\n\t\n\t@RequestMapping(\"/tree\")\n\t@ResponseBody\n\tpublic List<Tree> tree() {\n\t\treturn roleService.tree();\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage() {\n\t\treturn \"/eumode/sys/roleAdd\";\n\t}\n\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(Role role) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\troleService.add(role);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"添加成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\troleService.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic Role get(Long id)  {\n\t\treturn roleService.get(id);\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request, Long id) {\n\t\tRole r = roleService.get(id);\n\t\trequest.setAttribute(\"role\", r);\n\t\treturn \"/eumode/sys/roleEdit\";\n\t}\n\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(Role role) {\n\t\t\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tif(role.getIsdefault()==1)\n\t\t\t{\n\t\t\t\tRole r2=new Role();\n\t\t\t\tr2.setIsdefault(1);\n\t\t\t\tPageFilter ph = new PageFilter();\n\t\t\t\tif(roleService.count(r2, ph)>0)\n\t\t\t\t{\n\t\t\t\t\tj.setSuccess(false);\n\t\t\t\t\tj.setMsg(\"不能存在多于2个默认角色\");\n\t\t\t\t\treturn j;\n\t\t\t\t}\n\t\t\t}\n\t\t\troleService.edit(role);\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/grantPage\")\n\tpublic String grantPage(HttpServletRequest request, Long id) {\n\t\tRole r = roleService.get(id);\n\t\trequest.setAttribute(\"role\", r);\n\t\treturn \"/eumode/sys/roleGrant\";\n\t}\n\n\t@RequestMapping(\"/grant\")\n\t@ResponseBody\n\tpublic Json grant(Role role) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\troleService.grant(role);\n\t\t\tj.setMsg(\"授权成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/controller/sys/UserController.java",
    "content": "package light.mvc.controller.sys;\n\n\nimport com.alibaba.fastjson.JSON;\nimport light.mvc.controller.base.BaseController;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.Grid;\nimport light.mvc.pageModel.base.Json;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.sys.EFResourceMeta;\nimport light.mvc.pageModel.sys.User;\nimport light.mvc.service.base.ServiceException;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport light.mvc.service.sys.ResourceMetaServiceI;\nimport light.mvc.service.sys.UserServiceI;\nimport org.apache.commons.fileupload.disk.DiskFileItem;\nimport org.apache.commons.fileupload.servlet.ServletFileUpload;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.multipart.MultipartFile;\nimport org.springframework.web.multipart.MultipartHttpServletRequest;\nimport org.springframework.web.multipart.commons.CommonsMultipartFile;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.*;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.UUID;\n\n@Controller\n@RequestMapping(\"/user\")\npublic class UserController extends BaseController {\n\n\t@Autowired\n\tprivate UserServiceI userService;\n\t\n\t@Autowired\n\tprivate DictionaryServiceI dictionaryService;\n\t\n\t@Autowired\n\tprivate ResourceMetaServiceI resourceMetaService;\n\n\t\n\t@RequestMapping(\"/manager\")\n\tpublic String manager(HttpServletRequest request) {\n\t\trequest.setAttribute(\"usertypeJson\", JSON.toJSONString(dictionaryService.combox(\"usertype\")));\n\t\treturn \"/eumode/sys/user\";\n\t}\n\t\n\t@RequestMapping(\"/dataGrid\")\n\t@ResponseBody\n\tpublic Grid dataGrid(User user, PageFilter ph) {\n\t\tGrid grid = new Grid();\n\t\tgrid.setRows(userService.dataGrid(user, ph));\n\t\tgrid.setTotal(userService.count(user, ph));\n\t\treturn grid;\n\t}\n\t\n\t\n\t@RequestMapping(\"/editPwdPage\")\n\tpublic String editPwdPage(HttpServletRequest request) {\n\t\treturn \"/eumode/sys/userEditPwd\";\n\t}\n\t\n\t@RequestMapping(\"/editUserPwd\")\n\t@ResponseBody\n\tpublic Json editUserPwd(HttpServletRequest request,String oldPwd, String pwd) {\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_INFO_ADMIN);\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tif(userService.editUserPwd(sessionInfo, oldPwd, pwd)){\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"密码修改成功！\");\n\t\t\t}else{\n\t\t\t\tj.setSuccess(false);\n\t\t\t\tj.setMsg(\"原密码输入错误！\");\n\t\t\t}\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/addPage\")\n\tpublic String addPage(HttpServletRequest request) {\n\t\trequest.setAttribute(\"sexList\", GlobalConstant.sexlist);\n\t\trequest.setAttribute(\"needPublishList\", GlobalConstant.needPublishList);\n\t\treturn \"/eumode/sys/userAdd\";\n\t}\n\t\n\t@RequestMapping(\"/add\")\n\t@ResponseBody\n\tpublic Json add(User user) {\n\t\tJson j = new Json();\n\t\tUser u = userService.getByLoginName(user);\n\t\tif(u!=null){\n\t\t\tj.setMsg(\"用户名已存在!\");\n\t\t}else{\n\t\t\ttry {\n\t\t\t\tLong personalid = userService.add(user);\n\t\t\t\tif(personalid != null && personalid > 0){\n\t\t\t\t\tif(user.getImagePath() != null && user.getImagePath().length() > 0){\n\t\t\t\t\t\tString[] arrayList = user.getImagePath().split(\"\\\\^\");\n\t\t\t\t\t\tString imageName = arrayList[0];\n\t\t\t\t\t\tString imagePath = arrayList[1];\n\t\t\t\t\t\t\n\t\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\t\trm.setType(dictionaryService.getDictionary(\"ResourceMetaType\", \"Expert\").getId());\n\t\t\t\t\t\trm.setMetaID(personalid);\n\t\t\t\t\t\trm.setMetaPath(imagePath);\n\t\t\t\t\t\trm.setMetaDescription(imageName);\n\t\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tj.setSuccess(true);\n\t\t\t\tj.setMsg(\"添加成功！\");\n\t\t\t} catch (Exception e) {\n\t\t\t\tj.setMsg(e.getMessage());\n\t\t\t}\n\t\t\t\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/get\")\n\t@ResponseBody\n\tpublic User get(Long id) {\n\t\treturn userService.get(id);\n\t}\n\t\n\t@RequestMapping(\"/delete\")\n\t@ResponseBody\n\tpublic Json delete(Long id) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tuserService.delete(id);\n\t\t\tj.setMsg(\"删除成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/editPage\")\n\tpublic String editPage(HttpServletRequest request, Long id) {\n\t\tUser u = userService.get(id);\n\t\trequest.setAttribute(\"user\", u);\n\t\trequest.setAttribute(\"sexList\", GlobalConstant.sexlist);\n\t\trequest.setAttribute(\"needPublishList\", GlobalConstant.needPublishList);\n\t\t\n\t\tList<EFResourceMeta> rmList = resourceMetaService.get(u.getAutoID(), dictionaryService.getDictionary(\"ResourceMetaType\", \"Expert\").getId());\n\t\tif(rmList != null && rmList.size() > 0){\n\t\t\tu.setImagePath(rmList.get(0).getMetaPath());\n\t\t}\n\t\treturn \"/eumode/sys/userEdit\";\n\t}\n\t\n\t@RequestMapping(\"/edit\")\n\t@ResponseBody\n\tpublic Json edit(User user) {\n\t\tJson j = new Json();\n\t\ttry {\n\t\t\tuserService.edit(user);\n\t\t\tif(user.getImagePath() != null && user.getImagePath().length() > 0){\n\t\t\t\tString[] arrayList = user.getImagePath().split(\"\\\\^\");\n\t\t\t\tString imageName = arrayList[0];\n\t\t\t\tString imagePath = arrayList[1];\n\t\t\t\t\n\t\t\t\tList<EFResourceMeta> rmList = resourceMetaService.get(user.getAutoID(), dictionaryService.getDictionary(\"ResourceMetaType\", \"Expert\").getId());\n\t\t\t\tif(rmList != null && rmList.size() > 0){\n\t\t\t\t\t//更换图片\n\t\t\t\t\tEFResourceMeta rm = rmList.get(0);\n\t\t\t\t\trm.setMetaPath(imagePath);\n\t\t\t\t\trm.setMetaDescription(imageName);\n\t\t\t\t\tresourceMetaService.edit(rm);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t//新增图片\n\t\t\t\t\tEFResourceMeta rm = new EFResourceMeta();\n\t\t\t\t\trm.setType(dictionaryService.getDictionary(\"ResourceMetaType\", \"Expert\").getId());\n\t\t\t\t\trm.setMetaID(user.getAutoID());\n\t\t\t\t\trm.setMetaPath(imagePath);\n\t\t\t\t\trm.setMetaDescription(imageName);\n\t\t\t\t\tresourceMetaService.add(rm);\n\t\t\t\t}\n\t\t\t}\n\t\t\tj.setSuccess(true);\n\t\t\tj.setMsg(\"编辑成功！\");\n\t\t} catch (ServiceException e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\n\t\treturn j;\n\t}\n\t\n\t@RequestMapping(\"/getExpertByManual\")\n\t@ResponseBody\n\tpublic Json getExpertByManual(User user)\n\t{\n\t\tJson j= new Json();\n\t\ttry{\n\t\t\tuserService.setManual(user);\n\t\t\tj.setMsg(\"授权成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\t\n\t\treturn j;\n\t}\n\t\n\t\n\t@RequestMapping(\"/manualPage\")\n\tpublic String manualPage(HttpServletRequest request, Long id)\n\t{\n\t\tUser u = userService.get(id);\n\t\trequest.setAttribute(\"user\", u);\n\t\treturn \"/eumode/sys/userManual\";\n\t}\n\t\n\t@RequestMapping(\"/setManual\")\n\t@ResponseBody\n\tpublic Json setManual(User user)\n\t{\n\t\tJson j= new Json();\n\t\ttry{\n\t\t\tuserService.setManual(user);\n\t\t\tj.setMsg(\"授权成功！\");\n\t\t\tj.setSuccess(true);\n\t\t} catch (Exception e) {\n\t\t\tj.setMsg(e.getMessage());\n\t\t}\t\n\t\treturn j;\n\t}\n\t\n\t\n\t//允许上传的文件后缀\n\t\tprivate static String fileExt = \"jpg,jpeg,bmp,gif,png\";\n\t\t//上传文件的大小限制，5M\n\t\tprivate static Long maxSize = 5242880L;  \t\t\t\t\t\n\t\t// 0:不建目录 1:按天存入目录 2:按月存入目录 3:按扩展名存目录 建议使用按天存  \n\t    private static String dirType = \"0\";  \n\t    //上传文件存储目录\n\t    private static String userImageDir = \"/uploadfile/user_image/\";\n\n\t    \n\t    /*\n\t     * 上传文件操作\n\t\t * @param request, response\n\t\t * @return\n\t     * */\n\t\t@RequestMapping(\"/getUploadFile\")\n\t\t@ResponseBody\n\t\tpublic void getUploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException\n\t\t{\n\t\t\tresponse.setContentType(\"text/html; charset=UTF-8\");  \n\t        response.setHeader(\"Cache-Control\", \"no-cache\");  \n\t        \n\t        String err = \"\";  \n\t        String newFileName = \"\";  \n\n\t        if (\"application/octet-stream\".equals(request.getContentType())) { //HTML 5 上传\n\t            try {\n\t                String dispoString = request.getHeader(\"Content-Disposition\");\n\t                int iFindStart = dispoString.indexOf(\"name=\\\"\")+6;\n\t                int iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n\t \n\t                iFindStart = dispoString.indexOf(\"filename=\\\"\")+10;\n\t                iFindEnd = dispoString.indexOf(\"\\\"\", iFindStart);\n\t                String sFileName = dispoString.substring(iFindStart, iFindEnd);\n\t \n\t                int i = request.getContentLength();\n\t                byte buffer[] = new byte[i];\n\t                int j = 0;\n\t                while(j < i) { //获取表单的上传文件\n\t                    int k = request.getInputStream().read(buffer, j, i-j);\n\t                    j += k;\n\t                }\n\t \n\t                if (buffer.length == 0) { //文件是否为空\n\t                    printInfo(response, \"上传文件不能为空\", \"\");\n\t                    return;\n\t                }\n\t                if (maxSize > 0 && buffer.length > maxSize) { //检查文件大小\n\t                    printInfo(response, \"上传文件的大小超出限制\", \"\");\n\t                    return;\n\t                }\n\t \n\t                String filepathString = getSaveFilePath(sFileName, request, response);\n\t                if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n\t \n\t                //System.out.println(\"newFileName:\" + request.getSession().getServletContext().getRealPath(\"\") + filepathString);  \n\t                OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n\t                out.write(buffer);\n\t                out.close();\n\t                \n\t                newFileName = request.getContextPath() + filepathString;\n\t            } catch (Exception ex) {\n\t                System.out.println(ex.getMessage());\n\t                newFileName = \"\";\n\t                err = \"错误: \" + ex.getMessage();\n\t            }\n\t        }\n\t        else{\n\t        \tBoolean mulipart = ServletFileUpload.isMultipartContent(request);\n\t        \tif(!mulipart)\n\t        \t{\n\t        \t\tprintInfo(response, \"上传格式错误\", \"\");\n\t                return;\n\t        \t}\n\t        \t//以下部分供上传附件使用\n\t        \tMultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;\n\t            List<MultipartFile> fileList = multipartRequest.getFiles(\"Filedata\");\n\t            \n\t        \ttry {\n\t        \t\tfor (MultipartFile mf : fileList) {\n\t                    if(mf.isEmpty()){  \n\t                    \tcontinue;\n\t                    }\n\t                    CommonsMultipartFile cf= (CommonsMultipartFile)mf;\n\t                    DiskFileItem fi = (DiskFileItem)cf.getFileItem();\n\t                    String fileNameLong = fi.getName();\t//获取文件上传路径名称\n\t                    fileNameLong = fileNameLong.replaceAll(\"^\", \"\");\n\t                \t\n\t                \tif (mf.getSize() == 0) { //文件是否为空\n\t                        printInfo(response, \"上传文件不能为空\", \"\");\n\t                        return;\n\t                    }\n\t                    if (maxSize > 0 && mf.getSize() > maxSize) { //检查文件大小\n\t                        printInfo(response, \"上传文件的大小超出限制\", \"\");\n\t                        return;\n\t                    }\n\n\t                    String filepathString = getSaveFilePath(fileNameLong, request, response);\n\t                    if (\"不允许上传此类型的文件\".equals(filepathString)) return; //检查文件类型\n\t                    \n\t                    OutputStream out=new BufferedOutputStream(new FileOutputStream(request.getSession().getServletContext().getRealPath(\"\") + filepathString,true));\n\t                    out.write(mf.getBytes());\n\t                    out.close();\n\t                    \n\t                    newFileName += fileNameLong + \"^\" + request.getContextPath() + filepathString + \";\";\n\t                } \n\t            } catch (Exception ex) {\n\t                System.out.println(ex.getMessage());\n\t                newFileName = \"\";\n\t                err = \"错误: \" + ex.getMessage();\n\t            }\n\t        }\n\n\t        printInfo(response, err, newFileName);  \n\t\t}\n\t\t\n\t\tprivate String getSaveFilePath(String sFileName, HttpServletRequest request, HttpServletResponse response) throws IOException {\n\t\t\t/*获取文件扩展名*/  \n\t        /*索引加1的效果是只取xxx.jpg的jpg*/  \n\t        String extensionName = sFileName.substring(sFileName.lastIndexOf(\".\") + 1);  \n\t        extensionName = extensionName.toLowerCase();\n\t        //System.out.println(\"extensionName:\" + extensionName);  \n\t    \t\n\t        /*检查文件类型*/  \n\t        if ((\",\" + fileExt.toLowerCase() + \",\").indexOf(\",\" + extensionName + \",\") < 0){  \n\t            printInfo(response, \"不允许上传此类型的文件\", \"\");  \n\t            return \"不允许上传此类型的文件\";  \n\t        }  \n\t        \n\t        //0:不建目录, 1:按天存入目录, 2:按月存入目录, 3:按扩展名存目录.建议使用按天存.  \n\t        String fileFolder = \"\";  \n\t        if (dirType.equalsIgnoreCase(\"1\"))  \n\t            fileFolder = new SimpleDateFormat(\"yyyyMMdd\").format(new Date());\n\t        if (dirType.equalsIgnoreCase(\"2\"))  \n\t            fileFolder = new SimpleDateFormat(\"yyyyMM\").format(new Date());  \n\t        if (dirType.equalsIgnoreCase(\"3\"))  \n\t            fileFolder = extensionName;  \n\t        \n\t        /*文件存储的相对路径*/ \n\t        String saveDirPath = userImageDir + fileFolder + \"/\";\n\t        //System.out.println(\"saveDirPath:\" + saveDirPath);  \n\t          \n\t        /*文件存储在容器中的绝对路径*/  \n\t        String saveFilePath = request.getSession().getServletContext().getRealPath(\"\") + saveDirPath;  \n\t        //System.out.println(\"saveFilePath:\" + saveFilePath);  \n\t                      \n\t        /*构建文件目录以及目录文件*/  \n\t        File fileDir = new File(saveFilePath);  \n\t        if (!fileDir.exists()) {fileDir.mkdirs();}  \n\t        \n\t        /*重命名文件*/  \n\t        String filename = UUID.randomUUID().toString();  \n\t        \n\t        return saveDirPath + filename + \".\" + extensionName;\n\t    }\n\t\t\n\t\t /** \n\t     * 使用I/O流输出 json格式的数据 \n\t     * @param response \n\t     * @param err \n\t     * @param newFileName \n\t     * @throws IOException \n\t     */  \n\t    private void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {  \n\t        PrintWriter out = response.getWriter();  \n\t        //String filename = newFileName.substring(newFileName.lastIndexOf(\"/\") + 1);  \n\t        out.println(\"{\\\"err\\\":\\\"\" + err + \"\\\",\\\"msg\\\":\\\"\" + newFileName + \"\\\"}\");  \n\t        out.flush();  \n\t        out.close();  \n\t    }  \n}\n"
  },
  {
    "path": "src/main/java/light/mvc/dao/BaseDaoI.java",
    "content": "package light.mvc.dao;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.io.Serializable;\nimport java.math.BigInteger;\nimport java.util.List;\nimport java.util.Map;\n\npublic interface BaseDaoI<T> {\n\n\tpublic Serializable save(T o);\n\n\tpublic void delete(T o);\n\n\tpublic void update(T o);\n\n\tpublic void saveOrUpdate(T o);\n\n\tpublic T get(Class<T> c, Serializable id);\n\n\tpublic T get(String hql);\n\n\tpublic T get(String hql, Map<String, Object> params);\n\n\tpublic List<T> find(String hql);\n\n\tpublic List<T> find(String hql, Map<String, Object> params);\n\n\tpublic List<T> find(String hql, int page, int rows);\n\n\tpublic List<T> find(String hql, Map<String, Object> params, int page, int rows);\n\n\tpublic Long count(String hql);\n\n\tpublic Long count(String hql, Map<String, Object> params);\n\n\tpublic int executeHql(String hql);\n\n\tpublic int executeHql(String hql, Map<String, Object> params);\n\n\tpublic List<Object[]> findBySql(String sql);\n\n\tpublic List<Object[]> findBySql(String sql, int page, int rows);\n\n\tpublic List<Object[]> findBySql(String sql, Map<String, Object> params);\n\n\tpublic List<Object[]> findBySql(String sql, Map<String, Object> params, int page, int rows);\n\n\tpublic int executeSql(String sql);\n\n\tpublic int executeSql(String sql, Map<String, Object> params);\n\n\tpublic BigInteger countBySql(String sql);\n\n\tpublic BigInteger countBySql(String sql, Map<String, Object> params);\n\t\n\tpublic void deleteFile(String filePath, HttpServletRequest request);//通过request获取网站根目录的绝对路径\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/dao/impl/BaseDaoImpl.java",
    "content": "package light.mvc.dao.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport org.hibernate.Query;\nimport org.hibernate.SQLQuery;\nimport org.hibernate.Session;\nimport org.hibernate.SessionFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Repository;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.io.File;\nimport java.io.Serializable;\nimport java.math.BigInteger;\nimport java.util.List;\nimport java.util.Map;\n\n@Repository\npublic class BaseDaoImpl<T> implements BaseDaoI<T> {\n\n\t@Autowired\n\tprivate SessionFactory sessionFactory;\n\n\t/**\n\t * 获得当前事物的session\n\t * \n\t * @return org.hibernate.Session\n\t */\n\tpublic Session getCurrentSession() {\n\t\treturn this.sessionFactory.getCurrentSession();\n\t}\n\n\t@Override\n\tpublic Serializable save(T o) {\n\t\tif (o != null) {\n\t\t\treturn this.getCurrentSession().save(o);\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic T get(Class<T> c, Serializable id) {\n\t\treturn (T) this.getCurrentSession().get(c, id);\n\t}\n\n\t@Override\n\tpublic T get(String hql) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tList<T> l = q.list();\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\treturn l.get(0);\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic T get(String hql, Map<String, Object> params) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\tList<T> l = q.list();\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\treturn l.get(0);\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic void delete(T o) {\n\t\tif (o != null) {\n\t\t\tthis.getCurrentSession().delete(o);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void update(T o) {\n\t\tif (o != null) {\n\t\t\tthis.getCurrentSession().update(o);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void saveOrUpdate(T o) {\n\t\tif (o != null) {\n\t\t\tthis.getCurrentSession().saveOrUpdate(o);\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<T> find(String hql) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\treturn q.list();\n\t}\n\n\t@Override\n\tpublic List<T> find(String hql, Map<String, Object> params) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.list();\n\t}\n\n\t@Override\n\tpublic List<T> find(String hql, Map<String, Object> params, int page, int rows) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();\n\t}\n\n\t@Override\n\tpublic List<T> find(String hql, int page, int rows) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\treturn q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();\n\t}\n\n\t@Override\n\tpublic Long count(String hql) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\treturn (Long) q.uniqueResult();\n\t}\n\n\t@Override\n\tpublic Long count(String hql, Map<String, Object> params) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn (Long) q.uniqueResult();\n\t}\n\n\t@Override\n\tpublic int executeHql(String hql) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\treturn q.executeUpdate();\n\t}\n\n\t@Override\n\tpublic int executeHql(String hql, Map<String, Object> params) {\n\t\tQuery q = this.getCurrentSession().createQuery(hql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.executeUpdate();\n\t}\n\n\t@Override\n\tpublic List<Object[]> findBySql(String sql) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\treturn q.list();\n\t}\n\n\t@Override\n\tpublic List<Object[]> findBySql(String sql, int page, int rows) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\treturn q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();\n\t}\n\n\t@Override\n\tpublic List<Object[]> findBySql(String sql, Map<String, Object> params) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.list();\n\t}\n\n\t@Override\n\tpublic List<Object[]> findBySql(String sql, Map<String, Object> params, int page, int rows) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();\n\t}\n\n\t@Override\n\tpublic int executeSql(String sql) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\treturn q.executeUpdate();\n\t}\n\n\t@Override\n\tpublic int executeSql(String sql, Map<String, Object> params) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn q.executeUpdate();\n\t}\n\n\t@Override\n\tpublic BigInteger countBySql(String sql) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\treturn (BigInteger) q.uniqueResult();\n\t}\n\n\t@Override\n\tpublic BigInteger countBySql(String sql, Map<String, Object> params) {\n\t\tSQLQuery q = this.getCurrentSession().createSQLQuery(sql);\n\t\tif ((params != null) && !params.isEmpty()) {\n\t\t\tfor (String key : params.keySet()) {\n\t\t\t\tq.setParameter(key, params.get(key));\n\t\t\t}\n\t\t}\n\t\treturn (BigInteger) q.uniqueResult();\n\t}\n\n\t@Override\n\tpublic void deleteFile(String filePath,HttpServletRequest request) {\n\t\t String proPath=request.getSession().getServletContext().getRealPath(\"/\");\n\t\t File file=new File(proPath+filePath);  \n         if(file.exists()){  \n             file.delete();\n         }\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/framework/constant/GlobalConstant.java",
    "content": "package light.mvc.framework.constant;\n\nimport java.text.SimpleDateFormat;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\npublic class GlobalConstant {\n\t\n\tpublic static final String caipoLoginURL =\"http://123.127.143.37/caipoweb/UserModel/Login\";\n\tpublic static final String caipoLoginName =\"login_name=\";\n\tpublic static final String caipoPasswork =\"password=\";\n\tpublic static final String caipoStationDateURL =\"http://123.127.143.37/caipoweb/DataModel/list\";\n\t\n\tpublic static final String ACCESS_TOKEN_TEST = \"ACCESS_TOKEN\";//专家\n\t\n\tpublic static final String USERCODE=\"wsnwsn640\";\n\tpublic static final String USERSECRET=\"wsnwsn640\";\n\tpublic static final String SECRET=\"wsnwsn640\";\n\t\n//\t专家和普通用户类型字符串\n\tpublic static final String EXPERT = \"expert\";//专家\n\tpublic static final String MEMBER = \"member\";//普通用户\n\n//\t系统各种类型的用户session字段设置\n\tpublic static final String SESSION_INFO_ADMIN = \"sessionInfo\";//管理员session常量\n\tpublic static final String SESSION_INFO_EXPERT = \"sessionInfo\";//专家用户session常量\n\tpublic static final String SESSION_INFO_MEMBER = \"sessionInfo\";//专家用户session常量\n\tpublic static final String SESSION_INFO_USER = \"sessionInfo\";//专家用户session常量\n\n\tpublic static final Integer ENABLE = 0; // 启用\n\tpublic static final Integer DISABLE = 1; // 禁用\n\t\n\t\n\tpublic static final Integer DEFAULT = 0; // 默认 \n\tpublic static final Integer NOT_DEFAULT = 1; // 非默认\n\t\n\tpublic static final Map sexlist = new HashMap(){{ put(\"0\", \"男\");  put(\"1\", \"女\");} };\n\tpublic static final Map needPublishList = new HashMap(){{ put(\"0\", \"不发布\");  put(\"1\", \"发布\");} };\n\tpublic static final Map statelist = new HashMap(){{ put(\"1\", \"启用\");  put(\"0\", \"停用\");} };\n\tpublic static final Map statuslist = new HashMap(){{ put(\"0\", \"待审核\");  put(\"1\", \"通过\"); put(\"-1\", \"不通过\");} };\n\t\n\tpublic static final String uploadFolder = \"/uploadfile\";\n\tpublic static final String uploadThumbFolder = \"/uploadfile/thumb\";\n\t\n//\txx_resource表中资源type的类别定义\n\tpublic static final String PICTURETYPE = \"picture\";\n    public static final String VIDEOTYPE = \"video\";\n\t\n    \n    public static final  SimpleDateFormat myFmt1=new SimpleDateFormat(\"yyyy-MM-dd\");\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/framework/interceptors/SecurityInterceptor.java",
    "content": "package light.mvc.framework.interceptors;\n\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.SessionInfo;\nimport org.springframework.web.servlet.HandlerInterceptor;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.util.List;\n\n/**\n * 权限拦截器\n * \n */\npublic class SecurityInterceptor implements HandlerInterceptor {\n\n\tprivate List<String> excludeUrls;// 不需要拦截的资源\n\n\tpublic List<String> getExcludeUrls() {\n\t\treturn excludeUrls;\n\t}\n\n\tpublic void setExcludeUrls(List<String> excludeUrls) {\n\t\tthis.excludeUrls = excludeUrls;\n\t}\n\n\t/**\n\t * 完成页面的render后调用\n\t */\n\t@Override\n\tpublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,\n\t\t\tException exception) throws Exception {\n\n\t}\n\n\t/**\n\t * 在调用controller具体方法后拦截\n\t */\n\t@Override\n\tpublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object object,\n\t\t\tModelAndView modelAndView) throws Exception {\n\n\t}\n\n\t/**\n\t * 在调用controller具体方法前拦截\n\t */\n\t@Override\n\tpublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {\n\t\tString requestUri = request.getRequestURI();\n\t\tString contextPath = request.getContextPath();\n\t\tString url = requestUri.substring(contextPath.length());\n\t\tSessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_INFO_ADMIN);\n\t\t\n\t\t//判断访问的资源是否不需要验证身份,排除url是/front/**的情况\n\t\tif ((url.indexOf(\"/admin/\") > -1) || (url.indexOf(\"/front/\") > -1)|| (url.indexOf(\"/baseUtil/\") > -1)||excludeUrls.contains(url)) {// 如果要访问的资源是不需要验证的\n\t\t\treturn true;\n\t\t}\n\t\t\n//\t\t验证管理员身份\n\t\tif ((sessionInfo == null) || (sessionInfo.getId() == null)) {// 如果没有登录或登录超时\n\t\t\trequest.setAttribute(\"msg\", \"您还没有登录或登录已超时，请重新登录，然后再刷新本功能！\");\n\t\t\trequest.getRequestDispatcher(\"/error/noSession.jsp\").forward(request, response);\n\t\t\treturn false;\n\t\t}\n\t\t\n//\t\t不是本系统的有的url\n\t\tif(!sessionInfo.getResourceAllList().contains(url)){\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!sessionInfo.getResourceList().contains(url)) {// 如果当前用户没有访问此资源的权限\n\t\t\trequest.setAttribute(\"msg\", \"您没有访问此资源的权限！<br/>请联系超管赋予您<br/>[\" + url + \"]<br/>的资源访问权限！\");\n\t\t\trequest.getRequestDispatcher(\"/error/noSecurity.jsp\").forward(request, response);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/framework/interceptors/SecurityInterceptorFront.java",
    "content": "package light.mvc.framework.interceptors;\n\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.pageModel.base.SessionInfo;\nimport org.springframework.web.servlet.HandlerInterceptor;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.util.List;\n\n/**\n * 权限拦截器\n * \n */\npublic class SecurityInterceptorFront implements HandlerInterceptor {\n\n\tprivate List<String> excludeUrls;// 不需要拦截的资源\n\n\tpublic List<String> getExcludeUrls() {\n\t\treturn excludeUrls;\n\t}\n\n\tpublic void setExcludeUrls(List<String> excludeUrls) {\n\t\tthis.excludeUrls = excludeUrls;\n\t}\n\n\t/**\n\t * 完成页面的render后调用\n\t */\n\t@Override\n\tpublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,\n\t\t\tException exception) throws Exception {\n\n\t}\n\n\t/**\n\t * 在调用controller具体方法后拦截\n\t */\n\t@Override\n\tpublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object object,\n\t\t\tModelAndView modelAndView) throws Exception {\n\n\t}\n\n\t/**\n\t * 在调用controller具体方法前拦截\n\t */\n\t@Override\n\tpublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {\n\t\tString requestUri = request.getRequestURI();\n\t\tString contextPath = request.getContextPath();\n\t\tString url = requestUri.substring(contextPath.length());\n\t\tSessionInfo sessionInfoExpert = (SessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_INFO_EXPERT);\n\t\tSessionInfo sessionInfoMember = (SessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_INFO_MEMBER);\n\t\t\n\t\tif (excludeUrls.contains(url)|| (url.indexOf(\"/baseUtil/\") > -1) || ((url.indexOf(\"/front\") > -1)&&(url.indexOf(\"/base\") > -1))||url.indexOf(\"/mobile/\")>-1) {// 如果要访问的资源是不需要验证的\n\t\t\treturn true;\n\t\t}\n\n\t\t\n\t\tif (((sessionInfoExpert == null) || (sessionInfoExpert.getId() == null))&&((sessionInfoMember == null) || (sessionInfoMember.getId() == null))) {// 如果没有登录或登录超时\n\t\t\trequest.getRequestDispatcher(\"/WEB-INF/views//front/login.jsp\").forward(request, response);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/base/IdEntity.java",
    "content": "package light.mvc.model.base;\n\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.GenerationType;\nimport javax.persistence.Id;\nimport javax.persistence.MappedSuperclass;\n\n/**\n * 统一定义id的entity基类.\n * \n * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.\n * Oracle需要每个Entity独立定义id的SEQUCENCE时，不继承于本类而改为实现一个Idable的接口。\n * \n * @author 鸵鸟\n */\n@MappedSuperclass\npublic abstract class IdEntity {\n\n\tprotected Long id;\n\n\t@Id\n\t@GeneratedValue(strategy = GenerationType.IDENTITY)\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/base/IdEntityORACLE.java",
    "content": "package light.mvc.model.base;\n\nimport javax.persistence.*;\n\n/**\n * 支持oracle 拿用户来说，这个还没想好，怎么样切换方便一点\n * 建表语句要创建sequence\n * create sequence SEQ_USER start with 100 increment by 20;\n * */\n@MappedSuperclass\npublic abstract class IdEntityORACLE {\n\n\tprotected Long id;\n\n\t@Id\n\t@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = \"UserSequence\")\n\t@SequenceGenerator(name = \"UserSequence\", sequenceName = \"SEQ_USER\", allocationSize = 20)\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/base/baseEntity.java",
    "content": "package light.mvc.model.base;\n\nimport javax.persistence.*;\nimport java.util.Date;\n\n/**\n * 统一定义各表的基本属性的entity基类.\n * \n * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.\n * Oracle需要每个Entity独立定义id的SEQUCENCE时，不继承于本类而改为实现一个Idable的接口。\n * \n * createDate\n * createBy\n * updateDate\n * updateBy\n * Active\n * Deleted\n * TS\n * 等公共字段的基本属性名称、数据类型、咧映射及生成策略\n * \n * 编写日期：2016-8-8\n * \n * 特别注意：尚未完善\n * \n * @author yeyaowen\n */\n@MappedSuperclass\npublic abstract class baseEntity {\n\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\n\t@Id\n\t@GeneratedValue(strategy = GenerationType.IDENTITY)\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\tpublic void setAutoID(Long id) {\n\t\tthis.autoID = id;\n\t}\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\t\n\t@Temporal(TemporalType.TIMESTAMP)\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/manual/TEFmanualCategory.java",
    "content": "package light.mvc.model.manual;\n\nimport light.mvc.model.base.baseEntity;\nimport light.mvc.model.sys.TEFPersonalInfo;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport java.util.HashSet;\nimport java.util.Set;\n\n\n@Entity\n@Table(name = \"manualcategory\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFmanualCategory extends baseEntity implements java.io.Serializable{\n\t\n\t\n\t\n\tprivate String categoryName;\n    private String categoryCode;\n    private String categoryDescription;\n    private Set<TEFPersonalInfo> users= new HashSet<TEFPersonalInfo>(0);\n\t\n\tprivate TEFmanualCategory parent;\n\n\tpublic TEFmanualCategory(String categoryName, String categoryCode,\n\t\t\tString categoryDescription, TEFmanualCategory parent) {\n\t\tsuper();\n\t\tthis.categoryName = categoryName;\n\t\tthis.categoryCode = categoryCode;\n\t\tthis.categoryDescription = categoryDescription;\n\t\tthis.parent = parent;\n\t}\n\n\t\n\tpublic TEFmanualCategory() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\tpublic String getCategoryName() {\n\t\treturn categoryName;\n\t}\n\n\tpublic void setCategoryName(String categoryName) {\n\t\tthis.categoryName = categoryName;\n\t}\n\n\tpublic String getCategoryCode() {\n\t\treturn categoryCode;\n\t}\n\n\tpublic void setCategoryCode(String categoryCode) {\n\t\tthis.categoryCode = categoryCode;\n\t}\n\n\tpublic String getCategoryDescription() {\n\t\treturn categoryDescription;\n\t}\n\n\tpublic void setCategoryDescription(String categoryDescription) {\n\t\tthis.categoryDescription = categoryDescription;\n\t}\n\t\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"ParentID\")\n\tpublic TEFmanualCategory getParent() {\n\t\treturn parent;\n\t}\n\n\tpublic void setParent(TEFmanualCategory parent) {\n\t\tthis.parent = parent;\n\t}\n\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"personalmanual\", joinColumns = { @JoinColumn(name = \"ManualCategoryID\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"PersonalID\", nullable = false, updatable = false) })\n\t@OrderBy(\"AutoID ASC\")\n\tpublic Set<TEFPersonalInfo> getUsers() {\n\t\treturn users;\n\t}\n\n\n\tpublic void setUsers(Set<TEFPersonalInfo> users) {\n\t\tthis.users = users;\n\t}\n\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/manual/TEFmanualContent.java",
    "content": "package light.mvc.model.manual;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n\n@Entity\n@Table(name = \"manualcontent\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFmanualContent extends baseEntity implements java.io.Serializable{\n\t\n\tprivate Long manualCategoryID;\n\tprivate String categoryCode;\n\tprivate String content;\n\tprivate String title;\n\tprivate String filePath;\n\t\n\tpublic TEFmanualContent() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\tpublic TEFmanualContent(Long manualCategoryID, String categoryCode,\n\t\t\tString content, String title, String filePath) {\n\t\tsuper();\n\t\tthis.manualCategoryID = manualCategoryID;\n\t\tthis.categoryCode = categoryCode;\n\t\tthis.content = content;\n\t\tthis.title = title;\n\t\tthis.filePath = filePath;\n\t}\n\n\tpublic Long getManualCategoryID() {\n\t\treturn manualCategoryID;\n\t}\n\n\tpublic void setManualCategoryID(Long manualCategoryID) {\n\t\tthis.manualCategoryID = manualCategoryID;\n\t}\n\n\tpublic String getCategoryCode() {\n\t\treturn categoryCode;\n\t}\n\n\tpublic void setCategoryCode(String categoryCode) {\n\t\tthis.categoryCode = categoryCode;\n\t}\n\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\n\tpublic String getFilePath() {\n\t\treturn filePath;\n\t}\n\n\tpublic void setFilePath(String filePath) {\n\t\tthis.filePath = filePath;\n\t}\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/manual/TEFmanualKeyword.java",
    "content": "package light.mvc.model.manual;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"manualkeyword\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFmanualKeyword extends baseEntity implements java.io.Serializable {\n\tprivate Long manualContentID;\n\tprivate Long categoryID;\n\tprivate String categoryCode;\n\tprivate String keyword;\n\t\n\tpublic TEFmanualKeyword() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\tpublic TEFmanualKeyword(Long manualCategoryID, Long categoryID, String categoryCode,\n\t\t\tString keyword) {\n\t\tsuper();\n\t\tthis.manualContentID = manualCategoryID;\n\t\tthis.categoryID = categoryID;\n\t\tthis.categoryCode = categoryCode;\n\t\tthis.keyword = keyword;\n\t}\n\t\n\tpublic Long getManualContentID(){\n\t\treturn manualContentID;\n\t}\n\tpublic void setManualContentID(Long manualContentID){\n\t\tthis.manualContentID = manualContentID;\n\t}\n\t\n\tpublic Long getCategoryID(){\n\t\treturn categoryID;\n\t}\n\tpublic void setCategoryID(Long categoryID){\n\t\tthis.categoryID = categoryID;\n\t}\n\t\n\tpublic String getCategoryCode(){\n\t\treturn categoryCode;\n\t}\n\tpublic void setCategoryCode(String categoryCode){\n\t\tthis.categoryCode = categoryCode;\n\t}\n\t\n\tpublic String getKeyword(){\n\t\treturn keyword;\n\t}\n\tpublic void setKeyword(String keyword){\n\t\tthis.keyword = keyword;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/news/TEFcategory.java",
    "content": "package light.mvc.model.news;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n\n@Entity\n@Table(name = \"newscategory\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFcategory extends baseEntity implements java.io.Serializable{\n\t\n\tprivate String categoryName;\n\tprivate String categoryDescription;\n\tprivate Long type;\n\n\t\n\t\n\tpublic TEFcategory()\n\t{\n\t\tsuper();\n\t}\n\n\n\n\tpublic TEFcategory(String categoryName, String categoryDescription,\n\t\t\tLong type) {\n\t\tsuper();\n\t\tthis.categoryName = categoryName;\n\t\tthis.categoryDescription = categoryDescription;\n\t\tthis.type = type;\n\t}\n\n\n\n\tpublic String getCategoryName() {\n\t\treturn categoryName;\n\t}\n\n\n\n\tpublic void setCategoryName(String categoryName) {\n\t\tthis.categoryName = categoryName;\n\t}\n\n\n\n\tpublic String getCategoryDescription() {\n\t\treturn categoryDescription;\n\t}\n\n\n\n\tpublic void setCategoryDescription(String categoryDescription) {\n\t\tthis.categoryDescription = categoryDescription;\n\t}\n\n\n\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\n\n\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\t\n\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/news/TEFnews.java",
    "content": "package light.mvc.model.news;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\nimport java.util.Date;\n\n@Entity\n@Table(name = \"newscontent\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFnews extends baseEntity implements java.io.Serializable {\n\n\tprivate Long personalID;\n\tprivate String author;\n\tprivate String title;\n\tprivate String content;\n\tprivate String webPath;\n\tprivate Date publishDate;\n\tprivate Integer readCount;\n\tprivate Long status;\n\tprivate Long categoryID;\n\n\tpublic TEFnews() {\n\t\tsuper();\n\t}\n\n\tpublic TEFnews(Long personalID, String author, String title, String content, String webPath, Date publishDate,\n\t\t\tInteger readCount, Long status, Long categoryID) {\n\t\tsuper();\n\t\tthis.personalID = personalID;\n\t\tthis.author = author;\n\t\tthis.title = title;\n\t\tthis.content = content;\n\t\tthis.webPath = webPath;\n\t\tthis.publishDate = publishDate;\n\t\tthis.readCount = readCount;\n\t\tthis.status = status;\n\t\tthis.categoryID = categoryID;\n\t}\n\n\tpublic Long getPersonalID() {\n\t\treturn personalID;\n\t}\n\n\tpublic void setPersonalID(Long personalID) {\n\t\tthis.personalID = personalID;\n\t}\n\n\tpublic String getAuthor() {\n\t\treturn author;\n\t}\n\n\tpublic void setAuthor(String author) {\n\t\tthis.author = author;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\n\tpublic String getWebPath() {\n\t\treturn webPath;\n\t}\n\n\tpublic void setWebPath(String webPath) {\n\t\tthis.webPath = webPath;\n\t}\n\n\tpublic Date getPublishDate() {\n\t\treturn publishDate;\n\t}\n\n\tpublic void setPublishDate(Date publishDate) {\n\t\tthis.publishDate = publishDate;\n\t}\n\n\tpublic Integer getReadCount() {\n\t\treturn readCount;\n\t}\n\n\tpublic void setReadCount(Integer readCount) {\n\t\tthis.readCount = readCount;\n\t}\n\n\tpublic Long getStatus() {\n\t\treturn status;\n\t}\n\n\tpublic void setStatus(Long status) {\n\t\tthis.status = status;\n\t}\n\n\tpublic Long getCategoryID() {\n\t\treturn categoryID;\n\t}\n\n\tpublic void setCategoryID(Long categoryID) {\n\t\tthis.categoryID = categoryID;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sensor/TmonitoringNode.java",
    "content": "package light.mvc.model.sensor;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"monitoringnode\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TmonitoringNode extends baseEntity implements java.io.Serializable{\n\t\n\n\t\n\tprivate String name;\n\t\n\tprivate String code;\n\t\n\tprivate Double locationX;\n\t   \n    private Double locationY;\n    \n    private Long type;\n    \n    private Long station;\n    \n\tprivate Integer fps;\n\t\n\tprivate String address;//保留字段\n\t\n\tprivate String description;\n\n\tprivate Integer sensor_ch;\n\n\tprivate String map;\n\t\n\tprivate String dataKey;\n\n\tpublic TmonitoringNode()\n\t{\n\t\tsuper();\n\t}\n\n\n\tpublic TmonitoringNode(String name, String code, Double locationX,\n\t\t\tDouble locationY, Long type, Long station, Integer fps,\n\t\t\tString address, String description, Integer sensor_ch, String map,\n\t\t\tString dataKey) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.code = code;\n\t\tthis.locationX = locationX;\n\t\tthis.locationY = locationY;\n\t\tthis.type = type;\n\t\tthis.station = station;\n\t\tthis.fps = fps;\n\t\tthis.address = address;\n\t\tthis.description = description;\n\t\tthis.sensor_ch = sensor_ch;\n\t\tthis.map = map;\n\t\tthis.dataKey = dataKey;\n\t}\n\n\n\tpublic String getDataKey() {\n\t\treturn dataKey;\n\t}\n\n\n\tpublic void setDataKey(String dataKey) {\n\t\tthis.dataKey = dataKey;\n\t}\n\n\n\tpublic Integer getSensor_ch() {\n\t\treturn sensor_ch;\n\t}\n\n\n\tpublic void setSensor_ch(Integer sensor_ch) {\n\t\tthis.sensor_ch = sensor_ch;\n\t}\n\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\n\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\tpublic Double getLocationX() {\n\t\treturn locationX;\n\t}\n\n\tpublic void setLocationX(Double locationX) {\n\t\tthis.locationX = locationX;\n\t}\n\n\tpublic Double getLocationY() {\n\t\treturn locationY;\n\t}\n\n\n\tpublic void setLocationY(Double locationY) {\n\t\tthis.locationY = locationY;\n\t}\n\n\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\n\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\n\n\tpublic Long getStation() {\n\t\treturn station;\n\t}\n\n\tpublic void setStation(Long station) {\n\t\tthis.station = station;\n\t}\n\n\n\n\n\tpublic Integer getFps() {\n\t\treturn fps;\n\t}\n\n\n\n\n\tpublic void setFps(Integer fps) {\n\t\tthis.fps = fps;\n\t}\n\n\n\n\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\n\n\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\n\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\n\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\n\n\n\tpublic String getMap() {\n\t\treturn map;\n\t}\n\n\n\n\n\tpublic void setMap(String map) {\n\t\tthis.map = map;\n\t}\n\n\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sensor/TpestData.java",
    "content": "package light.mvc.model.sensor;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"pestdata\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TpestData extends baseEntity implements java.io.Serializable{\n\n\tprivate String name;\n\tprivate Long type;\n\tprivate Long monitoringNodeId;\n//\tprivate Long sensorId;\n\tprivate Long imgId;\n\tprivate Integer count;\n\tprivate Integer realCount;\n\tprivate String description;\n\tpublic TpestData() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic TpestData(String name, Long type, Long monitoringNodeId, Long imgId,\n\t\t\tInteger count, Integer realCount, String description) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t\tthis.imgId = imgId;\n\t\tthis.count = count;\n\t\tthis.realCount = realCount;\n\t\tthis.description = description;\n\t}\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\tpublic Long getMonitoringNodeId() {\n\t\treturn monitoringNodeId;\n\t}\n\tpublic void setMonitoringNodeId(Long monitoringNodeId) {\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t}\n\tpublic Long getImgId() {\n\t\treturn imgId;\n\t}\n\tpublic void setImgId(Long imgId) {\n\t\tthis.imgId = imgId;\n\t}\n\tpublic Integer getCount() {\n\t\treturn count;\n\t}\n\tpublic void setCount(Integer count) {\n\t\tthis.count = count;\n\t}\n\tpublic Integer getRealCount() {\n\t\treturn realCount;\n\t}\n\tpublic void setRealCount(Integer realCount) {\n\t\tthis.realCount = realCount;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\t\n\t\n}\n\t\n\t\n\t\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sensor/Tsensor.java",
    "content": "package light.mvc.model.sensor;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.Entity;\nimport javax.persistence.Table;\n\n@Entity\n@Table(name = \"sensor\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tsensor extends baseEntity implements java.io.Serializable{\n\n\tprivate Long monitoringNodeId;\n\t\n\tprivate Long serialNum;\n\t\n\tprivate Integer sensor_ch;\n\t\t\n\tprivate Double sensor1;\n\t\n\tprivate Double sensor2;\n\t\n\tprivate Double sensor3;\n\t\n\tprivate Double sensor4;\n\t\n\tprivate Double sensor5;\n\t\n\tprivate Double sensor6;\n\t\n\tprivate Double sensor7;\n\t\n\tprivate Double sensor8;\n\t\n\tprivate Double sensor9;\n\t\n\tprivate Double sensor10;\n\t\n\tprivate Double sensor11;\n\t\n\tprivate Double sensor12;\n\t\n\tprivate Double sensor13;\n\t\n\tprivate Double sensor14;\n\t\n\tprivate Double sensor15;\n\t\n\tprivate Double sensor16;\n\t\n\tprivate Double sensor17;\n\t\n\tprivate Double sensor18;\n\t\n\tprivate Double sensor19;\n\t\n\tprivate Double sensor20;\n\t\n\n\t\n\n\tpublic Tsensor() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\t\n\t\n\n\t\n\n\n\tpublic Tsensor(Long monitoringNodeId, Long serialNum, Integer sensor_ch,\n\t\t\tDouble sensor1, Double sensor2, Double sensor3, Double sensor4,\n\t\t\tDouble sensor5, Double sensor6, Double sensor7, Double sensor8,\n\t\t\tDouble sensor9, Double sensor10, Double sensor11, Double sensor12,\n\t\t\tDouble sensor13, Double sensor14, Double sensor15, Double sensor16,\n\t\t\tDouble sensor17, Double sensor18, Double sensor19, Double sensor20) {\n\t\tsuper();\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t\tthis.serialNum = serialNum;\n\t\tthis.sensor_ch = sensor_ch;\n\t\tthis.sensor1 = sensor1;\n\t\tthis.sensor2 = sensor2;\n\t\tthis.sensor3 = sensor3;\n\t\tthis.sensor4 = sensor4;\n\t\tthis.sensor5 = sensor5;\n\t\tthis.sensor6 = sensor6;\n\t\tthis.sensor7 = sensor7;\n\t\tthis.sensor8 = sensor8;\n\t\tthis.sensor9 = sensor9;\n\t\tthis.sensor10 = sensor10;\n\t\tthis.sensor11 = sensor11;\n\t\tthis.sensor12 = sensor12;\n\t\tthis.sensor13 = sensor13;\n\t\tthis.sensor14 = sensor14;\n\t\tthis.sensor15 = sensor15;\n\t\tthis.sensor16 = sensor16;\n\t\tthis.sensor17 = sensor17;\n\t\tthis.sensor18 = sensor18;\n\t\tthis.sensor19 = sensor19;\n\t\tthis.sensor20 = sensor20;\n\t}\n\n\n\n\n\n\n\tpublic Long getSerialNum() {\n\t\treturn serialNum;\n\t}\n\n\n\n\n\n\n\tpublic void setSerialNum(Long serialNum) {\n\t\tthis.serialNum = serialNum;\n\t}\n\n\n\n\n\n\n\tpublic Integer getSensor_ch() {\n\t\treturn sensor_ch;\n\t}\n\n\n\n\n\n\n\tpublic void setSensor_ch(Integer sensor_ch) {\n\t\tthis.sensor_ch = sensor_ch;\n\t}\n\n\n\n\n\n\n\tpublic Long getMonitoringNodeId() {\n\t\treturn monitoringNodeId;\n\t}\n\n\tpublic void setMonitoringNodeId(Long monitoringNodeId) {\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t}\n\n\tpublic Double getSensor1() {\n\t\treturn sensor1;\n\t}\n\n\tpublic void setSensor1(Double sensor1) {\n\t\tthis.sensor1 = sensor1;\n\t}\n\n\tpublic Double getSensor2() {\n\t\treturn sensor2;\n\t}\n\n\tpublic void setSensor2(Double sensor2) {\n\t\tthis.sensor2 = sensor2;\n\t}\n\n\tpublic Double getSensor3() {\n\t\treturn sensor3;\n\t}\n\n\tpublic void setSensor3(Double sensor3) {\n\t\tthis.sensor3 = sensor3;\n\t}\n\n\tpublic Double getSensor4() {\n\t\treturn sensor4;\n\t}\n\n\tpublic void setSensor4(Double sensor4) {\n\t\tthis.sensor4 = sensor4;\n\t}\n\n\tpublic Double getSensor5() {\n\t\treturn sensor5;\n\t}\n\n\tpublic void setSensor5(Double sensor5) {\n\t\tthis.sensor5 = sensor5;\n\t}\n\n\tpublic Double getSensor6() {\n\t\treturn sensor6;\n\t}\n\n\tpublic void setSensor6(Double sensor6) {\n\t\tthis.sensor6 = sensor6;\n\t}\n\n\tpublic Double getSensor7() {\n\t\treturn sensor7;\n\t}\n\n\tpublic void setSensor7(Double sensor7) {\n\t\tthis.sensor7 = sensor7;\n\t}\n\n\tpublic Double getSensor8() {\n\t\treturn sensor8;\n\t}\n\n\tpublic void setSensor8(Double sensor8) {\n\t\tthis.sensor8 = sensor8;\n\t}\n\n\tpublic Double getSensor9() {\n\t\treturn sensor9;\n\t}\n\n\tpublic void setSensor9(Double sensor9) {\n\t\tthis.sensor9 = sensor9;\n\t}\n\n\tpublic Double getSensor10() {\n\t\treturn sensor10;\n\t}\n\n\tpublic void setSensor10(Double sensor10) {\n\t\tthis.sensor10 = sensor10;\n\t}\n\n\tpublic Double getSensor11() {\n\t\treturn sensor11;\n\t}\n\n\tpublic void setSensor11(Double sensor11) {\n\t\tthis.sensor11 = sensor11;\n\t}\n\n\tpublic Double getSensor12() {\n\t\treturn sensor12;\n\t}\n\n\tpublic void setSensor12(Double sensor12) {\n\t\tthis.sensor12 = sensor12;\n\t}\n\n\tpublic Double getSensor13() {\n\t\treturn sensor13;\n\t}\n\n\tpublic void setSensor13(Double sensor13) {\n\t\tthis.sensor13 = sensor13;\n\t}\n\n\tpublic Double getSensor14() {\n\t\treturn sensor14;\n\t}\n\n\tpublic void setSensor14(Double sensor14) {\n\t\tthis.sensor14 = sensor14;\n\t}\n\n\tpublic Double getSensor15() {\n\t\treturn sensor15;\n\t}\n\n\tpublic void setSensor15(Double sensor15) {\n\t\tthis.sensor15 = sensor15;\n\t}\n\n\tpublic Double getSensor16() {\n\t\treturn sensor16;\n\t}\n\n\tpublic void setSensor16(Double sensor16) {\n\t\tthis.sensor16 = sensor16;\n\t}\n\n\tpublic Double getSensor17() {\n\t\treturn sensor17;\n\t}\n\n\tpublic void setSensor17(Double sensor17) {\n\t\tthis.sensor17 = sensor17;\n\t}\n\n\tpublic Double getSensor18() {\n\t\treturn sensor18;\n\t}\n\n\tpublic void setSensor18(Double sensor18) {\n\t\tthis.sensor18 = sensor18;\n\t}\n\n\tpublic Double getSensor19() {\n\t\treturn sensor19;\n\t}\n\n\tpublic void setSensor19(Double sensor19) {\n\t\tthis.sensor19 = sensor19;\n\t}\n\n\tpublic Double getSensor20() {\n\t\treturn sensor20;\n\t}\n\n\tpublic void setSensor20(Double sensor20) {\n\t\tthis.sensor20 = sensor20;\n\t}\n\n\n\t\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sensor/Tstation.java",
    "content": "package light.mvc.model.sensor;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport java.util.Date;\n\n@Entity\n@Table(name = \"station\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tstation extends baseEntity implements java.io.Serializable{\n\n\t\n\tprivate String name;\n\tprivate String address;\n\tprivate String code;\n\tprivate Long type;\n\tprivate Tstation station;\n\tprivate String linkPeople;\n\tprivate String linkPhone;\n\tprivate String Description;\n\tprivate Long serialNum;\n\t\n\tprivate String loginName;\n\tprivate String password;\n\t\n\tprivate Date sensorDateUpdate;\n\tpublic Tstation() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\t\n\n\n\tpublic Tstation(String name, String address, String code, Long type,\n\t\t\tTstation station, String linkPeople, String linkPhone,\n\t\t\tString description, Long serialNum, String loginName,\n\t\t\tString password, Date sensorDateUpdate) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.address = address;\n\t\tthis.code = code;\n\t\tthis.type = type;\n\t\tthis.station = station;\n\t\tthis.linkPeople = linkPeople;\n\t\tthis.linkPhone = linkPhone;\n\t\tDescription = description;\n\t\tthis.serialNum = serialNum;\n\t\tthis.loginName = loginName;\n\t\tthis.password = password;\n\t\tthis.sensorDateUpdate = sensorDateUpdate;\n\t}\n\n\n\n\tpublic Date getSensorDateUpdate() {\n\t\treturn sensorDateUpdate;\n\t}\n\n\n\n\tpublic void setSensorDateUpdate(Date sensorDateUpdate) {\n\t\tthis.sensorDateUpdate = sensorDateUpdate;\n\t}\n\n\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\n\t\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"pid\")\n\tpublic Tstation getStation() {\n\t\treturn station;\n\t}\n\tpublic void setStation(Tstation station) {\n\t\tthis.station = station;\n\t}\n\tpublic String getLinkPeople() {\n\t\treturn linkPeople;\n\t}\n\tpublic void setLinkPeople(String linkPeople) {\n\t\tthis.linkPeople = linkPeople;\n\t}\n\tpublic String getLinkPhone() {\n\t\treturn linkPhone;\n\t}\n\tpublic void setLinkPhone(String linkPhone) {\n\t\tthis.linkPhone = linkPhone;\n\t}\n\tpublic String getDescription() {\n\t\treturn Description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tDescription = description;\n\t}\n\n\n\n\tpublic Long getSerialNum() {\n\t\treturn serialNum;\n\t}\n\n\n\n\tpublic void setSerialNum(Long serialNum) {\n\t\tthis.serialNum = serialNum;\n\t}\n\n\n\tpublic String getLoginName() {\n\t\treturn loginName;\n\t}\n\n\tpublic void setLoginName(String loginName) {\n\t\tthis.loginName = loginName;\n\t}\n\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\t\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFDictionary.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\n\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n\n@Entity\n@Table(name = \"dictionary\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFDictionary extends baseEntity implements java.io.Serializable{\n\t\n\tprivate String code;\n\tprivate String text;\n\tprivate TEFDictionaryCategory dictionaryCategory;\n\tprivate Integer seq;\n\tprivate Integer isDefault; // 是否默认\n\t\n\tpublic TEFDictionary(){\n\t\t\n\t}\n\t\n\tpublic TEFDictionary(String code, String text,\n\t\t\tTEFDictionaryCategory dictionaryCategory, Integer seq, Integer state,\n\t\t\tInteger isdefault) {\n\t\tsuper();\n\t\tthis.code = code;\n\t\tthis.text = text;\n\t\tthis.dictionaryCategory = dictionaryCategory;\n\t\tthis.seq = seq;\n\t\tthis.isDefault = isdefault;\n\t}\n\n\t@NotBlank\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\t@NotBlank\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"DictionaryCategoryID\")\n\tpublic TEFDictionaryCategory getDictionaryCategory() {\n\t\treturn dictionaryCategory;\n\t}\n\n\tpublic void setDictionaryCategory(TEFDictionaryCategory dictionaryCategory) {\n\t\tthis.dictionaryCategory = dictionaryCategory;\n\t}\n\n\tpublic Integer getIsDefault() {\n\t\treturn isDefault;\n\t}\n\n\tpublic void setIsDefault(Integer isDefault) {\n\t\tthis.isDefault = isDefault;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFDictionaryCategory.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"dictionarycategory\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFDictionaryCategory extends baseEntity implements java.io.Serializable{\n\t\n\tprivate String code;\n\tprivate String name;\n\tprivate Integer seq;\n\tprivate String description;\n\tprivate TEFDictionaryCategory dictionaryCategory;\n\t\n\n\t\n\tpublic TEFDictionaryCategory() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\tpublic TEFDictionaryCategory(String code, String name, Integer seq,\n\t\t\tString description) {\n\t\tsuper();\n\t\tthis.code = code;\n\t\tthis.name = name;\n\t\tthis.seq = seq;\n\t\tthis.description = description;\n\t}\n\n\t@NotBlank\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"ParentID\")\n\tpublic TEFDictionaryCategory getDictionaryCategory() {\n\t\treturn dictionaryCategory;\n\t}\n\n\tpublic void setDictionaryCategory(TEFDictionaryCategory dictionaryCategory) {\n\t\tthis.dictionaryCategory = dictionaryCategory;\n\t}\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFLoginUser.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\nimport java.util.Date;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"loginuser\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFLoginUser extends baseEntity implements java.io.Serializable {\n\n\tprivate String loginName; // 登录名\n\tprivate String password; // 密码\n\tprivate Date lastLoginTime; // 创建时间\n\n\tprivate Integer status; // 状态\n\t\n    private TEFPersonalInfo personalInfo;\n    \n\tpublic TEFLoginUser() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\n\tpublic TEFLoginUser(String loginName, String password, Date lastLoginTime,\n\t\t\tInteger status, TEFPersonalInfo personalInfo) {\n\t\tsuper();\n\t\tthis.loginName = loginName;\n\t\tthis.password = password;\n\t\tthis.lastLoginTime = lastLoginTime;\n\t\tthis.status = status;\n\t\tthis.personalInfo = personalInfo;\n\t}\n\n\n\t@NotBlank\n\tpublic String getLoginName() {\n\t\treturn loginName;\n\t}\n\n\n\n\tpublic void setLoginName(String loginName) {\n\t\tthis.loginName = loginName;\n\t}\n\n\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n\n\n\tpublic Date getLastLoginTime() {\n\t\treturn lastLoginTime;\n\t}\n\n\n\n\tpublic void setLastLoginTime(Date lastLoginTime) {\n\t\tthis.lastLoginTime = lastLoginTime;\n\t}\n\n\n\n\tpublic Integer getStatus() {\n\t\treturn status;\n\t}\n\n\n\n\tpublic void setStatus(Integer states) {\n\t\tthis.status = states;\n\t}\n\n\n\n\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"PersonalID\")\n\tpublic TEFPersonalInfo getPersonalInfo() {\n\t\treturn personalInfo;\n\t}\n\n\n\n\tpublic void setPersonalInfo(TEFPersonalInfo personalInfo) {\n\t\tthis.personalInfo = personalInfo;\n\t}\n\n\n\n\n\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFNotice.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\n\n\n@Entity\n@Table(name = \"notice\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFNotice extends baseEntity implements java.io.Serializable {\n\t\n\tprivate TEFDictionary type;\n\tprivate Long metaID;\n\tprivate TEFPersonalInfo personal;\n\tprivate String content;\n\tprivate Integer isNotice;\n\tpublic TEFNotice() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\t\n\t\n\t\n\tpublic TEFNotice(TEFDictionary type, Long metaID, TEFPersonalInfo personal,\n\t\t\tString content, Integer isNotice) {\n\t\tsuper();\n\t\tthis.type = type;\n\t\tthis.metaID = metaID;\n\t\tthis.personal = personal;\n\t\tthis.content = content;\n\t\tthis.isNotice = isNotice;\n\t}\n\n\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"Type\")\n\tpublic TEFDictionary getDictionary() {\n\t\treturn type;\n\t}\n\tpublic void setDictionary(TEFDictionary dictionary) {\n\t\tthis.type = dictionary;\n\t}\n\t\n\tpublic Long getMetaID() {\n\t\treturn metaID;\n\t}\n\tpublic void setMetaID(Long metaID) {\n\t\tthis.metaID = metaID;\n\t}\n\t\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"PersonalID\")\n\tpublic TEFPersonalInfo getPersonal() {\n\t\treturn personal;\n\t}\n\tpublic void setPersonal(TEFPersonalInfo personal) {\n\t\tthis.personal = personal;\n\t}\n\n\tpublic Integer getIsNotice() {\n\t\treturn isNotice;\n\t}\n\tpublic void setIsNotice(Integer isNotice) {\n\t\tthis.isNotice = isNotice;\n\t}\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFOrganization.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport java.util.HashSet;\nimport java.util.Set;\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"organization\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFOrganization  extends baseEntity implements java.io.Serializable{\n\n\tprivate String departmentName;\n\tprivate String address;\n\tprivate String departmentCode;\n\tprivate String icon;\n\tprivate Integer seq;\n\tprivate TEFOrganization organization;\n\tprivate Set<TEFOrganization> organizations = new HashSet<TEFOrganization>(0);\n\n\tpublic TEFOrganization() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\t\n\t\n\t\n\tpublic TEFOrganization(String departmentName, String address,\n\t\t\tString departmentCode, String icon, Integer seq,\n\t\t\tTEFOrganization organization, Set<TEFOrganization> organizations) {\n\t\tsuper();\n\t\tthis.departmentName = departmentName;\n\t\tthis.address = address;\n\t\tthis.departmentCode = departmentCode;\n\t\tthis.icon = icon;\n\t\tthis.seq = seq;\n\t\tthis.organization = organization;\n\t\tthis.organizations = organizations;\n\t}\n\n\n\t@NotBlank\n\tpublic String getDepartmentName() {\n\t\treturn departmentName;\n\t}\n\tpublic void setDepartmentName(String departmentName) {\n\t\tthis.departmentName = departmentName;\n\t}\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\tpublic String getDepartmentCode() {\n\t\treturn departmentCode;\n\t}\n\tpublic void setDepartmentCode(String departmentCode) {\n\t\tthis.departmentCode = departmentCode;\n\t}\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"ParentID\")\n\tpublic TEFOrganization getOrganization() {\n\t\treturn organization;\n\t}\n\n\n\n\tpublic void setOrganization(TEFOrganization organization) {\n\t\tthis.organization = organization;\n\t}\n\n\n\t@OneToMany(fetch = FetchType.LAZY, mappedBy = \"organization\")\n\tpublic Set<TEFOrganization> getOrganizations() {\n\t\treturn organizations;\n\t}\n\n\n\n\tpublic void setOrganizations(Set<TEFOrganization> organizations) {\n\t\tthis.organizations = organizations;\n\t}\n\t\n\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFPersonalInfo.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport light.mvc.model.manual.TEFmanualCategory;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"personalinfo\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFPersonalInfo  extends baseEntity implements java.io.Serializable{\n\n\tprivate String realName;\n\tprivate String phoneNumber;\n\tprivate Integer sex;\n\tprivate Integer age;\n\tprivate String email;\n\tprivate String address;\n\n\tprivate String techType;\n\tprivate String description;\n\tprivate String techTitle;\n\tprivate Integer needPublish;\n\n\tprivate TEFOrganization organization;\n\tprivate TEFRole role;\n\t\n\tprivate Set<TEFmanualCategory> manualCategorys= new  HashSet<TEFmanualCategory>(0);\n\n\tpublic TEFPersonalInfo() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\t\n\t\n\t\n\tpublic TEFPersonalInfo(String realName, String phoneNumber, Integer sex,\n\t\t\tInteger age, String email, String address, String techType,\n\t\t\tString description, String techTitle, Integer needPublish, TEFOrganization organization, TEFRole role) {\n\t\tsuper();\n\t\tthis.realName = realName;\n\t\tthis.phoneNumber = phoneNumber;\n\t\tthis.sex = sex;\n\t\tthis.age = age;\n\t\tthis.email = email;\n\t\tthis.address = address;\n\t\tthis.techType = techType;\n\t\tthis.description = description;\n\t\tthis.techTitle = techTitle;\n\t\tthis.needPublish = needPublish;\n\t\tthis.organization = organization;\n\t\tthis.role = role;\n\t}\n\n\n\n\tpublic String getRealName() {\n\t\treturn realName;\n\t}\n\tpublic void setRealName(String realName) {\n\t\tthis.realName = realName;\n\t}\n\tpublic String getPhoneNumber() {\n\t\treturn phoneNumber;\n\t}\n\tpublic void setPhoneNumber(String phoneNumber) {\n\t\tthis.phoneNumber = phoneNumber;\n\t}\n\tpublic Integer getSex() {\n\t\treturn sex;\n\t}\n\tpublic void setSex(Integer sex) {\n\t\tthis.sex = sex;\n\t}\n\tpublic Integer getAge() {\n\t\treturn age;\n\t}\n\tpublic void setAge(Integer age) {\n\t\tthis.age = age;\n\t}\n\tpublic String getEmail() {\n\t\treturn email;\n\t}\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\tpublic String getTechType() {\n\t\treturn techType;\n\t}\n\tpublic void setTechType(String techType) {\n\t\tthis.techType = techType;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"OrganizationID\")\n\tpublic TEFOrganization getOrganization() {\n\t\treturn organization;\n\t}\n\n\n\n\tpublic void setOrganization(TEFOrganization organization) {\n\t\tthis.organization = organization;\n\t}\n\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"RoleID\")\n\tpublic TEFRole getRole() {\n\t\treturn role;\n\t}\n\n\n\n\tpublic void setRole(TEFRole role) {\n\t\tthis.role = role;\n\t}\n\n\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"personalmanual\", joinColumns = { @JoinColumn(name = \"PersonalID\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"ManualCategoryID\", nullable = false, updatable = false) })\n\t@OrderBy(\"AutoID ASC\")\n\tpublic Set<TEFmanualCategory> getManualCategorys() {\n\t\treturn manualCategorys;\n\t}\n\n\n\n\tpublic void setManualCategorys(Set<TEFmanualCategory> manualCategorys) {\n\t\tthis.manualCategorys = manualCategorys;\n\t}\n\n\t\n\tpublic String getTechTitle() {\n\t\treturn techTitle;\n\t}\n\t\n\tpublic void setTechTitle(String techTitle) {\n\t\tthis.techTitle = techTitle;\n\t}\n\t\n\tpublic Integer getNeedPublish(){\n\t\treturn needPublish;\n\t}\n\t\n\tpublic void setNeedPublish(Integer needPublish) {\n\t\tthis.needPublish = needPublish;\n\t}\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFResource.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"resource\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFResource extends baseEntity implements java.io.Serializable{\n\n\t\n\tprivate String resourceName; // 名称\n\tprivate String url; // 菜单路径\n\tprivate String description; // 描述\n\tprivate String icon; // 图标\n\tprivate Integer seq; // 排序号\n\t\n\tprivate Integer resourceType; // 资源类型, 0菜单 1功能\n\tprivate TEFResource parentResource; // 父级\n\t\n\tprivate Set<TEFRole> roles = new HashSet<TEFRole>(0);\n\tprivate Set<TEFResource> resources = new HashSet<TEFResource>(0);\n\t\n\tpublic TEFResource() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic TEFResource(String resourceName, String url, String description,\n\t\t\tString icon, Integer seq, Integer resourceType,\n\t\t\tTEFResource parentResource) {\n\t\tsuper();\n\t\tthis.resourceName = resourceName;\n\t\tthis.url = url;\n\t\tthis.description = description;\n\t\tthis.icon = icon;\n\t\tthis.seq = seq;\n\t\tthis.resourceType = resourceType;\n\t\tthis.parentResource = parentResource;\n\t}\n\n\tpublic String getResourceName() {\n\t\treturn resourceName;\n\t}\n\tpublic void setResourceName(String resourceName) {\n\t\tthis.resourceName = resourceName;\n\t}\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\tpublic Integer getResourceType() {\n\t\treturn resourceType;\n\t}\n\tpublic void setResourceType(Integer resourceType) {\n\t\tthis.resourceType = resourceType;\n\t}\n\t\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"ParentID\")\n\tpublic TEFResource getParentResource() {\n\t\treturn parentResource;\n\t}\n\tpublic void setParentResource(TEFResource parentResource) {\n\t\tthis.parentResource = parentResource;\n\t}\n\t\n\t// @yeyaowen problem\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"roleresource\", joinColumns = { @JoinColumn(name = \"ResourceID\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"RoleID\", nullable = false, updatable = false) })\n\t@OrderBy(\"id ASC\")\n\tpublic Set<TEFRole> getRoles() {\n\t\treturn roles;\n\t}\n\tpublic void setRoles(Set<TEFRole> roles) {\n\t\tthis.roles = roles;\n\t}\n\t\n\t\n\t@OneToMany(fetch = FetchType.LAZY, mappedBy = \"parentResource\")\n\tpublic Set<TEFResource> getResources() {\n\t\treturn resources;\n\t}\n\tpublic void setResources(Set<TEFResource> resources) {\n\t\tthis.resources = resources;\n\t}\n\t\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFResourceMeta.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\n\n@Entity\n@Table(name = \"resourceMeta\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFResourceMeta extends baseEntity implements java.io.Serializable {\n\t\n\tprivate TEFDictionary dictionary;\n\tprivate Long metaID;\n\tprivate String metaPath;\n\tprivate String thumbMetaPath;\n\tprivate String metaDescription;\n\n\tpublic TEFResourceMeta() {\n\t\tsuper();\n\t}\n\n\n\tpublic TEFResourceMeta(TEFDictionary dictionary, Long metaID,\n\t\t\tString metaPath, String thumbMetaPath, String metaDescription) {\n\t\tsuper();\n\t\tthis.dictionary = dictionary;\n\t\tthis.metaID = metaID;\n\t\tthis.metaPath = metaPath;\n\t\tthis.thumbMetaPath = thumbMetaPath;\n\t\tthis.metaDescription = metaDescription;\n\t}\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"Type\")\n\tpublic TEFDictionary getDictionary() {\n\t\treturn dictionary;\n\t}\n\n\n\tpublic void setDictionary(TEFDictionary dictionary) {\n\t\tthis.dictionary = dictionary;\n\t}\n\n\t\n\tpublic Long getMetaID() {\n\t\treturn metaID;\n\t}\n\n\tpublic void setMetaID(Long metaID) {\n\t\tthis.metaID = metaID;\n\t}\n\n\tpublic String getMetaPath() {\n\t\treturn metaPath;\n\t}\n\n\tpublic void setMetaPath(String metaPath) {\n\t\tthis.metaPath = metaPath;\n\t}\n\t\n\tpublic String getThumbMetaPath() {\n\t\treturn thumbMetaPath;\n\t}\n\n\tpublic void setThumbMetaPath(String thumbMetaPath) {\n\t\tthis.thumbMetaPath = thumbMetaPath;\n\t}\n\t\n\tpublic String getMetaDescription() {\n\t\treturn metaDescription;\n\t}\n\n\tpublic void setMetaDescription(String metaDescription) {\n\t\tthis.metaDescription = metaDescription;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/TEFRole.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.baseEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\n\nimport javax.persistence.*;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n\n@Entity\n@Table(name = \"role\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class TEFRole extends baseEntity implements java.io.Serializable {\n\n\tprivate String roleName; // 角色名称\n\tprivate String description; // 备注\n\tprivate Integer isDefault;\n\tprivate Set<TEFResource> resources = new HashSet<TEFResource>(0);\n\tprivate Set<TEFPersonalInfo> users = new HashSet<TEFPersonalInfo>(0);\n\n\t\n\tpublic TEFRole() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic TEFRole(String roleName, String description, Integer isDefault) {\n\t\tsuper();\n\t\tthis.roleName = roleName;\n\t\tthis.description = description;\n\t\tthis.isDefault = isDefault;\n\t}\n\tpublic String getRoleName() {\n\t\treturn roleName;\n\t}\n\tpublic void setRoleName(String roleName) {\n\t\tthis.roleName = roleName;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic Integer getIsDefault() {\n\t\treturn isDefault;\n\t}\n\tpublic void setIsDefault(Integer isDefault) {\n\t\tthis.isDefault = isDefault;\n\t}\n\t\n\t\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"roleresource\", joinColumns = { @JoinColumn(name = \"RoleID\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"ResourceID\", nullable = false, updatable = false) })\n\t@OrderBy(\"id ASC\")\n\tpublic Set<TEFResource> getResources() {\n\t\treturn resources;\n\t}\n\tpublic void setResources(Set<TEFResource> resources) {\n\t\tthis.resources = resources;\n\t}\n\t\n\t@OneToMany\n\t@JoinColumn(name=\"RoleID\")\n\tpublic Set<TEFPersonalInfo> getUsers() {\n\t\treturn users;\n\t}\n\tpublic void setUsers(Set<TEFPersonalInfo> users) {\n\t\tthis.users = users;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Tdictionary.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\n\n@Entity\n@Table(name = \"sys_dictionary\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tdictionary extends IdEntity implements java.io.Serializable{\n\t\n\tprivate String code;\n\tprivate String text;\n\tprivate Tdictionarytype dictionarytype;\n\tprivate Integer seq;\n\tprivate Integer state; // 状态 0启用 1停用\n\tprivate Integer isdefault; // 是否默认\n\t\n\tpublic Tdictionary(){\n\t\t\n\t}\n\t\n\tpublic Tdictionary(String code, String text,\n\t\t\tTdictionarytype dictionarytype, Integer seq, Integer state,\n\t\t\tInteger isdefault) {\n\t\tsuper();\n\t\tthis.code = code;\n\t\tthis.text = text;\n\t\tthis.dictionarytype = dictionarytype;\n\t\tthis.seq = seq;\n\t\tthis.state = state;\n\t\tthis.isdefault = isdefault;\n\t}\n\n\t@NotBlank\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\t@NotBlank\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"dictionarytype_id\")\n\tpublic Tdictionarytype getDictionarytype() {\n\t\treturn dictionarytype;\n\t}\n\n\tpublic void setDictionarytype(Tdictionarytype dictionarytype) {\n\t\tthis.dictionarytype = dictionarytype;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Integer getState() {\n\t\treturn state;\n\t}\n\n\tpublic void setState(Integer state) {\n\t\tthis.state = state;\n\t}\n\n\tpublic Integer getIsdefault() {\n\t\treturn isdefault;\n\t}\n\n\tpublic void setIsdefault(Integer isdefault) {\n\t\tthis.isdefault = isdefault;\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Tdictionarytype.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\n\n\n@Entity\n@Table(name = \"sys_dictionarytype\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tdictionarytype extends IdEntity implements java.io.Serializable{\n\t\n\tprivate String code;\n\tprivate String name;\n\tprivate Integer seq;\n\tprivate String description;\n\tprivate Tdictionarytype dictionarytype;\n\t\n\tpublic Tdictionarytype(){\n\t\t\n\t}\n\t\n\tpublic Tdictionarytype(String code, String name, Integer seq,\n\t\t\tString description) {\n\t\tsuper();\n\t\tthis.code = code;\n\t\tthis.name = name;\n\t\tthis.seq = seq;\n\t\tthis.description = description;\n\t}\n\n\t@NotBlank\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"pid\")\n\tpublic Tdictionarytype getDictionarytype() {\n\t\treturn dictionarytype;\n\t}\n\n\tpublic void setDictionarytype(Tdictionarytype dictionarytype) {\n\t\tthis.dictionarytype = dictionarytype;\n\t}\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Torganization.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Set;\n\n@Entity\n@Table(name = \"sys_organization\", schema = \"\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Torganization extends IdEntity implements java.io.Serializable {\n\n\tprivate Date createdatetime;\n\tprivate String name;\n\tprivate String address;\n\tprivate String code;\n\tprivate String icon;\n\tprivate Integer seq;\n\tprivate Torganization organization;\n\tprivate Set<Torganization> organizations = new HashSet<Torganization>(0);\n\n\tpublic Torganization() {\n\t\tsuper();\n\t}\n\n\tpublic Torganization(Date createdatetime, String name, String address, String code, String icon, Integer seq,\n\t\t\tTorganization organization, Set<Torganization> organizations) {\n\t\tsuper();\n\t\tthis.createdatetime = createdatetime;\n\t\tthis.name = name;\n\t\tthis.address = address;\n\t\tthis.code = code;\n\t\tthis.icon = icon;\n\t\tthis.seq = seq;\n\t\tthis.organization = organization;\n\t\tthis.organizations = organizations;\n\t}\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"pid\")\n\tpublic Torganization getOrganization() {\n\t\treturn organization;\n\t}\n\n\tpublic void setOrganization(Torganization organization) {\n\t\tthis.organization = organization;\n\t}\n\n\t@Temporal(TemporalType.TIMESTAMP)\n\t@Column(name = \"createdatetime\", length = 19)\n\tpublic Date getCreatedatetime() {\n\t\treturn createdatetime;\n\t}\n\n\tpublic void setCreatedatetime(Date createdatetime) {\n\t\tthis.createdatetime = createdatetime;\n\t}\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn this.name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getAddress() {\n\t\treturn this.address;\n\t}\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\tpublic String getCode() {\n\t\treturn this.code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn this.seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\t@OneToMany(fetch = FetchType.LAZY, mappedBy = \"organization\")\n\tpublic Set<Torganization> getOrganizations() {\n\t\treturn organizations;\n\t}\n\n\tpublic void setOrganizations(Set<Torganization> organizations) {\n\t\tthis.organizations = organizations;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Tresource.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Set;\n\n@Entity\n@Table(name = \"sys_resource\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tresource extends IdEntity implements java.io.Serializable {\n\n\tprivate Date createdatetime; // 创建时间\n\tprivate String name; // 名称\n\tprivate String url; // 菜单路径\n\tprivate String description; // 描述\n\tprivate String icon; // 图标\n\tprivate Integer seq; // 排序号\n\tprivate Integer resourcetype; // 资源类型, 0菜单 1功能\n\tprivate Tresource resource; // 父级\n\tprivate Integer state; // 状态 0启用 1停用\n\tprivate Set<Trole> roles = new HashSet<Trole>(0);\n\tprivate Set<Tresource> resources = new HashSet<Tresource>(0);\n\n\tpublic Tresource() {\n\t}\n\n\tpublic Tresource(Long id, Date createdatetime, String name, String url, String description, String icon,\n\t\t\tInteger seq, Integer resourcetype, Tresource resource, Integer state) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.createdatetime = createdatetime;\n\t\tthis.name = name;\n\t\tthis.url = url;\n\t\tthis.description = description;\n\t\tthis.icon = icon;\n\t\tthis.seq = seq;\n\t\tthis.resourcetype = resourcetype;\n\t\tthis.resource = resource;\n\t\tthis.state = state;\n\t}\n\n\t@Temporal(TemporalType.TIMESTAMP)\n\t@Column(name = \"CREATEDATETIME\", length = 19)\n\tpublic Date getCreatedatetime() {\n\t\treturn createdatetime;\n\t}\n\n\tpublic void setCreatedatetime(Date createdatetime) {\n\t\tthis.createdatetime = createdatetime;\n\t}\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Integer getResourcetype() {\n\t\treturn resourcetype;\n\t}\n\n\tpublic void setResourcetype(Integer resourcetype) {\n\t\tthis.resourcetype = resourcetype;\n\t}\n\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"pid\")\n\tpublic Tresource getResource() {\n\t\treturn resource;\n\t}\n\n\tpublic void setResource(Tresource resource) {\n\t\tthis.resource = resource;\n\t}\n\n\tpublic Integer getState() {\n\t\treturn state;\n\t}\n\n\tpublic void setState(Integer state) {\n\t\tthis.state = state;\n\t}\n\n\t//@yeyaoewn problem\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"sys_role_resource\", joinColumns = { @JoinColumn(name = \"resource_id\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"role_id\", nullable = false, updatable = false) })\n\t@OrderBy(\"id ASC\")\n\tpublic Set<Trole> getRoles() {\n\t\treturn roles;\n\t}\n\n\tpublic void setRoles(Set<Trole> roles) {\n\t\tthis.roles = roles;\n\t}\n\n\t@OneToMany(fetch = FetchType.LAZY, mappedBy = \"resource\")\n\tpublic Set<Tresource> getResources() {\n\t\treturn resources;\n\t}\n\n\tpublic void setResources(Set<Tresource> resources) {\n\t\tthis.resources = resources;\n\t}\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Trole.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport java.util.HashSet;\nimport java.util.Set;\n\n@Entity\n@Table(name = \"sys_role\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Trole extends IdEntity implements java.io.Serializable {\n\n\tprivate String name; // 角色名称\n\tprivate Integer seq; // 排序号\n\tprivate Integer isdefault; // 是否默认\n\tprivate String description; // 备注\n\tprivate Set<Tresource> resources = new HashSet<Tresource>(0);\n\tprivate Set<Tuser> users = new HashSet<Tuser>(0);\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Integer getIsdefault() {\n\t\treturn isdefault;\n\t}\n\n\tpublic void setIsdefault(Integer isdefault) {\n\t\tthis.isdefault = isdefault;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"sys_role_resource\", joinColumns = { @JoinColumn(name = \"role_id\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"resource_id\", nullable = false, updatable = false) })\n\t@OrderBy(\"id ASC\")\n\tpublic Set<Tresource> getResources() {\n\t\treturn resources;\n\t}\n\n\tpublic void setResources(Set<Tresource> resources) {\n\t\tthis.resources = resources;\n\t}\n\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"sys_user_role\", joinColumns = { @JoinColumn(name = \"role_id\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"user_id\", nullable = false, updatable = false) })\n\t@OrderBy(\"id ASC\")\n\tpublic Set<Tuser> getUsers() {\n\t\treturn users;\n\t}\n\n\tpublic void setUsers(Set<Tuser> users) {\n\t\tthis.users = users;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/model/sys/Tuser.java",
    "content": "package light.mvc.model.sys;\n\nimport light.mvc.model.base.IdEntity;\nimport org.hibernate.annotations.DynamicInsert;\nimport org.hibernate.annotations.DynamicUpdate;\nimport org.hibernate.validator.constraints.NotBlank;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.NotNull;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Set;\n\n@Entity\n@Table(name = \"sys_user\")\n@DynamicInsert(true)\n@DynamicUpdate(true)\npublic class Tuser extends IdEntity implements java.io.Serializable {\n\n\tprivate String loginname; // 登录名\n\tprivate String password; // 密码\n\tprivate String name; // 姓名\n\tprivate Integer sex; // 性别\n\tprivate Integer age; // 年龄\n\tprivate Date createdatetime; // 创建时间\n\tprivate Integer usertype; // 用户类型\n\tprivate Integer isdefault; // 是否默认\n\tprivate Integer state; // 状态\n\tprivate Torganization organization;\n\tprivate Set<Trole> roles = new HashSet<Trole>(0);\n\n\tpublic Tuser() {\n\t\tsuper();\n\t}\n\n\tpublic Tuser(String loginname, String password, String name, Integer sex, Integer age, Date createdatetime,\n\t\t\tInteger usertype, Integer isdefault, Integer state) {\n\t\tsuper();\n\t\tthis.loginname = loginname;\n\t\tthis.password = password;\n\t\tthis.name = name;\n\t\tthis.sex = sex;\n\t\tthis.age = age;\n\t\tthis.createdatetime = createdatetime;\n\t\tthis.usertype = usertype;\n\t\tthis.isdefault = isdefault;\n\t\tthis.state = state;\n\t}\n\n\t@NotBlank\n\tpublic String getLoginname() {\n\t\treturn loginname;\n\t}\n\n\tpublic void setLoginname(String loginname) {\n\t\tthis.loginname = loginname;\n\t}\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n\t@NotBlank\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSex() {\n\t\treturn sex;\n\t}\n\n\tpublic void setSex(Integer sex) {\n\t\tthis.sex = sex;\n\t}\n\n\tpublic Integer getAge() {\n\t\treturn age;\n\t}\n\n\tpublic void setAge(Integer age) {\n\t\tthis.age = age;\n\t}\n\n\t@Temporal(TemporalType.TIMESTAMP)\n\t@Column(name = \"CREATEDATETIME\", length = 19)\n\tpublic Date getCreatedatetime() {\n\t\treturn createdatetime;\n\t}\n\n\tpublic void setCreatedatetime(Date createdatetime) {\n\t\tthis.createdatetime = createdatetime;\n\t}\n\n\tpublic Integer getUsertype() {\n\t\treturn usertype;\n\t}\n\n\tpublic void setUsertype(Integer usertype) {\n\t\tthis.usertype = usertype;\n\t}\n\n\tpublic Integer getIsdefault() {\n\t\treturn isdefault;\n\t}\n\n\tpublic void setIsdefault(Integer isdefault) {\n\t\tthis.isdefault = isdefault;\n\t}\n\n\tpublic Integer getState() {\n\t\treturn state;\n\t}\n\n\tpublic void setState(Integer state) {\n\t\tthis.state = state;\n\t}\n\n\t@ManyToMany(fetch = FetchType.LAZY)\n\t@JoinTable(name = \"sys_user_role\", joinColumns = { @JoinColumn(name = \"user_id\", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = \"role_id\", nullable = false, updatable = false) })\n\tpublic Set<Trole> getRoles() {\n\t\treturn roles;\n\t}\n\n\tpublic void setRoles(Set<Trole> roles) {\n\t\tthis.roles = roles;\n\t}\n\n\t@NotNull\n\t@ManyToOne(fetch = FetchType.LAZY)\n\t@JoinColumn(name = \"organization_id\")\n\tpublic Torganization getOrganization() {\n\t\treturn organization;\n\t}\n\n\tpublic void setOrganization(Torganization organization) {\n\t\tthis.organization = organization;\n\t}\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/Grid.java",
    "content": "package light.mvc.pageModel.base;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Grid implements java.io.Serializable {\n\n\tprivate Long total = 0L;\n\tprivate List rows = new ArrayList();\n\n\tpublic Long getTotal() {\n\t\treturn total;\n\t}\n\n\tpublic void setTotal(Long total) {\n\t\tthis.total = total;\n\t}\n\n\tpublic List getRows() {\n\t\treturn rows;\n\t}\n\n\tpublic void setRows(List rows) {\n\t\tthis.rows = rows;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/Json.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class Json implements java.io.Serializable {\n\n\tprivate boolean success = false;\n\n\tprivate String msg = \"\";\n\n\tprivate Object obj = null;\n\n\tpublic boolean isSuccess() {\n\t\treturn success;\n\t}\n\n\tpublic void setSuccess(boolean success) {\n\t\tthis.success = success;\n\t}\n\n\tpublic String getMsg() {\n\t\treturn msg;\n\t}\n\n\tpublic void setMsg(String msg) {\n\t\tthis.msg = msg;\n\t}\n\n\tpublic Object getObj() {\n\t\treturn obj;\n\t}\n\n\tpublic void setObj(Object obj) {\n\t\tthis.obj = obj;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/JsonAPI.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class JsonAPI implements java.io.Serializable{\n\n\tprivate boolean success= false;\n\t\n\tprivate String errcode;\n\t\n\tprivate String errmsg;\n\t\n\tprivate String access_token;\n\t\n\tprivate int limit;\n\t\n\tprivate Object obj;\n\n\tpublic JsonAPI() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\n\n\tpublic boolean isSuccess() {\n\t\treturn success;\n\t}\n\n\tpublic void setSuccess(boolean success) {\n\t\tthis.success = success;\n\t}\n\n\tpublic String getErrcode() {\n\t\treturn errcode;\n\t}\n\n\tpublic void setErrcode(String errcode) {\n\t\tthis.errcode = errcode;\n\t}\n\n\tpublic String getErrmsg() {\n\t\treturn errmsg;\n\t}\n\n\tpublic void setErrmsg(String errmsg) {\n\t\tthis.errmsg = errmsg;\n\t}\n\n\tpublic String getAccess_token() {\n\t\treturn access_token;\n\t}\n\n\tpublic void setAccess_token(String access_token) {\n\t\tthis.access_token = access_token;\n\t}\n\n\tpublic int getLimit() {\n\t\treturn limit;\n\t}\n\n\tpublic void setLimit(int i) {\n\t\tthis.limit = i;\n\t}\n\n\n\tpublic Object getObj() {\n\t\treturn obj;\n\t}\n\n\n\tpublic void setObj(Object obj) {\n\t\tthis.obj = obj;\n\t}\n\t\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/JsonToMobile.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class JsonToMobile implements java.io.Serializable{\n\t\n\tprivate Result result;\n\t\n\tprivate Notice notice;\n\t\n\tprivate Object obj;\n\t\n\n\n\tpublic Result getResult() {\n\t\treturn result;\n\t}\n\n\tpublic void setResult(Result result) {\n\t\tthis.result = result;\n\t}\n\n\tpublic Notice getNotice() {\n\t\treturn notice;\n\t}\n\n\tpublic void setNotice(Notice notice) {\n\t\tthis.notice = notice;\n\t}\n\n\tpublic Object getObj() {\n\t\treturn obj;\n\t}\n\n\tpublic void setObj(Object obj) {\n\t\tthis.obj = obj;\n\t}\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/Notice.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class Notice implements java.io.Serializable{\n\n\t   private int msgCount;//系统消息个数\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/PageFilter.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class PageFilter implements java.io.Serializable {\n\n\tprivate int page;// 当前页\n\tprivate int rows;// 每页显示记录数\n\tprivate String sort;// 排序字段\n\tprivate String order;// asc/desc\n\n\tpublic int getPage() {\n\t\treturn page;\n\t}\n\n\tpublic void setPage(int page) {\n\t\tthis.page = page;\n\t}\n\n\tpublic int getRows() {\n\t\treturn rows;\n\t}\n\n\tpublic void setRows(int rows) {\n\t\tthis.rows = rows;\n\t}\n\n\tpublic String getSort() {\n\t\treturn sort;\n\t}\n\n\tpublic void setSort(String sort) {\n\t\tthis.sort = sort;\n\t}\n\n\tpublic String getOrder() {\n\t\treturn order;\n\t}\n\n\tpublic void setOrder(String order) {\n\t\tthis.order = order;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/Result.java",
    "content": "package light.mvc.pageModel.base;\n\npublic class Result implements java.io.Serializable{\n\t\n    private String errorCode;\n    \n    private String errorMessage;\n    \n    private long limit;\n    \n    private boolean success= false;\n\n\tpublic String getErrorCode() {\n\t\treturn errorCode;\n\t}\n\n\tpublic void setErrorCode(String errorCode) {\n\t\tthis.errorCode = errorCode;\n\t}\n\n\tpublic String getErrorMessage() {\n\t\treturn errorMessage;\n\t}\n\n\tpublic void setErrorMessage(String errorMessage) {\n\t\tthis.errorMessage = errorMessage;\n\t}\n\n\n\tpublic long getLimit() {\n\t\treturn limit;\n\t}\n\n\tpublic void setLimit(long limit) {\n\t\tthis.limit = limit;\n\t}\n\n\tpublic boolean isSuccess() {\n\t\treturn success;\n\t}\n\n\tpublic void setSuccess(boolean success) {\n\t\tthis.success = success;\n\t}\n    \n    \n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/SessionInfo.java",
    "content": "package light.mvc.pageModel.base;\n\nimport java.util.List;\n\npublic class SessionInfo implements java.io.Serializable {\n\n\tprivate Long id;// 用户personalID\n\tprivate String loginname;// 登录名\n\tprivate String name;// 姓名\n\tprivate String roleType; //用户角色类型，例如管理员分department和final等。\n\t\n\tpublic String getRoleType() {\n\t\treturn roleType;\n\t}\n\n\tpublic void setRoleType(String roleType) {\n\t\tthis.roleType = roleType;\n\t}\n\n\tprivate String ip;// 用户IP\n\tprivate String sessionId;//服务器传送给客户端cookie的JSESSIONID\n\n\tpublic String getSessionId() {\n\t\treturn sessionId;\n\t}\n\n\tpublic void setSessionId(String sessionId) {\n\t\tthis.sessionId = sessionId;\n\t}\n\n\tprivate List<String> resourceList;// 用户可以访问的资源地址列表\n\t\n\tprivate List<String> resourceAllList;\n\n\tpublic List<String> getResourceList() {\n\t\treturn resourceList;\n\t}\n\n\tpublic void setResourceList(List<String> resourceList) {\n\t\tthis.resourceList = resourceList;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getIp() {\n\t\treturn ip;\n\t}\n\n\tpublic void setIp(String ip) {\n\t\tthis.ip = ip;\n\t}\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getLoginname() {\n\t\treturn loginname;\n\t}\n\n\tpublic void setLoginname(String loginname) {\n\t\tthis.loginname = loginname;\n\t}\n\t\n\tpublic List<String> getResourceAllList() {\n\t\treturn resourceAllList;\n\t}\n\n\tpublic void setResourceAllList(List<String> resourceAllList) {\n\t\tthis.resourceAllList = resourceAllList;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn this.name;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/base/Tree.java",
    "content": "package light.mvc.pageModel.base;\n\nimport java.util.List;\n\npublic class Tree implements java.io.Serializable {\n\n\tprivate String id;\n\tprivate String text;\n\tprivate String state = \"open\";// open,closed\n\tprivate boolean checked = false;\n\tprivate Object attributes;\n\tprivate List<Tree> children;\n\tprivate String iconCls;\n\tprivate String pid;\n\n\tpublic String getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(String id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n\n\tpublic String getState() {\n\t\treturn state;\n\t}\n\n\tpublic void setState(String state) {\n\t\tthis.state = state;\n\t}\n\n\tpublic boolean isChecked() {\n\t\treturn checked;\n\t}\n\n\tpublic void setChecked(boolean checked) {\n\t\tthis.checked = checked;\n\t}\n\n\tpublic Object getAttributes() {\n\t\treturn attributes;\n\t}\n\n\tpublic void setAttributes(Object attributes) {\n\t\tthis.attributes = attributes;\n\t}\n\n\tpublic List<Tree> getChildren() {\n\t\treturn children;\n\t}\n\n\tpublic void setChildren(List<Tree> children) {\n\t\tthis.children = children;\n\t}\n\n\tpublic String getIconCls() {\n\t\treturn iconCls;\n\t}\n\n\tpublic void setIconCls(String iconCls) {\n\t\tthis.iconCls = iconCls;\n\t}\n\n\tpublic String getPid() {\n\t\treturn pid;\n\t}\n\n\tpublic void setPid(String pid) {\n\t\tthis.pid = pid;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/manual/EFExpertList.java",
    "content": "package light.mvc.pageModel.manual;\n\nimport light.mvc.pageModel.sys.User;\n\nimport java.util.List;\n\npublic class EFExpertList implements java.io.Serializable{\n\tprivate List<User>\tlist;\n\n\tpublic List<User> getList() {\n\t\treturn list;\n\t}\n\n\tpublic void setList(List<User> list) {\n\t\tthis.list = list;\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/manual/EFmanualCategory.java",
    "content": "package light.mvc.pageModel.manual;\n\nimport java.util.Date;\n\npublic class EFmanualCategory implements java.io.Serializable{\n\n\tprotected Long id;\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer Deleted;\n\tprotected Date TS;\n\t\n\tprivate String categoryName;\n    private String categoryCode;\n    private String categoryDescription;\n    \n    private Integer isParent;\n    private String childIds;\n    private String childNames;\n    \n    private Long parentID;\n    \n    private String expertIds;\n    private String expertNames;\n\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\n\tpublic Integer getDeleted() {\n\t\treturn Deleted;\n\t}\n\n\tpublic void setDeleted(Integer deleted) {\n\t\tDeleted = deleted;\n\t}\n\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\n\tpublic String getCategoryName() {\n\t\treturn categoryName;\n\t}\n\n\tpublic void setCategoryName(String categoryName) {\n\t\tthis.categoryName = categoryName;\n\t}\n\n\tpublic String getCategoryCode() {\n\t\treturn categoryCode;\n\t}\n\n\tpublic void setCategoryCode(String categoryCode) {\n\t\tthis.categoryCode = categoryCode;\n\t}\n\n\tpublic String getCategoryDescription() {\n\t\treturn categoryDescription;\n\t}\n\n\tpublic void setCategoryDescription(String categoryDescription) {\n\t\tthis.categoryDescription = categoryDescription;\n\t}\n\n\tpublic Long getParentID() {\n\t\treturn parentID;\n\t}\n\n\tpublic void setParentID(Long parentID) {\n\t\tthis.parentID = parentID;\n\t}\n\n\tpublic String getExpertIds() {\n\t\treturn expertIds;\n\t}\n\n\tpublic void setExpertIds(String expertIds) {\n\t\tthis.expertIds = expertIds;\n\t}\n\n\tpublic String getExpertNames() {\n\t\treturn expertNames;\n\t}\n\n\tpublic void setExpertNames(String expertNames) {\n\t\tthis.expertNames = expertNames;\n\t}\n\n\tpublic Integer getIsParent() {\n\t\treturn isParent;\n\t}\n\n\tpublic void setIsParent(Integer isParent) {\n\t\tthis.isParent = isParent;\n\t}\n\n\tpublic String getChildIds() {\n\t\treturn childIds;\n\t}\n\n\tpublic void setChildIds(String childIds) {\n\t\tthis.childIds = childIds;\n\t}\n\n\tpublic String getChildNames() {\n\t\treturn childNames;\n\t}\n\n\tpublic void setChildNames(String childNames) {\n\t\tthis.childNames = childNames;\n\t}\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n    \n    \n\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/manual/EFmanualCategoryList.java",
    "content": "package light.mvc.pageModel.manual;\n\nimport java.util.List;\n\npublic class EFmanualCategoryList implements java.io.Serializable{\n\tList<EFmanualCategory> list ;\n    private Integer isParent;\n\tpublic List<EFmanualCategory> getList() {\n\t\treturn list;\n\t}\n\tpublic void setList(List<EFmanualCategory> list) {\n\t\tthis.list = list;\n\t}\n\tpublic Integer getIsParent() {\n\t\treturn isParent;\n\t}\n\tpublic void setIsParent(Integer isParent) {\n\t\tthis.isParent = isParent;\n\t}\n    \n    \n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/manual/EFmanualContent.java",
    "content": "package light.mvc.pageModel.manual;\n\nimport light.mvc.pageModel.sys.EFResourceMeta;\n\nimport java.util.Date;\nimport java.util.List;\n\npublic class EFmanualContent implements java.io.Serializable{\n\t\n\t\n\tprivate Long autoID;\n\tprivate Integer active; // 状态\n\tprivate Date createDate; // 创建时间\n\tprivate Long createBy;\n\tprivate Date updateDate;\n\tprivate Long updateBy;\n\tprivate Integer Deleted;\n\tprivate Date TS;\n\t\n\tprivate Long manualCategoryID;\n\tprivate String categoryCode;\n\tprivate String content;\n\tprivate String shortContent;\n\tprivate String title;\n\tprivate String filePath;\n\tprivate String attachmentContent;\n\tprivate String pageContent; //临时存储网页的内容\n\tprivate String keywordList;\n\tprivate String imgContent; //预览图字符串信息\n\tprivate List<EFResourceMeta> resourceList;\n\t\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn Deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tDeleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\tpublic Long getManualCategoryID() {\n\t\treturn manualCategoryID;\n\t}\n\tpublic void setManualCategoryID(Long manualCategoryID) {\n\t\tthis.manualCategoryID = manualCategoryID;\n\t}\n\tpublic String getCategoryCode() {\n\t\treturn categoryCode;\n\t}\n\tpublic void setCategoryCode(String categoryCode) {\n\t\tthis.categoryCode = categoryCode;\n\t}\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getFilePath() {\n\t\treturn filePath;\n\t}\n\tpublic void setFilePath(String filePath) {\n\t\tthis.filePath = filePath;\n\t}\n\tpublic String getAttachmentContent() {\n\t\treturn attachmentContent;\n\t}\n\tpublic void setAttachmentContent(String attachmentContent) {\n\t\tthis.attachmentContent = attachmentContent;\n\t}\n\tpublic String getPageContent() {\n\t\treturn pageContent;\n\t}\n\tpublic void setPageContent(String pageContent) {\n\t\tthis.pageContent = pageContent;\n\t}\n\tpublic String getKeywordList() {\n\t\treturn keywordList;\n\t}\n\tpublic void setKeywordList(String keywordList) {\n\t\tthis.keywordList = keywordList;\n\t}\n\n\tpublic String getShortContent(){\n\t\treturn shortContent;\n\t}\n\t\n\tpublic void setShortContent(String shortContent){\n\t\tthis.shortContent = shortContent;\n\t}\n\t\n\tpublic String getImgContent(){\n\t\treturn imgContent;\n\t}\n\t\n\tpublic void setImgContent(String imgContent){\n\t\tthis.imgContent = imgContent;\n\t}\n\t\n\tpublic List<EFResourceMeta> getResourceList(){\n\t\treturn resourceList;\n\t}\n\t\n\tpublic void setResourceList(List<EFResourceMeta> resourceList){\n\t\tthis.resourceList = resourceList;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/manual/EFmanualKeyword.java",
    "content": "package light.mvc.pageModel.manual;\n\nimport java.util.Date;\n\npublic class EFmanualKeyword {\n\n\t\n\tprivate Long autoID;\n\tprivate Integer active; // 状态\n\tprivate Date createDate; // 创建时间\n\tprivate Long createBy;\n\tprivate Date updateDate;\n\tprivate Long updateBy;\n\tprivate Integer Deleted;\n\tprivate Date TS;\n\t\n\tprivate Long manualContentID;\n\tprivate Long categoryID;\n\tprivate String categoryCode;\n\tprivate String keyword;\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn Deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tDeleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\tpublic Long getManualContentID() {\n\t\treturn manualContentID;\n\t}\n\tpublic void setManualContentID(Long manualContentID) {\n\t\tthis.manualContentID = manualContentID;\n\t}\n\tpublic Long getCategoryID() {\n\t\treturn categoryID;\n\t}\n\tpublic void setCategoryID(Long categoryID) {\n\t\tthis.categoryID = categoryID;\n\t}\n\tpublic String getCategoryCode() {\n\t\treturn categoryCode;\n\t}\n\tpublic void setCategoryCode(String categoryCode) {\n\t\tthis.categoryCode = categoryCode;\n\t}\n\tpublic String getKeyword() {\n\t\treturn keyword;\n\t}\n\tpublic void setKeyword(String keyword) {\n\t\tthis.keyword = keyword;\n\t}\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/news/EFCategory.java",
    "content": "package light.mvc.pageModel.news;\n\npublic class EFCategory implements java.io.Serializable {\n\tprivate Long autoID;\n\tprivate String categoryName;\n\tprivate String categoryDescription;\n\tprivate Long type;\n\tprivate String typeDesc;\n\tprivate String shortCategoryName;\n\n\t\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\n\tpublic String getCategoryName() {\n\t\treturn categoryName;\n\t}\n\n\tpublic void setCategoryName(String categoryName) {\n\t\tthis.categoryName = categoryName;\n\t}\n\n\tpublic String getCategoryDescription() {\n\t\treturn categoryDescription;\n\t}\n\n\tpublic void setCategoryDescription(String categoryDescription) {\n\t\tthis.categoryDescription = categoryDescription;\n\t}\n\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\t\n\tpublic String getTypeDesc() {\n\t\treturn typeDesc;\n\t}\n\n\tpublic void setTypeDesc(String typeDesc) {\n\t\tthis.typeDesc = typeDesc;\n\t}\n\t\n\tpublic String getShortCategoryName(){\n\t\treturn shortCategoryName;\n\t}\n\t\n\tpublic void setShortCategoryName(String shortCategoryName){\n\t\tthis.shortCategoryName = shortCategoryName;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/news/EFNews.java",
    "content": "package light.mvc.pageModel.news;\n\nimport light.mvc.pageModel.sys.EFResourceMeta;\n\nimport java.util.Date;\nimport java.util.List;\n\npublic class EFNews implements java.io.Serializable {\n\n\tprivate Long autoID;\n\tprivate Long personalID;\n\tprivate String author;\n\tprivate String title;\n\tprivate String content;\n\tprivate String webPath;\n\tprivate Date publishDate;\n\tprivate Integer readCount;\n\tprivate Long status;//17：编辑|18：发布\n\tprivate String statusDesc;\n\tprivate Long categoryID;\n\tprivate String categoryName;\n\tprivate String pageContent; //临时存储网页的内容\n\tprivate Date searchStartDate;\n\tprivate Date searchEndDate;\n\tprivate String attachmentContent;\n\tprivate Long categoryTypeID;\n\tprivate String categoryTypeDesc;\n\tprivate String shortTitle;\n\t\n\tList<EFResourceMeta> resourceList;\n\t\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Long getPersonalID() {\n\t\treturn personalID;\n\t}\n\tpublic void setPersonalID(Long personalID) {\n\t\tthis.personalID = personalID;\n\t}\n\tpublic String getAuthor() {\n\t\treturn author;\n\t}\n\tpublic void setAuthor(String author) {\n\t\tthis.author = author;\n\t}\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\tpublic void setTitle(String title) {\n\t\tthis.title = title;\n\t}\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\tpublic String getWebPath() {\n\t\treturn webPath;\n\t}\n\tpublic void setWebPath(String webPath) {\n\t\tthis.webPath = webPath;\n\t}\n\tpublic Date getPublishDate() {\n\t\treturn publishDate;\n\t}\n\tpublic void setPublishDate(Date publishDate) {\n\t\tthis.publishDate = publishDate;\n\t}\n\tpublic Integer getReadCount() {\n\t\treturn readCount;\n\t}\n\tpublic void setReadCount(Integer readCount) {\n\t\tthis.readCount = readCount;\n\t}\n\tpublic Long getStatus() {\n\t\treturn status;\n\t}\n\tpublic void setStatus(Long status) {\n\t\tthis.status = status;\n\t}\n\tpublic String getStatusDesc() {\n\t\treturn statusDesc;\n\t}\n\tpublic void setStatusDesc(String statusDesc) {\n\t\tthis.statusDesc = statusDesc;\n\t}\n\tpublic Long getCategoryID() {\n\t\treturn categoryID;\n\t}\n\tpublic void setCategoryID(Long categoryID) {\n\t\tthis.categoryID = categoryID;\n\t}\n\tpublic String getCategoryName() {\n\t\treturn categoryName;\n\t}\n\tpublic void setCategoryName(String categoryName) {\n\t\tthis.categoryName = categoryName;\n\t}\n\tpublic String getPageContent() {\n\t\treturn pageContent;\n\t}\n\tpublic void setPageContent(String pageContent) {\n\t\tthis.pageContent = pageContent;\n\t}\n\tpublic Date getSearchStartDate() {\n\t\treturn searchStartDate;\n\t}\n\tpublic void setSearchStartDate(Date searchStartDate) {\n\t\tthis.searchStartDate = searchStartDate;\n\t}\n\tpublic Date getSearchEndDate() {\n\t\treturn searchEndDate;\n\t}\n\tpublic void setSearchEndDate(Date searchEndDate) {\n\t\tthis.searchEndDate = searchEndDate;\n\t}\n\tpublic String getAttachmentContent() {\n\t\treturn attachmentContent;\n\t}\n\tpublic void setAttachmentContent(String attachmentContent) {\n\t\tthis.attachmentContent = attachmentContent;\n\t}\n\t\n\tpublic Long getCategoryTypeID() {\n\t\treturn categoryTypeID;\n\t}\n\tpublic void setCategoryTypeID(Long categoryTypeID) {\n\t\tthis.categoryTypeID = categoryTypeID;\n\t}\n\tpublic String getCategoryTypeDesc() {\n\t\treturn categoryTypeDesc;\n\t}\n\tpublic void setCategoryTypeDesc(String categoryTypeDesc) {\n\t\tthis.categoryTypeDesc = categoryTypeDesc;\n\t}\n\t\n\tpublic String getShortTitle(){\n\t\treturn shortTitle;\n\t}\n\tpublic void setShortTitle(String shortTitle){\n\t\tthis.shortTitle = shortTitle;\n\t}\n\tpublic List<EFResourceMeta> getResourceList() {\n\t\treturn resourceList;\n\t}\n\tpublic void setResourceList(List<EFResourceMeta> resourceList) {\n\t\tthis.resourceList = resourceList;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sensor/Sensor.java",
    "content": "package light.mvc.pageModel.sensor;\n\nimport java.util.Date;\n\n\npublic class Sensor  implements java.io.Serializable{\n\n\tprivate Long monitoringNodeId;\n\t\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\t\n\tprivate Long serialNum;\n\t\n\tprivate Integer sensor_ch;\n\t\n\tprivate Long station;\n\t\n\t\n\tprivate Double sensor1;\n\t\n\tprivate Double sensor2;\n\t\n\tprivate Double sensor3;\n\t\n\tprivate Double sensor4;\n\t\n\tprivate Double sensor5;\n\t\n\tprivate Double sensor6;\n\t\n\tprivate Double sensor7;\n\t\n\tprivate Double sensor8;\n\t\n\tprivate Double sensor9;\n\t\n\tprivate Double sensor10;\n\t\n\tprivate Double sensor11;\n\t\n\tprivate Double sensor12;\n\t\n\tprivate Double sensor13;\n\t\n\tprivate Double sensor14;\n\t\n\tprivate Double sensor15;\n\t\n\tprivate Double sensor16;\n\t\n\tprivate Double sensor17;\n\t\n\tprivate Double sensor18;\n\t\n\tprivate Double sensor19;\n\t\n\tprivate Double sensor20;\n\n\t\n\t\n\n\tpublic Long getStation() {\n\t\treturn station;\n\t}\n\n\tpublic void setStation(Long station) {\n\t\tthis.station = station;\n\t}\n\n\tpublic Long getMonitoringNodeId() {\n\t\treturn monitoringNodeId;\n\t}\n\n\tpublic void setMonitoringNodeId(Long monitoringNodeId) {\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t}\n\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\n\tpublic Double getSensor1() {\n\t\treturn sensor1;\n\t}\n\n\tpublic void setSensor1(Double sensor1) {\n\t\tthis.sensor1 = sensor1;\n\t}\n\n\tpublic Double getSensor2() {\n\t\treturn sensor2;\n\t}\n\n\tpublic void setSensor2(Double sensor2) {\n\t\tthis.sensor2 = sensor2;\n\t}\n\n\tpublic Double getSensor3() {\n\t\treturn sensor3;\n\t}\n\n\tpublic void setSensor3(Double sensor3) {\n\t\tthis.sensor3 = sensor3;\n\t}\n\n\tpublic Double getSensor4() {\n\t\treturn sensor4;\n\t}\n\n\tpublic void setSensor4(Double sensor4) {\n\t\tthis.sensor4 = sensor4;\n\t}\n\n\tpublic Double getSensor5() {\n\t\treturn sensor5;\n\t}\n\n\tpublic void setSensor5(Double sensor5) {\n\t\tthis.sensor5 = sensor5;\n\t}\n\n\tpublic Double getSensor6() {\n\t\treturn sensor6;\n\t}\n\n\tpublic void setSensor6(Double sensor6) {\n\t\tthis.sensor6 = sensor6;\n\t}\n\n\tpublic Double getSensor7() {\n\t\treturn sensor7;\n\t}\n\n\tpublic void setSensor7(Double sensor7) {\n\t\tthis.sensor7 = sensor7;\n\t}\n\n\tpublic Double getSensor8() {\n\t\treturn sensor8;\n\t}\n\n\tpublic void setSensor8(Double sensor8) {\n\t\tthis.sensor8 = sensor8;\n\t}\n\n\tpublic Double getSensor9() {\n\t\treturn sensor9;\n\t}\n\n\tpublic void setSensor9(Double sensor9) {\n\t\tthis.sensor9 = sensor9;\n\t}\n\n\tpublic Double getSensor10() {\n\t\treturn sensor10;\n\t}\n\n\tpublic void setSensor10(Double sensor10) {\n\t\tthis.sensor10 = sensor10;\n\t}\n\n\tpublic Double getSensor11() {\n\t\treturn sensor11;\n\t}\n\n\tpublic void setSensor11(Double sensor11) {\n\t\tthis.sensor11 = sensor11;\n\t}\n\n\tpublic Double getSensor12() {\n\t\treturn sensor12;\n\t}\n\n\tpublic void setSensor12(Double sensor12) {\n\t\tthis.sensor12 = sensor12;\n\t}\n\n\tpublic Double getSensor13() {\n\t\treturn sensor13;\n\t}\n\n\tpublic void setSensor13(Double sensor13) {\n\t\tthis.sensor13 = sensor13;\n\t}\n\n\tpublic Double getSensor14() {\n\t\treturn sensor14;\n\t}\n\n\tpublic void setSensor14(Double sensor14) {\n\t\tthis.sensor14 = sensor14;\n\t}\n\n\tpublic Double getSensor15() {\n\t\treturn sensor15;\n\t}\n\n\tpublic void setSensor15(Double sensor15) {\n\t\tthis.sensor15 = sensor15;\n\t}\n\n\tpublic Double getSensor16() {\n\t\treturn sensor16;\n\t}\n\n\tpublic void setSensor16(Double sensor16) {\n\t\tthis.sensor16 = sensor16;\n\t}\n\n\tpublic Double getSensor17() {\n\t\treturn sensor17;\n\t}\n\n\tpublic void setSensor17(Double sensor17) {\n\t\tthis.sensor17 = sensor17;\n\t}\n\n\tpublic Double getSensor18() {\n\t\treturn sensor18;\n\t}\n\n\tpublic void setSensor18(Double sensor18) {\n\t\tthis.sensor18 = sensor18;\n\t}\n\n\tpublic Double getSensor19() {\n\t\treturn sensor19;\n\t}\n\n\tpublic void setSensor19(Double sensor19) {\n\t\tthis.sensor19 = sensor19;\n\t}\n\n\tpublic Double getSensor20() {\n\t\treturn sensor20;\n\t}\n\n\tpublic void setSensor20(Double sensor20) {\n\t\tthis.sensor20 = sensor20;\n\t}\n\n\tpublic Long getSerialNum() {\n\t\treturn serialNum;\n\t}\n\n\tpublic void setSerialNum(Long serialNum) {\n\t\tthis.serialNum = serialNum;\n\t}\n\n\tpublic Integer getSensor_ch() {\n\t\treturn sensor_ch;\n\t}\n\n\tpublic void setSensor_ch(Integer sensor_ch) {\n\t\tthis.sensor_ch = sensor_ch;\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sensor/Station.java",
    "content": "package light.mvc.pageModel.sensor;\n\nimport java.util.Date;\n\npublic class Station implements java.io.Serializable{\n\n\t\n\tprotected Long id;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\t\n\tprivate String name;\n\tprivate String address;\n\tprivate String code;\n\tprivate Long type;\n\tprivate Long pid;\n\tprivate String linkPeople;\n\tprivate String linkPhone;\n\tprivate String Description;\n\tprivate String pname;\n\tprivate Long serialNum;\n\tprivate String loginName;\n\tprivate String password;\n\tprivate Date sensorDateUpdate;\n\t\n\n\tpublic Date getSensorDateUpdate() {\n\t\treturn sensorDateUpdate;\n\t}\n\tpublic void setSensorDateUpdate(Date sensorDateUpdate) {\n\t\tthis.sensorDateUpdate = sensorDateUpdate;\n\t}\n\tpublic String getLoginName() {\n\t\treturn loginName;\n\t}\n\tpublic void setLoginName(String loginName) {\n\t\tthis.loginName = loginName;\n\t}\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\tpublic Long getSerialNum() {\n\t\treturn serialNum;\n\t}\n\tpublic void setSerialNum(Long serialNum) {\n\t\tthis.serialNum = serialNum;\n\t}\n\tpublic String getPname() {\n\t\treturn pname;\n\t}\n\tpublic void setPname(String pname) {\n\t\tthis.pname = pname;\n\t}\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\tpublic Long getPid() {\n\t\treturn pid;\n\t}\n\tpublic void setPid(Long pid) {\n\t\tthis.pid = pid;\n\t}\n\tpublic String getLinkPeople() {\n\t\treturn linkPeople;\n\t}\n\tpublic void setLinkPeople(String linkPeople) {\n\t\tthis.linkPeople = linkPeople;\n\t}\n\tpublic String getLinkPhone() {\n\t\treturn linkPhone;\n\t}\n\tpublic void setLinkPhone(String linkPhone) {\n\t\tthis.linkPhone = linkPhone;\n\t}\n\tpublic String getDescription() {\n\t\treturn Description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tDescription = description;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sensor/monitoringNode.java",
    "content": "package light.mvc.pageModel.sensor;\n\nimport java.util.Date;\n\npublic class monitoringNode {\n\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\t\n\tprivate String name;\n\t\n\tprivate String code;\n\t\n\tprivate String map;\n\t\n\tprivate Double locationX;\n\t   \n    private Double locationY;\n    \n    private Long type;\n    \n    private Long station;\n    \n\tprivate Integer fps;\n\t\n\tprivate String address;//保留字段\n\t\n\tprivate String description;\n\t\n\tprivate Integer sensor_ch;\n\t\n\tprivate String dataKey;\n\t\n\t\n\t\n\t\n\n\tpublic String getDataKey() {\n\t\treturn dataKey;\n\t}\n\n\tpublic void setDataKey(String dataKey) {\n\t\tthis.dataKey = dataKey;\n\t}\n\n\tpublic String getMap() {\n\t\treturn map;\n\t}\n\n\tpublic void setMap(String map) {\n\t\tthis.map = map;\n\t}\n\n\tpublic Integer getSensor_ch() {\n\t\treturn sensor_ch;\n\t}\n\n\tpublic void setSensor_ch(Integer sensor_ch) {\n\t\tthis.sensor_ch = sensor_ch;\n\t}\n\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\tpublic Double getLocationX() {\n\t\treturn locationX;\n\t}\n\n\tpublic void setLocationX(Double locationX) {\n\t\tthis.locationX = locationX;\n\t}\n\n\tpublic Double getLocationY() {\n\t\treturn locationY;\n\t}\n\n\tpublic void setLocationY(Double locationY) {\n\t\tthis.locationY = locationY;\n\t}\n\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\n\tpublic Long getStation() {\n\t\treturn station;\n\t}\n\n\tpublic void setStation(Long station) {\n\t\tthis.station = station;\n\t}\n\n\tpublic Integer getFps() {\n\t\treturn fps;\n\t}\n\n\tpublic void setFps(Integer fps) {\n\t\tthis.fps = fps;\n\t}\n\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sensor/pestAndSensorDate.java",
    "content": "package light.mvc.pageModel.sensor;\n\nimport java.util.Date;\n\npublic class pestAndSensorDate {\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\tprivate String name;\n\tprivate Long type;\n\tprivate Long monitoringNodeId;\n\tprivate Long sensorId;\n\tprivate Long imgId;\n\tprivate Integer count;\n\tprivate Integer realCount;\n\tprivate String description;\n\t\n\tprivate Double sensor1;\n\tprivate Double sensor2;\n\tprivate Double sensor3;\n\tprivate Double sensor4;\n\tprivate Double sensor5;\n\tprivate Double sensor6;\n\t\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\tpublic Long getMonitoringNodeId() {\n\t\treturn monitoringNodeId;\n\t}\n\tpublic void setMonitoringNodeId(Long monitoringNodeId) {\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t}\n\tpublic Long getSensorId() {\n\t\treturn sensorId;\n\t}\n\tpublic void setSensorId(Long sensorId) {\n\t\tthis.sensorId = sensorId;\n\t}\n\tpublic Long getImgId() {\n\t\treturn imgId;\n\t}\n\tpublic void setImgId(Long imgId) {\n\t\tthis.imgId = imgId;\n\t}\n\tpublic Integer getCount() {\n\t\treturn count;\n\t}\n\tpublic void setCount(Integer count) {\n\t\tthis.count = count;\n\t}\n\tpublic Integer getRealCount() {\n\t\treturn realCount;\n\t}\n\tpublic void setRealCount(Integer realCount) {\n\t\tthis.realCount = realCount;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\tpublic Double getSensor1() {\n\t\treturn sensor1;\n\t}\n\tpublic void setSensor1(Double sensor1) {\n\t\tthis.sensor1 = sensor1;\n\t}\n\tpublic Double getSensor2() {\n\t\treturn sensor2;\n\t}\n\tpublic void setSensor2(Double sensor2) {\n\t\tthis.sensor2 = sensor2;\n\t}\n\tpublic Double getSensor3() {\n\t\treturn sensor3;\n\t}\n\tpublic void setSensor3(Double sensor3) {\n\t\tthis.sensor3 = sensor3;\n\t}\n\tpublic Double getSensor4() {\n\t\treturn sensor4;\n\t}\n\tpublic void setSensor4(Double sensor4) {\n\t\tthis.sensor4 = sensor4;\n\t}\n\tpublic Double getSensor5() {\n\t\treturn sensor5;\n\t}\n\tpublic void setSensor5(Double sensor5) {\n\t\tthis.sensor5 = sensor5;\n\t}\n\tpublic Double getSensor6() {\n\t\treturn sensor6;\n\t}\n\tpublic void setSensor6(Double sensor6) {\n\t\tthis.sensor6 = sensor6;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sensor/pestData.java",
    "content": "package light.mvc.pageModel.sensor;\n\nimport java.util.Date;\n\npublic class pestData implements java.io.Serializable{\n\tprotected Long autoID;\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer deleted;\n\tprotected Date TS;\n\tprivate String name;\n\tprivate Long type;\n\tprivate Long monitoringNodeId;\n\tprivate Long sensorId;\n\tprivate Long imgId;\n\tprivate Integer count;\n\tprivate Integer realCount;\n\tprivate String description;\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\tpublic Long getMonitoringNodeId() {\n\t\treturn monitoringNodeId;\n\t}\n\tpublic void setMonitoringNodeId(Long monitoringNodeId) {\n\t\tthis.monitoringNodeId = monitoringNodeId;\n\t}\n\tpublic Long getSensorId() {\n\t\treturn sensorId;\n\t}\n\tpublic void setSensorId(Long sensorId) {\n\t\tthis.sensorId = sensorId;\n\t}\n\tpublic Long getImgId() {\n\t\treturn imgId;\n\t}\n\tpublic void setImgId(Long imgId) {\n\t\tthis.imgId = imgId;\n\t}\n\tpublic Integer getCount() {\n\t\treturn count;\n\t}\n\tpublic void setCount(Integer count) {\n\t\tthis.count = count;\n\t}\n\tpublic Integer getRealCount() {\n\t\treturn realCount;\n\t}\n\tpublic void setRealCount(Integer realCount) {\n\t\tthis.realCount = realCount;\n\t}\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/Dictionary.java",
    "content": "package light.mvc.pageModel.sys;\n\n\npublic class Dictionary  implements java.io.Serializable{\n\t\n\tprivate Long id;\n\tprivate String code;\n\tprivate String text;\n\tprivate Long dictionarytypeId;\n\tprivate String dictionarytypeName;\n\tprivate Integer seq;\n\tprivate Integer active; // 状态 0启用 1停用\n\tprivate Integer isDefault; // 是否默认\n\t\n\n\t\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\tpublic String getText() {\n\t\treturn text;\n\t}\n\n\tpublic void setText(String text) {\n\t\tthis.text = text;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\n\tpublic Long getDictionarytypeId() {\n\t\treturn dictionarytypeId;\n\t}\n\n\tpublic void setDictionarytypeId(Long dictionarytypeId) {\n\t\tthis.dictionarytypeId = dictionarytypeId;\n\t}\n\n\tpublic String getDictionarytypeName() {\n\t\treturn dictionarytypeName;\n\t}\n\n\tpublic void setDictionarytypeName(String dictionarytypeName) {\n\t\tthis.dictionarytypeName = dictionarytypeName;\n\t}\n\n\tpublic Integer getIsDefault() {\n\t\treturn isDefault;\n\t}\n\n\tpublic void setIsDefault(Integer isDefault) {\n\t\tthis.isDefault = isDefault;\n\t}\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/Dictionarytype.java",
    "content": "package light.mvc.pageModel.sys;\n\n\npublic class Dictionarytype  implements java.io.Serializable{\n\t\n\tprivate Long id;\n\tprivate String code;\n\tprivate String name;\n\tprivate Integer seq;\n\tprivate String description;\n\tprivate String pid;\n\t\n\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\tpublic void setCode(String code) {\n\t\tthis.code = code;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic String getPid() {\n\t\treturn pid;\n\t}\n\n\tpublic void setPid(String pid) {\n\t\tthis.pid = pid;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/EFNotice.java",
    "content": "package light.mvc.pageModel.sys;\n\nimport java.util.Date;\n\npublic class EFNotice {\n\n\t\n\tprivate Long autoID;\n\tprivate Integer active; // 状态\n\tprivate Date createDate; // 创建时间\n\tprivate Long createBy;\n\tprivate Date updateDate;\n\tprivate Long updateBy;\n\tprivate Integer deleted;\n\tprivate Date ts;\n\t\n\t\n\tprivate Long type;\n\tprivate String typeName;\n\tprivate Long metaID;\n\tprivate Long personalID;\n\tprivate String personalName;\n\tprivate String content;\n\tprivate Integer isNotice;\n\tpublic EFNotice() {\n\t\tsuper();\n\t\t// TODO Auto-generated constructor stub\n\t}\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\tpublic Integer getDeleted() {\n\t\treturn deleted;\n\t}\n\tpublic void setDeleted(Integer deleted) {\n\t\tthis.deleted = deleted;\n\t}\n\tpublic Date getTS() {\n\t\treturn ts;\n\t}\n\tpublic void setTS(Date tS) {\n\t\tthis.ts = tS;\n\t}\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\tpublic String getTypeName() {\n\t\treturn typeName;\n\t}\n\tpublic void setTypeName(String typeName) {\n\t\tthis.typeName = typeName;\n\t}\n\tpublic Long getMetaID() {\n\t\treturn metaID;\n\t}\n\tpublic void setMetaID(Long metaID) {\n\t\tthis.metaID = metaID;\n\t}\n\tpublic Long getPersonalID() {\n\t\treturn personalID;\n\t}\n\tpublic void setPersonalID(Long personalID) {\n\t\tthis.personalID = personalID;\n\t}\n\tpublic String getPersonalName() {\n\t\treturn personalName;\n\t}\n\tpublic void setPersonalName(String personalName) {\n\t\tthis.personalName = personalName;\n\t}\n\tpublic String getContent() {\n\t\treturn content;\n\t}\n\tpublic void setContent(String content) {\n\t\tthis.content = content;\n\t}\n\tpublic Integer getIsNotice() {\n\t\treturn isNotice;\n\t}\n\tpublic void setIsNotice(Integer isNotice) {\n\t\tthis.isNotice = isNotice;\n\t}\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/EFResourceMeta.java",
    "content": "package light.mvc.pageModel.sys;\n\nimport java.util.Date;\n\npublic class EFResourceMeta  implements java.io.Serializable{\n\t\n\tprivate Long autoID;\n\tprivate Long type;\n\tprivate Long metaID;\n\tprivate String typeName;\n\tprivate String metaPath;\n\tprivate String thumbMetaPath;\n\tprivate String metaDescription;\n\tprivate Date createDate;\n\tprivate Date updateDate;\n\tprivate String createDateDesc;\n\tprivate Integer count;\n\t\n\tprivate String address;\n\tprivate String description;\n\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\t\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\t\n\tpublic Long getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(Long type) {\n\t\tthis.type = type;\n\t}\n\t\n\tpublic Long getMetaID() {\n\t\treturn metaID;\n\t}\n\n\tpublic void setMetaID(Long metaID) {\n\t\tthis.metaID = metaID;\n\t}\n\n\tpublic String getMetaPath() {\n\t\treturn metaPath;\n\t}\n\n\tpublic void setMetaPath(String metaPath) {\n\t\tthis.metaPath = metaPath;\n\t}\n\t\n\tpublic String getThumbMetaPath() {\n\t\treturn thumbMetaPath;\n\t}\n\n\tpublic void setThumbMetaPath(String thumbMetaPath) {\n\t\tthis.thumbMetaPath = thumbMetaPath;\n\t}\n\t\n\tpublic String getMetaDescription() {\n\t\treturn metaDescription;\n\t}\n\n\tpublic void setMetaDescription(String metaDescription) {\n\t\tthis.metaDescription = metaDescription;\n\t}\n\n\tpublic String getTypeName() {\n\t\treturn typeName;\n\t}\n\n\tpublic void setTypeName(String typeName) {\n\t\tthis.typeName = typeName;\n\t}\n\t\n\tpublic Date getCreateDate(){\n\t\treturn createDate;\n\t}\n\t\n\tpublic void setCreateDate(Date createDate){\n\t\tthis.createDate = createDate;\n\t}\n\t\n\tpublic String getCreateDateDesc(){\n\t\treturn createDateDesc;\n\t}\n\t\n\tpublic void setCreateDateDesc(String createDateDesc){\n\t\tthis.createDateDesc = createDateDesc;\n\t}\n\t\n\tpublic Integer getCount(){\n\t\treturn count;\n\t}\n\t\n\tpublic void setCount(Integer count){\n\t\tthis.count = count;\n\t}\n\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/Organization.java",
    "content": "package light.mvc.pageModel.sys;\n\nimport java.util.Date;\n\npublic class Organization  implements java.io.Serializable {\n\n\tprivate Long id;\n\tprivate Date createDate;\n\tprivate String departmentName;\n\tprivate String address;\n\tprivate String departmentCode;\n\tprivate String iconCls;\n\tprivate String icon;\n\tprivate Integer seq;\n\tprivate Long pid;\n\tprivate String pname;\n\n\tpublic Organization() {\n\t}\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getAddress() {\n\t\treturn this.address;\n\t}\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\n\tpublic String getIconCls() {\n\t\treturn iconCls;\n\t}\n\n\tpublic void setIconCls(String iconCls) {\n\t\tthis.iconCls = iconCls;\n\t}\n\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn this.seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Long getPid() {\n\t\treturn pid;\n\t}\n\n\tpublic void setPid(Long pid) {\n\t\tthis.pid = pid;\n\t}\n\n\tpublic String getPname() {\n\t\treturn pname;\n\t}\n\n\tpublic void setPname(String pname) {\n\t\tthis.pname = pname;\n\t}\n\n\tpublic Date getCreatedatetime() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreatedatetime(Date createdatetime) {\n\t\tthis.createDate = createdatetime;\n\t}\n\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic String getDepartmentName() {\n\t\treturn departmentName;\n\t}\n\n\tpublic void setDepartmentName(String departmentName) {\n\t\tthis.departmentName = departmentName;\n\t}\n\n\tpublic String getDepartmentCode() {\n\t\treturn departmentCode;\n\t}\n\n\tpublic void setDepartmentCode(String departmentCode) {\n\t\tthis.departmentCode = departmentCode;\n\t}\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/Resource.java",
    "content": "package light.mvc.pageModel.sys;\n\nimport java.util.Date;\n\npublic class Resource implements java.io.Serializable {\n\n\tprivate Long pid;\n\tprivate String pname;\n\n\tprivate Long id;\n\tprivate Date createDate; // 创建时间\n\tprivate String name; // 名称\n\tprivate String url; // 菜单路径\n\tprivate String description; // 描述\n\tprivate String iconCls; // 图标\n\tprivate Integer seq; // 排序号\n\tprivate Integer resourcetype; // 资源类型, 0菜单 1功能\n\tprivate Integer cstate; // 状态 0启用 1停用\n\tprivate String icon;\n\n\tpublic Resource() {\n\t}\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic Long getPid() {\n\t\treturn pid;\n\t}\n\n\tpublic void setPid(Long pid) {\n\t\tthis.pid = pid;\n\t}\n\n\tpublic Date getCreatedatetime() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreatedatetime(Date createdatetime) {\n\t\tthis.createDate = createdatetime;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\tpublic String getIconCls() {\n\t\treturn iconCls;\n\t}\n\n\tpublic void setIconCls(String iconCls) {\n\t\tthis.iconCls = iconCls;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Integer getResourcetype() {\n\t\treturn resourcetype;\n\t}\n\n\tpublic void setResourcetype(Integer resourcetype) {\n\t\tthis.resourcetype = resourcetype;\n\t}\n\n\tpublic String getPname() {\n\t\treturn pname;\n\t}\n\n\tpublic void setPname(String pname) {\n\t\tthis.pname = pname;\n\t}\n\n\tpublic Integer getCstate() {\n\t\treturn cstate;\n\t}\n\n\tpublic void setCstate(Integer cstate) {\n\t\tthis.cstate = cstate;\n\t}\n\n\tpublic String getIcon() {\n\t\treturn icon;\n\t}\n\n\tpublic void setIcon(String icon) {\n\t\tthis.icon = icon;\n\t}\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/Role.java",
    "content": "package light.mvc.pageModel.sys;\n\npublic class Role implements java.io.Serializable {\n\n\tprivate Long id;\n\tprivate String name; // 角色名称\n\tprivate Integer seq; // 排序号\n\tprivate Integer isdefault; // 是否默认\n\tprivate String description; // 备注\n\n\tprivate String resourceIds;\n\tprivate String resourceNames;\n\n\tpublic Long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(Long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic Integer getSeq() {\n\t\treturn seq;\n\t}\n\n\tpublic void setSeq(Integer seq) {\n\t\tthis.seq = seq;\n\t}\n\n\tpublic Integer getIsdefault() {\n\t\treturn isdefault;\n\t}\n\n\tpublic void setIsdefault(Integer isdefault) {\n\t\tthis.isdefault = isdefault;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\tpublic String getResourceIds() {\n\t\treturn resourceIds;\n\t}\n\n\tpublic void setResourceIds(String resourceIds) {\n\t\tthis.resourceIds = resourceIds;\n\t}\n\n\tpublic String getResourceNames() {\n\t\treturn resourceNames;\n\t}\n\n\tpublic void setResourceNames(String resourceNames) {\n\t\tthis.resourceNames = resourceNames;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/pageModel/sys/User.java",
    "content": "package light.mvc.pageModel.sys;\n\nimport java.util.Date;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic class User implements java.io.Serializable {\n\t//autoID为personalinfo表的AutoID\n\tprivate Long autoID;\n\t//loginAutoID为loginuser表的AutoID\n\tprivate Long loginAutoID;\n\t\n\tprotected Integer active; // 状态\n\tprotected Date createDate; // 创建时间\n\tprotected Long createBy;\n\tprotected Date updateDate;\n\tprotected Long updateBy;\n\tprotected Integer Deleted;\n\tprotected Date TS;\n\t\n\t\n\tprivate String loginName; // 登录名\n\tprivate String password; // 密码\n\tprivate Date lastLoginTime; // 上次登录时间\n\tprivate Integer states; // 状态\n    private Integer isdefault;\n\t\n\tprivate String realName;\n\tprivate String phoneNumber;\n\tprivate Integer sex;\n\tprivate Integer age;\n\tprivate String email;\n\tprivate String address;\n\n\tprivate String techType;\n\tprivate String description;\n\tprivate String techTitle;\n\tprivate Integer needPublish;\n\n\tprivate Long organizationId;\n\tprivate String organizationName;\n\n\tprivate Long roleIds;\n\tprivate String roleNames;\n\t\n\tprivate String manualIDs;\n\tprivate String manualNames;\n\t\n\tprivate String searchKey;\n\tprivate String searchValue;\n\t\n\tprivate boolean auditor;\n\t\n\tprivate String imagePath;\t//用户图像路径\n\n\tpublic User() {\n\t\tsuper();\n\t}\n\n\n\n\tpublic Long getAutoID() {\n\t\treturn autoID;\n\t}\n\n\n\n\tpublic void setAutoID(Long autoID) {\n\t\tthis.autoID = autoID;\n\t}\n\t\n\tpublic Long getLoginAutoID() {\n\t\treturn loginAutoID;\n\t}\n\n\n\n\tpublic void setLoginAutoID(Long loginAutoID) {\n\t\tthis.loginAutoID = loginAutoID;\n\t}\n\t\n\n\n\n\tpublic Integer getActive() {\n\t\treturn active;\n\t}\n\n\tpublic void setActive(Integer active) {\n\t\tthis.active = active;\n\t}\n\n\tpublic Date getCreateDate() {\n\t\treturn createDate;\n\t}\n\n\tpublic void setCreateDate(Date createDate) {\n\t\tthis.createDate = createDate;\n\t}\n\n\tpublic Long getCreateBy() {\n\t\treturn createBy;\n\t}\n\n\tpublic void setCreateBy(Long createBy) {\n\t\tthis.createBy = createBy;\n\t}\n\n\tpublic Date getUpdateDate() {\n\t\treturn updateDate;\n\t}\n\n\tpublic void setUpdateDate(Date updateDate) {\n\t\tthis.updateDate = updateDate;\n\t}\n\n\tpublic Long getUpdateBy() {\n\t\treturn updateBy;\n\t}\n\n\tpublic void setUpdateBy(Long updateBy) {\n\t\tthis.updateBy = updateBy;\n\t}\n\n\tpublic Integer getDeleted() {\n\t\treturn Deleted;\n\t}\n\n\tpublic void setDeleted(Integer deleted) {\n\t\tDeleted = deleted;\n\t}\n\n\tpublic Date getTS() {\n\t\treturn TS;\n\t}\n\n\tpublic void setTS(Date tS) {\n\t\tTS = tS;\n\t}\n\n\tpublic String getLoginName() {\n\t\treturn loginName;\n\t}\n\n\tpublic void setLoginName(String loginName) {\n\t\tthis.loginName = loginName;\n\t}\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n\tpublic Date getLastLoginTime() {\n\t\treturn lastLoginTime;\n\t}\n\n\tpublic void setLastLoginTime(Date lastLoginTime) {\n\t\tthis.lastLoginTime = lastLoginTime;\n\t}\n\n\tpublic Integer getStates() {\n\t\treturn states;\n\t}\n\n\tpublic void setStates(Integer states) {\n\t\tthis.states = states;\n\t}\n\n\tpublic Integer getIsdefault() {\n\t\treturn isdefault;\n\t}\n\n\tpublic void setIsdefault(Integer isdefault) {\n\t\tthis.isdefault = isdefault;\n\t}\n\n\tpublic String getRealName() {\n\t\treturn realName;\n\t}\n\n\tpublic void setRealName(String realName) {\n\t\tthis.realName = realName;\n\t}\n\n\tpublic String getPhoneNumber() {\n\t\treturn phoneNumber;\n\t}\n\n\tpublic void setPhoneNumber(String phoneNumber) {\n\t\tthis.phoneNumber = phoneNumber;\n\t}\n\n\tpublic Integer getSex() {\n\t\treturn sex;\n\t}\n\n\tpublic void setSex(Integer sex) {\n\t\tthis.sex = sex;\n\t}\n\n\tpublic Integer getAge() {\n\t\treturn age;\n\t}\n\n\tpublic void setAge(Integer age) {\n\t\tthis.age = age;\n\t}\n\n\tpublic String getEmail() {\n\t\treturn email;\n\t}\n\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\n\tpublic String getAddress() {\n\t\treturn address;\n\t}\n\n\tpublic void setAddress(String address) {\n\t\tthis.address = address;\n\t}\n\n\tpublic String getTechType() {\n\t\treturn techType;\n\t}\n\n\tpublic void setTechType(String techType) {\n\t\tthis.techType = techType;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn description;\n\t}\n\n\tpublic void setDescription(String description) {\n\t\tthis.description = description;\n\t}\n\n\tpublic Long getOrganizationId() {\n\t\treturn organizationId;\n\t}\n\n\tpublic void setOrganizationId(Long organizationId) {\n\t\tthis.organizationId = organizationId;\n\t}\n\n\tpublic String getOrganizationName() {\n\t\treturn organizationName;\n\t}\n\n\tpublic void setOrganizationName(String organizationName) {\n\t\tthis.organizationName = organizationName;\n\t}\n\n\tpublic Long getRoleIds() {\n\t\treturn roleIds;\n\t}\n\n\tpublic void setRoleIds(Long roleIds) {\n\t\tthis.roleIds = roleIds;\n\t}\n\n\tpublic String getRoleNames() {\n\t\treturn roleNames;\n\t}\n\n\tpublic void setRoleNames(String roleNames) {\n\t\tthis.roleNames = roleNames;\n\t}\n\n\n\n\tpublic String getManualIDs() {\n\t\treturn manualIDs;\n\t}\n\n\n\n\tpublic void setManualIDs(String manualIDs) {\n\t\tthis.manualIDs = manualIDs;\n\t}\n\n\n\n\tpublic String getManualNames() {\n\t\treturn manualNames;\n\t}\n\n\n\n\tpublic void setManualNames(String manualNames) {\n\t\tthis.manualNames = manualNames;\n\t}\n\n\tpublic String getTechTitle() {\n\t\treturn techTitle;\n\t}\n\t\n\tpublic void setTechTitle(String techTitle) {\n\t\tthis.techTitle = techTitle;\n\t}\n\t\n\tpublic Integer getNeedPublish(){\n\t\treturn needPublish;\n\t}\n\t\n\tpublic void setNeedPublish(Integer needPublish) {\n\t\tthis.needPublish = needPublish;\n\t}\n\n\n\n\tpublic String getSearchKey() {\n\t\treturn searchKey;\n\t}\n\n\n\n\tpublic void setSearchKey(String searchKey) {\n\t\tthis.searchKey = searchKey;\n\t}\n\n\n\n\tpublic String getSearchValue() {\n\t\treturn searchValue;\n\t}\n\n\n\n\tpublic void setSearchValue(String searchValue) {\n\t\tthis.searchValue = searchValue;\n\t}\n\n\n\n\tpublic boolean isAuditor() {\n\t\treturn auditor;\n\t}\n\n\n\n\tpublic void setAuditor(boolean auditor) {\n\t\tthis.auditor = auditor;\n\t}\n\n\tpublic String getImagePath(){\n\t\treturn imagePath;\n\t}\n\t\n\tpublic void setImagePath(String imagePath){\n\t\tthis.imagePath = imagePath;\n\t}\n\n\t\n}"
  },
  {
    "path": "src/main/java/light/mvc/service/base/ServiceException.java",
    "content": "package light.mvc.service.base;\n\n/**\n * Service层公用的Exception.\n * \n * 继承自RuntimeException, 从由Spring管理事务的函数中抛出时会触发事务回滚.\n * \n */\npublic class ServiceException extends RuntimeException {\n\n\tprivate static final long serialVersionUID = 1401593546385403720L;\n\n\tpublic ServiceException() {\n\t\tsuper();\n\t}\n\n\tpublic ServiceException(String message) {\n\t\tsuper(message);\n\t}\n\n\tpublic ServiceException(Throwable cause) {\n\t\tsuper(cause);\n\t}\n\n\tpublic ServiceException(String message, Throwable cause) {\n\t\tsuper(message, cause);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/impl/manual/EFManualCategoryServiceImpl.java",
    "content": "package light.mvc.service.impl.manual;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.manual.TEFmanualCategory;\nimport light.mvc.model.sys.TEFPersonalInfo;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.manual.EFExpertList;\nimport light.mvc.pageModel.manual.EFmanualCategory;\nimport light.mvc.pageModel.manual.EFmanualCategoryList;\nimport light.mvc.pageModel.sys.User;\nimport light.mvc.service.manual.EFManualCategoryServiceI;\nimport light.mvc.utils.coder;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.*;\n\n@Service\npublic class EFManualCategoryServiceImpl implements EFManualCategoryServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFmanualCategory> categoryDao;\n\t\n\t@Override\n\tpublic void add(EFmanualCategory category) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualCategory t = new TEFmanualCategory();\t\n\t\tif(category.getParentID()==null)\n\t\t{\n\t\t\tcategory.setParentID((long)0);\n\t\t}\n\t\tBeanUtils.copyProperties(category,t);\n\t\tif(category.getParentID()!=null)\n\t\t{\n\t\t\tcoder c= new coder();\n\t\t\tt.setParent(categoryDao.get(TEFmanualCategory.class, category.getParentID()));\n\t\t\tString pre=t.getParent().getCategoryCode();\n\t\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\t\tString sql = \" select count(*) from manualcategory t where t.deleted=0 and t.parentid=:parentid\";\n\t\t\tparams.put(\"parentid\", category.getParentID());\n\t\t\tLong count= categoryDao.countBySql(sql, params).longValue();\n\t\t\tt.setCategoryCode(coder.getCoder(pre, count + 1));\n\t\t}\n\t\tcategoryDao.save(t);\n\n\t}\n\n\t@Override\n\tpublic List<EFmanualCategory> dataGrid(EFmanualCategory category,\n\t\t\tPageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualCategory> ul = new ArrayList<EFmanualCategory>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualCategory t \";\n\t\tList<TEFmanualCategory> l = categoryDao.find(hql +whereHql(category, params)+ orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\tfor (TEFmanualCategory t : l) {\n\t\t\tEFmanualCategory u = new EFmanualCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tif(t.getParent()!=null)\n\t\t\t{\n\t\t    u.setParentID(t.getParent().getAutoID());\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic List<EFmanualCategory> getAllData() {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tString hql = \" from TEFmanualCategory t \";\n\t\tList<TEFmanualCategory> l = categoryDao.find(hql);\n\t\tList<EFmanualCategory> ul = new ArrayList<EFmanualCategory>();\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\tfor (TEFmanualCategory t : l) {\n\t\t\tEFmanualCategory u = new EFmanualCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tif(t.getParent()!=null)\n\t\t\t{\n\t\t    u.setParentID(t.getParent().getAutoID());\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFmanualCategory category, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualCategory t \";\n\t\treturn categoryDao.count(\"select count(*) \" + hql + whereHql(category, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id, HttpServletRequest request) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualCategory t= categoryDao.get(TEFmanualCategory.class,id);\n\t\tt.setUpdateDate(new Date());\n\t\tt.setDeleted(1);\n\t\tcategoryDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFmanualCategory get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFmanualCategory t = categoryDao.get(\"from TEFmanualCategory t  where t.autoID = :id\", params);\n\t\tEFmanualCategory u = new EFmanualCategory();\n\t\tBeanUtils.copyProperties(t, u);\n\t\tif(t.getParent()!=null)\n\t\t{\n\t    u.setParentID(t.getParent().getAutoID());\n\t\t}\n\t\tSet<TEFPersonalInfo> s=t.getUsers();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor(TEFPersonalInfo tr:s)\n\t\t\t{\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=tr.getAutoID();\n\t\t\t\tnames+=tr.getRealName();\n\t\t\t}\n\t\t\tu.setExpertIds(ids);\n\t\t\tu.setExpertNames(names);\n\t\t\t\n\t\t}\n\t\t\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic void edit(EFmanualCategory data) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualCategory t=categoryDao.get(TEFmanualCategory.class, data.getAutoID());\n\t\tt.setCategoryCode(data.getCategoryCode());\n\t\tt.setCategoryDescription(data.getCategoryDescription());\n\t\tt.setCategoryName(data.getCategoryName());\n\t\tif(data.getParentID()!=0)\n\t\t{\n\t\tTEFmanualCategory category=categoryDao.get(TEFmanualCategory.class, data.getParentID());\n\t\tt.setParent(category);\n\t\t}\n\t\tcategoryDao.update(t);\n\t}\n\n\t\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFmanualCategory category, Map<String, Object> params) {//待修改\n\t\tString hql = \"\";\n\t\tif (category != null) {\n\t\t\thql += \" where t.deleted=0 \";\n\t\t\tif(category.getCategoryCode()!=null)\n\t\t\t{\n\t\t\t\thql+=\"and t.categoryCode like :categoryCode\";\n\t\t\t\tparams.put(\"categoryCode\",category.getCategoryCode()+\"%%\");\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic List<Tree> tree() {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tList<TEFmanualCategory> l=null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tl= categoryDao.find(\"from TEFmanualCategory t\");\n\t\t\n\t\tif(l!=null && (l.size()>0))\n\t\t{\n\t\t\tfor(TEFmanualCategory r: l)\n\t\t\t{\n\t\t\t\tTree tree= new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif(r.getParent()!=null)\n\t\t\t\t{\n\t\t\t\t\ttree.setPid(r.getParent().getAutoID().toString());\n\t\t\t\t}else\n\t\t\t\t{\n\t\t\t\t\ttree.setState(\"closed\");\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getCategoryName());\n\t\t\t\tMap<String, Object> code = new HashMap<String, Object>();\n\t\t\t\tcode.put(\"code\", r.getCategoryCode());\n\t\t\t\ttree.setAttributes(code);\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic List<Tree> allTree() {\n\t\t// TODO Auto-generated method stub\n\t\tList<TEFmanualCategory> l=null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tl= categoryDao.find(\"select distinct t from TEFmanualCategory t left join fetch t.parent \");\n\t\tif(l!=null && (l.size()>0))\n\t\t{\n\t\t\tfor(TEFmanualCategory r: l)\n\t\t\t{\n\t\t\t\tTree tree= new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif(r.getParent()!=null)\n\t\t\t\t{\n\t\t\t\t\ttree.setPid(r.getParent().getAutoID().toString());\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getCategoryName());\n\t\t\t\tMap<String, Object> code = new HashMap<String, Object>();\n\t\t\t\tcode.put(\"code\", r.getCategoryCode());\n\t\t\t\ttree.setAttributes(code);\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic EFmanualCategory getExpertAndChild(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFmanualCategory t = categoryDao.get(\"from TEFmanualCategory t  where t.autoID = :id\", params);\n\t\tEFmanualCategory u = new EFmanualCategory();\n\t\tBeanUtils.copyProperties(t, u);\n\t\tif(t.getParent()!=null)\n\t\t{\n\t    u.setParentID(t.getParent().getAutoID());\n\t\t}\n\t\tSet<TEFPersonalInfo> s=t.getUsers();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor(TEFPersonalInfo tr:s)\n\t\t\t{\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=tr.getAutoID();\n\t\t\t\tnames+=tr.getRealName();\n\t\t\t}\n\t\t\tu.setExpertIds(ids);\n\t\t\tu.setExpertNames(names);\n\t\t\t\n\t\t}\n\t\tString hql=\"from TEFmanualCategory t where t.parent.autoID =:id\";\n\t\tList<TEFmanualCategory> trs = categoryDao.find(hql, params);\n\t\tif((trs!=null)&&(trs.size()>0))\n\t\t{\n\t\t\tu.setIsParent(1);\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor(TEFmanualCategory tt:trs)\n\t\t\t{\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=tt.getAutoID();\n\t\t\t\tnames+=tt.getCategoryName();\n\t\t\t}\n\t\t\tu.setChildIds(ids);\n\t\t\tu.setChildNames(names);\n\t\t\t\n\t\t}\n\t\t\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic EFmanualCategoryList getChild(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\t//System.out.println(id);\n\t\tparams.put(\"id\", id);\n\t\tString hql=\"from TEFmanualCategory t where t.parent.autoID =:id\";\n\t\tList<TEFmanualCategory> l = categoryDao.find(hql,params);\n\t\tList<EFmanualCategory> ul = new ArrayList<EFmanualCategory>();\n\t\tEFmanualCategoryList list= new EFmanualCategoryList();\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tlist.setIsParent(1);\n\t\tfor (TEFmanualCategory t : l) {\n\t\t\tEFmanualCategory u = new EFmanualCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tif(t.getParent()!=null)\n\t\t\t{\n\t\t    u.setParentID(t.getParent().getAutoID());\n\t\t\t}\n\t\t\tlong childPid=t.getAutoID();\n\t\t\tMap<String, Object> params2 = new HashMap<String, Object>();\n\t\t\tparams2.put(\"childPid\", childPid);\n\t\t\tString hql2 = \" select count(*) from TEFmanualCategory t  where t.parent.autoID =:childPid\";\n\t\t\tif(categoryDao.count(hql2, params2)>0)\n\t\t\t{\n\t\t\t\tu.setIsParent(1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tu.setIsParent(0);\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\tlist.setList(ul);\n\t\treturn list;\n\t\t\t\n\t\t\n\t}\n\n\t@Override\n\tpublic EFExpertList getExpertList(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFmanualCategory t = categoryDao.get(\"from TEFmanualCategory t  where t.autoID = :id\", params);\n\t\tSet<TEFPersonalInfo> s=t.getUsers();\n\t\t List<User>\tul = new ArrayList<User>();\n\t\t EFExpertList list = new EFExpertList();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tfor(TEFPersonalInfo tr:s)\n\t\t\t{\n\t\t\t\tUser u= new User();\n\t\t\t\tBeanUtils.copyProperties(tr, u);\n\t\t\t\tul.add(u);\n\t\t\t}\n\t\t \n\t\t}\n\t\tlist.setList(ul);\n\t\t\n\t\n\t\treturn list;\n\t}\n\n\t@Override\n\tpublic List<EFmanualCategory> getByPid(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tList<EFmanualCategory> ul = new ArrayList<EFmanualCategory>();\n\t\tList<TEFmanualCategory> l;\n\t\t//System.out.println(id);\n\t\tif(id!=0)\n\t\t{\n\t\tparams.put(\"id\", id);\n\t\tString hql=\"from TEFmanualCategory t where t.parent.autoID =:id and t.deleted=0\";\n\t\t l = categoryDao.find(hql,params);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tString hql=\"from TEFmanualCategory t where t.parent= null and t.deleted=0\";\n\t       l = categoryDao.find(hql);\n\n\t\t}\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\tfor (TEFmanualCategory t : l) {\n\t\t\tEFmanualCategory u = new EFmanualCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\t\n\t\treturn ul;\n\t\t\n\t}\n\n\t@Override\n\tpublic List<Tree> getTreeByCode(String categoryCode) {\n\t\t// TODO Auto-generated method stub\n\t\tList<TEFmanualCategory> l=null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"categoryCode\", \"%%\"+categoryCode+\"%%\");\n\t\tl= categoryDao.find(\"select distinct t from TEFmanualCategory t left join fetch t.parent where t.categoryCode like :categoryCode and t.deleted=0\",params);\n\t\tif(l!=null && (l.size()>0))\n\t\t{\n\t\t\tfor(TEFmanualCategory r: l)\n\t\t\t{\n\t\t\t\tTree tree= new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif(r.getParent()!=null)\n\t\t\t\t{\n\t\t\t\t\ttree.setPid(r.getParent().getAutoID().toString());\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getCategoryName());\n\t\t\t\tMap<String, Object> code = new HashMap<String, Object>();\n\t\t\t\tcode.put(\"code\", r.getCategoryCode());\n\t\t\t\ttree.setAttributes(code);\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\t//System.out.println(l.size());\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic List<EFmanualCategory> treeGrid(EFmanualCategory category) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualCategory> ul = new ArrayList<EFmanualCategory>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" select distinct t from TEFmanualCategory t left join fetch t.parent \";\n\t\tif(category.getCategoryCode()!=null)\n\t\t{\n\t\t\tparams.put(\"categoryCode\", \"%%\"+category.getCategoryCode()+\"%%\");\n\t\t\thql+=\"where t.categoryCode like :categoryCode and t.deleted=0\";\n\t\t\t\n\t\t}\n\t\tList<TEFmanualCategory> l = categoryDao.find(hql, params);\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\tfor (TEFmanualCategory t : l) {\n\t\t\tEFmanualCategory u = new EFmanualCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tu.setId(t.getAutoID());\n\t\t\tif(t.getParent()!=null)\n\t\t\t{\n\t\t    u.setParentID(t.getParent().getAutoID());\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic EFmanualCategory getByCode(String code) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"code\", code);\n\t\tTEFmanualCategory t = categoryDao.get(\"from TEFmanualCategory t  where t.categoryCode = :code\", params);\n\t\tEFmanualCategory u = new EFmanualCategory();\n\t\tBeanUtils.copyProperties(t, u);\n\t\tif(t.getParent()!=null)\n\t\t{\n\t    u.setParentID(t.getParent().getAutoID());\n\t\t}\n\t\tSet<TEFPersonalInfo> s=t.getUsers();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor(TEFPersonalInfo tr:s)\n\t\t\t{\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=tr.getAutoID();\n\t\t\t\tnames+=tr.getRealName();\n\t\t\t}\n\t\t\tu.setExpertIds(ids);\n\t\t\tu.setExpertNames(names);\n\t\t\t\n\t\t}\n\t\t\n\t\treturn u;\n\t}\n\t\n\t\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/impl/manual/EFManualContentServiceImpl.java",
    "content": "package light.mvc.service.impl.manual;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.manual.TEFmanualContent;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.manual.EFmanualContent;\nimport light.mvc.service.manual.EFManualContentServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n\n@Service\npublic class EFManualContentServiceImpl implements EFManualContentServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFmanualContent> manualDao;\n\t\n\t@Override\n\tpublic Long add(EFmanualContent m) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualContent t = new TEFmanualContent();\n\t\tBeanUtils.copyProperties(m,t);\n\t\tmanualDao.save(t);\n\t\treturn t.getAutoID();\n\t}\n\n\t@Override\n\tpublic List<EFmanualContent> dataGrid(EFmanualContent news, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tList<EFmanualContent> ul = new ArrayList<EFmanualContent>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualContent t \";\n\t\tList<TEFmanualContent> l = manualDao.find(hql + whereHql(news, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\n\t\tfor (TEFmanualContent t : l) {\n\t\t\tEFmanualContent u = new EFmanualContent();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\t//eed.setAsText(u.getContent());\n\t\t\t//u.setContent(eed.getAsText());\n\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFmanualContent news, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualContent t \";\n\t\treturn manualDao.count(\"select count(*) \" + hql + whereHql(news, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualContent t= manualDao.get(TEFmanualContent.class,id);\n\t\tt.setDeleted(1);\n\t\tt.setUpdateDate(new Date());\n\t\tmanualDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFmanualContent get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFmanualContent t = manualDao.get(\"from TEFmanualContent t  where t.autoID = :id\", params);\n\t\tEFmanualContent u = new EFmanualContent();\n\t\tBeanUtils.copyProperties(t, u);\n\n\t\treturn u;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFmanualContent news, Map<String, Object> params) {//待修改\n\t\tString hql = \"\";\n\t\tif (news != null) {\n\t\t\thql += \" where t.deleted=0 \";\n\t\t\tif(news.getCategoryCode() != null && news.getCategoryCode().length() > 0){\n\t\t\t\thql += \" and t.categoryCode like :categoryCode\";\n\t\t\t\tparams.put(\"categoryCode\", news.getCategoryCode()+\"%%\");\n\t\t\t}\n\t\t\tif(news.getTitle() != null && news.getTitle().length() > 0){\n\t\t\t\thql += \" and t.title like :searchKey\";\n\t\t\t\tparams.put(\"searchKey\", \"%%\"+news.getTitle()+\"%%\");\n\t\t\t}\n\t\t\tif(news.getManualCategoryID()!=null)\n\t\t\t{\n\t\t\t\thql += \" and t.manualCategoryID = :manualCategoryID \";\n\t\t\t\tparams.put(\"manualCategoryID\", news.getManualCategoryID());\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic void edit(EFmanualContent data) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualContent t=manualDao.get(TEFmanualContent.class,data.getAutoID());\n\t\tt.setCategoryCode(data.getCategoryCode());\n\t\tt.setTitle(data.getTitle());\n\t\tt.setContent(data.getContent());\n\t\tt.setManualCategoryID(data.getManualCategoryID());\n\t\tmanualDao.update(t);\n\t}\n\n\t@Override\n\tpublic List<TEFmanualContent> getAllData() {\n\t\t// TODO Auto-generated method stub\n\t\tString hql = \" from TEFmanualContent t \";\n\t\tList<TEFmanualContent> l=manualDao.find(hql);\n\t\t\n\t\treturn l;\n\t}\n\n\t@Override\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualContent> ul = new ArrayList<EFmanualContent>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"categoryCode\", categoryCode+\"%%\");\n\t\tString hql = \" from TEFmanualContent t where t.categoryCode like :categoryCode\";\n\t\tList<TEFmanualContent> l = manualDao.find(hql);\n\t\t\n\t\tfor (TEFmanualContent t : l) {\n\t\t\tEFmanualContent u = new EFmanualContent();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tString theString =t.getContent().replace(\"&lt;br /&gt;\", \"<br/>\");\n\t\t\ttheString=this.HtmlDecode(theString);\n\t\t\tu.setContent(theString);\n\n\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode,\n\t\t\tPageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualContent> ul = new ArrayList<EFmanualContent>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"categoryCode\", categoryCode+\"%%\");\n\t\tString hql = \" from TEFmanualContent t where t.categoryCode like :categoryCode\";\n\t\tList<TEFmanualContent> l = manualDao.find(hql+ orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\t\n\t\tfor (TEFmanualContent t : l) {\n\t\t\tEFmanualContent u = new EFmanualContent();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tString theString =t.getContent().replace(\"&lt;br /&gt;\", \"<br/>\");\n\t\t\ttheString=this.HtmlDecode(theString);\n\t\t\tu.setContent(theString);\n\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode,\n\t\t\tPageFilter ph, String searchKey) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualContent> ul = new ArrayList<EFmanualContent>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\n\t\tString hql = \" from TEFmanualContent t\";\n\t\tEFmanualContent search = new EFmanualContent();\n\t\tif(categoryCode != null && categoryCode.length() > 0){\n\t\t\tsearch.setCategoryCode(categoryCode);\n\t\t}\n\t\tif(searchKey != null && searchKey.length() > 0){\n\t\t\tsearch.setTitle(searchKey);\n\t\t}\n\t\tList<TEFmanualContent> l = manualDao.find(hql + whereHql(search, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n        \n\t\tfor (TEFmanualContent t : l) {\n\t\t\tEFmanualContent u = new EFmanualContent();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tString theString =t.getContent().replace(\"&lt;br /&gt;\", \"<br/>\");\n\t\t\ttheString=this.HtmlDecode(theString);\n\t\t\tu.setContent(theString);\n\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\t\n\tpublic String HtmlEncode(String theString)\n\t{\n\t\t   theString=theString.replace(\">\", \"&gt;\");\n\n\t\t   theString=theString.replace(\"<\", \"&lt;\");\n\n\t\t   theString=theString.replace(\" \", \"&nbsp;\");\n\n\t\t   theString=theString.replace(\"/\", \"&quot;\");\n\n\t\t   theString=theString.replace(\"/n\", \"<br/> \");\n\n\t\t   return theString;\n\t}\n\t\n\tpublic String HtmlDecode(String theString)\n\t{\n\t\t   theString=theString.replace(\"&gt;\", \">\");\n\n\t\t   theString=theString.replace(\"&lt;\", \"<\");\n\n\t\t   theString=theString.replace(\"&nbsp;\", \" \");\n\t\t   \n\t\t   theString=theString.replace(\"&amp;nbsp;\", \" \");\n\t\t   return theString;\n\t}\n\n\t\n\n\t\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/impl/manual/EFManualKeywordServiceImpl.java",
    "content": "package light.mvc.service.impl.manual;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.manual.TEFmanualKeyword;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.manual.EFmanualKeyword;\nimport light.mvc.service.manual.EFManualKeywordServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n@Service\npublic class EFManualKeywordServiceImpl implements\n\t\tEFManualKeywordServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFmanualKeyword> keywordDao;\n\t\n\t@Override\n\tpublic List<EFmanualKeyword> dataGrid(EFmanualKeyword keyword, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFmanualKeyword> ul = new ArrayList<EFmanualKeyword>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualKeyword t \";\n\t\tList<TEFmanualKeyword> l= keywordDao.find(hql +whereHql(keyword, params)+ orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor(TEFmanualKeyword t:l)\n\t\t\t{\n\t\t\t\tEFmanualKeyword u= new EFmanualKeyword();\n\t\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\t\tul.add(u);\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFmanualKeyword keyword, Map<String, Object> params) {//待修改\n\t\tString hql = \"\";\n\t\tif (keyword != null) {\n\t\t\thql += \" where t.deleted=0 \";\n\t\t\tif(keyword.getManualContentID() != null && keyword.getManualContentID() > 0){\n\t\t\t\thql += \" and t.manualContentID=:manualContentID\";\n\t\t\t\tparams.put(\"manualContentID\", keyword.getManualContentID());\n\t\t\t}\n\t\t\tif(keyword.getCategoryID() != null && keyword.getCategoryID() > 0){\n\t\t\t\thql += \" and t.categoryID=:categoryID\";\n\t\t\t\tparams.put(\"categoryID\", keyword.getCategoryID());\n\t\t\t}\n\t\t\tif(keyword.getKeyword() != null && keyword.getKeyword().length() > 0){\n\t\t\t\thql += \" and t.keyword like :keyword\";\n\t\t\t\tparams.put(\"keyword\", \"%%\" + keyword.getKeyword() + \"%%\");\n\t\t\t}\n\t\t\tif(keyword.getCategoryCode() != null && keyword.getCategoryCode().length() > 0){\n\t\t\t\thql += \" and t.categoryCode like :categoryCode\";\n\t\t\t\tparams.put(\"categoryCode\", keyword.getCategoryCode() + \"%%\");\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\t@Override\n\tpublic Long count(EFmanualKeyword keyword, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualKeyword t \";\n\t\treturn keywordDao.count(\"select count(*) \" + hql + whereHql(keyword, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualKeyword t = keywordDao.get(TEFmanualKeyword.class,id);\n\t\tt.setDeleted(1);\n\t\tt.setUpdateDate(new Date());\n\t\tkeywordDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFmanualKeyword get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualKeyword t = keywordDao.get(TEFmanualKeyword.class,id);\n\t\tEFmanualKeyword u= new EFmanualKeyword();\n\t\tBeanUtils.copyProperties(t, u);\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic void edit(EFmanualKeyword keyword) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualKeyword t = keywordDao.get(TEFmanualKeyword.class,keyword.getAutoID());\n\t\tBeanUtils.copyProperties(keyword, t);\n\t\tt.setUpdateDate(new Date());\n\t\tkeywordDao.update(t);\n\n\t}\n\n\t@Override\n\tpublic void add(EFmanualKeyword keyword) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFmanualKeyword t = new TEFmanualKeyword();\n\t\tBeanUtils.copyProperties(keyword, t);\n\t\tt.setCreateDate(new Date());\n\t\tt.setUpdateDate(new Date());\n\t\tkeywordDao.save(t);\n\n\t}\n\t\n\t@Override\n\tpublic List<EFmanualKeyword> getAllKeyword(EFmanualKeyword keyword){\n\t\tList<EFmanualKeyword> ul = new ArrayList<EFmanualKeyword>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFmanualKeyword t \";\n\t\tList<TEFmanualKeyword> l= keywordDao.find(hql + whereHql(keyword, params) + \" order by t.keyword asc\", params);\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor(TEFmanualKeyword t:l)\n\t\t\t{\n\t\t\t\tEFmanualKeyword u= new EFmanualKeyword();\n\t\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\t\tul.add(u);\n\t\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/impl/news/EFCategoryServiceImpl.java",
    "content": "package light.mvc.service.impl.news;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.news.TEFcategory;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.news.EFCategory;\nimport light.mvc.service.news.*;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@Service\npublic class EFCategoryServiceImpl implements EFCategoryServiceI{\n\n\t@Autowired\n\tprivate BaseDaoI<TEFcategory> categoryDao;\n\t\n\t@Override\n\tpublic void add(EFCategory m) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFcategory t= new TEFcategory();\n\t\tBeanUtils.copyProperties(m,t);\n\t\tcategoryDao.save(t);\n\t}\n\n\t@Override\n\tpublic List<EFCategory> dataGrid(EFCategory category, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tList<EFCategory> ul = new ArrayList<EFCategory>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFcategory t \";\n\t\tList<TEFcategory> l = categoryDao.find(hql + whereHql(category, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor (TEFcategory t : l) {\n\t\t\tEFCategory u = new EFCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFCategory category, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFcategory t \";\n\t\treturn categoryDao.count(\"select count(*) \" + hql + whereHql(category, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id, HttpServletRequest request) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFcategory t= categoryDao.get(TEFcategory.class,id);\n\t\tif(t != null){\n\t\t\tt.setDeleted(1);\n\t\t}\n\t\tcategoryDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFCategory get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFcategory t = categoryDao.get(\"from TEFcategory t  where t.deleted=0 and t.id = :id\", params);\n\t\tEFCategory u = null;\n\t\tif(t != null)\n\t\t{\n\t\t\tu = new EFCategory();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t}\n\t\tBeanUtils.copyProperties(t, u);\n\t\treturn u;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFCategory category, Map<String, Object> params) {//待修改\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (category != null) {\n\t\t\tif(category.getCategoryName() != null){\n\t\t\t\thql += \" and t.categoryName like :categoryName\";\n\t\t\t\tparams.put(\"categoryName\", \"%\" + category.getCategoryName() + \"%\");\n\t\t\t}\n\t\t\tif(category.getType() != null){\n\t\t\t\thql += \" and t.type = :type\";\n\t\t\t\tparams.put(\"type\", category.getType());\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic void edit(EFCategory data) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFcategory t = categoryDao.get(TEFcategory.class, data.getAutoID());\n\t\tBeanUtils.copyProperties(data, t);\n\t\tcategoryDao.update(t);\n\t}\n\n\t@Override\n\tpublic List<EFCategory> getAllData(EFCategory c) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFCategory> categories = new ArrayList<EFCategory>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFcategory t \";\n\t\tList<TEFcategory> l = categoryDao.find(hql + whereHql(c,params), params);\n\t\tfor(TEFcategory cFcategory : l){\n\t\t\tEFCategory category = new EFCategory();\n\t\t\tBeanUtils.copyProperties(cFcategory, category);\n\t\t\tcategories.add(category);\n\t\t}\n\t\treturn categories;\n\t}\n\t\t\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/impl/news/EFNewsServiceImpl.java",
    "content": "package light.mvc.service.impl.news;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.news.TEFnews;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.news.EFNews;\nimport light.mvc.service.news.*;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.io.Serializable;\nimport java.util.*;\n\n@Service\npublic class EFNewsServiceImpl implements EFNewsServiceI{\n\n\t@Autowired\n\tprivate BaseDaoI<TEFnews> newsDao;\n\t\n\t@Override\n\tpublic Long add(EFNews m) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFnews t = new TEFnews();\n\t\tBeanUtils.copyProperties(m,t);\n\t\tSerializable id = newsDao.save(t);\n\t\treturn (Long)id;\n\t}\n\n\t@Override\n\tpublic List<EFNews> dataGrid(EFNews news, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tList<EFNews> ul = new ArrayList<EFNews>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" select t.AutoID,t.PersonalID,t.Author,t.Title,t.Content,t.WebPath,t.PublishDate,t.ReadCount,t.Status,t.CategoryID from newscontent t \";\n\t\tif(news.getCategoryTypeID() != null){\n\t\t\thql += \" join newscategory c on t.categoryID=c.AutoID and c.type=:categoryType \";\n\t\t\tparams.put(\"categoryType\", news.getCategoryTypeID());\n\t\t}\n\t \tList<Object[]> l = newsDao.findBySql(hql + whereHql(news, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t \t//List<TEFnews> l = newsDao.find(hql + whereHql(news, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t \tfor (Object[] obj : l) {\n\t\t\tEFNews u = new EFNews();\t\t\t\n\t\t\tu.setAutoID(Long.parseLong(obj[0].toString()));\n\t\t\tu.setPersonalID(Long.parseLong(obj[1].toString()));\n\t\t\tu.setAuthor((String)obj[2]);\n\t\t\tu.setTitle((String)obj[3]);\n\t\t\tu.setContent((String)obj[4]);\n\t\t\tu.setWebPath((String)obj[5]);\n\t\t\tu.setPublishDate((Date)obj[6]);\n\t\t\tu.setReadCount(Integer.parseInt(obj[7].toString()));\n\t\t\tu.setStatus(Long.parseLong(obj[8].toString()));\n\t\t\tu.setCategoryID(Long.parseLong(obj[9].toString()));\n\t\t\t//BeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFNews news, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\t\n\t\tString hql = \" select count(t.autoid) from newscontent t \";\n\t\tif(news.getCategoryTypeID() != null){\n\t\t\thql += \" join newscategory c on t.categoryID=c.AutoID and c.type=:categoryType \";\n\t\t\tparams.put(\"categoryType\", news.getCategoryTypeID());\n\t\t}\n\t\thql += whereHql(news, params);\n\t\treturn newsDao.countBySql(hql, params).longValue();\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFnews t= newsDao.get(TEFnews.class,id);\n\t\tif(t != null){\n\t\t\tt.setDeleted(1);\n\t\t}\n\t\tnewsDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFNews get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFnews t = newsDao.get(\"from TEFnews t  where t.deleted=0 and t.id = :id\", params);\n\t\tEFNews u = null;\n\t\tif(t != null)\n\t\t{\n\t\t\tu = new EFNews();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t}\n\t\treturn u;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFNews news, Map<String, Object> params) {//待修改\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (news != null) {\n\t\t\tif(news.getStatus() != null){\n\t\t\t\thql += \" and t.status=:status \";\n\t\t\t\tparams.put(\"status\", news.getStatus());\n\t\t\t}\n\t\t\tif(news.getCategoryID() != null){\n\t\t\t\thql += \" and t.categoryID=:categoryID \";\n\t\t\t\tparams.put(\"categoryID\", news.getCategoryID());\n\t\t\t}\n\t\t\tif(news.getTitle() != null){\n\t\t\t\thql += \" and t.title like :title \";\n\t\t\t\tparams.put(\"title\", \"%\" + news.getTitle() + \"%\");\n\t\t\t}\n\t\t\tif(news.getPersonalID() != null){\n\t\t\t\thql += \" and t.personalID=:personalID \";\n\t\t\t\tparams.put(\"personalID\", news.getPersonalID());\n\t\t\t}\n\t\t\tif(news.getSearchStartDate() != null){\n\t\t\t\thql += \" and t.publishDate >= :searchStDate \";\n\t\t\t\tparams.put(\"searchStDate\", news.getSearchStartDate());\n\t\t\t}\n\t\t\tif(news.getSearchEndDate() != null){\n\t\t\t\thql += \" and t.publishDate < :searchEndDate \";\n\t\t\t\tparams.put(\"searchEndDate\", news.getSearchEndDate());\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic void edit(EFNews news) {\n\t\tTEFnews t = newsDao.get(TEFnews.class, news.getAutoID());\n\t\tt.setTitle(news.getTitle());\n\t\tt.setContent(news.getContent());\n\t\tt.setCategoryID(news.getCategoryID());\n\t\tnewsDao.update(t);\n\t}\n\t\n\t@Override\n\tpublic void publish(EFNews news){\n\t\tTEFnews t = newsDao.get(TEFnews.class, news.getAutoID());\n\t\tt.setWebPath(news.getWebPath());\n\t\tt.setStatus(news.getStatus());\n\t\tt.setPublishDate(new Date());\n\t\tnewsDao.update(t);\n\t}\n\t\n\t@Override\n\tpublic void unPublish(EFNews news){\n\t\tTEFnews t = newsDao.get(TEFnews.class, news.getAutoID());\n\t\tt.setPublishDate(null);\n\t\tt.setStatus(news.getStatus());\n\t\tnewsDao.update(t);\n\t}\n\n\t@Override\n\tpublic void updateReadCount(Long id) {\n\t\tString hql = \"update TEFnews set readCount = readCount + 1 where autoID = :autoID\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"autoID\", id);\n\t\tnewsDao.executeHql(hql, params);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/manual/EFManualCategoryServiceI.java",
    "content": "package light.mvc.service.manual;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.manual.EFExpertList;\nimport light.mvc.pageModel.manual.EFmanualCategory;\nimport light.mvc.pageModel.manual.EFmanualCategoryList;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\npublic interface EFManualCategoryServiceI {\n\tpublic void add(EFmanualCategory category);\n\t\n\tpublic List<EFmanualCategory> dataGrid(EFmanualCategory category, PageFilter ph);\n\t\n\tpublic List<EFmanualCategory> treeGrid(EFmanualCategory category);\n\t\n\tpublic List<EFmanualCategory> getAllData();\n\t\n\tpublic Long count(EFmanualCategory category, PageFilter ph);\n\t\t\n\tpublic void delete(Long id, HttpServletRequest request);\n\n\tpublic EFmanualCategory get(Long id);\t\n\t\n\tpublic EFmanualCategory getByCode(String code);\t\n\t\n\tpublic EFmanualCategory getExpertAndChild(Long id);\t\n\t\n\tpublic EFmanualCategoryList getChild(Long id);\t\n\t\n\tpublic List<EFmanualCategory> getByPid(Long id);\t\n\t\n\tpublic EFExpertList  getExpertList(Long id);\t\n\t\n\tpublic void edit(EFmanualCategory data);\n\t\n\tpublic List<Tree> tree();\n\t\n\tpublic List<Tree> allTree();\n\t\n\tpublic List<Tree> getTreeByCode(String categoryCode);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/manual/EFManualContentServiceI.java",
    "content": "package light.mvc.service.manual;\n\nimport light.mvc.model.manual.TEFmanualContent;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.manual.EFmanualContent;\n\nimport java.util.List;\n\npublic interface EFManualContentServiceI {\n\tpublic Long add(EFmanualContent category);\n\t\n\tpublic List<EFmanualContent> dataGrid(EFmanualContent category, PageFilter ph);\n\t\n\tpublic List<TEFmanualContent> getAllData();\n\t\n\tpublic Long count(EFmanualContent category, PageFilter ph);\n\t\t\n\tpublic void delete(Long id);\n\n\tpublic EFmanualContent get(Long id);\t\n\t\n\tpublic void edit(EFmanualContent data);\n\t\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode);\n\t\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode, PageFilter ph);\n\t\n\tpublic List<EFmanualContent> getBYCategoryCode(String categoryCode, PageFilter ph, String searchKey);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/manual/EFManualKeywordServiceI.java",
    "content": "package light.mvc.service.manual;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.manual.EFmanualKeyword;\n\nimport java.util.List;\n\npublic interface EFManualKeywordServiceI {\n\n\n\tpublic List<EFmanualKeyword> dataGrid(EFmanualKeyword keyword, PageFilter ph);\n\t\n\tpublic Long count(EFmanualKeyword keyword, PageFilter ph);\n\t\n\tpublic void delete(Long id);\n\t\n\tpublic EFmanualKeyword get(Long id);\n\t\n\tpublic void edit(EFmanualKeyword keyword);\n\t\n\tpublic void add(EFmanualKeyword keyword);\n\t\n\tpublic List<EFmanualKeyword> getAllKeyword(EFmanualKeyword keyword);\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/news/EFCategoryServiceI.java",
    "content": "package light.mvc.service.news;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.news.EFCategory;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\npublic interface EFCategoryServiceI {\n\t\n\tpublic void add(EFCategory category);\n\t\n\tpublic List<EFCategory> dataGrid(EFCategory category, PageFilter ph);\n\t\n\tpublic List<EFCategory> getAllData(EFCategory c);\n\t\n\tpublic Long count(EFCategory category, PageFilter ph);\n\t\t\n\tpublic void delete(Long id, HttpServletRequest request);\n\n\tpublic EFCategory get(Long id);\t\n\t\n\tpublic void edit(EFCategory data);\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/news/EFNewsServiceI.java",
    "content": "package light.mvc.service.news;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.news.EFNews;\n\nimport java.util.List;\n\npublic interface EFNewsServiceI {\n\t\n\tpublic Long add(EFNews xxnews);\n\t\n\tpublic List<EFNews> dataGrid(EFNews news, PageFilter ph);\n\t\n\tpublic Long count(EFNews news, PageFilter ph);\n\t\t\n\tpublic void delete(Long id);\n\n\tpublic EFNews get(Long id);\t\n\n\tpublic void edit(EFNews data);\n\t\n\tpublic void publish(EFNews news);\n\t\n\tpublic void unPublish(EFNews news);\n\t\n\tpublic void updateReadCount(Long id);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/impl/monitoringNodeServiceImpl.java",
    "content": "package light.mvc.service.sensor.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sensor.TmonitoringNode;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport light.mvc.service.sensor.monitoringNodeServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n@Service\npublic class monitoringNodeServiceImpl implements monitoringNodeServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TmonitoringNode> nodeDao;\n\t\n\t@Override\n\tpublic monitoringNode add(monitoringNode node) {\n\t\t// TODO Auto-generated method stub\n\t\tTmonitoringNode t = new TmonitoringNode();\n\t\tBeanUtils.copyProperties(node,t);\n\t\tnodeDao.save(t);\n\t\tBeanUtils.copyProperties(t,node);\n\t\treturn node;\n\t}\n\n\t@Override\n\tpublic List<monitoringNode> dataGrid(monitoringNode node, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<monitoringNode> ul = new ArrayList<monitoringNode>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql=\"from TmonitoringNode t\";\n\t\tList<TmonitoringNode> l;\n\t\tif(ph!=null)\n\t\t{\n\t\t l= nodeDao.find(hql+ whereHql(node, params) + orderHql(ph), params,ph.getPage(), ph.getRows());\n\t\t}\n\t\telse\n\t\t{\n\t\t l= nodeDao.find(hql+ whereHql(node, params),params);\n\t\t}\n\t\tif(l!=null&&l.size()>0)\n\t\t{\n\t\tfor(TmonitoringNode t:l)\n\t\t{\n\t\t\tmonitoringNode u = new monitoringNode();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\t\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(monitoringNode node, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TmonitoringNode t \";\n\t\treturn nodeDao.count(\"select count(*) \" + hql + whereHql(node, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTmonitoringNode t = nodeDao.get(TmonitoringNode.class, id);\n\t\tif(t!=null)\n\t\t{\n\t\t\tt.setDeleted(1);\n\t\t}\n\n\t}\n\n\t@Override\n\tpublic monitoringNode get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTmonitoringNode t = nodeDao.get(TmonitoringNode.class, id);\n\t\tmonitoringNode u = new monitoringNode();\n\t\tBeanUtils.copyProperties(t, u);\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic void edit(monitoringNode node) {\n\t\t// TODO Auto-generated method stub\n\t\tTmonitoringNode t = nodeDao.get(TmonitoringNode.class, node.getAutoID());\n\t\tif(t!=null)\n\t\t{\n\t\t\tif(node.getCode()!=null&&node.getCode()!=\"\")\n\t\t\t{\n\t\t\t\tt.setCode(node.getCode());\n\t\t\t}\n\t\t\tif(node.getAddress()!=null&&node.getAddress()!=\"\")\n\t\t\t{\n\t\t\t\tt.setAddress(node.getAddress());\n\t\t\t}\n\t\t\tif(node.getDescription()!=null&&node.getDescription()!=\"\")\n\t\t\t{\n\t\t\t\tt.setDescription(node.getDescription());\n\t\t\t}\n\t\t\tif(node.getFps()!=null&&node.getFps()!=0)\n\t\t\t{\n\t\t\t\tt.setFps(node.getFps());\n\t\t\t}\n\t\t\tif(node.getLocationX()!=null&&node.getLocationX()!=0)\n\t\t\t{\n\t\t\t\tt.setLocationX(node.getLocationX());\n\t\t\t}\n\t\t\tif(node.getLocationY()!=null&&node.getLocationY()!=0)\n\t\t\t{\n\t\t\t\tt.setLocationY(node.getLocationY());\n\t\t\t}\n\t\t\tif(node.getName()!=null&&node.getName()!=\"\")\n\t\t\t{\n\t\t\t\tt.setName(node.getName());\n\t\t\t}\n\t\t\tif(node.getStation()!=null&&node.getStation()!=0)\n\t\t\t{\n\t\t\t\tt.setStation(node.getStation());\n\t\t\t}\n\t\t\tif(node.getType()!=null&&node.getType()!=0)\n\t\t\t{\n\t\t\t\tt.setType(node.getType());\n\t\t\t}\n\t\t\tt.setTS(new Date());\n\t\t\tt.setUpdateDate(new Date());\n\t\t\tnodeDao.update(t);\n\t\t}\n\n\t}\n\t\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(monitoringNode node, Map<String, Object> params) {\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (node != null) {\n\t\t\tif(node.getCode() != null&&node.getCode()!=\"\"){\n\t\t\t\thql += \" and t.code=:code \";\n\t\t\t\tparams.put(\"code\", node.getCode());\n\t\t\t}\n\t\t\tif(node.getAddress()!=null&&node.getAddress()!=\"\")\n\t\t\t{\n\t\t\t\thql += \" and t.address=:address \";\n\t\t\t\tparams.put(\"address\", node.getAddress());\n\t\t\t}\n\t\t\tif(node.getDescription()!=null&&node.getDescription()!=\"\")\n\t\t\t{\n\t\t\t\thql += \" and t.description=:description \";\n\t\t\t\tparams.put(\"description\", node.getDescription());\n\t\t\t}\n\t\t\tif(node.getFps()!=null&&node.getFps()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.fps=:fps \";\n\t\t\t\tparams.put(\"fps\", node.getFps());\n\t\t\t}\n\t\t\t\n\t\t\tif(node.getName()!=null&&node.getName()!=\"\")\n\t\t\t{\n\t\t\t\thql += \" and t.name=:name \";\n\t\t\t\tparams.put(\"name\", node.getName());\n\t\t\t}\n\t\t\tif(node.getStation()!=null&&node.getStation()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.station=:station \";\n\t\t\t\tparams.put(\"station\", node.getStation());\n\t\t\t}\n\t\t\tif(node.getType()!=null&&node.getType()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.type=:type \";\n\t\t\t\tparams.put(\"type\", node.getType());\n\t\t\t}\n\n\t\t}\n\n\t\treturn hql;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/impl/pestDataServiceImpl.java",
    "content": "package light.mvc.service.sensor.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sensor.TpestData;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.pestData;\nimport light.mvc.service.sensor.pestDataServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n@Service\npublic class pestDataServiceImpl implements pestDataServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TpestData> pestDao;\n\t\n\t@Override\n\tpublic pestData add(pestData u) {\n\t\t// TODO Auto-generated method stub\n\t\tTpestData t = new TpestData();\n\t\tBeanUtils.copyProperties(u, t);\n\t\tpestDao.save(t);\n\t\tBeanUtils.copyProperties(t, u);\n\t\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic List<pestData> dataGrid(pestData pest, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<pestData> ul = new ArrayList<pestData>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql=\"from TpestData t\";\n\t\tList<TpestData> l= pestDao.find(hql+ whereHql(pest, params) + orderHql(ph), params,ph.getPage(), ph.getRows());\n\t\tif(l!=null&&l.size()>0)\n\t\t{\n\t\tfor(TpestData t:l)\n\t\t{\n\t\t\tpestData u = new pestData();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(pestData u, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql=\"from TpestData t\";\n\t\treturn pestDao.count(\"select count(*) \" + hql + whereHql(u, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTpestData t = pestDao.get(TpestData.class, id);\n\t\tif(t!=null)\n\t\t{\n\t\t\tt.setDeleted(1);\n\t\t}\n\n\t}\n\n\t@Override\n\tpublic pestData get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTpestData t = pestDao.get(TpestData.class, id);\n\t\tpestData u = new pestData();\n\t\t\n\t\tBeanUtils.copyProperties(t, u);\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic void edit(pestData u) {\n\t\t// TODO Auto-generated method stub\n\t\tTpestData t = pestDao.get(TpestData.class,u.getAutoID());\n\t\tif(t!=null)\n\t\t{\n\t\t\tif(u.getCount()!=null)\n\t\t\t{\n\t\t\t\tt.setCount(u.getCount());\n\t\t\t}\n\t\t\tif(u.getDescription()!=null&&u.getDescription()!=\"\")\n\t\t\t{\n\t\t\t\tt.setDescription(u.getDescription());\n\t\t\t}\n\t\t\tif(u.getImgId()!=null&&u.getImgId()!=0)\n\t\t\t{\n\t\t\t\tt.setImgId(u.getImgId());\n\t\t\t}\n\t\t\tif(u.getMonitoringNodeId()!=null&&u.getMonitoringNodeId()!=0)\n\t\t\t{\n\t\t\t\tt.setMonitoringNodeId(u.getMonitoringNodeId());\n\t\t\t}\n\t\t\tif(u.getName()!=null&&u.getName()!=\"\")\n\t\t\t{\n\t\t\t\tt.setName(u.getName());\n\t\t\t}\n\t\t\tif(u.getRealCount()!=null)\n\t\t\t{\n\t\t\t\tt.setRealCount(u.getRealCount());\n\t\t\t}\n\t\t\t\n\t\t\tif(u.getType()!=null&&u.getType()!=0)\n\t\t\t{\n\t\t\t\tt.setType(u.getType());\n\t\t\t}\n\t\t\tt.setUpdateDate(new Date());\n\t\t}\n\n\t}\n\n\t\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(pestData u, Map<String, Object> params) {\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (u != null) {\n\t\t\t\n\t\t\tif(u.getDescription()!=null&&u.getDescription()!=\"\")\n\t\t\t{\n\t\t\t\thql += \" and t.description=:description \";\n\t\t\t\tparams.put(\"description\", u.getDescription());\n\t\t\t}\t\t\t\n\t\t\tif(u.getName()!=null&&u.getName()!=\"\")\n\t\t\t{\n\t\t\t\thql += \" and t.name=:name \";\n\t\t\t\tparams.put(\"name\", u.getName());\n\t\t\t}\n\t\t\tif(u.getType()!=null&&u.getType()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.type=:type \";\n\t\t\t\tparams.put(\"type\", u.getType());\n\t\t\t}\n\t\t\tif(u.getImgId()!=null&&u.getImgId()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.imgId=:imgId \";\n\t\t\t\tparams.put(\"imgId\", u.getImgId());\n\t\t\t}\n\t\t\tif(u.getMonitoringNodeId()!=null&&u.getMonitoringNodeId()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.monitoringNodeId=:monitoringNodeId \";\n\t\t\t\tparams.put(\"monitoringNodeId\", u.getMonitoringNodeId());\n\t\t\t}\n\t\t\tif(u.getSensorId()!=null&&u.getSensorId()!=0)\n\t\t\t{\n\t\t\t\thql += \" and t.sensorId=:sensorId \";\n\t\t\t\tparams.put(\"sensorId\", u.getSensorId());\n\t\t\t}\n\n\t\t}\n\n\t\treturn hql;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/impl/pestSensorServiceImpl.java",
    "content": "package light.mvc.service.sensor.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sensor.TmonitoringNode;\nimport light.mvc.model.sensor.Tsensor;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.Sensor;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport light.mvc.service.sensor.*;\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n\n@Service\npublic class pestSensorServiceImpl implements pestSensorServiceI{\n\n\t@Autowired\n\tprivate BaseDaoI<TmonitoringNode> nodeDao;\n\t@Autowired\n\tprivate BaseDaoI<Tsensor> Dao;\n\t\n\t@Override\n\tpublic void add(Sensor data) {\n\t\t// TODO Auto-generated method stub\n\t\tTsensor t= new Tsensor();\n\t\tBeanUtils.copyProperties(data,t);\n\t\tDao.save(t);\n\t}\n\n\t@Override\n\tpublic List<Sensor> dataGrid(Sensor data, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<Sensor> ul = new ArrayList<Sensor>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from Tsensor t \";\n\t\tList<Tsensor> l = Dao.find(hql + whereHql(data, params)+ orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor (Tsensor t : l) {\n\t\t\tSensor u = new Sensor();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(Sensor data, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from Tsensor t \";\n\t\treturn Dao.count(\"select count(*) \" + hql + whereHql(data, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id, HttpServletRequest request) {\n\t\t// TODO Auto-generated method stub\n\t\tTsensor t= Dao.get(Tsensor.class,id);\n\t\tDao.delete(t);\n\t}\n\n\t@Override\n\tpublic Sensor get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTsensor t = Dao.get(\"from Tsensor t  where t.autoId = :id\", params);\n\t\tSensor u = new Sensor();\n\t\tBeanUtils.copyProperties(t, u);\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic void edit(Sensor data) {\n\t\t// TODO Auto-generated method stub\n\t\tTsensor t=Dao.get(Tsensor.class, data.getAutoID());\n\t\tDao.update(t);\n\t}\n\t\n\t\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(Sensor data, Map<String, Object> params) {//待修改\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (data != null) {\n\t\t\tif(data.getMonitoringNodeId()!=null&&data.getMonitoringNodeId()!=0)\n\t\t\t{\n\t\t\t\thql+=\" and t.monitoringNodeId = :monitoringNodeId \";\n\t\t\t\tparams.put(\"monitoringNodeId\", data.getMonitoringNodeId());\n\t\t\t}\n\t\t\n\t\t\tif(data.getSerialNum()!=null)\n\t\t\t{\n\t\t\t\t\n\t\t\t\thql+=\" and t.serialNum = :serialNum \";\n\t\t\t\tparams.put(\"serialNum\", data.getSerialNum());\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic List<Object[]> getPredictChart(int moniNodeId, String startTime,\n\t\t\tString endTime) {\n\t\t// TODO Auto-generated method stub\n\t\tString hql=\"SELECT DATE_FORMAT(createDate,'%m-%d'),avg(sensor1),avg(sensor2),avg(sensor3),avg(sensor4),avg(sensor5),avg(sensor6) FROM t_sensor as t where t.createDate between'\"+startTime+\"' and '\"+ endTime+\"' group by year(createDate) , month(createDate) , day(createDate)\";\n\t\t List<Object[]> obj=\tDao.findBySql(hql);\n\t\treturn obj;\n\t}\n\n\t@Override\n\tpublic void insertApi(JSONArray dataJson, Station station, List<monitoringNode> nodeList) throws JSONException {\n\t\t// TODO Auto-generated method stub\n\t\tString sqlPre = \" INSERT INTO sensor \";\n\t\tString left =\" ( \";\n\t\tString right= \" ) \";\n\t\tString sqlMid=\" VALUES \";\n\t\tString columsName =\"\";\n\t\tString value = \"\";\n\t\t\n\t\tfor(int i=0;i<dataJson.length();i++)\n\t\t{\n\t\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\t\t\n\t\t\tJSONObject jo = (JSONObject)dataJson.get(i);\n\t\t\t\n\t\t\tString dateStr=jo.getString(\"date\");\n\t\t\tdateStr= dateStr.replace(\"T\", \" \");\n\t\t\t\n\t\t\tcolumsName+=\" \"+\"createDate\"+\",\";\n\t\t\t//value+=\" :\"+\"createDate\"+\",\";\n\t\t\t//params.put(\"createDate\", dateStr);\n\t\t\tvalue+=\" '\"+dateStr+\"',\";\n\t\t\t\n\t\t\tfor(int j=0 ; j<nodeList.size();j++)\n\t\t\t{\n\t\t\t\tmonitoringNode node = nodeList.get(j);\n\t\t\t\tcolumsName+=\" \"+node.getMap()+\",\";\n\t\t\t//\tvalue+=\" :\"+node.getDataKey()+\",\";\n\t\t\t//\tparams.put(node.getDataKey(), jo.getString(node.getDataKey()));\n\t\t\t\tvalue+=\" \"+jo.get(node.getDataKey())+\",\";\n\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\tcolumsName+=\" \"+\"serialNum\"+\" \";\n\t\t\t//value+=\" :\"+\"serialNum\"+\" \";\n\t\t\t//params.put(\"serialNum\", station.getSerialNum());\n\t\t\tvalue+=\" \"+station.getSerialNum()+\" \";\n\t\t\t\n\t\t\tString sql = sqlPre+left+columsName+right+sqlMid+left+value+right;\n\t\t\tSystem.out.println(sql);\n\t\t\t//Dao.executeSql(sql,params);\n\t\t\tDao.executeSql(sql);\n\t\t\t\n\t\t\tcolumsName=\"\";\n\t\t\tvalue=\"\";\n\t\t}\n\t\t\n\t\t\n\t}\n\n\t@Override\n\tpublic Sensor getLastSensor(long serialNum) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"serialNum\", serialNum);\n\t\tList<Tsensor> l = Dao.find(\"from Tsensor t  where t.deleted=0 and t.serialNum = :serialNum order by t.createDate Desc\", params,1,1);\n\t\tif(l!=null&&l.size()>0)\n\t\t{\n\t\t\tTsensor t = l.get(0);\n\t\t\tSensor u = new Sensor();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\treturn u;\n\t\t}\n\t\t\n\t\treturn null;\n\t\t\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/impl/stationServiceImpl.java",
    "content": "package light.mvc.service.sensor.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sensor.Tstation;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.service.sensor.stationServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\n@Service\npublic class stationServiceImpl implements stationServiceI{\n\t\n\t@Autowired\n    private BaseDaoI<Tstation> stationDao;\n\n\t@Override\n\tpublic List<Station> treeGrid() {\n\t\t// TODO Auto-generated method stub\n\t\tList<Station> lr = new ArrayList<Station>();\n\t\tList<Tstation> l = stationDao.find(\"from Tstation t left join fetch t.station where t.deleted=0\");\n\t\tif(l!=null&&l.size()>0)\n\t\t{\n\t\t\tfor(Tstation t:l)\n\t\t\t{\n\t\t\t\tStation r = new Station();\n\t\t\t\tBeanUtils.copyProperties(t, r);\n\t\t\t\tr.setId(t.getAutoID());\n\t\t\t\tif (t.getStation() != null) {\n\t\t\t\t\tr.setPid(t.getStation().getAutoID());\n\t\t\t\t\tr.setPname(t.getStation().getName());\n\t\t\t\t}\n\t\t\t\tlr.add(r);\n\t\t\t}\n\t\t}\n\t\treturn lr;\n\t}\n\n\t@Override\n\tpublic void add(Station station) {\n\t\t// TODO Auto-generated method stub\n\t\tTstation t = new Tstation();\n\t\tBeanUtils.copyProperties(station, t);\n\t\tif(station.getPid()!=null&&!\"\".equals(station.getPid()))\n\t\t{\n\t\t\tt.setStation(stationDao.get(Tstation.class, station.getPid()));\n\t\t}\n\t\tt.setCreateDate(new Date());\n\t\tt.setSensorDateUpdate(new Date());\n\t\tstationDao.save(t);\n\t\t\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t}\n\n\t@Override\n\tpublic void edit(Station station) {\n\t\t// TODO Auto-generated method stub\n\t\tTstation t = stationDao.get(Tstation.class, station.getId());\n\t\tt.setName(station.getName());\n\t\tt.setCode(station.getCode());\n\t\tif(station.getPid()!=null&&!\"\".equals(station.getPid()))\n\t\t{\n\t\t\tt.setStation(stationDao.get(Tstation.class, station.getId()));\n\t\t}\n\t\tstationDao.update(t);\n\t}\n\n\t@Override\n\tpublic Station get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTstation t= stationDao.get(Tstation.class, id);\n\t\tif(t!=null&&t.getDeleted()==0)\n\t\t{\n\t\t\tStation r = new Station();\n\t\t\tBeanUtils.copyProperties(t, r);\n\t\t\tr.setId(t.getAutoID());\n\t\t\tif (t.getStation() != null) {\n\t\t\t\tr.setPid(t.getStation().getAutoID());\n\t\t\t\tr.setPname(t.getStation().getName());\n\t\t\t}\n\t\t\treturn r;\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic List<Tree> tree() {\n\t\t// TODO Auto-generated method stub\n\t\tList<Tstation> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\t\t\n\t\tl= stationDao.find(\"select distinct t from Tstation t where t.deleted= 0\");\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (Tstation r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif (r.getStation() != null) {\n\t\t\t\t\ttree.setPid(r.getStation().getAutoID().toString());\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getName());\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic List<Station> getAuditPath(Long stationId) {\n\t\t// TODO Auto-generated method stub\n\t\tList<Station> result = new ArrayList<Station>();\n\t\tStation r = get(stationId);\n\t\tif(r!=null)\n\t\t{\n\t\t\tresult.add(r);\n\t\t\twhile(r.getPid() != null && r.getPid() > 0)\n\t\t\t{\n\t\t\t\tr = get(r.getPid());\n\t\t\t\tif(r != null)\n\t\t\t\t\tresult.add(r);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\n\t@Override\n\tpublic void update(Station station) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\t\n\t}\n\n\t@Override\n\tpublic void updateSensorLastTime(Date lastDate,Long stationId) {\n\t\t// TODO Auto-generated method stub\n\t\t\n\t\tTstation t= stationDao.get(Tstation.class, stationId);\n\t\tif(t!=null)\n\t\t{\n\t\t\tif(t.getDeleted()==0)\n\t\t\t{\n\t\t\t\tt.setSensorDateUpdate(lastDate);\n\t\t\t}\n\t\t\tstationDao.update(t);\n\t\t}\n\t\t\n\t}\n\t\n\t\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/monitoringNodeServiceI.java",
    "content": "package light.mvc.service.sensor;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.monitoringNode;\n\nimport java.util.List;\n\npublic interface monitoringNodeServiceI {\n\n\tpublic monitoringNode add(monitoringNode node);\n\t\n\tpublic List<monitoringNode> dataGrid(monitoringNode node, PageFilter ph);\n\t\n\tpublic Long count(monitoringNode node, PageFilter ph);\n\t\n\tpublic void delete(Long id);\n\t\n\tpublic monitoringNode get(Long id);\n\t\n\tpublic void edit(monitoringNode node);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/pestDataServiceI.java",
    "content": "package light.mvc.service.sensor;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.pestData;\n\nimport java.util.List;\n\npublic interface pestDataServiceI {\n\t\n\tpublic  pestData add(pestData u);\n\t\n\tpublic List<pestData> dataGrid(pestData u, PageFilter ph);\n\t\n\tpublic Long count(pestData u, PageFilter ph);\n\t\n\tpublic void delete(Long id);\n\t\n\tpublic pestData get(Long id);\n\t\n\tpublic void edit(pestData u);\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/pestSensorServiceI.java",
    "content": "package light.mvc.service.sensor;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sensor.Sensor;\nimport light.mvc.pageModel.sensor.Station;\nimport light.mvc.pageModel.sensor.monitoringNode;\nimport org.json.JSONArray;\nimport org.json.JSONException;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.List;\n\n\npublic interface pestSensorServiceI {\n\t\n\t public void add(Sensor data);\n\t  \n\t  public List<Sensor> dataGrid(Sensor data, PageFilter ph);\n\t  \n\t  public Long count(Sensor data, PageFilter ph);\n\t  \n\t  public void delete(Long id, HttpServletRequest request);\n\t  \n\t  public Sensor get(Long id);\n\t  \n\t  public void edit(Sensor data);\n\t  \n\t  public List<Object[]> getPredictChart(int moniNodeId, String startTime, String endTime);\n\t  \n\t  public void insertApi(JSONArray dataJson, Station station, List<monitoringNode> nodeList) throws JSONException;\n\t  \n\t  public Sensor getLastSensor(long serialNum);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sensor/stationServiceI.java",
    "content": "package light.mvc.service.sensor;\n\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sensor.Station;\n\nimport java.util.Date;\nimport java.util.List;\n\n\npublic interface stationServiceI {\n\n\t\n\tpublic List<Station> treeGrid();\n\n\tpublic void add(Station station);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Station station);\n\n\tpublic Station get(Long id);\n\n\tpublic List<Tree> tree();\n\t\n\tpublic List<Station> getAuditPath(Long stationId);\n\t\n\tpublic void update(Station station);\n\t\n\tpublic void updateSensorLastTime(Date lastDate, Long stationId);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/DictionaryServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.Dictionary;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface DictionaryServiceI {\n\n\tpublic List<Dictionary> dataGrid(Dictionary dictionary, PageFilter ph);\n\n\tpublic Long count(Dictionary dictionary, PageFilter ph);\n\n\tpublic void add(Dictionary dictionary);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Dictionary dictionary);\n\n\tpublic Dictionary get(Long id);\n\n\tpublic List<Dictionary> combox(String code);\n\t\n\tpublic List<Dictionary> getDictionaryByCategoryCode(String code);\n\t\n\tpublic List<Dictionary> getDictionaryByCategoryID(Long id);\n\n\tpublic Dictionary checkUnique(Dictionary dictionary);\n\t\n\tpublic Dictionary getDefaultDictionary(String categoryCode);\n\t\n\tpublic Dictionary getDictionary(String categoryCode, String contentCode);\n\n}\n\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/DictionarytypeServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Dictionarytype;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface DictionarytypeServiceI {\n\n\n\tpublic void add(Dictionarytype dictionarytype);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Dictionarytype dictionarytype);\n\n\tpublic Dictionarytype get(Long id);\n\n\tpublic List<Tree> tree();\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/EFNoticeServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.EFNotice;\n\nimport java.util.List;\n\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface EFNoticeServiceI {\n\n\tpublic List<EFNotice> dataGrid(EFNotice notice, PageFilter ph);\n\t\n\tpublic Long count(EFNotice notice, PageFilter ph);\n\t\n\tpublic Long add(EFNotice notice);\n\t\n\tpublic void delete(Long id);\n\t\n\tpublic void edit(EFNotice notice);\n\t\n\tpublic EFNotice get(Long id);\n\t\n\tpublic List<EFNotice> gethaveNotice(Long personalID);\n\t\n\tpublic List<EFNotice> gethaveNotNotice(Long personalID);\n\t\n\tpublic List<EFNotice> gethaveNotice(Long personalID, PageFilter ph);\n\t\n\tpublic List<EFNotice> gethaveNotNotice(Long personalID, PageFilter ph);\n\n\tpublic void setNotice(Long id);\n\n\t\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/OrganizationServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Organization;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface OrganizationServiceI {\n\n\tpublic List<Organization> treeGrid();\n\n\tpublic void add(Organization organization);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Organization organization);\n\n\tpublic Organization get(Long id);\n\n\tpublic List<Tree> tree();\n\t\n\tpublic List<Organization> getAuditPath(Long organizationId);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/ResourceMetaServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.EFResourceMeta;\n\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Map;\n\npublic interface ResourceMetaServiceI {\n\tpublic List<EFResourceMeta> dataGrid(EFResourceMeta resourceMeta);\n\t\n\tpublic List<EFResourceMeta> dataGrid(EFResourceMeta resourceMeta, PageFilter ph);\n\n\tpublic Long count(EFResourceMeta resourceMeta);\n\n\tpublic Long add(EFResourceMeta resourceMeta);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(EFResourceMeta resourceMeta);\n\n\tpublic EFResourceMeta get(Long id);\n\t\n\tpublic List<EFResourceMeta> get(Long metaID, Long typeID);\n\t\n\tpublic Map<Date, Integer> getDateCount(Long metaID, Long typeID);\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/ResourceServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Resource;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface ResourceServiceI {\n\n\tpublic List<Resource> treeGrid();\n\n\tpublic void add(Resource resource);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Resource resource);\n\n\tpublic Resource get(Long id);\n\n\tpublic List<Tree> tree(SessionInfo sessionInfo);\n\n\tpublic List<Tree> allTree(boolean flag);\n\n\tpublic List<String> resourceAllList();\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/RoleServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Role;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface RoleServiceI {\n\n\tpublic List<Role> dataGrid(Role role, PageFilter ph);\n\n\tpublic Long count(Role role, PageFilter ph);\n\n\tpublic void add(Role role);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(Role role);\n\n\tpublic Role get(Long id);\n\n\tpublic void grant(Role role);\n\n\tpublic List<Tree> tree();\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/UserServiceI.java",
    "content": "package light.mvc.service.sys;\n\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.sys.User;\n\nimport java.util.List;\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\npublic interface UserServiceI {\n\n\tpublic List<User> dataGrid(User user, PageFilter ph);\n\t\n\tpublic List<User> getAllExpert();\n\n\tpublic Long count(User user, PageFilter ph);\n\n\tpublic Long add(User user);\n\n\tpublic void delete(Long id);\n\n\tpublic void edit(User user);\n\n\tpublic User get(Long personalID);\n\n\tpublic User login(User user);\n\n\tpublic List<String> resourceList(Long id);\n\n\tpublic boolean editUserPwd(SessionInfo sessionInfo, String oldPwd, String pwd);\n\t\n\tpublic boolean editUserPwd(long autoID, String oldPwd, String pwd);\n\n\tpublic User getByLoginName(User user);\n\t\n\tpublic void setManual(User user);\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/DictionaryServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.model.sys.TEFDictionary;\nimport light.mvc.model.sys.TEFDictionaryCategory;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.Dictionary;\nimport light.mvc.service.sys.DictionaryServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n\n@Service\npublic class DictionaryServiceImpl implements DictionaryServiceI{\n\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFDictionary> dictionaryDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFDictionaryCategory> dictionarytypeDao;\n\n\t@Override\n\tpublic void add(Dictionary r) {\n\t\tTEFDictionary t = new TEFDictionary();\n\t\tt.setIsDefault(GlobalConstant.NOT_DEFAULT);\n\t\tt.setActive(GlobalConstant.ENABLE);\n\t\tt.setCode(r.getCode());\n\t\tt.setText(r.getText());\n\t\tt.setSeq(r.getSeq());\n\t\tt.setDictionaryCategory(dictionarytypeDao.get(TEFDictionaryCategory.class, r.getDictionarytypeId()));\n\t\tdictionaryDao.save(t);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\tTEFDictionary t = dictionaryDao.get(TEFDictionary.class, id);\n\t\tt.setDeleted(1);\n\t\tdictionaryDao.update(t);\n\t}\n\n\t@Override\n\tpublic void edit(Dictionary r) {\n\t\tTEFDictionary t = dictionaryDao.get(TEFDictionary.class, r.getId());\n\t\tt.setText(r.getText());\n\t\tt.setSeq(r.getSeq());\n\t\tt.setCode(r.getCode());\n\t\tt.setActive(r.getActive());\n\t\tt.setDictionaryCategory(dictionarytypeDao.get(TEFDictionaryCategory.class, r.getDictionarytypeId()));\n\t\tdictionaryDao.update(t);\n\t}\n\n\t@Override\n\tpublic Dictionary get(Long id) {\n\t\tTEFDictionary t = dictionaryDao.get(TEFDictionary.class, id);\n\t\tDictionary r = new Dictionary();\n\t\tr.setId(t.getAutoID());\n\t\tr.setIsDefault(t.getIsDefault());\n\t\tr.setText(t.getText());\n\t\tr.setSeq(t.getSeq());\n\t\tr.setCode(t.getCode());\n\t\tif(t.getDictionaryCategory()!=null){\n\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t}\n\t\tr.setActive(t.getActive());\n\t\treturn r;\n\t}\n\n\t@Override\n\tpublic List<Dictionary> dataGrid(Dictionary dictionary, PageFilter ph) {\n\t\tList<Dictionary> ul = new ArrayList<Dictionary>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFDictionary t \";\n\t\tList<TEFDictionary> l = dictionaryDao.find(hql + whereHql(dictionary, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor (TEFDictionary t : l) {\n\t\t\tDictionary u = new Dictionary();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tu.setId(t.getAutoID());\n\t\t\t\n\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\tu.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\tu.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(Dictionary dictionary, PageFilter ph) {\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFDictionary t \";\n\t\treturn dictionaryDao.count(\"select count(*) \" + hql + whereHql(dictionary, params), params);\n\t}\n\n\tprivate String whereHql(Dictionary dictionary, Map<String, Object> params) {\n\t\tString hql = \"\";\n\t\tif (dictionary != null) {\n\t\t\thql += \" where t.deleted=0\";\n\t\t\tif (dictionary.getText() != null) {\n\t\t\t\thql += \" and t.name like :name\";\n\t\t\t\tparams.put(\"name\", \"%%\" + dictionary.getText() + \"%%\");\n\t\t\t}\n\t\t\tif(dictionary.getDictionarytypeId()!=null){\n\t\t\t\thql += \" and t.dictionaryCategory.id = :dictionarytypeId\";\n\t\t\t\tparams.put(\"dictionarytypeId\", dictionary.getDictionarytypeId());\n\t\t\t}\n\t\t}\n\t\treturn hql;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\n\t@Override\n\tpublic List<Dictionary> combox(String code) {\n\t\tList<Dictionary> ld = new ArrayList<Dictionary>();\n\t\tList<TEFDictionary>  lt = dictionaryDao.find(\"from TEFDictionary t where t.active=1 and t.dictionaryCategory.code='\"+code+\"' order by t.seq\");\n\t\tif(lt!=null&&lt.size()>0){\n\t\t\t for (int i = 0; i < lt.size(); i++) {\n\t\t\t\t if(lt.get(i).getActive()==1 && lt.get(i).getDeleted()==0){\n\t\t\t\t\t Dictionary d = new Dictionary();\n\t\t\t\t\t d.setId(lt.get(i).getAutoID());\n\t\t\t\t\t d.setCode(lt.get(i).getCode());\n\t\t\t\t\t d.setText(lt.get(i).getText());\n\t\t\t\t\t ld.add(d);\n\t\t\t\t }\n\t\t\t}\n\t\t }\n\t\treturn ld;\n\t}\n\n\t@Override\n\tpublic Dictionary checkUnique(Dictionary dictionary) {\n\t\tString query = \"from TEFDictionary t where t.code = :code and t.dictionaryCategory.autoID =  :categoryid\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"code\", dictionary.getCode());\n\t\tparams.put(\"categoryid\", dictionary.getDictionarytypeId());\n\t\tTEFDictionary t = dictionaryDao.get(query, params);\n\t\tif(t!=null){\n\t\t\tDictionary r = new Dictionary();\n\t\t\tr.setId(t.getAutoID());\n\t\t\tr.setIsDefault(t.getIsDefault());\n\t\t\tr.setText(t.getText());\n\t\t\tr.setSeq(t.getSeq());\n\t\t\tr.setCode(t.getCode());\n\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t}\n\t\t\tr.setActive(t.getActive());\n\t\t\treturn r;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic Dictionary getDefaultDictionary(String categoryCode){\n\t\tif(categoryCode.isEmpty()){\n\t\t\treturn null;\n\t\t}\n\t\tString query = \"from TEFDictionary t where t.dictionaryCategory.code = : categorycode and t.isDefault=1\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"categorycode\", categoryCode);\n\t\tTEFDictionary t = dictionaryDao.get(query, params);\n\t\tif(t != null){\n\t\t\tDictionary r = new Dictionary();\n\t\t\tr.setId(t.getAutoID());\n\t\t\tr.setIsDefault(t.getIsDefault());\n\t\t\tr.setText(t.getText());\n\t\t\tr.setSeq(t.getSeq());\n\t\t\tr.setCode(t.getCode());\n\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t}\n\t\t\tr.setActive(t.getActive());\n\t\t\treturn r;\n\t\t}\n\t\telse{\n\t\t\treturn null;\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic Dictionary getDictionary(String categoryCode, String contentCode){\n\t\tif(categoryCode.isEmpty() ||  contentCode.isEmpty()){\n\t\t\treturn null;\n\t\t}\n\t\tString query = \"from TEFDictionary t where t.dictionaryCategory.code = :categorycode and t.code = :contentcode\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"categorycode\", categoryCode);\n\t\tparams.put(\"contentcode\", contentCode);\n\t\tTEFDictionary t = dictionaryDao.get(query, params);\n\t\tif(t != null){\n\t\t\tDictionary r = new Dictionary();\n\t\t\tr.setId(t.getAutoID());\n\t\t\tr.setIsDefault(t.getIsDefault());\n\t\t\tr.setText(t.getText());\n\t\t\tr.setSeq(t.getSeq());\n\t\t\tr.setCode(t.getCode());\n\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t}\n\t\t\tr.setActive(t.getActive());\n\t\t\treturn r;\n\t\t}\n\t\telse{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<Dictionary> getDictionaryByCategoryCode(String code) {\n\t\t// TODO Auto-generated method stub\n\t\tif(code.isEmpty() ){\n\t\t\treturn null;\n\t\t}\n\t\tString hql = \"from TEFDictionary t where t.deleted=0 and t.dictionaryCategory.code = :code\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"code\", code);\n\t\tList<TEFDictionary> lt = dictionaryDao.find(hql, params);\n\t\tList<Dictionary> dl = new ArrayList<Dictionary>();\n\t\tif(lt!=null&&lt.size()>0)\n\t\t{\n\t\t\tfor(TEFDictionary t:lt)\n\t\t\t{\n\t\t\t\tDictionary r = new Dictionary();\n\t\t\t\tr.setId(t.getAutoID());\n\t\t\t\tr.setIsDefault(t.getIsDefault());\n\t\t\t\tr.setText(t.getText());\n\t\t\t\tr.setSeq(t.getSeq());\n\t\t\t\tr.setCode(t.getCode());\n\t\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t\t}\n\t\t\t\tr.setActive(t.getActive());\n\t\t\t\tdl.add(r);\n\t\t\t}\n\t\t}\n\t\treturn dl;\n\t}\n\n\t@Override\n\tpublic List<Dictionary> getDictionaryByCategoryID(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tif(id==null||id==0 ){\n\t\t\treturn null;\n\t\t}\n\t\tString hql = \"from TEFDictionary t where t.deleted=0 and t.dictionaryCategory.autoID = :id\";\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"autoID\", id);\n\t\tList<TEFDictionary> lt = dictionaryDao.find(hql, params);\n\t\tList<Dictionary> dl = new ArrayList<Dictionary>();\n\t\tif(lt!=null&&lt.size()>0)\n\t\t{\n\t\t\tfor(TEFDictionary t:lt)\n\t\t\t{\n\t\t\t\tDictionary r = new Dictionary();\n\t\t\t\tr.setId(t.getAutoID());\n\t\t\t\tr.setIsDefault(t.getIsDefault());\n\t\t\t\tr.setText(t.getText());\n\t\t\t\tr.setSeq(t.getSeq());\n\t\t\t\tr.setCode(t.getCode());\n\t\t\t\tif(t.getDictionaryCategory()!=null){\n\t\t\t\t\tr.setDictionarytypeId(t.getDictionaryCategory().getAutoID());\n\t\t\t\t\tr.setDictionarytypeName(t.getDictionaryCategory().getName());\n\t\t\t\t}\n\t\t\t\tr.setActive(t.getActive());\n\t\t\t\tdl.add(r);\n\t\t\t}\n\t\t}\n\t\treturn dl;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/DictionarytypeServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFDictionaryCategory;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Dictionarytype;\nimport light.mvc.service.sys.DictionarytypeServiceI;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n@Service\npublic class DictionarytypeServiceImpl implements DictionarytypeServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFDictionaryCategory> dictionarytypeDao;\n\n\t@Override\n\tpublic void add(Dictionarytype r) {\n\t\tTEFDictionaryCategory t = new TEFDictionaryCategory();\n\t\tt.setName(r.getName());\n\t\tt.setSeq(r.getSeq());\n\t\tt.setDescription(r.getDescription());\n\t\tdictionarytypeDao.save(t);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\tTEFDictionaryCategory t = dictionarytypeDao.get(TEFDictionaryCategory.class, id);\n\t\tdictionarytypeDao.delete(t);\n\t}\n\n\t@Override\n\tpublic void edit(Dictionarytype r) {\n\t\tTEFDictionaryCategory t = dictionarytypeDao.get(TEFDictionaryCategory.class, r.getId());\n\t\tt.setDescription(r.getDescription());\n\t\tt.setName(r.getName());\n\t\tt.setSeq(r.getSeq());\n\t\tdictionarytypeDao.update(t);\n\t}\n\n\t@Override\n\tpublic Dictionarytype get(Long id) {\n\t\tTEFDictionaryCategory t = dictionarytypeDao.get(TEFDictionaryCategory.class, id);\n\t\tDictionarytype r = new Dictionarytype();\n\t\tr.setDescription(t.getDescription());\n\t\tr.setId(t.getAutoID());\n\t\tr.setName(t.getName());\n\t\tr.setSeq(t.getSeq());\n\t\treturn r;\n\t}\n\n\t@Override\n\tpublic List<Tree> tree() {\n\t\tList<TEFDictionaryCategory> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\n\t\tl = dictionarytypeDao.find(\"select distinct t from TEFDictionaryCategory t order by t.seq\");\n\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFDictionaryCategory r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif (r.getDictionaryCategory() != null) {\n\t\t\t\t\ttree.setPid(r.getDictionaryCategory().getAutoID().toString());\n\t\t\t\t\ttree.setIconCls(\"icon_folder\");\n\t\t\t\t}else{\n\t\t\t\t\ttree.setIconCls(\"icon_company\");\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getName());\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/EFNoticeServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFDictionary;\nimport light.mvc.model.sys.TEFNotice;\nimport light.mvc.model.sys.TEFPersonalInfo;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.EFNotice;\nimport light.mvc.service.sys.EFNoticeServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.io.Serializable;\nimport java.util.*;\n\n@Service\npublic class EFNoticeServiceImpl implements EFNoticeServiceI {\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFNotice> noticeDao;\n\n\t@Autowired\n\tprivate BaseDaoI<TEFDictionary> dictionaryDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFPersonalInfo> personalDao;\n\t\n\t@Override\n\tpublic Long add(EFNotice notice) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFNotice t = new TEFNotice();\n\t\tBeanUtils.copyProperties(notice, t);\n\t\tt.setDictionary(dictionaryDao.get(TEFDictionary.class, notice.getType()));\n\t\tt.setPersonal(personalDao.get(TEFPersonalInfo.class, notice.getPersonalID()));\n\t\tSerializable id = noticeDao.save(t);\n\t\treturn (Long)id;\n\t}\n\n\t@Override\n\tpublic List<EFNotice> dataGrid(EFNotice notice, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFNotice> ul = new ArrayList<EFNotice>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFNotice t \";\n\t\tList<TEFNotice> l = null;\n\t\tif(ph != null){\n\t\t\tl = noticeDao.find(hql + whereHql(notice, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\t}\n\t\telse{\n\t\t\tl = noticeDao.find(hql + whereHql(notice, params) + \" order by t.updateDate desc\");\n\t\t}\n\t\tfor (TEFNotice t : l) {\n\t\t\tEFNotice u = new EFNotice();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFNotice notice, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFNotice t \";\n\t\treturn noticeDao.count(\"select count(*) \" + hql + whereHql(notice, params), params);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFNotice t = noticeDao.get(TEFNotice.class, id);\n\t\tif(t != null){\n\t\t\tt.setUpdateDate(new Date());\n\t\t\tt.setDeleted(1);\n\t\t}\n\t\tnoticeDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFNotice get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFNotice t = noticeDao.get(\"from TEFNotice t  where t.deleted=0 and t.id = :id\", params);\n\t\tEFNotice u = null;\n\t\tif(t != null)\n\t\t{\n\t\t\tu = new EFNotice();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tu.setPersonalID(t.getPersonal().getAutoID());\n\t\t\tu.setPersonalName(t.getPersonal().getRealName());\n\t\t}\n\t\treturn u;\n\t}\n\n\t@Override\n\n\tpublic List<EFNotice> gethaveNotNotice(Long personalID, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\treturn null;\n\t}\n\n\n\tpublic void edit(EFNotice notice) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFNotice t = noticeDao.get(TEFNotice.class, notice.getAutoID());\n\t\tif(notice.getContent() != null)\n\t\t\tt.setContent(notice.getContent());\n\t\tt.setUpdateDate(new Date());\n\t\tnoticeDao.update(t);\n\t}\n\t\n\t@Override\n\tpublic void setNotice(Long id) {\n\t\tTEFNotice t = noticeDao.get(TEFNotice.class, id);\n\t\tif(t != null && t.getIsNotice() == 0){\n\t\t\tt.setIsNotice(1);\n\t\t\tt.setUpdateDate(new Date());\n\t\t}\t\n\t\tnoticeDao.update(t);\n\t}\n\t\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\n\tprivate String whereHql(EFNotice t, Map<String, Object> params) {//待修改\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (t != null) {\n\t\t\tif(t.getPersonalID() != null && t.getPersonalID() > 0){\n\t\t\t\thql += \" and t.personal.autoID = :autoID\";\n\t\t\t\tparams.put(\"autoID\", t.getPersonalID());\n\t\t\t}\n\t\t\tif(t.getType() != null){\n\t\t\t\thql += \" and t.type = :type\";\n\t\t\t\tparams.put(\"type\", t.getType());\n\t\t\t}\n\t\t\tif(t.getMetaID() != null){\n\t\t\t\thql += \" and t.metaID = :metaID\";\n\t\t\t\tparams.put(\"metaID\", t.getMetaID());\n\t\t\t}\n\t\t\tif(t.getIsNotice() != null){\n\t\t\t\thql += \" and t.isNotice = :isNotice\";\n\t\t\t\tparams.put(\"isNotice\", t.getIsNotice());\n\t\t\t}\n\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic List<EFNotice> gethaveNotice(Long personalID) {\n\t\t// TODO Auto-generated method stub\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic List<EFNotice> gethaveNotNotice(Long personalID) {\n\t\t// TODO Auto-generated method stub\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic List<EFNotice> gethaveNotice(Long personalID, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\treturn null;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/OrganizationServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFLoginUser;\nimport light.mvc.model.sys.TEFOrganization;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Organization;\nimport light.mvc.service.base.ServiceException;\nimport light.mvc.service.sys.OrganizationServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\n@Service\npublic class OrganizationServiceImpl implements OrganizationServiceI {\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFLoginUser> userDao;\n\n\t@Autowired\n\tprivate BaseDaoI<TEFOrganization> organizationDao;\n\n\t@Override\n\tpublic List<Organization> treeGrid() {\n\t\tList<Organization> lr = new ArrayList<Organization>();\n\t\tList<TEFOrganization> l = organizationDao\n\t\t\t\t.find(\"from TEFOrganization t left join fetch t.organization where t.deleted= 0  order by t.seq\");\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFOrganization t : l) {\n\t\t\t\tOrganization r = new Organization();\n\t\t\t\tBeanUtils.copyProperties(t, r);\n\t\t\t\tr.setId(t.getAutoID());\n\t\t\t\tif (t.getOrganization() != null) {\n\t\t\t\t\tr.setPid(t.getOrganization().getAutoID());\n\t\t\t\t\tr.setPname(t.getOrganization().getDepartmentName());\n\t\t\t\t}\n\t\t\t\tr.setIconCls(t.getIcon());\n\t\t\t\tlr.add(r);\n\t\t\t}\n\t\t}\n\t\treturn lr;\n\t}\n\n\t@Override\n\tpublic void add(Organization org) {\n\t\tTEFOrganization t = new TEFOrganization();\n\t\tBeanUtils.copyProperties(org, t);\n\t\tif ((org.getPid() != null) && !\"\".equals(org.getPid())) {\n\t\t\tt.setOrganization(organizationDao.get(TEFOrganization.class, org.getPid()));\n\t\t}\n\t\tt.setCreateDate(new Date());\n\t\torganizationDao.save(t);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\tTEFOrganization t = organizationDao.get(TEFOrganization.class, id);\n\t\tdel(t);\n\t}\n\n\tprivate void del(TEFOrganization t) {\n\t\tList<TEFLoginUser> list = userDao.find(\"from TEFPersonalInfo t left join t.organization org where org.autoID=\"+t.getAutoID());\n\t\tif(list!=null&&list.size()>0){\n\t\t\tthrow new ServiceException(\"该部门已经被用户使用\");\n\t\t}else{\n\t\t\tif ((t.getOrganizations() != null) && (t.getOrganizations().size() > 0)) {\n\t\t\t\tfor (TEFOrganization r : t.getOrganizations()) {\n\t\t\t\t\tdel(r);\n\t\t\t\t}\n\t\t\t}\n\t\t\tt.setDeleted(1);\n\t\t\torganizationDao.update(t);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void edit(Organization r) {\n\t\tTEFOrganization t = organizationDao.get(TEFOrganization.class, r.getId());\n\t\tt.setDepartmentCode(r.getDepartmentCode());\n\t\tt.setIcon(r.getIcon());\n\t\tt.setDepartmentName(r.getDepartmentName());\n\t\tt.setSeq(r.getSeq());\n\t\tif ((r.getPid() != null) && !\"\".equals(r.getPid())) {\n\t\t\tt.setOrganization(organizationDao.get(TEFOrganization.class, r.getPid()));\n\t\t}\n\t\torganizationDao.update(t);\n\t}\n\n\t@Override\n\tpublic Organization get(Long id) {\n\t\tTEFOrganization t = organizationDao.get(TEFOrganization.class, id);\n\t\tif(t != null && t.getDeleted() == 0){\n\t\t\tOrganization r = new Organization();\n\t\t\tBeanUtils.copyProperties(t, r);\n\t\t\tr.setId(t.getAutoID());\n\t\t\tif (t.getOrganization() != null) {\n\t\t\t\tr.setPid(t.getOrganization().getAutoID());\n\t\t\t\tr.setPname(t.getOrganization().getDepartmentName());\n\t\t\t}\n\t\t\treturn r;\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic List<Tree> tree() {\n\t\tList<TEFOrganization> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\n\t\tl = organizationDao.find(\"select distinct t from TEFOrganization t where t.deleted= 0 order by t.seq\");\n\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFOrganization r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif (r.getOrganization() != null) {\n\t\t\t\t\ttree.setPid(r.getOrganization().getAutoID().toString());\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getDepartmentName());\n\t\t\t\ttree.setIconCls(r.getIcon());\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\t\n\t//获取审核的部门组织路径，每一个上级部门都包含其中\n\t@Override\n\tpublic List<Organization> getAuditPath(Long organizationId) {\n\t\tList<Organization> result = new ArrayList<Organization>();\n\t\tOrganization r = get(organizationId);\n\t\tif(r != null)\n\t\t{\n\t\t\tresult.add(r);\n\t\t\twhile(r.getPid() != null && r.getPid() > 0)\n\t\t\t{\n\t\t\t\tr = get(r.getPid());\n\t\t\t\tif(r != null)\n\t\t\t\t\tresult.add(r);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/ResourceMetaImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFDictionary;\nimport light.mvc.model.sys.TEFResourceMeta;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.sys.EFResourceMeta;\nimport light.mvc.service.sys.ResourceMetaServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.io.Serializable;\nimport java.text.SimpleDateFormat;\nimport java.util.*;\n\n@Service\npublic class ResourceMetaImpl implements ResourceMetaServiceI{\n\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFDictionary> dictionaryDao;\n\t@Autowired\n\tprivate BaseDaoI<TEFResourceMeta> resourceMetaDao;\n\t\n\t@Override\n\tpublic List<EFResourceMeta> dataGrid(EFResourceMeta resourceMeta) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFResourceMeta> ul = new ArrayList<EFResourceMeta>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFResourceMeta t \";\n\t\tList<TEFResourceMeta> l = resourceMetaDao.find(hql + whereHql(resourceMeta, params), params);\n\t\tfor (TEFResourceMeta t : l) {\n\t\t\tEFResourceMeta u = new EFResourceMeta();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\t\n\t@Override\n\tpublic List<EFResourceMeta> dataGrid(EFResourceMeta resourceMeta, PageFilter ph) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFResourceMeta> ul = new ArrayList<EFResourceMeta>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFResourceMeta t \";\n\t\tList<TEFResourceMeta> l = resourceMetaDao.find(hql + whereHql(resourceMeta, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor (TEFResourceMeta t : l) {\n\t\t\tEFResourceMeta u = new EFResourceMeta();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(EFResourceMeta resourceMeta) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFResourceMeta t \";\n\t\treturn resourceMetaDao.count(\"select count(*) \" + hql + whereHql(resourceMeta, params), params);\n\t}\n\n\t@Override\n\tpublic Long add(EFResourceMeta resourceMeta) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFResourceMeta t = new TEFResourceMeta();\n\t\tBeanUtils.copyProperties(resourceMeta, t);\n\t\tt.setDictionary(dictionaryDao.get(TEFDictionary.class, resourceMeta.getType()));\n\t\tt.setUpdateDate(new Date());\n\t\tSerializable id = resourceMetaDao.save(t);\n\t\treturn (Long)id;\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFResourceMeta t = resourceMetaDao.get(TEFResourceMeta.class, id);\n\t\tif(t != null){\n\t\t\tt.setDeleted(1);\n\t\t\tt.setUpdateDate(new Date());\n\t\t}\n\t\tresourceMetaDao.update(t);\n\t}\n\n\t@Override\n\tpublic void edit(EFResourceMeta resourceMeta) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFResourceMeta t = resourceMetaDao.get(TEFResourceMeta.class, resourceMeta.getAutoID());\n\t\tt.setMetaPath(resourceMeta.getMetaPath());\n\t\tt.setMetaDescription(resourceMeta.getMetaDescription());\n\t\tt.setThumbMetaPath(resourceMeta.getThumbMetaPath());\n\t\tresourceMetaDao.update(t);\n\t}\n\n\t@Override\n\tpublic EFResourceMeta get(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"id\", id);\n\t\tTEFResourceMeta t = resourceMetaDao.get(\"from TEFResourceMeta t  where t.deleted=0 and t.autoID = :id\", params);\n\t\tEFResourceMeta u = null;\n\t\tif(t != null)\n\t\t{\n\t\t\tu = new EFResourceMeta();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tu.setType(t.getDictionary().getAutoID());\n\t\t}\n\t\treturn u;\n\t}\n\t\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\t\n\tprivate String whereHql(EFResourceMeta t, Map<String, Object> params) {//待修改\n\t\tString hql = \" where t.deleted=0 \";\n\t\tif (t != null) {\n\t\t\tif(t.getType() != null){\n\t\t\t\thql += \" and t.dictionary.autoID = :type\";\n\t\t\t\tparams.put(\"type\", t.getType());\n\t\t\t}\n\t\t\tif(t.getMetaID() != null){\n\t\t\t\thql += \" and t.metaID = :metaID\";\n\t\t\t\tparams.put(\"metaID\", t.getMetaID());\n\t\t\t}\n\t\t\tif(t.getCreateDate() != null){\n\t\t\t\thql += \" and (t.createDate >= :startCreateDate and t.createDate < :endCreateDate )\";\n\t\t\t\tSimpleDateFormat sdf=new SimpleDateFormat(\"yyyy-MM-dd\");\n\t\t\t\tCalendar cal = Calendar.getInstance();\n\t\t\t\tcal.setTime(t.getCreateDate());\n\t\t\t\tcal.add(Calendar.DATE, 1);\n\t\t\t\tparams.put(\"startCreateDate\", t.getCreateDate());\n\t\t\t\tparams.put(\"endCreateDate\", cal.getTime());\n\t\t\t}\n\t\t}\n\n\t\treturn hql;\n\t}\n\n\t@Override\n\tpublic List<EFResourceMeta> get(Long metaID, Long typeID) {\n\t\t// TODO Auto-generated method stub\n\t\tList<EFResourceMeta> ul= new ArrayList<EFResourceMeta>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"metaID\", metaID);\n\t\tparams.put(\"typeID\",typeID);\n\t\tString hql=\"from TEFResourceMeta t where t.deleted = 0 and t.metaID = :metaID and t.dictionary.autoID= :typeID order by t.autoID\";\n\t\tList<TEFResourceMeta> l=resourceMetaDao.find(hql, params);\n\t\tif((l!=null)&&(l.size()>0))\n\t\t{\n\t\tfor(TEFResourceMeta t: l)\n\t\t{\n\t\t\tEFResourceMeta resource = new EFResourceMeta();\n\t\t\tBeanUtils.copyProperties(t, resource);\n\t\t\tresource.setType(t.getDictionary().getAutoID());\n\t\t\tresource.setTypeName(t.getDictionary().getText());\n\t\t\tif(t.getMetaDescription()!=null)\n\t\t\t{\n\t\t\tString[] strd=t.getMetaDescription().split(\";@;\");\n\t\t\t//System.out.println(strd.length);\n\t\t\tif(strd.length==2)\n\t\t\t{\n\t\t\tresource.setDescription(strd[0]);\n\t\t\tresource.setAddress(strd[1]);\n\t\t\t}\n\t\t\t}\n\t\t\tul.add(resource);\n\t\t}\n\t\treturn ul;\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\t\n\t//按天获取指定项目资源的数量\n\t@Override\n\tpublic Map<Date, Integer> getDateCount(Long metaID, Long typeID){\n\t\tMap<Date, Integer> ul= new HashMap<Date, Integer>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"metaID\", metaID);\n\t\tparams.put(\"typeID\",typeID);\n\t\tString hql = \"select date(t.CreateDate) as 'date', count(t.AutoID) as 'count' from resourcemeta t where t.deleted=0 and t.MetaID = :metaID and t.Type = :typeID group by date(t.CreateDate)\";\n\t\tList<Object[]> l=resourceMetaDao.findBySql(hql, params);\n\t\tfor (Object[] obj : l) {\n\t\t\tul.put((Date)obj[0], Integer.parseInt(obj[1].toString()));\n\t\t}\n\t\t\n\t\treturn ul;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/ResourceServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFResource;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Resource;\nimport light.mvc.service.sys.ResourceServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n@Service\npublic class ResourceServiceImpl implements ResourceServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFResource> resourceDao;\n\n\t@Override\n\tpublic List<Resource> treeGrid() {\n\t\tList<Resource> lr = new ArrayList<Resource>();\n\t\tList<TEFResource> l = resourceDao\n\t\t\t\t.find(\"select distinct t from TEFResource t left join fetch t.parentResource  order by t.seq\");\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFResource t : l) {\n\t\t\t\tResource r = new Resource();\n\t\t\t\tBeanUtils.copyProperties(t, r);\n\t\t\t\tr.setName(t.getResourceName());\n\t\t\t\tr.setResourcetype(t.getResourceType());\n\t\t\t\tr.setCstate(t.getActive());\n\t\t\t\tr.setId(t.getAutoID());\n\t\t\t\tif (t.getParentResource() != null) {\n\t\t\t\t\tr.setPid(t.getParentResource().getAutoID());\n\t\t\t\t\tr.setPname(t.getParentResource().getResourceName());\n\t\t\t\t}\n\t\t\t\tr.setIconCls(t.getIcon());\n\t\t\t\tlr.add(r);\n\t\t\t}\n\t\t}\n\t\treturn lr;\n\t}\n\n\t@Override\n\tpublic void add(Resource r) {\n\t\tTEFResource t = new TEFResource();\n\t\tt.setCreateDate(new Date());\n\t\tt.setDescription(r.getDescription());\n\t\tt.setIcon(r.getIcon());\n\t\tt.setResourceName(r.getName());\n\t\tif ((r.getPid() != null) && !\"\".equals(r.getPid())) {\n\t\t\tt.setParentResource(resourceDao.get(TEFResource.class, r.getPid()));\n\t\t}\n\t\tt.setResourceType(r.getResourcetype());\n\t\tt.setSeq(r.getSeq());\n\t\tt.setActive(r.getCstate());\n\t\tt.setUrl(r.getUrl());\n\t\tresourceDao.save(t);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\tTEFResource t = resourceDao.get(TEFResource.class, id);\n\t\tdel(t);\n\t}\n\n\tprivate void del(TEFResource t) {\n\t\tif ((t.getResources() != null) && (t.getResources().size() > 0)) {\n\t\t\tfor (TEFResource r : t.getResources()) {\n\t\t\t\tdel(r);\n\t\t\t}\n\t\t}\n\t\tresourceDao.delete(t);\n\t}\n\n\t@Override\n\tpublic void edit(Resource r) {\n\t\tTEFResource t = resourceDao.get(TEFResource.class, r.getId());\n\t\tt.setDescription(r.getDescription());\n\t\tt.setIcon(r.getIcon());\n\t\tt.setResourceName(r.getName());\n\t\tif ((r.getPid() != null) && !\"\".equals(r.getPid())) {\n\t\t\tt.setParentResource(resourceDao.get(TEFResource.class, r.getPid()));\n\t\t}\n\t\tt.setResourceType(r.getResourcetype());\n\t\tt.setSeq(r.getSeq());\n\t\tt.setActive(r.getCstate());\n\t\tt.setUrl(r.getUrl());\n\t\tresourceDao.update(t);\n\t}\n\n\t@Override\n\tpublic Resource get(Long id) {\n\t\tTEFResource t = resourceDao.get(TEFResource.class, id);\n\t\tResource r = new Resource();\n\t\tBeanUtils.copyProperties(t, r);\n\t\tr.setCstate(t.getActive());\n\t\tr.setResourcetype(t.getResourceType());\n\t\tr.setName(t.getResourceName());\n\t\tr.setId(t.getAutoID());\n\t\tr.setDescription(t.getDescription());\n\t\tif (t.getParentResource() != null) {\n\t\t\tr.setPid(t.getParentResource().getAutoID());\n\t\t\tr.setPname(t.getParentResource().getResourceName());\n\t\t}\n\t\treturn r;\n\t}\n\n\t@Override\n\tpublic List<Tree> tree(SessionInfo sessionInfo) {\n\t\tList<TEFResource> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"resourceType\", 0);// 菜单类型的资源\n\n\t\tif (sessionInfo != null) {\n\t\t\tif(\"admin\".equals(sessionInfo.getLoginname())){\n\t\t\t\tl = resourceDao\n\t\t\t\t\t\t.find(\"select distinct t from TEFResource t  where t.resourceType = :resourceType  order by t.seq\",\n\t\t\t\t\t\t\t\tparams);\n\t\t\t}else{\n\t\t\t\tparams.put(\"userId\", Long.valueOf(sessionInfo.getId()));// 自查自己有权限的资源\n\t\t\t\tl = resourceDao\n\t\t\t\t\t.find(\"select distinct t from TEFResource t join fetch t.roles role join role.users user where t.resourceType = :resourceType and user.autoID = :userId order by t.seq\",\n\t\t\t\t\t\t\tparams);\n\t\t\t}\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFResource r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif (r.getParentResource() != null) {\n\t\t\t\t\ttree.setPid(r.getParentResource().getAutoID().toString());\n\t\t\t\t}else{\n\t\t\t\t\ttree.setState(\"closed\");\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getResourceName());\n\t\t\t\ttree.setIconCls(r.getIcon());\n\t\t\t\tMap<String, Object> attr = new HashMap<String, Object>();\n\t\t\t\tattr.put(\"url\", r.getUrl());\n\t\t\t\ttree.setAttributes(attr);\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic List<Tree> allTree(boolean flag) {\n\t\tList<TEFResource> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\t\tif(flag){\n\t\t\tl = resourceDao.find(\"select distinct t from TEFResource t left join fetch t.parentResource  order by t.seq\");\n\t\t}else{\n\t\t\tl = resourceDao.find(\"select distinct t from TEFResource t left join fetch t.parentResource where t.resourceType =0 order by t.seq\");\n\t\t}\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFResource r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\tif (r.getParentResource() != null) {\n\t\t\t\t\ttree.setPid(r.getParentResource().getAutoID().toString());\n\t\t\t\t}\n\t\t\t\ttree.setText(r.getResourceName());\n\t\t\t\ttree.setIconCls(r.getIcon());\n\t\t\t\tMap<String, Object> attr = new HashMap<String, Object>();\n\t\t\t\tattr.put(\"url\", r.getUrl());\n\t\t\t\ttree.setAttributes(attr);\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n\n\t@Override\n\tpublic List<String> resourceAllList() {\n\t\tList<String> resourceList = new ArrayList<String>();\n\t\tList<TEFResource> l = resourceDao.find(\"select distinct t from TEFResource t left join fetch t.parentResource  order by t.seq\");\n\t\tfor (int i = 0; i < l.size(); i++) {\n\t\t\tresourceList.add(l.get(i).getUrl());\n\t\t}\n\t\treturn resourceList;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/RoleServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.model.sys.TEFResource;\nimport light.mvc.model.sys.TEFRole;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.Tree;\nimport light.mvc.pageModel.sys.Role;\nimport light.mvc.service.sys.RoleServiceI;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n@Service\npublic class RoleServiceImpl implements RoleServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFRole> roleDao;\n\n\t@Autowired\n\tprivate BaseDaoI<TEFResource> resourceDao;\n\n\t@Override\n\tpublic void add(Role r) {\n\t\tTEFRole t = new TEFRole();\n\t\tt.setIsDefault(0);\n\t\tt.setRoleName(r.getName());\n\t\t////t.setSeq(r.getSeq());\n\t\tt.setDescription(r.getDescription());\n\t\troleDao.save(t);\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\tTEFRole t = roleDao.get(TEFRole.class, id);\n\t\troleDao.delete(t);\n\t}\n\n\t@Override\n\tpublic void edit(Role r) {\n\t\tTEFRole t = roleDao.get(TEFRole.class, r.getId());\n\t\tt.setDescription(r.getDescription());\n\t\tt.setRoleName(r.getName());\n\t\tt.setIsDefault(r.getIsdefault());\n\t\t//t(r.getSeq());\n\t\troleDao.update(t);\n\t}\n\n\t@Override\n\tpublic Role get(Long id) {\n\t\tTEFRole t = roleDao.get(TEFRole.class, id);\n\t\tRole r = new Role();\n\t\tr.setDescription(t.getDescription());\n\t\tr.setId(t.getAutoID());\n\t\tr.setIsdefault(t.getIsDefault());\n\t\tr.setName(t.getRoleName());\n\t\t//r.setSeq(t.getSeq());\n\t\tSet<TEFResource> s = t.getResources();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor (TEFResource tr : s) {\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids += tr.getAutoID();\n\t\t\t\tnames += tr.getResourceName();\n\t\t\t}\n\t\t\tr.setResourceIds(ids);\n\t\t\tr.setResourceNames(names);\n\t\t}\n\t\treturn r;\n\t}\n\n\t@Override\n\tpublic List<Role> dataGrid(Role role, PageFilter ph) {\n\t\tList<Role> ul = new ArrayList<Role>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFRole t \";\n\t\tList<TEFRole> l = roleDao.find(hql + whereHql(role, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor (TEFRole t : l) {\n\t\t\tRole u = new Role();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tu.setId(t.getAutoID());\n\t\t\tu.setName(t.getRoleName());\n\t\t\tu.setIsdefault(t.getIsDefault());\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(Role role, PageFilter ph) {\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFRole t \";\n\t\treturn roleDao.count(\"select count(*) \" + hql + whereHql(role, params), params);\n\t}\n\n\tprivate String whereHql(Role role, Map<String, Object> params) {\n\t\tString hql = \"\";\n\t\tif (role != null) {\n\t\t\thql += \" where 1=1 \";\n\t\t\tif (role.getName() != null) {\n\t\t\t\thql += \" and t.name like :name\";\n\t\t\t\tparams.put(\"name\", \"%%\" + role.getName() + \"%%\");\n\t\t\t}\n\t\t\tif(role.getIsdefault()!=null)\n\t\t\t{\n\t\t\t\thql+=\"and t.isDefault= :isDefault\";\n\t\t\t\tparams.put(\"isDefault\", role.getIsdefault());\n\t\t\t}\n\t\t}\n\t\treturn hql;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\n\t@Override\n\tpublic void grant(Role role) {\n\t\tTEFRole t = roleDao.get(TEFRole.class, role.getId());\n\t\tif ((role.getResourceIds() != null) && !role.getResourceIds().equalsIgnoreCase(\"\")) {\n\t\t\tString ids = \"\";\n\t\t\tboolean b = false;\n\t\t\tfor (String id : role.getResourceIds().split(\",\")) {\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids += id;\n\t\t\t}\n\t\t\tt.setResources(new HashSet<TEFResource>(resourceDao.find(\"select distinct t from TEFResource t where t.id in (\"\n\t\t\t\t\t+ ids + \")\")));\n\t\t} else {\n\t\t\tt.setResources(null);\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<Tree> tree() {\n\t\tList<TEFRole> l = null;\n\t\tList<Tree> lt = new ArrayList<Tree>();\n\n\t\tl = roleDao.find(\"select distinct t from TEFRole t\");\n\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\t\tfor (TEFRole r : l) {\n\t\t\t\tTree tree = new Tree();\n\t\t\t\ttree.setId(r.getAutoID().toString());\n\t\t\t\ttree.setText(r.getRoleName());\n\t\t\t\tlt.add(tree);\n\t\t\t}\n\t\t}\n\t\treturn lt;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/service/sys/impl/UserServiceImpl.java",
    "content": "package light.mvc.service.sys.impl;\n\nimport light.mvc.dao.BaseDaoI;\nimport light.mvc.framework.constant.GlobalConstant;\nimport light.mvc.model.manual.TEFmanualCategory;\nimport light.mvc.model.sys.*;\nimport light.mvc.pageModel.base.PageFilter;\nimport light.mvc.pageModel.base.SessionInfo;\nimport light.mvc.pageModel.sys.User;\nimport light.mvc.service.sys.UserServiceI;\nimport light.mvc.utils.MD5Util;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.*;\n\n\n/*\n * @author: yeyaowen \n * 编写日期：2016-8-9\n * 特别注意：初步编写，尚未测试\n * */\n@Service\npublic class UserServiceImpl implements UserServiceI {\n\n\t@Autowired\n\tprivate BaseDaoI<TEFLoginUser> userDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFPersonalInfo> userInfoDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFRole> roleDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFOrganization> organizationDao;\n\t\n\t@Autowired\n\tprivate BaseDaoI<TEFmanualCategory> categoryDao;\n\t\n\t@Override\n\tpublic List<User> dataGrid(User user, PageFilter ph) {\n\t\t// Author：yeyaowen 2016-8-9\n\t\tList<User> ul = new ArrayList<User>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFLoginUser t \";\n\t\tList<TEFLoginUser> l= userDao.find(hql + whereHql(user, params) + orderHql(ph), params, ph.getPage(), ph.getRows());\n\t\tfor(TEFLoginUser t:l)\n\t\t{\n\t\t\tUser u= new User();\n\t\t\tBeanUtils.copyProperties(t, u);\n\t\t\tTEFPersonalInfo tp= t.getPersonalInfo();\n\t\t\tBeanUtils.copyProperties(tp, u);\n\t\t\tTEFRole role=tp.getRole();\n\t\t\tif(role!=null)\n\t\t\t{\n\t\t\t\tu.setRoleIds(role.getAutoID());\n\t\t\t\tu.setRoleNames(role.getRoleName());\n\t\t\t}\n\t\t\tif(tp.getOrganization()!=null)\n\t\t\t{\n\t\t\t\tu.setOrganizationId(tp.getOrganization().getAutoID());\n\t\t\t\tu.setOrganizationName(tp.getOrganization().getDepartmentName());\n\t\t\t}\n\t\t\tul.add(u);\n\t\t}\n\t\t\n\t\treturn ul;\n\t}\n\n\t@Override\n\tpublic Long count(User user, PageFilter ph) {\n\t\t\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tString hql = \" from TEFLoginUser t \";\n\t\treturn userDao.count(\"select count(*) \" + hql + whereHql(user, params), params);\n\t}\n\n\t@Override\n\tpublic Long add(User u) {\n\t\t// TODO Auto-generated method stub\n\t\t// @author:yeyaowen  2016-8-9\n\t\t// des: 初步设计\n\t\t\n\t\tTEFLoginUser t= new TEFLoginUser();\n\t\tBeanUtils.copyProperties(u, t);\n\t\tTEFPersonalInfo tp = new TEFPersonalInfo();\n\t\tBeanUtils.copyProperties(u, tp);\n\t\tif(u.getOrganizationId()!=null)\n\t\t{\n\t\ttp.setOrganization(organizationDao.get(TEFOrganization.class, u.getOrganizationId()));\n\t\t}\n\t\ttp.setRole(roleDao.get(TEFRole.class, u.getRoleIds()));\n\t\tt.setPersonalInfo(tp);\n\t\tt.setPassword(MD5Util.md5(u.getPassword()));\n\t\tt.setStatus(GlobalConstant.ENABLE);\n\t\tt.setCreateDate(new Date());\n\t\tLong returnid = (Long)userInfoDao.save(tp);\n\t\tuserDao.save(t);\n\t\treturn returnid;\n\t}\n\n\t@Override\n\tpublic void delete(Long id) {\n\t\t// Author：yeyaowen 2016-8-9\n\t\tTEFLoginUser t= userDao.get(TEFLoginUser.class, id);\n\t\tTEFPersonalInfo tp =userInfoDao.get(TEFPersonalInfo.class, id);\n\t\tif(t!=null&&tp!=null)\n\t\t{\n\t\tt.setActive(0);\n\t\ttp.setActive(0);\n\t\tt.setDeleted(1);\n\t\ttp.setDeleted(1);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void edit(User u) {\n\t\t\n\t\t/*@author : yeyaowen 2016-8-9\n\t\t *  \n\t\t * */\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"autoID\", u.getAutoID());\n\t\tTEFLoginUser t = userDao.get(\"from TEFLoginUser l where l.personalInfo.autoID = :autoID and l.active=1 and l.deleted=0\", params);\n\t\tTEFPersonalInfo tp = t.getPersonalInfo();\n\t\tif(u.getPassword()!=null&&!\"\".equals(u.getPassword())){\n\t\t\tt.setPassword(MD5Util.md5(u.getPassword()));\n\t\t}\n\t\tif(u.getLoginName() != null && u.getLoginName().length() > 0){\n\t\t\tt.setLoginName(u.getLoginName());\n\t\t}\n\t\tif(u.getRealName() != null && u.getRealName().length() > 0){\n\t\t\ttp.setRealName(u.getRealName()); //姓名不保存空值\n\t\t}\n\t\tif(u.getAddress() != null && u.getAddress().length() > 0){\n\t\t\ttp.setAddress(u.getAddress());  //地址不保存空值\n\t\t}\n\t\ttp.setPhoneNumber(u.getPhoneNumber());\n\t\ttp.setEmail(u.getEmail());\n\t\ttp.setAge(u.getAge());\n\t\ttp.setSex(u.getSex());\n\t\ttp.setTechType(u.getTechType());  \t\t//专长\n\t\ttp.setTechTitle(u.getTechTitle());\t\t//职称\n\t\ttp.setNeedPublish(u.getNeedPublish());\t//是否发布\n\t\ttp.setDescription(u.getDescription());\n\t\tif(u.getOrganizationId() != null && u.getOrganizationId() > 0){\n\t\t\ttp.setOrganization(organizationDao.get(TEFOrganization.class, u.getOrganizationId()));\n\t\t}\n\t\tif(u.getRoleIds() != null && u.getRoleIds() > 0){\n\t\t\ttp.setRole(roleDao.get(TEFRole.class, u.getRoleIds()));\n\t\t}\n\n\t\tuserDao.update(t);\n\t\tuserInfoDao.update(tp);\n\t}\n\n\t@Override\n\tpublic User get(Long personalID) {\n\t\t// TODO Auto-generated method stub\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"autoID\", personalID);\n\t\t//System.out.println(id);\n\t\tTEFLoginUser loginUser = userDao.get(\"from TEFLoginUser l where l.personalInfo.autoID = :autoID and l.active=1 and l.deleted=0\", params);\n\t\tTEFPersonalInfo t = userInfoDao.get(\"from TEFPersonalInfo t  left join fetch t.role role where t.autoID = :autoID and t.active=1 and t.deleted=0\", params);\n\t\tif(loginUser == null || t == null){\n\t\t\treturn null;\n\t\t}\n\t\tUser u = new User();\n\t\tBeanUtils.copyProperties(t, u);\n\t\tu.setLoginName(loginUser.getLoginName());\n\t\tu.setLoginAutoID(loginUser.getAutoID()); //登录表的AutoID\n\t\tif(t.getOrganization()!=null){\n\t\t\tu.setOrganizationId(t.getOrganization().getAutoID());\n\t\t\tu.setOrganizationName(t.getOrganization().getDepartmentName());\n\t\t}\n\n\t\tif (t.getRole() != null ) {\n\n\t\t\tu.setRoleIds(t.getRole().getAutoID());\n\t\t\tu.setRoleNames(t.getRole().getRoleName());\n\t\t}\n\t\t\n\t\tSet<TEFmanualCategory> s = t.getManualCategorys();\n\t\tif ((s != null) && !s.isEmpty()) {\n\t\t\tboolean b = false;\n\t\t\tString ids = \"\";\n\t\t\tString names = \"\";\n\t\t\tfor(TEFmanualCategory tr:s)\n\t\t\t{\n\t\t\t\tif (b) {\n\t\t\t\t\tids += \",\";\n\t\t\t\t\tnames += \",\";\n\t\t\t\t} else {\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=tr.getAutoID();\n\t\t\t\tnames+=tr.getCategoryName();\n\t\t\t}\n\t\t\tu.setManualIDs(ids);\n\t\t\tu.setManualNames(names);\n\t\t\t\t\n\t\t}\n\t\t\n\t\treturn u;\n\t}\n\n\t@Override\n\tpublic User login(User user) {\n\t\t// TODO Auto-generated method stub\n\t\t// Author：yeyaowen 2016-8-9\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"loginName\", user.getLoginName());\n\t\tparams.put(\"password\", MD5Util.md5(user.getPassword()));\n\t\tTEFLoginUser t= userDao.get(\"from TEFLoginUser t where t.loginName = :loginName and t.password = :password\", params);\n\t\t\n\t\tif (t != null && t.getPersonalInfo() != null) {\n\t\t\tUser u = get(t.getPersonalInfo().getAutoID());\n\t\t\treturn u;\n\t\t}\n\t\treturn null;\n\t}\n\t//EFPersonalInfo t = userInfoDao.get(\"from EFPersonalInfo t  left join fetch t.role role where t.autoID = :autoID\", params);\n\t@Override\n\tpublic List<String> resourceList(Long id) {\n\t\t// TODO Auto-generated method stub\n\t\tList<String> resourceList = new ArrayList<String>();\n\t\tMap<String, Object> params = new HashMap<String, Object>();\n\t\tparams.put(\"autoID\", id);\n\t\t//System.out.println(id);\n\t\tTEFPersonalInfo t = userInfoDao.get(\n\t\t\t\t\"from TEFPersonalInfo t join fetch t.role role join fetch role.resources resource where t.autoID = :autoID\", params);\n\t\tif (t != null) {\n\t\t\t//System.out.println(\"test1\");\n\t\t\tTEFRole roles = t.getRole();\n\t\t\tif ((roles != null)) {\n\t\t\t\t\n\t\t\t\t\tSet<TEFResource> resources = roles.getResources();\n\t\t\t\t\tif ((resources != null) && !resources.isEmpty()) {\n\t\t\t\t\t\tfor (TEFResource resource : resources) {\n\t\t\t\t\t\t\tif ((resource != null) && (resource.getUrl() != null)) {\n\t\t\t\t\t\t\t\tresourceList.add(resource.getUrl());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\treturn resourceList;\n\t\t}\n\t\treturn null;\n\t\t\n\t}\n\n\t@Override\n\tpublic boolean editUserPwd(SessionInfo sessionInfo, String oldPwd,\n\t\t\tString pwd) {\n\t\t// TODO Auto-generated method stub\n\t\t// Author：yeyaowen 2016-8-9\n\t\tTEFLoginUser u= userDao.get(TEFLoginUser.class, sessionInfo.getId());\n\t\tif(u.getPassword().equalsIgnoreCase(MD5Util.md5(oldPwd)))\n\t\t{\n\t\t\tu.setPassword(MD5Util.md5(pwd));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t@Override\n\tpublic boolean editUserPwd(long autoID,String oldPwd, String pwd) {\n\t\t// TODO Auto-generated method stub\n\t\t// Author：yeyaowen 2016-8-9\n\t\tTEFLoginUser u= userDao.get(TEFLoginUser.class, autoID);\n\t\tif(u.getPassword().equalsIgnoreCase(MD5Util.md5(oldPwd)))\n\t\t{\n\t\t\tu.setPassword(MD5Util.md5(pwd));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t@Override\n\tpublic User getByLoginName(User user) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFLoginUser t= userDao.get(\"from TEFLoginUser t  where t.loginName = '\"+user.getLoginName()+\"'\");\n\t\tUser u =new User();\n\t\tif(t!=null){\n\t\t\tu = get(t.getPersonalInfo().getAutoID());\n\t\t\t//BeanUtils.copyProperties(t, u);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t\treturn u;\n\t}\n\t\n\t\n\tprivate String whereHql(User user, Map<String, Object> params) {\n\t\t// author:yeyaowen   暂未完成的方法\n\t\tString hql = \"\";\n\t\tif (user != null) {\n\t\t\thql += \" where 1=1 \";\n\t\t\tif (user.getRealName() != null) {\n\t\t\t\thql += \" and t.personalInfo.realName like :name\";\n\t\t\t\tparams.put(\"name\", \"%%\" + user.getRealName() + \"%%\");\n\t\t\t}\n\t\t\tif(user.getOrganizationId()!=null){\n\t\t\t\thql += \" and t.personalInfo.organization.autoID =\"+user.getOrganizationId();\n\t\t\t}\n\t\t\tif(user.getSearchKey()!=null&&user.getSearchValue()!=null)\n\t\t\t{\n\t\t\t\thql +=\"and t.personalInfo.\"+user.getSearchKey()+\" like :searchValue\";\n\t\t\t\tparams.put(\"searchValue\",\"%%\" + user.getSearchValue() + \"%%\");\n\t\t\t}\n\t\t}\n\t\treturn hql;\n\t}\n\n\tprivate String orderHql(PageFilter ph) {\n\t\tString orderString = \"\";\n\t\tif ((ph.getSort() != null) && (ph.getOrder() != null)) {\n\t\t\torderString = \" order by t.personalInfo.\" + ph.getSort() + \" \" + ph.getOrder();\n\t\t}\n\t\treturn orderString;\n\t}\n\n\t@Override\n\tpublic List<User> getAllExpert() {\n\t\t// TODO Auto-generated method stub\n\t\tList<User> ul = new ArrayList<User>();\n\t\t\n\t\tString hql = \" from TEFPersonalInfo t where t.role.autoID=2\";\n\t\tList<TEFPersonalInfo> l= userInfoDao.find(hql);\n\t\tif ((l != null) && (l.size() > 0)) {\n\t\tfor(TEFPersonalInfo tp:l)\n\t\t{\n\t\t\tUser u= get(tp.getAutoID());\n\t\t\t/*\n\t\t\tBeanUtils.copyProperties(tp, u);\n\t\t\tTEFRole role=tp.getRole();\n\t\t\tif(role!=null)\n\t\t\t{\n\t\t\t\tu.setRoleIds(role.getAutoID());\n\t\t\t\tu.setRoleNames(role.getRoleName());\n\t\t\t}\n\t\t\tif(tp.getOrganization()!=null)\n\t\t\t{\n\t\t\t\tu.setOrganizationId(tp.getOrganization().getAutoID());\n\t\t\t\tu.setOrganizationName(tp.getOrganization().getDepartmentName());\n\t\t\t}*/\n\t\t\tul.add(u);\n\t\t}\n\t\treturn ul;\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic void setManual(User user) {\n\t\t// TODO Auto-generated method stub\n\t\tTEFPersonalInfo t = userInfoDao.get(TEFPersonalInfo.class,user.getAutoID());\n\t\tif((user.getManualIDs()!=null)&&!user.getManualIDs().equals(\"\")){\n\t\t\n\t\t\tString ids=\"\";\n\t\t\tboolean b= false;\n\t\t\tfor(String id:user.getManualIDs().split(\",\")){\n\t\t\t\tif(b){\n\t\t\t\t\tids+=\",\";\n\t\t\t\t}else{\n\t\t\t\t\tb = true;\n\t\t\t\t}\n\t\t\t\tids+=id;\n\t\t\t}\n\t\t\n\t\t\tt.setManualCategorys(new HashSet<TEFmanualCategory>(categoryDao.find(\"select distinct t from TEFmanualCategory t where t.autoID in(\"\n\t\t\t+ ids + \")\")));\n\t\t}else{\n\t\t\tt.setManualCategorys(null);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/DateTimeUtil.java",
    "content": "package light.mvc.utils;\n\nimport java.math.BigInteger;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n/**\n * Created by ChenHehong on 2016/5/4.\n */\npublic class DateTimeUtil {\n\n    public static String getCurrentDateStr(String format){\n        if (format==null||format.length()==0){\n            format = \"yyyy-MM-dd\";//定义默认格式\n        }\n        Date today = new Date();\n        SimpleDateFormat sdf = new SimpleDateFormat(format);\n        return sdf.format(today);\n    }\n\n    public static Date getCurrentDate(String format){\n        if (format==null||format.length()==0){\n            format = \"yyyy-MM-dd\";//定义默认格式\n        }\n        Date today = new Date();\n        SimpleDateFormat sdf = new SimpleDateFormat(format);\n        String todayString = sdf .format (today);\n        Date todayFormat = null;\n        try {\n            todayFormat = sdf. parse(todayString);\n        } catch (ParseException e) {\n            e.printStackTrace();\n        }\n        return  todayFormat;\n    }\n\n//  获取当前时间几天前的日期时间\n    public static Date getPreDate(int preDate,String format){\n        if (format==null||format.length()==0){\n            format = \"yyyy-MM-dd\";//定义默认格式\n        }\n        long preDateTime = System.currentTimeMillis()-preDate*24*60*60;\n        SimpleDateFormat sdf = new SimpleDateFormat(format);\n        String d = sdf.format(preDateTime);\n        Date date = null;\n        try {\n            date = sdf.parse(d);\n        } catch (ParseException e) {\n            e.printStackTrace();\n        }\n        return date;\n    }\n\n    public static String getPreDateStr(int preDate,String format){\n        if (format==null||format.length()==0){\n            format = \"yyyy-MM-dd\";//定义默认格式\n        }\n        BigInteger now = BigInteger.valueOf(System.currentTimeMillis());\n        BigInteger preDateBig = BigInteger.valueOf(preDate);\n        BigInteger dateTimeMillis = BigInteger.valueOf(24*60*60*1000);\n        BigInteger gap = preDateBig.multiply(dateTimeMillis);\n        BigInteger preDateTime = now. subtract(gap);\n        SimpleDateFormat sdf = new SimpleDateFormat(format);\n        String d = sdf.format(preDateTime);\n        return  d;\n    }\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/utils/ExcelUtil.java",
    "content": "package light.mvc.utils;\n\nimport org.apache.poi.hssf.usermodel.HSSFWorkbook;\nimport org.apache.poi.ss.usermodel.*;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 导出Excel文档工具类\n * @author 那位先生\n * @date 2014-8-6\n * */\npublic class ExcelUtil {\n\n    /**\n     * 创建excel文档，\n     * @param list 数据\n     * @param keys list中map的key数组集合\n     * @param columnNames excel的列名\n     * */\n    public static Workbook createWorkBook(List<Map<String, Object>> list, String []keys, String columnNames[]) {\n        // 创建excel工作簿\n        Workbook wb = new HSSFWorkbook();\n        // 创建第一个sheet（页），并命名\n        Sheet sheet = wb.createSheet(list.get(0).get(\"sheetName\").toString());\n        // 手动设置列宽。第一个参数表示要为第几列设；，第二个参数表示列的宽度，n为列高的像素数。\n        for(int i=0;i<keys.length;i++){\n            sheet.setColumnWidth((short) i, (short) (35.7 * 150));\n        }\n\n        // 创建第一行\n        Row row = sheet.createRow((short) 0);\n\n        // 创建两种单元格格式\n        CellStyle cs = wb.createCellStyle();\n        CellStyle cs2 = wb.createCellStyle();\n\n        // 创建两种字体\n        Font f = wb.createFont();\n        Font f2 = wb.createFont();\n\n        // 创建第一种字体样式（用于列名）\n        f.setFontHeightInPoints((short) 10);\n        f.setColor(IndexedColors.BLACK.getIndex());\n        f.setBoldweight(Font.BOLDWEIGHT_BOLD);\n\n        // 创建第二种字体样式（用于值）\n        f2.setFontHeightInPoints((short) 10);\n        f2.setColor(IndexedColors.BLACK.getIndex());\n\n//        Font f3=wb.createFont();\n//        f3.setFontHeightInPoints((short) 10);\n//        f3.setColor(IndexedColors.RED.getIndex());\n\n        // 设置第一种单元格的样式（用于列名）\n        cs.setFont(f);\n        cs.setBorderLeft(CellStyle.BORDER_THIN);\n        cs.setBorderRight(CellStyle.BORDER_THIN);\n        cs.setBorderTop(CellStyle.BORDER_THIN);\n        cs.setBorderBottom(CellStyle.BORDER_THIN);\n        cs.setAlignment(CellStyle.ALIGN_CENTER);\n\n        // 设置第二种单元格的样式（用于值）\n        cs2.setFont(f2);\n        cs2.setBorderLeft(CellStyle.BORDER_THIN);\n        cs2.setBorderRight(CellStyle.BORDER_THIN);\n        cs2.setBorderTop(CellStyle.BORDER_THIN);\n        cs2.setBorderBottom(CellStyle.BORDER_THIN);\n        cs2.setAlignment(CellStyle.ALIGN_CENTER);\n        //设置列名\n        for(int i=0;i<columnNames.length;i++){\n            Cell cell = row.createCell(i);\n            cell.setCellValue(columnNames[i]);\n            cell.setCellStyle(cs);\n        }\n        //设置每行每列的值\n        for (short i = 1; i < list.size(); i++) {\n            // Row 行,Cell 方格 , Row 和 Cell 都是从0开始计数的\n            // 创建一行，在页sheet上\n            Row row1 = sheet.createRow((short) i);\n            // 在row行上创建一个方格\n            for(short j=0;j<keys.length;j++){\n                Cell cell = row1.createCell(j);\n                cell.setCellValue(list.get(i).get(keys[j]) == null?\" \": list.get(i).get(keys[j]).toString());\n                cell.setCellStyle(cs2);\n            }\n        }\n        return wb;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/FastJsonHttpMessageConverter.java",
    "content": "package light.mvc.utils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.converter.AbstractHttpMessageConverter;\nimport org.springframework.http.converter.HttpMessageNotReadableException;\nimport org.springframework.http.converter.HttpMessageNotWritableException;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.nio.charset.Charset;\n\npublic class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object> {\n\n\tpublic final static Charset UTF8 = Charset.forName(\"UTF-8\");\n\n\tprivate Charset charset = UTF8;\n\n\tprivate SerializerFeature[] serializerFeature;\n\n\t@Override\n\tprotected boolean supports(Class<?> clazz) {\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Object readInternal(Class<? extends Object> clazz, HttpInputMessage inputMessage) throws IOException,\n            HttpMessageNotReadableException {\n\n\t\tByteArrayOutputStream baos = new ByteArrayOutputStream();\n\n\t\tInputStream in = inputMessage.getBody();\n\n\t\tbyte[] buf = new byte[1024];\n\t\tfor (;;) {\n\t\t\tint len = in.read(buf);\n\t\t\tif (len == -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (len > 0) {\n\t\t\t\tbaos.write(buf, 0, len);\n\t\t\t}\n\t\t}\n\n\t\tbyte[] bytes = baos.toByteArray();\n\t\tif (charset == UTF8) {\n\t\t\treturn JSON.parseObject(bytes, clazz);\n\t\t} else {\n\t\t\treturn JSON.parseObject(bytes, 0, bytes.length, charset.newDecoder(), clazz);\n\t\t}\n\t}\n\n\t@Override\n\tprotected void writeInternal(Object obj, HttpOutputMessage outputMessage) throws IOException,\n            HttpMessageNotWritableException {\n\n\t\tOutputStream out = outputMessage.getBody();\n\t\tbyte[] bytes;\n\n\t\tif (charset == UTF8) {\n\t\t\tif (serializerFeature != null) {\n\t\t\t\tbytes = JSON.toJSONBytes(obj, serializerFeature);\n\t\t\t} else {\n\t\t\t\tbytes = JSON.toJSONBytes(obj, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);\n\t\t\t}\n\t\t} else {\n\t\t\tString text;\n\t\t\tif (serializerFeature != null) {\n\t\t\t\ttext = JSON.toJSONString(obj, serializerFeature);\n\t\t\t} else {\n\t\t\t\ttext = JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);\n\t\t\t}\n\t\t\tbytes = text.getBytes(charset);\n\t\t}\n\n\t\tout.write(bytes);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/MD5Util.java",
    "content": "package light.mvc.utils;\n\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\n\npublic class MD5Util {\n\n\tpublic static void main(String[] args) {\n\t\tString s = \"admin\";\n\t\tSystem.out.println(md5(s));\n\t}\n\n\t/**\n\t * md5加密\n\t * \n\t * @param str\n\t * @return\n\t */\n\tpublic static String md5(String str) {\n\t\ttry {\n\t\t\tMessageDigest md = MessageDigest.getInstance(\"MD5\");\n\t\t\tmd.update(str.getBytes());\n\t\t\tbyte[] byteDigest = md.digest();\n\t\t\tint i;\n\t\t\tStringBuffer buf = new StringBuffer(\"\");\n\t\t\tfor (byte element : byteDigest) {\n\t\t\t\ti = element;\n\t\t\t\tif (i < 0) {\n\t\t\t\t\ti += 256;\n\t\t\t\t}\n\t\t\t\tif (i < 16) {\n\t\t\t\t\tbuf.append(\"0\");\n\t\t\t\t}\n\t\t\t\tbuf.append(Integer.toHexString(i));\n\t\t\t}\n\t\t\t// 32位加密\n\t\t\treturn buf.toString();\n\t\t\t// 16位的加密\n\t\t\t// return buf.toString().substring(8, 24);\n\t\t} catch (NoSuchAlgorithmException e) {\n\t\t\te.printStackTrace();\n\t\t\treturn null;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/MyImageUtil.java",
    "content": "package light.mvc.utils;\n\nimport com.sun.image.codec.jpeg.ImageFormatException;\nimport com.sun.image.codec.jpeg.JPEGCodec;\nimport com.sun.image.codec.jpeg.JPEGEncodeParam;\nimport com.sun.image.codec.jpeg.JPEGImageEncoder;\n\nimport java.awt.*;\nimport java.awt.image.BufferedImage;\nimport java.io.*;\n\n/**\n * * @author WQ\n * \n * @date 2011-01-14\n * @versions 1.0 图片压缩工具类 提供的方法中可以设定生成的 缩略图片的大小尺寸、压缩尺寸的比例、图片的质量等\n */\npublic class MyImageUtil {\n\n\t/**\n\t * * 图片文件读取\n\t * \n\t * @param srcImgPath\n\t * @return\n\t */\n\tprivate static BufferedImage InputImage(String srcImgPath) {\n\n\t\tBufferedImage srcImage = null;\n\t\ttry {\n\t\t\t// 构造BufferedImage对象\n\t\t\tFile file = new File(srcImgPath);\n\t\t\tFileInputStream in = new FileInputStream(file);\n\t\t\tbyte[] b = new byte[5];\n\t\t\tin.read(b);\n\t\t\tsrcImage = javax.imageio.ImageIO.read(file);\n\t\t\tin.close();//记得要关闭流\n\t\t} catch (IOException e) {\n\t\t\tSystem.out.println(\"读取图片文件出错！\" + e.getMessage());\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn srcImage;\n\t}\n\n\t/**\n\t * * 将图片按照指定的图片尺寸、源图片质量压缩(默认质量为1)\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param new_w\n\t *            :压缩后的图片宽\n\t * @param new_h\n\t *            :压缩后的图片高\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tint new_w, int new_h) {\n\t\tTosmallerpic(srcImgPath, outImgPath, new_w, new_h, 1F);\n\t}\n\n\t/**\n\t * 将图片按照指定的尺寸比例、源图片质量压缩(默认质量为1)\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param ratio\n\t *            :压缩后的图片尺寸比例\n\t * @param per\n\t *            :百分比\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tfloat ratio) {\n\t\tTosmallerpic(srcImgPath, outImgPath, ratio, 1F);\n\t}\n\n\t/**\n\t * 将图片按照指定长或者宽的最大值来压缩图片(默认质量为1)\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param maxLength\n\t *            :长或者宽的最大值\n\t * @param per\n\t *            :图片质量\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tint maxLength) {\n\t\tTosmallerpic(srcImgPath, outImgPath, maxLength, 1F);\n\t}\n\n\t/**\n\t * * 将图片按照指定的图片尺寸、图片质量压缩\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param new_w\n\t *            :压缩后的图片宽\n\t * @param new_h\n\t *            :压缩后的图片高\n\t * @param per\n\t *            :百分比\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tint new_w, int new_h, float per) {\n\t\t// 得到图片\n\t\tBufferedImage src = InputImage(srcImgPath);\n\t\tint old_w = src.getWidth();\n\t\t// 得到源图宽\n\t\tint old_h = src.getHeight();\n\t\t// 得到源图长\n\t\t// 根据原图的大小生成空白画布\n\t\tBufferedImage tempImg = new BufferedImage(old_w, old_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\t// 在新的画布上生成原图的缩略图\n\t\tGraphics2D g = tempImg.createGraphics();\n\t\tg.setColor(Color.white);\n\t\tg.fillRect(0, 0, old_w, old_h);\n\t\tg.drawImage(src, 0, 0, old_w, old_h, Color.white, null);\n\t\tg.dispose();\n\t\tBufferedImage newImg = new BufferedImage(new_w, new_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\tnewImg.getGraphics().drawImage(\n\t\t\t\ttempImg.getScaledInstance(new_w, new_h, Image.SCALE_SMOOTH), 0,\n\t\t\t\t0, null);\n\t\t// 调用方法输出图片文件\n\t\tOutImage(outImgPath, newImg, per);\n\t}\n\n\t/**\n\t * * 将图片按照指定的尺寸比例、图片质量压缩\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param ratio\n\t *            :压缩后的图片尺寸比例\n\t * @param per\n\t *            :百分比\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tfloat ratio, float per) {\n\t\t// 得到图片\n\t\tBufferedImage src = InputImage(srcImgPath);\n\t\tint old_w = src.getWidth();\n\t\t// 得到源图宽\n\t\tint old_h = src.getHeight();\n\t\t// 得到源图长\n\t\tint new_w = 0;\n\t\t// 新图的宽\n\t\tint new_h = 0;\n\t\t// 新图的长\n\t\tBufferedImage tempImg = new BufferedImage(old_w, old_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\tGraphics2D g = tempImg.createGraphics();\n\t\tg.setColor(Color.white);\n\t\t// 从原图上取颜色绘制新图g.fillRect(0, 0, old_w, old_h);\n\t\tg.drawImage(src, 0, 0, old_w, old_h, Color.white, null);\n\t\tg.dispose();\n\t\t// 根据图片尺寸压缩比得到新图的尺寸new_w = (int) Math.round(old_w * ratio);\n\t\tnew_h = (int) Math.round(old_h * ratio);\n\t\tBufferedImage newImg = new BufferedImage(new_w, new_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\tnewImg.getGraphics().drawImage(\n\t\t\t\ttempImg.getScaledInstance(new_w, new_h, Image.SCALE_SMOOTH), 0,\n\t\t\t\t0, null);\n\t\t// 调用方法输出图片文件\n\t\tOutImage(outImgPath, newImg, per);\n\t}\n\n\t/**\n\t * * 指定长或者宽的最大值来压缩图片\n\t * \n\t * @param srcImgPath\n\t *            :源图片路径\n\t * @param outImgPath\n\t *            :输出的压缩图片的路径\n\t * @param maxLength\n\t *            :长或者宽的最大值\n\t * @param per\n\t *            :图片质量\n\t */\n\tpublic static void Tosmallerpic(String srcImgPath, String outImgPath,\n\t\t\tint maxLength, float per) {\n\t\t// 得到图片\n\t\tBufferedImage src = InputImage(srcImgPath);\n\t\tint old_w = src.getWidth();\n\t\t// 得到源图宽\n\t\tint old_h = src.getHeight();\n\t\t// 得到源图长\n\t\tint new_w = 0;\n\t\t// 新图的宽\n\t\tint new_h = 0;\n\t\t// 新图的长\n\t\tBufferedImage tempImg = new BufferedImage(old_w, old_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\tGraphics2D g = tempImg.createGraphics();\n\t\tg.setColor(Color.white);\n\t\t// 从原图上取颜色绘制新图\n\t\tg.fillRect(0, 0, old_w, old_h);\n\t\tg.drawImage(src, 0, 0, old_w, old_h, Color.white, null);\n\t\tg.dispose();\n\t\t// 根据图片尺寸压缩比得到新图的尺寸\n\t\tif (old_w > old_h) {\n\t\t\t// 图片要缩放的比例\n\t\t\tnew_w = maxLength;\n\t\t\tnew_h = (int) Math.round(old_h * ((float) maxLength / old_w));\n\t\t} else {\n\t\t\tnew_w = (int) Math.round(old_w * ((float) maxLength / old_h));\n\t\t\tnew_h = maxLength;\n\t\t}\n\t\tBufferedImage newImg = new BufferedImage(new_w, new_h,\n\t\t\t\tBufferedImage.TYPE_INT_RGB);\n\t\tnewImg.getGraphics().drawImage(\n\t\t\t\ttempImg.getScaledInstance(new_w, new_h, Image.SCALE_SMOOTH), 0,\n\t\t\t\t0, null);\n\t\t// 调用方法输出图片文件\n\t\tOutImage(outImgPath, newImg, per);\n\t}\n\n\t/**\n\t * * 将图片文件输出到指定的路径，并可设定压缩质量\n\t * \n\t * @param outImgPath\n\t * @param newImg\n\t * @param per\n\t */\n\tprivate static void OutImage(String outImgPath, BufferedImage newImg,\n\t\t\tfloat per) {\n\t\t// 判断输出的文件夹路径是否存在，不存在则创建\n\t\tFile file = new File(outImgPath);\n\t\tif (!file.getParentFile().exists()) {\n\t\t\tfile.getParentFile().mkdirs();\n\t\t}// 输出到文件流\n\t\ttry {\n\t\t\tFileOutputStream newimage = new FileOutputStream(outImgPath);\n\t\t\tJPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);\n\t\t\tJPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(newImg);\n\t\t\t// 压缩质量\n\t\t\tjep.setQuality(per, true);\n\t\t\tencoder.encode(newImg, jep);\n\t\t\tnewimage.close();\n\t\t} catch (FileNotFoundException e) {\n\t\t\t// TODO Auto-generated catch blocke.printStackTrace();\n\t\t} catch (ImageFormatException e) {\n\t\t\t// TODO Auto-generated catch blocke.printStackTrace();\n\t\t} catch (IOException e) {\n\t\t\t// TODO Auto-generated catch blocke.printStackTrace();\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "src/main/java/light/mvc/utils/PropertiesLoader.java",
    "content": "package light.mvc.utils;\n\nimport org.apache.commons.io.IOUtils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.core.io.DefaultResourceLoader;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.ResourceLoader;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.NoSuchElementException;\nimport java.util.Properties;\n\n/**\n * Properties文件载入工具类. 可载入多个properties文件, 相同的属性在最后载入的文件中的值将会覆盖之前的值，但以System的Property优先.\n * \n * @author 鸵鸟\n */\npublic class PropertiesLoader {\n\n\tprivate static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);\n\n\tprivate static ResourceLoader resourceLoader = new DefaultResourceLoader();\n\n\tprivate final Properties properties;\n\n\tpublic PropertiesLoader(String... resourcesPaths) {\n\t\tproperties = loadProperties(resourcesPaths);\n\t}\n\n\tpublic Properties getProperties() {\n\t\treturn properties;\n\t}\n\n\t/**\n\t * 取出Property。\n\t */\n\tprivate String getValue(String key) {\n\t\tString systemProperty = System.getProperty(key);\n\t\tif (systemProperty != null) {\n\t\t\treturn systemProperty;\n\t\t}\n\t\treturn properties.getProperty(key);\n\t}\n\n\t/**\n\t * 取出String类型的Property,如果都為Null则抛出异常.\n\t */\n\tpublic String getProperty(String key) {\n\t\tString value = getValue(key);\n\t\tif (value == null) {\n\t\t\tthrow new NoSuchElementException();\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * 取出String类型的Property.如果都為Null則返回Default值.\n\t */\n\tpublic String getProperty(String key, String defaultValue) {\n\t\tString value = getValue(key);\n\t\treturn value != null ? value : defaultValue;\n\t}\n\n\t/**\n\t * 取出Integer类型的Property.如果都為Null或内容错误则抛出异常.\n\t */\n\tpublic Integer getInteger(String key) {\n\t\tString value = getValue(key);\n\t\tif (value == null) {\n\t\t\tthrow new NoSuchElementException();\n\t\t}\n\t\treturn Integer.valueOf(value);\n\t}\n\n\t/**\n\t * 取出Integer类型的Property.如果都為Null則返回Default值，如果内容错误则抛出异常\n\t */\n\tpublic Integer getInteger(String key, Integer defaultValue) {\n\t\tString value = getValue(key);\n\t\treturn value != null ? Integer.valueOf(value) : defaultValue;\n\t}\n\n\t/**\n\t * 取出Double类型的Property.如果都為Null或内容错误则抛出异常.\n\t */\n\tpublic Double getDouble(String key) {\n\t\tString value = getValue(key);\n\t\tif (value == null) {\n\t\t\tthrow new NoSuchElementException();\n\t\t}\n\t\treturn Double.valueOf(value);\n\t}\n\n\t/**\n\t * 取出Double类型的Property.如果都為Null則返回Default值，如果内容错误则抛出异常\n\t */\n\tpublic Double getDouble(String key, Integer defaultValue) {\n\t\tString value = getValue(key);\n\t\treturn value != null ? Double.valueOf(value) : defaultValue;\n\t}\n\n\t/**\n\t * 取出Boolean类型的Property.如果都為Null抛出异常,如果内容不是true/false则返回false.\n\t */\n\tpublic Boolean getBoolean(String key) {\n\t\tString value = getValue(key);\n\t\tif (value == null) {\n\t\t\tthrow new NoSuchElementException();\n\t\t}\n\t\treturn Boolean.valueOf(value);\n\t}\n\n\t/**\n\t * 取出Boolean类型的Propert.如果都為Null則返回Default值,如果内容不为true/false则返回false.\n\t */\n\tpublic Boolean getBoolean(String key, boolean defaultValue) {\n\t\tString value = getValue(key);\n\t\treturn value != null ? Boolean.valueOf(value) : defaultValue;\n\t}\n\n\t/**\n\t * 载入多个文件, 文件路径使用Spring Resource格式.\n\t */\n\tprivate Properties loadProperties(String... resourcesPaths) {\n\t\tProperties props = new Properties();\n\n\t\tfor (String location : resourcesPaths) {\n\n\t\t\tlogger.debug(\"Loading properties file from path:{}\", location);\n\n\t\t\tInputStream is = null;\n\t\t\ttry {\n\t\t\t\tResource resource = resourceLoader.getResource(location);\n\t\t\t\tis = resource.getInputStream();\n\t\t\t\tprops.load(is);\n\t\t\t} catch (IOException ex) {\n\t\t\t\tlogger.info(\"Could not load properties from path:{}, {} \", location, ex.getMessage());\n\t\t\t} finally {\n\t\t\t\tIOUtils.closeQuietly(is);\n\t\t\t}\n\t\t}\n\t\treturn props;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/StringEscapeEditor.java",
    "content": "package light.mvc.utils;\n\nimport org.springframework.web.util.HtmlUtils;\nimport org.springframework.web.util.JavaScriptUtils;\n\nimport java.beans.PropertyEditorSupport;\n\npublic class StringEscapeEditor extends PropertyEditorSupport {\n\n\tprivate boolean escapeHTML;// 编码HTML\n\tprivate boolean escapeJavaScript;// 编码javascript\n\n\tpublic StringEscapeEditor() {\n\t\tsuper();\n\t}\n\n\tpublic StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {\n\t\tsuper();\n\t\tthis.escapeHTML = escapeHTML;\n\t\tthis.escapeJavaScript = escapeJavaScript;\n\t}\n\n\t@Override\n\tpublic String getAsText() {\n\t\tObject value = getValue();\n\t\treturn value != null ? value.toString() : \"\";\n\t}\n\n\t@Override\n\tpublic void setAsText(String text) throws IllegalArgumentException {\n\t\tif (text == null) {\n\t\t\tsetValue(null);\n\t\t} else {\n\t\t\tString value = text;\n\t\t\tif (escapeHTML) {\n\t\t\t\tvalue = HtmlUtils.htmlEscape(value);\n\t\t\t}\n\t\t\tif (escapeJavaScript) {\n\t\t\t\tvalue = JavaScriptUtils.javaScriptEscape(value);\n\t\t\t}\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/StringUnEscapeEditor.java",
    "content": "package light.mvc.utils;\n\nimport org.springframework.web.util.HtmlUtils;\nimport org.springframework.web.util.JavaScriptUtils;\n\nimport java.beans.PropertyEditorSupport;\n\npublic class StringUnEscapeEditor extends PropertyEditorSupport {\n\n\tprivate boolean escapeHTML;// 编码HTML\n\tprivate boolean escapeJavaScript;// 编码javascript\n\n\tpublic StringUnEscapeEditor() {\n\t\tsuper();\n\t}\n\n\tpublic StringUnEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {\n\t\tsuper();\n\t\tthis.escapeHTML = escapeHTML;\n\t\tthis.escapeJavaScript = escapeJavaScript;\n\t}\n\n\t@Override\n\tpublic String getAsText() {\n\t\tObject value = getValue();\n\t\treturn value != null ? value.toString() : \"\";\n\t}\n\n\t@Override\n\tpublic void setAsText(String text) throws IllegalArgumentException {\n\t\tif (text == null) {\n\t\t\tsetValue(null);\n\t\t} else {\n\t\t\tString value = text;\n\t\t\tif (escapeHTML) {\n\t\t\t\tvalue = HtmlUtils.htmlUnescape(value);\n\t\t\t}\n\t\t\tif (escapeJavaScript) {\n\t\t\t\tvalue = JavaScriptUtils.javaScriptEscape(value);\n\t\t\t}\n\t\t\tsetValue(value);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/StringUtil.java",
    "content": "package light.mvc.utils;\n\npublic class StringUtil {\n\n\t/**\n\t * 格式化字符串\n\t * \n\t * 例：formateString(\"xxx{0}bbb\",1) = xxx1bbb\n\t * \n\t * @param str\n\t * @param params\n\t * @return\n\t */\n\tpublic static String formateString(String str, String... params) {\n\t\tfor (int i = 0; i < params.length; i++) {\n\t\t\tstr = str.replace(\"{\" + i + \"}\", params[i] == null ? \"\" : params[i]);\n\t\t}\n\t\treturn str;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/light/mvc/utils/coder.java",
    "content": "package light.mvc.utils;\n\npublic class coder {\n\tpublic static String getCoder(String pre, long count)\n\t{\n\t\tString code=pre;\n\t\tString tmp=\"\";\n\t\tif(count<10)\n\t\t{\n\t\t\ttmp=\"000\"+count;\n\t\t}\n\t\tif(count>9&&count<100)\n\t\t{\n\t\t\ttmp=\"00\"+count;\n\t\t}\n\t\tif(count>99&&count<1000)\n\t\t{\n\t\t\ttmp=\"0\"+count;\n\t\t}\n\t\tcode=pre+tmp;\n\t\treturn code;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/resources/config.properties",
    "content": "#hibernate.dialect=sy.util.Oracle10gDialect\n#driverClassName=oracle.jdbc.driver.OracleDriver\n#validationQuery=SELECT 1 FROM DUAL\n#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl\n#jdbc_username=bjlyjoa\n#jdbc_password=bjlyjoa\nhibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect\ndriverClassName=com.mysql.jdbc.Driver\nvalidationQuery=SELECT 1\njdbc_url=jdbc\\:mysql\\://localhost\\:3306/wsn640?useUnicode\\=true&characterEncoding\\=UTF-8&zeroDateTimeBehavior\\=convertToNull\njdbc_username=root\njdbc_password=13713393809\n#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect\n#driverClassName=net.sourceforge.jtds.jdbc.Driver\n#validationQuery=SELECT 1\n#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/qx\n#jdbc_username=sa\n#jdbc_password=123456\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.use_sql_comments=false\n\n\n\nmongo.hostport=127.0.0.1:27017\nmongo.connectionsPerHost=8\nmongo.threadsAllowedToBlockForConnectionMultiplier=4\n\nmongo.connectTimeout=1000\n\nmongo.maxWaitTime=1500\n\nmongo.socketTimeout=1500"
  },
  {
    "path": "src/main/resources/log4j.properties",
    "content": "log4j.rootLogger=WARN, stdout,DEBUG\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n"
  },
  {
    "path": "src/main/resources/logback.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->\n    <property name=\"LOG_HOME\" value=\"d:/log\"/>\n    <!-- 控制台输出 -->\n    <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <!-- 日志输出编码 -->\n        <Encoding>UTF-8</Encoding>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n    </appender>\n    <!-- 按照每天生成日志文件 -->\n    <appender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <Encoding>UTF-8</Encoding>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!--日志文件输出的文件名-->\n            <FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>\n            <MaxHistory>30</MaxHistory>\n        </rollingPolicy>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n        <!--日志文件最大的大小-->\n        <triggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\">\n            <MaxFileSize>10MB</MaxFileSize>\n        </triggeringPolicy>\n    </appender>\n    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicBinder\" level=\"TRACE\"/>\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicExtractor\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.SQL\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.QueryParameters\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.query.HQLQueryPlan\" level=\"DEBUG\"/>\n\n\n\n   <!-- <root level=\"INFO\">\n        <appender-ref ref=\"MONGO\" />\n    </root>-->\n    <!--日志异步到数据库 -->\n    <!-- <appender name=\"DB\" class=\"ch.qos.logback.classic.db.DBAppender\">\n         &lt;!&ndash;日志异步到数据库 &ndash;&gt;\n         <connectionSource class=\"ch.qos.logback.core.db.DriverManagerConnectionSource\">\n             &lt;!&ndash;连接池 &ndash;&gt;\n             <dataSource class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n                 <driverClass>com.mysql.jdbc.Driver</driverClass>\n                 <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>\n                 <user>root</user>\n                 <password>root</password>\n             </dataSource>\n         </connectionSource>\n     </appender> -->\n\n    <!-- mongo 日志 -->\n    <appender name=\"MONGO\" class=\"com.lida.mongo.log.Impl.MongoDBAppender\">\n        <host>172.16.31.206</host>\n        <port>27017</port>\n        <dbName>mongoLida</dbName>\n        <username></username>\n        <password></password>\n        <collectionName>logdb</collectionName>\n        <source>XXX</source>\n    </appender>\n\n    <!-- 日志输出级别 -->\n    <root level=\"DEBUG\">\n         <appender-ref ref=\"STDOUT\"/>\n<!--                <appender-ref ref=\"FILE\"/>-->\n        <appender-ref ref=\"MONGO\" />\n    </root>\n</configuration>"
  },
  {
    "path": "src/main/resources/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context.xsd\n       http://www.springframework.org/schema/task\n       http://www.springframework.org/schema/task/spring-task.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <bean class=\"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer\">\n        <property name=\"locations\">\n            <list>\n                <value>classpath:config.properties</value>\n            </list>\n        </property>\n    </bean>\n\n\n    <!--扫描service包嗲所有使用注解的类型-->\n    <context:component-scan base-package=\"com.lida.mongo,light.mvc\"/>\n\n\n\n    <!-- 多部分文件上传 -->\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\">\n        <property name=\"maxUploadSize\" value=\"104857600\" />\n        <property name=\"maxInMemorySize\" value=\"4096\" />\n        <property name=\"defaultEncoding\" value=\"UTF-8\"></property>\n    </bean>\n\n    <!-- Spring MVC JSON配置 -->\n    <bean class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\">\n        <property name=\"messageConverters\">\n            <list>\n                <bean id=\"fastJsonHttpMessageConverter\" class=\"light.mvc.utils.FastJsonHttpMessageConverter\">\n                    <property name=\"supportedMediaTypes\">\n                        <list>\n                            <value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->\n                        </list>\n                    </property>\n                </bean>\n            </list>\n        </property>\n    </bean>\n\n    <!-- 对模型视图名称的解析，即在模型视图名称添加前后缀 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\" p:prefix=\"/WEB-INF/views/\" p:suffix=\".jsp\" />\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/front/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptorFront\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptor\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n                        <value>/resource/tree</value><!-- 首页左侧功能菜单 -->\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n    </mvc:interceptors>\n\n\n    <!-- 导入mongodb的配置文件 -->\n    <import resource=\"spring-mongo.xml\"/>\n    <!-- 开启注解 -->\n    <context:annotation-config/>\n    <!-- 注解方式 -->\n    <context:component-scan base-package=\"com.lida.mongo.task\"/>\n    <task:annotation-driven scheduler=\"qbScheduler\" mode=\"proxy\"/>\n    <task:scheduler id=\"qbScheduler\" pool-size=\"10\"/>\n\n\n</beans>\n\n"
  },
  {
    "path": "src/main/resources/spring/spring-hibernate.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:c=\"http://www.springframework.org/schema/c\"\n       xmlns:cache=\"http://www.springframework.org/schema/cache\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:jdbc=\"http://www.springframework.org/schema/jdbc\" xmlns:jee=\"http://www.springframework.org/schema/jee\"\n       xmlns:lang=\"http://www.springframework.org/schema/lang\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:p=\"http://www.springframework.org/schema/p\" xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\" xmlns:util=\"http://www.springframework.org/schema/util\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n\t\thttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd\n\t\thttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd\n\t\thttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\n\t\thttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd\n\t\thttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd\n\t\thttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd\n\t\thttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\n\t\thttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd\n\t\thttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd\n\t\thttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean name=\"dataSource\" class=\"com.alibaba.druid.pool.DruidDataSource\" init-method=\"init\" destroy-method=\"close\">\n        <property name=\"url\" value=\"${jdbc_url}\"/>\n        <property name=\"username\" value=\"${jdbc_username}\"/>\n        <property name=\"password\" value=\"${jdbc_password}\"/>\n\n        <!-- 初始化连接大小 -->\n        <property name=\"initialSize\" value=\"0\"/>\n        <!-- 连接池最大使用连接数量 -->\n        <property name=\"maxActive\" value=\"20\"/>\n        <!-- 连接池最小空闲 -->\n        <property name=\"minIdle\" value=\"0\"/>\n        <!-- 获取连接最大等待时间 -->\n        <property name=\"maxWait\" value=\"60000\"/>\n\n        <!-- <property name=\"poolPreparedStatements\" value=\"true\" /> <property name=\"maxPoolPreparedStatementPerConnectionSize\" value=\"33\" /> -->\n\n        <property name=\"validationQuery\" value=\"${validationQuery}\"/>\n        <property name=\"testOnBorrow\" value=\"false\"/>\n        <property name=\"testOnReturn\" value=\"false\"/>\n        <property name=\"testWhileIdle\" value=\"true\"/>\n\n        <!-- 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒 -->\n        <property name=\"timeBetweenEvictionRunsMillis\" value=\"60000\"/>\n        <!-- 配置一个连接在池中最小生存的时间，单位是毫秒 -->\n        <property name=\"minEvictableIdleTimeMillis\" value=\"25200000\"/>\n\n        <!-- 打开removeAbandoned功能 -->\n        <property name=\"removeAbandoned\" value=\"true\"/>\n        <!-- 1800秒，也就是30分钟 -->\n        <property name=\"removeAbandonedTimeout\" value=\"1800\"/>\n        <!-- 关闭abanded连接时输出错误日志 -->\n        <property name=\"logAbandoned\" value=\"true\"/>\n\n        <!-- 监控数据库 -->\n        <!-- <property name=\"filters\" value=\"mergeStat\" /> -->\n        <property name=\"filters\" value=\"stat\"/>\n    </bean>\n\n    <!-- 配置hibernate session工厂 -->\n    <bean id=\"sessionFactory\" class=\"org.springframework.orm.hibernate4.LocalSessionFactoryBean\">\n        <property name=\"dataSource\" ref=\"dataSource\"/>\n        <property name=\"hibernateProperties\">\n            <props>\n                <prop key=\"hibernate.hbm2ddl.auto\">${hibernate.hbm2ddl.auto}</prop>\n                <prop key=\"hibernate.dialect\">${hibernate.dialect}</prop>\n                <prop key=\"hibernate.show_sql\">${hibernate.show_sql}</prop>\n                <prop key=\"hibernate.format_sql\">${hibernate.format_sql}</prop>\n                <prop key=\"hibernate.use_sql_comments\">${hibernate.use_sql_comments}</prop>\n            </props>\n        </property>\n\n        <!-- 自动扫描注解方式配置的hibernate类文件 -->\n        <property name=\"packagesToScan\">\n            <list>\n                <value>light.mvc.model</value>\n            </list>\n        </property>\n\n    </bean>\n\n    <!-- 配置事务管理器 -->\n    <bean name=\"transactionManager\" class=\"org.springframework.orm.hibernate4.HibernateTransactionManager\">\n        <property name=\"sessionFactory\" ref=\"sessionFactory\"></property>\n    </bean>\n\n    <!-- 注解方式配置事物 -->\n    <!-- <tx:annotation-driven transaction-manager=\"transactionManager\" /> -->\n\n    <!-- 拦截器方式配置事物 -->\n    <tx:advice id=\"transactionAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"add*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"append*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"save*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"update*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"modify*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"edit*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delete*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"remove*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"init\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delAndInit\" propagation=\"REQUIRED\"/>\n\n            <tx:method name=\"get*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"find*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"load*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"search*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"datagrid*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n\n            <tx:method name=\"*\" propagation=\"REQUIRED\"/>\n        </tx:attributes>\n    </tx:advice>\n    <aop:config>\n        <aop:pointcut id=\"transactionPointcut\" expression=\"execution(* light.mvc.service..*Impl.*(..))\"/>\n        <aop:advisor pointcut-ref=\"transactionPointcut\" advice-ref=\"transactionAdvice\"/>\n    </aop:config>\n\n</beans>\n"
  },
  {
    "path": "src/main/resources/spring/spring-mongo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mongo=\"http://www.springframework.org/schema/data/mongo\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\n               http://www.springframework.org/schema/context\n               http://www.springframework.org/schema/context/spring-context.xsd\n               http://www.springframework.org/schema/data/mongo\n            http://www.springframework.org/schema/data/mongo/spring-mongo.xsd\">\n\n    <!-- 加载mongodb的属性配置文件 -->\n    <!-- spring连接mongodb数据库的配置 -->\n    <mongo:mongo-client replica-set=\"${mongo.hostport}\" id=\"mongo\">\n        <mongo:client-options connections-per-host=\"${mongo.connectionsPerHost}\"\n                              threads-allowed-to-block-for-connection-multiplier=\"${mongo.threadsAllowedToBlockForConnectionMultiplier}\"\n                              connect-timeout=\"${mongo.connectTimeout}\"\n                              max-wait-time=\"${mongo.maxWaitTime}\"\n                              socket-timeout=\"${mongo.socketTimeout}\"/>\n    </mongo:mongo-client>\n    <!-- mongo的工厂，通过它来取得mongo实例,dbname为mongodb的数据库名，没有的话会自动创建 -->\n    <mongo:db-factory id=\"mongoDbFactory\" dbname=\"mongoLida\" mongo-ref=\"mongo\"/>\n\n    <!-- 只要使用这个调用相应的方法操作 -->\n    <bean id=\"mongoTemplate\" class=\"org.springframework.data.mongodb.core.MongoTemplate\">\n        <constructor-arg name=\"mongoDbFactory\" ref=\"mongoDbFactory\"/>\n    </bean>\n    <!-- mongodb bean的仓库目录，会自动扫描扩展了MongoRepository接口的接口进行注入 -->\n    <mongo:repositories base-package=\"com.lida.mongo\"/>\n</beans>"
  },
  {
    "path": "src/main/resources/spring/spring-web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\">\n    <!--配置springmvc-->\n    <!--1.开启springmvc注解模式-->\n    <!--简化配置：\n        (1)主动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter\n        (2)提供一系列功能：数据绑定，数字和日期的format @NumberFormt @DataTimeFormat，xml json默认的读写支持-->\n    <mvc:annotation-driven/>\n    <!--servlet-mapping-->\n    <!--2静态资源默认的servlet配置，（1）允许对静态资源的处理：js，gif    （2）允许使用“/”做整体映射-->\n    <!-- 容器默认的DefaultServletHandler处理 所有静态内容与无RequestMapping处理的URL-->\n    <mvc:default-servlet-handler/>\n    <!--3:配置jsp 显示viewResolver-->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"/>\n        <property name=\"prefix\" value=\"/WEB-INF/views/\"/>\n        <property name=\"suffix\" value=\".jsp\"/>\n    </bean>\n\n    <!-- 4自动扫描且只扫描@Controller -->\n    <context:component-scan base-package=\"com.lida.mongo,light.mvc.controller\"/>\n\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\"/>\n\n</beans>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/404.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 404错误页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"error-404\">\n    <div class=\"error-wrap error-wrap-404\">\n        <div class=\"metro big terques\">\n           <span> OOPS! </span>\n        </div>\n        <div class=\"metro green\">\n            <span> 4 </span>\n        </div>\n        <div class=\"metro yellow\">\n            <span> 0 </span>\n        </div>\n        <div class=\"metro purple\">\n            <span> 4 </span>\n        </div>\n        <div class=\"metro double red\">\n            <span class=\"page-txt\"> Page Not Found </span>\n        </div>\n        <div class=\"metro gray\">\n            <a href=\"index.html\" class=\"home\"><i class=\"icon-home\"></i> </a>\n        </div>\n\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/500.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 500页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"error-500\">\n    <div class=\"error-wrap\">\n        <h1>Ouch!</h1>\n        <h2>Looks like something went wrong</h2>\n        <div class=\"metro green\">\n           <span> 5 </span>\n        </div>\n        <div class=\"metro yellow\">\n            <span> 0 </span>\n        </div>\n        <div class=\"metro purple\">\n            <span> 0 </span>\n        </div>\n        <p>For Updates follow us on <a href=\"javascript:;\">twitter</a> , Very soon we will fix the issue. <a href=\"index.html\"> Return Home </a></p>\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/about_us.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-user\"></i> About Us</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!--BEGIN ABOUT US-->\n                                <div class=\"about-us\">\n                                    <div class=\"text-center\">\n                                        <h3>Here is an example of how you can decorate your about us page. <br> Here you will able to present your team list and their skills.</h3>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <h3>Our Philosophy</h3>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <h3>Mission &amp; Vision</h3>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                        </div>\n                                    </div>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <h3>Our Skills</h3>\n                                            <h5><strong>Web Design</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Wordpress</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Jquery</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>HTML</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>CSS</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>PHP</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Content Management</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <div class=\"space20\"></div>\n                                            <div class=\"space20\"></div>\n                                            <div class=\"space5\"></div>\n                                            <h5>Web Design <span class=\"pull-right\">35%</span></h5>\n                                            <div class=\"progress progress-striped progress-danger\">\n                                                <div style=\"width: 35%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Wordpress <span class=\"pull-right\">40%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 40%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Web Design <span class=\"pull-right\">35%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 35%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Jquery<span class=\"pull-right\">55%</span></h5>\n                                            <div class=\"progress progress-striped progress-success\">\n                                                <div style=\"width: 55%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>HTML<span class=\"pull-right\">85%</span></h5>\n                                            <div class=\"progress progress-striped progress-warning\">\n                                                <div style=\"width: 85%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>CSS<span class=\"pull-right\">67%</span></h5>\n                                            <div class=\"progress progress-striped progress-danger\">\n                                                <div style=\"width: 67%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>PHP <span class=\"pull-right\">45%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 45%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Content Management<span class=\"pull-right\">50%</span></h5>\n                                            <div class=\"progress progress-striped progress-success\">\n                                                <div style=\"width: 50%;\" class=\"bar\"></div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END ABOUT US-->\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-group\"></i> Our Team </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"text-center\">\n                                    <h3>Here is an example of how you can decorate your about us page. <br /> You will able to present your team details as well.</h3>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-1.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info terques\">\n                                                    <h1>Jonathan Smith</h1>\n                                                    <p>Chief Executive Officer</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-2.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info red\">\n                                                    <h1>Anjelina Joe</h1>\n                                                    <p>Managing Director</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"space15\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-3.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info green\">\n                                                    <h1>Franklin Mosa</h1>\n                                                    <p>system enginner</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-4.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info orange\">\n                                                    <h1>Ahmed Yousuf</h1>\n                                                    <p>Creative Designer</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/basic_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Basic Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Larry</td>\n                                                <td>the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Striped Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-striped\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Larry</td>\n                                                <td>the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Border Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-bordered\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td rowspan=\"2\">1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@TwBootstrap</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td colspan=\"2\">Larry the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Hover Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jhone</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>4</td>\n                                                <td colspan=\"2\">Larry the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Advanced Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-striped table-bordered table-advance table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th><i class=\"icon-bullhorn\"></i> Company</th>\n                                                <th class=\"hidden-phone\"><i class=\"icon-question-sign\"></i> Descrition</th>\n                                                <th><i class=\"icon-bookmark\"></i> Profit</th>\n                                                <th><i class=\" icon-edit\"></i> Status</th>\n                                                <th></th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        boka soka\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>14400.00$ </td>\n                                                <td><span class=\"label label-success label-mini\">Paid</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        salbal llb\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>2323.50$ </td>\n                                                <td><span class=\"label label-danger label-mini\">Paid</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/blank.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Blank Page </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                Blank page sample\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/blog.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLOG PORTLET-->\n                        <div class=\"row-fluid\">\n                            <div class=\"span8 \">\n                                <div class=\"row-fluid\">\n                                    <div class=\"blog\">\n                                        <div class=\"span2 orange\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">02</p>\n                                                <p class=\"month\">Jul</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog1-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 green\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">03</p>\n                                                <p class=\"month\">Aug</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog2-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 red\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">05</p>\n                                                <p class=\"month\">Sep</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog3-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 yellow\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">02</p>\n                                                <p class=\"month\">Jul</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog1-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"custom-pagination pagination-centered\">\n                                        <ul>\n                                            <li><a href=\"javascript:;\">«</a></li>\n                                            <li><a href=\"javascript:;\">1</a></li>\n                                            <li><a href=\"javascript:;\">2</a></li>\n                                            <li><a href=\"javascript:;\">3</a></li>\n                                            <li><a href=\"javascript:;\">4</a></li>\n                                            <li><a href=\"javascript:;\">»</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span4\">\n                                <div class=\"blog-side-bar blue-box\">\n                                    <h2> <i class=\" icon-tasks\"></i> category</h2>\n                                    <ul>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-umbrella\"></i>\n                                                <span>Animal</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-trophy\"></i>\n                                                <span>Landscape</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-plane\"></i>\n                                                <span>Potrait</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-pushpin\"></i>\n                                                <span>Wild Life</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-beaker\"></i>\n                                                <span>Video</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-bullhorn\"></i>\n                                                <span>Nature</span>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n                                <div class=\"blog-side-bar green-box\">\n                                    <h2> <i class=\"  icon-comments-alt\"></i> Latest blog</h2>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-3.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-2.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-3.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                </div>\n                                <div class=\"blog-side-bar red-box\">\n                                    <h2> <i class=\" icon-tags\"></i> popular tags</h2>\n                                    <ul class=\"unstyled tag\">\n                                        <li><a href=\"#\">Metrolab Admin</a></li>\n                                        <li><a href=\"#\"> Dashboard Theme</a></li>\n                                        <li><a href=\"#\"> Metro</a></li>\n                                        <li><a href=\"#\"> Control Panel</a></li>\n                                        <li><a href=\"#\"> UI</a></li>\n                                        <li><a href=\"#\"> Web Design</a></li>\n                                        <li><a href=\"#\"> UIX</a></li>\n                                        <li><a href=\"#\"> Blog</a></li>\n                                        <li><a href=\"#\">Metrolab Admin</a></li>\n                                        <li><a href=\"#\"> Dashboard Theme</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"blog-side-bar orange-box\">\n                                    <h2> <i class=\" icon-tasks\"></i> Archive</h2>\n                                    <ul>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">OCT</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">Nov</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">dec</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">jan</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">feb</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">mar</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLOG PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/button.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    <button class=\"btn btn-mini\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-mini btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-mini btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-mini btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-mini btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-mini btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-mini btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-mini disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-small\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-small btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-small btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-small btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-small btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-small btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-small btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-small disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn \" type=\"button\">Default</button>\n                                    <button class=\"btn  btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn  btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn  btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn  btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn  btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn  btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn  disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-large\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-large btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-large btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-large btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-large btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-large btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-large btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-large disabled\" type=\"button\">Disabled</button>\n                                </p>\n                            </div>\n                        </div>\n                        <!-- END BUTTON PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON DROPDOWN PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dropdown Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BUTTON DROPDOWN PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON DROPDOWN PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dropdown Split Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <h4>Drop-up menu</h4>\n                                    <p>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn\"><i class=\"icon-user\"></i> Dropup</button>\n                                            <button class=\"btn dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-warning\"><i class=\"icon-cog\"></i> Dropup</button>\n                                            <button class=\"btn btn-warning dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-success\"><i class=\"icon-tasks\"></i> Dropup</button>\n                                            <button class=\"btn btn-success dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-danger\"><i class=\"icon-star\"></i> Dropup</button>\n                                            <button class=\"btn btn-danger dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-inverse\"><i class=\"icon-user\"></i> Dropup</button>\n                                            <button class=\"btn btn-inverse dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END BUTTON DROPDOWN PORTLET-->\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN ICON BUTTON PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Buttons with Icons</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    <button class=\"btn btn-mini\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-mini btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-mini btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-mini btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-mini btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-mini btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-mini btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-small\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-small btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-small btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-small btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-small btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-small btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-small btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-large\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-large btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-large btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-large btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-large btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-large btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-large btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn\"><i class=\"icon-chevron-left\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-up\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-right\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-down\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-plus\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-minus\"></i></button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-left\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-up\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-right\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-down\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-plus\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-minus\"></i></button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-ok\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-remove\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-cloud\"></i></button>\n                                    <button class=\"btn btn-warning\"><i class=\"icon-home\"></i></button>\n                                    <button class=\"btn btn-info\"><i class=\"icon-search\"></i></button>\n                                    <button class=\"btn btn-danger\"><i class=\"icon-download\"></i></button>\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END ICON BUTTON PORTLET-->\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN GROUP BUTTON PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Group Buttons</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>Horizontal Group Button</p>\n                                <p>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn\">Left</button>\n                                        <button class=\"btn\">Middle</button>\n                                        <button class=\"btn\">Right</button>\n                                    </div>\n\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-inverse\">Left</button>\n                                        <button class=\"btn btn-inverse\">Middle</button>\n                                        <button class=\"btn btn-inverse\">Right</button>\n                                    </div>\n\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-info\">Left</button>\n                                        <button class=\"btn btn-info\">Middle</button>\n                                        <button class=\"btn btn-info\">Right</button>\n                                    </div>\n                                </p>\n                                <p>Vertical Group Button</p>\n                                <p>\n                                    <div class=\"btn-group-vertical\" style=\"margin-right: 20px\">\n                                        <button class=\"btn\">1</button>\n                                        <button class=\"btn\">2</button>\n                                        <button class=\"btn\">3</button>\n                                    </div>\n\n                                    <div class=\"btn-group-vertical\">\n                                        <button class=\"btn btn-inverse\">1</button>\n                                        <button class=\"btn btn-inverse\">2</button>\n                                        <button class=\"btn btn-inverse\">3</button>\n                                    </div>\n                                </p>\n                                <p>Toolbar icon example</p>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn btn-primary\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone btn-primary\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone btn-primary\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn btn-success\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone btn-success\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone btn-success\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                </div>\n                                <p>Star Rating Example</p>\n                                <span class=\"rating\">\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END GROUP BUTTON PORTLET-->\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN CUSTOM BUTTONS WITH ICONS PORTLET-->\n                        <h4>Custom Buttons with Icons</h4>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-group\"></i>\n                                <div>Users</div>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-barcode\"></i>\n                                <div>Products</div>\n                                <span class=\"badge badge-success\">4</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-reorder\"></i>\n                                <div>Reports</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-sitemap\"></i>\n                                <div>Categories</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-calendar\"></i>\n                                <div>Calendar</div>\n                                <span class=\"badge badge-success\">4</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-envelope\"></i>\n                                <div>Inbox</div>\n                                <span class=\"badge badge-info\">12</span>\n                            </a>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-bullhorn\"></i>\n                                <div>Notification</div>\n                                <span class=\"badge badge-important\">3</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-map-marker\"></i>\n                                <div>Locations</div>\n                            </a>\n\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-money\"></i>\n                                <div>Finance</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-plane\"></i>\n                                <div>Projects</div>\n                                <span class=\"badge badge-info\">21</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-thumbs-up\"></i>\n                                <div>Feedback</div>\n                                <span class=\"badge badge-info\">2</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-cloud\"></i>\n                                <div>Servers</div>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-globe\"></i>\n                                <div>Regions</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-heart-empty\"></i>\n                                <div>Popularity</div>\n                                <span class=\"badge badge-info\">221</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-wrench\"></i>\n                                <div>Settings</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-search\"></i>\n                                <div>Search</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-map-marker\"></i>\n                                <div>Locations</div>\n                            </a>\n\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-money\"></i>\n                                <div>Finance</div>\n                            </a>\n                        </div>\n                        <!-- END CUSTOM BUTTONS WITH ICONS PORTLET-->\n                    </div>\n                    <span class=\"space20\">&nbsp;</span>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/calendar.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css\" rel=\"stylesheet\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span3\">\n\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-calendar\"></i> Draggable Events</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div id='external-events'>\n                                    <div class='external-event label'>My Event 1</div>\n                                    <div class='external-event label'>My Event 2</div>\n                                    <div class='external-event label'>My Event 3</div>\n                                    <div class='external-event label'>My Event 4</div>\n                                    <div class='external-event label'>My Event 5</div>\n                                    <div class='external-event label'>My Event 6</div>\n                                    <div class='external-event label'>My Event 7</div>\n                                    <div class='external-event label'>My Event 8</div>\n                                    <div class='external-event label'>My Event 9</div>\n                                    <div class='external-event label'>My Event 10</div>\n                                    <p>\n                                        <input type='checkbox' id='drop-remove' />\n                                        remove after drop\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n\n                    </div>\n                    <div class=\"span9 responsive\" data-tablet=\"span9 fix-margin\" data-desktop=\"span9\">\n                        <!-- BEGIN CALENDAR PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-calendar\"></i> Calendar</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div id=\"calendar\" class=\"has-toolbar\"></div>\n                            </div>\n                        </div>\n                        <!-- END CALENDAR PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n\n\n    <script type=\"text/javascript\" src=\"assets/jquery-slimscroll/jquery-ui-1.9.2.custom.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/jquery-slimscroll/jquery.slimscroll.min.js\"></script>\n    <script src=\"assets/fullcalendar/fullcalendar/fullcalendar.min.js\"></script>\n\n\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/external-dragging-calendar.js\"></script>\n    \n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/chartjs.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Doughnut</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"doughnut\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"> </i> Line</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"line\" height=\"300\" width=\"450\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> PolarArea</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"polarArea\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Bar</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"bar\" height=\"300\" width=\"500\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"pie\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Radar</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"radar\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/chart-master/Chart.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/all-chartjs.js\"></script>\n\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/contact_us.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-envelope\"></i> Contact Us </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"contact-us\">\n                                    <div class=\"row-fluid\">\n                                        <div id=\"map-canvas\" style=\"width: 100%; height: 400px\"></div>\n                                    </div>\n                                    <div class=\"space15\"></div>\n                                    <h3>Our Contacts</h3>\n                                    <div class=\"space15\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"widget red\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Location</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        Jonathon Smith <br>\n                                                        House 31, Road 12, Sector 4<br>\n                                                        Dream Town,  Dreamland 1230<br>\n                                                        Phone: +966 1 000000<br>\n                                                        Fax : 1234 5678 909\n                                                    </p>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"widget green\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Online</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        <strong>Email :</strong> info@vectorlab.com <br>\n                                                        <strong>Support :</strong> support@vectorlab.com<br>\n                                                        <strong>Live Chat :</strong> live@vectorlab.com<br>\n                                                        <strong>Skype :</strong> skype@vectorlab.com<br>\n                                                        <strong>Fax :</strong> 1234 5678 909\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"widget orange\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Social Network</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        <strong>Facebook :</strong> www.facebook.com/vectorlab1<br>\n                                                        <strong>Twitter :</strong> www.twitter.com/vectorlab1<br>\n                                                        <strong>Google + :</strong> www.googleplus.com/vectorlab1<br>\n                                                    </p>\n                                                    <div class=\"space15\"></div>\n                                                    <div class=\"space15\"></div>\n                                                    <div class=\"space10\"></div>\n                                                </div>\n                                            </div>\n\n\n                                        </div>\n                                    </div>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"feedback\">\n                                            <h3>Feedback</h3>\n                                            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p>\n                                            <div class=\"space20\"></div>\n\n                                            <form class=\"form-inline \">\n                                                <div class=\"control-group\">\n                                                    <input type=\"text\" placeholder=\"Name\" class=\"span12\">\n                                                </div>\n                                                <div class=\"control-group \">\n                                                    <input type=\"text\" placeholder=\"Email\" class=\"span6 one-half\">\n                                                    <input type=\"text\" placeholder=\"Phone\" class=\"span6\">\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <textarea placeholder=\"Message\" class=\"span12\" rows=\"5\"></textarea>\n                                                </div>\n                                                <div class=\"text-center\">\n                                                    <button class=\"btn btn-success \" type=\"submit\">Submit</button>\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/draggable_portlet.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\" id=\"draggable_portlets\">\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"js/draggable-portlet.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script>\n        jQuery(document).ready(function () {\n            DraggablePortlet.init();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/dynamic_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/uniform/css/uniform.default.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN EXAMPLE TABLE widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dynamic Table</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table table-striped table-bordered\" id=\"sample_1\">\n                                    <thead>\n                                        <tr>\n                                            <th style=\"width:8px;\"><input type=\"checkbox\" class=\"group-checkable\" data-set=\"#sample_1 .checkboxes\" /></th>\n                                            <th>Username</th>\n                                            <th class=\"hidden-phone\">Email</th>\n                                            <th class=\"hidden-phone\">Points</th>\n                                            <th class=\"hidden-phone\">Joined</th>\n                                            <th class=\"hidden-phone\"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>Jhone doe</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:jhone-doe@gmail.com\">jhone-doe@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">10</td>\n                                            <td class=\"center hidden-phone\">02.03.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>gada</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:gada-lal@gmail.com\">gada-lal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">34</td>\n                                            <td class=\"center hidden-phone\">08.03.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-warning\">Suspended</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@yahoo.com\">soa bal@yahoo.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">1.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>ram sag</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">7.2.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>durlab</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>durlab</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>bombi</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>ABC ho</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>goop</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">01.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>woeri</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">09.10.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">9.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>woeri</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">14.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>uirer</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">13.11.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-warning\">Suspended</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>samsu</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">17.11.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>dipsdf</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>hilor</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">19.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>botu</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">17.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">15.11.2011</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                        <!-- END EXAMPLE TABLE widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/jquery.dataTables.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/DT_bootstrap.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/dynamic-table.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/editable_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN EXAMPLE TABLE widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Editable Table</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    <div class=\"clearfix\">\n                                        <div class=\"btn-group\">\n                                            <button id=\"editable-sample_new\" class=\"btn green\">\n                                                Add New <i class=\"icon-plus\"></i>\n                                            </button>\n                                        </div>\n                                        <div class=\"btn-group pull-right\">\n                                            <button class=\"btn dropdown-toggle\" data-toggle=\"dropdown\">\n                                                Tools <i class=\"icon-angle-down\"></i>\n                                            </button>\n                                            <ul class=\"dropdown-menu pull-right\">\n                                                <li><a href=\"#\">Print</a></li>\n                                                <li><a href=\"#\">Save as PDF</a></li>\n                                                <li><a href=\"#\">Export to Excel</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                    <div class=\"space15\"></div>\n                                    <table class=\"table table-striped table-hover table-bordered\" id=\"editable-sample\">\n                                        <thead>\n                                            <tr>\n                                                <th>Username</th>\n                                                <th>Full Name</th>\n                                                <th>Points</th>\n                                                <th>Notes</th>\n                                                <th>Edit</th>\n                                                <th>Delete</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr class=\"\">\n                                                <td>Jondi Rose</td>\n                                                <td>Alfred Jondi Rose</td>\n                                                <td>1234</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Dulal</td>\n                                                <td>Jonathan Smith</td>\n                                                <td>434</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Sumon</td>\n                                                <td> Sumon Ahmed</td>\n                                                <td>232</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>vectorlab</td>\n                                                <td>dk mosa</td>\n                                                <td>132</td>\n                                                <td class=\"center\">elite user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Admin</td>\n                                                <td> Admin lab</td>\n                                                <td>462</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Rafiqul</td>\n                                                <td>Rafiqul dulal</td>\n                                                <td>62</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Jhon Doe</td>\n                                                <td>Jhon Doe </td>\n                                                <td>1234</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Dulal</td>\n                                                <td>Jonathan Smith</td>\n                                                <td>434</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Sumon</td>\n                                                <td> Sumon Ahmed</td>\n                                                <td>232</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>vectorlab</td>\n                                                <td>dk mosa</td>\n                                                <td>132</td>\n                                                <td class=\"center\">elite user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Admin</td>\n                                                <td> Admin lab</td>\n                                                <td>462</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Rafiqul</td>\n                                                <td>Rafiqul dulal</td>\n                                                <td>62</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END EXAMPLE TABLE widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/jquery.dataTables.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/DT_bootstrap.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/editable-table.js\"></script>\n    <script>\n        jQuery(document).ready(function () {\n            EditableTable.init();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/faq.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-question-sign\"></i> FAQ </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span3\">\n                                        <h4 class=\"title grey\">FAQ Sections</h4>\n                                        <div class=\"clearfix\">\n                                            <ul class=\"nav nav-list faq-list\">\n                                                <li>\n                                                    <a class=\"active\" href=\"#\"><i class=\" icon-signin\"></i> General Questions</a>\n                                                </li>\n                                                <li><a href=\"#\"><i class=\"icon-pushpin\"></i> Lorem Ipsum is simply dummy</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-question-sign\"></i> Contrary to popular belief</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-briefcase\"></i> There are many variation</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-truck\"></i> standard chunk of Lorem </a></li>\n                                                <li><a href=\"#\"><i class=\"icon-trophy\"></i> Lorem Ipsum as their text</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-leaf\"></i> Lorem Ipsum as their default</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-tags\"></i>  Ipsum as default model text</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                    <div class=\"span9\">\n                                        <h4>General Questions</h4>\n                                        <div id=\"accordion\" class=\"accordion in collapse\" style=\"height: auto;\">\n\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseOne\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse in\" id=\"collapseOne\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseTwo\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseTwo\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseThree\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseThree\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseFour\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseFour\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseFive\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseFive\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseSix\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseSix\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseSeven\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Ad vegan excepteur butcher vice lomo ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseSeven\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapse8\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapse8\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/flot_chart.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-bar-chart\"></i> Statistics </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\" style=\"width: 96%\">\n                                    <div class=\"plots\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN TRACKING CURVES PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Tracking Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END TRACKING CURVES PORTLET-->\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Selection Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END BASIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN INTERACTIVE CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Live Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END INTERACTIVE CHART PORTLET-->\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN DYNAMIC CHART PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Support Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-4\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END DYNAMIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN Bar Chat PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Bar Chat</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-5\" style=\"height:350px;\"></div>\n                                    <div class=\"btn-toolbar\">\n                                        <div class=\"btn-group stackControls\">\n                                            <input type=\"button\" class=\"btn btn-info\" value=\"With stacking\" />\n                                            <input type=\"button\" class=\"btn btn-danger\" value=\"Without stacking\" />\n                                        </div>\n                                        <div class=\"space5\"></div>\n                                        <div class=\"btn-group graphControls\">\n                                            <input type=\"button\" class=\"btn\" value=\"Bars\" />\n                                            <input type=\"button\" class=\"btn\" value=\"Lines\" />\n                                            <input type=\"button\" class=\"btn\" value=\"Lines with steps\" />\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END Bar Chat PORTLET-->\n                        </div>\n                    </div>\n\n\n                    <!-- BEGIN PIE CHART PORTLET-->\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"span6\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Donut Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"donut\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END PIE CHART PORTLET-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/flot/jquery.flot.js\"></script>\n    <script src=\"assets/flot/jquery.flot.resize.js\"></script>\n    <script src=\"assets/flot/jquery.flot.pie.js\"></script>\n    <script src=\"assets/flot/jquery.flot.stack.js\"></script>\n    <script src=\"assets/flot/jquery.flot.crosshair.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/flot-chart.js\"></script>\n    <script src=\"js/custom-flot-chart.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/font_awesome.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN FONT AWESOME ICONS PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Font Awesome Icons</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"row-fluid fontawesome-icon-list\">\n\n\n\n                                        <div id=\"new\">\n                                            <h2 class=\"page-header\">New Icons in 3.2</h2>\n\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-compass\"></i> icon-compass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse\"></i> icon-collapse</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-top\"></i> icon-collapse-top</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand\"></i> icon-expand</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eur\"></i> icon-eur</div>\n\n                                                <div class=\"span3\"><i class=\"icon-euro\"></i> icon-euro <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gbp\"></i> icon-gbp</div>\n\n                                                <div class=\"span3\"><i class=\"icon-usd\"></i> icon-usd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dollar\"></i> icon-dollar <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-inr\"></i> icon-inr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rupee\"></i> icon-rupee <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-jpy\"></i> icon-jpy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-yen\"></i> icon-yen <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-cny\"></i> icon-cny</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renminbi\"></i> icon-renminbi <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-krw\"></i> icon-krw</div>\n\n                                                <div class=\"span3\"><i class=\"icon-won\"></i> icon-won <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-file\"></i> icon-file</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text\"></i> icon-file-text</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet\"></i> icon-sort-by-alphabet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet-alt\"></i> icon-sort-by-alphabet-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes\"></i> icon-sort-by-attributes</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes-alt\"></i> icon-sort-by-attributes-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order\"></i> icon-sort-by-order</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order-alt\"></i> icon-sort-by-order-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-sign\"></i> icon-youtube-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube\"></i> icon-youtube</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing\"></i> icon-xing</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing-sign\"></i> icon-xing-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dropbox\"></i> icon-dropbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stackexchange\"></i> icon-stackexchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-instagram\"></i> icon-instagram</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flickr\"></i> icon-flickr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-adn\"></i> icon-adn        </div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket\"></i> icon-bitbucket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket-sign\"></i> icon-bitbucket-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr\"></i> icon-tumblr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr-sign\"></i> icon-tumblr-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-down\"></i> icon-long-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-up\"></i> icon-long-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-left\"></i> icon-long-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-right\"></i> icon-long-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-apple\"></i> icon-apple</div>\n\n                                                <div class=\"span3\"><i class=\"icon-windows\"></i> icon-windows</div>\n\n                                                <div class=\"span3\"><i class=\"icon-android\"></i> icon-android</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linux\"></i> icon-linux</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dribbble\"></i> icon-dribbble</div>\n\n                                                <div class=\"span3\"><i class=\"icon-skype\"></i> icon-skype</div>\n\n                                                <div class=\"span3\"><i class=\"icon-foursquare\"></i> icon-foursquare</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trello\"></i> icon-trello</div>\n\n                                                <div class=\"span3\"><i class=\"icon-female\"></i> icon-female</div>\n\n                                                <div class=\"span3\"><i class=\"icon-male\"></i> icon-male</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gittip\"></i> icon-gittip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sun\"></i> icon-sun</div>\n\n                                                <div class=\"span3\"><i class=\"icon-moon\"></i> icon-moon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-archive\"></i> icon-archive</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bug\"></i> icon-bug</div>\n\n                                                <div class=\"span3\"><i class=\"icon-vk\"></i> icon-vk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-weibo\"></i> icon-weibo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renren\"></i> icon-renren</div>\n\n                                            </div>\n\n                                        </div>\n\n                                        <section id=\"web-application\">\n                                            <h2 class=\"page-header\">Web Application Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-adjust\"></i> icon-adjust</div>\n\n                                                <div class=\"span3\"><i class=\"icon-anchor\"></i> icon-anchor</div>\n\n                                                <div class=\"span3\"><i class=\"icon-archive\"></i> icon-archive</div>\n\n                                                <div class=\"span3\"><i class=\"icon-asterisk\"></i> icon-asterisk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ban-circle\"></i> icon-ban-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bar-chart\"></i> icon-bar-chart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-barcode\"></i> icon-barcode</div>\n\n                                                <div class=\"span3\"><i class=\"icon-beaker\"></i> icon-beaker</div>\n\n                                                <div class=\"span3\"><i class=\"icon-beer\"></i> icon-beer</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bell\"></i> icon-bell</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bell-alt\"></i> icon-bell-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bolt\"></i> icon-bolt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-book\"></i> icon-book</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bookmark\"></i> icon-bookmark</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bookmark-empty\"></i> icon-bookmark-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-briefcase\"></i> icon-briefcase</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bug\"></i> icon-bug</div>\n\n                                                <div class=\"span3\"><i class=\"icon-building\"></i> icon-building</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bullhorn\"></i> icon-bullhorn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bullseye\"></i> icon-bullseye</div>\n\n                                                <div class=\"span3\"><i class=\"icon-calendar\"></i> icon-calendar</div>\n\n                                                <div class=\"span3\"><i class=\"icon-calendar-empty\"></i> icon-calendar-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-camera\"></i> icon-camera</div>\n\n                                                <div class=\"span3\"><i class=\"icon-camera-retro\"></i> icon-camera-retro</div>\n\n                                                <div class=\"span3\"><i class=\"icon-certificate\"></i> icon-certificate</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check\"></i> icon-check</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-empty\"></i> icon-check-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-minus\"></i> icon-check-minus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-sign\"></i> icon-check-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle\"></i> icon-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-blank\"></i> icon-circle-blank</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud\"></i> icon-cloud</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud-download\"></i> icon-cloud-download</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud-upload\"></i> icon-cloud-upload</div>\n\n                                                <div class=\"span3\"><i class=\"icon-code\"></i> icon-code</div>\n\n                                                <div class=\"span3\"><i class=\"icon-code-fork\"></i> icon-code-fork</div>\n\n                                                <div class=\"span3\"><i class=\"icon-coffee\"></i> icon-coffee</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cog\"></i> icon-cog</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cogs\"></i> icon-cogs</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse\"></i> icon-collapse</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-alt\"></i> icon-collapse-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-top\"></i> icon-collapse-top</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comment\"></i> icon-comment</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comment-alt\"></i> icon-comment-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comments\"></i> icon-comments</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comments-alt\"></i> icon-comments-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-compass\"></i> icon-compass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-credit-card\"></i> icon-credit-card</div>\n\n                                                <div class=\"span3\"><i class=\"icon-crop\"></i> icon-crop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dashboard\"></i> icon-dashboard</div>\n\n                                                <div class=\"span3\"><i class=\"icon-desktop\"></i> icon-desktop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-download\"></i> icon-download</div>\n\n                                                <div class=\"span3\"><i class=\"icon-download-alt\"></i> icon-download-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-edit\"></i> icon-edit</div>\n\n                                                <div class=\"span3\"><i class=\"icon-edit-sign\"></i> icon-edit-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ellipsis-horizontal\"></i> icon-ellipsis-horizontal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ellipsis-vertical\"></i> icon-ellipsis-vertical</div>\n\n                                                <div class=\"span3\"><i class=\"icon-envelope\"></i> icon-envelope</div>\n\n                                                <div class=\"span3\"><i class=\"icon-envelope-alt\"></i> icon-envelope-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eraser\"></i> icon-eraser</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exchange\"></i> icon-exchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exclamation\"></i> icon-exclamation</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exclamation-sign\"></i> icon-exclamation-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand\"></i> icon-expand</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand-alt\"></i> icon-expand-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-external-link\"></i> icon-external-link</div>\n\n                                                <div class=\"span3\"><i class=\"icon-external-link-sign\"></i> icon-external-link-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eye-close\"></i> icon-eye-close</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eye-open\"></i> icon-eye-open</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facetime-video\"></i> icon-facetime-video</div>\n\n                                                <div class=\"span3\"><i class=\"icon-female\"></i> icon-female</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fighter-jet\"></i> icon-fighter-jet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-film\"></i> icon-film</div>\n\n                                                <div class=\"span3\"><i class=\"icon-filter\"></i> icon-filter</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fire\"></i> icon-firev</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fire-extinguisher\"></i> icon-fire-extinguisher</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag\"></i> icon-flag</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag-alt\"></i> icon-flag-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag-checkered\"></i> icon-flag-checkered</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-close\"></i> icon-folder-close</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-close-alt\"></i> icon-folder-close-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-open\"></i> icon-folder-open</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-open-alt\"></i> icon-folder-open-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-food\"></i> icon-food</div>\n\n                                                <div class=\"span3\"><i class=\"icon-frown\"></i> icon-frown</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gamepad\"></i> icon-gamepad</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gear\"></i> icon-gear <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gears\"></i> icon-gears <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gift\"></i> icon-gift</div>\n\n                                                <div class=\"span3\"><i class=\"icon-glass\"></i> icon-glass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-globe\"></i> icon-globe</div>\n\n                                                <div class=\"span3\"><i class=\"icon-group\"></i> icon-group</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hdd\"></i> icon-hdd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-headphones\"></i> icon-headphones</div>\n\n                                                <div class=\"span3\"><i class=\"icon-heart\"></i> icon-heart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-heart-empty\"></i> icon-heart-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-home\"></i> icon-home</div>\n\n                                                <div class=\"span3\"><i class=\"icon-inbox\"></i> icon-inbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-info\"></i> icon-info</div>\n\n                                                <div class=\"span3\"><i class=\"icon-info-sign\"></i> icon-info-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-key\"></i> icon-key</div>\n\n                                                <div class=\"span3\"><i class=\"icon-keyboard\"></i> icon-keyboard</div>\n\n                                                <div class=\"span3\"><i class=\"icon-laptop\"></i> icon-laptop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-leaf\"></i> icon-leaf</div>\n\n                                                <div class=\"span3\"><i class=\"icon-legal\"></i> icon-legal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lemon\"></i> icon-lemon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-level-down\"></i> icon-level-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-level-up\"></i> icon-level-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lightbulb\"></i> icon-lightbulb</div>\n\n                                                <div class=\"span3\"><i class=\"icon-location-arrow\"></i> icon-location-arrow</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lock\"></i> icon-lock</div>\n\n                                                <div class=\"span3\"><i class=\"icon-magic\"></i> icon-magic</div>\n\n                                                <div class=\"span3\"><i class=\"icon-magnet\"></i> icon-magnet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-forward\"></i> icon-mail-forward <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-reply\"></i> icon-mail-reply <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-reply-all\"></i> icon-mail-reply-all</div>\n\n                                                <div class=\"span3\"><i class=\"icon-male\"></i> icon-male</div>\n\n                                                <div class=\"span3\"><i class=\"icon-map-marker\"></i> icon-map-marker</div>\n\n                                                <div class=\"span3\"><i class=\"icon-meh\"></i> icon-meh</div>\n\n                                                <div class=\"span3\"><i class=\"icon-microphone\"></i> icon-microphone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-microphone-off\"></i> icon-microphone-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus\"></i> icon-minus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus-sign\"></i> icon-minus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus-sign-alt\"></i> icon-minus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-mobile-phone\"></i> icon-mobile-phone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-money\"></i> icon-money</div>\n\n                                                <div class=\"span3\"><i class=\"icon-moon\"></i> icon-moon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-move\"></i> icon-move</div>\n\n                                                <div class=\"span3\"><i class=\"icon-music\"></i> icon-music</div>\n\n                                                <div class=\"span3\"><i class=\"icon-off\"></i> icon-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok\"></i> icon-ok</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok-circle\"></i> icon-ok-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok-sign\"></i> icon-ok-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pencil\"></i> icon-pencil</div>\n\n                                                <div class=\"span3\"><i class=\"icon-phone\"></i> icon-phone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-phone-sign\"></i> icon-phone-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-picture\"></i> icon-picture</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plane\"></i> icon-plane</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus\"></i> icon-plus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign\"></i> icon-plus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign-alt\"></i> icon-plus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-power-off\"></i> icon-power-off <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-print\"></i> icon-print</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pushpin\"></i> icon-pushpin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-puzzle-piece\"></i> icon-puzzle-piece</div>\n\n                                                <div class=\"span3\"><i class=\"icon-qrcode\"></i> icon-qrcode</div>\n\n                                                <div class=\"span3\"><i class=\"icon-question\"></i> icon-question</div>\n\n                                                <div class=\"span3\"><i class=\"icon-question-sign\"></i> icon-question-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-quote-left\"></i> icon-quote-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-quote-right\"></i> icon-quote-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-random\"></i> icon-randomv</div>\n\n                                                <div class=\"span3\"><i class=\"icon-refresh\"></i> icon-refresh</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove\"></i> icon-remove</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove-circle\"></i> icon-remove-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove-sign\"></i> icon-remove-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reorder\"></i> icon-reorder</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reply\"></i> icon-reply</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reply-all\"></i> icon-reply-all</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-horizontal\"></i> icon-resize-horizontal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-vertical\"></i> icon-resize-vertical</div>\n\n                                                <div class=\"span3\"><i class=\"icon-retweet\"></i> icon-retweet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-road\"></i> icon-road</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rocket\"></i> icon-rocket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rss\"></i> icon-rss</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rss-sign\"></i> icon-rss-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-screenshot\"></i> icon-screenshot</div>\n\n                                                <div class=\"span3\"><i class=\"icon-search\"></i> icon-search</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share\"></i> icon-share</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share-alt\"></i> icon-share-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share-sign\"></i> icon-share-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-shield\"></i> icon-shield</div>\n\n                                                <div class=\"span3\"><i class=\"icon-shopping-cart\"></i> icon-shopping-cart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sign-blank\"></i> icon-sign-blank</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signal\"></i> icon-signal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signin\"></i> icon-signin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signout\"></i> icon-signout</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sitemap\"></i> icon-sitemap</div>\n\n                                                <div class=\"span3\"><i class=\"icon-smile\"></i> icon-smile</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort\"></i> icon-sort</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet\"></i> icon-sort-by-alphabet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet-alt\"></i> icon-sort-by-alphabet-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes\"></i> icon-sort-by-attributes</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes-alt\"></i> icon-sort-by-attributes-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order\"></i> icon-sort-by-order</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order-alt\"></i> icon-sort-by-order-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-down\"></i> icon-sort-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-up\"></i> icon-sort-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-spinner\"></i> icon-spinner</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star\"></i> icon-star</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-empty\"></i> icon-star-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half\"></i> icon-star-half</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half-empty\"></i> icon-star-half-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half-full\"></i> icon-star-half-full <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-subscript\"></i> icon-subscript</div>\n\n                                                <div class=\"span3\"><i class=\"icon-suitcase\"></i> icon-suitcase</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sun\"></i> icon-sun</div>\n\n                                                <div class=\"span3\"><i class=\"icon-superscript\"></i> icon-superscript</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tablet\"></i> icon-tablet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tag\"></i> icon-tag</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tags\"></i> icon-tags</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tasks\"></i> icon-tasks</div>\n\n                                                <div class=\"span3\"><i class=\"icon-terminal\"></i> icon-terminal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down-alt\"></i> icon-thumbs-down-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up-alt\"></i> icon-thumbs-up-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ticket\"></i> icon-ticket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-time\"></i> icon-time</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tint\"></i> icon-tint</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trash\"></i> icon-trash</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trophy\"></i> icon-trophy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-truck\"></i> icon-truck</div>\n\n                                                <div class=\"span3\"><i class=\"icon-umbrella\"></i> icon-umbrella</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unchecked\"></i> icon-unchecked <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlock\"></i> icon-unlock</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlock-alt\"></i> icon-unlock-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-upload\"></i> icon-upload</div>\n\n                                                <div class=\"span3\"><i class=\"icon-upload-alt\"></i> icon-upload-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-user\"></i> icon-user</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-down\"></i> icon-volume-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-off\"></i> icon-volume-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-up\"></i> icon-volume-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-warning-sign\"></i> icon-warning-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-wrench\"></i> icon-wrench</div>\n\n                                                <div class=\"span3\"><i class=\"icon-zoom-in\"></i> icon-zoom-in</div>\n\n                                                <div class=\"span3\"><i class=\"icon-zoom-out\"></i> icon-zoom-out</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"currency\">\n                                            <h2 class=\"page-header\">Currency Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cny\"></i> icon-cny</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dollar\"></i> icon-dollar <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-eur\"></i> icon-eur</div>\n\n                                                <div class=\"span3\"><i class=\"icon-euro\"></i> icon-euro <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gbp\"></i> icon-gbp</div>\n\n                                                <div class=\"span3\"><i class=\"icon-inr\"></i> icon-inr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-jpy\"></i> icon-jpy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-krw\"></i> icon-krw</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renminbi\"></i> icon-renminbi <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-rupee\"></i> icon-rupee <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-usd\"></i> icon-usd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-won\"></i> icon-won <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-yen\"></i> icon-yen <span class=\"muted\">(alias)</span></div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"text-editor\">\n                                            <h2 class=\"page-header\">Text Editor Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-align-center\"></i> icon-align-center</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-justify\"></i> icon-align-justify</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-left\"></i> icon-align-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-right\"></i> icon-align-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bold\"></i> icon-bold</div>\n\n                                                <div class=\"span3\"><i class=\"icon-columns\"></i> icon-columns</div>\n\n                                                <div class=\"span3\"><i class=\"icon-copy\"></i> icon-copy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cut\"></i> icon-cut</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eraser\"></i> icon-eraser</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file\"></i> icon-file</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-alt\"></i> icon-file-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text\"></i> icon-file-text</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text-alt\"></i> icon-file-text-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-font\"></i> icon-font</div>\n\n                                                <div class=\"span3\"><i class=\"icon-indent-left\"></i> icon-indent-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-indent-right\"></i> icon-indent-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-italic\"></i> icon-italic</div>\n\n                                                <div class=\"span3\"><i class=\"icon-link\"></i> icon-link</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list\"></i> icon-list</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-alt\"></i> icon-list-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-ol\"></i> icon-list-ol</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-ul\"></i> icon-list-ul</div>\n\n                                                <div class=\"span3\"><i class=\"icon-paper-clip\"></i> icon-paper-clip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-paperclip\"></i> icon-paperclip <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-paste\"></i> icon-paste</div>\n\n                                                <div class=\"span3\"><i class=\"icon-repeat\"></i> icon-repeat</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rotate-left\"></i> icon-rotate-left <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-rotate-right\"></i> icon-rotate-right <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-save\"></i> icon-save</div>\n\n                                                <div class=\"span3\"><i class=\"icon-strikethrough\"></i> icon-strikethrough</div>\n\n                                                <div class=\"span3\"><i class=\"icon-table\"></i> icon-table</div>\n\n                                                <div class=\"span3\"><i class=\"icon-text-height\"></i> icon-text-height</div>\n\n                                                <div class=\"span3\"><i class=\"icon-text-width\"></i> icon-text-width</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th\"></i> icon-th</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th-large\"></i> icon-th-large</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th-list\"></i> icon-th-list</div>\n\n                                                <div class=\"span3\"><i class=\"icon-underline\"></i> icon-underline</div>\n\n                                                <div class=\"span3\"><i class=\"icon-undo\"></i> icon-undo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlink\"></i> icon-unlink</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"directional\">\n                                            <h2 class=\"page-header\">Directional Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-angle-down\"></i> icon-angle-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-left\"></i> icon-angle-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-right\"></i> icon-angle-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-up\"></i> icon-angle-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-down\"></i> icon-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-left\"></i> icon-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-right\"></i> icon-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-up\"></i> icon-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-down\"></i> icon-caret-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-left\"></i> icon-caret-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-right\"></i> icon-caret-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-up\"></i> icon-caret-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-down\"></i> icon-chevron-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-left\"></i> icon-chevron-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-right\"></i> icon-chevron-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-down\"></i> icon-chevron-sign-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-left\"></i> icon-chevron-sign-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-right\"></i> icon-chevron-sign-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-up\"></i> icon-chevron-sign-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-up\"></i> icon-chevron-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-down\"></i> icon-circle-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-left\"></i> icon-circle-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-right\"></i> icon-circle-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-up\"></i> icon-circle-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-down\"></i> icon-double-angle-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-left\"></i> icon-double-angle-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-right\"></i> icon-double-angle-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-up\"></i> icon-double-angle-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-down\"></i> icon-hand-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-left\"></i> icon-hand-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-right\"></i> icon-hand-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-up\"></i> icon-hand-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-down\"></i> icon-long-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-left\"></i> icon-long-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-right\"></i> icon-long-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-up\"></i> icon-long-arrow-up</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"video-player\">\n                                            <h2 class=\"page-header\">Video Player Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-backward\"></i> icon-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eject\"></i> icon-eject</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fast-backward\"></i> icon-fast-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fast-forward\"></i> icon-fast-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-forward\"></i> icon-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fullscreen\"></i> icon-fullscreen</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pause\"></i> icon-pause</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play\"></i> icon-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play-circle\"></i> icon-play-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play-sign\"></i> icon-play-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-full\"></i> icon-resize-full</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-small\"></i> icon-resize-small</div>\n\n                                                <div class=\"span3\"><i class=\"icon-step-backward\"></i> icon-step-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-step-forward\"></i> icon-step-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stop\"></i> icon-stop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"brand\">\n                                            <h2 class=\"page-header\">Brand Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n                                                <div class=\"span3\"><i class=\"icon-adn\"></i> icon-adn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-android\"></i> icon-android</div>\n\n                                                <div class=\"span3\"><i class=\"icon-apple\"></i> icon-apple</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket\"></i> icon-bitbucket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket-sign\"></i> icon-bitbucket-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-css3\"></i> icon-css3</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dribbble\"></i> icon-dribbble</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dropbox\"></i> icon-dropbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facebook\"></i> icon-facebook</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facebook-sign\"></i> icon-facebook-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flickr\"></i> icon-flickr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-foursquare\"></i> icon-foursquare</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github\"></i> icon-github</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github-alt\"></i> icon-github-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github-sign\"></i> icon-github-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gittip\"></i> icon-gittip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-google-plus\"></i> icon-google-plus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-google-plus-sign\"></i> icon-google-plus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-html5\"></i> icon-html5</div>\n\n                                                <div class=\"span3\"><i class=\"icon-instagram\"></i> icon-instagram</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linkedin\"></i> icon-linkedin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linkedin-sign\"></i> icon-linkedin-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linux\"></i> icon-linux</div>\n\n                                                <div class=\"span3\"><i class=\"icon-maxcdn\"></i> icon-maxcdn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pinterest\"></i> icon-pinterest</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pinterest-sign\"></i> icon-pinterest-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renren\"></i> icon-renren</div>\n\n                                                <div class=\"span3\"><i class=\"icon-skype\"></i> icon-skype</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stackexchange\"></i> icon-stackexchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trello\"></i> icon-trello</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr\"></i> icon-tumblr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr-sign\"></i> icon-tumblr-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-twitter\"></i> icon-twitter</div>\n\n                                                <div class=\"span3\"><i class=\"icon-twitter-sign\"></i> icon-twitter-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-vk\"></i> icon-vk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-weibo\"></i> icon-weibo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-windows\"></i> icon-windows</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing\"></i> icon-xing</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing-sign\"></i> icon-xing-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube\"></i> icon-youtube</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-sign\"></i> icon-youtube-sign</div>\n\n                                            </div>\n                                        </section>\n\n                                        <section id=\"medical\">\n                                            <h2 class=\"page-header\">Medical Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-ambulance\"></i> icon-ambulance</div>\n\n                                                <div class=\"span3\"><i class=\"icon-h-sign\"></i> icon-h-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hospital\"></i> icon-hospital</div>\n\n                                                <div class=\"span3\"><i class=\"icon-medkit\"></i> icon-medkit</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign-alt\"></i> icon-plus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stethoscope\"></i> icon-stethoscope</div>\n\n                                                <div class=\"span3\"><i class=\"icon-user-md\"></i> icon-user-md</div>\n\n                                            </div>\n\n                                        </section>\n\n\n                                    </div>\n\n\n                                </div>\n\n                            </div>\n                        </div>\n                        <!-- END FONT AWESOME ICONS PORTLET-->\n                    </div>\n                </div>\n                <!--END:BODY-->\n            </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/form_component.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/chosen-bootstrap/chosen/chosen.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/jquery-tags-input/jquery.tagsinput.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/clockface/css/clockface.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-datepicker/css/datepicker.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-timepicker/compiled/timepicker.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-colorpicker/css/colorpicker.css\" />\n    <link rel=\"stylesheet\" href=\"assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-daterangepicker/daterangepicker.css\" />\n    <link rel=\"stylesheet\" href=\"../../../../code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Sample Form </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6 \" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Disabled Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" type=\"text\" placeholder=\"Disabled input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Readonly Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" type=\"text\" placeholder=\"Readonly input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input with Tooltip</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6  tooltips\" data-trigger=\"hover\" data-original-title=\"Tooltip text goes here. Tooltip text goes here.\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input with Popover</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6  popovers\" data-trigger=\"hover\" data-content=\"Popover body goes here. Popover body goes here.\" data-original-title=\"Popover header\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Auto Complete</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6 \" style=\"margin: 0 auto;\" data-provide=\"typeahead\" data-items=\"4\" data-source=\"[&quot;Alabama&quot;,&quot;Alaska&quot;,&quot;Arizona&quot;,&quot;Arkansas&quot;,&quot;California&quot;,&quot;Colorado&quot;,&quot;Connecticut&quot;,&quot;Delaware&quot;,&quot;Florida&quot;,&quot;Georgia&quot;,&quot;Hawaii&quot;,&quot;Idaho&quot;,&quot;Illinois&quot;,&quot;Indiana&quot;,&quot;Iowa&quot;,&quot;Kansas&quot;,&quot;Kentucky&quot;,&quot;Louisiana&quot;,&quot;Maine&quot;,&quot;Maryland&quot;,&quot;Massachusetts&quot;,&quot;Michigan&quot;,&quot;Minnesota&quot;,&quot;Mississippi&quot;,&quot;Missouri&quot;,&quot;Montana&quot;,&quot;Nebraska&quot;,&quot;Nevada&quot;,&quot;New Hampshire&quot;,&quot;New Jersey&quot;,&quot;New Mexico&quot;,&quot;New York&quot;,&quot;North Dakota&quot;,&quot;North Carolina&quot;,&quot;Ohio&quot;,&quot;Oklahoma&quot;,&quot;Oregon&quot;,&quot;Pennsylvania&quot;,&quot;Rhode Island&quot;,&quot;South Carolina&quot;,&quot;South Dakota&quot;,&quot;Tennessee&quot;,&quot;Texas&quot;,&quot;Utah&quot;,&quot;Vermont&quot;,&quot;Virginia&quot;,&quot;Washington&quot;,&quot;West Virginia&quot;,&quot;Wisconsin&quot;,&quot;Wyoming&quot;]\" />\n                                            <p class=\"help-block\">Start typing to auto complete!. E.g: Florida</p>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Email Address Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend\">\n                                                <span class=\"add-on\">@</span><input class=\" \" type=\"text\" placeholder=\"Email Address\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Email Address Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-icon left\">\n                                                <i class=\"icon-envelope\"></i>\n                                                <input class=\" \" type=\"text\" placeholder=\"Email Address\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Currency Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend input-append\">\n                                                <span class=\"add-on\">$</span><input class=\" \" type=\"text\" /><span class=\"add-on\">.00</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 \" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"\">Select...</option>\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Dropdown(Multiple)</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 \" multiple=\"multiple\" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                                <option value=\"Category 3\">Category 6</option>\n                                                <option value=\"Category 4\">Category 7</option>\n                                                <option value=\"Category 3\">Category 8</option>\n                                                <option value=\"Category 4\">Category 9</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Custom Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 chzn-select\" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"\"></option>\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Grouped Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Team\" class=\"chzn-select span6\" tabindex=\"-1\" id=\"selS0V\">\n                                                <option value=\"\"></option>\n                                                <optgroup label=\"NFC EAST\">\n                                                    <option>Dallas Cowboys</option>\n                                                    <option>New York Giants</option>\n                                                    <option>Philadelphia Eagles</option>\n                                                    <option>Washington Redskins</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC NORTH\">\n                                                    <option>Chicago Bears</option>\n                                                    <option>Detroit Lions</option>\n                                                    <option>Green Bay Packers</option>\n                                                    <option>Minnesota Vikings</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC SOUTH\">\n                                                    <option>Atlanta Falcons</option>\n                                                    <option>Carolina Panthers</option>\n                                                    <option>New Orleans Saints</option>\n                                                    <option>Tampa Bay Buccaneers</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC WEST\">\n                                                    <option>Arizona Cardinals</option>\n                                                    <option>St. Louis Rams</option>\n                                                    <option>San Francisco 49ers</option>\n                                                    <option>Seattle Seahawks</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC EAST\">\n                                                    <option>Buffalo Bills</option>\n                                                    <option>Miami Dolphins</option>\n                                                    <option>New England Patriots</option>\n                                                    <option>New York Jets</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC NORTH\">\n                                                    <option>Baltimore Ravens</option>\n                                                    <option>Cincinnati Bengals</option>\n                                                    <option>Cleveland Browns</option>\n                                                    <option>Pittsburgh Steelers</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC SOUTH\">\n                                                    <option>Houston Texans</option>\n                                                    <option>Indianapolis Colts</option>\n                                                    <option>Jacksonville Jaguars</option>\n                                                    <option>Tennessee Titans</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC WEST\">\n                                                    <option>Denver Broncos</option>\n                                                    <option>Kansas City Chiefs</option>\n                                                    <option>Oakland Raiders</option>\n                                                    <option>San Diego Chargers</option>\n                                                </optgroup>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Multiple Dropdown Select</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Teams\" class=\"chzn-select span6\" multiple=\"multiple\" tabindex=\"6\">\n                                                <option value=\"\"></option>\n                                                <optgroup label=\"NFC EAST\">\n                                                    <option>Dallas Cowboys</option>\n                                                    <option>New York Giants</option>\n                                                    <option>Philadelphia Eagles</option>\n                                                    <option>Washington Redskins</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC NORTH\">\n                                                    <option selected>Chicago Bears</option>\n                                                    <option>Detroit Lions</option>\n                                                    <option>Green Bay Packers</option>\n                                                    <option>Minnesota Vikings</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC SOUTH\">\n                                                    <option>Atlanta Falcons</option>\n                                                    <option selected>Carolina Panthers</option>\n                                                    <option>New Orleans Saints</option>\n                                                    <option>Tampa Bay Buccaneers</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC WEST\">\n                                                    <option>Arizona Cardinals</option>\n                                                    <option>St. Louis Rams</option>\n                                                    <option>San Francisco 49ers</option>\n                                                    <option>Seattle Seahawks</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC EAST\">\n                                                    <option>Buffalo Bills</option>\n                                                    <option>Miami Dolphins</option>\n                                                    <option>New England Patriots</option>\n                                                    <option>New York Jets</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC NORTH\">\n                                                    <option>Baltimore Ravens</option>\n                                                    <option>Cincinnati Bengals</option>\n                                                    <option>Cleveland Browns</option>\n                                                    <option>Pittsburgh Steelers</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC SOUTH\">\n                                                    <option>Houston Texans</option>\n                                                    <option>Indianapolis Colts</option>\n                                                    <option>Jacksonville Jaguars</option>\n                                                    <option>Tennessee Titans</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC WEST\">\n                                                    <option>Denver Broncos</option>\n                                                    <option>Kansas City Chiefs</option>\n                                                    <option>Oakland Raiders</option>\n                                                    <option>San Diego Chargers</option>\n                                                </optgroup>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\"> Dropdown Diselect</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Type of Bear\" class=\"chzn-select-deselect span6\" tabindex=\"-1\" id=\"selCSI\">\n                                                <option value=\"\"></option>\n                                                <option>American Black Bear</option>\n                                                <option>Asiatic Black Bear</option>\n                                                <option>Brown Bear</option>\n                                                <option>Giant Panda</option>\n                                                <option selected=\"\">Sloth Bear</option>\n                                                <option>Sun Bear</option>\n                                                <option>Polar Bear</option>\n                                                <option>Spectacled Bear</option>\n                                            </select>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span6 \" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Submit</button>\n                                        <button type=\"button\" class=\"btn\">Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Dual Select\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN DUAL SELECT-->\n                                <form name=\"form1\" method=\"post\" action=\"#\" id=\"form1\">\n                                    <div>\n                                        <input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"wEPDwUKMTk5MjI0ODUwOWRkJySmk0TGHOhSY+d9BU9NHeCKW6o=\" />\n                                    </div>\n                                    <div>\n                                        <table style=\"width: 100%;\" class=\"\">\n                                            <tr>\n                                                <td style=\"width: 35%\">\n                                                    <div class=\"d-sel-filter\">\n                                                        <span>Filter:</span>\n                                                        <input type=\"text\" id=\"box1Filter\" />\n                                                        <button type=\"button\" class=\"btn\" id=\"box1Clear\">X</button>\n                                                    </div>\n\n                                                    <select id=\"box1View\" multiple=\"multiple\" style=\"height:300px;width:75%\">\n\n                                                        <option value=\"501649\">2008-2009 \"Mini\" Baja</option>\n\n                                                        <option value=\"501497\">AAPA - Asian American Psychological Association</option>\n\n                                                        <option value=\"501053\">Academy of Film Geeks</option>\n\n                                                        <option value=\"500001\">Accounting Association</option>\n\n                                                        <option value=\"501227\">ACLU</option>\n\n                                                        <option value=\"501610\">Active Minds</option>\n\n                                                        <option value=\"501514\">Activism with A Reel Edge (A.W.A.R.E.)</option>\n\n                                                        <option value=\"501656\">Adopt a Grandparent Program</option>\n\n                                                        <option value=\"501050\">Africa Awareness Student Organization</option>\n\n                                                        <option value=\"501075\">African Diasporic Cultural RC Interns</option>\n\n                                                        <option value=\"501493\">Agape</option>\n\n                                                        <option value=\"501562\">AGE-Alliance for Graduate Excellence</option>\n\n                                                        <option value=\"500676\">AICHE (American Inst of Chemical Engineers)</option>\n\n                                                        <option value=\"501460\">AIDS Sensitivity Awareness Project ASAP</option>\n\n                                                        <option value=\"500004\">Aikido Club</option>\n\n                                                        <option value=\"500336\">Akanke</option>\n\n                                                    </select><br />\n\n                                                    <span id=\"box1Counter\" class=\"countLabel\"></span>\n\n                                                    <select id=\"box1Storage\"></select>\n                                                </td>\n                                                <td style=\"width: 21%; vertical-align: middle\">\n                                                    <button id=\"to2\" class=\"btn\" type=\"button\">&nbsp;>&nbsp;</button>\n\n                                                    <button id=\"allTo2\" class=\"btn\" type=\"button\">&nbsp;>>&nbsp;</button>\n\n                                                    <button id=\"allTo1\" class=\"btn\" type=\"button\">&nbsp;<<&nbsp;</button>\n\n                                                    <button id=\"to1\" class=\"btn\" type=\"button\">&nbsp;<&nbsp;</button>\n                                                </td>\n                                                <td style=\"width: 35%\">\n                                                    <div class=\"d-sel-filter\">\n                                                        <span>Filter:</span>\n                                                        <input type=\"text\" id=\"box2Filter\" />\n                                                        <button type=\"button\" class=\"btn\" id=\"box2Clear\">X</button>\n                                                    </div>\n\n                                                    <select id=\"box2View\" multiple=\"multiple\" style=\"height:300px;width:75%;\"></select><br />\n\n                                                    <span id=\"box2Counter\" class=\"countLabel\"></span>\n\n                                                    <select id=\"box2Storage\"></select>\n                                                </td>\n                                            </tr>\n                                        </table>\n                                    </div>\n                                    <div class=\"mtop20\">\n                                        <input type=\"submit\" value=\"Submit\" class=\"btn\">\n                                    </div>\n                                </form>\n                                <!-- END DUAL SELECT-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Tags Input\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n                                        <div class=\"controls\">\n                                            <input id=\"tags_1\" type=\"text\" class=\"tags\" value=\"php,ios,javascript,ruby,android,kindle\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Fixed Width</label>\n                                        <div class=\"controls\">\n                                            <input id=\"tags_2\" type=\"text\" class=\"tags\" value=\"tag1,tag2\" />\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Masked inputs\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 1</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999-99-999-9999-9\" class=\"span5\">\n                                            <span class=\"help-inline\">999-99-999-9999-9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 2</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999 99 999 9999 9\" class=\"span5\">\n                                            <span class=\"help-inline\">999 99 999 9999 9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 3</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999/99/999/9999/9\" class=\"span5\">\n                                            <span class=\"help-inline\">999/99/999/9999/9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">IPV4</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999.999.999.9999\" class=\"span5\">\n                                            <span class=\"help-inline\">192.168.110.310</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">IPV6</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"9999:9999:9999:9:999:9999:9999:9999\" class=\"span5\">\n                                            <span class=\"help-inline\">4deg:1340:6547:2:540:h8je:ve73:98pd</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Tax ID</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99-9999999\" class=\"span5\">\n                                            <span class=\"help-inline\">99-9999999</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Phone</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"(999) 999-9999\" class=\"span5\">\n                                            <span class=\"help-inline\">(999) 999-9999</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Currency</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"$ 999,999,999.99\" class=\"span5\">\n                                            <span class=\"help-inline\">$ 999,999,999.99</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Date</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99/99/9999\" class=\"span5\">\n                                            <span class=\"help-inline\">dd/mm/yyyy</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Date 2</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99-99-9999\" class=\"span5\">\n                                            <span class=\"help-inline\">dd-mm-yyyy</span>\n                                        </div>\n                                    </div>\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Dropdown\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form switch-form\">\n                                <div class=\"widget-body form\">\n                                    <!-- BEGIN FORM-->\n                                    <form class=\"form-horizontal\" action=\"#\">\n                                        <div class=\"row-fluid\">\n                                            <div class=\"span6\">\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Right Action Input</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-append\">\n                                                            <input type=\"text\" class=\" medium\">\n                                                            <div class=\"btn-group\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\"> Right Input Dropup</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-append\">\n                                                            <input class=\"medium\" type=\"text\">\n                                                            <div class=\"btn-group dropup\">\n                                                                <button class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\">\n                                                                    Action <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu pull-right\">\n                                                                    <li>\n                                                                        <a href=\"#\">Action</a>\n                                                                    </li>\n                                                                    <li>\n                                                                        <a href=\"#\">Another action</a>\n                                                                    </li>\n                                                                    <li>\n                                                                        <a href=\"#\">Something else here</a>\n                                                                    </li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li>\n                                                                        <a href=\"#\">Separated link</a>\n                                                                    </li>\n                                                                </ul>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n\n\n                                            </div>\n                                            <div class=\"span6\">\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Left Action Input</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-prepend\">\n                                                            <div class=\"btn-group\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action\n                                                                    <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                            <!-- /btn-group -->\n                                                            <input type=\"text\" class=\" medium\">\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Left Input Dropup</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-prepend\">\n                                                            <div class=\"btn-group dropup\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action\n                                                                    <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                            <!-- /btn-group -->\n                                                            <input type=\"text\" class=\" medium\">\n                                                        </div>\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                        </div>\n                                    </form>\n                                    <!--</form>-->\n                                    <div class=\"space20\"></div>\n                                    <!-- END FORM-->\n\n                                </div>\n                            </div>\n\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Color Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" value=\"#8fff00\" class=\"cp1\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">RGBA</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" data-color-format=\"rgba\" value=\"rgb(0,194,255,0.78)\" class=\"cp2\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">As Component</label>\n\n                                        <div class=\"controls\">\n                                            <div data-color-format=\"rgba\" data-color=\"#87BB33\" class=\"input-append color cp1\">\n                                                <input type=\"text\" readonly=\"\" value=\"#87BB33\" class=\"\">\n                                                <span class=\"add-on\"><i style=\"background-color: #87BB33;\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Time Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Timepicker</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append bootstrap-timepicker\">\n                                                <input id=\"timepicker1\" type=\"text\" class=\"input-small\">\n                                                <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">24hr Timepicker</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append bootstrap-timepicker\">\n                                                <input id=\"timepicker2\" type=\"text\" class=\"input-small\">\n                                                <span class=\"add-on\"> <i class=\"icon-time\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div id=\"myModal1\" class=\"modal hide fade\">\n                                        <div class=\"modal-header\">\n                                            <h3>Timepicker inside a modal</h3>\n                                        </div>\n                                        <div class=\"modal-body\" style=\"min-height: 230px\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Default Timepicker</label>\n\n                                                <div class=\"controls\">\n                                                    <div class=\"bootstrap-timepicker\">\n                                                        <input id=\"timepicker3\" type=\"text\" value=\"10:35 AM\" class=\"input-small\">\n                                                        <i class=\"icon-time\"\n                                                           style=\"margin: -2px 0 0 -22.5px; pointer-events: none;position: relative;\"></i>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            <div class=\"space10\"></div>\n\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">24hr Timepicker</label>\n\n                                                <div class=\"controls\">\n                                                    <div class=\"input-append bootstrap-timepicker\">\n                                                        <input id=\"timepicker4\" type=\"text\" class=\"input-small\">\n                                                        <span class=\"add-on\"> <i class=\"icon-time\"></i></span>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"modal-footer\">\n                                            <a data-dismiss=\"modal\" class=\"btn btn-primary\" href=\"#\">OK</a>\n                                        </div>\n                                    </div>\n                                    <a class=\"btn btn-primary\" href=\"#myModal1\" data-toggle=\"modal\">Timepicker inside a modal</a>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Clockface Time Pickers\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\" small\" data-format=\"hh:mm A\" value=\"4:18 PM\"\n                                                   id=\"clockface_1\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Button</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append\">\n                                                <input type=\"text\" readonly=\"\" class=\" small\" value=\"12:10\" id=\"clockface_2\">\n                                                <button id=\"clockface_2_toggle-btn\" type=\"button\" class=\"btn\">\n                                                    <i class=\"icon-time\"></i>\n                                                </button>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                </form>\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Date Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default datepicker</label>\n\n                                        <div class=\"controls\">\n                                            <input id=\"dp1\" type=\"text\" value=\"12-02-2012\" size=\"16\" class=\"m-ctrl-medium\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Starts with years view</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append date\" id=\"dpYears\" data-date=\"12-02-2012\"\n                                                 data-date-format=\"dd-mm-yyyy\" data-date-viewmode=\"years\">\n                                                <input class=\"m-ctrl-medium\" size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Limit the view months</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append date\" id=\"dpMonths\" data-date=\"102/2012\"\n                                                 data-date-format=\"mm/yyyy\" data-date-viewmode=\"years\"\n                                                 data-date-minviewmode=\"months\">\n                                                <input class=\"m-ctrl-medium\" size=\"16\" type=\"text\" value=\"02/2012\" readonly>\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Date Range Pickers</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Date Ranges</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend\">\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                                <input id=\"reservation\" type=\"text\" class=\" m-ctrl-medium\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Advance Date Ranges</label>\n                                        <div class=\"controls\">\n                                            <div id=\"reportrange\" class=\"btn\">\n                                                <i class=\"icon-calendar\"></i>\n                                                &nbsp;<span></span>\n                                                <b class=\"caret\"></b>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!--End Widget-->\n\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Switch Buttons\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form switch-form\">\n                                <div class=\"widget-body form\">\n                                    <!-- BEGIN FORM-->\n                                    <form class=\"form-horizontal\" action=\"#\">\n\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Basic Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"normal-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Toggle Buttons with Text</label>\n                                            <div class=\"controls\">\n                                                <div id=\"text-toggle-button\">\n                                                    <input type=\"checkbox\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Not Animated</label>\n                                            <div class=\"controls\">\n                                                <div id=\"not-animated-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Transition Speed</label>\n                                            <div class=\"controls\">\n                                                <div id=\"transition-percent-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n\n                                                <div id=\"transition-value-toggle-button\">\n                                                    <input type=\"checkbox\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Styled Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"danger-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                                <div id=\"info-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                                <div id=\"success-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                                <div id=\"warning-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Height Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"height-text-style-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </form>\n                                    <!--</form>-->\n                                    <div class=\"space20\"></div>\n                                    <!-- END FORM-->\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> File Upload</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n                                        <div class=\"controls\">\n                                            <input type=\"file\" class=\"default\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Advanced</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <div class=\"input-append\">\n                                                    <div class=\"uneditable-input\">\n                                                        <i class=\"icon-file fileupload-exists\"></i>\n                                                        <span class=\"fileupload-preview\"></span>\n                                                    </div>\n                                                    <span class=\"btn btn-file\">\n                                                        <span class=\"fileupload-new\">Select file</span>\n                                                        <span class=\"fileupload-exists\">Change</span>\n                                                        <input type=\"file\" class=\"default\">\n                                                    </span>\n                                                    <a data-dismiss=\"fileupload\" class=\"btn fileupload-exists\" href=\"#\">Remove</a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Without input</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <span class=\"btn btn-file\">\n                                                    <span class=\"fileupload-new\">Select file</span>\n                                                    <span class=\"fileupload-exists\">Change</span>\n                                                    <input type=\"file\" class=\"default\">\n                                                </span>\n                                                <span class=\"fileupload-preview\"></span>\n                                                <a style=\"float: none\" data-dismiss=\"fileupload\" class=\"close fileupload-exists\" href=\"#\">×</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Image Upload</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <div style=\"width: 200px; height: 150px;\" class=\"fileupload-new thumbnail\">\n                                                    <img alt=\"\" src=\"../../../../www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image\">\n                                                </div>\n                                                <div style=\"max-width: 200px; max-height: 150px; line-height: 20px;\" class=\"fileupload-preview fileupload-exists thumbnail\"></div>\n                                                <div>\n                                                    <span class=\"btn btn-file\">\n                                                        <span class=\"fileupload-new\">Select image</span>\n                                                        <span class=\"fileupload-exists\">Change</span>\n                                                        <input type=\"file\" class=\"default\">\n                                                    </span>\n                                                    <a data-dismiss=\"fileupload\" class=\"btn fileupload-exists\" href=\"#\">Remove</a>\n                                                </div>\n                                            </div>\n                                            <span class=\"label label-important\">NOTE!</span>\n                                            <span>\n                                                Attached image thumbnail is\n                                                supported in Latest Firefox, Chrome, Opera,\n                                                Safari and Internet Explorer 10 only\n                                            </span>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN  widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> CKEditor</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">CKEditor</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span12 ckeditor\" name=\"editor1\" rows=\"6\"></textarea>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END EXTRAS widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN  widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> WYSIWYG Editor</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">WYSIWYG Editor</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span12 wysihtmleditor5\" rows=\"5\"></textarea>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END EXTRAS widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.2.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\" src=\"assets/ckeditor/ckeditor.js\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap/js/bootstrap-fileupload.js\"></script>\n    <script src=\"js/jquery.blockui.js\"></script>\n\n    <script src=\"../../../../code.jquery.com/ui/1.10.3/jquery-ui.js\"></script>\n    <script src=\"js/jQuery.dualListBox-1.3.js\" language=\"javascript\" type=\"text/javascript\"></script>\n\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/clockface/js/clockface.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/jquery-tags-input/jquery.tagsinput.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-datepicker/js/bootstrap-datepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-daterangepicker/date.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-daterangepicker/daterangepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-timepicker/js/bootstrap-timepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-inputmask/bootstrap-inputmask.min.js\"></script>\n    <script src=\"assets/fancybox/source/jquery.fancybox.pack.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n\n\n    <!--common script for all pages-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--script for this page-->\n    <script src=\"js/form-component.js\"></script>\n    <!-- END JAVASCRIPTS -->\n\n    <script language=\"javascript\" type=\"text/javascript\">\n\n        $(function () {\n\n            $.configureBoxes();\n\n        });\n\n    </script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/form_layout.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Form Layouts</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Mini Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-mini\" class=\"input-mini\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Small Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-small\" class=\"input-small\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Meduam Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-medium\" class=\"input-medium\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-large\" class=\"input-large\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xLarge Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-xlarge\" class=\"input-xlarge\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xxLarge Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-xxlarge\" class=\"input-xxlarge\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Disabled Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"medium\" type=\"text\" placeholder=\"Disabled input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Readonly Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"medium\" readonly type=\"text\" placeholder=\"Readonly input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Small Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-small m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Medium Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-medium m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-large m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Radio Buttons</label>\n                                        <div class=\"controls\">\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option1\" />\n                                                Option 1\n                                            </label>\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option2\" checked />\n                                                Option 2\n                                            </label>\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option2\" />\n                                                Option 3\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Radio Buttons</label>\n                                        <div class=\"controls\">\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option1\" />\n                                                Option 1\n                                            </label>\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option2\" checked />\n                                                Option 2\n                                            </label>\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option2\" />\n                                                Option 3\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Checkbox</label>\n                                        <div class=\"controls\">\n                                            <label class=\"checkbox\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 1\n                                            </label>\n                                            <label class=\"checkbox\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 2\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Checkbox</label>\n                                        <div class=\"controls\">\n                                            <label class=\"checkbox line\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 1\n                                            </label>\n                                            <label class=\"checkbox line\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 2\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-medium\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-large\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xLarge Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-xlarge\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xxLarge Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-xxlarge\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn blue\"><i class=\"icon-ok\"></i> Save</button>\n                                        <button type=\"button\" class=\"btn\"><i class=\" icon-remove\"></i> Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Label above input (grid)\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-vertical\" method=\"get\" action=\"#\">\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span1\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 1</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span11\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 11</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span2\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 2</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 10</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span9\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 9</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span8\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 8</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span5\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 5</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span7\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 7</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 6</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 6</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/form_validation.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-key\"></i> Basic validations </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group success\">\n                                        <label class=\"control-label\" for=\"inputSuccess\">First Name  </label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputSuccess\" />\n                                            <span class=\"help-inline \">Successfully done</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group error\">\n                                        <label class=\"control-label\" for=\"inputError\">Last Name</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputError\" />\n                                            <span class=\"help-inline\">Aha you gave a wrong info</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group warning\">\n                                        <label class=\"control-label\" for=\"inputWarning\">Email Address</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputWarning\" />\n                                            <span class=\"help-inline\">Something went wrong</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group success\">\n                                        <label class=\"control-label\">Password</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"Success input!\" class=\"input-success tooltips\">\n                                                <i class=\"icon-ok\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group error\">\n                                        <label class=\"control-label\">Confirm Password</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"please write a valid email\" class=\"input-error tooltips\">\n                                                <i class=\"icon-exclamation-sign\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group warning\">\n                                        <label class=\"control-label\">Phone Number</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"please write a valid email\" class=\"input-warning tooltips\">\n                                                <i class=\"icon-warning-sign\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Save</button>\n                                        <button type=\"button\" class=\"btn\">Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Form Validation</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"collapse\"></a>\n                                    <a href=\"#portlet-config\" data-toggle=\"modal\" class=\"config\"></a>\n                                    <a href=\"javascript:;\" class=\"reload\"></a>\n                                    <a href=\"javascript:;\" class=\"remove\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n\n                                <form class=\"cmxform form-horizontal\" id=\"commentForm\" method=\"get\" action=\"\">\n                                    <div class=\"control-group \">\n                                        <label for=\"cname\" class=\"control-label\">Name (required)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"cname\" name=\"name\" minlength=\"2\" type=\"text\" required />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"cemail\" class=\"control-label\">E-Mail (required)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"cemail\" type=\"email\" name=\"email\" required />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"curl\" class=\"control-label\">URL (optional)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"curl\" type=\"url\" name=\"url\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"ccomment\" class=\"control-label\">Your Comment (required)</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span6 \" id=\"ccomment\" name=\"comment\" required></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button class=\"btn btn-success\" type=\"submit\">Save</button>\n                                        <button class=\"btn\" type=\"button\">Cancel</button>\n                                    </div>\n\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Advanced form Validation</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"collapse\"></a>\n                                    <a href=\"#portlet-config\" data-toggle=\"modal\" class=\"config\"></a>\n                                    <a href=\"javascript:;\" class=\"reload\"></a>\n                                    <a href=\"javascript:;\" class=\"remove\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"cmxform form-horizontal\" id=\"signupForm\" method=\"get\" action=\"\">\n                                    <div class=\"control-group \">\n                                        <label for=\"firstname\" class=\"control-label\">Firstname</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"firstname\" name=\"firstname\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"lastname\" class=\"control-label\">Lastname</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"lastname\" name=\"lastname\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"username\" class=\"control-label\">Username</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"username\" name=\"username\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"password\" class=\"control-label\">Password</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"password\" name=\"password\" type=\"password\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"confirm_password\" class=\"control-label\">Confirm Password</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"email\" class=\"control-label\">Email</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"email\" name=\"email\" type=\"email\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"agree\" class=\"control-label\">Agree to Our Policy</label>\n                                        <div class=\"controls\">\n                                            <input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"newsletter\" class=\"control-label\">Receive the Newsletter</label>\n                                        <div class=\"controls\">\n                                            <input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-actions\">\n                                        <button class=\"btn btn-success\" type=\"submit\">Save</button>\n                                        <button class=\"btn\" type=\"button\">Cancel</button>\n                                    </div>\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"js/jquery.validate.min.js\"></script>\n    <script type=\"text/javascript\" src=\"js/additional-methods.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/form-validation-script.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/form_wizard.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/uniform/css/uniform.default.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget box green\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Wizard With Progress Bar Step 1 of Step 4\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div id=\"pills\" class=\"custom-wizard-pills\">\n                                        <ul>\n                                            <li><a href=\"#pills-tab1\" data-toggle=\"tab\">Step 1</a></li>\n                                            <li><a href=\"#pills-tab2\" data-toggle=\"tab\">Step 2</a></li>\n                                            <li><a href=\"#pills-tab3\" data-toggle=\"tab\">Step 3</a></li>\n                                            <li><a href=\"#pills-tab4\" data-toggle=\"tab\">Step 4</a></li>\n                                        </ul>\n                                        <div class=\"progress progress-success progress-striped active\">\n                                            <div class=\"bar\"></div>\n                                        </div>\n                                        <div class=\"tab-content\">\n                                            <div class=\"tab-pane\" id=\"pills-tab1\">\n                                                <h3>Fill up step 1</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Username</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\">\n                                                        <span class=\"help-inline\">Give your username</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Email</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"password\" class=\"span6\">\n                                                        <span class=\"help-inline\">Give your Email</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab2\">\n                                                <h3>Fill up step 2</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">First Name</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your First Name</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Last Name</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your Last Name</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Phone Number</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your phone number</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab3\">\n                                                <h3>Fill up step 3</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Text Input</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\"></span>\n                                                    </div>\n                                                </div>\n\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Checkbox and radio Options</label>\n                                                    <div class=\"controls\">\n                                                        <label class=\"checkbox line\">\n                                                            <input type=\"checkbox\" value=\"\" /> Lorem ipsum dolor imti\n                                                        </label>\n                                                        <label class=\"radio line\">\n                                                            <input type=\"radio\" value=\"\" /> Duis autem vel eum iriure dolor in hendrerit\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab4\">\n                                                <h3>Final step</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Fullname:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">Jhon Doe </span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Email:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">dkmosa@gmail.com</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Phone:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">123456789</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\"></label>\n                                                    <div class=\"controls\">\n                                                        <label class=\"checkbox\">\n                                                            <input type=\"checkbox\" value=\"\" /> I confirm my steps\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <ul class=\"pager wizard\">\n                                                <li class=\"previous first\"><a href=\"javascript:;\">First</a></li>\n                                                <li class=\"previous\"><a href=\"javascript:;\">Previous</a></li>\n                                                <li class=\"next last\"><a href=\"javascript:;\">Last</a></li>\n                                                <li class=\"next\"><a href=\"javascript:;\">Next</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"assets/bootstrap-wizard/jquery.bootstrap.wizard.min.js\"></script>\n    <script src=\"js/jquery.blockui.js\"></script>\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/form-wizard.js\"></script>\n\n    <script>\n        $(function () {\n            $(\" input[type=radio], input[type=checkbox]\").uniform();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/gallery.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/metr-folio/css/metro-gallery.css\" media=\"screen\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-camera\"></i> Gallery</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"megaexamples\">\n                                    <!--  FILTER STYLED  -->\n                                    <div class=\"filter_padder\">\n                                        <div class=\"filter_wrapper\">\n                                            <div class=\"filter selected\" data-category=\"cat-all\">ALL</div>\n                                            <div class=\"filter\" data-category=\"cat-one\">CATEGORY ONE</div>\n                                            <div class=\"filter\" data-category=\"cat-two\">CATEGORY TWO</div>\n                                            <div class=\"filter\" data-category=\"cat-three\">CATEGORY THREE</div>\n                                            <div class=\"filter last-child\" data-category=\"cat-four\">CATEGORY FOUR</div>\n                                            <div class=\"clear\"></div>\n                                        </div>\n                                    </div>\n                                    <div class=\"clear\"></div>\n                                    <div class=\"metro-gallery\">\n                                        <!-- The GRID System -->\n                                        <div class=\"metro-gal-container noborder norounded dark-bg-entries\">\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-1\" data-src=\"img/gallery/image1.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-right mega-portrait-bottom mega-red\">\n                                                    <!-- The Content Part with Hidden Overflow Container -->\n\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/grid.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Good for Nothing</div>\n                                                    <div class=\"mega-date\">Lorem ipsun dolor</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...<br /><br /><a href=\"#\">Read the whole story</a></p>\n\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-red\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image1.jpg\" title=\"Good for Nothing\"><div class=\"mega-view mega-red\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-2\" data-src=\"img/gallery/image2.jpg\" data-width=\"780\" data-height=\"385\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-orange mega-white \">\n\n                                                    <div class=\"mega-title\">Might is Right</div>\n                                                    <div class=\"mega-date\">loerm sum doleo</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image2.jpg\" title=\"Too Much !\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-3\" data-src=\"img/gallery/image3.jpg\" data-width=\"780\" data-height=\"485\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/flexible.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Honesty</div>\n                                                    <div class=\"mega-date\">Lorem ispusn ament</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image3.jpg\" title=\"Might is right\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-4\" data-src=\"img/gallery/image4.jpg\" data-width=\"680\" data-height=\"685\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-black \">\n                                                    <div class=\"mega-title\">Hi this is Sam</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image4.jpg\" title=\"Do the Best\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-5\" data-src=\"img/gallery/image5.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/light.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Fantastic Four</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons \">\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image5.jpg\" title=\"Awesome Creativity\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-6\" data-src=\"img/gallery/image6.jpg\" data-width=\"580\" data-height=\"435\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/nike.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Rainy Day</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat....</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image6.jpg\" title=\"Be Good \"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-7\" data-src=\"img/gallery/image7.jpg\" data-width=\"780\" data-height=\"385\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image7.jpg\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-8\" data-src=\"img/gallery/image8.jpg\" data-width=\"780\" data-height=\"525\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image8.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-9\" data-src=\"img/gallery/image9.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image9.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-11\" data-src=\"img/gallery/image11.jpg\" data-width=\"780\" data-height=\"565\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image11.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-12\" data-src=\"img/gallery/image12.jpg\" data-width=\"780\" data-height=\"525\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\">Metro Style</div>\n                                                    <div class=\"mega-date\">Just one thing thats possible</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image12.jpg\" title=\"Lorem ipsum dloe\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-10\" data-src=\"img/gallery/image10.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-blue \">\n                                                    <div class=\"mega-title\">Get Back to Work</div>\n                                                    <p>\n                                                        Lorem ipsum dolor sit amet, consetetur sadipscing elitr...\n                                                        <img src=\"img/gallery/icons/runner.png\" alt=\"\" style=\"padding-top: 15px;\">\n                                                    </p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image10.jpg\" title=\"Get A Move On\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-13\" data-src=\"img/gallery/image14.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image14.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-14\" data-src=\"img/gallery/image16.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-red\">\n                                                    <div class=\"mega-title\">Summer Wine</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image16.jpg\" title=\"Good Morning\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-15\" data-src=\"img/gallery/image13.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image13.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-25\" data-src=\"img/gallery/image15.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/mobile.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Hi There.</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image15.jpg\" title=\"Mobile Optimized\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-26\" data-src=\"img/gallery/image18.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image18.jpg\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-27\" data-src=\"img/gallery/image17.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-green\">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/leaf.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Enjoy Youseft !</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image17.jpg\" title=\"Good Day\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-28\" data-src=\"img/gallery/image1.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-red\">\n                                                    <!-- The Content Part with Hidden Overflow Container -->\n\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/grid.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Lorem ipsum dolor set ament</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...<br /><br /><a href=\"#\">Read the whole story</a></p>\n\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons mega-square-top mega-landscape-right mega-portrait-bottom\">\n                                                    <div class=\"mega-link mega-red\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image1.jpg\" title=\"Might is right\"><div class=\"mega-view mega-red\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-29\" data-src=\"img/gallery/image2.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-orange mega-white \">\n\n                                                    <div class=\"mega-title\">Sumon Mosa</div>\n                                                    <div class=\"mega-date\">dolro ispum imit</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image2.jpg\" title=\"Might is right\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-3\" data-src=\"img/gallery/image3.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/flexible.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Flexibility</div>\n                                                    <div class=\"mega-date\">Never seen before</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image3.jpg\" title=\"Be Happy\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-4\" data-src=\"img/gallery/image4.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-black \">\n                                                    <div class=\"mega-title\">Hi There !</div>\n                                                    <div class=\"mega-date\">And so should you</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image4.jpg\" title=\"Do the Best\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-5\" data-src=\"img/gallery/image5.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-right mega-portrait-bottom mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/light.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Creative Ideas</div>\n                                                    <div class=\"mega-date\">Good for Nothing</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image5.jpg\" title=\"Awesome Creativity\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-6\" data-src=\"img/gallery/image6.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/nike.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Do the Best</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi....</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image6.jpg\" title=\"Be Good \"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-7\" data-src=\"img/gallery/image7.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image7.jpg\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-8\" data-src=\"img/gallery/image8.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image8.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-9\" data-src=\"img/gallery/image9.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image9.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-11\" data-src=\"img/gallery/image11.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image11.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-12\" data-src=\"img/gallery/image12.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\">Metro Style</div>\n                                                    <div class=\"mega-date\">As you so so you rep</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image12.jpg\" title=\"Lorem ipsum dloe\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-10\" data-src=\"img/gallery/image10.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-blue \">\n                                                    <div class=\"mega-title\">Out or Order</div>\n                                                    <p>\n                                                        Lorem ipsum dolor sit amet, consetetur sadipscing elitr...\n                                                        <img src=\"img/gallery/icons/runner.png\" alt=\"\" style=\"padding-top: 15px;\">\n                                                    </p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image10.jpg\" title=\"Get A Move On\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-13\" data-src=\"img/gallery/image14.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image14.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-14\" data-src=\"img/gallery/image16.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-red\">\n                                                    <div class=\"mega-title\">Might is Right</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image16.jpg\" title=\"Good Morning\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-15\" data-src=\"img/gallery/image13.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image13.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-25\" data-src=\"img/gallery/image15.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-top mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/mobile.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Be Honest</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image15.jpg\" title=\"Mobile Optimized\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-26\" data-src=\"img/gallery/image18.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image18.jpg\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-27\" data-src=\"img/gallery/image17.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/leaf.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Hi Boss !</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image17.jpg\" title=\"Good Day\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n\n    <script src=\"assets/fancybox/source/jquery.fancybox.pack.js\"></script>\n\n    <!-- MEGAFOLIO PRO GALLERY JS FILES  -->\n    <script type=\"text/javascript\" src=\"assets/metr-folio/js/jquery.metro-gal.plugins.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/metr-folio/js/jquery.metro-gal.megafoliopro.js\"></script>\n\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script type=\"text/javascript\">\n\n        jQuery(document).ready(function () {\n\n            var api = jQuery('.metro-gal-container').megafoliopro(\n                    {\n                        filterChangeAnimation: \"pagebottom\",\t\t\t// fade, rotate, scale, rotatescale, pagetop, pagebottom,pagemiddle\n                        filterChangeSpeed: 400,\t\t\t\t\t// Speed of Transition\n                        filterChangeRotate: 99,\t\t\t\t\t// If you ue scalerotate or rotate you can set the rotation (99 = random !!)\n                        filterChangeScale: 0.6,\t\t\t\t\t// Scale Animation Endparameter\n                        delay: 20,\n                        defaultWidth: 980,\n                        paddingHorizontal: 10,\n                        paddingVertical: 10,\n                        layoutarray: [9, 11, 5, 3, 7, 12, 4, 6, 13]\t\t// Defines the Layout Types which can be used in the Gallery. 2-9 or \"random\". You can define more than one, like {5,2,6,4} where the first items will be orderd in layout 5, the next comming items in layout 2, the next comming items in layout 6 etc... You can use also simple {9} then all item ordered in Layout 9 type.\n                    });\n\n            // FANCY BOX ( LIVE BOX) WITH MEDIA SUPPORT\n            jQuery(\".fancybox\").fancybox();\n\n            // THE FILTER FUNCTION\n            jQuery('.filter').click(function () {\n                jQuery('.filter').each(function () { jQuery(this).removeClass(\"selected\") });\n                api.megafilter(jQuery(this).data('category'));\n                jQuery(this).addClass(\"selected\");\n            });\n\n\n        });\n\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/general.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n <!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/gritter/css/jquery.gritter.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN NOTIFICATION PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-bar-chart\"></i> Notifications</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"alert alert-block alert-warning fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Warning!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vi\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-warning fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Warning!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vi\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-success fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Success!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-success fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Success!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-info fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Info!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-info fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Info!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-error fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Error!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-error fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Error!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END NOTIFICATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN NAVIGATION PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Navigation</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!--BEGIN BASIC NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Basic navbar</h4>\n                                    <div class=\"navbar navbar-static\" id=\"\">\n                                        <div class=\"navbar-inner\">\n                                            <div style=\"width: auto;\" class=\"container\">\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <ul role=\"navigation\" class=\"nav\">\n                                                    <li class=\"active\">\n                                                        <a href=\"#\">Home</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                </ul>\n                                                <ul class=\"nav pull-right\">\n                                                    <li>\n                                                        <a href=\"#\">Sing In</a>\n                                                    </li>\n                                                </ul>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <pre>&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Basic navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar navbar-static&quot; id=&quot;&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div style=&quot;width: auto;&quot; class=&quot;container&quot;&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;ul role=&quot;navigation&quot; class=&quot;nav&quot;&gt;\n                    &lt;li class=&quot;active&quot;&gt;\n                        &lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;ul class=&quot;nav pull-right&quot;&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Sing In&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <!--END BASIC NAV-->\n                                <!--BEGIN DROPDOWN NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Dropdown navbar</h4>\n                                    <div class=\"navbar navbar-static\" id=\"navbar-example\">\n                                        <div class=\"navbar-inner\">\n                                            <div style=\"width: auto;\" class=\"container\">\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <ul role=\"navigation\" class=\"nav\">\n                                                    <li class=\"dropdown\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" href=\"#\" id=\"drop1\">Dropdown <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop1\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"../../../../google.com/default.htm\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#anotherAction\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li class=\"dropdown\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" id=\"drop2\" href=\"#\">Dropdown 2 <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop2\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                                <ul class=\"nav pull-right\">\n                                                    <li class=\"dropdown\" id=\"fat-menu\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" id=\"drop3\" href=\"#\">Dropdown 3 <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop3\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END DROPDOWN NAV-->\n                                <pre>&lt;!--BEGIN DROPDOWN NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Dropdown navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar navbar-static&quot; id=&quot;navbar-example&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div style=&quot;width: auto;&quot; class=&quot;container&quot;&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;ul role=&quot;navigation&quot; class=&quot;nav&quot;&gt;\n                    &lt;li class=&quot;dropdown&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; href=&quot;#&quot; id=&quot;drop1&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop1&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;../../../../google.com/default.htm&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#anotherAction&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                    &lt;li class=&quot;dropdown&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; id=&quot;drop2&quot; href=&quot;#&quot;&gt;Dropdown 2 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop2&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;ul class=&quot;nav pull-right&quot;&gt;\n                    &lt;li class=&quot;dropdown&quot; id=&quot;fat-menu&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; id=&quot;drop3&quot; href=&quot;#&quot;&gt;Dropdown 3 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop3&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;!--END DROPDOWN NAV--&gt;\n</pre>\n                                <!--BEGIN RESPONSIVE NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Responsive navbar</h4>\n                                    <div class=\"navbar\">\n                                        <div class=\"navbar-inner\">\n                                            <div class=\"container\">\n                                                <a data-target=\".navbar-responsive-collapse\" data-toggle=\"collapse\" class=\"btn btn-navbar\">\n                                                    <span class=\"icon-bar\"></span>\n                                                    <span class=\"icon-bar\"></span>\n                                                    <span class=\"icon-bar\"></span>\n                                                </a>\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <div class=\"nav-collapse collapse navbar-responsive-collapse\">\n                                                    <ul class=\"nav\">\n                                                        <li class=\"active\"><a href=\"#\">Home</a></li>\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li class=\"dropdown\">\n                                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                                            <ul class=\"dropdown-menu\">\n                                                                <li><a href=\"#\">Action</a></li>\n                                                                <li><a href=\"#\">Another action</a></li>\n                                                                <li><a href=\"#\">Something else here</a></li>\n                                                                <li class=\"divider\"></li>\n                                                                <li class=\"nav-header\">Nav header</li>\n                                                                <li><a href=\"#\">Separated link</a></li>\n                                                                <li><a href=\"#\">One more separated link</a></li>\n                                                            </ul>\n                                                        </li>\n                                                    </ul>\n                                                    <form action=\"\" class=\"navbar-search pull-left\">\n                                                        <input type=\"text\" placeholder=\"Search\" class=\"search-query input-medium\">\n                                                    </form>\n                                                    <ul class=\"nav pull-right\">\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li class=\"divider-vertical\"></li>\n                                                        <li class=\"dropdown\">\n                                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                                            <ul class=\"dropdown-menu\">\n                                                                <li><a href=\"#\">Action</a></li>\n                                                                <li><a href=\"#\">Another action</a></li>\n                                                                <li><a href=\"#\">Something else here</a></li>\n                                                                <li class=\"divider\"></li>\n                                                                <li><a href=\"#\">Separated link</a></li>\n                                                            </ul>\n                                                        </li>\n                                                    </ul>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END RESPONSIVE NAV-->\n                                <pre>&lt;!--BEGIN RESPONSIVE NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Responsive navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div class=&quot;container&quot;&gt;\n                &lt;a data-target=&quot;.navbar-responsive-collapse&quot; data-toggle=&quot;collapse&quot; class=&quot;btn btn-navbar&quot;&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                &lt;/a&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;div class=&quot;nav-collapse collapse navbar-responsive-collapse&quot;&gt;\n                    &lt;ul class=&quot;nav&quot;&gt;\n                        &lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li class=&quot;dropdown&quot;&gt;\n                            &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; href=&quot;#&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                            &lt;ul class=&quot;dropdown-menu&quot;&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                                &lt;li class=&quot;divider&quot;&gt;&lt;/li&gt;\n                                &lt;li class=&quot;nav-header&quot;&gt;Nav header&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;One more separated link&lt;/a&gt;&lt;/li&gt;\n                            &lt;/ul&gt;\n                        &lt;/li&gt;\n                    &lt;/ul&gt;\n                    &lt;form action=&quot;&quot; class=&quot;navbar-search pull-left&quot;&gt;\n                        &lt;input type=&quot;text&quot; placeholder=&quot;Search&quot; class=&quot;search-query input-medium&quot;&gt;\n                    &lt;/form&gt;\n                    &lt;ul class=&quot;nav pull-right&quot;&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li class=&quot;divider-vertical&quot;&gt;&lt;/li&gt;\n                        &lt;li class=&quot;dropdown&quot;&gt;\n                            &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; href=&quot;#&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                            &lt;ul class=&quot;dropdown-menu&quot;&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                                &lt;li class=&quot;divider&quot;&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                            &lt;/ul&gt;\n                        &lt;/li&gt;\n                    &lt;/ul&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <!--BEGIN PILLS NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Pills navbar</h4>\n                                    <ul class=\"nav nav-pills\">\n                                        <li class=\"active\"><a href=\"#\">Regular link</a></li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop4\" class=\"dropdown-toggle\">Dropdown <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop4\" role=\"menu\" class=\"dropdown-menu\" id=\"menu1\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop5\" class=\"dropdown-toggle\">Dropdown 2 <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop5\" role=\"menu\" class=\"dropdown-menu\" id=\"menu2\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop6\" class=\"dropdown-toggle\">Dropdown 3 <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop5\" role=\"menu\" class=\"dropdown-menu\" id=\"menu3\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                    </ul>\n                                </div>\n                                <!--END PILLS NAV-->\n                                <pre>&lt;!--BEGIN PILLS NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Pills navbar&lt;/h4&gt;\n    &lt;ul class=&quot;nav nav-pills&quot;&gt;\n        &lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;#&quot;&gt;Regular link&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop4&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop4&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu1&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop5&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown 2 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop5&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu2&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop6&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown 3 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop5&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu3&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;!--END PILLS NAV--&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END NAVIGATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN ALERTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Alerts</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"alert\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Warning!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Warning!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-success\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Success!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-success&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Success!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-info\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Info!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-info&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Info!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-error\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Error!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-error&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Error!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END ALERTS PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN PROGRESS BARS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Basic Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-success\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-success&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-warning\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-warning&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-danger\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-danger&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <h4>Stacked</h4>\n                                <div class=\"progress\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped active\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped active&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PROGRESS BARS PORTLET-->\n                        <!-- BEGIN PROGRESS BARS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Striped Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress progress-striped\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-success\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-success&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-warning\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-warning&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-danger\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-danger&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PROGRESS BARS PORTLET-->\n                        <!-- BEGIN ANIMATED PROGRESS BARS PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Animated Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress progress-striped active\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped active&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-success active\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-success active&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-warning active\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-warning active&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-danger active\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-danger active&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END ANIMATED PROGRESS BARS PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN TOOLTIPS PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Tooltips</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    Tight pants next level keffiyeh\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"Default tooltips\">you probably</a> haven't heard of them.\n                                    Photo booth beard raw denim letterpress vegan messenger bag stumptown.\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"Another tooltips\">have a</a>\n                                    terry richardson vinyl chambray.\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"The last tip!\">twitter handle</a>\n                                    freegan cred raw denim single-origin coffee viral.\n                                </p>\n                                <p class=\"\">\n                                    <button class=\"btn tooltips\" data-placement=\"top\" data-original-title=\"tooltips in top\">Top</button>\n                                    <button class=\"btn tooltips\" data-placement=\"left\" data-original-title=\"tooltips in left\">Left</button>\n                                    <button class=\"btn tooltips\" data-placement=\"right\" data-original-title=\"tooltips in right\">Right</button>\n                                    <button class=\"btn tooltips\" data-placement=\"bottom\" data-original-title=\"tooltips in bottom\">Bottom</button>\n                                </p>\n                                <pre>&lt;p&gt;\n    Tight pants next level keffiyeh\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;Default tooltips&quot;&gt;you probably&lt;/a&gt; haven't heard of them.\n    Photo booth beard raw denim letterpress vegan messenger bag stumptown.\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;Another tooltips&quot;&gt;have a&lt;/a&gt;\n    terry richardson vinyl chambray.\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;The last tip!&quot;&gt;twitter handle&lt;/a&gt;\n    freegan cred raw denim single-origin coffee viral.\n&lt;/p&gt;\n&lt;p class=&quot;&quot;&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;top&quot; data-original-title=&quot;tooltips in top&quot;&gt;Top&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;left&quot; data-original-title=&quot;tooltips in left&quot;&gt;Left&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;right&quot; data-original-title=&quot;tooltips in right&quot;&gt;Right&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;bottom&quot; data-original-title=&quot;tooltips in bottom&quot;&gt;Bottom&lt;/button&gt;\n&lt;/p&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END TOOLTIPS PORTLET-->\n                        <!-- BEGIN POPOVERS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Popovers</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    Tight pants next level keffiyeh\n                                    <a href=\"javascript:;\" class=\"popovers\" data-placement=\"left\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"Default popovers\">trigger me on click</a> haven't heard of them.\n                                    Photo booth beard raw denim letterpress vegan messenger bag stumptown. loem ipsum dolor\n                                    <a href=\"javascript:;\" class=\"popovers\" data-placement=\"top\" data-trigger=\"hover\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"Another popovers\">trigger me on hover</a>\n                                    terry richardson vinyl chambray. Beard stumptown. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa.\n                                </p>\n                                <p class=\"\">\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"top\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in top\">Top</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"left\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in left\">Left</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"right\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in right\">Right</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"bottom\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in bottom\">Bottom</button>\n                                </p>\n                                <pre>&lt;p&gt;\n    Tight pants next level keffiyeh\n    &lt;a href=&quot;javascript:;&quot; class=&quot;popovers&quot; data-placement=&quot;left&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;Default popovers&quot;&gt;trigger me on click&lt;/a&gt; haven't heard of them.\n    Photo booth beard raw denim letterpress vegan messenger bag stumptown. loem ipsum dolor\n    &lt;a href=&quot;javascript:;&quot; class=&quot;popovers&quot; data-placement=&quot;top&quot; data-trigger=&quot;hover&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;Another popovers&quot;&gt;trigger me on hover&lt;/a&gt;\n    terry richardson vinyl chambray. Beard stumptown. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa.\n&lt;/p&gt;\n&lt;p class=&quot;&quot;&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;top&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in top&quot;&gt;Top&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;left&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in left&quot;&gt;Left&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;right&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in right&quot;&gt;Right&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;bottom&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in bottom&quot;&gt;Bottom&lt;/button&gt;\n&lt;/p&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END POPOVERS PORTLET-->\n                        <!-- BEGIN MODAL DIALOG PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Modal Dialogs</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <!-- Button to trigger modal -->\n                                <a href=\"#myModal1\" role=\"button\" class=\"btn btn-primary\" data-toggle=\"modal\">Dialog</a>\n                                <a href=\"#myModal3\" role=\"button\" class=\"btn btn-warning\" data-toggle=\"modal\">Confirm</a>\n                                <a href=\"#myModal4\" role=\"button\" class=\"btn btn-success\" data-toggle=\"modal\">Success</a>\n                                <a href=\"#myModal2\" role=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\">Alert</a>\n                                <!-- Modal -->\n                                <div id=\"myModal1\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel1\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel1\">Modal Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button class=\"btn btn-primary\">Save</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal2\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel2\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel2\">Alert Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button data-dismiss=\"modal\" class=\"btn btn-primary\">OK</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal3\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel3\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel3\">Confirm Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button data-dismiss=\"modal\" class=\"btn btn-primary\">Confirm</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal4\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel3\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel4\">Success Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button data-dismiss=\"modal\" class=\"btn btn-success\">Success</button>\n                                    </div>\n                                </div>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;!-- Button to trigger modal --&gt;\n&lt;a href=&quot;#myModal1&quot; role=&quot;button&quot; class=&quot;btn btn-primary&quot; data-toggle=&quot;modal&quot;&gt;Dialog&lt;/a&gt;\n&lt;a href=&quot;#myModal3&quot; role=&quot;button&quot; class=&quot;btn btn-warning&quot; data-toggle=&quot;modal&quot;&gt;Confirm&lt;/a&gt;\n&lt;a href=&quot;#myModal4&quot; role=&quot;button&quot; class=&quot;btn btn-success&quot; data-toggle=&quot;modal&quot;&gt;Success&lt;/a&gt;\n&lt;a href=&quot;#myModal2&quot; role=&quot;button&quot; class=&quot;btn btn-danger&quot; data-toggle=&quot;modal&quot;&gt;Alert&lt;/a&gt;\n&lt;!-- Modal --&gt;\n&lt;div id=&quot;myModal1&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel1&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel1&quot;&gt;Modal Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button class=&quot;btn btn-primary&quot;&gt;Save&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal2&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel2&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel2&quot;&gt;Alert Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-primary&quot;&gt;OK&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal3&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel3&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel3&quot;&gt;Confirm Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-primary&quot;&gt;Confirm&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal4&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel3&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel4&quot;&gt;Success Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-success&quot;&gt;Success&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END MODAL DIALOG PORTLET-->\n                        <!-- BEGIN PULSATE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pulsate</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <a href=\"javascript:;\" class=\"btn\" id=\"pulsate-regular\">Pulsate regular</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"pulsate-once\">Pulsate once</a>\n                                <a href=\"javascript:;\" class=\"btn btn-info\" id=\"pulsate-hover\">Pulsate hover</a>\n                                <div class=\"space10 visible-phone visible-tablet\"></div>\n                                <a href=\"javascript:;\" class=\"btn btn-danger\" id=\"pulsate-crazy\">Crazy pulsate :)</a>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn&quot; id=&quot;pulsate-regular&quot;&gt;Pulsate regular&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;pulsate-once&quot;&gt;Pulsate once&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-info&quot; id=&quot;pulsate-hover&quot;&gt;Pulsate hover&lt;/a&gt;\n&lt;div class=&quot;space10 visible-phone visible-tablet&quot;&gt;&lt;/div&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-danger&quot; id=&quot;pulsate-crazy&quot;&gt;Crazy pulsate :)&lt;/a&gt;\n</pre>\n                            </div>\n                            \n                        </div>\n                        <!-- END PULSATE PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!--BEGIN LABEL & BADGE PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Labels and Badges</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table table-bordered table-striped\">\n                                    <thead>\n                                        <tr>\n                                            <th>Name</th>\n                                            <th>Badges</th>\n                                            <th>Labels</th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr>\n                                            <td>\n                                                Default\n                                            </td>\n                                            <td>\n                                                <span class=\"badge\">1</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label\">Default</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Success\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-success\">2</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-success\">Success</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Warning\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-warning\">4</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-warning\">Warning</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Important\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-important\">6</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-important\">Important</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Info\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-info\">8</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-info\">Info</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Inverse\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-inverse\">10</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-inverse\">Inverse</span>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <pre>&lt;table class=&quot;table table-bordered table-striped&quot;&gt;\n    &lt;thead&gt;\n        &lt;tr&gt;\n            &lt;th&gt;Name&lt;/th&gt;\n            &lt;th&gt;Badges&lt;/th&gt;\n            &lt;th&gt;Labels&lt;/th&gt;\n        &lt;/tr&gt;\n    &lt;/thead&gt;\n    &lt;tbody&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Default\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge&quot;&gt;1&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label&quot;&gt;Default&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Success\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-success&quot;&gt;2&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-success&quot;&gt;Success&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Warning\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-warning&quot;&gt;4&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-warning&quot;&gt;Warning&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Important\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-important&quot;&gt;6&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-important&quot;&gt;Important&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Info\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-info&quot;&gt;8&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-info&quot;&gt;Info&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Inverse\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-inverse&quot;&gt;10&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-inverse&quot;&gt;Inverse&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n    &lt;/tbody&gt;\n&lt;/table&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!--END LABEL & BADGE PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN PAGINATION PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pagination</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"pagination pagination-large\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li class=\"hidden-phone\"><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-small\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini pagination-centered\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini pagination-right\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <pre>&lt;div class=&quot;pagination pagination-large&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=&quot;hidden-phone&quot;&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-small&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini pagination-centered&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini pagination-right&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PAGINATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN GRITTER NOTIFICATIONS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Gritter Notifications</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <a href=\"javascript:;\" class=\"btn \" id=\"add-regular\">Regular</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"add-sticky\">Sticky</a>\n                                <a href=\"javascript:;\" class=\"btn btn-info\" id=\"add-without-image\">Imageless</a>\n                                <div class=\"space10 visible-phone visible-tablet\"></div>\n                                <a href=\"javascript:;\" class=\"btn btn-warning\" id=\"add-gritter-light\">Light</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"add-max\">Max of 3</a>\n                                <a href=\"#\" class=\"btn btn-info\" id=\"remove-all\">Remove all</a>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn &quot; id=&quot;add-regular&quot;&gt;Regular&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;add-sticky&quot;&gt;Sticky&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-info&quot; id=&quot;add-without-image&quot;&gt;Imageless&lt;/a&gt;\n&lt;div class=&quot;space10 visible-phone visible-tablet&quot;&gt;&lt;/div&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-warning&quot; id=&quot;add-gritter-light&quot;&gt;Light&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;add-max&quot;&gt;Max of 3&lt;/a&gt;\n&lt;a href=&quot;#&quot; class=&quot;btn btn-info&quot; id=&quot;remove-all&quot;&gt;Remove all&lt;/a&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END GRITTER NOTIFICATIONS PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN PAGER PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pager</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <ul class=\"pager\">\n                                    <li><a href=\"#\">Previous</a></li>\n                                    <li><a href=\"#\">Next</a></li>\n                                </ul>\n                                <ul class=\"pager\">\n                                    <li class=\"previous\">\n                                        <a href=\"#\">&larr; Older</a>\n                                    </li>\n                                    <li class=\"next\">\n                                        <a href=\"#\">Newer &rarr;</a>\n                                    </li>\n                                </ul>\n                                <pre>&lt;ul class=&quot;pager&quot;&gt;\n    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Previous&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Next&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n&lt;ul class=&quot;pager&quot;&gt;\n    &lt;li class=&quot;previous&quot;&gt;\n        &lt;a href=&quot;#&quot;&gt;&amp;larr; Older&lt;/a&gt;\n    &lt;/li&gt;\n    &lt;li class=&quot;next&quot;&gt;\n        &lt;a href=&quot;#&quot;&gt;Newer &amp;rarr;&lt;/a&gt;\n    &lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PAGER PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n            \n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/general_portlet.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget red-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget white-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget gray-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget green-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-inverse btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <a href=\"#\" class=\"btn btn-warning btn-mini\"><i class=\"icon-plus\"></i> Add</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-2\">\n                                    <strong>Scroll is always visible</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-3\">\n                                    <strong>Scroll and rail are always visible</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <a href=\"#\" class=\"btn btn-primary\"><i class=\"icon-plus\"></i> Add</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"pagination pagination-small\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.nisi erat porttitor ligula, eget lacinia odio sem nec elit. nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum\n                            </div>\n                        </div>\n                        <!-- END GRID widget-->\n                    </div>\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget tabbable green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"tabbable widget-tabs\">\n                                    <ul class=\"nav nav-tabs\">\n                                        <li><a href=\"#widget_tab3\" data-toggle=\"tab\">Tab 3</a></li>\n                                        <li><a href=\"#widget_tab2\" data-toggle=\"tab\">Tab 2</a></li>\n                                        <li class=\"active\"><a href=\"#widget_tab1\" data-toggle=\"tab\">Tab 1</a></li>\n                                    </ul>\n                                    <div class=\"tab-content\">\n                                        <div class=\"tab-pane active\" id=\"widget_tab1\">\n                                            <p>\n                                                Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.ut laoreet dolore magna ut laoreet dolore magna. ut laoreet dolore magna.\n                                                ut laoreet dolore magna.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab2\">\n                                            <p>\n                                                Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab3\">\n                                            <p>\n                                                Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-success btn-mini\"><i class=\"icon-share icon-black\"></i> Share</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis.\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span8 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget white-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-share\"></i> Share</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/glyphicons.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN FONT AWESOME ICONS PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Glyphicons</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <ul class=\"the-icons clearfix\">\n                                        <li><i class=\"icon-glass\"></i> icon-glass</li>\n                                        <li><i class=\"icon-music\"></i> icon-music</li>\n                                        <li><i class=\"icon-search\"></i> icon-search</li>\n                                        <li><i class=\"icon-envelope\"></i> icon-envelope</li>\n                                        <li><i class=\"icon-heart\"></i> icon-heart</li>\n                                        <li><i class=\"icon-star\"></i> icon-star</li>\n                                        <li><i class=\"icon-star-empty\"></i> icon-star-empty</li>\n                                        <li><i class=\"icon-user\"></i> icon-user</li>\n                                        <li><i class=\"icon-film\"></i> icon-film</li>\n                                        <li><i class=\"icon-th-large\"></i> icon-th-large</li>\n                                        <li><i class=\"icon-th\"></i> icon-th</li>\n                                        <li><i class=\"icon-th-list\"></i> icon-th-list</li>\n                                        <li><i class=\"icon-ok\"></i> icon-ok</li>\n                                        <li><i class=\"icon-remove\"></i> icon-remove</li>\n                                        <li><i class=\"icon-zoom-in\"></i> icon-zoom-in</li>\n                                        <li><i class=\"icon-zoom-out\"></i> icon-zoom-out</li>\n                                        <li><i class=\"icon-off\"></i> icon-off</li>\n                                        <li><i class=\"icon-signal\"></i> icon-signal</li>\n                                        <li><i class=\"icon-cog\"></i> icon-cog</li>\n                                        <li><i class=\"icon-trash\"></i> icon-trash</li>\n                                        <li><i class=\"icon-home\"></i> icon-home</li>\n                                        <li><i class=\"icon-file\"></i> icon-file</li>\n                                        <li><i class=\"icon-time\"></i> icon-time</li>\n                                        <li><i class=\"icon-road\"></i> icon-road</li>\n                                        <li><i class=\"icon-download-alt\"></i> icon-download-alt</li>\n                                        <li><i class=\"icon-download\"></i> icon-download</li>\n                                        <li><i class=\"icon-upload\"></i> icon-upload</li>\n                                        <li><i class=\"icon-inbox\"></i> icon-inbox</li>\n\n                                        <li><i class=\"icon-play-circle\"></i> icon-play-circle</li>\n                                        <li><i class=\"icon-repeat\"></i> icon-repeat</li>\n                                        <li><i class=\"icon-refresh\"></i> icon-refresh</li>\n                                        <li><i class=\"icon-list-alt\"></i> icon-list-alt</li>\n                                        <li><i class=\"icon-lock\"></i> icon-lock</li>\n                                        <li><i class=\"icon-flag\"></i> icon-flag</li>\n                                        <li><i class=\"icon-headphones\"></i> icon-headphones</li>\n                                        <li><i class=\"icon-volume-off\"></i> icon-volume-off</li>\n                                        <li><i class=\"icon-volume-down\"></i> icon-volume-down</li>\n                                        <li><i class=\"icon-volume-up\"></i> icon-volume-up</li>\n                                        <li><i class=\"icon-qrcode\"></i> icon-qrcode</li>\n                                        <li><i class=\"icon-barcode\"></i> icon-barcode</li>\n                                        <li><i class=\"icon-tag\"></i> icon-tag</li>\n                                        <li><i class=\"icon-tags\"></i> icon-tags</li>\n                                        <li><i class=\"icon-book\"></i> icon-book</li>\n                                        <li><i class=\"icon-bookmark\"></i> icon-bookmark</li>\n                                        <li><i class=\"icon-print\"></i> icon-print</li>\n                                        <li><i class=\"icon-camera\"></i> icon-camera</li>\n                                        <li><i class=\"icon-font\"></i> icon-font</li>\n                                        <li><i class=\"icon-bold\"></i> icon-bold</li>\n                                        <li><i class=\"icon-italic\"></i> icon-italic</li>\n                                        <li><i class=\"icon-text-height\"></i> icon-text-height</li>\n                                        <li><i class=\"icon-text-width\"></i> icon-text-width</li>\n                                        <li><i class=\"icon-align-left\"></i> icon-align-left</li>\n                                        <li><i class=\"icon-align-center\"></i> icon-align-center</li>\n                                        <li><i class=\"icon-align-right\"></i> icon-align-right</li>\n                                        <li><i class=\"icon-align-justify\"></i> icon-align-justify</li>\n                                        <li><i class=\"icon-list\"></i> icon-list</li>\n\n                                        <li><i class=\"icon-indent-left\"></i> icon-indent-left</li>\n                                        <li><i class=\"icon-indent-right\"></i> icon-indent-right</li>\n                                        <li><i class=\"icon-facetime-video\"></i> icon-facetime-video</li>\n                                        <li><i class=\"icon-picture\"></i> icon-picture</li>\n                                        <li><i class=\"icon-pencil\"></i> icon-pencil</li>\n                                        <li><i class=\"icon-map-marker\"></i> icon-map-marker</li>\n                                        <li><i class=\"icon-adjust\"></i> icon-adjust</li>\n                                        <li><i class=\"icon-tint\"></i> icon-tint</li>\n                                        <li><i class=\"icon-edit\"></i> icon-edit</li>\n                                        <li><i class=\"icon-share\"></i> icon-share</li>\n                                        <li><i class=\"icon-check\"></i> icon-check</li>\n                                        <li><i class=\"icon-move\"></i> icon-move</li>\n                                        <li><i class=\"icon-step-backward\"></i> icon-step-backward</li>\n                                        <li><i class=\"icon-fast-backward\"></i> icon-fast-backward</li>\n                                        <li><i class=\"icon-backward\"></i> icon-backward</li>\n                                        <li><i class=\"icon-play\"></i> icon-play</li>\n                                        <li><i class=\"icon-pause\"></i> icon-pause</li>\n                                        <li><i class=\"icon-stop\"></i> icon-stop</li>\n                                        <li><i class=\"icon-forward\"></i> icon-forward</li>\n                                        <li><i class=\"icon-fast-forward\"></i> icon-fast-forward</li>\n                                        <li><i class=\"icon-step-forward\"></i> icon-step-forward</li>\n                                        <li><i class=\"icon-eject\"></i> icon-eject</li>\n                                        <li><i class=\"icon-chevron-left\"></i> icon-chevron-left</li>\n                                        <li><i class=\"icon-chevron-right\"></i> icon-chevron-right</li>\n                                        <li><i class=\"icon-plus-sign\"></i> icon-plus-sign</li>\n                                        <li><i class=\"icon-minus-sign\"></i> icon-minus-sign</li>\n                                        <li><i class=\"icon-remove-sign\"></i> icon-remove-sign</li>\n                                        <li><i class=\"icon-ok-sign\"></i> icon-ok-sign</li>\n\n                                        <li><i class=\"icon-question-sign\"></i> icon-question-sign</li>\n                                        <li><i class=\"icon-info-sign\"></i> icon-info-sign</li>\n                                        <li><i class=\"icon-screenshot\"></i> icon-screenshot</li>\n                                        <li><i class=\"icon-remove-circle\"></i> icon-remove-circle</li>\n                                        <li><i class=\"icon-ok-circle\"></i> icon-ok-circle</li>\n                                        <li><i class=\"icon-ban-circle\"></i> icon-ban-circle</li>\n                                        <li><i class=\"icon-arrow-left\"></i> icon-arrow-left</li>\n                                        <li><i class=\"icon-arrow-right\"></i> icon-arrow-right</li>\n                                        <li><i class=\"icon-arrow-up\"></i> icon-arrow-up</li>\n                                        <li><i class=\"icon-arrow-down\"></i> icon-arrow-down</li>\n                                        <li><i class=\"icon-share-alt\"></i> icon-share-alt</li>\n                                        <li><i class=\"icon-resize-full\"></i> icon-resize-full</li>\n                                        <li><i class=\"icon-resize-small\"></i> icon-resize-small</li>\n                                        <li><i class=\"icon-plus\"></i> icon-plus</li>\n                                        <li><i class=\"icon-minus\"></i> icon-minus</li>\n                                        <li><i class=\"icon-asterisk\"></i> icon-asterisk</li>\n                                        <li><i class=\"icon-exclamation-sign\"></i> icon-exclamation-sign</li>\n                                        <li><i class=\"icon-gift\"></i> icon-gift</li>\n                                        <li><i class=\"icon-leaf\"></i> icon-leaf</li>\n                                        <li><i class=\"icon-fire\"></i> icon-fire</li>\n                                        <li><i class=\"icon-eye-open\"></i> icon-eye-open</li>\n                                        <li><i class=\"icon-eye-close\"></i> icon-eye-close</li>\n                                        <li><i class=\"icon-warning-sign\"></i> icon-warning-sign</li>\n                                        <li><i class=\"icon-plane\"></i> icon-plane</li>\n                                        <li><i class=\"icon-calendar\"></i> icon-calendar</li>\n                                        <li><i class=\"icon-random\"></i> icon-random</li>\n                                        <li><i class=\"icon-comment\"></i> icon-comment</li>\n                                        <li><i class=\"icon-magnet\"></i> icon-magnet</li>\n\n                                        <li><i class=\"icon-chevron-up\"></i> icon-chevron-up</li>\n                                        <li><i class=\"icon-chevron-down\"></i> icon-chevron-down</li>\n                                        <li><i class=\"icon-retweet\"></i> icon-retweet</li>\n                                        <li><i class=\"icon-shopping-cart\"></i> icon-shopping-cart</li>\n                                        <li><i class=\"icon-folder-close\"></i> icon-folder-close</li>\n                                        <li><i class=\"icon-folder-open\"></i> icon-folder-open</li>\n                                        <li><i class=\"icon-resize-vertical\"></i> icon-resize-vertical</li>\n                                        <li><i class=\"icon-resize-horizontal\"></i> icon-resize-horizontal</li>\n                                        <li><i class=\"icon-hdd\"></i> icon-hdd</li>\n                                        <li><i class=\"icon-bullhorn\"></i> icon-bullhorn</li>\n                                        <li><i class=\"icon-bell\"></i> icon-bell</li>\n                                        <li><i class=\"icon-certificate\"></i> icon-certificate</li>\n                                        <li><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</li>\n                                        <li><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</li>\n                                        <li><i class=\"icon-hand-right\"></i> icon-hand-right</li>\n                                        <li><i class=\"icon-hand-left\"></i> icon-hand-left</li>\n                                        <li><i class=\"icon-hand-up\"></i> icon-hand-up</li>\n                                        <li><i class=\"icon-hand-down\"></i> icon-hand-down</li>\n                                        <li><i class=\"icon-circle-arrow-right\"></i> icon-circle-arrow-right</li>\n                                        <li><i class=\"icon-circle-arrow-left\"></i> icon-circle-arrow-left</li>\n                                        <li><i class=\"icon-circle-arrow-up\"></i> icon-circle-arrow-up</li>\n                                        <li><i class=\"icon-circle-arrow-down\"></i> icon-circle-arrow-down</li>\n                                        <li><i class=\"icon-globe\"></i> icon-globe</li>\n                                        <li><i class=\"icon-wrench\"></i> icon-wrench</li>\n                                        <li><i class=\"icon-tasks\"></i> icon-tasks</li>\n                                        <li><i class=\"icon-filter\"></i> icon-filter</li>\n                                        <li><i class=\"icon-briefcase\"></i> icon-briefcase</li>\n                                        <li><i class=\"icon-fullscreen\"></i> icon-fullscreen</li>\n                                    </ul>\n\n                                </div>\n                            </div>\n                            <!-- END FONT AWESOME ICONS PORTLET-->\n                        </div>\n                    </div>\n                    <!--END:BODY-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/grids.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wrap\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 12</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span12\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span10\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span10\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span8\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid8</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span8\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6\" </code>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span10 offset2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10 offset2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span10 offset2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span8 offset4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 8 offset4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span8 offset4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6 offset6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 06 offset6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6 offset6\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span4 offset8\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 04 offset8</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4 offset8\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span2 offset10\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10 offset2</h4>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> span10 offset2 </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/index - 副本.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    \n        \n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN TRACKING CURVES PORTLET-->\n                            <div class=\"widget purple\">\n                                \n                                <div class=\"widget-body\">\n                                    <div id=\"chart-1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END TRACKING CURVES PORTLET-->\n                        </div>\n\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Selection Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END BASIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN INTERACTIVE CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Live Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END INTERACTIVE CHART PORTLET-->\n                        </div>\n\n                   \n\n                    \n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/flot/jquery.flot.js\"></script>\n    <script src=\"assets/flot/jquery.flot.resize.js\"></script>\n    <script src=\"assets/flot/jquery.flot.pie.js\"></script>\n    <script src=\"assets/flot/jquery.flot.stack.js\"></script>\n    <script src=\"assets/flot/jquery.flot.crosshair.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/flot-chart.js\"></script>\n    <script src=\"js/custom-flot-chart.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/index.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 结束页面顶部-->\n                <!-- 开始页面主要内容页面-->\n                <div class=\"widget purple\">\n                    <div class=\"widget-title\">\n                        <h4><i class=\"icon-reorder\"></i>四小狼工作室 Metro风格模板</h4>\n                        <span class=\"tools\">\n                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                        </span>\n                    </div>\n                    <div class=\"widget-body\">\n                        <div class=\"text-center\">\n                            <h3>四小狼后台模板，教你轻松入门，简单搭建清新简洁的bootstrap的Metro后台风格</h3>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>首先第一步入门工作当然是引用文件之类的啦，先来个头部文件既引用css文件应该如何去做。代码如下：</p>\n\n                                <br />\n                                <div class=\"widget yellow\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> 头文件引用</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n\n                                            <pre>&lt;!DOCTYPE html&gt;\n&lt;!--[if IE 8]&gt; &lt;html lang=&quot;en&quot; class=&quot;ie8&quot;&gt; &lt;![endif]--&gt;\n&lt;!--[if IE 9]&gt; &lt;html lang=&quot;en&quot; class=&quot;ie9&quot;&gt; &lt;![endif]--&gt;\n&lt;!--[if !IE]&gt;&lt;!--&gt; &lt;html lang=&quot;en&quot;&gt; &lt;!--&lt;![endif]--&gt;\n&lt;!-- 开始头部 --&gt;\n&lt;head&gt;\n   &lt;meta charset=&quot;utf-8&quot; /&gt;\n   &lt;title&gt;Metro By xmfdsh&lt;/title&gt;\n   &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot; /&gt;\n   &lt;meta content=&quot;&quot; name=&quot;description&quot; /&gt;\n   &lt;meta content=&quot;Mosaddek&quot; name=&quot;author&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap-responsive.min.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap-fileupload.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/font-awesome/css/font-awesome.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style-responsive.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style-default.css&quot; rel=&quot;stylesheet&quot; id=&quot;style_color&quot; /&gt;\n&lt;/head&gt;\n&lt;!-- 结束头部 --&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n\n                            <br />\n                        </div>\n\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>第二步：在引用了通用的css文件后，便可以开始布局了，首先是后台顶部的导航栏，其中包括了Logo，个人登陆信息，通知等。代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> header顶部导航栏布局</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>&lt;!-- 开始 Body --&gt;\n&lt;body class=&quot;fixed-top&quot;&gt;\n   &lt;!-- 开始 header 头部菜单 --&gt;\n   &lt;div id=&quot;header&quot; class=&quot;navbar navbar-inverse navbar-fixed-top&quot;&gt;\n       &lt;!-- 开始顶部的 navigation bar 导航菜单 --&gt;\n       &lt;div class=&quot;navbar-inner&quot;&gt;\n           &lt;div class=&quot;container-fluid&quot;&gt;\n               &lt;!--开始工具条 开关--&gt;\n               &lt;div class=&quot;sidebar-toggle-box hidden-phone&quot;&gt;\n                   &lt;div class=&quot;icon-reorder tooltips&quot; data-placement=&quot;right&quot; data-original-title=&quot;Metro By xmfdsh&quot;&gt;&lt;/div&gt;\n               &lt;/div&gt;\n               &lt;!--结束工具条 开关--&gt;\n               &lt;!-- 开始 Logo --&gt;\n               &lt;a class=&quot;brand&quot; href=&quot;index.html&quot;&gt;\n                   &lt;img src=&quot;img/logo.png&quot; alt=&quot;Metro Lab&quot; /&gt;\n               &lt;/a&gt;\n               &lt;!-- 结束Logo --&gt;\n               &lt;div id=&quot;top_menu&quot; class=&quot;nav notify-row&quot;&gt;\n                   &lt;!-- 开始通知 --&gt;\n                   &lt;ul class=&quot;nav top-menu&quot;&gt;\n                       &lt;!-- 开始设置 --&gt;\n                       &lt;li class=&quot;dropdown&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-tasks&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-important&quot;&gt;2&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended tasks-bar&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有2条任务&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;div class=&quot;task-info&quot;&gt;\n                                         &lt;div class=&quot;desc&quot;&gt;控制台&lt;/div&gt;\n                                         &lt;div class=&quot;percent&quot;&gt;44%&lt;/div&gt;\n                                       &lt;/div&gt;\n                                       &lt;div class=&quot;progress progress-striped active no-margin-bot&quot;&gt;\n                                           &lt;div class=&quot;bar&quot; style=&quot;width: 44%;&quot;&gt;&lt;/div&gt;\n                                       &lt;/div&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;div class=&quot;task-info&quot;&gt;\n                                           &lt;div class=&quot;desc&quot;&gt;数据库更新&lt;/div&gt;\n                                           &lt;div class=&quot;percent&quot;&gt;65%&lt;/div&gt;\n                                       &lt;/div&gt;\n                                       &lt;div class=&quot;progress progress-striped progress-success active no-margin-bot&quot;&gt;\n                                           &lt;div class=&quot;bar&quot; style=&quot;width: 65%;&quot;&gt;&lt;/div&gt;\n                                       &lt;/div&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               \n                               &lt;li class=&quot;external&quot;&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有任务&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束设置 --&gt;\n                       &lt;!-- 开始下拉 收件箱 --&gt;\n                       &lt;li class=&quot;dropdown&quot; id=&quot;header_inbox_bar&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-envelope-alt&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-important&quot;&gt;2&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended inbox&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有2条消息&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;photo&quot;&gt;&lt;img src=&quot;img/avatar-mini.png&quot; alt=&quot;avatar&quot; /&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;subject&quot;&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;from&quot;&gt;xmfdsh&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;time&quot;&gt;刚刚&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;message&quot;&gt;\n\t\t\t\t\t\t\t\t\t    Hello, 这是个消息例子.\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;photo&quot;&gt;&lt;img src=&quot;img/avatar-mini.png&quot; alt=&quot;avatar&quot; /&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;subject&quot;&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;from&quot;&gt;张视焕&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;time&quot;&gt;20分钟&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;message&quot;&gt;\n\t\t\t\t\t\t\t\t\t Hi, 最近咋样?\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有信息&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束下拉 收件箱 --&gt;\n                       &lt;!-- 开始下拉 通知 --&gt;\n                       &lt;li class=&quot;dropdown&quot; id=&quot;header_notification_bar&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-bell-alt&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-warning&quot;&gt;4&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended notification&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有4条提示信息&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-important&quot;&gt;&lt;i class=&quot;icon-bolt&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       手机欠费\n                                       &lt;span class=&quot;small italic&quot;&gt;4分钟&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-warning&quot;&gt;&lt;i class=&quot;icon-bell&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       windows激活过期\n                                       &lt;span class=&quot;small italic&quot;&gt;1小时&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-important&quot;&gt;&lt;i class=&quot;icon-bolt&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       数据库奔溃\n                                       &lt;span class=&quot;small italic&quot;&gt;4小时&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-success&quot;&gt;&lt;i class=&quot;icon-plus&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       世界杯要下注了\n                                       &lt;span class=&quot;small italic&quot;&gt;刚刚&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有通知&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束下拉 通知 --&gt;\n                   &lt;/ul&gt;\n               &lt;/div&gt;\n               &lt;!-- 结束通知 --&gt;\n               &lt;div class=&quot;top-nav &quot;&gt;\n                   &lt;ul class=&quot;nav pull-right top-menu&quot; &gt;\n                       &lt;!-- BEGIN SUPPORT --&gt;\n                       &lt;li class=&quot;dropdown mtop5&quot;&gt;\n                           &lt;a class=&quot;dropdown-toggle element&quot; data-placement=&quot;bottom&quot; data-toggle=&quot;tooltip&quot; href=&quot;#&quot; data-original-title=&quot;闲聊&quot;&gt;\n                               &lt;i class=&quot;icon-comments-alt&quot;&gt;&lt;/i&gt;\n                           &lt;/a&gt;\n                       &lt;/li&gt;\n                       &lt;li class=&quot;dropdown mtop5&quot;&gt;\n                           &lt;a class=&quot;dropdown-toggle element&quot; data-placement=&quot;bottom&quot; data-toggle=&quot;tooltip&quot; href=&quot;#&quot; data-original-title=&quot;帮助&quot;&gt;\n                               &lt;i class=&quot;icon-headphones&quot;&gt;&lt;/i&gt;\n                           &lt;/a&gt;\n                       &lt;/li&gt;\n                       &lt;!-- END SUPPORT --&gt;\n                       &lt;!-- 开始用户登录下拉菜单 --&gt;\n                       &lt;li class=&quot;dropdown&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;img src=&quot;img/avatar1_small.jpg&quot; alt=&quot;&quot;&gt;\n                               &lt;span class=&quot;username&quot;&gt;xmfdsh&lt;/span&gt;\n                               &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended logout&quot;&gt;\n                               &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;我的资料&lt;/a&gt;&lt;/li&gt;\n                               &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;i class=&quot;icon-cog&quot;&gt;&lt;/i&gt;我的设置&lt;/a&gt;&lt;/li&gt;\n                               &lt;li&gt;&lt;a href=&quot;login.html&quot;&gt;&lt;i class=&quot;icon-key&quot;&gt;&lt;/i&gt;退出&lt;/a&gt;&lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束用户菜单 --&gt;\n                   &lt;/ul&gt;\n               &lt;/div&gt;\n           &lt;/div&gt;\n       &lt;/div&gt;\n       &lt;!-- 结束顶部的 navigation bar 导航菜单 --&gt;\n   &lt;/div&gt;\n   &lt;!-- 结束 header 头部菜单 --&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>第三步便是左边的导航栏，以及右边待填的内容，代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> 左侧导航栏</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>   &lt;!-- BEGIN CONTAINER --&gt;\n   &lt;div id=&quot;container&quot; class=&quot;row-fluid&quot;&gt;\n      &lt;!-- 开始左侧 导航菜单 --&gt;\n      &lt;div class=&quot;sidebar-scroll&quot;&gt;\n        &lt;div id=&quot;sidebar&quot; class=&quot;nav-collapse collapse&quot;&gt;\n         &lt;!-- 开始左侧 工具条菜单 --&gt;\n          &lt;ul class=&quot;sidebar-menu&quot;&gt;\n              &lt;li class=&quot;sub-menu active&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;index.html&quot;&gt;\n                      &lt;i class=&quot;icon-dashboard&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;控制台&lt;/span&gt;\n                  &lt;/a&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-book&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;UI 组件&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;general.html&quot;&gt;通用&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;button.html&quot;&gt;按钮&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;slider.html&quot;&gt;滑动&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;metro_view.html&quot;&gt;Metro风格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;tabs_accordion.html&quot;&gt;Tab选项卡 &amp; 手风琴&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;typography.html&quot;&gt;文字排版&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;tree_view.html&quot;&gt;树菜单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;nestable.html&quot;&gt;嵌套列表&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;插件&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;calendar.html&quot;&gt;日历&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;grids.html&quot;&gt;网格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;chartjs.html&quot;&gt;图表统计&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;flot_chart.html&quot;&gt;Flot图表&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;gallery.html&quot;&gt;相册&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-tasks&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;表单&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_layout.html&quot;&gt;表单布局&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_component.html&quot;&gt;表单组件&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_wizard.html&quot;&gt;表单提示&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_validation.html&quot;&gt;表单验证&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;dropzone.html&quot;&gt;文件上传&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;数据表格&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;basic_table.html&quot;&gt;简单表格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;dynamic_table.html&quot;&gt;动态表格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;editable_table.html&quot;&gt;可编辑表格&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-fire&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;Icon图标&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;font_awesome.html&quot;&gt;FontAwesome图标&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;glyphicons.html&quot;&gt;Glyphicons图标&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;javascript:;&quot;&gt;\n                      &lt;i class=&quot;icon-trophy&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;代码片段&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a href=&quot;general_portlet.html&quot; class=&quot;&quot;&gt;通用片段&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a href=&quot;draggable_portlet.html&quot; class=&quot;&quot;&gt;可拖拽片段&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;javascript:;&quot;&gt;\n                      &lt;i class=&quot;icon-map-marker&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;地图&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a href=&quot;vector_map.html&quot; class=&quot;&quot;&gt;Vector地图&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a href=&quot;google_map.html&quot; class=&quot;&quot;&gt;Google地图&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-file-alt&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;基本页面&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;blank.html&quot;&gt;空白页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;blog.html&quot;&gt;博客&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;timeline.html&quot;&gt;时间轴&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;profile.html&quot;&gt;个人资料&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;about_us.html&quot;&gt;关于我们&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;contact_us.html&quot;&gt;联系我们&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-glass&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;其他&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;lock.html&quot;&gt;锁屏&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;invoice.html&quot;&gt;购物单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;pricing_tables.html&quot;&gt;价目单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;search_result.html&quot;&gt;搜索展示&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;faq.html&quot;&gt;帮助页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;404.html&quot;&gt;404错误页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;500.html&quot;&gt;500错误页面&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li&gt;\n                  &lt;a class=&quot;&quot; href=&quot;login.html&quot;&gt;\n                    &lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;\n                    &lt;span&gt;登录页面&lt;/span&gt;\n                  &lt;/a&gt;\n              &lt;/li&gt;\n          &lt;/ul&gt;\n         &lt;!-- 结束左侧 工具条菜单 --&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n   &lt;!-- 结束左侧 导航菜单 --&gt;\n   &lt;!-- 开始内容页 --&gt;  \n      &lt;div id=&quot;main-content&quot;&gt;\n         &lt;!-- 开始页面容器--&gt;\n         &lt;div class=&quot;container-fluid&quot;&gt;\n            &lt;!-- 开始页面顶部--&gt;   \n            &lt;div class=&quot;row-fluid&quot;&gt;\n               &lt;div class=&quot;span12&quot;&gt;\n                   &lt;!-- 开始主题定制器--&gt;\n                   &lt;div id=&quot;theme-change&quot; class=&quot;hidden-phone&quot;&gt;\n                       &lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;\n                        &lt;span class=&quot;settings&quot;&gt;\n                            &lt;span class=&quot;text&quot;&gt;主题颜色:&lt;/span&gt;\n                            &lt;span class=&quot;colors&quot;&gt;\n                                &lt;span class=&quot;color-default&quot; data-style=&quot;default&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-green&quot; data-style=&quot;green&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-gray&quot; data-style=&quot;gray&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-purple&quot; data-style=&quot;purple&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-red&quot; data-style=&quot;red&quot;&gt;&lt;/span&gt;\n                            &lt;/span&gt;\n                        &lt;/span&gt;\n                   &lt;/div&gt;\n                   &lt;!-- 结束主题定制器--&gt;\n                   &lt;!-- 开始页面标题 &amp; 面包屑导航--&gt;\n                   &lt;h3 class=&quot;page-title&quot;&gt;\n                     控制台\n                   &lt;/h3&gt;\n                   &lt;ul class=&quot;breadcrumb&quot;&gt;\n                       &lt;li&gt;\n                           &lt;a href=&quot;#&quot;&gt;首页&lt;/a&gt;\n                           &lt;span class=&quot;divider&quot;&gt;/&lt;/span&gt;\n                       &lt;/li&gt;                      \n                       &lt;li class=&quot;active&quot;&gt;\n                           控制台\n                       &lt;/li&gt;\n                       &lt;li class=&quot;pull-right search-wrap&quot;&gt;\n                           &lt;form action=&quot;search_result.html&quot; class=&quot;hidden-phone&quot;&gt;\n                               &lt;div class=&quot;input-append search-input-area&quot;&gt;\n                                   &lt;input class=&quot;&quot; id=&quot;appendedInputButton&quot; type=&quot;text&quot;&gt;\n                                   &lt;button class=&quot;btn&quot; type=&quot;button&quot;&gt;&lt;i class=&quot;icon-search&quot;&gt;&lt;/i&gt; &lt;/button&gt;\n                               &lt;/div&gt;\n                           &lt;/form&gt;\n                       &lt;/li&gt;\n                   &lt;/ul&gt;\n                   &lt;!-- 结束页面标题 &amp; 面包屑导航--&gt;\n               &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;!-- 开始页面主要内容页面--&gt;\n          &lt;!-- 结束页面主要内容页面--&gt;\n            &lt;/div&gt;\n          \n       &lt;/div&gt;\n   &lt;/div&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>最后一步，footer，简洁一点就行，不过我本来就喜欢简洁一点的风格，然后还有的就是在页底加载的Js文件，可以减少加载时间，代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> footer以及Js的加载</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>   &lt;!-- BEGIN FOOTER --&gt;\n   &lt;div id=&quot;footer&quot;&gt;\n       Copyright © 2014 四小狼工作室 Powered by xmfdsh. \n   &lt;/div&gt;\n   &lt;!-- END FOOTER --&gt;\n            \n   &lt;!-- 开始加载 Js文件 --&gt;\n   &lt;!-- 在底部加载Js文件，可以减少加载时间 --&gt;\n   &lt;script src=&quot;js/jquery-1.8.3.min.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/jquery.nicescroll.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;assets/bootstrap/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/jquery.scrollTo.min.js&quot;&gt;&lt;/script&gt;\n   &lt;!-- ie8 fixes --&gt;\n   &lt;!--[if lt IE 9]&gt;\n   &lt;script src=&quot;js/excanvas.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/respond.js&quot;&gt;&lt;/script&gt;\n   &lt;![endif]--&gt;\n   &lt;!--为全部页面加载的公共Js文件--&gt;\n   &lt;script src=&quot;js/common-scripts.js&quot;&gt;&lt;/script&gt;\n   &lt;!--仅为此页面使用的Js文件--&gt;\n   &lt;!-- 结束加载Js文件 --&gt;  \n &lt;/body&gt;\n&lt;/html&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n                        <!-- 结束页面主要内容页面-->\n                    </div>\n                </div>\n\n            </div>\n        </div>\n\n        <!-- BEGIN FOOTER -->\n        <div id=\"footer\">\n            Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n        </div>\n        <!-- END FOOTER -->\n        <!-- 开始加载 Js文件 -->\n        <!-- 在底部加载Js文件，可以减少加载时间 -->\n        <script src=\"js/jquery-1.8.3.min.js\"></script>\n        <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n        <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n        <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n        <!-- ie8 fixes -->\n        <!--[if lt IE 9]>\n        <script src=\"js/excanvas.js\"></script>\n        <script src=\"js/respond.js\"></script>\n        <![endif]-->\n        <!--为全部页面加载的公共Js文件-->\n        <script src=\"js/common-scripts.js\"></script>\n\n        <!--仅为此页面使用的Js文件-->\n        <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/invoice.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!--BEGIN METRO STATES-->\n                    <div class=\"metro-nav\">\n\n                        <div class=\"metro-nav-block  nav-block-grey\">\n                            <a href=\"invoice.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-eye-open\"></i>\n                                </div>\n                                <div class=\"status\">View Invoice</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-blue \">\n                            <a href=\"create_invoice.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-edit\"></i>\n                                </div>\n                                <div class=\"status\">Create Invoice</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block  nav-block-red\">\n                            <a href=\"invoice_list.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-th-list\"></i>\n                                </div>\n                                <div class=\"status\">Invoice List</div>\n                            </a>\n                        </div>\n                    </div>\n                    <div class=\"space10\"></div>\n                    <!--END METRO STATES-->\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Invoice Page </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span12\">\n                                        <div class=\"text-center\">\n                                            <img alt=\"\" src=\"img/vector-lab.jpg\">\n                                        </div>\n                                        <hr>\n\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid invoice-list\">\n                                    <div class=\"span4\">\n                                        <h4>BILLING ADDRESS</h4>\n                                        <p>\n                                            Jonathan Smith <br>\n                                            44 Dreamland Tower, Suite 566 <br>\n                                            ABC, Dreamland 1230<br>\n                                            Tel: +12 (012) 345-67-89\n                                        </p>\n                                    </div>\n                                    <div class=\"span4\">\n                                        <h4>SHIPPING ADDRESS</h4>\n                                        <p>\n                                            Vector Lab<br>\n                                            Road 1, House 2, Sector 3<br>\n                                            ABC, Dreamland 1230<br>\n                                            P: +38 (123) 456-7890<br>\n                                        </p>\n                                    </div>\n                                    <div class=\"span4\">\n                                        <h4>INVOICE INFO</h4>\n                                        <ul class=\"unstyled\">\n                                            <li>Invoice Number\t\t: <strong>69626</strong></li>\n                                            <li>Invoice Date\t\t: 2013-03-17</li>\n                                            <li>Due Date\t\t\t: 2013-03-20</li>\n                                            <li>Invoice Status\t\t: Paid</li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid\">\n                                    <table class=\"table table-striped table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>Item</th>\n                                                <th class=\"hidden-480\">Description</th>\n                                                <th class=\"hidden-480\">Unit Cost</th>\n                                                <th class=\"hidden-480\">Quantity</th>\n                                                <th>Total</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>LCD Monitor</td>\n                                                <td class=\"hidden-480\">20 inch Philips LCD Black color monitor</td>\n                                                <td class=\"hidden-480\">$ 1000</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$ 2000</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Laptop</td>\n                                                <td class=\"hidden-480\">Apple Mac book pro 15” Retina Display. 2.8 GHz Processor,8 GB Ram</td>\n                                                <td class=\"hidden-480\">$1750</td>\n                                                <td class=\"hidden-480\">1</td>\n                                                <td>$1750</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Mouse</td>\n                                                <td class=\"hidden-480\">Apple Magic Mouse</td>\n                                                <td class=\"hidden-480\">$90</td>\n                                                <td class=\"hidden-480\">3</td>\n                                                <td>$270</td>\n                                            </tr>\n                                            <tr>\n                                                <td>4</td>\n                                                <td>Personal Computer</td>\n                                                <td class=\"hidden-480\">iMac 21 inch slim body. 1.7 GHz, 8 GB Ram</td>\n                                                <td class=\"hidden-480\">$1200</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$2400</td>\n                                            </tr>\n                                            <tr>\n                                                <td>5</td>\n                                                <td>Printer</td>\n                                                <td class=\"hidden-480\">Epson Color Jet printer </td>\n                                                <td class=\"hidden-480\">$200</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$400</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span4 invoice-block pull-right\">\n                                        <ul class=\"unstyled amounts\">\n                                            <li><strong>Sub - Total amount :</strong> $6820</li>\n                                            <li><strong>Discount :</strong> 10%</li>\n                                            <li><strong>VAT :</strong> -----</li>\n                                            <li><strong>Grand Total :</strong> $6138</li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid text-center\">\n                                    <a class=\"btn btn-success btn-large hidden-print\"> Submit Your Invoice <i class=\"icon-check\"></i></a>\n                                    <a class=\"btn btn-inverse btn-large hidden-print\" onclick=\"javascript:window.print();\">Print <i class=\"icon-print icon-big\"></i></a>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/lock.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 锁屏页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"lock\">\n    <div class=\"lock-header\">\n        <!-- BEGIN LOGO -->\n        <a class=\"center\" id=\"logo\" href=\"index.html\">\n            <img class=\"center\" alt=\"logo\" src=\"img/logo.png\">\n        </a>\n        <!-- END LOGO -->\n    </div>\n    <div class=\"lock-wrap\">\n        <div class=\"metro single-size gray\">\n            <img src=\"img/lock-thumb.jpg\" alt=\"\" style=\"height: 165px\" >\n        </div>\n        <div class=\"metro double-size blue\">\n            <h1>Jonathan Smith</h1>\n            <p>vectorlab@gmail.com</p>\n        </div>\n        <div class=\"metro double-size green\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"password\" class=\"\" placeholder=\"Password\">\n                    <button type=\"submit\" class=\"btn tarquoise\"><i class=\" icon-arrow-right\"></i></button>\n                </div>\n            </form>\n        </div>\n        <div class=\"metro single-size terques\">\n            <div class=\"locked\">\n                <i class=\"icon-lock\"></i>\n                <span>Locked</span>\n            </div>\n        </div>\n        <div class=\"metro double-size gray \">\n            <a href=\"login.html\" class=\"user-position\">\n                <i class=\"icon-user\"></i>\n                <span>Login Another User</span>\n            </a>\n        </div>\n        <div class=\"metro double-size orange\">\n            <a href=\"javascript:;\" class=\"user-position\">\n                <i class=\"icon-key\"></i>\n                <span>Forgot Password ?</span>\n            </a>\n        </div>\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/login.html",
    "content": "<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 登录页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"lock\">\n    <div class=\"lock-header\">\n        <!-- BEGIN LOGO -->\n        <a class=\"center\" id=\"logo\" href=\"index.html\">\n            <img class=\"center\" alt=\"logo\" src=\"img/logo.png\">\n        </a>\n        <!-- END LOGO -->\n    </div>\n    <div class=\"login-wrap\">\n        <div class=\"metro single-size red\">\n            <div class=\"locked\">\n                <i class=\"icon-lock\"></i>\n                <span>登录</span>\n            </div>\n        </div>\n        <div class=\"metro double-size green\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"text\" class=\"\" placeholder=\"Username\">\n                </div>\n            </form>\n        </div>\n        <div class=\"metro double-size yellow\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"password\" class=\"\" placeholder=\"Password\">\n                </div>\n            </form>\n        </div>\n        <div class=\"metro single-size terques login\">\n            <form action=\"index.html\">\n                <button type=\"submit\" class=\"btn login-btn\">\n                    登录\n                    <i class=\" icon-long-arrow-right\"></i>\n                </button>\n            </form>\n        </div>\n        <div class=\"metro double-size navy-blue \">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-facebook-sign\"></i>\n                <span>Facebook 登录</span>\n            </a>\n        </div>\n        <div class=\"metro single-size deep-red\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-google-plus-sign\"></i>\n                <span>Google 登录</span>\n            </a>\n        </div>\n        <div class=\"metro double-size blue\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-twitter-sign\"></i>\n                <span>Twitter 登录</span>\n            </a>\n        </div>\n        <div class=\"metro single-size purple\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-skype\"></i>\n                <span>Skype 登录</span>\n            </a>\n        </div>\n        <div class=\"login-footer\">\n            <div class=\"remember-hint pull-left\">\n                <input type=\"checkbox\" id=\"\"> 记住密码\n            </div>\n            <div class=\"forgot-hint pull-right\">\n                <a id=\"forget-password\" class=\"\" href=\"javascript:;\">忘记密码?</a>\n            </div>\n        </div>\n    </div>\n</body>\n<!-- END BODY -->\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/metro_view.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!--BEGIN METRO STATES-->\n                    <div class=\"metro-nav metro-fix-view\">\n                        <div class=\"metro-nav-block nav-block-green long\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <span class=\"value\">\n                                    <i class=\"icon-user\"></i>\n                                    329\n                                </span>\n                                <div class=\"status\">New User</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-orange\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-envelope\"></i>\n                                <div class=\"info\">321</div>\n                                <div class=\"status\">Mail</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-light-yellow\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-comments-alt\"></i>\n                                <div class=\"info\">49</div>\n                                <div class=\"status\">Comments</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-blue double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-tasks\"></i>\n                                <div class=\"info\">$37624</div>\n                                <div class=\"status\">Stock</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-yellow\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-tags\"></i>\n                                <div class=\"info\">+970</div>\n                                <div class=\"status\">Sales</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-grey\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-phone\"></i>\n                                <div class=\"status\">Phone</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-red double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-bar-chart\"></i>\n                                <div class=\"info\">+288</div>\n                                <div class=\"status\">Update</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-olive\">\n                            <a href=\"#\" data-original-title=\"\" class=\"text-center\">\n                                <i class=\"icon-star-empty\"></i>\n                                <div class=\"status\">Rattings</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-purple double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-eye-open\"></i>\n                                <div class=\"info\">+8914</div>\n                                <div class=\"status\">Unique Visitor</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-deep-red\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-shopping-cart\"></i>\n                                <div class=\"info\">29</div>\n                                <div class=\"status\">New Order</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-deep-gray\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-remove-sign\"></i>\n                                <div class=\"info\">34 </div>\n                                <div class=\"status\">Cancelled</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-purple\">\n                            <a href=\"#\" data-original-title=\"\" class=\"text-center\">\n                                <i class=\"icon-cogs\"></i>\n                                <div class=\"status\">Settings</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-light-brown\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-shopping-cart\"></i>\n                                <div class=\"info\">29</div>\n                                <div class=\"status\">New Order</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-deep-terques double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-external-link\"></i>\n                                <div class=\"info\">$53412</div>\n                                <div class=\"status\">Total Profit</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-blue \">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-dashboard\"></i>\n                                <div class=\"status\">Dashboard</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-deep-thistle\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-signout\"></i>\n                                <div class=\"status\">Sign Out</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-green\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\" icon-puzzle-piece\"></i>\n                                <div class=\"status\">Warning</div>\n                            </a>\n                        </div>\n                    </div>\n\n                    <div class=\"space10\"></div>\n                    <!--END METRO STATES-->\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-th-large\"></i> More Metro Style </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <!--BEGIN METRO STATES-->\n                                    <div class=\"row-fluid\">\n                                        <!--BEGIN METRO STATES-->\n                                        <div class=\"metro-nav\">\n                                            <div class=\"metro-nav-block nav-block-orange\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-user\"></i>\n                                                    <div class=\"info\">321</div>\n                                                    <div class=\"status\">New User</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-yellow\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-tags\"></i>\n                                                    <div class=\"info\">+970</div>\n                                                    <div class=\"status\">Sales</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-olive\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-comments-alt\"></i>\n                                                    <div class=\"info\">49</div>\n                                                    <div class=\"status\">Comments</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-deep-terques double\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-eye-open\"></i>\n                                                    <div class=\"info\">+897</div>\n                                                    <div class=\"status\">Unique Visitor</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-red\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-bar-chart\"></i>\n                                                    <div class=\"info\">+288</div>\n                                                    <div class=\"status\">Update</div>\n                                                </a>\n                                            </div>\n                                        </div>\n                                        <div class=\"metro-nav\">\n                                            <div class=\"metro-nav-block nav-light-purple\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-shopping-cart\"></i>\n                                                    <div class=\"info\">29</div>\n                                                    <div class=\"status\">New Order</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-blue double\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-tasks\"></i>\n                                                    <div class=\"info\">$37624</div>\n                                                    <div class=\"status\">Stock</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-green\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-envelope\"></i>\n                                                    <div class=\"info\">123</div>\n                                                    <div class=\"status\">Messages</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-brown\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-remove-sign\"></i>\n                                                    <div class=\"info\">34</div>\n                                                    <div class=\"status\">Cancelled</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-grey \">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-external-link\"></i>\n                                                    <div class=\"info\">$53412</div>\n                                                    <div class=\"status\">Total Profit</div>\n                                                </a>\n                                            </div>\n                                        </div>\n                                        <!--END METRO STATES-->\n                                    </div>\n                                    <div class=\"clearfix\"></div>\n                                    <!--END METRO STATES-->\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-th-large\"></i> More Metro Style </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <!--BEGIN METRO STATES-->\n                                    <div class=\"metro-nav\">\n                                        <div class=\"metro-nav-block nav-block-orange\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-user\"></i>\n                                                <div class=\"info\">321</div>\n                                                <div class=\"status\">New User</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-yellow\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-tags\"></i>\n                                                <div class=\"info\">+970</div>\n                                                <div class=\"status\">Sales</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-grey\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-comments-alt\"></i>\n                                                <div class=\"info\">49</div>\n                                                <div class=\"status\">Comments</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-blue\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-eye-open\"></i>\n                                                <div class=\"info\">+897</div>\n                                                <div class=\"status\">Unique Visitor</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-red\">\n                                            <a data-original-title=\"\" class=\"text-center\" href=\"#\">\n                                                <i class=\"icon-lightbulb\"></i>\n                                                <div class=\"status\">Dashboard</div>\n                                            </a>\n                                        </div>\n                                    </div>\n                                    <div class=\"clearfix\"></div>\n                                    <!--END METRO STATES-->\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/nestable.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/nestable/jquery.nestable.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"margin-bottom-10 pull-right\" id=\"nestable_list_menu\">\n                            <button type=\"button\" class=\"btn btn-success\" data-action=\"expand-all\">Expand All</button>\n                            <button type=\"button\" class=\"btn btn-warning\" data-action=\"collapse-all\">Collapse All</button>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <h3>Serialised Output (per list)</h3>\n                        <div class=\"row-fluid\">\n                            <div class=\"span6\">\n                                <textarea id=\"nestable_list_1_output\" class=\"m-wrap span12\"></textarea>\n                            </div>\n                            <div class=\"span6\">\n                                <textarea id=\"nestable_list_2_output\" class=\"m-wrap span12\"></textarea>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 1</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_1\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item\" data-id=\"1\">\n                                            <div class=\"dd-handle\">Item 1</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"2\">\n                                            <div class=\"dd-handle\">Item 2</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item\" data-id=\"3\">\n                                                    <div class=\"dd-handle\">Item 3</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"4\">\n                                                    <div class=\"dd-handle\">Item 4</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"5\">\n                                                    <div class=\"dd-handle\">Item 5</div>\n                                                    <ol class=\"dd-list\">\n                                                        <li class=\"dd-item\" data-id=\"6\">\n                                                            <div class=\"dd-handle\">Item 6</div>\n                                                        </li>\n                                                        <li class=\"dd-item\" data-id=\"7\">\n                                                            <div class=\"dd-handle\">Item 7</div>\n                                                        </li>\n                                                        <li class=\"dd-item\" data-id=\"8\">\n                                                            <div class=\"dd-handle\">Item 8</div>\n                                                        </li>\n                                                    </ol>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"9\">\n                                                    <div class=\"dd-handle\">Item 9</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"10\">\n                                                    <div class=\"dd-handle\">Item 10</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"11\">\n                                            <div class=\"dd-handle\">Item 11</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"12\">\n                                            <div class=\"dd-handle\">Item 12</div>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span6\">\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 2</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_2\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item\" data-id=\"13\">\n                                            <div class=\"dd-handle\">Item 13</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"14\">\n                                            <div class=\"dd-handle\">Item 14</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"15\">\n                                            <div class=\"dd-handle\">Item 15</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item\" data-id=\"16\">\n                                                    <div class=\"dd-handle\">Item 16</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"17\">\n                                                    <div class=\"dd-handle\">Item 17</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"18\">\n                                                    <div class=\"dd-handle\">Item 18</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 3</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_3\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item dd3-item\" data-id=\"13\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 13</div>\n                                        </li>\n                                        <li class=\"dd-item dd3-item\" data-id=\"14\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 14</div>\n                                        </li>\n                                        <li class=\"dd-item dd3-item\" data-id=\"15\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 15</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item dd3-item\" data-id=\"16\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 16</div>\n                                                </li>\n                                                <li class=\"dd-item dd3-item\" data-id=\"17\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 17</div>\n                                                </li>\n                                                <li class=\"dd-item dd3-item\" data-id=\"18\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 18</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/nestable.js\"></script>\n    <script src=\"assets/nestable/jquery.nestable.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/pricing_tables.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-tags\"></i> Pricing Table </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"pricing-title\">\n                                        <h2>30 days Free Trial on All Accounts</h2>\n                                        <h4>No risk. No hidden fees. Cancel at anytime. </h4>\n                                    </div>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table terques\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Micro </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>20 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>1</strong> Website</li>\n                                                <li><strong>2</strong> Projects</li>\n                                                <li><strong>1GB</strong> Storage</li>\n                                                <li><strong>$0</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table red\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Starter </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>30 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>5</strong> Website</li>\n                                                <li><strong>10</strong> Projects</li>\n                                                <li><strong>15GB</strong> Storage</li>\n                                                <li><strong>$30</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table green most-popular\">\n                                            <div class=\"pricing-head \">\n                                                <h3> Business </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>60 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>10</strong> Website</li>\n                                                <li><strong>20</strong> Projects</li>\n                                                <li><strong>Unlimited</strong> Storage</li>\n                                                <li><strong>$50</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table purple\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Enterprise </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>120 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>20</strong> Website</li>\n                                                <li><strong>30</strong> Projects</li>\n                                                <li><strong>Unlimited</strong> Storage</li>\n                                                <li><strong>$100</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/profile.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!-- BEGIN PROFILE PORTLET-->\n                    <div class=\" profile span12\">\n                        <div class=\"span2\">\n                            <div class=\"profile-photo\">\n                                <img src=\"img/lock-thumb.jpg\" alt=\"\">\n                                <a href=\"javascript:;\" class=\"edit\" title=\"Edit Photo\">\n                                    <i class=\"icon-pencil\"></i>\n                                </a>\n                            </div>\n                            <a href=\"profile.html\" class=\"profile-features active\">\n                                <i class=\" icon-user\"></i>\n                                <p class=\"info\">Profile</p>\n                            </a>\n                            <a href=\"profile_activities.html\" class=\"profile-features \">\n                                <i class=\" icon-calendar\"></i>\n                                <p class=\"info\">Activities</p>\n                            </a>\n                            <a href=\"profile_contact.html\" class=\"profile-features \">\n                                <i class=\" icon-phone\"></i>\n                                <p class=\"info\">Contact</p>\n                            </a>\n                        </div>\n                        <div class=\"span10\">\n                            <div class=\"profile-head\">\n                                <div class=\"span4\">\n                                    <h1>Jonathan Smith</h1>\n                                    <p>Lead Designer at <a href=\"#\">Vectorlab Inc.</a></p>\n                                </div>\n\n                                <div class=\"span4\">\n                                    <ul class=\"social-link-pf\">\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-facebook\"></i>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-twitter\"></i>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-linkedin\"></i>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n\n                                <div class=\"span4\">\n                                    <a href=\"edit_profile.html\" class=\"btn btn-edit btn-large pull-right mtop20\"> Edit Profile </a>\n                                </div>\n                            </div>\n                            <div class=\"space15\"></div>\n                            <div class=\"row-fluid\">\n                                <div class=\"span8 bio\">\n                                    <h2>About Smith</h2>\n                                    <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                    <div class=\"space15\"></div>\n                                    <h2>Bio Graph</h2>\n                                    <p><label>First Name </label>: Jonathan</p>\n                                    <p><label>Last Name </label>: Smith</p>\n                                    <p><label>Country </label>: Australia</p>\n                                    <p><label>Bithday </label>: 13 July 1983</p>\n                                    <p><label>Occupation </label>: Designer</p>\n                                    <p><label>Email </label>: <a href=\"#\">smith@vectorlab.net</a></p>\n                                    <p><label>Phone </label>: (12) 03 4567890</p>\n                                    <p><label>Website Url </label>: <a href=\"#\">http://www.demowebsite.com</a></p>\n                                    <div class=\"space15\"></div>\n                                    <hr>\n                                    <div class=\"space15\"></div>\n\n                                    <h2>Project Progress</h2>\n                                    <ul class=\"unstyled\">\n                                        <li>\n                                            Envato Website <strong class=\"label\"> 48%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress\">\n                                                <div class=\"bar\" style=\"width: 48%;\"></div>\n                                            </div>\n                                        </li>\n                                        <li>\n                                            Themeforest CMS Dashboard <strong class=\"label label-success\"> 85%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress progress-success\">\n                                                <div class=\"bar\" style=\"width: 85%;\"></div>\n                                            </div>\n                                        </li>\n                                        <li>\n                                            VectorLab Portfolio <strong class=\"label label-important\"> 65%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress progress-danger\">\n                                                <div class=\"bar\" style=\"width: 65%;\"></div>\n                                            </div>\n                                        </li>\n\n                                    </ul>\n                                    <div class=\"text-center\">\n                                        <button class=\"btn btn-primary \">All Projects</button>\n                                    </div>\n                                    <div class=\"space20\"></div>\n\n                                </div>\n                                <div class=\"span4\">\n                                    <div class=\"profile-side-box red\">\n                                        <h1>Recommended By</h1>\n                                        <div class=\"desk\">\n                                            <div class=\"row-fluid\">\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar1.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Fill Martin</a></p>\n                                                    </div>\n                                                </div>\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar2.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Scatel Filip</a></p>\n                                                    </div>\n                                                </div>\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar3.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Paul Robin</a></p>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"profile-side-box green\">\n                                        <h1>Experience</h1>\n                                        <div class=\"desk\">\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Envato</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Themeforest</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Vector Lab</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END PROFILE PORTLET-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/search_result.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid \">\n                        <div class=\"span12\">\n                            <!-- BEGIN TAB PORTLET-->\n                            <div class=\"widget widget-tabs red\">\n                                <div class=\"widget-title\">\n                                    <!--<h4><i class=\" icon-search\"></i>Search Result</h4>-->\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"tabbable portlet-tabs\">\n                                        <ul class=\"nav nav-tabs pull-left\">\n                                            <li><a href=\"#portlet_tab4\" data-toggle=\"tab\">Product Search</a></li>\n                                            <li><a href=\"#portlet_tab3\" data-toggle=\"tab\">Company Search</a></li>\n                                            <li><a href=\"#portlet_tab2\" data-toggle=\"tab\">File Search</a></li>\n                                            <li class=\"active\"><a href=\"#portlet_tab1\" data-toggle=\"tab\">Classsic Search</a></li>\n                                        </ul>\n                                        <div class=\"clearfix\"></div>\n                                        <div class=\"tab-content\">\n                                            <div class=\"tab-pane active\" id=\"portlet_tab1\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!-- BEGIN CLASSIC SEARCH-->\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n\n                                                <!-- END CLASSIC SEARCH-->\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab2\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!-- BEGIN FILE SEARCH-->\n                                                <table class=\"table table-hover file-search\">\n                                                    <thead>\n                                                        <tr>\n                                                            <th>File Name & Location</th>\n                                                            <th>Created</th>\n                                                            <th>Last Modify</th>\n                                                            <th>Size</th>\n                                                            <th>Type</th>\n                                                        </tr>\n                                                    </thead>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/doc.png\" alt=\"\">\n                                                                <strong>Linux Manual for dummies.doc</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/ppt.png\" alt=\"\">\n                                                                <strong>User Documentation.ppt</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/xls.png\" alt=\"\">\n                                                                <strong>Price chart Table.xls</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/jpg.png\" alt=\"\">\n                                                                <strong>Linux Wallpaper.jpg</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/zip.png\" alt=\"\">\n                                                                <strong>All Main files.zip</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/pdf.png\" alt=\"\">\n                                                                <strong>Metro Lab User Manual and Help fiule.pdf</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/ai.png\" alt=\"\">\n                                                                <strong>Vector Lab Logo and Other stuff.ai</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/psd.png\" alt=\"\">\n                                                                <strong>Vectorlab wallpaper.psd</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/rss.png\" alt=\"\">\n                                                                <strong>themeforest feed.rss</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/email.png\" alt=\"\">\n                                                                <strong>Order and Contact.eml</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/eps.png\" alt=\"\">\n                                                                <strong>Metro Lab.eps</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n\n                                                    </tbody>\n                                                </table>\n                                                <!-- END FILE SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab3\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!--BEGIN COMPANY SEARCH-->\n                                                <table class=\"table table-bordered table-hover\">\n                                                    <thead>\n                                                        <tr>\n                                                            <th>Company Name</th>\n                                                            <th class=\"hidden-phone\">Descrition</th>\n                                                            <th>Total Transaction</th>\n                                                            <th>Paid</th>\n                                                            <th>Due</th>\n                                                        </tr>\n                                                    </thead>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphic Design\t</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphzone</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Mega Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Pixel By Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphzone</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Mega Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                    </tbody>\n                                                </table>\n                                                <!--END COMPANY SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab4\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!--BEGIN PRODUCT SEARCH-->\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product1.jpg\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product2.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product3.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product4.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product5.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <!--END PRODUCT SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END TAB PORTLET-->\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/slider.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" rel=\"stylesheet\">\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SLIDER PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-bar-chart\"></i> jQuery UI Sliders </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table sliders\">\n                                    <tbody>\n                                        <tr>\n                                            <td style=\"width:12%\">Default</td>\n                                            <td>\n                                                <div id=\"default-slider\" class=\"slider\"></div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Snap to Increments</td>\n                                            <td>\n                                                <div id=\"snap-inc-slider\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Amount ($50 increments):\n                                                    <span id=\"snap-inc-slider-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Range</td>\n                                            <td>\n                                                <div id=\"slider-range\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Price range:\n                                                    <span id=\"slider-range-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Maximum</td>\n                                            <td>\n                                                <div id=\"slider-range-max\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Maximum Value:\n                                                    <span id=\"slider-range-max-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Minimum</td>\n                                            <td>\n                                                <div id=\"slider-range-min\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Minimum Value:\n                                                    <span class=\"slider-info\" id=\"slider-range-min-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Graphic EQ</td>\n                                            <td>\n                                                <div id=\"eq\">\n                                                    <span>88</span>\n                                                    <span>77</span>\n                                                    <span>55</span>\n                                                    <span>33</span>\n                                                    <span>40</span>\n                                                    <span>45</span>\n                                                    <span>70</span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Bound to Select</td>\n                                            <td>\n                                                <select name=\"minbeds\" id=\"minbeds\">\n                                                    <option>1</option>\n                                                    <option>2</option>\n                                                    <option>3</option>\n                                                    <option>4</option>\n                                                    <option>5</option>\n                                                    <option>6</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Vertical</td>\n                                            <td>\n                                                <div class=\"slider-vertical-value\">\n                                                    Value:\n                                                    <span class=\"slider-info\" id=\"slider-vertical-amount\"></span>\n                                                </div>\n                                                <div id=\"slider-vertical\" class=\"slider bg-green\" style=\"height: 250px;\"></div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Range(Vertical)</td>\n                                            <td>\n                                                <div class=\"slider-vertical-value\">\n                                                    Target(Millions):\n                                                    <span class=\"slider-info\" id=\"slider-range-vertical-amount\"></span>\n                                                </div>\n                                                <div id=\"slider-range-vertical\" class=\"slider bg-grey\" style=\"height: 250px;\"></div>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                        <!-- END SLIDER PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/sliders.js\" type=\"text/javascript\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/tabs_accordion.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" rel=\"stylesheet\">\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN INLINE TABS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Inline Tab</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"bs-docs-example\">\n                                    <ul class=\"nav nav-tabs\" id=\"myTab\">\n                                        <li class=\"active\"><a data-toggle=\"tab\" href=\"#home\">Home</a></li>\n                                        <li><a data-toggle=\"tab\" href=\"#profile\">Profile</a></li>\n                                        <li class=\"dropdown\">\n                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a data-toggle=\"tab\" href=\"#dropdown1\">@fat</a></li>\n                                                <li><a data-toggle=\"tab\" href=\"#dropdown2\">@mdo</a></li>\n                                            </ul>\n                                        </li>\n                                    </ul>\n                                    <div class=\"tab-content\" id=\"myTabContent\">\n                                        <div id=\"home\" class=\"tab-pane fade in active\">\n                                            <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                        <div id=\"profile\" class=\"tab-pane fade\">\n                                            <p>\n                                                It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).\n                                            </p>\n                                            <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>\n                                        </div>\n                                        <div id=\"dropdown1\" class=\"tab-pane fade\">\n                                            <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                        <div id=\"dropdown2\" class=\"tab-pane fade\">\n                                            <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END INLINE TABS PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN INLINE TABS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Inline Tabs</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab\">\n                                            <ul class=\"nav nav-tabs\">\n                                                <li class=\"active\"><a href=\"#tab_1_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_1_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_1_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_1_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_1_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_1_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                    <div class=\"space10 visible-phone\"></div>\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-below\">\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_2_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_2_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_2_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                            <ul class=\"nav nav-tabs\">\n                                                <li class=\"active\"><a href=\"#tab_2_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_2_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_2_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                </div>\n                                <div class=\"spance20\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-left\">\n                                            <!-- Only required for left/right tabs -->\n                                            <ul class=\"nav nav-tabs tabs-left\">\n                                                <li class=\"active\"><a href=\"#tab_3_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_3_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_3_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_3_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_3_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_3_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                    <div class=\"space10 visible-phone\"></div>\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-right\">\n                                            <!-- Only required for left/right tabs -->\n                                            <ul class=\"nav nav-tabs tabs-right\">\n                                                <li class=\"active\"><a href=\"#tab_4_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_4_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_4_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_4_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_4_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_4_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END INLINE TABS PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN TAB PORTLET-->\n                        <div class=\"widget widget-tabs purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Widget Tab</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"tabbable \">\n                                    <ul class=\"nav nav-tabs\">\n                                        <li><a href=\"#widget_tab3\" data-toggle=\"tab\">Tab 3</a></li>\n                                        <li><a href=\"#widget_tab2\" data-toggle=\"tab\">Tab 2</a></li>\n                                        <li class=\"active\"><a href=\"#widget_tab1\" data-toggle=\"tab\">Tab 1</a></li>\n                                    </ul>\n                                    <div class=\"tab-content\">\n                                        <div class=\"tab-pane active\" id=\"widget_tab1\">\n                                            <p>\n                                                It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).\n                                            </p>\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab2\">\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                            <p>\n                                                There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.\n                                            </p>\n\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab3\">\n                                            <p>\n                                                There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.\n                                            </p>\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END TAB PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN ACCORDION PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Accordion</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"accordion\" id=\"accordion1\">\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_1\">\n                                                Collapsible Group Item #1\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_1\" class=\"accordion-body collapse in\">\n                                            <div class=\"accordion-inner\">\n                                                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. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_2\">\n                                                Collapsible Group Item #2\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_2\" class=\"accordion-body collapse\">\n                                            <div class=\"accordion-inner\">\n                                                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.\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_3\">\n                                                Collapsible Group Item #3\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_3\" class=\"accordion-body collapse\">\n                                            <div class=\"accordion-inner\">\n                                                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor.\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END ACCORDION PORTLET-->\n                        </div>\n                    </div>\n                    <!-- 结束页面主要内容页面-->\n                </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/timeline.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"css/timeline-component.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <ul class=\"metro_tmtimeline\">\n                        <li class=\"green\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-10 18:30\">\n                                <span class=\"date\">1/4/13</span>\n                                <span class=\"time\">17:20</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-bell\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Lorem Ipsum Dolor Ament</h2>\n                                <p>Winter purslane courgette pumpkin quandong komatsuna fennel green bean cucumber watercress. Pea sprouts wattle seed rutabaga okra yarrow cress avocado grape radish bush tomato ricebean black-eyed pea maize eggplant. Cabbage lentil cucumber chickpea sorrel gram garbanzo plantain lotus root bok choy squash cress potato summer purslane salsify fennel horseradish dulse. Winter purslane garbanzo artichoke broccoli lentil corn okra silver beet celery quandong. Plantain salad beetroot bunya nuts black-eyed pea collard greens radish water spinach gourd chicory prairie turnip avocado sierra leone bologi.</p>\n                                <a class=\"btn\" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"purple\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-11T12:04\">\n                                <span class=\"date\">5/10/13</span>\n                                <span class=\"time\">10:30</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-fire\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Hi There !</h2>\n                                <p>Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.</p>\n                            </div>\n                        </li>\n                        <li class=\"red\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-13 05:36\">\n                                <span class=\"date\">3/10/13</span>\n                                <span class=\"time\">02:16</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-bullhorn\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Do The Best Work.</h2>\n                                <p>Parsnip lotus root celery yarrow seakale tomato collard greens tigernut epazote ricebean melon tomatillo soybean chicory broccoli beet greens peanut salad. Lotus root burdock bell pepper chickweed shallot groundnut pea sprouts welsh onion wattle seed pea salsify turnip scallion peanut arugula bamboo shoot onion swiss chard. Avocado tomato peanut soko amaranth grape fennel chickweed mung bean soybean endive squash beet greens carrot chicory green bean. Tigernut dandelion sea lettuce garlic daikon courgette celery maize parsley komatsuna black-eyed pea bell pepper aubergine cauliflower zucchini. Quandong pea chickweed tomatillo quandong cauliflower spinach water spinach.</p>\n                                <a class=\"btn btn-info \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"yellow\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-15 13:15\">\n                                <span class=\"date\">6/11/13</span>\n                                <span class=\"time\">09:46</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Might is Right</h2>\n                                <p>Peanut gourd nori welsh onion rock melon mustard jícama. Desert raisin amaranth kombu aubergine kale seakale brussels sprout pea. Black-eyed pea celtuce bamboo shoot salad kohlrabi leek squash prairie turnip catsear rock melon chard taro broccoli turnip greens. Fennel quandong potato watercress ricebean swiss chard garbanzo. Endive daikon brussels sprout lotus root silver beet epazote melon shallot.</p>\n                                <a class=\"btn btn-inverse \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"blue\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-16 21:30\">\n                                <span class=\"date\">7/05/13</span>\n                                <span class=\"time\">04:30</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-leaf\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Congratulations You did it.</h2>\n                                <p>Parsley amaranth tigernut silver beet maize fennel spinach. Ricebean black-eyed pea maize scallion green bean spinach cabbage jícama bell pepper carrot onion corn plantain garbanzo. Sierra leone bologi komatsuna celery peanut swiss chard silver beet squash dandelion maize chicory burdock tatsoi dulse radish wakame beetroot.</p>\n                            </div>\n                        </li>\n                        <li class=\"orange\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-17 12:11\">\n                                <span class=\"date\">2/12/13</span>\n                                <span class=\"time\">10:01</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-pushpin\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>I am Proud of You Man.</h2>\n                                <p>Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.</p>\n                            </div>\n                        </li>\n                        <li class=\"gray\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-18 09:56\">\n                                <span class=\"date\">2/15/13</span>\n                                <span class=\"time\">04:56</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-time\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>This Timeline is good</h2>\n                                <p>Parsnip lotus root celery yarrow seakale tomato collard greens tigernut epazote ricebean melon tomatillo soybean chicory broccoli beet greens peanut salad. Lotus root burdock bell pepper chickweed shallot groundnut pea sprouts welsh onion wattle seed pea salsify turnip scallion peanut arugula bamboo shoot onion swiss chard. Avocado tomato peanut soko amaranth grape fennel chickweed mung bean soybean endive squash beet greens carrot chicory green bean. Tigernut dandelion sea lettuce garlic daikon courgette celery maize parsley komatsuna black-eyed pea bell pepper aubergine cauliflower zucchini. Quandong pea chickweed tomatillo quandong cauliflower spinach water spinach.</p>\n                                <a class=\"btn btn-inverse \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/tree_view.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-indent-left\"></i> Inline Tree</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"actions\">\n                                    <a class=\"btn btn-small btn-success\" id=\"tree_1_collapse\" href=\"javascript:;\"> Collapse All</a>\n                                    <a class=\"btn btn-small btn-warning\" id=\"tree_1_expand\" href=\"javascript:;\"> Expand All</a>\n                                </div>\n                                <div class=\"space10\"></div>\n                                <ul id=\"tree_1\" class=\"tree\">\n                                    <li>\n                                        <a data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" data-role=\"branch\" href=\"#\">\n                                            Bootstrap Tree\n                                        </a>\n                                        <ul class=\"branch in\">\n                                            <li>\n                                                <a id=\"nut1\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" href=\"#\">\n                                                    Documents\n                                                </a>\n                                                <ul class=\"branch in\">\n                                                    <li>\n                                                        <a id=\"nut2\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                            Finance\n                                                        </a>\n                                                        <ul class=\"branch\">\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-book\"></i> Sale Revenue</a></li>\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-fire\"></i> Promotions</a></li>\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-edit\"></i> IPO</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut3\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Examples\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-cloud\"></i> Internal</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user-md\"></i> Client Base</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-retweet\"></i> Product Base</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut4\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" href=\"#\">\n                                                    Tasks\n                                                </a>\n                                                <ul class=\"branch in\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-suitcase\"></i> Internal Projects</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-cloud-download\"></i> Outsourcing</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-sitemap\"></i> Bug Tracking</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut6\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Customers\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tags\"></i> Finance</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut8\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Reports\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tags\"></i> Finance</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> Another External Link\n                                                </a>\n                                            </li>\n                                        </ul>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span6\">\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-indent-left\"></i> Data Sources</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"actions\">\n                                    <a class=\"btn btn-small btn-success\" id=\"tree_2_collapse\" href=\"javascript:;\"> Collapse All</a>\n                                    <a class=\"btn btn-small btn-warning\" id=\"tree_2_expand\" href=\"javascript:;\"> Expand All</a>\n                                </div>\n                                <div class=\"space10\"></div>\n                                <ul id=\"tree_2\" class=\"tree\">\n                                    <li>\n                                        <a data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" data-role=\"branch\" href=\"#\">\n                                            Bootstrap Tree\n                                        </a>\n                                        <ul class=\"branch in\">\n                                            <li><a id=\"nut\" data-role=\"leaf\" href=\"#\"><i class=\" icon-book\"></i> Documents</a></li>\n                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\" icon-bullhorn\"></i> Projects</a></li>\n                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tasks\"></i> Tasks</a></li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> Another External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-value=\"XML_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/xmlexample.xml\">\n                                                    Load data from XML document via Ajax\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li>\n                                                        <a role=\"branch\" class=\"tree-toggle closed folder\" data-toggle=\"branch\" data-value=\"number_8\" data-itemid=\"root/number_8\" href=\"#\">this branch</a>\n                                                        <ul class=\"branch\">\n                                                            <li><a role=\"leaf\" data-value=\"2\" data-itemid=\"root/number_8/wow\" href=\"#\"><i class=\"icon-shopping-cart\"></i> Purchase metro lab Today</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li>\n                                                        <a role=\"branch\" class=\"tree-toggle folder\" data-toggle=\"branch\" data-value=\"number_9\" data-itemid=\"root/number_9\" href=\"#\">Check this Out!</a>\n                                                        <ul class=\"branch in\">\n                                                            <li><a role=\"leaf\" data-value=\"But metro lab Today\" data-itemid=\"root/number_9/metro lab\" href=\"#\"><i class=\"icon-shopping-cart\"></i> Purchase metro lab Today</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a data-value=\"HTML_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/htmlexample.html\">\n                                                    Load data from HTML page via Ajax\n                                                </a><ul class=\"branch\">\n                                                    <li><a target=\"_blank\" href=\"#\">Some Link</a></li>\n                                                    <li><a target=\"_blank\" href=\"#\">Another Link</a></li>\n                                                    <li>\n                                                        <a data-value=\"GitHub_Repos\" data-toggle=\"branch\" class=\"tree-toggle closed\" role=\"branch\" href=\"#\">Some Structure</a>\n                                                        <ul class=\"branch\">\n                                                            <li><a href=\"#\">Events</a></li>\n                                                            <li><a href=\"#\">Users</a></li>\n                                                            <li><a href=\"#\">Feedbacks</a></li>\n                                                            <li><a href=\"#\">Reports</a></li>\n                                                            <li><a href=\"#\">Sales</a></li>\n                                                            <li><a href=\"#\">Revenue</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </li>\n\n                                            <li><a data-value=\"JSON_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/jsonexample.json\">Load data from JSON via Ajax</a></li>\n                                        </ul>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/tree.js\"></script>\n    <script src=\"assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/bsmode/html/typography.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span8\" id=\"right_column\">\n                        <!-- BEGIN GENERAL PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-trophy\"></i>  General</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Headings</h3>\n                                        <h1>h1. Heading 1</h1>\n                                        <h2>h2. Heading 2</h2>\n                                        <h3>h3. Heading 3</h3>\n                                        <h4>h4. Heading 4</h4>\n                                        <h5>h5. Heading 5</h5>\n                                        <h6>h6. Heading 6</h6>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Texts</h3>\n                                        <p class=\"muted\">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>\n                                        <p class=\"text-warning\">Etiam porta sem malesuada magna mollis euismod.</p>\n                                        <p class=\"text-error\">Donec ullamcorper nulla non metus auctor fringilla.</p>\n                                        <p class=\"text-info\">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>\n                                        <p class=\"text-success\">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>\n                                    </div>\n                                </div>\n\n\n                            </div>\n                        </div>\n                        <!-- END GENERAL PORTLET-->\n                        <!-- BEGIN SAMPLE PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i>  Sample Text</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Sample text with lead body</h3>\n                                        <p class=\"lead\">\n                                            Lead body. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n                                        </p>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Sample text</h3>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                        <p>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 ut id elit.</p>\n                                        <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui.</p>\n                                    </div>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Address</h3>\n                                        <div class=\"well\">\n                                            <address>\n                                                <strong>Vector Lab, Inc.</strong><br />\n                                                Dreamland Ave, Suite 73<br />\n                                                AU, PC 1361<br />\n                                                <abbr title=\"Phone\">P:</abbr> (123) 456-7891\n                                            </address>\n                                            <address>\n                                                <strong>Full Name</strong><br />\n                                                <a href=\"mailto:#\">first.last@email.com</a>\n                                            </address>\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Some more text here</h3>\n                                        <p>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 ut id elit.</p>\n                                        <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui.</p>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END SAMPLE PORTLET-->\n                        <!-- BEGIN BLOCKQUOTES PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Blockquotes</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <blockquote>\n                                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. Duis mollis, est non commodo luctus, nisi erat porttitor ligula integer posuere erat a ante.</p>\n                                </blockquote>\n                                <blockquote>\n                                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>\n                                    <small>Someone famous <cite title=\"Source Title\">Source Title</cite></small>\n                                </blockquote>\n                                <div class=\"clearfix\">\n                                    <blockquote class=\"pull-right\">\n                                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>\n                                        <small>Someone famous <cite title=\"Source Title\">Source Title</cite></small>\n                                    </blockquote>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLOCKQUOTES PORTLET-->\n                        <!-- BEGIN DESCRIPTION LISTS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Description Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <dl>\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod.</dd>\n                                    <dt>Jhon Doe </dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod.</dd>\n                                </dl>\n                            </div>\n                        </div>\n                        <!-- END DESCRIPTION LISTS PORTLET-->\n                        <!-- BEGIN HORIZONTAL DESCRIPTION LISTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Horizontal Description Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <dl class=\"dl-horizontal\">\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. </dd>\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms. A description list is perfect for defining terms. A description list is perfect for defining terms. A description list is perfect for defining terms.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. </dd>\n                                </dl>\n                            </div>\n                        </div>\n                        <!-- END HORIZONTAL DESCRIPTION LISTS PORTLET-->\n                    </div>\n                    <div class=\"span4\">\n                        <!-- BEGIN ORDERED LISTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Ordered Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ol>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>Nulla volutpat aliquam velit</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                </ol>\n                            </div>\n                        </div>\n                        <!-- END ORDERED LISTS PORTLET-->\n                        <!-- BEGIN UNORDERED LISTS PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Unordered Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNORDERED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Unstyled Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"unstyled\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Letter List </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"upper-alpha\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Roman List  </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"roman-list\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN ICONIN LISTS PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Iconic Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"unstyled icons\">\n                                    <li><i class=\"icon-ok\"></i>  Lorem ipsum dolor sit amet</li>\n                                    <li><i class=\"icon-fire\"></i>  Consectetur adipiscing elit</li>\n                                    <li><i class=\"icon-bolt\"></i>  Integer molestie lorem at massa</li>\n                                    <li><i class=\"icon-pencil\"></i>  Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        <i class=\"icon-book\"></i>\n                                        Nulla volutpat aliquam velit\n                                        <ul class=\"icons\">\n                                            <li><i class=\"icon-leaf\"></i>  Phasellus iaculis neque</li>\n                                            <li><i class=\"icon-link\"></i>  Purus sodales ultricies</li>\n                                            <li><i class=\"icon-lock\"></i>  Vestibulum laoreet porttitor sem</li>\n                                            <li><i class=\"icon-random\"></i>  Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li><i class=\"icon-pushpin\"></i>  Faucibus porta lacus fringilla vel</li>\n                                    <li><i class=\"icon-plane\"></i>  Aenean sit amet erat nunc</li>\n                                    <li><i class=\"icon-cogs\"></i>  Eget porttitor lorem</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END ICONIC LISTS PORTLET-->\n\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/MoniNodeAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#moniNodeAddForm').form({\n\t\t\turl : '${ctx}/pestMoniNode/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"moniNodeAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点名称：</label> <input name=\"name\" type=\"text\"  class=\"required\" value=\"\"/></td>\n\t\t\t\t\t<td><label>编码：</label> \n\t\t\t\t\t\t\n                        <input name=\"code\" type=\"text\"  class=\"required\" value=\"\"/>\t\t\t\t\t\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>创建用户：</label> <input name=\"createBy\" type=\"text\"  class=\"required\" value=\"\"/></td>\n\t\t\t\t\t<td><label>类型：</label> <input name=\"type\" type=\"text\" class=\"required\"  value=\"\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>坐标 x：</label> <input name=\"locationX\" type=\"text\"  class=\"required\" value=\"\"/></td>\n\t\t\t\t\t<td><label>坐标 y：</label> <input name=\"locationY\" type=\"text\" class=\"required\"  value=\"\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>站点id：</label> <input name=\"station\" type=\"text\"  class=\"required\" value=\"\"/></td>\n\t\t\t\t\t<td><label>地址：</label> <input name=\"address\" type=\"text\" class=\"required\"  value=\"\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>截取间隔时间：</label> <input name=\"fps\" type=\"text\"  class=\"required\" value=\"\"/></td>\n\t\t\t\t\t<td><label>详细描述：</label> <input name=\"description\" type=\"text\" class=\"required\"  value=\"\"/></td>\n\t\t\t\t</tr>\t\t\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/MoniNodeInfo.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n\n\n\n<div class=\"dholl\" style=\"margin:5px 5px 5px 5px\">\n<div class=\"pageHeader\">\n   <div width=\"450\" style=\"float:left\">\n    <div id=\"nodeInfo\"  >\n\t\t\t<div class=\"unit\">\n\t\t\t\t<label>监测点基本信息：</label>\n\t\t\t</div>\n\t\t<table class=\"nodeInfo\"  style=\"border-bottom-width:1px;\">\n\t\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td width=\"220\" height=\"30\">监测点名称：${moniNode_info.moniNodeName}</td>\n\t\t\t\t<td width=\"220\" height=\"30\">监测点位置：[${moniNode_info.location_x},${moniNode_info.location_y}]</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t    <td width=\"220\" height=\"30\">监测点地址：${moniNode_info.location}</td>\n\t\t\t\t<td width=\"220\" height=\"30\">创建用户：${moniNode_info.createBy}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t    <td width=\"220\" height=\"30\">监测点状态：正常</td>\n\t\t\t\t<td width=\"220\" height=\"30\">创建日期：${moniNode_info.createDate}</td>\n\t\t\t</tr>\n\t\t  </tbody>\n\t\t</table>\n\n\t</div>\n\t<div class=\"searchBar\"  >\n\t\t<form method=\"post\" action=\"#\"  onsubmit=\"return navTabSearch(this);\">\n\t\t<div class=\"pageFormContent\" >\n\t\t\t<div class=\"unit\">\n\t\t\t\t<label>请选择检索条件：</label>\n\t\t\t</div>\n\t\t\t<div class=\"unit\">\n\t\t\t\t<label>虫害种类：</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />全部</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />桔小实蝇</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />烟粉虱</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />黄曲条跳甲</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />蓟马</label>\n\t\t\t\t<label class=\"radioButton\"><input name=\"name\" type=\"radio\" />小菜蛾</label>\n\t\t\t</div>\n\t\t\t<input name=\"node_id\" type=\"hidden\"  value=\"1\"/> \n\t\t\t<div class=\"unit\" width=\"220\">\n\t\t\t\t<label>开始日期：</label>\n\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"startDate\"  data-options=\"sharedCalendar:'#cc'\"/>\n\t\t\t\t<label>结束日期：</label>\n\t\t\t\t\t<input class=\"easyui-datebox\"  name=\"endDate\"  data-options=\"sharedCalendar:'#cc'\"/>\n\t\t\t</div>\n\n\n\t         <ul>\n\t\t\t   <li><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">开始检索</a>\n\t\t\t   </li>\n\t\t\t   <li><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">生成图表</a>\n\t\t\t   </li>\n\t\t\t</ul>\n\t\t</div>\n\t</form>\n\t</div>\n\t</div>\n\t<div width=\"250\"style=\"float:right\">\n\t  <img src=\"/pests/img/yangtao.jpg\" style=\"margin:5px 5px 5px 5px\"  width=\"250\" height=\"250\"  alt=\"图片\" />\n\t</div>\n    <div class=\"clear\" style=\"clear:both\"></div> \n</div>\n\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"虫害列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n</div>\n\n</div>\n<script>\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl :  '/pests/pestData/pestSensordataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '40',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'pestDataId',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '虫害名称',\n\t\t\t\tfield : 'pestName',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '70',\n\t\t\t\ttitle : '虫害数量',\n\t\t\t\tfield : 'amount',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '75',\n\t\t\t\ttitle : '监测站id',\n\t\t\t\tfield : 'moniNodeId',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '空气温度',\n\t\t\t\tfield : 'sensor1',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '空气湿度',\n\t\t\t\tfield : 'sensor2',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '土壤温度',\n\t\t\t\tfield : 'sensor3',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '土壤湿度',\n\t\t\t\tfield : 'sensor4',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '70',\n\t\t\t\ttitle : '叶表温度',\n\t\t\t\tfield : 'sensor5',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '70',\n\t\t\t\ttitle : 'co2',\n\t\t\t\tfield : 'sensor6',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/pestData/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/pestData/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestData/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestData/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\n\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n</script>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/MoniNodeList.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>传感器管理</title>\n\t<script type=\"text/javascript\">\n\t\t<!--将时间戳转为日期-->\n\t\tfunction getTime() {\n\t\t\tvar ts = arguments[0] || 0;\n\t\t\tvar t, y, m, d, h, i, s;\n\t\t\tt = ts ? new Date(ts) : new Date();\n\t\t\ty = t.getFullYear();\n\t\t\tm = t.getMonth() + 1;\n\t\t\td = t.getDate();\n\t\t\th = t.getHours();\n\t\t\ti = t.getMinutes();\n\t\t\ts = t.getSeconds();\n\t\t\t// 可根据需要在这里定义时间格式\n\t\t\treturn y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d) + ' ' + (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s);\n\t\t}\n\tvar dataGrid;\n\tvar stationTree;\n\tvar sensorDateGrid;\n\t$(function() {\t\t\n\n\t\tvar monitoringNode ={\n\t\t\tstation:\"9\"\n\t\t}\n\n\t\tstationTree = $('#stationTree').tree({\n\t\t\turl : '${ctx}/station/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n\t\t\t\tmonitoringNode.station=node.id\n\t\t\t\t$.ajax({\n\n\t\t\t\t\ttype : 'post',\n\n\t\t\t\t\turl : '${ctx}/pestMoniNode/getnodeinfo',\n\n\t\t\t\t\tcontentType : 'application/json',\n\t\t\t\t\t//json数据\n\n\t\t\t\t\tdata : JSON.stringify(monitoringNode),\n\n\t\t\t\t\tdataType: 'json',\n\n\t\t\t\t\t//请求成功后的回调函数\n\n\t\t\t\t\tsuccess : function(data) {\n\t\t\t\t\t\tif(data.length == 7){\n\t\t\t\t\t\t\tsensorDateGrid=$('#sensorDateGrid').datagrid({\n\t\t\t\t\t\t\t\turl : '${ctx}' + '/sensor/dataGrid',\n\t\t\t\t\t\t\t\tstriped : true,\n\t\t\t\t\t\t\t\trownumbers : false,//是否显示行号\n\t\t\t\t\t\t\t\tpagination : true,\n\t\t\t\t\t\t\t\tsingleSelect : false,//允许选择多行\n\t\t\t\t\t\t\t\tidField : 'autoID',\n\t\t\t\t\t\t\t\tsortName : 'autoID',\n\t\t\t\t\t\t\t\tsortOrder : 'desc',\n\t\t\t\t\t\t\t\tpageSize : 50,\n\t\t\t\t\t\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\t\t\t\t\t\tfrozenColumns : [ [ {\n\t\t\t\t\t\t\t\t\twidth : '30',\n\t\t\t\t\t\t\t\t\tfield : 'ck',\n\t\t\t\t\t\t\t\t\tcheckbox : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '100',\n\t\t\t\t\t\t\t\t\ttitle : '监测点',\n\t\t\t\t\t\t\t\t\tfield : 'serialNum',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t} ,{\n\t\t\t\t\t\t\t\t\twidth : '150',\n\t\t\t\t\t\t\t\t\ttitle : '采集日期',\n\t\t\t\t\t\t\t\t\tfield : 'createDate',\n\t\t\t\t\t\t\t\t\tsortable : true,\n\t\t\t\t\t\t\t\t\tformatter:function(date){\n\t\t\t\t\t\t\t\t\t\treturn getTime(date)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[0].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor1',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[1].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor2',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[2].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor3',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[3].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor4',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[4].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor5',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[5].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor6',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t},{\n\t\t\t\t\t\t\t\t\twidth : '60',\n\t\t\t\t\t\t\t\t\ttitle : data[6].name,\n\t\t\t\t\t\t\t\t\tfield : 'sensor7',\n\t\t\t\t\t\t\t\t\tsortable : true\n\t\t\t\t\t\t\t\t}] ],\n\t\t\t\t\t\t\t\t//toolbar : '#toolbar'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t\tdataGrid.datagrid('load', {\n\t\t\t\t    station: node.id\n\t\t\t\t});\n\t\t\t\tsensorDateGrid.datagrid('load', {\n\t\t\t\t    station: node.id\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/pestMoniNode/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'createDate',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '传感器名称',\n\t\t\t\tfield : 'name',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '传感器节点',\n\t\t\t\tfield : 'map',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '坐标：x',\n\t\t\t\tfield : 'locationX',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '坐标：y',\n\t\t\t\tfield : 'locationY',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '监测位置',\n\t\t\t\tfield : 'address',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '描述',\n\t\t\t\tfield : 'description',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'active',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\t\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.autoID);\n\t\t\t\t\t\t\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar',\n\t\t\t//onClickRow : function(index,row) {\n\t\t\t//\tsensorDateGrid.datagrid('load', {\n\t\t\t//\t    monitoringNodeId: row.autoID\n\t\t\t//\t});\n\t\t\t//}\n\t\t});\n\t\t\n\t\tsensorDateGrid=$('#sensorDateGrid').datagrid({\n\t\t\turl : '${ctx}' + '/sensor/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'desc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '监测点',\n\t\t\t\tfield : 'serialNum',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '采集日期',\n\t\t\t\tfield : 'createDate',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter:function(date){\n\t\t\t\t\treturn getTime(date)\n\t\t\t\t}\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor1}',\n\t\t\t\tfield : 'sensor1',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor2}',\n\t\t\t\tfield : 'sensor2',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor3}',\n\t\t\t\tfield : 'sensor3',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor4}',\n\t\t\t\tfield : 'sensor4',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor5}',\n\t\t\t\tfield : 'sensor5',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor6}',\n\t\t\t\tfield : 'sensor6',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor7}',\n\t\t\t\tfield : 'sensor7',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor8}',\n\t\t\t\tfield : 'sensor8',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor9}',\n\t\t\t\tfield : 'sensor9',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '60',\n\t\t\t\ttitle : '${sensor10}',\n\t\t\t\tfield : 'sensor10',\n\t\t\t\tsortable : true\n\t\t\t}] ],\n\t\t\t//toolbar : '#toolbar'\n\t\t});\n\t\t\n\t});\n\t\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/pestMoniNode/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#moniNodeAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\n\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/pestMoniNode/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#userEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction searchByBox(value,name)\n\t{\n\t\t$('#dataGrid').datagrid('load', {    \n\t\t\t\"searchKey\": name, \"searchValue\": value,\n\t\t});\t\n\t}\n\t\n\tfunction doSearch(){\n\t\t\t    $('#dataGrid').datagrid('load', {    \n\t        realName: $('#searchByName').val(),\n\t    }); \n\t}\n\t\n\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"设备列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div data-options=\"region:'west',border:false,split:true\" title=\"站点列表\" style=\"width:200px;overflow: hidden; \">\n\t\t<table id=\"stationTree\" style=\"width:180px;margin: 10px 10px 10px 10px\"></table>\n\t</div>\n\t<div data-options=\"region:'east',border:false,split:true\" title=\"数据列表\" style=\"width:800px;overflow: hidden; \">\n\t\t<table id=\"sensorDateGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t     <div>\n            <c:if test=\"${fn:contains(sessionInfo.resourceList, '/MoniNode/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t\t<a  href=\"${ctx}/sensorUpdate/updateStation?stationId=9\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">更新数据</a>\n\t\t    </c:if>\n\t\t </div>\n\t\t <div>\n\t\t\t 姓名：\n\t\t\t<input id=\"searchByName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\"/>\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" data-options=\"plain:true\" onclick=\"doSearch()\">搜索</a>\n\t\t </div>\n\t</div>\n\n</body>\n\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/pestMoniNode.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>监测站管理</title>\n\t<script type=\"text/javascript\">\n\t\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/pestMoniNode/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '监测点名称',\n\t\t\t\tfield : 'name',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '创建日期',\n\t\t\t\tfield : 'createDate',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '坐标：x',\n\t\t\t\tfield : 'locationX',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '坐标：y',\n\t\t\t\tfield : 'locationY',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '监测位置',\n\t\t\t\tfield : 'address',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '描述',\n\t\t\t\tfield : 'description',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'active',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/pestMoniNode/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/pestMoniNode/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestMoniNode/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 800,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/pestMoniNode/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#moniNodeAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\n\tfunction searchFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '检索',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestMoniNode/getSearchPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '检索',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/search')}\">\n\t\t\t<a onclick=\"searchFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">检索</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestMoniNode/getExcel')}\">\n\t\t\t<a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">Excel</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/pestMoniNodeEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t\n\t\t$('#dataEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/pestMoniNode/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t});\n\t\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t<tr>\n\t\t\t\t\t <td>\n\t\t\t\t\t\t<label>节点ID：</label> \n\t\t\t\t\t\t<input name=\"id\" readonly=\"readonly\" type=\"text\" class=\"required\" value=\"${enode.id}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>节点名称：</label> \n\t\t\t\t\t\t<input name=\"nodename\" type=\"text\"  class=\"required\" value=\"${enode.nodename}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\n\t\t\t\t    <td>\n\t\t\t\t\t\t<label>是否使用：</label> \n\t\t\t\t\t\t<input name=\"active\"  type=\"text\" class=\"required\"  value=\"${enode.active}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>创建日期：</label> \n\t\t\t\t\t\t<input name=\"createDate\"  type=\"text\" class=\"date\"  dateFmt=\"yyyy/MM/dd\" value=\"${enode.createDate}\" />\n\t\t\t\t        <a class=\"inputDateButton\" href=\"javascript:;\">选择</a>\t\n\t\t\t\t\t</td>\n\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>创建用户：</label> \n\t\t\t\t\t\t<input name=\"createBy\"  type=\"text\" class=\"required\" value=\"${enode.createBy}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>更新日期：</label> \n\t\t\t\t\t\t<input name=\"updateDate\"   type=\"text\" class=\"date\"  dateFmt=\"yyyy/MM/dd\" value=\"${enode.updateDate}\" />\n\t\t\t\t        <a class=\"inputDateButton\" href=\"javascript:;\">选择</a>\t\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>坐标 x：</label> \n\t\t\t\t\t\t<input name=\"location_x\"  type=\"text\" class=\"required\" value=\"${enode.location_x}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>坐标 y：</label> \n\t\t\t\t\t\t<input name=\"location_y\"   type=\"text\" class=\"required\" value=\"${enode.location_y}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>截取间隔时间（s）：</label> \n\t\t\t\t\t\t<input name=\"fps\"  type=\"text\" class=\"required\" value=\"${enode.fps}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<label>详细描述：</label> \n\t\t\t\t\t\t<input name=\"description\"   type=\"text\" class=\"required\" value=\"${enode.description}\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/MoniNode/pestMoniSearch.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataSearchForm').form({\n\t\t\turl : '${ctx}/sensor/search',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dataSearchForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t       <tr>\t<label>请选择检索条件：</label></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t   \t<td><label>开始日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\t\t\t\t\t<td><label>结束日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\n\t\t\t\t</tr>\n\t\t\t\t<tr><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">生成图表</a></tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/inc.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<link rel=\"shortcut icon\" href=\"${ctx}/style/eu/images/index/favicon.png\" />\n<!-- 引入my97日期时间控件 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/My97DatePicker/WdatePicker.js\" charset=\"utf-8\"></script>\n\n<!-- 引入jQuery -->\n<script src=\"${ctx}/jslib/eu_js/jquery-1.8.3.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<!-- xheditor -->\n<script src=\"${ctx}/jslib/eu_js/xheditor/xheditor-1.2.2.min.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js\" type=\"text/javascript\"></script>\n\n<!-- 引入EasyUI -->\n<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"${ctx}/jslib/eu_js/easyui1.3.3/themes/<c:out value=\"${cookie.easyuiThemeName.value}\" default=\"default\"/>/easyui.css\" type=\"text/css\">\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/easyui1.3.3/jquery.easyui.min.js\" charset=\"utf-8\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/extEasyUI.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展Jquery -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/extJquery.js\" charset=\"utf-8\"></script>\n\n<!-- 自定义工具类 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/lightmvc.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI图标 -->\n<link rel=\"stylesheet\" href=\"${ctx}/style/eu/lightmvc.css\" type=\"text/css\">\n\n<script type=\"text/javascript\">\n$(window).load(function(){\n\t$(\"#loading\").fadeOut();\n});\n//公共方法\nvar pubMethod = {\n    bind: function (control,code) {\n        if (control == ''|| code == '')\n        {\n            return;\n        }\n\n        $('#'+ control).combobox({\n            url: '${ctx}/dictionary/combox?code=' + code,\n            method: 'get',\n            valueField: 'id',\n            textField: 'text',\n            editable: false,\n            panelHeight: 'auto',\n            required:true\n        });\n    }\n}\n</script>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/index.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"inc.jsp\"></jsp:include>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>华南农业大学-大数据工程中心</title>\n<script type=\"text/javascript\">\n\tvar index_layout;\n\tvar index_tabs;\n\tvar index_tabsMenu;\n\tvar layout_west_tree;\n\tvar layout_west_tree_url = '';\n\t\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果没有登录,直接跳转到登录页面\n\t\tlayout_west_tree_url = '${ctx}/resource/tree';\n\t}else{\n\t\twindow.location.href='${ctx}/admin/index';\n\t}\n\t$(function() {\n\t\tindex_layout = $('#index_layout').layout({\n\t\t\tfit : true\n\t\t});\n\t\t\n\t\tindex_tabs = $('#index_tabs').tabs({\n\t\t\tfit : true,\n\t\t\tborder : false,\n\t\t\ttools : [{\n\t\t\t\ticonCls : 'icon_home',\n\t\t\t\thandler : function() {\n\t\t\t\t\tindex_tabs.tabs('select', 0);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ticonCls : 'icon_refresh',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar index = index_tabs.tabs('getTabIndex', index_tabs.tabs('getSelected'));\n\t\t\t\t\tindex_tabs.tabs('getTab', index).panel('refresh');\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ticonCls : 'icon_del',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar index = index_tabs.tabs('getTabIndex', index_tabs.tabs('getSelected'));\n\t\t\t\t\tvar tab = index_tabs.tabs('getTab', index);\n\t\t\t\t\tif (tab.panel('options').closable) {\n\t\t\t\t\t\tindex_tabs.tabs('close', index);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t\t\n\t\tlayout_west_tree = $('#layout_west_tree').tree({\n\t\t\turl : layout_west_tree_url,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n\t\t\t\tif (node.attributes && node.attributes.url) {\n\t\t\t\t\tvar url = '${ctx}' + node.attributes.url;\n\t\t\t\t\taddTab({\n\t\t\t\t\t\turl : url,\n\t\t\t\t\t\ttitle : node.text,\n\t\t\t\t\t\ticonCls : node.iconCls\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t\n\tfunction addTab(params) {\n\t\tvar iframe = '<iframe src=\"' + params.url + '\" frameborder=\"0\" style=\"border:0;width:100%;height:98%;\"></iframe>';\n\t\tvar t = $('#index_tabs');\n\t\tvar opts = {\n\t\t\ttitle : params.title,\n\t\t\tclosable : true,\n\t\t\ticonCls : params.iconCls,\n\t\t\tcontent : iframe,\n\t\t\tborder : false,\n\t\t\tfit : true\n\t\t};\n\t\tif (t.tabs('exists', opts.title)) {\n\t\t\tt.tabs('select', opts.title);\n\t\t} else {\n\t\t\tt.tabs('add', opts);\n\t\t}\n\t}\n\t\n\tfunction logout(){\n\t\t$.messager.confirm('提示','确定要退出?',function(r){\n\t\t\tif (r){\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/admin/logout', function(result) {\n\t\t\t\t\tif(result.success){\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\twindow.location.href='${ctx}/admin/index';\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t}\n\t\t});\n\t}\n\t\n\n\tfunction editUserPwd() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '修改密码',\n\t\t\twidth : 300,\n\t\t\theight : 250,\n\t\t\thref : '${ctx}/user/editPwdPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '修改',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#editUserPwdForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\n\t\n</script>\n</head>\n<body>\n\t<div id=\"loading\" style=\"position: fixed;top: -50%;left: -50%;width: 200%;height: 200%;background: #fff;z-index: 100;overflow: hidden;\">\n\t<img src=\"${ctx}/style/images/index/ajax-loader.gif\" style=\"position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;\"/>\n\t</div>\n\t<div id=\"index_layout\">\n\t\t<div data-options=\"region:'north'\" style=\" overflow: hidden;\" id=\"header\">\n\t\t\t<span style=\"float: right; padding-right: 20px;\">欢迎 <b>${sessionInfo.name}</b>&nbsp;&nbsp; <a href=\"javascript:void(0)\" onclick=\"editUserPwd()\" style=\"color: #fff\">修改密码</a>&nbsp;&nbsp;<a href=\"javascript:void(0)\" onclick=\"logout()\" style=\"color: #fff\">安全退出</a>\n        \t&nbsp;&nbsp;&nbsp;&nbsp;\n    \t\t</span>\n    \t\t<span class=\"header\"></span>\n\t\t</div>\n\t\t<div data-options=\"region:'west',split:true\" title=\"主导航\" style=\"width: 200px; overflow: hidden;overflow-y:auto;\">\n\t\t\t<div class=\"well well-small\" style=\"padding: 10px 5px 5px 5px;\">\n\t\t\t\t<ul id=\"layout_west_tree\"></ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div data-options=\"region:'center'\" style=\"overflow: hidden;\">\n\t\t\t<div id=\"index_tabs\" style=\"overflow: hidden;\">\n\t\t\t\t<div title=\"首页\" data-options=\"border:false\" style=\"overflow: hidden;\">\n\t\t\t\t\t<div style=\"padding:10px 0 10px 10px\">\n\t\t\t\t\t\t<h2>系统介绍</h2>\n\t\t\t\t\t\t<div class=\"light-info\">\n\t\t\t\t\t\t\t<div class=\"light-tip icon-tip\"></div>\n\t\t\t\t\t\t\t<div>欢迎您访问华南农业大学大数据工程中心管理系统。</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div data-options=\"region:'south',border:false\" style=\"height: 30px; overflow: hidden;text-align: center;background-color: #daeef5\" >华南农业大学-大数据工程中心 </div>\n\t</div>\n\t\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/login.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>用户登录</title>\n<script>\n\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果登录,直接跳转到index页面\n\t\twindow.location.href='${ctx}/admin/index';\n\t}\n\t\t\n\t$(function() {\n\t\t\n\t\t$('#loginform').form({\n\t\t    url:'${ctx}/admin/login',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\twindow.location.href='${ctx}/admin/index';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t});\n\tfunction submitForm(){\n\t\t$('#loginform').submit();\n\t}\n\t\n\tfunction clearForm(){\n\t\t$('#loginform').form('clear');\n\t}\n</script>\n</head>\n<body>\n\t<div align=\"center\" style=\"padding:160px 0 0 0\">\n\t<div class=\"easyui-panel\" title=\"登录\" style=\"width:400px;\" >\n\t\t<div style=\"padding:10px 0 10px 100px\" >\n\t    <form id=\"loginform\"  method=\"post\">\n\t    \t<table>\n\t    \t\t<tr>\n\t    \t\t\t<td>用户名:</td>\n\t    \t\t\t<td><input class=\"easyui-validatebox\" type=\"text\" name=\"loginName\" data-options=\"required:true\" value=\"admin\"></input></td>\n\t    \t\t</tr>\n\t    \t\t<tr>\n\t    \t\t\t<td>密&nbsp;&nbsp;码:</td>\n\t    \t\t\t<td><input class=\"easyui-validatebox\" type=\"password\" name=\"password\" value=\"123456\"></input></td>\n\t    \t\t</tr>\n\t    \t</table>\n\t    </form>\n\t    </div>\n\t    <div style=\"text-align:center;padding:5px\">\n\t\t<a href=\"javascript:void(0)\" class=\"easyui-linkbutton\" onclick=\"submitForm()\">登录</a>\n\t\t<a href=\"javascript:void(0)\" class=\"easyui-linkbutton\" onclick=\"clearForm()\">清除</a>\n\t\t</div>\n\t</div>\n\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/category.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/editPage')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>知识库栏目管理</title>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t    <div>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t</div>\n\t\t<div>\n\t\t\t<span>选择目录库种类</span>\n\t\t\t<select id=\"categoryRoot\" name=\"categoryRoot\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t\t<c:forEach items=\"${rootList}\" var=\"rl\">\n\t\t\t\t\t<option value=\"${rl.categoryCode}\">${rl.categoryName} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<!-- \n\t\t\t<input class=\"easyui-combobox\" id=\"categoryRoot\" name=\"categoryRoot\" style=\"width:100%;\" data-options=\"\n                    loader: rootLoader,\n                    mode: 'remote',\n                    valueField: 'code',\n                    textField: 'name',\n                    label: 'State:',\n                    labelPosition: 'top'\t\t\t\n                    \">\n             -->\n\t\t</div>\n\t</div>\n</body>\n<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar categoryCodeRoot=\"Variety\";\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').treegrid({\n\t\t\turl : '${ctx}' + '/manualCategory/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'categoryName',\n\t\t\tparentField : 'parentID',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tqueryParams:{ categoryCode: $('#categoryRoot').val() },\n\t\t\tcolumns : [ [ {\n\t\t\t\ttitle : '编号',\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'id',\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目名称',\n\t\t\t\tfield : 'categoryName',\t\t\t\n\t\t\t} ,{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '栏目描述',\n\t\t\t\tfield : 'categoryDescription',\t\n\t\t\t} ,{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '栏目pid',\n\t\t\t\tfield : 'parentID',\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : '120',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t\t\n\t\t$('#categoryRoot').combobox({\n        \tonChange: function (n, o) {\n        \t\tgetCategoryDatagrid();\n            }\n        });\n\t});\n\n\t\n\tfunction reLoadByCategoryCode(code){\n\t\tdataGrid.treegrid('load', { categoryCode: code });\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/manualCategory/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.treegrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.treegrid('load',{categoryCode: categoryCodeRoot});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/manualCategory/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualCategory/editPage?id=' + id+'&categoryRoot='+categoryCodeRoot,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#categoryEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/manualCategory/addPage?categoryRoot='+categoryCodeRoot,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#categoryAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction getCategoryDatagrid() {\n\t\t\tcategoryCodeRoot=$(\"[name='categoryRoot']\").val();\n\t\t//\talert(categoryCodeRoot);\n\t\t\treLoadByCategoryCode(categoryCodeRoot);\t\n\t}\n\t\n\t\n\t    var rootLoader = function(param,success,error){\n            $.ajax({\n                url: '${ctx}' + '/manualCategory/getRootCategory',\n\t\t\t\tasync: false,\n                dataType: 'json',\n                success: function(data){\n                    var items = new Array();\n\t\t\t\t\tfor(var e in data.obj)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar item= new Object();\n\t\t\t\t\t\titem.code= data.obj[e].categoryCode;\n\t\t\t\t\t\titem.name= data.obj[e].categoryName;\n\t\t\t\t\t\tif(item.code==\"Variety\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.selected=true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\titem.selected=false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\titems[e]=item;\n\t\t\t\t\t}\n                    success(items);\n                },\n                error: function(){\n                    error.apply(this, arguments);\n                }\n            });\n        }\n</script>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/categoryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\tvar categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t$('#categoryAddForm').form({\n\t\t\turl : '${ctx}/manualCategory/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.treegrid('load',{categoryCode: categoryCodeRoot});//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\trequired: true\n\t\t   });\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" placeholder=\"请输入栏目名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\" placeholder=\"请输入栏目描述\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 250px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级栏目</td>\n\t\t\t\t<td><select id=\"pid\" name=\"parentID\"  data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\"></select>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/categoryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n    var categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\trequired: true,\n\t\t\tvalue:'${category.parentID}'\n\t\t});\n\t\t\n\t\t$('#categoryEditForm').form({\n\t\t\turl : '${ctx}/manualCategory/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.treegrid('load',{categoryCode: categoryCodeRoot});\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<input type=\"hidden\" name=\"autoID\" value=\"${category.autoID}\"/>\n\t\t\t\t<input name=\"categoryCode\" type=\"hidden\" value=\"${category.categoryCode}\" / >\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" value=\"${category.categoryName}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"parentID\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t     <td>备注</td>\n\t\t\t \t<td><input name=\"categoryDescription\" type=\"text\" value=\"${category.categoryDescription}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t<tr>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/manual.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/detail')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDetail = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>知识管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/manualContent/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '题目',\n\t\t\t\tfield : 'title',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目编号',\n\t\t\t\tfield : 'categoryCode',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canDetail) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t\t\n\t\t$('#categoryRoot').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tonChange: function (n, o) {\n\t\t\t\tvar manualCategoryID=$(\"[name='categoryRoot']\").val();\n        \t\tdataGrid.datagrid('load', {\n\t\t\t\t    manualCategoryID: manualCategoryID\n\t\t\t\t});\n            }\n\t\t   });\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/manualContent/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualContent/detailPage?id=' + id\n\t\t});\n\t}\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualContent/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 800,\n\t\t\theight : 400,\n\t\t\thref : '${ctx}/manualContent/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t    <div>\n\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t</div>\n\t\t<div>\n\t\t\t<span>选择目录库</span>\n\t\t\t<select id=\"categoryRoot\" name=\"categoryRoot\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t</select>\n\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/manualAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n<div style=\"padding: 3px;\">\n\t<form id=\"manualAddForm\" method=\"post\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>题目</td>\n\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入题目\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 80%; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"manualCategoryID\" name=\"manualCategoryID\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<!-- \n\t\t\t<tr>\n\t\t\t\t<td>发布时间</td>\n\t\t\t\t\t<td><input name=\"createTime\" type=\"text\"  class=\"easyui-validatebox\" readonly=\"readonly\" value=\" <%=new java.util.Date().toLocaleString( )%>\" data-options=\"required:true\" style=\"width: 80%; height: 29px;\" >\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>发布人工号</td>\n\t\t\t\t<td>\n\t\t\t\t\t<input name=\"createBy\" type=\"text\"  class=\"easyui-validatebox\" readonly=\"readonly\" value=\"${sessionInfo.id}\"  style=\" height: 29px;\" >\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t -->\n\t\t\t <tr>\n\t\t\t<td>添加关键字</td>\n\t\t\t<td>\n\t\t\t\t<input id=\"keyword\" name=\"keyword\" type=\"text\" placeholder=\"请输入关键词\" class=\"easyui-validatebox\" style=\"width: 50%; height: 29px;\" />\n\t\t\t\t <a onclick=\"addKeyword();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">确定</a>\n\t\t\t</td>\n\t\t\t  \n\t\t\n\t\t\t</tr> \n            <tr>\n\t\t\t    <input id=\"keywordList\" name=\"keywordList\" type=\"hidden\" />\n\t\t\t\t<td>关键字列表</td>\n\t\t\t\t<td>\t\t\n\t\t\t\t\t<table id=\"keywordListSpan\" class=\"grid\">\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n            </tr>\t\t\n\t\t\t\n\t\t\t <tr>\n\t\t\t<td>发布形式</td>\n\t\t\t<td>\n\t\t\t\t<button onclick=\"showUploadArea();\">使用附件</button> <button onclick=\"showXContentArea();\">手工输入</button>\n\t\t\t</td>\n\t\t\t</tr>  \t\n            \n\t\t\t\n\t\t\n\t\t</table>\n\n\n\t</div>\n\t<div id=\"contentArea\">\n\t <textarea id=\"content\" name=\"content\" rows=\"35\" cols=\"150\"\n\t\t\t\tclass=\"easyui-validatebox\" style=\"width: 100%;\"></textarea>\n\t</div>\n\t<div id=\"file_upload_area\" class=\"table\"  style=\"display:none;\">\n\t\t\t<table id=\"file_upload_table\" class=\"grid\" >\n\t\t\t\t<tr>\n\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<div id=\"file_upload\">\n                    \t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t</div>\n\t<input type=\"hidden\" name=\"pageContent\" value=\"\"/>\n\t<input type=\"hidden\" name=\"attachmentContent\" value=\"\"/>\n\t</form>\n</div>\n\t<div id=\"toolbar\">\t    \n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">发布</a>\n\n\t</div>\n\t<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n\t<script type=\"text/javascript\">\n\t\n\n\tvar categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t\n\t\tvar editor = $('#content').xheditor({\n\t\t\tcleanPaste : 2,\n\t\t\theight : '300px',\n\t\t\tupBtnText : '选择',\n\t\t\tupImgUrl : '${ctx}/manualContent/getUploadFile'\n\t\t});\n\t\t\n\t\tvar waitupload = false;\n\t\t$('#manualAddForm').form({\n\t\t\turl : '${ctx}/manualContent/add',\n\t\t\tonSubmit : function() {\n\t\t\t\t\n\t\t\t\tprogressLoad();\n\t\t\t\tvar uploadCount = $('#uploadfileQueue').find('.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(uploadCount==0&&$('#content').val()==\"\"){\n\t\t\t\t\tisValid=false;\n\t\t\t\t}\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\telse if($(\"#file_upload_area\").is(\":hidden\") == false && waitupload == false && uploadCount > 0){\n\t\t\t\t\t//有附件需要上传时，则先让附件上传完毕再保存页面内容\n\t\t\t\t\twaitupload = true;\n\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t$('#file_upload').uploadify(\"upload\",\"*\");\n\t\t\t\t\t\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$('input[name=pageContent]').val(encodeURIComponent(editor.getSource()));\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t\twindow.location.href = window.location.href; \n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tfnInituploadify();\n\t\t\n\t\t$('#manualCategoryID').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t   });\n\t\t\n\t});\n\t\n\t\tfunction addFun() {\n\t\t\tgetKeywordString();\n\t\t\t$('#manualAddForm').submit();\t\t\t\t\n\t}\n\t\n\tfunction addKeyword()\n\t{\n\t\tvar keyword= $('#keyword').val();\n\t\tif(keyword==''||keyword==null){\n\t\t\talert(\"关键词不能为空\");\n\t\t\treturn;\n\t\t}\n\t\telse{\n\t\t\tvar htmlitem='<tr><td>关键字：</td><td name=\"keywordA\">'+keyword+'</td><td><a  onclick=\"fndeleteKeyword(this);\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'+\"'icon_del'\"+'\">'+\"删除\"+\"</a></td></tr>\";\n\t\t\t$('#keywordListSpan').append(htmlitem);\n\t\t\t$('#keyword').val('');\n\t\t\t$('#keyword').focus();\n\t\t}\n\t}\n\t\n\tfunction getKeywordString()\n\t{\n\t\tvar keywords = '';\n\t\t\t$('td[name=keywordA]').each(function(){\n\t\t\t\tkeywords += $(this).text() + \",\";\n\t\t\t});\n\t\tif(keywords.length > 0){\n\t\t\t\tkeywords = keywords.substr(0, keywords.length - 1);\n\t\t\t}\n\t\t\t$('input[name=keywordList]').val(keywords);\n\t}\n\t\n\tfunction fndeleteKeyword(itm)\n\t{\n\t\t$(itm).parent(\"td\").parent(\"tr\").remove();\n\t}\n\t\n\tfunction showUploadArea(){\n\t\t\n\t\t$('#contentArea').hide();\n\t\t$('#content').val(\"\");\n\t\n\t\t$('#file_upload_area').show();\n\t}\n\t\n\tfunction showXContentArea(){\n\t\t$('#file_upload_area').hide();\n\t\t$('#contentArea').show();\n\t\t//$('#uploadfileQueue').empty();\n\t\t//$('.uploadify-queue-item').empty();\n\t\t$(\"#file_upload\").uploadify('cancel','*');\n\t}\n\t\n\t\n\t var allFileUploadSuccess = true;\n    //初始化上传控件\n    function fnInituploadify() {\n        $(\"#file_upload\").uploadify({\n            //开启调试  \n            'debug': false,\n            //是否自动上传  \n            'auto': false,\n            'buttonText': '选择附件',\n            //flash  \n            'swf': \"${ctx}/jslib/Uploadify/uploadify.swf\",\n            //文件选择后的容器ID  \n            'queueID': 'uploadfileQueue',\n            'uploader': '${ctx}/manualContent/getUploadFile',\n            'width': '120',\n            'height': '29',\n            'multi': false,\n            'fileTypeDesc' : '支持格式',\n\t\t\t'fileTypeExts' : '*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n            'fileSizeLimit': '10MB',\n            'removeTimeout': 3,\n            'successTimeout': 60,\n            'removeCompleted': false,\n            'fileObjName': 'Filedata',\n            'formData': {  },\n\t\t\t'cancelImg': \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n            //返回一个错误，选择文件的时候触发  \n            'onSelectError': function (file, errorCode, errorMsg) {\n                switch (errorCode) {\n                    case -100:\n                        alert(\"上传的文件数量已经超出系统限制的\" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + \"个文件！\");\n                        break;\n                    case -110:\n                        alert(\"文件 [\" + file.name + \"] 大小超出系统限制的\" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + \"大小！\");\n                        break;\n                    case -120:\n                        alert(\"文件 [\" + file.name + \"] 大小异常！\");\n                        break;\n                    case -130:\n                        alert(\"文件 [\" + file.name + \"] 类型不正确！\");\n                        break;\n                }\n            },\n            //检测FLASH失败调用  \n            'onFallback': function () {\n            \twaitupload = false;\n            \tprogressClose();\n                alert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n            },\n            //上传到服务器，服务器返回相应信息到data里  \n            'onUploadSuccess': function (file, data, response) {\n\t\t\t\t\n\t\t\t\t\n                if (response == true) {\n                \tvar dataobj = JSON.parse(data);\n                    if(dataobj.err != \"\"){\n                    \tallFileUploadSuccess = false;\n                    \t//alert(dataobj.err);\n                    }\n\t\t\t\t\t\n                    if(dataobj.msg != \"\"){\n                    \t$('input[name=attachmentContent]').val($('input[name=attachmentContent]').val() + dataobj.msg);\n                    }\n                }\n                else {\n                \tallFileUploadSuccess = false;\n                }\n            },\n            'onQueueComplete': function (queueData) {\n            \tif(allFileUploadSuccess == false){\n            \t\twaitupload = false;\n                    progressClose();\n                    alert(\"有附件上传不成功\");\n            \t}\n            \telse{\n\t\t\t\n            \t\t$('#manualAddForm').submit();\n            \t}\n            }\n        });\n     }\n</script>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/manual/manualDetail.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<div style=\"padding: 3px;\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>标题</td>\n\t\t\t\t<td align=\"center\">${manualContent.title}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属栏目</td>\n\t\t\t\t<td align=\"center\">${categoryList}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>关键字</td>\n\t\t\t\t<td align=\"center\">${keywordList}</td>\n\t\t\t</tr>\n\t\t\t<c:if test=\"${not empty attachmentList}\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>附件</td>\n\t\t\t\t\t<td><c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t<a href=\"${ctx}/front/news/base/downloadAttachment?attachmentID=${attachment.autoID}\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</c:forEach></td>\n\t\t\t\t</tr>\n\t\t\t</c:if>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t<div class=\"table\" id=\"manualContent\">${manualContent.content}</div></td>\n\t\t\t</tr>\n\t\t</table>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/category.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>新闻管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/category/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'type',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目名称',\n\t\t\t\tfield : 'categoryName',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '栏目描述',\n\t\t\t\tfield : 'categoryDescription',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目类型',\n\t\t\t\tfield : 'typeDesc'\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].autoID);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/category/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/category/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 280,\n\t\t\thref : '${ctx}/category/editPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 280,\n\t\t\thref : '${ctx}/category/addPage'\n\t\t});\n\t}\n\t\n\tfunction doSearch(){\n\t\t$('#dataGrid').datagrid('load', {    \n\t        type: $('#selectType').combobox('getValue'),\n\t    }); \n\t}\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<div style=\"margin-bottom: 5px;\">\n\t\t\t栏目类型: \n\t\t\t<select id=\"selectType\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t\t<option value=\"\">全部</option>\n\t\t\t\t<c:forEach items=\"${typeList}\" var=\"type\">\n\t\t\t\t\t<option value=\"${type.id}\">${type.text} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" onclick=\"doSearch()\">搜索</a>\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/categoryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#addCategory').bind('click',function(){\n\t\t\t$('#categoryAddForm').submit();\n\t\t});\n\t\t\n\t\t$('#categoryAddForm').form({\n\t\t\turl : '${ctx}/category/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>类型</td>\n\t\t\t\t<td>\n\t\t\t\t\t<select class=\"easyui-combobox\" name=\"type\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:if test=\"${!empty typeList}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${typeList}\" var=\"tl\">\n\t\t\t\t\t\t\t\t\t<option value=\"${tl.id}\">${tl.text}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</c:if>\n\t\t\t\t\t</select>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" placeholder=\"请输入栏目名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\" placeholder=\"请输入栏目描述\" class=\"easyui-validatebox\" data-options=\"required:true,multiline:true\" style=\"width: 300px; height: 100px;\" ></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n<div id=\"toolbar\">\n\t<a href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\" id=\"addCategory\">添加</a>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/categoryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t$('#editCategory').bind('click',function(){\n\t\t\t$('#categoryEditForm').submit();\n\t\t});\n\t\t$('#categoryEditForm').form({\n\t\t\turl : '${ctx}/category/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>类型</td>\n\t\t\t\t<td><select class=\"easyui-combobox\" name=\"type\"\n\t\t\t\t\tstyle=\"width: 200px\">\n\t\t\t\t\t\t<c:if test=\"${!empty typeList}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${typeList}\" var=\"tl\">\n\t\t\t\t\t\t\t\t\t<c:if test=\"${category.type == tl.id}\"><option value=\"${tl.id}\" selected=\"selected\">${tl.text}</option></c:if>\n\t\t\t\t\t\t\t\t\t<c:if test=\"${category.type != tl.id}\"><option value=\"${tl.id}\">${tl.text}</option></c:if>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</c:if>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\"\n\t\t\t\t\tplaceholder=\"请输入栏目名称\" class=\"easyui-validatebox\"\n\t\t\t\t\tdata-options=\"required:true\" style=\"width: 140px; height: 29px;\" value=\"${category.categoryName}\"></td>\n\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\"\n\t\t\t\t\tplaceholder=\"请输入栏目描述\" class=\"easyui-validatebox\"\n\t\t\t\t\tdata-options=\"required:true,multiline:true\"\n\t\t\t\t\tstyle=\"width: 300px; height: 100px;\" value=\"${category.categoryDescription}\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<input type=\"hidden\" name=\"autoID\" value=\"${category.autoID}\" />\n\t</form>\n</div>\n<div id=\"toolbar\">\n\t<a href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_sys'\" id=\"editCategory\">修改</a>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/news.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/detail')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDetail = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>新闻管理</title>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<div style=\"margin-bottom: 5px;\">\n\t\t\t<select id=\"selectPersonal\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:80px;\">\n\t\t\t\t<option value=\"0\" selected=\"selected\">本人发布</option>\n\t\t\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/readAll')}\">\n\t\t\t\t\t<option value=\"1\">查看全部</option>\n\t\t\t\t</c:if>\n\t\t\t</select>\n\t\t\t所属栏目：\n\t\t\t<select id=\"selectCategory\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:80px;\">\n\t\t\t\t<option value=\"\" selected=\"selected\">全部</option>\n\t\t\t\t<c:forEach items=\"${categoryList}\" var=\"c\">\n\t\t\t\t\t<option value=\"${c.autoID}\">${c.categoryName} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<input id=\"searchTitle\" type=\"text\" value=\"\" placeholder=\"输入搜索的标题\" style=\"width: 120px; margin-left: 10px;\" />\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" onclick=\"doSearch()\">搜索</a>\n\t\t</div>\n\t</div>\n\t<input type=\"hidden\" name=\"categoryTypeID\" value=\"${categoryTypeID }\"/>\n\t<script type=\"text/javascript\">\t\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/news/dataGrid?categoryTypeID=' + $('input[name=categoryTypeID]').val(),\n\t\t\tqueryParams: { selectPersonal: $(\"#selectPersonal\").combobox('getValue')},\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'desc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '所属栏目',\n\t\t\t\tfield : 'categoryName',\n\t\t\t\tsortable : false\n\t\t\t} ,{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '新闻标题',\n\t\t\t\tfield : 'title',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '发布时间',\n\t\t\t\tfield : 'publishDate',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '发布人',\n\t\t\t\tfield : 'author',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'statusDesc',\n\t\t\t\tsortable : false\n\t\t\t} ,{\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 160,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canDetail) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.autoID);\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif ($.canEdit && row.statusDesc == \"编辑\") {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif ($.canDelete && row.statusDesc == \"编辑\") {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif (row.statusDesc == \"编辑\") {//编辑状态，非发布状态\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"publishFun({0});\" >发布</a>', row.autoID);\n\t\t\t\t\t}else if(row.statusDesc == \"发布\"){//发布状态\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"publishCallbackFun({0});\" >撤回</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].autoID);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/news/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '保存',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/addPage?categoryTypeID=' + $('input[name=categoryTypeID]').val(),\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '保存',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction publishFun(id){\n\t\t$.ajax({\n\t\t\ttype:\"post\",\n\t\t\turl:\"${ctx}/news/publish\",\n\t\t\tdata:{\n\t\t\t\t\"id\":id\n\t\t\t},\n\t\t\tdataType:\"json\",\n\t\t\tsuccess:function(result){\n\t\t\t\tif (result.success) {\n\t\t\t\t\tdataGrid.datagrid('reload');//\n\t\t\t\t} else {\n\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction publishCallbackFun(id){\n\t\t$.ajax({\n\t\t\ttype:\"post\",\n\t\t\turl:\"${ctx}/news/unPublish\",\n\t\t\tdata:{\n\t\t\t\t\"id\":id\n\t\t\t},\n\t\t\tdataType:\"json\",\n\t\t\tsuccess:function(result){\n\t\t\t\tif (result.success) {\n\t\t\t\t\tdataGrid.datagrid('reload');//\n\t\t\t\t} else {\n\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction doSearch(){\n\t\t$('#dataGrid').datagrid('load', {    \n\t        title: $('#searchTitle').val(),\n\t        selectPersonal: $(\"#selectPersonal\").combobox('getValue'),\n\t        categoryID: $(\"#selectCategory\").combobox('getValue')\n\t    }); \n\t}\n\t\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/newsAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\"\n\ttype=\"text/css\" />\n<div style=\"padding: 3px;\">\n\t<form id=\"newsAddForm\" method=\"post\">\n\t\t<div class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>新闻标题</td>\n\t\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入标题\"\n\t\t\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\t\t\tstyle=\"width: 80%; height: 29px;\">\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>所属栏目</td>\n\t\t\t\t\t<td><select id=\"categoryID\" name=\"categoryID\"\n\t\t\t\t\t\tclass=\"easyui-combobox\"\n\t\t\t\t\t\tdata-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<c:if test=\"${!empty categories}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${categories}\" var=\"category\">\n\t\t\t\t\t\t\t\t\t<option value=\"${category.autoID}\">${category.categoryName}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div>\n\t\t\t<textarea id=\"content\" rows=\"35\" cols=\"150\"\n\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\tstyle=\"width: 100%;\"></textarea>\n\t\t</div>\n\t\t<c:if test=\"${!empty allowAttachment}\">\n\t\t\t<div id=\"file_upload_area\" class=\"table\">\n\t\t\t\t<table class=\"grid\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<div id=\"file_upload\"></div></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</c:if>\n\t\t<input type=\"hidden\" name=\"pageContent\" value=\"\" /> <input\n\t\t\ttype=\"hidden\" name=\"attachmentContent\" value=\"\" />\n\t</form>\n</div>\n<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\"\n\ttype=\"text/javascript\"></script>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t//var editor = $('#content').xheditor();\n\t\tvar editor = $('#content').xheditor({\n\t\t\tcleanPaste : 0,\n\t\t\theight : '300px',\n\t\t\tupBtnText : '选择',\n\t\t\tupImgUrl : '${ctx}/news/getUploadFile'\n\t\t});\n\t\tvar waitupload = false;\n\t\t$('#newsAddForm')\n\t\t\t\t.form(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\turl : '${ctx}/news/add',\n\t\t\t\t\t\t\tonSubmit : function() {\n\t\t\t\t\t\t\t\tprogressLoad();\n\t\t\t\t\t\t\t\tvar uploadCount = $('#uploadfileQueue').find(\n\t\t\t\t\t\t\t\t\t\t'.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\t\t\t\t\tif($(\"#categoryID\").combobox('getValue') == undefined || $(\"#categoryID\").combobox('getValue') == \"\"){\n\t\t\t\t\t\t\t\t\talert(\"请先选择栏目！\");\n\t\t\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\t} else if ($(\"#file_upload_area\").is(\":hidden\") == false\n\t\t\t\t\t\t\t\t\t\t&& waitupload == false\n\t\t\t\t\t\t\t\t\t\t&& uploadCount > 0) {\n\t\t\t\t\t\t\t\t\t//有附件需要上传\n\t\t\t\t\t\t\t\t\twaitupload = true;\n\t\t\t\t\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t\t\t\t\t$('#file_upload').uploadify(\"upload\", \"*\");\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$('input[name=pageContent]').val(\n\t\t\t\t\t\t\t\t\t\tencodeURIComponent(editor.getSource()));\n\t\t\t\t\t\t\t\treturn isValid;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess : function(result) {\n\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t\t\tparent.$.modalDialog.openner_dataGrid\n\t\t\t\t\t\t\t\t\t\t\t.datagrid('reload');//\n\t\t\t\t\t\t\t\t\tparent.$.modalDialog.handler\n\t\t\t\t\t\t\t\t\t\t\t.dialog('close');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg,\n\t\t\t\t\t\t\t\t\t\t\t'warning');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\tfnInituploadify();\n\t});\n\n\tvar allFileUploadSuccess = true;\n\t//初始化上传控件\n\tfunction fnInituploadify() {\n\t\t$(\"#file_upload\")\n\t\t\t\t.uploadify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//开启调试  \n\t\t\t\t\t\t\t'debug' : false,\n\t\t\t\t\t\t\t//是否自动上传  \n\t\t\t\t\t\t\t'auto' : false,\n\t\t\t\t\t\t\t'buttonText' : '选择附件',\n\t\t\t\t\t\t\t//flash  \n\t\t\t\t\t\t\t'swf' : \"${ctx}/jslib/Uploadify/uploadify.swf\",\n\t\t\t\t\t\t\t//文件选择后的容器ID  \n\t\t\t\t\t\t\t'queueID' : 'uploadfileQueue',\n\t\t\t\t\t\t\t'uploader' : '${ctx}/news/getUploadFile',\n\t\t\t\t\t\t\t'width' : '120',\n\t\t\t\t\t\t\t'height' : '29',\n\t\t\t\t\t\t\t'multi' : true,\n\t\t\t\t\t\t\t'fileTypeDesc' : '支持格式',\n\t\t\t\t\t\t\t'fileTypeExts' : '*.doc;*.docx;*.xls;*.xlsx;*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n\t\t\t\t\t\t\t'fileSizeLimit' : '5MB',\n\t\t\t\t\t\t\t'removeTimeout' : 3,\n\t\t\t\t\t\t\t'successTimeout' : 60,\n\t\t\t\t\t\t\t'removeCompleted' : false,\n\t\t\t\t\t\t\t'fileObjName' : 'Filedata',\n\t\t\t\t\t\t\t'formData' : {},\n\t\t\t\t\t\t\t'cancelImg' : \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n\t\t\t\t\t\t\t//返回一个错误，选择文件的时候触发  \n\t\t\t\t\t\t\t'onSelectError' : function(file, errorCode,\n\t\t\t\t\t\t\t\t\terrorMsg) {\n\t\t\t\t\t\t\t\tswitch (errorCode) {\n\t\t\t\t\t\t\t\tcase -100:\n\t\t\t\t\t\t\t\t\talert(\"上传的文件数量已经超出系统限制的\"\n\t\t\t\t\t\t\t\t\t\t\t+ $('#file_upload').uploadify(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'queueSizeLimit') + \"个文件！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -110:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\"\n\t\t\t\t\t\t\t\t\t\t\t+ file.name\n\t\t\t\t\t\t\t\t\t\t\t+ \"] 大小超出系统限制的\"\n\t\t\t\t\t\t\t\t\t\t\t+ $('#file_upload')\n\t\t\t\t\t\t\t\t\t\t\t\t\t.uploadify('settings',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'fileSizeLimit')\n\t\t\t\t\t\t\t\t\t\t\t+ \"大小！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -120:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\" + file.name + \"] 大小异常！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -130:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\" + file.name + \"] 类型不正确！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t//检测FLASH失败调用  \n\t\t\t\t\t\t\t'onFallback' : function() {\n\t\t\t\t\t\t\t\twaitupload = false;\n\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\talert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t//上传到服务器，服务器返回相应信息到data里  \n\t\t\t\t\t\t\t'onUploadSuccess' : function(file, data, response) {\n\t\t\t\t\t\t\t\tif (response == true) {\n\t\t\t\t\t\t\t\t\tvar dataobj = JSON.parse(data);\n\t\t\t\t\t\t\t\t\tif (dataobj.err != \"\") {\n\t\t\t\t\t\t\t\t\t\tallFileUploadSuccess = false;\n\t\t\t\t\t\t\t\t\t\t//alert(dataobj.err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (dataobj.msg != \"\") {\n\t\t\t\t\t\t\t\t\t\t$('input[name=attachmentContent]')\n\t\t\t\t\t\t\t\t\t\t\t\t.val(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'input[name=attachmentContent]')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ dataobj.msg);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tallFileUploadSuccess = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'onQueueComplete' : function(queueData) {\n\t\t\t\t\t\t\t\tif (allFileUploadSuccess == false) {\n\t\t\t\t\t\t\t\t\twaitupload = false;\n\t\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\t\talert(\"有附件上传不成功\");\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$('#newsAddForm').submit();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t}\n</script>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/newsDetail.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n\n<script type=\"text/javascript\">\n\t$(function() {\n\t\tvar content = $('#pageContent').val();\n\t\tvar html = decodeURIComponent(content);\n\t\t$('#newsContent').append(html);\n\n\t});\n</script>\n\n<div style=\"padding: 3px;\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" align=\"center\">${news.title}</td>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\t\t\t\t<td>发布者：${news.author }</td>\n\t\t\t\t<td>发布时间：${news.publishDate }</td>\n\t\t\t\t<td>所属栏目：${category.categoryName }</td>\n\t\t\t</tr>\n\t\t\t<c:if test=\"${!empty attachmentList}\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>附件</td>\n\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t<c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t\t<a href=\"${ctx}/front/news/base/downloadAttachment?attachmentID=${attachment.autoID}\" target=\"_blank\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t</c:if>\t\t\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<div class=\"table\" id=\"newsContent\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</div>\n\t<input type=\"hidden\" value=\"${news.pageContent }\" id=\"pageContent\"/>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/news/newsEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n<div style=\"padding: 3px;\">\n\t<form id=\"newsEditForm\" method=\"post\">\n\t\t<div class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>新闻标题</td>\n\t\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入新闻题目\"\n\t\t\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\t\t\tstyle=\"width: 80%; height: 29px;\" value=\"${news.title}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>所属类别</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<select id=\"categoryID\" name=\"categoryID\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<c:if test=\"${!empty categories}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${categories}\" var=\"category\">\n\t\t\t\t\t\t\t\t\t<option data-type=\"${category.typeDesc}\" value=\"${category.autoID}\"\n\t\t\t\t\t\t\t\t\t\t<c:if test=\"${cate.autoID == category.autoID }\">selected=\"selected\"</c:if>\n\t\t\t\t\t\t\t\t\t>${category.categoryName}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div>\n\t\t\t<textarea id=\"content\" rows=\"35\" cols=\"150\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 100%;\"></textarea>\n\t\t</div>\n\t\t<div id=\"file_upload_area\" class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<c:if test=\"${!empty attachmentList}\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td style=\"width:200px;\">已有附件</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t\t\t<a onclick=\"fnDeleteAttachment(this)\" href=\"javascript:void(0);\" attachmentID=\"${attachment.autoID}\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\"></a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</c:if>\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<div id=\"file_upload\">\n                    \t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<input type=\"hidden\" name=\"pageContent\" value=\"${news.pageContent}\"/>\n\t\t<input type=\"hidden\" name=\"autoID\" value=\"${news.autoID }\" />\n\t\t<input type=\"hidden\" name=\"attachmentContent\" value=\"\"/>\n\t</form>\n</div>\n<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t\n\t\tvar editor = $('#content').xheditor({cleanPaste:0,height:'300px',upBtnText:'选择',upImgUrl:'${ctx}/news/getUploadFile'});\n\t\tvar content = $('input[name=pageContent]').val();\n\t\teditor.setSource(decodeURIComponent(content));\n\t\t\n\t\tvar waitupload = false;\n\t\t$(\"#categoryID\").combobox({\n\t\t\tonLoadSuccess: function(){\n\t\t\t\tvar type = $(\"#categoryID option:selected\").attr(\"data-type\");\n\t\t\t\tif(type == \"公告\"){\n\t\t\t\t\t$(\"#file_upload_area\").show();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$(\"#file_upload_area\").hide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSelect: function(rec){ \n\t\t\t\tvar val = rec.value;\n\t\t\t\tvar type = $(\"#categoryID option[value='\" + val + \"']\").attr(\"data-type\");\n\t\t\t\tif(type == \"公告\"){\n\t\t\t\t\t$(\"#file_upload_area\").show();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$(\"#file_upload_area\").hide();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t$('#newsEditForm').form({\n\t\t\turl : '${ctx}/news/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar uploadCount = $('#uploadfileQueue').find('.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\telse if($(\"#file_upload_area\").is(\":hidden\") == false && waitupload == false && uploadCount > 0){\n\t\t\t\t\t//有附件需要上传\n\t\t\t\t\twaitupload = true;\n\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t$('#file_upload').uploadify(\"upload\",\"*\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$('input[name=pageContent]').val(encodeURIComponent(editor.getSource()));\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tfnInituploadify();\n\t});\n\t\n\tvar allFileUploadSuccess = true;\n    //初始化上传控件\n    function fnInituploadify() {\n        $(\"#file_upload\").uploadify({\n            //开启调试  \n            'debug': false,\n            //是否自动上传  \n            'auto': false,\n            'buttonText': '选择附件',\n            //flash  \n            'swf': \"${ctx}/jslib/Uploadify/uploadify.swf\",\n            //文件选择后的容器ID  \n            'queueID': 'uploadfileQueue',\n            'uploader': '${ctx}/news/getUploadFile',\n            'width': '120',\n            'height': '29',\n            'multi': true,\n            'fileTypeDesc': '支持格式',\n            'fileTypeExts': '*.doc;*.docx;*.xls;*.xlsx;*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n            'fileSizeLimit': '5MB',\n            'removeTimeout': 3,\n            'successTimeout': 60,\n            'removeCompleted': false,\n            'fileObjName': 'Filedata',\n            'formData': {  },\n\t\t\t'cancelImg': \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n            //返回一个错误，选择文件的时候触发  \n            'onSelectError': function (file, errorCode, errorMsg) {\n                switch (errorCode) {\n                    case -100:\n                        alert(\"上传的文件数量已经超出系统限制的\" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + \"个文件！\");\n                        break;\n                    case -110:\n                        alert(\"文件 [\" + file.name + \"] 大小超出系统限制的\" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + \"大小！\");\n                        break;\n                    case -120:\n                        alert(\"文件 [\" + file.name + \"] 大小异常！\");\n                        break;\n                    case -130:\n                        alert(\"文件 [\" + file.name + \"] 类型不正确！\");\n                        break;\n                }\n            },\n            //检测FLASH失败调用  \n            'onFallback': function () {\n            \twaitupload = false;\n            \tprogressClose();\n                alert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n            },\n            //上传到服务器，服务器返回相应信息到data里  \n            'onUploadSuccess': function (file, data, response) {\n                if (response == true) {\n                \tvar dataobj = JSON.parse(data);\n                    if(dataobj.err != \"\"){\n                    \tallFileUploadSuccess = false;\n                    \t//alert(dataobj.err);\n                    }\t\n                    if(dataobj.msg != \"\"){\n                    \t$('input[name=attachmentContent]').val($('input[name=attachmentContent]').val() + dataobj.msg);\n                    }\n                }\n                else {\n                \tallFileUploadSuccess = false;\n                }\n            },\n            'onQueueComplete': function (queueData) {\n            \tif(allFileUploadSuccess == false){\n            \t\twaitupload = false;\n                    progressClose();\n                    alert(\"有附件上传不成功\");\n            \t}\n            \telse{\n            \t\t$('#newsEditForm').submit();\n            \t}\n            }\n        });\n     }\n     \n     //删除附件\n     function fnDeleteAttachment(action){\n     \tif(action == undefined)\n     \t\treturn;\n     \tif(confirm(\"是否删除附件[ \" + $(action).prev().text() + \" ]？\") == false)\n     \t\treturn;\n     \t\n     \t$.ajax({\n\t\t\t\turl : '${ctx}/news/deleteAttachment',\n\t\t\t\ttype : 'post',\n\t\t\t\tdata :{\n\t\t\t\t\t\"id\" : $(action).attr('attachmentID'),\n\t\t\t\t\t\"newsid\": $('input[name=autoID]').val()\n\t\t\t\t},\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess:function(result){\n\t\t\t\t\tif (result && result.success) {\n\t\t\t\t\t\t$(action).parent('div').remove();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n     }\n</script>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestData/pestdata.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>虫害数据</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/pestData/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'desc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '70',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'type',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '虫害名称',\n\t\t\t\tfield : 'name',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '虫害数量',\n\t\t\t\tfield : 'count',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '监测站节点',\n\t\t\t\tfield : 'monitoringNodeId',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '空气温度',\n\t\t\t\tfield : 'sensor1',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '空气湿度',\n\t\t\t\tfield : 'sensor2',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '土壤温度',\n\t\t\t\tfield : 'sensor3',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '土壤湿度',\n\t\t\t\tfield : 'sensor4',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '叶表温度',\n\t\t\t\tfield : 'sensor5',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'co2',\n\t\t\t\tfield : 'sensor6',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/pestData/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/pestData/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestData/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestData/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction searchFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '检索',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestData/getSearchPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '检索',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/search')}\">\n\t\t\t<a onclick=\"searchFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">检索</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestData/getExcel')}\">\n\t\t\t<a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">Excel</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestData/pestdataAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataAddForm').form({\n\t\t\turl : '${ctx}/pestData/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\n\t\t\t\t\t<td><label>数据获取日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t    <td><label>虫害种类ID： </label> <input name=\"dictionaryId\" type=\"text\"  class=\"required\"/>\n\t\t\t\t\t <td><label>虫害名称：</label> <input name=\"name\" type=\"text\" class=\"required\" /></td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t    <td><label>虫害情况：</label> <input name=\"amount\" type=\"text\" class=\"required\" /></td>\n\t\t\t\t\t<td><label>数据图像ID：</label> <input name=\"imgId\" type=\"text\"  class=\"required\"/></td>\n\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>备注：      </label> <input name=\"remark\" type=\"text\"  class=\"required\"/></td>\n\t\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestData/pestdataEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue:'${dictionary.dictionarytypeId}'\n\t\t});\n\t\t\n\t\t$('#dictionaryEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/dictionary/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input type=\"hidden\" name=\"id\" value=\"${dictionary.id}\"/>\n\t\t\t\t<input name=\"code\" type=\"text\" value=\"${dictionary.code}\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" value=\"${dictionary.text}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"${dictionary.seq}\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td><select name=\"state\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${stateList}\" var=\"stateList\">\n\t\t\t\t\t\t\t<option value=\"${stateList.key}\" <c:if test=\"${stateList.key == dictionary.state}\">selected=\"selected\"</c:if>>${stateList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestData/pestdataSearch.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataSearchForm').form({\n\t\t\turl : '${ctx}/sensor/search',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dataSearchForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t       <tr>\t<label>请选择检索条件：</label></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t   \t<td><label>开始日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\t\t\t\t\t<td><label>结束日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\n\t\t\t\t</tr>\n\t\t\t\t<tr><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">生成图表</a></tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestImg/ImgInfo.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n\n\n\n\n<div class=\"pageHeader\">\n        <img src=\"${image_info.path}\" width=\"300\" height=\"300\"/>\n</div>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestImg/pestImg.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>虫害数据</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/pestImage/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '采集日期',\n\t\t\t\tfield : 'imageDate',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '采集节点',\n\t\t\t\tfield : 'moniNodeId',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '备注',\n\t\t\t\tfield : 'remark',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.id)+'&nbsp;&nbsp;|;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/pestImage/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 350,\n\t\t\theight : 350,\n\t\t\thref : '${ctx}/pestImage/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestImage/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestImage/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction searchFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '检索',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/pestImage/getSearchPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '检索',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/search')}\">\n\t\t\t<a onclick=\"searchFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">检索</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/pestImage/getExcel')}\">\n\t\t\t<a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">Excel</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestImg/pestImgAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataAddForm').form({\n\t\t\turl : '${ctx}/pestData/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\n\t\t\t\t\t<td><label>数据获取日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t    <td><label>图像上传： </label> <input name=\"dictionaryId\" type=\"text\"  class=\"required\"/>\n\t\t\t\t\t \n\n\t\t\t\t</tr>\n\t\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>备注：      </label> <input name=\"remark\" type=\"text\"  class=\"required\"/></td>\n\t\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestImg/pestImgEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue:'${dictionary.dictionarytypeId}'\n\t\t});\n\t\t\n\t\t$('#dictionaryEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/dictionary/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input type=\"hidden\" name=\"id\" value=\"${dictionary.id}\"/>\n\t\t\t\t<input name=\"code\" type=\"text\" value=\"${dictionary.code}\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" value=\"${dictionary.text}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"${dictionary.seq}\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td><select name=\"state\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${stateList}\" var=\"stateList\">\n\t\t\t\t\t\t\t<option value=\"${stateList.key}\" <c:if test=\"${stateList.key == dictionary.state}\">selected=\"selected\"</c:if>>${stateList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/pestImg/pestImgSearch.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataSearchForm').form({\n\t\t\turl : '${ctx}/sensor/search',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dataSearchForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t       <tr>\t<label>请选择检索条件：</label></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t   \t<td><label>开始日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\t\t\t\t\t<td><label>结束日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\n\t\t\t\t</tr>\n\t\t\t\t<tr><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">生成图表</a></tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sensor/sensorSearch.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataSearchForm').form({\n\t\t\turl : '${ctx}/sensor/search',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dataSearchForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t       <tr>\t<label>请选择检索条件：</label></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t   \t<td><label>开始日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\t\t\t\t\t<td><label>结束日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\n\n\t\t\t\t</tr>\n\t\t\t\t<tr><a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">生成图表</a></tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sensor/sensordata.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>虫害数据</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/sensor/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : false,//允许选择多行\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '监测点ID',\n\t\t\t\tfield : 'monitoringNodeId',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '采集日期',\n\t\t\t\tfield : 'createDate',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '空气温度',\n\t\t\t\tfield : 'sensor1',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '空气湿度',\n\t\t\t\tfield : 'sensor2',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '土壤温度',\n\t\t\t\tfield : 'sensor3',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '土壤湿度',\n\t\t\t\tfield : 'sensor4',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '叶表温度',\n\t\t\t\tfield : 'sensor5',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'co2',\n\t\t\t\tfield : 'sensor6',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/sensor/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/sensor/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/sensor/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/sensor/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\n\tfunction searchFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '检索',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/sensor/getSearchPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '检索',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/search')}\">\n\t\t\t<a onclick=\"searchFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">检索</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensor/getExcel')}\">\n\t\t\t<a onclick=\";\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">Excel</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sensor/sensordataAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#dataAddForm').form({\n\t\t\turl : '${ctx}/pestData/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n\t\n\t$.fn.datebox.defaults.formatter = function(date){\n\tvar y = date.getFullYear();\n\tvar m = date.getMonth()+1;\n\tvar d = date.getDate();\n\treturn y+'/'+m+'/'+d;\n}\n\n\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>监测点ID：         </label> <input name=\"nodeId\" type=\"text\" class=\"required\" /></td>\n\t\t\t\t\t<td><label>数据获取日期：</label> \n\t\t\t\t\t\t <input class=\"easyui-datebox\"  name=\"createDate\"  data-options=\"sharedCalendar:'#cc'\">\n\t\t\t\t\t</td>\t\t\n\t\t\t\t\t\n\t\t\t\t</tr>\n\t \n\t\t\t\t<tr>\n\t\t\t\t    <td><label>虫害种类ID： </label> <input name=\"dictionaryId\" type=\"text\"  class=\"required\"/>\n\t\t\t\t\t <td><label>虫害名称：</label> <input name=\"name\" type=\"text\" class=\"required\" /></td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t    <td><label>虫害情况：</label> <input name=\"amount\" type=\"text\" class=\"required\" /></td>\n\t\t\t\t\t<td><label>数据图像ID：</label> <input name=\"imgId\" type=\"text\"  class=\"required\"/></td>\n\t\t\t\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><label>备注：      </label> <input name=\"remark\" type=\"text\"  class=\"required\"/></td>\n\t\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sensor/sensordataEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue:'${dictionary.dictionarytypeId}'\n\t\t});\n\t\t\n\t\t$('#dictionaryEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/dictionary/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input type=\"hidden\" name=\"id\" value=\"${dictionary.id}\"/>\n\t\t\t\t<input name=\"code\" type=\"text\" value=\"${dictionary.code}\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" value=\"${dictionary.text}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"${dictionary.seq}\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td><select name=\"state\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${stateList}\" var=\"stateList\">\n\t\t\t\t\t\t\t<option value=\"${stateList.key}\" <c:if test=\"${stateList.key == dictionary.state}\">selected=\"selected\"</c:if>>${stateList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/station/organizationEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/organization/tree?flag=false',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue :'${organization.pid}'\n\t\t});\n\t\t\n\t\tif ($(':input[name=\"id\"]').val().length > 0) {\n\t\t\t$.post( '${ctx}/organization/get', {\n\t\t\t\tid : $(':input[name=\"id\"]').val(),\n\t\t\t}, function(result) {\n\t\t\t\tif (result.id != undefined) {\n\t\t\t\t\t$('#organizationEditForm').form('load', {\n\t\t\t\t\t\t'id' : result.id,\n\t\t\t\t\t\t'departmentCode' : result.departmentCode,\n\t\t\t\t\t\t'departmentName' : result.departmentName,\n\t\t\t\t\t\t'icon' : result.icon,\n\t\t\t\t\t\t'seq' : result.seq\n\t\t\t\t\t});\n\t\t\t\t\t$('#pid').combotree('setValue',result.pid);\n\t\t\t\t}\n\t\t\t}, 'json');\n\t\t}\n\t\t\n\t\t$('#organizationEditForm').form({\n\t\t\turl : '${ctx}/organization/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"organizationEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>部门编号</td>\n\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${organization.id}\" /><input name=\"departmentCode\" type=\"text\"  value=\"${organization.departmentCode}\"/></td>\n\t\t\t\t<td>部门名称</td>\n\t\t\t\t<td><input name=\"departmentName\" type=\"text\" value=\"${organization.departmentName}\" placeholder=\"请输入部门名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" value=\"${organization.seq}\" style=\"widtd: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" value=\"${organization.icon}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\" value=\"${organization.address}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/station/station.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<!-- 管理员对该模块各个操作权限的检查 -->\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/station/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/station/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/sensorUpdate/updateStation')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canUpdate = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar treeGrid;\n\t$(function() {\n\t\ttreeGrid = $('#treeGrid').treegrid({\n\t\t\turl : '${ctx}/station/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'name',\n\t\t\tparentField : 'pid',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t} ] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\tfield : 'code',\n\t\t\t\ttitle : '编码',\n\t\t\t\twidth : 80\n\t\t\t},{\n\t\t\t\tfield : 'name',\n\t\t\t\ttitle : '名称',\n\t\t\t\twidth : 200\n\t\t\t}, {\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '创建时间',\n\t\t\t\tfield : 'createDate'\n\t\t\t}, {\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '数据最新时间',\n\t\t\t\tfield : 'sensorDateUpdate'\n\t\t\t},{\n\t\t\t\tfield : 'pid',\n\t\t\t\ttitle : '上级站点ID',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t}, {\n\t\t\t\tfield : 'pname',\n\t\t\t\ttitle : '上级站点名称',\n\t\t\t\twidth : 150\n\t\t\t} ,{\n\t\t\t\tfield : 'address',\n\t\t\t\ttitle : '地址',\n\t\t\t\twidth : 150\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth :150,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canUpdate) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"updateFun(\\'{0}\\');\" >更新数据</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction editFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '编辑',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 300,\n\t\t\t\thref : '${ctx}/station/editPage?id=' + node.id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '编辑',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#stationEditForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction updateFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要更新当前基站数据。（数据将从云平台获取）', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/sensorUpdate/updateStation', {\n\t\t\t\t\t\tstationId : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要删除当前资源？删除当前资源会连同子资源一起删除!', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/station/delete', {\n\t\t\t\t\t\tid : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/station/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#stationAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body>\n\t<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t\t<table id=\"treeGrid\"></table>\n\t\t</div>\n\t\t\n\t\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/station/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/station/stationAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/station/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#stationAddForm').form({\n\t\t\turl : '${ctx}/station/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"stationAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编号</td>\n\t\t\t\t<td><input name=\"code\" type=\"text\" placeholder=\"请输入编号\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>站点名称</td>\n\t\t\t\t<td><input name=\"name\" type=\"text\" placeholder=\"请输入名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>类型</td>\n\t\t\t\t<td><input name=\"type\" type=\"text\" placeholder=\"请输入类型\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级部门</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width:200px;height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/dictionary.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/dictionary/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/dictionary/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar dictionarytypeTree;\n\t$(function() {\n\t\n\t\tdictionarytypeTree = $('#dictionarytypeTree').tree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n \t\t\t\tdataGrid.datagrid('load', {\n\t\t\t\t    dictionarytypeId: node.id\n\t\t\t\t});\n \t\t\t}\n\t\t});\n\t\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/dictionary/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '编码',\n\t\t\t\tfield : 'code',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '名称',\n\t\t\t\tfield : 'text',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t} , {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '排序号',\n\t\t\t\tfield : 'seq',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '所属类别',\n\t\t\t\talign : 'center',\n\t\t\t\tfield : 'dictionarytypeName'\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否默认',\n\t\t\t\tfield : 'isDefault',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '默认';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '否';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'active',\n\t\t\t\talign : 'center',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '停用';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\talign : 'center',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif(row.isdefault!=0){\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/dictionary/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dictionaryAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前字典？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/dictionary/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/dictionary/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dictionaryEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"字典列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div data-options=\"region:'west',border:false,split:true\" title=\"字典类别\" style=\"width:200px;overflow: hidden; \">\n\t\t<table id=\"dictionarytypeTree\" style=\"width:180px;margin: 10px 10px 10px 10px\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/dictionaryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\trequired:true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#dictionaryAddForm').form({\n\t\t\turl : '${ctx}/dictionary/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input name=\"code\" type=\"text\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"0\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/dictionaryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue:'${dictionary.dictionarytypeId}'\n\t\t});\n\t\t\n\t\t$('#dictionaryEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/dictionary/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input type=\"hidden\" name=\"id\" value=\"${dictionary.id}\"/>\n\t\t\t\t<input name=\"code\" type=\"text\" value=\"${dictionary.code}\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" value=\"${dictionary.text}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"${dictionary.seq}\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td><select name=\"active\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${stateList}\" var=\"stateList\">\n\t\t\t\t\t\t\t<option value=\"${stateList.key}\" <c:if test=\"${stateList.key == dictionary.active}\">selected=\"selected\"</c:if>>${stateList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/organization.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<!-- 管理员对该模块各个操作权限的检查 -->\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar treeGrid;\n\t$(function() {\n\t\ttreeGrid = $('#treeGrid').treegrid({\n\t\t\turl : '${ctx}/organization/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'name',\n\t\t\tparentField : 'pid',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t} ] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\tfield : 'departmentCode',\n\t\t\t\ttitle : '编码',\n\t\t\t\twidth : 80\n\t\t\t},{\n\t\t\t\tfield : 'departmentName',\n\t\t\t\ttitle : '部门名称',\n\t\t\t\twidth : 200\n\t\t\t}, {\n\t\t\t\tfield : 'seq',\n\t\t\t\ttitle : '排序',\n\t\t\t\twidth : 40\n\t\t\t}, {\n\t\t\t\tfield : 'icon',\n\t\t\t\ttitle : '图标',\n\t\t\t\twidth : 80\n\t\t\t},  {\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '创建时间',\n\t\t\t\tfield : 'createDate'\n\t\t\t},{\n\t\t\t\tfield : 'pid',\n\t\t\t\ttitle : '上级资源ID',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t}, {\n\t\t\t\tfield : 'pname',\n\t\t\t\ttitle : '上级部门名称',\n\t\t\t\twidth : 150\n\t\t\t} ,{\n\t\t\t\tfield : 'address',\n\t\t\t\ttitle : '地址',\n\t\t\t\twidth : 150\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction editFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '编辑',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 300,\n\t\t\t\thref : '${ctx}/organization/editPage?id=' + node.id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '编辑',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#organizationEditForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要删除当前资源？删除当前资源会连同子资源一起删除!', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/organization/delete', {\n\t\t\t\t\t\tid : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/organization/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#organizationAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body>\n\t<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t\t<table id=\"treeGrid\"></table>\n\t\t</div>\n\t\t\n\t\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/organizationAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#organizationAddForm').form({\n\t\t\turl : '${ctx}/organization/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"organizationAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编号</td>\n\t\t\t\t<td><input name=\"departmentCode\" type=\"text\" placeholder=\"请输入部门编号\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>部门名称</td>\n\t\t\t\t<td><input name=\"departmentName\" type=\"text\" placeholder=\"请输入部门名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\" value=\"0\"></td>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td><input  name=\"icon\" value=\"icon_folder\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级部门</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width:200px;height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/organizationEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/organization/tree?flag=false',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue :'${organization.pid}'\n\t\t});\n\t\t\n\t\tif ($(':input[name=\"id\"]').val().length > 0) {\n\t\t\t$.post( '${ctx}/organization/get', {\n\t\t\t\tid : $(':input[name=\"id\"]').val(),\n\t\t\t}, function(result) {\n\t\t\t\tif (result.id != undefined) {\n\t\t\t\t\t$('#organizationEditForm').form('load', {\n\t\t\t\t\t\t'id' : result.id,\n\t\t\t\t\t\t'departmentCode' : result.departmentCode,\n\t\t\t\t\t\t'departmentName' : result.departmentName,\n\t\t\t\t\t\t'icon' : result.icon,\n\t\t\t\t\t\t'seq' : result.seq\n\t\t\t\t\t});\n\t\t\t\t\t$('#pid').combotree('setValue',result.pid);\n\t\t\t\t}\n\t\t\t}, 'json');\n\t\t}\n\t\t\n\t\t$('#organizationEditForm').form({\n\t\t\turl : '${ctx}/organization/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"organizationEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>部门编号</td>\n\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${organization.id}\" /><input name=\"departmentCode\" type=\"text\"  value=\"${organization.departmentCode}\"/></td>\n\t\t\t\t<td>部门名称</td>\n\t\t\t\t<td><input name=\"departmentName\" type=\"text\" value=\"${organization.departmentName}\" placeholder=\"请输入部门名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" value=\"${organization.seq}\" style=\"widtd: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" value=\"${organization.icon}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\" value=\"${organization.address}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/resource.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar treeGrid;\n\t$(function() {\n\t\t\n\t\ttreeGrid = $('#treeGrid').treegrid({\n\t\t\turl : '${ctx}/resource/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'name',\n\t\t\tparentField : 'pid',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\ttitle : '编号',\n\t\t\t\tfield : 'id',\n\t\t\t\twidth : 40\n\t\t\t} ] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\tfield : 'name',\n\t\t\t\ttitle : '资源名称',\n\t\t\t\twidth : 200\n\t\t\t}, {\n\t\t\t\tfield : 'url',\n\t\t\t\ttitle : '资源路径',\n\t\t\t\twidth : 230\n\t\t\t}, {\n\t\t\t\tfield : 'seq',\n\t\t\t\ttitle : '排序',\n\t\t\t\twidth : 40\n\t\t\t}, {\n\t\t\t\tfield : 'icon',\n\t\t\t\ttitle : '图标',\n\t\t\t\twidth : 150\n\t\t\t}, {\n\t\t\t\tfield : 'resourcetype',\n\t\t\t\ttitle : '资源类型',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '菜单';\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '按钮';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield : 'pid',\n\t\t\t\ttitle : '上级资源ID',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t}, {\n\t\t\t\tfield : 'cstate',\n\t\t\t\ttitle : '状态',\n\t\t\t\twidth : 40,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '停用';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction editFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '编辑',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 350,\n\t\t\t\thref : '${ctx}/resource/editPage?id=' + node.id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '编辑',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#resourceEditForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要删除当前资源？删除当前资源会连同子资源一起删除!', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${pageContext.request.contextPath}/resource/delete', {\n\t\t\t\t\t\tid : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t\tparent.layout_west_tree.tree('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 350,\n\t\t\thref : '${ctx}/resource/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#resourceAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body>\n\t<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t\t<table id=\"treeGrid\"></table>\n\t\t</div>\n\t</div>\n\t\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/resourceAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/resource/allTree?flag=false',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#resourceAddForm').form({\n\t\t\turl : '${ctx}/resource/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为resource.jsp页面预定义好了\n\t\t\t\t\t//parent.layout_west_tree.tree('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"resourceAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>资源名称</td>\n\t\t\t\t<td><input name=\"name\" type=\"text\" placeholder=\"请输入资源名称\" class=\"easyui-validatebox span2\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>资源类型</td>\n\t\t\t\t<td><select name=\"resourcetype\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">菜单</option>\n\t\t\t\t\t\t\t<option value=\"1\">按钮</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>资源路径</td>\n\t\t\t\t<td><input name=\"url\" type=\"text\" placeholder=\"请输入资源路径\" class=\"easyui-validatebox span2\" data-options=\"width:140,height:29\" ></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"0\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" /></td>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td ><select name=\"cstate\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">正常</option>\n\t\t\t\t\t\t\t<option value=\"1\">停用</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>备注</td>\n\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/resourceEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/resource/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\tif ($(':input[name=\"id\"]').val().length > 0) {\n\t\t\t$.post( '${ctx}/resource/get', {\n\t\t\t\tid : $(':input[name=\"id\"]').val(),\n\t\t\t}, function(result) {\n\t\t\t\tif (result.id != undefined) {\n\t\t\t\t\t$('form').form('load', {\n\t\t\t\t\t\t'id' : result.id,\n\t\t\t\t\t\t'name' : result.name,\n\t\t\t\t\t\t'url' : result.url,\n\t\t\t\t\t\t'resourcetype' : result.resourcetype,\n\t\t\t\t\t\t'description' : result.description,\n\t\t\t\t\t\t'icon' : result.icon,\n\t\t\t\t\t\t'seq' : result.seq,\n\t\t\t\t\t\t'cstate':result.cstate\n\t\t\t\t\t});\n\t\t\t\t\t$('#pid').combotree('setValue',result.pid);\n\t\t\t\t}\n\t\t\t}, 'json');\n\t\t}\n\t\t\n\t\t$('#resourceEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/resource/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为resource.jsp页面预定义好了\n\t\t\t\t\tparent.layout_west_tree.tree('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"resourceEditForm\" method=\"post\">\n\t\t<table  class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>资源名称</td>\n\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${resource.id}\" >\n\t\t\t\t<input name=\"name\" type=\"text\" value=\"${resource.name}\" class=\"easyui-validatebox span2\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>资源类型</td>\n\t\t\t\t<td><select name=\"resourcetype\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">菜单</option>\n\t\t\t\t\t\t\t<option value=\"1\">按钮</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>资源路径</td>\n\t\t\t\t<td><input name=\"url\" type=\"text\" placeholder=\"请输入资源路径\" class=\"easyui-validatebox span2\" ></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" /></td>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td ><select name=\"cstate\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">正常</option>\n\t\t\t\t\t\t\t<option value=\"1\">停用</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>备注</td>\n\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/role.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/grant')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canGrant = true;\n\t</script>\n</c:if>\n<title>角色管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/role/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '名称',\n\t\t\t\tfield : 'name',\n\t\t\t\tsortable : true\n\t\t\t} , {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '排序号',\n\t\t\t\tfield : 'seq',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否默认',\n\t\t\t\tfield : 'isdefault',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '默认';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '否';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '描述',\n\t\t\t\tfield : 'description'\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\t\tif ($.canGrant) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"grantFun(\\'{0}\\');\" >授权</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/role/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前用户？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/role/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/role/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction grantFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\t\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '授权',\n\t\t\twidth : 500,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/role/grantPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '授权',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleGrantForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/roleAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<script type=\"text/javascript\">\n\t$(function() {\n\n\t\t$('#roleAddForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/role/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\" >\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\" >\n\t\t<form id=\"roleAddForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>角色名称</td>\n\t\t\t\t\t<td><input name=\"name\" type=\"text\" placeholder=\"请输入角色名称\" class=\"easyui-validatebox span2\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>排序</td>\n\t\t\t\t\t<td><input name=\"seq\" value=\"0\" class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>备注</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"\" cols=\"\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/roleEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t\n\t\t$('#roleEditForm').form({\n\t\t\turl : '${ctx}/role/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t$(\"#description\").val('${role.description}');\n\t\t\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"roleEditForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>角色名称</td>\n\t\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${role.id}\">\n\t\t\t\t\t<input name=\"name\" type=\"text\" placeholder=\"请输入角色名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${role.name}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>是否为默认</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t    <select name=\"isdefault\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<option value=\"0\" >非默认</option>\n\t\t\t\t\t\t<option value=\"1\" >默认</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>备注</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea id=\"description\" name=\"description\" rows=\"\" cols=\"\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/roleGrant.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\tvar resourceTree;\n\t$(function() {\n\t\tresourceTree = $('#resourceTree').tree({\n\t\t\turl : '${ctx}/resource/allTree?flag=true',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tcheckbox : true,\n\t\t\tonClick : function(node) {\n\t\t\t},\n\t\t\tonLoadSuccess : function(node, data) {\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/role/get', {\n\t\t\t\t\tid : '${role.id}'\n\t\t\t\t}, function(result) {\n\t\t\t\t\tvar ids;\n\t\t\t\t\tif (result.id != undefined&&result.resourceIds!= undefined) {\n\t\t\t\t\t\tids = $.stringToList(result.resourceIds);\n\t\t\t\t\t}\n\t\t\t\t\tif (ids.length > 0) {\n\t\t\t\t\t\tfor ( var i = 0; i < ids.length; i++) {\n\t\t\t\t\t\t\tif (resourceTree.tree('find', ids[i])) {\n\t\t\t\t\t\t\t\tresourceTree.tree('check', resourceTree.tree('find', ids[i]).target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t\tprogressClose();\n\t\t\t},\n\t\t\tcascadeCheck : false\n\t\t});\n\n\t\t$('#roleGrantForm').form({\n\t\t\turl : '${ctx}/role/grant',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\tvar checknodes = resourceTree.tree('getChecked');\n\t\t\t\tvar ids = [];\n\t\t\t\tif (checknodes && checknodes.length > 0) {\n\t\t\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\t\t\tids.push(checknodes[i].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$('#resourceIds').val(ids);\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction checkAll() {\n\t\tvar nodes = resourceTree.tree('getChecked', 'unchecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tresourceTree.tree('check', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction uncheckAll() {\n\t\tvar nodes = resourceTree.tree('getChecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tresourceTree.tree('uncheck', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction checkInverse() {\n\t\tvar unchecknodes = resourceTree.tree('getChecked', 'unchecked');\n\t\tvar checknodes = resourceTree.tree('getChecked');\n\t\tif (unchecknodes && unchecknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < unchecknodes.length; i++) {\n\t\t\t\tresourceTree.tree('check', unchecknodes[i].target);\n\t\t\t}\n\t\t}\n\t\tif (checknodes && checknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\tresourceTree.tree('uncheck', checknodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n</script>\n<div id=\"roleGrantLayout\" class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'west'\" title=\"系统资源\" style=\"width: 300px; padding: 1px;\">\n\t\t<div class=\"well well-small\">\n\t\t\t<form id=\"roleGrantForm\" method=\"post\">\n\t\t\t\t<input name=\"id\" type=\"hidden\"  value=\"${role.id}\" readonly=\"readonly\">\n\t\t\t\t<ul id=\"resourceTree\"></ul>\n\t\t\t\t<input id=\"resourceIds\" name=\"resourceIds\" type=\"hidden\" />\n\t\t\t</form>\n\t\t</div>\n\t</div>\n\t<div data-options=\"region:'center'\" title=\"\" style=\"overflow: hidden; padding: 10px;\">\n\t\t<div>\n\t\t\t<button class=\"btn btn-success\" onclick=\"checkAll();\">全选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-warning\" onclick=\"checkInverse();\">反选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-inverse\" onclick=\"uncheckAll();\">取消</button>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/user.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>用户管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar organizationTree;\n\t$(function() {\n\t\t\n\t\n\t\torganizationTree = $('#organizationTree').tree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n\t\t\t\tdataGrid.datagrid('load', {\n\t\t\t\t    organizationId: node.id\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/user/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'createDate',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '登录名',\n\t\t\t\tfield : 'loginName',\n\t\t\t\tsortable : false\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '姓名',\n\t\t\t\tfield : 'realName',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '职称',\n\t\t\t\tfield : 'techTitle',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '专长',\n\t\t\t\tfield : 'techType',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '部门ID',\n\t\t\t\tfield : 'organizationId',\n\t\t\t\thidden : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '所属部门',\n\t\t\t\tfield : 'organizationName'\n\t\t\t}] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '性别',\n\t\t\t\tfield : 'sex',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '男';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '女';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '年龄',\n\t\t\t\tfield : 'age',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '用户类型',\n\t\t\t\tfield : 'roleNames',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'active',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '停用';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否发布',\n\t\t\t\tfield : 'needPublish',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '发布';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '不发布';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 200,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '';\n\t\t\t\t\tif(row.isdefault!=0){\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"manualFun(\\'{0}\\');\" >科目</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t}] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\t\tfunction manualFun(id) {\n\t\t\tif (id == undefined) {\n\t\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\t\tid = rows[0].id;\n\t\t\t} else {\n\t\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\t}\n\t\t\t\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '授权',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 500,\n\t\t\t\thref : '${ctx}/user/manualPage?id=' + id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '授权',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#usermanualForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/user/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#userAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前用户？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/user/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/user/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#userEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction searchByBox(value,name)\n\t{\n\t\t$('#dataGrid').datagrid('load', {    \n\t\t\t\"searchKey\": name, \"searchValue\": value,\n\t\t});\t\n\t}\n\t\n\tfunction doSearch(){\n\t\t\t    $('#dataGrid').datagrid('load', {    \n\t        realName: $('#searchByName').val(),\n\t    }); \n\t}\n\t\n\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"用户列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div data-options=\"region:'west',border:false,split:true\" title=\"组织机构\" style=\"width:200px;overflow: hidden; \">\n\t\t<table id=\"organizationTree\" style=\"width:180px;margin: 10px 10px 10px 10px\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t     <div>\n            <c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t    </c:if>\n\t\t </div>\n\t\t <div>\n\t\t\t 姓名：\n\t\t\t<input id=\"searchByName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\"/>\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" data-options=\"plain:true\" onclick=\"doSearch()\">搜索</a>\n\t\t </div>\n\t</div>\n\n</body>\n\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/userAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\n\n\t$(function() {\n\t\t\n\t\t$('#organizationId').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#roleIds').combotree({\n\t\t    url: '${ctx}/role/tree',\n\t\t    multiple: true,\n\t\t    required: true,\n\t\t    panelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#userAddForm').form({\n\t\t\turl : '${ctx}/user/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tpubMethod.bind('usertype', 'usertype');\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"userAddForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>登录名</td>\n\t\t\t\t\t<td><input name=\"loginName\" type=\"text\" placeholder=\"请输入登录名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t\t<td>姓名</td>\n\t\t\t\t\t<td><input name=\"realName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>密码</td>\n\t\t\t\t\t<td><input name=\"password\" type=\"password\" placeholder=\"请输入密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t<td>性别</td>\n\t\t\t\t\t<td><select name=\"sex\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${sexList}\" var=\"sexList\">\n\t\t\t\t\t\t\t<option value=\"${sexList.key}\" >${sexList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>年龄</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"age\"/></td>\n\t\t\t\t\t<td>专长</td>\n\t\t\t\t\t<td><input id=\"techType\" name=\"techType\"  style=\"width: 140px; height: 29px;\" /></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>职称</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"techTitle\"/></td>\n\t\t\t\t\t<td>是否展示</td>\n\t\t\t\t\t<td><select name=\"needPublish\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${needPublishList}\" var=\"needPublishList\">\n\t\t\t\t\t\t\t<option value=\"${needPublishList.key}\" >${needPublishList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>部门</td>\n\t\t\t\t\t<td><select id=\"organizationId\" name=\"organizationId\" style=\"width: 140px; height: 29px;\" class=\"easyui-validatebox\" data-options=\"required:true\"></select></td>\n\t\t\t\t\t<td>角色</td>\n\t\t\t\t\t<td><select id=\"roleIds\"  name=\"roleIds\"   style=\"width: 140px; height: 29px;\"></select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>联系电话</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"phoneNumber\" class=\"easyui-validatebox\" data-options=\"required:true\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>专家描述</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/userEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\n\t\t$('#organizationId').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue : '${user.organizationId}'\n\t\t});\n\t\t\n\t\t$('#roleIds').combotree({\n\t\t\turl : '${ctx}/role/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tmultiple : true,\n\t\t\trequired: true,\n\t\t\tcascadeCheck : false,\n\t\t\tvalue : $.stringToList('${user.roleIds}')\n\t\t});\n\t\t\n\t\t$('#userEditForm').form({\n\t\t\turl : '${ctx}/user/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tpubMethod.bind('usertype', 'usertype');\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"userEditForm\" method=\"post\">\n\t\t\t<div class=\"light-info\" style=\"overflow: hidden;padding: 3px;\">\n\t\t\t\t<div>密码不修改请留空。</div>\n\t\t\t</div>\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>登录名</td>\n\t\t\t\t\t<td><input name=\"autoID\" type=\"hidden\"  value=\"${user.autoID}\">\n\t\t\t\t\t<input name=\"loginName\" type=\"text\" placeholder=\"请输入登录名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.loginName}\"></td>\n\t\t\t\t\t<td>姓名</td>\n\t\t\t\t\t<td><input name=\"realName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.realName}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>密码</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"password\"/></td>\n\t\t\t\t\t<td>性别</td>\n\t\t\t\t\t<td><select name=\"sex\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${sexList}\" var=\"sexList\">\n\t\t\t\t\t\t\t<option value=\"${sexList.key}\" <c:if test=\"${sexList.key == user.sex}\">selected=\"selected\"</c:if>>${sexList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>年龄</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"age\" value=\"${user.age}\"/></td>\n\t\t\t\t\t<td>专长</td>\n\t\t\t\t\t<td><input id=\"techType\" name=\"techType\" value=\"${user.techType}\" style=\"width: 140px; height: 29px;\" /></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>职称</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"techTitle\" value=\"${user.techTitle}\"/></td>\n\t\t\t\t\t<td>是否展示</td>\n\t\t\t\t\t<td><select name=\"needPublish\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${needPublishList}\" var=\"needPublishList\">\n\t\t\t\t\t\t\t<option value=\"${needPublishList.key}\" <c:if test=\"${needPublishList.key == user.needPublish}\">selected=\"selected\"</c:if>>${needPublishList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>部门</td>\n\t\t\t\t\t<td><select id=\"organizationId\" name=\"organizationId\" style=\"width: 140px; height: 29px;\" class=\"easyui-validatebox\" data-options=\"required:true\"></select></td>\n\t\t\t\t\t<td>角色</td>\n\t\t\t\t\t<td><input  id=\"roleIds\" name=\"roleIds\" style=\"width: 140px; height: 29px;\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>联系电话</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"phoneNumber\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.phoneNumber}\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>专家描述</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" value=\"${user.description}\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/userEditPwd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\n\t\t$('#editUserPwdForm').form({\n\t\t\turl : '${ctx}/user/editUserPwd',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t<c:if test=\"${sessionInfo.name == null}\">\n\t\t\t<div>登录已超时，请重新登录.</div>\n\t\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t\ttry {\n\t\t\t\t\twindow.location.href='${ctx}/admin/index';\n\t\t\t\t} catch (e) {\n\t\t\t\t}\n\t\t\t</script>\n\t\t</c:if>\n\t\t<c:if test=\"${sessionInfo.name != null}\">\n\t\t\t<form id=\"editUserPwdForm\" method=\"post\">\n\t\t\t\t<table>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>登录名</th>\n\t\t\t\t\t\t<td>${sessionInfo.name}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>原密码</th>\n\t\t\t\t\t\t<td><input name=\"oldPwd\" type=\"password\" placeholder=\"请输入原密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>新密码</th>\n\t\t\t\t\t\t<td><input name=\"pwd\" type=\"password\" placeholder=\"请输入新密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>重复密码</th>\n\t\t\t\t\t\t<td><input name=\"rePwd\" type=\"password\" placeholder=\"请再次输入新密码\" class=\"easyui-validatebox\" data-options=\"required:true,validType:'eqPwd[\\'#editUserPwdForm input[name=pwd]\\']'\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</form>\n\t\t</c:if>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/eumode/sys/userManual.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\tvar manualCategoryTree;\n\t$(function() {\n\t\tmanualCategoryTree = $('#manualCategoryTree').tree({\n\t\t\turl : '${ctx}/manualCategory/getAllManualTree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tcheckbox : true,\n\t\t\tonClick : function(node) {\n\t\t\t},\n\t\t\tonLoadSuccess : function(node, data) {\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/user/get', {\n\t\t\t\t\tid : '${user.autoID}'\n\t\t\t\t}, function(result) {\n\t\t\t\t\tvar ids;\n\t\t\t\t\tif (result.autoID != undefined&&result.manualIDs!= undefined) {\n\t\t\t\t\t\tids = $.stringToList(result.manualIDs);\n\t\t\t\t\t}\n\t\t\t\t\tif (ids.length > 0) {\n\t\t\t\t\t\tfor ( var i = 0; i < ids.length; i++) {\n\t\t\t\t\t\t\tif (manualCategoryTree.tree('find', ids[i])) {\n\t\t\t\t\t\t\t\tmanualCategoryTree.tree('check', manualCategoryTree.tree('find', ids[i]).target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t\tprogressClose();\n\t\t\t},\n\t\t\tcascadeCheck : false\n\t\t});\n\t\t$('#usermanualForm').form({\n\t\t\turl : '${ctx}/user/setManual',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\tvar checknodes = manualCategoryTree.tree('getChecked');\n\t\t\t\tvar ids = [];\n\t\t\t\tif (checknodes && checknodes.length > 0) {\n\t\t\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\t\t\tids.push(checknodes[i].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$('#manualIDs').val(ids);\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction checkAll() {\n\t\tvar nodes = manualCategoryTree.tree('getChecked', 'unchecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('check', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction uncheckAll() {\n\t\tvar nodes = manualCategoryTree.tree('getChecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('uncheck', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction checkInverse() {\n\t\tvar unchecknodes = manualCategoryTree.tree('getChecked', 'unchecked');\n\t\tvar checknodes = manualCategoryTree.tree('getChecked');\n\t\tif (unchecknodes && unchecknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < unchecknodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('check', unchecknodes[i].target);\n\t\t\t}\n\t\t}\n\t\tif (checknodes && checknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('uncheck', checknodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n</script>\n<div id=\"roleGrantLayout\" class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'west'\" title=\"科目目录\" style=\"width: 300px; padding: 1px;\">\n\t\t<div class=\"well well-small\">\n\t\t\t<form id=\"usermanualForm\" method=\"post\">\n\t\t\t\t<input name=\"autoID\" type=\"hidden\"  value=\"${user.autoID}\" readonly=\"readonly\">\n\t\t\t\t<ul id=\"manualCategoryTree\"></ul>\n\t\t\t\t<input id=\"manualIDs\" name=\"manualIDs\" type=\"hidden\" />\n\t\t\t</form>\n\t\t</div>\n\t</div>\n\t<div data-options=\"region:'center'\" title=\"\" style=\"overflow: hidden; padding: 10px;\">\n\t\t<div>\n\t\t\t<button class=\"btn btn-success\" onclick=\"checkAll();\">全选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-warning\" onclick=\"checkInverse();\">反选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-inverse\" onclick=\"uncheckAll();\">取消</button>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/applycommpany.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/detailinputunit.css\" rel=\"stylesheet\" media=\"screen\">\n  \t<script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n \t<style>\n \t\t.question_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n\t\t.question_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n\t\t.question_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 18px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\t\t.question_title{border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0;padding: 5px; width: 300px; font-size: 15px;}\n \t</style>\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./commpanylist.html\"> 农企信息列表</a><a> &gt; </a><a href=\"./applycommpany.html\"> 申请</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"into_unit\">\n\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">\n        \t发布信息\n\t</div>\n\t<div class=\"info_detail\">\n      \t<div>\n        \t<p style=\"width: 100%;\">\n             <span><strong>公司名称</strong></span>\n             <span>\n             \t<input type=\"text\" id=\"companyname\" name=\"companyname\" placeholder=\"\" />\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"width: 100%;\">\n            <span><strong>公司地址</strong></span>\n            <span>\n            \t<input type=\"text\" id=\"commpanyaddress\" name=\"commpanyaddress\" placeholder=\"\" />\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"width: 100%;\">\n            <span><strong>企业官网</strong></span>\n            <span>\n            \t<input type=\"text\" id=\"commpanywebsite\" name=\"commpanywebsite\" placeholder=\"\" />\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"width: 100%;\">\n            \t<textarea id=\"detaildesc\" style=\"width: 490px; height: 50px; outline:none; margin-top: 10px;\"  placeholder=\"公司详细描述...\"></textarea>\n            </p>\n            </div>\n            <div style=\"width: 120px; margin: 0 auto;\">\n            \t<input id=\"btn_publish\" type=\"button\" value=\"发布\" class=\"edit_publish_btn\" style=\"margin: 10px auto;\">\n            </div>\n\t</div>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/applycommpany.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"${ctx}/style/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"${ctx}/style/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/detailinputunit.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/commpany.css\" rel=\"stylesheet\" media=\"screen\">\n  \n \t<style>\n \t\t.question_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n\t\t.question_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n\t\t.question_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 18px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\t\t.question_title{border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0;padding: 5px; width: 300px; font-size: 15px;}\n \t</style>\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n  <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/agribusiness/base/getCommpanyList\"> 农企信息列表</a><a> &gt; </a><a href=\"${ctx}/front/agribusiness/base/getApplyCommpany\"> 申请</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"into_unit\">\n\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">\n        \t申请信息\n\t</div>\n\t<div class=\"info_detail\">\n\t   <form id=\"applyForm\" method=\"post\" autocomplete=off>\n      \t    <div>\n        \t<p style=\"width: 100%;\">\n             <span><strong>企业名称</strong></span>\n             <span>\n             \t<input type=\"text\" id=\"businessName\" name=\"businessName\" class=\"easyui-validatebox\" data-options=\"required:true\" placeholder=\"输入企业名称\" />\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"width: 100%;\">\n            <span><strong>企业官网</strong></span>\n            <span>\n            \t<input type=\"text\" id=\"businessSite\" name=\"businessSite\" class=\"easyui-validatebox\" data-options=\"required:true,validType:'webhttp'\" placeholder=\"输入企业官网\" />\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"width: 100%;\">\n            \t<span><strong>企业介绍</strong></span>\n            \t<textarea id=\"businessIntroduce\" name=\"businessIntroduce\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 490px; height: 50px; outline:none; margin-top: 10px;\"  placeholder=\"企业介绍描述...\"></textarea>\n            </p>\n            </div>\n            <div style=\"width: 173px; height:43px; margin: 0 auto;\">\n            \t<a href=\"javascript:submitForm();\"><div class=\"btn_applycompany\"></div></a>\n            </div>\n\t\t</form>\n\t</div>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n<script>\n\t$.extend($.fn.validatebox.defaults.rules, {\n    webhttp: {\n\t\tvalidator: function(value, param){\n\t\t\t if (/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/i.test(value)) {\n        \t\treturn true;\n    \t\t}\n    \t\telse\n    \t\t\treturn false;\n\t\t},\n\t\tmessage: '请输入有效的网址'\n    \t}\n\t});\n\t$(function() {\n\t\t$('#applyForm').form({\n\t\t    url:'${ctx}/front/agribusiness/base/add',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\talert(result.msg);\n\t\t    \t\twindow.location.href='${ctx}/front/agribusiness/base/getCommpanyList';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t});\n\tfunction submitForm(){\t\n\t\t$('#applyForm').submit();\n\t\t\n\t}\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/applycountryside.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<title>农技推广综合管理平台</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\"\n\ttype=\"image/x-icon\" />\n<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n<link href=\"./styles/index/detailinputunit.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<link href=\"./styles/index/countryside.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n<style>\n.question_toolbar {\n\tposition: relative;\n\twidth: 100%;\n\tbox-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);\n}\n\n.question_gradient {\n\tposition: relative;\n\tmargin-right: 100px;\n\theight: 30px;\n\tborder: 1px solid #ccc;\n\tborder-right: none;\n\tborder-bottom-color: #aaa;\n\tborder-bottom-left-radius: 3px;\n\t-webkit-border-bottom-left-radius: 3px;\n}\n\n.question_button {\n\toutline: none;\n\tcursor: pointer;\n\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 32px;\n\twidth: 100px;\n\ttext-align: center;\n\ttext-shadow: 0 1px 0 #fff;\n\tcolor: #555;\n\tfont-size: 18px;\n\tfont-weight: bold;\n\tborder: 1px solid #ccc;\n\tborder-bottom-color: #aaa;\n\tborder-bottom-right-radius: 3px;\n\t-webkit-border-bottom-right-radius: 3px;\n\tbackground-color: #e6e6e6;\n\tbackground-repeat: no-repeat;\n\tbackground-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);\n\ttransition: all .15s linear;\n\tbox-shadow: inset 0 0 1px #fff;\n}\n\n.question_title {\n\tborder: 1px solid #045bb2;\n\tborder-radius: 4px;\n\tbox-shadow: inset 0 1px 3px rgba(0, 0, 0, .2), 0 1px 0\n\t\trgba(255, 255, 255, .1);\n\toutline: 0;\n\tpadding: 5px;\n\twidth: 300px;\n\tfont-size: 15px;\n}\n</style>\n</head>\n<body\n\tclass=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n\t<div id=\"wpthemedemobar\"\n\t\tstyle=\"position: fixed !important; _position: absolute; _top: expression(eval(document.documentElement.scrollTop +0)); top: 0px; z-index: 99999;\">\n\t\t<div class=\"wpthemedemobar_wrapper\">\n\t\t\t<div class=\"wptdb_right\">\n\t\t\t\t<a id=\"btnlogin\" href=\"login.html\">立即登录</a> <a id=\"btnregister\"\n\t\t\t\t\thref=\"register.html\">注册用户</a> <a id=\"btnlogout\" href=\"#\">退出</a>\n\t\t\t</div>\n\t\t\t<div class=\"wptdb_current\">\n\t\t\t\t当前登录用户：<span class=\"wptdb_themename\">超级门户</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<!-- start:头部导航 -->\n\t<div id=\"header\">\n\t\t<div id=\"header_in\">\n\t\t\t<img src=\"./styles/images/logo.png\" />\n\t\t</div>\n\t\t<div id=\"nav\">\n\t\t\t<a class=\"home_url\"></a>\n\t\t\t<div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n\t\t\t\t<ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n\t\t\t\t\t<li id=\"menu-item-253\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a\n\t\t\t\t\t\thref=\"./index.html\">首页</a>\n\t\t\t\t\t<div class=\"hover\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-254\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a\n\t\t\t\t\t\thref=\"./articlelist.html\">最新新闻</a>\n\t\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-260\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a\n\t\t\t\t\t\thref=\"./informationlist.html\">通知公告</a>\n\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-261\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a\n\t\t\t\t\t\thref=\"./questionlist.html\">在线交流</a>\n\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-262\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a\n\t\t\t\t\t\thref=\"./\">视频会议</a>\n\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-263\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a\n\t\t\t\t\t\thref=\"./\">农业物联网</a>\n\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-264\"\n\t\t\t\t\t\tclass=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a\n\t\t\t\t\t\thref=\"./personalcenter.html\">个人中心</a>\n\t\t\t\t\t<div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<script>\n\t\t\t$('#nav .menu_nav li').not(\".sub-menu li\").append(\n\t\t\t\t\t'<div class=\"hover\"><\\/div>');\n\t\t\t$('#nav .menu_nav li .sub-menu li').children(\"ul\")\n\t\t\t\t\t.addClass(\"block\")\n\t\t\t$('#nav .menu_nav li').hover(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\t$(this).children(\".sub-menu\").not(\".block\").stop(true,\n\t\t\t\t\t\t\t\ttrue).fadeIn('200');\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\t$(this).children(\".sub-menu\").not(\".block\").stop(true,\n\t\t\t\t\t\t\t\ttrue).fadeOut('1000');\n\t\t\t\t\t})\n\t\t\t$('#nav .menu_nav li')\n\t\t\t\t\t.not(\n\t\t\t\t\t\t\t\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\")\n\t\t\t\t\t.hover(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t$(this).children('.hover').stop(true, true)\n\t\t\t\t\t\t\t\t\t\t.fadeIn('200');\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t$(this).children('.hover').stop(true, true)\n\t\t\t\t\t\t\t\t\t\t.fadeOut('1000');\n\t\t\t\t\t\t\t});\n\t\t</script>\n\t</div>\n\t<!-- end:头部导航-->\n\n\t<!--head:所在位置-->\n\t<div id=\"page_muen_nav\">\n\t\t<b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a\n\t\t\thref=\"./countrysidelist.html\"> 下乡管理列表</a><a> &gt; </a><a\n\t\t\thref=\"./applycountryside.html\"> 申请</a>\n\t</div>\n\t<!--end:所在位置-->\n\n\t<!--head:内容项目-->\n\t<div id=\"content\">\n\n\t\t<!--head:左侧内容-->\n\t\t<div class=\"left_mian\">\n\t\t\t<!--head:扁平图标导航-->\n\t\t\t<div class=\"widget func_nav\">\n\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t<span> <b>功能导航</b>\n\t\t\t\t\t<p>Function</p>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"./countrysidelist.html\"><img\n\t\t\t\t\t\t\tsrc=\"./styles/images/xiaxiang_nav.png\"></a></li>\n\t\t\t\t\t<li><a href=\"./performancelist.html\"><img\n\t\t\t\t\t\t\tsrc=\"./styles/images/jixiao_nav.png\"></a></li>\n\t\t\t\t\t<li><a href=\"./knowledgedata.html\"><img\n\t\t\t\t\t\t\tsrc=\"./styles/images/zhishiku_nav.png\"></a></li>\n\t\t\t\t\t<li><a href=\"./questionlist.html\"><img\n\t\t\t\t\t\t\tsrc=\"./styles/images/wenda_nav.png\"></a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<!--head:扁平图标导航-->\n\n\t\t</div>\n\t\t<!--end:左侧内容-->\n\n\n\t\t<!--head:右侧内容-->\n\t\t<div class=\"right_mian\">\n\n\t\t\t<div class=\"into_unit\">\n\t\t\t\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">申请信息</div>\n\t\t\t\t<div class=\"info_detail\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p style=\"width: 100%;\">\n\t\t\t\t\t\t\t<span><strong>下乡目的地</strong></span> <span><span\n\t\t\t\t\t\t\t\tid=\"provincecity\" style=\"width: 260px;\"></span> <input\n\t\t\t\t\t\t\t\tname=\"detailaddr\" id=\"detailaddr\" type=\"text\" placeholder=\"详细地址\"\n\t\t\t\t\t\t\t\tstyle=\"width: 222px; margin-top: 2px;\"> </span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t<span><strong>出发日期</strong></span> <span> <input\n\t\t\t\t\t\t\t\ttype=\"text\" id=\"startdate\" name=\"startdate\" placeholder=\"\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p style=\"float: right\">\n\t\t\t\t\t\t\t<span><strong>返程日期</strong></span> <span> <input\n\t\t\t\t\t\t\t\ttype=\"text\" id=\"enddate\" name=\"enddate\" placeholder=\"\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t<span><strong>紧急联系人</strong></span> <span> <input\n\t\t\t\t\t\t\t\ttype=\"text\" id=\"linkman\" name=\"linkman\" placeholder=\"\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p style=\"float: right\">\n\t\t\t\t\t\t\t<span><strong>紧急联系人电话</strong></span> <span> <input\n\t\t\t\t\t\t\t\ttype=\"text\" id=\"linkphone\" name=\"linkphone\" placeholder=\"\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t<span><strong>下乡人员</strong></span> <span> <input\n\t\t\t\t\t\t\t\ttype=\"text\" id=\"txtperson\" name=\"txtperson\"\n\t\t\t\t\t\t\t\tplaceholder=\"搜索下乡人员姓名\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t\t\t\t\t\t<div id=\"select_person\">\n\t\t\t\t\t\t\t\t<a rel=\"tag\" tel=\"123123\" personid=\"1\"\n\t\t\t\t\t\t\t\t\tonclick=\"fnselectperson(this);\">张一</a> <a rel=\"tag\"\n\t\t\t\t\t\t\t\t\ttel=\"443232\" personid=\"2\" onclick=\"fnselectperson(this);\">张二</a>\n\t\t\t\t\t\t\t\t<a rel=\"tag\" tel=\"543433\" personid=\"3\"\n\t\t\t\t\t\t\t\t\tonclick=\"fnselectperson(this);\">张三</a> <a rel=\"tag\" tel=\"87654\"\n\t\t\t\t\t\t\t\t\tpersonid=\"4\" onclick=\"fnselectperson(this);\">张四</a> <a\n\t\t\t\t\t\t\t\t\trel=\"tag\" tel=\"58764\" personid=\"5\"\n\t\t\t\t\t\t\t\t\tonclick=\"fnselectperson(this);\">张五</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"margin: 0px auto; width: 300px;\">\n\t\t\t\t\t\t<table id=\"tpersonlist\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<th style=\"display: none;\">人员ID</th>\n\t\t\t\t\t\t\t\t<th style=\"width: 50px;\">姓名</th>\n\t\t\t\t\t\t\t\t<th style=\"width: 150px;\">联系方式</th>\n\t\t\t\t\t\t\t\t<th style=\"width: 30px;\">操作</th>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td style=\"display: none;\">5</td>\n\t\t\t\t\t\t\t\t\t<td>张五</td>\n\t\t\t\t\t\t\t\t\t<td>+1 718 000000</td>\n\t\t\t\t\t\t\t\t\t<td><span class=\"del_btn\" onclick=\"fndeleteperson(this);\">\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"del_icon\"></i>\n\t\t\t\t\t\t\t\t\t</span></td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td style=\"display: none;\">6</td>\n\t\t\t\t\t\t\t\t\t<td>李四</td>\n\t\t\t\t\t\t\t\t\t<td>+1 718 000000</td>\n\t\t\t\t\t\t\t\t\t<td><span class=\"del_btn\" onclick=\"fndeleteperson(this);\">\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"del_icon\"></i>\n\t\t\t\t\t\t\t\t\t</span></td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td style=\"display: none;\">7</td>\n\t\t\t\t\t\t\t\t\t<td>杨七</td>\n\t\t\t\t\t\t\t\t\t<td>+1 718 000000</td>\n\t\t\t\t\t\t\t\t\t<td><span class=\"del_btn\" onclick=\"fndeleteperson(this);\">\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"del_icon\"></i>\n\t\t\t\t\t\t\t\t\t</span></td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p style=\"width: 100%;\">\n\t\t\t\t\t\t\t<span><strong>下乡事由</strong></span>\n\t\t\t\t\t\t\t<textarea id=\"detaildesc\"\n\t\t\t\t\t\t\t\tstyle=\"width: 490px; height: 100px; outline: none; margin-top: 10px;\"\n\t\t\t\t\t\t\t\tplaceholder=\"详细描述...\"></textarea>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"width: 250px; margin: 0 auto;\">\n\t\t\t\t\t\t<input id=\"btn_save\" type=\"button\" value=\"保存\"\n\t\t\t\t\t\t\tclass=\"edit_publish_btn\" style=\"margin: 10px auto;\"> <input\n\t\t\t\t\t\t\tid=\"btn_publish\" type=\"button\" value=\"申请\"\n\t\t\t\t\t\t\tclass=\"edit_publish_btn\" style=\"margin: 10px auto;\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\t\t<!--end:右侧内容-->\n\n\t</div>\n\t<!--end:内容项目-->\n\n\t<!--head:底部信息-->\n\t<div id=\"footer\">\n\t\t<div id=\"footer_in\">\n\t\t\t<div class=\"footer_shadow\"></div>\n\t\t\t<p>版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved. |\n\t\t\t\t粤ICP备05008874号 备案编号：4401060500010</p>\n\t\t\t<p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\n\t</div>\n\t<!--end:底部信息-->\n\t<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n\t<script src=\"./scripts/register/provincesdata.js\"\n\t\ttype=\"text/javascript\"></script>\n\t<script src=\"./scripts/register/jquery.provincesCity.js\"\n\t\ttype=\"text/javascript\"></script>\n\t<script>\n\t\t$(document).ready(function() {\n\t\t\t//省市控件     \n\t\t\t$(\"#provincecity\").ProvinceCity(\"label\");\n\t\t\t$(\"#provincecity label\").css({\n\t\t\t\t\"margin-top\" : \"-3px\"\n\t\t\t});\n\t\t});\n\n\t\tfunction fnselectperson(itm) {\n\t\t\tvar personid = $(itm).attr(\"personid\");\n\t\t\tvar bfind = false;\n\t\t\t$(\"#tpersonlist tbody tr\").each(function() {\n\t\t\t\tif ($(this).find(\"td:eq(0)\").html() == personid) {\n\t\t\t\t\tbfind = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (bfind) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar personname = $(itm).html();\n\t\t\tvar telphone = $(itm).attr(\"tel\");\n\t\t\tvar htmlitem = \"<tr><td style='display:none;'>\"\n\t\t\t\t\t+ personid\n\t\t\t\t\t+ \"</td><td>\"\n\t\t\t\t\t+ personname\n\t\t\t\t\t+ \"</td><td>\"\n\t\t\t\t\t+ telphone\n\t\t\t\t\t+ \"</td><td><span class='del_btn'  onclick='fndeleteperson(this);'><i class='del_icon'></i></span></td></tr>\";\n\t\t\t$(\"#tpersonlist tbody\").append(htmlitem);\n\t\t}\n\n\t\tfunction fndeleteperson(itm) {\n\t\t\t$(itm).parent(\"td\").parent(\"tr\").remove();\n\t\t}\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/applycountryside.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\" + request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<title>农技推广综合管理平台</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n<link rel=\"shortcut icon\" href=\"${ctx}/style/images/ico.ico\"\n\ttype=\"image/x-icon\" />\n<link href=\"${ctx}/style/index/themepark.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<link href=\"${ctx}/style/index/default.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<link href=\"${ctx}/style/index/detailinputunit.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n<link href=\"${ctx}/style/index/countryside.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n\n<style>\n\t#applytijiao\n\t{\n\t\twidth: 173px; \n\t\theight: 43px; \n\t\tcursor: pointer; \n\t\tbackground: url(\"${ctx}/style/images/index/applytijiao.png\");\n\t}\n\t#applytijiao:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/applytijiao_s.png\");\n\t}\n</style>\n</head>\n<body\n\tclass=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n\t<!--start 登录注册浮动栏 -->\n\t<jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n\t<!-- end 登录注册浮动栏 -->\n\n\t<!-- start:头部导航 -->\n\t<jsp:include page=\"./header.jsp\"></jsp:include>\n\t<!-- end:头部导航-->\n\n\t<!--head:所在位置-->\n\t<div id=\"page_muen_nav\">\n\t\t<b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a>\n\t\t\t&gt; </a><a href=\"${ctx}/front/village/base/getCountrysideList\"> 下乡管理列表</a><a>\n\t\t\t&gt; </a><a href=\"${ctx}/front/village/base/getApplycountryside\"> 申请</a>\n\t</div>\n\t<!--end:所在位置-->\n\n\t<!--head:内容项目-->\n\t<div id=\"content\">\n\n\t\t<!--head:左侧内容-->\n\t\t<div class=\"left_mian\">\n\t\t\t<!--head:扁平图标导航-->\n\t\t\t<jsp:include page=\"./navigation.jsp\"></jsp:include>\n\t\t\t<!--head:扁平图标导航-->\n\n\t\t</div>\n\t\t<!--end:左侧内容-->\n\n\n\t\t<!--head:右侧内容-->\n\t\t<div class=\"right_mian\">\n\n\t\t\t<div class=\"into_unit\">\n\t\t\t\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">申请信息</div>\n\t\t\t\t<div class=\"info_detail\">\n\t\t\t\t\t<form id=\"applyForm\" method=\"post\" autocomplete=off>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<p style=\"width: 100%;\">\n\t\t\t\t\t\t\t\t<span><strong>下乡目的地</strong></span> <span><span\n\t\t\t\t\t\t\t\t\tid=\"provincecity\" style=\"width: 260px;\"></span> <input\n\t\t\t\t\t\t\t\t\tname=\"businessAddress\" type=\"text\" class=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"详细地址\" style=\"width: 222px; margin-top: 2px;\" /> </span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t\t<span><strong>开始日期</strong></span> <span> <input\n\t\t\t\t\t\t\t\t\tid=\"businessDate\" type=\"text\" name=\"businessDate\" class=\"easyui-validatebox\" data-options=\"required:true\" onclick=\"WdatePicker({maxDate:'#F{$dp.$D(\\'returnDate\\')}',isShowClear:false,readOnly:true})\"/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p style=\"float: right\">\n\t\t\t\t\t\t\t\t<span><strong>结束日期</strong></span> <span> <input\n\t\t\t\t\t\t\t\t\tid=\"returnDate\" type=\"text\" name=\"returnDate\" class=\"easyui-validatebox\" data-options=\"required:true\" onclick=\"WdatePicker({minDate:'#F{$dp.$D(\\'businessDate\\')}',isShowClear:false,readOnly:true})\"/></span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t\t<span><strong>联系人</strong></span> <span> <input\n\t\t\t\t\t\t\t\t\ttype=\"text\" id=\"personalName\" name=\"personalName\" disabled=true\n\t\t\t\t\t\t\t\t\tplaceholder=\"\" value=\"${personalName}\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p style=\"float: right\">\n\t\t\t\t\t\t\t\t<span><strong>联系人电话</strong></span> <span> <input\n\t\t\t\t\t\t\t\t\ttype=\"text\" id=\"personalPhone\" name=\"personalPhone\" disabled=true\n\t\t\t\t\t\t\t\t\tplaceholder=\"\" value=\"${personalPhone}\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<p style=\"width: 100%;\">\n\t\t\t\t\t\t\t\t<span><strong>下乡事由</strong></span>\n\t\t\t\t\t\t\t\t<select id=\"reasonType\" name=\"reasonType\" style=\"width:215px; margin-top: 3px;\" onchange=\"fnReasonTypeChange();\">\n\t\t\t\t\t\t\t\t\t<c:forEach items=\"${reasonTypeList}\" var=\"reasonType\">\n\t\t\t\t\t\t\t\t\t\t<option value=\"${reasonType.id}\" code=\"${reasonType.code}\">${reasonType.text} \n\t\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<textarea id=\"businessReason\" name=\"businessReason\" class=\"easyui-validatebox\" data-options=\"validType:'length[0,500]'\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: 490px; height: 50px; outline: none; margin-top: 10px; display:none;\"\n\t\t\t\t\t\t\t\t\tplaceholder=\"详细描述...\"></textarea></span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<p style=\"float: left\">\n\t\t\t\t\t\t\t\t<span><strong>下乡人员</strong></span> <span> <input\n\t\t\t\t\t\t\t\t\ttype=\"text\" id=\"txtperson\" \n\t\t\t\t\t\t\t\t\tplaceholder=\"搜索下乡人员姓名\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<div style=\"float: right; width: 50%; margin-top: 28px; overflow: hidden; height: 43px;\">\n\t\t\t\t\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t\t\t\t\t\t\t<div id=\"select_person\">\n\t\t\t\t\t\t\t\t\t<!--<a rel=\"tag\" tel=\"123123\" personid=\"1\" onclick=\"fnselectperson(this);\">张一</a>  -->\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\" margin-top:5px;\">\n\t\t\t\t\t\t\t<table id=\"tpersonlist\" cellpadding=\"0\" cellspacing=\"0\"\n\t\t\t\t\t\t\t\tborder=\"1\">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<th style=\"display: none;\">人员ID</th>\n\t\t\t\t\t\t\t\t\t<th style=\"width: 50px;\">姓名</th>\n\t\t\t\t\t\t\t\t\t<th style=\"width: 150px;\">联系方式</th>\n\t\t\t\t\t\t\t\t\t<th style=\"width: 30px;\">操作</th>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div style=\"width: 173px; margin: 0 auto; margin-top:10px;\">\n\t\t\t\t\t\t\t<a href=\"javascript:submitForm();\"><div id=\"applytijiao\"></div></a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"businessArea\" />\n\t\t\t\t\t\t<input type=\"hidden\" name=\"personIDs\" />\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\t\t<!--end:右侧内容-->\n\n\t</div>\n\t<!--end:内容项目-->\n\n\t<!--head:底部信息-->\n\t<jsp:include page=\"./footer.jsp\"></jsp:include>\n\t<!--end:底部信息-->\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n\t<script src=\"${ctx}/jslib/register/provincesdata.js\"\n\t\ttype=\"text/javascript\"></script>\n\t<script src=\"${ctx}/jslib/register/jquery.provincesCity.js\"\n\t\ttype=\"text/javascript\"></script>\n\t<script>\n\t\t$.extend($.fn.validatebox.defaults.rules, {\n\t    telphone: {\n\t\t\tvalidator: function(value, param){\n\t\t\t\t if (/^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$|(^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\\d{8}$)/i.test(value)) {\n\t        \t\treturn true;\n\t    \t\t}\n\t    \t\telse\n\t    \t\t\treturn false;\n\t\t\t},\n\t\t\tmessage: '请输入有效的手机号'\n\t    \t}\n\t\t});\n\t\t\n\t\tfunction fnReasonTypeChange() {\n\t\t\tif($(\"#reasonType option:selected\").attr(\"code\") == \"Other\"){\n\t\t\t\t//其他\n\t\t\t\t$(\"#businessReason\").show();\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(\"#businessReason\").hide();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction submitForm() {\n\t\t\t//$('#businessArea').value=$('#province').text()+$('#city').text();\n\t\t\tvar province = $('#province').val();\n\t\t\tif('请选择省份' == province){\n\t\t\t\t$.messager.alert('提示', '请选择省份', 'warning');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar city = $('#city').val();\n\t\t\tif('请选择城市' == city){\n\t\t\t\t$.messager.alert('提示', '请选择城市', 'warning');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar area = province + '省' + city + '市';\n\t\t\t$('input[name=businessArea]').val(area);\n\t\t\t\n\t\t\tvar personIDs = '';\n\t\t\t$('tr[personid]').each(function(){\n\t\t\t\tpersonIDs += $(this).attr('personid') + \",\";\n\t\t\t});\n\t\t\t\n\t\t\tif(personIDs.length < 1){\n\t\t\t\t$.messager.alert('提示', '请添加下乡人员', 'warning');\n\t\t\t\treturn ;\n\t\t\t}\n\t\t\tpersonIDs = personIDs.substr(0, personIDs.length - 1);\n\t\t\t$('input[name=personIDs]').val(personIDs);\n\t\t\t$('#applyForm').submit();\n\t\t}\n\t\n\t\t$(document).ready(function() {\n\t\t\t//省市控件     \n\t\t\t$(\"#provincecity\").ProvinceCity(\"label\");\n\t\t\t$(\"#provincecity label\").css({\n\t\t\t\t\"margin-top\" : \"-3px\"\n\t\t\t});\n\t\t\t\n\t\t\tvar time = 0;\n\t\t\t$('#txtperson').bind('keyup', function(){\n\t\t\t\tclearTimeout(time);\n\t\t\t\ttime = setTimeout(function(){\n\t\t\t\t\ttime = 0;\n\t\t\t\t\tvar searchKey = $('#txtperson').val();\n\t\t\t\t\tif(!searchKey || searchKey.length < 1){\n\t\t\t\t\t\t$('#select_person').html('');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\ttype:\"post\",\n\t\t\t\t\t\tdataType:\"json\",\n\t\t\t\t\t\turl:\"${ctx}/front/village/base/search\",\n\t\t\t\t\t\tdata:{\n\t\t\t\t\t\t\t\"searchKey\" : searchKey\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess:function(json){\n\t\t\t\t\t\t\t$('#select_person').html('');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(json && json.total > 0){\n\t\t\t\t\t\t\t\tvar html = '';\n\t\t\t\t\t\t\t\tfor(var i = 0; i < json.total; i++){\n\t\t\t\t\t\t\t\t\tvar obj = json.rows[i];\n\t\t\t\t\t\t\t\t\thtml += '<a rel=\"tag\" tel=\"'+obj.phoneNumber+'\" personid=\"'+obj.autoID+'\" onclick=\"fnselectperson(this);\">'+obj.realName+'</a>';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$('#select_person').html(html);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, 300);\n\t\t\t\treturn;\n\t\t\t});\n\t\t\n\t\t\t$('#applyForm').form({\n\t\t\t\turl : '${ctx}/front/village/base/add',\n\t\t\t\tonSubmit : function() {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}\n\t\t\t\t\treturn isValid;\n\t\t\t\t},\n\t\t\t\tsuccess : function(result) {\n\t\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\t\tprogressClose();\n\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\talert(result.msg);\n\t\t\t\t\t\twindow.location.href='${ctx}/front/village/base/getCountrysideList';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$.messager.show({\n\t\t\t\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\t\t\t\tmsg : '<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'\n\t\t\t\t\t\t\t\t\t\t\t+ result.msg\n\t\t\t\t\t\t\t\t\t\t\t+ '</div></div>',\n\t\t\t\t\t\t\t\t\tshowType : 'show'\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$.fn.datebox.defaults.formatter = function(date) {\n\t\t\tvar y = date.getFullYear();\n\t\t\tvar m = date.getMonth() + 1;\n\t\t\tvar d = date.getDate();\n\t\t\treturn y + '-' + m + '-' + d;\n\t\t};\n\n\t\tfunction fnselectperson(itm) {\n\t\t\tvar personid = $(itm).attr(\"personid\");\n\t\t\tvar bfind = false;\n\t\t\t$('tr[personid]').each(function() {\n\t\t\t\tif ($(this).attr('personid') == personid) {\n\t\t\t\t\tbfind = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (bfind) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar personname = $(itm).html();\n\t\t\tvar telphone = $(itm).attr(\"tel\");\n\t\t\tvar htmlitem = \"<tr personid='\"+personid+\"'>\"\n\t\t\t\t\t+ \"<td>\"\n\t\t\t\t\t+ personname\n\t\t\t\t\t+ \"</td><td>\"\n\t\t\t\t\t+ telphone\n\t\t\t\t\t+ \"</td><td><span class='del_btn'  onclick='fndeleteperson(this);'><i class='del_icon'></i></span></td></tr>\";\n\t\t\t$(\"#tpersonlist tbody\").append(htmlitem);\n\t\t}\n\n\t\tfunction fndeleteperson(itm) {\n\t\t\t$(itm).parent(\"td\").parent(\"tr\").remove();\n\t\t}\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/article.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/embed.default.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/embed.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254 current-menu-item\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./articlelist.html\"> 最新新闻</a><a> &gt; </a><a href=\"#\"> 新农村发展研究院</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:最新新闻-->\n<div class=\"widget news_modle1\">\n   <div class=\"widge_hd\">\n   <span>\n     <b>最新新闻</b><p>News</p>\n   </span>\n   <a href=\"./\">MORE</a>\n   </div>\n<ul>\n<li><a href=\"./\">华农与榄核镇签订合作框架协议</a>\n<span class=\"time\">1200</span>\n</li>\n<li><a href=\"./\">从8000元到市值2000亿</a>\n<span class=\"time\">232</span>\n</li>\n<li><a href=\"./\">2016高校科技成果转化排名</a>\n<span class=\"time\">21</span>\n</li>\n<li><a href=\"./\">香云纱研发成果</a>\n<span class=\"time\">332</span>\n</li>\n<li><a href=\"./\">香云纱研发中心和体验馆</a>\n<span class=\"time\">3234</span>\n</li>\n<li><a href=\"./\">非物质文化遗产香云纱的文化价值</a>\n<span class=\"time\">828</span>\n</li>\n</ul>\n</div>\n<!--end:最新新闻-->\n\n<!--head:农情图片展示-->\n<div class=\"widget case1\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>农情图片展示</b><p>Picture column</p>\n   </span>\n  <a href=\"./\">MORE</a>\n   </div>\n<div id=\"case1\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 1000px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 3000px; left: -1750px;\">\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p1.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p2.png\">\n</a></li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p3.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p4.png\">\n</a></li>\n\n</ul>\n  <div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n\n</div>\n</div>\n<script>\n$(function() {\n$(\"#case1\").jCarouselLite({\nbtnNext: \"#case1 .next\",\nbtnPrev: \"#case1 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script> \n</div>\n<!--end:农情图片展示-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n<!--head:文章正文-->\n <div class=\"enter\"> \n \t<!--head:文章开头的图片集-->\n\t\t<div id=\"enter_xz\" class=\"smaoll_xzs\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 600px;\">\n        \t\t<ul id=\"gallery-1\" class=\"gallery_xz\" style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 4200px; left: -3000px;\">\n        \t\t\t<li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t<a><img src=\"./upload/p5.jpg\"></a>\n\t\t\t\t</li>\n        \t\t\t<li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t<a><img src=\"./upload/p6.jpg\"></a>\n\t\t\t\t</li>\n\t\t\t\t<li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t<a><img src=\"./upload/p7.jpg\"></a>\n\t\t\t\t</li>\n\t\t\t\t<li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t<a><img src=\"./upload/p8.jpg\"></a>\n\t\t\t\t</li>\n\t\t\t\t<li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t<a><img src=\"./upload/p9.jpg\"></a>\n\t\t\t\t</li>\n             </ul>\n             <a class=\"next\" style=\"right: -100px;\"></a><a class=\"prve\" style=\"left: -100px;\"></a>\n       </div>\n\t<!--end:文章开头的图片集-->\n    <p>4月28日下午，我校与广州市南沙区榄核镇政府签订了战略合作框架协议，双方将致力于研究和挖掘非物质文化遗产香云纱的文化价值，将香云纱品牌打造成南沙新区的文化新名片。签订仪式在榄核镇羊晚星海艺术基地举行。</p>\n    <p>根据合作框架协议，双方还将在人才培养、现代服装特色产业、大学生实习实训就业“双基地”、旅游、科技等五方面展开合作。</p>\n    <p>据悉，我校在榄核镇跟进香云纱生产已有八年，并于2015年11月27日成立了香云纱研发中心和体验馆。针对区域特色产业发展和榄核文创小镇建设需求，香云纱研发中心在挖掘香云纱的文化价值，研究开发香云纱服饰产品，打造国际名流首选的“私人定制”的同时，还进一步促进科教结合与富农增收，以推动我校教育事业发展与榄核镇经济社会发展。据了解，我校下一步还将开展香云纱文化产业博士后专项研究。</p>\n    <p>经过4个月的紧张创作，香云纱研发成果——“香云故里”时尚发布会在当天的签约仪式后如期举行。来自我校艺术学院的26名模特，展示了香云纱时尚元素与传统工艺完美结合的独特魅力，为观众带来了一场视觉盛宴。</p>\n    <div align=\"center\"><img src=\"http://mmbiz.qpic.cn/mmbiz/w4bIWyNFlc94Uia9hzGGYwJ2ialu5BXaM9RJDPdasxJksgeMYN59lDPwNvHmkIEYYsgE2wJjxtGKwMcDM7SaBqzQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1\" /></div>\n    <div align=\"center\"><img src=\"http://mmbiz.qpic.cn/mmbiz/w4bIWyNFlc94Uia9hzGGYwJ2ialu5BXaM9iac3ITpDXw8CXUrwbP2ibjJELDTHPu2eA5qCpobjce2X4qJV4ibc16BpA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1\" /></div>\n    <div align=\"center\"><img src=\"http://mmbiz.qpic.cn/mmbiz/w4bIWyNFlc94Uia9hzGGYwJ2ialu5BXaM9lyqIibibgZ1XictJpDjPOtqoOl6A2EiacDYhRcgj84mpzWGOJnp1RcWtdg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1\" /></div>\n    <p>期间，广东电视台、羊城晚报、腾讯大粤网等媒体采访了香云纱时装设计大师、我校艺术学院院长金憓。据她介绍，本次时装发布会的主题是“向传统致敬”，分为“水生阶梯（礼服）”、“沉香素兮（日常装）”、“疍色雅韵（正装、旗袍、小礼裙）”和“香云故里（休闲装）”四大设计板块。除了衣服外，还有围巾、包包、鞋子、银饰等一系列配饰。</p>\n</div>\n<!--end:文章正文-->\n\n<!--head:评论区域-->\n <div id=\"respond\">\n\n<a name=\"comments\"></a>\n\n<div class=\"ds-thread\" data-thread-key=\"264\" data-author-key=\"1\" data-title=\"问答社区演示文章\" data-url=\"http://www.themepark.com.cn/demo/wen_da_she_qu_yan_shi_wen_zhang.html\" id=\"ds-thread\">\n<div id=\"ds-reset\" class=\"ds-touch\"><a name=\"respond\"></a>\n<div class=\"ds-replybox\"><a class=\"ds-avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a>\n<!--head:评论回复-->\n<form method=\"post\">\n<input type=\"hidden\" name=\"thread_id\" value=\"1307002666076864577\">\n<input type=\"hidden\" name=\"parent_id\" value=\"\">\n<input type=\"hidden\" name=\"nonce\" value=\"575182278c449\">\n<div class=\"ds-textarea-wrapper ds-rounded-top\"><textarea name=\"message\" title=\"Ctrl+Enter快捷提交\" placeholder=\"说点什么吧…\"></textarea><pre class=\"ds-hidden-text\"></pre></div>\n<div class=\"ds-post-toolbar\"><div class=\"ds-post-options ds-gradient-bg\"><span class=\"ds-sync\"></span></div><button class=\"ds-post-button\" type=\"submit\">发布</button><div class=\"ds-toolbar-buttons\"></div></div>\n</form>\n<!--end:评论回复-->\n</div>\n\n<div class=\"ds-comments-info\">\n<div class=\"ds-sort\"><a class=\"ds-order-desc ds-current\">最新</a><a class=\"ds-order-asc\">最早</a><a class=\"ds-order-hot\">最热</a></div>\n<ul class=\"ds-comments-tabs\"><li class=\"ds-tab\"><a class=\"ds-comments-tab-duoshuo ds-current\"><span class=\"ds-highlight\">19</span>条评论</a></li>  </ul></div>\n\n<!--head:评论列表-->\n<ul class=\"ds-comments\">\n<!--head:一条评论主体-->\n<li class=\"ds-post\" data-post-id=\"6305651650304410369\">\n<div class=\"ds-post-self\" data-post-id=\"6305651650304410369\" data-thread-id=\"1307002666076864577\" data-root-id=\"0\" data-source=\"duoshuo\">\n<div class=\"ds-avatar\" data-user-id=\"6305651560634385153\">\n\t<a rel=\"nofollow author\" target=\"_blank\" href=\"#\" title=\"几尼\">\n\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\"></a>\n</div>\n<div class=\"ds-comment-body\">\n<div class=\"ds-comment-header\"><a class=\"ds-user-name ds-highlight\" data-qqt-account=\"\" href=\"#\" rel=\"nofollow\" target=\"_blank\" data-user-id=\"6305651560634385153\">几尼</a></div>\n<!--head:评论内容-->\n<p>为什么没有图片的文章，主页有乱码？</p>\n<!--end:评论内容-->\n<div class=\"ds-comment-footer ds-comment-actions\"><span class=\"ds-time\" title=\"2016年7月10日 19:08:52\">7月10日</span><a class=\"ds-post-reply\" href=\"javascript:void(0);\"><span class=\"ds-icon ds-icon-reply\"></span>回复</a><a class=\"ds-post-likes\" href=\"javascript:void(0);\"><span class=\"ds-icon ds-icon-like\"></span>顶</a></div></div>\n</div>\n</li>\n<!--end:一条评论主体-->\n</ul>\n<!--end:评论列表-->\n\n<!--head:评论分页-->\n<div class=\"ds-paginator\">\n<div class=\"ds-border\"></div>\n<a data-page=\"1\" href=\"javascript:void(0);\" class=\"ds-current\">1</a> <a data-page=\"2\" href=\"javascript:void(0);\">2</a></div>\n<!--end:评论分页-->\n</div>\n\n</div>\n\n\n<script type=\"text/javascript\">\n\tif (typeof DUOSHUO !== 'undefined')\n\t\tDUOSHUO.EmbedThread('.ds-thread');\n</script>\n</div>\n<!--end:评论区域-->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/comment-reply.min.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/wp-embed.min.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/article.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\"\n\t\t\t+ request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<base href=\"<%=basePath%>\">\n<jsp:include page=\"./inc-head.jsp\"></jsp:include>\n<link href=\"${ctx}/style/index/article.css\" rel=\"stylesheet\" media=\"screen\">\n</head>\n<body\n\tclass=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n\t<!--start 登录注册浮动栏 -->\n\t<jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n\t<!-- end 登录注册浮动栏 -->\n\n\t<!-- start:头部导航 -->\n\t<jsp:include page=\"./header.jsp\"></jsp:include>\n\t<!-- end:头部导航-->\n\n\t<!--head:所在位置-->\n\t<div id=\"page_muen_nav\">\n\t\t<b>您现在所在的位置：</b>\n\t\t<a href=\"${ctx}/front/web/base/index\">首页</a>\n\t\t<a> &gt; </a>\n\t\t<a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=${categoryType.code}\">${categoryType.text}</a>\n\t\t<a> &gt; </a>\n\t\t<a href=\"javascript:void(0);\">${article.shortTitle}</a>\n\t</div>\n\t<!--end:所在位置-->\n\n\t<!--head:内容项目-->\n\t<div id=\"content\">\n\n\t\t<!--head:左侧内容-->\n\t\t<div class=\"left_mian\">\n\t\t\t<!--head:热门文章-->\n\t\t\t<div class=\"widget news_model\">\n\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t<span><b>${categoryType.text}</b></span>\n\t\t\t\t</div>\n\t\t\t\t<ul id=\"newsList\">\n\t\t\t\t\t<c:forEach items=\"${frequencyNewsList}\" var=\"fnl\">\n\t\t\t\t\t\t<li><a href=\"${ctx}/front/news/base/getArticle?article=${fnl.autoID}\" target=\"_blanck\" title=\"${fnl.title}\">${fnl.shortTitle}</a>\n\t            \t\t<span class=\"time\">${fnl.readCount}</span></li>\n\t\t\t\t\t</c:forEach>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<!--end:热门文章-->\n\t\t</div>\n\t\t<!--end:左侧内容-->\n\n\n\t\t<!--head:右侧内容-->\n\t\t<div class=\"right_mian\">\n\t\t\t<!-- head:标题栏目 -->\n\t\t\t<div class=\"articletitle\">\n\t\t\t\t<span class=\"title\">${article.title}</span>\n\t\t\t\t<div class=\"time\">\n\t\t\t\t\t${article.publishDate}\n\t\t\t\t\t&nbsp;&nbsp;\n\t\t\t\t\t${article.author}\n\t\t\t\t\t&nbsp;&nbsp;\n\t\t\t\t\t阅读量：${article.readCount}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- end:标题栏目 -->\n\t\t\t<!--head:文章正文-->\n\t\t\t<div class=\"enter\">\n\t\t\t\t<iframe src=\"${ctx}/${article.webPath}\" id=\"iframepage\"\n\t\t\t\t\tframeborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\"\n\t\t\t\t\tonLoad=\"iFrameHeight()\" width=\"100%\"></iframe>\n\n\t\t\t</div>\n\t\t\t<!--end:文章正文-->\n\t\t\t<c:if test=\"${!empty attachmentList}\">\n\t\t\t\t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td><span style=\"font-size:16px; line-height:2em;\">附件：</span></td>\n\t\t\t\t\t\t<td><c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t\t<a style=\"font-size:16px; line-height:2em;\"\n\t\t\t\t\t\t\t\t\t\thref=\"${ctx}/front/news/base/downloadAttachment?attachmentID=${attachment.autoID}\"\n\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:forEach></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</c:if>\n\t\t</div>\n\t\t<!--end:右侧内容-->\n\n\t</div>\n\t<!--end:内容项目-->\n\n\n\t<!--head:底部信息-->\n\t<jsp:include page=\"./footer.jsp\"></jsp:include>\n\t<!--end:底部信息-->\n\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n\t<script type=\"text/javascript\" language=\"javascript\">\n\t\tfunction iFrameHeight() {\n\t\t\tvar ifm = document.getElementById(\"iframepage\");\n\t\t\tvar subWeb = document.frames ? document.frames[\"iframepage\"].document\n\t\t\t\t\t: ifm.contentDocument;\n\t\t\tif (ifm != null && subWeb != null) {\n\t\t\t\tifm.height = subWeb.body.scrollHeight;\n\t\t\t\t//ifm.width = subWeb.body.scrollWidth;\n\t\t\t}\n\t\t}\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/articlelist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/article.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254 current-menu-item\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./articlelist.html\">新闻列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>开始日期：</span>\n\t\t<input type=\"text\" id=\"startdate\" />\n\t<div>\n</li>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>结束日期：</span>\n\t\t<input type=\"text\" id=\"enddate\" />\n\t</div>\n</li>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的新闻...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:农企信息 -->\n <div class=\"widget articlelist\" id=\"widget_articlelist\">\n<ul>\n<li><a href=\"./article.html\">华农与榄核镇签订合作框架协议，香云纱成果发布惊艳全场</a>\n<span class=\"time\">2016-07-12</span>\n<p>4月28日下午，我校与广州市南沙区榄核镇政府签订了战略合作框架协议，双方将致力于研究和挖掘非物质文化遗产香云纱的文化价值...</p>\n</li>\n\n<li><a href=\"./article.html\">从8000元到市值2000亿，华农助力小养鸡场完美“逆袭”</a>\n<span class=\"time\">2016-07-10</span>\n<p>据悉，我校在榄核镇跟进香云纱生产已有八年，并于2015年11月27日成立了香云纱研发中心和体验馆。针对区域特色产业发展和榄核文创小镇建设需求...</p>\n</li>\n\n<li><a href=\"./article.html\">2016高校科技成果转化排名，华南农大广东第3，全国第23</a>\n<span class=\"time\">2016-07-05</span>\n<p>系统主要分为农技推广综合管理web前台、农技推广综合管理后台服务系统和“农技通”Android客户端三部分构成，其中后台服务系统负责处理web前台和app端的数据请求...</p>\n</li>\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:农企信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/articlelist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/article.css\" rel=\"stylesheet\" media=\"screen\">\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=${categoryType.code}\">${categoryType.text}</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searcharticle\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\"\n\t\t\t\t\t\t\t\tplaceholder=\"搜索你感兴趣的内容...\">\n\t\t<div onclick=\"fnSearch('');\"\n\t\t\t\t\t\t\t\tstyle=\"width: 40px; height: 35px; position: absolute; top: 0px; right: 0px;\"></div>\n\t</div>\n\t<!--<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的新闻...\">\n\t\t<button id=\"btn_search\" onclick=\"fnSearch('');\"><i class=\"search_icon\"></i></button>\n\t</div>  -->\n</li>\n<li>\n\t<div class=\"categorySearch\">\n\t\t<div class=\"categoryHead\">\n\t\t\t<span><b>栏目分类</b></span>\n\t\t</div>\n\t\t<table class=\"categoryList\" width=\"220\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t<tr>\n\t\t\t\t<td width=\"10\"><span class=\"categoryicon\"></span></td>\n\t\t\t\t<td width=\"200\" style=\" overflow: hidden; white-space: nowrap;\">\n\t\t\t\t\t\t<a id=\"categoryAll\" onclick=\"javascript:fnSearch('')\" title=\"所有栏目\">所有栏目</a>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<c:forEach items=\"${categoryList}\" var=\"cl\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"10\"><span class=\"categoryicon\"></span></td>\n\t\t\t\t\t<td width=\"200\" style=\" overflow: hidden; white-space: nowrap;\">\n\t\t\t\t\t\t<a id=\"category${cl.autoID}\" onclick=\"javascript:fnSearch(${cl.autoID})\" title=\"${cl.categoryName}\">${cl.shortCategoryName}</a>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</c:forEach>\n\t\t</table>\n\t\t<input id=\"selectedCategoryId\" type=\"hidden\" value=\"\" />\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询-->\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:列表信息 -->\n<div class=\"widget articlelist\">\n\n<table id=\"articleList\" width=\"650\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\n</table>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<input id=\"page_size\" type=\"hidden\" value=\"30\" />\n\t<input id=\"records_total\" type=\"hidden\" value=\"0\" />\n\t<a href=\"javascript:changePage(1);\">上一页</a> \n\t<a id=\"current_page\" currentpage=\"1\" href=\"javascript:void(0); \" class=\"paginator_current\">1</a> \n\t<a href=\"javascript:changePage(2);\">下一页</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:列表信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n<script>\n\t$(document).ready(function(){\n\t\tgetData();\n\t\t\n\t\t$(\"#input_search\").keyup(function(event) {\n\t\t\tif (!event || event.which != 13)\n\t\t\t\treturn true;\n\t\t\tfnSearch('');\n\t\t});\n\t});\n\t\n\tfunction changePage(flag){\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar total = parseInt($(\"#records_total\").val());\n\t  \tif(flag == 1){\n\t  \t\t//上一页\n\t  \t\tif(current <= 1){\n\t  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t\t\talert(\"已经到达第一页\");\n\t  \t\t\treturn;\n\t  \t\t}\n\t  \t\tcurrent--;\n\t  \t}\n\t  \telse{\n\t  \t\t//下一页\n\t        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n\t        if ((current + 1) > pageCount) {\n\t            alert(\"已经到达最后一页\");\n\t            return false;\n\t        }\n\t        current++;\n\t  \t}\n\t  \t$(\"#current_page\").attr(\"currentpage\", current);\n\t  \t$(\"#current_page\").text(current);\n\t  \tgetData();\n  \t}\n  \t\n  \tfunction fnSearch(categoryid){\n\t  \t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t$(\"#current_page\").text(1);\n\t  \t$(\"#selectedCategoryId\").val(categoryid);\n\t  \tgetData();\n\t}\n\t\n\tfunction getData(){\n\t  \tvar searchcontent = $(\"#input_search\").val();\n\t  \tsearchcontent = searchcontent.trim();\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar url = \"${ctx}/front/news/base/getListPublish\";\n\t  \tvar selectCategoryID = $(\"#selectedCategoryId\").val();\n\t  \t//var stDate = $(\"#startdate\").val();\n\t  \t//var endDate = $(\"#enddate\").val();\n\t  \t\n\t  \t$.ajax({\n\t            url: url,\n\t            data: { \"rows\": pagesize, \"page\": current, \"searchcontent\": searchcontent, \"categoryTypeID\": ${categoryType.id}, \"category\": selectCategoryID },\n\t            type: \"POST\",\n\t            dataType: \"json\",\n\t            success: function (json) {\n\t            \t$(\"#articleList\").html('');\n\t            \t$(\"#records_total\").val(json.total);\n\t            \tfor (var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\tvar item = \"<tr><td width='10'><span class='articleicon'></span></td>\";\n\t            \t\titem += \"<td><a href='${ctx}/front/news/base/getArticle?article=\" + json.rows[i].autoID + \"' target='_blank' title='\" + json.rows[i].title + \"'>\" + json.rows[i].shortTitle + \"</a></td>\";\n\t            \t\titem += \"<td align='right' width='40'>\" + json.rows[i].publishDate.substring(0,10) + \"</td></tr>\";\n\t            \t\t$(\"#articleList\").append(item);\n\t            \t}              \n\t            },\n\t            error: function (xhr, error, thrown) {\n\t                \n\t            }\n\t        });\n  \t}\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/askquestionpage.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./scripts/xheditor/xheditor_skin/nostyle/ui.css\" rel=\"stylesheet\" media=\"screen\">\n  \t<script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  \t<script type=\"text/javascript\" src=\"./scripts/xheditor/jquery/jquery-1.4.4.min.js\"></script>\n \t<script type=\"text/javascript\" src=\"./scripts/xheditor/xheditor-1.2.2.min.js\"></script>\n \t<script type=\"text/javascript\" src=\"./scripts/xheditor/xheditor_lang/zh-cn.js\"></script>\n \t<style>\n \t\t.question_unit{width: 600px; border: 1px solid #ccc; padding: 10px 10px; overflow: hidden; background: #fff; margin-bottom: 30px; position: relative; box-shadow: 0 0 20px rgba(0,0,0,.15); border-radius: 4px;}\n \t\t.question_detail{ padding: 10px 20px; border: 1px dashed #dddddd; text-align: left; position: relative;}\n \t\t.question_detail .question_detail_div{ padding: 10px 0px; border-bottom: dashed 1px #CCCCCC;}\n \t\t.question_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n\t\t.question_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n\t\t.question_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 18px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\t\t.question_title{border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0;padding: 5px; width: 400px; font-size: 15px;}\n \t</style>\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261 current-menu-item\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./questionlist.html\"> 在线交流</a><a> &gt; </a><a href=\"./\"> 提问</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"widget\" id=\"widget_question\">\n\t<div class=\"question_unit\">\n\t\t<div class=\"question_detail\">\n\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t \t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">问题分类</span>\n\t\t \t\t<div id=\"select_category\">\n\t\t\t\t\t<input type=\"checkbox\"><a rel=\"tag\">粮油</a></input>\n\t\t\t\t\t<a rel=\"tag\">桑蚕</a>\n\t\t\t\t\t<a rel=\"tag\">中药材</a>\n\t\t\t\t\t<a rel=\"tag\">畜牧业</a>\n\t\t\t\t\t<a rel=\"tag\">蔬菜</a>\n\t\t\t\t\t<a rel=\"tag\">水果</a>\n\t\t\t\t\t<a rel=\"tag\">花卉</a>\n\t\t\t\t\t<a rel=\"tag\">水产渔业</a>\n\t\t\t\t\t<a rel=\"tag\">茶叶</a>\n\t\t\t\t\t<a rel=\"tag\">饲料</a>\n\t\t\t\t\t<a rel=\"tag\">花卉</a>\n\t\t\t\t\t<a rel=\"tag\">农村能源</a>\n\t\t\t\t\t<a rel=\"tag\">农产品销售</a>\n\t\t\t\t\t<a rel=\"tag\">农业政策</a>\n\t\t\t\t\t<a rel=\"tag\">农业法律</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t \t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">指定专家</span>\n\t\t \t\t<div id=\"select_expert\">\n\t\t\t\t\t<a rel=\"tag\">鲁兴萌</a>\n\t\t\t\t\t<a rel=\"tag\">金佩华</a>\n\t\t\t\t\t<a rel=\"tag\">中药材</a>\n\t\t\t\t\t<a rel=\"tag\">余荣峰</a>\n\t\t\t\t\t<a rel=\"tag\">王立如</a>\n\t\t\t\t\t<a rel=\"tag\">许年林</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"question_detail_div\">\n\t\t\t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">标题</span>\n\t\t\t\t<input class=\"question_title\" type=\"text\" name=\"questiontitle\" placeholder=\"请写下你的问题...\" />\n\t\t\t</div>\n\t\t\t<div class=\"question_detail_div\">\n\t\t\t\t<p>请对问题进行补充或者上传问题中涉及的图片 </p>\n\t\t\t\t<textarea name=\"content\"  class=\"xheditor-mini {skin:'nostyle',layerShadow:0,upBtnText:'本地图片',upImgUrl:'upload.asp'}\" style=\"width: 100%; height: 150px;\" placeholder=\"问题说明（可选）...\"></textarea>\n\t\t\t\t<div class=\"question_toolbar\">\n\t\t\t\t\t<div class=\"question_gradient\"></div>\n\t\t\t\t\t<button class=\"question_button\" type=\"submit\">发布</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n<script type=\"text/javascript\">\n\t$(document).ready(function(){\n\t\t$(\".tag_pro a\").click(function(){\n\t\t\t$(this).addClass(\"selecttag\");\n\t\t\t$(this).nextAll(\"a\").removeClass(\"selecttag\");\n\t\t\t$(this).prevAll(\"a\").removeClass(\"selecttag\");\n\t\t});\n\t});\n</script>\n\t</div>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/askquestionpage.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"${ctx}/style/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"${ctx}/style/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/detailinputunit.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/countryside.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/jslib/xheditor/xheditor_skin/nostyle/ui.css\" rel=\"stylesheet\" media=\"screen\">\n\t\n\t<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n \t<style>\n \t\t.question_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n\t\t.question_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n\t\t.question_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 18px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\t\t.question_title{border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0;padding: 5px; width: 300px; font-size: 15px;}\n \t</style>\n\t<script>\n\t\t$(function() {\n\t\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/front/web/communicate/getAllManualTree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tonSelect:function(node){ \n\t\t    var id= node.id;\n\t\t\tgetExpert(id);\n            }\n\t\t   });\n\t\t  });\n\t\t /*\n\t\t $('#pid').change(function(){ \n\t\t    alert(\"hello\");\n\t\t    var id= $('#pid').val();\n\t\t\tgetExpert(id);\n\t\t });\n\t\t */\n\t\t \n\t\t\n\t\t\n\t\tfunction getExpert(id)\n       {\n\t\t   \n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/manual/base/getExpertByCategory',\n\t\tdata:{'id':id},\n\t\tcache:true,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#select_expert\").empty();\n\t\t\t\tfor(var e in data.obj.list)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<a rel=\"{0}\">{1}</a>',data.obj.list[e].autoID,data.obj.list[e].realName);\n\t\t\t\t $('#select_expert').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\t$(\".tag_pro #select_expert a\").click(function(){\n\t\t\t\t\t$(this).addClass(\"selecttag\");\n\t\t\t\t\t$(this).nextAll(\"a\").removeClass(\"selecttag\");\n\t\t\t\t\t$(this).prevAll(\"a\").removeClass(\"selecttag\");\n\t\t\t\t\tvar rel2=$(this).attr(\"rel\");\n\t\t\t\t\t$(\"#expertPersonalID\").val(function(){return rel2});\t\n\t\t\t\t});\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t}\n\t\t\t\t});\n    }\n\t</script>\n\t\n\n\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n  <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/base/getQuestionList\"> 在线交流</a><a> &gt; </a><a href=\"#\"> 提问</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"widget\" id=\"widget_question\">\n\t<div class=\"question_unit\">\n\t\t<div class=\"question_detail\">\n\t\t    <form id=\"questionform\" method=\"post\">\n\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t \t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">问题分类</span>\n\n\t\t \t\t<div id=\"select_category\">\n                    <select id=\"pid\" name=\"manualCategoryID\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"tag_pro question_detail_div\">\n\t\t \t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">指定专家</span>\n\n\t\t \t\t<div id=\"select_expert\">\n\t\t\t\t</div>\n\t\t\t\t<input type=\"hidden\" name=\"expertPersonalID\" id=\"expertPersonalID\" value=\"\"></input>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"question_detail_div\">\n\t\t\t\t<span style=\"font-size:20px; float:left;line-height:25px; margin-right: 10px; width: 50px;font-weight: bold;\">标题</span>\n\t\t\t\t<input class=\"question_title\" id=\"question_title\" type=\"text\" name=\"title\" placeholder=\"请写下你的问题...\" />\n\t\t\t</div>\n\t\t\t\n\n\t\t\t\n\t\t\t<div class=\"question_detail_div\">\n\t\t\t\t<p>请对问题进行补充或者上传问题中涉及的图片 </p>\n\t\t\t\t<textarea name=\"content\" id=\"question_content\"  class=\"xheditor-mini {skin:'nostyle',layerShadow:0,upBtnText:'本地图片',upImgUrl:'upload.asp'}\" style=\"width: 100%; height: 150px;\" placeholder=\"问题说明（可选）...\"></textarea>\n\t\t\t    <div id=\"file_upload_area\" class=\"table\">\n\t\t\t\t\t<table class=\"grid\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t<div id=\"file_upload\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n                 <input type=\"hidden\" name=\"attachmentContent\" value=\"\"/>  <!--保存文件上传后的路径-->\n\t\t\t\t<div class=\"question_toolbar\">\n\t\t\t\t\t<div class=\"question_gradient\"></div>\n\n\t\t\t\t\t<button class=\"question_button\" type=\"submit\" >发布</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n<script type=\"text/javascript\">\n\t$(document).ready(function(){\n\t\t$(\".tag_pro #select_expert a\").click(function(){\n\t\t\t$(this).addClass(\"selecttag\");\n\t\t\t$(this).nextAll(\"a\").removeClass(\"selecttag\");\n\t\t\t$(this).prevAll(\"a\").removeClass(\"selecttag\");\n\t\t\tvar rel2=$(this).attr(\"rel\");\n\t\t\t$(\"#expertPersonalID\").val(function(){return rel2});\t\n\t\t});\n\t});\n</script>\n    <script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n    <script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n  \n\t<script>\n\t\t$(function() {\n\t\t//var editor = $('#content').xheditor();\n\t\tvar editor = $('#question_content').xheditor({cleanPaste:0,height:'300px',upBtnText:'选择',upImgUrl:'${ctx}/front/web/communicate/getUploadFile'});\n\t\tvar waitupload = false; //是否已经触发附件上传\n\n\t\t$('#questionform').form({\n\t\t\turl : '${ctx}/front/web/communicate/question/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar uploadCount = $('#uploadfileQueue').find('.uploadify-queue-item').length; //等待上传附件的个数\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\telse if($(\"#file_upload_area\").is(\":hidden\") == false && waitupload == false && uploadCount > 0){\n\t\t\t\t\t//有附件需要上传时，则先让附件上传完毕再保存页面内容\n\t\t\t\t\twaitupload = true;\n\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t$('#file_upload').uploadify(\"upload\",\"*\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\twindow.location.href='${ctx}/front/web/base/getQuestionList';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tfnInituploadify();\n\t});\n    \n    var allFileUploadSuccess = true; //标识是否全部附件都上传成功\n    //初始化上传控件\n    function fnInituploadify() {\n        $(\"#file_upload\").uploadify({\n            'debug': false,\t//开启调试  \n            'auto': false,\t//是否自动上传  \n            'buttonText': '选择附件',\n            'swf': \"${ctx}/jslib/Uploadify/uploadify.swf\",\t//flash  \n            'queueID': 'uploadfileQueue',\t//文件选择后的容器ID  \n            'uploader': '${ctx}/front/web/communicate/base/getUploadFile',  \t//服务器后台的上传响应函数\n            'width': '120',\n            'height': '29',\n            'multi': true,\n            'fileTypeDesc': '支持格式',\n            'fileTypeExts': '*.jpg;*.png;*.bmp;*.jpeg;',\n            'fileSizeLimit': '5MB',\n            'removeTimeout': 3,\n            'successTimeout': 60,\n            'removeCompleted': false,\n            'fileObjName': 'Filedata',\n            'formData': {  },  \n\t\t\t'cancelImg': \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n            //返回一个错误，选择文件的时候触发  \n            'onSelectError': function (file, errorCode, errorMsg) {\n                switch (errorCode) {\n                    case -100:\n                        alert(\"上传的文件数量已经超出系统限制的\" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + \"个文件！\");\n                        break;\n                    case -110:\n                        alert(\"文件 [\" + file.name + \"] 大小超出系统限制的\" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + \"大小！\");\n                        break;\n                    case -120:\n                        alert(\"文件 [\" + file.name + \"] 大小异常！\");\n                        break;\n                    case -130:\n                        alert(\"文件 [\" + file.name + \"] 类型不正确！\");\n                        break;\n                }\n            },\n            //检测FLASH失败调用  \n            'onFallback': function () {\n            \twaitupload = false;\n            \tprogressClose();\n                alert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n            },\n            //上传到服务器，服务器返回相应信息到data里  \n            'onUploadSuccess': function (file, data, response) {\n\t\t\t\t\n                if (response == true) {\n\t\t\t\t\n                \tvar dataobj = JSON.parse(data);\n                    if(dataobj.err != \"\"){\n                    \tallFileUploadSuccess = false;\n                    \talert(dataobj.err);\n                    }\t\n                    if(dataobj.msg != \"\"){\n\t\t\t\t\t\t\n                    \t$('input[name=attachmentContent]').val($('input[name=attachmentContent]').val() + dataobj.msg); //将附件在服务器中的路径写入attachmentContent\n                    }\n                }\n                else {\n\t\t\t\t\n                \tallFileUploadSuccess = false;\n                }\n            },\n            'onQueueComplete': function (queueData) {\n            \tif(allFileUploadSuccess == false){\n            \t\twaitupload = false;\n                    progressClose();\n                    alert(\"有附件上传不成功\");\n            \t}\n            \telse{\n            \t\t$('#questionform').submit();\n            \t}\n            }\n        });\n     }\n\t\t\n\t\n\t</script>\n\t</div>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/commpanylist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/commpany.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./commpanylist.html\"> 农企信息列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的公司...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n<li>\n\t<a href=\"applycommpany.html\" target=\"_blank\"><button class=\"applycommpany\" id=\"btn_applycommpany\">发布农企信息</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!-- head:农企信息 -->\n<div class=\"widget\" id=\"widget_company\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>待审核农企信息</b>\n   </span>\n   </div>\n<ul>\n\t<li><a href=\"./\">常德恒凤渔业有限公司</a><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>成立日期： 2016/5/31<br/>状态：<span style=\"color: red;\">未审核</span></p></li>\n\t<li><a href=\"./\">建德市大同镇锦惠农庄</a><p>主营： 热食类食品制售（小型餐饮）（依法须经批准的项目，经相关部门批准后方可开展经营活动）<br/>成立日期： 2016/6/16<br/>状态：<span style=\"color: red;\">未审核</span></p></li>\n</ul>\n</div>\n<!-- end:农企信息 -->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:农企信息 -->\n  <div class=\"widget companylist\" id=\"widget_companylist\">\n<ul>\n\t<li><a href=\"./\">常德恒凤渔业有限公司</a><br/><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>网址： www.2333.com</p></li>\n\t<li><a href=\"./\">建德市大同镇锦惠农庄</a><br/><p>主营： 热食类食品制售（小型餐饮）（依法须经批准的项目，经相关部门批准后方可开展经营活动）<br/>网址： www.23112.com</p></li>\n\t<li><a href=\"./\">兰溪市野狐山寨休闲农庄</a><br/><p>主营： 饭馆；中餐类制售；农家乐；不含凉菜；不含裱花蛋糕；不含生食海产品<br/>网址： www.atkd.com.cn</p></li>\n\t<li><a href=\"./\">诸暨市枫桥良禹农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 养殖销售：淡水产 <br/>网址： www.rerr3.com</p></li>\n\t<li><a href=\"./\">诸暨市岭北晋坤农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 种植：蔬菜、水果<br/>网址： www.2877.com</p></li>\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:农企信息 -->\n\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/commpanylist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"UTF-8\"%>  \n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/commpany.css\" rel=\"stylesheet\" media=\"screen\">\n  </head>\n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/agribusiness/base/getCommpanyList\"> 农企信息列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的公司...\">\n\t\t<button id=\"btn_search\" onclick=\"fnSearch();\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n<li>\n\t<a href=\"${ctx}/front/agribusiness/base/getApplyCommpany\"><div style=\"margin-top: 10px;\" class=\"applycommpany\" id=\"btn_applycommpany\"></div></a>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!-- head:农企信息 -->\n<div class=\"widget\" id=\"widget_company\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>待审核农企信息</b>\n   </span>\n   </div>\n<ul id=\"notAuditCompanyList\">\n\t<c:if test=\"${!empty notAuditCompanyList}\">\n\t<c:forEach items=\"${notAuditCompanyList}\" var=\"n\">\n\t\t<li><a href=\"javascript:void(0);\">${n.businessName}</a><p>${n.businessIntroduce}<br/>网址： ${n.businessSite}<br/>状态：<span style=\"color: red;\">${n.statusDesc}</span></p></li>\n\t</c:forEach>\n\t</c:if>\n</ul>\n</div>\n<!-- end:农企信息 -->\n\n<!--head:扁平图标导航-->\n <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:农企信息 -->\n  <div class=\"widget companylist\" id=\"widget_companylist\">\n<ul id=\"companyList\">\n\t<c:if test=\"${!empty companyList}\">\n\t<c:forEach items=\"${companyList}\" var=\"n\">\n\t\t<li><a href=\"javascript:void(0);\">${n.businessName}</a><br/><p>${n.businessIntroduce}<br/>${n.businessSite}</p></li>\n\t</c:forEach>\n\t</c:if>\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<input id=\"page_size\" type=\"hidden\" value=\"10\" />\n\t<input id=\"records_total\" type=\"hidden\" value=\"0\" />\n\t<a href=\"javascript:changePage(1);\">上一页</a> \n\t<a id=\"current_page\" currentpage=\"1\" href=\"javascript:void(0); \" class=\"paginator_current\">1</a> \n\t<a href=\"javascript:changePage(2);\">下一页</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:农企信息 -->\n\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n<script>\n  $(document).ready(function(){\n  \t$.ajax({\n            type: \"GET\",\n            contentType: \"application/json\",\n            url: \"${ctx}/front/agribusiness/base/listUnAduitedByUser?rows=10&page=1\",\n            data: \"{}\",\n            dataType: \"json\",\n            success: function (json) {\n            \tif(json.total > 0){\n            \t\tfor (var i = 0; i < json.total; i++) {\n            \t\t\tvar item = \"<li><a href='javascript:void(0);'>\" + json.rows[i].businessName + \"</a><p>\" + json.rows[i].businessIntroduce;\n            \t\t\titem += \"<br/>网址： \" + json.rows[i].businessSite + \"<br/>状态：<span style='color: red;'>\" + json.rows[i].statusDesc + \"</span></p></li>\";\n            \t\t\t$(\"#notAuditCompanyList\").append(item);\n            \t\t}\n            \t}               \n            },\n            error: function (xhr, error, thrown) {\n                \n            }\n        });\n      getData();\n  });\n  \n  function changePage(flag){\n  \tvar pagesize = parseInt($(\"#page_size\").val());\n  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n  \tvar total = parseInt($(\"#records_total\").val());\n  \tif(flag == 1){\n  \t\t//上一页\n  \t\tif(current <= 1){\n  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n  \t\t\talert(\"已经到达第一页\");\n  \t\t\treturn;\n  \t\t}\n  \t\tcurrent--;\n  \t}\n  \telse{\n  \t\t//下一页\n        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n        if ((current + 1) > pageCount) {\n            alert(\"已经到达最后一页\");\n            return false;\n        }\n        current++;\n  \t}\n  \t$(\"#current_page\").attr(\"currentpage\", current);\n  \t$(\"#current_page\").text(current);\n  \tgetData();\n  }\n  \n  function fnSearch(){\n  \t$(\"#current_page\").attr(\"currentpage\", 1);\n  \t$(\"#current_page\").text(1);\n  \tgetData();\n  }\n  \n  function getData(){\n  \tvar searchcontent = $(\"#input_search\").val();\n  \tsearchcontent = searchcontent.trim();\n  \tvar pagesize = parseInt($(\"#page_size\").val());\n  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n  \tvar url = \"${ctx}/front/agribusiness/base/searchCompanyList\";\n  \t\n  \t$.ajax({\n            url: url,\n            data: { \"rows\": pagesize, \"page\": current, \"searchcontent\": searchcontent},\n            type: \"POST\",\n            dataType: \"json\",\n            success: function (json) {\n            \t$(\"#companyList\").html('');\n            \t$(\"#records_total\").val(json.total);\n            \tfor (var i = 0; i < json.rows.length; i++) {\n            \t\tvar item = \"<li><span href='javascript:void(0);'>\" + json.rows[i].businessName + \"</span><br/><p>\" + json.rows[i].businessIntroduce;\n            \t\titem += \"<br/> \" + json.rows[i].businessSite + \"</p></li>\";\n            \t\t$(\"#companyList\").append(item);\n            \t}              \n            },\n            error: function (xhr, error, thrown) {\n                \n            }\n        });\n  \t}\n  </script>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/countrysidelist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/countryside.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./countrysidelist.html\">下乡管理列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<a href=\"applycountryside.html\" target=\"_blank\"><button class=\"applycountryside\" id=\"btn_applycountryside\">申请下乡</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!-- head:农企信息 -->\n<div class=\"widget\" id=\"widget_company\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>待审核下乡记录</b>\n   </span>\n   </div>\n<ul>\n\t<li><a href=\"./\">前往梅头村调研</a><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>出发日期： 2016/9/20<br/>状态：<span style=\"color: red;\">未审核</span></p></li>\n</ul>\n</div>\n<!-- end:农企信息 -->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:农企信息 -->\n <div class=\"widget countrysidelist\" id=\"widget_countrysidelist\">\n<ul>\n\t<li><a href=\"./\">前往常德恒凤渔业有限公司</a><br/><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>出发日期： 2016/5/31</p></li>\n\t<li><a href=\"./\">前往建德市大同镇锦惠农庄</a><br/><p>主营： 热食类食品制售（小型餐饮）（依法须经批准的项目，经相关部门批准后方可开展经营活动）<br/>出发日期： 2016/6/16</p></li>\n\t<li><a href=\"./\">前往兰溪市野狐山寨休闲农庄</a><br/><p>主营： 饭馆；中餐类制售；农家乐；不含凉菜；不含裱花蛋糕；不含生食海产品<br/>出发日期： 2016/6/14</p></li>\n\t<li><a href=\"./\">前往诸暨市枫桥良禹农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 养殖销售：淡水产 <br/>出发日期： 2016/6/14</p></li>\n\t<li><a href=\"./\">前往诸暨市岭北晋坤农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 种植：蔬菜、水果<br/>出发日期： 2016/6/14</p></li>\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:农企信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/countrysidelist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/countryside.css\" rel=\"stylesheet\" media=\"screen\">\n  </head>\n  \n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/village/base/getCountrysideList\">下乡管理</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<a href=\"${ctx}/front/village/base/getApplycountryside\"><div class=\"applycountryside\" id=\"btn_applycountryside\"></div></a>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!-- head:农企信息 -->\n<!-- 屏蔽待审核的\n<div class=\"widget\" id=\"widget_company\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>待审核下乡记录</b>\n   </span>\n   </div>\n\n<ul id=\"notAuditCountrysideList\">\n     <c:if test=\"${!empty efApplication}\">\n\t    <c:forEach items=\"${efApplication}\" var=\"n\">   \n\t\t\t<li><a href=\"./\">${n.businessMatter}</a><p>地址:${n.businessArea}${n.businessAddress}<br/>出发日期： ${n.businessDate}<br/>状态：<span style=\"color: red;\">未审核</span></p></li>\t  \n\t\t</c:forEach>\t\n\t</c:if>\n</ul>\n</div>\n -->\n<!-- end:农企信息 -->\n\n<!--head:扁平图标导航-->\n <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:农企信息 -->\n <div class=\"widget countrysidelist\" id=\"widget_countrysidelist\">\n<ul id=\"countrysideList\">\n\t<!--  \n\t<li><a href=\"./\">前往常德恒凤渔业有限公司</a><br/><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>出发日期： 2016/5/31</p></li>\n\t<li><a href=\"./\">前往建德市大同镇锦惠农庄</a><br/><p>主营： 热食类食品制售（小型餐饮）（依法须经批准的项目，经相关部门批准后方可开展经营活动）<br/>出发日期： 2016/6/16</p></li>\n\t<li><a href=\"./\">前往兰溪市野狐山寨休闲农庄</a><br/><p>主营： 饭馆；中餐类制售；农家乐；不含凉菜；不含裱花蛋糕；不含生食海产品<br/>出发日期： 2016/6/14</p></li>\n\t<li><a href=\"./\">前往诸暨市枫桥良禹农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 养殖销售：淡水产 <br/>出发日期： 2016/6/14</p></li>\n\t<li><a href=\"./\">前往诸暨市岭北晋坤农庄</a><br/><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 种植：蔬菜、水果<br/>出发日期： 2016/6/14</p></li>\n\t-->\n</ul>\n<!--head:列表分页  -->\n<div class=\"list_paginator\">\n\t<input id=\"page_size\" type=\"hidden\" value=\"3\" />\n\t<input id=\"records_total\" type=\"hidden\" value=\"0\" />\n\t<a href=\"javascript:changePage(1);\">上一页</a> \n\t<a id=\"current_page\" currentpage=\"1\" href=\"javascript:void(0); \" class=\"paginator_current\">1</a> \n\t<a href=\"javascript:changePage(2);\">下一页</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:农企信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n<script>\n\t$(document).ready(function(){\n      getData();\n  \t});\n  \n  \tfunction changePage(flag){\n  \tvar pagesize = parseInt($(\"#page_size\").val());\n  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n  \tvar total = parseInt($(\"#records_total\").val());\n  \tif(flag == 1){\n  \t\t//上一页\n  \t\tif(current <= 1){\n  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n  \t\t\talert(\"已经到达第一页\");\n  \t\t\treturn;\n  \t\t}\n  \t\tcurrent--;\n  \t}\n  \telse{\n  \t\t//下一页\n        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n        if ((current + 1) > pageCount) {\n            alert(\"已经到达最后一页\");\n            return false;\n        }\n        current++;\n  \t}\n  \t$(\"#current_page\").attr(\"currentpage\", current);\n  \t$(\"#current_page\").text(current);\n  \tgetData();\n  }\n  \n  function getData(){\n  \tvar pagesize = parseInt($(\"#page_size\").val());\n  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n  \tvar url = \"${ctx}/front/village/base/listAllByUser\";\n  \t\n  \t$.ajax({\n            url: url,\n            data: { \"rows\": pagesize, \"page\": current},\n            type: \"POST\",\n            dataType: \"json\",\n            success: function (json) {\n            \t$(\"#countrysideList\").html('');\n            \t$(\"#records_total\").val(json.total);\n            \tfor (var i = 0; i < json.rows.length; i++) {\n            \t\tvar item = \"<li><a href='javascript:void(0);'>前往地址：\" + json.rows[i].businessArea + json.rows[i].businessAddress + \"</a><br/>\";\n            \t\titem += \"<p>下乡事由：\" + json.rows[i].businessReason + \"<br/>出发日期：\" + json.rows[i].businessDate.split(\" \")[0] + \"，结束日期：\" + json.rows[i].businessDate.split(\" \")[0];\n            \t\titem += \"<br/>下乡人员：\" + json.rows[i].personalListStr + \"<br/>联系人：\" + json.rows[i].businessLinkMan + \"，电话：\" + json.rows[i].businessLinkPhone;\n            \t\titem += \"<br/>状态：<span style='color: red;'>\" + json.rows[i].statusDesc + \"</span></p></li>\";\n            \t\t$(\"#countrysideList\").append(item);\n            \t}              \n            },\n            error: function (xhr, error, thrown) {\n                \n            }\n        });\n  }\n</script>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/expertlist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/expert.css\" rel=\"stylesheet\" media=\"screen\">\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/\">专家库</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchexpert\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\"\n\t\t\t\t\t\t\t\tplaceholder=\"搜索专家...\">\n\t\t<div onclick=\"fnSearch();\"\n\t\t\t\t\t\t\t\tstyle=\"width: 40px; height: 35px; position: absolute; top: 0px; right: 0px;\"></div>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询-->\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:列表信息 -->\n<div class=\"widget expertlist\">\n\n<ul id=\"expertList\">\n\t\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<input id=\"page_size\" type=\"hidden\" value=\"20\" />\n\t<input id=\"records_total\" type=\"hidden\" value=\"0\" />\n\t<a href=\"javascript:changePage(1);\">上一页</a> \n\t<a id=\"current_page\" currentpage=\"1\" href=\"javascript:void(0); \" class=\"paginator_current\">1</a> \n\t<a href=\"javascript:changePage(2);\">下一页</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:列表信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n<script>\n\t$(document).ready(function(){\n\t\tgetData();\n\t\t\n\t\t$(\"#input_search\").keyup(function(event) {\n\t\t\tif (!event || event.which != 13)\n\t\t\t\treturn true;\n\t\t\tfnSearch();\n\t\t});\n\t});\n\t\n\tfunction changePage(flag){\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar total = parseInt($(\"#records_total\").val());\n\t  \tif(flag == 1){\n\t  \t\t//上一页\n\t  \t\tif(current <= 1){\n\t  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t\t\talert(\"已经到达第一页\");\n\t  \t\t\treturn;\n\t  \t\t}\n\t  \t\tcurrent--;\n\t  \t}\n\t  \telse{\n\t  \t\t//下一页\n\t        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n\t        if ((current + 1) > pageCount) {\n\t            alert(\"已经到达最后一页\");\n\t            return false;\n\t        }\n\t        current++;\n\t  \t}\n\t  \t$(\"#current_page\").attr(\"currentpage\", current);\n\t  \t$(\"#current_page\").text(current);\n\t  \tgetData();\n  \t}\n  \t\n  \tfunction fnSearch(){\n\t  \t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t$(\"#current_page\").text(1);\n\t  \tgetData();\n\t}\n\t\n\tfunction getData(){\n\t  \tvar searchcontent = $(\"#input_search\").val();\n\t  \tsearchcontent = searchcontent.trim();\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar url = \"${ctx}/front/web/expert/base/getExpertData\";\n\t  \t\n\t  \t$.ajax({\n\t            url: url,\n\t            data: { \"rows\": pagesize, \"page\": current, \"searchKey\": searchcontent },\n\t            type: \"POST\",\n\t            dataType: \"json\",\n\t            success: function (json) {\n\t            \t$(\"#expertList\").html('');\n\t            \t$(\"#records_total\").val(json.total);\n\t            \tfor (var i = 0; i < json.rows.length; i++) {\n\t            \t\tvar item = \"<li>\";\n\t\t\t\t\t\tif (json.rows[i].imagePath != null && json.rows[i].imagePath != \"\") {\n\t\t\t\t\t\t\t\t\titem += $.formatString('<img src=\"{0}\">', json.rows[i].imagePath);\n\t\t\t\t\t\t\t\t\titem += $.formatString('<span class=\"expertname\">{0}</span><br><span class=\"expertcontent\">研究方向：{1}</span><br><span class=\"expertcontent\">职称：{2}</span><br><span class=\"expertcontent\">联系方式：{3}</span><br><p>{4}</p>',\n\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].realName, json.rows[i].techType, json.rows[i].techTitle, json.rows[i].email, json.rows[i].description);\n\t\t\t\t\t\t}\n\t\t\t\t\t\titem += \"</li>\";\n\t            \t\t$(\"#expertList\").append(item);\n\t            \t}              \n\t            },\n\t            error: function (xhr, error, thrown) {\n\t                \n\t            }\n\t        });\n  \t}\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/footer.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n             <div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n     </div>\t  \n </div>\n<!--end:底部信息-->\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/forgetpassword.html",
    "content": "<!DOCTYPE html>\n<!-- saved from url=(0049)http://www.inoto.net:8081/ForgetPasswordForm.aspx -->\n<html class=\"fluid sticky-sidebar\"><!-- <![endif]--><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><title>\n\t忘记密码\n</title>\n    <!-- Meta -->\n    <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\"><meta name=\"apple-mobile-web-app-capable\" content=\"yes\"><meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\"><link href=\"./styles/register/main.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"./styles/register/signin.css\" rel=\"stylesheet\" type=\"text/css\">\n    <style>\n        .logo\n        {\n            float: left;\n        }\n        \n        .area\n        {\n            width: 1002px;\n            margin: 0px auto;\n        }\n        \n        a.btnf80, .btnf80\n        {\n            text-decoration: none;\n            float: left;\n            text-align: center;\n            border: 1px solid #f80;\n            border-top: 1px solid #fb3;\n            border-radius: 4px;\n            box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6);\n            color: #fff;\n            text-shadow: 0 1px 1px rgba(0,0,0,.3);\n            background: #f80;\n            background: -webkit-gradient(linear, left top, left bottom, from(#ffbb33),to(#ff8800));\n            background: -moz-linear-gradient( top, #ffbb33, #ff8800);\n            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb33',endColorstr='#ff8800');\n        }\n    </style>\n</head>\n<body class=\"\">\n    <div class=\"head\">\n        <div id=\"headMenu\" class=\"area\">\n            <div style=\"width: 635px; margin: 0 auto;\">\n                <p style=\"float: left; margin-left: 222px; margin-top: 32px;\">\n                    <font class=\"xtdl\">忘 记 密 码</font></p>\n                <p style=\"overflow: hidden; float: right; margin-top: 46px;\">\n                    <a href=\"login.html\" class=\"btnf80 login_convert\" style=\"float: right;\">重新登录</a>\n                </p>\n            </div>\n        </div>\n    </div>\n    <!-- Main Container Fluid -->\n    <div class=\"container-fluid fluid menu-left\">\n        <!-- Content -->\n        <div id=\"content\">\n            <div class=\"area\">\n                <table width=\"100%\">\n                    <tbody>\n                        <tr>\n                            <td width=\"100%\" height=\"450\" colspan=\"2\" align=\"center\" valign=\"middle\">\n                                <table>\n                                    <tbody>\n                                        <tr>\n                                            <td align=\"center\" valign=\"middle\">\n                                                <div class=\"area table_new\">\n                                                    <div class=\"content form\">\n                                                        <div class=\"table_content talbe_area2\">\n                                                            <form id=\"validateform1\" method=\"post\" action=\"\">\n                                                            <div class=\"bitian\" style=\"top: 15px; left: 60px;\">\n                                                                必填\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>账号名</strong><label id=\"spelogincode\" class=\"sp\" style=\"display: inline;\">账号名不能为空</label></span>\n                                                                        <span>\n                                                                            <input id=\"logincode\" name=\"logincode\" type=\"text\" placeholder=\"必填项\">\n                                                                            <font>由英文或数字组成，且首字符必须以英文字母开头</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>邮&nbsp;&nbsp;&nbsp;箱</strong><label id=\"speemail\" class=\"sp\" style=\"display: inline;\">邮箱不能为空</label></span>\n                                                                        <span>\n                                                                            <input id=\"email\" name=\"email\" type=\"text\" placeholder=\"必填项\">\n                                                                            <font>请填写注册时的邮箱地址</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span>\n                                                                            <img src=\"./\" id=\"validImg\" onclick=\"f_refreshtype()\" style=\"cursor: pointer;\"><label id=\"spevalidvalue\" class=\"sp\">填写的验证码错误</label></span> <span>\n                                                                                    <input id=\"validvalue\" name=\"validvalue\" type=\"text\" placeholder=\"输入验证码\">\n                                                                                    <font>点击图片刷新验证码</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div>\n                                                                <input id=\"btn_finish\" type=\"button\" onclick=\"finish()\" value=\"申请重设密码\" class=\"login_btn\" style=\"margin: 20px auto 5px;\">\n                                                            </div>\n                                                            </form>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n        </div>\n        <!-- // Content END -->\n        <div id=\"footer\" class=\"hidden-print\">\n            <!--  Copyright Line -->\n            <div class=\"copy\">\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n            </div>\n            <!--  End Copyright Line -->\n        </div>\n        <!-- // Footer END -->\n    </div>\n    <!-- // Main Container Fluid END -->\n    <!-- JQuery -->\n    <script src=\"./scripts/forgetpassword/jquery-1.10.1.min.js\" type=\"text/javascript\"></script>\n    <script src=\"./scripts/forgetpassword/website.forgetpassword.js\" type=\"text/javascript\"></script>\n\n\n</body></html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/header.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n  <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"${ctx}/style/images/index/banner.png\"/>\n            </div>\n            <div id=\"nav\">\n\t            <a class=\"home_url\"></a>\n\t            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n\t            \t<ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n\t            \t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"${ctx}/front/web/base/index\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=News\">新闻动态</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=Information\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=Report\">工作简报</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=BaseConstruction\">示范基地</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"${ctx}/front/web/expert/base/getExpertList\">服务专家</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"${ctx}/front/web/base/getKnowledgeData?categoryCode=Industry\">知识库</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-265\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-265\"><a href=\"${ctx}/front/web/base/getKnowledgeData?categoryCode=Variety\">品种库</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-266\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-266\"><a href=\"${ctx}/front/web/base/getKnowledgeData?categoryCode=Achievement\">成果库</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-267\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-267\"><a href=\"${ctx}/front/web/base/getKnowledgeData?categoryCode=Technology\">技术库</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<!--  \n\t\t\t\t\t<li id=\"menu-item-265\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-265\"><a href=\"${ctx}/front/web/base/getLoginVideoPage\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"${ctx}/front/web/base/getLoginTTIPage\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"${ctx}/front/web/base/getPersonalCenter\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t\t-->\n\t\t\t\t\t</ul>\n\t\t\t\t</div>            \n            </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t</div>\n  <!-- end:头部导航-->\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/inc-head.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>华南农业大学农业推广网</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"${ctx}/style/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"${ctx}/style/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n   <script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery.lazyload.js\"></script>\n   <script type=\"text/javascript\" src=\"${ctx}/jslib/index/pngtm.js\"></script> \n   <script type=\"text/javascript\" src=\"${ctx}/jslib/index/lrscroll.js\"></script> "
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"home blog\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            \t<ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253 current-menu-item\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t</ul>\n\t\t</div>            \n            </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:内容项目-->\n<div id=\"index_model\">\n  <div id=\"index_model_in\">\n  \n  \n  <!-- head:最新新闻 -->\n  <div class=\"widget\" id=\"widget_news\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>最新新闻</b><p>News</p>\n   </span>\n   <a href=\"./articlelist.html\">更多</a>\n   </div>\n\n<ul>\n\n<li><a href=\"./\">华农与榄核镇签订合作框架协议，香云纱成果发布惊艳全场</a>\n<span class=\"time\">2016-07-12</span>\n<p>4月28日下午，我校与广州市南沙区榄核镇政府签订了战略合作框架协议，双方将致力于研究和挖掘非物质文化遗产香云纱的文化价值...</p>\n</li>\n\n<li><a href=\"./\">从8000元到市值2000亿，华农助力小养鸡场完美“逆袭”</a>\n<span class=\"time\">2016-07-10</span>\n<p>据悉，我校在榄核镇跟进香云纱生产已有八年，并于2015年11月27日成立了香云纱研发中心和体验馆。针对区域特色产业发展和榄核文创小镇建设需求...</p>\n</li>\n\n<li><a href=\"./\">2016高校科技成果转化排名，华南农大广东第3，全国第23</a>\n<span class=\"time\">2016-07-05</span>\n<p>系统主要分为农技推广综合管理web前台、农技推广综合管理后台服务系统和“农技通”Android客户端三部分构成，其中后台服务系统负责处理web前台和app端的数据请求...</p>\n</li>\n\n</ul>\n</div>\n<!-- end:最新新闻 -->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n\n<!-- head:通知公告 -->\n  <div class=\"widget\" id=\"widget_inform\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>通知公告</b><p>Information</p>\n   </span>\n   <a href=\"./informationlist.html\">更多</a>\n   </div>\n<ul>\n\t<li><a href=\"./\">新农村发展研究院</a><span class=\"time\">2016/7/11</span></li>\n\t<li><a href=\"./\">华农与榄核镇签订合作框架协议，香云纱成果发布惊艳全场</a><span class=\"time\">2016/7/1</span></li>\n\t<li><a href=\"./\">互联网+现代农业三年 行动实施方案</a><span class=\"time\">2016/6/20</span></li>\n\t<li><a href=\"./\">2016高校科技成果转化排名，华南农大广东第3，全国第23</a><span class=\"time\">2016/6/12</span></li>\n\t<li><a href=\"./\">湖北省高校大学生创新创业工作考察团来校交流</a><span class=\"time\">2016/5/30</span></li>\n\t<li><a href=\"./\">泰国宋卡王子大学师生代表团来校交流</a><span class=\"time\">2016/5/27</span></li>\n</ul>\n</div>\n<!-- end:通知公告 -->\n\n<!-- head:相关链接 -->\n  <div class=\"widget\" id=\"widget_link\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>相关链接</b><p>Information</p>\n   </span>\n   </div>\n<ul>\n\t<li><a href=\"http://www.scau.edu.cn/\">华南农业大学官方网站</a></li>\n\t<li><a href=\"http://meeting.tenchong.com/9?userParameter=streaming\">视频会议系统</a></li>\n\t<li><a href=\"http://localhost:8080/thingToInternet/\">物联网监测平台</a></li>\n\t<li><a href=\"http://125.88.25.226:8006/XiaxiangManage/admin/index\">华南农业大学下乡管理后台</a></li>\n\t<li><a href=\"http://info.scau.edu.cn/\">数学与信息学院</a></li>\n\t<li><a href=\"./\">中华人民共和国农业部</a></li>\n</ul>\n</div>\n<!-- end:相关链接 -->\n\n\n<!-- head:在线交流 -->\n  <div class=\"widget\" id=\"widget_question\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>在线交流</b><p>Communication</p>\n   </span>\n   <a href=\"./questionlist.html\">更多</a>\n   </div>\n<ul>\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【养猪】求救，家里的猪最近总是没食欲</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p1.png\">\n\t\t\t朱元璋御膳菜单:早膳:羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶.(话说早晨吃这么多荤的真没问题?)午膳:胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n朱元璋御膳菜单：\n早膳：羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶。（话说早晨吃这么多荤的真没问题？）\n午膳：胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿、椒末羊肉、香米饭、蒜酪、三鲜汤、豆汤、泡茶。\n\n万历皇帝御膳菜单：\n米面食：八宝馒头、攒馅馒头、蒸卷、海清卷子、蝴蝶卷子；大蒸饼、椒盐饼、夹糖饼、芝麻烧饼、奶皮烧饼、薄脆饼、灵芝饼；枣糕、白馓子、糖馓子、芝麻象眼减煠；鸡蛋面、白切面、水晶饭。\n肉食：烧天鹅（天鹅……）、烧鹅、清蒸鸡、暴腌鸡、川炒鸡、烧肉、白煮肉、清蒸肉、猪屑骨、荔枝猪肉、鲟鳇鲊、蒸鱼、猪耳脆、煮鲜肫肝、玉丝肚肺、蒸羊、燌羊。\n汤品：牡丹头汤、鸡脆饼汤、猪肉龙松汤、玛瑙糕子汤、锦丝糕子汤、木樨糕子汤、酸甜汤、葡萄汤、蜜汤、牛奶。\n【谢评论区 @杨海晨 提醒，煮鲜肫肝并不是猪内脏，我一个天天吃鸭肫的竟然忘了没有猪肫这种说法……】\n\n永乐二年郊祀结束后的庆成宴菜单：\n上卓：按酒五般。果子五般。茶食五般。烧煠五般。汤三品。双下馒头。马肉饭。酒五钟。\n中卓：按酒四般。果子四般。汤三品。双下馒头。马猪羊肉饭（神一般的荤菜三拼？）。酒五钟。\n随驾将军：按酒一般。粉汤。双下馒头猪肉饭。酒一钟。\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">24</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">6</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【种菜】怎么种番茄</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p2.png\">\n\t\t\t开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单。\n开车久了为了加速快，我们都是踩一脚油门后在高转速的时候加档，这样能获得较快的加速，如果想要开的平稳，很简单，从1档开始，加油之后不要在最高转速的时候摘挡挂档，脚离开油门后，等2到3秒转速自己降下来后再摘空挡加档，用这种开法的话基本上冲劲就完全没了，但是缺点就是加速比较慢，可能后面的车会哔哔。。。。。。这方法适合追求极致的朋友驾驶。。。。\n——————————————更新分割线————————————————\n刚拿驾照就上高速很危险！！！\n\n　　一脚油门踩到底的驾驶技巧我 8 岁时开碰碰车的时候就学会了 _(:3 」∠)_ _(:3 」∠)_ _(:3 」∠)_\n\n　　鉴于之前的答案太乱了，整理一下方便阅读。以下均为个人经验，有不对之处请指正。\n\n　　上长途高速驾驶之前建议在环城高速上有一定的驾驶经验，比如北京的五环路，不堵车的情况下能开到 100，而且上面车多，能练习好超车跟车经验，这样不会到了跨省市高速上看到旁边的车 120 甚至 150 开过去的时候自己心慌。\n\n　　一个司机想要安全驾驶，有两点很重要，一个是预判，另一个是让。\n\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">19</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">10</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【种菜】花生喷药技巧</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。当然你不要...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。\n\n当然你不要理解错，语音发力不是弄个篮球/足球解说员搞个语音包。\n\n「霍霍，你车开得挺合理呀！」\n「你这是邦邦邦乱开。」\n「前方50米有一收费站，请勿力劈华山。」\n「嘿嘿嘿。」\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">22</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">5</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条问题-->\n</ul>\n<script>\n//展开问题\n$(\".question_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".question_content\").show();\n\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n});\n\n//折叠问题\n$(\".question_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n});\n</script>\n</div>\n<!-- end:在线交流 -->\n\n\n<!-- head:农企信息 -->\n  <div class=\"widget\" id=\"widget_company\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>农企信息</b><p>Cooperative Company</p>\n   </span>\n   <a href=\"./commpanylist.html\">更多</a>\n   </div>\n<ul>\n\t<li><a href=\"./\">常德恒凤渔业有限公司</a><p>地址： 湖南省常德市鼎城区蒿子港镇长安村八组<br/>网址： www.sf3.com</p></li>\n\t<li><a href=\"./\">建德市大同镇锦惠农庄</a><p>主营： 热食类食品制售（小型餐饮）（依法须经批准的项目，经相关部门批准后方可开展经营活动）<br/>网址： www.kskd.com</p></li>\n\t<li><a href=\"./\">兰溪市野狐山寨休闲农庄</a><p>主营： 饭馆；中餐类制售；农家乐；不含凉菜；不含裱花蛋糕；不含生食海产品<br/>网址： www.23ckkcom</p></li>\n\t<li><a href=\"./\">诸暨市枫桥良禹农庄</a><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 养殖销售：淡水产 <br/>网址： www.dedsc.com</p></li>\n\t<li><a href=\"./\">诸暨市岭北晋坤农庄</a><p>主营： 食品经营（具体经营项目以许可证或批准文件核定的为准） 种植：蔬菜、水果<br/>网址： www.kkiw.com</p></li>\n</ul>\n</div>\n<!-- end:农企信息 -->\n\n\n<!--head:农情图片展示--\n<div class=\"widget case1\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>农情图片展示</b><p>Picture column</p>\n   </span>\n  <a href=\"./\">MORE</a>\n   </div>\n<div id=\"case1\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 972px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 2916px; left: -1458px;\">\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p1.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p2.png\">\n</a></li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p3.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"./upload/p4.png\">\n</a></li>\n\n</ul>\n<div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n\n</div>\n</div>\n \n <script>\n$(function() {\n$(\"#case1\").jCarouselLite({\nbtnNext: \"#case1 .next\",\nbtnPrev: \"#case1 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script>\n</div>\n <!--end:农情图片展示-->\n \n <!--head:滑动图片--\n  <div class=\"widget\" style=\"width:440px;\">\n<div id=\"pic_out\" style=\"width:420px; height: 300px; margin: 0px;\">\n<div id=\"pic\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 420px; height: 320px; border: 0px;\">\n <ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 4700px; left: -1880px;\">\n    <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"./upload/p1.png\"> </a>\n    </li>                                      \n\t\t   \n    <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"./upload/p2.png\"> </a>\n    </li>\n    \n      <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"./upload/p3.png\"> </a>\n    </li>\n    \n       <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"./upload/p4.png\"> </a>\n    </li>\n    </ul>\n\n<a class=\"prve\" style=\"left: 0.41492502334286px;\"></a>\n<a class=\"next\" style=\"right: 0.41492502334286px;\">  </a>\n<script>\n$(function() {\n$(\"#pic\").jCarouselLite({\nbtnNext: \"#pic .next\",\nbtnPrev: \"#pic .prve\",\nspeed:2000,//滚动动画的时间\nauto:4000,//滚动间隔时间\nvisible:1,\nonMouse:true,\nstart:0,\neasing: \"easeInOutBack\",\n});\n});\n</script>\n      \n</div>\n</div>\n</div>\n  <!-- end:滑动图片 -->\n  \n  <!--head:视频中心--\n<div class=\"widget\" id=\"vedios\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>视频中心</b><p>Video Center</p>\n   </span>\n   <a href=\"./\">MORE</a>\n   </div>\n<ul>\n<div class=\"vedio_kuang\">\n  <iframe width=\"510\" height=\"498\" frameborder=\"0\" allowfullscreen=\"\" src=\"./showvideopage.html\"></iframe>  \n</div>\n\n<li><a class=\"in\" href=\"./\">芽苗菜的高产栽培技术</a></li>\n<li><a href=\"./\">未来农业信息管理系统</a></li>\n<li><a href=\"./\">走进华农农业大学信息学院</a></li>\n\n</ul>\n</div>\n<!--end:视频中心-->\n\n\n  </div>\n </div>\n  <!-- end:内容项目 -->\n  \n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n             <div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n        \t</div>\t  \n  \t</div>\n<!--end:底部信息-->\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/index.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\"\n\t\t\t+ request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<base href=\"<%=basePath%>\">\n<jsp:include page=\"./inc-head.jsp\"></jsp:include>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery.easing.1.3.js\"></script>\n</head>\n\n<body class=\"home blog\">\n\t<!--start 登录注册浮动栏 -->\n\t<jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n\t<!-- end 登录注册浮动栏 -->\n\n\t<!-- start:头部导航 -->\n\t<jsp:include page=\"./header.jsp\"></jsp:include>\n\t<!-- end:头部导航-->\n\n\t<!--head:内容项目-->\n\t<div id=\"index_model\">\n\t\t<div id=\"index_model_in\">\n\t\t\t<div style=\"float: left; width: 800px;\">\n\t\t\t\t<!-- head:最新新闻 -->\n\t\t\t\t<div class=\"widget\" id=\"widget_news\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>新闻动态</b>\n\t\t\t\t\t\t\t<p>News</p> </span> <a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=News\" target=\"_blanck\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<table id=\"articleList\" width=\"330\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t<c:forEach items=\"${newsList}\" var=\"nl\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width=\"10\"><span class=\"articleicon\"></span></td>\n\t\t\t\t\t\t\t<td><a href=\"${ctx}/front/news/base/getArticle?article=${nl.autoID}\" target=\"_blank\" title=\"${nl.title}\">${nl.shortTitle}</a></td>\n\t\t\t\t\t\t\t<td align=\"right\" width=\"40\">${nl.publishDate.toString().substring(0,10)}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:最新新闻 -->\n\t\t\t\t\n\t\t\t\t<!-- head:通知公告 -->\n\t\t\t\t<div class=\"widget\" id=\"widget_inform\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>通知公告</b>\n\t\t\t\t\t\t\t<p>Information</p> </span> <a\n\t\t\t\t\t\t\thref=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=Information\" target=\"_blanck\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<table id=\"informationList\" width=\"330\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t<c:forEach items=\"${informationList}\" var=\"il\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width=\"10\"><span class=\"articleicon\"></span></td>\n\t\t\t\t\t\t\t<td><a href=\"${ctx}/front/news/base/getArticle?article=${il.autoID}\" target=\"_blank\" title=\"${il.title}\">${il.shortTitle}</a></td>\n\t\t\t\t\t\t\t<td align=\"right\" width=\"40\">${il.publishDate.toString().substring(0,10)}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:通知公告 -->\n\n\t\t\t\t<!-- head:工作简报 -->\n\t\t\t\t<div class=\"widget\" id=\"widget_news\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>工作简报</b>\n\t\t\t\t\t\t\t<p>Report</p> </span> <a href=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=Report\" target=\"_blanck\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<table id=\"reportList\" width=\"330\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t<c:forEach items=\"${reportList}\" var=\"rl\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width=\"10\"><span class=\"articleicon\"></span></td>\n\t\t\t\t\t\t\t<td><a href=\"${ctx}/front/news/base/getArticle?article=${rl.autoID}\" target=\"_blank\" title=\"${rl.title}\">${rl.shortTitle}</a></td>\n\t\t\t\t\t\t\t<td align=\"right\" width=\"40\">${rl.publishDate.toString().substring(0,10)}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:工作简报 -->\n\t\t\t\t\n\t\t\t\t<!-- head:示范基地 -->\n\t\t\t\t<div class=\"widget\" id=\"widget_inform\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>示范基地</b>\n\t\t\t\t\t\t\t<p>Base Construction</p> </span> <a\n\t\t\t\t\t\t\thref=\"${ctx}/front/news/base/getArticleList?categoryTypeCode=BaseConstruction\" target=\"_blanck\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<table id=\"baseList\" width=\"330\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t\t\t<c:forEach items=\"${baseConstructionList}\" var=\"bl\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width=\"10\"><span class=\"articleicon\"></span></td>\n\t\t\t\t\t\t\t<td><a href=\"${ctx}/front/news/base/getArticle?article=${bl.autoID}\" target=\"_blank\" title=\"${bl.title}\">${bl.shortTitle}</a></td>\n\t\t\t\t\t\t\t<td align=\"right\" width=\"40\">${bl.publishDate.toString().substring(0,10)}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:示范基地 -->\n\t\t\t\t\n\t\t\t\t<!-- head:农企信息 --\n\t\t\t\t<div class=\"widget\" id=\"widget_company\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>农企信息</b>\n\t\t\t\t\t\t\t<p>Cooperative Company</p> </span> <a\n\t\t\t\t\t\t\thref=\"${ctx}/front/agribusiness/base/getCommpanyList\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ul id=\"companyList\">\n\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:农企信息 -->\n\t\t\t\t\n\t\t\t\t<!--head:专家库展示-->\n\t\t\t\t<div class=\"widget_border\"></div>\n<div class=\"widget\" id=\"widget_expert\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>专家库</b><p>Expert</p>\n   </span>\n  <a href=\"./\">更多</a>\n   </div>\n<div id=\"expertList\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 972px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 2916px; left: -1458px;\">\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"${ctx}/uploadfile/p1.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"${ctx}/uploadfile/p2.png\">\n</a></li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"${ctx}/uploadfile/p3.png\">\n</a></li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\"><a href=\"./\">\n<img src=\"${ctx}/uploadfile/p4.png\">\n</a></li>\n\n</ul>\n<div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n\n</div>\n</div>\n \n <script>\n$(function() {\n$(\"#expertList\").jCarouselLite({\nbtnNext: \"#expertList .next\",\nbtnPrev: \"#expertList .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script>\n</div>\n <!--end:专家库展示-->\n\n\t\t\t\t<div class=\"widget_border\"></div>\n\n\t\t\t\t<!-- head:相关链接 -->\n\t\t\t\t<div class=\"widget\" id=\"widget_link\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>相关链接</b>\n\t\t\t\t\t\t\t<p>Link</p> </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"http://www.scau.edu.cn/\">华南农业大学官方网站</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li><a\n\t\t\t\t\t\t\thref=\"http://meeting.tenchong.com/9?userParameter=streaming\">视频会议系统</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li><a href=\"http://localhost:8080/thingToInternet/\">物联网监测平台</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li><a\n\t\t\t\t\t\t\thref=\"http://125.88.25.226:8006/easyFarm/admin/index\">华南农大农技推广服务综合管理平台</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li><a href=\"http://info.scau.edu.cn/\">数学与信息学院</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li><a href=\"./\">中华人民共和国农业部</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:相关链接 -->\n\t\t\t</div>\n\t\t\t<div style=\"float: left; width: 150px;\">\n\t\t\t\t<!--head:扁平图标导航-->\n\t\t\t\t<jsp:include page=\"./navigation.jsp\"></jsp:include>\n\t\t\t\t<!--head:扁平图标导航-->\n\t\t\t</div>\n\t\t\t\n\t\t\t<!-- head:在线交流 --\n\t\t\t\t<div class=\"widget\" id=\"widget_question\">\n\t\t\t\t\t<div class=\"widge_hd\">\n\t\t\t\t\t\t<span> <b>在线交流</b>\n\t\t\t\t\t\t\t<p>Communication</p> </span> <a\n\t\t\t\t\t\t\thref=\"${ctx}/front/web/base/getQuestionList\" target=\"_blanck\">更多</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ul id=\"ul_questionList\">\n\n\t\t\t\t\t</ul>\n\t\t\t\t\t<script>\n\t\t\t\t\t\t//展开问题\n\t\t\t\t\t\t$(\".question_expandable\")\n\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.find(\".question_collapse\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//折叠问题\n\t\t\t\t\t\t$(\".question_collapse\").click(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t.prevAll(\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t.prevAll(\".question_expandable\")\n\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t</script>\n\t\t\t\t</div>\n\t\t\t\t<!-- end:在线交流 -->\n\t\t\t\n\n\n\t\t\t<!--head:滑动图片--\n  <div class=\"widget\" style=\"width:440px;\">\n<div id=\"pic_out\" style=\"width:420px; height: 300px; margin: 0px;\">\n<div id=\"pic\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 420px; height: 320px; border: 0px;\">\n <ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 4700px; left: -1880px;\">\n    <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"${ctx}/uploadfile/p1.png\"> </a>\n    </li>                                      \n\t\t   \n    <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"${ctx}/uploadfile/p2.png\"> </a>\n    </li>\n    \n      <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"${ctx}/uploadfile/p3.png\"> </a>\n    </li>\n    \n       <li style=\"overflow: hidden; float: left; width: 400px; height: 320px;\"><a href=\"./\"> <img src=\"${ctx}/uploadfile/p4.png\"> </a>\n    </li>\n    </ul>\n\n<a class=\"prve\" style=\"left: 0.41492502334286px;\"></a>\n<a class=\"next\" style=\"right: 0.41492502334286px;\">  </a>\n<script>\n$(function() {\n$(\"#pic\").jCarouselLite({\nbtnNext: \"#pic .next\",\nbtnPrev: \"#pic .prve\",\nspeed:2000,//滚动动画的时间\nauto:4000,//滚动间隔时间\nvisible:1,\nonMouse:true,\nstart:0,\neasing: \"easeInOutBack\",\n});\n});\n</script>\n      \n</div>\n</div>\n</div>\n  <!-- end:滑动图片 -->\n\n\t\t\t<!--head:视频中心--\n<div class=\"widget\" id=\"vedios\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>视频中心</b><p>Video Center</p>\n   </span>\n   <a href=\"./\">MORE</a>\n   </div>\n<ul>\n<div class=\"vedio_kuang\">\n  <iframe width=\"510\" height=\"498\" frameborder=\"0\" allowfullscreen=\"\" src=\"./showvideopage.html\"></iframe>  \n</div>\n\n<li><a class=\"in\" href=\"./\">芽苗菜的高产栽培技术</a></li>\n<li><a href=\"./\">未来农业信息管理系统</a></li>\n<li><a href=\"./\">走进华农农业大学信息学院</a></li>\n\n</ul>\n</div>\n<!--end:视频中心-->\n\n\n\t\t</div>\n\t</div>\n\t<!-- end:内容项目 -->\n\n\t<!--head:底部信息-->\n\t<jsp:include page=\"./footer.jsp\"></jsp:include>\n\t<!--end:底部信息-->\n\t<script>\n\t\t$(document).ready(function() {\n\t\t\t//getNewsData();\n\t\t\t//getInformationData();\n\t\t\t//getCompanyData();\n\t\t\t//getQuestionData();\n\t\t});\n\n\t\tfunction getNewsData() {\n\t\t\tvar pagesize = 8;\n\t\t\tvar current = 1;\n\n\t\t\t$.ajax({\n\t\t\t\t\t\turl : \"${ctx}/front/news/base/getListPublish\",\n\t\t\t\t\t\tdata : {\n\t\t\t\t\t\t\t\"rows\" : pagesize,\n\t\t\t\t\t\t\t\"page\" : current,\n\t\t\t\t\t\t\t\"categoryType\" : \"news\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype : \"POST\",\n\t\t\t\t\t\tdataType : \"json\",\n\t\t\t\t\t\tsuccess : function(json) {\n\t\t\t\t\t\t\t$(\"#articleList\").html('');\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\t\t\tvar item = \"<tr><td width='10'><span class='articleicon'></span></td>\"\n\t\t\t\t\t\t\t\t\t\t+ \"<td><a href='${ctx}/front/news/base/getArticle?article=\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].autoID\n\t\t\t\t\t\t\t\t\t\t+ \"' target='_blank' title='\" + json.rows[i].title + \"'>\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].title + \"</a></td>\";\n\t\t\t\t\t\t\t\titem += \"<td align='right' width='40'>\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].publishDate.split(\" \")[0].substring(5,10) + \"</td></tr>\";\n\t\t\t\t\t\t\t\t$(\"#articleList\").append(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror : function(xhr, error, thrown) {\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t}\n\n\t\tfunction getInformationData() {\n\t\t\tvar pagesize = 8;\n\t\t\tvar current = 1;\n\n\t\t\t$.ajax({\n\t\t\t\t\t\turl : \"${ctx}/front/news/base/getListPublish\",\n\t\t\t\t\t\tdata : {\n\t\t\t\t\t\t\t\"rows\" : pagesize,\n\t\t\t\t\t\t\t\"page\" : current,\n\t\t\t\t\t\t\t\"categoryType\" : \"information\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype : \"POST\",\n\t\t\t\t\t\tdataType : \"json\",\n\t\t\t\t\t\tsuccess : function(json) {\n\t\t\t\t\t\t\t$(\"#informationList\").html('');\n\t\t\t\t\t\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\t\t\tvar item = \"<tr><td width='10'><span class='articleicon'></span></td>\"\n\t\t\t\t\t\t\t\t\t\t+ \"<td><a href='${ctx}/front/news/base/getArticle?article=\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].autoID\n\t\t\t\t\t\t\t\t\t\t+ \"' target='_blank' title='\" + json.rows[i].title + \"'>\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].title + \"</a></td>\";\n\t\t\t\t\t\t\t\titem += \"<td align='right' width='40'>\"\n\t\t\t\t\t\t\t\t\t\t+ json.rows[i].publishDate.split(\" \")[0].substring(5,10) + \"</td></tr>\";\n\t\t\t\t\t\t\t\t$(\"#informationList\").append(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror : function(xhr, error, thrown) {\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t}\n\n\t\tfunction getCompanyData() {\n\t\t\tvar pagesize = 4;\n\t\t\tvar current = 1;\n\n\t\t\t$.ajax({\n\t\t\t\turl : \"${ctx}/front/agribusiness/base/searchCompanyList\",\n\t\t\t\tdata : {\n\t\t\t\t\t\"rows\" : pagesize,\n\t\t\t\t\t\"page\" : current\n\t\t\t\t},\n\t\t\t\ttype : \"POST\",\n\t\t\t\tdataType : \"json\",\n\t\t\t\tsuccess : function(json) {\n\t\t\t\t\t$(\"#companyList\").html('');\n\t\t\t\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\tvar item = \"<li><span href='javascript:void(0);'>\"\n\t\t\t\t\t\t\t\t+ json.rows[i].businessName + \"</span><br/><p>\"\n\t\t\t\t\t\t\t\t+ json.rows[i].businessIntroduce;\n\t\t\t\t\t\titem += \"<br/> \" + json.rows[i].businessSite\n\t\t\t\t\t\t\t\t+ \"</p></li>\";\n\t\t\t\t\t\t$(\"#companyList\").append(item);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror : function(xhr, error, thrown) {\n\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tfunction getQuestionData() {\n\n\t\t$.ajax({\n\t\t\t\t\turl : '${ctx}/front/web/communicate/base/getQuestionList',\n\t\t\t\t\tdata : {\n\t\t\t\t\t\tpage : \"1\",\n\t\t\t\t\t\trows : \"3\",\n\t\t\t\t\t\tsort : \"autoID\",\n\t\t\t\t\t\torder : \"desc\",\n\t\t\t\t\t\tsearchKey : \"\"\n\t\t\t\t\t},\n\t\t\t\t\tcache : true,\n\t\t\t\t\tdataType : 'json',\n\t\t\t\t\tsuccess : function(data) {\n\t\t\t\t\t\t$(\"#ul_questionList\").empty();\n\t\t\t\t\t\tfor ( var e in data.obj) {\n\t\t\t\t\t\t\tvar str = '';\n\t\t\t\t\t\t\tstr += $\n\t\t\t\t\t\t\t\t\t.formatString(\n\t\t\t\t\t\t\t\t\t\t\t'<li><a class=\"question_title\" href=\"${ctx}/front/web/communicate/base/getQuestionPage?id={0}\" target=\"_blank\">{1}</a>',\n\t\t\t\t\t\t\t\t\t\t\tdata.obj[e].autoID,\n\t\t\t\t\t\t\t\t\t\t\tdata.obj[e].title);\n\t\t\t\t\t\t\tstr += $\n\t\t\t\t\t\t\t\t\t.formatString(\n\t\t\t\t\t\t\t\t\t\t\t' <div class=\"question_expandable\"><a class=\"toggle-expand\">显示全部</a></div><div class=\"question_content\" style=\"display: none;\">{0}</div><div class=\"question_actions\">',\n\t\t\t\t\t\t\t\t\t\t\tdata.obj[e].content);\n\t\t\t\t\t\t\tstr += $\n\t\t\t\t\t\t\t\t\t.formatString(\n\t\t\t\t\t\t\t\t\t\t\t' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span>条评论</a>',\n\t\t\t\t\t\t\t\t\t\t\tdata.obj[e].commentCount);\n\t\t\t\t\t\t\tstr += $\n\t\t\t\t\t\t\t\t\t.formatString('<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button></div></li>');\n\t\t\t\t\t\t\t$('#ul_questionList').append(function() {\n\t\t\t\t\t\t\t\treturn str;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(\".question_expandable\")\n\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.find(\".question_collapse\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t$(this).nextAll(\".comment_list\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\n\t\t\t\t\t\t\t\t\t\t\t//创建评论区\n\t\t\t\t\t\t\t\t\t\t\tvar replybox = $(this).nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\").find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_replybox\");\n\t\t\t\t\t\t\t\t\t\t\tif ($(replybox).length == 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"${ctx}/style/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(replyboxhtml);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//折叠问题\n\t\t\t\t\t\t$(\".question_collapse\").click(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t.prevAll(\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t.nextAll(\".comment_list\").hide();\n\t\t\t\t\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t.prevAll(\".question_expandable\")\n\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//点击已有评论的回复\n\t\t\t\t\t\t$(\".comment_reply\")\n\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\tvar littlebox = $(this).parent(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_footer\").next(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_replylittlebox\");\n\t\t\t\t\t\t\t\t\t\t\tif ($(littlebox).length == 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parents(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_body\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(replyboxhtml);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t</script>\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/informationlist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/information.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260 current-menu-item\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./articlelist.html\">通知列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>开始日期：</span>\n\t\t<input type=\"text\" id=\"startdate\" />\n\t<div>\n</li>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>结束日期：</span>\n\t\t<input type=\"text\" id=\"enddate\" />\n\t</div>\n</li>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的通知...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:通知列表 -->\n <div class=\"widget informationlist\" id=\"widget_informationlist\">\n<ul>\n\t<li><a href=\"./\">新农村发展研究院</a><span class=\"time\">2016/7/11</span></li>\n\t<li><a href=\"./\">华农与榄核镇签订合作框架协议，香云纱成果发布惊艳全场</a><span class=\"time\">2016/7/1</span></li>\n\t<li><a href=\"./\">互联网+现代农业三年 行动实施方案</a><span class=\"time\">2016/6/20</span></li>\n\t<li><a href=\"./\">2016高校科技成果转化排名，华南农大广东第3，全国第23</a><span class=\"time\">2016/6/12</span></li>\n\t<li><a href=\"./\">湖北省高校大学生创新创业工作考察团来校交流</a><span class=\"time\">2016/5/30</span></li>\n\t<li><a href=\"./\">泰国宋卡王子大学师生代表团来校交流</a><span class=\"time\">2016/5/27</span></li>\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:通知列表 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/informationlist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/information.css\" rel=\"stylesheet\" media=\"screen\">\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/news/base/getInformationList\">通知列表</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询农企-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>开始日期：</span>\n\t\t<input type=\"text\" id=\"startdate\" style=\"width: 150px; height: 25px;\" onclick=\"WdatePicker({maxDate:'#F{$dp.$D(\\'enddate\\')}',readOnly:true})\" />\n\t<div>\n</li>\n<li>\n\t<div class=\"searchdate\">\n\t\t<span>结束日期：</span>\n\t\t<input type=\"text\" id=\"enddate\" style=\"width: 150px; height: 25px;\" onclick=\"WdatePicker({minDate:'#F{$dp.$D(\\'startdate\\')}',readOnly:true})\" />\n\t</div>\n</li>\n<li>\n\t<div class=\"category\" style=\"margin-bottom: 10px;\">\n\t\t<span>所属类别：</span>\n\t\t<select id=\"categoryID\" class=\"easyui-combobox\" data-options=\"width:150,height:29,editable:false,valueField:'value', textField:'text',panelHeight:'auto'\">\n\t\t</select>\n\t</div>\n</li>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的新闻...\">\n\t\t<button id=\"btn_search\" onclick=\"fnSearch();\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询农企-->\n\n<!--head:扁平图标导航-->\n  <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:通知列表 -->\n <div class=\"widget informationlist\" id=\"widget_informationlist\">\n<ul id=\"articleList\">\n\t<!--  \n\t<li><a href=\"./\">新农村发展研究院</a><span class=\"time\">2016/7/11</span></li>\n\t<li><a href=\"./\">华农与榄核镇签订合作框架协议，香云纱成果发布惊艳全场</a><span class=\"time\">2016/7/1</span></li>\n\t<li><a href=\"./\">互联网+现代农业三年 行动实施方案</a><span class=\"time\">2016/6/20</span></li>\n\t<li><a href=\"./\">2016高校科技成果转化排名，华南农大广东第3，全国第23</a><span class=\"time\">2016/6/12</span></li>\n\t<li><a href=\"./\">湖北省高校大学生创新创业工作考察团来校交流</a><span class=\"time\">2016/5/30</span></li>\n\t<li><a href=\"./\">泰国宋卡王子大学师生代表团来校交流</a><span class=\"time\">2016/5/27</span></li>\n\t-->\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<input id=\"page_size\" type=\"hidden\" value=\"10\" />\n\t<input id=\"records_total\" type=\"hidden\" value=\"0\" />\n\t<a href=\"javascript:changePage(1);\">上一页</a> \n\t<a id=\"current_page\" currentpage=\"1\" href=\"javascript:void(0); \" class=\"paginator_current\">1</a> \n\t<a href=\"javascript:changePage(2);\">下一页</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:通知列表 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n<script>\n\t$(document).ready(function(){\n\t\t$.ajax({\n\t\t\ttype:\"post\",\n\t\t\tdataType:\"json\",\n\t\t\turl:\"${ctx}/front/news/base/getCategory\",\n\t\t\tdata:{\n\t\t\t\t\"categoryType\" : \"information\"\n\t\t\t},\n\t\t\tsuccess:function(json){\n\t\t\t\tif(json && json.total > 0){\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tfor(var i = 0; i < json.total; i++){\n\t\t\t\t\t\tdata.push({ \"value\": json.rows[i].autoID, \"text\": json.rows[i].categoryName });\n\t\t\t\t\t}\n\t\t\t\t\t$(\"#categoryID\").combobox(\"loadData\", data);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tgetData();\n\t});\n\t\n\tfunction changePage(flag){\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar total = parseInt($(\"#records_total\").val());\n\t  \tif(flag == 1){\n\t  \t\t//上一页\n\t  \t\tif(current <= 1){\n\t  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t\t\talert(\"已经到达第一页\");\n\t  \t\t\treturn;\n\t  \t\t}\n\t  \t\tcurrent--;\n\t  \t}\n\t  \telse{\n\t  \t\t//下一页\n\t        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n\t        if ((current + 1) > pageCount) {\n\t            alert(\"已经到达最后一页\");\n\t            return false;\n\t        }\n\t        current++;\n\t  \t}\n\t  \t$(\"#current_page\").attr(\"currentpage\", current);\n\t  \t$(\"#current_page\").text(current);\n\t  \tgetData();\n  \t}\n  \t\n  \tfunction fnSearch(){\n\t  \t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t$(\"#current_page\").text(1);\n\t  \tgetData();\n\t}\n\t\n\tfunction getData(){\n\t  \tvar searchcontent = $(\"#input_search\").val();\n\t  \tsearchcontent = searchcontent.trim();\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar url = \"${ctx}/front/news/base/getListPublish\";\n\t  \tvar selectCategoryID = $(\"#categoryID\").combobox(\"getValue\");\n\t  \tvar stDate = $(\"#startdate\").val();\n\t  \tvar endDate = $(\"#enddate\").val();\n\t  \t\n\t  \t$.ajax({\n\t            url: url,\n\t            data: { \"rows\": pagesize, \"page\": current, \"searchcontent\": searchcontent, \"categoryType\": \"information\", \"category\": selectCategoryID, \"stDate\": stDate, \"endDate\": endDate },\n\t            type: \"POST\",\n\t            dataType: \"json\",\n\t            success: function (json) {\n\t            \t$(\"#articleList\").html('');\n\t            \t$(\"#records_total\").val(json.total);\n\t            \tfor (var i = 0; i < json.rows.length; i++) {\n\t            \t\tvar item = \"<li><a href='${ctx}/front/news/base/getArticle?article=\" + json.rows[i].autoID + \"'>\" + json.rows[i].title + \"</a>\";\n\t            \t\titem += \"<span class='time'>\" + json.rows[i].publishDate + \"</span></li>\";\n\t            \t\t$(\"#articleList\").append(item);\n\t            \t}              \n\t            },\n\t            error: function (xhr, error, thrown) {\n\t                \n\t            }\n\t        });\n  \t}\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/knowledgedata.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/knowledgedata.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./knowledgedata.html\"> 农技知识库</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div class=\"knowledgecontent\">\n\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索目录关键字...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div> \n\n<!--head:农技目录-->\n<div class=\"tree\">\n <ul>\n  <li>\n  <a href=\"#\" tree=\"root\">知识库目录</a>\n  \n   <ul>\n    <li>\n     <a href=\"#\">目录1</a>\n     <ul>\n      <li>\n       <a href=\"#\">目录1-1</a>\n      </li>\n     </ul>\n    </li>\n    <li>\n     <a href=\"#\">目录2</a>\n     <ul>\n      <li>\n       <a href=\"#\">目录2-1</a>\n      </li>\n     </ul>\n    </li>\n    <li>\n     <a href=\"#\">目录3</a>\n     <ul>\n      <li>\n       <a href=\"#\">目录3-1</a>\n      </li>\n     </ul>\n    </li>\n    <li>\n     <a href=\"#\">目录4</a>\n     <ul>\n      <li>\n       <a href=\"#\">目录4-1</a>\n      </li>\n     </ul>\n    </li>\n    <li>\n     <a href=\"#\">目录5</a>\n     <ul>\n      <li><a href=\"#\">目录5-1</a></li>\n      <li>\n       <a href=\"#\">目录5-2</a>\n       <ul>\n        <li>\n         <a href=\"#\">目录5-2-1</a>\n        </li>\n        <li>\n         <a href=\"#\">目录5-2-2</a>\n        </li>\n        <li>\n         <a href=\"#\">目录5-2-3</a>\n        </li>\n        <li>\n         <a href=\"#\">目录5-2-4</a>\n        </li>\n        <li>\n         <a href=\"#\">目录5-2-5</a>\n        </li>\n         <li>\n         <a href=\"#\">目录5-2-6</a>\n        </li>\n       </ul>\n      </li>\n      <li><a href=\"#\">目录5-3</a></li>\n     </ul>\n    </li>\n   </ul>\n  </li> \n </ul>\n</div>\n<!--end:农技目录-->\n<script>\n\t$(document).ready(function(){\n\t\topentreeul($(\".tree ul ul\"), false);\n\t\t$(\".tree a\").click(function(){\n\t\t\tvar nextul = $(this).next(\"ul\");\n\t\t\tvar otherchild1 = $(this).parent(\"li\").prevAll(\"li\");\n\t\t\tvar otherchild2 = $(this).parent(\"li\").nextAll(\"li\");\n\t\t\tvar newstatus = $(nextul).css(\"display\") == \"none\" ? true : false;\n\t\t\topentreeul(nextul, newstatus);\n\t\t\topentreeli(otherchild1, newstatus ? false : true);\n\t\t\topentreeli(otherchild2, newstatus ? false : true);\n\t\t\t$(\".tree a\").each(function(){\n\t\t\t\t$(this).removeClass(\"selectedchild\");\n\t\t\t});\n\t\t\tif($(this).attr(\"tree\") != \"root\"){\n\t\t\t\t$(this).addClass(\"selectedchild\");\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t});\n\t\n\tfunction opentreeul(nodeul, flag){\n\t\tif($(nodeul).length > 0){\n\t\t\tif(flag){\n\t\t\t\t$(nodeul).css(\"display\", \"\");\n\t\t\t\t$(nodeul).children(\"li\").each(function(){\n\t\t\t\t\topentreeli(this, true);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(nodeul).children(\"li\").each(function(){\n\t\t\t\t\topentreeli(this, false);\n\t\t\t\t});\n\t\t\t\t$(nodeul).css(\"display\", \"none\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction opentreeli(nodeli, flag){\n\t\tif($(nodeli).length > 0){\n\t\t\tif(flag) {\n\t\t\t\t$(nodeli).css(\"display\", \"\");\n\t\t\t}\n\t\t\telse{\n\t\t\t\t$(nodeli).children(\"ul\").each(function(){\n\t\t\t\t\topentreeul(this, false);\n\t\t\t\t});\n\t\t\t\t$(nodeli).css(\"display\", \"none\");\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<!-- head:知识库内容 -->\n  <div class=\"widget knowledgelist\">\n<ul>\n\t<!--head:一条内容-->\n\t<li>\n\t\t<a class=\"knowledge_title\" href=\"./\">【养猪】</a>\n\t\t<div class=\"knowledge_expandable\">\n\t\t\t朱元璋御膳菜单:早膳:羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶.(话说早晨吃这么多荤的真没问题?)午膳:胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"knowledge_content\" style=\"display: none;\">\n朱元璋御膳菜单：\n早膳：羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶。（话说早晨吃这么多荤的真没问题？）\n午膳：胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿、椒末羊肉、香米饭、蒜酪、三鲜汤、豆汤、泡茶。\n\n万历皇帝御膳菜单：\n米面食：八宝馒头、攒馅馒头、蒸卷、海清卷子、蝴蝶卷子；大蒸饼、椒盐饼、夹糖饼、芝麻烧饼、奶皮烧饼、薄脆饼、灵芝饼；枣糕、白馓子、糖馓子、芝麻象眼减煠；鸡蛋面、白切面、水晶饭。\n肉食：烧天鹅（天鹅……）、烧鹅、清蒸鸡、暴腌鸡、川炒鸡、烧肉、白煮肉、清蒸肉、猪屑骨、荔枝猪肉、鲟鳇鲊、蒸鱼、猪耳脆、煮鲜肫肝、玉丝肚肺、蒸羊、燌羊。\n汤品：牡丹头汤、鸡脆饼汤、猪肉龙松汤、玛瑙糕子汤、锦丝糕子汤、木樨糕子汤、酸甜汤、葡萄汤、蜜汤、牛奶。\n【谢评论区 @杨海晨 提醒，煮鲜肫肝并不是猪内脏，我一个天天吃鸭肫的竟然忘了没有猪肫这种说法……】\n\n永乐二年郊祀结束后的庆成宴菜单：\n上卓：按酒五般。果子五般。茶食五般。烧煠五般。汤三品。双下馒头。马肉饭。酒五钟。\n中卓：按酒四般。果子四般。汤三品。双下馒头。马猪羊肉饭（神一般的荤菜三拼？）。酒五钟。\n随驾将军：按酒一般。粉汤。双下馒头猪肉饭。酒一钟。\n\t\t</div>\n\t\t<div class=\"knowledge_actions\">\n\t\t\t<button class=\"knowledge_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条内容-->\n\t<!--head:一条内容-->\n\t<li>\n\t\t<a class=\"knowledge_title\" href=\"./\">【种菜】</a>\n\t\t<div class=\"knowledge_expandable\">\n\t\t\t开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"knowledge_content\" style=\"display: none;\">\n开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单。\n开车久了为了加速快，我们都是踩一脚油门后在高转速的时候加档，这样能获得较快的加速，如果想要开的平稳，很简单，从1档开始，加油之后不要在最高转速的时候摘挡挂档，脚离开油门后，等2到3秒转速自己降下来后再摘空挡加档，用这种开法的话基本上冲劲就完全没了，但是缺点就是加速比较慢，可能后面的车会哔哔。。。。。。这方法适合追求极致的朋友驾驶。。。。\n——————————————更新分割线————————————————\n刚拿驾照就上高速很危险！！！\n\n　　一脚油门踩到底的驾驶技巧我 8 岁时开碰碰车的时候就学会了 _(:3 」∠)_ _(:3 」∠)_ _(:3 」∠)_\n\n　　鉴于之前的答案太乱了，整理一下方便阅读。以下均为个人经验，有不对之处请指正。\n\n　　上长途高速驾驶之前建议在环城高速上有一定的驾驶经验，比如北京的五环路，不堵车的情况下能开到 100，而且上面车多，能练习好超车跟车经验，这样不会到了跨省市高速上看到旁边的车 120 甚至 150 开过去的时候自己心慌。\n\n　　一个司机想要安全驾驶，有两点很重要，一个是预判，另一个是让。\n\n\t\t</div>\n\t\t<div class=\"knowledge_actions\">\n\t\t\t<button class=\"knowledge_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条内容-->\n\t<!--head:一条内容-->\n\t<li>\n\t\t<a class=\"knowledge_title\" href=\"./\">【种菜】</a>\n\t\t<div class=\"knowledge_expandable\">\n\t\t\t\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。当然你不要...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"knowledge_content\" style=\"display: none;\">\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。\n\n当然你不要理解错，语音发力不是弄个篮球/足球解说员搞个语音包。\n\n「霍霍，你车开得挺合理呀！」\n「你这是邦邦邦乱开。」\n「前方50米有一收费站，请勿力劈华山。」\n「嘿嘿嘿。」\n\t\t</div>\n\t\t<div class=\"knowledge_actions\">\n\t\t\t<button class=\"knowledge_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条内容-->\n\t<!--head:一条内容-->\n\t<li>\n\t\t<a class=\"knowledge_title\" href=\"./\">【养鱼】</a>\n\t\t<div class=\"knowledge_expandable\">\n\t\t\t<img src=\"./upload/p3.png\">\n\t\t\t这个问题在《国家新型城镇化规划纲要》中就已经回答了。推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"knowledge_content\" style=\"display: none;\">\n这个问题在《国家新型城镇化规划纲要》中就已经回答了。\n推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。\n这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每人只有这么点地，如果理想化地现在推行规模化和机械化，那就根本不需要这么多农村劳动力，这些农业人口去哪里讨生活呢？\n为什么要推行城镇化，尤其是“新型城镇化”？\n新型城镇化的内涵是“人”的城镇化，而不是地的城镇化，让更多的农业人口转变生产方式，从第一产业到二三产业中去，这样不仅增加了收入，而且释放了农村走机械化规模化的潜力。\n有兴趣你可以读读这个规划的文本，写的还是很有水平的。\n\t\t</div>\n\t\t<div class=\"knowledge_actions\">\n\t\t\t<button class=\"knowledge_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条内容-->\n\t<!--head:一条内容-->\n\t<li>\n\t\t<a class=\"knowledge_title\" href=\"./\">【种菜】</a>\n\t\t<div class=\"knowledge_expandable\">\n\t\t\t<img src=\"./upload/p4.png\">\n\t\t\t这年底多出来的一秒对于我们人类来说几乎就是个概念，但是对于认死理的计算机来说有可能就是灾难。2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。这是为什么呢？因为Unix time（POSIX time）是不支持leap second（即闰秒）的…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"knowledge_content\" style=\"display: none;\">\n2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。\n\n这是为什么呢？\n\n因为Unix time（POSIX time）是不支持leap second（即闰秒）的。我们都知道在C里的time()函数会返回一个秒数，一般是从1970年1月1号0点到现在为止的秒数。然而这几十年来出现了大概20多个leap second，POSIX是怎么处理的呢？方法就是——无视他们。POSIX规定，每天是严格的86400秒，一秒都不多。\n\n为什么要这么规定？好算呗！\n\n我们都知道，C里还有一个函数叫做gmtime()，可以把秒数（time_t）还原成哪年哪天几点几分几秒。如果把leap second无视掉，这个函数就很好做，可是如果考虑到leap second，这个函数就直接崩盘了。首先你需要逐一考虑之前没有明显规律的leap second，更可怕的是，之后不知道什么时候出现的leap second你怎么处理？这给编译器带来了一个比较严峻的考验，于是乎POSIX大笔一挥，我们不管啦！\n\t\t</div>\n\t\t<div class=\"knowledge_actions\">\n\t\t\t<button class=\"knowledge_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条内容-->\n</ul>\n<script>\n//展开问题\n$(\".knowledge_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".knowledge_content\").show();\n\t$(this).nextAll(\".knowledge_actions\").find(\".knowledge_collapse\").show();\n});\n\n//折叠问题\n$(\".knowledge_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".knowledge_actions\").prevAll(\".knowledge_content\").hide();\n\t$(this).parent(\".knowledge_actions\").prevAll(\".knowledge_expandable\").show();\n});\n</script>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!-- end:知识库内容 -->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/knowledgedata.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\"\n\t\t\t+ request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<base href=\"<%=basePath%>\">\n<jsp:include page=\"./inc-head.jsp\"></jsp:include>\n<link href=\"${ctx}/style/index/knowledgedata.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n</head>\n\n<body class=\"home blog\">\n\t<!--start 登录注册浮动栏 -->\n\t<jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n\t<!-- end 登录注册浮动栏 -->\n\n\t<!-- start:头部导航 -->\n  \t<jsp:include page=\"./header.jsp\"></jsp:include>\n  \t<!-- end:头部导航-->\n\t\n\t<!--head:所在位置-->\n\t<div id=\"page_muen_nav\">\n\t\t<b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a>\n\t\t\t&gt; </a><a href=\"${ctx}/front/web/base/getKnowledgeData\"> 农技知识库</a>\n\t</div>\n\t<!--end:所在位置-->\n\t\n\t<!--head:内容项目-->\n\t<div class=\"knowledgecontent\">\n\t\t<div class=\"selectknowledge\">\n\t\t\t<ul>\n\t\t\t\t<li><div knowledgeitem=\"Industry\" class=\"itemlabel selectedlabel1 selected\"></div>\n\t\t\t\t</li>\n\t\t\t\t<li><div knowledgeitem=\"Variety\" class=\"itemlabel\"></div>\n\t\t\t\t</li>\n\t\t\t\t<li><div knowledgeitem=\"Achievement\" class=\"itemlabel\"></div>\n\t\t\t\t</li>\n\t\t\t\t<li><div knowledgeitem=\"Technology\" class=\"itemlabel\"></div>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t<div class=\"searchknowledge\">\n\t\t\t\t<input type=\"text\" id=\"txtSearchTitle\" autocomplete=\"off\" value=\"\"\n\t\t\t\t\tplaceholder=\"搜索标题关键字...\">\n\t\t\t\t<div onclick=\"fnSearchByTitle();\" style=\"width: 40px; height: 35px; position: absolute; top: 0px; right: 0px;\"></div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!--head:农技目录-->\n\t\t<div id=\"knowledgecategory\" class=\"knowledgecategory\">\n\t\t\t<!--  \n\t\t\t<div class=\"categoryname\" categorylevel=\"1\">\n\t\t\t\t<span>一级目录</span>\n\t\t\t</div>\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录1</a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录2</a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录3</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t<div class=\"separate\"></div>\n\t\t\t<div class=\"categoryname\" categorylevel=\"2\">\n\t\t\t\t<span>二级目录</span>\n\t\t\t</div>\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录1</a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录2</a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href=\"#\">目录3</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t-->\n\t\t</div>\n\n\t\t<!--end:农技目录-->\n\n\t\t<div class=\"clear\"></div>\n\t\t<!-- head:知识库内容 -->\n\t\t<div class=\"knowledgelist\">\n\t\t\t<ul id=\"manualList\">\n\n\t\t\t</ul>\n\t\t\t<!--head:列表分页-->\n\t\t\t<div class=\"list_paginator\">\n\t\t\t\t<input id=\"selectedCategoryCode\" type=\"hidden\" value=\"\" />\n\t\t\t\t<input id=\"page_size\" type=\"hidden\" value=\"10\" /> <input\n\t\t\t\t\tid=\"records_total\" type=\"hidden\" value=\"0\" /> <a\n\t\t\t\t\thref=\"javascript:changePage(1);\">上一页</a> <a id=\"current_page\"\n\t\t\t\t\tcurrentpage=\"1\" href=\"javascript:void(0); \"\n\t\t\t\t\tclass=\"paginator_current\">1</a> <a href=\"javascript:changePage(2);\">下一页</a>\n\t\t\t</div>\n\t\t\t<!--end:列表分页-->\n\t\t</div>\n\t\t<!-- end:知识库内容 -->\n\n\t</div>\n\t<!--end:内容项目-->\n\n\t<!--head:底部信息-->\n\t<jsp:include page=\"./footer.jsp\"></jsp:include>\n\t<!--end:底部信息-->\n\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n<script>\n\t$(function() {\n\t\t$(\"#txtSearchTitle\").keyup(function(event){\n\t\t\tif (!event || event.which != 13)\n                return true;\n            fnSearchByTitle();\n\t\t});\t\n\t\t$(\".selectknowledge li\").click(function(){\n\t\t\tvar categoryCode = $(this).find(\".itemlabel\").attr(\"knowledgeitem\");\n\t\t\tvar selectedDiv = $(this).parent(\"ul\").find(\".selected\");\n\t\t\tif(selectedDiv.length > 0){\n\t\t\t\tselectedDiv.removeClass();\n\t\t\t\tselectedDiv.addClass(\"itemlabel\");\n\t\t\t}\n\t\t\tvar index = $(this).index() + 1;\n\t\t\t$(this).find(\".itemlabel\").addClass(\"selected selectedlabel\" + index);\n\t\t\t\n\t\t\tgetCategoryTreeData();\n\t\t});\n\t\t\n\t\tvar code = \"${categoryCode}\";\n\t\tif(code != \"\"){\n\t\t\tvar div = $(\".selectknowledge div[knowledgeitem=\" + code + \"]\");\n\t\t\tif(div.length > 0){\n\t\t\t\t$(div).parent(\"li\").click();\n\t\t\t}\n\t\t}\n\t\t\n\t\tgetCategoryTreeData();\n\t});\n\t\n\t$.CategoryTreeData = null;\n\t$.RootCategoryCode = null;\n\tfunction getCategoryTreeData(categoryCode){\n\t\tvar url = \"${ctx}/front/web/manual/base/getCategoryTree\";\n\t\tvar categoryCode = $(\".selectknowledge .selected\").attr(\"knowledgeitem\");\n\t\t$.ajax({\n\t\t\t\t\turl : url,\n\t\t\t\t\tdata : {\n\t\t\t\t\t\t\"categoryCode\" : categoryCode\n\t\t\t\t\t},\n\t\t\t\t\ttype : \"POST\",\n\t\t\t\t\tdataType : \"json\",\n\t\t\t\t\tsuccess : function(json) {\n\t\t\t\t\t\t$(\"#knowledgecategory\").html('');\n\t\t\t\t\t\t$(\"#manualList\").html('');\n\t\t\t\t\t\t$.CategoryTreeData = json;\n\t\t\t\t\t\t//alert(JSON.stringify(json));\n\t\t\t\t\t\tvar rootid = \"\";\n\t\t\t\t\t\tvar childcount = 0;\n\t\t\t\t\t\tvar item = \"<div class='categoryname' categorylevel='1'><span>1级目录</span></div>\";\n\t\t\t\t\t\titem += \"<ul>\";\n\t\t\t\t\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\t\tif(json.rows[i].parentID == null){\n\t\t\t\t\t\t\t\trootid = json.rows[i].id;\n\t\t\t\t\t\t\t\t$.RootCategoryCode = json.rows[i].categoryCode;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\t\tif(json.rows[i].parentID == rootid){\n\t\t\t\t\t\t\t\tchildcount++;\n\t\t\t\t\t\t\t\titem += \"<li><a onclick='selectCategoryTree(this, 1);' href='javascript:void(0);' categoryid='\" + json.rows[i].id + \"' pid='\" + json.rows[i].parentID + \"' categorycode='\" + json.rows[i].categoryCode + \"'>\" + json.rows[i].categoryName + \"</a></li>\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\titem += \"</ul>\";\n\t\t\t\t\t\tif(childcount > 0){\n\t\t\t\t\t\t\t$(\"#knowledgecategory\").append(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfnSearchByCategoryCode($.RootCategoryCode);\n\t\t\t\t\t},\n\t\t\t\t\terror : function(xhr, error, thrown) {\n\n\t\t\t\t\t}\n\t\t\t\t});\n\t}\n\t\n\tfunction selectCategoryTree(obj, level){\n\t\tvar parentid = $(obj).attr(\"categoryid\");\n\t\tvar categorycode = $(obj).attr(\"categorycode\");\n\t\t\n\t\t$(\"#knowledgecategory\").find(\"a\").removeClass(\"selected\");\n\t\t$(obj).addClass(\"selected\");\n\t\t\n\t\tvar json = $.CategoryTreeData;\n\t\tvar nextlevel = level + 1;\n\t\t\n\t\t//清除已有目录\n\t\tvar tmpnextlevel = nextlevel;\n\t\tvar leveldiv = $(\"#knowledgecategory\").find(\".categoryname[categorylevel=\" + tmpnextlevel + \"]\");\n\t\twhile(leveldiv.length >0){\n\t\t\tvar levelul = $(leveldiv).next(\"ul\");\n\t\t\tvar levelseparate = $(leveldiv).prev(\".separate\");\n\t\t\tif(levelul.length > 0){\n\t\t\t\t$(levelul).remove();\n\t\t\t}\n\t\t\tif(levelseparate.length > 0){\n\t\t\t\t$(levelseparate).remove();\n\t\t\t}\n\t\t\t$(leveldiv).remove();\n\t\t\t\n\t\t\ttmpnextlevel++;\n\t\t\tleveldiv = $(\"#knowledgecategory\").find(\".categoryname[categorylevel=\" + tmpnextlevel + \"]\");\n\t\t}\n\t\t\n\t\tvar item = \"<div class='separate'></div><div class='categoryname' categorylevel='\" + nextlevel + \"'><span>\" + nextlevel + \"级目录</span></div>\";\n\t\titem += \"<ul>\";\n\t\tvar childcount = 0;\n\t\tfor ( var i = 0; i < json.rows.length; i++) {\n\t\t\tif(json.rows[i].parentID == parentid){\n\t\t\t\tchildcount++;\n\t\t\t\titem += \"<li><a onclick='selectCategoryTree(this, \" + nextlevel + \");' href='javascript:void(0);' categoryid='\" + json.rows[i].id + \"' pid='\" + json.rows[i].parentID + \"' categorycode='\" + json.rows[i].categoryCode + \"'>\" + json.rows[i].categoryName + \"</a></li>\";\n\t\t\t}\n\t\t}\n\t\titem += \"</ul>\";\n\t\tif(childcount > 0){\n\t\t\t$(\"#knowledgecategory\").append(item);\n\t\t}\n\t\t\n\t\tfnSearchByCategoryCode(categorycode);\n\t}\n\n\tfunction replaceStr(str) {\n\t\tstr = str.replace(\"&rdquo;\", \"”\");\n\t\tstr = str.replace(\"&ldquo;\", \"“\");\n\t\tstr = str.replace(\"&gt;\", \">\");\n\t\tstr = str.replace(\"&lt;\", \"<\");\n\t\tstr = str.replace(\"&quot;\", \"\\\"\");\n\t\t// str = str.replace(\"''\", \"'\");\n\t\treturn str;\n\t}\n\t\n\tfunction changePage(flag){\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar total = parseInt($(\"#records_total\").val());\n\t  \tif(flag == 1){\n\t  \t\t//上一页\n\t  \t\tif(current <= 1){\n\t  \t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t\t\talert(\"已经到达第一页\");\n\t  \t\t\treturn;\n\t  \t\t}\n\t  \t\tcurrent--;\n\t  \t}\n\t  \telse{\n\t  \t\t//下一页\n\t        var pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize) : ((total / pagesize) + 1);\n\t        if ((current + 1) > pageCount) {\n\t            alert(\"已经到达最后一页\");\n\t            return false;\n\t        }\n\t        current++;\n\t  \t}\n\t  \t$(\"#current_page\").attr(\"currentpage\", current);\n\t  \t$(\"#current_page\").text(current);\n\t  \tgetData();\n  \t}\n  \t\n  \tfunction fnSearchByCategoryCode(categoryCode){\n\t  \t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t$(\"#current_page\").text(1);\n\t  \t$(\"#selectedCategoryCode\").val(categoryCode);\n\t  \tgetData();\n\t}\n\t\n\tfunction fnSearchByTitle(){\n\t  \t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t$(\"#current_page\").text(1);\n\t  \t$(\"#selectedCategoryCode\").val($.RootCategoryCode);\n\t  \t$(\"#knowledgecategory\").find(\"a\").removeClass(\"selected\");\n\t  \tgetData();\n\t}\n\t\n\tfunction getData(){\n\t  \tvar searchKey = $(\"#txtSearchTitle\").val();\n\t  \tsearchKey = searchKey.trim();\n\t  \tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \tvar url = \"${ctx}/front/web/manual/base/getContentByCodeWithSearch\";\n\t  \tvar selectedCategoryCode = $(\"#selectedCategoryCode\").val();\n\n\t  \t$.ajax({\n\t            url: url,\n\t            data: { \"rows\": pagesize, \"page\": current, \"searchKey\": searchKey, \"categoryCode\": selectedCategoryCode },\n\t            type: \"POST\",\n\t            dataType: \"json\",\n\t            success: function (json) {\n\t            \t$(\"#manualList\").html('');\n\t            \t$(\"#records_total\").val(json.total);\n\t            \tfor (var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\tvar item = \"<li><a class='knowledge_title' href='javascript:void(0);'>\" + json.rows[i].title + \"</a>\"\n\t\t\t\t\t\tif(json.rows[i].resourceList != null){\n\t            \t\t\tfor(var j = 0; j < json.rows[i].resourceList.length; j++) {\n\t            \t\t\t\titem += \"<a href='${ctx}/front/news/base/downloadAttachment?attachmentID=\" + json.rows[i].resourceList[j].autoID + \"' target='_blank'>\";\n\t            \t\t\t\titem += json.rows[i].resourceList[j].metaDescription + \"</a><br />\";\n\t            \t\t\t}\n\t            \t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\titem += \"<div class='knowledge_expandable' onclick='fnExpandable(this);'>\";\n\t\t\t\t\t\t\tif(json.rows[i].imgContent != \"\"){\n\t\t\t\t\t\t\t\titem += json.rows[i].imgContent; \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\titem += json.rows[i].shortContent + \"<a class='toggle-expand'>显示全部</a></div>\";\n\t\t\t\t\t\t\titem += \"<div class='knowledge_content' style='display: none;'>\" + json.rows[i].content + \"</div>\";\n\t\t\t\t\t\t\titem += \"<div class='knowledge_actions'><button class='knowledge_collapse' style='display: none;' onclick='fncollapse(this);'><i></i>收起</button></div>\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\titem += \"</li>\";\n\t            \t\t$(\"#manualList\").append(item);\n\t            \t}   \n\t            },\n\t            error: function (xhr, error, thrown) {\n\t                \n\t            }\n\t        });\n  \t}\n  \t\n  \tfunction fnExpandable(obj){\n  \t\t$(obj).hide();\n\t\t$(obj).nextAll(\".knowledge_content\").show();\n\t\t$(obj).nextAll(\".knowledge_actions\").find(\".knowledge_collapse\").show();\n  \t}\n  \t\n  \tfunction fncollapse(obj){\n  \t\t$(obj).hide();\n\t\t$(obj).parent(\".knowledge_actions\").prevAll(\".knowledge_content\").hide();\n\t\t$(obj).parent(\".knowledge_actions\").prevAll(\".knowledge_expandable\").show();\n  \t}\n</script>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/login.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <title>系统</title>\n    <!-- Meta -->\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\" />\n    <!-- Bootstrap -->\n    <link href=\"Scripts/bootstrap/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"Scripts/bootstrap/css/responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Glyphicons Font Icons -->\n    <link href=\"Styles/theme/fonts/glyphicons/css/glyphicons.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"Styles/theme/fonts/font-awesome/css/font-awesome.min.css\">\n    <!--[if IE 7]><link rel=\"stylesheet\" href=\"theme/fonts/font-awesome/css/font-awesome-ie7.min.css\"><![endif]-->\n    <!-- Uniform Pretty Checkboxes -->\n    <link href=\"Styles/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\"\n        rel=\"stylesheet\" />\n    <!-- PrettyPhoto -->\n    <link href=\"Styles/theme/scripts/plugins/gallery/prettyphoto/css/prettyPhoto.css\"\n        rel=\"stylesheet\" />\n    <!-- Main Theme Stylesheet :: CSS -->\n    <link href=\"Styles/theme/css/style-flat.css?1371698490\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Skin Stylesheet :: CSS -->\n    <link href=\"Styles/theme/skins/css/blue-gray.css?1371698490\" rel=\"stylesheet\" />\n    <!-- LESS.js Library -->\n    <script src=\"Styles/theme/scripts/plugins/system/less.min.js\"></script>\n</head>\n<body class=\"login \">\n    <!-- Wrapper -->\n    <div id=\"login\">\n        <div class=\"container\">\n            <div class=\"wrapper\">\n                <h1 class=\"glyphicons lock\">\n                    系统<i></i></h1>\n                <!-- Box -->\n                <div class=\"widget widget-heading-simple widget-body-gray\">\n                    <div class=\"widget-body\">\n                        <!-- Form -->\n                        <label>\n                            用户名</label>\n                        <input name=\"txtUserCode\" type=\"text\" id=\"txtUserCode\" class=\"input-block-level\" placeholder=\"输入登录账号\">\n                        <label>\n                            密 码 <a class=\"password\" href=\"forgetpassword.html\">忘记密码?</a></label>\n                        <input name=\"txtPassword\" type=\"password\" id=\"txtPassword\" class=\"input-block-level margin-none\" placeholder=\"输入密码\">\n                        <div class=\"separator bottom\">\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span8\">\n                            </div>\n                            <div class=\"span4 center\">\n                                <button class=\"btn btn-block btn-inverse\" onclick=\"return fnLoginClick();\">\n                                    登入</button>\n                            </div>\n                        </div>\n                        <!-- // Form END -->\n                    </div>\n                </div>\n                <!-- // Box END -->\n                <div class=\"innerT center\">\n                    <a href=\"register.html\" class=\"btn btn-icon-stacked btn-block btn-success glyphicons user_add\">\n                        <i></i><span>未有账号?</span><span class=\"strong\">注册</span></a>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- // Wrapper END -->\n    <!-- JQuery -->\n    <script src=\"Scripts/bootstrap/js/jquery-1.10.1.min.js\" type=\"text/javascript\"></script>\n    <script src=\"Scripts/bootstrap/js/jquery-migrate-1.2.1.min.js\" type=\"text/javascript\"></script>\n    <!-- Code Beautify -->\n    <script src=\"Styles/theme/scripts/plugins/other/js-beautify/beautify.js\"></script>\n    <script src=\"Styles/theme/scripts/plugins/other/js-beautify/beautify-html.js\"></script>\n    <!-- PrettyPhoto -->\n    <script src=\"Styles/theme/scripts/plugins/gallery/prettyphoto/js/jquery.prettyPhoto.js\"></script>\n    <!-- Global -->\n    <script>\n        var basePath = '',\n\t\tcommonPath = '';\n    </script>\n    <!-- Modernizr -->\n    <script src=\"Styles/theme/scripts/plugins/system/modernizr.js\"></script>\n    <!-- Bootstrap -->\n    <script src=\"Scripts/bootstrap/js/bootstrap.min.js\"></script>\n    <!-- SlimScroll Plugin -->\n    <script src=\"Styles/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.min.js\"></script>\n    <!-- Common Demo Script -->\n    <script src=\"Styles/theme/scripts/demo/common.js?1371698490\"></script>\n    <!-- Holder Plugin -->\n    <script src=\"Styles/theme/scripts/plugins/other/holder/holder.js\"></script>\n    <script>\n        Holder.add_theme(\"dark\", { background: \"#000\", foreground: \"#aaa\", size: 9 });\n        Holder.add_theme(\"white\", { background: \"#fff\", foreground: \"#c9c9c9\", size: 9 });\n    </script>\n    <!-- Uniform Forms Plugin -->\n    <script src=\"Styles/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.min.js\"></script>\n</body>\n</html>\n<script type=\"text/javascript\">\n    $(document).ready(function () {\n        if ($(\"#txtUserCode\").val() == \"\")\n            $(\"#txtUserCode\").focus();\n        else\n            $(\"#txtPassword\").focus();\n\n        $(\"#txtUserCode\").keyup(function (event) {\n            if (!event || event.which != 13)\n                return true;\n            if ($(\"#txtUserCode\").val() != \"\") {\n                $(\"#txtPassword\").focus();\n            }\n        });\n        $(\"#txtPassword\").keyup(function (event) {\n            if (!event || event.which != 13)\n                return true;\n            $(\"#btnLoginOnclick\").click();\n            $(\"#btnLoginOnclick\").attr(\"disabled\", true);\n        });\n    });\n\n    function fnLoginClick() {\n        if ($(\"#txtUserCode\").val() == \"\" || $(\"#txtPassword\").val() == \"\")\n            return false;\n        $(\"#btnLoginOnclick\").click();\n        $(\"#btnLoginOnclick\").attr(\"disabled\", true);\n        return false;\n    }\n</script>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/login.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <title>登陆系统</title>\n  <!-- Meta -->\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\" />\n\t<link href=\"${ctx}/style/index/login.css\"\n        rel=\"stylesheet\" />\n\t<style>\n\t\n\t\n\t</style>\n\t\n</head>\n<body class=\"login\">\n    \n    <div class=\"loginform\">\n\t\t<form id=\"loginform\" method=\"post\" autocomplete=off>\n\t\t\t<div class=\"username\">\n\t\t\t \t<label>用户名</label>\n\t\t\t \t<input name=\"loginName\" type=\"text\" id=\"txtUserCode\" placeholder=\"输入登录账号\" />\n\t\t\t</div>\n            <div class=\"password\">\n            \t<label>密 码 <a class=\"forgetpassword\" href=\"forgetpassword.html\">忘记密码?</a></label>\n            \t<input name=\"password\" type=\"password\" id=\"txtPassword\" placeholder=\"输入密码\">\n            </div>  \n            <div class=\"button\">\n            \t<a href=\"${ctx}/front/web/base/getRegister\"><div class=\"Register_Button\"></div></a>\n                <a href='javascript:submitForm();'><div id=\"btnLoginOnclick\" class=\"Login_Button\"></div></a>\n            </div>\n\t\t</form>\n\t</div>\n\n    <script>\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果登录,直接跳转到index页面\n\t\twindow.location.href='${ctx}/front/web/base/index/';\n\t}\n\t\t\n\t$(function() {\n\t\t$(\"#txtUserCode\").focus();\n\t\t$(\"#txtUserCode\").keyup(function (event) {\n            if (!event || event.which != 13)\n                return true;\n            if ($(\"#txtUserCode\").val() != \"\") {\n                $(\"#txtPassword\").focus();\n            }\n        });\n        $(\"#txtPassword\").keyup(function (event) {\n            if (!event || event.which != 13)\n                return true;\n            $(\"#btnLoginOnclick\").click();\n            $(\"#btnLoginOnclick\").attr(\"disabled\", true);\n        });\n\t\t$('#loginform').form({\n\t\t    url:'${ctx}/front/web/user/login',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\tvar originUrl = '${originUrl}';\n\t\t    \t\tif(originUrl == undefined || originUrl == \"\"){\n\t\t    \t\t\twindow.location.href='${ctx}/front/web/base/index/';\n\t\t    \t\t}\n\t\t    \t\telse {\n\t\t    \t\t\twindow.location.href='${ctx}' + originUrl;\n\t\t    \t\t}\n\t\t    \t\t\t\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t});\n\tfunction submitForm(){\n\t\t if ($(\"#txtUserCode\").val() == \"\" || $(\"#txtPassword\").val() == \"\")\n            return false;\n\t\telse{$('#loginform').submit();}\n\t\t\n\t}\n\t\n\tfunction clearForm(){\n\t\t$('#loginform').form('clear');\n\t}\n</script>\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/loginTTI.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <title>登陆物联网系统</title>\n  <!-- Meta -->\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\" />\n    <!-- Bootstrap -->\n    <link href=\"${ctx}/jslib/bootstrap/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"${ctx}/jslib/bootstrap/css/responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Glyphicons Font Icons -->\n    <link href=\"${ctx}/style/theme/fonts/glyphicons/css/glyphicons.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"${ctx}/style/theme/fonts/font-awesome/css/font-awesome.min.css\">\n    <!--[if IE 7]><link rel=\"stylesheet\" href=\"theme/fonts/font-awesome/css/font-awesome-ie7.min.css\"><![endif]-->\n    <!-- Uniform Pretty Checkboxes -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\"\n        rel=\"stylesheet\" />\n    <!-- PrettyPhoto -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/gallery/prettyphoto/css/prettyPhoto.css\"\n        rel=\"stylesheet\" />\n    <!-- Main Theme Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/css/style-flat.css?1371698490\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Skin Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/skins/css/blue-gray.css?1371698490\" rel=\"stylesheet\" />\n    <!-- LESS.js Library -->\n    <script src=\"${ctx}/style/theme/scripts/plugins/system/less.min.js\"></script>\n\t\n\t<script>\n\n\t\n</script>\n</head>\n<body class=\"login \">\n    <!-- Wrapper -->\n    <div id=\"login\">\n        <div class=\"container\">\n            <div class=\"wrapper\">\n                <h1 class=\"glyphicons lock\">\n                    登陆物联网系统<i></i></h1>\n                <!-- Box -->\n                <div class=\"widget widget-heading-simple widget-body-gray\">\n                    <div class=\"widget-body\">\n                        <!-- Form -->\n\t\t\t\t\t\t  <form id=\"loginform\"  method=\"post\">\n                        <label>\n                            用户名</label>\n                        <input name=\"loginName\" type=\"text\" id=\"txtUserCode\" class=\"input-block-level easyui-validatebox\" placeholder=\"输入登录账号\">\n                        <label>\n                            密 码 <a class=\"password\" href=\"forgetpassword.html\">忘记密码?</a></label>\n                        <input name=\"password\" type=\"password\" id=\"txtPassword\" class=\"input-block-level margin-none easyui-validatebox\" placeholder=\"输入密码\">\n                        <div class=\"separator bottom\">\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span8\">\n\t\t\t\t\t\t\t   <select style=\"width:200px\">\n\t\t\t\t\t\t\t     <option> 普通用户 </option>\n\t\t\t\t\t\t\t\t <option> 专家用户 </option>\n\t\t\t\t\t\t\t   </select>\n                            </div>\n                            <div class=\"span4 center\">\n                                <button class=\"btn btn-block btn-inverse\" onclick=\"\">登入</button>\n                            </div>\n                        </div>\n\t\t\t\t\t\t</form>\n                        <!-- // Form END -->\n                    </div>\n                </div>\n                <!-- // Box END -->\n                <div class=\"innerT center\">\n                    <a href=\"${ctx}/front/web/base/getRegister\" class=\"btn btn-icon-stacked btn-block btn-success glyphicons user_add\">\n                        <i></i><span>未有账号?</span><span class=\"strong\">注册</span></a>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- // Wrapper END -->\n\t\n\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/login_old.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <title>登陆系统</title>\n  <!-- Meta -->\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\" />\n    <!-- Bootstrap -->\n    <link href=\"${ctx}/jslib/bootstrap/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"${ctx}/jslib/bootstrap/css/responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Glyphicons Font Icons -->\n    <link href=\"${ctx}/style/theme/fonts/glyphicons/css/glyphicons.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"${ctx}/style/theme/fonts/font-awesome/css/font-awesome.min.css\">\n    <!--[if IE 7]><link rel=\"stylesheet\" href=\"theme/fonts/font-awesome/css/font-awesome-ie7.min.css\"><![endif]-->\n    <!-- Uniform Pretty Checkboxes -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\"\n        rel=\"stylesheet\" />\n    <!-- PrettyPhoto -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/gallery/prettyphoto/css/prettyPhoto.css\"\n        rel=\"stylesheet\" />\n    <!-- Main Theme Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/css/style-flat.css?1371698490\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Skin Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/skins/css/blue-gray.css?1371698490\" rel=\"stylesheet\" />\n    <!-- LESS.js Library -->\n    <script src=\"${ctx}/style/theme/scripts/plugins/system/less.min.js\"></script>\n\t<style>\n\t.Login_Button\n\t{\n\t\twidth: 78px; \n\t\theight: 43px; \n\t\tbackground:url(\"${ctx}/style/images/index/login_b.png\"); \n\t\tcursor: pointer;\n\t}\n\t\n\t.Login_Button:hover\n\t{\n\t\tbackground:url(\"${ctx}/style/images/index/login_bs.png\");\n\t}\n\t\n\t.Register_Button\n\t{\n\t\twidth: 173px; \n\t\theight: 43px; \n\t\tbackground:url(\"${ctx}/style/images/index/register_e.png\"); \n\t\tcursor: pointer;\n\t\tmargin: 0 auto;\n\t}\n\t\n\t.Register_Button:hover\n\t{\n\t\tbackground:url(\"${ctx}/style/images/index/register_es.png\");\n\t}\n\t\n\t</style>\n\t\n</head>\n<body class=\"login\">\n    <!-- Wrapper -->\n    <div id=\"login\">\n        <div class=\"container\">\n            <div class=\"wrapper\">\n                <h1 class=\"glyphicons lock\">\n                    登录<i></i></h1>\n                <!-- Box -->\n                <div class=\"widget widget-heading-simple widget-body-gray\">\n                    <div class=\"widget-body\">\n                        <!-- Form -->\n\t\t\t\t\t\t  <form id=\"loginform\"  method=\"post\">\n                        <label>\n                            用户名</label>\n                        <input name=\"loginName\" type=\"text\" id=\"txtUserCode\" class=\"input-block-level easyui-validatebox\" placeholder=\"输入登录账号\">\n                        <label>\n                            密 码 <a class=\"password\" href=\"forgetpassword.html\">忘记密码?</a></label>\n                        <input name=\"password\" type=\"password\" id=\"txtPassword\" class=\"input-block-level margin-none easyui-validatebox\" placeholder=\"输入密码\">\n                        <div class=\"separator bottom\">\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span8\">\n\t\t\t\t\t\t\t   <a href=\"${ctx}/front/web/base/getRegister\"><div class=\"Register_Button\"></div></a>\n                            </div>\n                            <div class=\"span4 center\">\n                            \t<a href='javascript:submitForm();'><div class=\"Login_Button\"></div></a>\n                            </div>\n                        </div>\n\t\t\t\t\t\t</form>\n                        <!-- // Form END -->\n                    </div>\n                </div>\n                <!-- // Box END -->\n                <div class=\"innerT center\">\n                    <!-- <a href=\"${ctx}/front/web/base/getRegister\"><div class=\"Register_Button\"></div></a> -->\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- // Wrapper END -->\n    <script>\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果登录,直接跳转到index页面\n\t\twindow.location.href='${ctx}/front/web/base/index/';\n\t}\n\t\t\n\t$(function() {\n\t\t$('#loginform').form({\n\t\t    url:'${ctx}/front/web/user/login',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\tvar originUrl = '${originUrl}';\n\t\t    \t\tif(originUrl == undefined || originUrl == \"\"){\n\t\t    \t\t\twindow.location.href='${ctx}/front/web/base/index/';\n\t\t    \t\t}\n\t\t    \t\telse {\n\t\t    \t\t\twindow.location.href='${ctx}' + originUrl;\n\t\t    \t\t}\n\t\t    \t\t\t\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t});\n\tfunction submitForm(){\n\t\t if ($(\"#txtUserCode\").val() == \"\" || $(\"#txtPassword\").val() == \"\")\n            return false;\n\t\telse{$('#loginform').submit();}\n\t\t\n\t}\n\t\n\tfunction clearForm(){\n\t\t$('#loginform').form('clear');\n\t}\n</script>\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/loginvideo.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <title>登陆视频会议系统</title>\n  <!-- Meta -->\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\" />\n    <!-- Bootstrap -->\n    <link href=\"${ctx}/jslib/bootstrap/css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"${ctx}/jslib/bootstrap/css/responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Glyphicons Font Icons -->\n    <link href=\"${ctx}/style/theme/fonts/glyphicons/css/glyphicons.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"${ctx}/style/theme/fonts/font-awesome/css/font-awesome.min.css\">\n    <!--[if IE 7]><link rel=\"stylesheet\" href=\"theme/fonts/font-awesome/css/font-awesome-ie7.min.css\"><![endif]-->\n    <!-- Uniform Pretty Checkboxes -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css\"\n        rel=\"stylesheet\" />\n    <!-- PrettyPhoto -->\n    <link href=\"${ctx}/style/theme/scripts/plugins/gallery/prettyphoto/css/prettyPhoto.css\"\n        rel=\"stylesheet\" />\n    <!-- Main Theme Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/css/style-flat.css?1371698490\" rel=\"stylesheet\" type=\"text/css\" />\n    <!-- Skin Stylesheet :: CSS -->\n    <link href=\"${ctx}/style/theme/skins/css/blue-gray.css?1371698490\" rel=\"stylesheet\" />\n    <!-- LESS.js Library -->\n    <script src=\"${ctx}/style/theme/scripts/plugins/system/less.min.js\"></script>\n\t\n\t<script>\n\n\t\n</script>\n</head>\n<body class=\"login \">\n    <!-- Wrapper -->\n    <div id=\"login\">\n        <div class=\"container\">\n            <div class=\"wrapper\">\n                <h1 class=\"glyphicons lock\">\n                    登陆视频会议系统<i></i></h1>\n                <!-- Box -->\n                <div class=\"widget widget-heading-simple widget-body-gray\">\n                    <div class=\"widget-body\">\n                        <!-- Form -->\n\t\t\t\t\t\t  <form id=\"loginform\"  method=\"post\">\n                        <label>\n                            用户名</label>\n                        <input name=\"loginName\" type=\"text\" id=\"txtUserCode\" class=\"input-block-level easyui-validatebox\" placeholder=\"输入登录账号\">\n                        <label>\n                            密 码 <a class=\"password\" href=\"forgetpassword.html\">忘记密码?</a></label>\n                        <input name=\"password\" type=\"password\" id=\"txtPassword\" class=\"input-block-level margin-none easyui-validatebox\" placeholder=\"输入密码\">\n                        <div class=\"separator bottom\">\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span8\">\n\t\t\t\t\t\t\t   <select style=\"width:200px\">\n\t\t\t\t\t\t\t     <option> 普通用户 </option>\n\t\t\t\t\t\t\t\t <option> 专家用户 </option>\n\t\t\t\t\t\t\t   </select>\n                            </div>\n                            <div class=\"span4 center\">\n                                <button class=\"btn btn-block btn-inverse\" onclick=\";\">登入</button>\n                            </div>\n                        </div>\n\t\t\t\t\t\t</form>\n                        <!-- // Form END -->\n                    </div>\n                </div>\n                <!-- // Box END -->\n                <div class=\"innerT center\">\n                    <a href=\"${ctx}/front/web/base/getRegister\" class=\"btn btn-icon-stacked btn-block btn-success glyphicons user_add\">\n                        <i></i><span>未有账号?</span><span class=\"strong\">注册</span></a>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- // Wrapper END -->\n\t\n\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/navigation.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<style>\n\t#xiaxiang\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/xiaxiang.png\");\n\t\tcursor: pointer;\n\t}\n\t#xiaxiang:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/xiaxiang_s.png\");\n\t}\n\t\n\t#jixiao\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/jixiao.png\");\n\t\tcursor: pointer;\n\t}\n\t#jixiao:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/jixiao_s.png\");\n\t}\n\t\n\t#zhishiku\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/zhishiku.png\");\n\t\tcursor: pointer;\n\t}\n\t#zhishiku:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/zhishiku_s.png\");\n\t}\n\t\n\t#communicate\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/communicate.png\");\n\t\tcursor: pointer;\n\t}\n\t#communicate:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/communicate_s.png\");\n\t}\n\t\n\t#xiaoxi\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/xiaoxi.png\");\n\t\tcursor: pointer;\n\t}\n\t#xiaoxi:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/xiaoxi_s.png\");\n\t}\n\t\n\t#nongqi\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/nongqi.png\");\n\t\tcursor: pointer;\n\t}\n\t#nongqi:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/nongqi_s.png\");\n\t}\n</style>\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n\n<li><a href=\"${ctx}/front/village/base/getCountrysideList\" target=\"_blanck\"><div id=\"xiaxiang\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">社会服务管理</div></a></li>\n<!-- <li><a href=\"${ctx}/front/web/base/getPerformanceList\" target=\"_blanck\"><div id=\"jixiao\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">绩效考核</div></a></li>-->\n<li><a href=\"${ctx}/front/web/base/getKnowledgeData\" target=\"_blanck\"><div id=\"zhishiku\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">农技知识</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getQuestionList\" target=\"_blanck\"><div id=\"communicate\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">在线交流</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getLoginVideoPage\" target=\"_blanck\"><div id=\"nongqi\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">视频会议</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getLoginTTIPage\" target=\"_blanck\"><div id=\"xiaoxi\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">农业物联网</div></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/performancelist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/performance.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./performancelist.html\"> 绩效管理</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询历史-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索下乡关键字...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询历史-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:下乡绩效列表 -->\n<div class=\"widget performancelist\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>梅头乡图片</b>\n   </span>\n   <p>\n   \t<span  class=\"performance_title\">服务天数：</span>\n   \t<span  class=\"performance_days\">14天 </span>\n   </p>\n  <a href=\"./performancemanage.html\">详情</a>\n   </div>\n<div id=\"performanceitem1\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 1000px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 3000px; left: -1750px;\">\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p1.png\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p2.png\">\n</li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p3.png\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p4.png\">\n</li>\n\n</ul>\n  <div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n</div>\n</div>\n<script>\n$(function() {\n$(\"#performanceitem1\").jCarouselLite({\nbtnNext: \"#performanceitem1 .next\",\nbtnPrev: \"#performanceitem1 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script> \n</div>\n\n<div class=\"widget performancelist\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>上九里图片</b>\n   </span>\n   <p>\n   \t<span  class=\"performance_title\">服务天数：</span>\n   \t<span  class=\"performance_days\">6天 </span>\n   </p>\n  <a href=\"./performancemanage.html\">详情</a>\n   </div>\n<div id=\"performanceitem2\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 1000px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 3000px; left: -1750px;\">\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p5.jpg\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p6.jpg\">\n</li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p7.jpg\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"./upload/p8.jpg\">\n</li>\n\n</ul>\n  <div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n</div>\n</div>\n<script>\n$(function() {\n$(\"#performanceitem2\").jCarouselLite({\nbtnNext: \"#performanceitem2 .next\",\nbtnPrev: \"#performanceitem2 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script> \n</div>\n\n<!-- end:下乡绩效列表 -->\n\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/performancelist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n <link href=\"${ctx}/style/index/performance.css\" rel=\"stylesheet\" media=\"screen\">\n\t\n  </head>\n  \n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/base/getPerformanceList\"> 绩效管理</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询历史-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索下乡关键字...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n</ul>\n</div>\n<!--end:查询历史-->\n\n<!--head:扁平图标导航-->\n  <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:下乡绩效列表 -->\n<div class=\"widget performancelist\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>梅头乡图片</b>\n   </span>\n   <p>\n   \t<span  class=\"performance_title\">服务天数：</span>\n   \t<span  class=\"performance_days\">14天 </span>\n   </p>\n  <a href=\"${ctx}/front/web/base/getPerformanceManage\">详情</a>\n   </div>\n<div id=\"performanceitem1\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 1000px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 3000px; left: -1750px;\">\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p1.png\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p2.png\">\n</li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p3.png\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p4.png\">\n</li>\n\n</ul>\n  <div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n</div>\n</div>\n<script>\n$(function() {\n$(\"#performanceitem1\").jCarouselLite({\nbtnNext: \"#performanceitem1 .next\",\nbtnPrev: \"#performanceitem1 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script> \n</div>\n\n<div class=\"widget performancelist\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>上九里图片</b>\n   </span>\n   <p>\n   \t<span  class=\"performance_title\">服务天数：</span>\n   \t<span  class=\"performance_days\">6天 </span>\n   </p>\n  <a href=\"${ctx}/front/web/base/getPerformanceManage\">详情</a>\n   </div>\n<div id=\"performanceitem2\" class=\"caseleft\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 1000px;\">\n<ul style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 3000px; left: -1750px;\">\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p5.jpg\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p6.jpg\">\n</li>\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p7.jpg\">\n</li>\n\n<li style=\"overflow: hidden; float: left; width: 230px; height: 150px;\">\n<img src=\"${ctx}/uploadfile/p8.jpg\">\n</li>\n\n</ul>\n  <div class=\"loop_big_caj_nav\">\n<a class=\"prve\"> &lt; 上一页</a>\n<a class=\"next\"> 下一页 &gt; </a>\n</div>\n</div>\n<script>\n$(function() {\n$(\"#performanceitem2\").jCarouselLite({\nbtnNext: \"#performanceitem2 .next\",\nbtnPrev: \"#performanceitem2 .prve\",\nspeed:1000,//滚动动画的时间\nauto:3000,//滚动间隔时间\nvisible:4,\nonMouse:true,\nstart:0,\neasing: \"easeOutCubic\",\n});\n});\n </script> \n</div>\n\n<!-- end:下乡绩效列表 -->\n\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/performancemanage.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/performance.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./performancelist.html\"> 绩效管理</a><a> &gt; </a><a href=\"./performancemanage.html\"> 梅头乡</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询历史-->\n<div class=\"widget performancedetail\">\n<ul>\n<li>\n\t<span>下乡目的地：<strong>梅头乡</strong></span>\n</li>\n<li>\n\t<span>出发日期：<strong>2016-05-01</strong></span>\n</li>\n<li>\n\t<span>返程日期：<strong>2016-05-20</strong></span>\n</li>\n<li>\n\t<span>服务天数：<strong>12天</strong></span>\n</li>\n</ul>\n</div>\n<!--end:查询历史-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:下乡绩效列表 -->\n<div class=\"widget performancelist2\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>资源列表</b>\n   </span>\n   </div>\n<ul>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"./upload/p1.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"./upload/p2.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"./upload/p3.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"./upload/p4.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"./upload/p5.jpg\">\n</li>\n</ul>\n</div>\n<!-- end:下乡绩效列表 -->\n\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/performancemanage.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n <link href=\"${ctx}/style/index/performance.css\" rel=\"stylesheet\" media=\"screen\">\n\t\n  </head>\n  \n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/base/getPerformanceList\"> 绩效管理</a><a> &gt; </a><a href=\"#\"> 梅头乡</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询历史-->\n<div class=\"widget performancedetail\">\n<ul>\n<li>\n\t<span>下乡目的地：<strong>梅头乡</strong></span>\n</li>\n<li>\n\t<span>出发日期：<strong>2016-05-01</strong></span>\n</li>\n<li>\n\t<span>返程日期：<strong>2016-05-20</strong></span>\n</li>\n<li>\n\t<span>服务天数：<strong>12天</strong></span>\n</li>\n</ul>\n</div>\n<!--end:查询历史-->\n\n<!--head:扁平图标导航-->\n  <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:下乡绩效列表 -->\n<div class=\"widget performancelist2\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>资源列表</b>\n   </span>\n   </div>\n<ul>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"${ctx}/uploadfile/p1.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"${ctx}/uploadfile/p2.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"${ctx}/uploadfile/p3.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"${ctx}/uploadfile/p4.png\">\n</li>\n<li>\n\t<div class=\"del_btn\">\n\t\t<i class=\"del_icon\"></i>\n\t</div>\n\t<img src=\"${ctx}/uploadfile/p5.jpg\">\n</li>\n</ul>\n</div>\n<!-- end:下乡绩效列表 -->\n\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n</div>\n<!--end:右侧内容-->\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalcenter.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"${ctx}/style/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"${ctx}/style/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/detailinputunit.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"${ctx}/style/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264  current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./personalcenter.html\"> 个人中心</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./personalquestionlist.html\"><img src=\"${ctx}/style/images/xiaoxi_nav.png\"></a></li>\n<li><a href=\"./commpanylist.html\"><img src=\"${ctx}/style/images/nongqi_nav.png\"></a></li>\n<li><a href=\"./countrysidelist.html\"><img src=\"${ctx}/style/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"${ctx}/style/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"${ctx}/style/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"${ctx}/style/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:账号信息 -->\n<div class=\"into_unit\">\n\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">\n        \t账号信息\n\t</div>\n\t<div class=\"info_detail\">\n      \t<div>\n        \t<p style=\"width: 100%;\">\n             <span><strong>账号名</strong></span>\n             <span>\n             \t<input id=\"logincode\" name=\"logincode\" type=\"text\" placeholder=\"必填项\" value=\"testdemo\" readonly>\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"float: left;\">\n            <span><strong>密&nbsp;&nbsp;&nbsp;码</strong></span>\n            <span>\n            \t<input id=\"pwd\" name=\"pwd\" type=\"password\" placeholder=\"输入新密码\">\n            </span>\n            </p>\n            <p style=\"float: left; margin-left: 30px;\">\n            \t<input id=\"btn_editpwd\" type=\"button\" value=\"修改密码\" class=\"edit_password_btn\" style=\"margin: 20px auto 5px;\">\n            </p>\n            </div>\n\t</div>\n</div>\n<!-- end:账号信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalcenter.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/detailinputunit.css\" rel=\"stylesheet\" media=\"screen\">\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/base/getPersonalCenter\"> 个人中心</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n\n<!--head:扁平图标导航-->\n <jsp:include page=\"./personalnavigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<!-- head:账号信息 -->\n<div class=\"into_unit\">.\n\t<c:if test=\"${sessionInfo==null}\">\n\t        <p style=\"width: 100%;\">\n             <span><strong>您还未登录，请先登录。</strong></span>\n            </p>\n\n\t\n\t</c:if>\n\t<c:if test=\"${sessionInfo!=null}\">\n\t<div class=\"info_title\" style=\"top: 15px; left: 60px;\">\n        \t账号信息\n\t</div>\n\t<div class=\"info_detail\">\n      \t<div>\n        \t<p style=\"width: 100%;\">\n             <span><strong>账号名</strong></span>\n             <span>\n             \t<input id=\"logincode\" name=\"loginName\" type=\"text\" placeholder=\"必填项\" value=\"${sessionInfo.loginname}\" readonly>\n            </span>\n            </p>\n            </div>\n            <div>\n            <p style=\"float: left;\">\n            <span><strong>密&nbsp;&nbsp;&nbsp;码</strong></span>\n            <span>\n            \t<input id=\"pwd\" name=\"password\" type=\"password\" placeholder=\"输入新密码\">\n            </span>\n            </p>\n            <p style=\"float: left; margin-left: 30px;\">\n            \t<input id=\"btn_editpwd\" type=\"button\" value=\"修改密码\" class=\"edit_password_btn\" style=\"margin: 20px auto 5px;\">\n            </p>\n            </div>\n\t</div>\n\n\t\n\t</c:if>\n\n</div>\n<!-- end:账号信息 -->\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalnavigation.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<style>\n\t#xiaoxi\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/xiaoxi.png\");\n\t\tcursor: pointer;\n\t}\n\t#xiaoxi:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/xiaoxi_s.png\");\n\t}\n\t\n\t#nongqi\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/nongqi.png\");\n\t\tcursor: pointer;\n\t}\n\t#nongqi:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/nongqi_s.png\");\n\t}\n\t\n\t#xiaxiang\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/xiaxiang.png\");\n\t\tcursor: pointer;\n\t}\n\t#xiaxiang:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/xiaxiang_s.png\");\n\t}\n\t\n\t#jixiao\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/jixiao.png\");\n\t\tcursor: pointer;\n\t}\n\t#jixiao:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/jixiao_s.png\");\n\t}\n\t\n\t#zhishiku\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/zhishiku.png\");\n\t\tcursor: pointer;\n\t}\n\t#zhishiku:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/zhishiku_s.png\");\n\t}\n\t\n\t#communicate\n\t{\n\t\twidth: 104px;\n\t\theight: 104px;\n\t\tbackground: url(\"${ctx}/style/images/index/communicate.png\");\n\t\tcursor: pointer;\n\t}\n\t#communicate:hover\n\t{\n\t\tbackground: url(\"${ctx}/style/images/index/communicate_s.png\");\n\t}\n</style>\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n\n<li><a href=\"${ctx}/front/web/communicate/getPersonalQuestionList\"><div id=\"xiaoxi\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">消息列表</div></a></li>\n<li><a href=\"${ctx}/front/agribusiness/base/getCommpanyList\"><div id=\"nongqi\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">农企信息</div></a></li>\n<li><a href=\"${ctx}/front/village/base/getCountrysideList\"><div id=\"xiaxiang\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">下乡管理</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getPerformanceList\"><div id=\"jixiao\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">绩效考核</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getKnowledgeData\"><div id=\"zhishiku\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">农技知识</div></a></li>\n<li><a href=\"${ctx}/front/web/base/getQuestionList\"><div id=\"communicate\"></div><div style=\"margin: 0 auto; text-align: center; font-size: 14px; color: green;\">在线交流</div></a></li>\n\n</ul>\n</div>\n<!--head:扁平图标导航-->\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalnoticelist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/personalquestionlist.css\" rel=\"stylesheet\" media=\"screen\">\n  </head>\n  \n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/notice/getNoticePage\"> 查看个人问答</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n <jsp:include page=\"./personalnavigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"personaltabs\" id=\"personal_message_tabs\" style=\"display: block;\">\n<div class=\"personal_message_head\" id=\"personal_message_tabs_inner\">\n<div class=\"personal_message_container clearfix\">\n<button class=\"personal_message_item\" action=\"atmessage\">\n<span class=\"icon\">未读消息</span>\n</button>\n<button class=\"personal_message_item current\" action=\"recvmessage\">\n<span class=\"icon\">已读消息</span>\n</button>\n</div>\n</div>\n<div class=\"personal_message_border\"></div>\n</div>\n<!--控制tabs标题-->\n<script>\n$(\".personal_message_item\").click(function(){\n\tvar action = $(this).attr(\"action\");\n\t$(this).parent(\".personal_message_container\").find(\".personal_message_item\").each(function(){\n\t\tif($(this).hasClass(\"current\")){\n\t\t\t$(this).removeClass(\"current\");\n\t\t}\n\t});\n\t$(this).addClass(\"current\");\n\t// 根据入参action的不同值，调用方法获取不同的数据\n\tif($(this).attr('action')=='atmessage')\n\t{\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/question/getAtMessage',\n\t\tdata:{experPersonalID:\"${sessionInfo.id}\"},\n\t\tcache:true,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#ul_questionList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a class=\"question_title\" >{0}</a>',data.obj[e].typeName);\n\t\t\t\t str += $.formatString(' <div class=\"question_expandable\">{0}</div><div class=\"question_actions\">',data.obj[e].content);\n\t\t\t\t str += $.formatString(' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span></a></div></li>',data.obj[e].createDate);\n\t\t\t\t $('#ul_questionList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t});\n\t\n\t}\n\telse{\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/question/getRecMessage',\n\t\tdata:{personalID:\"${sessionInfo.id}\"},\n\t\tcache:false,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#ul_questionList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a class=\"question_title\" >{0}</a>',data.obj[e].typeName);\n\t\t\t\t str += $.formatString(' <div class=\"question_expandable\">{0}</div><div class=\"question_actions\">',data.obj[e].content);\n\t\t\t\t str += $.formatString(' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span></a></div></li>',data.obj[e].createDate);\n\t\t\t\t $('#ul_questionList').append(function(){return str;} );\n\t\t\t\t}\t\n\t\t}\n\t});\n\t\n\t   /*  暂不需要  author:yeyaowen\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/comment/getRecMessage',\n\t\tdata:{personalID:\"${sessionInfo.id}\"},\n\t\tcache:false,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#ul_commentList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a href=\"${ctx}/front/web/communicate/getQuestionPage?id={0}\">在问题：<span class=\"highline\">{1}</span>回复：</a><span class=\"time\">{2}</span><p>{3}</p></li>',data.obj[e].questionID,data.obj[e].questionTitle,data.obj[e].createDate,data.obj[e].content);\n\n\t\t\t\t $('#ul_commentList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t});\n\t*/\n\t\t\n\t}\n});\n\n\n</script>\n\n<div class=\"widget\" id=\"widget_question\">\n<ul id=\"ul_questionList\">\n    \n\t<c:if test=\"${!empty isNoticeList}\">\n\t<c:forEach items=\"${isNoticeList}\" var=\"n\">\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" >${n.typeName}</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t${n.content}\n\t\t\t\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">${n.createDate}</span></a>\n\t\t</div>\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t</c:forEach>\n\t</c:if>\n\t\n\t\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n\n<script>\n//展开问题\n$(\".question_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".question_content\").show();\n\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t$(this).nextAll(\".comment_list\").show();\n\t\n\t//创建评论区\n\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\tif($(replybox).length == 0){\n\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t}\n});\n\n//折叠问题\n$(\".question_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n});\n\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n<div class=\"widget answerlist\" id=\"widget_anserlist\">\n<ul id=\"ul_commentList\">\n    <c:if test=\"${!empty commentList}\">\n\t   <c:forEach items=\"${commentList}\" var=\"comment\">\n\t<li><a href=\"${ctx}/front/web/communicate/getQuestionPage?id=${comment.questionID}\">在问题：<span class=\"highline\">${comment.questionTitle}</span>回复：</a><span class=\"time\">${comment.createDate}</span><p>${comment.content}</p></li>\n\t   </c:forEach>\n\t</c:if>\n</ul>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalquestionlist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264 current-menu-item\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./personalquestionlist.html\"> 查看个人问答</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询提问-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<a href=\"#\"><button class=\"myquestion\" id=\"btn_myquestion\">我的问题</button></a>\n</li>\n<li>\n\t<a href=\"#\"><button class=\"myquestion\" id=\"btn_myanswer\">我的回复</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询提问-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./personalquestionlist.html\"><img src=\"./styles/images/xiaoxi_nav.png\"></a></li>\n<li><a href=\"./commpanylist.html\"><img src=\"./styles/images/nongqi_nav.png\"></a></li>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"widget\" id=\"widget_question\">\n<ul>\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【养猪】求救，家里的猪最近总是没食欲</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p1.png\">\n\t\t\t朱元璋御膳菜单:早膳:羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶.(话说早晨吃这么多荤的真没问题?)午膳:胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n朱元璋御膳菜单：\n早膳：羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶。（话说早晨吃这么多荤的真没问题？）\n午膳：胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿、椒末羊肉、香米饭、蒜酪、三鲜汤、豆汤、泡茶。\n\n万历皇帝御膳菜单：\n米面食：八宝馒头、攒馅馒头、蒸卷、海清卷子、蝴蝶卷子；大蒸饼、椒盐饼、夹糖饼、芝麻烧饼、奶皮烧饼、薄脆饼、灵芝饼；枣糕、白馓子、糖馓子、芝麻象眼减煠；鸡蛋面、白切面、水晶饭。\n肉食：烧天鹅（天鹅……）、烧鹅、清蒸鸡、暴腌鸡、川炒鸡、烧肉、白煮肉、清蒸肉、猪屑骨、荔枝猪肉、鲟鳇鲊、蒸鱼、猪耳脆、煮鲜肫肝、玉丝肚肺、蒸羊、燌羊。\n汤品：牡丹头汤、鸡脆饼汤、猪肉龙松汤、玛瑙糕子汤、锦丝糕子汤、木樨糕子汤、酸甜汤、葡萄汤、蜜汤、牛奶。\n【谢评论区 @杨海晨 提醒，煮鲜肫肝并不是猪内脏，我一个天天吃鸭肫的竟然忘了没有猪肫这种说法……】\n\n永乐二年郊祀结束后的庆成宴菜单：\n上卓：按酒五般。果子五般。茶食五般。烧煠五般。汤三品。双下馒头。马肉饭。酒五钟。\n中卓：按酒四般。果子四般。汤三品。双下馒头。马猪羊肉饭（神一般的荤菜三拼？）。酒五钟。\n随驾将军：按酒一般。粉汤。双下馒头猪肉饭。酒一钟。\n\t\t\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">24</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">6</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t\t\t<!--head:评论区域-->\n\t\t <div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>为什么没有图片的文章，主页有乱码？</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>楼主你好，非常赞同你的观点。</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t\t\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【种菜】怎么种番茄</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p2.png\">\n\t\t\t开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单。\n开车久了为了加速快，我们都是踩一脚油门后在高转速的时候加档，这样能获得较快的加速，如果想要开的平稳，很简单，从1档开始，加油之后不要在最高转速的时候摘挡挂档，脚离开油门后，等2到3秒转速自己降下来后再摘空挡加档，用这种开法的话基本上冲劲就完全没了，但是缺点就是加速比较慢，可能后面的车会哔哔。。。。。。这方法适合追求极致的朋友驾驶。。。。\n——————————————更新分割线————————————————\n刚拿驾照就上高速很危险！！！\n\n　　一脚油门踩到底的驾驶技巧我 8 岁时开碰碰车的时候就学会了 _(:3 」∠)_ _(:3 」∠)_ _(:3 」∠)_\n\n　　鉴于之前的答案太乱了，整理一下方便阅读。以下均为个人经验，有不对之处请指正。\n\n　　上长途高速驾驶之前建议在环城高速上有一定的驾驶经验，比如北京的五环路，不堵车的情况下能开到 100，而且上面车多，能练习好超车跟车经验，这样不会到了跨省市高速上看到旁边的车 120 甚至 150 开过去的时候自己心慌。\n\n　　一个司机想要安全驾驶，有两点很重要，一个是预判，另一个是让。\n\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">19</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">10</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【种菜】花生喷药技巧</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。当然你不要...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。\n\n当然你不要理解错，语音发力不是弄个篮球/足球解说员搞个语音包。\n\n「霍霍，你车开得挺合理呀！」\n「你这是邦邦邦乱开。」\n「前方50米有一收费站，请勿力劈华山。」\n「嘿嘿嘿。」\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">22</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">5</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【养鱼】草鱼育苗</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p3.png\">\n\t\t\t这个问题在《国家新型城镇化规划纲要》中就已经回答了。推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n这个问题在《国家新型城镇化规划纲要》中就已经回答了。\n推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。\n这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每人只有这么点地，如果理想化地现在推行规模化和机械化，那就根本不需要这么多农村劳动力，这些农业人口去哪里讨生活呢？\n为什么要推行城镇化，尤其是\"新型城镇化\"？\n新型城镇化的内涵是\"人\"的城镇化，而不是地的城镇化，让更多的农业人口转变生产方式，从第一产业到二三产业中去，这样不仅增加了收入，而且释放了农村走机械化规模化的潜力。\n有兴趣你可以读读这个规划的文本，写的还是很有水平的。\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">33</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">25</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./\">【种菜】花生喷药技巧</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p4.png\">\n\t\t\t这年底多出来的一秒对于我们人类来说几乎就是个概念，但是对于认死理的计算机来说有可能就是灾难。2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。这是为什么呢？因为Unix time（POSIX time）是不支持leap second（即闰秒）的…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。\n\n这是为什么呢？\n\n因为Unix time（POSIX time）是不支持leap second（即闰秒）的。我们都知道在C里的time()函数会返回一个秒数，一般是从1970年1月1号0点到现在为止的秒数。然而这几十年来出现了大概20多个leap second，POSIX是怎么处理的呢？方法就是——无视他们。POSIX规定，每天是严格的86400秒，一秒都不多。\n\n为什么要这么规定？好算呗！\n\n我们都知道，C里还有一个函数叫做gmtime()，可以把秒数（time_t）还原成哪年哪天几点几分几秒。如果把leap second无视掉，这个函数就很好做，可是如果考虑到leap second，这个函数就直接崩盘了。首先你需要逐一考虑之前没有明显规律的leap second，更可怕的是，之后不知道什么时候出现的leap second你怎么处理？这给编译器带来了一个比较严峻的考验，于是乎POSIX大笔一挥，我们不管啦！\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">33</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">25</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n\n<script>\n//展开问题\n$(\".question_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".question_content\").show();\n\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t$(this).nextAll(\".comment_list\").show();\n\t\n\t//创建评论区\n\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\tif($(replybox).length == 0){\n\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t}\n});\n\n//折叠问题\n$(\".question_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n});\n\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n<div class=\"widget answerlist\">\n<ul>\n\t<li><a href=\"./\">对<span class=\"highline\">XXX</span>说：</a><span class=\"time\">2016/7/11</span><p>为什么要用这个？</p></li>\n\t<li><a href=\"./\">对<span class=\"highline\">AAA</span>说：</a><span class=\"time\">2016/7/10</span><p>Hello，你好</p></li>\n\t<li><a href=\"./\">对<span class=\"highline\">BBB</span>说：</a><span class=\"time\">2016/7/6</span><p>成果转化排名是多少？</p></li>\n</ul>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/personalquestionlist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n  <jsp:include page=\"../inc.jsp\"></jsp:include>\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/style/index/personalquestionlist.css\" rel=\"stylesheet\" media=\"screen\">\n  </head>\n  \n<body class=\"home blog\">\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/communicate/getPersonalQuestionList\"> 查看个人问答</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:扁平图标导航-->\n <jsp:include page=\"./personalnavigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"personaltabs\" id=\"personal_message_tabs\" style=\"display: block;\">\n<div class=\"personal_message_head\" id=\"personal_message_tabs_inner\">\n<div class=\"personal_message_container clearfix\">\n<button class=\"personal_message_item\" action=\"atmessage\">\n<span class=\"icon\">提到我的消息</span>\n</button>\n<button class=\"personal_message_item current\" action=\"recvmessage\">\n<span class=\"icon\">我已发布的消息</span>\n</button>\n</div>\n</div>\n<div class=\"personal_message_border\"></div>\n</div>\n<!--控制tabs标题-->\n<script>\nvar arg = {\n\tpage :\"1\",\n\trows :\"10\",\n\tsort :\"autoID\",\n\torder:\"desc\",\n\tpersonalID:\"${sessionInfo.id}\"\n};\n\nrecvmessage();\n\n$(\".personal_message_item\").click(function(){\n\tvar action = $(this).attr(\"action\");\n\t$(this).parent(\".personal_message_container\").find(\".personal_message_item\").each(function(){\n\t\tif($(this).hasClass(\"current\")){\n\t\t\t$(this).removeClass(\"current\");\n\t\t}\n\t});\n\t$(this).addClass(\"current\");\n\t// 根据入参action的不同值，调用方法获取不同的数据\n\tif($(this).attr('action')=='atmessage')\n\t{\n\t\targ.page=1;\n\t\tatemessage();\n\t\n\t}\n\telse{\n\n\t    arg.page=1;\n\t\trecvmessage();\n\t}\n});\n\nfunction recvmessage()\n{\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/question/getRecMessage',\n\t\tdata:arg,\n\t\tcache:false,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n$(\"#ul_questionList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a class=\"question_title\" href=\"${ctx}/front/web/communicate/base/getQuestionPage?id={0}\" target=\"_blank\">{1}</a>',data.obj[e].autoID,data.obj[e].title);\n\t\t\t\t str += $.formatString(' <div class=\"question_expandable\"><a class=\"toggle-expand\">显示全部</a></div><div class=\"question_content\" style=\"display: none;\">{0}</div><div class=\"question_actions\">',data.obj[e].content);\n\t\t\t\t str += $.formatString(' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span>条评论</a>',data.obj[e].commentCount);\n\t\t         str += $.formatString('<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button></div></li>');\n\t\t\t\t $('#ul_questionList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\t$(\".question_expandable\").click(function(){\n\t\t        $(this).hide();\n\t\t\t\t$(this).nextAll(\".question_content\").show();\n\t\t\t\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t\t\t\t$(this).nextAll(\".comment_list\").show();\n\t\t\n\t\t\t\t\t//创建评论区\n\t\t\t\t\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\t\t\t\t\tif($(replybox).length == 0){\n\t\t\t\t\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"${ctx}/style/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//折叠问题\n\t\t\t\t$(\".question_collapse\").click(function(){\n\t\t\t\t\t$(this).hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n\t\t\t\t});\n\n\t\t\t\t//点击已有评论的回复\n\t\t\t\t$(\".comment_reply\").click(function(){\n\t\t\t\t\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\t\t\t\t\tif($(littlebox).length == 0){\n\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t});\n\t\n\t   /*  暂不需要  author:yeyaowen\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/comment/getRecMessage',\n\t\tdata:{personalID:\"${sessionInfo.id}\"},\n\t\tcache:false,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#ul_commentList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a href=\"${ctx}/front/web/communicate/getQuestionPage?id={0}\">在问题：<span class=\"highline\">{1}</span>回复：</a><span class=\"time\">{2}</span><p>{3}</p></li>',data.obj[e].questionID,data.obj[e].questionTitle,data.obj[e].createDate,data.obj[e].content);\n\n\t\t\t\t $('#ul_commentList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t});\n\t*/\n}\n\nfunction atemessage()\n{\n\t\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/question/getAtMessage',\n\t\tdata:arg,\n\t\tcache:true,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t\t$(\"#ul_questionList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li><a class=\"question_title\" href=\"${ctx}/front/web/communicate/base/getQuestionPage?id={0}\" target=\"_blank\">{1}</a>',data.obj[e].autoID,data.obj[e].title);\n\t\t\t\t str += $.formatString(' <div class=\"question_expandable\"><a class=\"toggle-expand\">显示全部</a></div><div class=\"question_content\" style=\"display: none;\">{0}</div><div class=\"question_actions\">',data.obj[e].content);\n\t\t\t\t str += $.formatString(' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span>条评论</a>',data.obj[e].commentCount);\n\t\t         str += $.formatString('<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button></div></li>');\n\t\t\t\t $('#ul_questionList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\t$(\".question_expandable\").click(function(){\n\t\t        $(this).hide();\n\t\t\t\t$(this).nextAll(\".question_content\").show();\n\t\t\t\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t\t\t\t$(this).nextAll(\".comment_list\").show();\n\t\t\n\t\t\t\t\t//创建评论区\n\t\t\t\t\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\t\t\t\t\tif($(replybox).length == 0){\n\t\t\t\t\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"${ctx}/style/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//折叠问题\n\t\t\t\t$(\".question_collapse\").click(function(){\n\t\t\t\t\t$(this).hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n\t\t\t\t});\n\n\t\t\t\t//点击已有评论的回复\n\t\t\t\t$(\".comment_reply\").click(function(){\n\t\t\t\t\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\t\t\t\t\tif($(littlebox).length == 0){\n\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t});\n}\n\nfunction pageing(ifup)\n{\n\tif(ifup==1)\n\t{\n\t\tif(arg.page==1)\n\t\t{\n\t\t\talert(\"已经是首页\");\n\t\t\treturn ;\n\t\t}\n\t\telse\n\t\t{\n\t\t\targ.page--;\n\t\t}\n\t}\n\telse\n\t{\n\t\targ.page++;\n\t}\n\tif($(\".personal_message_container .current\").attr(\"action\")=='atmessage')\n\t{atemessage();}\n    else\n\t{recvmessage(); }\n}\n\n</script>\n\n<div class=\"widget\" id=\"widget_question\">\n<ul id=\"ul_questionList\">\n    \n\t<c:if test=\"${!empty questionList}\">\n\t<c:forEach items=\"${questionList}\" var=\"n\">\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"${ctx}/front/web/communicate/base/getQuestionPage?id=${n.autoID}\">${n.title}</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t${n.content}\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">${n.commentCount}</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">${n.likeCount}</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t</c:forEach>\n\t</c:if>\n\t\n\t\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a  href=\"javascript:pageing(1);\">上一页</a>\n\t<a  id=\"now_page\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a  href=\"javascript:pageing(0);\">下一页</a> \n\n</div>\n<!--end:列表分页-->\n\n<script>\n//展开问题\n$(\".question_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".question_content\").show();\n\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t$(this).nextAll(\".comment_list\").show();\n\t\n\t//创建评论区\n\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\tif($(replybox).length == 0){\n\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t}\n});\n\n//折叠问题\n$(\".question_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n});\n\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n<div class=\"widget answerlist\" id=\"widget_anserlist\">\n<ul id=\"ul_commentList\">\n    <c:if test=\"${!empty commentList}\">\n\t   <c:forEach items=\"${commentList}\" var=\"comment\">\n\t<li><a href=\"${ctx}/front/web/communicate/getQuestionPage?id=${comment.questionID}\">在问题：<span class=\"highline\">${comment.questionTitle}</span>回复：</a><span class=\"time\">${comment.createDate}</span><p>${comment.content}</p></li>\n\t   </c:forEach>\n\t</c:if>\n</ul>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/questionlist.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261 current-menu-item\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./questionlist.html\"> 在线交流</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询提问-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的内容...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n<li>\n\t<a href=\"askquestionpage.html\" target=\"_blank\"><button class=\"askquestion\" id=\"btn_askquestion\">提问</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询提问-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"widget\" id=\"widget_question\">\n<ul>\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./questionpage.html\">【养猪】求救，家里的猪最近总是没食欲</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p1.png\">\n\t\t\t朱元璋御膳菜单:早膳:羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶.(话说早晨吃这么多荤的真没问题?)午膳:胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n朱元璋御膳菜单：\n早膳：羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶。（话说早晨吃这么多荤的真没问题？）\n午膳：胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿、椒末羊肉、香米饭、蒜酪、三鲜汤、豆汤、泡茶。\n\n万历皇帝御膳菜单：\n米面食：八宝馒头、攒馅馒头、蒸卷、海清卷子、蝴蝶卷子；大蒸饼、椒盐饼、夹糖饼、芝麻烧饼、奶皮烧饼、薄脆饼、灵芝饼；枣糕、白馓子、糖馓子、芝麻象眼减煠；鸡蛋面、白切面、水晶饭。\n肉食：烧天鹅（天鹅……）、烧鹅、清蒸鸡、暴腌鸡、川炒鸡、烧肉、白煮肉、清蒸肉、猪屑骨、荔枝猪肉、鲟鳇鲊、蒸鱼、猪耳脆、煮鲜肫肝、玉丝肚肺、蒸羊、燌羊。\n汤品：牡丹头汤、鸡脆饼汤、猪肉龙松汤、玛瑙糕子汤、锦丝糕子汤、木樨糕子汤、酸甜汤、葡萄汤、蜜汤、牛奶。\n【谢评论区 @杨海晨 提醒，煮鲜肫肝并不是猪内脏，我一个天天吃鸭肫的竟然忘了没有猪肫这种说法……】\n\n永乐二年郊祀结束后的庆成宴菜单：\n上卓：按酒五般。果子五般。茶食五般。烧煠五般。汤三品。双下馒头。马肉饭。酒五钟。\n中卓：按酒四般。果子四般。汤三品。双下馒头。马猪羊肉饭（神一般的荤菜三拼？）。酒五钟。\n随驾将军：按酒一般。粉汤。双下馒头猪肉饭。酒一钟。\n\t\t\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">24</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">6</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t\t\t<!--head:评论区域-->\n\t\t <div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>为什么没有图片的文章，主页有乱码？</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>楼主你好，非常赞同你的观点。</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t\t\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./questionpage.html\">【种菜】怎么种番茄</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p2.png\">\n\t\t\t开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n开车久了，其实每个人都有了一些不好的习惯，我虽然说开车算稳，但是在加挡的时候还是会冲一下，这冲一下虽小，驾驶员自己一般感受不到，但是看到副驾驶的人身体会轻微的动一下，后来研究了一下，其实不冲很简单。\n开车久了为了加速快，我们都是踩一脚油门后在高转速的时候加档，这样能获得较快的加速，如果想要开的平稳，很简单，从1档开始，加油之后不要在最高转速的时候摘挡挂档，脚离开油门后，等2到3秒转速自己降下来后再摘空挡加档，用这种开法的话基本上冲劲就完全没了，但是缺点就是加速比较慢，可能后面的车会哔哔。。。。。。这方法适合追求极致的朋友驾驶。。。。\n——————————————更新分割线————————————————\n刚拿驾照就上高速很危险！！！\n\n　　一脚油门踩到底的驾驶技巧我 8 岁时开碰碰车的时候就学会了 _(:3 」∠)_ _(:3 」∠)_ _(:3 」∠)_\n\n　　鉴于之前的答案太乱了，整理一下方便阅读。以下均为个人经验，有不对之处请指正。\n\n　　上长途高速驾驶之前建议在环城高速上有一定的驾驶经验，比如北京的五环路，不堵车的情况下能开到 100，而且上面车多，能练习好超车跟车经验，这样不会到了跨省市高速上看到旁边的车 120 甚至 150 开过去的时候自己心慌。\n\n　　一个司机想要安全驾驶，有两点很重要，一个是预判，另一个是让。\n\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">19</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">10</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./questionpage.html\">【种菜】花生喷药技巧</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。当然你不要...\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n\t\t\t上周，据美国科技网站 VentureBeat 报道，苹果公司准备招聘4位体育相关的 Siri 软件工程师。此举是为了解决各种球赛后，Siri 听到大量的 「F*ck, SH*t, Bitch」而无法还嘴的窘境（这句是吐槽）。总之一句话，苹果公司要在体育语音搜索中发力了。\n\n当然你不要理解错，语音发力不是弄个篮球/足球解说员搞个语音包。\n\n「霍霍，你车开得挺合理呀！」\n「你这是邦邦邦乱开。」\n「前方50米有一收费站，请勿力劈华山。」\n「嘿嘿嘿。」\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">22</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">5</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./questionpage.html\">【养鱼】草鱼育苗</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p3.png\">\n\t\t\t这个问题在《国家新型城镇化规划纲要》中就已经回答了。推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n这个问题在《国家新型城镇化规划纲要》中就已经回答了。\n推行农业现代化的条件简单来看，一是土地自然条件，二是技术资金支持。\n这看起来很容易实现，但却还有一个问题，我国的农业人口过多，真正的农村人均耕地很少，远达不到推行集体规模经营的条件，平均每人只有这么点地，如果理想化地现在推行规模化和机械化，那就根本不需要这么多农村劳动力，这些农业人口去哪里讨生活呢？\n为什么要推行城镇化，尤其是\"新型城镇化\"？\n新型城镇化的内涵是\"人\"的城镇化，而不是地的城镇化，让更多的农业人口转变生产方式，从第一产业到二三产业中去，这样不仅增加了收入，而且释放了农村走机械化规模化的潜力。\n有兴趣你可以读读这个规划的文本，写的还是很有水平的。\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">33</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">25</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n\t<!--head:一条问题-->\n\t<li>\n\t\t<a class=\"question_title\" href=\"./questionpage.html\">【种菜】花生喷药技巧</a>\n\t\t<div class=\"question_expandable\">\n\t\t\t<img src=\"./upload/p4.png\">\n\t\t\t这年底多出来的一秒对于我们人类来说几乎就是个概念，但是对于认死理的计算机来说有可能就是灾难。2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。这是为什么呢？因为Unix time（POSIX time）是不支持leap second（即闰秒）的…\n\t\t\t<a class=\"toggle-expand\">显示全部</a>\n\t\t</div>\n\t\t<div class=\"question_content\" style=\"display: none;\">\n2012年6月底也多出了一秒，这多出来的一秒直接把Reddit和一些其他网站搞挂了。\n\n这是为什么呢？\n\n因为Unix time（POSIX time）是不支持leap second（即闰秒）的。我们都知道在C里的time()函数会返回一个秒数，一般是从1970年1月1号0点到现在为止的秒数。然而这几十年来出现了大概20多个leap second，POSIX是怎么处理的呢？方法就是——无视他们。POSIX规定，每天是严格的86400秒，一秒都不多。\n\n为什么要这么规定？好算呗！\n\n我们都知道，C里还有一个函数叫做gmtime()，可以把秒数（time_t）还原成哪年哪天几点几分几秒。如果把leap second无视掉，这个函数就很好做，可是如果考虑到leap second，这个函数就直接崩盘了。首先你需要逐一考虑之前没有明显规律的leap second，更可怕的是，之后不知道什么时候出现的leap second你怎么处理？这给编译器带来了一个比较严峻的考验，于是乎POSIX大笔一挥，我们不管啦！\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">33</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">25</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\" onclick=\"fnCollapseQuestion()\"><i></i>收起</button>\n\t\t</div>\n\t\t<!--head:评论区域-->\n\t\t<div class=\"comment_list\" style=\"display: none;\" >\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t</div>\n\t\t<!--end:评论区域-->\n\t</li>\n\t<!--end:一条问题-->\n</ul>\n<!--head:列表分页-->\n<div class=\"list_paginator\">\n\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n</div>\n<!--end:列表分页-->\n<script>\n//展开问题\n$(\".question_expandable\").click(function(){\n\t$(this).hide();\n\t$(this).nextAll(\".question_content\").show();\n\t$(this).nextAll(\".question_actions\").find(\".question_collapse\").show();\n\t$(this).nextAll(\".comment_list\").show();\n\t\n\t//创建评论区\n\tvar replybox = $(this).nextAll(\".comment_list\").find(\".comment_replybox\");\n\tif($(replybox).length == 0){\n\t\tvar replyboxhtml ='<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).nextAll(\".comment_list\").append(replyboxhtml);\n\t}\n});\n\n//折叠问题\n$(\".question_collapse\").click(function(){\n\t$(this).hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_content\").hide();\n\t$(this).parent(\".question_actions\").nextAll(\".comment_list\").hide();\n\t$(this).parent(\".question_actions\").prevAll(\".question_expandable\").show();\n});\n\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/questionlist.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\"\n\t\t\t+ request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<base href=\"<%=basePath%>\">\n<jsp:include page=\"./inc-head.jsp\"></jsp:include>\n<link href=\"${ctx}/style/index/comment.css\" rel=\"stylesheet\"\n\tmedia=\"screen\">\n</head>\n<body\n\tclass=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n\t<!--start 登录注册浮动栏 -->\n\t<jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n\t<!-- end 登录注册浮动栏 -->\n\n\t<!-- start:头部导航 -->\n\t<jsp:include page=\"./header.jsp\"></jsp:include>\n\t<!-- end:头部导航-->\n\n\t<!--head:所在位置-->\n\t<div id=\"page_muen_nav\">\n\t\t<b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a>\n\t\t\t&gt; </a><a href=\"${ctx}/front/web/base/getQuestionList\"> 在线交流</a>\n\t</div>\n\t<!--end:所在位置-->\n\n\t<!--head:内容项目-->\n\t<div id=\"content\">\n\n\t\t<!--head:左侧内容-->\n\t\t<div class=\"left_mian\">\n\t\t\t<!--head:查询提问-->\n\t\t\t<div class=\"widget\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"searchquestion\">\n\t\t\t\t\t\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\"\n\t\t\t\t\t\t\t\tplaceholder=\"搜索你感兴趣的内容...\">\n\t\t\t\t\t\t\t<div onclick=\"search_indistinct();\"\n\t\t\t\t\t\t\t\tstyle=\"width: 40px; height: 35px; position: absolute; top: 0px; right: 0px;\"></div>\n\t\t\t\t\t\t</div> <!--<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的内容...\">\n\t\t<button id=\"btn_search\" onclick=\"search_indistinct();\"><i class=\"search_icon\"></i></button>\n\t</div>  -->\n\t\t\t\t\t</li>\n\t\t\t\t\t<li><a href=\"${ctx}/front/web/communicate/getAskQuestionPage\"><div\n\t\t\t\t\t\t\t\tstyle=\"margin-top: 10px;\" class=\"askquestion\"></div> </a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<!--end:查询提问-->\n\t\t</div>\n\t\t<!--end:左侧内容-->\n\n\n\t\t<!--head:右侧内容-->\n\t\t<div class=\"right_mian\">\n\n\t\t\t<div class=\"widget\" id=\"widget_question\">\n\t\t\t\t<ul id=\"ul_questionList\">\n\n\t\t\t\t</ul>\n\t\t\t\t<!--head:列表分页-->\n\t\t\t\t<div class=\"list_paginator\">\n\t\t\t\t\t<input id=\"selectedCategoryCode\" type=\"hidden\" value=\"\" /> <input\n\t\t\t\t\t\tid=\"page_size\" type=\"hidden\" value=\"10\" /> <input\n\t\t\t\t\t\tid=\"records_total\" type=\"hidden\" value=\"0\" /> <a\n\t\t\t\t\t\thref=\"javascript:changePage(1);\">上一页</a> <a id=\"current_page\"\n\t\t\t\t\t\tcurrentpage=\"1\" href=\"javascript:void(0); \"\n\t\t\t\t\t\tclass=\"paginator_current\">1</a> <a\n\t\t\t\t\t\thref=\"javascript:changePage(2);\">下一页</a>\n\t\t\t\t</div>\n\t\t\t\t<!--end:列表分页-->\n\t\t\t</div>\n\n\t\t</div>\n\t\t<!--end:右侧内容-->\n\n\t</div>\n\t<!--end:内容项目-->\n\n\n\t</div>\n\t<!--end:内容项目-->\n\n\t<!--head:底部信息-->\n\t<jsp:include page=\"./footer.jsp\"></jsp:include>\n\t<!--end:底部信息-->\n\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n\t<script>\n\t\t$(document).ready(function() {\n\t\t\tgetData();\n\n\t\t\t$(\"#input_search\").keyup(function(event) {\n\t\t\t\tif (!event || event.which != 13)\n\t\t\t\t\treturn true;\n\t\t\t\tsearch_indistinct();\n\t\t\t});\n\t\t});\n\n\t\tfunction changePage(flag) {\n\t\t\tvar pagesize = parseInt($(\"#page_size\").val());\n\t\t\tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t\t\tvar total = parseInt($(\"#records_total\").val());\n\t\t\tif (flag == 1) {\n\t\t\t\t//上一页\n\t\t\t\tif (current <= 1) {\n\t\t\t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t\t\t\t\talert(\"已经到达第一页\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcurrent--;\n\t\t\t} else {\n\t\t\t\t//下一页\n\t\t\t\tvar pageCount = parseInt(total / pagesize) == (total / pagesize) ? (total / pagesize)\n\t\t\t\t\t\t: ((total / pagesize) + 1);\n\t\t\t\tif ((current + 1) > pageCount) {\n\t\t\t\t\talert(\"已经到达最后一页\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcurrent++;\n\t\t\t}\n\t\t\t$(\"#current_page\").attr(\"currentpage\", current);\n\t\t\t$(\"#current_page\").text(current);\n\t\t\tgetData();\n\t\t}\n\n\t\tfunction getData() {\n\t\t\tvar searchKey = $(\"#input_search\").val();\n\t  \t\tsearchKey = searchKey.trim();\n\t  \t\tvar pagesize = parseInt($(\"#page_size\").val());\n\t  \t\tvar current = parseInt($(\"#current_page\").attr(\"currentpage\"));\n\t  \t\tvar sort = \"autoID\";\n\t  \t\tvar order = \"desc\";\n\t  \t\tvar url = \"${ctx}/front/web/communicate/base/getQuestionList\";\n\t  \t\n\t\t\t$.ajax({\n\t\t\t\t\t\turl : url,\n\t\t\t\t\t\tdata: { \"rows\": pagesize, \"page\": current, \"sort\" : sort, \"order\" : order, \"searchKey\": searchKey },\n\t\t\t\t\t\tcache : true,\n\t\t\t\t\t\tdataType : 'json',\n\t\t\t\t\t\tsuccess : function(json) {\n\t\t\t\t\t\t\t$(\"#ul_questionList\").html('');\n\t\t\t\t\t\t\t$(\"#records_total\").val(json.total);\n\t\t\t\t\t\t\tfor (var i = 0; i < json.rows.length; i++) {\n\t\t\t\t\t\t\t\tvar str = '';\n\t\t\t\t\t\t\t\tstr += $.formatString(\n\t\t\t\t\t\t\t\t\t\t\t\t'<li><a class=\"question_title\" href=\"${ctx}/front/web/communicate/base/getQuestionPage?id={0}\" target=\"_blank\">{1}</a><div class=\"question_expandable\">',\n\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].autoID,\n\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].title);\n\t\t\t\t\t\t\t\tif (json.rows[i].resourceMetaList != null) {\n\t\t\t\t\t\t\t\t\tstr += $.formatString(' <img src=\"{0}\">',\n\t\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].resourceMetaList[0].metaPath);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstr += $.formatString('<a class=\"toggle-expand\">显示全部</a></div><div class=\"question_content\" style=\"display: none;\">{0}</div><div class=\"question_actions\">',\n\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].content);\n\t\t\t\t\t\t\t\tstr += $.formatString(' <a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">{0}</span>条评论</a>',\n\t\t\t\t\t\t\t\t\t\t\t\tjson.rows[i].commentCount);\n\t\t\t\t\t\t\t\tstr += $.formatString('<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>');\n\t\t\t\t\t\t\t\tstr += $.formatString('<div style=\"float:right;\">{0}</div></div></li>',json.rows[i].questionDate);\n\t\t\t\t\t\t\t\t$('#ul_questionList').append(str);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$(\".question_expandable\")\n\t\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this).nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_collapse\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\n\t\t\t\t\t\t\t\t\t\t\t\t//创建评论区\n\t\t\t\t\t\t\t\t\t\t\t\tvar replybox = $(this).nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\").find(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_replybox\");\n\t\t\t\t\t\t\t\t\t\t\t\tif ($(replybox).length == 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"${ctx}/style/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treplyboxhtml);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t//折叠问题\n\t\t\t\t\t\t\t$(\".question_collapse\")\n\t\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parent(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.prevAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_content\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parent(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.nextAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_list\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parent(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_actions\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.prevAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".question_expandable\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t//点击已有评论的回复\n\t\t\t\t\t\t\t$(\".comment_reply\")\n\t\t\t\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t\tvar littlebox = $(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parent(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_footer\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.next(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_replylittlebox\");\n\t\t\t\t\t\t\t\t\t\t\t\tif ($(littlebox).length == 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.parents(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".comment_body\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treplyboxhtml);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t}\n\n\t\tfunction search_indistinct() {\n\t\t\t$(\"#current_page\").attr(\"currentpage\", 1);\n\t  \t\t$(\"#current_page\").text(1);\n\t\t\tgetData();\n\t\t}\n\n\t\t//展开问题\n\t\t$(\".question_expandable\")\n\t\t\t\t.click(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t$(this).nextAll(\".question_content\").show();\n\t\t\t\t\t\t\t$(this).nextAll(\".question_actions\").find(\n\t\t\t\t\t\t\t\t\t\".question_collapse\").show();\n\t\t\t\t\t\t\t$(this).nextAll(\".comment_list\").show();\n\n\t\t\t\t\t\t\t//创建评论区\n\t\t\t\t\t\t\tvar replybox = $(this).nextAll(\".comment_list\")\n\t\t\t\t\t\t\t\t\t.find(\".comment_replybox\");\n\t\t\t\t\t\t\tif ($(replybox).length == 0) {\n\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replybox\"><a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"${ctx}/style/images/noavatar_default.png\" alt=\"\"></a><div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replybox_toolbar\"><div class=\"replybox_gradient\"></div><button class=\"replybox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t$(this).nextAll(\".comment_list\").append(\n\t\t\t\t\t\t\t\t\t\treplyboxhtml);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t//折叠问题\n\t\t$(\".question_collapse\").click(\n\t\t\t\tfunction() {\n\t\t\t\t\t$(this).hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\n\t\t\t\t\t\t\t\".question_content\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\")\n\t\t\t\t\t\t\t.nextAll(\".comment_list\").hide();\n\t\t\t\t\t$(this).parent(\".question_actions\").prevAll(\n\t\t\t\t\t\t\t\".question_expandable\").show();\n\t\t\t\t});\n\n\t\t//点击已有评论的回复\n\t\t$(\".comment_reply\")\n\t\t\t\t.click(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tvar littlebox = $(this).parent(\".comment_footer\")\n\t\t\t\t\t\t\t\t\t.next(\".comment_replylittlebox\");\n\t\t\t\t\t\t\tif ($(littlebox).length == 0) {\n\t\t\t\t\t\t\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t\t\t\t\t\t\t$(this).parents(\".comment_body\").append(\n\t\t\t\t\t\t\t\t\t\treplyboxhtml);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t</script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/questionpage.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" >\n\t<link rel=\"shortcut icon\" href=\"./styles/images/ico.ico\" type=\"image/x-icon\" />\n\t<link href=\"./styles/index/themepark.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/default.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"./styles/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery-1.11.0.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.easing.1.3.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/jquery.lazyload.js\"></script>\n  <script type=\"text/javascript\" src=\"./scripts/index/pngtm.js\"></script> \n  <script type=\"text/javascript\" src=\"./scripts/index/lrscroll.js\"></script> \n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n<div id=\"wpthemedemobar\" style=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n<div class=\"wpthemedemobar_wrapper\">\n<div class=\"wptdb_right\">\n<a id=\"btnlogin\" href=\"login.html\">立即登录</a>\n<a id=\"btnregister\" href=\"register.html\">注册用户</a>\n<a id=\"btnlogout\" href=\"#\">退出</a>\n</div>\n<div class=\"wptdb_current\">当前登录用户：<span class=\"wptdb_themename\">超级门户</span></div></div>\n</div>\n\n   <!-- start:头部导航 -->\n   <div id=\"header\">\n            <div id=\"header_in\">\n                <img src=\"./styles/images/logo.png\"/>\n            </div>\n            <div id=\"nav\">\n            <a class=\"home_url\"></a>\n            <div class=\"menu-dai_you_she_qu_de_dao_hang_cai_dan-container\">\n            <ul id=\"menu-dai_you_she_qu_de_dao_hang_cai_dan\" class=\"menu_nav\">\n            \t\t<li id=\"menu-item-253\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-253\"><a href=\"./index.html\">首页</a><div class=\"hover\"></div></li>\n\t\t\t\t<li id=\"menu-item-254\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-254\"><a href=\"./articlelist.html\">最新新闻</a> <div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-260\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-260\"><a href=\"./informationlist.html\">通知公告</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-261\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-261 current-menu-item\"><a href=\"./questionlist.html\">在线交流</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-262\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-262\"><a href=\"./\">视频会议</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-263\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-263\"><a href=\"./\">农业物联网</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t\t\t\t<li id=\"menu-item-264\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category menu-item-264\"><a href=\"./personalcenter.html\">个人中心</a><div class=\"hover\" style=\"display: none;\"></div></li>\n\t \t</ul>\n\t</div>            \n   </div>\n<script>\n$('#nav .menu_nav li').not(\".sub-menu li\").append('<div class=\"hover\"><\\/div>');\n$('#nav .menu_nav li .sub-menu li').children(\"ul\").addClass(\"block\")\n$('#nav .menu_nav li').hover(\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeIn('200');},\nfunction() {\n$(this).children(\".sub-menu\").not(\".block\").stop(true, true).fadeOut('1000');\n\t}\n)\n$('#nav .menu_nav li').not(\".current-menu-item,.current-menu-ancestor,.current-category-ancestor\").hover(\nfunction() {\n$(this).children('.hover').stop(true, true).fadeIn('200');\n},\nfunction() {\n$(this).children('.hover').stop(true, true).fadeOut('1000');\n});            \n</script>\n\t\t</div>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"index.html\">首页</a> <a> &gt; </a><a href=\"./questionlist.html\"> 在线交流</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询提问-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的内容...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n<li>\n\t<a href=\"askquestionpage.html\" target=\"_blank\"><button class=\"askquestion\" id=\"btn_askquestion\">提问</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询提问-->\n\n<!--head:扁平图标导航-->\n<div class=\"widget func_nav\">\n   <div class=\"widge_hd\">\n   <span>\n       <b>功能导航</b><p>Function</p>\n   </span>\n   </div>\n<ul>\n<li><a href=\"./countrysidelist.html\"><img src=\"./styles/images/xiaxiang_nav.png\"></a></li>\n<li><a href=\"./performancelist.html\"><img src=\"./styles/images/jixiao_nav.png\"></a></li>\n<li><a href=\"./knowledgedata.html\"><img src=\"./styles/images/zhishiku_nav.png\"></a></li>\n<li><a href=\"./questionlist.html\"><img src=\"./styles/images/wenda_nav.png\"></a></li>\n</ul>\n</div>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n<div class=\"widget\" id=\"widget_question\">\n\t\t<a class=\"question_title\" href=\"./\">【养猪】求救，家里的猪最近总是没食欲</a>\n\t\t<div class=\"question_content\">\n朱元璋御膳菜单：\n早膳：羊肉炒、猪肉炒黄菜、蒸猪蹄肚、两熟煎鲜鱼、香米饭、豆汤、泡茶。（话说早晨吃这么多荤的真没问题？）\n午膳：胡椒醋鲜虾、烧鹅、燌羊头蹄、鹅肉巴子、咸鼓芥末羊肚盘、蒜醋白血汤、五味蒸鸡、元汁羊骨头、糊辣醋腰子、蒸鲜鱼、羊肉水晶角儿、椒末羊肉、香米饭、蒜酪、三鲜汤、豆汤、泡茶。\n\n万历皇帝御膳菜单：\n米面食：八宝馒头、攒馅馒头、蒸卷、海清卷子、蝴蝶卷子；大蒸饼、椒盐饼、夹糖饼、芝麻烧饼、奶皮烧饼、薄脆饼、灵芝饼；枣糕、白馓子、糖馓子、芝麻象眼减煠；鸡蛋面、白切面、水晶饭。\n肉食：烧天鹅（天鹅……）、烧鹅、清蒸鸡、暴腌鸡、川炒鸡、烧肉、白煮肉、清蒸肉、猪屑骨、荔枝猪肉、鲟鳇鲊、蒸鱼、猪耳脆、煮鲜肫肝、玉丝肚肺、蒸羊、燌羊。\n汤品：牡丹头汤、鸡脆饼汤、猪肉龙松汤、玛瑙糕子汤、锦丝糕子汤、木樨糕子汤、酸甜汤、葡萄汤、蜜汤、牛奶。\n【谢评论区 @杨海晨 提醒，煮鲜肫肝并不是猪内脏，我一个天天吃鸭肫的竟然忘了没有猪肫这种说法……】\n\n永乐二年郊祀结束后的庆成宴菜单：\n上卓：按酒五般。果子五般。茶食五般。烧煠五般。汤三品。双下馒头。马肉饭。酒五钟。\n中卓：按酒四般。果子四般。汤三品。双下馒头。马猪羊肉饭（神一般的荤菜三拼？）。酒五钟。\n随驾将军：按酒一般。粉汤。双下馒头猪肉饭。酒一钟。\n\t\t\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">24</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">6</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t\t\t<!--head:评论区域-->\n\t\t <div class=\"comment_list\">\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul>\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>为什么没有图片的文章，主页有乱码？</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t<!--head:一条评论主体-->\n\t\t\t<li class=\"commentitem\">\n\t\t\t\t<div class=\"comment_post\">\n\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t<a target=\"_blank\" href=\"#\" title=\"几尼\">\n\t\t\t\t\t\t\t<img src=\"./styles/images/noavatar_default.png\" alt=\"几尼\">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comment_body\">\n\t\t\t\t\t\t<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">几尼</a></div>\n\t\t\t\t\t\t<!--head:评论内容-->\n\t\t\t\t\t\t<p>楼主你好，非常赞同你的观点。</p>\n\t\t\t\t\t\t<!--end:评论内容-->\n\t\t\t\t\t\t<div class=\"comment_footer\">\n\t\t\t\t\t\t\t<span class=\"comment_time\" title=\"2016年7月10日 19:08:52\">7月10日</span>\n\t\t\t\t\t\t\t<a class=\"comment_reply\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a>\n\t\t\t\t\t\t\t<a class=\"comment_likes\" href=\"javascript:void(0);\"><span class=\"comment_icon comment_icon_like\"></span>顶</a>\n\t\t\t\t\t\t\t<span class=\"comment_likes_count\">5赞</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<!--end:一条评论主体-->\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t\t<a data-page=\"1\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t\t\t\t\t<a data-page=\"2\" href=\"javascript:void(0);\">2</a>\n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t\t<div class=\"comment_replybox\">\n\t\t\t\t<a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a>\n\t\t\t\t<div class=\"replybox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div>\n\t\t\t\t<div class=\"replybox_toolbar\">\n\t\t\t\t\t<div class=\"replybox_gradient\"></div>\n\t\t\t\t\t<button class=\"replybox_button\" type=\"submit\">评论</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!--end:评论区域-->\n<script>\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar replyboxhtml = '<div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"message\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n<!--head:底部信息-->\n<div id=\"footer\">\n\t<div id=\"footer_in\">\n\t\t<div class=\"footer_shadow\"></div>\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n                <p>地址：广州市天河区五山华南农业大学</p>\n\t\t</div>\t  \n\t</div>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"./scripts/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"./scripts/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/questionpage.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t <jsp:include page=\"../inc.jsp\"></jsp:include>\n\t <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <base href=\"<%=basePath%>\">\n    <jsp:include page=\"./inc-head.jsp\"></jsp:include>\n\t<link href=\"${ctx}/style/index/comment.css\" rel=\"stylesheet\" media=\"screen\">\n\t<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n    <script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n\t <script type=\"text/javascript\" src=\"${ctx}/jslib/index/jquery.easing.1.3.js\"></script>\n\t  <script type=\"text/javascript\" src=\"${ctx}/jslib/index/lrscroll.js\"></script> \n\t\n\t<script>\n\t\tvar arg = {\n\tpage :\"1\",\n\trows :\"10\",\n\tsort :\"autoID\",\n\torder:\"desc\",\n\tquestionID:\"${question.autoID}\"\n    };\n\t\n\t$(function(){\n\t$('#commentform').form({\n\t\t    url:'${ctx}/front/web/communicate/comment/add',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\twindow.location.href='${ctx}/front/web/communicate/base/getQuestionPage?id=${question.autoID}';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t\t\n\t\t\t\n\t});\n\tgetcomment();\n\tfunction getcomment()\n    {\n\t\n\t\t$.ajax({\n\t\turl:'${ctx}/front/web/communicate/base/getCommentList',\n\t\tdata:arg,\n\t\tcache:true,\n\t\tdataType:'json',\n\t\tsuccess:function(data){\n\t\t\t$(\"#ul_commentList\").empty();\n\t\t\t\tfor(var e in data.obj)\n\t\t\t\t{\n\t\t\t\tvar str = '';\n\t\t\t\t str += $.formatString('<li class=\"commentitem\"><div class=\"comment_post\"><div class=\"avatar\"><a target=\"_blank\" href=\"#\" title=\"{0}\">',data.obj[e].commentName);\n\t\t\t\t str += $.formatString('<img src=\"./styles/images/noavatar_default.png\" alt=\"{0}\"></a></div><div class=\"comment_body\">',data.obj[e].commentName);\n\t\t\t\t str += $.formatString('<div class=\"comment_header\"><a class=\"user_name\" href=\"#\" target=\"_blank\">{0}</a></div><p>{1}</p><div class=\"comment_footer\"><span class=\"comment_time\" title=\"\">${n.createDate}</span>',data.obj[e].commentName,data.obj[e].content);\n\t\t         str += $.formatString('<a class=\"comment_reply\" href=\"javascript:void(0);\" rel=\"{0}\"><span class=\"comment_icon comment_icon_reply\"></span>回复</a></div></div></div></li>',data.obj[e].autoID);\n\t\t\t\t $('#ul_commentList').append(function(){return str;} );\n\t\t\t\t}\n\t\t\t\t$(\".comment_reply\").click(function(){\n\t\t\t\t    var littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\t\t\t\t\tif($(littlebox).length == 0){\n\t\t\t\t\t\tvar cID=$(this).attr(\"rel\");\n\t\t\t\t\t\tvar input1='<input type=\"hidden\" name=\"commentID\" value=\"'+cID+'\">';\n\t\t\t\t\t\tvar replyboxhtml = '<form method=\"post\" id=\"replycommentform\">'+input1+'<input type=\"hidden\" name=\"questionID\" value=\"${question.autoID}\"></input></input><div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"content\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div></form>';\n\t\t\t\t\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t\t\t\t\t\t\n\t\t\t\t\t\t$('#replycommentform').form({\n\t\t\t\t\t\t\turl:'${ctx}/front/web/communicate/comment/add',\n\t\t\t\t\t\t\tonSubmit : function() {\n\t\t\t\t\t\t\t\tprogressLoad();\n\t\t\t\t\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\t\t\t\t\tif(!isValid){\n\t\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn isValid;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess:function(result){\n\t\t\t\t\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t\t\twindow.location.href='${ctx}/front/web/communicate/base/getQuestionPage?id=${question.autoID}';\n\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t$.messager.show({\n\t\t\t\t\t\t\t\t\t\ttitle:'提示',\n\t\t\t\t\t\t\t\t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t\t\t\t\t\t\t\t\tshowType:'show'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t$(littlebox).show();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\n\t\t\t\n\t\t}\n\t});\n    }\n\tfunction pageing(ifup)\n{\n\tif(ifup==1)\n\t{\n\t\tif(arg.page==1)\n\t\t{\n\t\t\talert(\"已经是首页\");\n\t\t\treturn ;\n\t\t}\n\t\telse\n\t\t{\n\t\t\targ.page--;\n\t\t}\n\t}\n\telse\n\t{\n\t\targ.page++;\n\t}\n\tgetcomment();\n}\n\t\n\t</script>\n\t\n</head>\n<body class=\"page page-id-2 page-parent page-template page-template-aboutus page-template-aboutus-php\">\n\n <!--start 登录注册浮动栏 -->\n    <jsp:include page=\"./wpthemedemobar.jsp\"></jsp:include>\n <!-- end 登录注册浮动栏 -->\n\n   <!-- start:头部导航 -->\n  <jsp:include page=\"./header.jsp\"></jsp:include>\n  <!-- end:头部导航-->\n\n<!--head:所在位置-->\n<div id=\"page_muen_nav\">  <b>您现在所在的位置：</b><a href=\"${ctx}/front/web/base/index\">首页</a> <a> &gt; </a><a href=\"${ctx}/front/web/communicate/getQuestionList\"> 在线交流</a></div>\n<!--end:所在位置-->\n\n<!--head:内容项目-->\n<div id=\"content\">\n\n<!--head:左侧内容-->\n<div class=\"left_mian\"> \n<!--head:查询提问-->\n<div class=\"widget\">\n<ul>\n<li>\n\t<div class=\"searchbox\">\n\t\t<input type=\"text\" id=\"input_search\" autocomplete=\"off\" value=\"\" placeholder=\"搜索你感兴趣的内容...\">\n\t\t<button id=\"btn_search\"><i class=\"search_icon\"></i></button>\n\t</div>\n</li>\n<li>\n\t<a href=\"${ctx}/front/web/communicate/getAskQuestionPage\" target=\"_blank\"><button class=\"askquestion\" id=\"btn_askquestion\">提问</button></a>\n</li>\n</ul>\n</div>\n<!--end:查询提问-->\n\n<!--head:扁平图标导航-->\n  <jsp:include page=\"./navigation.jsp\"></jsp:include>\n<!--head:扁平图标导航-->\n\n</div>\n<!--end:左侧内容-->\n\n\n<!--head:右侧内容-->\n<div class=\"right_mian\">\n\n\n<div class=\"widget\" id=\"widget_question\">\n    <c:if test=\"${!empty resourceMetaList}\">\n    <!--head:文章开头的图片集-->\n\t\t<div id=\"enter_xz\" class=\"smaoll_xzs\" style=\"visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; width: 600px;\">\n        \t\t<ul id=\"gallery-1\" class=\"gallery_xz\" style=\"margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; width: 4200px; left: -3000px;\">\n        \t\t\t\n\t\t\t    \n\t\t\t\t  <c:forEach items=\"${resourceMetaList}\" var=\"e\">\n\t\t\t\t\t <li class=\"gallery-item\" style=\"overflow: hidden; float: left; width: 600px; height: 400px;\">\n\t\t\t\t\t   <a><img src=\"${e.metaPath}\"></a>\n\t\t\t\t     </li>\n\t\t\t\t  </c:forEach>\n\t\t\t\t\n             </ul>\n             <a class=\"next\" style=\"right: -100px;\"></a><a class=\"prve\" style=\"left: -100px;\"></a>\n       </div>\n\t<!--end:文章开头的图片集-->\n\t</c:if>\n\t\n\t\t<a class=\"question_title\" >${question.title}</a>\n\t\t<div class=\"question_content\">\n\t\t${question.content}\t\n\t\t</div>\n\t\t<div class=\"question_actions\">\n\t\t\t<a class=\"comments_count\"><i class=\"icon_comment\"></i><span class=\"highlight\">${question.commentCount}</span>条评论</a>\n\t\t\t<a class=\"like_count\"><i class=\"icon_like\"></i><span class=\"highlight\">${question.likeCount}</span>个喜欢</a>\n\t\t\t<button class=\"question_collapse\" style=\"display: none;\"><i></i>收起</button>\n\t\t</div>\n\t\t\t<!--head:评论区域-->\n\t\t <div class=\"comment_list\">\n\t\t\t<!--head:评论列表-->\n\t\t\t<ul id=\"ul_commentList\">\t\t\n\t\t\t\n\t\t\t</ul>\n\t\t\t<!--end:评论列表-->\n\t\t\t<!--head:评论分页-->\n\t\t\t<div class=\"comment_paginator\">\n\t\t\t\t    <a  href=\"javascript:pageing(1);\">上一页</a>\n\t               <a  id=\"now_page\" href=\"javascript:void(0);\" class=\"paginator_current\">1</a> \n\t               <a  href=\"javascript:pageing(0);\">下一页</a> \n\t\t\t</div>\n\t\t\t<!--end:评论分页-->\n\t\t\t<form method=\"post\" id=\"commentform\">\n\t\t\t<input type=\"hidden\" name=\"questionID\" value=\"${question.autoID}\"></input>\n\t\t\t<input type=\"hidden\" name=\"commentID\" value=\"0\"></input>\n\t\t\t<div class=\"comment_replybox\">\n\t\t\t\t<a class=\"replybox_avatar\" href=\"javascript:void(0);\" onclick=\"return false\"><img src=\"./styles/images/noavatar_default.png\" alt=\"\"></a>\n\t\t\t\t<div class=\"replybox_textarea\"><textarea name=\"content\" placeholder=\"写下你的评论…\"></textarea></div>\n\t\t\t\t<div class=\"replybox_toolbar\">\n\t\t\t\t\t<div class=\"replybox_gradient\"></div>\n\t\t\t\t\t<button class=\"replybox_button\" type=\"submit\">评论</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t\t<!--end:评论区域-->\n<script>\n//点击已有评论的回复\n$(\".comment_reply\").click(function(){\n\tvar littlebox = $(this).parent(\".comment_footer\").next(\".comment_replylittlebox\");\n\tif($(littlebox).length == 0){\n\t\tvar cID=$(this).attr(\"rel\");\n\t\tvar input1='<input type=\"hidden\" name=\"commentID\" value=\"'+cID+'\">';\n\t\tvar replyboxhtml = '<form method=\"post\" id=\"replycommentform\">'+input1+'<input type=\"hidden\" name=\"questionID\" value=\"${question.autoID}\"></input></input><div class=\"comment_replylittlebox\"><div class=\"replylittlebox_textarea\"><textarea name=\"content\" placeholder=\"写下你的评论…\"></textarea></div><div class=\"replylittlebox_toolbar\"><div class=\"replylittlebox_gradient\"></div><button class=\"replylittlebox_button\" type=\"submit\">评论</button></div></div></form>';\n\t\t$(this).parents(\".comment_body\").append(replyboxhtml);\n\t\t\n\t\t$('#replycommentform').form({\n\t\t    url:'${ctx}/front/web/communicate/comment/add',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\twindow.location.href='${ctx}/front/web/communicate/base/getQuestionPage?id=${question.autoID}';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t\t\n\t}\n\telse{\n\t\t$(littlebox).show();\n\t}\n});\n</script>\n</div>\n\n</div>\n<!--end:右侧内容-->\n\n</div>  \n<!--end:内容项目-->\n\n\n<!--head:底部信息-->\n  <jsp:include page=\"./footer.jsp\"></jsp:include>\n<!--end:底部信息-->\n\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/thickbox.js\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/index/themepark.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/register.html",
    "content": "<!DOCTYPE html>\n<html class=\"fluid sticky-sidebar\"><!-- <![endif]-->\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>\n\t免费注册\n</title>\n    <!-- Meta -->\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\">\n    <link href=\"./styles/register/main.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"./styles/register/signin.css\" rel=\"stylesheet\" type=\"text/css\">\n    <style>\n        .logo\n        {\n            float: left;\n        }\n        \n        .area\n        {\n            width: 1002px;\n            margin: 0px auto;\n        }\n        \n        a.btnf80, .btnf80\n        {\n            text-decoration: none;\n            float: left;\n            text-align: center;\n            border: 1px solid #f80;\n            border-top: 1px solid #fb3;\n            border-radius: 4px;\n            box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6);\n            color: #fff;\n            text-shadow: 0 1px 1px rgba(0,0,0,.3);\n            background: #f80;\n            background: -webkit-gradient(linear, left top, left bottom, from(#ffbb33),to(#ff8800));\n            background: -moz-linear-gradient( top, #ffbb33, #ff8800);\n            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb33',endColorstr='#ff8800');\n        }\n    </style>\n</head>\n<body class=\"\">\n    <div class=\"head\">\n        <div id=\"headMenu\" class=\"area\">\n            <div style=\"width: 635px; margin: 0 auto;\">\n                <p style=\"float: left; margin-left: 222px; margin-top: 32px;\">\n                    <font class=\"xtdl\">免 费 注 册</font></p>\n                <p style=\"overflow: hidden; float: right; margin-top: 46px;\">\n                    <a href=\"login.html\" class=\"btnf80 login_convert\" style=\"float: right;\">立即登录</a>\n                </p>\n            </div>\n        </div>\n    </div>\n    <!-- Main Container Fluid -->\n    <div class=\"container-fluid fluid menu-left\">\n        <!-- Content -->\n        <div id=\"content\">\n            <div class=\"area\">\n                <table width=\"100%\">\n                    <tbody>\n                        <tr>\n                            <td width=\"100%\" height=\"450\" colspan=\"2\" align=\"center\" valign=\"middle\">\n                                <table>\n                                    <tbody>\n                                        <tr>\n                                            <td align=\"center\" valign=\"middle\">\n                                                <div class=\"area table_new\">\n                                                    <div class=\"content form\">\n                                                        <div class=\"table_content talbe_area2\">\n                                                            <form id=\"validateform1\" method=\"post\" action=\"\">\n                                                            <div class=\"bitian\" style=\"top: 15px; left: 60px;\">\n                                                                必填\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>账号名</strong><label id=\"spelogincode\" class=\"sp\" style=\"display: inline;\">账号名不能为空</label></span>\n                                                                        <span>\n                                                                            <input id=\"logincode\" name=\"logincode\" type=\"text\" placeholder=\"必填项\">\n                                                                            <font>由英文或数字组成，且首字符必须以英文字母开头</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"float: left;\">\n                                                                        <span><strong>密&nbsp;&nbsp;&nbsp;码</strong><label id=\"spepwd\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"pwd\" name=\"pwd\" type=\"password\" placeholder=\"必填项\">\n                                                                        </span>\n                                                                    </p>\n                                                                    <p style=\"float: right;\">\n                                                                        <span><strong>确认密码</strong><label id=\"spepwdconfirm\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"pwdconfirm\" name=\"pwdconfirm\" type=\"password\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div class=\"bitian\" style=\"top: 224px; left: 60px; width: 320px;\">\n                                                                必填.我们会通过以下方式为您提供更优质的服务.\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"float: left;\">\n                                                                        <span><strong>邮&nbsp;&nbsp;&nbsp;箱</strong><label id=\"speemail\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"email\" name=\"email\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                    <p style=\"float: right;\">\n                                                                        <span><strong>联系电话</strong><label id=\"specontactphone\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"contactphone\" name=\"contactphone\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>联系地址</strong><label id=\"spedetailaddr\" class=\"sp\"></label></span>\n                                                                        <span><span id=\"provincecity\" style=\"width: 260px;\"></span>\n                                                                            <input name=\"detailaddr\" id=\"detailaddr\" type=\"text\" placeholder=\"必填项\" style=\"width: 222px;\n                                                                                margin-top: 2px;\">\n                                                                        </span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div class=\"bitian\" style=\"top: 435px; left: 60px; width: 60px;\">\n                                                                验证码\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span>\n                                                                            <img src=\"api/authority/createvalidateimage.ashx\" id=\"validImg\" onclick=\"f_refreshtype()\" style=\"cursor: pointer;\" /><label\n                                                                                id=\"spevalidvalue\" class=\"sp\">填写的验证码错误</label></span> <span>\n                                                                                    <input id=\"validvalue\" name=\"validvalue\" type=\"text\" placeholder=\"输入验证码\" />\n                                                                                    <font>点击图片刷新验证码</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div>\n                                                                <input id=\"btn_register\" type=\"button\" onclick=\"register()\" value=\"立即注册\" class=\"login_btn\" style=\"margin: 20px auto 5px;\">\n                                                            </div>\n                                                            </form>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n        </div>\n        <!-- // Content END -->\n        <div id=\"footer\" class=\"hidden-print\">\n            <!--  Copyright Line -->\n            <div class=\"copy\">\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n            </div>\n            <!--  End Copyright Line -->\n        </div>\n        <!-- // Footer END -->\n    </div>\n    <!-- // Main Container Fluid END -->\n    <!-- JQuery -->\n    <script src=\"./scripts/register/jquery-1.10.1.min.js\" type=\"text/javascript\"></script>\n    <script src=\"./scripts/register/provincesdata.js\" type=\"text/javascript\"></script>\n    <script src=\"./scripts/register/jquery.provincesCity.js\" type=\"text/javascript\"></script>\n    <script src=\"./scripts/register/website.register.js\" type=\"text/javascript\"></script>\n\n\n</body></html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/register.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%\nString path = request.getContextPath();\nString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<!--[if lt IE 7]> <html class=\"ie lt-ie9 lt-ie8 lt-ie7 fluid sticky-top\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"ie lt-ie9 lt-ie8 fluid\"> <![endif]-->\n<!--[if IE 8]>    <html class=\"ie lt-ie9 fluid\"> <![endif]-->\n<!--[if gt IE 8]> <html class=\"ie gt-ie8 fluid\"> <![endif]-->\n<!--[if !IE]><!-->\n<html class=\"fluid\">\n<!-- <![endif]-->\n<head runat=\"server\">\n    <jsp:include page=\"../inc.jsp\"></jsp:include>\n\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n\t<title>\n\t免费注册\n</title>\n    <!-- Meta -->\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0\">\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9; IE=8; IE=7; IE=EDGE\">\n    <link href=\"${ctx}/style/register/main.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"${ctx}/style/register/signin.css\" rel=\"stylesheet\" type=\"text/css\">\n    <style>\n        .logo\n        {\n            float: left;\n        }\n        \n        .area\n        {\n            width: 1002px;\n            margin: 0px auto;\n        }\n        \n        a.btnf80, .btnf80\n        {\n            text-decoration: none;\n            float: left;\n            text-align: center;\n            border: 1px solid #f80;\n            border-top: 1px solid #fb3;\n            border-radius: 4px;\n            box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6);\n            color: #fff;\n            text-shadow: 0 1px 1px rgba(0,0,0,.3);\n            background: #f80;\n            background: -webkit-gradient(linear, left top, left bottom, from(#ffbb33),to(#ff8800));\n            background: -moz-linear-gradient( top, #ffbb33, #ff8800);\n            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb33',endColorstr='#ff8800');\n        }\n        \n        .Login_Button\n        {\n        \twidth: 78px; \n\t\t\theight: 43px; \n\t\t\tbackground: url(\"${ctx}/style/images/index/login_a.png\"); \n\t\t\tcursor: pointer;\n        }\n        \n        .Login_Button:hover\n        {\n        \tbackground: url(\"${ctx}/style/images/index/login_as.png\"); \n        }\n        \n        .Register_Button\n        {\n        \twidth: 173px; \n\t\t\theight: 43px; \n\t\t\tbackground: url(\"${ctx}/style/images/index/register_a.png\"); \n\t\t\tcursor: pointer;\n        }\n        \n        .Register_Button:hover\n        {\n        \tbackground: url(\"${ctx}/style/images/index/register_as.png\"); \n        }\n    </style>\n\t\n</head>\n<body class=\"\">\n    <div class=\"head\">\n        <div id=\"headMenu\" class=\"area\">\n            <div style=\"width: 635px; margin: 0 auto;\">\n                <p style=\"float: left; margin-left: 222px; margin-top: 32px;\">\n                    <font class=\"xtdl\" style=\"color: #26B76D;\">免 费 注 册</font></p>\n                <a href=\"${ctx}/front/web/base/getLoginPage\" style=\"float: right;margin-top: 45px;\"><div class=\"Login_Button\"></div></a>\n            </div>\n        </div>\n    </div>\n    <!-- Main Container Fluid -->\n    <div class=\"container-fluid fluid menu-left\">\n        <!-- Content -->\n        <div id=\"content\">\n            <div class=\"area\">\n                <table width=\"100%\">\n                    <tbody>\n                        <tr>\n                            <td width=\"100%\" height=\"450\" colspan=\"2\" align=\"center\" valign=\"middle\">\n                                <table>\n                                    <tbody>\n                                        <tr>\n                                            <td align=\"center\" valign=\"middle\">\n                                                <div class=\"area table_new\">\n                                                    <div class=\"content form\">\n                                                        <div class=\"table_content talbe_area2\">\n                                                            <form id=\"validateform1\" method=\"post\" action=\"\">\n                                                            <div class=\"bitian\" style=\"top: 15px; left: 60px;\">\n                                                                必填\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>账号名</strong><label id=\"spelogincode\" class=\"sp\" style=\"display: inline;\">账号名不能为空</label></span>\n                                                                        <span>\n                                                                            <input id=\"logincode\" name=\"logincode\" type=\"text\" placeholder=\"必填项\">\n                                                                            <font>由英文或数字组成，且首字符必须以英文字母开头</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"float: left;\">\n                                                                        <span><strong>密&nbsp;&nbsp;&nbsp;码</strong><label id=\"spepwd\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"pwd\" name=\"pwd\" type=\"password\" placeholder=\"必填项\">\n                                                                        </span>\n                                                                    </p>\n                                                                    <p style=\"float: right;\">\n                                                                        <span><strong>确认密码</strong><label id=\"spepwdconfirm\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"pwdconfirm\" name=\"pwdconfirm\" type=\"password\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div class=\"bitian\" style=\"top: 224px; left: 60px; width: 320px;\">\n                                                                必填.我们会通过以下方式为您提供更优质的服务.\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    <p style=\"float: left;\">\n                                                                        <span><strong>姓&nbsp;&nbsp;&nbsp;名</strong></span>\n                                                                        <span>\n                                                                            <input id=\"realName\" name=\"realName\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p style=\"float: right;\">\n                                                                        <span><strong>年&nbsp;&nbsp;&nbsp;龄</strong></span>\n                                                                        <span>\n                                                                            <input id=\"age\" name=\"age\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                    <p style=\"float: left;\">\n                                                                        <span><strong>邮&nbsp;&nbsp;&nbsp;箱</strong><label id=\"speemail\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"email\" name=\"email\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n\n                                                                    <p style=\"float: right;\">\n                                                                        <span><strong>联系电话</strong><label id=\"specontactphone\" class=\"sp\"></label></span>\n                                                                        <span>\n                                                                            <input id=\"contactphone\" name=\"contactphone\" type=\"text\" placeholder=\"必填项\"></span>\n                                                                    </p>\n                                                                </div>\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span><strong>联系地址</strong><label id=\"spedetailaddr\" class=\"sp\"></label></span>\n                                                                        <span><span id=\"provincecity\" style=\"width: 370px;\"></span>\n                                                                            <!--  <input name=\"detailaddr\" id=\"detailaddr\" type=\"text\" placeholder=\"必填项\" style=\"width: 222px;\n                                                                                margin-top: 2px;\">-->\n                                                                            <input name=\"detailaddr\" id=\"detailaddr\" type=\"text\" placeholder=\"详细地址\" style=\"width: 350px;\n                                                                                margin-top: 2px;\">\n                                                                        </span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div class=\"bitian\" style=\"top: 510px; left: 60px; width: 60px;\">\n                                                                验证码\n                                                            </div>\n                                                            <div class=\"detail\">\n                                                                <div>\n                                                                    <p style=\"width: 100%;\">\n                                                                        <span>\n                                                                            <img src=\"${ctx}/baseUtil/getCheckCode\" id=\"validImg\" onclick=\"f_refreshtype()\" style=\"cursor: pointer;\" /><label\n                                                                                id=\"spevalidvalue\" class=\"sp\">填写的验证码错误</label></span> <span>\n                                                                                    <input id=\"validvalue\" name=\"validvalue\" type=\"text\" placeholder=\"输入验证码\" />\n                                                                                    <font>点击图片刷新验证码</font> </span>\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                            <div>\n                                                            \t<div style=\"margin: 0 auto; width: 173px; float:none;\">\n                                                            \t\t<a href=\"javascript:register();\">\n\t                                                            \t\t<div class=\"Register_Button\"></div>\n\t                                                            \t</a>\n                                                            \t</div>\n                                                                <!-- <input id=\"btn_register\" type=\"button\" onclick=\"register()\" value=\"立即注册\" class=\"login_btn\" style=\"margin: 20px auto 5px;\"> -->\n                                                            </div>\n                                                            </form>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n        </div>\n        <!-- // Content END -->\n        <div id=\"footer\" class=\"hidden-print\">\n            <!--  Copyright Line -->\n            <div class=\"copy\">\n                <p> 版权所有： SCAU Copyright © 2015华南农业大学.All rights reserved.   |   粤ICP备05008874号 　备案编号：4401060500010</p>\n            </div>\n            <!--  End Copyright Line -->\n        </div>\n        <!-- // Footer END -->\n    </div>\n    <!-- // Main Container Fluid END -->\n    <!-- JQuery -->\n  \n    <script src=\"${ctx}/jslib/register/provincesdata.js\" type=\"text/javascript\"></script>\n    <script src=\"${ctx}/jslib/register/jquery.provincesCity.new.js\" type=\"text/javascript\"></script>\n    <script src=\"${ctx}/jslib/register/website.register.js\" type=\"text/javascript\"></script>\n\t\n\n\n</body></html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/showvideopage.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<!-- saved from url=(0043)http://player.youku.com/embed/XNzI4MjMxNTUy -->\n<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n    <title>Youku Universal Player</title>\n    \n    <style>\n        html, body { height:100%; }\n        body { margin:0; }\n    </style>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"play.css\"></head>\n<body>\n<div id=\"youku-playerBox\" style=\"width:100%;height:100%;\"><object type=\"application/x-shockwave-flash\" data=\"http://player.youku.com/player.php/sid/XNzYyNTk2ODIw/v.swf\" width=\"100%\" height=\"100%\" id=\"youku-player\"><param name=\"allowFullScreen\" value=\"true\"><param name=\"allowScriptAccess\" value=\"always\"><param name=\"movie\" value=\"http://player.youku.com/player.php/sid/XNzYyNTk2ODIw/v.swf\"><param name=\"flashvars\" value=\"imglogo=&amp;paid=0&amp;partnerId=0edbfd2e4fc91b72\"></object></div>\n<script id=\"_youkujs_\" type=\"text/javascript\" src=\"jsapi\"></script>\n<script language=\"javascript\">\n    // var wh = { };\n    window.onload = function(){\n        /*wh = function () {\n         var dimension = {};\n         dimension.width = window.innerWidth;\n         dimension.height = window.innerHeight;\n         //console.log(dimension);\n         return dimension;\n\n         }();*/\n\n     //   <!-- 这个页面是直接内嵌的，第三方用户不需要管 -->\n     //   <!-- 目前不支持starttime等动作参数 -->\n        var script = document.getElementById('_youkujs_');\n        script.src = 'http://player.youku.com/jsapi';\n        script.onload = script.onreadystatechange = function(){\n\n            if(!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'){\n                var _QS = QS();\n                /*QS.width = QS.width ? QS.width : wh.width;\n                 QS.height = QS.height ? QS.height :wh.height;*/\n                var arr = window.location.pathname.split('/');\n                if(arr.length == 3 && arr[1] == 'embed' && arr[2].charAt(0) == 'X' ){\n                    _QS.vid = arr[2];\n                }\n                if(_QS.target == null ) _QS.target = \"youku-playerBox\";\n                if(_QS.client_id == null) _QS.client_id = \"0edbfd2e4fc91b72\";//\"youkuind_\";\n                var _select = new YoukuPlayerSelect(_QS);\n                _select.select();\n            }\n        };\n    };\n</script>\n\n\n</body></html>"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/front/wpthemedemobar.jsp",
    "content": "<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme() + \"://\"\n\t\t\t+ request.getServerName() + \":\" + request.getServerPort()\n\t\t\t+ path + \"/\";\n%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<!--start: not login-->\n<c:if test=\"${sessionInfo==null && false}\">\n\t<div id=\"wpthemedemobar\"\n\t\tstyle=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n\t\t<div class=\"wpthemedemobar_wrapper\">\n\t\t\t<div class=\"wptdb_right\">\n\t\t\t\t<a style=\"float:left;\" href=\"${ctx}/front/web/base/getLoginPage\"><div id=\"btnlogin\"></div></a> \n\t\t\t\t<a style=\"float:left;\" href=\"${ctx}/front/web/base/getRegister\"><div id=\"btnregister\"></div> </a>\n\t\t\t</div>\n\t\t\t<div class=\"wptdb_current\">\n\t\t\t\t当前：<span class=\"wptdb_themename\">未登录</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</c:if>\n<!--end: not login-->\n<!--start: have login-->\n\n<c:if test=\"${sessionInfo!=null && false}\">\n\t<div id=\"wpthemedemobar\"\n\t\tstyle=\"position:fixed!important;_position:absolute; _top:expression(eval(document.documentElement.scrollTop+0)); top:0px; z-index:99999;\">\n\t\t<div class=\"wpthemedemobar_wrapper\">\n\t\t\t<div class=\"wptdb_right\">\n\n\t\t\t\t<a style=\"float:left;\" href=\"${ctx}/front/web/expert/logout\"><div id=\"btnlogout\"></div>\n\t\t\t\t</a>\n\n\t\t\t</div>\n\t\t\t<div class=\"wptdb_current\">\n\t\t\t\t<span class=\"wptdb_themename\"></span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</c:if>\n<!--end: not login-->\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/inc.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<link rel=\"shortcut icon\" href=\"${ctx}/style/images/index/favicon.png\" />\n<!-- 引入my97日期时间控件 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/My97DatePicker/WdatePicker.js\" charset=\"utf-8\"></script>\n\n<!-- 引入jQuery -->\n<script src=\"${ctx}/jslib/jquery-1.8.3.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<!-- xheditor -->\n<script src=\"${ctx}/jslib/xheditor/xheditor-1.2.2.min.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/xheditor/xheditor_lang/zh-cn.js\" type=\"text/javascript\"></script>\n\n<!-- 引入EasyUI -->\n<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"${ctx}/jslib/easyui1.3.3/themes/<c:out value=\"${cookie.easyuiThemeName.value}\" default=\"default\"/>/easyui.css\" type=\"text/css\">\n<script type=\"text/javascript\" src=\"${ctx}/jslib/easyui1.3.3/jquery.easyui.min.js\" charset=\"utf-8\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/easyui1.3.3/locale/easyui-lang-zh_CN.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/extEasyUI.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展Jquery -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/extJquery.js\" charset=\"utf-8\"></script>\n\n<!-- 自定义工具类 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/lightmvc.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI图标 -->\n<link rel=\"stylesheet\" href=\"${ctx}/style/lightmvc.css\" type=\"text/css\">\n\n\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/mogoList.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: DuLida\n  Date: 2016/10/20\n  Time: 16:12\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<html>\n<head>\n    <title>MongoList</title>\n</head>\n<body>\n<h1>Hello,MongoDB</h1>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/views/qq.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: stevenfen\n  Date: 2016/12/19\n  Time: 23:43\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<html>\n<head>\n    <title>QQ登录跳转</title>\n    <script src=\"http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js\" type=\"text/javascript\"></script>\n\n    <script type=\"text/javascript\">\n\n        //切割字符串转换参数表\n        function toParamMap(str){\n            var map = {};\n            var segs = str.split(\"&\");\n            for(var i in segs){\n                var seg = segs[i];\n                var idx = seg.indexOf('=');\n                if(idx < 0){\n                    continue;\n                }\n                var name = seg.substring(0, idx);\n                var value = seg.substring(idx+1);\n                map[name] = value;\n            }\n            return map;\n        }\n\n        //隐式获取url响应内容(JSONP)\n        function openImplict(url){\n            var script = document.createElement('script');\n            script.src = url;\n            document.body.appendChild(script);\n        }\n\n        //获得openid的回调\n        function callback(obj)\n        {\n            var openid = obj.openid;\n            $(\"#openid\").text(openid);\n\n            //跳转服务端登录url\n            var resulturl = \"http://160d6436o1.51mypc.cn/mongo/login/result\";\n            var accessToken = $(\"#accessToken\").text();\n\n            //向服务端传输access_token及openid参数\n            document.location.href=resulturl + \"?access_token=\" + accessToken + \"&openid=\" + openid;\n        }\n\n    </script>\n</head>\n<body>\n<p>AccessToken:<span id=\"accessToken\"></span>--ExpireIn<span id=\"expire\"></span></p>\n<p>OpenID:<span id=\"openid\"></span></p>\n\n<!-- 执行脚本 -->\n<script type=\"text/javascript\">\n\n    //应用的APPID\n    var appID = \"101375254\";\n\n    //登录授权后的回调地址，设置为当前url\n    var redirectURI = \"http://160d6436o1.51mypc.cn/mongo/login/index\";\n\n    //初始构造请求\n    if (window.location.hash.length == 0)\n    {\n        var path = 'https://graph.qq.com/oauth2.0/authorize?';\n        var queryParams = ['client_id=' + appID,\n            'redirect_uri=' + redirectURI,\n            'scope=' + 'get_user_info,list_album,upload_pic,add_feeds,do_like','response_type=token'];\n\n        var query = queryParams.join('&');\n        var url = path + query;\n        window.location.href= url;\n    }\n    //在成功授权后回调时location.hash将带有access_token信息，开始获取openid\n    else\n    {\n        //获取access token\n        var accessToken = window.location.hash.substring(1);\n        var map = toParamMap(accessToken);\n\n        //记录accessToken\n        $(\"#accessToken\").text(map.access_token);\n        $(\"#expire\").text(map.expires_in);\n\n        //使用Access Token来获取用户的OpenID\n        var path = \"https://graph.qq.com/oauth2.0/me?\";\n        var queryParams = ['access_token='+map.access_token, 'callback=callback'];\n        var query = queryParams.join('&');\n        var url = path + query;\n        openImplict(url);\n    }\n\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/WEB-INF/web.xml",
    "content": "<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n         xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd\"\n         version=\"3.1\">\n\n    <!--不加这句话的话项目启动默认首页为index，删除index.jsp也行-->\n    <welcome-file-list>\n        <welcome-file></welcome-file>\n    </welcome-file-list>\n\n    <servlet>\n        <servlet-name>springServlet</servlet-name>\n        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n        <init-param>\n            <param-name>contextConfigLocation</param-name>\n            <param-value>classpath:spring/spring-*.xml</param-value>\n        </init-param>\n        <load-on-startup>1</load-on-startup>\n    </servlet>\n    <servlet-mapping>\n        <servlet-name>springServlet</servlet-name>\n        <url-pattern>/</url-pattern>\n    </servlet-mapping>\n\n    <filter>\n        <filter-name>characterEncodingFilter</filter-name>\n        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n        <init-param>\n            <param-name>encoding</param-name>\n            <param-value>UTF-8</param-value>\n        </init-param>\n        <init-param>\n            <param-name>forceEncoding</param-name>\n            <param-value>true</param-value>\n        </init-param>\n    </filter>\n    <filter-mapping>\n        <filter-name>characterEncodingFilter</filter-name>\n        <url-pattern>/*</url-pattern>\n    </filter-mapping>\n\n    <!-- 防止内存溢出监听器 -->\n    <listener>\n        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>\n    </listener>\n    <!-- 配置静态资源不经过spring mvc -->\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.css</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.html</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.js</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.json</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.gif</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.png</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.jpeg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.jpg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.ico</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.doc</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.xls</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.docx</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.xlsx</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.txt</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.swf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.mp4</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.apk</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.otf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.woff</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.ttf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.svg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.eot</url-pattern>\n    </servlet-mapping>\n    <!-- 配置session超时时间，单位分钟 -->\n    <session-config>\n        <session-timeout>60</session-timeout>\n    </session-config>\n\n    <!-- 设置欢迎页面 -->\n    <welcome-file-list>\n        <welcome-file>/index.jsp</welcome-file>\n    </welcome-file-list>\n\n    <!-- 找不到页错误转向 -->\n    <error-page>\n        <error-code>404</error-code>\n        <location>/error/404.jsp</location>\n    </error-page>\n    <!-- 系统内部错误转向 -->\n    <error-page>\n        <error-code>500</error-code>\n        <location>/error/500.jsp</location>\n    </error-page>\n</web-app>\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap/css/bootstrap-fileupload.css",
    "content": ".btn-file {\n  position: relative;\n  overflow: hidden;\n  vertical-align: middle;\n}\n\n.btn-file > input {\n  position: absolute;\n  top: 0;\n  right: 0;\n  margin: 0;\n  font-size: 23px;\n  cursor: pointer;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  transform: translate(-300px, 0) scale(4);\n  direction: ltr;\n}\n\n.fileupload {\n  margin-bottom: 9px;\n}\n\n.fileupload .uneditable-input {\n  display: inline-block;\n  margin-bottom: 0;\n  vertical-align: middle;\n  cursor: text;\n}\n\n.fileupload .thumbnail {\n  display: inline-block;\n  margin-bottom: 5px;\n  overflow: hidden;\n  text-align: center;\n  vertical-align: middle;\n}\n\n.fileupload .thumbnail > img {\n  display: inline-block;\n  max-height: 100%;\n  vertical-align: middle;\n}\n\n.fileupload .btn {\n  vertical-align: middle;\n}\n\n.fileupload-exists .fileupload-new,\n.fileupload-new .fileupload-exists {\n  display: none;\n}\n\n.fileupload-inline .fileupload-controls {\n  display: inline;\n}\n\n.fileupload-new .input-append .btn-file {\n  -webkit-border-radius: 0 3px 3px 0;\n     -moz-border-radius: 0 3px 3px 0;\n          border-radius: 0 3px 3px 0;\n}\n\n.thumbnail-borderless .thumbnail {\n  padding: 0;\n  border: none;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.fileupload-new.thumbnail-borderless .thumbnail {\n  border: 1px solid #ddd;\n}\n\n.control-group.warning .fileupload .uneditable-input {\n  color: #a47e3c;\n  border-color: #a47e3c;\n}\n\n.control-group.warning .fileupload .fileupload-preview {\n  color: #a47e3c;\n}\n\n.control-group.warning .fileupload .thumbnail {\n  border-color: #a47e3c;\n}\n\n.control-group.error .fileupload .uneditable-input {\n  color: #b94a48;\n  border-color: #b94a48;\n}\n\n.control-group.error .fileupload .fileupload-preview {\n  color: #b94a48;\n}\n\n.control-group.error .fileupload .thumbnail {\n  border-color: #b94a48;\n}\n\n.control-group.success .fileupload .uneditable-input {\n  color: #468847;\n  border-color: #468847;\n}\n\n.control-group.success .fileupload .fileupload-preview {\n  color: #468847;\n}\n\n.control-group.success .fileupload .thumbnail {\n  border-color: #468847;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap/js/bootstrap-fileupload.js",
    "content": "/* ===========================================================\n * bootstrap-fileupload.js j2\n * http://jasny.github.com/bootstrap/javascript.html#fileupload\n * ===========================================================\n * Copyright 2012 Jasny BV, Netherlands.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_\n\n /* FILEUPLOAD PUBLIC CLASS DEFINITION\n  * ================================= */\n\n  var Fileupload = function (element, options) {\n    this.$element = $(element)\n    this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? \"image\" : \"file\")\n      \n    this.$input = this.$element.find(':file')\n    if (this.$input.length === 0) return\n\n    this.name = this.$input.attr('name') || options.name\n\n    this.$hidden = this.$element.find('input[type=hidden][name=\"'+this.name+'\"]')\n    if (this.$hidden.length === 0) {\n      this.$hidden = $('<input type=\"hidden\" />')\n      this.$element.prepend(this.$hidden)\n    }\n\n    this.$preview = this.$element.find('.fileupload-preview')\n    var height = this.$preview.css('height')\n    if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)\n\n    this.original = {\n      'exists': this.$element.hasClass('fileupload-exists'),\n      'preview': this.$preview.html(),\n      'hiddenVal': this.$hidden.val()\n    }\n    \n    this.$remove = this.$element.find('[data-dismiss=\"fileupload\"]')\n\n    this.$element.find('[data-trigger=\"fileupload\"]').on('click.fileupload', $.proxy(this.trigger, this))\n\n    this.listen()\n  }\n  \n  Fileupload.prototype = {\n    \n    listen: function() {\n      this.$input.on('change.fileupload', $.proxy(this.change, this))\n      $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))\n      if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))\n    },\n    \n    change: function(e, invoked) {\n      var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\\\/, '') } : null)\n      if (invoked === 'clear') return\n      \n      if (!file) {\n        this.clear()\n        return\n      }\n      \n      this.$hidden.val('')\n      this.$hidden.attr('name', '')\n      this.$input.attr('name', this.name)\n\n      if (this.type === \"image\" && this.$preview.length > 0 && (typeof file.type !== \"undefined\" ? file.type.match('image.*') : file.name.match('\\\\.(gif|png|jpe?g)$')) && typeof FileReader !== \"undefined\") {\n        var reader = new FileReader()\n        var preview = this.$preview\n        var element = this.$element\n\n        reader.onload = function(e) {\n          preview.html('<img src=\"' + e.target.result + '\" ' + (preview.css('max-height') != 'none' ? 'style=\"max-height: ' + preview.css('max-height') + ';\"' : '') + ' />')\n          element.addClass('fileupload-exists').removeClass('fileupload-new')\n        }\n\n        reader.readAsDataURL(file)\n      } else {\n        this.$preview.text(file.name)\n        this.$element.addClass('fileupload-exists').removeClass('fileupload-new')\n      }\n    },\n\n    clear: function(e) {\n      this.$hidden.val('')\n      this.$hidden.attr('name', this.name)\n      this.$input.attr('name', '')\n\n      //ie8+ doesn't support changing the value of input with type=file so clone instead\n      if($.browser.msie){\n          var inputClone = this.$input.clone(true);\n          this.$input.after(inputClone);\n          this.$input.remove();\n          this.$input = inputClone;\n      }else{\n          this.$input.val('')\n      }\n\n      this.$preview.html('')\n      this.$element.addClass('fileupload-new').removeClass('fileupload-exists')\n\n      if (e) {\n        this.$input.trigger('change', [ 'clear' ])\n        e.preventDefault()\n      }\n    },\n    \n    reset: function(e) {\n      this.clear()\n      \n      this.$hidden.val(this.original.hiddenVal)\n      this.$preview.html(this.original.preview)\n      \n      if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')\n       else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')\n    },\n    \n    trigger: function(e) {\n      this.$input.trigger('click')\n      e.preventDefault()\n    }\n  }\n\n  \n /* FILEUPLOAD PLUGIN DEFINITION\n  * =========================== */\n\n  $.fn.fileupload = function (options) {\n    return this.each(function () {\n      var $this = $(this)\n      , data = $this.data('fileupload')\n      if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))\n      if (typeof options == 'string') data[options]()\n    })\n  }\n\n  $.fn.fileupload.Constructor = Fileupload\n\n\n /* FILEUPLOAD DATA-API\n  * ================== */\n\n  $(function () {\n    $('body').on('click.fileupload.data-api', '[data-provides=\"fileupload\"]', function (e) {\n      var $this = $(this)\n      if ($this.data('fileupload')) return\n      $this.fileupload($this.data())\n      \n      var $target = $(e.target).is('[data-dismiss=fileupload],[data-trigger=fileupload]') ?\n        $(e.target) : $(e.target).parents('[data-dismiss=fileupload],[data-trigger=fileupload]').first()\n      if ($target.length > 0) {\n          $target.trigger('click.fileupload')\n          e.preventDefault()\n      }\n    })\n  })\n\n}(window.jQuery);"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-colorpicker/css/colorpicker.css",
    "content": " /*\n\tColorpicker for Bootstrap\n\tCopyright 2012 Stefan Petre \n\tLicensed under the Apache License v2.0\n\thttp://www.apache.org/licenses/LICENSE-2.0\n*/\n .colorpicker-saturation { width: 100px; height: 100px; background-image: url(../img/saturation.png); cursor: crosshair; float: left; } .colorpicker-saturation i { display: block; height: 5px; width: 5px; border: 1px solid #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; position: absolute; top: 0; left: 0; margin: -4px 0 0 -4px; } .colorpicker-saturation i b { display: block; height: 5px; width: 5px; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .colorpicker-hue, .colorpicker-alpha { width: 15px; height: 100px; float: left; cursor: row-resize; margin-left: 4px; margin-bottom: 4px; } .colorpicker-hue i, .colorpicker-alpha i { display: block; height: 1px; background: #000; border-top: 1px solid #fff; position: absolute; top: 0; left: 0; width: 100%; margin-top: -1px; } .colorpicker-hue { background-image: url(../img/hue.png); } .colorpicker-alpha { background-image: url(../img/alpha.png); display: none; } .colorpicker { *zoom: 1; top: 0; left: 0; padding: 4px; min-width: 120px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .colorpicker:before, .colorpicker:after { display: table; content: \"\"; } .colorpicker:after { clear: both; } .colorpicker: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: 6px; } .colorpicker: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: 7px; } .colorpicker div { position: relative; } .colorpicker.alpha { min-width: 140px; } .colorpicker.alpha .colorpicker-alpha { display: block; } .colorpicker-color { height: 10px; margin-top: 5px; clear: both; background-image: url(../img/alpha.png); background-position: 0 100%; } .colorpicker-color div { height: 10px; } .input-append.color .add-on i, .input-prepend.color .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js",
    "content": "/* =========================================================\n * bootstrap-colorpicker.js \n * http://www.eyecon.ro/bootstrap-colorpicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n \n!function( $ ) {\n\t\n\t// Color object\n\t\n\tvar Color = function(val) {\n\t\tthis.value = {\n\t\t\th: 1,\n\t\t\ts: 1,\n\t\t\tb: 1,\n\t\t\ta: 1\n\t\t};\n\t\tthis.setColor(val);\n\t};\n\t\n\tColor.prototype = {\n\t\tconstructor: Color,\n\t\t\n\t\t//parse a string to HSB\n\t\tsetColor: function(val){\n\t\t\tval = val.toLowerCase();\n\t\t\tvar that = this;\n\t\t\t$.each( CPGlobal.stringParsers, function( i, parser ) {\n\t\t\t\tvar match = parser.re.exec( val ),\n\t\t\t\t\tvalues = match && parser.parse( match ),\n\t\t\t\t\tspace = parser.space||'rgba';\n\t\t\t\tif ( values ) {\n\t\t\t\t\tif (space === 'hsla') {\n\t\t\t\t\t\tthat.value = CPGlobal.RGBtoHSB.apply(null, CPGlobal.HSLtoRGB.apply(null, values));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthat.value = CPGlobal.RGBtoHSB.apply(null, values);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t\n\t\tsetHue: function(h) {\n\t\t\tthis.value.h = 1- h;\n\t\t},\n\t\t\n\t\tsetSaturation: function(s) {\n\t\t\tthis.value.s = s;\n\t\t},\n\t\t\n\t\tsetLightness: function(b) {\n\t\t\tthis.value.b = 1- b;\n\t\t},\n\t\t\n\t\tsetAlpha: function(a) {\n\t\t\tthis.value.a = parseInt((1 - a)*100, 10)/100;\n\t\t},\n\t\t\n\t\t// HSBtoRGB from RaphaelJS\n\t\t// https://github.com/DmitryBaranovskiy/raphael/\n\t\ttoRGB: function(h, s, b, a) {\n\t\t\tif (!h) {\n\t\t\t\th = this.value.h;\n\t\t\t\ts = this.value.s;\n\t\t\t\tb = this.value.b;\n\t\t\t}\n\t\t\th *= 360;\n\t\t\tvar R, G, B, X, C;\n\t\t\th = (h % 360) / 60;\n\t\t\tC = b * s;\n\t\t\tX = C * (1 - Math.abs(h % 2 - 1));\n\t\t\tR = G = B = b - C;\n\n\t\t\th = ~~h;\n\t\t\tR += [C, X, 0, 0, X, C][h];\n\t\t\tG += [X, C, C, X, 0, 0][h];\n\t\t\tB += [0, 0, X, C, C, X][h];\n\t\t\treturn {\n\t\t\t\tr: Math.round(R*255),\n\t\t\t\tg: Math.round(G*255),\n\t\t\t\tb: Math.round(B*255),\n\t\t\t\ta: a||this.value.a\n\t\t\t};\n\t\t},\n\t\t\n\t\ttoHex: function(h, s, b, a){\n\t\t\tvar rgb = this.toRGB(h, s, b, a);\n\t\t\treturn '#'+((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1);\n\t\t},\n\t\t\n\t\ttoHSL: function(h, s, b, a){\n\t\t\tif (!h) {\n\t\t\t\th = this.value.h;\n\t\t\t\ts = this.value.s;\n\t\t\t\tb = this.value.b;\n\t\t\t}\n\t\t\tvar H = h,\n\t\t\t\tL = (2 - s) * b,\n\t\t\t\tS = s * b;\n\t\t\tif (L > 0 && L <= 1) {\n\t\t\t\tS /= L;\n\t\t\t} else {\n\t\t\t\tS /= 2 - L;\n\t\t\t}\n\t\t\tL /= 2;\n\t\t\tif (S > 1) {\n\t\t\t\tS = 1;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\th: H,\n\t\t\t\ts: S,\n\t\t\t\tl: L,\n\t\t\t\ta: a||this.value.a\n\t\t\t};\n\t\t}\n\t};\n\t\n\t// Picker object\n\t\n\tvar Colorpicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tvar format = options.format||this.element.data('color-format')||'hex';\n\t\tthis.format = CPGlobal.translateFormats[format];\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.color') ? this.element.find('.add-on') : false;\n\t\t\n\t\tthis.picker = $(CPGlobal.template)\n\t\t\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t\t\t.on('mousedown', $.proxy(this.mousedown, this));\n\t\t\n\t\tif (this.isInput) {\n\t\t\tthis.element.on({\n\t\t\t\t'focus': $.proxy(this.show, this),\n\t\t\t\t'keyup': $.proxy(this.update, this)\n\t\t\t});\n\t\t} else if (this.component){\n\t\t\tthis.component.on({\n\t\t\t\t'click': $.proxy(this.show, this)\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element.on({\n\t\t\t\t'click': $.proxy(this.show, this)\n\t\t\t});\n\t\t}\n\t\tif (format === 'rgba' || format === 'hsla') {\n\t\t\tthis.picker.addClass('alpha');\n\t\t\tthis.alpha = this.picker.find('.colorpicker-alpha')[0].style;\n\t\t}\n\t\t\n\t\tif (this.component){\n\t\t\tthis.picker.find('.colorpicker-color').hide();\n\t\t\tthis.preview = this.element.find('i')[0].style;\n\t\t} else {\n\t\t\tthis.preview = this.picker.find('div:last')[0].style;\n\t\t}\n\t\t\n\t\tthis.base = this.picker.find('div:first')[0].style;\n\t\tthis.update();\n\t};\n\t\n\tColorpicker.prototype = {\n\t\tconstructor: Colorpicker,\n\t\t\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(document).on({\n\t\t\t\t'mousedown': $.proxy(this.hide, this)\n\t\t\t});\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\tupdate: function(){\n\t\t\tthis.color = new Color(this.isInput ? this.element.prop('value') : this.element.data('color'));\n\t\t\tthis.picker.find('i')\n\t\t\t\t.eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end()\n\t\t\t\t.eq(1).css('top', 100 * (1 - this.color.value.h)).end()\n\t\t\t\t.eq(2).css('top', 100 * (1 - this.color.value.a));\n\t\t\tthis.previewColor();\n\t\t},\n\t\t\n\t\tsetValue: function(newColor) {\n\t\t\tthis.color = new Color(newColor);\n\t\t\tthis.picker.find('i')\n\t\t\t\t.eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end()\n\t\t\t\t.eq(1).css('top', 100 * (1 - this.color.value.h)).end()\n\t\t\t\t.eq(2).css('top', 100 * (1 - this.color.value.a));\n\t\t\tthis.previewColor();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeColor',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\thide: function(){\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off({\n\t\t\t\t\t'mousedown': this.hide\n\t\t\t\t});\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', this.format.call(this));\n\t\t\t\t}\n\t\t\t\tthis.element.data('color', this.format.call(this));\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', this.format.call(this));\n\t\t\t}\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\tplace: function(){\n\t\t\tvar offset = this.component ? this.component.offset() : this.element.offset();\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: offset.left\n\t\t\t});\n\t\t},\n\t\t\n\t\t//preview color change\n\t\tpreviewColor: function(){\n\t\t\ttry {\n\t\t\t\tthis.preview.backgroundColor = this.format.call(this);\n\t\t\t} catch(e) {\n\t\t\t\tthis.preview.backgroundColor = this.color.toHex();\n\t\t\t}\n\t\t\t//set the color for brightness/saturation slider\n\t\t\tthis.base.backgroundColor = this.color.toHex(this.color.value.h, 1, 1, 1);\n\t\t\t//set te color for alpha slider\n\t\t\tif (this.alpha) {\n\t\t\t\tthis.alpha.backgroundColor = this.color.toHex();\n\t\t\t}\n\t\t},\n\t\t\n\t\tpointer: null,\n\t\t\n\t\tslider: null,\n\t\t\n\t\tmousedown: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tvar target = $(e.target);\n\t\t\t\n\t\t\t//detect the slider and set the limits and callbacks\n\t\t\tvar zone = target.closest('div');\n\t\t\tif (!zone.is('.colorpicker')) {\n\t\t\t\tif (zone.is('.colorpicker-saturation')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.saturation);\n\t\t\t\t} \n\t\t\t\telse if (zone.is('.colorpicker-hue')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.hue);\n\t\t\t\t}\n\t\t\t\telse if (zone.is('.colorpicker-alpha')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.alpha);\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar offset = zone.offset();\n\t\t\t\t//reference to knob's style\n\t\t\t\tthis.slider.knob = zone.find('i')[0].style;\n\t\t\t\tthis.slider.left = e.pageX - offset.left;\n\t\t\t\tthis.slider.top = e.pageY - offset.top;\n\t\t\t\tthis.pointer = {\n\t\t\t\t\tleft: e.pageX,\n\t\t\t\t\ttop: e.pageY\n\t\t\t\t};\n\t\t\t\t//trigger mousemove to move the knob to the current position\n\t\t\t\t$(document).on({\n\t\t\t\t\tmousemove: $.proxy(this.mousemove, this),\n\t\t\t\t\tmouseup: $.proxy(this.mouseup, this)\n\t\t\t\t}).trigger('mousemove');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\tmousemove: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar left = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.min(\n\t\t\t\t\tthis.slider.maxLeft,\n\t\t\t\t\tthis.slider.left + ((e.pageX||this.pointer.left) - this.pointer.left)\n\t\t\t\t)\n\t\t\t);\n\t\t\tvar top = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.min(\n\t\t\t\t\tthis.slider.maxTop,\n\t\t\t\t\tthis.slider.top + ((e.pageY||this.pointer.top) - this.pointer.top)\n\t\t\t\t)\n\t\t\t);\n\t\t\tthis.slider.knob.left = left + 'px';\n\t\t\tthis.slider.knob.top = top + 'px';\n\t\t\tif (this.slider.callLeft) {\n\t\t\t\tthis.color[this.slider.callLeft].call(this.color, left/100);\n\t\t\t}\n\t\t\tif (this.slider.callTop) {\n\t\t\t\tthis.color[this.slider.callTop].call(this.color, top/100);\n\t\t\t}\n\t\t\tthis.previewColor();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeColor',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\tmouseup: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t$(document).off({\n\t\t\t\tmousemove: this.mousemove,\n\t\t\t\tmouseup: this.mouseup\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t$.fn.colorpicker = function ( option ) {\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('colorpicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('colorpicker', (data = new Colorpicker(this, $.extend({}, $.fn.colorpicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option === 'string') data[option]();\n\t\t});\n\t};\n\n\t$.fn.colorpicker.defaults = {\n\t};\n\t\n\t$.fn.colorpicker.Constructor = Colorpicker;\n\t\n\tvar CPGlobal = {\n\t\n\t\t// translate a format from Color object to a string\n\t\ttranslateFormats: {\n\t\t\t'rgb': function(){\n\t\t\t\tvar rgb = this.color.toRGB();\n\t\t\t\treturn 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')';\n\t\t\t},\n\t\t\t\n\t\t\t'rgba': function(){\n\t\t\t\tvar rgb = this.color.toRGB();\n\t\t\t\treturn 'rgba('+rgb.r+','+rgb.g+','+rgb.b+','+rgb.a+')';\n\t\t\t},\n\t\t\t\n\t\t\t'hsl': function(){\n\t\t\t\tvar hsl = this.color.toHSL();\n\t\t\t\treturn 'hsl('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%)';\n\t\t\t},\n\t\t\t\n\t\t\t'hsla': function(){\n\t\t\t\tvar hsl = this.color.toHSL();\n\t\t\t\treturn 'hsla('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%,'+hsl.a+')';\n\t\t\t},\n\t\t\t\n\t\t\t'hex': function(){\n\t\t\t\treturn  this.color.toHex();\n\t\t\t}\n\t\t},\n\t\t\n\t\tsliders: {\n\t\t\tsaturation: {\n\t\t\t\tmaxLeft: 100,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: 'setSaturation',\n\t\t\t\tcallTop: 'setLightness'\n\t\t\t},\n\t\t\t\n\t\t\thue: {\n\t\t\t\tmaxLeft: 0,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: false,\n\t\t\t\tcallTop: 'setHue'\n\t\t\t},\n\t\t\t\n\t\t\talpha: {\n\t\t\t\tmaxLeft: 0,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: false,\n\t\t\t\tcallTop: 'setAlpha'\n\t\t\t}\n\t\t},\n\t\t\n\t\t// HSBtoRGB from RaphaelJS\n\t\t// https://github.com/DmitryBaranovskiy/raphael/\n\t\tRGBtoHSB: function (r, g, b, a){\n\t\t\tr /= 255;\n\t\t\tg /= 255;\n\t\t\tb /= 255;\n\n\t\t\tvar H, S, V, C;\n\t\t\tV = Math.max(r, g, b);\n\t\t\tC = V - Math.min(r, g, b);\n\t\t\tH = (C === 0 ? null :\n\t\t\t\tV == r ? (g - b) / C :\n\t\t\t\tV == g ? (b - r) / C + 2 :\n\t\t\t\t\t(r - g) / C + 4\n\t\t\t\t);\n\t\t\tH = ((H + 360) % 6) * 60 / 360;\n\t\t\tS = C === 0 ? 0 : C / V;\n\t\t\treturn {h: H||1, s: S, b: V, a: a||1};\n\t\t},\n\t\t\n\t\tHueToRGB: function (p, q, h) {\n\t\t\tif (h < 0)\n\t\t\t\th += 1;\n\t\t\telse if (h > 1)\n\t\t\t\th -= 1;\n\n\t\t\tif ((h * 6) < 1)\n\t\t\t\treturn p + (q - p) * h * 6;\n\t\t\telse if ((h * 2) < 1)\n\t\t\t\treturn q;\n\t\t\telse if ((h * 3) < 2)\n\t\t\t\treturn p + (q - p) * ((2 / 3) - h) * 6;\n\t\t\telse\n\t\t\t\treturn p;\n\t\t},\n\t\n\t\tHSLtoRGB: function (h, s, l, a)\n\t\t{\n\t\t\tif (s < 0) {\n\t\t\t\ts = 0;\n\t\t\t}\n\t\t\tvar q;\n\t\t\tif (l <= 0.5) {\n\t\t\t\tq = l * (1 + s);\n\t\t\t} else {\n\t\t\t\tq = l + s - (l * s);\n\t\t\t}\n\t\t\t\n\t\t\tvar p = 2 * l - q;\n\n\t\t\tvar tr = h + (1 / 3);\n\t\t\tvar tg = h;\n\t\t\tvar tb = h - (1 / 3);\n\n\t\t\tvar r = Math.round(CPGlobal.HueToRGB(p, q, tr) * 255);\n\t\t\tvar g = Math.round(CPGlobal.HueToRGB(p, q, tg) * 255);\n\t\t\tvar b = Math.round(CPGlobal.HueToRGB(p, q, tb) * 255);\n\t\t\treturn [r, g, b, a||1];\n\t\t},\n\t\t\n\t\t// a set of RE's that can match strings and generate color tuples.\n\t\t// from John Resig color plugin\n\t\t// https://github.com/jquery/jquery-color/\n\t\tstringParsers: [\n\t\t\t{\n\t\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t2.55 * execResult[1],\n\t\t\t\t\t\t2.55 * execResult[2],\n\t\t\t\t\t\t2.55 * execResult[3],\n\t\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tspace: 'hsla',\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\texecResult[1]/360,\n\t\t\t\t\t\texecResult[2] / 100,\n\t\t\t\t\t\texecResult[3] / 100,\n\t\t\t\t\t\texecResult[4]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\ttemplate: '<div class=\"colorpicker dropdown-menu\">'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-saturation\"><i><b></b></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-hue\"><i></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-alpha\"><i></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-color\"><div /></div>'+\n\t\t\t\t\t\t'</div>'\n\t};\n\n}( window.jQuery )"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-datepicker/css/datepicker.css",
    "content": " /*\n\tDatepicker for Bootstrap\n\tCopyright 2012 Stefan Petre\n\tLicensed under the Apache License v2.0\n\thttp://www.apache.org/licenses/LICENSE-2.0\n*/\n .datepicker { top: 0; left: 0; padding: 4px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; /*.dow { border-top: 1px solid #ddd !important; }*/ } .datepicker: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: 6px; } .datepicker: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: 7px; } .datepicker > div { display: none; } .datepicker table { width: 100%; margin: 0; } .datepicker td, .datepicker th { text-align: center; width: 20px; height: 20px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .datepicker td.day:hover { background: #eeeeee; cursor: pointer; } .datepicker td.old, .datepicker td.new { color: #999999; } .datepicker td.active, .datepicker td.active:hover { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-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(top, #0088cc, #0044cc); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); 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(enabled = false); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .datepicker td.active:hover, .datepicker td.active:hover:hover, .datepicker td.active:active, .datepicker td.active:hover:active, .datepicker td.active.active, .datepicker td.active:hover.active, .datepicker td.active.disabled, .datepicker td.active:hover.disabled, .datepicker td.active[disabled], .datepicker td.active:hover[disabled] { background-color: #0044cc; } .datepicker td.active:active, .datepicker td.active:hover:active, .datepicker td.active.active, .datepicker td.active:hover.active { background-color: #003399 \\9; } .datepicker td span { display: block; width: 47px; height: 54px; line-height: 54px; float: left; margin: 2px; cursor: pointer; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .datepicker td span:hover { background: #eeeeee; } .datepicker td span.active { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-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(top, #0088cc, #0044cc); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); 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(enabled = false); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .datepicker td span.active:hover, .datepicker td span.active:active, .datepicker td span.active.active, .datepicker td span.active.disabled, .datepicker td span.active[disabled] { background-color: #0044cc; } .datepicker td span.active:active, .datepicker td span.active.active { background-color: #003399 \\9; } .datepicker td span.old { color: #999999; } .datepicker th.switch { width: 145px; } .datepicker th.next, .datepicker th.prev { font-size: 19.5px; } .datepicker thead tr:first-child th { cursor: pointer; } .datepicker thead tr:first-child th:hover { background: #eeeeee; } .input-append.date .add-on i, .input-prepend.date .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-datepicker/js/bootstrap-datepicker.js",
    "content": "/* =========================================================\n * bootstrap-datepicker.js \n * http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n \n!function( $ ) {\n\t\n\t// Picker object\n\t\n\tvar Datepicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');\n\t\tthis.picker = $(DPGlobal.template)\n\t\t\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t\t\t.on({\n\t\t\t\t\t\t\t\tclick: $.proxy(this.click, this),\n\t\t\t\t\t\t\t\tmousedown: $.proxy(this.mousedown, this)\n\t\t\t\t\t\t\t});\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on') : false;\n\t\t\n\t\tif (this.isInput) {\n\t\t\tthis.element.on({\n\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\tblur: $.proxy(this.hide, this),\n\t\t\t\tkeyup: $.proxy(this.update, this)\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.component){\n\t\t\t\tthis.component.on('click', $.proxy(this.show, this));\n\t\t\t} else {\n\t\t\t\tthis.element.on('click', $.proxy(this.show, this));\n\t\t\t}\n\t\t}\n\t\tthis.minViewMode = options.minViewMode||this.element.data('date-minviewmode')||0;\n\t\tif (typeof this.minViewMode === 'string') {\n\t\t\tswitch (this.minViewMode) {\n\t\t\t\tcase 'months':\n\t\t\t\t\tthis.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'years':\n\t\t\t\t\tthis.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.minViewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.viewMode = options.viewMode||this.element.data('date-viewmode')||0;\n\t\tif (typeof this.viewMode === 'string') {\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 'months':\n\t\t\t\t\tthis.viewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'years':\n\t\t\t\t\tthis.viewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.viewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.startViewMode = this.viewMode;\n\t\tthis.weekStart = options.weekStart||this.element.data('date-weekstart')||0;\n\t\tthis.weekEnd = this.weekStart === 0 ? 6 : this.weekStart - 1;\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\t\tthis.update();\n\t\tthis.showMode();\n\t};\n\t\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\t\t\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (e ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).on('mousedown', $.proxy(this.hide, this));\n\t\t\t}\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\t\t\n\t\thide: function(){\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tthis.viewMode = this.startViewMode;\n\t\t\tthis.showMode();\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off('mousedown', this.hide);\n\t\t\t}\n\t\t\tthis.set();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\t\t\n\t\tset: function() {\n\t\t\tvar formated = DPGlobal.formatDate(this.date, this.format);\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', formated);\n\t\t\t\t}\n\t\t\t\tthis.element.data('date', formated);\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', formated);\n\t\t\t}\n\t\t},\n\t\t\n\t\tsetValue: function(newDate) {\n\t\t\tif (typeof newDate === 'string') {\n\t\t\t\tthis.date = DPGlobal.parseDate(newDate, this.format);\n\t\t\t} else {\n\t\t\t\tthis.date = new Date(newDate);\n\t\t\t}\n\t\t\tthis.set();\n\t\t\tthis.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);\n\t\t\tthis.fill();\n\t\t},\n\t\t\n\t\tplace: function(){\n\t\t\tvar offset = this.component ? this.component.offset() : this.element.offset();\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: offset.left\n\t\t\t});\n\t\t},\n\t\t\n\t\tupdate: function(newDate){\n\t\t\tthis.date = DPGlobal.parseDate(\n\t\t\t\ttypeof newDate === 'string' ? newDate : (this.isInput ? this.element.prop('value') : this.element.data('date')),\n\t\t\t\tthis.format\n\t\t\t);\n\t\t\tthis.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);\n\t\t\tthis.fill();\n\t\t},\n\t\t\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.weekStart;\n\t\t\tvar html = '<tr>';\n\t\t\twhile (dowCnt < this.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+DPGlobal.dates.daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\t\t\n\t\tfillMonths: function(){\n\t\t\tvar html = '';\n\t\t\tvar i = 0\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+DPGlobal.dates.monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').append(html);\n\t\t},\n\t\t\n\t\tfill: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getFullYear(),\n\t\t\t\tmonth = d.getMonth(),\n\t\t\t\tcurrentDate = this.date.valueOf();\n\t\t\tthis.picker.find('.datepicker-days th:eq(1)')\n\t\t\t\t\t\t.text(DPGlobal.dates.months[month]+' '+year);\n\t\t\tvar prevMonth = new Date(year, month-1, 28,0,0,0,0),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());\n\t\t\tprevMonth.setDate(day);\n\t\t\tprevMonth.setDate(day - (prevMonth.getDay() - this.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setDate(nextMonth.getDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\thtml = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getDay() === this.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t}\n\t\t\t\tclsName = '';\n\t\t\t\tif (prevMonth.getMonth() < month) {\n\t\t\t\t\tclsName += ' old';\n\t\t\t\t} else if (prevMonth.getMonth() > month) {\n\t\t\t\t\tclsName += ' new';\n\t\t\t\t}\n\t\t\t\tif (prevMonth.valueOf() === currentDate) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\thtml.push('<td class=\"day'+clsName+'\">'+prevMonth.getDate() + '</td>');\n\t\t\t\tif (prevMonth.getDay() === this.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setDate(prevMonth.getDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\t\t\tvar currentYear = this.date.getFullYear();\n\t\t\t\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear === year) {\n\t\t\t\tmonths.eq(this.date.getMonth()).addClass('active');\n\t\t\t}\n\t\t\t\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i === -1 || i === 10 ? ' old' : '')+(currentYear === year ? ' active' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\t\t\n\t\tclick: function(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th');\n\t\t\tif (target.length === 1) {\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tthis.viewDate['set'+DPGlobal.modes[this.viewMode].navFnc].call(\n\t\t\t\t\t\t\t\t\tthis.viewDate,\n\t\t\t\t\t\t\t\t\tthis.viewDate['get'+DPGlobal.modes[this.viewMode].navFnc].call(this.viewDate) + \n\t\t\t\t\t\t\t\t\tDPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\tvar month = target.parent().find('span').index(target);\n\t\t\t\t\t\t\tthis.viewDate.setMonth(month);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar year = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\tthis.viewDate.setFullYear(year);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.viewMode !== 0) {\n\t\t\t\t\t\t\tthis.date = new Date(this.viewDate);\n\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\t\t\t\tdate: this.date,\n\t\t\t\t\t\t\t\tviewMode: DPGlobal.modes[this.viewMode].clsName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tvar month = this.viewDate.getMonth();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar year = this.viewDate.getFullYear();\n\t\t\t\t\t\t\tthis.date = new Date(year, month, day,0,0,0,0);\n\t\t\t\t\t\t\tthis.viewDate = new Date(year, month, Math.min(28, day),0,0,0,0);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\t\t\t\tdate: this.date,\n\t\t\t\t\t\t\t\tviewMode: DPGlobal.modes[this.viewMode].clsName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\tmousedown: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t\t\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tthis.viewMode = Math.max(this.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t}\n\t};\n\t\n\t$.fn.datepicker = function ( option, val ) {\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option === 'string') data[option](val);\n\t\t});\n\t};\n\n\t$.fn.datepicker.defaults = {\n\t};\n\t$.fn.datepicker.Constructor = Datepicker;\n\t\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tdates:{\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t\t},\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\n\t\t},\n\t\tparseFormat: function(format){\n\t\t\tvar separator = format.match(/[.\\/\\-\\s].*?/),\n\t\t\t\tparts = format.split(/\\W+/);\n\t\t\tif (!separator || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separator: separator, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format) {\n\t\t\tvar parts = date.split(format.separator),\n\t\t\t\tdate = new Date(),\n\t\t\t\tval;\n\t\t\tdate.setHours(0);\n\t\t\tdate.setMinutes(0);\n\t\t\tdate.setSeconds(0);\n\t\t\tdate.setMilliseconds(0);\n\t\t\tif (parts.length === format.parts.length) {\n\t\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10)||1;\n\t\t\t\t\tswitch(format.parts[i]) {\n\t\t\t\t\t\tcase 'dd':\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setDate(val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mm':\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate.setMonth(val - 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'yy':\n\t\t\t\t\t\t\tdate.setFullYear(2000 + val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'yyyy':\n\t\t\t\t\t\t\tdate.setFullYear(val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format){\n\t\t\tvar val = {\n\t\t\t\td: date.getDate(),\n\t\t\t\tm: date.getMonth() + 1,\n\t\t\t\tyy: date.getFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tvar date = [];\n\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join(format.separator);\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">&lsaquo;</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">&rsaquo;</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker dropdown-menu\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n}( window.jQuery )"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-daterangepicker/date.js",
    "content": "/**\n * @version: 1.0 Alpha-1\n * @author: Coolite Inc. http://www.coolite.com/\n * @date: 2008-05-13\n * @copyright: Copyright (c) 2006-2008, Coolite Inc. (http://www.coolite.com/). All rights reserved.\n * @license: Licensed under The MIT License. See http://www.datejs.com/license/. \n * @website: http://www.datejs.com/\n */\nDate.CultureInfo={name:\"en-US\",englishName:\"English (United States)\",nativeName:\"English (United States)\",dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbreviatedDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],shortestDayNames:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],firstLetterDayNames:[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbreviatedMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],amDesignator:\"AM\",pmDesignator:\"PM\",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:\"mdy\",formatPatterns:{shortDate:\"M/d/yyyy\",longDate:\"dddd, MMMM dd, yyyy\",shortTime:\"h:mm tt\",longTime:\"h:mm:ss tt\",fullDateTime:\"dddd, MMMM dd, yyyy h:mm:ss tt\",sortableDateTime:\"yyyy-MM-ddTHH:mm:ss\",universalSortableDateTime:\"yyyy-MM-dd HH:mm:ssZ\",rfc1123:\"ddd, dd MMM yyyy HH:mm:ss GMT\",monthDay:\"MMMM dd\",yearMonth:\"MMMM, yyyy\"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|aft(er)?|from|hence)/i,subtract:/^(\\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a(?!u|p)|p)/i},timezones:[{name:\"UTC\",offset:\"-000\"},{name:\"GMT\",offset:\"-000\"},{name:\"EST\",offset:\"-0500\"},{name:\"EDT\",offset:\"-0400\"},{name:\"CST\",offset:\"-0600\"},{name:\"CDT\",offset:\"-0500\"},{name:\"MST\",offset:\"-0700\"},{name:\"MDT\",offset:\"-0600\"},{name:\"PST\",offset:\"-0800\"},{name:\"PDT\",offset:\"-0700\"}]};\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,p=function(s,l){if(!l){l=2;}\nreturn(\"000\"+s).slice(l*-1);};$P.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};$P.setTimeToNow=function(){var n=new Date();this.setHours(n.getHours());this.setMinutes(n.getMinutes());this.setSeconds(n.getSeconds());this.setMilliseconds(n.getMilliseconds());return this;};$D.today=function(){return new Date().clearTime();};$D.compare=function(date1,date2){if(isNaN(date1)||isNaN(date2)){throw new Error(date1+\" - \"+date2);}else if(date1 instanceof Date&&date2 instanceof Date){return(date1<date2)?-1:(date1>date2)?1:0;}else{throw new TypeError(date1+\" - \"+date2);}};$D.equals=function(date1,date2){return(date1.compareTo(date2)===0);};$D.getDayNumberFromName=function(name){var n=$C.dayNames,m=$C.abbreviatedDayNames,o=$C.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s||o[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.getMonthNumberFromName=function(name){var n=$C.monthNames,m=$C.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.isLeapYear=function(year){return((year%4===0&&year%100!==0)||year%400===0);};$D.getDaysInMonth=function(year,month){return[31,($D.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};$D.getTimezoneAbbreviation=function(offset){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].offset===offset){return z[i].name;}}\nreturn null;};$D.getTimezoneOffset=function(name){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].name===name.toUpperCase()){return z[i].offset;}}\nreturn null;};$P.clone=function(){return new Date(this.getTime());};$P.compareTo=function(date){return Date.compare(this,date);};$P.equals=function(date){return Date.equals(this,date||new Date());};$P.between=function(start,end){return this.getTime()>=start.getTime()&&this.getTime()<=end.getTime();};$P.isAfter=function(date){return this.compareTo(date||new Date())===1;};$P.isBefore=function(date){return(this.compareTo(date||new Date())===-1);};$P.isToday=function(){return this.isSameDay(new Date());};$P.isSameDay=function(date){return this.clone().clearTime().equals(date.clone().clearTime());};$P.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};$P.addSeconds=function(value){return this.addMilliseconds(value*1000);};$P.addMinutes=function(value){return this.addMilliseconds(value*60000);};$P.addHours=function(value){return this.addMilliseconds(value*3600000);};$P.addDays=function(value){this.setDate(this.getDate()+value);return this;};$P.addWeeks=function(value){return this.addDays(value*7);};$P.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,$D.getDaysInMonth(this.getFullYear(),this.getMonth())));return this;};$P.addYears=function(value){return this.addMonths(value*12);};$P.add=function(config){if(typeof config==\"number\"){this._orient=config;return this;}\nvar x=config;if(x.milliseconds){this.addMilliseconds(x.milliseconds);}\nif(x.seconds){this.addSeconds(x.seconds);}\nif(x.minutes){this.addMinutes(x.minutes);}\nif(x.hours){this.addHours(x.hours);}\nif(x.weeks){this.addWeeks(x.weeks);}\nif(x.months){this.addMonths(x.months);}\nif(x.years){this.addYears(x.years);}\nif(x.days){this.addDays(x.days);}\nreturn this;};var $y,$m,$d;$P.getWeek=function(){var a,b,c,d,e,f,g,n,s,w;$y=(!$y)?this.getFullYear():$y;$m=(!$m)?this.getMonth()+1:$m;$d=(!$d)?this.getDate():$d;if($m<=2){a=$y-1;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=0;f=$d-1+(31*($m-1));}else{a=$y;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=s+1;f=$d+((153*($m-3)+2)/5)+58+s;}\ng=(a+b)%7;d=(f+g-e)%7;n=(f+3-d)|0;if(n<0){w=53-((g-s)/5|0);}else if(n>364+s){w=1;}else{w=(n/7|0)+1;}\n$y=$m=$d=null;return w;};$P.getISOWeek=function(){$y=this.getUTCFullYear();$m=this.getUTCMonth()+1;$d=this.getUTCDate();return p(this.getWeek());};$P.setWeek=function(n){return this.moveToDayOfWeek(1).addWeeks(n-this.getWeek());};$D._validate=function(n,min,max,name){if(typeof n==\"undefined\"){return false;}else if(typeof n!=\"number\"){throw new TypeError(n+\" is not a Number.\");}else if(n<min||n>max){throw new RangeError(n+\" is not a valid value for \"+name+\".\");}\nreturn true;};$D.validateMillisecond=function(value){return $D._validate(value,0,999,\"millisecond\");};$D.validateSecond=function(value){return $D._validate(value,0,59,\"second\");};$D.validateMinute=function(value){return $D._validate(value,0,59,\"minute\");};$D.validateHour=function(value){return $D._validate(value,0,23,\"hour\");};$D.validateDay=function(value,year,month){return $D._validate(value,1,$D.getDaysInMonth(year,month),\"day\");};$D.validateMonth=function(value){return $D._validate(value,0,11,\"month\");};$D.validateYear=function(value){return $D._validate(value,0,9999,\"year\");};$P.set=function(config){if($D.validateMillisecond(config.millisecond)){this.addMilliseconds(config.millisecond-this.getMilliseconds());}\nif($D.validateSecond(config.second)){this.addSeconds(config.second-this.getSeconds());}\nif($D.validateMinute(config.minute)){this.addMinutes(config.minute-this.getMinutes());}\nif($D.validateHour(config.hour)){this.addHours(config.hour-this.getHours());}\nif($D.validateMonth(config.month)){this.addMonths(config.month-this.getMonth());}\nif($D.validateYear(config.year)){this.addYears(config.year-this.getFullYear());}\nif($D.validateDay(config.day,this.getFullYear(),this.getMonth())){this.addDays(config.day-this.getDate());}\nif(config.timezone){this.setTimezone(config.timezone);}\nif(config.timezoneOffset){this.setTimezoneOffset(config.timezoneOffset);}\nif(config.week&&$D._validate(config.week,0,53,\"week\")){this.setWeek(config.week);}\nreturn this;};$P.moveToFirstDayOfMonth=function(){return this.set({day:1});};$P.moveToLastDayOfMonth=function(){return this.set({day:$D.getDaysInMonth(this.getFullYear(),this.getMonth())});};$P.moveToNthOccurrence=function(dayOfWeek,occurrence){var shift=0;if(occurrence>0){shift=occurrence-1;}\nelse if(occurrence===-1){this.moveToLastDayOfMonth();if(this.getDay()!==dayOfWeek){this.moveToDayOfWeek(dayOfWeek,-1);}\nreturn this;}\nreturn this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek,+1).addWeeks(shift);};$P.moveToDayOfWeek=function(dayOfWeek,orient){var diff=(dayOfWeek-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};$P.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};$P.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/86400000)+1;};$P.getTimezone=function(){return $D.getTimezoneAbbreviation(this.getUTCOffset());};$P.setTimezoneOffset=function(offset){var here=this.getTimezoneOffset(),there=Number(offset)*-6/10;return this.addMinutes(there-here);};$P.setTimezone=function(offset){return this.setTimezoneOffset($D.getTimezoneOffset(offset));};$P.hasDaylightSavingTime=function(){return(Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.isDaylightSavingTime=function(){return(this.hasDaylightSavingTime()&&new Date().getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r.charAt(0)+r.substr(2);}else{r=(n+10000).toString();return\"+\"+r.substr(1);}};$P.getElapsed=function(date){return(date||new Date())-this;};if(!$P.toISOString){$P.toISOString=function(){function f(n){return n<10?'0'+n:n;}\nreturn'\"'+this.getUTCFullYear()+'-'+\nf(this.getUTCMonth()+1)+'-'+\nf(this.getUTCDate())+'T'+\nf(this.getUTCHours())+':'+\nf(this.getUTCMinutes())+':'+\nf(this.getUTCSeconds())+'Z\"';};}\n$P._toString=$P.toString;$P.toString=function(format){var x=this;if(format&&format.length==1){var c=$C.formatPatterns;x.t=x.toString;switch(format){case\"d\":return x.t(c.shortDate);case\"D\":return x.t(c.longDate);case\"F\":return x.t(c.fullDateTime);case\"m\":return x.t(c.monthDay);case\"r\":return x.t(c.rfc1123);case\"s\":return x.t(c.sortableDateTime);case\"t\":return x.t(c.shortTime);case\"T\":return x.t(c.longTime);case\"u\":return x.t(c.universalSortableDateTime);case\"y\":return x.t(c.yearMonth);}}\nvar ord=function(n){switch(n*1){case 1:case 21:case 31:return\"st\";case 2:case 22:return\"nd\";case 3:case 23:return\"rd\";default:return\"th\";}};return format?format.replace(/(\\\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(m){if(m.charAt(0)===\"\\\\\"){return m.replace(\"\\\\\",\"\");}\nx.h=x.getHours;switch(m){case\"hh\":return p(x.h()<13?(x.h()===0?12:x.h()):(x.h()-12));case\"h\":return x.h()<13?(x.h()===0?12:x.h()):(x.h()-12);case\"HH\":return p(x.h());case\"H\":return x.h();case\"mm\":return p(x.getMinutes());case\"m\":return x.getMinutes();case\"ss\":return p(x.getSeconds());case\"s\":return x.getSeconds();case\"yyyy\":return p(x.getFullYear(),4);case\"yy\":return p(x.getFullYear());case\"dddd\":return $C.dayNames[x.getDay()];case\"ddd\":return $C.abbreviatedDayNames[x.getDay()];case\"dd\":return p(x.getDate());case\"d\":return x.getDate();case\"MMMM\":return $C.monthNames[x.getMonth()];case\"MMM\":return $C.abbreviatedMonthNames[x.getMonth()];case\"MM\":return p((x.getMonth()+1));case\"M\":return x.getMonth()+1;case\"t\":return x.h()<12?$C.amDesignator.substring(0,1):$C.pmDesignator.substring(0,1);case\"tt\":return x.h()<12?$C.amDesignator:$C.pmDesignator;case\"S\":return ord(x.getDate());default:return m;}}):this._toString();};}());\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,$N=Number.prototype;$P._orient=+1;$P._nth=null;$P._is=false;$P._same=false;$P._isSecond=false;$N._dateElement=\"day\";$P.next=function(){this._orient=+1;return this;};$D.next=function(){return $D.today().next();};$P.last=$P.prev=$P.previous=function(){this._orient=-1;return this;};$D.last=$D.prev=$D.previous=function(){return $D.today().last();};$P.is=function(){this._is=true;return this;};$P.same=function(){this._same=true;this._isSecond=false;return this;};$P.today=function(){return this.same().day();};$P.weekday=function(){if(this._is){this._is=false;return(!this.is().sat()&&!this.is().sun());}\nreturn false;};$P.at=function(time){return(typeof time===\"string\")?$D.parse(this.toString(\"d\")+\" \"+time):this.set(time);};$N.fromNow=$N.after=function(date){var c={};c[this._dateElement]=this;return((!date)?new Date():date.clone()).add(c);};$N.ago=$N.before=function(date){var c={};c[this._dateElement]=this*-1;return((!date)?new Date():date.clone()).add(c);};var dx=(\"sunday monday tuesday wednesday thursday friday saturday\").split(/\\s/),mx=(\"january february march april may june july august september october november december\").split(/\\s/),px=(\"Millisecond Second Minute Hour Day Week Month Year\").split(/\\s/),pxf=(\"Milliseconds Seconds Minutes Hours Date Week Month FullYear\").split(/\\s/),nth=(\"final first second third fourth fifth\").split(/\\s/),de;$P.toObject=function(){var o={};for(var i=0;i<px.length;i++){o[px[i].toLowerCase()]=this[\"get\"+pxf[i]]();}\nreturn o;};$D.fromObject=function(config){config.week=null;return Date.today().set(config);};var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}\nif(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1);}\nthis._isSecond=false;var ntemp=this._nth;this._nth=null;var temp=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(n,ntemp);if(this>temp){throw new RangeError($D.getDayName(n)+\" does not occur \"+ntemp+\" times in the month of \"+$D.getMonthName(temp.getMonth())+\" \"+temp.getFullYear()+\".\");}\nreturn this;}\nreturn this.moveToDayOfWeek(n,this._orient);};};var sdf=function(n){return function(){var t=$D.today(),shift=n-t.getDay();if(n===0&&$C.firstDayOfWeek===1&&t.getDay()!==0){shift=shift+7;}\nreturn t.addDays(shift);};};for(var i=0;i<dx.length;i++){$D[dx[i].toUpperCase()]=$D[dx[i].toUpperCase().substring(0,3)]=i;$D[dx[i]]=$D[dx[i].substring(0,3)]=sdf(i);$P[dx[i]]=$P[dx[i].substring(0,3)]=df(i);}\nvar mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}\nreturn this.moveToMonth(n,this._orient);};};var smf=function(n){return function(){return $D.today().set({month:n,day:1});};};for(var j=0;j<mx.length;j++){$D[mx[j].toUpperCase()]=$D[mx[j].toUpperCase().substring(0,3)]=j;$D[mx[j]]=$D[mx[j].substring(0,3)]=smf(j);$P[mx[j]]=$P[mx[j].substring(0,3)]=mf(j);}\nvar ef=function(j){return function(){if(this._isSecond){this._isSecond=false;return this;}\nif(this._same){this._same=this._is=false;var o1=this.toObject(),o2=(arguments[0]||new Date()).toObject(),v=\"\",k=j.toLowerCase();for(var m=(px.length-1);m>-1;m--){v=px[m].toLowerCase();if(o1[v]!=o2[v]){return false;}\nif(k==v){break;}}\nreturn true;}\nif(j.substring(j.length-1)!=\"s\"){j+=\"s\";}\nreturn this[\"add\"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$P[de]=$P[de+\"s\"]=ef(px[k]);$N[de]=$N[de+\"s\"]=nf(de);}\n$P._ss=ef(\"Second\");var nthfn=function(n){return function(dayOfWeek){if(this._same){return this._ss(arguments[0]);}\nif(dayOfWeek||dayOfWeek===0){return this.moveToNthOccurrence(dayOfWeek,n);}\nthis._nth=n;if(n===2&&(dayOfWeek===undefined||dayOfWeek===null)){this._isSecond=true;return this.addSeconds(this._orient);}\nreturn this;};};for(var l=0;l<nth.length;l++){$P[nth[l]]=(l===0)?nthfn(-1):nthfn(l);}}());\n(function(){Date.Parsing={Exception:function(s){this.message=\"Parse error at '\"+s.substring(0,10)+\" ...'\";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp(\"^\\s*\"+s+\"\\s*\"))(s);};},stoken:function(s){return _.rtoken(new RegExp(\"^\"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}\nbreak;}\nreturn[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}\nreturn[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}\nthrow new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}\nreturn rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}\nif(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){r=null;}\nif(r){return r;}}\nthrow new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;if(px.length==1){return px[0];}\nreturn function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}\nrx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}\ns=q[1];}\nif(!r){throw new $P.Exception(s);}\nif(q){throw new $P.Exception(q[1]);}\nif(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}\nreturn[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}\nrx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}\nif(!last&&q[1].length===0){last=true;}\nif(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}\np=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}\nif(rx[1].length<best[1].length){best=rx;}\nif(best[1].length===0){break;}}\nif(best[0].length===0){return best;}\nif(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}\nbest[1]=q[1];}\nreturn best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}\nreturn rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}\nif(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx=\"optional not ignore cache\".split(/\\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}\nvar _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx=\"each any all\".split(/\\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo;var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}\nreturn rx;};$D.Grammar={};$D.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\\d\\+\\-]/g,\"\");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\\d+/)[0]);};},month:function(s){return function(){this.month=(s.length==3)?\"jan feb mar apr may jun jul aug sep oct nov dec\".indexOf(s)/4:Number(s)-1;};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<$C.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case\"yesterday\":this.days=-1;break;case\"tomorrow\":this.days=1;break;case\"today\":this.days=0;break;case\"now\":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}\nvar now=new Date();if((this.hour||this.minute)&&(!this.month&&!this.year&&!this.day)){this.day=now.getDate();}\nif(!this.year){this.year=now.getFullYear();}\nif(!this.month&&this.month!==0){this.month=now.getMonth();}\nif(!this.day){this.day=1;}\nif(!this.hour){this.hour=0;}\nif(!this.minute){this.minute=0;}\nif(!this.second){this.second=0;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.day>$D.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+\" is not a valid value for days.\");}\nvar r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}\nreturn r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}\nfor(var i=0;i<x.length;i++){if(typeof x[i]==\"function\"){x[i].call(this);}}\nvar today=$D.today();if(this.now&&!this.unit&&!this.operator){return new Date();}else if(this.now){today=new Date();}\nvar expression=!!(this.days&&this.days!==null||this.orient||this.operator);var gap,mod,orient;orient=((this.orient==\"past\"||this.operator==\"subtract\")?-1:1);if(!this.now&&\"hour minute second\".indexOf(this.unit)!=-1){today.setTimeToNow();}\nif(this.month||this.month===0){if(\"year day hour minute second\".indexOf(this.unit)!=-1){this.value=this.month+1;this.month=null;expression=true;}}\nif(!expression&&this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(!this.month){this.month=temp.getMonth();}\nthis.year=temp.getFullYear();}\nif(expression&&this.weekday&&this.unit!=\"month\"){this.unit=\"day\";gap=($D.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}\nif(this.month&&this.unit==\"day\"&&this.operator){this.value=(this.month+1);this.month=null;}\nif(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1;}\nif(this.month&&!this.day&&this.value){today.set({day:this.value*1});if(!expression){this.day=this.value*1;}}\nif(!this.month&&this.value&&this.unit==\"month\"&&!this.now){this.month=this.value;expression=true;}\nif(expression&&(this.month||this.month===0)&&this.unit!=\"year\"){this.unit=\"month\";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}\nif(!this.unit){this.unit=\"day\";}\nif(!this.value&&this.operator&&this.operator!==null&&this[this.unit+\"s\"]&&this[this.unit+\"s\"]!==null){this[this.unit+\"s\"]=this[this.unit+\"s\"]+((this.operator==\"add\")?1:-1)+(this.value||0)*orient;}else if(this[this.unit+\"s\"]==null||this.operator!=null){if(!this.value){this.value=1;}\nthis[this.unit+\"s\"]=this.value*orient;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(temp.getMonth()!==today.getMonth()){this.month=temp.getMonth();}}\nif((this.month||this.month===0)&&!this.day){this.day=1;}\nif(!this.orient&&!this.operator&&this.unit==\"week\"&&this.value&&!this.day&&!this.month){return Date.today().setWeek(this.value);}\nif(expression&&this.timezone&&this.day&&this.days){this.day=this.days;}\nreturn(expression)?today.add(this):today.set(this);}};var _=$D.Parsing.Operators,g=$D.Grammar,t=$D.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\\s\\-\\.\\,\\/\\x27]+)/);g.timePartDelimiter=_.stoken(\":\");g.whiteSpace=_.rtoken(/^\\s*/);g.generalDelimiter=_.rtoken(/^(([\\s\\,]|at|@|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=$C.regexPatterns;var kx=keys.split(/\\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}\nfn=_C[keys]=_.any.apply(null,px);}\nreturn fn;};g.ctoken2=function(key){return _.rtoken($C.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.m,g.s],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2(\"shortMeridian\"),t.meridian));g.tt=_.cache(_.process(g.ctoken2(\"longMeridian\"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2(\"timezone\"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken(\"T\"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1]|\\d)/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1])/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken(\"sun mon tue wed thu fri sat\"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d|\\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken(\"jan feb mar apr may jun jul aug sep oct nov dec\"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\\d\\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\\d\\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\\d\\d?\\d?\\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\\d\\d\\d\\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2(\"timeContext\")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken(\"past future\"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken(\"add subtract\"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken(\"yesterday tomorrow today now\"),t.rday);g.unit=_.process(g.ctoken(\"second minute hour day week month year\"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\\d\\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\\D/g,\"\");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[$C.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw $D.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}\nreturn _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats([\"\\\"yyyy-MM-ddTHH:mm:ssZ\\\"\",\"yyyy-MM-ddTHH:mm:ssZ\",\"yyyy-MM-ddTHH:mm:ssz\",\"yyyy-MM-ddTHH:mm:ss\",\"yyyy-MM-ddTHH:mmZ\",\"yyyy-MM-ddTHH:mmz\",\"yyyy-MM-ddTHH:mm\",\"ddd, MMM dd, yyyy H:mm:ss tt\",\"ddd MMM d yyyy HH:mm:ss zzz\",\"MMddyyyy\",\"ddMMyyyy\",\"Mddyyyy\",\"ddMyyyy\",\"Mdyyyy\",\"dMyyyy\",\"yyyy\",\"Mdyy\",\"dMyy\",\"d\"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}\nreturn g._start.call({},s);};$D._parse=$D.parse;$D.parse=function(s){var r=null;if(!s){return null;}\nif(s instanceof Date){return s;}\ntry{r=$D.Grammar.start.call({},s.replace(/^\\s*(\\S*(\\s+\\S+)*)\\s*$/,\"$1\"));}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};$D.getParseFunction=function(fx){var fn=$D.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};};$D.parseExact=function(s,fx){return $D.getParseFunction(fx)(s);};}());"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-daterangepicker/daterangepicker.css",
    "content": ".daterangepicker.dropdown-menu {\n  max-width: none;\n}\n\n.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {\n  float: left;\n  margin: 4px;\n}\n\n.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {\n  float: right;\n  margin: 4px;\n}\n\n.daterangepicker .ranges {\n  width: 160px;\n  text-align: left;\n}\n\n.daterangepicker .ranges .range_inputs>div {\n  float: left;\n}\n\n.daterangepicker .ranges .range_inputs>div:nth-child(2) {\n  padding-left: 11px;\n}\n\n.daterangepicker .calendar {\n  display: none;\n  max-width: 230px;\n}\n\n.daterangepicker .calendar th, .daterangepicker .calendar td {\n  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n  white-space: nowrap;\n  text-align: center;\n}\n\n.daterangepicker .ranges label {\n  color: #333;\n  font-size: 11px;\n  margin-bottom: 2px;\n  text-transform: uppercase;\n  text-shadow: 1px 1px 0 #fff;\n}\n\n.daterangepicker .ranges input {\n  font-size: 11px;\n}\n\n.daterangepicker .ranges ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.daterangepicker .ranges li {\n  font-size: 13px;\n  background: #f5f5f5;\n  border: 1px solid #f5f5f5;\n  color: #08c;\n  padding: 3px 12px;\n  margin-bottom: 8px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  cursor: pointer;\n}\n\n.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {\n  background: #08c;\n  border: 1px solid #08c;\n  color: #fff;\n}\n\n.daterangepicker .calendar {\n  border: 1px solid #ddd;\n  padding: 4px;\n  border-radius: 4px;\n  background: #fff;\n}\n\n.daterangepicker {\n  position: absolute;\n  background: #fff;\n  top: 100px;\n  left: 20px;\n  padding: 4px;\n  margin-top: 1px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n\n.daterangepicker.opensleft:before {\n  position: absolute;\n  top: -7px;\n  right: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.daterangepicker.opensleft:after {\n  position: absolute;\n  top: -6px;\n  right: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.daterangepicker.opensright:before {\n  position: absolute;\n  top: -7px;\n  left: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.daterangepicker.opensright:after {\n  position: absolute;\n  top: -6px;\n  left: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.daterangepicker table {\n  width: 100%;\n  margin: 0;\n}\n\n.daterangepicker td, .daterangepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.daterangepicker td.off {\n  color: #999;\n}\n.daterangepicker td.disabled {\n  color: #999;\n}\n\n.daterangepicker td.available:hover, .daterangepicker th.available:hover {\n  background: #eee;\n}\n\n.daterangepicker td.active, .daterangepicker td.active:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.daterangepicker td.week, .daterangepicker th.week {\n    font-size: 80%;\n    color: #ccc;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-daterangepicker/daterangepicker.js",
    "content": "/**\n* @version: 1.0.1\n* @author: Dan Grossman http://www.dangrossman.info/\n* @date: 2012-08-20\n* @copyright: Copyright (c) 2012 Dan Grossman. All rights reserved.\n* @license: Licensed under Apache License v2.0. See http://www.apache.org/licenses/LICENSE-2.0\n* @website: http://www.improvely.com/\n*/\n!function ($) {\n\n    var DateRangePicker = function (element, options, cb) {\n        var hasOptions = typeof options == 'object'\n        var localeObject;\n\n        //state\n        this.startDate = Date.today();\n        this.endDate = Date.today();\n        this.minDate = false;\n        this.maxDate = false;\n        this.changed = false;\n        this.ranges = {};\n        this.opens = 'right';\n        this.cb = function () { };\n        this.format = 'MM/dd/yyyy';\n        this.separator = ' - ';\n        this.showWeekNumbers = false;\n        this.buttonClasses = ['btn-success'];\n        this.locale = {\n            applyLabel: 'Apply',\n            fromLabel: 'From',\n            toLabel: 'To',\n            weekLabel: 'W',\n            customRangeLabel: 'Custom Range',\n            daysOfWeek: Date.CultureInfo.shortestDayNames,\n            monthNames: Date.CultureInfo.monthNames,\n            firstDay: 0\n        };\n\n        localeObject = this.locale;\n\n        this.leftCalendar = {\n            month: Date.today().set({ day: 1, month: this.startDate.getMonth(), year: this.startDate.getFullYear() }),\n            calendar: Array()\n        };\n\n        this.rightCalendar = {\n            month: Date.today().set({ day: 1, month: this.endDate.getMonth(), year: this.endDate.getFullYear() }),\n            calendar: Array()\n        };\n\n        // by default, the daterangepicker element is placed at the bottom of HTML body\n        this.parentEl = 'body';\n\n        //element that triggered the date range picker\n        this.element = $(element);\n\n        if (this.element.hasClass('pull-right'))\n            this.opens = 'left';\n\n        if (this.element.is('input')) {\n            this.element.on({\n                click: $.proxy(this.show, this),\n                focus: $.proxy(this.show, this)\n            });\n        } else {\n            this.element.on('click', $.proxy(this.show, this));\n        }\n\n        if (hasOptions) {\n            if(typeof options.locale == 'object') {\n                $.each(localeObject, function (property, value) {\n                    localeObject[property] = options.locale[property] || value;\n                });\n            }\n        }\n\n        var DRPTemplate = '<div class=\"daterangepicker dropdown-menu\">' +\n                '<div class=\"calendar left\"></div>' +\n                '<div class=\"calendar right\"></div>' +\n                '<div class=\"ranges\">' +\n                  '<div class=\"range_inputs\">' +\n                    '<div>' +\n                      '<label for=\"daterangepicker_start\">' + this.locale.fromLabel + '</label>' +\n                      '<input class=\"input-mini\" type=\"text\" name=\"daterangepicker_start\" value=\"\" disabled=\"disabled\" />' +\n                    '</div>' +\n                    '<div>' +\n                      '<label for=\"daterangepicker_end\">' + this.locale.toLabel + '</label>' +\n                      '<input class=\"input-mini\" type=\"text\" name=\"daterangepicker_end\" value=\"\" disabled=\"disabled\" />' +\n                    '</div>' +\n                    '<button class=\"btn btn-small\" disabled=\"disabled\">' + this.locale.applyLabel + '</button>' +\n                  '</div>' +\n                '</div>' +\n              '</div>';\n\n        this.parentEl = (hasOptions && options.parentEl && $(options.parentEl)) || $(this.parentEl);\n        //the date range picker\n        this.container = $(DRPTemplate).appendTo(this.parentEl);\n\n        if (hasOptions) {\n\n            if (typeof options.format == 'string')\n                this.format = options.format;\n\n            if (typeof options.separator == 'string')\n                this.separator = options.separator;\n\n            if (typeof options.startDate == 'string')\n                this.startDate = Date.parse(options.startDate, this.format);\n\n            if (typeof options.endDate == 'string')\n                this.endDate = Date.parse(options.endDate, this.format);\n\n            if (typeof options.minDate == 'string')\n                this.minDate = Date.parse(options.minDate, this.format);\n\n            if (typeof options.maxDate == 'string')\n                this.maxDate = Date.parse(options.maxDate, this.format);\n\n\n            if (typeof options.startDate == 'object')\n                this.startDate = options.startDate;\n\n            if (typeof options.endDate == 'object')\n                this.endDate = options.endDate;\n\n            if (typeof options.minDate == 'object')\n                this.minDate = options.minDate;\n\n            if (typeof options.maxDate == 'object')\n                this.maxDate = options.maxDate;\n\n            if (typeof options.ranges == 'object') {\n                for (var range in options.ranges) {\n\n                    var start = options.ranges[range][0];\n                    var end = options.ranges[range][1];\n\n                    if (typeof start == 'string')\n                        start = Date.parse(start);\n\n                    if (typeof end == 'string')\n                        end = Date.parse(end);\n\n                    // If we have a min/max date set, bound this range\n                    // to it, but only if it would otherwise fall\n                    // outside of the min/max.\n                    if (this.minDate && start < this.minDate)\n                        start = this.minDate;\n\n                    if (this.maxDate && end > this.maxDate)\n                        end = this.maxDate;\n\n                    // If the end of the range is before the minimum (if min is set) OR\n                    // the start of the range is after the max (also if set) don't display this\n                    // range option.\n                    if ((this.minDate && end < this.minDate) || (this.maxDate && start > this.maxDate))\n                    {\n                        continue;\n                    }\n\n                    this.ranges[range] = [start, end];\n                }\n\n                var list = '<ul>';\n                for (var range in this.ranges) {\n                    list += '<li>' + range + '</li>';\n                }\n                list += '<li>' + this.locale.customRangeLabel + '</li>';\n                list += '</ul>';\n                this.container.find('.ranges').prepend(list);\n            }\n\n            // update day names order to firstDay\n            if (typeof options.locale == 'object') {\n                if (typeof options.locale.firstDay == 'number') {\n                    this.locale.firstDay = options.locale.firstDay;\n                    var iterator = options.locale.firstDay;\n                    while (iterator > 0) {\n                        this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\n                        iterator--;\n                    }\n                }\n            }\n\n            if (typeof options.opens == 'string')\n                this.opens = options.opens;\n\n            if (typeof options.showWeekNumbers == 'boolean') {\n                this.showWeekNumbers = options.showWeekNumbers;\n            }\n\n            if (typeof options.buttonClasses == 'string') {\n                this.buttonClasses = [options.buttonClasses];\n            }\n\n            if (typeof options.buttonClasses == 'object') {\n                this.buttonClasses = options.buttonClasses;\n            }\n\n        }\n\n        //apply CSS classes to buttons\n        var c = this.container;\n        $.each(this.buttonClasses, function (idx, val) {\n            c.find('button').addClass(val);\n        });\n\n        if (this.opens == 'right') {\n            //swap calendar positions\n            var left = this.container.find('.calendar.left');\n            var right = this.container.find('.calendar.right');\n            left.removeClass('left').addClass('right');\n            right.removeClass('right').addClass('left');\n        }\n\n        if (typeof options == 'undefined' || typeof options.ranges == 'undefined')\n            this.container.find('.calendar').show();\n\n        if (typeof cb == 'function')\n            this.cb = cb;\n\n        this.container.addClass('opens' + this.opens);\n\n        //event listeners\n        this.container.on('mousedown', $.proxy(this.mousedown, this));\n        this.container.find('.calendar').on('click', '.prev', $.proxy(this.clickPrev, this));\n        this.container.find('.calendar').on('click', '.next', $.proxy(this.clickNext, this));\n        this.container.find('.ranges').on('click', 'button', $.proxy(this.clickApply, this));\n\n        this.container.find('.calendar').on('click', 'td.available', $.proxy(this.clickDate, this));\n        this.container.find('.calendar').on('mouseenter', 'td.available', $.proxy(this.enterDate, this));\n        this.container.find('.calendar').on('mouseleave', 'td.available', $.proxy(this.updateView, this));\n\n        this.container.find('.ranges').on('click', 'li', $.proxy(this.clickRange, this));\n        this.container.find('.ranges').on('mouseenter', 'li', $.proxy(this.enterRange, this));\n        this.container.find('.ranges').on('mouseleave', 'li', $.proxy(this.updateView, this));\n\n        this.element.on('keyup', $.proxy(this.updateFromControl, this));\n\n        this.updateView();\n        this.updateCalendars();\n\n    };\n\n    DateRangePicker.prototype = {\n\n        constructor: DateRangePicker,\n\n        mousedown: function (e) {\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        updateView: function () {\n            this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n            this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n\n            this.container.find('input[name=daterangepicker_start]').val(this.startDate.toString(this.format));\n            this.container.find('input[name=daterangepicker_end]').val(this.endDate.toString(this.format));\n\n            if (this.startDate.equals(this.endDate) || this.startDate.isBefore(this.endDate)) {\n                this.container.find('button').removeAttr('disabled');\n            } else {\n                this.container.find('button').attr('disabled', 'disabled');\n            }\n        },\n\n        updateFromControl: function () {\n            if (!this.element.is('input')) return;\n\n            var dateString = this.element.val().split(this.separator);\n            var start = Date.parseExact(dateString[0], this.format);\n            var end = Date.parseExact(dateString[1], this.format);\n\n            if (start == null || end == null) return;\n            if (end.isBefore(start)) return;\n\n            this.startDate = start;\n            this.endDate = end;\n\n            this.updateView();\n            this.cb(this.startDate, this.endDate);\n            this.updateCalendars();\n        },\n\n        notify: function () {\n            this.updateView();\n\n            if (this.element.is('input')) {\n                this.element.val(this.startDate.toString(this.format) + this.separator + this.endDate.toString(this.format));\n            }\n            this.cb(this.startDate, this.endDate);\n        },\n\n        move: function () {\n            var parentOffset = {\n                top: this.parentEl.offset().top - this.parentEl.scrollTop(),\n                left: this.parentEl.offset().left - this.parentEl.scrollLeft()\n            };\n            if (this.opens == 'left') {\n                this.container.css({\n                    top: this.element.offset().top + this.element.outerHeight(),\n                    right: $(window).width() - this.element.offset().left - this.element.outerWidth() - parentOffset.left,\n                    left: 'auto'\n                });\n            } else {\n                this.container.css({\n                    top: this.element.offset().top + this.element.outerHeight(),\n                    left: this.element.offset().left - parentOffset.left,\n                    right: 'auto'\n                });\n            }\n        },\n\n        show: function (e) {\n            this.container.show();\n            this.move();\n\n            if (e) {\n                e.stopPropagation();\n                e.preventDefault();\n            }\n\n            this.changed = false;\n\n            $(document).on('mousedown', $.proxy(this.hide, this));\n        },\n\n        hide: function (e) {\n            this.container.hide();\n            $(document).off('mousedown', this.hide);\n\n            if (this.changed) {\n                this.changed = false;\n                this.notify();\n            }\n        },\n\n        enterRange: function (e) {\n            var label = e.target.innerHTML;\n            if (label == this.locale.customRangeLabel) {\n                this.updateView();\n            } else {\n                var dates = this.ranges[label];\n                this.container.find('input[name=daterangepicker_start]').val(dates[0].toString(this.format));\n                this.container.find('input[name=daterangepicker_end]').val(dates[1].toString(this.format));\n            }\n        },\n\n        clickRange: function (e) {\n            var label = e.target.innerHTML;\n            if (label == this.locale.customRangeLabel) {\n                this.container.find('.calendar').show();\n            } else {\n                var dates = this.ranges[label];\n\n                this.startDate = dates[0];\n                this.endDate = dates[1];\n\n                this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n                this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n                this.updateCalendars();\n\n                this.changed = true;\n\n                this.container.find('.calendar').hide();\n                this.hide();\n            }\n        },\n\n        clickPrev: function (e) {\n            var cal = $(e.target).parents('.calendar');\n            if (cal.hasClass('left')) {\n                this.leftCalendar.month.add({ months: -1 });\n            } else {\n                this.rightCalendar.month.add({ months: -1 });\n            }\n            this.updateCalendars();\n        },\n\n        clickNext: function (e) {\n            var cal = $(e.target).parents('.calendar');\n            if (cal.hasClass('left')) {\n                this.leftCalendar.month.add({ months: 1 });\n            } else {\n                this.rightCalendar.month.add({ months: 1 });\n            }\n            this.updateCalendars();\n        },\n\n        enterDate: function (e) {\n\n            var title = $(e.target).attr('title');\n            var row = title.substr(1, 1);\n            var col = title.substr(3, 1);\n            var cal = $(e.target).parents('.calendar');\n\n            if (cal.hasClass('left')) {\n                this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].toString(this.format));\n            } else {\n                this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].toString(this.format));\n            }\n\n        },\n\n        clickDate: function (e) {\n            var title = $(e.target).attr('title');\n            var row = title.substr(1, 1);\n            var col = title.substr(3, 1);\n            var cal = $(e.target).parents('.calendar');\n\n            if (cal.hasClass('left')) {\n                startDate = this.leftCalendar.calendar[row][col];\n                endDate = this.endDate;\n            } else {\n                startDate = this.startDate;\n                endDate = this.rightCalendar.calendar[row][col];\n            }\n\n            cal.find('td').removeClass('active');\n\n            if (startDate.equals(endDate) || startDate.isBefore(endDate)) {\n                $(e.target).addClass('active');\n                if (!startDate.equals(this.startDate) || !endDate.equals(this.endDate))\n                    this.changed = true;\n                this.startDate = startDate;\n                this.endDate = endDate;\n            }\n\n            this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n            this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n            this.updateCalendars();\n        },\n\n        clickApply: function (e) {\n            this.hide();\n        },\n\n        updateCalendars: function () {\n            this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.getMonth(), this.leftCalendar.month.getFullYear());\n            this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.getMonth(), this.rightCalendar.month.getFullYear());\n            this.container.find('.calendar.left').html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.endDate));\n            this.container.find('.calendar.right').html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.startDate, this.maxDate));\n        },\n\n        buildCalendar: function (month, year) {\n\n            var firstDay = Date.today().set({ day: 1, month: month, year: year });\n            var lastMonth = firstDay.clone().add(-1).day().getMonth();\n            var lastYear = firstDay.clone().add(-1).day().getFullYear();\n\n            var daysInMonth = Date.getDaysInMonth(year, month);\n            var daysInLastMonth = Date.getDaysInMonth(lastYear, lastMonth);\n\n            var dayOfWeek = firstDay.getDay();\n\n            //initialize a 6 rows x 7 columns array for the calendar\n            var calendar = Array();\n            for (var i = 0; i < 6; i++) {\n                calendar[i] = Array();\n            }\n\n            //populate the calendar with date objects\n            var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\n            if (startDay > daysInLastMonth)\n                startDay -= 7;\n\n            if (dayOfWeek == this.locale.firstDay)\n                startDay = daysInLastMonth - 6;\n\n            var curDate = Date.today().set({ day: startDay, month: lastMonth, year: lastYear });\n            for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = curDate.clone().add(1).day()) {\n                if (i > 0 && col % 7 == 0) {\n                    col = 0;\n                    row++;\n                }\n                calendar[row][col] = curDate;\n            }\n\n            return calendar;\n\n        },\n\n        renderCalendar: function (calendar, selected, minDate, maxDate) {\n            var html = '<table class=\"table-condensed\">';\n            html += '<thead>';\n            html += '<tr>';\n            \n            // add empty cell for week number\n            if (this.showWeekNumbers)\n                html += '<th></th>';\n            \n            if (!minDate || minDate < calendar[1][1])\n            {\n                html += '<th class=\"prev available\"><i class=\"icon-arrow-left\"></i></th>';\n            }\n            else\n            {\n                 html += '<th></th>';\n            }\n            html += '<th colspan=\"5\" style=\"width: auto\">' + this.locale.monthNames[calendar[1][1].getMonth()] + calendar[1][1].toString(\" yyyy\") + '</th>';\n            if (!maxDate || maxDate > calendar[1][1])\n            {\n                html += '<th class=\"next available\"><i class=\"icon-arrow-right\"></i></th>';\n            }\n            else\n            {\n                 html += '<th></th>';\n            }\n\n            html += '</tr>';\n            html += '<tr>';\n            \n            // add week number label\n            if (this.showWeekNumbers)\n                html += '<th class=\"week\">' + this.locale.weekLabel + '</th>';\n\n            $.each(this.locale.daysOfWeek, function (index, dayOfWeek) {\n                html += '<th>' + dayOfWeek + '</th>';\n            });\n\n            html += '</tr>';\n            html += '</thead>';\n            html += '<tbody>';\n\n            for (var row = 0; row < 6; row++) {\n                html += '<tr>';\n                \n                // add week number\n                if (this.showWeekNumbers)\n                    html += '<td class=\"week\">' + calendar[row][0].getWeek() + '</td>';\n                \n                for (var col = 0; col < 7; col++) {\n                    var cname = 'available ';\n                    cname += (calendar[row][col].getMonth() == calendar[1][1].getMonth()) ? '' : 'off';\n\n                    // Normalise the time so the comparison won't fail\n                    selected.setHours(0,0,0,0);\n\n                    if ( (minDate && calendar[row][col] < minDate) || (maxDate && calendar[row][col] > maxDate))\n                    {\n                        cname = 'off disabled';\n                    }\n                    else if (calendar[row][col].equals(selected))\n                    {\n                        cname += 'active';\n                    }\n                    \n                    var title = 'r' + row + 'c' + col;\n                    html += '<td class=\"' + cname + '\" title=\"' + title + '\">' + calendar[row][col].getDate() + '</td>';\n                }\n                html += '</tr>';\n            }\n\n            html += '</tbody>';\n            html += '</table>';\n\n            return html;\n\n        }\n\n    };\n\n    $.fn.daterangepicker = function (options, cb) {\n      this.each(function() {\n        var el = $(this);\n        if (!el.data('daterangepicker'))\n          el.data('daterangepicker', new DateRangePicker(el, options, cb));\n      });\n      return this;\n    };\n\n} (window.jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-timepicker/compiled/timepicker.css",
    "content": ".bootstrap-timepicker.dropdown-menu {\n    border-radius: 4px 4px 4px 4px;\n    display: none;\n    left: 0;\n    margin-top: 1px;\n    padding: 4px;\n    top: 0;\n    min-width: 10px;\n    z-index: 99999;\n}\n.bootstrap-timepicker.dropdown-menu.open {\n    display: inline-block;\n}\n.bootstrap-timepicker.dropdown-menu:before {\n    border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n    border-left: 7px solid transparent;\n    border-right: 7px solid transparent;\n    content: \"\";\n    left: 6px;\n    position: absolute;\n    top: -7px;\n}\n.bootstrap-timepicker.dropdown-menu:after {\n    border-bottom: 6px solid #FFFFFF;\n    border-left: 6px solid transparent;\n    border-right: 6px solid transparent;\n    content: \"\";\n    left: 7px;\n    position: absolute;\n    top: -6px;\n}\n.bootstrap-timepicker.modal {\n    margin-left: -100px;\n    margin-top: 0;\n    top: 30%;\n    width: 200px;\n}\n.bootstrap-timepicker.modal .modal-header h3 {\n    font-size: 16px !important;\n    margin-top: 3px;\n    margin-bottom: 3px;    \n}\n.bootstrap-timepicker.modal .modal-content {\n    padding: 0;\n}\n.bootstrap-timepicker table {\n    margin: 0;\n    width: 100%;\n}\n.bootstrap-timepicker table td {\n    height: 30px;\n    margin: 0;\n    padding: 2px;\n    text-align: center;\n}\n.bootstrap-timepicker table td span {\n    width: 100%;\n}\n.bootstrap-timepicker table td a {\n    border: 1px solid transparent;\n    display: inline-block;\n    margin: 0;\n    outline: 0 none;\n    padding: 8px 0;\n    width: 3em;\n}\n.bootstrap-timepicker table td a:hover {\n    background-color: #EEEEEE;\n    border-color: #DDDDDD;\n    border-radius: 4px 4px 4px 4px;\n    text-decoration: none;\n}\n.bootstrap-timepicker table td a i {\n    margin-top: 2px;\n}\n.bootstrap-timepicker table td input {\n    margin: 0;\n    text-align: center;\n    width: 25px;\n}\n.bootstrap-timepicker-component .add-on {\n    cursor: pointer;\n}\n.bootstrap-timepicker-component .add-on i {\n    display: block;\n    height: 16px;\n    width: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-timepicker/js/bootstrap-timepicker.js",
    "content": "/* =========================================================\n * bootstrap-timepicker.js\n * http://www.github.com/jdewit/bootstrap-timepicker\n * =========================================================\n * Copyright 2012\n *\n * Created By:\n * Joris de Wit @joris_dewit\n *\n * Contributions By:\n * Gilbert @mindeavor\n * Koen Punt info@koenpunt.nl\n * Nek\n * Chris Martin\n * Dominic Barnes contact@dominicbarnes.us\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function($) {\n\n    \"use strict\"; // jshint ;_;\n\n    /* TIMEPICKER PUBLIC CLASS DEFINITION\n     * ================================== */\n    var Timepicker = function(element, options) {\n        this.$element = $(element);\n        this.options = $.extend({}, $.fn.timepicker.defaults, options, this.$element.data());\n        this.minuteStep = this.options.minuteStep || this.minuteStep;\n        this.secondStep = this.options.secondStep || this.secondStep;\n        this.showMeridian = this.options.showMeridian || this.showMeridian;\n        this.showSeconds = this.options.showSeconds || this.showSeconds;\n        this.showInputs = this.options.showInputs || this.showInputs;\n        this.disableFocus = this.options.disableFocus || this.disableFocus;\n        this.template = this.options.template || this.template;\n        this.modalBackdrop = this.options.modalBackdrop || this.modalBackdrop;\n        this.defaultTime = this.options.defaultTime || this.defaultTime;\n        this.open = false;\n        this.init();\n    };\n\n    Timepicker.prototype = {\n\n        constructor: Timepicker\n\n        , init: function () {\n            if (this.$element.parent().hasClass('input-append')) {\n                this.$element.parent('.input-append').find('.add-on').on('click', $.proxy(this.showWidget, this));\n                this.$element.on({\n                    focus: $.proxy(this.highlightUnit, this),\n                    click: $.proxy(this.highlightUnit, this),\n                    keypress: $.proxy(this.elementKeypress, this),\n                    blur: $.proxy(this.blurElement, this)\n                });\n\n            } else {\n                if (this.template) {\n                    this.$element.on({\n                        focus: $.proxy(this.showWidget, this),\n                        click: $.proxy(this.showWidget, this),\n                        blur: $.proxy(this.blurElement, this)\n                    });\n                } else {\n                    this.$element.on({\n                        focus: $.proxy(this.highlightUnit, this),\n                        click: $.proxy(this.highlightUnit, this),\n                        keypress: $.proxy(this.elementKeypress, this),\n                        blur: $.proxy(this.blurElement, this)\n                    });\n                }\n            }\n\n\n            this.$widget = $(this.getTemplate()).appendTo('body');\n\n            this.$widget.on('click', $.proxy(this.widgetClick, this));\n\n            if (this.showInputs) {\n                this.$widget.find('input').on({\n                    click: function() { this.select(); },\n                    keypress: $.proxy(this.widgetKeypress, this),\n                    change: $.proxy(this.updateFromWidgetInputs, this)\n                });\n            }\n\n            this.setDefaultTime(this.defaultTime);\n        }\n\n        , showWidget: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            if (this.open) {\n                return;\n            }\n\n            this.$element.trigger('show');\n\n            if (this.disableFocus) {\n                this.$element.blur();\n            }\n\n            var pos = $.extend({}, this.$element.offset(), {\n                height: this.$element[0].offsetHeight\n            });\n\n            this.updateFromElementVal();\n\n            $('html')\n                .trigger('click.timepicker.data-api')\n                .one('click.timepicker.data-api', $.proxy(this.hideWidget, this));\n\n            if (this.template === 'modal') {\n                this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this));\n            } else {\n                this.$widget.css({\n                    top: pos.top + pos.height\n                    , left: pos.left\n                })\n\n                if (!this.open) {\n                    this.$widget.addClass('open');\n                }\n            }\n\n            this.open = true;\n            this.$element.trigger('shown');\n        }\n\n        , hideWidget: function(){\n            this.$element.trigger('hide');\n\n            if (this.template === 'modal') {\n                this.$widget.modal('hide');\n            } else {\n                this.$widget.removeClass('open');\n            }\n            this.open = false;\n            this.$element.trigger('hidden');\n        }\n\n        , widgetClick: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            var action = $(e.target).closest('a').data('action');\n            if (action) {\n                this[action]();\n                this.update();\n            }\n        }\n\n        , widgetKeypress: function(e) {\n            var input = $(e.target).closest('input').attr('name');\n\n            switch (e.keyCode) {\n                case 9: //tab\n                    if (this.showMeridian) {\n                        if (input == 'meridian') {\n                            this.hideWidget();\n                        }\n                    } else {\n                        if (this.showSeconds) {\n                            if (input == 'second') {\n                                this.hideWidget();\n                            }\n                        } else {\n                            if (input == 'minute') {\n                                this.hideWidget();\n                            }\n                        }\n                    }\n                break;\n                case 27: // escape\n                    this.hideWidget();\n                break;\n                case 38: // up arrow\n                    switch (input) {\n                        case 'hour':\n                            this.incrementHour();\n                        break;\n                        case 'minute':\n                            this.incrementMinute();\n                        break;\n                        case 'second':\n                            this.incrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.update();\n                break;\n                case 40: // down arrow\n                    switch (input) {\n                        case 'hour':\n                            this.decrementHour();\n                        break;\n                        case 'minute':\n                            this.decrementMinute();\n                        break;\n                        case 'second':\n                            this.decrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.update();\n                break;\n            }\n        }\n\n        , elementKeypress: function(e) {\n            var input = this.$element.get(0);\n            switch (e.keyCode) {\n                case 0: //input\n                break;\n                case 9: //tab\n                    this.updateFromElementVal();\n                    if (this.showMeridian) {\n                        if (this.highlightedUnit != 'meridian') {\n                            e.preventDefault();\n                            this.highlightNextUnit();\n                        }\n                    } else {\n                        if (this.showSeconds) {\n                            if (this.highlightedUnit != 'second') {\n                                e.preventDefault();\n                                this.highlightNextUnit();\n                            }\n                        } else {\n                            if (this.highlightedUnit != 'minute') {\n                                e.preventDefault();\n                                this.highlightNextUnit();\n                            }\n                        }\n                    }\n                break;\n                case 27: // escape\n                    this.updateFromElementVal();\n                break;\n                case 37: // left arrow\n                    this.updateFromElementVal();\n                    this.highlightPrevUnit();\n                break;\n                case 38: // up arrow\n                    switch (this.highlightedUnit) {\n                        case 'hour':\n                            this.incrementHour();\n                        break;\n                        case 'minute':\n                            this.incrementMinute();\n                        break;\n                        case 'second':\n                            this.incrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.updateElement();\n                break;\n                case 39: // right arrow\n                    this.updateFromElementVal();\n                    this.highlightNextUnit();\n                break;\n                case 40: // down arrow\n                    switch (this.highlightedUnit) {\n                        case 'hour':\n                            this.decrementHour();\n                        break;\n                        case 'minute':\n                            this.decrementMinute();\n                        break;\n                        case 'second':\n                            this.decrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.updateElement();\n                break;\n            }\n\n            if (e.keyCode !== 0 && e.keyCode !== 8 && e.keyCode !== 9 && e.keyCode !== 46) {\n                e.preventDefault();\n            }\n        }\n\n        , setValues: function(time) {\n            if (this.showMeridian) {\n                var arr = time.split(' ');\n                var timeArray = arr[0].split(':');\n                this.meridian = arr[1];\n            } else {\n                var timeArray = time.split(':');\n            }\n\n            this.hour = parseInt(timeArray[0], 10);\n            this.minute = parseInt(timeArray[1], 10);\n            this.second = parseInt(timeArray[2], 10);\n\n            if (isNaN(this.hour)) {\n                this.hour = 0;\n            }\n            if (isNaN(this.minute)) {\n                this.minute = 0;\n            }\n\n            if (this.showMeridian) {\n                if (this.hour > 12) {\n                    this.hour = 12;\n                } else if (this.hour < 1) {\n                    this.hour = 1;\n                }\n\n                if (this.meridian == 'am' || this.meridian == 'a') {\n                    this.meridian = 'AM';\n                } else if (this.meridian == 'pm' || this.meridian == 'p') {\n                    this.meridian = 'PM';\n                }\n\n                if (this.meridian != 'AM' && this.meridian != 'PM') {\n                    this.meridian = 'AM';\n                }\n            } else {\n                 if (this.hour >= 24) {\n                    this.hour = 23;\n                } else if (this.hour < 0) {\n                    this.hour = 0;\n                }\n            }\n\n            if (this.minute < 0) {\n                this.minute = 0;\n            } else if (this.minute >= 60) {\n                this.minute = 59;\n            }\n\n            if (this.showSeconds) {\n                if (isNaN(this.second)) {\n                    this.second = 0;\n                } else if (this.second < 0) {\n                    this.second = 0;\n                } else if (this.second >= 60) {\n                    this.second = 59;\n                }\n            }\n\n            if ( this.$element.val() != '' )\n                this.updateElement();\n            this.updateWidget();\n        }\n\n        , setMeridian: function(meridian) {\n            if (meridian == 'a' || meridian == 'am' || meridian == 'AM' ) {\n                this.meridian = 'AM';\n            } else if (meridian == 'p' || meridian == 'pm' || meridian == 'PM' ) {\n                this.meridian = 'PM';\n            } else {\n                this.updateWidget();\n            }\n\n            this.updateElement();\n        }\n\n        , setDefaultTime: function(defaultTime){\n            if (defaultTime) {\n                if (defaultTime === 'current') {\n                    var dTime = new Date();\n                    var hours = dTime.getHours();\n                    var minutes = Math.floor(dTime.getMinutes() / this.minuteStep) * this.minuteStep;\n                    var seconds = Math.floor(dTime.getSeconds() / this.secondStep) * this.secondStep;\n                    var meridian = \"AM\";\n                    if (this.showMeridian) {\n                        if (hours === 0) {\n                            hours = 12;\n                        } else if (hours >= 12) {\n                            if (hours > 12) {\n                                hours = hours - 12;\n                            }\n                            meridian = \"PM\";\n                        } else {\n                           meridian = \"AM\";\n                        }\n                    }\n                    this.hour = hours;\n                    this.minute = minutes;\n                    this.second = seconds;\n                    this.meridian = meridian;\n                } else if (defaultTime === 'value') {\n                    this.setValues(this.$element.val());\n                } else {\n                    this.setValues(defaultTime);\n                }\n                if ( this.$element.val() != '' )\n                    this.updateElement();\n                this.updateWidget();\n            } else {\n                this.hour = 0;\n                this.minute = 0;\n                this.second = 0;\n            }\n        }\n\n        , formatTime: function(hour, minute, second, meridian) {\n            hour = hour < 10 ? '0' + hour : hour;\n            minute = minute < 10 ? '0' + minute : minute;\n            second = second < 10 ? '0' + second : second;\n\n            return hour + ':' + minute + (this.showSeconds ? ':' + second : '') + (this.showMeridian ? ' ' + meridian : '');\n        }\n\n        , getTime: function() {\n            return this.formatTime(this.hour, this.minute, this.second, this.meridian);\n        }\n\n        , setTime: function(time) {\n            this.setValues(time);\n            this.update();\n        }\n\n        , update: function() {\n            this.updateElement();\n            this.updateWidget();\n        }\n\n        , blurElement: function() {\n          this.highlightedUnit = undefined;\n          this.updateFromElementVal();\n        }\n\n        , updateElement: function() {\n            var time = this.getTime();\n\n            this.$element.val(time).change();\n\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightHour();\n                break;\n                case 'minute':\n                    this.highlightMinute();\n                break;\n                case 'second':\n                    this.highlightSecond();\n                break;\n                case 'meridian':\n                    this.highlightMeridian();\n                break;\n            }\n        }\n\n        , updateWidget: function() {\n            if (this.showInputs) {\n                this.$widget.find('input.bootstrap-timepicker-hour').val(this.hour < 10 ? '0' + this.hour : this.hour);\n                this.$widget.find('input.bootstrap-timepicker-minute').val(this.minute < 10 ? '0' + this.minute : this.minute);\n                if (this.showSeconds) {\n                    this.$widget.find('input.bootstrap-timepicker-second').val(this.second < 10 ? '0' + this.second : this.second);\n                }\n                if (this.showMeridian) {\n                    this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian);\n                }\n            } else {\n                this.$widget.find('span.bootstrap-timepicker-hour').text(this.hour);\n                this.$widget.find('span.bootstrap-timepicker-minute').text(this.minute < 10 ? '0' + this.minute : this.minute);\n                if (this.showSeconds) {\n                    this.$widget.find('span.bootstrap-timepicker-second').text(this.second < 10 ? '0' + this.second : this.second);\n                }\n                if (this.showMeridian) {\n                    this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian);\n                }\n            }\n        }\n\n        , updateFromElementVal: function (e) {\n            var time = this.$element.val();\n            if (time) {\n                this.setValues(time);\n                this.updateWidget();\n            }\n        }\n\n        , updateFromWidgetInputs: function () {\n            var time = $('input.bootstrap-timepicker-hour', this.$widget).val() + ':' +\n                       $('input.bootstrap-timepicker-minute', this.$widget).val() +\n                       (this.showSeconds ?\n                           ':' + $('input.bootstrap-timepicker-second', this.$widget).val()\n                        : '') +\n                       (this.showMeridian ?\n                           ' ' + $('input.bootstrap-timepicker-meridian', this.$widget).val()\n                        : '');\n\n            this.setValues(time);\n        }\n\n        , getCursorPosition: function() {\n            var input = this.$element.get(0);\n\n            if ('selectionStart' in input) {\n                // Standard-compliant browsers\n                return input.selectionStart;\n            } else if (document.selection) {\n                // IE fix\n                input.focus();\n                var sel = document.selection.createRange();\n                var selLen = document.selection.createRange().text.length;\n                sel.moveStart('character', - input.value.length);\n\n                return sel.text.length - selLen;\n            }\n        }\n\n        , highlightUnit: function () {\n            var input = this.$element.get(0);\n\n            this.position = this.getCursorPosition();\n            if (this.position >= 0 && this.position <= 2) {\n                this.highlightHour();\n            } else if (this.position >= 3 && this.position <= 5) {\n                this.highlightMinute();\n            } else if (this.position >= 6 && this.position <= 8) {\n                if (this.showSeconds) {\n                    this.highlightSecond();\n                } else {\n                    this.highlightMeridian();\n                }\n            } else if (this.position >= 9 && this.position <= 11) {\n                this.highlightMeridian();\n            }\n        }\n\n        , highlightNextUnit: function() {\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightMinute();\n                break;\n                case 'minute':\n                    if (this.showSeconds) {\n                        this.highlightSecond();\n                    } else {\n                        this.highlightMeridian();\n                    }\n                break;\n                case 'second':\n                    this.highlightMeridian();\n                break;\n                case 'meridian':\n                    this.highlightHour();\n                break;\n            }\n        }\n\n        , highlightPrevUnit: function() {\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightMeridian();\n                break;\n                case 'minute':\n                    this.highlightHour();\n                break;\n                case 'second':\n                    this.highlightMinute();\n                break;\n                case 'meridian':\n                    if (this.showSeconds) {\n                        this.highlightSecond();\n                    } else {\n                        this.highlightMinute();\n                    }\n                break;\n            }\n        }\n\n        , highlightHour: function() {\n            this.highlightedUnit = 'hour';\n            this.$element.get(0).setSelectionRange(0,2);\n        }\n\n        , highlightMinute: function() {\n            this.highlightedUnit = 'minute';\n            this.$element.get(0).setSelectionRange(3,5);\n        }\n\n        , highlightSecond: function() {\n            this.highlightedUnit = 'second';\n            this.$element.get(0).setSelectionRange(6,8);\n        }\n\n        , highlightMeridian: function() {\n            this.highlightedUnit = 'meridian';\n            if (this.showSeconds) {\n                this.$element.get(0).setSelectionRange(9,11);\n            } else {\n                this.$element.get(0).setSelectionRange(6,8);\n            }\n        }\n\n        , incrementHour: function() {\n            if (this.showMeridian) {\n                if (this.hour === 11) {\n                    this.toggleMeridian();\n                } else if (this.hour === 12) {\n                    return this.hour = 1;\n                }\n            }\n            if (this.hour === 23) {\n                return this.hour = 0;\n            }\n            this.hour = this.hour + 1;\n        }\n\n        , decrementHour: function() {\n            if (this.showMeridian) {\n                if (this.hour === 1) {\n                    return this.hour = 12;\n                }\n                else if (this.hour === 12) {\n                    this.toggleMeridian();\n                }\n            }\n            if (this.hour === 0) {\n                return this.hour = 23;\n            }\n            this.hour = this.hour - 1;\n        }\n\n        , incrementMinute: function() {\n            var newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep);\n            if (newVal > 59) {\n                this.incrementHour();\n                this.minute = newVal - 60;\n            } else {\n                this.minute = newVal;\n            }\n        }\n\n        , decrementMinute: function() {\n            var newVal = this.minute - this.minuteStep;\n            if (newVal < 0) {\n                this.decrementHour();\n                this.minute = newVal + 60;\n            } else {\n                this.minute = newVal;\n            }\n        }\n\n        , incrementSecond: function() {\n            var newVal = this.second + this.secondStep - (this.second % this.secondStep);\n            if (newVal > 59) {\n                this.incrementMinute();\n                this.second = newVal - 60;\n            } else {\n                this.second = newVal;\n            }\n        }\n\n        , decrementSecond: function() {\n            var newVal = this.second - this.secondStep;\n            if (newVal < 0) {\n                this.decrementMinute();\n                this.second = newVal + 60;\n            } else {\n                this.second = newVal;\n            }\n        }\n\n        , toggleMeridian: function() {\n            this.meridian = this.meridian === 'AM' ? 'PM' : 'AM';\n\n            this.update();\n        }\n\n        , getTemplate: function() {\n            if (this.options.templates[this.options.template]) {\n                return this.options.templates[this.options.template];\n            }\n            if (this.showInputs) {\n                var hourTemplate = '<input type=\"text\" name=\"hour\" class=\"bootstrap-timepicker-hour\" maxlength=\"2\"/>';\n                var minuteTemplate = '<input type=\"text\" name=\"minute\" class=\"bootstrap-timepicker-minute\" maxlength=\"2\"/>';\n                var secondTemplate = '<input type=\"text\" name=\"second\" class=\"bootstrap-timepicker-second\" maxlength=\"2\"/>';\n                var meridianTemplate = '<input type=\"text\" name=\"meridian\" class=\"bootstrap-timepicker-meridian\" maxlength=\"2\"/>';\n            } else {\n                var hourTemplate = '<span class=\"bootstrap-timepicker-hour\"></span>';\n                var minuteTemplate = '<span class=\"bootstrap-timepicker-minute\"></span>';\n                var secondTemplate = '<span class=\"bootstrap-timepicker-second\"></span>';\n                var meridianTemplate = '<span class=\"bootstrap-timepicker-meridian\"></span>';\n            }\n            var templateContent = '<table class=\"'+ (this.showSeconds ? 'show-seconds' : '') +' '+ (this.showMeridian ? 'show-meridian' : '') +'\">'+\n                                       '<tr>'+\n                                           '<td><a href=\"#\" data-action=\"incrementHour\"><i class=\"icon-chevron-up\"></i></a></td>'+\n                                           '<td class=\"separator\">&nbsp;</td>'+\n                                           '<td><a href=\"#\" data-action=\"incrementMinute\"><i class=\"icon-chevron-up\"></i></a></td>'+\n                                           (this.showSeconds ?\n                                               '<td class=\"separator\">&nbsp;</td>'+\n                                               '<td><a href=\"#\" data-action=\"incrementSecond\"><i class=\"icon-chevron-up\"></i></a></td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                               '<td class=\"separator\">&nbsp;</td>'+\n                                               '<td class=\"meridian-column\"><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-up\"></i></a></td>'\n                                           : '') +\n                                       '</tr>'+\n                                       '<tr>'+\n                                           '<td>'+ hourTemplate +'</td> '+\n                                           '<td class=\"separator\">:</td>'+\n                                           '<td>'+ minuteTemplate +'</td> '+\n                                           (this.showSeconds ?\n                                                '<td class=\"separator\">:</td>'+\n                                                '<td>'+ secondTemplate +'</td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td>'+ meridianTemplate +'</td>'\n                                           : '') +\n                                       '</tr>'+\n                                       '<tr>'+\n                                           '<td><a href=\"#\" data-action=\"decrementHour\"><i class=\"icon-chevron-down\"></i></a></td>'+\n                                           '<td class=\"separator\"></td>'+\n                                           '<td><a href=\"#\" data-action=\"decrementMinute\"><i class=\"icon-chevron-down\"></i></a></td>'+\n                                           (this.showSeconds ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td><a href=\"#\" data-action=\"decrementSecond\"><i class=\"icon-chevron-down\"></i></a></td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-down\"></i></a></td>'\n                                           : '') +\n                                       '</tr>'+\n                                   '</table>';\n\n            var template;\n            switch(this.options.template) {\n                case 'modal':\n                    template = '<div class=\"bootstrap-timepicker modal hide fade in\" style=\"top: 30%; margin-top: 0; width: 200px; margin-left: -100px;\" data-backdrop=\"'+ (this.modalBackdrop ? 'true' : 'false') +'\">'+\n                                   '<div class=\"modal-header\">'+\n                                       '<a href=\"#\" class=\"close\" data-dismiss=\"modal\">×</a>'+\n                                       '<h3>Pick a Time</h3>'+\n                                   '</div>'+\n                                   '<div class=\"modal-content\">'+\n                                        templateContent +\n                                   '</div>'+\n                                   '<div class=\"modal-footer\">'+\n                                       '<a href=\"#\" class=\"btn btn-primary\" data-dismiss=\"modal\">Ok</a>'+\n                                   '</div>'+\n                               '</div>';\n\n                break;\n                case 'dropdown':\n                    template = '<div class=\"bootstrap-timepicker dropdown-menu\">'+\n                                    templateContent +\n                               '</div>';\n                break;\n\n            }\n            return template;\n        }\n    };\n\n\n    /* TIMEPICKER PLUGIN DEFINITION\n     * =========================== */\n\n    $.fn.timepicker = function (option) {\n        return this.each(function () {\n            var $this = $(this)\n            , data = $this.data('timepicker')\n            , options = typeof option == 'object' && option;\n            if (!data) {\n                $this.data('timepicker', (data = new Timepicker(this, options)));\n            }\n            if (typeof option == 'string') {\n                data[option]();\n            }\n        })\n    }\n\n    $.fn.timepicker.defaults = {\n      minuteStep: 15\n    , secondStep: 15\n    , disableFocus: false\n    , defaultTime: 'current'\n    , showSeconds: false\n    , showInputs: true\n    , showMeridian: true\n    , template: 'dropdown'\n    , modalBackdrop: false\n    , templates: {} // set custom templates\n    }\n\n    $.fn.timepicker.Constructor = Timepicker\n}(window.jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js",
    "content": "!function ($) {\n  \"use strict\";\n  // version: 2.8\n  // by Mattia Larentis - follow me on twitter! @SpiritualGuru\n\n  var addToAttribute = function (obj, array, value) {\n    var i = 0\n      , length = array.length;\n\n    for (; i < length; i++) {\n      obj = obj[array[i]] = obj[array[i]] || i == ( length - 1) ? value : {}\n    }\n  };\n\n  $.fn.toggleButtons = function (method) {\n    var $element\n      , $div\n      , transitionSpeed = 0.05\n      , methods = {\n        init: function (opt) {\n          this.each(function () {\n              var $spanLeft\n                , $spanRight\n                , options\n                , moving\n                , dataAttribute = {};\n\n              $element = $(this);\n              $element.addClass('toggle-button');\n\n              $.each($element.data(), function (i, el) {\n                var key\n                  , tmp = {};\n\n                if (i.indexOf(\"togglebutton\") === 0) {\n                  key = i.match(/[A-Z][a-z]+/g);\n                  key = $.map(key, function (n) {\n                    return (n.toLowerCase());\n                  });\n\n                  addToAttribute(tmp, key, el);\n                  dataAttribute = $.extend(true, dataAttribute, tmp);\n                }\n              });\n\n              options = $.extend(true, {}, $.fn.toggleButtons.defaults, opt, dataAttribute);\n\n              $(this).data('options', options);\n\n              $spanLeft = $('<span></span>').addClass(\"labelLeft\").text(options.label.enabled === undefined ? \"ON\" : options.label.enabled);\n              $spanRight = $('<span></span>').addClass(\"labelRight\").text(options.label.disabled === undefined ? \"OFF \" : options.label.disabled);\n\n              // html layout\n              $div = $element.find('input:checkbox').wrap($('<div></div>')).parent();\n              $div.append($spanLeft);\n              $div.append($('<label></label>').attr('for', $element.find('input').attr('id')));\n              $div.append($spanRight);\n\n              if ($element.find('input').is(':checked'))\n                $element.find('>div').css('left', \"0\");\n              else $element.find('>div').css('left', \"-50%\");\n\n              if (options.animated) {\n                if (options.transitionspeed !== undefined)\n                  if (/^(\\d*%$)/.test(options.transitionspeed))  // is a percent value?\n                    transitionSpeed = 0.05 * parseInt(options.transitionspeed) / 100;\n                  else\n                    transitionSpeed = options.transitionspeed;\n              }\n              else transitionSpeed = 0;\n\n              $(this).data('transitionSpeed', transitionSpeed * 1000);\n\n\n              options[\"width\"] /= 2;\n\n              // width of the bootstrap-toggle-button\n              $element\n                .css('width', options.width * 2)\n                .find('>div').css('width', options.width * 3)\n                .find('>span, >label').css('width', options.width);\n\n              // height of the bootstrap-toggle-button\n              $element\n                .css('height', options.height)\n                .find('span, label')\n                .css('height', options.height)\n                .filter('span')\n                .css('line-height', options.height + \"px\");\n\n              if ($element.find('input').is(':disabled'))\n                $(this).addClass('deactivate');\n\n              $element.find('span').css(options.font);\n\n\n              // enabled custom color\n              if (options.style.enabled === undefined) {\n                if (options.style.custom !== undefined && options.style.custom.enabled !== undefined && options.style.custom.enabled.background !== undefined) {\n                  $spanLeft.css('color', options.style.custom.enabled.color);\n                  if (options.style.custom.enabled.gradient === undefined)\n                    $spanLeft.css('background', options.style.custom.enabled.background);\n                  else $.each([\"-webkit-\", \"-moz-\", \"-o-\", \"\"], function (i, el) {\n                    $spanLeft.css('background-image', el + 'linear-gradient(top, ' + options.style.custom.enabled.background + ',' + options.style.custom.enabled.gradient + ')');\n                  });\n                }\n              }\n              else $spanLeft.addClass(options.style.enabled);\n\n              // disabled custom color\n              if (options.style.disabled === undefined) {\n                if (options.style.custom !== undefined && options.style.custom.disabled !== undefined && options.style.custom.disabled.background !== undefined) {\n                  $spanRight.css('color', options.style.custom.disabled.color);\n                  if (options.style.custom.disabled.gradient === undefined)\n                    $spanRight.css('background', options.style.custom.disabled.background);\n                  else $.each([\"-webkit-\", \"-moz-\", \"-o-\", \"\"], function (i, el) {\n                    $spanRight.css('background-image', el + 'linear-gradient(top, ' + options.style.custom.disabled.background + ',' + options.style.custom.disabled.gradient + ')');\n                  });\n                }\n              }\n              else $spanRight.addClass(options.style.disabled);\n\n              var changeStatus = function ($this) {\n                $this.siblings('label')\n                  .trigger('mousedown')\n                  .trigger('mouseup')\n                  .trigger('click');\n              };\n\n              $spanLeft.on('click', function (e) {\n                changeStatus($(this));\n              });\n              $spanRight.on('click', function (e) {\n                changeStatus($(this));\n              });\n\n              $element.find('input').on('change', function (e, skipOnChange) {\n                var $element = $(this).parent()\n                  , active = $(this).is(':checked')\n                  , $toggleButton = $(this).closest('.toggle-button');\n\n                $element.stop().animate({'left': active ? '0' : '-50%'}, $toggleButton.data('transitionSpeed'));\n\n                options = $toggleButton.data('options');\n\n                if (!skipOnChange)\n                  options.onChange($element, active, e);\n              });\n\n              $element.find('label').on('mousedown touchstart', function (e) {\n                moving = false;\n                e.preventDefault();\n                e.stopImmediatePropagation();\n\n                if ($(this).closest('.toggle-button').is('.deactivate'))\n                  $(this).off('click');\n                else {\n                  $(this).on('mousemove touchmove', function (e) {\n                    var $element = $(this).closest('.toggle-button')\n                      , relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left\n                      , percent = ((relativeX / (options.width * 2)) * 100);\n                    moving = true;\n\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n\n                    if (percent < 25)\n                      percent = 25;\n                    else if (percent > 75)\n                      percent = 75;\n\n                    $element.find('>div').css('left', (percent - 75) + \"%\");\n                  });\n\n                  $(this).on('click touchend', function (e) {\n                    var $target = $(e.target)\n                      , $myCheckBox = $target.siblings('input');\n\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n                    $(this).off('mouseleave');\n\n                    if (moving)\n                      if (parseInt($(this).parent().css('left')) < -25)\n                        $myCheckBox.attr('checked', false);\n                      else $myCheckBox.attr('checked', true);\n                    else $myCheckBox.attr(\"checked\", !$myCheckBox.is(\":checked\"));\n\n                    $myCheckBox.trigger('change');\n                  });\n\n                  $(this).on('mouseleave', function (e) {\n                    var $myCheckBox = $(this).siblings('input');\n\n                    e.preventDefault();\n                    e.stopImmediatePropagation();\n\n                    $(this).off('mouseleave');\n                    $(this).trigger('mouseup');\n\n                    if (parseInt($(this).parent().css('left')) < -25)\n                      $myCheckBox.attr('checked', false);\n                    else $myCheckBox.attr('checked', true);\n\n                    $myCheckBox.trigger('change');\n                  });\n\n                  $(this).on('mouseup', function (e) {\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n                    $(this).off('mousemove');\n                  });\n                }\n              });\n            }\n          );\n          return this;\n        },\n        toggleActivation: function () {\n          $(this).toggleClass('deactivate');\n        },\n        toggleState: function (skipOnChange) {\n          var $input = $(this).find('input');\n          $input.attr('checked', !$input.is(':checked')).trigger('change', skipOnChange);\n        },\n        setState: function(value, skipOnChange) {\n          $(this).find('input').attr('checked', value).trigger('change', skipOnChange);\n        },\n        status: function () {\n          return $(this).find('input:checkbox').is(':checked');\n        },\n        destroy: function () {\n          var $div = $(this).find('div')\n            , $checkbox;\n\n          $div.find(':not(input:checkbox)').remove();\n\n          $checkbox = $div.children();\n          $checkbox.unwrap().unwrap();\n\n          $checkbox.unbind('change');\n\n          return $checkbox;\n        }\n      };\n\n    if (methods[method])\n      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n    else if (typeof method === 'object' || !method)\n      return methods.init.apply(this, arguments);\n    else\n      $.error('Method ' + method + ' does not exist!');\n  };\n\n  $.fn.toggleButtons.defaults = {\n    onChange: function () {\n    },\n    width: 100,\n    height: 25,\n    font: {},\n    animated: true,\n    transitionspeed: undefined,\n    label: {\n      enabled: undefined,\n      disabled: undefined\n    },\n    style: {\n      enabled: undefined,\n      disabled: undefined,\n      custom: {\n        enabled: {\n          background: undefined,\n          gradient: undefined,\n          color: \"#FFFFFF\"\n        },\n        disabled: {\n          background: undefined,\n          gradient: undefined,\n          color: \"#FFFFFF\"\n        }\n      }\n    }\n  };\n}($);\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css",
    "content": "/* line 11, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button {\n  display: inline-block;\n  cursor: pointer;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  -ms-border-radius: 5px;\n  -o-border-radius: 5px;\n  border-radius: 5px;\n  border: 1px solid;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1);\n  position: relative;\n  text-align: left;\n  overflow: hidden;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n/* line 29, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button.deactivate {\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);\n  opacity: 0.5;\n  cursor: default !important;\n}\n/* line 32, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button.deactivate label, .toggle-button.deactivate span {\n  cursor: default !important;\n}\n/* line 36, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button > div {\n  display: inline-block;\n  width: 150px;\n  position: absolute;\n  top: 0;\n}\n/* line 41, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button > div.disabled {\n  left: -50%;\n}\n/* line 45, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button input[type=checkbox] {\n  display: none;\n}\n/* line 53, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span, .toggle-button label {\n  cursor: pointer;\n  position: relative;\n  float: left;\n  display: inline-block;\n}\n/* line 60, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button label {\n  background: #fefefe;\n  margin-left: -4px;\n  margin-right: -4px;\n  border: 1px solid #E6E6E6;\n  margin-top: -1px;\n  z-index: 100;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));\n  background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: -o-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: linear-gradient(top, #fefefe, #e6e6e6);\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n}\n/* line 72, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span {\n  color: #fefefe;\n  text-align: center;\n  font-weight: bold;\n  z-index: 1;\n}\n/* line 78, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.labelLeft {\n  -moz-border-radius-topleft: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  padding-left: 3px;\n}\n/* line 83, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.labelRight {\n  -moz-border-radius-topright: 4px;\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  color: black;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));\n  background-image: -webkit-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: -moz-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: -o-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: linear-gradient(bottom, #fefefe, #e6e6e6);\n  padding-right: 3px;\n}\n/* line 91, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.primary, .toggle-button span.labelLeft {\n  color: #fefefe;\n  background: #0088cc;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #0088cc), color-stop(100%, #0055cc));\n  background-image: -webkit-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: -moz-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: -o-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: linear-gradient(bottom, #0088cc, #0055cc);\n}\n/* line 96, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.info {\n  color: #fefefe;\n  background: #5bc0de;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4));\n  background-image: -webkit-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: -moz-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: -o-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: linear-gradient(bottom, #5bc0de, #2f96b4);\n}\n/* line 102, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.success {\n  color: #fefefe;\n  background: #62c462;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #62c462), color-stop(100%, #51a351));\n  background-image: -webkit-linear-gradient(bottom, #62c462, #51a351);\n  background-image: -moz-linear-gradient(bottom, #62c462, #51a351);\n  background-image: -o-linear-gradient(bottom, #62c462, #51a351);\n  background-image: linear-gradient(bottom, #62c462, #51a351);\n}\n/* line 108, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.warning {\n  color: #fefefe;\n  background: #dbb450;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dbb450), color-stop(100%, #f89406));\n  background-image: -webkit-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: -moz-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: -o-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: linear-gradient(bottom, #dbb450, #f89406);\n}\n/* line 114, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.danger {\n  color: #fefefe;\n  background: #ee5f5b;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f));\n  background-image: -webkit-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: -moz-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: -o-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: linear-gradient(bottom, #ee5f5b, #bd362f);\n}\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css",
    "content": "/*!\n * Bootstrap Tree v0.3\n *\n * Copyright 2012 Cutters Crossing\n * Bootstrap is Copyright 2012 Twitter, Inc.\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world by @cutterbl.\n */\n \n.tree,\n.branch {\n  list-style: none outside none;\n}\n.branch {\n  postion: relative;\n  height: 0;\n  margin: 0 0 0 15px;\n  overflow: hidden;\n}\n.branch.in {\n  height: auto;\n}\n\na:link,\na:visited,\na:hover,\na:active {\n  color: #000;\n  text-decoration: none;\n}\n\na:hover {\n  text-decoration: underline;\n  cursor: pointer;\n}\n/* Work in progress */\na.tree-toggle-icon-only {\n  height: 16px;\n  width: 20px;\n  line-height: 16px;\n  vertical-align: middle;\n  display: inline-block;\n  background: url(\"../img/bstree-halflings.png\") no-repeat;\n  background-position: 0 -22px;\n}\n\na.tree-toggle {\n  height: 16px;\n  padding-left: 20px;\n  line-height: 16px;\n  vertical-align: middle;\n  display: inline-block;\n  background: url(\"../img/bstree-halflings.png\") no-repeat;\n  background-position: 0 -22px;\n}\na.tree-toggle.closed, a.tree-toggle-icon-only.closed {\n  background-position: 0 1px;\n}"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js",
    "content": "/* =============================================================\n * bootstrap-tree.js v0.3\n * http://twitter.github.com/cutterbl/Bootstrap-Tree\n * \n * Inspired by Twitter Bootstrap, with credit to bits of code\n * from all over.\n * =============================================================\n * Copyright 2012 Cutters Crossing.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============================================================ */\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_;\n\n  var loading = \"<img src='assets/plugins/bootstrap-tree/bootstrap-tree/img/ajax-loader.gif' class='indicator' /> Loading ...\";\n  \n  /* TREE CLASS DEFINITION\n   * ========================= */\n\n  var Tree = function (element, options) {\n    \n    this.$element = $(element)\n    this.$tree = this.$element.closest(\".tree\")\n    this.parentage = GetParentage(this.$element)\n    this.options = $.extend({}, $.fn.tree.defaults, options)\n\n    if (this.options.parent) {\n      this.$parent = $(this.options.parent)\n    }\n\n    this.options.toggle && this.toggle()\n  }\n\n  Tree.prototype = {\n\n    constructor: Tree\n\n    , toggle: function () {\n      \n      var a, n, s\n        , currentStatus = this.$element.hasClass(\"in\")\n        , eventName = (!currentStatus) ? \"openbranch\" : \"closebranch\"\n          \n      this.$parent[currentStatus ? \"addClass\" : \"removeClass\"](\"closed\")\n      this.$element[currentStatus ? \"removeClass\" : \"addClass\"](\"in\")\n      \n      if (this.options.href) {\n        this._load()\n      }\n      \n      n = this.node()\n      // 'Action' (open|close) event\n      a = $.Event(eventName, {\n        node: n\n      })\n      // 'Select' event\n      s = $.Event(\"nodeselect\", {\n        node: n\n      })\n      \n      this.$parent.trigger(a).trigger(s)\n      \n    }\n\n    , _load: function () {\n        var data = $.extend({}, this.options)\n          , el = this.$element\n          , $this = $(this)\n          , options = this.options\n\n        // some config data we don't need to pass in the post\n        delete data.parent\n        delete data.href\n        delete data.callback\n\n        $.post(options.href, data, function (d, s, x){\n          \n          var doc, type = \"html\"\n            \n          if (options.callback) { // If a callback was defined in the data parameters\n            \n            var cb = window[options.callback].apply(el, [d, s, x]) // callbacks must return an object with 'doc' and 'type' keys\n            doc = cb.doc || d\n            type = cb.type || type\n            \n          } else {\n            \n            try {\n              doc = $.parseJSON(d)\n              type = \"json\"\n            } catch (err) {\n              doc = d\n            }\n            \n            if (type !== \"json\") {\n              try {\n                doc = $.parseXML(d)\n                type = \"xml\"\n              } catch (err) {\n                doc = d\n              }\n            }\n            \n          }\n          \n          switch (type) {\n            \n            case \"html\":\n              el.html(doc)\n              break\n              \n            default:\n              $this[0]._buildOutput(doc, type, el)\n              break\n              \n          }\n          \n        }, \"html\")\n    }\n    \n    , _buildOutput: function (doc, type, parent) {\n      \n      var nodes = this._buildNodes(doc, type)\n      \n      parent.empty().append(this._createNodes(nodes))\n      \n    }\n    \n    , _createNodes: function (nodes) {\n      \n      var els = []\n        , $this = $(this)\n      \n      $.each(nodes, function (ind, el) {\n        \n        var node = $(\"<li>\")\n          , role = (el.leaf) ? \"leaf\" : \"branch\"\n          , attributes = {}\n          , anchor = $(\"<a>\")\n        \n        attributes.role = role\n        \n        if (!el.leaf) {\n          \n          var branch = $(\"<ul>\").addClass(\"branch\")\n          \n          attributes['class'] = \"tree-toggle closed\" //fixed by keenthemes for ie8\n          attributes[\"data-toggle\"] = \"branch\"\n            \n        }\n        \n        if (el.value) attributes[\"data-value\"] = el.value\n          \n        if (el.id) attributes[\"data-itemid\"] = el.id\n        \n        for (var key in el) { // do we have some extras?\n          \n          if (key.indexOf(\"data-\") !== -1) attributes[key] = el[key]\n          \n        }\n        \n        attributes.href = (el.href) ? el.href : \"#\"\n          \n        // trade the anchor for a span tag, if it's a leaf\n        // and there's no href\n        if (el.leaf && attributes.href === \"#\") {\n          \n          anchor = $(\"<span>\")\n          delete attributes.href\n          \n        }\n        \n        anchor.attr(attributes)\n        \n        if (el.cls) anchor.addClass(el.cls)\n        if (!el.leaf && el.expanded && el.children.length) {\n          \n          anchor.removeClass(\"closed\")\n          branch.addClass(\"in\")\n          \n        }\n        \n        anchor.html(el.text)\n        node.append(anchor)\n        \n        if (!el.leaf && el.children && el.children.length) {\n          \n          branch.append($this[0]._createNodes(el.children))\n          node.append(branch)\n          \n        }\n        \n        els.push(node)\n        \n      })\n      \n      return els\n    }\n    \n    , _buildNodes: function (doc, type) {\n      \n      var nodes = []\n        , $el = this.$element\n      \n      if (type === \"json\") {\n        \n        nodes = this._parseJsonNodes(doc)\n        \n      } else if (type === \"xml\") {\n        \n        nodes = this._parseXmlNodes($(doc).find(\"nodes\").children())\n        \n      }\n      \n      return nodes\n    }\n    \n    , _parseJsonNodes: function (doc) {\n      \n      var nodes = []\n        , $this = $(this)\n      \n      $.each(doc, function (ind, el) {\n        \n        var opts = {}\n          , boolChkArr = [\"leaf\",\"expanded\",\"checkable\",\"checked\"]\n        \n        for (var item in el) {\n          \n          var nodeVal = (item !== \"children\") ? el[item] : $this[0]._parseJsonNodes(el.children)\n              \n          if (!$.isArray(nodeVal)) nodeVal = $.trim(nodeVal)\n          if (nodeVal.length) opts[item] = ($.inArray(item, boolChkArr) > -1) ? SetBoolean(nodeVal) : nodeVal\n              \n        }\n        \n        nodes.push(new Node(opts))\n      })\n      \n      return nodes\n      \n    }\n    \n    , _parseXmlNodes: function (doc) {\n      \n      var nodes = []\n        , $this = $(this)\n        , boolChkArr = [\"leaf\",\"expanded\",\"checkable\",\"checked\"]\n      \n      $.each(doc, function (ind, el) {\n        \n        var opts = {}\n          , $el = $(el)\n        \n        $.each($el.children(), function (x, i) {\n          \n          var $i = $(i)\n            , tagName = $i[0].nodeName\n            , nodeVal = (tagName !== \"children\") ? $i.text() : $this[0]._parseXmlNodes($i.children(\"node\"))\n                \n          if (!$.isArray(nodeVal)) nodeVal = $.trim(nodeVal)\n          if (nodeVal.length) opts[tagName] = ($.inArray(tagName, boolChkArr) > -1) ? SetBoolean(nodeVal) : nodeVal\n              \n        })\n        \n        nodes.push(new Node(opts))\n      })\n      \n      return nodes\n      \n    }\n\n    , getparentage: function () {\n      \n      return this.parentage\n      \n    }\n\n    , node: function (el) {\n      el = el || $(this)\n      \n      var node = $.extend(true, {}, (el[0] === $(this)[0]) ? $(this.$parent).data() : el.data())\n      \n      node.branch = this.$element\n      node.parentage = this.parentage\n      node.el = (el[0] === $(this)[0]) ? this.$parent : el\n      \n      delete node.parent\n      \n      return node\n      \n    }\n\n  }\n  \n  var Node = function (options) {\n    \n    $.extend(true, this, {\n      text: undefined,\n      leaf: false,\n      value: undefined,\n      expanded: false,\n      cls: undefined,\n      id: undefined,\n      href: undefined,\n      checkable: false,\n      checked: false,\n      children: []\n    }, options)\n    \n  }\n\n  var GetParentBranch = function ($this) {\n    \n    return $this.closest(\"ul.branch\").prev(\".tree-toggle\")\n    \n  }\n\n  var GetParentage = function ($this) {\n    \n    var arr = [], tmp\n    \n    tmp = GetParentBranch($this)\n    if (tmp.length) {\n      arr = GetParentage(tmp)\n      arr.push(tmp.attr(\"data-value\")||tmp.text())\n    }\n    \n    return arr\n    \n  }\n  \n  /**\n   * FUNCTION SetBoolean\n   * \n   * Takes any value, and returns it's boolean equivalent.\n   * \n   * @param value (any)\n   * @return (boolean)\n   */\n  var SetBoolean = function (value) {\n    \n    value = $.trim(value)\n    \n    if (typeof value === \"undefined\" || value === null) return false\n    \n    if (typeof value === \"string\" && !isNaN(value)) value = parseFloat(value)\n    \n    if (typeof value === \"string\") {\n      switch (value.toLowerCase()) {\n        case \"true\":\n        case \"yes\":\n          return true\n        case \"false\":\n        case \"no\":\n          return false\n      }\n    }\n    \n    return Boolean(value)\n  }\n\n\n  /* COLLAPSIBLE PLUGIN DEFINITION\n   * ============================== */\n\n  $.fn.tree = function (option) {\n    \n    return this.each(function () {\n      var $this = $(this)\n        , data = $this.data(\"tree\")\n        , options = typeof option == \"object\" && option\n        \n      if (!data) $this.data(\"tree\", (data = new Tree(this, options)))\n      if (typeof option == \"string\") data[option]()\n    })\n    \n  }\n\n  $.fn.tree.defaults = {\n      \n    toggle: true\n    \n  }\n\n  $.fn.tree.Constructor = Tree\n\n  /* COLLAPSIBLE DATA-API\n   * ==================== */\n\n  $(function () {\n    \n    $(\"body\").on(\"click.tree.data-api\", \"[data-toggle=branch]\", function (e) {\n      \n      e.preventDefault()\n      \n      var $this = $(this)\n        , target = $this.next(\".branch\")\n        , href = $this.attr(\"href\")\n        , option = $(target).data(\"tree\") ? \"toggle\" : $this.data()\n        \n      href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n      \n      if (!target.length) {\n        target = $('<ul>').addClass('branch').append(\"<li>\" + loading + \"</li>\").insertAfter($this)\n      }\n      \n      option.parent = $this\n      option.href = (href !== \"#\") ? href : undefined\n          \n      $(target).tree(option)\n      \n      return false\n    })\n    \n    $(\"body\").on(\"click.tree.data-api\", \"[data-role=leaf]\", function (e) {\n      \n      var $this = $(this)\n        , branch = $this.closest(\".branch\")\n        \n      // If not initialized, then create it\n      if (!$(branch).data(\"tree\")) {\n        \n        var $target = $(branch)\n          , branchlink = $target.prev(\"[data-toggle=branch]\")\n          , branchdata = branchlink.data()\n          , href = branchlink.attr(\"href\")\n        \n        href.replace(/.*(?=#[^\\s]+$)/, '')\n        \n        $target.tree($.extend({}, branchdata, {\n          \"toggle\": false,\n          \"parent\": branchlink,\n          \"href\": (href !== \"#\") ? href : undefined\n        }))\n      }\n      \n      e = $.Event(\"nodeselect\", {\n        node: $(branch).data(\"tree\").node($this)\n      })\n      \n      $this.trigger(e)\n      \n    })\n    \n  })\n\n}(window.jQuery);"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-tree/htmlexample.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-tree/jsonexample.json",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-tree/xmlexample.xml",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css",
    "content": "ul.wysihtml5-toolbar {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: block;\n}\n\nul.wysihtml5-toolbar::after {\n\tclear: both;\n\tdisplay: table;\n\tcontent: \"\";\n}\n\nul.wysihtml5-toolbar > li {\n\tfloat: left;\n\tdisplay: list-item;\n\tlist-style: none;\n\tmargin: 0 5px 10px 0;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=bold] {\n\tfont-weight: bold;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=italic] {\n\tfont-style: italic;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=underline] {\n\ttext-decoration: underline;\n}\n\nul.wysihtml5-toolbar a.btn.wysihtml5-command-active {\n\tbackground-image: none;\n\t-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\t-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\tbox-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\tbackground-color: #E6E6E6;\n\tbackground-color: #D9D9D9;\n\toutline: 0;\n}\n\nul.wysihtml5-commands-disabled .dropdown-menu {\n\tdisplay: none !important;\n}\n\nul.wysihtml5-toolbar div.wysihtml5-colors {\n  display:block;\n  width: 50px;\n  height: 20px;\n  margin-top: 2px;\n  margin-left: 5px;\n  position: absolute;\n  pointer-events: none;\n}\n\nul.wysihtml5-toolbar a.wysihtml5-colors-title {\n  padding-left: 70px;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"black\"] {\n  background: black !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"silver\"] {\n  background: silver !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"gray\"] {\n  background: gray !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"maroon\"] {\n  background: maroon !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"red\"] {\n  background: red !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"purple\"] {\n  background: purple !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"green\"] {\n  background: green !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"olive\"] {\n  background: olive !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"navy\"] {\n  background: navy !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"blue\"] {\n  background: blue !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"orange\"] {\n  background: orange !important;\n}"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js",
    "content": "!function($, wysi) {\n    \"use strict\";\n\n    var tpl = {\n        \"font-styles\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li class='dropdown'>\" +\n              \"<a class='btn dropdown-toggle\" + size + \"' data-toggle='dropdown' href='#'>\" +\n              \"<i class='icon-font'></i>&nbsp;<span class='current-font'>\" + locale.font_styles.normal + \"</span>&nbsp;<b class='caret'></b>\" +\n              \"</a>\" +\n              \"<ul class='dropdown-menu'>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='div'>\" + locale.font_styles.normal + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h1'>\" + locale.font_styles.h1 + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h2'>\" + locale.font_styles.h2 + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h3'>\" + locale.font_styles.h3 + \"</a></li>\" +\n              \"</ul>\" +\n            \"</li>\";\n        },\n\n        \"emphasis\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='bold' title='CTRL+B'>\" + locale.emphasis.bold + \"</a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='italic' title='CTRL+I'>\" + locale.emphasis.italic + \"</a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='underline' title='CTRL+U'>\" + locale.emphasis.underline + \"</a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"lists\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='insertUnorderedList' title='\" + locale.lists.unordered + \"'><i class='icon-list'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='insertOrderedList' title='\" + locale.lists.ordered + \"'><i class='icon-th-list'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='Outdent' title='\" + locale.lists.outdent + \"'><i class='icon-indent-right'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='Indent' title='\" + locale.lists.indent + \"'><i class='icon-indent-left'></i></a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"link\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='bootstrap-wysihtml5-insert-link-modal modal hide fade'>\" +\n                \"<div class='modal-header'>\" +\n                  \"<a class='close' data-dismiss='modal'>&times;</a>\" +\n                  \"<h3>\" + locale.link.insert + \"</h3>\" +\n                \"</div>\" +\n                \"<div class='modal-body'>\" +\n                  \"<input value='http://' class='bootstrap-wysihtml5-insert-link-url input-xlarge'>\" +\n                \"</div>\" +\n                \"<div class='modal-footer'>\" +\n                  \"<a href='#' class='btn' data-dismiss='modal'>\" + locale.link.cancel + \"</a>\" +\n                  \"<a href='#' class='btn btn-primary' data-dismiss='modal'>\" + locale.link.insert + \"</a>\" +\n                \"</div>\" +\n              \"</div>\" +\n              \"<a class='btn\" + size + \"' data-wysihtml5-command='createLink' title='\" + locale.link.insert + \"'><i class='icon-share'></i></a>\" +\n            \"</li>\";\n        },\n\n        \"image\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='bootstrap-wysihtml5-insert-image-modal modal hide fade'>\" +\n                \"<div class='modal-header'>\" +\n                  \"<a class='close' data-dismiss='modal'>&times;</a>\" +\n                  \"<h3>\" + locale.image.insert + \"</h3>\" +\n                \"</div>\" +\n                \"<div class='modal-body'>\" +\n                  \"<input value='http://' class='bootstrap-wysihtml5-insert-image-url input-xlarge'>\" +\n                \"</div>\" +\n                \"<div class='modal-footer'>\" +\n                  \"<a href='#' class='btn' data-dismiss='modal'>\" + locale.image.cancel + \"</a>\" +\n                  \"<a href='#' class='btn btn-primary' data-dismiss='modal'>\" + locale.image.insert + \"</a>\" +\n                \"</div>\" +\n              \"</div>\" +\n              \"<a class='btn\" + size + \"' data-wysihtml5-command='insertImage' title='\" + locale.image.insert + \"'><i class='icon-picture'></i></a>\" +\n            \"</li>\";\n        },\n\n        \"html\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-action='change_view' title='\" + locale.html.edit + \"'><i class='icon-pencil'></i></a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"color\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li class='dropdown'>\" +\n              \"<a class='btn dropdown-toggle\" + size + \"' data-toggle='dropdown' href='#'>\" +\n                \"<span class='current-color'>\" + locale.colours.black + \"</span>&nbsp;<b class='caret'></b>\" +\n              \"</a>\" +\n              \"<ul class='dropdown-menu'>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='black'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='black'>\" + locale.colours.black + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='silver'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='silver'>\" + locale.colours.silver + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='gray'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='gray'>\" + locale.colours.gray + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='maroon'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='maroon'>\" + locale.colours.maroon + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='red'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='red'>\" + locale.colours.red + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='purple'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='purple'>\" + locale.colours.purple + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='green'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='green'>\" + locale.colours.green + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='olive'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='olive'>\" + locale.colours.olive + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='navy'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='navy'>\" + locale.colours.navy + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='blue'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='blue'>\" + locale.colours.blue + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='orange'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='orange'>\" + locale.colours.orange + \"</a></li>\" +\n              \"</ul>\" +\n            \"</li>\";\n        }\n    };\n\n    var templates = function(key, locale, options) {\n        return tpl[key](locale, options);\n    };\n\n\n    var Wysihtml5 = function(el, options) {\n        this.el = el;\n        var toolbarOpts = options || defaultOptions;\n        for(var t in toolbarOpts.customTemplates) {\n          tpl[t] = toolbarOpts.customTemplates[t];\n        }\n        this.toolbar = this.createToolbar(el, toolbarOpts);\n        this.editor =  this.createEditor(options);\n\n        window.editor = this.editor;\n\n        $('iframe.wysihtml5-sandbox').each(function(i, el){\n            $(el.contentWindow).off('focus.wysihtml5').on({\n                'focus.wysihtml5' : function(){\n                    $('li.dropdown').removeClass('open');\n                }\n            });\n        });\n    };\n\n    Wysihtml5.prototype = {\n\n        constructor: Wysihtml5,\n\n        createEditor: function(options) {\n            options = options || {};\n            options.toolbar = this.toolbar[0];\n\n            var editor = new wysi.Editor(this.el[0], options);\n\n            if(options && options.events) {\n                for(var eventName in options.events) {\n                    editor.on(eventName, options.events[eventName]);\n                }\n            }\n            return editor;\n        },\n\n        createToolbar: function(el, options) {\n            var self = this;\n            var toolbar = $(\"<ul/>\", {\n                'class' : \"wysihtml5-toolbar\",\n                'style': \"display:none\"\n            });\n            var culture = options.locale || defaultOptions.locale || \"en\";\n            for(var key in defaultOptions) {\n                var value = false;\n\n                if(options[key] !== undefined) {\n                    if(options[key] === true) {\n                        value = true;\n                    }\n                } else {\n                    value = defaultOptions[key];\n                }\n\n                if(value === true) {\n                    toolbar.append(templates(key, locale[culture], options));\n\n                    if(key === \"html\") {\n                        this.initHtml(toolbar);\n                    }\n\n                    if(key === \"link\") {\n                        this.initInsertLink(toolbar);\n                    }\n\n                    if(key === \"image\") {\n                        this.initInsertImage(toolbar);\n                    }\n                }\n            }\n\n            if(options.toolbar) {\n                for(key in options.toolbar) {\n                    toolbar.append(options.toolbar[key]);\n                }\n            }\n\n            toolbar.find(\"a[data-wysihtml5-command='formatBlock']\").click(function(e) {\n                var target = e.target || e.srcElement;\n                var el = $(target);\n                self.toolbar.find('.current-font').text(el.html());\n            });\n\n            toolbar.find(\"a[data-wysihtml5-command='foreColor']\").click(function(e) {\n                var target = e.target || e.srcElement;\n                var el = $(target);\n                self.toolbar.find('.current-color').text(el.html());\n            });\n\n            this.el.before(toolbar);\n\n            return toolbar;\n        },\n\n        initHtml: function(toolbar) {\n            var changeViewSelector = \"a[data-wysihtml5-action='change_view']\";\n            toolbar.find(changeViewSelector).click(function(e) {\n                toolbar.find('a.btn').not(changeViewSelector).toggleClass('disabled');\n            });\n        },\n\n        initInsertImage: function(toolbar) {\n            var self = this;\n            var insertImageModal = toolbar.find('.bootstrap-wysihtml5-insert-image-modal');\n            var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url');\n            var insertButton = insertImageModal.find('a.btn-primary');\n            var initialValue = urlInput.val();\n\n            var insertImage = function() {\n                var url = urlInput.val();\n                urlInput.val(initialValue);\n                self.editor.currentView.element.focus();\n                self.editor.composer.commands.exec(\"insertImage\", url);\n            };\n\n            urlInput.keypress(function(e) {\n                if(e.which == 13) {\n                    insertImage();\n                    insertImageModal.modal('hide');\n                }\n            });\n\n            insertButton.click(insertImage);\n\n            insertImageModal.on('shown', function() {\n                urlInput.focus();\n            });\n\n            insertImageModal.on('hide', function() {\n                self.editor.currentView.element.focus();\n            });\n\n            toolbar.find('a[data-wysihtml5-command=insertImage]').click(function() {\n                var activeButton = $(this).hasClass(\"wysihtml5-command-active\");\n\n                if (!activeButton) {\n                    insertImageModal.modal('show');\n                    insertImageModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n                        e.stopPropagation();\n                    });\n                    return false;\n                }\n                else {\n                    return true;\n                }\n            });\n        },\n\n        initInsertLink: function(toolbar) {\n            var self = this;\n            var insertLinkModal = toolbar.find('.bootstrap-wysihtml5-insert-link-modal');\n            var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url');\n            var insertButton = insertLinkModal.find('a.btn-primary');\n            var initialValue = urlInput.val();\n\n            var insertLink = function() {\n                var url = urlInput.val();\n                urlInput.val(initialValue);\n                self.editor.currentView.element.focus();\n                self.editor.composer.commands.exec(\"createLink\", {\n                    href: url,\n                    target: \"_blank\",\n                    rel: \"nofollow\"\n                });\n            };\n            var pressedEnter = false;\n\n            urlInput.keypress(function(e) {\n                if(e.which == 13) {\n                    insertLink();\n                    insertLinkModal.modal('hide');\n                }\n            });\n\n            insertButton.click(insertLink);\n\n            insertLinkModal.on('shown', function() {\n                urlInput.focus();\n            });\n\n            insertLinkModal.on('hide', function() {\n                self.editor.currentView.element.focus();\n            });\n\n            toolbar.find('a[data-wysihtml5-command=createLink]').click(function() {\n                var activeButton = $(this).hasClass(\"wysihtml5-command-active\");\n\n                if (!activeButton) {\n                    insertLinkModal.appendTo('body').modal('show');\n                    insertLinkModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n                        e.stopPropagation();\n                    });\n                    return false;\n                }\n                else {\n                    return true;\n                }\n            });\n        }\n    };\n\n    // these define our public api\n    var methods = {\n        resetDefaults: function() {\n            $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache);\n        },\n        bypassDefaults: function(options) {\n            return this.each(function () {\n                var $this = $(this);\n                $this.data('wysihtml5', new Wysihtml5($this, options));\n            });\n        },\n        shallowExtend: function (options) {\n            var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {});\n            var that = this;\n            return methods.bypassDefaults.apply(that, [settings]);\n        },\n        deepExtend: function(options) {\n            var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {});\n            var that = this;\n            return methods.bypassDefaults.apply(that, [settings]);\n        },\n        init: function(options) {\n            var that = this;\n            return methods.shallowExtend.apply(that, [options]);\n        }\n    };\n\n    $.fn.wysihtml5 = function ( method ) {\n        if ( methods[method] ) {\n            return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));\n        } else if ( typeof method === 'object' || ! method ) {\n            return methods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist on jQuery.wysihtml5' );\n        }    \n    };\n\n    $.fn.wysihtml5.Constructor = Wysihtml5;\n\n    var defaultOptions = $.fn.wysihtml5.defaultOptions = {\n        \"font-styles\": true,\n        \"color\": false,\n        \"emphasis\": true,\n        \"lists\": true,\n        \"html\": false,\n        \"link\": true,\n        \"image\": true,\n        events: {},\n        parserRules: {\n            classes: {\n                // (path_to_project/lib/css/wysiwyg-color.css)\n                \"wysiwyg-color-silver\" : 1,\n                \"wysiwyg-color-gray\" : 1,\n                \"wysiwyg-color-white\" : 1,\n                \"wysiwyg-color-maroon\" : 1,\n                \"wysiwyg-color-red\" : 1,\n                \"wysiwyg-color-purple\" : 1,\n                \"wysiwyg-color-fuchsia\" : 1,\n                \"wysiwyg-color-green\" : 1,\n                \"wysiwyg-color-lime\" : 1,\n                \"wysiwyg-color-olive\" : 1,\n                \"wysiwyg-color-yellow\" : 1,\n                \"wysiwyg-color-navy\" : 1,\n                \"wysiwyg-color-blue\" : 1,\n                \"wysiwyg-color-teal\" : 1,\n                \"wysiwyg-color-aqua\" : 1,\n                \"wysiwyg-color-orange\" : 1\n            },\n            tags: {\n                \"b\":  {},\n                \"i\":  {},\n                \"br\": {},\n                \"ol\": {},\n                \"ul\": {},\n                \"li\": {},\n                \"h1\": {},\n                \"h2\": {},\n                \"h3\": {},\n                \"blockquote\": {},\n                \"u\": 1,\n                \"img\": {\n                    \"check_attributes\": {\n                        \"width\": \"numbers\",\n                        \"alt\": \"alt\",\n                        \"src\": \"url\",\n                        \"height\": \"numbers\"\n                    }\n                },\n                \"a\":  {\n                    set_attributes: {\n                        target: \"_blank\",\n                        rel:    \"nofollow\"\n                    },\n                    check_attributes: {\n                        href:   \"url\" // important to avoid XSS\n                    }\n                },\n                \"span\": 1,\n                \"div\": 1\n            }\n        },\n        stylesheets: [\"lib/css/wysiwyg-color.css\"], // (path_to_project/lib/css/wysiwyg-color.css)\n        locale: \"en\"\n    };\n\n    if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') {\n        $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions);\n    }\n\n    var locale = $.fn.wysihtml5.locale = {\n        en: {\n            font_styles: {\n                normal: \"Normal text\",\n                h1: \"Heading 1\",\n                h2: \"Heading 2\",\n                h3: \"Heading 3\"\n            },\n            emphasis: {\n                bold: \"Bold\",\n                italic: \"Italic\",\n                underline: \"Underline\"\n            },\n            lists: {\n                unordered: \"Unordered list\",\n                ordered: \"Ordered list\",\n                outdent: \"Outdent\",\n                indent: \"Indent\"\n            },\n            link: {\n                insert: \"Insert link\",\n                cancel: \"Cancel\"\n            },\n            image: {\n                insert: \"Insert image\",\n                cancel: \"Cancel\"\n            },\n            html: {\n                edit: \"Edit HTML\"\n            },\n            colours: {\n                black: \"Black\",\n                silver: \"Silver\",\n                gray: \"Grey\",\n                maroon: \"Maroon\",\n                red: \"Red\",\n                purple: \"Purple\",\n                green: \"Green\",\n                olive: \"Olive\",\n                navy: \"Navy\",\n                blue: \"Blue\",\n                orange: \"Orange\"\n            }\n        }\n    };\n\n}(window.jQuery, window.wysihtml5);"
  },
  {
    "path": "src/main/webapp/assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js",
    "content": "/**\n * @license wysihtml5 v0.3.0\n * https://github.com/xing/wysihtml5\n *\n * Author: Christopher Blum (https://github.com/tiff)\n *\n * Copyright (C) 2012 XING AG\n * Licensed under the MIT license (MIT)\n *\n */\nvar wysihtml5 = {\n  version: \"0.3.0\",\n  \n  // namespaces\n  commands:   {},\n  dom:        {},\n  quirks:     {},\n  toolbar:    {},\n  lang:       {},\n  selection:  {},\n  views:      {},\n  \n  INVISIBLE_SPACE: \"\\uFEFF\",\n  \n  EMPTY_FUNCTION: function() {},\n  \n  ELEMENT_NODE: 1,\n  TEXT_NODE:    3,\n  \n  BACKSPACE_KEY:  8,\n  ENTER_KEY:      13,\n  ESCAPE_KEY:     27,\n  SPACE_KEY:      32,\n  DELETE_KEY:     46\n};/**\n * @license Rangy, a cross-browser JavaScript range and selection library\n * http://code.google.com/p/rangy/\n *\n * Copyright 2011, Tim Down\n * Licensed under the MIT license.\n * Version: 1.2.2\n * Build date: 13 November 2011\n */\nwindow['rangy'] = (function() {\n\n\n    var OBJECT = \"object\", FUNCTION = \"function\", UNDEFINED = \"undefined\";\n\n    var domRangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\",\n        \"commonAncestorContainer\", \"START_TO_START\", \"START_TO_END\", \"END_TO_START\", \"END_TO_END\"];\n\n    var domRangeMethods = [\"setStart\", \"setStartBefore\", \"setStartAfter\", \"setEnd\", \"setEndBefore\",\n        \"setEndAfter\", \"collapse\", \"selectNode\", \"selectNodeContents\", \"compareBoundaryPoints\", \"deleteContents\",\n        \"extractContents\", \"cloneContents\", \"insertNode\", \"surroundContents\", \"cloneRange\", \"toString\", \"detach\"];\n\n    var textRangeProperties = [\"boundingHeight\", \"boundingLeft\", \"boundingTop\", \"boundingWidth\", \"htmlText\", \"text\"];\n\n    // Subset of TextRange's full set of methods that we're interested in\n    var textRangeMethods = [\"collapse\", \"compareEndPoints\", \"duplicate\", \"getBookmark\", \"moveToBookmark\",\n        \"moveToElementText\", \"parentElement\", \"pasteHTML\", \"select\", \"setEndPoint\", \"getBoundingClientRect\"];\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Trio of functions taken from Peter Michaux's article:\n    // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting\n    function isHostMethod(o, p) {\n        var t = typeof o[p];\n        return t == FUNCTION || (!!(t == OBJECT && o[p])) || t == \"unknown\";\n    }\n\n    function isHostObject(o, p) {\n        return !!(typeof o[p] == OBJECT && o[p]);\n    }\n\n    function isHostProperty(o, p) {\n        return typeof o[p] != UNDEFINED;\n    }\n\n    // Creates a convenience function to save verbose repeated calls to tests functions\n    function createMultiplePropertyTest(testFunc) {\n        return function(o, props) {\n            var i = props.length;\n            while (i--) {\n                if (!testFunc(o, props[i])) {\n                    return false;\n                }\n            }\n            return true;\n        };\n    }\n\n    // Next trio of functions are a convenience to save verbose repeated calls to previous two functions\n    var areHostMethods = createMultiplePropertyTest(isHostMethod);\n    var areHostObjects = createMultiplePropertyTest(isHostObject);\n    var areHostProperties = createMultiplePropertyTest(isHostProperty);\n\n    function isTextRange(range) {\n        return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties);\n    }\n\n    var api = {\n        version: \"1.2.2\",\n        initialized: false,\n        supported: true,\n\n        util: {\n            isHostMethod: isHostMethod,\n            isHostObject: isHostObject,\n            isHostProperty: isHostProperty,\n            areHostMethods: areHostMethods,\n            areHostObjects: areHostObjects,\n            areHostProperties: areHostProperties,\n            isTextRange: isTextRange\n        },\n\n        features: {},\n\n        modules: {},\n        config: {\n            alertOnWarn: false,\n            preferTextRange: false\n        }\n    };\n\n    function fail(reason) {\n        window.alert(\"Rangy not supported in your browser. Reason: \" + reason);\n        api.initialized = true;\n        api.supported = false;\n    }\n\n    api.fail = fail;\n\n    function warn(msg) {\n        var warningMessage = \"Rangy warning: \" + msg;\n        if (api.config.alertOnWarn) {\n            window.alert(warningMessage);\n        } else if (typeof window.console != UNDEFINED && typeof window.console.log != UNDEFINED) {\n            window.console.log(warningMessage);\n        }\n    }\n\n    api.warn = warn;\n\n    if ({}.hasOwnProperty) {\n        api.util.extend = function(o, props) {\n            for (var i in props) {\n                if (props.hasOwnProperty(i)) {\n                    o[i] = props[i];\n                }\n            }\n        };\n    } else {\n        fail(\"hasOwnProperty not supported\");\n    }\n\n    var initListeners = [];\n    var moduleInitializers = [];\n\n    // Initialization\n    function init() {\n        if (api.initialized) {\n            return;\n        }\n        var testRange;\n        var implementsDomRange = false, implementsTextRange = false;\n\n        // First, perform basic feature tests\n\n        if (isHostMethod(document, \"createRange\")) {\n            testRange = document.createRange();\n            if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) {\n                implementsDomRange = true;\n            }\n            testRange.detach();\n        }\n\n        var body = isHostObject(document, \"body\") ? document.body : document.getElementsByTagName(\"body\")[0];\n\n        if (body && isHostMethod(body, \"createTextRange\")) {\n            testRange = body.createTextRange();\n            if (isTextRange(testRange)) {\n                implementsTextRange = true;\n            }\n        }\n\n        if (!implementsDomRange && !implementsTextRange) {\n            fail(\"Neither Range nor TextRange are implemented\");\n        }\n\n        api.initialized = true;\n        api.features = {\n            implementsDomRange: implementsDomRange,\n            implementsTextRange: implementsTextRange\n        };\n\n        // Initialize modules and call init listeners\n        var allListeners = moduleInitializers.concat(initListeners);\n        for (var i = 0, len = allListeners.length; i < len; ++i) {\n            try {\n                allListeners[i](api);\n            } catch (ex) {\n                if (isHostObject(window, \"console\") && isHostMethod(window.console, \"log\")) {\n                    window.console.log(\"Init listener threw an exception. Continuing.\", ex);\n                }\n\n            }\n        }\n    }\n\n    // Allow external scripts to initialize this library in case it's loaded after the document has loaded\n    api.init = init;\n\n    // Execute listener immediately if already initialized\n    api.addInitListener = function(listener) {\n        if (api.initialized) {\n            listener(api);\n        } else {\n            initListeners.push(listener);\n        }\n    };\n\n    var createMissingNativeApiListeners = [];\n\n    api.addCreateMissingNativeApiListener = function(listener) {\n        createMissingNativeApiListeners.push(listener);\n    };\n\n    function createMissingNativeApi(win) {\n        win = win || window;\n        init();\n\n        // Notify listeners\n        for (var i = 0, len = createMissingNativeApiListeners.length; i < len; ++i) {\n            createMissingNativeApiListeners[i](win);\n        }\n    }\n\n    api.createMissingNativeApi = createMissingNativeApi;\n\n    /**\n     * @constructor\n     */\n    function Module(name) {\n        this.name = name;\n        this.initialized = false;\n        this.supported = false;\n    }\n\n    Module.prototype.fail = function(reason) {\n        this.initialized = true;\n        this.supported = false;\n\n        throw new Error(\"Module '\" + this.name + \"' failed to load: \" + reason);\n    };\n\n    Module.prototype.warn = function(msg) {\n        api.warn(\"Module \" + this.name + \": \" + msg);\n    };\n\n    Module.prototype.createError = function(msg) {\n        return new Error(\"Error in Rangy \" + this.name + \" module: \" + msg);\n    };\n\n    api.createModule = function(name, initFunc) {\n        var module = new Module(name);\n        api.modules[name] = module;\n\n        moduleInitializers.push(function(api) {\n            initFunc(api, module);\n            module.initialized = true;\n            module.supported = true;\n        });\n    };\n\n    api.requireModules = function(modules) {\n        for (var i = 0, len = modules.length, module, moduleName; i < len; ++i) {\n            moduleName = modules[i];\n            module = api.modules[moduleName];\n            if (!module || !(module instanceof Module)) {\n                throw new Error(\"Module '\" + moduleName + \"' not found\");\n            }\n            if (!module.supported) {\n                throw new Error(\"Module '\" + moduleName + \"' not supported\");\n            }\n        }\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Wait for document to load before running tests\n\n    var docReady = false;\n\n    var loadHandler = function(e) {\n\n        if (!docReady) {\n            docReady = true;\n            if (!api.initialized) {\n                init();\n            }\n        }\n    };\n\n    // Test whether we have window and document objects that we will need\n    if (typeof window == UNDEFINED) {\n        fail(\"No window found\");\n        return;\n    }\n    if (typeof document == UNDEFINED) {\n        fail(\"No document found\");\n        return;\n    }\n\n    if (isHostMethod(document, \"addEventListener\")) {\n        document.addEventListener(\"DOMContentLoaded\", loadHandler, false);\n    }\n\n    // Add a fallback in case the DOMContentLoaded event isn't supported\n    if (isHostMethod(window, \"addEventListener\")) {\n        window.addEventListener(\"load\", loadHandler, false);\n    } else if (isHostMethod(window, \"attachEvent\")) {\n        window.attachEvent(\"onload\", loadHandler);\n    } else {\n        fail(\"Window does not have required addEventListener or attachEvent method\");\n    }\n\n    return api;\n})();\nrangy.createModule(\"DomUtil\", function(api, module) {\n\n    var UNDEF = \"undefined\";\n    var util = api.util;\n\n    // Perform feature tests\n    if (!util.areHostMethods(document, [\"createDocumentFragment\", \"createElement\", \"createTextNode\"])) {\n        module.fail(\"document missing a Node creation method\");\n    }\n\n    if (!util.isHostMethod(document, \"getElementsByTagName\")) {\n        module.fail(\"document missing getElementsByTagName method\");\n    }\n\n    var el = document.createElement(\"div\");\n    if (!util.areHostMethods(el, [\"insertBefore\", \"appendChild\", \"cloneNode\"] ||\n            !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]))) {\n        module.fail(\"Incomplete Element implementation\");\n    }\n\n    // innerHTML is required for Range's createContextualFragment method\n    if (!util.isHostProperty(el, \"innerHTML\")) {\n        module.fail(\"Element is missing innerHTML property\");\n    }\n\n    var textNode = document.createTextNode(\"test\");\n    if (!util.areHostMethods(textNode, [\"splitText\", \"deleteData\", \"insertData\", \"appendData\", \"cloneNode\"] ||\n            !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]) ||\n            !util.areHostProperties(textNode, [\"data\"]))) {\n        module.fail(\"Incomplete Text Node implementation\");\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been\n    // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that\n    // contains just the document as a single element and the value searched for is the document.\n    var arrayContains = /*Array.prototype.indexOf ?\n        function(arr, val) {\n            return arr.indexOf(val) > -1;\n        }:*/\n\n        function(arr, val) {\n            var i = arr.length;\n            while (i--) {\n                if (arr[i] === val) {\n                    return true;\n                }\n            }\n            return false;\n        };\n\n    // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI\n    function isHtmlNamespace(node) {\n        var ns;\n        return typeof node.namespaceURI == UNDEF || ((ns = node.namespaceURI) === null || ns == \"http://www.w3.org/1999/xhtml\");\n    }\n\n    function parentElement(node) {\n        var parent = node.parentNode;\n        return (parent.nodeType == 1) ? parent : null;\n    }\n\n    function getNodeIndex(node) {\n        var i = 0;\n        while( (node = node.previousSibling) ) {\n            i++;\n        }\n        return i;\n    }\n\n    function getNodeLength(node) {\n        var childNodes;\n        return isCharacterDataNode(node) ? node.length : ((childNodes = node.childNodes) ? childNodes.length : 0);\n    }\n\n    function getCommonAncestor(node1, node2) {\n        var ancestors = [], n;\n        for (n = node1; n; n = n.parentNode) {\n            ancestors.push(n);\n        }\n\n        for (n = node2; n; n = n.parentNode) {\n            if (arrayContains(ancestors, n)) {\n                return n;\n            }\n        }\n\n        return null;\n    }\n\n    function isAncestorOf(ancestor, descendant, selfIsAncestor) {\n        var n = selfIsAncestor ? descendant : descendant.parentNode;\n        while (n) {\n            if (n === ancestor) {\n                return true;\n            } else {\n                n = n.parentNode;\n            }\n        }\n        return false;\n    }\n\n    function getClosestAncestorIn(node, ancestor, selfIsAncestor) {\n        var p, n = selfIsAncestor ? node : node.parentNode;\n        while (n) {\n            p = n.parentNode;\n            if (p === ancestor) {\n                return n;\n            }\n            n = p;\n        }\n        return null;\n    }\n\n    function isCharacterDataNode(node) {\n        var t = node.nodeType;\n        return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment\n    }\n\n    function insertAfter(node, precedingNode) {\n        var nextNode = precedingNode.nextSibling, parent = precedingNode.parentNode;\n        if (nextNode) {\n            parent.insertBefore(node, nextNode);\n        } else {\n            parent.appendChild(node);\n        }\n        return node;\n    }\n\n    // Note that we cannot use splitText() because it is bugridden in IE 9.\n    function splitDataNode(node, index) {\n        var newNode = node.cloneNode(false);\n        newNode.deleteData(0, index);\n        node.deleteData(index, node.length - index);\n        insertAfter(newNode, node);\n        return newNode;\n    }\n\n    function getDocument(node) {\n        if (node.nodeType == 9) {\n            return node;\n        } else if (typeof node.ownerDocument != UNDEF) {\n            return node.ownerDocument;\n        } else if (typeof node.document != UNDEF) {\n            return node.document;\n        } else if (node.parentNode) {\n            return getDocument(node.parentNode);\n        } else {\n            throw new Error(\"getDocument: no document found for node\");\n        }\n    }\n\n    function getWindow(node) {\n        var doc = getDocument(node);\n        if (typeof doc.defaultView != UNDEF) {\n            return doc.defaultView;\n        } else if (typeof doc.parentWindow != UNDEF) {\n            return doc.parentWindow;\n        } else {\n            throw new Error(\"Cannot get a window object for node\");\n        }\n    }\n\n    function getIframeDocument(iframeEl) {\n        if (typeof iframeEl.contentDocument != UNDEF) {\n            return iframeEl.contentDocument;\n        } else if (typeof iframeEl.contentWindow != UNDEF) {\n            return iframeEl.contentWindow.document;\n        } else {\n            throw new Error(\"getIframeWindow: No Document object found for iframe element\");\n        }\n    }\n\n    function getIframeWindow(iframeEl) {\n        if (typeof iframeEl.contentWindow != UNDEF) {\n            return iframeEl.contentWindow;\n        } else if (typeof iframeEl.contentDocument != UNDEF) {\n            return iframeEl.contentDocument.defaultView;\n        } else {\n            throw new Error(\"getIframeWindow: No Window object found for iframe element\");\n        }\n    }\n\n    function getBody(doc) {\n        return util.isHostObject(doc, \"body\") ? doc.body : doc.getElementsByTagName(\"body\")[0];\n    }\n\n    function getRootContainer(node) {\n        var parent;\n        while ( (parent = node.parentNode) ) {\n            node = parent;\n        }\n        return node;\n    }\n\n    function comparePoints(nodeA, offsetA, nodeB, offsetB) {\n        // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing\n        var nodeC, root, childA, childB, n;\n        if (nodeA == nodeB) {\n\n            // Case 1: nodes are the same\n            return offsetA === offsetB ? 0 : (offsetA < offsetB) ? -1 : 1;\n        } else if ( (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) ) {\n\n            // Case 2: node C (container B or an ancestor) is a child node of A\n            return offsetA <= getNodeIndex(nodeC) ? -1 : 1;\n        } else if ( (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) ) {\n\n            // Case 3: node C (container A or an ancestor) is a child node of B\n            return getNodeIndex(nodeC) < offsetB  ? -1 : 1;\n        } else {\n\n            // Case 4: containers are siblings or descendants of siblings\n            root = getCommonAncestor(nodeA, nodeB);\n            childA = (nodeA === root) ? root : getClosestAncestorIn(nodeA, root, true);\n            childB = (nodeB === root) ? root : getClosestAncestorIn(nodeB, root, true);\n\n            if (childA === childB) {\n                // This shouldn't be possible\n\n                throw new Error(\"comparePoints got to case 4 and childA and childB are the same!\");\n            } else {\n                n = root.firstChild;\n                while (n) {\n                    if (n === childA) {\n                        return -1;\n                    } else if (n === childB) {\n                        return 1;\n                    }\n                    n = n.nextSibling;\n                }\n                throw new Error(\"Should not be here!\");\n            }\n        }\n    }\n\n    function fragmentFromNodeChildren(node) {\n        var fragment = getDocument(node).createDocumentFragment(), child;\n        while ( (child = node.firstChild) ) {\n            fragment.appendChild(child);\n        }\n        return fragment;\n    }\n\n    function inspectNode(node) {\n        if (!node) {\n            return \"[No node]\";\n        }\n        if (isCharacterDataNode(node)) {\n            return '\"' + node.data + '\"';\n        } else if (node.nodeType == 1) {\n            var idAttr = node.id ? ' id=\"' + node.id + '\"' : \"\";\n            return \"<\" + node.nodeName + idAttr + \">[\" + node.childNodes.length + \"]\";\n        } else {\n            return node.nodeName;\n        }\n    }\n\n    /**\n     * @constructor\n     */\n    function NodeIterator(root) {\n        this.root = root;\n        this._next = root;\n    }\n\n    NodeIterator.prototype = {\n        _current: null,\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            var n = this._current = this._next;\n            var child, next;\n            if (this._current) {\n                child = n.firstChild;\n                if (child) {\n                    this._next = child;\n                } else {\n                    next = null;\n                    while ((n !== this.root) && !(next = n.nextSibling)) {\n                        n = n.parentNode;\n                    }\n                    this._next = next;\n                }\n            }\n            return this._current;\n        },\n\n        detach: function() {\n            this._current = this._next = this.root = null;\n        }\n    };\n\n    function createIterator(root) {\n        return new NodeIterator(root);\n    }\n\n    /**\n     * @constructor\n     */\n    function DomPosition(node, offset) {\n        this.node = node;\n        this.offset = offset;\n    }\n\n    DomPosition.prototype = {\n        equals: function(pos) {\n            return this.node === pos.node & this.offset == pos.offset;\n        },\n\n        inspect: function() {\n            return \"[DomPosition(\" + inspectNode(this.node) + \":\" + this.offset + \")]\";\n        }\n    };\n\n    /**\n     * @constructor\n     */\n    function DOMException(codeName) {\n        this.code = this[codeName];\n        this.codeName = codeName;\n        this.message = \"DOMException: \" + this.codeName;\n    }\n\n    DOMException.prototype = {\n        INDEX_SIZE_ERR: 1,\n        HIERARCHY_REQUEST_ERR: 3,\n        WRONG_DOCUMENT_ERR: 4,\n        NO_MODIFICATION_ALLOWED_ERR: 7,\n        NOT_FOUND_ERR: 8,\n        NOT_SUPPORTED_ERR: 9,\n        INVALID_STATE_ERR: 11\n    };\n\n    DOMException.prototype.toString = function() {\n        return this.message;\n    };\n\n    api.dom = {\n        arrayContains: arrayContains,\n        isHtmlNamespace: isHtmlNamespace,\n        parentElement: parentElement,\n        getNodeIndex: getNodeIndex,\n        getNodeLength: getNodeLength,\n        getCommonAncestor: getCommonAncestor,\n        isAncestorOf: isAncestorOf,\n        getClosestAncestorIn: getClosestAncestorIn,\n        isCharacterDataNode: isCharacterDataNode,\n        insertAfter: insertAfter,\n        splitDataNode: splitDataNode,\n        getDocument: getDocument,\n        getWindow: getWindow,\n        getIframeWindow: getIframeWindow,\n        getIframeDocument: getIframeDocument,\n        getBody: getBody,\n        getRootContainer: getRootContainer,\n        comparePoints: comparePoints,\n        inspectNode: inspectNode,\n        fragmentFromNodeChildren: fragmentFromNodeChildren,\n        createIterator: createIterator,\n        DomPosition: DomPosition\n    };\n\n    api.DOMException = DOMException;\n});rangy.createModule(\"DomRange\", function(api, module) {\n    api.requireModules( [\"DomUtil\"] );\n\n\n    var dom = api.dom;\n    var DomPosition = dom.DomPosition;\n    var DOMException = api.DOMException;\n    \n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Utility functions\n\n    function isNonTextPartiallySelected(node, range) {\n        return (node.nodeType != 3) &&\n               (dom.isAncestorOf(node, range.startContainer, true) || dom.isAncestorOf(node, range.endContainer, true));\n    }\n\n    function getRangeDocument(range) {\n        return dom.getDocument(range.startContainer);\n    }\n\n    function dispatchEvent(range, type, args) {\n        var listeners = range._listeners[type];\n        if (listeners) {\n            for (var i = 0, len = listeners.length; i < len; ++i) {\n                listeners[i].call(range, {target: range, args: args});\n            }\n        }\n    }\n\n    function getBoundaryBeforeNode(node) {\n        return new DomPosition(node.parentNode, dom.getNodeIndex(node));\n    }\n\n    function getBoundaryAfterNode(node) {\n        return new DomPosition(node.parentNode, dom.getNodeIndex(node) + 1);\n    }\n\n    function insertNodeAtPosition(node, n, o) {\n        var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node;\n        if (dom.isCharacterDataNode(n)) {\n            if (o == n.length) {\n                dom.insertAfter(node, n);\n            } else {\n                n.parentNode.insertBefore(node, o == 0 ? n : dom.splitDataNode(n, o));\n            }\n        } else if (o >= n.childNodes.length) {\n            n.appendChild(node);\n        } else {\n            n.insertBefore(node, n.childNodes[o]);\n        }\n        return firstNodeInserted;\n    }\n\n    function cloneSubtree(iterator) {\n        var partiallySelected;\n        for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) {\n            partiallySelected = iterator.isPartiallySelectedSubtree();\n\n            node = node.cloneNode(!partiallySelected);\n            if (partiallySelected) {\n                subIterator = iterator.getSubtreeIterator();\n                node.appendChild(cloneSubtree(subIterator));\n                subIterator.detach(true);\n            }\n\n            if (node.nodeType == 10) { // DocumentType\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n            frag.appendChild(node);\n        }\n        return frag;\n    }\n\n    function iterateSubtree(rangeIterator, func, iteratorState) {\n        var it, n;\n        iteratorState = iteratorState || { stop: false };\n        for (var node, subRangeIterator; node = rangeIterator.next(); ) {\n            //log.debug(\"iterateSubtree, partially selected: \" + rangeIterator.isPartiallySelectedSubtree(), nodeToString(node));\n            if (rangeIterator.isPartiallySelectedSubtree()) {\n                // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of the\n                // node selected by the Range.\n                if (func(node) === false) {\n                    iteratorState.stop = true;\n                    return;\n                } else {\n                    subRangeIterator = rangeIterator.getSubtreeIterator();\n                    iterateSubtree(subRangeIterator, func, iteratorState);\n                    subRangeIterator.detach(true);\n                    if (iteratorState.stop) {\n                        return;\n                    }\n                }\n            } else {\n                // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its\n                // descendant\n                it = dom.createIterator(node);\n                while ( (n = it.next()) ) {\n                    if (func(n) === false) {\n                        iteratorState.stop = true;\n                        return;\n                    }\n                }\n            }\n        }\n    }\n\n    function deleteSubtree(iterator) {\n        var subIterator;\n        while (iterator.next()) {\n            if (iterator.isPartiallySelectedSubtree()) {\n                subIterator = iterator.getSubtreeIterator();\n                deleteSubtree(subIterator);\n                subIterator.detach(true);\n            } else {\n                iterator.remove();\n            }\n        }\n    }\n\n    function extractSubtree(iterator) {\n\n        for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) {\n\n\n            if (iterator.isPartiallySelectedSubtree()) {\n                node = node.cloneNode(false);\n                subIterator = iterator.getSubtreeIterator();\n                node.appendChild(extractSubtree(subIterator));\n                subIterator.detach(true);\n            } else {\n                iterator.remove();\n            }\n            if (node.nodeType == 10) { // DocumentType\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n            frag.appendChild(node);\n        }\n        return frag;\n    }\n\n    function getNodesInRange(range, nodeTypes, filter) {\n        //log.info(\"getNodesInRange, \" + nodeTypes.join(\",\"));\n        var filterNodeTypes = !!(nodeTypes && nodeTypes.length), regex;\n        var filterExists = !!filter;\n        if (filterNodeTypes) {\n            regex = new RegExp(\"^(\" + nodeTypes.join(\"|\") + \")$\");\n        }\n\n        var nodes = [];\n        iterateSubtree(new RangeIterator(range, false), function(node) {\n            if ((!filterNodeTypes || regex.test(node.nodeType)) && (!filterExists || filter(node))) {\n                nodes.push(node);\n            }\n        });\n        return nodes;\n    }\n\n    function inspect(range) {\n        var name = (typeof range.getName == \"undefined\") ? \"Range\" : range.getName();\n        return \"[\" + name + \"(\" + dom.inspectNode(range.startContainer) + \":\" + range.startOffset + \", \" +\n                dom.inspectNode(range.endContainer) + \":\" + range.endOffset + \")]\";\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange)\n\n    /**\n     * @constructor\n     */\n    function RangeIterator(range, clonePartiallySelectedTextNodes) {\n        this.range = range;\n        this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes;\n\n\n\n        if (!range.collapsed) {\n            this.sc = range.startContainer;\n            this.so = range.startOffset;\n            this.ec = range.endContainer;\n            this.eo = range.endOffset;\n            var root = range.commonAncestorContainer;\n\n            if (this.sc === this.ec && dom.isCharacterDataNode(this.sc)) {\n                this.isSingleCharacterDataNode = true;\n                this._first = this._last = this._next = this.sc;\n            } else {\n                this._first = this._next = (this.sc === root && !dom.isCharacterDataNode(this.sc)) ?\n                    this.sc.childNodes[this.so] : dom.getClosestAncestorIn(this.sc, root, true);\n                this._last = (this.ec === root && !dom.isCharacterDataNode(this.ec)) ?\n                    this.ec.childNodes[this.eo - 1] : dom.getClosestAncestorIn(this.ec, root, true);\n            }\n\n        }\n    }\n\n    RangeIterator.prototype = {\n        _current: null,\n        _next: null,\n        _first: null,\n        _last: null,\n        isSingleCharacterDataNode: false,\n\n        reset: function() {\n            this._current = null;\n            this._next = this._first;\n        },\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            // Move to next node\n            var current = this._current = this._next;\n            if (current) {\n                this._next = (current !== this._last) ? current.nextSibling : null;\n\n                // Check for partially selected text nodes\n                if (dom.isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) {\n                    if (current === this.ec) {\n\n                        (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo);\n                    }\n                    if (this._current === this.sc) {\n\n                        (current = current.cloneNode(true)).deleteData(0, this.so);\n                    }\n                }\n            }\n\n            return current;\n        },\n\n        remove: function() {\n            var current = this._current, start, end;\n\n            if (dom.isCharacterDataNode(current) && (current === this.sc || current === this.ec)) {\n                start = (current === this.sc) ? this.so : 0;\n                end = (current === this.ec) ? this.eo : current.length;\n                if (start != end) {\n                    current.deleteData(start, end - start);\n                }\n            } else {\n                if (current.parentNode) {\n                    current.parentNode.removeChild(current);\n                } else {\n\n                }\n            }\n        },\n\n        // Checks if the current node is partially selected\n        isPartiallySelectedSubtree: function() {\n            var current = this._current;\n            return isNonTextPartiallySelected(current, this.range);\n        },\n\n        getSubtreeIterator: function() {\n            var subRange;\n            if (this.isSingleCharacterDataNode) {\n                subRange = this.range.cloneRange();\n                subRange.collapse();\n            } else {\n                subRange = new Range(getRangeDocument(this.range));\n                var current = this._current;\n                var startContainer = current, startOffset = 0, endContainer = current, endOffset = dom.getNodeLength(current);\n\n                if (dom.isAncestorOf(current, this.sc, true)) {\n                    startContainer = this.sc;\n                    startOffset = this.so;\n                }\n                if (dom.isAncestorOf(current, this.ec, true)) {\n                    endContainer = this.ec;\n                    endOffset = this.eo;\n                }\n\n                updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset);\n            }\n            return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes);\n        },\n\n        detach: function(detachRange) {\n            if (detachRange) {\n                this.range.detach();\n            }\n            this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null;\n        }\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Exceptions\n\n    /**\n     * @constructor\n     */\n    function RangeException(codeName) {\n        this.code = this[codeName];\n        this.codeName = codeName;\n        this.message = \"RangeException: \" + this.codeName;\n    }\n\n    RangeException.prototype = {\n        BAD_BOUNDARYPOINTS_ERR: 1,\n        INVALID_NODE_TYPE_ERR: 2\n    };\n\n    RangeException.prototype.toString = function() {\n        return this.message;\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    /**\n     * Currently iterates through all nodes in the range on creation until I think of a decent way to do it\n     * TODO: Look into making this a proper iterator, not requiring preloading everything first\n     * @constructor\n     */\n    function RangeNodeIterator(range, nodeTypes, filter) {\n        this.nodes = getNodesInRange(range, nodeTypes, filter);\n        this._next = this.nodes[0];\n        this._position = 0;\n    }\n\n    RangeNodeIterator.prototype = {\n        _current: null,\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            this._current = this._next;\n            this._next = this.nodes[ ++this._position ];\n            return this._current;\n        },\n\n        detach: function() {\n            this._current = this._next = this.nodes = null;\n        }\n    };\n\n    var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10];\n    var rootContainerNodeTypes = [2, 9, 11];\n    var readonlyNodeTypes = [5, 6, 10, 12];\n    var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11];\n    var surroundNodeTypes = [1, 3, 4, 5, 7, 8];\n\n    function createAncestorFinder(nodeTypes) {\n        return function(node, selfIsAncestor) {\n            var t, n = selfIsAncestor ? node : node.parentNode;\n            while (n) {\n                t = n.nodeType;\n                if (dom.arrayContains(nodeTypes, t)) {\n                    return n;\n                }\n                n = n.parentNode;\n            }\n            return null;\n        };\n    }\n\n    var getRootContainer = dom.getRootContainer;\n    var getDocumentOrFragmentContainer = createAncestorFinder( [9, 11] );\n    var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes);\n    var getDocTypeNotationEntityAncestor = createAncestorFinder( [6, 10, 12] );\n\n    function assertNoDocTypeNotationEntityAncestor(node, allowSelf) {\n        if (getDocTypeNotationEntityAncestor(node, allowSelf)) {\n            throw new RangeException(\"INVALID_NODE_TYPE_ERR\");\n        }\n    }\n\n    function assertNotDetached(range) {\n        if (!range.startContainer) {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    }\n\n    function assertValidNodeType(node, invalidTypes) {\n        if (!dom.arrayContains(invalidTypes, node.nodeType)) {\n            throw new RangeException(\"INVALID_NODE_TYPE_ERR\");\n        }\n    }\n\n    function assertValidOffset(node, offset) {\n        if (offset < 0 || offset > (dom.isCharacterDataNode(node) ? node.length : node.childNodes.length)) {\n            throw new DOMException(\"INDEX_SIZE_ERR\");\n        }\n    }\n\n    function assertSameDocumentOrFragment(node1, node2) {\n        if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) {\n            throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n        }\n    }\n\n    function assertNodeNotReadOnly(node) {\n        if (getReadonlyAncestor(node, true)) {\n            throw new DOMException(\"NO_MODIFICATION_ALLOWED_ERR\");\n        }\n    }\n\n    function assertNode(node, codeName) {\n        if (!node) {\n            throw new DOMException(codeName);\n        }\n    }\n\n    function isOrphan(node) {\n        return !dom.arrayContains(rootContainerNodeTypes, node.nodeType) && !getDocumentOrFragmentContainer(node, true);\n    }\n\n    function isValidOffset(node, offset) {\n        return offset <= (dom.isCharacterDataNode(node) ? node.length : node.childNodes.length);\n    }\n\n    function assertRangeValid(range) {\n        assertNotDetached(range);\n        if (isOrphan(range.startContainer) || isOrphan(range.endContainer) ||\n                !isValidOffset(range.startContainer, range.startOffset) ||\n                !isValidOffset(range.endContainer, range.endOffset)) {\n            throw new Error(\"Range error: Range is no longer valid after DOM mutation (\" + range.inspect() + \")\");\n        }\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Test the browser's innerHTML support to decide how to implement createContextualFragment\n    var styleEl = document.createElement(\"style\");\n    var htmlParsingConforms = false;\n    try {\n        styleEl.innerHTML = \"<b>x</b>\";\n        htmlParsingConforms = (styleEl.firstChild.nodeType == 3); // Opera incorrectly creates an element node\n    } catch (e) {\n        // IE 6 and 7 throw\n    }\n\n    api.features.htmlParsingConforms = htmlParsingConforms;\n\n    var createContextualFragment = htmlParsingConforms ?\n\n        // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See\n        // discussion and base code for this implementation at issue 67.\n        // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface\n        // Thanks to Aleks Williams.\n        function(fragmentStr) {\n            // \"Let node the context object's start's node.\"\n            var node = this.startContainer;\n            var doc = dom.getDocument(node);\n\n            // \"If the context object's start's node is null, raise an INVALID_STATE_ERR\n            // exception and abort these steps.\"\n            if (!node) {\n                throw new DOMException(\"INVALID_STATE_ERR\");\n            }\n\n            // \"Let element be as follows, depending on node's interface:\"\n            // Document, Document Fragment: null\n            var el = null;\n\n            // \"Element: node\"\n            if (node.nodeType == 1) {\n                el = node;\n\n            // \"Text, Comment: node's parentElement\"\n            } else if (dom.isCharacterDataNode(node)) {\n                el = dom.parentElement(node);\n            }\n\n            // \"If either element is null or element's ownerDocument is an HTML document\n            // and element's local name is \"html\" and element's namespace is the HTML\n            // namespace\"\n            if (el === null || (\n                el.nodeName == \"HTML\"\n                && dom.isHtmlNamespace(dom.getDocument(el).documentElement)\n                && dom.isHtmlNamespace(el)\n            )) {\n\n            // \"let element be a new Element with \"body\" as its local name and the HTML\n            // namespace as its namespace.\"\"\n                el = doc.createElement(\"body\");\n            } else {\n                el = el.cloneNode(false);\n            }\n\n            // \"If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm.\"\n            // \"If the node's document is an XML document: Invoke the XML fragment parsing algorithm.\"\n            // \"In either case, the algorithm must be invoked with fragment as the input\n            // and element as the context element.\"\n            el.innerHTML = fragmentStr;\n\n            // \"If this raises an exception, then abort these steps. Otherwise, let new\n            // children be the nodes returned.\"\n\n            // \"Let fragment be a new DocumentFragment.\"\n            // \"Append all new children to fragment.\"\n            // \"Return fragment.\"\n            return dom.fragmentFromNodeChildren(el);\n        } :\n\n        // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that\n        // previous versions of Rangy used (with the exception of using a body element rather than a div)\n        function(fragmentStr) {\n            assertNotDetached(this);\n            var doc = getRangeDocument(this);\n            var el = doc.createElement(\"body\");\n            el.innerHTML = fragmentStr;\n\n            return dom.fragmentFromNodeChildren(el);\n        };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    var rangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\",\n        \"commonAncestorContainer\"];\n\n    var s2s = 0, s2e = 1, e2e = 2, e2s = 3;\n    var n_b = 0, n_a = 1, n_b_a = 2, n_i = 3;\n\n    function RangePrototype() {}\n\n    RangePrototype.prototype = {\n        attachListener: function(type, listener) {\n            this._listeners[type].push(listener);\n        },\n\n        compareBoundaryPoints: function(how, range) {\n            assertRangeValid(this);\n            assertSameDocumentOrFragment(this.startContainer, range.startContainer);\n\n            var nodeA, offsetA, nodeB, offsetB;\n            var prefixA = (how == e2s || how == s2s) ? \"start\" : \"end\";\n            var prefixB = (how == s2e || how == s2s) ? \"start\" : \"end\";\n            nodeA = this[prefixA + \"Container\"];\n            offsetA = this[prefixA + \"Offset\"];\n            nodeB = range[prefixB + \"Container\"];\n            offsetB = range[prefixB + \"Offset\"];\n            return dom.comparePoints(nodeA, offsetA, nodeB, offsetB);\n        },\n\n        insertNode: function(node) {\n            assertRangeValid(this);\n            assertValidNodeType(node, insertableNodeTypes);\n            assertNodeNotReadOnly(this.startContainer);\n\n            if (dom.isAncestorOf(node, this.startContainer, true)) {\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n\n            // No check for whether the container of the start of the Range is of a type that does not allow\n            // children of the type of node: the browser's DOM implementation should do this for us when we attempt\n            // to add the node\n\n            var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset);\n            this.setStartBefore(firstNodeInserted);\n        },\n\n        cloneContents: function() {\n            assertRangeValid(this);\n\n            var clone, frag;\n            if (this.collapsed) {\n                return getRangeDocument(this).createDocumentFragment();\n            } else {\n                if (this.startContainer === this.endContainer && dom.isCharacterDataNode(this.startContainer)) {\n                    clone = this.startContainer.cloneNode(true);\n                    clone.data = clone.data.slice(this.startOffset, this.endOffset);\n                    frag = getRangeDocument(this).createDocumentFragment();\n                    frag.appendChild(clone);\n                    return frag;\n                } else {\n                    var iterator = new RangeIterator(this, true);\n                    clone = cloneSubtree(iterator);\n                    iterator.detach();\n                }\n                return clone;\n            }\n        },\n\n        canSurroundContents: function() {\n            assertRangeValid(this);\n            assertNodeNotReadOnly(this.startContainer);\n            assertNodeNotReadOnly(this.endContainer);\n\n            // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n            // no non-text nodes.\n            var iterator = new RangeIterator(this, true);\n            var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) ||\n                    (iterator._last && isNonTextPartiallySelected(iterator._last, this)));\n            iterator.detach();\n            return !boundariesInvalid;\n        },\n\n        surroundContents: function(node) {\n            assertValidNodeType(node, surroundNodeTypes);\n\n            if (!this.canSurroundContents()) {\n                throw new RangeException(\"BAD_BOUNDARYPOINTS_ERR\");\n            }\n\n            // Extract the contents\n            var content = this.extractContents();\n\n            // Clear the children of the node\n            if (node.hasChildNodes()) {\n                while (node.lastChild) {\n                    node.removeChild(node.lastChild);\n                }\n            }\n\n            // Insert the new node and add the extracted contents\n            insertNodeAtPosition(node, this.startContainer, this.startOffset);\n            node.appendChild(content);\n\n            this.selectNode(node);\n        },\n\n        cloneRange: function() {\n            assertRangeValid(this);\n            var range = new Range(getRangeDocument(this));\n            var i = rangeProperties.length, prop;\n            while (i--) {\n                prop = rangeProperties[i];\n                range[prop] = this[prop];\n            }\n            return range;\n        },\n\n        toString: function() {\n            assertRangeValid(this);\n            var sc = this.startContainer;\n            if (sc === this.endContainer && dom.isCharacterDataNode(sc)) {\n                return (sc.nodeType == 3 || sc.nodeType == 4) ? sc.data.slice(this.startOffset, this.endOffset) : \"\";\n            } else {\n                var textBits = [], iterator = new RangeIterator(this, true);\n\n                iterateSubtree(iterator, function(node) {\n                    // Accept only text or CDATA nodes, not comments\n\n                    if (node.nodeType == 3 || node.nodeType == 4) {\n                        textBits.push(node.data);\n                    }\n                });\n                iterator.detach();\n                return textBits.join(\"\");\n            }\n        },\n\n        // The methods below are all non-standard. The following batch were introduced by Mozilla but have since\n        // been removed from Mozilla.\n\n        compareNode: function(node) {\n            assertRangeValid(this);\n\n            var parent = node.parentNode;\n            var nodeIndex = dom.getNodeIndex(node);\n\n            if (!parent) {\n                throw new DOMException(\"NOT_FOUND_ERR\");\n            }\n\n            var startComparison = this.comparePoint(parent, nodeIndex),\n                endComparison = this.comparePoint(parent, nodeIndex + 1);\n\n            if (startComparison < 0) { // Node starts before\n                return (endComparison > 0) ? n_b_a : n_b;\n            } else {\n                return (endComparison > 0) ? n_a : n_i;\n            }\n        },\n\n        comparePoint: function(node, offset) {\n            assertRangeValid(this);\n            assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n            assertSameDocumentOrFragment(node, this.startContainer);\n\n            if (dom.comparePoints(node, offset, this.startContainer, this.startOffset) < 0) {\n                return -1;\n            } else if (dom.comparePoints(node, offset, this.endContainer, this.endOffset) > 0) {\n                return 1;\n            }\n            return 0;\n        },\n\n        createContextualFragment: createContextualFragment,\n\n        toHtml: function() {\n            assertRangeValid(this);\n            var container = getRangeDocument(this).createElement(\"div\");\n            container.appendChild(this.cloneContents());\n            return container.innerHTML;\n        },\n\n        // touchingIsIntersecting determines whether this method considers a node that borders a range intersects\n        // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default)\n        intersectsNode: function(node, touchingIsIntersecting) {\n            assertRangeValid(this);\n            assertNode(node, \"NOT_FOUND_ERR\");\n            if (dom.getDocument(node) !== getRangeDocument(this)) {\n                return false;\n            }\n\n            var parent = node.parentNode, offset = dom.getNodeIndex(node);\n            assertNode(parent, \"NOT_FOUND_ERR\");\n\n            var startComparison = dom.comparePoints(parent, offset, this.endContainer, this.endOffset),\n                endComparison = dom.comparePoints(parent, offset + 1, this.startContainer, this.startOffset);\n\n            return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n        },\n\n\n        isPointInRange: function(node, offset) {\n            assertRangeValid(this);\n            assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n            assertSameDocumentOrFragment(node, this.startContainer);\n\n            return (dom.comparePoints(node, offset, this.startContainer, this.startOffset) >= 0) &&\n                   (dom.comparePoints(node, offset, this.endContainer, this.endOffset) <= 0);\n        },\n\n        // The methods below are non-standard and invented by me.\n\n        // Sharing a boundary start-to-end or end-to-start does not count as intersection.\n        intersectsRange: function(range, touchingIsIntersecting) {\n            assertRangeValid(this);\n\n            if (getRangeDocument(range) != getRangeDocument(this)) {\n                throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n            }\n\n            var startComparison = dom.comparePoints(this.startContainer, this.startOffset, range.endContainer, range.endOffset),\n                endComparison = dom.comparePoints(this.endContainer, this.endOffset, range.startContainer, range.startOffset);\n\n            return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n        },\n\n        intersection: function(range) {\n            if (this.intersectsRange(range)) {\n                var startComparison = dom.comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset),\n                    endComparison = dom.comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset);\n\n                var intersectionRange = this.cloneRange();\n\n                if (startComparison == -1) {\n                    intersectionRange.setStart(range.startContainer, range.startOffset);\n                }\n                if (endComparison == 1) {\n                    intersectionRange.setEnd(range.endContainer, range.endOffset);\n                }\n                return intersectionRange;\n            }\n            return null;\n        },\n\n        union: function(range) {\n            if (this.intersectsRange(range, true)) {\n                var unionRange = this.cloneRange();\n                if (dom.comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) {\n                    unionRange.setStart(range.startContainer, range.startOffset);\n                }\n                if (dom.comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) {\n                    unionRange.setEnd(range.endContainer, range.endOffset);\n                }\n                return unionRange;\n            } else {\n                throw new RangeException(\"Ranges do not intersect\");\n            }\n        },\n\n        containsNode: function(node, allowPartial) {\n            if (allowPartial) {\n                return this.intersectsNode(node, false);\n            } else {\n                return this.compareNode(node) == n_i;\n            }\n        },\n\n        containsNodeContents: function(node) {\n            return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, dom.getNodeLength(node)) <= 0;\n        },\n\n        containsRange: function(range) {\n            return this.intersection(range).equals(range);\n        },\n\n        containsNodeText: function(node) {\n            var nodeRange = this.cloneRange();\n            nodeRange.selectNode(node);\n            var textNodes = nodeRange.getNodes([3]);\n            if (textNodes.length > 0) {\n                nodeRange.setStart(textNodes[0], 0);\n                var lastTextNode = textNodes.pop();\n                nodeRange.setEnd(lastTextNode, lastTextNode.length);\n                var contains = this.containsRange(nodeRange);\n                nodeRange.detach();\n                return contains;\n            } else {\n                return this.containsNodeContents(node);\n            }\n        },\n\n        createNodeIterator: function(nodeTypes, filter) {\n            assertRangeValid(this);\n            return new RangeNodeIterator(this, nodeTypes, filter);\n        },\n\n        getNodes: function(nodeTypes, filter) {\n            assertRangeValid(this);\n            return getNodesInRange(this, nodeTypes, filter);\n        },\n\n        getDocument: function() {\n            return getRangeDocument(this);\n        },\n\n        collapseBefore: function(node) {\n            assertNotDetached(this);\n\n            this.setEndBefore(node);\n            this.collapse(false);\n        },\n\n        collapseAfter: function(node) {\n            assertNotDetached(this);\n\n            this.setStartAfter(node);\n            this.collapse(true);\n        },\n\n        getName: function() {\n            return \"DomRange\";\n        },\n\n        equals: function(range) {\n            return Range.rangesEqual(this, range);\n        },\n\n        inspect: function() {\n            return inspect(this);\n        }\n    };\n\n    function copyComparisonConstantsToObject(obj) {\n        obj.START_TO_START = s2s;\n        obj.START_TO_END = s2e;\n        obj.END_TO_END = e2e;\n        obj.END_TO_START = e2s;\n\n        obj.NODE_BEFORE = n_b;\n        obj.NODE_AFTER = n_a;\n        obj.NODE_BEFORE_AND_AFTER = n_b_a;\n        obj.NODE_INSIDE = n_i;\n    }\n\n    function copyComparisonConstants(constructor) {\n        copyComparisonConstantsToObject(constructor);\n        copyComparisonConstantsToObject(constructor.prototype);\n    }\n\n    function createRangeContentRemover(remover, boundaryUpdater) {\n        return function() {\n            assertRangeValid(this);\n\n            var sc = this.startContainer, so = this.startOffset, root = this.commonAncestorContainer;\n\n            var iterator = new RangeIterator(this, true);\n\n            // Work out where to position the range after content removal\n            var node, boundary;\n            if (sc !== root) {\n                node = dom.getClosestAncestorIn(sc, root, true);\n                boundary = getBoundaryAfterNode(node);\n                sc = boundary.node;\n                so = boundary.offset;\n            }\n\n            // Check none of the range is read-only\n            iterateSubtree(iterator, assertNodeNotReadOnly);\n\n            iterator.reset();\n\n            // Remove the content\n            var returnValue = remover(iterator);\n            iterator.detach();\n\n            // Move to the new position\n            boundaryUpdater(this, sc, so, sc, so);\n\n            return returnValue;\n        };\n    }\n\n    function createPrototypeRange(constructor, boundaryUpdater, detacher) {\n        function createBeforeAfterNodeSetter(isBefore, isStart) {\n            return function(node) {\n                assertNotDetached(this);\n                assertValidNodeType(node, beforeAfterNodeTypes);\n                assertValidNodeType(getRootContainer(node), rootContainerNodeTypes);\n\n                var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node);\n                (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset);\n            };\n        }\n\n        function setRangeStart(range, node, offset) {\n            var ec = range.endContainer, eo = range.endOffset;\n            if (node !== range.startContainer || offset !== range.startOffset) {\n                // Check the root containers of the range and the new boundary, and also check whether the new boundary\n                // is after the current end. In either case, collapse the range to the new position\n                if (getRootContainer(node) != getRootContainer(ec) || dom.comparePoints(node, offset, ec, eo) == 1) {\n                    ec = node;\n                    eo = offset;\n                }\n                boundaryUpdater(range, node, offset, ec, eo);\n            }\n        }\n\n        function setRangeEnd(range, node, offset) {\n            var sc = range.startContainer, so = range.startOffset;\n            if (node !== range.endContainer || offset !== range.endOffset) {\n                // Check the root containers of the range and the new boundary, and also check whether the new boundary\n                // is after the current end. In either case, collapse the range to the new position\n                if (getRootContainer(node) != getRootContainer(sc) || dom.comparePoints(node, offset, sc, so) == -1) {\n                    sc = node;\n                    so = offset;\n                }\n                boundaryUpdater(range, sc, so, node, offset);\n            }\n        }\n\n        function setRangeStartAndEnd(range, node, offset) {\n            if (node !== range.startContainer || offset !== range.startOffset || node !== range.endContainer || offset !== range.endOffset) {\n                boundaryUpdater(range, node, offset, node, offset);\n            }\n        }\n\n        constructor.prototype = new RangePrototype();\n\n        api.util.extend(constructor.prototype, {\n            setStart: function(node, offset) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeStart(this, node, offset);\n            },\n\n            setEnd: function(node, offset) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeEnd(this, node, offset);\n            },\n\n            setStartBefore: createBeforeAfterNodeSetter(true, true),\n            setStartAfter: createBeforeAfterNodeSetter(false, true),\n            setEndBefore: createBeforeAfterNodeSetter(true, false),\n            setEndAfter: createBeforeAfterNodeSetter(false, false),\n\n            collapse: function(isStart) {\n                assertRangeValid(this);\n                if (isStart) {\n                    boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset);\n                } else {\n                    boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset);\n                }\n            },\n\n            selectNodeContents: function(node) {\n                // This doesn't seem well specified: the spec talks only about selecting the node's contents, which\n                // could be taken to mean only its children. However, browsers implement this the same as selectNode for\n                // text nodes, so I shall do likewise\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n\n                boundaryUpdater(this, node, 0, node, dom.getNodeLength(node));\n            },\n\n            selectNode: function(node) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, false);\n                assertValidNodeType(node, beforeAfterNodeTypes);\n\n                var start = getBoundaryBeforeNode(node), end = getBoundaryAfterNode(node);\n                boundaryUpdater(this, start.node, start.offset, end.node, end.offset);\n            },\n\n            extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater),\n\n            deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater),\n\n            canSurroundContents: function() {\n                assertRangeValid(this);\n                assertNodeNotReadOnly(this.startContainer);\n                assertNodeNotReadOnly(this.endContainer);\n\n                // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n                // no non-text nodes.\n                var iterator = new RangeIterator(this, true);\n                var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) ||\n                        (iterator._last && isNonTextPartiallySelected(iterator._last, this)));\n                iterator.detach();\n                return !boundariesInvalid;\n            },\n\n            detach: function() {\n                detacher(this);\n            },\n\n            splitBoundaries: function() {\n                assertRangeValid(this);\n\n\n                var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset;\n                var startEndSame = (sc === ec);\n\n                if (dom.isCharacterDataNode(ec) && eo > 0 && eo < ec.length) {\n                    dom.splitDataNode(ec, eo);\n\n                }\n\n                if (dom.isCharacterDataNode(sc) && so > 0 && so < sc.length) {\n\n                    sc = dom.splitDataNode(sc, so);\n                    if (startEndSame) {\n                        eo -= so;\n                        ec = sc;\n                    } else if (ec == sc.parentNode && eo >= dom.getNodeIndex(sc)) {\n                        eo++;\n                    }\n                    so = 0;\n\n                }\n                boundaryUpdater(this, sc, so, ec, eo);\n            },\n\n            normalizeBoundaries: function() {\n                assertRangeValid(this);\n\n                var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset;\n\n                var mergeForward = function(node) {\n                    var sibling = node.nextSibling;\n                    if (sibling && sibling.nodeType == node.nodeType) {\n                        ec = node;\n                        eo = node.length;\n                        node.appendData(sibling.data);\n                        sibling.parentNode.removeChild(sibling);\n                    }\n                };\n\n                var mergeBackward = function(node) {\n                    var sibling = node.previousSibling;\n                    if (sibling && sibling.nodeType == node.nodeType) {\n                        sc = node;\n                        var nodeLength = node.length;\n                        so = sibling.length;\n                        node.insertData(0, sibling.data);\n                        sibling.parentNode.removeChild(sibling);\n                        if (sc == ec) {\n                            eo += so;\n                            ec = sc;\n                        } else if (ec == node.parentNode) {\n                            var nodeIndex = dom.getNodeIndex(node);\n                            if (eo == nodeIndex) {\n                                ec = node;\n                                eo = nodeLength;\n                            } else if (eo > nodeIndex) {\n                                eo--;\n                            }\n                        }\n                    }\n                };\n\n                var normalizeStart = true;\n\n                if (dom.isCharacterDataNode(ec)) {\n                    if (ec.length == eo) {\n                        mergeForward(ec);\n                    }\n                } else {\n                    if (eo > 0) {\n                        var endNode = ec.childNodes[eo - 1];\n                        if (endNode && dom.isCharacterDataNode(endNode)) {\n                            mergeForward(endNode);\n                        }\n                    }\n                    normalizeStart = !this.collapsed;\n                }\n\n                if (normalizeStart) {\n                    if (dom.isCharacterDataNode(sc)) {\n                        if (so == 0) {\n                            mergeBackward(sc);\n                        }\n                    } else {\n                        if (so < sc.childNodes.length) {\n                            var startNode = sc.childNodes[so];\n                            if (startNode && dom.isCharacterDataNode(startNode)) {\n                                mergeBackward(startNode);\n                            }\n                        }\n                    }\n                } else {\n                    sc = ec;\n                    so = eo;\n                }\n\n                boundaryUpdater(this, sc, so, ec, eo);\n            },\n\n            collapseToPoint: function(node, offset) {\n                assertNotDetached(this);\n\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeStartAndEnd(this, node, offset);\n            }\n        });\n\n        copyComparisonConstants(constructor);\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Updates commonAncestorContainer and collapsed after boundary change\n    function updateCollapsedAndCommonAncestor(range) {\n        range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset);\n        range.commonAncestorContainer = range.collapsed ?\n            range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer);\n    }\n\n    function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) {\n        var startMoved = (range.startContainer !== startContainer || range.startOffset !== startOffset);\n        var endMoved = (range.endContainer !== endContainer || range.endOffset !== endOffset);\n\n        range.startContainer = startContainer;\n        range.startOffset = startOffset;\n        range.endContainer = endContainer;\n        range.endOffset = endOffset;\n\n        updateCollapsedAndCommonAncestor(range);\n        dispatchEvent(range, \"boundarychange\", {startMoved: startMoved, endMoved: endMoved});\n    }\n\n    function detach(range) {\n        assertNotDetached(range);\n        range.startContainer = range.startOffset = range.endContainer = range.endOffset = null;\n        range.collapsed = range.commonAncestorContainer = null;\n        dispatchEvent(range, \"detach\", null);\n        range._listeners = null;\n    }\n\n    /**\n     * @constructor\n     */\n    function Range(doc) {\n        this.startContainer = doc;\n        this.startOffset = 0;\n        this.endContainer = doc;\n        this.endOffset = 0;\n        this._listeners = {\n            boundarychange: [],\n            detach: []\n        };\n        updateCollapsedAndCommonAncestor(this);\n    }\n\n    createPrototypeRange(Range, updateBoundaries, detach);\n\n    api.rangePrototype = RangePrototype.prototype;\n\n    Range.rangeProperties = rangeProperties;\n    Range.RangeIterator = RangeIterator;\n    Range.copyComparisonConstants = copyComparisonConstants;\n    Range.createPrototypeRange = createPrototypeRange;\n    Range.inspect = inspect;\n    Range.getRangeDocument = getRangeDocument;\n    Range.rangesEqual = function(r1, r2) {\n        return r1.startContainer === r2.startContainer &&\n               r1.startOffset === r2.startOffset &&\n               r1.endContainer === r2.endContainer &&\n               r1.endOffset === r2.endOffset;\n    };\n\n    api.DomRange = Range;\n    api.RangeException = RangeException;\n});rangy.createModule(\"WrappedRange\", function(api, module) {\n    api.requireModules( [\"DomUtil\", \"DomRange\"] );\n\n    /**\n     * @constructor\n     */\n    var WrappedRange;\n    var dom = api.dom;\n    var DomPosition = dom.DomPosition;\n    var DomRange = api.DomRange;\n\n\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    /*\n    This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement()\n    method. For example, in the following (where pipes denote the selection boundaries):\n\n    <ul id=\"ul\"><li id=\"a\">| a </li><li id=\"b\"> b |</li></ul>\n\n    var range = document.selection.createRange();\n    alert(range.parentElement().id); // Should alert \"ul\" but alerts \"b\"\n\n    This method returns the common ancestor node of the following:\n    - the parentElement() of the textRange\n    - the parentElement() of the textRange after calling collapse(true)\n    - the parentElement() of the textRange after calling collapse(false)\n     */\n    function getTextRangeContainerElement(textRange) {\n        var parentEl = textRange.parentElement();\n\n        var range = textRange.duplicate();\n        range.collapse(true);\n        var startEl = range.parentElement();\n        range = textRange.duplicate();\n        range.collapse(false);\n        var endEl = range.parentElement();\n        var startEndContainer = (startEl == endEl) ? startEl : dom.getCommonAncestor(startEl, endEl);\n\n        return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer);\n    }\n\n    function textRangeIsCollapsed(textRange) {\n        return textRange.compareEndPoints(\"StartToEnd\", textRange) == 0;\n    }\n\n    // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started out as\n    // an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/) but has\n    // grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange bugs, handling\n    // for inputs and images, plus optimizations.\n    function getTextRangeBoundaryPosition(textRange, wholeRangeContainerElement, isStart, isCollapsed) {\n        var workingRange = textRange.duplicate();\n\n        workingRange.collapse(isStart);\n        var containerElement = workingRange.parentElement();\n\n        // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so\n        // check for that\n        // TODO: Find out when. Workaround for wholeRangeContainerElement may break this\n        if (!dom.isAncestorOf(wholeRangeContainerElement, containerElement, true)) {\n            containerElement = wholeRangeContainerElement;\n\n        }\n\n\n\n        // Deal with nodes that cannot \"contain rich HTML markup\". In practice, this means form inputs, images and\n        // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx\n        if (!containerElement.canHaveHTML) {\n            return new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement));\n        }\n\n        var workingNode = dom.getDocument(containerElement).createElement(\"span\");\n        var comparison, workingComparisonType = isStart ? \"StartToStart\" : \"StartToEnd\";\n        var previousNode, nextNode, boundaryPosition, boundaryNode;\n\n        // Move the working range through the container's children, starting at the end and working backwards, until the\n        // working range reaches or goes past the boundary we're interested in\n        do {\n            containerElement.insertBefore(workingNode, workingNode.previousSibling);\n            workingRange.moveToElementText(workingNode);\n        } while ( (comparison = workingRange.compareEndPoints(workingComparisonType, textRange)) > 0 &&\n                workingNode.previousSibling);\n\n        // We've now reached or gone past the boundary of the text range we're interested in\n        // so have identified the node we want\n        boundaryNode = workingNode.nextSibling;\n\n        if (comparison == -1 && boundaryNode && dom.isCharacterDataNode(boundaryNode)) {\n            // This is a character data node (text, comment, cdata). The working range is collapsed at the start of the\n            // node containing the text range's boundary, so we move the end of the working range to the boundary point\n            // and measure the length of its text to get the boundary's offset within the node.\n            workingRange.setEndPoint(isStart ? \"EndToStart\" : \"EndToEnd\", textRange);\n\n\n            var offset;\n\n            if (/[\\r\\n]/.test(boundaryNode.data)) {\n                /*\n                For the particular case of a boundary within a text node containing line breaks (within a <pre> element,\n                for example), we need a slightly complicated approach to get the boundary's offset in IE. The facts:\n\n                - Each line break is represented as \\r in the text node's data/nodeValue properties\n                - Each line break is represented as \\r\\n in the TextRange's 'text' property\n                - The 'text' property of the TextRange does not contain trailing line breaks\n\n                To get round the problem presented by the final fact above, we can use the fact that TextRange's\n                moveStart() and moveEnd() methods return the actual number of characters moved, which is not necessarily\n                the same as the number of characters it was instructed to move. The simplest approach is to use this to\n                store the characters moved when moving both the start and end of the range to the start of the document\n                body and subtracting the start offset from the end offset (the \"move-negative-gazillion\" method).\n                However, this is extremely slow when the document is large and the range is near the end of it. Clearly\n                doing the mirror image (i.e. moving the range boundaries to the end of the document) has the same\n                problem.\n\n                Another approach that works is to use moveStart() to move the start boundary of the range up to the end\n                boundary one character at a time and incrementing a counter with the value returned by the moveStart()\n                call. However, the check for whether the start boundary has reached the end boundary is expensive, so\n                this method is slow (although unlike \"move-negative-gazillion\" is largely unaffected by the location of\n                the range within the document).\n\n                The method below is a hybrid of the two methods above. It uses the fact that a string containing the\n                TextRange's 'text' property with each \\r\\n converted to a single \\r character cannot be longer than the\n                text of the TextRange, so the start of the range is moved that length initially and then a character at\n                a time to make up for any trailing line breaks not contained in the 'text' property. This has good\n                performance in most situations compared to the previous two methods.\n                */\n                var tempRange = workingRange.duplicate();\n                var rangeLength = tempRange.text.replace(/\\r\\n/g, \"\\r\").length;\n\n                offset = tempRange.moveStart(\"character\", rangeLength);\n                while ( (comparison = tempRange.compareEndPoints(\"StartToEnd\", tempRange)) == -1) {\n                    offset++;\n                    tempRange.moveStart(\"character\", 1);\n                }\n            } else {\n                offset = workingRange.text.length;\n            }\n            boundaryPosition = new DomPosition(boundaryNode, offset);\n        } else {\n\n\n            // If the boundary immediately follows a character data node and this is the end boundary, we should favour\n            // a position within that, and likewise for a start boundary preceding a character data node\n            previousNode = (isCollapsed || !isStart) && workingNode.previousSibling;\n            nextNode = (isCollapsed || isStart) && workingNode.nextSibling;\n\n\n\n            if (nextNode && dom.isCharacterDataNode(nextNode)) {\n                boundaryPosition = new DomPosition(nextNode, 0);\n            } else if (previousNode && dom.isCharacterDataNode(previousNode)) {\n                boundaryPosition = new DomPosition(previousNode, previousNode.length);\n            } else {\n                boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode));\n            }\n        }\n\n        // Clean up\n        workingNode.parentNode.removeChild(workingNode);\n\n        return boundaryPosition;\n    }\n\n    // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that node.\n    // This function started out as an optimized version of code found in Tim Cameron Ryan's IERange\n    // (http://code.google.com/p/ierange/)\n    function createBoundaryTextRange(boundaryPosition, isStart) {\n        var boundaryNode, boundaryParent, boundaryOffset = boundaryPosition.offset;\n        var doc = dom.getDocument(boundaryPosition.node);\n        var workingNode, childNodes, workingRange = doc.body.createTextRange();\n        var nodeIsDataNode = dom.isCharacterDataNode(boundaryPosition.node);\n\n        if (nodeIsDataNode) {\n            boundaryNode = boundaryPosition.node;\n            boundaryParent = boundaryNode.parentNode;\n        } else {\n            childNodes = boundaryPosition.node.childNodes;\n            boundaryNode = (boundaryOffset < childNodes.length) ? childNodes[boundaryOffset] : null;\n            boundaryParent = boundaryPosition.node;\n        }\n\n        // Position the range immediately before the node containing the boundary\n        workingNode = doc.createElement(\"span\");\n\n        // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within the\n        // element rather than immediately before or after it, which is what we want\n        workingNode.innerHTML = \"&#feff;\";\n\n        // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report\n        // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12\n        if (boundaryNode) {\n            boundaryParent.insertBefore(workingNode, boundaryNode);\n        } else {\n            boundaryParent.appendChild(workingNode);\n        }\n\n        workingRange.moveToElementText(workingNode);\n        workingRange.collapse(!isStart);\n\n        // Clean up\n        boundaryParent.removeChild(workingNode);\n\n        // Move the working range to the text offset, if required\n        if (nodeIsDataNode) {\n            workingRange[isStart ? \"moveStart\" : \"moveEnd\"](\"character\", boundaryOffset);\n        }\n\n        return workingRange;\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    if (api.features.implementsDomRange && (!api.features.implementsTextRange || !api.config.preferTextRange)) {\n        // This is a wrapper around the browser's native DOM Range. It has two aims:\n        // - Provide workarounds for specific browser bugs\n        // - provide convenient extensions, which are inherited from Rangy's DomRange\n\n        (function() {\n            var rangeProto;\n            var rangeProperties = DomRange.rangeProperties;\n            var canSetRangeStartAfterEnd;\n\n            function updateRangeProperties(range) {\n                var i = rangeProperties.length, prop;\n                while (i--) {\n                    prop = rangeProperties[i];\n                    range[prop] = range.nativeRange[prop];\n                }\n            }\n\n            function updateNativeRange(range, startContainer, startOffset, endContainer,endOffset) {\n                var startMoved = (range.startContainer !== startContainer || range.startOffset != startOffset);\n                var endMoved = (range.endContainer !== endContainer || range.endOffset != endOffset);\n\n                // Always set both boundaries for the benefit of IE9 (see issue 35)\n                if (startMoved || endMoved) {\n                    range.setEnd(endContainer, endOffset);\n                    range.setStart(startContainer, startOffset);\n                }\n            }\n\n            function detach(range) {\n                range.nativeRange.detach();\n                range.detached = true;\n                var i = rangeProperties.length, prop;\n                while (i--) {\n                    prop = rangeProperties[i];\n                    range[prop] = null;\n                }\n            }\n\n            var createBeforeAfterNodeSetter;\n\n            WrappedRange = function(range) {\n                if (!range) {\n                    throw new Error(\"Range must be specified\");\n                }\n                this.nativeRange = range;\n                updateRangeProperties(this);\n            };\n\n            DomRange.createPrototypeRange(WrappedRange, updateNativeRange, detach);\n\n            rangeProto = WrappedRange.prototype;\n\n            rangeProto.selectNode = function(node) {\n                this.nativeRange.selectNode(node);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.deleteContents = function() {\n                this.nativeRange.deleteContents();\n                updateRangeProperties(this);\n            };\n\n            rangeProto.extractContents = function() {\n                var frag = this.nativeRange.extractContents();\n                updateRangeProperties(this);\n                return frag;\n            };\n\n            rangeProto.cloneContents = function() {\n                return this.nativeRange.cloneContents();\n            };\n\n            // TODO: Until I can find a way to programmatically trigger the Firefox bug (apparently long-standing, still\n            // present in 3.6.8) that throws \"Index or size is negative or greater than the allowed amount\" for\n            // insertNode in some circumstances, all browsers will have to use the Rangy's own implementation of\n            // insertNode, which works but is almost certainly slower than the native implementation.\n/*\n            rangeProto.insertNode = function(node) {\n                this.nativeRange.insertNode(node);\n                updateRangeProperties(this);\n            };\n*/\n\n            rangeProto.surroundContents = function(node) {\n                this.nativeRange.surroundContents(node);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.collapse = function(isStart) {\n                this.nativeRange.collapse(isStart);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.cloneRange = function() {\n                return new WrappedRange(this.nativeRange.cloneRange());\n            };\n\n            rangeProto.refresh = function() {\n                updateRangeProperties(this);\n            };\n\n            rangeProto.toString = function() {\n                return this.nativeRange.toString();\n            };\n\n            // Create test range and node for feature detection\n\n            var testTextNode = document.createTextNode(\"test\");\n            dom.getBody(document).appendChild(testTextNode);\n            var range = document.createRange();\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and\n            // correct for it\n\n            range.setStart(testTextNode, 0);\n            range.setEnd(testTextNode, 0);\n\n            try {\n                range.setStart(testTextNode, 1);\n                canSetRangeStartAfterEnd = true;\n\n                rangeProto.setStart = function(node, offset) {\n                    this.nativeRange.setStart(node, offset);\n                    updateRangeProperties(this);\n                };\n\n                rangeProto.setEnd = function(node, offset) {\n                    this.nativeRange.setEnd(node, offset);\n                    updateRangeProperties(this);\n                };\n\n                createBeforeAfterNodeSetter = function(name) {\n                    return function(node) {\n                        this.nativeRange[name](node);\n                        updateRangeProperties(this);\n                    };\n                };\n\n            } catch(ex) {\n\n\n                canSetRangeStartAfterEnd = false;\n\n                rangeProto.setStart = function(node, offset) {\n                    try {\n                        this.nativeRange.setStart(node, offset);\n                    } catch (ex) {\n                        this.nativeRange.setEnd(node, offset);\n                        this.nativeRange.setStart(node, offset);\n                    }\n                    updateRangeProperties(this);\n                };\n\n                rangeProto.setEnd = function(node, offset) {\n                    try {\n                        this.nativeRange.setEnd(node, offset);\n                    } catch (ex) {\n                        this.nativeRange.setStart(node, offset);\n                        this.nativeRange.setEnd(node, offset);\n                    }\n                    updateRangeProperties(this);\n                };\n\n                createBeforeAfterNodeSetter = function(name, oppositeName) {\n                    return function(node) {\n                        try {\n                            this.nativeRange[name](node);\n                        } catch (ex) {\n                            this.nativeRange[oppositeName](node);\n                            this.nativeRange[name](node);\n                        }\n                        updateRangeProperties(this);\n                    };\n                };\n            }\n\n            rangeProto.setStartBefore = createBeforeAfterNodeSetter(\"setStartBefore\", \"setEndBefore\");\n            rangeProto.setStartAfter = createBeforeAfterNodeSetter(\"setStartAfter\", \"setEndAfter\");\n            rangeProto.setEndBefore = createBeforeAfterNodeSetter(\"setEndBefore\", \"setStartBefore\");\n            rangeProto.setEndAfter = createBeforeAfterNodeSetter(\"setEndAfter\", \"setStartAfter\");\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for and correct Firefox 2 behaviour with selectNodeContents on text nodes: it collapses the range to\n            // the 0th character of the text node\n            range.selectNodeContents(testTextNode);\n            if (range.startContainer == testTextNode && range.endContainer == testTextNode &&\n                    range.startOffset == 0 && range.endOffset == testTextNode.length) {\n                rangeProto.selectNodeContents = function(node) {\n                    this.nativeRange.selectNodeContents(node);\n                    updateRangeProperties(this);\n                };\n            } else {\n                rangeProto.selectNodeContents = function(node) {\n                    this.setStart(node, 0);\n                    this.setEnd(node, DomRange.getEndOffset(node));\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for WebKit bug that has the beahviour of compareBoundaryPoints round the wrong way for constants\n            // START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738\n\n            range.selectNodeContents(testTextNode);\n            range.setEnd(testTextNode, 3);\n\n            var range2 = document.createRange();\n            range2.selectNodeContents(testTextNode);\n            range2.setEnd(testTextNode, 4);\n            range2.setStart(testTextNode, 2);\n\n            if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 &\n                    range.compareBoundaryPoints(range.END_TO_START, range2) == 1) {\n                // This is the wrong way round, so correct for it\n\n\n                rangeProto.compareBoundaryPoints = function(type, range) {\n                    range = range.nativeRange || range;\n                    if (type == range.START_TO_END) {\n                        type = range.END_TO_START;\n                    } else if (type == range.END_TO_START) {\n                        type = range.START_TO_END;\n                    }\n                    return this.nativeRange.compareBoundaryPoints(type, range);\n                };\n            } else {\n                rangeProto.compareBoundaryPoints = function(type, range) {\n                    return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range);\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for existence of createContextualFragment and delegate to it if it exists\n            if (api.util.isHostMethod(range, \"createContextualFragment\")) {\n                rangeProto.createContextualFragment = function(fragmentStr) {\n                    return this.nativeRange.createContextualFragment(fragmentStr);\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Clean up\n            dom.getBody(document).removeChild(testTextNode);\n            range.detach();\n            range2.detach();\n        })();\n\n        api.createNativeRange = function(doc) {\n            doc = doc || document;\n            return doc.createRange();\n        };\n    } else if (api.features.implementsTextRange) {\n        // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a\n        // prototype\n\n        WrappedRange = function(textRange) {\n            this.textRange = textRange;\n            this.refresh();\n        };\n\n        WrappedRange.prototype = new DomRange(document);\n\n        WrappedRange.prototype.refresh = function() {\n            var start, end;\n\n            // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that.\n            var rangeContainerElement = getTextRangeContainerElement(this.textRange);\n\n            if (textRangeIsCollapsed(this.textRange)) {\n                end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, true);\n            } else {\n\n                start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false);\n                end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false);\n            }\n\n            this.setStart(start.node, start.offset);\n            this.setEnd(end.node, end.offset);\n        };\n\n        DomRange.copyComparisonConstants(WrappedRange);\n\n        // Add WrappedRange as the Range property of the global object to allow expression like Range.END_TO_END to work\n        var globalObj = (function() { return this; })();\n        if (typeof globalObj.Range == \"undefined\") {\n            globalObj.Range = WrappedRange;\n        }\n\n        api.createNativeRange = function(doc) {\n            doc = doc || document;\n            return doc.body.createTextRange();\n        };\n    }\n\n    if (api.features.implementsTextRange) {\n        WrappedRange.rangeToTextRange = function(range) {\n            if (range.collapsed) {\n                var tr = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n\n\n\n                return tr;\n\n                //return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n            } else {\n                var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n                var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false);\n                var textRange = dom.getDocument(range.startContainer).body.createTextRange();\n                textRange.setEndPoint(\"StartToStart\", startRange);\n                textRange.setEndPoint(\"EndToEnd\", endRange);\n                return textRange;\n            }\n        };\n    }\n\n    WrappedRange.prototype.getName = function() {\n        return \"WrappedRange\";\n    };\n\n    api.WrappedRange = WrappedRange;\n\n    api.createRange = function(doc) {\n        doc = doc || document;\n        return new WrappedRange(api.createNativeRange(doc));\n    };\n\n    api.createRangyRange = function(doc) {\n        doc = doc || document;\n        return new DomRange(doc);\n    };\n\n    api.createIframeRange = function(iframeEl) {\n        return api.createRange(dom.getIframeDocument(iframeEl));\n    };\n\n    api.createIframeRangyRange = function(iframeEl) {\n        return api.createRangyRange(dom.getIframeDocument(iframeEl));\n    };\n\n    api.addCreateMissingNativeApiListener(function(win) {\n        var doc = win.document;\n        if (typeof doc.createRange == \"undefined\") {\n            doc.createRange = function() {\n                return api.createRange(this);\n            };\n        }\n        doc = win = null;\n    });\n});rangy.createModule(\"WrappedSelection\", function(api, module) {\n    // This will create a selection object wrapper that follows the Selection object found in the WHATWG draft DOM Range\n    // spec (http://html5.org/specs/dom-range.html)\n\n    api.requireModules( [\"DomUtil\", \"DomRange\", \"WrappedRange\"] );\n\n    api.config.checkSelectionRanges = true;\n\n    var BOOLEAN = \"boolean\",\n        windowPropertyName = \"_rangySelection\",\n        dom = api.dom,\n        util = api.util,\n        DomRange = api.DomRange,\n        WrappedRange = api.WrappedRange,\n        DOMException = api.DOMException,\n        DomPosition = dom.DomPosition,\n        getSelection,\n        selectionIsCollapsed,\n        CONTROL = \"Control\";\n\n\n\n    function getWinSelection(winParam) {\n        return (winParam || window).getSelection();\n    }\n\n    function getDocSelection(winParam) {\n        return (winParam || window).document.selection;\n    }\n\n    // Test for the Range/TextRange and Selection features required\n    // Test for ability to retrieve selection\n    var implementsWinGetSelection = api.util.isHostMethod(window, \"getSelection\"),\n        implementsDocSelection = api.util.isHostObject(document, \"selection\");\n\n    var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange);\n\n    if (useDocumentSelection) {\n        getSelection = getDocSelection;\n        api.isSelectionValid = function(winParam) {\n            var doc = (winParam || window).document, nativeSel = doc.selection;\n\n            // Check whether the selection TextRange is actually contained within the correct document\n            return (nativeSel.type != \"None\" || dom.getDocument(nativeSel.createRange().parentElement()) == doc);\n        };\n    } else if (implementsWinGetSelection) {\n        getSelection = getWinSelection;\n        api.isSelectionValid = function() {\n            return true;\n        };\n    } else {\n        module.fail(\"Neither document.selection or window.getSelection() detected.\");\n    }\n\n    api.getNativeSelection = getSelection;\n\n    var testSelection = getSelection();\n    var testRange = api.createNativeRange(document);\n    var body = dom.getBody(document);\n\n    // Obtaining a range from a selection\n    var selectionHasAnchorAndFocus = util.areHostObjects(testSelection, [\"anchorNode\", \"focusNode\"] &&\n                                     util.areHostProperties(testSelection, [\"anchorOffset\", \"focusOffset\"]));\n    api.features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus;\n\n    // Test for existence of native selection extend() method\n    var selectionHasExtend = util.isHostMethod(testSelection, \"extend\");\n    api.features.selectionHasExtend = selectionHasExtend;\n\n    // Test if rangeCount exists\n    var selectionHasRangeCount = (typeof testSelection.rangeCount == \"number\");\n    api.features.selectionHasRangeCount = selectionHasRangeCount;\n\n    var selectionSupportsMultipleRanges = false;\n    var collapsedNonEditableSelectionsSupported = true;\n\n    if (util.areHostMethods(testSelection, [\"addRange\", \"getRangeAt\", \"removeAllRanges\"]) &&\n            typeof testSelection.rangeCount == \"number\" && api.features.implementsDomRange) {\n\n        (function() {\n            var iframe = document.createElement(\"iframe\");\n            body.appendChild(iframe);\n\n            var iframeDoc = dom.getIframeDocument(iframe);\n            iframeDoc.open();\n            iframeDoc.write(\"<html><head></head><body>12</body></html>\");\n            iframeDoc.close();\n\n            var sel = dom.getIframeWindow(iframe).getSelection();\n            var docEl = iframeDoc.documentElement;\n            var iframeBody = docEl.lastChild, textNode = iframeBody.firstChild;\n\n            // Test whether the native selection will allow a collapsed selection within a non-editable element\n            var r1 = iframeDoc.createRange();\n            r1.setStart(textNode, 1);\n            r1.collapse(true);\n            sel.addRange(r1);\n            collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1);\n            sel.removeAllRanges();\n\n            // Test whether the native selection is capable of supporting multiple ranges\n            var r2 = r1.cloneRange();\n            r1.setStart(textNode, 0);\n            r2.setEnd(textNode, 2);\n            sel.addRange(r1);\n            sel.addRange(r2);\n\n            selectionSupportsMultipleRanges = (sel.rangeCount == 2);\n\n            // Clean up\n            r1.detach();\n            r2.detach();\n\n            body.removeChild(iframe);\n        })();\n    }\n\n    api.features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges;\n    api.features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported;\n\n    // ControlRanges\n    var implementsControlRange = false, testControlRange;\n\n    if (body && util.isHostMethod(body, \"createControlRange\")) {\n        testControlRange = body.createControlRange();\n        if (util.areHostProperties(testControlRange, [\"item\", \"add\"])) {\n            implementsControlRange = true;\n        }\n    }\n    api.features.implementsControlRange = implementsControlRange;\n\n    // Selection collapsedness\n    if (selectionHasAnchorAndFocus) {\n        selectionIsCollapsed = function(sel) {\n            return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset;\n        };\n    } else {\n        selectionIsCollapsed = function(sel) {\n            return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false;\n        };\n    }\n\n    function updateAnchorAndFocusFromRange(sel, range, backwards) {\n        var anchorPrefix = backwards ? \"end\" : \"start\", focusPrefix = backwards ? \"start\" : \"end\";\n        sel.anchorNode = range[anchorPrefix + \"Container\"];\n        sel.anchorOffset = range[anchorPrefix + \"Offset\"];\n        sel.focusNode = range[focusPrefix + \"Container\"];\n        sel.focusOffset = range[focusPrefix + \"Offset\"];\n    }\n\n    function updateAnchorAndFocusFromNativeSelection(sel) {\n        var nativeSel = sel.nativeSelection;\n        sel.anchorNode = nativeSel.anchorNode;\n        sel.anchorOffset = nativeSel.anchorOffset;\n        sel.focusNode = nativeSel.focusNode;\n        sel.focusOffset = nativeSel.focusOffset;\n    }\n\n    function updateEmptySelection(sel) {\n        sel.anchorNode = sel.focusNode = null;\n        sel.anchorOffset = sel.focusOffset = 0;\n        sel.rangeCount = 0;\n        sel.isCollapsed = true;\n        sel._ranges.length = 0;\n    }\n\n    function getNativeRange(range) {\n        var nativeRange;\n        if (range instanceof DomRange) {\n            nativeRange = range._selectionNativeRange;\n            if (!nativeRange) {\n                nativeRange = api.createNativeRange(dom.getDocument(range.startContainer));\n                nativeRange.setEnd(range.endContainer, range.endOffset);\n                nativeRange.setStart(range.startContainer, range.startOffset);\n                range._selectionNativeRange = nativeRange;\n                range.attachListener(\"detach\", function() {\n\n                    this._selectionNativeRange = null;\n                });\n            }\n        } else if (range instanceof WrappedRange) {\n            nativeRange = range.nativeRange;\n        } else if (api.features.implementsDomRange && (range instanceof dom.getWindow(range.startContainer).Range)) {\n            nativeRange = range;\n        }\n        return nativeRange;\n    }\n\n    function rangeContainsSingleElement(rangeNodes) {\n        if (!rangeNodes.length || rangeNodes[0].nodeType != 1) {\n            return false;\n        }\n        for (var i = 1, len = rangeNodes.length; i < len; ++i) {\n            if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function getSingleElementFromRange(range) {\n        var nodes = range.getNodes();\n        if (!rangeContainsSingleElement(nodes)) {\n            throw new Error(\"getSingleElementFromRange: range \" + range.inspect() + \" did not consist of a single element\");\n        }\n        return nodes[0];\n    }\n\n    function isTextRange(range) {\n        return !!range && typeof range.text != \"undefined\";\n    }\n\n    function updateFromTextRange(sel, range) {\n        // Create a Range from the selected TextRange\n        var wrappedRange = new WrappedRange(range);\n        sel._ranges = [wrappedRange];\n\n        updateAnchorAndFocusFromRange(sel, wrappedRange, false);\n        sel.rangeCount = 1;\n        sel.isCollapsed = wrappedRange.collapsed;\n    }\n\n    function updateControlSelection(sel) {\n        // Update the wrapped selection based on what's now in the native selection\n        sel._ranges.length = 0;\n        if (sel.docSelection.type == \"None\") {\n            updateEmptySelection(sel);\n        } else {\n            var controlRange = sel.docSelection.createRange();\n            if (isTextRange(controlRange)) {\n                // This case (where the selection type is \"Control\" and calling createRange() on the selection returns\n                // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected\n                // ControlRange have been removed from the ControlRange and removed from the document.\n                updateFromTextRange(sel, controlRange);\n            } else {\n                sel.rangeCount = controlRange.length;\n                var range, doc = dom.getDocument(controlRange.item(0));\n                for (var i = 0; i < sel.rangeCount; ++i) {\n                    range = api.createRange(doc);\n                    range.selectNode(controlRange.item(i));\n                    sel._ranges.push(range);\n                }\n                sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed;\n                updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false);\n            }\n        }\n    }\n\n    function addRangeToControlSelection(sel, range) {\n        var controlRange = sel.docSelection.createRange();\n        var rangeElement = getSingleElementFromRange(range);\n\n        // Create a new ControlRange containing all the elements in the selected ControlRange plus the element\n        // contained by the supplied range\n        var doc = dom.getDocument(controlRange.item(0));\n        var newControlRange = dom.getBody(doc).createControlRange();\n        for (var i = 0, len = controlRange.length; i < len; ++i) {\n            newControlRange.add(controlRange.item(i));\n        }\n        try {\n            newControlRange.add(rangeElement);\n        } catch (ex) {\n            throw new Error(\"addRange(): Element within the specified Range could not be added to control selection (does it have layout?)\");\n        }\n        newControlRange.select();\n\n        // Update the wrapped selection based on what's now in the native selection\n        updateControlSelection(sel);\n    }\n\n    var getSelectionRangeAt;\n\n    if (util.isHostMethod(testSelection,  \"getRangeAt\")) {\n        getSelectionRangeAt = function(sel, index) {\n            try {\n                return sel.getRangeAt(index);\n            } catch(ex) {\n                return null;\n            }\n        };\n    } else if (selectionHasAnchorAndFocus) {\n        getSelectionRangeAt = function(sel) {\n            var doc = dom.getDocument(sel.anchorNode);\n            var range = api.createRange(doc);\n            range.setStart(sel.anchorNode, sel.anchorOffset);\n            range.setEnd(sel.focusNode, sel.focusOffset);\n\n            // Handle the case when the selection was selected backwards (from the end to the start in the\n            // document)\n            if (range.collapsed !== this.isCollapsed) {\n                range.setStart(sel.focusNode, sel.focusOffset);\n                range.setEnd(sel.anchorNode, sel.anchorOffset);\n            }\n\n            return range;\n        };\n    }\n\n    /**\n     * @constructor\n     */\n    function WrappedSelection(selection, docSelection, win) {\n        this.nativeSelection = selection;\n        this.docSelection = docSelection;\n        this._ranges = [];\n        this.win = win;\n        this.refresh();\n    }\n\n    api.getSelection = function(win) {\n        win = win || window;\n        var sel = win[windowPropertyName];\n        var nativeSel = getSelection(win), docSel = implementsDocSelection ? getDocSelection(win) : null;\n        if (sel) {\n            sel.nativeSelection = nativeSel;\n            sel.docSelection = docSel;\n            sel.refresh(win);\n        } else {\n            sel = new WrappedSelection(nativeSel, docSel, win);\n            win[windowPropertyName] = sel;\n        }\n        return sel;\n    };\n\n    api.getIframeSelection = function(iframeEl) {\n        return api.getSelection(dom.getIframeWindow(iframeEl));\n    };\n\n    var selProto = WrappedSelection.prototype;\n\n    function createControlSelection(sel, ranges) {\n        // Ensure that the selection becomes of type \"Control\"\n        var doc = dom.getDocument(ranges[0].startContainer);\n        var controlRange = dom.getBody(doc).createControlRange();\n        for (var i = 0, el; i < rangeCount; ++i) {\n            el = getSingleElementFromRange(ranges[i]);\n            try {\n                controlRange.add(el);\n            } catch (ex) {\n                throw new Error(\"setRanges(): Element within the one of the specified Ranges could not be added to control selection (does it have layout?)\");\n            }\n        }\n        controlRange.select();\n\n        // Update the wrapped selection based on what's now in the native selection\n        updateControlSelection(sel);\n    }\n\n    // Selecting a range\n    if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, [\"removeAllRanges\", \"addRange\"])) {\n        selProto.removeAllRanges = function() {\n            this.nativeSelection.removeAllRanges();\n            updateEmptySelection(this);\n        };\n\n        var addRangeBackwards = function(sel, range) {\n            var doc = DomRange.getRangeDocument(range);\n            var endRange = api.createRange(doc);\n            endRange.collapseToPoint(range.endContainer, range.endOffset);\n            sel.nativeSelection.addRange(getNativeRange(endRange));\n            sel.nativeSelection.extend(range.startContainer, range.startOffset);\n            sel.refresh();\n        };\n\n        if (selectionHasRangeCount) {\n            selProto.addRange = function(range, backwards) {\n                if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n                    addRangeToControlSelection(this, range);\n                } else {\n                    if (backwards && selectionHasExtend) {\n                        addRangeBackwards(this, range);\n                    } else {\n                        var previousRangeCount;\n                        if (selectionSupportsMultipleRanges) {\n                            previousRangeCount = this.rangeCount;\n                        } else {\n                            this.removeAllRanges();\n                            previousRangeCount = 0;\n                        }\n                        this.nativeSelection.addRange(getNativeRange(range));\n\n                        // Check whether adding the range was successful\n                        this.rangeCount = this.nativeSelection.rangeCount;\n\n                        if (this.rangeCount == previousRangeCount + 1) {\n                            // The range was added successfully\n\n                            // Check whether the range that we added to the selection is reflected in the last range extracted from\n                            // the selection\n                            if (api.config.checkSelectionRanges) {\n                                var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1);\n                                if (nativeRange && !DomRange.rangesEqual(nativeRange, range)) {\n                                    // Happens in WebKit with, for example, a selection placed at the start of a text node\n                                    range = new WrappedRange(nativeRange);\n                                }\n                            }\n                            this._ranges[this.rangeCount - 1] = range;\n                            updateAnchorAndFocusFromRange(this, range, selectionIsBackwards(this.nativeSelection));\n                            this.isCollapsed = selectionIsCollapsed(this);\n                        } else {\n                            // The range was not added successfully. The simplest thing is to refresh\n                            this.refresh();\n                        }\n                    }\n                }\n            };\n        } else {\n            selProto.addRange = function(range, backwards) {\n                if (backwards && selectionHasExtend) {\n                    addRangeBackwards(this, range);\n                } else {\n                    this.nativeSelection.addRange(getNativeRange(range));\n                    this.refresh();\n                }\n            };\n        }\n\n        selProto.setRanges = function(ranges) {\n            if (implementsControlRange && ranges.length > 1) {\n                createControlSelection(this, ranges);\n            } else {\n                this.removeAllRanges();\n                for (var i = 0, len = ranges.length; i < len; ++i) {\n                    this.addRange(ranges[i]);\n                }\n            }\n        };\n    } else if (util.isHostMethod(testSelection, \"empty\") && util.isHostMethod(testRange, \"select\") &&\n               implementsControlRange && useDocumentSelection) {\n\n        selProto.removeAllRanges = function() {\n            // Added try/catch as fix for issue #21\n            try {\n                this.docSelection.empty();\n\n                // Check for empty() not working (issue #24)\n                if (this.docSelection.type != \"None\") {\n                    // Work around failure to empty a control selection by instead selecting a TextRange and then\n                    // calling empty()\n                    var doc;\n                    if (this.anchorNode) {\n                        doc = dom.getDocument(this.anchorNode);\n                    } else if (this.docSelection.type == CONTROL) {\n                        var controlRange = this.docSelection.createRange();\n                        if (controlRange.length) {\n                            doc = dom.getDocument(controlRange.item(0)).body.createTextRange();\n                        }\n                    }\n                    if (doc) {\n                        var textRange = doc.body.createTextRange();\n                        textRange.select();\n                        this.docSelection.empty();\n                    }\n                }\n            } catch(ex) {}\n            updateEmptySelection(this);\n        };\n\n        selProto.addRange = function(range) {\n            if (this.docSelection.type == CONTROL) {\n                addRangeToControlSelection(this, range);\n            } else {\n                WrappedRange.rangeToTextRange(range).select();\n                this._ranges[0] = range;\n                this.rangeCount = 1;\n                this.isCollapsed = this._ranges[0].collapsed;\n                updateAnchorAndFocusFromRange(this, range, false);\n            }\n        };\n\n        selProto.setRanges = function(ranges) {\n            this.removeAllRanges();\n            var rangeCount = ranges.length;\n            if (rangeCount > 1) {\n                createControlSelection(this, ranges);\n            } else if (rangeCount) {\n                this.addRange(ranges[0]);\n            }\n        };\n    } else {\n        module.fail(\"No means of selecting a Range or TextRange was found\");\n        return false;\n    }\n\n    selProto.getRangeAt = function(index) {\n        if (index < 0 || index >= this.rangeCount) {\n            throw new DOMException(\"INDEX_SIZE_ERR\");\n        } else {\n            return this._ranges[index];\n        }\n    };\n\n    var refreshSelection;\n\n    if (useDocumentSelection) {\n        refreshSelection = function(sel) {\n            var range;\n            if (api.isSelectionValid(sel.win)) {\n                range = sel.docSelection.createRange();\n            } else {\n                range = dom.getBody(sel.win.document).createTextRange();\n                range.collapse(true);\n            }\n\n\n            if (sel.docSelection.type == CONTROL) {\n                updateControlSelection(sel);\n            } else if (isTextRange(range)) {\n                updateFromTextRange(sel, range);\n            } else {\n                updateEmptySelection(sel);\n            }\n        };\n    } else if (util.isHostMethod(testSelection, \"getRangeAt\") && typeof testSelection.rangeCount == \"number\") {\n        refreshSelection = function(sel) {\n            if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) {\n                updateControlSelection(sel);\n            } else {\n                sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount;\n                if (sel.rangeCount) {\n                    for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n                        sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i));\n                    }\n                    updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackwards(sel.nativeSelection));\n                    sel.isCollapsed = selectionIsCollapsed(sel);\n                } else {\n                    updateEmptySelection(sel);\n                }\n            }\n        };\n    } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && api.features.implementsDomRange) {\n        refreshSelection = function(sel) {\n            var range, nativeSel = sel.nativeSelection;\n            if (nativeSel.anchorNode) {\n                range = getSelectionRangeAt(nativeSel, 0);\n                sel._ranges = [range];\n                sel.rangeCount = 1;\n                updateAnchorAndFocusFromNativeSelection(sel);\n                sel.isCollapsed = selectionIsCollapsed(sel);\n            } else {\n                updateEmptySelection(sel);\n            }\n        };\n    } else {\n        module.fail(\"No means of obtaining a Range or TextRange from the user's selection was found\");\n        return false;\n    }\n\n    selProto.refresh = function(checkForChanges) {\n        var oldRanges = checkForChanges ? this._ranges.slice(0) : null;\n        refreshSelection(this);\n        if (checkForChanges) {\n            var i = oldRanges.length;\n            if (i != this._ranges.length) {\n                return false;\n            }\n            while (i--) {\n                if (!DomRange.rangesEqual(oldRanges[i], this._ranges[i])) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    };\n\n    // Removal of a single range\n    var removeRangeManually = function(sel, range) {\n        var ranges = sel.getAllRanges(), removed = false;\n        sel.removeAllRanges();\n        for (var i = 0, len = ranges.length; i < len; ++i) {\n            if (removed || range !== ranges[i]) {\n                sel.addRange(ranges[i]);\n            } else {\n                // According to the draft WHATWG Range spec, the same range may be added to the selection multiple\n                // times. removeRange should only remove the first instance, so the following ensures only the first\n                // instance is removed\n                removed = true;\n            }\n        }\n        if (!sel.rangeCount) {\n            updateEmptySelection(sel);\n        }\n    };\n\n    if (implementsControlRange) {\n        selProto.removeRange = function(range) {\n            if (this.docSelection.type == CONTROL) {\n                var controlRange = this.docSelection.createRange();\n                var rangeElement = getSingleElementFromRange(range);\n\n                // Create a new ControlRange containing all the elements in the selected ControlRange minus the\n                // element contained by the supplied range\n                var doc = dom.getDocument(controlRange.item(0));\n                var newControlRange = dom.getBody(doc).createControlRange();\n                var el, removed = false;\n                for (var i = 0, len = controlRange.length; i < len; ++i) {\n                    el = controlRange.item(i);\n                    if (el !== rangeElement || removed) {\n                        newControlRange.add(controlRange.item(i));\n                    } else {\n                        removed = true;\n                    }\n                }\n                newControlRange.select();\n\n                // Update the wrapped selection based on what's now in the native selection\n                updateControlSelection(this);\n            } else {\n                removeRangeManually(this, range);\n            }\n        };\n    } else {\n        selProto.removeRange = function(range) {\n            removeRangeManually(this, range);\n        };\n    }\n\n    // Detecting if a selection is backwards\n    var selectionIsBackwards;\n    if (!useDocumentSelection && selectionHasAnchorAndFocus && api.features.implementsDomRange) {\n        selectionIsBackwards = function(sel) {\n            var backwards = false;\n            if (sel.anchorNode) {\n                backwards = (dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1);\n            }\n            return backwards;\n        };\n\n        selProto.isBackwards = function() {\n            return selectionIsBackwards(this);\n        };\n    } else {\n        selectionIsBackwards = selProto.isBackwards = function() {\n            return false;\n        };\n    }\n\n    // Selection text\n    // This is conformant to the new WHATWG DOM Range draft spec but differs from WebKit and Mozilla's implementation\n    selProto.toString = function() {\n\n        var rangeTexts = [];\n        for (var i = 0, len = this.rangeCount; i < len; ++i) {\n            rangeTexts[i] = \"\" + this._ranges[i];\n        }\n        return rangeTexts.join(\"\");\n    };\n\n    function assertNodeInSameDocument(sel, node) {\n        if (sel.anchorNode && (dom.getDocument(sel.anchorNode) !== dom.getDocument(node))) {\n            throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n        }\n    }\n\n    // No current browsers conform fully to the HTML 5 draft spec for this method, so Rangy's own method is always used\n    selProto.collapse = function(node, offset) {\n        assertNodeInSameDocument(this, node);\n        var range = api.createRange(dom.getDocument(node));\n        range.collapseToPoint(node, offset);\n        this.removeAllRanges();\n        this.addRange(range);\n        this.isCollapsed = true;\n    };\n\n    selProto.collapseToStart = function() {\n        if (this.rangeCount) {\n            var range = this._ranges[0];\n            this.collapse(range.startContainer, range.startOffset);\n        } else {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    };\n\n    selProto.collapseToEnd = function() {\n        if (this.rangeCount) {\n            var range = this._ranges[this.rangeCount - 1];\n            this.collapse(range.endContainer, range.endOffset);\n        } else {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    };\n\n    // The HTML 5 spec is very specific on how selectAllChildren should be implemented so the native implementation is\n    // never used by Rangy.\n    selProto.selectAllChildren = function(node) {\n        assertNodeInSameDocument(this, node);\n        var range = api.createRange(dom.getDocument(node));\n        range.selectNodeContents(node);\n        this.removeAllRanges();\n        this.addRange(range);\n    };\n\n    selProto.deleteFromDocument = function() {\n        // Sepcial behaviour required for Control selections\n        if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n            var controlRange = this.docSelection.createRange();\n            var element;\n            while (controlRange.length) {\n                element = controlRange.item(0);\n                controlRange.remove(element);\n                element.parentNode.removeChild(element);\n            }\n            this.refresh();\n        } else if (this.rangeCount) {\n            var ranges = this.getAllRanges();\n            this.removeAllRanges();\n            for (var i = 0, len = ranges.length; i < len; ++i) {\n                ranges[i].deleteContents();\n            }\n            // The HTML5 spec says nothing about what the selection should contain after calling deleteContents on each\n            // range. Firefox moves the selection to where the final selected range was, so we emulate that\n            this.addRange(ranges[len - 1]);\n        }\n    };\n\n    // The following are non-standard extensions\n    selProto.getAllRanges = function() {\n        return this._ranges.slice(0);\n    };\n\n    selProto.setSingleRange = function(range) {\n        this.setRanges( [range] );\n    };\n\n    selProto.containsNode = function(node, allowPartial) {\n        for (var i = 0, len = this._ranges.length; i < len; ++i) {\n            if (this._ranges[i].containsNode(node, allowPartial)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    selProto.toHtml = function() {\n        var html = \"\";\n        if (this.rangeCount) {\n            var container = DomRange.getRangeDocument(this._ranges[0]).createElement(\"div\");\n            for (var i = 0, len = this._ranges.length; i < len; ++i) {\n                container.appendChild(this._ranges[i].cloneContents());\n            }\n            html = container.innerHTML;\n        }\n        return html;\n    };\n\n    function inspect(sel) {\n        var rangeInspects = [];\n        var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset);\n        var focus = new DomPosition(sel.focusNode, sel.focusOffset);\n        var name = (typeof sel.getName == \"function\") ? sel.getName() : \"Selection\";\n\n        if (typeof sel.rangeCount != \"undefined\") {\n            for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n                rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i));\n            }\n        }\n        return \"[\" + name + \"(Ranges: \" + rangeInspects.join(\", \") +\n                \")(anchor: \" + anchor.inspect() + \", focus: \" + focus.inspect() + \"]\";\n\n    }\n\n    selProto.getName = function() {\n        return \"WrappedSelection\";\n    };\n\n    selProto.inspect = function() {\n        return inspect(this);\n    };\n\n    selProto.detach = function() {\n        this.win[windowPropertyName] = null;\n        this.win = this.anchorNode = this.focusNode = null;\n    };\n\n    WrappedSelection.inspect = inspect;\n\n    api.Selection = WrappedSelection;\n\n    api.selectionPrototype = selProto;\n\n    api.addCreateMissingNativeApiListener(function(win) {\n        if (typeof win.getSelection == \"undefined\") {\n            win.getSelection = function() {\n                return api.getSelection(this);\n            };\n        }\n        win = null;\n    });\n});\n/*\n\tBase.js, version 1.1a\n\tCopyright 2006-2010, Dean Edwards\n\tLicense: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar Base = function() {\n\t// dummy\n};\n\nBase.extend = function(_instance, _static) { // subclass\n\tvar extend = Base.prototype.extend;\n\t\n\t// build the prototype\n\tBase._prototyping = true;\n\tvar proto = new this;\n\textend.call(proto, _instance);\n  proto.base = function() {\n    // call this method from any other method to invoke that method's ancestor\n  };\n\tdelete Base._prototyping;\n\t\n\t// create the wrapper for the constructor function\n\t//var constructor = proto.constructor.valueOf(); //-dean\n\tvar constructor = proto.constructor;\n\tvar klass = proto.constructor = function() {\n\t\tif (!Base._prototyping) {\n\t\t\tif (this._constructing || this.constructor == klass) { // instantiation\n\t\t\t\tthis._constructing = true;\n\t\t\t\tconstructor.apply(this, arguments);\n\t\t\t\tdelete this._constructing;\n\t\t\t} else if (arguments[0] != null) { // casting\n\t\t\t\treturn (arguments[0].extend || extend).call(arguments[0], proto);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t// build the class interface\n\tklass.ancestor = this;\n\tklass.extend = this.extend;\n\tklass.forEach = this.forEach;\n\tklass.implement = this.implement;\n\tklass.prototype = proto;\n\tklass.toString = this.toString;\n\tklass.valueOf = function(type) {\n\t\t//return (type == \"object\") ? klass : constructor; //-dean\n\t\treturn (type == \"object\") ? klass : constructor.valueOf();\n\t};\n\textend.call(klass, _static);\n\t// class initialisation\n\tif (typeof klass.init == \"function\") klass.init();\n\treturn klass;\n};\n\nBase.prototype = {\t\n\textend: function(source, value) {\n\t\tif (arguments.length > 1) { // extending with a name/value pair\n\t\t\tvar ancestor = this[source];\n\t\t\tif (ancestor && (typeof value == \"function\") && // overriding a method?\n\t\t\t\t// the valueOf() comparison is to avoid circular references\n\t\t\t\t(!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) &&\n\t\t\t\t/\\bbase\\b/.test(value)) {\n\t\t\t\t// get the underlying method\n\t\t\t\tvar method = value.valueOf();\n\t\t\t\t// override\n\t\t\t\tvalue = function() {\n\t\t\t\t\tvar previous = this.base || Base.prototype.base;\n\t\t\t\t\tthis.base = ancestor;\n\t\t\t\t\tvar returnValue = method.apply(this, arguments);\n\t\t\t\t\tthis.base = previous;\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t\t// point to the underlying method\n\t\t\t\tvalue.valueOf = function(type) {\n\t\t\t\t\treturn (type == \"object\") ? value : method;\n\t\t\t\t};\n\t\t\t\tvalue.toString = Base.toString;\n\t\t\t}\n\t\t\tthis[source] = value;\n\t\t} else if (source) { // extending with an object literal\n\t\t\tvar extend = Base.prototype.extend;\n\t\t\t// if this object has a customised extend method then use it\n\t\t\tif (!Base._prototyping && typeof this != \"function\") {\n\t\t\t\textend = this.extend || extend;\n\t\t\t}\n\t\t\tvar proto = {toSource: null};\n\t\t\t// do the \"toString\" and other methods manually\n\t\t\tvar hidden = [\"constructor\", \"toString\", \"valueOf\"];\n\t\t\t// if we are prototyping then include the constructor\n\t\t\tvar i = Base._prototyping ? 0 : 1;\n\t\t\twhile (key = hidden[i++]) {\n\t\t\t\tif (source[key] != proto[key]) {\n\t\t\t\t\textend.call(this, key, source[key]);\n\n\t\t\t\t}\n\t\t\t}\n\t\t\t// copy each of the source object's properties to this object\n\t\t\tfor (var key in source) {\n\t\t\t\tif (!proto[key]) extend.call(this, key, source[key]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n};\n\n// initialise\nBase = Base.extend({\n\tconstructor: function() {\n\t\tthis.extend(arguments[0]);\n\t}\n}, {\n\tancestor: Object,\n\tversion: \"1.1\",\n\t\n\tforEach: function(object, block, context) {\n\t\tfor (var key in object) {\n\t\t\tif (this.prototype[key] === undefined) {\n\t\t\t\tblock.call(context, object[key], key, object);\n\t\t\t}\n\t\t}\n\t},\n\t\t\n\timplement: function() {\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tif (typeof arguments[i] == \"function\") {\n\t\t\t\t// if it's a function, call it\n\t\t\t\targuments[i](this.prototype);\n\t\t\t} else {\n\t\t\t\t// add the interface using the extend method\n\t\t\t\tthis.prototype.extend(arguments[i]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\t\n\ttoString: function() {\n\t\treturn String(this.valueOf());\n\t}\n});/**\n * Detect browser support for specific features\n */\nwysihtml5.browser = (function() {\n  var userAgent   = navigator.userAgent,\n      testElement = document.createElement(\"div\"),\n      // Browser sniffing is unfortunately needed since some behaviors are impossible to feature detect\n      isIE        = userAgent.indexOf(\"MSIE\")         !== -1 && userAgent.indexOf(\"Opera\") === -1,\n      isGecko     = userAgent.indexOf(\"Gecko\")        !== -1 && userAgent.indexOf(\"KHTML\") === -1,\n      isWebKit    = userAgent.indexOf(\"AppleWebKit/\") !== -1,\n      isChrome    = userAgent.indexOf(\"Chrome/\")      !== -1,\n      isOpera     = userAgent.indexOf(\"Opera/\")       !== -1;\n  \n  function iosVersion(userAgent) {\n    return ((/ipad|iphone|ipod/.test(userAgent) && userAgent.match(/ os (\\d+).+? like mac os x/)) || [, 0])[1];\n  }\n  \n  return {\n    // Static variable needed, publicly accessible, to be able override it in unit tests\n    USER_AGENT: userAgent,\n    \n    /**\n     * Exclude browsers that are not capable of displaying and handling\n     * contentEditable as desired:\n     *    - iPhone, iPad (tested iOS 4.2.2) and Android (tested 2.2) refuse to make contentEditables focusable\n     *    - IE < 8 create invalid markup and crash randomly from time to time\n     *\n     * @return {Boolean}\n     */\n    supported: function() {\n      var userAgent                   = this.USER_AGENT.toLowerCase(),\n          // Essential for making html elements editable\n          hasContentEditableSupport   = \"contentEditable\" in testElement,\n          // Following methods are needed in order to interact with the contentEditable area\n          hasEditingApiSupport        = document.execCommand && document.queryCommandSupported && document.queryCommandState,\n          // document selector apis are only supported by IE 8+, Safari 4+, Chrome and Firefox 3.5+\n          hasQuerySelectorSupport     = document.querySelector && document.querySelectorAll,\n          // contentEditable is unusable in mobile browsers (tested iOS 4.2.2, Android 2.2, Opera Mobile, WebOS 3.05)\n          isIncompatibleMobileBrowser = (this.isIos() && iosVersion(userAgent) < 5) || userAgent.indexOf(\"opera mobi\") !== -1 || userAgent.indexOf(\"hpwos/\") !== -1;\n      \n      return hasContentEditableSupport\n        && hasEditingApiSupport\n        && hasQuerySelectorSupport\n        && !isIncompatibleMobileBrowser;\n    },\n    \n    isTouchDevice: function() {\n      return this.supportsEvent(\"touchmove\");\n    },\n    \n    isIos: function() {\n      var userAgent = this.USER_AGENT.toLowerCase();\n      return userAgent.indexOf(\"webkit\") !== -1 && userAgent.indexOf(\"mobile\") !== -1;\n    },\n    \n    /**\n     * Whether the browser supports sandboxed iframes\n     * Currently only IE 6+ offers such feature <iframe security=\"restricted\">\n     *\n     * http://msdn.microsoft.com/en-us/library/ms534622(v=vs.85).aspx\n     * http://blogs.msdn.com/b/ie/archive/2008/01/18/using-frames-more-securely.aspx\n     *\n     * HTML5 sandboxed iframes are still buggy and their DOM is not reachable from the outside (except when using postMessage)\n     */\n    supportsSandboxedIframes: function() {\n      return isIE;\n    },\n\n    /**\n     * IE6+7 throw a mixed content warning when the src of an iframe\n     * is empty/unset or about:blank\n     * window.querySelector is implemented as of IE8\n     */\n    throwsMixedContentWarningWhenIframeSrcIsEmpty: function() {\n      return !(\"querySelector\" in document);\n    },\n\n    /**\n     * Whether the caret is correctly displayed in contentEditable elements\n     * Firefox sometimes shows a huge caret in the beginning after focusing\n     */\n    displaysCaretInEmptyContentEditableCorrectly: function() {\n      return !isGecko;\n    },\n\n    /**\n     * Opera and IE are the only browsers who offer the css value\n     * in the original unit, thx to the currentStyle object\n     * All other browsers provide the computed style in px via window.getComputedStyle\n     */\n    hasCurrentStyleProperty: function() {\n      return \"currentStyle\" in testElement;\n    },\n\n    /**\n     * Whether the browser inserts a <br> when pressing enter in a contentEditable element\n     */\n    insertsLineBreaksOnReturn: function() {\n      return isGecko;\n    },\n\n    supportsPlaceholderAttributeOn: function(element) {\n      return \"placeholder\" in element;\n    },\n\n    supportsEvent: function(eventName) {\n      return \"on\" + eventName in testElement || (function() {\n        testElement.setAttribute(\"on\" + eventName, \"return;\");\n        return typeof(testElement[\"on\" + eventName]) === \"function\";\n      })();\n    },\n\n    /**\n     * Opera doesn't correctly fire focus/blur events when clicking in- and outside of iframe\n     */\n    supportsEventsInIframeCorrectly: function() {\n      return !isOpera;\n    },\n\n    /**\n     * Chrome & Safari only fire the ondrop/ondragend/... events when the ondragover event is cancelled\n     * with event.preventDefault\n     * Firefox 3.6 fires those events anyway, but the mozilla doc says that the dragover/dragenter event needs\n     * to be cancelled\n     */\n    firesOnDropOnlyWhenOnDragOverIsCancelled: function() {\n      return isWebKit || isGecko;\n    },\n    \n    /**\n     * Whether the browser supports the event.dataTransfer property in a proper way\n     */\n    supportsDataTransfer: function() {\n      try {\n        // Firefox doesn't support dataTransfer in a safe way, it doesn't strip script code in the html payload (like Chrome does)\n        return isWebKit && (window.Clipboard || window.DataTransfer).prototype.getData;\n      } catch(e) {\n        return false;\n      }\n    },\n\n    /**\n     * Everything below IE9 doesn't know how to treat HTML5 tags\n     *\n     * @param {Object} context The document object on which to check HTML5 support\n     *\n     * @example\n     *    wysihtml5.browser.supportsHTML5Tags(document);\n     */\n    supportsHTML5Tags: function(context) {\n      var element = context.createElement(\"div\"),\n          html5   = \"<article>foo</article>\";\n      element.innerHTML = html5;\n      return element.innerHTML.toLowerCase() === html5;\n    },\n\n    /**\n     * Checks whether a document supports a certain queryCommand\n     * In particular, Opera needs a reference to a document that has a contentEditable in it's dom tree\n     * in oder to report correct results\n     *\n     * @param {Object} doc Document object on which to check for a query command\n     * @param {String} command The query command to check for\n     * @return {Boolean}\n     *\n     * @example\n     *    wysihtml5.browser.supportsCommand(document, \"bold\");\n     */\n    supportsCommand: (function() {\n      // Following commands are supported but contain bugs in some browsers\n      var buggyCommands = {\n        // formatBlock fails with some tags (eg. <blockquote>)\n        \"formatBlock\":          isIE,\n         // When inserting unordered or ordered lists in Firefox, Chrome or Safari, the current selection or line gets\n         // converted into a list (<ul><li>...</li></ul>, <ol><li>...</li></ol>)\n         // IE and Opera act a bit different here as they convert the entire content of the current block element into a list\n        \"insertUnorderedList\":  isIE || isOpera || isWebKit,\n        \"insertOrderedList\":    isIE || isOpera || isWebKit\n      };\n      \n      // Firefox throws errors for queryCommandSupported, so we have to build up our own object of supported commands\n      var supported = {\n        \"insertHTML\": isGecko\n      };\n\n      return function(doc, command) {\n        var isBuggy = buggyCommands[command];\n        if (!isBuggy) {\n          // Firefox throws errors when invoking queryCommandSupported or queryCommandEnabled\n          try {\n            return doc.queryCommandSupported(command);\n          } catch(e1) {}\n\n          try {\n            return doc.queryCommandEnabled(command);\n          } catch(e2) {\n            return !!supported[command];\n          }\n        }\n        return false;\n      };\n    })(),\n\n    /**\n     * IE: URLs starting with:\n     *    www., http://, https://, ftp://, gopher://, mailto:, new:, snews:, telnet:, wasis:, file://,\n     *    nntp://, newsrc:, ldap://, ldaps://, outlook:, mic:// and url:\n     * will automatically be auto-linked when either the user inserts them via copy&paste or presses the\n     * space bar when the caret is directly after such an url.\n     * This behavior cannot easily be avoided in IE < 9 since the logic is hardcoded in the mshtml.dll\n     * (related blog post on msdn\n     * http://blogs.msdn.com/b/ieinternals/archive/2009/09/17/prevent-automatic-hyperlinking-in-contenteditable-html.aspx).\n     */\n    doesAutoLinkingInContentEditable: function() {\n      return isIE;\n    },\n\n    /**\n     * As stated above, IE auto links urls typed into contentEditable elements\n     * Since IE9 it's possible to prevent this behavior\n     */\n    canDisableAutoLinking: function() {\n      return this.supportsCommand(document, \"AutoUrlDetect\");\n    },\n\n    /**\n     * IE leaves an empty paragraph in the contentEditable element after clearing it\n     * Chrome/Safari sometimes an empty <div>\n     */\n    clearsContentEditableCorrectly: function() {\n      return isGecko || isOpera || isWebKit;\n    },\n\n    /**\n     * IE gives wrong results for getAttribute\n     */\n    supportsGetAttributeCorrectly: function() {\n      var td = document.createElement(\"td\");\n      return td.getAttribute(\"rowspan\") != \"1\";\n    },\n\n    /**\n     * When clicking on images in IE, Opera and Firefox, they are selected, which makes it easy to interact with them.\n     * Chrome and Safari both don't support this\n     */\n    canSelectImagesInContentEditable: function() {\n      return isGecko || isIE || isOpera;\n    },\n\n    /**\n     * When the caret is in an empty list (<ul><li>|</li></ul>) which is the first child in an contentEditable container\n     * pressing backspace doesn't remove the entire list as done in other browsers\n     */\n    clearsListsInContentEditableCorrectly: function() {\n      return isGecko || isIE || isWebKit;\n    },\n\n    /**\n     * All browsers except Safari and Chrome automatically scroll the range/caret position into view\n     */\n    autoScrollsToCaret: function() {\n      return !isWebKit;\n    },\n\n    /**\n     * Check whether the browser automatically closes tags that don't need to be opened\n     */\n    autoClosesUnclosedTags: function() {\n      var clonedTestElement = testElement.cloneNode(false),\n          returnValue,\n          innerHTML;\n\n      clonedTestElement.innerHTML = \"<p><div></div>\";\n      innerHTML                   = clonedTestElement.innerHTML.toLowerCase();\n      returnValue                 = innerHTML === \"<p></p><div></div>\" || innerHTML === \"<p><div></div></p>\";\n\n      // Cache result by overwriting current function\n      this.autoClosesUnclosedTags = function() { return returnValue; };\n\n      return returnValue;\n    },\n\n    /**\n     * Whether the browser supports the native document.getElementsByClassName which returns live NodeLists\n     */\n    supportsNativeGetElementsByClassName: function() {\n      return String(document.getElementsByClassName).indexOf(\"[native code]\") !== -1;\n    },\n\n    /**\n     * As of now (19.04.2011) only supported by Firefox 4 and Chrome\n     * See https://developer.mozilla.org/en/DOM/Selection/modify\n     */\n    supportsSelectionModify: function() {\n      return \"getSelection\" in window && \"modify\" in window.getSelection();\n    },\n    \n    /**\n     * Whether the browser supports the classList object for fast className manipulation\n     * See https://developer.mozilla.org/en/DOM/element.classList\n     */\n    supportsClassList: function() {\n      return \"classList\" in testElement;\n    },\n    \n    /**\n     * Opera needs a white space after a <br> in order to position the caret correctly\n     */\n    needsSpaceAfterLineBreak: function() {\n      return isOpera;\n    },\n    \n    /**\n     * Whether the browser supports the speech api on the given element\n     * See http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/\n     *\n     * @example\n     *    var input = document.createElement(\"input\");\n     *    if (wysihtml5.browser.supportsSpeechApiOn(input)) {\n     *      // ...\n     *    }\n     */\n    supportsSpeechApiOn: function(input) {\n      var chromeVersion = userAgent.match(/Chrome\\/(\\d+)/) || [, 0];\n      return chromeVersion[1] >= 11 && (\"onwebkitspeechchange\" in input || \"speech\" in input);\n    },\n    \n    /**\n     * IE9 crashes when setting a getter via Object.defineProperty on XMLHttpRequest or XDomainRequest\n     * See https://connect.microsoft.com/ie/feedback/details/650112\n     * or try the POC http://tifftiff.de/ie9_crash/\n     */\n    crashesWhenDefineProperty: function(property) {\n      return isIE && (property === \"XMLHttpRequest\" || property === \"XDomainRequest\");\n    },\n    \n    /**\n     * IE is the only browser who fires the \"focus\" event not immediately when .focus() is called on an element\n     */\n    doesAsyncFocus: function() {\n      return isIE;\n    },\n    \n    /**\n     * In IE it's impssible for the user and for the selection library to set the caret after an <img> when it's the lastChild in the document\n     */\n    hasProblemsSettingCaretAfterImg: function() {\n      return isIE;\n    },\n    \n    hasUndoInContextMenu: function() {\n      return isGecko || isChrome || isOpera;\n    }\n  };\n})();wysihtml5.lang.array = function(arr) {\n  return {\n    /**\n     * Check whether a given object exists in an array\n     *\n     * @example\n     *    wysihtml5.lang.array([1, 2]).contains(1);\n     *    // => true\n     */\n    contains: function(needle) {\n      if (arr.indexOf) {\n        return arr.indexOf(needle) !== -1;\n      } else {\n        for (var i=0, length=arr.length; i<length; i++) {\n          if (arr[i] === needle) { return true; }\n        }\n        return false;\n      }\n    },\n    \n    /**\n     * Substract one array from another\n     *\n     * @example\n     *    wysihtml5.lang.array([1, 2, 3, 4]).without([3, 4]);\n     *    // => [1, 2]\n     */\n    without: function(arrayToSubstract) {\n      arrayToSubstract = wysihtml5.lang.array(arrayToSubstract);\n      var newArr  = [],\n          i       = 0,\n          length  = arr.length;\n      for (; i<length; i++) {\n        if (!arrayToSubstract.contains(arr[i])) {\n          newArr.push(arr[i]);\n        }\n      }\n      return newArr;\n    },\n    \n    /**\n     * Return a clean native array\n     * \n     * Following will convert a Live NodeList to a proper Array\n     * @example\n     *    var childNodes = wysihtml5.lang.array(document.body.childNodes).get();\n     */\n    get: function() {\n      var i        = 0,\n          length   = arr.length,\n          newArray = [];\n      for (; i<length; i++) {\n        newArray.push(arr[i]);\n      }\n      return newArray;\n    }\n  };\n};wysihtml5.lang.Dispatcher = Base.extend(\n  /** @scope wysihtml5.lang.Dialog.prototype */ {\n  observe: function(eventName, handler) {\n    this.events = this.events || {};\n    this.events[eventName] = this.events[eventName] || [];\n    this.events[eventName].push(handler);\n    return this;\n  },\n\n  on: function() {\n    return this.observe.apply(this, wysihtml5.lang.array(arguments).get());\n  },\n\n  fire: function(eventName, payload) {\n    this.events = this.events || {};\n    var handlers = this.events[eventName] || [],\n        i        = 0;\n    for (; i<handlers.length; i++) {\n      handlers[i].call(this, payload);\n    }\n    return this;\n  },\n\n  stopObserving: function(eventName, handler) {\n    this.events = this.events || {};\n    var i = 0,\n        handlers,\n        newHandlers;\n    if (eventName) {\n      handlers    = this.events[eventName] || [],\n      newHandlers = [];\n      for (; i<handlers.length; i++) {\n        if (handlers[i] !== handler && handler) {\n          newHandlers.push(handlers[i]);\n        }\n      }\n      this.events[eventName] = newHandlers;\n    } else {\n      // Clean up all events\n      this.events = {};\n    }\n    return this;\n  }\n});wysihtml5.lang.object = function(obj) {\n  return {\n    /**\n     * @example\n     *    wysihtml5.lang.object({ foo: 1, bar: 1 }).merge({ bar: 2, baz: 3 }).get();\n     *    // => { foo: 1, bar: 2, baz: 3 }\n     */\n    merge: function(otherObj) {\n      for (var i in otherObj) {\n        obj[i] = otherObj[i];\n      }\n      return this;\n    },\n    \n    get: function() {\n      return obj;\n    },\n    \n    /**\n     * @example\n     *    wysihtml5.lang.object({ foo: 1 }).clone();\n     *    // => { foo: 1 }\n     */\n    clone: function() {\n      var newObj = {},\n          i;\n      for (i in obj) {\n        newObj[i] = obj[i];\n      }\n      return newObj;\n    },\n    \n    /**\n     * @example\n     *    wysihtml5.lang.object([]).isArray();\n     *    // => true\n     */\n    isArray: function() {\n      return Object.prototype.toString.call(obj) === \"[object Array]\";\n    }\n  };\n};(function() {\n  var WHITE_SPACE_START = /^\\s+/,\n      WHITE_SPACE_END   = /\\s+$/;\n  wysihtml5.lang.string = function(str) {\n    str = String(str);\n    return {\n      /**\n       * @example\n       *    wysihtml5.lang.string(\"   foo   \").trim();\n       *    // => \"foo\"\n       */\n      trim: function() {\n        return str.replace(WHITE_SPACE_START, \"\").replace(WHITE_SPACE_END, \"\");\n      },\n      \n      /**\n       * @example\n       *    wysihtml5.lang.string(\"Hello #{name}\").interpolate({ name: \"Christopher\" });\n       *    // => \"Hello Christopher\"\n       */\n      interpolate: function(vars) {\n        for (var i in vars) {\n          str = this.replace(\"#{\" + i + \"}\").by(vars[i]);\n        }\n        return str;\n      },\n      \n      /**\n       * @example\n       *    wysihtml5.lang.string(\"Hello Tom\").replace(\"Tom\").with(\"Hans\");\n       *    // => \"Hello Hans\"\n       */\n      replace: function(search) {\n        return {\n          by: function(replace) {\n            return str.split(search).join(replace);\n          }\n        }\n      }\n    };\n  };\n})();/**\n * Find urls in descendant text nodes of an element and auto-links them\n * Inspired by http://james.padolsey.com/javascript/find-and-replace-text-with-javascript/\n *\n * @param {Element} element Container element in which to search for urls\n *\n * @example\n *    <div id=\"text-container\">Please click here:www.google.com</div>\n *    <script>wysihtml5.dom.autoLink(document.getElementById(\"text-container\"));</script>\n */\n(function(wysihtml5) {\n  var /**\n       * Don't auto-link urls that are contained in the following elements:\n       */\n      IGNORE_URLS_IN        = wysihtml5.lang.array([\"CODE\", \"PRE\", \"A\", \"SCRIPT\", \"HEAD\", \"TITLE\", \"STYLE\"]),\n      /**\n       * revision 1:\n       *    /(\\S+\\.{1}[^\\s\\,\\.\\!]+)/g\n       *\n       * revision 2:\n       *    /(\\b(((https?|ftp):\\/\\/)|(www\\.))[-A-Z0-9+&@#\\/%?=~_|!:,.;\\[\\]]*[-A-Z0-9+&@#\\/%=~_|])/gim\n       *\n       * put this in the beginning if you don't wan't to match within a word\n       *    (^|[\\>\\(\\{\\[\\s\\>])\n       */\n      URL_REG_EXP           = /((https?:\\/\\/|www\\.)[^\\s<]{3,})/gi,\n      TRAILING_CHAR_REG_EXP = /([^\\w\\/\\-](,?))$/i,\n      MAX_DISPLAY_LENGTH    = 100,\n      BRACKETS              = { \")\": \"(\", \"]\": \"[\", \"}\": \"{\" };\n  \n  function autoLink(element) {\n    if (_hasParentThatShouldBeIgnored(element)) {\n      return element;\n    }\n\n    if (element === element.ownerDocument.documentElement) {\n      element = element.ownerDocument.body;\n    }\n\n    return _parseNode(element);\n  }\n  \n  /**\n   * This is basically a rebuild of\n   * the rails auto_link_urls text helper\n   */\n  function _convertUrlsToLinks(str) {\n    return str.replace(URL_REG_EXP, function(match, url) {\n      var punctuation = (url.match(TRAILING_CHAR_REG_EXP) || [])[1] || \"\",\n          opening     = BRACKETS[punctuation];\n      url = url.replace(TRAILING_CHAR_REG_EXP, \"\");\n\n      if (url.split(opening).length > url.split(punctuation).length) {\n        url = url + punctuation;\n        punctuation = \"\";\n      }\n      var realUrl    = url,\n          displayUrl = url;\n      if (url.length > MAX_DISPLAY_LENGTH) {\n        displayUrl = displayUrl.substr(0, MAX_DISPLAY_LENGTH) + \"...\";\n      }\n      // Add http prefix if necessary\n      if (realUrl.substr(0, 4) === \"www.\") {\n        realUrl = \"http://\" + realUrl;\n      }\n      \n      return '<a href=\"' + realUrl + '\">' + displayUrl + '</a>' + punctuation;\n    });\n  }\n  \n  /**\n   * Creates or (if already cached) returns a temp element\n   * for the given document object\n   */\n  function _getTempElement(context) {\n    var tempElement = context._wysihtml5_tempElement;\n    if (!tempElement) {\n      tempElement = context._wysihtml5_tempElement = context.createElement(\"div\");\n    }\n    return tempElement;\n  }\n  \n  /**\n   * Replaces the original text nodes with the newly auto-linked dom tree\n   */\n  function _wrapMatchesInNode(textNode) {\n    var parentNode  = textNode.parentNode,\n        tempElement = _getTempElement(parentNode.ownerDocument);\n    \n    // We need to insert an empty/temporary <span /> to fix IE quirks\n    // Elsewise IE would strip white space in the beginning\n    tempElement.innerHTML = \"<span></span>\" + _convertUrlsToLinks(textNode.data);\n    tempElement.removeChild(tempElement.firstChild);\n    \n    while (tempElement.firstChild) {\n      // inserts tempElement.firstChild before textNode\n      parentNode.insertBefore(tempElement.firstChild, textNode);\n    }\n    parentNode.removeChild(textNode);\n  }\n  \n  function _hasParentThatShouldBeIgnored(node) {\n    var nodeName;\n    while (node.parentNode) {\n      node = node.parentNode;\n      nodeName = node.nodeName;\n      if (IGNORE_URLS_IN.contains(nodeName)) {\n        return true;\n      } else if (nodeName === \"body\") {\n        return false;\n      }\n    }\n    return false;\n  }\n  \n  function _parseNode(element) {\n    if (IGNORE_URLS_IN.contains(element.nodeName)) {\n      return;\n    }\n    \n    if (element.nodeType === wysihtml5.TEXT_NODE && element.data.match(URL_REG_EXP)) {\n      _wrapMatchesInNode(element);\n      return;\n    }\n    \n    var childNodes        = wysihtml5.lang.array(element.childNodes).get(),\n        childNodesLength  = childNodes.length,\n        i                 = 0;\n    \n    for (; i<childNodesLength; i++) {\n      _parseNode(childNodes[i]);\n    }\n    \n    return element;\n  }\n  \n  wysihtml5.dom.autoLink = autoLink;\n  \n  // Reveal url reg exp to the outside\n  wysihtml5.dom.autoLink.URL_REG_EXP = URL_REG_EXP;\n})(wysihtml5);(function(wysihtml5) {\n  var supportsClassList = wysihtml5.browser.supportsClassList(),\n      api               = wysihtml5.dom;\n  \n  api.addClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.add(className);\n    }\n    if (api.hasClass(element, className)) {\n      return;\n    }\n    element.className += \" \" + className;\n  };\n  \n  api.removeClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.remove(className);\n    }\n    \n    element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \");\n  };\n  \n  api.hasClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.contains(className);\n    }\n    \n    var elementClassName = element.className;\n    return (elementClassName.length > 0 && (elementClassName == className || new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\").test(elementClassName)));\n  };\n})(wysihtml5);\nwysihtml5.dom.contains = (function() {\n  var documentElement = document.documentElement;\n  if (documentElement.contains) {\n    return function(container, element) {\n      if (element.nodeType !== wysihtml5.ELEMENT_NODE) {\n        element = element.parentNode;\n      }\n      return container !== element && container.contains(element);\n    };\n  } else if (documentElement.compareDocumentPosition) {\n    return function(container, element) {\n      // https://developer.mozilla.org/en/DOM/Node.compareDocumentPosition\n      return !!(container.compareDocumentPosition(element) & 16);\n    };\n  }\n})();/**\n * Converts an HTML fragment/element into a unordered/ordered list\n *\n * @param {Element} element The element which should be turned into a list\n * @param {String} listType The list type in which to convert the tree (either \"ul\" or \"ol\")\n * @return {Element} The created list\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <span id=\"pseudo-list\">\n *      eminem<br>\n *      dr. dre\n *      <div>50 Cent</div>\n *    </span>\n *\n *    <script>\n *      wysihtml5.dom.convertToList(document.getElementById(\"pseudo-list\"), \"ul\");\n *    </script>\n *\n *    <!-- Will result in: -->\n *    <ul>\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n */\nwysihtml5.dom.convertToList = (function() {\n  function _createListItem(doc, list) {\n    var listItem = doc.createElement(\"li\");\n    list.appendChild(listItem);\n    return listItem;\n  }\n  \n  function _createList(doc, type) {\n    return doc.createElement(type);\n  }\n  \n  function convertToList(element, listType) {\n    if (element.nodeName === \"UL\" || element.nodeName === \"OL\" || element.nodeName === \"MENU\") {\n      // Already a list\n      return element;\n    }\n    \n    var doc               = element.ownerDocument,\n        list              = _createList(doc, listType),\n        lineBreaks        = element.querySelectorAll(\"br\"),\n        lineBreaksLength  = lineBreaks.length,\n        childNodes,\n        childNodesLength,\n        childNode,\n        lineBreak,\n        parentNode,\n        isBlockElement,\n        isLineBreak,\n        currentListItem,\n        i;\n    \n    // First find <br> at the end of inline elements and move them behind them\n    for (i=0; i<lineBreaksLength; i++) {\n      lineBreak = lineBreaks[i];\n      while ((parentNode = lineBreak.parentNode) && parentNode !== element && parentNode.lastChild === lineBreak) {\n        if (wysihtml5.dom.getStyle(\"display\").from(parentNode) === \"block\") {\n          parentNode.removeChild(lineBreak);\n          break;\n        }\n        wysihtml5.dom.insert(lineBreak).after(lineBreak.parentNode);\n      }\n    }\n    \n    childNodes        = wysihtml5.lang.array(element.childNodes).get();\n    childNodesLength  = childNodes.length;\n    \n    for (i=0; i<childNodesLength; i++) {\n      currentListItem   = currentListItem || _createListItem(doc, list);\n      childNode         = childNodes[i];\n      isBlockElement    = wysihtml5.dom.getStyle(\"display\").from(childNode) === \"block\";\n      isLineBreak       = childNode.nodeName === \"BR\";\n      \n      if (isBlockElement) {\n        // Append blockElement to current <li> if empty, otherwise create a new one\n        currentListItem = currentListItem.firstChild ? _createListItem(doc, list) : currentListItem;\n        currentListItem.appendChild(childNode);\n        currentListItem = null;\n        continue;\n      }\n      \n      if (isLineBreak) {\n        // Only create a new list item in the next iteration when the current one has already content\n        currentListItem = currentListItem.firstChild ? null : currentListItem;\n        continue;\n      }\n      \n      currentListItem.appendChild(childNode);\n    }\n    \n    element.parentNode.replaceChild(list, element);\n    return list;\n  }\n  \n  return convertToList;\n})();/**\n * Copy a set of attributes from one element to another\n *\n * @param {Array} attributesToCopy List of attributes which should be copied\n * @return {Object} Returns an object which offers the \"from\" method which can be invoked with the element where to\n *    copy the attributes from., this again returns an object which provides a method named \"to\" which can be invoked \n *    with the element where to copy the attributes to (see example)\n *\n * @example\n *    var textarea    = document.querySelector(\"textarea\"),\n *        div         = document.querySelector(\"div[contenteditable=true]\"),\n *        anotherDiv  = document.querySelector(\"div.preview\");\n *    wysihtml5.dom.copyAttributes([\"spellcheck\", \"value\", \"placeholder\"]).from(textarea).to(div).andTo(anotherDiv);\n *\n */\nwysihtml5.dom.copyAttributes = function(attributesToCopy) {\n  return {\n    from: function(elementToCopyFrom) {\n      return {\n        to: function(elementToCopyTo) {\n          var attribute,\n              i         = 0,\n              length    = attributesToCopy.length;\n          for (; i<length; i++) {\n            attribute = attributesToCopy[i];\n            if (typeof(elementToCopyFrom[attribute]) !== \"undefined\" && elementToCopyFrom[attribute] !== \"\") {\n              elementToCopyTo[attribute] = elementToCopyFrom[attribute];\n            }\n          }\n          return { andTo: arguments.callee };\n        }\n      };\n    }\n  };\n};/**\n * Copy a set of styles from one element to another\n * Please note that this only works properly across browsers when the element from which to copy the styles\n * is in the dom\n *\n * Interesting article on how to copy styles\n *\n * @param {Array} stylesToCopy List of styles which should be copied\n * @return {Object} Returns an object which offers the \"from\" method which can be invoked with the element where to\n *    copy the styles from., this again returns an object which provides a method named \"to\" which can be invoked \n *    with the element where to copy the styles to (see example)\n *\n * @example\n *    var textarea    = document.querySelector(\"textarea\"),\n *        div         = document.querySelector(\"div[contenteditable=true]\"),\n *        anotherDiv  = document.querySelector(\"div.preview\");\n *    wysihtml5.dom.copyStyles([\"overflow-y\", \"width\", \"height\"]).from(textarea).to(div).andTo(anotherDiv);\n *\n */\n(function(dom) {\n  \n  /**\n   * Mozilla, WebKit and Opera recalculate the computed width when box-sizing: boder-box; is set\n   * So if an element has \"width: 200px; -moz-box-sizing: border-box; border: 1px;\" then \n   * its computed css width will be 198px\n   */\n  var BOX_SIZING_PROPERTIES = [\"-webkit-box-sizing\", \"-moz-box-sizing\", \"-ms-box-sizing\", \"box-sizing\"];\n  \n  var shouldIgnoreBoxSizingBorderBox = function(element) {\n    if (hasBoxSizingBorderBox(element)) {\n       return parseInt(dom.getStyle(\"width\").from(element), 10) < element.offsetWidth;\n    }\n    return false;\n  };\n  \n  var hasBoxSizingBorderBox = function(element) {\n    var i       = 0,\n        length  = BOX_SIZING_PROPERTIES.length;\n    for (; i<length; i++) {\n      if (dom.getStyle(BOX_SIZING_PROPERTIES[i]).from(element) === \"border-box\") {\n        return BOX_SIZING_PROPERTIES[i];\n      }\n    }\n  };\n  \n  dom.copyStyles = function(stylesToCopy) {\n    return {\n      from: function(element) {\n        if (shouldIgnoreBoxSizingBorderBox(element)) {\n          stylesToCopy = wysihtml5.lang.array(stylesToCopy).without(BOX_SIZING_PROPERTIES);\n        }\n        \n        var cssText = \"\",\n            length  = stylesToCopy.length,\n            i       = 0,\n            property;\n        for (; i<length; i++) {\n          property = stylesToCopy[i];\n          cssText += property + \":\" + dom.getStyle(property).from(element) + \";\";\n        }\n        \n        return {\n          to: function(element) {\n            dom.setStyles(cssText).on(element);\n            return { andTo: arguments.callee };\n          }\n        };\n      }\n    };\n  };\n})(wysihtml5.dom);/**\n * Event Delegation\n *\n * @example\n *    wysihtml5.dom.delegate(document.body, \"a\", \"click\", function() {\n *      // foo\n *    });\n */\n(function(wysihtml5) {\n  \n  wysihtml5.dom.delegate = function(container, selector, eventName, handler) {\n    return wysihtml5.dom.observe(container, eventName, function(event) {\n      var target    = event.target,\n          match     = wysihtml5.lang.array(container.querySelectorAll(selector));\n      \n      while (target && target !== container) {\n        if (match.contains(target)) {\n          handler.call(target, event);\n          break;\n        }\n        target = target.parentNode;\n      }\n    });\n  };\n  \n})(wysihtml5);/**\n * Returns the given html wrapped in a div element\n *\n * Fixing IE's inability to treat unknown elements (HTML5 section, article, ...) correctly\n * when inserted via innerHTML\n * \n * @param {String} html The html which should be wrapped in a dom element\n * @param {Obejct} [context] Document object of the context the html belongs to\n *\n * @example\n *    wysihtml5.dom.getAsDom(\"<article>foo</article>\");\n */\nwysihtml5.dom.getAsDom = (function() {\n  \n  var _innerHTMLShiv = function(html, context) {\n    var tempElement = context.createElement(\"div\");\n    tempElement.style.display = \"none\";\n    context.body.appendChild(tempElement);\n    // IE throws an exception when trying to insert <frameset></frameset> via innerHTML\n    try { tempElement.innerHTML = html; } catch(e) {}\n    context.body.removeChild(tempElement);\n    return tempElement;\n  };\n  \n  /**\n   * Make sure IE supports HTML5 tags, which is accomplished by simply creating one instance of each element\n   */\n  var _ensureHTML5Compatibility = function(context) {\n    if (context._wysihtml5_supportsHTML5Tags) {\n      return;\n    }\n    for (var i=0, length=HTML5_ELEMENTS.length; i<length; i++) {\n      context.createElement(HTML5_ELEMENTS[i]);\n    }\n    context._wysihtml5_supportsHTML5Tags = true;\n  };\n  \n  \n  /**\n   * List of html5 tags\n   * taken from http://simon.html5.org/html5-elements\n   */\n  var HTML5_ELEMENTS = [\n    \"abbr\", \"article\", \"aside\", \"audio\", \"bdi\", \"canvas\", \"command\", \"datalist\", \"details\", \"figcaption\",\n    \"figure\", \"footer\", \"header\", \"hgroup\", \"keygen\", \"mark\", \"meter\", \"nav\", \"output\", \"progress\",\n    \"rp\", \"rt\", \"ruby\", \"svg\", \"section\", \"source\", \"summary\", \"time\", \"track\", \"video\", \"wbr\"\n  ];\n  \n  return function(html, context) {\n    context = context || document;\n    var tempElement;\n    if (typeof(html) === \"object\" && html.nodeType) {\n      tempElement = context.createElement(\"div\");\n      tempElement.appendChild(html);\n    } else if (wysihtml5.browser.supportsHTML5Tags(context)) {\n      tempElement = context.createElement(\"div\");\n      tempElement.innerHTML = html;\n    } else {\n      _ensureHTML5Compatibility(context);\n      tempElement = _innerHTMLShiv(html, context);\n    }\n    return tempElement;\n  };\n})();/**\n * Walks the dom tree from the given node up until it finds a match\n * Designed for optimal performance.\n *\n * @param {Element} node The from which to check the parent nodes\n * @param {Object} matchingSet Object to match against (possible properties: nodeName, className, classRegExp)\n * @param {Number} [levels] How many parents should the function check up from the current node (defaults to 50)\n * @return {null|Element} Returns the first element that matched the desiredNodeName(s)\n * @example\n *    var listElement = wysihtml5.dom.getParentElement(document.querySelector(\"li\"), { nodeName: [\"MENU\", \"UL\", \"OL\"] });\n *    // ... or ...\n *    var unorderedListElement = wysihtml5.dom.getParentElement(document.querySelector(\"li\"), { nodeName: \"UL\" });\n *    // ... or ...\n *    var coloredElement = wysihtml5.dom.getParentElement(myTextNode, { nodeName: \"SPAN\", className: \"wysiwyg-color-red\", classRegExp: /wysiwyg-color-[a-z]/g });\n */\nwysihtml5.dom.getParentElement = (function() {\n  \n  function _isSameNodeName(nodeName, desiredNodeNames) {\n    if (!desiredNodeNames || !desiredNodeNames.length) {\n      return true;\n    }\n    \n    if (typeof(desiredNodeNames) === \"string\") {\n      return nodeName === desiredNodeNames;\n    } else {\n      return wysihtml5.lang.array(desiredNodeNames).contains(nodeName);\n    }\n  }\n  \n  function _isElement(node) {\n    return node.nodeType === wysihtml5.ELEMENT_NODE;\n  }\n  \n  function _hasClassName(element, className, classRegExp) {\n    var classNames = (element.className || \"\").match(classRegExp) || [];\n    if (!className) {\n      return !!classNames.length;\n    }\n    return classNames[classNames.length - 1] === className;\n  }\n  \n  function _getParentElementWithNodeName(node, nodeName, levels) {\n    while (levels-- && node && node.nodeName !== \"BODY\") {\n      if (_isSameNodeName(node.nodeName, nodeName)) {\n        return node;\n      }\n      node = node.parentNode;\n    }\n    return null;\n  }\n  \n  function _getParentElementWithNodeNameAndClassName(node, nodeName, className, classRegExp, levels) {\n    while (levels-- && node && node.nodeName !== \"BODY\") {\n      if (_isElement(node) &&\n          _isSameNodeName(node.nodeName, nodeName) &&\n          _hasClassName(node, className, classRegExp)) {\n        return node;\n      }\n      node = node.parentNode;\n    }\n    return null;\n  }\n  \n  return function(node, matchingSet, levels) {\n    levels = levels || 50; // Go max 50 nodes upwards from current node\n    if (matchingSet.className || matchingSet.classRegExp) {\n      return _getParentElementWithNodeNameAndClassName(\n        node, matchingSet.nodeName, matchingSet.className, matchingSet.classRegExp, levels\n      );\n    } else {\n      return _getParentElementWithNodeName(\n        node, matchingSet.nodeName, levels\n      );\n    }\n  };\n})();\n/**\n * Get element's style for a specific css property\n *\n * @param {Element} element The element on which to retrieve the style\n * @param {String} property The CSS property to retrieve (\"float\", \"display\", \"text-align\", ...)\n *\n * @example\n *    wysihtml5.dom.getStyle(\"display\").from(document.body);\n *    // => \"block\"\n */\nwysihtml5.dom.getStyle = (function() {\n  var stylePropertyMapping = {\n        \"float\": (\"styleFloat\" in document.createElement(\"div\").style) ? \"styleFloat\" : \"cssFloat\"\n      },\n      REG_EXP_CAMELIZE = /\\-[a-z]/g;\n  \n  function camelize(str) {\n    return str.replace(REG_EXP_CAMELIZE, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  }\n  \n  return function(property) {\n    return {\n      from: function(element) {\n        if (element.nodeType !== wysihtml5.ELEMENT_NODE) {\n          return;\n        }\n        \n        var doc               = element.ownerDocument,\n            camelizedProperty = stylePropertyMapping[property] || camelize(property),\n            style             = element.style,\n            currentStyle      = element.currentStyle,\n            styleValue        = style[camelizedProperty];\n        if (styleValue) {\n          return styleValue;\n        }\n        \n        // currentStyle is no standard and only supported by Opera and IE but it has one important advantage over the standard-compliant\n        // window.getComputedStyle, since it returns css property values in their original unit:\n        // If you set an elements width to \"50%\", window.getComputedStyle will give you it's current width in px while currentStyle\n        // gives you the original \"50%\".\n        // Opera supports both, currentStyle and window.getComputedStyle, that's why checking for currentStyle should have higher prio\n        if (currentStyle) {\n          try {\n                return currentStyle[camelizedProperty];\n          } catch(e) {\n            //ie will occasionally fail for unknown reasons. swallowing exception\n          }\n        }\n\n        var win                 = doc.defaultView || doc.parentWindow,\n            needsOverflowReset  = (property === \"height\" || property === \"width\") && element.nodeName === \"TEXTAREA\",\n            originalOverflow,\n            returnValue;\n\n        if (win.getComputedStyle) {\n          // Chrome and Safari both calculate a wrong width and height for textareas when they have scroll bars\n          // therfore we remove and restore the scrollbar and calculate the value in between\n          if (needsOverflowReset) {\n            originalOverflow = style.overflow;\n            style.overflow = \"hidden\";\n          }\n          returnValue = win.getComputedStyle(element, null).getPropertyValue(property);\n          if (needsOverflowReset) {\n            style.overflow = originalOverflow || \"\";\n          }\n          return returnValue;\n        }\n      }\n    };\n  };\n})();/**\n * High performant way to check whether an element with a specific tag name is in the given document\n * Optimized for being heavily executed\n * Unleashes the power of live node lists\n *\n * @param {Object} doc The document object of the context where to check\n * @param {String} tagName Upper cased tag name\n * @example\n *    wysihtml5.dom.hasElementWithTagName(document, \"IMG\");\n */\nwysihtml5.dom.hasElementWithTagName = (function() {\n  var LIVE_CACHE          = {},\n      DOCUMENT_IDENTIFIER = 1;\n  \n  function _getDocumentIdentifier(doc) {\n    return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++);\n  }\n  \n  return function(doc, tagName) {\n    var key         = _getDocumentIdentifier(doc) + \":\" + tagName,\n        cacheEntry  = LIVE_CACHE[key];\n    if (!cacheEntry) {\n      cacheEntry = LIVE_CACHE[key] = doc.getElementsByTagName(tagName);\n    }\n    \n    return cacheEntry.length > 0;\n  };\n})();/**\n * High performant way to check whether an element with a specific class name is in the given document\n * Optimized for being heavily executed\n * Unleashes the power of live node lists\n *\n * @param {Object} doc The document object of the context where to check\n * @param {String} tagName Upper cased tag name\n * @example\n *    wysihtml5.dom.hasElementWithClassName(document, \"foobar\");\n */\n(function(wysihtml5) {\n  var LIVE_CACHE          = {},\n      DOCUMENT_IDENTIFIER = 1;\n\n  function _getDocumentIdentifier(doc) {\n    return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++);\n  }\n  \n  wysihtml5.dom.hasElementWithClassName = function(doc, className) {\n    // getElementsByClassName is not supported by IE<9\n    // but is sometimes mocked via library code (which then doesn't return live node lists)\n    if (!wysihtml5.browser.supportsNativeGetElementsByClassName()) {\n      return !!doc.querySelector(\".\" + className);\n    }\n\n    var key         = _getDocumentIdentifier(doc) + \":\" + className,\n        cacheEntry  = LIVE_CACHE[key];\n    if (!cacheEntry) {\n      cacheEntry = LIVE_CACHE[key] = doc.getElementsByClassName(className);\n    }\n\n    return cacheEntry.length > 0;\n  };\n})(wysihtml5);\nwysihtml5.dom.insert = function(elementToInsert) {\n  return {\n    after: function(element) {\n      element.parentNode.insertBefore(elementToInsert, element.nextSibling);\n    },\n    \n    before: function(element) {\n      element.parentNode.insertBefore(elementToInsert, element);\n    },\n    \n    into: function(element) {\n      element.appendChild(elementToInsert);\n    }\n  };\n};wysihtml5.dom.insertCSS = function(rules) {\n  rules = rules.join(\"\\n\");\n  \n  return {\n    into: function(doc) {\n      var head         = doc.head || doc.getElementsByTagName(\"head\")[0],\n          styleElement = doc.createElement(\"style\");\n\n      styleElement.type = \"text/css\";\n\n      if (styleElement.styleSheet) {\n        styleElement.styleSheet.cssText = rules;\n      } else {\n        styleElement.appendChild(doc.createTextNode(rules));\n      }\n\n      if (head) {\n        head.appendChild(styleElement);\n      }\n    }\n  };\n};/**\n * Method to set dom events\n *\n * @example\n *    wysihtml5.dom.observe(iframe.contentWindow.document.body, [\"focus\", \"blur\"], function() { ... });\n */\nwysihtml5.dom.observe = function(element, eventNames, handler) {\n  eventNames = typeof(eventNames) === \"string\" ? [eventNames] : eventNames;\n  \n  var handlerWrapper,\n      eventName,\n      i       = 0,\n      length  = eventNames.length;\n  \n  for (; i<length; i++) {\n    eventName = eventNames[i];\n    if (element.addEventListener) {\n      element.addEventListener(eventName, handler, false);\n    } else {\n      handlerWrapper = function(event) {\n        if (!(\"target\" in event)) {\n          event.target = event.srcElement;\n        }\n        event.preventDefault = event.preventDefault || function() {\n          this.returnValue = false;\n        };\n        event.stopPropagation = event.stopPropagation || function() {\n          this.cancelBubble = true;\n        };\n        handler.call(element, event);\n      };\n      element.attachEvent(\"on\" + eventName, handlerWrapper);\n    }\n  }\n  \n  return {\n    stop: function() {\n      var eventName,\n          i       = 0,\n          length  = eventNames.length;\n      for (; i<length; i++) {\n        eventName = eventNames[i];\n        if (element.removeEventListener) {\n          element.removeEventListener(eventName, handler, false);\n        } else {\n          element.detachEvent(\"on\" + eventName, handlerWrapper);\n        }\n      }\n    }\n  };\n};\n/**\n * HTML Sanitizer\n * Rewrites the HTML based on given rules\n *\n * @param {Element|String} elementOrHtml HTML String to be sanitized OR element whose content should be sanitized\n * @param {Object} [rules] List of rules for rewriting the HTML, if there's no rule for an element it will\n *    be converted to a \"span\". Each rule is a key/value pair where key is the tag to convert, and value the\n *    desired substitution.\n * @param {Object} context Document object in which to parse the html, needed to sandbox the parsing\n *\n * @return {Element|String} Depends on the elementOrHtml parameter. When html then the sanitized html as string elsewise the element.\n *\n * @example\n *    var userHTML = '<div id=\"foo\" onclick=\"alert(1);\"><p><font color=\"red\">foo</font><script>alert(1);</script></p></div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      tags {\n *        p:      \"div\",      // Rename p tags to div tags\n *        font:   \"span\"      // Rename font tags to span tags\n *        div:    true,       // Keep them, also possible (same result when passing: \"div\" or true)\n *        script: undefined   // Remove script elements\n *      }\n *    });\n *    // => <div><div><span>foo bar</span></div></div>\n *\n *    var userHTML = '<table><tbody><tr><td>I'm a table!</td></tr></tbody></table>';\n *    wysihtml5.dom.parse(userHTML);\n *    // => '<span><span><span><span>I'm a table!</span></span></span></span>'\n *\n *    var userHTML = '<div>foobar<br>foobar</div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      tags: {\n *        div: undefined,\n *        br:  true\n *      }\n *    });\n *    // => ''\n *\n *    var userHTML = '<div class=\"red\">foo</div><div class=\"pink\">bar</div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      classes: {\n *        red:    1,\n *        green:  1\n *      },\n *      tags: {\n *        div: {\n *          rename_tag:     \"p\"\n *        }\n *      }\n *    });\n *    // => '<p class=\"red\">foo</p><p>bar</p>'\n */\nwysihtml5.dom.parse = (function() {\n  \n  /**\n   * It's not possible to use a XMLParser/DOMParser as HTML5 is not always well-formed XML\n   * new DOMParser().parseFromString('<img src=\"foo.gif\">') will cause a parseError since the\n   * node isn't closed\n   *\n   * Therefore we've to use the browser's ordinary HTML parser invoked by setting innerHTML.\n   */\n  var NODE_TYPE_MAPPING = {\n        \"1\": _handleElement,\n        \"3\": _handleText\n      },\n      // Rename unknown tags to this\n      DEFAULT_NODE_NAME   = \"span\",\n      WHITE_SPACE_REG_EXP = /\\s+/,\n      defaultRules        = { tags: {}, classes: {} },\n      currentRules        = {};\n  \n  /**\n   * Iterates over all childs of the element, recreates them, appends them into a document fragment\n   * which later replaces the entire body content\n   */\n  function parse(elementOrHtml, rules, context, cleanUp) {\n    wysihtml5.lang.object(currentRules).merge(defaultRules).merge(rules).get();\n    \n    context           = context || elementOrHtml.ownerDocument || document;\n    var fragment      = context.createDocumentFragment(),\n        isString      = typeof(elementOrHtml) === \"string\",\n        element,\n        newNode,\n        firstChild;\n    \n    if (isString) {\n      element = wysihtml5.dom.getAsDom(elementOrHtml, context);\n    } else {\n      element = elementOrHtml;\n    }\n    \n    while (element.firstChild) {\n      firstChild  = element.firstChild;\n      element.removeChild(firstChild);\n      newNode = _convert(firstChild, cleanUp);\n      if (newNode) {\n        fragment.appendChild(newNode);\n      }\n    }\n    \n    // Clear element contents\n    element.innerHTML = \"\";\n    \n    // Insert new DOM tree\n    element.appendChild(fragment);\n    \n    return isString ? wysihtml5.quirks.getCorrectInnerHTML(element) : element;\n  }\n  \n  function _convert(oldNode, cleanUp) {\n    var oldNodeType     = oldNode.nodeType,\n        oldChilds       = oldNode.childNodes,\n        oldChildsLength = oldChilds.length,\n        newNode,\n        method          = NODE_TYPE_MAPPING[oldNodeType],\n        i               = 0;\n    \n    newNode = method && method(oldNode);\n    \n    if (!newNode) {\n      return null;\n    }\n    \n    for (i=0; i<oldChildsLength; i++) {\n      newChild = _convert(oldChilds[i], cleanUp);\n      if (newChild) {\n        newNode.appendChild(newChild);\n      }\n    }\n    \n    // Cleanup senseless <span> elements\n    if (cleanUp &&\n        newNode.childNodes.length <= 1 &&\n        newNode.nodeName.toLowerCase() === DEFAULT_NODE_NAME &&\n        !newNode.attributes.length) {\n      return newNode.firstChild;\n    }\n    \n    return newNode;\n  }\n  \n  function _handleElement(oldNode) {\n    var rule,\n        newNode,\n        endTag,\n        tagRules    = currentRules.tags,\n        nodeName    = oldNode.nodeName.toLowerCase(),\n        scopeName   = oldNode.scopeName;\n    \n    /**\n     * We already parsed that element\n     * ignore it! (yes, this sometimes happens in IE8 when the html is invalid)\n     */\n    if (oldNode._wysihtml5) {\n      return null;\n    }\n    oldNode._wysihtml5 = 1;\n    \n    if (oldNode.className === \"wysihtml5-temp\") {\n      return null;\n    }\n    \n    /**\n     * IE is the only browser who doesn't include the namespace in the\n     * nodeName, that's why we have to prepend it by ourselves\n     * scopeName is a proprietary IE feature\n     * read more here http://msdn.microsoft.com/en-us/library/ms534388(v=vs.85).aspx\n     */\n    if (scopeName && scopeName != \"HTML\") {\n      nodeName = scopeName + \":\" + nodeName;\n    }\n    \n    /**\n     * Repair node\n     * IE is a bit bitchy when it comes to invalid nested markup which includes unclosed tags\n     * A <p> doesn't need to be closed according HTML4-5 spec, we simply replace it with a <div> to preserve its content and layout\n     */\n    if (\"outerHTML\" in oldNode) {\n      if (!wysihtml5.browser.autoClosesUnclosedTags() &&\n          oldNode.nodeName === \"P\" &&\n          oldNode.outerHTML.slice(-4).toLowerCase() !== \"</p>\") {\n        nodeName = \"div\";\n      }\n    }\n    \n    if (nodeName in tagRules) {\n      rule = tagRules[nodeName];\n      if (!rule || rule.remove) {\n        return null;\n      }\n      \n      rule = typeof(rule) === \"string\" ? { rename_tag: rule } : rule;\n    } else if (oldNode.firstChild) {\n      rule = { rename_tag: DEFAULT_NODE_NAME };\n    } else {\n      // Remove empty unknown elements\n      return null;\n    }\n    \n    newNode = oldNode.ownerDocument.createElement(rule.rename_tag || nodeName);\n    _handleAttributes(oldNode, newNode, rule);\n    \n    oldNode = null;\n    return newNode;\n  }\n  \n  function _handleAttributes(oldNode, newNode, rule) {\n    var attributes          = {},                         // fresh new set of attributes to set on newNode\n        setClass            = rule.set_class,             // classes to set\n        addClass            = rule.add_class,             // add classes based on existing attributes\n        setAttributes       = rule.set_attributes,        // attributes to set on the current node\n        checkAttributes     = rule.check_attributes,      // check/convert values of attributes\n        allowedClasses      = currentRules.classes,\n        i                   = 0,\n        classes             = [],\n        newClasses          = [],\n        newUniqueClasses    = [],\n        oldClasses          = [],\n        classesLength,\n        newClassesLength,\n        currentClass,\n        newClass,\n        attributeName,\n        newAttributeValue,\n        method;\n    \n    if (setAttributes) {\n      attributes = wysihtml5.lang.object(setAttributes).clone();\n    }\n    \n    if (checkAttributes) {\n      for (attributeName in checkAttributes) {\n        method = attributeCheckMethods[checkAttributes[attributeName]];\n        if (!method) {\n          continue;\n        }\n        newAttributeValue = method(_getAttribute(oldNode, attributeName));\n        if (typeof(newAttributeValue) === \"string\") {\n          attributes[attributeName] = newAttributeValue;\n        }\n      }\n    }\n    \n    if (setClass) {\n      classes.push(setClass);\n    }\n    \n    if (addClass) {\n      for (attributeName in addClass) {\n        method = addClassMethods[addClass[attributeName]];\n        if (!method) {\n          continue;\n        }\n        newClass = method(_getAttribute(oldNode, attributeName));\n        if (typeof(newClass) === \"string\") {\n          classes.push(newClass);\n        }\n      }\n    }\n    \n    // make sure that wysihtml5 temp class doesn't get stripped out\n    allowedClasses[\"_wysihtml5-temp-placeholder\"] = 1;\n    \n    // add old classes last\n    oldClasses = oldNode.getAttribute(\"class\");\n    if (oldClasses) {\n      classes = classes.concat(oldClasses.split(WHITE_SPACE_REG_EXP));\n    }\n    classesLength = classes.length;\n    for (; i<classesLength; i++) {\n      currentClass = classes[i];\n      if (allowedClasses[currentClass]) {\n        newClasses.push(currentClass);\n      }\n    }\n    \n    // remove duplicate entries and preserve class specificity\n    newClassesLength = newClasses.length;\n    while (newClassesLength--) {\n      currentClass = newClasses[newClassesLength];\n      if (!wysihtml5.lang.array(newUniqueClasses).contains(currentClass)) {\n        newUniqueClasses.unshift(currentClass);\n      }\n    }\n    \n    if (newUniqueClasses.length) {\n      attributes[\"class\"] = newUniqueClasses.join(\" \");\n    }\n    \n    // set attributes on newNode\n    for (attributeName in attributes) {\n      // Setting attributes can cause a js error in IE under certain circumstances\n      // eg. on a <img> under https when it's new attribute value is non-https\n      // TODO: Investigate this further and check for smarter handling\n      try {\n        newNode.setAttribute(attributeName, attributes[attributeName]);\n      } catch(e) {}\n    }\n    \n    // IE8 sometimes loses the width/height attributes when those are set before the \"src\"\n    // so we make sure to set them again\n    if (attributes.src) {\n      if (typeof(attributes.width) !== \"undefined\") {\n        newNode.setAttribute(\"width\", attributes.width);\n      }\n      if (typeof(attributes.height) !== \"undefined\") {\n        newNode.setAttribute(\"height\", attributes.height);\n      }\n    }\n  }\n  \n  /**\n   * IE gives wrong results for hasAttribute/getAttribute, for example:\n   *    var td = document.createElement(\"td\");\n   *    td.getAttribute(\"rowspan\"); // => \"1\" in IE\n   *\n   * Therefore we have to check the element's outerHTML for the attribute\n   */\n  var HAS_GET_ATTRIBUTE_BUG = !wysihtml5.browser.supportsGetAttributeCorrectly();\n  function _getAttribute(node, attributeName) {\n    attributeName = attributeName.toLowerCase();\n    var nodeName = node.nodeName;\n    if (nodeName == \"IMG\" && attributeName == \"src\" && _isLoadedImage(node) === true) {\n      // Get 'src' attribute value via object property since this will always contain the\n      // full absolute url (http://...)\n      // this fixes a very annoying bug in firefox (ver 3.6 & 4) and IE 8 where images copied from the same host\n      // will have relative paths, which the sanitizer strips out (see attributeCheckMethods.url)\n      return node.src;\n    } else if (HAS_GET_ATTRIBUTE_BUG && \"outerHTML\" in node) {\n      // Don't trust getAttribute/hasAttribute in IE 6-8, instead check the element's outerHTML\n      var outerHTML      = node.outerHTML.toLowerCase(),\n          // TODO: This might not work for attributes without value: <input disabled>\n          hasAttribute   = outerHTML.indexOf(\" \" + attributeName +  \"=\") != -1;\n      \n      return hasAttribute ? node.getAttribute(attributeName) : null;\n    } else{\n      return node.getAttribute(attributeName);\n    }\n  }\n  \n  /**\n   * Check whether the given node is a proper loaded image\n   * FIXME: Returns undefined when unknown (Chrome, Safari)\n   */\n  function _isLoadedImage(node) {\n    try {\n      return node.complete && !node.mozMatchesSelector(\":-moz-broken\");\n    } catch(e) {\n      if (node.complete && node.readyState === \"complete\") {\n        return true;\n      }\n    }\n  }\n  \n  function _handleText(oldNode) {\n    return oldNode.ownerDocument.createTextNode(oldNode.data);\n  }\n  \n  \n  // ------------ attribute checks ------------ \\\\\n  var attributeCheckMethods = {\n    url: (function() {\n      var REG_EXP = /^https?:\\/\\//i;\n      return function(attributeValue) {\n        if (!attributeValue || !attributeValue.match(REG_EXP)) {\n          return null;\n        }\n        return attributeValue.replace(REG_EXP, function(match) {\n          return match.toLowerCase();\n        });\n      };\n    })(),\n    \n    alt: (function() {\n      var REG_EXP = /[^ a-z0-9_\\-]/gi;\n      return function(attributeValue) {\n        if (!attributeValue) {\n          return \"\";\n        }\n        return attributeValue.replace(REG_EXP, \"\");\n      };\n    })(),\n    \n    numbers: (function() {\n      var REG_EXP = /\\D/g;\n      return function(attributeValue) {\n        attributeValue = (attributeValue || \"\").replace(REG_EXP, \"\");\n        return attributeValue || null;\n      };\n    })()\n  };\n  \n  // ------------ class converter (converts an html attribute to a class name) ------------ \\\\\n  var addClassMethods = {\n    align_img: (function() {\n      var mapping = {\n        left:   \"wysiwyg-float-left\",\n        right:  \"wysiwyg-float-right\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    align_text: (function() {\n      var mapping = {\n        left:     \"wysiwyg-text-align-left\",\n        right:    \"wysiwyg-text-align-right\",\n        center:   \"wysiwyg-text-align-center\",\n        justify:  \"wysiwyg-text-align-justify\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    clear_br: (function() {\n      var mapping = {\n        left:   \"wysiwyg-clear-left\",\n        right:  \"wysiwyg-clear-right\",\n        both:   \"wysiwyg-clear-both\",\n        all:    \"wysiwyg-clear-both\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    size_font: (function() {\n      var mapping = {\n        \"1\": \"wysiwyg-font-size-xx-small\",\n        \"2\": \"wysiwyg-font-size-small\",\n        \"3\": \"wysiwyg-font-size-medium\",\n        \"4\": \"wysiwyg-font-size-large\",\n        \"5\": \"wysiwyg-font-size-x-large\",\n        \"6\": \"wysiwyg-font-size-xx-large\",\n        \"7\": \"wysiwyg-font-size-xx-large\",\n        \"-\": \"wysiwyg-font-size-smaller\",\n        \"+\": \"wysiwyg-font-size-larger\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).charAt(0)];\n      };\n    })()\n  };\n  \n  return parse;\n})();/**\n * Checks for empty text node childs and removes them\n *\n * @param {Element} node The element in which to cleanup\n * @example\n *    wysihtml5.dom.removeEmptyTextNodes(element);\n */\nwysihtml5.dom.removeEmptyTextNodes = function(node) {\n  var childNode,\n      childNodes        = wysihtml5.lang.array(node.childNodes).get(),\n      childNodesLength  = childNodes.length,\n      i                 = 0;\n  for (; i<childNodesLength; i++) {\n    childNode = childNodes[i];\n    if (childNode.nodeType === wysihtml5.TEXT_NODE && childNode.data === \"\") {\n      childNode.parentNode.removeChild(childNode);\n    }\n  }\n};\n/**\n * Renames an element (eg. a <div> to a <p>) and keeps its childs\n *\n * @param {Element} element The list element which should be renamed\n * @param {Element} newNodeName The desired tag name\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <ul id=\"list\">\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n *\n *    <script>\n *      wysihtml5.dom.renameElement(document.getElementById(\"list\"), \"ol\");\n *    </script>\n *\n *    <!-- Will result in: -->\n *    <ol>\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ol>\n */\nwysihtml5.dom.renameElement = function(element, newNodeName) {\n  var newElement = element.ownerDocument.createElement(newNodeName),\n      firstChild;\n  while (firstChild = element.firstChild) {\n    newElement.appendChild(firstChild);\n  }\n  wysihtml5.dom.copyAttributes([\"align\", \"className\"]).from(element).to(newElement);\n  element.parentNode.replaceChild(newElement, element);\n  return newElement;\n};/**\n * Takes an element, removes it and replaces it with it's childs\n * \n * @param {Object} node The node which to replace with it's child nodes\n * @example\n *    <div id=\"foo\">\n *      <span>hello</span>\n *    </div>\n *    <script>\n *      // Remove #foo and replace with it's children\n *      wysihtml5.dom.replaceWithChildNodes(document.getElementById(\"foo\"));\n *    </script>\n */\nwysihtml5.dom.replaceWithChildNodes = function(node) {\n  if (!node.parentNode) {\n    return;\n  }\n  \n  if (!node.firstChild) {\n    node.parentNode.removeChild(node);\n    return;\n  }\n  \n  var fragment = node.ownerDocument.createDocumentFragment();\n  while (node.firstChild) {\n    fragment.appendChild(node.firstChild);\n  }\n  node.parentNode.replaceChild(fragment, node);\n  node = fragment = null;\n};\n/**\n * Unwraps an unordered/ordered list\n *\n * @param {Element} element The list element which should be unwrapped\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <ul id=\"list\">\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n *\n *    <script>\n *      wysihtml5.dom.resolveList(document.getElementById(\"list\"));\n *    </script>\n *\n *    <!-- Will result in: -->\n *    eminem<br>\n *    dr. dre<br>\n *    50 Cent<br>\n */\n(function(dom) {\n  function _isBlockElement(node) {\n    return dom.getStyle(\"display\").from(node) === \"block\";\n  }\n  \n  function _isLineBreak(node) {\n    return node.nodeName === \"BR\";\n  }\n  \n  function _appendLineBreak(element) {\n    var lineBreak = element.ownerDocument.createElement(\"br\");\n    element.appendChild(lineBreak);\n  }\n  \n  function resolveList(list) {\n    if (list.nodeName !== \"MENU\" && list.nodeName !== \"UL\" && list.nodeName !== \"OL\") {\n      return;\n    }\n    \n    var doc             = list.ownerDocument,\n        fragment        = doc.createDocumentFragment(),\n        previousSibling = list.previousElementSibling || list.previousSibling,\n        firstChild,\n        lastChild,\n        isLastChild,\n        shouldAppendLineBreak,\n        listItem;\n    \n    if (previousSibling && !_isBlockElement(previousSibling)) {\n      _appendLineBreak(fragment);\n    }\n    \n    while (listItem = list.firstChild) {\n      lastChild = listItem.lastChild;\n      while (firstChild = listItem.firstChild) {\n        isLastChild           = firstChild === lastChild;\n        // This needs to be done before appending it to the fragment, as it otherwise will loose style information\n        shouldAppendLineBreak = isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);\n        fragment.appendChild(firstChild);\n        if (shouldAppendLineBreak) {\n          _appendLineBreak(fragment);\n        }\n      }\n      \n      listItem.parentNode.removeChild(listItem);\n    }\n    list.parentNode.replaceChild(fragment, list);\n  }\n  \n  dom.resolveList = resolveList;\n})(wysihtml5.dom);/**\n * Sandbox for executing javascript, parsing css styles and doing dom operations in a secure way\n *\n * Browser Compatibility:\n *  - Secure in MSIE 6+, but only when the user hasn't made changes to his security level \"restricted\"\n *  - Partially secure in other browsers (Firefox, Opera, Safari, Chrome, ...)\n *\n * Please note that this class can't benefit from the HTML5 sandbox attribute for the following reasons:\n *    - sandboxing doesn't work correctly with inlined content (src=\"javascript:'<html>...</html>'\")\n *    - sandboxing of physical documents causes that the dom isn't accessible anymore from the outside (iframe.contentWindow, ...)\n *    - setting the \"allow-same-origin\" flag would fix that, but then still javascript and dom events refuse to fire\n *    - therefore the \"allow-scripts\" flag is needed, which then would deactivate any security, as the js executed inside the iframe\n *      can do anything as if the sandbox attribute wasn't set\n *\n * @param {Function} [readyCallback] Method that gets invoked when the sandbox is ready\n * @param {Object} [config] Optional parameters\n *\n * @example\n *    new wysihtml5.dom.Sandbox(function(sandbox) {\n *      sandbox.getWindow().document.body.innerHTML = '<img src=foo.gif onerror=\"alert(document.cookie)\">';\n *    });\n */\n(function(wysihtml5) {\n  var /**\n       * Default configuration\n       */\n      doc                 = document,\n      /**\n       * Properties to unset/protect on the window object\n       */\n      windowProperties    = [\n        \"parent\", \"top\", \"opener\", \"frameElement\", \"frames\",\n        \"localStorage\", \"globalStorage\", \"sessionStorage\", \"indexedDB\"\n      ],\n      /**\n       * Properties on the window object which are set to an empty function\n       */\n      windowProperties2   = [\n        \"open\", \"close\", \"openDialog\", \"showModalDialog\",\n        \"alert\", \"confirm\", \"prompt\",\n        \"openDatabase\", \"postMessage\",\n        \"XMLHttpRequest\", \"XDomainRequest\"\n      ],\n      /**\n       * Properties to unset/protect on the document object\n       */\n      documentProperties  = [\n        \"referrer\",\n        \"write\", \"open\", \"close\"\n      ];\n  \n  wysihtml5.dom.Sandbox = Base.extend(\n    /** @scope wysihtml5.dom.Sandbox.prototype */ {\n\n    constructor: function(readyCallback, config) {\n      this.callback = readyCallback || wysihtml5.EMPTY_FUNCTION;\n      this.config   = wysihtml5.lang.object({}).merge(config).get();\n      this.iframe   = this._createIframe();\n    },\n    \n    insertInto: function(element) {\n      if (typeof(element) === \"string\") {\n        element = doc.getElementById(element);\n      }\n      \n      element.appendChild(this.iframe);\n    },\n\n    getIframe: function() {\n      return this.iframe;\n    },\n\n    getWindow: function() {\n      this._readyError();\n    },\n\n    getDocument: function() {\n      this._readyError();\n    },\n\n    destroy: function() {\n      var iframe = this.getIframe();\n      iframe.parentNode.removeChild(iframe);\n    },\n\n    _readyError: function() {\n      throw new Error(\"wysihtml5.Sandbox: Sandbox iframe isn't loaded yet\");\n    },\n\n    /**\n     * Creates the sandbox iframe\n     *\n     * Some important notes:\n     *  - We can't use HTML5 sandbox for now:\n     *    setting it causes that the iframe's dom can't be accessed from the outside\n     *    Therefore we need to set the \"allow-same-origin\" flag which enables accessing the iframe's dom\n     *    But then there's another problem, DOM events (focus, blur, change, keypress, ...) aren't fired.\n     *    In order to make this happen we need to set the \"allow-scripts\" flag.\n     *    A combination of allow-scripts and allow-same-origin is almost the same as setting no sandbox attribute at all.\n     *  - Chrome & Safari, doesn't seem to support sandboxing correctly when the iframe's html is inlined (no physical document)\n     *  - IE needs to have the security=\"restricted\" attribute set before the iframe is \n     *    inserted into the dom tree\n     *  - Believe it or not but in IE \"security\" in document.createElement(\"iframe\") is false, even\n     *    though it supports it\n     *  - When an iframe has security=\"restricted\", in IE eval() & execScript() don't work anymore\n     *  - IE doesn't fire the onload event when the content is inlined in the src attribute, therefore we rely\n     *    on the onreadystatechange event\n     */\n    _createIframe: function() {\n      var that   = this,\n          iframe = doc.createElement(\"iframe\");\n      iframe.className = \"wysihtml5-sandbox\";\n      wysihtml5.dom.setAttributes({\n        \"security\":           \"restricted\",\n        \"allowtransparency\":  \"true\",\n        \"frameborder\":        0,\n        \"width\":              0,\n        \"height\":             0,\n        \"marginwidth\":        0,\n        \"marginheight\":       0\n      }).on(iframe);\n\n      // Setting the src like this prevents ssl warnings in IE6\n      if (wysihtml5.browser.throwsMixedContentWarningWhenIframeSrcIsEmpty()) {\n        iframe.src = \"javascript:'<html></html>'\";\n      }\n\n      iframe.onload = function() {\n        iframe.onreadystatechange = iframe.onload = null;\n        that._onLoadIframe(iframe);\n      };\n\n      iframe.onreadystatechange = function() {\n        if (/loaded|complete/.test(iframe.readyState)) {\n          iframe.onreadystatechange = iframe.onload = null;\n          that._onLoadIframe(iframe);\n        }\n      };\n\n      return iframe;\n    },\n\n    /**\n     * Callback for when the iframe has finished loading\n     */\n    _onLoadIframe: function(iframe) {\n      // don't resume when the iframe got unloaded (eg. by removing it from the dom)\n      if (!wysihtml5.dom.contains(doc.documentElement, iframe)) {\n        return;\n      }\n\n      var that           = this,\n          iframeWindow   = iframe.contentWindow,\n          iframeDocument = iframe.contentWindow.document,\n          charset        = doc.characterSet || doc.charset || \"utf-8\",\n          sandboxHtml    = this._getHtml({\n            charset:      charset,\n            stylesheets:  this.config.stylesheets\n          });\n\n      // Create the basic dom tree including proper DOCTYPE and charset\n      iframeDocument.open(\"text/html\", \"replace\");\n      iframeDocument.write(sandboxHtml);\n      iframeDocument.close();\n\n      this.getWindow = function() { return iframe.contentWindow; };\n      this.getDocument = function() { return iframe.contentWindow.document; };\n\n      // Catch js errors and pass them to the parent's onerror event\n      // addEventListener(\"error\") doesn't work properly in some browsers\n      // TODO: apparently this doesn't work in IE9!\n      iframeWindow.onerror = function(errorMessage, fileName, lineNumber) {\n        throw new Error(\"wysihtml5.Sandbox: \" + errorMessage, fileName, lineNumber);\n      };\n\n      if (!wysihtml5.browser.supportsSandboxedIframes()) {\n        // Unset a bunch of sensitive variables\n        // Please note: This isn't hack safe!  \n        // It more or less just takes care of basic attacks and prevents accidental theft of sensitive information\n        // IE is secure though, which is the most important thing, since IE is the only browser, who\n        // takes over scripts & styles into contentEditable elements when copied from external websites\n        // or applications (Microsoft Word, ...)\n        var i, length;\n        for (i=0, length=windowProperties.length; i<length; i++) {\n          this._unset(iframeWindow, windowProperties[i]);\n        }\n        for (i=0, length=windowProperties2.length; i<length; i++) {\n          this._unset(iframeWindow, windowProperties2[i], wysihtml5.EMPTY_FUNCTION);\n        }\n        for (i=0, length=documentProperties.length; i<length; i++) {\n          this._unset(iframeDocument, documentProperties[i]);\n        }\n        // This doesn't work in Safari 5 \n        // See http://stackoverflow.com/questions/992461/is-it-possible-to-override-document-cookie-in-webkit\n        this._unset(iframeDocument, \"cookie\", \"\", true);\n      }\n\n      this.loaded = true;\n\n      // Trigger the callback\n      setTimeout(function() { that.callback(that); }, 0);\n    },\n\n    _getHtml: function(templateVars) {\n      var stylesheets = templateVars.stylesheets,\n          html        = \"\",\n          i           = 0,\n          length;\n      stylesheets = typeof(stylesheets) === \"string\" ? [stylesheets] : stylesheets;\n      if (stylesheets) {\n        length = stylesheets.length;\n        for (; i<length; i++) {\n          html += '<link rel=\"stylesheet\" href=\"' + stylesheets[i] + '\">';\n        }\n      }\n      templateVars.stylesheets = html;\n\n      return wysihtml5.lang.string(\n        '<!DOCTYPE html><html><head>'\n        + '<meta charset=\"#{charset}\">#{stylesheets}</head>'\n        + '<body></body></html>'\n      ).interpolate(templateVars);\n    },\n\n    /**\n     * Method to unset/override existing variables\n     * @example\n     *    // Make cookie unreadable and unwritable\n     *    this._unset(document, \"cookie\", \"\", true);\n     */\n    _unset: function(object, property, value, setter) {\n      try { object[property] = value; } catch(e) {}\n\n      try { object.__defineGetter__(property, function() { return value; }); } catch(e) {}\n      if (setter) {\n        try { object.__defineSetter__(property, function() {}); } catch(e) {}\n      }\n\n      if (!wysihtml5.browser.crashesWhenDefineProperty(property)) {\n        try {\n          var config = {\n            get: function() { return value; }\n          };\n          if (setter) {\n            config.set = function() {};\n          }\n          Object.defineProperty(object, property, config);\n        } catch(e) {}\n      }\n    }\n  });\n})(wysihtml5);\n(function() {\n  var mapping = {\n    \"className\": \"class\"\n  };\n  wysihtml5.dom.setAttributes = function(attributes) {\n    return {\n      on: function(element) {\n        for (var i in attributes) {\n          element.setAttribute(mapping[i] || i, attributes[i]);\n        }\n      }\n    }\n  };\n})();wysihtml5.dom.setStyles = function(styles) {\n  return {\n    on: function(element) {\n      var style = element.style;\n      if (typeof(styles) === \"string\") {\n        style.cssText += \";\" + styles;\n        return;\n      }\n      for (var i in styles) {\n        if (i === \"float\") {\n          style.cssFloat = styles[i];\n          style.styleFloat = styles[i];\n        } else {\n          style[i] = styles[i];\n        }\n      }\n    }\n  };\n};/**\n * Simulate HTML5 placeholder attribute\n *\n * Needed since\n *    - div[contentEditable] elements don't support it\n *    - older browsers (such as IE8 and Firefox 3.6) don't support it at all\n *\n * @param {Object} parent Instance of main wysihtml5.Editor class\n * @param {Element} view Instance of wysihtml5.views.* class\n * @param {String} placeholderText\n *\n * @example\n *    wysihtml.dom.simulatePlaceholder(this, composer, \"Foobar\");\n */\n(function(dom) {\n  dom.simulatePlaceholder = function(editor, view, placeholderText) {\n    var CLASS_NAME = \"placeholder\",\n        unset = function() {\n          if (view.hasPlaceholderSet()) {\n            view.clear();\n          }\n          dom.removeClass(view.element, CLASS_NAME);\n        },\n        set = function() {\n          if (view.isEmpty()) {\n            view.setValue(placeholderText);\n            dom.addClass(view.element, CLASS_NAME);\n          }\n        };\n\n    editor\n      .observe(\"set_placeholder\", set)\n      .observe(\"unset_placeholder\", unset)\n      .observe(\"focus:composer\", unset)\n      .observe(\"paste:composer\", unset)\n      .observe(\"blur:composer\", set);\n\n    set();\n  };\n})(wysihtml5.dom);\n(function(dom) {\n  var documentElement = document.documentElement;\n  if (\"textContent\" in documentElement) {\n    dom.setTextContent = function(element, text) {\n      element.textContent = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.textContent;\n    };\n  } else if (\"innerText\" in documentElement) {\n    dom.setTextContent = function(element, text) {\n      element.innerText = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.innerText;\n    };\n  } else {\n    dom.setTextContent = function(element, text) {\n      element.nodeValue = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.nodeValue;\n    };\n  }\n})(wysihtml5.dom);\n\n/**\n * Fix most common html formatting misbehaviors of browsers implementation when inserting\n * content via copy & paste contentEditable\n *\n * @author Christopher Blum\n */\nwysihtml5.quirks.cleanPastedHTML = (function() {\n  // TODO: We probably need more rules here\n  var defaultRules = {\n    // When pasting underlined links <a> into a contentEditable, IE thinks, it has to insert <u> to keep the styling\n    \"a u\": wysihtml5.dom.replaceWithChildNodes\n  };\n  \n  function cleanPastedHTML(elementOrHtml, rules, context) {\n    rules   = rules || defaultRules;\n    context = context || elementOrHtml.ownerDocument || document;\n    \n    var element,\n        isString = typeof(elementOrHtml) === \"string\",\n        method,\n        matches,\n        matchesLength,\n        i,\n        j = 0;\n    if (isString) {\n      element = wysihtml5.dom.getAsDom(elementOrHtml, context);\n    } else {\n      element = elementOrHtml;\n    }\n    \n    for (i in rules) {\n      matches       = element.querySelectorAll(i);\n      method        = rules[i];\n      matchesLength = matches.length;\n      for (; j<matchesLength; j++) {\n        method(matches[j]);\n      }\n    }\n    \n    matches = elementOrHtml = rules = null;\n    \n    return isString ? element.innerHTML : element;\n  }\n  \n  return cleanPastedHTML;\n})();/**\n * IE and Opera leave an empty paragraph in the contentEditable element after clearing it\n *\n * @param {Object} contentEditableElement The contentEditable element to observe for clearing events\n * @exaple\n *    wysihtml5.quirks.ensureProperClearing(myContentEditableElement);\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  wysihtml5.quirks.ensureProperClearing = (function() {\n    var clearIfNecessary = function(event) {\n      var element = this;\n      setTimeout(function() {\n        var innerHTML = element.innerHTML.toLowerCase();\n        if (innerHTML == \"<p>&nbsp;</p>\" ||\n            innerHTML == \"<p>&nbsp;</p><p>&nbsp;</p>\") {\n          element.innerHTML = \"\";\n        }\n      }, 0);\n    };\n\n    return function(composer) {\n      dom.observe(composer.element, [\"cut\", \"keydown\"], clearIfNecessary);\n    };\n  })();\n\n\n\n  /**\n   * In Opera when the caret is in the first and only item of a list (<ul><li>|</li></ul>) and the list is the first child of the contentEditable element, it's impossible to delete the list by hitting backspace\n   *\n   * @param {Object} contentEditableElement The contentEditable element to observe for clearing events\n   * @exaple\n   *    wysihtml5.quirks.ensureProperClearing(myContentEditableElement);\n   */\n  wysihtml5.quirks.ensureProperClearingOfLists = (function() {\n    var ELEMENTS_THAT_CONTAIN_LI = [\"OL\", \"UL\", \"MENU\"];\n\n    var clearIfNecessary = function(element, contentEditableElement) {\n      if (!contentEditableElement.firstChild || !wysihtml5.lang.array(ELEMENTS_THAT_CONTAIN_LI).contains(contentEditableElement.firstChild.nodeName)) {\n        return;\n      }\n\n      var list = dom.getParentElement(element, { nodeName: ELEMENTS_THAT_CONTAIN_LI });\n      if (!list) {\n        return;\n      }\n\n      var listIsFirstChildOfContentEditable = list == contentEditableElement.firstChild;\n      if (!listIsFirstChildOfContentEditable) {\n        return;\n      }\n\n      var hasOnlyOneListItem = list.childNodes.length <= 1;\n      if (!hasOnlyOneListItem) {\n        return;\n      }\n\n      var onlyListItemIsEmpty = list.firstChild ? list.firstChild.innerHTML === \"\" : true;\n      if (!onlyListItemIsEmpty) {\n        return;\n      }\n\n      list.parentNode.removeChild(list);\n    };\n\n    return function(composer) {\n      dom.observe(composer.element, \"keydown\", function(event) {\n        if (event.keyCode !== wysihtml5.BACKSPACE_KEY) {\n          return;\n        }\n\n        var element = composer.selection.getSelectedNode();\n        clearIfNecessary(element, composer.element);\n      });\n    };\n  })();\n\n})(wysihtml5);\n// See https://bugzilla.mozilla.org/show_bug.cgi?id=664398\n//\n// In Firefox this:\n//      var d = document.createElement(\"div\");\n//      d.innerHTML ='<a href=\"~\"></a>';\n//      d.innerHTML;\n// will result in:\n//      <a href=\"%7E\"></a>\n// which is wrong\n(function(wysihtml5) {\n  var TILDE_ESCAPED = \"%7E\";\n  wysihtml5.quirks.getCorrectInnerHTML = function(element) {\n    var innerHTML = element.innerHTML;\n    if (innerHTML.indexOf(TILDE_ESCAPED) === -1) {\n      return innerHTML;\n    }\n    \n    var elementsWithTilde = element.querySelectorAll(\"[href*='~'], [src*='~']\"),\n        url,\n        urlToSearch,\n        length,\n        i;\n    for (i=0, length=elementsWithTilde.length; i<length; i++) {\n      url         = elementsWithTilde[i].href || elementsWithTilde[i].src;\n      urlToSearch = wysihtml5.lang.string(url).replace(\"~\").by(TILDE_ESCAPED);\n      innerHTML   = wysihtml5.lang.string(innerHTML).replace(urlToSearch).by(url);\n    }\n    return innerHTML;\n  };\n})(wysihtml5);/**\n * Some browsers don't insert line breaks when hitting return in a contentEditable element\n *    - Opera & IE insert new <p> on return\n *    - Chrome & Safari insert new <div> on return\n *    - Firefox inserts <br> on return (yippie!)\n *\n * @param {Element} element\n *\n * @example\n *    wysihtml5.quirks.insertLineBreakOnReturn(element);\n */\n(function(wysihtml5) {\n  var dom                                           = wysihtml5.dom,\n      USE_NATIVE_LINE_BREAK_WHEN_CARET_INSIDE_TAGS  = [\"LI\", \"P\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"],\n      LIST_TAGS                                     = [\"UL\", \"OL\", \"MENU\"];\n  \n  wysihtml5.quirks.insertLineBreakOnReturn = function(composer) {\n    function unwrap(selectedNode) {\n      var parentElement = dom.getParentElement(selectedNode, { nodeName: [\"P\", \"DIV\"] }, 2);\n      if (!parentElement) {\n        return;\n      }\n\n      var invisibleSpace = document.createTextNode(wysihtml5.INVISIBLE_SPACE);\n      dom.insert(invisibleSpace).before(parentElement);\n      dom.replaceWithChildNodes(parentElement);\n      composer.selection.selectNode(invisibleSpace);\n    }\n\n    function keyDown(event) {\n      var keyCode = event.keyCode;\n      if (event.shiftKey || (keyCode !== wysihtml5.ENTER_KEY && keyCode !== wysihtml5.BACKSPACE_KEY)) {\n        return;\n      }\n\n      var element         = event.target,\n          selectedNode    = composer.selection.getSelectedNode(),\n          blockElement    = dom.getParentElement(selectedNode, { nodeName: USE_NATIVE_LINE_BREAK_WHEN_CARET_INSIDE_TAGS }, 4);\n      if (blockElement) {\n        // Some browsers create <p> elements after leaving a list\n        // check after keydown of backspace and return whether a <p> got inserted and unwrap it\n        if (blockElement.nodeName === \"LI\" && (keyCode === wysihtml5.ENTER_KEY || keyCode === wysihtml5.BACKSPACE_KEY)) {\n          setTimeout(function() {\n            var selectedNode = composer.selection.getSelectedNode(),\n                list,\n                div;\n            if (!selectedNode) {\n              return;\n            }\n\n            list = dom.getParentElement(selectedNode, {\n              nodeName: LIST_TAGS\n            }, 2);\n\n            if (list) {\n              return;\n            }\n\n            unwrap(selectedNode);\n          }, 0);\n        } else if (blockElement.nodeName.match(/H[1-6]/) && keyCode === wysihtml5.ENTER_KEY) {\n          setTimeout(function() {\n            unwrap(composer.selection.getSelectedNode());\n          }, 0);\n        } \n        return;\n      }\n\n      if (keyCode === wysihtml5.ENTER_KEY && !wysihtml5.browser.insertsLineBreaksOnReturn()) {\n        composer.commands.exec(\"insertLineBreak\");\n        event.preventDefault();\n      }\n    }\n    \n    // keypress doesn't fire when you hit backspace\n    dom.observe(composer.element.ownerDocument, \"keydown\", keyDown);\n  };\n})(wysihtml5);/**\n * Force rerendering of a given element\n * Needed to fix display misbehaviors of IE\n *\n * @param {Element} element The element object which needs to be rerendered\n * @example\n *    wysihtml5.quirks.redraw(document.body);\n */\n(function(wysihtml5) {\n  var CLASS_NAME = \"wysihtml5-quirks-redraw\";\n  \n  wysihtml5.quirks.redraw = function(element) {\n    wysihtml5.dom.addClass(element, CLASS_NAME);\n    wysihtml5.dom.removeClass(element, CLASS_NAME);\n    \n    // Following hack is needed for firefox to make sure that image resize handles are properly removed\n    try {\n      var doc = element.ownerDocument;\n      doc.execCommand(\"italic\", false, null);\n      doc.execCommand(\"italic\", false, null);\n    } catch(e) {}\n  };\n})(wysihtml5);/**\n * Selection API\n *\n * @example\n *    var selection = new wysihtml5.Selection(editor);\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  function _getCumulativeOffsetTop(element) {\n    var top = 0;\n    if (element.parentNode) {\n      do {\n        top += element.offsetTop || 0;\n        element = element.offsetParent;\n      } while (element);\n    }\n    return top;\n  }\n  \n  wysihtml5.Selection = Base.extend(\n    /** @scope wysihtml5.Selection.prototype */ {\n    constructor: function(editor) {\n      // Make sure that our external range library is initialized\n      window.rangy.init();\n      \n      this.editor   = editor;\n      this.composer = editor.composer;\n      this.doc      = this.composer.doc;\n    },\n    \n    /**\n     * Get the current selection as a bookmark to be able to later restore it\n     *\n     * @return {Object} An object that represents the current selection\n     */\n    getBookmark: function() {\n      var range = this.getRange();\n      return range && range.cloneRange();\n    },\n\n    /**\n     * Restore a selection retrieved via wysihtml5.Selection.prototype.getBookmark\n     *\n     * @param {Object} bookmark An object that represents the current selection\n     */\n    setBookmark: function(bookmark) {\n      if (!bookmark) {\n        return;\n      }\n\n      this.setSelection(bookmark);\n    },\n\n    /**\n     * Set the caret in front of the given node\n     *\n     * @param {Object} node The element or text node where to position the caret in front of\n     * @example\n     *    selection.setBefore(myElement);\n     */\n    setBefore: function(node) {\n      var range = rangy.createRange(this.doc);\n      range.setStartBefore(node);\n      range.setEndBefore(node);\n      return this.setSelection(range);\n    },\n\n    /**\n     * Set the caret after the given node\n     *\n     * @param {Object} node The element or text node where to position the caret in front of\n     * @example\n     *    selection.setBefore(myElement);\n     */\n    setAfter: function(node) {\n      var range = rangy.createRange(this.doc);\n      range.setStartAfter(node);\n      range.setEndAfter(node);\n      return this.setSelection(range);\n    },\n\n    /**\n     * Ability to select/mark nodes\n     *\n     * @param {Element} node The node/element to select\n     * @example\n     *    selection.selectNode(document.getElementById(\"my-image\"));\n     */\n    selectNode: function(node) {\n      var range           = rangy.createRange(this.doc),\n          isElement       = node.nodeType === wysihtml5.ELEMENT_NODE,\n          canHaveHTML     = \"canHaveHTML\" in node ? node.canHaveHTML : (node.nodeName !== \"IMG\"),\n          content         = isElement ? node.innerHTML : node.data,\n          isEmpty         = (content === \"\" || content === wysihtml5.INVISIBLE_SPACE),\n          displayStyle    = dom.getStyle(\"display\").from(node),\n          isBlockElement  = (displayStyle === \"block\" || displayStyle === \"list-item\");\n\n      if (isEmpty && isElement && canHaveHTML) {\n        // Make sure that caret is visible in node by inserting a zero width no breaking space\n        try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {}\n      }\n\n      if (canHaveHTML) {\n        range.selectNodeContents(node);\n      } else {\n        range.selectNode(node);\n      }\n\n      if (canHaveHTML && isEmpty && isElement) {\n        range.collapse(isBlockElement);\n      } else if (canHaveHTML && isEmpty) {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n\n      this.setSelection(range);\n    },\n\n    /**\n     * Get the node which contains the selection\n     *\n     * @param {Boolean} [controlRange] (only IE) Whether it should return the selected ControlRange element when the selection type is a \"ControlRange\"\n     * @return {Object} The node that contains the caret\n     * @example\n     *    var nodeThatContainsCaret = selection.getSelectedNode();\n     */\n    getSelectedNode: function(controlRange) {\n      var selection,\n          range;\n\n      if (controlRange && this.doc.selection && this.doc.selection.type === \"Control\") {\n        range = this.doc.selection.createRange();\n        if (range && range.length) {\n          return range.item(0);\n        }\n      }\n\n      selection = this.getSelection(this.doc);\n      if (selection.focusNode === selection.anchorNode) {\n        return selection.focusNode;\n      } else {\n        range = this.getRange(this.doc);\n        return range ? range.commonAncestorContainer : this.doc.body;\n      }\n    },\n\n    executeAndRestore: function(method, restoreScrollPosition) {\n      var body                  = this.doc.body,\n          oldScrollTop          = restoreScrollPosition && body.scrollTop,\n          oldScrollLeft         = restoreScrollPosition && body.scrollLeft,\n          className             = \"_wysihtml5-temp-placeholder\",\n          placeholderHTML       = '<span class=\"' + className + '\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n          range                 = this.getRange(this.doc),\n          newRange;\n      \n      // Nothing selected, execute and say goodbye\n      if (!range) {\n        method(body, body);\n        return;\n      }\n      \n      var node = range.createContextualFragment(placeholderHTML);\n      range.insertNode(node);\n      \n      // Make sure that a potential error doesn't cause our placeholder element to be left as a placeholder\n      try {\n        method(range.startContainer, range.endContainer);\n      } catch(e3) {\n        setTimeout(function() { throw e3; }, 0);\n      }\n      \n      caretPlaceholder = this.doc.querySelector(\".\" + className);\n      if (caretPlaceholder) {\n        newRange = rangy.createRange(this.doc);\n        newRange.selectNode(caretPlaceholder);\n        newRange.deleteContents();\n        this.setSelection(newRange);\n      } else {\n        // fallback for when all hell breaks loose\n        body.focus();\n      }\n\n      if (restoreScrollPosition) {\n        body.scrollTop  = oldScrollTop;\n        body.scrollLeft = oldScrollLeft;\n      }\n\n      // Remove it again, just to make sure that the placeholder is definitely out of the dom tree\n      try {\n        caretPlaceholder.parentNode.removeChild(caretPlaceholder);\n      } catch(e4) {}\n    },\n\n    /**\n     * Different approach of preserving the selection (doesn't modify the dom)\n     * Takes all text nodes in the selection and saves the selection position in the first and last one\n     */\n    executeAndRestoreSimple: function(method) {\n      var range = this.getRange(),\n          body  = this.doc.body,\n          newRange,\n          firstNode,\n          lastNode,\n          textNodes,\n          rangeBackup;\n\n      // Nothing selected, execute and say goodbye\n      if (!range) {\n        method(body, body);\n        return;\n      }\n\n      textNodes = range.getNodes([3]);\n      firstNode = textNodes[0] || range.startContainer;\n      lastNode  = textNodes[textNodes.length - 1] || range.endContainer;\n\n      rangeBackup = {\n        collapsed:      range.collapsed,\n        startContainer: firstNode,\n        startOffset:    firstNode === range.startContainer ? range.startOffset : 0,\n        endContainer:   lastNode,\n        endOffset:      lastNode === range.endContainer ? range.endOffset : lastNode.length\n      };\n\n      try {\n        method(range.startContainer, range.endContainer);\n      } catch(e) {\n        setTimeout(function() { throw e; }, 0);\n      }\n\n      newRange = rangy.createRange(this.doc);\n      try { newRange.setStart(rangeBackup.startContainer, rangeBackup.startOffset); } catch(e1) {}\n      try { newRange.setEnd(rangeBackup.endContainer, rangeBackup.endOffset); } catch(e2) {}\n      try { this.setSelection(newRange); } catch(e3) {}\n    },\n\n    /**\n     * Insert html at the caret position and move the cursor after the inserted html\n     *\n     * @param {String} html HTML string to insert\n     * @example\n     *    selection.insertHTML(\"<p>foobar</p>\");\n     */\n    insertHTML: function(html) {\n      var range     = rangy.createRange(this.doc),\n          node      = range.createContextualFragment(html),\n          lastChild = node.lastChild;\n      this.insertNode(node);\n      if (lastChild) {\n        this.setAfter(lastChild);\n      }\n    },\n\n    /**\n     * Insert a node at the caret position and move the cursor behind it\n     *\n     * @param {Object} node HTML string to insert\n     * @example\n     *    selection.insertNode(document.createTextNode(\"foobar\"));\n     */\n    insertNode: function(node) {\n      var range = this.getRange();\n      if (range) {\n        range.insertNode(node);\n      }\n    },\n\n    /**\n     * Wraps current selection with the given node\n     *\n     * @param {Object} node The node to surround the selected elements with\n     */\n    surround: function(node) {\n      var range = this.getRange();\n      if (!range) {\n        return;\n      }\n\n      try {\n        // This only works when the range boundaries are not overlapping other elements\n        range.surroundContents(node);\n        this.selectNode(node);\n      } catch(e) {\n        // fallback\n        node.appendChild(range.extractContents());\n        range.insertNode(node);\n      }\n    },\n\n    /**\n     * Scroll the current caret position into the view\n     * FIXME: This is a bit hacky, there might be a smarter way of doing this\n     *\n     * @example\n     *    selection.scrollIntoView();\n     */\n    scrollIntoView: function() {\n      var doc           = this.doc,\n          hasScrollBars = doc.documentElement.scrollHeight > doc.documentElement.offsetHeight,\n          tempElement   = doc._wysihtml5ScrollIntoViewElement = doc._wysihtml5ScrollIntoViewElement || (function() {\n            var element = doc.createElement(\"span\");\n            // The element needs content in order to be able to calculate it's position properly\n            element.innerHTML = wysihtml5.INVISIBLE_SPACE;\n            return element;\n          })(),\n          offsetTop;\n\n      if (hasScrollBars) {\n        this.insertNode(tempElement);\n        offsetTop = _getCumulativeOffsetTop(tempElement);\n        tempElement.parentNode.removeChild(tempElement);\n        if (offsetTop > doc.body.scrollTop) {\n          doc.body.scrollTop = offsetTop;\n        }\n      }\n    },\n\n    /**\n     * Select line where the caret is in\n     */\n    selectLine: function() {\n      if (wysihtml5.browser.supportsSelectionModify()) {\n        this._selectLine_W3C();\n      } else if (this.doc.selection) {\n        this._selectLine_MSIE();\n      }\n    },\n\n    /**\n     * See https://developer.mozilla.org/en/DOM/Selection/modify\n     */\n    _selectLine_W3C: function() {\n      var win       = this.doc.defaultView,\n          selection = win.getSelection();\n      selection.modify(\"extend\", \"left\", \"lineboundary\");\n      selection.modify(\"extend\", \"right\", \"lineboundary\");\n    },\n\n    _selectLine_MSIE: function() {\n      var range       = this.doc.selection.createRange(),\n          rangeTop    = range.boundingTop,\n          rangeHeight = range.boundingHeight,\n          scrollWidth = this.doc.body.scrollWidth,\n          rangeBottom,\n          rangeEnd,\n          measureNode,\n          i,\n          j;\n\n      if (!range.moveToPoint) {\n        return;\n      }\n\n      if (rangeTop === 0) {\n        // Don't know why, but when the selection ends at the end of a line\n        // range.boundingTop is 0\n        measureNode = this.doc.createElement(\"span\");\n        this.insertNode(measureNode);\n        rangeTop = measureNode.offsetTop;\n        measureNode.parentNode.removeChild(measureNode);\n      }\n\n      rangeTop += 1;\n\n      for (i=-10; i<scrollWidth; i+=2) {\n        try {\n          range.moveToPoint(i, rangeTop);\n          break;\n        } catch(e1) {}\n      }\n\n      // Investigate the following in order to handle multi line selections\n      // rangeBottom = rangeTop + (rangeHeight ? (rangeHeight - 1) : 0);\n      rangeBottom = rangeTop;\n      rangeEnd = this.doc.selection.createRange();\n      for (j=scrollWidth; j>=0; j--) {\n        try {\n          rangeEnd.moveToPoint(j, rangeBottom);\n          break;\n        } catch(e2) {}\n      }\n\n      range.setEndPoint(\"EndToEnd\", rangeEnd);\n      range.select();\n    },\n\n    getText: function() {\n      var selection = this.getSelection();\n      return selection ? selection.toString() : \"\";\n    },\n\n    getNodes: function(nodeType, filter) {\n      var range = this.getRange();\n      if (range) {\n        return range.getNodes([nodeType], filter);\n      } else {\n        return [];\n      }\n    },\n    \n    getRange: function() {\n      var selection = this.getSelection();\n      return selection && selection.rangeCount && selection.getRangeAt(0);\n    },\n\n    getSelection: function() {\n      return rangy.getSelection(this.doc.defaultView || this.doc.parentWindow);\n    },\n\n    setSelection: function(range) {\n      var win       = this.doc.defaultView || this.doc.parentWindow,\n          selection = rangy.getSelection(win);\n      return selection.setSingleRange(range);\n    }\n  });\n  \n})(wysihtml5);\n/**\n * Inspired by the rangy CSS Applier module written by Tim Down and licensed under the MIT license.\n * http://code.google.com/p/rangy/\n *\n * changed in order to be able ...\n *    - to use custom tags\n *    - to detect and replace similar css classes via reg exp\n */\n(function(wysihtml5, rangy) {\n  var defaultTagName = \"span\";\n  \n  var REG_EXP_WHITE_SPACE = /\\s+/g;\n  \n  function hasClass(el, cssClass, regExp) {\n    if (!el.className) {\n      return false;\n    }\n    \n    var matchingClassNames = el.className.match(regExp) || [];\n    return matchingClassNames[matchingClassNames.length - 1] === cssClass;\n  }\n\n  function addClass(el, cssClass, regExp) {\n    if (el.className) {\n      removeClass(el, regExp);\n      el.className += \" \" + cssClass;\n    } else {\n      el.className = cssClass;\n    }\n  }\n\n  function removeClass(el, regExp) {\n    if (el.className) {\n      el.className = el.className.replace(regExp, \"\");\n    }\n  }\n  \n  function hasSameClasses(el1, el2) {\n    return el1.className.replace(REG_EXP_WHITE_SPACE, \" \") == el2.className.replace(REG_EXP_WHITE_SPACE, \" \");\n  }\n\n  function replaceWithOwnChildren(el) {\n    var parent = el.parentNode;\n    while (el.firstChild) {\n      parent.insertBefore(el.firstChild, el);\n    }\n    parent.removeChild(el);\n  }\n\n  function elementsHaveSameNonClassAttributes(el1, el2) {\n    if (el1.attributes.length != el2.attributes.length) {\n      return false;\n    }\n    for (var i = 0, len = el1.attributes.length, attr1, attr2, name; i < len; ++i) {\n      attr1 = el1.attributes[i];\n      name = attr1.name;\n      if (name != \"class\") {\n        attr2 = el2.attributes.getNamedItem(name);\n        if (attr1.specified != attr2.specified) {\n          return false;\n        }\n        if (attr1.specified && attr1.nodeValue !== attr2.nodeValue) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function isSplitPoint(node, offset) {\n    if (rangy.dom.isCharacterDataNode(node)) {\n      if (offset == 0) {\n        return !!node.previousSibling;\n      } else if (offset == node.length) {\n        return !!node.nextSibling;\n      } else {\n        return true;\n      }\n    }\n\n    return offset > 0 && offset < node.childNodes.length;\n  }\n\n  function splitNodeAt(node, descendantNode, descendantOffset) {\n    var newNode;\n    if (rangy.dom.isCharacterDataNode(descendantNode)) {\n      if (descendantOffset == 0) {\n        descendantOffset = rangy.dom.getNodeIndex(descendantNode);\n        descendantNode = descendantNode.parentNode;\n      } else if (descendantOffset == descendantNode.length) {\n        descendantOffset = rangy.dom.getNodeIndex(descendantNode) + 1;\n        descendantNode = descendantNode.parentNode;\n      } else {\n        newNode = rangy.dom.splitDataNode(descendantNode, descendantOffset);\n      }\n    }\n    if (!newNode) {\n      newNode = descendantNode.cloneNode(false);\n      if (newNode.id) {\n        newNode.removeAttribute(\"id\");\n      }\n      var child;\n      while ((child = descendantNode.childNodes[descendantOffset])) {\n        newNode.appendChild(child);\n      }\n      rangy.dom.insertAfter(newNode, descendantNode);\n    }\n    return (descendantNode == node) ? newNode : splitNodeAt(node, newNode.parentNode, rangy.dom.getNodeIndex(newNode));\n  }\n  \n  function Merge(firstNode) {\n    this.isElementMerge = (firstNode.nodeType == wysihtml5.ELEMENT_NODE);\n    this.firstTextNode = this.isElementMerge ? firstNode.lastChild : firstNode;\n    this.textNodes = [this.firstTextNode];\n  }\n\n  Merge.prototype = {\n    doMerge: function() {\n      var textBits = [], textNode, parent, text;\n      for (var i = 0, len = this.textNodes.length; i < len; ++i) {\n        textNode = this.textNodes[i];\n        parent = textNode.parentNode;\n        textBits[i] = textNode.data;\n        if (i) {\n          parent.removeChild(textNode);\n          if (!parent.hasChildNodes()) {\n            parent.parentNode.removeChild(parent);\n          }\n        }\n      }\n      this.firstTextNode.data = text = textBits.join(\"\");\n      return text;\n    },\n\n    getLength: function() {\n      var i = this.textNodes.length, len = 0;\n      while (i--) {\n        len += this.textNodes[i].length;\n      }\n      return len;\n    },\n\n    toString: function() {\n      var textBits = [];\n      for (var i = 0, len = this.textNodes.length; i < len; ++i) {\n        textBits[i] = \"'\" + this.textNodes[i].data + \"'\";\n      }\n      return \"[Merge(\" + textBits.join(\",\") + \")]\";\n    }\n  };\n\n  function HTMLApplier(tagNames, cssClass, similarClassRegExp, normalize) {\n    this.tagNames = tagNames || [defaultTagName];\n    this.cssClass = cssClass || \"\";\n    this.similarClassRegExp = similarClassRegExp;\n    this.normalize = normalize;\n    this.applyToAnyTagName = false;\n  }\n\n  HTMLApplier.prototype = {\n    getAncestorWithClass: function(node) {\n      var cssClassMatch;\n      while (node) {\n        cssClassMatch = this.cssClass ? hasClass(node, this.cssClass, this.similarClassRegExp) : true;\n        if (node.nodeType == wysihtml5.ELEMENT_NODE && rangy.dom.arrayContains(this.tagNames, node.tagName.toLowerCase()) && cssClassMatch) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return false;\n    },\n\n    // Normalizes nodes after applying a CSS class to a Range.\n    postApply: function(textNodes, range) {\n      var firstNode = textNodes[0], lastNode = textNodes[textNodes.length - 1];\n\n      var merges = [], currentMerge;\n\n      var rangeStartNode = firstNode, rangeEndNode = lastNode;\n      var rangeStartOffset = 0, rangeEndOffset = lastNode.length;\n\n      var textNode, precedingTextNode;\n\n      for (var i = 0, len = textNodes.length; i < len; ++i) {\n        textNode = textNodes[i];\n        precedingTextNode = this.getAdjacentMergeableTextNode(textNode.parentNode, false);\n        if (precedingTextNode) {\n          if (!currentMerge) {\n            currentMerge = new Merge(precedingTextNode);\n            merges.push(currentMerge);\n          }\n          currentMerge.textNodes.push(textNode);\n          if (textNode === firstNode) {\n            rangeStartNode = currentMerge.firstTextNode;\n            rangeStartOffset = rangeStartNode.length;\n          }\n          if (textNode === lastNode) {\n            rangeEndNode = currentMerge.firstTextNode;\n            rangeEndOffset = currentMerge.getLength();\n          }\n        } else {\n          currentMerge = null;\n        }\n      }\n\n      // Test whether the first node after the range needs merging\n      var nextTextNode = this.getAdjacentMergeableTextNode(lastNode.parentNode, true);\n      if (nextTextNode) {\n        if (!currentMerge) {\n          currentMerge = new Merge(lastNode);\n          merges.push(currentMerge);\n        }\n        currentMerge.textNodes.push(nextTextNode);\n      }\n\n      // Do the merges\n      if (merges.length) {\n        for (i = 0, len = merges.length; i < len; ++i) {\n          merges[i].doMerge();\n        }\n        // Set the range boundaries\n        range.setStart(rangeStartNode, rangeStartOffset);\n        range.setEnd(rangeEndNode, rangeEndOffset);\n      }\n    },\n    \n    getAdjacentMergeableTextNode: function(node, forward) {\n        var isTextNode = (node.nodeType == wysihtml5.TEXT_NODE);\n        var el = isTextNode ? node.parentNode : node;\n        var adjacentNode;\n        var propName = forward ? \"nextSibling\" : \"previousSibling\";\n        if (isTextNode) {\n          // Can merge if the node's previous/next sibling is a text node\n          adjacentNode = node[propName];\n          if (adjacentNode && adjacentNode.nodeType == wysihtml5.TEXT_NODE) {\n            return adjacentNode;\n          }\n        } else {\n          // Compare element with its sibling\n          adjacentNode = el[propName];\n          if (adjacentNode && this.areElementsMergeable(node, adjacentNode)) {\n            return adjacentNode[forward ? \"firstChild\" : \"lastChild\"];\n          }\n        }\n        return null;\n    },\n    \n    areElementsMergeable: function(el1, el2) {\n      return rangy.dom.arrayContains(this.tagNames, (el1.tagName || \"\").toLowerCase())\n        && rangy.dom.arrayContains(this.tagNames, (el2.tagName || \"\").toLowerCase())\n        && hasSameClasses(el1, el2)\n        && elementsHaveSameNonClassAttributes(el1, el2);\n    },\n\n    createContainer: function(doc) {\n      var el = doc.createElement(this.tagNames[0]);\n      if (this.cssClass) {\n        el.className = this.cssClass;\n      }\n      return el;\n    },\n\n    applyToTextNode: function(textNode) {\n      var parent = textNode.parentNode;\n      if (parent.childNodes.length == 1 && rangy.dom.arrayContains(this.tagNames, parent.tagName.toLowerCase())) {\n        if (this.cssClass) {\n          addClass(parent, this.cssClass, this.similarClassRegExp);\n        }\n      } else {\n        var el = this.createContainer(rangy.dom.getDocument(textNode));\n        textNode.parentNode.insertBefore(el, textNode);\n        el.appendChild(textNode);\n      }\n    },\n\n    isRemovable: function(el) {\n      return rangy.dom.arrayContains(this.tagNames, el.tagName.toLowerCase()) && wysihtml5.lang.string(el.className).trim() == this.cssClass;\n    },\n\n    undoToTextNode: function(textNode, range, ancestorWithClass) {\n      if (!range.containsNode(ancestorWithClass)) {\n        // Split out the portion of the ancestor from which we can remove the CSS class\n        var ancestorRange = range.cloneRange();\n        ancestorRange.selectNode(ancestorWithClass);\n\n        if (ancestorRange.isPointInRange(range.endContainer, range.endOffset) && isSplitPoint(range.endContainer, range.endOffset)) {\n          splitNodeAt(ancestorWithClass, range.endContainer, range.endOffset);\n          range.setEndAfter(ancestorWithClass);\n        }\n        if (ancestorRange.isPointInRange(range.startContainer, range.startOffset) && isSplitPoint(range.startContainer, range.startOffset)) {\n          ancestorWithClass = splitNodeAt(ancestorWithClass, range.startContainer, range.startOffset);\n        }\n      }\n      \n      if (this.similarClassRegExp) {\n        removeClass(ancestorWithClass, this.similarClassRegExp);\n      }\n      if (this.isRemovable(ancestorWithClass)) {\n        replaceWithOwnChildren(ancestorWithClass);\n      }\n    },\n\n    applyToRange: function(range) {\n        var textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n        if (!textNodes.length) {\n          try {\n            var node = this.createContainer(range.endContainer.ownerDocument);\n            range.surroundContents(node);\n            this.selectNode(range, node);\n            return;\n          } catch(e) {}\n        }\n        \n        range.splitBoundaries();\n        textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n        \n        if (textNodes.length) {\n          var textNode;\n\n          for (var i = 0, len = textNodes.length; i < len; ++i) {\n            textNode = textNodes[i];\n            if (!this.getAncestorWithClass(textNode)) {\n              this.applyToTextNode(textNode);\n            }\n          }\n          \n          range.setStart(textNodes[0], 0);\n          textNode = textNodes[textNodes.length - 1];\n          range.setEnd(textNode, textNode.length);\n          \n          if (this.normalize) {\n            this.postApply(textNodes, range);\n          }\n        }\n    },\n\n    undoToRange: function(range) {\n      var textNodes = range.getNodes([wysihtml5.TEXT_NODE]), textNode, ancestorWithClass;\n      if (textNodes.length) {\n        range.splitBoundaries();\n        textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n      } else {\n        var doc = range.endContainer.ownerDocument,\n            node = doc.createTextNode(wysihtml5.INVISIBLE_SPACE);\n        range.insertNode(node);\n        range.selectNode(node);\n        textNodes = [node];\n      }\n      \n      for (var i = 0, len = textNodes.length; i < len; ++i) {\n        textNode = textNodes[i];\n        ancestorWithClass = this.getAncestorWithClass(textNode);\n        if (ancestorWithClass) {\n          this.undoToTextNode(textNode, range, ancestorWithClass);\n        }\n      }\n      \n      if (len == 1) {\n        this.selectNode(range, textNodes[0]);\n      } else {\n        range.setStart(textNodes[0], 0);\n        textNode = textNodes[textNodes.length - 1];\n        range.setEnd(textNode, textNode.length);\n\n        if (this.normalize) {\n          this.postApply(textNodes, range);\n        }\n      }\n    },\n    \n    selectNode: function(range, node) {\n      var isElement       = node.nodeType === wysihtml5.ELEMENT_NODE,\n          canHaveHTML     = \"canHaveHTML\" in node ? node.canHaveHTML : true,\n          content         = isElement ? node.innerHTML : node.data,\n          isEmpty         = (content === \"\" || content === wysihtml5.INVISIBLE_SPACE);\n\n      if (isEmpty && isElement && canHaveHTML) {\n        // Make sure that caret is visible in node by inserting a zero width no breaking space\n        try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {}\n      }\n      range.selectNodeContents(node);\n      if (isEmpty && isElement) {\n        range.collapse(false);\n      } else if (isEmpty) {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n    },\n    \n    getTextSelectedByRange: function(textNode, range) {\n      var textRange = range.cloneRange();\n      textRange.selectNodeContents(textNode);\n\n      var intersectionRange = textRange.intersection(range);\n      var text = intersectionRange ? intersectionRange.toString() : \"\";\n      textRange.detach();\n\n      return text;\n    },\n\n    isAppliedToRange: function(range) {\n      var ancestors = [],\n          ancestor,\n          textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n      if (!textNodes.length) {\n        ancestor = this.getAncestorWithClass(range.startContainer);\n        return ancestor ? [ancestor] : false;\n      }\n      \n      for (var i = 0, len = textNodes.length, selectedText; i < len; ++i) {\n        selectedText = this.getTextSelectedByRange(textNodes[i], range);\n        ancestor = this.getAncestorWithClass(textNodes[i]);\n        if (selectedText != \"\" && !ancestor) {\n          return false;\n        } else {\n          ancestors.push(ancestor);\n        }\n      }\n      return ancestors;\n    },\n\n    toggleRange: function(range) {\n      if (this.isAppliedToRange(range)) {\n        this.undoToRange(range);\n      } else {\n        this.applyToRange(range);\n      }\n    }\n  };\n\n  wysihtml5.selection.HTMLApplier = HTMLApplier;\n  \n})(wysihtml5, rangy);/**\n * Rich Text Query/Formatting Commands\n * \n * @example\n *    var commands = new wysihtml5.Commands(editor);\n */\nwysihtml5.Commands = Base.extend(\n  /** @scope wysihtml5.Commands.prototype */ {\n  constructor: function(editor) {\n    this.editor   = editor;\n    this.composer = editor.composer;\n    this.doc      = this.composer.doc;\n  },\n  \n  /**\n   * Check whether the browser supports the given command\n   *\n   * @param {String} command The command string which to check (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @example\n   *    commands.supports(\"createLink\");\n   */\n  support: function(command) {\n    return wysihtml5.browser.supportsCommand(this.doc, command);\n  },\n  \n  /**\n   * Check whether the browser supports the given command\n   *\n   * @param {String} command The command string which to execute (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @param {String} [value] The command value parameter, needed for some commands (\"createLink\", \"insertImage\", ...), optional for commands that don't require one (\"bold\", \"underline\", ...)\n   * @example\n   *    commands.exec(\"insertImage\", \"../../../../a1.twimg.com/profile_images/113868655/schrei_twitter_reasonably_small.jpg\");\n   */\n  exec: function(command, value) {\n    var obj     = wysihtml5.commands[command],\n        args    = wysihtml5.lang.array(arguments).get(),\n        method  = obj && obj.exec,\n        result  = null;\n    \n    this.editor.fire(\"beforecommand:composer\");\n    \n    if (method) {\n      args.unshift(this.composer);\n      result = method.apply(obj, args);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        result = this.doc.execCommand(command, false, value);\n      } catch(e) {}\n    }\n    \n    this.editor.fire(\"aftercommand:composer\");\n    return result;\n  },\n  \n  /**\n   * Check whether the current command is active\n   * If the caret is within a bold text, then calling this with command \"bold\" should return true\n   *\n   * @param {String} command The command string which to check (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @param {String} [commandValue] The command value parameter (eg. for \"insertImage\" the image src)\n   * @return {Boolean} Whether the command is active\n   * @example\n   *    var isCurrentSelectionBold = commands.state(\"bold\");\n   */\n  state: function(command, commandValue) {\n    var obj     = wysihtml5.commands[command],\n        args    = wysihtml5.lang.array(arguments).get(),\n        method  = obj && obj.state;\n    if (method) {\n      args.unshift(this.composer);\n      return method.apply(obj, args);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        return this.doc.queryCommandState(command);\n      } catch(e) {\n        return false;\n      }\n    }\n  },\n  \n  /**\n   * Get the current command's value\n   *\n   * @param {String} command The command string which to check (eg. \"formatBlock\")\n   * @return {String} The command value\n   * @example\n   *    var currentBlockElement = commands.value(\"formatBlock\");\n   */\n  value: function(command) {\n    var obj     = wysihtml5.commands[command],\n        method  = obj && obj.value;\n    if (method) {\n      return method.call(obj, this.composer, command);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        return this.doc.queryCommandValue(command);\n      } catch(e) {\n        return null;\n      }\n    }\n  }\n});\n(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.bold = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"b\");\n    },\n\n    state: function(composer, command, color) {\n      // element.ownerDocument.queryCommandState(\"bold\") results:\n      // firefox: only <b>\n      // chrome:  <b>, <strong>, <h1>, <h2>, ...\n      // ie:      <b>, <strong>\n      // opera:   <b>, <strong>\n      return wysihtml5.commands.formatInline.state(composer, command, \"b\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);\n\n(function(wysihtml5) {\n  var undef,\n      NODE_NAME = \"A\",\n      dom       = wysihtml5.dom;\n  \n  function _removeFormat(composer, anchors) {\n    var length  = anchors.length,\n        i       = 0,\n        anchor,\n        codeElement,\n        textContent;\n    for (; i<length; i++) {\n      anchor      = anchors[i];\n      codeElement = dom.getParentElement(anchor, { nodeName: \"code\" });\n      textContent = dom.getTextContent(anchor);\n\n      // if <a> contains url-like text content, rename it to <code> to prevent re-autolinking\n      // else replace <a> with its childNodes\n      if (textContent.match(dom.autoLink.URL_REG_EXP) && !codeElement) {\n        // <code> element is used to prevent later auto-linking of the content\n        codeElement = dom.renameElement(anchor, \"code\");\n      } else {\n        dom.replaceWithChildNodes(anchor);\n      }\n    }\n  }\n\n  function _format(composer, attributes) {\n    var doc             = composer.doc,\n        tempClass       = \"_wysihtml5-temp-\" + (+new Date()),\n        tempClassRegExp = /non-matching-class/g,\n        i               = 0,\n        length,\n        anchors,\n        anchor,\n        hasElementChild,\n        isEmpty,\n        elementToSetCaretAfter,\n        textContent,\n        whiteSpace,\n        j;\n    wysihtml5.commands.formatInline.exec(composer, undef, NODE_NAME, tempClass, tempClassRegExp);\n    anchors = doc.querySelectorAll(NODE_NAME + \".\" + tempClass);\n    length  = anchors.length;\n    for (; i<length; i++) {\n      anchor = anchors[i];\n      anchor.removeAttribute(\"class\");\n      for (j in attributes) {\n        anchor.setAttribute(j, attributes[j]);\n      }\n    }\n\n    elementToSetCaretAfter = anchor;\n    if (length === 1) {\n      textContent = dom.getTextContent(anchor);\n      hasElementChild = !!anchor.querySelector(\"*\");\n      isEmpty = textContent === \"\" || textContent === wysihtml5.INVISIBLE_SPACE;\n      if (!hasElementChild && isEmpty) {\n        dom.setTextContent(anchor, attributes.text || anchor.href);\n        whiteSpace = doc.createTextNode(\" \");\n        composer.selection.setAfter(anchor);\n        composer.selection.insertNode(whiteSpace);\n        elementToSetCaretAfter = whiteSpace;\n      }\n    }\n    composer.selection.setAfter(elementToSetCaretAfter);\n  }\n  \n  wysihtml5.commands.createLink = {\n    /**\n     * TODO: Use HTMLApplier or formatInline here\n     *\n     * Turns selection into a link\n     * If selection is already a link, it removes the link and wraps it with a <code> element\n     * The <code> element is needed to avoid auto linking\n     * \n     * @example\n     *    // either ...\n     *    wysihtml5.commands.createLink.exec(composer, \"createLink\", \"../../../../www.google.de\");\n     *    // ... or ...\n     *    wysihtml5.commands.createLink.exec(composer, \"createLink\", { href: \"../../../../www.google.de\", target: \"_blank\" });\n     */\n    exec: function(composer, command, value) {\n      var anchors = this.state(composer, command);\n      if (anchors) {\n        // Selection contains links\n        composer.selection.executeAndRestore(function() {\n          _removeFormat(composer, anchors);\n        });\n      } else {\n        // Create links\n        value = typeof(value) === \"object\" ? value : { href: value };\n        _format(composer, value);\n      }\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"A\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * document.execCommand(\"fontSize\") will create either inline styles (firefox, chrome) or use font tags\n * which we don't want\n * Instead we set a css class\n */\n(function(wysihtml5) {\n  var undef,\n      REG_EXP = /wysiwyg-font-size-[a-z\\-]+/g;\n  \n  wysihtml5.commands.fontSize = {\n    exec: function(composer, command, size) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"span\", \"wysiwyg-font-size-\" + size, REG_EXP);\n    },\n\n    state: function(composer, command, size) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"span\", \"wysiwyg-font-size-\" + size, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);\n/**\n * document.execCommand(\"foreColor\") will create either inline styles (firefox, chrome) or use font tags\n * which we don't want\n * Instead we set a css class\n */\n(function(wysihtml5) {\n  var undef,\n      REG_EXP = /wysiwyg-color-[a-z]+/g;\n  \n  wysihtml5.commands.foreColor = {\n    exec: function(composer, command, color) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"span\", \"wysiwyg-color-\" + color, REG_EXP);\n    },\n\n    state: function(composer, command, color) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"span\", \"wysiwyg-color-\" + color, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      dom                     = wysihtml5.dom,\n      DEFAULT_NODE_NAME       = \"DIV\",\n      // Following elements are grouped\n      // when the caret is within a H1 and the H4 is invoked, the H1 should turn into H4\n      // instead of creating a H4 within a H1 which would result in semantically invalid html\n      BLOCK_ELEMENTS_GROUP    = [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"P\", \"BLOCKQUOTE\", DEFAULT_NODE_NAME];\n  \n  /**\n   * Remove similiar classes (based on classRegExp)\n   * and add the desired class name\n   */\n  function _addClass(element, className, classRegExp) {\n    if (element.className) {\n      _removeClass(element, classRegExp);\n      element.className += \" \" + className;\n    } else {\n      element.className = className;\n    }\n  }\n\n  function _removeClass(element, classRegExp) {\n    element.className = element.className.replace(classRegExp, \"\");\n  }\n\n  /**\n   * Check whether given node is a text node and whether it's empty\n   */\n  function _isBlankTextNode(node) {\n    return node.nodeType === wysihtml5.TEXT_NODE && !wysihtml5.lang.string(node.data).trim();\n  }\n\n  /**\n   * Returns previous sibling node that is not a blank text node\n   */\n  function _getPreviousSiblingThatIsNotBlank(node) {\n    var previousSibling = node.previousSibling;\n    while (previousSibling && _isBlankTextNode(previousSibling)) {\n      previousSibling = previousSibling.previousSibling;\n    }\n    return previousSibling;\n  }\n\n  /**\n   * Returns next sibling node that is not a blank text node\n   */\n  function _getNextSiblingThatIsNotBlank(node) {\n    var nextSibling = node.nextSibling;\n    while (nextSibling && _isBlankTextNode(nextSibling)) {\n      nextSibling = nextSibling.nextSibling;\n    }\n    return nextSibling;\n  }\n\n  /**\n   * Adds line breaks before and after the given node if the previous and next siblings\n   * aren't already causing a visual line break (block element or <br>)\n   */\n  function _addLineBreakBeforeAndAfter(node) {\n    var doc             = node.ownerDocument,\n        nextSibling     = _getNextSiblingThatIsNotBlank(node),\n        previousSibling = _getPreviousSiblingThatIsNotBlank(node);\n\n    if (nextSibling && !_isLineBreakOrBlockElement(nextSibling)) {\n      node.parentNode.insertBefore(doc.createElement(\"br\"), nextSibling);\n    }\n    if (previousSibling && !_isLineBreakOrBlockElement(previousSibling)) {\n      node.parentNode.insertBefore(doc.createElement(\"br\"), node);\n    }\n  }\n\n  /**\n   * Removes line breaks before and after the given node\n   */\n  function _removeLineBreakBeforeAndAfter(node) {\n    var nextSibling     = _getNextSiblingThatIsNotBlank(node),\n        previousSibling = _getPreviousSiblingThatIsNotBlank(node);\n\n    if (nextSibling && _isLineBreak(nextSibling)) {\n      nextSibling.parentNode.removeChild(nextSibling);\n    }\n    if (previousSibling && _isLineBreak(previousSibling)) {\n      previousSibling.parentNode.removeChild(previousSibling);\n    }\n  }\n\n  function _removeLastChildIfLineBreak(node) {\n    var lastChild = node.lastChild;\n    if (lastChild && _isLineBreak(lastChild)) {\n      lastChild.parentNode.removeChild(lastChild);\n    }\n  }\n\n  function _isLineBreak(node) {\n    return node.nodeName === \"BR\";\n  }\n\n  /**\n   * Checks whether the elment causes a visual line break\n   * (<br> or block elements)\n   */\n  function _isLineBreakOrBlockElement(element) {\n    if (_isLineBreak(element)) {\n      return true;\n    }\n\n    if (dom.getStyle(\"display\").from(element) === \"block\") {\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Execute native query command\n   * and if necessary modify the inserted node's className\n   */\n  function _execCommand(doc, command, nodeName, className) {\n    if (className) {\n      var eventListener = dom.observe(doc, \"DOMNodeInserted\", function(event) {\n        var target = event.target,\n            displayStyle;\n        if (target.nodeType !== wysihtml5.ELEMENT_NODE) {\n          return;\n        }\n        displayStyle = dom.getStyle(\"display\").from(target);\n        if (displayStyle.substr(0, 6) !== \"inline\") {\n          // Make sure that only block elements receive the given class\n          target.className += \" \" + className;\n        }\n      });\n    }\n    doc.execCommand(command, false, nodeName);\n    if (eventListener) {\n      eventListener.stop();\n    }\n  }\n\n  function _selectLineAndWrap(composer, element) {\n    composer.selection.selectLine();\n    composer.selection.surround(element);\n    _removeLineBreakBeforeAndAfter(element);\n    _removeLastChildIfLineBreak(element);\n    composer.selection.selectNode(element);\n  }\n\n  function _hasClasses(element) {\n    return !!wysihtml5.lang.string(element.className).trim();\n  }\n  \n  wysihtml5.commands.formatBlock = {\n    exec: function(composer, command, nodeName, className, classRegExp) {\n      var doc          = composer.doc,\n          blockElement = this.state(composer, command, nodeName, className, classRegExp),\n          selectedNode;\n\n      nodeName = typeof(nodeName) === \"string\" ? nodeName.toUpperCase() : nodeName;\n\n      if (blockElement) {\n        composer.selection.executeAndRestoreSimple(function() {\n          if (classRegExp) {\n            _removeClass(blockElement, classRegExp);\n          }\n          var hasClasses = _hasClasses(blockElement);\n          if (!hasClasses && blockElement.nodeName === (nodeName || DEFAULT_NODE_NAME)) {\n            // Insert a line break afterwards and beforewards when there are siblings\n            // that are not of type line break or block element\n            _addLineBreakBeforeAndAfter(blockElement);\n            dom.replaceWithChildNodes(blockElement);\n          } else if (hasClasses) {\n            // Make sure that styling is kept by renaming the element to <div> and copying over the class name\n            dom.renameElement(blockElement, DEFAULT_NODE_NAME);\n          }\n        });\n        return;\n      }\n\n      // Find similiar block element and rename it (<h2 class=\"foo\"></h2>  =>  <h1 class=\"foo\"></h1>)\n      if (nodeName === null || wysihtml5.lang.array(BLOCK_ELEMENTS_GROUP).contains(nodeName)) {\n        selectedNode = composer.selection.getSelectedNode();\n        blockElement = dom.getParentElement(selectedNode, {\n          nodeName: BLOCK_ELEMENTS_GROUP\n        });\n\n        if (blockElement) {\n          composer.selection.executeAndRestoreSimple(function() {\n            // Rename current block element to new block element and add class\n            if (nodeName) {\n              blockElement = dom.renameElement(blockElement, nodeName);\n            }\n            if (className) {\n              _addClass(blockElement, className, classRegExp);\n            }\n          });\n          return;\n        }\n      }\n\n      if (composer.commands.support(command)) {\n        _execCommand(doc, command, nodeName || DEFAULT_NODE_NAME, className);\n        return;\n      }\n\n      blockElement = doc.createElement(nodeName || DEFAULT_NODE_NAME);\n      if (className) {\n        blockElement.className = className;\n      }\n      _selectLineAndWrap(composer, blockElement);\n    },\n\n    state: function(composer, command, nodeName, className, classRegExp) {\n      nodeName = typeof(nodeName) === \"string\" ? nodeName.toUpperCase() : nodeName;\n      var selectedNode = composer.selection.getSelectedNode();\n      return dom.getParentElement(selectedNode, {\n        nodeName:     nodeName,\n        className:    className,\n        classRegExp:  classRegExp\n      });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * formatInline scenarios for tag \"B\" (| = caret, |foo| = selected text)\n *\n *   #1 caret in unformatted text:\n *      abcdefg|\n *   output:\n *      abcdefg<b>|</b>\n *   \n *   #2 unformatted text selected:\n *      abc|deg|h\n *   output:\n *      abc<b>|deg|</b>h\n *   \n *   #3 unformatted text selected across boundaries:\n *      ab|c <span>defg|h</span>\n *   output:\n *      ab<b>|c </b><span><b>defg</b>|h</span>\n *\n *   #4 formatted text entirely selected\n *      <b>|abc|</b>\n *   output:\n *      |abc|\n *\n *   #5 formatted text partially selected\n *      <b>ab|c|</b>\n *   output:\n *      <b>ab</b>|c|\n *\n *   #6 formatted text selected across boundaries\n *      <span>ab|c</span> <b>de|fgh</b>\n *   output:\n *      <span>ab|c</span> de|<b>fgh</b>\n */\n(function(wysihtml5) {\n  var undef,\n      // Treat <b> as <strong> and vice versa\n      ALIAS_MAPPING = {\n        \"strong\": \"b\",\n        \"em\":     \"i\",\n        \"b\":      \"strong\",\n        \"i\":      \"em\"\n      },\n      htmlApplier = {};\n  \n  function _getTagNames(tagName) {\n    var alias = ALIAS_MAPPING[tagName];\n    return alias ? [tagName.toLowerCase(), alias.toLowerCase()] : [tagName.toLowerCase()];\n  }\n  \n  function _getApplier(tagName, className, classRegExp) {\n    var identifier = tagName + \":\" + className;\n    if (!htmlApplier[identifier]) {\n      htmlApplier[identifier] = new wysihtml5.selection.HTMLApplier(_getTagNames(tagName), className, classRegExp, true);\n    }\n    return htmlApplier[identifier];\n  }\n  \n  wysihtml5.commands.formatInline = {\n    exec: function(composer, command, tagName, className, classRegExp) {\n      var range = composer.selection.getRange();\n      if (!range) {\n        return false;\n      }\n      _getApplier(tagName, className, classRegExp).toggleRange(range);\n      composer.selection.setSelection(range);\n    },\n\n    state: function(composer, command, tagName, className, classRegExp) {\n      var doc           = composer.doc,\n          aliasTagName  = ALIAS_MAPPING[tagName] || tagName,\n          range;\n\n      // Check whether the document contains a node with the desired tagName\n      if (!wysihtml5.dom.hasElementWithTagName(doc, tagName) &&\n          !wysihtml5.dom.hasElementWithTagName(doc, aliasTagName)) {\n        return false;\n      }\n\n       // Check whether the document contains a node with the desired className\n      if (className && !wysihtml5.dom.hasElementWithClassName(doc, className)) {\n         return false;\n      }\n\n      range = composer.selection.getRange();\n      if (!range) {\n        return false;\n      }\n\n      return _getApplier(tagName, className, classRegExp).isAppliedToRange(range);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertHTML = {\n    exec: function(composer, command, html) {\n      if (composer.commands.support(command)) {\n        composer.doc.execCommand(command, false, html);\n      } else {\n        composer.selection.insertHTML(html);\n      }\n    },\n\n    state: function() {\n      return false;\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var NODE_NAME = \"IMG\";\n  \n  wysihtml5.commands.insertImage = {\n    /**\n     * Inserts an <img>\n     * If selection is already an image link, it removes it\n     * \n     * @example\n     *    // either ...\n     *    wysihtml5.commands.insertImage.exec(composer, \"insertImage\", \"../../../../www.google.de/logo.jpg\");\n     *    // ... or ...\n     *    wysihtml5.commands.insertImage.exec(composer, \"insertImage\", { src: \"../../../../www.google.de/logo.jpg\", title: \"foo\" });\n     */\n    exec: function(composer, command, value) {\n      value = typeof(value) === \"object\" ? value : { src: value };\n\n      var doc     = composer.doc,\n          image   = this.state(composer),\n          textNode,\n          i,\n          parent;\n\n      if (image) {\n        // Image already selected, set the caret before it and delete it\n        composer.selection.setBefore(image);\n        parent = image.parentNode;\n        parent.removeChild(image);\n\n        // and it's parent <a> too if it hasn't got any other relevant child nodes\n        wysihtml5.dom.removeEmptyTextNodes(parent);\n        if (parent.nodeName === \"A\" && !parent.firstChild) {\n          composer.selection.setAfter(parent);\n          parent.parentNode.removeChild(parent);\n        }\n\n        // firefox and ie sometimes don't remove the image handles, even though the image got removed\n        wysihtml5.quirks.redraw(composer.element);\n        return;\n      }\n\n      image = doc.createElement(NODE_NAME);\n\n      for (i in value) {\n        image[i] = value[i];\n      }\n\n      composer.selection.insertNode(image);\n      if (wysihtml5.browser.hasProblemsSettingCaretAfterImg()) {\n        textNode = doc.createTextNode(wysihtml5.INVISIBLE_SPACE);\n        composer.selection.insertNode(textNode);\n        composer.selection.setAfter(textNode);\n      } else {\n        composer.selection.setAfter(image);\n      }\n    },\n\n    state: function(composer) {\n      var doc = composer.doc,\n          selectedNode,\n          text,\n          imagesInSelection;\n\n      if (!wysihtml5.dom.hasElementWithTagName(doc, NODE_NAME)) {\n        return false;\n      }\n\n      selectedNode = composer.selection.getSelectedNode();\n      if (!selectedNode) {\n        return false;\n      }\n\n      if (selectedNode.nodeName === NODE_NAME) {\n        // This works perfectly in IE\n        return selectedNode;\n      }\n\n      if (selectedNode.nodeType !== wysihtml5.ELEMENT_NODE) {\n        return false;\n      }\n\n      text = composer.selection.getText();\n      text = wysihtml5.lang.string(text).trim();\n      if (text) {\n        return false;\n      }\n\n      imagesInSelection = composer.selection.getNodes(wysihtml5.ELEMENT_NODE, function(node) {\n        return node.nodeName === \"IMG\";\n      });\n\n      if (imagesInSelection.length !== 1) {\n        return false;\n      }\n\n      return imagesInSelection[0];\n    },\n\n    value: function(composer) {\n      var image = this.state(composer);\n      return image && image.src;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      LINE_BREAK = \"<br>\" + (wysihtml5.browser.needsSpaceAfterLineBreak() ? \" \" : \"\");\n  \n  wysihtml5.commands.insertLineBreak = {\n    exec: function(composer, command) {\n      if (composer.commands.support(command)) {\n        composer.doc.execCommand(command, false, null);\n        if (!wysihtml5.browser.autoScrollsToCaret()) {\n          composer.selection.scrollIntoView();\n        }\n      } else {\n        composer.commands.exec(\"insertHTML\", LINE_BREAK);\n      }\n    },\n\n    state: function() {\n      return false;\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertOrderedList = {\n    exec: function(composer, command) {\n      var doc           = composer.doc,\n          selectedNode  = composer.selection.getSelectedNode(),\n          list          = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" }),\n          otherList     = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" }),\n          tempClassName =  \"_wysihtml5-temp-\" + new Date().getTime(),\n          isEmpty,\n          tempElement;\n      \n      if (composer.commands.support(command)) {\n        doc.execCommand(command, false, null);\n        return;\n      }\n      \n      if (list) {\n        // Unwrap list\n        // <ol><li>foo</li><li>bar</li></ol>\n        // becomes:\n        // foo<br>bar<br>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.resolveList(list);\n        });\n      } else if (otherList) {\n        // Turn an unordered list into an ordered list\n        // <ul><li>foo</li><li>bar</li></ul>\n        // becomes:\n        // <ol><li>foo</li><li>bar</li></ol>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.renameElement(otherList, \"ol\");\n        });\n      } else {\n        // Create list\n        composer.commands.exec(\"formatBlock\", \"div\", tempClassName);\n        tempElement = doc.querySelector(\".\" + tempClassName);\n        isEmpty = tempElement.innerHTML === \"\" || tempElement.innerHTML === wysihtml5.INVISIBLE_SPACE;\n        composer.selection.executeAndRestoreSimple(function() {\n          list = wysihtml5.dom.convertToList(tempElement, \"ol\");\n        });\n        if (isEmpty) {\n          composer.selection.selectNode(list.querySelector(\"li\"));\n        }\n      }\n    },\n    \n    state: function(composer) {\n      var selectedNode = composer.selection.getSelectedNode();\n      return wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertUnorderedList = {\n    exec: function(composer, command) {\n      var doc           = composer.doc,\n          selectedNode  = composer.selection.getSelectedNode(),\n          list          = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" }),\n          otherList     = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" }),\n          tempClassName =  \"_wysihtml5-temp-\" + new Date().getTime(),\n          isEmpty,\n          tempElement;\n      \n      if (composer.commands.support(command)) {\n        doc.execCommand(command, false, null);\n        return;\n      }\n      \n      if (list) {\n        // Unwrap list\n        // <ul><li>foo</li><li>bar</li></ul>\n        // becomes:\n        // foo<br>bar<br>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.resolveList(list);\n        });\n      } else if (otherList) {\n        // Turn an ordered list into an unordered list\n        // <ol><li>foo</li><li>bar</li></ol>\n        // becomes:\n        // <ul><li>foo</li><li>bar</li></ul>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.renameElement(otherList, \"ul\");\n        });\n      } else {\n        // Create list\n        composer.commands.exec(\"formatBlock\", \"div\", tempClassName);\n        tempElement = doc.querySelector(\".\" + tempClassName);\n        isEmpty = tempElement.innerHTML === \"\" || tempElement.innerHTML === wysihtml5.INVISIBLE_SPACE;\n        composer.selection.executeAndRestoreSimple(function() {\n          list = wysihtml5.dom.convertToList(tempElement, \"ul\");\n        });\n        if (isEmpty) {\n          composer.selection.selectNode(list.querySelector(\"li\"));\n        }\n      }\n    },\n    \n    state: function(composer) {\n      var selectedNode = composer.selection.getSelectedNode();\n      return wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.italic = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"i\");\n    },\n\n    state: function(composer, command, color) {\n      // element.ownerDocument.queryCommandState(\"italic\") results:\n      // firefox: only <i>\n      // chrome:  <i>, <em>, <blockquote>, ...\n      // ie:      <i>, <em>\n      // opera:   only <i>\n      return wysihtml5.commands.formatInline.state(composer, command, \"i\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-center\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyCenter = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-left\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyLeft = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-right\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyRight = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  wysihtml5.commands.underline = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"u\");\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"u\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * Undo Manager for wysihtml5\n * slightly inspired by http://rniwa.com/editing/undomanager.html#the-undomanager-interface\n */\n(function(wysihtml5) {\n  var Z_KEY               = 90,\n      Y_KEY               = 89,\n      BACKSPACE_KEY       = 8,\n      DELETE_KEY          = 46,\n      MAX_HISTORY_ENTRIES = 40,\n      UNDO_HTML           = '<span id=\"_wysihtml5-undo\" class=\"_wysihtml5-temp\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n      REDO_HTML           = '<span id=\"_wysihtml5-redo\" class=\"_wysihtml5-temp\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n      dom                 = wysihtml5.dom;\n  \n  function cleanTempElements(doc) {\n    var tempElement;\n    while (tempElement = doc.querySelector(\"._wysihtml5-temp\")) {\n      tempElement.parentNode.removeChild(tempElement);\n    }\n  }\n  \n  wysihtml5.UndoManager = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.UndoManager.prototype */ {\n    constructor: function(editor) {\n      this.editor = editor;\n      this.composer = editor.composer;\n      this.element = this.composer.element;\n      this.history = [this.composer.getValue()];\n      this.position = 1;\n      \n      // Undo manager currently only supported in browsers who have the insertHTML command (not IE)\n      if (this.composer.commands.support(\"insertHTML\")) {\n        this._observe();\n      }\n    },\n    \n    _observe: function() {\n      var that      = this,\n          doc       = this.composer.sandbox.getDocument(),\n          lastKey;\n          \n      // Catch CTRL+Z and CTRL+Y\n      dom.observe(this.element, \"keydown\", function(event) {\n        if (event.altKey || (!event.ctrlKey && !event.metaKey)) {\n          return;\n        }\n        \n        var keyCode = event.keyCode,\n            isUndo = keyCode === Z_KEY && !event.shiftKey,\n            isRedo = (keyCode === Z_KEY && event.shiftKey) || (keyCode === Y_KEY);\n        \n        if (isUndo) {\n          that.undo();\n          event.preventDefault();\n        } else if (isRedo) {\n          that.redo();\n          event.preventDefault();\n        }\n      });\n      \n      // Catch delete and backspace\n      dom.observe(this.element, \"keydown\", function(event) {\n        var keyCode = event.keyCode;\n        if (keyCode === lastKey) {\n          return;\n        }\n        \n        lastKey = keyCode;\n        \n        if (keyCode === BACKSPACE_KEY || keyCode === DELETE_KEY) {\n          that.transact();\n        }\n      });\n      \n      // Now this is very hacky:\n      // These days browsers don't offer a undo/redo event which we could hook into\n      // to be notified when the user hits undo/redo in the contextmenu.\n      // Therefore we simply insert two elements as soon as the contextmenu gets opened.\n      // The last element being inserted will be immediately be removed again by a exexCommand(\"undo\")\n      //  => When the second element appears in the dom tree then we know the user clicked \"redo\" in the context menu\n      //  => When the first element disappears from the dom tree then we know the user clicked \"undo\" in the context menu\n      if (wysihtml5.browser.hasUndoInContextMenu()) {\n        var interval, observed, cleanUp = function() {\n          cleanTempElements(doc);\n          clearInterval(interval);\n        };\n        \n        dom.observe(this.element, \"contextmenu\", function() {\n          cleanUp();\n          that.composer.selection.executeAndRestoreSimple(function() {\n            if (that.element.lastChild) {\n              that.composer.selection.setAfter(that.element.lastChild);\n            }\n\n            // enable undo button in context menu\n            doc.execCommand(\"insertHTML\", false, UNDO_HTML);\n            // enable redo button in context menu\n            doc.execCommand(\"insertHTML\", false, REDO_HTML);\n            doc.execCommand(\"undo\", false, null);\n          });\n\n          interval = setInterval(function() {\n            if (doc.getElementById(\"_wysihtml5-redo\")) {\n              cleanUp();\n              that.redo();\n            } else if (!doc.getElementById(\"_wysihtml5-undo\")) {\n              cleanUp();\n              that.undo();\n            }\n          }, 400);\n\n          if (!observed) {\n            observed = true;\n            dom.observe(document, \"mousedown\", cleanUp);\n            dom.observe(doc, [\"mousedown\", \"paste\", \"cut\", \"copy\"], cleanUp);\n          }\n        });\n      }\n      \n      this.editor\n        .observe(\"newword:composer\", function() {\n          that.transact();\n        })\n        \n        .observe(\"beforecommand:composer\", function() {\n          that.transact();\n        });\n    },\n    \n    transact: function() {\n      var previousHtml  = this.history[this.position - 1],\n          currentHtml   = this.composer.getValue();\n      \n      if (currentHtml == previousHtml) {\n        return;\n      }\n      \n      var length = this.history.length = this.position;\n      if (length > MAX_HISTORY_ENTRIES) {\n        this.history.shift();\n        this.position--;\n      }\n      \n      this.position++;\n      this.history.push(currentHtml);\n    },\n    \n    undo: function() {\n      this.transact();\n      \n      if (this.position <= 1) {\n        return;\n      }\n      \n      this.set(this.history[--this.position - 1]);\n      this.editor.fire(\"undo:composer\");\n    },\n    \n    redo: function() {\n      if (this.position >= this.history.length) {\n        return;\n      }\n      \n      this.set(this.history[++this.position - 1]);\n      this.editor.fire(\"redo:composer\");\n    },\n    \n    set: function(html) {\n      this.composer.setValue(html);\n      this.editor.focus(true);\n    }\n  });\n})(wysihtml5);\n/**\n * TODO: the following methods still need unit test coverage\n */\nwysihtml5.views.View = Base.extend(\n  /** @scope wysihtml5.views.View.prototype */ {\n  constructor: function(parent, textareaElement, config) {\n    this.parent   = parent;\n    this.element  = textareaElement;\n    this.config   = config;\n    \n    this._observeViewChange();\n  },\n  \n  _observeViewChange: function() {\n    var that = this;\n    this.parent.observe(\"beforeload\", function() {\n      that.parent.observe(\"change_view\", function(view) {\n        if (view === that.name) {\n          that.parent.currentView = that;\n          that.show();\n          // Using tiny delay here to make sure that the placeholder is set before focusing\n          setTimeout(function() { that.focus(); }, 0);\n        } else {\n          that.hide();\n        }\n      });\n    });\n  },\n  \n  focus: function() {\n    if (this.element.ownerDocument.querySelector(\":focus\") === this.element) {\n      return;\n    }\n    \n    try { this.element.focus(); } catch(e) {}\n  },\n  \n  hide: function() {\n    this.element.style.display = \"none\";\n  },\n  \n  show: function() {\n    this.element.style.display = \"\";\n  },\n  \n  disable: function() {\n    this.element.setAttribute(\"disabled\", \"disabled\");\n  },\n  \n  enable: function() {\n    this.element.removeAttribute(\"disabled\");\n  }\n});(function(wysihtml5) {\n  var dom       = wysihtml5.dom,\n      browser   = wysihtml5.browser;\n  \n  wysihtml5.views.Composer = wysihtml5.views.View.extend(\n    /** @scope wysihtml5.views.Composer.prototype */ {\n    name: \"composer\",\n\n    // Needed for firefox in order to display a proper caret in an empty contentEditable\n    CARET_HACK: \"<br>\",\n\n    constructor: function(parent, textareaElement, config) {\n      this.base(parent, textareaElement, config);\n      this.textarea = this.parent.textarea;\n      this._initSandbox();\n    },\n\n    clear: function() {\n      this.element.innerHTML = browser.displaysCaretInEmptyContentEditableCorrectly() ? \"\" : this.CARET_HACK;\n    },\n\n    getValue: function(parse) {\n      var value = this.isEmpty() ? \"\" : wysihtml5.quirks.getCorrectInnerHTML(this.element);\n      \n      if (parse) {\n        value = this.parent.parse(value);\n      }\n\n      // Replace all \"zero width no breaking space\" chars\n      // which are used as hacks to enable some functionalities\n      // Also remove all CARET hacks that somehow got left\n      value = wysihtml5.lang.string(value).replace(wysihtml5.INVISIBLE_SPACE).by(\"\");\n\n      return value;\n    },\n\n    setValue: function(html, parse) {\n      if (parse) {\n        html = this.parent.parse(html);\n      }\n      this.element.innerHTML = html;\n    },\n\n    show: function() {\n      this.iframe.style.display = this._displayStyle || \"\";\n\n      // Firefox needs this, otherwise contentEditable becomes uneditable\n      this.disable();\n      this.enable();\n    },\n\n    hide: function() {\n      this._displayStyle = dom.getStyle(\"display\").from(this.iframe);\n      if (this._displayStyle === \"none\") {\n        this._displayStyle = null;\n      }\n      this.iframe.style.display = \"none\";\n    },\n\n    disable: function() {\n      this.element.removeAttribute(\"contentEditable\");\n      this.base();\n    },\n\n    enable: function() {\n      this.element.setAttribute(\"contentEditable\", \"true\");\n      this.base();\n    },\n\n    focus: function(setToEnd) {\n      // IE 8 fires the focus event after .focus()\n      // This is needed by our simulate_placeholder.js to work\n      // therefore we clear it ourselves this time\n      if (wysihtml5.browser.doesAsyncFocus() && this.hasPlaceholderSet()) {\n        this.clear();\n      }\n      \n      this.base();\n      \n      var lastChild = this.element.lastChild;\n      if (setToEnd && lastChild) {\n        if (lastChild.nodeName === \"BR\") {\n          this.selection.setBefore(this.element.lastChild);\n        } else {\n          this.selection.setAfter(this.element.lastChild);\n        }\n      }\n    },\n\n    getTextContent: function() {\n      return dom.getTextContent(this.element);\n    },\n\n    hasPlaceholderSet: function() {\n      return this.getTextContent() == this.textarea.element.getAttribute(\"placeholder\");\n    },\n\n    isEmpty: function() {\n      var innerHTML               = this.element.innerHTML,\n          elementsWithVisualValue = \"blockquote, ul, ol, img, embed, object, table, iframe, svg, video, audio, button, input, select, textarea\";\n      return innerHTML === \"\"              || \n             innerHTML === this.CARET_HACK ||\n             this.hasPlaceholderSet()      ||\n             (this.getTextContent() === \"\" && !this.element.querySelector(elementsWithVisualValue));\n    },\n\n    _initSandbox: function() {\n      var that = this;\n      \n      this.sandbox = new dom.Sandbox(function() {\n        that._create();\n      }, {\n        stylesheets:  this.config.stylesheets\n      });\n      this.iframe  = this.sandbox.getIframe();\n\n      // Create hidden field which tells the server after submit, that the user used an wysiwyg editor\n      var hiddenField = document.createElement(\"input\");\n      hiddenField.type   = \"hidden\";\n      hiddenField.name   = \"_wysihtml5_mode\";\n      hiddenField.value  = 1;\n\n      // Store reference to current wysihtml5 instance on the textarea element\n      var textareaElement = this.textarea.element;\n      dom.insert(this.iframe).after(textareaElement);\n      dom.insert(hiddenField).after(textareaElement);\n    },\n\n    _create: function() {\n      var that = this;\n      \n      this.doc                = this.sandbox.getDocument();\n      this.element            = this.doc.body;\n      this.textarea           = this.parent.textarea;\n      this.element.innerHTML  = this.textarea.getValue(true);\n      this.enable();\n      \n      // Make sure our selection handler is ready\n      this.selection = new wysihtml5.Selection(this.parent);\n      \n      // Make sure commands dispatcher is ready\n      this.commands  = new wysihtml5.Commands(this.parent);\n\n      dom.copyAttributes([\n        \"className\", \"spellcheck\", \"title\", \"lang\", \"dir\", \"accessKey\"\n      ]).from(this.textarea.element).to(this.element);\n      \n      dom.addClass(this.element, this.config.composerClassName);\n\n      // Make the editor look like the original textarea, by syncing styles\n      if (this.config.style) {\n        this.style();\n      }\n\n      this.observe();\n\n      var name = this.config.name;\n      if (name) {\n        dom.addClass(this.element, name);\n        dom.addClass(this.iframe, name);\n      }\n\n      // Simulate html5 placeholder attribute on contentEditable element\n      var placeholderText = typeof(this.config.placeholder) === \"string\"\n        ? this.config.placeholder\n        : this.textarea.element.getAttribute(\"placeholder\");\n      if (placeholderText) {\n        dom.simulatePlaceholder(this.parent, this, placeholderText);\n      }\n      \n      // Make sure that the browser avoids using inline styles whenever possible\n      this.commands.exec(\"styleWithCSS\", false);\n\n      this._initAutoLinking();\n      this._initObjectResizing();\n      this._initUndoManager();\n\n      // Simulate html5 autofocus on contentEditable element\n      if (this.textarea.element.hasAttribute(\"autofocus\") || document.querySelector(\":focus\") == this.textarea.element) {\n        setTimeout(function() { that.focus(); }, 100);\n      }\n\n      wysihtml5.quirks.insertLineBreakOnReturn(this);\n\n      // IE sometimes leaves a single paragraph, which can't be removed by the user\n      if (!browser.clearsContentEditableCorrectly()) {\n        wysihtml5.quirks.ensureProperClearing(this);\n      }\n\n      if (!browser.clearsListsInContentEditableCorrectly()) {\n        wysihtml5.quirks.ensureProperClearingOfLists(this);\n      }\n\n      // Set up a sync that makes sure that textarea and editor have the same content\n      if (this.initSync && this.config.sync) {\n        this.initSync();\n      }\n\n      // Okay hide the textarea, we are ready to go\n      this.textarea.hide();\n\n      // Fire global (before-)load event\n      this.parent.fire(\"beforeload\").fire(\"load\");\n    },\n\n    _initAutoLinking: function() {\n      var that                           = this,\n          supportsDisablingOfAutoLinking = browser.canDisableAutoLinking(),\n          supportsAutoLinking            = browser.doesAutoLinkingInContentEditable();\n      if (supportsDisablingOfAutoLinking) {\n        this.commands.exec(\"autoUrlDetect\", false);\n      }\n\n      if (!this.config.autoLink) {\n        return;\n      }\n\n      // Only do the auto linking by ourselves when the browser doesn't support auto linking\n      // OR when he supports auto linking but we were able to turn it off (IE9+)\n      if (!supportsAutoLinking || (supportsAutoLinking && supportsDisablingOfAutoLinking)) {\n        this.parent.observe(\"newword:composer\", function() {\n          that.selection.executeAndRestore(function(startContainer, endContainer) {\n            dom.autoLink(endContainer.parentNode);\n          });\n        });\n      }\n\n      // Assuming we have the following:\n      //  <a href=\"../../../../www.google.de\">http://www.google.de</a>\n      // If a user now changes the url in the innerHTML we want to make sure that\n      // it's synchronized with the href attribute (as long as the innerHTML is still a url)\n      var // Use a live NodeList to check whether there are any links in the document\n          links           = this.sandbox.getDocument().getElementsByTagName(\"a\"),\n          // The autoLink helper method reveals a reg exp to detect correct urls\n          urlRegExp       = dom.autoLink.URL_REG_EXP,\n          getTextContent  = function(element) {\n            var textContent = wysihtml5.lang.string(dom.getTextContent(element)).trim();\n            if (textContent.substr(0, 4) === \"www.\") {\n              textContent = \"http://\" + textContent;\n            }\n            return textContent;\n          };\n\n      dom.observe(this.element, \"keydown\", function(event) {\n        if (!links.length) {\n          return;\n        }\n\n        var selectedNode = that.selection.getSelectedNode(event.target.ownerDocument),\n            link         = dom.getParentElement(selectedNode, { nodeName: \"A\" }, 4),\n            textContent;\n\n        if (!link) {\n          return;\n        }\n\n        textContent = getTextContent(link);\n        // keydown is fired before the actual content is changed\n        // therefore we set a timeout to change the href\n        setTimeout(function() {\n          var newTextContent = getTextContent(link);\n          if (newTextContent === textContent) {\n            return;\n          }\n\n          // Only set href when new href looks like a valid url\n          if (newTextContent.match(urlRegExp)) {\n            link.setAttribute(\"href\", newTextContent);\n          }\n        }, 0);\n      });\n    },\n\n    _initObjectResizing: function() {\n      var properties        = [\"width\", \"height\"],\n          propertiesLength  = properties.length,\n          element           = this.element;\n      \n      this.commands.exec(\"enableObjectResizing\", this.config.allowObjectResizing);\n      \n      if (this.config.allowObjectResizing) {\n         // IE sets inline styles after resizing objects\n         // The following lines make sure that the width/height css properties\n         // are copied over to the width/height attributes\n        if (browser.supportsEvent(\"resizeend\")) {\n          dom.observe(element, \"resizeend\", function(event) {\n            var target = event.target || event.srcElement,\n                style  = target.style,\n                i      = 0,\n                property;\n            for(; i<propertiesLength; i++) {\n              property = properties[i];\n              if (style[property]) {\n                target.setAttribute(property, parseInt(style[property], 10));\n                style[property] = \"\";\n              }\n            }\n            // After resizing IE sometimes forgets to remove the old resize handles\n            wysihtml5.quirks.redraw(element);\n          });\n        }\n      } else {\n        if (browser.supportsEvent(\"resizestart\")) {\n          dom.observe(element, \"resizestart\", function(event) { event.preventDefault(); });\n        }\n      }\n    },\n    \n    _initUndoManager: function() {\n      new wysihtml5.UndoManager(this.parent);\n    }\n  });\n})(wysihtml5);(function(wysihtml5) {\n  var dom             = wysihtml5.dom,\n      doc             = document,\n      win             = window,\n      HOST_TEMPLATE   = doc.createElement(\"div\"),\n      /**\n       * Styles to copy from textarea to the composer element\n       */\n      TEXT_FORMATTING = [\n        \"background-color\",\n        \"color\", \"cursor\",\n        \"font-family\", \"font-size\", \"font-style\", \"font-variant\", \"font-weight\",\n        \"line-height\", \"letter-spacing\",\n        \"text-align\", \"text-decoration\", \"text-indent\", \"text-rendering\",\n        \"word-break\", \"word-wrap\", \"word-spacing\"\n      ],\n      /**\n       * Styles to copy from textarea to the iframe\n       */\n      BOX_FORMATTING = [\n        \"background-color\",\n        \"border-collapse\",\n        \"border-bottom-color\", \"border-bottom-style\", \"border-bottom-width\",\n        \"border-left-color\", \"border-left-style\", \"border-left-width\",\n        \"border-right-color\", \"border-right-style\", \"border-right-width\",\n        \"border-top-color\", \"border-top-style\", \"border-top-width\",\n        \"clear\", \"display\", \"float\",\n        \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n        \"outline-color\", \"outline-offset\", \"outline-width\", \"outline-style\",\n        \"padding-left\", \"padding-right\", \"padding-top\", \"padding-bottom\",\n        \"position\", \"top\", \"left\", \"right\", \"bottom\", \"z-index\",\n        \"vertical-align\", \"text-align\",\n        \"-webkit-box-sizing\", \"-moz-box-sizing\", \"-ms-box-sizing\", \"box-sizing\",\n        \"-webkit-box-shadow\", \"-moz-box-shadow\", \"-ms-box-shadow\",\"box-shadow\",\n        \"-webkit-border-top-right-radius\", \"-moz-border-radius-topright\", \"border-top-right-radius\",\n        \"-webkit-border-bottom-right-radius\", \"-moz-border-radius-bottomright\", \"border-bottom-right-radius\",\n        \"-webkit-border-bottom-left-radius\", \"-moz-border-radius-bottomleft\", \"border-bottom-left-radius\",\n        \"-webkit-border-top-left-radius\", \"-moz-border-radius-topleft\", \"border-top-left-radius\",\n        \"width\", \"height\"\n      ],\n      /**\n       * Styles to sync while the window gets resized\n       */\n      RESIZE_STYLE = [\n        \"width\", \"height\",\n        \"top\", \"left\", \"right\", \"bottom\"\n      ],\n      ADDITIONAL_CSS_RULES = [\n        \"html             { height: 100%; }\",\n        \"body             { min-height: 100%; padding: 0; margin: 0; margin-top: -1px; padding-top: 1px; }\",\n        \"._wysihtml5-temp { display: none; }\",\n        wysihtml5.browser.isGecko ?\n          \"body.placeholder { color: graytext !important; }\" : \n          \"body.placeholder { color: #a9a9a9 !important; }\",\n        \"body[disabled]   { background-color: #eee !important; color: #999 !important; cursor: default !important; }\",\n        // Ensure that user see's broken images and can delete them\n        \"img:-moz-broken  { -moz-force-broken-image-icon: 1; height: 24px; width: 24px; }\"\n      ];\n  \n  /**\n   * With \"setActive\" IE offers a smart way of focusing elements without scrolling them into view:\n   * http://msdn.microsoft.com/en-us/library/ms536738(v=vs.85).aspx\n   *\n   * Other browsers need a more hacky way: (pssst don't tell my mama)\n   * In order to prevent the element being scrolled into view when focusing it, we simply\n   * move it out of the scrollable area, focus it, and reset it's position\n   */\n  var focusWithoutScrolling = function(element) {\n    if (element.setActive) {\n      // Following line could cause a js error when the textarea is invisible\n      // See https://github.com/xing/wysihtml5/issues/9\n      try { element.setActive(); } catch(e) {}\n    } else {\n      var elementStyle = element.style,\n          originalScrollTop = doc.documentElement.scrollTop || doc.body.scrollTop,\n          originalScrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft,\n          originalStyles = {\n            position:         elementStyle.position,\n            top:              elementStyle.top,\n            left:             elementStyle.left,\n            WebkitUserSelect: elementStyle.WebkitUserSelect\n          };\n      \n      dom.setStyles({\n        position:         \"absolute\",\n        top:              \"-99999px\",\n        left:             \"-99999px\",\n        // Don't ask why but temporarily setting -webkit-user-select to none makes the whole thing performing smoother\n        WebkitUserSelect: \"none\"\n      }).on(element);\n      \n      element.focus();\n      \n      dom.setStyles(originalStyles).on(element);\n      \n      if (win.scrollTo) {\n        // Some browser extensions unset this method to prevent annoyances\n        // \"Better PopUp Blocker\" for Chrome http://code.google.com/p/betterpopupblocker/source/browse/trunk/blockStart.js#100\n        // Issue: http://code.google.com/p/betterpopupblocker/issues/detail?id=1\n        win.scrollTo(originalScrollLeft, originalScrollTop);\n      }\n    }\n  };\n  \n  \n  wysihtml5.views.Composer.prototype.style = function() {\n    var that                  = this,\n        originalActiveElement = doc.querySelector(\":focus\"),\n        textareaElement       = this.textarea.element,\n        hasPlaceholder        = textareaElement.hasAttribute(\"placeholder\"),\n        originalPlaceholder   = hasPlaceholder && textareaElement.getAttribute(\"placeholder\");\n    this.focusStylesHost      = this.focusStylesHost  || HOST_TEMPLATE.cloneNode(false);\n    this.blurStylesHost       = this.blurStylesHost   || HOST_TEMPLATE.cloneNode(false);\n  \n    // Remove placeholder before copying (as the placeholder has an affect on the computed style)\n    if (hasPlaceholder) {\n      textareaElement.removeAttribute(\"placeholder\");\n    }\n  \n    if (textareaElement === originalActiveElement) {\n      textareaElement.blur();\n    }\n  \n    // --------- iframe styles (has to be set before editor styles, otherwise IE9 sets wrong fontFamily on blurStylesHost) ---------\n    dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.iframe).andTo(this.blurStylesHost);\n  \n    // --------- editor styles ---------\n    dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.element).andTo(this.blurStylesHost);\n  \n    // --------- apply standard rules ---------\n    dom.insertCSS(ADDITIONAL_CSS_RULES).into(this.element.ownerDocument);\n  \n    // --------- :focus styles ---------\n    focusWithoutScrolling(textareaElement);\n    dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.focusStylesHost);\n    dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.focusStylesHost);\n  \n    // Make sure that we don't change the display style of the iframe when copying styles oblur/onfocus\n    // this is needed for when the change_view event is fired where the iframe is hidden and then\n    // the blur event fires and re-displays it\n    var boxFormattingStyles = wysihtml5.lang.array(BOX_FORMATTING).without([\"display\"]);\n  \n    // --------- restore focus ---------\n    if (originalActiveElement) {\n      originalActiveElement.focus();\n    } else {\n      textareaElement.blur();\n    }\n  \n    // --------- restore placeholder ---------\n    if (hasPlaceholder) {\n      textareaElement.setAttribute(\"placeholder\", originalPlaceholder);\n    }\n  \n    // When copying styles, we only get the computed style which is never returned in percent unit\n    // Therefore we've to recalculate style onresize\n    if (!wysihtml5.browser.hasCurrentStyleProperty()) {\n      var winObserver = dom.observe(win, \"resize\", function() {\n        // Remove event listener if composer doesn't exist anymore\n        if (!dom.contains(document.documentElement, that.iframe)) {\n          winObserver.stop();\n          return;\n        }\n        var originalTextareaDisplayStyle = dom.getStyle(\"display\").from(textareaElement),\n            originalComposerDisplayStyle = dom.getStyle(\"display\").from(that.iframe);\n        textareaElement.style.display = \"\";\n        that.iframe.style.display = \"none\";\n        dom.copyStyles(RESIZE_STYLE)\n          .from(textareaElement)\n          .to(that.iframe)\n          .andTo(that.focusStylesHost)\n          .andTo(that.blurStylesHost);\n        that.iframe.style.display = originalComposerDisplayStyle;\n        textareaElement.style.display = originalTextareaDisplayStyle;\n      });\n    }\n  \n    // --------- Sync focus/blur styles ---------\n    this.parent.observe(\"focus:composer\", function() {\n      dom.copyStyles(boxFormattingStyles) .from(that.focusStylesHost).to(that.iframe);\n      dom.copyStyles(TEXT_FORMATTING)     .from(that.focusStylesHost).to(that.element);\n    });\n\n    this.parent.observe(\"blur:composer\", function() {\n      dom.copyStyles(boxFormattingStyles) .from(that.blurStylesHost).to(that.iframe);\n      dom.copyStyles(TEXT_FORMATTING)     .from(that.blurStylesHost).to(that.element);\n    });\n  \n    return this;\n  };\n})(wysihtml5);/**\n * Taking care of events\n *  - Simulating 'change' event on contentEditable element\n *  - Handling drag & drop logic\n *  - Catch paste events\n *  - Dispatch proprietary newword:composer event\n *  - Keyboard shortcuts\n */\n(function(wysihtml5) {\n  var dom       = wysihtml5.dom,\n      browser   = wysihtml5.browser,\n      /**\n       * Map keyCodes to query commands\n       */\n      shortcuts = {\n        \"66\": \"bold\",     // B\n        \"73\": \"italic\",   // I\n        \"85\": \"underline\" // U\n      };\n  \n  wysihtml5.views.Composer.prototype.observe = function() {\n    var that                = this,\n        state               = this.getValue(),\n        iframe              = this.sandbox.getIframe(),\n        element             = this.element,\n        focusBlurElement    = browser.supportsEventsInIframeCorrectly() ? element : this.sandbox.getWindow(),\n        // Firefox < 3.5 doesn't support the drop event, instead it supports a so called \"dragdrop\" event which behaves almost the same\n        pasteEvents         = browser.supportsEvent(\"drop\") ? [\"drop\", \"paste\"] : [\"dragdrop\", \"paste\"];\n\n    // --------- destroy:composer event ---------\n    dom.observe(iframe, \"DOMNodeRemoved\", function() {\n      clearInterval(domNodeRemovedInterval);\n      that.parent.fire(\"destroy:composer\");\n    });\n\n    // DOMNodeRemoved event is not supported in IE 8\n    var domNodeRemovedInterval = setInterval(function() {\n      if (!dom.contains(document.documentElement, iframe)) {\n        clearInterval(domNodeRemovedInterval);\n        that.parent.fire(\"destroy:composer\");\n      }\n    }, 250);\n\n\n    // --------- Focus & blur logic ---------\n    dom.observe(focusBlurElement, \"focus\", function() {\n      that.parent.fire(\"focus\").fire(\"focus:composer\");\n\n      // Delay storing of state until all focus handler are fired\n      // especially the one which resets the placeholder\n      setTimeout(function() { state = that.getValue(); }, 0);\n    });\n\n    dom.observe(focusBlurElement, \"blur\", function() {\n      if (state !== that.getValue()) {\n        that.parent.fire(\"change\").fire(\"change:composer\");\n      }\n      that.parent.fire(\"blur\").fire(\"blur:composer\");\n    });\n    \n    if (wysihtml5.browser.isIos()) {\n      // When on iPad/iPhone/IPod after clicking outside of editor, the editor loses focus\n      // but the UI still acts as if the editor has focus (blinking caret and onscreen keyboard visible)\n      // We prevent that by focusing a temporary input element which immediately loses focus\n      dom.observe(element, \"blur\", function() {\n        var input = element.ownerDocument.createElement(\"input\"),\n            originalScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n            originalScrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n        try {\n          that.selection.insertNode(input);\n        } catch(e) {\n          element.appendChild(input);\n        }\n        input.focus();\n        input.parentNode.removeChild(input);\n        \n        window.scrollTo(originalScrollLeft, originalScrollTop);\n      });\n    }\n\n    // --------- Drag & Drop logic ---------\n    dom.observe(element, \"dragenter\", function() {\n      that.parent.fire(\"unset_placeholder\");\n    });\n\n    if (browser.firesOnDropOnlyWhenOnDragOverIsCancelled()) {\n      dom.observe(element, [\"dragover\", \"dragenter\"], function(event) {\n        event.preventDefault();\n      });\n    }\n\n    dom.observe(element, pasteEvents, function(event) {\n      var dataTransfer = event.dataTransfer,\n          data;\n\n      if (dataTransfer && browser.supportsDataTransfer()) {\n        data = dataTransfer.getData(\"text/html\") || dataTransfer.getData(\"text/plain\");\n      }\n      if (data) {\n        element.focus();\n        that.commands.exec(\"insertHTML\", data);\n        that.parent.fire(\"paste\").fire(\"paste:composer\");\n        event.stopPropagation();\n        event.preventDefault();\n      } else {\n        setTimeout(function() {\n          that.parent.fire(\"paste\").fire(\"paste:composer\");\n        }, 0);\n      }\n    });\n\n    // --------- neword event ---------\n    dom.observe(element, \"keyup\", function(event) {\n      var keyCode = event.keyCode;\n      if (keyCode === wysihtml5.SPACE_KEY || keyCode === wysihtml5.ENTER_KEY) {\n        that.parent.fire(\"newword:composer\");\n      }\n    });\n\n    this.parent.observe(\"paste:composer\", function() {\n      setTimeout(function() { that.parent.fire(\"newword:composer\"); }, 0);\n    });\n\n    // --------- Make sure that images are selected when clicking on them ---------\n    if (!browser.canSelectImagesInContentEditable()) {\n      dom.observe(element, \"mousedown\", function(event) {\n        var target = event.target;\n        if (target.nodeName === \"IMG\") {\n          that.selection.selectNode(target);\n          event.preventDefault();\n        }\n      });\n    }\n    \n    // --------- Shortcut logic ---------\n    dom.observe(element, \"keydown\", function(event) {\n      var keyCode  = event.keyCode,\n          command  = shortcuts[keyCode];\n      if ((event.ctrlKey || event.metaKey) && !event.altKey && command) {\n        that.commands.exec(command);\n        event.preventDefault();\n      }\n    });\n\n    // --------- Make sure that when pressing backspace/delete on selected images deletes the image and it's anchor ---------\n    dom.observe(element, \"keydown\", function(event) {\n      var target  = that.selection.getSelectedNode(true),\n          keyCode = event.keyCode,\n          parent;\n      if (target && target.nodeName === \"IMG\" && (keyCode === wysihtml5.BACKSPACE_KEY || keyCode === wysihtml5.DELETE_KEY)) { // 8 => backspace, 46 => delete\n        parent = target.parentNode;\n        // delete the <img>\n        parent.removeChild(target);\n        // and it's parent <a> too if it hasn't got any other child nodes\n        if (parent.nodeName === \"A\" && !parent.firstChild) {\n          parent.parentNode.removeChild(parent);\n        }\n\n        setTimeout(function() { wysihtml5.quirks.redraw(element); }, 0);\n        event.preventDefault();\n      }\n    });\n\n    // --------- Show url in tooltip when hovering links or images ---------\n    var titlePrefixes = {\n      IMG: \"Image: \",\n      A:   \"Link: \"\n    };\n    \n    dom.observe(element, \"mouseover\", function(event) {\n      var target   = event.target,\n          nodeName = target.nodeName,\n          title;\n      if (nodeName !== \"A\" && nodeName !== \"IMG\") {\n        return;\n      }\n      var hasTitle = target.hasAttribute(\"title\");\n      if(!hasTitle){\n        title = titlePrefixes[nodeName] + (target.getAttribute(\"href\") || target.getAttribute(\"src\"));\n        target.setAttribute(\"title\", title);\n      }\n    });\n  };\n})(wysihtml5);/**\n * Class that takes care that the value of the composer and the textarea is always in sync\n */\n(function(wysihtml5) {\n  var INTERVAL = 400;\n  \n  wysihtml5.views.Synchronizer = Base.extend(\n    /** @scope wysihtml5.views.Synchronizer.prototype */ {\n\n    constructor: function(editor, textarea, composer) {\n      this.editor   = editor;\n      this.textarea = textarea;\n      this.composer = composer;\n\n      this._observe();\n    },\n\n    /**\n     * Sync html from composer to textarea\n     * Takes care of placeholders\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the textarea\n     */\n    fromComposerToTextarea: function(shouldParseHtml) {\n      this.textarea.setValue(wysihtml5.lang.string(this.composer.getValue()).trim(), shouldParseHtml);\n    },\n\n    /**\n     * Sync value of textarea to composer\n     * Takes care of placeholders\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer\n     */\n    fromTextareaToComposer: function(shouldParseHtml) {\n      var textareaValue = this.textarea.getValue();\n      if (textareaValue) {\n        this.composer.setValue(textareaValue, shouldParseHtml);\n      } else {\n        this.composer.clear();\n        this.editor.fire(\"set_placeholder\");\n      }\n    },\n\n    /**\n     * Invoke syncing based on view state\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer/textarea\n     */\n    sync: function(shouldParseHtml) {\n      if (this.editor.currentView.name === \"textarea\") {\n        this.fromTextareaToComposer(shouldParseHtml);\n      } else {\n        this.fromComposerToTextarea(shouldParseHtml);\n      }\n    },\n\n    /**\n     * Initializes interval-based syncing\n     * also makes sure that on-submit the composer's content is synced with the textarea\n     * immediately when the form gets submitted\n     */\n    _observe: function() {\n      var interval,\n          that          = this,\n          form          = this.textarea.element.form,\n          startInterval = function() {\n            interval = setInterval(function() { that.fromComposerToTextarea(); }, INTERVAL);\n          },\n          stopInterval  = function() {\n            clearInterval(interval);\n            interval = null;\n          };\n\n      startInterval();\n\n      if (form) {\n        // If the textarea is in a form make sure that after onreset and onsubmit the composer\n        // has the correct state\n        wysihtml5.dom.observe(form, \"submit\", function() {\n          that.sync(true);\n        });\n        wysihtml5.dom.observe(form, \"reset\", function() {\n          setTimeout(function() { that.fromTextareaToComposer(); }, 0);\n        });\n      }\n\n      this.editor.observe(\"change_view\", function(view) {\n        if (view === \"composer\" && !interval) {\n          that.fromTextareaToComposer(true);\n          startInterval();\n        } else if (view === \"textarea\") {\n          that.fromComposerToTextarea(true);\n          stopInterval();\n        }\n      });\n\n      this.editor.observe(\"destroy:composer\", stopInterval);\n    }\n  });\n})(wysihtml5);\nwysihtml5.views.Textarea = wysihtml5.views.View.extend(\n  /** @scope wysihtml5.views.Textarea.prototype */ {\n  name: \"textarea\",\n  \n  constructor: function(parent, textareaElement, config) {\n    this.base(parent, textareaElement, config);\n    \n    this._observe();\n  },\n  \n  clear: function() {\n    this.element.value = \"\";\n  },\n  \n  getValue: function(parse) {\n    var value = this.isEmpty() ? \"\" : this.element.value;\n    if (parse) {\n      value = this.parent.parse(value);\n    }\n    return value;\n  },\n  \n  setValue: function(html, parse) {\n    if (parse) {\n      html = this.parent.parse(html);\n    }\n    this.element.value = html;\n  },\n  \n  hasPlaceholderSet: function() {\n    var supportsPlaceholder = wysihtml5.browser.supportsPlaceholderAttributeOn(this.element),\n        placeholderText     = this.element.getAttribute(\"placeholder\") || null,\n        value               = this.element.value,\n        isEmpty             = !value;\n    return (supportsPlaceholder && isEmpty) || (value === placeholderText);\n  },\n  \n  isEmpty: function() {\n    return !wysihtml5.lang.string(this.element.value).trim() || this.hasPlaceholderSet();\n  },\n  \n  _observe: function() {\n    var element = this.element,\n        parent  = this.parent,\n        eventMapping = {\n          focusin:  \"focus\",\n          focusout: \"blur\"\n        },\n        /**\n         * Calling focus() or blur() on an element doesn't synchronously trigger the attached focus/blur events\n         * This is the case for focusin and focusout, so let's use them whenever possible, kkthxbai\n         */\n        events = wysihtml5.browser.supportsEvent(\"focusin\") ? [\"focusin\", \"focusout\", \"change\"] : [\"focus\", \"blur\", \"change\"];\n    \n    parent.observe(\"beforeload\", function() {\n      wysihtml5.dom.observe(element, events, function(event) {\n        var eventName = eventMapping[event.type] || event.type;\n        parent.fire(eventName).fire(eventName + \":textarea\");\n      });\n      \n      wysihtml5.dom.observe(element, [\"paste\", \"drop\"], function() {\n        setTimeout(function() { parent.fire(\"paste\").fire(\"paste:textarea\"); }, 0);\n      });\n    });\n  }\n});/**\n * Toolbar Dialog\n *\n * @param {Element} link The toolbar link which causes the dialog to show up\n * @param {Element} container The dialog container\n *\n * @example\n *    <!-- Toolbar link -->\n *    <a data-wysihtml5-command=\"insertImage\">insert an image</a>\n *\n *    <!-- Dialog -->\n *    <div data-wysihtml5-dialog=\"insertImage\" style=\"display: none;\">\n *      <label>\n *        URL: <input data-wysihtml5-dialog-field=\"src\" value=\"http://\">\n *      </label>\n *      <label>\n *        Alternative text: <input data-wysihtml5-dialog-field=\"alt\" value=\"\">\n *      </label>\n *    </div>\n *\n *    <script>\n *      var dialog = new wysihtml5.toolbar.Dialog(\n *        document.querySelector(\"[data-wysihtml5-command='insertImage']\"),\n *        document.querySelector(\"[data-wysihtml5-dialog='insertImage']\")\n *      );\n *      dialog.observe(\"save\", function(attributes) {\n *        // do something\n *      });\n *    </script>\n */\n(function(wysihtml5) {\n  var dom                     = wysihtml5.dom,\n      CLASS_NAME_OPENED       = \"wysihtml5-command-dialog-opened\",\n      SELECTOR_FORM_ELEMENTS  = \"input, select, textarea\",\n      SELECTOR_FIELDS         = \"[data-wysihtml5-dialog-field]\",\n      ATTRIBUTE_FIELDS        = \"data-wysihtml5-dialog-field\";\n      \n  \n  wysihtml5.toolbar.Dialog = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.toolbar.Dialog.prototype */ {\n    constructor: function(link, container) {\n      this.link       = link;\n      this.container  = container;\n    },\n\n    _observe: function() {\n      if (this._observed) {\n        return;\n      }\n      \n      var that = this,\n          callbackWrapper = function(event) {\n            var attributes = that._serialize();\n            if (attributes == that.elementToChange) {\n              that.fire(\"edit\", attributes);\n            } else {\n              that.fire(\"save\", attributes);\n            }\n            that.hide();\n            event.preventDefault();\n            event.stopPropagation();\n          };\n\n      dom.observe(that.link, \"click\", function(event) {\n        if (dom.hasClass(that.link, CLASS_NAME_OPENED)) {\n          setTimeout(function() { that.hide(); }, 0);\n        }\n      });\n\n      dom.observe(this.container, \"keydown\", function(event) {\n        var keyCode = event.keyCode;\n        if (keyCode === wysihtml5.ENTER_KEY) {\n          callbackWrapper(event);\n        }\n        if (keyCode === wysihtml5.ESCAPE_KEY) {\n          that.hide();\n        }\n      });\n\n      dom.delegate(this.container, \"[data-wysihtml5-dialog-action=save]\", \"click\", callbackWrapper);\n\n      dom.delegate(this.container, \"[data-wysihtml5-dialog-action=cancel]\", \"click\", function(event) {\n        that.fire(\"cancel\");\n        that.hide();\n        event.preventDefault();\n        event.stopPropagation();\n      });\n\n      var formElements  = this.container.querySelectorAll(SELECTOR_FORM_ELEMENTS),\n          i             = 0,\n          length        = formElements.length,\n          _clearInterval = function() { clearInterval(that.interval); };\n      for (; i<length; i++) {\n        dom.observe(formElements[i], \"change\", _clearInterval);\n      }\n\n      this._observed = true;\n    },\n\n    /**\n     * Grabs all fields in the dialog and puts them in key=>value style in an object which\n     * then gets returned\n     */\n    _serialize: function() {\n      var data    = this.elementToChange || {},\n          fields  = this.container.querySelectorAll(SELECTOR_FIELDS),\n          length  = fields.length,\n          i       = 0;\n      for (; i<length; i++) {\n        data[fields[i].getAttribute(ATTRIBUTE_FIELDS)] = fields[i].value;\n      }\n      return data;\n    },\n\n    /**\n     * Takes the attributes of the \"elementToChange\"\n     * and inserts them in their corresponding dialog input fields\n     * \n     * Assume the \"elementToChange\" looks like this:\n     *    <a href=\"../../../../www.google.com\" target=\"_blank\">foo</a>\n     *\n     * and we have the following dialog:\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"href\" value=\"\">\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"target\" value=\"\">\n     * \n     * after calling _interpolate() the dialog will look like this\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"href\" value=\"http://www.google.com\">\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"target\" value=\"_blank\">\n     *\n     * Basically it adopted the attribute values into the corresponding input fields\n     *\n     */\n    _interpolate: function(avoidHiddenFields) {\n      var field,\n          fieldName,\n          newValue,\n          focusedElement = document.querySelector(\":focus\"),\n          fields         = this.container.querySelectorAll(SELECTOR_FIELDS),\n          length         = fields.length,\n          i              = 0;\n      for (; i<length; i++) {\n        field = fields[i];\n        \n        // Never change elements where the user is currently typing in\n        if (field === focusedElement) {\n          continue;\n        }\n        \n        // Don't update hidden fields\n        // See https://github.com/xing/wysihtml5/pull/14\n        if (avoidHiddenFields && field.type === \"hidden\") {\n          continue;\n        }\n        \n        fieldName = field.getAttribute(ATTRIBUTE_FIELDS);\n        newValue  = this.elementToChange ? (this.elementToChange[fieldName] || \"\") : field.defaultValue;\n        field.value = newValue;\n      }\n    },\n\n    /**\n     * Show the dialog element\n     */\n    show: function(elementToChange) {\n      var that        = this,\n          firstField  = this.container.querySelector(SELECTOR_FORM_ELEMENTS);\n      this.elementToChange = elementToChange;\n      this._observe();\n      this._interpolate();\n      if (elementToChange) {\n        this.interval = setInterval(function() { that._interpolate(true); }, 500);\n      }\n      dom.addClass(this.link, CLASS_NAME_OPENED);\n      this.container.style.display = \"\";\n      this.fire(\"show\");\n      if (firstField && !elementToChange) {\n        try {\n          firstField.focus();\n        } catch(e) {}\n      }\n    },\n\n    /**\n     * Hide the dialog element\n     */\n    hide: function() {\n      clearInterval(this.interval);\n      this.elementToChange = null;\n      dom.removeClass(this.link, CLASS_NAME_OPENED);\n      this.container.style.display = \"none\";\n      this.fire(\"hide\");\n    }\n  });\n})(wysihtml5);\n/**\n * Converts speech-to-text and inserts this into the editor\n * As of now (2011/03/25) this only is supported in Chrome >= 11\n *\n * Note that it sends the recorded audio to the google speech recognition api:\n * http://stackoverflow.com/questions/4361826/does-chrome-have-buil-in-speech-recognition-for-input-type-text-x-webkit-speec\n *\n * Current HTML5 draft can be found here\n * http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html\n * \n * \"Accessing Google Speech API Chrome 11\"\n * http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  var linkStyles = {\n    position: \"relative\"\n  };\n  \n  var wrapperStyles = {\n    left:     0,\n    margin:   0,\n    opacity:  0,\n    overflow: \"hidden\",\n    padding:  0,\n    position: \"absolute\",\n    top:      0,\n    zIndex:   1\n  };\n  \n  var inputStyles = {\n    cursor:     \"inherit\",\n    fontSize:   \"50px\",\n    height:     \"50px\",\n    marginTop:  \"-25px\",\n    outline:    0,\n    padding:    0,\n    position:   \"absolute\",\n    right:      \"-4px\",\n    top:        \"50%\"\n  };\n  \n  var inputAttributes = {\n    \"x-webkit-speech\": \"\",\n    \"speech\":          \"\"\n  };\n  \n  wysihtml5.toolbar.Speech = function(parent, link) {\n    var input = document.createElement(\"input\");\n    if (!wysihtml5.browser.supportsSpeechApiOn(input)) {\n      link.style.display = \"none\";\n      return;\n    }\n    \n    var wrapper = document.createElement(\"div\");\n    \n    wysihtml5.lang.object(wrapperStyles).merge({\n      width:  link.offsetWidth  + \"px\",\n      height: link.offsetHeight + \"px\"\n    });\n    \n    dom.insert(input).into(wrapper);\n    dom.insert(wrapper).into(link);\n    \n    dom.setStyles(inputStyles).on(input);\n    dom.setAttributes(inputAttributes).on(input)\n    \n    dom.setStyles(wrapperStyles).on(wrapper);\n    dom.setStyles(linkStyles).on(link);\n    \n    var eventName = \"onwebkitspeechchange\" in input ? \"webkitspeechchange\" : \"speechchange\";\n    dom.observe(input, eventName, function() {\n      parent.execCommand(\"insertText\", input.value);\n      input.value = \"\";\n    });\n    \n    dom.observe(input, \"click\", function(event) {\n      if (dom.hasClass(link, \"wysihtml5-command-disabled\")) {\n        event.preventDefault();\n      }\n      \n      event.stopPropagation();\n    });\n  };\n})(wysihtml5);/**\n * Toolbar\n *\n * @param {Object} parent Reference to instance of Editor instance\n * @param {Element} container Reference to the toolbar container element\n *\n * @example\n *    <div id=\"toolbar\">\n *      <a data-wysihtml5-command=\"createLink\">insert link</a>\n *      <a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h1\">insert h1</a>\n *    </div>\n *\n *    <script>\n *      var toolbar = new wysihtml5.toolbar.Toolbar(editor, document.getElementById(\"toolbar\"));\n *    </script>\n */\n(function(wysihtml5) {\n  var CLASS_NAME_COMMAND_DISABLED   = \"wysihtml5-command-disabled\",\n      CLASS_NAME_COMMANDS_DISABLED  = \"wysihtml5-commands-disabled\",\n      CLASS_NAME_COMMAND_ACTIVE     = \"wysihtml5-command-active\",\n      CLASS_NAME_ACTION_ACTIVE      = \"wysihtml5-action-active\",\n      dom                           = wysihtml5.dom;\n  \n  wysihtml5.toolbar.Toolbar = Base.extend(\n    /** @scope wysihtml5.toolbar.Toolbar.prototype */ {\n    constructor: function(editor, container) {\n      this.editor     = editor;\n      this.container  = typeof(container) === \"string\" ? document.getElementById(container) : container;\n      this.composer   = editor.composer;\n\n      this._getLinks(\"command\");\n      this._getLinks(\"action\");\n\n      this._observe();\n      this.show();\n      \n      var speechInputLinks  = this.container.querySelectorAll(\"[data-wysihtml5-command=insertSpeech]\"),\n          length            = speechInputLinks.length,\n          i                 = 0;\n      for (; i<length; i++) {\n        new wysihtml5.toolbar.Speech(this, speechInputLinks[i]);\n      }\n    },\n\n    _getLinks: function(type) {\n      var links   = this[type + \"Links\"] = wysihtml5.lang.array(this.container.querySelectorAll(\"[data-wysihtml5-\" + type + \"]\")).get(),\n          length  = links.length,\n          i       = 0,\n          mapping = this[type + \"Mapping\"] = {},\n          link,\n          group,\n          name,\n          value,\n          dialog;\n      for (; i<length; i++) {\n        link    = links[i];\n        name    = link.getAttribute(\"data-wysihtml5-\" + type);\n        value   = link.getAttribute(\"data-wysihtml5-\" + type + \"-value\");\n        group   = this.container.querySelector(\"[data-wysihtml5-\" + type + \"-group='\" + name + \"']\");\n        dialog  = this._getDialog(link, name);\n        \n        mapping[name + \":\" + value] = {\n          link:   link,\n          group:  group,\n          name:   name,\n          value:  value,\n          dialog: dialog,\n          state:  false\n        };\n      }\n    },\n\n    _getDialog: function(link, command) {\n      var that          = this,\n          dialogElement = this.container.querySelector(\"[data-wysihtml5-dialog='\" + command + \"']\"),\n          dialog,\n          caretBookmark;\n      \n      if (dialogElement) {\n        dialog = new wysihtml5.toolbar.Dialog(link, dialogElement);\n\n        dialog.observe(\"show\", function() {\n          caretBookmark = that.composer.selection.getBookmark();\n\n          that.editor.fire(\"show:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n\n        dialog.observe(\"save\", function(attributes) {\n          if (caretBookmark) {\n            that.composer.selection.setBookmark(caretBookmark);\n          }\n          that._execCommand(command, attributes);\n          \n          that.editor.fire(\"save:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n\n        dialog.observe(\"cancel\", function() {\n          that.editor.focus(false);\n          that.editor.fire(\"cancel:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n      }\n      return dialog;\n    },\n\n    /**\n     * @example\n     *    var toolbar = new wysihtml5.Toolbar();\n     *    // Insert a <blockquote> element or wrap current selection in <blockquote>\n     *    toolbar.execCommand(\"formatBlock\", \"blockquote\");\n     */\n    execCommand: function(command, commandValue) {\n      if (this.commandsDisabled) {\n        return;\n      }\n\n      var commandObj = this.commandMapping[command + \":\" + commandValue];\n\n      // Show dialog when available\n      if (commandObj && commandObj.dialog && !commandObj.state) {\n        commandObj.dialog.show();\n      } else {\n        this._execCommand(command, commandValue);\n      }\n    },\n\n    _execCommand: function(command, commandValue) {\n      // Make sure that composer is focussed (false => don't move caret to the end)\n      this.editor.focus(false);\n\n      this.composer.commands.exec(command, commandValue);\n      this._updateLinkStates();\n    },\n\n    execAction: function(action) {\n      var editor = this.editor;\n      switch(action) {\n        case \"change_view\":\n          if (editor.currentView === editor.textarea) {\n            editor.fire(\"change_view\", \"composer\");\n          } else {\n            editor.fire(\"change_view\", \"textarea\");\n          }\n          break;\n      }\n    },\n\n    _observe: function() {\n      var that      = this,\n          editor    = this.editor,\n          container = this.container,\n          links     = this.commandLinks.concat(this.actionLinks),\n          length    = links.length,\n          i         = 0;\n      \n      for (; i<length; i++) {\n        // 'javascript:;' and unselectable=on Needed for IE, but done in all browsers to make sure that all get the same css applied\n        // (you know, a:link { ... } doesn't match anchors with missing href attribute)\n        dom.setAttributes({\n          href:         \"javascript:;\",\n          unselectable: \"on\"\n        }).on(links[i]);\n      }\n\n      // Needed for opera\n      dom.delegate(container, \"[data-wysihtml5-command]\", \"mousedown\", function(event) { event.preventDefault(); });\n      \n      dom.delegate(container, \"[data-wysihtml5-command]\", \"click\", function(event) {\n        var link          = this,\n            command       = link.getAttribute(\"data-wysihtml5-command\"),\n            commandValue  = link.getAttribute(\"data-wysihtml5-command-value\");\n        that.execCommand(command, commandValue);\n        event.preventDefault();\n      });\n\n      dom.delegate(container, \"[data-wysihtml5-action]\", \"click\", function(event) {\n        var action = this.getAttribute(\"data-wysihtml5-action\");\n        that.execAction(action);\n        event.preventDefault();\n      });\n\n      editor.observe(\"focus:composer\", function() {\n        that.bookmark = null;\n        clearInterval(that.interval);\n        that.interval = setInterval(function() { that._updateLinkStates(); }, 500);\n      });\n\n      editor.observe(\"blur:composer\", function() {\n        clearInterval(that.interval);\n      });\n\n      editor.observe(\"destroy:composer\", function() {\n        clearInterval(that.interval);\n      });\n\n      editor.observe(\"change_view\", function(currentView) {\n        // Set timeout needed in order to let the blur event fire first\n        setTimeout(function() {\n          that.commandsDisabled = (currentView !== \"composer\");\n          that._updateLinkStates();\n          if (that.commandsDisabled) {\n            dom.addClass(container, CLASS_NAME_COMMANDS_DISABLED);\n          } else {\n            dom.removeClass(container, CLASS_NAME_COMMANDS_DISABLED);\n          }\n        }, 0);\n      });\n    },\n\n    _updateLinkStates: function() {\n      var element           = this.composer.element,\n          commandMapping    = this.commandMapping,\n          actionMapping     = this.actionMapping,\n          i,\n          state,\n          action,\n          command;\n      // every millisecond counts... this is executed quite often\n      for (i in commandMapping) {\n        command = commandMapping[i];\n        if (this.commandsDisabled) {\n          state = false;\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            command.dialog.hide();\n          }\n        } else {\n          state = this.composer.commands.state(command.name, command.value);\n          if (wysihtml5.lang.object(state).isArray()) {\n            // Grab first and only object/element in state array, otherwise convert state into boolean\n            // to avoid showing a dialog for multiple selected elements which may have different attributes\n            // eg. when two links with different href are selected, the state will be an array consisting of both link elements\n            // but the dialog interface can only update one\n            state = state.length === 1 ? state[0] : true;\n          }\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_DISABLED);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_DISABLED);\n          }\n        }\n\n        if (command.state === state) {\n          continue;\n        }\n\n        command.state = state;\n        if (state) {\n          dom.addClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.addClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            if (typeof(state) === \"object\") {\n              command.dialog.show(state);\n            } else {\n              command.dialog.hide();\n            }\n          }\n        } else {\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            command.dialog.hide();\n          }\n        }\n      }\n      \n      for (i in actionMapping) {\n        action = actionMapping[i];\n        \n        if (action.name === \"change_view\") {\n          action.state = this.editor.currentView === this.editor.textarea;\n          if (action.state) {\n            dom.addClass(action.link, CLASS_NAME_ACTION_ACTIVE);\n          } else {\n            dom.removeClass(action.link, CLASS_NAME_ACTION_ACTIVE);\n          }\n        }\n      }\n    },\n\n    show: function() {\n      this.container.style.display = \"\";\n    },\n\n    hide: function() {\n      this.container.style.display = \"none\";\n    }\n  });\n  \n})(wysihtml5);\n/**\n * WYSIHTML5 Editor\n *\n * @param {Element} textareaElement Reference to the textarea which should be turned into a rich text interface\n * @param {Object} [config] See defaultConfig object below for explanation of each individual config option\n *\n * @events\n *    load\n *    beforeload (for internal use only)\n *    focus\n *    focus:composer\n *    focus:textarea\n *    blur\n *    blur:composer\n *    blur:textarea\n *    change\n *    change:composer\n *    change:textarea\n *    paste\n *    paste:composer\n *    paste:textarea\n *    newword:composer\n *    destroy:composer\n *    undo:composer\n *    redo:composer\n *    beforecommand:composer\n *    aftercommand:composer\n *    change_view\n */\n(function(wysihtml5) {\n  var undef;\n  \n  var defaultConfig = {\n    // Give the editor a name, the name will also be set as class name on the iframe and on the iframe's body \n    name:                 undef,\n    // Whether the editor should look like the textarea (by adopting styles)\n    style:                true,\n    // Id of the toolbar element, pass falsey value if you don't want any toolbar logic\n    toolbar:              undef,\n    // Whether urls, entered by the user should automatically become clickable-links\n    autoLink:             true,\n    // Object which includes parser rules to apply when html gets inserted via copy & paste\n    // See parser_rules/*.js for examples\n    parserRules:          { tags: { br: {}, span: {}, div: {}, p: {} }, classes: {} },\n    // Parser method to use when the user inserts content via copy & paste\n    parser:               wysihtml5.dom.parse,\n    // Class name which should be set on the contentEditable element in the created sandbox iframe, can be styled via the 'stylesheets' option\n    composerClassName:    \"wysihtml5-editor\",\n    // Class name to add to the body when the wysihtml5 editor is supported\n    bodyClassName:        \"wysihtml5-supported\",\n    // Array (or single string) of stylesheet urls to be loaded in the editor's iframe\n    stylesheets:          [],\n    // Placeholder text to use, defaults to the placeholder attribute on the textarea element\n    placeholderText:      undef,\n    // Whether the composer should allow the user to manually resize images, tables etc.\n    allowObjectResizing:  true,\n    // Whether the rich text editor should be rendered on touch devices (wysihtml5 >= 0.3.0 comes with basic support for iOS 5)\n    supportTouchDevices:  true\n  };\n  \n  wysihtml5.Editor = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.Editor.prototype */ {\n    constructor: function(textareaElement, config) {\n      this.textareaElement  = typeof(textareaElement) === \"string\" ? document.getElementById(textareaElement) : textareaElement;\n      this.config           = wysihtml5.lang.object({}).merge(defaultConfig).merge(config).get();\n      this.textarea         = new wysihtml5.views.Textarea(this, this.textareaElement, this.config);\n      this.currentView      = this.textarea;\n      this._isCompatible    = wysihtml5.browser.supported();\n      \n      // Sort out unsupported/unwanted browsers here\n      if (!this._isCompatible || (!this.config.supportTouchDevices && wysihtml5.browser.isTouchDevice())) {\n        var that = this;\n        setTimeout(function() { that.fire(\"beforeload\").fire(\"load\"); }, 0);\n        return;\n      }\n      \n      // Add class name to body, to indicate that the editor is supported\n      wysihtml5.dom.addClass(document.body, this.config.bodyClassName);\n      \n      this.composer = new wysihtml5.views.Composer(this, this.textareaElement, this.config);\n      this.currentView = this.composer;\n      \n      if (typeof(this.config.parser) === \"function\") {\n        this._initParser();\n      }\n      \n      this.observe(\"beforeload\", function() {\n        this.synchronizer = new wysihtml5.views.Synchronizer(this, this.textarea, this.composer);\n        if (this.config.toolbar) {\n          this.toolbar = new wysihtml5.toolbar.Toolbar(this, this.config.toolbar);\n        }\n      });\n      \n      try {\n        console.log(\"Heya! This page is using wysihtml5 for rich text editing. Check out https://github.com/xing/wysihtml5\");\n      } catch(e) {}\n    },\n    \n    isCompatible: function() {\n      return this._isCompatible;\n    },\n\n    clear: function() {\n      this.currentView.clear();\n      return this;\n    },\n\n    getValue: function(parse) {\n      return this.currentView.getValue(parse);\n    },\n\n    setValue: function(html, parse) {\n      if (!html) {\n        return this.clear();\n      }\n      this.currentView.setValue(html, parse);\n      return this;\n    },\n\n    focus: function(setToEnd) {\n      this.currentView.focus(setToEnd);\n      return this;\n    },\n\n    /**\n     * Deactivate editor (make it readonly)\n     */\n    disable: function() {\n      this.currentView.disable();\n      return this;\n    },\n    \n    /**\n     * Activate editor\n     */\n    enable: function() {\n      this.currentView.enable();\n      return this;\n    },\n    \n    isEmpty: function() {\n      return this.currentView.isEmpty();\n    },\n    \n    hasPlaceholderSet: function() {\n      return this.currentView.hasPlaceholderSet();\n    },\n    \n    parse: function(htmlOrElement) {\n      var returnValue = this.config.parser(htmlOrElement, this.config.parserRules, this.composer.sandbox.getDocument(), true);\n      if (typeof(htmlOrElement) === \"object\") {\n        wysihtml5.quirks.redraw(htmlOrElement);\n      }\n      return returnValue;\n    },\n    \n    /**\n     * Prepare html parser logic\n     *  - Observes for paste and drop\n     */\n    _initParser: function() {\n      this.observe(\"paste:composer\", function() {\n        var keepScrollPosition  = true,\n            that                = this;\n        that.composer.selection.executeAndRestore(function() {\n          wysihtml5.quirks.cleanPastedHTML(that.composer.element);\n          that.parse(that.composer.element);\n        }, keepScrollPosition);\n      });\n      \n      this.observe(\"paste:textarea\", function() {\n        var value   = this.textarea.getValue(),\n            newValue;\n        newValue = this.parse(value);\n        this.textarea.setValue(newValue);\n      });\n    }\n  });\n})(wysihtml5);"
  },
  {
    "path": "src/main/webapp/assets/chart-master/Chart.js",
    "content": "/*!\n * Chart.js\n * http://chartjs.org/\n *\n * Copyright 2013 Nick Downie\n * Released under the MIT license\n * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md\n */\n\n//Define the global Chart Variable as a class.\nwindow.Chart = function(context){\n\n\tvar chart = this;\n\t\n\t\n\t//Easing functions adapted from Robert Penner's easing equations\n\t//http://www.robertpenner.com/easing/\n\t\n\tvar animationOptions = {\n\t\tlinear : function (t){\n\t\t\treturn t;\n\t\t},\n\t\teaseInQuad: function (t) {\n\t\t\treturn t*t;\n\t\t},\n\t\teaseOutQuad: function (t) {\n\t\t\treturn -1 *t*(t-2);\n\t\t},\n\t\teaseInOutQuad: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t;\n\t\t\treturn -1/2 * ((--t)*(t-2) - 1);\n\t\t},\n\t\teaseInCubic: function (t) {\n\t\t\treturn t*t*t;\n\t\t},\n\t\teaseOutCubic: function (t) {\n\t\t\treturn 1*((t=t/1-1)*t*t + 1);\n\t\t},\n\t\teaseInOutCubic: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t;\n\t\t\treturn 1/2*((t-=2)*t*t + 2);\n\t\t},\n\t\teaseInQuart: function (t) {\n\t\t\treturn t*t*t*t;\n\t\t},\n\t\teaseOutQuart: function (t) {\n\t\t\treturn -1 * ((t=t/1-1)*t*t*t - 1);\n\t\t},\n\t\teaseInOutQuart: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t*t;\n\t\t\treturn -1/2 * ((t-=2)*t*t*t - 2);\n\t\t},\n\t\teaseInQuint: function (t) {\n\t\t\treturn 1*(t/=1)*t*t*t*t;\n\t\t},\n\t\teaseOutQuint: function (t) {\n\t\t\treturn 1*((t=t/1-1)*t*t*t*t + 1);\n\t\t},\n\t\teaseInOutQuint: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t*t*t;\n\t\t\treturn 1/2*((t-=2)*t*t*t*t + 2);\n\t\t},\n\t\teaseInSine: function (t) {\n\t\t\treturn -1 * Math.cos(t/1 * (Math.PI/2)) + 1;\n\t\t},\n\t\teaseOutSine: function (t) {\n\t\t\treturn 1 * Math.sin(t/1 * (Math.PI/2));\n\t\t},\n\t\teaseInOutSine: function (t) {\n\t\t\treturn -1/2 * (Math.cos(Math.PI*t/1) - 1);\n\t\t},\n\t\teaseInExpo: function (t) {\n\t\t\treturn (t==0) ? 1 : 1 * Math.pow(2, 10 * (t/1 - 1));\n\t\t},\n\t\teaseOutExpo: function (t) {\n\t\t\treturn (t==1) ? 1 : 1 * (-Math.pow(2, -10 * t/1) + 1);\n\t\t},\n\t\teaseInOutExpo: function (t) {\n\t\t\tif (t==0) return 0;\n\t\t\tif (t==1) return 1;\n\t\t\tif ((t/=1/2) < 1) return 1/2 * Math.pow(2, 10 * (t - 1));\n\t\t\treturn 1/2 * (-Math.pow(2, -10 * --t) + 2);\n\t\t\t},\n\t\teaseInCirc: function (t) {\n\t\t\tif (t>=1) return t;\n\t\t\treturn -1 * (Math.sqrt(1 - (t/=1)*t) - 1);\n\t\t},\n\t\teaseOutCirc: function (t) {\n\t\t\treturn 1 * Math.sqrt(1 - (t=t/1-1)*t);\n\t\t},\n\t\teaseInOutCirc: function (t) {\n\t\t\tif ((t/=1/2) < 1) return -1/2 * (Math.sqrt(1 - t*t) - 1);\n\t\t\treturn 1/2 * (Math.sqrt(1 - (t-=2)*t) + 1);\n\t\t},\n\t\teaseInElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1)==1) return 1;  if (!p) p=1*.3;\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\treturn -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p ));\n\t\t},\n\t\teaseOutElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1)==1) return 1;  if (!p) p=1*.3;\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\treturn a*Math.pow(2,-10*t) * Math.sin( (t*1-s)*(2*Math.PI)/p ) + 1;\n\t\t},\n\t\teaseInOutElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1/2)==2) return 1;  if (!p) p=1*(.3*1.5);\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\tif (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p ));\n\t\t\treturn a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p )*.5 + 1;\n\t\t},\n\t\teaseInBack: function (t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1*(t/=1)*t*((s+1)*t - s);\n\t\t},\n\t\teaseOutBack: function (t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1*((t=t/1-1)*t*((s+1)*t + s) + 1);\n\t\t},\n\t\teaseInOutBack: function (t) {\n\t\t\tvar s = 1.70158; \n\t\t\tif ((t/=1/2) < 1) return 1/2*(t*t*(((s*=(1.525))+1)*t - s));\n\t\t\treturn 1/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2);\n\t\t},\n\t\teaseInBounce: function (t) {\n\t\t\treturn 1 - animationOptions.easeOutBounce (1-t);\n\t\t},\n\t\teaseOutBounce: function (t) {\n\t\t\tif ((t/=1) < (1/2.75)) {\n\t\t\t\treturn 1*(7.5625*t*t);\n\t\t\t} else if (t < (2/2.75)) {\n\t\t\t\treturn 1*(7.5625*(t-=(1.5/2.75))*t + .75);\n\t\t\t} else if (t < (2.5/2.75)) {\n\t\t\t\treturn 1*(7.5625*(t-=(2.25/2.75))*t + .9375);\n\t\t\t} else {\n\t\t\t\treturn 1*(7.5625*(t-=(2.625/2.75))*t + .984375);\n\t\t\t}\n\t\t},\n\t\teaseInOutBounce: function (t) {\n\t\t\tif (t < 1/2) return animationOptions.easeInBounce (t*2) * .5;\n\t\t\treturn animationOptions.easeOutBounce (t*2-1) * .5 + 1*.5;\n\t\t}\n\t};\n\n\t//Variables global to the chart\n\tvar width = context.canvas.width;\n\tvar height = context.canvas.height;\n\n\n\t//High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale.\n\tif (window.devicePixelRatio) {\n\t\tcontext.canvas.style.width = width + \"px\";\n\t\tcontext.canvas.style.height = height + \"px\";\n\t\tcontext.canvas.height = height * window.devicePixelRatio;\n\t\tcontext.canvas.width = width * window.devicePixelRatio;\n\t\tcontext.scale(window.devicePixelRatio, window.devicePixelRatio);\n\t}\n\n\tthis.PolarArea = function(data,options){\n\t\n\t\tchart.PolarArea.defaults = {\n\t\t\tscaleOverlay : true,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleShowLine : true,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowLabelBackdrop : true,\n\t\t\tscaleBackdropColor : \"rgba(255,255,255,0.75)\",\n\t\t\tscaleBackdropPaddingY : 2,\n\t\t\tscaleBackdropPaddingX : 2,\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\n\t\t\n\t\tvar config = (options)? mergeChartConfig(chart.PolarArea.defaults,options) : chart.PolarArea.defaults;\n\t\t\n\t\treturn new PolarArea(data,config,context);\n\t};\n\n\tthis.Radar = function(data,options){\n\t\n\t\tchart.Radar.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleShowLine : true,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : false,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowLabelBackdrop : true,\n\t\t\tscaleBackdropColor : \"rgba(255,255,255,0.75)\",\n\t\t\tscaleBackdropPaddingY : 2,\n\t\t\tscaleBackdropPaddingX : 2,\n\t\t\tangleShowLineOut : true,\n\t\t\tangleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tangleLineWidth : 1,\t\t\t\n\t\t\tpointLabelFontFamily : \"'Arial'\",\n\t\t\tpointLabelFontStyle : \"normal\",\n\t\t\tpointLabelFontSize : 12,\n\t\t\tpointLabelFontColor : \"#666\",\n\t\t\tpointDot : true,\n\t\t\tpointDotRadius : 3,\n\t\t\tpointDotStrokeWidth : 1,\n\t\t\tdatasetStroke : true,\n\t\t\tdatasetStrokeWidth : 2,\n\t\t\tdatasetFill : true,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\n\t\t\n\t\tvar config = (options)? mergeChartConfig(chart.Radar.defaults,options) : chart.Radar.defaults;\n\n\t\treturn new Radar(data,config,context);\n\t};\n\t\n\tthis.Pie = function(data,options){\n\t\tchart.Pie.defaults = {\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\n\t\tvar config = (options)? mergeChartConfig(chart.Pie.defaults,options) : chart.Pie.defaults;\n\t\t\n\t\treturn new Pie(data,config,context);\t\t\t\t\n\t};\n\t\n\tthis.Doughnut = function(data,options){\n\t\n\t\tchart.Doughnut.defaults = {\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tpercentageInnerCutout : 50,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\n\t\tvar config = (options)? mergeChartConfig(chart.Doughnut.defaults,options) : chart.Doughnut.defaults;\n\t\t\n\t\treturn new Doughnut(data,config,context);\t\t\t\n\t\t\n\t};\n\n\tthis.Line = function(data,options){\n\t\n\t\tchart.Line.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowGridLines : true,\n\t\t\tscaleGridLineColor : \"rgba(0,0,0,.05)\",\n\t\t\tscaleGridLineWidth : 1,\n\t\t\tbezierCurve : true,\n\t\t\tpointDot : true,\n\t\t\tpointDotRadius : 4,\n\t\t\tpointDotStrokeWidth : 2,\n\t\t\tdatasetStroke : true,\n\t\t\tdatasetStrokeWidth : 2,\n\t\t\tdatasetFill : true,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\t\tvar config = (options) ? mergeChartConfig(chart.Line.defaults,options) : chart.Line.defaults;\n\t\t\n\t\treturn new Line(data,config,context);\n\t}\n\t\n\tthis.Bar = function(data,options){\n\t\tchart.Bar.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowGridLines : true,\n\t\t\tscaleGridLineColor : \"rgba(0,0,0,.05)\",\n\t\t\tscaleGridLineWidth : 1,\n\t\t\tbarShowStroke : true,\n\t\t\tbarStrokeWidth : 2,\n\t\t\tbarValueSpacing : 5,\n\t\t\tbarDatasetSpacing : 1,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\t\tvar config = (options) ? mergeChartConfig(chart.Bar.defaults,options) : chart.Bar.defaults;\n\t\t\n\t\treturn new Bar(data,config,context);\t\t\n\t}\n\t\n\tvar clear = function(c){\n\t\tc.clearRect(0, 0, width, height);\n\t};\n\n\tvar PolarArea = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString;\t\t\n\t\t\n\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : null;\n\n\t\t//Check and set the scale\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = maxSize/(calculatedScale.steps);\n\n\t\t//Wrap in an animation loop wrapper\n\t\tanimationLoop(config,drawScale,drawAllSegments,ctx);\n\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = (Min([width,height])/2);\n\t\t\t//Remove whatever is larger - the font size or line width.\n\t\t\t\n\t\t\tmaxSize -= Max([config.scaleFontSize*0.5,config.scaleLineWidth*0.5]);\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize*2;\n\t\t\t//If we're drawing the backdrop - add the Y padding to the label height and remove from drawing region.\n\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\tlabelHeight += (2 * config.scaleBackdropPaddingY);\n\t\t\t\tmaxSize -= config.scaleBackdropPaddingY*1.5;\n\t\t\t}\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t//If the label height is less than 5, set it to 5 so we don't have lines on top of each other.\n\t\t\tlabelHeight = Default(labelHeight,5);\n\t\t}\n\t\tfunction drawScale(){\n\t\t\tfor (var i=0; i<calculatedScale.steps; i++){\n\t\t\t\t//If the line object is there\n\t\t\t\tif (config.scaleShowLine){\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(width/2, height/2, scaleHop * (i + 1), 0, (Math.PI * 2), true);\n\t\t\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize + \"px \" + config.scaleFontFamily;\n \t\t\t\t\tvar label =  calculatedScale.labels[i];\n\t\t\t\t\t//If the backdrop object is within the font object\n\t\t\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\t\t\tvar textWidth = ctx.measureText(label).width;\n\t\t\t\t\t\tctx.fillStyle = config.scaleBackdropColor;\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.rect(\n\t\t\t\t\t\t\tMath.round(width/2 - textWidth/2 - config.scaleBackdropPaddingX),     //X\n\t\t\t\t\t\t\tMath.round(height/2 - (scaleHop * (i + 1)) - config.scaleFontSize*0.5 - config.scaleBackdropPaddingY),//Y\n\t\t\t\t\t\t\tMath.round(textWidth + (config.scaleBackdropPaddingX*2)), //Width\n\t\t\t\t\t\t\tMath.round(config.scaleFontSize + (config.scaleBackdropPaddingY*2)) //Height\n\t\t\t\t\t\t);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t}\n\t\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\t\t\tctx.fillText(label,width/2,height/2 - (scaleHop * (i + 1)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction drawAllSegments(animationDecimal){\n\t\t\tvar startAngle = -Math.PI/2,\n\t\t\tangleStep = (Math.PI*2)/data.length,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i=0; i<data.length; i++){\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * calculateOffset(data[i].value,calculatedScale,scaleHop),startAngle, startAngle + rotateAnimation*angleStep, false);\n\t\t\t\tctx.lineTo(width/2,height/2);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tstartAngle += rotateAnimation*angleStep;\n\t\t\t}\n\t\t}\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tif (data[i].value > upperValue) {upperValue = data[i].value;}\n\t\t\t\tif (data[i].value < lowerValue) {lowerValue = data[i].value;}\n\t\t\t};\n\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\n\t\t}\n\t}\n\n\tvar Radar = function (data,config,ctx) {\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString;\t\n\t\t\t\n\t\t//If no labels are defined set to an empty array, so referencing length for looping doesn't blow up.\n\t\tif (!data.labels) data.labels = [];\n\t\t\n\t\tcalculateDrawingSizes();\n\n\t\tvar valueBounds = getValueBounds();\n\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : null;\n\n\t\t//Check and set the scale\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = maxSize/(calculatedScale.steps);\n\t\t\n\t\tanimationLoop(config,drawScale,drawAllDataPoints,ctx);\n\t\t\n\t\t//Radar specific functions.\n\t\tfunction drawAllDataPoints(animationDecimal){\n\t\t\tvar rotationDegree = (2*Math.PI)/data.datasets[0].data.length;\n\n\t\t\tctx.save();\n\t\t\t//translate to the centre of the canvas.\n\t\t\tctx.translate(width/2,height/2);\n\t\t\t\n\t\t\t//We accept multiple data sets for radar charts, so show loop through each set\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tctx.moveTo(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[0],calculatedScale,scaleHop)));\n\t\t\t\tfor (var j=1; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tctx.rotate(rotationDegree);\t\n\t\t\t\t\tctx.lineTo(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)));\n\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tctx.lineWidth = config.datasetStrokeWidth;\n\t\t\t\tctx.fill();\n\t\t\t\tctx.stroke();\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\tif (config.pointDot){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].pointColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].pointStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.pointDotStrokeWidth;\n\t\t\t\t\tfor (var k=0; k<data.datasets[i].data.length; k++){\n\t\t\t\t\t\tctx.rotate(rotationDegree);\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.arc(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[k],calculatedScale,scaleHop)),config.pointDotRadius,2*Math.PI,false);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.rotate(rotationDegree);\n\t\t\t\t\n\t\t\t}\n\t\t\tctx.restore();\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction drawScale(){\n\t\t\tvar rotationDegree = (2*Math.PI)/data.datasets[0].data.length;\n\t\t\tctx.save();\n\t\t    ctx.translate(width / 2, height / 2);\t\n\t\t\t\n\t\t\tif (config.angleShowLineOut){\n\t\t\t\tctx.strokeStyle = config.angleLineColor;\t\t    \t    \n\t\t\t\tctx.lineWidth = config.angleLineWidth;\n\t\t\t\tfor (var h=0; h<data.datasets[0].data.length; h++){\n\t\t\t\t\t\n\t\t\t\t    ctx.rotate(rotationDegree);\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0);\n\t\t\t\t\tctx.lineTo(0,-maxSize);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i=0; i<calculatedScale.steps; i++){\n\t\t\t\tctx.beginPath();\n\t\t\t\t\n\t\t\t\tif(config.scaleShowLine){\n\t\t\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\t\t\tctx.moveTo(0,-scaleHop * (i+1));\t\t\t\t\t\n\t\t\t\t\tfor (var j=0; j<data.datasets[0].data.length; j++){\n\t\t\t\t\t    ctx.rotate(rotationDegree);\n\t\t\t\t\t\tctx.lineTo(0,-scaleHop * (i+1));\n\t\t\t\t\t}\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.stroke();\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (config.scaleShowLabels){\t\t\t\t\n\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily; \n\t\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\t\n\t\t\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\t\t\tvar textWidth = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\t\tctx.fillStyle = config.scaleBackdropColor;\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.rect(\n\t\t\t\t\t\t\tMath.round(- textWidth/2 - config.scaleBackdropPaddingX),     //X\n\t\t\t\t\t\t\tMath.round((-scaleHop * (i + 1)) - config.scaleFontSize*0.5 - config.scaleBackdropPaddingY),//Y\n\t\t\t\t\t\t\tMath.round(textWidth + (config.scaleBackdropPaddingX*2)), //Width\n\t\t\t\t\t\t\tMath.round(config.scaleFontSize + (config.scaleBackdropPaddingY*2)) //Height\n\t\t\t\t\t\t);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\t\t\tctx.fillText(calculatedScale.labels[i],0,-scaleHop*(i+1));\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tfor (var k=0; k<data.labels.length; k++){\t\t\t\t\n\t\t\tctx.font = config.pointLabelFontStyle + \" \" + config.pointLabelFontSize+\"px \" + config.pointLabelFontFamily;\n\t\t\tctx.fillStyle = config.pointLabelFontColor;\n\t\t\t\tvar opposite = Math.sin(rotationDegree*k) * (maxSize + config.pointLabelFontSize);\n\t\t\t\tvar adjacent = Math.cos(rotationDegree*k) * (maxSize + config.pointLabelFontSize);\n\t\t\t\t\n\t\t\t\tif(rotationDegree*k == Math.PI || rotationDegree*k == 0){\n\t\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\t}\n\t\t\t\telse if(rotationDegree*k > Math.PI){\n\t\t\t\t\tctx.textAlign = \"right\";\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.textAlign = \"left\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\n\t\t\t\tctx.fillText(data.labels[k],opposite,-adjacent);\n\t\t\t\t\n\t\t\t}\n\t\t\tctx.restore();\n\t\t};\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = (Min([width,height])/2);\n\n\t\t\tlabelHeight = config.scaleFontSize*2;\n\t\t\t\n\t\t\tvar labelLength = 0;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.font = config.pointLabelFontStyle + \" \" + config.pointLabelFontSize+\"px \" + config.pointLabelFontFamily;\n\t\t\t\tvar textMeasurement = ctx.measureText(data.labels[i]).width;\n\t\t\t\tif(textMeasurement>labelLength) labelLength = textMeasurement;\n\t\t\t}\n\t\t\t\n\t\t\t//Figure out whats the largest - the height of the text or the width of what's there, and minus it from the maximum usable size.\n\t\t\tmaxSize -= Max([labelLength,((config.pointLabelFontSize/2)*1.5)]);\t\t\t\t\n\t\t\t\n\t\t\tmaxSize -= config.pointLabelFontSize;\n\t\t\tmaxSize = CapValue(maxSize, null, 0);\n\t\t\tscaleHeight = maxSize;\n\t\t\t//If the label height is less than 5, set it to 5 so we don't have lines on top of each other.\n\t\t\tlabelHeight = Default(labelHeight,5);\n\t\t};\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\t\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif (data.datasets[i].data[j] > upperValue){upperValue = data.datasets[i].data[j]}\n\t\t\t\t\tif (data.datasets[i].data[j] < lowerValue){lowerValue = data.datasets[i].data[j]}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\n\t\t}\n\t}\n\n\tvar Pie = function(data,config,ctx){\n\t\tvar segmentTotal = 0;\n\t\t\n\t\t//In case we have a canvas that is not a square. Minus 5 pixels as padding round the edge.\n\t\tvar pieRadius = Min([height/2,width/2]) - 5;\n\t\t\n\t\tfor (var i=0; i<data.length; i++){\n\t\t\tsegmentTotal += data[i].value;\n\t\t}\n\t\t\n\t\t\n\t\tanimationLoop(config,null,drawPieSegments,ctx);\n\t\t\t\t\n\t\tfunction drawPieSegments (animationDecimal){\n\t\t\tvar cumulativeAngle = -Math.PI/2,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tvar segmentAngle = rotateAnimation * ((data[i].value/segmentTotal) * (Math.PI*2));\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * pieRadius,cumulativeAngle,cumulativeAngle + segmentAngle);\n\t\t\t\tctx.lineTo(width/2,height/2);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\t\t\t\t\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tcumulativeAngle += segmentAngle;\n\t\t\t}\t\t\t\n\t\t}\t\t\n\t}\n\n\tvar Doughnut = function(data,config,ctx){\n\t\tvar segmentTotal = 0;\n\t\t\n\t\t//In case we have a canvas that is not a square. Minus 5 pixels as padding round the edge.\n\t\tvar doughnutRadius = Min([height/2,width/2]) - 5;\n\t\t\n\t\tvar cutoutRadius = doughnutRadius * (config.percentageInnerCutout/100);\n\t\t\n\t\tfor (var i=0; i<data.length; i++){\n\t\t\tsegmentTotal += data[i].value;\n\t\t}\n\t\t\n\t\t\n\t\tanimationLoop(config,null,drawPieSegments,ctx);\n\t\t\n\t\t\n\t\tfunction drawPieSegments (animationDecimal){\n\t\t\tvar cumulativeAngle = -Math.PI/2,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tvar segmentAngle = rotateAnimation * ((data[i].value/segmentTotal) * (Math.PI*2));\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * doughnutRadius,cumulativeAngle,cumulativeAngle + segmentAngle,false);\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * cutoutRadius,cumulativeAngle + segmentAngle,cumulativeAngle,true);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\t\t\t\t\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tcumulativeAngle += segmentAngle;\n\t\t\t}\t\t\t\n\t\t}\t\t\t\n\t\t\n\t\t\n\t\t\n\t}\n\n\tvar Line = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString, valueHop,widestXLabel, xAxisLength,yAxisPosX,xAxisPosY, rotateLabels = 0;\n\t\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\t\t//Check and set the scale\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : \"\";\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = Math.floor(scaleHeight/calculatedScale.steps);\n\t\tcalculateXAxisSize();\n\t\tanimationLoop(config,drawScale,drawLines,ctx);\t\t\n\t\t\n\t\tfunction drawLines(animPc){\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tctx.lineWidth = config.datasetStrokeWidth;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX, xAxisPosY - animPc*(calculateOffset(data.datasets[i].data[0],calculatedScale,scaleHop)))\n\n\t\t\t\tfor (var j=1; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif (config.bezierCurve){\n\t\t\t\t\t\tctx.bezierCurveTo(xPos(j-0.5),yPos(i,j-1),xPos(j-0.5),yPos(i,j),xPos(j),yPos(i,j));\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tctx.lineTo(xPos(j),yPos(i,j));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tctx.stroke();\n\t\t\t\tif (config.datasetFill){\n\t\t\t\t\tctx.lineTo(yAxisPosX + (valueHop*(data.datasets[i].data.length-1)),xAxisPosY);\n\t\t\t\t\tctx.lineTo(yAxisPosX,xAxisPosY);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\t\tctx.fill();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.closePath();\n\t\t\t\t}\n\t\t\t\tif(config.pointDot){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].pointColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].pointStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.pointDotStrokeWidth;\n\t\t\t\t\tfor (var k=0; k<data.datasets[i].data.length; k++){\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.arc(yAxisPosX + (valueHop *k),xAxisPosY - animPc*(calculateOffset(data.datasets[i].data[k],calculatedScale,scaleHop)),config.pointDotRadius,0,Math.PI*2,true);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction yPos(dataSet,iteration){\n\t\t\t\treturn xAxisPosY - animPc*(calculateOffset(data.datasets[dataSet].data[iteration],calculatedScale,scaleHop));\t\t\t\n\t\t\t}\n\t\t\tfunction xPos(iteration){\n\t\t\t\treturn yAxisPosX + (valueHop * iteration);\n\t\t\t}\n\t\t}\n\t\tfunction drawScale(){\n\t\t\t//X axis line\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(width-widestXLabel/2+5,xAxisPosY);\n\t\t\tctx.lineTo(width-(widestXLabel/2)-xAxisLength-5,xAxisPosY);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\t\n\t\t\tif (rotateLabels > 0){\n\t\t\t\tctx.save();\n\t\t\t\tctx.textAlign = \"right\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t}\n\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.save();\n\t\t\t\tif (rotateLabels > 0){\n\t\t\t\t\tctx.translate(yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize);\n\t\t\t\t\tctx.rotate(-(rotateLabels * (Math.PI/180)));\n\t\t\t\t\tctx.fillText(data.labels[i], 0,0);\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telse{\n\t\t\t\t\tctx.fillText(data.labels[i], yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize+3);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX + i * valueHop, xAxisPosY+3);\n\t\t\t\t\n\t\t\t\t//Check i isnt 0, so we dont go over the Y axis twice.\n\t\t\t\tif(config.scaleShowGridLines && i>0){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\t\t\t\t\t\n\t\t\t\t\tctx.lineTo(yAxisPosX + i * valueHop, 5);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX + i * valueHop, xAxisPosY+3);\t\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\t\n\t\t\t//Y axis\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(yAxisPosX,xAxisPosY+5);\n\t\t\tctx.lineTo(yAxisPosX,5);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\tctx.textAlign = \"right\";\n\t\t\tctx.textBaseline = \"middle\";\n\t\t\tfor (var j=0; j<calculatedScale.steps; j++){\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX-3,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\tif (config.scaleShowGridLines){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\n\t\t\t\t\tctx.lineTo(yAxisPosX + xAxisLength + 5,xAxisPosY - ((j+1) * scaleHop));\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX-0.5,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.stroke();\n\t\t\t\t\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.fillText(calculatedScale.labels[j],yAxisPosX-8,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction calculateXAxisSize(){\n\t\t\tvar longestText = 1;\n\t\t\t//if we are showing the labels\n\t\t\tif (config.scaleShowLabels){\n\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\t\tfor (var i=0; i<calculatedScale.labels.length; i++){\n\t\t\t\t\tvar measuredText = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\tlongestText = (measuredText > longestText)? measuredText : longestText;\n\t\t\t\t}\n\t\t\t\t//Add a little extra padding from the y axis\n\t\t\t\tlongestText +=10;\n\t\t\t}\n\t\t\txAxisLength = width - longestText - widestXLabel;\n\t\t\tvalueHop = Math.floor(xAxisLength/(data.labels.length-1));\t\n\t\t\t\t\n\t\t\tyAxisPosX = width-widestXLabel/2-xAxisLength;\n\t\t\txAxisPosY = scaleHeight + config.scaleFontSize/2;\t\t\t\t\n\t\t}\t\t\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = height;\n\n\t\t\t//Need to check the X axis first - measure the length of each text metric, and figure out if we need to rotate by 45 degrees.\n\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\twidestXLabel = 1;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tvar textLength = ctx.measureText(data.labels[i]).width;\n\t\t\t\t//If the text length is longer - make that equal to longest text!\n\t\t\t\twidestXLabel = (textLength > widestXLabel)? textLength : widestXLabel;\n\t\t\t}\n\t\t\tif (width/data.labels.length < widestXLabel){\n\t\t\t\trotateLabels = 45;\n\t\t\t\tif (width/data.labels.length < Math.cos(rotateLabels) * widestXLabel){\n\t\t\t\t\trotateLabels = 90;\n\t\t\t\t\tmaxSize -= widestXLabel; \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tmaxSize -= Math.sin(rotateLabels) * widestXLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tmaxSize -= config.scaleFontSize;\n\t\t\t}\n\t\t\t\n\t\t\t//Add a little padding between the x line and the text\n\t\t\tmaxSize -= 5;\n\t\t\t\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize;\n\t\t\t\n\t\t\tmaxSize -= labelHeight;\n\t\t\t//Set 5 pixels greater than the font size to allow for a little padding from the X axis.\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t\n\t\t\t//Then get the area above we can safely draw on.\n\t\t\t\n\t\t}\t\t\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif ( data.datasets[i].data[j] > upperValue) { upperValue = data.datasets[i].data[j] };\n\t\t\t\t\tif ( data.datasets[i].data[j] < lowerValue) { lowerValue = data.datasets[i].data[j] };\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\t\n\t\t}\n\n\t\t\n\t}\n\t\n\tvar Bar = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString, valueHop,widestXLabel, xAxisLength,yAxisPosX,xAxisPosY,barWidth, rotateLabels = 0;\n\t\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\t\t//Check and set the scale\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : \"\";\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = Math.floor(scaleHeight/calculatedScale.steps);\n\t\tcalculateXAxisSize();\n\t\tanimationLoop(config,drawScale,drawBars,ctx);\t\t\n\t\t\n\t\tfunction drawBars(animPc){\n\t\t\tctx.lineWidth = config.barStrokeWidth;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tvar barOffset = yAxisPosX + config.barValueSpacing + valueHop*j + barWidth*i + config.barDatasetSpacing*i + config.barStrokeWidth*i;\n\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(barOffset, xAxisPosY);\n\t\t\t\t\tctx.lineTo(barOffset, xAxisPosY - animPc*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)+(config.barStrokeWidth/2));\n\t\t\t\t\tctx.lineTo(barOffset + barWidth, xAxisPosY - animPc*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)+(config.barStrokeWidth/2));\n\t\t\t\t\tctx.lineTo(barOffset + barWidth, xAxisPosY);\n\t\t\t\t\tif(config.barShowStroke){\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.fill();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\tfunction drawScale(){\n\t\t\t//X axis line\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(width-widestXLabel/2+5,xAxisPosY);\n\t\t\tctx.lineTo(width-(widestXLabel/2)-xAxisLength-5,xAxisPosY);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\t\n\t\t\tif (rotateLabels > 0){\n\t\t\t\tctx.save();\n\t\t\t\tctx.textAlign = \"right\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t}\n\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.save();\n\t\t\t\tif (rotateLabels > 0){\n\t\t\t\t\tctx.translate(yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize);\n\t\t\t\t\tctx.rotate(-(rotateLabels * (Math.PI/180)));\n\t\t\t\t\tctx.fillText(data.labels[i], 0,0);\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telse{\n\t\t\t\t\tctx.fillText(data.labels[i], yAxisPosX + i*valueHop + valueHop/2,xAxisPosY + config.scaleFontSize+3);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX + (i+1) * valueHop, xAxisPosY+3);\n\t\t\t\t\n\t\t\t\t//Check i isnt 0, so we dont go over the Y axis twice.\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\t\t\t\t\t\n\t\t\t\t\tctx.lineTo(yAxisPosX + (i+1) * valueHop, 5);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\t\n\t\t\t//Y axis\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(yAxisPosX,xAxisPosY+5);\n\t\t\tctx.lineTo(yAxisPosX,5);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\tctx.textAlign = \"right\";\n\t\t\tctx.textBaseline = \"middle\";\n\t\t\tfor (var j=0; j<calculatedScale.steps; j++){\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX-3,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\tif (config.scaleShowGridLines){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\n\t\t\t\t\tctx.lineTo(yAxisPosX + xAxisLength + 5,xAxisPosY - ((j+1) * scaleHop));\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX-0.5,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.stroke();\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.fillText(calculatedScale.labels[j],yAxisPosX-8,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction calculateXAxisSize(){\n\t\t\tvar longestText = 1;\n\t\t\t//if we are showing the labels\n\t\t\tif (config.scaleShowLabels){\n\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\t\tfor (var i=0; i<calculatedScale.labels.length; i++){\n\t\t\t\t\tvar measuredText = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\tlongestText = (measuredText > longestText)? measuredText : longestText;\n\t\t\t\t}\n\t\t\t\t//Add a little extra padding from the y axis\n\t\t\t\tlongestText +=10;\n\t\t\t}\n\t\t\txAxisLength = width - longestText - widestXLabel;\n\t\t\tvalueHop = Math.floor(xAxisLength/(data.labels.length));\t\n\t\t\t\n\t\t\tbarWidth = (valueHop - config.scaleGridLineWidth*2 - (config.barValueSpacing*2) - (config.barDatasetSpacing*data.datasets.length-1) - ((config.barStrokeWidth/2)*data.datasets.length-1))/data.datasets.length;\n\t\t\t\n\t\t\tyAxisPosX = width-widestXLabel/2-xAxisLength;\n\t\t\txAxisPosY = scaleHeight + config.scaleFontSize/2;\t\t\t\t\n\t\t}\t\t\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = height;\n\n\t\t\t//Need to check the X axis first - measure the length of each text metric, and figure out if we need to rotate by 45 degrees.\n\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\twidestXLabel = 1;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tvar textLength = ctx.measureText(data.labels[i]).width;\n\t\t\t\t//If the text length is longer - make that equal to longest text!\n\t\t\t\twidestXLabel = (textLength > widestXLabel)? textLength : widestXLabel;\n\t\t\t}\n\t\t\tif (width/data.labels.length < widestXLabel){\n\t\t\t\trotateLabels = 45;\n\t\t\t\tif (width/data.labels.length < Math.cos(rotateLabels) * widestXLabel){\n\t\t\t\t\trotateLabels = 90;\n\t\t\t\t\tmaxSize -= widestXLabel; \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tmaxSize -= Math.sin(rotateLabels) * widestXLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tmaxSize -= config.scaleFontSize;\n\t\t\t}\n\t\t\t\n\t\t\t//Add a little padding between the x line and the text\n\t\t\tmaxSize -= 5;\n\t\t\t\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize;\n\t\t\t\n\t\t\tmaxSize -= labelHeight;\n\t\t\t//Set 5 pixels greater than the font size to allow for a little padding from the X axis.\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t\n\t\t\t//Then get the area above we can safely draw on.\n\t\t\t\n\t\t}\t\t\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif ( data.datasets[i].data[j] > upperValue) { upperValue = data.datasets[i].data[j] };\n\t\t\t\t\tif ( data.datasets[i].data[j] < lowerValue) { lowerValue = data.datasets[i].data[j] };\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\t\n\t\t}\n\t}\n\t\n\tfunction calculateOffset(val,calculatedScale,scaleHop){\n\t\tvar outerValue = calculatedScale.steps * calculatedScale.stepValue;\n\t\tvar adjustedValue = val - calculatedScale.graphMin;\n\t\tvar scalingFactor = CapValue(adjustedValue/outerValue,1,0);\n\t\treturn (scaleHop*calculatedScale.steps) * scalingFactor;\n\t}\n\t\n\tfunction animationLoop(config,drawScale,drawData,ctx){\n\t\tvar animFrameAmount = (config.animation)? 1/CapValue(config.animationSteps,Number.MAX_VALUE,1) : 1,\n\t\t\teasingFunction = animationOptions[config.animationEasing],\n\t\t\tpercentAnimComplete =(config.animation)? 0 : 1;\n\t\t\n\t\n\t\t\n\t\tif (typeof drawScale !== \"function\") drawScale = function(){};\n\t\t\n\t\trequestAnimFrame(animLoop);\n\t\t\n\t\tfunction animateFrame(){\n\t\t\tvar easeAdjustedAnimationPercent =(config.animation)? CapValue(easingFunction(percentAnimComplete),null,0) : 1;\n\t\t\tclear(ctx);\n\t\t\tif(config.scaleOverlay){\n\t\t\t\tdrawData(easeAdjustedAnimationPercent);\n\t\t\t\tdrawScale();\n\t\t\t} else {\n\t\t\t\tdrawScale();\n\t\t\t\tdrawData(easeAdjustedAnimationPercent);\n\t\t\t}\t\t\t\t\n\t\t}\n\t\tfunction animLoop(){\n\t\t\t//We need to check if the animation is incomplete (less than 1), or complete (1).\n\t\t\t\tpercentAnimComplete += animFrameAmount;\n\t\t\t\tanimateFrame();\t\n\t\t\t\t//Stop the loop continuing forever\n\t\t\t\tif (percentAnimComplete <= 1){\n\t\t\t\t\trequestAnimFrame(animLoop);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif (typeof config.onAnimationComplete == \"function\") config.onAnimationComplete();\n\t\t\t\t}\n\t\t\t\n\t\t}\t\t\n\t\t\n\t}\n\n\t//Declare global functions to be called within this namespace here.\n\t\n\t\n\t// shim layer with setTimeout fallback\n\tvar requestAnimFrame = (function(){\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\twindow.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t})();\n\n\tfunction calculateScale(drawingHeight,maxSteps,minSteps,maxValue,minValue,labelTemplateString){\n\t\t\tvar graphMin,graphMax,graphRange,stepValue,numberOfSteps,valueRange,rangeOrderOfMagnitude,decimalNum;\n\t\t\t\n\t\t\tvalueRange = maxValue - minValue;\n\t\t\t\n\t\t\trangeOrderOfMagnitude = calculateOrderOfMagnitude(valueRange);\n\n        \tgraphMin = Math.floor(minValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude);\n            \n            graphMax = Math.ceil(maxValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude);\n            \n            graphRange = graphMax - graphMin;\n            \n            stepValue = Math.pow(10, rangeOrderOfMagnitude);\n            \n\t        numberOfSteps = Math.round(graphRange / stepValue);\n\t        \n\t        //Compare number of steps to the max and min for that size graph, and add in half steps if need be.\t        \n\t        while(numberOfSteps < minSteps || numberOfSteps > maxSteps) {\n\t        \tif (numberOfSteps < minSteps){\n\t\t\t        stepValue /= 2;\n\t\t\t        numberOfSteps = Math.round(graphRange/stepValue);\n\t\t        }\n\t\t        else{\n\t\t\t        stepValue *=2;\n\t\t\t        numberOfSteps = Math.round(graphRange/stepValue);\n\t\t        }\n\t        };\n\n\t        var labels = [];\n\t        populateLabels(labelTemplateString, labels, numberOfSteps, graphMin, stepValue);\n\t\t\n\t        return {\n\t\t        steps : numberOfSteps,\n\t\t\t\tstepValue : stepValue,\n\t\t\t\tgraphMin : graphMin,\n\t\t\t\tlabels : labels\t\t        \n\t\t        \n\t        }\n\t\t\n\t\t\tfunction calculateOrderOfMagnitude(val){\n\t\t\t  return Math.floor(Math.log(val) / Math.LN10);\n\t\t\t}\t\t\n\n\n\t}\n\n    //Populate an array of all the labels by interpolating the string.\n    function populateLabels(labelTemplateString, labels, numberOfSteps, graphMin, stepValue) {\n        if (labelTemplateString) {\n            //Fix floating point errors by setting to fixed the on the same decimal as the stepValue.\n            for (var i = 1; i < numberOfSteps + 1; i++) {\n                labels.push(tmpl(labelTemplateString, {value: (graphMin + (stepValue * i)).toFixed(getDecimalPlaces(stepValue))}));\n            }\n        }\n    }\n\t\n\t//Max value from array\n\tfunction Max( array ){\n\t\treturn Math.max.apply( Math, array );\n\t};\n\t//Min value from array\n\tfunction Min( array ){\n\t\treturn Math.min.apply( Math, array );\n\t};\n\t//Default if undefined\n\tfunction Default(userDeclared,valueIfFalse){\n\t\tif(!userDeclared){\n\t\t\treturn valueIfFalse;\n\t\t} else {\n\t\t\treturn userDeclared;\n\t\t}\n\t};\n\t//Is a number function\n\tfunction isNumber(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t}\n\t//Apply cap a value at a high or low number\n\tfunction CapValue(valueToCap, maxValue, minValue){\n\t\tif(isNumber(maxValue)) {\n\t\t\tif( valueToCap > maxValue ) {\n\t\t\t\treturn maxValue;\n\t\t\t}\n\t\t}\n\t\tif(isNumber(minValue)){\n\t\t\tif ( valueToCap < minValue ){\n\t\t\t\treturn minValue;\n\t\t\t}\n\t\t}\n\t\treturn valueToCap;\n\t}\n\tfunction getDecimalPlaces (num){\n\t\tvar numberOfDecimalPlaces;\n\t\tif (num%1!=0){\n\t\t\treturn num.toString().split(\".\")[1].length\n\t\t}\n\t\telse{\n\t\t\treturn 0;\n\t\t}\n\t\t\n\t} \n\t\n\tfunction mergeChartConfig(defaults,userDefined){\n\t\tvar returnObj = {};\n\t    for (var attrname in defaults) { returnObj[attrname] = defaults[attrname]; }\n\t    for (var attrname in userDefined) { returnObj[attrname] = userDefined[attrname]; }\n\t    return returnObj;\n\t}\n\t\n\t//Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/\n\t  var cache = {};\n\t \n\t  function tmpl(str, data){\n\t    // Figure out if we're getting a template, or if we need to\n\t    // load the template - and be sure to cache the result.\n\t    var fn = !/\\W/.test(str) ?\n\t      cache[str] = cache[str] ||\n\t        tmpl(document.getElementById(str).innerHTML) :\n\t     \n\t      // Generate a reusable function that will serve as a template\n\t      // generator (and which will be cached).\n\t      new Function(\"obj\",\n\t        \"var p=[],print=function(){p.push.apply(p,arguments);};\" +\n\t       \n\t        // Introduce the data as local variables using with(){}\n\t        \"with(obj){p.push('\" +\n\t       \n\t        // Convert the template into pure JavaScript\n\t        str\n\t          .replace(/[\\r\\t\\n]/g, \" \")\n\t          .split(\"<%\").join(\"\\t\")\n\t          .replace(/((^|%>)[^\\t]*)'/g, \"$1\\r\")\n\t          .replace(/\\t=(.*?)%>/g, \"',$1,'\")\n\t          .split(\"\\t\").join(\"');\")\n\t          .split(\"%>\").join(\"p.push('\")\n\t          .split(\"\\r\").join(\"\\\\'\")\n\t      + \"');}return p.join('');\");\n\t   \n\t    // Provide some basic currying to the user\n\t    return data ? fn( data ) : fn;\n\t  };\n}\n\n\n"
  },
  {
    "path": "src/main/webapp/assets/chosen-bootstrap/chosen/chosen.css",
    "content": "/*\n*\n* Chosen for Bootstrap and Less\n*\n* Converted by @whitetruffle (http://www.twitter.com/whitetruffle)\n* from @joeylomanto's SASS fork (http://chosen-sass-bootstrap.herokuapp.com/)\n* Havest: @harvest\n*\n*/\n/*!\n * Bootstrap v2.1.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.chzn-container {\n  position: relative;\n  display: inline-block;\n  zoom: 1;\n  *display: inline;\n}\n.chzn-container .chzn-drop {\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  background: #fff;\n  border: 1px solid #CCC;\n  position: absolute;\n  top: 29px;\n  left: 0;\n  z-index: 1010;\n  margin: 4px 0 0;\n}\n\n.chzn-container-single .chzn-single {\n  margin-top: 3px !important;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  background-color: #f6f6f6;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);\n  -moz-background-clip: padding;\n  background-color: #ffffff;\n  border: 1px solid #CCC;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n  position: relative;\n  height: 28px;\n  line-height: 29px;\n  padding: 0 0 0 8px;\n  color: #555555;\n  text-decoration: none;\n}\n.chzn-container-single .chzn-single span {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  margin-right: 26px;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n}\n.chzn-container-single .chzn-single abbr {\n  display: block;\n  position: absolute;\n  right: 26px;\n  top: 8px;\n  width: 12px;\n  height: 13px;\n  font-size: 1px;\n  background: url(\"chosen-sprite.png\") right top no-repeat;\n}\n.chzn-container-single .chzn-single abbr:hover {\n  background-position: right -11px;\n}\n.chzn-container-single .chzn-single div {\n  position: absolute;\n  right: 0;\n  top: 0;\n  display: block;\n  height: 100%;\n  width: 18px;\n}\n.chzn-container-single .chzn-single div b {\n  background: url(\"chosen-sprite.png\") no-repeat 0 2px;\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.chzn-container-single .chzn-search {\n  padding: 3px 4px;\n  position: relative;\n  margin: 0;\n  white-space: nowrap;\n  z-index: 1010;\n}\n.chzn-container-single .chzn-search input {\n  margin: 1px 0;\n  padding: 4px 20px 4px 5px;\n  outline: 0;\n}\n.chzn-container-single .chzn-default {\n  color: #999;\n}\n.chzn-container-single .chzn-drop {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  -moz-background-clip: padding;\n}\n.chzn-container-single.chzn-disabled .chzn-single abbr:hover {\n  background-position: right top;\n}\n.chzn-container-single-nosearch .chzn-search input {\n  position: absolute;\n  left: -9000px;\n}\n.chzn-container-multi .chzn-choices {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s;\n  -moz-transition: border linear 0.2s;\n  -o-transition: border linear 0.2s;\n  transition: border linear 0.2s;\n  -webkit-transition: box-shadow linear 0.2s;\n  -moz-transition: box-shadow linear 0.2s;\n  -o-transition: box-shadow linear 0.2s;\n  transition: box-shadow linear 0.2s;\n  background-color: #ffffff !important;\n  border: 1px solid #cccccc;\n  cursor: text;\n  overflow: hidden;\n  height: auto !important;\n  height: 1%;\n  position: relative;\n  display: block;\n  padding: 0;\n  margin: 0;\n  font-size: 14px;\n  line-height: 20px;\n  color: #555555;\n}\n.chzn-container-multi .chzn-choices li {\n  float: left;\n  list-style: none;\n}\n.chzn-container-multi .chzn-choices .search-field {\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n}\n.chzn-container-multi .chzn-choices .search-field input {\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  color: #555555;\n  background: transparent !important;\n  border: 0 !important;\n  font-family: sans-serif;\n  font-size: 100%;\n  height: 15px;\n  padding: 5px;\n  margin: 1px 0 2px;\n  outline: 0;\n}\n.chzn-container-multi .chzn-choices .search-field .default {\n  color: #999;\n}\n.chzn-container-multi .chzn-choices .search-choice {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  background-color: #f6f6f6;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  -moz-background-clip: padding;\n  color: #555555;\n  border: 1px solid #999999;\n  line-height: 13px;\n  padding: 3px 20px 3px 5px;\n  margin: 3px 0 3px 5px;\n  position: relative;\n  cursor: default;\n}\n.chzn-container-multi .chzn-choices .search-choice .search-choice-close {\n  display: block;\n  position: absolute;\n  right: 3px;\n  top: 4px;\n  width: 12px;\n  height: 13px;\n  font-size: 1px;\n  background: url(\"chosen-sprite.png\") right top no-repeat;\n}\n.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {\n  background-position: right -11px;\n}\n.chzn-container-multi .chzn-choices .search-choice.search-choice-disabled {\n  background-color: #eeeeee;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), color-stop(50%, #f0f0f0), to(#e8e8e8));\n  background-image: -webkit-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: -moz-linear-gradient(top, #f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: -o-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe8e8e8', GradientType=0);\n  color: #666;\n  border: 1px solid #cccccc;\n  padding-right: 5px;\n}\n.chzn-container-multi .chzn-choices .search-choice-focus {\n  background: #d4d4d4;\n}\n.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {\n  background-position: right -11px;\n}\n.chzn-container .chzn-results {\n  margin: 0 4px 4px 0;\n  max-height: 240px;\n  padding: 0 0 0 4px;\n  position: relative;\n  overflow-x: hidden;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n}\n.chzn-container .chzn-results li {\n  display: none;\n  line-height: 15px;\n  padding: 5px 6px;\n  margin: 0;\n  list-style: none;\n}\n.chzn-container .chzn-results li em {\n  background: #feffde;\n  font-style: normal;\n}\n.chzn-container .chzn-results .no-results {\n  background: #f4f4f4;\n  display: list-item;\n}\n.chzn-container .chzn-results .group-result {\n  cursor: default;\n  color: #999;\n  font-weight: bold;\n}\n.chzn-container .chzn-results .group-option {\n  padding-left: 15px;\n}\n.chzn-container .chzn-results .active-result {\n  cursor: pointer;\n  display: list-item;\n}\n.chzn-container .chzn-results .highlighted {\n  background-color: #326dcc;\n  background-image: -moz-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3875d7), to(#2a62bc));\n  background-image: -webkit-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: -o-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: linear-gradient(to bottom, #3875d7, #2a62bc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3875d7', endColorstr='#ff2a62bc', GradientType=0);\n  color: #fff;\n}\n.chzn-container .chzn-results .highlighted em {\n  background: transparent;\n}\n.chzn-container .chzn-results-scroll {\n  background: white;\n  margin: 0 4px;\n  position: absolute;\n  text-align: center;\n  width: 321px;\n  /* This should by dynamic with js */\n\n  z-index: 1;\n}\n.chzn-container .chzn-results-scroll span {\n  display: inline-block;\n  height: 17px;\n  text-indent: -5000px;\n  width: 9px;\n}\n.chzn-container .chzn-results-scroll-down {\n  bottom: 0;\n}\n.chzn-container .chzn-results-scroll-down span {\n  background: url(\"chosen-sprite.png\") no-repeat -4px -3px;\n}\n.chzn-container .chzn-results-scroll-up span {\n  background: url(\"chosen-sprite.png\") no-repeat -22px -3px;\n}\n.chzn-container-multi .chzn-results {\n  margin: 4px;\n  padding: 0;\n}\n.chzn-container-multi .chzn-drop .result-selected {\n  display: none;\n}\n.chzn-container-active .chzn-single {\n  border: 1px solid #CCC;\n}\n.chzn-container-active .chzn-single .chzn-drop {\n  margin-top: -29px;\n}\n.chzn-container-active .chzn-single-with-drop {\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  border-color: #CCC;\n}\n.chzn-container-active .chzn-single-with-drop div {\n  background: transparent;\n  border-left: none;\n}\n.chzn-container-active .chzn-single-with-drop div b {\n  background-position: -18px 1px;\n}\n.chzn-container-active .chzn-choices {\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  border: 1px solid rgba(82, 168, 236, 0.8);\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n\n}\n.chzn-container-active .chzn-choices .search-field input {\n  color: #111 !important;\n}\n.chzn-disabled {\n  opacity: 0.005;\n  filter: alpha(opacity=0.5);\n  cursor: default;\n}\n.chzn-disabled .chzn-single {\n  cursor: default;\n}\n.chzn-disabled .search-choice-close {\n  cursor: default;\n}\n.chzn-rtl {\n  text-align: right;\n}\n.chzn-rtl .chzn-single {\n  padding: 0 8px 0 0;\n  overflow: visible;\n}\n.chzn-rtl .chzn-single span {\n  margin-left: 26px;\n  margin-right: 0;\n  direction: rtl;\n}\n.chzn-rtl .chzn-single div {\n  left: 3px;\n  right: auto;\n}\n.chzn-rtl .chzn-single abbr {\n  left: 26px;\n  right: auto;\n}\n.chzn-rtl .chzn-choices li {\n  float: right;\n}\n.chzn-rtl .chzn-choices .search-field input {\n  direction: rtl;\n}\n.chzn-rtl .chzn-choices .search-choice {\n  padding: 3px 5px 3px 19px;\n  margin: 3px 5px 3px 0;\n}\n.chzn-rtl .chzn-choices .search-choice .search-choice-close {\n  left: 4px;\n  right: auto;\n  background-position: right top;\n}\n.chzn-rtl .chzn-results .group-option {\n  padding-left: 0;\n  padding-right: 15px;\n}\n.chzn-rtl .chzn-search input {\n  padding: 4px 5px 4px 20px;\n  direction: rtl;\n}\n.chzn-rtl.chzn-container-single .chzn-results {\n  margin: 0 0 4px 4px;\n  padding: 0 4px 0 0;\n}\n.chzn-rtl.chzn-container-active .chzn-single-with-drop div {\n  border-right: none;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/ckeditor/ckeditor.js",
    "content": "﻿/*\nCopyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\nFor licensing, see LICENSE.html or http://ckeditor.com/license\n*/\n(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var b={timestamp:\"D08E\",version:\"4.0.1\",revision:\"d02739be4b\",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:\"unloaded\",basePath:function(){var a=window.CKEDITOR_BASEPATH||\"\";if(!a)for(var b=document.getElementsByTagName(\"script\"),d=0;d<b.length;d++){var c=b[d].src.match(/(^|.*[\\\\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\\?.*)?$/i);if(c){a=c[1];break}}-1==a.indexOf(\":/\")&&(a=0===a.indexOf(\"/\")?location.href.match(/^.*?:\\/\\/[^\\/]*/)[0]+a:location.href.match(/^[^\\?]*\\/(?:)/)[0]+\na);if(!a)throw'The CKEditor installation path could not be automatically detected. Please set the global variable \"CKEDITOR_BASEPATH\" before creating editor instances.';return a}(),getUrl:function(a){-1==a.indexOf(\":/\")&&0!==a.indexOf(\"/\")&&(a=this.basePath+a);this.timestamp&&(\"/\"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a))&&(a+=(0<=a.indexOf(\"?\")?\"&\":\"?\")+\"t=\"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener(\"DOMContentLoaded\",a,\n!1),b()):document.attachEvent&&\"complete\"===document.readyState&&(document.detachEvent(\"onreadystatechange\",a),b())}catch(d){}}function b(){for(var a;a=d.shift();)a()}var d=[];return function(b){d.push(b);\"complete\"===document.readyState&&setTimeout(a,1);if(1==d.length)if(document.addEventListener)document.addEventListener(\"DOMContentLoaded\",a,!1),window.addEventListener(\"load\",a,!1);else if(document.attachEvent){document.attachEvent(\"onreadystatechange\",a);window.attachEvent(\"onload\",a);b=!1;try{b=\n!window.frameElement}catch(e){}if(document.documentElement.doScroll&&b){var c=function(){try{document.documentElement.doScroll(\"left\")}catch(b){setTimeout(c,1);return}a()};c()}}}}()},c=window.CKEDITOR_GETURL;if(c){var a=b.url;b.url=function(f){return c.call(b,f)||a.call(b,f)}}return b}());\nCKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(b){var c=CKEDITOR.event.prototype,a;for(a in c)b[a]==void 0&&(b[a]=c[a])},CKEDITOR.event.prototype=function(){function b(f){var b=c(this);return b[f]||(b[f]=new a(f))}var c=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},a=function(a){this.name=a;this.listeners=[]};a.prototype={getListenerIndex:function(a){for(var b=0,d=this.listeners;b<d.length;b++)if(d[b].fn==a)return b;return-1}};\nreturn{define:function(a,e){var d=b.call(this,a);CKEDITOR.tools.extend(d,e,true)},on:function(a,e,d,c,k){function h(b,l,o,n){b={name:a,sender:this,editor:b,data:l,listenerData:c,stop:o,cancel:n,removeListener:m};return e.call(d,b)===false?false:b.data}function m(){o.removeListener(a,e)}var n=b.call(this,a);if(n.getListenerIndex(e)<0){n=n.listeners;d||(d=this);isNaN(k)&&(k=10);var o=this;h.fn=e;h.priority=k;for(var l=n.length-1;l>=0;l--)if(n[l].priority<=k){n.splice(l+1,0,h);return{removeListener:m}}n.unshift(h)}return{removeListener:m}},\nonce:function(){var a=arguments[1];arguments[1]=function(b){b.removeListener();return a.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},d=0,g=function(){d=1};return function(k,h,m){var n=c(this)[k],k=a,o=d;a=d=0;if(n){var l=n.listeners;if(l.length)for(var l=l.slice(0),j,q=0;q<l.length;q++){if(n.errorProof)try{j=l[q].call(this,\nm,h,b,g)}catch(y){}else j=l[q].call(this,m,h,b,g);j===false?d=1:typeof j!=\"undefined\"&&(h=j);if(a||d)break}}h=d?false:typeof h==\"undefined\"?true:h;a=k;d=o;return h}}(),fireOnce:function(a,b,d){b=this.fire(a,b,d);delete c(this)[a];return b},removeListener:function(a,b){var d=c(this)[a];if(d){var g=d.getListenerIndex(b);g>=0&&d.listeners.splice(g,1)}},removeAllListeners:function(){var a=c(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=c(this)[a])&&a.listeners.length>0}}}());\nCKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(b,c){b in{instanceReady:1,loaded:1}&&(this[b]=true);return CKEDITOR.event.prototype.fire.call(this,b,c,this)},CKEDITOR.editor.prototype.fireOnce=function(b,c){b in{instanceReady:1,loaded:1}&&(this[b]=true);return CKEDITOR.event.prototype.fireOnce.call(this,b,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));\nCKEDITOR.env||(CKEDITOR.env=function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,a={ie:eval(\"/*@cc_on!@*/false\"),opera:!!c&&c.version,webkit:b.indexOf(\" applewebkit/\")>-1,air:b.indexOf(\" adobeair/\")>-1,mac:b.indexOf(\"macintosh\")>-1,quirks:document.compatMode==\"BackCompat\",mobile:b.indexOf(\"mobile\")>-1,iOS:/(ipad|iphone|ipod)/.test(b),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,b=window.location.hostname;return a!=b&&a!=\"[\"+b+\"]\"},secure:location.protocol==\n\"https:\"};a.gecko=navigator.product==\"Gecko\"&&!a.webkit&&!a.opera;if(a.webkit)b.indexOf(\"chrome\")>-1?a.chrome=true:a.safari=true;var f=0;if(a.ie){f=a.quirks||!document.documentMode?parseFloat(b.match(/msie (\\d+)/)[1]):document.documentMode;a.ie9Compat=f==9;a.ie8Compat=f==8;a.ie7Compat=f==7;a.ie6Compat=f<7||a.quirks}if(a.gecko){var e=b.match(/rv:([\\d\\.]+)/);if(e){e=e[1].split(\".\");f=e[0]*1E4+(e[1]||0)*100+(e[2]||0)*1}}a.opera&&(f=parseFloat(c.version()));a.air&&(f=parseFloat(b.match(/ adobeair\\/(\\d+)/)[1]));\na.webkit&&(f=parseFloat(b.match(/ applewebkit\\/(\\d+)/)[1]));a.version=f;a.isCompatible=a.iOS&&f>=534||!a.mobile&&(a.ie&&f>6||a.gecko&&f>=10801||a.opera&&f>=9.5||a.air&&f>=1||a.webkit&&f>=522||false);a.cssClass=\"cke_browser_\"+(a.ie?\"ie\":a.gecko?\"gecko\":a.opera?\"opera\":a.webkit?\"webkit\":\"unknown\");if(a.quirks)a.cssClass=a.cssClass+\" cke_browser_quirks\";if(a.ie){a.cssClass=a.cssClass+(\" cke_browser_ie\"+(a.quirks||a.version<7?\"6\":a.version));if(a.quirks)a.cssClass=a.cssClass+\" cke_browser_iequirks\"}if(a.gecko)if(f<\n10900)a.cssClass=a.cssClass+\" cke_browser_gecko18\";else if(f<=11E3)a.cssClass=a.cssClass+\" cke_browser_gecko19\";if(a.air)a.cssClass=a.cssClass+\" cke_browser_air\";return a}());\n\"unloaded\"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!=\"basic_ready\")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var b=document.createElement(\"script\");b.type=\"text/javascript\";b.src=CKEDITOR.basePath+\"ckeditor.js\";document.getElementsByTagName(\"head\")[0].appendChild(b)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(b){(this._.pending||(this._.pending=[])).push(b)};(function(){CKEDITOR.domReady(function(){var b=\nCKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(b){CKEDITOR.status=\"basic_ready\";b&&b._load?b():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status=\"basic_loaded\"}();CKEDITOR.dom={};\n(function(){var b=[],c=CKEDITOR.env.gecko?\"-moz-\":CKEDITOR.env.webkit?\"-webkit-\":CKEDITOR.env.opera?\"-o-\":CKEDITOR.env.ie?\"-ms-\":\"\";CKEDITOR.on(\"reset\",function(){b=[]});CKEDITOR.tools={arrayCompare:function(a,b){if(!a&&!b)return true;if(!a||!b||a.length!=b.length)return false;for(var e=0;e<a.length;e++)if(a[e]!=b[e])return false;return true},clone:function(a){var b;if(a&&a instanceof Array){b=[];for(var e=0;e<a.length;e++)b[e]=this.clone(a[e]);return b}if(a===null||typeof a!=\"object\"||a instanceof\nString||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp)return a;b=new a.constructor;for(e in a)b[e]=this.clone(a[e]);return b},capitalize:function(a){return a.charAt(0).toUpperCase()+a.substring(1).toLowerCase()},extend:function(a){var b=arguments.length,e,d;if(typeof(e=arguments[b-1])==\"boolean\")b--;else if(typeof(e=arguments[b-2])==\"boolean\"){d=arguments[b-1];b=b-2}for(var c=1;c<b;c++){var k=arguments[c],h;for(h in k)if(e===true||a[h]==void 0)if(!d||h in d)a[h]=\nk[h]}return a},prototypedCopy:function(a){var b=function(){};b.prototype=a;return new b},isArray:function(a){return!!a&&a instanceof Array},isEmpty:function(a){for(var b in a)if(a.hasOwnProperty(b))return false;return true},cssVendorPrefix:function(a,b,e){if(e)return c+a+\":\"+b+\";\"+a+\":\"+b;e={};e[a]=b;e[c+a]=b;return e},cssStyleToDomStyle:function(){var a=document.createElement(\"div\").style,b=typeof a.cssFloat!=\"undefined\"?\"cssFloat\":typeof a.styleFloat!=\"undefined\"?\"styleFloat\":\"float\";return function(a){return a==\n\"float\"?b:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){for(var a=[].concat(a),b,e=[],c=0;c<a.length;c++)if(b=a[c])/@import|[{}]/.test(b)?e.push(\"<style>\"+b+\"</style>\"):e.push('<link type=\"text/css\" rel=stylesheet href=\"'+b+'\">');return e.join(\"\")},htmlEncode:function(a){return(\"\"+a).replace(/&/g,\"&amp;\").replace(/>/g,\"&gt;\").replace(/</g,\"&lt;\")},htmlEncodeAttr:function(a){return a.replace(/\"/g,\"&quot;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")},getNextNumber:function(){var a=\n0;return function(){return++a}}(),getNextId:function(){return\"cke_\"+this.getNextNumber()},override:function(a,b){var e=b(a);e.prototype=a.prototype;return e},setTimeout:function(a,b,e,c,g){g||(g=window);e||(e=g);return g.setTimeout(function(){c?a.apply(e,[].concat(c)):a.apply(e)},b||0)},trim:function(){var a=/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g;return function(b){return b.replace(a,\"\")}}(),ltrim:function(){var a=/^[ \\t\\n\\r]+/g;return function(b){return b.replace(a,\"\")}}(),rtrim:function(){var a=/[ \\t\\n\\r]+$/g;\nreturn function(b){return b.replace(a,\"\")}}(),indexOf:function(a,b){if(typeof b==\"function\")for(var c=0,d=a.length;c<d;c++){if(b(a[c]))return c}else{if(a.indexOf)return a.indexOf(b);c=0;for(d=a.length;c<d;c++)if(a[c]===b)return c}return-1},search:function(a,b){var c=CKEDITOR.tools.indexOf(a,b);return c>=0?a[c]:null},bind:function(a,b){return function(){return a.apply(b,arguments)}},createClass:function(a){var b=a.$,c=a.base,d=a.privates||a._,g=a.proto,a=a.statics;!b&&(b=function(){c&&this.base.apply(this,\narguments)});if(d)var k=b,b=function(){var a=this._||(this._={}),b;for(b in d){var f=d[b];a[b]=typeof f==\"function\"?CKEDITOR.tools.bind(f,this):f}k.apply(this,arguments)};if(c){b.prototype=this.prototypedCopy(c.prototype);b.prototype.constructor=b;b.base=c;b.baseProto=c.prototype;b.prototype.base=function(){this.base=c.prototype.base;c.apply(this,arguments);this.base=arguments.callee}}g&&this.extend(b.prototype,g,true);a&&this.extend(b,a,true);return b},addFunction:function(a,f){return b.push(function(){return a.apply(f||\nthis,arguments)})-1},removeFunction:function(a){b[a]=null},callFunction:function(a){var f=b[a];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\\d+\\.?\\d*px$/,b;return function(c){b=CKEDITOR.tools.trim(c+\"\")+\"px\";return a.test(b)?b:c||\"\"}}(),convertToPx:function(){var a;return function(b){if(!a){a=CKEDITOR.dom.element.createFromHtml('<div style=\"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;\"></div>',CKEDITOR.document);\nCKEDITOR.document.getBody().append(a)}if(!/%$/.test(b)){a.setStyle(\"width\",b);return a.$.clientWidth}return b}}(),repeat:function(a,b){return Array(b+1).join(a)},tryThese:function(){for(var a,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(g){}}return a},genKey:function(){return Array.prototype.slice.call(arguments).join(\"-\")},defer:function(a){return function(){var b=arguments,c=this;window.setTimeout(function(){a.apply(c,b)},0)}},normalizeCssText:function(a,b){var c=[],\nd,g=CKEDITOR.tools.parseCssText(a,true,b);for(d in g)c.push(d+\":\"+g[d]);c.sort();return c.length?c.join(\";\")+\";\":\"\"},convertRgbToHex:function(a){return a.replace(/(?:rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\))/gi,function(a,b,c,g){a=[b,c,g];for(b=0;b<3;b++)a[b]=(\"0\"+parseInt(a[b],10).toString(16)).slice(-2);return\"#\"+a.join(\"\")})},parseCssText:function(a,b,c){var d={};if(c){c=new CKEDITOR.dom.element(\"span\");c.setAttribute(\"style\",a);a=CKEDITOR.tools.convertRgbToHex(c.getAttribute(\"style\")||\"\")}if(!a||\na==\";\")return d;a.replace(/&quot;/g,'\"').replace(/\\s*([^:;\\s]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,c,e){if(b){c=c.toLowerCase();c==\"font-family\"&&(e=e.toLowerCase().replace(/[\"']/g,\"\").replace(/\\s*,\\s*/g,\",\"));e=CKEDITOR.tools.trim(e)}d[c]=e});return d}}})();\nCKEDITOR.dtd=function(){var b=CKEDITOR.tools.extend,c=function(a,b){for(var f=CKEDITOR.tools.clone(a),l=1;l<arguments.length;l++){var b=arguments[l],j;for(j in b)delete f[j]}return f},a={},f={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},d={command:1,link:1,meta:1,noscript:1,script:1,style:1},g={},k={\"#\":1},h={center:1,dir:1,noframes:1};\nb(a,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,\"var\":1,video:1,wbr:1},k,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});b(f,e,a,h);c={a:c(a,{a:1,button:1}),abbr:a,address:f,\narea:g,article:b({style:1},f),aside:b({style:1},f),audio:b({source:1,track:1},f),b:a,base:g,bdi:a,bdo:a,blockquote:f,body:f,br:g,button:c(a,{a:1,button:1}),canvas:a,caption:f,cite:a,code:a,col:g,colgroup:{col:1},command:g,datalist:b({option:1},a),dd:f,del:a,details:b({summary:1},f),dfn:a,div:b({style:1},f),dl:{dt:1,dd:1},dt:f,em:a,embed:g,fieldset:b({legend:1},f),figcaption:f,figure:b({figcaption:1},f),footer:f,form:f,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,head:b({title:1,base:1},d),header:f,hgroup:{h1:1,\nh2:1,h3:1,h4:1,h5:1,h6:1},hr:g,html:b({head:1,body:1},f,d),i:a,iframe:k,img:g,input:g,ins:a,kbd:a,keygen:g,label:a,legend:a,li:f,link:g,map:f,mark:a,menu:b({li:1},f),meta:g,meter:c(a,{meter:1}),nav:f,noscript:b({link:1,meta:1,style:1},a),object:b({param:1},a),ol:{li:1},optgroup:{option:1},option:k,output:a,p:a,param:g,pre:a,progress:c(a,{progress:1}),q:a,rp:a,rt:a,ruby:b({rp:1,rt:1},a),s:a,samp:a,script:k,section:b({style:1},f),select:{optgroup:1,option:1},small:a,source:g,span:a,strong:a,style:k,\nsub:a,summary:a,sup:a,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:f,textarea:k,tfoot:{tr:1},th:f,thead:{tr:1},time:c(a,{time:1}),title:k,tr:{th:1,td:1},track:g,u:a,ul:{li:1},\"var\":a,video:b({source:1,track:1},f),wbr:g,acronym:a,applet:b({param:1},f),basefont:g,big:a,center:f,dialog:g,dir:{li:1},font:a,isindex:g,noframes:f,strike:a,tt:a};b(c,{$block:b({audio:1,dd:1,dt:1,li:1,video:1},e,h),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1,\nfieldset:1,figure:1,footer:1,form:1,header:1,hgroup:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1},$inline:a,$list:{dl:1,ol:1,\nul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:b({body:1,head:1,html:1},c.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,\nsub:1,sup:1,time:1,tt:1,u:1,\"var\":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return c}();CKEDITOR.dom.event=function(b){this.$=b};\nCKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var b=this.getKey();if(this.$.ctrlKey||this.$.metaKey)b=b+CKEDITOR.CTRL;this.$.shiftKey&&(b=b+CKEDITOR.SHIFT);this.$.altKey&&(b=b+CKEDITOR.ALT);return b},preventDefault:function(b){var c=this.$;c.preventDefault?c.preventDefault():c.returnValue=false;b&&this.stopPropagation()},stopPropagation:function(){var b=this.$;b.stopPropagation?b.stopPropagation():b.cancelBubble=true},getTarget:function(){var b=\nthis.$.target||this.$.srcElement;return b?new CKEDITOR.dom.node(b):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var b=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(b.documentElement.scrollLeft||b.body.scrollLeft),y:this.$.pageY||this.$.clientY+(b.documentElement.scrollTop||b.body.scrollTop)}}};CKEDITOR.CTRL=1114112;CKEDITOR.SHIFT=2228224;CKEDITOR.ALT=4456448;CKEDITOR.EVENT_PHASE_CAPTURING=1;CKEDITOR.EVENT_PHASE_AT_TARGET=2;\nCKEDITOR.EVENT_PHASE_BUBBLING=3;CKEDITOR.dom.domObject=function(b){if(b)this.$=b};\nCKEDITOR.dom.domObject.prototype=function(){var b=function(b,a){return function(f){typeof CKEDITOR!=\"undefined\"&&b.fire(a,new CKEDITOR.dom.event(f))}};return{getPrivate:function(){var b;if(!(b=this.getCustomData(\"_\")))this.setCustomData(\"_\",b={});return b},on:function(c){var a=this.getCustomData(\"_cke_nativeListeners\");if(!a){a={};this.setCustomData(\"_cke_nativeListeners\",a)}if(!a[c]){a=a[c]=b(this,c);this.$.addEventListener?this.$.addEventListener(c,a,!!CKEDITOR.event.useCapture):this.$.attachEvent&&\nthis.$.attachEvent(\"on\"+c,a)}return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(b){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(b)){var a=this.getCustomData(\"_cke_nativeListeners\"),f=a&&a[b];if(f){this.$.removeEventListener?this.$.removeEventListener(b,f,false):this.$.detachEvent&&this.$.detachEvent(\"on\"+b,f);delete a[b]}}},removeAllListeners:function(){var b=this.getCustomData(\"_cke_nativeListeners\"),a;for(a in b){var f=b[a];this.$.detachEvent?\nthis.$.detachEvent(\"on\"+a,f):this.$.removeEventListener&&this.$.removeEventListener(a,f,false);delete b[a]}}}}();\n(function(b){var c={};CKEDITOR.on(\"reset\",function(){c={}});b.equals=function(a){try{return a&&a.$===this.$}catch(b){return false}};b.setCustomData=function(a,b){var e=this.getUniqueId();(c[e]||(c[e]={}))[a]=b;return this};b.getCustomData=function(a){var b=this.$[\"data-cke-expando\"];return(b=b&&c[b])&&a in b?b[a]:null};b.removeCustomData=function(a){var b=this.$[\"data-cke-expando\"],b=b&&c[b],e,d;if(b){e=b[a];d=a in b;delete b[a]}return d?e:null};b.clearCustomData=function(){this.removeAllListeners();\nvar a=this.$[\"data-cke-expando\"];a&&delete c[a]};b.getUniqueId=function(){return this.$[\"data-cke-expando\"]||(this.$[\"data-cke-expando\"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(b)})(CKEDITOR.dom.domObject.prototype);\nCKEDITOR.dom.node=function(b){return b?new CKEDITOR.dom[b.nodeType==CKEDITOR.NODE_DOCUMENT?\"document\":b.nodeType==CKEDITOR.NODE_ELEMENT?\"element\":b.nodeType==CKEDITOR.NODE_TEXT?\"text\":b.nodeType==CKEDITOR.NODE_COMMENT?\"comment\":b.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?\"documentFragment\":\"domObject\"](b):this};CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject;CKEDITOR.NODE_ELEMENT=1;CKEDITOR.NODE_DOCUMENT=9;CKEDITOR.NODE_TEXT=3;CKEDITOR.NODE_COMMENT=8;CKEDITOR.NODE_DOCUMENT_FRAGMENT=11;\nCKEDITOR.POSITION_IDENTICAL=0;CKEDITOR.POSITION_DISCONNECTED=1;CKEDITOR.POSITION_FOLLOWING=2;CKEDITOR.POSITION_PRECEDING=4;CKEDITOR.POSITION_IS_CONTAINED=8;CKEDITOR.POSITION_CONTAINS=16;\nCKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(b,c){b.append(this,c);return b},clone:function(b,c){var a=this.$.cloneNode(b),f=function(a){a[\"data-cke-expando\"]&&(a[\"data-cke-expando\"]=false);if(a.nodeType==CKEDITOR.NODE_ELEMENT){c||a.removeAttribute(\"id\",false);if(b)for(var a=a.childNodes,d=0;d<a.length;d++)f(a[d])}};f(a);return new CKEDITOR.dom.node(a)},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(b){b.$.parentNode.insertBefore(this.$,\nb.$.nextSibling);return b},insertBefore:function(b){b.$.parentNode.insertBefore(this.$,b.$);return b},insertBeforeMe:function(b){this.$.parentNode.insertBefore(b.$,this.$);return b},getAddress:function(b){for(var c=[],a=this.getDocument().$.documentElement,f=this.$;f&&f!=a;){var e=f.parentNode;e&&c.unshift(this.getIndex.call({$:f},b));f=e}return c},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(b){var c=this.$,a=-1,\nf;if(!this.$.parentNode)return a;do if(!b||!(c!=this.$&&c.nodeType==CKEDITOR.NODE_TEXT&&(f||!c.nodeValue))){a++;f=c.nodeType==CKEDITOR.NODE_TEXT}while(c=c.previousSibling);return a},getNextSourceNode:function(b,c,a){if(a&&!a.call)var f=a,a=function(a){return!a.equals(f)};var b=!b&&this.getFirst&&this.getFirst(),e;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&a&&a(this,true)===false)return null;b=this.getNext()}for(;!b&&(e=(e||this).getParent());){if(a&&a(e,true)===false)return null;b=e.getNext()}return!b||\na&&a(b)===false?null:c&&c!=b.type?b.getNextSourceNode(false,c,a):b},getPreviousSourceNode:function(b,c,a){if(a&&!a.call)var f=a,a=function(a){return!a.equals(f)};var b=!b&&this.getLast&&this.getLast(),e;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&a&&a(this,true)===false)return null;b=this.getPrevious()}for(;!b&&(e=(e||this).getParent());){if(a&&a(e,true)===false)return null;b=e.getPrevious()}return!b||a&&a(b)===false?null:c&&b.type!=c?b.getPreviousSourceNode(false,c,a):b},getPrevious:function(b){var c=\nthis.$,a;do a=(c=c.previousSibling)&&c.nodeType!=10&&new CKEDITOR.dom.node(c);while(a&&b&&!b(a));return a},getNext:function(b){var c=this.$,a;do a=(c=c.nextSibling)&&new CKEDITOR.dom.node(c);while(a&&b&&!b(a));return a},getParent:function(b){var c=this.$.parentNode;return c&&(c.nodeType==CKEDITOR.NODE_ELEMENT||b&&c.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(c):null},getParents:function(b){var c=this,a=[];do a[b?\"push\":\"unshift\"](c);while(c=c.getParent());return a},getCommonAncestor:function(b){if(b.equals(this))return this;\nif(b.contains&&b.contains(this))return b;var c=this.contains?this:this.getParent();do if(c.contains(b))return c;while(c=c.getParent());return null},getPosition:function(b){var c=this.$,a=b.$;if(c.compareDocumentPosition)return c.compareDocumentPosition(a);if(c==a)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&b.type==CKEDITOR.NODE_ELEMENT){if(c.contains){if(c.contains(a))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(a.contains(c))return CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING}if(\"sourceIndex\"in c)return c.sourceIndex<0||a.sourceIndex<0?CKEDITOR.POSITION_DISCONNECTED:c.sourceIndex<a.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}for(var c=this.getAddress(),b=b.getAddress(),a=Math.min(c.length,b.length),f=0;f<=a-1;f++)if(c[f]!=b[f]){if(f<a)return c[f]<b[f]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;break}return c.length<b.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING},getAscendant:function(b,c){var a=this.$,f;if(!c)a=a.parentNode;for(;a;){if(a.nodeName&&(f=a.nodeName.toLowerCase(),typeof b==\"string\"?f==b:f in b))return new CKEDITOR.dom.node(a);a=a.parentNode}return null},hasAscendant:function(b,c){var a=this.$;if(!c)a=a.parentNode;for(;a;){if(a.nodeName&&a.nodeName.toLowerCase()==b)return true;a=a.parentNode}return false},move:function(b,c){b.append(this.remove(),c)},remove:function(b){var c=this.$,a=c.parentNode;if(a){if(b)for(;b=\nc.firstChild;)a.insertBefore(c.removeChild(b),c);a.removeChild(c)}return this},replace:function(b){this.insertBefore(b);b.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var b;this.getFirst&&(b=this.getFirst());){if(b.type==CKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.ltrim(b.getText()),a=b.getLength();if(c){if(c.length<a){b.split(a-c.length);this.$.removeChild(this.$.firstChild)}}else{b.remove();continue}}break}},rtrim:function(){for(var b;this.getLast&&(b=this.getLast());){if(b.type==\nCKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.rtrim(b.getText()),a=b.getLength();if(c){if(c.length<a){b.split(c.length);this.$.lastChild.parentNode.removeChild(this.$.lastChild)}}else{b.remove();continue}}break}if(!CKEDITOR.env.ie&&!CKEDITOR.env.opera)(b=this.$.lastChild)&&(b.type==1&&b.nodeName.toLowerCase()==\"br\")&&b.parentNode.removeChild(b)},isReadOnly:function(){var b=this;this.type!=CKEDITOR.NODE_ELEMENT&&(b=this.getParent());if(b&&typeof b.$.isContentEditable!=\"undefined\")return!(b.$.isContentEditable||\nb.data(\"cke-editable\"));for(;b;){if(b.data(\"cke-editable\"))break;if(b.getAttribute(\"contentEditable\")==\"false\")return true;if(b.getAttribute(\"contentEditable\")==\"true\")break;b=b.getParent()}return!b}});CKEDITOR.dom.window=function(b){CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var b=this.$.document,c=b.compatMode==\"CSS1Compat\";return{width:(c?b.documentElement.clientWidth:b.body.clientWidth)||0,height:(c?b.documentElement.clientHeight:b.body.clientHeight)||0}},getScrollPosition:function(){var b=this.$;if(\"pageXOffset\"in b)return{x:b.pageXOffset||0,y:b.pageYOffset||0};b=b.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||\nb.body.scrollTop||0}},getFrame:function(){var b=this.$.frameElement;return b?new CKEDITOR.dom.element.get(b):null}});CKEDITOR.dom.document=function(b){CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(b){if(this.$.createStyleSheet)this.$.createStyleSheet(b);else{var c=new CKEDITOR.dom.element(\"link\");c.setAttributes({rel:\"stylesheet\",type:\"text/css\",href:b});this.getHead().append(c)}},appendStyleText:function(b){if(this.$.createStyleSheet){var c=this.$.createStyleSheet(\"\");c.cssText=b}else{var a=new CKEDITOR.dom.element(\"style\",this);a.append(new CKEDITOR.dom.text(b,this));this.getHead().append(a)}return c||\na.$.sheet},createElement:function(b,c){var a=new CKEDITOR.dom.element(b,this);if(c){c.attributes&&a.setAttributes(c.attributes);c.styles&&a.setStyles(c.styles)}return a},createText:function(b){return new CKEDITOR.dom.text(b,this)},focus:function(){this.getWindow().focus()},getActive:function(){return new CKEDITOR.dom.element(this.$.activeElement)},getById:function(b){return(b=this.$.getElementById(b))?new CKEDITOR.dom.element(b):null},getByAddress:function(b,c){for(var a=this.$.documentElement,f=\n0;a&&f<b.length;f++){var e=b[f];if(c)for(var d=-1,g=0;g<a.childNodes.length;g++){var k=a.childNodes[g];if(!(c===true&&k.nodeType==3&&k.previousSibling&&k.previousSibling.nodeType==3)){d++;if(d==e){a=k;break}}}else a=a.childNodes[e]}return a?new CKEDITOR.dom.node(a):null},getElementsByTag:function(b,c){if((!CKEDITOR.env.ie||document.documentMode>8)&&c)b=c+\":\"+b;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(b))},getHead:function(){var b=this.$.getElementsByTagName(\"head\")[0];return b=\nb?new CKEDITOR.dom.element(b):this.getDocumentElement().append(new CKEDITOR.dom.element(\"head\"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){var b=new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return b})()},write:function(b){this.$.open(\"text/html\",\"replace\");CKEDITOR.env.isCustomDomain()&&(this.$.domain=document.domain);\nthis.$.write(b);this.$.close()}});CKEDITOR.dom.nodeList=function(b){this.$=b};CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(b){if(b<0||b>=this.$.length)return null;return(b=this.$[b])?new CKEDITOR.dom.node(b):null}};CKEDITOR.dom.element=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createElement(b));CKEDITOR.dom.domObject.call(this,b)};\nCKEDITOR.dom.element.get=function(b){return(b=typeof b==\"string\"?document.getElementById(b)||document.getElementsByName(b)[0]:b)&&(b.$?b:new CKEDITOR.dom.element(b))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(b,c){var a=new CKEDITOR.dom.element(\"div\",c);a.setHtml(b);return a.getFirst().remove()};\nCKEDITOR.dom.element.setMarker=function(b,c,a,f){var e=c.getCustomData(\"list_marker_id\")||c.setCustomData(\"list_marker_id\",CKEDITOR.tools.getNextNumber()).getCustomData(\"list_marker_id\"),d=c.getCustomData(\"list_marker_names\")||c.setCustomData(\"list_marker_names\",{}).getCustomData(\"list_marker_names\");b[e]=c;d[a]=1;return c.setCustomData(a,f)};CKEDITOR.dom.element.clearAllMarkers=function(b){for(var c in b)CKEDITOR.dom.element.clearMarkers(b,b[c],1)};\nCKEDITOR.dom.element.clearMarkers=function(b,c,a){var f=c.getCustomData(\"list_marker_names\"),e=c.getCustomData(\"list_marker_id\"),d;for(d in f)c.removeCustomData(d);c.removeCustomData(\"list_marker_names\");if(a){c.removeCustomData(\"list_marker_id\");delete b[e]}};\n(function(){function b(a){for(var b=0,e=0,d=c[a].length;e<d;e++)b=b+(parseInt(this.getComputedStyle(c[a][e])||0,10)||0);return b}CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:function(a){var b=this.$.className;b&&(RegExp(\"(?:^|\\\\s)\"+a+\"(?:\\\\s|$)\",\"\").test(b)||(b=b+(\" \"+a)));this.$.className=b||a},removeClass:function(a){var b=this.getAttribute(\"class\");if(b){a=RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"i\");if(a.test(b))(b=b.replace(a,\"\").replace(/^\\s+/,\"\"))?this.setAttribute(\"class\",\nb):this.removeAttribute(\"class\")}return this},hasClass:function(a){return RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"\").test(this.getAttribute(\"class\"))},append:function(a,b){typeof a==\"string\"&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element(\"div\",this.getDocument());b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){this.$.text!=\nvoid 0?this.$.text=this.$.text+a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(){for(var a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();if(!a||!a.is||!a.is(\"br\")){a=CKEDITOR.env.opera?this.getDocument().createText(\"\"):this.getDocument().createElement(\"br\");CKEDITOR.env.gecko&&a.setAttribute(\"type\",\"_moz\");this.append(a)}},breakParent:function(a){var b=new CKEDITOR.dom.range(this.getDocument());b.setStartAfter(this);b.setEndAfter(a);\na=b.extractContents();b.insertNode(this.remove());a.insertAfterNode(this)},contains:CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!=a.$&&b.contains(a.$)}:function(a){return!!(this.$.compareDocumentPosition(a.$)&16)},focus:function(){function a(){try{this.$.focus()}catch(a){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\\?[^>]*>/g,\n\"\"):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\\?[^>]*>/,\"\");var a=this.$.ownerDocument.createElement(\"div\");a.appendChild(this.$.cloneNode(true));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:function(){var a=function(a){return this.$.innerHTML=a};return CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(a){try{return this.$.innerHTML=\na}catch(b){this.$.innerHTML=\"\";var c=new CKEDITOR.dom.element(\"body\",this.getDocument());c.$.innerHTML=a;for(c=c.getChildren();c.count();)this.append(c.getItem(0));return a}}:a}(),setText:function(a){CKEDITOR.dom.element.prototype.setText=this.$.innerText!=void 0?function(a){return this.$.innerText=a}:function(a){return this.$.textContent=a};return this.setText(a)},getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?\nfunction(a){switch(a){case \"class\":a=\"className\";break;case \"http-equiv\":a=\"httpEquiv\";break;case \"name\":return this.$.name;case \"tabindex\":a=this.$.getAttribute(a,2);a!==0&&this.$.tabIndex===0&&(a=null);return a;case \"checked\":a=this.$.attributes.getNamedItem(a);return(a.specified?a.nodeValue:this.$.checked)?\"checked\":null;case \"hspace\":case \"value\":return this.$[a];case \"style\":return this.$.style.cssText;case \"contenteditable\":case \"contentEditable\":return this.$.attributes.getNamedItem(\"contentEditable\").specified?\nthis.$.getAttribute(\"contentEditable\"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):\"\"},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,\ngetTabIndex:CKEDITOR.env.ie?function(){var a=this.$.tabIndex;a===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute(\"tabindex\"),10)!==0)&&(a=-1);return a}:CKEDITOR.env.webkit?function(){var a=this.$.tabIndex;if(a==void 0){a=parseInt(this.getAttribute(\"tabindex\"),10);isNaN(a)&&(a=-1)}return a}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||\"\"},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||\nnull},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode>8)){var b=this.$.scopeName;b!=\"HTML\"&&(a=b.toLowerCase()+\":\"+a)}return(this.getName=function(){return a})()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&\n(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if(typeof arguments[0]==\"object\")return!!arguments[0][a];for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return true;return false},isEditable:function(a){var b=this.getName();if(this.isReadOnly()||this.getComputedStyle(\"display\")==\"none\"||this.getComputedStyle(\"visibility\")==\"hidden\"||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is(\"a\")&&\n(this.data(\"cke-saved-name\")||this.hasAttribute(\"name\"))&&!this.getChildCount())return false;if(a!==false){a=CKEDITOR.dtd[b]||CKEDITOR.dtd.span;return!(!a||!a[\"#\"])}return true},isIdentical:function(a){var b=this.clone(0,1),a=a.clone(0,1);b.removeAttributes([\"_moz_dirty\",\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);a.removeAttributes([\"_moz_dirty\",\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);if(b.$.isEqualNode){b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText);\na.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText);return b.$.isEqualNode(a.$)}b=b.getOuterHtml();a=a.getOuterHtml();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&this.is(\"a\")){var c=this.getParent();if(c.type==CKEDITOR.NODE_ELEMENT){c=c.clone();c.setHtml(b);b=c.getHtml();c.setHtml(a);a=c.getHtml()}}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&this.getComputedStyle(\"visibility\")!=\"hidden\",b,c;if(a&&(CKEDITOR.env.webkit||CKEDITOR.env.opera)){b=\nthis.getWindow();if(!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement))a=(new CKEDITOR.dom.element(c)).isVisible()}return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return false;for(var a=this.getChildren(),b=0,c=a.count();b<c;b++){var d=a.getItem(b);if(!(d.type==CKEDITOR.NODE_ELEMENT&&d.data(\"cke-bookmark\"))&&(d.type==CKEDITOR.NODE_ELEMENT&&!d.isEmptyInlineRemoveable()||d.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(d.getText())))return false}return true},\nhasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(){for(var a=this.$.attributes,b=0;b<a.length;b++){var c=a[b];switch(c.nodeName){case \"class\":if(this.getAttribute(\"class\"))return true;case \"data-cke-expando\":continue;default:if(c.specified)return true}}return false}:function(){var a=this.$.attributes,b=a.length,c={\"data-cke-expando\":1,_moz_dirty:1};return b>0&&(b>2||!c[a[0].nodeName]||b==2&&!c[a[1].nodeName])},hasAttribute:function(){function a(a){a=this.$.attributes.getNamedItem(a);\nreturn!(!a||!a.specified)}return CKEDITOR.env.ie&&CKEDITOR.env.version<8?function(b){return b==\"name\"?!!this.$.name:a.call(this,b)}:a}(),hide:function(){this.setStyle(\"display\",\"none\")},moveChildren:function(a,b){var c=this.$,a=a.$;if(c!=a){var d;if(b)for(;d=c.lastChild;)a.insertBefore(c.removeChild(d),a.firstChild);else for(;d=c.firstChild;)a.appendChild(c.removeChild(d))}},mergeSiblings:function(){function a(a,b,c){if(b&&b.type==CKEDITOR.NODE_ELEMENT){for(var g=[];b.data(\"cke-bookmark\")||b.isEmptyInlineRemoveable();){g.push(b);\nb=c?b.getNext():b.getPrevious();if(!b||b.type!=CKEDITOR.NODE_ELEMENT)return}if(a.isIdentical(b)){for(var k=c?a.getLast():a.getFirst();g.length;)g.shift().move(a,!c);b.moveChildren(a,!c);b.remove();k&&k.type==CKEDITOR.NODE_ELEMENT&&k.mergeSiblings()}}}return function(b){if(b===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is(\"a\")){a(this,this.getNext(),true);a(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:\"\",visibility:\"\"})},setAttribute:function(){var a=function(a,\nb){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(b,c){b==\"class\"?this.$.className=c:b==\"style\"?this.$.style.cssText=c:b==\"tabindex\"?this.$.tabIndex=c:b==\"checked\"?this.$.checked=c:b==\"contenteditable\"?a.call(this,\"contentEditable\",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if(b==\"src\"&&c.match(/^http:\\/\\//))try{a.apply(this,arguments)}catch(d){}else a.apply(this,arguments);\nreturn this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a){a==\"class\"?a=\"className\":a==\"tabindex\"?a=\"tabIndex\":a==\"contenteditable\"&&(a=\"contentEditable\");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<\na.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(!b.removeProperty&&(a==\"border\"||a==\"margin\"||a==\"padding\")){var c=[\"top\",\"left\",\"right\",\"bottom\"],d;a==\"border\"&&(d=[\"color\",\"style\",\"width\"]);for(var b=[],g=0;g<c.length;g++)if(d)for(var k=0;k<d.length;k++)b.push([a,c[g],d[k]].join(\"-\"));else b.push([a,c[g]].join(\"-\"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}else{b.removeProperty?b.removeProperty(a):\nb.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a));this.$.style.cssText||this.removeAttribute(\"style\")}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){if(CKEDITOR.env.ie&&CKEDITOR.env.version<9){a=Math.round(a*100);this.setStyle(\"filter\",a>=100?\"\":\"progid:DXImageTransform.Microsoft.Alpha(opacity=\"+a+\")\")}else this.setStyle(\"opacity\",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix(\"user-select\",\n\"none\"));if(CKEDITOR.env.ie||CKEDITOR.env.opera){this.setAttribute(\"unselectable\",\"on\");for(var a,b=this.getElementsByTag(\"*\"),c=0,d=b.count();c<d;c++){a=b.getItem(c);a.setAttribute(\"unselectable\",\"on\")}}},getPositionedAncestor:function(){for(var a=this;a.getName()!=\"html\";){if(a.getComputedStyle(\"position\")!=\"static\")return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,d=this.getDocument(),g=d.getBody(),k=d.$.compatMode==\"BackCompat\";if(document.documentElement.getBoundingClientRect){var h=\nthis.$.getBoundingClientRect(),m=d.$.documentElement,n=m.clientTop||g.$.clientTop||0,o=m.clientLeft||g.$.clientLeft||0,l=true;if(CKEDITOR.env.ie){l=d.getDocumentElement().contains(this);d=d.getBody().contains(this);l=k&&d||!k&&l}if(l){b=h.left+(!k&&m.scrollLeft||g.$.scrollLeft);b=b-o;c=h.top+(!k&&m.scrollTop||g.$.scrollTop);c=c-n}}else{g=this;for(d=null;g&&!(g.getName()==\"body\"||g.getName()==\"html\");){b=b+(g.$.offsetLeft-g.$.scrollLeft);c=c+(g.$.offsetTop-g.$.scrollTop);if(!g.equals(this)){b=b+(g.$.clientLeft||\n0);c=c+(g.$.clientTop||0)}for(;d&&!d.equals(g);){b=b-d.$.scrollLeft;c=c-d.$.scrollTop;d=d.getParent()}d=g;g=(h=g.$.offsetParent)?new CKEDITOR.dom.element(h):null}}if(a){g=this.getWindow();d=a.getWindow();if(!g.equals(d)&&g.$.frameElement){a=(new CKEDITOR.dom.element(g.$.frameElement)).getDocumentPosition(a);b=b+a.x;c=c+a.y}}if(!document.documentElement.getBoundingClientRect&&CKEDITOR.env.gecko&&!k){b=b+(this.$.clientLeft?1:0);c=c+(this.$.clientTop?1:0)}return{x:b,y:c}},scrollIntoView:function(a){var b=\nthis.getParent();if(b){do{(b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is(\"body\")&&this.scrollIntoParent(b,a,1);if(b.is(\"html\")){var c=b.getWindow();try{var d=c.$.frameElement;d&&(b=new CKEDITOR.dom.element(d))}catch(g){}}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var d,g,k,h;function m(b,l){if(/body|html/.test(a.getName()))a.getWindow().$.scrollBy(b,l);else{a.$.scrollLeft=a.$.scrollLeft+b;a.$.scrollTop=a.$.scrollTop+l}}\nfunction n(a,b){var o={x:0,y:0};if(!a.is(l?\"body\":\"html\")){var j=a.$.getBoundingClientRect();o.x=j.left;o.y=j.top}j=a.getWindow();if(!j.equals(b)){j=n(CKEDITOR.dom.element.get(j.$.frameElement),b);o.x=o.x+j.x;o.y=o.y+j.y}return o}function o(a,b){return parseInt(a.getComputedStyle(\"margin-\"+b)||0,10)||0}!a&&(a=this.getWindow());k=a.getDocument();var l=k.$.compatMode==\"BackCompat\";a instanceof CKEDITOR.dom.window&&(a=l?k.getBody():k.getDocumentElement());k=a.getWindow();g=n(this,k);var j=n(a,k),q=this.$.offsetHeight;\nd=this.$.offsetWidth;var y=a.$.clientHeight,z=a.$.clientWidth;k=g.x-o(this,\"left\")-j.x||0;h=g.y-o(this,\"top\")-j.y||0;d=g.x+d+o(this,\"right\")-(j.x+z)||0;g=g.y+q+o(this,\"bottom\")-(j.y+y)||0;if(h<0||g>0)m(0,b===true?h:b===false?g:h<0?h:g);if(c&&(k<0||d>0))m(k<0?k:d,0)},setState:function(a,b,c){b=b||\"cke\";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+\"_on\");this.removeClass(b+\"_off\");this.removeClass(b+\"_disabled\");c&&this.setAttribute(\"aria-pressed\",true);c&&this.removeAttribute(\"aria-disabled\");\nbreak;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+\"_disabled\");this.removeClass(b+\"_off\");this.removeClass(b+\"_on\");c&&this.setAttribute(\"aria-disabled\",true);c&&this.removeAttribute(\"aria-pressed\");break;default:this.addClass(b+\"_off\");this.removeClass(b+\"_on\");this.removeClass(b+\"_disabled\");c&&this.removeAttribute(\"aria-pressed\");c&&this.removeAttribute(\"aria-disabled\")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},\ncopyAttributes:function(a,b){for(var c=this.$.attributes,b=b||{},d=0;d<c.length;d++){var g=c[d],k=g.nodeName.toLowerCase(),h;if(!(k in b))if(k==\"checked\"&&(h=this.getAttribute(k)))a.setAttribute(k,h);else if(g.specified||CKEDITOR.env.ie&&g.nodeValue&&k==\"value\"){h=this.getAttribute(k);if(h===null)h=g.nodeValue;a.setAttribute(k,h)}}if(this.$.style.cssText!==\"\")a.$.style.cssText=this.$.style.cssText},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument(),a=new CKEDITOR.dom.element(a,\nb);this.copyAttributes(a);this.moveChildren(a);this.getParent()&&this.$.parentNode.replaceChild(a.$,this.$);a.$[\"data-cke-expando\"]=this.$[\"data-cke-expando\"];this.$=a.$}},getChild:function(){function a(a,b){var c=a.childNodes;if(b>=0&&b<c.length)return c[b]}return function(b){var c=this.$;if(b.slice)for(;b.length>0&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on(\"contextmenu\",\nfunction(a){a.data.getTarget().hasClass(\"cke_enable_context_menu\")||a.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle(\"direction\")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||\"ltr\":this.getStyle(\"direction\")||this.getAttribute(\"dir\")},data:function(a,b){a=\"data-\"+a;if(b===void 0)return this.getAttribute(a);b===false?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(){var a=CKEDITOR.instances,\nb,c;for(b in a){c=a[b];if(c.element.equals(this)&&c.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null}});var c={width:[\"border-left-width\",\"border-right-width\",\"padding-left\",\"padding-right\"],height:[\"border-top-width\",\"border-bottom-width\",\"padding-top\",\"padding-bottom\"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,e){if(typeof c==\"number\"){if(e&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-b.call(this,a);this.setStyle(a,c+\"px\")}};CKEDITOR.dom.element.prototype.getSize=function(a,\nc){var e=Math.max(this.$[\"offset\"+CKEDITOR.tools.capitalize(a)],this.$[\"client\"+CKEDITOR.tools.capitalize(a)])||0;c&&(e=e-b.call(this,a));return e}})();CKEDITOR.dom.documentFragment=function(b){b=b||CKEDITOR.document;this.$=b.type==CKEDITOR.NODE_DOCUMENT?b.$.createDocumentFragment():b};\nCKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(b){b=b.$;b.parentNode.insertBefore(this.$,b.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});\n(function(){function b(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,n=c.startContainer;d=c.endContainer;var o=c.startOffset,l=c.endOffset,j,q=this.guard,f=this.type,e=a?\"getPreviousSourceNode\":\"getNextSourceNode\";if(!a&&!this._.guardLTR){var i=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),s=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(l):d.getNext();this._.guardLTR=function(a,b){return(!b||!i.equals(a))&&(!s||\n!a.equals(s))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var A=n.type==CKEDITOR.NODE_ELEMENT?n:n.getParent(),B=n.type==CKEDITOR.NODE_ELEMENT?o?n.getChild(o-1):null:n.getPrevious();this._.guardRTL=function(a,b){return(!b||!A.equals(a))&&(!B||!a.equals(B))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var p=a?this._.guardRTL:this._.guardLTR;j=q?function(a,b){return p(a,b)===false?false:q(a,b)}:p;if(this.current)d=this.current[e](false,f,j);else{if(a)d.type==\nCKEDITOR.NODE_ELEMENT&&(d=l>0?d.getChild(l-1):j(d,true)===false?null:d.getPreviousSourceNode(true,f,j));else{d=n;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(o)))d=j(n,true)===false?null:n.getNextSourceNode(true,f,j)}d&&j(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[e](false,f,j)}this.end();return this.current=null}function c(a){for(var c,d=null;c=b.call(this,a);)d=c;return d}\nCKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return b.call(this)},previous:function(){return b.call(this,1)},checkForward:function(){return b.call(this,0,1)!==false},checkBackward:function(){return b.call(this,1,1)!==false},lastForward:function(){return c.call(this)},lastBackward:function(){return c.call(this,1)},reset:function(){delete this.current;this._={}}}});var a={block:1,\"list-item\":1,table:1,\"table-row-group\":1,\n\"table-header-group\":1,\"table-footer-group\":1,\"table-row\":1,\"table-column-group\":1,\"table-column\":1,\"table-cell\":1,\"table-caption\":1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(b){b=b?CKEDITOR.tools.extend({},CKEDITOR.dtd.$block,b||{}):CKEDITOR.dtd.$block;return this.getComputedStyle(\"float\")==\"none\"&&a[this.getComputedStyle(\"display\")]||b[this.getName()]};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=\nfunction(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&a.getName()==\"span\"&&a.data(\"cke-bookmark\")}return function(d){var n,o;n=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(o=d.getParent())&&c(o);n=a?n:n||c(d);return!!(b^n)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==\"​\");return!!(a^c)}};CKEDITOR.dom.walker.invisible=\nfunction(a){var b=CKEDITOR.dom.walker.whitespaces();return function(c){if(b(c))c=1;else{c.type==CKEDITOR.NODE_TEXT&&(c=c.getParent());c=!c.$.offsetHeight}return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!e(a)&&!d(a)}return function(c){var d=!CKEDITOR.env.ie?c.is&&c.is(\"br\"):c.getText&&f.test(c.getText());if(d){d=c.getParent();c=c.getNext(b);d=d.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&&\nc.isBlockBoundary())}return!!(a^d)}};var f=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/,e=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark();CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(d(a)||e(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty));return a&&(!CKEDITOR.env.ie?a.is&&a.is(\"br\"):a.getText&&f.test(a.getText()))?a:false}})();\nCKEDITOR.dom.range=function(b){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var c=b instanceof CKEDITOR.dom.document;this.document=c?b:b.getDocument();this.root=c?b.getBody():b};\n(function(){function b(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(true),c=CKEDITOR.dom.walker.bogus();return function(q){if(l(q)||b(q))return true;if(c(q)&&!a)return a=true;return q.type==CKEDITOR.NODE_TEXT&&(q.hasAscendant(\"pre\")||CKEDITOR.tools.trim(q.getText()).length)||q.type==CKEDITOR.NODE_ELEMENT&&!q.is(d)?false:true}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(1);return function(c){return l(c)||b(c)?true:!a&&g(c)||\nc.type==CKEDITOR.NODE_ELEMENT&&c.is(CKEDITOR.dtd.$removeEmpty)}}function a(a){return!k(a)&&!h(a)}var f=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},e=function(a,b,l,c){a.optimizeBookmark();var d=a.startContainer,g=a.endContainer,f=a.startOffset,i=a.endOffset,e,k;if(g.type==CKEDITOR.NODE_TEXT)g=g.split(i);else if(g.getChildCount()>0)if(i>=g.getChildCount()){g=g.append(a.document.createText(\"\"));k=true}else g=g.getChild(i);\nif(d.type==CKEDITOR.NODE_TEXT){d.split(f);d.equals(g)&&(g=d.getNext())}else if(f)if(f>=d.getChildCount()){d=d.append(a.document.createText(\"\"));e=true}else d=d.getChild(f).getPrevious();else{d=d.append(a.document.createText(\"\"),1);e=true}var f=d.getParents(),i=g.getParents(),h,p,m;for(h=0;h<f.length;h++){p=f[h];m=i[h];if(!p.equals(m))break}for(var u=l,r,D,v,t=h;t<f.length;t++){r=f[t];u&&!r.equals(d)&&(D=u.append(r.clone()));for(r=r.getNext();r;){if(r.equals(i[t])||r.equals(g))break;v=r.getNext();\nif(b==2)u.append(r.clone(true));else{r.remove();b==1&&u.append(r)}r=v}u&&(u=D)}u=l;for(l=h;l<i.length;l++){r=i[l];b>0&&!r.equals(g)&&(D=u.append(r.clone()));if(!f[l]||r.$.parentNode!=f[l].$.parentNode)for(r=r.getPrevious();r;){if(r.equals(f[l])||r.equals(d))break;v=r.getPrevious();if(b==2)u.$.insertBefore(r.$.cloneNode(true),u.$.firstChild);else{r.remove();b==1&&u.$.insertBefore(r.$,u.$.firstChild)}r=v}u&&(u=D)}if(b==2){p=a.startContainer;if(p.type==CKEDITOR.NODE_TEXT){p.$.data=p.$.data+p.$.nextSibling.data;\np.$.parentNode.removeChild(p.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(p&&m&&(d.$.parentNode!=p.$.parentNode||g.$.parentNode!=m.$.parentNode)){b=m.getIndex();e&&m.$.parentNode==d.$.parentNode&&b--;if(c&&p.type==CKEDITOR.NODE_ELEMENT){c=CKEDITOR.dom.element.createFromHtml('<span data-cke-bookmark=\"1\" style=\"display:none\">&nbsp;</span>',a.document);c.insertAfter(p);p.mergeSiblings(false);\na.moveToBookmark({startNode:c})}else a.setStart(m.getParent(),b)}a.collapse(true)}e&&d.remove();k&&g.$.parentNode&&g.remove()},d={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,\"var\":1},g=CKEDITOR.dom.walker.bogus(),k=new CKEDITOR.dom.walker.whitespaces,h=new CKEDITOR.dom.walker.bookmark,m=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/;CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);\na.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,2,a);return a},deleteContents:function(a){this.collapsed||\ne(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,b,a);return b},createBookmark:function(a){var b,l,c,d,g=this.collapsed;b=this.document.createElement(\"span\");b.data(\"cke-bookmark\",1);b.setStyle(\"display\",\"none\");b.setHtml(\"&nbsp;\");if(a){c=\"cke_bm_\"+CKEDITOR.tools.getNextNumber();b.setAttribute(\"id\",c+(g?\"C\":\"S\"))}if(!g){l=b.clone();l.setHtml(\"&nbsp;\");a&&l.setAttribute(\"id\",c+\"E\");d=this.clone();d.collapse();d.insertNode(l)}d=\nthis.clone();d.collapse(true);d.insertNode(b);if(l){this.setStartAfter(b);this.setEndBefore(l)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?c+(g?\"C\":\"S\"):b,endNode:a?c+\"E\":l,serializable:a,collapsed:g}},createBookmark2:function(a){var b=this.startContainer,l=this.endContainer,c=this.startOffset,d=this.endOffset,g=this.collapsed,f,i;if(!b||!l)return{start:0,end:0};if(a){if(b.type==CKEDITOR.NODE_ELEMENT){if((f=b.getChild(c))&&f.type==CKEDITOR.NODE_TEXT&&c>0&&f.getPrevious().type==\nCKEDITOR.NODE_TEXT){b=f;c=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(c=f.getIndex(1))}for(;b.type==CKEDITOR.NODE_TEXT&&(i=b.getPrevious())&&i.type==CKEDITOR.NODE_TEXT;){b=i;c=c+i.getLength()}if(!g){if(l.type==CKEDITOR.NODE_ELEMENT){if((f=l.getChild(d))&&f.type==CKEDITOR.NODE_TEXT&&d>0&&f.getPrevious().type==CKEDITOR.NODE_TEXT){l=f;d=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(d=f.getIndex(1))}for(;l.type==CKEDITOR.NODE_TEXT&&(i=l.getPrevious())&&i.type==CKEDITOR.NODE_TEXT;){l=i;d=d+i.getLength()}}}return{start:b.getAddress(a),\nend:g?null:l.getAddress(a),startOffset:c,endOffset:d,normalized:a,collapsed:g,is2:true}},moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),l=a.startOffset,c=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,l);c?this.setEnd(c,a):this.collapse(true)}else{b=(l=a.serializable)?this.document.getById(a.startNode):a.startNode;a=l?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a);\na.remove()}else this.collapse(true)}},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,l=this.startOffset,c=this.endOffset,d;if(a.type==CKEDITOR.NODE_ELEMENT){d=a.getChildCount();if(d>l)a=a.getChild(l);else if(d<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){d=b.getChildCount();if(d>c)b=b.getChild(c).getPreviousSourceNode(true);else if(d<1)b=b.getPreviousSourceNode();\nelse{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var l=this.startContainer,c=this.endContainer,l=l.equals(c)?a&&l.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?l.getChild(this.startOffset):l:l.getCommonAncestor(c);return b&&!l.is?l.getParent():l},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=\na.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is(\"span\")&&a.data(\"cke-bookmark\"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is(\"span\")&&b.data(\"cke-bookmark\"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,\nj=this.startOffset,d=this.collapsed;if((!a||d)&&c&&c.type==CKEDITOR.NODE_TEXT){if(j)if(j>=c.getLength()){j=c.getIndex()+1;c=c.getParent()}else{var g=c.split(j),j=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(g,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=this.endOffset+1}else{j=c.getIndex();c=c.getParent()}this.setStart(c,j);if(d){this.collapse(true);return}}c=this.endContainer;j=this.endOffset;if(!b&&!d&&c&&c.type==\nCKEDITOR.NODE_TEXT){if(j){j>=c.getLength()||c.split(j);j=c.getIndex()+1}else j=c.getIndex();c=c.getParent();this.setEnd(c,j)}},enlarge:function(a,b){switch(a){case CKEDITOR.ENLARGE_INLINE:var c=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var j=this.getCommonAncestor(),d=this.root,g,f,i,e,h,k=false,p,m;p=this.startContainer;m=this.startOffset;if(p.type==CKEDITOR.NODE_TEXT){if(m){p=!CKEDITOR.tools.trim(p.substring(0,m)).length&&p;k=!!p}if(p&&!(e=p.getPrevious()))i=p.getParent()}else{m&&\n(e=p.getChild(m-1)||p.getLast());e||(i=p)}for(;i||e;){if(i&&!e){!h&&i.equals(j)&&(h=true);if(c?i.isBlockBoundary():!d.contains(i))break;if(!k||i.getComputedStyle(\"display\")!=\"inline\"){k=false;h?g=i:this.setStartBefore(i)}e=i.getPrevious()}for(;e;){p=false;if(e.type==CKEDITOR.NODE_COMMENT)e=e.getPrevious();else{if(e.type==CKEDITOR.NODE_TEXT){m=e.getText();/[^\\s\\ufeff]/.test(m)&&(e=null);p=/[\\s\\ufeff]$/.test(m)}else if((e.$.offsetWidth>0||b&&e.is(\"br\"))&&!e.data(\"cke-bookmark\"))if(k&&CKEDITOR.dtd.$removeEmpty[e.getName()]){m=\ne.getText();if(/[^\\s\\ufeff]/.test(m))e=null;else for(var u=e.$.getElementsByTagName(\"*\"),r=0,D;D=u[r++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){e=null;break}e&&(p=!!m.length)}else e=null;p&&(k?h?g=i:i&&this.setStartBefore(i):k=true);if(e){p=e.getPrevious();if(!i&&!p){i=e;e=null;break}e=p}else i=null}}i&&(i=i.getParent())}p=this.endContainer;m=this.endOffset;i=e=null;h=k=false;if(p.type==CKEDITOR.NODE_TEXT){p=!CKEDITOR.tools.trim(p.substring(m)).length&&p;k=!(p&&p.getLength());if(p&&\n!(e=p.getNext()))i=p.getParent()}else(e=p.getChild(m))||(i=p);for(;i||e;){if(i&&!e){!h&&i.equals(j)&&(h=true);if(c?i.isBlockBoundary():!d.contains(i))break;if(!k||i.getComputedStyle(\"display\")!=\"inline\"){k=false;h?f=i:i&&this.setEndAfter(i)}e=i.getNext()}for(;e;){p=false;if(e.type==CKEDITOR.NODE_TEXT){m=e.getText();/[^\\s\\ufeff]/.test(m)&&(e=null);p=/^[\\s\\ufeff]/.test(m)}else if(e.type==CKEDITOR.NODE_ELEMENT){if((e.$.offsetWidth>0||b&&e.is(\"br\"))&&!e.data(\"cke-bookmark\"))if(k&&CKEDITOR.dtd.$removeEmpty[e.getName()]){m=\ne.getText();if(/[^\\s\\ufeff]/.test(m))e=null;else{u=e.$.getElementsByTagName(\"*\");for(r=0;D=u[r++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){e=null;break}}e&&(p=!!m.length)}else e=null}else p=1;p&&k&&(h?f=i:this.setEndAfter(i));if(e){p=e.getNext();if(!i&&!p){i=e;e=null;break}e=p}else i=null}i&&(i=i.getParent())}if(g&&f){j=g.contains(f)?f:g;this.setStartBefore(j);this.setEndAfter(j)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:i=new CKEDITOR.dom.range(this.root);\nd=this.root;i.setStartAt(d,CKEDITOR.POSITION_AFTER_START);i.setEnd(this.startContainer,this.startOffset);i=new CKEDITOR.dom.walker(i);var v,t,w=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),I=function(a){var b=w(a);b||(v=a);return b},c=function(a){var b=I(a);!b&&(a.is&&a.is(\"br\"))&&(t=a);return b};i.guard=I;i=i.lastBackward();v=v||d;this.setStartAt(v,!v.is(\"br\")&&(!i&&this.checkStartOfBlock()||i&&v.contains(i))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);\nif(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){i=this.clone();i=new CKEDITOR.dom.walker(i);var G=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();i.evaluator=function(a){return!G(a)&&!C(a)};if((i=i.previous())&&i.type==CKEDITOR.NODE_ELEMENT&&i.is(\"br\"))break}i=this.clone();i.collapse();i.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);i=new CKEDITOR.dom.walker(i);i.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?c:I;v=null;i=i.lastForward();v=v||d;this.setEndAt(v,!i&&this.checkEndOfBlock()||i&&\nv.contains(i)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);t&&this.setEndAfter(t)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,j=this.clone(),d=this.startContainer,g=this.endContainer,f=this.startOffset,e=this.endOffset,k=1,h=1;if(d&&d.type==CKEDITOR.NODE_TEXT)if(f)if(f>=d.getLength())j.setStartAfter(d);else{j.setStartBefore(d);k=0}else j.setStartBefore(d);if(g&&g.type==CKEDITOR.NODE_TEXT)if(e)if(e>=g.getLength())j.setEndAfter(g);else{j.setEndAfter(g);\nh=0}else j.setEndBefore(g);var j=new CKEDITOR.dom.walker(j),m=CKEDITOR.dom.walker.bookmark();j.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var p;j.guard=function(b,j){if(m(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||j&&b.equals(p)||c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary())return false;!j&&b.type==CKEDITOR.NODE_ELEMENT&&(p=b);return true};if(k)(d=j[a==CKEDITOR.SHRINK_ELEMENT?\"lastForward\":\n\"next\"]())&&this.setStartAt(d,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(h){j.reset();(j=j[a==CKEDITOR.SHRINK_ELEMENT?\"lastBackward\":\"previous\"]())&&this.setEndAt(j,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!k&&!h)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},\nmoveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer=\na;this.endOffset=b}f(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset=b}f(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),\na.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}f(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==\nCKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}f(this)},fixBlock:function(a,b){var c=this.createBookmark(),j=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(j);j.trim();CKEDITOR.env.ie||j.appendBogus();this.insertNode(j);this.moveToBookmark(c);return j},splitBlock:function(a){var b=\nnew CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),j=b.block,d=c.block,g=null;if(!b.blockLimit.equals(c.blockLimit))return null;if(a!=\"br\"){if(!j){j=this.fixBlock(true,a);d=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}d||(d=this.fixBlock(false,a))}a=j&&this.checkStartOfBlock();b=d&&this.checkEndOfBlock();this.deleteContents();if(j&&j.equals(d))if(b){g=new CKEDITOR.dom.elementPath(this.startContainer,this.root);\nthis.moveToPosition(d,CKEDITOR.POSITION_AFTER_END);d=null}else if(a){g=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(j,CKEDITOR.POSITION_BEFORE_START);j=null}else{d=this.splitElement(j);!CKEDITOR.env.ie&&!j.is(\"ul\",\"ol\")&&j.appendBogus()}return{previousBlock:j,nextBlock:d,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:g}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false);\nb.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(j){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||j.is(\"table\")&&a.is(\"caption\")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),l=this[b?\"endPath\":\"startPath\"](),d=l.block||l.blockLimit,o;d&&!d.equals(l.root)&&!d.getFirst(a(d));){o=\nd.getParent();this[b?\"setEndAt\":\"setStartAt\"](d,CKEDITOR.POSITION_AFTER_END);d.remove(1);d=o}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var l=b==CKEDITOR.START,d=this.clone();d.collapse(l);d[l?\"setStartAt\":\"setEndAt\"](a,l?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(d);\nd.evaluator=c(l);return d[l?\"checkBackward\":\"checkForward\"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT){a=CKEDITOR.tools.ltrim(a.substring(0,c));m.test(a)&&this.trim(0,1)}this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(true);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=\nthis.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT){a=CKEDITOR.tools.rtrim(a.substring(c));m.test(a)&&this.trim(1,0)}this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);\nc=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttribute(\"contentEditable\")==\"false\"&&!b.data(\"cke-editable\"))return 0;if(b.is(\"html\")||b.getAttribute(\"contentEditable\")==\"true\"&&(b.contains(c)||b.equals(c)))break}b=\nb.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(b,c){if(b.type==CKEDITOR.NODE_ELEMENT&&!b.isEditable(false)){this.moveToPosition(b,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var l=0;b;){if(b.type==CKEDITOR.NODE_TEXT){c&&this.checkEndOfBlock()&&m.test(b.getText())?this.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(b,c?CKEDITOR.POSITION_AFTER_END:\nCKEDITOR.POSITION_BEFORE_START);l=1;break}if(b.type==CKEDITOR.NODE_ELEMENT)if(b.isEditable()){this.moveToPosition(b,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);l=1}else c&&(b.is(\"br\")&&this.checkEndOfBlock())&&this.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);var d=b,g=l,f=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(false)&&(f=d[c?\"getLast\":\"getFirst\"](a));!g&&!f&&(f=d[c?\"getPrevious\":\"getNext\"](a));b=f}return!!l},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},\nmoveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=\nthis.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",this.document),b,c,d,g=this.clone();g.optimize();if(d=g.startContainer.type==CKEDITOR.NODE_TEXT){c=g.startContainer.getText();b=g.startContainer.split(g.startOffset);\na.insertAfter(g.startContainer)}else g.insertNode(a);a.scrollIntoView();if(d){g.startContainer.setText(c);b.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;\n(function(){function b(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function c(a,b,c){for(a=a.getNextSourceNode(b,null,c);!f(a);)a=a.getNextSourceNode(b,null,c);return a}var a=/^[\\r\\n\\t ]+$/,f=CKEDITOR.dom.walker.bookmark(false,true),e=CKEDITOR.dom.walker.whitespaces(true),d=function(a){return f(a)&&e(a)};b.prototype={getNextParagraph:function(b){b=b||\"p\";if(!CKEDITOR.dtd[this.range.root.getName()][b])return null;var e,\nh,m,n,o,l;if(!this._.started){h=this.range.clone();h.shrink(CKEDITOR.NODE_ELEMENT,true);n=h.endContainer.hasAscendant(\"pre\",true)||h.startContainer.hasAscendant(\"pre\",true);h.enlarge(this.forceBrBreak&&!n||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!h.collapsed){n=new CKEDITOR.dom.walker(h.clone());var j=CKEDITOR.dom.walker.bookmark(true,true);n.evaluator=j;this._.nextNode=n.next();n=new CKEDITOR.dom.walker(h.clone());n.evaluator=j;n=n.previous();this._.lastNode=\nn.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){j=this.range.clone();j.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(j.checkEndOfBlock()){j=new CKEDITOR.dom.elementPath(j.endContainer,j.root);this._.lastNode=(j.block||j.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode){this._.lastNode=this._.docEndMarker=h.document.createText(\"\");this._.lastNode.insertAfter(n)}h=\nnull}this._.started=1}j=this._.nextNode;n=this._.lastNode;for(this._.nextNode=null;j;){var q=0,y=j.hasAscendant(\"pre\"),z=j.type!=CKEDITOR.NODE_ELEMENT,i=0;if(z)j.type==CKEDITOR.NODE_TEXT&&a.test(j.getText())&&(z=0);else{var s=j.getName();if(j.isBlockBoundary(this.forceBrBreak&&!y&&{br:1})){if(s==\"br\")z=1;else if(!h&&!j.getChildCount()&&s!=\"hr\"){e=j;m=j.equals(n);break}if(h){h.setEndAt(j,CKEDITOR.POSITION_BEFORE_START);if(s!=\"br\")this._.nextNode=j}q=1}else{if(j.getFirst()){if(!h){h=this.range.clone();\nh.setStartAt(j,CKEDITOR.POSITION_BEFORE_START)}j=j.getFirst();continue}z=1}}if(z&&!h){h=this.range.clone();h.setStartAt(j,CKEDITOR.POSITION_BEFORE_START)}m=(!q||z)&&j.equals(n);if(h&&!q)for(;!j.getNext(d)&&!m;){s=j.getParent();if(s.isBlockBoundary(this.forceBrBreak&&!y&&{br:1})){q=1;z=0;m||s.equals(n);h.setEndAt(s,CKEDITOR.POSITION_BEFORE_END);break}j=s;z=1;m=j.equals(n);i=1}z&&h.setEndAt(j,CKEDITOR.POSITION_AFTER_END);j=c(j,i,n);if((m=!j)||q&&h)break}if(!e){if(!h){this._.docEndMarker&&this._.docEndMarker.remove();\nreturn this._.nextNode=null}e=new CKEDITOR.dom.elementPath(h.startContainer,h.root);j=e.blockLimit;q={div:1,th:1,td:1};e=e.block;if(!e&&j&&!this.enforceRealBlocks&&q[j.getName()]&&h.checkStartOfBlock()&&h.checkEndOfBlock()&&!j.equals(h.root))e=j;else if(!e||this.enforceRealBlocks&&e.getName()==\"li\"){e=this.range.document.createElement(b);h.extractContents().appendTo(e);e.trim();h.insertNode(e);o=l=true}else if(e.getName()!=\"li\"){if(!h.checkStartOfBlock()||!h.checkEndOfBlock()){e=e.clone(false);h.extractContents().appendTo(e);\ne.trim();l=h.splitBlock();o=!l.wasStartOfBlock;l=!l.wasEndOfBlock;h.insertNode(e)}}else if(!m)this._.nextNode=e.equals(n)?null:c(h.getBoundaryNodes().endNode,1,n)}if(o)(h=e.getPrevious())&&h.type==CKEDITOR.NODE_ELEMENT&&(h.getName()==\"br\"?h.remove():h.getLast()&&h.getLast().$.nodeName.toLowerCase()==\"br\"&&h.getLast().remove());if(l)(h=e.getLast())&&h.type==CKEDITOR.NODE_ELEMENT&&h.getName()==\"br\"&&(CKEDITOR.env.ie||h.getPrevious(f)||h.getNext(f))&&h.remove();if(!this._.nextNode)this._.nextNode=m||\ne.equals(n)||!n?null:c(e,1,n);return e}};CKEDITOR.dom.range.prototype.createIterator=function(){return new b(this)}})();\nCKEDITOR.command=function(b,c){this.uiItems=[];this.exec=function(a){if(this.state==CKEDITOR.TRISTATE_DISABLED)return false;this.editorFocus&&b.focus();return this.fire(\"exec\")===false?true:c.exec.call(this,b,a)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}this.enable();return this.fire(\"refresh\",{editor:a,path:b})===false?true:c.refresh&&c.refresh.apply(this,arguments)!==false};CKEDITOR.tools.extend(this,\nc,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!c.context,state:CKEDITOR.TRISTATE_OFF});CKEDITOR.event.call(this)};\nCKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(!this.preserveState||typeof this.previousState==\"undefined\"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(b){if(this.state==b)return false;this.previousState=this.state;this.state=b;this.fire(\"state\");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&\nthis.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3;\nCKEDITOR.config={customConfig:\"config.js\",autoUpdateElement:!0,language:\"\",defaultLanguage:\"en\",contentsLangDirection:\"\",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:\"<!DOCTYPE html>\",bodyId:\"\",bodyClass:\"\",fullPage:!1,height:200,extraPlugins:\"\",removePlugins:\"\",protectedSource:[],tabIndex:0,width:\"\",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]};\n(function(){CKEDITOR.focusManager=function(b){if(b.focusManager)return b.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:b};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(){this._.timer&&clearTimeout(this._.timer);if(!this.hasFocus&&!this._.locked){var b=CKEDITOR.currentInstance;b&&b.focusManager.blur(1);this.hasFocus=true;(b=this._.editor.container)&&b.addClass(\"cke_focus\");this._.editor.fire(\"focus\")}},lock:function(){this._.locked=\n1},unlock:function(){delete this._.locked},blur:function(b){function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass(\"cke_focus\");this._.editor.fire(\"blur\")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var a=CKEDITOR.focusManager._.blurDelay;b||!a?c.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;c.call(this)},a,this)}},add:function(b,c){var a=b.getCustomData(\"focusmanager\");if(!a||a!=this){a&&a.remove(b);var a=\n\"focus\",f=\"blur\";if(c)if(CKEDITOR.env.ie){a=\"focusin\";f=\"focusout\"}else CKEDITOR.event.useCapture=1;var e={blur:function(){b.equals(this.currentActive)&&this.blur()},focus:function(){this.currentActive=b;this.focus()}};b.on(a,e.focus,this);b.on(f,e.blur,this);if(c)CKEDITOR.event.useCapture=0;b.setCustomData(\"focusmanager\",this);b.setCustomData(\"focusmanager_handlers\",e)}},remove:function(b){b.removeCustomData(\"focusmanager\");var c=b.removeCustomData(\"focusmanager_handlers\");b.removeListener(\"blur\",\nc.blur);b.removeListener(\"focus\",c.focus)}}})();CKEDITOR.keystrokeHandler=function(b){if(b.keystrokeHandler)return b.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:b};return this};\n(function(){var b,c=function(a){var a=a.data,c=a.getKeystroke(),d=this.keystrokes[c],g=this._.editor;b=g.fire(\"key\",{keyCode:c})===false;if(!b){d&&(b=g.execCommand(d,{from:\"keystrokeHandler\"})!==false);b||(b=!!this.blockedKeystrokes[c])}b&&a.preventDefault(true);return!b},a=function(a){if(b){b=false;a.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(b){b.on(\"keydown\",c,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)b.on(\"keypress\",a,this)}}})();\n(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,\"en-au\":1,\"en-ca\":1,\"en-gb\":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,\"fr-ca\":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,\"pt-br\":1,pt:1,ro:1,ru:1,sk:1,sl:1,\"sr-latn\":1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,\"zh-cn\":1,zh:1},load:function(b,c,a){if(!b||!CKEDITOR.lang.languages[b])b=this.detect(c,b);this[b]?a(b,this[b]):CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(\"lang/\"+\nb+\".js\"),function(){a(b,this[b])},this)},detect:function(b,c){var a=this.languages,c=c||navigator.userLanguage||navigator.language||b,f=c.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=f[1],f=f[2];a[e+\"-\"+f]?e=e+\"-\"+f:a[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||b}}})();\nCKEDITOR.scriptLoader=function(){var b={},c={};return{load:function(a,f,e,d){var g=typeof a==\"string\";g&&(a=[a]);e||(e=CKEDITOR);var k=a.length,h=[],m=[],n=function(a){f&&(g?f.call(e,a):f.call(e,h,m))};if(k===0)n(true);else{var o=function(a,b){(b?h:m).push(a);if(--k<=0){d&&CKEDITOR.document.getDocumentElement().removeStyle(\"cursor\");n(b)}},l=function(a,l){b[a]=1;var d=c[a];delete c[a];for(var j=0;j<d.length;j++)d[j](a,l)},j=function(a){if(b[a])o(a,true);else{var d=c[a]||(c[a]=[]);d.push(o);if(!(d.length>\n1)){var j=new CKEDITOR.dom.element(\"script\");j.setAttributes({type:\"text/javascript\",src:a});if(f)if(CKEDITOR.env.ie)j.$.onreadystatechange=function(){if(j.$.readyState==\"loaded\"||j.$.readyState==\"complete\"){j.$.onreadystatechange=null;l(a,true)}};else{j.$.onload=function(){setTimeout(function(){l(a,true)},0)};j.$.onerror=function(){l(a,false)}}j.appendTo(CKEDITOR.document.getHead())}}};d&&CKEDITOR.document.getDocumentElement().setStyle(\"cursor\",\"wait\");for(var q=0;q<k;q++)j(a[q])}}}}();\nCKEDITOR.resourceManager=function(b,c){this.basePath=b;this.fileName=c;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}};\nCKEDITOR.resourceManager.prototype={add:function(b,c){if(this.registered[b])throw'[CKEDITOR.resourceManager.add] The resource name \"'+b+'\" is already registered.';var a=this.registered[b]=c||{};a.name=b;a.path=this.getPath(b);CKEDITOR.fire(b+CKEDITOR.tools.capitalize(this.fileName)+\"Ready\",a);return this.get(b)},get:function(b){return this.registered[b]||null},getPath:function(b){var c=this.externals[b];return CKEDITOR.getUrl(c&&c.dir||this.basePath+b+\"/\")},getFilePath:function(b){var c=this.externals[b];\nreturn CKEDITOR.getUrl(this.getPath(b)+(c&&typeof c.file==\"string\"?c.file:this.fileName+\".js\"))},addExternal:function(b,c,a){for(var b=b.split(\",\"),f=0;f<b.length;f++)this.externals[b[f]]={dir:c,file:a}},load:function(b,c,a){CKEDITOR.tools.isArray(b)||(b=b?[b]:[]);for(var f=this.loaded,e=this.registered,d=[],g={},k={},h=0;h<b.length;h++){var m=b[h];if(m)if(!f[m]&&!e[m]){var n=this.getFilePath(m);d.push(n);n in g||(g[n]=[]);g[n].push(m)}else k[m]=this.get(m)}CKEDITOR.scriptLoader.load(d,function(b,\nl){if(l.length)throw'[CKEDITOR.resourceManager.load] Resource name \"'+g[l[0]].join(\",\")+'\" was not found at \"'+l[0]+'\".';for(var d=0;d<b.length;d++)for(var e=g[b[d]],h=0;h<e.length;h++){var m=e[h];k[m]=this.get(m);f[m]=1}c.call(a,k)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager(\"plugins/\",\"plugin\");\nCKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(b){var c={};return function(a,f,e){var d={},g=function(a){b.call(this,a,function(a){CKEDITOR.tools.extend(d,a);var b=[],k;for(k in a){var o=a[k],l=o&&o.requires;if(!c[k]){if(o.icons)for(var j=o.icons.split(\",\"),q=0;q<j.length;q++)CKEDITOR.skin.addIcon(j[q],o.path+\"icons/\"+j[q]+\".png\");c[k]=1}if(l){l.split&&(l=l.split(\",\"));for(o=0;o<l.length;o++)d[l[o]]||b.push(l[o])}}if(b.length)g.call(this,b);else{for(k in d){o=d[k];if(o.onLoad&&\n!o.onLoad._called){o.onLoad()===false&&delete d[k];o.onLoad._called=1}}f&&f.call(e||window,d)}},this)};g.call(this,a)}});CKEDITOR.plugins.setLang=function(b,c,a){var f=this.get(b),b=f.langEntries||(f.langEntries={}),f=f.lang||(f.lang=[]);f.split&&(f=f.split(\",\"));CKEDITOR.tools.indexOf(f,c)==-1&&f.push(c);b[c]=a};CKEDITOR.ui=function(b){if(b.ui)return b.ui;this.items={};this.instances={};this.editor=b;this._={handlers:{}};return this};\nCKEDITOR.ui.prototype={add:function(b,c,a){a.name=b.toLowerCase();var f=this.items[b]={type:c,command:a.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(f,a)},get:function(b){return this.instances[b]},create:function(b){var c=this.items[b],a=c&&this._.handlers[c.type],f=c&&c.command&&this.editor.getCommand(c.command),a=a&&a.create.apply(this,c.args);this.instances[b]=a;f&&f.uiItems.push(a);if(a&&!a.type)a.type=c.type;return a},addHandler:function(b,c){this._.handlers[b]=\nc},space:function(b){return CKEDITOR.document.getById(this.spaceId(b))},spaceId:function(b){return this.editor.id+\"_\"+b}};CKEDITOR.event.implementOn(CKEDITOR.ui);\n(function(){function b(b,j,o){CKEDITOR.event.call(this);b=b&&CKEDITOR.tools.clone(b);if(j!==void 0){if(j instanceof CKEDITOR.dom.element){if(!o)throw Error(\"One of the element mode must be specified.\");}else throw Error(\"Expect element of type CKEDITOR.dom.element.\");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&o==CKEDITOR.ELEMENT_MODE_INLINE)throw Error(\"Inline element mode is not supported on IE quirks.\");if(o==CKEDITOR.ELEMENT_MODE_INLINE&&!j.is(CKEDITOR.dtd.$editable)||o==CKEDITOR.ELEMENT_MODE_REPLACE&&\nj.is(CKEDITOR.dtd.$nonBodyContent))throw Error('The specified element mode is not supported on element: \"'+j.getName()+'\".');this.element=j;this.elementMode=o;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(j.getId()||j.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||c();this.id=CKEDITOR.tools.getNextId();this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=\nnew CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on(\"mode\",a);this.on(\"readOnly\",a);this.on(\"selectionChange\",f);this.on(\"instanceReady\",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire(\"instanceCreated\",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){d(this,b)},0,this)}function c(){do var a=\"editor\"+ ++n;while(CKEDITOR.instances[a]);return a}function a(){var a,b=this.commands,c=this.mode;if(c)for(var d in b){a=b[d];\na[a.startDisabled?\"disable\":this.readOnly&&!a.readOnly?\"disable\":a.modes[c]?\"enable\":\"disable\"]()}}function f(a){var b=this.commands,c=a.editor,d=a.data.path,o;for(o in b){a=b[o];a.contextSensitive&&a.refresh(c,d)}}function e(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDITOR.getUrl(b),c=o[b]||(o[b]={});if(c.fn){c.fn.call(a,a.config);(CKEDITOR.getUrl(a.config.customConfig)==b||!e(a))&&a.fireOnce(\"customConfigLoaded\")}else CKEDITOR.scriptLoader.load(b,function(){c.fn=CKEDITOR.editorConfig?\nCKEDITOR.editorConfig:function(){};e(a)});return true}function d(a,b){a.on(\"customConfigLoaded\",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,true);delete a.config.on}a.readOnly=!(!a.config.readOnly&&!(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&a.element.getAttribute(\"disabled\")));a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&!CKEDITOR.dtd[a.element.getName()].p;a.tabIndex=\na.config.tabIndex||a.element&&a.element.getAttribute(\"tabindex\")||0;if(a.config.skin)CKEDITOR.skinName=a.config.skin;a.fireOnce(\"configLoaded\");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);g(a)});if(b&&b.customConfig!=void 0)a.config.customConfig=b.customConfig;e(a)||a.fireOnce(\"customConfigLoaded\")}function g(a){CKEDITOR.skin.loadPart(\"editor\",function(){k(a)})}function k(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,c){a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);\nif(CKEDITOR.env.gecko&&CKEDITOR.env.version<10900&&a.lang.dir==\"rtl\")a.lang.dir=\"ltr\";if(!a.config.contentsLangDirection)a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir;a.fire(\"langLoaded\");h(a)})}function h(a){var b=a.config,c=b.plugins,d=b.extraPlugins,o=b.removePlugins;if(d)var e=RegExp(\"(?:^|,)(?:\"+d.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\"g\"),c=c.replace(e,\"\"),c=c+(\",\"+d);if(o)var g=RegExp(\"(?:^|,)(?:\"+o.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\n\"g\"),c=c.replace(g,\"\");CKEDITOR.env.air&&(c=c+\",adobeair\");CKEDITOR.plugins.load(c.split(\",\"),function(c){var d=[],o=[],e=[];a.plugins=c;for(var f in c){var i=c[f],h=i.lang,q=null,t=i.requires,k;CKEDITOR.tools.isArray(t)&&(t=t.join(\",\"));if(t&&(k=t.match(g)))for(;t=k.pop();)CKEDITOR.tools.setTimeout(function(a,b){throw Error('Plugin \"'+a.replace(\",\",\"\")+'\" cannot be removed from the plugins list, because it\\'s required by \"'+b+'\" plugin.');},0,null,[t,f]);if(h&&!a.lang[f]){h.split&&(h=h.split(\",\"));\nif(CKEDITOR.tools.indexOf(h,a.langCode)>=0)q=a.langCode;else{q=a.langCode.replace(/-.*/,\"\");q=q!=a.langCode&&CKEDITOR.tools.indexOf(h,q)>=0?q:CKEDITOR.tools.indexOf(h,\"en\")>=0?\"en\":h[0]}if(!i.langEntries||!i.langEntries[q])e.push(CKEDITOR.getUrl(i.path+\"lang/\"+q+\".js\"));else{a.lang[f]=i.langEntries[q];q=null}}o.push(q);d.push(i)}CKEDITOR.scriptLoader.load(e,function(){for(var c=[\"beforeInit\",\"init\",\"afterInit\"],e=0;e<c.length;e++)for(var g=0;g<d.length;g++){var f=d[g];e===0&&(o[g]&&f.lang&&f.langEntries)&&\n(a.lang[f.name]=f.langEntries[o[g]]);if(f[c[e]])f[c[e]](a)}a.fireOnce(\"pluginsLoaded\");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(g=0;g<a.config.blockedKeystrokes.length;g++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[g]]=1;a.fireOnce(\"loaded\");CKEDITOR.fire(\"instanceLoaded\",null,a)})})}function m(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData();this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is(\"textarea\")?\na.setValue(b):a.setHtml(b);return true}return false}b.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=b;var n=0,o={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){return this.commands[a]=new CKEDITOR.command(this,b)},destroy:function(a){this.fire(\"beforeDestroy\");!a&&m.call(this);this.editable(null);this.fire(\"destroy\");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire(\"instanceDestroyed\",null,this)},elementPath:function(a){return(a=a||this.getSelection().getStartElement())?\nnew CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var c=this.getCommand(a),d={name:a,commandData:b,command:c};if(c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&this.fire(\"beforeCommandExec\",d)!==true){d.returnValue=c.exec(d.commandData);if(!c.async&&this.fire(\"afterCommandExec\",d)!==true)return d.returnValue}return false},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&\nthis.fire(\"beforeGetData\");var b=this._.data;if(typeof b!=\"string\")b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is(\"textarea\")?b.getValue():b.getHtml():\"\";b={dataValue:b};!a&&this.fire(\"getData\",b);return b.dataValue},getSnapshot:function(){var a=this.fire(\"getSnapshot\");if(typeof a!=\"string\"){var b=this.element;b&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a=b.is(\"textarea\")?b.getValue():b.getHtml())}return a},loadSnapshot:function(a){this.fire(\"loadSnapshot\",a)},\nsetData:function(a,b,c){if(b)this.on(\"dataReady\",function(a){a.removeListener();b.call(a.editor)});a={dataValue:a};!c&&this.fire(\"setData\",a);this._.data=a.dataValue;!c&&this.fire(\"afterSetData\",a)},setReadOnly:function(a){a=a==void 0||a;if(this.readOnly!=a){this.readOnly=a;this.editable().setReadOnly(a);this.fire(\"readOnly\")}},insertHtml:function(a,b){this.fire(\"insertHtml\",{dataValue:a,mode:b})},insertText:function(a){this.fire(\"insertText\",a)},insertElement:function(a){this.fire(\"insertElement\",\na)},focus:function(){this.fire(\"beforeFocus\")},checkDirty:function(){return this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return m.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c,d,o=b.length;o--;){c=b[o];d=0;if(CKEDITOR.tools.isArray(c)){d=c[1];c=c[0]}d?a[c]=d:delete a[c]}}})})();\nCKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:RegExp(\"<(?:(?:\\\\/([^>]+)>)|(?:!--([\\\\S|\\\\s]*?)--\\>)|(?:([^\\\\s>]+)\\\\s*((?:(?:\\\"[^\\\"]*\\\")|(?:'[^']*')|[^\\\"'>])*)\\\\/?>))\",\"g\")}};\n(function(){var b=/([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g,c={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(a){for(var f,e,d=0,g;f=this._.htmlPartsRegex.exec(a);){e=f.index;if(e>d){d=a.substring(d,e);if(g)g.push(d);else this.onText(d)}d=\nthis._.htmlPartsRegex.lastIndex;if(e=f[1]){e=e.toLowerCase();if(g&&CKEDITOR.dtd.$cdata[e]){this.onCDATA(g.join(\"\"));g=null}if(!g){this.onTagClose(e);continue}}if(g)g.push(f[0]);else if(e=f[3]){e=e.toLowerCase();if(!/=\"/.test(e)){var k={},h;f=f[4];var m=!!(f&&f.charAt(f.length-1)==\"/\");if(f)for(;h=b.exec(f);){var n=h[1].toLowerCase();h=h[2]||h[3]||h[4]||\"\";k[n]=!h&&c[n]?n:h}this.onTagOpen(e,k,m);!g&&CKEDITOR.dtd.$cdata[e]&&(g=[])}}else if(e=f[2])this.onComment(e)}if(a.length>d)this.onText(a.substring(d,\na.length))}}})();\nCKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(b){this._.output.push(\"<\",b)},openTagClose:function(b,c){c?this._.output.push(\" />\"):this._.output.push(\">\")},attribute:function(b,c){typeof c==\"string\"&&(c=CKEDITOR.tools.htmlEncodeAttr(c));this._.output.push(\" \",b,'=\"',c,'\"')},closeTag:function(b){this._.output.push(\"</\",b,\">\")},text:function(b){this._.output.push(b)},comment:function(b){this._.output.push(\"<\\!--\",b,\"--\\>\")},write:function(b){this._.output.push(b)},\nreset:function(){this._.output=[];this._.indent=false},getHtml:function(b){var c=this._.output.join(\"\");b&&this.reset();return c}}});CKEDITOR.htmlParser.comment=function(b){this.value=b;this._={isBlockLike:false}};CKEDITOR.htmlParser.comment.prototype={type:CKEDITOR.NODE_COMMENT,writeHtml:function(b,c){var a=this.value;if(c){if(!(a=c.onComment(a,this)))return;if(typeof a!=\"string\"){a.parent=this.parent;a.writeHtml(b,c);return}}b.comment(a)}};\n(function(){CKEDITOR.htmlParser.text=function(b){this.value=b;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype={type:CKEDITOR.NODE_TEXT,writeHtml:function(b,c){var a=this.value;(!c||(a=c.onText(a,this)))&&b.text(a)}}})();(function(){CKEDITOR.htmlParser.cdata=function(b){this.value=b};CKEDITOR.htmlParser.cdata.prototype={type:CKEDITOR.NODE_TEXT,writeHtml:function(b){b.write(this.value)}}})();\nCKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}};\n(function(){function b(a){return a.name==\"a\"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var c=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),a={ol:1,ul:1},f=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1});CKEDITOR.htmlParser.fragment.fromHtml=function(e,d,g){function k(a){var b;if(y.length>0)for(var c=0;c<y.length;c++){var d=y[c],l=d.name,o=CKEDITOR.dtd[l],j=i.name&&\nCKEDITOR.dtd[i.name];if((!j||j[l])&&(!a||!o||o[a]||!CKEDITOR.dtd[a])){if(!b){h();b=1}d=d.clone();d.parent=i;i=d;y.splice(c,1);c--}else if(l==i.name){n(i,i.parent,1);c--}}}function h(){for(;z.length;)n(z.shift(),i)}function m(a){if(a._.isBlockLike&&a.name!=\"pre\"&&a.name!=\"textarea\"){var b=a.children.length,c=a.children[b-1],d;if(c&&c.type==CKEDITOR.NODE_TEXT)(d=CKEDITOR.tools.rtrim(c.value))?c.value=d:a.children.length=b-1}}function n(a,c,d){var c=c||i||q,l=i;if(a.previous===void 0){if(o(c,a)){i=c;\nj.onTagOpen(g,{});a.returnPoint=c=i}m(a);(!b(a)||a.children.length)&&c.add(a);a.name==\"pre\"&&(A=false);a.name==\"textarea\"&&(s=false)}if(a.returnPoint){i=a.returnPoint;delete a.returnPoint}else i=d?c:l}function o(a,b){if((a==q||a.name==\"body\")&&g&&(!a.name||CKEDITOR.dtd[a.name][g])){var c,d;return(c=b.attributes&&(d=b.attributes[\"data-cke-real-element-type\"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function l(a,b){return a in CKEDITOR.dtd.$listItem||\na in CKEDITOR.dtd.$tableContent?a==b||a==\"dt\"&&b==\"dd\"||a==\"dd\"&&b==\"dt\":false}var j=new CKEDITOR.htmlParser,q=d instanceof CKEDITOR.htmlParser.element?d:typeof d==\"string\"?new CKEDITOR.htmlParser.element(d):new CKEDITOR.htmlParser.fragment,y=[],z=[],i=q,s=q.name==\"textarea\",A=q.name==\"pre\";j.onTagOpen=function(d,o,g,e){o=new CKEDITOR.htmlParser.element(d,o);if(o.isUnknown&&g)o.isEmpty=true;o.isOptionalClose=e;if(b(o))y.push(o);else{if(d==\"pre\")A=true;else{if(d==\"br\"&&A){i.add(new CKEDITOR.htmlParser.text(\"\\n\"));\nreturn}d==\"textarea\"&&(s=true)}if(d==\"br\")z.push(o);else{for(;;){e=(g=i.name)?CKEDITOR.dtd[g]||(i._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!o.isUnknown&&!i.isUnknown&&!e[d])if(i.isOptionalClose)j.onTagClose(g);else if(d in a&&g in a){g=i.children;(g=g[g.length-1])&&g.name==\"li\"||n(g=new CKEDITOR.htmlParser.element(\"li\"),i);!o.returnPoint&&(o.returnPoint=i);i=g}else if(d in CKEDITOR.dtd.$listItem&&!l(d,g))j.onTagOpen(d==\"li\"?\"ul\":\"dl\",{},0,1);else if(g in c&&!l(d,g)){!o.returnPoint&&\n(o.returnPoint=i);i=i.parent}else{g in CKEDITOR.dtd.$inline&&y.unshift(i);if(i.parent)n(i,i.parent,1);else{o.isOrphan=1;break}}else break}k(d);h();o.parent=i;o.isEmpty?n(o):i=o}}};j.onTagClose=function(a){for(var b=y.length-1;b>=0;b--)if(a==y[b].name){y.splice(b,1);return}for(var c=[],d=[],o=i;o!=q&&o.name!=a;){o._.isBlockLike||d.unshift(o);c.push(o);o=o.returnPoint||o.parent}if(o!=q){for(b=0;b<c.length;b++){var l=c[b];n(l,l.parent)}i=o;o._.isBlockLike&&h();n(o,o.parent);if(o==i)i=i.parent;y=y.concat(d)}a==\n\"body\"&&(g=false)};j.onText=function(b){if((!i._.hasInlineStarted||z.length)&&!A&&!s){b=CKEDITOR.tools.ltrim(b);if(b.length===0)return}var d=i.name,l=d?CKEDITOR.dtd[d]||(i._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!s&&!l[\"#\"]&&d in c){j.onTagOpen(d in a?\"li\":d==\"dl\"?\"dd\":d==\"table\"?\"tr\":d==\"tr\"?\"td\":\"\");j.onText(b)}else{h();k();!A&&!s&&(b=b.replace(/[\\t\\r\\n ]{2,}|[\\t\\r\\n]/g,\" \"));b=new CKEDITOR.htmlParser.text(b);if(o(i,b))this.onTagOpen(g,{},0,1);i.add(b)}};j.onCDATA=function(a){i.add(new CKEDITOR.htmlParser.cdata(a))};\nj.onComment=function(a){h();k();i.add(new CKEDITOR.htmlParser.comment(a))};j.parse(e);for(h(!CKEDITOR.env.ie&&1);i!=q;)n(i,i.parent,1);m(q);return q};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=b>0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length===0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this;\nthis.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},writeHtml:function(a,b){var c;this.filterChildren=function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml.call(this,a,b);a=a.getHtml();this.children=(new CKEDITOR.htmlParser.fragment.fromHtml(a)).children;c=1};b&&b.onRoot(this);this.writeChildrenHtml(a,c?null:b)},writeChildrenHtml:function(a,b,c){if(c&&!this.parent&&b)b.onRoot(this);\nfor(c=0;c<this.children.length;c++)this.children[c].writeHtml(a,b)}}})();\n(function(){function b(a,b){for(var c=0;a&&c<b.length;c++)var e=b[c],a=a.replace(e[0],e[1]);return a}function c(a,b,c){typeof b==\"function\"&&(b=[b]);var e,f;f=a.length;var n=b&&b.length;if(n){for(e=0;e<f&&a[e].pri<c;e++);for(f=n-1;f>=0;f--)if(n=b[f]){n.pri=c;a.splice(e,0,n)}}}function a(a,b,c){if(b)for(var e in b){var m=a[e];a[e]=f(m,b[e],c);m||a.$length++}}function f(a,b,f){if(b){b.pri=f;if(a){if(a.splice)c(a,b,f);else{a=a.pri>f?[b,a]:[a,b];a.filter=e}return a}return b.filter=b}}function e(a){for(var b=\na.type||a instanceof CKEDITOR.htmlParser.fragment,c=0;c<this.length;c++){if(b)var e=a.type,f=a.name;var n=this[c].apply(window,arguments);if(n===false)return n;if(b){if(n&&(n.name!=f||n.type!=e))return n}else if(typeof n!=\"string\")return n;n!=void 0&&(a=n)}return a}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(a){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};a&&this.addRules(a,10)},proto:{addRules:function(b,e){typeof e!=\"number\"&&(e=10);\nc(this._.elementNames,b.elementNames,e);c(this._.attributeNames,b.attributeNames,e);a(this._.elements,b.elements,e);a(this._.attributes,b.attributes,e);this._.text=f(this._.text,b.text,e)||this._.text;this._.comment=f(this._.comment,b.comment,e)||this._.comment;this._.root=f(this._.root,b.root,e)||this._.root},onElementName:function(a){return b(a,this._.elementNames)},onAttributeName:function(a){return b(a,this._.attributeNames)},onText:function(a){var b=this._.text;return b?b.filter(a):a},onComment:function(a,\nb){var c=this._.comment;return c?c.filter(a,b):a},onRoot:function(a){var b=this._.root;return b?b.filter(a):a},onElement:function(a){for(var b=[this._.elements[\"^\"],this._.elements[a.name],this._.elements.$],c,e=0;e<3;e++)if(c=b[e]){c=c.filter(a,this);if(c===false)return null;if(c&&c!=a)return this.onNode(c);if(a.parent&&!a.name)break}return a},onNode:function(a){var b=a.type;return b==CKEDITOR.NODE_ELEMENT?this.onElement(a):b==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a.value)):\nb==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a.value)):null},onAttribute:function(a,b,c){if(b=this._.attributes[b]){a=b.filter(c,a,this);if(a===false)return false;if(typeof a!=\"undefined\")return a}return c}}})})();\n(function(){function b(b,c){function o(a){return a||CKEDITOR.env.ie?new CKEDITOR.htmlParser.text(\" \"):new CKEDITOR.htmlParser.element(\"br\",{\"data-cke-bogus\":1})}function l(b,c){return function(l){if(l.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var e=[],g=a(l),i,K;if(g)for(j(g,1)&&e.push(g);g;){if(d(g)&&(i=f(g))&&j(i))if((K=f(i))&&!d(K))e.push(i);else{var h=i,q=o(t),m=h.parent.children,y=CKEDITOR.tools.indexOf(m,h);m.splice(y+1,0,q);m=h.next;h.next=q;q.previous=h;q.parent=h.parent;q.next=m;k(i)}g=g.previous}for(g=\n0;g<e.length;g++)k(e[g]);if(e=CKEDITOR.env.opera&&!b||(typeof c==\"function\"?c(l)!==false:c))if(!t&&CKEDITOR.env.ie&&l.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)e=false;else if(!t&&CKEDITOR.env.ie&&(document.documentMode>7||l.name in CKEDITOR.dtd.tr||l.name in CKEDITOR.dtd.$listItem))e=false;else{e=a(l);e=!e||l.name==\"form\"&&e.name==\"input\"}e&&l.add(o(b))}}}function j(a,b){if((!t||!CKEDITOR.env.ie)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name==\"br\"&&!a.attributes[\"data-cke-eol\"])return true;var c;if(a.type==\nCKEDITOR.NODE_TEXT&&(c=a.value.match(s))){if(c.index){g(a,new CKEDITOR.htmlParser.text(a.value.substring(0,c.index)));a.value=c[0]}if(CKEDITOR.env.ie&&t&&(!b||a.parent.name in h))return true;if(!t)if((c=a.previous)&&c.name==\"br\"||!c||d(c))return true}return false}var i={elements:{}},t=c==\"html\",h=CKEDITOR.tools.extend({},E),q;for(q in h)\"#\"in B[q]||delete h[q];for(q in h)i.elements[q]=l(t,b.config.fillEmptyBlocks!==false);i.root=l(t);i.elements.br=function(a){return function(b){if(b.parent.type!=\nCKEDITOR.NODE_DOCUMENT_FRAGMENT){var c=b.attributes;if(\"data-cke-bogus\"in c||\"data-cke-eol\"in c)delete c[\"data-cke-bogus\"];else{for(c=b.next;c&&e(c);)c=c.next;var l=f(b);if(!c&&d(b.parent)){b=b.parent;c=o(a);l=b.children[b.children.length-1];b.children.push(c);c.parent=b;if(l){l.next=c;c.previous=l}}else d(c)&&(l&&!d(l))&&g(c,o(a))}}}}(t);return i}function c(a){return a.enterMode!=CKEDITOR.ENTER_BR&&a.autoParagraph!==false?a.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\":false}function a(a){for(a=a.children[a.children.length-\n1];a&&e(a);)a=a.previous;return a}function f(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes[\"data-cke-bookmark\"]}function d(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in E||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function g(a,b){var c=a.parent.children,d=CKEDITOR.tools.indexOf(c,a);c.splice(d,0,b);c=a.previous;a.previous=b;b.next=a;b.parent=a.parent;if(c){b.previous=\nc;c.next=b}}function k(a){var b=a.parent.children,c=CKEDITOR.tools.indexOf(b,a),d=a.previous,a=a.next;d&&(d.next=a);a&&(a.previous=d);b.splice(c,1)}function h(a){var b=a.parent;return b?CKEDITOR.tools.indexOf(b.children,a):-1}function m(a){a=a.attributes;a.contenteditable!=\"false\"&&(a[\"data-cke-editable\"]=a.contenteditable?\"true\":1);a.contenteditable=\"false\"}function n(a){a=a.attributes;switch(a[\"data-cke-editable\"]){case \"true\":a.contenteditable=\"true\";break;case \"1\":delete a.contenteditable}}function o(a){return a.replace(v,\nfunction(a,b,c){return\"<\"+b+c.replace(t,function(a,b){return!/^on/.test(b)&&c.indexOf(\"data-cke-saved-\"+b)==-1?\" data-cke-saved-\"+a+\" data-cke-\"+CKEDITOR.rnd+\"-\"+a:a})+\">\"})}function l(a){return a.replace(w,function(a){return\"<cke:encoded>\"+encodeURIComponent(a)+\"</cke:encoded>\"})}function j(a){return a.replace(I,function(a,b){return decodeURIComponent(b)})}function q(a){return a.replace(/<\\!--(?!{cke_protected})[\\s\\S]+?--\\>/g,function(a){return\"<\\!--\"+A+\"{C}\"+encodeURIComponent(a).replace(/--/g,\n\"%2D%2D\")+\"--\\>\"})}function y(a){return a.replace(/<\\!--\\{cke_protected\\}\\{C\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)})}function z(a,b){var c=b._.dataStore;return a.replace(/<\\!--\\{cke_protected\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\\{cke_protected_(\\d+)\\}/g,function(a,b){return c&&c[b]||\"\"})}function i(a,b){for(var c=[],d=b.config.protectedSource,o=b._.dataStore||(b._.dataStore={id:1}),l=/<\\!--\\{cke_temp(comment)?\\}(\\d*?)--\\>/g,d=[/<script[\\s\\S]*?<\\/script>/gi,\n/<noscript[\\s\\S]*?<\\/noscript>/gi].concat(d),a=a.replace(/<\\!--[\\s\\S]*?--\\>/g,function(a){return\"<\\!--{cke_tempcomment}\"+(c.push(a)-1)+\"--\\>\"}),j=0;j<d.length;j++)a=a.replace(d[j],function(a){a=a.replace(l,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:\"<\\!--{cke_temp}\"+(c.push(a)-1)+\"--\\>\"});a=a.replace(l,function(a,b,d){return\"<\\!--\"+A+(b?\"{C}\":\"\")+encodeURIComponent(c[d]).replace(/--/g,\"%2D%2D\")+\"--\\>\"});return a.replace(/(['\"]).*?\\1/g,function(a){return a.replace(/<\\!--\\{cke_protected\\}([\\s\\S]+?)--\\>/g,\nfunction(a,b){o[o.id]=decodeURIComponent(b);return\"{cke_protected_\"+o.id++ +\"}\"})})}CKEDITOR.htmlDataProcessor=function(a){var c,d;this.editor=a;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(u);c.addRules(b(a,\"data\"));d.addRules(r);d.addRules(b(a,\"html\"))};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,d){var a=i(a,this.editor),a=o(a),a=l(a),a=a.replace(G,\"$1cke:$2\"),a=a.replace(Q,\n\"<cke:$1$2></cke:$1>\"),a=CKEDITOR.env.opera?a:a.replace(/(<pre\\b[^>]*>)(\\r\\n|\\n)/g,\"$1$2$2\"),e=this.editor.editable(),f;!b&&b!==null&&(b=e.getName());e=b||e.getName();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&e==\"pre\"){e=\"div\";a=\"<pre>\"+a+\"</pre>\";f=1}e=this.editor.document.createElement(e);e.setHtml(\"a\"+a);a=e.getHtml().substr(1);a=a.replace(RegExp(\" data-cke-\"+CKEDITOR.rnd+\"-\",\"ig\"),\" \");f&&(a=a.replace(/^<pre>|<\\/pre>$/gi,\"\"));a=a.replace(C,\"$1$2\");a=j(a);a=y(a);a=CKEDITOR.htmlParser.fragment.fromHtml(a,\nb,d===false?false:c(this.editor.config));b=new CKEDITOR.htmlParser.basicWriter;a.writeChildrenHtml(b,this.dataFilter,1);a=b.getHtml(true);return a=q(a)},toDataFormat:function(a){var b=this.editor.editable(),d=this.writer,a=CKEDITOR.htmlParser.fragment.fromHtml(a,b.getName(),c(this.editor.config));d.reset();a.writeChildrenHtml(d,this.htmlFilter,1);d=d.getHtml(true);d=y(d);return d=z(d,this.editor)}};var s=/(?:&nbsp;|\\xa0)$/,A=\"{cke_protected}\",B=CKEDITOR.dtd,p=[\"caption\",\"colgroup\",\"col\",\"thead\",\"tfoot\",\n\"tbody\"],E=CKEDITOR.tools.extend({},B.$blockLimit,B.$block),u={elements:{},attributeNames:[[/^on/,\"data-cke-pa-on\"]]},r={elementNames:[[/^cke:/,\"\"],[/^\\?xml:namespace$/,\"\"]],attributeNames:[[/^data-cke-(saved|pa)-/,\"\"],[/^data-cke-.*/,\"\"],[\"hidefocus\",\"\"]],elements:{$:function(a){var b=a.attributes;if(b){if(b[\"data-cke-temp\"])return false;for(var c=[\"name\",\"href\",\"src\"],d,o=0;o<c.length;o++){d=\"data-cke-saved-\"+c[o];d in b&&delete b[c[o]]}}return a},table:function(a){a.children.slice(0).sort(function(a,\nb){var c,d;if(a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type){c=CKEDITOR.tools.indexOf(p,a.name);d=CKEDITOR.tools.indexOf(p,b.name)}if(!(c>-1&&d>-1&&c!=d)){c=h(a);d=h(b)}return c>d?1:-1})},embed:function(a){var b=a.parent;if(b&&b.name==\"object\"){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},param:function(a){a.children=[];a.isEmpty=true;return a},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes[\"data-cke-saved-name\"])return false},\nspan:function(a){a.attributes[\"class\"]==\"Apple-style-span\"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes[\"class\"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));if(!a.attributes.type)a.attributes.type=\"text/css\"},title:function(a){var b=a.children[0];b&&(b.value=a.attributes[\"data-cke-title\"]||\"\")}},attributes:{\"class\":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\\s+)cke_[^\\s]*/g,\n\"\"))||false}}};if(CKEDITOR.env.ie)r.attributes.style=function(a){return a.replace(/(^|;)([^\\:]+)/g,function(a){return a.toLowerCase()})};for(var D in{input:1,textarea:1}){u.elements[D]=m;r.elements[D]=n}var v=/<(a|area|img|input|source)\\b([^>]*)>/gi,t=/\\b(on\\w+|href|src|name)\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|(?:[^ \"'>]+))/gi,w=/(?:<style(?=[ >])[^>]*>[\\s\\S]*<\\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,I=/<cke:encoded>([^<]*)<\\/cke:encoded>/gi,G=/(<\\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,\nC=/(<\\/?)cke:((?:html|body|head|title)[^>]*>)/gi,Q=/<cke:(param|embed)([^>]*?)\\/?>(?!\\s*<\\/cke:\\1)/gi})();\nCKEDITOR.htmlParser.element=function(b,c){this.name=b;this.attributes=c||{};this.children=[];var a=b||\"\",f=a.match(/^cke:(.*)/);f&&(a=f[1]);a=!(!CKEDITOR.dtd.$nonBodyContent[a]&&!CKEDITOR.dtd.$block[a]&&!CKEDITOR.dtd.$listItem[a]&&!CKEDITOR.dtd.$tableContent[a]&&!(CKEDITOR.dtd.$nonEditable[a]||a==\"br\"));this.isEmpty=!!CKEDITOR.dtd.$empty[b];this.isUnknown=!CKEDITOR.dtd[b];this._={isBlockLike:a,hasInlineStarted:this.isEmpty||!a}};\nCKEDITOR.htmlParser.cssStyle=function(b){var c={};((b instanceof CKEDITOR.htmlParser.element?b.attributes.style:b)||\"\").replace(/&quot;/g,'\"').replace(/\\s*([^ :;]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,b,e){b==\"font-family\"&&(e=e.replace(/[\"']/g,\"\"));c[b.toLowerCase()]=e});return{rules:c,populate:function(a){var b=this.toString();if(b)a instanceof CKEDITOR.dom.element?a.setAttribute(\"style\",b):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=b:a.style=b},toString:function(){var a=[],b;\nfor(b in c)c[b]&&a.push(b,\":\",c[b],\";\");return a.join(\"\")}}};\n(function(){var b=function(b,a){b=b[0];a=a[0];return b<a?-1:b>a?1:0};CKEDITOR.htmlParser.element.prototype={type:CKEDITOR.NODE_ELEMENT,add:CKEDITOR.htmlParser.fragment.prototype.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},writeHtml:function(c,a){var f=this.attributes,e=this,d=e.name,g,k,h,m;e.filterChildren=function(){if(!m){var b=new CKEDITOR.htmlParser.basicWriter;CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.call(e,b,a);e.children=(new CKEDITOR.htmlParser.fragment.fromHtml(b.getHtml(),\ne.clone(),0)).children;m=1}};if(a){if(!this.parent)a.onRoot(this);for(;;){if(!(d=a.onElementName(d)))return;e.name=d;if(!(e=a.onElement(e)))return;e.parent=this.parent;if(e.name==d)break;if(e.type!=CKEDITOR.NODE_ELEMENT){e.writeHtml(c,a);return}d=e.name;if(!d){for(var d=0,n=this.children.length;d<n;d++)this.children[d].parent=e.parent;this.writeChildrenHtml.call(e,c,m?null:a);return}}f=e.attributes}c.openTag(d,f);for(var n=[],o=0;o<2;o++)for(g in f){k=g;h=f[g];if(o==1)n.push([g,h]);else if(a){for(;;)if(k=\na.onAttributeName(g))if(k!=g){delete f[g];g=k}else break;else{delete f[g];break}k&&((h=a.onAttribute(e,k,h))===false?delete f[k]:f[k]=h)}}c.sortAttributes&&n.sort(b);f=n.length;for(o=0;o<f;o++){g=n[o];c.attribute(g[0],g[1])}c.openTagClose(d,e.isEmpty);if(!e.isEmpty){this.writeChildrenHtml.call(e,c,m?null:a);c.closeTag(d)}},writeChildrenHtml:function(b,a){CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.apply(this,arguments)}}})();\n(function(){var b={};CKEDITOR.template=function(c){if(b[c])this.output=b[c];else{var a=c.replace(/'/g,\"\\\\'\").replace(/{([^}]+)}/g,function(a,b){return\"',data['\"+b+\"']==undefined?'{\"+b+\"}':data['\"+b+\"'],'\"});this.output=b[c]=Function(\"data\",\"buffer\",\"return buffer?buffer.push('\"+a+\"'):['\"+a+\"'].join('');\")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document);\nCKEDITOR.add=function(b){CKEDITOR.instances[b.name]=b;b.on(\"focus\",function(){if(CKEDITOR.currentInstance!=b){CKEDITOR.currentInstance=b;CKEDITOR.fire(\"currentInstance\")}});b.on(\"blur\",function(){if(CKEDITOR.currentInstance==b){CKEDITOR.currentInstance=null;CKEDITOR.fire(\"currentInstance\")}});CKEDITOR.fire(\"instance\",null,b)};CKEDITOR.remove=function(b){delete CKEDITOR.instances[b.name]};\n(function(){var b={};CKEDITOR.addTemplate=function(c,a){var f=b[c];if(f)return f;f={name:c,source:a};CKEDITOR.fire(\"template\",f);return b[c]=new CKEDITOR.template(f.source)};CKEDITOR.getTemplate=function(c){return b[c]}})();(function(){var b=[];CKEDITOR.addCss=function(c){b.push(c)};CKEDITOR.getCss=function(){return b.join(\"\\n\")}})();CKEDITOR.on(\"instanceDestroyed\",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire(\"reset\")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2;\nCKEDITOR.TRISTATE_DISABLED=0;\n(function(){CKEDITOR.inline=function(b,c){if(!CKEDITOR.env.isCompatible)return null;b=CKEDITOR.dom.element.get(b);if(b.getEditor())throw'The editor instance \"'+b.getEditor().name+'\" is already attached to the provided element.';var a=new CKEDITOR.editor(c,b,CKEDITOR.ELEMENT_MODE_INLINE);a.setData(b.getHtml(),null,true);a.on(\"loaded\",function(){a.fire(\"uiReady\");a.editable(b);a.container=b;a.setData(a.getData(1));a.fire(\"contentDom\");a.mode=\"wysiwyg\";a.fire(\"mode\");a.fireOnce(\"instanceReady\");CKEDITOR.fire(\"instanceReady\",\nnull,a);a.resetDirty()},null,null,1E4);a.on(\"destroy\",function(){a.element.clearCustomData();delete a.element});return a};CKEDITOR.inlineAll=function(){var b,c,a;for(a in CKEDITOR.dtd.$editable)for(var f=CKEDITOR.document.getElementsByTag(a),e=0,d=f.count();e<d;e++){b=f.getItem(e);if(b.getAttribute(\"contenteditable\")==\"true\"){c={element:b,config:{}};CKEDITOR.fire(\"inline\",c)!==false&&CKEDITOR.inline(b,c.config)}}};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();\nCKEDITOR.replaceClass=\"ckeditor\";\n(function(){function b(b,e,k,h){if(!CKEDITOR.env.isCompatible)return null;b=CKEDITOR.dom.element.get(b);if(b.getEditor())throw'The editor instance \"'+b.getEditor().name+'\" is already attached to the provided element.';var m=new CKEDITOR.editor(e,b,h);h==CKEDITOR.ELEMENT_MODE_REPLACE&&b.setStyle(\"visibility\",\"hidden\");k&&m.setData(k,null,true);m.on(\"loaded\",function(){a(m);h==CKEDITOR.ELEMENT_MODE_REPLACE&&m.config.autoUpdateElement&&f(m);m.setMode(m.config.startupMode,function(){m.fireOnce(\"instanceReady\");\nCKEDITOR.fire(\"instanceReady\",null,m);m.resetDirty()})});m.on(\"destroy\",c);return m}function c(){var a=this.container,b=this.element;if(a){a.clearCustomData();a.remove()}if(b){b.clearCustomData();this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.show();delete this.element}}function a(a){var b=a.name,c=a.element,f=a.elementMode,m=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html,n=a.fireOnce(\"uiSpace\",{space:\"bottom\",html:\"\"}).html;e||(e=CKEDITOR.addTemplate(\"maincontainer\",'<{outerEl} id=\"cke_{name}\" class=\"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+\nCKEDITOR.env.cssClass+'\"  dir=\"{langDir}\" lang=\"{langCode}\" role=\"application\" aria-labelledby=\"cke_{name}_arialbl\"><span id=\"cke_{name}_arialbl\" class=\"cke_voice_label\">{voiceLabel}</span><{outerEl} class=\"cke_inner cke_reset\" role=\"presentation\">{topHtml}<{outerEl} id=\"{contentId}\" class=\"cke_contents cke_reset\" role=\"presentation\"></{outerEl}>{bottomHtml}</{outerEl}></{outerEl}>'));b=CKEDITOR.dom.element.createFromHtml(e.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.lang.editor,\ntopHtml:m?'<span id=\"'+a.ui.spaceId(\"top\")+'\" class=\"cke_top cke_reset_all\" role=\"presentation\" style=\"height:auto\">'+m+\"</span>\":\"\",contentId:a.ui.spaceId(\"contents\"),bottomHtml:n?'<span id=\"'+a.ui.spaceId(\"bottom\")+'\" class=\"cke_bottom cke_reset_all\" role=\"presentation\">'+n+\"</span>\":\"\",outerEl:CKEDITOR.env.ie?\"span\":\"div\"}));if(f==CKEDITOR.ELEMENT_MODE_REPLACE){c.hide();b.insertAfter(c)}else c.append(b);a.container=b;m&&a.ui.space(\"top\").unselectable();n&&a.ui.space(\"bottom\").unselectable();c=\na.config.width;f=a.config.height;c&&b.setStyle(\"width\",CKEDITOR.tools.cssLength(c));f&&a.ui.space(\"contents\").setStyle(\"height\",CKEDITOR.tools.cssLength(f));b.disableContextMenu();CKEDITOR.env.webkit&&b.on(\"focus\",function(){a.focus()});a.fireOnce(\"uiReady\")}function f(a){var b=a.element;if(a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.is(\"textarea\")){var c=b.$.form&&new CKEDITOR.dom.element(b.$.form);if(c){var e=function(){a.updateElement()};c.on(\"submit\",e);if(!c.$.submit.nodeName&&!c.$.submit.length)c.$.submit=\nCKEDITOR.tools.override(c.$.submit,function(b){return function(){a.updateElement();b.apply?b.apply(this,arguments):b()}});a.on(\"destroy\",function(){c.removeListener(\"submit\",e)})}}}CKEDITOR.replace=function(a,c){return b(a,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(a,c,e){return b(a,c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName(\"textarea\"),b=0;b<a.length;b++){var c=null,e=a[b];if(e.name||e.id){if(typeof arguments[0]==\n\"string\"){if(!RegExp(\"(?:^|\\\\s)\"+arguments[0]+\"(?:$|\\\\s)\").test(e.className))continue}else if(typeof arguments[0]==\"function\"){c={};if(arguments[0](e,c)===false)continue}this.replace(e,c)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes={}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var c=this,e=this._.modes;if(!(a==c.mode||!e||!e[a])){c.fire(\"beforeSetMode\",a);if(c.mode){var f=c.checkDirty();c._.previousMode=c.mode;c.fire(\"beforeModeUnload\");c.editable(0);\nc.ui.space(\"contents\").setHtml(\"\");c.mode=\"\"}this._.modes[a](function(){c.mode=a;if(f!==void 0){c.mayBeDirty=true;!f&&c.resetDirty()}setTimeout(function(){c.fire(\"mode\");b&&b.call(c)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,c,e){var f=this.container,n=this.ui.space(\"contents\"),o=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement,e=e?f.getChild(1):f;e.setSize(\"width\",a,true);o&&(o.style.width=\"1%\");n.setStyle(\"height\",Math.max(b-(c?0:(e.$.offsetHeight||0)-(n.$.clientHeight||\n0)),0)+\"px\");o&&(o.style.width=\"100%\");this.fire(\"resize\")};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space(\"contents\"):this.container};var e;CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode=\"wysiwyg\";\n(function(){function b(b){var c=b.editor,d=c.editable(),e=b.data.path,f=e.blockLimit,g=b.data.selection.getRanges()[0],i=c.config.enterMode;if(CKEDITOR.env.gecko){var h=e.block||e.blockLimit||e.root,m=h&&h.getLast(a);h&&(h.isBlockBoundary()&&(!m||!(m.type==CKEDITOR.NODE_ELEMENT&&m.isBlockBoundary()))&&!h.is(\"pre\")&&!h.getBogus())&&h.appendBogus()}if(c.config.autoParagraph!==false&&i!=CKEDITOR.ENTER_BR&&g.collapsed&&d.equals(f)&&!e.block){d=g.clone();d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);e=new CKEDITOR.dom.walker(d);\ne.guard=function(b){return!a(b)||b.type==CKEDITOR.NODE_COMMENT||b.isReadOnly()};if(!e.checkForward()||d.checkStartOfBlock()&&d.checkEndOfBlock()){c=g.fixBlock(true,c.config.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\");if(CKEDITOR.env.ie)(c=c.getFirst(a))&&(c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText()).match(/^(?:&nbsp;|\\xa0)$/))&&c.remove();g.select();b.cancel()}}}function c(a){var b=a.data.getTarget();if(b.is(\"input\")){b=b.getAttribute(\"type\");(b==\"submit\"||b==\"reset\")&&a.data.preventDefault()}}\nfunction a(a){return h(a)&&m(a)}function f(a,b){return function(c){var d=CKEDITOR.dom.element.get(c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget);(!d||!b.equals(d)&&!b.contains(d))&&a.call(this,c)}}function e(b){var c,d=b.getRanges()[0],b=b.root,e=d.startPath(),f={table:1,ul:1,ol:1,dl:1},g=CKEDITOR.dom.walker.bogus();if(e.contains(f)){var i=d.clone();i.collapse(1);i.setStartAt(b,CKEDITOR.POSITION_AFTER_START);i=new CKEDITOR.dom.walker(i);e=function(b,d){return function(b,o){o&&(b.type==\nCKEDITOR.NODE_ELEMENT&&b.is(f))&&(c=b);if(a(b)&&!o&&(!d||!g(b)))return false}};i.guard=e(i);i.checkBackward();if(c){i=d.clone();i.collapse();i.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);i=new CKEDITOR.dom.walker(i);i.guard=e(i,1);c=0;i.checkForward();return c}}return null}function d(a){a.editor.focus();a.editor.fire(\"saveSnapshot\")}function g(a,b){var c=a.editor;!b&&c.getSelection().scrollIntoView();setTimeout(function(){c.fire(\"saveSnapshot\")},0)}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,\n$:function(a,b){this.base(b.$||b);this.editor=a;this.hasFocus=false;this.setup()},proto:{focus:function(){this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?\"setActive\":\"focus\"]();CKEDITOR.env.safari&&!this.isInline()&&(CKEDITOR.document.getActive().equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);if(CKEDITOR.env.ie&&/^focus|blur$/.exec(a)){a=a==\"focus\"?\"focusin\":\"focusout\";b=f(b,this);c[0]=a;c[1]=b}return CKEDITOR.dom.element.prototype.on.apply(this,\nc)},attachListener:function(a,b,c,d,e,f){!this._.listeners&&(this._.listeners=[]);var g=Array.prototype.slice.call(arguments,1);this._.listeners.push(a.on.apply(a,g))},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)if(a.hasOwnProperty(c)){b=a[c];b!==null?this.setAttribute(c,b):this.removeAttribute(c)}},attachClass:function(a){var b=this.getCustomData(\"classes\");if(!this.hasClass(a)){!b&&\n(b=[]);b.push(a);this.setCustomData(\"classes\",b);this.addClass(a)}},changeAttr:function(a,b){var c=this.getAttribute(a);if(b!==c){!this._.attrChanges&&(this._.attrChanges={});a in this._.attrChanges||(this._.attrChanges[a]=c);this.setAttribute(a,b)}},insertHtml:function(a,b){d(this);n(this,b==\"text\"?\"text\":\"html\",a)},insertText:function(a){d(this);var b=this.editor,c=b.getSelection().getStartElement().hasAscendant(\"pre\",true)?CKEDITOR.ENTER_BR:b.config.enterMode,b=c==CKEDITOR.ENTER_BR,e=CKEDITOR.tools,\na=e.htmlEncode(a.replace(/\\r\\n/g,\"\\n\")),a=a.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\"),c=c==CKEDITOR.ENTER_P?\"p\":\"div\";if(!b){var f=/\\n{2}/g;if(f.test(a))var g=\"<\"+c+\">\",i=\"</\"+c+\">\",a=g+a.replace(f,function(){return i+g})+i}a=a.replace(/\\n/g,\"<br>\");b||(a=a.replace(RegExp(\"<br>(?=</\"+c+\">)\"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g,\"&nbsp;\");a=a.replace(/(>|\\s) /g,function(a,b){return b+\"&nbsp;\"}).replace(/ (?=<)/g,\"&nbsp;\");n(this,\"text\",a)},insertElement:function(b){d(this);for(var c=\nthis.editor,e=c.config.enterMode,f=c.getSelection(),h=f.getRanges(),m=b.getName(),i=CKEDITOR.dtd.$block[m],n,k,B,p=h.length-1;p>=0;p--){n=h[p];if(!n.checkReadOnly()){n.deleteContents(1);k=!p&&b||b.clone(1);var E,u;if(i)for(;(E=n.getCommonAncestor(0,1))&&(u=CKEDITOR.dtd[E.getName()])&&(!u||!u[m]);)if(E.getName()in CKEDITOR.dtd.span)n.splitElement(E);else if(n.checkStartOfBlock()&&n.checkEndOfBlock()){n.setStartBefore(E);n.collapse(true);E.remove()}else n.splitBlock(e==CKEDITOR.ENTER_DIV?\"div\":\"p\",\nc.editable());n.insertNode(k);B||(B=k)}}if(B){n.moveToPosition(B,CKEDITOR.POSITION_AFTER_END);if(i)if((b=B.getNext(a))&&b.type==CKEDITOR.NODE_ELEMENT&&b.is(CKEDITOR.dtd.$block))b.getDtd()[\"#\"]?n.moveToElementEditStart(b):n.moveToElementEditEnd(B);else if(!b&&e!=CKEDITOR.ENTER_BR){b=n.fixBlock(true,e==CKEDITOR.ENTER_DIV?\"div\":\"p\");n.moveToElementEditStart(b)}}f.selectRanges([n]);g(this,CKEDITOR.env.opera)},setData:function(a,b){!b&&this.editor.dataProcessor&&(a=this.editor.dataProcessor.toHtml(a));\nthis.setHtml(a);this.editor.fire(\"dataReady\")},getData:function(a){var b=this.getHtml();!a&&this.editor.dataProcessor&&(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute(\"contenteditable\",!a)},detach:function(){this.removeClass(\"cke_editable\");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},setup:function(){var a=this.editor;this.attachListener(a,\"beforeGetData\",\nfunction(){var b=this.getData();this.is(\"textarea\")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(k,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,\"getSnapshot\",function(a){a.data=this.getData(1)},this);this.attachListener(a,\"afterSetData\",function(){this.setData(a.getData(1))},this);this.attachListener(a,\"loadSnapshot\",function(a){this.setData(a.data,1)},this);this.attachListener(a,\"beforeFocus\",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type==\"Control\"||\nthis.focus()},this);this.attachListener(a,\"insertHtml\",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,\"insertElement\",function(a){this.insertElement(a.data)},this);this.attachListener(a,\"insertText\",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass(\"cke_editable\");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"cke_editable_inline\":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?\n\"cke_editable_themed\":\"\");this.attachClass(\"cke_contents_\"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=a.readOnly;a.keystrokeHandler.attach(this);this.on(\"blur\",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on(\"focus\",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=\ntrue;a.once(\"contentDom\",function(){a.focusManager.focus()})}this.isInline()&&this.changeAttr(\"tabindex\",a.tabIndex);if(!this.is(\"textarea\")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr(\"spellcheck\",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr(\"dir\",d);var f=CKEDITOR.getCss();if(f){d=b.getHead();if(!d.getCustomData(\"stylesheet\")){f=b.appendStyleText(f);f=new CKEDITOR.dom.element(f.ownerNode||\nf.owningElement);d.setCustomData(\"stylesheet\",f);f.data(\"cke-temp\",1)}}d=b.getCustomData(\"stylesheet_ref\")||0;b.setCustomData(\"stylesheet_ref\",d+1);this.setCustomData(\"cke_includeReadonly\",!a.config.disableReadonlyStyling);this.attachListener(this,\"click\",function(a){var a=a.data,b=a.getTarget();b.is(\"a\")&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});this.attachListener(a,\"key\",function(b){if(a.readOnly)return true;var c=b.data.keyCode,d;if(c in{8:1,46:1}){var l=a.getSelection(),b=l.getRanges()[0],\nf=b.startPath(),j,g,m,c=c==8;if(l=e(l)){a.fire(\"saveSnapshot\");b.moveToPosition(l,CKEDITOR.POSITION_BEFORE_START);l.remove();b.select();a.fire(\"saveSnapshot\");d=1}else if(b.collapsed)if((j=f.block)&&b[c?\"checkStartOfBlock\":\"checkEndOfBlock\"]()&&(m=j[c?\"getPrevious\":\"getNext\"](h))&&m.is(\"table\")){a.fire(\"saveSnapshot\");b[c?\"checkEndOfBlock\":\"checkStartOfBlock\"]()&&j.remove();b[\"moveToElementEdit\"+(c?\"End\":\"Start\")](m);b.select();a.fire(\"saveSnapshot\");d=1}else if(f.blockLimit&&f.blockLimit.is(\"td\")&&\n(g=f.blockLimit.getAscendant(\"table\"))&&b.checkBoundaryOfElement(g,c?CKEDITOR.START:CKEDITOR.END)&&(m=g[c?\"getPrevious\":\"getNext\"](h))){a.fire(\"saveSnapshot\");b[\"moveToElementEdit\"+(c?\"End\":\"Start\")](m);b.checkStartOfBlock()&&b.checkEndOfBlock()?m.remove():b.select();a.fire(\"saveSnapshot\");d=1}else if((g=f.contains([\"td\",\"th\",\"caption\"]))&&b.checkBoundaryOfElement(g,c?CKEDITOR.START:CKEDITOR.END))if((m=g[c?\"getPreviousSourceNode\":\"getNextSourceNode\"](1,CKEDITOR.NODE_ELEMENT))&&!m.isReadOnly()&&b.root.contains(m)){b[c?\n\"moveToElementEditEnd\":\"moveToElementEditStart\"](m);b.select();d=1}}return!d});CKEDITOR.env.ie&&this.attachListener(this,\"click\",c);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,\"mousedown\",function(b){var c=b.data.getTarget();if(c.is(\"img\",\"hr\",\"input\",\"textarea\",\"select\")){a.getSelection().selectElement(c);c.is(\"input\",\"textarea\",\"select\")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,\"mouseup\",function(b){if(b.data.$.button==2){b=b.data.getTarget();\nif(!b.getOuterHtml().replace(k,\"\")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,\"click\",function(a){a.data.getTarget().is(\"input\",\"select\")&&a.data.preventDefault()});this.attachListener(this,\"mouseup\",function(a){a.data.getTarget().is(\"input\",\"textarea\")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData(\"classes\"))for(;a.length;)this.removeClass(a.pop());\na=this.getDocument();var b=a.getHead();if(b.getCustomData(\"stylesheet\")){var c=a.getCustomData(\"stylesheet_ref\");if(--c)a.setCustomData(\"stylesheet_ref\",c);else{a.removeCustomData(\"stylesheet_ref\");b.removeCustomData(\"stylesheet\").remove()}}delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var k=/(^|<body\\b[^>]*>)\\s*<(p|div|address|h\\d|center|pre)[^>]*>\\s*(?:<br[^>]*>|&nbsp;|\\u00A0|&#160;)?\\s*(:?<\\/\\2>)?\\s*(?=$|<\\/body>)/gi,\nh=CKEDITOR.dom.walker.whitespaces(true),m=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on(\"instanceLoaded\",function(a){var c=a.editor;c.on(\"insertElement\",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is(\"input\")||a.is(\"textarea\"))){a.getAttribute(\"contentEditable\")!=\"false\"&&a.data(\"cke-editable\",a.hasAttribute(\"contenteditable\")?\"true\":\"1\");a.setAttribute(\"contentEditable\",false)}});c.on(\"selectionChange\",function(a){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();\nc.fire(\"lockSnapshot\");b(a);c.fire(\"unlockSnapshot\");!d&&c.resetDirty()}}})});CKEDITOR.on(\"instanceCreated\",function(a){var b=a.editor;b.on(\"mode\",function(){var a=b.editable();if(a&&a.isInline()){var c=this.lang.editor+\", \"+this.name;a.changeAttr(\"role\",\"textbox\");a.changeAttr(\"aria-label\",c);a.changeAttr(\"title\",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"top\":\"contents\")){var d=CKEDITOR.tools.getNextId(),e=CKEDITOR.dom.element.createFromHtml('<span id=\"'+d+'\" class=\"cke_voice_label\">'+\nthis.lang.common.editorHelp+\"</span>\");c.append(e);a.changeAttr(\"aria-describedby\",d)}}})});CKEDITOR.addCss(\".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}\");var n=function(){function b(a){return a.type==CKEDITOR.NODE_ELEMENT}function c(a,d){var e,f,j,g,t=[],h=d.range.startContainer;e=d.range.startPath();for(var h=i[h.getName()],m=0,n=a.getChildren(),q=n.count(),k=-1,z=-1,y=0,s=e.contains(i.$list);m<q;++m){e=n.getItem(m);if(b(e)){j=e.getName();\nif(s&&j in CKEDITOR.dtd.$list)t=t.concat(c(e,d));else{g=!!h[j];if(j==\"br\"&&e.data(\"cke-eol\")&&(!m||m==q-1)){y=(f=m?t[m-1].node:n.getItem(m+1))&&(!b(f)||!f.is(\"br\"));f=f&&b(f)&&i.$block[f.getName()]}k==-1&&!g&&(k=m);g||(z=m);t.push({isElement:1,isLineBreak:y,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:j,allowed:g});f=y=0}}else t.push({isElement:0,node:e,allowed:1})}if(k>-1)t[k].firstNotAllowed=1;if(z>-1)t[z].lastNotAllowed=1;return t}function d(a,c){var e=[],f=a.getChildren(),l=f.count(),\ng,t=0,h=i[c],m=!a.is(i.$inline)||a.is(\"br\");for(m&&e.push(\" \");t<l;t++){g=f.getItem(t);b(g)&&!g.is(h)?e=e.concat(d(g,c)):e.push(g)}m&&e.push(\" \");return e}function e(a){return a&&b(a)&&(a.is(i.$removeEmpty)||a.is(\"a\")&&!a.isBlockBoundary())}function f(a,c,d,e){var l=a.clone(),j,g;l.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);if((j=(new CKEDITOR.dom.walker(l)).next())&&b(j)&&m[j.getName()]&&(g=j.getPrevious())&&b(g)&&!g.getParent().equals(a.startContainer)&&d.contains(g)&&e.contains(j)&&j.isIdentical(g)){j.moveChildren(g);\nj.remove();f(a,c,d,e)}}function h(a,c){function d(a,c){if(c.isBlock&&c.isElement&&!c.node.is(\"br\")&&b(a)&&a.is(\"br\")){a.remove();return 1}}var e=c.endContainer.getChild(c.endOffset),f=c.endContainer.getChild(c.endOffset-1);e&&d(e,a[a.length-1]);if(f&&d(f,a[0])){c.setEnd(c.endContainer,c.endOffset-1);c.collapse()}}var i=CKEDITOR.dtd,m={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},n={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},k=CKEDITOR.tools.extend({},i.$inline);delete k.br;\nreturn function(m,s,u){var r=m.editor;m.getDocument();var D=r.getSelection().getRanges()[0];if(!D.checkReadOnly()){var v=(new CKEDITOR.dom.elementPath(D.startContainer,D.root)).blockLimit||D.root,s={type:s,editable:m,editor:r,range:D,blockLimit:v,mergeCandidates:[],zombies:[]},r=s.range,v=s.mergeCandidates,t,w,I,G,C;if(s.type==\"text\"&&r.shrink(CKEDITOR.SHRINK_ELEMENT,true,false)){w=CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",r.document);r.insertNode(w);r.setStartAfter(w)}I=new CKEDITOR.dom.elementPath(r.startContainer);\ns.endPath=G=new CKEDITOR.dom.elementPath(r.endContainer);if(!r.collapsed){t=G.block||G.blockLimit;var Q=r.getCommonAncestor();t&&(!t.equals(Q)&&!t.contains(Q)&&r.checkEndOfBlock())&&s.zombies.push(t);r.deleteContents()}for(;(C=b(r.startContainer)&&r.startContainer.getChild(r.startOffset-1))&&b(C)&&C.isBlockBoundary()&&I.contains(C);)r.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);f(r,s.blockLimit,I,G);if(w){r.setEndBefore(w);r.collapse();w.remove()}w=r.startPath();if(t=w.contains(e,false,1)){r.splitElement(t);\ns.inlineStylesRoot=t;s.inlineStylesPeak=w.lastElement}w=r.createBookmark();(t=w.startNode.getPrevious(a))&&b(t)&&e(t)&&v.push(t);(t=w.startNode.getNext(a))&&b(t)&&e(t)&&v.push(t);for(t=w.startNode;(t=t.getParent())&&e(t);)v.push(t);r.moveToBookmark(w);if(u){C=u;u=s.range;if(s.type==\"text\"&&s.inlineStylesRoot){w=C;C=s.inlineStylesPeak;r=C.getDocument().createText(\"{cke-peak}\");for(v=s.inlineStylesRoot.getParent();!C.equals(v);){r=r.appendTo(C.clone());C=C.getParent()}C=r.getOuterHtml().replace(\"{cke-peak}\",\nw)}w=s.blockLimit.getName();if(/^\\s+|\\s+$/.test(C)&&\"span\"in CKEDITOR.dtd[w]){var K='<span data-cke-marker=\"1\">&nbsp;</span>';C=K+C+K}C=s.editor.dataProcessor.toHtml(C,null,false);w=u.document.createElement(\"body\");w.setHtml(C);if(K){w.getFirst().remove();w.getLast().remove()}if((K=u.startPath().block)&&!(K.getChildCount()==1&&K.getBogus()))a:{var F;if(w.getChildCount()==1&&b(F=w.getFirst())&&F.is(n)){K=F.getElementsByTag(\"*\");u=0;for(r=K.count();u<r;u++){C=K.getItem(u);if(!C.is(k))break a}F.moveChildren(F.getParent(1));\nF.remove()}}s.dataWrapper=w;F=s.range;var K=F.document,x,u=s.blockLimit;w=0;var J;C=[];var H,N,v=r=0,L,O;I=F.startContainer;t=s.endPath.elements[0];var P;G=t.getPosition(I);Q=!!t.getCommonAncestor(I)&&G!=CKEDITOR.POSITION_IDENTICAL&&!(G&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);I=c(s.dataWrapper,s);for(h(I,F);w<I.length;w++){G=I[w];if(x=G.isLineBreak){x=F;L=u;var M=void 0,R=void 0;if(G.hasBlockSibling)x=1;else{M=x.startContainer.getAscendant(i.$block,1);if(!M||!M.is({div:1,p:1}))x=\n0;else{R=M.getPosition(L);if(R==CKEDITOR.POSITION_IDENTICAL||R==CKEDITOR.POSITION_CONTAINS)x=0;else{L=x.splitElement(M);x.moveToPosition(L,CKEDITOR.POSITION_AFTER_START);x=1}}}}if(x)v=w>0;else{x=F.startPath();if(!G.isBlock&&(N=s.editor.config.enterMode!=CKEDITOR.ENTER_BR&&s.editor.config.autoParagraph!==false?s.editor.config.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\":false)&&!x.block&&x.blockLimit&&x.blockLimit.equals(F.root)){N=K.createElement(N);!CKEDITOR.env.ie&&N.appendBogus();F.insertNode(N);!CKEDITOR.env.ie&&\n(J=N.getBogus())&&J.remove();F.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}if((x=F.startPath().block)&&!x.equals(H)){if(J=x.getBogus()){J.remove();C.push(x)}H=x}G.firstNotAllowed&&(r=1);if(r&&G.isElement){x=F.startContainer;for(L=null;x&&!i[x.getName()][G.name];){if(x.equals(u)){x=null;break}L=x;x=x.getParent()}if(x){if(L){O=F.splitElement(L);s.zombies.push(O);s.zombies.push(L)}}else{L=u.getName();P=!w;x=w==I.length-1;L=d(G.node,L);for(var M=[],R=L.length,T=0,U=void 0,V=0,W=-1;T<R;T++){U=L[T];\nif(U==\" \"){if(!V&&(!P||T)){M.push(new CKEDITOR.dom.text(\" \"));W=M.length}V=1}else{M.push(U);V=0}}x&&W==M.length&&M.pop();P=M}}if(P){for(;x=P.pop();)F.insertNode(x);P=0}else F.insertNode(G.node);if(G.lastNotAllowed&&w<I.length-1){(O=Q?t:O)&&F.setEndAt(O,CKEDITOR.POSITION_AFTER_START);r=0}F.collapse()}}s.dontMoveCaret=v;s.bogusNeededBlocks=C}J=s.range;var S;O=s.bogusNeededBlocks;for(P=J.createBookmark();H=s.zombies.pop();)if(H.getParent()){N=J.clone();N.moveToElementEditStart(H);N.removeEmptyBlocksAtEnd()}if(O)for(;H=\nO.pop();)H.append(CKEDITOR.env.ie?J.document.createText(\" \"):J.document.createElement(\"br\"));for(;H=s.mergeCandidates.pop();)H.mergeSiblings();J.moveToBookmark(P);if(!s.dontMoveCaret){for(H=b(J.startContainer)&&J.startContainer.getChild(J.startOffset-1);H&&b(H)&&!H.is(i.$empty);){if(H.isBlockBoundary())J.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END);else{if(e(H)&&H.getHtml().match(/(\\s|&nbsp;)$/g)){S=null;break}S=J.clone();S.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END)}H=H.getLast(a)}S&&J.moveToRange(S)}D.select();\ng(m)}}}()})();\n(function(){function b(){var a=this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){this.fire(\"selectionCheck\",a);var b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){this._.selectionPreviousPath=b;this.fire(\"selectionChange\",{selection:a,path:b})}}}function c(){k=true;if(!g){a.call(this);g=CKEDITOR.tools.setTimeout(a,200,this)}}function a(){g=null;if(k){CKEDITOR.tools.setTimeout(b,0,this);k=false}}function f(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false:\na.clone()[\"moveToElementEdit\"+(d?\"End\":\"Start\")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var c=a.startContainer,d=a.getPreviousNode(h,null,c),e=a.getNextNode(h,null,c);return b(d)||b(e,1)||!d&&!e&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?true:false}function e(a){return a.getCustomData(\"cke-fillingChar\")}function d(a,b){var c=a&&a.removeCustomData(\"cke-fillingChar\");if(c){if(b!==false){var d,e=a.getDocument().getSelection().getNative(),f=e&&e.type!=\"None\"&&\ne.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){d=[e.anchorOffset,e.focusOffset];f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0]--;f&&d[1]--;var g;f=e;if(!f.isCollapsed){g=f.getRangeAt(0);g.setStart(f.anchorNode,f.anchorOffset);g.setEnd(f.focusNode,f.focusOffset);g=g.collapsed}g&&d.unshift(d.pop())}}c.setText(c.getText().replace(/\\u200B/g,\"\"));if(d){c=e.getRangeAt(0);c.setStart(c.startContainer,d[0]);c.setEnd(c.startContainer,d[1]);e.removeAllRanges();e.addRange(c)}}}\nvar g,k,h=CKEDITOR.dom.walker.invisible(1);CKEDITOR.on(\"instanceCreated\",function(a){function e(){var a=f.getSelection();a&&a.removeAllRanges()}var f=a.editor;f.define(\"selectionChange\",{errorProof:1});f.on(\"contentDom\",function(){var a=f.document,e=CKEDITOR.document,l=f.editable(),g=a.getBody(),o=a.getDocumentElement(),h=l.isInline();if(CKEDITOR.env.ie||CKEDITOR.env.opera||h){var n;l.attachListener(l,\"focus\",function(){f.unlockSelection(n);n=0},null,null,-1);var k,E=function(){k=f.getSelection(1);\nk.lock()};m?l.attachListener(l,\"beforedeactivate\",E,null,null,-1):l.attachListener(f,\"selectionCheck\",E,null,null,-1);l.attachListener(l,\"blur\",function(){f.lockSelection(k);n=1},null,null,-1);l.attachListener(l,\"mousedown\",function(){n=0})}if(CKEDITOR.env.ie&&!h){var u;l.attachListener(l,\"mousedown\",function(a){a.data.$.button==2&&f.document.$.selection.type==\"None\"&&(u=f.window.getScrollPosition())});l.attachListener(l,\"mouseup\",function(a){if(a.data.$.button==2&&u){f.document.$.documentElement.scrollLeft=\nu.x;f.document.$.documentElement.scrollTop=u.y}u=null});if(a.$.compatMode!=\"BackCompat\"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)o.on(\"mousedown\",function(a){function b(a){a=a.data.$;if(d){var c=g.$.createTextRange();try{c.moveToPoint(a.x,a.y)}catch(e){}d.setEndPoint(l.compareEndPoints(\"StartToStart\",c)<0?\"EndToEnd\":\"StartToStart\",c);d.select()}}function c(){o.removeListener(\"mousemove\",b);e.removeListener(\"mouseup\",c);o.removeListener(\"mouseup\",c);d.select()}a=a.data;if(a.getTarget().is(\"html\")&&\na.$.y<o.$.clientHeight&&a.$.x<o.$.clientWidth){var d=g.$.createTextRange();try{d.moveToPoint(a.$.x,a.$.y)}catch(f){}var l=d.duplicate();o.on(\"mousemove\",b);e.on(\"mouseup\",c);o.on(\"mouseup\",c)}});if(CKEDITOR.env.version>7){o.on(\"mousedown\",function(a){if(a.data.getTarget().is(\"html\")){e.on(\"mouseup\",r);o.on(\"mouseup\",r)}});var r=function(){e.removeListener(\"mouseup\",r);o.removeListener(\"mouseup\",r);var b=CKEDITOR.document.$.selection,c=b.createRange();b.type!=\"None\"&&c.parentElement().ownerDocument==\na.$&&c.select()}}}}l.attachListener(l,\"selectionchange\",b,f);l.attachListener(l,\"keyup\",c,f);l.attachListener(l,\"focus\",function(){f.forceNextSelectionCheck();f.selectionChange(1)});if(l.isInline()?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var D;l.attachListener(l,\"mousedown\",function(){D=1});l.attachListener(a.getDocumentElement(),\"mouseup\",function(){D&&c.call(f);D=0})}else l.attachListener(l,\"mouseup\",c,f);if(CKEDITOR.env.webkit)a.on(\"keydown\",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:d(f.editable())}},\nnull,null,-1)});f.on(\"contentDomUnload\",f.forceNextSelectionCheck,f);f.on(\"dataReady\",function(){f.selectionChange(1)});CKEDITOR.env.ie9Compat&&f.on(\"beforeDestroy\",e,null,null,9);CKEDITOR.env.webkit&&f.on(\"setData\",e);f.on(\"contentDomUnload\",function(){f.unlockSelection()})});CKEDITOR.on(\"instanceReady\",function(a){var b=a.editor,c=b.editable();if(CKEDITOR.env.webkit){b.on(\"selectionChange\",function(){var a=e(c);a&&(a.getCustomData(\"ready\")?d(c):a.setCustomData(\"ready\",1))},null,null,-1);b.on(\"beforeSetMode\",\nfunction(){d(c)},null,null,-1);var f,g,a=function(){var a=b.document,d=e(c);if(d){a=a.$.defaultView.getSelection();a.type==\"Caret\"&&a.anchorNode==d.$&&(g=1);f=d.getText();d.setText(f.replace(/\\u200B/g,\"\"))}},h=function(){var a=b.document,d=e(c);if(d){d.setText(f);if(g){a.$.defaultView.getSelection().setPosition(d.$,d.getLength());g=0}}};b.on(\"beforeUndoImage\",a);b.on(\"afterUndoImage\",h);b.on(\"beforeGetData\",a,null,null,0);b.on(\"getData\",h)}});CKEDITOR.editor.prototype.selectionChange=function(a){(a?\nb:c).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if(this._.savedSelection&&!a)return this._.savedSelection;return(a=this.editable())?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;\nreturn true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var m=\ntypeof window.getSelection!=\"function\";CKEDITOR.dom.selection=function(a){var b=a instanceof CKEDITOR.dom.element;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(CKEDITOR.env.webkit){a=this.document.getWindow().$.getSelection();if(a.type==\"None\"&&this.document.getActive().equals(this.root)||a.type==\"Caret\"&&a.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT){var c=new CKEDITOR.dom.range(this.root);c.moveToPosition(this.root,\nCKEDITOR.POSITION_AFTER_START);b=this.document.$.createRange();b.setStart(c.startContainer.$,c.startOffset);b.collapse(1);a.addRange(b)}}var a=this.getNative(),d;if(a)if(a.getRangeAt)d=(c=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(c.commonAncestorContainer);else{try{c=a.createRange()}catch(e){}d=c&&CKEDITOR.dom.element.get(c.item&&c.item(0)||c.parentElement())}if(!d||!this.root.equals(d)&&!this.root.contains(d)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=\nnull;this._.cache.selectedText=\"\";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var n={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=m?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:m?function(){var a=this._.cache;if(a.type)return a.type;\nvar b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d==\"Text\")b=CKEDITOR.SELECTION_TEXT;if(d==\"Control\")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-\nc.startOffset==1&&n[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=m?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement(),e=d.ownerDocument;if(!d.hasChildNodes())return{container:d,offset:0};for(var f=d.children,g,j,h=b.duplicate(),o=0,m=f.length-1,n=-1,k,v;o<=m;){n=Math.floor((o+m)/2);g=f[n];h.moveToElementText(g);k=h.compareEndPoints(\"StartToStart\",\nb);if(k>0)m=n-1;else if(k<0)o=n+1;else{if(CKEDITOR.env.ie9Compat&&g.tagName==\"BR\"){f=e.defaultView.getSelection();return{container:f[c?\"anchorNode\":\"focusNode\"],offset:f[c?\"anchorOffset\":\"focusOffset\"]}}return{container:d,offset:a(g)}}}if(n==-1||n==f.length-1&&k<0){h.moveToElementText(d);h.setEndPoint(\"StartToStart\",b);e=h.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;f=d.childNodes;if(!e){g=f[f.length-1];return g.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:f.length}:{container:g,offset:g.nodeValue.length}}for(d=\nf.length;e>0&&d>0;){j=f[--d];if(j.nodeType==CKEDITOR.NODE_TEXT){v=j;e=e-j.nodeValue.length}}return{container:v,offset:-e}}h.collapse(k>0?true:false);h.setEndPoint(k>0?\"StartToStart\":\"EndToStart\",b);e=h.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;if(!e)return{container:d,offset:a(g)+(k>0?0:1)};for(;e>0;)try{j=g[k>0?\"previousSibling\":\"nextSibling\"];if(j.nodeType==CKEDITOR.NODE_TEXT){e=e-j.nodeValue.length;v=j}g=j}catch(t){return{container:d,offset:a(g)}}return{container:v,offset:k>0?-e:v.nodeValue.length+\ne}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=\nc.item(e),g=f.parentNode,l=0,a=new CKEDITOR.dom.range(this.root);l<g.childNodes.length&&g.childNodes[l]!=f;l++);a.setStart(new CKEDITOR.dom.node(g),l);a.setEnd(new CKEDITOR.dom.node(g),l+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};\nreturn function(b){var c=this._.cache;if(c.ranges&&!b)return c.ranges;if(!c.ranges)c.ranges=new CKEDITOR.dom.rangeList(a.call(this));if(b)for(var d=c.ranges,e=0;e<d.length;e++){var f=d[e];f.getCommonAncestor().isReadOnly()&&d.splice(e,1);if(!f.collapsed){if(f.startContainer.isReadOnly())for(var b=f.startContainer,g;b;){if((g=b.type==CKEDITOR.NODE_ELEMENT)&&b.is(\"body\")||!b.isReadOnly())break;g&&b.getAttribute(\"contentEditable\")==\"false\"&&f.setStartAfter(b);b=b.getParent()}b=f.startContainer;g=f.endContainer;\nvar h=f.startOffset,m=f.endOffset,n=f.clone();b&&b.type==CKEDITOR.NODE_TEXT&&(h>=b.getLength()?n.setStartAfter(b):n.setStartBefore(b));g&&g.type==CKEDITOR.NODE_TEXT&&(m?n.setEndAfter(g):n.setEndBefore(g));b=new CKEDITOR.dom.walker(n);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(n.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a);b.collapsed||d.splice(e+1,0,b)}return true}return false};\nb.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);\nelse break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},\nfunction(){for(var a=b.getRanges()[0],c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type==CKEDITOR.NODE_ELEMENT&&n[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=m?b.type==\"Control\"?\"\":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();\nthis.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges();this.isLocked=0;this.reset();if(a)(a=b||c[0].getCommonAncestor())&&a.getAscendant(\"body\",1)&&(b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={}},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){if(a.length)if(this.isLocked){var b=\nCKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();!b.equals(this.root)&&b.focus()}else{if(m){var c=CKEDITOR.dom.walker.whitespaces(true),e=/\\ufeff|\\u00a0/,g={table:1,tbody:1,tr:1};if(a.length>1){b=a[a.length-1];a[0].setEnd(b.endContainer,b.endOffset)}var b=a[0],a=b.collapsed,h,i,k,A=b.getEnclosedNode();if(A&&A.type==CKEDITOR.NODE_ELEMENT&&A.getName()in n&&(!A.is(\"a\")||!A.getText()))try{k=A.$.createControlRange();k.addElement(A.$);k.select();return}catch(B){}(b.startContainer.type==\nCKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in g||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in g)&&b.shrink(CKEDITOR.NODE_ELEMENT,true);k=b.createBookmark();var g=k.startNode,p;if(!a)p=k.endNode;k=b.document.$.body.createTextRange();k.moveToElementText(g.$);k.moveStart(\"character\",1);if(p){e=b.document.$.body.createTextRange();e.moveToElementText(p.$);k.setEndPoint(\"EndToEnd\",e);k.moveEnd(\"character\",-1)}else{h=g.getNext(c);i=g.hasAscendant(\"pre\");h=!(h&&h.getText&&\nh.getText().match(e))&&(i||!g.hasPrevious()||g.getPrevious().is&&g.getPrevious().is(\"br\"));i=b.document.createElement(\"span\");i.setHtml(\"&#65279;\");i.insertBefore(g);h&&b.document.createText(\"﻿\").insertBefore(g)}b.setStartBefore(g);g.remove();if(a){if(h){k.moveStart(\"character\",-1);k.select();b.document.$.selection.clear()}else k.select();b.moveToPosition(i,CKEDITOR.POSITION_BEFORE_START);i.remove()}else{b.setEndBefore(p);p.remove();k.select()}}else{p=this.getNative();if(!p)return;if(CKEDITOR.env.opera){b=\nthis.document.$.createRange();b.selectNodeContents(this.root.$);p.addRange(b)}this.removeAllRanges();for(e=0;e<a.length;e++){if(e<a.length-1){b=a[e];k=a[e+1];i=b.clone();i.setStart(b.endContainer,b.endOffset);i.setEnd(k.startContainer,k.startOffset);if(!i.collapsed){i.shrink(CKEDITOR.NODE_ELEMENT,true);h=i.getCommonAncestor();i=i.getEnclosedNode();if(h.isReadOnly()||i&&i.isReadOnly()){k.setStart(b.startContainer,b.startOffset);a.splice(e--,1);continue}}}b=a[e];k=this.document.$.createRange();h=b.startContainer;\nif(CKEDITOR.env.opera&&b.collapsed&&h.type==CKEDITOR.NODE_ELEMENT){i=h.getChild(b.startOffset-1);c=h.getChild(b.startOffset);if(!i&&!c&&h.is(CKEDITOR.dtd.$removeEmpty)||i&&i.type==CKEDITOR.NODE_ELEMENT||c&&c.type==CKEDITOR.NODE_ELEMENT){b.insertNode(this.document.createText(\"\"));b.collapse(1)}}if(b.collapsed&&CKEDITOR.env.webkit&&f(b)){h=this.root;d(h,false);i=h.getDocument().createText(\"​\");h.setCustomData(\"cke-fillingChar\",i);b.insertNode(i);if((h=i.getNext())&&!i.getPrevious()&&h.type==CKEDITOR.NODE_ELEMENT&&\nh.getName()==\"br\"){d(this.root);b.moveToPosition(h,CKEDITOR.POSITION_BEFORE_START)}else b.moveToPosition(i,CKEDITOR.POSITION_AFTER_END)}k.setStart(b.startContainer.$,b.startOffset);try{k.setEnd(b.endContainer.$,b.endOffset)}catch(E){if(E.toString().indexOf(\"NS_ERROR_ILLEGAL_VALUE\")>=0){b.collapse(1);k.setEnd(b.endContainer.$,b.endOffset)}else throw E;}p.addRange(k)}}this.reset();this.root.fire(\"selectionchange\")}},createBookmarks:function(a){return this.getRanges().createBookmarks(a)},createBookmarks2:function(a){return this.getRanges().createBookmarks2(a)},\nselectBookmarks:function(a){for(var b=[],c=0;c<a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}this.selectRanges(b);return this},getCommonAncestor:function(){var a=this.getRanges();return a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){var a=this.getNative();try{a&&a[m?\"empty\":\"removeAllRanges\"]()}catch(b){}this.reset()}}})();\nCKEDITOR.editor.prototype.attachStyleStateChange=function(b,c){var a=this._.styleStateChangeCallbacks;if(!a){a=this._.styleStateChangeCallbacks=[];this.on(\"selectionChange\",function(b){for(var c=0;c<a.length;c++){var d=a[c],g=d.style.checkActive(b.data.path)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;d.fn.call(this,g)}})}a.push({style:b,fn:c})};CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;\n(function(){function b(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a.getAttribute(\"data-nostyle\"))c=a;else if(!d){var e=a.getAttribute(\"contentEditable\");e==\"false\"?c=a:e==\"true\"&&(d=1)}}return c}function c(a){var c=a.document;if(a.collapsed){c=y(this,c);a.insertNode(c);a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_END)}else{var d=this.element,e=this._.definition,f,g=e.ignoreReadonly,h=g||e.includeReadonly;h==void 0&&(h=a.root.getCustomData(\"cke_includeReadonly\"));var j=CKEDITOR.dtd[d]||\n(f=true,CKEDITOR.dtd.span);a.enlarge(CKEDITOR.ENLARGE_INLINE,1);a.trim();var m=a.createBookmark(),i=m.startNode,n=m.endNode,k=i,o;if(!g){var q=a.getCommonAncestor(),g=b(i,q),q=b(n,q);g&&(k=g.getNextSourceNode(true));q&&(n=q)}for(k.getPosition(n)==CKEDITOR.POSITION_FOLLOWING&&(k=0);k;){g=false;if(k.equals(n)){k=null;g=true}else{var p=k.type,r=p==CKEDITOR.NODE_ELEMENT?k.getName():null,q=r&&k.getAttribute(\"contentEditable\")==\"false\",s=r&&k.getAttribute(\"data-nostyle\");if(r&&k.data(\"cke-bookmark\")){k=\nk.getNextSourceNode(true);continue}if(!r||j[r]&&!s&&(!q||h)&&(k.getPosition(n)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED&&(!e.childRule||e.childRule(k))){var u=k.getParent();if(u&&((u.getDtd()||CKEDITOR.dtd.span)[d]||f)&&(!e.parentRule||e.parentRule(u))){if(!o&&(!r||!CKEDITOR.dtd.$removeEmpty[r]||(k.getPosition(n)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|\nCKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)){o=a.clone();o.setStartBefore(k)}if(p==CKEDITOR.NODE_TEXT||q||p==CKEDITOR.NODE_ELEMENT&&!k.getChildCount()){for(var p=k,v;(g=!p.getNext(D))&&(v=p.getParent(),j[v.getName()])&&(v.getPosition(i)|CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_FOLLOWING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED&&(!e.childRule||\ne.childRule(v));)p=v;o.setEndAfter(p)}}else g=true}else g=true;k=k.getNextSourceNode(s||q&&!h)}if(g&&o&&!o.collapsed){for(var g=y(this,c),q=g.hasAttributes(),s=o.getCommonAncestor(),p={},r={},u={},z={},A,B,E;g&&s;){if(s.getName()==d){for(A in e.attributes)if(!z[A]&&(E=s.getAttribute(B)))g.getAttribute(A)==E?r[A]=1:z[A]=1;for(B in e.styles)if(!u[B]&&(E=s.getStyle(B)))g.getStyle(B)==E?p[B]=1:u[B]=1}s=s.getParent()}for(A in r)g.removeAttribute(A);for(B in p)g.removeStyle(B);q&&!g.hasAttributes()&&(g=\nnull);if(g){o.extractContents().appendTo(g);l.call(this,g);o.insertNode(g);g.mergeSiblings();CKEDITOR.env.ie||g.$.normalize()}else{g=new CKEDITOR.dom.element(\"span\");o.extractContents().appendTo(g);o.insertNode(g);l.call(this,g);g.remove(true)}o=null}}a.moveToBookmark(m);a.shrink(CKEDITOR.SHRINK_TEXT)}}function a(a){a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var b=a.createBookmark(),c=b.startNode;if(a.collapsed){for(var d=new CKEDITOR.dom.elementPath(c.getParent(),a.root),e,f=0,g;f<d.elements.length&&(g=\nd.elements[f]);f++){if(g==d.block||g==d.blockLimit)break;if(this.checkElementRemovable(g)){var h;if(a.collapsed&&(a.checkBoundaryOfElement(g,CKEDITOR.END)||(h=a.checkBoundaryOfElement(g,CKEDITOR.START)))){e=g;e.match=h?\"start\":\"end\"}else{g.mergeSiblings();g.getName()==this.element?o.call(this,g):j(g,s(this)[g.getName()])}}}if(e){g=c;for(f=0;;f++){h=d.elements[f];if(h.equals(e))break;else if(h.match)continue;else h=h.clone();h.append(g);g=h}g[e.match==\"start\"?\"insertBefore\":\"insertAfter\"](e)}}else{var m=\nb.endNode,l=this,d=function(){for(var a=new CKEDITOR.dom.elementPath(c.getParent()),b=new CKEDITOR.dom.elementPath(m.getParent()),d=null,e=null,f=0;f<a.elements.length;f++){var g=a.elements[f];if(g==a.block||g==a.blockLimit)break;l.checkElementRemovable(g)&&(d=g)}for(f=0;f<b.elements.length;f++){g=b.elements[f];if(g==b.block||g==b.blockLimit)break;l.checkElementRemovable(g)&&(e=g)}e&&m.breakParent(e);d&&c.breakParent(d)};d();for(e=c;!e.equals(m);){f=e.getNextSourceNode();if(e.type==CKEDITOR.NODE_ELEMENT&&\nthis.checkElementRemovable(e)){e.getName()==this.element?o.call(this,e):j(e,s(this)[e.getName()]);if(f.type==CKEDITOR.NODE_ELEMENT&&f.contains(c)){d();f=c.getNext()}}e=f}}a.moveToBookmark(b)}function f(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&z(a,this)}function e(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,\nc=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&a.removeStyle(e)}}function d(a){var b=a.createBookmark(true),c=a.createIterator();c.enforceRealBlocks=true;if(this._.enterMode)c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e=a.document;d=c.getNextParagraph();)if(!d.isReadOnly()){var f=y(this,e,d);k(d,f)}a.moveToBookmark(b)}function g(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=true;c.enlargeBr=\nthis._.enterMode!=CKEDITOR.ENTER_BR;for(var d;d=c.getNextParagraph();)if(this.checkElementRemovable(d))if(d.is(\"pre\")){var e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\");e&&d.copyAttributes(e);k(d,e)}else o.call(this,d);a.moveToBookmark(b)}function k(a,b){var c=!b;if(c){b=a.getDocument().createElement(\"div\");a.copyAttributes(b)}var d=b&&b.is(\"pre\"),e=a.is(\"pre\"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=m(f,\n/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g,\"\");f=f.replace(/[ \\t\\r\\n]*(<br[^>]*>)[ \\t\\r\\n]*/gi,\"$1\");f=f.replace(/([ \\t\\n\\r]+|&nbsp;)/g,\" \");f=f.replace(/<br\\b[^>]*>/gi,\"\\n\");if(CKEDITOR.env.ie){var g=a.getDocument().createElement(\"div\");g.append(e);e.$.outerHTML=\"<pre>\"+f+\"</pre>\";e.copyAttributes(g.getFirst());e=g.getFirst().remove()}else e.setHtml(f);b=e}else f?b=n(c?[a.getHtml()]:h(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,j;if((j=c.getPrevious(v))&&j.is&&j.is(\"pre\")){d=m(j.getHtml(),/\\n$/,\"\")+\n\"\\n\\n\"+m(c.getHtml(),/^\\n/,\"\");CKEDITOR.env.ie?c.$.outerHTML=\"<pre>\"+d+\"</pre>\":c.setHtml(d);j.remove()}}else c&&q(b)}function h(a){a.getName();var b=[];m(a.getOuterHtml(),/(\\S\\s*)\\n(?:\\s|(<span[^>]+data-cke-bookmark.*?\\/span>))*\\n(?!$)/gi,function(a,b,c){return b+\"</pre>\"+c+\"<pre>\"}).replace(/<pre\\b.*?>([\\s\\S]*?)<\\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var d=\"\",e=\"\",a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\\/span>)|(<span[^>]+data-cke-bookmark.*?\\/span>$)/gi,function(a,\nb,c){b&&(d=b);c&&(e=c);return\"\"});return d+a.replace(b,c)+e}function n(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\\r\\n|\\r)/g,\"\\n\"),e=m(e,/^[ \\t]*\\n/,\"\"),e=m(e,/\\n$/,\"\"),e=m(e,/^[ \\t]+|[ \\t]+$/g,function(a,b){return a.length==1?\"&nbsp;\":b?\" \"+CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1):CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1)+\" \"}),e=e.replace(/\\n/g,\"<br>\"),e=e.replace(/[ \\t]{2,}/g,function(a){return CKEDITOR.tools.repeat(\"&nbsp;\",\na.length-1)+\" \"});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function o(a){var b=this._.definition,c=b.attributes,b=b.styles,d=s(this)[a.getName()],e=CKEDITOR.tools.isEmpty(c)&&CKEDITOR.tools.isEmpty(b),f;for(f in c)if(!((f==\"class\"||this._.definition.fullMatch)&&a.getAttribute(f)!=A(f,c[f]))){e=a.hasAttribute(f);a.removeAttribute(f)}for(var g in b)if(!(this._.definition.fullMatch&&a.getStyle(g)!=A(g,b[g],true))){e=e||!!a.getStyle(g);a.removeStyle(g)}j(a,d,p[a.getName()]);\ne&&(this._.definition.alwaysRemoveElement?q(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?q(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"))}function l(a){for(var b=s(this),c=a.getElementsByTag(this.element),d=c.count();--d>=0;)o.call(this,c.getItem(d));for(var e in b)if(e!=this.element){c=a.getElementsByTag(e);for(d=c.count()-1;d>=0;d--){var f=c.getItem(d);j(f,b[e])}}}function j(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=\nb[d][0],f;if(f=a.getAttribute(e)){var g=b[d][1];(g===null||g.test&&g.test(f)||typeof g==\"string\"&&f==g)&&a.removeAttribute(e)}}c||q(a)}function q(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(v),d=a.getNext(v);c&&(c.type==CKEDITOR.NODE_TEXT||!c.isBlockBoundary({br:1}))&&a.append(\"br\",1);d&&(d.type==CKEDITOR.NODE_TEXT||!d.isBlockBoundary({br:1}))&&a.append(\"br\");a.remove(true)}else{c=a.getFirst();d=a.getLast();a.remove(true);if(c){c.type==CKEDITOR.NODE_ELEMENT&&\nc.mergeSiblings();d&&(!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT)&&d.mergeSiblings()}}}function y(a,b,c){var d;d=a.element;d==\"*\"&&(d=\"span\");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=z(d,a);b.getCustomData(\"doc_processing_style\")&&d.hasAttribute(\"id\")?d.removeAttribute(\"id\"):b.setCustomData(\"doc_processing_style\",1);return d}function z(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute(\"style\",c);\nreturn a}function i(a,b){for(var c in a)a[c]=a[c].replace(r,function(a,c){return b[c]})}function s(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;if(typeof e==\"string\")f=e.toLowerCase();else{f=e.element?e.element.toLowerCase():a.element;g=e.attributes}e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function A(a,\nb,c){var d=new CKEDITOR.dom.element(\"span\");d[c?\"setStyle\":\"setAttribute\"](a,b);return d[c?\"getStyle\":\"getAttribute\"](a)}function B(a,b){for(var c=a.document,d=a.getRanges(),e=b?this.removeFromRange:this.applyToRange,f,g=d.createIterator();f=g.getNextRange();)e.call(this,f);a.selectRanges(d);c.removeCustomData(\"doc_processing_style\")}var p={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,\nkeygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},E={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},u=/\\s*(?:;\\s*|$)/,r=/#\\((.+?)\\)/g,D=CKEDITOR.dom.walker.bookmark(0,1),v=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){var c=a.attributes;if(c&&c.style){a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style));delete c.style}if(b){a=CKEDITOR.tools.clone(a);i(a.attributes,b);i(a.styles,\nb)}c=this.element=a.element?typeof a.element==\"string\"?a.element.toLowerCase():a.element:\"*\";this.type=a.type||(p[c]?CKEDITOR.STYLE_BLOCK:E[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);if(typeof this.element==\"object\")this.type=CKEDITOR.STYLE_OBJECT;this._={definition:a}};CKEDITOR.editor.prototype.applyStyle=function(a){B.call(a,this.getSelection())};CKEDITOR.editor.prototype.removeStyle=function(a){B.call(a,this.getSelection(),1)};CKEDITOR.style.prototype={apply:function(a){B.call(this,a.getSelection())},\nremove:function(a){B.call(this,a.getSelection(),1)},applyToRange:function(a){return(this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?d:this.type==CKEDITOR.STYLE_OBJECT?f:null).call(this,a)},removeFromRange:function(b){return(this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?a:this.type==CKEDITOR.STYLE_BLOCK?g:this.type==CKEDITOR.STYLE_OBJECT?e:null).call(this,b)},applyToObject:function(a){z(a,this)},checkActive:function(a){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||\na.blockLimit,true);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var b=a.elements,c=0,d;c<b.length;c++){d=b[c];if(!(this.type==CKEDITOR.STYLE_INLINE&&(d==a.block||d==a.blockLimit))){if(this.type==CKEDITOR.STYLE_OBJECT){var e=d.getName();if(!(typeof this.element==\"string\"?e==this.element:e in this.element))continue}if(this.checkElementRemovable(d,true))return true}}}return false},checkApplicable:function(a){switch(this.type){case CKEDITOR.STYLE_OBJECT:return a.contains(this.element)}return true},\ncheckElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return false;var d=a.getName();if(typeof this.element==\"string\"?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return true;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f){e++;d[g]=f[g]}if(g=CKEDITOR.style.getStyleText(c)){d.style||e++;d.style=g}d._length=e;c=c._AC=d}if(c._length){for(var h in c)if(h!=\"_length\"){e=a.getAttribute(h)||\"\";if(h==\"style\")a:{d=c[h];typeof d==\n\"string\"&&(d=CKEDITOR.tools.parseCssText(d));typeof e==\"string\"&&(e=CKEDITOR.tools.parseCssText(e,true));g=void 0;for(g in d)if(!(g in e&&(e[g]==d[g]||d[g]==\"inherit\"||e[g]==\"inherit\"))){d=false;break a}d=true}else d=c[h]==e;if(d){if(!b)return true}else if(b)return false}if(b)return true}else return true}return false},checkElementRemovable:function(a,b){if(this.checkElementMatch(a,b))return true;var c=s(this)[a.getName()];if(c){var d;if(!(c=c.attributes))return true;for(var e=0;e<c.length;e++){d=\nc[e][0];if(d=a.getAttribute(d)){var f=c[e][1];if(f===null||typeof f==\"string\"&&d==f||f.test(d))return true}}}return false},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;d==\"bdo\"&&(d=\"span\");var c=[\"<\",d],e=b.attributes;if(e)for(var f in e)c.push(\" \",f,'=\"',e[f],'\"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style=\"',e,'\"');c.push(\">\",a||b.name,\"</\",d,\">\");return c.join(\"\")}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||\n\"\",d=\"\";c.length&&(c=c.replace(u,\";\"));for(var e in b){var f=b[e],g=(e+\":\"+f).replace(u,\";\");f==\"inherit\"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d}})();CKEDITOR.styleCommand=function(b){this.style=b};CKEDITOR.styleCommand.prototype.exec=function(b){b.focus();this.state==CKEDITOR.TRISTATE_OFF?b.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&b.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager(\"\",\"stylesSet\");\nCKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(b,c,a){CKEDITOR.stylesSet.addExternal(b,c,\"\");CKEDITOR.stylesSet.load(b,a)};\nCKEDITOR.editor.prototype.getStylesSet=function(b){if(this._.stylesDefinitions)b(this._.stylesDefinitions);else{var c=this,a=c.config.stylesCombo_stylesSet||c.config.stylesSet||\"default\";if(a instanceof Array){c._.stylesDefinitions=a;b(a)}else{var a=a.split(\":\"),f=a[0];CKEDITOR.stylesSet.addExternal(f,a[1]?a.slice(1).join(\":\"):CKEDITOR.getUrl(\"styles.js\"),\"\");CKEDITOR.stylesSet.load(f,function(a){c._.stylesDefinitions=a[f];b(c._.stylesDefinitions)})}}};\nCKEDITOR.dom.comment=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createComment(b));CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return\"<\\!--\"+this.$.nodeValue+\"--\\>\"}});\n(function(){var b={},c;for(c in CKEDITOR.dtd.$blockLimit)c in CKEDITOR.dtd.$list||(b[c]=1);var a={};for(c in CKEDITOR.dtd.$block)c in CKEDITOR.dtd.$blockLimit||c in CKEDITOR.dtd.$empty||(a[c]=1);CKEDITOR.dom.elementPath=function(c,e){var d=null,g=null,k=[],e=e||c.getDocument().getBody(),h=c;do if(h.type==CKEDITOR.NODE_ELEMENT){k.push(h);if(!this.lastElement){this.lastElement=h;if(h.is(CKEDITOR.dtd.$object))continue}var m=h.getName();if(!g){!d&&a[m]&&(d=h);if(b[m]){var n;if(n=!d){if(m=m==\"div\"){a:{m=\nh.getChildren();n=0;for(var o=m.count();n<o;n++){var l=m.getItem(n);if(l.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[l.getName()]){m=true;break a}}m=false}m=!m&&!h.equals(e)}n=m}n?d=h:g=h}}if(h.equals(e))break}while(h=h.getParent());this.block=d;this.blockLimit=g;this.root=e;this.elements=k}})();\nCKEDITOR.dom.elementPath.prototype={compare:function(b){var c=this.elements,b=b&&b.elements;if(!b||c.length!=b.length)return false;for(var a=0;a<c.length;a++)if(!c[a].equals(b[a]))return false;return true},contains:function(b,c,a){var f;typeof b==\"string\"&&(f=function(a){return a.getName()==b});b instanceof CKEDITOR.dom.element?f=function(a){return a.equals(b)}:CKEDITOR.tools.isArray(b)?f=function(a){return CKEDITOR.tools.indexOf(b,a.getName())>-1}:typeof b==\"function\"?f=b:typeof b==\"object\"&&(f=\nfunction(a){return a.getName()in b});var e=this.elements,d=e.length;c&&d--;if(a){e=Array.prototype.slice.call(e,0);e.reverse()}for(c=0;c<d;c++)if(f(e[c]))return e[c];return null},isContextFor:function(b){var c;if(b in CKEDITOR.dtd.$block){c=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit;return!!c.getDtd()[b]}return true},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}};\nCKEDITOR.dom.text=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createTextNode(b));this.$=b};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node;\nCKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(b){this.$.nodeValue=b},split:function(b){var c=this.$.parentNode,a=c.childNodes.length,f=this.getLength(),e=this.getDocument(),d=new CKEDITOR.dom.text(this.$.splitText(b),e);if(c.childNodes.length==a)if(b>=f){d=e.createText(\"\");d.insertAfter(this)}else{b=e.createText(\"\");b.insertAfter(d);b.remove()}return d},substring:function(b,\nc){return typeof c!=\"number\"?this.$.nodeValue.substr(b):this.$.nodeValue.substring(b,c)}});\n(function(){function b(a,b,c){var d=a.serializable,g=b[c?\"endContainer\":\"startContainer\"],k=c?\"endOffset\":\"startOffset\",h=d?b.document.getById(a.startNode):a.startNode,a=d?b.document.getById(a.endNode):a.endNode;if(g.equals(h.getPrevious())){b.startOffset=b.startOffset-g.getLength()-a.getPrevious().getLength();g=a.getNext()}else if(g.equals(a.getPrevious())){b.startOffset=b.startOffset-g.getLength();g=a.getNext()}g.equals(h.getParent())&&b[k]++;g.equals(a.getParent())&&b[k]++;b[c?\"endContainer\":\"startContainer\"]=\ng;return b}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,c)};var c={createIterator:function(){var a=this,b=CKEDITOR.dom.walker.bookmark(),c=[],d;return{getNextRange:function(g){d=d==void 0?0:d+1;var k=a[d];if(k&&a.length>1){if(!d)for(var h=a.length-1;h>=0;h--)c.unshift(a[h].createBookmark(true));if(g)for(var m=0;a[d+m+1];){for(var n=k.document,g=0,h=n.getById(c[m].endNode),n=n.getById(c[m+\n1].startNode);;){h=h.getNextSourceNode(false);if(n.equals(h))g=1;else if(b(h)||h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary())continue;break}if(!g)break;m++}for(k.moveToBookmark(c.shift());m--;){h=a[++d];h.moveToBookmark(c.shift());k.setEnd(h.endContainer,h.endOffset)}}return k}}},createBookmarks:function(a){for(var c=[],e,d=0;d<this.length;d++){c.push(e=this[d].createBookmark(a,true));for(var g=d+1;g<this.length;g++){this[g]=b(e,this[g]);this[g]=b(e,this[g],true)}}return c},createBookmarks2:function(a){for(var b=\n[],c=0;c<this.length;c++)b.push(this[c].createBookmark2(a));return b},moveToBookmarks:function(a){for(var b=0;b<this.length;b++)this[b].moveToBookmark(a[b])}}})();\n(function(){function b(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(\",\")[1]||\"skins/\"+CKEDITOR.skinName.split(\",\")[0]+\"/\")}function c(a){var c=CKEDITOR.skin[\"ua_\"+a],d=CKEDITOR.env;if(c)for(var c=c.split(\",\").sort(function(a,b){return a>b?-1:1}),e=0,f;e<c.length;e++){f=c[e];if(d.ie&&(f.replace(/^ie/,\"\")==d.version||d.quirks&&f==\"iequirks\"))f=\"ie\";if(d[f]){a=a+(\"_\"+c[e]);break}}return CKEDITOR.getUrl(b()+a+\".css\")}function a(a,b){if(!d[a]){CKEDITOR.document.appendStyleSheet(c(a));d[a]=1}b&&b()}\nfunction f(a){var b=a.getById(g);if(!b){b=a.getHead().append(\"style\");b.setAttribute(\"id\",g);b.setAttribute(\"type\",\"text/css\")}return b}function e(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split(\"}\").slice(0,-1);for(e=0;e<b.length;e++)b[e]=b[e].split(\"{\")}for(var g=0;g<a.length;g++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[g].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie?\na[g].$.styleSheet.cssText=a[g].$.styleSheet.cssText+f:a[g].$.innerHTML=a[g].$.innerHTML+f}}var d={};CKEDITOR.skin={path:b,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(\",\")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(b()+\"skin.js\"),function(){a(c,d)}):a(c,d)},getPath:function(a){return CKEDITOR.getUrl(c(a))},icons:{},addIcon:function(a,b,c){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0})},getIconStyle:function(a,b,c,d){var e;if(a){a=a.toLowerCase();b&&\n(e=this.icons[a+\"-rtl\"]);e||(e=this.icons[a])}a=c||e&&e.path||\"\";d=d||e&&e.offset;return a&&\"background-image:url(\"+CKEDITOR.getUrl(a)+\");background-position:0 \"+d+\"px;\"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=f(CKEDITOR.document);return(this.setUiColor=function(a){var c=CKEDITOR.skin.chameleon,d=[[h,a]];this.uiColor=a;e([b],c(this,\"editor\"),d);e(k,c(this,\"panel\"),d)}).call(this,a)}});var g=\"cke_ui_color\",k=[],h=/\\$color/g;\nCKEDITOR.on(\"instanceLoaded\",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag(\"iframe\").getItem(0).getFrameDocument();if(!a.getById(\"cke_ui_color\")){a=f(a);k.push(a);var c=b.getUiColor();c&&e([a],CKEDITOR.skin.chameleon(b,\"panel\"),[[h,c]])}};b.on(\"panelShow\",a);b.on(\"menuShow\",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})();\n(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var b=CKEDITOR.dom.element.createFromHtml('<div style=\"width:0px;height:0px;position:absolute;left:-10000px;border: 1px solid;border-color: red blue;\"></div>',CKEDITOR.document);b.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=b.getComputedStyle(\"border-top-color\")==b.getComputedStyle(\"border-right-color\")}catch(c){CKEDITOR.env.hc=false}b.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+\" cke_hc\";CKEDITOR.document.appendStyleText(\".cke{visibility:hidden;}\");\nCKEDITOR.status=\"loaded\";CKEDITOR.fireOnce(\"loaded\");if(b=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var a=0;a<b.length;a++){CKEDITOR.editor.prototype.constructor.apply(b[a][0],b[a][1]);CKEDITOR.add(b[a][0])}}})();/*\n Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or http://ckeditor.com/license\n*/\nCKEDITOR.skin.name=\"moono\";CKEDITOR.skin.ua_editor=\"ie,iequirks,ie7,ie8,gecko\";CKEDITOR.skin.ua_dialog=\"ie,iequirks,ie7,ie8,opera\";\nCKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=(\"0\"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return\"#\"+a.join(\"\")}}(),c=function(){var b=new CKEDITOR.template(\"background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');\");return function(c,\na){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template(\"{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] \"),\npanel:new CKEDITOR.template(\".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] \")};\nreturn function(g,e){var a=g.uiColor,a={id:\".\"+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c(\"#FFFFFF\",\"#FFFFFF\"),dialogTabSelectedBorder:\"#FFF\",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\\[/g,\n\"{\").replace(/\\]/g,\"}\")}}();CKEDITOR.plugins.add(\"dialogui\",{onLoad:function(){var h=function(b){this._||(this._={});this._[\"default\"]=this._.initValue=b[\"default\"]||\"\";this._.required=b.required||!1;for(var a=[this._],d=1;d<arguments.length;d++)a.push(arguments[d]);a.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,a);return this._},r={build:function(b,a,d){return new CKEDITOR.ui.dialog.textInput(b,a,d)}},l={build:function(b,a,d){return new CKEDITOR.ui.dialog[a.type](b,a,d)}},n={isChanged:function(){return this.getValue()!=\nthis.getInitValue()},reset:function(b){this.setValue(this.getInitValue(),b)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._[\"default\"]},getInitValue:function(){return this._.initValue}},o=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(b,a){this._.domOnChangeRegistered||(b.on(\"load\",function(){this.getInputElement().on(\"change\",function(){b.parts.dialog.isVisible()&&this.fire(\"change\",{value:this.getValue()})},\nthis)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},!0),s=/^on([A-Z]\\w+)/,p=function(b){for(var a in b)(s.test(a)||\"title\"==a||\"type\"==a)&&delete b[a];return b};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,a,d,e){if(!(4>arguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+\"_label\";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"div\",null,{role:\"presentation\"},function(){var f=[],d=a.required?\" cke_required\":\"\";\"horizontal\"!=\na.labelLayout?f.push('<label class=\"cke_dialog_ui_labeled_label'+d+'\" ',' id=\"'+c.labelId+'\"',c.inputId?' for=\"'+c.inputId+'\"':\"\",(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",a.label,\"</label>\",'<div class=\"cke_dialog_ui_labeled_content\"'+(a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\")+' role=\"presentation\">',e.call(this,b,a),\"</div>\"):(d={type:\"hbox\",widths:a.widths,padding:0,children:[{type:\"html\",html:'<label class=\"cke_dialog_ui_labeled_label'+d+'\" id=\"'+c.labelId+'\" for=\"'+c.inputId+'\"'+\n(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\"+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\"},{type:\"html\",html:'<span class=\"cke_dialog_ui_labeled_content\"'+(a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\")+\">\"+e.call(this,b,a)+\"</span>\"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,d,f));return f.join(\"\")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this._.inputId=CKEDITOR.tools.getNextId()+\"_textInput\",c={\"class\":\"cke_dialog_ui_input_\"+a.type,id:e,type:a.type};\na.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var f=this,i=!1;b.on(\"load\",function(){f.getInputElement().on(\"keydown\",function(a){a.data.getKeystroke()==13&&(i=true)});f.getInputElement().on(\"keyup\",function(a){if(a.data.getKeystroke()==13&&i){b.getButton(\"ok\")&&setTimeout(function(){b.getButton(\"ok\").click()},0);i=false}},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var b=\n['<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"'];a.width&&b.push('style=\"width:'+a.width+'\" ');b.push(\"><input \");c[\"aria-labelledby\"]=this._.labelId;this._.required&&(c[\"aria-required\"]=this._.required);for(var f in c)b.push(f+'=\"'+c[f]+'\" ');b.push(\" /></div>\");return b.join(\"\")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this,c=this._.inputId=CKEDITOR.tools.getNextId()+\"_textarea\",f={};a.validate&&(this.validate=a.validate);f.rows=a.rows||5;f.cols=\na.cols||20;\"undefined\"!=typeof a.inputStyle&&(f.style=a.inputStyle);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f[\"aria-labelledby\"]=this._.labelId;this._.required&&(f[\"aria-required\"]=this._.required);var a=['<div class=\"cke_dialog_ui_input_textarea\" role=\"presentation\"><textarea class=\"cke_dialog_ui_input_textarea\" id=\"',c,'\" '],b;for(b in f)a.push(b+'=\"'+CKEDITOR.tools.htmlEncode(f[b])+'\" ');a.push(\">\",CKEDITOR.tools.htmlEncode(e._[\"default\"]),\"</textarea></div>\");return a.join(\"\")})}},\ncheckbox:function(b,a,d){if(!(3>arguments.length)){var e=h.call(this,a,{\"default\":!!a[\"default\"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"span\",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_checkbox\":CKEDITOR.tools.getNextId()+\"_checkbox\"},true),f=[],d=CKEDITOR.tools.getNextId()+\"_label\",g={\"class\":\"cke_dialog_ui_checkbox_input\",type:\"checkbox\",\"aria-labelledby\":d};p(c);if(a[\"default\"])g.checked=\"checked\";if(typeof c.inputStyle!=\n\"undefined\")c.style=c.inputStyle;e.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,f,\"input\",null,g);f.push(' <label id=\"',d,'\" for=\"',g.id,'\"'+(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",CKEDITOR.tools.htmlEncode(a.label),\"</label>\");return f.join(\"\")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._[\"default\"]||(this._[\"default\"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.valdiate);var e=[],c=this;CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){for(var f=\n[],d=[],g=a.id?a.id+\"_radio\":CKEDITOR.tools.getNextId()+\"_radio\",j=0;j<a.items.length;j++){var k=a.items[j],h=k[2]!==void 0?k[2]:k[0],l=k[1]!==void 0?k[1]:k[0],m=CKEDITOR.tools.getNextId()+\"_radio_input\",n=m+\"_label\",m=CKEDITOR.tools.extend({},a,{id:m,title:null,type:null},true),h=CKEDITOR.tools.extend({},m,{title:h},true),o={type:\"radio\",\"class\":\"cke_dialog_ui_radio_input\",name:g,value:l,\"aria-labelledby\":n},q=[];if(c._[\"default\"]==l)o.checked=\"checked\";p(m);p(h);if(typeof m.inputStyle!=\"undefined\")m.style=\nm.inputStyle;e.push(new CKEDITOR.ui.dialog.uiElement(b,m,q,\"input\",null,o));q.push(\" \");new CKEDITOR.ui.dialog.uiElement(b,h,q,\"label\",null,{id:n,\"for\":o.id},k[0]);f.push(q.join(\"\"))}new CKEDITOR.ui.dialog.hbox(b,e,f,d);return d.join(\"\")});this._.children=e}},button:function(b,a,d){if(arguments.length){\"function\"==typeof a&&(a=a(b.getParentEditor()));h.call(this,a,{disabled:a.disabled||!1});CKEDITOR.event.implementOn(this);var e=this;b.on(\"load\",function(){var a=this.getElement();(function(){a.on(\"click\",\ne.click,e);a.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var c=CKEDITOR.tools.extend({},a);delete c.style;var f=CKEDITOR.tools.getNextId()+\"_label\";CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,\"a\",null,{style:a.style,href:\"javascript:void(0)\",title:a.label,hidefocus:\"true\",\"class\":a[\"class\"],role:\"button\",\"aria-labelledby\":f},'<span id=\"'+f+'\" class=\"cke_dialog_ui_button\">'+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\")}},\nselect:function(b,a,d){if(!(3>arguments.length)){var e=h.call(this,a);a.validate&&(this.validate=a.validate);e.inputId=CKEDITOR.tools.getNextId()+\"_select\";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_select\":CKEDITOR.tools.getNextId()+\"_select\"},true),d=[],i=[],g={id:e.inputId,\"class\":\"cke_dialog_ui_input_select\",\"aria-labelledby\":this._.labelId};d.push('<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"');a.width&&d.push('style=\"width:'+\na.width+'\" ');d.push(\">\");if(a.size!=void 0)g.size=a.size;if(a.multiple!=void 0)g.multiple=a.multiple;p(c);for(var j=0,k;j<a.items.length&&(k=a.items[j]);j++)i.push('<option value=\"',CKEDITOR.tools.htmlEncode(k[1]!==void 0?k[1]:k[0]).replace(/\"/g,\"&quot;\"),'\" /> ',CKEDITOR.tools.htmlEncode(k[0]));if(typeof c.inputStyle!=\"undefined\")c.style=c.inputStyle;e.select=new CKEDITOR.ui.dialog.uiElement(b,c,d,\"select\",null,g,i.join(\"\"));d.push(\"</div>\");return d.join(\"\")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===\na[\"default\"]&&(a[\"default\"]=\"\");var e=CKEDITOR.tools.extend(h.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on(\"load\",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass(\"cke_dialog_ui_input_file\")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e.frameId=CKEDITOR.tools.getNextId()+\"_fileInput\";var b=CKEDITOR.env.isCustomDomain(),d=['<iframe frameborder=\"0\" allowtransparency=\"0\" class=\"cke_dialog_ui_input_file\" role=\"presentation\" id=\"',\ne.frameId,'\" title=\"',a.label,'\" src=\"javascript:void('];d.push(b?\"(function(){document.open();document.domain='127.0.0.1\"127.0.0.1\"127.0.0.1';document.close();})()\":\"0\");d.push(')\"></iframe>');return d.join(\"\")})}},fileButton:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this;a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),f=c.onClick;c.className=(c.className?c.className+\" \":\"\")+\"cke_dialog_ui_button\";c.onClick=function(c){var d=a[\"for\"];if(!f||f.call(this,c)!==false){b.getContentElement(d[0],\nd[1]).submit();this.disable()}};b.on(\"load\",function(){b.getContentElement(a[\"for\"][0],a[\"for\"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\\s*<[\\w:]+\\s+([^>]*)?>../../../,a=/^(/s_2A<[\\w:]+(?:\\s+[^>]*)?)((?:.|\\r|\\n)+)$/,d=/\\/$/;return function(e,c,f){if(!(3>arguments.length)){var i=[],g=c.html;\"<\"!=g.charAt(0)&&(g=\"<span>\"+g+\"</span>\");var j=c.focus;j&&(this.focus=function(){this.selectParentTab();\"function\"==typeof j&&j.call(this);this.fire(\"focus\")},c.isFocusable&&\n(this.isFocusable=this.isFocusable),this.keyboardFocusable=!0);CKEDITOR.ui.dialog.uiElement.call(this,e,c,i,\"span\",null,null,\"\");i=i.join(\"\").match(b);g=g.match(a)||[\"\",\"\",\"\"];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]=\"../../../\"+g[2]);f.push([g[1],\" \",i[1]||\"\",g[2]].join(\"\"))}}}(),fieldset:function(b,a,d,e,c){var f=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,e,\"fieldset\",null,null,function(){var a=[];f&&a.push(\"<legend\"+(c.labelStyle?' style=\"'+c.labelStyle+'\"':\"\")+\">\"+f+\"</legend>\");\nfor(var b=0;b<d.length;b++)a.push(d[b]);return a.join(\"\")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(b){var a=CKEDITOR.document.getById(this._.labelId);1>a.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b=CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?\n\"\":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire(\"click\",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass(\"cke_disabled\")},disable:function(){this._.disabled=!0;this.getElement().addClass(\"cke_disabled\")},isVisible:function(){return this.getElement().getFirst().isVisible()},isEnabled:function(){return!this._.disabled},\neventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on(\"click\",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},focus:function(){var b=this.selectParentTab();\nsetTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){!b&&(b=\"\");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,\n{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var e=new CKEDITOR.dom.element(\"option\",this.getDialog().getParentEditor().document),c=this.getInputElement().$;e.$.text=b;e.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(e.$):c.add(e.$,null):c.add(e.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0<b.length;)b.remove(0);return this},keyboardFocusable:!0},\nn,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(b,a){this.getInputElement().$.checked=b;!a&&this.fire(\"change\",{value:b})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(b,a){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return o.onChange.apply(this,arguments);b.on(\"load\",\nfunction(){var a=this._.checkbox.getElement();a.on(\"propertychange\",function(b){b=b.data.$;\"checked\"==b.propertyName&&this.fire(\"change\",{value:a.$.checked})},this)},this);this.on(\"change\",a);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(b,a){for(var d=this._.children,e,c=0;c<d.length&&(e=d[c]);c++)e.getElement().$.checked=e.getValue()==b;!a&&this.fire(\"change\",{value:b})},getValue:function(){for(var b=\nthis._.children,a=0;a<b.length;a++)if(b[a].getElement().$.checked)return b[a].getValue();return null},accessKeyUp:function(){var b=this._.children,a;for(a=0;a<b.length;a++)if(b[a].getElement().$.checked){b[a].getElement().focus();return}b[0].getElement().focus()},eventProcessors:{onChange:function(b,a){if(CKEDITOR.env.ie)b.on(\"load\",function(){for(var a=this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on(\"propertychange\",function(a){a=a.data.$;\"checked\"==a.propertyName&&this.$.checked&&\nb.fire(\"change\",{value:this.getAttribute(\"value\")})})},this),this.on(\"change\",a);else return o.onChange.apply(this,arguments);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,n,{getInputElement:function(){var b=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<b.$.forms.length?new CKEDITOR.dom.element(b.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();\nreturn this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(b){var a=/^on([A-Z]\\w+)/,d,e=function(a,b,c,d){a.on(\"formLoaded\",function(){a.getInputElement().on(c,d,a)})},c;for(c in b)if(d=c.match(a))this.eventProcessors[c]?this.eventProcessors[c].call(this,this._.dialog,b[c]):e(this,this._.dialog,d[1].toLowerCase(),b[c]);return this},reset:function(){function b(){d.$.open();CKEDITOR.env.isCustomDomain()&&(d.$.domain=document.domain);var b=\"\";e.size&&\n(b=e.size-(CKEDITOR.env.ie?7:0));var h=a.frameId+\"_input\";d.$.write(['<html dir=\"'+g+'\" lang=\"'+j+'\"><head><title></title></head><body style=\"margin: 0; overflow: hidden; background: transparent;\">','<form enctype=\"multipart/form-data\" method=\"POST\" dir=\"'+g+'\" lang=\"'+j+'\" action=\"',CKEDITOR.tools.htmlEncode(e.action),'\"><label id=\"',a.labelId,'\" for=\"',h,'\" style=\"display:none\">',CKEDITOR.tools.htmlEncode(e.label),'</label><input id=\"',h,'\" aria-labelledby=\"',a.labelId,'\" type=\"file\" name=\"',CKEDITOR.tools.htmlEncode(e.id||\n\"cke_upload\"),'\" size=\"',CKEDITOR.tools.htmlEncode(0<b?b:\"\"),'\" /></form></body></html>',\"<script>window.parent.CKEDITOR.tools.callFunction(\"+f+\");\",\"window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction(\"+i+\")}<\\/script>\"].join(\"\"));d.$.close();for(b=0;b<c.length;b++)c[b].enable()}var a=this._,d=CKEDITOR.document.getById(a.frameId).getFrameDocument(),e=a.definition,c=a.buttons,f=this.formLoadedNumber,i=this.formUnloadNumber,g=a.dialog._.editor.lang.dir,j=a.dialog._.editor.langCode;\nf||(f=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire(\"formLoaded\")},this),i=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(f);CKEDITOR.tools.removeFunction(i)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},getValue:function(){return this.getInputElement().$.value||\"\"},setInitValue:function(){this._.initValue=\"\"},eventProcessors:{onChange:function(b,\na){this._.domOnChangeRegistered||(this.on(\"formLoaded\",function(){this.getInputElement().on(\"change\",function(){this.fire(\"change\",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement(\"text\",r);CKEDITOR.dialog.addUIElement(\"password\",r);CKEDITOR.dialog.addUIElement(\"textarea\",\nl);CKEDITOR.dialog.addUIElement(\"checkbox\",l);CKEDITOR.dialog.addUIElement(\"radio\",l);CKEDITOR.dialog.addUIElement(\"button\",l);CKEDITOR.dialog.addUIElement(\"select\",l);CKEDITOR.dialog.addUIElement(\"file\",l);CKEDITOR.dialog.addUIElement(\"fileButton\",l);CKEDITOR.dialog.addUIElement(\"html\",l);CKEDITOR.dialog.addUIElement(\"fieldset\",{build:function(b,a,d){for(var e=a.children,c,f=[],i=[],g=0;g<e.length&&(c=e[g]);g++){var h=[];f.push(h);i.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,c,h))}return new CKEDITOR.ui.dialog[a.type](b,\ni,f,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;\n(function(){function p(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function q(a,b){for(var c=a.$.getElementsByTagName(\"input\"),\ne=0,d=c.length;e<d;e++){var g=new CKEDITOR.dom.element(c[e]);\"text\"==g.getAttribute(\"type\").toLowerCase()&&(b?(g.setAttribute(\"value\",g.getCustomData(\"fake_value\")||\"\"),g.removeCustomData(\"fake_value\")):(g.setCustomData(\"fake_value\",g.getAttribute(\"value\")),g.setAttribute(\"value\",\"\")))}}function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute(\"aria-invalid\"):c.setAttribute(\"aria-invalid\",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire(\"validated\",{valid:a,msg:b})}\nfunction Q(){var a=this.getInputElement();a&&a.removeAttribute(\"aria-invalid\")}function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate(\"dialog\",S).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:\"cke_editor_\"+a.name.replace(/\\./g,\"\\\\.\")+\"_dialog\",closeTitle:a.lang.common.close})),b=a.getChild([0,0,0,0,0]),c=b.getChild(0),e=b.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.ie6Compat){var d=CKEDITOR.env.isCustomDomain(),\nd=\"javascript:void(function(){\"+encodeURIComponent(\"document.open();\"+(d?'document.domain=\"127.0.0.1'+document.domain+'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\")+\"}())\";CKEDITOR.dom.element.createFromHtml('<iframe frameBorder=\"0\" class=\"cke_iframe_shim\" src=\"'+d+'\" tabIndex=\"-1\"></iframe>').appendTo(b.getParent())}c.unselectable();e.unselectable();return{element:a,parts:{dialog:a.getChild(0),title:c,close:e,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function H(a,b,c){this.element=b;\nthis.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute(\"disabled\")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire(\"click\")});b.on(\"focus\",function(){this.fire(\"mouseover\")});b.on(\"blur\",function(){this.fire(\"mouseout\")})}function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on(\"resize\",b);a.on(\"hide\",function(){c.removeListener(\"resize\",\nb)})}function I(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function U(a){function b(b){var c=a.getSize(),h=CKEDITOR.document.getWindow().getViewPaneSize(),o=b.data.$.screenX,i=b.data.$.screenY,n=o-e.x,l=i-e.y;e={x:o,y:i};d.x+=n;d.y+=l;a.move(d.x+k[3]<f?-k[3]:d.x-k[1]>h.width-c.width-f?h.width-c.width+(\"rtl\"==g.lang.dir?0:k[1]):d.x,d.y+k[0]<f?-k[0]:d.y-k[2]>h.height-c.height-f?h.height-c.height+k[2]:d.y,1);b.data.preventDefault()}function c(){CKEDITOR.document.removeListener(\"mousemove\",\nb);CKEDITOR.document.removeListener(\"mouseup\",c);if(CKEDITOR.env.ie6Compat){var a=r.getChild(0).getFrameDocument();a.removeListener(\"mousemove\",b);a.removeListener(\"mouseup\",c)}}var e=null,d=null;a.getElement().getFirst();var g=a.getParentEditor(),f=g.config.dialog_magnetDistance,k=CKEDITOR.skin.margins||[0,0,0,0];\"undefined\"==typeof f&&(f=20);a.parts.title.on(\"mousedown\",function(f){e={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on(\"mousemove\",b);CKEDITOR.document.on(\"mouseup\",c);d=\na.getPosition();if(CKEDITOR.env.ie6Compat){var g=r.getChild(0).getFrameDocument();g.on(\"mousemove\",b);g.on(\"mouseup\",c)}f.data.preventDefault()},a)}function V(a){var b,c;function e(d){var e=\"rtl\"==k.lang.dir,i=o.width,D=o.height,E=i+(d.data.$.screenX-b)*(e?-1:1)*(a._.moved?1:2),n=D+(d.data.$.screenY-c)*(a._.moved?1:2),x=a._.element.getFirst(),x=e&&x.getComputedStyle(\"right\"),y=a.getPosition();y.y+n>h.height&&(n=h.height-y.y);if((e?x:y.x)+E>h.width)E=h.width-(e?x:y.x);if(f==CKEDITOR.DIALOG_RESIZE_WIDTH||\nf==CKEDITOR.DIALOG_RESIZE_BOTH)i=Math.max(g.minWidth||0,E-m);if(f==CKEDITOR.DIALOG_RESIZE_HEIGHT||f==CKEDITOR.DIALOG_RESIZE_BOTH)D=Math.max(g.minHeight||0,n-j);a.resize(i,D);a._.moved||a.layout();d.data.preventDefault()}function d(){CKEDITOR.document.removeListener(\"mouseup\",d);CKEDITOR.document.removeListener(\"mousemove\",e);i&&(i.remove(),i=null);if(CKEDITOR.env.ie6Compat){var a=r.getChild(0).getFrameDocument();a.removeListener(\"mouseup\",d);a.removeListener(\"mousemove\",e)}}var g=a.definition,f=g.resizable;\nif(f!=CKEDITOR.DIALOG_RESIZE_NONE){var k=a.getParentEditor(),m,j,h,o,i,n=CKEDITOR.tools.addFunction(function(f){o=a.getSize();var g=a.parts.contents;g.$.getElementsByTagName(\"iframe\").length&&(i=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_dialog_resize_cover\" style=\"height: 100%; position: absolute; width: 100%;\"></div>'),g.append(i));j=o.height-a.parts.contents.getSize(\"height\",!(CKEDITOR.env.gecko||CKEDITOR.env.opera||CKEDITOR.env.ie&&CKEDITOR.env.quirks));m=o.width-a.parts.contents.getSize(\"width\",\n1);b=f.screenX;c=f.screenY;h=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on(\"mousemove\",e);CKEDITOR.document.on(\"mouseup\",d);CKEDITOR.env.ie6Compat&&(g=r.getChild(0).getFrameDocument(),g.on(\"mousemove\",e),g.on(\"mouseup\",d));f.preventDefault&&f.preventDefault()});a.on(\"load\",function(){var b=\"\";f==CKEDITOR.DIALOG_RESIZE_WIDTH?b=\" cke_resizer_horizontal\":f==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=\" cke_resizer_vertical\");b=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_resizer'+\nb+\" cke_resizer_\"+k.lang.dir+'\" title=\"'+CKEDITOR.tools.htmlEncode(k.lang.common.resize)+'\" onmousedown=\"CKEDITOR.tools.callFunction('+n+', event )\">'+(\"ltr\"==k.lang.dir?\"◢\":\"◣\")+\"</div>\");a.parts.footer.append(b,1)});k.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(n)})}}function F(a){a.data.preventDefault(1)}function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_backgroundCoverColor||\"white\",d=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,\nd,g),f=w[c];if(f)f.show();else{g=['<div tabIndex=\"-1\" style=\"position: ',CKEDITOR.env.ie6Compat?\"absolute\":\"fixed\",\"; z-index: \",g,\"; top: 0px; left: 0px; \",!CKEDITOR.env.ie6Compat?\"background-color: \"+e:\"\",'\" class=\"cke_dialog_background_cover\">'];if(CKEDITOR.env.ie6Compat){var k=CKEDITOR.env.isCustomDomain(),e=\"<html><body style=\\\\'background-color:\"+e+\";\\\\'></body></html>\";g.push('<iframe hidefocus=\"true\" frameborder=\"0\" id=\"cke_dialog_background_iframe\" src=\"javascript:');g.push(\"void((function(){document.open();\"+\n(k?\"document.domain='127.0.0.1\"+document.domain+\"127.0.0.1'127.0.0.1\":\"\")+\"127.0.0.1'\"+e+\"' );document.close();})())\");g.push('\" style=\"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)\"></iframe>')}g.push(\"</div>\");f=CKEDITOR.dom.element.createFromHtml(g.join(\"\"));f.setOpacity(void 0!=d?d:0.5);f.on(\"keydown\",F);f.on(\"keypress\",F);f.on(\"keyup\",F);f.appendTo(CKEDITOR.document.getBody());w[c]=f}a.focusManager.add(f);r=f;var a=function(){var a=b.getViewPaneSize();\nf.setStyles({width:a.width+\"px\",height:a.height+\"px\"})},m=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;f.setStyles({left:a.x+\"px\",top:a.y+\"px\"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};G=a;b.on(\"resize\",a);a();(!CKEDITOR.env.mac||!CKEDITOR.env.webkit)&&f.focus();if(CKEDITOR.env.ie6Compat){var j=function(){m();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){j.prevScrollHandler=window.onscroll||function(){};\nwindow.onscroll=j},0);m()}}function K(a){r&&(a.focusManager.remove(r),a=CKEDITOR.document.getWindow(),r.hide(),a.removeListener(\"resize\",G),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),G=null)}var s=CKEDITOR.tools.cssLength,S='<div class=\"cke cke_reset_all {editorId} {editorDialogClass}\" dir=\"{langDir}\" lang=\"{langCode}\" role=\"application\"><table class=\"cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}\" aria-labelledby=\"cke_dialog_title_{id}\" style=\"position:absolute\" role=\"dialog\"><tr><td role=\"presentation\"><div class=\"cke_dialog_body\" role=\"presentation\"><div id=\"cke_dialog_title_{id}\" class=\"cke_dialog_title\" role=\"presentation\"></div><a id=\"cke_dialog_close_button_{id}\" class=\"cke_dialog_close_button\" href=\"javascript:void(0)\" title=\"{closeTitle}\" role=\"button\"><span class=\"cke_label\">X</span></a><div id=\"cke_dialog_tabs_{id}\" class=\"cke_dialog_tabs\" role=\"tablist\"></div><table class=\"cke_dialog_contents\" role=\"presentation\"><tr><td id=\"cke_dialog_contents_{id}\" class=\"cke_dialog_contents_body\" role=\"presentation\"></td></tr><tr><td id=\"cke_dialog_footer_{id}\" class=\"cke_dialog_footer\" role=\"presentation\"></td></tr></table></div></td></tr></table></div>';\nCKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=l._.focusList,a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;try{b[c].getInputElement().$.blur()}catch(d){}for(var f=c=(c+a+b.length)%b.length;a&&!b[f].isFocusable()&&!(f=(f+a+b.length)%b.length,f==c););b[f].focus();\"text\"==b[f].type&&b[f].select()}}function d(b){if(l==\nCKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),f=\"rtl\"==a.lang.dir;o=i=0;if(9==c||c==CKEDITOR.SHIFT+9)c=c==CKEDITOR.SHIFT+9,l._.tabBarMode?(c=c?p.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus()):e(c?-1:1),o=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),o=1;else if((37==c||39==c)&&l._.tabBarMode)c=c==(f?39:37)?p.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus(),o=1;else if((13==c||32==c)&&l._.tabBarMode)this.selectPage(this._.currentTabId),\nthis._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),o=1;else if(13==c){c=b.data.getTarget();if(!c.is(\"a\",\"button\",\"select\",\"textarea\")&&(!c.is(\"input\")||\"button\"!=c.$.type))(c=this.getButton(\"ok\"))&&CKEDITOR.tools.setTimeout(c.click,0,c),o=1;i=1}else if(27==c)(c=this.getButton(\"cancel\"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide(),i=1;else return;g(b)}}function g(a){o?a.data.preventDefault(1):i&&a.data.stopPropagation()}var f=CKEDITOR.dialog._.dialogDefinitions[b],\nk=CKEDITOR.tools.clone(W),m=a.config.dialog_buttonsOrder||\"OS\",j=a.lang.dir,h={},o,i;(\"OS\"==m&&CKEDITOR.env.mac||\"rtl\"==m&&\"ltr\"==j||\"ltr\"==m&&\"rtl\"==j)&&k.buttons.reverse();f=CKEDITOR.tools.extend(f(a),k);f=CKEDITOR.tools.clone(f);f=new L(this,f);k=R(a);this._={editor:a,element:k.element,name:b,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],\ncurrentFocusIndex:0,hasFocus:!1};this.parts=k.parts;CKEDITOR.tools.setTimeout(function(){a.fire(\"ariaWidget\",this.parts.contents)},0,this);k={position:CKEDITOR.env.ie6Compat?\"absolute\":\"fixed\",top:0,visibility:\"hidden\"};k[\"rtl\"==j?\"right\":\"left\"]=0;this.parts.dialog.setStyles(k);CKEDITOR.event.call(this);this.definition=f=CKEDITOR.fire(\"dialogDefinition\",{name:b,definition:f},a).definition;if(!(\"removeDialogTabs\"in a._)&&a.config.removeDialogTabs){k=a.config.removeDialogTabs.split(\";\");for(j=0;j<\nk.length;j++)if(m=k[j].split(\":\"),2==m.length){var n=m[0];h[n]||(h[n]=[]);h[n].push(m[1])}a._.removeDialogTabs=h}if(a._.removeDialogTabs&&(h=a._.removeDialogTabs[b]))for(j=0;j<h.length;j++)f.removeContents(h[j]);if(f.onLoad)this.on(\"load\",f.onLoad);if(f.onShow)this.on(\"show\",f.onShow);if(f.onHide)this.on(\"hide\",f.onHide);if(f.onOk)this.on(\"ok\",function(b){a.fire(\"saveSnapshot\");setTimeout(function(){a.fire(\"saveSnapshot\")},0);!1===f.onOk.call(this,b)&&(b.data.hide=!1)});if(f.onCancel)this.on(\"cancel\",\nfunction(a){!1===f.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,C=function(a){var b=l._.contents,c=!1,f;for(f in b)for(var d in b[f])if(c=a.call(this,b[f][d]))return};this.on(\"ok\",function(a){C(function(b){if(b.validate){var c=b.validate(this),f=\"string\"==typeof c||!1===c;f&&(a.data.hide=!1,a.stop());P.call(b,!f,\"string\"==typeof c?c:void 0);return f}})},this,null,0);this.on(\"cancel\",function(b){C(function(c){if(c.isChanged())return confirm(a.lang.common.confirmCancel)||(b.data.hide=!1),!0})},\nthis,null,0);this.parts.close.on(\"click\",function(a){!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var v=this._.element;a.focusManager.add(v,1);this.on(\"show\",function(){v.on(\"keydown\",d,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko)v.on(\"keypress\",g,this)});this.on(\"hide\",function(){v.removeListener(\"keydown\",d);(CKEDITOR.env.opera||CKEDITOR.env.gecko)&&v.removeListener(\"keypress\",g);C(function(a){Q.apply(a)})});this.on(\"iframeAdded\",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on(\"keydown\",\nd,this,null,0)});this.on(\"show\",function(){c();if(a.config.dialog_startupFocusTab&&1<l._.pageCount)l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus();else if(!this._.hasFocus)if(this._.currentFocusIndex=-1,f.onFocus){var b=f.onFocus.call(this);b&&b.focus()}else e(1)},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on(\"load\",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);U(this);V(this);(new CKEDITOR.dom.text(f.title,CKEDITOR.document)).appendTo(this.parts.title);\nfor(j=0;j<f.contents.length;j++)(h=f.contents[j])&&this.addPage(h);this.parts.tabs.on(\"click\",function(a){var b=a.data.getTarget();b.hasClass(\"cke_dialog_tab\")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf(\"_\"))),this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);j=[];h=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:\"hbox\",className:\"cke_dialog_footer_buttons\",widths:[],children:f.buttons},j).getChild();this.parts.footer.setHtml(j.join(\"\"));\nfor(j=0;j<h.length;j++)this._.buttons[h[j].id]=h[j]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){if(!this._.contentSize||!(this._.contentSize.width==a&&this._.contentSize.height==b))CKEDITOR.dialog.fire(\"resize\",{dialog:this,width:a,height:b},this._.editor),this.fire(\"resize\",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+\"px\",height:b+\"px\"}),\"rtl\"==this._.editor.lang.dir&&this._.position&&(this._.position.x=\nCKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle(\"right\"),10)),this._.contentSize={width:a,height:b}}}(),getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d=\"rtl\"==this._.editor.lang.dir,g=\"fixed\"==e.getComputedStyle(\"position\");CKEDITOR.env.ie&&e.setStyle(\"zoom\",\"100%\");if(!g||!this._.position||!(this._.position.x==\na&&this._.position.y==b))this._.position={x:a,y:b},g||(g=CKEDITOR.document.getWindow().getScrollPosition(),a+=g.x,b+=g.y),d&&(g=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-g.width-a),b={top:(0<b?b:0)+\"px\"},b[d?\"right\":\"left\"]=(0<a?a:0)+\"px\",e.setStyles(b),c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;!a.getParent()||!a.getParent().equals(CKEDITOR.document.getBody())?a.appendTo(CKEDITOR.document.getBody()):\na.setStyle(\"display\",\"block\");if(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version){var c=this.parts.dialog;c.setStyle(\"position\",\"absolute\");setTimeout(function(){c.setStyle(\"position\",\"fixed\")},0)}this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);\nthis._.element.getFirst().setStyle(\"z-index\",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,J(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this);a.on(\"keydown\",M);a.on(CKEDITOR.env.opera?\"keypress\":\"keyup\",N);this._.hasFocus=!1;CKEDITOR.tools.setTimeout(function(){this.layout();\nT(this);this.parts.dialog.setStyle(\"visibility\",\"\");this.fireOnce(\"load\",{});CKEDITOR.ui.fire(\"ready\",this);this.fire(\"show\",{});this._.editor.fire(\"dialogShow\",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),e=(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||\nb.width+(0<e?e:0)>c.width?a.setStyle(\"position\",\"absolute\"):a.setStyle(\"position\",\"fixed\"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},\ncommitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire(\"hide\",{});this._.editor.fire(\"dialogHide\",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle(\"display\",\"none\");this.parts.dialog.setStyle(\"visibility\",\"hidden\");for(X(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();\nif(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle(\"z-index\",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else K(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener(\"keydown\",M);a.removeListener(CKEDITOR.env.opera?\"keypress\":\"keyup\",N);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock()},0)}delete this._.parentDialog;\nthis.foreach(function(a){a.resetInitValue&&a.resetInitValue()})}},addPage:function(a){var b=[],c=a.label?' title=\"'+CKEDITOR.tools.htmlEncode(a.label)+'\"':\"\",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:\"vbox\",className:\"cke_dialog_page_contents\",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||\"width: 100%;\"},b),b=CKEDITOR.dom.element.createFromHtml(b.join(\"\"));b.setAttribute(\"role\",\"tabpanel\");var d=CKEDITOR.env,g=\"cke_\"+a.id+\"_\"+CKEDITOR.tools.getNextNumber(),\nc=CKEDITOR.dom.element.createFromHtml(['<a class=\"cke_dialog_tab\"',0<this._.pageCount?\" cke_last\":\"cke_first\",c,a.hidden?' style=\"display:none\"':\"\",' id=\"',g,'\"',d.gecko&&10900<=d.version&&!d.hc?\"\":' href=\"javascript:void(0)\"',' tabIndex=\"-1\" hidefocus=\"true\" role=\"tab\">',a.label,\"</a>\"].join(\"\"));b.setAttribute(\"aria-labelledby\",g);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();g=this._.contents[a.id]={};for(d=e.getChild();e=\nd.shift();)g[e.id]=e,\"function\"==typeof e.getChild&&d.push.apply(d,e.getChild());b.setAttribute(\"name\",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(O(this,this,\"CTRL+\"+a.accessKey,Y,Z),this._.accessKeyMap[\"CTRL+\"+a.accessKey]=a.id)},selectPage:function(a){if(this._.currentTabId!=a&&!0!==this.fire(\"selectPage\",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass(\"cke_dialog_tab_selected\"),\ne.hide());e.setAttribute(\"aria-hidden\",b!=a)}var d=this._.tabs[a];d[0].addClass(\"cke_dialog_tab_selected\");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(q(d[1]),d[1].show(),setTimeout(function(){q(d[1],1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?\"add\":\"remove\")+\"Class\"](\"cke_single_page\")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&(1!=this._.pageCount&&\nb.isVisible())&&(a==this._.currentTabId&&this.selectPage(p.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,\nb).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if(\"undefined\"==typeof b)b=this._.focusList.length,\nthis._.focusList.push(new H(this,a,b));else{this._.focusList.splice(b,0,new H(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){if(!this._.dialogDefinitions[a]||\"function\"==typeof b)this._.dialogDefinitions[a]=b},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"ok\",\ntype:\"button\",label:a.lang.common.ok,\"class\":\"cke_dialog_ui_button_ok\",onClick:function(a){a=a.data.dialog;!1!==a.fire(\"ok\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"cancel\",type:\"button\",label:a.lang.common.cancel,\"class\":\"cke_dialog_ui_button_cancel\",onClick:function(a){a=a.data.dialog;!1!==\na.fire(\"cancel\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var W={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,\nbuttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},z=function(a,b,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=z(d[c],b,c)))return d;return null},A=function(a,b,c,e,d){if(c){for(var g=0,f;f=a[g];g++){if(f.id==c)return a.splice(g,0,b),b;if(e&&f[e]&&(f=A(f[e],b,c,e,!0)))return f}if(d)return null}a.push(b);return b},B=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=B(d[c],b,c)))return d}return null},L=function(a,b){this.dialog=a;for(var c=\nb.contents,e=0,d;d=c[e];e++)c[e]=d&&new I(a,d);CKEDITOR.tools.extend(this,b)};L.prototype={getContents:function(a){return z(this.contents,a)},getButton:function(a){return z(this.buttons,a)},addContents:function(a,b){return A(this.contents,a,b)},addButton:function(a,b){return A(this.buttons,a,b)},removeContents:function(a){B(this.contents,a)},removeButton:function(a){B(this.buttons,a)}};I.prototype={get:function(a){return z(this.elements,a,\"children\")},add:function(a,b){return A(this.elements,a,b,\n\"children\")},remove:function(a){B(this.elements,a,\"children\")}};var G,w={},r,t={},M=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=t[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()},N=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);\nif((b=t[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},O=function(a,b,c,e,d){(t[c]||(t[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},X=function(a){for(var b in t){for(var c=t[b],e=c.length-1;0<=e;e--)(c[e].dialog==a||c[e].uiElement==a)&&c.splice(e,1);0===c.length&&delete t[b]}},Z=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},\nY=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,g,f){if(!(4>arguments.length)){var k=(e.call?e(b):e)||\"div\",m=[\"<\",k,\" \"],j=(d&&d.call?d(b):d)||{},h=(g&&g.call?g(b):g)||{},o=(f&&f.call?f.call(this,a,b):f)||\"\",i=this.domId=h.id||CKEDITOR.tools.getNextId()+\"_uiElement\";this.id=b.id;h.id=i;var n={};b.type&&(n[\"cke_dialog_ui_\"+b.type]=1);b.className&&(n[b.className]=1);b.disabled&&(n.cke_disabled=1);for(var l=h[\"class\"]&&h[\"class\"].split?h[\"class\"].split(\" \"):[],i=0;i<l.length;i++)l[i]&&\n(n[l[i]]=1);l=[];for(i in n)l.push(i);h[\"class\"]=l.join(\" \");b.title&&(h.title=b.title);n=(b.style||\"\").split(\";\");b.align&&(l=b.align,j[\"margin-left\"]=\"left\"==l?0:\"auto\",j[\"margin-right\"]=\"right\"==l?0:\"auto\");for(i in j)n.push(i+\":\"+j[i]);b.hidden&&n.push(\"display:none\");for(i=n.length-1;0<=i;i--)\"\"===n[i]&&n.splice(i,1);0<n.length&&(h.style=(h.style?h.style+\"; \":\"\")+n.join(\"; \"));for(i in h)m.push(i+'=\"'+CKEDITOR.tools.htmlEncode(h[i])+'\" ');m.push(\">\",o,\"</\",k,\">\");c.push(m.join(\"\"));(this._||\n(this._={})).dialog=a;\"boolean\"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});\"function\"==typeof b.isChanged&&(this.isChanged=b.isChanged);\"function\"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));\"function\"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);\nthis.registerEvents(b);this.accessKeyUp&&(this.accessKeyDown&&b.accessKey)&&O(this,a,\"CTRL+\"+b.accessKey);var p=this;a.on(\"load\",function(){var b=p.getInputElement();if(b){var c=p.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?\"cke_dialog_ui_focused\":\"\";b.on(\"focus\",function(){a._.tabBarMode=false;a._.hasFocus=true;p.fire(\"focus\");c&&this.addClass(c)});b.on(\"blur\",function(){p.fire(\"blur\");c&&this.removeClass(c)})}});this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=\na._.focusList.push(this)-1,this.on(\"focus\",function(){a._.currentFocusIndex=p.focusIndex}));CKEDITOR.tools.extend(this,b)}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.widths||null,k=d&&d.height||null,m,j={role:\"presentation\"};d&&d.align&&(j.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"hbox\"},e,\"table\",{},j,function(){var a=['<tbody><tr class=\"cke_dialog_ui_hbox\">'];for(m=0;m<c.length;m++){var b=\"cke_dialog_ui_hbox_child\",\ne=[];0===m&&(b=\"cke_dialog_ui_hbox_first\");m==c.length-1&&(b=\"cke_dialog_ui_hbox_last\");a.push('<td class=\"',b,'\" role=\"presentation\" ');f?f[m]&&e.push(\"width:\"+s(f[m])):e.push(\"width:\"+Math.floor(100/c.length)+\"%\");k&&e.push(\"height:\"+s(k));d&&void 0!=d.padding&&e.push(\"padding:\"+s(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[m].align)&&e.push(\"text-align:\"+g[m].align);0<e.length&&a.push('style=\"'+e.join(\"; \")+'\" ');a.push(\">\",c[m],\"</td>\")}a.push(\"</tr></tbody>\");return a.join(\"\")})}},vbox:function(a,\nb,c,e,d){if(!(3>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.width||null,k=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"vbox\"},e,\"div\",null,{role:\"presentation\"},function(){var b=['<table role=\"presentation\" cellspacing=\"0\" border=\"0\" '];b.push('style=\"');d&&d.expand&&b.push(\"height:100%;\");b.push(\"width:\"+s(f||\"100%\"),\";\");b.push('\"');b.push('align=\"',CKEDITOR.tools.htmlEncode(d&&d.align||(\"ltr\"==a.getParentEditor().lang.dir?\"left\":\"right\")),'\" ');\nb.push(\"><tbody>\");for(var e=0;e<c.length;e++){var h=[];b.push('<tr><td role=\"presentation\" ');f&&h.push(\"width:\"+s(f||\"100%\"));k?h.push(\"height:\"+s(k[e])):d&&d.expand&&h.push(\"height:\"+Math.floor(100/c.length)+\"%\");d&&void 0!=d.padding&&h.push(\"padding:\"+s(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[e].align)&&h.push(\"text-align:\"+g[e].align);0<h.length&&b.push('style=\"',h.join(\"; \"),'\" ');b.push(' class=\"cke_dialog_ui_vbox_child\">',c[e],\"</td></tr>\")}b.push(\"</tbody></table>\");return b.join(\"\")})}}}})();\nCKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire(\"change\",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search(\"cke_dialog_page_contents\"););\nif(!a)return this;a=a.getAttribute(\"name\");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\\w+)/,c,e=function(a,b,c,d){b.on(\"load\",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,this._.dialog,a[d]):e(this,this._.dialog,c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,\nb){a.on(\"load\",b,this)},onShow:function(a,b){a.on(\"show\",b,this)},onHide:function(a,b){a.on(\"hide\",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute(\"disabled\",\"true\");a.addClass(\"cke_disabled\")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute(\"disabled\");a.removeClass(\"cke_disabled\")},isEnabled:function(){return!this.getElement().hasClass(\"cke_disabled\")},isVisible:function(){return this.getInputElement().isVisible()},\nisFocusable:function(){return!this.isEnabled()||!this.isVisible()?!1:!0}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,\nc,e){for(var d=c.children,g,f=[],k=[],m=0;m<d.length&&(g=d[m]);m++){var j=[];f.push(j);k.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,j))}return new CKEDITOR.ui.dialog[c.type](a,k,f,e,c)}};CKEDITOR.dialog.addUIElement(\"hbox\",a);CKEDITOR.dialog.addUIElement(\"vbox\",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){CKEDITOR.env.opera?CKEDITOR.tools.setTimeout(function(){a.openDialog(this.dialogName)},\n0,this):a.openDialog(this.dialogName)},canUndo:!1,editorFocus:CKEDITOR.env.ie||CKEDITOR.env.webkit};(function(){var a=/^([a]|[^a])+$/,b=/^\\d*$/,c=/^\\d*(?:\\.\\d+)?$/,e=/^(((\\d*(\\.\\d+))|(\\d*))(px|\\%)?)?$/,d=/^(((\\d*(\\.\\d+))|(\\d*))(px|em|ex|in|cm|mm|pt|pc|\\%)?)?$/i,g=/^(\\s*[\\w-]+\\s*:\\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():a[0],c=void 0,d=CKEDITOR.VALIDATE_AND,\ne=[],g;for(g=0;g<a.length;g++)if(\"function\"==typeof a[g])e.push(a[g]);else break;g<a.length&&\"string\"==typeof a[g]&&(c=a[g],g++);g<a.length&&\"number\"==typeof a[g]&&(d=a[g]);var i=d==CKEDITOR.VALIDATE_AND?!0:!1;for(g=0;g<e.length;g++)i=d==CKEDITOR.VALIDATE_AND?i&&e[g](b):i||e[g](b);return!i?c:!0}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return!a.test(c)?b:!0}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,a)},number:function(a){return this.regex(c,\na)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on(\"instanceDestroyed\",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=\nCKEDITOR.dialog._.currentTop;)b.hide();for(var c in w)w[c].remove();w={}}var a=a.editor._.storedDialogs,d;for(d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&J(this);if(\"function\"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,c),c.show();else{if(\"failed\"==e)throw K(this),Error('[CKEDITOR.dialog.openDialog] Dialog \"'+\na+'\" failed when loading definition.');\"string\"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){\"function\"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]=\"failed\");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart(\"dialog\");return c}})})();\nCKEDITOR.plugins.add(\"dialog\",{requires:\"dialogui\",init:function(p){p.on(\"contentDom\",function(){var u=p.editable();u.attachListener(u,\"dblclick\",function(q){if(p.readOnly)return!1;q={element:q.data.getTarget()};p.fire(\"doubleclick\",q);q.dialog&&p.openDialog(q.dialog);return 1})})}});CKEDITOR.plugins.add(\"about\",{requires:\"dialog\",init:function(a){var b=a.addCommand(\"about\",new CKEDITOR.dialogCommand(\"about\"));b.modes={wysiwyg:1,source:1};b.canUndo=!1;b.readOnly=1;a.ui.addButton&&a.ui.addButton(\"About\",{label:a.lang.about.title,command:\"about\",toolbar:\"about\"});CKEDITOR.dialog.add(\"about\",this.path+\"dialogs/about.js\")}});(function(){CKEDITOR.plugins.add(\"a11yhelp\",{requires:\"dialog\",availableLangs:{en:1,ar:1,bg:1,ca:1,et:1,cs:1,cy:1,da:1,de:1,el:1,eo:1,es:1,fa:1,fi:1,fr:1,gu:1,he:1,hi:1,hr:1,hu:1,it:1,ja:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,\"pt-br\":1,ro:1,ru:1,sk:1,sl:1,sv:1,tr:1,ug:1,uk:1,vi:1,\"zh-cn\":1},init:function(b){var c=this;b.addCommand(\"a11yHelp\",{exec:function(){var a=b.langCode,a=c.availableLangs[a]?a:c.availableLangs[a.replace(/-.*/,\"\")]?a.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\n\"dialogs/lang/\"+a+\".js\"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog(\"a11yHelp\")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,\"a11yHelp\");CKEDITOR.dialog.add(\"a11yHelp\",this.path+\"dialogs/a11yhelp.js\")}})})();CKEDITOR.plugins.add(\"basicstyles\",{init:function(c){var f=0,a=function(a,d,b,e){e&&(e=new CKEDITOR.style(e),c.attachStyleStateChange(e,function(a){!c.readOnly&&c.getCommand(b).setState(a)}),c.addCommand(b,new CKEDITOR.styleCommand(e)),c.ui.addButton&&c.ui.addButton(a,{label:d,command:b,toolbar:\"basicstyles,\"+(f+=10)}))},d=c.config,b=c.lang.basicstyles;a(\"Bold\",b.bold,\"bold\",d.coreStyles_bold);a(\"Italic\",b.italic,\"italic\",d.coreStyles_italic);a(\"Underline\",b.underline,\"underline\",d.coreStyles_underline);\na(\"Strike\",b.strike,\"strike\",d.coreStyles_strike);a(\"Subscript\",b.subscript,\"subscript\",d.coreStyles_subscript);a(\"Superscript\",b.superscript,\"superscript\",d.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,\"bold\"],[CKEDITOR.CTRL+73,\"italic\"],[CKEDITOR.CTRL+85,\"underline\"]])}});CKEDITOR.config.coreStyles_bold={element:\"strong\",overrides:\"b\"};CKEDITOR.config.coreStyles_italic={element:\"em\",overrides:\"i\"};CKEDITOR.config.coreStyles_underline={element:\"u\"};\nCKEDITOR.config.coreStyles_strike={element:\"strike\"};CKEDITOR.config.coreStyles_subscript={element:\"sub\"};CKEDITOR.config.coreStyles_superscript={element:\"sup\"};(function(){var k={exec:function(g){var a=g.getCommand(\"blockquote\").state,i=g.getSelection(),c=i&&i.getRanges(!0)[0];if(c){var h=i.createBookmarks();if(CKEDITOR.env.ie){var e=h[0].startNode,b=h[0].endNode,d;if(e&&\"blockquote\"==e.getParent().getName())for(d=e;d=d.getNext();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){e.move(d,!0);break}if(b&&\"blockquote\"==b.getParent().getName())for(d=b;d=d.getPrevious();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){b.move(d);break}}var f=c.createIterator();\nf.enlargeBr=g.config.enterMode!=CKEDITOR.ENTER_BR;if(a==CKEDITOR.TRISTATE_OFF){for(e=[];a=f.getNextParagraph();)e.push(a);1>e.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text(\"﻿\",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b<e.length;b++)a=e[b],d=d.getCommonAncestor(a.getParent());for(a={table:1,tbody:1,\ntr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.shift();!a.getParent().equals(d);)a=a.getParent();a.equals(b)||c.push(a);b=a}for(;0<c.length;)if(a=c.shift(),\"blockquote\"==a.getName()){for(b=new CKEDITOR.dom.documentFragment(g.document);a.getFirst();)b.append(a.getFirst().remove()),e.push(b.getLast());b.replace(a)}else e.push(a);c=g.document.createElement(\"blockquote\");for(c.insertBefore(e[0]);0<e.length;)a=e.shift(),c.append(a)}else if(a==CKEDITOR.TRISTATE_ON){b=[];\nfor(d={};a=f.getNextParagraph();){for(e=c=null;a.getParent();){if(\"blockquote\"==a.getParent().getName()){c=a.getParent();e=a;break}a=a.getParent()}c&&(e&&!e.getCustomData(\"blockquote_moveout\"))&&(b.push(e),CKEDITOR.dom.element.setMarker(d,e,\"blockquote_moveout\",!0))}CKEDITOR.dom.element.clearAllMarkers(d);a=[];e=[];for(d={};0<b.length;)f=b.shift(),c=f.getParent(),f.getPrevious()?f.getNext()?(f.breakParent(f.getParent()),e.push(f.getNext())):f.remove().insertAfter(c):f.remove().insertBefore(c),c.getCustomData(\"blockquote_processed\")||\n(e.push(c),CKEDITOR.dom.element.setMarker(d,c,\"blockquote_processed\",!0)),a.push(f);CKEDITOR.dom.element.clearAllMarkers(d);for(b=e.length-1;0<=b;b--){c=e[b];a:{d=c;for(var f=0,k=d.getChildCount(),j=void 0;f<k&&(j=d.getChild(f));f++)if(j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary()){d=!1;break a}d=!0}d&&c.remove()}if(g.config.enterMode==CKEDITOR.ENTER_BR)for(c=!0;a.length;)if(f=a.shift(),\"div\"==f.getName()){b=new CKEDITOR.dom.documentFragment(g.document);c&&(f.getPrevious()&&!(f.getPrevious().type==\nCKEDITOR.NODE_ELEMENT&&f.getPrevious().isBlockBoundary()))&&b.append(g.document.createElement(\"br\"));for(c=f.getNext()&&!(f.getNext().type==CKEDITOR.NODE_ELEMENT&&f.getNext().isBlockBoundary());f.getFirst();)f.getFirst().remove().appendTo(b);c&&b.append(g.document.createElement(\"br\"));b.replace(f);c=!1}}i.selectBookmarks(h);g.focus()}},refresh:function(g,a){this.setState(g.elementPath(a.block||a.blockLimit).contains(\"blockquote\",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:\"blockquote\"};\nCKEDITOR.plugins.add(\"blockquote\",{init:function(g){g.blockless||(g.addCommand(\"blockquote\",k),g.ui.addButton&&g.ui.addButton(\"Blockquote\",{label:g.lang.blockquote.toolbar,command:\"blockquote\",toolbar:\"blocks,10\"}))}})})();(function(){function v(b){function a(){var e=b.editable();e.on(q,function(b){(!CKEDITOR.env.ie||!m)&&u(b)});CKEDITOR.env.ie&&e.on(\"paste\",function(e){r||(f(),e.data.preventDefault(),u(e),l(\"paste\")||b.openDialog(\"paste\"))});CKEDITOR.env.ie&&(e.on(\"contextmenu\",h,null,null,0),e.on(\"beforepaste\",function(b){b.data&&!b.data.$.ctrlKey&&h()},null,null,0));e.on(\"beforecut\",function(){!m&&j(b)});e.on(\"mouseup\",function(){setTimeout(function(){s()},0)});e.on(\"keyup\",s)}function d(e){return{type:e,canUndo:\"cut\"==\ne,startDisabled:!0,exec:function(){\"cut\"==this.type&&j();var e;var a=this.type;if(CKEDITOR.env.ie)e=l(a);else try{e=b.document.$.execCommand(a,!1,null)}catch(c){e=!1}e||alert(b.lang.clipboard[this.type+\"Error\"]);return e}}}function c(){return{canUndo:!1,async:!0,exec:function(b,a){var c=function(a,c){a&&g(a.type,a.dataValue,!!c);b.fire(\"afterCommandExec\",{name:\"paste\",command:d,returnValue:!!a})},d=this;\"string\"==typeof a?c({type:\"auto\",dataValue:a},1):b.getClipboardData(c)}}}function f(){r=1;setTimeout(function(){r=\n0},100)}function h(){m=1;setTimeout(function(){m=0},10)}function l(e){var a=b.document,c=a.getBody(),d=!1,j=function(){d=!0};c.on(e,j);(7<CKEDITOR.env.version?a.$:a.$.selection.createRange()).execCommand(e);c.removeListener(e,j);return d}function g(e,a,c){e={type:e};if(c&&!b.fire(\"beforePaste\",e)||!a)return!1;e.dataValue=a;return b.fire(\"paste\",e)}function j(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var e=b.getSelection(),a,c,d;if(e.getType()==CKEDITOR.SELECTION_ELEMENT&&(a=e.getSelectedElement()))c=\ne.getRanges()[0],d=b.document.createText(\"\"),d.insertBefore(a),c.setStartBefore(d),c.setEndAfter(a),e.selectRanges([c]),setTimeout(function(){a.getParent()&&(d.remove(),e.selectElement(a))},0)}}function k(a,c){var d=b.document,j=b.editable(),k=function(b){b.cancel()},f=CKEDITOR.env.gecko&&10902>=CKEDITOR.env.version;if(!d.getById(\"cke_pastebin\")){var h=b.getSelection(),o=h.createBookmarks(),i=new CKEDITOR.dom.element(j.is(\"body\")&&!CKEDITOR.env.ie&&!CKEDITOR.env.opera?\"body\":\"div\",d);i.setAttribute(\"id\",\n\"cke_pastebin\");CKEDITOR.env.opera&&i.appendBogus();var g=0,d=d.getWindow();f?(i.insertAfter(o[0].startNode),i.setStyle(\"display\",\"inline\")):(CKEDITOR.env.webkit?(j.append(i),i.addClass(\"cke_editable\"),g=(j.is(\"body\")?j:CKEDITOR.dom.element.get(i.$.offsetParent)).getDocumentPosition().y):j.getAscendant(CKEDITOR.env.ie||CKEDITOR.env.opera?\"body\":\"html\",1).append(i),i.setStyles({position:\"absolute\",top:d.getScrollPosition().y-g+10+\"px\",width:\"1px\",height:Math.max(1,d.getViewPaneSize().height-20)+\"px\",\noverflow:\"hidden\",margin:0,padding:0}));(f=i.getParent().isReadOnly())?(i.setOpacity(0),i.setAttribute(\"contenteditable\",!0)):i.setStyle(\"ltr\"==b.config.contentsLangDirection?\"left\":\"right\",\"-1000px\");b.on(\"selectionChange\",k,null,null,0);f&&i.focus();f=new CKEDITOR.dom.range(i);f.selectNodeContents(i);var l=f.select();if(CKEDITOR.env.ie)var m=j.once(\"blur\",function(){b.lockSelection(l)});var n=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){if(CKEDITOR.env.webkit||CKEDITOR.env.opera)CKEDITOR.document[CKEDITOR.env.webkit?\n\"getBody\":\"getDocumentElement\"]().$.scrollTop=n;m&&m.removeListener();CKEDITOR.env.ie&&j.focus();h.selectBookmarks(o);i.remove();var a;if(CKEDITOR.env.webkit&&(a=i.getFirst())&&a.is&&a.hasClass(\"Apple-style-span\"))i=a;b.removeListener(\"selectionChange\",k);c(i.getHtml())},0)}}function o(){if(CKEDITOR.env.ie){b.focus();f();var a=b.focusManager;a.lock();if(b.editable().fire(q)&&!l(\"paste\"))return a.unlock(),!1;a.unlock()}else try{if(b.editable().fire(q)&&!b.document.$.execCommand(\"Paste\",!1,null))throw 0;\n}catch(c){return!1}return!0}function p(a){if(\"wysiwyg\"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();f();!CKEDITOR.env.ie&&a.fire(\"beforepaste\");(CKEDITOR.env.opera||CKEDITOR.env.gecko&&10900>CKEDITOR.env.version)&&a.fire(\"paste\");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire(\"saveSnapshot\"),setTimeout(function(){b.fire(\"saveSnapshot\")},0)}}function u(a){var c={type:\"auto\"},d=b.fire(\"beforePaste\",c);k(a,function(b){b=b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\\/span>/ig,\n\"\");d&&g(c.type,b,0,1)})}function s(){if(\"wysiwyg\"==b.mode){var a=n(\"Paste\");b.getCommand(\"cut\").setState(n(\"Cut\"));b.getCommand(\"copy\").setState(n(\"Copy\"));b.getCommand(\"paste\").setState(a);b.fire(\"pasteState\",a)}}function n(a){var c;if(t&&a in{Paste:1,Cut:1})return CKEDITOR.TRISTATE_DISABLED;if(\"Paste\"==a){CKEDITOR.env.ie&&(m=1);try{c=b.document.$.queryCommandEnabled(a)||CKEDITOR.env.webkit}catch(d){}m=0}else a=b.getSelection(),c=a.getRanges(),c=a.type!=CKEDITOR.SELECTION_NONE&&!(1==c.length&&c[0].collapsed);\nreturn c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}var m=0,r=0,t=0,q=CKEDITOR.env.ie?\"beforepaste\":\"paste\";(function(){b.on(\"key\",p);b.on(\"contentDom\",a);b.on(\"selectionChange\",function(b){t=b.data.selection.getRanges()[0].checkReadOnly();s()});b.contextMenu&&b.contextMenu.addListener(function(b,a){t=a.getRanges()[0].checkReadOnly();return{cut:n(\"Cut\"),copy:n(\"Copy\"),paste:n(\"Paste\")}})})();(function(){function a(c,d,j,e,f){var k=b.lang.clipboard[d];b.addCommand(d,j);b.ui.addButton&&b.ui.addButton(c,\n{label:k,command:d,toolbar:\"clipboard,\"+e});b.addMenuItems&&b.addMenuItem(d,{label:k,command:d,group:\"clipboard\",order:f})}a(\"Cut\",\"cut\",d(\"cut\"),10,1);a(\"Copy\",\"copy\",d(\"copy\"),20,4);a(\"Paste\",\"paste\",c(),30,8)})();b.getClipboardData=function(a,c){function d(a){a.removeListener();a.cancel();c(a.data)}function j(a){a.removeListener();a.cancel();g=!0;c({type:h,dataValue:a.data})}function f(){this.customTitle=a&&a.title}var k=!1,h=\"auto\",g=!1;c||(c=a,a=null);b.on(\"paste\",d,null,null,0);b.on(\"beforePaste\",\nfunction(a){a.removeListener();k=true;h=a.data.type},null,null,1E3);!1===o()&&(b.removeListener(\"paste\",d),k&&b.fire(\"pasteDialog\",f)?(b.on(\"pasteDialogCommit\",j),b.on(\"dialogHide\",function(a){a.removeListener();a.data.removeListener(\"pasteDialogCommit\",j);setTimeout(function(){g||c(null)},10)})):c(null))}}function w(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\\/)?><\\/div>|<div>[^<]*<\\/div>)*$/gi))return\"html\"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi)&&\n!b.match(/^(<p>([^<]|<br( ?\\/)?>)*<\\/p>|(\\r\\n))*$/gi))return\"html\"}else if(CKEDITOR.env.gecko||CKEDITOR.env.opera){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi))return\"html\"}else return\"html\";return\"htmlifiedtext\"}function x(b,a){function d(a){return CKEDITOR.tools.repeat(\"</p><p>\",~~(a/2))+(1==a%2?\"<br>\":\"\")}a=a.replace(/\\s+/g,\" \").replace(/> +</g,\"><\").replace(/<br ?\\/>/gi,\"<br>\");a=a.replace(/<\\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf(\"<div>\")&&\n(a=a.replace(/^(<div>(<br>|)<\\/div>)(?!$|(<div>(<br>|)<\\/div>))/g,\"<br>\").replace(/^(<div>(<br>|)<\\/div>){2}(?!$)/g,\"<div></div>\"),a.match(/<div>(<br>|)<\\/div>/)&&(a=\"<p>\"+a.replace(/(<div>(<br>|)<\\/div>)+/g,function(a){return d(a.split(\"</div><div>\").length+1)})+\"</p>\"),a=a.replace(/<\\/div><div>/g,\"<br>\"),a=a.replace(/<\\/?div>/g,\"\"));if((CKEDITOR.env.gecko||CKEDITOR.env.opera)&&b.enterMode!=CKEDITOR.ENTER_BR)CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,\"<br>\")),-1<a.indexOf(\"<br><br>\")&&(a=\"<p>\"+\na.replace(/(<br>){2,}/g,function(a){return d(a.length/4)})+\"</p>\");return p(b,a)}function y(){var b=new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,fieldset:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ol:1,p:1,table:1,ul:1},d=CKEDITOR.tools.extend({br:0},CKEDITOR.dtd.$inline),c={p:1,br:1,\"cke:br\":1},f=CKEDITOR.dtd,h=CKEDITOR.tools.extend({area:1,basefont:1,embed:1,iframe:1,map:1,object:1,param:1},CKEDITOR.dtd.$nonBodyContent,CKEDITOR.dtd.$cdata),l=function(a){delete a.name;a.add(new CKEDITOR.htmlParser.text(\" \"))},\ng=function(a){for(var b=a,c;(b=b.next)&&b.name&&b.name.match(/^h\\d$/);){c=new CKEDITOR.htmlParser.element(\"cke:br\");c.isEmpty=!0;for(a.add(c);c=b.children.shift();)a.add(c)}};b.addRules({elements:{h1:g,h2:g,h3:g,h4:g,h5:g,h6:g,img:function(a){var a=CKEDITOR.tools.trim(a.attributes.alt||\"\"),b=\" \";a&&!a.match(/(^http|\\.(jpe?g|gif|png))/i)&&(b=\" [\"+a+\"] \");return new CKEDITOR.htmlParser.text(b)},td:l,th:l,$:function(b){var k=b.name,g;if(h[k])return!1;delete b.attributes;if(\"br\"==k)return b;if(a[k])b.name=\n\"p\";else if(d[k])delete b.name;else if(f[k]){g=new CKEDITOR.htmlParser.element(\"cke:br\");g.isEmpty=!0;if(CKEDITOR.dtd.$empty[k])return g;b.add(g,0);g=g.clone();g.isEmpty=!0;b.add(g);delete b.name}c[b.name]||delete b.name;return b}}});return b}function z(b,a,d){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a),c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,d);var a=c.getHtml(),a=a.replace(/\\s*(<\\/?[a-z:]+ ?\\/?>)\\s*/g,\"$1\").replace(/(<cke:br \\/>){2,}/g,\"<cke:br />\").replace(/(<cke:br \\/>)(<\\/?p>|<br \\/>)/g,\n\"$2\").replace(/(<\\/?p>|<br \\/>)(<cke:br \\/>)/g,\"$1\").replace(/<(cke:)?br( \\/)?>/g,\"<br>\").replace(/<p><\\/p>/g,\"\"),f=0,a=a.replace(/<\\/?p>/g,function(a){if(\"<p>\"==a){if(1<++f)return\"</p><p>\"}else if(0<--f)return\"</p><p>\";return a}).replace(/<p><\\/p>/g,\"\");return p(b,a)}function p(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat(\"<br>\",2*(a.length/7))}).replace(/<\\/?p>/g,\"\"):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\\/)?p>/g,\"<$1div>\"));\nreturn a}CKEDITOR.plugins.add(\"clipboard\",{requires:\"dialog\",init:function(b){var a;v(b);CKEDITOR.dialog.add(\"paste\",CKEDITOR.getUrl(this.path+\"dialogs/paste.js\"));b.on(\"paste\",function(a){var b=a.data.dataValue,f=CKEDITOR.dtd.$block;-1<b.indexOf(\"Apple-\")&&(b=b.replace(/<span class=\"Apple-converted-space\">&nbsp;<\\/span>/gi,\" \"),\"html\"!=a.data.type&&(b=b.replace(/<span class=\"Apple-tab-span\"[^>]*>([^<]*)<\\/span>/gi,function(a,b){return b.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\")})),-1<b.indexOf('<br class=\"Apple-interchange-newline\">')&&\n(a.data.startsWithEOL=1,a.data.preSniffing=\"html\",b=b.replace(/<br class=\"Apple-interchange-newline\">/,\"\")),b=b.replace(/(<[^>]+) class=\"Apple-[^\"]*\"/gi,\"$1\"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var h,l,g=new CKEDITOR.dom.element(\"div\");for(g.setHtml(b);1==g.getChildCount()&&(h=g.getFirst())&&h.type==CKEDITOR.NODE_ELEMENT&&(h.hasClass(\"cke_editable\")||h.hasClass(\"cke_contents\"));)g=l=h;l&&(b=l.getHtml().replace(/<br>$/i,\"\"))}CKEDITOR.env.ie?b=b.replace(/^&nbsp;(?: |\\r\\n)?<(\\w+)/g,function(b,\nc){if(c.toLowerCase()in f){a.data.preSniffing=\"html\";return\"<\"+c}return b}):CKEDITOR.env.webkit?b=b.replace(/<\\/(\\w+)><div><br><\\/div>$/,function(b,c){if(c in f){a.data.endsWithEOL=1;return\"</\"+c+\">\"}return b}):CKEDITOR.env.gecko&&(b=b.replace(/(\\s)<br>$/,\"$1\"));a.data.dataValue=b},null,null,3);b.on(\"paste\",function(d){var d=d.data,c=d.type,f=d.dataValue,h,l=b.config.clipboard_defaultContentType||\"html\";h=\"html\"==c||\"html\"==d.preSniffing?\"html\":w(f);\"htmlifiedtext\"==h?f=x(b.config,f):\"text\"==c&&\"html\"==\nh&&(f=z(b.config,f,a||(a=y(b))));d.startsWithEOL&&(f='<br data-cke-eol=\"1\">'+f);d.endsWithEOL&&(f+='<br data-cke-eol=\"1\">');\"auto\"==c&&(c=\"html\"==h||\"html\"==l?\"html\":\"text\");d.type=c;d.dataValue=f;delete d.preSniffing;delete d.startsWithEOL;delete d.endsWithEOL},null,null,6);b.on(\"paste\",function(a){a=a.data;b.insertHtml(a.dataValue,a.type);setTimeout(function(){b.fire(\"afterPaste\")},0)},null,null,1E3);b.on(\"pasteDialog\",function(a){setTimeout(function(){b.openDialog(\"paste\",a.data)},0)})}})})();(function(){CKEDITOR.plugins.add(\"panel\",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL=\"panel\";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:\"\",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var e=CKEDITOR.addTemplate(\"panel\",\n'<div lang=\"{langCode}\" id=\"{id}\" dir={dir} class=\"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}\" style=\"z-index:{z-index}\" role=\"presentation\">{frame}</div>'),f=CKEDITOR.addTemplate(\"panel-frame\",'<iframe id=\"{id}\" class=\"cke_panel_frame\" role=\"application\" frameborder=\"0\" src=\"{src}\"></iframe>'),g=CKEDITOR.addTemplate(\"panel-frame-inner\",'<!DOCTYPE html><html class=\"cke_panel_container {env}\" dir=\"{dir}\" lang=\"{langCode}\"><head>{css}</head><body class=\"cke_{dir}\" style=\"margin:0;padding:0\" onload=\"{onload}\"></body></html>');\nCKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+\"_frame\"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:\"scroll\",\"-webkit-overflow-scrolling\":\"touch\"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(g.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:\"window.parent.CKEDITOR.tools.callFunction(\"+\nb+\");\"},c)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on(\"key\"+(CKEDITOR.env.opera?\"press\":\"down\"),function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute(\"dir\");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==(\"rtl\"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var c=\n{editorId:a.id,id:this.id,langCode:a.langCode,dir:a.lang.dir,cls:this.className,frame:\"\",env:CKEDITOR.env.cssClass,\"z-index\":a.config.baseFloatZIndex+1};this.isFramed&&(c.frame=f.output({id:this.id+\"_frame\",src:\"javascript:void(document.open(),\"+(CKEDITOR.env.isCustomDomain()?\"document.domain='127.0.0.1\"+document.domain+\"127.0.0.1'127.0.0.1\":\"\")+'127.0.0.1\">'}));var d=e.output(c);b&&b.push(d);return d},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(),\nb);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){var a=this._.blocks[a],b=this._.currentBlock,c=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+\"_frame\");b&&(c.removeAttributes(b.attributes),b.hide());this._.currentBlock=a;c.setAttributes(a.attributes);CKEDITOR.fire(\"ariaWidget\",c);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&\nthis.element.remove()}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement(\"div\",{attributes:{tabIndex:-1,\"class\":\"cke_panel_block\",role:\"presentation\"},styles:{display:\"none\"}}));b&&CKEDITOR.tools.extend(this,b);this.attributes.title||(this.attributes.title=this.attributes[\"aria-label\"]);this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag(\"a\").getItem(this._.focusIndex=\na),(CKEDITOR.env.webkit||CKEDITOR.env.opera)&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle(\"display\",\"\")},hide:function(){(!this.onHide||!0!==this.onHide.call(this))&&this.element.setStyle(\"display\",\"none\")},onKeyDown:function(a){var b=this.keys[a];switch(b){case \"next\":for(var a=this._.focusIndex,b=this.element.getElementsByTag(\"a\"),c;c=b.getItem(++a);)if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=\na;c.focus();break}return!1;case \"prev\":a=this._.focusIndex;for(b=this.element.getElementsByTag(\"a\");0<a&&(c=b.getItem(--a));)if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=a;c.focus();break}return!1;case \"click\":case \"mouseup\":return a=this._.focusIndex,(c=0<=a&&this.element.getElementsByTag(\"a\").getItem(a))&&(c.$[b]?c.$[b]():c.$[\"on\"+b]()),!1}return!0}}})})();CKEDITOR.plugins.add(\"floatpanel\",{requires:\"panel\"});\n(function(){function o(a,b,c,h,g){var g=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||\"\",h.css||\"\",g||\"\"),e=i[g];e||(e=i[g]=new CKEDITOR.ui.panel(b,h),e.element=c.append(CKEDITOR.dom.element.createFromHtml(e.render(a),b)),e.element.setStyles({display:\"none\",position:\"absolute\"}));return e}var i={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,h){function g(){j.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&\n(b=CKEDITOR.document.getById(\"cke_\"+a.name));var e=b.getDocument(),h=o(a,e,b,c,h||0),k=h.element,d=k.getFirst(),j=this;k.disableContextMenu();k.setAttribute(\"role\",\"application\");this.element=k;this._={editor:a,panel:h,parentElement:b,definition:c,document:e,iframe:d,children:[],dir:a.lang.dir};a.on(\"mode\",g);a.on(\"resize\",g);e.getWindow().on(\"resize\",g)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,b)},getBlock:function(a){return this._.panel.getBlock(a)},\nshowBlock:function(a,b,c,h,g){var e=this._.panel,k=e.showBlock(a);this.allowBlur(!1);a=this._.editor.editable();this._.returnFocus=a.hasFocus?a:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);var d=this.element,a=this._.iframe,a=CKEDITOR.env.ie?a:new CKEDITOR.dom.window(a.$.contentWindow),j=d.getDocument(),i=this._.parentElement.getPositionedAncestor(),n=b.getDocumentPosition(j),j=i?i.getDocumentPosition(j):{x:0,y:0},m=\"rtl\"==this._.dir,f=n.x+(h||0)-j.x,l=n.y+(g||0)-j.y;if(m&&(1==c||4==\nc))f+=b.$.offsetWidth;else if(!m&&(2==c||3==c))f+=b.$.offsetWidth-1;if(3==c||4==c)l+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();d.setStyles({top:l+\"px\",left:0,display:\"\"});d.setOpacity(0);d.getFirst().removeStyle(\"width\");this._.editor.focusManager.add(a);this._.blurSet||(CKEDITOR.event.useCapture=!0,a.on(\"blur\",function(a){this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&(this.visible&&!this._.activeChild)&&(delete this._.returnFocus,this.hide())},this),a.on(\"focus\",\nfunction(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.event.useCapture=!1,this._.blurSet=1);e.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&this.onEscape(a)===false)return false},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){d.removeStyle(\"width\");if(k.autoSize){var a=k.element.getDocument(),a=(CKEDITOR.env.webkit?k.element:a.getBody()).$.scrollWidth;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetWidth||0)-(d.$.clientWidth||\n0)+3));d.setStyle(\"width\",a+10+\"px\");a=k.element.$.scrollHeight;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetHeight||0)-(d.$.clientHeight||0)+3));d.setStyle(\"height\",a+\"px\");e._.currentBlock.element.setStyle(\"display\",\"none\").removeStyle(\"display\")}else d.removeStyle(\"height\");m&&(f=f-d.$.offsetWidth);d.setStyle(\"left\",f+\"px\");var b=e.element.getWindow(),a=d.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,g=a.height||a.bottom-a.top,h=m?a.right:b.width-a.left,\ni=m?b.width-a.right:a.left;m?h<c&&(f=i>c?f+c:b.width>c?f-a.left:f-a.right+b.width):h<c&&(f=i>c?f-c:b.width>c?f-a.right+b.width:f-a.left);c=a.top;b.height-a.top<g&&(l=c>g?l-g:b.height>g?l-a.bottom+b.height:l-a.top);if(CKEDITOR.env.ie){b=a=new CKEDITOR.dom.element(d.$.offsetParent);b.getName()==\"html\"&&(b=b.getDocument().getBody());b.getComputedStyle(\"direction\")==\"rtl\"&&(f=CKEDITOR.env.ie8Compat?f-d.getDocument().getDocumentElement().$.scrollLeft*2:f-(a.$.scrollWidth-a.$.clientWidth))}var a=d.getFirst(),\nj;(j=a.getCustomData(\"activePanel\"))&&j.onHide&&j.onHide.call(this,1);a.setCustomData(\"activePanel\",this);d.setStyles({top:l+\"px\",left:f+\"px\"});d.setOpacity(1)},this);e.isLoaded?a():e.onLoad=a;CKEDITOR.tools.setTimeout(function(){this.focus();this.allowBlur(true);this._.editor.fire(\"panelShow\",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||\nthis._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a.is(\"a\")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle(\"display\",\"none\");this.visible=0;this.element.getFirst().removeCustomData(\"activePanel\");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),\na.focus();delete this._.lastFocused;this._.editor.fire(\"panelHide\",this)}},allowBlur:function(a){var b=this._.panel;void 0!=a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,h,g,e){this._.activeChild==a&&a._.panel._.offsetParentId==c.getId()||(this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,h,g,e),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&\nsetTimeout(function(){a.element.getChild(0).$.style.cssText+=\"\"},100))},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on(\"instanceDestroyed\",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in i){var c=i[b];a?c.destroy():c.element.hide()}a&&(i={})})})();CKEDITOR.plugins.add(\"menu\",{requires:\"floatpanel\",beforeInit:function(k){for(var g=k.config.menu_groups.split(\",\"),m=k._.menuGroups={},l=k._.menuItems={},a=0;a<g.length;a++)m[g[a]]=a+1;k.addMenuGroup=function(b,a){m[b]=a||100};k.addMenuItem=function(a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))};k.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};k.getMenuItem=function(a){return l[a]};k.removeMenuItem=function(a){delete l[a]}}});\n(function(){function k(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var g='<span class=\"cke_menuitem\"><a id=\"{id}\" class=\"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}\" href=\"{href}\" title=\"{title}\" tabindex=\"-1\"_cke_focus=1 hidefocus=\"true\" role=\"menuitem\" aria-haspopup=\"{hasPopup}\" aria-disabled=\"{disabled}\" aria-pressed=\"{pressed}\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)g+=' onkeypress=\"return false;\"';\nCKEDITOR.env.gecko&&(g+=' onblur=\"this.style.cssText = this.style.cssText;\"');var g=g+(' onmouseover=\"CKEDITOR.tools.callFunction({hoverFn},{index});\" onmouseout=\"CKEDITOR.tools.callFunction({moveOutFn},{index});\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\">'),m=CKEDITOR.addTemplate(\"menuItem\",g+'<span class=\"cke_menubutton_inner\"><span class=\"cke_menubutton_icon\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{iconStyle}\"></span></span><span class=\"cke_menubutton_label\">{label}</span>{arrowHtml}</span></a></span>'),\nl=CKEDITOR.addTemplate(\"menuArrow\",'<span class=\"cke_menuarrow\"><span>{label}</span></span>');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath(\"editor\")],level:this._.level-1,block:{}}),j=c.block.attributes=c.attributes||{};!j.role&&(j.role=\"menu\");this._.panelDefinition=c},_:{onShow:function(){var a=\nthis.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),j=this._.listeners;this.removeAll();for(var e=0;e<j.length;e++){var i=j[e](b,a,c);if(i)for(var f in i){var h=this.editor.getMenuItem(f);if(h&&(!h.command||this.editor.getCommand(h.command).state))h.state=i[f],this.add(h)}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1},\nonHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var j in c){var e=this.editor.getMenuItem(j);e&&(e.state=c[j],b.add(e))}var i=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+(\"\"+a));setTimeout(function(){b.show(i,\n2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,j){if(!this.parent&&(this._.onShow(),!this.items.length))return;var b=b||(\"rtl\"==this.editor.lang.dir?2:1),e=this.items,i=this.editor,f=this._.panel,h=this._.element;if(!f){f=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);f.onEscape=CKEDITOR.tools.bind(function(a){if(!1===\nthis._.onEscape(a))return!1},this);f.onShow=function(){f._.panel.getHolderElement().getParent().addClass(\"cke cke_reset_all\")};f.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);h=f.addBlock(this.id,this._.panelDefinition.block);h.autoSize=!0;var d=h.keys;d[40]=\"next\";d[9]=\"next\";d[38]=\"prev\";d[CKEDITOR.SHIFT+9]=\"prev\";d[\"rtl\"==i.lang.dir?37:39]=CKEDITOR.env.ie?\"mouseup\":\"click\";d[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(d[13]=\"mouseup\");h=this._.element=\nh.element;d=h.getDocument();d.getBody().setStyle(\"overflow\",\"hidden\");d.getElementsByTag(\"html\").getItem(0).setStyle(\"overflow\",\"hidden\");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,i.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=\nthis.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}k(e);for(var d=i.elementPath(),d=['<div class=\"cke_menu'+(d&&d.direction()!=i.lang.dir?\" cke_mixed_dir_content\":\"\")+'\" role=\"presentation\">'],g=e.length,m=g&&e[0].group,l=0;l<g;l++){var n=e[l];m!=n.group&&(d.push('<div class=\"cke_menuseparator\" role=\"separator\"></div>'),m=n.group);n.render(this,l,d)}d.push(\"</div>\");h.setHtml(d.join(\"\"));CKEDITOR.ui.fire(\"ready\",\nthis);this.parent?this.parent._.panel.showAsChild(f,this.id,a,b,c,j):f.showBlock(this.id,a,b,c,j);i.fire(\"menuShow\",[f])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:\"cke_menubutton__\"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var g=a.id+(\"\"+\nb),e=\"undefined\"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,i=e==CKEDITOR.TRISTATE_ON?\"on\":e==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\",f=this.getItems,h=\"&#\"+(\"rtl\"==this.editor.lang.dir?\"9668\":\"9658\")+\";\",d=this.name;this.icon&&!/\\./.test(this.icon)&&(d=this.icon);a={id:g,name:this.name,iconName:d,label:this.label,cls:this.className||\"\",state:i,hasPopup:f?\"true\":\"false\",disabled:e==CKEDITOR.TRISTATE_DISABLED,pressed:e==CKEDITOR.TRISTATE_ON,title:this.label,href:\"javascript:void('\"+(this.label||\n\"\").replace(\"'\")+\"')\",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(d,\"rtl\"==this.editor.lang.dir,d==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:h}):\"\"};m.output(a,c)}}})})();CKEDITOR.config.menu_groups=\"clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div\";CKEDITOR.plugins.add(\"contextmenu\",{requires:\"menu\",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(b){this.base.call(this,b,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":b.lang.contextmenu.options}}})},proto:{addTarget:function(b,d){if(CKEDITOR.env.opera&&!(\"oncontextmenu\"in document.body)){var c;b.on(\"mousedown\",function(a){a=a.data;if(2!=a.$.button)a.getKeystroke()==CKEDITOR.CTRL+1&&b.fire(\"contextmenu\",a);else if(!d||!(CKEDITOR.env.mac?\na.$.metaKey:a.$.ctrlKey)){var g=a.getTarget();c||(g=g.getDocument(),c=g.createElement(\"input\"),c.$.type=\"button\",g.getBody().append(c));c.setAttribute(\"style\",\"position:absolute;top:\"+(a.$.clientY-2)+\"px;left:\"+(a.$.clientX-2)+\"px;width:5px;height:5px;opacity:0.01\")}});b.on(\"mouseup\",function(a){c&&(c.remove(),c=void 0,b.fire(\"contextmenu\",a.data))})}b.on(\"contextmenu\",function(a){a=a.data;if(!d||!(CKEDITOR.env.webkit?e:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey)){a.preventDefault();var b=a.getTarget().getDocument(),\nc=a.getTarget().getDocument().getDocumentElement(),f=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),h=f?a.$.clientX:a.$.pageX||b.x+a.$.clientX,i=f?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(c,null,h,i)},CKEDITOR.env.ie?200:0,this)}},this);if(CKEDITOR.env.opera)b.on(\"keypress\",function(a){a=a.data;0===a.$.keyCode&&a.preventDefault()});if(CKEDITOR.env.webkit){var e,f=function(){e=0};b.on(\"keydown\",function(a){e=CKEDITOR.env.mac?a.data.$.metaKey:\na.data.$.ctrlKey});b.on(\"keyup\",f);b.on(\"contextmenu\",f)}},open:function(b,d,c,e){this.editor.focus();b=b||CKEDITOR.document.getDocumentElement();this.editor.selectionChange(1);this.show(b,d,c,e)}}})},beforeInit:function(b){var d=b.contextMenu=new CKEDITOR.plugins.contextMenu(b);b.on(\"contentDom\",function(){d.addTarget(b.editable(),!1!==b.config.browserContextMenuOnCtrl)});b.addCommand(\"contextMenu\",{exec:function(){b.contextMenu.open(b.document.getBody())}});b.setKeystroke(CKEDITOR.SHIFT+121,\"contextMenu\");\nb.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,\"contextMenu\")}});CKEDITOR.plugins.add(\"resize\",{init:function(b){var f,g,n,o,a=b.config,q=b.ui.spaceId(\"resizer\"),h=b.element?b.element.getDirection(1):\"ltr\";!a.resize_dir&&(a.resize_dir=\"vertical\");void 0==a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0==a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0==a.resize_minWidth&&(a.resize_minWidth=750);void 0==a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var c=null,i=(\"both\"==a.resize_dir||\"horizontal\"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,\nl=(\"both\"==a.resize_dir||\"vertical\"==a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,j=function(d){var e=f,m=g,c=e+(d.data.$.screenX-n)*(\"rtl\"==h?-1:1),d=m+(d.data.$.screenY-o);i&&(e=Math.max(a.resize_minWidth,Math.min(c,a.resize_maxWidth)));l&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(i?e:null,m)},k=function(){CKEDITOR.document.removeListener(\"mousemove\",j);CKEDITOR.document.removeListener(\"mouseup\",k);b.document&&(b.document.removeListener(\"mousemove\",j),b.document.removeListener(\"mouseup\",\nk))},p=CKEDITOR.tools.addFunction(function(d){c||(c=b.getResizable());f=c.$.offsetWidth||0;g=c.$.offsetHeight||0;n=d.screenX;o=d.screenY;a.resize_minWidth>f&&(a.resize_minWidth=f);a.resize_minHeight>g&&(a.resize_minHeight=g);CKEDITOR.document.on(\"mousemove\",j);CKEDITOR.document.on(\"mouseup\",k);b.document&&(b.document.on(\"mousemove\",j),b.document.on(\"mouseup\",k));d.preventDefault&&d.preventDefault()});b.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(p)});b.on(\"uiSpace\",function(a){if(\"bottom\"==\na.data.space){var e=\"\";i&&!l&&(e=\" cke_resizer_horizontal\");!i&&l&&(e=\" cke_resizer_vertical\");var c='<span id=\"'+q+'\" class=\"cke_resizer'+e+\" cke_resizer_\"+h+'\" title=\"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'\" onmousedown=\"CKEDITOR.tools.callFunction('+p+', event)\">'+(\"ltr\"==h?\"◢\":\"◣\")+\"</span>\";\"ltr\"==h&&\"ltr\"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on(\"maximize\",function(a){b.ui.space(\"resizer\")[a.data==CKEDITOR.TRISTATE_ON?\"hide\":\"show\"]()})}}});(function(){var a='<a id=\"{id}\" class=\"cke_button cke_button__{name} cke_button_{state} {cls}\"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?\"\":'\" href=\"javascript:void(\\'{titleJs}\\')\"')+' title=\"{title}\" tabindex=\"-1\" hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"{hasArrow}\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)a+=' onkeypress=\"return false;\"';CKEDITOR.env.gecko&&(a+=' onblur=\"this.style.cssText = this.style.cssText;\"');var a=\na+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event);\" onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\"  onmousedown=\"return CKEDITOR.tools.callFunction({mousedownFn},event);\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{style}\"'),a=a+'>&nbsp;</span><span id=\"{id}_label\" class=\"cke_button_label cke_button__{name}_label\">{label}</span>{arrowHtml}</a>',\nm=CKEDITOR.addTemplate(\"buttonArrow\",'<span class=\"cke_button_arrow\">'+(CKEDITOR.env.hc?\"&#9660;\":\"\")+\"</span>\"),n=CKEDITOR.addTemplate(\"button\",a);CKEDITOR.plugins.add(\"button\",{beforeInit:function(b){b.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON=\"button\";CKEDITOR.ui.button=function(b){CKEDITOR.tools.extend(this,b,{title:b.label,click:b.click||function(e){e.execCommand(b.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(b){return new CKEDITOR.ui.button(b)}};\nCKEDITOR.ui.button.prototype={render:function(b,e){var a=CKEDITOR.env,i=this._.id=CKEDITOR.tools.getNextId(),f=\"\",d=this.command,l;this._.editor=b;var c={id:i,button:this,editor:b,focus:function(){CKEDITOR.document.getById(i).focus()},execute:function(){this.button.click(b)},attach:function(b){this.button.attach(b)}},o=CKEDITOR.tools.addFunction(function(b){if(c.onkey)return b=new CKEDITOR.dom.event(b),!1!==c.onkey(c,b.getKeystroke())}),p=CKEDITOR.tools.addFunction(function(b){var a;c.onfocus&&(a=\n!1!==c.onfocus(c,new CKEDITOR.dom.event(b)));CKEDITOR.env.gecko&&10900>CKEDITOR.env.version&&b.preventBubble();return a}),j=0,q=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var a=b.editable();a.isInline()&&a.hasFocus&&(b.lockSelection(),j=1)}});c.clickFn=l=CKEDITOR.tools.addFunction(function(){j&&(b.unlockSelection(1),j=0);c.execute()});if(this.modes){var k={},g=function(){var a=b.mode;a&&(a=this.modes[a]?void 0!=k[a]?k[a]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,this.setState(b.readOnly&&\n!this.readOnly?CKEDITOR.TRISTATE_DISABLED:a))};b.on(\"beforeModeUnload\",function(){b.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(k[b.mode]=this._.state)},this);b.on(\"mode\",g,this);!this.readOnly&&b.on(\"readOnly\",g,this)}else if(d&&(d=b.getCommand(d)))d.on(\"state\",function(){this.setState(d.state)},this),f+=d.state==CKEDITOR.TRISTATE_ON?\"on\":d.state==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\";if(this.directional)b.on(\"contentDirChanged\",function(a){var e=CKEDITOR.document.getById(this._.id),c=\ne.getFirst(),a=a.data;a!=b.lang.dir?e.addClass(\"cke_\"+a):e.removeClass(\"cke_ltr\").removeClass(\"cke_rtl\");c.setAttribute(\"style\",CKEDITOR.skin.getIconStyle(h,\"rtl\"==a,this.icon,this.iconOffset))},this);d||(f+=\"off\");var h=g=this.name||this.command;this.icon&&!/\\./.test(this.icon)&&(h=this.icon,this.icon=null);a={id:i,name:g,iconName:h,label:this.label,cls:this.className||\"\",state:f,title:this.title,titleJs:a.gecko&&10900<=a.version&&!a.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),hasArrow:this.hasArrow?\n\"true\":\"false\",keydownFn:o,mousedownFn:q,focusFn:p,clickFn:l,style:CKEDITOR.skin.getIconStyle(h,\"rtl\"==b.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?m.output():\"\"};n.output(a,e);if(this.onRender)this.onRender();return c},setState:function(b){if(this._.state==b)return!1;this._.state=b;var a=CKEDITOR.document.getById(this._.id);return a?(a.setState(b,\"cke_button\"),b==CKEDITOR.TRISTATE_DISABLED?a.setAttribute(\"aria-disabled\",!0):a.removeAttribute(\"aria-disabled\"),b==CKEDITOR.TRISTATE_ON?\na.setAttribute(\"aria-pressed\",!0):a.removeAttribute(\"aria-pressed\"),!0):!1}};CKEDITOR.ui.prototype.addButton=function(b,a){this.add(b,CKEDITOR.UI_BUTTON,a)}})();(function(){function w(a){function e(){for(var b=h(),g=CKEDITOR.tools.clone(a.config.toolbarGroups)||o(a),f=0;f<g.length;f++){var d=g[f];if(\"../../../default.htm\"!=d){\"string\"==typeof d&&(d=g[f]={name:d});var e,n=d.groups;if(n)for(var l=0;l<n.length;l++)e=n[l],(e=b[e])&&c(d,e);(e=b[d.name])&&c(d,e)}}return g}function h(){var b={},c,f,d;for(c in a.ui.items)f=a.ui.items[c],d=f.toolbar||\"others\",d=d.split(\",\"),f=d[0],d=parseInt(d[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:d});for(f in b)b[f]=b[f].sort(function(a,\nb){return a.order==b.order?0:0>b.order?-1:0>a.order?1:a.order<b.order?-1:1});return b}function c(a,c){if(c.length){a.items?a.items.push(\"-\"):a.items=[];for(var d;d=c.shift();)a.items.push(d.name)}}var d=a.config.toolbar;\"string\"==typeof d&&(d=a.config[\"toolbar_\"+d]);return a.toolbar=d||e()}function o(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:\"document\",groups:[\"mode\",\"document\",\"doctools\"]},{name:\"clipboard\",groups:[\"clipboard\",\"undo\"]},{name:\"editing\",groups:[\"find\",\"selection\",\"spellchecker\"]},\n{name:\"forms\"},\"../../../default.htm\",{name:\"basicstyles\",groups:[\"basicstyles\",\"cleanup\"]},{name:\"paragraph\",groups:[\"list\",\"indent\",\"blocks\",\"align\"]},{name:\"links\"},{name:\"insert\"},\"../../../default.htm\",{name:\"styles\"},{name:\"colors\"},{name:\"tools\"},{name:\"others\"},{name:\"about\"}])}var t=function(){this.toolbars=[];this.focusCommandExecuted=!1};t.prototype.focus=function(){for(var a=0,e;e=this.toolbars[a++];)for(var h=0,c;c=e.items[h++];)if(c.focus){c.focus();return}};var x={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&\n(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},100):a.toolbox.focus())}};CKEDITOR.plugins.add(\"toolbar\",{requires:\"button\",init:function(a){var e,h=function(c,d){var b,g=\"rtl\"==a.lang.dir,f=a.config.toolbarGroupCycling,f=void 0===f||f;switch(d){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==d?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-\n1],b.items.length)for(c=b.items[e?b.items.length-1:0];c&&!c.focus;)(c=e?c.previous:c.next)||(b=0);c&&c.focus();return!1;case g?37:39:case 40:b=c;do b=b.next,!b&&f&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():h(c,9);return!1;case g?39:37:case 38:b=c;do b=b.previous,!b&&f&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(e=1,h(c,CKEDITOR.SHIFT+9),e=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(),!1}return!0};a.on(\"uiSpace\",function(c){if(c.data.space==\na.config.toolbarLocation){a.toolbox=new t;var d=CKEDITOR.tools.getNextId(),b=a.config.removeButtons,b=b&&b.split(\",\"),g=['<span id=\"',d,'\" class=\"cke_voice_label\">',a.lang.toolbar.toolbars,\"</span>\",'<span id=\"'+a.ui.spaceId(\"toolbox\")+'\" class=\"cke_toolbox\" role=\"group\" aria-labelledby=\"',d,'\" onmousedown=\"return false;\">'],d=!1!==a.config.toolbarStartupExpanded,f,e;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&g.push('<span class=\"cke_toolbox_main\"'+(d?\">\":' style=\"display:none\">'));\nfor(var o=a.toolbox.toolbars,n=w(a),l=0;l<n.length;l++){var j,i=0,q,m=n[l],r;if(m)if(f&&(g.push(\"</span>\"),e=f=0),\"../../../default.htm\"===m)g.push('<span class=\"cke_toolbar_break\"></span>');else{r=m.items||m;for(var s=0;s<r.length;s++){var k;k=r[s];var u;if(!(b&&0<=CKEDITOR.tools.indexOf(b,k))&&(k=a.ui.create(k)))if(k.type==CKEDITOR.UI_SEPARATOR)e=f&&k;else{u=!1!==k.canGroup;if(!i){j=CKEDITOR.tools.getNextId();i={id:j,items:[]};q=m.name&&(a.lang.toolbar.toolbarGroups[m.name]||m.name);g.push('<span id=\"',j,'\" class=\"cke_toolbar\"',\nq?' aria-labelledby=\"'+j+'_label\"':\"\",' role=\"toolbar\">');q&&g.push('<span id=\"',j,'_label\" class=\"cke_voice_label\">',q,\"</span>\");g.push('<span class=\"cke_toolbar_start\"></span>');var p=o.push(i)-1;0<p&&(i.previous=o[p-1],i.previous.next=i)}u?f||(g.push('<span class=\"cke_toolgroup\" role=\"presentation\">'),f=1):f&&(g.push(\"</span>\"),f=0);j=function(b){b=b.render(a,g);p=i.items.push(b)-1;if(p>0){b.previous=i.items[p-1];b.previous.next=b}b.toolbar=i;b.onkey=h;b.onfocus=function(){a.toolbox.focusCommandExecuted||\na.focus()}};e&&(j(e),e=0);j(k)}}f&&(g.push(\"</span>\"),e=f=0);i&&g.push('<span class=\"cke_toolbar_end\"></span></span>')}}a.config.toolbarCanCollapse&&g.push(\"</span>\");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var v=CKEDITOR.tools.addFunction(function(){a.execCommand(\"toolbarCollapse\")});a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(v)});a.addCommand(\"toolbarCollapse\",{readOnly:1,exec:function(a){var b=a.ui.space(\"toolbar_collapser\"),c=b.getPrevious(),d=\na.ui.space(\"contents\"),e=c.getParent(),f=parseInt(d.$.style.height,10),g=e.$.offsetHeight,h=b.hasClass(\"cke_toolbox_collapser_min\");h?(c.show(),b.removeClass(\"cke_toolbox_collapser_min\"),b.setAttribute(\"title\",a.lang.toolbar.toolbarCollapse)):(c.hide(),b.addClass(\"cke_toolbox_collapser_min\"),b.setAttribute(\"title\",a.lang.toolbar.toolbarExpand));b.getFirst().setText(h?\"▲\":\"◀\");d.setStyle(\"height\",f-(e.$.offsetHeight-g)+\"px\");a.fire(\"resize\")},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+\n(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),\"toolbarCollapse\");g.push('<a title=\"'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'\" id=\"'+a.ui.spaceId(\"toolbar_collapser\")+'\" tabIndex=\"-1\" class=\"cke_toolbox_collapser');d||g.push(\" cke_toolbox_collapser_min\");g.push('\" onclick=\"CKEDITOR.tools.callFunction('+v+')\">','<span class=\"cke_arrow\">&#9650;</span>',\"</a>\")}g.push(\"</span>\");c.data.html+=g.join(\"\")}});a.on(\"destroy\",function(){if(this.toolbox){var a,d=0,b,e,f;for(a=this.toolbox.toolbars;d<\na.length;d++){e=a[d].items;for(b=0;b<e.length;b++)f=e[b],f.clickFn&&CKEDITOR.tools.removeFunction(f.clickFn),f.keyDownFn&&CKEDITOR.tools.removeFunction(f.keyDownFn)}}});a.on(\"uiReady\",function(){var c=a.ui.space(\"toolbox\");c&&a.focusManager.add(c,1)});a.addCommand(\"toolbarFocus\",x);a.setKeystroke(CKEDITOR.ALT+121,\"toolbarFocus\");a.ui.add(\"-\",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('<span class=\"cke_toolbar_separator\" role=\"separator\"></span>');\nreturn{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,e,h){var c=o(this.editor),d=0===e,b={name:a};if(h){if(h=CKEDITOR.tools.search(c,function(a){return a.name==h})){!h.groups&&(h.groups=[]);if(e&&(e=CKEDITOR.tools.indexOf(h.groups,e),0<=e)){h.groups.splice(e+1,0,a);return}d?h.groups.splice(0,0,a):h.groups.push(a);return}e=null}e&&(e=CKEDITOR.tools.indexOf(c,function(a){return a.name==e}));d?c.splice(0,0,a):\"number\"==typeof e?c.splice(e+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR=\"separator\";\nCKEDITOR.config.toolbarLocation=\"top\";(function(){var o={editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+\"0\"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}},m='<span class=\"cke_path_empty\">&nbsp;</span>',d=\"\";if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)d+=' onkeypress=\"return false;\"';CKEDITOR.env.gecko&&(d+=' onblur=\"this.style.cssText = this.style.cssText;\"');var p=CKEDITOR.addTemplate(\"pathItem\",'<a id=\"{id}\" href=\"{jsTitle}\" tabindex=\"-1\" class=\"cke_path_item\" title=\"{label}\"'+\n(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version?' onfocus=\"event.preventBubble();\"':\"\")+d+' hidefocus=\"true\"  onkeydown=\"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );\" onclick=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\" role=\"button\" aria-label=\"{label}\">{text}</a>');CKEDITOR.plugins.add(\"elementspath\",{init:function(a){function d(b){a.focus();b=a._.elementsPath.list[b];if(b.equals(a.editable())){var e=a.createRange();e.selectNodeContents(b);e.select()}else a.getSelection().selectElement(b)}\nfunction h(){i&&i.setHtml(m);delete a._.elementsPath.list}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var l=a.ui.spaceId(\"path\"),i,n=\"cke_elementspath_\"+CKEDITOR.tools.getNextNumber()+\"_\";a._.elementsPath={idBase:n,filters:[]};a.on(\"uiSpace\",function(b){\"bottom\"==b.data.space&&(b.data.html+='<span id=\"'+l+'_label\" class=\"cke_voice_label\">'+a.lang.elementspath.eleLabel+'</span><span id=\"'+l+'\" class=\"cke_path\" role=\"group\" aria-labelledby=\"'+l+'_label\">'+m+\"</span>\")});a.on(\"uiReady\",function(){var b=\na.ui.space(\"path\");b&&a.focusManager.add(b,1)});var q=CKEDITOR.tools.addFunction(d),r=CKEDITOR.tools.addFunction(function(b,e){var c=a._.elementsPath.idBase,f,e=new CKEDITOR.dom.event(e);f=\"rtl\"==a.lang.dir;switch(e.getKeystroke()){case f?39:37:case 9:return(f=CKEDITOR.document.getById(c+(b+1)))||(f=CKEDITOR.document.getById(c+\"0\")),f.focus(),!1;case f?37:39:case CKEDITOR.SHIFT+9:return(f=CKEDITOR.document.getById(c+(b-1)))||(f=CKEDITOR.document.getById(c+(a._.elementsPath.list.length-1))),f.focus(),\n!1;case 27:return a.focus(),!1;case 13:case 32:return d(b),!1}return!0});a.on(\"selectionChange\",function(b){for(var e=a.editable(),c=b.data.selection.getStartElement(),b=[],f=a._.elementsPath.list=[],d=a._.elementsPath.filters;c;){var j=0,g;g=c.data(\"cke-display-name\")?c.data(\"cke-display-name\"):c.data(\"cke-real-element-type\")?c.data(\"cke-real-element-type\"):c.getName();for(var k=0;k<d.length;k++){var h=d[k](c,g);if(!1===h){j=1;break}g=h||g}j||(j=f.push(c)-1,k=a.lang.elementspath.eleTitle.replace(/%1/,\ng),g=p.output({id:n+j,label:k,text:g,jsTitle:\"javascript:void('\"+g+\"')\",index:j,keyDownFn:r,clickFn:q}),b.unshift(g));if(c.equals(e))break;c=c.getParent()}i||(i=CKEDITOR.document.getById(l));e=i;e.setHtml(b.join(\"\")+m);a.fire(\"elementsPathUpdate\",{space:e})});a.on(\"readOnly\",h);a.on(\"contentDomUnload\",h);a.addCommand(\"elementsPathFocus\",o);a.setKeystroke(CKEDITOR.ALT+122,\"elementsPathFocus\")}}})})();(function(){function C(c,j,f){function b(b){if((d=a[b?\"getFirst\":\"getLast\"]())&&(!d.is||!d.isBlockBoundary())&&(m=j.root[b?\"getPrevious\":\"getNext\"](CKEDITOR.dom.walker.invisible(!0)))&&(!m.is||!m.isBlockBoundary({br:1})))c.document.createElement(\"br\")[b?\"insertBefore\":\"insertAfter\"](d)}for(var i=CKEDITOR.plugins.list.listToArray(j.root,f),e=[],h=0;h<j.contents.length;h++){var g=j.contents[h];if((g=g.getAscendant(\"li\",!0))&&!g.getCustomData(\"list_item_processed\"))e.push(g),CKEDITOR.dom.element.setMarker(f,\ng,\"list_item_processed\",!0)}g=null;for(h=0;h<e.length;h++)g=e[h].getCustomData(\"listarray_index\"),i[g].indent=-1;for(h=g+1;h<i.length;h++)if(i[h].indent>i[h-1].indent+1){e=i[h-1].indent+1-i[h].indent;for(g=i[h].indent;i[h]&&i[h].indent>=g;)i[h].indent+=e,h++;h--}var a=CKEDITOR.plugins.list.arrayToList(i,f,null,c.config.enterMode,j.root.getAttribute(\"dir\")).listNode,d,m;b(!0);b();a.replace(j.root)}function x(c,j){this.name=c;this.context=this.type=j}function y(c,j,f,b){for(var i,e;i=c[b?\"getLast\":\n\"getFirst\"](D);)(e=i.getDirection(1))!==j.getDirection(1)&&i.setAttribute(\"dir\",e),i.remove(),f?i[b?\"insertBefore\":\"insertAfter\"](f):j.append(i,b)}function A(c){var j;(j=function(f){var b=c[f?\"getPrevious\":\"getNext\"](q);b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.is(c.getName()))&&(y(c,b,null,!f),c.remove(),c=b)})();j(1)}function B(c){return c.type==CKEDITOR.NODE_ELEMENT&&(c.getName()in CKEDITOR.dtd.$block||c.getName()in CKEDITOR.dtd.$listItem)&&CKEDITOR.dtd[c.getName()][\"#\"]}function v(c,j,f){c.fire(\"saveSnapshot\");\nf.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var b=f.extractContents();j.trim(!1,!0);var i=j.createBookmark(),e=new CKEDITOR.dom.elementPath(j.startContainer),h=e.block,e=e.lastElement.getAscendant(\"li\",1)||h,g=new CKEDITOR.dom.elementPath(f.startContainer),a=g.contains(CKEDITOR.dtd.$listItem),g=g.contains(CKEDITOR.dtd.$list);h?(h=h.getBogus())&&h.remove():g&&(h=g.getPrevious(q))&&u(h)&&h.remove();(h=b.getLast())&&(h.type==CKEDITOR.NODE_ELEMENT&&h.is(\"br\"))&&h.remove();(h=j.startContainer.getChild(j.startOffset))?\nb.insertBefore(h):j.startContainer.append(b);if(a&&(b=w(a)))e.contains(a)?(y(b,a.getParent(),a),b.remove()):e.append(b);for(;f.checkStartOfBlock()&&f.checkEndOfBlock();)g=f.startPath(),b=g.block,b.is(\"li\")&&(e=b.getParent(),b.equals(e.getLast(q))&&b.equals(e.getFirst(q))&&(b=e)),f.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START),b.remove();f=f.clone();b=c.editable();f.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);f=new CKEDITOR.dom.walker(f);f.evaluator=function(a){return q(a)&&!u(a)};(f=f.next())&&(f.type==\nCKEDITOR.NODE_ELEMENT&&f.getName()in CKEDITOR.dtd.$list)&&A(f);j.moveToBookmark(i);j.select();c.fire(\"saveSnapshot\")}function w(c){return(c=c.getLast(q))&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in r?c:null}var r={ol:1,ul:1},E=CKEDITOR.dom.walker.whitespaces(),F=CKEDITOR.dom.walker.bookmark(),q=function(c){return!(E(c)||F(c))},u=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(c,j,f,b,i){if(!r[c.getName()])return[];b||(b=0);f||(f=[]);for(var e=0,h=c.getChildCount();e<h;e++){var g=\nc.getChild(e);g.type==CKEDITOR.NODE_ELEMENT&&g.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(g,j,f,b+1);if(\"li\"==g.$.nodeName.toLowerCase()){var a={parent:c,indent:b,element:g,contents:[]};i?a.grandparent=i:(a.grandparent=c.getParent(),a.grandparent&&\"li\"==a.grandparent.$.nodeName.toLowerCase()&&(a.grandparent=a.grandparent.getParent()));j&&CKEDITOR.dom.element.setMarker(j,g,\"listarray_index\",f.length);f.push(a);for(var d=0,m=g.getChildCount(),k;d<m;d++)k=g.getChild(d),k.type==\nCKEDITOR.NODE_ELEMENT&&r[k.getName()]?CKEDITOR.plugins.list.listToArray(k,j,f,b+1,a.grandparent):a.contents.push(k)}}return f},arrayToList:function(c,j,f,b,i){f||(f=0);if(!c||c.length<f+1)return null;for(var e,h=c[f].parent.getDocument(),g=new CKEDITOR.dom.documentFragment(h),a=null,d=f,m=Math.max(c[f].indent,0),k=null,n,l,p=b==CKEDITOR.ENTER_P?\"p\":\"div\";;){var o=c[d];e=o.grandparent;n=o.element.getDirection(1);if(o.indent==m){if(!a||c[d].parent.getName()!=a.getName())a=c[d].parent.clone(!1,1),i&&\na.setAttribute(\"dir\",i),g.append(a);k=a.append(o.element.clone(0,1));n!=a.getDirection(1)&&k.setAttribute(\"dir\",n);for(e=0;e<o.contents.length;e++)k.append(o.contents[e].clone(1,1));d++}else if(o.indent==Math.max(m,0)+1)l=c[d-1].element.getDirection(1),d=CKEDITOR.plugins.list.arrayToList(c,null,d,b,l!=n?n:null),!k.getChildCount()&&(CKEDITOR.env.ie&&!(7<h.$.documentMode))&&k.append(h.createText(\" \")),k.append(d.listNode),d=d.nextIndex;else if(-1==o.indent&&!f&&e){r[e.getName()]?(k=o.element.clone(!1,\n!0),n!=e.getDirection(1)&&k.setAttribute(\"dir\",n)):k=new CKEDITOR.dom.documentFragment(h);var a=e.getDirection(1)!=n,s=o.element,z=s.getAttribute(\"class\"),u=s.getAttribute(\"style\"),w=k.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(b!=CKEDITOR.ENTER_BR||a||u||z),t,x=o.contents.length;for(e=0;e<x;e++){t=o.contents[e];if(t.type==CKEDITOR.NODE_ELEMENT&&t.isBlockBoundary()){a&&!t.getDirection()&&t.setAttribute(\"dir\",n);var v=t,y=s.getAttribute(\"style\");y&&v.setAttribute(\"style\",y.replace(/([^;])$/,\"$1;\")+(v.getAttribute(\"style\")||\n\"\"));z&&t.addClass(z)}else w&&(l||(l=h.createElement(p),a&&l.setAttribute(\"dir\",n)),u&&l.setAttribute(\"style\",u),z&&l.setAttribute(\"class\",z),l.append(t.clone(1,1)));k.append(l||t.clone(1,1))}k.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&d!=c.length-1&&((n=k.getLast())&&(n.type==CKEDITOR.NODE_ELEMENT&&\"_moz\"==n.getAttribute(\"type\"))&&n.remove(),(!k.getLast(q)||!(n.type==CKEDITOR.NODE_ELEMENT&&n.getName()in CKEDITOR.dtd.$block))&&k.append(h.createElement(\"br\")));n=k.$.nodeName.toLowerCase();!CKEDITOR.env.ie&&\n(\"div\"==n||\"p\"==n)&&k.appendBogus();g.append(k);a=null;d++}else return null;l=null;if(c.length<=d||Math.max(c[d].indent,0)<m)break}if(j)for(c=g.getFirst();c;){if(c.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(j,c),c.getName()in CKEDITOR.dtd.$listItem&&(f=c,h=i=b=void 0,b=f.getDirection()))){for(i=f.getParent();i&&!(h=i.getDirection());)i=i.getParent();b==h&&f.removeAttribute(\"dir\")}c=c.getNextSourceNode()}return{listNode:g,nextIndex:d}}};var G=/^h[1-6]$/,D=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);\nx.prototype={exec:function(c){this.refresh(c,c.elementPath());var j=c.config,f=c.getSelection(),b=f&&f.getRanges(!0);if(this.state==CKEDITOR.TRISTATE_OFF){var i=c.editable();if(i.getFirst(q)){var e=1==b.length&&b[0];(j=e&&e.getEnclosedNode())&&(j.is&&this.type==j.getName())&&this.setState(CKEDITOR.TRISTATE_ON)}else j.enterMode==CKEDITOR.ENTER_BR?i.appendBogus():b[0].fixBlock(1,j.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),f.selectRanges(b)}for(var j=f.createBookmarks(!0),i=[],h={},b=b.createIterator(),\ng=0;(e=b.getNextRange())&&++g;){var a=e.getBoundaryNodes(),d=a.startNode,m=a.endNode;d.type==CKEDITOR.NODE_ELEMENT&&\"td\"==d.getName()&&e.setStartAt(a.startNode,CKEDITOR.POSITION_AFTER_START);m.type==CKEDITOR.NODE_ELEMENT&&\"td\"==m.getName()&&e.setEndAt(a.endNode,CKEDITOR.POSITION_BEFORE_END);e=e.createIterator();for(e.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;a=e.getNextParagraph();)if(!a.getCustomData(\"list_block\")){CKEDITOR.dom.element.setMarker(h,a,\"list_block\",1);for(var k=c.elementPath(a),\nd=k.elements,m=0,k=k.blockLimit,n,l=d.length-1;0<=l&&(n=d[l]);l--)if(r[n.getName()]&&k.contains(n)){k.removeCustomData(\"list_group_object_\"+g);(d=n.getCustomData(\"list_group_object\"))?d.contents.push(a):(d={root:n,contents:[a]},i.push(d),CKEDITOR.dom.element.setMarker(h,n,\"list_group_object\",d));m=1;break}m||(m=k,m.getCustomData(\"list_group_object_\"+g)?m.getCustomData(\"list_group_object_\"+g).contents.push(a):(d={root:m,contents:[a]},CKEDITOR.dom.element.setMarker(h,m,\"list_group_object_\"+g,d),i.push(d)))}}for(n=\n[];0<i.length;)if(d=i.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(r[d.root.getName()]){a=c;b=d;d=h;g=n;m=CKEDITOR.plugins.list.listToArray(b.root,d);k=[];for(e=0;e<b.contents.length;e++)if(l=b.contents[e],(l=l.getAscendant(\"li\",!0))&&!l.getCustomData(\"list_item_processed\"))k.push(l),CKEDITOR.dom.element.setMarker(d,l,\"list_item_processed\",!0);for(var l=b.root.getDocument(),p=void 0,o=void 0,e=0;e<k.length;e++){var s=k[e].getCustomData(\"listarray_index\"),p=m[s].parent;p.is(this.type)||(o=l.createElement(this.type),\np.copyAttributes(o,{start:1,type:1}),o.removeStyle(\"list-style-type\"),m[s].parent=o)}a=CKEDITOR.plugins.list.arrayToList(m,d,null,a.config.enterMode);d=void 0;m=a.listNode.getChildCount();for(e=0;e<m&&(d=a.listNode.getChild(e));e++)d.getName()==this.type&&g.push(d);a.listNode.replace(b.root)}else{m=c;a=d;e=n;k=a.contents;b=a.root.getDocument();g=[];1==k.length&&k[0].equals(a.root)&&(d=b.createElement(\"div\"),k[0].moveChildren&&k[0].moveChildren(d),k[0].append(d),k[0]=d);a=a.contents[0].getParent();\nfor(l=0;l<k.length;l++)a=a.getCommonAncestor(k[l].getParent());p=m.config.useComputedState;m=d=void 0;p=void 0===p||p;for(l=0;l<k.length;l++)for(o=k[l];s=o.getParent();){if(s.equals(a)){g.push(o);!m&&o.getDirection()&&(m=1);o=o.getDirection(p);null!==d&&(d=d&&d!=o?null:o);break}o=s}if(!(1>g.length)){k=g[g.length-1].getNext();l=b.createElement(this.type);e.push(l);for(p=e=void 0;g.length;)e=g.shift(),p=b.createElement(\"li\"),e.is(\"pre\")||G.test(e.getName())?e.appendTo(p):(e.copyAttributes(p),d&&e.getDirection()&&\n(p.removeStyle(\"direction\"),p.removeAttribute(\"dir\")),e.moveChildren(p),e.remove()),p.appendTo(l);d&&m&&l.setAttribute(\"dir\",d);k?l.insertBefore(k):l.appendTo(a)}}else this.state==CKEDITOR.TRISTATE_ON&&r[d.root.getName()]&&C.call(this,c,d,h);for(l=0;l<n.length;l++)A(n[l]);CKEDITOR.dom.element.clearAllMarkers(h);f.selectBookmarks(j);c.focus()},refresh:function(c,j){var f=j.contains(r,1),b=j.blockLimit||j.root;f&&b.contains(f)?this.setState(f.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):\nthis.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add(\"list\",{init:function(c){c.blockless||(c.addCommand(\"numberedlist\",new x(\"numberedlist\",\"ol\")),c.addCommand(\"bulletedlist\",new x(\"bulletedlist\",\"ul\")),c.ui.addButton&&(c.ui.addButton(\"NumberedList\",{label:c.lang.list.numberedlist,command:\"numberedlist\",directional:!0,toolbar:\"list,10\"}),c.ui.addButton(\"BulletedList\",{label:c.lang.list.bulletedlist,command:\"bulletedlist\",directional:!0,toolbar:\"list,20\"})),c.on(\"key\",function(j){var f=j.data.keyCode;\nif(c.mode==\"wysiwyg\"&&f in{8:1,46:1}){var b=c.getSelection().getRanges()[0],i=b.startPath();if(b.collapsed){var i=new CKEDITOR.dom.elementPath(b.startContainer),e=f==8,h=c.editable(),g=new CKEDITOR.dom.walker(b.clone());g.evaluator=function(a){return q(a)&&!u(a)};g.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(\"table\"))};f=b.clone();if(e){var a,d;if((a=i.contains(r))&&b.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is(\"li\")&&(a=w(a))){d=a;a=a.getPrevious(q);f.moveToPosition(a&&\nu(a)?a:d,CKEDITOR.POSITION_BEFORE_START)}else{g.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START);g.range.setEnd(b.startContainer,b.startOffset);if((a=g.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in r||a.is(\"li\"))){if(!a.is(\"li\")){g.range.selectNodeContents(a);g.reset();g.evaluator=B;a=g.previous()}d=a;f.moveToElementEditEnd(d)}}if(d){v(c,f,b);j.cancel()}else if((f=i.contains(r))&&b.checkBoundaryOfElement(f,CKEDITOR.START)){d=f.getFirst(q);if(b.checkBoundaryOfElement(d,CKEDITOR.START)){a=\nf.getPrevious(q);if(w(d)){if(a){b.moveToElementEditEnd(a);b.select()}}else c.execCommand(\"outdent\");j.cancel()}}}else if(d=i.contains(\"li\")){g.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);h=(i=d.getLast(q))&&B(i)?i:d;d=0;if((a=g.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in r&&a.equals(i)){d=1;a=g.next()}else b.checkBoundaryOfElement(h,CKEDITOR.END)&&(d=1);if(d&&a){b=b.clone();b.moveToElementEditStart(a);v(c,f,b);j.cancel()}}else{g.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);if((a=g.next())&&\na.type==CKEDITOR.NODE_ELEMENT&&a.is(r)){a=a.getFirst(q);if(i.block&&b.checkStartOfBlock()&&b.checkEndOfBlock()){i.block.remove();b.moveToElementEditStart(a);b.select()}else if(w(a)){b.moveToElementEditStart(a);b.select()}else{b=b.clone();b.moveToElementEditStart(a);v(c,f,b)}j.cancel()}}setTimeout(function(){c.selectionChange(1)})}}}))}})})();(function(){function p(d,i){this.name=i;if(this.useIndentClasses=d.config.indentClasses&&0<d.config.indentClasses.length){this.classNameRegex=RegExp(\"(?:^|\\\\s+)(\"+d.config.indentClasses.join(\"|\")+\")(?=$|\\\\s)\");this.indentClassMap={};for(var a=0;a<d.config.indentClasses.length;a++)this.indentClassMap[d.config.indentClasses[a]]=a+1}this.startDisabled=\"outdent\"==i}function r(d,i){return\"ltr\"==(i||d.getComputedStyle(\"direction\"))?\"margin-left\":\"margin-right\"}function q(d){return d.type==CKEDITOR.NODE_ELEMENT&&\nd.is(\"li\")}var m={ol:1,ul:1},t=CKEDITOR.dom.walker.whitespaces(!0),u=CKEDITOR.dom.walker.bookmark(!1,!0);p.prototype={context:\"p\",refresh:function(d,i){var a=i&&i.contains(m),f=i.block||i.blockLimit;a?this.setState(CKEDITOR.TRISTATE_OFF):!this.useIndentClasses&&\"indent\"==this.name?this.setState(CKEDITOR.TRISTATE_OFF):f?this.useIndentClasses?(a=f.$.className.match(this.classNameRegex),f=0,a&&(a=a[1],f=this.indentClassMap[a]),\"outdent\"==this.name&&!f||\"indent\"==this.name&&f==d.config.indentClasses.length?\nthis.setState(CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_OFF)):(a=parseInt(f.getStyle(r(f)),10),isNaN(a)&&(a=0),0>=a?this.setState(CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_OFF)):this.setState(CKEDITOR.TRISTATE_DISABLED)},exec:function(d){function i(n){for(var h=l.startContainer,b=l.endContainer;h&&!h.getParent().equals(n);)h=h.getParent();for(;b&&!b.getParent().equals(n);)b=b.getParent();if(h&&b){for(var c=h,h=[],a=!1;!a;)c.equals(b)&&(a=!0),h.push(c),c=c.getNext();\nif(!(1>h.length)){c=n.getParents(!0);for(b=0;b<c.length;b++)if(c[b].getName&&m[c[b].getName()]){n=c[b];break}for(var c=\"indent\"==e.name?1:-1,b=h[0],h=h[h.length-1],a=CKEDITOR.plugins.list.listToArray(n,o),k=a[h.getCustomData(\"listarray_index\")].indent,b=b.getCustomData(\"listarray_index\");b<=h.getCustomData(\"listarray_index\");b++)if(a[b].indent+=c,0<c){var i=a[b].parent;a[b].parent=new CKEDITOR.dom.element(i.getName(),i.getDocument())}for(b=h.getCustomData(\"listarray_index\")+1;b<a.length&&a[b].indent>\nk;b++)a[b].indent+=c;h=CKEDITOR.plugins.list.arrayToList(a,o,null,d.config.enterMode,n.getDirection());if(\"outdent\"==e.name){var j;if((j=n.getParent())&&j.is(\"li\"))for(var c=h.listNode.getChildren(),f=[],g,b=c.count()-1;0<=b;b--)(g=c.getItem(b))&&(g.is&&g.is(\"li\"))&&f.push(g)}h&&h.listNode.replace(n);if(f&&f.length)for(b=0;b<f.length;b++){for(g=n=f[b];(g=g.getNext())&&g.is&&g.getName()in m;)CKEDITOR.env.ie&&!n.getFirst(function(b){return t(b)&&u(b)})&&n.append(l.document.createText(\" \")),n.append(g);\nn.insertAfter(j)}}}}function a(){var a=l.createIterator(),e=d.config.enterMode;a.enforceRealBlocks=!0;a.enlargeBr=e!=CKEDITOR.ENTER_BR;for(var b;b=a.getNextParagraph(e==CKEDITOR.ENTER_P?\"p\":\"div\");)f(b)}function f(a,g){if(a.getCustomData(\"indent_processed\"))return!1;if(e.useIndentClasses){var b=a.$.className.match(e.classNameRegex),c=0;b&&(b=b[1],c=e.indentClassMap[b]);\"outdent\"==e.name?c--:c++;if(0>c)return!1;c=Math.min(c,d.config.indentClasses.length);c=Math.max(c,0);a.$.className=CKEDITOR.tools.ltrim(a.$.className.replace(e.classNameRegex,\n\"\"));0<c&&a.addClass(d.config.indentClasses[c-1])}else{b=r(a,g);c=parseInt(a.getStyle(b),10);isNaN(c)&&(c=0);var f=d.config.indentOffset||40,c=c+(\"indent\"==e.name?1:-1)*f;if(0>c)return!1;c=Math.max(c,0);c=Math.ceil(c/f)*f;a.setStyle(b,c?c+(d.config.indentUnit||\"px\"):\"\");\"\"===a.getAttribute(\"style\")&&a.removeAttribute(\"style\")}CKEDITOR.dom.element.setMarker(o,a,\"indent_processed\",1);return!0}for(var e=this,o={},g=d.getSelection(),v=g.createBookmarks(1),l,p=(g&&g.getRanges(1)).createIterator();l=p.getNextRange();){for(var j=\nl.getCommonAncestor();j&&!(j.type==CKEDITOR.NODE_ELEMENT&&m[j.getName()]);)j=j.getParent();if(!j){var k=l.getEnclosedNode();k&&(k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in m)&&(l.setStartAt(k,CKEDITOR.POSITION_AFTER_START),l.setEndAt(k,CKEDITOR.POSITION_BEFORE_END),j=k)}j&&(l.startContainer.type==CKEDITOR.NODE_ELEMENT&&l.startContainer.getName()in m)&&(k=new CKEDITOR.dom.walker(l),k.evaluator=q,l.startContainer=k.next());j&&(l.endContainer.type==CKEDITOR.NODE_ELEMENT&&l.endContainer.getName()in m)&&\n(k=new CKEDITOR.dom.walker(l),k.evaluator=q,l.endContainer=k.previous());if(j){var k=j.getFirst(q),w=!!k.getNext(q),s=l.startContainer;(!k.equals(s)&&!k.contains(s)||!(\"indent\"==e.name||e.useIndentClasses||parseInt(j.getStyle(r(j)),10))||!f(j,!w&&k.getDirection()))&&i(j)}else a()}CKEDITOR.dom.element.clearAllMarkers(o);d.forceNextSelectionCheck();g.selectBookmarks(v)}};CKEDITOR.plugins.add(\"indent\",{requires:\"list\",onLoad:function(){(CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat)&&CKEDITOR.addCss(\".cke_editable ul,.cke_editable ol{\\tmargin-left: 0px;\\tpadding-left: 40px;}\")},\ninit:function(d){d.blockless||(d.addCommand(\"indent\",new p(d,\"indent\")),d.addCommand(\"outdent\",new p(d,\"outdent\")),d.ui.addButton&&(d.ui.addButton(\"Indent\",{label:d.lang.indent.indent,command:\"indent\",directional:!0,toolbar:\"indent,20\"}),d.ui.addButton(\"Outdent\",{label:d.lang.indent.outdent,command:\"outdent\",directional:!0,toolbar:\"indent,10\"})),d.on(\"dirChanged\",function(i){var a=d.createRange();a.setStartBefore(i.data.node);a.setEndAfter(i.data.node);for(var f=new CKEDITOR.dom.walker(a),e;e=f.next();)if(e.type==\nCKEDITOR.NODE_ELEMENT)if(!e.equals(i.data.node)&&e.getDirection()){a.setStartAfter(e);f=new CKEDITOR.dom.walker(a)}else{var o=d.config.indentClasses;if(o)for(var g=i.data.dir==\"ltr\"?[\"_rtl\",\"\"]:[\"\",\"_rtl\"],m=0;m<o.length;m++)if(e.hasClass(o[m]+g[0])){e.removeClass(o[m]+g[0]);e.addClass(o[m]+g[1])}o=e.getStyle(\"margin-right\");g=e.getStyle(\"margin-left\");o?e.setStyle(\"margin-left\",o):e.removeStyle(\"margin-left\");g?e.setStyle(\"margin-right\",g):e.removeStyle(\"margin-right\")}}))}})})();(function(){function m(a,d,b){b=a.config.forceEnterMode||b;if(\"wysiwyg\"!=a.mode)return!1;d||(d=a.config.enterMode);a.elementPath().isContextFor(\"p\")||(d=CKEDITOR.ENTER_BR,b=1);a.fire(\"saveSnapshot\");d==CKEDITOR.ENTER_BR?n(a,d,null,b):o(a,d,null,b);a.fire(\"saveSnapshot\");return!0}function p(a){for(var a=a.getSelection().getRanges(!0),d=a.length-1;0<d;d--)a[d].deleteContents();return a[0]}CKEDITOR.plugins.add(\"enterkey\",{requires:\"indent\",init:function(a){a.addCommand(\"enter\",{modes:{wysiwyg:1},editorFocus:!1,\nexec:function(a){m(a)}});a.addCommand(\"shiftEnter\",{modes:{wysiwyg:1},editorFocus:!1,exec:function(a){\"wysiwyg\"==a.mode&&m(a,a.config.shiftEnterMode,1)}});a.setKeystroke([[13,\"enter\"],[CKEDITOR.SHIFT+13,\"shiftEnter\"]])}});var s=CKEDITOR.dom.walker.whitespaces(),t=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(a,d,b,i){if(b=b||p(a)){var f=b.document,j=b.checkStartOfBlock(),h=b.checkEndOfBlock(),c=a.elementPath(b.startContainer).block;if(j&&h){if(c&&(c.is(\"li\")||c.getParent().is(\"li\"))){a.execCommand(\"outdent\");\nreturn}if(c&&c.getParent().is(\"blockquote\")){c.breakParent(c.getParent());c.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getPrevious().remove();c.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getNext().remove();b.moveToElementEditStart(c);b.select();return}}else if(c&&c.is(\"pre\")&&!h){n(a,d,b,i);return}var c=d==CKEDITOR.ENTER_DIV?\"div\":\"p\",l=b.splitBlock(c);if(l){var d=l.previousBlock,a=l.nextBlock,j=l.wasStartOfBlock,h=l.wasEndOfBlock,g;if(a)g=a.getParent(),g.is(\"li\")&&(a.breakParent(g),\na.move(a.getNext(),1));else if(d&&(g=d.getParent())&&g.is(\"li\"))d.breakParent(g),g=d.getNext(),b.moveToElementEditStart(g),d.move(d.getPrevious());if(!j&&!h){if(a.is(\"li\")){var e=b.clone();e.selectNodeContents(a);e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return!(t(a)||s(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))};(g=e.next())&&(g.type==CKEDITOR.NODE_ELEMENT&&g.is(\"ul\",\"ol\"))&&(CKEDITOR.env.ie?f.createText(\" \"):f.createElement(\"br\")).insertBefore(g)}a&&\nb.moveToElementEditStart(a)}else{var k;if(d){if(d.is(\"li\")||!q.test(d.getName())&&!d.is(\"pre\"))e=d.clone()}else a&&(e=a.clone());e?i&&!e.is(\"li\")&&e.renameNode(c):g&&g.is(\"li\")?e=g:(e=f.createElement(c),d&&(k=d.getDirection())&&e.setAttribute(\"dir\",k));if(f=l.elementPath){i=0;for(g=f.elements.length;i<g;i++){k=f.elements[i];if(k.equals(f.block)||k.equals(f.blockLimit))break;CKEDITOR.dtd.$removeEmpty[k.getName()]&&(k=k.clone(),e.moveChildren(k),e.append(k))}}CKEDITOR.env.ie||e.appendBogus();e.getParent()||\nb.insertNode(e);e.is(\"li\")&&e.removeAttribute(\"value\");if(CKEDITOR.env.ie&&j&&(!h||!d.getChildCount()))b.moveToElementEditStart(h?d:e),b.select();b.moveToElementEditStart(j&&!h?a:e)}b.select();b.scrollIntoView()}}},enterBr:function(a,d,b,i){if(b=b||p(a)){var f=b.document,j=b.checkEndOfBlock(),h=new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),c=h.block,h=c&&h.block.getName();!i&&\"li\"==h?o(a,d,b,i):(!i&&j&&q.test(h)?(j=c.getDirection())?(f=f.createElement(\"div\"),f.setAttribute(\"dir\",\nj),f.insertAfter(c),b.setStart(f,0)):(f.createElement(\"br\").insertAfter(c),CKEDITOR.env.gecko&&f.createText(\"\").insertAfter(c),b.setStartAt(c.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(c=\"pre\"==h&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?f.createText(\"\\r\"):f.createElement(\"br\"),b.deleteContents(),b.insertNode(c),CKEDITOR.env.ie?b.setStartAt(c,CKEDITOR.POSITION_AFTER_END):(f.createText(\"﻿\").insertAfter(c),j&&c.getParent().appendBogus(),c.getNext().$.nodeValue=\n\"\",b.setStartAt(c.getNext(),CKEDITOR.POSITION_AFTER_START))),b.collapse(!0),b.select(),b.scrollIntoView())}}};var r=CKEDITOR.plugins.enterkey,n=r.enterBr,o=r.enterBlock,q=/^h[1-6]$/})();(function(){function j(a,b){var d={},e=[],f={nbsp:\" \",shy:\"­\",gt:\">\",lt:\"<\",amp:\"&\",apos:\"'\",quot:'\"'},a=a.replace(/\\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(a,h){var c=b?\"&\"+h+\";\":f[h];d[c]=b?f[h]:\"&\"+h+\";\";e.push(c);return\"\"});if(!b&&a){var a=a.split(\",\"),c=document.createElement(\"div\"),g;c.innerHTML=\"&\"+a.join(\";&\")+\";\";g=c.innerHTML;c=null;for(c=0;c<g.length;c++){var i=g.charAt(c);d[i]=\"&\"+a[c]+\";\";e.push(i)}}d.regex=e.join(b?\"|\":\"\");return d}CKEDITOR.plugins.add(\"entities\",{afterInit:function(a){var b=\na.config;if(a=(a=a.dataProcessor)&&a.htmlFilter){var d=[];!1!==b.basicEntities&&d.push(\"nbsp,gt,lt,amp\");b.entities&&(d.length&&d.push(\"quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro\"),\nb.entities_latin&&d.push(\"Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml\"),b.entities_greek&&d.push(\"Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv\"),\nb.entities_additional&&d.push(b.entities_additional));var e=j(d.join(\",\")),f=e.regex?\"[\"+e.regex+\"]\":\"a^\";delete e.regex;b.entities&&b.entities_processNumerical&&(f=\"[^ -~]|\"+f);var f=RegExp(f,\"g\"),c=function(a){return b.entities_processNumerical==\"force\"||!e[a]?\"&#\"+a.charCodeAt(0)+\";\":e[a]},g=j(\"nbsp,gt,lt,amp,shy\",!0),i=RegExp(g.regex,\"g\"),k=function(a){return g[a]};a.addRules({text:function(a){return a.replace(i,k).replace(f,c)}})}}})})();CKEDITOR.config.basicEntities=!0;\nCKEDITOR.config.entities=!0;CKEDITOR.config.entities_latin=!0;CKEDITOR.config.entities_greek=!0;CKEDITOR.config.entities_additional=\"#39\";CKEDITOR.plugins.add(\"popup\");\nCKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(e,a,b,d){a=a||\"80%\";b=b||\"70%\";\"string\"==typeof a&&(1<a.length&&\"%\"==a.substr(a.length-1,1))&&(a=parseInt(window.screen.width*parseInt(a,10)/100,10));\"string\"==typeof b&&(1<b.length&&\"%\"==b.substr(b.length-1,1))&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>a&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10),d=(d||\"location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes\")+\",width=\"+\na+\",height=\"+b+\",top=\"+f+\",left=\"+g,c=window.open(\"\",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(\" chrome/\")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+\"=\"+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf(\"?\")?\"&\":\"?\")+d.join(\"&\")}function i(a){a+=\"\";return a.charAt(0).toUpperCase()+a.substr(1)}function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config[\"filebrowser\"+i(a.getName())+\"WindowWidth\"]||c.config.filebrowserWindowWidth||\"80%\",a=c.config[\"filebrowser\"+i(a.getName())+\"WindowHeight\"]||c.config.filebrowserWindowHeight||\"70%\",\nb=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getInputElement().$.value||!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getAction()?!1:!0}function m(a,c,d){var b=d.params||{};\nb.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function j(a,c,d,b){var e,g;for(g in b)if(e=b[g],(\"hbox\"==e.type||\"vbox\"==e.type||\"fieldset\"==e.type)&&j(a,c,d,e.children),e.filebrowser)if(\"string\"==typeof e.filebrowser&&(e.filebrowser={action:\"fileButton\"==e.type?\"QuickUpload\":\"Browse\",target:e.filebrowser}),\"Browse\"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config[\"filebrowser\"+i(c)+\"BrowseUrl\"],void 0===\nf&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=k,e.filebrowser.url=f,e.hidden=!1)}else if(\"QuickUpload\"==e.filebrowser.action&&e[\"for\"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config[\"filebrowser\"+i(c)+\"UploadUrl\"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;return h&&h.call(b,a)===false?false:l.call(b,a)};e.filebrowser.url=f;e.hidden=!1;m(a,d.getContents(e[\"for\"][0]).get(e[\"for\"][1]),e.filebrowser)}}function h(a,c,d){if(-1!==d.indexOf(\";\")){for(var d=\nd.split(\";\"),b=0;b<d.length;b++)if(h(a,c,d[b]))return!0;return!1}return(a=a.getContents(c).get(d).filebrowser)&&a.url}function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrowserSe[\"for\"],e=this._.filebrowserSe.filebrowser.onSelect;b&&d.getContentElement(b[0],b[1]).reset();if(!(\"function\"==typeof c&&!1===c.call(this._.filebrowserSe))&&!(e&&!1===e.call(this._.filebrowserSe,a,c))&&(\"string\"==typeof c&&c&&alert(c),a&&(b=this._.filebrowserSe,d=b.getDialog(),b=b.filebrowser.target||null)))if(b=\nb.split(\":\"),e=d.getContentElement(b[0],b[1]))e.setValue(a),d.selectPage(b[0])}CKEDITOR.plugins.add(\"filebrowser\",{requires:\"popup\",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(n,a);a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on(\"dialogDefinition\",function(a){var c=a.data.definition,d,b;for(b in c.contents)if(d=c.contents[b])j(a.editor,a.data.name,c,d.elements),d.hidden&&d.filebrowser&&(d.hidden=!h(c,d.id,d.filebrowser))})})();(function(){function t(a){var e=\"left\"==a?\"pageXOffset\":\"pageYOffset\";return e in g.$?g.$[e]:CKEDITOR.document.$.documentElement[\"left\"==a?\"scrollLeft\":\"scrollTop\"]}function p(a){var e,f=a.config,p=f.floatSpaceDockedOffsetX||0,o=f.floatSpaceDockedOffsetY||0,u=f.floatSpacePinnedOffsetX||0,q=f.floatSpacePinnedOffsetY||0,i=function(c){function f(a,c,b){d.setStyle(c,s(b));d.setStyle(\"position\",a)}function j(a){var c=n.getDocumentPosition();switch(a){case \"top\":f(\"absolute\",\"top\",c.y-l-o);break;case \"pin\":f(\"fixed\",\n\"top\",q);break;case \"bottom\":f(\"absolute\",\"top\",c.y+(b.height||b.bottom-b.top)+o)}e=a}\"focus\"==c.name&&d.show();d.removeStyle(\"left\");d.removeStyle(\"right\");var n=a.editable(),k=d.getClientRect(),b=n.getClientRect(),l=k.height,r=t(\"left\");if(e){\"top\"==e&&k.top<q?j(\"pin\"):\"pin\"==e?b.top>o+l?j(\"top\"):b.bottom-k.bottom<l&&j(\"bottom\"):\"bottom\"==e&&(b.top>o+l?j(\"top\"):b.bottom>2*l+q&&j(\"pin\"));var c=g.getViewPaneSize(),h=c.width/2,h=0<b.left&&b.right<c.width&&b.width>k.width?\"rtl\"==a.config.contentsLangDirection?\n\"right\":\"left\":h-b.left>b.right-h?\"left\":\"right\",m;k.width>c.width?(h=\"left\",m=0):(m=\"left\"==h?0<b.left?b.left:0:b.right<c.width?c.width-b.right:0,m+k.width>c.width&&(h=\"left\"==h?\"right\":\"left\",m=0));d.setStyle(h,s((\"pin\"==e?u:p)+m+(\"pin\"==e?0:r)))}else e=\"pin\",j(\"pin\"),i(c)},f=CKEDITOR.document.getBody(),r={id:a.id,name:a.name,langDir:a.lang.dir,langCode:a.langCode},n=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html;if(n){var d=f.append(CKEDITOR.dom.element.createFromHtml(v.output(CKEDITOR.tools.extend({topId:a.ui.spaceId(\"top\"),\ncontent:n,style:\"display:none;z-index:\"+(a.config.baseFloatZIndex-1)},r))));d.unselectable();d.on(\"mousedown\",function(a){a=a.data;a.getTarget().hasAscendant(\"a\",1)||a.preventDefault()});a.on(\"focus\",function(a){i(a);g.on(\"scroll\",i);g.on(\"resize\",i)});a.on(\"blur\",function(){d.hide();g.removeListener(\"scroll\",i);g.removeListener(\"resize\",i)});a.on(\"destroy\",function(){g.removeListener(\"scroll\",i);g.removeListener(\"resize\",i);d.clearCustomData();d.remove()});a.focusManager.hasFocus&&d.show();a.focusManager.add(d,\n1)}}var v=CKEDITOR.addTemplate(\"floatcontainer\",'<div id=\"cke_{name}\" class=\"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'\" dir=\"{langDir}\" title=\"'+(CKEDITOR.env.gecko?\" \":\"\")+'\" lang=\"{langCode}\" role=\"application\" style=\"{style}\"><div class=\"cke_inner\"><div id=\"{topId}\" class=\"cke_top\" role=\"presentation\">{content}</div></div></div>');CKEDITOR.plugins.add(\"floatingspace\",{init:function(a){a.on(\"contentDom\",function(){p(a)})}});var g=CKEDITOR.document.getWindow(),\ns=CKEDITOR.tools.cssLength})();CKEDITOR.plugins.add(\"listblock\",{requires:\"panel\",onLoad:function(){var e=CKEDITOR.addTemplate(\"panel-list\",'<ul role=\"presentation\" class=\"cke_panel_list\">{items}</ul>'),f=CKEDITOR.addTemplate(\"panel-list-item\",'<li id=\"{id}\" class=\"cke_panel_listItem\" role=presentation><a id=\"{id}_option\" _cke_focus=1 hidefocus=true title=\"{title}\" href=\"javascript:void(\\'{val}\\')\"  {onclick}=\"CKEDITOR.tools.callFunction({clickFn},\\'{val}\\'); return false;\" role=\"option\">{text}</a></li>'),g=CKEDITOR.addTemplate(\"panel-list-group\",\n'<h1 id=\"{id}\" class=\"cke_panel_grouptitle\" role=\"presentation\" >{label}</h1>');CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var b=b||{},c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c[\"aria-multiselectable\"]=!0);!c.role&&(c.role=\"listbox\");this.base.apply(this,arguments);c=this.keys;c[40]=\"next\";\nc[9]=\"next\";c[38]=\"prev\";c[CKEDITOR.SHIFT+9]=\"prev\";c[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(c[13]=\"mouseup\");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=e.output({items:this._.pendingList.join(\"\")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,\nb)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;a={id:d,val:a,onclick:CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\",clickFn:this._.getClick(),title:c||a,text:b||a};this._.pendingList.push(f.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(g.output({id:b,label:a}))},commit:function(){this._.close();\nthis.element.appendHtml(this._.pendingHtml.join(\"\"));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle(\"display\",\"none\"),b&&\"ul\"==b.getName()&&b.setStyle(\"display\",\"none\"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle(\"display\",\"none\")},showAll:function(){var a=this._.items,b=\nthis._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle(\"display\",\"\");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle(\"display\",\"\"),d&&\"ul\"==d.getName()&&d.setStyle(\"display\",\"\")},mark:function(a){this.multiSelect||this.unmarkAll();var a=this._.items[a],b=this.element.getDocument().getById(a);b.addClass(\"cke_selected\");this.element.getDocument().getById(a+\"_option\").setAttribute(\"aria-selected\",!0);this.onMark&&this.onMark(b)},unmark:function(a){var b=this.element.getDocument(),\na=this._.items[a],c=b.getById(a);c.removeClass(\"cke_selected\");b.getById(a+\"_option\").removeAttribute(\"aria-selected\");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass(\"cke_selected\");b.getById(d+\"_option\").removeAttribute(\"aria-selected\")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass(\"cke_selected\")},focus:function(a){this._.focusIndex=\n-1;if(a){for(var b=this.element.getDocument().getById(this._.items[a]).getFirst(),a=this.element.getElementsByTag(\"a\"),c,d=-1;c=a.getItem(++d);)if(c.equals(b)){this._.focusIndex=d;break}setTimeout(function(){b.focus()},0)}}}})}});CKEDITOR.plugins.add(\"richcombo\",{requires:\"floatpanel,listblock,button\",beforeInit:function(c){c.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}});\n(function(){var c='<span id=\"{id}\" class=\"cke_combo cke_combo__{name} {cls}\" role=\"presentation\"><span id=\"{id}_label\" class=\"cke_combo_label\">{label}</span><a class=\"cke_combo_button\" hidefocus=true title=\"{title}\" tabindex=\"-1\"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?\"\":'\" href=\"javascript:void(\\'{titleJs}\\')\"')+' hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"true\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c+=' onkeypress=\"return false;\"';\nCKEDITOR.env.gecko&&(c+=' onblur=\"this.style.cssText = this.style.cssText;\"');var c=c+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event,this);\" onmousedown=\"return CKEDITOR.tools.callFunction({mousedownFn},event);\"  onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span id=\"{id}_text\" class=\"cke_combo_text cke_combo_inlinelabel\">{label}</span><span class=\"cke_combo_open\"><span class=\"cke_combo_arrow\">'+\n(CKEDITOR.env.hc?\"&#9660;\":CKEDITOR.env.air?\"&nbsp;\":\"\")+\"</span></span></a></span>\"),h=CKEDITOR.addTemplate(\"combo\",c);CKEDITOR.UI_RICHCOMBO=\"richcombo\";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className=\"cke_combopanel\";a.block={multiSelect:a.multiSelect,\nattributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join(\"\")},render:function(a,b){function j(){var d=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;this.setState(a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:d);this.setValue(\"\")}var c=CKEDITOR.env,g=\"cke_\"+this.id,e=CKEDITOR.tools.addFunction(function(b){i&&(a.unlockSelection(1),i=0);d.execute(b)},this),f=this,d={id:g,combo:this,\nfocus:function(){CKEDITOR.document.getById(g).getChild(1).focus()},execute:function(d){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var c=f.getValue();c?b.list.mark(c):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(d),4)}},clickFn:e};a.on(\"mode\",j,this);!this.readOnly&&a.on(\"readOnly\",j,this);var k=CKEDITOR.tools.addFunction(function(a,b){var a=new CKEDITOR.dom.event(a),c=a.getKeystroke();switch(c){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,\nb);break;default:d.onkey(d,c)}a.preventDefault()}),l=CKEDITOR.tools.addFunction(function(){d.onfocus&&d.onfocus()}),i=0,m=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var b=a.editable();b.isInline()&&b.hasFocus&&(a.lockSelection(),i=1)}});d.keyDownFn=k;c={id:g,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||\"\",titleJs:c.gecko&&10900<=c.version&&!c.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),keydownFn:k,mousedownFn:m,focusFn:l,clickFn:e};h.output(c,b);\nif(this.onRender)this.onRender();return d},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,c=this._.panelDefinition.block,h=b.parent||CKEDITOR.document.getBody(),g=\"cke_combopanel__\"+this.name,e=new CKEDITOR.ui.floatPanel(a,h,b),f=e.addListBlock(this.id,c),d=this;e.onShow=function(){this.element.addClass(g);d.setState(CKEDITOR.TRISTATE_ON);f.focus(!f.multiSelect&&d.getValue());d._.on=1;d.editorFocus&&a.focus();if(d.onOpen)d.onOpen()};e.onHide=function(b){this.element.removeClass(g);\nd.setState(d.modes&&d.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);d._.on=0;if(!b&&d.onClose)d.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){d.onClick&&d.onClick.call(d,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){d._.on=0;d.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var c=this.document.getById(\"cke_\"+this.id+\"_text\");c&&(!a&&!b?(b=this.label,c.addClass(\"cke_combo_inlinelabel\")):\nc.removeClass(\"cke_combo_inlinelabel\"),c.setText(\"undefined\"!=typeof b?b:a))},getValue:function(){return this._.value||\"\"},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},showAll:function(){this._.list.showAll()},add:function(a,b,c){this._.items[a]=c||a;this._.list.add(a,b,c)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),\nthis._.committed=1,CKEDITOR.ui.fire(\"ready\",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById(\"cke_\"+this.id);b.setState(a,\"cke_combo\");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute(\"aria-disabled\",!0):b.removeAttribute(\"aria-disabled\");this._.state=a}},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},\nstatics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();CKEDITOR.plugins.add(\"format\",{requires:\"richcombo\",init:function(a){if(!a.blockless){for(var g=a.config,c=a.lang.format,j=g.format_tags.split(\";\"),d={},h=0;h<j.length;h++){var i=j[h];d[i]=new CKEDITOR.style(g[\"format_\"+i]);d[i]._.enterMode=a.config.enterMode}a.ui.addRichCombo(\"Format\",{label:c.label,title:c.panelTitle,toolbar:\"styles,20\",panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(g.contentsCss),multiSelect:!1,attributes:{\"aria-label\":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);\nfor(var a in d){var e=c[\"tag_\"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire(\"saveSnapshot\");var b=d[b],e=a.elementPath();a[b.checkActive(e)?\"removeStyle\":\"applyStyle\"](b);setTimeout(function(){a.fire(\"saveSnapshot\")},0)},onRender:function(){a.on(\"selectionChange\",function(b){var e=this.getValue(),b=b.data.path,c=!a.readOnly&&b.isContextFor(\"p\");this[c?\"enable\":\"disable\"]();if(c){for(var f in d)if(d[f].checkActive(b)){f!=e&&this.setValue(f,a.lang.format[\"tag_\"+f]);return}this.setValue(\"\")}},\nthis)}})}}});CKEDITOR.config.format_tags=\"p;h1;h2;h3;h4;h5;h6;pre;address;div\";CKEDITOR.config.format_p={element:\"p\"};CKEDITOR.config.format_div={element:\"div\"};CKEDITOR.config.format_pre={element:\"pre\"};CKEDITOR.config.format_address={element:\"address\"};CKEDITOR.config.format_h1={element:\"h1\"};CKEDITOR.config.format_h2={element:\"h2\"};CKEDITOR.config.format_h3={element:\"h3\"};CKEDITOR.config.format_h4={element:\"h4\"};CKEDITOR.config.format_h5={element:\"h5\"};CKEDITOR.config.format_h6={element:\"h6\"};CKEDITOR.plugins.add(\"htmlwriter\",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||\"\\t\";b.dataProcessor.writer=a}});\nCKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars=\"\\t\";this.selfClosingEnd=\" />\";this.lineBreakChars=\"\\n\";this.sortAttributes=1;this._.indent=0;this._.indentation=\"\";this._.inPre=0;this._.rules={};var b=CKEDITOR.dtd,a;for(a in CKEDITOR.tools.extend({},b.$nonBodyContent,b.$block,b.$listItem,b.$tableContent))this.setRules(a,{indent:!b[a][\"#\"],breakBeforeOpen:1,breakBeforeClose:!b[a][\"#\"],breakAfterClose:1,needsSpace:a in\nb.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules(\"br\",{breakAfterOpen:1});this.setRules(\"title\",{indent:0,breakAfterOpen:0});this.setRules(\"style\",{indent:0,breakBeforeClose:1});this.setRules(\"pre\",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&(a&&a.needsSpace&&this._.needsSpace)&&this._.output.push(\"\\n\");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push(\"<\",b);this._.afterCloser=0},\nopenTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push(\">\"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();\"pre\"==b&&(this._.inPre=1)},attribute:function(b,a){\"string\"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,\"&\")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(\" \",b,'=\"',a,'\"')},closeTag:function(b){var a=this._.rules[b];\na&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push(\"</\",b,\">\");\"pre\"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation();\nthis._.output.push(\"<\\!--\",b,\"--\\>\")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation=\"\";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement(\"hr\");a.insertElement(b)}};CKEDITOR.plugins.add(\"horizontalrule\",{init:function(a){a.blockless||(a.addCommand(\"horizontalrule\",b),a.ui.addButton&&a.ui.addButton(\"HorizontalRule\",{label:a.lang.horizontalrule.toolbar,command:\"horizontalrule\",toolbar:\"insert,40\"}))}})})();(function(){function n(a){var c=this.editor,d=a.document,b=d.body;(a=d.getElementById(\"cke_actscrpt\"))&&a.parentNode.removeChild(a);(a=d.getElementById(\"cke_shimscrpt\"))&&a.parentNode.removeChild(a);CKEDITOR.env.gecko&&(b.contentEditable=!1,2E4>CKEDITOR.env.version&&(b.innerHTML=b.innerHTML.replace(/^.*<\\!-- cke-content-start --\\>/,\"\"),setTimeout(function(){var a=new CKEDITOR.dom.range(new CKEDITOR.dom.document(d));a.setStart(new CKEDITOR.dom.node(b),0);c.getSelection().selectRanges([a])},0)));b.contentEditable=\n!0;CKEDITOR.env.ie&&(b.hideFocus=!0,b.disabled=!0,b.removeAttribute(\"disabled\"));delete this._.isLoadingData;this.$=b;d=new CKEDITOR.dom.document(d);this.setup();CKEDITOR.env.ie&&(d.getDocumentElement().addClass(d.$.compatMode),c.config.enterMode!=CKEDITOR.ENTER_P&&d.on(\"selectionchange\",function(){var a=d.getBody(),b=c.getSelection(),e=b&&b.getRanges()[0];e&&(a.getHtml().match(/^<p>&nbsp;<\\/p>$/i)&&e.startContainer.equals(a))&&setTimeout(function(){e=c.getSelection().getRanges()[0];if(!e.startContainer.equals(\"body\")){a.getFirst().remove(1);\ne.moveToElementEditEnd(a);e.select()}},0)}));CKEDITOR.env.gecko&&CKEDITOR.tools.setTimeout(o,0,this,c);try{c.document.$.execCommand(\"2D-position\",!1,!0)}catch(e){}try{c.document.$.execCommand(\"enableInlineTableEditing\",!1,!c.config.disableNativeTableHandles)}catch(f){}if(c.config.disableObjectResizing)try{this.getDocument().$.execCommand(\"enableObjectResizing\",!1,!1)}catch(g){this.attachListener(this,CKEDITOR.env.ie?\"resizestart\":\"resize\",function(a){a.data.preventDefault()})}(CKEDITOR.env.gecko||\nCKEDITOR.env.ie&&\"CSS1Compat\"==c.document.$.compatMode)&&this.attachListener(this,\"keydown\",function(a){var b=a.data.getKeystroke();if(b==33||b==34)if(CKEDITOR.env.ie)setTimeout(function(){c.getSelection().scrollIntoView()},0);else if(c.window.$.innerHeight>this.$.offsetHeight){var d=c.createRange();d[b==33?\"moveToElementEditStart\":\"moveToElementEditEnd\"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(d,\"blur\",function(){try{d.$.selection.empty()}catch(a){}});c.document.getElementsByTag(\"title\").getItem(0).data(\"cke-title\",\nc.document.$.title);CKEDITOR.env.ie&&(c.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){c.fire(\"contentDom\");if(this._.isPendingFocus){c.focus();this._.isPendingFocus=false}setTimeout(function(){c.fire(\"dataReady\")},0);CKEDITOR.env.ie&&setTimeout(function(){if(c.document){var a=c.document.$.body;a.runtimeStyle.marginBottom=\"0px\";a.runtimeStyle.marginBottom=\"\"}},1E3)},0,this)}function p(a){a.checkDirty()||setTimeout(function(){a.resetDirty()},0)}function o(a){if(!a.readOnly){var c=\na.window,d=a.document,b=d.getBody(),e=b.getFirst(),f=b.getChildren().count();if(!f||1==f&&e.type==CKEDITOR.NODE_ELEMENT&&e.hasAttribute(\"_moz_editor_bogus_node\")){p(a);var e=CKEDITOR.document,g=e.getDocumentElement(),h=g.$.scrollTop,i=g.$.scrollLeft,j=d.$.createEvent(\"KeyEvents\");j.initKeyEvent(\"keypress\",!0,!0,c.$,!1,!1,!1,!1,0,32);d.$.dispatchEvent(j);(h!=g.$.scrollTop||i!=g.$.scrollLeft)&&e.getWindow().$.scrollTo(i,h);f&&b.getFirst().remove();d.getBody().appendBogus();a=a.createRange();a.setStartAt(b,\nCKEDITOR.POSITION_AFTER_START);a.select()}}}function q(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push(\"html.CSS1Compat [contenteditable=false]{min-height:0 !important}\");var c=[],d;for(d in CKEDITOR.dtd.$removeEmpty)c.push(\"html.CSS1Compat \"+d+\"[contenteditable=false]\");a.push(c.join(\",\")+\"{display:inline-block}\")}else CKEDITOR.env.gecko&&(a.push(\"html{height:100% !important}\"),a.push(\"img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}\"));a.push(\"html{cursor:text;*cursor:auto}\");\na.push(\"img,input,textarea{cursor:default}\");return a.join(\"\\n\")}CKEDITOR.plugins.add(\"wysiwygarea\",{init:function(a){a.addMode(\"wysiwyg\",function(c){function d(d){d&&d.removeListener();a.editable(new k(a,b.$.contentWindow.document.body));a.setData(a.getData(1),c)}var b=CKEDITOR.document.createElement(\"iframe\");b.setStyles({width:\"100%\",height:\"100%\"});b.addClass(\"cke_wysiwyg_frame cke_reset\");var e=a.ui.space(\"contents\");e.append(b);var f=\"document.open();\"+(l?'document.domain=\"127.0.0.1'+document.domain+\n'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\",f=CKEDITOR.env.air?\"javascript:void(0)\":CKEDITOR.env.ie?\"javascript:void(function(){\"+encodeURIComponent(f)+\"}())\":\"\",g=CKEDITOR.env.ie||CKEDITOR.env.gecko;if(g)b.on(\"load\",d);var h=[a.lang.editor,a.name].join(),i=a.lang.common.editorHelp;CKEDITOR.env.ie&&(h+=\", \"+i);var j=CKEDITOR.tools.getNextId(),m=CKEDITOR.dom.element.createFromHtml('<span id=\"'+j+'\" class=\"cke_voice_label\">'+i+\"</span>\");e.append(m,1);a.on(\"beforeModeUnload\",function(a){a.removeListener();m.remove()});\nb.setAttributes({frameBorder:0,\"aria-describedby\":j,title:h,src:f,tabIndex:a.tabIndex,allowTransparency:\"true\"});!g&&d();CKEDITOR.env.webkit&&(f=function(){e.setStyle(\"width\",\"100%\");b.hide();b.setSize(\"width\",e.getSize(\"width\"));e.removeStyle(\"width\");b.show()},b.setCustomData(\"onResize\",f),CKEDITOR.document.getWindow().on(\"resize\",f));a.fire(\"ariaWidget\",b)})}});var l=CKEDITOR.env.isCustomDomain(),k=CKEDITOR.tools.createClass({$:function(a){this.base.apply(this,arguments);this._.frameLoadedHandler=\nCKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(n,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute(\"title\")},base:CKEDITOR.editable,proto:{setData:function(a,c){var d=this.editor;if(c)this.setHtml(a);else{this._.isLoadingData=!0;d._.dataStore={id:1};var b=d.config,e=b.fullPage,f=b.docType,g=CKEDITOR.tools.buildStyleHtml(q()).replace(/<style>/,'<style data-cke-temp=\"1\">');e||(g+=CKEDITOR.tools.buildStyleHtml(d.config.contentsCss));var h=b.baseHref?'<base href=\"'+\nb.baseHref+'\" data-cke-temp=\"1\" />':\"\";e&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){d.docType=f=a;return\"\"}).replace(/<\\?xml\\s[^\\?]*\\?>/i,function(a){d.xmlDeclaration=a;return\"\"}));d.dataProcessor&&(a=d.dataProcessor.toHtml(a));e?(/<body[\\s|>]/.test(a)||(a=\"<body>\"+a),/<html[\\s|>]/.test(a)||(a=\"<html>\"+a+\"</html>\"),/<head[\\s|>]/.test(a)?/<title[\\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,\"$&<title></title>\")):a=a.replace(/<html[^>]*>/,\"$&<head><title></title></head>\"),h&&(a=a.replace(/<head>/,\"$&\"+\nh)),a=a.replace(/<\\/head\\s*>/,g+\"$&\"),a=f+a):a=b.docType+'<html dir=\"'+b.contentsLangDirection+'\" lang=\"'+(b.contentsLanguage||d.langCode)+'\"><head><title>'+this._.docTitle+\"</title>\"+h+g+\"</head><body\"+(b.bodyId?' id=\"'+b.bodyId+'\"':\"\")+(b.bodyClass?' class=\"'+b.bodyClass+'\"':\"\")+\">\"+a+\"</body></html>\";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'<body contenteditable=\"true\" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,\"$&<\\!-- cke-content-start --\\>\")));b='<script id=\"cke_actscrpt\" type=\"text/javascript\"'+\n(CKEDITOR.env.ie?' defer=\"defer\" ':\"\")+\">\"+(l?'document.domain=\"127.0.0.1'+document.domain+'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\"+this._.frameLoadedHandler+\",window);wasLoaded=1;}\"+(CKEDITOR.env.ie?\"onload();\":'document.addEventListener(\"DOMContentLoaded\", onload, false );')+\"<\\/script>\";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(b+='<script id=\"cke_shimscrpt\">(function(){var e=\"abbr,article,aside,audio,bdi,canvas,data,datalist,details,figcaption,figure,footer,header,hgroup,mark,meter,nav,output,progress,section,summary,time,video\".split(\",\"),i=e.length;while(i--){document.createElement(e[i])}})()<\\/script>');\na=a.replace(/(?=\\s*<\\/(:?head)>)/,b);this.clearCustomData();this.clearListeners();d.fire(\"contentDomUnload\");var i=this.getDocument();try{i.write(a)}catch(j){setTimeout(function(){i.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();var a=this.editor,c=a.config.fullPage,d=c&&a.docType,b=c&&a.xmlDeclaration,e=this.getDocument(),c=c?e.getDocumentElement().getOuterHtml():e.getBody().getHtml();CKEDITOR.env.gecko&&(c=c.replace(/<br>(?=\\s*(:?$|<\\/body>))/,\"\"));a.dataProcessor&&(c=a.dataProcessor.toDataFormat(c));\nb&&(c=b+\"\\n\"+c);d&&(c=d+\"\\n\"+c);return c},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:k.baseProto.focus.call(this)},detach:function(){var a=this.editor,c=a.document,d=a.window.getFrame();k.baseProto.detach.call(this);this.clearCustomData();c.getDocumentElement().clearCustomData();d.clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);(c=d.removeCustomData(\"onResize\"))&&c.removeListener();a.fire(\"contentDomUnload\");d.remove()}}});CKEDITOR.env.gecko&&function(){var a=\ndocument.body;if(a){var c=a.getAttribute(\"onpageshow\");a.setAttribute(\"onpageshow\",(c?c+\";\":\"\")+'event.persisted&&(function(){var x=CKEDITOR.instances,d,i;for(i in x){d=x[i].document;if(d){d.$.designMode=\"off\";d.$.designMode=\"on\";}}})();')}else window.addEventListener(\"load\",arguments.callee,!1)}()})();CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.contentsCss=CKEDITOR.basePath+\"contents.css\";(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(\"img\")&&!a.data(\"cke-realelement\")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle(\"float\");if(\"inherit\"==a||\"none\"==a)a=0;a||(a=b.getAttribute(\"align\"));return a}CKEDITOR.plugins.add(\"image\",{requires:\"dialog\",init:function(b){CKEDITOR.dialog.add(\"image\",this.path+\"dialogs/image.js\");b.addCommand(\"image\",new CKEDITOR.dialogCommand(\"image\"));b.ui.addButton&&b.ui.addButton(\"Image\",{label:b.lang.common.image,\ncommand:\"image\",toolbar:\"insert,10\"});b.on(\"doubleclick\",function(a){var b=a.data.element;b.is(\"img\")&&(!b.data(\"cke-realelement\")&&!b.isReadOnly())&&(a.data.dialog=\"image\")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:\"image\",group:\"image\"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})},afterInit:function(b){function a(a){var d=b.getCommand(\"justify\"+a);if(d){if(\"left\"==a||\"right\"==a)d.on(\"exec\",function(d){var c=\ne(b),g;c&&(g=f(c),g==a?(c.removeStyle(\"float\"),a==f(c)&&c.removeAttribute(\"align\")):c.setStyle(\"float\",a),d.cancel())});d.on(\"refresh\",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:\"right\"==a||\"left\"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}a(\"left\");a(\"right\");a(\"center\");a(\"block\")}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&\"px\"==d[2])return d[1];if(\"px\"==c[2]&&!d[2])return d[1]+\"px\"}return b}var i=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,j=/^((?:\\d*(?:\\.\\d+))|(?:\\d+))(.*)?$/i,l={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b[\"data-cke-realelement\"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes[\"data-cke-resizable\"]){var c=(new i(a)).rules,a=b.attributes,d=c.width,c=\nc.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}},k=CKEDITOR.plugins.add(\"fakeobjects\",{afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(l)}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(a.getOuterHtml()),\"data-cke-real-node-type\":a.type,alt:e,title:e,align:a.getAttribute(\"align\")||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+\n\"images/spacer.gif\"));c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,c=new i,d=a.getAttribute(\"width\"),a=a.getAttribute(\"height\"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement(\"img\",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(f);f=f.getHtml();b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(f),\n\"data-cke-real-node-type\":a.type,alt:e,title:e,align:a.attributes.align||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+\"images/spacer.gif\"));c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,d=a.attributes,a=new i,c=d.width,d=d.height,void 0!=c&&(a.rules.width=h(c)),void 0!=d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element(\"img\",b)};CKEDITOR.editor.prototype.restoreRealElement=function(a){if(a.data(\"cke-real-node-type\")!=CKEDITOR.NODE_ELEMENT)return null;\nvar b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data(\"cke-realelement\")),this.document);if(a.data(\"cke-resizable\")){var c=a.getStyle(\"width\"),a=a.getStyle(\"height\");c&&b.setAttribute(\"width\",g(b.getAttribute(\"width\"),c));a&&b.setAttribute(\"height\",g(b.getAttribute(\"height\"),a))}return b}})();CKEDITOR.plugins.add(\"link\",{requires:\"dialog,fakeobjects\",onLoad:function(){function b(b){return c.replace(/%1/g,\"rtl\"==b?\"right\":\"left\").replace(/%2/g,\"cke_contents_\"+b)}var a=\"background:url(\"+CKEDITOR.getUrl(this.path+\"images/anchor.png\")+\") no-repeat %1 center;border:1px dotted #00f;\",c=\".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{\"+a+\"padding-%1:18px;cursor:auto;}\"+(CKEDITOR.env.ie?\"a.cke_anchor_empty{display:inline-block;}\":\"\")+\".%2 img.cke_anchor{\"+\na+\"width:16px;min-height:15px;height:1.15em;vertical-align:\"+(CKEDITOR.env.opera?\"middle\":\"text-bottom\")+\";}\";CKEDITOR.addCss(b(\"ltr\")+b(\"rtl\"))},init:function(b){b.addCommand(\"link\",new CKEDITOR.dialogCommand(\"link\"));b.addCommand(\"anchor\",new CKEDITOR.dialogCommand(\"anchor\"));b.addCommand(\"unlink\",new CKEDITOR.unlinkCommand);b.addCommand(\"removeAnchor\",new CKEDITOR.removeAnchorCommand);b.setKeystroke(CKEDITOR.CTRL+76,\"link\");b.ui.addButton&&(b.ui.addButton(\"Link\",{label:b.lang.link.toolbar,command:\"link\",\ntoolbar:\"links,10\"}),b.ui.addButton(\"Unlink\",{label:b.lang.link.unlink,command:\"unlink\",toolbar:\"links,20\"}),b.ui.addButton(\"Anchor\",{label:b.lang.link.anchor.toolbar,command:\"anchor\",toolbar:\"links,30\"}));CKEDITOR.dialog.add(\"link\",this.path+\"dialogs/link.js\");CKEDITOR.dialog.add(\"anchor\",this.path+\"dialogs/anchor.js\");b.on(\"doubleclick\",function(a){var c=CKEDITOR.plugins.link.getSelectedLink(b)||a.data.element;if(!c.isReadOnly())if(c.is(\"a\")){a.data.dialog=c.getAttribute(\"name\")&&(!c.getAttribute(\"href\")||\n!c.getChildCount())?\"anchor\":\"link\";b.getSelection().selectElement(c)}else if(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,c))a.data.dialog=\"anchor\"});b.addMenuItems&&b.addMenuItems({anchor:{label:b.lang.link.anchor.menu,command:\"anchor\",group:\"anchor\",order:1},removeAnchor:{label:b.lang.link.anchor.remove,command:\"removeAnchor\",group:\"anchor\",order:5},link:{label:b.lang.link.menu,command:\"link\",group:\"link\",order:1},unlink:{label:b.lang.link.unlink,command:\"unlink\",group:\"link\",order:5}});b.contextMenu&&\nb.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(b)))return null;var c={};a.getAttribute(\"href\")&&a.getChildCount()&&(c={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});if(a&&a.hasAttribute(\"name\"))c.anchor=c.removeAnchor=CKEDITOR.TRISTATE_OFF;return c})},afterInit:function(b){var a=b.dataProcessor,c=a&&a.dataFilter,a=a&&a.htmlFilter,d=b._.elementsPath&&b._.elementsPath.filters;\nc&&c.addRules({elements:{a:function(a){var c=a.attributes;if(!c.name)return null;var d=!a.children.length;if(CKEDITOR.plugins.link.synAnchorSelector){var a=d?\"cke_anchor_empty\":\"cke_anchor\",e=c[\"class\"];if(c.name&&(!e||0>e.indexOf(a)))c[\"class\"]=(e||\"\")+\" \"+a;d&&CKEDITOR.plugins.link.emptyAnchorFix&&(c.contenteditable=\"false\",c[\"data-cke-editable\"]=1)}else if(CKEDITOR.plugins.link.fakeAnchor&&d)return b.createFakeParserElement(a,\"cke_anchor\",\"anchor\");return null}}});CKEDITOR.plugins.link.emptyAnchorFix&&\na&&a.addRules({elements:{a:function(a){delete a.attributes.contenteditable}}});d&&d.push(function(a,c){if(\"a\"==c&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,a)||a.getAttribute(\"name\")&&(!a.getAttribute(\"href\")||!a.getChildCount())))return\"anchor\"})}});\nCKEDITOR.plugins.link={getSelectedLink:function(b){var a=b.getSelection(),c=a.getSelectedElement();return c&&c.is(\"a\")?c:(a=a.getRanges(!0)[0])?(a.shrink(CKEDITOR.SHRINK_TEXT),b.elementPath(a.getCommonAncestor()).contains(\"a\",1)):null},fakeAnchor:CKEDITOR.env.opera||CKEDITOR.env.webkit,synAnchorSelector:CKEDITOR.env.ie,emptyAnchorFix:CKEDITOR.env.ie&&8>CKEDITOR.env.version,tryRestoreFakeAnchor:function(b,a){if(a&&a.data(\"cke-real-element-type\")&&\"anchor\"==a.data(\"cke-real-element-type\")){var c=b.restoreRealElement(a);\nif(c.data(\"cke-saved-name\"))return c}}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(b){var a=new CKEDITOR.style({element:\"a\",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});b.removeStyle(a)},refresh:function(b,a){var c=a.lastElement&&a.lastElement.getAscendant(\"a\",!0);c&&\"a\"==c.getName()&&c.getAttribute(\"href\")&&c.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1};\nCKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(b){var a=b.getSelection(),c=a.createBookmarks(),d;if(a&&(d=a.getSelectedElement())&&(CKEDITOR.plugins.link.fakeAnchor&&!d.getChildCount()?CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,d):d.is(\"a\")))d.remove(1);else if(d=CKEDITOR.plugins.link.getSelectedLink(b))d.hasAttribute(\"href\")?(d.removeAttributes({name:1,\"data-cke-saved-name\":1}),d.removeClass(\"cke_anchor\")):d.remove(1);a.selectBookmarks(c)}};\nCKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0});(function(){function N(a,b,d){return l(b)&&l(d)&&d.equals(b.getNext(function(a){return!(y(a)||z(a)||o(a))}))}function t(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function H(a){var b=a.element,d;return b&&l(b)?(d=b.getAscendant(a.triggers,!0))&&!d.contains(a.editable)&&!d.equals(a.editable)?d:null:null}function ba(a,b,d){m(a,b);m(a,d);a=b.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function q(a,b,d){return b=b[d?\"getPrevious\":\"getNext\"](function(e){return e&&e.type==\nCKEDITOR.NODE_TEXT&&!y(e)||l(e)&&!o(e)&&!u(a,e)})}function ca(a){var b=a.doc,d=A('<span contenteditable=\"false\" style=\"'+I+\"position:absolute;border-top:1px dashed \"+a.boxColor+'\"></span>',b);p(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[p(A('<span title=\"'+a.editor.lang.magicline.title+'\" contenteditable=\"false\">&#8629;</span>',b),{base:I+\"height:17px;width:17px;\"+(a.rtl?\"left\":\"right\")+\":17px;background:url(\"+this.path+\"images/icon.png) center no-repeat \"+\na.boxColor+\";cursor:pointer;\"+(n.hc?\"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;\":\"\"),looks:[\"top:-8px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px\",1),\"top:-17px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px 2px 0px 0px\",1),\"top:-1px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"0px 0px 2px 2px\",1)]}),p(A(O,b),{base:P+\"left:0px;border-left-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 0 8px 8px;top:-8px\",\"border-width:8px 0 0 8px;top:-8px\",\"border-width:0 0 8px 8px;top:0px\"]}),\np(A(O,b),{base:P+\"right:0px;border-right-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 8px 8px 0;top:-8px\",\"border-width:8px 8px 0 0;top:-8px\",\"border-width:0 8px 8px 0;top:0px\"]})],detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){m(a,this);var e=a.holdDistance,b=this.size;return b&&a.mouse.y>b.top-e&&a.mouse.y<b.bottom+e&&a.mouse.x>b.left-e&&a.mouse.x<b.right+e?!0:!1},place:function(){var e=a.view,b=a.editable,c=a.trigger,d=c.upper,i=c.lower,h=d||i,\nk=h.getParent(),g={};this.trigger=c;d&&m(a,d,!0);i&&m(a,i,!0);m(a,k,!0);a.inInlineMode&&B(a,!0);k.equals(b)?(g.left=e.scroll.x,g.right=-e.scroll.x,g.width=\"\"):(g.left=h.size.left-h.size.margin.left+e.scroll.x-(a.inInlineMode?e.editable.left+e.editable.border.left:0),g.width=h.size.outerWidth+h.size.margin.left+h.size.margin.right+e.scroll.x,g.right=\"\");d&&i?g.top=d.size.margin.bottom===i.size.margin.top?0|d.size.bottom+d.size.margin.bottom/2:d.size.margin.bottom<i.size.margin.top?d.size.bottom+d.size.margin.bottom:\nd.size.bottom+d.size.margin.bottom-i.size.margin.top:d?i||(g.top=d.size.bottom+d.size.margin.bottom):g.top=i.size.top-i.size.margin.top;c.is(w)||g.top>e.scroll.y-15&&g.top<e.scroll.y+5?(g.top=a.inInlineMode?0:e.scroll.y,this.look(w)):c.is(x)||g.top>e.pane.bottom-5&&g.top<e.pane.bottom+15?(g.top=a.inInlineMode?e.editable.height+e.editable.padding.top+e.editable.padding.bottom:e.pane.bottom-1,this.look(x)):(a.inInlineMode&&(g.top-=e.editable.top+e.editable.border.top),this.look(r));a.inInlineMode&&\n(g.top--,g.top+=e.editable.scroll.top,g.left+=e.editable.scroll.left);for(var Q in g)g[Q]=CKEDITOR.tools.cssLength(g[Q]);this.setStyles(g)},look:function(a){if(this.oldLook!=a){for(var d=this.lineChildren.length,c;d--;)(c=this.lineChildren[d]).setAttribute(\"style\",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new J(\"span\",a.doc)});for(b=d.lineChildren.length;b--;)d.lineChildren[b].appendTo(d);d.look(r);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on(\"mouseup\",function(b){d.detach();K(a,function(d){var c=\na.line.trigger;d[c.is(C)?\"insertBefore\":\"insertAfter\"](c.is(C)?c.lower:c.upper)},!0);a.editor.focus();!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();b.data.preventDefault(!0)});d.on(\"mousedown\",function(a){a.data.preventDefault(!0)});a.line=d}function K(a,b,d){var e=new CKEDITOR.dom.range(a.doc),f=a.editor,c;n.ie&&a.enterMode==CKEDITOR.ENTER_BR?c=a.doc.createText(D):(c=new J(a.enterBehavior,a.doc),a.enterMode!=CKEDITOR.ENTER_BR&&a.doc.createText(D).appendTo(c));d&&f.fire(\"saveSnapshot\");\nb(c);e.moveToPosition(c,CKEDITOR.POSITION_AFTER_START);f.getSelection().selectRanges([e]);a.hotNode=c;d&&f.fire(\"saveSnapshot\")}function R(a,b){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){function d(d){var f=n.ie&&9>n.version?\" \":D,c=a.hotNode&&a.hotNode.getText()==f&&a.element.equals(a.hotNode)&&a.lastCmdDirection===!!b;K(a,function(f){c&&a.hotNode&&a.hotNode.remove();f[b?\"insertAfter\":\"insertBefore\"](d);f.setAttributes({\"data-cke-magicline-hot\":1,\"data-cke-magicline-dir\":!!b});a.lastCmdDirection=\n!!b});!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();a.line.detach()}return function(e){e=e.getSelection().getStartElement();if((e=e.getAscendant(S,1))&&!e.equals(a.editable)&&!e.contains(a.editable)){a.element=e;var f=q(a,e,!b),c;l(f)&&f.is(a.triggers)&&f.is(da)&&(!q(a,f,!b)||(c=q(a,f,!b))&&l(c)&&c.is(a.triggers))?d(f):(c=H(a,e),l(c)&&(q(a,c,!b)?(e=q(a,c,!b))&&(l(e)&&e.is(a.triggers))&&d(c):d(c)))}}}()}}function u(a,b){if(!b||!(b.type==CKEDITOR.NODE_ELEMENT&&b.$))return!1;var d=\na.line;return d.wrap.equals(b)||d.wrap.contains(b)}function l(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.$}function o(a){if(!l(a))return!1;var b;if(!(b=T(a)))l(a)?(b={left:1,right:1,center:1},b=!(!b[a.getComputedStyle(\"float\")]&&!b[a.getAttribute(\"align\")])):b=!1;return b}function T(a){return!!{absolute:1,fixed:1,relative:1}[a.getComputedStyle(\"position\")]}function E(a,b){return l(b)?b.is(a.triggers):null}function ea(a,b,d){b=b[d?\"getLast\":\"getFirst\"](function(d){return a.isRelevant(d)&&!d.is(fa)});\nif(!b)return!1;m(a,b);return d?b.size.top>a.mouse.y:b.size.bottom<a.mouse.y}function U(a){var b=a.editable,d=a.mouse,e=a.view,f=a.triggerOffset;B(a);var c=d.y>(a.inInlineMode?e.editable.top+e.editable.height/2:Math.min(e.editable.height,e.pane.height)/2),b=b[c?\"getLast\":\"getFirst\"](function(a){return!(y(a)||z(a))});if(!b)return null;u(a,b)&&(b=a.line.wrap[c?\"getPrevious\":\"getNext\"](function(a){return!(y(a)||z(a))}));if(!l(b)||o(b)||!E(a,b))return null;m(a,b);return!c&&0<=b.size.top&&0<d.y&&d.y<b.size.top+\nf?(a=a.inInlineMode||0===e.scroll.y?w:r,new t([null,b,C,F,a])):c&&b.size.bottom<=e.pane.height&&d.y>b.size.bottom-f&&d.y<e.pane.height?(a=a.inInlineMode||b.size.bottom>e.pane.height-f&&b.size.bottom<e.pane.height?x:r,new t([b,null,V,F,a])):null}function W(a){var b=a.mouse,d=a.view,e=a.triggerOffset,f=H(a);if(!f)return null;m(a,f);var e=Math.min(e,0|f.size.outerHeight/2),c=[],j,i;if(b.y>f.size.top-1&&b.y<f.size.top+e)i=!1;else if(b.y>f.size.bottom-e&&b.y<f.size.bottom+1)i=!0;else return null;if(o(f)||\nea(a,f,i)||f.getParent().is(X))return null;var h=q(a,f,!i);if(h){if(h&&h.type==CKEDITOR.NODE_TEXT)return null;if(l(h)){if(o(h)||!E(a,h)||h.getParent().is(X))return null;c=[h,f][i?\"reverse\":\"concat\"]().concat([L,F])}}else f.equals(a.editable[i?\"getLast\":\"getFirst\"](a.isRelevant))?(B(a),i&&b.y>f.size.bottom-e&&b.y<d.pane.height&&f.size.bottom>d.pane.height-e&&f.size.bottom<d.pane.height?j=x:0<b.y&&b.y<f.size.top+e&&(j=w)):j=r,c=[null,f][i?\"reverse\":\"concat\"]().concat([i?V:C,F,j,f.equals(a.editable[i?\n\"getLast\":\"getFirst\"](a.isRelevant))?i?x:w:r]);return 0 in c?new t(c):null}function M(a,b,d,e){for(var f=function(){var d=n.ie?b.$.currentStyle:a.win.$.getComputedStyle(b.$,\"\");return n.ie?function(a){return d[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){return d.getPropertyValue(a)}}(),c=b.getDocumentPosition(),j={},i={},h={},k={},g=s.length;g--;)j[s[g]]=parseInt(f(\"border-\"+s[g]+\"-width\"),10)||0,h[s[g]]=parseInt(f(\"padding-\"+s[g]),10)||0,i[s[g]]=parseInt(f(\"margin-\"+s[g]),10)||0;(!d||e)&&\nG(a,e);k.top=c.y-(d?0:a.view.scroll.y);k.left=c.x-(d?0:a.view.scroll.x);k.outerWidth=b.$.offsetWidth;k.outerHeight=b.$.offsetHeight;k.height=k.outerHeight-(h.top+h.bottom+j.top+j.bottom);k.width=k.outerWidth-(h.left+h.right+j.left+j.right);k.bottom=k.top+k.outerHeight;k.right=k.left+k.outerWidth;a.inInlineMode&&(k.scroll={top:b.$.scrollTop,left:b.$.scrollLeft});return p({border:j,padding:h,margin:i,ignoreScroll:d},k,!0)}function m(a,b,d){if(!l(b))return b.size=null;if(b.size){if(b.size.ignoreScroll==\nd&&b.size.date>new Date-Y)return null}else b.size={};return p(b.size,M(a,b,d),{date:+new Date},!0)}function B(a,b){a.view.editable=M(a,a.editable,b,!0)}function G(a,b){a.view||(a.view={});var d=a.view;if(b||!(d&&d.date>new Date-Y)){var e=a.win,d=e.getScrollPosition(),e=e.getViewPaneSize();p(a.view,{scroll:{x:d.x,y:d.y,width:a.doc.$.documentElement.scrollWidth-e.width,height:a.doc.$.documentElement.scrollHeight-e.height},pane:{width:e.width,height:e.height,bottom:e.height+d.y},date:+new Date},!0)}}\nfunction ga(a,b,d,e){for(var f=e,c=e,j=0,i=!1,h=!1,k=a.view.pane.height,g=a.mouse;g.y+j<k&&0<g.y-j;){i||(i=b(f,e));h||(h=b(c,e));!i&&0<g.y-j&&(f=d(a,{x:g.x,y:g.y-j}));!h&&g.y+j<k&&(c=d(a,{x:g.x,y:g.y+j}));if(i&&h)break;j+=2}return new t([f,c,null,null])}CKEDITOR.plugins.add(\"magicline\",{init:function(a){var b={};b[CKEDITOR.ENTER_BR]=\"br\";b[CKEDITOR.ENTER_P]=\"p\";b[CKEDITOR.ENTER_DIV]=\"div\";var d=a.config,e=d.magicline_triggerOffset||30,f=d.enterMode,c={editor:a,enterBehavior:b[f],enterMode:f,triggerOffset:e,\nholdDistance:0|e*(d.magicline_holdDistance||0.5),boxColor:d.magicline_color||\"#ff0000\",rtl:\"rtl\"==d.contentsLangDirection,triggers:d.magicline_everywhere?S:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},j,i,h;c.isRelevant=function(a){return l(a)&&!u(c,a)&&!o(a)};a.on(\"contentDom\",function(){var b=a.editable(),e=a.document,f=a.window;p(c,{editable:b,inInlineMode:b.isInline(),doc:e,win:f},!0);c.boundary=c.inInlineMode?c.editable:c.doc.getDocumentElement();b.is(v.$inline)||(c.inInlineMode&&\n!T(b)&&b.setStyles({position:\"relative\",top:null,left:null}),ca.call(this,c),G(c),b.attachListener(a,\"beforeUndoImage\",function(){c.line.detach()}),b.attachListener(a,\"beforeGetData\",function(){c.line.wrap.getParent()&&(c.line.detach(),a.once(\"getData\",function(){c.line.attach()},null,null,1E3))},null,null,0),b.attachListener(c.inInlineMode?e:e.getWindow().getFrame(),\"mouseout\",function(b){if(\"wysiwyg\"==a.mode)if(c.inInlineMode){var d=b.data.$.clientX,b=b.data.$.clientY;G(c);B(c,!0);var e=c.view.editable,\nf=c.view.scroll;if(!(d>e.left-f.x&&d<e.right-f.x)||!(b>e.top-f.y&&b<e.bottom-f.y))clearTimeout(h),h=null,c.line.detach()}else clearTimeout(h),h=null,c.line.detach()}),b.attachListener(b,\"keyup\",function(){c.hiddenMode=0}),b.attachListener(b,\"keydown\",function(b){if(\"wysiwyg\"==a.mode)switch(b=b.data.getKeystroke(),a.getSelection().getStartElement(),b){case 2228240:case 16:c.hiddenMode=1,c.line.detach()}}),b.attachListener(c.inInlineMode?b:e,\"mousemove\",function(b){i=!0;if(!(\"wysiwyg\"!=a.mode||h)){var d=\n{x:b.data.$.clientX,y:b.data.$.clientY};h=setTimeout(function(){c.mouse=d;h=c.trigger=null;G(c);if(i&&!c.hiddenMode&&a.focusManager.hasFocus&&!c.line.mouseNear()&&(c.element=Z(c,!0)))(c.trigger=U(c)||W(c)||$(c))?c.line.attach().place():(c.trigger=null,c.line.detach()),i=!1},30)}}),b.attachListener(f,\"scroll\",function(){\"wysiwyg\"==a.mode&&(c.line.detach(),n.webkit&&(c.hiddenMode=1,clearTimeout(j),j=setTimeout(function(){c.hiddenMode=0},50)))}),b.attachListener(f,\"mousedown\",function(){\"wysiwyg\"==a.mode&&\n(c.line.detach(),c.hiddenMode=1)}),b.attachListener(f,\"mouseup\",function(){c.hiddenMode=0}),a.addCommand(\"accessPreviousSpace\",R(c)),a.addCommand(\"accessNextSpace\",R(c,!0)),a.setKeystroke([[d.magicline_keystrokePrevious,\"accessPreviousSpace\"],[d.magicline_keystrokeNext,\"accessNextSpace\"]]),a.on(\"loadSnapshot\",function(){for(var a=e.getElementsByTag(c.enterBehavior),b,d=a.count();d--;)if((b=a.getItem(d)).hasAttribute(\"data-cke-magicline-hot\")){c.hotNode=b;c.lastCmdDirection=\"true\"===b.getAttribute(\"data-cke-magicline-dir\")?\n!0:!1;break}}),this.backdoor={accessFocusSpace:K,boxTrigger:t,isLine:u,getAscendantTrigger:H,getNonEmptyNeighbour:q,getSize:M,that:c,triggerEdge:W,triggerEditable:U,triggerExpand:$})},this)}});var p=CKEDITOR.tools.extend,J=CKEDITOR.dom.element,A=J.createFromHtml,n=CKEDITOR.env,v=CKEDITOR.dtd,C=128,V=64,L=32,F=16,aa=8,w=4,x=2,r=1,D=\" \",X=v.$listItem,fa=v.$tableContent,da=p({},v.$nonEditable,v.$empty),S=v.$block,Y=100,I=\"width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;\",\nP=I+\"border-color:transparent;display:block;border-style:solid;\",O=\"<span>\"+D+\"</span>\";t.prototype={set:function(a,b,d){this.properties=a+b+(d||r);return this},is:function(a){return(this.properties&a)==a}};var Z=function(){return function(a,b,d){if(!a.mouse)return null;var e=a.doc,f=a.line.wrap,d=d||a.mouse,c=new CKEDITOR.dom.element(e.$.elementFromPoint(d.x,d.y));b&&u(a,c)&&(f.hide(),c=new CKEDITOR.dom.element(e.$.elementFromPoint(d.x,d.y)),f.show());return!c||!(c.type==CKEDITOR.NODE_ELEMENT&&c.$)||\nn.ie&&9>n.version&&!a.boundary.equals(c)&&!a.boundary.contains(c)?null:c}}(),y=CKEDITOR.dom.walker.whitespaces(),z=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),$=function(){function a(a){var e=a.element,f,c,j;if(!l(e)||e.contains(a.editable))return null;j=ga(a,function(a,b){return!b.equals(a)},function(a,b){return Z(a,!0,b)},e);f=j.upper;c=j.lower;if(N(a,f,c))return j.set(L,aa);if(f&&e.contains(f))for(;!f.getParent().equals(e);)f=f.getParent();else f=e.getFirst(function(c){return b(a,c)});\nif(c&&e.contains(c))for(;!c.getParent().equals(e);)c=c.getParent();else c=e.getLast(function(c){return b(a,c)});if(!f||!c)return null;m(a,f);m(a,c);if(!(a.mouse.y>f.size.top&&a.mouse.y<c.size.bottom))return null;for(var e=Number.MAX_VALUE,i,h,k,g;c&&!c.equals(f)&&(h=f.getNext(a.isRelevant));)i=Math.abs(ba(a,f,h)-a.mouse.y),i<e&&(e=i,k=f,g=h),f=h,m(a,f);if(!k||!g||!(a.mouse.y>k.size.top&&a.mouse.y<g.size.bottom))return null;j.upper=k;j.lower=g;return j.set(L,aa)}function b(a,b){return!(b&&b.type==\nCKEDITOR.NODE_TEXT||z(b)||o(b)||u(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is(\"br\"))}return function(b){var e=a(b),f;if(f=e){f=e.upper;var c=e.lower;f=!f||!c||o(c)||o(f)||c.equals(f)||f.equals(c)||c.contains(f)||f.contains(c)?!1:E(b,f)&&E(b,c)&&N(b,f,c)?!0:!1}return f?e:null}}(),s=[\"top\",\"left\",\"right\",\"bottom\"]})();CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.ALT+219;CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.ALT+221;(function(){function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())return[];for(var e=[],f=[\"style\",\"className\"],b=0;b<f.length;b++){var d=a.$.elements.namedItem(f[b]);d&&(d=new CKEDITOR.dom.element(d),e.push([d,d.nextSibling]),d.remove())}return e}function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())&&0<e.length)for(var f=e.length-1;0<=f;f--){var b=e[f][0],d=e[f][1];d?b.insertBefore(d):b.appendTo(a)}}function n(a,e){var f=l(a),b={},d=a.$;e||(b[\"class\"]=d.className||\n\"\",d.className=\"\");b.inline=d.style.cssText||\"\";e||(d.style.cssText=\"position: static; overflow: visible\");o(f);return b}function p(a,e){var f=l(a),b=a.$;\"class\"in e&&(b.className=e[\"class\"]);\"inline\"in e&&(b.style.cssText=e.inline);o(f)}function q(a){var e=CKEDITOR.instances,f;for(f in e){var b=e[f];\"wysiwyg\"==b.mode&&!b.readOnly&&(b=b.document.getBody(),b.setAttribute(\"contentEditable\",!1),b.setAttribute(\"contentEditable\",!0))}a.editable().hasFocus&&(a.toolbox.focus(),a.focus())}CKEDITOR.plugins.add(\"maximize\",\n{init:function(a){function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=a.lang,b=CKEDITOR.document,d=b.getWindow(),j,k,m,l=CKEDITOR.TRISTATE_OFF;a.addCommand(\"maximize\",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var h=a.container.getChild(1),g=a.ui.space(\"contents\");if(\"wysiwyg\"==a.mode){var c=a.getSelection();j=c&&c.getRanges();k=d.getScrollPosition()}else{var i=a.editable().$;\nj=!CKEDITOR.env.ie&&[i.selectionStart,i.selectionEnd];k=[i.scrollLeft,i.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on(\"resize\",e);m=d.getScrollPosition();for(c=a.container;c=c.getParent();)c.setCustomData(\"maximize_saved_styles\",n(c)),c.setStyle(\"z-index\",a.config.baseFloatZIndex-5);g.setCustomData(\"maximize_saved_styles\",n(g,!0));h.setCustomData(\"maximize_saved_styles\",n(h,!0));g={overflow:CKEDITOR.env.webkit?\"\":\"hidden\",width:0,height:0};b.getDocumentElement().setStyles(g);!CKEDITOR.env.gecko&&\nb.getDocumentElement().setStyle(\"position\",\"fixed\");(!CKEDITOR.env.gecko||!CKEDITOR.env.quirks)&&b.getBody().setStyles(g);CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);h.setStyle(\"position\",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?\"fixed\":\"absolute\");h.$.offsetLeft;h.setStyles({\"z-index\":a.config.baseFloatZIndex-5,left:\"0px\",top:\"0px\"});h.addClass(\"cke_maximized\");e();g=h.getDocumentPosition();h.setStyles({left:-1*g.x+\"px\",top:-1*g.y+\"px\"});CKEDITOR.env.gecko&&q(a)}else if(this.state==\nCKEDITOR.TRISTATE_ON){d.removeListener(\"resize\",e);g=[g,h];for(c=0;c<g.length;c++)p(g[c],g[c].getCustomData(\"maximize_saved_styles\")),g[c].removeCustomData(\"maximize_saved_styles\");for(c=a.container;c=c.getParent();)p(c,c.getCustomData(\"maximize_saved_styles\")),c.removeCustomData(\"maximize_saved_styles\");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(m.x,m.y)},0):d.$.scrollTo(m.x,m.y);h.removeClass(\"cke_maximized\");CKEDITOR.env.webkit&&(h.setStyle(\"display\",\"inline\"),setTimeout(function(){h.setStyle(\"display\",\n\"block\")},0));a.fire(\"resize\")}this.toggleState();if(c=this.uiItems[0])g=this.state==CKEDITOR.TRISTATE_OFF?f.maximize.maximize:f.maximize.minimize,c=CKEDITOR.document.getById(c._.id),c.getChild(1).setHtml(g),c.setAttribute(\"title\",g),c.setAttribute(\"href\",'javascript:void(\"'+g+'\");');\"wysiwyg\"==a.mode?j?(CKEDITOR.env.gecko&&q(a),a.getSelection().selectRanges(j),(i=a.getSelection().getStartElement())&&i.scrollIntoView(!0)):d.$.scrollTo(k.x,k.y):(j&&(i.selectionStart=j[0],i.selectionEnd=j[1]),i.scrollLeft=\nk[0],i.scrollTop=k[1]);j=k=null;l=this.state;a.fire(\"maximize\",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"Maximize\",{label:f.maximize.maximize,command:\"maximize\",toolbar:\"tools,10\"});a.on(\"mode\",function(){var b=a.getCommand(\"maximize\");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:l)},null,null,100)}}})})();(function(){var c={canUndo:!1,async:!0,exec:function(a){a.getClipboardData({title:a.lang.pastetext.title},function(b){b&&a.fire(\"paste\",{type:\"text\",dataValue:b.dataValue});a.fire(\"afterCommandExec\",{name:\"pastetext\",command:c,returnValue:!!b})})}};CKEDITOR.plugins.add(\"pastetext\",{requires:\"clipboard\",init:function(a){a.addCommand(\"pastetext\",c);a.ui.addButton&&a.ui.addButton(\"PasteText\",{label:a.lang.pastetext.button,command:\"pastetext\",toolbar:\"clipboard,40\"});if(a.config.forcePasteAsPlainText)a.on(\"beforePaste\",\nfunction(a){\"html\"!=a.data.type&&(a.data.type=\"text\")});a.on(\"pasteState\",function(b){a.getCommand(\"pastetext\").setState(b.data)})}})})();(function(){function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile||d+\"filter/default.js\"),CKEDITOR.scriptLoader.load(a,f,null,!0));return!b}function i(a){a.data.type=\"html\"}CKEDITOR.plugins.add(\"pastefromword\",{requires:\"clipboard\",init:function(a){var d=0,f=this.path;a.addCommand(\"pastefromword\",{canUndo:!1,async:!0,exec:function(a){var e=this;d=1;a.once(\"beforePaste\",i);a.getClipboardData({title:a.lang.pastefromword.title},function(c){c&&a.fire(\"paste\",\n{type:\"html\",dataValue:c.dataValue});a.fire(\"afterCommandExec\",{name:\"pastefromword\",command:e,returnValue:!!c})})}});a.ui.addButton&&a.ui.addButton(\"PasteFromWord\",{label:a.lang.pastefromword.toolbar,command:\"pastefromword\",toolbar:\"clipboard,50\"});a.on(\"pasteState\",function(b){a.getCommand(\"pastefromword\").setState(b.data)});a.on(\"paste\",function(b){var e=b.data,c=e.dataValue;if(c&&(d||/(class=\\\"?Mso|style=\\\"[^\\\"]*\\bmso\\-|w:WordDocument)/.test(c))){var g=h(a,f,function(){if(g)a.fire(\"paste\",e);\nelse if(!a.config.pasteFromWordPromptCleanup||d||confirm(a.lang.pastefromword.confirmCleanup))e.dataValue=CKEDITOR.cleanWord(c,a)});g&&b.cancel()}},null,null,3)}})})();CKEDITOR.plugins.add(\"removeformat\",{init:function(a){a.addCommand(\"removeFormat\",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton(\"RemoveFormat\",{label:a.lang.removeformat.toolbar,command:\"removeFormat\",toolbar:\"cleanup,10\"})}});\nCKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp(\"^(?:\"+a.config.removeFormatTags.replace(/,/g,\"|\")+\")$\",\"i\")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(\",\")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(1),l=k.createIterator(),c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var i=c.createBookmark(),b=i.startNode,j=i.endNode,\nd=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};d(b);if(j){d(j);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(j);)d=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!(\"img\"==b.getName()&&b.data(\"cke-realelement\"))&&f(a,b)&&(h.test(b.getName())?b.remove(1):(b.removeAttributes(e),a.fire(\"removeFormatCleanup\",b))),b=d}c.moveToBookmark(i)}a.forceNextSelectionCheck();a.getSelection().selectRanges(k)}}},\nfilter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags=\"b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var\";CKEDITOR.config.removeFormatAttributes=\"class,style,lang,width,height,align,hspace,valign\";(function(){CKEDITOR.plugins.add(\"sourcearea\",{init:function(a){function d(){this.hide();this.setStyle(\"height\",this.getParent().$.clientHeight+\"px\");this.setStyle(\"width\",this.getParent().$.clientWidth+\"px\");this.show()}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var e=CKEDITOR.plugins.sourcearea;a.addMode(\"source\",function(e){var b=a.ui.space(\"contents\").getDocument().createElement(\"textarea\");b.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?\"99%\":\"100%\",height:\"100%\",resize:\"none\",\noutline:\"none\",\"text-align\":\"left\"},CKEDITOR.tools.cssVendorPrefix(\"tab-size\",a.config.sourceAreaTabSize||4)));b.addClass(\"cke_source cke_reset cke_enable_context_menu\");a.ui.space(\"contents\").append(b);b=a.editable(new c(a,b));b.setData(a.getData(1));CKEDITOR.env.ie&&(b.attachListener(a,\"resize\",d,b),b.attachListener(CKEDITOR.document.getWindow(),\"resize\",d,b),CKEDITOR.tools.setTimeout(d,0,b));a.fire(\"ariaWidget\",this);e()});a.addCommand(\"source\",e.commands.source);a.ui.addButton&&a.ui.addButton(\"Source\",\n{label:a.lang.sourcearea.toolbar,command:\"source\",toolbar:\"mode,10\"});a.on(\"mode\",function(){a.getCommand(\"source\").setState(\"source\"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)})}}});var c=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.editor.fire(\"dataReady\")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?\"set\":\"remove\")+\"Attribute\"](\"readOnly\",\n\"readonly\")},detach:function(){c.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(c){\"wysiwyg\"==c.mode&&c.fire(\"saveSnapshot\");c.getCommand(\"source\").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode(\"source\"==c.mode?\"wysiwyg\":\"source\")},canUndo:!1}}};CKEDITOR.plugins.add(\"specialchar\",{availableLangs:{ca:1,cs:1,cy:1,de:1,en:1,eo:1,et:1,fa:1,fi:1,fr:1,he:1,hr:1,it:1,ku:1,lv:1,nb:1,nl:1,no:1,\"pt-br\":1,sk:1,sv:1,tr:1,ug:1,\"zh-cn\":1},requires:\"dialog\",init:function(a){var c=this;CKEDITOR.dialog.add(\"specialchar\",this.path+\"dialogs/specialchar.js\");a.addCommand(\"specialchar\",{exec:function(){var b=a.langCode,b=c.availableLangs[b]?b:c.availableLangs[b.replace(/-.*/,\"\")]?b.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\"dialogs/lang/\"+\nb+\".js\"),function(){CKEDITOR.tools.extend(a.lang.specialchar,c.langEntries[b]);a.openDialog(\"specialchar\")})},modes:{wysiwyg:1},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"SpecialChar\",{label:a.lang.specialchar.toolbar,command:\"specialchar\",toolbar:\"insert,50\"})}});CKEDITOR.config.specialChars=\"! &quot; # $ % &amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; &lt; = &gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ &euro; &lsquo; &rsquo; &ldquo; &rdquo; &ndash; &mdash; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; &copy; &ordf; &laquo; &not; &reg; &macr; &deg; &sup2; &sup3; &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; &frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml; &OElig; &oelig; &#372; &#374 &#373 &#375; &sbquo; &#8219; &bdquo; &hellip; &trade; &#9658; &bull; &rarr; &rArr; &hArr; &diams; &asymp;\".split(\" \");CKEDITOR.plugins.add(\"menubutton\",{requires:\"button,menu\",onLoad:function(){var d=function(a){var b=this._;if(b.state!==CKEDITOR.TRISTATE_DISABLED){b.previousState=b.state;var c=b.menu;c||(c=b.menu=new CKEDITOR.menu(a,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":a.lang.common.options}}}),c.onHide=CKEDITOR.tools.bind(function(){this.setState(this.modes&&this.modes[a.mode]?b.previousState:CKEDITOR.TRISTATE_DISABLED)},this),this.onMenu&&c.addListener(this.onMenu));b.on?c.hide():(this.setState(CKEDITOR.TRISTATE_ON),\nsetTimeout(function(){c.show(CKEDITOR.document.getById(b.id),4)},0))}};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(a){delete a.panel;this.base(a);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(a){return new CKEDITOR.ui.menuButton(a)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});CKEDITOR.UI_MENUBUTTON=\"menubutton\";(function(){function k(a,c){var b=0,d;for(d in c)if(c[d]==a){b=1;break}return b}var i=\"\",r=function(){function a(){b.once(\"focus\",f);b.once(\"blur\",c)}function c(b){var b=b.editor,c=d.getScayt(b),f=b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE;c&&(d.setPaused(b,!c.disabled),d.setControlId(b,c.id),c.destroy(!0),delete d.instances[b.name],f&&a())}var b=this,f=function(){if(!(\"undefined\"!=typeof d.instances[b.name]||null!=d.instances[b.name])){var a=b.config,c={};c.srcNodeRef=\"BODY\"==b.editable().$.nodeName?\nb.document.getWindow().$.frameElement:b.editable().$;c.assocApp=\"CKEDITOR.\"+CKEDITOR.version+\"@\"+CKEDITOR.revision;c.customerid=a.scayt_customerid||\"1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2\";c.customDictionaryIds=a.scayt_customDictionaryIds||\"\";c.userDictionaryName=a.scayt_userDictionaryName||\"\";c.sLang=a.scayt_sLang||\"en_US\";c.onLoad=function(){CKEDITOR.env.ie&&8>CKEDITOR.env.version||this.addStyle(this.selectorCss(),\"padding-bottom: 2px !important;\");b.editable().hasFocus&&\n!d.isControlRestored(b)&&this.focus()};c.onBeforeChange=function(){d.getScayt(b)&&!b.checkDirty()&&setTimeout(function(){b.resetDirty()},0)};a=window.scayt_custom_params;if(\"object\"==typeof a)for(var f in a)c[f]=a[f];d.getControlId(b)&&(c.id=d.getControlId(b));var o=new window.scayt(c);o.afterMarkupRemove.push(function(a){(new CKEDITOR.dom.element(a,o.document)).mergeSiblings()});if(c=d.instances[b.name])o.sLang=c.sLang,o.option(c.option()),o.paused=c.paused;d.instances[b.name]=o;try{o.setDisabled(!1===\nd.isPaused(b))}catch(e){}b.fire(\"showScaytState\")}};b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a():b.on(\"contentDom\",f);b.on(\"contentDomUnload\",function(){for(var a=CKEDITOR.document.getElementsByTag(\"script\"),b=/^dojoIoScript(\\d+)$/i,c=/^https?:\\/\\/svc\\.webspellchecker\\.net\\/spellcheck\\/script\\/ssrv\\.cgi/i,d=0;d<a.count();d++){var f=a.getItem(d),e=f.getId(),h=f.getAttribute(\"src\");e&&(h&&e.match(b)&&h.match(c))&&f.remove()}});b.on(\"beforeCommandExec\",function(a){\"source\"==a.data.name&&\"source\"==\nb.mode&&d.markControlRestore(b)});b.on(\"afterCommandExec\",function(a){d.isScaytEnabled(b)&&\"wysiwyg\"==b.mode&&(\"undo\"==a.data.name||\"redo\"==a.data.name)&&window.setTimeout(function(){d.getScayt(b).refresh()},10)});b.on(\"destroy\",c);b.on(\"setData\",c);b.on(\"insertElement\",function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on(\"insertHtml\",function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&\n(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on(\"scaytDialog\",function(a){a.data.djConfig=window.djConfig;a.data.scayt_control=d.getScayt(b);a.data.tab=i;a.data.scayt=window.scayt});var e=b.dataProcessor;(e=e&&e.htmlFilter)&&e.addRules({elements:{span:function(a){if(a.attributes[\"data-scayt_word\"]&&a.attributes[\"data-scaytid\"])return delete a.name,a}}});e=CKEDITOR.plugins.undo.Image.prototype;e.equals=CKEDITOR.tools.override(e.equals,\nfunction(a){return function(b){var c=this.contents,f=b.contents,e=d.getScayt(this.editor);e&&d.isScaytReady(this.editor)&&(this.contents=e.reset(c)||\"\",b.contents=e.reset(f)||\"\");e=a.apply(this,arguments);this.contents=c;b.contents=f;return e}});b.document&&(b.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE||b.focusManager.hasFocus)&&f()};CKEDITOR.plugins.scayt={engineLoaded:!1,instances:{},controlInfo:{},setControlInfo:function(a,c){a&&(a.name&&\"object\"!=typeof this.controlInfo[a.name])&&(this.controlInfo[a.name]=\n{});for(var b in c)this.controlInfo[a.name][b]=c[b]},isControlRestored:function(a){return a&&a.name&&this.controlInfo[a.name]?this.controlInfo[a.name].restored:!1},markControlRestore:function(a){this.setControlInfo(a,{restored:!0})},setControlId:function(a,c){this.setControlInfo(a,{id:c})},getControlId:function(a){return a&&a.name&&this.controlInfo[a.name]&&this.controlInfo[a.name].id?this.controlInfo[a.name].id:null},setPaused:function(a,c){this.setControlInfo(a,{paused:c})},isPaused:function(a){if(a&&\na.name&&this.controlInfo[a.name])return this.controlInfo[a.name].paused},getScayt:function(a){return this.instances[a.name]},isScaytReady:function(a){return!0===this.engineLoaded&&\"undefined\"!==typeof window.scayt&&this.getScayt(a)},isScaytEnabled:function(a){return(a=this.getScayt(a))?!1===a.disabled:!1},getUiTabs:function(a){var c=[],b=a.config.scayt_uiTabs||\"1,1,1\",b=b.split(\",\");b[3]=\"1\";for(var d=0;4>d;d++)c[d]=\"undefined\"!=typeof window.scayt&&\"undefined\"!=typeof window.scayt.uiTags?parseInt(b[d],\n10)&&window.scayt.uiTags[d]:parseInt(b[d],10);\"object\"==typeof a.plugins.wsc?c.push(1):c.push(0);return c},loadEngine:function(a){if(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version||CKEDITOR.env.opera||CKEDITOR.env.air)return a.fire(\"showScaytState\");if(!0===this.engineLoaded)return r.apply(a);if(-1==this.engineLoaded)return CKEDITOR.on(\"scaytReady\",function(){r.apply(a)});CKEDITOR.on(\"scaytReady\",r,a);CKEDITOR.on(\"scaytReady\",function(){this.engineLoaded=!0},this,null,0);this.engineLoaded=-1;var c=\ndocument.location.protocol,c=-1!=c.search(/https?:/)?c:\"http:\",c=a.config.scayt_srcUrl||c+\"//svc.webspellchecker.net/scayt26/loader__base.js\",b=d.parseUrl(c).path+\"/\";void 0==window.scayt?(CKEDITOR._djScaytConfig={baseUrl:b,addOnLoad:[function(){CKEDITOR.fireOnce(\"scaytReady\")}],isDebug:!1},CKEDITOR.document.getHead().append(CKEDITOR.document.createElement(\"script\",{attributes:{type:\"text/javascript\",async:\"true\",src:c}}))):CKEDITOR.fireOnce(\"scaytReady\");return null},parseUrl:function(a){var c;return a.match&&\n(c=a.match(/(.*)[\\/\\\\](.*?\\.\\w+)$/))?{path:c[1],file:c[2]}:a}};var d=CKEDITOR.plugins.scayt,s=function(a,c,b,d,e,k,g){a.addCommand(d,e);a.addMenuItem(d,{label:b,command:d,group:k,order:g})},v={preserveState:!0,editorFocus:!1,canUndo:!1,exec:function(a){if(d.isScaytReady(a)){var c=d.isScaytEnabled(a);this.setState(c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_ON);a=d.getScayt(a);a.focus();a.setDisabled(c)}else!a.config.scayt_autoStartup&&0<=d.engineLoaded&&(a.focus(),this.setState(CKEDITOR.TRISTATE_DISABLED),\nd.loadEngine(a))}};CKEDITOR.plugins.add(\"scayt\",{requires:\"menubutton,dialog\",beforeInit:function(a){var c=a.config.scayt_contextMenuItemsOrder||\"suggest|moresuggest|control\",b=\"\";if((c=c.split(\"|\"))&&c.length)for(var d=0;d<c.length;d++)b+=\"scayt_\"+c[d]+(c.length!=parseInt(d,10)+1?\",\":\"\");a.config.menu_groups=b+\",\"+a.config.menu_groups},init:function(a){var c=a.dataProcessor&&a.dataProcessor.dataFilter,b={elements:{span:function(a){var b=a.attributes;b&&b[\"data-scaytid\"]&&delete a.name}}};c&&c.addRules(b);\nvar f={},e={},p=a.addCommand(\"scaytcheck\",v);CKEDITOR.dialog.add(\"scaytcheck\",CKEDITOR.getUrl(this.path+\"dialogs/options.js\"));c=d.getUiTabs(a);a.addMenuGroup(\"scaytButton\");a.addMenuGroup(\"scayt_suggest\",-10);a.addMenuGroup(\"scayt_moresuggest\",-9);a.addMenuGroup(\"scayt_control\",-8);var b={},g=a.lang.scayt;b.scaytToggle={label:g.enable,command:\"scaytcheck\",group:\"scaytButton\"};1==c[0]&&(b.scaytOptions={label:g.options,group:\"scaytButton\",onClick:function(){i=\"options\";a.openDialog(\"scaytcheck\")}});\n1==c[1]&&(b.scaytLangs={label:g.langs,group:\"scaytButton\",onClick:function(){i=\"langs\";a.openDialog(\"scaytcheck\")}});1==c[2]&&(b.scaytDict={label:g.dictionariesTab,group:\"scaytButton\",onClick:function(){i=\"dictionaries\";a.openDialog(\"scaytcheck\")}});b.scaytAbout={label:a.lang.scayt.about,group:\"scaytButton\",onClick:function(){i=\"about\";a.openDialog(\"scaytcheck\")}};1==c[4]&&(b.scaytWSC={label:a.lang.wsc.toolbar,group:\"scaytButton\",command:\"checkspell\"});a.addMenuItems(b);a.ui.add(\"Scayt\",CKEDITOR.UI_MENUBUTTON,\n{label:g.title,title:CKEDITOR.env.opera?g.opera_title:g.title,modes:{wysiwyg:1},toolbar:\"spellchecker,20\",onRender:function(){p.on(\"state\",function(){this.setState(p.state)},this)},onMenu:function(){var b=d.isScaytEnabled(a);a.getMenuItem(\"scaytToggle\").label=g[b?\"disable\":\"enable\"];var c=d.getUiTabs(a);return{scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:b&&c[0]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:b&&c[1]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytDict:b&&c[2]?\nCKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytAbout:b&&c[3]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytWSC:c[4]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}});a.contextMenu&&a.addMenuItems&&a.contextMenu.addListener(function(b,c){if(!d.isScaytEnabled(a)||c.getRanges()[0].checkReadOnly())return null;var l=d.getScayt(a),q=l.getScaytNode();if(!q)return null;var h=l.getWord(q);if(!h)return null;var i=l.getLang(),m=a.config.scayt_contextCommands||\"all\",h=window.scayt.getSuggestion(h,\ni),m=m.split(\"|\"),n;for(n in f){delete a._.menuItems[n];delete a.commands[n]}for(n in e){delete a._.menuItems[n];delete a.commands[n]}if(!h||!h.length){s(a,\"no_sugg\",g.noSuggestions,\"scayt_no_sugg\",{exec:function(){}},\"scayt_control\",1,true);e.scayt_no_sugg=CKEDITOR.TRISTATE_OFF}else{f={};e={};n=a.config.scayt_moreSuggestions||\"on\";var i=false,u=a.config.scayt_maxSuggestions;typeof u!=\"number\"&&(u=5);!u&&(u=h.length);for(var j=0,p=h.length;j<p;j=j+1){var t=\"scayt_suggestion_\"+h[j].replace(\" \",\"_\"),\nr=function(a,b){return{exec:function(){l.replace(a,b)}}}(q,h[j]);if(j<u){s(a,\"button_\"+t,h[j],t,r,\"scayt_suggest\",j+1);e[t]=CKEDITOR.TRISTATE_OFF}else if(n==\"on\"){s(a,\"button_\"+t,h[j],t,r,\"scayt_moresuggest\",j+1);f[t]=CKEDITOR.TRISTATE_OFF;i=true}}if(i){a.addMenuItem(\"scayt_moresuggest\",{label:g.moreSuggestions,group:\"scayt_moresuggest\",order:10,getItems:function(){return f}});e.scayt_moresuggest=CKEDITOR.TRISTATE_OFF}}if(k(\"all\",m)||k(\"ignore\",m)){s(a,\"ignore\",g.ignore,\"scayt_ignore\",{exec:function(){l.ignore(q)}},\n\"scayt_control\",2);e.scayt_ignore=CKEDITOR.TRISTATE_OFF}if(k(\"all\",m)||k(\"ignoreall\",m)){s(a,\"ignore_all\",g.ignoreAll,\"scayt_ignore_all\",{exec:function(){l.ignoreAll(q)}},\"scayt_control\",3);e.scayt_ignore_all=CKEDITOR.TRISTATE_OFF}if(k(\"all\",m)||k(\"add\",m)){s(a,\"add_word\",g.addWord,\"scayt_add_word\",{exec:function(){window.scayt.addWordToUserDictionary(q)}},\"scayt_control\",4);e.scayt_add_word=CKEDITOR.TRISTATE_OFF}l.fireOnContextMenu&&l.fireOnContextMenu(a);return e});c=function(b){b.removeListener();\nCKEDITOR.env.opera||CKEDITOR.env.air?p.setState(CKEDITOR.TRISTATE_DISABLED):p.setState(d.isScaytEnabled(a)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)};a.on(\"showScaytState\",c);a.on(\"instanceReady\",c);if(a.config.scayt_autoStartup)a.on(\"instanceReady\",function(){d.loadEngine(a)})},afterInit:function(a){var c,b=function(a){if(a.hasAttribute(\"data-scaytid\"))return!1};a._.elementsPath&&(c=a._.elementsPath.filters)&&c.push(b);a.addRemoveFormatFilter&&a.addRemoveFormatFilter(b)}})})();(function(){function m(b,j){var k=b.type,f=j.type;return k==f?0:k==CKEDITOR.STYLE_OBJECT?-1:f==CKEDITOR.STYLE_OBJECT?1:f==CKEDITOR.STYLE_BLOCK?1:-1}CKEDITOR.plugins.add(\"stylescombo\",{requires:\"richcombo\",init:function(b){function j(a){b.getStylesSet(function(g){if(!i.length){for(var c,l,e=0,f=g.length;e<f;e++)c=g[e],b.blockless&&c.element in CKEDITOR.dtd.$block||(l=c.name,c=h[l]=new CKEDITOR.style(c),c._name=l,c._.enterMode=k.enterMode,i.push(c));i.sort(m)}a&&a()})}var k=b.config,f=b.lang.stylescombo,\nh={},i=[],d;b.ui.addRichCombo(\"Styles\",{label:f.label,title:f.panelTitle,toolbar:\"styles,10\",panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(k.contentsCss),multiSelect:!0,attributes:{\"aria-label\":f.panelTitle}},init:function(){d=this;j(function(){var a,g,c,b,e,h;e=0;for(h=i.length;e<h;e++)a=i[e],g=a._name,b=a.type,b!=c&&(d.startGroup(f[\"panelTitle\"+b]),c=b),d.add(g,a.type==CKEDITOR.STYLE_OBJECT?g:a.buildPreview(),g);d.commit()})},onClick:function(a){b.focus();b.fire(\"saveSnapshot\");var a=h[a],\ng=b.elementPath();b[a.checkActive(g)?\"removeStyle\":\"applyStyle\"](a);b.fire(\"saveSnapshot\")},onRender:function(){b.on(\"selectionChange\",function(a){for(var b=this.getValue(),a=a.data.path.elements,c=0,f=a.length,e;c<f;c++){e=a[c];for(var d in h)if(h[d].checkElementRemovable(e,!0)){d!=b&&this.setValue(d);return}}this.setValue(\"\")},this)},onOpen:function(){var a=b.getSelection().getSelectedElement(),a=b.elementPath(a),g=[0,0,0,0];this.showAll();this.unmarkAll();for(var c in h){var d=h[c],e=d.type;e==\nCKEDITOR.STYLE_BLOCK&&!a.isContextFor(d.element)?this.hideItem(c):(d.checkActive(a)?this.mark(c):e==CKEDITOR.STYLE_OBJECT&&!d.checkApplicable(a)&&(this.hideItem(c),g[e]--),g[e]++)}g[CKEDITOR.STYLE_BLOCK]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_BLOCK]);g[CKEDITOR.STYLE_INLINE]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_INLINE]);g[CKEDITOR.STYLE_OBJECT]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_OBJECT])},reset:function(){d&&(delete d._.panel,delete d._.list,d._.committed=0,d._.items={},\nd._.state=CKEDITOR.TRISTATE_OFF);h={};i=[];j()}});b.on(\"instanceReady\",function(){j()})}})})();(function(){function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(d){if(d.editable().hasFocus){var e=d.getSelection(),b;if(b=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=d.createRange(),a=CKEDITOR.tools.tryThese(function(){var a=b.getParent().$.cells[b.$.cellIndex+(c?-1:1)];a.parentNode.parentNode;return a},function(){var a=b.getParent(),a=a.getAscendant(\"table\").$.rows[a.$.rowIndex+(c?-1:1)];return a.cells[c?a.cells.length-1:\n0]});if(!a&&!c){for(var f=b.getAscendant(\"table\").$,a=b.getParent().$.cells,f=new CKEDITOR.dom.element(f.insertRow(-1),d.document),g=0,h=a.length;g<h;g++){var i=f.append((new CKEDITOR.dom.element(a[g],d.document)).clone(!1,!1));!CKEDITOR.env.ie&&i.appendBogus()}e.moveToElementEditStart(f)}else if(a)a=new CKEDITOR.dom.element(a),e.moveToElementEditStart(a),(!e.checkStartOfBlock()||!e.checkEndOfBlock())&&e.selectNodeContents(a);else return!0;e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,\nsource:1}},g={exec:function(c){c.container.focusNext(!0,c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKEDITOR.plugins.add(\"tab\",{init:function(c){for(var d=!1!==c.config.enableTabKeyTools,e=c.config.tabSpaces||0,b=\"\";e--;)b+=\" \";if(b)c.on(\"key\",function(a){9==a.data.keyCode&&(c.insertHtml(b),a.cancel())});if(d)c.on(\"key\",function(a){(9==a.data.keyCode&&c.execCommand(\"selectNextCell\")||a.data.keyCode==CKEDITOR.SHIFT+9&&c.execCommand(\"selectPreviousCell\"))&&a.cancel()});\nc.addCommand(\"blur\",CKEDITOR.tools.extend(g,h));c.addCommand(\"blurBack\",CKEDITOR.tools.extend(f,h));c.addCommand(\"selectNextCell\",i());c.addCommand(\"selectPreviousCell\",i(!0))}})})();\nCKEDITOR.dom.element.prototype.focusNext=function(i,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(i,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,i){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&&\n(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):!d&&0===a&&(d=b,e=a)}}d&&d.focus()};\nCKEDITOR.dom.element.prototype.focusPrevious=function(i,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,i){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}if(b<g&&(!d||b>e))d=a,e=b}}d&&d.focus()};CKEDITOR.plugins.add(\"table\",{requires:\"dialog\",init:function(a){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,e){this.setState(e.contains(\"table\",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var b=a.lang.table;a.addCommand(\"table\",new CKEDITOR.dialogCommand(\"table\",{context:\"table\"}));a.addCommand(\"tableProperties\",new CKEDITOR.dialogCommand(\"tableProperties\",d()));a.addCommand(\"tableDelete\",d({exec:function(a){var c=a.elementPath().contains(\"table\",\n1);if(c){var b=c.getParent();1==b.getChildCount()&&!b.is(\"body\",\"td\",\"th\")&&(c=b);a=a.createRange();a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_START);c.remove();a.select()}}}));a.ui.addButton&&a.ui.addButton(\"Table\",{label:b.toolbar,command:\"table\",toolbar:\"insert,30\"});CKEDITOR.dialog.add(\"table\",this.path+\"dialogs/table.js\");CKEDITOR.dialog.add(\"tableProperties\",this.path+\"dialogs/table.js\");a.addMenuItems&&a.addMenuItems({table:{label:b.menu,command:\"tableProperties\",group:\"table\",order:5},tabledelete:{label:b.deleteTable,\ncommand:\"tableDelete\",group:\"table\",order:1}});a.on(\"doubleclick\",function(a){a.data.element.is(\"table\")&&(a.data.dialog=\"tableProperties\")});a.contextMenu&&a.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}});(function(){function o(c){function d(c){!(0<b.length)&&(c.type==CKEDITOR.NODE_ELEMENT&&z.test(c.getName())&&!c.getCustomData(\"selected_cell\"))&&(CKEDITOR.dom.element.setMarker(a,c,\"selected_cell\",!0),b.push(c))}for(var c=c.getRanges(),b=[],a={},e=0;e<c.length;e++){var f=c[e];if(f.collapsed)f=f.getCommonAncestor(),(f=f.getAscendant(\"td\",!0)||f.getAscendant(\"th\",!0))&&b.push(f);else{var f=new CKEDITOR.dom.walker(f),g;for(f.guard=d;g=f.next();)if(g.type!=CKEDITOR.NODE_ELEMENT||!g.is(CKEDITOR.dtd.table))if((g=\ng.getAscendant(\"td\",!0)||g.getAscendant(\"th\",!0))&&!g.getCustomData(\"selected_cell\"))CKEDITOR.dom.element.setMarker(a,g,\"selected_cell\",!0),b.push(g)}}CKEDITOR.dom.element.clearAllMarkers(a);return b}function m(c,d){for(var b=o(c),a=b[0],e=a.getAscendant(\"table\"),a=a.getDocument(),f=b[0].getParent(),g=f.$.rowIndex,b=b[b.length-1],h=b.getParent().$.rowIndex+b.$.rowSpan-1,b=new CKEDITOR.dom.element(e.$.rows[h]),g=d?g:h,f=d?f:b,b=CKEDITOR.tools.buildTableMap(e),e=b[g],g=d?b[g-1]:b[g+1],b=b[0].length,\na=a.createElement(\"tr\"),h=0;e[h]&&h<b;h++){var i;1<e[h].rowSpan&&g&&e[h]==g[h]?(i=e[h],i.rowSpan+=1):(i=(new CKEDITOR.dom.element(e[h])).clone(),i.removeAttribute(\"rowSpan\"),!CKEDITOR.env.ie&&i.appendBogus(),a.append(i),i=i.$);h+=i.colSpan-1}d?a.insertBefore(f):a.insertAfter(f)}function p(c){if(c instanceof CKEDITOR.dom.selection){for(var d=o(c),b=d[0].getAscendant(\"table\"),a=CKEDITOR.tools.buildTableMap(b),c=d[0].getParent().$.rowIndex,d=d[d.length-1],e=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[],\nf=c;f<=e;f++){for(var g=a[f],h=new CKEDITOR.dom.element(b.$.rows[f]),i=0;i<g.length;i++){var j=new CKEDITOR.dom.element(g[i]),k=j.getParent().$.rowIndex;1==j.$.rowSpan?j.remove():(j.$.rowSpan-=1,k==f&&(k=a[f+1],k[i-1]?j.insertAfter(new CKEDITOR.dom.element(k[i-1])):(new CKEDITOR.dom.element(b.$.rows[f+1])).append(j,1)));i+=j.$.colSpan-1}d.push(h)}a=b.$.rows;b=new CKEDITOR.dom.element(a[e+1]||(0<c?a[c-1]:null)||b.$.parentNode);for(f=d.length;0<=f;f--)p(d[f]);return b}c instanceof CKEDITOR.dom.element&&\n(b=c.getAscendant(\"table\"),1==b.$.rows.length?b.remove():c.remove());return null}function q(c,d){for(var b=d?Infinity:0,a=0;a<c.length;a++){var e;e=c[a];for(var f=d,g=e.getParent().$.cells,h=0,i=0;i<g.length;i++){var j=g[i],h=h+(f?1:j.colSpan);if(j==e.$)break}e=h-1;if(d?e<b:e>b)b=e}return b}function n(c,d){for(var b=o(c),a=b[0].getAscendant(\"table\"),e=q(b,1),b=q(b),e=d?e:b,f=CKEDITOR.tools.buildTableMap(a),a=[],b=[],g=f.length,h=0;h<g;h++)a.push(f[h][e]),b.push(d?f[h][e-1]:f[h][e+1]);for(h=0;h<g;h++)a[h]&&\n(1<a[h].colSpan&&b[h]==a[h]?(e=a[h],e.colSpan+=1):(e=(new CKEDITOR.dom.element(a[h])).clone(),e.removeAttribute(\"colSpan\"),!CKEDITOR.env.ie&&e.appendBogus(),e[d?\"insertBefore\":\"insertAfter\"].call(e,new CKEDITOR.dom.element(a[h])),e=e.$),h+=e.rowSpan-1)}function t(c,d){var b=c.getStartElement();if(b=b.getAscendant(\"td\",1)||b.getAscendant(\"th\",1)){var a=b.clone();CKEDITOR.env.ie||a.appendBogus();d?a.insertBefore(b):a.insertAfter(b)}}function s(c){if(c instanceof CKEDITOR.dom.selection){var c=o(c),d=\nc[0]&&c[0].getAscendant(\"table\"),b;a:{var a=0;b=c.length-1;for(var e={},f,g;f=c[a++];)CKEDITOR.dom.element.setMarker(e,f,\"delete_cell\",!0);for(a=0;f=c[a++];)if((g=f.getPrevious())&&!g.getCustomData(\"delete_cell\")||(g=f.getNext())&&!g.getCustomData(\"delete_cell\")){CKEDITOR.dom.element.clearAllMarkers(e);b=g;break a}CKEDITOR.dom.element.clearAllMarkers(e);g=c[0].getParent();(g=g.getPrevious())?b=g.getLast():(g=c[b].getParent(),b=(g=g.getNext())?g.getChild(0):null)}for(g=c.length-1;0<=g;g--)s(c[g]);\nb?u(b,!0):d&&d.remove()}else c instanceof CKEDITOR.dom.element&&(d=c.getParent(),1==d.getChildCount()?d.remove():c.remove())}function u(c,d){var b=new CKEDITOR.dom.range(c.getDocument());if(!b[\"moveToElementEdit\"+(d?\"End\":\"Start\")](c))b.selectNodeContents(c),b.collapse(d?!1:!0);b.select(!0)}function v(c,d,b){c=c[d];if(\"undefined\"==typeof b)return c;for(d=0;c&&d<c.length;d++){if(b.is&&c[d]==b.$)return d;if(d==b)return new CKEDITOR.dom.element(c[d])}return b.is?-1:null}function r(c,d,b){var a=o(c),\ne;if((d?1!=a.length:2>a.length)||(e=c.getCommonAncestor())&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(\"table\"))return!1;var f,c=a[0];e=c.getAscendant(\"table\");var g=CKEDITOR.tools.buildTableMap(e),h=g.length,i=g[0].length,j=c.getParent().$.rowIndex,k=v(g,j,c);if(d){var w;try{var l=parseInt(c.getAttribute(\"rowspan\"),10)||1;f=parseInt(c.getAttribute(\"colspan\"),10)||1;w=g[\"up\"==d?j-l:\"down\"==d?j+l:j][\"left\"==d?k-f:\"right\"==d?k+f:k]}catch(u){return!1}if(!w||c.$==w)return!1;a[\"up\"==d||\"left\"==d?\"unshift\":\"push\"](new CKEDITOR.dom.element(w))}for(var d=\nc.getDocument(),m=j,l=w=0,p=!b&&new CKEDITOR.dom.documentFragment(d),r=0,d=0;d<a.length;d++){f=a[d];var n=f.getParent(),s=f.getFirst(),q=f.$.colSpan,t=f.$.rowSpan,n=n.$.rowIndex,x=v(g,n,f),r=r+q*t,l=Math.max(l,x-k+q);w=Math.max(w,n-j+t);if(!b){q=f;(t=q.getBogus())&&t.remove();q.trim();if(f.getChildren().count()){if(n!=m&&s&&(!s.isBlockBoundary||!s.isBlockBoundary({br:1})))(m=p.getLast(CKEDITOR.dom.walker.whitespaces(!0)))&&(!m.is||!m.is(\"br\"))&&p.append(\"br\");f.moveChildren(p)}d?f.remove():f.setHtml(\"\")}m=\nn}if(b)return w*l==r;p.moveChildren(c);CKEDITOR.env.ie||c.appendBogus();l>=i?c.removeAttribute(\"rowSpan\"):c.$.rowSpan=w;w>=h?c.removeAttribute(\"colSpan\"):c.$.colSpan=l;b=new CKEDITOR.dom.nodeList(e.$.rows);a=b.count();for(d=a-1;0<=d;d--)e=b.getItem(d),e.$.cells.length||(e.remove(),a++);return c}function x(c,d){var b=o(c);if(1<b.length)return!1;if(d)return!0;var b=b[0],a=b.getParent(),e=a.getAscendant(\"table\"),f=CKEDITOR.tools.buildTableMap(e),g=a.$.rowIndex,h=v(f,g,b),i=b.$.rowSpan,j;if(1<i){j=Math.ceil(i/\n2);for(var i=Math.floor(i/2),a=g+j,e=new CKEDITOR.dom.element(e.$.rows[a]),f=v(f,a),k,a=b.clone(),g=0;g<f.length;g++)if(k=f[g],k.parentNode==e.$&&g>h){a.insertBefore(new CKEDITOR.dom.element(k));break}else k=null;k||e.append(a,!0)}else{i=j=1;e=a.clone();e.insertAfter(a);e.append(a=b.clone());k=v(f,g);for(h=0;h<k.length;h++)k[h].rowSpan++}CKEDITOR.env.ie||a.appendBogus();b.$.rowSpan=j;a.$.rowSpan=i;1==j&&b.removeAttribute(\"rowSpan\");1==i&&a.removeAttribute(\"rowSpan\");return a}function y(c,d){var b=\no(c);if(1<b.length)return!1;if(d)return!0;var b=b[0],a=b.getParent(),e=a.getAscendant(\"table\"),e=CKEDITOR.tools.buildTableMap(e),f=v(e,a.$.rowIndex,b),g=b.$.colSpan;if(1<g)a=Math.ceil(g/2),g=Math.floor(g/2);else{for(var g=a=1,h=[],i=0;i<e.length;i++){var j=e[i];h.push(j[f]);1<j[f].rowSpan&&(i+=j[f].rowSpan-1)}for(e=0;e<h.length;e++)h[e].colSpan++}e=b.clone();e.insertAfter(b);CKEDITOR.env.ie||e.appendBogus();b.$.colSpan=a;e.$.colSpan=g;1==a&&b.removeAttribute(\"colSpan\");1==g&&e.removeAttribute(\"colSpan\");\nreturn e}var z=/^(?:td|th)$/;CKEDITOR.plugins.tabletools={requires:\"table,dialog,contextmenu\",init:function(c){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}var b=c.lang.table;c.addCommand(\"cellProperties\",new CKEDITOR.dialogCommand(\"cellProperties\",d()));CKEDITOR.dialog.add(\"cellProperties\",this.path+\"dialogs/tableCell.js\");c.addCommand(\"rowDelete\",d({exec:function(a){a=\na.getSelection();u(p(a))}}));c.addCommand(\"rowInsertBefore\",d({exec:function(a){a=a.getSelection();m(a,!0)}}));c.addCommand(\"rowInsertAfter\",d({exec:function(a){a=a.getSelection();m(a)}}));c.addCommand(\"columnDelete\",d({exec:function(a){for(var a=a.getSelection(),a=o(a),b=a[0],c=a[a.length-1],a=b.getAscendant(\"table\"),d=CKEDITOR.tools.buildTableMap(a),h,i,j=[],k=0,m=d.length;k<m;k++)for(var l=0,n=d[k].length;l<n;l++)d[k][l]==b.$&&(h=l),d[k][l]==c.$&&(i=l);for(k=h;k<=i;k++)for(l=0;l<d.length;l++)c=\nd[l],b=new CKEDITOR.dom.element(a.$.rows[l]),c=new CKEDITOR.dom.element(c[k]),c.$&&(1==c.$.colSpan?c.remove():c.$.colSpan-=1,l+=c.$.rowSpan-1,b.$.cells.length||j.push(b));i=a.$.rows[0]&&a.$.rows[0].cells;h=new CKEDITOR.dom.element(i[h]||(h?i[h-1]:a.$.parentNode));j.length==m&&a.remove();h&&u(h,!0)}}));c.addCommand(\"columnInsertBefore\",d({exec:function(a){a=a.getSelection();n(a,!0)}}));c.addCommand(\"columnInsertAfter\",d({exec:function(a){a=a.getSelection();n(a)}}));c.addCommand(\"cellDelete\",d({exec:function(a){a=\na.getSelection();s(a)}}));c.addCommand(\"cellMerge\",d({exec:function(a){u(r(a.getSelection()),!0)}}));c.addCommand(\"cellMergeRight\",d({exec:function(a){u(r(a.getSelection(),\"right\"),!0)}}));c.addCommand(\"cellMergeDown\",d({exec:function(a){u(r(a.getSelection(),\"down\"),!0)}}));c.addCommand(\"cellVerticalSplit\",d({exec:function(a){u(x(a.getSelection()))}}));c.addCommand(\"cellHorizontalSplit\",d({exec:function(a){u(y(a.getSelection()))}}));c.addCommand(\"cellInsertBefore\",d({exec:function(a){a=a.getSelection();\nt(a,!0)}}));c.addCommand(\"cellInsertAfter\",d({exec:function(a){a=a.getSelection();t(a)}}));c.addMenuItems&&c.addMenuItems({tablecell:{label:b.cell.menu,group:\"tablecell\",order:1,getItems:function(){var a=c.getSelection(),b=o(a);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:r(a,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:r(a,\"right\",!0)?CKEDITOR.TRISTATE_OFF:\nCKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:r(a,\"down\",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:x(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:y(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<b.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:b.cell.insertBefore,group:\"tablecell\",command:\"cellInsertBefore\",order:5},tablecell_insertAfter:{label:b.cell.insertAfter,\ngroup:\"tablecell\",command:\"cellInsertAfter\",order:10},tablecell_delete:{label:b.cell.deleteCell,group:\"tablecell\",command:\"cellDelete\",order:15},tablecell_merge:{label:b.cell.merge,group:\"tablecell\",command:\"cellMerge\",order:16},tablecell_merge_right:{label:b.cell.mergeRight,group:\"tablecell\",command:\"cellMergeRight\",order:17},tablecell_merge_down:{label:b.cell.mergeDown,group:\"tablecell\",command:\"cellMergeDown\",order:18},tablecell_split_horizontal:{label:b.cell.splitHorizontal,group:\"tablecell\",\ncommand:\"cellHorizontalSplit\",order:19},tablecell_split_vertical:{label:b.cell.splitVertical,group:\"tablecell\",command:\"cellVerticalSplit\",order:20},tablecell_properties:{label:b.cell.title,group:\"tablecellproperties\",command:\"cellProperties\",order:21},tablerow:{label:b.row.menu,group:\"tablerow\",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:b.row.insertBefore,\ngroup:\"tablerow\",command:\"rowInsertBefore\",order:5},tablerow_insertAfter:{label:b.row.insertAfter,group:\"tablerow\",command:\"rowInsertAfter\",order:10},tablerow_delete:{label:b.row.deleteRow,group:\"tablerow\",command:\"rowDelete\",order:15},tablecolumn:{label:b.column.menu,group:\"tablecolumn\",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:b.column.insertBefore,\ngroup:\"tablecolumn\",command:\"columnInsertBefore\",order:5},tablecolumn_insertAfter:{label:b.column.insertAfter,group:\"tablecolumn\",command:\"columnInsertAfter\",order:10},tablecolumn_delete:{label:b.column.deleteColumn,group:\"tablecolumn\",command:\"columnDelete\",order:15}});c.contextMenu&&c.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getSelectedCells:o};\nCKEDITOR.plugins.add(\"tabletools\",CKEDITOR.plugins.tabletools)})();CKEDITOR.tools.buildTableMap=function(o){for(var o=o.$.rows,m=-1,p=[],q=0;q<o.length;q++){m++;!p[m]&&(p[m]=[]);for(var n=-1,t=0;t<o[q].cells.length;t++){var s=o[q].cells[t];for(n++;p[m][n];)n++;for(var u=isNaN(s.colSpan)?1:s.colSpan,s=isNaN(s.rowSpan)?1:s.rowSpan,v=0;v<s;v++){p[m+v]||(p[m+v]=[]);for(var r=0;r<u;r++)p[m+v][n+r]=o[q].cells[t]}n+=u-1}}return p};(function(){function h(a){this.editor=a;this.reset()}CKEDITOR.plugins.add(\"undo\",{init:function(a){function c(a){b.enabled&&!1!==a.data.command.canUndo&&b.save()}var b=new h(a),d=a.addCommand(\"undo\",{exec:function(){b.undo()&&(a.selectionChange(),this.fire(\"afterUndo\"))},state:CKEDITOR.TRISTATE_DISABLED,canUndo:!1}),e=a.addCommand(\"redo\",{exec:function(){b.redo()&&(a.selectionChange(),this.fire(\"afterRedo\"))},state:CKEDITOR.TRISTATE_DISABLED,canUndo:!1});a.setKeystroke([[CKEDITOR.CTRL+90,\"undo\"],\n[CKEDITOR.CTRL+89,\"redo\"],[CKEDITOR.CTRL+CKEDITOR.SHIFT+90,\"redo\"]]);b.onChange=function(){d.setState(b.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);e.setState(b.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on(\"beforeCommandExec\",c);a.on(\"afterCommandExec\",c);a.on(\"saveSnapshot\",function(a){b.save(a.data&&a.data.contentOnly)});a.on(\"contentDom\",function(){a.editable().on(\"keydown\",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b.type(a)})});a.on(\"beforeModeUnload\",\nfunction(){\"wysiwyg\"==a.mode&&b.save(!0)});a.on(\"mode\",function(){b.enabled=a.readOnly?!1:\"wysiwyg\"==a.mode;b.onChange()});a.ui.addButton&&(a.ui.addButton(\"Undo\",{label:a.lang.undo.undo,command:\"undo\",toolbar:\"undo,10\"}),a.ui.addButton(\"Redo\",{label:a.lang.undo.redo,command:\"redo\",toolbar:\"undo,20\"}));a.resetUndo=function(){b.reset();a.fire(\"saveSnapshot\")};a.on(\"updateSnapshot\",function(){b.currentImage&&b.update()});a.on(\"lockSnapshot\",b.lock,b);a.on(\"unlockSnapshot\",b.unlock,b)}});CKEDITOR.plugins.undo=\n{};var i=CKEDITOR.plugins.undo.Image=function(a){this.editor=a;a.fire(\"beforeUndoImage\");var c=a.getSnapshot(),b=c&&a.getSelection();CKEDITOR.env.ie&&c&&(c=c.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));this.contents=c;this.bookmarks=b&&b.createBookmarks2(!0);a.fire(\"afterUndoImage\")},j=/\\b(?:href|src|name)=\"[^\"]*?\"/gi;i.prototype={equals:function(a,c){var b=this.contents,d=a.contents;if(CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat))b=b.replace(j,\"\"),d=d.replace(j,\"\");if(b!=d)return!1;\nif(c)return!0;b=this.bookmarks;d=a.bookmarks;if(b||d){if(!b||!d||b.length!=d.length)return!1;for(var e=0;e<b.length;e++){var g=b[e],f=d[e];if(g.startOffset!=f.startOffset||g.endOffset!=f.endOffset||!CKEDITOR.tools.arrayCompare(g.start,f.start)||!CKEDITOR.tools.arrayCompare(g.end,f.end))return!1}}return!0}};var k={8:1,46:1},m={16:1,17:1,18:1},l={37:1,38:1,39:1,40:1};h.prototype={type:function(a){var a=a&&a.data.getKey(),c=a in k,b=this.lastKeystroke in k,d=c&&a==this.lastKeystroke,e=a in l,g=this.lastKeystroke in\nl;if(!(a in m||this.typing)||!c&&!e&&(b||g)||c&&!d){var f=new i(this.editor),h=this.snapshots.length;CKEDITOR.tools.setTimeout(function(){var a=this.editor.getSnapshot();CKEDITOR.env.ie&&(a=a.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));f.contents!=a&&h==this.snapshots.length&&(this.typing=!0,this.save(!1,f,!1)||this.snapshots.splice(this.index+1,this.snapshots.length-this.index-1),this.hasUndo=!0,this.hasRedo=!1,this.modifiersCount=this.typesCount=1,this.onChange())},0,this)}this.lastKeystroke=a;c?\n(this.typesCount=0,this.modifiersCount++,25<this.modifiersCount&&(this.save(!1,null,!1),this.modifiersCount=1)):e||(this.modifiersCount=0,this.typesCount++,25<this.typesCount&&(this.save(!1,null,!1),this.typesCount=1))},reset:function(){this.lastKeystroke=0;this.snapshots=[];this.index=-1;this.limit=this.editor.config.undoStackSize||20;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.typing=!1;delete this.lastKeystroke;this.modifiersCount=\nthis.typesCount=0},fireChange:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(a,c,b){if(this.locked)return!1;var d=this.snapshots;c||(c=new i(this.editor));if(!1===c.contents||this.currentImage&&c.equals(this.currentImage,a))return!1;d.splice(this.index+1,d.length-this.index-1);d.length==this.limit&&d.shift();this.index=d.push(c)-1;this.currentImage=c;!1!==b&&this.fireChange();return!0},restoreImage:function(a){var c=\nthis.editor,b;a.bookmarks&&(c.focus(),b=c.getSelection());this.locked=1;this.editor.loadSnapshot(a.contents);a.bookmarks?b.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(c=this.editor.document.getBody().$.createTextRange(),c.collapse(!0),c.select());this.locked=0;this.index=a.index;this.update();this.fireChange()},getNextImage:function(a){var c=this.snapshots,b=this.currentImage,d;if(b)if(a)for(d=this.index-1;0<=d;d--){if(a=c[d],!b.equals(a,!0))return a.index=d,a}else for(d=this.index+1;d<c.length;d++)if(a=\nc[d],!b.equals(a,!0))return a.index=d,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(){this.locked||this.snapshots.splice(this.index,1,this.currentImage=\nnew i(this.editor))},lock:function(){if(!this.locked){var a=this.editor.getSnapshot();this.locked={update:this.currentImage&&a==this.currentImage.contents?a:null}}},unlock:function(){if(this.locked){var a=this.locked.update,c=this.editor.getSnapshot();this.locked=null;\"string\"==typeof a&&c!=a&&this.update()}}}})();CKEDITOR.plugins.add(\"wsc\",{requires:\"dialog\",init:function(a){a.addCommand(\"checkspell\",new CKEDITOR.dialogCommand(\"checkspell\")).modes={wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname};\"undefined\"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton(\"SpellChecker\",{label:a.lang.wsc.toolbar,command:\"checkspell\",toolbar:\"spellchecker,10\"});CKEDITOR.dialog.add(\"checkspell\",this.path+\"dialogs/wsc.js\")}});\nCKEDITOR.config.wsc_customerId=CKEDITOR.config.wsc_customerId||\"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk\";CKEDITOR.config.wsc_customLoaderScript=CKEDITOR.config.wsc_customLoaderScript||null;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,list,indent,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,htmlwriter,horizontalrule,wysiwygarea,image,fakeobjects,link,magicline,maximize,pastetext,pastefromword,removeformat,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc';CKEDITOR.config.skin='moono';(function() {var icons = ( 'about,0,bold,32,italic,64,strike,96,subscript,128,superscript,160,underline,192,blockquote,224,copy-rtl,256,copy,288,cut-rtl,320,cut,352,paste-rtl,384,paste,416,bulletedlist-rtl,448,bulletedlist,480,numberedlist-rtl,512,numberedlist,544,indent-rtl,576,indent,608,outdent-rtl,640,outdent,672,horizontalrule,704,image,736,anchor-rtl,768,anchor,800,link,832,unlink,864,maximize,896,pastetext-rtl,928,pastetext,960,pastefromword-rtl,992,pastefromword,1024,removeformat,1056,source-rtl,1088,source,1120,specialchar,1152,scayt,1184,table,1216,redo-rtl,1248,redo,1280,undo-rtl,1312,undo,1344,spellchecker,1376' ),path = CKEDITOR.getUrl( 'plugins/icons.png' ),icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ] };})();CKEDITOR.lang.languages={\"af\":1,\"ar\":1,\"eu\":1,\"bn\":1,\"bs\":1,\"bg\":1,\"ca\":1,\"zh-cn\":1,\"zh\":1,\"hr\":1,\"cs\":1,\"da\":1,\"nl\":1,\"en\":1,\"en-au\":1,\"en-ca\":1,\"en-gb\":1,\"eo\":1,\"et\":1,\"fo\":1,\"fi\":1,\"fr\":1,\"fr-ca\":1,\"gl\":1,\"ka\":1,\"de\":1,\"el\":1,\"gu\":1,\"he\":1,\"hi\":1,\"hu\":1,\"is\":1,\"it\":1,\"ja\":1,\"km\":1,\"ko\":1,\"ku\":1,\"lv\":1,\"lt\":1,\"mk\":1,\"ms\":1,\"mn\":1,\"no\":1,\"nb\":1,\"fa\":1,\"pl\":1,\"pt-br\":1,\"pt\":1,\"ro\":1,\"ru\":1,\"sr\":1,\"sr-latn\":1,\"sk\":1,\"sl\":1,\"es\":1,\"sv\":1,\"th\":1,\"tr\":1,\"ug\":1,\"uk\":1,\"vi\":1,\"cy\":1};}());"
  },
  {
    "path": "src/main/webapp/assets/clockface/css/clockface.css",
    "content": ".clearfix {\n  *zoom: 1;\n}\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  content: \"\";\n  line-height: 0;\n}\n.clearfix:after {\n  clear: both;\n}\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.clockface {\n  width: 160px;\n  padding: 3px;\n  text-align: center;\n  /*\n    .l3 .center span {\n    \tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\t.ie7-inline-block();  \n\t\tpadding: 0 2px;  \t\n    }\n    */\n\n  /*\n    input {\n    \twidth: 20px;\n    \tmargin: 0;\n    \tvertical-align: top; \n     }\t\n\n    a {\n    \ttext-decoration: none;\n    \tpadding: 0 3px;\n    \tvertical-align: top;\n    \tfont-size: 0.85em;\n    \t.border-radius(3px);\n\n    \t&.am {margin-right: 8px;}\t\n    \t\n    \t&.active,\n    \t&.active:hover {\n    \t\t.buttonBackground(@btnSuccessBackground, spin(@btnSuccessBackground, 20));\n    \t}\n    }\n    */\n\n}\n.clockface > div {\n  clear: both;\n  overflow: auto;\n}\n.clockface .outer,\n.clockface .inner {\n  width: 22px;\n  height: 22px;\n  line-height: 22px;\n  cursor: default;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.clockface .outer.active,\n.clockface .inner.active,\n.clockface .outer.active:hover,\n.clockface .inner.active:hover {\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.clockface .outer:hover,\n.clockface .inner:hover {\n  background-color: #dcdcdc;\n}\n.clockface .outer {\n  color: gray;\n  font-size: 0.8em;\n}\n.clockface .outer.active,\n.clockface .outer.active:hover {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #5bb75b;\n  background-image: -moz-linear-gradient(top, #62c462, #51a351);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));\n  background-image: -webkit-linear-gradient(top, #62c462, #51a351);\n  background-image: -o-linear-gradient(top, #62c462, #51a351);\n  background-image: linear-gradient(to bottom, #62c462, #51a351);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);\n  border-color: #51a351 #51a351 #387038;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #51a351;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.clockface .outer.active:hover,\n.clockface .outer.active:hover:hover,\n.clockface .outer.active:active,\n.clockface .outer.active:hover:active,\n.clockface .outer.active.active,\n.clockface .outer.active:hover.active,\n.clockface .outer.active.disabled,\n.clockface .outer.active:hover.disabled,\n.clockface .outer.active[disabled],\n.clockface .outer.active:hover[disabled] {\n  color: #ffffff;\n  background-color: #51a351;\n  *background-color: #499249;\n}\n.clockface .outer.active:active,\n.clockface .outer.active:hover:active,\n.clockface .outer.active.active,\n.clockface .outer.active:hover.active {\n  background-color: #408140 \\9;\n}\n.clockface .inner.active,\n.clockface .inner.active:hover {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #0044cc;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.clockface .inner.active:hover,\n.clockface .inner.active:hover:hover,\n.clockface .inner.active:active,\n.clockface .inner.active:hover:active,\n.clockface .inner.active.active,\n.clockface .inner.active:hover.active,\n.clockface .inner.active.disabled,\n.clockface .inner.active:hover.disabled,\n.clockface .inner.active[disabled],\n.clockface .inner.active:hover[disabled] {\n  color: #ffffff;\n  background-color: #0044cc;\n  *background-color: #003bb3;\n}\n.clockface .inner.active:active,\n.clockface .inner.active:hover:active,\n.clockface .inner.active.active,\n.clockface .inner.active:hover.active {\n  background-color: #003399 \\9;\n}\n.clockface .l1 .cell,\n.clockface .l5 .cell {\n  width: 22px;\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n}\n.clockface .l1 .outer {\n  margin-bottom: 3px;\n}\n.clockface .l5 .outer {\n  margin-top: 3px;\n}\n.clockface .l2 .outer,\n.clockface .l3 .outer,\n.clockface .l4 .outer,\n.clockface .l2 .inner,\n.clockface .l3 .inner,\n.clockface .l4 .inner {\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n  vertical-align: middle;\n}\n.clockface .l2 .left,\n.clockface .l3 .left,\n.clockface .l4 .left {\n  float: left;\n}\n.clockface .l2 .left .outer,\n.clockface .l3 .left .outer,\n.clockface .l4 .left .outer {\n  margin-right: 3px;\n}\n.clockface .l2 .right,\n.clockface .l3 .right,\n.clockface .l4 .right {\n  float: right;\n}\n.clockface .l2 .right .outer,\n.clockface .l3 .right .outer,\n.clockface .l4 .right .outer {\n  margin-left: 3px;\n}\n.clockface .ampm {\n  font-size: 0.8em;\n  text-decoration: none;\n  border-bottom: dashed 1px;\n}\n.clockface .ampm:focus {\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n}\n"
  },
  {
    "path": "src/main/webapp/assets/clockface/js/clockface.js",
    "content": "/**\n* Clockface - v1.0.0\n* Clockface timepicker for Twitter Bootstrap\n*\n* Confusion with noon and midnight: \n* http://en.wikipedia.org/wiki/12-hour_clock\n* Here considered '00:00 am' as midnight and '12:00 pm' as noon.\n*\n* Author: Vitaliy Potapov\n* Project page: http://github.com/vitalets/clockface\n* Copyright (c) 2012 Vitaliy Potapov. Released under MIT License.\n**/\n(function ($) {\n\n    var Clockface = function (element, options) {\n        this.$element = $(element);\n        this.options = $.extend({}, $.fn.clockface.defaults, options, this.$element.data());\n        this.init();  \n     };\n\n    Clockface.prototype = {\n        constructor: Clockface, \n        init: function () {\n          //apply template\n          this.$clockface = $($.fn.clockface.template);\n          this.$clockface.find('.l1 .cell, .left.cell').html('<div class=\"outer\"></div><div class=\"inner\"></div>'); \n          this.$clockface.find('.l5 .cell, .right.cell').html('<div class=\"inner\"></div><div class=\"outer\"></div>'); \n          this.$clockface.hide();\n\n          this.$outer = this.$clockface.find('.outer');\n          this.$inner = this.$clockface.find('.inner');\n          this.$ampm = this.$clockface.find('.ampm');\n\n          //internal vars\n          this.ampm = null;\n          this.hour = null;\n          this.minute = null;\n          \n          //click am/pm \n          this.$ampm.click($.proxy(this.clickAmPm, this));\n\n          //click cell\n          this.$clockface.on('click', '.cell', $.proxy(this.click, this));\n\n          this.parseFormat();\n          this.prepareRegexp();\n\n          //set ampm text\n          this.ampmtext = this.is24 ? {am: '12-23', pm: '0-11'} : {am: 'AM', pm: 'PM'};\n\n          this.isInline = this.$element.is('div');\n          if(this.isInline) {\n            this.$clockface.addClass('clockface-inline').appendTo(this.$element);\n          } else {\n            this.$clockface.addClass('dropdown-menu').appendTo('body');\n            if(this.options.trigger === 'focus') {\n              this.$element.on('focus.clockface', $.proxy(function(e) { this.show(); }, this));\n            }\n\n            // Click outside hide it. Register single handler for all clockface widgets\n            $(document).off('click.clockface').on('click.clockface', $.proxy(function (e) {\n                var $target = $(e.target);\n                //click inside some clockface --> do nothing\n                if ($target.closest('.clockface').length) {\n                  return;\n                }\n                //iterate all open clockface and close all except current\n                $('.clockface-open').each(function(){\n                  if(this === e.target) {\n                    return;\n                  }\n                  $(this).clockface('hide');\n                });\n            }, this));\n          }\n\n          //fill minutes once\n          this.fill('minute');\n        },\n\n        /*\n        Displays widget with specified value\n        */\n        show: function(value) {\n            if(this.$clockface.is(':visible')) {\n              return;\n            }\n            if(!this.isInline) {\n                if(value === undefined) {\n                  value = this.$element.val();\n                }\n                this.$element.addClass('clockface-open');\n                this.$element.on('keydown.clockface', $.proxy(this.keydown, this));\n                this.place();\n                $(window).on('resize.clockface', $.proxy(this.place, this));\n            }\n            this.$clockface.show();\n            this.setTime(value);\n\n            //trigger shown event\n            this.$element.triggerHandler('shown.clockface', this.getTime(true));\n        },\n        /*\n        hides widget\n        */\n        hide: function() {\n            this.$clockface.hide();\n            if(!this.isInline) {\n              this.$element.removeClass('clockface-open');  \n              this.$element.off('keydown.clockface');\n              $(window).off('resize.clockface');\n            }\n\n            //trigger hidden event\n            this.$element.triggerHandler('hidden.clockface', this.getTime(true));            \n        },\n\n        /*\n        toggles show/hide\n        */\n        toggle: function(value) {\n          if(this.$clockface.is(':visible')) {\n            this.hide();\n          } else {\n            this.show(value);\n          }\n        },\n\n         /*\n        Set time of clockface. Am/pm will be set automatically.\n        Value can be Date object or string\n        */\n        setTime: function(value) {\n          var res, hour, minute, ampm = 'am';\n\n          //no new value \n          if(value === undefined) {\n            //if ampm null, it;s first showw, need to render hours ('am' by default)\n            if(this.ampm === null) {\n              this.setAmPm('am');\n            }\n            return;\n          }\n\n          //take value from Date object\n          if(value instanceof Date) {\n            hour = value.getHours();\n            minute = value.getMinutes();\n          }\n\n          //parse value from string\n          if(typeof value === 'string' && value.length) { \n            res = this.parseTime(value);\n\n            //'24' always '0'\n            if(res.hour === 24) {\n              res.hour = 0;\n            }\n\n            hour = res.hour;             \n            minute = res.minute;             \n            ampm = res.ampm;             \n          }\n\n          //try to set ampm automatically\n          if(hour > 11 && hour < 24) {\n            ampm = 'pm';\n            //for 12h format substract 12 from value \n            if(!this.is24 && hour > 12) {\n              hour -= 12;\n            }\n          } else if(hour >= 0 && hour < 11) {\n                //always set am for 24h and for '0' in 12h \n                if(this.is24 || hour === 0) {\n                   ampm = 'am';\n               } \n               //otherwise ampm should be defined in value itself and retrieved when parsing\n          }      \n\n          this.setAmPm(ampm);\n          this.setHour(hour);\n          this.setMinute(minute);\n        },   \n\n        /*\n        Set ampm and re-fill hours\n        */\n        setAmPm: function(value) {\n          if(value === this.ampm) {\n             return;\n          } else {\n             this.ampm = value === 'am' ? 'am' : 'pm';\n          }\n\n          //set link's text\n          this.$ampm.text(this.ampmtext[this.ampm]);\n\n          //re-fill and highlight hour\n          this.fill('hour');\n          this.highlight('hour');\n        },   \n        /*\n        Sets hour value and highlight if possible\n        */\n        setHour: function(value) {\n          value = parseInt(value, 10);\n          value = isNaN(value) ? null : value;\n          if(value < 0 || value > 23) {\n            value = null;\n          }\n\n          if(value === this.hour) {\n            return;\n          } else {\n            this.hour = value;\n          }\n\n          this.highlight('hour');\n        },\n\n        /*\n        Sets minute value and highlight\n        */\n        setMinute: function(value) {\n          value = parseInt(value, 10);\n          value = isNaN(value) ? null : value;\n          if(value < 0 || value > 59) {\n            value = null;\n          }\n\n          if(value === this.minute) {\n            return;\n          } else {\n            this.minute = value;\n          }\n\n          this.highlight('minute');\n        },        \n\n        /*\n        Highlights hour/minute\n        */\n        highlight: function(what) {\n          var index,\n              values = this.getValues(what),\n              value = what === 'minute' ? this.minute : this.hour,\n              $cells = what === 'minute' ? this.$outer : this.$inner;\n\n          $cells.removeClass('active');\n\n          //find index of value and highlight if possible\n          index = $.inArray(value, values);\n          if(index >= 0) {\n            $cells.eq(index).addClass('active');\n          }\n        },\n\n        /*\n        Fill values around\n        */ \n        fill: function(what) {\n          var values = this.getValues(what),\n              $cells = what === 'minute' ? this.$outer : this.$inner,\n              leadZero = what === 'minute';           \n\n          $cells.each(function(i){\n            var v = values[i];\n            if(leadZero && v < 10) {\n              v = '0' + v;\n            }\n            $(this).text(v);\n          });\n        },          \n\n        /*\n        returns values of hours or minutes, depend on ampm and 24/12 format (0-11, 12-23, 00-55, etc)\n        param what: 'hour'/'minute'\n        */\n        getValues: function(what) {\n          var values = [11, 0, 1, 10, 2, 9, 3, 8, 4, 7, 6, 5],\n              result = [];\n\n          if(what === 'minute') {\n              $.each(values, function(i, v) { result[i] = v*5; });\n          } else if(this.ampm === 'pm') {\n              if(this.is24) {\n                $.each(values, function(i, v) { result[i] = v+12; });\n              } else {\n                result = values.slice();\n                result[1] = 12; //need this to show '12' instead of '0' for 12h pm\n              }\n          } else {\n             result = values.slice();\n          }\n          return result;\n        },\n\n        /*\n        Click cell handler.\n        Stores hour/minute and highlights.\n        On second click deselect value\n        */\n        click: function(e) {\n          var $target = $(e.target),\n              value = $target.hasClass('active') ? null : $target.text();\n          if($target.hasClass('inner')) {\n            this.setHour(value);\n          } else {\n            this.setMinute(value);\n          }\n\n          //update value in input\n          if(!this.isInline) {\n            this.$element.val(this.getTime());\n          }          \n\n          //trigger pick event\n          this.$element.triggerHandler('pick.clockface', this.getTime(true));  \n        },\n\n        /*\n        Click handler on ampm link\n        */\n        clickAmPm: function(e) {\n          e.preventDefault();\n          //toggle am/pm\n          this.setAmPm(this.ampm === 'am' ? 'pm' : 'am');\n\n          //update value in input\n          if(!this.isInline && !this.is24) {\n            this.$element.val(this.getTime());\n          }    \n\n          //trigger pick event\n          this.$element.triggerHandler('pick.clockface', this.getTime(true));                  \n        },\n        \n\n        /*\n        Place widget below input\n        */\n        place: function(){\n          var zIndex = parseInt(this.$element.parents().filter(function() {\n                   return $(this).css('z-index') != 'auto';\n             }).first().css('z-index'), 10)+10,\n             offset = this.$element.offset();\n          this.$clockface.css({\n            top: offset.top + this.$element.outerHeight(),\n            left: offset.left,\n            zIndex: zIndex\n          });\n        },  \n\n        /*\n        keydown handler (for not inline mode)\n        */\n        keydown: function(e) {\n          //tab, escape, enter --> hide\n          if(/^(9|27|13)$/.test(e.which)) {\n            this.hide();\n            return;\n          } \n\n          clearTimeout(this.timer);\n          this.timer = setTimeout($.proxy(function(){\n            this.setTime(this.$element.val());\n          }, this), 500);\n        },  \n\n        /*\n        Parse format from options and set this.is24\n        */\n        parseFormat: function() {\n          var format = this.options.format,\n              hFormat = 'HH',\n              mFormat = 'mm';\n\n          //hour format    \n          $.each(['HH', 'hh', 'H', 'h'], function(i, f){\n            if(format.indexOf(f) !== -1) {\n              hFormat = f;\n              return false;\n            }\n          });\n\n          //minute format\n          $.each(['mm', 'm'], function(i, f){\n            if(format.indexOf(f) !== -1) {\n              mFormat = f;\n              return false;\n            }\n          });          \n\n          //is 24 hour format\n          this.is24 = hFormat.indexOf('H') !== -1; \n\n          this.hFormat = hFormat;\n          this.mFormat = mFormat;\n        },\n\n       \n\n        /*\n        Parse value passed as string or Date object\n        */\n        parseTime: function(value) {\n          var hour = null, \n              minute = null, \n              ampm = 'am', \n              parts = [], digits;\n\n            value = $.trim(value);\n\n            //try parse time from string assuming separator exist\n            if(this.regexpSep) {\n                parts = value.match(this.regexpSep);\n            }\n\n            if(parts && parts.length) {\n              hour = parts[1] ? parseInt(parts[1], 10) : null;\n              minute = parts[2] ? parseInt(parts[2], 10): null;\n              ampm = (!parts[3] || parts[3].toLowerCase() === 'a') ? 'am' : 'pm';\n            } else {\n              //if parse with separator failed, search for 1,4-digit block and process it\n              //use reversed string to start from end (usefull with full dates)\n              //see http://stackoverflow.com/questions/141348/what-is-the-best-way-to-parse-a-time-into-a-date-object-from-user-input-in-javas\n              value = value.split('').reverse().join('').replace(/\\s/g, '');\n              parts = value.match(this.regexpNoSep);\n              if(parts && parts.length) {\n                ampm = (!parts[1] || parts[1].toLowerCase() === 'a') ? 'am' : 'pm';\n                //reverse back\n                digits = parts[2].split('').reverse().join('');\n                //use smart analyzing to detect hours and minutes\n                switch(digits.length) {\n                  case 1:\n                    hour = parseInt(digits, 10); //e.g. '6'\n                  break;\n                  case 2:\n                    hour = parseInt(digits, 10); //e.g. '16'\n                    //if((this.is24 && hour > 24) || (!this.is24 && hour > 12)) { //e.g. 26\n                    if(hour > 24) { //e.g. 26\n                      hour = parseInt(digits[0], 10);\n                      minute = parseInt(digits[1], 10);\n                    }\n                  break;\n                  case 3:\n                    hour = parseInt(digits[0], 10);  //e.g. 105\n                    minute = parseInt(digits[1]+digits[2], 10); \n                    if(minute > 59) { \n                      hour = parseInt(digits[0]+digits[1], 10); //e.g. 195\n                      minute = parseInt(digits[2], 10); \n                      if(hour > 24) {\n                        hour = null;\n                        minute = null;\n                      }\n                    }\n                  break;\n                  case 4:\n                    hour = parseInt(digits[0]+digits[1], 10); //e.g. 2006\n                    minute = parseInt(digits[2]+digits[3], 10);\n                    if(hour > 24) {\n                      hour = null;\n                    }\n                    if(minute > 59) {\n                      minute = null;\n                    }\n                }\n              }\n            }\n\n          return {hour: hour, minute: minute, ampm: ampm};\n        },\n\n        prepareRegexp: function() {\n            //take separator from format\n            var sep = this.options.format.match(/h\\s*([^hm]?)\\s*m/i); //HH-mm, HH:mm\n            if(sep && sep.length) {\n              sep = sep[1];\n            } \n\n            //sep can be null for HH, and '' for HHmm \n            this.separator = sep;\n    \n            //parse from string\n            //use reversed string and regexp to parse 2-digit minutes first\n            //see http://stackoverflow.com/questions/141348/what-is-the-best-way-to-parse-a-time-into-a-date-object-from-user-input-in-javas\n            //this.regexp = new RegExp('(a|p)?\\\\s*((\\\\d\\\\d?)' + sep + ')?(\\\\d\\\\d?)', 'i');\n\n            //regexp, used with separator\n            this.regexpSep = (this.separator && this.separator.length) ? new RegExp('(\\\\d\\\\d?)\\\\s*\\\\' + this.separator + '\\\\s*(\\\\d?\\\\d?)\\\\s*(a|p)?', 'i') : null;\n\n            //second regexp applied if previous has no result or separator is empty (to reversed string)\n            this.regexpNoSep = new RegExp('(a|p)?\\\\s*(\\\\d{1,4})', 'i');\n        },\n\n        /*\n        Returns time as string in specified format\n        */\n        getTime: function(asObject) {\n          if(asObject === true) {\n            return {\n              hour: this.hour,\n              minute: this.minute,\n              ampm: this.ampm\n            };\n          }\n\n          var hour = this.hour !== null ? this.hour + '' : '',\n              minute = this.minute !== null ? this.minute + '' : '',\n              result = this.options.format;\n\n          if(!hour.length && !minute.length) {\n            return '';\n          }   \n\n          if(this.hFormat.length > 1 && hour.length === 1) {\n            hour = '0' + hour;\n          }   \n\n          if(this.mFormat.length > 1 && minute.length === 1) {\n            minute = '0' + minute;\n          }\n\n          //delete separator if no minutes\n          if(!minute.length && this.separator) {\n            result = result.replace(this.separator, '');\n          }\n\n          result = result.replace(this.hFormat, hour).replace(this.mFormat, minute);\n          if(!this.is24) {\n            if(result.indexOf('A') !== -1) {\n               result = result.replace('A', this.ampm.toUpperCase());\n            } else {\n               result = result.replace('a', this.ampm);\n            }\n          }\n\n          return result;\n        },\n\n        /*\n        Removes widget and detach events\n        */\n        destroy: function() {\n          this.hide();\n          this.$clockface.remove();\n          if(!this.isInline && this.options.trigger === 'focus') {\n            this.$element.off('focus.clockface');\n          }          \n        }\n    };\n\n    $.fn.clockface = function ( option ) {\n        var d, args = Array.apply(null, arguments);\n        args.shift();\n\n        //getTime returns string (not jQuery onject)\n        if(option === 'getTime' && this.length && (d = this.eq(0).data('clockface'))) {\n          return d.getTime.apply(d, args);\n        }\n\n        return this.each(function () {\n            var $this = $(this),\n            data = $this.data('clockface'),\n            options = typeof option == 'object' && option;\n            if (!data) {\n                $this.data('clockface', (data = new Clockface(this, options)));\n            }\n            if (typeof option == 'string' && typeof data[option] == 'function') {\n                data[option].apply(data, args);\n            }\n        });\n    };  \n    \n    $.fn.clockface.defaults = {\n        //see http://momentjs.com/docs/#/displaying/format/\n        format: 'H:mm',\n        trigger: 'focus' //focus|manual\n    };\n   \n\n $.fn.clockface.template = ''+\n      '<div class=\"clockface\">' +\n          '<div class=\"l1\">' +\n              '<div class=\"cell\"></div>' +\n              '<div class=\"cell\"></div>' +\n              '<div class=\"cell\"></div>' +\n          '</div>' +\n          '<div class=\"l2\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n          '</div>'+\n          '<div class=\"l3\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n                '<div class=\"center\"><a href=\"#\" class=\"ampm\"></a></div>' +\n          '</div>'+\n          '<div class=\"l4\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n          '</div>'+\n          '<div class=\"l5\">' +\n                '<div class=\"cell\"></div>' +\n                '<div class=\"cell\"></div>' +\n                '<div class=\"cell\"></div>' +\n          '</div>'+\n      '</div>';  \n\n}(window.jQuery));"
  },
  {
    "path": "src/main/webapp/assets/data-tables/DT_bootstrap.css",
    "content": "\ndiv.dataTables_length label {\n\tfloat: left;\n\ttext-align: left;\n}\n\ndiv.dataTables_length select {\n\twidth: 75px;\n}\n\ndiv.dataTables_filter label {\n\tfloat: right;\n}\n\ndiv.dataTables_info {\n\tpadding-top: 8px;\n}\n\ndiv.dataTables_paginate {\n\tfloat: right;\n\tmargin: 0;\n}\n\ntable.table {\n\tclear: both;\n\tmargin-bottom: 6px !important;\n\tmax-width: none !important;\n}\n\ntable.table thead .sorting,\ntable.table thead .sorting_asc,\ntable.table thead .sorting_desc,\ntable.table thead .sorting_asc_disabled,\ntable.table thead .sorting_desc_disabled {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.table thead .sorting { background: url('images/sort_both.png') no-repeat center right; }\ntable.table thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }\ntable.table thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }\n\ntable.table thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }\ntable.table thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n/* Scrolling */\ndiv.dataTables_scrollHead table {\n\tmargin-bottom: 0 !important;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\ndiv.dataTables_scrollHead table thead tr:last-child th:first-child,\ndiv.dataTables_scrollHead table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody tbody tr:first-child th,\ndiv.dataTables_scrollBody tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n\tborder-top: none;\n}\n\n\n\n\n/*\n * TableTools styles\n */\n.table tbody tr.active td,\n.table tbody tr.active th {\n\tbackground-color: #08C;\n\tcolor: white;\n}\n\n.table tbody tr.active:hover td,\n.table tbody tr.active:hover th {\n\tbackground-color: #0075b0 !important;\n}\n\n.table-striped tbody tr.active:nth-child(odd) td,\n.table-striped tbody tr.active:nth-child(odd) th {\n\tbackground-color: #017ebc;\n}\n\ntable.DTTT_selectable tbody tr {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.DTTT .btn {\n\tcolor: #333 !important;\n\tfont-size: 12px;\n}\n\ndiv.DTTT .btn:hover {\n\ttext-decoration: none !important;\n}\n\n\nul.DTTT_dropdown.dropdown-menu a {\n\tcolor: #333 !important; /* needed only when demo_page.css is included */\n}\n\nul.DTTT_dropdown.dropdown-menu li:hover a {\n\tbackground-color: #0088cc;\n\tcolor: white !important;\n}\n\n/* TableTools information display */\ndiv.DTTT_print_info.modal {\n\theight: 150px;\n\tmargin-top: -75px;\n\ttext-align: center;\n}\n\ndiv.DTTT_print_info h6 {\n\tfont-weight: normal;\n\tfont-size: 28px;\n\tline-height: 28px;\n\tmargin: 1em;\n}\n\ndiv.DTTT_print_info p {\n\tfont-size: 14px;\n\tline-height: 20px;\n}\n\n\n\n/*\n * FixedColumns styles\n */\ndiv.DTFC_LeftHeadWrapper table,\ndiv.DTFC_LeftFootWrapper table,\ntable.DTFC_Cloned tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTFC_LeftHeadWrapper table {\n\tmargin-bottom: 0 !important;\n\tborder-top-right-radius: 0 !important;\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child th,\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.DTFC_LeftFootWrapper table {\n\tborder-top: none;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/data-tables/DT_bootstrap.js",
    "content": "/* Set the defaults for DataTables initialisation */\n$.extend( true, $.fn.dataTable.defaults, {\n\t\"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\"sPaginationType\": \"bootstrap\",\n\t\"oLanguage\": {\n\t\t\"sLengthMenu\": \"_MENU_ records per page\"\n\t}\n} );\n\n\n/* Default class modification */\n$.extend( $.fn.dataTableExt.oStdClasses, {\n\t\"sWrapper\": \"dataTables_wrapper form-inline\"\n} );\n\n\n/* API method to get paging information */\n$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n{\n\treturn {\n\t\t\"iStart\":         oSettings._iDisplayStart,\n\t\t\"iEnd\":           oSettings.fnDisplayEnd(),\n\t\t\"iLength\":        oSettings._iDisplayLength,\n\t\t\"iTotal\":         oSettings.fnRecordsTotal(),\n\t\t\"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n\t\t\"iPage\":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n\t\t\"iTotalPages\":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n\t};\n};\n\n\n/* Bootstrap style pagination control */\n$.extend( $.fn.dataTableExt.oPagination, {\n\t\"bootstrap\": {\n\t\t\"fnInit\": function( oSettings, nPaging, fnDraw ) {\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(nPaging).addClass('pagination').append(\n\t\t\t\t'<ul>'+\n\t\t\t\t\t'<li class=\"prev disabled\"><a href=\"#\">&larr; '+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t'<li class=\"next disabled\"><a href=\"#\">'+oLang.sNext+' &rarr; </a></li>'+\n\t\t\t\t'</ul>'\n\t\t\t);\n\t\t\tvar els = $('a', nPaging);\n\t\t\t$(els[0]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n\t\t\t$(els[1]).bind( 'click.DT', { action: \"next\" }, fnClickHandler );\n\t\t},\n\n\t\t\"fnUpdate\": function ( oSettings, fnDraw ) {\n\t\t\tvar iListLength = 5;\n\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n\n\t\t\tif ( oPaging.iTotalPages < iListLength) {\n\t\t\t\tiStart = 1;\n\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t}\n\t\t\telse if ( oPaging.iPage <= iHalf ) {\n\t\t\t\tiStart = 1;\n\t\t\t\tiEnd = iListLength;\n\t\t\t} else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n\t\t\t\tiStart = oPaging.iTotalPages - iListLength + 1;\n\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t} else {\n\t\t\t\tiStart = oPaging.iPage - iHalf + 1;\n\t\t\t\tiEnd = iStart + iListLength - 1;\n\t\t\t}\n\n\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t\t\t// Remove the middle elements\n\t\t\t\t$('li:gt(0)', an[i]).filter(':not(:last)').remove();\n\n\t\t\t\t// Add the new list items and their event handlers\n\t\t\t\tfor ( j=iStart ; j<=iEnd ; j++ ) {\n\t\t\t\t\tsClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n\t\t\t\t\t$('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n\t\t\t\t\t\t.insertBefore( $('li:last', an[i])[0] )\n\t\t\t\t\t\t.bind('click', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\toSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\n\t\t\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Add / remove disabled classes from the static elements\n\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t$('li:first', an[i]).addClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$('li:first', an[i]).removeClass('disabled');\n\t\t\t\t}\n\n\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t$('li:last', an[i]).addClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$('li:last', an[i]).removeClass('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\n\n/*\n * TableTools Bootstrap compatibility\n * Required TableTools 2.1+\n */\nif ( $.fn.DataTable.TableTools ) {\n\t// Set the classes that TableTools uses to something suitable for Bootstrap\n\t$.extend( true, $.fn.DataTable.TableTools.classes, {\n\t\t\"container\": \"DTTT btn-group\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"btn\",\n\t\t\t\"disabled\": \"disabled\"\n\t\t},\n\t\t\"collection\": {\n\t\t\t\"container\": \"DTTT_dropdown dropdown-menu\",\n\t\t\t\"buttons\": {\n\t\t\t\t\"normal\": \"\",\n\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t}\n\t\t},\n\t\t\"print\": {\n\t\t\t\"info\": \"DTTT_print_info modal\"\n\t\t},\n\t\t\"select\": {\n\t\t\t\"row\": \"active\"\n\t\t}\n\t} );\n\n\t// Have the collection use a bootstrap compatible dropdown\n\t$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n\t\t\"collection\": {\n\t\t\t\"container\": \"ul\",\n\t\t\t\"button\": \"li\",\n\t\t\t\"liner\": \"a\"\n\t\t}\n\t} );\n}"
  },
  {
    "path": "src/main/webapp/assets/data-tables/jquery.dataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a column to the list used for the table with default values\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nTh The th element for this column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddColumn( oSettings, nTh )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.columns;\n\t\t\tvar iCol = oSettings.aoColumns.length;\n\t\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t\t\t} );\n\t\t\toSettings.aoColumns.push( oCol );\n\t\t\t\n\t\t\t/* Add a column specific filter */\n\t\t\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t\t\t{\n\t\t\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\t\t\n\t\t\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\t\t\tif ( oPre.bRegex === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bRegex = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bSmart === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bSmart = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bCaseInsensitive = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Use the column options function to initialise classes etc */\n\t\t\t_fnColumnOptions( oSettings, iCol, null );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply options for a column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column index to consider\n\t\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\t\t\n\t\t\t/* User specified column options */\n\t\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t\t{\n\t\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t\t\t{\n\t\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oOptions.sType !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = oOptions.sType;\n\t\t\t\t\toCol._bAutoType = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$.extend( oCol, oOptions );\n\t\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\t\n\t\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t\t * priority if defined\n\t\t\t\t */\n\t\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t\t}\n\t\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t\t}\n\t\t\n\t\t\t/* Cache the data get and set functions for speed */\n\t\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\t\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\t\t\n\t\t\toCol.fnGetData = function (oData, sSpecific) {\n\t\t\t\tvar innerData = mData( oData, sSpecific );\n\t\t\n\t\t\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t\t\t{\n\t\t\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t\t\t}\n\t\t\t\treturn innerData;\n\t\t\t};\n\t\t\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\t\t\n\t\t\t/* Feature sorting overrides column specific when off */\n\t\t\tif ( !oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\toCol.bSortable = false;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check that the class assignment is correct for sorting */\n\t\t\tif ( !oCol.bSortable ||\n\t\t\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\t\t\toCol.sSortingClassJUI = \"\";\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust the table column widths for new data. Note: you would probably want to \n\t\t * do a redraw after calling this function!\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAdjustColumnSizing ( oSettings )\n\t\t{\n\t\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of a visible column to the index in the data array (take account\n\t\t * of hidden columns)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMatch Visible column index to lookup\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\n\t\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\t\taiVis[iMatch] :\n\t\t\t\tnull;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of an index in the data array and convert it to the visible\n\t\t *   column index (take account of hidden columns)\n\t\t *  @param {int} iMatch Column index to lookup\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\t\n\t\t\treturn iPos !== -1 ? iPos : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the number of visible columns\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the number of visible columns\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisbleColumns( oSettings )\n\t\t{\n\t\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of column indexes that match a given property\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sParam Parameter in aoColumns to look for - typically \n\t\t *    bVisible or bSearchable\n\t\t *  @returns {array} Array of indexes with matched properties\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetColumns( oSettings, sParam )\n\t\t{\n\t\t\tvar a = [];\n\t\t\n\t\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\t\tif ( val[sParam] ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\treturn a;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the sort type based on an input string\n\t\t *  @param {string} sData data we wish to know the type of\n\t\t *  @returns {string} type (defaults to 'string' if no type can be detected)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectType( sData )\n\t\t{\n\t\t\tvar aTypes = DataTable.ext.aTypes;\n\t\t\tvar iLen = aTypes.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sType = aTypes[i]( sData );\n\t\t\t\tif ( sType !== null )\n\t\t\t\t{\n\t\t\t\t\treturn sType;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'string';\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Figure out how to reorder a display list\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {int} aiReturn index list for reordering\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReOrderIndex ( oSettings, sColumns )\n\t\t{\n\t\t\tvar aColumns = sColumns.split(',');\n\t\t\tvar aiReturn = [];\n\t\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\taiReturn.push( j );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aiReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the column ordering that DataTables expects\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {string} comma separated list of names\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOrdering ( oSettings )\n\t\t{\n\t\t\tvar sNames = '';\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t\t\t}\n\t\t\tif ( sNames.length == iLen )\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\treturn sNames.slice(0, -1);\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take the column definitions and static columns arrays and calculate how\n\t\t * they relate to column indexes. The callback function will then apply the\n\t\t * definition found for a column to a suitable configuration object.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t\t *    column index and the definition for that column.\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen;\n\t\t\n\t\t\t// Column definitions with aTargets\n\t\t\tif ( aoColDefs )\n\t\t\t{\n\t\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t\t{\n\t\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t// Statically defined columns array\n\t\t\tif ( aoCols )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfn( i, aoCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add a data array to the table, creating DOM node etc. This is the parallel to \n\t\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t\t * DOM source.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData data array to be added\n\t\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddData ( oSettings, aDataSupplied )\n\t\t{\n\t\t\tvar oCol;\n\t\t\t\n\t\t\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\t\t\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\t\t\taDataSupplied.slice() :\n\t\t\t\t$.extend( true, {}, aDataSupplied );\n\t\t\t\n\t\t\t/* Create the object for storing information about this new row */\n\t\t\tvar iRow = oSettings.aoData.length;\n\t\t\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\t\t\toData._aData = aDataIn;\n\t\t\toSettings.aoData.push( oData );\n\t\t\n\t\t\t/* Create the cells */\n\t\t\tvar nTd, sThisType;\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\t\n\t\t\t\t/* Use rendered data for filtering / sorting */\n\t\t\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* See if we should auto-detect the column type */\n\t\t\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Add to the display array */\n\t\t\toSettings.aiDisplayMaster.push( iRow );\n\t\t\n\t\t\t/* Create the DOM information */\n\t\t\tif ( !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, iRow );\n\t\t\t}\n\t\t\n\t\t\treturn iRow;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read in the data from the target table from the DOM\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGatherData( oSettings )\n\t\t{\n\t\t\tvar iLoop, i, iLen, j, jLen, jInner,\n\t\t\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\t\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\t\t\toCol, oData;\n\t\t\t\n\t\t\t/*\n\t\t\t * Process by row first\n\t\t\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t\t\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t\t\t */\n\t\t\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t\t\t{\n\t\t\t\tnTr = oSettings.nTBody.firstChild;\n\t\t\t\twhile ( nTr )\n\t\t\t\t{\n\t\t\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t\t\t} ) );\n\t\t\n\t\t\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\t\t\tjInner = 0;\n\t\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\t\t\tjInner++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnTr = nTr.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t\t\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t\t\t * setup!\n\t\t\t */\n\t\t\tnTrs = _fnGetTrNodes( oSettings );\n\t\t\tnTds = [];\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTd = nTrs[i].firstChild;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTds.push( nTd );\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Now process by column */\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[iColumn];\n\t\t\n\t\t\t\t/* Get the title of the column - unless there is a user set one */\n\t\t\t\tif ( oCol.sTitle === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar\n\t\t\t\t\tbAutoType = oCol._bAutoType,\n\t\t\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\t\t\tbClass = oCol.sClass !== null,\n\t\t\t\t\tbVisible = oCol.bVisible,\n\t\t\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\t\t\n\t\t\t\t/* A single loop to rule them all (and be more efficient) */\n\t\t\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t\t\t{\n\t\t\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t\t\t{\n\t\t\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Type detection */\n\t\t\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.mRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Rendering */\n\t\t\t\t\t\tif ( bRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Classes */\n\t\t\t\t\t\tif ( bClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Column visibility */\n\t\t\t\t\t\tif ( !bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Row created callbacks */\n\t\t\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toData = oSettings.aoData[i];\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TR element and convert it to an index in aoData\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n the TR element to find\n\t\t *  @returns {int} index if the node is found, null if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToDataIndex( oSettings, n )\n\t\t{\n\t\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TD element and convert it into a column data index (not the visible index)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow The row number the TD/TH can be found in\n\t\t *  @param {node} n The TD/TH element to find\n\t\t *  @returns {int} index if the node is found, -1 if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t\t{\n\t\t\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( anCells[i] === n )\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of data for a given row from the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n\t\t *  @param {array} aiColumns Array of column indexes to get data from\n\t\t *  @returns {array} Data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n\t\t{\n\t\t\tvar out = [];\n\t\t\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n\t\t *  @returns {*} Cell data\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n\t\t{\n\t\t\tvar sData;\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t\t\t{\n\t\t\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t\t\t}\n\t\t\t\treturn oCol.sDefaultContent;\n\t\t\t}\n\t\t\n\t\t\t/* When the data source is null, we can use default column data */\n\t\t\tif ( sData === null && oCol.sDefaultContent !== null )\n\t\t\t{\n\t\t\t\tsData = oCol.sDefaultContent;\n\t\t\t}\n\t\t\telse if ( typeof sData === 'function' )\n\t\t\t{\n\t\t\t\t/* If the data source is a function, then we run it and use the return */\n\t\t\t\treturn sData();\n\t\t\t}\n\t\t\n\t\t\tif ( sSpecific == 'display' && sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the value for a specific cell, into the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {*} val Value to set\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetCellData( oSettings, iRow, iCol, val )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\toCol.fnSetData( oData, val );\n\t\t}\n\t\t\n\t\t\n\t\t// Private variable that is used to match array syntax in the data property object\n\t\tvar __reArray = /\\[.*?\\]$/;\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to get data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data get function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, type, extra) {\n\t\t\t\t\treturn mSource( data, type, extra );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* If there is a . in the source string then the data source is in a \n\t\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t\t * be used if defined, rather than throwing an error\n\t\t\t\t */\n\t\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\t\tvar a = src.split('.');\n\t\t\t\t\tvar arrayNotation, out, innerSrc;\n\t\t\n\t\t\t\t\tif ( src !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\n\t\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\t\n\t\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\t\n\t\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn data[mSource];\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to set data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data set function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Nothing to do when the data source is null */\n\t\t\t\treturn function (data, val) {};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tmSource( data, 'set', val );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\t\tvar setData = function (data, val, src) {\n\t\t\t\t\tvar a = src.split('.'), b;\n\t\t\t\t\tvar arrayNotation, o, innerSrc;\n\t\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\t\n\t\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\treturn setData( data, val, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tdata[mSource] = val;\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the full table data\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {array} aData Master data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetDataMaster ( oSettings )\n\t\t{\n\t\t\tvar aData = [];\n\t\t\tvar iLen = oSettings.aoData.length;\n\t\t\tfor ( var i=0 ; i<iLen; i++ )\n\t\t\t{\n\t\t\t\taData.push( oSettings.aoData[i]._aData );\n\t\t\t}\n\t\t\treturn aData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Nuke the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnClearTable( oSettings )\n\t\t{\n\t\t\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\t\t\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Take an array of integers (index array) and remove a target integer (value - not \n\t\t * the key!)\n\t\t *  @param {array} a Index array to target\n\t\t *  @param {int} iTarget value to find\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDeleteIndex( a, iTarget )\n\t\t{\n\t\t\tvar iTargetIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( a[i] == iTarget )\n\t\t\t\t{\n\t\t\t\t\tiTargetIndex = i;\n\t\t\t\t}\n\t\t\t\telse if ( a[i] > iTarget )\n\t\t\t\t{\n\t\t\t\t\ta[i]--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( iTargetIndex != -1 )\n\t\t\t{\n\t\t\t\ta.splice( iTargetIndex, 1 );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Call the developer defined fnRender function for a given cell (row/column) with\n\t\t * the required parameters and return the result.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData index for the row\n\t\t *  @param {int} iCol aoColumns index for the column\n\t\t *  @returns {*} Return of the developer's fnRender function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnRender( oSettings, iRow, iCol )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\n\t\t\treturn oCol.fnRender( {\n\t\t\t\t\"iDataRow\":    iRow,\n\t\t\t\t\"iDataColumn\": iCol,\n\t\t\t\t\"oSettings\":   oSettings,\n\t\t\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\t\t\"mDataProp\":   oCol.mData\n\t\t\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n\t\t}\n\t\t/**\n\t\t * Create a new TR element (and it's TD children) for a row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow Row to consider\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateTr ( oSettings, iRow )\n\t\t{\n\t\t\tvar oData = oSettings.aoData[iRow];\n\t\t\tvar nTd;\n\t\t\n\t\t\tif ( oData.nTr === null )\n\t\t\t{\n\t\t\t\toData.nTr = document.createElement('tr');\n\t\t\n\t\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t\t * to the aoData array for fast look up\n\t\t\t\t */\n\t\t\t\toData.nTr._DT_RowIndex = iRow;\n\t\t\n\t\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t\tif ( oData._aData.DT_RowId )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oData._aData.DT_RowClass )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Process each column */\n\t\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\t\t\tnTd = document.createElement( oCol.sCellType );\n\t\t\n\t\t\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t\t\t * value in the data source - so can just use that\n\t\t\t\t\t */\n\t\t\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t\n\t\t\t\t\t/* Add user defined class */\n\t\t\t\t\tif ( oCol.sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ( oCol.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\t\t\toData._anHidden[i] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t{\n\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create the HTML header for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildHead( oSettings )\n\t\t{\n\t\t\tvar i, nTh, iLen, j, jLen;\n\t\t\tvar iThs = $('th, td', oSettings.nTHead).length;\n\t\t\tvar iCorrector = 0;\n\t\t\tvar jqChildren;\n\t\t\t\n\t\t\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\t\t\tif ( iThs !== 0 )\n\t\t\t{\n\t\t\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\t\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\t\t\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnTr.appendChild( nTh );\n\t\t\t\t}\n\t\t\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\t/* ARIA role for the rows */\t\n\t\t\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\t\t\n\t\t\t/* Add the extra markup needed by jQuery UI's themes */\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\t\n\t\t\t\t\tvar nDiv = document.createElement('div');\n\t\t\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\t\t\n\t\t\t\t\tvar nSpan = document.createElement('span');\n\t\t\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\t\t\tnDiv.appendChild( nSpan );\n\t\t\t\t\tnTh.appendChild( nDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Deal with the footer - add classes if required */\n\t\t\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t\t\t{\n\t\t\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t\t\t}\n\t\t\t\n\t\t\t/* Cache the footer elements */\n\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t{\n\t\t\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anCells[i] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the header (or footer) element based on the column visibility states. The\n\t\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t\t * traversed over cell at a time in a rows x columns grid fashion, although each \n\t\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t\t * already a cell in that position.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\t\tvar aoLocal = [];\n\t\t\tvar aApplied = [];\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar iRowspan, iColspan;\n\t\t\n\t\t\tif (  bIncludeHidden === undefined )\n\t\t\t{\n\t\t\t\tbIncludeHidden = false;\n\t\t\t}\n\t\t\n\t\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\t\n\t\t\t\t/* Remove any columns which are currently hidden */\n\t\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t\t{\n\t\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\t\taApplied.push( [] );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\t\t\n\t\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\t\tif ( nLocalTr )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tiRowspan = 1;\n\t\t\t\t\tiColspan = 1;\n\t\t\n\t\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t\t */\n\t\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\t\taApplied[i][j] = 1;\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Insert the required TR nodes into the table for display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDraw( oSettings )\n\t\t{\n\t\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar i, iLen, n;\n\t\t\tvar anRows = [];\n\t\t\tvar iRowCount = 0;\n\t\t\tvar iStripes = oSettings.asStripeClasses.length;\n\t\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\t\t\n\t\t\toSettings.bDrawing = true;\n\t\t\t\n\t\t\t/* Check and see if we have an initial draw position from state saving */\n\t\t\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t\t\t{\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\toSettings.iInitDisplayStart = -1;\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing draw intercept */\n\t\t\tif ( oSettings.bDeferLoading )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = false;\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aiDisplay.length !== 0 )\n\t\t\t{\n\t\t\t\tvar iStart = oSettings._iDisplayStart;\n\t\t\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\t\t\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tiStart = 0;\n\t\t\t\t\tiEnd = oSettings.aoData.length;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tvar nRow = aoData.nTr;\n\t\t\t\t\t\n\t\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\t\t\n\t\t\t\t\tanRows.push( nRow );\n\t\t\t\t\tiRowCount++;\n\t\t\t\t\t\n\t\t\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\t\t\tif ( iOpenRows !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\t\t\n\t\t\t\tif ( oSettings.asStripeClasses[0] )\n\t\t\t\t{\n\t\t\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t\t\t}\n\t\t\n\t\t\t\tvar oLang = oSettings.oLanguage;\n\t\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t\t}\n\t\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t\t}\n\t\t\n\t\t\t\tvar nTd = document.createElement( 'td' );\n\t\t\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\t\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\t\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\t\t\n\t\t\t\tanRows[ iRowCount ].appendChild( nTd );\n\t\t\t}\n\t\t\t\n\t\t\t/* Header and footer callbacks */\n\t\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t/* \n\t\t\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t\t\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t\t\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t\t\t */\n\t\t\tvar\n\t\t\t\tnAddFrag = document.createDocumentFragment(),\n\t\t\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\t\t\tnBodyPar, nTrs;\n\t\t\t\n\t\t\tif ( oSettings.nTBody )\n\t\t\t{\n\t\t\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\t\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\t\t\n\t\t\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t\t\t * up. When not infinite scroll, always do it.\n\t\t\t\t */\n\t\t\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Put the draw table into the dom */\n\t\t\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\t\t\tif ( nBodyPar !== null )\n\t\t\t\t{\n\t\t\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Call all required callback functions for the end of a draw */\n\t\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\t\t\n\t\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\t\toSettings.bSorted = false;\n\t\t\toSettings.bFiltered = false;\n\t\t\toSettings.bDrawing = false;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\tif ( !oSettings._bInitComplete )\n\t\t\t\t{\n\t\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table - taking account of the various features which are enabled\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReDraw( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t/* Sorting will refilter and draw for us */\n\t\t\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* Filtering will redraw for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add the options to the page HTML for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddOptionsHtml ( oSettings )\n\t\t{\n\t\t\t/*\n\t\t\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t\t\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t\t\t */\n\t\t\tvar nHolding = $('<div></div>')[0];\n\t\t\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\t\t\n\t\t\t/* \n\t\t\t * All DataTables are wrapped in a div\n\t\t\t */\n\t\t\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\t\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\t\n\t\t\t/* Track where we want to insert the option */\n\t\t\tvar nInsertNode = oSettings.nTableWrapper;\n\t\t\t\n\t\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\t\tvar aDom = oSettings.sDom.split('');\n\t\t\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\t\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t\t{\n\t\t\t\tiPushFeature = 0;\n\t\t\t\tcOption = aDom[i];\n\t\t\t\t\n\t\t\t\tif ( cOption == '<' )\n\t\t\t\t{\n\t\t\t\t\t/* New container div */\n\t\t\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\t\t\n\t\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\t\tcNext = aDom[i+1];\n\t\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\t\tj = 2;\n\t\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\t\t\tnInsertNode = nNewNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == '>' )\n\t\t\t\t{\n\t\t\t\t\t/* End container div */\n\t\t\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t\t\t{\n\t\t\t\t\t/* Length */\n\t\t\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t\t\t{\n\t\t\t\t\t/* Filter */\n\t\t\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\t/* pRocessing */\n\t\t\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 't' )\n\t\t\t\t{\n\t\t\t\t\t/* Table */\n\t\t\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t\t\t{\n\t\t\t\t\t/* Info */\n\t\t\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t\t\t{\n\t\t\t\t\t/* Pagination */\n\t\t\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Plug-in features */\n\t\t\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Add to the 2D features array */\n\t\t\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\t\t\tnInsertNode.appendChild( nTmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\t\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t\t * create a layout grid (array) of rows x columns, which contains a reference\n\t\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t\t * any column / row could be removed and the new grid constructed\n\t\t *  @param array {object} aLayout Array to store the calculated layout in\n\t\t *  @param {node} nThead The header/footer element for the table\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectHeader ( aLayout, nThead )\n\t\t{\n\t\t\tvar nTrs = $(nThead).children('tr');\n\t\t\tvar nTr, nCell;\n\t\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\t\tvar bUnique;\n\t\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\t\tvar k = a[i];\n\t\t                while ( k[j] ) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn j;\n\t\t\t};\n\t\t\n\t\t\taLayout.splice( 0, aLayout.length );\n\t\t\t\n\t\t\t/* We know how many rows there are in the layout - so prep it */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taLayout.push( [] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Calculate a layout array */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTr = nTrs[i];\n\t\t\t\tiColumn = 0;\n\t\t\t\t\n\t\t\t\t/* For every cell in the row... */\n\t\t\t\tnCell = nTr.firstChild;\n\t\t\t\twhile ( nCell ) {\n\t\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\t\n\t\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t\t\t * accordingly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of unique th elements, one for each column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t\t *  @returns array {node} aReturn list of unique th's\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t\t{\n\t\t\tvar aReturn = [];\n\t\t\tif ( !aLayout )\n\t\t\t{\n\t\t\t\taLayout = oSettings.aoHeader;\n\t\t\t\tif ( nHeader )\n\t\t\t\t{\n\t\t\t\t\taLayout = [];\n\t\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t\t{\n\t\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aReturn;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the table using an Ajax call\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {boolean} Block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdate( oSettings )\n\t\t{\n\t\t\tif ( oSettings.bAjaxDataGet )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\t\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\t\t\tfunction(json) {\n\t\t\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t\t\t}, oSettings );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Build up the parameters in an object needed for a server-side processing request\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {bool} block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxParameters( oSettings )\n\t\t{\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\t\t\tvar i, j;\n\t\t\t\n\t\t\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\t\t\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\t\t\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\t\t\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\t\t\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\t\t\toSettings._iDisplayLength : -1 } );\n\t\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\t\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t\t\t}\n\t\t\t\n\t\t\t/* Filtering */\n\t\t\tif ( oSettings.oFeatures.bFilter !== false )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\t\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Sorting */\n\t\t\tif ( oSettings.oFeatures.bSort !== false )\n\t\t\t{\n\t\t\t\tvar iCounter = 0;\n\t\t\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\t\t\n\t\t\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\t\t\tiCounter++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aoData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add Ajax parameters from plug-ins\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoData name/value pairs to send to the server\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnServerParams( oSettings, aoData )\n\t\t{\n\t\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Data the data from the server (nuking the old) and redraw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} json json data return from the server.\n\t\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t\t *  @param {array} json.aaData The data to display on this page\n\t\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdateDraw ( oSettings, json )\n\t\t{\n\t\t\tif ( json.sEcho !== undefined )\n\t\t\t{\n\t\t\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t\t\t * very fast interaction, and later queries are completed much faster\n\t\t\t\t */\n\t\t\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( !oSettings.oScroll.bInfinite ||\n\t\t\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t\t\t{\n\t\t\t\t_fnClearTable( oSettings );\n\t\t\t}\n\t\t\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\t\t\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\t\t\n\t\t\t/* Determine if reordering is required */\n\t\t\tvar sOrdering = _fnColumnOrdering(oSettings);\n\t\t\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\t\t\tvar aiIndex;\n\t\t\tif ( bReOrder )\n\t\t\t{\n\t\t\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t\t\t}\n\t\t\t\n\t\t\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\t\t\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( bReOrder )\n\t\t\t\t{\n\t\t\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\t\t\tvar aDataSorted = [];\n\t\t\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t\t\t}\n\t\t\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\toSettings.bAjaxDataGet = false;\n\t\t\t_fnDraw( oSettings );\n\t\t\toSettings.bAjaxDataGet = true;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for filtering text\n\t\t *  @returns {node} Filter control element\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlFilter ( oSettings )\n\t\t{\n\t\t\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\t\t\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t\t\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t\t\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\t\t\n\t\t\tvar nFilter = document.createElement( 'div' );\n\t\t\tnFilter.className = oSettings.oClasses.sFilter;\n\t\t\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\t\t\tif ( !oSettings.aanFeatures.f )\n\t\t\t{\n\t\t\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t\t\t}\n\t\t\t\n\t\t\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\t\t\n\t\t\t// Store a reference to the input element, so other input elements could be\n\t\t\t// added to the filter wrapper if needed (submit button for example)\n\t\t\tnFilter._DT_Input = jqFilter[0];\n\t\t\n\t\t\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\t\t\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t\t\t/* Update all other filter input elements for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\t\t\n\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Now do the filter */\n\t\t\t\tif ( val != oPreviousSearch.sSearch )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\t\t\"sSearch\": val, \n\t\t\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\tjqFilter\n\t\t\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t\t/* Prevent form submission */\n\t\t\t\t\tif ( e.keyCode == 13 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\treturn nFilter;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table using both the global filter and column based filtering\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oSearch search information\n\t\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t\t{\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t\t/* Save the filtering values */\n\t\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t\t};\n\t\t\n\t\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\n\t\t\t\t/* Now do the individual column filter */\n\t\t\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Custom filtering */\n\t\t\t\t_fnFilterCustom( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function we have been filtering */\n\t\t\toSettings.bFiltered = true;\n\t\t\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\toSettings._iDisplayStart = 0;\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Rebuild search array 'offline' */\n\t\t\t_fnBuildSearchArray( oSettings, 0 );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply custom filtering functions\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCustom( oSettings )\n\t\t{\n\t\t\tvar afnFilters = DataTable.ext.afnFiltering;\n\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\n\t\t\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar iCorrector = 0;\n\t\t\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\t\t\tvar bTest = afnFilters[i](\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\t\t\tiDisIndex\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\t\t\tif ( !bTest )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table on a per-column basis\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iColumn column to filter\n\t\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t\t *  @param {bool} bSmart use smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tif ( sInput === \"\" )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iIndexCorrector = 0;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t\n\t\t\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\t\t\toSettings.aoColumns[iColumn].sType );\n\t\t\t\tif ( ! rpSearch.test( sData ) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\t\t\tiIndexCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the data table based on user input and draw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar i;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\t/* Check if we are forcing or not - optional parameter */\n\t\t\tif ( !iForce )\n\t\t\t{\n\t\t\t\tiForce = 0;\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to take account of custom filtering functions - always filter */\n\t\t\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t\t\t{\n\t\t\t\tiForce = 1;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * If the input is blank - we want the full data set\n\t\t\t */\n\t\t\tif ( sInput.length <= 0 )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\t * We are starting a new search or the new search string is smaller \n\t\t\t\t * then the old one (i.e. delete). Search from the master array\n\t\t\t \t */\n\t\t\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\t\t\n\t\t\t\t\t/* Force a rebuild of the search array */\n\t\t\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\t\t\n\t\t\t\t\t/* Search through all records to populate the search array\n\t\t\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t\t\t * mapping\n\t\t\t\t\t */\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t  }\n\t\t\t  else\n\t\t\t\t{\n\t\t\t  \t/* Using old search array - refine it - do it this way for speed\n\t\t\t  \t * Don't have to search the whole master array again\n\t\t\t\t\t */\n\t\t\t  \tvar iIndexCorrector = 0;\n\t\t\t  \t\n\t\t\t  \t/* Search the current results */\n\t\t\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t\t\t{\n\t\t\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t\t\t  \t\t\tiIndexCorrector++;\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t  }\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create an array which can be quickly search through\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMaster use the master data array - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchArray ( oSettings, iMaster )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Clear out the old data */\n\t\t\t\toSettings.asDataSearch = [];\n\t\t\n\t\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\t\tvar aiIndex = (iMaster===1) ?\n\t\t\t\t \toSettings.aiDisplayMaster :\n\t\t\t\t \toSettings.aiDisplay;\n\t\t\t\t\n\t\t\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a searchable string from a single data row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData Row data array to use for the data to search\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchRow( oSettings, aData )\n\t\t{\n\t\t\tvar sSearch = aData.join('  ');\n\t\t\t\n\t\t\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\t\t\tif ( sSearch.indexOf('&') !== -1 )\n\t\t\t{\n\t\t\t\tsSearch = $('<div>').html(sSearch).text();\n\t\t\t}\n\t\t\t\n\t\t\t// Strip newline characters\n\t\t\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Build a regular expression object suitable for searching a table\n\t\t *  @param {string} sSearch string to search for\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t\t *  @returns {RegExp} constructed object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar asSearch, sRegExpString;\n\t\t\t\n\t\t\tif ( bSmart )\n\t\t\t{\n\t\t\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t\t\t */\n\t\t\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\t\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\t\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\t\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Convert raw data into something that the user can search on\n\t\t *  @param {string} sData data to be modified\n\t\t *  @param {string} sType data type\n\t\t *  @returns {string} search string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDataToSearch ( sData, sType )\n\t\t{\n\t\t\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t\t\t{\n\t\t\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t\t\t}\n\t\t\telse if ( sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\telse if ( sType == \"html\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t}\n\t\t\telse if ( typeof sData === \"string\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * scape a string such that it can be used in a regular expression\n\t\t *  @param {string} sVal string to escape\n\t\t *  @returns {string} escaped string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnEscapeRegex ( sVal )\n\t\t{\n\t\t\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\t\t\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\t\t\treturn sVal.replace(reReplace, '\\\\$1');\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the info display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Information element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlInfo ( oSettings )\n\t\t{\n\t\t\tvar nInfo = document.createElement( 'div' );\n\t\t\tnInfo.className = oSettings.oClasses.sInfo;\n\t\t\t\n\t\t\t/* Actions that are to be taken once only for this feature */\n\t\t\tif ( !oSettings.aanFeatures.i )\n\t\t\t{\n\t\t\t\t/* Add draw callback */\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\t\"sName\": \"information\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Add id */\n\t\t\t\tnInfo.id = oSettings.sTableId+'_info';\n\t\t\t}\n\t\t\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\t\t\n\t\t\treturn nInfo;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the information elements in the display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnUpdateInfo ( oSettings )\n\t\t{\n\t\t\t/* Show information about the table */\n\t\t\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar\n\t\t\t\toLang = oSettings.oLanguage,\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsOut;\n\t\t\t\n\t\t\tif ( iTotal === 0 )\n\t\t\t{\n\t\t\t\t/* Empty record set */\n\t\t\t\tsOut = oLang.sInfoEmpty;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t/* Normal record set */\n\t\t\t\tsOut = oLang.sInfo;\n\t\t\t}\n\t\t\n\t\t\tif ( iTotal != iMax )\n\t\t\t{\n\t\t\t\t/* Record set after filtering */\n\t\t\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t\t\t}\n\t\t\n\t\t\t// Convert the macros\n\t\t\tsOut += oLang.sInfoPostFix;\n\t\t\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\t\t\n\t\t\tif ( oLang.fnInfoCallback !== null )\n\t\t\t{\n\t\t\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t\t\t}\n\t\t\t\n\t\t\tvar n = oSettings.aanFeatures.i;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _fnInfoMacros ( oSettings, str )\n\t\t{\n\t\t\tvar\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tsMax = oSettings.fnFormatNumber( iMax );\n\t\t\n\t\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t\t// internally\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t\t\t}\n\t\t\n\t\t\treturn str.\n\t\t\t\treplace(/_START_/g, sStart).\n\t\t\t\treplace(/_END_/g,   sEnd).\n\t\t\t\treplace(/_TOTAL_/g, sTotal).\n\t\t\t\treplace(/_MAX_/g,   sMax);\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitialise ( oSettings )\n\t\t{\n\t\t\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\t\t\n\t\t\t/* Ensure that the table data is fully initialised */\n\t\t\tif ( oSettings.bInitialised === false )\n\t\t\t{\n\t\t\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the display HTML options */\n\t\t\t_fnAddOptionsHtml( oSettings );\n\t\t\t\n\t\t\t/* Build and draw the header / footer for the table */\n\t\t\t_fnBuildHead( oSettings );\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\n\t\t\t/* Okay to show that something is going on now */\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\n\t\t\t/* Calculate sizes for columns */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth )\n\t\t\t{\n\t\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If there is default sorting required - let's do it. The sort function will do the\n\t\t\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t\t\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t\t\t */\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* if there is an ajax source load the data */\n\t\t\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\tvar aoData = [];\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\t\t\n\t\t\t\t\t/* Got the data - add it to the table */\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t\t\t */\n\t\t\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t_fnInitComplete( oSettings, json );\n\t\t\t\t}, oSettings );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t\t *    with client-side processing (optional)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitComplete ( oSettings, json )\n\t\t{\n\t\t\toSettings._bInitComplete = true;\n\t\t\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Language compatibility - when certain options are given, and others aren't, we\n\t\t * need to duplicate the values over, in order to provide backwards compatibility\n\t\t * with older language files.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLanguageCompat( oLanguage )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.oLanguage;\n\t\t\n\t\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t\t * sZeroRecords - assuming that is given.\n\t\t\t */\n\t\t\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t\t\t}\n\t\t\n\t\t\t/* Likewise with loading records */\n\t\t\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for user display length changing\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Display length feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlLength ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\t\t\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\t\t\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\t\t\tvar i, iLen;\n\t\t\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\t\t\n\t\t\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tsStdMenu += '</select>';\n\t\t\t\n\t\t\tvar nLength = document.createElement( 'div' );\n\t\t\tif ( !oSettings.aanFeatures.l )\n\t\t\t{\n\t\t\t\tnLength.id = oSettings.sTableId+'_length';\n\t\t\t}\n\t\t\tnLength.className = oSettings.oClasses.sLength;\n\t\t\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\t\t\n\t\t\t/*\n\t\t\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t\t\t * and Stefan Skopnik for fixing the fix!\n\t\t\t */\n\t\t\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\t\t\n\t\t\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\t\t\tvar iVal = $(this).val();\n\t\t\t\t\n\t\t\t\t/* Update all other length options for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.l;\n\t\t\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != this.parentNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Redraw the table */\n\t\t\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\n\t\t\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\t\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t} );\n\t\t\n\t\t\n\t\t\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\t\t\n\t\t\treturn nLength;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Recalculate the end point based on the start point\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateEnd( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bPaginate === false )\n\t\t\t{\n\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Set the end point of the display - based on how many elements there are\n\t\t\t\t * still to display\n\t\t\t\t */\n\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t\t * Note that most of the paging logic is done in \n\t\t * DataTable.ext.oPagination\n\t\t */\n\t\t\n\t\t/**\n\t\t * Generate the node required for default pagination\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Pagination feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlPaginate ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar nPaginate = document.createElement( 'div' );\n\t\t\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\t\t\n\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\t\t\tfunction( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"pagination\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nPaginate;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Alter the display settings to change the page\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer)\n\t\t *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnPageChange ( oSettings, mAction )\n\t\t{\n\t\t\tvar iOldStart = oSettings._iDisplayStart;\n\t\t\t\n\t\t\tif ( typeof mAction === \"number\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"first\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t\telse if ( mAction == \"previous\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\n\t\t\t\t/* Correct for under-run */\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"next\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"last\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t\t\t}\n\t\t\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\t\t\n\t\t\treturn iOldStart != oSettings._iDisplayStart;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the processing node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Processing element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlProcessing ( oSettings )\n\t\t{\n\t\t\tvar nProcessing = document.createElement( 'div' );\n\t\t\t\n\t\t\tif ( !oSettings.aanFeatures.r )\n\t\t\t{\n\t\t\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t\t\t}\n\t\t\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\t\t\tnProcessing.className = oSettings.oClasses.sProcessing;\n\t\t\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\t\t\n\t\t\treturn nProcessing;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Display or hide the processing indicator\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bShow Show the processing indicator (true) or not (false)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnProcessingDisplay ( oSettings, bShow )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bProcessing )\n\t\t\t{\n\t\t\t\tvar an = oSettings.aanFeatures.r;\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add any control elements for the table - specifically scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlTable ( oSettings )\n\t\t{\n\t\t\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\treturn oSettings.nTable;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * The HTML structure that we want to generate in this function is:\n\t\t\t *  div - nScroller\n\t\t\t *    div - nScrollHead\n\t\t\t *      div - nScrollHeadInner\n\t\t\t *        table - nScrollHeadTable\n\t\t\t *          thead - nThead\n\t\t\t *    div - nScrollBody\n\t\t\t *      table - oSettings.nTable\n\t\t\t *        thead - nTheadSize\n\t\t\t *        tbody - nTbody\n\t\t\t *    div - nScrollFoot\n\t\t\t *      div - nScrollFootInner\n\t\t\t *        table - nScrollFootTable\n\t\t\t *          tfoot - nTfoot\n\t\t\t */\n\t\t\tvar\n\t\t\t \tnScroller = document.createElement('div'),\n\t\t\t \tnScrollHead = document.createElement('div'),\n\t\t\t \tnScrollHeadInner = document.createElement('div'),\n\t\t\t \tnScrollBody = document.createElement('div'),\n\t\t\t \tnScrollFoot = document.createElement('div'),\n\t\t\t \tnScrollFootInner = document.createElement('div'),\n\t\t\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t\t\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\t\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t\t\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\t\t\toClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tnScrollHead.appendChild( nScrollHeadInner );\n\t\t\tnScrollFoot.appendChild( nScrollFootInner );\n\t\t\tnScrollBody.appendChild( oSettings.nTable );\n\t\t\tnScroller.appendChild( nScrollHead );\n\t\t\tnScroller.appendChild( nScrollBody );\n\t\t\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\t\t\tnScrollHeadTable.appendChild( nThead );\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScroller.appendChild( nScrollFoot );\n\t\t\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\t\t\tnScrollFootTable.appendChild( nTfoot );\n\t\t\t}\n\t\t\t\n\t\t\tnScroller.className = oClasses.sScrollWrapper;\n\t\t\tnScrollHead.className = oClasses.sScrollHead;\n\t\t\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\t\t\tnScrollBody.className = oClasses.sScrollBody;\n\t\t\tnScrollFoot.className = oClasses.sScrollFoot;\n\t\t\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\t\t\n\t\t\tif ( oSettings.oScroll.bAutoCss )\n\t\t\t{\n\t\t\t\tnScrollHead.style.overflow = \"hidden\";\n\t\t\t\tnScrollHead.style.position = \"relative\";\n\t\t\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t\t}\n\t\t\t\n\t\t\tnScrollHead.style.border = \"0\";\n\t\t\tnScrollHead.style.width = \"100%\";\n\t\t\tnScrollFoot.style.border = \"0\";\n\t\t\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\t\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\t\t\n\t\t\t/* Modify attributes to respect the clones */\n\t\t\tnScrollHeadTable.removeAttribute('id');\n\t\t\tnScrollHeadTable.style.marginLeft = \"0\";\n\t\t\toSettings.nTable.style.marginLeft = \"0\";\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.removeAttribute('id');\n\t\t\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Move caption elements from the body to the header, footer or leave where it is\n\t\t\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\t\t\tvar nCaption = $(oSettings.nTable).children('caption');\n\t\t\tif ( nCaption.length > 0 )\n\t\t\t{\n\t\t\t\tnCaption = nCaption[0];\n\t\t\t\tif ( nCaption._captionSide === \"top\" )\n\t\t\t\t{\n\t\t\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t\t\t{\n\t\t\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Sizing\n\t\t\t */\n\t\t\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\t\n\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t\t\t$(nScrollBody).scroll( function (e) {\n\t\t\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\t\t\n\t\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* When yscrolling, add the height */\n\t\t\tif ( oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw - align columns across the tables */\n\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\t\"sName\": \"scrolling\"\n\t\t\t} );\n\t\t\t\n\t\t\t/* Infinite scrolling event handlers */\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\t$(nScrollBody).scroll( function() {\n\t\t\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.nScrollHead = nScrollHead;\n\t\t\toSettings.nScrollFoot = nScrollFoot;\n\t\t\t\n\t\t\treturn nScroller;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the various tables for resizing. It's a bit of a pig this function, but\n\t\t * basically the idea to:\n\t\t *   1. Re-create the table inside the scrolling div\n\t\t *   2. Take live measurements from the DOM\n\t\t *   3. Apply the measurements\n\t\t *   4. Clean up\n\t\t *  @param {object} o dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollDraw ( o )\n\t\t{\n\t\t\tvar\n\t\t\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\t\tnScrollBody = o.nTable.parentNode,\n\t\t\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\t\t\tnTheadSize, nTfootSize,\n\t\t\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\t\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\t\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\t\t\tie67 = o.oBrowser.bScrollOversize,\n\t\t\t\tzeroOut = function(nSizer) {\n\t\t\t\t\toStyle = nSizer.style;\n\t\t\t\t\toStyle.paddingTop = \"0\";\n\t\t\t\t\toStyle.paddingBottom = \"0\";\n\t\t\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\t\t\toStyle.height = 0;\n\t\t\t\t};\n\t\t\t\n\t\t\t/*\n\t\t\t * 1. Re-create the table inside the scrolling div\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t\t\t$(o.nTable).children('thead, tfoot').remove();\n\t\t\n\t\t\t/* Clone the current header and footer elements and then place it into the inner table */\n\t\t\tnTheadSize = $(o.nTHead).clone()[0];\n\t\t\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\t\t\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\t\t\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\t\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\t\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\t\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove old sizing and apply the calculated column widths\n\t\t\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t\t * calculated sizes to this header\n\t\t\t */\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = '100%';\n\t\t\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\t\t\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\t\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\n\t\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\t\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Size the table as a whole */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\t/* No x scrolling */\n\t\t\t\to.nTable.style.width = \"100%\";\n\t\t\t\t\n\t\t\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t\t * into account.\n\t\t\t\t */\n\t\t\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t/* x scroll inner has been given - use it */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t\t\t{\n\t\t\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Not possible to take account of it */\n\t\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* All else fails */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t\t\t * a temporary variable. This is required because the column width calculation is done\n\t\t\t * before this table DOM is created.\n\t\t\t */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\t\n\t\t\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t\t\t * set the width based on the real headers\n\t\t\t */\n\t\t\t\n\t\t\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t\t\t// DOM properties.\n\t\t\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t\t\t \n\t\t\t// Read all widths in next pass. Forces layout only once because we do not change \n\t\t\t// any DOM properties.\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t}, anHeadSizers );\n\t\t\t \n\t\t\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t\t\t// read any DOM properties.\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = aApplied[i];\n\t\t\t}, anHeadToSize );\n\t\t\n\t\t\t$(anHeadSizers).height(0);\n\t\t\t\n\t\t\t/* Same again with the footer if we have one */\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t\t}, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootToSize );\n\t\t\n\t\t\t\t$(anFootSizers).height(0);\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 3. Apply the measurements\n\t\t\t */\n\t\t\t\n\t\t\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t\t\t * to what they currently are\n\t\t\t */\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = aApplied[i];\n\t\t\t}, anHeadSizers );\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\t\n\t\t\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\t\t */\n\t\t\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t\t\t{\n\t\t\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\t\t\n\t\t\t\t/* IE6/7 are a law unto themselves... */\n\t\t\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t\t\t}\n\t\t\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\t\t\" calculation\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * 4. Clean up\n\t\t\t */\n\t\t\tif ( o.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t\t */\n\t\t\t\tif ( ie67 )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\t\t\n\t\t\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t\t\t \to.oScroll.iBarWidth : 0;\n\t\t\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Finally set the width's of the header and footer tables */\n\t\t\tvar iOuterWidth = $(o.nTable).outerWidth();\n\t\t\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\n\t\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\t\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\t\t\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t}\n\t\t\n\t\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\t\t$(nScrollBody).scroll();\n\t\t\t\n\t\t\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\t\t\tif ( o.bSorted || o.bFiltered )\n\t\t\t{\n\t\t\t\tnScrollBody.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply a given function to the display child nodes of an element array (typically\n\t\t * TD children of TR rows\n\t\t *  @param {function} fn Method to apply to the objects\n\t\t *  @param array {nodes} an1 List of elements to look through for display children\n\t\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t\t{\n\t\t\tvar index=0, i=0, iLen=an1.length;\n\t\t\tvar nNode1, nNode2;\n\t\t\n\t\t\twhile ( i < iLen )\n\t\t\t{\n\t\t\t\tnNode1 = an1[i].firstChild;\n\t\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\t\t\twhile ( nNode1 )\n\t\t\t\t{\n\t\t\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( an2 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t\t *  @param {string} sWidth width to be converted\n\t\t *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n\t\t *  @returns {int} iWidth width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnConvertToWidth ( sWidth, nParent )\n\t\t{\n\t\t\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t\n\t\t\tif ( !nParent )\n\t\t\t{\n\t\t\t\tnParent = document.body;\n\t\t\t}\n\t\t\t\n\t\t\tvar iWidth;\n\t\t\tvar nTmp = document.createElement( \"div\" );\n\t\t\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\t\t\n\t\t\tnParent.appendChild( nTmp );\n\t\t\tiWidth = nTmp.offsetWidth;\n\t\t\tnParent.removeChild( nTmp );\n\t\t\t\n\t\t\treturn ( iWidth );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Calculate the width of columns for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateColumnWidths ( oSettings )\n\t\t{\n\t\t\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\t\t\tvar iUserInputs = 0;\n\t\t\tvar iTmpWidth;\n\t\t\tvar iVisibleColumns = 0;\n\t\t\tvar iColums = oSettings.aoColumns.length;\n\t\t\tvar i, iIndex, iCorrector, iWidth;\n\t\t\tvar oHeaders = $('th', oSettings.nTHead);\n\t\t\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\t\t\tvar nWrapper = oSettings.nTable.parentNode;\n\t\t\t\n\t\t\t/* Convert any user input sizes into pixel sizes */\n\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiVisibleColumns++;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\t\t\tnWrapper );\n\t\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tiUserInputs++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If the number of columns in the DOM equals the number that we have to process in \n\t\t\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t\t\t * sizes can be set in order for this to happen, nor scrolling used\n\t\t\t */\n\t\t\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\t\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t\t\t * calculating table widths.\n\t\t\t\t */\n\t\t\t\tvar\n\t\t\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\t\t\tnDivSizing;\n\t\t\t\t\n\t\t\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\t\t\tnCalcTmp.appendChild( nTheadClone );\n\t\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnCalcTmp.appendChild( nBody );\n\t\t\t\tnBody.appendChild( nTr );\n\t\t\t\t\n\t\t\t\t/* Remove any sizing that was previously applied by the styles */\n\t\t\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\t\t\tif ( jqColSizing.length === 0 )\n\t\t\t\t{\n\t\t\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Apply custom sizing to the cloned header */\n\t\t\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oColumn.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Find the biggest td for each column and put it into the table */\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\t\t\tif ( nTd !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build the table and 'display' it */\n\t\t\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t\t\t * but I think correct behaviour\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = \"\";\n\t\t\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t}\n\t\t\t\telse if ( widthAttr )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t\t\t}\n\t\t\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\t\t\n\t\t\t\t/* Scrolling considerations */\n\t\t\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t\t\t * no elements there, under which circumstances we use the header elements\n\t\t\t\t */\n\t\t\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\t\t\tif ( oNodes.length === 0 )\n\t\t\t\t{\n\t\t\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t\t\t * should be by summing the user given values, and the automatic values\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar iTotal = 0;\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t\t\t}\n\t\t\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\t\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\t\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t\t\t}\n\t\t\n\t\t\tif ( widthAttr )\n\t\t\t{\n\t\t\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust a table's width to take account of scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollingWidthAdjust ( oSettings, n )\n\t\t{\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t\t\t * + scroll bar will fit into the area avaialble.\n\t\t\t\t */\n\t\t\t\tvar iOrigWidth = $(n).width();\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the widest node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {node} widest table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetWidestNode( oSettings, iCol )\n\t\t{\n\t\t\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\t\t\tif ( iMaxIndex < 0 )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t\t\t{\n\t\t\t\tvar n = document.createElement('td');\n\t\t\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\t\t\treturn n;\n\t\t\t}\n\t\t\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the maximum strlen for each data column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {string} max string length for each column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetMaxLenString( oSettings, iCol )\n\t\t{\n\t\t\tvar iMax = -1;\n\t\t\tvar iMaxIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t\t\t{\n\t\t\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\t\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\t\t\tif ( s.length > iMax )\n\t\t\t\t{\n\t\t\t\t\tiMax = s.length;\n\t\t\t\t\tiMaxIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn iMaxIndex;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Append a CSS unit (only if required) to a string\n\t\t *  @param {array} aArray1 first array\n\t\t *  @param {array} aArray2 second array\n\t\t *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnStringToCss( s )\n\t\t{\n\t\t\tif ( s === null )\n\t\t\t{\n\t\t\t\treturn \"0px\";\n\t\t\t}\n\t\t\t\n\t\t\tif ( typeof s == 'number' )\n\t\t\t{\n\t\t\t\tif ( s < 0 )\n\t\t\t\t{\n\t\t\t\t\treturn \"0px\";\n\t\t\t\t}\n\t\t\t\treturn s+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if the last character is not 0-9 */\n\t\t\tvar c = s.charCodeAt( s.length-1 );\n\t\t\tif (c < 0x30 || c > 0x39)\n\t\t\t{\n\t\t\t\treturn s;\n\t\t\t}\n\t\t\treturn s+\"px\";\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the width of a scroll bar in this browser being used\n\t\t *  @returns {int} width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollBarWidth ()\n\t\t{  \n\t\t\tvar inner = document.createElement('p');\n\t\t\tvar style = inner.style;\n\t\t\tstyle.width = \"100%\";\n\t\t\tstyle.height = \"200px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\t\n\t\t\tvar outer = document.createElement('div');\n\t\t\tstyle = outer.style;\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.top = \"0px\";\n\t\t\tstyle.left = \"0px\";\n\t\t\tstyle.visibility = \"hidden\";\n\t\t\tstyle.width = \"200px\";\n\t\t\tstyle.height = \"150px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\tstyle.overflow = \"hidden\";\n\t\t\touter.appendChild(inner);\n\t\t\t\n\t\t\tdocument.body.appendChild(outer);\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.style.overflow = 'scroll';\n\t\t\tvar w2 = inner.offsetWidth;\n\t\t\tif ( w1 == w2 )\n\t\t\t{\n\t\t\t\tw2 = outer.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeChild(outer);\n\t\t\treturn (w1 - w2);  \n\t\t}\n\t\t\n\t\t/**\n\t\t * Change the order of the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bApplyClasses optional - should we apply classes or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSort ( oSettings, bApplyClasses )\n\t\t{\n\t\t\tvar\n\t\t\t\ti, iLen, j, jLen, k, kLen,\n\t\t\t\tsDataType, nTh,\n\t\t\t\taaSort = [],\n\t\t\t \taiOrig = [],\n\t\t\t\toSort = DataTable.ext.oSort,\n\t\t\t\taoData = oSettings.aoData,\n\t\t\t\taoColumns = oSettings.aoColumns,\n\t\t\t\toAria = oSettings.oLanguage.oAria;\n\t\t\t\n\t\t\t/* No sorting required if server-side or no sorting array */\n\t\t\tif ( !oSettings.oFeatures.bServerSide && \n\t\t\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t\t\t{\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t\t\t * get the data from the developer's function and apply it for this column\n\t\t\t\t */\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar iColumn = aaSort[i][0];\n\t\t\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t\t\t */\n\t\t\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t\t\t * function runs. This make the sorting function a very simple comparison\n\t\t\t\t */\n\t\t\t\tvar iSortLen = aaSort.length;\n\t\t\t\tvar fnSortFormat, aDataSort;\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t\t *  \tvar iTest;\n\t\t\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t\t\t *  \tif (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t\t *    if (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t *  }\n\t\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t\t */\n\t\t\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Alter the sorting classes to take account of the changes */\n\t\t\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\t\t\tnTh = aoColumns[i].nTh;\n\t\t\t\tnTh.removeAttribute('aria-sort');\n\t\t\t\tnTh.removeAttribute('aria-label');\n\t\t\t\t\n\t\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\t\tif ( aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function that we have sorted the data */\n\t\t\toSettings.bSorted = true;\n\t\t\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\t\t\n\t\t\t/* Copy the master data into the draw array and re-draw */\n\t\t\tif ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* _fnFilter() will redraw the table for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort handler (click) to a node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nNode node to attach the handler to\n\t\t *  @param {int} iDataIndex column sorting index\n\t\t *  @param {function} [fnCallback] callback function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n\t\t{\n\t\t\t_fnBindAction( nNode, {}, function (e) {\n\t\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t\t\t * disabled, as we need to perform slightly different actions.\n\t\t\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t\t\t * too early), so we only do it when we absolutely have to.\n\t\t\t\t */\n\t\t\t\tvar fnInnerSorting = function () {\n\t\t\t\t\tvar iColumn, iNextSort;\n\t\t\t\t\t\n\t\t\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\t\t\tif ( e.shiftKey )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\t\t\tvar bFound = false;\n\t\t\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* No sort yet - add it in */\n\t\t\t\t\t\tif ( bFound === false )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Run the sort */\n\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t}; /* /fnInnerSorting */\n\t\t\t\t\n\t\t\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\tfnInnerSorting();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tfnInnerSorting();\n\t\t\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Call the user specified callback function - used for async user interaction */\n\t\t\t\tif ( typeof fnCallback == 'function' )\n\t\t\t\t{\n\t\t\t\t\tfnCallback( oSettings );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the sorting classes on the header, Note: it is safe to call this function \n\t\t * when bSort and bSortClasses are false\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortingClasses( oSettings )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, iFound;\n\t\t\tvar aaSort, sClass;\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aaSortingFixed !== null )\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSorting.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the required classes to the header */\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\t\t\tiFound = -1;\n\t\t\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\t\t\tiFound = j;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.bJUI )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar sSpanClass;\n\t\t\t\t\t\tif ( iFound == -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t\t\t * _fnAddColumn\n\t\t\t\t\t */\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* \n\t\t\t * Apply the required classes to the table body\n\t\t\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t\t\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t\t\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t\t\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t\t\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t\t\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t\t\t * row found to see if the whole column needs processed can miss classes since the first\n\t\t\t * column might be new.\n\t\t\t */\n\t\t\tsClass = oClasses.sSortColumn;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\t\t\n\t\t\t\t/* Determine what the sorting class for each column should be */\n\t\t\t\tvar iClass, iTargetCol;\n\t\t\t\tvar asClasses = [];\n\t\t\t\tfor (i = 0; i < iColumns; i++)\n\t\t\t\t{\n\t\t\t\t\tasClasses.push(\"\");\n\t\t\t\t}\n\t\t\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t\t\t{\n\t\t\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\t\t\n\t\t\t\t\tif ( iClass < 3 )\n\t\t\t\t\t{\n\t\t\t\t\t\tiClass++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Make changes to the classes for each cell as needed */\n\t\t\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\t\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\t\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t\t\t{\n\t\t\t\t\t/* Determine which column we're looking at */\n\t\t\t\t\tiTargetCol = i % iColumns;\n\t\t\t\t\t\n\t\t\t\t\t/* What is the full list of classes now */\n\t\t\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t\t\t/* What sorting class should be applied? */\n\t\t\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\t\t\n\t\t\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We changed something */\n\t\t\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We need to add a class */\n\t\t\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Save the state of a table in a cookie such that the page can be reloaded\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSaveState ( oSettings )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\t/* Store the interesting variables */\n\t\t\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\t\t\tvar oState = {\n\t\t\t\t\"iCreate\":      new Date().getTime(),\n\t\t\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\t\t\"abVisCols\":    []\n\t\t\t};\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\t\t\n\t\t\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attempt to load a saved table state from a cookie\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oInit DataTables init object so we can override settings\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLoadState ( oSettings, oInit )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\t\t\tif ( !oData )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t * cancelling of loading by returning false\n\t\t\t */\n\t\t\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Store the saved state so it might be accessed at any time */\n\t\t\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\t\t\n\t\t\t/* Restore key features */\n\t\t\toSettings._iDisplayStart    = oData.iStart;\n\t\t\toSettings.iInitDisplayStart = oData.iStart;\n\t\t\toSettings._iDisplayEnd      = oData.iEnd;\n\t\t\toSettings._iDisplayLength   = oData.iLength;\n\t\t\toSettings.aaSorting         = oData.aaSorting.slice();\n\t\t\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\t\t\n\t\t\t/* Search filtering  */\n\t\t\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t\t\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\t\t\n\t\t\t/* Column visibility state\n\t\t\t * Pass back visibility settings to the init handler, but to do not here override\n\t\t\t * the init object that the user might have passed in\n\t\t\t */\n\t\t\toInit.saved_aoColumns = [];\n\t\t\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t\t\t{\n\t\t\t\toInit.saved_aoColumns[i] = {};\n\t\t\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a new cookie with a value to store the state of a table\n\t\t *  @param {string} sName name of the cookie to create\n\t\t *  @param {string} sValue the value the cookie should take\n\t\t *  @param {int} iSecs duration of the cookie\n\t\t *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n\t\t *  @param {function} fnCallback User definable function to modify the cookie\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n\t\t{\n\t\t\tvar date = new Date();\n\t\t\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\t\t\n\t\t\t/* \n\t\t\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t\t\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t\t\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t\t\t * patch to use at least some of the path\n\t\t\t */\n\t\t\tvar aParts = window.location.pathname.split('/');\n\t\t\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\t\t\tvar sFullCookie, oData;\n\t\t\t\n\t\t\tif ( fnCallback !== null )\n\t\t\t{\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\t\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\t\t\taParts.join('/')+\"/\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t\t\t * belonging to DataTables.\n\t\t\t */\n\t\t\tvar\n\t\t\t\taCookies =document.cookie.split(';'),\n\t\t\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\t\t\taOldCookies = [];\n\t\t\t\n\t\t\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\t\t\n\t\t\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch( e ) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t// Make sure we delete the oldest ones first\n\t\t\t\taOldCookies.sort( function (a, b) {\n\t\t\t\t\treturn b.time - a.time;\n\t\t\t\t} );\n\t\t\n\t\t\t\t// Eliminate as many old DataTables cookies as we need to\n\t\t\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar old = aOldCookies.pop();\n\t\t\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\t\t\taParts.join('/') + \"/\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tdocument.cookie = sFullCookie;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read an old cookie to get a cookie with an old table state\n\t\t *  @param {string} sName name of the cookie to read\n\t\t *  @returns {string} contents of the cookie - or null if no cookie with that name found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReadCookie ( sName )\n\t\t{\n\t\t\tvar\n\t\t\t\taParts = window.location.pathname.split('/'),\n\t\t\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t\t\t \tsCookieContents = document.cookie.split(';');\n\t\t\t\n\t\t\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t\t\t{\n\t\t\t\tvar c = sCookieContents[i];\n\t\t\t\t\n\t\t\t\twhile (c.charAt(0)==' ')\n\t\t\t\t{\n\t\t\t\t\tc = c.substring(1,c.length);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t\t\t{\n\t\t\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return the settings object for a particular table\n\t\t *  @param {node} nTable table we are using as a dataTable\n\t\t *  @returns {object} Settings object - or null if not found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSettingsFromNode ( nTable )\n\t\t{\n\t\t\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t\t\t{\n\t\t\t\t\treturn DataTable.settings[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the TR nodes for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {array} TR array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTrNodes ( oSettings )\n\t\t{\n\t\t\tvar aNodes = [];\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\taNodes.push( aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn aNodes;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an flat array with all TD nodes for the table, or row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n\t\t *    if not given then the return array will contain all nodes for the table\n\t\t *  @returns {array} TD array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n\t\t{\n\t\t\tvar anReturn = [];\n\t\t\tvar iCorrector;\n\t\t\tvar anTds, nTd;\n\t\t\tvar iRow, iRows=oSettings.aoData.length,\n\t\t\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\t\t\n\t\t\t/* Allow the collection to be limited to just one row */\n\t\t\tif ( iIndividualRow !== undefined )\n\t\t\t{\n\t\t\t\tiStart = iIndividualRow;\n\t\t\t\tiEnd = iIndividualRow+1;\n\t\t\t}\n\t\t\n\t\t\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tif ( oData.nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\t\t\tanTds = [];\n\t\t\t\t\tnTd = oData.nTr.firstChild;\n\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t{\n\t\t\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn anReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Log an error message\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iLevel log error messages, or display them to the user\n\t\t *  @param {string} sMesg error message\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLog( oSettings, iLevel, sMesg )\n\t\t{\n\t\t\tvar sAlert = (oSettings===null) ?\n\t\t\t\t\"DataTables warning: \"+sMesg :\n\t\t\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\t\t\n\t\t\tif ( iLevel === 0 )\n\t\t\t{\n\t\t\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t\t\t{\n\t\t\t\t\talert( sAlert );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(sAlert);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if ( window.console && console.log )\n\t\t\t{\n\t\t\t\tconsole.log( sAlert );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * See if a property is defined on one object, if so assign it to the other object\n\t\t *  @param {object} oRet target object\n\t\t *  @param {object} oSrc source object\n\t\t *  @param {string} sName property\n\t\t *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnMap( oRet, oSrc, sName, sMappedName )\n\t\t{\n\t\t\tif ( sMappedName === undefined )\n\t\t\t{\n\t\t\t\tsMappedName = sName;\n\t\t\t}\n\t\t\tif ( oSrc[sName] !== undefined )\n\t\t\t{\n\t\t\t\toRet[sMappedName] = oSrc[sName];\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n\t\t * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n\t\t * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n\t\t * we do want to deep copy arrays.\n\t\t *  @param {object} oOut Object to extend\n\t\t *  @param {object} oExtender Object from which the properties will be applied to oOut\n\t\t *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n\t\t *  @memberof DataTable#oApi\n\t\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t\t */\n\t\tfunction _fnExtend( oOut, oExtender )\n\t\t{\n\t\t\tvar val;\n\t\t\t\n\t\t\tfor ( var prop in oExtender )\n\t\t\t{\n\t\t\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t\t\t{\n\t\t\t\t\tval = oExtender[prop];\n\t\t\n\t\t\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t\t\t{\n\t\t\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toOut[prop] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oOut;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Bind an event handers to allow a click or return key to activate the callback.\n\t\t * This is good for accessibility since a return on the keyboard will have the\n\t\t * same effect as a click, if the element has focus.\n\t\t *  @param {element} n Element to bind the action to\n\t\t *  @param {object} oData Data object to pass to the triggered function\n\t\t *  @param {function} fn Callback function for when the event is triggered\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBindAction( n, oData, fn )\n\t\t{\n\t\t\t$(n)\n\t\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} )\n\t\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} } )\n\t\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Register a callback function. Easily allows a callback function to be added to\n\t\t * an array store of callback functions that can then all be called together.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {function} fn Function to be called back\n\t\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t\t{\n\t\t\tif ( fn )\n\t\t\t{\n\t\t\t\toSettings[sStore].push( {\n\t\t\t\t\t\"fn\": fn,\n\t\t\t\t\t\"sName\": sName\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Fire callback functions and trigger events. Note that the loop over the callback\n\t\t * array store is done backwards! Further note that you do not want to fire off triggers\n\t\t * in time sensitive applications (for example cell creation) as its slow.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n\t\t *    is fired\n\t\t *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n\t\t{\n\t\t\tvar aoStore = oSettings[sStore];\n\t\t\tvar aRet =[];\n\t\t\n\t\t\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t\t\t}\n\t\t\n\t\t\tif ( sTrigger !== null )\n\t\t\t{\n\t\t\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t\t\t}\n\t\t\n\t\t\treturn aRet;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n\t\t * library, then we use that as it is fast, safe and accurate. If the function isn't \n\t\t * available then we need to built it ourselves - the inspiration for this function comes\n\t\t * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n\t\t * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n\t\t * do what we need, without requiring a dependency for DataTables.\n\t\t *  @param {object} o JSON object to be converted\n\t\t *  @returns {string} JSON string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n\t\t{\n\t\t\t/* Not an object or array */\n\t\t\tvar sType = typeof o;\n\t\t\tif (sType !== \"object\" || o === null)\n\t\t\t{\n\t\t\t\t// simple data type\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\to = '\"'+o+'\"';\n\t\t\t\t}\n\t\t\t\treturn o+\"\";\n\t\t\t}\n\t\t\n\t\t\t/* If object or array, need to recurse over it */\n\t\t\tvar\n\t\t\t\tsProp, mValue,\n\t\t\t\tjson = [],\n\t\t\t\tbArr = $.isArray(o);\n\t\t\t\n\t\t\tfor (sProp in o)\n\t\t\t{\n\t\t\t\tmValue = o[sProp];\n\t\t\t\tsType = typeof mValue;\n\t\t\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\tmValue = '\"'+mValue+'\"';\n\t\t\t\t}\n\t\t\t\telse if (sType === \"object\" && mValue !== null)\n\t\t\t\t{\n\t\t\t\t\tmValue = _fnJsonString(mValue);\n\t\t\t\t}\n\t\t\n\t\t\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t\t\t}\n\t\t\n\t\t\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * From some browsers (specifically IE6/7) we need special handling to work around browser\n\t\t * bugs - this function is used to detect when these workarounds are needed.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBrowserDetect( oSettings )\n\t\t{\n\t\t\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t\t\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t\t\t * without forcing scrolling\n\t\t\t */\n\t\t\tvar n = $(\n\t\t\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t\t\t'</div>'+\n\t\t\t\t'</div>')[0];\n\t\t\n\t\t\tdocument.body.appendChild( n );\n\t\t\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\t\t\tdocument.body.removeChild( n );\n\t\t}\n\t\t\n\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar i, iLen, a = [], tr;\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\t\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\t\t\n\t\t\tif ( !oOpts )\n\t\t\t{\n\t\t\t\toOpts = {};\n\t\t\t}\n\t\t\n\t\t\toOpts = $.extend( {}, {\n\t\t\t\t\"filter\": \"none\", // applied\n\t\t\t\t\"order\": \"current\", // \"original\"\n\t\t\t\t\"page\": \"all\" // current\n\t\t\t}, oOpts );\n\t\t\n\t\t\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t\t\t// senseless otherwise\n\t\t\tif ( oOpts.page == 'current' )\n\t\t\t{\n\t\t\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr ;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr;\n\t\t\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t\t\t}\n\t\t\n\t\t\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t\t\t * to make the selector act like it would in a full table - so we need\n\t\t\t * to build both results and then combine them together\n\t\t\t */\n\t\t\tvar jqA = $(a);\n\t\t\tvar jqTRs = jqA.filter( sSelector );\n\t\t\tvar jqDescendants = jqA.find( sSelector );\n\t\t\n\t\t\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to  \n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for \n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"filter\": \"applied\"});\n\t\t *      \n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the filter\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar aOut = [];\n\t\t\tvar i, iLen, iIndex;\n\t\t\tvar aTrs = this.$( sSelector, oOpts );\n\t\t\n\t\t\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t\t\t}\n\t\t\n\t\t\treturn aOut;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using \n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} mData The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in \n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *    \n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *    \n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *        \n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( mData, bRedraw )\n\t\t{\n\t\t\tif ( mData.length === 0 )\n\t\t\t{\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\t\n\t\t\tvar aiReturn = [];\n\t\t\tvar iTest;\n\t\t\t\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t\t\t{\n\t\t\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\t\t\tif ( iTest == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn aiReturn;\n\t\t\t\t\t}\n\t\t\t\t\taiReturn.push( iTest );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiTest = _fnAddData( oSettings, mData );\n\t\t\t\tif ( iTest == -1 )\n\t\t\t\t{\n\t\t\t\t\treturn aiReturn;\n\t\t\t\t}\n\t\t\t\taiReturn.push( iTest );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn aiReturn;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data \n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n\t\t * through the sWidth parameter). This can be useful when the width of the table's \n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      $(window).bind('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\tthis.fnDraw( false );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\tthis.oApi._fnScrollDraw(oSettings);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnClearTable( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which \n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\t\t\tif ( nTrParent )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 1;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [fnCallBack] Callback function\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, iAODataIndex;\n\t\t\t\n\t\t\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\t\t\n\t\t\t/* Return the data array from this row */\n\t\t\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\t\t\n\t\t\t/* Update the _DT_RowIndex parameter */\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the target row from the search array */\n\t\t\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\t\t\n\t\t\t/* Delete from the display arrays */\n\t\t\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t\t\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\t\t\n\t\t\t/* If there is a user callback function - call it */\n\t\t\tif ( typeof fnCallBack === \"function\" )\n\t\t\t{\n\t\t\t\tfnCallBack.call( this, oSettings, oData );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check for an 'overflow' they case for displaying the table */\n\t\t\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\treturn oData;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables \n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( bRemove )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\t\t\tvar nBody = oSettings.nTBody;\n\t\t\tvar i, iLen;\n\t\t\n\t\t\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\t\t\n\t\t\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\t\t\toSettings.bDestroying = true;\n\t\t\t\n\t\t\t/* Fire off the destroy callbacks for plug-ins etc */\n\t\t\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\t\t\n\t\t\t/* If the table is not being removed, restore the hidden columns */\n\t\t\tif ( !bRemove )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Blitz all DT events */\n\t\t\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\t\t\n\t\t\t/* If there is an 'empty' indicator row, remove it */\n\t\t\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\t\t\n\t\t\t/* When scrolling we had to break the table up - restore it */\n\t\t\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('thead').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the DataTables generated nodes, events and classes */\n\t\t\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t\t\t$(oSettings.nTableWrapper).remove();\n\t\t\t\n\t\t\toSettings.aaSorting = [];\n\t\t\toSettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\n\t\t\t$('th, td', oSettings.nTHead).removeClass( [\n\t\t\t\toSettings.oClasses.sSortable,\n\t\t\t\toSettings.oClasses.sSortableAsc,\n\t\t\t\toSettings.oClasses.sSortableDesc,\n\t\t\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t\t\t);\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\t\t\n\t\t\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\t\t\tvar kids = jqWrapper.contents();\n\t\t\t\t\t$(this).append( kids );\n\t\t\t\t\tjqWrapper.remove();\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the TR elements back into the table in their original order */\n\t\t\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t\t\t{\n\t\t\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t\t\t}\n\t\t\telse if ( !bRemove )\n\t\t\t{\n\t\t\t\tnOrig.appendChild( oSettings.nTable );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Restore the width of the original table */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t\t\t{\n\t\t\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t\t\t}\n\t\t\t\n\t\t\t/* If the were originally stripe classes - then we add them back here. Note\n\t\t\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t\t\t * it's a good effort without getting carried away\n\t\t\t */\n\t\t\tiLen = oSettings.asDestroyStripes.length;\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar anRows = $(nBody).children('tr');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i] == oSettings )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* End it all */\n\t\t\toSettings = null;\n\t\t\toInit = null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( bComplete )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tif ( bComplete === false )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( !oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRegex === undefined || bRegex === null )\n\t\t\t{\n\t\t\t\tbRegex = false;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bSmart === undefined || bSmart === null )\n\t\t\t{\n\t\t\t\tbSmart = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t\t\t{\n\t\t\t\tbShowGlobal = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t\t\t{\n\t\t\t\tbCaseInsensitive = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilterComplete( oSettings, {\n\t\t\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t}, 1 );\n\t\t\t\t\n\t\t\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t\t\t{\n\t\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t\t\t// inside an iframe or frame...\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch ( e ) {\n\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Single column filter */\n\t\t\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t} );\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the \n\t\t * provided parameters.\n\t\t *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [iCol] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( mRow, iCol )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( mRow !== undefined )\n\t\t\t{\n\t\t\t\tvar iRow = mRow;\n\t\t\t\tif ( typeof mRow === 'object' )\n\t\t\t\t{\n\t\t\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\t\t\tif (sNode === \"tr\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNode === \"td\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( iCol !== undefined )\n\t\t\t\t{\n\t\t\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t\t\t}\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow]._aData : null;\n\t\t\t}\n\t\t\treturn _fnGetDataMaster( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will \n\t\t * typically want to use the '$' API method in preference to this as it is more \n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( iRow !== undefined ) {\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow].nTr : null;\n\t\t\t}\n\t\t\treturn _fnGetTrNodes( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible), \n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *        \n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *        \n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *      \n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( nNode )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\t\t\n\t\t\tif ( sNodeName == \"TR\" )\n\t\t\t{\n\t\t\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t\t\t}\n\t\t\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\t\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\t\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently \n\t\t * on display on the page, with the HTML contents that is passed into the \n\t\t * function. This can be used, for example, to ask for confirmation that a \n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\n\t\t\t/* Check that the row given is in the table */\n\t\t\tvar nTableRows = _fnGetTrNodes( oSettings );\n\t\t\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* the old open one if there is one */\n\t\t\tthis.fnClose( nTr );\n\t\t\t\n\t\t\tvar nNewRow = document.createElement(\"tr\");\n\t\t\tvar nNewCell = document.createElement(\"td\");\n\t\t\tnNewRow.appendChild( nNewCell );\n\t\t\tnNewCell.className = sClass;\n\t\t\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\t\t\n\t\t\tif (typeof mHtml === \"string\")\n\t\t\t{\n\t\t\t\tnNewCell.innerHTML = mHtml;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(nNewCell).html( mHtml );\n\t\t\t}\n\t\t\n\t\t\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\t\t\tvar nTrs = $('tr', oSettings.nTBody);\n\t\t\tif ( $.inArray(nTr, nTrs) != -1  )\n\t\t\t{\n\t\t\t\t$(nNewRow).insertAfter(nTr);\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aoOpenRows.push( {\n\t\t\t\t\"nTr\": nNewRow,\n\t\t\t\t\"nParent\": nTr\n\t\t\t} );\n\t\t\t\n\t\t\treturn nNewRow;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API \n\t\t * function. With this function you can have a DataTables table go to the next, \n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnPageChange( oSettings, mAction );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen;\n\t\t\tvar aoColumns = oSettings.aoColumns;\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar nTd, bAppend, iBefore;\n\t\t\t\n\t\t\t/* No point in doing anything if we are requesting what is already true */\n\t\t\tif ( aoColumns[iCol].bVisible == bShow )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the column */\n\t\t\tif ( bShow )\n\t\t\t{\n\t\t\t\tvar iInsert = 0;\n\t\t\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiInsert++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\t\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\t\t\n\t\t\t\t/* Which coloumn should we be inserting before? */\n\t\t\t\tif ( !bAppend )\n\t\t\t\t{\n\t\t\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiBefore = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( bAppend )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Remove a column from display */\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Clear to set the visible flag */\n\t\t\taoColumns[iCol].bVisible = bShow;\n\t\t\n\t\t\t/* Redraw the header and footer based on the new column visibility */\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\t\n\t\t\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\t\t\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a redraw incase anything depending on the table columns needs it \n\t\t\t * (built-in: scrolling) \n\t\t\t */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnSaveState( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See \n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *      \n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the \n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\toSettings.aaSorting = aaSort;\n\t\t\t_fnSort( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t\t\t \tfnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, sDisplay;\n\t\t\tvar iRow = (typeof mRow === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\t\t\n\t\t\tif ( $.isArray(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Array update - update the whole row */\n\t\t\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\t\t\n\t\t\t\t/* Flag to the function that we are recursing */\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\t\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\t\t\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Individual cell update */\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\t\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\n\t\t\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\t\t\tif ( oCol.fnRender !== null )\n\t\t\t\t{\n\t\t\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* Do the actual HTML update */\n\t\t\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t\t\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t\t\t */\n\t\t\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\t\t\toSettings, \n\t\t\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t\t\t);\n\t\t\t\n\t\t\t/* Perform pre-draw actions */\n\t\t\tif ( bAction === undefined || bAction )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\t\t\n\t\t\n\t\t/*\n\t\t * This is really a good bit rubbish this method of exposing the internal methods\n\t\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t\t */\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a wrapper function for exporting an internal functions to an external API.\n\t\t *  @param {string} sFunc API function name\n\t\t *  @returns {function} wrapped function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnExternApiFunc (sFunc)\n\t\t{\n\t\t\treturn function() {\n\t\t\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\t\t\tArray.prototype.slice.call(arguments) );\n\t\t\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t\t\t};\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Reference to internal functions for use by plug-in developers. Note that these\n\t\t * methods are references to internal functions and are considered to be private.\n\t\t * If you use these methods, be aware that they are liable to change between versions\n\t\t * (check the upgrade notes).\n\t\t *  @namespace\n\t\t */\n\t\tthis.oApi = {\n\t\t\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\t\t\"_fnInitialise\": _fnInitialise,\n\t\t\t\"_fnInitComplete\": _fnInitComplete,\n\t\t\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\t\t\"_fnAddColumn\": _fnAddColumn,\n\t\t\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\t\t\"_fnAddData\": _fnAddData,\n\t\t\t\"_fnCreateTr\": _fnCreateTr,\n\t\t\t\"_fnGatherData\": _fnGatherData,\n\t\t\t\"_fnBuildHead\": _fnBuildHead,\n\t\t\t\"_fnDrawHead\": _fnDrawHead,\n\t\t\t\"_fnDraw\": _fnDraw,\n\t\t\t\"_fnReDraw\": _fnReDraw,\n\t\t\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\t\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\t\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\t\t\"_fnServerParams\": _fnServerParams,\n\t\t\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\t\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\t\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\t\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\t\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\t\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\t\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\t\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\t\t\"_fnFilter\": _fnFilter,\n\t\t\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\t\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\t\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\t\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\t\t\"_fnSort\": _fnSort,\n\t\t\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\t\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\t\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\t\t\"_fnPageChange\": _fnPageChange,\n\t\t\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\t\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\t\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\t\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\t\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\t\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\t\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\t\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\t\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\t\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\t\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\t\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\t\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\t\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\t\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\t\t\"_fnStringToCss\": _fnStringToCss,\n\t\t\t\"_fnDetectType\": _fnDetectType,\n\t\t\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\t\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\t\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\t\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\t\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\t\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\t\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\t\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\t\t\"_fnLog\": _fnLog,\n\t\t\t\"_fnClearTable\": _fnClearTable,\n\t\t\t\"_fnSaveState\": _fnSaveState,\n\t\t\t\"_fnLoadState\": _fnLoadState,\n\t\t\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\t\t\"_fnReadCookie\": _fnReadCookie,\n\t\t\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\t\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\t\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\t\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\t\t\"_fnMap\": _fnMap,\n\t\t\t\"_fnGetRowData\": _fnGetRowData,\n\t\t\t\"_fnGetCellData\": _fnGetCellData,\n\t\t\t\"_fnSetCellData\": _fnSetCellData,\n\t\t\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\t\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\t\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\t\t\"_fnBindAction\": _fnBindAction,\n\t\t\t\"_fnExtend\": _fnExtend,\n\t\t\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\t\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\t\t\"_fnJsonString\": _fnJsonString,\n\t\t\t\"_fnRender\": _fnRender,\n\t\t\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\t\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\t\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\t\t\"_fnGetColumns\": _fnGetColumns\n\t\t};\n\t\t\n\t\t$.extend( DataTable.ext.oApi, this.oApi );\n\t\t\n\t\tfor ( var sFunc in DataTable.ext.oApi )\n\t\t{\n\t\t\tif ( sFunc )\n\t\t\t{\n\t\t\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar bUsePassedData = false;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\t\t\t\"table: \"+this.nodeName );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( DataTable.settings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn DataTable.settings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oInit.bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( DataTable.settings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\":        this,\n\t\t\t\t\"oApi\":          _that.oApi,\n\t\t\t\t\"oInit\":         oInit,\n\t\t\t\t\"sDestroyWidth\": $(this).width(),\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\tDataTable.settings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\tif ( !oInit )\n\t\t\t{\n\t\t\t\toInit = {};\n\t\t\t}\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\toInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripeClasses\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n\t\t\t_fnMap( oSettings, oInit, \"fnServerData\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n\t\t\t_fnMap( oSettings, oInit, \"sServerMethod\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSorting\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n\t\t\t_fnMap( oSettings, oInit, \"aLengthMenu\" );\n\t\t\t_fnMap( oSettings, oInit, \"sPaginationType\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxSource\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n\t\t\t_fnMap( oSettings, oInit, \"iCookieDuration\" );\n\t\t\t_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n\t\t\t_fnMap( oSettings, oInit, \"sDom\" );\n\t\t\t_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n\t\t\t_fnMap( oSettings, oInit, \"iTabIndex\" );\n\t\t\t_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n\t\t\t_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n\t\t\t_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n\t\t\t_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateLoad\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateSave\" );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t\t\t\t   oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t\t\t\t * processing must be enabled by the developer\n\t\t\t\t */\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t\t\t\t * you want to have multiple tables with multiple independent classes \n\t\t\t\t */\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\t\t\t\n\t\t\t\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oSettings.oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by a cookie! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\toSettings.oFeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.aaData !== null )\n\t\t\t{\n\t\t\t\tbUsePassedData = true;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tif ( oInit.oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t\t\t\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toSettings.oClasses.sStripeOdd,\n\t\t\t\t\toSettings.oClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tiLen=oSettings.asStripeClasses.length;\n\t\t\toSettings.asDestroyStripes = [];\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar bStripeRemove = false;\n\t\t\t\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tbStripeRemove = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\t\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( bStripeRemove )\n\t\t\t\t{\n\t\t\t\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\t\t\t\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumnsInit[i] === null )\n\t\t\t\t\t{\n\t\t\t\t\t\taoColumnsInit[i] = {};\n\t\t\t\t\t}\n\t\t\t\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * Check the aaSorting array\n\t\t\t */\n\t\t\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][0] = 0;\n\t\t\t\t}\n\t\t\t\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\t\t\t\n\t\t\t\t/* Add a default sorting index */\n\t\t\t\tif ( oSettings.aaSorting[i][2] === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][2] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\t\t\t\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Set the current sorting index based on aoColumns.asSorting */\n\t\t\t\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = [ document.createElement( 'thead' ) ];\n\t\t\t\tthis.appendChild( thead[0] );\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = [ document.createElement( 'tbody' ) ];\n\t\t\t\tthis.appendChild( tbody[0] );\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\toSettings.nTBody.setAttribute( \"role\", \"alert\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = [ document.createElement( 'tfoot' ) ];\n\t\t\t\tthis.appendChild( tfoot[0] );\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length > 0 )\n\t\t\t{\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( bUsePassedData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Grab the data from the page */\n\t\t\t\t_fnGatherData( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t * to ensure compatibility.\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t *    version, or false if this version of DataTales is not suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n\t */\n\tDataTable.fnVersionCheck = function( sVersion )\n\t{\n\t\t/* This is cheap, but effective */\n\t\tvar fnZPad = function (Zpad, count)\n\t\t{\n\t\t\twhile(Zpad.length < count) {\n\t\t\t\tZpad += '0';\n\t\t\t}\n\t\t\treturn Zpad;\n\t\t};\n\t\tvar aThis = DataTable.ext.sVersion.split('.');\n\t\tvar aThat = sVersion.split('.');\n\t\tvar sThis = '', sThat = '';\n\t\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsThis += fnZPad( aThis[i], 3 );\n\t\t\tsThat += fnZPad( aThat[i], 3 );\n\t\t}\n\t\t\n\t\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n\t};\n\t\n\t\n\t/**\n\t * Check if a TABLE node is a DataTable table already or not.\n\t *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n\t *    node types can be passed in, but will always return false).\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var ex = document.getElementById('example');\n\t *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n\t *      $(ex).dataTable();\n\t *    }\n\t */\n\tDataTable.fnIsDataTable = function ( nTable )\n\t{\n\t\tvar o = DataTable.settings;\n\t\n\t\tfor ( var i=0 ; i<o.length ; i++ )\n\t\t{\n\t\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn false;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can select to\n\t * get only currently visible tables.\n\t *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n\t *    visible tables only.\n\t *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var table = $.fn.dataTable.fnTables(true);\n\t *    if ( table.length > 0 ) {\n\t *      $(table).dataTable().fnAdjustColumnSizing();\n\t *    }\n\t */\n\tDataTable.fnTables = function ( bVisible )\n\t{\n\t\tvar out = [];\n\t\n\t\tjQuery.each( DataTable.settings, function (i, o) {\n\t\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t\t{\n\t\t\t\tout.push( o.nTable );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn out;\n\t};\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t/**\n\t * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n\t * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n\t * of the build in methods use this method to provide their own capabilities (sorting methods\n\t * for example).\n\t * \n\t * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n\t * and modified by plug-ins.\n\t *  @namespace\n\t */\n\tDataTable.models.ext = {\n\t\t/**\n\t\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t\t * over the filtering logic. Each element in this array is a function (parameters\n\t\t * described below) that is called for every row in the table, and your logic decides if\n\t\t * it should be included in the filtered data set or not.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       Function input parameters:\n\t\t *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t\t *    // a certain range.\n\t\t *    $.fn.dataTableExt.afnFiltering.push(\n\t\t *      function( oSettings, aData, iDataIndex ) {\n\t\t *        var iMin = document.getElementById('min').value * 1;\n\t\t *        var iMax = document.getElementById('max').value * 1;\n\t\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"afnFiltering\": [],\n\t\n\t\n\t\t/**\n\t\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t\t * an array of the values you wish to be sorted for the column in question and then return\n\t\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t\t * data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *         <li>{int} Target column index</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{array} Data for the column to be sorted upon</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t\t *    {\n\t\t *      var aData = [];\n\t\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t *        aData.push( this.value );\n\t\t *      } );\n\t\t *      return aData;\n\t\t *    }\n\t\t */\n\t\t\"afnSortData\": [],\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t\t *   <ul>\n\t\t *     <li>{function} fnInit Initialisation of the plug-in\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t\t *                into DataTables control (sDom) - for example this might be useful when \n\t\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t\t *     <li>{string} sFeature Feature name</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t * \n\t\t *  @example\n\t\t *    // How TableTools initialises itself.\n\t\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\",\n\t\t *      \"sFeature\": \"TableTools\"\n\t\t *    } );\n\t\t */\n\t\t\"aoFeatures\": [],\n\t\n\t\n\t\t/**\n\t\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t\t * column) or they can be automatically detected by the methods in this array. The functions\n\t\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t\t * and returning the type if it is a known type, or null otherwise.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be analysed</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t\t *           on to the other type detection functions.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  \n\t\t *  @example\n\t\t *    // Currency type detection plug-in:\n\t\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t\t *      function ( sData ) {\n\t\t *        var sValidChars = \"0123456789.-\";\n\t\t *        var Char;\n\t\t *        \n\t\t *        // Check the numeric part\n\t\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t\t *          Char = sData.charAt(i); \n\t\t *          if (sValidChars.indexOf(Char) == -1) {\n\t\t *            return null;\n\t\t *          }\n\t\t *        }\n\t\t *        \n\t\t *        // Check prefixed by currency\n\t\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t\t *          return 'currency';\n\t\t *        }\n\t\t *        return null;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"aTypes\": [],\n\t\n\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t\t * in order to ensure compatibility.\n\t\t *  @type function\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t\t *    required version, or false if this version of DataTales is not suitable\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iApiIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t\t * the format that should be filtered upon. This is done by adding functions this object \n\t\t * with a parameter name which matches the sType for that target column. This is the\n\t\t * corollary of <i>afnSortData</i> for filtering data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t * \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t *    }\n\t\t */\n\t\t\"ofnSearch\": {},\n\t\n\t\n\t\t/**\n\t\t * Container for all private functions in DataTables so they can be exposed externally\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oApi\": {},\n\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oStdClasses\": {},\n\t\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oJUIClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t\t * the addition of pagination controls by extending this object, which can then be enabled\n\t\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t\t * to) that has two properties, both methods that are used by DataTables to update the\n\t\t * control's state.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t\t *         of the table. It is expected that this function will add the required DOM elements \n\t\t *         to the page for the paging controls to work. The element pointer \n\t\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t\t *         as children\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t\t *               change, this method must be called to redraw the table.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *     <li>\n\t\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t\t *         status.\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t\t *               or attach new event listeners</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t\t *        nFirst = document.createElement( 'span' );\n\t\t *        nPrevious = document.createElement( 'span' );\n\t\t *        nNext = document.createElement( 'span' );\n\t\t *        nLast = document.createElement( 'span' );\n\t\t *        \n\t\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t\t *        \n\t\t *        nFirst.className = \"paginate_button first\";\n\t\t *        nPrevious.className = \"paginate_button previous\";\n\t\t *        nNext.className=\"paginate_button next\";\n\t\t *        nLast.className = \"paginate_button last\";\n\t\t *        \n\t\t *        nPaging.appendChild( nFirst );\n\t\t *        nPaging.appendChild( nPrevious );\n\t\t *        nPaging.appendChild( nNext );\n\t\t *        nPaging.appendChild( nLast );\n\t\t *        \n\t\t *        $(nFirst).click( function () {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nPrevious).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nNext).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nLast).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t\t *      },\n\t\t *      \n\t\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t\t *        if ( !oSettings.aanFeatures.p ) {\n\t\t *          return;\n\t\t *        }\n\t\t *        \n\t\t *        // Loop over each instance of the pager\n\t\t *        var an = oSettings.aanFeatures.p;\n\t\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t *          var buttons = an[i].getElementsByTagName('span');\n\t\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t\t *          }\n\t\t *          \n\t\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t\t *            buttons[2].className = \"paginate_disabled_next\";\n\t\t *            buttons[3].className = \"paginate_disabled_next\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[2].className = \"paginate_enabled_next\";\n\t\t *            buttons[3].className = \"paginate_enabled_next\";\n\t\t *          }\n\t\t *        }\n\t\t *      }\n\t\t *    };\n\t\t */\n\t\t\"oPagination\": {},\n\t\n\t\n\t\t/**\n\t\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t\t * data column (you can add your own type detection functions, or override automatic \n\t\t * detection using sType). With this specific type given to the column, DataTables will \n\t\t * apply the required sort from the functions in the object. Each sort type must provide\n\t\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t\t * are run). The two sorting functions are typical Javascript sort methods:\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data to compare to the second parameter</li>\n\t\t *         <li>{*} Data to compare to the first parameter</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t\t *           the first parameter should be sorted height than the second parameter.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-case-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-case-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Case-insensitive string sorting, with pre-formatting\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-pre\": function(x) {\n\t\t *        return x.toLowerCase();\n\t\t *      },\n\t\t *      \"string-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"oSort\": {},\n\t\n\t\n\t\t/**\n\t\t * Version string for plug-ins to check compatibility. Allowed format is\n\t\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t\t * e are optional\n\t\t *  @type string\n\t\t *  @default Version number\n\t\t */\n\t\t\"sVersion\": DataTable.version,\n\t\n\t\n\t\t/**\n\t\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t\t *  @type string\n\t\t *  @default alert\n\t\t */\n\t\t\"sErrMode\": \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Store information for DataTables to access globally about other instances\n\t\t *  @namespace\n\t\t *  @private\n\t\t */\n\t\t\"_oExternConfig\": {\n\t\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\t\"iNextUnique\": 0\n\t\t}\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings \n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data \n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is \n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": [],\n\t\n\t\t/**\n\t\t * Array of TD elements that are cached for hidden rows, so they can be\n\t\t * reinserted into the table if a column is made visible again (or to act\n\t\t * as a store if a column is made hidden). Only hidden columns have a \n\t\t * reference in the array. For non-hidden columns the value is either\n\t\t * undefined or null.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_anHidden\": [],\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults.columns} \n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t\t * to do with the data, and this property serves as the switch. Firstly, you \n\t\t * can have the sorting and filtering use the rendered value (true - default), \n\t\t * or you can have the sorting and filtering us the original value (false).\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate to the type detection method if the automatic type\n\t\t * detection should be used, or if a column type (sType) has been specified\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @private\n\t\t */\n\t\t\"_bAutoType\": true,\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column \n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get - \n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @default null\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b> \n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data \n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t\t * in DataTables as such, but can be used for plug-ins to reference the \n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation \n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which \n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\" },\n\t\t *          { \"sTitle\": \"Browser\" },\n\t\t *          { \"sTitle\": \"Platform\" },\n\t\t *          { \"sTitle\": \"Version\" },\n\t\t *          { \"sTitle\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (mData)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t\t * initialisation. You can define which column(s) the sort is performed upon, \n\t\t * and the sorting direction, with this variable. The aaSorting array should \n\t\t * contain an array for each column to be sorted initially containing the \n\t\t * column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the aaSorting parameter, but \n\t\t * cannot be overridden by user interaction with the table. What this means \n\t\t * is that you could have a column (visible or hidden) which the sorting will \n\t\t * always be forced on first - any sorting after that (from the user) will \n\t\t * then be performed as required. This can be useful for grouping rows \n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSortingFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be \n\t\t * either a 1D array of options which will be used for both the displayed \n\t\t * option and the value, or a 2D array which will use the array in the first \n\t\t * position as the value, and the array in the second position as the \n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t *  \n\t\t *  @example\n\t\t *    // Setting the default display length as well as length menu\n\t\t *    // This is likely to be wanted if you remove the '10' option which\n\t\t *    // is the iDisplayLength default.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 25,\n\t\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The aoColumns option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see \n\t\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t\t * column, multiple columns, or all columns, using the aTargets property of \n\t\t * each object in the array. This allows great flexibility when creating \n\t\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t\t * columns you specifically want. aoColumnDefs may use any of the column \n\t\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t\t * have aTargets defined in each object in the array. Values in the aTargets\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as oSearch, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size \n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoSearchCols\": [\n\t\t *          null,\n\t\t *          { \"sSearch\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This \n\t\t * array may be of any length, and DataTables will apply each class \n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t\t *    options</i>\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using aoColumns.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bAutoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t\t *        \"bDeferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with \n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false,\n\t\t *        \"bDestroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.sDom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information \n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bInfo\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bJQueryUI\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bLengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *    \n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false,\n\t\t *        \"bRetrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *    \n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var oTable = initTable();\n\t\t *      // perform API operations with oTable \n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollAutoCss\": false,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollAutoCss\": true,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t\t * data as a user scrolls through a table, which is very useful for large\n\t\t * dataset. This cannot be used with pagination, which is automatically\n\t\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t\t * in preference to this option.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollInfinite\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the \"bSortable\" option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSort\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t\t * table display information such as pagination information, display length,\n\t\t * filtering and sorting. As such when the end user reloads the page the\n\t\t * display display will match what thy had previously set up.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * Customise the cookie and / or the parameters being stored when using\n\t\t * DataTables with state saving enabled. This function is called whenever\n\t\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t\t * returned. Note that the data object passed in is a Javascript object which\n\t\t * must be converted to a string (JSON.stringify for example).\n\t\t *  @type function\n\t\t *  @param {string} sName Name of the cookie defined by DataTables\n\t\t *  @param {object} oData Data to be stored in the cookie\n\t\t *  @param {string} sExpires Cookie expires string\n\t\t *  @param {string} sPath Path of the cookie to set\n\t\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t\t *    using encodeURIComponent())\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t\t *          // Customise oData or sName or whatever else here\n\t\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDataIndex The index of this row in aoData\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnDrawCallback\": function( oSettings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' even.\n\t\t *  @type function\n\t\t *  @param {node} nFoot \"TR\" element for the footer\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the \n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the \n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} iIn number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFormatNumber\": function ( iIn ) {\n\t\t *          if ( iIn &lt; 1000 ) {\n\t\t *            return iIn;\n\t\t *          } else {\n\t\t *            var \n\t\t *              s=(iIn+\"\"), \n\t\t *              a=s.split(\"\"), out=\"\", \n\t\t *              iLen=s.length;\n\t\t *            \n\t\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t\t *                out = \"'\"+out;\n\t\t *              }\n\t\t *              out = a[iLen-i-1]+out;\n\t\t *            }\n\t\t *          }\n\t\t *          return out;\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( iIn ) {\n\t\t\tif ( iIn < 1000 )\n\t\t\t{\n\t\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\t\treturn iIn;\n\t\t\t}\n\t\n\t\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t\t{\n\t\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t\t}\n\t\t\t\tout = a[iLen-i-1]+out;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} nHead \"TR\" element for the header\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} iStart Starting position in data for the draw\n\t\t *  @param {int} iEnd End position in data for the draw\n\t\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t\t *        return iStart +\" to \"+ iEnd;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnInitComplete\": function(oSettings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server ($.getJSON) so something more suitable for your\n\t\t * application. For example you could use POST data, or pull information from\n\t\t * a Gears or AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t\t *  @param {array} aoData A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} fnCallback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // POST data to server\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\",\n\t\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t\t *          oSettings.jqXHR = $.ajax( {\n\t\t *            \"dataType\": 'json', \n\t\t *            \"type\": \"POST\", \n\t\t *            \"url\": sSource, \n\t\t *            \"data\": aoData, \n\t\t *            \"success\": fnCallback\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\t\"url\":  sUrl,\n\t\t\t\t\"data\": aoData,\n\t\t\t\t\"success\": function (json) {\n\t\t\t\t\tif ( json.sError ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\t\tfnCallback( json );\n\t\t\t\t},\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} aoData Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t\t *    as this is passed by reference.\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"fnServerParams\": function ( aoData ) {\n\t\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from its state saving\n\t\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoad\": function (oSettings) {\n\t\t *          var o;\n\t\t *          \n\t\t *          // Send an Ajax request to the server to get the data. Note that\n\t\t *          // this is a synchronous request.\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"async\": false,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              o = json;\n\t\t *            }\n\t\t *          } );\n\t\t *          \n\t\t *          return o;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoad\": function ( oSettings ) {\n\t\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\t\tvar oData;\n\t\n\t\t\ttry {\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t\t} catch (e) {\n\t\t\t\toData = null;\n\t\t\t}\n\t\n\t\t\treturn oData;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for \n\t\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that is to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that was loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored - by default it will use a cookie, but you\n\t\t * might want to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSave\": function (oSettings, oData) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": oData,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\t\tthis.oApi._fnCreateCookie( \n\t\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\t\toSettings.iCookieDuration, \n\t\t\t\toSettings.sCookiePrefix, \n\t\t\t\toSettings.fnCookieCallback\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table \n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or \n\t\t * other state properties or modification. Note that for plug-in authors, you should \n\t\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration of the cookie which is used for storing session information. This\n\t\t * value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iCookieDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": [ 57, 100 ],\n\t\t *        \"oSearch\": {\n\t\t *          \"sSearch\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (bLengthChange) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * The scroll gap is the amount of scrolling that is left to go before\n\t\t * DataTables will load the next 'page' of data automatically. You typically\n\t\t * want a gap which is big enough that the scrolling will be smooth for the\n\t\t * user, while not so large that it will load more data than need.\n\t\t *  @type int\n\t\t *  @default 100\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"iScrollLoadGap\": 50\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iScrollLoadGap\": 100,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iTabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information that \n\t\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t\t * can be freely moved or removed as the language requirements change.\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the \n\t\t\t * format of this string should match sInfo.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended \n\t\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t\t * to format large numbers that are used in the table information. By\n\t\t\t * default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoThousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoThousands\": \",\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * By default DataTables will look for the property 'aaData' when obtaining\n\t\t * data from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted object\n\t\t * notation to get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default aaData\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // Get data from { \"data\": [...] }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data\"\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data.inner\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sAjaxDataProp\": \"aaData\",\n\t\n\t\n\t\t/**\n\t\t * You can instruct DataTables to load data from an external source using this\n\t\t * parameter (use aData if you want to pass data in you already have). Simply\n\t\t * provide a url a JSON object can be obtained from. This object must include\n\t\t * the parameter 'aaData' which is the data source for the table.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter can be used to override the default prefix that DataTables\n\t\t * assigns to a cookie when state saving is enabled.\n\t\t *  @type string\n\t\t *  @default SpryMedia_DataTables_\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\t\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * DataTables features two different built-in pagination interaction methods\n\t\t * ('two_button' or 'full_numbers') which present different page controls to\n\t\t * the end user. Further methods can be added using the API (see below).\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sPaginationType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t\t * layout, or you have a large number of columns in the table, you can enable\n\t\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t\t * property can be any CSS unit, or a number (in which case it will be treated\n\t\t * as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"sScrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t\t *        \"sServerMethod\": \"POST\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sServerMethod\": \"GET\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.columns = {\n\t\t/**\n\t\t * Allows a column's sorting to take multiple columns into account when \n\t\t * doing a sort. For example first name / last name columns make sense to \n\t\t * do a multi-column sort over the two columns.\n\t\t *  @type array\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\n\t\t/**\n\t\t * You can control the default sorting direction, and even alter the behaviour\n\t\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t\t * parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          { \"asSorting\": [ \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSearchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSortable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t\t * to use the original data (before rendering) for sorting and filtering \n\t\t * (the default is to used the rendered data that the user can see). This \n\t\t * may be useful for dates etc.\n\t\t * \n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bVisible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\t\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @param {int} iCol The column index for aoColumns\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [3],\n\t\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t\t *            if ( sData == \"1.7\" ) {\n\t\t *              $(nTd).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @param {object} o.mDataProp The data property used for this column\n\t\t *  @param {*}      val The current cell value\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\n\t\n\t\t/**\n\t\t * The column index (starting from 0!) that you wish a sort to be performed\n\t\t * upon when this column is selected for sorting. This can be used for sorting\n\t\t * on hidden columns for example.\n\t\t *  @type int\n\t\t *  @default -1 <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"iDataSort\": 1 },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t\t * in DataTables for this option, but it is strongly recommended that you use\n\t\t * mData in preference to mDataProp.\n\t\t *  @name DataTable.defaults.columns.mDataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any JSON data source property,\n\t\t * including deeply nested objects / properties. mData can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source.</li>\n\t\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t\t *       by default, so you will need to specify the default content you want -\n\t\t *       typically an empty string). This can be useful on generated columns such \n\t\t *       as edit / delete action columns.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row</li>\n\t\t *         <li>{string} The type call data requested - this will be 'set' when\n\t\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t\t *           DataTables expects to get the raw data for the object back</li>\n\t\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is not required when 'set' is the type\n\t\t *       of call, but otherwise the return is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t\t * reflects the flexibility of this property and is consistent with the naming of\n\t\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t\t * it automatically maps the old name to the new if required.\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          { \"mData\": \"platform.inner\" },\n\t\t *          { \"mData\": \"platform.details.0\" },\n\t\t *          { \"mData\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Using mData as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to mData and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t\t * but not altering the underlying data for the table, use this property. mData\n\t\t * can actually do everything this property can and more, but this parameter is\n\t\t * easier to use since there is no 'set' option. Like mData is can be given\n\t\t * in a number of different ways to effect its behaviour, with the addition of \n\t\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t\t * objects):\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source and also array brackets to indicate that the data reader should\n\t\t *       loop over the data source array. When characters are given between the array\n\t\t *       brackets, these characters are used to join the data source array together.\n\t\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t\t *           'type' or 'sort'.</li>\n\t\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use mData</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          {\n\t\t *            \"mData\": \"platform\",\n\t\t *            \"mRender\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *        {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": \"download_link\",\n\t\t *          \"mRender\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"sCellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sClass\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this, and it is not documented on the \n\t\t * general DataTables.net documentation\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *  @dtopt Columns\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"sContentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\",\n\t\t *            \"aTargets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sName\": \"engine\" },\n\t\t *          { \"sName\": \"browser\" },\n\t\t *          { \"sName\": \"platform\" },\n\t\t *          { \"sName\": \"version\" },\n\t\t *          { \"sName\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the sorting which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to sorting. This allows sorting to occur on user editable\n\t\t * elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"sSortDataType\": \"dom-text\" },\n\t\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t\t *          { \"sSortDataType\": \"dom-select\" },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t\t *    original HTML table.</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sTitle\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be sorted.\n\t\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t\t * before sorting)) are currently available. Note that only date formats\n\t\t * understood by Javascript's Date() object will be accepted as type date. For\n\t\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t\t * 'date' or 'html' (by default). Further types can be adding through\n\t\t * plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sType\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sWidth\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a \n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults} but this \n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant \n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\t\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t\t * this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoCss\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t\t * using the Scroller plug-in.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfinite\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\t\t\n\t\t\t/**\n\t\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t\t * when using infinite scrolling.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type int\n\t\t\t */\n\t\t\t\"iLoadGap\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See \n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The \n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\t\n\t\t/**\n\t\t * Search data array for regular expression searching\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDataSearch\": [],\n\t\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a \n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\t\n\t\t/**\n\t\t * Store the applied search for each column - see \n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t *   <li>Index 2 - index of asSorting for this column</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array|null\n\t\t *  @default null\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width \n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of \n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data \n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string \n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\t\n\t\t/**\n\t\t * The cookie duration (for bStateSave) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iCookieDuration\": 0,\n\t\t\n\t\t/**\n\t\t * The cookie name prefix.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sCookiePrefix\": \"\",\n\t\t\n\t\t/**\n\t\t * Callback function for cookie creation.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object \n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\t\n\t\t/**\n\t\t * State that was loaded from the cookie. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case \n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering. \n\t\t * This can be used for working with the XHR information in one of the \n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra \n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t\t * this property to get the end point\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @private\n\t\t */\n\t\t\"_iDisplayEnd\": 10,\n\t\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than \n\t\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplayMaster.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplay.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Set the display end point - aiDisplay index\n\t\t *  @type function\n\t\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._iDisplayEnd;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\t\n\t$.extend( DataTable.ext.oStdClasses, {\n\t\t\"sTable\": \"dataTable\",\n\t\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\t\"sPageJUINext\": \"\",\n\t\t\"sPageJUIPrev\": \"\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"paginate_active\",\n\t\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\t\"sPageFirst\": \"first\",\n\t\t\"sPagePrevious\": \"previous\",\n\t\t\"sPageNext\": \"next\",\n\t\t\"sPageLast\": \"last\",\n\t\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"ui-state-default\",\n\t\t\"sSortDesc\": \"ui-state-default\",\n\t\t\"sSortable\": \"ui-state-default\",\n\t\t\"sSortableAsc\": \"ui-state-default\",\n\t\t\"sSortableDesc\": \"ui-state-default\",\n\t\t\"sSortableNone\": \"ui-state-default\",\n\t\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"ui-state-default\",\n\t\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n\t} );\n\t\n\t/*\n\t * Variable: oPagination\n\t * Purpose:  \n\t * Scope:    jQuery.fn.dataTableExt\n\t */\n\t$.extend( DataTable.ext.oPagination, {\n\t\t/*\n\t\t * Variable: two_button\n\t\t * Purpose:  Standard two button (forward/back) pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"two_button\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t\t:\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t\t$(nPaging).append( sAppend );\n\t\t\t\t\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nPrevious = els[0],\n\t\t\t\t\tnNext = els[1];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\t\n\t\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnUpdate\n\t\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar nNode;\n\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\t\tif ( nNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Previous page */\n\t\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t\t    \n\t\t\t\t\t\t/* Next page */\n\t\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * Variable: iFullNumbersShowPages\n\t\t * Purpose:  Change the number of pages which can be seen\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"iFullNumbersShowPages\": 5,\n\t\t\n\t\t/*\n\t\t * Variable: full_numbers\n\t\t * Purpose:  Full numbers pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"full_numbers\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t$(nPaging).append(\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<span></span>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t\t);\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\tnNext = els[2],\n\t\t\t\t\tnLast = els[3];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t\t * Purpose:  Update the list of page buttons shows\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\t\tvar sList = \"\";\n\t\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar fnBind = function (j) {\n\t\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t/* Pages calculation */\n\t\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = 1;\n\t\t\t\t\tiCurrentPage = 1;\n\t\t\t\t}\n\t\t\t\telse if (iPages < iPageCount)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPageCount;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t\t}\n\t\n\t\t\t\t\n\t\t\t\t/* Build the dynamic list */\n\t\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i];\n\t\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t\t.html( sList )\n\t\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\t\n\t\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\t\tanStatic = [\n\t\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t\t];\n\t\n\t\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t$.extend( DataTable.ext.oSort, {\n\t\t/*\n\t\t * text sorting\n\t\t */\n\t\t\"string-pre\": function ( a )\n\t\t{\n\t\t\tif ( typeof a != 'string' ) {\n\t\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t\t}\n\t\t\treturn a.toLowerCase();\n\t\t},\n\t\n\t\t\"string-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"string-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * html sorting (ignore html tags)\n\t\t */\n\t\t\"html-pre\": function ( a )\n\t\t{\n\t\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t\t},\n\t\t\n\t\t\"html-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"html-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * date sorting\n\t\t */\n\t\t\"date-pre\": function ( a )\n\t\t{\n\t\t\tvar x = Date.parse( a );\n\t\t\t\n\t\t\tif ( isNaN(x) || x===\"\" )\n\t\t\t{\n\t\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t\t}\n\t\t\treturn x;\n\t\t},\n\t\n\t\t\"date-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"date-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * numerical sorting\n\t\t */\n\t\t\"numeric-pre\": function ( a )\n\t\t{\n\t\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t\t},\n\t\n\t\t\"numeric-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"numeric-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t}\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.aTypes, [\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is numeric\n\t\t * Returns:  string:'numeric' or null\n\t\t * Inputs:   mixed:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\t/* Allow zero length strings as a number */\n\t\t\tif ( typeof sData === 'number' )\n\t\t\t{\n\t\t\t\treturn 'numeric';\n\t\t\t}\n\t\t\telse if ( typeof sData !== 'string' )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar sValidFirstChars = \"0123456789-\";\n\t\t\tvar sValidChars = \"0123456789.\";\n\t\t\tvar Char;\n\t\t\tvar bDecimal = false;\n\t\t\t\n\t\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\t\tChar = sData.charAt(0); \n\t\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check all the other characters are valid */\n\t\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t\t{\n\t\t\t\tChar = sData.charAt(i); \n\t\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Only allowed one decimal place... */\n\t\t\t\tif ( Char == \".\" )\n\t\t\t\t{\n\t\t\t\t\tif ( bDecimal )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbDecimal = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'numeric';\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is actually a formatted date\n\t\t * Returns:  string:'date' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tvar iParse = Date.parse(sData);\n\t\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t\t{\n\t\t\t\treturn 'date';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t\t * Returns:  string:'html' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t\t{\n\t\t\t\treturn 'html';\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t] );\n\t\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n"
  },
  {
    "path": "src/main/webapp/assets/dropzone/css/dropzone.css",
    "content": ".dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 28px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n.dropzone {\n  border: 1px solid rgba(0,0,0,0.03);\n  min-height: 360px;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n  background: rgba(0,0,0,0.03);\n  padding: 23px;\n}\n.dropzone .default.message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n  background-position: 0 0;\n  position: absolute;\n  width: 428px;\n  height: 123px;\n  margin-left: -214px;\n  margin-top: -61.5px;\n  top: 50%;\n  left: 50%;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .default.message {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .default.message span {\n  display: none;\n}\n.dropzone.square .default.message {\n  background-position: 0 -123px;\n  width: 268px;\n  margin-left: -134px;\n  height: 174px;\n  margin-top: -87px;\n}\n.dropzone.drag-hover .message {\n  opacity: 0.15;\n  filter: alpha(opacity=15);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=15)\";\n}\n.dropzone.started .message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  font-size: 14px;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview.image-preview:hover .details img,\n.dropzone-previews .preview.image-preview:hover .details img {\n  display: block;\n  opacity: 0.1;\n  filter: alpha(opacity=10);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=10)\";\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .progress .upload,\n.dropzone-previews .preview.error .progress .upload {\n  background: #ee1e2d;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark,\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .error-mark,\n  .dropzone-previews .preview .error-mark,\n  .dropzone .preview .success-mark,\n  .dropzone-previews .preview .success-mark {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview .error-mark span,\n.dropzone-previews .preview .error-mark span,\n.dropzone .preview .success-mark span,\n.dropzone-previews .preview .success-mark span {\n  display: none;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  background-position: -268px -123px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  background-position: -268px -163px;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  -webkit-animation: loading 0.4s linear infinite;\n  -moz-animation: loading 0.4s linear infinite;\n  -o-animation: loading 0.4s linear infinite;\n  -ms-animation: loading 0.4s linear infinite;\n  animation: loading 0.4s linear infinite;\n  -webkit-transition: width 0.3s ease-in-out;\n  -moz-transition: width 0.3s ease-in-out;\n  -o-transition: width 0.3s ease-in-out;\n  -ms-transition: width 0.3s ease-in-out;\n  transition: width 0.3s ease-in-out;\n  -webkit-border-radius: 2px;\n  border-radius: 2px;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0%;\n  height: 100%;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: repeat-x;\n  background-position: 0px -400px;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .progress .upload,\n  .dropzone-previews .preview .progress .upload {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview.success .progress,\n.dropzone-previews .preview.success .progress {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n@-moz-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-webkit-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-o-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-ms-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/assets/dropzone/deps/emitter/index.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/dropzone/dropzone.js",
    "content": ";(function(){\n\n\n/**\n * hasOwnProperty.\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Require the given path.\n *\n * @param {String} path\n * @return {Object} exports\n * @api public\n */\n\nfunction require(path, parent, orig) {\n  var resolved = require.resolve(path);\n\n  // lookup failed\n  if (null == resolved) {\n    orig = orig || path;\n    parent = parent || 'root';\n    var err = new Error('Failed to require \"' + orig + '\" from \"' + parent + '\"');\n    err.path = orig;\n    err.parent = parent;\n    err.require = true;\n    throw err;\n  }\n\n  var module = require.modules[resolved];\n\n  // perform real require()\n  // by invoking the module's\n  // registered function\n  if (!module.exports) {\n    module.exports = {};\n    module.client = module.component = true;\n    module.call(this, module.exports, require.relative(resolved), module);\n  }\n\n  return module.exports;\n}\n\n/**\n * Registered modules.\n */\n\nrequire.modules = {};\n\n/**\n * Registered aliases.\n */\n\nrequire.aliases = {};\n\n/**\n * Resolve `path`.\n *\n * Lookup:\n *\n *   - PATH/index.js\n *   - PATH.js\n *   - PATH\n *\n * @param {String} path\n * @return {String} path or null\n * @api private\n */\n\nrequire.resolve = function(path) {\n  var index = path + '/index.js';\n\n  var paths = [\n    path,\n    path + '.js',\n    path + '.json',\n    path + '/index.js',\n    path + '/index.json'\n  ];\n\n  for (var i = 0; i < paths.length; i++) {\n    var path = paths[i];\n    if (has.call(require.modules, path)) return path;\n  }\n\n  if (has.call(require.aliases, index)) {\n    return require.aliases[index];\n  }\n};\n\n/**\n * Normalize `path` relative to the current path.\n *\n * @param {String} curr\n * @param {String} path\n * @return {String}\n * @api private\n */\n\nrequire.normalize = function(curr, path) {\n  var segs = [];\n\n  if ('.' != path.charAt(0)) return path;\n\n  curr = curr.split('/');\n  path = path.split('/');\n\n  for (var i = 0; i < path.length; ++i) {\n    if ('..' == path[i]) {\n      curr.pop();\n    } else if ('.' != path[i] && '' != path[i]) {\n      segs.push(path[i]);\n    }\n  }\n\n  return curr.concat(segs).join('/');\n};\n\n/**\n * Register module at `path` with callback `definition`.\n *\n * @param {String} path\n * @param {Function} definition\n * @api private\n */\n\nrequire.register = function(path, definition) {\n  require.modules[path] = definition;\n};\n\n/**\n * Alias a module definition.\n *\n * @param {String} from\n * @param {String} to\n * @api private\n */\n\nrequire.alias = function(from, to) {\n  if (!has.call(require.modules, from)) {\n    throw new Error('Failed to alias \"' + from + '\", it does not exist');\n  }\n  require.aliases[to] = from;\n};\n\n/**\n * Return a require function relative to the `parent` path.\n *\n * @param {String} parent\n * @return {Function}\n * @api private\n */\n\nrequire.relative = function(parent) {\n  var p = require.normalize(parent, '..');\n\n  /**\n   * lastIndexOf helper.\n   */\n\n  function lastIndexOf(arr, obj) {\n    var i = arr.length;\n    while (i--) {\n      if (arr[i] === obj) return i;\n    }\n    return -1;\n  }\n\n  /**\n   * The relative require() itself.\n   */\n\n  function localRequire(path) {\n    var resolved = localRequire.resolve(path);\n    return require(resolved, parent, path);\n  }\n\n  /**\n   * Resolve relative to the parent.\n   */\n\n  localRequire.resolve = function(path) {\n    // resolve deps by returning\n    // the dep in the nearest \"deps\"\n    // directory\n    if ('.' != path.charAt(0)) {\n      var segs = parent.split('/');\n      var i = lastIndexOf(segs, 'deps') + 1;\n      if (!i) i = 0;\n      path = segs.slice(0, i + 1).join('/') + '/deps/' + path;\n      return path;\n    }\n    return require.normalize(p, path);\n  };\n\n  /**\n   * Check if module is defined at `path`.\n   */\n\n  localRequire.exists = function(path) {\n    return has.call(require.modules, localRequire.resolve(path));\n  };\n\n  return localRequire;\n};\nrequire.register(\"component-emitter/index.js\", function(exports, require, module){\n\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[event] = this._callbacks[event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  var self = this;\n  this._callbacks = this._callbacks || {};\n\n  function on() {\n    self.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  fn._off = on;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  var callbacks = this._callbacks[event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks[event];\n    return this;\n  }\n\n  // remove specific handler\n  var i = callbacks.indexOf(fn._off || fn);\n  if (~i) callbacks.splice(i, 1);\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks[event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\n});\nrequire.register(\"dropzone/index.js\", function(exports, require, module){\n\n\n/**\n * Exposing dropzone\n */\nmodule.exports = require(\"lib/dropzone.js\");\n\n});\nrequire.register(\"dropzone/lib/dropzone.js\", function(exports, require, module){\n// Generated by CoffeeScript 1.4.0\n\n/*\n#\n# More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n# \n# Copyright (c) 2012, Matias Meno  \n# \n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n# \n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n# \n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n*/\n\n\n(function() {\n  var Dropzone, Em, camelize, o, without,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    __slice = [].slice;\n\n  o = typeof jQuery !== \"undefined\" && jQuery !== null ? jQuery : require(\"jquery\");\n\n  Em = typeof Emitter !== \"undefined\" && Emitter !== null ? Emitter : require(\"emitter\");\n\n  Dropzone = (function(_super) {\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.version = \"1.3.10\";\n\n    /*\n      This is a list of all available events you can register on a dropzone object.\n    \n      You can register an event handler like this:\n    \n          dropzone.on(\"dragEnter\", function() { });\n    */\n\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"selectedfiles\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"processingfile\", \"uploadprogress\", \"sending\", \"success\", \"complete\", \"reset\"];\n\n    Dropzone.prototype.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      parallelUploads: 2,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 2,\n      thumbnailWidth: 100,\n      thumbnailHeight: 100,\n      params: {},\n      clickable: true,\n      enqueueForUpload: true,\n      previewsContainer: null,\n      accept: function(file, done) {\n        return done();\n      },\n      fallback: function() {\n        this.element.addClass(\"browser-not-supported\");\n        this.element.find(\".message\").removeClass(\"default\");\n        this.element.find(\".message span\").html(\"Your browser does not support drag'n'drop file uploads.\");\n        this.element.append(\"Please use the fallback form below to upload your files like in the olden days.</p>\");\n        return this.element.append(this.getFallbackForm());\n      },\n      /*\n          Those functions register themselves to the events on init and handle all\n          the user interface specific stuff. Overwriting them won't break the upload\n          but can break the way it's displayed.\n          You can overwrite them if you don't like the default behavior. If you just\n          want to add an additional event handler, register it on the dropzone object\n          and don't overwrite those options.\n      */\n\n      drop: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      dragstart: o.noop,\n      dragend: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.addClass(\"drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.addClass(\"drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      selectedfiles: function(files) {\n        if (this.element.is(this.previewsContainer)) {\n          return this.element.addClass(\"started\");\n        }\n      },\n      reset: function() {\n        return this.element.removeClass(\"started\");\n      },\n      addedfile: function(file) {\n        file.previewTemplate = o(this.options.previewTemplate);\n        this.previewsContainer.append(file.previewTemplate);\n        file.previewTemplate.find(\".filename span\").text(file.name);\n        return file.previewTemplate.find(\".details\").append(o(\"<div class=\\\"size\\\">\" + (this.filesize(file.size)) + \"</div>\"));\n      },\n      removedfile: function(file) {\n        return file.previewTemplate.remove();\n      },\n      thumbnail: function(file, dataUrl) {\n        file.previewTemplate.removeClass(\"file-preview\").addClass(\"image-preview\");\n        return file.previewTemplate.find(\".details\").append(o(\"<img alt=\\\"\" + file.name + \"\\\" src=\\\"\" + dataUrl + \"\\\"/>\"));\n      },\n      error: function(file, message) {\n        file.previewTemplate.addClass(\"error\");\n        return file.previewTemplate.find(\".error-message span\").text(message);\n      },\n      processingfile: function(file) {\n        return file.previewTemplate.addClass(\"processing\");\n      },\n      uploadprogress: function(file, progress) {\n        return file.previewTemplate.find(\".progress .upload\").css({\n          width: \"\" + progress + \"%\"\n        });\n      },\n      sending: o.noop,\n      success: function(file) {\n        return file.previewTemplate.addClass(\"success\");\n      },\n      complete: o.noop,\n      previewTemplate: \"<div class=\\\"preview file-preview\\\">\\n  <div class=\\\"details\\\">\\n   <div class=\\\"filename\\\"><span></span></div>\\n  </div>\\n  <div class=\\\"progress\\\"><span class=\\\"upload\\\"></span></div>\\n  <div class=\\\"success-mark\\\"><span>✔</span></div>\\n  <div class=\\\"error-mark\\\"><span>✘</span></div>\\n  <div class=\\\"error-message\\\"><span></span></div>\\n</div>\"\n    };\n\n    function Dropzone(element, options) {\n      var elementId, elementOptions, extend, _ref;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.element = o(element);\n      if (this.element.length !== 1) {\n        throw new Error(\"You can only instantiate dropzone on a single element.\");\n      }\n      if (this.element.data(\"dropzone\")) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      this.element.data(\"dropzone\", this);\n      elementId = this.element.attr(\"id\");\n      elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {};\n      this.elementTagName = this.element.get(0).tagName;\n      extend = function() {\n        var key, object, objects, target, val, _i, _len;\n        target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n        for (_i = 0, _len = objects.length; _i < _len; _i++) {\n          object = objects[_i];\n          for (key in object) {\n            val = object[key];\n            target[key] = val;\n          }\n        }\n        return target;\n      };\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.url == null) {\n        this.options.url = this.element.attr(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      this.previewsContainer = this.options.previewsContainer ? o(this.options.previewsContainer) : this.element;\n      this.init();\n    }\n\n    Dropzone.prototype.init = function() {\n      var capableBrowser, regex, _i, _len, _ref, _ref1,\n        _this = this;\n      if (this.elementTagName === \"form\" && this.element.attr(\"enctype\") !== \"multipart/form-data\") {\n        this.element.attr(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.hasClass(\"dropzone\") && this.element.find(\".message\").length === 0) {\n        this.element.append(o(\"<div class=\\\"default message\\\"><span>Drop files here to upload</span></div>\"));\n      }\n      capableBrowser = true;\n      if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData) {\n        _ref = this.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      } else {\n        capableBrowser = false;\n      }\n      if (!capableBrowser) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.clickable) {\n        this.element.addClass(\"clickable\");\n        this.hiddenFileInput = o(\"<input type=\\\"file\\\" multiple />\");\n        this.element.click(function(evt) {\n          var target;\n          target = o(evt.target);\n          if (target.is(_this.element) || target.is(_this.element.find(\".message\"))) {\n            return _this.hiddenFileInput.click();\n          }\n        });\n        this.hiddenFileInput.change(function() {\n          var files;\n          files = _this.hiddenFileInput.get(0).files;\n          _this.emit(\"selectedfiles\", files);\n          if (files.length) {\n            return _this.handleFiles(files);\n          }\n        });\n      }\n      this.files = [];\n      this.filesQueue = [];\n      this.filesProcessing = [];\n      this.URL = (_ref1 = window.URL) != null ? _ref1 : window.webkitURL;\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var fields;\n      fields = o(\"<div class=\\\"fallback-elements\\\"><input type=\\\"file\\\" name=\\\"\" + this.options.paramName + \"\\\" multiple=\\\"multiple\\\" /><button type=\\\"submit\\\">Upload!</button></div>\");\n      if (this.elementTagName !== \"FORM\") {\n        fields = o(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"post\\\"></form>\").append(fields);\n      } else {\n        if (!this.element.attr(\"enctype\")) {\n          this.element.attr(\"enctype\", \"multipart/form-data\");\n        }\n        if (!this.element.attr(\"method\")) {\n          this.element.attr(\"method\", \"post\");\n        }\n      }\n      return fields;\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var eventName, noPropagation, _i, _len, _ref,\n        _this = this;\n      _ref = this.events;\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        eventName = _ref[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      noPropagation = function(e) {\n        e.stopPropagation();\n        return e.preventDefault();\n      };\n      this.element.on(\"dragstart.dropzone\", function(e) {\n        return _this.emit(\"dragstart\", e);\n      });\n      this.element.on(\"dragenter.dropzone\", function(e) {\n        noPropagation(e);\n        return _this.emit(\"dragenter\", e);\n      });\n      this.element.on(\"dragover.dropzone\", function(e) {\n        noPropagation(e);\n        return _this.emit(\"dragover\", e);\n      });\n      this.element.on(\"dragleave.dropzone\", function(e) {\n        return _this.emit(\"dragleave\", e);\n      });\n      this.element.on(\"drop.dropzone\", function(e) {\n        noPropagation(e);\n        _this.drop(e);\n        return _this.emit(\"drop\", e);\n      });\n      return this.element.on(\"dragend.dropzone\", function(e) {\n        return _this.emit(\"dragend\", e);\n      });\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      return this.element.off(\".dropzone\");\n    };\n\n    Dropzone.prototype.disable = function() {\n      this.removeEventListeners();\n      this.files = [];\n      this.filesProcessing = [];\n      return this.filesQueue = [];\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var string;\n      if (size >= 100000000000) {\n        size = size / 100000000000;\n        string = \"TB\";\n      } else if (size >= 100000000) {\n        size = size / 100000000;\n        string = \"GB\";\n      } else if (size >= 100000) {\n        size = size / 100000;\n        string = \"MB\";\n      } else if (size >= 100) {\n        size = size / 100;\n        string = \"KB\";\n      } else {\n        size = size * 10;\n        string = \"b\";\n      }\n      return \"<strong>\" + (Math.round(size) / 10) + \"</strong> \" + string;\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files;\n      if (!e.originalEvent.dataTransfer) {\n        return;\n      }\n      files = e.originalEvent.dataTransfer.files;\n      this.emit(\"selectedfiles\", files);\n      if (files.length) {\n        return this.handleFiles(files);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(\"File is too big (\" + (Math.round(file.size / 1024 / 10.24) / 100) + \"MB). Max filesize: \" + this.options.maxFilesize + \"MB\");\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      var _this = this;\n      this.files.push(file);\n      this.emit(\"addedfile\", file);\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this.createThumbnail(file);\n      }\n      return this.accept(file, function(error) {\n        if (error) {\n          return _this.errorProcessing(file, error);\n        } else {\n          if (_this.options.enqueueForUpload) {\n            _this.filesQueue.push(file);\n            return _this.processQueue();\n          }\n        }\n      });\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.processing) {\n        throw new Error(\"Can't remove file currently processing\");\n      }\n      this.files = without(this.files, file);\n      this.filesQueue = without(this.filesQueue, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.createThumbnail = function(file) {\n      var fileReader,\n        _this = this;\n      fileReader = new FileReader;\n      fileReader.onload = function() {\n        var img;\n        img = new Image;\n        img.onload = function() {\n          var canvas, ctx, srcHeight, srcRatio, srcWidth, srcX, srcY, thumbnail, trgHeight, trgRatio, trgWidth, trgX, trgY;\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          srcX = 0;\n          srcY = 0;\n          srcWidth = img.width;\n          srcHeight = img.height;\n          canvas.width = _this.options.thumbnailWidth;\n          canvas.height = _this.options.thumbnailHeight;\n          trgX = 0;\n          trgY = 0;\n          trgWidth = canvas.width;\n          trgHeight = canvas.height;\n          srcRatio = img.width / img.height;\n          trgRatio = canvas.width / canvas.height;\n          if (img.height < canvas.height || img.width < canvas.width) {\n            trgHeight = srcHeight;\n            trgWidth = srcWidth;\n          } else {\n            if (srcRatio > trgRatio) {\n              srcHeight = img.height;\n              srcWidth = srcHeight * trgRatio;\n            } else {\n              srcWidth = img.width;\n              srcHeight = srcWidth / trgRatio;\n            }\n          }\n          srcX = (img.width - srcWidth) / 2;\n          srcY = (img.height - srcHeight) / 2;\n          trgY = (canvas.height - trgHeight) / 2;\n          trgX = (canvas.width - trgWidth) / 2;\n          ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, trgX, trgY, trgWidth, trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          return _this.emit(\"thumbnail\", file, thumbnail);\n        };\n        return img.src = fileReader.result;\n      };\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.filesProcessing.length;\n      i = processingLength;\n      while (i < parallelUploads) {\n        if (!this.filesQueue.length) {\n          return;\n        }\n        this.processFile(this.filesQueue.shift());\n        i++;\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      this.filesProcessing.push(file);\n      file.processing = true;\n      this.emit(\"processingfile\", file);\n      return this.uploadFile(file);\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      var formData, handleError, input, inputElement, inputName, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2,\n        _this = this;\n      xhr = new XMLHttpRequest();\n      xhr.open(\"POST\", this.options.url, true);\n      handleError = function() {\n        return _this.errorProcessing(file, xhr.responseText || (\"Server responded with \" + xhr.status + \" code.\"));\n      };\n      xhr.onload = function(e) {\n        var response;\n        if (xhr.status !== 200) {\n          return handleError();\n        } else {\n          _this.emit(\"uploadprogress\", file, 100);\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            response = JSON.parse(response);\n          }\n          return _this.finished(file, response, e);\n        }\n      };\n      xhr.onerror = function() {\n        return handleError();\n      };\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = function(e) {\n        return _this.emit(\"uploadprogress\", file, Math.max(0, Math.min(100, (e.loaded / e.total) * 100)));\n      };\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n      xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n      xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      xhr.setRequestHeader(\"X-File-Name\", file.name);\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      if (this.elementTagName = \"FORM\") {\n        _ref2 = this.element.find(\"input, textarea, select, button\");\n        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\n          inputElement = _ref2[_i];\n          input = o(inputElement);\n          inputName = input.attr(\"name\");\n          if (!input.attr(\"type\") || input.attr(\"type\").toLowerCase() !== \"checkbox\" || inputElement.checked) {\n            formData.append(input.attr(\"name\"), input.val());\n          }\n        }\n      }\n      this.emit(\"sending\", file, xhr, formData);\n      formData.append(this.options.paramName, file);\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype.finished = function(file, responseText, e) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"finished\", file, responseText, e);\n      return this.emit(\"complete\", file);\n    };\n\n    Dropzone.prototype.errorProcessing = function(file, message) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"error\", file, message);\n      return this.emit(\"complete\", file);\n    };\n\n    return Dropzone;\n\n  })(Em);\n\n  Dropzone.options = {};\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match[1].toUpperCase();\n    });\n  };\n\n  o.fn.dropzone = function(options) {\n    return this.each(function() {\n      return new Dropzone(this, options);\n    });\n  };\n\n  o(function() {\n    return o(\".dropzone\").dropzone();\n  });\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n}).call(this);\n\n});\nrequire.alias(\"component-emitter/index.js\", \"dropzone/deps/emitter/index.js\");\n\nif (typeof exports == \"object\") {\n  module.exports = require(\"dropzone\");\n} else if (typeof define == \"function\" && define.amd) {\n  define(require(\"dropzone\"));\n} else {\n  window[\"Dropzone\"] = require(\"dropzone\");\n}})();"
  },
  {
    "path": "src/main/webapp/assets/dropzone/index.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/dropzone/lib/dropzone.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/fancybox/source/jquery.fancybox.css",
    "content": "/*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */\n.fancybox-wrap,\n.fancybox-skin,\n.fancybox-outer,\n.fancybox-inner,\n.fancybox-image,\n.fancybox-wrap iframe,\n.fancybox-wrap object,\n.fancybox-nav,\n.fancybox-nav span,\n.fancybox-tmp\n{\n\tpadding: 0;\n\tmargin: 0;\n\tborder: 0;\n\toutline: none;\n\tvertical-align: top;\n}\n\n.fancybox-wrap {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 8020;\n}\n\n.fancybox-skin {\n\tposition: relative;\n\tbackground: #f9f9f9;\n\tcolor: #444;\n\ttext-shadow: none;\n\t-webkit-border-radius: 4px;\n\t   -moz-border-radius: 4px;\n\t        border-radius: 4px;\n}\n\n.fancybox-opened {\n\tz-index: 8030;\n}\n\n.fancybox-opened .fancybox-skin {\n\t-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n\t   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n\t        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n}\n\n.fancybox-outer, .fancybox-inner {\n\tposition: relative;\n}\n\n.fancybox-inner {\n\toverflow: hidden;\n}\n\n.fancybox-type-iframe .fancybox-inner {\n\t-webkit-overflow-scrolling: touch;\n}\n\n.fancybox-error {\n\tcolor: #444;\n\tfont: 14px/20px \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n\tmargin: 0;\n\tpadding: 15px;\n\twhite-space: nowrap;\n}\n\n.fancybox-image, .fancybox-iframe {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.fancybox-image {\n\tmax-width: 100%;\n\tmax-height: 100%;\n}\n\n#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {\n\tbackground-image: url('fancybox_sprite.png');\n}\n\n#fancybox-loading {\n\tposition: fixed;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -22px;\n\tmargin-left: -22px;\n\tbackground-position: 0 -108px;\n\topacity: 0.8;\n\tcursor: pointer;\n\tz-index: 8060;\n}\n\n#fancybox-loading div {\n\twidth: 44px;\n\theight: 44px;\n\tbackground: url('fancybox_loading.gif') center center no-repeat;\n}\n\n.fancybox-close {\n\tposition: absolute;\n\ttop: -18px;\n\tright: -18px;\n\twidth: 36px;\n\theight: 36px;\n\tcursor: pointer;\n\tz-index: 8040;\n}\n\n.fancybox-nav {\n\tposition: absolute;\n\ttop: 0;\n\twidth: 40%;\n\theight: 100%;\n\tcursor: pointer;\n\ttext-decoration: none;\n\tbackground: transparent url('blank.gif'); /* helps IE */\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\tz-index: 8040;\n}\n\n.fancybox-prev {\n\tleft: 0;\n}\n\n.fancybox-next {\n\tright: 0;\n}\n\n.fancybox-nav span {\n\tposition: absolute;\n\ttop: 50%;\n\twidth: 36px;\n\theight: 34px;\n\tmargin-top: -18px;\n\tcursor: pointer;\n\tz-index: 8040;\n\tvisibility: hidden;\n}\n\n.fancybox-prev span {\n\tleft: 10px;\n\tbackground-position: 0 -36px;\n}\n\n.fancybox-next span {\n\tright: 10px;\n\tbackground-position: 0 -72px;\n}\n\n.fancybox-nav:hover span {\n\tvisibility: visible;\n}\n\n.fancybox-tmp {\n\tposition: absolute;\n\ttop: -99999px;\n\tleft: -99999px;\n\tvisibility: hidden;\n\tmax-width: 99999px;\n\tmax-height: 99999px;\n\toverflow: visible !important;\n}\n\n/* Overlay helper */\n\n.fancybox-lock {\n\toverflow: hidden;\n}\n\n.fancybox-overlay {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\toverflow: hidden;\n\tdisplay: none;\n\tz-index: 8010;\n\tbackground: url('fancybox_overlay.png');\n}\n\n.fancybox-overlay-fixed {\n\tposition: fixed;\n\tbottom: 0;\n\tright: 0;\n}\n\n.fancybox-lock .fancybox-overlay {\n\toverflow: auto;\n\toverflow-y: scroll;\n}\n\n/* Title helper */\n\n.fancybox-title {\n\tvisibility: hidden;\n\tfont: normal 13px/20px \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n\tposition: relative;\n\ttext-shadow: none;\n\tz-index: 8050;\n}\n\n.fancybox-opened .fancybox-title {\n\tvisibility: visible;\n}\n\n.fancybox-title-float-wrap {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 50%;\n\tmargin-bottom: -35px;\n\tz-index: 8050;\n\ttext-align: center;\n}\n\n.fancybox-title-float-wrap .child {\n\tdisplay: inline-block;\n\tmargin-right: -100%;\n\tpadding: 2px 20px;\n\tbackground: transparent; /* Fallback for web browsers that doesn't support RGBa */\n\tbackground: rgba(0, 0, 0, 0.8);\n\t-webkit-border-radius: 15px;\n\t   -moz-border-radius: 15px;\n\t        border-radius: 15px;\n\ttext-shadow: 0 1px 2px #222;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tline-height: 24px;\n\twhite-space: nowrap;\n}\n\n.fancybox-title-outside-wrap {\n\tposition: relative;\n\tmargin-top: 10px;\n\tcolor: #fff;\n}\n\n.fancybox-title-inside-wrap {\n\tpadding-top: 10px;\n}\n\n.fancybox-title-over-wrap {\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\tcolor: #fff;\n\tpadding: 10px;\n\tbackground: #000;\n\tbackground: rgba(0, 0, 0, .8);\n}"
  },
  {
    "path": "src/main/webapp/assets/fancybox/source/jquery.fancybox.pack.js",
    "content": "/*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */\n(function(B,x,f,q){var r=f(B),m=f(x),b=f.fancybox=function(){b.open.apply(this,arguments)},u=null,n=x.createTouch!==q,s=function(a){return a&&a.hasOwnProperty&&a instanceof f},p=function(a){return a&&\"string\"===f.type(a)},E=function(a){return p(a)&&0<a.indexOf(\"%\")},k=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},v=function(a,b){return k(a,b)+\"px\"};f.extend(b,{version:\"2.1.3\",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,\nmaxWidth:9999,maxHeight:9999,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!n,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:\"auto\",wrapCSS:\"\",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:\"html\",headers:{\"X-fancyBox\":!0}},iframe:{scrolling:\"auto\",preload:!0},swf:{wmode:\"transparent\",allowfullscreen:\"true\",allowscriptaccess:\"always\"},keys:{next:{13:\"left\",34:\"up\",39:\"left\",40:\"up\"},\nprev:{8:\"right\",33:\"down\",37:\"right\",38:\"down\"},close:[27],play:[32],toggle:[70]},direction:{next:\"left\",prev:\"right\"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class=\"fancybox-wrap\" tabIndex=\"-1\"><div class=\"fancybox-skin\"><div class=\"fancybox-outer\"><div class=\"fancybox-inner\"></div></div></div></div>',image:'<img class=\"fancybox-image\" src=\"{href}\" alt=\"\" />',iframe:'<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+\n(f.browser.msie?' allowtransparency=\"true\"':\"\")+\"></iframe>\",error:'<p class=\"fancybox-error\">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title=\"Close\" class=\"fancybox-item fancybox-close\" href=\"javascript:;\"></a>',next:'<a title=\"Next\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"><span></span></a>',prev:'<a title=\"Previous\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"><span></span></a>'},openEffect:\"fade\",openSpeed:250,openEasing:\"swing\",\nopenOpacity:!0,openMethod:\"zoomIn\",closeEffect:\"fade\",closeSpeed:250,closeEasing:\"swing\",closeOpacity:!0,closeMethod:\"zoomOut\",nextEffect:\"elastic\",nextSpeed:250,nextEasing:\"swing\",nextMethod:\"changeIn\",prevEffect:\"elastic\",prevSpeed:250,prevEasing:\"swing\",prevMethod:\"changeOut\",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,\nisActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=s(a)?f(a).get():[a]),f.each(a,function(e,c){var j={},g,h,i,l,k;\"object\"===f.type(c)&&(c.nodeType&&(c=f(c)),s(c)?(j={href:c.data(\"fancybox-href\")||c.attr(\"href\"),title:c.data(\"fancybox-title\")||c.attr(\"title\"),isDom:!0,element:c},f.metadata&&f.extend(!0,\nj,c.metadata())):j=c);g=d.href||j.href||(p(c)?c:null);h=d.title!==q?d.title:j.title||\"\";l=(i=d.content||j.content)?\"html\":d.type||j.type;!l&&j.isDom&&(l=c.data(\"fancybox-type\"),l||(l=(l=c.prop(\"class\").match(/fancybox\\.(\\w+)/))?l[1]:null));p(g)&&(l||(b.isImage(g)?l=\"image\":b.isSWF(g)?l=\"swf\":\"#\"===g.charAt(0)?l=\"inline\":p(c)&&(l=\"html\",i=c)),\"ajax\"===l&&(k=g.split(/\\s+/,2),g=k.shift(),k=k.shift()));i||(\"inline\"===l?g?i=f(p(g)?g.replace(/.*(?=#[^\\s]+$)/,\"\"):g):j.isDom&&(i=c):\"html\"===l?i=g:!l&&(!g&&\nj.isDom)&&(l=\"inline\",i=c));f.extend(j,{href:g,type:l,content:i,title:h,selector:k});a[e]=j}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==q&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger(\"onCancel\")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger(\"onReset\").remove(),b.coming=null,b.current||\nb._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger(\"beforeClose\")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(\".fancybox-wrap\").stop(!0).trigger(\"onReset\").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(\".fancybox-item, .fancybox-nav\").remove(),b.wrap.stop(!0,!0).removeClass(\"fancybox-opened\"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=\nsetTimeout(b.next,b.current.playSpeed))},c=function(){d();f(\"body\").unbind(\".player\");b.player.isActive=!1;b.trigger(\"onPlayEnd\")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,f(\"body\").bind({\"afterShow.player onUpdate.player\":e,\"onCancel.player beforeClose.player\":c,\"beforeLoad.player\":d}),e(),b.trigger(\"onPlayStart\")}else c()},next:function(a){var d=b.current;d&&(p(a)||(a=d.direction.next),b.jumpto(d.index+1,a,\"next\"))},\nprev:function(a){var d=b.current;d&&(p(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,\"prev\"))},jumpto:function(a,d,e){var c=b.current;c&&(a=k(a),b.direction=d||c.direction[a>=c.index?\"next\":\"prev\"],b.router=e||\"jumpto\",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==q&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,j;c&&(j=b._getPosition(d),a&&\"scroll\"===a.type?(delete j.position,c.stop(!0,!0).animate(j,200)):(c.css(j),e.pos=f.extend({},\ne.dim,j)))},update:function(a){var d=a&&a.type,e=!d||\"orientationchange\"===d;e&&(clearTimeout(u),u=null);b.isOpen&&!u&&(u=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass(\"fancybox-tmp\"),(e||\"load\"===d||\"resize\"===d&&c.autoResize)&&b._setDimension(),\"scroll\"===d&&c.canShrink||b.reposition(a),b.trigger(\"onUpdate\"),u=null)},e&&!n?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView=\"boolean\"===f.type(a)?a:!b.current.fitToView,n&&(b.wrap.removeAttr(\"style\").addClass(\"fancybox-tmp\"),\nb.trigger(\"onUpdate\")),b.update())},hideLoading:function(){m.unbind(\".loading\");f(\"#fancybox-loading\").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id=\"fancybox-loading\"><div></div></div>').click(b.cancel).appendTo(\"body\");m.bind(\"keydown.loading\",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:\"absolute\",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||\n!1,d={x:r.scrollLeft(),y:r.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=n&&B.innerWidth?B.innerWidth:r.width(),d.h=n&&B.innerHeight?B.innerHeight:r.height());return d},unbindEvents:function(){b.wrap&&s(b.wrap)&&b.wrap.unbind(\".fb\");m.unbind(\".fb\");r.unbind(\".fb\")},bindEvents:function(){var a=b.current,d;a&&(r.bind(\"orientationchange.fb\"+(n?\"\":\" resize.fb\")+(a.autoCenter&&!a.locked?\" scroll.fb\":\"\"),b.update),(d=a.keys)&&m.bind(\"keydown.fb\",function(e){var c=e.which||e.keyCode,j=\ne.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!j||!j.type&&!f(j).is(\"[contenteditable]\")))&&f.each(d,function(d,j){if(1<a.group.length&&j[c]!==q)return b[d](j[c]),e.preventDefault(),!1;if(-1<f.inArray(c,j))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind(\"mousewheel.fb\",function(d,c,j,g){for(var h=f(d.target||null),i=!1;h.length&&!i&&!h.is(\".fancybox-skin\")&&!h.is(\".fancybox-wrap\");)i=h[0]&&!(h[0].style.overflow&&\n\"hidden\"===h[0].style.overflow)&&(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!i&&1<b.group.length&&!a.canShrink){if(0<g||0<j)b.prev(0<g?\"down\":\"left\");else if(0>g||0>j)b.next(0>g?\"up\":\"right\");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,\ne){e&&(b.helpers[d]&&f.isFunction(b.helpers[d][a]))&&(e=f.extend(!0,{},b.helpers[d].defaults,e),b.helpers[d][a](e,c))});f.event.trigger(a+\".fb\")}},isImage:function(a){return p(a)&&a.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp)((\\?|#).*)?$)/i)},isSWF:function(a){return p(a)&&a.match(/\\.(swf)((\\?|#).*)?$/i)},_start:function(a){var d={},e,c,a=k(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;\"number\"===f.type(e)&&(d.margin=[e,e,e,e]);\"number\"===f.type(c)&&\n(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);\"auto\"===d.width&&(d.autoWidth=!0);\"auto\"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger(\"beforeLoad\"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&\"jumpto\"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=\n!0;if(\"image\"===c||\"swf\"===c)d.autoHeight=d.autoWidth=!1,d.scrolling=\"visible\";\"image\"===c&&(d.aspectRatio=!0);\"iframe\"===c&&n&&(d.scrolling=\"scroll\");d.wrap=f(d.tpl.wrap).addClass(\"fancybox-\"+(n?\"mobile\":\"desktop\")+\" fancybox-type-\"+c+\" fancybox-tmp \"+d.wrapCSS).appendTo(d.parent||\"body\");f.extend(d,{skin:f(\".fancybox-skin\",d.wrap),outer:f(\".fancybox-outer\",d.wrap),inner:f(\".fancybox-inner\",d.wrap)});f.each([\"Top\",\"Right\",\"Bottom\",\"Left\"],function(a,b){d.skin.css(\"padding\"+b,v(d.padding[a]))});b.trigger(\"onReady\");\nif(\"inline\"===c||\"html\"===c){if(!d.content||!d.content.length)return b._error(\"content\")}else if(!e)return b._error(\"href\");\"image\"===c?b._loadImage():\"ajax\"===c?b._loadAjax():\"iframe\"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:\"html\",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:\"no\",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=\nthis.width;b.coming.height=this.height;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error(\"image\")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&\"abort\"!==e?b._error(\"ajax\",a):b.hideLoading()},success:function(d,e){\"success\"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\\{rnd\\}/g,\n(new Date).getTime())).attr(\"scrolling\",n?\"auto\":a.iframe.scrolling).attr(\"src\",a.href);f(a.wrap).bind(\"onReset\",function(){try{f(this).find(\"iframe\").hide().attr(\"src\",\"//about:blank\").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one(\"load\",function(){f(this).data(\"ready\",1);n||f(this).bind(\"load.fb\",b.update);f(this).parents(\".fancybox-wrap\").width(\"100%\").removeClass(\"fancybox-tmp\").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=\nb.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],\"image\"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,j,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger(\"afterLoad\",a,d))a.wrap.stop(!0).trigger(\"onReset\").remove(),b.coming=null;else{d&&(b.trigger(\"beforeChange\",d),d.wrap.stop(!0).removeClass(\"fancybox-opened\").find(\".fancybox-item, .fancybox-nav\").remove());b.unbindEvents();\ne=a.content;c=a.type;j=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case \"inline\":case \"ajax\":case \"html\":a.selector?e=f(\"<div>\").html(e).find(a.selector):s(e)&&(e.data(\"fancybox-placeholder\")||e.data(\"fancybox-placeholder\",f('<div class=\"fancybox-placeholder\"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind(\"onReset\",function(){f(this).find(e).length&&e.hide().replaceAll(e.data(\"fancybox-placeholder\")).data(\"fancybox-placeholder\",\n!1)}));break;case \"image\":e=a.tpl.image.replace(\"{href}\",g);break;case \"swf\":e='<object id=\"fancybox-swf\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"100%\" height=\"100%\"><param name=\"movie\" value=\"'+g+'\"></param>',h=\"\",f.each(a.swf,function(a,b){e+='<param name=\"'+a+'\" value=\"'+b+'\"></param>';h+=\" \"+a+'=\"'+b+'\"'}),e+='<embed src=\"'+g+'\" type=\"application/x-shockwave-flash\" width=\"100%\" height=\"100%\"'+h+\"></embed></object>\"}(!s(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger(\"beforeShow\");\na.inner.css(\"overflow\",\"yes\"===j?\"scroll\":\"no\"===j?\"hidden\":j);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(\".fancybox-wrap\").not(a.wrap).stop(!0).trigger(\"onReset\").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,j=b.skin,g=b.inner,h=b.current,c=h.width,i=h.height,l=h.minWidth,t=h.minHeight,m=h.maxWidth,\nn=h.maxHeight,r=h.scrolling,p=h.scrollOutside?h.scrollbarWidth:0,w=h.margin,y=k(w[1]+w[3]),q=k(w[0]+w[2]),x,z,s,C,A,F,B,D,u;e.add(j).add(g).width(\"auto\").height(\"auto\").removeClass(\"fancybox-tmp\");w=k(j.outerWidth(!0)-j.width());x=k(j.outerHeight(!0)-j.height());z=y+w;s=q+x;C=E(c)?(a.w-z)*k(c)/100:c;A=E(i)?(a.h-s)*k(i)/100:i;if(\"iframe\"===h.type){if(u=h.content,h.autoHeight&&1===u.data(\"ready\"))try{u[0].contentWindow.document.location&&(g.width(C).height(9999),F=u.contents().find(\"body\"),p&&F.css(\"overflow-x\",\n\"hidden\"),A=F.height())}catch(G){}}else if(h.autoWidth||h.autoHeight)g.addClass(\"fancybox-tmp\"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass(\"fancybox-tmp\");c=k(C);i=k(A);D=C/A;l=k(E(l)?k(l,\"w\")-z:l);m=k(E(m)?k(m,\"w\")-z:m);t=k(E(t)?k(t,\"h\")-s:t);n=k(E(n)?k(n,\"h\")-s:n);F=m;B=n;h.fitToView&&(m=Math.min(a.w-z,m),n=Math.min(a.h-s,n));z=a.w-y;q=a.h-q;h.aspectRatio?(c>m&&(c=m,i=k(c/D)),i>n&&(i=n,c=k(i*D)),c<l&&(c=l,i=k(c/D)),i<t&&\n(i=t,c=k(i*D))):(c=Math.max(l,Math.min(c,m)),h.autoHeight&&\"iframe\"!==h.type&&(g.width(c),i=g.height()),i=Math.max(t,Math.min(i,n)));if(h.fitToView)if(g.width(c).height(i),e.width(c+w),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>q)&&(c>l&&i>t)&&!(19<d++);)i=Math.max(t,Math.min(n,i-10)),c=k(i*D),c<l&&(c=l,i=k(c/D)),c>m&&(c=m,i=k(c/D)),g.width(c).height(i),e.width(c+w),a=e.width(),y=e.height();else c=Math.max(l,Math.min(c,c-(a-z))),i=Math.max(t,Math.min(i,i-(y-q)));p&&(\"auto\"===r&&i<A&&c+w+\np<z)&&(c+=p);g.width(c).height(i);e.width(c+w);a=e.width();y=e.height();e=(a>z||y>q)&&c>l&&i>t;c=h.aspectRatio?c<F&&i<B&&c<C&&i<A:(c<F||i<B)&&(c<C||i<A);f.extend(h,{dim:{width:v(a),height:v(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:w,hPadding:x,wrapSpace:y-j.outerHeight(!0),skinSpace:j.height()-i});!u&&(h.autoHeight&&i>t&&i<n&&!c)&&g.height(\"auto\")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:\"absolute\",\ntop:c[0],left:c[3]};d.autoCenter&&d.fixed&&!a&&g<=e.h&&f<=e.w?c.position=\"fixed\":d.locked||(c.top+=e.y,c.left+=e.x);c.top=v(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=v(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css(\"overflow\",\"visible\").addClass(\"fancybox-opened\"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css(\"cursor\",\"pointer\").bind(\"click.fb\",function(d){!f(d.target).is(\"a\")&&!f(d.target).parent().is(\"a\")&&\n(d.preventDefault(),b[a.closeClick?\"close\":\"next\"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind(n?\"touchstart.fb\":\"click.fb\",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind(\"click.fb\",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind(\"click.fb\",b.next)),b.trigger(\"afterShow\"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=\n!1,b.play()))},_afterZoomOut:function(a){a=a||b.current;f(\".fancybox-wrap\").trigger(\"onReset\").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger(\"afterClose\",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,i=a.wPadding,l=b.getViewport();!e&&(a.isDom&&d.is(\":visible\"))&&(e=d.find(\"img:first\"),e.length||(e=d));s(e)?(c=e.offset(),\ne.is(\"img\")&&(f=e.outerWidth(),g=e.outerHeight())):(c.top=l.y+(l.h-g)*a.topRatio,c.left=l.x+(l.w-f)*a.leftRatio);if(\"fixed\"===b.wrap.css(\"position\")||a.locked)c.top-=l.y,c.left-=l.x;return c={top:v(c.top-h*a.topRatio),left:v(c.left-i*a.leftRatio),width:v(f+i),height:v(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if(\"width\"===f||\"height\"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c=\"width\"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](k(\"width\"===\nf?c:c-g*e)),b.inner[f](k(\"width\"===f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c=\"elastic\"===e,j=f.extend({opacity:1},d);delete j.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):\"fade\"===e&&(d.opacity=0.1);b.wrap.css(d).animate(j,{duration:\"none\"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e=\"elastic\"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&\n(c.opacity=0.1));b.wrap.animate(c,{duration:\"none\"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;\"elastic\"===d&&(g=\"down\"===f||\"up\"===f?\"top\":\"left\",\"down\"===f||\"right\"===f?(e[g]=v(k(e[g])-200),c[g]=\"+=200px\"):(e[g]=v(k(e[g])+200),c[g]=\"-=200px\"));\"none\"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:function(){setTimeout(b._afterZoomIn,\n20)}})},changeOut:function(){var a=b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;\"elastic\"===d&&(e[\"down\"===c||\"up\"===c?\"top\":\"left\"]=(\"up\"===c||\"left\"===c?\"-\":\"+\")+\"=200px\");a.wrap.animate(e,{duration:\"none\"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger(\"onReset\").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!n,fixed:!0},overlay:null,fixed:!1,create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();\nthis.overlay=f('<div class=\"fancybox-overlay\"></div>').appendTo(\"body\");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass(\"fancybox-overlay-fixed\"),this.fixed=!0)},open:function(a){var d=this,a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(\".overlay\").width(\"auto\").height(\"auto\"):this.create(a);this.fixed||(r.bind(\"resize.overlay\",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind(\"click.overlay\",function(a){f(a.target).hasClass(\"fancybox-overlay\")&&\n(b.isActive?b.close():d.close())});this.overlay.css(a.css).show()},close:function(){f(\".fancybox-overlay\").remove();r.unbind(\"resize.overlay\");this.overlay=null;!1!==this.margin&&(f(\"body\").css(\"margin-right\",this.margin),this.margin=!1);this.el&&this.el.removeClass(\"fancybox-lock\")},update:function(){var a=\"100%\",b;this.overlay.width(a).height(\"100%\");f.browser.msie?(b=Math.max(x.documentElement.offsetWidth,x.body.offsetWidth),m.width()>b&&(a=m.width())):m.width()>r.width()&&(a=m.width());this.overlay.width(a).height(m.height())},\nonReady:function(a,b){f(\".fancybox-overlay\").stop(!0,!0);this.overlay||(this.margin=m.height()>r.height()||\"scroll\"===f(\"body\").css(\"overflow-y\")?f(\"body\").css(\"margin-right\"):!1,this.el=x.all&&!x.querySelector?f(\"html\"):f(\"body\"),this.create(a));a.locked&&this.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&(this.el.addClass(\"fancybox-lock\"),!1!==this.margin&&f(\"body\").css(\"margin-right\",k(this.margin)+\nb.scrollbarWidth));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.isActive&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:\"float\",position:\"bottom\"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(p(e)&&\"\"!==f.trim(e)){d=f('<div class=\"fancybox-title fancybox-title-'+c+'-wrap\">'+e+\"</div>\");switch(c){case \"inside\":c=b.skin;break;case \"outside\":c=\nb.wrap;break;case \"over\":c=b.inner;break;default:c=b.skin,d.appendTo(\"body\"),f.browser.msie&&d.width(d.width()),d.wrapInner('<span class=\"child\"></span>'),b.current.margin[2]+=Math.abs(k(d.css(\"margin-bottom\")))}d[\"top\"===a.position?\"prependTo\":\"appendTo\"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||\"\",j=function(g){var h=f(this).blur(),i=d,j,k;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(\".fancybox-wrap\")&&(j=a.groupAttr||\"data-fancybox-group\",k=h.attr(j),k||(j=\"rel\",\nk=h.get(0)[j]),k&&(\"\"!==k&&\"nofollow\"!==k)&&(h=c.length?f(c):e,h=h.filter(\"[\"+j+'=\"'+k+'\"]'),i=h.index(this)),a.index=i,!1!==b.open(h,a)&&g.preventDefault())},a=a||{};d=a.index||0;!c||!1===a.live?e.unbind(\"click.fb-start\").bind(\"click.fb-start\",j):m.undelegate(c,\"click.fb-start\").delegate(c+\":not('.fancybox-item, .fancybox-nav')\",\"click.fb-start\",j);this.filter(\"[data-fancybox-start=1]\").trigger(\"click\");return this};m.ready(function(){f.scrollbarWidth===q&&(f.scrollbarWidth=function(){var a=f('<div style=\"width:50px;height:50px;overflow:auto\"><div/></div>').appendTo(\"body\"),\nb=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===q){var a=f.support,d=f('<div style=\"position:fixed;top:20px;\"></div>').appendTo(\"body\"),e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f(\"body\")})})})(window,document,jQuery);"
  },
  {
    "path": "src/main/webapp/assets/flot/jquery.flot.crosshair.js",
    "content": "/*\nFlot plugin for showing crosshairs, thin lines, when the mouse hovers\nover the plot.\n\n  crosshair: {\n    mode: null or \"x\" or \"y\" or \"xy\"\n    color: color\n    lineWidth: number\n  }\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a\nvertical crosshair that lets you trace the values on the x axis, \"y\"\nenables a horizontal crosshair and \"xy\" enables them both. \"color\" is\nthe color of the crosshair (default is \"rgba(170, 0, 0, 0.80)\"),\n\"lineWidth\" is the width of the drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n  - setCrosshair(pos)\n\n    Set the position of the crosshair. Note that this is cleared if\n    the user moves the mouse. \"pos\" is in coordinates of the plot and\n    should be on the form { x: xpos, y: ypos } (you can use x2/x3/...\n    if you're using multiple axes), which is coincidentally the same\n    format as what you get from a \"plothover\" event. If \"pos\" is null,\n    the crosshair is cleared.\n\n  - clearCrosshair()\n\n    Clear the crosshair.\n\n  - lockCrosshair(pos)\n\n    Cause the crosshair to lock to the current location, no longer\n    updating if the user moves the mouse. Optionally supply a position\n    (passed on to setCrosshair()) to move it to.\n\n    Example usage:\n      var myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n      $(\"#graph\").bind(\"plothover\", function (evt, position, item) {\n        if (item) {\n          // Lock the crosshair to the data point being hovered\n          myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] });\n        }\n        else {\n          // Return normal crosshair operation\n          myFlot.unlockCrosshair();\n        }\n      });\n\n  - unlockCrosshair()\n\n    Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n    var options = {\n        crosshair: {\n            mode: null, // one of null, \"x\", \"y\" or \"xy\",\n            color: \"rgba(170, 0, 0, 0.80)\",\n            lineWidth: 1\n        }\n    };\n    \n    function init(plot) {\n        // position of crosshair in pixels\n        var crosshair = { x: -1, y: -1, locked: false };\n\n        plot.setCrosshair = function setCrosshair(pos) {\n            if (!pos)\n                crosshair.x = -1;\n            else {\n                var o = plot.p2c(pos);\n                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n            }\n            \n            plot.triggerRedrawOverlay();\n        };\n        \n        plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n        \n        plot.lockCrosshair = function lockCrosshair(pos) {\n            if (pos)\n                plot.setCrosshair(pos);\n            crosshair.locked = true;\n        }\n\n        plot.unlockCrosshair = function unlockCrosshair() {\n            crosshair.locked = false;\n        }\n\n        function onMouseOut(e) {\n            if (crosshair.locked)\n                return;\n\n            if (crosshair.x != -1) {\n                crosshair.x = -1;\n                plot.triggerRedrawOverlay();\n            }\n        }\n\n        function onMouseMove(e) {\n            if (crosshair.locked)\n                return;\n                \n            if (plot.getSelection && plot.getSelection()) {\n                crosshair.x = -1; // hide the crosshair while selecting\n                return;\n            }\n                \n            var offset = plot.offset();\n            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n            plot.triggerRedrawOverlay();\n        }\n        \n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n            if (!plot.getOptions().crosshair.mode)\n                return;\n\n            eventHolder.mouseout(onMouseOut);\n            eventHolder.mousemove(onMouseMove);\n        });\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            var c = plot.getOptions().crosshair;\n            if (!c.mode)\n                return;\n\n            var plotOffset = plot.getPlotOffset();\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            if (crosshair.x != -1) {\n                ctx.strokeStyle = c.color;\n                ctx.lineWidth = c.lineWidth;\n                ctx.lineJoin = \"round\";\n\n                ctx.beginPath();\n                if (c.mode.indexOf(\"x\") != -1) {\n                    ctx.moveTo(crosshair.x, 0);\n                    ctx.lineTo(crosshair.x, plot.height());\n                }\n                if (c.mode.indexOf(\"y\") != -1) {\n                    ctx.moveTo(0, crosshair.y);\n                    ctx.lineTo(plot.width(), crosshair.y);\n                }\n                ctx.stroke();\n            }\n            ctx.restore();\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mouseout\", onMouseOut);\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n        });\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'crosshair',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/flot/jquery.flot.js",
    "content": "/*! Javascript plotting library for jQuery, v. 0.7.\n *\n * Released under the MIT license by IOLA, December 2007.\n *\n */\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return\"rgb(\"+[G.r,G.g,G.b].join(\",\")+\")\"}else{return\"rgba(\"+[G.r,G.g,G.b,G.a].join(\",\")+\")\"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=\"\"&&E!=\"transparent\"){break}D=D.parent()}while(!B.nodeName(D.get(0),\"body\"));if(E==\"rgba(0, 0, 0, 0)\"){E=\"transparent\"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D==\"transparent\"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n        \n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85 // set to 0 to avoid background\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    \n                    // mode specific options\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null, // number or [number, \"unit\"]\n                    monthNames: null, // list of names of months\n                    timeformat: null, // format string to use\n                    twelveHourClock: false // 12 or 24 time in time mode\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled \n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // or \"center\" \n                        horizontal: false\n                    },\n                    shadowSize: 3\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                hooks: {}\n            },\n        canvas = null,      // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        canvasWidth = 0, canvasHeight = 0,\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return canvas; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.resize = function () {\n            getCanvasDimensions();\n            resizeCanvas(canvas);\n            resizeCanvas(overlay);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n        \n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n        \n        function parseOptions(opts) {\n            var i;\n            \n            $.extend(true, options, opts);\n            \n            if (options.xaxis.color == null)\n                options.xaxis.color = options.grid.color;\n            if (options.yaxis.color == null)\n                options.yaxis.color = options.grid.color;\n            \n            if (options.xaxis.tickColor == null) // backwards-compatibility\n                options.xaxis.tickColor = options.grid.tickColor;\n            if (options.yaxis.tickColor == null) // backwards-compatibility\n                options.yaxis.tickColor = options.grid.tickColor;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            \n            // fill in defaults in axes, copy at least always the\n            // first as the rest of the code assumes it'll be there\n            for (i = 0; i < Math.max(1, options.xaxes.length); ++i)\n                options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);\n            for (i = 0; i < Math.max(1, options.yaxes.length); ++i)\n                options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n        \n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n        \n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n        \n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes \n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n            \n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n        \n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            return res;\n        }\n        \n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n                \n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n            var i;\n            \n            // collect what we already got of colors\n            var neededColors = series.length,\n                usedColors = [],\n                assignedColors = [];\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    --neededColors;\n                    if (typeof sc == \"number\")\n                        assignedColors.push(sc);\n                    else\n                        usedColors.push($.color.parse(series[i].color));\n                }\n            }\n            \n            // we might need to generate more colors if higher indices\n            // are assigned\n            for (i = 0; i < assignedColors.length; ++i) {\n                neededColors = Math.max(neededColors, assignedColors[i] + 1);\n            }\n\n            // produce colors as needed\n            var colors = [], variation = 0;\n            i = 0;\n            while (colors.length < neededColors) {\n                var c;\n                if (options.colors.length == i) // check degenerate case\n                    c = $.color.make(100, 100, 100);\n                else\n                    c = $.color.parse(options.colors[i]);\n\n                // vary color if needed\n                var sign = variation % 2 == 1 ? -1 : 1;\n                c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)\n\n                // FIXME: if we're getting to close to something else,\n                // we should probably skip this one\n                colors.push(c);\n                \n                ++i;\n                if (i >= options.colors.length) {\n                    i = 0;\n                    ++variation;\n                }\n            }\n\n            // fill in the options\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n        \n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n            \n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n                \n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n            \n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                var data = s.data, format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        format.push({ y: true, number: true, required: false, defaultValue: 0 });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n                    \n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n                \n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n                \n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n                                    \n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n                            \n                            points[k + m] = val;\n                        }\n                    }\n                    \n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.x)\n                                    updateAxis(s.xaxis, val, val);\n                                if (f.y)\n                                    updateAxis(s.yaxis, val, val);\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points,\n                ps = s.datapoints.pointsize;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n                \n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n                        \n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n                \n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2;\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n                \n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function makeCanvas(skipPositioning, cls) {\n            var c = document.createElement('canvas');\n            c.className = cls;\n            c.width = canvasWidth;\n            c.height = canvasHeight;\n                    \n            if (!skipPositioning)\n                $(c).css({ position: 'absolute', left: 0, top: 0 });\n                \n            $(c).appendTo(placeholder);\n                \n            if (!c.getContext) // excanvas hack\n                c = window.G_vmlCanvasManager.initElement(c);\n\n            // used for resetting in case we get replotted\n            c.getContext(\"2d\").save();\n            \n            return c;\n        }\n\n        function getCanvasDimensions() {\n            canvasWidth = placeholder.width();\n            canvasHeight = placeholder.height();\n            \n            if (canvasWidth <= 0 || canvasHeight <= 0)\n                throw \"Invalid dimensions for plot, width = \" + canvasWidth + \", height = \" + canvasHeight;\n        }\n\n        function resizeCanvas(c) {\n            // resizing should reset the state (excanvas seems to be\n            // buggy though)\n            if (c.width != canvasWidth)\n                c.width = canvasWidth;\n\n            if (c.height != canvasHeight)\n                c.height = canvasHeight;\n\n            // so try to get back to the initial state (even if it's\n            // gone now, this should be safe according to the spec)\n            var cctx = c.getContext(\"2d\");\n            cctx.restore();\n\n            // and save again\n            cctx.save();\n        }\n        \n        function setupCanvases() {\n            var reused,\n                existingCanvas = placeholder.children(\"canvas.base\"),\n                existingOverlay = placeholder.children(\"canvas.overlay\");\n\n            if (existingCanvas.length == 0 || existingOverlay == 0) {\n                // init everything\n                \n                placeholder.html(\"\"); // make sure placeholder is clear\n            \n                placeholder.css({ padding: 0 }); // padding messes up the positioning\n                \n                if (placeholder.css(\"position\") == 'static')\n                    placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n                getCanvasDimensions();\n                \n                canvas = makeCanvas(true, \"base\");\n                overlay = makeCanvas(false, \"overlay\"); // overlay canvas for interactive features\n\n                reused = false;\n            }\n            else {\n                // reuse existing elements\n\n                canvas = existingCanvas.get(0);\n                overlay = existingOverlay.get(0);\n\n                reused = true;\n            }\n\n            ctx = canvas.getContext(\"2d\");\n            octx = overlay.getContext(\"2d\");\n\n            // we include the canvas in the event holder too, because IE 7\n            // sometimes has trouble with the stacking order\n            eventHolder = $([overlay, canvas]);\n\n            if (reused) {\n                // run shutdown in the old plot object\n                placeholder.data(\"plot\").shutdown();\n\n                // reset reused canvases\n                plot.resize();\n                \n                // make sure overlay pixels are cleared (canvas is cleared when we redraw)\n                octx.clearRect(0, 0, canvasWidth, canvasHeight);\n                \n                // then whack any remaining obvious garbage left\n                eventHolder.unbind();\n                placeholder.children().not([canvas, overlay]).remove();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mouseleave(onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n            \n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n            \n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n            \n            function identity(x) { return x; }\n            \n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n            \n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n            var opts = axis.options, i, ticks = axis.ticks || [], labels = [],\n                l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;\n\n            function makeDummyDiv(labels, width) {\n                return $('<div style=\"position:absolute;top:-10000px;' + width + 'font-size:smaller\">' +\n                         '<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\">'\n                         + labels.join(\"\") + '</div></div>')\n                    .appendTo(placeholder);\n            }\n            \n            if (axis.direction == \"x\") {\n                // to avoid measuring the widths of the labels (it's slow), we\n                // construct fixed-size boxes and put the labels inside\n                // them, we don't need the exact figures and the\n                // fixed-size box content is easy to center\n                if (w == null)\n                    w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));\n\n                // measure x label heights\n                if (h == null) {\n                    labels = [];\n                    for (i = 0; i < ticks.length; ++i) {\n                        l = ticks[i].label;\n                        if (l)\n                            labels.push('<div class=\"tickLabel\" style=\"float:left;width:' + w + 'px\">' + l + '</div>');\n                    }\n\n                    if (labels.length > 0) {\n                        // stick them all in the same div and measure\n                        // collective height\n                        labels.push('<div style=\"clear:left\"></div>');\n                        dummyDiv = makeDummyDiv(labels, \"width:10000px;\");\n                        h = dummyDiv.height();\n                        dummyDiv.remove();\n                    }\n                }\n            }\n            else if (w == null || h == null) {\n                // calculate y label dimensions\n                for (i = 0; i < ticks.length; ++i) {\n                    l = ticks[i].label;\n                    if (l)\n                        labels.push('<div class=\"tickLabel\">' + l + '</div>');\n                }\n                \n                if (labels.length > 0) {\n                    dummyDiv = makeDummyDiv(labels, \"\");\n                    if (w == null)\n                        w = dummyDiv.children().width();\n                    if (h == null)\n                        h = dummyDiv.find(\"div.tickLabel\").height();\n                    dummyDiv.remove();\n                }\n            }\n\n            if (w == null)\n                w = 0;\n            if (h == null)\n                h = 0;\n\n            axis.labelWidth = w;\n            axis.labelHeight = h;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                tickLength = axis.options.tickLength,\n                axismargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                all = axis.direction == \"x\" ? xaxes : yaxes,\n                index;\n\n            // determine axis margin\n            var samePosition = $.grep(all, function (a) {\n                return a && a.options.position == pos && a.reserveSpace;\n            });\n            if ($.inArray(axis, samePosition) == samePosition.length - 1)\n                axismargin = 0; // outermost\n\n            // determine tick length - if we're innermost, we can use \"full\"\n            if (tickLength == null)\n                tickLength = \"full\";\n\n            var sameDirection = $.grep(all, function (a) {\n                return a && a.reserveSpace;\n            });\n\n            var innermost = $.inArray(axis, sameDirection) == 0;\n            if (!innermost && tickLength == \"full\")\n                tickLength = 5;\n                \n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            // compute box\n            if (axis.direction == \"x\") {\n                lh += padding;\n                \n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axismargin;\n                    axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axismargin, height: lh };\n                    plotOffset.top += lh + axismargin;\n                }\n            }\n            else {\n                lw += padding;\n                \n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axismargin, width: lw };\n                    plotOffset.left += lw + axismargin;\n                }\n                else {\n                    plotOffset.right += lw + axismargin;\n                    axis.box = { left: canvasWidth - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // set remaining bounding box coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left;\n                axis.box.width = plotWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top;\n                axis.box.height = plotHeight;\n            }\n        }\n        \n        function setupGrid() {\n            var i, axes = allAxes();\n\n            // first calculate the plot and axis box dimensions\n\n            $.each(axes, function (_, axis) {\n                axis.show = axis.options.show;\n                if (axis.show == null)\n                    axis.show = axis.used; // by default an axis is visible if it's got data\n                \n                axis.reserveSpace = axis.show || axis.options.reserveSpace;\n\n                setRange(axis);\n            });\n\n            allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });\n\n            plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions in house, we can compute the\n                // axis boxes, start from the outside (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                var minMargin = options.grid.minBorderMargin;\n                if (minMargin == null) {\n                    minMargin = 0;\n                    for (i = 0; i < series.length; ++i)\n                        minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);\n                }\n                    \n                for (var a in plotOffset) {\n                    plotOffset[a] += options.grid.borderWidth;\n                    plotOffset[a] = Math.max(minMargin, plotOffset[a]);\n                }\n            }\n            \n            plotWidth = canvasWidth - plotOffset.left - plotOffset.right;\n            plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plotWidth/Height, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n\n                insertAxisLabels();\n            }\n            \n            insertLegend();\n        }\n        \n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n                \n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? canvasWidth : canvasHeight);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                size, generator, unit, formatter, i, magn, norm;\n\n            if (opts.mode == \"time\") {\n                // pretty handling of time\n                \n                // map of app. size of time units in milliseconds\n                var timeUnitSize = {\n                    \"second\": 1000,\n                    \"minute\": 60 * 1000,\n                    \"hour\": 60 * 60 * 1000,\n                    \"day\": 24 * 60 * 60 * 1000,\n                    \"month\": 30 * 24 * 60 * 60 * 1000,\n                    \"year\": 365.2425 * 24 * 60 * 60 * 1000\n                };\n\n\n                // the allowed tick sizes, after 1 year we use\n                // an integer algorithm\n                var spec = [\n                    [1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n                    [30, \"second\"], \n                    [1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n                    [30, \"minute\"], \n                    [1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n                    [8, \"hour\"], [12, \"hour\"],\n                    [1, \"day\"], [2, \"day\"], [3, \"day\"],\n                    [0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n                    [2, \"month\"], [3, \"month\"], [6, \"month\"],\n                    [1, \"year\"]\n                ];\n\n                var minSize = 0;\n                if (opts.minTickSize != null) {\n                    if (typeof opts.tickSize == \"number\")\n                        minSize = opts.tickSize;\n                    else\n                        minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n                }\n\n                for (var i = 0; i < spec.length - 1; ++i)\n                    if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n                                 + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n                       && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)\n                        break;\n                size = spec[i][0];\n                unit = spec[i][1];\n                \n                // special-case the possibility of several years\n                if (unit == \"year\") {\n                    magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));\n                    norm = (delta / timeUnitSize.year) / magn;\n                    if (norm < 1.5)\n                        size = 1;\n                    else if (norm < 3)\n                        size = 2;\n                    else if (norm < 7.5)\n                        size = 5;\n                    else\n                        size = 10;\n\n                    size *= magn;\n                }\n\n                axis.tickSize = opts.tickSize || [size, unit];\n                \n                generator = function(axis) {\n                    var ticks = [],\n                        tickSize = axis.tickSize[0], unit = axis.tickSize[1],\n                        d = new Date(axis.min);\n                    \n                    var step = tickSize * timeUnitSize[unit];\n\n                    if (unit == \"second\")\n                        d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));\n                    if (unit == \"minute\")\n                        d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));\n                    if (unit == \"hour\")\n                        d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));\n                    if (unit == \"month\")\n                        d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));\n                    if (unit == \"year\")\n                        d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));\n                    \n                    // reset smaller components\n                    d.setUTCMilliseconds(0);\n                    if (step >= timeUnitSize.minute)\n                        d.setUTCSeconds(0);\n                    if (step >= timeUnitSize.hour)\n                        d.setUTCMinutes(0);\n                    if (step >= timeUnitSize.day)\n                        d.setUTCHours(0);\n                    if (step >= timeUnitSize.day * 4)\n                        d.setUTCDate(1);\n                    if (step >= timeUnitSize.year)\n                        d.setUTCMonth(0);\n\n\n                    var carry = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = d.getTime();\n                        ticks.push(v);\n                        if (unit == \"month\") {\n                            if (tickSize < 1) {\n                                // a bit complicated - we'll divide the month\n                                // up but we need to take care of fractions\n                                // so we don't end up in the middle of a day\n                                d.setUTCDate(1);\n                                var start = d.getTime();\n                                d.setUTCMonth(d.getUTCMonth() + 1);\n                                var end = d.getTime();\n                                d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n                                carry = d.getUTCHours();\n                                d.setUTCHours(0);\n                            }\n                            else\n                                d.setUTCMonth(d.getUTCMonth() + tickSize);\n                        }\n                        else if (unit == \"year\") {\n                            d.setUTCFullYear(d.getUTCFullYear() + tickSize);\n                        }\n                        else\n                            d.setTime(v + step);\n                    } while (v < axis.max && v != prev);\n\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    var d = new Date(v);\n\n                    // first check global format\n                    if (opts.timeformat != null)\n                        return $.plot.formatDate(d, opts.timeformat, opts.monthNames);\n                    \n                    var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n                    var span = axis.max - axis.min;\n                    var suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n                    \n                    if (t < timeUnitSize.minute)\n                        fmt = \"%h:%M:%S\" + suffix;\n                    else if (t < timeUnitSize.day) {\n                        if (span < 2 * timeUnitSize.day)\n                            fmt = \"%h:%M\" + suffix;\n                        else\n                            fmt = \"%b %d %h:%M\" + suffix;\n                    }\n                    else if (t < timeUnitSize.month)\n                        fmt = \"%b %d\";\n                    else if (t < timeUnitSize.year) {\n                        if (span < timeUnitSize.year)\n                            fmt = \"%b\";\n                        else\n                            fmt = \"%b %y\";\n                    }\n                    else\n                        fmt = \"%y\";\n                    \n                    return $.plot.formatDate(d, fmt, opts.monthNames);\n                };\n            }\n            else {\n                // pretty rounding of base-10 numbers\n                var maxDec = opts.tickDecimals;\n                var dec = -Math.floor(Math.log(delta) / Math.LN10);\n                if (maxDec != null && dec > maxDec)\n                    dec = maxDec;\n\n                magn = Math.pow(10, -dec);\n                norm = delta / magn; // norm is between 1.0 and 10.0\n                \n                if (norm < 1.5)\n                    size = 1;\n                else if (norm < 3) {\n                    size = 2;\n                    // special case for 2.5, requires an extra decimal\n                    if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                        size = 2.5;\n                        ++dec;\n                    }\n                }\n                else if (norm < 7.5)\n                    size = 5;\n                else\n                    size = 10;\n\n                size *= magn;\n                \n                if (opts.minTickSize != null && size < opts.minTickSize)\n                    size = opts.minTickSize;\n\n                axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n                axis.tickSize = opts.tickSize || size;\n\n                generator = function (axis) {\n                    var ticks = [];\n\n                    // spew out all possible ticks\n                    var start = floorInBase(axis.min, axis.tickSize),\n                        i = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    return v.toFixed(axis.tickDecimals);\n                };\n            }\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = generator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n                    \n                    generator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n                    \n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (axis.mode != \"time\" && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),\n                            ts = generator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n\n            axis.tickGenerator = generator;\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n            else\n                axis.tickFormatter = formatter;\n        }\n        \n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks({ min: axis.min, max: axis.max });\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n      \n        function draw() {\n            ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n            \n            if (grid.show && !grid.aboveData)\n                drawGrid();\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n            \n            if (grid.show && grid.aboveData)\n                drawGrid();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i;\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    var axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n                    \n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    if (xrange.from == xrange.to && yrange.from == yrange.to)\n                        continue;\n\n                    // then draw\n                    xrange.from = xrange.axis.p2c(xrange.from);\n                    xrange.to = xrange.axis.p2c(xrange.to);\n                    yrange.from = yrange.axis.p2c(yrange.from);\n                    yrange.to = yrange.axis.p2c(yrange.to);\n                    \n                    if (xrange.from == xrange.to || yrange.from == yrange.to) {\n                        // draw line\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;\n                        ctx.moveTo(xrange.from, yrange.from);\n                        ctx.lineTo(xrange.to, yrange.to);\n                        ctx.stroke();\n                    }\n                    else {\n                        // fill area\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n            \n            // draw the ticks\n            var axes = allAxes(), bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue\n                \n                ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n                \n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth;\n                    else\n                        yoff = plotHeight;\n                    \n                    if (ctx.lineWidth == 1) {\n                        x = Math.floor(x) + 0.5;\n                        y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n                    \n                    xoff = yoff = 0;\n\n                    if (v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\" && bw > 0\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n                        \n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n                        \n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n                \n                ctx.stroke();\n            }\n            \n            \n            // draw border\n            if (bw) {\n                ctx.lineWidth = bw;\n                ctx.strokeStyle = options.grid.borderColor;\n                ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n            }\n\n            ctx.restore();\n        }\n\n        function insertAxisLabels() {\n            placeholder.find(\".tickLabels\").remove();\n            \n            var html = ['<div class=\"tickLabels\" style=\"font-size:smaller\">'];\n\n            var axes = allAxes();\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box;\n                if (!axis.show)\n                    continue;\n                //debug: html.push('<div style=\"position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n                html.push('<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\" style=\"color:' + axis.options.color + '\">');\n                for (var i = 0; i < axis.ticks.length; ++i) {\n                    var tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    var pos = {}, align;\n                    \n                    if (axis.direction == \"x\") {\n                        align = \"center\";\n                        pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);\n                        if (axis.position == \"bottom\")\n                            pos.top = box.top + box.padding;\n                        else\n                            pos.bottom = canvasHeight - (box.top + box.height - box.padding);\n                    }\n                    else {\n                        pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);\n                        if (axis.position == \"left\") {\n                            pos.right = canvasWidth - (box.left + box.width - box.padding)\n                            align = \"right\";\n                        }\n                        else {\n                            pos.left = box.left + box.padding;\n                            align = \"left\";\n                        }\n                    }\n\n                    pos.width = axis.labelWidth;\n\n                    var style = [\"position:absolute\", \"text-align:\" + align ];\n                    for (var a in pos)\n                        style.push(a + \":\" + pos[a] + \"px\")\n                    \n                    html.push('<div class=\"tickLabel\" style=\"' + style.join(';') + '\">' + tick.label + '</div>');\n                }\n                html.push('</div>');\n            }\n\n            html.push('</div>');\n\n            placeholder.append(html.join(\"\"));\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n        \n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n                \n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n                    \n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n                    \n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n                    \n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n                    \n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n                    \n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n                    \n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n                    \n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n                    \n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n                    \n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n           \n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n            \n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n            \n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n            \n            // fill the bar\n            if (fillStyleCallback) {\n                c.beginPath();\n                c.moveTo(left, bottom);\n                c.lineTo(left, top);\n                c.lineTo(right, top);\n                c.lineTo(right, bottom);\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fill();\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom + offset);\n                if (drawLeft)\n                    c.lineTo(left, top + offset);\n                else\n                    c.moveTo(left, top + offset);\n                if (drawTop)\n                    c.lineTo(right, top + offset);\n                else\n                    c.moveTo(right, top + offset);\n                if (drawRight)\n                    c.lineTo(right, bottom + offset);\n                else\n                    c.moveTo(right, bottom + offset);\n                if (drawBottom)\n                    c.lineTo(left, bottom + offset);\n                else\n                    c.moveTo(left, bottom + offset);\n                c.stroke();\n            }\n        }\n        \n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n                \n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n            \n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n        \n        function insertLegend() {\n            placeholder.find(\".legend\").remove();\n\n            if (!options.legend.show)\n                return;\n            \n            var fragments = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                label = s.label;\n                if (!label)\n                    continue;\n                \n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                if (lf)\n                    label = lf(label, s);\n                \n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + label + '</td>');\n            }\n            if (rowStarted)\n                fragments.push('</tr>');\n            \n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n        \n        var highlights = [],\n            redrawTimeout = null;\n        \n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n                \n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    ps = s.datapoints.pointsize,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n                \n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n                        \n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n                    \n                if (s.bars.show && !item) { // no other point can be nearby\n                    var barLeft = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2,\n                        barRight = barLeft + s.bars.barWidth;\n                    \n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n  \n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ? \n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) && \n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n                \n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n            \n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n                \n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n            \n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, 30);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            octx.clearRect(0, 0, canvasWidth, canvasHeight);\n            octx.translate(plotOffset.left, plotOffset.top);\n            \n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n            \n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n        \n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n            \n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n            }\n            \n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\")\n                point = s.data[point];\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n        \n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n        \n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis;\n            \n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n            \n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var radius = 1.5 * pointRadius,\n                x = axisx.p2c(x),\n                y = axisy.p2c(y);\n            \n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n                \n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness)\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n                \n                return gradient;\n            }\n        }\n    }\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.7\";\n    \n    $.plot.plugins = [];\n\n    // returns a string with the date d formatted according to fmt\n    $.plot.formatDate = function(d, fmt, monthNames) {\n        var leftPad = function(n) {\n            n = \"\" + n;\n            return n.length == 1 ? \"0\" + n : n;\n        };\n        \n        var r = [];\n        var escape = false, padNext = false;\n        var hours = d.getUTCHours();\n        var isAM = hours < 12;\n        if (monthNames == null)\n            monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n        if (fmt.search(/%p|%P/) != -1) {\n            if (hours > 12) {\n                hours = hours - 12;\n            } else if (hours == 0) {\n                hours = 12;\n            }\n        }\n        for (var i = 0; i < fmt.length; ++i) {\n            var c = fmt.charAt(i);\n            \n            if (escape) {\n                switch (c) {\n                case 'h': c = \"\" + hours; break;\n                case 'H': c = leftPad(hours); break;\n                case 'M': c = leftPad(d.getUTCMinutes()); break;\n                case 'S': c = leftPad(d.getUTCSeconds()); break;\n                case 'd': c = \"\" + d.getUTCDate(); break;\n                case 'm': c = \"\" + (d.getUTCMonth() + 1); break;\n                case 'y': c = \"\" + d.getUTCFullYear(); break;\n                case 'b': c = \"\" + monthNames[d.getUTCMonth()]; break;\n                case 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n                case 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n                case '0': c = \"\"; padNext = true; break;\n                }\n                if (c && padNext) {\n                    c = leftPad(c);\n                    padNext = false;\n                }\n                r.push(c);\n                if (!padNext)\n                    escape = false;\n            }\n            else {\n                if (c == \"%\")\n                    escape = true;\n                else\n                    r.push(c);\n            }\n        }\n        return r.join(\"\");\n    };\n    \n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n    \n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/flot/jquery.flot.pie.js",
    "content": "/*\nFlot plugin for rendering pie charts. The plugin assumes the data is \ncoming is as a single data value for each series, and each of those \nvalues is a positive value or zero (negative numbers don't make \nany sense and will cause strange effects). The data values do \nNOT need to be passed in as percentage values because it \ninternally calculates the total and percentages.\n\n* Created by Brian Medendorp, June 2009\n* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars\n\n* Changes:\n\t2009-10-22: lineJoin set to round\n\t2009-10-23: IE full circle fix, donut\n\t2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera\n\t2009-11-17: Added IE hover capability submitted by Anthony Aragues\n\t2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well)\n\t\t\n\nAvailable options are:\nseries: {\n\tpie: {\n\t\tshow: true/false\n\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\toffset: {\n\t\t\ttop: integer value to move the pie up or down\n\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t},\n\t\tstroke: {\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\twidth: integer pixel width of the stroke\n\t\t},\n\t\tlabel: {\n\t\t\tshow: true/false, or 'auto'\n\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\tbackground: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\topacity: 0-1\n\t\t\t},\n\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t},\n\t\tcombine: {\n\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t}\n\t\thighlight: {\n\t\t\topacity: 0-1\n\t\t}\n\t}\n}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function ($) \n{\n\tfunction init(plot) // this is the \"body\" of the plugin\n\t{\n\t\tvar canvas = null;\n\t\tvar target = null;\n\t\tvar maxRadius = null;\n\t\tvar centerLeft = null;\n\t\tvar centerTop = null;\n\t\tvar total = 0;\n\t\tvar redraw = true;\n\t\tvar redrawAttempts = 10;\n\t\tvar shrink = 0.95;\n\t\tvar legendWidth = 0;\n\t\tvar processed = false;\n\t\tvar raw = false;\n\t\t\n\t\t// interactive variables\t\n\t\tvar highlights = [];\t\n\t\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\t\tplot.hooks.processOptions.push(checkPieEnabled);\n\t\tplot.hooks.bindEvents.push(bindEvents);\t\n\n\t\t// check to see if the pie plugin is enabled\n\t\tfunction checkPieEnabled(plot, options)\n\t\t{\n\t\t\tif (options.series.pie.show)\n\t\t\t{\n\t\t\t\t//disable grid\n\t\t\t\toptions.grid.show = false;\n\t\t\t\t\n\t\t\t\t// set labels.show\n\t\t\t\tif (options.series.pie.label.show=='auto')\n\t\t\t\t\tif (options.legend.show)\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius=='auto')\n\t\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t\t\n\t\t\t\t// ensure sane tilt\n\t\t\t\tif (options.series.pie.tilt>1)\n\t\t\t\t\toptions.series.pie.tilt=1;\n\t\t\t\tif (options.series.pie.tilt<0)\n\t\t\t\t\toptions.series.pie.tilt=0;\n\t\t\t\n\t\t\t\t// add processData hook to do transformations on the data\n\t\t\t\tplot.hooks.processDatapoints.push(processDatapoints);\n\t\t\t\tplot.hooks.drawOverlay.push(drawOverlay);\t\n\t\t\t\t\n\t\t\t\t// add draw hook\n\t\t\t\tplot.hooks.draw.push(draw);\n\t\t\t}\n\t\t}\n\t\n\t\t// bind hoverable events\n\t\tfunction bindEvents(plot, eventHolder) \t\t\n\t\t{\t\t\n\t\t\tvar options = plot.getOptions();\n\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.hoverable)\n\t\t\t\teventHolder.unbind('mousemove').mousemove(onMouseMove);\n\t\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.clickable)\n\t\t\t\teventHolder.unbind('click').click(onClick);\n\t\t}\t\n\t\t\n\n\t\t// debugging function that prints out an object\n\t\tfunction alertObject(obj)\n\t\t{\n\t\t\tvar msg = '';\n\t\t\tfunction traverse(obj, depth)\n\t\t\t{\n\t\t\t\tif (!depth)\n\t\t\t\t\tdepth = 0;\n\t\t\t\tfor (var i = 0; i < obj.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tfor (var j=0; j<depth; j++)\n\t\t\t\t\t\tmsg += '\\t';\n\t\t\t\t\n\t\t\t\t\tif( typeof obj[i] == \"object\")\n\t\t\t\t\t{\t// its an object\n\t\t\t\t\t\tmsg += ''+i+':\\n';\n\t\t\t\t\t\ttraverse(obj[i], depth+1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\t// its a value\n\t\t\t\t\t\tmsg += ''+i+': '+obj[i]+'\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttraverse(obj);\n\t\t\talert(msg);\n\t\t}\n\t\t\n\t\tfunction calcTotal(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tvar item = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (item)\n\t\t\t\t\ttotal += item;\n\t\t\t}\n\t\t}\t\n\t\t\n\t\tfunction processDatapoints(plot, series, data, datapoints) \n\t\t{\t\n\t\t\tif (!processed)\n\t\t\t{\n\t\t\t\tprocessed = true;\n\t\t\t\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction setupPie()\n\t\t{\n\t\t\tlegendWidth = target.children().filter('.legend').children().width();\n\t\t\n\t\t\t// calculate maximum radius and center point\n\t\t\tmaxRadius =  Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2;\n\t\t\tcenterTop = (canvas.height/2)+options.series.pie.offset.top;\n\t\t\tcenterLeft = (canvas.width/2);\n\t\t\t\n\t\t\tif (options.series.pie.offset.left=='auto')\n\t\t\t\tif (options.legend.position.match('w'))\n\t\t\t\t\tcenterLeft += legendWidth/2;\n\t\t\t\telse\n\t\t\t\t\tcenterLeft -= legendWidth/2;\n\t\t\telse\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t\t\t\n\t\t\tif (centerLeft<maxRadius)\n\t\t\t\tcenterLeft = maxRadius;\n\t\t\telse if (centerLeft>canvas.width-maxRadius)\n\t\t\t\tcenterLeft = canvas.width-maxRadius;\n\t\t}\n\t\t\n\t\tfunction fixData(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tif (typeof(data[i].data)=='number')\n\t\t\t\t\tdata[i].data = [[1,data[i].data]];\n\t\t\t\telse if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined')\n\t\t\t\t{\n\t\t\t\t\tif (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined')\n\t\t\t\t\t\tdata[i].label = data[i].data.label; // fix weirdness coming from flot\n\t\t\t\t\tdata[i].data = [[1,0]];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t\t\n\t\tfunction combine(data)\n\t\t{\n\t\t\tdata = fixData(data);\n\t\t\tcalcTotal(data);\n\t\t\tvar combined = 0;\n\t\t\tvar numCombined = 0;\n\t\t\tvar color = options.series.pie.combine.color;\n\t\t\t\n\t\t\tvar newdata = [];\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\t// make sure its a number\n\t\t\t\tdata[i].data[0][1] = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (!data[i].data[0][1])\n\t\t\t\t\tdata[i].data[0][1] = 0;\n\t\t\t\t\t\n\t\t\t\tif (data[i].data[0][1]/total<=options.series.pie.combine.threshold)\n\t\t\t\t{\n\t\t\t\t\tcombined += data[i].data[0][1];\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color)\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t}\t\t\t\t\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewdata.push({\n\t\t\t\t\t\tdata: [[1,data[i].data[0][1]]], \n\t\t\t\t\t\tcolor: data[i].color, \n\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\tangle: (data[i].data[0][1]*(Math.PI*2))/total,\n\t\t\t\t\t\tpercent: (data[i].data[0][1]/total*100)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (numCombined>0)\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1,combined]], \n\t\t\t\t\tcolor: color, \n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: (combined*(Math.PI*2))/total,\n\t\t\t\t\tpercent: (combined/total*100)\n\t\t\t\t});\n\t\t\treturn newdata;\n\t\t}\t\t\n\t\t\n\t\tfunction draw(plot, newCtx)\n\t\t{\n\t\t\tif (!target) return; // if no series were passed\n\t\t\tctx = newCtx;\n\t\t\n\t\t\tsetupPie();\n\t\t\tvar slices = plot.getData();\n\t\t\n\t\t\tvar attempts = 0;\n\t\t\twhile (redraw && attempts<redrawAttempts)\n\t\t\t{\n\t\t\t\tredraw = false;\n\t\t\t\tif (attempts>0)\n\t\t\t\t\tmaxRadius *= shrink;\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt<=0.8)\n\t\t\t\t\tdrawShadow();\n\t\t\t\tdrawPie();\n\t\t\t}\n\t\t\tif (attempts >= redrawAttempts) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend('<div class=\"error\">Could not draw pie with labels contained inside canvas</div>');\n\t\t\t}\n\t\t\t\n\t\t\tif ( plot.setSeries && plot.insertLegend )\n\t\t\t{\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\t\t\t\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\t\t\t\n\t\t\tfunction clear()\n\t\t\t{\n\t\t\t\tctx.clearRect(0,0,canvas.width,canvas.height);\n\t\t\t\ttarget.children().filter('.pieLabel, .pieLabelBackground').remove();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawShadow()\n\t\t\t{\n\t\t\t\tvar shadowLeft = 5;\n\t\t\t\tvar shadowTop = 15;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = 0.02;\n\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\t\n\t\t\t\tif (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge)\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = '#000';\n\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t\n\t\t\t\t//radius -= edge;\n\t\t\t\tfor (var i=1; i<=edge; i++)\n\t\t\t\t{\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0,0,radius,0,Math.PI*2,false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawPie()\n\t\t\t{\n\t\t\t\tstartAngle = Math.PI*options.series.pie.startAngle;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\t\t\t\t\n\t\t\t\t// draw slices\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\t// draw slice outlines\n\t\t\t\tctx.save();\n\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\tctx.restore();\n\t\t\t\t\t\n\t\t\t\t// draw donut hole\n\t\t\t\tdrawDonutHole(ctx);\n\t\t\t\t\n\t\t\t\t// draw labels\n\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\tdrawLabels();\n\t\t\t\t\n\t\t\t\t// restore to original state\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\tfunction drawSlice(angle, color, fill)\n\t\t\t\t{\t\n\t\t\t\t\tif (angle<=0)\n\t\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = 'round';\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\telse if ($.browser.msie)\n\t\t\t\t\t\tangle -= 0.0001;\n\t\t\t\t\t//ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0,0,radius,currentAngle,currentAngle+angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\t\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\telse\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction drawLabels()\n\t\t\t\t{\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\t\n\t\t\t\t\t// set radius\n\t\t\t\t\tif (options.series.pie.label.radius>1)\n\t\t\t\t\t\tvar radius = options.series.pie.label.radius;\n\t\t\t\t\telse\n\t\t\t\t\t\tvar radius = maxRadius * options.series.pie.label.radius;\n\t\t\t\t\t\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold*100)\n\t\t\t\t\t\t\tdrawLabel(slices[i], currentAngle, i);\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slice.data[0][1]==0)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// format label text\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\t\t\t\t\t\tif (lf)\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\tif (plf)\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar halfAngle = ((startAngle+slice.angle) + startAngle)/2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar html = '<span class=\"pieLabel\" id=\"pieLabel'+index+'\" style=\"position:absolute;top:' + y + 'px;left:' + x + 'px;\">' + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\t\t\t\t\t\tvar label = target.children('#pieLabel'+index);\n\t\t\t\t\t\tvar labelTop = (y - label.height()/2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width()/2);\n\t\t\t\t\t\tlabel.css('top', labelTop);\n\t\t\t\t\t\tlabel.css('left', labelLeft);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\t\t\t\t\t\tif (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0)\n\t\t\t\t\t\t\tredraw = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;';\n\t\t\t\t\t\t\t$('<div class=\"pieLabelBackground\" style=\"position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity);\n\t\t\t\t\t\t}\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\t\t\n\t\t// Placed here because it needs to be accessed from multiple locations \n\t\tfunction drawDonutHole(layer)\n\t\t{\n\t\t\t// draw donut hole\n\t\t\tif(options.series.pie.innerRadius > 0)\n\t\t\t{\n\t\t\t\t// subtract the center\n\t\t\t\tlayer.save();\n\t\t\t\tinnerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t\n\t\t\t\t// add inner stroke\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\t\t\n\t\t//-- Additional Interactive related functions --\n\t\t\n\t\tfunction isPointInPoly(poly, pt)\n\t\t{\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\t\t\n\t\tfunction findNearbySlice(mouseX, mouseY)\n\t\t{\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\t\t\t\n\t\t\tfor (var i = 0; i < slices.length; ++i) \n\t\t\t{\n\t\t\t\tvar s = slices[i];\t\n\t\t\t\t\n\t\t\t\tif(s.pie.show)\n\t\t\t\t{\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX-centerLeft;\n\t\t\t\t\ty = mouseY-centerTop;\n\t\t\t\t\tif(ctx.isPointInPath)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//alert('found slice!');\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround. \n\t\t\t\t\t\tp1X = (radius * Math.cos(s.startAngle));\n\t\t\t\t\t\tp1Y = (radius * Math.sin(s.startAngle));\n\t\t\t\t\t\tp2X = (radius * Math.cos(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp2Y = (radius * Math.sin(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp3X = (radius * Math.cos(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp3Y = (radius * Math.sin(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp4X = (radius * Math.cos(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp5X = (radius * Math.cos(s.startAngle+s.angle));\n\t\t\t\t\t\tp5Y = (radius * Math.sin(s.startAngle+s.angle));\n\t\t\t\t\t\tarrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];\n\t\t\t\t\t\tarrPoint = [x,y];\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\t\t\t\t\t\tif(isPointInPoly(arrPoly, arrPoint))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plothover', e);\n\t\t}\n\t\t\n        function onClick(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plotclick', e);\n        }\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\t\tfunction triggerClickHoverEvent(eventname, e) \n\t\t{\n\t\t\tvar offset = plot.offset(),\n\t\t\t\tcanvasX = parseInt(e.pageX - offset.left),\n\t\t\t\tcanvasY =  parseInt(e.pageY - offset.top),\n\t\t\t\titem = findNearbySlice(canvasX, canvasY);\n\t\t\t\n\t\t\tif (options.grid.autoHighlight) \n\t\t\t{\n\t\t\t\t// clear auto-highlights\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t\t{\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series))\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// highlight the slice\n\t\t\tif (item) \n\t\t\t    highlight(item.series, eventname);\n\t\t\t\t\n\t\t\t// trigger any hover bind events\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [ pos, item ]);\t\n\t\t}\n\n\t\tfunction highlight(s, auto) \n\t\t{\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i == -1) \n\t\t\t{\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\telse if (!auto)\n\t\t\t\thighlights[i].auto = false;\n\t\t}\n\n\t\tfunction unhighlight(s) \n\t\t{\n\t\t\tif (s == null) \n\t\t\t{\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i != -1) \n\t\t\t{\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) \n\t\t{\n\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t{\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) \n\t\t{\n\t\t\t//alert(options.series.pie.radius);\n\t\t\tvar options = plot.getOptions();\n\t\t\t//alert(options.series.pie.radius);\n\t\t\t\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\t\t\t\n\t\t\tfor (i = 0; i < highlights.length; ++i) \n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) \n\t\t\t{\n\t\t\t\tif (series.angle < 0) return;\n\t\t\t\t\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \"+options.series.pie.highlight.opacity+\")\"; // this is temporary until we have access to parseColor\n\t\t\t\t\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\toctx.moveTo(0,0); // Center of the pie\n\t\t\t\toctx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t\t\n\t\t}\t\n\t\t\n\t} // end init (plugin body)\n\t\n\t// define pie specific options and their default values\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: 'auto',\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius:0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 'auto'\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: '#FFF',\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: 'auto',\n\t\t\t\t\tformatter: function(label, slice){\n\t\t\t\t\t\treturn '<div style=\"font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';\">'+label+'<br/>'+Math.round(slice.percent)+'%</div>';\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: 'Other'\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: '#FFF',\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.0\"\n\t});\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/flot/jquery.flot.resize.js",
    "content": "/*\nFlot plugin for automatically redrawing plots when the placeholder\nsize changes, e.g. on window resizes.\n\nIt works by listening for changes on the placeholder div (through the\njQuery resize event plugin) - if the size changes, it will redraw the\nplot.\n\nThere are no options. If you need to disable the plugin for some\nplots, you can just fix the size of their placeholders.\n*/\n\n\n/* Inline dependency: \n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k=\"setTimeout\",j=\"resize\",d=j+\"-special-event\",b=\"delay\",f=\"throttleWindow\";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);\n\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/flot/jquery.flot.stack.js",
    "content": "/*\nFlot plugin for stacking data sets, i.e. putting them on top of each\nother, for accumulative graphs.\n\nThe plugin assumes the data is sorted on x (or y if stacking\nhorizontally). For line charts, it is assumed that if a line has an\nundefined gap (from a null point), then the line above it should have\nthe same gap - insert zeros instead of \"null\" if you want another\nbehaviour. This also holds for the start and end of the chart. Note\nthat stacking a mix of positive and negative values in most instances\ndoesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to\nthe same key (which can be any number or string or just \"true\"). To\nspecify the default stack, you can set\n\n  series: {\n    stack: null or true or key (number/string)\n  }\n\nor specify it for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], stack: true }])\n  \nThe stacking order is determined by the order of the data series in\nthe array (later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding\nan offset to the y value. For line series, extra data points are\ninserted through interpolation. If there's a second y value, it's also\nadjusted (e.g for bar charts or filled areas).\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13053E3D2A0B",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t06C14E9A4A",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -9008AD2B1A63",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19072F5ECA8B",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t10853ADFA9F",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q03F7DC5A5A",
    "content": "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /divcss/admin/metro/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z\non this server.</p>\n<p>Additionally, a 404 Not Found\nerror was encountered while trying to use an ErrorDocument to handle the request.</p>\n<hr>\n<address>Apache/2.2.15 (CentOS) Server at www.js-css.cn Port 80</address>\n</body></html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 0606112A72",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-0A62DD2A40",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.03ECFC9A16",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -064148EA68",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/css/font-awesome.css",
    "content": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/davegandy\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../font/fontawesome-webfont.eot@v=3.2.1');\n  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');\n  font-weight: normal;\n  font-style: normal;\n}\n/* FONT AWESOME CORE\n * -------------------------- */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em;\n}\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  speak: none;\n}\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 1.3333333333333333em;\n}\n/* makes sure icons active on rollover in links */\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  display: inline;\n}\n/* increased font size for icon-large */\n[class^=\"icon-\"].icon-fixed-width,\n[class*=\" icon-\"].icon-fixed-width {\n  display: inline-block;\n  width: 1.1428571428571428em;\n  text-align: right;\n  padding-right: 0.2857142857142857em;\n}\n[class^=\"icon-\"].icon-fixed-width.icon-large,\n[class*=\" icon-\"].icon-fixed-width.icon-large {\n  width: 1.4285714285714286em;\n}\n.icons-ul {\n  margin-left: 2.142857142857143em;\n  list-style-type: none;\n}\n.icons-ul > li {\n  position: relative;\n}\n.icons-ul .icon-li {\n  position: absolute;\n  left: -2.142857142857143em;\n  width: 2.142857142857143em;\n  text-align: center;\n  line-height: inherit;\n}\n[class^=\"icon-\"].hide,\n[class*=\" icon-\"].hide {\n  display: none;\n}\n.icon-muted {\n  color: #eeeeee;\n}\n.icon-light {\n  color: #ffffff;\n}\n.icon-dark {\n  color: #333333;\n}\n.icon-border {\n  border: solid 1px #eeeeee;\n  padding: .2em .25em .15em;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n.icon-2x {\n  font-size: 2em;\n}\n.icon-2x.icon-border {\n  border-width: 2px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.icon-3x {\n  font-size: 3em;\n}\n.icon-3x.icon-border {\n  border-width: 3px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n}\n.icon-4x {\n  font-size: 4em;\n}\n.icon-4x.icon-border {\n  border-width: 4px;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n}\n.icon-5x {\n  font-size: 5em;\n}\n.icon-5x.icon-border {\n  border-width: 5px;\n  -webkit-border-radius: 7px;\n  -moz-border-radius: 7px;\n  border-radius: 7px;\n}\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n[class^=\"icon-\"].pull-left,\n[class*=\" icon-\"].pull-left {\n  margin-right: .3em;\n}\n[class^=\"icon-\"].pull-right,\n[class*=\" icon-\"].pull-right {\n  margin-left: .3em;\n}\n/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n/* keeps Bootstrap styles with and without icons the same */\n.btn [class^=\"icon-\"].icon-large,\n.nav [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].icon-spin,\n.nav [class^=\"icon-\"].icon-spin,\n.btn [class*=\" icon-\"].icon-spin,\n.nav [class*=\" icon-\"].icon-spin {\n  display: inline-block;\n}\n.nav-tabs [class^=\"icon-\"],\n.nav-pills [class^=\"icon-\"],\n.nav-tabs [class*=\" icon-\"],\n.nav-pills [class*=\" icon-\"],\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].pull-left.icon-2x,\n.btn [class*=\" icon-\"].pull-left.icon-2x,\n.btn [class^=\"icon-\"].pull-right.icon-2x,\n.btn [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .18em;\n}\n.btn [class^=\"icon-\"].icon-spin.icon-large,\n.btn [class*=\" icon-\"].icon-spin.icon-large {\n  line-height: .8em;\n}\n.btn.btn-small [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-small [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .25em;\n}\n.btn.btn-large [class^=\"icon-\"],\n.btn.btn-large [class*=\" icon-\"] {\n  margin-top: 0;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .05em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x {\n  margin-right: .2em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-left: .2em;\n}\n/* Fixes alignment in nav lists */\n.nav-list [class^=\"icon-\"],\n.nav-list [class*=\" icon-\"] {\n  line-height: inherit;\n}\n/* EXTRAS\n * -------------------------- */\n/* Stacked and layered icon */\n.icon-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: -35%;\n}\n.icon-stack [class^=\"icon-\"],\n.icon-stack [class*=\" icon-\"] {\n  display: block;\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  font-size: 1em;\n  line-height: inherit;\n  *line-height: 2em;\n}\n.icon-stack .icon-stack-base {\n  font-size: 2em;\n  *line-height: 1em;\n}\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\n/* Prevent stack and spinners from being taken inline when inside a link */\na .icon-stack,\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n@-moz-keyframes spin {\n  0% {\n    -moz-transform: rotate(0deg);\n  }\n  100% {\n    -moz-transform: rotate(359deg);\n  }\n}\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n  }\n}\n@-o-keyframes spin {\n  0% {\n    -o-transform: rotate(0deg);\n  }\n  100% {\n    -o-transform: rotate(359deg);\n  }\n}\n@-ms-keyframes spin {\n  0% {\n    -ms-transform: rotate(0deg);\n  }\n  100% {\n    -ms-transform: rotate(359deg);\n  }\n}\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(359deg);\n  }\n}\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n/* ensure rotation occurs inside anchor tags */\na .icon-rotate-90:before,\na .icon-rotate-180:before,\na .icon-rotate-270:before,\na .icon-flip-horizontal:before,\na .icon-flip-vertical:before {\n  display: inline-block;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.icon-glass:before {\n  content: \"\\f000\";\n}\n.icon-music:before {\n  content: \"\\f001\";\n}\n.icon-search:before {\n  content: \"\\f002\";\n}\n.icon-envelope-alt:before {\n  content: \"\\f003\";\n}\n.icon-heart:before {\n  content: \"\\f004\";\n}\n.icon-star:before {\n  content: \"\\f005\";\n}\n.icon-star-empty:before {\n  content: \"\\f006\";\n}\n.icon-user:before {\n  content: \"\\f007\";\n}\n.icon-film:before {\n  content: \"\\f008\";\n}\n.icon-th-large:before {\n  content: \"\\f009\";\n}\n.icon-th:before {\n  content: \"\\f00a\";\n}\n.icon-th-list:before {\n  content: \"\\f00b\";\n}\n.icon-ok:before {\n  content: \"\\f00c\";\n}\n.icon-remove:before {\n  content: \"\\f00d\";\n}\n.icon-zoom-in:before {\n  content: \"\\f00e\";\n}\n.icon-zoom-out:before {\n  content: \"\\f010\";\n}\n.icon-power-off:before,\n.icon-off:before {\n  content: \"\\f011\";\n}\n.icon-signal:before {\n  content: \"\\f012\";\n}\n.icon-gear:before,\n.icon-cog:before {\n  content: \"\\f013\";\n}\n.icon-trash:before {\n  content: \"\\f014\";\n}\n.icon-home:before {\n  content: \"\\f015\";\n}\n.icon-file-alt:before {\n  content: \"\\f016\";\n}\n.icon-time:before {\n  content: \"\\f017\";\n}\n.icon-road:before {\n  content: \"\\f018\";\n}\n.icon-download-alt:before {\n  content: \"\\f019\";\n}\n.icon-download:before {\n  content: \"\\f01a\";\n}\n.icon-upload:before {\n  content: \"\\f01b\";\n}\n.icon-inbox:before {\n  content: \"\\f01c\";\n}\n.icon-play-circle:before {\n  content: \"\\f01d\";\n}\n.icon-rotate-right:before,\n.icon-repeat:before {\n  content: \"\\f01e\";\n}\n.icon-refresh:before {\n  content: \"\\f021\";\n}\n.icon-list-alt:before {\n  content: \"\\f022\";\n}\n.icon-lock:before {\n  content: \"\\f023\";\n}\n.icon-flag:before {\n  content: \"\\f024\";\n}\n.icon-headphones:before {\n  content: \"\\f025\";\n}\n.icon-volume-off:before {\n  content: \"\\f026\";\n}\n.icon-volume-down:before {\n  content: \"\\f027\";\n}\n.icon-volume-up:before {\n  content: \"\\f028\";\n}\n.icon-qrcode:before {\n  content: \"\\f029\";\n}\n.icon-barcode:before {\n  content: \"\\f02a\";\n}\n.icon-tag:before {\n  content: \"\\f02b\";\n}\n.icon-tags:before {\n  content: \"\\f02c\";\n}\n.icon-book:before {\n  content: \"\\f02d\";\n}\n.icon-bookmark:before {\n  content: \"\\f02e\";\n}\n.icon-print:before {\n  content: \"\\f02f\";\n}\n.icon-camera:before {\n  content: \"\\f030\";\n}\n.icon-font:before {\n  content: \"\\f031\";\n}\n.icon-bold:before {\n  content: \"\\f032\";\n}\n.icon-italic:before {\n  content: \"\\f033\";\n}\n.icon-text-height:before {\n  content: \"\\f034\";\n}\n.icon-text-width:before {\n  content: \"\\f035\";\n}\n.icon-align-left:before {\n  content: \"\\f036\";\n}\n.icon-align-center:before {\n  content: \"\\f037\";\n}\n.icon-align-right:before {\n  content: \"\\f038\";\n}\n.icon-align-justify:before {\n  content: \"\\f039\";\n}\n.icon-list:before {\n  content: \"\\f03a\";\n}\n.icon-indent-left:before {\n  content: \"\\f03b\";\n}\n.icon-indent-right:before {\n  content: \"\\f03c\";\n}\n.icon-facetime-video:before {\n  content: \"\\f03d\";\n}\n.icon-picture:before {\n  content: \"\\f03e\";\n}\n.icon-pencil:before {\n  content: \"\\f040\";\n}\n.icon-map-marker:before {\n  content: \"\\f041\";\n}\n.icon-adjust:before {\n  content: \"\\f042\";\n}\n.icon-tint:before {\n  content: \"\\f043\";\n}\n.icon-edit:before {\n  content: \"\\f044\";\n}\n.icon-share:before {\n  content: \"\\f045\";\n}\n.icon-check:before {\n  content: \"\\f046\";\n}\n.icon-move:before {\n  content: \"\\f047\";\n}\n.icon-step-backward:before {\n  content: \"\\f048\";\n}\n.icon-fast-backward:before {\n  content: \"\\f049\";\n}\n.icon-backward:before {\n  content: \"\\f04a\";\n}\n.icon-play:before {\n  content: \"\\f04b\";\n}\n.icon-pause:before {\n  content: \"\\f04c\";\n}\n.icon-stop:before {\n  content: \"\\f04d\";\n}\n.icon-forward:before {\n  content: \"\\f04e\";\n}\n.icon-fast-forward:before {\n  content: \"\\f050\";\n}\n.icon-step-forward:before {\n  content: \"\\f051\";\n}\n.icon-eject:before {\n  content: \"\\f052\";\n}\n.icon-chevron-left:before {\n  content: \"\\f053\";\n}\n.icon-chevron-right:before {\n  content: \"\\f054\";\n}\n.icon-plus-sign:before {\n  content: \"\\f055\";\n}\n.icon-minus-sign:before {\n  content: \"\\f056\";\n}\n.icon-remove-sign:before {\n  content: \"\\f057\";\n}\n.icon-ok-sign:before {\n  content: \"\\f058\";\n}\n.icon-question-sign:before {\n  content: \"\\f059\";\n}\n.icon-info-sign:before {\n  content: \"\\f05a\";\n}\n.icon-screenshot:before {\n  content: \"\\f05b\";\n}\n.icon-remove-circle:before {\n  content: \"\\f05c\";\n}\n.icon-ok-circle:before {\n  content: \"\\f05d\";\n}\n.icon-ban-circle:before {\n  content: \"\\f05e\";\n}\n.icon-arrow-left:before {\n  content: \"\\f060\";\n}\n.icon-arrow-right:before {\n  content: \"\\f061\";\n}\n.icon-arrow-up:before {\n  content: \"\\f062\";\n}\n.icon-arrow-down:before {\n  content: \"\\f063\";\n}\n.icon-mail-forward:before,\n.icon-share-alt:before {\n  content: \"\\f064\";\n}\n.icon-resize-full:before {\n  content: \"\\f065\";\n}\n.icon-resize-small:before {\n  content: \"\\f066\";\n}\n.icon-plus:before {\n  content: \"\\f067\";\n}\n.icon-minus:before {\n  content: \"\\f068\";\n}\n.icon-asterisk:before {\n  content: \"\\f069\";\n}\n.icon-exclamation-sign:before {\n  content: \"\\f06a\";\n}\n.icon-gift:before {\n  content: \"\\f06b\";\n}\n.icon-leaf:before {\n  content: \"\\f06c\";\n}\n.icon-fire:before {\n  content: \"\\f06d\";\n}\n.icon-eye-open:before {\n  content: \"\\f06e\";\n}\n.icon-eye-close:before {\n  content: \"\\f070\";\n}\n.icon-warning-sign:before {\n  content: \"\\f071\";\n}\n.icon-plane:before {\n  content: \"\\f072\";\n}\n.icon-calendar:before {\n  content: \"\\f073\";\n}\n.icon-random:before {\n  content: \"\\f074\";\n}\n.icon-comment:before {\n  content: \"\\f075\";\n}\n.icon-magnet:before {\n  content: \"\\f076\";\n}\n.icon-chevron-up:before {\n  content: \"\\f077\";\n}\n.icon-chevron-down:before {\n  content: \"\\f078\";\n}\n.icon-retweet:before {\n  content: \"\\f079\";\n}\n.icon-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.icon-folder-close:before {\n  content: \"\\f07b\";\n}\n.icon-folder-open:before {\n  content: \"\\f07c\";\n}\n.icon-resize-vertical:before {\n  content: \"\\f07d\";\n}\n.icon-resize-horizontal:before {\n  content: \"\\f07e\";\n}\n.icon-bar-chart:before {\n  content: \"\\f080\";\n}\n.icon-twitter-sign:before {\n  content: \"\\f081\";\n}\n.icon-facebook-sign:before {\n  content: \"\\f082\";\n}\n.icon-camera-retro:before {\n  content: \"\\f083\";\n}\n.icon-key:before {\n  content: \"\\f084\";\n}\n.icon-gears:before,\n.icon-cogs:before {\n  content: \"\\f085\";\n}\n.icon-comments:before {\n  content: \"\\f086\";\n}\n.icon-thumbs-up-alt:before {\n  content: \"\\f087\";\n}\n.icon-thumbs-down-alt:before {\n  content: \"\\f088\";\n}\n.icon-star-half:before {\n  content: \"\\f089\";\n}\n.icon-heart-empty:before {\n  content: \"\\f08a\";\n}\n.icon-signout:before {\n  content: \"\\f08b\";\n}\n.icon-linkedin-sign:before {\n  content: \"\\f08c\";\n}\n.icon-pushpin:before {\n  content: \"\\f08d\";\n}\n.icon-external-link:before {\n  content: \"\\f08e\";\n}\n.icon-signin:before {\n  content: \"\\f090\";\n}\n.icon-trophy:before {\n  content: \"\\f091\";\n}\n.icon-github-sign:before {\n  content: \"\\f092\";\n}\n.icon-upload-alt:before {\n  content: \"\\f093\";\n}\n.icon-lemon:before {\n  content: \"\\f094\";\n}\n.icon-phone:before {\n  content: \"\\f095\";\n}\n.icon-unchecked:before,\n.icon-check-empty:before {\n  content: \"\\f096\";\n}\n.icon-bookmark-empty:before {\n  content: \"\\f097\";\n}\n.icon-phone-sign:before {\n  content: \"\\f098\";\n}\n.icon-twitter:before {\n  content: \"\\f099\";\n}\n.icon-facebook:before {\n  content: \"\\f09a\";\n}\n.icon-github:before {\n  content: \"\\f09b\";\n}\n.icon-unlock:before {\n  content: \"\\f09c\";\n}\n.icon-credit-card:before {\n  content: \"\\f09d\";\n}\n.icon-rss:before {\n  content: \"\\f09e\";\n}\n.icon-hdd:before {\n  content: \"\\f0a0\";\n}\n.icon-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.icon-bell:before {\n  content: \"\\f0a2\";\n}\n.icon-certificate:before {\n  content: \"\\f0a3\";\n}\n.icon-hand-right:before {\n  content: \"\\f0a4\";\n}\n.icon-hand-left:before {\n  content: \"\\f0a5\";\n}\n.icon-hand-up:before {\n  content: \"\\f0a6\";\n}\n.icon-hand-down:before {\n  content: \"\\f0a7\";\n}\n.icon-circle-arrow-left:before {\n  content: \"\\f0a8\";\n}\n.icon-circle-arrow-right:before {\n  content: \"\\f0a9\";\n}\n.icon-circle-arrow-up:before {\n  content: \"\\f0aa\";\n}\n.icon-circle-arrow-down:before {\n  content: \"\\f0ab\";\n}\n.icon-globe:before {\n  content: \"\\f0ac\";\n}\n.icon-wrench:before {\n  content: \"\\f0ad\";\n}\n.icon-tasks:before {\n  content: \"\\f0ae\";\n}\n.icon-filter:before {\n  content: \"\\f0b0\";\n}\n.icon-briefcase:before {\n  content: \"\\f0b1\";\n}\n.icon-fullscreen:before {\n  content: \"\\f0b2\";\n}\n.icon-group:before {\n  content: \"\\f0c0\";\n}\n.icon-link:before {\n  content: \"\\f0c1\";\n}\n.icon-cloud:before {\n  content: \"\\f0c2\";\n}\n.icon-beaker:before {\n  content: \"\\f0c3\";\n}\n.icon-cut:before {\n  content: \"\\f0c4\";\n}\n.icon-copy:before {\n  content: \"\\f0c5\";\n}\n.icon-paperclip:before,\n.icon-paper-clip:before {\n  content: \"\\f0c6\";\n}\n.icon-save:before {\n  content: \"\\f0c7\";\n}\n.icon-sign-blank:before {\n  content: \"\\f0c8\";\n}\n.icon-reorder:before {\n  content: \"\\f0c9\";\n}\n.icon-list-ul:before {\n  content: \"\\f0ca\";\n}\n.icon-list-ol:before {\n  content: \"\\f0cb\";\n}\n.icon-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.icon-underline:before {\n  content: \"\\f0cd\";\n}\n.icon-table:before {\n  content: \"\\f0ce\";\n}\n.icon-magic:before {\n  content: \"\\f0d0\";\n}\n.icon-truck:before {\n  content: \"\\f0d1\";\n}\n.icon-pinterest:before {\n  content: \"\\f0d2\";\n}\n.icon-pinterest-sign:before {\n  content: \"\\f0d3\";\n}\n.icon-google-plus-sign:before {\n  content: \"\\f0d4\";\n}\n.icon-google-plus:before {\n  content: \"\\f0d5\";\n}\n.icon-money:before {\n  content: \"\\f0d6\";\n}\n.icon-caret-down:before {\n  content: \"\\f0d7\";\n}\n.icon-caret-up:before {\n  content: \"\\f0d8\";\n}\n.icon-caret-left:before {\n  content: \"\\f0d9\";\n}\n.icon-caret-right:before {\n  content: \"\\f0da\";\n}\n.icon-columns:before {\n  content: \"\\f0db\";\n}\n.icon-sort:before {\n  content: \"\\f0dc\";\n}\n.icon-sort-down:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-up:before {\n  content: \"\\f0de\";\n}\n.icon-envelope:before {\n  content: \"\\f0e0\";\n}\n.icon-linkedin:before {\n  content: \"\\f0e1\";\n}\n.icon-rotate-left:before,\n.icon-undo:before {\n  content: \"\\f0e2\";\n}\n.icon-legal:before {\n  content: \"\\f0e3\";\n}\n.icon-dashboard:before {\n  content: \"\\f0e4\";\n}\n.icon-comment-alt:before {\n  content: \"\\f0e5\";\n}\n.icon-comments-alt:before {\n  content: \"\\f0e6\";\n}\n.icon-bolt:before {\n  content: \"\\f0e7\";\n}\n.icon-sitemap:before {\n  content: \"\\f0e8\";\n}\n.icon-umbrella:before {\n  content: \"\\f0e9\";\n}\n.icon-paste:before {\n  content: \"\\f0ea\";\n}\n.icon-lightbulb:before {\n  content: \"\\f0eb\";\n}\n.icon-exchange:before {\n  content: \"\\f0ec\";\n}\n.icon-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.icon-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.icon-user-md:before {\n  content: \"\\f0f0\";\n}\n.icon-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.icon-suitcase:before {\n  content: \"\\f0f2\";\n}\n.icon-bell-alt:before {\n  content: \"\\f0f3\";\n}\n.icon-coffee:before {\n  content: \"\\f0f4\";\n}\n.icon-food:before {\n  content: \"\\f0f5\";\n}\n.icon-file-text-alt:before {\n  content: \"\\f0f6\";\n}\n.icon-building:before {\n  content: \"\\f0f7\";\n}\n.icon-hospital:before {\n  content: \"\\f0f8\";\n}\n.icon-ambulance:before {\n  content: \"\\f0f9\";\n}\n.icon-medkit:before {\n  content: \"\\f0fa\";\n}\n.icon-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.icon-beer:before {\n  content: \"\\f0fc\";\n}\n.icon-h-sign:before {\n  content: \"\\f0fd\";\n}\n.icon-plus-sign-alt:before {\n  content: \"\\f0fe\";\n}\n.icon-double-angle-left:before {\n  content: \"\\f100\";\n}\n.icon-double-angle-right:before {\n  content: \"\\f101\";\n}\n.icon-double-angle-up:before {\n  content: \"\\f102\";\n}\n.icon-double-angle-down:before {\n  content: \"\\f103\";\n}\n.icon-angle-left:before {\n  content: \"\\f104\";\n}\n.icon-angle-right:before {\n  content: \"\\f105\";\n}\n.icon-angle-up:before {\n  content: \"\\f106\";\n}\n.icon-angle-down:before {\n  content: \"\\f107\";\n}\n.icon-desktop:before {\n  content: \"\\f108\";\n}\n.icon-laptop:before {\n  content: \"\\f109\";\n}\n.icon-tablet:before {\n  content: \"\\f10a\";\n}\n.icon-mobile-phone:before {\n  content: \"\\f10b\";\n}\n.icon-circle-blank:before {\n  content: \"\\f10c\";\n}\n.icon-quote-left:before {\n  content: \"\\f10d\";\n}\n.icon-quote-right:before {\n  content: \"\\f10e\";\n}\n.icon-spinner:before {\n  content: \"\\f110\";\n}\n.icon-circle:before {\n  content: \"\\f111\";\n}\n.icon-mail-reply:before,\n.icon-reply:before {\n  content: \"\\f112\";\n}\n.icon-github-alt:before {\n  content: \"\\f113\";\n}\n.icon-folder-close-alt:before {\n  content: \"\\f114\";\n}\n.icon-folder-open-alt:before {\n  content: \"\\f115\";\n}\n.icon-expand-alt:before {\n  content: \"\\f116\";\n}\n.icon-collapse-alt:before {\n  content: \"\\f117\";\n}\n.icon-smile:before {\n  content: \"\\f118\";\n}\n.icon-frown:before {\n  content: \"\\f119\";\n}\n.icon-meh:before {\n  content: \"\\f11a\";\n}\n.icon-gamepad:before {\n  content: \"\\f11b\";\n}\n.icon-keyboard:before {\n  content: \"\\f11c\";\n}\n.icon-flag-alt:before {\n  content: \"\\f11d\";\n}\n.icon-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.icon-terminal:before {\n  content: \"\\f120\";\n}\n.icon-code:before {\n  content: \"\\f121\";\n}\n.icon-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-mail-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-star-half-full:before,\n.icon-star-half-empty:before {\n  content: \"\\f123\";\n}\n.icon-location-arrow:before {\n  content: \"\\f124\";\n}\n.icon-crop:before {\n  content: \"\\f125\";\n}\n.icon-code-fork:before {\n  content: \"\\f126\";\n}\n.icon-unlink:before {\n  content: \"\\f127\";\n}\n.icon-question:before {\n  content: \"\\f128\";\n}\n.icon-info:before {\n  content: \"\\f129\";\n}\n.icon-exclamation:before {\n  content: \"\\f12a\";\n}\n.icon-superscript:before {\n  content: \"\\f12b\";\n}\n.icon-subscript:before {\n  content: \"\\f12c\";\n}\n.icon-eraser:before {\n  content: \"\\f12d\";\n}\n.icon-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.icon-microphone:before {\n  content: \"\\f130\";\n}\n.icon-microphone-off:before {\n  content: \"\\f131\";\n}\n.icon-shield:before {\n  content: \"\\f132\";\n}\n.icon-calendar-empty:before {\n  content: \"\\f133\";\n}\n.icon-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.icon-rocket:before {\n  content: \"\\f135\";\n}\n.icon-maxcdn:before {\n  content: \"\\f136\";\n}\n.icon-chevron-sign-left:before {\n  content: \"\\f137\";\n}\n.icon-chevron-sign-right:before {\n  content: \"\\f138\";\n}\n.icon-chevron-sign-up:before {\n  content: \"\\f139\";\n}\n.icon-chevron-sign-down:before {\n  content: \"\\f13a\";\n}\n.icon-html5:before {\n  content: \"\\f13b\";\n}\n.icon-css3:before {\n  content: \"\\f13c\";\n}\n.icon-anchor:before {\n  content: \"\\f13d\";\n}\n.icon-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.icon-bullseye:before {\n  content: \"\\f140\";\n}\n.icon-ellipsis-horizontal:before {\n  content: \"\\f141\";\n}\n.icon-ellipsis-vertical:before {\n  content: \"\\f142\";\n}\n.icon-rss-sign:before {\n  content: \"\\f143\";\n}\n.icon-play-sign:before {\n  content: \"\\f144\";\n}\n.icon-ticket:before {\n  content: \"\\f145\";\n}\n.icon-minus-sign-alt:before {\n  content: \"\\f146\";\n}\n.icon-check-minus:before {\n  content: \"\\f147\";\n}\n.icon-level-up:before {\n  content: \"\\f148\";\n}\n.icon-level-down:before {\n  content: \"\\f149\";\n}\n.icon-check-sign:before {\n  content: \"\\f14a\";\n}\n.icon-edit-sign:before {\n  content: \"\\f14b\";\n}\n.icon-external-link-sign:before {\n  content: \"\\f14c\";\n}\n.icon-share-sign:before {\n  content: \"\\f14d\";\n}\n.icon-compass:before {\n  content: \"\\f14e\";\n}\n.icon-collapse:before {\n  content: \"\\f150\";\n}\n.icon-collapse-top:before {\n  content: \"\\f151\";\n}\n.icon-expand:before {\n  content: \"\\f152\";\n}\n.icon-euro:before,\n.icon-eur:before {\n  content: \"\\f153\";\n}\n.icon-gbp:before {\n  content: \"\\f154\";\n}\n.icon-dollar:before,\n.icon-usd:before {\n  content: \"\\f155\";\n}\n.icon-rupee:before,\n.icon-inr:before {\n  content: \"\\f156\";\n}\n.icon-yen:before,\n.icon-jpy:before {\n  content: \"\\f157\";\n}\n.icon-renminbi:before,\n.icon-cny:before {\n  content: \"\\f158\";\n}\n.icon-won:before,\n.icon-krw:before {\n  content: \"\\f159\";\n}\n.icon-bitcoin:before,\n.icon-btc:before {\n  content: \"\\f15a\";\n}\n.icon-file:before {\n  content: \"\\f15b\";\n}\n.icon-file-text:before {\n  content: \"\\f15c\";\n}\n.icon-sort-by-alphabet:before {\n  content: \"\\f15d\";\n}\n.icon-sort-by-alphabet-alt:before {\n  content: \"\\f15e\";\n}\n.icon-sort-by-attributes:before {\n  content: \"\\f160\";\n}\n.icon-sort-by-attributes-alt:before {\n  content: \"\\f161\";\n}\n.icon-sort-by-order:before {\n  content: \"\\f162\";\n}\n.icon-sort-by-order-alt:before {\n  content: \"\\f163\";\n}\n.icon-thumbs-up:before {\n  content: \"\\f164\";\n}\n.icon-thumbs-down:before {\n  content: \"\\f165\";\n}\n.icon-youtube-sign:before {\n  content: \"\\f166\";\n}\n.icon-youtube:before {\n  content: \"\\f167\";\n}\n.icon-xing:before {\n  content: \"\\f168\";\n}\n.icon-xing-sign:before {\n  content: \"\\f169\";\n}\n.icon-youtube-play:before {\n  content: \"\\f16a\";\n}\n.icon-dropbox:before {\n  content: \"\\f16b\";\n}\n.icon-stackexchange:before {\n  content: \"\\f16c\";\n}\n.icon-instagram:before {\n  content: \"\\f16d\";\n}\n.icon-flickr:before {\n  content: \"\\f16e\";\n}\n.icon-adn:before {\n  content: \"\\f170\";\n}\n.icon-bitbucket:before {\n  content: \"\\f171\";\n}\n.icon-bitbucket-sign:before {\n  content: \"\\f172\";\n}\n.icon-tumblr:before {\n  content: \"\\f173\";\n}\n.icon-tumblr-sign:before {\n  content: \"\\f174\";\n}\n.icon-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.icon-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.icon-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.icon-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.icon-apple:before {\n  content: \"\\f179\";\n}\n.icon-windows:before {\n  content: \"\\f17a\";\n}\n.icon-android:before {\n  content: \"\\f17b\";\n}\n.icon-linux:before {\n  content: \"\\f17c\";\n}\n.icon-dribbble:before {\n  content: \"\\f17d\";\n}\n.icon-skype:before {\n  content: \"\\f17e\";\n}\n.icon-foursquare:before {\n  content: \"\\f180\";\n}\n.icon-trello:before {\n  content: \"\\f181\";\n}\n.icon-female:before {\n  content: \"\\f182\";\n}\n.icon-male:before {\n  content: \"\\f183\";\n}\n.icon-gittip:before {\n  content: \"\\f184\";\n}\n.icon-sun:before {\n  content: \"\\f185\";\n}\n.icon-moon:before {\n  content: \"\\f186\";\n}\n.icon-archive:before {\n  content: \"\\f187\";\n}\n.icon-bug:before {\n  content: \"\\f188\";\n}\n.icon-vk:before {\n  content: \"\\f189\";\n}\n.icon-weibo:before {\n  content: \"\\f18a\";\n}\n.icon-renren:before {\n  content: \"\\f18b\";\n}\n"
  },
  {
    "path": "src/main/webapp/assets/font-awesome/font/fontawesome-webfont.woff@v=3.2.1",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css",
    "content": "/*\n * FullCalendar v1.5.3 Stylesheet\n *\n * Copyright (c) 2011 Adam Shaw\n * Dual licensed under the MIT and GPL licenses, located in\n * MIT-LICENSE.txt and GPL-LICENSE.txt respectively.\n *\n * Date: Mon Feb 6 22:40:40 2012 -0800\n *\n */\n\n\n.fc {\n  direction: ltr;\n  text-align: left;\n  }\n  \n.fc table {\n  border-collapse: collapse;\n  border-spacing: 0;\n  }\n  \nhtml .fc,\n.fc table {\n  font-size: 1em;\n  }\n  \n.fc td,\n.fc th {\n  padding: 0;\n  vertical-align: top;\n  }\n\n\n\n/* Header\n------------------------------------------------------------------------*/\n\n.fc-header td {\n  white-space: nowrap;\n  }\n\n.fc-header-left {\n  width: 25%;\n  text-align: left;\n  }\n  \n.fc-header-center {\n  text-align: center;\n  }\n  \n.fc-header-right {\n  width: 25%;\n  text-align: right;    \n  }\n  \n.fc-header-title {\n  display: inline-block;\n  vertical-align: top;\n  }\n  \n.fc-header-title h2 {\n  margin-top: 0;\n  font-size: 16px;\n  white-space: nowrap;\n  }\n  \n.fc .fc-header-space {\n  padding-left: 10px;\n  }\n  \n.fc-header .fc-button {\n  margin-bottom: 1em;\n  vertical-align: top;\n}\n  \n/* buttons edges butting together */\n\n.fc-header .fc-button {\n  margin-right: -1px;\n  }\n  \n.fc-header .fc-corner-right {\n  margin-right: 1px; /* back to normal */\n  }\n  \n.fc-header .ui-corner-right {\n  margin-right: 0; /* back to normal */\n  }\n  \n/* button layering (for border precedence) */\n  \n.fc-header .fc-state-hover,\n.fc-header .ui-state-hover {\n  z-index: 2;\n  }\n  \n.fc-header .fc-state-down {\n  z-index: 3;\n  }\n\n.fc-header .fc-state-active,\n.fc-header .ui-state-active {\n  z-index: 4;\n  }\n  \n  \n  \n/* Content\n------------------------------------------------------------------------*/\n  \n.fc-content {\n  clear: both;\n  }\n  \n.fc-view {\n  width: 100%; /* needed for view switching (when view is absolute) */\n  overflow: hidden;\n  }\n  \n  \n\n/* Cell Styles\n------------------------------------------------------------------------*/\n\n.fc-widget-header {\n  background-image: -moz-linear-gradient(top, #fafafa, #efefef);\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef));\n    background-image: -webkit-linear-gradient(top, #fafafa, #efefef);\n    background-image: -o-linear-gradient(top, #fafafa, #efefef);\n    background-image: linear-gradient(to bottom, #fafafa, #efefef);\n  color: #646464;\n}\n\n.fc-widget-header,    /* <th>, usually */\n.fc-widget-content {  /* <td>, usually */\n  border: 1px solid #ddd;\n  color: #646464;\n}\n  \n.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */\n  background: #fff;\n  }\n  \n.fc-cell-overlay { /* semi-transparent rectangle while dragging */\n  background: #9cf;\n  opacity: .2;\n  filter: alpha(opacity=20); /* for IE */\n  }\n  \n\n\n/* Buttons\n------------------------------------------------------------------------*/\n\n.fc-button {\n  position: relative;\n  overflow: hidden;\n  display: inline-block;\n  cursor: pointer;\n  top: -52px;\n}\n\n.fc-header {\n  margin-bottom:-20px;\n}\n  \n.fc-state-default { /* non-theme */\n  border-style: solid;\n  border-width: 1px 0;\n  }\n  \n.fc-button-inner {\n  position: relative;\n  float: left;\n  overflow: hidden;\n  padding: 5px;\n  \n  }\n  \n.fc-state-default .fc-button-inner { /* non-theme */\n  border-style: solid;\n  border-width: 0 1px;\n  }\n  \n.fc-button-content {\n  position: relative;\n  float: left;\n  height: 1.9em;\n  line-height: 1.9em;\n  padding: 0 .6em;\n  white-space: nowrap;\n  }\n  \n/* icon (for jquery ui) */\n  \n.fc-button-content .fc-icon-wrap {\n  position: relative;\n  float: left;\n  top: 50%;\n  }\n  \n.fc-button-content .ui-icon {\n  position: relative;\n  float: left;\n  margin-top: -50%;\n  *margin-top: 0;\n  *top: -50%;\n  }\n  \n/* gloss effect */\n  \n.fc-state-default .fc-button-effect {\n  position: absolute;\n  top: 50%;\n  left: 0;\n  }\n  \n.fc-state-default .fc-button-effect span {\n\n  }\n  \n/* button states (determines colors)  */\n  \n.fc-state-default,\n.fc-state-default .fc-button-inner {\n  border-top-style: none;\n  border-bottom-style: none;\n  border-left-style: solid;\n  border-right-style: solid;\n  border-color: #ddd;\n  background: transparent;\n  color: #646464;\n  }\n  \n.fc-state-hover,\n.fc-state-hover .fc-button-inner {\n  border-color: #ddd;\n  background: #fafafa;\n  }\n  \n.fc-state-down,\n.fc-state-down .fc-button-inner {\n  border-color: #ddd;\n  background: transparent;\n  }\n\n.fc-state-active,\n.fc-state-active .fc-button-inner {\n    background:#FFFFFF;\n    border-bottom: 1px solid #FFFFFF;\n    border-color: #DDDDDD #DDDDDD #FFFFFF;\n    color: #646464;\n}\n  }\n  \n.fc-state-disabled,\n.fc-state-disabled .fc-button-inner {\n  color: #999;\n  border-color: #ddd;\n  }\n  \n.fc-state-disabled {\n  cursor: default;\n  }\n  \n.fc-state-disabled .fc-button-effect {\n  display: none;\n  }\n  \n  \n\n/* Global Event Styles\n------------------------------------------------------------------------*/\n   \n.fc-event {\n  border-style: solid;\n  border-width: 0;\n  font-size: .85em;\n  cursor: default;\n  }\n  \na.fc-event,\n.fc-event-draggable {\n  cursor: pointer;\n  }\n  \na.fc-event {\n  text-decoration: none;\n  }\n  \n.fc-rtl .fc-event {\n  text-align: right;\n  }\n  \n.fc-event-skin {\n  border-color: #81c4e6;     /* default BORDER color */\n  background-color: #8cccec; /* default BACKGROUND color */\n  color: #fff;               /* default TEXT color */\n  }\n  \n.fc-event-inner {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  border-style: solid;\n  border-width: 0;\n  overflow: hidden;\n  }\n  \n.fc-event-time,\n.fc-event-title {\n  padding: 0 1px;\n  }\n  \n.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/\n  display: block;\n  position: absolute;\n  z-index: 99999;\n  overflow: hidden; /* hacky spaces (IE6/7) */\n  font-size: 300%;  /* */\n  line-height: 50%; /* */\n  }\n  \n  \n  \n/* Horizontal Events\n------------------------------------------------------------------------*/\n\n.fc-event-hori {\n  border-width: 1px 0;\n  margin-bottom: 1px;\n  }\n  \n/* resizable */\n  \n.fc-event-hori .ui-resizable-e {\n  top: 0           !important; /* importants override pre jquery ui 1.7 styles */\n  right: -3px      !important;\n  width: 7px       !important;\n  height: 100%     !important;\n  cursor: e-resize;\n  }\n  \n.fc-event-hori .ui-resizable-w {\n  top: 0           !important;\n  left: -3px       !important;\n  width: 7px       !important;\n  height: 100%     !important;\n  cursor: w-resize;\n  }\n  \n.fc-event-hori .ui-resizable-handle {\n  _padding-bottom: 14px; /* IE6 had 0 height */\n  }\n  \n  \n  \n/* Fake Rounded Corners (for buttons and events)\n------------------------------------------------------------*/\n  \n.fc-corner-left {\n  margin-left: 1px;\n  }\n  \n.fc-corner-left .fc-button-inner,\n.fc-corner-left .fc-event-inner {\n  margin-left: -1px;\n  }\n  \n.fc-corner-right {\n  margin-right: 1px;\n  }\n  \n.fc-corner-right .fc-button-inner,\n.fc-corner-right .fc-event-inner {\n  margin-right: -1px;\n  }\n  \n.fc-corner-top {\n  margin-top: 1px;\n  }\n  \n.fc-corner-top .fc-event-inner {\n  margin-top: -1px;\n  }\n  \n.fc-corner-bottom {\n  margin-bottom: 1px;\n  }\n  \n.fc-corner-bottom .fc-event-inner {\n  margin-bottom: -1px;\n  }\n  \n  \n  \n/* Fake Rounded Corners SPECIFICALLY FOR EVENTS\n-----------------------------------------------------------------*/\n  \n.fc-corner-left .fc-event-inner {\n  border-left-width: 1px;\n  }\n  \n.fc-corner-right .fc-event-inner {\n  border-right-width: 1px;\n  }\n  \n.fc-corner-top .fc-event-inner {\n  border-top-width: 1px;\n  }\n  \n.fc-corner-bottom .fc-event-inner {\n  border-bottom-width: 1px;\n  }\n  \n  \n  \n/* Reusable Separate-border Table\n------------------------------------------------------------*/\n\ntable.fc-border-separate {\n  border-collapse: separate;\n\n  }\n  \n.fc-border-separate th,\n.fc-border-separate td {\n  border-width: 1px 0 0 1px;\n  }\n  \n.fc-border-separate th.fc-last,\n.fc-border-separate td.fc-last {\n  border-right-width: 1px;\n  }\n  \n.fc-border-separate tr.fc-last th,\n.fc-border-separate tr.fc-last td {\n  border-bottom-width: 1px;\n  }\n  \n.fc-border-separate tbody tr.fc-first td,\n.fc-border-separate tbody tr.fc-first th {\n  border-top-width: 0;\n  }\n  \n  \n\n/* Month View, Basic Week View, Basic Day View\n------------------------------------------------------------------------*/\n\n.fc-grid th {\n  text-align: center;\n  }\n  \n.fc-grid .fc-day-number {\n  float: right;\n  padding: 0 2px;\n  }\n  \n.fc-grid .fc-other-month .fc-day-number {\n  opacity: 0.3;\n  filter: alpha(opacity=30); /* for IE */\n  /* opacity with small font can sometimes look too faded\n     might want to set the 'color' property instead\n     making day-numbers bold also fixes the problem */\n  }\n  \n.fc-grid .fc-day-content {\n  clear: both;\n  padding: 2px 2px 1px; /* distance between events and day edges */\n  }\n  \n/* event styles */\n  \n.fc-grid .fc-event-time {\n  font-weight: bold;\n  }\n  \n/* right-to-left */\n  \n.fc-rtl .fc-grid .fc-day-number {\n  float: left;\n  }\n  \n.fc-rtl .fc-grid .fc-event-time {\n  float: right;\n  }\n  \n  \n\n/* Agenda Week View, Agenda Day View\n------------------------------------------------------------------------*/\n\n.fc-agenda table {\n  border-collapse: separate;\n  }\n  \n.fc-agenda-days th {\n  text-align: center;\n  }\n  \n.fc-agenda .fc-agenda-axis {\n  width: 50px;\n  padding: 0 4px;\n  vertical-align: middle;\n  text-align: right;\n  white-space: nowrap;\n  font-weight: normal;\n  }\n  \n.fc-agenda .fc-day-content {\n  padding: 2px 2px 1px;\n  }\n  \n/* make axis border take precedence */\n  \n.fc-agenda-days .fc-agenda-axis {\n  border-right-width: 1px;\n  }\n  \n.fc-agenda-days .fc-col0 {\n  border-left-width: 0;\n  }\n  \n/* all-day area */\n  \n.fc-agenda-allday th {\n  border-width: 0 1px;\n  }\n  \n.fc-agenda-allday .fc-day-content {\n  min-height: 34px; /* TODO: doesnt work well in quirksmode */\n  _height: 34px;\n  }\n  \n/* divider (between all-day and slots) */\n  \n.fc-agenda-divider-inner {\n  height: 2px;\n  overflow: hidden;\n  }\n  \n.fc-widget-header .fc-agenda-divider-inner {\n  background: #eee;\n  }\n  \n/* slot rows */\n  \n.fc-agenda-slots th {\n  border-width: 1px 1px;\n  }\n  \n.fc-agenda-slots td {\n  border-width: 1px 0 0;\n  background: none;\n  }\n  \n.fc-agenda-slots td div {\n  height: 20px;\n  }\n  \n.fc-agenda-slots tr.fc-slot0 th,\n.fc-agenda-slots tr.fc-slot0 td {\n  border-top-width: 0;\n  }\n\n.fc-agenda-slots tr.fc-minor th,\n.fc-agenda-slots tr.fc-minor td {\n  border-top-style: dotted;\n  }\n  \n.fc-agenda-slots tr.fc-minor th.ui-widget-header {\n  *border-top-style: solid; /* doesn't work with background in IE6/7 */\n  }\n  \n\n\n/* Vertical Events\n------------------------------------------------------------------------*/\n\n.fc-event-vert {\n  border-width: 0 1px;\n  }\n  \n.fc-event-vert .fc-event-head,\n.fc-event-vert .fc-event-content {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  overflow: hidden;\n  }\n  \n.fc-event-vert .fc-event-time {\n  white-space: nowrap;\n  font-size: 10px;\n  }\n  \n.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay  */\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background: #fff;\n  opacity: .3;\n  filter: alpha(opacity=30);\n  }\n  \n.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */\n.fc-select-helper .fc-event-bg {\n  display: none\\9; /* for IE6/7/8. nested opacity filters while dragging don't work */\n  }\n  \n/* resizable */\n  \n.fc-event-vert .ui-resizable-s {\n  bottom: 0        !important; /* importants override pre jquery ui 1.7 styles */\n  width: 100%      !important;\n  height: 8px      !important;\n  overflow: hidden !important;\n  line-height: 8px !important;\n  font-size: 11px  !important;\n  font-family: monospace;\n  text-align: center;\n  cursor: s-resize;\n  }\n  \n.fc-agenda .ui-resizable-resizing { /* TODO: better selector */\n  _overflow: hidden;\n  }\n"
  },
  {
    "path": "src/main/webapp/assets/gritter/css/jquery.gritter.css",
    "content": "/* the norm */\n#gritter-notice-wrapper {\n\tposition:fixed;\n\ttop:20px;\n\tright:20px;\n\twidth:301px;\n\tz-index:9999;\n}\n#gritter-notice-wrapper.top-left {\n    left: 20px;\n    right: auto;\n}\n#gritter-notice-wrapper.bottom-right {\n    top: auto;\n    left: auto;\n    bottom: 20px;\n    right: 20px;\n}\n#gritter-notice-wrapper.bottom-left {\n    top: auto;\n    right: auto;\n    bottom: 20px;\n    left: 20px;\n}\n.gritter-item-wrapper {\n\tposition:relative;\n\tmargin:0 0 10px 0;\n\tbackground:url('../images/ie-spacer.gif'); /* ie7/8 fix */ \n}\n.gritter-top {\n\tbackground:url(../images/gritter.png) no-repeat left -30px;\n\theight:10px;\n}\n.hover .gritter-top {\n\tbackground-position:right -30px;\n}\n.gritter-bottom {\n\tbackground:url(../images/gritter.png) no-repeat left bottom;\n\theight:8px;\n\tmargin:0;\n}\n.hover .gritter-bottom {\n\tbackground-position: bottom right;\n}\n.gritter-item {\n\tdisplay:block;\n\tbackground:url(../images/gritter.png) no-repeat left -40px;\n\tcolor:#eee;\n\tpadding:2px 11px 8px 11px;\n\tfont-size: 11px;\n\tfont-family:verdana;\n}\n.hover .gritter-item {\n\tbackground-position:right -40px;\n}\n.gritter-item p {\n\tpadding:0;\n\tmargin:0;\n\tword-wrap:break-word;\n}\n.gritter-close {\n\tdisplay:none;\n\tposition:absolute;\n\ttop:5px;\n\tleft:3px;\n\tbackground:url(../images/gritter.png) no-repeat left top;\n\tcursor:pointer;\n\twidth:30px;\n\theight:30px;\n}\n.gritter-title {\n\tfont-size:14px;\n\tfont-weight:bold;\n\tpadding:0 0 7px 0;\n\tdisplay:block;\n\ttext-shadow:1px 1px 0 #000; /* Not supported by IE :( */\n}\n.gritter-image {\n\twidth:48px;\n\theight:48px;\n\tfloat:left;\n}\n.gritter-with-image,\n.gritter-without-image {\n\tpadding:0;\n}\n.gritter-with-image {\n\twidth:220px;\n\tfloat:right;\n}\n/* for the light (white) version of the gritter notice */\n.gritter-light .gritter-item,\n.gritter-light .gritter-bottom,\n.gritter-light .gritter-top,\n.gritter-light .gritter-close {\n    background-image: url(../images/gritter-light.png);\n    color: #222;\n}\n.gritter-light .gritter-title {\n    text-shadow: none;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/gritter/js/jquery.gritter.js",
    "content": "/*\n * Gritter for jQuery\n * http://www.boedesign.com/\n *\n * Copyright (c) 2012 Jordan Boesch\n * Dual licensed under the MIT and GPL licenses.\n *\n * Date: February 24, 2012\n * Version: 1.7.4\n */\n\n(function($){\n \t\n\t/**\n\t* Set it up as an object under the jQuery namespace\n\t*/\n\t$.gritter = {};\n\t\n\t/**\n\t* Set up global options that the user can over-ride\n\t*/\n\t$.gritter.options = {\n\t\tposition: '',\n\t\tclass_name: '', // could be set to 'gritter-light' to use white notifications\n\t\tfade_in_speed: 'medium', // how fast notifications fade in\n\t\tfade_out_speed: 1000, // how fast the notices fade out\n\t\ttime: 6000 // hang on the screen for...\n\t}\n\t\n\t/**\n\t* Add a gritter notification to the screen\n\t* @see Gritter#add();\n\t*/\n\t$.gritter.add = function(params){\n\n\t\ttry {\n\t\t\treturn Gritter.add(params || {});\n\t\t} catch(e) {\n\t\t\n\t\t\tvar err = 'Gritter Error: ' + e;\n\t\t\t(typeof(console) != 'undefined' && console.error) ? \n\t\t\t\tconsole.error(err, params) : \n\t\t\t\talert(err);\n\t\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t/**\n\t* Remove a gritter notification from the screen\n\t* @see Gritter#removeSpecific();\n\t*/\n\t$.gritter.remove = function(id, params){\n\t\tGritter.removeSpecific(id, params || {});\n\t}\n\t\n\t/**\n\t* Remove all notifications\n\t* @see Gritter#stop();\n\t*/\n\t$.gritter.removeAll = function(params){\n\t\tGritter.stop(params || {});\n\t}\n\t\n\t/**\n\t* Big fat Gritter object\n\t* @constructor (not really since its object literal)\n\t*/\n\tvar Gritter = {\n\t\t\n\t\t// Public - options to over-ride with $.gritter.options in \"add\"\n\t\tposition: '',\n\t\tfade_in_speed: '',\n\t\tfade_out_speed: '',\n\t\ttime: '',\n\t\t\n\t\t// Private - no touchy the private parts\n\t\t_custom_timer: 0,\n\t\t_item_count: 0,\n\t\t_is_setup: 0,\n\t\t_tpl_close: '<div class=\"gritter-close\"></div>',\n\t\t_tpl_title: '<span class=\"gritter-title\">[[title]]</span>',\n\t\t_tpl_item: '<div id=\"gritter-item-[[number]]\" class=\"gritter-item-wrapper [[item_class]]\" style=\"display:none\"><div class=\"gritter-top\"></div><div class=\"gritter-item\">[[close]][[image]]<div class=\"[[class_name]]\">[[title]]<p>[[text]]</p></div><div style=\"clear:both\"></div></div><div class=\"gritter-bottom\"></div></div>',\n\t\t_tpl_wrap: '<div id=\"gritter-notice-wrapper\"></div>',\n\t\t\n\t\t/**\n\t\t* Add a gritter notification to the screen\n\t\t* @param {Object} params The object that contains all the options for drawing the notification\n\t\t* @return {Integer} The specific numeric id to that gritter notification\n\t\t*/\n\t\tadd: function(params){\n\t\t\t// Handle straight text\n\t\t\tif(typeof(params) == 'string'){\n\t\t\t\tparams = {text:params};\n\t\t\t}\n\n\t\t\t// We might have some issues if we don't have a title or text!\n\t\t\tif(!params.text){\n\t\t\t\tthrow 'You must supply \"text\" parameter.'; \n\t\t\t}\n\t\t\t\n\t\t\t// Check the options and set them once\n\t\t\tif(!this._is_setup){\n\t\t\t\tthis._runSetup();\n\t\t\t}\n\t\t\t\n\t\t\t// Basics\n\t\t\tvar title = params.title, \n\t\t\t\ttext = params.text,\n\t\t\t\timage = params.image || '',\n\t\t\t\tsticky = params.sticky || false,\n\t\t\t\titem_class = params.class_name || $.gritter.options.class_name,\n\t\t\t\tposition = $.gritter.options.position,\n\t\t\t\ttime_alive = params.time || '';\n\n\t\t\tthis._verifyWrapper();\n\t\t\t\n\t\t\tthis._item_count++;\n\t\t\tvar number = this._item_count, \n\t\t\t\ttmp = this._tpl_item;\n\t\t\t\n\t\t\t// Assign callbacks\n\t\t\t$(['before_open', 'after_open', 'before_close', 'after_close']).each(function(i, val){\n\t\t\t\tGritter['_' + val + '_' + number] = ($.isFunction(params[val])) ? params[val] : function(){}\n\t\t\t});\n\n\t\t\t// Reset\n\t\t\tthis._custom_timer = 0;\n\t\t\t\n\t\t\t// A custom fade time set\n\t\t\tif(time_alive){\n\t\t\t\tthis._custom_timer = time_alive;\n\t\t\t}\n\t\t\t\n\t\t\tvar image_str = (image != '') ? '<img src=\"' + image + '\" class=\"gritter-image\" />' : '',\n\t\t\t\tclass_name = (image != '') ? 'gritter-with-image' : 'gritter-without-image';\n\t\t\t\n\t\t\t// String replacements on the template\n\t\t\tif(title){\n\t\t\t\ttitle = this._str_replace('[[title]]',title,this._tpl_title);\n\t\t\t}else{\n\t\t\t\ttitle = '';\n\t\t\t}\n\t\t\t\n\t\t\ttmp = this._str_replace(\n\t\t\t\t['[[title]]', '[[text]]', '[[close]]', '[[image]]', '[[number]]', '[[class_name]]', '[[item_class]]'],\n\t\t\t\t[title, text, this._tpl_close, image_str, this._item_count, class_name, item_class], tmp\n\t\t\t);\n\n\t\t\t// If it's false, don't show another gritter message\n\t\t\tif(this['_before_open_' + number]() === false){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$('#gritter-notice-wrapper').addClass(position).append(tmp);\n\t\t\t\n\t\t\tvar item = $('#gritter-item-' + this._item_count);\n\t\t\t\n\t\t\titem.fadeIn(this.fade_in_speed, function(){\n\t\t\t\tGritter['_after_open_' + number]($(this));\n\t\t\t});\n\t\t\t\n\t\t\tif(!sticky){\n\t\t\t\tthis._setFadeTimer(item, number);\n\t\t\t}\n\t\t\t\n\t\t\t// Bind the hover/unhover states\n\t\t\t$(item).bind('mouseenter mouseleave', function(event){\n\t\t\t\tif(event.type == 'mouseenter'){\n\t\t\t\t\tif(!sticky){ \n\t\t\t\t\t\tGritter._restoreItemIfFading($(this), number);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(!sticky){\n\t\t\t\t\t\tGritter._setFadeTimer($(this), number);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tGritter._hoverState($(this), event.type);\n\t\t\t});\n\t\t\t\n\t\t\t// Clicking (X) makes the perdy thing close\n\t\t\t$(item).find('.gritter-close').click(function(){\n\t\t\t\tGritter.removeSpecific(number, {}, null, true);\n\t\t\t});\n\t\t\t\n\t\t\treturn number;\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* If we don't have any more gritter notifications, get rid of the wrapper using this check\n\t\t* @private\n\t\t* @param {Integer} unique_id The ID of the element that was just deleted, use it for a callback\n\t\t* @param {Object} e The jQuery element that we're going to perform the remove() action on\n\t\t* @param {Boolean} manual_close Did we close the gritter dialog with the (X) button\n\t\t*/\n\t\t_countRemoveWrapper: function(unique_id, e, manual_close){\n\t\t\t\n\t\t\t// Remove it then run the callback function\n\t\t\te.remove();\n\t\t\tthis['_after_close_' + unique_id](e, manual_close);\n\t\t\t\n\t\t\t// Check if the wrapper is empty, if it is.. remove the wrapper\n\t\t\tif($('.gritter-item-wrapper').length == 0){\n\t\t\t\t$('#gritter-notice-wrapper').remove();\n\t\t\t}\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Fade out an element after it's been on the screen for x amount of time\n\t\t* @private\n\t\t* @param {Object} e The jQuery element to get rid of\n\t\t* @param {Integer} unique_id The id of the element to remove\n\t\t* @param {Object} params An optional list of params to set fade speeds etc.\n\t\t* @param {Boolean} unbind_events Unbind the mouseenter/mouseleave events if they click (X)\n\t\t*/\n\t\t_fade: function(e, unique_id, params, unbind_events){\n\n\t\t\tvar params = params || {},\n\t\t\t\tfade = (typeof(params.fade) != 'undefined') ? params.fade : true,\n\t\t\t\tfade_out_speed = params.speed || this.fade_out_speed,\n\t\t\t\tmanual_close = unbind_events;\n\n\t\t\tthis['_before_close_' + unique_id](e, manual_close);\n\t\t\t\n\t\t\t// If this is true, then we are coming from clicking the (X)\n\t\t\tif(unbind_events){\n\t\t\t\te.unbind('mouseenter mouseleave');\n\t\t\t}\n\t\t\t\n\t\t\t// Fade it out or remove it\n\t\t\tif(fade){\n\t\t\t\n\t\t\t\te.animate({\n\t\t\t\t\topacity: 0\n\t\t\t\t}, fade_out_speed, function(){\n\t\t\t\t\te.animate({ height: 0 }, 300, function(){\n\t\t\t\t\t\tGritter._countRemoveWrapper(unique_id, e, manual_close);\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\tthis._countRemoveWrapper(unique_id, e);\n\t\t\t\t\n\t\t\t}\n\t\t\t\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Perform actions based on the type of bind (mouseenter, mouseleave) \n\t\t* @private\n\t\t* @param {Object} e The jQuery element\n\t\t* @param {String} type The type of action we're performing: mouseenter or mouseleave\n\t\t*/\n\t\t_hoverState: function(e, type){\n\t\t\t\n\t\t\t// Change the border styles and add the (X) close button when you hover\n\t\t\tif(type == 'mouseenter'){\n\t\t\t\t\n\t\t\t\te.addClass('hover');\n\t\t\t\t\n\t\t\t\t// Show close button\n\t\t\t\te.find('.gritter-close').show();\n\t\t\t\t\t\t\n\t\t\t}\n\t\t\t// Remove the border styles and hide (X) close button when you mouse out\n\t\t\telse {\n\t\t\t\t\n\t\t\t\te.removeClass('hover');\n\t\t\t\t\n\t\t\t\t// Hide close button\n\t\t\t\te.find('.gritter-close').hide();\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Remove a specific notification based on an ID\n\t\t* @param {Integer} unique_id The ID used to delete a specific notification\n\t\t* @param {Object} params A set of options passed in to determine how to get rid of it\n\t\t* @param {Object} e The jQuery element that we're \"fading\" then removing\n\t\t* @param {Boolean} unbind_events If we clicked on the (X) we set this to true to unbind mouseenter/mouseleave\n\t\t*/\n\t\tremoveSpecific: function(unique_id, params, e, unbind_events){\n\t\t\t\n\t\t\tif(!e){\n\t\t\t\tvar e = $('#gritter-item-' + unique_id);\n\t\t\t}\n\n\t\t\t// We set the fourth param to let the _fade function know to \n\t\t\t// unbind the \"mouseleave\" event.  Once you click (X) there's no going back!\n\t\t\tthis._fade(e, unique_id, params || {}, unbind_events);\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* If the item is fading out and we hover over it, restore it!\n\t\t* @private\n\t\t* @param {Object} e The HTML element to remove\n\t\t* @param {Integer} unique_id The ID of the element\n\t\t*/\n\t\t_restoreItemIfFading: function(e, unique_id){\n\t\t\t\n\t\t\tclearTimeout(this['_int_id_' + unique_id]);\n\t\t\te.stop().css({ opacity: '', height: '' });\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Setup the global options - only once\n\t\t* @private\n\t\t*/\n\t\t_runSetup: function(){\n\t\t\n\t\t\tfor(opt in $.gritter.options){\n\t\t\t\tthis[opt] = $.gritter.options[opt];\n\t\t\t}\n\t\t\tthis._is_setup = 1;\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Set the notification to fade out after a certain amount of time\n\t\t* @private\n\t\t* @param {Object} item The HTML element we're dealing with\n\t\t* @param {Integer} unique_id The ID of the element\n\t\t*/\n\t\t_setFadeTimer: function(e, unique_id){\n\t\t\t\n\t\t\tvar timer_str = (this._custom_timer) ? this._custom_timer : this.time;\n\t\t\tthis['_int_id_' + unique_id] = setTimeout(function(){ \n\t\t\t\tGritter._fade(e, unique_id);\n\t\t\t}, timer_str);\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Bring everything to a halt\n\t\t* @param {Object} params A list of callback functions to pass when all notifications are removed\n\t\t*/  \n\t\tstop: function(params){\n\t\t\t\n\t\t\t// callbacks (if passed)\n\t\t\tvar before_close = ($.isFunction(params.before_close)) ? params.before_close : function(){};\n\t\t\tvar after_close = ($.isFunction(params.after_close)) ? params.after_close : function(){};\n\t\t\t\n\t\t\tvar wrap = $('#gritter-notice-wrapper');\n\t\t\tbefore_close(wrap);\n\t\t\twrap.fadeOut(function(){\n\t\t\t\t$(this).remove();\n\t\t\t\tafter_close();\n\t\t\t});\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* An extremely handy PHP function ported to JS, works well for templating\n\t\t* @private\n\t\t* @param {String/Array} search A list of things to search for\n\t\t* @param {String/Array} replace A list of things to replace the searches with\n\t\t* @return {String} sa The output\n\t\t*/  \n\t\t_str_replace: function(search, replace, subject, count){\n\t\t\n\t\t\tvar i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,\n\t\t\t\tf = [].concat(search),\n\t\t\t\tr = [].concat(replace),\n\t\t\t\ts = subject,\n\t\t\t\tra = r instanceof Array, sa = s instanceof Array;\n\t\t\ts = [].concat(s);\n\t\t\t\n\t\t\tif(count){\n\t\t\t\tthis.window[count] = 0;\n\t\t\t}\n\t\t\n\t\t\tfor(i = 0, sl = s.length; i < sl; i++){\n\t\t\t\t\n\t\t\t\tif(s[i] === ''){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (j = 0, fl = f.length; j < fl; j++){\n\t\t\t\t\t\n\t\t\t\t\ttemp = s[i] + '';\n\t\t\t\t\trepl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];\n\t\t\t\t\ts[i] = (temp).split(f[j]).join(repl);\n\t\t\t\t\t\n\t\t\t\t\tif(count && s[i] !== temp){\n\t\t\t\t\t\tthis.window[count] += (temp.length-s[i].length) / f[j].length;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn sa ? s : s[0];\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* A check to make sure we have something to wrap our notices with\n\t\t* @private\n\t\t*/  \n\t\t_verifyWrapper: function(){\n\t\t  \n\t\t\tif($('#gritter-notice-wrapper').length == 0){\n\t\t\t\t$('body').append(this._tpl_wrap);\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t}\n\t\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.css",
    "content": ".easyPieChart {\n    position: relative;\n    text-align: center;\n}\n\n.easyPieChart canvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.js",
    "content": "// Generated by CoffeeScript 1.4.0\n\n/*\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n*/\n\n\n(function() {\n\n  (function($) {\n    $.easyPieChart = function(el, options) {\n      var addScaleLine, animateLine, drawLine, easeInOutQuad, renderBackground, renderScale, renderTrack,\n        _this = this;\n      this.el = el;\n      this.$el = $(el);\n      this.$el.data(\"easyPieChart\", this);\n      this.init = function() {\n        var percent;\n        _this.options = $.extend({}, $.easyPieChart.defaultOptions, options);\n        percent = parseInt(_this.$el.data('percent'), 10);\n        _this.percentage = 0;\n        _this.canvas = $(\"<canvas width='\" + _this.options.size + \"' height='\" + _this.options.size + \"'></canvas>\").get(0);\n        _this.$el.append(_this.canvas);\n        if (typeof G_vmlCanvasManager !== \"undefined\" && G_vmlCanvasManager !== null) {\n          G_vmlCanvasManager.initElement(_this.canvas);\n        }\n        _this.ctx = _this.canvas.getContext('2d');\n        if (window.devicePixelRatio > 1.5) {\n          $(_this.canvas).css({\n            width: _this.options.size,\n            height: _this.options.size\n          });\n          _this.canvas.width *= 2;\n          _this.canvas.height *= 2;\n          _this.ctx.scale(2, 2);\n        }\n        _this.ctx.translate(_this.options.size / 2, _this.options.size / 2);\n        _this.$el.addClass('easyPieChart');\n        _this.$el.css({\n          width: _this.options.size,\n          height: _this.options.size,\n          lineHeight: \"\" + _this.options.size + \"px\"\n        });\n        _this.update(percent);\n        return _this;\n      };\n      this.update = function(percent) {\n        if (_this.options.animate === false) {\n          return drawLine(percent);\n        } else {\n          return animateLine(_this.percentage, percent);\n        }\n      };\n      renderScale = function() {\n        var i, _i, _results;\n        _this.ctx.fillStyle = _this.options.scaleColor;\n        _this.ctx.lineWidth = 1;\n        _results = [];\n        for (i = _i = 0; _i <= 24; i = ++_i) {\n          _results.push(addScaleLine(i));\n        }\n        return _results;\n      };\n      addScaleLine = function(i) {\n        var offset;\n        offset = i % 6 === 0 ? 0 : _this.options.size * 0.017;\n        _this.ctx.save();\n        _this.ctx.rotate(i * Math.PI / 12);\n        _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1);\n        return _this.ctx.restore();\n      };\n      renderTrack = function() {\n        var offset;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true);\n        _this.ctx.closePath();\n        _this.ctx.strokeStyle = _this.options.trackColor;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        return _this.ctx.stroke();\n      };\n      renderBackground = function() {\n        if (_this.options.scaleColor !== false) {\n          renderScale();\n        }\n        if (_this.options.trackColor !== false) {\n          return renderTrack();\n        }\n      };\n      drawLine = function(percent) {\n        var offset;\n        renderBackground();\n        _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor;\n        _this.ctx.lineCap = _this.options.lineCap;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.save();\n        _this.ctx.rotate(-Math.PI / 2);\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false);\n        _this.ctx.stroke();\n        return _this.ctx.restore();\n      };\n      animateLine = function(from, to) {\n        var currentStep, fps, steps;\n        fps = 30;\n        steps = fps * _this.options.animate / 1000;\n        currentStep = 0;\n        _this.options.onStart.call(_this);\n        _this.percentage = to;\n        if (_this.animation) {\n          clearInterval(_this.animation);\n          _this.animation = false;\n        }\n        return _this.animation = setInterval(function() {\n          _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size);\n          renderBackground.call(_this);\n          drawLine.call(_this, [easeInOutQuad(currentStep, from, to - from, steps)]);\n          currentStep++;\n          if ((currentStep / steps) > 1) {\n            clearInterval(_this.animation);\n            _this.animation = false;\n            return _this.options.onStop.call(_this);\n          }\n        }, 1000 / fps);\n      };\n      easeInOutQuad = function(t, b, c, d) {\n        var easeIn, easing;\n        easeIn = function(t) {\n          return Math.pow(t, 2);\n        };\n        easing = function(t) {\n          if (t < 1) {\n            return easeIn(t);\n          } else {\n            return 2 - easeIn((t / 2) * -2 + 2);\n          }\n        };\n        t /= d / 2;\n        return c / 2 * easing(t) + b;\n      };\n      return this.init();\n    };\n    $.easyPieChart.defaultOptions = {\n      barColor: '#ef1e25',\n      trackColor: '#f2f2f2',\n      scaleColor: '#dfe0e0',\n      lineCap: 'round',\n      size: 110,\n      lineWidth: 3,\n      animate: false,\n      onStart: $.noop,\n      onStop: $.noop\n    };\n    $.fn.easyPieChart = function(options) {\n      return $.each(this, function(i, el) {\n        var $el;\n        $el = $(el);\n        if (!$el.data('easyPieChart')) {\n          return $el.data('easyPieChart', new $.easyPieChart(el, options));\n        }\n      });\n    };\n    return void 0;\n  })(jQuery);\n\n}).call(this);\n"
  },
  {
    "path": "src/main/webapp/assets/jquery-tags-input/jquery.tagsinput.css",
    "content": "div.tagsinput { border:1px solid #CCC; background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto;}\ndiv.tagsinput span.tag { border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica;  font-size:13px;}\ndiv.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px;  } \ndiv.tagsinput input { width:80px; margin:0px; font-family: helvetica; font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px;  margin-right:5px; margin-bottom:5px; }\ndiv.tagsinput div { display:block; float: left; } \n.tags_clear { clear: both; width: 100%; height: 0px; }\n.not_valid {background: #FBD8DB !important; color: #90111A !important;}\n"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/data/jquery.vmap.sampledata.js",
    "content": "var sample_data = {\"af\":\"16.63\",\"al\":\"11.58\",\"dz\":\"158.97\",\"ao\":\"85.81\",\"ag\":\"1.1\",\"ar\":\"351.02\",\"am\":\"8.83\",\"au\":\"1219.72\",\"at\":\"366.26\",\"az\":\"52.17\",\"bs\":\"7.54\",\"bh\":\"21.73\",\"bd\":\"105.4\",\"bb\":\"3.96\",\"by\":\"52.89\",\"be\":\"461.33\",\"bz\":\"1.43\",\"bj\":\"6.49\",\"bt\":\"1.4\",\"bo\":\"19.18\",\"ba\":\"16.2\",\"bw\":\"12.5\",\"br\":\"2023.53\",\"bn\":\"11.96\",\"bg\":\"44.84\",\"bf\":\"8.67\",\"bi\":\"1.47\",\"kh\":\"11.36\",\"cm\":\"21.88\",\"ca\":\"1563.66\",\"cv\":\"1.57\",\"cf\":\"2.11\",\"td\":\"7.59\",\"cl\":\"199.18\",\"cn\":\"5745.13\",\"co\":\"283.11\",\"km\":\"0.56\",\"cd\":\"12.6\",\"cg\":\"11.88\",\"cr\":\"35.02\",\"ci\":\"22.38\",\"hr\":\"59.92\",\"cy\":\"22.75\",\"cz\":\"195.23\",\"dk\":\"304.56\",\"dj\":\"1.14\",\"dm\":\"0.38\",\"do\":\"50.87\",\"ec\":\"61.49\",\"eg\":\"216.83\",\"sv\":\"21.8\",\"gq\":\"14.55\",\"er\":\"2.25\",\"ee\":\"19.22\",\"et\":\"30.94\",\"fj\":\"3.15\",\"fi\":\"231.98\",\"fr\":\"2555.44\",\"ga\":\"12.56\",\"gm\":\"1.04\",\"ge\":\"11.23\",\"de\":\"3305.9\",\"gh\":\"18.06\",\"gr\":\"305.01\",\"gd\":\"0.65\",\"gt\":\"40.77\",\"gn\":\"4.34\",\"gw\":\"0.83\",\"gy\":\"2.2\",\"ht\":\"6.5\",\"hn\":\"15.34\",\"hk\":\"226.49\",\"hu\":\"132.28\",\"is\":\"12.77\",\"in\":\"1430.02\",\"id\":\"695.06\",\"ir\":\"337.9\",\"iq\":\"84.14\",\"ie\":\"204.14\",\"il\":\"201.25\",\"it\":\"2036.69\",\"jm\":\"13.74\",\"jp\":\"5390.9\",\"jo\":\"27.13\",\"kz\":\"129.76\",\"ke\":\"32.42\",\"ki\":\"0.15\",\"kr\":\"986.26\",\"undefined\":\"5.73\",\"kw\":\"117.32\",\"kg\":\"4.44\",\"la\":\"6.34\",\"lv\":\"23.39\",\"lb\":\"39.15\",\"ls\":\"1.8\",\"lr\":\"0.98\",\"ly\":\"77.91\",\"lt\":\"35.73\",\"lu\":\"52.43\",\"mk\":\"9.58\",\"mg\":\"8.33\",\"mw\":\"5.04\",\"my\":\"218.95\",\"mv\":\"1.43\",\"ml\":\"9.08\",\"mt\":\"7.8\",\"mr\":\"3.49\",\"mu\":\"9.43\",\"mx\":\"1004.04\",\"md\":\"5.36\",\"mn\":\"5.81\",\"me\":\"3.88\",\"ma\":\"91.7\",\"mz\":\"10.21\",\"mm\":\"35.65\",\"na\":\"11.45\",\"np\":\"15.11\",\"nl\":\"770.31\",\"nz\":\"138\",\"ni\":\"6.38\",\"ne\":\"5.6\",\"ng\":\"206.66\",\"no\":\"413.51\",\"om\":\"53.78\",\"pk\":\"174.79\",\"pa\":\"27.2\",\"pg\":\"8.81\",\"py\":\"17.17\",\"pe\":\"153.55\",\"ph\":\"189.06\",\"pl\":\"438.88\",\"pt\":\"223.7\",\"qa\":\"126.52\",\"ro\":\"158.39\",\"ru\":\"1476.91\",\"rw\":\"5.69\",\"ws\":\"0.55\",\"st\":\"0.19\",\"sa\":\"434.44\",\"sn\":\"12.66\",\"rs\":\"38.92\",\"sc\":\"0.92\",\"sl\":\"1.9\",\"sg\":\"217.38\",\"sk\":\"86.26\",\"si\":\"46.44\",\"sb\":\"0.67\",\"za\":\"354.41\",\"es\":\"1374.78\",\"lk\":\"48.24\",\"kn\":\"0.56\",\"lc\":\"1\",\"vc\":\"0.58\",\"sd\":\"65.93\",\"sr\":\"3.3\",\"sz\":\"3.17\",\"se\":\"444.59\",\"ch\":\"522.44\",\"sy\":\"59.63\",\"tw\":\"426.98\",\"tj\":\"5.58\",\"tz\":\"22.43\",\"th\":\"312.61\",\"tl\":\"0.62\",\"tg\":\"3.07\",\"to\":\"0.3\",\"tt\":\"21.2\",\"tn\":\"43.86\",\"tr\":\"729.05\",\"tm\":0,\"ug\":\"17.12\",\"ua\":\"136.56\",\"ae\":\"239.65\",\"gb\":\"2258.57\",\"us\":\"14624.18\",\"uy\":\"40.71\",\"uz\":\"37.72\",\"vu\":\"0.72\",\"ve\":\"285.21\",\"vn\":\"101.99\",\"ye\":\"30.02\",\"zm\":\"15.69\",\"zw\":\"5.57\"};"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/jquery.vmap.js",
    "content": "/*!\n * jQVMap Version 1.0\n *\n * http://jqvmap.com\n *\n * Copyright 2012, Peter Schmalfeldt <manifestinteractive@gmail.com>\n * Copyright 2011-2012, Kirill Lebedev\n * Licensed under the MIT license.\n *\n * Fork Me @ https://github.com/manifestinteractive/jqvmap\n */\n(function ($) {\n\n  var apiParams = {\n    colors: 1,\n    values: 1,\n    backgroundColor: 1,\n    scaleColors: 1,\n    normalizeFunction: 1,\n    enableZoom: 1,\n    showTooltip: 1,\n    borderColor: 1,\n    borderWidth: 1,\n    borderOpacity: 1,\n    selectedRegions: 1,\n    multiSelectRegion: 1\n  };\n\n  var apiEvents = {\n    onLabelShow: 'labelShow',\n    onRegionOver: 'regionMouseOver',\n    onRegionOut: 'regionMouseOut',\n    onRegionClick: 'regionClick',\n    onRegionSelect: 'regionSelect',\n    onRegionDeselect: 'regionDeselect'\n  };\n\n  $.fn.vectorMap = function (options) {\n\n    var defaultParams = {\n      map: 'world_en',\n      backgroundColor: '#a5bfdd',\n      color: '#f4f3f0',\n      hoverColor: '#c9dfaf',\n      selectedColor: '#c9dfaf',\n      scaleColors: ['#b6d6ff', '#005ace'],\n      normalizeFunction: 'linear',\n      enableZoom: true,\n      showTooltip: true,\n      borderColor: '#818181',\n      borderWidth: 1,\n      borderOpacity: 0.25,\n      selectedRegions: null,\n      multiSelectRegion: false\n    }, map = this.data('mapObject');\n\n    if (options === 'addMap') {\n      WorldMap.maps[arguments[1]] = arguments[2];\n    } else if (options === 'set' && apiParams[arguments[1]]) {\n      map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));\n    } else if (typeof options === 'string' &&\n               typeof map[options] === 'function') {\n      return map[options].apply(map, Array.prototype.slice.call(arguments, 1));\n    } else {\n      $.extend(defaultParams, options);\n      defaultParams.container = this;\n      this.css({ position: 'relative', overflow: 'hidden' });\n\n      map = new WorldMap(defaultParams);\n\n      this.data('mapObject', map);\n\n      for (var e in apiEvents) {\n        if (defaultParams[e]) {\n          this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);\n        }\n      }\n    }\n  };\n\n  var VectorCanvas = function (width, height, params) {\n    this.mode = window.SVGAngle ? 'svg' : 'vml';\n    this.params = params;\n\n    if (this.mode == 'svg') {\n      this.createSvgNode = function (nodeName) {\n        return document.createElementNS(this.svgns, nodeName);\n      };\n    } else {\n      try {\n        if (!document.namespaces.rvml) {\n          document.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n        }\n        this.createVmlNode = function (tagName) {\n          return document.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n        };\n      } catch (e) {\n        this.createVmlNode = function (tagName) {\n          return document.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n        };\n      }\n\n      document.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n    }\n\n    if (this.mode == 'svg') {\n      this.canvas = this.createSvgNode('svg');\n    } else {\n      this.canvas = this.createVmlNode('group');\n      this.canvas.style.position = 'absolute';\n    }\n\n    this.setSize(width, height);\n  };\n\n  VectorCanvas.prototype = {\n    svgns: \"http://www.w3.org/2000/svg\",\n    mode: 'svg',\n    width: 0,\n    height: 0,\n    canvas: null,\n\n    setSize: function (width, height) {\n      if (this.mode == 'svg') {\n        this.canvas.setAttribute('width', width);\n        this.canvas.setAttribute('height', height);\n      } else {\n        this.canvas.style.width = width + \"px\";\n        this.canvas.style.height = height + \"px\";\n        this.canvas.coordsize = width + ' ' + height;\n        this.canvas.coordorigin = \"0 0\";\n        if (this.rootGroup) {\n          var pathes = this.rootGroup.getElementsByTagName('shape');\n          for (var i = 0, l = pathes.length; i < l; i++) {\n            pathes[i].coordsize = width + ' ' + height;\n            pathes[i].style.width = width + 'px';\n            pathes[i].style.height = height + 'px';\n          }\n          this.rootGroup.coordsize = width + ' ' + height;\n          this.rootGroup.style.width = width + 'px';\n          this.rootGroup.style.height = height + 'px';\n        }\n      }\n      this.width = width;\n      this.height = height;\n    },\n\n    createPath: function (config) {\n      var node;\n      if (this.mode == 'svg') {\n        node = this.createSvgNode('path');\n        node.setAttribute('d', config.path);\n\n        if (this.params.borderColor !== null) {\n          node.setAttribute('stroke', this.params.borderColor);\n        }\n        if (this.params.borderWidth > 0) {\n          node.setAttribute('stroke-width', this.params.borderWidth);\n          node.setAttribute('stroke-linecap', 'round');\n          node.setAttribute('stroke-linejoin', 'round');\n        }\n        if (this.params.borderOpacity > 0) {\n          node.setAttribute('stroke-opacity', this.params.borderOpacity);\n        }\n\n        node.setFill = function (color) {\n          this.setAttribute(\"fill\", color);\n          if (this.getAttribute(\"original\") === null) {\n            this.setAttribute(\"original\", color);\n          }\n        };\n\n        node.getFill = function (color) {\n          return this.getAttribute(\"fill\");\n        };\n\n        node.getOriginalFill = function () {\n          return this.getAttribute(\"original\");\n        };\n\n        node.setOpacity = function (opacity) {\n          this.setAttribute('fill-opacity', opacity);\n        };\n      } else {\n        node = this.createVmlNode('shape');\n        node.coordorigin = \"0 0\";\n        node.coordsize = this.width + ' ' + this.height;\n        node.style.width = this.width + 'px';\n        node.style.height = this.height + 'px';\n        node.fillcolor = WorldMap.defaultFillColor;\n        node.stroked = false;\n        node.path = VectorCanvas.pathSvgToVml(config.path);\n\n        var scale = this.createVmlNode('skew');\n        scale.on = true;\n        scale.matrix = '0.01,0,0,0.01,0,0';\n        scale.offset = '0,0';\n\n        node.appendChild(scale);\n\n        var fill = this.createVmlNode('fill');\n        node.appendChild(fill);\n\n        node.setFill = function (color) {\n          this.getElementsByTagName('fill')[0].color = color;\n          if (this.getAttribute(\"original\") === null) {\n            this.setAttribute(\"original\", color);\n          }\n        };\n\n        node.getFill = function (color) {\n          return this.getElementsByTagName('fill')[0].color;\n        };\n        node.getOriginalFill = function () {\n          return this.getAttribute(\"original\");\n        };\n        node.setOpacity = function (opacity) {\n          this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';\n        };\n      }\n      return node;\n    },\n\n    createGroup: function (isRoot) {\n      var node;\n      if (this.mode == 'svg') {\n        node = this.createSvgNode('g');\n      } else {\n        node = this.createVmlNode('group');\n        node.style.width = this.width + 'px';\n        node.style.height = this.height + 'px';\n        node.style.left = '0px';\n        node.style.top = '0px';\n        node.coordorigin = \"0 0\";\n        node.coordsize = this.width + ' ' + this.height;\n      }\n\n      if (isRoot) {\n        this.rootGroup = node;\n      }\n      return node;\n    },\n\n    applyTransformParams: function (scale, transX, transY) {\n      if (this.mode == 'svg') {\n        this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');\n      } else {\n        this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);\n        this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;\n      }\n    }\n  };\n\n  VectorCanvas.pathSvgToVml = function (path) {\n    var result = '';\n    var cx = 0, cy = 0, ctrlx, ctrly;\n\n    return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\\d+)?(?:\\.\\d+)?,?\\s?)+)/g, function (segment, letter, coords, index) {\n      coords = coords.replace(/(\\d)-/g, '$1,-').replace(/\\s+/g, ',').split(',');\n      if (!coords[0]) {\n        coords.shift();\n      }\n\n      for (var i = 0, l = coords.length; i < l; i++) {\n        coords[i] = Math.round(100 * coords[i]);\n      }\n\n      switch (letter) {\n      case 'm':\n        cx += coords[0];\n        cy += coords[1];\n        return 't' + coords.join(',');\n        break;\n\n      case 'M':\n        cx = coords[0];\n        cy = coords[1];\n        return 'm' + coords.join(',');\n        break;\n\n      case 'l':\n        cx += coords[0];\n        cy += coords[1];\n        return 'r' + coords.join(',');\n        break;\n\n      case 'L':\n        cx = coords[0];\n        cy = coords[1];\n        return 'l' + coords.join(',');\n        break;\n\n      case 'h':\n        cx += coords[0];\n        return 'r' + coords[0] + ',0';\n        break;\n\n      case 'H':\n        cx = coords[0];\n        return 'l' + cx + ',' + cy;\n        break;\n\n      case 'v':\n        cy += coords[0];\n        return 'r0,' + coords[0];\n        break;\n\n      case 'V':\n        cy = coords[0];\n        return 'l' + cx + ',' + cy;\n        break;\n\n      case 'c':\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n        break;\n\n      case 'C':\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n        break;\n\n      case 's':\n        coords.unshift(cy - ctrly);\n        coords.unshift(cx - ctrlx);\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n        break;\n\n      case 'S':\n        coords.unshift(cy + cy - ctrly);\n        coords.unshift(cx + cx - ctrlx);\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n        break;\n\n      default:\n        return false;\n        break;\n      }\n\n      return '';\n\n    }).replace(/z/g, '');\n  };\n\n  var WorldMap = function (params) {\n    params = params || {};\n    var map = this;\n    var mapData = WorldMap.maps[params.map];\n\n    this.selectedRegions = [];\n    this.multiSelectRegion = params.multiSelectRegion;\n\n    this.container = params.container;\n\n    this.defaultWidth = mapData.width;\n    this.defaultHeight = mapData.height;\n\n    this.color = params.color;\n    this.selectedColor = params.selectedColor;\n    this.hoverColor = params.hoverColor;\n    this.hoverOpacity = params.hoverOpacity;\n    this.setBackgroundColor(params.backgroundColor);\n\n    this.width = params.container.width();\n    this.height = params.container.height();\n\n    this.resize();\n\n    jQuery(window).resize(function () {\n      map.width = params.container.width();\n      map.height = params.container.height();\n      map.resize();\n      map.canvas.setSize(map.width, map.height);\n      map.applyTransform();\n    });\n\n    this.canvas = new VectorCanvas(this.width, this.height, params);\n    params.container.append(this.canvas.canvas);\n\n    this.makeDraggable();\n\n    this.rootGroup = this.canvas.createGroup(true);\n\n    this.index = WorldMap.mapIndex;\n    this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body'));\n\n    if (params.enableZoom) {\n      jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);\n      jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container);\n    }\n\n    map.countries = [];\n\n    for (var key in mapData.pathes) {\n      var path = this.canvas.createPath({\n        path: mapData.pathes[key].path\n      });\n\n      path.setFill(this.color);\n      path.id = map.getCountryId(key);\n      map.countries[key] = path;\n\n      if (this.canvas.mode == 'svg') {\n        path.setAttribute('class', 'jvectormap-region');\n      } else {\n        jQuery(path).addClass('jvectormap-region');\n      }\n\n      jQuery(this.rootGroup).append(path);\n    }\n\n    jQuery(params.container).delegate(this.canvas.mode == 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {\n      var path = e.target,\n      code = e.target.id.split('_').pop(),\n      labelShowEvent = $.Event('labelShow.jqvmap'),\n      regionMouseOverEvent = $.Event('regionMouseOver.jqvmap');\n\n      if (e.type == 'mouseover') {\n        jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.pathes[code].name]);\n        if (!regionMouseOverEvent.isDefaultPrevented()) {\n          map.highlight(code, path);\n        }\n        if (params.showTooltip) {\n          map.label.text(mapData.pathes[code].name);\n          jQuery(params.container).trigger(labelShowEvent, [map.label, code]);\n\n          if (!labelShowEvent.isDefaultPrevented()) {\n            map.label.show();\n            map.labelWidth = map.label.width();\n            map.labelHeight = map.label.height();\n          }\n        }\n      } else {\n        map.unhighlight(code, path);\n\n        map.label.hide();\n        jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.pathes[code].name]);\n      }\n    });\n\n    jQuery(params.container).delegate(this.canvas.mode == 'svg' ? 'path' : 'shape', 'click', function (e) {\n      if (!params.multiSelectRegion) {\n        for (var key in mapData.pathes) {\n          map.countries[key].currentFillColor = map.countries[key].getOriginalFill();\n          map.countries[key].setFill(map.countries[key].getOriginalFill());\n        }\n      }\n\n      var path = e.target;\n      var code = e.target.id.split('_').pop();\n\n      jQuery(params.container).trigger('regionClick.jqvmap', [code, mapData.pathes[code].name]);\n\n      if (map.selectedRegions.indexOf(code) !== -1) {\n        map.deselect(code, path);\n      } else {\n        map.select(code, path);\n      }\n\n      //console.log(selectedRegions);\n\n    });\n\n    if (params.showTooltip) {\n      params.container.mousemove(function (e) {\n        if (map.label.is(':visible')) {\n          map.label.css({\n            left: e.pageX - 15 - map.labelWidth,\n            top: e.pageY - 15 - map.labelHeight\n          });\n        }\n      });\n    }\n\n    this.setColors(params.colors);\n\n    this.canvas.canvas.appendChild(this.rootGroup);\n\n    this.applyTransform();\n\n    this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);\n\n    if (params.values) {\n      this.values = params.values;\n      this.setValues(params.values);\n    }\n\n    if (params.selectedRegions) {\n      if (params.selectedRegions instanceof Array) {\n        for(var k in params.selectedRegions) {\n          this.select(params.selectedRegions[k].toLowerCase());\n        }\n      } else {\n        this.select(params.selectedRegions.toLowerCase());\n      }\n    }\n\n    this.bindZoomButtons();\n\n    WorldMap.mapIndex++;\n  };\n\n  WorldMap.prototype = {\n    transX: 0,\n    transY: 0,\n    scale: 1,\n    baseTransX: 0,\n    baseTransY: 0,\n    baseScale: 1,\n    width: 0,\n    height: 0,\n    countries: {},\n    countriesColors: {},\n    countriesData: {},\n    zoomStep: 1.4,\n    zoomMaxStep: 4,\n    zoomCurStep: 1,\n\n    setColors: function (key, color) {\n      if (typeof key == 'string') {\n        this.countries[key].setFill(color);\n        this.countries[key].setAttribute(\"original\", color);\n      } else {\n        var colors = key;\n\n        for (var code in colors) {\n          if (this.countries[code]) {\n            this.countries[code].setFill(colors[code]);\n            this.countries[code].setAttribute(\"original\", colors[code]);\n          }\n        }\n      }\n    },\n\n    setValues: function (values) {\n      var max = 0,\n      min = Number.MAX_VALUE,\n      val;\n\n      for (var cc in values) {\n        val = parseFloat(values[cc]);\n        if (val > max) {\n          max = values[cc];\n        }\n        if (val && val < min) {\n          min = val;\n        }\n      }\n\n      this.colorScale.setMin(min);\n      this.colorScale.setMax(max);\n\n      var colors = {};\n      for (cc in values) {\n        val = parseFloat(values[cc]);\n        if (val) {\n          colors[cc] = this.colorScale.getColor(val);\n        } else {\n          colors[cc] = this.color;\n        }\n      }\n      this.setColors(colors);\n      this.values = values;\n    },\n\n    setBackgroundColor: function (backgroundColor) {\n      this.container.css('background-color', backgroundColor);\n    },\n\n    setScaleColors: function (colors) {\n      this.colorScale.setColors(colors);\n\n      if (this.values) {\n        this.setValues(this.values);\n      }\n    },\n\n    setNormalizeFunction: function (f) {\n      this.colorScale.setNormalizeFunction(f);\n\n      if (this.values) {\n        this.setValues(this.values);\n      }\n    },\n\n    highlight: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if (this.hoverOpacity) {\n        path.setOpacity(this.hoverOpacity);\n      } else if (this.hoverColor) {\n        path.currentFillColor = path.getFill() + '';\n        path.setFill(this.hoverColor);\n      }\n    },\n\n    unhighlight: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      path.setOpacity(1);\n      if (path.currentFillColor) {\n        path.setFill(path.currentFillColor);\n      }\n    },\n\n    select: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if(this.selectedRegions.indexOf(cc) < 0) {\n        if (this.multiSelectRegion) {\n          this.selectedRegions.push(cc);\n        } else {\n          this.selectedRegions = [cc];\n        }\n        // MUST BE after the change of selectedRegions\n        // Otherwise, we might loop\n        $(this.container).trigger('regionSelect.jqvmap', [cc]);\n        if (this.selectedColor) {\n          path.currentFillColor = this.selectedColor;\n          path.setFill(this.selectedColor);\n        }\n      }\n    },\n\n    deselect: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if(this.selectedRegions.indexOf(cc) >= 0) {\n        this.selectedRegions.splice(this.selectedRegions.indexOf(cc), 1);\n        // MUST BE after the change of selectedRegions\n        // Otherwise, we might loop\n        $(this.container).trigger('regionDeselect.jqvmap', [cc]);\n        path.currentFillColor = path.getOriginalFill();\n        path.setFill(path.getOriginalFill());\n      }\n    },\n\n    isSelected: function(cc) {\n      return this.selectedRegions.indexOf(cc) >= 0;\n    },\n\n    resize: function () {\n      var curBaseScale = this.baseScale;\n      if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n        this.baseScale = this.height / this.defaultHeight;\n        this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n      } else {\n        this.baseScale = this.width / this.defaultWidth;\n        this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n      }\n      this.scale *= this.baseScale / curBaseScale;\n      this.transX *= this.baseScale / curBaseScale;\n      this.transY *= this.baseScale / curBaseScale;\n    },\n\n    reset: function () {\n      this.countryTitle.reset();\n      for (var key in this.countries) {\n        this.countries[key].setFill(WorldMap.defaultColor);\n      }\n      this.scale = this.baseScale;\n      this.transX = this.baseTransX;\n      this.transY = this.baseTransY;\n      this.applyTransform();\n    },\n\n    applyTransform: function () {\n      var maxTransX, maxTransY, minTransX, minTransY;\n      if (this.defaultWidth * this.scale <= this.width) {\n        maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n        minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n      } else {\n        maxTransX = 0;\n        minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n      }\n\n      if (this.defaultHeight * this.scale <= this.height) {\n        maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n        minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n      } else {\n        maxTransY = 0;\n        minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n      }\n\n      if (this.transY > maxTransY) {\n        this.transY = maxTransY;\n      }\n      else if (this.transY < minTransY) {\n        this.transY = minTransY;\n      }\n      if (this.transX > maxTransX) {\n        this.transX = maxTransX;\n      }\n      else if (this.transX < minTransX) {\n        this.transX = minTransX;\n      }\n\n      this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n    },\n\n    makeDraggable: function () {\n      var mouseDown = false;\n      var oldPageX, oldPageY;\n      var self = this;\n\n      self.isMoving = false;\n      self.isMovingTimeout = false;\n\n      this.container.mousemove(function (e) {\n\n        if (mouseDown) {\n          var curTransX = self.transX;\n          var curTransY = self.transY;\n\n          self.transX -= (oldPageX - e.pageX) / self.scale;\n          self.transY -= (oldPageY - e.pageY) / self.scale;\n\n          self.applyTransform();\n\n          oldPageX = e.pageX;\n          oldPageY = e.pageY;\n\n          self.isMoving = true;\n          if (self.isMovingTimeout) {\n            clearTimeout(self.isMovingTimeout);\n          }\n        }\n\n        return false;\n\n      }).mousedown(function (e) {\n\n        mouseDown = true;\n        oldPageX = e.pageX;\n        oldPageY = e.pageY;\n\n        return false;\n\n      }).mouseup(function () {\n\n        mouseDown = false;\n\n        self.isMovingTimeout = setTimeout(function () {\n          self.isMoving = false;\n        }, 100);\n\n        return false;\n\n      });\n    },\n\n    bindZoomButtons: function () {\n      var map = this;\n      var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);\n\n      this.container.find('.jqvmap-zoomin').click(function () {\n        if (map.zoomCurStep < map.zoomMaxStep) {\n          var curTransX = map.transX;\n          var curTransY = map.transY;\n          var curScale = map.scale;\n\n          map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;\n          map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;\n          map.setScale(map.scale * map.zoomStep);\n          map.zoomCurStep++;\n\n          jQuery('#zoomSlider').css('top', parseInt(jQuery('#zoomSlider').css('top'), 10) - sliderDelta);\n        }\n      });\n\n      this.container.find('.jqvmap-zoomout').click(function () {\n        if (map.zoomCurStep > 1) {\n          var curTransX = map.transX;\n          var curTransY = map.transY;\n          var curScale = map.scale;\n\n          map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;\n          map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;\n          map.setScale(map.scale / map.zoomStep);\n          map.zoomCurStep--;\n\n          jQuery('#zoomSlider').css('top', parseInt(jQuery('#zoomSlider').css('top'), 10) + sliderDelta);\n        }\n      });\n    },\n\n    setScale: function (scale) {\n      this.scale = scale;\n      this.applyTransform();\n    },\n\n    getCountryId: function (cc) {\n      return 'jqvmap' + this.index + '_' + cc;\n    }\n  };\n\n  WorldMap.xlink = \"http://www.w3.org/1999/xlink\";\n  WorldMap.mapIndex = 1;\n  WorldMap.maps = {};\n\n  var ColorScale = function (colors, normalizeFunction, minValue, maxValue) {\n    if (colors) {\n      this.setColors(colors);\n    }\n    if (normalizeFunction) {\n      this.setNormalizeFunction(normalizeFunction);\n    }\n    if (minValue) {\n      this.setMin(minValue);\n    }\n    if (minValue) {\n      this.setMax(maxValue);\n    }\n  };\n\n  ColorScale.prototype = {\n    colors: [],\n\n    setMin: function (min) {\n      this.clearMinValue = min;\n\n      if (typeof this.normalize === 'function') {\n        this.minValue = this.normalize(min);\n      } else {\n        this.minValue = min;\n      }\n    },\n\n    setMax: function (max) {\n      this.clearMaxValue = max;\n      if (typeof this.normalize === 'function') {\n        this.maxValue = this.normalize(max);\n      } else {\n        this.maxValue = max;\n      }\n    },\n\n    setColors: function (colors) {\n      for (var i = 0; i < colors.length; i++) {\n        colors[i] = ColorScale.rgbToArray(colors[i]);\n      }\n      this.colors = colors;\n    },\n\n    setNormalizeFunction: function (f) {\n      if (f === 'polynomial') {\n        this.normalize = function (value) {\n          return Math.pow(value, 0.2);\n        };\n      }\n      else if (f === 'linear') {\n        delete this.normalize;\n      } else {\n        this.normalize = f;\n      }\n      this.setMin(this.clearMinValue);\n      this.setMax(this.clearMaxValue);\n    },\n\n    getColor: function (value) {\n      if (typeof this.normalize === 'function') {\n        value = this.normalize(value);\n      }\n\n      var lengthes = [];\n      var fullLength = 0;\n      var l;\n\n      for (var i = 0; i < this.colors.length - 1; i++) {\n        l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));\n        lengthes.push(l);\n        fullLength += l;\n      }\n\n      var c = (this.maxValue - this.minValue) / fullLength;\n\n      for (i = 0; i < lengthes.length; i++) {\n        lengthes[i] *= c;\n      }\n\n      i = 0;\n      value -= this.minValue;\n\n      while (value - lengthes[i] >= 0) {\n        value -= lengthes[i];\n        i++;\n      }\n\n      var color;\n      if (i == this.colors.length - 1) {\n        color = this.vectorToNum(this.colors[i]).toString(16);\n      } else {\n        color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);\n      }\n\n      while (color.length < 6) {\n        color = '0' + color;\n      }\n      return '#' + color;\n    },\n\n    vectorToNum: function (vector) {\n      var num = 0;\n      for (var i = 0; i < vector.length; i++) {\n        num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);\n      }\n      return num;\n    },\n\n    vectorSubtract: function (vector1, vector2) {\n      var vector = [];\n      for (var i = 0; i < vector1.length; i++) {\n        vector[i] = vector1[i] - vector2[i];\n      }\n      return vector;\n    },\n\n    vectorAdd: function (vector1, vector2) {\n      var vector = [];\n      for (var i = 0; i < vector1.length; i++) {\n        vector[i] = vector1[i] + vector2[i];\n      }\n      return vector;\n    },\n\n    vectorMult: function (vector, num) {\n      var result = [];\n      for (var i = 0; i < vector.length; i++) {\n        result[i] = vector[i] * num;\n      }\n      return result;\n    },\n\n    vectorLength: function (vector) {\n      var result = 0;\n      for (var i = 0; i < vector.length; i++) {\n        result += vector[i] * vector[i];\n      }\n      return Math.sqrt(result);\n    }\n  };\n\n  ColorScale.arrayToRgb = function (ar) {\n    var rgb = '#';\n    var d;\n    for (var i = 0; i < ar.length; i++) {\n      d = ar[i].toString(16);\n      rgb += d.length == 1 ? '0' + d : d;\n    }\n    return rgb;\n  };\n\n  ColorScale.rgbToArray = function (rgb) {\n    rgb = rgb.substr(1);\n    return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n  };\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/jqvmap.css",
    "content": "/*!\n * jQVMap Version 1.0 \n *\n * http://jqvmap.com\n *\n * Copyright 2012, Peter Schmalfeldt <manifestinteractive@gmail.com>\n * Licensed under the MIT license.\n *\n * Fork Me @ https://github.com/manifestinteractive/jqvmap\n */\n.jqvmap-label\n{\n\tposition: absolute;\n\tdisplay: none;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tbackground: #292929;\n\tcolor: white;\n\tfont-family: sans-serif, Verdana;\n\tfont-size: smaller;\n\tpadding: 3px;\n}\n.jqvmap-zoomin, .jqvmap-zoomout\n{\n\tposition: absolute;\n\tleft: 10px;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tbackground: #000000;\n\tpadding: 3px;\n\tcolor: white;\n\twidth: 10px;\n\theight: 10px;\n\tcursor: pointer;\n\tline-height: 10px;\n\ttext-align: center;\n}\n.jqvmap-zoomin\n{\n\ttop: 10px;\n}\n.jqvmap-zoomout\n{\n\ttop: 30px;\n}\n.jqvmap-region\n{\n  cursor: pointer;\n}\n.jqvmap-ajax_response\n{\n  width: 100%;\n  height: 500px;\n}"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.europe.js",
    "content": "/** Add Europe Map Data Points */\njQuery.fn.vectorMap('addMap', 'europe_en', {\"width\":680,\"height\":520,\"pathes\":{\"gl\":{\"path\":\"M13.47,93.57C12.35,92.52 12.34,90 10.44,89.14 10.62,88.14 13.84,87.66 11.35,86.39 10.05,87.17 9.25,86.92 8.71,87.58 6.27,88.12 8.6,85.09 6.17,85.17 5.23,84.47 10.33,84.75 9.98,83.14 11.32,83.4 14.67,82.04 12.37,81.03 11.23,81.19 6.54,82.06 10.06,81.32 13.04,80.64 9.92,76.6 8.71,79.05 9.24,77.06 11.03,78.05 12.88,77.78 14.68,74.59 9.38,77.17 8.23,75.54 7.26,73.61 12.43,77.09 11.48,74.6c2.44,-0.76 -0.97,1.23 1.21,1.43 1,0.07 3.06,0.24 1.26,-0.8C15.39,74.51 14.27,73.05 14.04,72.76 16.26,70.08 9.73,69.39 11.65,72.54 9.43,70.77 7.4,69.72 5.62,68.37 4.84,67.27 3.62,65.14 5.75,64.54 6.27,63.17 3.83,63.23 6.08,62.64 8.52,60.62 3.8,58.38 3.79,56.87 4.78,56.07 3.39,53.57 4.92,55.82c2,1.48 -1.5,0.05 -0.41,1.67 0.7,1.18 4.94,4.58 4.09,1.22C7.96,57.37 6.11,57.21 8.09,56.47 5.75,56.14 4.83,52.58 8.11,53.61c1.58,0.65 2.17,-1 2.13,-1.24 1.86,-0.56 0.99,-3.89 0.14,-5.02 -2.29,-0.92 1.59,-2.34 -1.23,-2.91 0.6,-3.73 4.98,-2.29 7.51,-3.37 2.78,-1.33 -1.33,-1.73 -1.69,-3.06 -3.07,-1.99 2.8,-0.5 3.28,-2.76 2.87,0.22 -2.67,-2.82 -1.49,-3.84 1.34,0.59 4.57,3.1 4.27,-0.2C20.58,29.48 17.09,31.14 17.33,29.6c1.78,1.02 0.79,-3.69 2.33,-1.12 1.76,1.21 4.05,-0.81 1.11,-1.21 -0.72,-0.16 1.96,-1.91 2.18,-0.31 2.04,0.89 2.39,3.26 4.86,3.29 1.12,-1.58 -2.89,-2.38 -0.16,-2.31 1.35,-1.83 -5.03,-0.94 -1.14,-2.29 1.39,-1.55 1.81,4.29 2.64,1.36 -0.57,-1.39 -0.41,-4.67 1.53,-2.59 0.16,2.02 -2.74,3.73 -1.03,6.23 2.7,1.13 0.11,-4.85 3.69,-4.25 2.74,-0.7 0.37,-3.01 -1.39,-3.16 0.93,-1.59 -0.48,-0.52 -0.91,-1.1 -1.26,0.42 -2.63,-0.27 -1.15,-1.19 -0.81,-1.9 -3.85,0.74 -5.54,0.53 -3.44,0.64 1.14,-2.76 2.36,-3.3 2.28,-0.77 4.66,2.97 6.55,0.04C34.81,17.14 33.04,17.79 32.17,17.97 30.61,18.81 30.38,17.32 30.54,16.77 29.14,17.79 26.4,16.27 29.42,16.34 29.89,14.12 31.85,14.39 33.58,13.44c0.27,-2.21 -3.96,0.03 -1.92,-1.94 2.34,1.37 5.29,0.49 7.37,1.6 0.49,1.25 2.93,3.07 2.07,0.58C40.16,10.86 37.07,10.79 34.89,10.94 32.01,10.71 38.39,8.92 36.45,6.69 35.49,6.8 33.31,6.65 34.75,5.53c1.74,0.57 3.45,1.31 2.13,3.63 0.97,-0.77 3.6,0.14 4.92,-0.01C42.62,6.51 37.36,8.29 39.31,5.97 39.94,4.69 35.39,5.71 36.07,3.41c2.18,-0.52 6.21,0.1 8.48,1.64 1.78,-0.72 2.84,-0.23 4.07,0.55 1.73,-0.23 3.46,0.06 2.78,2.25C52.75,9.86 54.51,8.35 52.72,6.73 52.71,4.07 54.56,10.07 55.78,8.98 56.01,5.87 52.57,4.02 49.87,3.57 48.45,2.66 43.96,4.29 45.02,2.48 44.96,1.07 43.75,0.16 45.71,1.28 47.56,3.52 50.55,-0.47 53.01,0.78 55.13,-0.05 52.02,4.62 54.57,4.07 55.09,3.62 56.43,7.62 57.26,5.53 57.36,3.28 54.5,4.61 54.71,2.93 54.66,0.68 56.28,0.89 57.93,0.78 59.1,1.36 57.92,5.72 60.98,5.64 61.74,4.33 57.63,0.17 61.09,2.11 61.53,3.09 65.18,3.43 63.42,2.17 61.88,1.53 60.02,-0.12 62.69,1.24c1.18,0.74 1.27,-0.27 2.37,-0.09 0.49,-0.8 2.06,-0.17 3.01,-0.37 45.89,0 91.78,0 137.67,0 0.61,1.21 1.15,3.04 -0.24,1.09 -2.48,-0.7 1.23,2.94 1.58,3.94 1.63,2.86 -1.86,0.67 -3.36,1.88 1.28,-1.72 -2.26,-4.24 -1.57,-1.36 0.03,2.25 1.64,3.73 3.68,2.39 1.03,0.77 -1.42,2.8 -1.62,3.53 -3.09,0.12 0.02,1.62 1.04,2.22 0.66,2.09 4.04,0.64 2.3,3.22 -1.05,1.95 -3.92,1.82 -3.21,-0.86 0.14,-3.28 -4.67,-1.36 -4.04,-5.02 -2.02,-0.71 -0.18,3.84 -2.96,2.48 -0.73,0.74 0.41,1.75 -1.42,1.32 -2.61,0.54 1.71,4.84 -0.38,4.25 -1.39,0.66 -1.21,4.72 0.33,2.08 -0.04,-1.13 1.18,-4.09 2.39,-2.05 0.43,1.69 3.14,3.16 0.34,3.59 0.86,3.33 -3.29,2.48 -4.22,0.42 -0.56,1.42 -4.92,2.25 -4.96,-1.01 -1.09,-1.09 -0.61,-6.28 0.38,-2.79 -0.38,2.15 4.88,3.94 3.74,1.34 -3.75,0.99 -2.13,-7.24 -6.06,-4.79 -0.93,1.3 -1.66,1.94 -1.57,-0.09 0.87,-1.48 -0.65,-6.36 -1.62,-2.76 -0.29,1.71 1.87,5.7 -1.38,4.23 -1.61,0.79 -3.43,1.95 -3.68,-0.56 -1.68,-1 0.16,-4.48 -2.68,-3.04 -0.67,1.11 2.68,6.25 0.02,3.71 -0.94,-1.89 -3.02,-1.6 -4.56,-0.77 1.83,0.09 2.37,0.85 0.57,2.18 0.59,2.05 2.81,-2.2 3.66,0.12 1.38,0.4 3.13,-0.11 3.81,2.17 2.43,3.24 -2.95,0.83 -4.01,1.04 -0.05,-1.82 -4.79,-3.3 -3.23,-1.13 1.49,0.95 1.71,0.82 0.15,1.51 -1.1,2.37 1.53,3.48 2.9,1.87 3.12,-1.53 5.02,4.79 1.15,3.53 -2.62,-0.97 -1.48,2.05 -3.89,2.7 -0.43,2.18 2.56,-0.04 2.88,-0.79 2.47,-0.74 2.4,2.46 3.26,3.28 -2.41,2.08 2.06,1.61 0.72,3.86 0.87,0.94 2.37,2.01 0.05,2.28 -2.05,0.35 -0.86,2.02 0.59,1.45 -1.67,-0.11 -1.69,1.85 -1.36,2.27 -1.73,0.52 -2.08,4.37 -0.55,3.78 -0.25,-2.23 4.33,-2.23 2.08,-0.24 -2.82,-0.46 -0.7,2.99 -3.43,2.2 2.08,0.81 0.22,1 -1.03,1.19 -1.32,0.16 3.49,1.1 1.39,1.26 -1.9,0.07 -0.29,1.99 -2.31,1.42 1.18,0.54 1.34,1.84 1.35,2.8 -2.18,2.04 -4.44,-0.74 -2.18,-2.64 1.63,-0.69 0.76,-4.19 -0.17,-2.1 -0.64,2.71 -4.66,4.66 -4.98,0.68 -0.13,-3.43 1.98,-6.57 2.12,-10.01 -0.26,-1.47 -2.38,-1.12 -1.92,-3.26 0.2,-2.67 -2.43,-4.09 -3.97,-4.66 0.54,-2.82 0.04,-5.39 -1.15,-7.72 0.49,-2.96 -3.2,-2.36 -2.3,0.29 0.39,1.99 2.16,3.98 1.82,5.79 -0.98,-1.18 -4.72,-2.37 -4.53,0.09 1.53,0.74 4.96,0.32 3.23,3.09 -0.36,0.92 2.65,-0.97 2.92,1.14 1.39,1.16 4.2,3.13 1.09,4.33 -2.3,0.81 -7.78,0.76 -7.23,-2.79 1.56,-1.72 -2.19,-2.27 -1.32,0.16 -1.72,-2.55 -3.53,-0.09 -1.9,1.66 -2.13,2.01 -4.41,0.62 -6.81,0.57 -2.19,2.71 4.76,1.16 2.08,3.05 0.58,1.9 4.08,1.91 5.81,2.83 1.96,1.43 -0.47,2.15 -1.35,0.46 -1.82,-1.08 -3.45,2.21 -4.74,-0.62 -0.64,-2.28 -4.68,1.1 -2.47,0.81 1.98,0.42 2.27,5.38 5.07,2.98 1.84,-3.35 3.57,2.14 6.26,0.44 1.29,-0.17 2.13,-0.02 0.67,0.65 1.09,1.24 2.33,0.17 2.6,1.96 1.19,2.8 4.25,5.41 6.32,6.4 -0.65,1.36 -3.26,-1.74 -3.14,1.07 -0.24,-1.71 -1.8,-0.78 -1.41,0.45 -1.2,-0.78 -1.84,-2.07 -1.82,0.08 -0.39,2.77 -2.92,-1.74 -2.76,-0.46 0.55,1.51 -0.55,2.28 -0.85,0.45 -2.38,-1.66 -2.14,3.66 -3.7,0.79 -1.88,-0.98 -0.85,3.28 -2.38,0.99 -2,-0.69 -1.48,2.95 -3.73,1.98 -1.43,0.57 -1.73,-1.87 -2.48,0.33 -1.28,0.15 -2.02,-1.77 -3.67,-0.49 -1.51,-0.59 -3.89,-0.69 -5.18,-1.79 -1.83,0.4 -3.94,-2.71 -4.99,0.05 -1.52,0.2 0.6,-5.44 -2.51,-2.84 -0.5,1.46 -2.44,2.79 -1.46,0.41 -0.04,-2.08 -3.47,-2.35 -1.81,-0.01 -0.33,2.95 -2.47,-1.46 -3.31,-2.22 2.66,-0.66 -1.9,-3.4 0.58,-4.85 0.98,-1.25 -0.43,-3.9 -1.29,-1.57 -2.2,1.2 0.59,4.8 -2.3,3.1 0.07,1.58 0.73,2.33 -0.49,2.37 -0.31,3.19 -2.4,-0.77 -3.7,1.08 -1.26,-0.57 -3.86,-0.58 -3.24,0.73 -1.86,1.54 -5.17,-0.4 -5.06,3.18 -2.02,-0.95 -3.43,1.13 -4.24,1.49 -0.67,-0.74 -1.24,2.48 -2,1.23 2.12,-2.45 -2.15,-1.8 -1.8,0.58 -2.16,1.39 -3.92,0.18 -2.08,-1.7 -1.67,0.05 -3.09,2.47 -2.5,-0.4 -0.88,-2.96 -1.92,-0.22 -2,1.13 -1.96,-0.26 -4.27,2.16 -3.76,-0.97 -0.78,-1.12 -2.93,1.49 -3.4,-0.02 1.83,-0.91 0.7,-3.4 -0.63,-1.07 -0.78,1.04 -1.78,1.59 -1.04,-0.05 -2.35,-3.54 3.85,-1.66 4.59,-3.73 -0.17,-1.96 -2.75,-5.32 -4.26,-2.64 1.79,0.66 -1.44,2.8 -2.07,2.43 -1.51,-3.02 -4.63,-0.57 -2.13,1.56 0.17,1.83 -2.38,1.81 -1.85,-0.14 -1.36,-2.38 -2.64,3.42 -2.69,-0.09 0.92,-1.47 0.05,-4.47 -1.39,-1.81 0.69,-2.4 -1.59,-1.67 -2.42,-0.69 -1.63,-2.6 -2.81,-0.08 -1.32,1.39 -0.12,2.09 -5.82,3.27 -3.43,0.33 -0.7,-1.39 -2.14,-1.09 -2.9,-2.54 -1.31,0.12 -1.87,1.12 -2.63,1.96 -0.18,2.43 -0.75,4.74 -2.05,6.98 -0.56,-1.99 -3.06,-1.81 -4.45,-3.2 -2.37,1.32 0.55,4.85 0.85,5.51 -2.93,-1.09 -0.49,5.23 -3.18,2.66C53.03,69.44 53.8,64.37 51.35,66.72c-0.01,1.25 1.67,5.14 1.03,4.67 -0.53,-2.51 -2.88,0.37 -2.61,-2.21 -1.56,-2.63 -4.32,1.46 -2.75,2.77 0.01,1.17 -1.56,2.39 -0.5,0.42 0.86,-3.51 -4.59,-2.97 -3.27,0.28 1.49,1.65 -0.07,2.95 -1.09,0.84 -1.55,-1.63 -4.28,0.31 -4.69,-2.84 -1.38,-1.87 -1.94,1.56 -0.77,2.26 -0.06,1.31 -0.47,2.49 -0.74,0.56 -1.54,-2.22 -1.58,2.78 -0.86,3.53 1.64,2.36 -5.86,1.67 -2.64,3.82 2.3,1.03 -2.22,1.12 -2.82,0.61 -1.74,0.43 1.87,2.58 -0.75,1.83C27.52,82.87 27.84,78.97 25.72,81.05c-0.33,1.79 3.97,2.08 0.81,3.67C24.18,85.6 27.77,81.48 24.7,81.96c-1.65,-0.58 -3.25,0.94 -2.07,2.52 -0.13,-1.56 -3.34,-2.97 -2.3,-0.65 0.92,1 3.65,4.19 0.68,3.11 -0.39,-1.36 -2.18,-3.54 -2.55,-1.53 -2.1,0.36 1.98,3.44 0.79,3.95 -0.52,-1.87 -2.86,-1.68 -1.64,0.35 -0.16,0.51 -2.67,-2.78 -2.9,-4.29 -1.64,-2.64 -1.84,0.81 -1.4,1.86 -0.78,1.52 2.24,0.79 1.57,2.42 -1.75,-0.73 -3.2,1.28 -0.75,1.28 -0.16,0.78 0.34,2.28 -0.65,2.59z M34.12,18.3c-1.05,0.6 -2.47,3.81 -0.57,3.47 1.95,-0.22 4.06,-4.82 0.57,-3.47z m-22.97,56.17c-2.31,-0.35 -0.79,-1.58 0,0z M2.14,66.59c-1.38,-1.11 -0.95,-1.35 0.46,-0.36 -0.18,-0.08 -0.27,0.6 -0.46,0.36z m168.23,-6.32c-0.28,-1.85 2.85,0.02 0.03,0l-0.03,0z M7.85,51.96c-0.57,-0.92 1.55,0.27 0,0z m1.18,-1.63C7.41,50.26 7.17,48.77 8.95,49.87 10,50.07 10.77,49.96 9.03,50.33z M184.09,37.53c-0.77,-1.48 -1.43,-4.23 -2.73,-6.24 -2.01,-2.67 1.21,-6.02 3.05,-2.64 0.95,1.04 0.93,3.38 1.44,4.42 -4.98,-0.16 0.39,3.51 -1.76,4.46z M23.01,25.35c-1.12,-0.81 -0.79,-3.25 0.17,-0.92 0.17,0.37 -0.49,0.58 -0.17,0.92z M209.99,8.88c0.65,-1.41 0.2,-3.29 -1.61,-3.21 -0.07,-1.5 -1.95,-5.46 0.62,-4.89 1.44,0 2.88,0 4.31,0 1.06,2.38 -1.6,4.58 -1.58,7.24 -0.32,0.7 -1.06,0.8 -1.74,0.86z M44.32,3.05c-1.74,-0.98 -6.31,0.12 -6.14,-2.09 1.47,1.81 3.05,0.95 2.25,-0.17 2.2,-0.52 2.82,0.46 3.89,2.27z\",\"name\":\"Greenland\"},\"is\":{\"path\":\"m151.61,141.44c-2.42,-0.05 -4.73,-1.12 -5.95,-3.36 -0.71,-2.06 -4.34,-1.68 -3.81,-4.38 0.8,-0.95 3.4,-0.95 1.03,-1.6 -1.69,0.92 -0.37,-1.61 -2.18,-0.86 -0.88,-0.03 -1.32,-2.12 -2.96,-2.05 -1.43,-1.13 -6,-1.27 -4.53,-3.48 1.4,1.45 5.16,1.15 5.29,-1.63 0.95,-0.08 4.39,1.14 2.46,-0.91 -1.28,-0.31 -3.16,-1.27 -0.58,-1.35 2.41,0.51 2.39,-2.69 -0.02,-1.57 -1.25,0.39 -2.36,1.06 -1.66,-0.43 -0.34,-1.62 1.57,-4.11 -1.54,-3.94 -1.49,-1.7 -3.83,-2.36 -5.98,-2.91 1.9,-1.43 2.13,2 4.45,0.36 0.58,-0.11 0.84,1.82 1.93,0.36 1.45,0.02 2.12,1.75 4.12,1.85 1.57,1.88 4.72,-0.08 2.56,-1.73 -1.13,0.23 -4.71,-0.08 -2.41,-1.51 1.13,0.1 5.66,-0.35 3.94,-1.58 -2.53,-0.05 -1.4,-0.83 -0.29,-1.63 0.84,-2.83 -2.64,-1.96 -3.34,-1.81 -1.47,-0.72 -2,-0.85 -1.64,-2.44 2.52,0.42 0.64,-2.75 -0.27,-3.56 -0.04,-0.34 1.76,2 1.91,-0.11 -0.65,-3.43 1.88,0.34 1.11,2 -0.95,4.21 5.86,2.44 3.19,-0.73 -1.94,-1.31 0.11,-2.67 -1.13,-4.2 1.13,0.42 1.67,1.6 2.04,1.18 1.98,0.31 -0.01,2.5 1.33,3.37 0.86,1.89 -0.77,4.19 1.64,5.57 -1.28,0.64 -3.87,-0.52 -2.63,1.99 -0.4,1.18 -1.92,2.25 -0.42,2.93 -1.31,1.46 -1.09,4.59 1.22,2.7 0.49,-1.4 2.89,-6.12 2.22,-2.37 2.69,2.22 4.53,-3.04 4.48,-5.25 2.58,0.03 -0.68,6.63 3.51,5.53 -0.01,-0.74 0.05,-5.1 1.81,-2.72 1.08,-2.01 3.5,-0.36 1.83,1.62 2.1,1.36 -0.53,3.45 0.95,5.46 2.69,-0.06 0.02,-7.39 2.92,-6.07 -0.32,2.52 1.49,4.92 3.27,1.85 1.68,-2.37 1.62,3.33 3.69,1.28 1.71,-0.8 1.1,-6.38 3.47,-3.02 -0.81,1.5 1.32,1.54 -0.24,3.29 -0.5,2.17 2.82,1.16 2.36,3.29 2.02,0.52 2.1,1.62 0.19,2.57 -2.6,1.53 3.45,1.86 0.49,3.25 -0.74,0.55 -3.68,1.15 -1.27,1.34 1.72,-0.23 4.34,-1.28 4.35,1.54 -0.04,2.17 -4.93,1.21 -2.47,3.09 1.83,0.33 2.75,2.38 0.41,2.2 -1.18,-0.56 -1.74,-0.63 -0.71,0.56 -0.6,-0.3 -3.92,0.12 -2.06,0.55 2.71,0.87 -0.55,1.36 -1.7,1.52 -1.06,0.04 -2.49,1.02 -2.87,2.69 -1.35,-0.83 -1.72,1.98 -2.29,-0.35 -0.72,-2.57 -2.1,-0.68 -2.71,0.31 -2.09,-0.1 -4.17,0.18 -5.78,1.63 -1.89,0.57 -3.52,-3.04 -3.52,0.21 -2.4,-1.75 -5.62,-1.53 -6.88,1.4l-0.35,0.08 0,0z m24.31,-7.94c-1.58,1.64 1.17,1.65 0.84,-0.23 -0.28,0.08 -0.56,0.15 -0.84,0.23z M147.49,99.76c-2.33,0.02 -1.42,1.38 0.2,1.79 0.14,-0.38 0.69,-1.97 -0.2,-1.79z m33.62,15.99c1.19,-0.59 1.6,-0.17 0,0z m-44.05,-9.09c-1.62,-0.01 -0.68,-1.6 0.37,-0.74 1.34,-0.47 -0.84,-4.6 0.49,-2.48 -0.6,1.82 2.54,3.42 -0.86,3.22z m-1.42,-1.5c-1.66,0.2 -1.5,-3.06 -0.29,-0.86 -0.05,0.3 1.22,0.95 0.29,0.86z m4.48,-1.49c-0.86,-0.96 -0.83,-1.57 0,0z\",\"name\":\"Iceland\"},\"pt\":{\"path\":\"m126.31,476.79c-3.11,-0.89 -5.74,-4.21 -9.28,-3.12 -1.78,0.38 1.76,-2.58 1.47,-3.95 0.39,-1.92 1.56,-3.11 1.18,-4.56 -0.46,-1.65 0.47,-3.6 1.4,-5.27 -0.61,-1.65 3.07,-0.14 2.33,-1.74 -1.59,-1.17 -2.48,-2.71 -4.71,-1.61 -1.89,-0.04 -2.12,-3.1 -2.67,-4.46 0.27,-2.21 3.57,-4.27 2.21,-6.5 2.42,0.37 3.47,-2.17 4.77,-3.81 0.98,-1.71 1.87,-3.43 3.16,-4.47 -0.79,-1.76 1.02,-5.31 3.28,-5.87 1.59,-1.26 -0.95,-2.63 0.8,-4.09 0.23,-2.53 -1.05,-5.19 -0.11,-7.75 2.54,0.06 0.15,-1.87 0.17,-2.24 1.59,-1.44 4.74,-3.3 6.49,-1.31 -3.35,1.53 -0.16,3.98 2.09,3.19 1.85,-0.17 3.87,2.53 6.45,0.97 1.56,-0.13 6.26,-0.07 4.22,3.05 0.22,1.77 4.81,2.08 1.88,3.98 -2.66,0.33 -4.02,2.88 -6.33,3.35 -0.97,1.66 1.09,4.53 -0.81,6.49 -1.07,1.01 0.55,2.39 -1.62,2.77 -2.6,1.54 1.62,6.06 -2.82,6.49 -1.74,-0.37 -5.6,-2.08 -3.57,1.31 1.07,1.89 -0.41,4.57 2.03,6.2 1.92,2.91 -3.81,2.81 -3.68,5.95 -1.09,1.6 0.5,5.45 2.67,5.41 -1.19,1.2 -4.31,1 -5,3.34 -3.07,2.07 -0.28,7.22 -4.25,7.62 -0.55,0.29 -1.11,0.63 -1.75,0.65z\",\"name\":\"Portugal\"},\"ma\":{\"path\":\"m114.26,519.26c5.38,-1.06 11.75,-0.39 15.9,-4.63 5.26,-4.88 8.22,-11.54 11.83,-17.6 2.3,-1.64 3.11,0.89 3.7,2.43 3.25,0.06 3.27,5.03 6.51,6.18 2.01,2.4 5.02,1.6 7.69,1.35 1.26,1.84 3.78,-0.68 5.41,1.5 1.48,1.09 4.97,-1.46 5.09,1.72 1.76,1.07 3.75,0.97 5.94,1.12 1.21,2.49 5.27,4 3.5,6.77 1.55,1.82 -0.97,1 -2.11,1.18 -21.15,0 -42.31,0 -63.46,0z\",\"name\":\"Morocco\"},\"es\":{\"path\":\"m170.08,507.95c-0.69,-0.45 0.64,-1.19 0,0z m-23.1,-9.15c-1.89,-0.27 -1.23,-3.36 0.81,-2.76 -1.01,0.61 -0.28,2.16 -0.81,2.76z m-1.53,-5.41c-1.92,-1.84 -4.81,-3.55 -4.78,-6.5 1.74,-1.65 -3.05,-2.72 0.06,-3.62 1.8,0.08 1.95,-2.62 0.29,-1.71 -1.68,1.92 -1.49,-3.2 -3.57,-3.37 -1.21,-2.54 -5.06,-1.7 -6.26,-3.7 0.08,-2.72 1.22,-5.37 3.58,-6.95 1.91,0.46 5.66,-3.3 1.98,-3.27 -1.9,-2.17 -1.67,-5.74 1.14,-6.99 3.7,-0.95 1.1,-4.57 -0.28,-6.35 0.58,-1.68 0.45,-3.01 -0.84,-4.53 2.46,2.34 7.45,0.07 6.4,-3.43 -2.26,-2.56 3.15,-2.71 1.97,-5.34 1.81,-1.67 0.28,-5.41 1.17,-6.21 1.77,-2.14 4.99,-2.46 6.88,-4.55 1.92,-2.79 -4.07,-2.45 -2.2,-4.91 0.43,-3.16 -4.07,-2.3 -5.69,-3.2 -1.8,2.37 -3.89,-1.02 -6.23,-0.51 -0.28,-1.34 -3.49,1.05 -2.42,-0.88 2.82,-1.19 -0.75,-4.5 -2.73,-2.96 -2.11,1.45 -3.86,-0.78 -1.34,-1.64 0.94,0.28 2.32,-1.98 0.72,-1.58 2.23,-1.63 -2.16,-0.92 -0.24,-2.66 2.41,-1.99 0.28,-4.66 -2.06,-3.75 -2.26,-1.66 -0.12,-3.23 1.07,-4.13 3.66,0.29 6.76,-2.08 9.92,-3.51 1.78,-2.19 1.34,2.22 3.29,-0.21 3.33,-0.27 2.62,6.64 6.6,4.09 2.47,1.16 5.51,0.94 8.02,1.44 1.9,-1.24 3.14,2.45 5.32,2.3 2.35,0.57 4.3,2.34 6.75,2.93 2.65,1.41 5.29,-0 7.84,-0 2.13,0.65 4.69,5.39 6.5,1.98 2.5,1.32 5.04,3.91 8.46,3.08 1.39,-0.01 3.8,0.79 4.14,1.8 -1.87,1.22 0.06,2.67 1.22,2.4 1.66,1.57 5.29,1.19 5.34,4 1.46,0.54 4.43,-0.57 4.33,1.92 1.41,-0.29 3.73,0.98 4.54,0.5 1.54,0.01 3.53,0.67 3.72,-1.35 1.63,1.02 3.94,2.12 5.05,3.3 -0.62,2.48 1.62,2.94 3.4,2.37 1.23,1.43 2.74,2.23 4.47,1.42 1.62,0.92 3.85,2.1 4.94,-0.04 1.38,-0.43 5.47,1.31 2.5,2.25 -0.52,2.49 0.35,5.62 -3.02,6.24 -3.95,0.65 -6.55,3.99 -10.24,4.85 -4,0.26 -8.86,0.24 -11.41,3.91 0.64,1.13 2.06,1.75 -0.08,1.82 -2.98,1.35 -3.8,5 -6.55,6.72 -2.04,2.09 -4.6,4.27 -5.09,7.29 -0.14,3.13 0.72,6.8 3.86,8.19 -0.28,2.13 -4.94,1.61 -6.14,3.93 -1.51,0.81 -1.84,2.35 -3.08,3.65 0.22,1.68 -4.27,3.01 -1.46,5.03 -0.94,1.1 -4.96,-1.49 -6.88,0.41 -2.79,1.13 -4.55,3.71 -5.69,6.37 -2.11,3.74 -4.63,-2.34 -7.31,0.69 -2.28,0.2 -4.7,-1.72 -7.4,-1.1 -2.51,-0.92 -5.12,-1.75 -7.89,-1.82 -2.99,0.03 -4.54,3.25 -7.74,1.83 -3.45,-0.48 -3.73,3.46 -6.83,4.06z M229.67,469.73c-3.03,-0.94 2.34,-1.17 0,0z m-3.28,-1.86c-1.31,-1.98 3.63,-2.8 0.96,-0.55 -0.28,0.23 -0.58,0.51 -0.96,0.55z m8.15,-0.95c-0.99,-1.19 -3.24,-1.21 -2.69,-3.07 -1.57,-0.61 -4.43,-0.57 -1.44,-1.83 1.82,-0.69 5.61,-3.6 5.15,-0.13 1.01,1.13 4.03,0.64 1.76,2.77 -0.83,0.87 -1.8,1.58 -2.78,2.26z m11.67,-5.53c-0.43,-1.32 -5.6,-1.9 -2.47,-2.15 1.42,0.04 2.4,0.66 2.47,2.15z\",\"name\":\"Spain\"},\"tn\":{\"path\":\"m284.9,519.26c-2.21,-1.12 0.73,-3.64 -0.95,-5.51 -1.46,-3.16 2.15,-6.93 -0.12,-9.45 -0.67,-0.73 2.93,-1.29 1.98,-2.95 2.23,-0.03 1.46,-2.58 3.74,-2.85 2.52,-1.83 5.41,-3.02 8.35,-3.78 1.3,0.18 -1.34,3.29 1.51,2.64 0.71,-1.15 1.1,-2.15 2.08,-1.26 -0.76,0.27 1.03,1.6 0.03,2.09 1.72,0.55 2.13,5.46 4.03,3.7 1.46,-0.73 4.4,-5.15 5.37,-2.71 -0.9,2.37 -2.28,5.07 -4.51,6.35 -3.22,1.82 -2.27,6.37 0.87,7.67 1.26,0.82 1.66,2.08 3.04,2.36 -0.15,1.99 1.01,4.41 -1.79,3.68 -7.88,0 -15.77,-0.01 -23.63,0.01z\",\"name\":\"Tunisia\"},\"dz\":{\"path\":\"m181.84,519.26c-2.16,-1 0.09,-2.29 0.05,-3.03 -0.8,-1.48 -5.28,-4.37 -1.47,-3.7 2.83,-0.51 5.98,-1.33 7.84,-3.67 1.17,-2.46 3.66,-2.95 5.89,-2.07 1.44,-0.79 2.77,-2.77 3.38,-0.29 3.67,1.9 4.38,-3.05 7.15,-3.91 3.27,-1.17 6.41,-3.1 10.01,-2.8 3.04,0.05 6.13,0.57 9.13,-0.19 2.74,1.56 5.53,-0.24 7.63,-1.26 2.46,0.75 5.2,0.79 7.75,-0.34 2.83,-0.67 5.62,0.67 8.61,0.23 3.35,0.17 5.17,6.05 8.94,3.1 1.43,-2.77 7.09,0.3 7.33,-3.88 2.03,-1.62 1.87,1.59 2.96,1.23 1.79,0.05 6.14,2.99 6.01,-0.61 2.5,-2 5.17,3.33 8.12,2.16 1.57,-1.13 4.46,-0.6 5.35,-0.15 -1.62,-0.02 -2.54,1.2 -1.93,2.18 -1.87,0.63 -3.58,2.5 -1.04,3.3 0.38,2.87 -2.09,5.94 -0.27,8.63 -0.06,1.4 0.31,4.98 -0.86,5.05 -33.52,0 -67.05,0 -100.57,0z\",\"name\":\"Algeria\"},\"be\":{\"path\":\"m265.32,343.64c-0.99,-1.16 -1.81,-2.49 -3.73,-3.37 -2.08,-0.35 -0.28,-1.85 -1.25,-2.79 1.47,-1.88 -0.53,-2.73 -1.47,-0.87 -1.28,2.32 -4.46,0.99 -3.2,-0.74 -0.78,-0.74 1.11,-3.63 -1.62,-3.19 -2.17,0.83 -2.23,-1.41 -2.67,-2.1 -3.94,1.05 -1.51,-5.53 -5.39,-3.71 -2.36,1.07 -3.02,-4.27 -0.45,-4.53 1.73,-0.62 4.14,-3.17 4.52,-0.63 2.42,-0.22 3.66,2.56 5.83,0.13 1.3,-0.02 1.88,1.91 1.96,-0.36 0.89,-2.95 2.67,0.31 4.45,-0.43 0.58,-0.7 1.45,3.34 3.54,2.07 2.55,0.01 1.99,1.94 1.4,3.06 -1.22,1.97 -0.15,4.06 2.13,3.5 1.5,1.19 1.36,3.16 2.63,4.39 -1.48,2.22 -4.2,1.28 -5.1,4.2 -1.39,2.28 2.74,5.98 -1.59,5.37z\",\"name\":\"Belgium\"},\"it\":{\"path\":\"m350.4,500.36c-1.75,-1.38 -4.77,0.56 -6.21,-2.11 -0.98,-3.12 -4.25,-2.35 -6.74,-3.12 -2.11,-1.47 -4.61,-1.93 -6.58,-3.76 -2.2,-1.23 -6.25,0.31 -6.1,-3.66 0.15,-1.98 2.31,-4.17 3.5,-1.8 2.52,0.49 3.53,-4.85 5.24,-0.9 2.01,0.26 4.02,2.27 5.97,0.45 2.63,-0.1 5.81,0.01 7.46,-2.47 1.45,0.01 4.12,1.89 4.36,-0.76 1.1,1.6 3.69,-2.6 2.02,0.26 -1.4,3.25 -4.08,7.31 -3.12,10.66 1.21,0.69 0.93,2.35 2.17,3.37 -1.93,0.14 -1.88,2.41 -1.97,3.84z m7.22,-15.37c-2.78,-0.14 -2.87,-3.99 -0.28,-4.55 1.37,-2.08 -1.36,-4.79 2.17,-5.13 3.25,-2.22 -1.35,-4.63 -1.21,-7.46 -1.16,-2.63 -2.56,-4.66 -3.09,-7.45 -1.59,-2.98 -4.91,-0.29 -6.78,-2.73 -1.65,-0.84 -0.12,-5.17 -3.33,-5.63 -1.56,-0.37 -4.03,2.8 -2.57,0.22 0.06,-2.91 -3.33,-1.3 -4.25,-2.37 -0.69,-2.23 -3.26,-6.17 -5.36,-4.2 -1.73,-2.18 -4.5,1.85 -5.25,-1.44 -2.69,-0.65 -4.1,-2.62 -6.18,-4.28 -0.73,-3.32 -5.19,-3.11 -5.74,-6.57 -1.05,-1.9 -5.27,-0.02 -4.05,-2.26 -1.1,-2.38 -3.86,-3.39 -4.73,-5.46 -3.13,0.51 0.07,-2.73 -1.71,-4.47 -2.14,-2.56 -1.2,-6.42 -3.6,-8.63 -2.19,-1.12 -4.5,-0.88 -6.03,-3.28 -2.22,-0.9 -4.82,-2.51 -7.33,-1.86 -1.74,1.89 -3.46,3.3 -4.61,5.48 -1.55,2.14 -5.91,2.59 -3.27,-0.76 1.07,-4.25 -4.16,-0.46 -5.52,-3.08 -2.08,-1.9 -1.08,-4.02 0.62,-5.53 0.76,-2.12 -4.77,-3.84 -2.88,-4.68 2.55,0.23 5.53,-3.6 2.83,-5.28 -0.93,-1.94 -2.92,-4.5 0.7,-3.9 2.4,0.04 4.29,-1.2 6.65,-0.24 1.85,-1.05 2.45,-2.98 2.51,-4.87 1.03,-0.35 2.29,-2.18 1.57,0.13 -0.67,2.56 4.99,2.17 2.47,4.45 0.19,0.08 2.08,0.32 2.23,1.7 1.41,1.01 2.54,-1.65 0.98,-2.25 0.53,-2.02 3.41,-3.57 2.37,-5.9 0.68,2.09 2.82,3.69 4.41,1.42 0.81,0.91 2.52,3.75 3.07,0.97 -0.97,-1.55 1.29,-1.81 -0.84,-2.7 -0.29,-2.99 3.05,2.3 3.43,-1.02 -1.77,-2.29 0.88,-4.07 2.84,-1.92 2.41,1.34 1.9,-4.15 4.64,-2.65 2.33,0.51 5.21,-2.28 6.13,0.74 1.38,2.34 4.22,3.29 6.93,3.47 1.41,0.44 5.26,-0.07 4.99,0.93 -2.13,0.92 -2.35,3.92 0.43,3.72 -1.26,1.22 -1.47,2.53 -0.57,3.56 0.79,3.16 -4.05,-1.16 -3.93,2.42 -2.22,1.73 -5.54,2.13 -7.33,4.03 -0.52,1.97 1.06,2.99 1.39,4.46 3.61,0.71 -1.06,2.87 -0.87,4.28 0.35,2.85 0.62,6.32 3.48,7.85 2.75,2.1 5.47,4.43 8.75,5.58 2.03,1.86 2.11,4.88 3.12,7.29 0.93,3.7 3.47,6.75 6.72,8.67 2.2,2.52 5.18,4.19 8.71,3.54 1.79,0.5 5.88,-2.59 5.92,0.29 -0.8,1.53 -3.65,2.89 -1.29,4.86 4.13,2.94 10.13,1.81 13.75,5.65 1.89,1.55 5.85,0.5 6.34,3.52 1.71,1.18 6.04,2.73 4.13,5.37 0.4,1.63 -0.95,3.55 -2.34,1.36 -0.96,-2.97 -3.23,-5.68 -6.54,-4.48 -2.32,-1.32 -6.05,-2.69 -6.78,1.09 -1.28,2.2 -1.32,4.97 -2.42,7.17 0.64,2.84 4.59,1.65 5.83,3.73 1.59,0.26 0.35,2.98 1.81,3.8 -0.21,3.1 -5.83,1.6 -5.88,5 0.28,1.92 0.81,4.68 -1.72,5.06 -1.23,1.65 -1.39,4.64 -3.63,5.25z m-35.56,-71.98c1.98,1.43 0.5,-2.39 0,0z m-33.54,62.41c-0.72,-1.6 -3.1,-3.35 -3.37,-5.68 1.54,-2 1.07,-4.81 2.16,-7.03 -3.26,0.28 0.82,-2.8 -0.89,-4.55 -0.02,-1.96 -1.35,-4.24 -2.94,-4.22 0.19,-1.55 0.4,-3.39 2.06,-1.78 3.1,0.15 5.25,-2.55 7.52,-4.29 0.91,-0.84 5.63,1.48 2.53,2.55 -0.36,1.47 2.3,1.33 1.41,2.66 3.07,1.36 0.3,4.08 -0.53,6.16 1.23,2.67 0.22,5.65 0.3,8.76 -0.33,1.29 -0.37,5.73 -2.35,3.37 -1.49,-1.18 -4.61,-1.6 -3.46,1.11 -0.38,1.17 -0.94,2.88 -2.43,2.94z\",\"name\":\"Italy\"},\"by\":{\"path\":\"m402.72,308.87c0.99,-3.18 0.27,-7 -3.79,-7.04 -0.71,-2.3 3.14,-4.07 4.34,-6.18 -0.26,-5.15 -3.83,-9.19 -5.74,-13.77 2.18,-0.83 4.01,-0.87 5.95,-0.9 0.86,-1.84 2.51,-1.83 3.98,-0.84 -1.05,-1.12 -2.37,-3.07 0.28,-3.17 1.9,0.02 -0.71,-2.58 2.17,-2.24 -1.28,2.76 4.76,1.14 2.24,-1.38 -2.85,-0.47 0.33,-3.89 -1.4,-5.76 0.96,-1.56 2.7,-3.08 2.72,-4.65 2.53,0.76 4.43,-4.49 0.94,-3.47 -1.1,-1.17 0.25,-4.78 1.91,-6.11 2.45,0.48 4.37,-0.43 4.51,-3.22 0.17,-2.25 2.08,-1.78 3.18,-1.85 2.02,-2.32 2.15,2.85 3.69,0.14 1.75,-1.51 3.73,-0.83 3.53,1.45 2.17,2.99 3.24,-2.73 5.87,-2.54 1.93,0.2 3.24,2.17 5.04,1.95 0.25,2.02 -0.47,3.85 1.8,5.15 0.82,1.65 -1.87,4.51 1.47,4.95 2.1,-0.08 0.99,1.32 1.56,1.96 1.72,2.18 3.98,3.94 6.71,3.73 0,1.84 0.71,4.69 2.92,2.85 2.09,-1.22 3.09,0.78 3.28,1.76 2.02,-0.38 3.13,1.46 1.26,2.31 -0.06,3.07 -3.04,4.09 -5.35,2.65 -3.54,0.27 -2.85,5.57 0.51,5.52 0.97,2.55 1.33,5.72 3.91,7.42 -2.66,1.35 -6.88,2 -6.85,5.76 -1.23,2.53 1.43,5.57 1.33,7.2 -1.16,-1.33 -5.51,-3.73 -5.13,-0.77 -2.24,-2.52 -3.75,4.16 -4.59,0.03 -1.77,-2.65 -4.04,1.4 -4.28,1.56 -1.22,-2.58 -2.82,1.6 -3.58,-0.67 -1.01,0.66 -2.93,1.68 -4.34,1.01 -1.39,0.16 -1.96,2.41 -2.67,0.56 -2.3,-2.34 -5.69,0.72 -8.43,-0.73 -2.87,-0.21 -5.7,0.69 -8.51,0.87 -1.69,1.51 -4.3,1.17 -5.72,2.79 -0.82,1.63 -1.2,4.18 -3.37,2.88 -0.54,-0.03 -1.11,0.27 -1.34,0.78z\",\"name\":\"Belarus\"},\"pl\":{\"path\":\"m378.8,342.69c0.85,-2.71 -2.77,-1.44 -3.2,-3.81 -2.16,-0.74 -2.68,4.74 -4.1,1.6 -1.34,-0.42 -0.38,-2.05 -2.3,-2.3 -1.38,-1.23 -0.72,-3.2 -2.99,-2.63 -1.39,-1.14 -3.17,-0.83 -4.08,-0.27 -2.65,-1 1.12,-2.8 -1.66,-3.95 -1.04,2.08 -3.71,0.51 -5.13,-0.34 -2.56,-1.21 -1.29,2 -1.13,2.64 -1.27,1.67 -2.44,1.3 -2.92,-0.65 -1.25,-0.75 -2.67,-1.29 -0.72,-2.16 1.16,-2.1 -2.17,-2.93 -3.11,-1.63 -1.5,-2.25 -5.49,-1.16 -6.45,-4 -1.21,-1.39 -2.59,1.06 -1.9,-1.41 0.23,-2.18 -0.48,-4.58 -2.34,-5.49 -1.37,-2.65 0.61,-5.37 -0.78,-8.1 -2.17,-1.37 0.53,-5.96 -3.41,-5.97 -3.09,-2.11 2.9,-5.25 0.3,-8.13 -0.64,-1.64 -2.11,-4.93 -1.01,-5.69 2.39,-0.86 4.49,-2.6 7.02,-3.34 1.88,-0.91 4.34,-1.13 5.97,-2.18 0.73,-2.97 3.72,-4.13 6.19,-5.25 2.44,-1.51 5.22,-3.64 8.26,-2.74 0.34,2.92 2.37,6.29 5.83,5.11 2.32,-0.46 3.66,-2.87 6.19,-1.88 5.94,0.22 12.06,0.04 17.77,-1.75 2.19,-1.89 4.37,-0.56 6.59,0.69 0.91,5.68 5.67,10 6.52,15.73 -0.74,2.77 -4.55,3.76 -4.71,6.89 0.95,2.08 5.51,0.97 4.43,4.48 -0.75,3.1 1.11,5.48 1.99,8.14 0.77,2 4.89,2.48 3.07,4.57 1.18,1.35 3.03,3.77 0.15,4.64 -2.63,0.49 -3.02,4.28 -4.54,6.17 -0.82,2.29 -3.04,4.17 -2.56,6.78 1.11,1.72 -0.12,4.53 2.39,4.91 -2.96,0.2 -5.66,-0.81 -7.88,-2.64 -2.12,-1.23 -4.34,-0.31 -6.37,0.12 -1.06,0.6 -0.02,2.66 -2.03,1.15 -2.7,-1.27 -4.67,0.77 -6.02,2.87 -0.44,-0.92 -1.49,0.48 -1.34,-0.18z\",\"name\":\"Poland\"},\"jo\":{\"path\":\"m566.3,519.26c-0.01,-4.69 -2.26,-8.97 -3.12,-13.51 1.51,-3.32 4.45,-0.15 6.76,0.1 3.02,0.33 6.94,0.22 8.51,-2.87 4.44,-5.57 8.37,-11.53 12.83,-17.08 1.86,2.51 3.76,5 5.38,7.68 -2.06,2.03 2.19,4.71 3.12,1.72 0.91,2.72 -2.48,4.53 -4.03,6.38 -4,3.47 -8.47,6.39 -12.72,9.51 -2.44,0.61 -3.15,3.3 -0.46,3.9 2.58,1.36 5.17,2.72 7.71,4.17 -7.99,0 -15.99,-0 -23.98,0z\",\"name\":\"Jordan\"},\"gr\":{\"path\":\"m449.88,508.26c-1.41,-0.44 -0.91,-2.43 -2.98,-2.05 -2.92,-1.02 -4.66,0.87 -7.49,-0.12 -2.89,2.86 -3.34,-3.03 -1.84,-3.28 2.13,1.48 4.85,0.78 6.99,2.27 2.66,-1.89 5.67,-2.41 8.68,-1.61 1.64,-0.07 3.7,-0.37 4.57,-0.83 -1.03,2.5 2.95,2.63 3.64,0.39 1.59,-1.01 2.86,-0.15 1.23,1.36 -4.14,0.67 -8.27,1.86 -12.04,3.72l-0.39,0.1 -0.37,0.03 0,0z m-26.29,-13.55c-0.61,-2.64 -1.46,-5.84 -4.37,-6.76 -3.02,-0.62 -1.68,2.8 -1.92,4.11 -2.48,0.25 -0.03,-2.58 -2.33,-3.13 -1.56,-1.69 2.11,-3.33 -0.42,-5.29 -1.75,-1.46 -3.48,-2.23 -4.88,-3.8 -1.71,-0.32 1.67,-2.18 0.95,-3.89 1.31,0.41 3.43,-0.58 4.2,-2.4 2.31,-0.03 5.27,1.8 8.03,2.01 1.1,0.72 3.08,0.98 3.24,1.46 1.77,0.36 1.5,3.47 4.29,3.78 1.97,0.86 -3.33,1.22 -3.75,-0.39 -3.29,-1.87 -3.6,3.04 -0.88,3.97 1.42,2.4 3.54,4.49 2.98,7.25 0.93,1.21 1.93,2.16 0.11,0.68 -1.13,-1.37 -3.59,-4.36 -5,-1.33 -0.38,1.2 -0.28,2.48 -0.25,3.72z m12.62,-17.67c-0.61,-1.76 -3.37,-2.18 -4.61,-3.83 -1.54,-1.35 -1.12,2.07 -3.22,1.63 -1.32,1.11 -3.33,0.37 -1.06,-0.31 2.53,-1.38 -0.23,-3.22 -1.98,-2.17 -2.19,0.64 -2.76,-3.59 -4.29,-0.5 0.28,-1.81 -1.78,-2.98 -1.95,-0.63 -1.85,0.67 -5.66,-0.17 -7.42,2.31 -1.43,-1.51 -2.69,-1.73 -3.58,0.32 -0.06,-3.13 -3.02,-4.71 -4.64,-5.97 -0.05,-3.03 -3.45,-4.15 -5.3,-5.69 0.58,-2.13 -4.66,-2.22 -1.22,-2.7 1.45,0.13 1.31,-1.81 1.97,-2.79 -2.74,-2.59 4.57,-2.51 2.29,-5.81 0.57,-2.27 3.93,-4.04 1.77,-6.57 2.29,-1.19 5.68,-0.59 7.21,-3.12 0.92,-4.2 5.51,-0.91 7.7,-3.66 0.88,-0.81 0.03,-3.12 2.26,-2.13 2.68,-1.49 5.94,-1.98 8.75,-3.4 1.35,-1.69 4.25,-2.43 5.72,-0.71 1.88,0.93 3.48,-0.95 5.39,0.66 2.83,0.48 5.06,-1.99 7.75,-2.56 2.63,-1.48 -0.92,-3.81 -0.19,-4.93 2.53,-0.82 6.54,2.78 3.07,4.45 -2.66,1.03 1.16,6.08 -1.92,6.2 -2.59,-1.16 -5.58,1.42 -8.08,-0.62 -2.31,-0.06 -3.98,4.61 -5.94,1.87 -2.75,-0.21 -2.93,5.39 -5.82,3.29 -2.56,0.13 -2.19,2.87 -0.61,3.88 1.51,1.31 -0.02,1.67 -0.46,3.12 -2.01,-0.91 -2.94,1.12 -4.72,-0.3 -3.05,1.25 -3.01,-2.2 -1.76,-3.97 -0.09,-0.54 -2.81,1.81 -3.44,2.49 -1.02,1.92 0.18,3.87 -0.21,6.03 1.55,1.98 3.8,3.4 4.84,5.84 0.92,0.8 4.25,2.4 3.42,2.64 -2.14,-2.19 -4.85,-0.02 -3.78,2.46 1.31,0.13 3.2,1.7 0.6,2.21 -1.13,0.04 -4.23,2.36 -2.68,2.49 2.62,-1.25 4.96,1.17 7.41,0.98 0.52,2.36 2.91,0.77 3.98,2.53 2.06,0.36 4.93,0.25 3.64,2.95 0.1,1.33 1.96,3.02 1.13,4.05z m-32.41,-12.35c-2.66,1.97 2.35,4.76 3.65,1.72 0.88,-3.08 -2.48,0.37 -3.25,-1.63l-0.4,-0.09 0,0z m1.2,12.17c-2.12,0.67 -3.94,-2.49 -2.24,-3.05 -0.52,2.11 1.79,2.11 2.24,3.05z m35.21,-4.75c-1.33,-0.45 -3.15,-2.25 -0.48,-1.45 1.91,-0.84 2.27,1.01 0.48,1.45z m-3.1,-3.76c-1.98,-1.68 -5.22,0.85 -5.86,-2.11 -1.43,-1.48 -5.05,-2.2 -5.77,-2.78 2.78,-2.67 4.14,2.1 7.15,1.68 1.66,0.78 3.06,-0.62 3.9,1.22 0.4,0.59 0.43,1.32 0.58,1.99z m-10.1,-17.81c-3.53,-1.73 2.32,0.07 0,0z m3.59,-1.57c-2.32,-1.62 -0.44,-1.62 0.45,0.12l-0.11,0.22 -0.34,-0.34z\",\"name\":\"Greece\"},\"tm\":{\"path\":\"m679.06,344.59c-1.21,-0.72 -0.78,-2.05 -2.51,-2.48 -0.91,-2.53 -0.44,-5.74 -2.11,-7.9 1.43,2.3 3.65,0.44 4.81,-0.09 -0.04,3.47 0.02,6.95 -0.03,10.42l-0.16,0.04z m-9.11,-14.43c-1.83,0.29 -2,-1.85 -2.97,-2.07 -2.67,-0.77 0.57,-4.63 0.48,-6.52 1.65,-3.13 3.89,-6.16 6.88,-8.09 1.36,-0.18 5.09,-1.73 4.9,0.43 0,2.65 0,5.3 0,7.95 -2.35,-1.52 -3.83,-5.43 -6.79,-5.11 -2.41,2.22 -6.24,4.38 -5.17,8.26 -0.05,1.27 0.71,3.09 1.95,2.4 0.34,0.89 0.41,1.85 0.72,2.75z m9.29,-40.46c-2.98,-4.77 -6.29,-9.32 -9.41,-14 0.44,-3.11 3.69,-4.89 4.74,-7.82 1.56,-2.45 3.21,-4.85 4.68,-7.37 0,9.73 0,19.46 0,29.19z\",\"name\":\"Turkmenistan\"},\"kz\":{\"path\":\"m665.18,326.25c-2.97,-1.86 -1.2,-5.67 -2.65,-8.21 0.53,-3.17 -3.51,-2.8 -4.88,-0.83 -1.79,-1.67 -2.48,2.95 -4.91,0.84 -1.43,-2.21 -3.22,-0.68 -4.76,0.52 -0.4,-3.09 -3.28,-5.18 -6.16,-5.75 -2.02,-1.36 -4.24,-5.19 -6.86,-2.37 -2.9,1.87 -4.15,-4.1 -0.51,-3.35 1.06,-1.32 1.8,-1.79 3.42,-0.84 1.53,-0.78 2.76,-2.24 4.06,-3.11 -1.44,-2.18 -5.78,0.43 -7.07,-2.22 0.12,-1.34 3.47,-2.2 0.83,-3.45 -1.26,-2.14 2.16,-2.43 1.45,-4.52 2.51,-0.62 4.01,-2.7 6.42,-3.67 1.55,-0.68 5.82,-1.56 4.27,-3.73 -2.44,0.42 -5.53,1.2 -4.64,-2.51 0.27,-3.12 -0.67,-6.7 -3.34,-8.56 -1.46,-0.11 0.78,-3.59 -1.86,-3.15 -1.5,-2.77 -4.84,0.02 -6.51,0.7 0.1,2.2 -0.93,4.69 -3.45,3.61 -2.4,0.56 -6.57,-0.38 -7.49,3.29 -0,2.58 -2.65,3.31 -2.68,6 -1.27,1.57 -1.07,5.37 -3.43,5.36 -2.12,-0.08 -2.2,2.62 -2.46,3.63 -1.26,0.74 -5.86,0.39 -4.64,-0.82 3.5,0.56 3.47,-4.4 0.06,-4.32 -3.14,-1.51 -5.73,-4.02 -8.93,-5.36 -2.47,-0.32 -4.25,2.11 -6.54,2.07 -0.12,1.28 0.37,2.59 -1.35,1.17 -1.8,-0.93 0.01,-2.79 -2.21,-3.3 0,-2.52 -4.2,-0.23 -5.74,-0.66 -0.96,-2.72 -0.8,-5.85 -0.41,-8.82 0.73,-3.23 -4.34,-1.07 -3.74,-4.61 -1.48,-2.21 -1.17,-5.16 0.32,-7.28 -2.58,-1.5 -1.53,-6.73 1.82,-4.04 2.29,0.54 4.78,3.98 7.13,1.98 1.97,-1.65 2.09,-5.06 -0.41,-5.79 -0.5,-2.08 -4.31,-2.93 -1.9,-4.7 0.1,-1.7 1.79,-4.1 2.05,-4.93 -2.7,-0.86 -1.25,-3.39 0.39,-3.59 0.3,-2.73 3.83,-4.97 2.24,-7.88 -1.16,-1.26 2.12,-0.49 0.87,-2.37 -0.73,-0.82 1.71,-0.82 1.99,-1.86 2.14,-0.45 -1.05,2.08 1.69,2.02 1.48,-0.55 1.41,-1.96 2.93,-1.7 0.29,-1.63 -1.06,-3.26 1.01,-4 0.5,-1.63 0.88,-2.2 1.87,-0.46 3.2,2.4 4.8,-3.1 7.46,-3.43 1.62,1.55 3.73,2.04 5.43,0.37 1.27,1.42 3.01,1.43 4.62,1.61 -0.26,2.56 4.05,4.44 3.68,0.87 -0.11,-2.04 -2.23,-3.06 -3.52,-3.49 2.49,-1.89 5.28,1.44 8.06,-0.13 2.65,1.71 2.89,-3.09 2.88,-4.82 -0.94,-1.46 1.32,-2.87 0.36,-4.29 1.64,0.4 1.75,-1.1 1.34,-1.85 1.08,-2.25 2.79,-1.39 4.44,-0.52 1,-0.8 1.78,-2.46 2.98,-2.01 -1.89,-1.21 -2.16,-3.64 0.61,-3.9 -0.26,-1.23 0.14,-1.29 1.28,-1.45 1.06,-0.94 2.07,2.58 4.01,1.26 1.98,1.74 4.96,-3.12 5.37,-1.36 0.29,1.89 3.37,-0.99 2.39,-2.55 -0.11,-1.94 -1.41,-4.21 1.46,-3.17 2.91,-0.36 4.26,-3.79 5.34,-6.17 1.47,-2.93 -2.47,-4.1 -2.09,-6.64 -1.36,-2.25 -4.48,-0.11 -5.91,0.2 -2.22,-2.09 -4.58,3.81 -4.91,0.16 -1.29,-0.68 -2.71,2.23 -3.65,0.73 1.29,-1.47 1.19,-4.25 2.39,-6.18 1.51,-3.13 -2.02,-3.28 -3.58,-4.22 -3.1,0.97 0.81,-3.99 -1.61,-4.03 1.01,-2.42 4.84,-2.6 5.47,-5.2 -0.01,-2.9 -4.66,-1.68 -5.74,0.02 -1.13,1.71 -4.5,-0.24 -1.75,-0.92 2.16,-2.49 -2.77,-3.66 -2.05,-1.2 -2.33,3.55 -0.85,-4.14 -3.83,-1.64 1.26,-0.48 -0.31,-3.76 1.92,-2.68 1.3,1.04 0.21,-2.26 2.14,-1.3 2.74,-0.21 -1.15,-2.68 1.49,-3.26 1.26,2.1 3.9,-0.29 1.53,-1.19 0.54,-2.35 2.7,-4.74 3.28,-7.51 1.48,-0.31 3.12,-1.58 1.37,-2.69 1.12,-2.77 3.18,-4.87 5.44,-6.15 -0.1,-1.8 -3.04,-1.6 -1.06,-3.51 0.73,-2.38 2.55,-3.81 3.48,-6.49 2.08,-2.53 2.36,-5.49 3.47,-8.34 0.29,-1.69 3.72,-3.96 0.35,-4.97 -1.01,-0.43 2.31,-2.04 0.29,-3.41 -1.75,-1.68 3.22,-0.78 0.65,-2.37 -1.73,-0.49 3.06,-0.82 1.8,-2.5 2.25,-1.54 6.79,-0.26 5.35,-4.64 -0.2,-2.91 3.08,-0.72 4.32,0.28 1.69,1.75 4.12,-0.2 4.78,2.52 1.5,0.9 1.01,3.62 3.74,3.35 2.67,0.01 -0.81,-3.38 2.11,-2.14 1.93,-0.51 -0.97,-4.41 1.41,-3.27 0,52.65 0,105.3 0,157.95 -2.28,4.16 -5.07,8.03 -7.49,12.09 -2.11,1.94 -4.29,5.26 -1.49,7.58 3.01,4.53 6.37,8.91 8.98,13.65 0.02,6.62 -0.04,13.29 0.04,19.87 -3.05,0.34 -6.58,0.54 -8.5,3.49 -2.48,2.8 -4.81,5.91 -5.35,9.73 -0.09,0.46 -0.18,0.92 -0.25,1.38z\",\"name\":\"Kazakhstan\"},\"fi\":{\"path\":\"m382.62,208.07c0.7,-3.07 -2.78,1.32 -3.86,-1.32 0.05,-0.96 1.56,-3.75 -0.71,-2.21 -1.13,1.69 -1.33,-1.45 -2.92,-0.68 -0.94,0.89 -2.97,-0.9 -3.55,-0.42 -0.14,-2.36 -1.97,-0.15 -2.25,-0.03 -0.63,-1.67 -0.91,-3.6 -2.08,-5.17 1.86,-0.74 1.72,-4.06 0.26,-5.25 -0.34,-1.47 3.17,-0.38 1.07,-2.02 -1.2,-2.15 -2.78,-4.06 -3.52,-6.25 0.62,-2.08 -0.63,-3.97 -1.49,-4.42 0.49,-1.2 -0.5,-2.29 -0.95,-2.29 0.13,-1.71 3.82,-4.59 2.52,-5.52 -3.07,-0.18 0.32,-3.17 1.17,-0.45 1.02,-1.23 3.05,-2.66 2.12,-4.84 0.01,-1.7 0.15,-2.94 1.36,-1.21 0.12,-2.42 1.26,-4.91 3.64,-5.85 -0.72,-2.45 1.54,-4.8 2.24,-7.01 -0.27,-2.84 0.9,-5.24 3.71,-6.24 1.6,-1.13 1.77,-3.36 -0.51,-2.84 -0.44,-2.27 -0.12,-5.32 -2.74,-6.02 -2.3,1.99 -2.43,-3.68 -4.97,-1.88 -1.75,-2.03 -4.37,-4.52 -3.48,-7.48 1.52,-3.03 -0.83,-5.16 -2.34,-7.18 -0.2,-1.46 0.87,-4.46 -1.6,-3.74 -0.01,-2.39 -0.15,-4.83 -1.27,-7.01 -2.48,-1.84 -4.57,-4.14 -8.05,-4.18 -1.93,-1.7 -6.43,-2.88 -5.46,-6.12 -0.41,-2.16 1.14,-3.53 2.73,-1.48 2.59,1.31 1.85,6.17 5.39,5.44 2.27,0.35 4.34,-0.45 4.98,-2.51 2.4,-0.26 6.27,3.96 5.78,-0.87 -0.39,-2.02 3.32,-1.43 1.97,-3.98 -1.32,-3.02 -2.11,-7.03 -0.35,-9.99 -0.31,-2.74 4.21,-0.11 4.22,-3.35 1.47,-1.91 3.36,2.08 5.49,1.78 2.95,0.9 3.14,3.84 1.7,6.03 1.41,1.64 0.21,2.38 -0.46,3.84 1.14,0.8 2.75,1.02 1.72,2.87 -0.47,3.13 2.02,6.77 5.45,6.28 1.67,2.35 6.13,3.59 3.92,7.14 -0.75,2.27 -1.97,4.85 -0.96,7.21 3.59,3.29 6.5,7.25 9.05,11.36 0.06,1.49 -2.83,0.38 -0.84,2.06 -0.22,2.17 0.21,4.77 1.29,6.07 -1.26,3.74 5.08,3.34 3.58,6.82 0.48,3.1 6.13,1.5 4.41,5.52 -0.25,1.99 -2.95,4.48 0.53,5.03 2.93,1.69 6.43,2.67 8.87,5.07 1.06,2.48 -0.3,5.24 -0.57,7.75 -2.26,6.49 -4.21,13.14 -7.27,19.3 -1.55,2.69 -3.59,5.26 -4.3,8.32 -1.76,0.21 -3.5,-1.24 -4.38,1.19 1.52,0.77 -3.01,1.75 -1.49,-0.16 -0.76,-2.31 -1.99,0.16 -1.56,1.47 -1.82,-2.09 -4.5,1.44 -1.45,2.01 0.62,2.53 -3.67,-2.15 -3.14,-0.28 0.89,2.06 -2.52,3.25 -2.85,3.52 -2.72,0.33 -4.14,2.39 -6.64,3.79l-0.57,0.27 -0.58,0.1 0,0z\",\"name\":\"Finland\"},\"de\":{\"path\":\"m302.45,372.15c0.39,-0.91 1.99,-2.77 0.16,-1.49 -1.57,0.93 -2.11,-2.91 -4.19,-2.08 -2.04,1.85 -3.44,-2.27 -6.01,-1.15 -2.15,0.46 -2.02,-2.87 -4.5,-1.23 -1.72,0.52 0.38,3.76 -1.44,1.73 -1.84,0.2 -4.84,0.84 -5.69,-0.07 -0.64,-1 1.16,-4.13 0.65,-5.99 1.9,-2.36 0.91,-6.25 3.86,-7.87 2.56,-1.63 0.59,-4.12 -1.86,-3.67 -2.56,0.2 -2.84,-3.15 -5.48,-1.32 -1.23,0.08 -2.11,-2.54 -3.28,-1.12 -0.17,-2.33 -4.09,-3.23 -1.38,-5.35 1.81,-3.01 -5.32,-3.18 -1.88,-6.63 1.67,-1.33 2.21,-2.89 0.22,-4.22 1.95,-2 -1.2,-0.75 -1.34,-2.77 1.01,-1.22 0.18,-2.51 -0.16,-3.21 1.78,-1.86 2.88,-5.05 1.22,-7.64 -2.19,-2.06 0.71,-2.52 2.29,-1.67 2.39,0.34 3.33,-2.08 3.64,-3.33 2.38,-1.19 2.15,-5.11 -0.59,-5.64 -0.03,-1.55 3.42,0.08 2.83,-2.66 0.31,-2.54 1.52,-4.9 2.38,-7.37 -0.34,-0.18 -3.53,0.96 -2.22,-1.41 0.9,-2.9 4.25,-1.28 6.2,-2.15 0.16,2.03 2.57,6.54 4.4,3.34 0.14,-1.85 -1,-6.59 2.18,-4.76 1.27,0.28 4.88,-0.75 2.09,-1.66 -3.15,0.44 1.18,-4.81 -1.98,-5.31 4.2,-1.72 -2.92,-4.5 -0.43,-6.3 2.37,1.37 6.56,0.38 7.64,2.55 -0.45,0.53 1.55,0.68 -0.04,1.71 -1.46,1.22 0.47,2.21 1.51,1.23 -1.09,2.31 1.04,2.07 1.81,0.68 1.67,1.18 3.81,1.56 5.14,0.49 0.21,1.77 -4.56,3.93 -2.04,5 1.38,0.2 3.65,-1.17 3.27,1.31 2.66,-0.01 2.46,-4.21 4.91,-4.12 1.43,1.57 3,-1.39 3.56,-2.49 0.61,-2.1 3.54,-0.7 4.16,-0.17 0.88,1.8 2.57,3.83 4.93,3.32 -0.95,4 4.51,3.57 4.6,6.93 3.14,3.28 -3.49,6.24 0.16,9.19 2.04,0.76 2.91,2.01 2.23,4.17 0.93,1.99 2.9,4.81 0.48,6.79 1.68,1.23 1.03,4.11 3.18,4.83 0.68,1.92 0.82,5.65 -0.66,6.5 -0.87,-1.78 -4.46,-3.53 -3.95,-0.41 1.16,0.88 -2.8,1.08 -3.3,2.22 -2.5,0.18 -3.71,2.69 -5.8,3.41 -0.73,-0.12 -0.57,1.65 -2.06,0.72 -2.78,-0.99 -2.28,4.11 -4.17,1.96 -3.51,0.44 1.56,4.5 2.19,5.46 -2.26,2.79 1.42,6 3.88,7.15 1.53,1.88 3.04,3.44 5.43,4.44 2.44,1.22 2.24,4.86 -1.02,3.8 -0.57,1.52 -0.37,3.53 -2.79,3.73 -3.29,0.46 -2.9,3.65 -1.01,5.5 0.76,1.93 -3,3.3 -3.36,1.75 -0.45,-0 -3.6,-1.29 -2.93,0.98 -3.48,-0.65 -5.56,1.87 -8.47,2.95 -1.59,-0.45 -2.06,-3.03 -4.27,-1.95 -2.85,-1.05 -0.37,3.13 -2.89,3.37z m-6.7,-79.27c-0.21,2.06 4.44,6.44 3.78,2.2 -1.59,0.14 -2.26,-2.95 -3.66,-2.25L295.75,292.88z m29,76.43c-1.59,-1.17 -0.3,-3.24 0.69,-1.13 -0.04,0.43 -0.23,0.99 -0.69,1.13z m-0.01,-83.07c-2.42,-0.16 -2.07,-4.22 0.32,-2.83 -1.17,-1.29 -0.5,-0.74 0.89,-0.58 -1.82,1.06 2.32,2.92 -0.86,3.34l-0.35,0.07 0,0z\",\"name\":\"Germany\"},\"se\":{\"path\":\"m323.06,272.38c-2.85,0.68 -1.5,-2.92 -0.88,-3.47 -1.34,-1.73 -2.37,-3.77 -4.04,-5.01 0.79,-1.22 -1.53,-2.8 1.01,-1.48 2.77,0.18 -2.19,-2.84 0.98,-2.65 2.38,-2.15 -2.21,-3.59 -2.38,-5.5 -2.18,-0.93 -1.38,-4.24 -3.57,-5.03 -0.5,-2.35 -1.05,-4.69 -2.37,-6.57 0.36,-2.06 3.34,-6.36 -0.08,-6.96 -1.38,2.23 -3.39,1.39 -2.89,-1.18 0.66,-1.66 -0.9,-5.32 -0.3,-5.55 1.22,1.95 2.5,1.63 3.29,-0.5 0.91,-2.52 -0.9,-5.03 -0.38,-7.57 2.08,-1.14 -0.02,-3.96 3.05,-4 2.39,-1.51 1.37,-4.54 1.71,-6.85 0.8,-2.58 -4.53,-6.31 0,-6.91 1.04,-0.81 1.22,-3.31 1.37,-4.79 -1.12,-2.38 -6.01,-2.81 -4.1,-6.25 1.84,-3.74 -1.45,-6.92 -1.02,-10.47 0.52,-2.44 0.53,-5.73 -0.14,-7.32 0.64,-2.96 1.19,-6.43 4.34,-7.91 2.35,-0.49 6.23,1.31 6.51,-2.71 0.96,-3.43 -4.73,-4.28 -1.85,-7.71 0.9,-2.93 3.32,-5.66 2.42,-8.87 0.15,-1.92 0.67,-3.87 -0.11,-5.73 -1.01,-2.32 3.73,-0.74 3.99,-3.33 -0.13,-2.25 -0.54,-4.21 1.52,-5.81 2.69,-2.56 2.7,-6.48 0.46,-8.94 2.93,-1.39 1.66,-4.89 3.52,-7.09 1.35,-0.88 5.1,1.96 4.84,-1.65 -0.51,-1.95 -1.78,-6.23 1.75,-4.92 2.24,0.45 5.5,2.66 7.12,-0.07 1.29,-1.53 -2.75,-1.44 -0.66,-3.53 0.95,-1.42 0.76,-3.57 -0.83,-4.28 3.02,-0.52 2.64,2.5 5.35,3.5 2.17,2.8 6.24,2.01 8.45,4.17 1.81,1.26 3.78,2.76 3.22,5.22 1.03,1.27 -0.68,4.42 1.98,4.24 -0.85,2.83 1.11,4.63 2.62,6.51 0.04,2.86 -1.49,6.25 1.05,8.57 1.6,1.29 3.31,4.27 -0.1,3.45 -1.76,0.14 -2.91,-0.92 -2.17,1.42 -0.95,1.6 -5.22,-2.83 -4.14,0.58 0.84,1.65 -2.05,2.45 -1.57,1.13 -2.06,-0.65 -0.53,1.54 0.66,1.49 -0.6,0.2 -1.52,0.57 -0.3,1.82 -1.49,0.26 -4.7,1.58 -1.68,2.64 2.32,2.25 -3.2,4.64 -1.02,7.19 1.54,0.9 4.4,2.82 1.64,4.33 -1.68,2.21 -0.66,5.89 -3.12,7.17 -0.94,1.59 -3.16,2.96 -4.81,3.45 -0.21,1.34 -1.22,2.8 -1.35,4.54 -1.77,-1.72 -2.61,0.56 -2.76,1.85 -1.12,0.81 -2.56,2.13 0.01,2.01 -0.44,1.31 -4.33,0.73 -2.47,3.43 -0.06,0.73 -0.49,2.94 -1.88,1.95 -2.76,-0.24 -2.07,3.37 0.06,3.69 -0.77,1.95 -1.46,4.89 0.24,6.81 -3.74,-1.85 -2.36,2.41 -0.94,3.91 0.18,1.27 -3.07,0.5 -0.73,1.44 0.84,1.85 1.12,4.66 1.43,6.67 -0.32,2.79 5.02,-0.22 4.86,2.53 0.7,1.96 4.04,1.71 4.48,1.82 -3.19,-0.43 -0.28,3.53 1.17,3.32 1.13,1.08 3.55,2.93 0.69,3.17 -0.96,1.32 -2.08,3.54 -3.42,3.71 1.54,1.27 -2.79,1.25 -1.63,-0.68 0.49,-2.21 -4.13,-4.8 -3.64,-1.69 1.43,0.51 0.2,2.21 2.13,2.69 -1.79,0.21 -3.94,-2.79 -5.52,-0.41 -0.59,-1.15 -2.36,-1.3 -1.99,0.35 -2.53,-0.76 -3.68,2.49 -1.03,1.96 1.95,-0.49 4.14,0.17 6.05,0.67 -0.71,2.97 4.28,-1.28 2.88,1.93 -0.14,2.13 -0.95,4.88 -3.12,4.77 0.18,1.44 -0.14,1.56 -2.15,1.24 -1.48,-0.93 -5.69,1.16 -2.24,1.59 0.93,-0.93 4.88,0.08 2.51,0.95 -1.3,-0.74 -2.65,-1.15 -1.6,0.7 1.1,0.49 3.58,1.85 1.37,2.42 -0.48,1.93 2.49,4.34 -0.83,3.78 -1.22,1.55 3.46,2.55 0.79,3.59 -0.59,1.57 1.8,1.83 -0.1,3.07 -0.36,1.71 1.22,3.68 -0.24,4.3 0.8,1.29 0.72,4.62 -0.49,4.51 -0.92,1.99 -0.01,8.09 -3.9,5.74 -0.75,-0.04 -1.2,1.04 -1.28,-0.03 -1.81,1.13 -4.91,0.3 -5.24,2.54 -3.47,0.86 -2.77,5.15 -1.48,7.22 -1.25,2.12 -3.78,-0.71 -5.21,1.44 -0.58,0.2 -1.19,0.28 -1.8,0.28z m21.76,-13.69c-0.6,-1.64 -0.03,-5.51 0.58,-5.62 -0.47,1.84 -0.07,3.79 -0.58,5.62z m11.16,-10.28c-1.47,-2.04 -0.57,-3.97 -1.15,-6.17 0.13,-1.54 3.5,-5.82 3.93,-3.32 -1.59,1.67 -1.23,4.3 -0.42,5.29 -0.56,1.58 -2.33,2.58 -2.36,4.21z m-6.04,-22.62c-0.58,-0.9 -1.01,-2.64 0.37,-3.19 0.51,-2.57 3.62,1.5 0.73,1.06 -0.71,0.44 -0.93,1.57 -1.1,2.14z m3.41,-4.74c-1.71,-0.56 1.15,-0.98 0,0z\",\"name\":\"Sweden\"},\"no\":{\"path\":\"m283.92,239.69c-2.05,0.82 -1.04,-2.38 -3.04,-0.45 -2.25,0.63 -2.45,-1.19 -0.48,-1.71 1.16,-1.98 -1.94,-1.69 -2.54,-0.89 -1.88,-1.69 -4.73,-3.13 -5.46,-5.54 0.16,-1.17 0.04,-2.84 1.26,-1.53 2.45,-0.31 0.5,-3.28 2.63,-3.15 -0.92,-1.74 3.6,-1.24 2.16,-3.19 -1.49,-0.01 -3.77,0.75 -1.5,-1.08 1.07,-1.87 -4.03,-2.48 -3.95,0.31 -0.43,1.99 -1.31,-1.27 0.03,-1.59 -0.59,-1.71 3.37,0.46 2.3,-1.73 2.11,-0.09 3.7,-3.31 0.62,-1.92 -2.12,1.06 -0.9,-1.62 0.69,-0.69 -1.77,-1.8 3.78,-2.21 0.57,-3.6 -0.56,-4.05 -3.61,3.53 -2.9,-0.4 -0.09,-1.07 2.45,-2.14 0.56,-2.38 1.23,-1.75 0.14,-1.45 -1.12,-1.67 -0.48,-2.03 3.39,-0.54 1.29,-2.62 -1.57,-0.11 -2.3,1.01 -2.92,1.83 0.23,-1.47 -0.96,-1.1 0.71,-1.97 1.17,-0.81 3,-0.92 0.68,-1.9 -1.68,1.41 -3.48,-0.55 -1.63,-1.27 2.35,2.15 4.25,-2.5 6.35,0.43 1.83,1.86 1.2,0.18 2.05,-1.15 2.54,-0.3 -0.18,4.44 3.17,3.6 2.08,-1.21 -0.36,-4.05 -1.72,-4.82 -1.87,-1.19 -2.86,1.17 -4.77,-0.24 -1.71,-0.32 -5.74,2.24 -5.21,-1.12 1.24,-0.84 -1.48,-1.91 1.02,-1.63 0.93,-0.21 -1.41,2 0.86,1.55 1.15,0.42 4.11,-2.74 2.32,-2.56 -1.17,0.24 -3.58,0.07 -2.04,-0.78 0.01,-1.15 -2.86,-0.72 -1.37,-2.6 1.92,-1.21 1.67,-2.06 2.44,-3.76 1.13,0.7 1.55,1.95 2.59,0.89 1.71,1.83 3.67,-1.21 0.78,-1.26 -1.72,-1.7 2.02,-2.98 1.47,-0.81 -0.08,1.94 2.1,2.28 1.49,0.15 -1.54,-0.73 -0.39,-3.26 1.26,-2.04 -0.9,2.54 1.99,2.46 3.2,1.29 -0.57,-1.07 -3.07,-0.84 -2.76,-2.61 -1.93,-0.78 -0.88,-1.18 0.63,-1.75 -0.31,2.53 1.54,0.84 1.46,0.89 0.76,2.66 4.97,0.16 2.35,-0.64 -1.68,1.13 0.97,-2.47 -1.62,-1.35 -1.33,0.1 -1.92,0.19 -0.62,-0.55 0.77,-1.45 -3.3,-3.11 -0.25,-2.56 1.36,2.34 4.5,0.23 4.77,-0.42 0.76,1.21 1.99,4.78 3.9,2.5 -0.19,-1.38 -1.61,-1.13 -0.15,-1.91 -0.52,-0.88 -3.96,-0.82 -1.31,-0.98 2.56,1.07 3.94,-2.68 1.6,-3.22 -2.38,3 -0.29,-2.57 1.23,-0.79 -1.13,2.54 3.47,1.05 2.52,-0.37 0.79,-1.1 1.41,-2.4 1.63,-0.68 1.42,0.16 -1.15,3.34 1.22,2.27 1.23,1.9 3.05,-0.32 1.25,-1.45 2.02,0.81 5.84,0.23 4.08,-2.68 2.55,-0.11 3.44,-2.71 1.89,-3.48 2.7,-0.44 1.04,-4.25 -0.61,-2.47 -0.94,0.99 -4.98,3.53 -3.32,4.59 1.36,-0.14 -3.55,4.36 -3.84,1.11 1.8,-0.4 1.59,-2.97 -0.14,-1.47 -1.54,1.59 -1.58,-0.15 0.05,-0.55 1.29,-0.12 3.11,-2.23 0.74,-1.96 0.49,-1.84 0.69,-1.57 2.55,-2.66 -0.01,-1.8 3.87,-1.75 1.44,-3.46 1.6,-3.11 2.62,3.25 4.94,0.36 -0.07,-0.91 1.83,-2.92 -0.44,-2.32 -1.97,0.37 0.51,-3.35 0.91,-3.77 2.46,-0.4 5.23,-2.14 6.04,-4.52 -0.69,-1.41 -1.97,0.46 -0.84,-1.25 0.83,-2.9 -4.58,-0.06 -1.84,-2.23 2.88,-0.42 -1.2,-4.08 2.2,-4.17 1.93,2.26 1.6,-1.88 -0.02,-2.41 1.79,-0.55 2.5,-1.55 4.25,-0.42 0.51,-2.76 -3.45,-2.33 -4.43,-3.58 -0.26,-3.01 2.59,-3.12 4.58,-3.67 0.29,-0.78 -0.81,-3.13 0.47,-2.48 2.46,0.65 2.45,-2.36 2.11,-3.23 1.27,-0.62 3.06,1.08 2.81,-1.49 0.06,-2.75 -4.88,2.23 -2.7,-0.53 -0.33,-1.84 3.17,-2.65 3.79,-1 0.44,2.38 2.69,0.96 0.74,-0.53 -0.37,-0.19 2.89,-3.12 0.16,-2.12 -1.52,1.62 -2.69,-1.67 -0.67,-0.49 2.18,0.6 1.78,-2.26 0.1,-2.63 1.64,-0.99 1.76,-1.25 3.09,0.31 2.65,0.05 -0.04,3.53 -1.13,3.83 -0.13,2.43 3.49,4.78 1.03,6.94 -1.52,2.38 -4.26,5.02 -2.96,8.1 -1.03,2.23 -5.62,0.34 -3.97,3.87 1.08,2.24 -0.41,4.62 0.29,6.91 -0.21,2.4 -1.5,4.65 -2.48,6.84 -1.89,2.33 -0.64,4.78 1.42,6.24 1.36,2.71 -1.06,4.75 -3.56,3.4 -3.47,0.13 -6.05,3.54 -6.55,6.75 -0.09,2.61 -2.39,4.76 -0.87,7.58 1.7,0.33 -0.26,3.51 0.65,5.09 0.93,2.11 2.11,4.27 1.04,6.66 -1.85,3.6 1.33,5.61 3.87,7.28 0.34,1.26 -0.49,2.52 -0.69,3.78 -4.37,0.5 -1.64,4.45 -0.68,6.73 -0.19,2.39 0.87,5.69 -1.37,7.29 -2.33,-0.08 -2.37,2.05 -2.44,3.42 -2.81,2.64 1.45,6.5 -0.89,9.33 -0.63,-0.51 -0.86,-4.28 -3.41,-3.07 -1.98,0.66 -1.1,-2.02 -2.18,-2.85 0.06,-1.66 0.25,-4.8 -1.34,-6.05 -1.51,0.96 0.6,3.37 -1.47,1.82 -1.6,1.08 1.29,3.05 0.43,4.75 1.82,1.57 -1.36,1.57 -0.61,3.28 -0.57,0.33 -1.78,3.28 -2.33,0.68 -1.69,-2.25 -3.03,0.06 -1.93,1.1 -2.37,0.2 -1.22,2.58 -3.27,2.72 0.26,1.74 0.63,2.15 -0.66,0.4 -0.55,-0.29 -0.31,3.24 -1.72,3.89 -1.13,1.13 -2.53,1.14 -2.96,2.81 -1.25,-1.4 -1.53,-2.14 -2.1,0.08 -0.58,1.07 -1.97,0.9 -2.97,1.19z m1.79,-42.62c-2.02,0.59 -1.81,3.69 -1.92,5.35 2.29,1.58 5.16,-1.56 2.82,-2.47 -2.51,1.62 -0.41,-2.26 1.2,-2.22 -0.69,-0.24 -1.35,-0.63 -2.1,-0.66z m-8.26,-3.48c1.26,1.05 1.96,-0.59 3.75,0.18 2.86,-0.7 0.32,-3.31 -1.23,-1.63 -0.54,1.11 -4.66,-2.16 -3.53,0.83 -0.64,0.74 0.98,1.54 1.01,0.63z m-1.56,-1.31c1.64,-1.54 -2.29,-0.9 0,0l0,0z m-3.39,20.54c-1.15,-1.48 -0.79,-2.31 1.27,-2.09 -0.5,0.65 -0.76,1.45 -1.27,2.09z m20.58,-43.12c1.89,-0.99 1.05,0.09 0,0z m18.74,-19.12c-0.11,-1.35 1.21,-2.72 0.71,-0.65l-0.24,0.29 -0.47,0.36 0,0z m7.46,-19.18c-1.61,-0.55 0.1,-1.14 0,0l0,0z m3.95,-10.61c-1.42,-0.85 2.16,-3.22 0.98,-0.56 -0.23,0.31 -0.59,0.56 -0.98,0.56z m8.03,-3.21c-0.35,-1.4 -4.22,-5.53 -0.69,-3.55 1.98,-0.66 -2.87,-2.41 0.24,-2.21 2.34,-1.07 1.29,3.96 3.81,2.24 0.12,-1.58 -1.95,-2.83 0.76,-2.09 1.98,-2.01 2.51,5.82 -0.36,3.01 -2.2,-1.1 -3.01,1.06 -3.76,2.6z m-5.57,-1.57c-2.14,-0.36 2.05,-0.11 0,0z m-7.93,-1.09c-0.6,-2.04 2.47,-0.64 0,0z m7.12,-4.13c0.59,-2.37 4.58,-1.01 4.01,-4.46 0.66,-1.69 0.95,3.05 2.77,1.99 1.53,1.25 -2.5,3.06 -1.7,0.6 -1.05,-1.01 -2.27,1.66 -3.77,0.7 -0.56,0.22 -0.96,0.7 -1.3,1.17z m7.58,-0.78c-1.19,-2.28 3.86,-0.43 2.34,-2.88 -3.7,-0.04 1.43,-1.56 0.6,-2.56 -2.52,-1.2 0.41,-2.37 1.15,-2.81 0.41,-3.22 -2.85,-1.84 -4.06,-0.47 -1.59,-2.04 2.26,-2.36 2.32,-4.57 0.14,1.33 0.46,2.85 1.65,2.42 0.8,1.52 3.32,1.84 3.24,-0.37 1.68,1.68 2.77,1.67 2.31,-0.48 0.79,-1.17 0.35,-2.79 1.61,-3.02 -0.4,-0.66 -1.42,-3.92 0.2,-3.31 0.95,2.39 -0.14,5.28 -0.89,7.26 2.94,1.88 1.55,-3.57 4.12,-3.05 0.22,-1.76 -3.3,-2.79 -1.17,-4.59 1.11,2.64 2.9,-1.39 2.9,-1.08 0.95,0.44 4.33,3.19 2.86,0.58 0.52,-1.54 -0.4,-5.86 -2.92,-3.36 -3.05,-0.22 1.04,-4.05 2.23,-1.43 1.8,-0.47 3.36,-0.55 3.65,1.78 1.6,2.82 3.68,-1.17 2.1,-1.52 0.07,-0.51 -0.69,-2.47 -0.41,-3.71 -0.86,-0.45 -2.21,1.67 -1.86,-0.59 0.28,-1.23 2.77,-3.11 1.94,-0.75 0.94,1.47 4.41,-0.15 2,-1.03 0.6,-1.49 3.48,0.04 1.97,-2.16 -0.79,-0.71 -2.04,-3.95 0.25,-3.13 1.93,-0.42 3.84,0.45 2.02,2.21 -1.75,1.98 -0.56,3.61 -0.42,5.65 -2.28,2.68 3.1,3.87 2.24,0.45 -0.18,-2.74 0.93,-5.32 1.76,-8.05 1.89,-3.05 -1.06,3.6 0.33,2.81 1.3,-1.62 0.64,3.35 2.9,1.4 2.12,-1.22 -1.68,-4.46 1.77,-4.91 0.72,-1.47 -2.34,-1.18 -0.57,-2.18 -0.51,-2.17 4.79,-1.62 2.39,1.11 -1.65,1.09 -1.95,4.14 -0.56,3.08 -0.4,2.24 2.84,0.85 3.62,0.4 -0.89,-1.13 -1.79,-4.79 0.32,-4.87 0.09,2.52 4.6,3.29 3.84,0.25 1.3,0.25 1.81,0.78 0.68,1.44 0.12,2.4 2.78,-0.68 3.9,1.46 2.08,1.26 -1.72,0.74 -1.03,2.68 -0.51,3.31 -7.08,0.08 -6.25,3.51 1.53,-0.19 4.57,0.06 4.67,1.27 -0.73,2.54 2.28,1.63 2.62,2.01 1.41,2.24 -3.5,3.67 -1.9,6.17 0.12,3.04 -1.51,0.49 -0.35,-1.03 0.73,-2.35 -0.61,-5.22 -3.22,-5.51 -2.52,-0.23 -4.95,-4.8 -6.83,-0.86 -0.98,2.59 -3.07,-0.98 -3.73,2.03 -1.82,2.85 -1.43,6.39 -0.81,9.47 1.12,1.85 1.17,3.38 -0.82,4.1 -0.7,1.31 0.29,4.41 -1.67,2.5 -2.14,-1.69 -5.02,-0.86 -5.85,1.4 -2.54,0.85 -4.72,0.04 -5.34,-2.66 -0.99,-2.14 -5.91,-6.2 -6.14,-1.61 0.57,2.13 -0.39,0.96 -1.13,1.23 -0.7,0.99 -4.96,0.92 -2.14,2.3 2.85,1.94 -1.88,4.5 0.34,5.92 1.59,3.24 -4.12,0.39 -5.68,0.21 -2.06,-1.04 -3.15,2.55 -4.42,0.38 -1.01,-0.36 -2.16,1.19 -2.67,1.07z m-9.01,-1c0.11,-2.56 2.91,0.13 0,0z m-1.13,-1.28c-0.8,-1.29 3.49,-1.49 0.69,-0.52l-0.34,0.34 -0.36,0.18 0,0z m4.3,-0.48c-1.71,-0.47 -0.9,-2.93 0.17,-2.2 -0,0.74 -0.11,1.47 -0.17,2.2z m4.79,-4.64c0.18,-0.78 1.29,-1.07 0,0z m7.64,-3.83c-2.24,0.29 -1.11,-3.47 -0.22,-0.75 0.06,0.35 1.74,0.98 0.22,0.75z m2.2,-0.62c-2.38,-0.91 -2.84,-5.4 0.1,-4.68 0.37,1.54 -0.1,3.12 -0.1,4.68z m-1.72,-6.1c-4,-0.97 3.45,-2.52 1.03,-0.52 -0.42,0.05 -0.59,0.56 -1.03,0.52z m5.27,-4.48c-0.27,-0.28 0.7,-0.67 0,0z m42.25,-2.91c-1.73,0.39 -2.88,-3.16 -0.45,-1.74 1.34,-0.78 2.3,1.96 0.45,1.74z m-35.9,-2.93c0.17,-2 2.33,-0.17 0,0z m1.12,-1.12c1.6,0.69 0.37,-2.16 2.16,-2.14 -0.43,0.5 -1.9,3.93 -2.16,2.14z m20.87,-4.79c0.68,-1.68 0.54,-0.43 0,0z m-9.67,-2.21c-2.58,-0.52 -0.4,-3.09 0.65,-0.8 -0.07,0.3 -0.24,0.8 -0.65,0.8z M319.32,12.08c-0.3,-1.14 -1.45,-2.77 -2.39,-2.03 -1.57,-1.66 3.97,-2.79 -0.11,-4.02 -1.19,0.78 -1.7,1.41 -2.54,-0.32 -1.8,0.29 -3.52,-4 -2,-4.15 0.28,2.4 2.41,-1.85 3.57,0.39 1.62,1.46 1.99,-0.61 1.81,-1.03 1.1,0 2.2,0 3.3,0 -1.65,1.5 0.79,4.98 -1.45,5.97 1.81,0.96 -0.87,3.73 0.84,4.72 -0.27,0.27 -0.64,0.46 -1.03,0.47z M334.56,1.41c-0.71,-0.78 1.26,-0.59 0,0z\",\"name\":\"Norway\"},\"ua\":{\"path\":\"m458.88,376.43c-1.65,0.13 -4.78,-1.76 -1.5,-2.12 1.11,-0.94 -0.88,-2.9 1.02,-4.06 0.62,-1.77 2.75,-4.95 1.17,-6.55 -2.35,-0.6 0.77,-4.92 0.58,-1.37 1.22,0.09 1.33,-0.46 2.29,-1.4 1.42,1.03 2.11,1.68 2.01,-0.49 0.8,-0.31 0.98,2.31 1.91,0.48 2.09,-0.77 2.07,-2.38 0.02,-2.62 0.48,-3.05 -2.01,-4.08 -4.34,-4.76 -1.03,-1.35 0.14,-4.1 -2.32,-4.58 -0.19,2.48 -3.85,-0.68 -2.94,-2.62 0.58,-1.57 -1.58,-5.77 -2.62,-3.02 -1.32,-0.9 -3.45,-3.78 -4.76,-1.05 -0.61,-1.26 -0.31,-1.31 -2.39,-0.85 -1.59,-0.19 -3.7,-2.91 -5.96,-1.05 -1.9,1.41 -4.52,1.99 -6.34,2.49 -0.3,1.21 -2.98,2.87 -3.26,4.06 0.69,2.88 -3.92,2.94 -5.88,3.36 -1.91,1.06 -2.85,5.5 -5.12,2.22 -2.55,-1.4 -4.85,1.16 -7.45,0.17 -2.78,0.68 -6.22,-1.81 -7.42,1.27 -1.7,-1.79 -4.36,-1.99 -6.08,-3.8 -1.69,-1.99 1.67,-4.76 1.1,-7.32 0.71,-2.08 3.89,1.72 3.03,-0.71 -0.43,-1.86 -2.14,-2.21 -2.09,-4.41 -1.6,-2.52 1.02,-5.01 1.85,-7.4 1.48,-2.09 2.06,-5.46 4.76,-6.09 3,-1.14 0.85,-4.79 0.14,-5.51 2.5,-2.1 -3.76,-3.23 -3.93,-5.84 -0.3,-1.41 -1.88,-4.75 0.96,-3.25 2.78,-0.65 2.08,-4.77 5.31,-4.83 2.44,-2.13 5.65,-1.09 8.41,-2.29 2.86,0.12 5.82,0.8 8.71,-0.13 1.44,0.02 2.96,3.43 4.46,0.67 0.48,-0.61 1.02,3.11 2.27,0.92 -0.68,-2.01 1.68,-0.28 2.33,-1.83 1.72,1.64 3.14,-2.06 4.36,1.19 0.98,-0.83 1.53,-5.36 3.12,-2.13 0.91,1.83 2.9,1.59 3.18,-0.37 1.11,-0.89 4.84,0.77 2.92,-1.35 2.22,-0.55 3.94,4.29 5.74,0.82 -0.53,-2.27 -3.24,-4.21 -1.65,-7.03 0.3,-2.91 3.55,-3.36 5.73,-4.62 2.8,0.98 5.55,-1.1 4.6,-3.99 2.15,-0.59 4.74,-0.01 5.62,-2.79 1.28,-1.72 2.08,2.03 2.83,-0.54 3.15,-1.7 3.09,3.74 6.17,3.78 2.69,0.81 -2.77,1.83 -0.06,3.34 0.97,1.1 0.27,1.92 1.66,2.64 0.13,1.93 0.76,2.76 1.8,0.93 1.75,0.21 3.63,-0.42 4.86,-1.04 1.22,1.6 2.86,1.33 3.58,3.44 0.66,2.12 2.97,6.38 5.86,3.86 0.95,-2.66 2.98,0.62 4.61,-0.26 2.96,0.38 3.76,-3.58 5.99,-4.66 2.15,1.36 3.87,3.07 6.32,3.78 2.39,1.73 1.46,-2.06 1.83,-2.22 2.04,0.83 3.63,-0.35 5.65,0.78 1.64,-1.06 3.29,-0.67 5.4,-0.98 -0.34,2.96 3.78,0.35 3.93,-0.21 -1.54,1.79 2.89,1.91 1.36,4.34 -0.91,1.71 -3.3,4.32 0.42,4.36 1.34,-0.17 -2.51,1.76 -0.87,3.22 0.73,1.16 4.31,0.82 2.94,3.4 -1.12,2.14 2.56,-1.79 1.05,1.32 0.04,1.92 1.74,4.67 -1.56,4.6 -2.59,0.04 -5.57,1.58 -4.88,4.34 -1.93,1.59 -3.46,4.3 -2.04,6.74 1.21,-0.9 1.4,3.27 -0.48,2.33 -2.61,-0.17 -4.34,2.86 -4.47,4.25 -3.32,-0.37 -1.93,5.58 -4.94,3.83 -1.97,0.68 -1.55,3.31 -3.9,2.83 -2.31,2.16 -4.28,4.87 -4.46,8.16 0.05,2.37 -1.89,1.63 -2.69,0.94 -1.43,2.66 1.92,4.83 3.49,6.52 1.72,1.52 4.3,4.21 6.67,2.42 1.12,-1.05 0.41,-2.57 2.09,-1.56 1.41,-0.15 1,-2.82 3.17,-2.37 1.15,-0 0.13,2.98 0.5,4.21 -1.72,0.79 -3.13,2.24 -5.41,1.17 -2.72,0.19 -1.51,3.05 -3.33,4.45 -1.46,1.36 -5.27,2.16 -5.39,5.34 -0.65,2.52 -2.91,5.33 -5.63,3.62 -2.92,-0.52 2.13,-0.53 -0.45,-1.77 -0.6,-1.76 -0.24,-6.9 -3.31,-5.63 -2.51,0.74 -5.09,-2.4 -7.49,-0.19 -0.84,-1.11 2.17,-2.44 2.5,-3.9 1.15,-2.11 4.76,-3.17 5,-5.4 -1.21,-0.47 -1.1,-4.45 -2.98,-2.14 -0.01,2.53 -3.55,-2.55 -3,-0.06 -1.18,1.35 -4.02,3.26 -6.29,3.26 -0.55,-2.41 -5.82,0.8 -2.84,-2.01 -2.07,-2.11 3.13,-0.37 2.51,-2.12 0.43,-0.87 2.54,-3.83 0.04,-2.33 -1.67,2.49 -5.64,0.74 -4.34,-2.2 -3.44,-0.71 0.17,4.67 -3.05,4.35 -0.95,0.4 -1.24,-2.89 -2.18,-0.81 1.19,3.1 -5.65,1.69 -4.31,5.43 -0.19,2.64 -0.71,6.16 -2.65,8.5 -1.92,0.15 -2.28,-0.37 -1.97,1.56 1.06,2.6 -1.47,1.65 -1.44,-0.04 -3.03,0.54 1.86,5.97 -1.63,4.84 -1.69,1.04 -2.76,2.58 -4.85,3.23 -0.33,0.68 0.22,1.06 -0.9,0.94z m8.84,-3.13c-1.24,-0.5 0.31,-1.59 0,0z M480,354.71c-2.02,-0.24 1.4,-0.94 0,0z\",\"name\":\"Ukraine\"},\"il\":{\"path\":\"m564.91,519.32c-2.79,-0.13 -5.59,-0.02 -8.39,-0.06 1.03,-3 0.55,-6.35 0.36,-9.47 -0.77,-1.89 -0.08,-3.97 0.69,-5.38 -2.21,-3.68 3.62,-1.36 3.34,-4.63 0.16,-2.5 0.5,0.45 0.78,1.3 0.41,1.74 0.97,3.45 0.64,5.26 0.64,4.15 2.85,8.05 2.93,12.32 -0.33,0.17 0.28,0.88 -0.36,0.66z\",\"name\":\"Israel\"},\"sa\":{\"path\":\"m593.15,519.31c-2.83,-0.62 -5.1,-2.77 -7.77,-3.86 -1.58,-0.98 -5.22,-1.86 -2.02,-3.26 5.2,-3.81 10.77,-7.23 15.26,-11.9 1.43,-2.99 4.63,-3.12 7.49,-3.98 3.73,-1.26 7.76,-1.54 11.57,-0.41 3.34,1.04 6.79,1.79 10.32,1.49 3.1,-0.23 6.16,0.27 9.07,1.36 7.05,2.14 14.23,3.86 21.25,6.06 3.22,1.22 7.13,2.8 10.33,0.7 3.47,-1.54 7.12,-2.66 10.59,-4.19 0,5.98 0,11.96 0,17.94 -28.52,0 -57.04,0 -85.55,0l-0.54,0.05z\",\"name\":\"Saudi Arabia\"},\"iq\":{\"path\":\"m665.09,505.54c-3.93,-0.14 -7.37,-2.41 -11.2,-3.08 -6.98,-1.9 -13.93,-3.92 -20.88,-5.88 -4.51,-0.55 -9.21,0.46 -13.56,-1.25 -4.06,-1.23 -8.45,-1.67 -12.53,-0.27 -2.28,0.01 -6.14,3.28 -6.23,-0.28 -1.25,-1.52 -3.9,2.58 -3.26,-0.38 2.09,0.09 -1.51,-3.02 -1.67,-4.04 -1.32,-2.57 -5.49,-5.02 -2.13,-7.49 4.5,-5.84 9.16,-11.56 13.6,-17.45 2.04,-3.07 2.39,-7.4 0.02,-10.4 -1.41,-3.28 0.38,-7.66 -2.62,-10.31 -3.09,-2.29 -2.71,-6.73 0.85,-8.16 2.5,-2.92 2.33,-7.04 4.39,-10.19 0.66,-2.04 0.93,-3.47 3.19,-3.89 2.1,-2.75 5.72,-0.13 8.03,-2.44 0.9,-1.04 2.2,-3.85 2.95,-0.99 0.24,2.01 2.47,2.98 2.75,0.39 0.38,-1.99 1.84,-3.41 3.5,-1.73 2.25,0.16 -1.13,2.67 1.73,2.71 2.42,-0.18 1.65,4.3 5.21,2.73 1.14,1.18 1.93,5.76 4.16,3.01 2.6,0.76 5.25,0.47 7.14,-1.59 0.61,0.22 -3.19,2.13 -1.4,3.83 1.09,1.94 5.9,4.19 1.79,5.59 0.41,2.25 -2.38,5.11 0.78,6.65 -2.86,-0.58 -2.74,5.86 0.16,4.24 -0.52,2.48 -0.45,5.39 2.6,5.52 0.99,0.71 1.98,1.43 2.96,2.14 0.34,-1.31 1.06,-1.78 0.88,-0.17 1.65,-0.62 3.99,0.32 4.03,2.59 0.12,1.35 0.91,3.75 2.75,1.76 3.33,-1.46 6.61,1.38 9.97,1.03 2.56,-1.77 4.83,0.86 6.18,2.91 0,13.19 0,26.38 0,39.57 -4.3,1.87 -8.8,3.32 -13.06,5.23 -0.36,0.05 -0.72,0.08 -1.09,0.08z\",\"name\":\"Iraq\"},\"az\":{\"path\":\"m625.84,392.01c-2.29,-1.74 -6.12,-1.39 -7.67,-4.17 -2.87,-0.9 2.82,-3.1 1.5,0.21 -0.29,2.16 0.66,-0.38 1.38,-0.86 1.98,0.67 2.99,-0.38 4.14,-1.97 0.78,0.36 1.17,3.12 3.09,2.25 0.41,1.86 5.4,3.6 1.25,3.88 -1.24,0.15 -2.44,0.52 -3.69,0.66z m9.25,-4.53c-1.22,-1.31 -1.37,-1.74 -0.58,-3.22 -0.7,-1.79 -4.05,0.28 -2.18,-2.45 -0.71,-3.07 -3.86,1.6 -5.74,-0.73 -1.12,-1.04 -4.8,-0.64 -2.24,-1.72 1.66,-3.91 -3.46,-4.05 -5.96,-4.45 -3.06,-0.54 1.31,-0.13 -0.04,-1.79 -1.74,-0.11 0.76,-3.32 -2.15,-2.78 -1.13,-2.07 -3.77,1.24 -3.43,-1.3 -3.83,0.78 -1.14,-4.07 1.25,-3.79 1.55,-0.11 2.45,2.19 4.64,1.11 1.17,-0.47 1.66,-2.32 3.53,-1.24 4.04,0.44 2.81,-5.63 -0.82,-5.09 -1.19,-0.23 -4.57,-0.92 -2.6,-1.97 -1.03,-3.22 2.59,-2.79 4.29,-1.55 1.8,0.76 4.71,-0.66 4.29,1.94 2.3,1.27 5.96,-0.02 6.83,-2.57 -0.51,-2.81 0.78,-5.44 1.5,-8.17 0.77,-1.87 3.93,1.21 5.57,1.75 2.04,2.28 4.63,3.86 7.4,4.84 2.72,2.9 5,-2.29 8.05,-0.66 2.42,0.7 -1.69,0.86 -2.16,1.8 -1.58,1 -0.94,2.98 -2.64,4.05 -0.87,2.65 2.35,4.7 1.48,7.28 0.01,2.24 2,3.06 1.53,5.18 2.05,2.31 -2.94,0.21 -1.67,3.07 0.41,2.71 2.06,5.63 2.66,7.96 -1.4,1.58 -3.89,-2.8 -4.72,-0.12 -0.51,-2.33 -5.01,-0.05 -2.24,-2.75 1.89,-2.25 -0.89,-2.79 -2.14,-3.4 -0.39,-1.7 3.13,-2.19 0.43,-2.98 -2.55,-2.17 -6.8,-1.82 -7.18,2.01 -1.56,2.2 -2.45,4.87 -3.2,7.25 -1.02,1.28 -1.42,2.9 -1.76,4.47z\",\"name\":\"Azerbaijan\"},\"ir\":{\"path\":\"m679.21,458.81c-1.85,-0.64 -2.96,-4.67 -5.07,-2.4 -2.51,1.13 -4.99,-0.69 -7.5,-0.94 -1.54,-1.25 -4.65,1.4 -4.88,0.3 -0.35,-2 -1.76,-5.08 -4.31,-4.59 -0.55,-2.48 -2.8,0.93 -4,-1.28 -1.15,-1.36 -3.82,-0.5 -2.7,-3.18 1.2,-2.24 -1.18,-2.93 -1.92,-2.92 -0.76,-2.14 0.85,-1.8 1.93,-2.95 -0.87,-1.54 -2.25,-2.23 -1.18,-3.98 1.41,-1.22 -0.93,-2.74 1.62,-3.12 2.22,-2.84 -3.32,-4.02 -3.44,-6.68 1.23,-0.62 3.69,-3.96 0.62,-3.5 -2.16,1.88 -4.6,2.34 -7.4,1.61 -2.13,2.68 -1.52,-4.01 -4.35,-3.02 -2.59,1.12 -1.74,-3.71 -4.6,-2.9 0.47,-2.81 -2.6,-2.62 -3.34,-4.74 -3.51,-0.37 -2.73,-5.88 -6.79,-4.9 -2.43,-0.23 0.88,-4.74 -1.15,-6.42 -2.63,1.81 -2.65,-3.09 -4,-4.32 -2.26,0.51 -1.17,-4.01 -3.82,-4.01 -1.08,-1.34 3.43,-0.98 2.24,-3.41 -0.62,-1.73 -1.46,-4.27 1.42,-2.93 2.06,1.49 5.14,2.91 7.63,3.88 2.25,1.24 5.18,-0.04 7.5,-0.74 2.07,-1.71 5.07,-2.61 4.75,-5.97 2.3,-2.33 1.71,-5.53 3.7,-8.09 0.98,-2.61 2.58,-5.68 5.71,-3.44 1.82,0.32 -1.95,3.66 1.08,3.95 4.06,-0.35 -2.73,4.32 1.52,4.83 1.27,-1.49 2.59,2.44 3.8,0.15 1.45,1.58 3.99,1.1 4.87,0.71 1.82,2.85 3.68,6.92 7.62,6.9 3.17,0.36 5.34,-2.56 8.13,-3.02 2.01,0.9 4.99,2.01 6.34,2.88 -0.02,22.74 0.03,45.49 -0.03,68.23z\",\"name\":\"Iran\"},\"ge\":{\"path\":\"m581.92,380.27c-2.26,-0.5 1.41,-3.83 -0.72,-5.4 -1.82,-2.3 -4.05,-4.17 -5.45,-6.77 -1.72,-2.18 -4.46,-0.36 -5.95,-2.58 -2.48,-1.15 -5.99,1.77 -7.69,-0.38 -1.24,-0.61 -3.4,-1.34 -1.11,-2.52 2.92,-1.18 5.31,-0.74 8.31,-1.17 2.62,-0.64 4.81,0.81 7.27,-1.05 1.64,-1.03 2.03,-2.53 4.37,-2.32 3.09,-1.55 5.23,0.93 8.34,0.23 1.97,-0.34 3.8,-1.06 3.76,1.37 3.33,1.16 4.09,-3.43 6.09,-4.97 1.82,1.19 3.56,0.44 3.29,-1.84 2.38,1.1 4.89,0.94 6.98,-0.29 0.1,2.19 0.6,4.52 3.44,3.9 1.82,0.87 6.7,-2.08 4.44,1.62 -1.04,4.09 6.18,1.33 6.51,4.88 -0.55,2.71 -3.63,-0.63 -4.78,1.93 -2.42,2.07 -3.95,-2.25 -6.59,-0.28 -2.88,0.84 -1.75,4.15 -4.11,5.26 -2.15,1.64 -6.02,2.97 -7.99,5.72 -1.4,1.55 -3.24,0.61 -4.57,1.11 -0.32,-2.7 -4.41,-0.39 -5.08,-2.59 -2.74,0.39 -1.4,4.41 -4.46,3.55 -2.08,-0.04 -2.63,2.5 -4.3,2.58z\",\"name\":\"Georgia\"},\"sy\":{\"path\":\"m570.98,505.1c-2.37,-0.06 -4.22,-2.23 -6.66,-1.9 -1.76,1.54 -0.95,-3.61 -2.17,-4.66 0.26,-2.1 3.06,-4.25 2.48,-6.23 -2.86,0.37 -0.12,-3.18 1.61,-2.81 1.41,-1.1 -2.08,-2 0.23,-3.24 2.46,-1.85 0.82,-6.41 -2.32,-5.73 1.74,-2.54 -3.41,-1.48 -4.52,-0.5 -2.16,-1.45 -1.71,-4.59 -2.2,-6.89 -0.72,-2.13 -3.63,-2.2 -2.69,-4.95 -1.91,-3.07 4.61,0.44 2.96,-3.37 1.96,-1.34 -0.54,-4.12 2.56,-4.37 1.92,-1.95 -2.9,-3.08 -1.96,-5.67 -0.17,-2.68 3.53,-1.88 4.07,-0.24 2.8,-1.4 6.26,-2.87 7.96,-6.08 1.77,-3.87 6.01,-0.57 8.96,-1.32 4.89,-1.98 9.3,-5.28 12.15,-9.78 2.06,-3.09 5.52,-4.42 8.88,-5.51 3.15,-0.62 4.71,-4.01 6.68,-5.54 2.16,2.06 -0.35,4.49 -0.71,6.75 -0.34,2.94 -3.64,3.54 -4.67,5.93 -0.77,2.72 0.96,5.34 2.92,7.06 1.91,2.86 0.25,6.61 2.05,9.52 1.43,2.7 2.07,6.08 0.11,8.71 -2.41,4.04 -5.84,7.35 -8.54,11.19 -6.92,8.84 -13.8,17.72 -20.31,26.87 -1.64,2.62 -4.19,2.66 -6.86,2.76z\",\"name\":\"Syrian Arab Republic\"},\"tr\":{\"path\":\"m494.91,482.2c-2.64,-0.83 -6.61,0.7 -6.69,-3.38 -0.28,-2.26 -4.06,-2.7 -3.32,0.14 -2.13,0.72 -2.01,-4.36 -4.24,-2.06 -1.1,1.64 -1.71,4.09 -2.75,1.3 -0.06,-0.7 3.87,-0.84 1.58,-2.85 -2.66,-0.75 -4.9,2.05 -7.56,2.3 -3.22,0.12 2.63,-2.09 -0.16,-3.58 -1.02,-1.26 -2.59,-1.78 -3.85,-0.25 0.8,-2.14 -2.11,-2.59 -0.3,-4.42 0.7,-2.91 -3.46,-4.14 -4.72,-3.08 -0.35,-2.13 -2.41,-1.66 -2.94,-0.12 -0.96,-0.52 -4.49,-1.13 -1.65,-1.67 1.95,-1.12 -0.35,-1.93 -0.64,-2.3 -0.1,-2.91 1.76,1.21 2.44,2.3 1.21,0.53 0.61,-1.54 2.32,-0.91 2.14,0.31 3.08,-4.19 0.9,-2.3 -2.98,0.71 -3.35,-2.88 -0.63,-3.63 1.42,-2.31 -2.41,-1.49 -2.02,-3.47 -1.48,-1.26 -3.08,-1.7 -1.12,-3.61 1.88,-4.06 -3.41,-1.44 -4.89,-0.21 -3.22,2.13 -1.41,-2.71 -2.53,-4.43 0.27,-1.5 2.4,-1.02 1.65,-3 1.08,-2.79 3.49,-3.54 5.85,-4.95 1.33,-0.2 3.18,2.13 5.06,0.5 2.19,-0.32 0.53,-4.12 2.21,-2.66 -1.01,2.78 3.65,-0.5 5.07,-0.34 1.73,-0.22 7.01,-0.13 5.15,-2.97 -1.48,-0.21 -3.18,0.39 -0.99,-0.95 1.96,-1.62 4.19,-2.4 6.66,-2.8 2.77,-0.54 1.2,-2.91 -0.89,-1.86 -1.93,1.45 -3.4,0.81 -4.38,0.32 -3.58,0.35 -2.31,-4.79 0.81,-3.52 2.71,0.01 5.57,-0.39 7.64,-2.28 2.46,-0.32 5.31,1.16 7.39,-0.69 2.9,-0.41 1.41,-4.52 4.23,-5.54 2.71,-2.98 4.61,-6.84 8.39,-8.68 2.29,-1.78 4.29,-3.83 7.39,-4.02 3.16,-0.7 6.47,-1.22 9.26,-2.97 -0.18,-2.01 2.92,-3.03 2.12,-0.46 1.09,2.77 5.37,3.22 7.04,0.72 1.14,-1.37 -0.27,2.45 1.16,0.14 2.04,-1.94 2.88,3.79 5.57,2.83 1.27,-1.86 4.62,-3.78 5.67,-1.09 1.67,-0.99 4.1,0.27 5.52,-0.17 -0.07,-1.45 1.44,-1.93 0.76,-0.72 3.48,0.31 7.66,-0.08 9.71,-3.32 2.34,-1.18 4.33,-4.18 7.15,-3.36 2.71,-0.07 6.67,-0.67 7.5,-3.83 1.38,-2.88 4.81,-4.34 5.49,-7.63 0.34,-3.02 3.69,-0.01 3.89,-2.79 0.79,-1.71 6.06,-0.8 5.2,-2.54 -0.27,-1.98 1.64,-2.11 0.91,-0.61 1.97,-1.13 4.24,-0.33 5.11,0.95 0.95,1.76 2.34,-1.7 3.43,0.93 2.07,0.94 4.5,1.8 3.64,4.81 0.12,2.83 2.56,6.38 5.64,4.35 1.45,-1.61 6.05,-1.12 6.12,-0.28 -2.87,1.25 2.28,4.65 -1.45,5.76 -2.31,0.86 -1.86,1.74 0.02,2.55 2.07,1.41 1.16,4.02 3.6,4.69 1.23,1.57 1.59,5.71 3.8,4.2 0.43,2.37 -1.79,7.52 2.74,6.05 2.64,-0.44 0.94,3.97 3.94,4.02 3.58,1.02 -1.74,2.3 -1.12,4.76 -1.2,0.98 -0.5,-3.85 -3.12,-2.67 -1.98,1.2 -2.57,4.14 -5.61,3.29 -2.88,-0.31 -4.84,1.72 -7.02,2.7 -0.69,1.88 -0.86,5.21 -2.91,2.44 -2.75,-0.22 -2.61,4.46 -5.58,4.92 -2.98,1.72 -6.75,1.93 -9.15,4.66 -2.61,2.66 -4.36,6.14 -7.61,8.16 -2.25,1.32 -4.52,3.36 -7.26,3.28 -3.54,-1.52 -7.49,-0.78 -9.08,3.03 -1.68,2.28 -5.43,4.75 -7.39,2.82 -3.82,-1.14 -4.64,3.62 -2.75,6 0.73,1.14 2.5,1.57 0.17,2.12 -3,0.1 0.83,3.76 -2.09,4.07 1.59,1.89 -1.39,2.48 -1.35,0.31 -1.32,-1.73 -3.85,-3.07 -1.43,-5.18 3.46,-2.09 -0.87,-8.48 -3.12,-4.45 -0.21,1.09 -4.52,4.06 -1.07,3.29 -0.14,0.32 -3.7,3.62 -5.39,1.57 -3.14,-1.5 -6.7,0.91 -7.75,3.93 -2.31,1.12 0.64,5.77 -2.52,4.44 -0.89,2.68 -3.25,3.27 -5.84,4.06 -1.96,1.06 -3.83,3.65 -6.37,2.47 -2.84,-1.55 -5.07,-4.65 -8.7,-4.14 -2.94,-0.38 -6,-0.94 -8.9,-0.06 -3.48,-0.29 -3.26,3.57 -2.85,5.62 -0.19,1.75 1.15,3.5 -1.34,2.67 -2.13,0.36 -2.94,2.88 -4.85,3.38z m-22.48,-0.92c1.54,-1.56 1.67,0.46 0,0z m4.91,-2.51c-0.79,-0.93 0.97,-1.15 0,0z m-7.81,-0.87c-2.21,-0.79 -0.04,-1.14 0.54,-0.39 -0.12,0.2 -0.29,0.4 -0.54,0.39z m-17.07,-35.78c-2.05,-1.66 3.84,-4.8 1.02,-1.64 -0.17,0.27 -1.7,3.54 -1.02,1.64z m-2.5,-4.63c-2.27,-0.95 2.99,-3.59 0.8,-5.77 -1.18,-2.59 4.67,-3.55 1.64,-6.24 -1.25,-1.27 -3.7,-1.75 -1.56,-3.41 0.31,-2.43 2.93,-0.92 3.7,-3.21 1.99,-1.8 4.08,2.49 6.12,-0.22 3,-2.82 1.8,3.03 4.59,3.75 2.54,1.72 5.71,1.31 8.59,1.46 1.59,1.71 -1.83,5.17 -3.31,2.87 -1.59,0.83 -4.21,-0.49 -5.46,2.07 -2.23,0.06 -4.36,0.17 -4.68,3.06 -0.43,2.55 -2.87,5.66 -5.23,3.75 -1.9,0.1 -3.3,1.78 -5.2,1.9z\",\"name\":\"Turkey\"},\"am\":{\"path\":\"m631.96,389.85c-1.96,-0.78 -2.5,-4.05 -4.9,-3.4 0,-2.98 -2.99,-2.85 -3.89,-0.42 -0.72,0.59 -2.05,-1 -2.73,0.47 -1.44,-4.24 -3.82,2.15 -6.08,-0.34 -2.43,-1.36 -5.05,-0.13 -7.33,0.88 -1.6,1.02 -2.24,-1.35 -3.25,-2.19 -0.22,-2.63 -0.35,-6.8 -3.95,-6.8 -1.56,-1.33 3.34,-2.22 3.67,-4.1 2.01,-1.81 4.84,-2.17 7,-3.75 -1.93,-0.72 2.92,-0.35 0.29,0.72 0.12,2.73 3.55,-1.6 5.25,0.33 2.07,0.17 -1.51,3.12 1.09,4.06 1.57,1.97 7.78,-0.09 6.04,3.56 -1.81,0.88 -2.21,2.81 0.36,2.27 2.62,0.26 4.73,3.06 7.3,0.67 1.25,-0.38 -1.56,2.52 0.95,2.4 1.37,0.14 2.22,0.32 0.58,1.07 -0.16,1.55 3.78,3 0.58,4.04l-0.53,0.37 -0.44,0.16 0,0z\",\"name\":\"Armenia\"},\"cy\":{\"path\":\"m527.35,491.44c-2,0.03 -5.42,-2.87 -2.34,-3.85 0.27,-2.84 4.77,-0.45 3.78,-3.88 -1.1,-2.02 2.82,-0.4 4.03,-1.67 3.21,-1.08 5.34,-3.84 7.9,-5.9 -1.85,1.69 -5.66,5.67 -1.55,7.09 -1.16,0.96 -4.02,1.69 -3.88,3.92 -1.79,0.94 -4.14,2.55 -4.75,3.95 -1.18,-1.33 -2.1,0.23 -3.19,0.34z\",\"name\":\"Cyprus\"},\"ie\":{\"path\":\"m160.13,300.45c-1.94,-0.73 -5.41,-0.29 -5.93,-1.1 2.68,-0.96 1.02,-3.47 -1.27,-2.29 -2.17,-0.03 4.61,-0.27 1.86,-1.87 -1.29,0.35 -5.82,0.84 -4.6,-0.88 0.33,-2.41 5.15,0.07 4.57,-2.91 -1.5,-0.99 -3.62,0.6 -3.81,-1.26 1.2,-0.91 6.26,2.54 3.91,-0.67 0.38,-1.38 3.44,-1.82 5,-1.34 1.1,0.96 5.65,0.21 3.16,-0.84 -0.11,-2.83 -2.54,-0.03 -3.01,-0.47 -0.23,-0.23 -3.43,-0.5 -1.1,-1.34 2.22,-1.01 0.54,-4 2.82,-3.42 2.56,1.02 3.91,-3.17 0.52,-2.46 -1.68,0.14 -2.56,-0.23 -2,-1.83 -0.18,-2.01 -5.12,-1.21 -3.94,-2.82 2.15,0.5 2.19,-2.65 4.57,-1.69 2.67,-0.16 1.13,-2.7 -0.21,-3.26 0.29,-1.31 0.02,-3.18 -0.75,-3.28 2.65,-0.82 4.91,0.87 5.93,2.56 1.46,-1.86 3.2,1.45 5.23,1.05 -1.45,-1.4 -1.04,-3.03 1.32,-2.78 1.21,-0.78 -0.05,1.72 1.32,2.45 1.11,1.84 4.55,5.05 6.16,2.17 -0.49,-1.92 2.26,-1.77 1.43,0.13 0.94,1.15 1.06,2.27 0.8,3.26 0.63,1.48 4.47,-0.64 2.75,0.86 -2.34,0.42 -0.05,3.2 -0.77,4.83 0.46,1.62 -0.08,2.98 -1.28,2.32 1.02,2.41 1.46,5.54 -0.48,7.61 -1.25,2.01 -3.34,4.38 -4.14,6.02 -2.56,-0.85 -5.09,-0.34 -7.67,-1.06 -1.16,0.41 -0.62,2.52 -2.3,1.42 -1.5,0.14 -2.91,2.49 -3.4,0.19 -2.29,-1.05 -1.04,2.27 -2.69,2.29 -0.11,0.95 -1.6,-1.12 -2.01,0.4z m13.73,-33.46c2.33,-2.06 -0.9,-1.95 -2,-2.14 -1.29,-0.53 -2.55,-1.96 -0.25,-1.08 1.89,0.69 2.47,-1.66 2.15,-3.1 -1.16,-1.71 7.03,-1.16 4.23,1.31 -0.31,1.85 2.66,-0.08 1.09,1.63 -0.53,1.73 -5.09,0.69 -2.83,2.72 -0.77,0.31 -1.61,0.36 -2.38,0.64z m6.45,-5.05c0.02,-0.88 0.61,0.23 0,0z\",\"name\":\"Ireland\"},\"gb\":{\"path\":\"m182.64,325.46c0.06,-1.95 -4.47,-2.09 -0.74,-2.3 2.67,-0.61 3.94,-3.31 6.49,-4.14 2.12,-0.77 1.4,-4.5 3.94,-3.31 1.45,-3.67 5.43,-1.45 8.06,-0.26 2.91,0.6 2.6,-3.72 5.07,-4.06 1.35,-0.1 4.35,-3.93 1.42,-2.57 -1.86,1.99 -5.05,0.84 -6.82,2.84 -2.27,-0.51 -2.72,-5.62 -5.77,-3.31 0.24,-2.37 -1.53,-4.27 -3.69,-2.44 -0.87,0.75 -2.94,0.79 -1.58,-0.17 0.16,-1.27 -3.6,-0.88 -1.52,-2.98 1.52,-0.74 3.44,0.29 4.82,-1.36 2.13,0.95 4.49,-1.92 5.83,-3.38 1.68,-2.26 0.05,-8.36 -3.37,-5.58 -1.46,1.33 -0.19,-1.41 0.97,-0.91 1.28,-1.84 2.91,-2.79 5,-2.8 1.2,0.32 4.62,-0.54 5.23,2.01 0.71,1.84 0.61,0.28 0.62,-0.81 -0.49,-1.45 0.01,-1.88 0.83,-1.63 -1.44,-2.21 1.58,-2.99 1.67,-4.6 -1.45,-0.49 -1.63,-2.14 0.09,-1.51 0.69,-1.16 0.79,-2.38 1.37,-3.56 -0.63,-2.27 -3.62,2.01 -2.38,-1.12 -0.36,-1.35 -2.39,0.41 -1.46,-1.51 -2.08,-2.31 0.12,-6.19 3.07,-5.98 2.74,-1.73 -0.83,-1.86 -2.08,-2.37 -0.92,0.48 -3.28,2.29 -4.42,1.19 -1.32,1.2 -1.79,-3.4 -3.43,-0.83 0.32,2.13 0.14,1.46 -0.76,0.01 -1.33,-0.68 -2.66,-1.39 -1.32,-3.18 1.13,-2.26 5.13,-4.6 2.33,-7.17 0.52,-2.42 1.47,-4.31 0.99,-6.83 -1.19,-2.25 -5.91,3.7 -3.96,0.19 -1.17,-1.95 1,-2.29 1.54,-3.39 -1.93,-1.31 3.92,-1.92 1.97,-3.06 1.93,-2.14 -1.4,-1.12 -1.91,0.17 -2.64,0.37 -2.78,2.95 -5.17,3.25 1.64,-1.88 1.56,-3.32 4.36,-3.1 0.45,-1.67 -5.98,-1.25 -1.81,-1.19 1.82,-0.7 -1.08,-3.69 1.83,-2.58 2.2,1.18 2.55,-1.86 1.62,-2.28 3.21,-0.32 0.94,-5 -0.12,-6.67 -1.49,-3.19 1.62,1.59 1.66,-1.31 -0.16,-0.99 3.11,1.17 2.06,-1.21 -1.02,-1.19 -0.29,-1.17 0.73,-0.82 0.07,-1.49 0.01,-1.71 1.64,-1.31 1.56,-1.15 -0.74,-2.21 0.86,-3.26 -0.88,-3.08 1.49,-0.59 1.87,-0.27 0.74,0.04 0.92,2.92 2,0.79 2.21,-0.9 6.43,0.18 7.86,0.3 -1.51,1.12 -1.16,3.83 -3.76,4.28 -1.25,1.24 -5.25,2.21 -4.45,4.19 2.02,-0.77 1.46,0.73 0.51,0.2 -2.65,-1.31 -3.91,3.83 -0.65,3.27 1.6,-1 4.76,-1.27 6.96,-0.43 2.15,0.77 9,0.4 6.36,4.13 -2.17,1.32 -1.95,4.3 -3.79,5.88 -1.36,2.24 -3.73,4.99 -6.67,3.85 -2.54,0.88 -0.66,2.52 1.1,1.38 0.78,-0.5 3.15,3.35 0.84,1.99 -2.07,-0.28 -3.16,1.31 -5.18,1.63 -0.02,2.53 4.56,1.95 5.82,1.47 2.3,1.2 3.8,3.55 4.55,5.85 2,2.23 0.13,5.79 1.35,8.49 -0.45,3.02 1.26,4.86 3.81,6.01 1.66,1.49 2.34,4.19 3.57,5.37 -2.57,1.95 1.1,5.12 0.44,6.31 -2.04,-0.08 1.34,3.78 1.3,5.11 0.78,2.24 -5.08,2.32 -2.09,4.71 1.56,2.69 3.3,0.05 4.83,-1 2.51,1.1 6.37,1.79 6.61,5.25 -0.28,2.6 -1.71,7.67 -4.87,6.84 -2.14,0.29 1.39,3.23 -1.35,2.01 -1.64,-1.62 -4.38,2.64 -1.7,1.39 1.98,0.5 -1.21,2.23 -2.35,1.41 -3.04,0.03 -0.52,3.18 1.11,2.57 2.13,-1.55 -0.82,1.67 1.85,1 1.37,0.01 4.16,-1.13 2.4,1.04 0.18,1.94 -3.04,1.77 -3.79,3.01 -3.03,-0.26 -5.14,2.46 -7.81,0.22 -2.14,-0.87 -5.12,1.06 -5.71,-1.04 -0.97,0.35 -1.61,-1.39 -2.37,0.11 -0.34,-1.96 -3.3,-2.15 -1.9,0.13 -1.76,0.29 -4.97,-1.2 -5.38,0.98 -2.03,-0.7 -3.26,-0.69 -4.99,-2.14 -2.67,-1.4 -6.68,-1.13 -6.68,2.71 -0.68,3.61 -3.23,0.34 -4.72,-0.57 -1.81,-0.09 -4.28,-1.13 -5.91,0.19 -1.52,-0.34 -2.18,1.47 -2.78,2.5z m18.76,-70.13c1.65,1.54 3.03,-0.19 0.57,-0.92 -0.47,-0.23 -0.39,0.68 -0.57,0.92z m-3.12,31.93c0.55,0.53 0.27,0.88 0,0z m-1.17,-10.07c0.02,-1.53 3.39,-4.02 1.66,-1.22 -0.39,0.58 -0.96,1.08 -1.66,1.22z m-10.63,-1.73c-1.59,-0.31 -2.08,-2.29 -3.03,-0.36 -1.91,-0.73 1.49,-2.2 -1,-2.29 0.13,-2.31 -2.8,-4.88 -3.79,-2.04 0.08,3.32 -3.97,-0.09 -4.6,-1.78 -1.85,-2.46 4.1,-0.54 2.7,-3.31 3.07,0.55 2.59,-4.32 5.36,-2.92 1.06,-1.19 2,-1.61 3.15,-1.03 2.23,-0.98 4.88,1.21 3.52,3.35 -0.19,2.26 3.15,1.24 0.87,3.27 -2.06,1.44 -0.04,2.03 1.25,1.47 1.84,1.95 -0.91,4.87 -2.77,3.75 -0.28,0.8 -0.67,1.84 -1.67,1.88z m10.61,-7.92c-1.67,-0.09 0.88,-0.41 0,0z m-4.29,-6.97c1.08,-0.83 2.3,-4.85 2.33,-3.8 -0.86,1.14 -0.52,3.62 -2.33,3.8z m2.73,-6.13c0.35,-1.24 0.97,-0.17 0,0l0,0z m-3.97,-25.03c-1.05,-1.04 1.79,-1.33 0,0z m1.85,-1.48c-0.51,-1.01 -1.32,-1.32 -0.4,-1.6 -1.54,-1.3 0.12,-2.32 1.22,-0.9 1.22,-0.53 0.35,-2.59 1.9,-1.78 0.84,-0.86 3.02,-1.98 1.27,-0.28 -1.41,1.61 -1.17,5.41 -3.42,2.95 -0.74,0.32 -0.1,1.35 -0.58,1.61z m38.33,-20.76c-1.93,-1.65 4.17,-0.89 0.99,-0.51l-0.47,0.12 -0.53,0.39 0,0z\",\"name\":\"United Kingdom\"},\"ch\":{\"path\":\"m292.05,389.98c-1.12,-2.03 -1.49,-3.96 -4.14,-4.68 0.24,-1.27 0.28,-4.19 -2.02,-2.48 -2.76,1.07 -0.98,6.19 -4.8,5.6 -1.34,-2.05 -4.35,2.18 -5.85,-0.49 -0.66,-1.9 -1.54,-2.82 -1.22,-5.23 -0.26,-1.58 -4.49,-1.34 -5.35,0.35 0,0.96 -0.92,3.04 -1.36,2.14 2.08,-0.65 -0.4,-3.99 1.78,-5.21 1.94,-0.57 2.18,-1.6 2.3,-3.5 2.42,-0.82 3.23,-3.53 5.4,-5.02 0.92,-1.36 3.51,-0.53 3.7,-1.93 2.51,-0.36 5.31,-0.33 7.48,-0.01 1.57,-0.63 0.5,-2.03 0.36,-2.23 1.31,-1.57 1.36,1.33 2.5,0.98 1.1,0.96 4.91,-0.68 5.97,2.04 0.36,1.7 -2.95,6.33 1.28,6.08 1.9,0.87 4.09,3.47 5.78,0.3 -0.28,1.18 -0.17,4.33 -0.42,4.42 -1.87,-2.39 -4.17,0.79 -2.27,2.33 0.4,3.64 -0.7,-1.85 -2.69,-0.06 -1.62,2.46 -2.25,-1.46 -3.43,-1.76 -2.43,0.76 -0.07,4.33 -2.78,4.97 -1.02,0.89 -0.72,2.33 -0.22,3.4z M275.63,370.8c0.49,-1.83 2.92,0.14 0.45,0.04l-0.53,0.11 0.08,-0.14 0,0z\",\"name\":\"Switzerland\"},\"at\":{\"path\":\"m338.89,381.72c-2.92,-0.37 -5.68,-0.8 -8.68,-1.29 -3.41,-0.44 -7.47,0 -10.13,-2.59 -0.49,-1.79 -2.01,-0.99 -0.74,-2.9 -1.54,-1.34 -4.15,1.63 -6.36,0.74 -2.58,-0.56 -3.71,1.14 -4.67,3.02 -0.77,-1.61 -4.07,-0.58 -3.15,-2.45 -2.02,-1.72 -4.43,3.34 -5.34,-0.45 -2.71,0.05 -3.32,-2.5 -1.76,-4.48 -0.11,-1.92 0.65,-1.26 2.03,-1.24 0.77,2.34 2.91,4.54 4.57,1.3 -0.46,-2.13 1.09,-1.56 2.51,-1.62 1.01,3.44 4.52,1.32 6.34,0.3 1.07,-2.1 5.55,-0.39 5.96,-2.32 1.02,0.88 3.01,0.37 3.69,0.59 0.18,3.89 5.07,0.73 2.69,-1.53 -0.2,-1.43 -1.39,-3.39 -2.11,-5.03 1.93,-1.47 5.36,-2.58 5.54,-5.05 1.88,0.9 2.55,-1.98 3.13,-1.73 2,1.9 4.33,0.91 6.33,0.45 0.7,-1.97 2.92,-2.39 2.31,-5.03 1.96,0.92 4.91,0.17 6.97,1.75 1.9,2.39 4.37,-0.77 6.11,0.38 1.43,-0.03 2.77,1.31 1.21,2.94 -0.45,2.79 3.86,4.35 2.35,7.1 1.97,3.48 -4.51,0.08 -4.56,2.79 1.63,1.11 3.27,1.96 0.42,2.95 -0.98,1.81 1.97,4.01 -0.88,5.49 -1.01,1.14 -3.1,1.64 -2.24,3.63 -2.75,-0.79 -4.87,2.27 -7.7,0.89 -1.89,0.31 -2.39,2.61 -3.87,3.38z\",\"name\":\"Austria\"},\"cz\":{\"path\":\"m335.18,355.05c-3.65,-0.41 -4.96,-4.57 -8.41,-5.66 -1.31,-1.75 -2.19,-2.91 -4.32,-3.66 -1.8,-1.56 -2.64,-3.53 -1.6,-5.57 -0.16,-1.57 -4.02,-3.53 -3.2,-4.17 1.42,3.2 2.44,-2.24 4.26,-2.25 1.35,1.3 3.09,-0.63 3.77,-1.12 1.58,-1.86 4.18,-2.74 6.59,-3.91 1.63,-0.69 3.11,-2.35 4.59,-0.56 2.65,1.13 2.61,-4.69 4.17,-1.06 1.38,1.66 3.64,0.69 5.11,2.36 0.67,1.75 5.33,-1.17 2.84,1.24 -1.67,2.06 2.09,2.81 2.61,4.74 2.09,1.86 2.12,-0.93 3.96,-1.42 0.43,-1.39 -1.9,-2.7 0.65,-1.55 1.23,1.3 3.29,0.96 4.4,0.53 -3.27,0.95 2.17,5.16 3.09,2.65 2.93,0.44 4.53,2.63 6.07,4.63 -2.15,1.71 -4.92,3.04 -5,6.15 -1.22,2.56 -3.35,3.75 -6.24,3.67 -1.85,1 -3.16,2.67 -5.05,0.79 -2.11,1.83 -4.69,0.96 -6.9,-0.42 -1.92,-1.1 -4.07,-0.45 -5.85,-0.93 -0.34,2.31 -2.03,3.48 -2.87,5.34 -1.07,-1.47 -1.28,0.34 -2.66,0.17z m-0.68,-28.45c-2.43,-2.03 2.32,0.24 0,0z\",\"name\":\"Czech Republic\"},\"sk\":{\"path\":\"m364.44,362.94c-2.39,-2.37 -6.56,-2.63 -7.73,-6.02 -0.46,-2.43 0.4,-6.56 3.64,-6.16 3.23,0.29 4.91,-3 5.9,-5.48 0.17,-1.96 3.95,-5.08 5.19,-3.02 2.43,1.82 3.49,-4.97 4.66,-0.89 1.56,0.35 1.91,0.85 1.91,2.52 2.64,1.02 3.89,-1.84 5.57,-3.22 1.58,-0.07 4.26,1.88 5.1,-0.34 0.99,-1.59 4.74,-1.57 6.47,-0.13 1.28,2.35 6.24,0.73 4.22,4.32 -1.5,2.17 -0.53,7.67 -4.43,6.22 -0.53,-3.18 -3.88,-1.31 -5.83,-0.46 -2.77,-2.02 -4.98,0.68 -5.07,3.51 -1.08,0.67 -2.09,-0.14 -2.29,1.79 -1.29,1.17 -3.96,-2.16 -4.46,1.1 -0.72,2.43 -5.78,-0.07 -5.66,3.66 1.11,2.54 -4.04,1.94 -5.84,2.51 -0.44,0.04 -0.88,0.07 -1.32,0.1z\",\"name\":\"Slovakia\"},\"hu\":{\"path\":\"m369.77,387.01c-2.75,-0.58 -5.39,-1.37 -7.78,-2.73 -2.27,-2.63 -5.77,-3.91 -7.5,-7.04 -1.21,-1.85 -2.06,-2.65 0.1,-3.74 1.43,-1.97 -1.64,-4.55 1.32,-5.48 2.04,-1.7 -3.3,-3.48 -0.09,-2.71 2.81,1.04 3.86,-1.91 3.11,-3.93 1.93,-1.05 3.43,2.43 5.44,2.58 3.24,-0.18 6.53,-0.68 9.48,-2.09 -2.94,-1.84 0.68,-3.88 2.85,-2.99 1.75,-0.27 1.26,-4.31 3.33,-2 2.26,0.8 3.01,-1.99 4.8,-2.5 0.41,-2.48 1.52,-4.92 4.25,-3.08 1.93,-0.18 4.28,-2.95 5.05,0.14 2.1,1.7 4.8,-1.81 6.38,0.84 2.12,-0.07 1.45,3.23 3.34,1.35 3.46,3.21 -4.18,3.49 -4.55,6.38 0.35,2.87 -2.65,4.72 -2.5,7.52 0.37,3.17 -2.46,5.43 -2.51,8.54 0.01,3.02 -4.16,0.17 -4.1,3.12 -3.14,1.57 -7.09,0.21 -9.73,1.82 -1.24,2.36 -3.12,1.16 -4.53,3 -2.57,0.36 -3.31,3.42 -6.16,3.01z\",\"name\":\"Hungary\"},\"lt\":{\"path\":\"m397.76,280.99c-1.28,-1.32 -1.63,-4.58 -4.11,-3.7 -1.13,-2.07 -4.01,-0.28 -3.26,-3.14 1.62,-3.48 -2.4,-7.19 -5.64,-5.13 -2.28,0.26 -5.13,-1.48 -6.05,-2.17 -0.51,-2.23 -1.53,-3.51 -2.2,-5.4 -1.37,-2.68 1.24,-5.63 3.5,-7 1.88,-1.44 4.85,-0.65 6.6,-1.37 0.56,-1.26 2.33,2.09 2.82,-0.31 2.06,-0.86 4.97,0.1 6.62,-0.3 1.76,-0.28 3.35,-0.61 3.78,-2.83 1.19,2.4 3.3,3.12 5.7,2.26 2.79,0.52 4.16,3.86 7.04,4.08 1.64,1.42 -0.82,5.15 2.39,4.69 0.41,1.84 -3.75,0.79 -2.82,3.52 -2.05,1.6 -2.93,3.79 -1.88,6.23 -0.12,2.13 -0.68,3.69 -2.75,4.26 -0.43,1.13 -0.04,1.82 -1.97,2.11 -0.51,1.51 -1.38,2.09 -2.67,3.35 -1.72,-1.32 -3.41,0.53 -5.09,0.87z m13.27,-5.67c-0.11,-1.17 -1.77,-2.09 0.31,-1.22 0.43,0.34 0.36,1.19 -0.31,1.22z\",\"name\":\"Lithuania\"},\"lv\":{\"path\":\"m375.49,257.31c-1.25,-2.79 -1.57,-6.54 -0.19,-9.24 2.63,-2.07 -0.8,-6.67 2.34,-8.6 1.69,0.07 4.11,-4.27 4.4,-1.32 2.44,1.48 4.79,3.19 5.76,5.78 2.55,1.96 6.17,0.07 7.13,-2.71 1.39,-2.75 -1.14,-5.3 -1.86,-7.82 1.34,-1.86 3.66,-3.57 5.64,-3.47 0.08,-0.9 1.63,1.08 2.69,0.67 1.72,0.06 3.13,2.25 4.97,3.22 2.21,0.36 3.53,-2.11 5.72,-1.12 1.76,-0.72 2.78,1.38 4.4,2.33 -0.55,1.5 -1.61,1.77 0.06,2.4 -0.17,1.1 -0.46,3.72 1.44,2.57 1.53,2.66 6.04,5.32 2.65,8.5 -1.42,1.56 -0.49,4.51 -3.48,3.69 -2.28,0.64 -3.94,4.9 -6.51,1.93 -2.03,-2.26 -5.06,-3.95 -7.91,-2.78 -1.1,-1.49 -3.6,-4.26 -4.46,-0.94 -1.47,1.77 -5.35,0.57 -7.87,1.17 -1.87,0.26 -2.16,0.89 -3.44,-0.06 -2.37,1.98 -6.1,0.17 -8.37,2.54 -1.6,0.14 -2,4.17 -3.11,3.25z\",\"name\":\"Latvia\"},\"md\":{\"path\":\"m454.92,374.42c-0.33,-2.09 -1.86,-4.78 -2.23,-7.4 0.38,-3.56 0.07,-7.47 -2.96,-9.91 -3.2,-3.43 -7.96,-5.44 -9.93,-9.93 -0.24,-2.34 -6.31,-3.34 -2.39,-4.03 2.67,0.33 3.73,-3.48 6.57,-2.14 1.32,0.97 1.83,2.54 3.78,1.18 -0.02,0.82 2.42,2.73 2.56,0.37 1.33,-1.44 3.96,3.6 4.43,1.55 1.2,-1.55 0.65,3.03 1.22,3.93 0.07,2.32 4.57,4.13 4.42,2.59 -0.43,1.81 0.64,4.31 3.01,4.64 2.61,-0.41 1.35,4.32 2.84,4.34 -0.24,1.12 -3.35,-2.1 -2.5,0.78 -1.04,0.18 -2.3,-2.64 -2.02,-0.03 -1.22,0.21 -2.31,-1.71 -3.62,0.36 -1.34,1.85 1.39,3.73 0.77,5.48 -0.5,2.25 -2.95,4.34 -2.23,7.32 -0.82,-0.46 -1.48,0.35 -1.72,0.91z\",\"name\":\"Moldova\"},\"ro\":{\"path\":\"m414.71,404.53c-2.94,-0.37 2.3,-2.82 -0.89,-3.86 -1.36,-0.38 -6.12,-1.72 -3.63,-3.39 3.62,-1.4 -2.29,-3.42 -3.82,-3.63 -1.25,0.73 1.78,4.33 -1.06,3.46 -0.47,-2.42 -4.24,0.23 -4.49,-2.27 -1.54,0.07 -1.87,0.1 -0.31,-0.74 0.46,-1.41 -2.15,-1.17 -0.71,-2.27 0.07,-4.02 -6.25,-1.24 -6.86,-4.86 0.56,-2.93 -2.25,-4.23 -4.45,-5.46 -1.23,-1.35 3.36,-1.23 3.59,-2.71 4.37,0.45 2.54,-4.6 4.68,-6.55 1.28,-2.95 0.7,-6.3 2.76,-8.97 0.62,-2.75 1.58,-5.21 4.69,-5.79 2.24,-1.25 2.4,-5.8 5.34,-3.67 2.44,-0.6 4.8,0.38 7.17,-0.21 2.51,-1.94 3.7,1.15 5.91,1.18 2.03,-1.31 2.68,-4.39 5.67,-3.96 2.31,-0.28 4.86,-1.95 4.49,-4.32 1.75,-2.97 4.98,-1.01 6.29,1.29 1.93,4.74 7.06,6.72 10.28,10.39 2.93,2.37 2.34,6.09 2.36,9.35 0.53,2.52 1.69,4.86 1.92,7.13 1.82,1.67 4.12,3.74 6.83,2.36 1.37,-1.24 4.51,-5.35 6.51,-2.84 1.18,1.97 2.1,5.63 -1.2,6.33 -1.85,1.04 -1.42,-3.67 -3.88,-1.61 -1.51,1.92 1.84,2.51 -0.11,4.51 -0.61,2.57 2.04,-0.86 0.82,1.98 -2.28,2.63 -0.38,5.59 -0.04,8.5 -1.15,2.51 -5.2,-0 -6.02,-1.11 -1.09,1.46 -1.67,-0.92 -3.54,0.54 -1.82,0.49 -3.31,-1.46 -5.44,0.01 -3.08,1.35 -6.52,2.81 -8.17,5.95 -1.31,3.55 -4.97,3.29 -8.01,2.77 -2.75,-0.48 -4.92,1.71 -7.44,1.75 -2.74,-0.25 -5.83,-1.37 -8.31,0.42l-0.52,0.24 -0.43,0.06 0,0z\",\"name\":\"Romania\"},\"bg\":{\"path\":\"m419.98,434.43c-0.77,-1.6 0.33,-5.03 -1.67,-6.74 -1.14,-2.34 -7.05,-2.04 -4.41,-5.19 -0.49,-1.45 -2.46,-4.37 -1,-5.23 2.16,0.54 4.75,-3.78 2.92,-5.59 -2.57,-1.55 -5.66,-2.78 -5.98,-6.24 -0.97,-2.47 2.74,-1.99 1.69,-4.32 2.08,-0.06 3.2,1.11 1.22,2.59 -0.15,3.28 3.83,0.6 5.65,0.71 2.58,-0.64 5.13,0.94 7.65,0.08 2.61,-1.18 5.46,-2.28 8.27,-1.01 3.32,0.37 5.6,-2.51 6.93,-5.13 2.16,-2.35 5.29,-3.61 8.27,-4.56 1.69,0.75 3.92,0.92 5.2,0.32 0.77,1.61 2.46,-1.39 3.17,1.07 1.58,2.18 6.09,-1.71 5.26,2.45 0.21,2.63 -4.48,0.38 -4.02,3.94 -1.88,1.85 1.39,5.32 -0.17,7.14 -1.24,1.25 -1.7,3.03 -2.93,4.26 0.82,1.66 4.27,-0.37 3.64,2.02 1.44,0.86 3.71,1.89 1.23,2.18 -1.9,3.08 -4.18,-1.08 -6.49,0.5 -1.52,1.95 -4.37,1.58 -4.82,4.55 -1.37,1.04 -4.43,1.49 -2.91,4.13 3.08,3.26 -3.78,2.7 -5.13,4.68 -1.95,0.62 -4.22,-2.41 -5.93,-0.29 -2.04,-2.63 -5.18,-1.43 -7.46,0.15 -2.06,2.52 -5.54,1.17 -7.76,3.47l-0.43,0.06 0,0z\",\"name\":\"Bulgaria\"},\"al\":{\"path\":\"m396.5,458.88c-2.16,0.08 -0.81,-2.55 -2.74,-3.41 -0.91,-2.13 -5.81,-2.06 -5.48,-3.81 2.36,-1.04 -1.62,-3.19 -0.48,-4.99 0.36,-1.26 2.66,-2.2 0.57,-3.3 1.39,-2.49 -3.57,-5.96 0.77,-6.52 2.37,-0.03 -1.92,-0.89 -0.55,-2.51 -0.14,-2.15 -3.24,-0.23 -2.21,-2.9 -1.48,-2.28 0.07,-4.41 1.36,-6.71 1.01,3.42 4.23,-2.13 4.66,1.78 1.21,1.69 4.6,1.07 3.88,4.25 -0.33,2.87 -0.02,5.6 0.51,8.19 0.21,1.77 2.38,5.51 4.15,4.74 1.69,-0.32 2.5,4.45 0.05,5.02 -0.86,1.75 -0.27,5.37 -3.24,5.56 -2.01,1.26 1.3,2.75 -0.81,3.98l-0.23,0.5 -0.19,0.12 0,0z\",\"name\":\"Albania\"},\"ee\":{\"path\":\"m378.18,234.33c-0.29,-1.42 0.77,-0.85 0,0z m29.34,-1.46c-2.55,-0.18 -3.15,-3.15 -5.39,-3.23 -0.21,-1.76 -1.21,1.44 -2.27,-0.65 -2.12,-1.63 -4.52,1.21 -6.27,2.48 -1.26,-0.67 1.67,-5.98 -1.81,-5.74 -1.1,1.92 -1.82,2.36 -3.83,1.3 -0.08,-2.54 -3.43,-2.95 -2.01,-5.67 0.96,-2.03 -3.8,-2.6 -0.62,-3.95 1.35,-0.61 4.23,-0.97 2.3,-2.67 2.82,-0.9 4.5,-2.4 7.47,-2.41 1.66,-0.56 1.5,-2.75 3.42,-1.67 0.91,-1.72 4.64,0.07 6.63,-0.66 2.13,-0.1 4.26,0.22 6.03,-1.29 -1.43,2.67 -1.02,5.84 -2.24,8.62 2.11,2.2 1.2,5.64 3.15,7.83 0.24,0.52 1.89,2.24 1.35,2.38 -0.73,0.83 -0.81,2.27 -1.35,2.68 1.66,2.85 -2.28,0.25 -2.89,1.26 -0.29,0.68 -0.83,1.4 -1.65,1.38z m-28.89,-1.28c-1.29,-0.43 -2.59,-1.4 -0.92,-2.29 -0.22,-0.67 0.59,-1.5 0.99,-0.78 -0.53,-2.4 4.69,-3.37 4.19,-1.27 0.07,2.48 -3,2.5 -4.26,4.33z m1.02,-7.14c-0.54,-0.34 -0.96,-2.14 -1.01,-2.27 0.8,-1.29 0.79,-1.32 2,-0.55 1.89,-0.4 1.35,1.06 -0.17,0.69 0.83,0.84 0.55,2.1 -0.81,2.14z\",\"name\":\"Estonia\"},\"lb\":{\"path\":\"m557.2,501.39c0.58,-2.8 0.32,-5.88 1.17,-8.53 -0.92,-2.02 1.77,-3.87 0.09,-5.88 -0.28,-2.6 2.65,-3.83 2.23,-6.01 1.03,-0.93 3.35,-2.1 2.42,0.09 1.64,0.57 3.96,0.89 3.49,3.25 -1.11,1.34 -2.61,3.51 -1.84,4.51 -2.48,0.69 -2.89,3.8 -1.53,5.08 -0.04,2.15 -2.43,3.34 -3.12,4.26 0.57,1.87 -1.28,3.1 -2.91,3.25z\",\"name\":\"Lebanon\"},\"ad\":{\"path\":\"m225.99,427.08c-4.4,2.06 -0.81,-5.33 0.49,-0.98l-0.2,0.53 -0.29,0.45z\",\"name\":\"Andorra\"},\"sm\":{\"path\":\"m321.66,413.68c0.71,-2.83 1.59,1.21 0,0z\",\"name\":\"San Marino\"},\"mc\":{\"path\":\"m273.92,416.64c-2.8,-1.65 2.23,-1.64 0.39,-0.13l-0.39,0.13 0,0z\",\"name\":\"Monaco\"},\"lu\":{\"path\":\"m268.7,344.38c-1.34,-0.37 0.48,-2.79 -0.9,-3.99 -1.47,-1.94 2.76,-5.38 1.98,-1.49 0.37,1.78 4.79,2.33 1.84,4.09 -0.47,1.66 -1.49,1.22 -2.93,1.39z\",\"name\":\"Luxembourg\"},\"fr\":{\"path\":\"m292.72,444.55c-0.12,-2 -3.86,-0.94 -2.75,-2.99 -2.34,-0.62 -0.11,-2.51 0.75,-3.57 0.35,-0.55 -3.76,1.07 -1.24,-0.63 0.32,-1.34 -2.6,-2.05 -0.51,-3.01 -0.25,-1.14 -1.13,-1.51 -0.02,-1.71 -0.89,-2.66 3.14,-1.71 3.48,-3.51 1.94,0.96 2.98,-0.2 2.33,-2.11 1.79,-2.18 -0.99,3.51 1.02,4.43 1.2,3.29 -2.09,6.35 -1.33,9.73 -0.95,0.89 -1.15,2.64 -1.75,3.36z m-58.87,-15.16c-2.27,-2.01 -5.59,-0.28 -7.2,-2.87 1.48,-2.11 -2.14,-2.13 -2.92,-2.19 -1.78,-1.34 -3.82,-2.36 -5.67,-3.53 -1.54,0.58 -1.53,2.27 -3.51,1.46 -1.54,0.07 -2.66,-0.59 -3.93,-0.35 -0.8,-2.33 -2.93,-1.69 -4.53,-2.09 -1.06,-2 -2.81,-3.32 -5.06,-3.18 -1.57,-1.15 -1.33,-1.7 -1.45,-3.5 -1.23,-0.24 -3.44,-0.96 -1.02,-1.55 3.04,-3.75 2.96,-8.84 4.5,-13.21 0.85,-1.4 2.99,0.68 2.08,-1.85 -1.2,-1.06 -2.14,-0.84 -1.15,-2.81 1.1,-1.59 0.63,-5.99 2.35,-6.1 1.89,1.55 0.82,3.87 1.88,5.79 -0.05,2.01 2.7,3.12 1.93,0.38 -2.25,-2.11 -0.08,-5.11 -2.23,-7.23 -1.52,-1.07 -0.74,-1.21 -0.52,-2.39 -2.12,-1.87 0.87,-2.79 -0.3,-5.08 -0.91,-0.78 2.06,-4.15 0.31,-2.92 -1.7,1.58 -2.8,-0.99 -4.34,-1.54 -1.66,-0.48 -1.34,-4.04 -3.07,-5.27 1.45,-1.37 2.03,-3.5 -0.17,-4.21 -1.28,-1.38 -1.85,-1.7 -0.64,-3.42 1.28,-3.05 -5.85,-0.88 -2.14,-2.3 -0.4,-2.26 -4.49,0.28 -3.4,-2.31 -0.36,-2.67 -3.56,0.62 -4,-1.74 -2.28,-0.09 -2.42,-4.2 -4.81,-1.84 -1.78,1.57 -0.33,-2.39 -2.37,-2.56 1.59,0.62 3.87,-0.51 1.92,-2.13 1.84,1.1 2.88,-0.7 0.65,-1.01 0.13,0.05 1.59,-2.28 -0.46,-1.5 -1.34,1.45 -4.19,-0.07 -1.73,-1.25 1.3,-0.76 2.79,-0.81 2.95,-0 1.4,-0.85 2.87,-0.97 3.66,0.09 0.65,-1.02 3.21,1.35 3.19,-1.26 2.43,-1.62 2.22,2.03 2.47,2.06 1.69,-2.75 1.86,2.19 3.17,3.11 1.26,-0.74 3.83,-3.16 3.73,-0.14 1.62,2.63 2.82,-1.65 4.78,0.11 0.83,-0.47 4.32,1.06 3.36,-0.07 -1.65,-1.65 -2.42,-4.02 -1.35,-6.19 0.76,-2.4 -2.42,-4.6 -1.19,-7.04 1.21,1.81 5.2,-0.98 3.31,2.03 -0.19,2.43 1.93,3.76 3.68,2.84 2.59,0.56 5.12,3.56 7.68,1.11 2.16,-0.17 1.32,-1.39 0.53,-2.64 1.54,-3 5.41,-2.03 8.05,-3.16 1.81,-0.67 4.58,-1.88 5.31,-3.4 -1.75,-1.03 0.04,-4.18 -0.3,-6.15 0.44,-3.1 4.2,-2.36 6.44,-2.8 0.98,0.77 1.49,6.24 4.58,4.17 1.46,-0.35 0.7,4.82 3.67,3.62 -0.14,3.07 3.12,1.53 4.18,2.82 -0.64,1.44 -0.56,1.83 -0.25,2.78 -0.88,2.67 3.93,2.4 4.83,0.49 0.88,1.69 -1.1,3.55 1.66,3.61 2.55,0.29 2.49,4.49 5.21,3.37 2.65,1.52 6.43,-0.33 7.5,3.53 0.45,0.9 2.96,3.41 2.01,0.96 0.54,-1.16 0.79,1.42 0.5,1.49 1.47,-0.3 3.92,-1.81 4.53,0.32 1.92,0.28 7.08,0.84 3.22,2.94 -2.39,2.02 -1.66,5.55 -3.51,7.88 -0.4,2.45 -0.29,5.21 -1.25,7.67 -1.85,0.33 -4.65,-1.22 -4.94,2.33 0.2,1.24 -1.59,3.49 -3.64,4.12 -0.97,0.48 0.4,3.01 -1.75,3.44 -3.21,1.4 -0.53,4.69 -2.87,6.5 1.14,2.08 4.46,-0.29 3.63,-2.44 2.64,-1.79 4.27,0.65 3.32,3.02 0.97,1.33 2.7,2.42 0.16,3.24 -1.7,2.56 4.01,4.8 1.9,7.11 -0.78,1.84 -6.17,0.54 -3.47,3.57 1.68,1.38 4.39,3.16 1.43,4.85 -1.24,3.13 2.12,7 5.6,6.15 2.64,-0.69 -0.62,4.28 -2,4.64 -1.17,-0.72 -4.03,-3.03 -4.38,0.05 0.55,1.28 1.71,2.84 -0.72,3.26 -2.25,0.54 -0.87,3.61 -3.15,2.9 -1.62,1.27 -2.66,0.82 -4.12,0.04 -1.35,1.82 -1.33,-1.1 -3.38,-0.87 -2.84,0.75 -0.64,-3.44 -1.53,-2.84 -0.63,0.89 -3.09,1.3 -1.09,0.56 1.49,-2.74 -3.49,-2.8 -2.54,-0.31 -2.24,0.5 -1.46,-2.79 -1.57,-3.36 -1.08,1.05 -1.96,2.65 -0.52,3.91 -1.04,-0.28 -1.31,-2.83 -3.36,-2.08 -2.5,-1.7 -5.52,-1.71 -6.96,1.2 -2.68,0.79 -5.03,2.02 -5.69,4.77 0.13,1.89 -0.47,3.75 0.65,5.49 -1.42,-0.84 -3.32,-0.38 -4.33,0.88z\",\"name\":\"France\"},\"li\":{\"path\":\"m296.51,373.48c1.45,1.4 -0.83,3.11 -0.11,0.58 0.04,-0.19 0.08,-0.38 0.11,-0.58z\",\"name\":\"Liechtenstein\"},\"nl\":{\"path\":\"m269.04,328.72c-2.4,0.87 -0.84,-4.47 0.3,-2.01 0.8,0.23 0,1.75 -0.3,2.01z m-0.07,-3.78c0.6,-3.32 -5.02,-1.6 -5.27,-4.51 -0.12,-2.74 -3.14,1.24 -2.06,-1.29 -0.99,-0.79 -2.22,1.2 -3.22,-0.45 -0.9,0.27 -1.14,2.68 -1.08,0.81 0.68,-2.17 -1.32,-2.87 -3.53,-3.17 2.34,0.11 2.58,-2.07 3,-3.35 2.89,-2.17 4.59,-5.57 4.61,-9.18 -0.19,-3.29 4.06,-0.89 5.3,-3.43 1.14,-2.76 4.56,-2.87 7.04,-3.65 2.21,-0.91 4.28,0.51 5.07,2.25 2.56,1.19 -1.21,4.26 -0.45,6.54 -1.09,0.31 -2.87,-0.17 -2.83,1.81 -1.46,0.58 -1.58,0.91 0.09,0.93 3.35,-0.05 2.57,4.59 -0.38,4.58 -2.35,0.19 2.62,1.25 -0.12,2.19 -2.05,1.07 -3.43,-1.35 -5.33,0.59 -1.38,2.19 2.97,4.39 0.94,6.8 -0.8,0.77 -1.72,1.2 -0.27,1.66 -0.44,0.36 -0.82,1.02 -1.51,0.87z m-14.99,-3c-0.33,-1.2 -5.07,-0.99 -2.8,-1.87 1.14,1.13 2.85,1.22 3.93,0.81 -0.06,0.56 -0.57,1.04 -1.13,1.06z m0.03,-2.7c-1.37,-0.05 -4.02,-1.94 -1,-1.43 0.49,-0.33 2.23,1.73 1,1.43z\",\"name\":\"Netherlands\"},\"ba\":{\"path\":\"m376.75,425.9c-1.98,-1.6 -4.83,-1.93 -6.41,-4.05 -1.67,0.65 -0.52,0.38 -0.54,-0.48 -1.09,-2.31 -4.84,-2.74 -4.68,-5.7 -3.06,-0.33 -4.09,-3.71 -6.36,-5.29 -1.63,-1.9 -4.06,-2.19 -3.82,-4.87 -1.04,-2.44 -3.06,-3.46 -4.21,-5.63 -0.7,-2.04 0.84,-4.87 2.73,-2.36 1.15,1.84 2.68,1.49 3.04,-0.59 0.75,-2.51 2.6,0.54 3.87,-1.57 1.61,1.11 3.76,0.32 5.58,0.98 1.67,0.69 2.8,0.63 3.98,-0.64 1.28,0.32 2.43,1.79 1.94,-0.33 2.34,0.41 3.8,0.76 5.26,2.77 1.51,0.59 4.58,-2.46 3.33,0.9 -1.48,2.62 -1.55,6.27 2.2,6.4 -0.16,1.48 3,1.5 0.7,2.04 -2.41,-1.63 -1.77,2 -0.04,2.77 1.22,1.2 1.32,2.1 -0.54,1.97 -0.8,1.43 -2.82,1.15 -3.55,0.9 0.15,1.26 1.77,2.85 -0.32,2.67 -1.22,1.98 -1.74,4.24 -3.03,5.92 0.2,1.48 1.25,2.79 0.88,4.2z\",\"name\":\"Bosnia and Herzegovina\"},\"si\":{\"path\":\"m332.96,393.93c-2.25,0.07 3.69,-1.78 0.33,-3.25 -2.05,-0.05 -1.39,-3.19 -2.18,-3.5 2.21,-1.77 -0.2,-2.6 -1.36,-3.11 1.58,-3.35 4.85,-1.64 7.7,-1.58 3.3,1.9 3.73,-4.65 7.02,-2.86 2.43,0.1 4.45,-1.78 6.8,-1.33 -0.07,-1.25 0.26,-3.28 1.79,-1.82 0.58,1.34 2.29,2.96 -0.11,2.97 0.07,3.17 -6.44,2.43 -4.97,6.04 0.89,1.87 0.62,3.86 -1.85,3.13 -2.37,0.85 1.33,6.35 -2.15,4.17 -1.76,0.02 -2.78,0.57 -3.81,-1.48 -1.83,-1 -1.59,2.92 -3.88,1.76 -1.41,-0.46 -2.2,0.65 -3.34,0.85z\",\"name\":\"Slovenia\"},\"mk\":{\"path\":\"m403.18,443.19c-1.28,-0.84 -1.77,-0.72 -3.14,-0.4 -2.27,-2.33 -2.73,-5.58 -2.85,-8.64 -1.26,-2.44 2.39,-0.6 1.33,-3.13 0.23,-2.42 3.43,-3.85 5.06,-1.8 1.38,1.18 -1.35,-3.28 1.33,-2.73 2.83,0.6 4.67,-2.89 7.49,-1.79 1.51,2.18 4.77,1.95 5.79,4.72 1.29,2.63 0.37,4.95 -1.12,7.01 -1.05,2.69 -5.33,0.11 -7.05,2.7 -0.97,2.88 -4.09,3.39 -6.84,4.04z\",\"name\":\"Macedonia\"},\"hr\":{\"path\":\"m375.93,426.49c-1.17,-0.64 -1.03,-0.77 0,0z m-5.08,-2.9c-0.73,0.27 -1.25,-2.08 0,0z m-2.28,-1.81c-3.23,-1.04 -5.06,-4.7 -8.53,-5.08 -1.74,-1.23 -4.13,-1.36 -6.19,-0.38 -0.54,-3.7 -5.51,-3.9 -7.37,-6.92 -1.68,-2.86 2.16,-0.38 2.91,-1.43 -1.18,-2.05 -5.06,-2.05 -5.62,-5.05 0.07,-2.45 -0.12,-5.23 -2.77,-6.41 -1.46,-3.02 -5.35,-1.33 -4.75,1.8 -0.1,1.22 -1.81,1.15 -1.78,3.18 -0.42,-0.02 -2.43,-3.25 -2.8,-4.77 0.5,-1.41 -1.33,-2.59 0.97,-1.85 1.93,-0.05 3.32,-1.26 5.49,-0.87 1.75,-0.28 1.19,-2.99 2.55,-0.54 1.83,1.65 2.98,0.1 5.14,0.7 1.63,-0.59 0.6,-2.35 1.05,-3.41 -2.13,-1.84 3.84,-0.57 2.93,-3.42 -1.1,-1.62 -1.88,-3.53 0.82,-4.04 1.16,-1.26 3.54,-0.9 3.14,-3.3 3.59,0.79 6.21,3.61 8.62,6.19 2.91,-0.18 5.33,2.55 8.31,1.69 2.32,0.95 5.06,-5.2 5.33,-0.4 0.15,1.9 1.2,2.64 1.4,4.46 1.55,0.76 2.24,0.37 1.04,2.01 -0.17,1.69 1.08,1.86 -0.44,2.99 -1.42,0.96 -2.53,-3.66 -4.34,-2.06 -2.98,-1.4 -5.14,1.63 -8.13,0.38 -2.22,0.17 -4.52,-1.28 -6.44,-0.34 -1.8,-0.84 -3.54,0.72 -3.99,2.64 -1.51,-1.59 -4.97,-3.78 -5.35,0.02 -1.16,3.92 2.99,5.58 4.38,8.58 -0.13,1.41 -1.05,2.05 0.83,2.59 2.9,1.5 4.8,4.21 6.98,6.53 2.65,1.59 3.98,4.49 6.78,6.28l-0.16,0.23 0,0z\",\"name\":\"Croatia\"},\"dk\":{\"path\":\"m311.37,281.37c-1.81,-0.13 -3.63,-2.95 -0.99,-2.75 0.71,0.89 2.21,0.72 1.2,1.27 0.93,0.68 0.95,1.07 -0.21,1.48z m2.12,-1.04c1.35,-0.18 -0.34,1.13 0,0z m0.84,-0.24c-0.07,-1 -2.35,-2.59 0.16,-1.62 2.08,0.28 -0.51,1.71 -0.16,1.62z m-17.99,-0.84c-2.31,-0.88 -6.15,-0.22 -4.5,-3.71 0.81,-2.84 -1.69,-4.3 -3.84,-4.7 -1.19,-2.12 0.77,-2.92 1.79,-2.7 1.1,-1.9 -0.71,-4.04 -1.69,-4.68 0.35,-1.37 0.2,-5.41 0.68,-4.97 1.59,3.78 6.34,-5.25 4.96,-0.56 0.24,2.86 4.45,-0.07 2.01,-1.61 0.04,-2.03 -0.06,-3.57 2.27,-2.05 0.18,-1.79 3.93,-0.45 2.6,-2.4 -2.36,-1.07 -4.97,1.4 -7.44,0.51 -0.9,0.41 -2.06,0.6 -1.03,-0.46 2.89,0.74 6.43,-0.56 7.07,-3.76 0.42,-1.7 4.2,-3.59 3.75,-0.9 2.01,1.66 -0.21,4.73 -1.55,6.01 0.4,0.87 0.32,2.52 0.39,3.1 -1.16,1.34 2.36,4.31 4.12,3.09 1.32,1.67 -1.85,5.56 -2.69,2.65 -3.21,0.21 -0.77,4.74 -2.69,6.35 -0.74,1.02 -5.24,-0.82 -2.77,1.37 1.61,1.85 3.89,1.32 5.37,0.39 1.04,1.32 2.66,0.54 1.88,1.61 2.2,1.44 0.71,6.32 -1.89,3.8 -0.99,-0.9 -2.97,-2.42 -3.55,-4.38 -0.8,-2.14 -4.39,1.02 -3.28,1.06 2.19,-0.86 -0.04,1.87 1.38,2.68 -1.87,1.01 -1.25,3.06 -0.58,3.35 -0.3,0.27 -0.55,0.59 -0.78,0.92z m18.96,-2.29c-1.92,-0.02 -1.04,-3.7 -3.92,-2.81 -3.51,-0.09 0.22,-3.64 -2.76,-5.02 -1.79,-1.21 3.2,0.15 3.13,-2.28 0.04,-2.46 4.91,0.23 1.92,1.9 1.06,2.45 3.33,-0.76 2,-2.36 -0.51,-1.34 -2.25,-2.02 0.21,-1.96 2.33,-0.37 1.21,1.23 1.29,2.13 2.22,2.03 -1.98,3.78 -1.88,4.86 2.05,0.87 2.04,2.76 -0.28,2.66 -0.97,0.83 0.11,2.08 0.29,2.88z m-25.23,-19.54c-1.89,-1.51 1.09,-5.6 1.21,-4.99 -1.52,1.21 -1.11,3.3 -1.21,4.99z\",\"name\":\"Denmark\"},\"ru\":{\"path\":\"m558.98,364.3c-2.56,-0.91 -4.97,-2.14 -7.36,-3.43 -2.39,-1.15 -4.94,-2.06 -7.59,-2.35 -2.81,2.28 -5.5,-0.94 -8.06,-1.85 -1.23,0.3 0.78,2.15 -1.52,1.8 -2.42,-0.25 -3.69,-3.69 -6.4,-2.82 -1.31,0.16 -4.41,0.18 -1.55,-0.66 1.64,-0.7 0.81,-3.34 -0.75,-1.74 0.37,-1.63 2.93,0.94 3.87,-1 1.25,-0.31 2.74,-1.24 3.63,-1.06 1.16,-2.32 -3.44,-3.39 -1.08,-5.92 0.57,-0.81 -0.94,-4.08 0.12,-2.72 0.39,2.37 2.24,1.11 1.25,-0.78 -1.26,-3.41 3.86,0.53 3.04,-2.81 -1.97,-1.81 -4.99,-1.7 -7.55,-2.54 -2.06,-0.94 2.06,-1.24 1.86,-3.16 2.06,1.7 4.87,-1.76 1.32,-1.4 -0.21,-1.02 3.11,-2.69 3.56,-4.64 3.16,0.27 3.03,-5.1 -0.28,-4.48 -2.62,0.21 -2.08,3.91 -4.95,4.14 -2.31,1.85 -0.59,-0.97 -1.26,-1.15 -2.27,0.02 -1.28,-3.82 0.48,-4.34 1.4,-2.13 0.73,-5.08 4.3,-4.68 2.91,0.1 4.24,-2.66 2.99,-5.05 -0.44,-0.81 1.31,-4.54 -0.5,-3.12 -0.89,0.38 -1.08,-3.79 -3.06,-2.28 -2.61,-1.85 3.34,-2.5 1.03,-4.59 -1.03,0.14 -4.3,0.91 -2.02,-0.74 1.96,-2.14 1.02,-4.53 -0.68,-6.4 1.16,-2.59 -2.93,-0.35 -3.64,0.61 0.41,-2.95 -3.61,-0.32 -4.74,-2.01 -1.3,0.69 -2.17,2.73 -3.44,0.57 -1.62,0.46 -2.9,0.42 -4.52,-0.03 -1.18,0.97 0.35,3.57 -1.91,1.94 -2.66,-0.03 -3.84,-4.48 -6.19,-3.24 -2.12,0.99 -3.16,6.03 -6.01,3.79 -0.55,1.88 -3.23,-1.75 -4.12,0.93 -2.26,2.15 -4.17,-0.6 -4.14,-2.64 -1.31,-0.74 -1.67,-2.47 -1.76,-3.17 -1.84,0.68 -2.55,-1.54 -3.04,-1.81 -1.53,1.29 -5.9,2.64 -6.27,0.53 -0.46,-1.43 -3.35,-2.71 -0.58,-3.43 0.87,-2.91 -3.85,-2.55 -4.29,-5.27 -1.34,-1.28 -2.82,-2.7 -4.07,-0.62 -2.6,-1.29 -3.34,1.16 -4.86,2.57 -2.29,-0.64 -4.88,0.47 -3.99,3.28 -1.64,3.09 -5.33,-1.16 -5.28,-3.38 0.29,-1.54 -1.99,-0.85 -0.93,-2.73 -1.04,-1.23 -5.06,-2.53 -2.44,-4.58 2.85,1.31 6.86,-0.11 6.98,-3.34 2.36,-1.51 -0.16,-3.89 -1.6,-4.2 -0.58,-2.91 -4.71,-0.88 -5.61,-1.07 0.65,-2.69 -1.62,-3.41 -3.71,-3.4 -2.11,-1.16 -3.32,-2.8 -3.81,-4.83 -2.42,0.17 -3.41,-1.67 -2.18,-3.83 -0.02,-1.71 -2.9,-2.44 -1.99,-4.84 -0.01,-1.79 -0.45,-2.87 -2.15,-2.08 -2.12,-2.07 -5.85,-2.66 -7.51,0.31 -0.95,2.92 -2.17,-0.33 -1.92,-1.55 -1.94,-2.34 -4.43,2.65 -5.64,-0.22 -1.71,0.04 -3.09,1.26 -3.28,-1.31 -0.9,-2.65 -2.85,-5.01 -4.71,-6.53 -1.83,-1.02 1.04,-5.27 -2.45,-5.76 -1.67,-0.51 -0.04,-2.71 -2.19,-1.57 0.05,-1.42 0.26,-2.99 1.68,-3.72 -0.54,-0.99 -1.34,-2.16 -1.45,-2.96 -2.84,-0.69 -1.01,-4.26 -2.77,-5.86 -2.08,-2.24 0.85,-4.53 0.39,-6.92 -1.01,-2.41 3.22,-2.6 0.55,-4.16 -0.83,-1.3 -2.35,-4.31 0.18,-2.28 1.51,-0.56 0.02,-3.79 2.55,-2.16 2.03,-0.4 0.55,-4.34 3.6,-3.39 1.61,0.41 6.06,0.64 4.72,-1.87 -2.47,0.38 -3.46,-3.31 -5.66,-1.7 -1.73,1.59 -3.35,0.22 -4.28,-0.75 -2.83,1.04 -0.5,-5.97 -3.43,-3.33 -0.79,1.95 -3.72,3.09 -1.67,0.48 4.94,-7.07 7.08,-15.55 9.98,-23.55 0.44,-3.03 2.51,-7.51 -0.31,-9.8 -2.38,-1.89 -5.29,-2.93 -7.96,-4.32 -3.88,-1.06 2.38,-6.07 -1.12,-8.02 -2.45,-0.36 -4.96,-1.94 -3.33,-4.47 -1.48,-1.21 -6.02,-2.28 -3.05,-4.86 0.42,-0.7 -3.23,-0.64 -2.08,-2.79 0.39,-2.06 -0.85,-2.94 1.09,-3.89 -0.82,-2.4 -2.73,-4.51 -4.14,-6.68 -1.51,-2.32 -3.78,-4.06 -5.41,-6.21 -0.98,-3.34 2.21,-6.3 1.62,-9.59 -0.91,-2.31 -3.95,-2.73 -4.86,-5.04 -3.1,0.98 -6.11,-2.82 -4.58,-5.63 1.26,-2.13 -3.52,-2.39 -0.66,-3.49 1.51,-2.49 0.64,-5.59 3.12,-7.72 -0.6,-2.56 3.46,0.62 3.16,-2.41 -2.11,-2.17 1.85,-1.54 2.99,-1.35 2.03,1.63 4.11,1.29 6.52,0.08 0.37,0.23 -0.76,2.57 1.13,2.81 -1.22,0.77 -1.32,4.65 0.4,2.88 0.2,-1.73 1.36,-3.42 1.9,-5.04 3.21,0.08 6.07,-1.95 9.29,-1.34 2.75,0.76 5.58,1.26 8.28,2.2 2.14,0.82 4.03,2.32 6.18,3.01 2,-1.35 5.54,1.61 7.21,-0.07 2.23,0.7 3.31,3.46 5.54,1.69 1.16,1.01 0.65,2.43 2.18,2.82 1.01,2.1 3.8,2.21 3.29,5.21 -0.09,3.44 0.15,7.2 -2.11,10.07 -2.26,3.09 -6,5.79 -10.02,4.97 -2.84,-0.74 -5.34,0.99 -8.08,1.16 -2.01,0.97 -5.49,-2.15 -6.54,-0.13 -1.33,0.97 -2.24,-0.89 -2.89,-1.46 -1,2.57 -7.21,1.52 -6.06,-1.62 -0.53,-0.64 -4.07,0.19 -5.44,0.48 -1.33,1.22 -0,2.41 1.25,1.32 2.16,-0.38 0.62,2.19 3.06,2.74 1.23,1.53 6.57,0.25 5.42,2.51 -1.91,3.1 2.22,0.91 3.81,1.72 2.09,0.58 5.78,2.19 4.56,4.13 2.75,1.59 0.23,3.96 -0.48,5.25 2.3,-0.18 4.43,1.99 4.35,4.27 2,-0.84 0.78,1.8 1.68,2.47 0.1,3.23 4.49,3.53 6.69,2.22 2.28,0.22 3.06,3.83 6.02,2.68 3.14,0.7 6.51,-0.4 7.17,-3.81 0.24,-2.71 -4.02,-6.69 -5.49,-3.3 -2.65,0.34 -5.44,-2.93 -6.7,-4.13 2.45,-0.62 0.68,-2.65 0.87,-3.74 2.98,-0.53 5.18,2.7 8.25,1.24 2.42,-0.59 5.57,1.81 7.6,-0.26 0.47,-1.42 5.9,0.3 3.69,-2.76 -1.12,-2.61 -3.65,-4.39 -6.37,-5.3 -3.26,-1.55 -1.48,-4.68 -0.67,-7 0.13,-2.98 3,-4.72 3.48,-7.44 -0.29,-1.95 -0.01,-6.22 2.42,-3.58 1.94,-2.25 5.82,-1.29 7.83,0.68 1.2,2.1 3.32,0.53 1.22,-1.06 -2.48,-1.87 -1.81,-4.87 -2.24,-7.47 -1.88,-1.57 -2.53,-5.38 -5.87,-5.07 -3.66,0.72 -1.05,-5.18 -3.4,-6.67 -1.19,-0.92 0.46,-3.75 -1.48,-3.55 -1.01,-2.39 -5.64,-2.94 -6.17,-3.55 2.64,0.97 4.98,-0.76 6.95,-2.52 2.55,-2.21 4.69,1.32 7.17,1.82 2.66,0.14 2.98,2.58 0.58,3.55 -1.44,1.01 -3.37,2.5 -1.86,4.15 -2.05,2.82 1.45,5.04 4.18,4.46 2.24,0.66 3.9,4.74 5.89,0.83 -0.45,2.74 1.7,0.82 1.6,-0.76 0.67,-1.92 4.97,-2.44 2.12,-4.7 -0.88,-2.08 -0.93,-5.08 -2.83,-6.29 1.51,-0.41 1.74,-3.36 4.33,-3.14 0.74,-1.52 -4.26,-0.47 -1.65,-2.01 1.38,-2.03 1.95,-4.13 2.25,-6.48 -0.71,-3 2.32,-4.04 2.61,-6.78 0.79,-1.07 0.87,-3.3 2.02,-0.85 0.37,3.39 3.79,-1.54 1.28,-2.71 -2.87,-0.55 -1.44,-3.38 -0.47,-5.41 0.59,0.58 1.75,-1.54 1.49,0.66 0.07,2.26 4.9,2.03 2.07,4.51 -3.06,1.89 2.52,2.73 3.16,0.29 0.8,-0.58 2.28,-0.85 1.45,-2.12 2.18,1.11 3.08,-1.11 1.14,-2.24 -0.63,-3.15 1.27,-6.2 4.04,-7.12 3.15,-0.33 1.76,-4.5 2.46,-6.7 2.68,1.91 1.44,-1.23 0.17,-1.57 -0.24,-1.73 3.07,-1.64 3.49,-0.99 -0.52,3.68 4.93,5.45 5.98,1.6 -0.74,-2.19 -4.02,-2.52 -1.51,-4.94 1.37,-2.71 -0.97,-5.14 -3.64,-5.47 -2.06,-0.69 -6.98,-0.83 -4,-3.86 -2.84,-2.24 1.77,-2.66 3.14,-4.1 2.67,-3.27 6.84,-5.01 10.97,-5.41 2.08,0.66 3.04,-0.42 5.04,-0.78 3.26,-0.69 5.53,-2.7 8.88,-1.89 1.83,0.09 3.72,-0.92 5.18,-0.23 3.3,-0.51 -0.59,-3.78 0.31,-4.05 7.13,0.01 14.26,-0.01 21.38,0.01 2.09,0.14 -2,3.01 0.93,2.93 1.33,0.5 2.97,0.39 1.78,1.28 0.04,1.2 -0.09,5.95 -1.36,3.75 0.88,-1.97 -1.47,-3.03 -1.4,-0.65 -0.13,1.49 -3.77,0.21 -3.69,2.55 -3.37,1.5 0.23,4.73 2.72,4.05 3.82,-0.71 6.21,-3.84 8.09,-6.94 1.84,-0.32 4.98,-2.24 2.66,-4.31C557.34,3.94 555.66,1.55 558.62,2.18c40.17,0 80.35,0 120.52,0 0,32.42 0,64.83 0,97.25 -2.09,0.36 -2.95,2.3 -1.54,3.74 -2.44,-1.53 -2.16,1.82 -2.17,2.03 -1.83,-0.06 -0.41,-2.79 -2.86,-3.06 -0.55,-1.54 -1.56,-2.65 -3.54,-1.77 -1.52,-1.23 -4.42,-2.86 -6,-3.08 -2.3,1.54 0.4,6.71 -3.71,5.55 -1.63,0.21 -3.74,1.9 -3.4,2.86 -1.22,-0.25 -2.92,1.14 -1.43,2.07 -2.82,1.19 1.7,2.9 -0.94,4.55 -2.72,2.09 2.48,0.44 1.29,3.06 -2.53,0.4 -0.3,2.61 -2.09,4 -0.4,3.26 -2.41,5.93 -3.86,8.82 0.28,0.79 -3.1,0.12 -1.27,1.6 -1.02,2.01 -3.11,4.53 -0.2,6.39 -2.52,0.22 -3.43,3.38 -5,5.17 -0.91,1.5 1.12,2.54 -1.32,2.93 -1.23,2.37 -2.15,5.27 -3.97,7.32 1.46,1.7 -3.54,1.33 -2.2,4 0.89,0.84 -2.06,0.35 -2,1.51 -2.16,-0.19 -3.58,4.12 -1.57,4.8 2.75,-1.67 -0.46,5.07 2.92,2.57 1.47,-1.64 1.11,3.68 3.89,2.06 1.15,-1.3 4.64,-3.43 5.55,-1.97 -0.97,2.34 -5.83,2.91 -5.32,5.59 1.65,1.51 -1.67,5.32 2.05,4.87 0.58,1.25 3.67,-0.2 3.17,2.56 -0.46,2.07 -2.09,3.57 -1.96,5.92 -2.28,1.79 1.99,3.07 3.27,1.27 1.22,3.88 3.54,-2.53 5.73,-0.07 1.71,0.15 3.48,-3.04 4.82,-0.75 0.7,2.54 3.93,4.85 1.33,7.39 -0.96,2.05 -3.49,5.21 -5.83,2.98 -2.18,1.39 0.8,4.71 -0.35,6.74 -1.64,-3.35 -4.19,2.67 -7,1.13 -1.58,0.37 -1.77,-1.65 -2.62,-1.81 -0.7,0.72 -4.76,0.36 -3.34,1.66 -0.36,0.87 -3.77,2.22 -1.73,4.23 -0.31,2.89 -2.88,-1.51 -4.31,1.09 -1.46,1.61 -3.55,2.49 -3.46,4.75 -0.41,1.43 -0.54,3.48 -0.05,5.34 -0.27,1.74 -0.64,1.81 -2.46,1.7 -2.35,1.24 -5.67,-2 -7.94,0.36 -1.02,1.19 0.11,2.72 -2.11,2.54 -1.91,-2.74 -5.13,1.42 -6.94,-1.53 -3.68,-1.24 -4.83,6.16 -8.08,2.91 -0.68,-0.31 -3.05,-3.22 -2.23,-1.07 0.44,2 -3.21,4.32 -1.91,5.59 -1.58,-0.54 -1.24,3.52 -1.64,0.7 -1.39,-2.07 -3.9,0.94 -5.63,0.87 0.37,1.37 0.82,0.9 -0.34,1.77 -0.21,2.03 1.56,4.11 -0.43,6.09 -0.26,2.82 -3.85,3.15 -3.39,6.04 1.82,1.79 -0.1,4.43 -1.07,6.43 -3.76,0.87 1.99,2.12 2.03,4.1 0.89,1.78 3.76,2.19 1.71,4.57 -2.3,2.9 -5.15,-1.81 -7.83,-2.01 -3.78,-1.12 -4.32,3.77 -2.19,5.82 -2.31,2.78 -0.33,6.19 0.38,9.1 0.77,1.86 4.43,0.77 3.16,3.54 -0.62,2.49 -0.11,4.99 0.21,7.43 1.17,3.44 5.88,-1.22 6.9,2.2 0.63,0.39 -1.33,1.3 0.64,1.71 0.61,2 4.71,2.89 4.1,0.07 2.42,-0.19 4.16,-3.38 6.65,-1.26 2.61,1.3 4.67,3.68 7.51,4.49 2.44,-0.41 2.29,3.63 -0.15,2.17 -3.16,1.33 0.69,4.72 2.95,3.33 2.69,-1.74 4.67,2.16 2.98,3.28 -1.53,-1.48 -3.23,1.37 -1.51,2.46 -1.66,0.09 -1.17,4.59 -3.15,5.57 -2.16,-0.57 -0.01,3.21 -2.03,1.18 -1.51,-0.51 -1.63,0.74 -2.82,1.17 0.46,1.78 3.76,-0.82 2.44,1.78 0.45,1.46 -0.73,2.48 0.5,3.94 -0.91,1.42 1.06,4.29 -0.87,5.01 0.89,2.05 -1.39,4.46 -0.11,6.57 1.6,2.36 2.84,-1.08 4.63,0.84 2.19,0.61 6.36,2.5 5.42,5.48 1.51,1.9 3.6,2.8 3.89,5.79 1.08,1.98 3.28,1.24 4.3,3.24 2.25,0.68 4.45,1.39 6.37,2.79 1.16,1.48 3.78,2.23 4.69,2.86 -0.38,2.65 -2.37,5.25 -1.49,7.93 0.05,2.46 -6.1,4.34 -5.15,1.14 -2.52,-0.74 -5.24,-0.5 -7.55,-1.88 -1.49,0.54 -3.24,0.69 -4.5,0.55 -1.71,1.13 -6.19,1.11 -5.4,-1.84 -0.88,-3.94 -4.63,1.38 -6.95,-0.97 -1.81,-1.22 -2.73,1 -2.64,2.13 -3.4,-2.47 -4.1,3.12 -6.37,4.33 -1.56,1.14 -0.42,-3.07 -2.75,-1.69 -2.4,0.37 -5.28,1.01 -7,-0.66 -2.78,0.67 -5.63,0.98 -8.42,1.61 1.94,1.66 -2.76,2.56 -3.79,2.43 -2.67,-0.72 -5.06,0.99 -7.69,0.02 -2.34,1.37 -6.27,0.31 -6.05,4.11l-0.04,0.01 0,0z m57.81,-33.85c-0.89,-1.57 0.49,-2.17 0,0z m-241.23,-51.26c-1.5,-0.26 -4.88,0.4 -5.3,-0.46 2.59,-1.58 -0.9,-5.56 2.71,-5.44 2.09,-0.97 5.31,1.36 6.88,-1.15 -0.17,-1.75 -1.39,-4.59 1.04,-3 2.58,1.66 5.83,-0.05 8.09,1.03 2.4,1.17 -0.19,4.14 1.51,6.12 -0.91,2.05 -4.72,1.7 -6.85,2.38 -2.67,0.39 -5.38,0.53 -8.08,0.53z m245.17,-54.27c-0.96,-0.5 -1.79,-4.14 -0.7,-1.7 0.41,0.34 1.1,1.13 0.7,1.7z m15.47,-62.08c-0.5,-1.68 1.86,0.26 0,0z M392.43,81.96c-1.18,-1.24 -0.52,-3.74 1,-1.58 0.97,0.64 4.51,-0.85 3.11,1.22 -1.28,-0.1 -4.06,-2.2 -4.11,0.36z m69.72,-22.48c-3.13,-0.37 -5.18,-4.96 -3.51,-7.6 1.49,-0.95 5.9,-1.19 6.08,0.31 -0.75,2.23 0.93,5.01 -1.2,6.83 -0.37,0.32 -0.88,0.46 -1.36,0.46z m1.2,-32.66c0.64,-1.98 -0.94,-1.7 -1.81,-2.37 0.83,-0.97 3.57,-1.76 1.01,-2.23 -1.29,0.52 -2.78,0.7 -3.28,0.14 -1.2,0.89 -3.04,-4.18 -2.96,-0.9 1.94,3.97 -3.66,-2.01 -2.98,1.25 2.3,2.87 -2.86,2.37 -3.53,0.29 -1.84,-1.41 -2.9,-5.04 0.07,-4.98 -0.36,-1.21 -1.52,-2.86 -0.18,-4.45 -3.01,0.94 -0.61,-2.79 -2.49,-3.65 -1.26,2.21 -4.03,0.25 -1.58,-1.13 2.3,-1.91 -4.09,-1.91 -1.43,-4.6 0.66,-1.81 2.03,-2.29 3.79,-2.01 1.73,-0.33 3.25,0.66 4.85,0.17 2.53,-1.3 -3.03,3.08 0.48,2.2 3.11,-1.44 -1.22,5.41 2.65,3.83 2.34,0.52 1.33,4.72 3.21,4.64 2.81,0.65 4.59,3.49 7.55,3.98 2.95,1.5 6.52,1.02 9.42,1.43 -0.95,0.85 -5.31,2.46 -4.34,3.45 -1.86,0.24 -4.2,1.89 -2.01,3.36 -1.56,0.82 -3.63,-0.42 -4.9,1.06 -0.87,-0.61 -1.05,-0.3 -1.52,0.53z m23.35,-5.93c-1.68,-0.42 -4.33,-0.5 -2.76,-2.36 -1.89,0.07 -1.65,-3.14 0.36,-1.62 2.48,0.8 5.12,0.27 7.63,0.6 2.21,1.62 -2.46,4.83 -3.16,1.83 -0.45,0.12 -0.96,1.84 -2.07,1.55z\",\"name\":\"Russian Federation\"},\"mt\":{\"path\":\"m343.65,509.08c-1.52,-0.23 -1.75,-0.24 0,0z m1.95,2.72c-1.32,-0.63 -1.5,-0.7 0,0z\",\"name\":\"Malta\"},\"me\":{\"path\":\"m385.29,433.13c-1.98,-1.45 -3.12,-5.3 -6.16,-4.27 -0.68,-0.6 -0.46,-1.87 -1.44,-2.17 0.16,-1.66 0.06,-3.3 -0.89,-4.86 1.96,-1.05 1.28,-4.74 3.12,-5.09 1.81,3.01 2.14,-1.15 0.71,-2.43 2.24,-0.2 3.4,-2.11 5.57,-0.36 3.49,0.56 2.95,4.72 6.22,5.9 -2.5,0.45 -0.84,6.17 -3.72,4.67 0.19,-3.37 -2.81,0.5 -2.99,1.87 -0.8,1.83 -2.3,3.26 -0.46,4.87 0.08,0.47 0.4,1.59 0.03,1.87z\",\"name\":\"Montenegro\"},\"rs\":{\"path\":\"m397.48,431.57c-0.16,-2.49 -1.05,-5.46 -3.99,-5.18 -0.83,-1.86 -3.16,-3.89 -0.74,-5.1 2.42,-2.35 -3,-3.15 -2.73,-5.8 -1.28,-2.34 -5.16,-1.7 -5.47,-5.07 -0.61,-1.48 -2.43,-2.36 0.08,-2.14 2.37,-1.69 -1.79,-3.25 -2.79,-4.49 -3.49,-0.35 0.76,-4.99 -0.07,-7.08 -1.54,-0.41 -2.38,-0.6 -2.22,-2.53 -0.29,-0.9 3.52,-0.03 1.84,-1.89 -1.99,-0.46 -4.18,-1.03 -2.61,-2.61 0.5,-1.92 -2.64,0.29 -1.69,-2.2 -0.12,-1.58 -1.93,-2.81 0.65,-3.27 2.64,-1.35 4.3,-3.64 7.52,-3.04 2.34,-0.11 4.56,2.67 6.11,3.82 1,0.92 0.22,4.94 3.24,4.94 1.65,0.3 5.5,0.5 3.47,2.78 1.27,1.27 0.97,1.07 -0.4,2.22 0.32,1.47 3.21,0.4 3.09,2.01 1.78,0.14 4.21,-0.13 4.93,1.74 2.85,0.45 1.17,-3.79 1.99,-3.56 1.66,0.7 3.37,1 1.04,1.99 -1.64,2.21 4.19,3.86 0.86,5.71 -2.2,2.75 0.34,6.72 2.98,8.19 2.92,0.51 3.82,2.98 1.52,5.06 -0.82,0.05 -2.7,-0.25 -2.65,1.85 -1.23,2.37 3.66,5.04 -0.48,5.54 -2.42,1.11 -4.61,2.18 -7.35,2.39 -1.32,2.74 -6.31,0.55 -6.16,5.74z\",\"name\":\"Serbia\"}}});\n"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.germany.js",
    "content": "/** Add Germany Map Data Points */\njQuery.fn.vectorMap('addMap', 'germany_en', {\"width\":592,\"height\":801,\"pathes\":{\"th\":{\"path\":\"m312.19,352.19c-2.73,0.22 -2.22,4.11 -3.64,5.97 -1.01,2.7 -4.71,2.26 -7.13,2.91 -2.52,0.84 -2.65,-2.93 -5,-3.11 -2.02,-1.67 -5.36,0.2 -4.98,2.55 -0.62,4.82 -6.22,6.91 -9.72,9.65 -2.98,3.28 -7.8,2.07 -11.1,4.73 -2.55,1.59 -5.81,3.14 -7.87,5.03 0.64,3.74 1.96,8.43 6.44,8.84 3.41,0.33 2.07,4.91 5.71,5.17 2.12,1.11 4.61,1.57 6.04,3.67 2.61,-0.18 1.95,2.83 0.13,3.41 -0.75,1.55 1.21,2.98 -0.06,4.88 -2.65,1.33 -1.59,-4.91 -4.58,-2.96 -2.15,1.14 2.24,4.28 1.18,6.62 -0.73,2.87 3.35,2.38 3.93,4.97 0.22,2.4 -1.82,4.2 -4.4,4.04 -1.89,0.05 -3.04,-2.14 -5.19,-1.69 -2.29,-1.13 -3.6,1.4 -2.29,3.19 0.92,3.27 2.06,6.86 1.64,10.24 -1.04,2.07 -1.35,6.09 -4.56,5.07 -2.5,-0.54 -3.05,2.78 -2.17,4.43 0.33,2.11 -1.94,1.58 -0.64,3.71 0.2,3.37 -2.96,5.74 -4.05,8.57 -1.46,3 3.1,3.73 4.61,2.61 -1.8,-1.67 -0.95,-4.04 1.83,-4.18 2.21,-0.46 5.52,-0.43 5.9,2.47 2.29,2.61 -2.68,2.96 -1.96,5.59 0.5,1.86 -0.79,8.31 0.95,7 1.72,-3.38 5.8,-2.18 8.88,-2.88 2.69,0.85 3.11,5.24 6.43,5.5 3.89,0.66 4.77,4.88 6.09,7.93 -0.55,3.14 2.45,3.82 4.54,1.98 0.31,5.02 5.89,6.45 10.06,7.19 -0.2,3.63 -1.27,7.43 0.53,10.84 2.35,0.1 5.18,2.71 7.07,1.85 0.03,-1.3 -1.32,-4.82 1.27,-4.26 2.07,-0.06 5.3,2.5 6.66,0.25 0.29,-2.71 -3.43,-1.58 -4.54,-3.52 -1.94,-1.64 -5.47,-2.54 -4.67,-5.79 -0.91,-3.55 3.89,-3.37 6.02,-4.77 2.87,-1.54 6.27,-0.65 9.38,-0.79 1.61,1.84 2.4,4.9 5.49,4.49 2.33,1.02 3.21,-1.38 4.71,-2.1 2.52,-0.39 4.79,2.85 4.64,5.17 -2.32,0.34 -2,2.87 -0.04,3.79 1.25,1.09 4.62,-1.62 5.78,-2.97 1.07,-2.95 1.98,-5.92 0.84,-9.01 0.33,-2.69 -1.49,-4.1 -2.06,-6.05 -0.35,-1.26 0.15,-3.52 1.89,-2.72 2.51,-0.54 3.16,-3.11 5.03,-4.31 2.41,-0.31 6.41,-0.25 6.75,2.81 -1.09,1.47 -1.71,2.75 -1.31,4.94 2.04,1.91 4.67,0.65 4.88,4.5 0.54,1.96 3.79,3.19 4.05,0.56 1.06,-1.74 3.34,-0.66 4.25,0.63 6.13,-1.07 12.67,-0.94 18.25,-3.97 -1.68,-0.65 -2.19,-2.46 -0.38,-3.31 1.4,-0.73 5.24,-2.7 2.32,-4.13 -1.1,-2.24 -4.24,-0.26 -4.55,-3.08 -1.3,-2.44 2.29,-4.28 3.11,-6.33 2.98,-0.71 2.97,-4.68 5.91,-5.31 1.95,1.54 1.58,4.54 1.16,6.72 1.66,-0.64 6.6,0.71 6.33,-0.74 -3.05,-0.17 -0.61,-3 1.2,-3.1 2.57,-1.22 5.33,-2.23 7.87,-3.14 1.72,-1.51 4.46,-4.54 0.25,-4.48 -1.74,-1.64 -3.31,-4.12 -3.69,-6.5 0.38,-2.82 0.28,-5.87 1.72,-8.41 0.89,2.58 5.82,0.77 5.81,-1.09 0.71,-1.83 4.18,-2.99 5.41,-0.97 2.56,-0.68 0.59,-4.69 3.44,-5.44 3.25,-1.87 7.85,-0.32 10.53,-2.97 -2.57,-1.55 -0.79,-6.34 -4.47,-6.16 -2.74,-0.84 -6.28,-2.6 -5.42,-6.03 0.8,-2.88 -3.5,-2.46 -5.15,-3.47 -2.87,-0.81 -6.3,-2.89 -8.61,0.02 -2.54,2.1 0.01,3.58 1.21,5.21 -0.17,3.21 -2.39,6.03 -3.68,8.9 -1.08,1.71 -2.42,1.35 -2.66,-0.64 -2.24,-4.02 -1.09,1.94 -3.66,-0.66 -2.71,-1.39 -5.95,-1.32 -8.59,0.19 -0.02,-4.6 -5.04,-6.77 -8.31,-9 -2.72,-0.06 -5.6,1.79 -8.33,0.1 -2.65,-0.52 -5.05,-1.27 -4.7,-4.45 -2.02,-1.11 -5.86,-2.21 -7.53,-1.16 -1.29,1.98 -3.84,1.06 -5.84,1.31 -1.81,-1.01 -2.04,-3.39 -2.5,-5.41 3.14,0.3 2.23,-3.59 0.51,-4.83 -1.37,-2.03 -4.15,0.89 -5.53,-1.6 -1.69,-0.96 1.02,-5.32 2.36,-2.94 1.62,-1.63 2.76,-3.73 4,-5.66 -0.78,-1.58 -4.12,-2.02 -3.47,-4.09 -2.15,-0.17 -2.01,-2.77 -1.75,-4.31 -4.91,-2.77 -10.54,-0.91 -15.84,-1.69 -2.69,-0.42 -5.41,-2.8 -8.03,-1.28 -1.99,0.45 -4.28,-1.52 -3.68,-3.5 0.86,-2.86 -0.76,-4.88 -2.35,-7.1 -1.55,-2.64 -4.98,-6.28 -2.16,-9.19 -2.47,-3.43 -7.17,-3.03 -10.89,-3.21 -0.41,0.09 -0.82,0.18 -1.23,0.27z m95.09,106.63c0.36,0.47 0.77,-0.65 0,0z\",\"name\":\"ThÃ¼ringen\"},\"sh\":{\"path\":\"m173.41,0.78c-1.96,2.02 -2.32,5.26 -3.72,7.72 0.61,-2.46 2.87,-3.44 4.94,-4.31 1.37,-2.31 1.87,-2.9 -1.22,-3.41z m-4.63,9.69c-1.37,3.14 -2.78,7.11 -2.63,10.16 1.42,-1.81 3.12,-2.33 4.66,-0.67 1.41,1.35 2.9,1.87 4.52,0.27 2.61,-1.53 -0.74,-0.41 -1.92,-1.16 -2.06,-1.81 -4.59,-3.55 -3.89,-6.71 -0.29,-0.68 0.25,-4.89 -0.73,-1.88z m16.78,8.5c-1.27,2.96 0.71,4.89 2.59,6.89 3.39,3 2.55,7.98 4.79,11.67 0.62,3.55 5.38,3.23 6.46,6.57 3.09,5.18 8.01,9.55 9.53,15.49 -0.32,3.65 -4.55,4.93 -6.72,7.41 -1.75,1.07 -3.73,2 -5.62,0.78 -2.44,0.59 -7.26,-0.45 -7.37,2.95 0.9,2.44 -1.97,3.88 -3.95,4.18 -1.94,-2.13 -2.52,-1.01 -2.77,1.45 -0.87,2.9 3.21,3.7 4.93,4.64 1.92,-3.3 6.38,-1.94 9.56,-2.06 2.21,2.21 1.18,5.9 0.57,8.61 -1.14,2.05 -2.44,4.23 -0.74,6.43 0.5,2.36 2.45,2.12 4.01,1.08 3.24,-0.45 3.19,4.26 4.78,6.16 2.07,2.16 -0.11,6.53 -3.11,5.16 -1.14,-1.75 -5.79,-1.46 -5.26,0.73 2.63,2.93 2.85,7.1 5.04,10.2 1.56,1.12 3.1,3.53 5.09,1.5 1.43,0.34 0.36,3.67 3.4,2.47 5.03,0.4 10.67,-0.76 14.8,2.92 4.21,3.5 4.64,9.55 8.23,13.45 3.79,1.81 5.25,6.01 5.59,9.84 1.82,3.22 5.7,4.78 8.7,6.74 2.98,1.76 2.45,-2.04 3.3,-3.87 0.32,-3.07 2.7,-3.68 2.95,-0.51 1.97,4.21 4.12,0.09 5.74,-1.98 1.13,-1.81 1.09,-3.61 3.84,-2.85 2.75,1.63 4.73,-1.94 6.94,-3.16 -0.04,-2.48 1.02,-3.47 3.73,-4.47 1.51,-1.18 4,-1.93 4.95,0.16 -0.92,3.02 -1.41,6.74 1.26,9.04 1.1,1.47 -0.59,3.76 -1.58,5.02 -3.72,1.55 -2.94,7.3 0.6,8.57 3.05,0.71 1.81,2.28 4.18,4.34 1.9,2.3 3.7,4.33 6.71,5.17 4.24,1.47 7.8,5.01 12.4,5.13 1.57,-2.96 0.71,-7.47 3.24,-9.94 1.76,-0.99 3.85,1.15 5.23,-1.34 4.78,-3.66 7.65,-9.11 11.5,-13.72 0.07,-2.89 2.79,-4.69 1.09,-7.69 -1.21,-2.36 -3.12,-1.39 -5.13,-1.38 -2.37,-1.11 -4.33,-3.37 -5.88,-5.25 0.57,-2.78 0.94,-5.55 -0.72,-8.01 -1.68,-4.33 3.4,-6.71 6.26,-8.75 2.76,0.39 4.62,-1.55 2.8,-4.28 -2.57,0.04 -0.18,-3.45 -2.47,-3.84 -2.6,1.03 -5.44,-0.16 -6.16,-2.94 -1.95,-2.52 -0.1,-5.31 2.05,-6.91 1.09,-2.74 3.32,0.44 5.2,-0.9 2.94,-4.13 6.93,-7.19 11.06,-10.05 2.63,-1.56 0.21,-5.06 0.5,-7.57 -0.21,-3.63 -1.2,-7.39 -0.01,-10.84 0.18,-2.96 -5.24,-0.47 -7.49,-1.07 -5.13,1.62 -7.3,9.04 -13.4,8.34 -3.13,0.69 -4.64,-2.86 -6.1,-4.84 -4.97,-2.87 -10.19,-5.54 -15.47,-7.76 -2.99,-1.52 -6.08,0.55 -8.5,2.13 -0.97,2.39 -2.38,4.59 -2.88,7.13 -1.56,-1.44 -3.01,-3.67 -0.84,-5.3 1.62,-1.77 -1.68,-4.84 0.9,-6.58 0.02,-1.27 -2.39,-3.21 -3.97,-2.94 -4.31,0.8 -8.65,1.68 -12.59,3.47 -2.43,1.23 -4.15,-0.86 -4.81,-2.94 1.24,-1.68 2.97,0.32 4.34,-1.22 3.92,-1.6 8.22,-4.79 7.48,-9.56 -0.08,-4.17 0.91,-8.43 -1.14,-12.32 -1.21,-3.12 -1.73,-8.59 -5.28,-9.18 -0.59,1.71 -1.3,5.52 -3.94,3.91 -3.94,-2.44 -5.62,-7.87 -10.62,-8.75 -2.4,-0.95 -5.92,-1.49 -2.94,-4.34 -2.83,-1.32 -4.46,2.91 -6.75,4.06 -1.81,0.77 -3.7,1.77 -5.55,1.1 -2.17,-0.1 -2.78,3.34 -5.32,2.53 -2.44,-0.17 -5.39,0.15 -5.47,-3.04 1.26,-2.25 -1.79,-2.35 -3.37,-3.29 -2.69,-1.82 -6.3,0.87 -8.88,-1.52 -3,-2.97 -8.01,-2.63 -12.09,-2.77 -2.73,-0.05 -5.94,1.35 -8.19,-0.63 -2.53,-0.79 -2.34,1.14 -3.28,2.91z M165.38,30.69c0.26,2.81 0.4,-8.09 0.17,-2.47 -0.06,0.82 -0.12,1.65 -0.17,2.47z m13.5,1.44c-2.38,0.11 -5.93,-0.19 -6.48,2.95 -0.84,2.31 2.84,2.19 4.01,3.33 2.08,0.12 5.59,1.6 6.02,-1.46 1.83,-2.49 -0.07,-5.86 -3.55,-4.82z m-11.97,6.41c-1.92,2.44 0.88,5.14 2.25,6.97 3.61,0.13 0.82,-1.45 -0.03,-3.16 -0.91,-0.75 -0.95,-5.89 -2.22,-3.81z M181.53,44c-3.16,2.07 3.2,-1.05 4.68,-0.94 3.57,-2.86 -4.04,0.86 -4.68,0.94z m-1.31,6.22c-3.19,-0.54 3.33,2.8 0.63,-0.13 -0.17,-0.12 -0.42,0.08 -0.63,0.13z m8.44,2.63c-1.5,0.95 -5.02,0.69 -5.3,2.69 0.04,2.05 2.12,3.65 4.01,2.44 0.45,-0.74 3.48,-5.42 1.28,-5.13z m142.28,2.25c-2.22,2.09 -3.42,5.93 -2.84,8.5 1.81,-1.93 6.45,-1.17 5.53,2.13 0.75,2.01 5.23,1.5 7.53,1.68 3.9,0.79 4.95,-0.34 2.64,-3.56 -1.78,-3.59 -4.09,-7.7 -8.61,-7.85 -1.38,-0.32 -3.03,-0.37 -4.25,-0.9z m-134.34,2.94c-1.42,2.56 1.08,4.09 3.5,3.69 1.95,-0.37 3.87,-2.9 3.63,-4.91 -2.37,-0.51 -4.91,-1.04 -6.76,0.98l-0.36,0.24z M140.06,88.88c-0.28,2.81 2.92,0.39 0,0z m48.13,13.38c-1.61,1.32 0.69,2.85 0.06,-0.03l-0.06,0.03z\",\"name\":\"Schleswig-Holstein\"},\"st\":{\"path\":\"m367.5,207.72c-2.53,0.49 -2.68,6.11 -5.69,3.88 -1.54,-0.27 -2,4.74 -0.62,6.28 -1.83,0.03 -4.69,1.23 -5.84,3.45 -2.16,1.75 -5.06,2.95 -7.73,3.81 -1.55,-0.32 -3.98,0.25 -4.38,-1.66 -3.96,-2.32 -9.18,-1.22 -13.69,-1.78 -0.82,1.11 0.07,3.08 -1.73,3.89 -1.82,3.69 -6.1,1.61 -9.28,2.54 -2.64,-0.11 -4.45,1.7 -3.62,4.38 -0.45,3.07 1.59,5.83 2.38,8.76 4.58,2.95 6.91,8.32 9.22,13.03 -1.02,4.14 2.73,7.03 5,9.88 -2.35,-0.75 -6.67,0.93 -4.41,3.78 2.13,2.7 4,5.66 7.03,7.25 2.19,1.61 0.12,4.97 -2.22,4.59 -1.88,2.15 -0.66,5.73 1.52,7.3 1.12,1.37 4.12,3.9 1.64,5.39 -1.82,-0.07 -4.08,1.44 -3.31,3.44 0.85,1.22 3.42,-0.32 2.88,2 0.05,3.3 -3.89,4.53 -5.42,6.71 -0.9,2.3 0.67,6.76 -2.83,4.48 -2.5,-0.5 -4.36,0.86 -6.64,1.31 -3.5,0.14 -7.17,-0.75 -10.56,0.56 0.56,2.46 -2.44,4.29 -4.71,3.94 -2.29,1.2 4.79,4.03 4.2,5.21 -3.3,0.45 -2.03,3.05 0.01,3.98 1.13,2.32 -0.87,4.55 -2.86,5.36 -2.94,1.53 -1.17,5.3 -1.3,7.86 2.06,2.6 4.65,5.37 5.72,8.78 -0.64,2.04 0.85,6.26 3.56,4.75 3.65,0.5 8.21,-0.2 10.69,3.16 4.64,-2.48 0.38,1.08 -0.35,3.49 0.67,3.87 3.9,7.06 5.79,10.42 0.02,2.22 -1.14,5.56 1.78,6.09 2.2,-1.04 4.22,-0.48 6.44,0.45 5.84,2.46 12.54,-0.89 18.17,2.38 2.32,0.62 -0.45,4.34 2.28,4.54 1.79,0.31 -0.33,2.19 2.35,3 1.69,0.92 2.02,2.61 0.5,3.94 -1.45,1.35 -2.21,4.99 -4.56,4.59 -2.63,-0.91 0.09,3.99 2.28,1.66 2.83,0.66 5.62,4.8 3.25,7.41 -2.57,1.08 1.05,5.18 3.56,3.71 1.96,-0.79 2.91,-2.94 5.65,-1.43 2.6,0.08 6.05,0.91 5.78,4.15 1.33,1.52 4.58,2.03 6.72,2.37 2.49,-0.44 5.14,-1.91 7.2,0.43 2.77,1.74 6.17,3.82 6.94,7.21 2.79,-1.13 5.73,-0.73 8.41,0.53 1.23,-2 2.73,-1.49 3.69,0.66 0.59,3.07 2,-0.72 2.48,-1.83 0.83,-2.27 3.92,-5.75 0.2,-7.01 -1.99,-2.12 2.54,-4.35 -0.47,-5.52 -3.54,-1.32 0.06,-3.71 -3.77,-3.68 -1.13,-1.82 -0.14,-5.31 -0.45,-7.77 0.09,-3.62 -2.36,-6.17 -3.27,-9.5 -2.24,-2.8 3.78,-1.95 2.18,-4.77 -0.27,-3.83 -1.97,-7.24 -2.66,-10.91 1.12,-2.57 2.7,-5.07 2.75,-7.88 2.68,-2.78 6.09,-4.94 9.75,-6.06 4.81,0.08 9.58,-1.34 13.94,-3.25 0.29,-3.17 3.92,1.99 5.64,-1.8 0.58,-1.59 1.27,-4.54 3.8,-3.39 2.22,1.16 4.46,1.71 7.03,1.3 4.79,-0.31 9.85,0.27 14.45,-1.01 2.63,-2.16 7.03,-3.34 7.55,-7.13 -2.51,-3.21 -2.57,-7.84 -4.05,-11.66 -1.56,-2.32 0.46,-2.56 1.11,-3.49 -1.21,-1.69 -2.84,1.88 -4.93,0.87 -3.35,0.33 -4.21,-4.14 -7.34,-4.73 -1.95,-1.81 -4.21,-0.39 -6.46,-1.61 -1.95,-1.37 -5.09,-1.98 -5.86,-4.32 -2.25,-0.71 -4.5,-3.34 -6.75,-2.88 0.04,3.1 -4.02,3.62 -6.31,2.65 -6.29,-1.76 -13.04,-4.4 -16.59,-10.25 -1.82,-2.88 -4.27,-5.73 -5.88,-8.53 1.69,-2.65 1.92,-5.52 1.61,-8.56 0.08,-3.49 1.94,-6.54 3.57,-9.44 -0.44,-3.76 -2.35,-8 0.31,-11.34 1.69,-3.42 -2.77,-5.17 -4.84,-4.84 -0.77,1.84 -4.03,2.12 -4.73,-0.07 -3.16,-2.02 -0.66,-5.45 -0.28,-8.33 0.25,-2.72 1.68,-3.75 3.82,-4.6 0.52,-2.45 0.69,-5 -1.29,-6.86 -2,-2.13 -0.72,-5.29 -0.24,-7.76 2.19,-2.1 2.75,-4.3 1.28,-7.4 -0.37,-2.87 -3.52,-1.27 -5.2,-0.49 -2.2,0.23 -1.98,-4.35 -5.66,-2.08 -3.04,0.71 -6,0.64 -8.83,-0.79 -2.04,-1.1 -6.47,-1.05 -6.16,-4.18 0.48,-0.96 2.72,-2.17 0.45,-2.84 -2.36,-0.92 -4.97,-4.41 -7.35,-1.78 -2.26,0.12 -3.78,-2.34 -5.44,-3.56 -1.33,-1.14 2.25,-2.99 -0.03,-2.78z m-35.72,88.19c-0.1,0.03 0.04,0.06 0,0z\",\"name\":\"Sachsen-Anhalt\"},\"sn\":{\"path\":\"m438.91,347.22c-0.71,1.7 -1.23,3.74 -3.22,4.5 -2.58,1.63 -3.52,-1.1 -5.94,1.53 -4.3,1.22 -8.55,2.77 -13.09,2.53 -3.01,1.74 -7.34,3.17 -8.45,6.62 0.03,3.26 -3.77,5.91 -1.75,9.19 1.33,3.2 1.78,6.8 2.19,10.31 -4.06,0.29 -2.18,3.87 -0.74,6.17 2.24,3.72 1.36,8.42 1.53,12.58 2.6,-0.28 2.73,2.06 3.18,3.2 1.51,2.44 3.44,1.13 5.41,0.39 3.7,1.5 8.18,1.88 11.41,4.16 0.74,1.94 -0.81,4.85 2,5.77 1.72,1.99 6.37,0.62 6.03,4.01 -0.35,2.66 3.75,3.98 1.22,5.97 -3.58,1.98 -8.34,0.37 -11.41,3.34 -0.07,2.05 -0.66,4.73 -3.19,4.69 -0.84,-2.38 -4.84,-0.74 -3.91,1.56 -2.16,0.55 -4.73,2.38 -6.75,1.41 -0.26,3.26 -1.99,6.93 0.66,9.67 0.13,3.51 6.2,1.64 4.46,5.11 -1.54,2.13 -3.26,4.42 -6.11,4.51 -2.19,1.15 -4.93,1.82 -6.85,3.17 1.14,0.4 3.92,-0.58 2.97,1.81 -1.3,0.56 -2.71,1.18 -4.15,1.04 -1.87,-0.95 -6.83,1.68 -5.71,-1.56 0.5,-1.28 0.39,-7.08 -1.74,-3.97 -0.56,2.99 -4.53,3.58 -5.56,6.44 -1.97,1.1 -1.24,4.78 1.19,3.64 1.33,1.03 5.21,3.22 2.79,5.13 -0.59,1.68 -5.69,2.39 -2.69,4 2.14,0.67 3.79,2.61 5.05,4.37 -0.72,2.68 -0.54,4.28 2.54,4.44 2.89,0.5 5.02,2.48 7.96,1.72 3.8,-1.14 4.85,3.42 6.85,5.61 1.23,2.16 4.76,5.08 2.59,7.58 -0.49,1.72 3.93,3.14 3.09,0.38 -2.48,-2.46 -0.08,-6.44 1.28,-8.97 2.86,-4.57 6.53,-8.74 9.94,-12.84 4.56,-2.02 9.99,-0.84 14.06,-4.03 2.14,-0.66 4.2,-3.73 6.38,-3.05 2.63,1.52 5.07,3.45 7.78,4.83 2.07,-1.12 5.11,-3.24 4.13,-5.91 0.2,-2.04 -0.2,-5.69 2.84,-5.24 2.59,-0.29 5.2,-0.72 7.63,0.55 2.91,-0.54 1.72,-4.96 3.88,-6.45 2.35,-2.97 5.63,-5.26 8.68,-7.26 2.67,-0.81 5.51,3.8 7.01,0.39 1.65,-1.64 3.72,-4.3 2.58,-6.74 3.93,-2.17 7.47,-5.47 12.25,-5.22 2.33,-0.49 4.94,-0.78 7,0.62 2.41,-0.15 5.15,-2.09 4.01,-4.81 -1.95,-3.53 3.27,-1.43 5.18,-3.05 2.77,-1.08 6.09,-1.25 7.96,-3.69 5.86,-2.9 11.49,-6.39 17.78,-8.32 1.88,-3.11 -0.76,-3.48 -3.2,-3.83 -2.51,-0.45 -4.28,-2.72 -5.9,-4.48 1.17,-2.33 1.01,-5.72 3,-7.44 2.01,-0.54 2.32,2.64 4.53,2.3 2.11,1.26 6.52,1.34 7.5,-0.58 -0.17,-3.74 3.64,0.67 5,1.7 3.7,2.16 4.3,6.67 5.45,10.42 1.49,2.62 -2.09,6.06 2.42,6.33 2.67,0.89 5.37,2.57 8.28,1.87 0.47,-3.78 1.26,-7.7 4.06,-10.39 2.84,-3.18 3.04,-7.91 3.71,-11.62 2.05,-4.17 1.85,-9.14 2.71,-13.74 0.26,-3.07 0.84,-6.1 1.99,-8.91 0.22,-5.15 -3.62,-9.39 -5.25,-14.09 -0.63,-2.47 0.48,-5.37 -1.69,-7.4 -2.96,-2 -6.81,-2.81 -10.16,-4.16 -2.63,0.45 -5.28,-0.92 -5.64,-3.77 -0.41,-2.32 0.72,-4.39 -0.77,-0.54 -0.78,2.23 -4.07,1.99 -5.91,1.44 -0.89,-2.72 -3.76,-2.22 -5.89,-1.05 -2.43,0.03 -4.2,1.93 -3.78,3.04 -2.98,-1.35 -5.85,1.55 -8.48,2.42 -3.55,-1.67 -7.51,-1.35 -11.28,-1.56 -3.58,3.73 -3.22,9.41 -5.54,13.67 -1.24,3.16 -4.34,3.42 -7.26,3.89 -3.26,1.02 -6.88,-0.1 -9.67,2.35 -1.59,0.79 -4,-0.13 -5.49,-0.56 -4.01,0.9 -8.8,0.36 -12.18,-2.44 -2.57,-1.34 -4.55,-3.47 -6.76,-5.28 -2.23,1.37 -5.63,2.37 -6.56,4.87 -0.02,1.86 -4.09,1.87 -5.44,1.29 -1.42,-2.13 -2.64,-3.94 -1.26,-6.61 0.56,-3.54 0.3,-7.09 -1.63,-10.2 -0.72,-1.89 -2.32,-5.98 -4.72,-4.31 -2.79,1.33 -2.48,-5.48 -5.68,-3.53 -5.59,0.15 -11.31,0.77 -16.84,0.31 -1.25,-0.57 -2.44,-1.63 -3.94,-1.22z\",\"name\":\"Sachsen\"},\"sl\":{\"path\":\"m63.72,553.88c-2.9,2.18 -6.1,2.82 -9.5,4.44 -3.47,4.51 -10,4.1 -15.06,5.38 -4.6,0.18 -8.97,-1.26 -13.22,-2.78 -2.47,1.73 -0.51,5.04 -0.84,7.5 1.8,0.96 4.08,-1.32 5.97,0.4 2.44,1.62 5.28,3.2 6.78,5.81 -3.49,0.44 0.05,4.79 -0.09,6.94 1.05,3.41 4.13,4.95 6.56,7.16 1.79,1.94 0.3,5.34 3.04,6.13 2.43,1.92 -2.53,4.66 1.39,5.86 2.37,0.12 6.25,2.27 7.13,-1.09 -0.35,-2.25 -3.03,-3.71 0.38,-4.78 4.42,0.26 10.1,1.27 11.81,5.94 0.51,1.58 -0.22,5.5 1.56,5.84 2.33,-0.7 1.95,-7.32 3.65,-3.1 1.02,1.94 2.67,2.87 4.44,1.6 2.61,-0.08 5.35,0.47 7.44,1.84 0.63,-1.3 5.37,-2.76 3.56,-3.91 -1.62,-2.52 -4.36,-5.17 -3.81,-8.41 1.42,-2.72 5.03,-3.05 6.69,-5.31 0.32,-2.19 -0.19,-4.41 0.63,-6.91 -2.49,1.08 -4.55,-2.01 -6.84,-2.72 1.25,-2.57 -1.08,-3.33 -2.41,-4.88 -1.38,-2.57 3.05,-1.81 2.04,-4.46 0.15,-3.03 0.9,-7.08 -0.66,-9.48C81.13,563.37 78.01,559.23 75,558.25c-1.82,-1.1 -4.05,-5.12 -6.16,-3.76 -1.8,1.27 -2.93,1.15 -3.06,-0.42 -0.68,-0.01 -1.4,-0.33 -2.06,-0.19z\",\"name\":\"Saarland\"},\"rp\":{\"path\":\"m124.22,422c-3.08,1.37 -2.76,4.11 -2.15,6.91 -0.74,2.27 -2.92,4.57 -5.35,5.28 1.82,2.98 -1.68,6.02 -4.55,6.28 -3.87,1.42 -8.15,2.76 -11.74,4.31 -2.53,-1.67 -5.28,-0.25 -4.24,2.84 0.38,2.78 -1.77,4.53 -4.33,4.8 -2.21,0.9 -4.57,1.03 -6.93,0.89 0.24,-3.01 0.16,-2.77 -0.66,-0.16 -2.61,2.5 -6.78,2.21 -10.16,3.14 -1.7,1.36 -3.59,4.13 -6.33,3.09 -1.84,0.93 -1.47,5.36 -2.5,7.61 -0.31,2 -3.88,3.46 -5.32,1.71 -2.49,-2.13 -5.07,1.92 -3.92,4.39 -1.32,2.14 3.87,6.32 1.33,6.03 -2.57,-0.38 -4.98,1.47 -7.53,-0.25 -1.87,-0.86 -4.14,-1.17 -5.28,-3.06 -3.07,1.11 -6.64,2.41 -9.75,2.06 -1.18,-2.88 -5.27,-3.74 -3.13,0.21 0.06,1.85 3.77,4.69 0.04,3.72 -2.34,1.34 -4.33,-0.2 -6.47,-0.11 -0.71,2.72 -2.48,4.43 -4.99,5.59 -1.73,1.37 -5.12,2.04 -4.14,4.93 1.73,3.46 -1.97,4.26 -2.68,6.98 -1.38,4.14 -2.64,8.53 -0.77,12.73 1.47,5.09 3.95,10.18 7.71,13.93 3.19,1.73 6.27,3.8 8.6,6.49 1.94,2.68 4.29,-1.39 6.06,0.93 1.74,1.25 1.47,4.34 1.36,6.37 -1,5.55 -4.71,9.97 -7.61,14.63 -1.1,1.62 -3.21,1.58 -3.81,3.7 1.32,3.4 5.62,2.86 8.44,4.25 6.02,0.99 12.25,-0.27 17.78,-2.55 1.84,-1.13 2.94,-3.18 5.35,-3.48 2.7,-0.62 4.85,-2.4 7.33,-3.4 2.47,-0.56 3.3,1.96 4.66,0.63 1.69,-1.87 4.4,2.01 6.06,3.12 2.19,1.85 4.96,3.22 7.6,4.23 2.08,-1.3 3.07,-1.77 3.74,1 0.63,3.7 0.2,7.6 -0.21,11.34 -3.62,0.15 -1.02,2.73 0.84,3.34 -0.88,3.1 1.79,3.86 4.18,5.17 2.7,-0.99 3.7,-0.04 2.19,2.5 -0.63,2.28 0.81,4.56 -1.1,6.61 -1.8,1.77 -5.4,2.25 -6.16,5.03 0.5,2.47 2.45,5.22 3.88,6.72 0.53,-2.07 4.25,-1.3 6.09,-2.06 2.18,0.88 4.73,2.02 3.59,4.81 0.57,4.16 4.15,6.47 7.58,8.3 4.06,2.82 9.28,1.81 13.75,1.03 5.57,0.87 11.49,1.89 16.04,5.46 1.5,1.92 4.34,2.91 6.75,3.03 1.44,0.1 3.88,-0.46 4.75,1.03 2.73,-1.42 4.25,-4.04 4.38,-7.03 0.97,-3.35 4.62,-5.13 4.47,-8.92 0.59,-3.28 2.22,-6.72 1.35,-9.86 0.74,-2.94 4.48,-3.42 5.84,-6.03 2.45,-0.61 0.47,-2.16 -0.81,-2.44 -2.02,-2.71 2.93,-3.58 2.9,-6.17 0.3,-2.2 -0.42,-4.5 0.69,-6.55 -1.31,-0.77 -4.55,0.38 -4.34,-2.22 1.3,-2.38 -0.67,-5.57 -0.94,-8.16 -1.05,-1.55 -0.56,-3.22 -0.06,-4.81 -2.06,-3.14 -3.58,-6.56 -4.31,-10.28 -0,-3.21 3.88,-3.16 5.84,-4.38 1.83,-1.95 0.9,-4.67 -1.26,-6.04 -2.48,-3.08 -4.3,-6.94 -4.99,-10.83 0.78,-1.71 1.4,-3.41 0.25,-5.25 -0.12,-3.38 -3.6,-5.04 -5.13,-7.75 -2.86,-3.27 -7.52,-1.08 -10.66,0.56 -4.69,1.79 -9.52,4.51 -14.68,3.47 -2.44,-2.49 -4.42,-5.7 -6.29,-8.66 -2.19,-2.94 2.65,-2.19 3.79,-4.33 1.44,-3.52 5.56,-1 5.95,-3.31 1.05,-2.62 -4.12,-2.88 -2.51,-5.79 1.38,-2.83 4.79,-3.85 7.44,-4.63 1.92,2.63 5.73,-0.22 2.09,-1.81 -1.3,-2.26 2.57,-3.89 4.23,-2.24 3.08,0.46 1.96,-3.71 0.96,-5.33 -1.37,-3.08 -3.17,-5.78 -6.33,-7.23 -3.79,-0.63 -1.12,-3.37 -0.49,-6.08 0.24,-1.88 -1.87,-3.91 -0.43,-6.13 1.19,-2.18 3.39,-6.07 6.28,-3.97 1.67,3.39 3.78,0.05 4.16,-2.21 1.81,-2.05 -0.69,-2.3 -1.07,-3.97 -0.17,-2.37 -1.93,-5.43 0.13,-7.42 -0.88,-3.78 -6.22,1.19 -5.36,-1.83 1.28,-4.22 -5.99,-5.38 -4.53,-9.85 1.32,-2 0.84,-5.3 -1.94,-5.86 -1.78,-2.03 -5.71,-1.54 -6.82,-3.48 -0.21,-1.96 2.71,-4.06 -0.25,-4.94C125.29,422.08 124.64,421.87 124.22,422z\",\"name\":\"Rheinland-Pfalz\"},\"nw\":{\"path\":\"m177.25,263.34c-2.1,-1.63 -5.7,-1.31 -6.06,1.91 0.19,3.63 -4.48,4.11 -7,3.66 -1.11,-1.64 -4.06,-2.21 -2.35,0.66 0.52,3.14 4.56,4.05 6.57,6.26 1.92,1.46 2.52,4.49 2.62,6.8 0.18,2.64 0.19,5.1 -0.9,7.58 -1.32,1.99 0.48,3.83 2.46,3.92 3.25,0.58 0.3,2.71 -0.78,3.97 -1.55,0.88 -3.89,0.86 -4.75,2.84 1.66,2.95 -2.56,1.58 -4.29,1.1 -2.41,-0.95 -5.38,-1.98 -7.02,0.74 -2.16,1.92 -4.56,3.57 -7.26,4.5 -1.87,2.2 -2.96,-0.94 -5.46,-0.31 -2.18,0.39 -2.63,4.37 -4.84,2.75 -2.6,-0.41 -3.41,-2.28 -4.46,-4.35 -2.31,-1 2.21,-2.81 3.55,-2.98 3.51,0.2 5.07,-3.48 2.41,-5.69 -1.71,-1 -4.92,-1.05 -5.1,-3.81 -0.4,-2.56 2.07,-4.87 2.81,-7.19 0.91,-0.72 -1.83,-2.26 -0.5,-3.69 3.14,-1.64 1.45,-5.72 -1.26,-6.8 -2.05,-1.15 -4.05,1.71 -6.33,0.21 -2.51,-1.72 -6.07,-2.59 -6.27,-6.18 -0.22,-2.85 -2.57,-3.65 -4.96,-4.34 -1.35,-0.64 -3.78,3.65 -1.27,3.96 1.72,1.12 -0.74,4.19 -1.92,5.19 -4.58,2.06 -9.39,4.71 -12.83,8.28 -0.91,2.09 -3.91,0.71 -4.63,3.16 -3.68,0.16 -7.44,-1.07 -11.03,-0.19 -1.13,2.36 -3.53,1.5 -5.41,2.92 -3.3,2.56 -8.23,3.82 -10.15,7.67 -0.16,4.41 -5.85,3.29 -8.27,5.42 -1.07,1.95 -3.97,5.3 -0.36,6.02 2.12,2 6.43,3.97 4.59,7.5 -2.07,2.76 -4.18,5.76 -7.59,6.94 -1.43,-2.65 -3.58,-2.35 -5.97,-1.09 -2.93,0.68 -5.59,2.43 -8.37,3.24 -1.83,0.92 -6.4,-1.52 -6.2,0.14 1.25,2.44 1.32,5.11 -1.64,2.71 -2.84,-2.65 -6.23,-5.14 -10.34,-4.5 -2.26,1.13 -4.86,1.79 -7.57,1.91 -2.94,-0.3 -6.47,1.11 -7.66,3.97 0.91,4.49 1.78,9.09 3.5,13.31 3.65,0.48 3.87,3.28 3.59,6.38 -0.03,2.95 4.03,4.36 4.95,7.23 3.16,3.93 2.85,9.32 1.32,13.83 -1.07,2.64 2.37,5.59 -1.15,7.3 -2.71,3.53 -6.04,6.82 -8.16,10.71 -0.6,1.66 -1.81,5.57 0.42,6.15 1.79,-1.07 4.45,-3.48 6.03,-0.89 -1.83,0.74 -3.77,2.52 -4.63,4.79 -4.06,2.72 -7.88,5.86 -12.82,6.75 -2.54,0.57 -4.87,1.7 -3.17,4.63 0.65,3.73 2.86,3.68 5.9,3.34 1.73,-0.12 4.7,0.11 2.92,2.43 -1.62,2.73 0.97,3.7 3.18,4.3 2.89,0.68 -1.54,3.27 0.66,4.81 0.17,1.78 -1.03,5.56 -2.97,3.06 -2.7,0.41 -2.86,4.47 -3.11,6.49 1.25,3.17 3.86,4.98 6.86,6.32 1.73,2.64 2.03,6.34 4.88,8.31 -3.91,1.75 5.55,0.78 2.22,4.39 0.29,3.25 -5.37,3.94 -3.38,7.37 0.76,1.42 1.86,4.52 3.66,2.67 3.25,-0.44 6.22,1.26 7.36,4.35 2.36,2.77 -0.08,6.31 -0.45,9.15 2.56,4.82 -0.8,-1.03 2.06,-1.07 2.71,-1.06 3.44,4.11 6.19,2.53 2.75,0.37 5.82,-2.69 8.02,-1.5 1.92,2.23 5.39,3.01 8.14,3.37 3.72,-0.21 2.3,-1.41 1.51,-3.82 0.04,-2.95 -1.16,-6.55 2.63,-7.5 2,-1.69 3.89,3.12 6.16,0.31 1.15,-2.86 1.77,-6.3 2.41,-9.46 2.7,1.12 5.4,-0.08 6.75,-2.56 3.27,-1.13 7.52,-0.86 10.35,-2.91 0.37,-1.12 0.98,-4.32 2.62,-2.66 -0.82,3.1 2.33,2.44 4.39,1.84 2.3,-0.53 5.31,-1.22 4.81,-4.28 -0.51,-2.22 0.4,-5.33 3.3,-4.47 2.78,1.45 5.46,-1.31 8.27,-1.76 3.1,-1.68 7.91,-1.4 9.45,-5.05 -0.47,-2.98 -4.28,-3.7 0.44,-3.18 2.74,-1.08 5.31,-3.89 4.08,-6.99 -1.04,-2.52 1.87,-4.26 3.71,-5.24 2.21,0.36 5.37,2.16 3.03,4.28 -1.84,2.46 1.06,2.47 2.69,2.94 2.57,1.6 7.18,2.77 6.12,6.74 -0.22,1.83 -1.49,3.93 0.54,5.35 1.58,1.78 4.44,3.29 3.47,6.09 1.92,-1.91 4.28,0.75 5.25,0.78 1.15,-1.97 2.94,-4.17 0.84,-6.13 -1.97,-2.33 -1.27,-4.35 1.26,-5.9 2.67,-2.21 4.81,-5.42 7.75,-7.15 2.53,-0.53 5,4.12 6.81,1 1.81,-2.99 4.43,-5.63 4.94,-9.19 1.73,-1.11 2.77,-3.4 4.66,-4.63 0.39,-1.91 -1.57,-4.12 -1.75,-6.25 0.73,-3.23 4.88,-3.7 7.64,-2.9 1.98,0.85 4.51,0.77 5.94,-0.93 1.31,-3.2 3.81,-6.24 2.52,-9.88 -0.64,-1.84 0.53,-6.24 -2.48,-5.85 -2.48,0.46 -4.55,3.29 -7.13,2.53 -1.37,-1.68 -3.72,-3.65 -1.3,-5.48 2.34,-4.53 6.76,-7.46 11.73,-8.41 3.83,-1.47 7.94,-1.54 11.98,-1.11 1.92,-2.78 -0.9,-3.85 -1.9,-6.19 -1.82,-1.61 -1.41,-4.36 1.19,-4.68 3.14,-1.44 7.01,-2.83 10,-0.32 2.4,1.63 -0.27,3.86 1.25,5.59 1.92,0.62 4.04,0.65 4.63,-1.66 3.98,-3.61 9.19,-6.08 11.4,-11.26 1.23,-2.28 4.7,-5.14 4.82,-6.65 -1.68,0.55 -4.34,-0.05 -3.2,-2.36 0.05,-5.23 2.13,-10.09 3.74,-14.92 1,-2.69 -2.16,-5.66 -4.66,-4.72 -3.16,2.83 -0.64,-2.27 -0.81,-4.06 -0.05,-2.72 -2.54,-1.8 -3.99,-2.62 -2.61,-2.3 -7.4,-3.71 -6.62,-8.03 0.39,-2.34 -1.28,-5.79 0.83,-7.47 -2.23,-1.73 -1.62,-3.85 -2.5,-6.03 -2.65,-0.77 -5.5,-0.87 -7.39,-3.23 -1.18,-0.94 -5.31,-5.84 -2.07,-3.89 2.92,3.3 5.04,-1.41 4.58,-3.56 -1.6,-1.73 -4.39,-1.61 -6.02,-2.94 -1.48,-2.41 1.21,-4.72 1.94,-6.91 1.84,-2.01 5.4,-1.29 6.16,-4.38 1.42,-2.09 2.16,-4.3 0.81,-6.53 1.2,-2.26 2.95,-5.17 -0.91,-5.56 -3.17,-1.51 -3.6,3.21 -5.58,4.74 -1.93,2.12 -2.98,5.59 -6.39,5.38 -3.28,0.88 -6.88,0.85 -10.18,0.44 -3.79,-0.66 -2.03,-5.2 -2.58,-7.89 -0.63,-2.02 1.28,-4.76 -1.4,-5.81 -1.68,-1.96 -4.73,1.64 -6.71,2.05z m32.09,14.69c-0.04,0.06 0.1,0.03 0,0z\",\"name\":\"Nordrhein-Westfalen\"},\"ni\":{\"path\":\"m186.44,120.91c-5.6,0.51 -6.88,7.11 -8.44,11.54 -1.55,4.84 -4.41,10.19 -1.33,15.08 0.62,2.76 4.51,0.93 6.62,1.66 3.74,-0.55 1.44,3.37 1.28,5.34 -0.09,2.27 2.07,5.17 -0.81,6.68 -0.57,2.01 -4.6,1.89 -4.47,0.01 0.2,-1.62 -2.19,-2.79 -1,-4.38 -2.39,-2.05 -5.8,-0.88 -8.29,-2.92 -3.19,-0.55 -3.1,-6.58 -7,-4.9 -3.25,1.5 -2.87,5.42 -3.31,8.39 1.73,1.09 4.31,-1.81 5,0.84 0.65,4.51 -0.3,10.35 -4.66,12.69 -2.05,0.33 -4.01,-0.7 -4.44,-2.75 -1.01,-1.99 -2.84,-4.1 -4.91,-2.06 -2.51,-1.99 -2.84,-5.26 -2.69,-8.25 1.7,2.41 4.86,0.82 6.63,-0.53 1,-2.85 -1.94,-5.58 -2.55,-8.38 -0.35,-2.68 -2.75,-3.1 -4.67,-3.53 -0.88,-2.07 -1.59,-4.78 -0.56,-6.72 -5.56,-1.98 -11.61,-0.89 -17.16,0.47 -4.67,-1.16 -9.01,2.41 -13.75,2.56 -2.64,-2.27 -6.36,-1.45 -9.63,-2 -6.44,-0.16 -11.29,4.48 -15.23,9 -2.96,1.82 0.86,2.65 1.75,4.06 2.29,2.26 -1.66,3.67 -2.74,5.44 -1.44,-2.96 -5.14,-3.8 -4.27,0.54 -0.65,3.9 -0.71,8.05 -1.52,11.83 -1.87,1.87 0.95,4.14 2.97,3.58 5.28,0.29 10.96,-0.24 15.72,2.42 -2.08,0.69 -5.45,-0.97 -5.28,2.53 -1.3,3.55 -0.88,7.6 -1.89,11.2 -1.02,2.31 -3.53,5.58 -0.77,7.39 -1.04,4.96 1.43,10.17 -1.09,14.86 -1.44,6.42 -8.35,10.37 -8.34,17.29 -0.73,5.37 -0.65,11.06 -2.02,16.22 -1.54,2.43 -4.12,-1.19 -6.18,-0.78 -4.31,-0.59 -8.85,-1.62 -13.15,-0.5 -3.28,1.5 -0.59,5.19 -1.65,7.89 0.05,2.71 -1.96,5.6 -1.13,7.99 3.96,3.35 9.48,3.72 14.25,5.18 1.32,-0.55 1.98,-4.64 3.66,-2.59 1.6,4.04 5.43,7.78 4.44,12.38 -1.84,2.71 -4.41,6.49 -1.89,9.57 1.86,2.89 3.08,-1.11 5.12,-1.16 3.32,-0.74 7.21,1.07 10.28,0.08 0.77,-2.08 3.82,-0.65 4.33,-3.02 3.95,-3.24 8.34,-6.11 13.06,-8 3.49,-2.99 -0.93,-3.55 0.23,-6.31 0.69,-1.71 1.95,-4.41 4.07,-2.55 2.19,0.59 4.44,1.49 4.69,4.05 0.24,3.46 3.25,4.66 5.87,6.2 2.49,1.33 5.1,-2.32 7.3,0.36 2.1,0.86 2.8,3.79 2.88,5.66 -2.14,1.36 -2.99,3.7 -0.25,5 -2.47,1.24 -2.71,4.41 -4.06,6.59 -0.13,3.3 3.86,2.19 5.28,4.24 1.61,1.34 2.29,6.23 -0.56,6.24 -2.12,1.03 -7.72,1.03 -4.44,4.18 0.32,1.52 3.77,3.35 4.41,1.19 1.64,-2.26 4.29,-2.15 6.63,-1.31 1.36,-0.07 3.99,-1.2 5.52,-2.37 2.72,-1.18 4.39,-5.59 7.79,-3.97 1.75,0 5.6,2.6 5.94,0.72 0.62,-2.2 3.26,-3.09 5.19,-3.63 2.15,-1.43 1.31,-2.65 -0.91,-2.81 -3.46,-2.11 -0.12,-6.05 -0.14,-8.9 -0.15,-3.52 0.05,-8 -3.58,-9.88 -2.14,-2.11 -6.14,-3.08 -5.9,-6.7 -1.51,-2.43 0.6,-3.29 2.77,-2.04 1.45,1.42 4.2,1.38 5.98,0.03 1.26,-1.81 0.54,-4.61 3.46,-5.43 2.32,-1.11 5.18,2.05 7.68,-1.07 2.13,-2.24 4.04,-0.2 5.66,1.43 0.57,2.57 -0.21,5.4 0.22,8.09 -0.93,3.21 1.85,4.85 4.75,4.17 3.21,-0.08 7.22,0.09 9.7,-1.99 2.54,-2.97 4.51,-6.31 6.89,-9.36 2.02,0.69 5.86,0.77 5.97,3.44 -1.73,2.35 -1.52,4.54 -0.97,7.06 -1.39,2.86 -2.39,6.91 -6.2,7.13 -2.4,1.05 -3.91,4.28 -3.71,6.63 1.97,1.04 4.71,1.6 6.53,3.33 0.07,1.63 -1.12,5.59 -2.84,6.05 -3.41,-0.73 1.6,2.55 2.84,3.1 2.26,0.15 6.09,0.95 5.15,4.09 -0.68,1.53 3.99,3.73 1.27,4.76 -0.76,2.74 -0.13,6 0.12,8.84 1.43,2.32 4.36,3.6 6.57,5.25 3.31,-0.99 4.48,3.42 3.35,5.85 0.3,0.17 2.48,-0.22 3.34,0.68 2.41,1.16 3.09,3.45 2.56,5.97 -2.13,4.96 -3.82,10.38 -3.75,15.72 2.51,0.18 4.77,-1.21 7.34,-1.06 0.61,1.51 -0.65,3.85 2.25,3.24 3.59,-0.55 6.83,1.47 9.03,4.14 1.86,0.23 1.58,3.6 -0.22,2.84 -1.35,2.17 -4.02,2.06 -5.22,4.59 1.78,2.73 3.46,5.34 3.51,8.74 1.02,2.35 -1.28,3.79 -3.38,3.42 -2.32,0.54 -3.56,5.32 -0.53,5.96 3.22,1.18 6.33,2.54 9.36,4.13 4.29,-2.82 0.47,-2.05 -1.06,-3.89 -2.77,-2.53 1.66,-4.59 3.28,-6.24 2.15,-2.54 5.98,-1.9 8.84,-2.34 2.08,1.35 1.61,5.72 4.21,2.64 3.91,-2.4 7.72,-5.21 12.48,-5.45 3.97,-2.72 8.84,-4.93 11.78,-8.85 1.12,-1.78 0.33,-3.88 2.39,-5.63 3.16,-1.67 6.79,0.6 8.47,3.25 2.88,-0.58 7.14,-0.26 7.76,-3.87 -0.05,-2.88 3.65,-4.47 1.75,-6.24 -1.57,-2.46 -0.32,-5.67 -2.8,-7.78 -1.09,-2.4 -4.13,-3.43 -3.79,-6.44 -0.16,-2.66 -0.99,-6.17 2.11,-7.49 1.53,-0.76 3.52,-2.56 1.95,-4.3 -2.69,0.07 -2.43,-3.84 -0.41,-4.53 -1.85,-1.14 -5.14,-4 -4.75,-5.49 2.09,-0.39 4.95,0.22 5.97,-2.13 -0.9,-2.87 3.5,-2.65 5.41,-2.71 2.87,-0.48 6.16,1.13 8.63,-0.98 1.86,-0.84 5.77,1.14 5.58,-1.56 -0.39,-2.88 1.81,-4.27 3.9,-5.7 0.91,-0.47 3.07,-3.7 1.17,-3.53 -3.44,0 -2.76,-5.19 0.13,-5.66 3.82,-0.08 0.19,-3.6 -1.09,-4.81 -2.24,-1.37 -1.88,-4.21 -1.94,-6.38 0.35,-2.73 4.31,-1.12 3.91,-4.03 -1.37,-1.84 -4.07,-2.33 -5.04,-4.76 -1.41,-2.15 -5.08,-4.85 -2.74,-7.55 3.42,-1.12 3.06,-1.7 0.77,-4.08 -1.69,-1.79 -1.55,-4.29 -1.69,-6.46 -2.28,-4.45 -4.68,-9.22 -8.86,-12.09 -1.05,-3.33 -3.02,-6.48 -2.57,-9.99 -0.32,-2.09 0.44,-4.42 2.92,-4.26 2.85,-1.12 6.27,-0.08 8.93,-1.09 1.55,-1.38 2.76,-2.68 2.6,-4.79 1.69,-2.11 5.13,-0.16 7.46,-0.64 2.96,0.35 7.54,-0.38 8.88,2.86 3.56,1.21 6.67,-1.39 9.63,-2.75 1.37,-1.79 3.07,-3.85 5.5,-3.97 -1.07,-2.07 -0.03,-4.66 0.75,-6.72 2.37,0.04 3.51,1.16 4.74,-2.15 -3.03,-0.57 -6.18,-1.13 -7.93,-4.01 -2.99,-1.28 -5.04,3.32 -7.81,2.09 -1.68,-2.2 -4.97,-3.78 -4.59,-6.94 -1.58,-2.26 -4.54,-2.52 -6.84,-3.72 3.01,-0.21 2.65,-3.1 -0.2,-2.77 -6.07,-2.31 -7.72,-9.29 -10.33,-14.6 -2.42,-1.1 -4.9,-1.16 -5.92,1.34 -1.84,1.96 -4.18,1.97 -6.29,0.43 -2.67,-1.78 -3.79,-6.4 -7.79,-5.36 -2.51,-0.77 -4.24,2.4 -6.66,0.76 -4.42,-0.95 -7.78,-4.07 -12.05,-5.47 -1.87,-1.32 -3.8,-1.77 -5.52,0.17 -0.27,2.44 -2.51,2.71 -4.5,2.22 -3.65,-0.29 -5.04,-4.84 -7.84,-6.5 -1.55,0.25 -1.89,4.05 -4.47,4.49 -2.08,0.15 -3.58,-2.52 -5.1,-3.8 -1.02,-1.09 -2.8,3.74 -4.07,0.89 -2.45,-1.59 -2.98,-4.24 -4.53,-6.41 -0.49,-1.9 1.56,-6.03 -2.15,-5.31 -4.45,-0.29 -7.84,-3.81 -11.28,-6.28 -1.97,-2.7 -0.94,-6.7 -3.64,-9.09 -3.37,-1.87 -5.18,-5.18 -6.46,-8.69 -1.64,-4.08 -4.33,-8.01 -8.9,-9 -3.99,-0.41 -8.13,-0.36 -12.15,-0.37 -3.37,0.14 1.11,4.61 0.44,4.78 -2.24,-0.97 -4.59,-0.85 -6.63,0.19 -3.12,0.32 -6.61,0.16 -9.54,-0.98 -2.08,-1.54 -4.86,-2.91 -5.69,-5.53l-0.44,0.03z m-49.34,8.94c-0.03,1.09 0.83,-0.73 0,0z m-9.69,0.88c-1.79,0.64 -2,2.84 -0.28,0.69 1.15,0.39 7.48,0.12 5.09,-0.5 -1.6,-0.1 -3.21,-0.36 -4.81,-0.19z m18.53,1.06c0.45,3.21 0.81,1.46 0,0z m-31.41,1c-2.03,0.59 -1.28,4.28 0.3,1.19 1.64,-1.6 4.48,-0.97 6.64,-1.09 -2.3,-0.17 -4.65,-0.31 -6.94,-0.09z M108.19,134.75c-2.3,1.14 5.75,0.85 0.38,-0.03 -0.12,0.04 -0.27,-0.05 -0.38,0.03z m-12.13,0.84c-3.52,0.44 -2.54,2.25 0.41,1.38 2.85,-0.48 5.82,-0.48 8.59,-1.28 -2.97,-0.23 -6.02,-0.18 -9,-0.09z m-32.28,11.06c-1.1,1.27 2.99,3.13 2.5,3.16 1.33,-1.35 0.17,-2.16 3.86,-2.62 3.23,0.07 0.14,-2.1 -1.3,-2.1 -1.69,0.52 -3.38,1.04 -5.06,1.56z M174.25,186.75c0.36,2.67 4.51,2.84 6.35,4.51 3.41,1.6 7.66,0.4 10.79,2.95 3.11,1.84 7.08,3.66 10.49,1.79 1.4,0.19 3.63,2.7 2.89,3.67 -2.99,0.4 -0.11,3.94 -0.78,6.22 0.86,2.85 -2.01,3.95 -3.7,5.61 -3.46,-0.92 -6.93,-3.62 -10.57,-2.86 -2.23,0.9 -3.13,-2.21 -2.65,-3.92 -0.64,-2.4 -4,-3.06 -3.74,-5.78 -0.67,-2.42 -1.42,-4.7 -4.2,-4.81 -3.28,-1.01 -7.24,-4.77 -5.34,-8.44 0.16,0.35 0.31,0.71 0.47,1.06z\",\"name\":\"Niedersachsen\"},\"mv\":{\"path\":\"m468.38,35.5c-3.45,0.91 -7.31,1.41 -8.93,5.06 -0.26,1.49 -3.68,7.61 -2.06,6.34 1.83,-1.19 3.02,-3.21 2.21,-5.18 0.53,-1.31 3.04,-4.63 4,-2.16 0.98,2.93 -2.17,4.94 -1.91,7.78 2.5,-1.15 4.75,-3.34 7.37,-1.07 2.42,1.29 5.16,2.48 7.7,0.7 1.54,0.46 0.47,5.05 0.71,7.19 0.58,3.31 -4.03,1.68 -5.65,1 -1.59,-1.22 -4.83,-1.69 -5.19,-3.75 1.7,-4.11 -3.26,-1.94 -5.53,-2.31 -2.04,0.6 -6.23,0.55 -4.31,3.72 1.26,1.16 4.35,-0.42 5.38,2.04 2.76,1.44 -0.43,4.39 -2.54,4.37 -2.75,-0.56 -4.74,4.2 -0.71,3.48 2.64,0.57 6.65,0.82 2.18,2.56 -1.86,1.21 -4.55,1.66 -6,3.25 -1.1,2.82 0.47,5.48 1.28,8.13 5.01,1.69 10.02,3.38 15.03,5.06 2.12,-0.23 1.09,-3.14 0.16,-2.97 -0.76,1.88 -3.98,1.99 -3.25,-0.63 2.8,-3.12 5.65,-6.81 9.31,-9 3.6,-0.24 7.24,-1.3 10.81,-1.09 1.21,1.32 2.75,4.02 0.25,4.94 -1.68,2.68 3.83,-2.34 2.14,-4.14 -1.15,-2.6 -3.19,-5.78 -6.42,-4.67 -2.75,-1.52 -4.42,-5.28 -3.91,-8.38 1.26,-2.37 3.94,-3.83 5.78,-5.54 1.61,-2.97 -1.68,-6.36 -4.75,-5.02 -3.75,0.66 -8.71,3.63 -11.63,-0.19 -1.83,-1.92 -3.2,-6.71 0.31,-7.56 2.78,-1.63 0.58,-2.73 -1.84,-1.94z m-11.72,12.09c-0.08,-0.04 -0.09,0.18 0,0z m-4.56,2.28c1.4,-3.26 1.29,-4.92 0.11,-0.61l-0.09,0.49 -0.02,0.12z M457,55.72c-1,0.46 -3.54,5.14 -1.38,3.6 1.48,-0.87 6.21,-2.64 2.44,-3.69 -0.36,-0.17 -0.71,0.02 -1.06,0.09z m-41.09,7c-0.25,1.57 -4.9,6.97 -0.87,4.76 3.72,-1.22 7.4,-2.58 10.67,-4.69 2.93,-0.95 5.29,-0.58 1.12,-0.91 -3,-0.7 -6.71,0.09 -8.98,-2.44 -0.65,1.09 -1.29,2.19 -1.94,3.28z m31.25,-1.97c0.11,0.78 4.7,-2.13 0,0z m-5.81,0.66c-3.54,0.47 -7.66,0.41 -10.88,0.66 0.67,2.11 2.68,1.92 4.62,1.67 3.01,-0.17 6.3,-0.07 8.66,-2.29 -0.79,-0.19 -1.6,-0.03 -2.41,-0.03z m1.56,3.03c-2.88,1.13 -1.21,5.18 -4.19,6.34 -3.6,2.14 -6.72,-2.29 -10.47,-2.06 -3.01,-0.89 -5.76,1.74 -8.35,3.01 -2.71,2.18 -6.52,4.43 -7.27,7.96 0.18,1.51 4.13,0.67 2.84,2.66 -2.29,1.22 -5.24,-0.3 -6.59,-2.13 -0.64,-1.13 1.18,-6.54 -0.53,-3.19 -3.22,4.08 -9.79,4.87 -11.29,10.52 -1.07,2.64 -1.85,5.58 -5.3,3.89 -4.59,-1.7 -8.52,1.77 -12.84,2.72 -3.31,0.47 -6.17,-1.62 -9.5,-0.72 -2.97,1.63 -5.73,4.31 -8.33,6.62 -1.96,2.01 -2.68,5.33 -0.14,1.47 1.06,-1.2 2.41,-4.78 4.19,-3.41 2.37,2.62 -1.24,5.31 -2.34,7.63 -1.89,1.4 -5.07,1.98 -4.85,5.06 -0.11,3.13 -0.5,6.25 -2.62,8.72 -1.16,-0.88 -3.68,-1.23 -3.47,-3.09 -1.92,-1.17 -4.21,-1.95 -5.89,0 -2.35,1.65 -4.97,-1.81 -3.77,-4.13 -1.91,-1.96 -3.3,-5.2 -6.59,-3.87 -5.1,-0.35 -9.02,3.11 -13.04,5.78 1.53,2.15 0.81,6.74 -2.56,5.38 -2.64,1.41 -7.07,3.37 -6.72,7.09 1.31,2.5 2.06,5.12 1.15,7.92 0.24,2.24 3.08,3.96 4.95,5.27 1.49,-0.13 2.88,-0.94 4.38,0.28 1.77,1.48 2.91,4.8 1.54,6.72 -1.07,2.51 -1.74,5.18 -3.94,7.19 -3.45,4.41 -6.57,9.53 -11.63,12.13 -2.85,-1.67 -4.12,1.25 -4.21,3.8 -1.04,3.05 -1.35,4.72 2.28,3.81 4.38,-1.22 5.62,3.97 8.63,5.73 2.06,1.71 4.79,0.13 5.56,-2.03 1.66,-2.26 4.66,-0.28 6.53,0.28 2.66,5.4 4.35,13.11 11.13,14.56 1.97,-0.26 2.54,2.31 1.09,3.34 1.98,0.75 4.2,1.46 5.28,3.41 2.92,0.33 5.86,0.78 7.88,-1.84 2.53,-1.04 4.17,0.11 6.2,0.92 3.41,1.17 3.57,-3.72 2.91,-5.91 -1.19,-2.85 2.75,-4.04 4.19,-5.91 2.26,-0.57 6.06,-0.68 6.92,2.18 2.22,-0.82 7.58,-0.29 4.18,-3.52 1.89,-0.52 5.64,-0.7 8.01,-2.08 1.84,-1.16 5.37,-2.23 4.75,-4.82 0.89,-1.93 2.17,-4.64 4.7,-3.27 2.88,0.17 5.85,-1.68 8.79,-1.42 2.69,2.85 6.38,3.54 9.59,5.47 2.1,1.42 2.54,5.89 5.86,4.62 1.42,-1.54 4.52,-1.23 6.97,-0.84 2.64,0.11 5.42,0.12 6.99,2.65 1.76,1.23 2.9,3.74 4.81,4.36 3.51,-2.08 7.9,-1.79 11.85,-1.57 1.87,0.92 -0.02,2.26 -1.2,2.88 2.73,2.02 3.96,-3.02 6.01,-4.14 1.85,-2.5 5.05,-5.4 8.21,-4.51 0.4,1.63 2.6,4.73 2.69,1.53 -0.18,-4.03 4.85,-6.14 8.16,-4.72 0.92,1.02 1.13,4.66 2.78,2.25 1.94,-2.52 5.64,-4.66 5.83,-7.92 -0.98,-3.87 1.53,-7.87 4.55,-10.15 2.94,-2.19 5.03,-6.55 9.2,-6.14 3.13,-1.46 0.88,-2.47 0.94,-4.94 -0.47,-2.01 1.66,-5.18 3.04,-2.12 2.09,2.5 4.8,4.66 5.08,8.15 0.55,3.39 3.31,3.78 6.08,2.65 2.41,-0.3 6.44,1.78 7.55,-1.21 2.62,0.79 6.91,-0.99 8.25,2.06 1.49,6.11 -3.45,10.78 -7.19,14.78 -1.98,3.1 3.33,1.46 5.03,1.98 3.6,0.68 6.06,-2.53 6.41,-5.79 1,-1.79 6.72,-1.16 5.01,-3.95 -1.75,-4.35 -2.83,-9 -3.99,-13.46 -2.18,-2.83 -4,-6.6 -2.87,-10.22 -0.22,-5.43 -3.03,-10.29 -3.44,-15.72 -0.42,-2.28 -2.57,-2.04 -3.28,-0.22 -1.81,2.36 -5.39,1.17 -7.84,0.59 -3.37,-1.38 -7.23,-1.87 -9.74,-4.72 -2.44,-2.52 -7.36,-2.95 -8.1,-6.78 1.68,-2.2 3.24,-5.36 5.94,-6.13 0.44,-2.04 -2.63,-3.55 -3.67,-5.18 -2.27,-2.24 -3.02,-5.61 -4.55,-8.32 0.21,-2.8 0.27,-5.88 -2.37,-7.5 -1.78,-3.54 -4.86,-2.15 -7.78,-0.99 -2.53,1.08 -5.51,1.39 -7.79,2.9 0.14,1.21 2.98,3.43 0.56,3.84 -3.2,0.18 -3.78,-3.49 -4.59,-5.69 -0.99,-1.26 -3.18,1.08 -3.03,-1.66 3.36,-2.44 -2.45,-0.94 -3.09,-2.5 -1.56,-2.33 -1.97,-5.95 -5.39,-6.49 -2.15,-2.65 -4.68,-0.2 -6.44,-0.76 -2.83,-2.27 -3.42,-6.13 -4.17,-9.38 1.49,-2.52 -2.16,-5.5 -3.62,-7.17 -1.75,-0.48 -3.25,0.75 -4.88,1.21z m52.69,22.19c-3.16,0.36 -1.48,4.22 0.37,5.25 1.73,2.04 0.07,5.76 2.48,7.75 1.23,2.84 2.71,4.73 5.49,2.07 1.56,-1.43 -2.24,-3.39 -0.78,-5.26 2.84,0.22 4.58,0.55 1.09,-0.38 -3.78,-1.63 -6.46,-4.91 -7.63,-8.84 -0.21,-0.29 -0.58,-0.78 -1.03,-0.59z M508.81,98.25c2.29,2.13 4.59,4.76 3.68,8.19 1.29,3.82 -2.55,2.56 -4.59,1.72 -1.01,-1.74 -1.1,-5.02 -3.97,-3.22 -1.8,2.49 2.15,3.83 2.07,6.36 1.37,2.89 -1.67,5.12 -4.12,5.88 -2.51,0.31 -1.55,2.32 0.67,2.35 4.16,0.13 7.86,-2 11.53,-3.58 2.18,-0.69 5.82,0.22 7.3,-1.22 1.43,-3.32 1.05,-6.01 -2.4,-7.65 -4.01,-3.08 -7.07,-7.49 -11.49,-9.99 0.44,0.39 0.88,0.77 1.31,1.16z m-153.22,8.91c-2.07,0.65 -6.19,2.56 -3.84,5.09 3.14,1.72 4.9,-0.57 5.38,-3.56 0.63,-1.6 0.03,-1.86 -1.53,-1.53z\",\"name\":\"Mecklenburg-Vorpommern\"},\"he\":{\"path\":\"m231.91,351.28c-2.52,4.22 -6.22,7.61 -8.38,12.09 -3.47,2.99 -7.81,5.31 -10.28,9.09 -2.28,0.4 -5.74,0.13 -5.5,-3 2,-3.26 -3.47,-5.21 -5.91,-3.76 -1.41,0.82 -5.95,0.93 -4.65,3.28 0.64,2.39 3.13,3.23 3.37,5.4 0.17,2.42 -1.34,4.44 -3.94,3.29 -5.15,-0.39 -10.41,1.05 -14.95,3.35 -3.17,1.4 -4.72,4.59 -6.61,7.28 0.84,1.05 2.01,4.06 3.59,2.09 2.37,-0.9 6.57,-4.19 7.88,-0.28 0.22,4.19 2.13,8.77 -0.72,12.51 -0.71,2.75 -2.31,4.62 -5.22,4.99 -3.14,-0.43 -7.52,-2.41 -9.63,1.09 0.39,2.15 1.85,4.24 2.13,6.19 -1,1.73 -3.4,2.91 -4,4.63 3.11,2.85 -2.97,-1.27 -1.76,3.31 -1.97,2.72 -3.4,6.11 -5.96,8.25 -2.51,0.68 -5.22,-4.25 -7.23,-1.05 -2.7,2.64 -5.41,5.28 -8.11,7.92 0.49,2.48 3.93,4.74 1.63,7.26 -0.76,2.71 -4.3,4.36 -2.78,7.49 -0.8,2.92 2.77,3.49 2.12,5.75 -1.13,1.85 -1.06,5.6 -3.44,5.9 -1.97,0.22 -2.63,-1.53 -4.06,-2.13 -2.8,1.41 -5.48,6.02 -2.56,8.66 -0.49,2.46 -3.67,5.82 0.27,6.82 3.67,1.53 5.25,5.3 6.61,8.75 0.92,2.04 1.08,4.85 -1.7,5.37 -1.07,-0.93 -5.7,-1.33 -3.5,1.11 2.47,0.99 0.89,3.49 -1,3.99 -2.32,-1.08 -4.25,-1.29 -6.55,0.33 -2.11,0.73 -3.8,3.88 -1.08,4.86 2.02,1.08 1.39,4.09 0.28,5.59 -2.84,-2.01 -4.64,0.94 -6.72,2.5 -3.14,0.7 -2.62,2.78 -0.67,4.69 1.7,1.7 2.49,4.75 4.7,5.72 7.32,0.54 13.26,-4.85 20.19,-5.97 3.41,-0.25 5.55,2.38 7.21,4.9 2.7,2.09 3.72,5.69 3.75,8.95 -2.21,2.91 0.93,6.19 1.75,9.06 1.22,3.02 5.3,4.54 4.69,8.16 -0.83,2.19 -2.69,3.5 -5.03,3.69 -3.67,1.29 -0.58,5.33 -0.19,7.78 1.19,1.23 1.73,4.58 3.56,3.47 2.87,-0.09 4.72,3.15 6.02,5.29 0.45,2.46 3.64,2.83 4.61,0.44 0.84,-1.91 -0.18,-4.52 -1.35,-5.64 -0.49,-3.07 3.89,-2.29 5.74,-3.3 2.12,-0.86 2.95,1.54 1.33,2.77 -0.13,1.19 0.36,6.2 2.44,7.44 3.73,1.71 7.96,2.48 12.06,2.41 0.3,2.37 -0.95,4.21 -3.22,5.14 -2.12,0.41 -4.13,4.05 -2.97,5.83 3.16,0.98 4.62,-3.02 6.97,-4.37 2.62,-1.23 -1.27,-2.95 1.23,-4.7 1.83,-3.04 5.68,-3.23 8.67,-4.31 2.07,1.28 4.67,2.3 1.65,-0.28 -2.77,-0.69 1.28,-2 0.17,-4.09 -1.83,-2.61 0.09,-5.95 0,-8.84 0.67,-3.72 4.45,-6.62 2.87,-10.6 0.27,-3.23 -3.17,-2.82 -4.5,-5.35 -1.88,-1.31 -2.94,-3.09 -2.59,-5.43 1.25,-0.49 -0.57,-3.68 -0.1,-5.19 -0.37,-2.39 0.26,-5.26 -1.15,-7.31 2.19,-0.29 2.3,-4.03 0.75,-4.91 -3.55,0.11 -2.06,-3.18 -1.51,-5.43 1.26,-3.72 6.02,-2.87 8.99,-4.29 3.44,-0.94 6.85,-2.48 10.38,-0.98 2.53,1.03 6.93,-0.17 7.36,3.51 0.22,3.77 3.72,2.22 6.1,1.81 3.18,-0.12 0.4,-3.63 0.68,-5.44 -0.84,-3.13 -0.37,-6.51 1.38,-9.24 2.02,0.57 4.63,1.89 6.47,0.94 0.86,-2.28 1.78,-5.61 4.88,-5.28 3,-1.1 4.77,-5.15 2.22,-7.63 2.46,-1.43 0.46,-5.9 4.2,-5.65 2.35,-1.65 4.24,2.19 6.72,0.64 3.67,-2.12 7.61,-4.88 9.17,-8.99 0.87,-4.15 -0.43,-8.59 0.34,-12.69 1.59,-1.67 2.87,-3.11 0.88,-5.25 -1.95,-0.3 -4.67,-0.51 -5.91,1.03 2.68,1.72 0.06,4.83 -2.4,3.41 -3.4,0.47 -3.73,-2.19 -3.1,-4.85 1.64,-2.54 4.97,-5.54 3.53,-8.77 -2.61,-1.88 3.02,-1.21 0.62,-3.76 -0.39,-2.4 1.7,-5.24 4.25,-4.19 2.32,-0.16 2.52,-3.78 3.13,-5.59 -0.42,-3.72 -1.44,-7.39 -2.41,-10.94 0.58,-3.37 4.7,-2.07 6.91,-1.42 1.33,1.43 3.54,1.27 4.93,0.14 1.65,-2.01 -0.8,-4 -2.88,-4.28 -0.73,-2.4 -0.28,-5.7 -2.15,-8.05 -1.81,-2.17 3.2,-3.84 4.13,-1.92 0.85,2.09 2.04,3.15 0.8,0.19 -0.79,-1.77 1.55,-2.57 1.81,-3.75 -2.16,-0.34 -3.1,-3.03 -5.47,-3.13 -2.41,-1.32 -5.66,-1.92 -5.69,-5.28 -2.73,-1.26 -6.43,-1.62 -7.14,-5.14 -0.93,-2.28 -2.35,-5.29 -0.96,-7.39 -0.41,-3.77 -4.2,-2.41 -6.91,-2.04 -2.44,0.91 -4.65,3.07 -6.27,5.16 0.26,3.75 3.81,-0.17 4,2.53 0.6,2.43 -1.31,3.7 -3.35,4.44 -2.57,-2.31 -6.46,-3.25 -9.7,-4.62 -2.11,-0.64 -2.73,-3.33 -1.64,-5.16 0.52,-2.33 2.7,-3.11 4.88,-2.75 1.13,-2.01 -0.13,-5.09 -0.97,-7.03 -0.84,-1.85 -3.71,-4.21 -0.9,-5.87 1.12,-2.04 3.33,-1.71 4.5,-3.66 2.57,-0.35 -1.93,-2.01 -2.09,-3.38 -2.42,-2.04 -5.4,-1.51 -8.28,-1.84 -2.56,-0.15 0.13,-3.78 -1.82,-2.9 -0.65,0.13 -1.3,0.26 -1.96,0.4z m48.47,53.75c-0.2,0.03 0.16,0.35 0,0z\",\"name\":\"Hessen\"},\"hh\":{\"path\":\"m273.31,139.16c-1.5,1.09 -0.93,4.3 -3.67,5.06 -1.61,1.47 -3.71,3.26 -5.89,1.85 -2.33,-0.78 -1.81,2.21 -3.43,3.24 -1.3,1.52 -3.26,5.5 -5.37,2.78 -1.64,-2.73 -2.78,-2.89 -3.11,0.48 -1.95,3.52 3.88,1.56 2.16,5.63 -0.89,2.25 0.93,3.48 1.47,5.56 1.11,1.96 3.5,5.01 5.03,1.63 1.82,-0.66 3.1,2.78 4.87,3.63 1.74,1.19 3.59,-1.92 4.1,-3.57 1.25,-2.32 3.61,0.86 4.66,2.15 1.9,2.2 3.93,4.76 7.21,3.97 1.13,-0.62 1.01,-2.97 2.91,-3.07 2.93,-1.45 -2.65,-3.59 -2.97,-5.78 -1.42,-2.02 -5.31,-2.65 -5.35,-5.94 -0.83,-2.64 0.75,-4.88 3,-6.12 2.02,-2.17 0.93,-4.31 -0.94,-5.97 0.01,-2.33 -0.49,-4.73 0.53,-6.88 -1.59,-1.66 -3.52,1.07 -5.22,1.34z\",\"name\":\"Hamburg\"},\"hb\":{\"path\":\"m177.13,149.91c-1.02,1.81 2,3.93 2.44,6 0.78,1.49 -1.36,2.66 0.47,3.7 0.36,2.05 1.77,2.73 3.27,0.5 2.31,-1.97 -1.15,-5.18 0.62,-7.7 1.79,-3.68 -3.69,-1.91 -5.73,-2.54 -0.36,-0.05 -0.71,0.02 -1.07,0.05z m-2.34,39.47c1.3,3.24 5.12,3.63 7.78,4.94 1.52,2.61 1.31,5.93 3.86,7.69 2.1,1.22 1.38,3.71 2.04,5.46 1.64,0.31 3.99,-0.68 5.77,0.73 2.5,0.16 5.45,3.63 7.38,0.87 2.63,-1.56 0.74,-5.04 0.98,-7.51 -2.78,-1.97 1.76,-2.01 0.87,-3.11 -1.26,-2.73 -3.93,0.26 -6.25,-0.86 -4.35,-0.36 -7.69,-4.63 -12.29,-4.36 -3.91,0.3 -6.92,-2.67 -10.15,-3.86z\",\"name\":\"Bremen\"},\"bb\":{\"path\":\"m499.25,149.81c-0.84,1.88 -0.81,4.34 1.28,5.34 -1.74,2.06 -3.79,3.29 -6.37,3.46 -3.18,2.74 -6.61,5.55 -9.05,8.91 -1.36,2.25 -1.54,4.68 -0.87,7.16 -2.28,3.16 -4.83,6.45 -8.06,8.63 -2.41,-0.12 -1.19,-4.5 -3.97,-3.53 -3,-0.61 -5.44,2.28 -5,5.15 -0.4,2.7 -4.01,1.19 -3.97,-1.02 -0.57,-1.97 -3.52,0.03 -4.56,0.75 -2.74,2.49 -4.73,6.13 -7.88,8 -1.99,-0.23 -3.86,-2.04 -1.25,-3.16 1.45,-1.47 -4.76,-0.14 -6.18,-0.46 -2.13,-0.19 -5.04,3.22 -6.6,0.49 -2.73,-2.51 -5.01,-6.52 -9.27,-5.91 -2.13,0.04 -5.13,-1.3 -6.45,0.69 -2.87,1.21 -4.79,-0.3 -6.25,-2.72 -1.52,-3.98 -6.92,-3.25 -9.48,-6.32 -1.8,-2.15 -4.65,0.11 -6.93,0.1 -2.38,1.26 -5.39,-1.14 -6.32,2.55 0.99,3.09 -2.96,4.01 -4.77,5.61 -2.15,1.15 -6.11,1.77 -7.27,2.46 2,2.09 -1.36,2.73 -2.94,2.85 -3.43,2.16 -3.88,-1.29 -6.73,-1.81 -3.03,-0.86 -4.57,2.1 -6.63,3.69 0.64,2.72 1.23,7.08 -1.72,8.53 -1.68,-0.03 -3.77,-0.05 -4.75,-1.47 -3.21,-0.91 -4.58,3.15 -7.53,2.47 -2.88,-1 -5.03,0.48 -2.09,2.67 1.36,1.69 3.08,4 5.08,1.55 1.94,-1.5 5.34,-2.28 6.7,0.42 1.5,2.04 4.32,1.65 6.53,2.39 1.23,-1.43 4.73,-0.25 2.95,1.62 -1.67,1.72 2.21,2.59 2.91,3.81 1.43,1.12 2.93,-2.01 4.58,-0.33 1.76,1.64 5.48,1.89 6.03,4.47 0.12,1.23 -2.72,2.23 -0.94,3.16 4.27,1.68 8.68,4.08 13.38,2.66 2.5,1.2 6.82,-4.08 4.61,0.18 -0.35,3.68 2.96,0.6 4.61,0.47 3.29,0.55 2.92,4.31 3.72,6.78 0.37,2.84 -3.59,3.22 -2.84,6.46 -1.66,3.81 3.69,5.99 2.3,9.81 0.77,2.86 -2.32,3.27 -3.45,4.66 -0.54,2.65 -2.13,5.71 -1.65,8.26 0.83,2.24 4.39,3.7 4.36,0.28 2.12,1.42 6.84,0.74 6.61,4.02 1.02,3.09 -2.67,5.39 -1.23,8.53 0.24,2.83 1.88,6.06 -0.69,8.26 -2.05,3.4 -2.35,7.41 -1.88,11.28 -2.17,2.79 -1.48,5.22 1.03,7.44 3.11,5.22 7.1,10.36 13.17,12.16 3.29,1.01 7.58,3.94 10.7,1.22 -0.29,-3.23 3.4,-2.12 4.94,-0.75 2.81,1.03 3.99,2.78 6.11,4.39 2.08,1.33 4.66,2.82 7.04,1.98 3.14,1.39 6,3.2 8.16,5.88 3.11,1.39 3.63,-2.03 5.78,-1.38 1.85,0.64 2.36,3.88 -0.16,3.41 1.53,4.44 1.98,9.42 4.53,13.28 -0.28,4.36 -5.19,5.81 -8.13,8.16 1.38,4.17 2.89,2.17 5.54,3.45 2.71,1.73 3.05,5.69 4.55,8.42 0.92,3.28 0.16,6.97 -0.56,10.28 1.12,1.84 2.33,3.34 4.61,2.31 0.97,-1.14 2.38,-3.45 4.49,-4.31 2.22,-1.43 4.58,-3.03 6.29,-0.12 4.07,3.53 9.06,7.27 14.8,6.16 2.09,-1.58 2.79,0.71 5.58,0.52 2.7,-0.23 5.1,-3 8.17,-1.96 3.29,-1.1 7.81,-0.26 9.47,-3.95 2.24,-4.34 2.1,-9.97 5.65,-13.77 1.52,-0.92 3.97,-0 5.84,-0.31 2.67,-0.5 5.34,2.24 7.62,0.72 1.65,-1.85 4.86,-1.52 6.32,-2.54 1.7,-2.16 5.35,-2.05 7.75,-3.38 2.31,-0.33 2.58,2.04 4.09,2.56 2.19,0.22 4.28,-0.47 4.14,-3.06 1.18,-2.26 3.58,-0.39 3.55,-4.22 -0.1,-2.81 -0.47,-5.99 -3.36,-7.26 -3.75,-2.16 -4.56,-6.65 -6.42,-10.21 -2.9,-0.63 -3.35,-5.09 -0.55,-6.35 3.76,-2.93 5.89,-7.61 5.36,-12.4 -0.5,-2.47 -0,-3.76 1.5,-6 1.18,-2.51 -0.13,-5.99 -3.13,-5.94 -2.3,-1.74 -2.72,-5.61 -0.53,-7.63 -0.28,-2.81 1.52,-6.55 -1.09,-8.56 -2.6,-1.24 -6.3,-0.29 -7.81,-3.19 -1.11,-3.05 -1.39,-6.47 -2.42,-9.42 -1.68,-2.31 -0.63,-6.4 2.17,-7.48 1.98,-2.33 3.3,-5.1 2.57,-8.22 0.38,-2.83 -0.31,-5.28 -2.51,-7.19 -3.54,-2.79 -8.55,-3.73 -11.34,-7.59 -2.56,-5.3 -8.11,-8.18 -12.88,-11.28 -2.02,-1.42 -4.87,-0.97 -6.69,-2.38 -2.03,-2.63 3.01,-4.81 1.15,-7.48 -0.64,-2.66 -2.69,-6.39 0.67,-8.11 3.25,-1.9 6.37,-3.89 8.77,-6.91 3.06,-2.56 2.89,-6.96 3.39,-10.59 -1.83,-1.72 -1.71,-4.98 -0.47,-6.84 1.2,-1.67 4.41,-4.79 3.03,-6.69 -2.15,0.19 -2.35,-3.69 -2.22,-5.41 -2.44,1.01 -5.3,1.53 -5.5,4.63 -1.15,2.4 -3.02,3.91 -5.78,3.72 -2.22,-0.47 -6.15,0.62 -7.41,-0.9 0.47,-4.6 5.82,-6.58 7.23,-10.78 0.81,-2.01 1.54,-5.13 -0.2,-6.73 -3.16,-0.57 -5.69,-0.28 -7.87,1.03 -3.28,0.28 -6.64,-0.73 -9.75,0.5 -4.23,-1.06 -2.75,-6.98 -5.95,-9.24 -1.05,-1.15 -2.07,-2.54 -3.15,-3.54z M484.13,240.25c2.62,1.78 3.22,5.59 5.07,8.15 1.73,3.05 5.13,4.94 5.9,8.6 -0.13,3.15 2.96,3.88 5.31,4.97 3.02,1.16 1.5,3.96 0.62,6.15 -2.11,1.18 -0.3,2.41 -1.81,3.94 -3.37,1.44 -6.8,-1.31 -10.22,-1.72 -2.61,0.29 -4.02,-2.66 -5.44,-2.59 -3.39,0.13 0.93,5.86 -3.25,4.2 -2.15,-1.56 -3.93,-2.85 -6.03,-2.56 -2.2,-2.21 -6.14,-1.55 -8.26,0.46 3.07,1.05 -3.31,1.77 -4.27,0.08 -2.48,-1.03 -0.87,-2.57 0.43,-3.73 -0.55,-1.26 -1.2,-3.36 0.31,-4.63 3.03,-2.14 1.73,-3.7 -0.71,-3.56 0.04,-2.5 -0.02,-5.34 0.62,-7.66 1.31,-1.47 2.88,-1.58 4.41,-0.5 1.08,0.35 -1.33,-2.46 0.8,-3.32 1.36,-1.61 4.71,-0.61 6.85,-0.8 2.24,1.02 3.85,-0.76 4.63,-2.66 1.77,2.37 2.44,0.08 3.29,-1.66 0.36,-0.52 1.13,-1.47 1.74,-1.16z\",\"name\":\"Brandenburg\"},\"be\":{\"path\":\"m483.38,241.69c-1,1.58 -1.61,5.27 -4.03,2.88 -0.91,2.64 -3.81,2.59 -6.06,2.05 -1.91,-0.31 -7.28,0.09 -4.84,2.79 1.38,2.14 -2.25,1.68 -3.34,0.78 -3.18,-0.15 -1.8,4.36 -2.36,6.45 -0.09,0.87 5.17,1.04 2.51,3.18 -1.16,1.75 -4.04,3.69 -1.89,5.83 0.53,1.82 -3.82,2.76 -0.54,3.7 2.29,1.61 3.52,-2 6.07,-2.2 2.07,-0.34 5.08,-0.28 6.25,1.69 2.29,-3.28 5.18,4.71 6.09,1.16 -1.15,-2.62 1.9,-3.14 3.66,-3.85 0.63,3.56 5.17,2.88 7.8,4.18 1.96,0.26 4.94,2.32 6.26,0.28 -2.5,-1.19 2.5,-2.95 2,-5.26 1.05,-2.66 -3.24,-2.9 -4.77,-4.37 -2.69,-0.38 -1.4,-4.38 -3.15,-6.05 -1.61,-3.03 -4.93,-4.88 -5.94,-8.38 -1.14,-0.99 -1.96,-6.07 -3.71,-4.88z\",\"name\":\"Berlin\"},\"by\":{\"path\":\"m273.66,464.44c-1.31,1.91 -3.76,2.78 -3.5,5.34 -1.83,4.59 -6.12,7.95 -10.5,9.94 -2.67,1.02 -4.62,-2.49 -7.15,-0.61 -1.54,0.74 -0.64,3.49 -2.13,4.58 2.4,3.04 -0.04,7.53 -3.44,8.47 -3.38,-0.45 -3.01,4.07 -4.66,5.5 -2.16,0.47 -4.23,-0.33 -6.28,-0.91 -2.54,3.91 -0.46,8.53 0,12.63 -0.53,2.87 -4.66,1.74 -6.9,2.55 -3.16,0.27 -1.64,-5.68 -4.98,-5.22 -4.19,-0.72 -8.41,-2.46 -12.49,-0.42 -2.97,1.16 -6.84,1.23 -9.32,2.99 -0.59,1.48 -2.41,4.44 -0.69,5.28 3.02,-0.37 2.55,4.03 2.28,5.63 -2.37,0.86 0.17,4.18 -0.45,6.12 0.28,2.66 -0.27,5.78 1.89,7.78 -3.88,-0.85 0.14,3.73 1.52,4.58 0.84,1.94 3.96,0.92 3.59,3.64 1.27,2.88 0.6,5.62 -0.78,8.31 -2.26,2.93 -2.47,7.6 -2.42,11.23 1.24,2.27 4.6,0.89 6.75,1.12 2.16,0.04 4.75,-2.13 4.73,-4.03 -0.34,-2.04 2.18,-5.23 4.72,-3.63 1.87,0.74 5.34,1.32 4.23,-1.45 1.6,-1.24 -0.63,-7.5 -0.96,-4.79 0.79,2.49 -3.31,2.3 -3.52,0.13 -0.83,-1.56 -3.4,-4.82 -1.19,-6.09 3.07,-0.15 6.37,-1.05 9.34,-0.19 0.41,-2.46 4.94,-2.22 3.88,0.41 0.59,1.49 3.45,3.68 4.43,1.04 1.16,-1.1 4.96,-5.66 4.94,-1.88 -0.59,2.44 0.18,5.72 -1.59,7.45 0.33,2.92 3.79,0.57 5.16,-0.39 2.48,-0.32 5.61,-3.48 7.29,-0.3 2.99,3.39 2.07,8.94 5.01,12.52 2.18,0.31 2.43,3.58 2.41,5.6 0.45,1.81 -0.72,3.89 -0.34,5.16 2.77,0.82 6.24,0.65 7.69,-2.25 -0.15,-1.12 -1.91,-2.61 0.74,-3.68 2.83,-1.31 3.76,2.79 4.2,4.84 -1.95,1.56 1.87,3.4 1.31,5.57 0.26,2.1 4.02,5.65 0.6,6.68 -2.91,-0.9 -2.81,3.3 -1.87,5.04 0.96,2.51 3.11,4.68 1.16,7.27 0.44,2.52 -1.72,6.37 1.65,7.44 1.89,1.55 4.82,1.6 5.41,4.43 1.71,2.58 1.5,5.88 2.31,8.79 -2.03,1.94 3.23,2.14 4.31,3.59 2.13,2.06 5.86,2.95 6.29,6.28 3.84,2.87 1.91,8.3 2.08,12.46 0.25,2.64 -0.94,5.5 -2.07,7.44 -0.04,3.1 4.34,2.42 3.61,6.41 2.49,1.05 0.06,3.97 -1.86,4.33 -1.61,1.16 -4.23,0.12 -2.18,-1.56 2.29,-3.25 -3.46,-0.68 -4.81,-0.69 -2.23,0.84 -5.79,-3.18 -5.97,0.9 -0.14,3 3.91,4.63 3.42,7.93 0.53,2.67 0.99,5.81 0.27,8.32 -1.49,1.89 -3.93,-0.58 -5.06,1.19 0.32,2.29 -3.52,3.66 -4.94,5.41 -3.13,1.93 -4.28,-3.47 -7.13,-0.01 -2.35,0.12 -0.74,3.36 -2.58,4.82 -1.74,2.44 -2.43,5.75 -0.16,8.06 1.31,2.7 4.08,4.51 3.75,7.78 0.56,4.38 1.13,8.84 2.71,12.9 2.91,1.82 1.6,5.52 2,8.41 0.45,2.66 -1.86,4.17 -1.66,6.72 0.19,1.55 -3.47,0.81 -1.84,3.13 2.61,1.07 0.38,3.66 0.87,5.81 0.2,2.47 -0.14,5.78 2.07,7.38 0.5,2.56 -3.74,2.92 -1.81,6.18 1.02,3.01 3.86,6.55 1.16,9.46 -1.18,1.16 -3.19,0.63 -3.38,2.95 -1.52,3.81 -0.35,-4.27 -2.92,-3.81 -1.88,-0.93 -3.51,0.34 -4.08,2.09 -3.48,0.28 -7.46,-0.44 -10.66,0.7 -2.62,1.93 -4.17,6.22 -7.96,5.49 -1.72,0.26 -2.84,-2.34 -4.53,-0.51 -3.88,1.61 -1.7,3.37 1.37,4.04 3.22,2.32 4.79,-0.35 6.38,-2.97 2.19,-2.61 6.67,0.35 5.03,3.47 -1.46,1.59 3.12,2.56 4.5,2.46 2.2,0.75 5.22,-2.54 5.71,-2.37 -1.26,2.65 0.2,5.16 1.79,7.23 3.74,-0.93 5.96,3.27 7.63,5.97 -1.64,1.92 -2.48,3.42 -1,5.94 0.03,1.72 5.17,0.51 4.35,-1.56 0.81,-1.86 3.6,-1.1 5.09,-0.53 2.05,2.24 -1.68,3.98 -1.81,6.26 -0.21,1.48 -3.48,5.59 -1.04,5.45 5.9,-0.28 10.64,-4.27 13.65,-9.1 1.68,-2.49 4.2,-4.8 5.23,-7.51 -0.27,-1.73 0.37,-4.61 -1.96,-4.47 -1.78,-2.98 -0.76,-6.77 -1.03,-10.06 0.59,-1.59 4.6,-2.06 3.97,0.09 -1.67,2.23 -0.39,3.45 2.34,3.77 2.31,0.63 4.34,0.47 4.81,-2.09 1.65,-2.51 5.13,-0.08 7.59,-0.22 0.5,2.03 3.14,2.52 5.19,3.38 2.99,1.48 5.86,-2.19 8.72,-1.09 3.48,2.5 -1.05,3.09 -0.97,5.59 2.55,0.29 4.83,1.11 6.25,3.38 2.96,1.58 0.77,3.77 1.16,5.09 4.01,0.78 8.16,-0.05 11.5,-2.41 2.24,-1.08 5.28,-2.46 7.66,-1.16 -0.63,2.06 -2.84,4.65 1.39,2.92 0.99,-2.2 2.51,-4.2 4.63,-5.64 2.78,-1.69 3.97,-4.98 6.66,-6.66 2.2,2.25 6,0.82 8.75,0.25 1.72,-1.5 -0.11,-4.24 1.75,-6 1.27,-3.31 5.21,-1.69 7.87,-2.01 3.14,-0.06 6.26,-0.02 9.34,0.6 1.3,-3.59 5.97,-3.64 9.18,-3.87 2.61,1.43 5.36,-1.54 7.57,0.5 2.56,0.03 5.94,1.12 8.03,-0.19 -0.56,-3.08 -2.75,-5.66 -1.81,-8.97 1.68,-1.6 3.23,-4.06 5.5,-4.97 2.05,1.73 -0.97,3.82 0.9,5.81 0.74,1.55 6.18,-3.23 5.07,-0.41 2.78,1.55 7.13,-0.47 8.4,3.24 1.5,2.9 4.05,3.71 6.55,1.34 2.39,-0.55 1.97,-4.34 4.92,-3.93 3.45,-1.43 7.22,-0.35 10.38,1.04 0.63,2.57 4.26,5.4 1.53,7.59 -1.91,3.64 3.48,5.29 5.61,7.15 2.86,2.07 5.93,3.86 9.26,5.04 1.6,-1.29 3.65,-3.83 2,-5.66 -1.98,-1.39 0.16,-4.42 -0.13,-6.41 0.81,-2.05 3.05,-3.55 3.5,-5.53 -1.37,-2.88 -2.02,-7.29 -5.72,-7.94 -0.69,2.59 -4.42,1.51 -6.31,1.34 -1.86,-0.73 -2.16,-2.62 -0.73,-4.04 1.53,-3.69 4.03,-7.15 5.39,-10.77 -2.14,-3.41 -3.7,-7.7 -6.59,-10.34 -2.88,0.4 -3.64,-2.11 -3.9,-4.41 -1.24,-4.49 -8.32,-5.42 -8.04,-10.73 0.04,-2.8 4.04,-3.87 5.63,-5.89 1.81,-1.22 1.17,-3.89 2.78,-4.97 2.57,-0.91 6.07,0.24 7.47,-2.89 1.29,-1.84 2.29,-3.74 4.7,-4.4 2.08,-2 5.15,-0.22 7.17,-2.39 2.7,-1.73 6.58,0.63 8.88,-2.3 3.06,-1.95 5.85,-4.79 7.85,-7.65 0.43,-2.52 2.26,-5.13 0.38,-7.38 0.45,-3.1 3.3,-6.59 0.44,-9.38 -0.61,-1.41 4.07,-1.2 4.41,-3.5 -0.1,-4.04 4.08,-0.04 6.17,0.11 3.24,1.6 5.97,4.3 9.52,5.26 3.15,-4.15 7.21,-9.07 5.25,-14.64 0.5,-2.8 -3.41,-5.03 -1.06,-7.39 1.18,-2.53 1.51,-5.28 -0.56,-7.48 -1.75,-2.45 -3.35,-5.1 -5.19,-7.42 -2,1.56 -5.42,0.69 -5.99,-1.97 -0.86,-2.58 -2.84,-4.62 -4.76,-6.5 -2.32,-0.51 -5.25,-0.27 -4.06,2.66 -1.49,2 -4.02,-1.61 -5.78,-2.26 -3.51,-1.84 -1.34,-7.26 -4.67,-9.54 -1.77,-2.1 -3.92,-4.14 -6.4,-5.23 -2.11,1.09 -4.33,0.73 -6.1,-0.79 -2.35,-0.65 -1.29,-3.34 -2.28,-4.52 -5.62,-4.34 -8.22,-11.7 -13.85,-16.05 -0.96,-0.66 -5.12,-1.7 -4.56,-0.67 1,2.66 -3.26,0.86 -4.59,0.92 -2.67,0.16 -4.59,-1.69 -5.1,-4.2 0.33,-2.99 -3.95,-3.91 -5.58,-5.98 -1.3,-1.16 -4.06,-3.42 -2.45,-4.96 0.01,-2.41 0.31,-4 -2.29,-4.05 -2.07,-0.53 -1.46,-1.98 -2.8,-3.5 -2.08,-3.55 -3.13,-7.39 -3.48,-11.47 -1,-2.47 -5.61,-0.9 -6.56,-3.96 -1.46,-1.68 -3.4,-4.99 -0.08,-5.91 3.24,-0.92 2.39,-4.05 3.21,-6.53 0.88,-3.28 4.17,-5.56 3.4,-9.15 -1.69,-2.78 -3.02,-7.24 -7.16,-6.34 -2.89,-1.46 -5.43,-3.31 -7.5,-5.81 -4.37,0.47 -3.42,-1.95 -5.22,-4.41 -1.08,-0.95 -3.08,-0.2 -3.19,-2.3 -0.69,-1.94 -0.29,-3.97 0.91,-5.48 -1.13,-3.44 -4.24,-5.4 -7.25,-6.96 -2.59,-1.3 0.21,-3.74 1.9,-4.17 -1.15,-4.86 -6.38,-5.68 -10.5,-6.63 -1.66,-1.44 1.51,-4.7 -1.45,-5.85 -1.47,-2.96 -3.98,-0.6 -6.15,-0.03 -4.99,1.83 -10.54,1.94 -15.74,2.63 -0.77,-0.67 -2.77,-2.61 -3.03,-0.5 -0.96,2.08 -4.29,1.95 -5.15,-0.33 -1.46,-1.7 -1.05,-3.98 -3.62,-3.71 -2.87,-0.72 -2.28,-4.47 -1.51,-6.47 2.3,-1.83 -2.65,-2.89 -4.3,-2.43 -1.7,1.3 -2.92,3.72 -5.37,4.41 -1.61,-1.19 -1.85,2.9 -0.04,2.88 0.66,3.05 1.58,6.38 1.39,9.48 -1.36,2.21 -0.38,7.05 -3.72,7.01 -1.95,0.12 -2.86,4.45 -5,1.12 -2.19,-1.15 -2.98,-4.4 -0.24,-5.3 -0.32,-1.92 -3.58,-5.33 -4.44,-2.09 -2.92,1.68 -7.59,1.16 -8.96,-2.28 -0.97,-2.98 -4.83,-0.87 -7.1,-1.48 -2.57,0.83 -5.91,1.76 -7.83,3.43 -0.82,2.98 1.43,4.47 3.69,5.77 1.52,2.24 6.27,1.22 5.55,4.87 -1.22,3.47 -5.4,0.77 -7.88,0.59 -0.91,0.73 1.13,4.84 -1.63,4.69 -2.37,-0.99 -5.13,-1.74 -7.34,-2.66 -1.81,-3.33 -1.13,-7.07 -0.75,-10.66 -3.86,-0.79 -8.92,-2.08 -9.69,-6.56 -1.65,1.27 -4.99,0.71 -4.64,-1.87 -0.45,-2.76 -1.64,-5.72 -3.61,-7.69 -2.74,-0.99 -5.53,-1.93 -6.83,-4.79 -1.25,-3.09 -5.32,-0.4 -7.74,-0.8z m46.75,26.38c-0.1,0.03 0.04,0.06 0,0z\",\"name\":\"Bayern\"},\"bw\":{\"path\":\"m233,542.31c-1,3.03 -3.8,0.55 -6.25,1.41 -1.85,0.3 -6.11,-0.67 -4.1,2.56 0.5,1.4 3.45,5.79 2.97,1.91 0.74,-2.88 3.54,0.29 3.5,2.12 -0.05,2.12 0.13,4.28 -0.67,5.91 -2.21,2.88 -6.93,-2.7 -8.36,1.34 0.26,1.89 -0.96,3.78 -2.66,5.38 -2.87,1.47 -6.48,1.36 -9.56,0.91 -0.14,1.71 -1.09,2.75 0.88,3.56 2.16,2.43 -1.84,4.61 -2.82,1.5 -2.24,-0.41 -4.9,0.87 -7.01,1.83 -1.86,1.31 -3.21,3.14 -1.07,4.79 -2.58,2.03 -4.76,4.93 -7.53,6.53 -2.28,0.77 -4.85,-1.67 -3.07,-3.7 0.44,-3.45 3.31,-3.76 5.49,-5.64 2.15,-2.77 -2.95,-1.33 -4.33,-2.33 -3.36,-0.68 -8.66,-1.27 -8.78,-5.66 -0.37,-2.27 -2.39,-6.18 0.16,-6.35 -1.56,0.22 -6.19,0.51 -5.66,2.03 1.02,1.01 1.63,3.91 1.34,5.81 -0.91,2.56 -4.61,4.01 -6.17,1.22 -1.23,-2.27 -2.8,-5.47 -5.58,-5.87 -1.35,0.5 -2.27,2.96 -1.13,4.34 0.64,2.82 1.72,5.99 1.41,8.75 -1.19,1.47 2.13,0.8 2.94,1.09 2.56,1.28 -0.68,4.01 0.44,6.03 0.58,2.78 -1.68,4.86 -3.44,6.5 -0.2,1.61 2.95,0.95 2.5,3.03 -0.5,1.7 -2.89,2.29 -3.8,3.97 -1.51,1 -4.09,2.21 -3,4.19 -0,4.19 -1.63,8.4 -2.57,12.44 -1.88,2.38 -4.07,4.74 -4.06,8 -0.94,3.32 -4.33,5.15 -7.25,6.25 -3.09,4.3 -5.58,9.02 -6.75,14.19 -2.02,2.94 -5.4,5.15 -8.91,5.69 -0.21,2.82 -1.4,5.14 -3.56,6.99 -1.36,2.17 -3.49,3.53 -5.66,4.61 -1.15,2.67 -3.64,5.13 -2.5,8.22 0.36,2.98 -0.28,5.69 -1.97,8.15 -1.95,4.34 -4.99,8.87 -3.01,13.76 0.98,2.33 -1.6,3.46 -3.29,4.06 -1.58,3.35 -1.03,7.85 -3.97,10.71 -3.45,3.81 -5.74,8.63 -5.57,13.85 -1.32,3.83 3.9,5.48 3.32,9.25 -1.3,3.08 -3.94,5.46 -4.57,8.93 -0.87,1.91 1.04,3.96 -0.54,5.81 -1.06,2.51 -2.87,5.19 -1.04,7.86 1.18,2.15 -0.92,4.15 -2.35,5.35 -0.31,3.89 3.1,6.22 5,9.16 2.34,1.03 6.63,0.35 6.5,3.84 -1.16,1.4 -4.38,2.08 -0.94,3.62 2.67,0.19 5.38,-1.24 7.85,-2.15 1.44,-1.71 2.81,-3.83 5.44,-3.09 2.67,-0.79 2.95,2.96 5.54,2.9 3.15,1.3 6.81,1.64 9.99,0.41 0.13,-3.3 4.53,-3.63 6.59,-5.48 2.38,-1.41 5.39,0.37 7.78,0.98 0.79,1.29 -0,3.08 2.19,3.78 3.61,0.25 7.37,1.32 10.72,-0.47 -3.18,-2.2 -0.41,-3.55 1.74,-5.09 1.44,-1.37 5.34,0.59 4.6,2.72 0.03,1.73 2.81,-2.43 2.91,-3.66 0.99,-2.17 -2.08,-3.31 -3.78,-2.38 -2.21,0.79 -3.16,2.58 -5.97,3.13 -1.88,-0.81 -4.32,-2.21 -5.31,-4.16 0.59,-3.61 2.99,-6.72 5.06,-9.63 1.63,-2.24 5.73,-0.38 6.44,-3.38 2.06,-2.35 5.55,0.44 4.49,3.47 2.07,0.67 0.21,-4.19 4.06,-1.25 1.57,1.2 4.32,3.45 2.25,5.23 0.1,2.76 1.41,4.58 4.22,5.01 1.74,-2.24 3.46,-0.92 5.76,1.59 2.1,2.97 5.8,0.78 7.96,-0.93 3.82,-2.7 8.65,-0.24 12.27,1.62 3.55,2.04 4.43,-1.99 2.13,-4.27 -0.59,-2.2 -2.12,-3.67 -4.12,-4.07 -2.4,-1.85 -6.01,-3.5 -6.96,-6.5 0.3,-2.1 3.03,-1.62 3.78,-0.16 3.5,2.46 7.48,4.47 10.66,7.31 -0.21,3.96 4.69,5.62 7.5,7.39 1.67,0.53 3.72,-1.14 5.59,-0.11 2.75,0.87 6.81,1.33 7.03,4.97 0.46,3.2 4.49,4.9 6.69,2.27 1.24,-1.5 4.61,-2.56 5.4,-0.7 4.17,1.33 6.15,-3.91 8.97,-5.72 3.32,-0.45 7.13,0.12 10.19,-0.66 1,-2.57 4.28,-2.37 6.22,-1.28 0.84,2.31 0.58,2.71 2.56,1.13 2.97,-0.39 2.03,-4.58 0.76,-6.39 -1.17,-2.02 -2,-5.8 -0.79,-7.3 3.32,-0.17 0.06,-2.21 -0,-3.93 -0.63,-3.04 -0.86,-6.31 0,-9.32 -2.23,-0.74 -2.32,-4.76 0.44,-4.66 -0.41,-2.68 2.08,-4.21 1.66,-6.88 -0.15,-2.82 0.59,-6.09 -1.94,-7.94 -2.26,-5.15 -1.96,-11.11 -3.49,-16.32 -1.93,-2.69 -4.53,-5.55 -4.67,-9 0.46,-2.92 3.93,-5.48 2.72,-8.47 0.1,-0.35 4.87,-3.47 6.42,-2.05 2,3.2 4.93,-0.95 6.82,-2.36 0.33,-1.38 1,-2.91 3.14,-2.96 3.03,1.76 2.98,-2.24 2.69,-4.25 -0.32,-3.5 -1.14,-6.78 -3.64,-9.37 -0.98,-1.42 0.15,-4.75 1.23,-5.16 3.02,1.48 6.11,1.47 9.25,0.41 2.37,-0.94 3.55,1.55 1.82,3.19 0.08,1.06 5.19,-1.87 2.3,-2.88 -0.25,-2.1 -0.85,-4.44 -3.47,-3.91 -1,-3.13 0.42,-4.65 1.54,-7.33 0.09,-4.38 1.32,-9.19 -0.13,-13.38 -2.03,-1.38 -1.82,-4.46 -4.4,-5.39 -2.47,-2.1 -5.26,-3.59 -8.29,-4.72 -0.45,-2.63 0.5,-4.11 -0.61,-6.97 -0.35,-3.23 -2.39,-5.85 -5.43,-6.81 -1.8,-1.05 -4.02,-2.25 -3.05,-4.75 -0.53,-2.57 0.99,-5.27 0.62,-7.5 -1.67,-2.84 -3.08,-6.33 -1.5,-9.56 2.72,0.17 4.05,-1.19 2,-3.69 -1.12,-2.08 -1.1,-4.65 -2.84,-6.37 -0.05,-1.52 1.05,-2.79 -0.28,-4.24 -1.33,-3.13 -3.46,0.38 -1.36,0.89 -1.36,2.26 -3.18,4.9 -6.23,4.2 -1.84,0.68 -5.99,-0.78 -4,-3.06 0.32,-2.43 0.8,-5.95 -0.91,-7.66 -1.91,-0.49 -2.69,-3.58 -3.13,-5.51 -1.12,-3.07 -1.07,-6.84 -4.03,-8.84 -3.37,0.71 -6.2,2.77 -9.34,3.81 -2.15,-0.26 -3.2,-3.12 -1.25,-4.19 -0.15,-1.71 1.98,-8.34 -1.11,-4.8 -1.56,1.02 -3.09,4.67 -5.17,2.44 -1.38,-0.64 -3.13,-1.84 -2.32,-3.58 -0.34,-0.5 -0.91,-0.09 -1.41,-0.13z m-57.69,212.03c0.26,4.67 5.28,-0.76 0,0z\",\"name\":\"Baden-WÃ¼rttemberg\"}}});"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.russia.js",
    "content": "/** Add Russia Map Data Points */\njQuery.fn.vectorMap('addMap','russia_en',{\"width\":959,\"height\":593,\"pathes\":{\"da\":{\"path\":\"m34.939,403.74,2.6516,1.2627,3.6618,0.50507,1.7678-2.0203,2.1466,2.0203,2.3991-1.6415,0.25254-1.7678,1.6415-2.1466,3.0305,0.50508,3.7881-2.9042-0.50508-1.894-4.7982-0.50508,0.75762-3.1567-1.0102-0.63134,0.63135-2.2728-3.1567-2.7779,1.5152-0.50508,3.9143,0.88388,0-1.389-1.0102-1.2627,8.3338-0.25254,4.9245,5.4296,1.2627,1.894-0.37881,2.2728-5.3033-0.3788,0.50508,2.5254,1.5152,3.0304-1.0102,3.5355-2.3991,2.7779-1.2627,0.25254,4.5457,0.75761-5.5558,2.1466-0.50508,2.0203-0.75762,0.50508-3.0305,0.50507-0.25254,4.7982-1.2627,0.88388-1.1364,13.132-9.0914-0.12627-3.6618-2.2728-1.389-0.88388,0-11.617-3.283-5.9346,0.37881-2.9042,1.2627-0.37881z\",\"name\":\"Republic of Dagestan\"},\"sa\":{\"path\":\"M671.25,126.75l-1.44,1.06-1.25,1.63s1.44,0.87,2.16,0.87c0.71,0,2.69-1.97,2.69-1.97l-2.16-1.59zm18.47,12.09c-0.18-0.01-0.4,0.02-0.63,0.07-1.78,0.35-4.81,1.93-4.81,1.93s-1.41,1.1-2.12,1.1c-0.72,0-2.35-0.38-2.35-0.38-0.71,0-2.5,1.25-2.5,1.25l-1.4,1.78s-1.1-0.51-1.1,0.38-0.35,1.96,0.72,2.5c1.07,0.53,1.61,1.06,2.5,1.06s3.22-0.72,3.22-0.72l1.97-0.87,1.97,1.06s0.51-0.9,1.4-1.44c0.9-0.53,3.4-2.31,3.75-3.03,0.36-0.71,0.72-3.22,0.72-3.22s-0.11-1.36-1.34-1.47zm-19.81,7.1c-0.15,0.01-0.29,0.05-0.44,0.09-1.25,0.36-2.85,0.19-3.56,0.19-0.72,0-0.91,0.19-0.91,0.19s-0.88,1.58-1.59,1.93c-0.72,0.36-1.99,0.74-3.07,0.57-1.07-0.18-3.75-1.25-3.75-1.25s-1.93-0.02-1.93,1.59,3.03,3.41,3.03,3.41l1.06,1.4s-2.51,0.73-3.41,0.38c-0.89-0.36-2.65-2.16-2.65-2.16l-3.22-0.72s-2.88,0.2-2.88,1.1c0,0.89-0.68,2.67-0.68,3.56s-0.9,3.04,0.53,3.94c1.43,0.89,1.79,3.03,1.97,3.75,0.17,0.71,0.7,1.77,2.84,2.31,2.14,0.53,4.29,0.53,5,1.06,0.71,0.54,1.77,1.07,2.84,0.53,1.08-0.53,1.82-2.65,1.82-2.65l2.12-1.97s1.61-1.44,2.5-2.16c0.89-0.71,2.7-0.54,4.13-1.44,1.42-0.89,2.31-3.75,2.31-3.75v-5l-0.38-4.43s-0.68-0.58-1.68-0.47zm106.25,5.62c-0.45,0.09-0.75,4.1-0.75,4.1l-7.32,1.65-3.28,0.63-4.53-6.06-7.84-0.13-0.38,0.87-5.68,1.66-1.76,2.13-6.06,6.31v2.78l-2.15,1.91-3.29,5.03-4.93-2.38-3.41-0.37-1.75,2h-4.56l-3.41,1.78-1.75-1.53,4.28-2.91-2.28-1.62-3.03-0.13-8.84,4.03,1.9,5.44-0.87,4.78-2.66,2.91-1.65-2.13,3.03-7.47-1.75-0.37-2.66,4.03-3.03,2.03-1-0.75,1-3.16,2.28-0.74,2.91-2.66-7.1,1.75-9.22,5.31-6.68,0.25,3.65,3.66-3.65,3.4-0.5,3.03,0.37,1.16,3.91-1.78-1,4.03,4.81,2.91-0.91,2.9-2-1.37-3.68,1,1.28,3.41,2.4-0.26-1.03,2.66-3.9-0.5-4.28-1.66-3.53,0.26-2.41,3.15-0.63,4.06h-6.46l-1.76-1.53-2.4-2-0.5,4.41,0.87,0.87-0.12,1.41,1.65,0.87-0.9,2.54,1.66,6.18-3.29-1.4-1,1.15-9.87-5.31v-4.94l-2.25,0.13-1.78,2.41-2-3.41,3.65-0.63-0.5-2.9-4.43-1.66,0.75-0.87,0.12-2.53-5.28-4.04-5.31-2.53-1,3.66-7.35,0.65-2.37-1.65-4.19,2.15v2.13l4.19,4.69-10.94,5.31-10.28-1.16,0.44-4.4-12.07,0.19-3.96,3.78h-2.85l-1.09,1.09,2.66,2.87h-2.13l-2.91-2.06,1.19-2.09-0.87-1.38-1.54-1.78,0.07,2.28-1.5,1.07-3.85-1.32s-2.9,3.53-2.84,3.78c0.06,0.26,2.66,3.29,2.66,3.29l-1.41,3.34,1.59,2.09,0.19,2.78,7.38,5.82-0.32,5.47,2.53,1.9,1.63,2.53-2.53,2.72-4.41,3.03-0.69,2.63-4.81,2.78,0.25,6.12-2.25,1.1-2.97-1.28-5.65,4.75-4.44,0.09,0.06,1.97,5.38,6.59,1.78,20.1-6.35,1.97,4.19,3.4-1.78,4.19v1.25l7.16,8.84-4.57,6.69,0.97,1.6-2.4,1.87,0.09,2.25,5.63,0.34,0.71,0.72,9.1,0.19,3.31,3.31-0.53,1.6-3.31,0.34,0.19,3.94,4.03-1.06,5.06,6.59-0.53,5.53,3.84,5.19-1.97,3.4,0.53,2.13,7.69,6.53v4.37l-3.75,6.44,0.28,10.78,3.85,4.13,3.37-3.94,3.75,0.09,1.88-1.34,2.68-0.62,2.41-2.07,3.56,3.85,0.38,2.31,4-5.06,0.09-4.13,5.38-2.75-0.29-6.25,2.32-4.12,3.84-1.5,4.91,1.06,6.15,4.91,0.57,3.84,1.31,0.87,4.03-1.4,2.5-2.06,2.69,1.06,0.87,4.47,3.13,4.56,2.15,1.78v3.03l2.32,1.35,0.71,4.71,3.94,0.19,0.97,1.35,1.53,4.09,8.38-0.25,3.31-1.97,5.53,1.16,3.56,1.97,11-0.72,5.54,3.75,2.21,0.53,5.19-2.6h2.6l3.03,2.26,2.78-0.19,3.22-3.94,5.68-0.06,2.5-1.97h7.88l0.19-3.75,10.68-5.09,0.82-3.04-4.28-4.12,2.31-1.69,0.62-4.03-1.34-1.69-2.41,0.38-2.03-1.44,2.75-4.03-2.84-1.6,0.25-1.87,1.53-1.97-1.44-1.44-3.47-1.15-0.53-1.6,3.38-1.43-1.88-0.91-0.19-5.25-0.87-0.62-0.19-1.88,2.78-1.25-1.62-1.25v-2.94l5.47-1.97,3.12,0.16,0.25-1.78,6.53,0.09v-2.75l-1.25-1.53,1.16-1.25,3.47-0.62,3.31-2.22,1.34-6,5-0.44,0.1-2.06s-5.29-4.9-5.47-5.25c-0.18-0.36-0.88-3.94-0.88-3.94l-3.56-2.59v-5.97l2.94-7.16-1.69-9.19,0.78-3.12,13.5,0.72,0.25-5.28,5.19-1.16,3.47,1.87,0.81-2.31-2.41-3.69,1.69-0.62,0.19-2.75-7.16-8.5,0.1-4.37-3.13-1.5-0.09-4.04-1.78-1.15,1.09-2.13,3.81-0.47,1.35-1.78,4.28,0.38,0.09-2.44-3.37-1.5,0.15-3.31,5.47-0.53v-3.57l5.63,0.44,5.62-8.03,0.44-2.5-6.06-6.06-0.19-1.88,2.31-3.4-0.97-1.79-3.31,0.19-1.5-2.34,4.72-1.41-0.09-1.53-2.07-0.97-0.25-1.34,2.13-3.75,5.72-1.97-0.78-3.56,5.15,0.68-0.62-5.43,1.34,0.28,0.19-3.59-2.69-0.63-2.94-4.53-7.59-0.28-4.19-1.88,0.72-3.47h-3.12l-0.19-1.62,8.12-10.44,1.07-7.84s-9.81-5.72-10.25-5.63zm-135.1,8.56c-0.12,0.03-0.23,0.08-0.34,0.19-0.89,0.9-1.07,1.79-0.53,2.5,0.53,0.72,1.06,1.63,1.78,2.35,0.71,0.71,2.31,1.25,2.31,1.25s0.71-1.1,0.53-1.82c-0.18-0.71-1.97-2.84-1.97-2.84s-0.94-1.78-1.78-1.63zm28.94,7.35l-2.31,0.34s-1.07,0.91-1.25,1.63c-0.18,0.71-0.9,1.24,0,1.78,0.89,0.53,3.75,1.25,3.75,1.25s1.6-0.02,1.78,0.87c0.18,0.9,0.18,1.8,0,2.69s-0.53,1.78-0.53,1.78l0.72,0.72,1.93-0.53s0.74-0.72,1.82-0.72h2.65s1.44-0.53,1.97-1.25c0.54-0.71,1.97-1.25,1.97-1.25h2.69s1.41-0.52,0.87-1.59c-0.53-1.07-1.76-1.62-2.65-2.16-0.9-0.53-3.22-2.31-3.22-2.31h-2.5l-3.6,0.34-2.84,0.38-1.25-1.97zm-17,10.15c-0.12,0-0.22,0.01-0.31,0.04-0.72,0.17-1.44,1.4-1.44,1.4s0.37,1.78,2.16,1.78c1.78,0,2.3,0.55,2.65-0.34,0.36-0.89-0.87-2.31-0.87-2.31s-1.37-0.55-2.19-0.57z\",\"name\":\"Sakha Republic\"},\"so\":{\"path\":\"m45.583,387.43-2.2728,2.6516-4.1669-2.6516-2.0203,1.1364-0.37881,5.8084-1.1364,1.389-2.2728-0.12627-5.9346-2.6516-3.0305-3.283,0.12627-4.9245,4.672,0.75761,0.37881-0.88388,2.5254-0.12627,3.283,1.5152,4.0406-1.894s-0.12627-3.5355,0.75761-2.7779c0.88388,0.75762,1.389,1.2627,1.389,1.2627l0.25254,3.5355z\",\"name\":\"Republic of North Ossetia–Alania\"},\"kb\":{\"path\":\"m20.982,375.86c0.26786,0.35715,2.5893,4.7322,2.5893,4.7322l0.98214,3.9286,4.6429,1.1607,2.8571-1.0714,3.2143,1.5179,4.375-1.875,0.26786-3.125-5.9821-2.3214-1.875-5.0893-2.2321-1.1607-4.375,0.71429z\",\"name\":\"Kabardino-Balkar Republic\"},\"kc\":{\"path\":\"m13.482,361.39,2.2321,8.4821,5.0893,6.25,4.375-2.6786,5.3571-0.89286,0.08929-3.3928,3.75-1.0714-6.6964-7.2321-2.2321,2.4107-2.8571,0.26786-1.6071-4.5536,0.44643-2.1429z\",\"name\":\"Karachay–Cherkess Republic\"},\"st\":{\"path\":\"m33.929,367.73-3.4821,0.98215,0.17857,3.75,1.5179,1.25,1.7857,4.6428,6.5179,3.0357,1.3393,1.3393,0.08929,3.0357,3.8393,1.7857,1.6071,2.5893,3.2143,0.625,0.71429-1.4286-2.8571-3.125,1.5179-0.53572,3.5714,0.80357,0.17857-1.1607-0.98214-1.3393,7.7679-0.0893,1.6964-1.5179,0.26786-3.5714-5.2679-7.5-0.17857-9.4643-3.4821-6.0714-4.9107-0.98214-1.5179-2.7679-5.0893-5.7143-0.98214-0.625-1.5179,1.3393-2.7679-2.0536-1.4286,0.80357-0.80357,1.0714-0.08929,1.6071,0.35714,1.3393,0.35714,1.1607-0.71429,1.6071-0.98214,1.4286-1.9643,2.2322-1.875,1.0714-0.71428,0.98214-0.98214,2.3214z\",\"name\":\"Stavropol Krai\"},\"ks\":{\"path\":\"m21.607,356.48-0.08929,2.0536,0.98214,3.8393,0.35714,0.80357,2.2321,0.0893,3.75-4.5536,1.4286-1.9643,1.9643-1.0714,2.6786-4.0178-0.26786-3.3929,0.17857-1.6964,0.89286-1.5179,1.3393,0,1.7857,1.5179,1.3393,0,2.5893-3.0357,0.08929-1.9643-0.89286-0.98214-2.2321-1.3393,0.17857-2.9464,2.8571-3.125,0.08929-1.4286-2.7679-2.9464-3.75-0.71428-0.80357-0.89286,1.6071-1.25,0.17857-2.4107-2.1429-1.6072-2.5893-0.80357-1.6071-1.6964-1.25-0.98214-0.89286-0.0893-1.3393,2.2322-0.625,0.98214,1.0714,1.4286-0.35714,1.5179-0.80357,0.625-2.7679-0.26786-0.89286-0.89286-1.9643,0.0893-1.875,0.71429-3.0357,1.7857-1.6964,0-1.3393-1.4286-1.6071-0.625-1.1607-1.4286,0-2.6786-2.2321-0.26786-1.25,0.625-0.35714,2.9464-0.089286,13.214,0.71429,5.8929,0.98214,3.6607-0.089286,2.3214-0.625,2.7679-0.089286,2.4107,0.17857,2.0536,1.5179,0.89285,0.71429,0.625,1.6071,1.5179,0.89286,1.0714,0.89286,0.89286l7.947-4.27-0.804-1.25-0.357-1.43-5.089,2.68h-1.875l-1.25-1.875,0.35714-3.5714,6.25-1.4286,2.7679-2.3214,0.71429-2.5893-1.3393-0.80357-1.9643,0.44642-1.1607-1.5178-0.71429-2.6786-1.3393-1.7857-0.17857-1.25,0.08929-1.1607,1.3393-0.80357,1.3393,0.625,1.0714,1.3393,1.0714,1.9643,1.3393,1.7857,2.3214,1.3393,1.6964,0.89285s0.625,0.26786,0.71429,0.625c0.08929,0.35715,0.89286,2.6786,0.89286,2.6786v4.0178l-0.08929,1.3393-1.0714,1.0714-1.875,1.5178-1.6071,1.4286z\",\"name\":\"Krasnodar Krai\"},\"ro\":{\"path\":\"m37.5,323.45,2.0536,0.98214,1.4286-0.17857,0.625-0.89286-0.44643-1.1607-1.25-0.89286-1.9643-1.3393-0.89286-1.1607-0.35714-0.71428,1.0714-1.4286l2.231-1.08,1.6071-0.26786,1.0714,0.35714,1.4286,1.3393,1.5179,0.35714,1.6964-0.89286,0.89286,0.44643,1.072,1.06,1.339,1.79,0.268,1.33,1.607-0.08,1.3393-0.80358,1.6964-0.0893,1.3393-0.0893,0.35714-1.5178,0.53571-1.4286,1.25-1.6071,1.3393-1.0714,1.6964,1.0714,0.71429,0.35714,0.89286-1.875,0.44643-0.71428,2.6786-0.26786,1.875-1.6964,2.3214-0.17857,2.0536,1.1607,2.1429,1.25,0.98214,0.53571,3.9286,0.0893h2.2321l1.5179-0.98215h1.3393l0.71429,0.625,0.26786,1.6964-0.08929,1.9643v1.875l-0.08929,1.0714-0.981,1.34-1.25,0.98214-1.25,0.71429-0.80357,0.35714-0.35714,1.25-0.44643,1.6072-0.08929,1.4286-0.44643,1.1607-0.625,1.4286-1.4286,1.5179-1.6964,0.53571h-3.125l-1.608-0.36-1.518,0.53-0.625,1.97-0.982,0.62-0.80357,0.53572,0.17857,0.89285,1.3393,1.4286,0.71429,1.4286-1.1607,1.4286-1.3393,0.89285-0.80357,1.7857-0.08929,0.80357,0.98214,0.53571,1.1607,1.1607,0.625,1.0714,0.80357,0.80357,0.71429,1.3393v1.0714l-0.71429,0.80357,0.53572,0.625,1.4286,0.35715,0.625-0.53572,0.71429-0.0893,0.35714,0.98214v1.4286l-1.3393,1.3393-2.1429,1.0714-2.0536,1.1607-3.3929,0.0893-0.80357,0.80357-1.3393,0.80357-1.696,0.46-1.429-0.71-1.696-0.71-0.893-0.9-0.178-2.23-0.179-1.52-1.696-2.14-1.1607-0.80357-0.17857-1.25-0.80357-0.89286-1.7857-0.0893h-2.7679l-2.8571-0.0893-1.3393-0.17857-1.6071-1.7857-0.98214-0.71429v-0.89286l1.3393-1.5178v-1.5179l-0.625-1.25-1.875-1.4286-0.71429-0.625,0.26786-2.2322,2.7679-3.2143,0.08928-1.6071-1.9643-2.2322-1.3393-0.89285-2.411-0.55-1.0714-0.35714-0.08929-0.71429,1.0714-1.0714,0.26786-1.1607z\",\"name\":\"Rostov Oblast\"},\"kk\":{\"path\":\"m44.554,348.71,0.98214,1.6071,1.1607,1.0714,1.1607,1.6964,0.80357,1.1607,1.1607,0.71429,2.5893,0.44643,1.3393,0.625,0.98214,1.6071s0.98214,1.7857,1.25,2.2321c0.26786,0.44643,0.98214,2.4107,0.98214,2.4107l0.17857,4.9107v3.2143l0.89286,2.2321,3.3036,4.1964,1.25,2.0536-0.17857,2.5893-1.4286,1.875,0.89286,1.3393,4.375,4.7321,0.53571,1.25,0.35714,0.98215,0.89286,0.53571,1.4286,0.0893,1.6071-0.26786,1.7857-0.53572,2.2321-0.89285,2.3214-0.26786,0.713-0.71,0.625-2.15-0.268-1.16-2.232-1.34-0.982-0.71,0.08928-1.3393,1.0714-0.625,1.7857,0.0893,1.4286-1.25-0.53572-0.71428-0.71428-2.0536-0.268-1.7-0.179-1.16h1.0714l1.6964,1.25,1.7857,0.80357,2.6786-0.17857h0.89286l0.53571-1.1607-0.17857-2.4107-0.08929-3.8393v-6.3393-0.98214l-0.08929-2.2321,2.9464-2.8572,0.17857-1.3393-1.4286-0.625v-3.2143l-1.0714-1.1607-1.1607-0.35715-2.5-0.17857-0.625-1.4286-0.17857-0.80357-1.25,0.26786-0.625,1.0714h-1.3393l-1.25-0.0893-1.071-0.98-0.804-0.71-2.321-0.27-0.98214,0.35715-0.71429,0.80357-0.71429,0.35714-0.26786,1.1607-0.35714,0.80357,0.35714,0.625,1.0714,0.35714,1.0714-0.44643,0.89286,0.35714,0.08929,0.98215-0.44643,1.5178-5,3.125-3.3929,0.26786-2.3214,1.3393-1.5179,0.53571-3.8393-1.7857-0.53571-0.35715-0.08929-3.3928-0.71429-1.4286-2.3214-2.2322-0.625-1.25-1.9643-0.80357h-3.5714z\",\"name\":\"Republic of Kalmykia\"},\"as\":{\"path\":\"m86.873,350.94,1.6415-1.389,1.1364-0.63135,1.7678,1.2627,2.0203,0.63135,2.2728,0.50508,0.88388,1.0102,2.1466,0.88388,0.75761,1.1364,0.63134,1.1364,0,1.389,0,0.88389-1.5152,0.3788-1.1364,1.389-0.12627,1.0102,0.63134,1.389,1.0102,1.1364-0.37881,2.1466-0.75762,1.0102-1.7678,0.88389-0.25254,1.1364,0.50508,0.88388,1.7678,1.1364,2.2728,1.5152,1.389,1.6415,0.63134,1.0102,0,1.5152-1.0102,1.1364-0.25254,2.0203-1.0102,1.0102,0,2.2728,0,2.7779-0.75761,0.3788-1.7678-0.3788-1.894-0.75762-0.63134,0.37881-0.37881,2.1466,1.6415,2.1466,1.1364,1.2627,0.88388,1.0102,0.50508,0.63134,0.12627,1.2627-3.9143,0.25253-3.0305,0.63135-2.1466,0-1.894-1.2627-2.0203-1.5152-5.4296,0-1.0102-0.37881-1.1364-1.1364,0.37881-2.9042-0.88388-1.0102-2.2728-1.6415,0-1.6415,1.0102-0.3788,1.5152,0,1.389-1.0102-0.63134-1.389-0.75761-4.0406,0.63134-0.3788,1.2627,0.75761,2.9042,1.389,2.0203-0.25254,1.2627-0.12627,0.50508-1.6415-0.25254-5.4296,0.12627-5.0508-0.25254-4.2931,2.1466-2.2728,1.0102-1.1364,0.12627-1.389-1.2627-0.50508-0.25254-2.1466z\",\"name\":\"Astrakhan Oblast\"},\"ad\":{\"path\":\"m21.786,356.21,2.4107-1.4286,2.5-2.6786,0.35714-2.1428-0.26786-3.9286-1.0714-2.7679-2.9464-0.98214l-2.412-1.78-2.232-3.75-1.5179-1.1607-1.3393,0.71428-0.17857,2.1429,1.6071,1.875,0.80357,2.5893,1.1607,1.6964,1.6071-0.35714,1.5179,0.44643-0.44643,2.9464-2.9464,2.3214-3.394,0.71-2.8571,0.35715-0.17857,3.8393,1.0714,1.7857h1.7857l5.3571-2.9464,0.35714,1.7857z\",\"name\":\"Republic of Adygea\"},\"vl\":{\"path\":\"m85.893,313.18,1.5179-0.98214,1.875-0.0893,1.1607-1.0714,1.1607-1.6072,0-1.25,1.1607-0.98214,1.9643,1.25,2.5,1.9643,3.3036,2.1428,3.9286,1.5179,1.4286,1.5179,0.625,2.1428,0.44643,1.4286,2.8571,0.35714,0.44643,1.4286,2.5893,0.80357,1.7857,1.7857,1.6964,1.6964,0.17857,2.2322-1.5179,1.25-1.6071,2.2321-1.4286,1.3393-0.26786,1.25,0.89286,2.2321,2.9464,1.875,1.6964,1.875,1.7857,1.1607,1.25,3.3036,1.0714,1.875,0.0893,1.25-0.71428,0.53572-1.3393,0.44643-0.71429,0.53571-2.8571,0.26786-4.6429-0.0893-1.6964,0.26786-0.71429,1.6071,0,2.8572-0.17857,1.1607-1.6964,1.25-1.3393,0.98214-4.0178-0.0893-1.0714-0.0893-1.3393-3.0357-1.4286-1.0714-1.875-1.0714-1.0714-0.625l-2.256-0.46-2.054-1.25-1.071-0.18-1.1607,0.625-0.98214,0.71429-1.25,0.26785-2.1429-0.0893-0.89286-1.1607-0.35714-1.25-1.4286,0.26786-0.89286,1.1607h-1.25l-1.875-0.71428-1.25-0.80357-1.3393-0.35715-1.4286,0.17858-1.4286,1.25h-0.89286l-1.4286-2.5-1.25-1.4286-1.0714-0.71428,0.448-1.44,0.893-1.52,1.607-1.43,0.179-0.89-1.6964-2.1429-0.44643-1.0714,1.4286-0.80358,0.625-1.875,0.625-0.53571,1.25-0.35714,1.6071,0.0893h3.0357l1.7857-0.625,1.9643-2.5893,0.89286-4.0179,0.625-1.4286,2.8571-2.0536,1.1607-1.6964,0.35714-3.3036v-2.2322z\",\"name\":\"Volgograd Oblast\"},\"vn\":{\"path\":\"m70.089,310.77,0-6.0714,0.08929-1.1607,3.75-3.2143,2.5-3.6607,1.3393-1.4286,0.35714-1.875,2.4107-0.71428,0.35714-2.5893,0.625-1.7857,1.0714-0.35714,0.625-2.0536,1.3393-1.7857,1.1607-1.0714,0.98214-0.53571,0.89286,1.1607,0.44643,0,0.71429-1.0714,0.53571-0.71428,1.1607-0.17857,0.89286,0.89285,1.25,1.1607,1.4286,1.4286,1.1607,1.5179,0.80357,0.89285-0.26786,2.1429,0,1.6071,1.875,1.0714,2.3214,1.3393,0.80357,1.3393-0.0893,1.7857-0.89285,1.5178-0.44643,0.98215,1.5179,1.25,1.875,1.7857,1.9643,2.2321,1.3393,1.6964,1.1607,1.9643-0.26786,2.3214,0,2.0536-2.1429,1.0714-0.71428,0.17857-4.2857-1.875-2.6786-1.7857-2.1429-1.4286-1.6964-1.1607-0.53571-0.17857-0.71429,0.80357-0.44643,1.25-1.4286,1.9643-1.6964,0.44643-2.8571,0.80357-3.5714,1.1607-3.2143,0.0893-2.5-0.17857-2.3214-1.25-2.3214-1.0714z\",\"name\":\"Voronezh Oblast\"},\"bl\":{\"path\":\"m63.304,272.29-5.4464,3.3036,0.08928,2.6786,1.6964,1.875,0.08929,3.125,0.44643,1.6964,2.8571,1.6071,2.8571,0.44643l1.608,2.23-2.5,3.3036-0.35714,2.1429,1.0714,1.6071,2.3214,1.5179,0.17857,2.9464,1.1607,1.5179,0.71428,0.89285,4.7321-4.375,3.75-5.4464,2.0536-0.89285,0.80357-4.1072,1.0714-0.89285,0.53571-1.3393-2.5-2.8571-3.5714-4.1071-2.7679-0.26786-2.9464-1.1607-2.6786-1.6964-2.5893-1.6072-1.9643-1.6071z\",\"name\":\"Belgorod Oblast\"},\"ky\":{\"path\":\"m63.482,271.84,0-4.6429l-0.357-1.61-1.786-1.97-0.714-1.07,1.3393-1.0714,3.75-1.3393,2.7679-1.3393,2.6786,0.0893,0.53571,1.0714,1.25-0.0893,1.7857-1.1607h0.80357l0.98214,0.44643,1.4286,1.6071,0.53571,0.80357,0.08929,1.6964,1.0714,0.89286,1.0714,0.71428h0.89286l1.0714,1.25,0.17857,3.2143v2.4107l-0.89286,0.98214v1.5179,1.1607l1.0714,1.25,1.1607,0.98214,0.89286,0.17857,1.5179,0.53571,1.0714,1.6072,1.6071,1.5178-0.71429,1.1607-0.80357,0.89286-0.89286-0.80358-1.9643,1.25-1.4286,1.1607-0.53571,0.80357-3.4821-4.1071-2.2321-2.3214-0.98214-0.53572-3.3036-0.625-2.8571-1.5178-3.6607-2.1429-2.4107-1.9643z\",\"name\":\"Kursk Oblast\"},\"or\":{\"path\":\"m74.732,258.27,1.0714-1.875,2.2321-0.26786,0.89286-1.6071,0.89286-0.53572,1.9643,0.89286,1.6964-0.0893,1.6071-0.71429,1.0714-1.5179,0.89286-0.53571,0.98214,0.17857,1.3393,0.98214,1.9643,0.89286,1.1607,0.89286,0.35714,0.89285,0.71429,1.3393,0.17857,2.0536,0,3.6607,0.98214,1.7857,1.4286,1.875,0.80357,1.25,0.71429,1.7857-0.26786,1.5179-3.9286,1.875-1.9643,0.98214-1.0714,2.1429-1.875,1.0714-1.875,1.0714-2.4107-0.89286-1.9643-1.6071-0.44643-1.6964,0.44643-1.9643,0.44643-0.89285,0.08928-4.4643-0.89286-1.6964-1.7857-0.53571-1.7857-1.4286-0.08929-1.6072-1.3393-1.5178-1.6071-1.6964z\",\"name\":\"Oryol Oblast\"},\"lp\":{\"path\":\"m86.875,278.45,1.5179,1.875,1.0714,0.89286,1.1607,0.71428,1.1607,1.0714,2.5,2.2321,1.25,1.5179,0.625,1.4286-0.44643,2.5893,0.53572,0.625,2.5,1.3393,1.875,1.7857,1.0714-0.17857,1.0714-0.625,0.44643-0.80357,0.0893-5.8036,0.35714-0.71428,1.4286-0.80357,2.3214-0.17857,2.0536-1.1607,1.3393-0.44643,0.17857-1.6964,0.625-1.3393,1.25-1.5179-0.80357-1.1607-2.6786-0.98215-0.53571-0.53571-0.17858-0.71429,1.0714-1.3393,0-1.6071-2.1428-0.35715-1.0714,0.44643-1.6072,0.80357-0.98214,0.89286-1.1607,0.625-1.4286,0.0893-1.3393-1.5179-1.6964-1.6964-0.80357-0.98214-2.4107,0.89285-3.125,1.6964-1.1607,1.6072-1.6071,1.4286z\",\"name\":\"Lipetsk Oblast\"},\"tl\":{\"path\":\"m93.482,256.3,3.2143-2.0536,0.98214-0.17857,1.6071,0.80357,0.98215-0.80357,0.71428-1.0714,3.125,0,1.6072,0.625,2.0536,0.35714,1.4286,0.80358,2.4107,0.35714,1.4286,0.71428,0.53572,1.0714,0.98214,1.0714,1.25,1.4286,0.71429,1.6072-0.35715,1.6964-0.98214,1.1607-0.71428,1.6964-1.3393,1.9643-1.6964,2.0536-1.0714,1.875-0.71428,0.98215-0.53572,0.35714-1.7857,0-2.5,0.89286-1.5179,1.0714-1.3393,0.26785-2.0536-1.3393-2.0536-2.5893-0.26786-2.0536-0.53571-1.4286-1.6071-2.5l-1.413-2.14-0.179-2.23z\",\"name\":\"Tula Oblast\"},\"bn\":{\"path\":\"m67.679,258.62,0.26786-1.7857,2.3214-1.5179,0.44643-1.1607,0-1.4286-1.6071-1.9643-1.7857-2.1429-1.6964-1.9643-2.3214-1.875-1.5179-0.89286-1.6964-0.26786-0.89286-1.1607,0.17857-2.3214,1.3393-1.6071,3.125-2.1429,2.6786-1.875,0.89286-1.7857,0.98214-0.71428,1.6964,0.26786,0.625,1.25,0.625,1.5178,1.0714,2.2322,1.1607,0.80357,5.8929,0.26785,2.1429-0.35714,1.4286,0.53572,3.125,0.89285,2.3214,0,0.71429,1.9643,0,2.2321-0.17857,1.1607-0.98214,1.5178-0.71429,0.53572-0.26786,1.4286,0.26786,1.5179,0,1.25-0.80357,1.4286-1.4286,1.5178-1.7857,0.71429-1.6964,0.17857-1.7857-0.71428-1.4286,0.71428-0.26786,0.89286-2.4107,0.80357-1.0714,1.4286-1.3393,1.25-1.4286,0.17857-1.4286-0.71428z\",\"name\":\"Bryansk Oblast\"},\"kj\":{\"path\":\"m89.196,239.61,1.6071-1.25,1.6071-1.3393l1.161-0.27,1.429,0.63,0.80357,1.4286,1.0714,1.25,1.7857,0.80357,1.7857,0.35715,3.125,0.0893,1.875-0.0893,1.6071-1.0714,2.4107-0.0893,1.4286,0.44643,0.98214,2.0536,0.26786,1.4286,1.25,0.625,1.6071,0.98215,0.98214,0.80357,0.53572,1.25-0.53572,2.0536-1.0714,1.7857-1.4286,1.9643-1.1607,1.25-0.89286,0.44643-3.75-1.25-2.6786-1.0714-2.6786,0.0893-1.875,0.44642-1.0714,1.25-1.5179-0.44642-1.0714,0.0893-1.0714,0.80357-2.0536,1.0714-0.89286-0.89286-1.0714-0.80357-1.9643-1.25-1.5179-0.89285-0.89286-0.44643v-1.0714-2.4107l-0.08929-0.625,1.1607-1.6964,1.0714-1.875v-1.7857l-0.26786-1.6071z\",\"name\":\"Kaluga Oblast\"},\"sm\":{\"path\":\"M79.375,237.55,80,235.95,80.179,234.52,79.732,233l-0.08928-1.4286,1.5179-1.3393,0.71429-1.6071,0.08929-3.125,0.35714-1.875,2.4107-2.5,2.5-1.9643,1.875-1.7857s1.875-1.3393,2.2321-1.5179c0.35714-0.17857,2.5-1.5178,2.5-1.5178l2.5,0.0893,3.0357,3.4822,1.875,3.4821,2.5,3.6607,1.4286,0.89286,2.7679,0.53571h2.0536l0.80357,0.71429,1.1607,1.875,1.1607,1.3393,1.25,1.6071,1.0714,1.4286,0.17857,1.3393-0.98214,1.25-1.875,0.89285-1.875,0.53572-0.89286,1.25-0.44643,0.89285-1.875,0.44643-1.7857,0.625-1.6072,0.35715h-3.0357l-3.75-0.80358-1.7857-1.7857-1.4286-1.3393-1.1607-0.26785-1.1607,0.71428-2.2321,1.5179-1.1607,0.44643-1.7857-0.44643-4.1071-0.98214-2.4107-0.35715z\",\"name\":\"Smolensk Oblast\"},\"mc\":{\"path\":\"m116.07,234.16,3.5714,0.26785,2.3214-0.89285,1.4286-0.44643,0.53571,0.625,0.0893,1.7857,0,1.1607-0.17857,1.3393,1.5178,0.89286,2.9464,0.44643,1.7857,0.89285,2.0536,0.89286,2.7678,0.89286,1.7857,0.26786,1.25,0.53571,0.26786,1.6071-0.0893,1.5179-0.44643,1.6964-1.5179,0.625-2.1428,1.1607-1.6072,1.3393-0.0893,1.25-0.625,1.7857-1.1607,1.5179-0.35714,1.6071,0.17857,1.6072,0.0893,0.89285,1.1607,1.0714,1.0714,0.625,1.1607-1.0714,0.625,0.44643,0,1.5179-0.0893,3.2143-0.44643,1.1607-1.3393-0.44643-1.875-0.17857-1.6072,0.17857-0.80357,0.89286-2.0536,0.0893-1.6071-0.35714-1.25-0.71429-1.0714-1.1607-1.6071-0.625-1.6964,0-0.44643,0.80357-0.17857,1.1607-1.0714,0.53571-1.4286,0.0893-0.80357-0.80358-0.17858-0.625,1.1607-2.4107,0.26786-1.9643-0.53572-1.6964-1.1607-1.5179-1.1607-1.5179-1.0714-0.89286,0.625-1.25,2.5-2.9464,1.1607-2.6786-0.71429-1.7857-1.6071-1.6071-1.6071-0.98215-0.53572-0.35714-0.625-1.875-0.80357-1.25-0.80357-0.80357,0.625-1.5179,2.5893-1.3393z\",\"name\":\"Moscow Oblast\"},\"rz\":{\"path\":\"m114.55,265.59-1.9643,2.6786-2.1429,3.125-0.625,2.7679-0.80357,1.7857,0.17857,0.80357,1.6964,0.71429,1.9643,1.3393,0.44643,1.5179-0.26786,0.89286,1.4286,1.1607,1.9643,0,1.1607,0.71429,0.0893,1.875,0.44643,1.1607,1.25,0.44643,1.5179-0.625,1.9643,0,1.5179,0.98214,0.625,1.7857,1.0714,1.1607,2.6786-0.17857,3.125,0,2.9464-2.0536,3.0357-2.9464,1.5179-2.2321,1.0714-1.7857-0.98214-2.2321-0.53572-3.125-2.0536-2.0536-1.25-1.6964-0.44643-2.8571-0.53571-1.6072-0.35715-0.98214-2.1428-0.35714-3.4822,0.26786-0.625,0.80357-2.1428-0.17857-1.875-0.71429-1.875-1.0714-1.9643-0.89286-1.0714,0.35715-0.80357,1.4286-1.4286,0.89286-1.6071-0.44643z\",\"name\":\"Ryazan Oblast\"},\"tb\":{\"path\":\"m112.77,279.43-1.6964,2.1429-0.35714,1.7857-0.80358,0.89286-2.6786,0.98214-1.875,0.44643-1.5178,0.71429-0.71429,1.4286,0,2.1429,0.26786,2.3214-0.71429,1.875-1.5179,0.53571-0.44642,1.4286-0.44643,1.6964-0.625,1.1607,0.08928,0.625,2.3214,2.1429,2.2321,2.1429,1.6072,2.2321,1.4286,2.0536,0.98214,0,2.1429,0,1.9643-1.25,2.5-1.25,1.6964-1.0714,4.0179-0.26785,1.0714-0.98215v-3.6607c0-0.35714,0.0893-2.3214,0.0893-2.3214l1.5179-1.1607s0.71429-0.71429,0.80357-1.0714c0.0893-0.35714-0.26785-4.6429-0.26785-4.6429l1.4286-1.0714-0.80357-2.1428-1.7857-1.4286-2.3214,0.26786-0.89285,0.625-1.1607-0.80357-0.89286-1.3393v-1.3393l-1.875-0.80357h-1.3393l-0.89286-1.0714-0.26786-1.3393z\",\"name\":\"Tambov Oblast\"},\"kn\":{\"path\":\"m44.107,152.55,0,2.2322,0.53571,2.5,2.0536,5.1786,1.4286,3.4821,1.9643,3.6607,2.5,1.0714,3.75-0.44642,1.9643-1.3393,0.625-1.7857-0.44643-4.2857-0.89286-2.8571-1.5179-1.6071-2.4107-0.53572-0.98214-0.71428,0-3.0357-0.80357-1.4286-1.6964-1.6071-1.6071-0.26786-0.35714,1.25-0.625,1.3393-0.625,0.89285-1.4286-0.35714z\",\"name\":\"Kaliningrad Oblast\"},\"ps\":{\"path\":\"m95.268,213.98,0.35714-2.1428-0.26786-2.1429-1.4286-1.875-1.3393-1.4286-0.08929-1.6964,0.98214-0.71429,0.17857-1.6964-0.89286-0.98215-1.25-1.875,0-4.1964,1.5179-0.89285,3.75-2.2322,0.80357-2.4107,0.53572-1.7857,1.875-1.25,2.4107-0.0893,1.3393-1.6071,0.98214-1.6964s1.25-0.625,1.6072-0.80357c0.35714-0.17857,2.8571-0.71429,2.8571-0.71429l1.5179-0.0893,1.0714,0.53571-0.625,1.5179-0.71428,0.89285-0.17857,0.98215,1.6071,0.26785,1.25-1.7857,0.98214-2.0536,1.1607-1.5179,1.6071-0.71428h1.6071l1.5179-1.5179,1.1607-0.625h1.4286l0.98214,0.98214,0.625,1.5179,0.98214,1.6071-0.26786,1.6964-0.89285,0.98214-0.35715,1.3393-0.80357,1.6071-0.17857,1.1607h-1.4286-0.80357l-0.71429-0.53572-0.80357,0.53572-0.625,0.80357-0.53571,1.5178-0.53572,2.1429-0.0893,2.5-0.35715,1.875-1.1607,1.25-1.3393,0.98214h-1.7857l-1.5179,1.3393-0.53571,1.7857-1.3393,0.53572-0.44643,1.0714-0.17857,1.4286-1.7857,0.89286-1.7857,0.80357-0.625,1.6964,0.625,1.5178,0.625,0.625-0.26785,1.4286s-0.0893,0.44643-0.44643,0.80358c-0.35714,0.35714-1.1607,1.3393-1.1607,1.3393l-1.4286,0.80357-2.3214,0.89286-1.0714,0.0893-1.1607-0.89286-0.89286-0.89286z\",\"name\":\"Pskov Oblast\"},\"no\":{\"path\":\"m123.12,188.27,1.5179,1.25,2.1428,0.35714,2.1429,0.17857,1.25,1.1607,2.5,0.53571,2.3214-0.0893,1.0714-0.89286,0.44643,0.625,0.0893,1.7857,2.1429-0.53571,2.3214,0.0893,0.80357,0.80358,0.17857,2.5,0.17857,2.5,0.53572,1.0714,1.3393,0.17858,1.3393,0.44642,0.26785,2.1429,0.71429,1.6964,0.98214,0.80357,0.44643,2.9464,0.0893,2.2321,0.89285,1.4286-0.53571,0.98215-0.71429,0.53571,0,1.6071,0.17858,1.5179,1.4286,1.3393,0.625,0.53571,0.0893,1.9643,0,1.9643-0.17857,1.3393-1.25,0.53571-0.71428-0.26785-0.625-0.80358-0.71429-0.80357-0.17857-1.1607-0.98214-0.80357-0.80358-0.625-2.0536,0-1.5178-0.53572-0.53572-0.35714-1.5178-0.53571-0.71429-0.26786,0-0.44643s-0.26786-1.25-0.26786-1.6964c0-0.44643-0.0893-2.0536-0.0893-2.0536l-0.625-0.98214h-1.7857l-0.89285-0.44643-0.44643-0.98214-0.98215-0.625-0.53571,0.625-0.89286,1.0714-1.6964,1.4286h-2.1428c-0.35715,0-1.5179,0.0893-1.5179,0.0893l-0.71429-1.0714-1.0714-0.71428-2.3214-0.17857-2.6786-0.0893-1.5179-0.44643-1.3393-0.98214-2.3214-0.44643h-2.1428l-0.89286-1.1607-1.25-1.0714-0.53571-0.71429-1.1607-0.71428,0.98214-2.7679,0.71429-0.44643,1.1607-1.5179,1.0714-1.0714,2.0536-0.625,2.5-1.9643,0.625-1.9643,0.0893-3.5714,0.98214-2.5893,1.0714-1.25,1.1607,0.26786z\",\"name\":\"Novgorod Oblast\"},\"tr\":{\"path\":\"m98.661,216.66,3.2143-0.625,2.2321-1.6072,1.3393-1.6071,0.17857-1.4286-0.80357-1.4286-0.26786-1.3393,0.35714-0.89286,1.4286-0.89285,1.6964-0.625,1.1607,0.44643,1.5179,1.5178,1.0714,0.98215,0.98215,0.53571,1.6964,0.17857,2.4107,0.35714,1.3393,0.98215,1.3393,0.26785,3.2143,0.44643,1.5178,0,1.25,0.71429,0.80358,0.71428,1.875,0.35715,1.7857-0.17857,1.875-1.6072,1.25-1.25,0.71429,0.44643,0.625,0.80357,1.4286,0.44643,1.4286,0.17857,0.53571,1.5179,0.17857,2.4107,0.35715,0.80358,1.1607,0.71428,1.4286,0.80357,1.0714,0.26786,1.875,0.35714,0.98214,0.26786,1.25,1.0714,0.44643,1.3393,0.98214,1.0714,0.80358,0.53572,1.7857-0.35715,1.3393,0.0893,1.25,0.71429,1.6071,0.89285,0,1.5179-0.625,1.6964-1.25,1.6071-1.6071,0.44643-1.25,0.98214-1.5179,1.3393-0.89286,1.0714-0.44643,0.71428-0.26785,1.5179-0.44643,1.0714-1.25,1.4286-0.53572,1.4286-0.35714,2.0536-2.0536,1.9643-2.0536,1.3393-1.0714,0.17858-0.53571-0.71429-0.26786-1.7857-1.6964-0.71429-3.8393-0.89286-3.8393-1.6071-3.0357-0.80357-1.5178-1.0714-0.0893-3.0357-0.35714-1.6964-3.3036,0.80357-3.4822,0.26786-1.3393-0.89286-3.4821-4.4643-1.5179-2.0536-3.3036-0.625-2.7679-0.53571-1.4286-1.7857z\",\"name\":\"Tver Oblast\"},\"vm\":{\"path\":\"m137.41,247.73,1.6072,1.7857,2.0536,1.25,1.1607,1.0714,1.3393,0.35714,0.80357,0.89286,0.0893,1.5178-0.89285,1.7857-0.35715,1.0714,1.25,0.625,1.7857,0.26785,1.0714,1.1607,0.17857,1.9643,0.98214,1.875,1.0714,1.25,1.3393,1.25,1.3393,1.3393,1.3393,1.1607,1.7857,1.875,0.89286,1.3393-0.17857,0.98214-0.89286,0.71429l-0.18,0.98,0.53571,0.71429,0.44643,0.71428,0.0893,1.6072-1.7857,0.53571-2.2321-0.0893-1.1607-1.0714-4.4643-0.0893h-5.1786l-1.7857,0.53571-0.71429-1.6964-1.6964-1.9643-1.6071-2.6786-0.80357-4.1964-0.0893-4.1071-0.17857-2.0536-0.44643-0.44643-0.71428,0.44643-1.1607,0.26785-1.4286-1.25-0.26786-2.5893,0.71429-2.0536,1.1607-2.0536,0.44643-1.7857,1.3393-1.0714z\",\"name\":\"Vladimir Oblast\"},\"pz\":{\"path\":\"m127.05,289.96,1.6964,1.7857,2.0536,1.5179,1.25,0.98214,1.6964,0.625,1.25,1.875,0.71429,1.6071,0.26785,1.9643,0.98215,0.98214,1.0714,1.0714,2.6786,0.17857,1.6964,0.0893,0.625,2.1429,0.89286,1.7857,1.6964,0.71429,2.1429,0.26785,1.4286,1.0714,0.625,1.0714-1.5179,0.89286-0.89286,0.98214,0.0893,4.1071-0.26786,3.4822-2.7679,1.25-1.0714-0.0893-0.89286,1.6071-1.9643,0.98215-1.1607-1.7857-0.98214-0.98214-5.9822-0.0893-1.1607-1.875-0.89286-0.89285-3.125-0.71429-0.98214-1.6071-1.25-1.6964-2.1429-0.71429-2.4107-1.3393-1.6071-1.0714-2.5,0.0893-0.71429-1.875,0.26786-2.5,1.1607-0.89285,3.8393-0.80357,0.89285-2.4107,0-3.4821,1.3393-1.6964,1.3393-1.6071-0.26786-2.5893,0-1.9643,1.1607-0.89286z\",\"name\":\"Penza Oblast\"},\"sr\":{\"path\":\"m107.23,308.27-0.17857,3.0357-0.26786,1.25-2.2321,1.1607,1.4286,1.6964,1.0714,3.2143,2.2321,0.71429,0.98215,0.80357,0.89285,1.0714,1.7857,0.625,2.5893,2.5,0.89286,1.0714,0,1.875-1.5179,2.0536-2.4107,2.8571-0.44643,1.25,0.44643,1.6964,0.71429,0.89286,2.1428,1.1607,4.0179,3.9286,1.7857,4.5536,1.25,1.4286,1.25,1.3393,0.26786,1.9643-0.71428,2.5-0.53572,2.4107,0.26786,1.7857,0.89286,1.0714,1.6071,0.44643,1.6964,0,1.6964-1.1607,1.25-1.0714,0.44642-2.6786,0.0893-1.875,2.2321-0.625,3.3036,1.25,1.6964,0.35714,1.6072,0,1.3393-1.5179,0.44643-0.53571,1.6071,0.35714,1.3393,1.0714,1.5178,0.89286,4.6429,0,1.1607-1.1607,1.3393,0.17857,0.89286,0.80358,1.6071-0.53572,0-1.7857-0.89286-1.9643-0.35714-1.3393-0.17857-3.9286-0.0893-2.0536-0.71428-1.25,0.0893-2.8571-0.35714-1.6071,0-2.5-0.80357-1.3393-1.1607-1.6071-2.5-1.0714-1.6072-2.0536-2.5893-0.0893-1.0714-0.35714-1.7857-1.6964-0.625-1.25-0.44642-0.89286-1.7857-2.4107-5.625-0.26786-0.53571-0.17857-1.9643-2.5893-3.125-0.89286-2.2321-2.9464-6.1607-3.3036-2.3214,0-1.0714-1.6964,0.44643-2.5-0.80357-0.35714-3.8393,2.1428-1.5179,0.35715z\",\"name\":\"Saratov Oblast\"},\"mr\":{\"path\":\"m127.59,290.05,1.875,2.1429,2.6786,1.7857,1.7857,1.1607,1.7857,2.7679,0.44642,2.4107,2.0536,2.1429,2.5893,0.0893,1.6071,0.26786,0.89286,2.2321,0.71429,1.4286,2.0536,0.89286,1.7857,0.35714,1.25,0.625,0.53572,0.80358,5.8928,0.17857,2.6786-3.5714,0.35715-0.53572,0.71428-1.3393,0.0893-2.1429-0.0893-1.9643-1.7857-0.98215-0.35714-2.5-0.0893-0.80357-1.6964,0,0,0.17857-0.80357,0.89286-1.3393,0.80357-5.2678,0-2.5893-2.3214,0.17857-3.5714-1.1607-1.0714-0.17857-0.80358,1.0714-1.0714,0-1.6072-2.5893-0.53571-1.7857-0.0893-0.80357-1.25-0.71429-1.6964-1.25,1.1607-2.1429,2.3214-2.4107,1.5178-1.5179,0.98215-2.9464,0.26785z\",\"name\":\"Republic of Mordovia\"},\"cu\":{\"path\":\"m159.11,299.07,1.3393-0.89286,2.9464,0.44643,1.3393,0.44643,1.0714-1.3393,0.26786-1.7857,2.2321-1.1607,2.2321-2.2322,3.125,0.0893,2.6786,0,1.25,1.5179,0.35715,2.9464-0.17857,1.5179,0.35714,1.25,0.71428,1.1607-0.0893,0.71428-1.3393,0.625-4.1071-0.0893-1.3393,0.53571-0.80357,0.80357,0,0.89286,1.1607,0.71428-0.17857,0.89286-1.3393,1.1607-1.7857,1.25-2.1429,0.98214-1.3393,0.44643-1.3393-1.3393-2.5-0.44643-0.98215-0.625-0.98214-1.3393-0.80357-0.80357,0.80357-3.5714z\",\"name\":\"Chuvash Republic\"},\"ul\":{\"path\":\"m158.57,305.32-1.875,2.6786-0.98215,1.4286-4.8214-0.26785-0.80358,0.26785-1.7857,1.4286-0.80357,1.1607,0,2.3214,0,2.5893,0,1.6964-1.7857,1.4286-1.0714,0.26786-0.89286,0-1.25,1.25-1.25,1.0714-0.625,0.26786,0.89286,1.9643,1.6071,1.6071,2.3214,0.44643,1.5178,0.17857,1.25,1.6072,1.5179,0.80357,2.1429,0.17857,0.89286-0.625,0.0893-1.875,0.17857-1.6964,1.0714-1.6964,0.35714-1.3393,1.3393-0.26786,0.80357,0.53571,1.3393,0.625,1.875-0.17857,1.3393-0.98214,1.0714,0.17857,1.6964,1.4286,2.0536,1.875,1.5179,1.6072,0.80357,1.4286,2.3214,0.17857,1.1607-1.5179,2.8572-2.0536,2.0536-1.1607,0.26785-2.3214,0-3.5714-1.875-1.1607-3.6607-0.0893-2.0536-1.4286-0.98214-1.1607-2.5-0.26785-0.98215-1.5179-3.0357-1.5179-0.80357-1.5179-0.625-2.0536z\",\"name\":\"Ulyanovsk Oblast\"},\"ss\":{\"path\":\"m150.98,329.96,1.3393,2.1428,0.71428,2.8572,0.44643,2.8571,0,2.1429,0.625,2.3214-0.0893,2.8571,0.35714,2.4107,0.53571,2.1429,0.625,1.9643,0.71429,0.98214,5.8929,0.0893,3.0357-1.6071,1.25-1.9643,1.9643-0.35715,1.6964-0.0893,2.1429-1.4286,1.4286-0.89286,1.25-0.17857,1.6072,0.625,1.7857-0.17857,0.80357-1.875,1.0714-2.3214,4.375-2.5893,1.7857-1.4286,1.1607-2.0536-0.625-1.5179-0.80357-1.7857-0.35715-2.5-1.1607-1.25-0.71429-2.4107-3.6607-0.26785-2.3214-1.6964-1.4286-0.80357-3.5714,2.3214-1.9643,2.2322-2.4107,0.0893-0.98214-0.98214-2.2321-2.4107-2.4107-1.875-1.0714-1.0714-0.89285,0.26785-1.6072,0.71429-1.6964-0.0893-1.5178-0.80357-1.0714,0-0.625,0.98215-0.53572,1.0714-0.80357,1.5179-0.17857,1.3393,0,0.98214-0.0893,0.71429z\",\"name\":\"Samara Oblast\"},\"ob\":{\"path\":\"m155.89,352.82,0.53571,1.4286,0.71429,1.6071-1.0714,1.6072,1.0714,1.4286,3.0357,0.17857,1.9643-0.35714,2.5,0,0.17857,2.3214-0.89286,2.6786,0.35714,1.0714,3.5714,1.6071,2.1429,1.4286,0.17857,3.5714,0,4.1071,0,1.4286-1.25,0.89286,0,1.9643,0,0.71428,0.71429,1.0714,1.0714,0.89286,1.7857-2.5,0-1.4286,0.89286-0.89286,1.4286,0,1.0714,2.3214-0.17858,1.4286-0.71428,1.25-0.35714,1.4286l0.36,1.43,1.25,0.89286,2.3214,1.25,1.7857,0.89286h1.9643,2.5l1.4286-1.0714,1.6071,0.17857,1.9643,1.0714,0.89285,1.6071,0.35715,1.7857,1.0714,1.25h1.7857l0.89286-0.89285h1.25l1.6071,0.53571,1.25,1.4286,0.53571,2.6786-0.17857,3.5714,1.7857,1.6072,1.4286,0.89285,1.0714,1.6072,1.0714,0.53571,1.6071-0.71429,1.4286-0.17857,1.6071,1.4286v1.25l1.9643,1.7857,1.25,0.71428,2.1429,0.35715h2.6786l1.4286-0.17857,1.25-0.89286,1.25-1.0714,0.89286-0.89286-0.17858-1.25-2.3214-3.2143-1.0714-1.25v-3.75l-0.71429-2.1429-0.17857-2.1429,1.0714-2.3214,1.9643-1.4286-1.4286-1.7857-3.0357-2.8571-1.9643,0.35714-1.4286-0.17857-0.89286-1.25h-2.3214l-1.4286,1.25-1.0714,1.25-0.53572,1.0714h-2.5l-1.0714-2.5-3.2143-0.17858-2.8572-0.35714-0.89285-2.5-1.08,0.33-1.79,0.89h-1.4286l-0.17857-1.0714,1.4286-1.7857,2.5-2.5-0.53-1.78-0.71-0.36v-0.89286l2.5-1.9643,0.35715-1.0714v-2.1429h-1.7857l-2.1429,0.71429-1.6071,0.17857-1.4286-1.9643-0.53571-2.3214,1.25-1.7857,1.0714-0.89286v-1.6071l-0.35714-2.3214,1.0714-0.89285,0.17857-3.0357-1.25-1.9643-1.7857-1.7857-0.17857-1.6071,1.0714-2.8571,1.6072-2.5,0.89285-1.7857-0.53571-1.25-2.1429-1.6071-1.4286-2.1429-1.25-1.4286-1.6071,1.7857-1.4286,1.4286-4.1072,2.5-1.4286,1.9643-0.35714,1.9643-0.53571,0.35714-1.9643,0.17857-2.1429-0.35714-1.9643,0.53571-1.9643,1.4286-2.8571,0.53572-1.0714,0.71428-1.4286,1.7857-2.1429,1.25h-2.5z\",\"name\":\"Orenburg Oblast\"},\"nn\":{\"path\":\"m156.25,271.57,4.2857-0.53571,2.5-1.4286,3.5714-0.71428,2.6786-1.0714,1.25-0.17857,2.3214,1.25,1.7857,1.0714,2.6786-0.17857,1.4286,0,2.6786-1.0714,1.25,0.17857,1.4286,1.9643,1.0714,2.1429,2.5,0.17857,2.5,1.7857,1.0714,1.25,0.89286,2.5,1.25,1.4286-0.17858,1.6071-1.25,0.89286-1.7857,0.17857-0.71429,0.89286-1.6071,0-0.71428-0.89286-1.7857-1.0714-1.6071,0.71429,0,1.6071-1.25,1.4286-1.25,0.53572-2.1429-0.89286-2.1429-1.6071-3.0357-0.89286-1.7857,0-1.0714,0.89286-0.71429,1.7857,0,2.8571-0.17857,2.8572,0.53571,1.0714-1.0714,1.4286-2.3214,1.4286-1.4286,0.89285,0,1.4286-0.35715,0.89285-0.89285,0.71429-2.8572-0.35714-1.0714-0.17858-0.89285,0-0.71429,0.53572-0.38692,0.34215-0.69448-0.12626-0.44194-0.50508-0.50508-3.0936-1.5784-0.12627-1.5784,1.4521-2.2097,0.44194-3.9775-0.25253-2.0834-2.0203,0.1894-3.3461-1.2627-1.389-0.0631-0.75761,1.0102-1.4521-0.0631-1.0733-3.7249-0.63135-1.1996-0.75761-1.0733-2.7148,1.1364-2.336-1.1996-3.3461,2.0203-0.50507,3.283-0.12627,5.9978,0.12627,1.2627,0.88388,2.0203,0.1894,2.0203-0.75761,0.12627-1.5152-0.94702-1.4521,0.63135-1.0733z\",\"name\":\"Nizhny Novgorod Oblast\"},\"ml\":{\"path\":\"m181.51,286.29,2.2728,2.336,2.4622,2.0834,2.7779,1.1364,2.9673,0.0631,2.4622,2.0834,1.5784,1.6415,0.44194,1.3258,0.63134,0.94702-0.3788,1.6415-0.56821,1.1364-0.0631,1.8309-1.5152,1.389-0.88388,0.56821-1.4521-0.12627-1.1996-1.5152-1.1996-0.44194-1.389-0.82075-1.7046-0.12627-0.50508,0.88389-1.7046,0.88388-2.5885,0.12627-1.9572-0.82075-1.1364-0.69448-0.88388-3.0305-0.37881-4.7351-1.1996-1.4521-4.0406-0.0631-1.3258-0.1894-0.63134-1.0733,0-2.0834,0.0631-3.0936,0.37881-1.8309,1.0102-1.0733,0.82075-0.63134,2.5885,0.3788,2.2728,0.88389,2.9673,1.7678z\",\"name\":\"Mari El Republic\"},\"ta\":{\"path\":\"m160.93,308.14,0.0631,1.1364,0.44194,1.0733,0.88389,1.0102,1.5152,0.63134,1.8309,1.4521,1.5152,0.75762,1.389,0.44194,1.4521,1.0733,1.389,1.0102,2.4622,0.44194,1.4521,0.0631,1.7046,0.88388,0.12627,2.2097-0.37881,2.9042,0.44195,1.4521,2.0834,1.1996,1.0733,0.75761,2.9042,0.18941,0.82075,0.69448,0.56821,1.7046,1.3258,2.1466,0.63134,2.5885,0.88389,1.7678,1.6415,1.894,1.389,2.2728,1.6415,1.1364,0.88388,0.88388,1.1996,0.0631,2.9042-1.8309,2.9042-2.7148,0.44194-0.63135,0-1.894-1.0102-1.0102-0.0631-0.88388,1.8309-0.25254,1.2627,0.31567,0.75762,0.56822,1.3258,0.3788,1.6415-0.31567,1.1996-0.69448,2.9042-0.12627,1.5152-0.37881,0-0.94701-0.37881-1.2627-1.1996-1.5784-0.63134-1.2627-1.5152-0.44194-0.88389-1.2627s1.2627-1.0102,1.5784-1.1364c0.31567-0.12627,2.2728-0.75762,2.2728-0.75762l0.0631-1.4521s-1.1364-0.18941-1.389-0.50508c-0.25254-0.31567-0.69448-0.94702-0.69448-0.94702l2.0203-1.3258,2.0203-1.389,0.12626-1.1364-0.69447-0.82075h-1.5152l-0.69448,0.0631-1.1364,1.3258-0.56821,0.69448h-1.894l-0.12627,0.88388-0.12627,1.3258-0.82075,1.1364-1.5152-0.12627-0.75761-1.4521-1.1364-0.94702-0.82075,1.0102-1.7678-0.31567-0.56821-2.2728-1.4521-0.88388-0.63135-1.2627,0.12627-1.3258-1.1364-1.3258,0.0631-2.6516,0.12627-3.0936,0.63135-0.94702-0.25254-1.0102-0.69448-1.0733-0.56821-0.56821-1.0102,0.44194-0.88388,0.37881-1.0102-0.12627-1.0733-0.88389-0.88388-0.82074-1.8309-0.69448-1.4521-0.44195-0.94702,0.94702-1.8309,0.75762-1.8309,0.1894-1.6415-0.31567-1.9572-1.0733-1.389,0.50508h-2.7148l-2.0834,0.0631-1.389,1.1364-0.0631,0.88389,0.69448,0.50507,0.12627,0.82075-0.82075,1.0733-1.5152,1.2627-2.6516,1.0733-1.5784,0.69448-1.1364-0.75762-2.0834-0.82075z\",\"name\":\"Republic of Tatarstan\"},\"iv\":{\"path\":\"m144.26,252.7,2.0203-1.1364s0.94702-0.50507,1.1996-0.50507c0.25254,0,2.5885,0.31567,2.5885,0.31567l2.7148,1.1364,2.3991,1.1364,1.2627,1.1996s1.4521,1.0102,1.7046,1.1996c0.25254,0.18941,1.4521,1.2627,1.4521,1.2627l1.7046,0.63135,1.1364-0.88388h0.88388l0.50508,0.82074,0.1894,1.1996,1.0102,0.75762,1.5152,0.82074,1.0102,0.63135,0.44194,1.0102-0.69448,1.0733-0.12626,0.88388,0.75761,0.37881,0.88388-0.56821,1.389,0.63134,0.69448,0.94702,0.25254,1.2627-0.25254,0.50508-1.894,0.69448-2.9673,0.82075-3.0936,0.50507-2.3991,1.5152-3.4724,0.50508-0.94702-0.12627-1.7678-2.3991-3.5987-3.4724-2.7148-3.3461-0.82075-2.7779-0.88388-1.0102-2.1466-0.44195-0.69448-0.56821,0.50507-1.4521,0.56821-1.3258z\",\"name\":\"Ivanovo Oblast\"},\"yr\":{\"path\":\"m154.11,228.33,1.7678,1.5784,1.9572,0.50507,1.7678,0.50508,1.3258,1.6415,1.9572,1.5784,1.5784,0.0631,1.0733-0.69448,0.82075,0.31568,0.3788,1.4521,0.12627,3.4093-0.0631,2.6516,0.25254,1.5152,0.88388,1.0102,0.56821,0.94702-0.37881,1.0733-1.7046,1.1364-2.7148,1.3258-3.283,2.2097-1.6415,1.0733-3.3461,0.88388-2.4622-0.1894-2.1466-0.63135-2.6516-0.69448-2.1466,0.63135-1.8309,1.0733-1.7046-0.88388-1.4521-1.0102-1.894-1.1364-1.1364-1.1996-0.25254-1.3258,0.56821-1.4521,2.0203-0.88388,2.2097-1.1996,1.6415-2.7779,1.0102-2.9673,1.1996-1.2627,0.75762-2.4622,1.6415-1.8309,1.9572-1.8309,2.7148-1.5152z\",\"name\":\"Yaroslavl Oblast\"},\"kt\":{\"path\":\"m168.7,245,1.389,0.12627,1.2627-0.75762,1.5152-1.389,1.894-0.75762,1.894,1.1364,1.894,1.5152,2.5254,0.12627,0.63135-0.75761,0.75761,0.50507,1.2627,2.1466,2.2728,2.2728,1.5152,1.5152,1.1364,1.894,0.3788,2.2728,1.2627,1.7678,1.5152,1.6415,2.5254,1.389,1.7678,1.5152,1.7678,1.894,2.0203,0.88388,1.894,0.12627,2.0203-2.0203,1.6415-0.3788,0.63135,1.894,1.1364,1.0102-0.12627,1.6415-1.6415,1.5152-0.12627,1.894-0.3788,2.5254s-1.7678,0.75761-2.3991,0.75761c-0.63134,0-6.3134-0.12626-6.3134-0.12626l-3.1567,0.12626-1.1364,1.1364-1.2627,0.50507-2.0203-0.75761-1.5152-0.75762-2.0203-0.3788-1.0102-1.5152-0.88388-1.6415-0.75762-0.63135-1.1364-0.12627-0.88388,0.50508-2.1466,0.75762-3.283-0.25254-1.7678-0.50508-2.0203-1.2627-0.50508-0.50508,0.25254-0.63134v-1.1364l-1.389-1.2627-0.88389-0.50508-0.63134,0.37881-0.38556,0.10695-0.53571-0.35714,0.0893-0.89286,0.71429-0.625,0.0893-0.98214-0.89285-0.71429-1.7857-1.0714-0.98214-0.98215-0.26786-0.98214-0.71428-0.89286h-0.98215l-0.89285,0.625-0.625,0.0893-1.25-0.71429-1.4286-0.80357-1.3393-1.25-1.7857-1.3393-0.69-0.57,1.07-0.71,2.05-0.54,2.3214-0.71428,2.8571-2.0536,3.3036-1.6964z\",\"name\":\"Kostroma Oblast\"},\"le\":{\"path\":\"m123.49,177.57,1.7678-1.6415,1.5152,0,2.2728-1.894,2.5254-0.50507,2.2728,0.63134,2.9042,2.1466,2.7779,1.5152,0.75761,2.5254,0.12627,1.389,1.0102,1.1364,1.1364-0.37881,0.75761-2.0203-0.12627-2.3991-0.88388-1.6415-0.88388-1.894,0.12626-2.0203,1.1364-1.2627-0.25254-1.894-0.75762-1.0102,0-0.37881,1.2627-0.25254,3.283,0.25254,3.5355,1.2627,2.2728,0.12627,1.894,0.12627,1.2627,1.1364,0.63135,1.2627,0,1.7678-0.37881,1.6415-0.25254,2.1466-0.63134,1.7678-2.1466,1.2627-0.75761,1.0102-1.0102,1.894-1.0102,1.1364-1.7678,1.1364-0.63135,1.2627,0.25254,1.1364,1.389,0.75762,2.1466,0.25253,1.0102,0.88389,0.25254,1.6415,1.0102,0.75762,2.1466,0.12627,1.1364-0.50508,3.4093-0.25254,1.7678-0.63134,2.0203-0.25254,1.5152,0.75761,1.0102,1.6415,1.1364-1.2627,1.389-1.7678,0.75762,0.88388,0.50507,2.0203,0.63135,2.2728,2.1466,0.50507,1.2627,0.75762,1.1364,1.0102,0.12626,1.2627,0.12627,1.6415-0.12627,1.7678-1.2627,0.75761-2.2728-0.25254-1.389-0.88388-1.389-0.25254-0.75761,0.88388-1.5152,1.0102-3.0305,0-1.5152,0.3788-2.7779,3.0305-1.0102,1.389-0.37881,2.1466-1.6415,1.0102-1.1364,0.12627-0.3788,1.2627-1.2627,0.63134-0.63135-1.0102-1.1364-1.1364-2.2728-0.12627-0.75761,0-1.1364-3.0305,0-2.9042-1.0102-1.5152-0.88389-1.894-0.12627-1.6415-2.2728-0.88388-0.88388-0.63135s-0.37881-1.0102-0.37881-1.5152c0-0.50507-0.25254-3.4093-0.25254-3.4093l-0.75761-1.1364-2.3991-0.25254-1.389,0.75761-0.75762-0.50507-0.12627-1.2627-0.63134-0.88389-1.0102,0.63135-2.1466,0.3788-2.7779-0.88388-1.5152-0.88388-3.283-0.37881-1.2627-0.88388-1.0102-0.75762,0.63135-1.2627,0.88388-2.1466,0.88388-1.389,0.12627-1.2627z\",\"name\":\"Leningrad Oblast\"},\"ki\":{\"path\":\"m207.59,265.33,1.2627-0.88388,0.12627-2.0203,0-2.0203-1.0102-1.389-0.12627-1.6415,1.5152-0.37881,3.9143,0.25254,2.5254-0.88388,2.6516-1.1364,0.63134-1.389,1.1364-0.63134,2.7779,0.25254,1.389,1.7678,0.12627,2.7779-0.63134,3.0305-1.0102,1.389-0.75761,2.7779-1.894,0.75762-2.0203,0.12626-1.6415,1.7678-0.63134,1.6415-1.0102,0.63134-0.75761,0.88389,0.75761,1.389,1.6415,0.88388,1.0102,1.389-1.6415,1.894,0.12626,1.894,1.1364,0.88389,1.2627,0.50507,0.88388-1.389,0.88388-1.894,2.7779,0,3.1567,0.3788,4.2932,1.2627,1.7678,2.2728,2.1466-0.12627,2.1466-1.6415,1.6415,0.37881,1.2627,1.0102,0.75762,1.894s1.0102,1.5152,1.389,1.7678c0.3788,0.25254,2.5254,1.894,2.5254,1.894l0.25254,1.5152-0.88389,2.0203-2.0203,1.1364-3.5355,0.25253-1.2627,0.63135-1.2627,1.5152-0.25254,1.389,1.0102,1.389,0.12627,1.1364-1.5152,1.1364-0.75762,1.389-0.12627,2.1466-1.2627,1.0102-2.7779,0.12627-1.1364-1.2627-1.0102-2.5254-2.0203-0.12627-1.389-0.3788v-1.894l-2.0203-1.1364-3.1567,0.75761-1.7678,1.389s-1.2627,1.0102-1.2627,1.5152c0,0.50508-0.3788,2.2728-0.50507,2.7779-0.12627,0.50508-1.6415,1.5152-1.6415,1.5152l-2.5254,1.1364-1.894-0.50507-1.2627-1.389-1.5152,0.25253s-0.75761,0.50508-1.0102,1.389c-0.25254,0.88389-0.12627,2.7779-0.12627,2.7779l0.12627,1.894-2.0203,0.63135-3.4093,0.3788-0.25254,1.1364v1.389l-0.3788,1.389-1.7678,0.88389h-0.63135l-0.63134-1.5152-0.50508-0.37881,0.12627-2.5254,0.25254-2.5254,0.50508-1.5152-0.88389-1.6415-0.25254-1.2627,0.75762-2.9042,0.63134-2.5254-1.0102-1.5152-1.6415-2.5254-2.1466-1.5152-0.88388-0.63134-3.9144-0.12627-1.7678-1.2627-1.6415-1.5152-1.6415-1.5152-0.50507-0.50508,0.50507-1.0102,1.2627-1.6415,0.25254-1.0102,1.1364-0.75761,1.5152,0.50507,1.894,1.389,1.389-0.75761,2.1466-0.63135,1.389-1.2627v-1.5152l-1.2627-1.894-0.63135-1.5152s-0.78918-1.1049-0.85231-1.2627c-0.0631-0.15784,0.56821-0.69448,0.56821-0.69448l0.97858-0.63135,0.75762-0.75761s2.2728-0.0316,2.8095-0.0316c0.53664,0,3.1567,0.0631,3.8828,0.0631,0.72605,0,3.7881-0.44194,3.7881-0.44194l1.4521-0.59978s0.12626-1.5784,0.15783-1.7993c0.0316-0.22097,0.47351-2.4938,0.47351-2.4938l2.0203-2.3991z\",\"name\":\"Kirov Oblast\"},\"bs\":{\"path\":\"m211.5,329.86,2.3991-1.6415,2.5254-1.6415,1.5152-0.25254,1.894,2.6516,2.2728,2.2728,2.9042,0,2.6516,2.5254,1.7678,2.5254,1.1364,1.7678,1.7678,0,1.2627,2.1466,2.6517,2.3991,2.2728,1.6415,2.0203,1.7678,1.2627,1.1364,0.88389,1.389-0.37881,1.1364-1.6415,0.63134-0.88388,1.2627,0.25254,1.389,1.389,0.63135-0.63135,1.2627-1.5152,0.50508-1.2627-0.75762-2.3991,0.37881,0,1.0102-1.5152-0.25254-0.50508-0.88388-1.5152-1.0102-4.5457,0-1.1364-0.37881,0-1.2627,1.7678-1.2627,0.12627-1.389-1.0102-0.88389-1.6415-1.1364-2.5254,0.25254-1.0102,2.1466-1.7678,2.6516-0.88388,2.0203,0.50508,3.0305,1.894,1.0102,2.0203-0.75761,1.6415,0.75761,1.0102,2.0203,2.5254,0.12627,2.0203,0.75761,2.7779,0,1.7678-0.50508,1.5152,1.1364-0.63135,1.389-1.894,1.5152-1.2627,1.1364-1.0102,1.389-1.2627,0-1.2627-0.63134-2.1466-0.75762-1.6415-0.3788-1.6415,1.2627-0.3788,1.5152-0.63135,1.389-2.3991,2.6516-1.6415,2.3991-3.9143,3.6618-1.894,1.5152-0.25254,2.0203-0.63134,1.5152-2.9042-0.25254-1.6415,1.7678-1.2627,1.389-0.50507,0.63135-2.0203,0-1.1364-2.0203-0.50508-0.63134-5.4296-0.63135-1.389-2.1466-2.7779,0.88388-1.2627-0.12627,0-0.50507,3.4093-4.4194,0-1.6415-0.88389-0.63134,0-1.1364,1.7678-1.1364,1.0102-1.389,0-2.0203-0.25253-0.50508-1.894-0.12627-2.2728,1.2627-1.7678-1.1364-1.1364-2.3991,1.2627-2.3991,1.0102-1.894-0.25254-2.5254,0-0.75761,0.88389-1.5152,0-3.1567-2.5254-2.9042-0.12627-2.0203,1.0102-2.6516,2.0203-4.1669,2.9042-2.1466,3.9143-3.1567,1.0102-2.1466-0.88389-1.389-0.12627-0.12627,0-0.75761,1.389-0.25254,2.3991,0.75762,1.389,0.12626,1.7678-0.63134,2.6516-0.25254,1.7678-0.12627,0.88388-0.63134,0-1.7678z\",\"name\":\"Republic of Bashkortostan\"},\"cl\":{\"path\":\"m242.18,347.66,1.7678-0.88388,2.7779,0.50507,2.3991,2.1466,2.3991,1.7678,3.0305,1.894,2.9042,0,1.5152,1.6415,1.6415,2.3991,0.75761,1.894-0.63135,3.1567,0,2.7779-0.88388,1.389-1.7678,0.63135-1.6415,1.1364-0.75762,1.2627-2.0203,0.63135-1.894,1.5152,0,1.1364,1.5152,1.5152,2.0203,2.0203,1.1364,2.3991-0.37881,2.7779-0.75762,1.7678-2.3991-0.63135-2.6516-0.50507-3.283-0.37881-2.0203-0.50508-1.5152-1.7678-2.0203-1.7678-1.1364-1.1364-1.1364,0.50508-1.5152,1.1364-0.88388,1.0102,0,1.894,1.6415,1.2627-0.37881,0.75761-2.2728,0.63135v1.0102c0,0.50508,0.75761,2.0203,0.75761,2.0203l2.0203,1.7678,0.12627,1.894-1.5152,0.63134-1.5152-1.5152-1.389-1.2627-2.2728-0.63134-3.283,0.12627-1.5152,0.25253-0.63134,1.2627,1.0102,1.389-0.37881,1.894-1.0102,1.6415-4.5457,0.25254-1.6415-0.88389-1.6415-0.63134,0.50507-2.0203,1.6415-0.88388-0.75761-1.7678-2.0203-2.3991-1.6415-1.0102-1.894,0.12627-1.389-0.63135,0.63134-2.7779,1.7678-2.6516,4.4194-4.1669,3.7881-4.672,1.2627-2.9042,1.389-0.88389,2.5254,0.25254,2.0203,1.0102h2.0203l1.894-2.2728,2.2728-1.894,0.50508-1.389-1.5152-1.2627-2.1466,0.50507h-3.0304l-2.7779-0.88388h-1.5152l-0.88388-1.894-1.389-0.50507-1.7678,0.63134-1.0102-0.37881-0.88389-0.63134-0.63134-1.894-0.12627-1.6415,3.6618-5.6821,0.75762-0.63135,1.7678,0.37881,1.7678,0.88388,0.63134,1.1364-0.3788,0.75762-1.2627,1.1364v1.1364l-0.12627,0.12627,0.75761,0.63135,2.6516,0.12627h2.2728l1.5152,1.0102,1.2627,1.1364,1.1364-0.63135,0.50507-0.75761,2.0203,0.12627,1.7678,0.37881,1.1364-1.2627-0.37881-1.0102-0.75761-0.88388,0.25253-1.5152,1.5152-1.0102,0.63135-1.1364z\",\"name\":\"Chelyabinsk Oblast\"},\"ud\":{\"path\":\"m231.7,302.33-0.12627,1.389-2.0203,2.7779-1.5152,1.389,0.12626,1.389-1.6415,1.0102-1.1364,1.5152-1.5152,2.3991-0.50508,1.894-0.50508,3.1567-2.0203,1.0102-2.2728,0.12627-0.63135,1.1364-0.37881,3.0304-0.12627,1.389-3.0304,2.0203-2.2728,1.389-1.0102,0-1.2627-1.5152-1.7678-0.75762-0.63134-1.2627,1.389-1.1364,2.0203-0.75761,0.50508-1.1364-0.37881-0.50508-1.5152-0.88388,0.25254-0.88389,2.7779-1.7678,1.0102-1.1364-0.50507-1.0102-0.75762-0.63134-2.0203,0.63134-1.1364,1.389-1.5152,0.63135-1.0102,0.25253-0.3788,1.5152-0.63135,0.75762-0.88388,0.25254-0.75762-1.0102-1.389-1.2627-0.75761,0.37881-1.2627,0.37881-0.88388-0.88389-0.63135-1.1364-1.0102-1.0102-0.63135-1.0102,0-1.1364,1.6415-0.88389,1.1364-1.1364,0.25254-2.0203,0.25254-1.0102,3.1567-0.50507,1.6415-0.50508,0.37881-4.4194s0-1.2627,0.63135-1.5152c0.63134-0.25253,1.2627-0.3788,1.2627-0.3788l1.2627,0.63134s1.6415,1.894,2.3991,1.389c0.75761-0.50507,1.894-0.88388,1.894-0.88388s2.3991-1.0102,2.2728-1.6415c-0.12627-0.63134,0.25254-1.6415,0.25254-1.6415l0.3788-1.389,2.1466-2.2728,1.2627-0.75761,2.2728-0.50508,1.6415,0.37881,0.88388,1.1364v0.75761l0.25254,0.63135,1.0102,0.12627,1.6415,0.3788,0.63135,0.50508,0.63134,1.6415,0.75762,0.75761z\",\"name\":\"Udmurt Republic\"},\"pe\":{\"path\":\"M242.06,274.03l-2.28,1.16,0.5,1.5-0.5,3.53,0.5,1.28,1.41,2.41,2.25,1.62,0.65,1.66-1.4,2.12-2.41,1.03-2.87,0.63-1.66,0.87-1.13,1.54,0.5,1.24,0.63,1.38-0.13,1.03-1.9,1.63-0.38,2.4-0.87,1.6-0.13-0.19-1,0.12-1.28,2.5-2,2.29-0.15,1.53-0.88,0.87-2,2.03-1.91,3.41-0.62,3.9-1.28,0.88-2.25,0.38-1.28,0.78-0.63,4.9,2.53,2.66,2.13,2.28,2.53,0.25,2.28,1.5,3.41,4.94,1,0.37,1.28-0.12,1.12-1.25,0.88-1.28,1.03-1.75,1.25-1.66,1.28,0.88,1.5,1.28h2.41l2.03-0.91,0.5-1.75,0.25-1.91,0.87-0.75,0.88-1,0.78-0.5,2.5,2.75h3.69l0.87-1,0.5-1.5,0.25-1.65,0.88-1.25,4.69-0.38,2.15-0.78,0.63-1.5-0.63-0.62-0.12-1.41,1.12-1.38,0.75-1.03v-1.37l-0.5-0.88-0.62-1.03,0.25-1.75,1-1.53,2.03-1.5,3.15-0.5,1.88-1.91,2.28-1.62,2.28-1.66,2.28-1.65,0.88-0.75,0.5-1.25,1-1.78s0.9-1.12,1.53-1.75c0.63-0.64,1.62-1.91,1.62-1.91l1.16-1.37,0.25-1.66-2.41-0.38-2.65-0.75-2.66-1.65-2.75-1.38-2.66-1.28-2.53,0.66-3.15,0.12-3.66-0.9-2.9-1.63-1.63,0.85-0.41-0.22-1.9-1.25-1.38-2.03-1.12-1.13-2.28-0.78-0.13-1.63-1.12-1.28-1.41-1.5-1.91-0.5-2.62-0.25-2.41-0.78z\",\"name\":\"Perm Krai\"},\"sv\":{\"path\":\"m286.13,291.72,1.7678-1.1364,1.1364,1.389,0.88388,2.3991,2.6516,1.5152,2.9042,2.1466,1.2627,2.3991,2.2728,2.7779,0.12627,1.7678,0.63135,2.0203,0.75761,1.5152-0.63134,1.7678-1.894,1.894-0.63135,1.7678-0.25253,4.7982,0.3788,2.7779,0.63135,1.0102-1.0102,2.9042-1.5152,1.7678-0.37881,2.3991,2.0203,1.2627,2.3991,2.0203,0.75761,2.0203,0.12627,2.6516-0.63134,1.6415,0,2.9042,0.75761,2.3991-0.25254,1.894s-0.88388,0.88388-0.88388,1.389c0,0.50508-0.50508,2.7779-0.50508,2.7779l-1.2627,1.2627-2.0203,0.12627-1.1364,0.88388h-3.0304l-1.5152-0.88388-2.1466,0.25254-1.389,1.1364-0.88388,1.389-0.25254,2.9042-0.75761,1.1364-1.1364,1.0102-1.7678,0.50508-3.0305,0.25254-2.0203,0.25254-1.0102,0.88388-1.894-0.37881-1.389-1.1364-1.894-1.894-2.5254-1.6415-1.5152-0.63135-2.2728,0.37881-1.894,0.3788-1.389-0.12626-1.6415-1.389-1.894-2.2728h-2.2728c-0.50508,0-1.6415-0.75761-1.6415-0.75761l-4.672-3.1567-1.6415-1.7678-2.9042-0.3788-1.389,0.12627-0.88389,0.12627-1.2627-1.2627-3.9143-3.283-3.1567-3.0305-0.50507-1.389,2.0203-2.9042,1.389-2.7779,0.75762-0.25253,1.6415,1.1364,1.1364,0.75761h2.7779l1.5152-1.389,0.50507-1.7678,0.12627-1.7678,2.5254-1.7678,1.7678,2.0203,1.2627,0.63134h2.3991l1.6415-1.1364,0.75761-2.0203,0.50508-1.894,3.7881-0.75762,2.5254-0.3788,1.389-1.2627v-1.0102l-0.88388-1.389,1.7678-2.1466,0.25254-1.1364v-1.389l-1.0102-1.6415,1.0102-2.5254,2.1466-1.6415,3.283-0.88388,1.1364-0.75762,8.0812-6.1872,0.88388-1.6415,1.6415-2.7779,2.1466-2.5254z\",\"name\":\"Sverdlovsk Oblast\"},\"ku\":{\"path\":\"m255.69,383.01,2.3991,1.894,3.283,0.88388,4.2932,1.2627,3.1567,0.75762,4.1669-0.50508,2.5254,0.25254,2.9042,1.0102,3.5355,1.1364,3.5355,0.88388,3.283,1.0102,3.4093-0.12627,2.3991-1.2627,3.6618,0,1.0102-1.5152,0-1.894-1.5152-2.1466-1.389-2.7779s-1.5152-0.12627-2.1466-0.37881c-0.63135-0.25254-2.2728-1.6415-2.2728-1.6415l-0.75761-3.1567-1.389-1.7678-2.6516-1.2627-1.5152-1.6415-1.2627-2.2728-1.6415-1.5152-1.389-1.2627-1.0102-1.389,0.50508-2.3991,1.389-1.2627,1.1364-1.894-2.5254,0.37881-3.0305,0.12627-1.389,0.50507-0.75762,0.50508-1.2627-0.37881-2.0203-1.0102-1.7678-1.7678-2.0203-1.389-1.7678-0.75761h-1.2627l-3.0305,0.63134-1.7678-0.12627v1.1364l0.63135,0.88388-0.50508,2.2728v2.2728l-0.25253,2.1466-0.88389,1.1364-2.5254,1.1364-1.389,1.1364-1.5152,1.2627-1.7678,0.88388-0.50507,1.2627,0.63134,1.1364,1.894,1.894,1.389,1.389,0.63134,1.7678v1.894l-0.50507,1.7678z\",\"name\":\"Kurgan Oblast\"},\"ko\":{\"path\":\"m224.63,259.27,2.1466-0.63134,0.63134-0.88388,1.894,0.12627,1.6415,1.894,2.1466,0.25254,2.1466-0.50508,1.5152-1.894,0.50508-1.5152-0.63135-0.88389,0.63135-1.5152,2.1466-1.2627,4.5457-1.894,2.6516-1.1364,0.25254-1.5152-0.50508-2.5254-2.1466-0.88389-3.283,0.12627-2.3991,1.6415-2.3991-0.75761s-0.50508-1.0102-1.2627-1.0102-1.5152-0.25253-1.5152-0.25253l0.50507-3.0305,1.7678-0.37881,1.389-1.5152,0.50508-1.894,2.1466-0.50508,2.2728,0.12627,0.63135-1.7678-0.63135-0.63134-0.63134-2.1466,0.63134-1.389,4.5457-2.0203v-1.2627l-1.0102-2.5254-0.63135-1.6415-1.6415-1.7678-0.63134-1.1364,0.25254-1.6415,1.2627-0.63134,1.7678,0.75761,1.5152,2.1466,1.6415,1.5152,2.2728,1.894,2.6516,1.2627,1.7678,1.1364,0.50508,1.7678,1.5152,1.5152,3.1567,0.3788,1.894,1.2627,2.9042,0.50507,0.88388,1.2627h2.0203l1.0102-0.63134-0.25254-1.5152-0.75761-1.5152,0.50507-1.0102,0.88389-1.5152s0.25253-1.1364-0.12627-1.6415c-0.37881-0.50508-1.1364-1.1364-1.1364-1.1364v-0.88388l2.7779-3.283,3.1567-2.1466,1.894-2.0203,1.0102-0.88388,2.3991,0.63134,3.4093,0.12627,2.5254,0.75762,4.2932,0.50507,2.1466,0.63135,3.283,0.12627,2.3991-0.50508,1.5152,0.12627,0.12627,1.894,1.2627,1.0102,2.1466,2.1466,5.3033,4.672,7.4499,4.672,6.4397,3.7881,5.177,3.0305,5.5558,3.283,2.7779,1.894,2.2728,0.25254h3.283l2.1466-1.0102,2.5254-2.3991,1.6415-1.2627,2.7779,0.25253,2.3991-0.12626,2.0203-0.63135,1.5152-0.88388,1.6415-0.37881,3.1567,0.12627,1.6415,0.25254-0.50508,1.5152-0.88388,1.1364-1.1364,0.63134-0.50508,1.894,1.2627,1.7678,1.2627,1.389,0.12627,1.894-1.1364,1.389-0.88388,0.25254-0.75762,1.389-2.0203,0.25254-2.3991-0.12627-2.1466,0.88388-2.5254,1.389-1.389,1.1364-3.0305-0.12627-2.1466-0.50507h-3.1567-2.0203l-1.0102,0.3788-1.389,1.5152-0.75762,0.88389-2.1466,1.6415-1.5152,0.50508h-2.3991l-2.3991-0.25254-1.5152,0.50508-2.9042,2.0203-2.2728,1.2627-1.5152,1.0102-1.5152,0.3788-1.2627-0.12626-1.2627-1.0102-0.12626-1.894-0.63135-1.389-1.6415,0.88388-1.5152,1.389-1.0102,1.2627-0.88388,0.50508-1.2627,0.50507-0.75762,0.37881-0.12627,1.7678-0.3788,1.7678-0.63135,1.389-0.88388,1.1364-1.0102,1.6415-1.894,1.6415-1.6415,1.389-1.2627,0.75762-2.7779,3.283-1.894,2.6516-1.1364,3.0305-0.50507,1.6415-1.5152,1.6415-2.0203,0.88388-1.5152,0.63134-1.7678,1.0102h-2.2728l-3.1567-1.0102-3.1567-1.6415-4.4194-2.1466-0.75761-0.3788-2.5254,0.50507h-3.283l-3.0305-0.88388-2.9042-1.389-1.0102,0.25254-1.6415-0.12627-1.5152-1.2627-2.2728-2.3991-1.894-0.88388-0.63135-1.5152-2.2728-3.0305-5.8084-1.1364-1.389-0.63134-1.7678,0.63134-0.75761,0.75762v0.75761l0.37881,0.88389v1.6415,1.0102l-0.50508,0.3788-1.389-0.63134-0.88388-0.37881-1.1364,0.25254-1.5152,0.88388-1.5152,0.50508-1.1364-0.25254-0.88389-1.389-0.88388-0.63135-2.2728-0.88388-6.0609-1.1364-1.2627,0.25254-1.1364,1.1364-0.63135,1.5152-1.1364,0.37881-1.6415-1.389v-1.1364l1.0102-1.389,0.50507-0.75761-0.50507-1.0102-1.1364-1.0102-1.1364-1.0102-0.3788-0.75761,1.5152-1.2627,1.1364-2.5254,1.6415-1.0102,1.6415-0.3788,1.894-1.2627,0.88388-2.3991,1.2627-1.2627z\",\"name\":\"Komi Republic\"},\"mu\":{\"path\":\"m217.31,136.92,1.1364-1.5152,1.5152-0.75761,2.9042,0,4.2932,0.12626,2.1466-0.50507,2.5254-1.6415,0.88388-2.0203,0.12627-3.5355,1.5152-3.4093,1.0102-1.0102,4.7982,0,2.3991-0.63134,1.0102-1.2627,1.7678-0.12627,2.3991,1.0102,3.0305,1.894,2.2728,1.894,2.6516,0,2.2728-0.25253,0.25254,2.3991,1.894,0.3788,1.7678,1.0102,0,2.2728,0,1.7678-1.0102,0.63134-1.5152-0.3788-0.75761-1.1364-0.25254-0.63134-0.88388,1.0102-0.25254,0.63135,0.50508,1.1364,1.1364,0.88388,0.50507,0.75762-0.3788,1.0102-1.0102,0.63134,0,0.75762,1.1364,1.2627,0.88388,1.5152,0.88388,1.7678,2.0203,2.1466,0.75761,1.7678,0,1.7678,0,1.1364-0.50507,1.1364-0.25254,2.0203-0.12627,5.5558,0,5.5558-0.75762,1.389-0.25253,1.894,0.63134,0.88389,0.63135,1.0102-0.12627,4.0406,0,3.5355-0.63135,1.389-1.7678,1.1364-0.88389,0.88388,0,1.0102-0.25254,0.88389-1.1364,0.88388-2.7779,0.75761-3.6618,0.12627-3.1567,0.50508-1.6415,0.37881-2.5254-0.50508-2.0203-0.75761-1.894-1.389-1.894-2.2728-1.7678-2.2728-1.1364-1.894-0.63135-2.2728-0.3788-2.3991-1.2627-2.6516-1.1364-2.0203-0.3788-1.6415-0.37881-3.9143,0-1.7678,0-1.389-0.88388-0.88389-0.12627-2.9042,0-2.1466,0.75761-1.5152,0.12627-1.1364,0-1.5152-0.88388,0-0.63135,0.88388-0.88388,1.389-0.75762,1.894-0.25253,0.63135-3.5355,0-2.6516-0.25254-0.75761-1.5152,1.389-2.0203,1.1364-0.75761,0.25254-1.0102-1.7678-2.2728-1.5152-1.7678-1.2627-2.7779-1.2627-1.2627z\",\"name\":\"Murmansk Oblast\"},\"kl\":{\"path\":\"M216.94,136.91l-2.28,1.53,0.12,1.62-1,2.28-1.9,2.04-1.88,0.87-4.31-0.13-0.88,1-2.28,2.16h-2.91l-2.4,0.38-0.13,4.03-0.62,1.9-2.91,0.38-1.87,0.25,0.12,1.4,0.88,1.5-1.78,1.29-1.25,0.5-3.41-0.91-1.66,1.16-0.37,2.9-0.13,4.16-1.25,2.28-2.65,1.62-3.41,1.16-8.72-0.12-3.53-0.91-5.19-0.75-4.28-0.75,0.88,1.87-0.13,1.54,0.07,0.53-0.94,5.65-2.53,1.5-2.03,3.32-2.91,1.87-0.13,1.66,2.66,1.25,1.91,0.75,1,2.4,2.9,0.25,5.07-0.75,1.65-0.9,2.25,0.53,1.78,1.37,1.38-1.62,1.12-0.78,1.78,4.69,1.5,0.62,2.91,1.53,0.06,0.69-0.12,2.69,0.06,1.78-1.63,1.53,1,1.12,2.29,0.5,1.75-0.62,2.53-1,0.62-0.5,1.91,1.5,1,1.9,1.03,1.88,3.16,0.25,3.28-3.03,0.75-1.5,1.25-1.38,2.4-1.28,2.03-1.75,0.5-1.15-0.37-1.25-1.91-0.63-1-1.03,0.13-1.63,1.37-2.4,1.78-1.91,1.66-1.87,1.25-2.16,1.38,0.25,1.78,1.53h1.9l0.88-0.53,0.12-2,1.5-2.03,0.25-1.75-0.25-3.16-0.5-1.53,0.63-1.78,1.4-0.87,1.38-0.63,3.03-2.53,0.5-1.13,0.53-1.28h1.38l3.4-0.62,2.16-1,1.5-1.28v-1.88-3.4l0.25-2.54,1.03-0.87v-1.16l-0.12-2-0.78-1.15-2-0.38-1.41-0.37-0.63-0.88v-0.75l0.63-1.15,1.28-1,0.75-0.63-0.38-1.03-1.65-2.37-1.88-2.29-1.4-2.15-1.75-2.53z\",\"name\":\"Republic of Karelia\"},\"vo\":{\"path\":\"m185.36,208.76c0.12627,2.5254-1.389,5.0508-1.389,5.0508l-1.5152,1.894s-0.3788,1.0102-0.3788,1.7678c0,0.75762,0.12626,1.389,0.12626,1.389s0.63135,1.389,1.894,2.1466c1.2627,0.75761,2.0203,2.7779,2.0203,2.7779l1.0102,1.894,1.5152,1.2627,1.2627,1.0102,1.1364,1.894,1.2627,0.37881,3.1567,0.50508,1.5152,2.2728,1.0102,1.894,1.7678,0.63135,0.25254,0.63135,1.0102,2.2728,1.2627,0.75761,2.6516,0.25254,1.5152,0.12627,0.50507,2.7779,1.2627,2.0203,2.7779,1.389,1.389,0.12627,1.0102-0.63134,1.389,0.12627,1.0102,0.50507,0.75761,1.0102-0.63134,1.5152-0.75762,1.389,0.25254,0.75762,1.2627,1.1364,0.75761,0.50508,1.0102,0.50507,0.3788,0.63135v1.0102l-1.5152,1.5152-2.0203,0.63135-2.0203,0.75761-4.2931-0.25254-1.2627,0.88389,0.25253,1.1364,0.88389,1.2627v2.6516,1.1364l-1.0102,1.1364-0.75761-0.63134-1.1364-1.0102-0.37881-1.5152-1.0102-0.12626-1.6415,1.0102-1.0102,1.0102h-1.7678l-3.0305-1.5152-2.1466-2.1466-2.0203-1.1364-1.894-1.6415-2.0203-2.7779v-1.894l-1.894-2.7779-2.5254-2.2728-1.5152-2.0203-1.2627-1.7678-0.63135,0.75761-1.6415,0.12627-1.6415-0.25254-2.2728-1.894-0.88388-0.50508-1.2627,0.63135-2.7779,1.7678-0.63135,0.37881-1.2627,0.12627-0.88388-0.50508-0.50508-1.2627-0.63134-1.894,0.25254-4.0406-0.50508-2.5254-0.50508-1.2627-1.2627,0.12627-1.2627,0.37881-0.88388-0.25254-1.389-1.2627-1.6415-1.7678-4.0406-1.0102-1.2627-1.1364-0.50508-1.0102,0.63135-2.0203-0.50508-0.88388-1.0102-0.75761-1.1364-0.63135-1.894-0.37881-0.25254-0.12627,0.50508-2.7779-0.50508-1.6415-0.63134-1.2627-0.88388-0.88389-0.37881-0.50507-0.12627-1.0102-0.25254-1.5152,0.63135-0.88388,0.75761-0.88388,1.389-0.25254h1.6415l0.88388,1.2627,1.0102,0.88388,1.1364-0.50507,0.25253-1.1364,1.2627-0.25254,1.1364-0.63135,0.75761-1.1364,0.12627-1.5152,3.283-3.6618,1.2627-0.88388h1.7678l2.0203-0.37881,1.389-0.75762,0.88388-0.63134h1.1364l1.5152,0.88388h1.2627l0.88389,0.75762,0.50507,0.88388,1.389,0.63134h1.1364l1.389-0.3788,1.5152-0.50508,1.1364-0.37881,0.63135-0.25253,0.88388,0.12627,1.0102,0.88388,1.2627,1.6415,0.50507,1.2627z\",\"name\":\"Vologda Oblast\"},\"ar\":{\"path\":\"M391.06,151.03l-3.56,1.06-2.16,0.91-3.56,0.19-1.59,0.87s-1.26-1.07-1.97-1.25c-0.72-0.18-0.91,1.1-0.91,1.1l-1.78,2.65-2.69,1.63-3.03,0.87-2.31,1.78s-2.15,0.37-3.22,0.72c-1.07,0.36-2.5,0.19-2.5,0.19l-1.59,0.72,1.06,1.78-2.16,1.25,0.38,0.72,1.25,1.44,1.78,1.59,1.78,1.78,0.91,1.63,1.4-0.72,0.91-1.97,2.16-0.72,1.25-0.53,1.93-0.19,0.91-1.59h1.97l1.25,0.87,1.59-1.25,1.1-1.25,2.65-0.15,0.72-0.57,3.41,0.72,1.78-1.06,0.34-1.44,2.69-0.34s1.07-0.01,2.5-1.44l0.72,1.06,2.84-0.68s1.98-0.19,2.69-0.19,3.03-0.38,3.03-0.38h2.31l2.35,1.25,1.78,0.91,1.25-0.72,0.72-0.87,4.28,1.06,1.97-1.44,3.22,0.19,4.09-0.72,1.25-1.59,1.97-2.88s-1.26-0.89-1.97-1.25-2.69-1.44-2.69-1.44l-3.22,0.57-4.43,1.59-4.32-0.91-2.5-0.15-3.18-0.72-1.63-0.91-1.59-1.78-1.44,0.72-1.97,1.06-2.5-0.15-3.22-0.91-2.5-0.72zm-35.53,14.47l-2.5,0.53-1.78,1.63-2.5-0.38s-1.44-1.06-1.44-0.34v1.78l0.72,1.59-2.12,1.25-2.88,1.1-1.06,1.25h-2.16l-0.72-1.1-1.59-0.87-2.69,2.12-0.15,3.03,1.93,2.69,1.44,2.16s1.26,2.14,0.91,3.03c-0.36,0.89-4.28,2.5-4.28,2.5l1.06,2.5,1.25,1.59v1.97l2.31,0.53,2.88,1.97,2.12,2.31,1.97,0.38s1.06-1.07,1.06-1.78c0-0.72-0.15-4.48-0.15-5.38,0-0.89,1.59-8.37,1.59-8.37l0.34-1.44,4.13-2.69s0.88-1.07,2.31-1.97c1.43-0.89,4.66-3.03,4.66-3.03l1.78-1.4s0.71-1.64,0-1.82c-0.72-0.17-1.62-0.53-2.16-1.25-0.53-0.71-3.03-2.65-3.03-2.65l-1.25-1.44zm-132.28,14.34l-0.63,0.63-2.28,0.25-0.87-0.13-1.78,0.91v1.38l-0.63,1.65-1.15,0.75-0.13,1.38,0.91,0.78,0.87,0.87-0.12,1.25-1.25,1.28-1.66,1.5-1.65,0.13-1.38-1-0.62-1.53-1.41-2-1.25-1.03-2.03,0.53h-1l-2.41-1.66-1,0.38-1.66,2.15-1.37,2-1.66,1.78-1.25,2.66,0.38,1,1,1.28,1.78,0.25,0.12,1-0.12,1-2.78,2.41-2.16,0.87-1.87,3.03-2.53,2.53-2.91,0.5-1.13,0.13-0.5,0.91-0.28,1.87-0.87,2.16-1.75,2.03-0.13,1.87,1.25,2.79,1.5,1.28,2.04,3.53,3.78,4.15,1.28,0.75,3.15,0.38,0.38,0.65,1.37,1.38,1.66,2.53,1.38,0.5,0.5,1.66,0.9,1.5,3.28,0.5,1.63,0.25,0.78,1.4,0.37,2.13,0.75,1.15,2.41,0.88,1.5,0.75,1.28-0.5,1.13-0.25,1.37,0.75,0.91,1.66-1.03,1.25-0.13,1.53,0.66,1,1.25,0.75,1,1.03,1.03,0.62,0.75-0.37,1.25-0.25,1.41,0.5,1,1.37,0.5,0.91,0.24,2,0.26,1.03h0.65l0.88-0.16,0.87-0.5,0.63-0.37h1.03l0.75,0.75,0.62,0.91,0.88,0.25,1.4,0.25,1.88-0.5,1.41-0.5,1.37-1.79v-0.87l-0.37-0.66-0.26-0.5,0.26-1,0.5-0.5,2.78-1.28,2.4-1,1.66-1.12,1.87-0.78,0.5-0.75,0.13-1.38-0.75-1.53-1.13-0.87-2.15-0.13h-1.5l-1.53,0.5-1,0.75h-1.28l-0.63-0.12-1-1.13-1.53-0.37-0.75-0.38,0.25-1.53v-1.13l1.66-0.5,0.74-0.78,0.76-0.87,0.62-1.63,0.53-0.37,1.5-0.53,1.78,0.25,1-0.5-0.12-1.38-0.5-0.87-0.5-1.66,0.25-0.88,0.87-0.62,1-0.53,1.41-0.63,1.37-0.75,0.38-0.75v-0.5l-0.88-1.9-0.75-1.41-0.9-1.62-1-0.75-0.63-1.28,0.38-1.88,0.62-0.5h1.28l0.88,0.38,1,0.87,1.41,2.16,2.65,2.37,1,0.91s1.65,0.49,2.28,0.75c0.63,0.25,1.38,1,1.38,1l0.5,0.62,0.37,1.03,0.53,1,1,0.63,1.38,0.37h1.41l1.12,0.53,0.88,0.88,2.03,0.5h1.37l0.28,0.88,1,0.53,1,0.25,0.88-0.54,0.78-0.74-0.13-1.26-1.03-1.03,0.38-0.87,0.78-1,0.37-1.53-0.25-1-1.15-0.75-0.13-1.28,0.91-0.88,3.15-3.28,1.88-1.12,1.91-1.79,0.25-1.25-0.63-0.5-1.65-0.9-1.63-1-2.16-0.25-1.25,0.62h-1.4l-1.5-1.12-1.03-1.78-0.75-1.75-1.5-3.16-1.41-2.28-0.75-1.41-0.88-2.25-0.12-1.15-2.41,0.25-0.75-0.63-1.53-1.12s0.25-0.5,0.88-0.5,1.02-0.41,1.53-0.66c0.5-0.25,0.25-0.87,0.25-0.87s-0.37-1-0.88-1.76c-0.5-0.75-0.77-0.77-1.28-1.15-0.5-0.38-0.75-1.75-0.75-1.75l-1.25-0.41-2.03-0.5-1.66,0.13-1.5,0.53-1.9,0.12-0.88-0.65-1.62-1-2.03-0.13h-2.78-2.53l-1.63,0.75-0.91,0.75-0.37,1.66-1.13,1.37-1.12,2.04-1.28,0.87h-2.41c-0.63,0-1.75-1-1.75-1l-1.03-1c-0.51-0.51,0-2.03,0-2.03s0.13-1.53,0-2.16-1.5-1-1.5-1l-2.03-0.87s1.65-0.78,2.16-1.16c0.5-0.38,0.37-1,0.37-1v-2.28c0-0.63-0.25-2-0.25-2l-0.75-1.91zm110.16,1l-0.19,1.1,0.53,1.78,1.44,0.72,0.53-0.72v-1.63l-0.38-1.25h-1.93zm-28.22,6.19l-2.35,0.78-1.4,2.07-2.88,1.43-0.25,1.07,1.78,1.43,2.13,0.97,3.22-0.44,3.5-0.9,0.25-1.6-0.78-1.96-1.1-1.88-2.12-0.97z\",\"name\":\"Arkhangelsk Oblast\"},\"tu\":{\"path\":\"m299.02,389.7,2.0536,0.80357,2.1428,1.1607,1.6072,1.3393,1.6071,1.5179,1.7857,0.71428,2.3214,0.17858,0.89286-1.0714,1.6071-1.875,0.53572-2.3214,0.625-2.1429,2.2321-1.7857,1.875-0.44643,1.25-2.5,1.6964-1.0714,2.9464,0.26786,1.6071-1.6072s0.625-2.3214,0.53571-2.6786c-0.0893-0.35714-0.80357-2.5893-0.80357-2.5893l-0.89285-1.875-0.625-3.3036-0.71429-2.2322v-1.7857l1.5179-1.9643,2.2321-2.5,1.4286-1.4286,3.125-0.26786,0.35714,1.4286-0.89285,1.6071-1.6964,1.6964-0.17857,1.25,2.5,0.35714,4.0178,0.35714,1.9643,1.6072,3.0357,1.7857,1.5179-1.25,2.9464-0.17857,2.1429,1.4286,3.3928,1.0714s2.5-0.98214,2.9464-1.1607c0.44643-0.17857,3.5714-0.44642,3.5714-0.44642l0.89286-0.98215-0.53572-1.0714-1.6964-1.25-2.9464-2.2321-1.0714-1.4286s-1.6964-0.44643-2.3214-0.44643-2.6786-0.80357-2.6786-0.80357l-0.17857-2.6786-0.26786-2.4107-1.3393-1.3393-0.44642-2.2321-0.53572-3.5714-0.35714-0.89286-2.4107-2.7679-1.1607-0.71428s-2.6786-0.26786-2.9464-0.26786h-5.0893l-0.98215-0.26786s-0.625-1.5178-0.625-1.875c0-0.35714-0.98214-1.5178-0.98214-1.5178l-1.875-0.35715-1.25,1.25-2.4107,1.875-2.1429,0.89286h-3.0357l-4.6428,0.0893-2.9464,0.26785s-1.4286,0.53572-1.7857,0.625c-0.35714,0.0893-4.375,0.0893-4.375,0.0893l-3.0357-0.0893-1.4286,0.35715-0.89286,1.5178-0.53571,2.3214-0.89286,1.3393-2.3214,0.71428-1.6071,0.53572-1.5179,0.35714-1.7857-0.17857-1.3393-0.625-1.4286,0.17857c-0.35714,0.17857-1.6964,1.0714-1.6964,1.0714l-1.1607,2.1429-0.35715,2.4107-1.6071,2.3214-2.1429,2.5893-0.98214,1.5179,0.26786,1.25,0.71428,1.3393,1.5179,1.25,1.25,1.6071,1.6964,1.875,1.0714,1.6964s3.0357,0.98214,3.0357,1.5179c0,0.53571,1.6964,2.9464,1.6964,2.9464l0.625,1.875,1.6071,1.4286,1.875,0.71428,1.0714,0.80357,1.4286,2.3214,1.0714,1.4286v1.6072z\",\"name\":\"Tyumen Oblast\"},\"ne\":{\"path\":\"m260.27,198.54,1.6071-0.89286,1.4286-1.1607,2.0536-1.0714,1.1607-1.25,0.625-3.3929,1.1607-1.6071s1.4286-0.80358,2.4107-1.0714c0.98215-0.26786,2.3214-0.26786,2.6786-0.26786,0.35714,0,1.5178-0.98214,2.0536-1.5179,0.53571-0.53571,3.0357-2.5,3.0357-2.5l0.71429-1.0714v-2.2321l1.25-1.9643s0.89285,0.17857,0.98214,0.625c0.0893,0.44642,0.26786,1.5178,0.625,1.6964,0.35714,0.17858,1.875,1.4286,1.875,1.4286l1.6964,1.1607,0.98214,0.89286-0.0893,1.3393-0.625,1.4286-0.44643,1.7857v1.6964l-0.26786,1.0714-0.44643,0.80357-0.26786,1.25-1.25,0.71428-1.3393-0.625-1.25-0.98214-0.625-0.80357-2.3214-0.53572h-3.0357c-0.44643,0-2.1429,1.1607-2.1429,1.1607l-0.80357,1.4286,0.17857,1.0714s0.53571,0.89286,0.625,1.25c0.0893,0.35714-0.71429,1.1607-0.71429,1.1607l-0.89285,1.6072s-0.26786,1.1607-0.0893,1.4286c0.17857,0.26785,0.625,0.80357,1.1607,1.25,0.53572,0.44643,1.875,1.5178,2.1429,1.6964,0.26786,0.17857,1.875,0.89285,1.875,0.89285s2.3214,0.17857,2.8571,0.17857c0.53572,0,1.9643-0.26785,1.9643-0.26785s1.5179-0.98215,1.875-1.1607c0.35714-0.17857,1.9643-1.1607,1.9643-1.1607s1.0714-0.44643,1.4286-0.35714c0.35714,0.0893,1.3393,0.98214,1.3393,0.98214l2.3214,0.17857s0.35714-0.44643,0.71429-0.80357c0.35714-0.35714,0.53571-0.71429,0.98214-0.35714,0.44643,0.35714,1.875,1.3393,1.875,1.3393l1.7857,0.44643h5.0893l2.5893,0.0893s0.80357,0.80357,1.25,0.89285c0.44642,0.0893,3.3928,0.53572,3.3928,0.53572l1.5179,1.4286,0.71429,1.9643,1.1607,0.17858,0.71429-1.5179,0.89285-1.0714,1.875-0.17857,0.89286,0.53571,2.1429,0.17857,2.5893,0.44643-0.44643,0.80357-0.98214,0.80358-1.6964,0.625-0.80357,0.98214-0.71428,0.98214-1.6964,0.71429-0.26786,1.0714,1.3393,0.98214,1.25,0.53571,0.625,2.0536,0.71428,0.35715,1.6964-0.80357s1.3393-0.89286,1.6071-0.89286c0.26786,0,3.3036,0.53571,3.3036,0.53571l2.6786,1.3393,1.5178,1.3393,1.4286,0.89286,4.4643,0.17857,0.71429,0.71429,1.5178-0.26786,2.5893-0.35714,1.7857-1.3393,0.625-1.7857s0.53572,0.625,0.53572,1.1607c0,0.53572-1.6964,2.7679-1.6964,2.7679l-0.71429,1.7857v1.0714l-1.1607,1.1607-0.89286,0.625-0.44643,0.98214,0.44643,0.80357h1.4286l0.80357-1.6071,0.17858-0.53572,1.5178-0.0893,1.5179,1.25,2.3214,0.35714,1.1607-0.89286,1.3393-1.1607,0.53571-0.89286-0.71428-1.0714-0.35715-1.4286,1.5179-1.1607,0.71429-1.875-0.53572-1.6964-1.25-0.80357-0.71428-3.3929-0.26786-3.125s-0.26786-0.89286,0.0893-1.25c0.35714-0.35714,2.2321-1.6964,2.2321-1.6964l1.3393,0.17857,1.1607,1.4286,1.0714,1.9643,0.35714,2.1429-0.89286,3.3036,0.89286,1.0714,2.8571,2.4107,2.7679,2.8572,3.3929,2.5893,2.1428,3.3036,1.6964,3.3929,0.80357,1.875,0.17858,1.6071-1.0714,1.1607-0.98215,2.0536-0.98214,1.5179h-2.5c-0.44643,0-3.6607-0.17858-3.6607-0.17858l-2.1429,0.98215-2.7679,0.71428h-3.0357l-1.7857-0.17857-2.4107,1.875-3.0357,2.4107-1.6072,0.53571-2.7678-0.0893-2.0536-0.53571-4.2857-2.4107-23.036-13.929-7.6786-6.875-1.25-1.1607v-1.3393l-0.98214-0.625-2.4107,0.625-5.0893-0.44642-5.625-0.98215-5.1786-0.80357-3.125-0.26786-4.1071-2.3214-2.0536-0.44643-1.7857,0.625-1.7857-0.26786-1.5179-1.7857-4.2857-8.4822-0.98215-2.4107z\",\"name\":\"Nenets Autonomous Okrug\"},\"om\":{\"path\":\"m358.39,368.89,0.71428,2.5-1.25,1.6071-1.25,1.9643,0.53572,1.6071,0.71428,1.9643-1.25,1.9643s-1.0714,1.25-1.0714,2.1429c0,0.89286,0.17857,3.0357,0.17857,3.0357l1.7857,1.6072,0.35714,2.3214-0.53571,3.3929-1.9643,0.89286-1.25,1.6071,0.71429,2.3214-0.35715,1.9643-3.9286,0.17857s-1.4286-0.89286-2.3214-1.0714c-0.89285-0.17857-3.3928,2.8571-3.3928,2.8571l-2.5,2.1429-0.89286,4.2857,0.53571,0.89286,1.9643,2.1429,0.35714,2.6786-1.6071,2.6786-1.0714,1.7857-0.17857,3.0357-2.5,2.1429s-2.3214,1.0714-3.0357,1.0714h-4.8214l-1.6072-0.71428c-2.1428,1.4286-3.75,0-3.75,0l-1.6071-0.71429-1.9643-0.35714h-1.0714l0.35714-1.7857,1.7857-1.0714,0.71429-1.4286-2.3214-1.25-2.1429-2.3214-1.9643,0.89285-0.89286-0.71428v-3.75l-1.4286-0.89286-2.8571,0.35714-2.8572-0.89285-0.89285-0.53572-0.17857-2.1428,2.1428-2.6786,0.71429-2.3214,0.35714-2.6786v-4.1071l0.71429-2.1429,1.4286-3.9286,1.6071-2.5,2.3214-0.53571,1.0714-1.25,1.0714-1.7857,1.6071-0.89285h2.6786l1.6071-1.4286,0.89286-3.9286-1.4286-3.2143-0.71429-3.0357-1.25-3.3928,0.35715-1.6072,4.4643-4.6428,1.0714-0.89286h2.6786l0.17857,1.6071-1.25,1.6072-1.7857,1.25-0.17857,1.4286,1.4286,0.35714,3.2143,0.35714,2.3214,0.17857,2.1429,1.4286,1.9643,1.4286,1.0714,0.35714,1.0714-0.71429,1.9643-0.35714,2.3214,0.35714,3.5714,1.6072h2.5l2.1428-1.0714h2.1429z\",\"name\":\"Omsk Oblast\"},\"ht\":{\"path\":\"m329.64,260.32,0,3.75-0.53572,3.2143-1.6071,2.3214-2.3214,2.3214-0.89286,1.25,1.9643,1.9643,1.7857,2.3214,5,1.9643,4.8214,0.17857,3.5714,1.4286,2.3214,2.6786,0,1.4286-2.1429,1.7857,1.4286,1.4286,2.3214,2.8572,1.9643,1.0714,2.1428-1.0714,1.7857-0.89286s1.6071,0.71429,1.9643,0c0.35715-0.71429,0.89286-2.1429,0.89286-2.1429l1.6071,2.1429,1.4286,2.8571,1.9643,1.6072s0.35714,2.1428,0.35714,2.8571v4.6429l1.9643,3.3928s0.35714,0.17857,0.71429,0.89286c0.35714,0.71429,0,2.1429,0,2.1429l1.0714,1.25,2.5,0.53571,3.75,0.71429,1.4286,0.89285s2.8571,2.1429,3.5714,2.6786c0.71429,0.53571,1.25,1.6071,2.1429,1.9643,0.89286,0.35714,3.5714,0.53572,3.5714,0.53572l2.8571,0.35714,0.89286,1.0714s0.35714,1.6071,0.71428,2.6786c0.35715,1.0714,1.4286,1.7857,1.4286,1.7857l3.0357,0.17857,1.7857,0.53572,0.35715,1.9643,0.35714,1.4286,1.0714,2.5c1.9643,0.17857,2.5,0.17857,3.5714,0.17857s3.3928,1.0714,3.3928,1.0714l1.9643,0.71428,2.8571,0.35714,2.8572-1.0714,3.2143-1.9643,3.0357,0.53571,1.9643,2.6786s0.35714,1.7857,1.0714,2.1428c0.71429,0.35715,2.8571,0.53572,2.8571,0.53572l2.3214,1.6071,0.71429,2.3214,1.9643,0.71428,2.6786-0.89285,1.9643,1.6071,1.0714,3.0357v2.3214l-0.35714,1.6072-0.53572,1.9643,3.0357,1.9643,2.5,1.7857,0.35714,2.3214v1.0714l-3.75,1.7857-2.6786,0.53572-3.2143,0.17857-3,0.15-1.61-1.07-1.7857-0.71428-2.3214,0.35714-2.3214,1.6071-2.6786,1.0714-2.1429-1.9643s-2.8571-0.35714-3.5714-0.35714c-0.71429,0-2.3214-1.7857-2.3214-1.7857l-0.89286-1.25-3.9286,0.17857h-3.5714l-1.6071-2.5s-1.25-0.89286-2.1429-0.89286c-0.89286,0-4.4643-1.25-4.4643-1.25l-2.5-2.3214h-1.25c-0.71428,0-2.3214,1.25-2.3214,1.25l-2.5,2.1429-1.7857,2.6786-2.8571,2.5-1.6071,3.3929-4.4643,1.6071-3.5714,0.89286-0.35714,2.1429-0.71429,2.1428-2.6786,1.25h-2.8571l-5.8929-5.5357-3.9286-0.89286-1.0714-1.4286-0.53571-4.1071-1.0714-1.25-1.0714-5.3572-0.53571-1.7857-3.5714-3.2143h-5.5357l-3.0357-0.35714-1.9643-2.8571-1.6071-0.53572-4.4643,3.0357-3.3929,0.71428h-5.1786l-5,0.71429-4.2857,0.53571h-3.5714l-1.4286-0.17857-0.53571-2.8571-0.35714-3.2143,0.89285-3.2143-0.89285-3.2143-2.3214-2.1428-1.0714-0.89286-1.0714-1.0714,1.25-2.6786,1.4286-2.3214-0.17857-2.1429-0.71429-3.2143,0.71429-5.5357,1.4286-1.7857,1.4286-2.1429-0.71428-2.3214-1.0714-3.5714-1.9643-2.6786-2.3214-3.3928-3.3928-2.1429-1.7857-1.9643-1.0714-2.6786,3.3929-2.1429,1.6071-2.6786,2.3214-4.8214,2.1429-2.6786,2.5-1.9643,3.5714-3.3929,1.6071-1.7857,1.7857-3.3929-0.17858-1.7857,0.89286-1.0714,2.1429-1.0714,1.4286-1.9643,1.6071-1.0714,1.25,0.17857,0.89286,2.3214,0.35714,1.0714,1.4286,0.35714,2.5-0.71428,3.0357-1.6071,1.4286-1.25,1.25-1.0714,2.5-0.53572z\",\"name\":\"Khanty–Mansi Autonomous Okrug\"},\"ya\":{\"path\":\"m366.25,234.25,1.4286,2.6786,1.6071,1.7857,1.6072,2.6786,1.0714,3.0357,0.89286,2.8572,3.0357,0.17857,1.7857-1.6072,1.4286-1.25-0.53571-3.2143s-0.89286-1.4286-0.53572-2.3214c0.35715-0.89286,1.7857-2.5,1.7857-2.5v-2.3214l-2.1429-1.6071-1.25-2.5s0.71429-1.6071,1.4286-1.9643c0.71429-0.35714,3.75-2.3214,3.75-2.3214s1.6071-3.75,1.9643-4.4643c0.35714-0.71429,0.35714-4.8214,0.35714-4.8214l0.89286-1.4286,7.5-2.1429,4.8214-3.5714,5.7143-6.0714,3.2143-2.1429,2.1428-0.71429,1.7857,2.3214,3.3928,0.35714,1.7857,1.25,1.0714,2.6786,0.17857,1.7857-0.89286,3.75-2.1429,2.6786-2.3214,2.8571-3.0357,1.6072-1.25,1.0714-0.35714,1.9643,1.0714,2.1429,0.17857,2.8571-0.89286,2.8571-2.1429,2.6786-1.7857,3.2143-2.6786,4.4643-1.25,3.5714-0.89286,2.1429-0.17857,2.5,0.35714,2.6786,0.71429,2.3214-0.71429,1.4286-3.0357,2.1429-1.0714,3.2143-0.89286,3.2143h-3.2143l-2.3214,1.25-2.1429,3.3929-3.5714,0.53571-2.3214,1.25-1.4286,1.4286h-3.5714l-1.4286-1.0714-1.0714-2.6786-0.71429,0.53572v1.6071l-1.9643-1.4286-0.71428-1.9643-1.0714,0.71429-0.17857,1.9643,1.7857,2.1428,2.5,2.1429,2.5,1.25,3.2143,1.0714,2.1429,1.25,2.1428-0.89286,3.5714-1.7857,3.0357-0.71429,3.75-1.0714,2.3214-3.0357,3.2143-2.6786,3.3929-1.6072,2.1428-1.7857-0.17857-2.1429-0.89286-2.3214-0.17857-1.7857,2.1429-2.1429,4.2857-0.89285h3.3929l1.4286,1.4286,1.25,3.0357v2.8571,3.0357l-1.6071,1.4286-1.25,2.5,0.17857,3.5714,1.7857,1.25,3.2143,0.71428,2.1429,2.8572,1.9643,3.2143,0.53572-0.71428-0.53572-4.1072-2.5-3.2143-3.75-1.0714v-2.8571l2.3214-3.0357s1.7857-0.35714,1.9643-1.0714c0.17857-0.71428,0.17857-3.5714,0.17857-3.5714l-0.89286-3.9286-2.6786-2.6786-2.6786-3.2143-0.89286-1.4286h-2.1428s-0.53572,1.25-1.4286,1.25c-0.89285,0-2.6786-1.25-2.6786-1.25l-1.6071-1.0714-0.53571-2.5,1.4286-3.75,2.3214-3.2143,2.1428-2.6786,3.0357-1.25,0.17857-4.4643-0.17857-3.0357v-3.0357l0.17857-2.3214,1.7857-2.3214,1.4286-1.4286,2.1429-0.35715,3.2143-0.53571,2.3214-2.5,1.7857-1.0714,1.25,2.1429-1.9643,2.3214-0.89285,1.4286-1.0714,4.4643-1.25,2.5,1.25,1.7857,2.6786,2.1429h2.8571l1.4286,2.1428,2.3214,2.5,1.7857,0.35715-1.4286-2.1429v-2.5s-1.25-1.25-1.9643-1.6071c-0.71429-0.35715-3.5714-2.8572-3.5714-2.8572l-1.25-3.5714-0.17857-1.4286s1.9643-0.71428,2.6786-0.71428c0.71429,0,3.2143,0.89285,3.2143,0.89285l0.89285,1.7857,1.6072,0.17857,1.25-0.71429-0.35715-1.9643,0.17858-1.9643,1.4286-0.35714,1.6071,0.71429,1.7857,1.4286,1.25,1.0714,0.89286,1.7857-0.35714,1.7857-2.3214,2.5-3.0357,1.25,1.0714,1.4286,2.6786,2.1428,0.35714,2.8572,0.17857,3.3928-0.71429,2.6786-2.5,1.4286-2.6786,1.4286-3.5714,1.7857-2.1428,2.1429,0.35714,2.6786,1.4286,2.5,1.25,2.5,1.6071,1.0714h3.3929,2.5l1.7857,1.6071,0.53571,3.0357,0.17857,3.3928v2.8572l-1.9643,3.2143-1.7857,2.5h-2.6786l-0.71429,0.53572,0.53572,1.9643,0.71428,1.7857-0.53571,2.5-0.89286,1.25,2.3214,3.3928,0.53572,1.7857,0.35714,1.7857-1.25,1.7857-1.0714,1.25,0.89286,2.1428-0.17857,2.5-1.6072,1.6072,1.6072,1.7857,2.1428,1.9643,1.6072,1.4286-0.17858,3.3928-1.4286,2.3214-0.17857,2.6786,2.3214,2.1429,4.6429,0.89286,0.89285,1.4286-1.4286,2.1429-0.53571,3.3928-0.89286,2.3214-2.6786,1.4286s-0.89286,0.53572-1.6071,1.0714c-0.71429,0.53572-1.7857,2.8572-1.7857,2.8572l1.9643,1.7857,0.17857,2.3214-1.4286,2.1429-1.25,2.5-2.6786,2.3214-2.8572,2.8572-0.89285-1.7857-1.6072-2.1428-1.7857-1.0714-1.9643,0.71428-1.9643-0.71428-0.71429-1.6072-1.25-1.25-2.5-0.89285-2.1428-0.89286-0.71429-1.6071-0.89286-1.7857-1.4286-1.4286-2.8571-0.17857-2.5,1.4286-2.5,1.0714-2.6786,0.17857-4.1072-1.6071-3.5714-0.35714-2.1429-0.17858-0.89286-1.9643-1.0714-2.3214v-1.4286l-3.3928-0.71429-2.3214-0.53571-0.89286-2.5-0.71429-2.3214s1.4286-0.17857-1.0714-0.35714-5.5357-1.0714-5.5357-1.0714l-1.4286-0.53572-3.2143-2.5-2.5-1.6071-2.8572-1.0714-3.2143-1.25-1.25-0.89285-0.17857-2.1429-2.8572-3.9286,0.17857-6.7857-1.25-1.7857-2.3214-2.8571-1.0714-2.1429-0.53572-0.53572-1.0714,1.25-0.53571,0.71429h-1.4286l-2.6786,0.89286-1.25,0.35714-1.6072-0.35714-2.1428-2.3214-1.7857-1.6071,0.53572-0.89286,1.4286-1.6071-0.35714-1.7857-2.5-2.3214-3.0357-1.4286-4.2857,0.35714-3.0357-1.25-2.6786-0.89285-3.3929-4.2857,2.3214-2.5,2.5-3.75,0.17857-5.3571,0.35715-1.4286,3.75-1.0714,2.6786-2.5,1.4286-1.4286h3.75,3.3929l3.9286,0.53571,1.7857-1.25,3.5714-1.6071,3.3929-0.53571,2.5-1.25,2.3214-1.25,0.35714-2.8572-2.1429-2.3214-0.71428-1.25,0.53571-1.6071,2.3214-1.4286,0.35714-1.25,1.92-2.87z\",\"name\":\"Yamalo-Nenets Autonomous Okrug\"},\"kr\":{\"path\":\"M501.66,122.41c-0.45,0.04-1,0.37-1,0.37-0.9,0.72-1.25,0.77-0.94,1.13,0.31,0.35,0.19,0.55,0.9,0.78,0.72,0.22,0.91,0.49,1.44,0,0.54-0.49,0.77-1.24,0.41-1.69s-0.37-0.64-0.81-0.59zm11.56,0.65c-0.22,0.02-0.44,0.11-0.6,0.38-0.31,0.53-0.49,1.57-0.62,1.84s-0.2,0.74-0.78,0.88c-0.58,0.13-1.39,0.54-1.75,0.09s-1.03-1.51-1.25-1.69-1.04-0.74-1.13-0.03c-0.09,0.72,0.19,1.51,0.19,1.91s-0.18,0.99-0.4,1.12c-0.23,0.14-1.06,0.25-1.29,0.56-0.22,0.32-0.62,0.49-0.62,1.16s-0.27,1.67-0.31,1.94c-0.05,0.27-0.32,0.26-0.63,0.75s-1.09,1.87-1.09,1.87,0.89,0.62,1.15,0.85c0.27,0.22,0.42,0.77,0.38,1-0.05,0.22-0.13,1.05-0.53,1.19-0.4,0.13-1.43,0-1.78-0.13-0.36-0.13-1.01-0.48-1.5-0.44-0.49,0.05-1.01,0.23-1.19,0.63s-0.71,0.38-0.13,1.18c0.58,0.81,0.87,1.53,1,1.76,0.14,0.22,0.29,1.51,0.07,1.87-0.23,0.36-1,1.13-1.22,1.53-0.23,0.4-0.44,0.71-0.22,1.16,0.22,0.44,0.66,0.8,1.15,0.94,0.5,0.13,3.66,0.71,3.66,0.71s0.28-0.36,0.81-0.71c0.54-0.36,1.36-0.77,1.85-0.41s0.52,0.8,0.65,1.25c0.14,0.45,0.41,2.02,0.5,2.37,0.09,0.36,0.49,0.58,0.94,1.16s1.59,1.37,2.22,1.59c0.63,0.23,1.05,0.55,1.72,0.6,0.67,0.04,2.85,0.82,2.94,1.09s0.31,1,0.31,1,0.54,0.52,0.81,0.56c0.27,0.05,2.22,0.19,2.22,0.19,1.38-0.76,2.23-0.8,2.5-0.94,0.27-0.13,0.84-0.03,1.37-1.06,0.54-1.03,0.76-1.35,0.63-2.06-0.13-0.72-0.34-0.93-0.87-1.6-0.54-0.66-1.5-1.24-1.1-1.56,0.4-0.31,1.56-0.8,1.88-1.15,0.31-0.36,0.54-1.32,0.4-2.35-0.13-1.02-0.15-2.5-0.47-2.9-0.31-0.41-0.73-0.92-1.4-1.19s-1.23-0.67-1.81-0.53c-0.59,0.13-1.92,0.25-2.19,0.03s-0.62-0.83-0.85-1.5c-0.22-0.67-0.5-1.13-0.5-1.53s1.16-3.63,1.16-3.63,0.71-0.29,0.84-0.56c0.14-0.27,0.36-0.76,0.22-1.66-0.13-0.89-0.39-1.55-1.28-2.09s-2.09-1.72-2.09-1.72v-0.97c0-0.35-0.15-1.73-0.28-2-0.14-0.27-0.48-0.72-0.97-0.72-0.25,0-0.5-0.05-0.72-0.03zm17.72,22.91c-0.13,0.02-0.25,0.07-0.35,0.19-0.4,0.44-0.72,1.12-0.9,1.34s-0.51,0.09-0.91,0-0.89-0.43-1.16-0.03c-0.26,0.4-0.67,0.74-0.71,1.19-0.05,0.44,0.09,1.75,0.09,2.46,0,0.72,0.09,1.8,0,2.6s-0.2,1.3-0.78,1.66c-0.58,0.35-0.91,0.4-1.31,0.93-0.41,0.54-1.13,1.25-1.13,1.88,0,0.62,0.06,1.45-0.66,2.03-0.71,0.58-1.14,0.56-0.96,1.4,0.17,0.85,0.22,0.93,0.84,1.38s2.79,0.63,3.28,0.5,1.26-0.77,1.66-1.22,1.61-0.99,2.28-1.12c0.67-0.14,1.17-0.08,2.16-0.13,0.98-0.04,1.54-0.39,2.03-0.65,0.49-0.27,0.54-0.54,1.43-0.54,0.9,0,1.74,0,2.1-0.31,0.35-0.31,1.35-1.19,1.62-1.5s0.88-1.05,0.97-1.5,0.18-1.3,0-1.75,0.15-1.15-1.19-1.28-1.57,0.07-1.84-0.38c-0.27-0.44-1.03-0.88-1.03-1.37s0.08-1.02-0.19-1.37c-0.27-0.36-0.79-0.81-1.28-0.72s-1.31,0.58-1.53,0.62c-0.22,0.05-0.71-0.09-0.85-0.4-0.13-0.32-0.21-1.11-0.21-1.91s-0.25-1.63-0.25-1.63c-0.34-0.13-0.83-0.43-1.22-0.37zm5.22,20.03c-0.62,0.05-1.16,0.75-1.16,0.75s-1.62,1.95-2.16,2.84c-0.53,0.9-0.86,1.08-1.93,1.25-1.08,0.18-1.82,1.63-1.82,1.63s-0.51,1.23-0.68,2.12c-0.18,0.9-1.25,3.07-1.25,3.07v1.93l0.87,1.63s1.6,1.05,1.78,2.12c0.18,1.08-2.12-0.68-2.12-0.68s-2.14-0.73-3.03-0.91c-0.9-0.18-1.64,0.01-3.07,0.19-1.42,0.18-1.25,0.34-1.25,0.34l0.72,1.63s1.61,1.4,1.25,2.65c-0.35,1.25-1.4-0.53-1.4-0.53l-1.97-0.87s-1.98,0.16-2.88,0.87c-0.89,0.72-1.25,0.91-1.97,0.91-0.71,0-1.59-0.71-2.12-1.78-0.54-1.08-0.91-0.91-1.63-1.44-0.71-0.54-3.2,0-4.09,0s-2.32,1.79-3.75,1.97-1.78,0.53-1.78,0.53l0.34,2.12-1.97,1.1-2.12,0.53-2.16,0.53c-0.71,0.18-2.12-0.19-2.12-0.19l-1.97-0.34-1.44,0.87-0.53,0.57-2.84,0.15-2.16,0.91s-2.49,2.13-4.09,2.31c-1.61,0.18-0.19,0.53-0.19,0.53s1.06,0.91,1.06,1.63c0,0.71-0.7,0.87-0.87,1.4-0.18,0.54-1.45-0.33-2.35-0.68-0.89-0.36-1.25,0-1.25,0s0.2,1.04,0.38,1.93c0.18,0.9,1.06,1.28,1.06,2.35s-0.19,2.12-0.19,2.12,0.53,2.69,0.53,3.41v2.69c0,0.89-0.87,1.59-0.87,1.59s-1.25,0.72-3.03,0.72c-1.79,0-0.91-0.72-0.91-0.72l0.72-0.91-0.53-1.4-1.97-0.38-2.31,1.25-1.78-0.53h-3.22-3.94c-1.43,0-1.95-1.07-2.84-1.25-0.9-0.18-2.88-0.34-2.88-0.34s-2.14-0.02-3.03,0.34-1.97,1.06-1.97,1.06v3.07,3.03s-1.6,0.69-1.78,1.4c-0.18,0.72,0.01,2.68,0.19,3.75,0.18,1.08,1.05,0.72,2.12,1.25,1.07,0.54,2.16,1.25,2.16,1.25l0.53,0.57,0.34,1.78s0.57,1.94,0.57,2.65c0,0.72,1.25,1.97,1.25,1.97s0.68,1.63,0.68,2.35c0,0.71-0.51,1.22-0.87,1.93-0.36,0.72-0.73,1.61-0.91,2.5-0.18,0.9,0,2.16,0,2.16l0.38,2.84s-0.2,2.88-0.38,3.6c-0.18,0.71-0.89,1.42-1.78,1.78s-1.25,2.12-1.25,2.12,0.01,2.7,0.19,3.6c0.18,0.89,0.88,1.42,1.59,1.78,0.72,0.36,1.25,1.78,1.25,1.78l-0.87,1.78-1.78-0.34-1.44-1.78-0.91-1.82v-2.5s-0.54-1.76-1.97-2.65c-1.42-0.9,0.19-1.63,0.19-1.63s1.08-1.25,1.44-1.97c0.36-0.71,1.06-1.78,1.06-1.78s1.8-1.6,2.16-2.5c0.35-0.89-0.38-1.4-0.38-1.4l-1.06,0.68-1.78,1.82-1.78-0.91s0.69-1.25,0.87-1.78c0.18-0.54,0.54-1.79,0.72-2.5,0.18-0.72,0.35-1.6,1.06-2.31,0.72-0.72,2.35-0.19,2.35-0.19l1.25-1.25v-1.63l-1.1-1.59s-1.4-0.17-3.9-0.34c-2.5-0.18-0.72-1.25-0.72-1.25l-0.72-1.82s-0.72-1.76-1.44-2.12c-0.71-0.36-1.94-3.04-2.65-3.75-0.72-0.72-1.1-1.44-1.82-2.16-0.71-0.71-2.11-1.78-3.18-2.5-1.08-0.71-1.97-1.4-1.97-1.4l-1.63,0.34s-1.05,1.07-0.15,2.5c0.89,1.43,1.06,1.44,1.06,1.44l1.25-0.28,0.97,0.18,1.22,0.5,1.15,1.07,1.06,0.71,0.91,1.07,0.53,0.9,0.1,0.94-0.6,1.63-1.68,1.84-1.29,0.81-1.93,0.88,0.81,1.15s2.04,1.71,2.22,1.85c0.18,0.13,0.69,0.9,0.69,0.9l0.31,2.85,0.09,2.59s-0.33,2.1-0.37,2.28c-0.05,0.18-0.63,0.88-0.63,0.88l-7.09,3.97-1.44,0.9-1.25,0.94-0.66,0.81s0.3,2.37,0.35,2.6c0.04,0.22,0.64,1.18,0.69,1.4,0.04,0.23,1.28,2.69,1.28,2.69s1.15,1.2,1.46,1.69c0.32,0.49,2.16,0.31,2.16,0.31h3.44c0.4,0,1.34,0.5,1.34,0.5s1.3,0.98,1.35,1.16c0.04,0.17,0.37,1.31,0.37,1.31l0.38,3.34s0.09,3.42,0.09,3.69-0.5,1.56-0.5,1.56l-0.34,1.22c-0.04-0.01-0.07-0.03-0.1-0.06l-1.15,2.06-1.82,1.69-1.68,0.28-1.6,0.28,0.16,1.41s1,1.98,1,2.34-0.01,1.68-0.19,2.13c-0.18,0.44-0.81,1.68-0.81,1.68l0.47,1.19,1.15,1.69,0.88,2.41,0.47,1.68-1.16,1.97-1,1.63,0.72,1.93s0.08,1.53-0.09,1.97c-0.18,0.45-1.07,1.16-1.07,1.16l-0.43,1.19s4.1,3.63,5,4.53c0.89,0.89,0.15,1.52,0.15,2.06s-0.72,2.5-0.72,2.5l-1.25,2.22,0.1,1.87s1.54,1.46,1.72,1.82c0.17,0.35,1.68,0.78,2.22,0.87,0.53,0.09,2.78,0.38,2.78,0.38l1.25,1.31-0.19,0.81-1.16,1.63-0.72,3.28s-0.8,2.07-1.15,2.34c-0.36,0.27-1.44,1.16-1.44,1.16l-2.22,1.15-1.72,2.41,0.38,0.97,1.34,1,0.25,1.78-0.81,1.78-1.25,2.78-1.5,1.41-2.31,2.34-1.72,1.6-1.5,2.25s-0.9,2.92-0.81,4c0.08,1.07,0.96,0.72,0.96,0.72s1.62,1.07,2.16,1.34,1.51,0.99,1.78,1.34c0.27,0.36,1,1.24,1,1.69v1.53l-0.81,0.88-1.25,0.81-3.41,1.25-1.69,0.34-2.4-0.25s-1,0.43-0.91,0.78c0.09,0.36,0.72,1.63,0.72,1.63s0.45,1.24,0.63,1.69c0.17,0.44,0.27,0.88,0.72,1.06,0.44,0.18,0.09,2.97,0.09,2.97s-0.89,2.3-1.16,2.75c-0.27,0.44-0.46,1.25-0.37,1.87,0.09,0.63,0.72,1,0.72,1s1.7,0.69,2.06,0.78,2.94,1.1,2.94,1.1,3.13,0.72,3.84,0.72,2.58,0.06,3.56,0.15,2.5,1,2.5,1,1,0.87,1.53,1.41c0.54,0.53,0.25,4.64,0.25,5s2.88,0.19,3.5,0.28c0.63,0.09,2.32,0.81,2.32,0.81s0.43,1.33,0.43,1.69-0.43,1.88-0.43,1.88l-1.78,0.9-3.47,1.5-0.57,1.06s-1.13,4.74-1.4,5.19,0.53,1.88,0.53,1.88l1.5,0.62,2.25,1.06s3.47,2.25,4.09,2.79c0.63,0.53-0.09,0.96-0.09,0.96l-0.97,1.82-5.44,4.72-0.72,1.96-0.18,1.5s-0.44,3.58-0.44,3.94,0.34,1.53,0.34,1.53,1.81,1.15,2.25,1.5c0.45,0.36,1.88,1,1.88,1l0.72,1.41s0.79,1.54,1.06,2.34c0.27,0.81-0.72,0.97-0.72,0.97l-3.56,2.94-1.97,0.91s-1.35,1.33-1.44,1.87,0.81,0.97,0.81,0.97l0.97,1.44,1,1.34s1.95,0.73,2.75,0.91c0.81,0.17,1.63-0.57,1.63-0.57s1.42-1.95,2.4-2.22c0.99-0.26,0.53,0.46,1.07,0.72,0.53,0.27,1.96,0.61,2.59,0.88s2.22,1.34,2.22,1.34l0.81,2.06,1.78,7.41,0.82,2.5-1.26,4.13s0.1,2.05,0.19,2.4c0.09,0.36,0.8,1.24,1.07,1.6,0.26,0.35,0.43,2.15,0.43,2.15l-0.97,1.35-2.4,1.5-1.1,1.78s-2.3,3.32-2.65,3.59c-0.36,0.27-2.06,1.14-2.6,1.41-0.53,0.27-2.06,1.44-2.06,1.44s0.27,1.06,0.63,1.15c0.35,0.09,0.53,2.16,0.53,2.16l0.81,1.06,1.88-0.44,3.21,0.78,2.5,0.91s1.25,0.88,1.79,1.06c0.53,0.18,3.4-0.44,3.4-0.44s5.87-2.32,6.31-2.59c0.45-0.27,1.72-1.06,1.72-1.06s2.5-1.89,3.03-2.25c0.54-0.36,3.74-2.14,4.1-2.41,0.35-0.27,1.44-1.78,1.44-1.78l0.9-2.12s0.16-1.99,0.25-2.44,0.53-1.5,0.53-1.5l0.72-1.25,2.16-0.19,3.12,0.44,2.32,0.19s3.57,0.1,4.37-0.35c0.8-0.44,0.45-0.72,0.63-1.34,0.17-0.63-0.27-0.9-0.63-1.35-0.36-0.44-1-1.33-1.53-1.78-0.54-0.44-1.25-1.15-1.25-1.15s-2.31-4.22-2.31-4.75c0-0.54,0.81-1.15,2.15-1.69s3.91-0.97,3.91-0.97l2.06-1.19-0.09-2.65,0.47-1.78s1.16-2.8,1.25-3.07c0.09-0.26,1.51-2.93,1.68-3.56,0.18-0.62,0.62-1.79,1.07-2.59,0.44-0.81,1.62-1.68,2.15-2.03,0.54-0.36,1.68-1.91,2.13-2.44,0.44-0.54,1.09-2.22,1.09-2.22l-0.19-4.09s-2.13-2.42-2.4-3.22c-0.27-0.81,0.07-1.43,0.34-1.78,0.27-0.36,1.61-1.88,1.97-2.5,0.36-0.63,0.81-2.53,0.81-2.97,0-0.45,0.98-1.5,1.88-2.13,0.89-0.62,2.83-0.18,3.28,0s1.09,0.81,1.72,1.35c0.62,0.53,3.28,0.68,3.28,0.68s1.07-1.42,1.25-1.87,0.98-1.77,1.25-2.22,1.53-1.07,2.25-1.16c0.71-0.09,1.69,0.63,1.69,0.63s0.97,1.78,1.15,2.31c0.18,0.54,1.18,1.61,1.53,1.97,0.36,0.36,1.26,1.8,1.35,2.16,0.09,0.35,1.06,0.33,2.22,0.15s0.09-1.4,0.09-1.4v-2.16s-0.62-2.16-0.62-2.78c0-0.63,0.71-1.78,0.71-1.78s2.5-0.8,3.03-1.06c0.54-0.27-0.08-1.17,0.1-1.97,0.18-0.81,1.33-1.7,1.69-1.88,0.35-0.18,2.96-0.61,3.4-0.87,0.45-0.27,1.41-1.25,1.41-1.25l0.62-2.69,0.28-2.88s-0.02-0.11-0.03-0.12c0.09-0.06,0.32-0.22,0.32-0.22l1.31,0.19s0.6-0.58,1.31-0.94c0.72-0.36,0.79,0.03,0.97,0.03s0.68,1.11,0.81,1.47c0.14,0.36,0.36,1.26,0.41,1.53,0.04,0.27,1.38,0.68,1.56,0.72s1.55,0.47,1.81,0.56c0.27,0.09,1.66,1.08,1.97,1.44,0.32,0.36,1.04,0.45,2.38,0.94s1.53-0.28,1.53-0.28l0.65-0.63s0.23-1.4,0.32-1.94c0.09-0.53,0.72-0.87,0.72-0.87s1.51-1.22,1.87-1.63c0.36-0.4,0.5-0.87,0.5-0.87s0.34-2.99,0.16-3.13c-0.18-0.13-1.38-0.71-1.78-0.84-0.41-0.13-1.6-1.46-2-2.13-0.41-0.66,0.3-1.16,0.43-1.43,0.14-0.27,1.41-1.06,1.63-1.28,0.22-0.23,1.06-0.78,1.59-1,0.54-0.23,0.27-2.9,0.22-3.35-0.04-0.44-0.7-0.44-1.81-0.62-1.12-0.18-1.97-0.85-1.97-0.85s-1.52-1.52-2.19-2.28-0.22-2.76-0.22-3.03,0.17-4.1,0.13-4.9c-0.05-0.81,0.54-1.63,0.72-1.85s2.37-0.49,2.59-0.53,1.9-0.99,2.35-1.34c0.44-0.36,0.59-1.19,0.59-1.19s-0.37-1.3-0.5-1.75c-0.14-0.45,0.72-1.65,1.03-1.88,0.31-0.22,1.91-1.37,1.91-1.37s1.07-6.86,1.25-7.13c0.17-0.26-0.32-1.59-0.32-1.59s-1.19-3.62-1.28-3.84c-0.09-0.23-0.68-1.65-0.5-2.32s1.27-1.02,1.41-1.25c0.13-0.22,0.07-0.97-0.16-1.15-0.22-0.18-1.03-1.16-1.03-1.16s0.58-3.41,0.63-3.81c0.04-0.4,0.28-1.69,0.28-1.69l1.22-0.84s3.79-0.07,4.06-0.07,2.03-0.79,2.44-1.06c0.4-0.27,0.13-1.66,0-1.84-0.14-0.18-1.19-1.94-1.19-1.94h-2.28l-2.5,0.06-2.1-0.43-1.03-0.41s-2.49-0.25-2.72-0.25c-0.22,0-1.5-0.16-1.5-0.16l-0.65-0.25s-0.13-1.6-0.13-1.87,0.48-0.55,1.07-0.91c0.58-0.35,0.93-0.94,0.93-0.94s-0.17-0.98-0.43-1.34c-0.27-0.36-0.1-0.97-0.1-0.97s2.29-2.76,2.38-2.93c0.09-0.18,0.62-1.04,0.62-1.04s0.89-1.56,1.06-2.18c0.18-0.63-0.59-1.16-0.59-1.16s-3.42-4.04-3.78-4.44-1.14-1.64-1.31-1.9c-0.18-0.27-0.91-1.24-1-1.69s0.31-1.41,0.31-1.41l1.09-3.47-0.56-1.06s-1.07-0.96-1.16-1.09c-0.09-0.14-1-0.75-1-0.75s-0.63-0.55-0.5-0.91c0.14-0.36,1.36-0.56,1.63-0.56s2.31-0.69,2.31-0.69,1.39-0.56,1.56-0.78c0.18-0.22-0.03-1.16-0.03-1.16s-1.56-17.7-1.56-18.06-0.65-1.56-0.78-1.78c-0.14-0.22-2.19-2.34-2.19-2.34l-0.72-5.16h0.06s1.85,0.06,2.47,0.06c0.63,0,0.97-0.84,0.97-0.84l2.5-2.06,1.53-1.38s0.57-0.52,0.88-0.56c0.31-0.05,1.26,0.58,1.44,0.62,0.17,0.05,1.47,0.6,1.47,0.6s0.99-0.52,1.43-0.66c0.45-0.13,0.75-0.62,0.75-0.62l-0.31-5.94,4.16-2.16s0.93-1.1,0.93-1.28,0.57-1.87,0.57-1.87l4.47-3.1s1.78-2.23,2.18-2.5-0.03-0.62-0.03-0.62l-1.25-1.85s-1.07-1.29-1.78-1.47c-0.71-0.17-0.91-1.09-0.91-1.09l0.29-5-0.6-0.47-2.84-2.31-3.41-2.69-0.72-1.97-0.34-1.4-1.06-1.78,0.15-0.91,1.25-2.69-1.4-1.4-1.63-1.97-0.72,1.59s-1.43-0.53-2.5-0.53-1.06,1.44-1.06,1.44-1.95,0.71-2.84,1.25c-0.9,0.53-1.25,1.78-1.25,1.78s-1.45,1.25-2.16,1.25-2.14,0.01-3.03,0.19c-0.89,0.17-1.43,1.41-1.97,2.12-0.54,0.72-1.44,2.33-2.16,2.69-0.71,0.36-0.71,0.34-1.78,0.34s-0.16-0.7,0.38-2.31c0.53-1.61,1.95-1.79,2.31-2.5s0.72-1.78,0.72-1.78l2.5-0.91s0.54-3.02,1.44-3.37c0.89-0.36,3.75-0.53,3.75-0.53s1.22-1.63,1.4-2.35c0.18-0.71,1.44-1.58,1.97-2.65,0.54-1.08,0.72-1.79,0.72-2.5,0-0.72,0.91-1.82,0.91-1.82l2.5-2.12s1.58-1.6,1.93-2.31c0.36-0.72,2.16-1.97,2.16-1.97l2.16-1.97,2.31-2.5s0.19-1.44,0.19-2.16c0-0.71-0.72-1.78-0.72-1.78s-1.26-0.9-1.97-1.44c-0.72-0.53-1.78-0.7-1.78-1.59s0.16-0.72,0.34-1.44c0.18-0.71,0.72,0,0.72,0l1.44,1.1,0.15-1.25-0.15-2.35-0.53-1.97-2.69-0.68-1.78-1.1h-2.16c-0.71,0-0.52-0.69-0.87-1.4-0.36-0.72-0.37-1.62-0.91-2.69s-2.31-0.19-2.31-0.19l-1.78,0.91c-0.72,0.35-0.73,0.52-1.44,1.06-0.72,0.54-1.61-0.37-3.22-0.91-1.61-0.53-1.77,0.02-2.84,0.38-1.08,0.36,0.17,0.88,0.53,1.59,0.35,0.72,0,1.44,0,1.44l-2.35-0.19s-1.06-0.35-1.78-1.25c-0.71-0.89,0.19-1.06,0.19-1.06s1.25-1.43,1.25-2.5-0.72-1.25-0.72-1.25h-2.69c-1.25,0-1.96-0.17-3.03-0.34-1.07-0.18-1.25-0.37-1.97-1.44-0.71-1.07,0.57-0.53,0.57-0.53l1.4-1.25,1.25-0.72,2.69,0.34s0.9,0.56,1.97,0.38,0.19-0.72,0.19-0.72l-1.63-1.06s-1.77,0.34-2.84,0.34-2.16-0.72-2.16-0.72l-1.97-0.87s-1.41-1.45-2.12-1.63c-0.09-0.02-0.2-0.04-0.28-0.03zm-45.94,3.34c-0.85,0.32-1.23-0.03-1.5,0.82-0.27,0.84-0.34,0.96,0.16,1.18,0.49,0.23,0.87,0.53,1.4,0.44,0.54-0.09,1.24-0.47,1.06-1.09-0.17-0.63-1.12-1.35-1.12-1.35zm20.84,3.82c-0.33,0-0.47,0.12-0.94,0.56-0.62,0.58-1.62,1.37-1.71,1.9-0.09,0.54,0.12,0.96-0.19,1.54s-1.55,1.81-2,2.12-2.51,0.16-2.6,0.47c-0.08,0.31-0.37,0.52,0.04,0.87,0.4,0.36,2.91,0.63,3.72,0.54,0.8-0.09,3.3-0.3,3.74-0.35,0.45-0.04,0.71,0.28,0.66-0.43-0.04-0.72-0.72-1.36-0.4-1.85,0.31-0.49,0.6-0.65,0.78-0.97,0.17-0.31,0.49-1.06,0.31-1.47-0.18-0.4-0.72-0.95-0.72-1.53s-0.28-1.37-0.28-1.37c-0.18-0.01-0.3-0.04-0.41-0.03zm-45.53,6.62c-0.49,0-2.1,0.86-2.19,1.13-0.09,0.26-0.56,0.38,0.07,0.97,0.62,0.58,0.39,0.88,1.15,0.84,0.76-0.05,1.55-0.67,2.22-0.63,0.67,0.05,1,0.79,1.31,0.79,0.32,0,0.62-0.23,0.66-0.72s-0.42-0.89-0.59-1.07c-0.18-0.17-0.54-0.18-0.54-0.18-0.31-0.45-1.6-1.13-2.09-1.13zm-2.06,6.25c-0.54,0.18-1.01,0.45-1.5,0.63-0.49,0.17-0.81,0.17-1.13,0.43-0.31,0.27-0.72,0.46-0.72,0.82,0,0.35,0.15,0.5,0.6,0.81s0.52,0.62,1.19,0.62,1.89-0.5,2.03-0.81c0.13-0.31,0.48-0.94,0.53-1.25,0.04-0.31-1-1.25-1-1.25zm-51.31,9.13l-2.35,2.12-0.34,1.78,1.97,0.38,1.25,0.87h2.5l1.25-0.87v-1.78l-1.63-2.16-2.65-0.34zm59.09,4.4c-0.49,0.14-1.47,0.59-1.25,1.03,0.22,0.45,0.5,0.8,0.91,0.75,0.4-0.04,0.74-0.01,0.87-0.5,0.14-0.49-0.22-1.25-0.22-1.25l-0.31-0.03zm97.34,1.78c-0.09,0.01-0.18,0.07-0.28,0.22-0.38,0.6-0.53,1.69-0.4,2.1,0.12,0.41-0.42,0.87,0.12,1.31s0.62,1.22,1.53,1.25c0.92,0.03,1.9,0.47,2.63-0.06,0.72-0.54,1.43-1.69,1.65-2.19,0.22-0.51,0.32-1.22,0.07-1.53-0.26-0.32-0.62-0.81-1.13-0.88-0.5-0.06-1.19,0.16-1.19,0.16-1.07,0.31-0.99,0.66-1.78,0.31-0.59-0.26-0.92-0.72-1.22-0.69zm-135.37,0.22l-1.97,0.19-1.44,1.44,0.53,1.06,1.63-0.91,1.44,0.57,0.34,1.59,1.25,0.34,0.72-0.87-0.53-1.06-1.97-2.35zm27.09,1.13c-0.49,0.01-1.04,0.1-0.9,0.5,0.17,0.53,1.09,0.75,2.03,0.75s2.97,0.08,3.06,0.44c0.09,0.35,0.68,1.56,0.91,1.65,0.22,0.09,0.92,0.13,0.97-0.41,0.04-0.53-0.44-1.13-0.76-1.4-0.31-0.27-2.09-1.25-2.09-1.25-0.45-0.09-2.24-0.28-2.78-0.28-0.13,0-0.27-0.01-0.44,0zm10.31,1.12c-0.71,0.23-0.93,0.25-0.93,0.88,0,0.62-0.1,1.06,0.43,1.15,0.54,0.09,0.85,0.33,1.26,0.07,0.4-0.27,0.59-0.91,0.37-1.22s-1.13-0.88-1.13-0.88zm-44.71,1.16l-1.44,1.25,0.72,0.87,1.78-1.06-1.06-1.06zm6.4,2.31v1.78l2.35-0.53v-1.25h-2.35zm133.35,1.5c-1.05,0.29-1.25,0.28-2.07,0.6-0.82,0.31-1.49,0.24-1.87,0.74-0.38,0.51-0.44,0.28-0.66,1.29s-0.69,0.99,0.1,1.31c0.79,0.31,1.39,0.29,2.31-0.41,0.91-0.69,1.71-1.09,2.19-1.65,0.47-0.57,0.84-1.19,0.84-1.35s-0.84-0.53-0.84-0.53zm-122.41,0.5c-0.4,0.63-0.65,1.16-0.87,1.56-0.23,0.41-0.68,0.77-1.13,1.66s-0.81,1.32-0.81,2.03c0,0.72,0.24,1.18,0.68,1.41,0.45,0.22,0.34,0.5,0.57,0.5,0.22,0,0.82,0.09,1.31,0s1.03-0.19,1.03-0.5v-1.88c0-0.53-0.31-3.37-0.31-3.59s-0.47-1.19-0.47-1.19zm-16.47,0.69l-1.06,0.87v1.25l1.44,0.57,0.87-1.25-1.25-1.44z\",\"name\":\"Krasnoyarsk Krai\"},\"tm\":{\"path\":\"m424.64,359.43,1.25,3.2143,1.25,2.3214s-0.53571,2.3214-0.71428,3.0357c-0.17857,0.71429-1.6071,3.0357-1.6071,3.0357s0.53571,1.25,1.6071,1.9643c1.0714,0.71429,5.8929,1.7857,5.8929,1.7857l5.3571,0.17857s3.75,0.89285,4.1071,1.6071c0.35714,0.71429,0.89286,1.0714,0.89286,2.1429,0,1.0714,0.35714,4.2857,0.35714,4.2857s1.25,0.35714,2.6786,0.35714,3.0357,0.35715,3.0357,0.35715,0.35714,2.1428,0.35714,2.6786c0,0.53571-0.89286,1.7857-1.9643,1.7857s-3.75,1.6072-3.75,1.6072-1.25,2.6786-1.25,3.75-0.89285,3.5714-0.53571,4.2857c0.35714,0.71429,4.4643,1.7857,5.1786,2.1429,0.71429,0.35714,3.2143,2.6786,3.2143,2.6786s-0.71429,1.6071-1.6072,2.6786c-0.89285,1.0714-4.1071,3.0357-5.3571,4.6429-1.25,1.6071-0.35714,2.8571-0.35714,2.8571l-0.71429,1.6071-3.2143,0.53572-3.2143,0.35714-1.4286-1.6071-1.9643-0.17857-4.66-0.57h-2.3214l-1.25,1.0714s-2.1429,1.0714-3.2143,1.25c-1.0714,0.17857-5.3571,1.25-6.0714,1.25-0.71428,0-6.4286,0.71429-6.4286,0.71429l-3.3928,1.4286h-2.3214l-0.35715-1.9643,0.71429-2.1429-0.35714-2.3214,1.7857-2.3214-0.53571-1.4286s-1.0714-0.17858-1.9643,0.53571c-0.89286,0.71429-4.4643,1.0714-4.4643,1.0714l-4.2857-0.17857-1.9643-2.3214-0.89286-3.0357s-1.25-1.0714-2.6786-0.71428c-1.4286,0.35714-1.6072,1.25-2.6786,1.25s-2.5,0-3.0357-0.89286c-0.53571-0.89286-0.89285-3.0357-0.89285-3.0357l-0.9-2.33s-1.6071-0.89286-2.5-1.6071c-0.89286-0.71429-3.2143-2.3214-3.2143-2.3214l-5.1786-2.3214-4.2857-1.9643-4.6429-1.7857-2.6786-1.0714-1.7857-2.5v-3.0357l1.6072-2.8572,0.35714-1.7857-0.53571-2.3214,1.25-3.0357,0.71428-3.3929,1.9643-1.0714,3.3928-2.8571s0-2.1429,0.71429-2.3214c0.71429-0.17857,5.7143-1.6071,5.7143-1.6071l1.9643-1.7857,1.25-2.6786,2.5-1.6071,1.6071-3.2143s1.0714-1.0714,1.7857-1.7857c0.71428-0.71429,2.1428-1.4286,2.1428-1.4286l1.9643-0.35715,2.1429,1.7857,2.1428,1.0714,2.5,0.35714,2.8572,1.4286,1.0714,1.6071,3.0357,0.89286h3.3929l2.1428,0.35714,1.25,1.6072,2.6786,0.71428,2.3214,0.71429,2.1429,1.7857,1.25-0.89286,1.7857-0.53571,2.1428-1.4286,2.1429-0.17857,1.6071,0.71428,1.7857,0.89286z\",\"name\":\"Tomsk Oblast\"},\"nv\":{\"path\":\"m341.43,421.57,4.1071,0.71429l4.4643-0.17858c1.25-0.17857,2.1429-0.71428,2.1429-0.71428l-2.14,3.4h-3.0357l-0.89285,2.1428s1.0714,1.9643,1.7857,2.5c0.71429,0.53572,2.6786,3.0357,2.6786,3.0357l0.53572,2.1428,2.3214,0.35715h1.4286s2.6786,0.35714,3.3928,0.35714c0.71429,0,0.89286,0,1.9643-0.35714,1.0714-0.35715,3.2143-0.71429,4.6429-0.71429h3.5714s2.6786,0.17857,3.5714-0.35714c0.89286-0.53572,0.89286-1.0714,2.3214-1.25,1.4286-0.17857,3.0357-0.17857,3.9286-0.17857,0.89286,0,1.9643-0.17857,1.9643-0.17857s0,1.6071,0.89286,2.1428c0.89285,0.53572,4.1071,2.6786,4.1071,2.6786l0.71428,0.71429c0.17858,0.71429-0.17857,2.5-0.17857,3.2143,0,0.71428-1.0714,0.71428-0.17857,1.6071,0.89286,0.89286,1.9643,1.4286,1.9643,1.4286l2.3214-1.9643,2.3214-2.3214s2.1429-0.53572,2.8572-0.53572c0.71428,0,3.0357,0,3.75-0.17857,0.71428-0.17857,1.4286-0.71429,2.6786-0.17857,1.25,0.53571,2.3214,0.71428,3.3929,0.71428,1.0714,0,3.5714-1.25,3.5714-1.25s1.7857-2.1428,1.9643-2.8571c0.21-0.7-0.33-4.45-0.33-4.45v-3.75c0-0.71429,0.71428-2.3214,1.25-2.6786,0.53571-0.35714,1.7857-0.89285,1.7857-1.7857,0-0.89286-0.89286-1.6071-0.89286-1.6071s-0.89285-0.53572-0.89285-1.4286c0-0.89286,0.35714-3.2143-0.53572-3.0357-0.89285,0.17857-4.1071,1.7857-4.1071,1.7857s0,0.17857-1.4286,0.17857-2.5,0-2.6786-0.71429c-0.17857-0.71428,0.35714-5,0.35714-5l0.53571-2.6786,0.17858-2.1429-2.8572,1.4286s-1.6071,0.53572-2.5,0.71429c-0.9,0.18-4.47-0.71-4.47-0.71l-2.1429-0.71428-1.4286-2.1429-1.4286-2.8571s-2.5,0.53571-3.2143,0.71428c-0.71428,0.17858-1.9643,0.53572-1.9643,0.53572l-2.3214-1.25-1.0714-3.3929v-1.25l-3.0357-1.7857s-1.9643-1.6072-2.6786-2.1429c-0.71428-0.53571-3.3928-1.7857-3.3928-1.7857s-3.3929-1.25-4.1072-1.6072c-0.71428-0.35714-1.9643-1.25-2.6786-1.6071-0.71428-0.35714-3.9286-1.4286-3.9286-1.4286l-1.9643,0.17857s-0.35715,1.0714-0.53572,1.9643c-0.17857,0.89285-1.0714,2.3214-1.0714,2.3214l-1.4286,1.0714-0.89286,1.6072,0.17858,2.1428-0.71429,1.4286h-3.2143l-2.5-0.35714-2.1428,0.89286-2.1429,2.3214-1.4286,1.9643-0.71429,2.6786,0.71429,1.9643,1.7857,2.6786v1.7857l-2.1428,3.5714z\",\"name\":\"Novosibirsk Oblast\"},\"al\":{\"path\":\"m351.25,435.14,1.7857,5,1.7857,5.1786,1.6071,6.7857,0.89286,8.5714,0.35714,8.2143,0.35714,2.8571,2.3214-0.53571,1.7857-0.53572,0.89285-0.53571,0.17857-1.9643,1.25-1.6071,1.25-0.35714,1.7857,0.53571,0.89286,1.9643,0.89285,2.8571,2.3214,2.8571,1.9643,1.6071,4.6428,0,3.3929-0.35714,2.5-0.89286,2.3214,0,3.3929,1.4286,1.0714,1.9643,2.3214,0.53572,2.3214-0.53572-0.17857-1.4286-1.6071-1.0714-1.0714-0.89286,0.35714-1.6071,0.71429-0.35714,2.5-0.35714,4.4643-0.71429,3.75-0.17857,2.6786-0.71429,2.3214-1.9643,1.0714-1.9643s0.53572-0.71428,1.25-0.71428c0.71429,0,3.3929-0.17858,3.3929-0.17858l1.9643-0.17857,1.0714-1.7857s0.53572-2.1429,1.25-2.5c0.71429-0.35714,0.89286-2.3214,0.89286-2.3214l0.71429-2.1429-0.35715-1.0714-0.71428-1.0714,0.71428-0.89286,1.25-0.53571-0.17857-1.0714-1.4286-1.6072-1.0714-1.0714c-0.17857-0.71429-0.89286-2.8572-0.89286-2.8572l-1.7857-1.7857-0.17857-0.89286-0.53572-2.1429-1.6071-1.4286-2.5-1.9643-1.74-1.79s-1.6072,1.0714-2.3214,1.4286c-0.71429,0.35715-1.7857,0.71429-1.7857,0.71429l-2.5,0.17857-2.5-0.35714-3.0357-0.17857-4.8214,0.71428-2.5,1.6072-1.6071,1.7857-1.0714,0.71429-0.89286,0.35714-1.4286-1.25-0.35714-0.89286,0.35714-0.89286,0.17857-1.7857-0.17857-1.4286-2.3214-1.6071-1.9643-1.25-1.0714-1.25-0.17857-0.89286-1.9643-0.17857-4.2857,0.17857-1.25,1.25-2.1429,0.53571-3.75-0.53571-4.2857,0.17857-2.6786,1.25h-2.5l-3.3929-0.17857z\",\"name\":\"Altai Krai\"},\"km\":{\"path\":\"m442.14,414.79-0.71428,2.3214,0.89286,1.6072,2.5,1.4286,1.7857,1.6071,1.25,2.5,0.17857,0.89286s-0.89286,1.4286-1.6071,2.1429c-0.71429,0.71428-4.2857,2.3214-4.2857,2.3214l-1.7857,1.7857-1.7857,1.7857v1.6072l1.0714,1.7857,0.17858,1.7857-1.9643,2.5s-1.25,1.0714-1.0714,1.7857c0.17857,0.71428,1.0714,1.4286,1.7857,1.6071,0.71428,0.17857,2.8571,0.89286,2.8571,0.89286l-0.71429,1.4286-1.25,1.7857-0.53571,1.6072-1.7857,0.71428-1.4286,1.6072,0.71429,1.25,1.25,1.25-0.89286,2.5-1.25,1.6071,0.53572,1.25,1.7857,1.7857-0.35714,1.6072-1.6072,1.9643-2.5,2.1429h-1.9643l-0.71429-1.7857-1.9643-1.25-2.6786-0.35714-1.4286,1.0714-2.1428-1.4286-0.71429-2.3214-1.0714-0.71429,0.17857-2.5-0.53571-2.5,0.89286-1.9643,0.71428-1.6071-2.1428-2.6786-1.6072-2.6786-1.25-1.4286-0.71428-2.3214-0.89286-1.7857-2.3214-2.1429-1.7857-1.6071-0.71429-1.25v-1.7857l-0.35714-4.6428,0.17857-2.5,0.71429-2.3214,1.25-1.4286,0.71428-1.25-1.4286-1.9643v-0.89286l-0.35714-2.5,1.6071-0.35714,4.4643-0.53571,2.5-0.89286,3.0357-0.89286,1.0714-0.35714,0.71428-0.89286h1.6072,1.9643,2.5l1.7857,0.35715,1.4286,0.35714,0.89286,0.89286,1.9643,0.53571,1.6071-0.17857,2.5-0.71429z\",\"name\":\"Kemerovo Oblast\"},\"lt\":{\"path\":\"m392.32,478.89-0.44643,2.1428s-0.17857,1.875,0,2.5893c0.17857,0.71429,1.1607,2.3214,1.1607,2.3214l3.3036,0.89286s0.98215,1.1607,1.0714,1.6071c0.0893,0.44643,0.0893,3.3036,0.0893,3.3036s0.17857,0.89286,0.53571,1.6071c0.35715,0.71429,1.25,1.875,1.7857,2.2322,0.53571,0.35714,1.6071,1.25,2.4107,1.3393,0.80357,0.0893,3.125,0.0893,3.5714,0.0893,0.44643,0,4.0179,0.0893,4.0179,0.0893s1.0714,0.53572,1.6071,0.89286c0.53571,0.35714,1.4286,1.25,1.7857,1.875,0.35715,0.625,1.5179,1.6964,2.0536,1.9643,0.53571,0.26785,1.1607,0.80357,1.7857,1.1607,0.625,0.35714,1.6964,0.71429,2.4107,0.80357,0.71429,0.0893,2.9464-0.44643,3.3929-0.71428,0.44643-0.26786,2.3214-0.89286,3.4821-0.89286s4.7322-0.35714,5-0.44643c0.26786-0.0893,3.5714-1.3393,4.1964-1.3393s1.4286-0.89285,1.6071-1.25c0.17858-0.35714,0.625-1.9643,0.17858-2.7678-0.44643-0.80357-0.80358-1.0714-1.4286-1.4286-0.625-0.35715-1.4286-1.25-1.25-1.7857,0.17858-0.53571,1.9643-1.1607,2.4107-1.1607,0.44643,0,2.5,1.0714,2.5,0.26785,0-0.80357-1.6964-2.2321-1.6964-2.2321s-0.98214-1.3393-1.25-1.7857c-0.26786-0.44643-1.875-1.9643-1.875-1.9643s-2.2321-2.7679-2.0536-4.1071c0.17857-1.3393-0.0893-3.3929-0.0893-3.3929s-0.625-1.3393-0.71428-1.6964c-0.0893-0.35714-1.3393-0.17857-1.3393-0.17857l-1.5179,1.5179s-1.4286-0.26786-1.5178-0.80357c-0.0893-0.53572-0.71429-2.5893-0.71429-2.5893s-0.35714-1.7857-0.44643-2.1429c-0.0893-0.35714-0.17857-1.9643-0.17857-1.9643l1.6964-1.3393,2.8571-1.3393,0.35715-1.1607-1.3393-1.6071-0.80357-0.625-2.1429-0.53571-1.9643,0.98214s-1.0714-0.625-1.4286-0.80357c-0.35714-0.17857-1.0714-0.89286-1.0714-0.89286l-0.89286-1.7857s0-1.0714-0.71429-0.89286c-0.71428,0.17857-0.89285,0.71428-0.89285,0.71428s-1.1607,1.1607-1.1607,1.5179c0,0.35714-0.625,1.4286-0.625,1.4286l-0.98214,1.0714s-1.6071,0.44643-1.9643,0.44643h-3.0357c-0.35714,0-1.1607,0.71429-1.5179,1.0714-0.35714,0.35714-1.1607,1.9643-1.1607,1.9643l-1.5179,1.0714-0.98214,0.625-2.3214,0.71429h-2.3214l-4.1071,0.71428-4.1071,0.625-1.0714,0.625-0.0893,0.98215s0.0893,0.89285,0.53572,0.98214c0.44642,0.0893,1.6071,0.80357,1.6071,0.80357l0.44643,0.89286-0.0893,0.89286-1.875,0.625z\",\"name\":\"Altai Republic\"},\"tv\":{\"path\":\"m431.96,477.02,0.26786-1.6964s0.89286-0.625,1.6071-0.625c0.71429,0,1.6964,0.71428,2.4107,0.89286,0.71428,0.17857,2.7678,0.71428,3.0357,0.71428,0.26786,0,1.0714-0.80357,1.3393-1.25,0.26785-0.44643,1.9643-2.6786,1.9643-2.6786s0-1.25,0.625-1.6071c0.625-0.35715,1.875-0.35715,2.3214-0.35715,0.44643,0,1.6071-0.17857,2.3214,0.26786,0.71429,0.44643,1.1607,3.0357,1.1607,3.0357s0.89286,0.89285,1.1607,0.89285c0.26786,0,2.1429-0.80357,2.1429-0.80357s1.4286,0.17857,1.7857,0.44643c0.35714,0.26786,3.0357,0.89286,3.0357,0.89286s1.6964,1.6071,2.2322,1.6071c0.53571,0,1.6964,0.26786,2.6786-0.0893,0.98214-0.35714,2.8571-0.80357,3.3929-1.25,0.53571-0.44642,5.5357-1.9643,5.9821-2.5,0.44643-0.53571,7.0536-5.9821,7.0536-5.9821l2.1429-2.8571s-0.17857-1.875-0.17857-2.9464,1.0714-2.3214,1.4286-2.5893c0.35714-0.26785,2.8571,0.0893,3.3036,0.17858,0.44643,0.0893,4.375,0.89285,4.7321,0.80357,0.35714-0.0893,4.2857-0.44643,4.2857-0.44643l2.4107-2.2321s1.5179-0.35715,2.4107,0.0893c0.89286,0.44643,3.6607,2.5,4.1964,2.7679,0.53572,0.26786,3.75,2.3214,3.75,2.3214l1.6072,1.5178s1.25,0.71429,1.7857,0.44643c0.53571-0.26785,2.3214-0.89285,2.3214-0.89285l1.6071,0.53571,0.35714,1.25s0.53572,0.89286,0.53572,1.25-0.89286,1.6071-0.89286,1.6071-0.71428,0.53572-0.80357,1.1607c-0.0893,0.625-0.26786,4.1071-0.26786,4.1071s-0.0893,2.3214-0.0893,2.7679c0,0.44643-0.71429,2.1428-0.71429,2.1428l-1.4286,2.4107s-1.5179,1.3393-1.875,1.875c-0.35714,0.53571-2.2321,1.3393-2.4107,1.6964-0.17858,0.35714-0.71429,1.875-0.71429,1.875s-0.71429,1.875-0.71429,2.4107c0,0.53572-0.0893,3.3929-0.0893,3.9286,0,0.53572,0.53571,2.5,1.0714,3.2143,0.53571,0.71428,1.25,1.6071,1.25,2.0536,0,0.44643-0.80357,2.3214-1.1607,2.7679-0.35714,0.44643-4.8214,4.1964-4.8214,4.1964l-2.0536,1.25-2.1428,0.17857s-1.7857-0.98215-2.1429-0.89286c-0.35714,0.0893-2.3214,0.17857-2.6786,0.17857-0.35715,0-1.7857-0.89286-1.7857-0.89286s-1.6964-0.35714-2.1428-0.625c-0.44643-0.26785-1.7857-1.1607-1.7857-1.1607s-2.7679-0.26786-3.2143-0.26786c-0.44643,0-2.8572-0.17857-3.2143-0.53571l-2.0536-2.0536s-0.71429-1.4286-0.80357-1.9643c-0.0893-0.53571-0.17857-2.5-0.17857-2.5s-0.80358-0.80357-1.3393-1.25c-0.53571-0.44643-2.1429-0.89286-2.9464-0.89286-0.80357,0-3.9286,0.17858-3.9286,0.17858s-1.9643,0.53571-2.2321,0.625c-0.26786,0.0893-1.25,0.71428-1.875,0.80357-0.625,0.0893-2.0536,0.0893-1.9643-0.80357,0.0893-0.89286,1.25-1.6964,1.3393-2.0536,0.0893-0.35714-0.0893-1.0714-0.71429-1.3393-0.625-0.26786-2.1429-0.17857-3.0357,0.0893-0.89286,0.26786-2.3214,0.80358-2.8572,0.89286-0.53571,0.0893-3.3928,0.71429-3.3928,0.71429s-2.1429,0.89285-2.6786,1.0714c-0.53572,0.17857-3.8393,1.1607-3.8393,1.1607l-3.0357,1.5179-2.4107,1.1607-2.5893-0.26786-2.1429-0.98214-1.5179-0.71428-1.25-1.25c0-0.44643,0.35714-0.98215,0.35714-0.98215l2.4107-0.44643,1.7857,0.53572s1.25-0.35714,0.17857-1.0714c-1.0714-0.71429-4.4643-5.0893-4.4643-5.0893l-1.48-2.44s-1.0714-1.4286-1.0714-1.7857v-2.5893z\",\"name\":\"Tuva Republic\"},\"hk\":{\"path\":\"m440.27,432.11c0.53572,0.35715,1.9643,1.875,1.9643,1.875l1.3393,1.6072s0.26785,0.625,1.1607,0.80357c0.89286,0.17857,2.0536,0.17857,2.0536,0.17857s0.35714-0.35714,0.80357-0.80357,0.625-0.98214,0.98215-1.25c0.35714-0.26786,0.89285-0.89286,1.3393-0.80357,0.44643,0.0893,0.71429,0.26785,1.3393,0.71428,0.625,0.44643,1.3393,1.25,2.2321,1.25,0.89286,0,2.5,0.80357,2.5,0.80357s0.44643,1.875,0.625,2.3214c0.17857,0.44643,0.53571,2.9464,0.53571,2.9464s0.35715,1.5179,0.71429,2.4107c0.35714,0.89285,0.98214,2.0536,1.0714,2.4107,0.0893,0.35714-0.0893,3.125-0.17857,3.3929-0.0893,0.26785-0.80357,1.875-0.89286,2.2321-0.0893,0.35714,0,2.5893,0,2.5893l1.5179,1.5179,0.625,1.875s-1.25,1.4286-1.4286,1.6964c-0.17858,0.26786-2.2322,1.3393-2.5893,1.875-0.35714,0.53571-1.4286,3.0357-1.4286,3.0357s-1.6071,1.9643-2.1429,2.2322c-0.53571,0.26785-2.8571,1.0714-3.125,1.5178-0.26786,0.44643-1.6964,1.6964-1.6964,1.6964l-2.7678,0.0893s-1.3393,0.17857-1.6072,0.625c-0.26785,0.44643-0.53571,1.4286-1.0714,1.875-0.53571,0.44643-1.0714,1.25-1.1607,1.6071-0.0893,0.35714-0.89286,1.0714-0.89286,1.0714s0.0893,0.71429-1.0714,0.625c-1.1607-0.0893-2.9464-0.35714-2.9464-0.35714l-1.7857-1.1607-1.6071,0.44643-0.625,0.80357-0.26786,0.89286-2.5,1.0714s-0.625,0.89286-1.1607,0.35714c-0.53572-0.53571-1.25-2.3214-1.25-2.3214l-0.625-2.5893v-1.5179s0.17857-1.0714,0.53571-1.25c0.35714-0.17857,2.5-1.6071,2.5-1.6071s1.3393-0.98215,1.6964-1.0714c0.35714-0.0893,2.1429-0.44643,2.1429-0.44643l1.9643-1.0714,1.5179-2.0536,1.3393-1.0714-0.44643-1.6071s-1.25-1.25-1.4286-1.6071c-0.17858-0.35715-0.44643-1.25-0.44643-1.25l1.6071-2.2322,0.0893-1.875s-1.0714-1.1607-1.1607-1.5178c-0.0893-0.35715-0.0893-1.25-0.0893-1.25l2.5893-1.5179,1.0714-1.875,1.1607-1.9643,0.53572-1.6964-3.5714-1.1607s-0.89286-1.25-0.71429-1.7857c0.17858-0.53572,1.7857-2.4107,1.7857-2.4107s0.89286-1.875,0.89286-2.3214c0-0.44642-1.0714-2.8571-1.0714-2.8571s0-0.71428,0.26785-1.1607c0.26786-0.44643,1.25-0.98215,1.25-0.98215z\",\"name\":\"Republic of Khakassia\"},\"ir\":{\"path\":\"M569.41,325.78c-0.12,0.03-0.22,0.12-0.22,0.34,0,0.45,0.53,1.54,0.53,1.54l0.37,1.06s-0.26,0.88-0.62,1.06-1.78,0.63-1.78,0.63l-2.69,0.09s-1.61,0.26-1.88,0.44c-0.26,0.18-0.9,0.73-0.9,1.09s-0.44,1.96-0.53,2.31c-0.09,0.36-0.16,1.97-0.16,1.97s0.18,0.78,0.63,1.41c0.44,0.62,0.43,1.81,0.43,1.81l-1.25,1.16s0.26,1.67,0.35,2.03,1,3.4,1,3.4l0.43,2.5s-0.28,1.42-0.28,1.69-0.96,4.57-0.96,4.57-0.09,0.98-0.54,1.24c-0.44,0.27-2.06,1.88-2.06,1.88s-0.19,0.99-0.19,1.34c0,0.36,0.37,1.06,0.19,1.5-0.18,0.45-1.97,1.72-1.97,1.72l-2.59,0.72-1.31,0.88-0.29,3.84-0.09,2.22v1.81c0,0.36,0.27,1.34,0.72,1.78,0.45,0.45,2.16,1.97,2.16,1.97l2.21,0.53,1.16,0.78,0.1,2.25s-0.37,1.33-0.82,1.5c-0.44,0.18-2.75,1.82-2.75,1.82l-0.53,1.15,0.97,1.16,1.97,1.59s0.78,0.1,0.87,0.72c0.09,0.63-0.15,2.6-0.15,2.6l-0.47,1.43-1.25,1.07-1.41,1.43-0.19,1.6-1.24,0.81-2.79-0.28-1.59-1.35-1.78-0.68-2.25-0.63s-0.45-0.74-0.63-1.19c-0.17-0.44-0.34-1.68-0.34-1.68l-1.25-0.72-1.87,1-1.26,0.09-0.18,1.69-0.35,2.41-0.53,1.53-0.9,0.97-1.6,0.53s-1.89,0.28-2.25,0.37c-0.35,0.09-1.34,1.41-1.34,1.41s-0.53,0.8-0.44,1.15c0.09,0.36,0.19,1.25,0.19,1.25l-1.16,0.91-2.06,0.81s-0.44,0.9-0.44,1.25c0,0.36,0.16,1.97,0.16,1.97l0.37,1.5,0.1,1.63s0.7,0.7,0.43,1.06c-0.26,0.36-2.78,0.62-2.78,0.62l-1.93-2.78-1-1.5-1.07-2.34-1.06-0.69h-1.72l-1.59,1.69s-0.89,0.81-1.16,1.44c-0.27,0.62,0.01,1.78-1.15,1.78s-3.22-0.38-3.22-0.38l-1.25-1.15-1.97-0.44-1.34-0.19s-0.62,0.64-0.97,0.91c-0.36,0.27-1.35,1.25-1.35,1.25v0.62l-0.72,1.88-1.15,2.22-0.81,0.9-0.29,1.35,0.63,1.68s0.45,0.9,0.81,1.25c0.36,0.36,0.63,0.35,0.72,0.97,0.09,0.63,0.19,2.6,0.19,2.6l-0.38,2.4-0.97,1.88s-1.88,1.79-2.15,2.06-2.13,1.61-2.13,1.97-1.62,4.19-1.62,4.19l-1.25,2.25s-0.69,2.11-0.78,2.56-0.63,3.59-0.63,3.59-0.09,1.33-0.62,1.6c-0.54,0.26-3.69,0.81-3.69,0.81s-2.12,1.07-2.56,1.34c-0.45,0.27-0.72,0.63-0.72,0.63s-0.19,0.52-0.1,0.87c0.09,0.36,1.16,2.25,1.16,2.25l1.44,2.66,1.06,0.56,0.97,1.06,1.09,1.69v0.81l1.25-0.43s0.9-0.91,1.25-1c0.36-0.09,1.78,0.28,1.78,0.28l1.44,0.87s1.43,0.91,1.78,1c0.36,0.09,2.03,1.41,2.03,1.41l4.32,2.87s0.34,0.82,1.06,0.82c0.71,0,2.41-0.38,2.41-0.38l1.78-0.34,1.06,1.15,0.28,1.16,0.28,1.53,2.56-0.81,2.44-2.41s2.14-2.16,3.13-2.34c0.98-0.18,2.12,1.19,2.12,1.19s0.72,1.58,1.25,2.03c0.54,0.44,2.43,2.32,2.78,2.59,0.36,0.27,3.03,1.53,3.03,1.53l2.22,2.66c0.45,0.53,2.52,3.22,2.97,3.22s2.84,0.18,3.38,0.09c0.53-0.09,1.96,0.63,2.5,1.25,0.53,0.63,1.78,2.69,1.78,2.69s1.27,1.69,1.62,1.78c0.36,0.09,1.16,1.88,1.16,1.88s0.89,1.62,1.25,1.53,2.31-0.63,2.31-0.63,0.73,0.15,0.91,0.69c0.18,0.53,0.87,2.59,0.87,2.59s1.18,0.62,1.53,0.53c0.36-0.09,1.88-1.25,1.88-1.25s1.77-0.26,2.12-0.43c0.36-0.18,1.44-0.82,0.82-1.44-0.05-0.04-0.11-0.06-0.16-0.09,0.05-0.01,0.34-0.07,0.34-0.07l1.69-0.62,8.75-2.88s1-1.76,1-2.03,0.63-2.06,0.63-2.06l0.06-2.06,0.81-0.82,1.78-0.96,2.25-0.82,1.16-1.68,1.06-0.82,5.44-2.59,1.62-1.31,0.82-1.1,0.62-2.5,1.94-1.15s1.27-0.9,1.62-1.35c0.36-0.44,0.35-0.97,0.35-0.97l-0.63-0.81-1.25-1.25-0.34-0.81s0.18-0.96,0.62-1.41c0.45-0.44,0.71-0.63,1.07-0.72,0.35-0.09,1.25,0.35,1.25,0.35l1,1.09,0.87-0.47,0.63-1.78s0.81-2.14,0.9-2.5,0.25-1.69,0.25-1.69-0.25-3.05-0.25-3.5v-2.5s0.44-4.01,0.53-4.37,0.35-2.13,0.35-2.13l-0.1-1.87s-0.44-1.17-0.62-1.44-0.16-0.81-0.16-0.81,0.63-1.05,0.72-1.41c0.09-0.35-0.37-0.81-0.37-0.81s-0.54-0.71-0.72-1.06c-0.18-0.36-0.88,0.15-0.88,0.15l-1.44,0.91s-0.79,1.26-1.15,1.53-0.44,1.31-0.44,1.31l-0.28,4.38-0.81,1.34-1.53-0.09c-0.34-0.63-0.73-1.32-0.79-1.6-0.08-0.44-0.43-2.67-0.34-3.65s0.97-4.38,0.97-4.38l1.25-1.25s0.09-1.52-0.53-2.06c-0.63-0.53-1.87-1.07-2.41-1.34-0.53-0.27-1.72-1.35-1.72-1.97,0-0.63,0.92-1.77,1.19-2.13,0.27-0.35,3.93-1.51,4.28-1.78,0.36-0.27,3.57-2.15,3.57-2.15l3.65-1.07,2.78,0.25,2.13-0.34,1.34-2.5,2.88-0.81s1.87,1.25,2.4,1.25c0.54,0,2.22-0.72,2.22-0.72s1.07,0.64,1.25,1,1.63,1.34,1.63,1.34l1.93-0.37s1.35-0.44,2.07-0.35c0.71,0.09,1.7,0.98,2.06,1.07s2.75-0.72,2.75-0.72l1.09-1.5,2.5-1.16s1.35-1.08,1.35-1.53,0.15-3.22,0.15-3.22,1.25-0.61,1.88-0.97c0.62-0.35,2.15-0.18,2.15-0.18s0.17-1.34,0.35-1.79c0.18-0.44,1.33-1.34,1.78-1.43s2.44,0.37,2.44,0.37l1.15,0.97-1.34,1.44-0.72,1.15,0.72,0.72s2.31-0.45,2.94-0.72c0.62-0.26,2.24-0.44,2.78-0.53,0.53-0.09,2.84-1.15,2.84-1.15s0.91-1.08,0.91-1.44-0.2-1.71-0.38-2.16c-0.18-0.44-2.21-1.14-2.65-1.59-0.45-0.45-0.54-2.58-0.72-2.94s-0.9-1.9-0.63-2.44c0.27-0.53,1.06-1.78,1.06-1.78l-0.62-2.5s-0.01-2.48,0.34-2.84c0.36-0.36,2.07-1,2.07-1l2.93,0.81s0.9,1.15,1.35,1.06c0.44-0.09,2.15-0.53,2.15-0.53l0.25-3.56-0.87-1.16s-1.27-1.42-1.63-1.68c-0.35-0.27-1.25-1.25-1.25-1.25l-1.68-2.97-0.25-2.6-0.72-1.68-2.25-0.54-1.78,0.97-3.13,1.53-1.97,0.44-0.72-0.72-0.78-2.84-1-1.59-2.75-2.35-2.34-1.68-2.66-0.91-2.78-0.06s-2.49,0.8-2.84,1.15c-0.36,0.36-1.45,1.52-1.72,1.88-0.27,0.35-0.88,2.5-0.88,2.5l-0.28,2.12v2.5s-0.17,1.36-0.43,1.72c-0.27,0.36-3.94,2.03-3.94,2.03l-1.16,1.72-0.19,2.66-0.97,2.25-2.15,2.22s-0.6,0.63-0.69,0.09-0.62-2.22-0.62-2.22l-2.16-2.34s-0.44-1.23-1.06-0.78c-0.63,0.44-1.63,1.31-1.63,1.31l-3.28,1s-0.89,0.43-1.25,0.87c-0.36,0.45-2.97,0.72-2.97,0.72l-2.03,0.28-2.16,2.5s-0.62,1.26-1.24,0.82c-0.63-0.45-2.22-2.35-2.22-2.35l-0.82-1.59-0.53-2.94,0.16-5.56-0.06-2.56,1.5-2.6,1.87-3.03s0.44-1.61,0.44-2.06-0.53-3.03-0.53-3.03l-2.03-2.25-4.94-3.66s-0.63-0.71-0.63-1.25c0-0.53,0.1-2.31,0.1-2.31l1.15-1.97s0.63-0.35,0-1.06c-0.62-0.72-3.18-4.57-3.18-4.57l0.15-5.34s0.02-0.65-0.34-1.09c-0.36-0.45-2.59-3.28-2.59-3.28l-1.54-1.88s-0.24-0.62-0.68-0.62c-0.45,0-2.16,0.68-2.16,0.68s-1.17,0.82-1.44,0.29c-0.27-0.54-0.25-2.6-0.25-2.6s-0.29-1.16,0.16-1.25,1.62-0.44,1.62-0.44h1.5l0.29-1.43-1.79-1.97-1.53-1.35-1.4-0.06s-0.14-0.03-0.25,0z\",\"name\":\"Irkutsk Oblast\"},\"br\":{\"path\":\"m513.39,476.39s1.6072,0.98214,2.3214,1.1607c0.71429,0.17857,2.8572,1.25,3.3929,1.3393,0.53571,0.0893,1.7857,0.71428,2.5,0.98214,0.71429,0.26786,1.875,0.98214,2.5893,1.3393,0.71428,0.35714,2.2321,0.53571,3.2143,0.625,0.98214,0.0893,2.8571,0.89285,3.4821,1.0714,0.625,0.17858,2.1429,1.0714,2.9464,1.1607,0.80357,0.0893,1.5179,0,2.7679,0.625s2.7679,1.3393,3.125,1.5179c0.35714,0.17857,0.71429,0.26785,0.80357,0.98214,0.0893,0.71428,0,2.6786,0.0893,3.0357,0.0893,0.35715,0.26785,1.6964,0.625,2.0536,0.35714,0.35715,1.6071,1.9643,2.5893,2.5893,0.98215,0.625,1.4286,1.6964,1.9643,2.1429,0.53571,0.44643,2.3214,1.875,2.8571,1.9643,0.53572,0.0893,2.3214,0.625,2.7679,0.625,0.44643,0,5.0893,0.44643,5.0893,0.44643s1.7857-0.80357,2.7679-1.25c0.98214-0.44643,4.0179-1.25,4.4643-1.5179,0.44643-0.26785,1.5178-0.98214,2.6786-1.0714,1.1607-0.0893,4.1964-0.0893,5.0893-0.0893,0.89286,0,4.1072,0.0893,4.1072,0.0893s2.3214-0.0893,3.125,0.44642c0.80357,0.53572,1.6071,1.6072,1.9643,2.1429,0.35715,0.53572,0.625,1.4286,1.0714,1.6071,0.44643,0.17858,1.4286,0.35715,1.875,0.35715,0.44643,0,2.1429-0.26786,2.5-0.35715,0.35714-0.0893,2.2321-0.44642,2.2321-0.44642l0.0893-2.6786s-0.0893-1.7857,0.53571-2.0536c0.625-0.26785,4.4643-1.5178,4.8214-1.6964,0.35715-0.17857,1.25-1.6071,1.25-1.6071s-2.5-0.625-3.3036-0.625c-0.80357,0-1.25-1.4286-1.25-1.4286l1.0714-1.5179,0.17857-1.9643,0.98214-1.0714,0.80358-1.3393s-0.625-0.98214-0.80358-1.3393c-0.17857-0.35715-0.0893-1.4286-0.0893-1.4286l2.2321-1.1607,3.125-0.35714,2.4107-1.1607,3.4821-2.4107,1.7857-0.625s1.4286,0.0893,1.875,0.26786c0.44643,0.17857,2.4107,0.53571,2.5893,0.17857,0.17857-0.35714,1.6071-1.9643,2.0536-2.3214,0.44643-0.35714,2.6786-2.1429,2.6786-2.1429l1.4286-1.1607s0.98215-1.25,1.4286-1.5179c0.44643-0.26786,1.875-1.0714,2.4107-1.0714,0.53571,0,0.98214,0,1.3393-0.26785,0.35715-0.26786,1.1607-1.25,1.3393-1.6072,0.17857-0.35714,1.0714-0.80357,1.6071-0.89285,0.53572-0.0893,5-1.3393,5-1.3393l2.6786-1.5179s1.875-1.5178,2.0536-1.875c0.17857-0.35714,1.6071-2.8571,1.6071-2.8571l0.98214-1.875s-0.26786-1.4286-0.71428-1.7857c-0.44643-0.35715-2.1429-1.6072-2.1429-1.6072l-2.5-1.25s-1.25-0.80357-1.1607-1.6071c0.0893-0.80357,7.5-5.625,7.5-5.625s0.98215-1.6964,1.0714-2.0536c0.0893-0.35714,0.89286-1.9643,1.25-2.3214,0.35715-0.35714,2.5-2.0536,2.5-2.0536s1.4286-0.625,1.875-0.71429c0.44643-0.0893,3.5714-1.5178,3.5714-1.5178l1.25-0.98215s0.44643-2.0536,0.44643-2.5893c0-0.53572-0.80357-3.8393-0.80357-3.8393s-1.0714-0.53571-1.4286-0.89285c-0.35715-0.35715-1.25-0.80358-2.1429-0.80358-0.89286,0-2.6786,0-3.125-0.625-0.44643-0.625-1.3393-1.25-1.6964-1.875-0.35714-0.625-1.1607-1.7857-1.25-2.2321-0.0893-0.44643-0.80357-2.4107-0.98214-2.7679-0.17857-0.35714-1.0714-2.3214-1.0714-2.3214l-2.0536-3.5714-1.0714-2.7679,0.26786-2.0536,1.0714-0.625,0.80357-1.25,1.4286-1.875,0.625-0.98214-2.3214-1.25s-1.875,0.44642-2.2321,0.71428c-0.35715,0.26786-0.98215,1.3393-0.98215,1.3393s0.35715,0.625,0,0.80357c-0.35714,0.17857-2.3214,0.44643-2.3214,0.44643l-1.25,0.89285-0.71429,1.9643v1.6071l-0.98214,0.98215-2.0536,1.0714-1.3393,0.98215-1.1607,1.3393s-1.6964,0.0893-2.0536,0.0893c-0.35714,0-2.0536-0.625-2.0536-0.625l-2.6786,0.17857-2.3214-0.0893-1.9643-1.4286-1.4286,0.26786-2.0536-0.35714s-0.80357-0.71429-1.1607-0.71429c-0.35714,0-2.1429,0.625-2.1429,0.625l-1.5178,1.3393-0.98215,1.0714-2.6786,0.26785-1.9643-0.0893-2.3214,0.44643-2.2322,1.1607-3.3928,1.7857-2.3214,0.98215-1.3393,0.89285-0.89285,1.1607s-0.0893,0.35714,0.0893,0.71428c0.17857,0.35715,0.98214,1.4286,0.98214,1.4286l1.6072,0.80357,0.98214,0.89285,0.83,0.91,0.0893,1.1607-1.6071,2.1428-0.35714,2.2322-0.35715,1.875v2.6786l0.80358,1.6071,1.1607,1.4286s0.26786-0.44643,0.71429-0.80357c0.44642-0.35714,1.1607-2.3214,1.1607-2.3214v-2.0536l0.0893-2.0536,0.98214-1.875,1.6964-1.25,1.1607-0.17857,0.89286,1.1607s-0.0893,1.25-0.26786,1.6964c-0.17857,0.44643-0.53571,0.98214-0.35714,1.3393,0.17857,0.35714,0.89286,1.4286,0.89286,1.4286l-0.17858,2.7678s-0.35714,2.3214-0.35714,2.6786c0,0.35714-0.26786,2.5893-0.26786,3.0357v2.5893c0,0.89285,0,1.5178,0.0893,2.1428s0.0893,1.6964-0.0893,2.1429c-0.17857,0.44643-0.44642,1.25-0.71428,1.9643-0.26786,0.71428-0.35714,1.25-0.44643,1.9643-0.0893,0.71429-1.0714,1.6964-1.0714,1.6964s-0.71428,0.26786-0.98214-0.625-1.6071-0.98214-1.6071-0.98214-0.71429,0.44642-1.0714,0.98214c-0.35715,0.53571-0.89286,1.25-0.35715,1.6964,0.53572,0.44643,1.5179,1.6071,1.5179,1.6071s0.625,0.35714,0.26786,1.1607c-0.35714,0.80358-1.1607,1.0714-1.6964,1.4286-0.53571,0.35714-1.5179,0.89285-1.6964,1.25-0.17857,0.35714-0.71428,1.4286-0.71428,1.7857,0,0.35714-0.44643,2.0536-0.44643,2.0536l-1.3393,0.98214-1.875,1.3393s-2.2321,0.71429-2.6786,0.98214c-0.44643,0.26786-2.5,1.4286-2.8571,1.7857-0.35715,0.35714-0.53572,1.25-1.4286,1.6071-0.89286,0.35714-3.125,1.3393-3.125,1.3393l-0.98215,0.26785s-0.35714,0.80357-0.35714,1.1607c0,0.35714-0.26786,2.2321-0.26786,2.7678,0,0.53572-0.26785,0.98215-0.625,1.6964-0.35714,0.71429-0.98214,1.6964-1.6071,1.7857-0.625,0.0893-2.7679,0.71428-3.2143,0.89285-0.44642,0.17858-2.5,0.89286-3.0357,0.98215-0.53571,0.0893-2.8571,1.0714-2.8571,1.0714l-0.71429,0.80357-1.5179,1.1607-2.0536,0.71429-1.4286,0.80357-1.6964-1.0714-0.35714-0.98214-0.44643-1.25s-0.35714-0.35715-1.25-0.26786c-0.89286,0.0893-2.0536,0.44643-2.0536,0.44643s-1.3393-1.4286-1.6071-1.875c-0.26786-0.44643-1.875-3.125-1.875-3.125l-1.54-1.99-1.34-1.61s-1.1607-0.71429-1.6964-0.71429c-0.53571,0-2.6786-0.17857-3.0357-0.17857-0.35715,0-1.6072-0.89285-1.7857-1.1607-0.17857-0.26786-3.4821-4.2857-3.4821-4.2857l-1.875-0.89285-2.8571-1.9643-1.9643-2.2321-1.0714-1.6964-0.89286-0.625s-0.89285-0.26786-1.25,0.0893c-0.35714,0.35714-0.80357,0.53571-1.3393,0.89285-0.53572,0.35715-1.875,1.4286-1.875,1.4286l-1.3393,1.25-1.9643,1.1607-1.4286,0.89286s-0.89286,1.0714-0.98215,1.6071c-0.0893,0.53571-0.26785,1.1607-0.26785,2.0536,0,0.89286-0.35715,3.3036-0.35715,3.3036z\",\"name\":\"Buryat Republic\"},\"zb\":{\"path\":\"m588.41,500.07s1.1364,1.1364,1.6415,1.5152c0.50508,0.3788,1.6415,1.6415,2.2728,1.894,0.63134,0.25254,2.6516,1.6415,2.6516,1.6415s2.9042,1.0102,3.4093,1.0102h5.5558c1.1364,0,3.283,0.75762,3.283,0.75762s0.88388,0.63134,2.0203-0.25254c1.1364-0.88389,2.3991-1.6415,2.3991-1.6415s0.75762,0.25254,1.6415,0.63135c0.88388,0.3788,1.5152,1.2627,2.1466,1.2627,0.63135,0,3.4093-1.7678,3.4093-1.7678s2.6516-2.2728,3.1567-2.7779c0.50507-0.50508,2.5254-0.88388,3.5355-1.2627,1.0102-0.37881,5.4296-0.50508,5.4296-0.50508s1.894-1.2627,2.2728-1.894c0.37881-0.63135,1.7678-3.4093,1.894-3.9143,0.12627-0.50508,2.7779-2.3991,3.4093-2.9042,0.63135-0.50508,4.9245-2.5254,5.177-3.0305,0.25253-0.50508,2.0203-1.5152,2.0203-1.5152l3.1567,1.2627,2.9042,1.2627s2.2728,0.25254,2.9042,0.25254c0.63135,0,2.2728-0.50508,2.7779-0.88388,0.50508-0.37881,3.1567-1.7678,3.1567-1.7678s3.283,0.25254,3.7881,0.50508c0.50508,0.25253,1.7678,0.88388,2.3991,1.1364,0.63135,0.25254,3.9144,1.389,3.9144,1.389s3.6618,0.3788,4.4194,0.25254c0.75762-0.12627,2.5254-1.7678,2.7779-2.3991,0.25254-0.63134,0.75762-2.3991,1.6415-2.9042,0.88388-0.50507,4.2932-1.5152,4.2932-1.5152s1.389-0.12627,1.5152-1.6415c0.12627-1.5152,0.37881-2.9042-0.25254-3.5355-0.63135-0.63134-1.389-0.88388-1.7678-1.7678-0.3788-0.88389,0.88389-8.9651,0.88389-8.9651l1.6415-3.7881,1.2627-4.2932s1.389-2.2728,1.2627-2.9042c-0.12627-0.63134-0.37881-3.9143-0.37881-3.9143l-1-2.41s-1.1364-0.88388-1.5152-1.389c-0.37881-0.50507-1.0102-0.37881-1.5152-1.0102-0.50508-0.63135-1.7678-1.1364-1.7678-1.7678,0-0.63134-0.25254-1.5152,0.37881-2.0203,0.63134-0.50508,3.0305-3.0305,3.7881-3.4093,0.75761-0.37881,4.5457-2.5254,4.9245-3.0305,0.37881-0.50507,1.389-1.6415,1.7678-2.1466,0.37881-0.50508,0.88388-0.50508,0.63135-1.6415-0.25254-1.1364-2.6516-3.5355-2.6516-3.5355s-0.63135-0.88389-1.5152-0.88389c-0.88389,0-3.1567-0.3788-3.1567-1.0102,0-0.63134-0.37881-1.2627-0.12627-2.0203,0.25254-0.75762,2.0203-2.2728,2.2728-2.9042,0.25254-0.63135,0.37881-1.894,0.37881-1.894l-2.3991-1.6415-2.6516,0.12627s-0.25254-0.25253-0.25254-0.88388c0-0.63134,0.63135-2.7779,0.88388-3.283,0.25254-0.50507,0.50508-1.5152,0.63135-2.1466,0.12627-0.63134-0.25254-1.7678-0.75761-2.3991-0.50508-0.63135-1.5152-1.389-1.5152-1.389s-1.1364-0.50508-1.6415,0.12627c-0.50508,0.63134-1.1364,1.5152-1.1364,1.5152s-1.1364,0.12627-1.6415-0.25254c-0.50508-0.37881-0.88388-4.1669-0.88388-4.1669s-0.88389-1.2627-1.6415-1.389c-0.75762-0.12627-1.6415-0.12627-2.1466,0.50508-0.50507,0.63134-1.0102,1.0102-1.7678,1.5152-0.75762,0.50508-1.2627,1.1364-1.894,0.75762-0.63134-0.37881-1.389-0.75762-1.2627-1.389,0.12627-0.63135,0.75761-1.6415,0.88388-2.1466,0.12627-0.50507-1.7678-2.1466-1.7678-2.1466l-3.283-0.12627-1.1364-1.1364c-0.12627-0.75761,0.25254-2.5254,0.25254-2.5254l-1.389-1.5152-2.7779-4.0406-1.2627-1.894-3.1567-0.3788-1.1364-2.0203-0.25254-2.9042-1.2627-0.3788h-1.2627l-1.6415,0.63134-1.6415-1.0102-3.0304-0.63135-1.894,0.75762-0.37881,1.0102-0.12627,1.894,0.37881,1.894-0.25254,1.5152-0.50507,2.0203,0.75761,2.0203,0.50508,1.389,1.7678,1.5152,0.88389,0.88388,0.25254,1.894s-0.25254,1.0102-0.75762,1.389c-0.50507,0.37881-3.0305,1.2627-3.0305,1.2627s-2.3991,0.63134-2.9042,0.75761c-0.50508,0.12627-3.4093,0.75762-3.4093,0.75762l-1.389,1.5152-0.25254,1.6415,0.75762,2.5254,1.7678,3.283,1.6415,3.7881,0.75762,2.9042,2.0203,2.2728,1.2627,1.1364,2.1466,0.25254,2.2728,0.50507,1.7678,1.389,0.50507,1.6415,0.12627,1.894v2.3991l-1.894,1.6415-3.0305,1.2627-2.5254,1.2627-2.1466,2.0203-1.0102,1.7678-0.75761,2.1466-2.6516,1.6415-1.894,1.389-2.0203,1.5152-0.88388,0.88388v0.75762l0.88388,0.88388c0.50508,0.12627,2.1466,1.2627,2.1466,1.2627l1.894,1.0102s0.75762,0.88389,0.88389,1.389c0.12627,0.50508,0,1.5152-0.12627,2.1466-0.12627,0.63134-2.0203,3.6618-2.0203,3.6618l-1.894,1.6415-3.6618,2.0203-3.1567,0.63135-2.1466,1.0102s-0.75761,0.37881-1.1364,1.0102c-0.3788,0.63135-1.6415,1.2627-1.6415,1.2627l-2.2728,0.50507-1.0102,0.88388s-1.2627,0.88389-1.6415,1.389c-0.37881,0.50508-3.5355,2.9042-3.5355,2.9042l-0.88389,1.389s-0.75761,1.1364-1.389,1.2627c-0.63134,0.12627-2.2728,0.12627-2.2728,0.12627l-2.3991-0.88388-1.6415,1.389s-1.6415,0.37881-2.1466,0.88388c-0.50508,0.50508-2.7779,1.7678-2.7779,1.7678l-2.3991,0.63134s-1.894-0.25253-2.5254,0.12627c-0.63134,0.37881-1.2627,1.5152-1.2627,1.5152l0.63135,1.5152,0.25254,0.88388-0.88389,1.894s-1.0102,0.75762-1.0102,1.2627-0.88388,2.0203-0.88388,2.0203-0.50508,0.88388,0.25253,1.389c0.75762,0.50507,2.5254,0.88388,2.5254,0.88388s1.389-0.12627,1.5152,0.50508c0.12627,0.63134-1.1364,1.6415-1.1364,1.6415l-2.6516,0.75762-2.0203,1.2627-0.88389,1.6415z\",\"name\":\"Zabaykalsky Krai\"},\"am\":{\"path\":\"m662.32,397.46,4.6429-0.17857,2.3214-0.17858,3.5714-1.7857,2.6786,0.35714,3.5714,1.0714,2.1429,1.0714,2.6786,0.53571,4.4643-0.53571,3.0357,0,2.3214,0.53571,2.8571,2.1429,2.1429,0.89286,2.8571,0.35714,2.3214-1.7857,2.3214-0.71429,1.9643,0,2.1429,1.4286,2.1429,0.71429,2.5-0.71429,1.7857-1.9643,1.7857-1.25,4.1072,0,2.5-1.4286,2.1428-0.89286,3.75,0,1.4286,0,1.25-0.71429,0.53571-2.5,1.6071-1.0714,4.2857-2.3214,2.3214-0.89286,3.5714-1.9643,2.8572-1.4286,5-0.89286,3.0357,0,1.6071,1.4286l-0.37,3.2s-1.25,1.6071-1.9643,2.6786c-0.71429,1.0714-1.6072,2.6786-1.9643,3.3929-0.35714,0.71429-1.25,2.1429-1.25,2.1429s-0.53571,2.8571-0.71429,3.5714c-0.17857,0.71428-1.0714,2.8571-1.0714,2.8571s-1.25,1.7857-1.0714,2.5c0.17857,0.71428,1.25,1.25,1.25,1.25l0.89285,0.71428,3.2143-0.71428s1.7857-0.17857,2.6786-0.17857c0.89286,0,2.5,0.89285,2.5,0.89285l0.53572,1.9643,0.89285,2.6786s0.17857,0.53572,1.6072,0.53572,2.6786-1.4286,2.6786-1.4286l0.17857-2.3214s1.0714-0.89286,1.9643-0.89286c0.89286,0,2.5-0.53572,2.5-0.53572l1.25-2.1428,0.35715-2.5,1.9643-1.7857,2.3214,0.17857c0.71,0.19,3.03-1.6,3.03-1.6l1.4286-1.4286s0.89285-1.0714,1.9643-0.35714c1.0714,0.71428,2.3214,2.5,2.3214,2.5v2.8571l0.53572,1.6071,1.9643,1.7857s1.6071,0.71428,1.25,1.6071c-0.35714,0.89286-2.8571,1.9643-3.5714,1.9643-0.71428,0-3.5714,0.89285-3.5714,0.89285l-1.6071,0.17857-1.96,0.89s-0.71429,0.17857-0.17858,1.0714c0.53572,0.89286,1.9643,1.7857,1.9643,1.7857l1.25,0.89286,0.35714,1.9643-3.2143,2.3214-1.6072,3.0357-0.17857,2.1429-1.6071,2.3214-2.6786,0.89285-1.6071,1.4286,1.9643,1.9643,0.35714,1.7857-2.3214,2.3214-1.25,3.5714,1.6071,2.8571s3.5714,1.4286,4.2857,1.6072c0.71429,0.17857,4.8214,0.71428,4.8214,0.71428s1.4286,0.71429,1.9643,1.25c0.53571,0.53572,0.71428,3.2143,0.71428,3.2143l0.35715,2.5s0,0.53571,0.71428,1.0714c0.71429,0.53571,0,3.5714,0,3.5714l-0.71428,2.8571-0.53572,1.7857-1.25,1.7857-3.2143,0.35714-4.1072-0.17857-2.8571-1.4286-1.77-0.53-3.04,1.07h-3.3929-2.5l-3.2143,0.89286s-2.6786-0.35714-3.5714-0.53572c-0.89286-0.17857-3.5714-2.1428-3.5714-2.1428l-3.22-2.67-1.07-2.15-1.43-2.14-1.7857-1.0714-1.0714-1.9643s0-1.0714-0.71428-1.6072c-0.71429-0.53571-2.6786-0.71428-2.6786-0.71428l-0.89286-1.25-1.7857-2.8571-1.9643-2.5s-1.25-1.4286-1.9643-1.6072c-0.72-0.18-1.79-0.36-2.15-1.43-0.35715-1.0714-2.3214-2.6786-2.3214-2.6786l-2.8572-1.4286-2.6786-1.4286-3.0357-0.17857-2.6786-0.17858s-0.71429,0.89286-1.6072,1.0714c-0.89285,0.17857-4.4643-0.35714-4.4643-0.35714l-3.5714-1.25-2.3214,0.35714-1.9643,0.89286-1.6072,1.4286-3.75,0.71429s-3.2143,0.71428-3.3928,0c-0.17858-0.71429-2.8572-4.1072-2.8572-4.1072l-1.7857-1.4286h-1.6071l-1.0714-1.0714v-2.1428l2.1428-2.1429,0.17858-1.4286-0.89286-1.4286-1.25-0.89286-2.1429-0.17857s-0.71428,1.0714-0.71428,0,0.71428-3.3929,0.71428-3.3929l0.89286-2.3214-0.35714-1.9643-1.25-1.7857-1.7857-0.71428-1.25,0.71428-1.25,0.71429-1.25-0.17857s-0.35714-0.71429-0.35714-1.4286c0-0.71429-1.25-2.6786-1.25-2.6786l-0.71429-0.71428-1.7857-0.17857-0.89286,0.89285-1.4286,0.89286-2.5,0.53572s-0.35714-0.35715-0.17857-1.0714c0.17857-0.71429,0.71428-2.5,0.71428-2.5l-1.25-1.4286-0.51-0.52-1.79-0.18h-2.1429l-0.35714-1.0714v-2.1429z\",\"name\":\"Amur Oblast\"},\"ch\":{\"path\":\"M876.72,53.094c-0.34,0-0.66,0.094-0.66,0.094l-1.78,2.124-4.47,1.969s-6.05,2.853-7.12,3.031c-1.07,0.179-1.44,1.969-1.44,1.969s0.37,2.514,0.19,3.407c-0.18,0.892-1.44,1.406-1.44,1.406s-2.32,1.428-2.5,2.5c-0.18,1.071,0.91,2.156,0.91,2.156s2.66,0.906,3.37,0.906c0.72,0,2.85-0.375,3.56-0.375,0.72,0-0.34,1.625-0.34,1.625l-0.91,1.782-2.31-0.907-3.03-0.719s-2.14,0.554-3.03,0.376c-0.89-0.179-2.31-1.438-2.31-1.438l-2.69,0.531-2.88,0.375h-1.06s-0.53,2.656-1.25,2.656c-0.71,0-2.12,1.782-2.12,1.782l-3.41,0.187-2.84,2.875s-2.86,2.496-3.75,3.032c-0.9,0.535-1.61,0.531-2.5,0.531-0.9,0-2.5,1.062-2.5,1.062l-4.85,3.219-5.15,1.062-3.07,0.907s-1.04,2.861-1.93,3.219c-0.9,0.357-2.88,1.968-2.88,1.968l-3.22,1.938-2.12,1.966-2.16,3.03-1.25,1.97-1.06,2.5v3.22s-0.91,0.72-1.63,0.72c-0.71,0-2.84,1.25-2.84,1.25s-0.9,2.51-1.44,3.41c-0.53,0.89-2.85,1.76-3.56,2.12s0.34,1.25,0.34,1.25l2.35,0.53,0.53,2.16,2.69,0.53h2.65,3.75s1.44,1.07,1.97,1.78c0.54,0.72,1.63,1.78,1.63,1.78l-1.82,2.5-2.5,1.1-2.31-0.72s-1.6,1.25-2.31,1.25c-0.72,0-2.16,1.59-2.16,1.59s-1.42-0.71-2.31-1.25c-0.89-0.53-1.96,0-3.03,0s-1.26,1.26-1.44,1.97-0.87,2.84-0.87,2.84-1.09,1.79-1.63,2.5c-0.53,0.72-2.66,2.69-3.37,3.22-0.72,0.54-1.81,0.54-4.13,0.72s-1.07,1.26-1.25,2.16c-0.18,0.89-1.06,3.03-1.06,3.03s-2.15,1.24-2.69,2.31c-0.53,1.07-0.53,2.67-0.53,3.56,0,0.9,0.53,1.82,0.53,1.82h1.06l0.19-0.72,0.19-1.97,0.72-1.06,0.72,0.53,3.9,1.59,5,3.41,0.38,0.87-0.38,5.19-1.06,2.84-4.09,4.47-2.88,3.94-0.34,2.5,1.25,0.19h1.59s-0.17,1.42-0.53,2.31,0.34,1.59,0.34,1.59l2.88,1.25,3.75,0.38,4.62-0.19,2.69,3.41,2.16,1.78h4.47c1.25,0,1.06,2.5,1.06,2.5l1.06,1.59,3.94-0.34s5.36-1.44,6.25-1.44,3.2-0.53,3.56-1.25c0.36-0.71,2.69-1.59,2.69-1.59l1.97-0.91h3.75s2.66-1.24,3.37-1.59c0.72-0.36,0.74-1.98,1.1-2.69,0.35-0.71,0.87-3.03,0.87-3.03l1.25-2.5h1.63l1.78-1.06,1.06-1.63,1.44-0.34,2.31-1.44,1.06-1.25s0.91-0.89,1.63-1.78c0.71-0.89,0.87-1.6,1.4-2.31,0.54-0.72,2.51-1.44,3.22-1.97,0.72-0.54,2.15-2.14,2.5-3.03,0.36-0.9,1.63,0,1.63,0l4.09,0.68s3.22-1.04,5.72-1.93c2.5-0.9,1.08,1.06,0.91,1.78-0.18,0.71,0,3.2,0,4.09s0.88,3.22,1.78,4.47c0.89,1.25,3.9-1.44,3.9-1.44s3.05-1.78,3.94-2.5c0.89-0.71,3.94,0,3.94,0h6.06v-2.84c0-0.72,1.43-3.23,1.97-4.13,0.54-0.89,1.25-3.56,1.25-3.56l0.72-2.5-0.19-4.81s1.79-1.97,3.22-1.97,2.69,1.59,2.69,1.59l4.28,0.91,1.44-0.53s-0.19-3.22-0.19-3.94c0-0.71-0.19-2.84-0.19-2.84l-0.53-3.22s-0.54-2.51-0.72-3.41c-0.18-0.89-0.87-2.12-0.87-2.12l-2.5-1.63,1.25-0.87,4.09-0.38s1.96-2.66,2.5-3.37c0.54-0.72,2.84-2.35,2.84-2.35v-2.5s-1.04-2.13-1.93-3.03c-0.9-0.89-2.35,0.18-3.07,0.53-0.71,0.36-3.03-0.34-3.03-0.34s-1.41-0.88-2.12-0.34c-0.72,0.53-1.63,1.06-1.63,1.06l-1.4-1.06-1.97,1.78-1.44-0.72s-2.84-1.79-4.09-1.25c-1.25,0.53-1.97-0.72-1.97-0.72h-2.5s-0.56,1.25-1.1,1.97c-0.53,0.71-3.03,0.87-3.03,0.87l-2.84,0.91-2.69,3.75-2.69,0.53,1.25-2.5,0.19-1.59-3.03-0.38s2.13-0.88,2.84-1.06c0.72-0.18,3.41-1.06,3.41-1.06l1.97-0.91,0.34-1.59s1.78-3.41,1.78-4.13c0-0.71-0.68-3.22-0.68-3.22l-0.91-2.31s-2.5-4.63-3.22-5.34c-0.71-0.72-1.05-1.78-2.12-1.78-1.08,0-3.07,0.68-3.07,0.68l-1.4,0.91-1.25-1.06s-2.17-1.98-3.6-2.159c-1.42-0.178,0.38-0.719,0.38-0.719l0.87-1.593s-0.16-1.973,0.38-2.688c0.53-0.714,1.97,1.25,1.97,1.25s2.67,1.438,3.56,1.438,1.78,0.531,1.78,0.531,3.41-0.371,4.13-0.906c0.71-0.536,0.68-2.313,0.68-2.313l0.19-2.687,0.72-1.25,1.25-1.782s0.36-1.964,1.25-2.5c0.89-0.535,1.79,0,2.69,0,0.89,0,2.31,1.626,2.31,1.626l1.59,0.718,2.5-1.437s1.28-2.139,1.82-3.031c0.53-0.893,2.84-1.782,2.84-1.782l2.84-2.156,1.44-3.219s2.14-1.973,2.5-2.687c0.36-0.715-0.34-1.782-1.59-1.782h-1.78l-1.82-1.062-1.93-0.188-3.07-1.781-3.18-0.187h-3.75c-0.9,0,0-0.875,0-0.875l2.5-1.625,0.68-2.5-1.06-1.25-2.5-0.532,1.78-1.25,0.53-1.25-2.31-0.531v-2.5s-0.35-1.785-0.53-2.5c-0.09-0.357-0.45-0.437-0.78-0.437zm-77.19,16.062c-0.22-0.01-0.48,0.081-0.78,0.282-1.61,1.071-3.94,2.312-3.94,2.312-1.07,0.357-1.79,1.42-1.97,2.312-0.17,0.893-0.53,2.88-0.53,3.594,0,0.715,0.2,2.496,1.1,3.032,0.89,0.535,3.03,1.598,3.03,2.312s-0.56,2.321,0.15,2.5c0.72,0.179,1.44-0.522,1.97-1.594,0.54-1.071,0.36-3.419,0.72-4.312s1.45-2.491,1.63-3.563c0.17-1.071-0.19-5.187-0.19-5.187s-0.24-1.644-1.19-1.688z\",\"name\":\"Chukotka Autonomous Okrug\"},\"ha\":{\"path\":\"m779.82,276.93c0.53572-0.71428,1.4286-1.4286,1.9643-2.3214,0.53571-0.89285,1.7857-2.5,1.7857-2.5s1.7857-0.17857,4.1072,0.17858c2.3214,0.35714,4.4643,1.4286,5.7143,2.1428,1.25,0.71429,2.6786,1.25,3.0357,2.3214,0.35714,1.0714,1.6071,2.1429,1.6071,3.3929s-1.4286,3.5714-1.4286,4.2857c0,0.71429-0.17857,2.5,0.71428,3.3929,0.89286,0.89286,0.71429,1.6071,1.7857,1.4286,1.0714-0.17857,3.9286-1.0714,5-1.25,1.0714-0.17857,3.3929,0,5,0.53572,1.6071,0.53571,2.8571,0.89285,3.2143,1.6071,0.35715,0.71428,1.0714,1.4286,0.89286,2.5-0.17857,1.0714-2.5,2.8571-2.5,2.8571l0.17857,1.4286,0.89286,1.6072s1.6071,0.71428-0.35714,0.89285c-1.9643,0.17857-3.0357-0.71428-3.0357-0.71428s0.17857-0.17857,0-1.0714c-0.17857-0.89286-0.71428-1.7857-1.7857-1.4286-1.0714,0.35714-2.3214,1.9643-3.0357,2.5-0.71428,0.53571-2.8571,3.0357-2.8571,3.0357s-1.9643,0.71429-2.8571,1.7857c-0.89286,1.0714-4.1071,4.6428-4.1071,4.6428s-0.17858,1.25-1.0714,2.5c-0.89286,1.25-2.3214,2.3214-2.5,3.5714-0.17857,1.25,0,4.1071,0,4.1071s1.4286,1.0714,1.6071,2.3214c0.17857,1.25-0.89286,1.9643-1.25,2.8572-0.35714,0.89285-1.4286,0.53571-1.4286,1.7857s0.17857,5.7143,0.17857,5.7143l-0.35714,4.8214-0.35715,4.1072s-1.0714,1.9643-1.25,3.2143c-0.17857,1.25-0.35714,2.6786-0.35714,3.3929,0,0.71429-0.17857,3.0357-0.17857,3.75,0,0.71429-0.71429,1.9643-0.89286,2.6786-0.17857,0.71429-1.0714,1.25-0.17857,1.9643,0.89286,0.71428,1.9643,1.9643,1.9643,1.9643l-1.7857,3.3929-0.17857,1.9643-1.7857,3.3928-1.25,3.75-0.35715,4.1072-0.71428,1.6071-3.2143,4.1071,0.35715,2.6786s2.1428,1.0714,2.8571,1.0714c0.71428,0,3.3929,0.53572,4.4643-0.17857s2.5-1.4286,3.2143-1.7857c0.71429-0.35715,1.6071-0.89286,2.8571,0.35714s2.5,4.4643,2.5,4.4643,0.17857,1.4286,1.4286,1.0714c1.25-0.35714,1.9643-2.1428,1.9643-2.1428l-1.0714-2.1429,0.53572-2.6786-0.53572-1.7857-1.6071-2.5s-1.7857-1.4286-2.5-1.4286c-0.71429,0-3.75,1.4286-3.75,1.4286s-1.9643,2.3214-1.6071,1.4286c0.35714-0.89285,1.9643-3.3928,1.9643-3.3928l1.6071-0.35715,1.25-1.7857s0.89286-0.71429,1.9643-0.71429,3.2143-1.25,3.2143-1.25,1.25-2.6786,1.0714-0.89285c-0.12,1.78-1.72,4.28-1.72,4.28l1.0714,2.1429,1.9643,2.1429,0.53572,1.7857-0.17857,2.6786,2.3214,1.4286v1.6072,2.8571l1.7857-0.71429c0.71429-0.71428,2.1429-4.2857,2.1429-4.2857l0.89285-3.2143v-2.1428s-1.6071-1.7857-0.89285-1.9643c0.71428-0.17857,4.6428-2.1429,4.6428-2.1429s2.1429-0.53571,3.0357-0.53571c0.89286,0,4.1071,0.17857,4.8214,0.35714,0.71428,0.17857,4.4643,1.6071,4.4643,1.6071s4.4643,1.25,5.1786,1.25c0.71429,0,1.9643,1.7857,1.9643,1.7857s-0.89286,1.9643,0.53571,2.8571c1.4286,0.89286,4.8214,3.0357,4.8214,3.0357l3.75,2.1428s1.4286,3.3929,1.4286,4.2857c0,0.89285-0.17857,4.6428-0.17857,5.7143,0,1.0714,0,5,0.53572,5.7143,0.53571,0.71428,1.0714,2.3214,2.1428,3.2143,1.0714,0.89286,3.2143,4.2857,3.2143,4.2857l2.5,1.25,3.0357,6.9643s1.4286,1.4286,1.6072,2.3214c0.17857,0.89286,1.6071,3.0357,1.7857,3.75,0.17857,0.71429,1.6071,5,1.7857,5.7143,0.17857,0.71428-0.53572,8.5714-0.53572,8.5714l0.53572,3.3928s0,1.25-0.89286,1.9643c-0.89286,0.71429-3.5714,1.6071-3.5714,1.6071l-1.4286,0.17857-1.4286-1.7857-0.53572-2.6786-3.0357-3.0357s-1.9643-1.25-2.6786-0.71428c-0.71429,0.53571-2.3214,1.9643-2.3214,1.9643s-0.89286,1.7857-1.25,2.5c-0.35714,0.71429-1.4286,1.25-0.89286,2.3214,0.53572,1.0714,1.9643,2.6786,1.9643,2.6786s0.35714-0.71428,2.1428-0.53571c1.79,0.18,2.14,2.68,2.14,2.68l-0.89286,3.2143s-1.9643,1.25-2.6786,1.6071c-0.71428,0.35714-2.8571,1.25-1.7857,2.1429,1.0714,0.89285,2.3214,1.25,2.3214,1.25s0.71428,1.25,0,1.9643c-0.71429,0.71429-2.3214,2.1429-2.3214,2.1429s-1.7857,0.35714-3.0357,1.25-3.2143,1.4286-4.2857,1.6071c-1.0714,0.17857-2.8571,1.25-4.1071,0s-2.1429-0.89285-2.5,0.17857c-0.35715,1.0714-1.6072,0.89286-1.7857,1.9643-0.17857,1.0714,0,2.8571,0.35715,3.5714,0.35714,0.71428,0,3.0357,0,3.0357s-2.3214,1.9643-2.5,1.25c-0.17858-0.71428,0.17857-2.3214-0.35715-3.2143-0.53571-0.89286-2.3214-2.5-2.3214-2.5s-2.8571-1.4286-1.7857-2.3214c1.0714-0.89286,2.8571-2.6786,3.2143-3.2143,0.35714-0.53571,0.35714-3.0357,0.35714-3.0357s-2.1429-0.89286-2.6786-1.7857c-0.53572-0.89285-1.0714-3.3928-1.0714-4.1071,0-0.71428-0.71429-3.3929,0.17857-3.75,0.89286-0.35714,2.8571-1.9643,2.8571-1.9643l0.53572-1.9643s-0.53572-0.35714-2.1429-0.35714c-1.6071,0-2.5-0.17857-3.9286,0.89285s-1.4286,1.0714-2.5,2.5-2.1429,2.6786-3.2143,3.2143c-1.0714,0.53571-2.6786,0.71429-2.6786,0.71429s-4.1071-0.71429-4.2857-1.4286c-0.17857-0.71428-1.6072-1.9643-2.5-1.9643-0.89286,0-2.1429,0.35714-3.2143,0.89286-1.06,0.55-1.95,0.73-2.84,0.73-0.89286,0-4.2857,1.0714-4.2857,1.0714s-2.1428,1.7857-3.2143,1.7857c-1.0714,0-2.1014,0.40945-2.28-0.66198-0.17857-1.0714-1.0823-3.4216-1.0823-3.4216l-1.5332-4.3507s-2.6677-0.69261-3.7392-0.87119c-1.0714-0.17857-3.8221-0.85138-3.8221-0.85138l-2.4892-1.1525s-2.1249-2.2078-1.7678-2.9221c0.35714-0.71428,1.7028-4.0044,2.4171-4.5401,0.71428-0.53572,1.2608-1.4069,1.2608-1.4069l-1.25-2.3214s-1.7965-1.2085-0.90368-1.7442c0.89286-0.53571,3.7608-2.0058,3.7608-2.0058l2.0906-4.0892,1.5025-3.2341,3.5498-2.6767-0.89285-1.9643-2.4171-1.7118-0.11357-1.6288,2.5306-1.1237,4.1071-0.71428,2.6786-0.89286,1.0714-1.25-0.53571-1.6071-1.986-1.47-1.0083-2.5108-0.0631-2.4477-1.47-2.0058-1.7226-0.67282-2.2583,1.7442s-1.6703,1.0823-2.3846,1.4394c-0.73,0.34-2.87,0.19-2.87,0.19l-2.3214,1.25-0.44008,2.5-0.80992,2.3214-2.5,1.0714-2.1429,0.53571-0.53571,2.4585-1.4809,1.4286-2.3431-0.17857-0.99746-2.4585-1.0714-2.5s-1.2608-0.51404-1.9751-0.69262c-0.71428-0.17857-4.4534,0.51405-4.4534,0.51405l-1.7857-0.17857-1.7857-1.25,1.9643-5.5357,0.89286-4.1072s1.25-2.3214,1.9643-3.0357c0.71428-0.71429,3.0357-5,3.0357-5l0.35714-2.6786s-0.53571-1.25-1.6071-1.6072c-1.0714-0.35714-5.3571,0.17858-5.3571,0.17858l-2.6786,0.53571s-3.3424,2.5325-4.0567,1.8182c-0.71428-0.71429-1.1219-3.9611-1.1219-3.9611s-3.0376-1.6288-3.0376-2.5217c0-0.89286,1.9662-1.5855,1.9662-1.5855s0.53571-1.0714,0.71428-2.1429c0.17857-1.0714-0.20024-2.8138-0.20024-2.8138l-2.6281-0.77741s-1.4069-0.89472-2.1212-1.0733c-0.71428-0.17857,1.1996-2.2998,1.1996-2.2998l0.89286-1.6072-0.35714-1.0714s-2.2493-0.54655-2.2493-1.2608c0-0.71429,1.6505-3.3604,1.6505-3.3604l-1.5873-1.6703-2.5415-0.82971-0.80806-1.618s0.69262-0.73594,1.5855-1.0931c0.89286-0.35714,1.0498-0.61866,1.0498-0.61866l-1.3852-0.89286v-2.4062c0-0.71429-0.074-2.3304-0.074-2.3304s-1.2718-1.1078-1.4502-2.345c-0.1894-1.3131,2.6371-1.7532,2.6371-1.7532l-0.93619-0.82972-0.49238-1.4917,0.2417-2.1339,2.7525-0.86037,2.9094-0.89285,2.4477,0.1371,0.70345-1.8922,3.2034,0.21106,2.9203,0.0108s0.35715-1.7749,0.35715-2.4892c0-0.71428-1.8705-1.618-1.4286-2.2691,0.40112-0.59101,1.5657-0.89285,2.4585-1.0714,0.89286-0.17858,3.9286-0.71429,4.1072-1.4286,0.17857-0.71428,2.5829-6.1562,2.5829-6.1562s0.96683-1.0083,1.6811-1.1869c0.71429-0.17857,3.9286-0.93432,3.9286-0.93432l-1.764-2.794-3.0051-2.8246-1.6378-4.8539-2.3214-2.1428-1.4286-1.7857v-5.3571l3.0357-6.7857-1.0714-3.2143-0.72512-5.8585,0.81889-2.85s3.5498,0.11543,4.264,0.29401c0.71428,0.17857,7.7634,0.22004,7.7634,0.22004s0.95599-4.0152,1.3131-4.7295c0.35714-0.71428,1.3871-0.826,2.28-1.0046,0.89286-0.17857,3.3495-0.62051,3.3495-0.62051l2.5433,1.1562,1.6071-1.0714z\",\"name\":\"Khabarovsk Krai\"},\"eu\":{\"path\":\"m781.96,462.82c0.98214,1.875,1.1607,1.875,1.875,2.5893l2.6786,2.6786s0.80357,1.1607,1.0714,1.7857c0.26786,0.625-0.0893,1.6964,0.625,1.9643,0.71429,0.26785,2.3214,0.53571,2.7679,0.625,0.44643,0.0893,1.4286,1.0714,2.3214,1.1607,0.89285,0.0893,1.6071,0.0893,2.1428-0.35714,0.53572-0.44643,1.0714-1.25,1.6964-1.7857,0.625-0.53571,2.5893-1.4286,3.125-1.6964,0.53572-0.26785,1.875-0.625,2.3214-1.0714,0.44643-0.44643,1.1607-0.98215,1.1607-2.0536s0.26785-2.7678,0.71428-3.125c0.44643-0.35714,2.9464-1.9643,3.5714-2.5,0.625-0.53571,1.6964-2.2321,2.1429-2.8571,0.44643-0.625,1.875-2.6786,2.2321-3.2143,0.35714-0.53572,2.1429-2.0536,2.1429-2.0536l2.0536-2.3214,0.98214-1.0714,2.6786-1.875,0.71429-0.80357,0.17857-1.1607,0.0893-0.35714-1.5179-0.17857-1.875-0.0893-1.6964,0.44643-1.6964,1.1607-1.3393,1.25-0.80358,1.0714-1.25,1.6072-1.4286,0.98214-1.7857,0.625s-1.25,0.17857-1.7857,0c-0.53571-0.17857-2.1428-0.71429-2.1428-0.71429l-1.4286-0.625-0.80358-0.98214-0.89285-0.625s-0.80357-0.26786-1.1607-0.17857c-0.35714,0.0893-1.7857,0.625-1.7857,0.625l-2.0536,0.71429-2.4107,0.17857s-1.0714,0.44643-1.7857,0.625c-0.71429,0.17857-2.4107,0.80357-2.4107,0.80357l-1.4286,0.89285-1.875,0.26786-0.80357,0.17857-0.35714,0.98215-0.0893,1.4286s-0.44643,1.1607-0.44643,1.5178c0,0.35715-0.53571,1.875-0.53571,1.875l-0.53571,1.1607-0.71429,1.4286z\",\"name\":\"Jewish Autonomous Oblast\"},\"pr\":{\"path\":\"m822.68,473.71c0,0.53571,0.53571,1.25,0.53571,1.25l1.4286,1.4286s0.35715,1.0714,0.44643,1.4286c0.0893,0.35714-0.625,2.0536-0.625,2.0536l-1.1607,2.7679s-0.0893,2.2321,0,2.5893c0.0893,0.35715,0.625,1.0714,0.89285,1.5179,0.26786,0.44643,0.80358,1.1607,0.80358,1.5179,0,0.35714-0.80358,1.9643-0.80358,1.9643v1.9643c0,0.44643-0.44642,1.9643-0.44642,1.9643s-0.17858,0.0893-0.17858,1.0714v2.7679c0,0.71429-0.26785,3.0357-0.35714,3.3929-0.0893,0.35714-1.9643,0.53571-2.3214,0.53571-0.35714,0-1.3393-0.98214-1.3393-0.98214s-0.98215-1.6071-1.1607-2.0536c-0.17857-0.44643-1.3393-1.5179-1.3393-1.875,0-0.35715-0.26786-1.6072-0.89286-1.7857-0.625-0.17857-1.5179,0.26786-1.5179,0.26786s-0.53571,0.89286-0.625,1.25c-0.0893,0.35714,0,0.98214-0.0893,1.4286-0.0893,0.44643-0.71429,2.5-0.71429,2.5s-0.625,0.625-1.1607,0.89286c-0.53572,0.26786-2.2322,1.0714-2.2322,1.6071,0,0.53572,1.0714,0.71429,2.1429,2.0536,1.0714,1.3393,3.125,4.6429,3.125,4.6429l2.5,4.2857,1.4286,4.9107s0.44643,1.6071,0.625,2.1429c0.17857,0.53571,0.89286,1.1607,0.98215,1.9643,0.0893,0.80357,0.53571,2.5-0.35715,2.8571-0.89285,0.35715-4.0178,1.0714-4.0178,1.0714l-0.71429,0.625,1.1607,0.71429s0.625,0.44643,1.0714,0.53571c0.44643,0.0893,0.53572,1.4286,0.98215,1.4286,0.44642,0,1.875-0.35714,2.4107-0.71428,0.53571-0.35714,1.3393-0.625,2.1429-0.625,0.80357,0,1.4286-0.44643,1.4286-1.0714,0-0.625-0.625-3.3929-0.625-3.8393,0-0.44642,1.5179-2.5893,1.5179-2.5893v-2.1429c0-0.35714-0.17858-1.4286,0.35714-1.5179,0.53571-0.0893,2.9464-0.71428,2.9464-0.71428s0-1.1607,1.0714-0.26786c1.0714,0.89286,1.5178,2.9464,1.5178,2.9464s1.875,0.35714,2.2322,0.17857c0.35714-0.17857,0.98214-0.625,1.5178-0.98214,0.53572-0.35714,2.5893-0.53572,3.3929-0.53572,0.80357,0,2.1429-0.44642,2.1429-0.44642l-0.26786-1.1607s2.0536-1.25,2.5-1.5179c0.44643-0.26785,2.2321-1.1607,2.8571-1.7857s1.5179-1.4286,1.9643-2.4107c0.44643-0.98215,1.3393-3.125,1.5179-3.4822,0.17857-0.35714,1.1607-2.5,1.4286-3.2143,0.26785-0.71429,0.89285-2.3214,1.3393-3.125,0.44643-0.80357,1.5179-2.8572,1.5179-2.8572s-0.0893-2.3214-0.0893-2.8571c0-0.53571-0.26785-1.875-0.625-2.8571-0.35714-0.98214-0.53571-1.1607-0.44642-2.1429,0.0893-0.98214,0.98214-1.6071,1.6071-2.0536,0.625-0.44643,1.0714-1.4286,1.0714-1.9643,0-0.53571-1.25-2.9464-1.25-2.9464s0.0893-1.1607,0.35714-1.6964c0.26786-0.53572,1.5179-1.7857,1.5179-1.7857l0.17857-2.9464s0.80357-2.2321,0.80357-2.6786c0-0.44643,0.26786-3.9286,0.26786-3.9286l0.89285-2.1429s0.26786-3.3928,0.26786-3.9286c0-0.53571-0.53571-5-0.53571-5.5357,0-0.53572-0.17857-4.1071-0.17857-4.7321s-0.71429-2.1429-0.71429-2.5893c0-0.44643,0.0893-2.1429,0.26786-2.5893,0.17857-0.44643,0.98214-1.9643,0.98214-1.9643s-0.0893-2.0536-0.0893-2.5893c0-0.53571,0.17858-1.6964-0.44642-1.7857s-2.3214,0.80357-2.3214,0.80357l-1.7857,0.71429-1.5178,0.17857-0.71429-0.44643-1.0714-1.4286s-0.26786-1.4286-0.26786-1.7857c0-0.35714-0.53571-1.1607-0.53571-1.1607l-1.25-1.3393-1.3393-1.3393-1.4286-0.71429-1.0714,0.17857s-0.98214,0.17858-1.0714,0.53572c-0.0893,0.35714-0.53572,0.44643-0.80358,0.80357-0.26785,0.35714-1.1607,1.3393-1.1607,1.3393l-0.53571,1.0714-0.44643,1.0714-0.80357,0.80357-0.17858,0.71429,0.35715,0.80357,0.89285,0.98214s0,0.71429,0.53572,0.80358c0.53571,0.0893,1.0714,0.0893,1.0714,0.0893h1.3393l1.25,0.625,0.71429,0.80357,0.0893,1.3393-0.26785,1.4286-0.44643,1.25-0.53572,0.71429-1.5178,0.89285-1.7857,0.89286-0.89285,0.89286,0.26785,0.80357,1.9643,0.80357,0.80357,0.98214-0.0893,0.71429-0.80357,1.0714-1.0714,1.0714-1.875,0.89286-1.7857,0.98214-3.64,1.44-1.6964,0.44643-1.9643,0.26786-0.89286-0.44643-1.25-0.71429s-0.53571-0.26786-0.89285,0c-0.35715,0.26786-0.625,0.98214-0.625,0.98214l-1.5179,1.0714-0.53571,1.6964,0.0893,1.3393s0.35714,0.71428,0.44643,1.1607c0.08,0.44,0.08,1.33,0.08,1.33l-0.0893,1.6071-0.98214,1.0714z\",\"name\":\"Primorsky Krai\"},\"ma\":{\"path\":\"m829.64,182.46s1.0714,0.71428,2.1429,1.25c1.0714,0.53571,3.0357,2.1429,3.2143,2.8571,0.17857,0.71429,0.17857,2.3214,1.0714,2.8571,0.89286,0.53572,3.5714,1.0714,3.5714,1.0714l1.9643,0.89286,1.0714,1.7857,3.0357,1.6072s0.71429,1.0714,0.17857,1.9643c-0.53571,0.89286,0,2.6786,0,2.6786l2.5-0.35714,2.8572,0.35714,1.6071,2.3214,1.9643,2.6786,2.1429,1.0714,1.9643,2.1429,1.0714,1.9643,0.17857,2.5s-0.35715,2.5,0,3.2143c0.35714,0.71429,1.0714,3.75,1.0714,3.75l1.0714,1.7857s0.53572,1.0714,0.53572,1.7857c0,0.71428-0.89286,2.1429-0.89286,2.1429l0.17857,1.7857-1.9643-0.53571-0.35715-1.9643s0.35715-0.71429-0.53571-0.35714c-0.89286,0.35714-1.7857,1.4286-1.7857,1.4286s-0.35715,0.89286-1.0714-0.53572c-0.71429-1.4286-1.7857-1.9643-1.7857-1.9643s-1.6071-0.71429-1.6071-1.9643-1.7857-2.3214-1.7857-2.3214l-1.6072-1.4286s-0.35714,1.7857-0.35714,2.5c0,0.71429,1.4286,1.4286-0.35714,1.4286s-4.1072,0.71429-4.1072,0.71429l-0.89285,1.0714-0.35715,2.6786-1.25,1.25-2.6786,2.8571-0.35714,2.3214-1.0714,1.9643,0.53572,2.3214,1.4286,1.4286s0.53571,0.71428,0.53571,1.4286v2.6786l0.17857,1.6071,1.6072,1.4286,0.17857,4.4643v4.4643l0.17857,3.0357,1.7857,2.6786,1.0714,3.0357,0.35714,0.89285,1.9643,0.35715,1.0714-1.25,1.9643-1.0714s1.6072-0.17857,2.3214-0.17857c0.71429,0,1.6072,0.89285,1.6072,0.89285l0.17857,0.89286-1.7857,1.4286-1.7857,0.71429v1.0714l-0.71429,0.89285-1.7857,0.89286-1.25,0.53571-0.53572,0.71429-0.17857,2.6786v2.3214l-0.89285,0.71429-1.7857-0.89286-0.71428,1.4286-0.53572,2.5-1.0714,1.25-3.2143,0.71429-1.25-0.17858-0.53572-1.6071,2.5-1.6071,1.25-1.9643s1.9643-1.7857,0.53572-1.7857-2.6786,1.0714-2.6786,1.0714l-0.89286,1.25-0.89286,0.53571s-0.89286,0.35714-1.7857-0.17857c-0.89286-0.53571-2.3214-0.71429-2.3214-0.71429s-1.25,0.89286-1.25,1.4286c0,0.53571,0.35714,1.4286-0.53572,1.4286-0.89285,0-3.2143,0.17857-3.2143,0.17857l-2.5,1.6071-2.5,0.89286-1.0714,2.1429,0.35714,1.7857,0.53572,1.9643,0.35714,0.89285,1.6071,1.0714s0.17857,0.89286-1.7857,0.89286h-4.4643l-1.0714,2.1429-1.0714,1.25-2.5,0.35714-2.1429-2.8571-2.6786-1.25s-1.9643-0.71429-2.6786-0.71429c-0.71429,0-3.3929,0.17857-3.3929,0.17857l-2.1429,0.89286-1.7857,0.17857-1.25-0.89286-1.0714-1.7857-0.17857-2.3214,1.25-1.9643,0.17857-2.5-2.5-3.9286-2.3214-1.4286-2.3214-1.25-2.6786-0.71428-2.6786-0.71429-2.1429,0.71429-1.0714,1.4286-1.0714,1.9643-0.89285,1.25h-1.25l-1.25-1.9643-0.17857-0.89286,1.25-0.71429,0.35714-1.4286v-1.25l-1.25-1.25-5.7143-6.7857s-0.35714-1.0714-0.35714-1.7857v-3.2143l-1.78-0.88-0.89286-0.35714-0.17857-3.0357-0.53572-1.4286-1.0714-0.35714-0.35714-1.25,1.6071-1.4286,2.1429-0.17857,1.0714-0.53572,1.0714-1.0714,2.1429-0.17857,1.9643,0.17857,0.53572-1.0714-1.25-1.9643-1.4286-1.25-0.35714-2.1429s1.25-0.53571,1.9643-0.53571c0.71428,0,3.5714-1.0714,3.5714-1.0714l-0.17858-2.6786s0.53572-0.35714,1.25-0.35714c0.71429,0,3.9286,0.35714,3.9286,0.35714l2.1428-1.7857,4.1072-6.4286-0.17858-3.0357-1.4286-1.4286-2.6786-2.8572s-1.25-0.89285-1.4286-1.6071c-0.17857-0.71428-0.35714-1.7857-0.35714-1.7857l2.1428-2.3214,0.17858-1.6071-1.25-1.25-2.5,0.17857-0.71429-0.53572-1.0714-1.0714v-0.71429l3.06-0.86,1.25-1.0714-0.53572-1.4286-1.25-0.89285-0.17857-1.6072,2.1429-3.0357,3.75-1.25,2.1428-1.25-1.25-2.5s0.17858-0.35714,0.89286-0.35714c0.71429,0,3.3929,0.71428,3.3929,0.71428l1.0714-0.17857-0.53572-3.5714v-1.6071l1.4286-0.53572,0.2-2.66-0.17858-0.53571h2.5l1.6072,0.53571,0.53571,1.9643,1.0714,1.0714s0.53571,0.53571,1.25,0.53571,3.75-0.71428,3.75-0.71428l3.5714-0.71429,2.3214-0.35714,2.6786-1.0714,2.3214-1.4286,2.3214-0.89286,1.9643-0.17857,2.8571-0.35714,2.5-1.6072z\",\"name\":\"Magadan Oblast\"},\"sh\":{\"path\":\"M943.16,321.59c-0.45,0.19-0.81,0.37-1.19,0.94s-0.31,1.53-0.5,1.85c-0.19,0.31-1.53,1.12-1.53,1.12-0.51,0.51-0.87,1.06-2,1.25-1.14,0.19-2.59-0.23-2.85,0.66-0.25,0.88,0.06,2.12,0.69,2.25,0.63,0.12,1.53,0.44,2.1,0.25,0.56-0.19,1.56-1.25,1.56-1.25s0.62,0.3,1,0.93c0.38,0.64,0.97,1.78,0.97,2.03,0,0.26,0.19,1.06-0.07,1.57-0.25,0.5-0.81,2.78-0.56,3.03s1.24,0.9,1.94,0.9c0.69,0,1.09,0.17,1.78-0.78,0.69-0.94,0.93-1.74,1.25-2.56s0.78-1.9,1.09-2.16c0.32-0.25,0.48-1.02-0.22-1.65-0.69-0.63-0.93-1.75-1-2.06-0.06-0.32-0.56-1.09-0.24-1.53,0.31-0.45,1.12-1.31,1-1.69-0.13-0.38-1.38-1.09-1.82-1.47s-0.96-1.82-1.4-1.63zm2.15,20.44s-0.43,0.15-0.69,0.85c-0.25,0.69-0.5,1.74-0.31,2.31s0.56,1.4,0.81,1.78c0.26,0.38,0.75,1.31,0.88,1.62,0.13,0.32,0.53,0.72,1.03,0.91,0.51,0.19,1.12,0.07,1.25-0.44,0.13-0.5,0.19-1.4,0.19-2.03s-0.19-2.15-0.19-2.53,0.07-0.87-0.31-1.31-2.66-1.16-2.66-1.16zm2.53,9.22c-0.56,0.19-1.9,0.5-2.15,0.69-0.26,0.19-0.63,0.52-0.5,1.03,0.12,0.5-0.2,1.24,0.5,1.69,0.69,0.44,2.15,0.96,2.53,1.09s0.55,0.44,1.19,0.13c0.63-0.32,1.09-0.59,1.03-1.41-0.07-0.82-0.59-1.62-0.78-1.88-0.19-0.25-1.5-1.34-1.5-1.34h-0.32zm-117,4.5l-1.87,1.25s0.5,1.12,0,1.12h-1.78s-1.26,0.78-0.5,1.29c0.76,0.5,2.4,0.87,3.03,1,0.63,0.12,1.52,0.65,2.16,1.15,0.63,0.51,1.49,0.87,1.74,1.63,0.26,0.76,0.63,2.28,0.63,2.28l0.91,1.62-0.54,2.16-1.74,0.13s-0.91-1.14-1.41-0.13c-0.51,1.01-0.5,1.77-0.5,2.41,0,0.63,0.27,1.24,0.91,1.37,0.63,0.13,1.48,0.4,2.74,1.41,1.27,1.01,2.03,2.9,2.29,3.53,0.25,0.63,0.24,2.65,0.5,3.41,0.25,0.75,1.4,2.02,2.03,2.53,0.63,0.5,2.03,2.52,2.28,3.03,0.25,0.5,1.25,2.4,1.5,2.9,0.25,0.51,1.78,1.75,1.78,1.75s1.24,1.15,2,1.66,3.8,1.37,4.56,1.37,3.03,0.66,3.28,1.16c0.26,0.51,2.78,5.66,2.78,5.66l5.57,8.34s2.52,2.15,3.15,2.66c0.64,0.5,2.4,3.9,2.91,4.65,0.51,0.76,2.12,4.44,2.5,4.94,0.38,0.51,3.69,5.06,3.69,5.06s2.77,1.88,3.4,2c0.64,0.13,3.41,1.91,3.41,1.91s2.65,2.9,2.78,3.41c0.13,0.5,0.75,3.53,0.75,3.53l2.16,3.4,3.15,2.66,2.5,5.19,0.53,2.25s0,2.15,0.5,2.53c0.51,0.38,5.29,4.06,5.29,4.06l1.65,0.88,1.78,0.25v-2.54s-0.9-1.65-1.15-2.15c-0.26-0.51-0.88-3.03-0.88-3.03s-0.5-0.74-0.5-1.63c0-0.88,0.75-2.4,0.75-2.4s1.53-0.25,2.16-0.25,1.24-0.12,2.25-0.63c1.01-0.5,2.41-0.37,2.41-0.37l2.28,2,1.37,0.78s0.5-1.4,0.5-2.03c0-0.64,0.01-1.53-0.62-2.41-0.64-0.88-1.63-1.88-1.63-1.88l-2.03-1.65s-0.99-1.38-1.75-1.25-1.15,0.24-1.41,0.75c-0.25,0.5,1.52,2.66,0,2.28-1.51-0.38-2.4-0.9-2.78-1.41-0.38-0.5-1.62-1.87-1.62-1.87s-2.4-1.28-3.03-1.53c-0.64-0.26-2.4-0.88-3.04-0.88-0.63,0-4.06-1.15-4.06-1.15l-2.12-2.38-2.41-6.31s-1.12-1.65-1.25-2.41-1.03-3.15-1.16-3.65c-0.12-0.51-0.37-2.28-0.62-2.78-0.25-0.51-1-2.29-1-2.29l-0.53-3.28,1.78-1.62s2.77-1.03,3.41-1.03c0.63,0,5.06-0.13,5.06-0.13l2.4,0.63s2,0.25,2.5,0.25c0.51,0,1.03,0.51,1.16-0.5s-1.53-2-1.53-2l-3.53-0.53-3.66-1.26-2.4-1.78-18.57-15.25-1.5-1.28-1.78-0.12s-0.87,0.13-1.25-0.63-0.4-1.27-1.15-1.9c-0.76-0.64-2.5-1.88-2.5-1.88s-1.52-0.25-2.66-0.5-3.66-1.4-3.66-1.4l-0.4-2.79-1.38-1.25-0.62-1.28,1.25-1.62-0.25-1.91-2.53-2.12-3.54-0.79s-2.4-0.99-2.65-1.5c-0.25-0.5,0.12-2.15,0.12-2.15s-0.62-1.12-1.12-1.5c-0.51-0.38-4.28-1.91-4.28-1.91l-2.91-1.9-1.03-2.63s0.01-1.91-0.63-1.91c-0.63,0-2.78-0.87-2.78-0.87zm119.16,7.94c-0.88,0.25-1.53,0.4-1.72,0.97-0.19,0.56,0.06,1.24,0.31,1.43,0.26,0.19,0.84,0.69,1.47,0.57,0.63-0.13,1.56-0.19,1.82-0.57,0.25-0.38-1.13-1.46-1.32-1.78-0.19-0.31-0.56-0.62-0.56-0.62zm1.75,4.06c-0.51,0.25-1.19,0.56-1.37,1.06-0.19,0.51,0.36,1.37,1,1.75,0.63,0.38,1.05,0.63,1.56,0.06,0.5-0.56,1.09-1.62,1.03-1.93-0.06-0.32-2.22-0.94-2.22-0.94zm0.19,6.97c-0.18,0.01-0.34,0.06-0.5,0.16-0.63,0.37-0.82,1.18-0.82,1.56s0.88,3.09,0.88,3.47-0.87,2.4-1,2.9c-0.13,0.51-0.01,1.33,0.62,2.6,0,0,1.13-0.25,1.38-0.25s1.72-0.94,1.84-1.19c0.13-0.25,0.44-2.28,0.44-2.91s-0.06-2.02-0.12-2.47c-0.07-0.44-0.63-1.4-0.63-1.78s-0.31-1.43-0.69-1.69c-0.28-0.18-0.87-0.44-1.4-0.4zm-4.41,14.53s-1.28,0.03-1.53,0.16c-0.25,0.12-0.69,0.49-0.81,0.75-0.13,0.25-0.57-0.07,0.06,0.62,0.63,0.7,1.02,1.38,1.66,1.38,0.63,0,2.06,0.65,2.31,0.65s1.03-0.21,1.22-0.47c0.19-0.25,0.75-0.49,0.31-1.18-0.44-0.7-0.97-1.06-1.22-1.19s-2-0.72-2-0.72zm1.81,6.47c-0.19,0.31-1.37,1.18-1.43,1.44-0.07,0.25-0.32,0.74-0.38,1.25-0.06,0.5-0.31,1.77-0.31,2.09s-0.53,1.59-0.78,2.16c-0.26,0.56-0.5,1.49-0.44,2.12s-0.07,1.09,0.19,1.66c0.25,0.57,0.24,1.18,0.56,1.37s-0.04,1.29,1.09,0.6c1.14-0.7,1.63-1.34,1.82-1.79,0.19-0.44,0.53-2.09,0.72-2.34,0.18-0.25,0.56-1.43,0.68-1.81,0.13-0.38,0.63-1.9,0.63-2.22s0.06-1.59-0.25-2.22c-0.32-0.63-1.19-1.31-1.19-1.31l-0.91-1zm-4.9,15.4c-0.26,0.07-0.97,0.19-1.28,0.44-0.32,0.26-0.63,0.56-0.69,0.75s-0.5,0.94-0.5,1.19,0.06,1.15,0,1.41c-0.06,0.25,0,0.56-0.56,0.81-0.57,0.25-1.22,0.43-1.6,0.56s-0.81,0.44-1.06,0.69-0.94,0.72-0.94,0.72-0.53,0.18-0.53,0.5c0,0.31,0.41,0.99,0.53,1.25,0.13,0.25,0.75,1.22,0.75,1.22l-0.18,0.75s-1.04,0.74-1.1,1.06c-0.06,0.31-0.12,1.59-0.12,1.97s0.06,1.74,0.06,2c0,0.25,0.19,1.84,0.19,2.09s0.15,1.34,0.28,1.97c0.12,0.63,0.12,1.06,0.43,1.44,0.32,0.38,0.56,1.03,0.88,1.22s0.5,0.68,0.88,0.62c0.37-0.06,1.71-1.03,1.71-1.03s0.63-0.62,0.75-1.06c0.13-0.44,0.44-2.16,0.44-2.16s0.19-1.37,0.13-1.69c-0.07-0.31-0.69-0.65-0.75-1.22-0.07-0.56-0.07-0.8,0-1.68,0.06-0.89,0.87-2.09,1.06-2.35,0.19-0.25,0.84-1.18,0.97-1.93,0.12-0.76-0.07-1.84,0.19-2.16,0.25-0.32,0.8-0.75,1.06-1.06,0.25-0.32,1.06-1.65,1.18-2.03,0.13-0.38,0.13-1.4,0.13-1.91s-0.31-1.37-0.56-1.56c-0.26-0.19-1.75-0.82-1.75-0.82zm-8.35,23.69c-0.31-0.01-0.62,0-0.75,0.03-0.25,0.07-0.56,0-0.81,0.32-0.25,0.31-0.78,0.71-1.22,0.84s-0.87,0-0.93,0.31c-0.07,0.32-0.26,0.87-0.26,1.13,0,0.25,0.06,0.74,0.32,1,0.25,0.25,0.62,0.21,0.75,0.78,0.12,0.57,0.19,1.18,0.12,1.44-0.06,0.25-0.31,1.12-0.37,1.43-0.07,0.32-0.19,0.4-0.38,1.03-0.19,0.64-0.31,1.38-0.31,1.76v1.15c0,0.38-0.06,1.19,0.13,1.44,0.18,0.25,0.62,0.56,0.87,0.81s1.47,0.47,1.72,0.47,0.5-0.28,0.75-0.66,0.56-0.99,0.56-1.56-0.12-2.96-0.06-3.28,1.12-0.84,1.19-1.41c0.06-0.56,0.03-1.74,0.09-2,0.06-0.25,0.31-1.15,0.31-1.15s0.75-0.44,0.88-0.81c0.12-0.38,0.25-1.13,0.25-1.5,0-0.38-0.19-1.54-0.19-1.54h-1.84c-0.19,0-0.5-0.02-0.82-0.03zm7.85,1.88c-0.57,1.01-0.72,0.99-0.78,1.75-0.07,0.76-0.88,1.53-0.88,1.53s-0.31,0.31-0.44,0.62c-0.12,0.32-0.69,0.81-0.06,1s1.72,0.19,1.97,0.07c0.25-0.13,0.75-0.69,1-0.82,0.25-0.12,0.44-0.49,0.44-1.37,0-0.89-0.19-1.9-0.31-2.16-0.13-0.25-0.94-0.62-0.94-0.62z\",\"name\":\"Sakhalin Oblast\"},\"ka\":{\"path\":\"M888.56,146.75l-1.65,0.84c-0.26,0.13-1.25,0.88-1.25,0.88l-0.13,1,0.13,2.78,0.25,1.16-0.88,2.43-1.72,4.69-0.93,1.56-0.44,1.41-0.06,1.81s-0.22,1.03-0.47,1.22c-0.26,0.19-0.82,0.13-0.82,0.13h-1.81-2.59l-1.6-0.19-1.68-0.31s-0.53,0.25-0.85,0.25c-0.31,0-0.68,0.56-1,0.75-0.31,0.19-1.37,0.74-1.56,1-0.19,0.25-1.28,0.78-1.59,0.9-0.32,0.13-1.38,1-1.63,1.19s-0.78,0.56-1.22,0.63c-0.44,0.06-0.94-0.32-0.94-0.32s-0.62-0.99-0.74-1.25c-0.13-0.25-0.97-1.72-0.97-1.72s-0.07-1.31-0.13-1.62c-0.06-0.32-0.06-1.47-0.12-1.72-0.07-0.25-0.13-1.06-0.13-1.06s0.25-1.22,0.31-1.66c0.07-0.44,0.38-0.75,0.38-0.75s0-0.56-0.19-0.87c-0.19-0.32-0.81,0.06-0.81,0.06l-1.75,0.44-1.97,0.81-1.66,0.5-1.18,0.19-2.04-0.25s-1.62-0.38-1.87-0.57-1.03-0.12-1.03-0.12l-0.63,0.56-0.87,1.16-0.63,0.81-0.84,0.88s-1.31,0.74-1.56,0.87c-0.26,0.13-0.94,0.59-0.94,0.59l-1.22,1.32-1.44,2.28s-2.27,2.28-2.59,2.47-1.18,0.87-1.44,1.12c-0.25,0.25-1.34,0.38-1.72,0.44s-0.74,0.62-1,0.94c-0.25,0.31-1.15,1.28-1.15,1.28l-0.81,0.56s-0.75-0.31-1.13-0.31-0.44,0.31-0.44,0.31l-0.97,1.91-1,2.18s-0.5,1.59-0.5,1.91,0.63,0.44,0.88,0.63c0.25,0.18,1.65,0.8,2.03,1.06,0.38,0.25,1,0.84,1.31,1.15,0.32,0.32,1.41,1.32,1.41,1.32s-0.13,0.43-0.06,0.68c0.06,0.26,0.37,1.15,0.68,1.66,0.32,0.51,0.94,0.81,0.94,0.81s4.09,1.16,4.35,1.28c0.25,0.13,1.09,1.32,1.09,1.32l0.37,0.68s1.13,0.85,1.44,1.04c0.32,0.18,1.22,0.31,1.22,0.31l0.62,0.62,0.44,1.19s-0.31,1.59-0.37,1.97c-0.07,0.38-0.07,0.99,0,1.37,0.06,0.38,1.12-0.06,1.12-0.06s1.4-0.31,1.97-0.25,1.56,0.25,1.56,0.25,1.22,0.4,1.35,0.66c0.12,0.25,0.75,1.18,0.75,1.18l1.15,1.5,1.25,1.72,1.85,1.32,2,1.65,1,1.31s0.84-0.99,1.03-1.31c0.19-0.31,0-0.74,0-1.19,0-0.44-0.37-0.71-0.75-0.96-0.38-0.26-0.97-1.19-1.35-1.63-0.37-0.44-0.56-0.84-0.56-0.84s-0.81-1.06-1.06-1.31c-0.25-0.26-1.09-0.94-1.34-1.19-0.26-0.26-1.25-1.34-1.69-1.97s0-0.75,0-1.06c0-0.32,0.87-1.04,0.87-1.04s0.94-1.3,1.19-1.62,0.44-1.21,0.5-1.59,0.47-1.31,0.85-1.5c0.37-0.19,1.18-0.38,1.68-0.44,0.51-0.06,1.84,0.5,1.97,0.81,0.13,0.32-0.62,0.69-0.75,0.94-0.12,0.25,0,1.59-0.06,2.16-0.06,0.56,0.12,1.71,0.12,2.28,0,0.56,0.75,1.37,0.75,1.37s1.13,1.4,1.44,1.72c0.32,0.32,1.28,0.93,1.59,1.19,0.32,0.25,1.57,1.65,1.57,1.65l3.34,2.32,0.97,0.59s0.75,1.25,0.81,1.69c0.07,0.44,0.44,0.93,0.44,0.93s1.03,0.22,1.34,0.47c0.32,0.26,0.63,1.31,0.63,1.69s-0.12,1.03-0.44,1.47c-0.31,0.44-1.21,0.93-1.53,1.25s-0.69,0.75-0.69,0.75-0.06,5.68-0.06,6.25,0.75,1.78,1,2.16,1.21,2.14,1.72,2.9c0.5,0.76,0.69,1.12,0.69,1.44s0.25,1.66,0.25,1.66,0.56,10.46,0.62,11.09,0.59,1.03,0.78,1.41,0.75,0.93,1,1.18c0.26,0.26,0.75,0.84,0.88,1.16,0.12,0.32,0.97,1.62,0.97,1.62s0.74,2.78,0.87,3.54c0.13,0.75,0.13,1.72,0.13,1.72s1.31,3.96,1.31,4.4v1.47s-0.81,1.75-1.13,2.13c-0.31,0.37-0.06,1.77-0.06,2.09,0,0.31-1.34,2.46-1.84,2.84-0.51,0.38-1.31,1-1.44,1.38s0.25,1.03,0.25,1.03l1.81,0.87,2.28,0.94s1.09,2.15,1.47,2.66c0.38,0.5,0.56,1.59,0.56,1.9,0,0.32,0.32,3.47,0.44,4.16,0.13,0.69,0.38,1.65,0.56,2.09,0.19,0.45,1.79,1.5,1.79,1.5s2.21,3.94,2.34,4.25c0.13,0.32,0.81,1.69,1.06,2,0.08,0.1,0.29,0.25,0.53,0.41,0.62,0.78,3.07,1.94,3.07,1.94l0.93,0.62s4.63,4.25,4.69,4.5c0.06,0.26,2.78,2.32,2.78,2.32s2.34,0.84,2.6,1.03c0.25,0.19,1.68,0.75,1.68,0.75l14.91,10.22,2.03,1.21,3.03,0.94s1.19,1.59,1.44,1.72,3.15,1.19,3.59,1.19c0.45,0,1.47,1,1.47,1s2.59,2.78,2.97,3.03,2.56,1.91,2.56,1.91,2.09,1.18,2.47,1.18,2.85-0.5,2.85-0.5l0.68-0.62v-2.03s-0.06-1.69-0.06-1.88,0-1.21-0.25-1.53-0.81-0.88-0.81-0.88,0.18-1.52,0.44-1.96c0.25-0.45,0.43-0.69,0.43-1.07s-0.31-1.15-0.56-1.4c-0.25-0.26-0.5-1.19-0.5-1.19s-0.06-2.34-0.31-2.66c-0.25-0.31-1.09-0.99-1.28-1.62s-0.5-1.03-0.63-1.41c-0.12-0.38-1.37-1.62-1.62-2.06-0.26-0.44-1.53-1.59-1.72-1.84-0.19-0.26-0.31-1.28-0.5-2.1s-1.02-0.75-1.78-0.75-1.12-0.06-1.38-0.25c-0.25-0.19,0.5-0.43,0.75-0.56,0.26-0.13,1.09-0.9,1.28-1.22,0.19-0.31,0.5-1.37,0.5-1.37l0.69-4.22,1.91-1.6c0.38-0.31,0.25-0.93-0.19-1.31s-1.09-0.25-1.41-0.31c-0.31-0.06-0.8-0.84-1.31-1.16-0.5-0.31-0.84-0.81-1.28-1s-1.24-0.31-2.06-0.56-1.4-1.03-1.91-1.47c-0.5-0.44-0.44-1-0.5-1.25s-0.06-1.96-0.06-2.84v-1.22s-0.97-2.78-0.97-3.1c0-0.31,0.03-1.05,0.16-1.43,0.12-0.38,0.49-0.69,0.75-0.94,0.25-0.25,1.43-0.78,1.43-0.78l1.47-0.88s0.38-1.71,0.38-2.59-0.5-2.25-0.63-2.56c-0.12-0.32-1.34-0.72-1.34-0.72s-1.5-1.19-1.94-1.19-2.46-0.56-2.9-0.69c-0.45-0.12-1.6-0.78-1.85-0.9-0.25-0.13-1.71-1.25-2.09-1.56-0.38-0.32-1.25-1.1-1.5-1.41-0.26-0.32-0.75-1.44-0.88-1.75-0.12-0.32-0.84-1.66-0.84-1.66s0-0.55-0.13-1.12c-0.12-0.57-0.18-1.65-0.18-2.41s1.02-0.62,1.28-0.62c0.25,0,1.68-0.25,2-0.32,0.31-0.06,1.03-0.74,1.22-1,0.19-0.25,0.37-1.77,0.31-2.09s-0.65-0.81-1.22-1-0.94-0.78-1.12-0.84c-0.19-0.07-2.16-0.88-2.16-0.88s-2.06-0.69-2.5-0.75-0.59,0.44-0.84,0.63c-0.26,0.19-0.5,0.37-1.32,0.37s-1.22-0.44-1.22-0.44l-0.87-1.18s-1.18,0.06-1.81,0.06c-0.64,0-0.91-0.59-1.16-0.91-0.25-0.31-1.06-0.56-1.06-0.56s-0.47-0.19-0.69-0.28c0-0.06,0.19-3.44,0.13-3.69-0.07-0.25-0.66-1.21-0.91-1.47-0.25-0.25-1.37-0.44-1.94-0.44s-1.4,0.6-1.84,0.85-1.06,0.75-1.31,0.94c-0.26,0.19-0.13,1.12-0.13,1.68,0,0.57-0.34,1.03-0.72,1.35-0.38,0.31-0.68,0.25-1.31,0.25s-1.12-0.19-1.63-0.31c-0.5-0.13-0.77-0.56-1.03-0.82-0.25-0.25-1.06-0.96-1.37-1.47-0.32-0.5-0.19-1.05-0.25-1.62-0.07-0.57-0.84-1.65-1.1-2.16-0.25-0.5-1.24-2.34-1.37-2.59s-0.56-1.28-1-1.91-0.9-1.99-1.28-2.62-0.74-1.09-1.5-2.1-0.78-0.56-1.35-0.68c-0.56-0.13-0.99-0.78-1.5-1.35-0.5-0.57-0.84-0.93-1.15-1.75-0.32-0.82-0.37-0.83-0.94-2.15-0.57-1.33-0.07-1.09,0.19-1.66,0.25-0.57,1.06-0.62,1.06-0.62l0.47-0.88s-0.38-1.59-0.31-2.09c0.06-0.51,0.36-0.56,1.06-0.75,0.69-0.19,1.56,0.75,1.94,0.75s1.59-0.5,1.9-0.82c0.32-0.31,0.32-1.08,0.32-1.71,0-0.64-0.62-1-1.13-1.13s-0.94-0.56-0.94-1.06c0-0.51,0.25-1.21,0.25-1.91,0-0.69,0-0.74-0.06-1.25-0.06-0.5-0.12-0.53-0.25-0.91-0.13-0.37,0.06-1.18,0.19-1.68,0.12-0.51,0.56-0.44,0.94-0.38,0.37,0.07,1.24,0.69,1.62,0.94s0.65,0.62,0.84,1,1,1.09,1.63,1.16c0.63,0.06,1.15-0.38,1.15-0.38s-0.09-0.52-0.34-1.09-0.81-1.44-1-1.81c-0.19-0.38-0.5-1.22-0.75-1.6s-0.44-0.5-0.44-0.75,0.69-2.09,0.69-2.41v-3.78c0-0.82,0.19-1.4,0.38-1.72,0.19-0.31,0.87-1.24,1.25-2.06s0.84-1.15,1.09-1.9c0.25-0.76,0.87-1.4,1.44-2.16s0.77-1,1.15-1.12c0.38-0.13,2.91,0.06,3.29,0.06,0.37,0,1.96-0.44,2.65-0.56,0.7-0.13,2.71-0.31,3.41-0.57,0.69-0.25,0.25-0.59,0.18-0.84-0.06-0.25-1.27-0.94-1.65-1.06-0.38-0.13-1.12-0.69-1.38-0.94-0.25-0.25-0.5-1.16-0.5-1.16s-0.59-2.96-0.65-3.28c-0.07-0.31-0.75-1.56-0.75-1.56s-0.13-5.18-0.13-5.63c0-0.44-0.68-2.02-1.37-2.34-0.7-0.32-0.91-0.99-0.91-1.5s0-0.96-0.12-1.59c-0.13-0.64-0.75-1.37-1-1.88-0.26-0.5,0.12-0.78,0.12-1.22s-0.12-1.18-0.5-1.5c-0.38-0.31-0.68-0.49-0.94-0.75-0.25-0.25-0.46-0.9-0.46-1.53s0.28-1,0.34-1.31c0.06-0.32,0.06-1.09-0.06-1.53-0.13-0.44-0.35-1.06-0.41-1.31-0.06-0.26-0.37-1.22-0.37-1.22s-0.5-0.44-0.69-0.44-0.94-0.19-0.94-0.19l-1.78-0.31s-1.69-0.44-1.81-0.69c-0.13-0.25-1.04-0.69-1.04-0.69l-1.56-0.59zm7.25,70.22c-0.88,0.44-1.12,0.43-1.06,1s0.37,1.09,0.63,1.47c0.25,0.38,0.44,0.93,0,1.44-0.45,0.5-1.45,0.52-1.19,1.15,0.25,0.63,0.49,1.06,0.75,1.31,0.25,0.26,0.81,0.9,0.94,1.41,0.12,0.51-0.01,1.06,0.31,1.56,0.31,0.51,0.31,0.69,0.69,0.69,0.37,0,0.59,0.32,0.65-0.5s-0.06-0.95,0-2.84c0.06-1.9,0-2.84,0.06-3.41,0.07-0.57,0.26-1.37,0-1.75-0.25-0.38-1.28-0.9-1.4-1.22-0.13-0.31-0.38-0.31-0.38-0.31zm58.91,12.47c-1.07,0.71-1.16,0.62-1.16,1.15,0,0.54-0.18,0.9,0.53,0.72,0.72-0.18,0.91-0.18,1-0.62,0.09-0.45-0.37-1.25-0.37-1.25zm-10.97,4.53c-0.63,0.45-1.08,0.2-0.81,1.09,0.27,0.9,0.44,1.16,1.15,1.25,0.72,0.09,0.73,0.1,2.07,0.1s2.31,0.06,3.03,0.06c0.71,0,0.99,0.36,1.43,0,0.45-0.36,0.63-0.07,0.54-0.78-0.09-0.72-1.24-0.9-2.22-0.81-0.98,0.08-1.52,0.34-3.13-0.19-1.6-0.54-2.06-0.72-2.06-0.72z\",\"name\":\"Kamchatka Krai\"},\"in\":{\"path\":\"m33.393,395.68,0.08929,5.2679,17.946-8.5714-1.3393-1.25-2.9464-1.25-1.5179-1.9643-2.4107,2.4107-4.1071-2.6786-1.875,1.0714,0.08929,5.8929-1.5179,1.0714z\",\"name\":\"Republic of Ingushetia\"},\"cc\":{\"path\":\"m33.482,401.04,1.0714,2.5,3.125,1.6964,3.4821,0.44642,2.1429-1.9643,2.1429,1.7857,2.5-1.5178-0.08929-1.6072,1.875-2.1428,2.8571,0.44642,3.8393-2.8571-0.625-1.9643-4.4643-0.53572,0.44643-2.7679z\",\"name\":\"Chechen Republic\"}}});"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.usa.js",
    "content": "/** Add USA Map Data Points */\njQuery.fn.vectorMap('addMap', 'usa_en', {\"width\":959,\"height\":593,\"pathes\":{\"hi\":{\"path\":\"m244.66,512.25c-2.48,3.8 2.23,4.04 4.74,5.38 3.06,0.16 3.51,-4.28 2.66,-6.56 -2.72,-0.77 -5.01,-0.19 -7.41,1.19z m-9.31,3.97c-4.02,5.11 3.64,0.48 0.63,-0.09l-0.5,0.07 -0.14,0.02z m39.69,7.97c-0.62,2.09 1.91,6.73 4.39,6.2 2.41,-1.46 3.73,1.73 6.48,0.56 1.23,-1.48 -3.77,-3.2 -3.7,-6.08 -0.95,-3.8 -3.28,-3.2 -5.96,-1.28 -0.41,0.2 -0.81,0.4 -1.22,0.6z m19.94,10.03c3.58,0.95 7.91,2.99 11.25,0.47 -1.05,-1.63 -5.06,-0.59 -7.1,-0.86 -1.44,0.01 -3.54,-1.63 -4.15,0.39z m12.13,4.38c2.33,2.45 3.64,6.83 7.24,7.4 2.36,-0.69 6.84,-0.66 7.32,-3.43 -2.09,-2.51 -5.77,-3.35 -8.88,-4.29 -2.53,-1.2 -4.11,-3.25 -5.68,0.33z m-7.06,1c-0.29,3.69 5.55,3.98 3.67,0.55 -0.27,-1.25 -3.83,-1.74 -3.67,-0.55z m23.66,14.69c0.27,2.45 3.18,3.93 0.47,6.15 -0.65,2.42 -5.54,2.87 -2.52,5.53 2.36,1.46 2.01,4.85 2.92,7.14 -0.72,2.69 -1.43,6.78 1.72,8.06 2.8,2.95 4.5,-1.93 6.19,-3.68 1.27,-1.69 3.85,-4.1 5.94,-2.59 3.04,-0.81 6.3,-2.42 7.78,-5.22 -2.79,-1.31 -4.88,-3.19 -5.57,-6.29 -2.4,-5.33 -8.95,-6.26 -13.58,-8.98 -1.29,-0.52 -2.26,-1.62 -3.34,-0.11z\",\"name\":\"Hawaii\"},\"ak\":{\"path\":\"m107.84,436.56c-2.27,0.55 -4.87,0.32 -6.84,-0.34 -2.41,1.22 -5.63,4.03 -8.25,1.88 -3.1,0.93 -3.51,3.84 -5.22,5.97 -1.82,2.52 -4.21,3.65 -7.31,3.14 -2.5,-0.94 -5.49,-1.15 -7.5,0.98 2.03,4.34 6.39,8.13 5.82,13.23 -1.85,2.94 6.31,2.99 2.68,5.02 0.15,2.8 3.07,5.68 2.91,7.88 -2.35,2.21 -5.24,-0.38 -7.71,-1.06 -3.24,-0.64 -2.73,-3.35 -0.82,-5.22 -1.57,-1.51 -7.35,-1.81 -6.51,1.12 -2.01,0.04 -3.81,-1.66 -6.27,-0.77 -3.72,-0.44 -5.97,0.65 -2.94,4.05 3.68,1.45 1.06,4.72 1.17,7.57 0.76,2.63 3.66,4.89 6.67,4.17 3.2,-0.06 5.87,3.59 9.21,1.65 2.16,-1.3 5.33,-0.99 4.79,1.89 -2.53,2.07 -1.36,6.13 -2.78,8.75 -1.96,1.88 -4.53,1.59 -6.59,0.16 -1.52,1.37 -4.7,3.68 -6.28,2.22 0.72,-3.71 -4.77,-3.63 -5.51,-0.61 -1.21,3.97 -6.27,4.46 -8.31,7.63 -0.7,2.42 -1.55,6.7 1.74,6.3 1.26,1.11 -1.2,4.8 -2.77,5.52 1.62,2.19 2.65,4.59 2.72,7.34 1.71,1.55 6.35,1.98 7.5,-0.16 2.45,-0.95 1.79,4.1 2.08,5.97 2.47,2.95 -4.02,1.28 -1.61,4.56 -0.85,2.93 -1.76,5.02 2,2.72 2.76,-0.47 5.11,-0.69 5.66,2.09 2.59,-3.91 2.26,2.78 3.25,4.66 0.59,-0.75 1.3,-5.69 3.94,-3.06 -0.17,4.52 5.33,-0.45 5.78,-0.04 0.54,2.92 -1.63,4.24 -2.86,6.41 -1.51,2.24 -2.07,5.63 -4.21,7.17 -3.87,-0.42 -3.37,4.1 -5.5,5.02 -2.65,-0.72 -5.73,0.71 -8.44,1.41 -1.35,2.41 -3.61,4.2 -5.78,1.81 -2.56,0.05 -5.63,0.68 -7.63,2.33 -2.48,2.43 -6.32,3.11 -9.66,2.29 -2.78,-1.91 -7.11,3.41 -3.11,2.31 2.5,-1.91 4.66,0.64 7.25,0.63 2.21,-1.15 4.17,-2.75 6.84,-2.06 2.32,-3.35 5.1,-0.32 7.92,-1.16 2.31,-0.39 7.01,-3.91 5.26,0.66 0.09,-2.91 3.42,-2.73 5.54,-2.04 4.21,0.96 0.29,-3.16 2.08,-3.43 3.47,-2.05 7.52,-2.41 11.2,-3.72 5.48,-3.19 11.62,-5.7 16.21,-10.1 4.27,-2.97 -2.78,-3.48 -1.21,-6.32 1.68,-2.43 4.58,-3.81 7.47,-4.5 1.5,-3.07 3.53,-6.11 5.88,-8.52 2.49,-1.32 4.83,-3.39 7.83,-2.32 2.67,0.71 3.74,5.32 -0.52,3.66 -1.27,-1.88 -5.56,-0.09 -5.25,2.41 -0.21,2.44 -2.56,4.22 -3.06,6.66 4.79,0.85 0.24,3.54 -1.38,3.8 1.67,1.91 5.66,0.6 7.57,-1.14 1.25,-1.85 3.43,-3.8 5.41,-4.22 1.81,2.8 5.1,-1.16 5.74,2.72 0.71,2.78 6.02,-4.86 3.34,-3.1 -3.03,3.11 -3.78,2.86 -1.94,-1.24 1.43,-4.85 -1.76,6.17 -1.45,0.81 -0.81,-3.19 -0.93,-6.03 3.05,-6.4 2.7,-0.86 5.37,-0.87 5.79,2.52 0.42,3.48 3.8,2.84 5.95,4.76 2.41,2.2 4.76,1.95 7.8,1.78 4.34,-0.47 8.01,4.04 12.28,3.17 2.49,-0.42 5.1,-5.2 4.29,-0.23 -2.26,2.83 -0.02,4.12 2.5,5.41 3.13,1.35 5.87,3.14 7.94,5.85 1.31,3.02 6.05,0.28 6.18,2.43 -3.83,1.25 -1.23,3.54 0.21,5.47 1.81,1.95 0.33,5.72 3.64,5.82 1.14,1.28 3.49,7.44 4.01,5.38 -0.35,-2.32 -0.7,-7.86 1.61,-3.76 0.37,1.42 1.04,8.7 2.07,4.74 1.07,-4.88 3.18,0.18 2.22,2.93 3.33,1.69 -1.23,3.33 0.69,4.88 0.69,-3.24 1.31,-0.36 2.16,1.56 1.05,1 1.54,3.94 3.13,3.72 -1.68,-1.72 -2.94,-6.23 0.4,-3 2.42,2.79 4.05,2.12 2.74,-1.66 -2.65,-2.66 0.28,-4.96 2.58,-2.29 3.12,-0.05 2.84,5.21 5.28,4.53 3.31,-3.17 1.5,-7.87 0.69,-11.7 -3.3,-1.55 -7.04,-2.54 -10.22,-4.06 -1.5,-5.33 -6.29,-8.69 -8.4,-13.77 -0.44,-3.33 -4.71,-2.62 -5.75,-5.23 -2.32,-1.72 -2.7,-4.4 -4.56,-6.35 -1.65,-1.53 -5.22,0.95 -5.51,2.94 0.59,3.09 -3.23,3.04 -5.06,4.72 0.05,-4.27 -4.3,-6.15 -6.7,-9.1 -1.33,-1.99 -1.32,-5.36 -4.45,-2.34 -2.37,0.24 -6.38,-0.31 -5.34,-3.62 0.1,-27.7 0.2,-55.4 0.31,-83.09 -2.75,-1.88 -5.88,-4.17 -9.15,-4.4 -2.52,1.72 -5.07,1.09 -7.39,-0.62 -2.72,0.23 -5.12,-0.65 -7.7,-2.89 -3.08,-2.74 -8.58,0.17 -10.98,-3.65 1.13,-3.56 -3.22,-4.83 -5,-2.09 -2.09,0.26 -0.65,-4.31 -3.64,-4.93 -2.57,-2.85 -4.01,-1.28 -5.86,1.21z M36.38,480.63c-0.67,3.11 4.27,1.31 4.72,4.66 0.24,3.82 5.37,3.9 2.34,-0.08 -0.1,-3.22 -3.92,-1.83 -5.06,-4.43 -0.76,-2.02 -0.9,-1.86 -2,-0.16z m-17.16,23.16c2.57,4.06 1.45,1.37 0.13,-1.28 -0.36,0.01 0,1 -0.13,1.28z m21.84,14.81c1.27,1.79 4.99,5.58 6.22,2.03 2.26,-3.3 -3.27,-2.89 -5.23,-3.68 -1.83,-0.9 -0.88,0.54 -0.99,1.65z m91.72,18.78c0.06,3.21 2.81,-1.98 0,0z m-31.47,14.69c-3.2,2.91 -7.24,4.67 -10.56,7.38 0.22,2.75 0.99,7.64 4.67,5.15 2.5,-1.44 4.98,-2.9 7.45,-4.37 -1.84,-3.31 -0.81,-3.15 -4.55,-3.48 -4.15,0.09 1.06,-3.73 2.64,-1.62 3.74,-1.04 3.95,-2.36 1.5,-3.66 0.7,-1.08 -1,0.61 -1.16,0.59z M55.75,570.75c1.42,2.83 3.53,-1.99 0,0z m-35.78,0.34c0.53,2.46 -4.04,4.84 1.05,3.59 4.2,0.47 3.46,-4.35 0.01,-3.84 -0.35,0.08 -0.7,0.16 -1.06,0.24z m62.19,0.69c1.57,2.91 1.31,-2.03 0,0z M58.63,573.13c3.23,0.49 0.99,-3.05 0,0z m-49,0.09c-4.84,2.56 -0.44,1.81 2.29,0.58 2.89,0.16 5.05,-0.48 0.84,-1.46 -1.04,0.29 -2.08,0.58 -3.13,0.88z m7.25,1.38c1.28,0.21 -2.23,-0.59 0,0z\",\"name\":\"Alaska\"},\"fl\":{\"path\":\"m748.38,439.94c1.69,2.92 1.5,6.12 1.16,9.34 -4.12,0.54 -2.15,-4.69 -5.56,-3.99 -6.18,-0.07 -12.34,1.13 -18.54,1.19 -10.09,0.29 -20.37,2.14 -30.33,0.64 -2.57,-1.57 -2.84,-6.15 -6.5,-5.33 -9.12,-0.12 -18.18,1.79 -27.26,2.55 -5.82,0.63 -11.62,1.37 -17.43,2.12 -1.42,3.25 2.6,4.37 4.06,6.34 0.8,2.28 -1.56,8.42 2.19,7.1 4.11,-1.2 8.08,-2.93 12.48,-2.72 3.34,-0.82 6.63,-0.73 9.89,0.45 4.09,0.8 7.77,3.09 11.41,4.98 1.77,1.94 5.5,1.87 5.97,5 -0.14,3.27 4.32,-0.94 6.5,0.53 3.19,-0.8 5.24,-3.68 7.69,-5.5 4.86,1.69 0.62,-2.9 3.27,-3.97 3.13,-0.83 6.62,-1.39 9.35,0.79 3.04,0.57 5.43,2 6.57,4.99 3.68,0.02 2.88,4.13 5.48,5.3 2.96,0.49 2.98,4.52 6.3,4.3 2.91,0.36 5.45,1.15 5.84,4.45 2.05,2.11 3.92,4.26 3.09,7.41 0.18,3.68 0.12,7.33 -1.44,10.75 0.39,3.68 1.37,7.94 3.28,10.78 2.25,-3.46 0.17,-3.87 -1.74,-6.03 2.19,-1.76 4.86,-0.22 7.3,0.16 0.82,3.15 -2.16,5.6 -3.48,8.19 -3.3,2.21 1.65,4.09 2.73,6.3 3.11,3.34 4.35,7.94 7.53,11.26 0.78,2.29 2.51,7.47 4.63,3.09 2.54,-0.24 3.88,3.44 5.28,5.41 -0.02,2.26 1.93,7.04 3.59,6.44 2.88,-0.8 6.04,0.65 8.28,2.59 2.56,3.3 4.58,6.98 4.56,11.27 1.37,2.73 4.55,0.44 5.81,-1.14 3.74,0.45 7.26,-1.25 9.22,-4.47 -1.01,-2.36 -0.57,-4.83 -0.32,-7.17 -0.04,-2.18 4.33,-3.19 2.25,-6.51 -0.98,-6.33 -0.19,-12.96 -1.87,-19.25 -2.46,-6.93 -7.54,-12.74 -10.4,-19.56 -1.51,-2.41 -4.24,-3.92 -4.62,-7.04 -0.94,-2.28 -2.67,-4.95 -0.07,-6.71 -0.39,-3.56 -4.86,-5.42 -6.84,-8.41 -5.38,-5.57 -8.29,-12.94 -12.35,-19.44 -2.15,-5.53 -4.29,-11.07 -5.91,-16.78 -3.43,0.07 -7.3,-1.03 -10.46,-0.35l-0.34,0.37 -0.26,0.29z m52.91,109.22c-1.9,4.58 0.72,0.38 0.66,-1.91 -0.22,0.64 -0.44,1.27 -0.66,1.91z m-4.69,9.91c2.56,-1.97 3.68,-6.84 1.04,-1.68 -0.35,0.56 -0.69,1.12 -1.04,1.68z m-2.25,2.22c1.46,-1.22 2.04,-2.07 0.18,-0.18l-0.18,0.18z m-5.72,4.16c-5.23,3.69 4.03,-2.14 0.33,-0.19l-0.33,0.19z m-10.72,3.22c-3.41,3.16 5.71,-0.32 4.1,-0.81 -1.8,-0.56 -2.56,-0.71 -4.1,0.81z m-4.59,3.16c0.08,0.16 0.4,-0.3 0,0z\",\"name\":\"Florida\"},\"nh\":{\"path\":\"m862.56,94c-1.4,-0.41 -3.87,-0.72 -3.05,3 0.22,3.63 -0.73,7.84 2.23,10.59 0.33,2.78 0.08,5.36 -2.17,7.29 -0.19,2.83 -5.98,2.58 -3.35,5.32 1.16,7.35 -0.56,15.03 -0.62,22.51 1.2,1.95 0.98,4.39 0.76,6.75 -1.07,3.79 4.84,-0.05 6.89,0.06 3.93,-1.29 8.46,-1.74 12.04,-3.54 0.77,-3.1 4.37,-2.75 5.94,-4.96 2.59,-3.52 -3.01,-2.73 -2,-6.59 -3.83,0.01 -4.27,-2.46 -4.66,-5.62 -3.84,-11.98 -7.32,-24.45 -11.49,-36.1 -0.18,0.43 -0.35,0.85 -0.53,1.28z\",\"name\":\"New Hampshire\"},\"mi\":{\"path\":\"M697.86,177.24L694.63,168.99L692.36,159.94L689.94,156.71L687.35,154.93L685.74,156.06L681.86,157.84L679.92,162.85L677.17,166.57L676.04,167.21L674.58,166.57C674.58,166.57 671.99,165.11 672.16,164.47C672.32,163.82 672.64,159.45 672.64,159.45L676.04,158.16L676.84,154.77L677.49,152.18L679.92,150.56L679.59,140.54L677.98,138.28L676.68,137.47L675.87,135.37L676.68,134.56L678.3,134.88L678.46,133.27L676.04,131L674.74,128.42L672.16,128.42L667.63,126.96L662.13,123.57L659.38,123.57L658.74,124.21L657.77,123.73L654.7,121.46L651.79,123.24L648.88,125.51L649.2,129.06L650.17,129.39L652.27,129.87L652.76,130.68L650.17,131.49L647.58,131.81L646.13,133.59L645.81,135.69L646.13,137.31L646.45,142.8L642.9,144.9L642.25,144.74L642.25,140.54L643.54,138.12L644.19,135.69L643.38,134.88L641.44,135.69L640.47,139.89L637.72,141.02L635.94,142.96L635.78,143.93L636.43,144.74L635.78,147.33L633.52,147.81L633.52,148.95L634.33,151.37L633.2,157.51L631.58,161.56L632.23,166.24L632.71,167.38L631.9,169.8L631.58,170.61L631.26,173.36L634.81,179.34L637.72,185.8L639.18,190.65L638.37,195.34L637.4,201.32L634.97,206.5L634.65,209.25L631.39,212.33L635.8,212.17L657.22,209.91L664.5,208.92L664.59,210.58L671.45,209.37L681.74,207.87L685.6,207.41L685.74,206.82L685.9,205.37L688,201.65L690,199.91L689.78,194.86L691.37,193.26L692.46,192.92L692.69,189.36L694.22,186.33L695.27,186.94L695.44,187.58L696.24,187.74L698.18,186.77L697.86,177.24z M581.62,82.06L583.45,80L585.62,79.2L590.99,75.31L593.28,74.74L593.74,75.2L588.59,80.34L585.28,82.29L583.22,83.2L581.62,82.06z M667.79,114.19L668.44,116.69L671.67,116.85L672.97,115.64C672.97,115.64 672.89,114.19 672.56,114.03C672.24,113.86 670.95,112.17 670.95,112.17L668.76,112.41L667.15,112.57L666.82,113.7L667.79,114.19z M567.49,111.21L568.21,110.63L570.96,109.82L574.51,107.56L574.51,106.59L575.16,105.94L581.14,104.97L583.57,103.03L587.93,100.93L588.09,99.64L590.03,96.73L591.81,95.92L593.1,94.14L595.37,91.88L599.73,89.46L604.42,88.97L605.55,90.1L605.23,91.07L601.51,92.04L600.06,95.11L597.79,95.92L597.31,98.35L594.88,101.58L594.56,104.17L595.37,104.65L596.34,103.52L599.89,100.61L601.19,101.9L603.45,101.9L606.68,102.87L608.14,104L609.59,107.08L612.34,109.82L616.22,109.66L617.68,108.69L619.29,109.99L620.91,110.47L622.2,109.66L623.33,109.66L624.95,108.69L628.99,105.14L632.39,104L639.02,103.68L643.54,101.74L646.13,100.45L647.58,100.61L647.58,106.27L648.07,106.59L650.98,107.4L652.92,106.91L659.06,105.3L660.19,104.17L661.65,104.65L661.65,111.6L664.88,114.67L666.17,115.32L667.47,116.29L666.17,116.61L665.37,116.29L661.65,115.81L659.55,116.45L657.28,116.29L654.05,117.75L652.27,117.75L646.45,116.45L641.28,116.61L639.34,119.2L632.39,119.85L629.96,120.66L628.83,123.73L627.54,124.86L627.05,124.7L625.6,123.08L621.07,125.51L620.42,125.51L619.29,123.89L618.48,124.05L616.54,128.42L615.57,132.46L612.39,139.46L611.22,138.42L609.85,137.39L607.9,127.1L604.36,125.73L602.31,123.45L590.19,120.7L587.33,119.67L579.1,117.5L571.21,116.36L567.49,111.21z\",\"name\":\"Michigan\"},\"vt\":{\"path\":\"m833.16,106.59c0.19,6 4.65,11.21 3.72,17.28 -2.48,4.23 4.52,7.29 2.22,11.58 0.9,1.59 4.66,1.96 4.06,5.25 1.08,4.21 2.86,8.34 1.84,12.76 3.35,-0.51 7.06,-1.17 10.13,-1.97 -0.21,-2.13 1.51,-5.75 -0.53,-7.81 0.2,-7.64 1.01,-15.26 1.13,-22.91 -3.25,-2.41 0.32,-3.79 2.12,-5.18 1.96,-2.28 3.9,-5.07 2.6,-8.1 -2.62,-1.63 -1.02,-5.94 -2.39,-7.22 -8.3,2.1 -16.59,4.21 -24.89,6.31z\",\"name\":\"Vermont\"},\"me\":{\"path\":\"m889.88,40.22c-2.16,1.31 -3.69,2.74 -4.84,4.69 -2.29,0.6 -4.99,-1.37 -4.88,-3.94 -2.97,-0.82 -3.33,3.68 -4.37,5.71 -1.09,4.29 -3.27,8.39 -3.97,12.69 -0.06,3.04 1,6.63 -1.35,9.09 0.08,2.92 -0.75,6.18 2,8.16 -1.37,5.7 -6.23,10.36 -5.41,16.56 -4.27,-2.21 -1.74,2.47 -1.09,4.73 3.51,11.08 7.19,22.16 10.25,33.35 0.21,3.01 5.81,1.35 4.53,5.7 2.9,2 2.06,-3.92 2.66,-5.87 -1.01,-3.29 2.7,-4.63 0.66,-7.62 0.94,-1.05 2.92,-5.9 4.61,-3.46 2.03,1.03 5.28,-1.89 6.74,-3.19 -0.98,-4.02 4.21,-1.75 4.73,-5.32 -1.11,-2.61 0.74,-5.45 -0.57,-7.44 -2.42,-1.59 3.53,-4.63 3.31,-0.78 2.27,0.48 2.15,2.8 3.66,3.93 1.94,-2.82 -2.15,-3.81 0.35,-6.03 2.43,-0.81 3.1,-3.96 6,-3.31 -0.17,1.46 1.03,3.34 2.26,1.38 2.94,-2.9 5.24,-7.08 9.37,-8.34 1.17,-2.61 3.34,-5.74 0.71,-8.24 -0.55,-1.64 -3.68,-4.84 -4.15,-2.58 -0.75,2.6 -4.66,-0.65 -4.92,-2.22 0.1,-2.8 0.29,-7.17 -3.8,-5.81 -3.96,1.36 -3.64,-3.04 -4.69,-5.61C905.22,58.3 902.75,50.15 900.28,42c-2.86,-1.25 -5.71,-2.92 -8.81,-3.38 -0.53,0.53 -1.06,1.06 -1.59,1.59z m20.47,61c-2.81,1.7 1.87,5.16 1.13,1.22 1.48,-0.9 0.13,-2.4 -1.13,-1.22z m-7.81,7.81c3.16,6.67 2.63,-3.59 0,0z\",\"name\":\"Maine\"},\"ri\":{\"path\":\"m871,164.28c1.15,4.66 2.29,9.31 3.44,13.97 2.56,-0.49 4.66,-2.29 5.84,-4.56 4.17,0.76 4,-2.64 1.51,-4.97 -1.79,-1.94 -3.16,-5.31 -5.74,-5.92 -1.68,0.49 -3.37,0.99 -5.05,1.48z\",\"name\":\"Rhode Island\"},\"ny\":{\"path\":\"m825.56,108.66c-2.7,1.12 -5.45,1.68 -8.33,1.43 -5.07,0.72 -10.17,2.73 -12.92,7.31 -2.84,3.43 -4.89,7.49 -7.18,11.2 -1.65,2.36 -5.82,3.73 -5.55,6.84 -0.17,3.56 5.77,0.73 4.43,4.38 -2.69,2.3 0.8,4.23 0.56,6.59 0.5,3.47 -4.26,1.99 -5.36,4 -1.62,2.71 -3.35,6.62 -7.22,6.05 -3.04,-0.43 -5.35,2.05 -7.98,2.63 -2.5,-0.75 -4.7,-2.05 -7.59,-1.31 -5.31,0.21 -10.62,1.98 -15.23,4.53 -0.29,1.77 0.61,6.25 3.17,6.14 1.55,2.48 2.09,4.96 -0.63,6.72 -1.51,1.76 -1.8,4.25 -4.16,5.3 -1.93,1.14 -2.68,3.51 -4.8,4.54 0.33,3.07 -0.22,7.29 4.08,5.12 22.14,-4.26 44.26,-8.68 66.23,-13.74 0.98,3.85 5.67,1.32 6.44,4 0.64,2.93 1.36,7.4 5.33,6.88 3.14,1.9 6.9,3.68 10.69,4.22 2.71,0.47 7.18,1.43 6.44,5.06 -0.33,1.97 -1.62,7.56 1.97,5.93 5.3,-1.65 10.96,-2.84 15.06,-6.85 3.23,-2.49 6.76,-4.64 9.35,-7.86 -2.99,-2.44 -4.65,0.46 -6.81,2.42 -2.91,1.56 -6.01,3.51 -9.16,4.32 -2.6,-0.63 -4.83,-0.86 -6.18,2.07 -1.03,2.04 -4.86,2.98 -3.98,-0.15 4.26,-1.87 -2.17,-3.97 -0.33,-6.21 1.19,-3.13 0.56,-6.87 0.42,-10.21 -1.43,-7.38 -3.69,-14.76 -2.54,-22.36 -0.08,-4.46 1.55,-8.97 -0.51,-13.21 -1.22,-2.56 -0.47,-6.83 -4.05,-7.34 -2.99,-0.66 0.75,-4.31 -1.57,-6.2 -1.7,-2.43 -3.17,-4.91 -1.54,-7.81 0.38,-5.77 -3.83,-10.57 -3.55,-16.35 -2.32,0.65 -4.65,1.29 -6.97,1.94z\",\"name\":\"New York\"},\"pa\":{\"path\":\"m798.88,181.63c-17.5,3.38 -34.87,7.42 -52.47,10.28 -0.61,-2 0.48,-8.42 -2.41,-4.31 -2.18,2.73 -5.48,3.74 -8.09,5.97 1.52,9.75 2.63,19.57 5.44,29.05 1.14,6.09 2.27,12.17 3.41,18.26 8.85,-1.42 17.79,-2.25 26.51,-4.41 16.39,-3.45 33.03,-6.46 49.33,-9.87 2.48,-3.07 8.03,-1.69 8.97,-6.19 0.64,-2.36 4.86,-3.99 4.33,-5.9 -2.3,-1.89 -5.94,-2.77 -6.39,-6.13 -3.14,1.09 -4.42,-3.94 -3.12,-5.32 3.86,-1.1 -0.49,-3.68 0.55,-5.96 2.52,-1.88 1.12,-5.15 2.81,-7.07 3.87,-2.7 -2.98,-1.1 -3.72,-3.99 -1.35,-2.18 -0.28,-7.24 -4.16,-5.92 -2.34,-1.13 -3.87,-3.75 -7.09,-1.7 -4.64,1.07 -9.28,2.15 -13.92,3.22z\",\"name\":\"Pennsylvania\"},\"nj\":{\"path\":\"m827.84,191.34c1.03,2.99 -1.82,4.8 -2.06,7.47 2.86,1.63 0.49,4.87 -0.92,5.73 -0.41,3.86 4.01,1.68 4.16,5.14 1.37,2.19 4.72,3.02 6.26,4.94 -0.15,2.61 -3.85,3.5 -4.69,6.06 -0.26,3.07 -4.09,3.19 -4.18,5.96 -0.99,2.38 -0.74,5.09 1.7,6.47 2.85,2.76 6.86,3.99 10.73,4.38 0.48,1.55 -1.84,7.18 1.1,3.59 1.5,-2.42 0.59,-5.95 3.11,-8.01 2.5,-4.08 5.03,-8.84 4.88,-13.61 -1.35,-4.07 0.8,-9.01 -1.81,-12.82 -1.1,1.32 -6.17,1.23 -4.13,-0.8 2.39,-1.39 3.37,-3.62 2.39,-6.31 0.21,-2.31 1.58,-5.42 -1.69,-6.19 -4.35,-1.15 -8.82,-2.13 -12.88,-4.26 -0.66,0.75 -1.31,1.5 -1.97,2.25z\",\"name\":\"New Jersey\"},\"de\":{\"path\":\"m824.88,225.34c-3.72,0.25 -3.47,3.52 -1.91,6.13 3.35,6.89 3.86,14.58 6.03,21.81 3.45,0.11 6.81,-0.49 10.16,-1.25 -1.2,-2.17 -0.68,-6.38 -3.32,-6.38 -2.9,-1.2 -4.17,-3.69 -4.9,-6.58 -0.91,-3.11 -3.62,-4.96 -5.48,-7.35 -1.85,-1.82 0.94,-5.5 -0.26,-6.47l-0.33,0.09z\",\"name\":\"Delaware\"},\"md\":{\"path\":\"m813.59,229.19c-17.31,3.18 -34.53,6.83 -51.78,10.28 0.74,3.02 1.31,6.08 1.78,9.16 2.14,-1.9 3.29,-5.35 6.59,-5.34 2.14,-1.85 2.67,-5.25 5.77,-3.55 3.46,0.18 5.43,-5.35 9.01,-3.85 2.63,1.63 5.66,2.79 7.34,5.59 4.19,0.11 3.68,3.73 5.74,4.96 2.73,1.11 5.02,1.18 6.38,-0.53 4.29,1.38 2.24,3.74 1.44,6.9 0.09,2.97 -3.7,4.92 -1.66,7.97 3.1,1.31 6.4,1.2 9.63,1.4 2.17,1.58 6.83,1.03 3.79,-2.1 0.41,-2.74 -3.08,-3.35 -3.32,-6.04 -1.7,-2.67 -1.42,-5.47 -0.36,-8.32 1.68,-2.42 -2.83,-3.82 -0.4,-5.41 1.25,-1.53 0.43,-4.16 2.98,-4.7 1.62,-3.02 5.1,-1.45 2.35,1.02 -2.54,2.98 -0.81,4.5 0.57,6.3 1.41,3.55 -0.68,5.07 -1.53,7.31 -0.22,-0.81 3.62,-1.01 3.22,1.79 -3.15,1.64 -1.45,6.12 1.09,7.31 2.98,0.99 5.58,-1.8 6.98,2.14 1.5,3.75 4.92,0.81 7.41,-0.02 2.74,-1.21 3.47,-4.93 2.78,-7.7 -1.13,-1.58 -4.82,0.92 -7.13,0.4 -3.86,1.26 -4.9,-1.25 -5.28,-4.64 -1.68,-5.97 -2.14,-12.33 -5.16,-17.9 -0.04,-4.32 -2.71,-4.2 -6.07,-2.91 -0.73,0.16 -1.45,0.31 -2.18,0.47z m10.94,32.59c1.32,0.99 0.59,4.97 2.06,4.63 -0.48,-1.31 -0.36,-4.99 -2.06,-4.63z\",\"name\":\"Maryland\"},\"va\":{\"path\":\"m792.88,242.88c-0.16,1.46 0.24,5.89 -2.4,4.29 -2.58,-0.67 -6.42,-3.2 -8.23,-2.73 0.7,3.72 -1.46,6.77 -2.99,9.94 -3.05,1.14 -2.29,5.83 -5.84,5.58 -1.62,1.74 -1.47,5.31 -2.45,7.73 -3.09,1.14 -5.37,-0.48 -7.28,-1.75 0.11,6.5 -3.72,11.95 -5.91,17.84 -1.69,1.73 1.19,3.8 -0.74,5.77 -1.35,3.56 -3.79,2.72 -6.19,4.19 -2.72,1.1 -4.9,0.5 -5.4,4.61 -2.07,1.14 -4.83,2.63 -6.91,0.47 -2.38,1.51 -5.02,3.21 -7.81,1.6 -2.69,-0.01 -3.9,-6.55 -6.07,-2.94 -3.27,4.09 -7.89,7.48 -10.21,12.09 0.43,3.25 -4.46,3.32 -6.42,5.15 -4.27,1.95 3.62,-0.11 5.16,-0.07 5.56,-0.79 11.14,-1.37 16.76,-1.36 1.95,-2.65 4.98,-1.81 7.77,-1.65 7.86,-0.32 15.65,-2.12 23.48,-2.99 12.85,-1.4 25.44,-4.27 38.04,-7.05 11.65,-2.52 23.3,-5.03 34.96,-7.55 -1.64,-2.66 -2.75,-6.67 -6.42,-4.14 -1.99,2.03 -6.61,-1.82 -2.7,-2.48 2.65,-1.62 -1.75,-4.07 -1.8,-5.97 -2.73,-0.62 -2.88,-5.12 0.54,-3.6 -0.17,-1.37 -1.24,-3.62 -1.62,-5.68 1.47,-3.51 -0.84,-4.97 -3.72,-5.16 0.31,-3.42 -2.9,-2.93 -5.22,-3.97 -3.33,0.21 -7.06,-0.25 -9.91,-1.66 -1.22,-2.41 -0.91,-5.12 1.25,-6.88 1.39,-2.83 -0.28,-5.7 -3.3,-6.27 -2.65,-0.83 -6.97,-0.29 -5.73,-4.3 -0.83,-0.3 -2.05,-1.06 -2.69,-1.06z m39.16,21.59c0.44,4.71 -3.15,8.7 -2.62,13.48 -0.34,4.11 2.64,5.72 3.48,0.92 1.71,-3.04 -0.23,-6.47 0.8,-9.73 0.4,-2.53 3.66,-3.88 3.52,-6.73 -1.73,0.69 -3.46,1.38 -5.19,2.06z\",\"name\":\"Virginia\"},\"wv\":{\"path\":\"m739.75,223.25c-1.6,2.23 1.3,5.02 0.25,7.75 -0.18,4.04 -0.63,8.11 -0.84,12.13 -1.94,3.58 -4.43,7.35 -8.16,9.13 -3.15,-1.33 -3.92,3.25 -5.76,4.98 -1.56,2.28 2.64,4.93 -0.3,6.69 -2.57,3.58 -2.6,-4.8 -4.46,-0.71 -1.32,2.59 0.02,6.02 -1.35,8.33 -1.82,1.54 -0.53,5.19 -4.16,4.81 -2.23,0.13 -1.45,6.19 1,6.81 2.24,1.47 2.49,4.74 5.5,5.92 1.92,1.96 2.28,5.18 5.39,6.05 1.64,2.19 3.07,4.96 6.25,4.88 2.63,0.5 4.77,-3.86 7.22,-1.35 1.49,0.81 3.93,-0.57 4.58,-1.83 0.43,-4.57 3.42,-2.71 6.03,-4.39 2.39,-0.94 4.82,-0.98 5.62,-4.44 -1.26,-2.59 0.3,-5 1.56,-7.64 2.23,-4.81 4.72,-9.61 4.67,-15.05 2.65,-2.31 3.72,3.56 7.05,1.41 1.64,-1.77 1.12,-5.67 2.6,-7.59 3.47,0.39 2.97,-3.96 5.76,-5.21 2.29,-3.11 3.52,-6.8 3.06,-10.7 1.06,-1.29 5.1,1.62 7.23,2.15 3.3,3.35 4.34,-1.98 2.85,-4.05 -2,-2.28 -5.12,-3.7 -7.62,-4.75 -3.31,0.98 -5.44,5.47 -9.38,3.97 -1.86,-0.23 -2.38,3.98 -4.86,3.88 -2.89,0.71 -3.79,4.38 -6.03,6.22 -1.1,-0.06 -0.99,-4.82 -1.62,-6.64 -0.01,-3.93 -1.77,-5.3 -5.48,-3.82 -4.21,0.6 -8.41,1.23 -12.61,1.91 -1.17,-6.45 -2.29,-12.92 -3.44,-19.38l-0.35,0.35 -0.18,0.18z\",\"name\":\"West Virginia\"},\"oh\":{\"path\":\"m729.5,197.78c-4.85,2.06 -7.38,6.9 -11.47,9.97 -4.08,0.86 -8.09,1.75 -11.72,3.88 -3.41,1.61 -4.39,-4.09 -7.67,-2.63 -3.13,1.35 -5.49,-1.1 -8.11,-2.41 -8.6,1.15 -17.15,2.64 -25.66,4.38 1.45,17.83 4.12,35.53 5.87,53.33 -0.69,3.82 4.06,2.26 6.23,1.48 2.74,0.41 4.83,2.16 5.48,4.94 1.26,2.48 5.82,-0.87 6.96,2.54 2.19,1.53 4.46,-2.33 7.03,-0.58 2.52,0.04 5.62,1.51 6.84,-1.56 1.49,-0.55 5.37,-3.85 5.41,-0.71 0.38,2.53 3.82,3.57 5.77,4.7 3.53,0.63 2.32,-3.91 4.21,-5.51 -0.11,-2.74 0.21,-5.73 1.39,-8.13 2.53,-2.81 3.8,4.53 4.98,0.39 -2.02,-2.27 -0.99,-5.41 0.93,-7.41 1.07,-4.06 4.05,-2.41 6.5,-4.39 2.93,-3.16 6.59,-6.57 5.97,-11.27 0.44,-4.71 1.18,-9.75 -0.53,-14.23 1.47,-2.48 2.58,-4.29 0.96,-7.33 -2.04,-7.53 -2.56,-15.37 -3.93,-23.04 -1.81,1.2 -3.63,2.4 -5.44,3.59z\",\"name\":\"Ohio\"},\"in\":{\"path\":\"m658.66,210.31c-9.12,0.93 -18.35,1.98 -27.41,2.68 -2.6,0.39 -4.21,5.08 -6.89,2.98 -3.83,-2.84 -2.64,1.83 -2.41,4.45 1.1,14.81 2.73,29.61 3.44,44.42 -0.76,3.69 -1.39,7.89 1.36,10.91 0.1,2.99 1.4,6.28 -1.14,8.65 -1.83,2.73 -2.55,6.09 -5.02,8.42 0.09,2.08 -2.02,8.2 1.63,5.16 3.49,-0.6 7.25,-1.53 10.69,-1.34 2.36,4.08 2.67,-0.62 5.26,-1.29 2.03,-2.62 4.78,2.05 5.34,1.04 -1.26,-3.41 3.05,-3.77 5.1,-5.22 1.09,0.63 6.05,3.38 5.3,-0.64 -0.46,-2.47 2.02,-4.71 3.65,-6.34 3.11,-1.39 4.33,-3.9 4.16,-7.23 1.83,-1 4.93,-1.01 6.97,-2.47 4.23,-1.03 0.26,-3.48 1.22,-5.92 -0.83,-12.56 -2.8,-25.13 -4.08,-37.69 -0.85,-6.99 -1.44,-14.01 -2.14,-21.02 -1.68,0.16 -3.35,0.31 -5.03,0.47z\",\"name\":\"Indiana\"},\"il\":{\"path\":\"m569.75,200.44c-0.29,2.58 4.2,1.83 3.73,5.07 2.07,2.09 5.71,4.21 4.38,7.77 -0.31,3.04 -2.61,5.44 -3.08,8.4 -2.38,2.71 -6.06,2.98 -9.31,3.94 -1.61,2.47 -1.05,4.91 1.28,6.47 0.63,3.25 -1.08,5.07 -2.74,7.38 1.41,3.63 -2.39,2.86 -3.56,5.02 1.08,3.12 -2.11,3.8 -2.53,6.64 0.19,3.95 1.33,8.21 3.28,11.58 3.68,3.96 7.38,7.9 12.21,10.47 -0.61,2.88 -0.64,6.7 3.43,5.71 2.05,0 6.18,0.38 6.26,2.68 -0.19,4.39 -3.6,8.24 -3.28,12.53 1.6,3.83 5.33,6.26 8.59,8.42 3.37,-0.29 5.36,1.27 5.9,4.6 1.01,2.64 3.84,4.73 1.73,7.67 0.55,1.74 2.58,7.7 4.31,4.05 1.21,-2.98 5.41,-4.78 8.07,-2.46 3.1,2.46 5.94,0.47 3.13,-2.8 -0.98,-3.39 2.61,-4.96 5.37,-5.33 1.01,-1.55 -1.6,-4.46 1.4,-5.97 1.8,-3.97 -0.56,-9.39 3.32,-12.49 1.43,-2.97 3.23,-5.97 4.4,-8.97 0.13,-3 -0.7,-5.7 -2.34,-8.16 -0.45,-4.59 1.31,-9.09 0.02,-13.65 -1.16,-15 -2.22,-30.05 -3.67,-45.01 -1.02,-3.1 -1.61,-6.46 -4.04,-8.77 -2.27,-1.83 -0.51,-5.93 -1.97,-7.32 -14.76,0.83 -29.52,1.67 -44.28,2.5z\",\"name\":\"Illinois\"},\"ct\":{\"path\":\"m865.78,165.41c-6.91,1.54 -13.81,3.08 -20.72,4.63 2.17,6.2 2.74,12.83 2.44,19.34 -2.62,4.3 2.61,2.38 3.97,-0.21 2.09,-1.89 4.19,-3.71 5.99,-5.88 2.06,1.35 4.78,-1.86 7.44,-1.46 2.98,-0.68 5.69,-2.24 8.56,-3.26 -1.15,-4.67 -2.29,-9.33 -3.44,-14 -1.42,0.28 -2.83,0.56 -4.25,0.84z\",\"name\":\"Connecticut\"},\"wi\":{\"path\":\"m559.53,104.97c-4.06,2.75 -8.71,4.92 -13.53,5.84 -2.88,-1.08 -5.54,-1.12 -5.57,2.68 -0.48,3.34 0.51,7.03 -0.47,10.17 -2.02,3.26 -6.91,4.03 -7.36,8.38 -2.63,2.78 2.21,3.06 2.23,5.53 1.79,2.9 -2.13,4.74 -1.33,7.65 0.29,2.93 -0.4,6.49 1.14,8.93 1.33,3.48 5.88,0.21 6.64,3.93 1.56,2.26 5.47,1.03 6.19,4.78 2.15,5.1 9.7,4.85 11.21,10.39 0.68,3.38 0.35,7.34 1.94,10.32 3.26,1.05 1.94,4.34 0.25,6.21 -0.79,3.96 2.53,8.34 6.75,8.25 2.28,1.6 4.86,1.65 7.83,1.19 13.03,-0.77 26.07,-1.53 39.1,-2.3 -0.02,-4.45 -1.98,-8.61 -1.86,-13.13 -1.7,-2.04 -0.86,-4.17 -0.04,-6.39 0.32,-2.84 3.07,-4.93 1.51,-7.87 -1.05,-2.94 -0.88,-6.21 1.73,-8.27 -0.2,-2.83 -0.5,-5.03 -0.16,-7.93 -1.14,-4.2 2.64,-7.5 3.69,-11.36 0.92,-1.13 3.15,-8.34 0.73,-4.93 -2.65,3.81 -4.99,8.01 -8.18,11.29 -0.86,2.06 -3.21,4.55 -5.21,4.5 -2.57,-1.26 0.28,-4.49 0.9,-6.41 0.47,-2.94 3.2,-4.25 4.09,-6.85 -3.31,-1.29 -2.77,-5.03 -3.54,-7.92 0.02,-3.09 -1.23,-5.08 -4.29,-5.57 -2.14,-3.67 -7.04,-2.78 -10.59,-4.12 -7.13,-1.87 -14.21,-4.39 -21.67,-4.99 -2.48,-0.54 -2.84,-5.51 -5.51,-4.73 -1.71,-1.54 -3.85,-0.7 -5.82,0.13 -2.8,-1.32 0.68,-4.59 1.5,-6.38 2.18,-1.34 -1.53,-2.14 -2.31,-1z\",\"name\":\"Wisconsin\"},\"nc\":{\"path\":\"m830.06,295.97c-18.3,3.8 -36.53,8 -54.86,11.65 -12.74,1.51 -25.38,4.07 -38.18,4.94 -3.32,-0.82 -1.17,3.72 -2.5,5.53 -2.62,1.34 -3.49,4.59 -5.03,6.38 -3.24,-1.36 -5.07,1.46 -6.34,3.97 -1.09,-0.57 -2.96,0.03 -3.41,-1.41 -2.02,1.96 -4.37,3.73 -4.31,6.81 -3.66,1.1 -6.31,3.82 -9.28,5.96 -2.64,0.94 -5.76,2.16 -7.4,4.35 0.73,4.06 -2.98,3.3 -5.1,5.29 -1.98,4.69 2.74,2.66 5.58,2.5 6.41,-1.19 13.32,-0.49 19.18,-3.73 5.04,-1.9 9.41,-5.9 15.06,-5.67 6.5,-0.64 13.15,-0.6 19.62,-0.69 2.99,0.53 3.36,4.79 5.58,5.01 5.37,-0.81 10.87,-1.67 16.25,-1.79 5.38,1.36 9.61,5.45 14.52,7.93 3.59,2.64 6.93,5.66 10.43,8.44 3.15,-0.86 6.32,-1.58 9.59,-1.72 1.06,-4.55 2.04,-9.29 5.39,-12.78 4.2,-4.27 9.23,-8.29 15.33,-9.29 2.91,1.95 3.69,-2.9 5.27,-4.53 2.72,-5 -2.44,3.91 -2.46,-1.22 -3.87,0.7 -5.43,-0.26 -3.29,-4 2.77,-4.25 -2.73,-2.51 -2.12,-6.02 -1.42,-3.76 2.84,2.19 5.06,0.81 2.81,0.12 5.1,-1.87 5.59,-4.6 0.45,-2.9 4.59,-2.7 3.28,-6.48 -4.02,-2.43 4.25,-0.66 0.4,-3.93 -3.52,-3.44 -5.24,-8.33 -7.23,-12.76 -1.54,0.35 -3.08,0.71 -4.63,1.06z m17.13,23.72c1.55,2.61 -4.64,4.26 -0.52,2.69 1.38,-1.92 0.21,-5.22 0.24,-7.62 -0.74,-2.05 0.37,4.57 0.28,4.94z\",\"name\":\"North Carolina\"},\"dc\":{\"path\":\"m803.44,248.16c2.67,3.43 3.85,-1.02 0.55,-0.75l-0.29,0.4 -0.25,0.35z\",\"name\":\"District of Columbia\"},\"ma\":{\"path\":\"m877.59,144.41c-1.04,3.1 -4.01,3.5 -6.79,4.13 -8.62,2.32 -17.17,4.6 -25.96,6.12 -0.11,4.77 -1.17,9.59 -0.03,14.31 10.66,-2.6 21.54,-4.29 32,-7.44 3.57,2.81 6.01,6.73 8.28,10.59 2.13,-0.78 0.01,-5.15 3.77,-5.38 2.93,-3.28 1.83,4.78 3.17,2.62 2.13,-3.09 6.1,-3.9 9.41,-5.21 -0.11,-3.41 -2.21,-8.55 -6.38,-7.53 1.64,-0.1 4.89,0.87 4.91,3.82 0.85,2.24 -2.55,3.71 -4.35,4.24 -3.37,0.51 -4.99,-1.76 -6.32,-4.47 -1.38,-2.05 -3.58,-6.56 -6.3,-3.6 -1.89,-1.72 -3.13,-4.04 -1.33,-6.3 2.3,-2.34 1.23,-6.2 -1.28,-7.16 -0.93,0.41 -1.86,0.82 -2.79,1.24z M902.25,172.69c-1.6,2.76 3.05,-2.44 0.08,-0.32l-0.08,0.32z m-11.28,1.28c1.59,0.78 6.09,-2.26 1.78,-2.03 -0.59,0.68 -1.19,1.35 -1.78,2.03z\",\"name\":\"Massachusetts\"},\"tn\":{\"path\":\"m730.41,314.34c-8.87,-0.11 -17.76,1.5 -26.57,2.73 -10.24,2.86 -20.99,2.66 -31.48,4.02 -16.34,1.45 -32.65,3.29 -48.96,4.95 -4.57,-1.71 -0.43,5.74 -5.06,4.14 -6.97,0.06 -13.87,1.23 -20.84,0.71 -0.95,4.26 -1.37,9.04 -3.6,12.76 -3.45,1.82 -4.01,5.81 -4.43,9.33 -3.1,1.1 -4.68,2.61 -2.53,5.59 -1.75,3.9 -0.58,5.24 3.51,3.98 33.91,-3.26 67.83,-6.53 101.74,-9.79 -0.23,-2.54 0.72,-5.31 3.53,-5.69 3.11,-0.4 0.99,-5.41 4.88,-5.81 2.77,-2.02 6.49,-2.19 8.62,-5.18 1.76,-2.26 6.31,-1.64 5.78,-5.38 1.19,-1.77 3.1,-3.84 5.03,-4.85 1.04,-0.39 0.28,1.78 1.72,1.19 2.38,0.56 2.2,-4.36 5.22,-3.86 3.3,1.27 2.68,-2.92 4.96,-4.18 2.05,-0.94 3.81,-6.68 0.92,-6.59 -0.81,0.64 -1.63,1.27 -2.44,1.91z\",\"name\":\"Tennessee\"},\"ar\":{\"path\":\"m509.47,335.31c1.73,4.9 1.5,10.02 1.53,15.12 2.15,12.21 1.13,24.64 1.47,36.97 0.02,3.71 0.04,7.42 0.06,11.13 2.06,3.2 5.05,-1.45 7.69,1.47 1.53,1.76 -0.88,7.54 2.97,6.49 17.61,-0.36 35.23,-0.72 52.84,-1.08 1.97,-2.6 0.41,-5.9 -1.28,-8.22 3.3,-1.61 -1.59,-3.96 0.84,-6.53 0.75,-2.77 0.62,-6.34 3.78,-7.69 -1.88,-3.07 2.08,-5.24 3.19,-7.88 3.77,-0.38 1.58,-3.3 2.64,-5.42 1.12,-2.67 2.56,-5.28 4.85,-6.58 1.2,-4.12 0.21,-2.67 -1.53,-5.61 -2.76,-3.32 1.95,-3.96 2.36,-6.84 -0.05,-1.94 3.31,-6.69 1.22,-6.75 -2.65,0.85 -5.34,-0.18 -8.02,-0.33 -0.09,-3.38 4.4,-3.88 4.22,-7.3 0.58,-3.87 -3.58,-3.68 -6.34,-3.26 -24.17,0.77 -48.34,1.54 -72.5,2.31z\",\"name\":\"Arkansas\"},\"mo\":{\"path\":\"m490.44,245.63c-2.39,-0.46 -0.19,4.05 0.07,5.6 2.45,3.32 4.51,7.86 8.55,9.22 2.81,-0.24 3.61,2.67 2.79,4.84 -3.22,1.64 -1.72,5.03 0.19,7.07 0.9,2.55 4.61,3.05 4.89,5.61 2.1,12.97 1.12,26.14 1.51,39.22 0,5.72 0.08,11.44 0.72,17.13 24.99,-0.94 49.98,-1.8 74.97,-2.51 3.02,-1.12 4.35,1.72 5.31,3.98 0.52,3.48 -2.86,4.46 -4.14,6.86 2.37,0.64 5.57,0.65 8.21,-0.08 1.46,-3.59 1.87,-7.45 2.38,-11.22 0.84,-2.83 5.27,-2.89 4.61,-6.03 1.37,-2.94 0.14,-4.6 -2.22,-4.28 -2.15,-1.81 -2.84,-5.03 -2.86,-7.6 1.45,-2.84 -2.08,-5.07 -2.44,-7.89 -0.66,-3.24 -5.34,-0.87 -6.89,-3.66 -2.64,-2.34 -6.24,-3.94 -6.91,-7.76 -0.94,-3.21 1.52,-6.47 2.17,-9.64 2.2,-3.53 -1.34,-4.7 -4.33,-4.5 -2.66,0.39 -5.34,-1.15 -4.81,-4.1 0.86,-4.07 -4.71,-4.05 -6.43,-6.93 -2.7,-3.4 -6.72,-6.05 -7.25,-10.67 -1.1,-3.16 -2.12,-6.86 -0.62,-10.06 -2.3,-1.34 -2.28,-5.77 -5.37,-4.89 -20.69,0.77 -41.38,1.53 -62.06,2.3z\",\"name\":\"Missouri\"},\"ga\":{\"path\":\"m672.78,356c-0.74,7.06 4.28,12.69 5.29,19.4 1.36,6.57 3.44,12.96 5.03,19.44 0.94,4.88 2.17,9.95 5.53,13.75 -0.85,3.5 3.37,3.17 2.59,6.44 -1.89,4.45 -3.57,9.65 -0.84,14.13 0.05,2.63 0.94,5.4 -0.38,7.88 2.95,0.94 1.45,4.01 3.07,6.01 1.35,2.67 3.68,4.75 6.83,4 12.35,-0.01 24.69,-1.31 37.03,-1.92 3.32,-0.58 6.67,-0.74 10.04,-0.59 -0.78,4.24 3.04,4.15 2.09,-0.09 -0.9,-2.14 -2.94,-6.23 0.59,-6.62 3.2,0.5 6.42,0.91 9.66,1.02 -0.84,-3.8 -0.8,-7.57 0.5,-11.27 0.2,-3.54 2.62,-6.73 2.21,-10.21 -0.72,-2.93 3.26,-5.26 2.85,-8.05 -2.19,1.37 -5.29,-0.71 -5.34,-3.19 -0.56,-3.12 -2.71,-5.83 -6.03,-6.06 -1.33,-3.9 -2.62,-8.17 -4.99,-11.43 -3.12,-1.07 -6.13,-2.99 -7.17,-6.29 -2.06,-2.33 -5.23,-3.21 -6.66,-6.16 -2.08,-2.2 -5.24,-2.83 -7.66,-4.19 -0.76,-2.53 -3.21,-4.09 -3.94,-6.67 -1.36,-2.63 -2.97,-4.65 -6.15,-3.77 -2.33,-1.57 -7.15,-3.38 -5.31,-6.97 2.02,-2.01 3.76,-4.11 -0.8,-3.11 -12.68,1.51 -25.37,3.01 -38.05,4.52z\",\"name\":\"Georgia\"},\"sc\":{\"path\":\"m737.03,343.19c-4.26,0.4 -8.64,0.43 -12.24,3.07 -3.2,1.75 -6.48,3.19 -9.88,4.49 2.21,3.31 -4.28,2.74 -2.34,6.44 2.27,2.24 5.2,4.13 8.5,3.28 2.53,3.15 3.83,6.94 6.53,9.88 0.91,2.76 5.13,2.06 6.85,4.46 2.18,1.38 2.96,4.25 5.62,5.01 2.99,1.95 3.36,6.38 7.26,7.24 3.61,0.62 3.77,4.77 5.34,7.38 0.38,3.35 2.02,4.84 4.79,5.96 3.36,1.79 1.76,7.23 5.67,8.16 3.63,-1.38 5.8,-4.63 8.38,-7.34 -2.35,-3.93 0.29,-3.32 3.01,-4.44 1.95,-2.4 5.02,-3.3 6.25,-6.28 2.17,-2 3.86,-4.52 5.4,-6.9 2.81,-0.17 3.42,-3.58 4.92,-5.03 -0.28,-4.13 1.3,-7.89 3.12,-11.47 1.03,-2.11 7.03,-4.5 3.47,-6.34 -5.97,-5.35 -12.78,-9.5 -19.71,-13.47 -4.45,-2.68 -9.74,-0.07 -14.57,-0.06 -2.57,-0.23 -6.63,2.48 -7.32,-1.28 -1.66,-4.5 -6.93,-2.82 -10.63,-2.96 -2.8,0.07 -5.61,0.14 -8.41,0.21z\",\"name\":\"South Carolina\"},\"ky\":{\"path\":\"m675,267.5c-2.76,-0.77 -6,1.11 -3.38,3.78 1.52,3.15 -3.12,4.12 -5.19,5.27 -2.94,0.53 -4.71,1.29 -4.3,4.82 -1.15,2.66 -5.3,3.24 -6.32,6.32 -2.16,1.4 0.74,6.22 -2.84,5.92 -3.06,0.61 -4.36,-2.79 -7.09,0.11 -2.26,0.51 -1.1,6.98 -3.85,3.1 -2.27,-2.54 -5.57,0.14 -6.16,2.81 -1.91,1.07 -3.4,-3.73 -6.02,-1.91 -3.32,0.61 -7.48,0.47 -9.92,2.91 0.08,2.65 -3.39,3.78 -1.7,6.05 2.34,2.66 -2.23,2.68 -3.86,3.3 -3.57,1.35 -0.68,4.35 -0.76,6.72 0.33,3.45 -3.76,1.44 -5.49,0.72 -2.5,-2.29 -6.26,-0.38 -7.13,2.53 2.86,2.28 -0.04,4.76 0.41,7.66 -3.47,2.04 -3.19,2.73 0.94,2.35 5.84,0.01 11.64,-0.95 17.5,-0.76 -0.7,-3.74 0.98,-4.99 4.56,-4.19 24.33,-3.01 48.82,-4.7 73.16,-7.43 4.3,-0.7 8.2,-2.38 11.75,-4.88 3.3,-0.8 4.04,-2.71 5.12,-5.35 3.46,-4.09 7.13,-8.06 10.79,-12 -3.27,-1.24 -3.03,-5.51 -6.21,-6.95 -2.6,-1.25 -2.07,-4.66 -5.16,-5.36 -2.38,-2.64 0.8,-7.28 -3.02,-8.87 -3.02,-0.01 -2.37,-4.65 -4.57,-3.51 -2.95,0.61 -3.67,4.78 -7.02,3.29 -2.69,-0.23 -5.51,-1.19 -7.82,0.71 -3,0.83 -3.99,-3.61 -7.44,-2.06 -3.51,0.82 -2.17,-5.19 -5.65,-5.26C677.17,266.43 676.21,267.17 675,267.5z\",\"name\":\"Kentucky\"},\"al\":{\"path\":\"m628.53,359.63c-0.2,14.37 0.12,28.75 -0.54,43.12 -0.04,9.01 -0.88,18.1 -0.07,27.07 1.55,10 2.94,20.01 3.85,30.09 3.07,1.09 3.69,-1.92 4.4,-4.18 -0.3,-3.89 4.27,-3.02 4.89,-0.04 0.72,2.06 4.08,5.27 0.77,6.65 -0.15,0.92 6.17,-0.9 5.88,-2.89 -0.44,-3.01 0.64,-6.86 -2.87,-8.19 -2.29,-0.88 -3.03,-5.59 -0.32,-5.67 14.08,-1.86 28.21,-3.59 42.35,-4.8 2.7,1.07 6.76,-0.25 2.97,-2.5 -1.8,-2 0.95,-5.03 -0.27,-7.65 -0.31,-3.1 -2.63,-5.9 -1.31,-9.15 0.01,-2.92 2.49,-5.36 1.93,-8.3 -3.52,-0.45 -1.34,-5.11 -4.26,-6.7 -3.48,-5.82 -3.36,-13.04 -5.96,-19.21 -2.02,-8.09 -3.34,-16.41 -7.25,-23.88 -0.51,-2.39 -1.08,-4.85 -0.72,-7.31 -14.49,1.18 -28.98,2.35 -43.47,3.53z\",\"name\":\"Alabama\"},\"la\":{\"path\":\"m521.09,407.28c0.1,7.53 -0.24,15.32 1.67,22.61 2.08,2.49 2.82,5.51 3.15,8.67 1.87,2.78 5.27,4.95 4.59,8.72 1.61,2.18 -0.21,5.69 0.08,8.38 0.42,2.64 -4.36,4.89 -2.01,7.12 1.07,2.26 -0.92,5.31 -0.53,7.95 0.38,3.22 -2.37,5.7 -1.55,8.93 5.18,-2.4 10.98,-0.86 16.47,-1.09 5.72,1.7 11.56,4.87 17.56,4.26 2.93,-2.25 5.94,0.36 8.98,0.93 1.08,-3.4 -4.22,-0.81 -5.8,-2.2 -1.91,-0.36 -2.89,-2.3 -1.17,-3.4 2.08,-1.1 4.08,-1.09 5.66,0.04 2.15,-1.39 5.6,-0.24 6.26,2.38 -0.33,3.62 3.42,1.7 5.28,3.15 3.83,1.5 -1.41,4.07 0.83,5.37 2.88,0.97 5.73,2.94 8.62,3.29 3.51,-0.05 2.81,-4.53 6.47,-4.17 1.83,-2.9 4.44,-0.25 4.39,2.31 1.53,1.64 4,-3.68 1.98,-3.66 0.22,-3.37 2.17,-3.21 4.31,-5.41 1.59,0.95 0.91,2.82 1.41,4.16 3.33,0.39 7.44,1.09 9.34,4.06 2.79,0.08 5.17,1.1 5.56,-2.56 -2.68,-0.27 -4.15,-3.88 -7.35,-3.19 -2.31,0.06 -6.3,-1.62 -6.15,-3.77 1.62,-3.62 2.23,-1.74 2.03,-4.38 2.88,1.09 5.69,-2.27 3.22,-4.47 0.46,-4.62 -3.73,-0.15 -3.34,2.19 -1.36,1.21 -6.35,-0.96 -4.6,-3.27 1.71,-1.84 4.2,-4.5 2.19,-6.95 -0.13,-3.26 -2.69,-5.21 -4.47,-7.38 0.52,-2.7 2.26,-7.35 -2.36,-5.46 -10.43,1.28 -20.97,0.69 -31.45,1.12 -1.61,-3.72 -0.02,-7.76 0.16,-11.59 2.66,-4.86 5.46,-9.65 8.25,-14.44 -2.04,-2.82 3.52,-4.45 -0.74,-6.48 -0.53,-2.15 -1.29,-4.65 -2.32,-6.83 -0.08,-3.1 0.9,-7.3 -3.62,-5.79 -17,0.28 -34,0.57 -51,0.85z\",\"name\":\"Louisiana\"},\"ms\":{\"path\":\"m591.03,363.5c-1.45,1.74 -4.03,3.15 -4.63,6.03 -1.4,2.22 1.43,5.74 -2.69,6.07 -1.48,1.97 -4.77,4.42 -3.4,7.17 -1.36,1.83 -3.59,3.95 -3.48,7.01 -2.16,2.66 1.55,5.28 -0.27,7.12 -0.45,1.84 2.25,4.42 1.35,7.03 -1.92,2.71 -1.63,6.55 -0.61,9.53 1.6,2.4 0.78,5.54 3.73,6.94 -0.95,2.53 -1.41,3.75 -1.87,6.31 -2.55,4.96 -6.07,9.62 -7.89,14.84 0.01,2.98 -1.44,6.14 -0.14,8.97 11.4,-0.36 22.87,0.25 34.19,-1.5 2.75,2.21 -2.19,6.39 1.33,8.15 2.82,1.62 2.28,5.18 3.89,7.63 2.07,-1.86 2.51,-6.19 5.82,-4.07 3.21,-0.67 6.85,-3.02 9.89,-0.64 3.62,0.73 6.01,-0.27 4.42,-4.26 -0.81,-10.1 -2.99,-20.07 -3.84,-30.15 0.14,-21.99 1.48,-43.98 0.64,-65.97 -12.15,1.26 -24.29,2.52 -36.44,3.78z\",\"name\":\"Mississippi\"},\"ia\":{\"path\":\"m476.25,181.16c-3.42,-0.05 -2.16,5.68 0.72,6.29 0.54,2.07 -0.75,5.06 -1.41,7.35 -2.13,2.82 -0.93,5.45 1.04,7.92 1.22,4.34 2.24,8.85 4.05,13.06 0.6,3.22 1.29,6.38 3.41,9 0.02,3.49 1.27,6.69 2.3,9.91 -0.04,3.54 0.03,7.05 2.08,10.09 22.2,-1.02 44.44,-1.75 66.66,-2.63 0.77,1.43 3.25,7.11 4.37,4.25 -0.96,-2.5 1.19,-4.52 3.57,-4.72 -0.88,-2.62 1.19,-4.59 2.5,-6.28 1.27,-2.92 -1.39,-4.02 -2.41,-6.31 0.69,-2.9 1.79,-5.3 5.13,-5.46 2.88,-0.83 6.57,-1.81 6.65,-5.41 1.76,-3.04 3.73,-8.01 -0.26,-10.18 -2.74,-1.06 -1.75,-5.27 -5.21,-5.14 -0.64,-1.97 -0.85,-4.76 -4.19,-4.21 -2.75,-0.8 -4.55,-3.47 -5.37,-6 -1.36,-2.89 2.01,-4.72 1.65,-7.28 -3.82,-0.4 -1.19,-6.5 -5.03,-5.47 -26.75,0.41 -53.5,0.81 -80.25,1.22z\",\"name\":\"Iowa\"},\"mn\":{\"path\":\"m497.03,53.84c-0.69,2.52 0.93,7.42 -1.31,8.34 -9.65,-0.01 -19.29,-0.02 -28.94,-0.03 1.16,2.87 2.18,5.76 0.97,8.81 0.05,5.74 -0.79,11.86 2.51,16.95 2.04,3.78 0.64,8.47 1.5,12.6 0.82,6.84 1.76,13.67 3.55,20.32 0.05,3.83 0.88,7.8 0.03,11.53 -1.57,1.74 -4.91,3.29 -2.22,5.78 1.89,1.83 5.05,2.94 4.58,6.1 0.28,11.9 0.25,23.83 0.42,35.75 26.72,-0.38 53.44,-0.75 80.16,-1.13 -0.15,-3.62 -0.46,-7.93 -4.36,-9.47 -3.02,-1.66 -6.24,-3.1 -7.63,-6.5 -0.72,-3.61 -5.32,-1.16 -6.05,-4.61 -1.56,-2.09 -5.29,-0.37 -6.57,-3.78 -1.66,-2.1 -0.52,-5.5 -1.1,-8.1 -1.34,-2.93 1.65,-4.99 1.47,-7.54 -0.2,-3.22 -5.36,-3.85 -2.24,-7.43 0.41,-4.47 5.39,-5.33 7.61,-8.59 0.24,-3.87 -0.73,-8.14 0.52,-11.77 1.76,-3.14 5.17,-5.1 8.28,-6.26 1.92,-2.08 3.66,-4.57 6.13,-5.81 2.54,-4.97 6.04,-9.99 11.81,-11.4 4.55,-1.98 9.12,-3.92 13.6,-6.04 0.73,-3.15 -3.7,-0.18 -5.06,0.03 -0.82,-3.87 -4.2,-3.09 -7.28,-2.87 -2.25,-0.87 -5.34,2.83 -6,-0.66 -1.13,-3.5 -4.51,0.72 -5.88,2.13 -2.33,1.63 -6.22,1.16 -8.06,-0.56 0.94,-3.05 -4.61,-0.39 -4.53,-3.96 -0.16,-2.3 -3.48,1.3 -5.77,-1.2 -3.04,-0.91 -5.5,-3.22 -8.29,-4.38 -2.49,0.4 -5.86,-2.38 -6.7,1.5 -1.17,0.79 -7.15,1.83 -5.93,-1.54 -2.99,0.03 -6.03,-0.05 -7.53,-1.75 -2.6,0.59 -5.72,-0.41 -5.9,-3.43 -0.88,-3.28 -1.44,-6.61 -1.88,-9.98 -1.23,-0.6 -2.54,-1.02 -3.91,-1.06z\",\"name\":\"Minnesota\"},\"ok\":{\"path\":\"m363.31,330.03c17.51,1.12 35.04,1.73 52.56,2.47 -1.37,13.62 -2.89,27.23 -2.83,40.93 -0.92,3.93 3.48,5.78 6.14,7.66 0.56,-5.56 2.96,1.46 4.25,-1.31 0.93,-1.5 5.57,1.68 3.39,4.42 1.59,0.66 4.76,0.51 6.73,1.82 2.79,-0.99 5.16,3.32 7.03,1.26 1.82,-1.93 5.59,-0.31 6.5,2.02 2.44,0.79 1.71,5.84 4.76,3.05 1.39,-1.65 6.25,-1.17 6.69,1.21 1.28,1.5 5.69,3.72 7.39,1.92 0.33,-2.75 3.38,-5.95 4.59,-1.83 3.59,0.38 6.96,2 10.46,3 2.28,-1.86 2.44,-4.68 6.53,-3.41 2.53,1.92 3.8,-1.41 6.31,-1.16 0.85,2.42 5.2,2.41 6.19,-0.5 3.2,-0.2 3.66,3.71 6.55,4.35 1.86,0.4 6.31,3.63 5.36,0.18 -0.32,-12.27 0.1,-24.59 -0.7,-36.82 -1.15,-6.03 -1.01,-12.18 -1.43,-18.25 -1.32,-5.29 -2.05,-10.73 -2.07,-16.18 -20.01,0.66 -40.04,-0.04 -60.06,-0.22 -27.85,-1.32 -55.73,-2.3 -83.53,-4.56 -0.27,3.31 -0.54,6.63 -0.81,9.94z\",\"name\":\"Oklahoma\"},\"tx\":{\"path\":\"m359.47,330.97c2.34,-0.11 -0.86,-1.81 0,0z m0.72,18.31c-1.64,20.84 -2.52,41.75 -4.68,62.55 -0.51,4.33 -0.99,8.66 -1.51,12.98 -17.84,-0.87 -35.67,-1.93 -53.42,-3.89 -4.16,-0.41 -8.32,-0.76 -12.48,-1.11 -0.67,3.74 2.27,3.68 4.04,6.12 2.26,1.83 1.13,6.03 4.65,6.5 3.52,0.48 2.9,4.6 5.45,6.34 3.38,3.15 5.5,7.91 10.27,9.06 1.91,1.27 4,3.22 4.53,5.46 0.69,3.96 4.53,7.02 3.47,11.33 -0.88,5.15 2.22,9.63 5.93,12.88 2.18,2.95 5.14,4.76 8.63,5.78 1.88,1.95 3.01,3.88 5.72,4.88 2.59,0.18 5.38,4.34 7.35,1.18 2.59,-3.14 5.48,-6.41 6.05,-10.55 1.26,-2.82 3.58,-4.32 6.5,-5.06 2.72,-1.59 5.32,-2.13 7.47,0.62 4.91,0.57 10.2,0.53 14.79,2.22 2.83,1.43 2.56,4.53 5.17,6.33 1.73,2.05 4.83,3.37 5.81,5.82 1.37,2.07 2.66,4.26 2.69,7.03 1.62,4.34 4.17,8.51 5.31,12.94 -0.24,2.77 4.65,2.49 4.95,5.51 2.24,4.08 4.37,9.17 9.21,10.49 3.28,2 0.03,5.04 0.91,7.5 3.28,0.87 -0.01,4.68 0.94,6.67 2.53,1.36 4.37,3.2 4.22,6.44 0.39,3.34 2.13,6.83 5.69,7.54 3.01,1.93 6.69,2.13 9.87,3.4 2.28,1.79 5.15,4.09 8.16,2.83 3.46,0.46 6.77,1.29 9.37,3.75 1.43,2.54 6.51,-0.91 4.31,-2.89 -2.04,-3.39 -1.3,-7.79 -2.83,-11.46 -0.63,-3.07 -2.39,-5.95 -0.99,-9.1 1.17,-4.9 2.87,-9.76 4.04,-14.71 -3.37,-1.01 -2.07,-5.47 1.21,-4.71 3.99,0.42 3.65,-6.43 7.81,-6.05 5.25,-1.56 9.07,-6 14.16,-8.05 6.91,-2.81 13.62,-6.46 18.72,-12.05 2.58,-2.98 7.09,-3.95 8.69,-7.75 5,-2.22 9.8,-4.93 15.22,-6 -0.97,-2.64 0.52,-4.86 1.32,-7.22 0.39,-2.99 0.19,-6.07 1.18,-8.94 -3.15,-2.27 0.38,-4.91 1.38,-7.41 -0.2,-2.8 1.42,-6.25 0.09,-8.66 0.3,-2.93 -1.49,-5.14 -3.35,-7.29 -2.46,-2.64 -1.11,-6.91 -3.87,-9.52 -2.53,-4.57 -1.59,-10.19 -2.25,-15.22 0.02,-5 0.19,-10 -0.5,-14.97 -2.63,-2.31 -5.52,2.33 -7.52,-1.37 -3.1,-2.07 -7.66,-2.1 -9.73,-5.68 -2.31,-2.48 -3.82,2.84 -7.18,0.96 -1.91,-2.73 -3.59,0.03 -5.98,0.18 -2.27,-1.15 -6.07,-1.48 -6.09,1.76 -2.76,2.37 -5.95,-0.93 -8.94,-1.28 -3,1.38 -5.23,-3.83 -6.3,-1.87 -0.15,2.66 -2.52,5.1 -5.13,3.34 -3.23,-0.15 -4.91,-2.49 -6.57,-3.89 -2.95,-1.74 -4.3,2.32 -6.94,0.88 -1.48,-1.39 -1.87,-3.6 -3.92,-5.65 -3.06,-2.83 -5.03,3.17 -7.13,0.23 -2.05,-2.11 -5.57,-0.83 -7.94,-2.69 -3.56,0.59 -5.54,-0.24 -4.13,-4.11 -1.89,-1.85 -2.28,1.21 -4.77,-0.14 -0.59,-0.41 -3.45,1.78 -5,-1.11 -1.9,-1.9 -5.13,-3.22 -4.18,-6.45 0.03,-10.58 0.25,-21.15 1.66,-31.65 0.3,-2.99 0.6,-5.98 0.89,-8.98 -17.65,-0.63 -35.3,-1.27 -52.94,-2.22 -0.52,6.07 -1.04,12.15 -1.56,18.22z M466.53,518.63c-5.2,7.17 2.93,-3.27 0,0z\",\"name\":\"Texas\"},\"nm\":{\"path\":\"m242.72,428.78c4.82,0.63 9.65,1.25 14.47,1.88 0.43,-3.33 0.85,-6.67 1.28,-10 9.7,0.89 19.4,1.86 29.09,2.78 -0.9,-3.14 -1.39,-5.98 2.84,-4.5 18.29,1.28 36.48,3.79 54.81,4.49 2.45,-0.6 7.66,2.13 7.99,-1.01 3.06,-22.93 3.75,-46.09 5.59,-69.14 0.54,-7.79 1.39,-15.56 2.02,-23.34 3.21,0.65 1.17,-4.81 2.07,-6.86 1.79,-4.38 -2.87,-3.37 -5.73,-3.85 -32.35,-3.3 -64.71,-6.59 -97.06,-9.89 -5.79,39.81 -11.58,79.63 -17.38,119.44z\",\"name\":\"New Mexico\"},\"ks\":{\"path\":\"m380.53,320.34c25.06,1.17 50.11,2.71 75.19,3.35 17.22,0.07 34.44,0.63 51.66,0.18 -0.25,-12.69 0.23,-25.42 -0.47,-38.08 -0.61,-2.83 -0.17,-6.27 -1.38,-8.74 -3.04,-2.03 -6.02,-5.19 -6.68,-8.77 -0.43,-2.51 4.3,-4.59 1.29,-6.64 -3.02,0.54 -4.05,-3.34 -7.17,-2.43 -36.21,-0.82 -72.43,-1.33 -108.63,-2.5 -1.27,21.21 -2.54,42.42 -3.81,63.63z\",\"name\":\"Kansas\"},\"ne\":{\"path\":\"m353.38,230.59c10.76,0.96 21.27,2.72 32.03,3.66 -0.37,7.11 -0.71,14.23 -1.06,21.34 36.49,1.29 73,1.84 109.5,2.56 -0.31,-1.17 -3.13,-4.05 -4.03,-6.15 -1.99,-2.11 -0.36,-5.13 -2.45,-7.34 -2.42,-3.19 -1.66,-7.14 -2.2,-10.79 -1.66,-2.86 -1.45,-6.25 -2.29,-9.26 -2.94,-2.85 -2.34,-7.01 -3.95,-10.49 -1.13,-3.1 -2.18,-6.19 -2.62,-9.47 -3.51,1.32 -2.89,-3.07 -4.85,-4.29 -2.4,-1.68 -5.57,-1.85 -7.72,-3.93 -3.79,0.07 -7.65,1.04 -11.13,1.94 -2.52,-2.2 -6.03,-3.13 -7.91,-6.06 -13.61,0.96 -27.23,-0.49 -40.83,-1.11 -15.5,-1.05 -31.02,-1.79 -46.51,-2.86 -1.67,14.08 -2.83,28.17 -4,42.25z\",\"name\":\"Nebraska\"},\"sd\":{\"path\":\"m357.44,187.41c25.68,1.58 51.37,3.15 77.06,4.26 3.58,-0.01 7.34,-0.51 10.81,-0.23 1.8,2.9 5.24,3.85 7.69,6 3.55,-1.45 7.52,-1.89 11.25,-1.91 2.45,2.67 7.26,2.29 9.15,5.33 1.32,4.76 3.27,1.86 0.18,-1.15 -1.53,-2.17 1.46,-4.6 1.56,-6.99 1.2,-2.87 1.38,-5.28 -1.58,-6.75 -0.5,-2.04 -0.73,-6.65 2.41,-5.84 2.62,-0.28 0.39,-5.28 1.06,-7.5 -0.32,-9.7 0.19,-19.47 -0.64,-29.13 -0.24,-3.58 -6.26,-4.19 -5.42,-8.4 1.09,-1.22 5.81,-4.38 2.75,-5.4 -27.23,-0.89 -54.5,-1.01 -81.67,-3.15 -9.79,-0.62 -19.57,-1.24 -29.36,-1.86 -1.75,20.91 -3.5,41.81 -5.25,62.72z\",\"name\":\"South Dakota\"},\"nd\":{\"path\":\"m362.88,123.72c26.46,1.49 52.89,3.7 79.4,3.91 10.84,0.26 21.67,0.52 32.51,0.78 0.01,-5.53 -1.38,-10.82 -2.5,-16.17 -1.27,-7.42 -2.05,-14.89 -2.13,-22.42 -2.61,-4.16 -4.11,-9 -3.48,-13.94 -0.44,-3.25 0.67,-6.57 0.3,-9.7 -0.15,-4.01 -2.83,-4.61 -6.31,-4.12 -25.15,-0.47 -50.33,-1.05 -75.41,-3.06 -5.17,-0.49 -10.33,-0.98 -15.5,-1.47 -2.29,22.06 -4.58,44.13 -6.88,66.19z\",\"name\":\"North Dakota\"},\"wy\":{\"path\":\"m240.16,217.84c37.4,4.49 74.29,8.23 111.69,12.72 2.5,-29.2 5.5,-57.65 8,-86.84 -35.26,-4.45 -70.52,-8.9 -105.78,-13.34 -4.64,29.16 -9.27,58.31 -13.91,87.47z\",\"name\":\"Wyoming\"},\"mt\":{\"path\":\"m192.59,52.19c0.84,2.76 3.25,5.4 3.2,8.23 -1.5,2.79 -1,5.49 0.52,8.15 3.4,0.39 4.18,3.44 5.26,6.16 1.43,3.34 2.55,6.88 5.37,9.34 0.88,2.21 5.27,1.18 4.34,4.72 -2.23,6.21 -5.45,12.23 -7.06,18.56 0.02,3.34 3.4,5.25 5.73,2.22 1.61,-2.43 5.63,-3.04 4.69,0.97 -0.5,5.3 1.81,10.35 2.59,15.53 1.9,2 5.27,3.44 5.68,6.31 -0.71,1.91 -0.39,8.78 2.32,5.14 1.85,-1.89 4.93,-0.29 6.85,0.86 3.28,-1.63 7.26,-1.21 10.34,0.69 3.69,0.41 1.52,-5 5.95,-4.08 2.71,-0.42 2.01,6.69 3.21,4.1 0.56,-3.26 1.09,-6.54 1.68,-9.8 35.57,4.49 71.15,8.96 106.72,13.44 2.9,-28.44 5.79,-56.88 8.69,-85.31 -28.84,-2.29 -57.55,-5.91 -86.19,-9.99 -26.71,-4.12 -53.36,-8.71 -79.73,-14.68 -3.05,-0.61 -6.99,-2.59 -6.53,2.19 -1.21,5.75 -2.42,11.51 -3.62,17.26z\",\"name\":\"Montana\"},\"co\":{\"path\":\"m260.17,308.53c39.89,4.09 79.51,8.26 119.39,11.91 1.61,-28.46 3.23,-56.92 4.84,-85.38 -37.47,-4.17 -74.94,-8.33 -112.41,-12.5 -4.03,28.98 -7.8,56.99 -11.83,85.97z\",\"name\":\"Colorado\"},\"id\":{\"path\":\"m169.84,91.72c0.52,3.07 2.27,5.25 4.94,6.78 0.4,3.02 -0.61,5.46 -3.03,7.31 -2.3,2.7 -4.38,5.97 -6.09,8.83 0.39,2.93 -2.57,3.54 -4.23,4.8 -1.77,2.31 -4.28,4.3 -3.93,7.5 -0.64,2.43 4.69,0.57 4.09,4.34 -5.19,11.17 -6.78,23.51 -10.13,35.32 -0.79,3.16 -1.22,4.91 -2.01,8.08 56.92,12.84 62.26,13.45 93.58,19.41 2.75,-17.6 5.5,-35.21 8.25,-52.81 -2.66,-0.84 -0.58,-6.52 -4.23,-4.97 -1.24,1.7 -1.62,4.95 -5.17,3.47 -3.11,-1.99 -6.81,-1.34 -10.13,-0.56 -2.53,-1.76 -5.91,-2.01 -7.69,0.88 -1.75,-0.05 -3.29,-3.39 -2.79,-5.36 1.91,-3.98 -2.85,-5.89 -5.05,-8.27 -0.98,-5.88 -3.48,-11.64 -2.5,-17.69 -1.86,-0.01 -4.25,2.69 -6.47,3.63 -2.21,0.18 -4.52,-3.09 -4.1,-5.31 1.19,-5.37 4.07,-10.37 5.88,-15.6 1.95,-2.64 1.12,-5.57 -2.41,-5.62 -1.55,-3.37 -4.92,-5.66 -5.61,-9.53 -1.31,-2.63 -1.42,-6.47 -5.06,-6.76 -0.99,-1.85 -3.18,-4.47 -1.91,-6.73 2.09,-2.98 -0.34,-5.7 -1.53,-8.5 -2.13,-3.05 0.55,-6.68 0.67,-10.01 0.9,-4.35 1.8,-8.69 2.69,-13.04 -4.18,-0.78 -8.35,-1.56 -12.53,-2.34 -4.5,20.92 -9,41.83 -13.5,62.75z\",\"name\":\"Idaho\"},\"ut\":{\"path\":\"m176.34,297.78c27.57,3.92 55.15,7.83 82.72,11.75 4.04,-29.08 8.08,-58.17 12.13,-87.25 -10.83,-1.14 -21.65,-2.33 -32.47,-3.59 1.43,-7.93 2.82,-15.85 3.84,-23.84 -15.27,-2.85 -30.54,-5.71 -45.81,-8.56 -6.8,37.17 -13.6,74.33 -20.41,111.5z\",\"name\":\"Utah\"},\"az\":{\"path\":\"m173.19,314.66c-2.49,-0.06 -3.05,4.43 -6.38,2.94 -0.74,-2.87 -3.59,-2.82 -5.59,-4.22 -3.74,0.74 -2.37,4.58 -2.68,7.41 -0.52,5.04 -0.42,10.21 -0.89,15.22 -2.19,2.33 -2.44,5.78 -0.24,8.19 2.32,2.62 0.58,7.52 4.09,9.09 0.98,3.59 -2.89,4.83 -5.41,6.09 -3.29,2.46 -3.28,6.86 -3.88,10.47 -1.25,2.44 -4.81,2.39 -4.92,4.97 0.47,2.18 6.18,0.38 3.42,4.54 -0.65,2.75 -3.14,3.45 -5.62,3.78 -3.6,1.45 -2.69,4.7 0.77,5.44 14.69,7.84 28.52,17.13 43.01,25.32 5.79,3.19 11.27,7.21 17.27,9.88 11.71,2.83 23.75,3.45 35.68,4.87 5.71,-39.38 11.42,-78.75 17.13,-118.13 -27.58,-3.93 -55.17,-7.85 -82.75,-11.78 -1,5.31 -2,10.63 -3,15.94z\",\"name\":\"Arizona\"},\"nv\":{\"path\":\"m84.84,232.41c22.96,34.61 45.92,69.23 68.88,103.84 3.66,2.65 3.19,-3.47 3.27,-5.71 0.37,-5.43 0.36,-11.24 1.08,-16.44 2.05,-2.03 4.26,-2 6.08,-0.39 2.62,-0.16 3.86,5.9 6.03,1.27 2.74,-0.82 2.66,-3.64 3.13,-6.41 7.5,-40.87 15,-81.75 22.51,-122.62 -30.72,-6.81 -61.44,-13.63 -92.16,-20.44 -6.27,22.3 -12.54,44.6 -18.81,66.91z\",\"name\":\"Nevada\"},\"or\":{\"path\":\"M67.16,62.81C64.24,70.42 62.73,78.57 58.5,85.63c-2.86,8.53 -5.96,16.93 -10.17,24.89 -3.06,6.61 -8,12.31 -11.32,18.7 -1.03,6.5 -0.64,13.05 -0.36,19.6 37.23,8.7 74.46,16.69 111.69,25.39 3.45,-13.15 6.51,-25.75 10.19,-38.81 1.2,-2.48 3.15,-6.06 -1.1,-5.42 -2.58,-1.78 -0.23,-4.45 -0.38,-6.91 2.3,-2.82 4.36,-5.82 7.47,-7.75 1.75,-5.08 5.43,-9.19 9.03,-13.06 1.66,-3.48 -2.46,-3.92 -3.39,-6.47 -0.25,-3.79 -3.56,-4.26 -6.62,-4.99 -7.63,-2.2 -15.38,-4.2 -23.21,-5.54 -4.9,0.03 -9.79,0.06 -14.69,0.09 -0.95,-2.84 -4.67,1.86 -7.11,0.5 -2.61,0.82 -4.42,-2.63 -6.57,-1.28 -2.61,-0.06 -5.23,0.11 -7.15,-1.87 -3.09,-1.53 -6.33,-1.81 -9.5,-3.1 -1.87,3.03 -5.69,1.22 -8.53,1.31 -1.65,-1.64 -5.79,-3.02 -6.03,-4.81 1.1,-2.44 0.78,-5.93 0.53,-8.59 -0.42,-3.92 -4.72,-2.63 -6.25,-4.49C74.59,58.67 69.45,62.45 67.16,62.81z\",\"name\":\"Oregon\"},\"wa\":{\"path\":\"m101.38,8.72c0.05,2.75 2.93,5.39 3.25,8.16 -1.92,2.33 -1.78,5.19 -1.32,7.71 -1.81,2.64 1.63,4.82 0.67,7.42 -3.6,1.52 -2.43,-3.7 -4.86,-4.99 -3.34,-2.24 1.47,-3.87 1.17,-5.42 -2.5,-1.11 -2.24,3.88 -3.69,4.17C92.33,26.39 88.86,23.04 84.76,22.57 79.82,20.66 75.28,17.69 72.25,13.25c-3.13,-0.98 -1.96,4.97 -3.25,6.95 -0.63,2.8 2.59,5.06 1.41,8.21 0.52,3.86 -1.29,7.55 0.18,11.29 -1.06,2.88 4.75,5.54 2.94,6.39 -3.45,-1.05 -6.2,3.2 -2.25,4.34 1.57,0.97 -0.61,6.32 -3.3,5.43 -1.83,2.15 1.28,6.86 4.14,4.17 3.77,-1.55 2.75,3.51 5.83,3.13 2.81,-0.24 4.26,3.31 4.54,5.61 0.04,2.48 -0.15,6.02 -0.26,7.78 2.63,1.76 5.01,4.26 8.46,3.62 3.2,0.66 4.7,-3.26 7.97,-0.5 3.01,0.48 6.37,1.55 8.79,3.66 3.03,0.92 6.02,-1.78 8.19,1.05 3.44,1.3 6.67,0.03 9.84,-1.4 0.99,1.78 4.42,1.32 7,1.3 5.35,-0.19 10.68,-0.16 15.82,1.55 6.99,1.44 13.78,3.45 20.65,5.4 4.47,-20.85 8.94,-41.71 13.41,-62.56 -19.81,-3.93 -39.37,-9.21 -58.73,-14.66 -7.27,-1.53 -14.4,-3.52 -21.46,-5.87L101.75,8.45 101.38,8.72z M95.5,15.16C94.05,13.72 92.15,14.26 94.72,17.63 94.39,13.84 99.19,18.11 98.98,14.18 98.24,12.75 96.05,14.08 95.5,15.16z m2.31,1.91c-3.13,3.04 1.36,2.18 0.16,-0.25l-0.16,0.25z\",\"name\":\"Washington\"},\"ca\":{\"path\":\"m35.06,153.94c-0.1,4.04 0.4,8.21 -1.99,11.75 -1.86,3.68 -2.55,8.24 -6.48,10.38 -1.19,2.11 -3.49,3.38 -3.59,6.45 -1.94,3.49 2.49,5.65 2.91,8.98 1.54,3.39 2.34,6.94 1.63,10.65 0,2.92 -2.79,5.01 -2.24,8.14 0.05,2.97 -2.24,5.87 0.04,8.54 2.58,5 6.38,9.93 6.71,15.69 -0.54,2.77 -0.99,5.37 1.81,7.17 1.6,1.95 4.49,3.66 2.79,6.46 -1.73,3.87 -1.14,8.04 -1.09,12.16 1.68,2.67 2.83,6.76 6.66,6.53 1.48,2.33 0.97,4.84 -0.22,7.13 -2.5,1.53 -4.36,2.73 -3.66,6.08 0.27,3.49 4.27,5.34 4.36,9.01 1.46,6.2 4.13,11.92 7.59,17.25 0.71,2.57 2.16,4.34 2.9,6.41 -0.24,3.33 -1.93,6.49 -2.41,9.87 -1.66,2.61 1.19,5.52 3.99,5.12 4.03,0.15 7.27,3.31 11.01,4.04 3,-0.55 4.74,2.9 6.07,5.11 1.54,2.71 2.37,6 5.76,6.88 2.51,1.14 6.19,0.05 7.17,3.45 2.41,2.72 -2.39,5.05 1.41,5.17 2.73,1.87 5.56,-1.74 7.56,-0.74 2.13,2.06 4.05,4.2 4.93,7.05 4.3,4.9 1.44,11.77 2.79,17.52 14.73,1.94 29.44,4.72 44.27,5.38 2.78,1.19 6.19,-4.43 2.84,-4.65 -3.13,0.64 -2.83,-4.02 -1.36,-4.66 3.15,-0.88 4.92,-3.83 4.65,-7.04 0.47,-3.98 3.27,-7.43 7.22,-8.4 3.43,-2.04 -0.33,-3.58 -0.79,-5.79 -0.23,-3.65 -1.95,-6.81 -3.62,-9.89 2.02,-3.66 -2.22,-3.32 -3.16,-6.24 -22.6,-34.1 -45.2,-68.19 -67.81,-102.29 6.27,-22.44 12.54,-44.88 18.81,-67.31 -22.04,-5.16 -44.08,-10.31 -66.13,-15.47 -0.45,1.38 -0.9,2.75 -1.34,4.13z m24.13,184.72c-0.27,3.05 7.99,3.06 4.7,2.07 -1.63,-0.35 -3.17,-2.46 -4.7,-2.07z m-5.16,0.38c0.33,3.71 5.81,0.51 1.31,-0.04 -0.44,0.01 -0.88,0.02 -1.31,0.04z M79.69,357.5c-0.2,1.58 4.42,6 3.16,2.37C82.22,358.91 80.8,357.6 79.69,357.5z M77.75,369.13c-0.14,1.55 3.2,3.89 1.32,1.26C78.6,369.72 77.39,366.55 77.75,369.13z\",\"name\":\"California\"}}});\n"
  },
  {
    "path": "src/main/webapp/assets/jqvmap/jqvmap/maps/jquery.vmap.world.js",
    "content": "/** Add World Map Data Points */\njQuery.fn.vectorMap('addMap', 'world_en', {\"width\":950,\"height\":550,\"pathes\":{\"id\":{\"path\":\"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z\",\"name\":\"Indonesia\"},\"pg\":{\"path\":\"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z\",\"name\":\"Papua New Guinea\"},\"mx\":{\"path\":\"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z\",\"name\":\"Mexico\"},\"ee\":{\"path\":\"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z\",\"name\":\"Estonia\"},\"dz\":{\"path\":\"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z\",\"name\":\"Algeria\"},\"ma\":{\"path\":\"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z\",\"name\":\"Morocco\"},\"mr\":{\"path\":\"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z\",\"name\":\"Mauritania\"},\"sn\":{\"path\":\"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z\",\"name\":\"Senegal\"},\"gm\":{\"path\":\"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z\",\"name\":\"Gambia\"},\"gw\":{\"path\":\"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z\",\"name\":\"Guinea-Bissau\"},\"gn\":{\"path\":\"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z\",\"name\":\"Guinea\"},\"sl\":{\"path\":\"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z\",\"name\":\"Sierra Leone\"},\"lr\":{\"path\":\"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z\",\"name\":\"Liberia\"},\"ci\":{\"path\":\"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z\",\"name\":\"Cote d'Ivoire\"},\"ml\":{\"path\":\"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z\",\"name\":\"Mali\"},\"bf\":{\"path\":\"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z\",\"name\":\"Burkina Faso\"},\"ne\":{\"path\":\"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z\",\"name\":\"Niger\"},\"gh\":{\"path\":\"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z\",\"name\":\"Ghana\"},\"tg\":{\"path\":\"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z\",\"name\":\"Togo\"},\"bj\":{\"path\":\"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z\",\"name\":\"Benin\"},\"ng\":{\"path\":\"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z\",\"name\":\"Nigeria\"},\"tn\":{\"path\":\"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z\",\"name\":\"Tunisia\"},\"ly\":{\"path\":\"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z\",\"name\":\"Libya\"},\"eg\":{\"path\":\"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z\",\"name\":\"Egypt\"},\"td\":{\"path\":\"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z\",\"name\":\"Chad\"},\"sd\":{\"path\":\"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z\",\"name\":\"Sudan\"},\"cm\":{\"path\":\"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z\",\"name\":\"Cameroon\"},\"er\":{\"path\":\"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z\",\"name\":\"Eritrea\"},\"dj\":{\"path\":\"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z\",\"name\":\"Djibouti\"},\"et\":{\"path\":\"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z\",\"name\":\"Ethiopia\"},\"so\":{\"path\":\"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z\",\"name\":\"Somalia\"},\"ye\":{\"path\":\"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z\",\"name\":\"Yemen\"},\"cf\":{\"path\":\"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z\",\"name\":\"Central African Republic\"},\"st\":{\"path\":\"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z\",\"name\":\"Sao Tome and Principe\"},\"gq\":{\"path\":\"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z\",\"name\":\"Equatorial Guinea\"},\"ga\":{\"path\":\"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z\",\"name\":\"Gabon\"},\"cg\":{\"path\":\"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z\",\"name\":\"Congo\"},\"ao\":{\"path\":\"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z\",\"name\":\"Angola\"},\"cd\":{\"path\":\"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z\",\"name\":\"Congo\"},\"rw\":{\"path\":\"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z\",\"name\":\"Rwanda\"},\"bi\":{\"path\":\"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z\",\"name\":\"Burundi\"},\"ug\":{\"path\":\"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z\",\"name\":\"Uganda\"},\"ke\":{\"path\":\"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z\",\"name\":\"Kenya\"},\"tz\":{\"path\":\"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z\",\"name\":\"Tanzania\"},\"zm\":{\"path\":\"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z\",\"name\":\"Zambia\"},\"mw\":{\"path\":\"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z\",\"name\":\"Malawi\"},\"mz\":{\"path\":\"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z\",\"name\":\"Mozambique\"},\"zw\":{\"path\":\"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z\",\"name\":\"Zimbabwe\"},\"na\":{\"path\":\"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z\",\"name\":\"Namibia\"},\"bw\":{\"path\":\"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z\",\"name\":\"Botswana\"},\"sz\":{\"path\":\"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z\",\"name\":\"Swaziland\"},\"ls\":{\"path\":\"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z\",\"name\":\"Lesotho\"},\"za\":{\"path\":\"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z\",\"name\":\"South Africa\"},\"gl\":{\"path\":\"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z\",\"name\":\"Greenland\"},\"au\":{\"path\":\"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z\",\"name\":\"Australia\"},\"nz\":{\"path\":\"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z\",\"name\":\"New Zealand\"},\"nc\":{\"path\":\"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z\",\"name\":\"New Caledonia\"},\"my\":{\"path\":\"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z\",\"name\":\"Malaysia\"},\"bn\":{\"path\":\"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z\",\"name\":\"Brunei Darussalam\"},\"tl\":{\"path\":\"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z\",\"name\":\"Timor-Leste\"},\"sb\":{\"path\":\"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z\",\"name\":\"Solomon Islands\"},\"vu\":{\"path\":\"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z\",\"name\":\"Vanuatu\"},\"fj\":{\"path\":\"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z\",\"name\":\"Fiji\"},\"ph\":{\"path\":\"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z\",\"name\":\"Philippines\"},\"cn\":{\"path\":\"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z\",\"name\":\"China\"},\"tw\":{\"path\":\"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z\",\"name\":\"Taiwan\"},\"jp\":{\"path\":\"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z\",\"name\":\"Japan\"},\"ru\":{\"path\":\"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z\",\"name\":\"Russian Federation\"},\"us\":{\"path\":\"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z\",\"name\":\"United States of America\"},\"mu\":{\"path\":\"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z\",\"name\":\"Mauritius\"},\"re\":{\"path\":\"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z\",\"name\":\"Reunion\"},\"mg\":{\"path\":\"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z\",\"name\":\"Madagascar\"},\"km\":{\"path\":\"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z\",\"name\":\"Comoros\"},\"sc\":{\"path\":\"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z\",\"name\":\"Seychelles\"},\"mv\":{\"path\":\"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z\",\"name\":\"Maldives\"},\"pt\":{\"path\":\"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z\",\"name\":\"Portugal\"},\"es\":{\"path\":\"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z\",\"name\":\"Spain\"},\"cv\":{\"path\":\"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z\",\"name\":\"Cape Verde\"},\"pf\":{\"path\":\"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z\",\"name\":\"French Polynesia\"},\"kn\":{\"path\":\"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z\",\"name\":\"Saint Kitts and Nevis\"},\"ag\":{\"path\":\"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z\",\"name\":\"Antigua and Barbuda\"},\"dm\":{\"path\":\"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z\",\"name\":\"Dominica\"},\"lc\":{\"path\":\"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z\",\"name\":\"Saint Lucia\"},\"bb\":{\"path\":\"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z\",\"name\":\"Barbados\"},\"gd\":{\"path\":\"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z\",\"name\":\"Grenada\"},\"tt\":{\"path\":\"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z\",\"name\":\"Trinidad and Tobago\"},\"do\":{\"path\":\"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z\",\"name\":\"Dominican Republic\"},\"ht\":{\"path\":\"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z\",\"name\":\"Haiti\"},\"fk\":{\"path\":\"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z\",\"name\":\"Falkland Islands\"},\"is\":{\"path\":\"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z\",\"name\":\"Iceland\"},\"no\":{\"path\":\"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z\",\"name\":\"Norway\"},\"lk\":{\"path\":\"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z\",\"name\":\"Sri Lanka\"},\"cu\":{\"path\":\"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z\",\"name\":\"Cuba\"},\"bs\":{\"path\":\"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z\",\"name\":\"Bahamas\"},\"jm\":{\"path\":\"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z\",\"name\":\"Jamaica\"},\"ec\":{\"path\":\"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z\",\"name\":\"Ecuador\"},\"ca\":{\"path\":\"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z\",\"name\":\"Canada\"},\"gt\":{\"path\":\"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z\",\"name\":\"Guatemala\"},\"hn\":{\"path\":\"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z\",\"name\":\"Honduras\"},\"sv\":{\"path\":\"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z\",\"name\":\"El Salvador\"},\"ni\":{\"path\":\"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z\",\"name\":\"Nicaragua\"},\"cr\":{\"path\":\"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z\",\"name\":\"Costa Rica\"},\"pa\":{\"path\":\"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z\",\"name\":\"Panama\"},\"co\":{\"path\":\"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z\",\"name\":\"Colombia\"},\"ve\":{\"path\":\"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z\",\"name\":\"Venezuela\"},\"gy\":{\"path\":\"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z\",\"name\":\"Guyana\"},\"sr\":{\"path\":\"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z\",\"name\":\"Suriname\"},\"gf\":{\"path\":\"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z\",\"name\":\"French Guiana\"},\"pe\":{\"path\":\"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z\",\"name\":\"Peru\"},\"bo\":{\"path\":\"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z\",\"name\":\"Bolivia\"},\"py\":{\"path\":\"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z\",\"name\":\"Paraguay\"},\"uy\":{\"path\":\"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z\",\"name\":\"Uruguay\"},\"ar\":{\"path\":\"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z\",\"name\":\"Argentina\"},\"cl\":{\"path\":\"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z\",\"name\":\"Chile\"},\"br\":{\"path\":\"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z\",\"name\":\"Brazil\"},\"bz\":{\"path\":\"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z\",\"name\":\"Belize\"},\"mn\":{\"path\":\"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z\",\"name\":\"Mongolia\"},\"kp\":{\"path\":\"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z\",\"name\":\"North Korea\"},\"kr\":{\"path\":\"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z\",\"name\":\"South Korea\"},\"kz\":{\"path\":\"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z\",\"name\":\"Kazakhstan\"},\"tm\":{\"path\":\"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z\",\"name\":\"Turkmenistan\"},\"uz\":{\"path\":\"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z\",\"name\":\"Uzbekistan\"},\"tj\":{\"path\":\"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z\",\"name\":\"Tajikistan\"},\"kg\":{\"path\":\"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z\",\"name\":\"Kyrgyz Republic\"},\"af\":{\"path\":\"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z\",\"name\":\"Afghanistan\"},\"pk\":{\"path\":\"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z\",\"name\":\"Pakistan\"},\"in\":{\"path\":\"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z\",\"name\":\"India\"},\"np\":{\"path\":\"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z\",\"name\":\"Nepal\"},\"bt\":{\"path\":\"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z\",\"name\":\"Bhutan\"},\"bd\":{\"path\":\"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z\",\"name\":\"Bangladesh\"},\"mm\":{\"path\":\"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z\",\"name\":\"Myanmar\"},\"th\":{\"path\":\"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z\",\"name\":\"Thailand\"},\"kh\":{\"path\":\"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z\",\"name\":\"Cambodia\"},\"la\":{\"path\":\"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z\",\"name\":\"Lao People's Democratic Republic\"},\"vn\":{\"path\":\"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z\",\"name\":\"Vietnam\"},\"ge\":{\"path\":\"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z\",\"name\":\"Georgia\"},\"am\":{\"path\":\"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z\",\"name\":\"Armenia\"},\"az\":{\"path\":\"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z\",\"name\":\"Azerbaijan\"},\"ir\":{\"path\":\"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z\",\"name\":\"Iran\"},\"tr\":{\"path\":\"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z\",\"name\":\"Turkey\"},\"om\":{\"path\":\"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z\",\"name\":\"Oman\"},\"ae\":{\"path\":\"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z\",\"name\":\"United Arab Emirates\"},\"qa\":{\"path\":\"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z\",\"name\":\"Qatar\"},\"kw\":{\"path\":\"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z\",\"name\":\"Kuwait\"},\"sa\":{\"path\":\"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z\",\"name\":\"Saudi Arabia\"},\"sy\":{\"path\":\"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z\",\"name\":\"Syrian Arab Republic\"},\"iq\":{\"path\":\"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z\",\"name\":\"Iraq\"},\"jo\":{\"path\":\"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z\",\"name\":\"Jordan\"},\"lb\":{\"path\":\"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z\",\"name\":\"Lebanon\"},\"il\":{\"path\":\"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z\",\"name\":\"Israel\"},\"cy\":{\"path\":\"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z\",\"name\":\"Cyprus\"},\"gb\":{\"path\":\"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z\",\"name\":\"United Kingdom\"},\"ie\":{\"path\":\"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z\",\"name\":\"Ireland\"},\"se\":{\"path\":\"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z\",\"name\":\"Sweden\"},\"fi\":{\"path\":\"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z\",\"name\":\"Finland\"},\"lv\":{\"path\":\"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z\",\"name\":\"Latvia\"},\"lt\":{\"path\":\"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z\",\"name\":\"Lithuania\"},\"by\":{\"path\":\"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z\",\"name\":\"Belarus\"},\"pl\":{\"path\":\"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z\",\"name\":\"Poland\"},\"it\":{\"path\":\"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z\",\"name\":\"Italy\"},\"fr\":{\"path\":\"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z\",\"name\":\"France\"},\"nl\":{\"path\":\"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z\",\"name\":\"Netherlands\"},\"be\":{\"path\":\"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z\",\"name\":\"Belgium\"},\"de\":{\"path\":\"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z\",\"name\":\"Germany\"},\"dk\":{\"path\":\"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z\",\"name\":\"Denmark\"},\"ch\":{\"path\":\"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z\",\"name\":\"Switzerland\"},\"cz\":{\"path\":\"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z\",\"name\":\"Czech Republic\"},\"sk\":{\"path\":\"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z\",\"name\":\"Slovakia\"},\"at\":{\"path\":\"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z\",\"name\":\"Austria\"},\"hu\":{\"path\":\"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z\",\"name\":\"Hungary\"},\"si\":{\"path\":\"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z\",\"name\":\"Slovenia\"},\"hr\":{\"path\":\"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z\",\"name\":\"Croatia\"},\"ba\":{\"path\":\"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z\",\"name\":\"Bosnia and Herzegovina\"},\"mt\":{\"path\":\"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z\",\"name\":\"Malta\"},\"ua\":{\"path\":\"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z\",\"name\":\"Ukraine\"},\"md\":{\"path\":\"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z\",\"name\":\"Moldova\"},\"ro\":{\"path\":\"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z\",\"name\":\"Romania\"},\"rs\":{\"path\":\"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z\",\"name\":\"Serbia\"},\"bg\":{\"path\":\"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z\",\"name\":\"Bulgaria\"},\"al\":{\"path\":\"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z\",\"name\":\"Albania\"},\"mk\":{\"path\":\"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z\",\"name\":\"Macedonia\"},\"gr\":{\"path\":\"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z\",\"name\":\"Greece\"}}});\n"
  },
  {
    "path": "src/main/webapp/assets/metr-folio/css/metro-gallery.css",
    "content": "/*-\tFANCY BOX TRICKS -*/\n\n.fancybox-lock .fancybox-overlay {\n    overflow-x: auto;\n    overflow-y: hidden !important;\n}\n\n/*-\tBASIC CAPTIONS AND COVERS PER ENTRY-*/\n\n.mega-covercaption {\n    padding: 21px 20px;\n    box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    width: 100%;\n    position: absolute;\n    left: 0px;\n    min-height: 0px;\n    max-width: 100%;\n    max-height: 100%;\n    overflow: hidden;\n}\n\n.mega-white {\n    background: #fff;\n}\n\n.mega-white.mega-transparent {\n    background: rgba(255,255,255,0.80);\n}\n\n.mega-black {\n    background: rgba(0,0,0,0.8);\n}\n\n.mega-black.mega-transparent {\n    background: rgba(0,0,0,0.80);\n}\n\n.mega-turquoise {\n    background: rgba(81,176,184,0.8);\n}\n\n.mega-orange {\n    background: rgba(229,162,33,0.8);\n}\n\n.mega-green {\n    background: rgba(170,191,67,0.8);\n}\n\n.mega-red {\n    background: rgba(225,102,68,0.8);\n}\n\n.mega-violet {\n    background: rgba(141,44,124,0.8);\n}\n\n.mega-blue {\n    background: rgba(17,99,163,0.8);\n}\n\n\n/*- DIRECTIONS OF CAPTIONS -*/\n.mega-square .mega-square-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-square .mega-square-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-square .mega-square-left {\n    top: 0px;\n    left: 0px;\n    max-width: 50%;\n    height: 100%;\n}\n\n.mega-square .mega-square-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-portrait .mega-portrait-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-portrait .mega-portrait-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-portrait .mega-portrait-left {\n    top: 0px;\n    left: 0px;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-portrait .mega-portrait-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-landscape .mega-landscape-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-landscape .mega-landscape-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-landscape .mega-landscape-left {\n    top: 0px;\n    left: 0px;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-landscape .mega-landscape-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-title {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 24px;\n    line-height: 24px;\n    color: #fff;\n    font-weight: 400;\n}\n\n.mega-date {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 15px;\n    color: #666;\n    font-weight: 300;\n    margin-top: 0px;\n}\n\n.mega-covercaption p {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 13px;\n    color: #555;\n    font-weight: 400;\n    margin-top: 12px;\n}\n\n.mega-covercaption a {\n    color: #fff;\n    text-decoration: none;\n    border-bottom: 1px dotted #fff;\n}\n\n.mega-covercaption a:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n.mega-withsocialbar.mega-covercaption {\n    margin-bottom: 16px;\n}\n\n.mega-smallcaptions .mega-title {\n    font-size: 18px;\n    font-weight: 700;\n    text-transform: uppercase;\n}\n\n.mega-smallcaptions .mega-date {\n    font-size: 12px;\n    font-weight: 400;\n    text-transform: uppercase;\n    color: #888;\n}\n\n.mega-white .mega-title {\n    color: #000;\n}\n\n.mega-white .mega-date {\n    color: #666;\n}\n\n.mega-white p {\n    color: #555;\n}\n\n.mega-white.mega-covercaption a {\n    color: #555;\n    text-decoration: none;\n    border-bottom: 1px dotted #555;\n}\n\n.mega-white.mega-covercaption a:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n.mega-black .mega-title {\n    color: #fff;\n}\n\n.mega-black .mega-date {\n    color: #fff;\n}\n\n.mega-black p {\n    color: #fff;\n}\n\n.mega-turquoise .mega-title,\n.mega-turquoise .mega-date,\n.mega-turquoise p {\n    color: #fff;\n}\n\n.mega-orange .mega-title,\n.mega-orange .mega-date,\n.mega-orange p {\n    color: #fff;\n}\n\n.mega-green .mega-title,\n.mega-green .mega-date,\n.mega-green p {\n    color: #fff;\n}\n\n.mega-red .mega-title,\n.mega-red .mega-date,\n.mega-red p {\n    color: #fff;\n}\n\n.mega-violet .mega-title,\n.mega-violet .mega-date,\n.mega-violet p {\n    color: #fff;\n}\n\n.mega-blue .mega-title,\n.mega-blue .mega-date,\n.mega-blue p {\n    color: #fff;\n}\n\n.fatcaption-top {\n    position: absolute;\n    top: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.fatcaption-bottom {\n    position: absolute;\n    bottom: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.gallerycaption-bottom {\n    position: absolute;\n    bottom: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 17px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.gallerysubline {\n    width: 100%;\n    text-align: center;\n    font-size: 13px;\n    line-height: 20px;\n    font-weight: 400;\n    color: #ccc;\n    margin-top: 2px;\n}\n\n\n/*- SET THE CAPTION SETTIGS UNDER LOWSIZE ENTRIES  -*/\n\n.mega-lowsize .mega-covercaption p {\n    display: none;\n}\n\n.mega-lowsize .mega-title {\n    font-size: 18px;\n}\n\n.mega-lowsize .mega-date {\n    font-size: 13px;\n}\n\n\n/*-\tCAPTION NORMAL LINKS -*/\n.mega-coverbuttons {\n    max-width: 68px;\n    max-height: 34px;\n    position: absolute;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0.0;\n    -khtml-opacity: 0.0;\n    opacity: 0.0;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    left: 0px !important;\n    top: 0px !important;\n    bottom: auto !important;\n}\n\n.mega-entry-innerwrap:hover .mega-coverbuttons {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n.mega-link {\n    background-image: url(../assets/link_clean.png);\n    background-repeat: no-repeat;\n    background-position: center center;\n    width: 34px;\n    height: 34px;\n    float: left;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n    filter: alpha(opacity=50);\n    -moz-opacity: 0.5;\n    -khtml-opacity: 0.5;\n    opacity: 0.5;\n    cursor: pointer;\n}\n\n.mega-view {\n    background-image: url(../assets/zoom_clean.png);\n    background-repeat: no-repeat;\n    background-position: center center;\n    width: 34px;\n    height: 34px;\n    float: left;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n    filter: alpha(opacity=50);\n    -moz-opacity: 0.5;\n    -khtml-opacity: 0.5;\n    opacity: 0.5;\n    cursor: pointer;\n}\n\n.mega-link:hover,\n.mega-view:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n/*-\tSOCIAL BAR AT THE BOTTOM PER mega-entry\t-*/\n\n.mega-square .mega-square-bottom.mega-withsocialbar,\n.mega-portrait .mega-portrait-bottom.mega-withsocialbar,\n.mega-landscape .mega-landscape-bottom.mega-withsocialbar {\n    padding-bottom: 25px;\n}\n\n.mega-socialbar {\n    position: absolute;\n    height: 16px;\n    z-index: 10;\n    bottom: 0px;\n    margin-left: 0px;\n    margin-right: 0px;\n    left: 0px;\n    right: 0px;\n    box-sizing: content-box;\n    -moz-box-sizing: content-box;\n    -webkit-box-sizing: content-box;\n    background: url(../assets/socialbar-bg.png) repeat-x;\n    border-top: 0;\n    border-bottom: 0;\n    border-radius: 0;\n    -moz-border-radius: 0;\n    -webkit-border-radius: 0;\n    padding: 2px 10px;\n    overflow: hidden;\n}\n\n.mega-socialbar span {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 11px;\n    color: #777;\n    font-weight: 400;\n    line-height: 16px;\n    text-shadow: 0px 1px 0px #fff;\n}\n\n.mega-soc {\n    cursor: pointer;\n    background-position: left 2px !important;\n    min-width: 16px;\n    height: 18px;\n    margin-top: -2px;\n}\n\n.mega-soc:hover {\n    background-position: left -14px !important;\n}\n\n.mega-soc span {\n    margin-left: 20px;\n    margin-right: 20px;\n}\n\n.mega-facebook {\n    background: url(../icons/facebook.png) no-repeat;\n}\n\n.mega-comments {\n    background: url(../icons/comments.png) no-repeat;\n}\n\n.mega-twitter {\n    background: url(../icons/twitter.png) no-repeat;\n}\n\n.mega-more {\n    background: url(../icons/more.png) no-repeat;\n}\n\n.mega-like {\n    background: url(../icons/like.png) no-repeat;\n}\n\n.mega-leftfloat {\n    float: left;\n    margin-right: 5px;\n}\n\n.mega-rightfloat {\n    float: right;\n}\n\n.ie8 .mega-socialbar .mega-rightfloat,\n.ie9 .mega-socialbar .mega-rightfloat {\n    margin-right: 25px;\n}\n\n\n\n\n\n/*-\tBASIC SETTINGS FOR GALLERY GRIDS\t-*/\n\n\n.mega-entry .mega-entry-innerwrap {\n    border: 5px solid #fff;\n}\n\n.noborder .mega-entry .mega-entry-innerwrap {\n    border: 0px solid #fff;\n}\n\n.noborder .mega-entry .mega-entry-innerwrap {\n    border: 0px solid #fff;\n}\n\n.light-bg-entries .mega-entry .mega-entry-innerwrap {\n    background-color: #ccc !important;\n}\n\n.dark-bg-entries .mega-entry .mega-entry-innerwrap {\n    background-color: rgb(0,0,0) !important;\n    background-color: rgba(0,0,0,0.3) !important;\n}\n\n.mega-entry {\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    position: absolute;\n    -webkit-transition: all 0.6s ease-out;\n    -moz-transition: all 0.6s ease-out;\n    -o-transition: all 0.6s ease-out;\n    -ms-transition: all 0.6s ease-out;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n    z-index: 2;\n}\n\n.mega-entry .mega-entry-innerwrap {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    overflow: visible;\n    z-index: 2;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    border-radius: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.ie8 .mega-entry,\n.ie8 .mega-entry .mega-entry-innerwrap,\n.ie9 .mega-entry,\n.ie9 .mega-entry .mega-entry-innerwrap {\n    overflow: hidden;\n}\n\n.mega-entry-innerwrap.pagetop {\n    -webkit-transform-origin: 50% 0% 0;\n    -moz-transform-origin: 50% 0% 0;\n    transform-origin: 50% 0% 0;\n}\n\n.mega-entry-innerwrap.pagebottom {\n    -webkit-transform-origin: 50% 100% 0;\n    -moz-transform-origin: 50% 100% 0;\n    transform-origin: 50% 100% 0;\n}\n\n.mega-entry-innerwrap.pagemiddle {\n    -webkit-transform-origin: 50% 50% 0;\n    -moz-transform-origin: 50% 50% 0;\n    transform-origin: 50% 50% 0;\n}\n\n.megafolio-container.norounded .mega-entry .mega-entry-innerwrap {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.megafolio-container-splash.norounded .mega-entry .mega-entry-innerwrap {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.mega-lightbox, .oldmegalightbox {\n    position: absolute;\n    overflow: hidden;\n    box-shadow: 0px 0px 10px 5px rgba(0,0,0,0.6);\n    border: 1px solid #333;\n    z-index: 1000;\n    padding: 100px;\n    background: url(../assets/grain.png) repeat;\n    background-color: rgba(20,20,20,0.9);\n    margin-left: -100px;\n    margin-top: -100px;\n}\n\n.mega-lightbox .mediaholder,\n.oldmegalightbox .mediaholder {\n    border: 2px solid #fff;\n    position: relative;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0px 0px 3px 1px rgba(40,40,40,0.6);\n}\n\n\n\n/** IE HACKS **/\n\n.ieimg {\n    position: absolute;\n    width: 100%;\n    top: 0px;\n    left: 0px;\n    z-index: 0;\n}\n\n.mega-mega-entry-added {\n    visibility: hidden;\n}\n\n.mega-mega-entry-added .mega-socialbar,\n.mega-mega-entry-added .mega-covercaption {\n    visibility: hidden;\n}\n\n\n\n/*-     PORTFOLIO HOVER EFFECTS     -*/\n\n/* -\tBASIC SETTINGS -*/\n.mega-hover {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    background: url(../assets/grain.png) repeat;\n    background-color: rgba(0,0,0,0.8);\n    border-radius: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.norounded .mega-hover {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.mega-divider {\n    position: absolute;\n    top: 50%;\n    width: 80%;\n    left: 10%;\n    border-bottom: 1px dashed #7b7c7e;\n    border-top: 1px dashed #111;\n}\n\n.mega-hovertitle,\n.mega-hoverlink,\n.mega-hoverview {\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    transition-delay: 0.2s;\n    -moz-transition-delay: 0.2s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.2s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.2s;\n    /* Opera */;\n}\n\n.mega-hovertitle {\n    position: absolute;\n    color: #fff;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 14px;\n    font-weight: 700;\n    text-align: center;\n    width: 60%;\n    padding: 0px 0px 15px;\n    left: 20%;\n    bottom: 40%;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.mega-hovertitle .mega-hoversubtitle {\n    color: #aaa;\n    font-size: 12px;\n    line-height: 13px;\n    font-weight: 400;\n    margin-top: 5px;\n}\n\n.mega-hoverlink {\n    right: 50%;\n    margin-right: 33px;\n    background: url(../assets/link.png) no-repeat center;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.mega-hoverview {\n    left: 50%;\n    margin-left: 33px;\n    background: url(../assets/lupe.png) no-repeat center;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.mega-hoverlink,\n.mega-hoverview {\n    width: 33px;\n    height: 33px;\n    position: absolute;\n    top: 50%;\n    text-align: center;\n    margin-top: 0px;\n    cursor: pointer;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.mega-hover.alone .mega-hoverview {\n    margin-left: -16px;\n    margin-top: -20px;\n}\n\n.mega-hover.alone .mega-hoverlink {\n    margin-right: -16px;\n    margin-top: -20px;\n}\n\n\n\n\n\n\n\n/*-\t THE HOVER EFFECT -*/\n\n.mega-hover:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hovertitle {\n    bottom: 50%;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hovertitle,\n.mega-hover:hover .mega-hoverlink,\n.mega-hover:hover .mega-hoverview {\n    transform: rotate(0deg);\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n.mega-hover:hover .mega-hoverlink {\n    right: 50%;\n    margin-right: 5px;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hoverview {\n    left: 50%;\n    margin-left: 5px;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover.alone:hover .mega-hoverview {\n    margin-left: -16px;\n    margin-top: 0px;\n}\n\n.mega-hover.notitle.alone:hover .mega-hoverview {\n    margin-left: -16px;\n    margin-top: -16px;\n}\n\n.mega-hover.notitle.alone:hover .mega-hoverlink {\n    margin-right: -16px;\n    margin-top: -16px;\n}\n\n.mega-hover:hover .mega-hoverlink:hover,\n.mega-hover:hover .mega-hoverview:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n    filter: alpha(opacity=60);\n    -moz-opacity: 0.6;\n    -khtml-opacity: 0.6;\n    opacity: 0.6;\n}\n\n.mega-hover.notitle .mega-hoverlink,\n.mega-hover.notitle .mega-hoverview {\n    margin-top: -16px;\n}\n\n\n\n\n/*-\t FILTERS\t-*/\n.clear {\n    clear: both;\n}\n\n.filter_padder {\n    margin: 10px auto 25px;\n    box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    width: 100%;\n}\n\n.filter_wrapper {\n    border-radius: 20px;\n    -moz-border-radius: 20px;\n    -webkit-border-radius: 20px;\n    /*padding:0px 35px;*/\n    position: relative;\n    min-height: 40px;\n    margin: auto;\n}\n\n.ie9 .filter_wrapper {\n    max-width: 650px;\n}\n\n.filter_wrapper.floated {\n    float: left;\n    margin-right: 50px;\n}\n\n.filter_list_wrapper {\n    width: 150px;\n    position: relative;\n    margin: auto;\n}\n\n.filter {\n    background: #E5E5E5;\n    margin-right: 10px;\n    line-height: 33px;\n    padding: 0 15px;\n    font-size: 12px;\n    color: #999;\n    float: left;\n    font-weight: normal;\n    cursor: pointer;\n    transition: all 0.5s ease-in-out 0s;\n}\n\n.filter:hover, .filter.selected {\n    background: #4A8BC2;\n    color: #FFFFFF;\n    transition: all 0.5s ease-in-out 0s;\n}\n\n.filter.last-child {\n    margin-right: 0px !important;\n}\n\n.filter_list_button {\n    background: url(../assets/tiles/list.png) no-repeat 15px center, url(../assets/tiles/topgradient.png);\n    background-color: #040404;\n    border-radius: 20px 20px 20px 20px;\n    -moz-border-radius: 20px 20px 20px 20px;\n    -webkit-border-radius: 20px 20px 20px 20px;\n    padding: 0px 30px 0px 60px;\n    position: relative;\n    min-height: 40px;\n    margin: auto;\n    width: 100%;\n    z-index: 1;\n}\n\nul.filter_list {\n    background: #040404;\n    padding: 0px 45px 0px 45px;\n    position: absolute;\n    z-index: 0;\n    width: 100%;\n    top: 15px;\n    border-radius: 0px 0px 20px 20px;\n    -moz-border-radius: 0px 0px 20px 20px;\n    -webkit-border-radius: 0px 0px 20px 20px;\n    display: none;\n    list-style: none;\n}\n\nli.filter {\n    list-style: none;\n    max-width: 156px;\n    background: #040404;\n    line-height: 30px;\n    font-size: 14px;\n    color: #999;\n    font-weight: 700;\n    cursor: pointer;\n    float: none;\n    margin-right: 0px !important;\n}\n\n.current-filter {\n    max-width: 156px;\n    line-height: 40px;\n    font-size: 14px;\n    color: #999;\n    font-weight: 700;\n    cursor: pointer;\n    float: none;\n    margin-right: 0px !important;\n}\n\n.filter_wrapper_list li.filter:hover,\n.current-filter,\n.filter_wrapper_list li.filter.selected {\n    color: #fff;\n}\n\n@media only screen and (max-width: 961px) {\n\n    .filter_wrapper.floated {\n        margin: auto;\n        float: none;\n    }\n\n    .filter_list_wrapper {\n        width: 216px;\n        float: none;\n        clear: both;\n        margin-top: 30px;\n    };\n    }\n\n@media only screen and (max-width: 420px) {\n    .filter {\n        float: none;\n        text-align: center;\n        margin-right: 0px;\n        line-height: 30px;\n    };\n    }\n\n\n/*-  EXAMPLES FOR COLORED BG  -*/\n\n.mega-entry.mega-bg-1 .mega-entry-innerwrap {\n    background-color: #f32390 !important;\n}\n\n.mega-entry.mega-bg-2 .mega-entry-innerwrap {\n    background-color: #d69b12 !important;\n}\n\n.mega-entry.mega-bg-3 .mega-entry-innerwrap {\n    background-color: #7bce8b !important;\n}\n\n"
  },
  {
    "path": "src/main/webapp/assets/metr-folio/js/jquery.metro-gal.megafoliopro.js",
    "content": "\n\n(function($,undefined){\n\n\n\t////////////////////////////////////////\n\t// THE REVOLUTION PLUGIN STARTS HERE //\n\t///////////////////////////////////////\n\n\t$.fn.extend({\n\n\t\t///////////////////////////\n\t\t// MAIN PLUGIN  FUNCTION //\n\t\t///////////////////////////\n\t\tmegafoliopro: function(options) {\n\n\t\t\t\tvar defaults = {\n\t\t\t\t\tfilterChangeAnimation:\"rotatescale\",\t\t\t// fade, rotate, scale, rotatescale, pagetop, pagebottom,pagemiddle\n\t\t\t\t\tfilterChangeSpeed:400,\t\t\t\t\t\t\t// Speed of Transition\n\t\t\t\t\tfilterChangeRotate:99,\t\t\t\t\t\t\t// If you ue scalerotate or rotate you can set the rotation (99 = random !!)\n\t\t\t\t\tfilterChangeScale:0.6,\t\t\t\t\t\t\t// Scale Animation Endparameter\n\t\t\t\t\tdelay:20,\n\t\t\t\t\tdefaultWidth:980,\n\t\t\t\t\tpaddingHorizontal:10,\n\t\t\t\t\tpaddingVertical:10,\n\t\t\t\t\tlayoutarray:[11],\n\t\t\t\t\tlowSize:50,\n\t\t\t\t\tstartFilter:\"*\"\n\t\t\t\t};\n\n\t\t\t\toptions = $.extend({}, defaults, options);\n\n\n\t\t\t\treturn this.each(function() {\n\n\t\t\t\t\t\t// Delegate .transition() calls to .animate()\n\t\t\t\t\t\t// if the browser can't do CSS transitions.\n\t\t\t\t\t\tif (!$.support.transition)\n\t\t\t\t\t\t\t$.fn.transition = $.fn.animate;\n\n\t\t\t\t\t\tvar opt=options;\n\t\t\t\t\t\topt.detaiview=\"off\";\n\t\t\t\t\t\topt.firststart=1;\n\t\t\t\t\t\tif (opt.filter==undefined) opt.filter=\"*\";\n\n\t\t\t\t\t\tif (opt.delay==undefined) opt.delay=0;\n\n\t\t\t\t\t\t//opt.savetrans = opt.filterChangeAnimation;\n\t\t\t\t\t\t//opt.filterChangeAnimation=\"fade\";\n\n\t\t\t\t\t\t// CHECK IF FIREFOX 13 IS ON WAY.. IT HAS A STRANGE BUG, CSS ANIMATE SHOULD NOT BE USED\n\t\t\t\t\t\tvar firefox = opt.firefox13 = false;\n\t\t\t\t\t\tvar ie = opt.ie = !$.support.opacity;\n\t\t\t\t\t\tvar ie9 = opt.ie9 = !$.support.htmlSerialize\n\n\n\t\t\t\t\t\tif (ie) $('body').addClass(\"ie8\");\n\t\t\t\t\t\tif (ie9) $('body').addClass(\"ie9\");\n\n\t\t\t\t\t\tvar container=$(this);\n\t\t\t\t\t\tcontainer.data('defaultwidth',opt.defaultWidth);\n\t\t\t\t\t\tcontainer.data('paddingh',opt.paddingHorizontal);\n\t\t\t\t\t\tcontainer.data('paddingv',opt.paddingVertical);\n\t\t\t\t\t\tcontainer.data('order',opt.layoutarray);\n\t\t\t\t\t\tcontainer.data('ie',ie);\n\t\t\t\t\t\tcontainer.data('ie9',ie9);\n\t\t\t\t\t\tcontainer.data('ff',firefox);\n\t\t\t\t\t\tcontainer.data('opt',opt);\n\n\n\t\t\t\t\t\tprepairEntries(container,opt);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\taddFilter(container,\"*\");\n\t\t\t\t\t\tpreparingLazyLoad(container);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t},400)\n\n\n\t\t\t\t\t\t// START WITH AN ALTERNATIVE FILTER BY BUILDING THE CONTAINERS\n\t\t\t\t\t\tif ( opt.startFilter!=\"*\" && opt.startFilter !=undefined) {\n\t\t\t\t\t\t\taddFilter(container,opt.startFilter);\n\t\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t$(window).resize(function() {\n\t\t\t\t\t\t\tclearTimeout(container.data('resized'));\n\n\t\t\t\t\t\t\tcontainer.data('resized',setTimeout(function() {\n\t\t\t\t\t\t\t\treOrderOrdered(container,0,container.find('>.mega-entry.tp-ordered').length);\n\n\t\t\t\t\t\t\t},150));\n\t\t\t\t\t\t});\n\n\t\t\t\t\t/****************************************************\n\t\t\t\t\t\t-\tAPPLE IPAD AND IPHONE WORKAROUNDS HERE\t-\n\t\t\t\t\t******************************************************/\n\n\t\t\t\t\tif((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {\n\t\t\t\t\t    $(\".mega-entry\").click(function(){\n\t\t\t\t\t        //we just need to attach a click event listener to provoke iPhone/iPod/iPad's hover event\n\t\t\t\t\t        //strange\n\t\t\t\t\t    });\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t///////////////////////\n\t\t// METHODE RESUME    //\n\t\t//////////////////////\n\t\tmegamethode: function(option) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t})\n\t\t},\n\n\t\tmegagetcurrentorder: function() {\n\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\treturn container.data('lastorder');\n\n\t\t},\n\n\t\tmegaappendentry: function(entry) {\n\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tvar newentry=$(entry);\n\t\t\t\t\tnewentry.addClass(\"mega-entry-added\");\n\t\t\t\t\tcontainer.append(newentry);\n\t\t\t\t\tvar opt=container.data('opt');\n\n\t\t\t\t\tprepairNewEntries(container,opt);\n\n\t\t\t\t\treOrder(container,0);\n\n\t\t\t\t\trePosition(container,1);\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\taddFilter(container,opt.filter);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container,1);\n\t\t\t\t\t},200);\n\n\n\t\t},\n\n\t\tmegaremix: function(order) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tif (order!=undefined)\n\t\t\t\t\t\tcontainer.data('order',order);\n\t\t\t\t\tnotOrdered(container);\n\t\t\t\t\treOrder(container,0);\n\t\t\t\t\trePosition(container);\n\n\t\t\t\t})\n\t\t},\n\n\t\tmegafilter: function(filter) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\n\t\t\t\t\tif (container.data('nofilterinaction')!=1) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tcontainer.data('nofilterinaction',1);\n\t\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tcontainer.data('nofilterinaction',0);\n\n\t\t\t\t\t\t},1200)\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclearInterval(container.data('nextfiltertimer'));\n\t\t\t\t\t\tcontainer.data('nextfiltertimer',setInterval(function() {\n\t\t\t\t\t\t\tif (container.data('nofilterinaction')!=1) {\n\t\t\t\t\t\t\t\tclearInterval(container.data('nextfiltertimer'));\n\t\t\t\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t\t\tcontainer.data('nofilterinaction',1);\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tcontainer.data('nofilterinaction',0);\n\n\t\t\t\t\t\t\t\t},1200)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},10));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tmegaanimchange: function(anim,speed,rotate,scale) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tvar opt=container.data('opt');\n\t\t\t\t\tvar filter=opt.filter;\n\t\t\t\t\topt.filterChangeAnimation=anim;\n\t\t\t\t\topt.filterChangeSpeed=speed;\n\t\t\t\t\topt.filterChangeRotate=rotate;\n\t\t\t\t\topt.filterChangeScale=scale;\n\t\t\t\t\taddFilter(container,\"\");\n\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t},2*opt.filterChangeSpeed);\n\t\t\t\t\tcontainer.data('opt',opt);\n\t\t\t\t})\n\t\t}\n\t})\n\n\n\n\t////////////////////////////////////////////////////////\n\t//\tWRAP THE DIVS DEPENDING ON THE AMOUNT OF ENTRIES //\n\t////////////////////////////////////////////////////////\n\tfunction prepairEntries(container,opt) {\n\n\t\tcontainer.find('>.mega-entry').each(function() {\n\t\t\t\tvar ent=$(this);\n\t\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\t\t\t\tent.addClass(\"tp-notordered\").addClass(\"mega-entry-added\");\n\t\t\t\tent.wrapInner('<div class=\"mega-entry-innerwrap\"></div>');\n\t\t\t\t//ent.find('.mega-socialbar').appendTo(ent)\n\t\t\t\tvar iw = ent.find('.mega-entry-innerwrap')\n\t\t\t\t/*if (opt.ie) {\n\t\t\t\t\tiw.append('<img class=\"ieimg\" src='+ent.data(\"src\")+'>');\n\t\t\t\t} else {*/\n\t\t\t\t\tiw.css({'background':'url('+ent.data(\"src\")+')','backgroundPosition':'50% 49%', 'backgroundSize':'cover', 'background-repeat':'no-repeat'});\n//\t\t\t\t}\n\n\t\t\t\t// LET ACT ON THE CLICK ON ITEM SOMEWAY\n\t\t\t\tent.find('.mega-show-more').each(function() {\n\t\t\t\t\tvar msm = $(this);\n\n\t\t\t\t\t// SAVE THE ID OF THE mega-entry WHICH IS CORRESPONDING ON THE BUTTON\n\t\t\t\t\tmsm.data('entid',ent.attr('id'));\n\n\t\t\t\t\t// HANDLING OF THE CLICK\n\t\t\t\t\tmsm.click(function() {\n\t\t\t\t\t\tvar msm=$(this);\n\t\t\t\t\t\tvar ent=container.find('#'+msm.data('entid'));\n\t\t\t\t\t\tent.addClass(\"mega-in-detailview\");\n\t\t\t\t\t\topt.detailview=\"on\";\n\t\t\t\t\t});\n\n\t\t\t\t});\n\t\t});\n\n\n\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tWRAP THE DIVS DEPENDING ON THE AMOUNT OF ENTRIES //\n\t////////////////////////////////////////////////////////\n\tfunction prepairNewEntries(container,opt) {\n\n\t\tcontainer.find('>.mega-entry-added').each(function(i) {\n\t\t\t\tvar ent=$(this);\n\t\t\t\tif (!ent.hasClass('tp-layout')) {\n\n\t\t\t\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\t\t\t\t\t\tent.addClass(\"tp-notordered\")\n\t\t\t\t\t\tent.wrapInner('<div class=\"mega-entry-innerwrap\"></div>');\n\t\t\t\t\t\t//ent.find('.mega-socialbar').appendTo(ent)\n\t\t\t\t\t\tvar iw = ent.find('.mega-entry-innerwrap')\n\t\t\t\t\t\t/*if (opt.ie) {\n\t\t\t\t\t\t\tiw.append('<img class=\"ieimg\" src='+ent.data(\"src\")+'>');\n\t\t\t\t\t\t} else {*/\n\t\t\t\t\t\t\tiw.css({'background':'url('+ent.data(\"src\")+')','backgroundPosition':'50% 49%', 'backgroundSize':'cover', 'background-repeat':'no-repeat'});\n\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t// LET ACT ON THE CLICK ON ITEM SOMEWAY\n\t\t\t\t\t\tent.find('.mega-show-more').each(function() {\n\t\t\t\t\t\t\tvar msm = $(this);\n\n\t\t\t\t\t\t\t// SAVE THE ID OF THE mega-entry WHICH IS CORRESPONDING ON THE BUTTON\n\t\t\t\t\t\t\tmsm.data('entid',ent.attr('id'));\n\n\t\t\t\t\t\t\t// HANDLING OF THE CLICK\n\t\t\t\t\t\t\tmsm.click(function() {\n\t\t\t\t\t\t\t\tvar msm=$(this);\n\t\t\t\t\t\t\t\tvar ent=container.find('#'+msm.data('entid'));\n\t\t\t\t\t\t\t\tent.addClass(\"mega-in-detailview\");\n\t\t\t\t\t\t\t\topt.detailview=\"on\";\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t});\n\n\n\n\t}\n\n\t///////////////////////////////////////\n\t//\tADD NOT ORDERED TO THE ENTRIES   //\n\t///////////////////////////////////////\n\tfunction notOrdered(container) {\n\t\tcontainer.find('>.mega-entry.tp-layout').each(function() {\n\t\t\tvar ent=$(this);\n\t\t\tent.removeClass('tp-layout').addClass('tp-notordered');\n\t\t});\n\t}\n\n\n\n\t///////////////////////////////////////\n\t//\tADD FILTER FOR THE ENTRIES       //\n\t///////////////////////////////////////\n\tfunction addFilter(container,filter) {\n\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\t\tvar opt = container.data('opt');\n\t\tif (opt.filterChangeSpeed == undefined) opt.filterChangeSpeed = Math.round(Math.random()*500+100);\n\t\topt.filter=filter;\n\t\tvar outi=1;\n\t\tvar ini=1;\n\t\t\n\t\t\n\n\t\tcontainer.find('>.mega-entry').each(function(i) {\n\t\t\tvar ent=$(this);\n\n\t\t\tvar rot = opt.filterChangeRotate;\n\t\t\tif (rot==undefined) rot=30;\n\n\t\t\tif (rot==99) rot = Math.round(Math.random()*50-25);\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t\tvar subfilters = filter.split(',');\n\t\t\t\tvar hasfilter =false;\n\n\t\t\t\tfor (var u=0;u<subfilters.length;u++) {\n\n\t\t\t\t\tif (ent.hasClass(subfilters[u])) {\n\t\t\t\t\t\thasfilter=true;\n\t\t\t\t\t\tconsole.log(\"has class\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t  \n\t\t\t\tif (hasfilter || filter==\"*\") {\n\n\n\t\t\t\t\t\tent.removeClass('tp-layout').addClass('tp-notordered');\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tent.removeClass('tp-ordered').removeClass('tp-layout');\n\t\t\t\t\t\t  setTimeout(function() {\n\t\t\t\t\t\t\t\tif (ie || ie9) {\n\t\t\t\t\t\t\t\t\tent.animate({'scale':0, 'opacity':0},{queue:false,duration:opt.filterChangeSpeed});\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"fade\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"scale\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"rotate\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':rot},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"rotatescale\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':rot},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').removeClass(\"pagemiddle\").removeClass(\"pagetop\").removeClass(\"pagebottom\").addClass(opt.filterChangeAnimation);\n\t\t\t\t\t\t\t\t\t\tent.transition({'opacity':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':0,perspective: '10000px',rotateX: '90deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetTimeout(function() {\tent.css({visibility:'hidden'})},opt.filterChangeSpeed);\n\n\t\t\t\t\t\t},ini*opt.delay/2);\n\t\t\t\t\t\tini++;\n\n\t\t\t\t\t}\n\n\n\n\t\t});\n\n\n\n\t}\n\n\n\t///////////////////////////////////////////\n\t// PREPARE FOR THE FIRST START THE ITEMS //\n\t//////////////////////////////////////////\n\tfunction preparingLazyLoad(container) {\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\t\tvar opt = container.data('opt');\n\t\tif (opt.filterChangeSpeed == undefined) opt.filterChangeSpeed = Math.round(Math.random()*500+100);\n\t\tif (opt.filterChangeScale == undefined) opt.filterChangeScale = 0.8;\n\n\n\t\tvar outi=0;\n\t\tvar ini=0;\n\n\t\tcontainer.find('>.mega-entry').each(function(i) {\n\t\t\tvar ent=$(this);\n\n\t\t\tvar rot = opt.filterChangeRotate;\n\t\t\tif (rot==undefined) rot=30;\n\t\t\tif (rot==99) rot = Math.round(Math.random()*360);\n\n\t\t\t\tif (ie || ie9) {\n\t\t\t\t\tent.css({'opacity':0});\n\t\t\t\t} else {\n\t\t\t\t\tif (opt.filterChangeAnimation==\"fade\")\n\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':0,duration:1,queue:false});\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"scale\") {\n\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':0,duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"rotate\")\n\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':rot,duration:1,queue:false});\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"rotatescale\") {\n\n\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':rot,duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').addClass(opt.filterChangeAnimation);\n\t\t\t\t\t\t\tent.transition({'opacity':0,duration:1,queue:false});\n\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '90deg',duration:1,queue:false});\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t});\n\t\t//opt.filterChangeAnimation = opt.savetrans;\n\n\n\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tREORDER THE CONTAINER DEPENDING ON THE SETTINGS   //\n\t////////////////////////////////////////////////////////\n\tfunction reOrder(container,deep) {\n\n\n\t\t// TO SAVE THE LAST ORDER FOR THE GALLERY, TO BE ABLE TO REPRODUCE IT\n\t\tif (deep==0) {\n\t\t\tvar lastorder=new Array();\n\t\t} else\n\t\t\tvar lastorder=container.data('lastorder');\n\n\n\t\tvar cw = container.width();\n\n\t\t// THIS IS THE CURRENT REQUESTED ORDER\n\t\tvar order=container.data('order');\n\n\t\t// IF ORDER ARRIVED TO THE END, SHOULD START FROM THE BEGINNING\n\t\tif (deep>order.length-1) deep=0;\n\n\n\t\t// SAVE THE ENTRIES IN AN ARRAY\n\t\tvar entries=container.find('>.mega-entry.tp-notordered');\n\n\t\t// LET SEE HOW MANY LAYOUT ART WE HAVE 2-9 ARE THE PREMIUM GRIDS\n\t\tvar max_layout_art=12;\n\t\tif (entries.length<9) max_layout_art=entries.length;\n\n\t\t//SAVE THE NEXT LAYOUT HERE\n\t\tvar next_layout  = order[deep];\n\t\t\n\n\n\t\tvar firefox =  false;\n\t\tvar ie = !$.support.opacity;\n\t\tvar ie9 = !$.support.htmlSerialize\n\n\t\tif (order[deep]==0 || next_layout<2 || next_layout>23)\n\t\t\tif (ie) {\n\t\t\t\tnext_layout=9;\n\t\t\t} else {\n\t\t\t\tnext_layout=Math.round(Math.random()*max_layout_art+1);\n\t\t\t}\n\n\n\t\tif (next_layout<2) next_layout=2;\n\t\tif (next_layout>23) next_layout=23;\n\n\t\t// PUSH THE NEXT LAYOUT INTO THE SAVED ORDER (IN CASE IT NEEDED SOMEWHERE)\n\t\tlastorder.push(next_layout);\n\n\t\tvar element_amount=next_layout;\n\t\tif (next_layout==10 || next_layout==14) element_amount=3;\n\t\tif (next_layout==11 || next_layout==15) element_amount=4;\n\t\tif (next_layout==12 || next_layout==16) element_amount=5;\n\t\tif (next_layout==13 || next_layout==17) element_amount=6;\n\n\n\t\tif (next_layout==11 || next_layout==12 || next_layout==13 || next_layout==15 || next_layout==16 || next_layout==17)\n\t\t\tif (cw<840  && cw>721) element_amount=4\n\t\t\t  else\n\t\t\tif (cw<720) element_amount=3;\n\n\t\tif (next_layout==18 || next_layout==19 || next_layout==20) element_amount = 1;\n\t\tif (next_layout==21 || next_layout==22 || next_layout==23) element_amount = 2;\n\n\t\t// SET THE NEXT ITEM AS THE NEXT LAYOUT INDICATES\n\t\tentries.slice(0,element_amount).each(function(i) {\n\n\t\t\tvar ent=$(this);\n\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t// tp-layout SHOWS THAT THE ITEM HAS ALREADY A LAYOUT\n\t\t\tent.addClass('tp-ordered tp-layout');\n\t\t\t// SAVE THE LAYOUT TYPE IN EACH mega-entry\n\t\t\tent.data('layout',next_layout)\n\t\t\t//SAVE THE CHILD INDEX IN THE mega-entry\n\t\t\tent.data('child',i)\n\t\t\t// MARK FIRST AND LAST ITEMS HERE\n\t\t\tif (i==0) ent.addClass(\"tp-layout-first-item\");\n\n\t\t\tif (i==element_amount-1) {\n\n\t\t\t\t\tent.addClass(\"tp-layout-last-item\");\n\t\t\t}\n\n\t\t\t//ITEM IS ORDERED, SO NOT ORDERED CLASS CAN BE REMOVED\n\t\t\tent.removeClass('tp-notordered');\n\n\t\t});\n\n\t\t// WE GO ONE FURTHER; DEEPER IN THE REKURSIVE FUNCTION\n\t\tdeep=deep+1;\n\t\t//SAVE THE LAST ORDER !!\n\t\tcontainer.data('lastorder',lastorder);\n\n\t\t//IF WE HAVE MORE ITEM TO ORDER, WE CAN CALL THE REKURSIVE FUNCTION AGAIN\n\t\tif (container.find('>.mega-entry.tp-notordered').length>0)\n\t\t\treOrder(container,deep);\n\t\telse\n\t\t\t{\n\t\t\t\ttry{\n\t\t\t\t  findLastOrdered(container).addClass('very-last-item');\n\t\t\t\t  } catch(e) {}\n\t\t\t\treturn container;\n\t\t\t}\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tREORDER THE CONTAINER DEPENDING ON THE SETTINGS   //\n\t////////////////////////////////////////////////////////\n\tfunction reOrderOrdered(container,deep,itemtogo) {\n\n\n\n\t\t// TO SAVE THE LAST ORDER FOR THE GALLERY, TO BE ABLE TO REPRODUCE IT\n\t\tif (deep==0) {\n\t\t\tvar lastorder=new Array();\n\t\t} else\n\t\t\tvar lastorder=container.data('lastorder');\n\n\n\t\tvar cw = container.width();\n\n\t\t// THIS IS THE CURRENT REQUESTED ORDER\n\t\tvar order=container.data('order');\n\n\t\t// IF ORDER ARRIVED TO THE END, SHOULD START FROM THE BEGINNING\n\t\tif (deep>order.length-1) deep=0;\n\n\n\t\t// SAVE THE ENTRIES IN AN ARRAY\n\t\tvar entries=container.find('>.mega-entry.tp-ordered');\n\n\t\t// LET SEE HOW MANY LAYOUT ART WE HAVE 2-9 ARE THE PREMIUM GRIDS\n\t\tvar max_layout_art=12;\n\t\tif (entries.length<9) max_layout_art=entries.length;\n\n\t\t//SAVE THE NEXT LAYOUT HERE\n\t\tvar next_layout  = order[deep];\n\n\t\tvar firefox =  false;\n\t\tvar ie = !$.support.opacity;\n\t\tvar ie9 = !$.support.htmlSerialize\n\n\t\tif (order[deep]==0 || next_layout<2 || next_layout>23)\n\t\t\tif (ie) {\n\t\t\t\tnext_layout=9;\n\t\t\t} else {\n\t\t\t\tnext_layout=Math.round(Math.random()*max_layout_art+1);\n\t\t\t}\n\n\t\tif (next_layout<2) next_layout=2;\n\t\tif (next_layout>23) next_layout=23;\n\n\t\t// PUSH THE NEXT LAYOUT INTO THE SAVED ORDER (IN CASE IT NEEDED SOMEWHERE)\n\t\tlastorder.push(next_layout);\n\n\t\tvar element_amount=next_layout;\n\t\tif (next_layout==10 || next_layout==14) element_amount=3;\n\t\tif (next_layout==11 || next_layout==15) element_amount=4;\n\t\tif (next_layout==12 || next_layout==16) element_amount=5;\n\t\tif (next_layout==13 || next_layout==17) element_amount=6;\n\n\n\t\tif (next_layout==11 || next_layout==12 || next_layout==13 || next_layout==15 || next_layout==16 || next_layout==17)\n\t\t\t\tif (cw<840  && cw>721) element_amount=4\n\t\t\t\t  else\n\t\t\t\tif (cw<720) element_amount=3;\n\n\t\tif (next_layout==18 || next_layout==19 || next_layout==20) element_amount = 1;\n\t\tif (next_layout==21 || next_layout==22 || next_layout==23) element_amount = 2;\t\t\n\t\t\n\t\tvar firstent = entries.length-itemtogo;\n\n\t\t// SET THE NEXT ITEM AS THE NEXT LAYOUT INDICATES\n\t\tentries.slice(firstent,firstent+element_amount).each(function(i) {\n\n\t\t\tvar ent=$(this);\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t// tp-layout SHOWS THAT THE ITEM HAS ALREADY A LAYOUT\n\t\t\tent.addClass('tp-ordered tp-layout');\n\t\t\t// SAVE THE LAYOUT TYPE IN EACH mega-entry\n\t\t\tent.data('layout',next_layout)\n\t\t\t//SAVE THE CHILD INDEX IN THE mega-entry\n\t\t\tent.data('child',i)\n\t\t\t// MARK FIRST AND LAST ITEMS HERE\n\t\t\tif (i==0) ent.addClass(\"tp-layout-first-item\");\n\n\t\t\tif (i==element_amount-1) {\n\n\t\t\t\t\tent.addClass(\"tp-layout-last-item\");\n\t\t\t}\n\n\t\t\t//ITEM IS ORDERED, SO NOT ORDERED CLASS CAN BE REMOVED\n\t\t\tent.removeClass('tp-notordered');\n\n\t\t});\n\n\t\t// WE GO ONE FURTHER; DEEPER IN THE REKURSIVE FUNCTION\n\t\tdeep=deep+1;\n\t\t//SAVE THE LAST ORDER !!\n\t\tcontainer.data('lastorder',lastorder);\n\t\titemtogo=itemtogo-element_amount;\n\n\t\t//IF WE HAVE MORE ITEM TO ORDER, WE CAN CALL THE REKURSIVE FUNCTION AGAIN\n\t\tif (itemtogo>0)\n\t\t\treOrderOrdered(container,deep,itemtogo);\n\t\telse\n\t\t\t{\n\t\t\t\tfindLastOrdered(container).addClass('very-last-item');\n\t\t\t\trePosition(container);\n\t\t\t\treturn container;\n\t\t\t}\n\t}\n\n\n\n\t/////////////////////////////\n\t// FIND LAST ORDERED ITEM //\n\t///////////////////////////\n\tfunction findLastOrdered(container) {\n\t   var lastitem;\n\n\t   container.find('>.mega-entry.tp-layout.tp-ordered').each(function() {\n\t\t\tlastitem=$(this);\n\t\t});\n\n\n\t   return lastitem;\n\t}\n\n\n\t/////////////////////////////\n\t// ROUND ME TO RIGHT VALUE //\n\t////////////////////////////\n\tfunction roundme(val) {\n\t\treturn val;\n\t}\n\n\t//////////////////////////\n\t//\tPUT IT IN POSITION\t//\n\t//////////////////////////\n\tfunction rePosition(container,maxdelay) {\n\n\t\tvar topp=0;\n\t\tvar startwidth = container.data('defaultwidth');\n\t\tvar opt=container.data('opt');\n\t\tvar optdelay=opt.delay;\n\n\t\tvar firststart=0;\n\t\tif (opt.firststart==1) {\n\t\t\tfirststart=1;\n\t\t\topt.firststart=0;\n\t\t}\n\n\n\n\t\tvar cw = container.width();\n\t\tvar prop = cw / startwidth;\n\t\tvar basicheight = 185;\n\t\tvar paddingh = container.data('paddingh');\n\t\tvar paddingv = container.data('paddingv');\n\n\n\t\tvar outi=1;\n\t\tvar ini=1;\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\n\t\t// CALCULATE THE BASI PROPORTIONS\n\t\tvar w5 = 5*prop;\n\n\t\t// THE MAX HEIGHT OF THE ITEM\n\t\tvar maxhh=0;\n\n\t\t// THE NEW BASIC VALUES\n\t\t//w5 = Math.floor(w5)+dec;\n\n\t\t// Calculate the Basic Grid Sizes\n\t\tvar w980 = cw;\n\t\tvar w790 = roundme(w5 * 160);\n\t\tvar w780 = roundme(w5 * 158);\n\t\tvar w760 = roundme(w5 * 152);\n\t\tvar w740 = roundme(w5 * 148);\n\t\tvar w660 = roundme(w5 * 132);\n\t\tvar w615 = roundme(w5 * 123);\n\t\tvar w610 = roundme(w5 * 122);\n\t\tvar w595 = roundme(w5 * 119);\n\t\tvar w565 = roundme(w5 * 113);\n\t\tvar w560 = roundme(w5 * 112);\n\t\tvar w490 = roundme(w5 * 98);\n\t\tvar w420 = roundme(w5 * 84);\n\t\tvar w415 = roundme(w5 * 83);\n\t\tvar w395 = roundme(w5 * 79);\n\t\tvar w390 = roundme(w5 * 78);\n\t\tvar w385 = roundme(w5 * 77);\n\t\tvar w370 = roundme(w5 * 74);\n\t\tvar w365 = roundme(w5 * 73);\n\t\tvar w345 = roundme(w5 * 69);\n\t\tvar w340 = roundme(w5 * 68);\n\t\tvar w335 = roundme(w5 * 67);\n\t\tvar w326 = roundme(w5 * 65.3);\n\t\tvar w245 = roundme(w5 * 49);\n\t\tvar w240 = roundme(w5 * 48);\n\t\tvar w225 = roundme(w5 * 45);\n\t\tvar w220 = roundme(w5 * 44);\n\t\tvar w196 = roundme(w5 * 39.2);\n\t\tvar w195 = roundme(w5 * 39);\n\t\tvar w190 = roundme(w5 * 38);\n\t\tvar w185 = roundme(w5 * 37);\n\t\tvar w180 = roundme(w5 * 36);\n\t\tvar w163 = roundme(w5 * 32.66);\n\n\t\t// The Basic Heights\n\t\tvar h1110 = roundme(w5 * 222);\n\t\tvar h740 = w740;\n\t\tvar h555 = roundme(w5*111);\n\t\tvar h370 = w370;\n\t\tvar h365 = w365;\n\t\tvar h245 = w245;\n\t\tvar h240 = w240;\n\t\tvar h185 = w185;\n\t\tvar h180 = w180;\n\n\t\tvar heights = new Array(0,0,0,0,0,0,0,0,0);\n\t\tvar lastheights = new Array(0,0,0,0,0,0,0,0,0);\n\n\t\tvar currentcolumn=0;\n\t\tvar layout=0;\n\n\t\tvar allelements=container.find('>.mega-entry.tp-layout').length;\n\n\t\t// LET CREATE THE GIRDS\n\t\tcontainer.find('>.mega-entry.tp-layout').each(function(i) {\n\t\t\tvar ent=$(this);\n\t\t\tvar iw = ent.find('.mega-entry-innerwrap');\n\t\t\tlayout=ent.data('layout');\n\n\n\t\t\tif (layout==11 || layout==12 || layout==13 )\n\t\t\t\tif (cw<840 && cw>721) layout=11\n\t\t\t\t else\n\t\t\t\tif (cw<720) layout=10;\n\n\t\t\tif (layout==15 || layout==16 || layout==17)\n\t\t\t\tif (cw<840 && cw>721) layout=15\n\t\t\t\t else\n\t\t\t\tif (cw<720) layout=14;\n\n\n\t\t\t// SET THE SPEED\n\t\t\tvar dur=500;\n\n\t\t\t// SET THE BASIC POSITIONS AND SIZES\n\t\t\tvar w,h,xp;\n\t\t\tvar ph=paddingh;\n\t\t\tvar pv=paddingv;\n\t\t\tvar yp=topp;\n\t\t\tvar lasth=h185;\n\n\t\t\tif (cw>480) {\n\t\t\t\t\t\t// THE GRID TYPE 3 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==2) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) {\tw=w415; h=h370; xp=w565;  ph=0; topp=topp+h370; lasth=h370}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) {\tw=w560; h=h370; xp=w420;  ph=0; topp=topp+h370; lasth=h370}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 3 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==3) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w390; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w225; h=h370; xp=w390; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) {\tw=w365; h=h370; xp=w615;  topp=topp+h370; lasth=h370;ph=0;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) {\tw=w370; h=h370; xp=0; \t\tlasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w390; h=h370; xp=w370;  \tlasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w220; h=h370; xp=w760; \tlasth=h370; topp=topp+h370; ph=0;}\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 4 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==4) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h370; xp=0; \t lasth=370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h370; xp=w615; ph=0;  topp=topp+h185; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) {\tw=w195; h=h185; xp=w420;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w420; h=h370; xp=0; \t topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) {\tw=w195; h=h185; xp=w420; topp=topp-h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w365; h=h370; xp=w615; ph=0; topp=topp+h370;  lasth=h370}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 5 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==5) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h370; xp=w615; ph=0;  topp=topp+h185; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) {\tw=w395; h=h185; xp=w220;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h185; xp=w615; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w490; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) {\tw=w490; h=h185; xp=w490;  \tph=0; topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 5 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==6) {\n\n\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w370; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w225; h=h185; xp=w370; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w385; h=h185; xp=w595; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w225; h=h185; xp=w370; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w195; h=h185; xp=w595; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) {\tw=w190; h=h185; xp=w780;  \tph=0; topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w225; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w340; h=h370; xp=w225; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) {\tw=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 7 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==7) {\n\n\n\n\n\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185;lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h185; xp=w225; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w195; h=h185; xp=w565;   topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=w760; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h185; xp=w225; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 8 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==8) {\n\n\n\n\t\t\t\t\t\t\tif (cw>767) {\n\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w415; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w345; h=h370; xp=w415; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w195; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w220; h=h185; xp=w195; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185; lasth=h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w345; h=h185; xp=w415; \t topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w415; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w370; h=h185; xp=w610; \tph=0; topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w195; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w415; h=h185; xp=w195; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w195; h=h185; xp=w415; \t topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 9 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==9) {\n\n\n\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h370; xp=w225; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w195; h=h185; xp=w565; \t topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w195; h=h185; xp=w565; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==8) {\tw=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w370; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w240; h=h370; xp=w370; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h370; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w240; h=h370; xp=0;    \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w370; h=h370; xp=w240; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h370; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w370; h=h370; xp=0;   \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w370; h=h370; xp=w370; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==8) {\tw=w240; h=h370; xp=w740;  \tph=0;  topp=topp+h370; lasth=h370;}\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- BASIC GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\tif (layout>9 && layout<14) {\n\t\t\t\t\t\t\t if (layout==10) {\n\t\t\t\t\t\t\t\tw=Math.round(w326);\n\n\t\t\t\t\t\t\t\tw=w + (ph/3);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==11) {\n\t\t\t\t\t\t\t\tw=Math.round(w245);\n\n\t\t\t\t\t\t\t\tw=w + (ph/4);\n\t\t\t\t\t\t\t  } else\n\t\t\t\t\t\t\t if (layout==12) {\n\t\t\t\t\t\t\t\tw=Math.round(w196);\n\t\t\t\t\t\t\t\tw=w  + (ph/5);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==13) {\n\t\t\t\t\t\t\t\tw=Math.round(w163);\n\t\t\t\t\t\t\t\tw=w + (ph/6);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\tif ( (chil==2 && layout==10) ||\n\t\t\t\t\t\t\t\t (chil==3 && layout==11) ||\n\t\t\t\t\t\t\t\t (chil==4 && layout==12) ||\n\t\t\t\t\t\t\t\t (chil==5 && layout==13) ||\n\t\t\t\t\t\t\t\t (ent.hasClass('tp-layout-last-item'))\n\t\t\t\t\t\t\t\t) {\t\t// ph=0;\n\t\t\t\t\t\t\t\t\t\ttopp=topp+h; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- 1 GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==18) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==19) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w/ 2;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==20) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w/ 3;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- 2 GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==21) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==22) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w/2;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==23) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w/3;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- DIFFERENT HEIGHT OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\tif (layout>13 && layout<18) {\n\t\t\t\t\t\t\t if (layout==14) {\n\t\t\t\t\t\t\t\tw=Math.round(w326);\n\n\t\t\t\t\t\t\t\tw=w + (ph/3);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==15) {\n\t\t\t\t\t\t\t\tw=Math.round(w245);\n\n\t\t\t\t\t\t\t\tw=w + (ph/4);\n\t\t\t\t\t\t\t  } else\n\t\t\t\t\t\t\t if (layout==16) {\n\t\t\t\t\t\t\t\tw=Math.round(w196);\n\t\t\t\t\t\t\t\tw=w  + (ph/5);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==17) {\n\t\t\t\t\t\t\t\tw=Math.round(w163);\n\t\t\t\t\t\t\t\tw=w + (ph/6);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar chil = ent.data('child');\n\t\t\t\t\t\t\tvar prop =w/ent.data('width');\n\n\t\t\t\t\t\t\th=ent.data('height') * prop;\n\t\t\t\t\t\t\txp=w*ent.data('child');\n\t\t\t\t\t\t\typ=heights[chil];\n\t\t\t\t\t\t\tlasth=h*prop;\n\t\t\t\t\t\t\tlastheights[chil]=lasth;\n\t\t\t\t\t\t\ttopp=yp+h;\n\t\t\t\t\t\t\theights[chil] = topp;\n\t\t\t\t\t\t}\n\n\n\t\t\t} else { // IF THE CONTAINER IS TOO SMALL THAN LET\n\n\t\t\t\t\t\t\t\th=Math.round(ent.data('height')*(cw/ent.data('width')));\n\t\t\t\t\t\t\t\tw=cw;\n\t\t\t\t\t\t\t\tph=0;\n\t\t\t\t\t\t\t\txp=0;\n\t\t\t\t\t\t\t\typ=topp;\n\t\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t}\n\n\n\n\t\t\tvar scal=1;\n\t\t\tvar opaa=1;\n\t\t\tvar rx = 0;\n\t\t\tvar rot = 0;\n\n\t\t\tvar orot = opt.filterChangeRotate;\n\t\t\tif (orot==undefined) rot=30;\n\n\t\t\tif (orot==99) orot = Math.round(Math.random()*360);\n\n\n\n\t\t\t// FILTER DEPENDEND SETTINGS\n\t\t\tvar subfilters = opt.filter.split(',');\n\t\t\tvar hasfilter =false;\n\n\t\t\tfor (var u=0;u<subfilters.length;u++) {\n\n\t\t\t\tif (ent.hasClass(subfilters[u])) {\n\t\t\t\t\thasfilter=true;\n\t\t\t\t\tconsole.log(\"has class\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t  \n\n\t\t\tif (hasfilter || opt.filter==\"*\") {\n\n\t\t\t\t\t\t\t\tent.css({visibility:'visible'});\n\t\t\t\t\t\t\t\tif (ie || ie9) {\n\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\topaa=1;\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\t\t\t\t\t\t\t\t\t\trot=0;\n\t\t\t\t\t\t\t\t\t\trx=0;\n\t\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\t\topaa=1;\n\t\t\t\t\t\t\t\t\t\teiscal=1;\n\t\t\t\t\t\t\t\t\t\teiopaa=1;\n\t\t\t\t\t\t\t\t\t\teirx=0;\n\n\t\t\t\t\t\t\t\t\t\t//ent.transition({rotate:0,'opacity':1},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\t\trot=0;\n\t\t\t\t\t\t\t\t\t\topaa=1;\n\t\t\t\t\t\t\t\t\t\teiscal=1;\n\t\t\t\t\t\t\t\t\t\teiopaa=1;\n\t\t\t\t\t\t\t\t\t\teirx=0;\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\tif (opt.detailview==\"on\" && opaa==1) opaa=0.4;\n\t\t\tif (ent.hasClass('mega-in-detailview')) opaa=1;\n\n\t\t\tent.removeClass(\"mega-square\").removeClass(\"mega-portrait\").removeClass(\"mega-landscape\");\n\t\t\tvar wround=Math.floor(w/100);\n\t\t\tvar hround=Math.floor(h/100);\n\t\t\tif (wround>hround) ent.addClass(\"mega-landscape\");\n\t\t\tif (hround>wround) ent.addClass(\"mega-portrait\");\n\t\t\tif (wround==hround) ent.addClass(\"mega-square\");\n\n\n\t\t\tvar timer_delay=i*opt.delay;\n\t\t\t/*if (maxdelay!=undefined) {\n\t\t\t\tif (allelements-i<6)\n\t\t\t\t\ttimer_delay=(allelements-i)*opt.delay;\n\t\t\t}*/\n\n\t\t\t// PUT THE mega-entry IN THE RIGHT POSITION\n\t\t\tif (ie || ie9) {\n\t\t\t\tent.find('.mega-socialbar').animate({'width':w+'px'});\n\t\t\t\tent.animate({ 'scale':scal, 'opacity':opaa, width:w+\"px\", height:h+\"px\", left:xp+\"px\", top:yp+\"px\", 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\"},{queue:false,duration:400});\n\t\t\t\tiw.animate({'background-position':'50% 49%', 'background-size':'cover'},{queue:false,duration:400});\n\t\t\t\tif (ie) {\n\t\t\t\t\tvar img=iw.find('.ieimg');\n\t\t\t\t\tvar imgratio=Math.round(ent.data('width')) / Math.round(ent.data('height'));\n\t\t\t\t\tvar conratio=Math.round(w)/Math.round(h);\n\n\t\t\t\t\tvar nw=w;\n\t\t\t\t\tvar nh=nw/ent.data('width')*ent.data('height');\n\n\n\t\t\t\t\tif (nh<h) {\n\n\t\t\t\t\t\tnh=h;\n\t\t\t\t\t\tnw=nh/ent.data('height')*ent.data('width');\n\t\t\t\t\t}\n\n\t\t\t\t\timg.css({'width':nw+'px','height':nh+'px'});\n\n\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\n\t\t\t\tvar prop = (cw / startwidth)*100 -16;\n\n\n\t\t\t\tif (ent.data('lowsize')!=undefined )\n\t\t\t\tif (prop<=ent.data('lowsize'))\n\t\t\t\t\tent.addClass(\"mega-lowsize\")\n\t\t\t\telse\n\t\t\t\t\tent.removeClass(\"mega-lowsize\");\n\n\t\t\t\tif (firststart) {\n\t\t\t\t\t\t  timer_delay=timer_delay+100;\n\t\t\t\t\t\t  ent.transition({  'opacity':0, \"top\":yp+\"px\",\"left\":xp+\"px\", width:w, height:h, 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\",duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tent.transition({ 'scale':scal, 'opacity':opaa,'rotate':rot, 'z-index':1,width:w, height:h, \"top\":yp+\"px\",\"left\":xp+\"px\", 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\",duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':eiscal, 'opacity':eiopaa,perspective: '10000px',rotateX: eirx,duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t\t\tent.removeClass('mega-entry-added');\n\t\t\t\t\t},50);\n\t\t\t\t\tiw.transition({'background-position':'50% 49%', 'background-size':'cover',duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t},timer_delay);\n\n\t\t\t}\n\n\n\t\t\tif (ent.hasClass('very-last-item') && !ent.hasClass('tp-layout-last-item')) {\n\n\t\t\t\ttopp=topp+lasth;\n\n\t\t\t} else {\n\t\t\t\t\t//$('.debug').html($('.debug').html()+\"<br>\"+topp);\n\t\t\t}\n\n\t\t\tif (maxhh<yp+h) maxhh=yp+h;\n\n\t\t})\n\n\t\t// IF THE LAST LAYOUT HAD A DIFFERENT HEIGHT ATTRIBUTE, WE NEED TO CALCULATE THE HEIGHETS ROW\n\t\tif (layout>13 && layout<18) {\n\n\t\t\t\t\ttopp=heights[0];\n\t\t\t\t\tfor (allh=0;allh<heights.length;allh++) {\n\n\t\t\t\t\t\tif (topp<heights[allh]) topp=heights[allh];\n\t\t\t\t\t }\n\t\t\t\t}\n\n\n\t\tcontainer.css({height:maxhh+\"px\"})\n\n\n\t}\n\n\n})(jQuery);\n\n\n\n\n"
  },
  {
    "path": "src/main/webapp/assets/nestable/jquery.nestable.css",
    "content": "/**\n * Nestable\n */\n\n.dd { position: relative; display: block; margin: 0; padding: 0; max-width: 600px; list-style: none; font-size: 13px; line-height: 20px; }\n\n.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }\n.dd-list .dd-list { padding-left: 30px; }\n.dd-collapsed .dd-list { display: none; }\n\n.dd-item,\n.dd-empty,\n.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; }\n\n.dd-handle { display: block; height: 30px; margin: 5px 0; padding: 5px 10px; cursor: move; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;\n    background: #F5F5F5;\n    /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:         linear-gradient(top, #fafafa 0%, #eee 100%);*/\n\n    box-sizing: border-box; -moz-box-sizing: border-box;\n}\n.dd-handle:hover { color: #2ea8e5; background: #fff; }\n\n.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; }\n.dd-item > button:before { content: '+'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; }\n.dd-item > button[data-action=\"collapse\"]:before { content: '-'; }\n\n.dd-placeholder,\n.dd-empty { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; }\n.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5;\n    background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                      -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-image:    -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                         -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-image:         linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                              linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-size: 60px 60px;\n    background-position: 0 0, 30px 30px;\n}\n\n.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }\n.dd-dragel > .dd-item .dd-handle { margin-top: 0; }\n.dd-dragel .dd-handle {\n    -webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\n            box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\n}\n\n\n.dd3-content { display: block; height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;\n    background: #F5F5F5;\n    /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:         linear-gradient(top, #fafafa 0%, #eee 100%);*/\n\n    box-sizing: border-box; -moz-box-sizing: border-box;\n}\n.dd3-content:hover { color: #2ea8e5; background: #d5d5d5; }\n\n.dd-dragel > .dd3-item > .dd3-content { margin: 0; }\n\n.dd3-item > button { margin-left: 30px; }\n\n.dd3-handle { position: absolute; margin: 0; left: 0; top: 0; cursor: pointer; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden;\n    border: 1px solid #ccc;\n    background: #d5d5d5;\n    /*background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    /*background:    -moz-linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    /*background:         linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n}\n.dd3-handle:before { content: '≡'; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 20px; font-weight: normal; }\n.dd3-handle:hover { background: #404040; border:1px solid #404040; }"
  },
  {
    "path": "src/main/webapp/assets/nestable/jquery.nestable.js",
    "content": "/*!\n * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/\n * Dual-licensed under the BSD or MIT licenses\n */\n;(function($, window, document, undefined)\n{\n    var hasTouch = 'ontouchstart' in window;\n\n    /**\n     * Detect CSS pointer-events property\n     * events are normally disabled on the dragging element to avoid conflicts\n     * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js\n     */\n    var hasPointerEvents = (function()\n    {\n        var el    = document.createElement('div'),\n            docEl = document.documentElement;\n        if (!('pointerEvents' in el.style)) {\n            return false;\n        }\n        el.style.pointerEvents = 'auto';\n        el.style.pointerEvents = 'x';\n        docEl.appendChild(el);\n        var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';\n        docEl.removeChild(el);\n        return !!supports;\n    })();\n\n    var eStart  = hasTouch ? 'touchstart'  : 'mousedown',\n        eMove   = hasTouch ? 'touchmove'   : 'mousemove',\n        eEnd    = hasTouch ? 'touchend'    : 'mouseup';\n        eCancel = hasTouch ? 'touchcancel' : 'mouseup';\n\n    var defaults = {\n            listNodeName    : 'ol',\n            itemNodeName    : 'li',\n            rootClass       : 'dd',\n            listClass       : 'dd-list',\n            itemClass       : 'dd-item',\n            dragClass       : 'dd-dragel',\n            handleClass     : 'dd-handle',\n            collapsedClass  : 'dd-collapsed',\n            placeClass      : 'dd-placeholder',\n            noDragClass     : 'dd-nodrag',\n            emptyClass      : 'dd-empty',\n            expandBtnHTML   : '<button data-action=\"expand\" type=\"button\">Expand</button>',\n            collapseBtnHTML : '<button data-action=\"collapse\" type=\"button\">Collapse</button>',\n            group           : 0,\n            maxDepth        : 5,\n            threshold       : 20\n        };\n\n    function Plugin(element, options)\n    {\n        this.w  = $(window);\n        this.el = $(element);\n        this.options = $.extend({}, defaults, options);\n        this.init();\n    }\n\n    Plugin.prototype = {\n\n        init: function()\n        {\n            var list = this;\n\n            list.reset();\n\n            list.el.data('nestable-group', this.options.group);\n\n            list.placeEl = $('<div class=\"' + list.options.placeClass + '\"/>');\n\n            $.each(this.el.find(list.options.itemNodeName), function(k, el) {\n                list.setParent($(el));\n            });\n\n            list.el.on('click', 'button', function(e) {\n                if (list.dragEl || (!hasTouch && e.button !== 0)) {\n                    return;\n                }\n                var target = $(e.currentTarget),\n                    action = target.data('action'),\n                    item   = target.parent(list.options.itemNodeName);\n                if (action === 'collapse') {\n                    list.collapseItem(item);\n                }\n                if (action === 'expand') {\n                    list.expandItem(item);\n                }\n            });\n\n            var onStartEvent = function(e)\n            {\n                var handle = $(e.target);\n                if (!handle.hasClass(list.options.handleClass)) {\n                    if (handle.closest('.' + list.options.noDragClass).length) {\n                        return;\n                    }\n                    handle = handle.closest('.' + list.options.handleClass);\n                }\n                if (!handle.length || list.dragEl || (!hasTouch && e.button !== 0) || (hasTouch && e.touches.length !== 1)) {\n                    return;\n                }\n                e.preventDefault();\n                list.dragStart(hasTouch ? e.touches[0] : e);\n            };\n\n            var onMoveEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragMove(hasTouch ? e.touches[0] : e);\n                }\n            };\n\n            var onEndEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragStop(hasTouch ? e.touches[0] : e);\n                }\n            };\n\n            if (hasTouch) {\n                list.el[0].addEventListener(eStart, onStartEvent, false);\n                window.addEventListener(eMove, onMoveEvent, false);\n                window.addEventListener(eEnd, onEndEvent, false);\n                window.addEventListener(eCancel, onEndEvent, false);\n            } else {\n                list.el.on(eStart, onStartEvent);\n                list.w.on(eMove, onMoveEvent);\n                list.w.on(eEnd, onEndEvent);\n            }\n\n        },\n\n        serialize: function()\n        {\n            var data,\n                depth = 0,\n                list  = this;\n                step  = function(level, depth)\n                {\n                    var array = [ ],\n                        items = level.children(list.options.itemNodeName);\n                    items.each(function()\n                    {\n                        var li   = $(this),\n                            item = $.extend({}, li.data()),\n                            sub  = li.children(list.options.listNodeName);\n                        if (sub.length) {\n                            item.children = step(sub, depth + 1);\n                        }\n                        array.push(item);\n                    });\n                    return array;\n                };\n            data = step(list.el.find(list.options.listNodeName).first(), depth);\n            return data;\n        },\n\n        serialise: function()\n        {\n            return this.serialize();\n        },\n\n        reset: function()\n        {\n            this.mouse = {\n                offsetX   : 0,\n                offsetY   : 0,\n                startX    : 0,\n                startY    : 0,\n                lastX     : 0,\n                lastY     : 0,\n                nowX      : 0,\n                nowY      : 0,\n                distX     : 0,\n                distY     : 0,\n                dirAx     : 0,\n                dirX      : 0,\n                dirY      : 0,\n                lastDirX  : 0,\n                lastDirY  : 0,\n                distAxX   : 0,\n                distAxY   : 0\n            };\n            this.moving     = false;\n            this.dragEl     = null;\n            this.dragRootEl = null;\n            this.dragDepth  = 0;\n            this.hasNewRoot = false;\n            this.pointEl    = null;\n        },\n\n        expandItem: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action=\"expand\"]').hide();\n            li.children('[data-action=\"collapse\"]').show();\n            li.children(this.options.listNodeName).show();\n        },\n\n        collapseItem: function(li)\n        {\n            var lists = li.children(this.options.listNodeName);\n            if (lists.length) {\n                li.addClass(this.options.collapsedClass);\n                li.children('[data-action=\"collapse\"]').hide();\n                li.children('[data-action=\"expand\"]').show();\n                li.children(this.options.listNodeName).hide();\n            }\n        },\n\n        expandAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.expandItem($(this));\n            });\n        },\n\n        collapseAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.collapseItem($(this));\n            });\n        },\n\n        setParent: function(li)\n        {\n            if (li.children(this.options.listNodeName).length) {\n                li.prepend($(this.options.expandBtnHTML));\n                li.prepend($(this.options.collapseBtnHTML));\n            }\n            li.children('[data-action=\"expand\"]').hide();\n        },\n\n        unsetParent: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action]').remove();\n            li.children(this.options.listNodeName).remove();\n        },\n\n        dragStart: function(e)\n        {\n            var mouse    = this.mouse,\n                target   = $(e.target),\n                dragItem = target.closest(this.options.itemNodeName);\n\n            this.placeEl.css('height', dragItem.height());\n\n            mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;\n            mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;\n            mouse.startX = mouse.lastX = e.pageX;\n            mouse.startY = mouse.lastY = e.pageY;\n\n            this.dragRootEl = this.el;\n\n            this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);\n            this.dragEl.css('width', dragItem.width());\n\n            // fix for zepto.js\n            //dragItem.after(this.placeEl).detach().appendTo(this.dragEl);\n            dragItem.after(this.placeEl);\n            dragItem[0].parentNode.removeChild(dragItem[0]);\n            dragItem.appendTo(this.dragEl);\n\n            $(document.body).append(this.dragEl);\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n            // total depth of dragging item\n            var i, depth,\n                items = this.dragEl.find(this.options.itemNodeName);\n            for (i = 0; i < items.length; i++) {\n                depth = $(items[i]).parents(this.options.listNodeName).length;\n                if (depth > this.dragDepth) {\n                    this.dragDepth = depth;\n                }\n            }\n        },\n\n        dragStop: function(e)\n        {\n            // fix for zepto.js\n            //this.placeEl.replaceWith(this.dragEl.children(this.options.itemNodeName + ':first').detach());\n            var el = this.dragEl.children(this.options.itemNodeName).first();\n            el[0].parentNode.removeChild(el[0]);\n            this.placeEl.replaceWith(el);\n\n            this.dragEl.remove();\n            this.el.trigger('change');\n            if (this.hasNewRoot) {\n                this.dragRootEl.trigger('change');\n            }\n            this.reset();\n        },\n\n        dragMove: function(e)\n        {\n            var list, parent, prev, next, depth,\n                opt   = this.options,\n                mouse = this.mouse;\n\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n\n            // mouse position last events\n            mouse.lastX = mouse.nowX;\n            mouse.lastY = mouse.nowY;\n            // mouse position this events\n            mouse.nowX  = e.pageX;\n            mouse.nowY  = e.pageY;\n            // distance mouse moved between events\n            mouse.distX = mouse.nowX - mouse.lastX;\n            mouse.distY = mouse.nowY - mouse.lastY;\n            // direction mouse was moving\n            mouse.lastDirX = mouse.dirX;\n            mouse.lastDirY = mouse.dirY;\n            // direction mouse is now moving (on both axis)\n            mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;\n            mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;\n            // axis mouse is now moving on\n            var newAx   = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;\n\n            // do nothing on first move\n            if (!mouse.moving) {\n                mouse.dirAx  = newAx;\n                mouse.moving = true;\n                return;\n            }\n\n            // calc distance moved on this axis (and direction)\n            if (mouse.dirAx !== newAx) {\n                mouse.distAxX = 0;\n                mouse.distAxY = 0;\n            } else {\n                mouse.distAxX += Math.abs(mouse.distX);\n                if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {\n                    mouse.distAxX = 0;\n                }\n                mouse.distAxY += Math.abs(mouse.distY);\n                if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {\n                    mouse.distAxY = 0;\n                }\n            }\n            mouse.dirAx = newAx;\n\n            /**\n             * move horizontal\n             */\n            if (mouse.dirAx && mouse.distAxX >= opt.threshold) {\n                // reset move distance on x-axis for new phase\n                mouse.distAxX = 0;\n                prev = this.placeEl.prev(opt.itemNodeName);\n                // increase horizontal level if previous sibling exists and is not collapsed\n                if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {\n                    // cannot increase level when item above is collapsed\n                    list = prev.find(opt.listNodeName).last();\n                    // check if depth limit has reached\n                    depth = this.placeEl.parents(opt.listNodeName).length;\n                    if (depth + this.dragDepth <= opt.maxDepth) {\n                        // create new sub-level if one doesn't exist\n                        if (!list.length) {\n                            list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);\n                            list.append(this.placeEl);\n                            prev.append(list);\n                            this.setParent(prev);\n                        } else {\n                            // else append to next level up\n                            list = prev.children(opt.listNodeName).last();\n                            list.append(this.placeEl);\n                        }\n                    }\n                }\n                // decrease horizontal level\n                if (mouse.distX < 0) {\n                    // we can't decrease a level if an item preceeds the current one\n                    next = this.placeEl.next(opt.itemNodeName);\n                    if (!next.length) {\n                        parent = this.placeEl.parent();\n                        this.placeEl.closest(opt.itemNodeName).after(this.placeEl);\n                        if (!parent.children().length) {\n                            this.unsetParent(parent.parent());\n                        }\n                    }\n                }\n            }\n\n            var isEmpty = false;\n\n            // find list item under cursor\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'hidden';\n            }\n            this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'visible';\n            }\n            if (this.pointEl.hasClass(opt.handleClass)) {\n                this.pointEl = this.pointEl.parent(opt.itemNodeName);\n            }\n            if (this.pointEl.hasClass(opt.emptyClass)) {\n                isEmpty = true;\n            }\n            else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {\n                return;\n            }\n\n            // find parent list of item under cursor\n            var pointElRoot = this.pointEl.closest('.' + opt.rootClass),\n                isNewRoot   = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');\n\n            /**\n             * move vertical\n             */\n            if (!mouse.dirAx || isNewRoot || isEmpty) {\n                // check if groups match if dragging over new root\n                if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {\n                    return;\n                }\n                // check depth limit\n                depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;\n                if (depth > opt.maxDepth) {\n                    return;\n                }\n                var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);\n                    parent = this.placeEl.parent();\n                // if empty create new list to replace empty placeholder\n                if (isEmpty) {\n                    list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);\n                    list.append(this.placeEl);\n                    this.pointEl.replaceWith(list);\n                }\n                else if (before) {\n                    this.pointEl.before(this.placeEl);\n                }\n                else {\n                    this.pointEl.after(this.placeEl);\n                }\n                if (!parent.children().length) {\n                    this.unsetParent(parent.parent());\n                }\n                if (!this.dragRootEl.find(opt.itemNodeName).length) {\n                    this.dragRootEl.append('<div class=\"' + opt.emptyClass + '\"/>');\n                }\n                // parent root list has changed\n                if (isNewRoot) {\n                    this.dragRootEl = pointElRoot;\n                    this.hasNewRoot = this.el[0] !== this.dragRootEl[0];\n                }\n            }\n        }\n\n    };\n\n    $.fn.nestable = function(params)\n    {\n        var lists  = this,\n            retval = this;\n\n        lists.each(function()\n        {\n            var plugin = $(this).data(\"nestable\");\n\n            if (!plugin) {\n                $(this).data(\"nestable\", new Plugin(this, params));\n                $(this).data(\"nestable-id\", new Date().getTime());\n            } else {\n                if (typeof params === 'string' && typeof plugin[params] === 'function') {\n                    retval = plugin[params]();\n                }\n            }\n        });\n\n        return retval || lists;\n    };\n\n})(window.jQuery || window.Zepto, window, document);\n"
  },
  {
    "path": "src/main/webapp/error/404.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<div>错误代码：404</div>\n<div>错误描述：资源未找到</div>"
  },
  {
    "path": "src/main/webapp/error/500.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<div>错误代码：500</div>\n<div>错误描述：系统内部错误</div>"
  },
  {
    "path": "src/main/webapp/error/noSecurity.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\" contentType=\"text/html; charset=UTF-8\"%>\n${msg}"
  },
  {
    "path": "src/main/webapp/error/noSession.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n${msg}\n<script type=\"text/javascript\" charset=\"utf-8\">\n\tsetTimeout(\"parent.location.href='${ctx}/admin/index'\",1500);\n</script>"
  },
  {
    "path": "src/main/webapp/error/noSessionFront.jsp",
    "content": "{\"success\":\"false\",\"message\":\"Session is overTime\"}"
  },
  {
    "path": "src/main/webapp/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/all-chartjs.js",
    "content": "var Script = function () {\n\n\n    var doughnutData = [\n        {\n            value: 30,\n            color:\"#F7464A\"\n        },\n        {\n            value : 50,\n            color : \"#46BFBD\"\n        },\n        {\n            value : 100,\n            color : \"#FDB45C\"\n        },\n        {\n            value : 40,\n            color : \"#949FB1\"\n        },\n        {\n            value : 120,\n            color : \"#4D5360\"\n        }\n\n    ];\n    var lineChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    var pieData = [\n        {\n            value: 30,\n            color:\"#F38630\"\n        },\n        {\n            value : 50,\n            color : \"#E0E4CC\"\n        },\n        {\n            value : 100,\n            color : \"#69D2E7\"\n        }\n\n    ];\n    var barChartData = {\n        labels : [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    var chartData = [\n        {\n            value : Math.random(),\n            color: \"#D97041\"\n        },\n        {\n            value : Math.random(),\n            color: \"#C7604C\"\n        },\n        {\n            value : Math.random(),\n            color: \"#21323D\"\n        },\n        {\n            value : Math.random(),\n            color: \"#9D9B7F\"\n        },\n        {\n            value : Math.random(),\n            color: \"#7D4F6D\"\n        },\n        {\n            value : Math.random(),\n            color: \"#584A5E\"\n        }\n    ];\n    var radarChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    new Chart(document.getElementById(\"doughnut\").getContext(\"2d\")).Doughnut(doughnutData);\n    new Chart(document.getElementById(\"line\").getContext(\"2d\")).Line(lineChartData);\n    new Chart(document.getElementById(\"radar\").getContext(\"2d\")).Radar(radarChartData);\n    new Chart(document.getElementById(\"polarArea\").getContext(\"2d\")).PolarArea(chartData);\n    new Chart(document.getElementById(\"bar\").getContext(\"2d\")).Bar(barChartData);\n    new Chart(document.getElementById(\"pie\").getContext(\"2d\")).Pie(pieData);\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/common-scripts.js",
    "content": "var Script = function () {\n\n//    sidebar dropdown menu\n\n    jQuery('#sidebar .sub-menu > a').click(function () {\n        var last = jQuery('.sub-menu.open', $('#sidebar'));\n        last.removeClass(\"open\");\n        jQuery('.arrow', last).removeClass(\"open\");\n        jQuery('.sub', last).slideUp(200);\n        var sub = jQuery(this).next();\n        if (sub.is(\":visible\")) {\n            jQuery('.arrow', jQuery(this)).removeClass(\"open\");\n            jQuery(this).parent().removeClass(\"open\");\n            sub.slideUp(200);\n        } else {\n            jQuery('.arrow', jQuery(this)).addClass(\"open\");\n            jQuery(this).parent().addClass(\"open\");\n            sub.slideDown(200);\n        }\n        var o = ($(this).offset());\n        diff = 200 - o.top;\n        if(diff>0)\n            $(\".sidebar-scroll\").scrollTo(\"-=\"+Math.abs(diff),500);\n        else\n            $(\".sidebar-scroll\").scrollTo(\"+=\"+Math.abs(diff),500);\n    });\n\n//    sidebar toggle\n\n    $('.icon-reorder').click(function () {\n        if ($('#sidebar > ul').is(\":visible\") === true) {\n            $('#main-content').css({\n                'margin-left': '0px'\n            });\n            $('#sidebar').css({\n                'margin-left': '-180px'\n            });\n            $('#sidebar > ul').hide();\n            $(\"#container\").addClass(\"sidebar-closed\");\n        } else {\n            $('#main-content').css({\n                'margin-left': '180px'\n            });\n            $('#sidebar > ul').show();\n            $('#sidebar').css({\n                'margin-left': '0'\n            });\n            $(\"#container\").removeClass(\"sidebar-closed\");\n        }\n    });\n\n// custom scrollbar\n    $(\".sidebar-scroll\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', cursorborder: ''});\n\n    $(\".portlet-scroll-1\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', cursorborder: ''});\n\n    $(\".portlet-scroll-2\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', autohidemode: false, cursorborder: ''});\n\n    $(\".portlet-scroll-3\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', autohidemode: false, cursorborder: ''});\n\n    $(\"html\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '8', cursorborderradius: '0px', background: '#404040', cursorborder: '', zindex: '1000'});\n\n\n// theme switcher\n\n    var scrollHeight = '60px';\n    jQuery('#theme-change').click(function () {\n        if ($(this).attr(\"opened\") && !$(this).attr(\"opening\") && !$(this).attr(\"closing\")) {\n            $(this).removeAttr(\"opened\");\n            $(this).attr(\"closing\", \"1\");\n\n            $(\"#theme-change\").css(\"overflow\", \"hidden\").animate({\n                width: '20px',\n                height: '22px',\n                'padding-top': '3px'\n            }, {\n                complete: function () {\n                    $(this).removeAttr(\"closing\");\n                    $(\"#theme-change .settings\").hide();\n                }\n            });\n        } else if (!$(this).attr(\"closing\") && !$(this).attr(\"opening\")) {\n            $(this).attr(\"opening\", \"1\");\n            $(\"#theme-change\").css(\"overflow\", \"visible\").animate({\n                width: '226px',\n                height: scrollHeight,\n                'padding-top': '3px'\n            }, {\n                complete: function () {\n                    $(this).removeAttr(\"opening\");\n                    $(this).attr(\"opened\", 1);\n                }\n            });\n            $(\"#theme-change .settings\").show();\n        }\n    });\n\n    jQuery('#theme-change .colors span').click(function () {\n        var color = $(this).attr(\"data-style\");\n        setColor(color);\n    });\n\n    jQuery('#theme-change .layout input').change(function () {\n        setLayout();\n    });\n\n    var setColor = function (color) {\n        $('#style_color').attr(\"href\", \"css/style-\" + color + \".css\");\n    }\n\n// widget tools\n\n    jQuery('.widget .tools .icon-chevron-down').click(function () {\n        var el = jQuery(this).parents(\".widget\").children(\".widget-body\");\n        if (jQuery(this).hasClass(\"icon-chevron-down\")) {\n            jQuery(this).removeClass(\"icon-chevron-down\").addClass(\"icon-chevron-up\");\n            el.slideUp(200);\n        } else {\n            jQuery(this).removeClass(\"icon-chevron-up\").addClass(\"icon-chevron-down\");\n            el.slideDown(200);\n        }\n    });\n\n    jQuery('.widget .tools .icon-remove').click(function () {\n        jQuery(this).parents(\".widget\").parent().remove();\n    });\n\n//    tool tips\n\n    $('.element').tooltip();\n\n    $('.tooltips').tooltip();\n\n//    popovers\n\n    $('.popovers').popover();\n\n// scroller\n\n    $('.scroller').slimscroll({\n        height: 'auto'\n    });\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/custom-flot-chart.js",
    "content": "var Script = function () {\n\n//    flot chart (Sin and Cos)\n\n    var metro = {\n        showTooltip: function (x, y, contents) {\n            $('<div class=\"metro_tips\">' + contents + '</div>').css( {\n                position: 'absolute',\n                display: 'none',\n                top: y + 5,\n                left: x + 5\n            }).appendTo(\"body\").fadeIn(200);\n        }\n\n    }\n\n    if (!!$(\".plots\").offset() ) {\n        var sin = [];\n        var cos = [];\n\n        for (var i = 0; i <= 20; i += 0.5){\n            sin.push([i, Math.sin(i)]);\n            cos.push([i, Math.cos(i)]);\n        }\n\n        // Display the Sin and Cos Functions\n        $.plot($(\".plots\"), [ { label: \"Cos\", data: cos }, { label: \"Sin\", data: sin } ],\n            {\n                colors: [\"#4a8bc2\", \"#de577b\"],\n\n                series: {\n                    lines: {\n                        show: true,\n                        lineWidth: 2\n                    },\n                    points: {show: true},\n                    shadowSize: 2\n                },\n\n                grid: {\n                    hoverable: true,\n                    show: true,\n                    borderWidth: 0,\n                    labelMargin: 12\n                },\n\n                legend: {\n                    show: true,\n                    margin: [0,-24],\n                    noColumns: 0,\n                    labelBoxBorderColor: null\n                },\n\n                yaxis: { min: -1.2, max: 1.2},\n                xaxis: {}\n            });\n\n        // plot tooltip show\n        var previousPoint = null;\n        $(\".plots\").bind(\"plothover\", function (event, pos, item) {\n            if (item) {\n                if (previousPoint != item.dataIndex) {\n                    previousPoint = item.dataIndex;\n                    $(\".charts_tooltip\").fadeOut(\"fast\").promise().done(function(){\n                        $(this).remove();\n                    });\n                    var x = item.datapoint[0].toFixed(2),\n                        y = item.datapoint[1].toFixed(2);\n                    metro.showTooltip(item.pageX, item.pageY, item.series.label + \" of \" + x + \" = \" + y);\n                }\n            }\n            else {\n                $(\".metro_tips\").fadeOut(\"fast\").promise().done(function(){\n                    $(this).remove();\n                });\n                previousPoint = null;\n            }\n        });\n    }\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/draggable-portlet.js",
    "content": "var DraggablePortlet = function () {\n\n    return {\n        //main function to initiate the module\n        init: function () {\n\n            if (!jQuery().sortable) {\n                return;\n            }\n\n            $(\"#draggable_portlets\").sortable({\n                connectWith: \".widget\",\n                items: \".widget\",\n                opacity: 0.8,\n                coneHelperSize: true,\n                placeholder: 'sortable-box-placeholder round-all',\n                forcePlaceholderSize: true,\n                tolerance: \"pointer\"\n            });\n\n            $(\".column\").disableSelection();\n\n        }\n\n    };\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/dynamic-table.js",
    "content": "var Script = function () {\n\n        // begin first table\n        $('#sample_1').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ records per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_1 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_1_wrapper .dataTables_filter input').addClass(\"input-medium\"); // modify table search input\n        jQuery('#sample_1_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n        // begin second table\n        $('#sample_2').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_2 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_2_wrapper .dataTables_filter input').addClass(\"input-small\"); // modify table search input\n        jQuery('#sample_2_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n        // begin: third table\n        $('#sample_3').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_3 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_3_wrapper .dataTables_filter input').addClass(\"input-small\"); // modify table search input\n        jQuery('#sample_3_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/easy-pie-chart.js",
    "content": "var Script = function () {\n\n// easy pie chart\n\n    $('.percentage').easyPieChart({\n        animate: 1000,\n        size: 95,\n        barColor:'#4a8bc2'\n    });\n    $('.percentage-light').easyPieChart({\n        barColor: function(percent) {\n            percent /= 100;\n            return \"rgb(\" + Math.round(255 * (1-percent)) + \", \" + Math.round(255 * percent) + \", 0)\";\n        },\n        trackColor: '#666',\n        scaleColor: false,\n        lineCap: 'butt',\n        lineWidth: 15,\n        animate: 1000\n    });\n\n    $('.update-easy-pie-chart').click(function(){\n        $('.easy-pie-chart .percentage').each(function() {\n            var newValue = Math.floor(100*Math.random());\n            $(this).data('easyPieChart').update(newValue);\n            $('span', this).text(newValue);\n        });\n    });\n\n    $('.updateEasyPieChart').on('click', function(e) {\n        e.preventDefault();\n        $('.percentage, .percentage-light').each(function() {\n            var newValue = Math.round(100*Math.random());\n            $(this).data('easyPieChart').update(newValue);\n            $('span', this).text(newValue);\n        });\n    });\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/editable-table.js",
    "content": "var EditableTable = function () {\n\n    return {\n\n        //main function to initiate the module\n        init: function () {\n            function restoreRow(oTable, nRow) {\n                var aData = oTable.fnGetData(nRow);\n                var jqTds = $('>td', nRow);\n\n                for (var i = 0, iLen = jqTds.length; i < iLen; i++) {\n                    oTable.fnUpdate(aData[i], nRow, i, false);\n                }\n\n                oTable.fnDraw();\n            }\n\n            function editRow(oTable, nRow) {\n                var aData = oTable.fnGetData(nRow);\n                var jqTds = $('>td', nRow);\n                jqTds[0].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[0] + '\">';\n                jqTds[1].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[1] + '\">';\n                jqTds[2].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[2] + '\">';\n                jqTds[3].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[3] + '\">';\n                jqTds[4].innerHTML = '<a class=\"edit\" href=\"\">Save</a>';\n                jqTds[5].innerHTML = '<a class=\"cancel\" href=\"\">Cancel</a>';\n            }\n\n            function saveRow(oTable, nRow) {\n                var jqInputs = $('input', nRow);\n                oTable.fnUpdate(jqInputs[0].value, nRow, 0, false);\n                oTable.fnUpdate(jqInputs[1].value, nRow, 1, false);\n                oTable.fnUpdate(jqInputs[2].value, nRow, 2, false);\n                oTable.fnUpdate(jqInputs[3].value, nRow, 3, false);\n                oTable.fnUpdate('<a class=\"edit\" href=\"\">Edit</a>', nRow, 4, false);\n                oTable.fnUpdate('<a class=\"delete\" href=\"\">Delete</a>', nRow, 5, false);\n                oTable.fnDraw();\n            }\n\n            function cancelEditRow(oTable, nRow) {\n                var jqInputs = $('input', nRow);\n                oTable.fnUpdate(jqInputs[0].value, nRow, 0, false);\n                oTable.fnUpdate(jqInputs[1].value, nRow, 1, false);\n                oTable.fnUpdate(jqInputs[2].value, nRow, 2, false);\n                oTable.fnUpdate(jqInputs[3].value, nRow, 3, false);\n                oTable.fnUpdate('<a class=\"edit\" href=\"\">Edit</a>', nRow, 4, false);\n                oTable.fnDraw();\n            }\n\n            var oTable = $('#editable-sample').dataTable({\n                \"aLengthMenu\": [\n                    [5, 15, 20, -1],\n                    [5, 15, 20, \"All\"] // change per page values here\n                ],\n                // set the initial value\n                \"iDisplayLength\": 5,\n                \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n                \"sPaginationType\": \"bootstrap\",\n                \"oLanguage\": {\n                    \"sLengthMenu\": \"_MENU_ records per page\",\n                    \"oPaginate\": {\n                        \"sPrevious\": \"Prev\",\n                        \"sNext\": \"Next\"\n                    }\n                },\n                \"aoColumnDefs\": [{\n                        'bSortable': false,\n                        'aTargets': [0]\n                    }\n                ]\n            });\n\n            jQuery('#editable-sample_wrapper .dataTables_filter input').addClass(\" medium\"); // modify table search input\n            jQuery('#editable-sample_wrapper .dataTables_length select').addClass(\" xsmall\"); // modify table per page dropdown\n\n            var nEditing = null;\n\n            $('#editable-sample_new').click(function (e) {\n                e.preventDefault();\n                var aiNew = oTable.fnAddData(['', '', '', '',\n                        '<a class=\"edit\" href=\"\">Edit</a>', '<a class=\"cancel\" data-mode=\"new\" href=\"\">Cancel</a>'\n                ]);\n                var nRow = oTable.fnGetNodes(aiNew[0]);\n                editRow(oTable, nRow);\n                nEditing = nRow;\n            });\n\n            $('#editable-sample a.delete').live('click', function (e) {\n                e.preventDefault();\n\n                if (confirm(\"Are you sure to delete this row ?\") == false) {\n                    return;\n                }\n\n                var nRow = $(this).parents('tr')[0];\n                oTable.fnDeleteRow(nRow);\n                alert(\"Deleted! Do not forget to do some ajax to sync with backend :)\");\n            });\n\n            $('#editable-sample a.cancel').live('click', function (e) {\n                e.preventDefault();\n                if ($(this).attr(\"data-mode\") == \"new\") {\n                    var nRow = $(this).parents('tr')[0];\n                    oTable.fnDeleteRow(nRow);\n                } else {\n                    restoreRow(oTable, nEditing);\n                    nEditing = null;\n                }\n            });\n\n            $('#editable-sample a.edit').live('click', function (e) {\n                e.preventDefault();\n\n                /* Get the row as a parent of the link that was clicked on */\n                var nRow = $(this).parents('tr')[0];\n\n                if (nEditing !== null && nEditing != nRow) {\n                    /* Currently editing - but not this row - restore the old before continuing to edit mode */\n                    restoreRow(oTable, nEditing);\n                    editRow(oTable, nRow);\n                    nEditing = nRow;\n                } else if (nEditing == nRow && this.innerHTML == \"Save\") {\n                    /* Editing this row and want to save it */\n                    saveRow(oTable, nEditing);\n                    nEditing = null;\n                    alert(\"Updated! Do not forget to do some ajax to sync with backend :)\");\n                } else {\n                    /* No edit in progress - let's start one */\n                    editRow(oTable, nRow);\n                    nEditing = nRow;\n                }\n            });\n        }\n\n    };\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\ndocument.createElement(\"canvas\").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement(\"canvas\");a.attachEvent(\"onreadystatechange\",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||\nb.namespaces.add(\"g_vml_\",\"urn:schemas-microsoft-com:vml\",\"#default#VML\");b.namespaces.g_o_||b.namespaces.add(\"g_o_\",\"urn:schemas-microsoft-com:office:office\",\"#default#VML\");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id=\"ex_canvas_\";a.cssText=\"canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:*{behavior:url(#default#VML)}g_o_\\\\:*{behavior:url(#default#VML)}\"}var c=b.getElementsByTagName(\"canvas\"),d=0;for(;d<c.length;d++)this.initElement(c[d])},\ninitElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML=\"\";b.attachEvent(\"onpropertychange\",Z);b.attachEvent(\"onresize\",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+\"px\";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+\"px\";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case \"width\":a.style.width=a.attributes.width.nodeValue+\"px\";a.getContext().clearRect();\nbreak;case \"height\":a.style.height=a.attributes.height.nodeValue+\"px\";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+\"px\";a.firstChild.style.height=a.clientHeight+\"px\"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=\nh}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)==\"rgb\"){var d=b.indexOf(\"(\",3),f=b.indexOf(\")\",d+\n1),h=b.substring(d+1,f).split(\",\");a=\"#\";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)==\"a\")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case \"butt\":return\"flat\";case \"round\":return\"round\";case \"square\":default:return\"square\"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;\nvar a=b.ownerDocument.createElement(\"div\");a.style.width=b.clientWidth+\"px\";a.style.height=b.clientHeight+\"px\";a.style.overflow=\"hidden\";a.style.position=\"absolute\";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=\"\"};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"moveTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};\ni.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"lineTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:\"bezierCurveTo\",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+\n0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?\"at\":\"wa\",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,\na);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,\na,c,d){var f=new D(\"gradient\");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D(\"gradientradial\");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width=\"auto\";b.runtimeStyle.height=\"auto\";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==\n5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error(\"Invalid number of arguments\");var q=this.getCoords_(a,c),t=[];t.push(\" <g_vml_:group\",' coordsize=\"',k*10,\",\",k*10,'\"',' coordorigin=\"0,0\"',' style=\"width:',10,\"px;height:\",10,\"px;position:absolute;\");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push(\"M11=\",\nthis.m_[0][0],\",\",\"M12=\",this.m_[1][0],\",\",\"M21=\",this.m_[0][1],\",\",\"M22=\",this.m_[1][1],\",\",\"Dx=\",j(q.x/k),\",\",\"Dy=\",j(q.y/k),\"\");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push(\"padding:0 \",j(p.x/k),\"px \",j(p.y/k),\"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(\",E.join(\"\"),\", sizingmethod='clip');\")}else t.push(\"top:\",j(q.y/k),\"px;left:\",j(q.x/k),\"px;\");t.push(' \">','<g_vml_:image src=\"',b.src,\n'\"',' style=\"width:',k*d,\"px;\",\" height:\",k*f,'px;\"',' cropleft=\"',h/n,'\"',' croptop=\"',g/o,'\"',' cropright=\"',(n-h-l)/n,'\"',' cropbottom=\"',(o-g-e)/o,'\"',\" />\",\"</g_vml_:group>\");this.element_.insertAdjacentHTML(\"BeforeEnd\",t.join(\"\"))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push(\"<g_vml_:shape\",' filled=\"',!!b,'\"',' style=\"position:absolute;width:',10,\"px;height:\",10,'px;\"',' coordorigin=\"0 0\" coordsize=\"',k*10,\" \",k*10,'\"',' stroked=\"',\n!b,'\"',' path=\"');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case \"moveTo\":a.push(\" m \",j(e.x),\",\",j(e.y));break;case \"lineTo\":a.push(\" l \",j(e.x),\",\",j(e.y));break;case \"close\":a.push(\" x \");e=null;break;case \"bezierCurveTo\":a.push(\" c \",j(e.cp1x),\",\",j(e.cp1y),\",\",j(e.cp2x),\",\",j(e.cp2y),\",\",j(e.x),\",\",j(e.y));break;case \"at\":case \"wa\":a.push(\" \",e.type,\" \",j(e.x-this.arcScaleX_*e.radius),\",\",j(e.y-this.arcScaleY_*e.radius),\n\" \",j(e.x+this.arcScaleX_*e.radius),\",\",j(e.y+this.arcScaleY_*e.radius),\" \",j(e.xStart),\",\",j(e.yStart),\" \",j(e.xEnd),\",\",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' \">');if(b)if(typeof this.fillStyle==\"object\"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_==\"gradient\"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),\nz=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+\no+\" \"+T.color)}a.push('<g_vml_:fill type=\"',m.type_,'\"',' method=\"none\" focus=\"100%\"',' color=\"',da,'\"',' color2=\"',ea,'\"',' colors=\"',S.join(\",\"),'\"',' opacity=\"',ga,'\"',' g_o_:opacity2=\"',fa,'\"',' angle=\"',r,'\"',' focusposition=\"',n.x,\",\",n.y,'\" />')}else a.push('<g_vml_:fill color=\"',d,'\" opacity=\"',f,'\" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push(\"<g_vml_:stroke\",' opacity=\"',f,'\"',' joinstyle=\"',this.lineJoin,'\"',' miterlimit=\"',this.miterLimit,'\"',' endcap=\"',aa(this.lineCap),\n'\"',' weight=\"',K,'px\"',' color=\"',d,'\" />')}a.push(\"</g_vml_:shape>\");this.element_.insertAdjacentHTML(\"beforeEnd\",a.join(\"\"))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:\"close\"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),\nthis);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,\n0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=\nM;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();\n"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/external-dragging-calendar.js",
    "content": "var Script = function () {\n\n\n    /* initialize the external events\n     -----------------------------------------------------------------*/\n\n    $('#external-events div.external-event').each(function() {\n\n        // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)\n        // it doesn't need to have a start or end\n        var eventObject = {\n            title: $.trim($(this).text()) // use the element's text as the event title\n        };\n\n        // store the Event Object in the DOM element so we can get to it later\n        $(this).data('eventObject', eventObject);\n\n        // make the event draggable using jQuery UI\n        $(this).draggable({\n            zIndex: 999,\n            revert: true,      // will cause the event to go back to its\n            revertDuration: 0  //  original position after the drag\n        });\n\n    });\n\n\n    /* initialize the calendar\n     -----------------------------------------------------------------*/\n\n    var date = new Date();\n    var d = date.getDate();\n    var m = date.getMonth();\n    var y = date.getFullYear();\n\n    $('#calendar').fullCalendar({\n        header: {\n            left: 'prev,next today',\n            center: 'title',\n            right: 'month,basicWeek,basicDay'\n        },\n        editable: true,\n        droppable: true, // this allows things to be dropped onto the calendar !!!\n        drop: function(date, allDay) { // this function is called when something is dropped\n\n            // retrieve the dropped element's stored Event Object\n            var originalEventObject = $(this).data('eventObject');\n\n            // we need to copy it, so that multiple events don't have a reference to the same object\n            var copiedEventObject = $.extend({}, originalEventObject);\n\n            // assign it the date that was reported\n            copiedEventObject.start = date;\n            copiedEventObject.allDay = allDay;\n\n            // render the event on the calendar\n            // the last `true` argument determines if the event \"sticks\" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)\n            $('#calendar').fullCalendar('renderEvent', copiedEventObject, true);\n\n            // is the \"remove after drop\" checkbox checked?\n            if ($('#drop-remove').is(':checked')) {\n                // if so, remove the element from the \"Draggable Events\" list\n                $(this).remove();\n            }\n\n        },\n        events: [\n            {\n                title: 'All Day Event',\n                start: new Date(y, m, 1)\n            },\n            {\n                title: 'Long Event',\n                start: new Date(y, m, d-5),\n                end: new Date(y, m, d-2)\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d-3, 16, 0),\n                allDay: false\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d+4, 16, 0),\n                allDay: false\n            },\n            {\n                title: 'Meeting',\n                start: new Date(y, m, d, 10, 30),\n                allDay: false\n            },\n            {\n                title: 'Lunch',\n                start: new Date(y, m, d, 12, 0),\n                end: new Date(y, m, d, 14, 0),\n                allDay: false\n            },\n            {\n                title: 'Birthday Party',\n                start: new Date(y, m, d+1, 19, 0),\n                end: new Date(y, m, d+1, 22, 30),\n                allDay: false\n            },\n            {\n                title: 'Click for Google',\n                start: new Date(y, m, 28),\n                end: new Date(y, m, 29),\n                url: '../../../../google.com/default.htm'\n            }\n        ]\n    });\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/flot-chart.js",
    "content": "var Script = function () {\n\n//  tracking chart\n\n    var plot;\n    $(function () {\n        var sin = [], cos = [];\n        for (var i = 0; i < 14; i += 0.1) {\n            sin.push([i, Math.sin(i)]);\n            cos.push([i, Math.cos(i)]);\n        }\n\n        plot = $.plot($(\"#chart-1\"),\n            [ { data: sin, label: \"sin(x) = -0.00\"},\n                { data: cos, label: \"cos(x) = -0.00\" } ], {\n                series: {\n                    lines: { show: true }\n                },\n                crosshair: { mode: \"x\" },\n                grid: { hoverable: true, autoHighlight: false },\n                yaxis: { min: -1.2, max: 1.2 }\n            });\n        var legends = $(\"#chart-1 .legendLabel\");\n        legends.each(function () {\n            // fix the widths so they don't jump around\n            $(this).css('width', $(this).width());\n        });\n\n        var updateLegendTimeout = null;\n        var latestPosition = null;\n\n        function updateLegend() {\n            updateLegendTimeout = null;\n\n            var pos = latestPosition;\n\n            var axes = plot.getAxes();\n            if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||\n                pos.y < axes.yaxis.min || pos.y > axes.yaxis.max)\n                return;\n\n            var i, j, dataset = plot.getData();\n            for (i = 0; i < dataset.length; ++i) {\n                var series = dataset[i];\n\n                // find the nearest points, x-wise\n                for (j = 0; j < series.data.length; ++j)\n                    if (series.data[j][0] > pos.x)\n                        break;\n\n                // now interpolate\n                var y, p1 = series.data[j - 1], p2 = series.data[j];\n                if (p1 == null)\n                    y = p2[1];\n                else if (p2 == null)\n                    y = p1[1];\n                else\n                    y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);\n\n                legends.eq(i).text(series.label.replace(/=.*/, \"= \" + y.toFixed(2)));\n            }\n        }\n\n        $(\"#chart-1\").bind(\"plothover\",  function (event, pos, item) {\n            latestPosition = pos;\n            if (!updateLegendTimeout)\n                updateLegendTimeout = setTimeout(updateLegend, 50);\n        });\n    });\n\n//    selection chart\n\n    $(function () {\n        var data = [\n            {\n                label: \"United States\",\n                data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]\n            },\n            {\n                label: \"Russia\",\n                data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]\n            },\n            {\n                label: \"United Kingdom\",\n                data: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]\n            },\n            {\n                label: \"Germany\",\n                data: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]\n            },\n            {\n                label: \"Denmark\",\n                data: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]\n            },\n            {\n                label: \"Sweden\",\n                data: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]\n            },\n            {\n                label: \"Norway\",\n                data: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]\n            }\n        ];\n\n        var options = {\n            series: {\n                lines: { show: true },\n                points: { show: true }\n            },\n            legend: { noColumns: 2 },\n            xaxis: { tickDecimals: 0 },\n            yaxis: { min: 0 },\n            selection: { mode: \"x\" }\n        };\n\n        var placeholder = $(\"#chart-2\");\n\n        placeholder.bind(\"plotselected\", function (event, ranges) {\n            $(\"#selection\").text(ranges.xaxis.from.toFixed(1) + \" to \" + ranges.xaxis.to.toFixed(1));\n\n            var zoom = $(\"#zoom\").attr(\"checked\");\n            if (zoom)\n                plot = $.plot(placeholder, data,\n                    $.extend(true, {}, options, {\n                        xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                    }));\n        });\n\n        placeholder.bind(\"plotunselected\", function (event) {\n            $(\"#selection\").text(\"\");\n        });\n\n        var plot = $.plot(placeholder, data, options);\n\n        $(\"#clearSelection\").click(function () {\n            plot.clearSelection();\n        });\n\n        $(\"#setSelection\").click(function () {\n            plot.setSelection({ xaxis: { from: 1994, to: 1995 } });\n        });\n    });\n\n//    live chart\n\n    $(function () {\n        // we use an inline data source in the example, usually data would\n        // be fetched from a server\n        var data = [], totalPoints = 300;\n        function getRandomData() {\n            if (data.length > 0)\n                data = data.slice(1);\n\n            // do a random walk\n            while (data.length < totalPoints) {\n                var prev = data.length > 0 ? data[data.length - 1] : 50;\n                var y = prev + Math.random() * 10 - 5;\n                if (y < 0)\n                    y = 0;\n                if (y > 100)\n                    y = 100;\n                data.push(y);\n            }\n\n            // zip the generated y values with the x values\n            var res = [];\n            for (var i = 0; i < data.length; ++i)\n                res.push([i, data[i]])\n            return res;\n        }\n\n        // setup control widget\n        var updateInterval = 30;\n        $(\"#updateInterval\").val(updateInterval).change(function () {\n            var v = $(this).val();\n            if (v && !isNaN(+v)) {\n                updateInterval = +v;\n                if (updateInterval < 1)\n                    updateInterval = 1;\n                if (updateInterval > 2000)\n                    updateInterval = 2000;\n                $(this).val(\"\" + updateInterval);\n            }\n        });\n\n        // setup plot\n        var options = {\n            series: { shadowSize: 0 }, // drawing is faster without shadows\n            yaxis: { min: 0, max: 100 },\n            xaxis: { show: false }\n        };\n        var plot = $.plot($(\"#chart-3\"), [ getRandomData() ], options);\n\n        function update() {\n            plot.setData([ getRandomData() ]);\n            // since the axes don't change, we don't need to call plot.setupGrid()\n            plot.draw();\n\n            setTimeout(update, updateInterval);\n        }\n\n        update();\n    });\n    \n//    support chart\n\n    $(function () {\n        var d1 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d1.push([i, Math.sin(i)]);\n\n        var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n        var d3 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d3.push([i, Math.cos(i)]);\n\n        var d4 = [];\n        for (var i = 0; i < 14; i += 0.1)\n            d4.push([i, Math.sqrt(i * 10)]);\n\n        var d5 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d5.push([i, Math.sqrt(i)]);\n\n        var d6 = [];\n        for (var i = 0; i < 14; i += 0.5 + Math.random())\n            d6.push([i, Math.sqrt(2*i + Math.sin(i) + 5)]);\n\n        $.plot($(\"#chart-4\"), [\n            {\n                data: d1,\n                lines: { show: true, fill: true }\n            },\n            {\n                data: d2,\n                bars: { show: true }\n            },\n            {\n                data: d3,\n                points: { show: true }\n            },\n            {\n                data: d4,\n                lines: { show: true }\n            },\n            {\n                data: d5,\n                lines: { show: true },\n                points: { show: true }\n            },\n            {\n                data: d6,\n                lines: { show: true, steps: true }\n            }\n        ]);\n    });\n\n//    bar chart\n\n    $(function () {\n        var d1 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d1.push([i, parseInt(Math.random() * 30)]);\n\n        var d2 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d2.push([i, parseInt(Math.random() * 30)]);\n\n        var d3 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d3.push([i, parseInt(Math.random() * 30)]);\n\n        var stack = 0, bars = true, lines = false, steps = false;\n\n        function plotWithOptions() {\n            $.plot($(\"#chart-5\"), [ d1, d2, d3 ], {\n                series: {\n                    stack: stack,\n                    lines: { show: lines, fill: true, steps: steps },\n                    bars: { show: bars, barWidth: 0.6 }\n                }\n            });\n        }\n\n        plotWithOptions();\n\n        $(\".stackControls input\").click(function (e) {\n            e.preventDefault();\n            stack = $(this).val() == \"With stacking\" ? true : null;\n            plotWithOptions();\n        });\n        $(\".graphControls input\").click(function (e) {\n            e.preventDefault();\n            bars = $(this).val().indexOf(\"Bars\") != -1;\n            lines = $(this).val().indexOf(\"Lines\") != -1;\n            steps = $(this).val().indexOf(\"steps\") != -1;\n            plotWithOptions();\n        });\n    });\n\n//    graph chart\n\n\n    $(function () {\n        // data\n        /*var data = [\n         { label: \"Series1\",  data: 10},\n         { label: \"Series2\",  data: 30},\n         { label: \"Series3\",  data: 90},\n         { label: \"Series4\",  data: 70},\n         { label: \"Series5\",  data: 80},\n         { label: \"Series6\",  data: 110}\n         ];*/\n        /*var data = [\n         { label: \"Series1\",  data: [[1,10]]},\n         { label: \"Series2\",  data: [[1,30]]},\n         { label: \"Series3\",  data: [[1,90]]},\n         { label: \"Series4\",  data: [[1,70]]},\n         { label: \"Series5\",  data: [[1,80]]},\n         { label: \"Series6\",  data: [[1,0]]}\n         ];*/\n        var data = [];\n        var series = Math.floor(Math.random()*10)+1;\n        for( var i = 0; i<series; i++)\n        {\n            data[i] = { label: \"Series\"+(i+1), data: Math.floor(Math.random()*100)+1 }\n        }\n\n\n\n        // GRAPH 1\n        $.plot($(\"#graph1\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n        // GRAPH 2\n        $.plot($(\"#graph2\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true,\n                        radius: 1,\n                        label: {\n                            show: true,\n                            radius: 1,\n                            formatter: function(label, series){\n                                return '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n                            },\n                            background: { opacity: 0.8 }\n                        }\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n        // GRAPH 3\n        $.plot($(\"#graph3\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true,\n                        radius: 1,\n                        label: {\n                            show: true,\n                            radius: 3/4,\n                            formatter: function(label, series){\n                                return '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n                            },\n                            background: { opacity: 0.5 }\n                        }\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n\n        // DONUT\n        $.plot($(\"#donut\"), data,\n            {\n                series: {\n                    pie: {\n                        innerRadius: 0.5,\n                        show: true\n                    }\n                }\n            });\n\n\n\n    });\n\n    function pieHover(event, pos, obj)\n    {\n        if (!obj)\n            return;\n        percent = parseFloat(obj.series.percent).toFixed(2);\n        $(\"#hover\").html('<span style=\"font-weight: bold; color: '+obj.series.color+'\">'+obj.series.label+' ('+percent+'%)</span>');\n    }\n\n    function pieClick(event, pos, obj)\n    {\n        if (!obj)\n            return;\n        percent = parseFloat(obj.series.percent).toFixed(2);\n        alert(''+obj.series.label+': '+percent+'%');\n    }\n\n    \n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/form-component.js",
    "content": "var Script = function () {\n\n    //chosen select\n    $(\".chzn-select\").chosen(); $(\".chzn-select-deselect\").chosen({allow_single_deselect:true});\n\n\n    //tag input\n\n    function onAddTag(tag) {\n        alert(\"Added a tag: \" + tag);\n    }\n    function onRemoveTag(tag) {\n        alert(\"Removed a tag: \" + tag);\n    }\n\n    function onChangeTag(input,tag) {\n        alert(\"Changed a tag: \" + tag);\n    }\n\n    $(function() {\n\n        $('#tags_1').tagsInput({width:'auto'});\n        $('#tags_2').tagsInput({\n            width: '250',\n            onChange: function(elem, elem_tags)\n            {\n                var languages = ['php','ruby','javascript'];\n                $('.tag', elem_tags).each(function()\n                {\n                    if($(this).text().search(new RegExp('\\\\b(' + languages.join('|') + ')\\\\b')) >= 0)\n                        $(this).css('background-color', 'yellow');\n                });\n            }\n        });\n\n        // Uncomment this line to see the callback functions in action\n        //\t\t\t$('input.tags').tagsInput({onAddTag:onAddTag,onRemoveTag:onRemoveTag,onChange: onChangeTag});\n\n        // Uncomment this line to see an input with no interface for adding new tags.\n        //\t\t\t$('input.tags').tagsInput({interactive:false});\n    });\n\n\n\n    //color picker\n\n    $('.cp1').colorpicker({\n        format: 'hex'\n    });\n    $('.cp2').colorpicker();\n\n\n\n    //time picker\n\n    $('#timepicker1, #timepicker3').timepicker();\n\n    $('#timepicker2, #timepicker4').timepicker({\n        minuteStep: 1,\n        template: 'modal',\n        showSeconds: true,\n        showMeridian: false\n    });\n\n\n    //clock face time picker\n\n    $('#clockface_1').clockface();\n\n    $('#clockface_2').clockface({\n        format: 'HH:mm',\n        trigger: 'manual'\n    });\n\n    $('#clockface_2_toggle-btn').click(function (e) {\n        e.stopPropagation();\n        $('#clockface_2').clockface('toggle');\n    });\n\n\n    //date picker\n\n    if (top.location != location) {\n        top.location.href = document.location.href ;\n    }\n    $(function(){\n        window.prettyPrint && prettyPrint();\n        $('#dp1').datepicker({\n            format: 'mm-dd-yyyy'\n        });\n        $('#dp2').datepicker();\n        $('#dp3').datepicker();\n        $('#dp3').datepicker();\n        $('#dpYears').datepicker();\n        $('#dpMonths').datepicker();\n\n\n        var startDate = new Date(2012,1,20);\n        var endDate = new Date(2012,1,25);\n        $('#dp4').datepicker()\n            .on('changeDate', function(ev){\n                if (ev.date.valueOf() > endDate.valueOf()){\n                    $('#alert').show().find('strong').text('The start date can not be greater then the end date');\n                } else {\n                    $('#alert').hide();\n                    startDate = new Date(ev.date);\n                    $('#startDate').text($('#dp4').data('date'));\n                }\n                $('#dp4').datepicker('hide');\n            });\n        $('#dp5').datepicker()\n            .on('changeDate', function(ev){\n                if (ev.date.valueOf() < startDate.valueOf()){\n                    $('#alert').show().find('strong').text('The end date can not be less then the start date');\n                } else {\n                    $('#alert').hide();\n                    endDate = new Date(ev.date);\n                    $('#endDate').text($('#dp5').data('date'));\n                }\n                $('#dp5').datepicker('hide');\n            });\n\n        // disabling dates\n        var nowTemp = new Date();\n        var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);\n\n        var checkin = $('#dpd1').datepicker({\n            onRender: function(date) {\n                return date.valueOf() < now.valueOf() ? 'disabled' : '';\n            }\n        }).on('changeDate', function(ev) {\n                if (ev.date.valueOf() > checkout.date.valueOf()) {\n                    var newDate = new Date(ev.date)\n                    newDate.setDate(newDate.getDate() + 1);\n                    checkout.setValue(newDate);\n                }\n                checkin.hide();\n                $('#dpd2')[0].focus();\n            }).data('datepicker');\n        var checkout = $('#dpd2').datepicker({\n            onRender: function(date) {\n                return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';\n            }\n        }).on('changeDate', function(ev) {\n                checkout.hide();\n            }).data('datepicker');\n    });\n\n\n\n    //daterange picker\n\n    $('#reservation').daterangepicker();\n\n    $('#reportrange').daterangepicker(\n        {\n            ranges: {\n                'Today': ['today', 'today'],\n                'Yesterday': ['yesterday', 'yesterday'],\n                'Last 7 Days': [Date.today().add({ days: -6 }), 'today'],\n                'Last 30 Days': [Date.today().add({ days: -29 }), 'today'],\n                'This Month': [Date.today().moveToFirstDayOfMonth(), Date.today().moveToLastDayOfMonth()],\n                'Last Month': [Date.today().moveToFirstDayOfMonth().add({ months: -1 }), Date.today().moveToFirstDayOfMonth().add({ days: -1 })]\n            },\n            opens: 'left',\n            format: 'MM/dd/yyyy',\n            separator: ' to ',\n            startDate: Date.today().add({ days: -29 }),\n            endDate: Date.today(),\n            minDate: '01/01/2012',\n            maxDate: '12/31/2013',\n            locale: {\n                applyLabel: 'Submit',\n                fromLabel: 'From',\n                toLabel: 'To',\n                customRangeLabel: 'Custom Range',\n                daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'],\n                monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n                firstDay: 1\n            },\n            showWeekNumbers: true,\n            buttonClasses: ['btn-danger']\n        },\n        function(start, end) {\n            $('#reportrange span').html(start.toString('MMMM d, yyyy') + ' - ' + end.toString('MMMM d, yyyy'));\n        }\n    );\n\n    //Set the initial state of the picker label\n    $('#reportrange span').html(Date.today().add({ days: -29 }).toString('MMMM d, yyyy') + ' - ' + Date.today().toString('MMMM d, yyyy'));\n\n\n    //toggle button\n\n    window.prettyPrint && prettyPrint();\n\n    $('#normal-toggle-button').toggleButtons();\n\n    $('#text-toggle-button').toggleButtons({\n        width: 220,\n        label: {\n            enabled: \"Lorem Ipsum\",\n            disabled: \"Dolor Sit\"\n        }\n    });\n\n    $('#not-animated-toggle-button').toggleButtons({\n        animated: false\n    });\n\n    $('#transition-percent-toggle-button').toggleButtons({\n        transitionspeed: \"500%\"\n    });\n\n    $('#transition-value-toggle-button').toggleButtons({\n        transitionspeed: 1 // default value: 0.05\n    });\n\n    $('#danger-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"danger\",\n            disabled: \"info\"\n        }\n    });\n    $('#info-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"info\",\n            disabled: \"info\"\n        }\n    });\n    $('#success-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"success\",\n            disabled: \"info\"\n        }\n    });\n    $('#warning-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"warning\",\n            disabled: \"info\"\n        }\n    });\n\n    $('#height-text-style-toggle-button').toggleButtons({\n        height: 100,\n        font: {\n            'line-height': '100px',\n            'font-size': '18px',\n            'font-style': 'regular'\n        }\n    });\n\n\n    //WYSIWYG Editor\n\n    $('.wysihtmleditor5').wysihtml5();\n\n\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/form-validation-script.js",
    "content": "var Script = function () {\n\n    $.validator.setDefaults({\n        submitHandler: function() { alert(\"submitted!\"); }\n    });\n\n    $().ready(function() {\n        // validate the comment form when it is submitted\n        $(\"#commentForm\").validate();\n\n        // validate signup form on keyup and submit\n        $(\"#signupForm\").validate({\n            rules: {\n                firstname: \"required\",\n                lastname: \"required\",\n                username: {\n                    required: true,\n                    minlength: 2\n                },\n                password: {\n                    required: true,\n                    minlength: 5\n                },\n                confirm_password: {\n                    required: true,\n                    minlength: 5,\n                    equalTo: \"#password\"\n                },\n                email: {\n                    required: true,\n                    email: true\n                },\n                topic: {\n                    required: \"#newsletter:checked\",\n                    minlength: 2\n                },\n                agree: \"required\"\n            },\n            messages: {\n                firstname: \"Please enter your firstname\",\n                lastname: \"Please enter your lastname\",\n                username: {\n                    required: \"Please enter a username\",\n                    minlength: \"Your username must consist of at least 2 characters\"\n                },\n                password: {\n                    required: \"Please provide a password\",\n                    minlength: \"Your password must be at least 5 characters long\"\n                },\n                confirm_password: {\n                    required: \"Please provide a password\",\n                    minlength: \"Your password must be at least 5 characters long\",\n                    equalTo: \"Please enter the same password as above\"\n                },\n                email: \"Please enter a valid email address\",\n                agree: \"Please accept our policy\"\n            }\n        });\n\n        // propose username by combining first- and lastname\n        $(\"#username\").focus(function() {\n            var firstname = $(\"#firstname\").val();\n            var lastname = $(\"#lastname\").val();\n            if(firstname && lastname && !this.value) {\n                this.value = firstname + \".\" + lastname;\n            }\n        });\n\n        //code to hide topic selection, disable for demo\n        var newsletter = $(\"#newsletter\");\n        // newsletter topics are optional, hide at first\n        var inital = newsletter.is(\":checked\");\n        var topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n        var topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n        // show when newsletter is checked\n        newsletter.click(function() {\n            topics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n            topicInputs.attr(\"disabled\", !this.checked);\n        });\n    });\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/form-wizard.js",
    "content": "var Script = function () {\n\n    $('#pills').bootstrapWizard({'tabClass': 'nav nav-pills', 'debug': false, onShow: function(tab, navigation, index) {\n        console.log('onShow');\n    }, onNext: function(tab, navigation, index) {\n        console.log('onNext');\n    }, onPrevious: function(tab, navigation, index) {\n        console.log('onPrevious');\n    }, onLast: function(tab, navigation, index) {\n        console.log('onLast');\n    }, onTabClick: function(tab, navigation, index) {\n        console.log('onTabClick');\n        alert('on tab click disabled');\n    }, onTabShow: function(tab, navigation, index) {\n        console.log('onTabShow');\n        var $total = navigation.find('li').length;\n        var $current = index+1;\n        var $percent = ($current/$total) * 100;\n        $('#pills').find('.bar').css({width:$percent+'%'});\n    }});\n\n    $('#tabsleft').bootstrapWizard({'tabClass': 'nav nav-tabs', 'debug': false, onShow: function(tab, navigation, index) {\n        console.log('onShow');\n    }, onNext: function(tab, navigation, index) {\n        console.log('onNext');\n    }, onPrevious: function(tab, navigation, index) {\n        console.log('onPrevious');\n    }, onLast: function(tab, navigation, index) {\n        console.log('onLast');\n    }, onTabClick: function(tab, navigation, index) {\n        console.log('onTabClick');\n\n    }, onTabShow: function(tab, navigation, index) {\n        console.log('onTabShow');\n        var $total = navigation.find('li').length;\n        var $current = index+1;\n        var $percent = ($current/$total) * 100;\n        $('#tabsleft').find('.bar').css({width:$percent+'%'});\n\n        // If it's the last tab then hide the last button and show the finish instead\n        if($current >= $total) {\n            $('#tabsleft').find('.pager .next').hide();\n            $('#tabsleft').find('.pager .finish').show();\n            $('#tabsleft').find('.pager .finish').removeClass('disabled');\n        } else {\n            $('#tabsleft').find('.pager .next').show();\n            $('#tabsleft').find('.pager .finish').hide();\n        }\n\n    }});\n\n\n    $('#tabsleft .finish').click(function() {\n        alert('Finished!, Starting over!');\n        $('#tabsleft').find(\"a[href*='tabsleft-tab1']\").trigger('click');\n    });\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/gmaps-scripts.js",
    "content": "var GoogleMaps = function () {\n\n    var mapBasic = function () {\n        new GMaps({\n            div: '#gmap_basic',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n    }\n\n    var mapMarker = function () {\n        var map = new GMaps({\n            div: '#gmap_marker',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n        map.addMarker({\n            lat: -12.043333,\n            lng: -77.03,\n            title: 'Lima',\n            details: {\n                database_id: 42,\n                author: 'HPNeo'\n            },\n            click: function (e) {\n                if (console.log) console.log(e);\n                alert('You clicked in this marker');\n            }\n        });\n        map.addMarker({\n            lat: -12.042,\n            lng: -77.028333,\n            title: 'Marker with InfoWindow',\n            infoWindow: {\n                content: 'HTML Content!!!!'\n            }\n        });\n    }\n\n    var mapPolylines = function() {\n        var map = new GMaps({\n            div: '#gmap_polylines',\n            lat: -12.043333,\n            lng: -77.028333,\n            click: function(e){\n              console.log(e);\n            }\n          });\n\n          path = [[-12.044012922866312, -77.02470665341184], [-12.05449279282314, -77.03024273281858], [-12.055122327623378, -77.03039293652341], [-12.075917129727586, -77.02764635449216], [-12.07635776902266, -77.02792530422971], [-12.076819390363665, -77.02893381481931], [-12.088527520066453, -77.0241058385925], [-12.090814532191756, -77.02271108990476]];\n\n          map.drawPolyline({\n            path: path,\n            strokeColor: '#131540',\n            strokeOpacity: 0.6,\n            strokeWeight: 6\n        });\n    }    \n    \n    var mapGeolocation = function() {\n        \n        var map = new GMaps({\n            div: '#gmap_geo',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n\n        GMaps.geolocate({\n          success: function(position) {\n            map.setCenter(position.coords.latitude, position.coords.longitude);\n          },\n          error: function(error) {\n            alert('Geolocation failed: '+error.message);\n          },\n          not_supported: function() {\n            alert(\"Your browser does not support geolocation\");\n          },\n          always: function() {\n            //alert(\"Geolocation Done!\");\n          }\n        });\n    }\n\n     var mapGeocoding = function() {\n\n        var map = new GMaps({\n            div: '#gmap_geocoding',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n\n        var handleAction = function() {\n            var text = $.trim($('#gmap_geocoding_address').val());\n            GMaps.geocode({\n              address: text,\n              callback: function(results, status){\n                if(status=='OK'){\n                  var latlng = results[0].geometry.location;\n                  map.setCenter(latlng.lat(), latlng.lng());\n                  map.addMarker({\n                    lat: latlng.lat(),\n                    lng: latlng.lng()\n                  });\n                  App.scrollTo($('#gmap_geocoding'));\n                }\n              }\n            });\n        }\n\n        $('#gmap_geocoding_btn').click(function(e){\n            e.preventDefault();\n            handleAction();\n        });\n\n        $(\"#gmap_geocoding_address\").keypress(function(e){\n            var keycode = (e.keyCode ? e.keyCode : e.which);\n            if(keycode == '13') {\n                e.preventDefault();               \n                handleAction();\n            }           \n        });\n\n     }   \n\n     var mapPolygone = function() {\n        var map = new GMaps({\n            div: '#gmap_polygons',\n            lat: -12.043333,\n            lng: -77.028333\n          });\n\n        var path = [[-12.040397656836609,-77.03373871559225], [-12.040248585302038,-77.03993927003302],\n                                    [-12.050047116528843,-77.02448169303511],\n                                    [-12.044804866577001,-77.02154422636042]];\n\n         var polygon = map.drawPolygon({\n              paths: path,\n              strokeColor: '#BBD8E9',\n              strokeOpacity: 1,\n              strokeWeight: 3,\n              fillColor: '#BBD8E9',\n              fillOpacity: 0.6\n            });\n     }\n\n     var mapRoutes = function() {\n\n        var map = new GMaps({\n            div: '#gmap_routes',\n            lat: -12.043333,\n            lng: -77.028333\n          });\n          $('#gmap_routes_start').click(function(e){\n            e.preventDefault();\n            map.travelRoute({\n              origin: [-12.044012922866312, -77.02470665341184],\n              destination: [-12.090814532191756, -77.02271108990476],\n              travelMode: 'driving',\n              step: function(e){\n                $('#gmap_routes_instructions').append('<li>'+e.instructions+'</li>');\n                $('#gmap_routes_instructions li:eq('+e.step_number+')').delay(800*e.step_number).fadeIn(500, function(){\n                  map.setCenter(e.end_location.lat(), e.end_location.lng());\n                  map.drawPolyline({\n                    path: e.path,\n                    strokeColor: '#131540',\n                    strokeOpacity: 0.6,\n                    strokeWeight: 6\n                  });\n                  App.scrollTo($(this));\n                });\n              }\n            });\n         });   \n     }\n\n    return {\n        //main function to initiate map samples\n        init: function () {\n            mapBasic();\n            mapMarker();\n            mapGeolocation();\n            mapGeocoding();\n            mapPolylines();\n            mapPolygone();\n            mapRoutes();\n        }\n\n    };\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/gmaps.js",
    "content": "/*!\n * GMaps.js v0.2.30\n * http://hpneo.github.com/gmaps/\n *\n * Copyright 2012, Gustavo Leon\n * Released under the MIT License.\n */\n\nif(window.google && window.google.maps){\n\n  var GMaps = (function(global) {\n    \"use strict\";\n\n    var doc = document;\n    var getElementById = function(id, context) {\n      var ele\n      if('jQuery' in global && context){\n        ele = $(\"#\"+id.replace('#', ''), context)[0]\n      }else{\n        ele = doc.getElementById(id.replace('#', ''));\n      };\n      return ele;\n    };\n\n    var GMaps = function(options) {\n      var self = this;\n      var events_that_hide_context_menu = ['bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', 'resize', 'tilesloaded', 'zoom_changed'];\n      var events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'];\n\n      window.context_menu = {};\n\n      if (typeof(options.el) === 'string' || typeof(options.div) === 'string') {\n        this.el = getElementById(options.el || options.div, options.context);\n      } else {\n        this.el = options.el || options.div;\n      };\n      this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth;\n      this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight;\n\n      this.controls = [];\n      this.overlays = [];\n      this.layers = []; // array with kml and ft layers, can be as many\n      this.singleLayers = {}; // object with the other layers, only one per layer\n      this.markers = [];\n      this.polylines = [];\n      this.routes = [];\n      this.polygons = [];\n      this.infoWindow = null;\n      this.overlay_el = null;\n      this.zoom = options.zoom || 15;\n\n      var markerClusterer = options.markerClusterer;\n\n      //'Hybrid', 'Roadmap', 'Satellite' or 'Terrain'\n      var mapType;\n\n      if (options.mapType) {\n        mapType = google.maps.MapTypeId[options.mapType.toUpperCase()];\n      }\n      else {\n        mapType = google.maps.MapTypeId.ROADMAP;\n      }\n\n      var map_center = new google.maps.LatLng(options.lat, options.lng);\n\n      delete options.el;\n      delete options.lat;\n      delete options.lng;\n      delete options.mapType;\n      delete options.width;\n      delete options.height;\n      delete options.markerClusterer;\n\n      var zoomControlOpt = options.zoomControlOpt || {\n        style: 'DEFAULT',\n        position: 'TOP_LEFT'\n      };\n\n      var zoomControl = options.zoomControl || true,\n          zoomControlStyle = zoomControlOpt.style || 'DEFAULT',\n          zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT',\n          panControl = options.panControl || true,\n          mapTypeControl = options.mapTypeControl || true,\n          scaleControl = options.scaleControl || true,\n          streetViewControl = options.streetViewControl || true,\n          overviewMapControl = overviewMapControl || true;\n\n      var map_options = {};\n\n      var map_base_options = {\n        zoom: this.zoom,\n        center: map_center,\n        mapTypeId: mapType\n      };\n\n      var map_controls_options = {\n        panControl: panControl,\n        zoomControl: zoomControl,\n        zoomControlOptions: {\n          style: google.maps.ZoomControlStyle[zoomControlStyle], // DEFAULT LARGE SMALL\n          position: google.maps.ControlPosition[zoomControlPosition]\n        },\n        mapTypeControl: mapTypeControl,\n        scaleControl: scaleControl,\n        streetViewControl: streetViewControl,\n        overviewMapControl: overviewMapControl\n      }\n\n      if(options.disableDefaultUI != true)\n        map_base_options = extend_object(map_base_options, map_controls_options);\n\n      map_options = extend_object(map_base_options, options);\n\n      for(var i = 0; i < events_that_hide_context_menu.length; i++) {\n        delete map_options[events_that_hide_context_menu[i]];\n      }\n\n      for(var i = 0; i < events_that_doesnt_hide_context_menu.length; i++) {\n        delete map_options[events_that_doesnt_hide_context_menu[i]];\n      }\n\n      this.map = new google.maps.Map(this.el, map_options);\n\n      if(markerClusterer) {\n        this.markerClusterer = markerClusterer.apply(this, [this.map]);\n      }\n\n      // Context menus\n      var buildContextMenuHTML = function(control, e) {\n        var html = '';\n        var options = window.context_menu[control];\n        for (var i in options){\n          if (options.hasOwnProperty(i)){\n            var option = options[i];\n            html += '<li><a id=\"' + control + '_' + i + '\" href=\"#\">' +\n              option.title + '</a></li>';\n          }\n        }\n\n        if(!getElementById('gmaps_context_menu')) return;\n          \n        var context_menu_element = getElementById('gmaps_context_menu');\n        context_menu_element.innerHTML = html;\n\n        var context_menu_items = context_menu_element.getElementsByTagName('a');\n\n        var context_menu_items_count = context_menu_items.length;\n\n        for(var i = 0; i < context_menu_items_count; i++){\n          var context_menu_item = context_menu_items[i];\n\n          var assign_menu_item_action = function(ev){\n            ev.preventDefault();\n\n            options[this.id.replace(control + '_', '')].action.apply(self, [e]);\n            self.hideContextMenu();\n          };\n\n          google.maps.event.clearListeners(context_menu_item, 'click');\n          google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false);\n        }\n\n        var left = self.el.offsetLeft + e.pixel.x - 15;\n        var top = self.el.offsetTop + e.pixel.y - 15;\n\n        context_menu_element.style.left = left + \"px\";\n        context_menu_element.style.top = top + \"px\";\n\n        context_menu_element.style.display = 'block';\n      };\n\n      var buildContextMenu = function(control, e) {\n        if (control === 'marker') {\n          e.pixel = {};\n          var overlay = new google.maps.OverlayView();\n          overlay.setMap(self.map);\n          overlay.draw = function() {\n            var projection = overlay.getProjection();\n            var position = e.marker.getPosition();\n            e.pixel = projection.fromLatLngToContainerPixel(position);\n\n            buildContextMenuHTML(control, e);\n          };\n        }\n        else {\n          buildContextMenuHTML(control, e);\n        }\n      };\n\n      this.setContextMenu = function(options) {\n        window.context_menu[options.control] = {};\n\n        for (var i in options.options){\n          if (options.options.hasOwnProperty(i)){\n            var option = options.options[i];\n            window.context_menu[options.control][option.name] = {\n              title: option.title,\n              action: option.action\n            };\n          }\n        }\n\n        var ul = doc.createElement('ul');\n        \n        ul.id = 'gmaps_context_menu';\n        ul.style.display = 'none';\n        ul.style.position = 'absolute';\n        ul.style.minWidth = '100px';\n        ul.style.background = 'white';\n        ul.style.listStyle = 'none';\n        ul.style.padding = '8px';\n        ul.style.boxShadow = '2px 2px 6px #ccc';\n\n        doc.body.appendChild(ul);\n\n        var context_menu_element = getElementById('gmaps_context_menu');\n\n        google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) {\n          if(!ev.relatedTarget || !this.contains(ev.relatedTarget)){\n            window.setTimeout(function(){\n              context_menu_element.style.display = 'none';\n            }, 400);\n          }\n        }, false);\n      };\n\n      this.hideContextMenu = function() {\n        var context_menu_element = getElementById('gmaps_context_menu');\n        if(context_menu_element)\n          context_menu_element.style.display = 'none';\n      };\n\n      //Events\n\n      var setupListener = function(object, name) {\n        google.maps.event.addListener(object, name, function(e){\n          if(e == undefined) {\n            e = this;\n          }\n\n          options[name].apply(this, [e]);\n\n          self.hideContextMenu();\n        });\n      }\n\n      for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) {\n        var name = events_that_hide_context_menu[ev];\n\n        if (name in options) {\n          setupListener(this.map, name);\n        }\n      }\n\n      for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) {\n        var name = events_that_doesnt_hide_context_menu[ev];\n\n        if (name in options) {\n          setupListener(this.map, name);\n        }\n      }\n\n      google.maps.event.addListener(this.map, 'rightclick', function(e) {\n        if (options.rightclick) {\n          options.rightclick.apply(this, [e]);\n        }\n\n        if(window.context_menu['map'] != undefined) {\n          buildContextMenu('map', e);\n        }\n      });\n\n      this.refresh = function() {\n        google.maps.event.trigger(this.map, 'resize');\n      };\n\n      this.fitZoom = function() {\n        var latLngs = [];\n        var markers_length = this.markers.length;\n\n        for(var i=0; i < markers_length; i++) {\n          latLngs.push(this.markers[i].getPosition());\n        }\n\n        this.fitLatLngBounds(latLngs);\n      };\n\n      this.fitLatLngBounds = function(latLngs) {\n        var total = latLngs.length;\n        var bounds = new google.maps.LatLngBounds();\n\n        for(var i=0; i < total; i++) {\n          bounds.extend(latLngs[i]);\n        }\n\n        this.map.fitBounds(bounds);\n      };\n\n      // Map methods\n      this.setCenter = function(lat, lng, callback) {\n        this.map.panTo(new google.maps.LatLng(lat, lng));\n        if (callback) {\n          callback();\n        }\n      };\n\n      this.getElement = function() {\n        return this.el;\n      };\n\n      this.zoomIn = function(value) {\n        this.zoom = this.map.getZoom() + value;\n        this.map.setZoom(this.zoom);\n      };\n\n      this.zoomOut = function(value) {\n        this.zoom = this.map.getZoom() - value;\n        this.map.setZoom(this.zoom);\n      };\n\n      var native_methods = [];\n\n      for(var method in this.map){\n        if(typeof(this.map[method]) == 'function' && !this[method]){\n          native_methods.push(method);\n        }\n      }\n\n      for(var i=0; i < native_methods.length; i++){\n        (function(gmaps, scope, method_name) {\n          gmaps[method_name] = function(){\n            return scope[method_name].apply(scope, arguments);\n          };\n        })(this, this.map, native_methods[i]);\n      }\n\n      this.createControl = function(options) {\n        var control = doc.createElement('div');\n\n        control.style.cursor = 'pointer';\n        control.style.fontFamily = 'Arial, sans-serif';\n        control.style.fontSize = '13px';\n        control.style.boxShadow = 'rgba(0, 0, 0, 0.398438) 0px 2px 4px';\n\n        for(var option in options.style)\n          control.style[option] = options.style[option];\n\n        if(options.id) {\n          control.id = options.id;\n        }\n\n        if(options.classes) {\n          control.className = options.classes;\n        }\n\n        if(options.content) {\n          control.innerHTML = options.content;\n        }\n\n        for (var ev in options.events) {\n          (function(object, name) {\n            google.maps.event.addDomListener(object, name, function(){\n              options.events[name].apply(this, [this]);\n            });\n          })(control, ev);\n        }\n\n        control.index = 1;\n\n        return control;\n      };\n\n      this.addControl = function(options) {\n        var position = google.maps.ControlPosition[options.position.toUpperCase()];\n\n        delete options.position;\n\n        var control = this.createControl(options);\n        this.controls.push(control);\n        this.map.controls[position].push(control);\n\n        return control;\n      };\n\n      // Markers\n      this.createMarker = function(options) {\n        if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {\n          var self = this;\n          var details = options.details;\n          var fences = options.fences;\n          var outside = options.outside;\n\n          var base_options = {\n            position: new google.maps.LatLng(options.lat, options.lng),\n            map: null\n          };\n\n          delete options.lat;\n          delete options.lng;\n          delete options.fences;\n          delete options.outside;\n\n          var marker_options = extend_object(base_options, options);\n\n          var marker = new google.maps.Marker(marker_options);\n\n          marker.fences = fences;\n\n          if (options.infoWindow) {\n            marker.infoWindow = new google.maps.InfoWindow(options.infoWindow);\n\n            var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'];\n\n            for (var ev = 0; ev < info_window_events.length; ev++) {\n              (function(object, name) {\n                google.maps.event.addListener(object, name, function(e){\n                  if (options.infoWindow[name])\n                    options.infoWindow[name].apply(this, [e]);\n                });\n              })(marker.infoWindow, info_window_events[ev]);\n            }\n          }\n\n          var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed'];\n\n          var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'];\n\n          for (var ev = 0; ev < marker_events.length; ev++) {\n            (function(object, name) {\n              google.maps.event.addListener(object, name, function(){\n                if (options[name])\n                  options[name].apply(this, [this]);\n              });\n            })(marker, marker_events[ev]);\n          }\n\n          for (var ev = 0; ev < marker_events_with_mouse.length; ev++) {\n            (function(map, object, name) {\n              google.maps.event.addListener(object, name, function(me){\n                if(!me.pixel){\n                  me.pixel = map.getProjection().fromLatLngToPoint(me.latLng)\n                }\n                if (options[name])\n                  options[name].apply(this, [me]);\n              });\n            })(this.map, marker, marker_events_with_mouse[ev]);\n          }\n\n          google.maps.event.addListener(marker, 'click', function() {\n            this.details = details;\n\n            if (options.click) {\n              options.click.apply(this, [this]);\n            }\n\n            if (marker.infoWindow) {\n              self.hideInfoWindows();\n              marker.infoWindow.open(self.map, marker);\n            }\n          });\n\n          google.maps.event.addListener(marker, 'rightclick', function(e) {\n            e.marker = this;\n\n            if (options.rightclick) {\n              options.rightclick.apply(this, [e]);\n            }\n\n            if (window.context_menu['marker'] != undefined) {\n              buildContextMenu('marker', e);\n            }\n          });\n\n          if (options.dragend || marker.fences) {\n            google.maps.event.addListener(marker, 'dragend', function() {\n              if (marker.fences) {\n                self.checkMarkerGeofence(marker, function(m, f) {\n                  outside(m, f);\n                });\n              }\n            });\n          }\n\n          return marker;\n        }\n        else {\n          throw 'No latitude or longitude defined';\n        }\n      };\n\n      this.addMarker = function(options) {\n        var marker;\n        if(options.hasOwnProperty('gm_accessors_')) {\n          // Native google.maps.Marker object\n          marker = options;\n        }\n        else {\n          if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {\n            marker = this.createMarker(options);\n          }\n          else {\n            throw 'No latitude or longitude defined';\n          }\n        }\n\n        marker.setMap(this.map);\n\n        if(this.markerClusterer)\n          this.markerClusterer.addMarker(marker);\n\n        this.markers.push(marker);\n\n        return marker;\n      };\n\n      this.addMarkers = function(array) {\n        for (var i=0, marker; marker=array[i]; i++) {\n          this.addMarker(marker);\n        }\n        return this.markers;\n      };\n\n      this.hideInfoWindows = function() {\n        for (var i=0, marker; marker=this.markers[i]; i++){\n          if (marker.infoWindow){\n            marker.infoWindow.close();\n          }\n        }\n      };\n\n      this.removeMarker = function(marker) {\n        for(var i = 0; i < this.markers.length; i++) {\n          if(this.markers[i] === marker) {\n            this.markers[i].setMap(null);\n            this.markers.splice(i, 1);\n\n            break;\n          }\n        }\n\n        return marker;\n      };\n\n      this.removeMarkers = function(collection) {\n        var collection = (collection || this.markers);\n          \n        for(var i=0;i < this.markers.length; i++){\n          if(this.markers[i] === collection[i])\n            this.markers[i].setMap(null);\n        }\n\n        var new_markers = [];\n\n        for(var i=0;i < this.markers.length; i++){\n          if(this.markers[i].getMap() != null)\n            new_markers.push(this.markers[i]);\n        }\n\n        this.markers = new_markers;\n      };\n\n      // Overlays\n\n      this.drawOverlay = function(options) {\n        var overlay = new google.maps.OverlayView();\n        overlay.setMap(self.map);\n\n        var auto_show = true;\n\n        if(options.auto_show != null)\n          auto_show = options.auto_show;\n\n        overlay.onAdd = function() {\n          var el = doc.createElement('div');\n          el.style.borderStyle = \"none\";\n          el.style.borderWidth = \"0px\";\n          el.style.position = \"absolute\";\n          el.style.zIndex = 100;\n          el.innerHTML = options.content;\n\n          overlay.el = el;\n\n          var panes = this.getPanes();\n          if (!options.layer) {\n            options.layer = 'overlayLayer';\n          }\n          var overlayLayer = panes[options.layer];\n          overlayLayer.appendChild(el);\n\n          var stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown'];\n\n          for (var ev = 0; ev < stop_overlay_events.length; ev++) {\n            (function(object, name) {\n              google.maps.event.addDomListener(object, name, function(e){\n                if(navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {\n                  e.cancelBubble = true;\n                  e.returnValue = false;\n                }\n                else {\n                  e.stopPropagation();\n                }\n              });\n            })(el, stop_overlay_events[ev]);\n          }\n\n          google.maps.event.trigger(this, 'ready');\n        };\n\n        overlay.draw = function() {\n          var projection = this.getProjection();\n          var pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng));\n\n          options.horizontalOffset = options.horizontalOffset || 0;\n          options.verticalOffset = options.verticalOffset || 0;\n\n          var el = overlay.el;\n          var content = el.children[0];\n\n          var content_height = content.clientHeight;\n          var content_width = content.clientWidth;\n\n          switch (options.verticalAlign) {\n            case 'top':\n              el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px';\n              break;\n            default:\n            case 'middle':\n              el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px';\n              break;\n            case 'bottom':\n              el.style.top = (pixel.y + options.verticalOffset) + 'px';\n              break;\n          }\n\n          switch (options.horizontalAlign) {\n            case 'left':\n              el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px';\n              break;\n            default:\n            case 'center':\n              el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px';\n              break;\n            case 'right':\n              el.style.left = (pixel.x + options.horizontalOffset) + 'px';\n              break;\n          }\n\n          el.style.display = auto_show ? 'block' : 'none';\n\n          if(!auto_show){\n            options.show.apply(this, [el]);\n          }\n        };\n\n        overlay.onRemove = function() {\n          var el = overlay.el;\n\n          if(options.remove){\n            options.remove.apply(this, [el]);\n          }\n          else{\n            overlay.el.parentNode.removeChild(overlay.el);\n            overlay.el = null;\n          }\n        };\n\n        self.overlays.push(overlay);\n        return overlay;\n      };\n\n      this.removeOverlay = function(overlay) {\n        for(var i = 0; i < this.overlays.length; i++) {\n          if(this.overlays[i] === overlay) {\n            this.overlays[i].setMap(null);\n            this.overlays.splice(i, 1);\n\n            break;\n          }\n        }\n      };\n\n      this.removeOverlays = function() {\n        for (var i=0, item; item=self.overlays[i]; i++){\n          item.setMap(null);\n        }\n        self.overlays = [];\n      };\n\n      // Geometry\n\n      this.drawPolyline = function(options) {\n        var path = [];\n        var points = options.path;\n\n        if (points.length){\n          if (points[0][0] === undefined){\n            path = points;\n          }\n          else {\n            for (var i=0, latlng; latlng=points[i]; i++){\n              path.push(new google.maps.LatLng(latlng[0], latlng[1]));\n            }\n          }\n        }\n\n        var polyline_options = {\n          map: this.map,\n          path: path,\n          strokeColor: options.strokeColor,\n          strokeOpacity: options.strokeOpacity,\n          strokeWeight: options.strokeWeight,\n          geodesic: options.geodesic,\n          clickable: true,\n          editable: false,\n          visible: true\n        };\n\n        if(options.hasOwnProperty(\"clickable\"))\n          polyline_options.clickable = options.clickable;\n\n        if(options.hasOwnProperty(\"editable\"))\n          polyline_options.editable = options.editable;\n\n        if(options.hasOwnProperty(\"icons\"))\n          polyline_options.icons = options.icons;\n\n        if(options.hasOwnProperty(\"zIndex\"))\n          polyline_options.zIndex = options.zIndex;\n\n        var polyline = new google.maps.Polyline(polyline_options);\n\n        var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polyline_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polyline, polyline_events[ev]);\n        }\n\n        this.polylines.push(polyline);\n\n        return polyline;\n      };\n\n      this.removePolyline = function(polyline) {\n        for(var i = 0; i < this.polylines.length; i++) {\n          if(this.polylines[i] === polyline) {\n            this.polylines[i].setMap(null);\n            this.polylines.splice(i, 1);\n            \n            break;\n          }\n        }\n      };\n\n      this.removePolylines = function() {\n        for (var i=0, item; item=self.polylines[i]; i++){\n          item.setMap(null);\n        }\n        self.polylines = [];\n      };\n\n      this.drawCircle = function(options) {\n        options =  extend_object({\n          map: this.map,\n          center: new google.maps.LatLng(options.lat, options.lng)\n        }, options);\n\n        delete options.lat;\n        delete options.lng;\n        var polygon = new google.maps.Circle(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n\n        this.polygons.push(polygon);\n\n        return polygon;\n      };\n      \n      this.drawRectangle = function(options) {\n        options = extend_object({\n          map: this.map\n        }, options);\n\n        var latLngBounds = new google.maps.LatLngBounds(\n          new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]),\n          new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1])\n        );\n        \n        options.bounds = latLngBounds;\n\n        var polygon = new google.maps.Rectangle(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n        \n        this.polygons.push(polygon);\n        \n        return polygon;\n      };\n\n      this.drawPolygon = function(options) {\n        var useGeoJSON = false;\n        if(options.hasOwnProperty(\"useGeoJSON\"))\n          useGeoJSON = options.useGeoJSON;\n\n        delete options.useGeoJSON;\n\n        options = extend_object({\n          map: this.map\n        }, options);\n\n        if(useGeoJSON == false)\n          options.paths = [options.paths.slice(0)];\n\n        if(options.paths.length > 0) {\n          if(options.paths[0].length > 0) {\n            options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON));\n          }\n        }\n\n        var polygon = new google.maps.Polygon(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n\n        this.polygons.push(polygon);\n\n        return polygon;\n      };\n\n      this.removePolygon = function(polygon) {\n        for(var i = 0; i < this.polygons.length; i++) {\n          if(this.polygons[i] === polygon) {\n            this.polygons[i].setMap(null);\n            this.polygons.splice(i, 1);\n            \n            break;\n          }\n        }\n      };\n\n      this.removePolygons = function() {\n        for (var i=0, item; item=self.polygons[i]; i++){\n          item.setMap(null);\n        }\n        self.polygons = [];\n      };\n\n      // Fusion Tables\n\n      this.getFromFusionTables = function(options) {\n        var events = options.events;\n\n        delete options.events;\n\n        var fusion_tables_options = options;\n\n        var layer = new google.maps.FusionTablesLayer(fusion_tables_options);\n\n        for (var ev in events) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              events[name].apply(this, [e]);\n            });\n          })(layer, ev);\n        }\n\n        this.layers.push(layer);\n\n        return layer;\n      };\n\n      this.loadFromFusionTables = function(options) {\n        var layer = this.getFromFusionTables(options);\n        layer.setMap(this.map);\n\n        return layer;\n      };\n\n      // KML\n\n      this.getFromKML = function(options) {\n        var url = options.url;\n        var events = options.events;\n\n        delete options.url;\n        delete options.events;\n\n        var kml_options = options;\n\n        var layer = new google.maps.KmlLayer(url, kml_options);\n\n        for (var ev in events) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              events[name].apply(this, [e]);\n            });\n          })(layer, ev);\n        }\n\n        this.layers.push(layer);\n\n        return layer;\n      };\n\n      this.loadFromKML = function(options) {\n        var layer = this.getFromKML(options);\n        layer.setMap(this.map);\n\n        return layer;\n      };\n\n      // Routes\n\n      var travelMode, unitSystem;\n      this.getRoutes = function(options) {\n        switch (options.travelMode) {\n        case 'bicycling':\n          travelMode = google.maps.TravelMode.BICYCLING;\n          break;\n        case 'transit':\n          travelMode = google.maps.TravelMode.TRANSIT;\n          break;\n        case 'driving':\n          travelMode = google.maps.TravelMode.DRIVING;\n          break;\n        // case 'walking':\n        default:\n          travelMode = google.maps.TravelMode.WALKING;\n          break;\n        }\n\n        if (options.unitSystem === 'imperial') {\n          unitSystem = google.maps.UnitSystem.IMPERIAL;\n        }\n        else {\n          unitSystem = google.maps.UnitSystem.METRIC;\n        }\n\n        var base_options = {\n          avoidHighways: false,\n          avoidTolls: false,\n          optimizeWaypoints: false,\n          waypoints: []\n        };\n\n        var request_options =  extend_object(base_options, options);\n\n        request_options.origin = new google.maps.LatLng(options.origin[0], options.origin[1]);\n        request_options.destination = new google.maps.LatLng(options.destination[0], options.destination[1]);\n        request_options.travelMode = travelMode;\n        request_options.unitSystem = unitSystem;\n\n        delete request_options.callback;\n\n        var self = this;\n        var service = new google.maps.DirectionsService();\n\n        service.route(request_options, function(result, status) {\n          if (status === google.maps.DirectionsStatus.OK) {\n            for (var r in result.routes) {\n              if (result.routes.hasOwnProperty(r)) {\n                self.routes.push(result.routes[r]);\n              }\n            }\n          }\n          if (options.callback) {\n            options.callback(self.routes);\n          }\n        });\n      };\n\n      this.removeRoutes = function() {\n        this.routes = [];\n      };\n\n      this.getElevations = function(options) {\n        options = extend_object({\n          locations: [],\n          path : false,\n          samples : 256\n        }, options);\n\n        if(options.locations.length > 0) {\n          if(options.locations[0].length > 0) {\n            options.locations = array_flat(array_map([options.locations], arrayToLatLng,  false));\n          }\n        }\n\n        var callback = options.callback;\n        delete options.callback;\n\n        var service = new google.maps.ElevationService();\n\n        //location request\n        if (!options.path) {\n          delete options.path;\n          delete options.samples;\n          service.getElevationForLocations(options, function(result, status){\n            if (callback && typeof(callback) === \"function\") {\n              callback(result, status);\n            }\n          });\n        //path request\n        } else {\n          var pathRequest = {\n            path : options.locations,\n            samples : options.samples\n          };\n\n          service.getElevationAlongPath(pathRequest, function(result, status){\n           if (callback && typeof(callback) === \"function\") {\n              callback(result, status);\n            }\n          });\n        }\n      };\n\n      // Alias for the method \"drawRoute\"\n      this.cleanRoute = this.removePolylines;\n\n      this.drawRoute = function(options) {\n        var self = this;\n        this.getRoutes({\n          origin: options.origin,\n          destination: options.destination,\n          travelMode: options.travelMode,\n          waypoints: options.waypoints,\n          unitSystem: options.unitSystem,\n          callback: function(e) {\n            if (e.length > 0) {\n              self.drawPolyline({\n                path: e[e.length - 1].overview_path,\n                strokeColor: options.strokeColor,\n                strokeOpacity: options.strokeOpacity,\n                strokeWeight: options.strokeWeight\n              });\n              if (options.callback) {\n                options.callback(e[e.length - 1]);\n              }\n            }\n          }\n        });\n      };\n\n      this.travelRoute = function(options) {\n        if (options.origin && options.destination) {\n          this.getRoutes({\n            origin: options.origin,\n            destination: options.destination,\n            travelMode: options.travelMode,\n            waypoints : options.waypoints,\n            callback: function(e) {\n              //start callback\n              if (e.length > 0 && options.start) {\n                options.start(e[e.length - 1]);\n              }\n\n              //step callback\n              if (e.length > 0 && options.step) {\n                var route = e[e.length - 1];\n                if (route.legs.length > 0) {\n                  var steps = route.legs[0].steps;\n                  for (var i=0, step; step=steps[i]; i++) {\n                    step.step_number = i;\n                    options.step(step, (route.legs[0].steps.length - 1));\n                  }\n                }\n              }\n\n              //end callback\n              if (e.length > 0 && options.end) {\n                 options.end(e[e.length - 1]);\n              }\n            }\n          });\n        }\n        else if (options.route) {\n          if (options.route.legs.length > 0) {\n            var steps = options.route.legs[0].steps;\n            for (var i=0, step; step=steps[i]; i++) {\n              step.step_number = i;\n              options.step(step);\n            }\n          }\n        }\n      };\n\n      this.drawSteppedRoute = function(options) {\n        if (options.origin && options.destination) {\n          this.getRoutes({\n            origin: options.origin,\n            destination: options.destination,\n            travelMode: options.travelMode,\n            waypoints : options.waypoints,\n            callback: function(e) {\n              //start callback\n              if (e.length > 0 && options.start) {\n                options.start(e[e.length - 1]);\n              }\n\n              //step callback\n              if (e.length > 0 && options.step) {\n                var route = e[e.length - 1];\n                if (route.legs.length > 0) {\n                  var steps = route.legs[0].steps;\n                  for (var i=0, step; step=steps[i]; i++) {\n                    step.step_number = i;\n                    self.drawPolyline({\n                      path: step.path,\n                      strokeColor: options.strokeColor,\n                      strokeOpacity: options.strokeOpacity,\n                      strokeWeight: options.strokeWeight\n                    });\n                    options.step(step, (route.legs[0].steps.length - 1));\n                  }\n                }\n              }\n\n              //end callback\n              if (e.length > 0 && options.end) {\n                 options.end(e[e.length - 1]);\n              }\n            }\n          });\n        }\n        else if (options.route) {\n          if (options.route.legs.length > 0) {\n            var steps = options.route.legs[0].steps;\n            for (var i=0, step; step=steps[i]; i++) {\n              step.step_number = i;\n              self.drawPolyline({\n                path: step.path,\n                strokeColor: options.strokeColor,\n                strokeOpacity: options.strokeOpacity,\n                strokeWeight: options.strokeWeight\n              });\n              options.step(step);\n            }\n          }\n        }\n      };\n\n      // Geofence\n\n      this.checkGeofence = function(lat, lng, fence) {\n        return fence.containsLatLng(new google.maps.LatLng(lat, lng));\n      };\n\n      this.checkMarkerGeofence = function(marker, outside_callback) {\n        if (marker.fences) {\n          for (var i=0, fence; fence=marker.fences[i]; i++) {\n            var pos = marker.getPosition();\n            if (!self.checkGeofence(pos.lat(), pos.lng(), fence)) {\n              outside_callback(marker, fence);\n            }\n          }\n        }\n      };\n\n      // Layers\n\n      this.addLayer = function(layerName, options) {\n        //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places'];\n        options = options || {};\n        var layer;\n          \n        switch(layerName) {\n          case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); \n            break;\n          case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); \n            break;\n          case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); \n            break;\n          case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); \n            break;\n          case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); \n            break;\n          case 'panoramio': \n              this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer();\n              layer.setTag(options.filter);\n              delete options.filter;\n\n              //click event\n              if(options.click) {\n                google.maps.event.addListener(layer, 'click', function(event) {\n                  options.click(event);\n                  delete options.click;\n                });\n              }\n            break;\n            case 'places': \n              this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map);\n\n              //search and  nearbySearch callback, Both are the same\n              if(options.search || options.nearbySearch) {\n                var placeSearchRequest  = {\n                  bounds : options.bounds || null,\n                  keyword : options.keyword || null,\n                  location : options.location || null,\n                  name : options.name || null,\n                  radius : options.radius || null,\n                  rankBy : options.rankBy || null,\n                  types : options.types || null\n                };\n\n                if(options.search) {\n                  layer.search(placeSearchRequest, options.search);\n                }\n\n                if(options.nearbySearch) {\n                  layer.nearbySearch(placeSearchRequest, options.nearbySearch);\n                }\n              }\n\n              //textSearch callback\n              if(options.textSearch) {\n                var textSearchRequest  = {\n                  bounds : options.bounds || null,\n                  location : options.location || null,\n                  query : options.query || null,\n                  radius : options.radius || null\n                };\n                \n                layer.textSearch(textSearchRequest, options.textSearch);\n              }\n            break;\n        }\n\n        if(layer !== undefined) {\n          if(typeof layer.setOptions == 'function') {\n            layer.setOptions(options);\n          }\n          if(typeof layer.setMap == 'function') {\n            layer.setMap(this.map);\n          }\n\n          return layer;\n        }\n      };\n\n      this.removeLayer = function(layerName) {\n        if(this.singleLayers[layerName] !== undefined) {\n           this.singleLayers[layerName].setMap(null);\n           delete this.singleLayers[layerName];\n        }\n      };\n      \n      // Static Maps\n\n      this.toImage = function(options) {\n        var options = options || {};\n        var static_map_options = {};\n        static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight];\n        static_map_options['lat'] = this.getCenter().lat();\n        static_map_options['lng'] = this.getCenter().lng();\n\n        if(this.markers.length > 0) {\n          static_map_options['markers'] = [];\n          for(var i=0; i < this.markers.length; i++) {\n            static_map_options['markers'].push({\n              lat: this.markers[i].getPosition().lat(),\n              lng: this.markers[i].getPosition().lng()\n            });\n          }\n        }\n\n        if(this.polylines.length > 0) {\n          var polyline = this.polylines[0];\n          static_map_options['polyline'] = {};\n          static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath());\n          static_map_options['polyline']['strokeColor'] = polyline.strokeColor\n          static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity\n          static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight\n        }\n        \n        return GMaps.staticMapURL(static_map_options);\n      };\n\n      // Map Types\n\n      this.addMapType = function(mapTypeId, options) {\n        if(options.hasOwnProperty(\"getTileUrl\") && typeof(options[\"getTileUrl\"]) == \"function\") {\n          options.tileSize = options.tileSize || new google.maps.Size(256, 256);\n          \n          var mapType = new google.maps.ImageMapType(options);\n\n          this.map.mapTypes.set(mapTypeId, mapType);\n        }\n        else {\n          throw \"'getTileUrl' function required\";\n        }\n      };\n\n      this.addOverlayMapType = function(options) {\n        if(options.hasOwnProperty(\"getTile\") && typeof(options[\"getTile\"]) == \"function\") {\n          var overlayMapTypeIndex = options.index;\n\n          delete options.index;\n\n          this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options);\n        }\n        else {\n          throw \"'getTile' function required\";\n        }\n      };\n\n      this.removeOverlayMapType = function(overlayMapTypeIndex) {\n        this.map.overlayMapTypes.removeAt(overlayMapTypeIndex);\n      };\n\n      // Styles\n      \n      this.addStyle = function(options) {       \n        var styledMapType = new google.maps.StyledMapType(options.styles, options.styledMapName);\n        \n        this.map.mapTypes.set(options.mapTypeId, styledMapType);\n      };\n      \n      this.setStyle = function(mapTypeId) {     \n        this.map.setMapTypeId(mapTypeId);\n      };\n\n      // StreetView\n\n      this.createPanorama = function(streetview_options) {\n        if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) {\n          streetview_options.lat = this.getCenter().lat();\n          streetview_options.lng = this.getCenter().lng();\n        }\n\n        this.panorama = GMaps.createPanorama(streetview_options);\n\n        this.map.setStreetView(this.panorama);\n\n        return this.panorama;\n      };\n    };\n\n    GMaps.createPanorama = function(options) {\n      var el = getElementById(options.el, options.context);\n\n      options.position = new google.maps.LatLng(options.lat, options.lng);\n\n      delete options.el;\n      delete options.context;\n      delete options.lat;\n      delete options.lng;\n\n      var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'];\n\n      var streetview_options = extend_object({visible : true}, options);\n\n      for(var i = 0; i < streetview_events.length; i++) {\n        delete streetview_options[streetview_events[i]];\n      }\n\n      var panorama = new google.maps.StreetViewPanorama(el, streetview_options);\n\n      for(var i = 0; i < streetview_events.length; i++) {\n        (function(object, name) {\n          google.maps.event.addListener(object, name, function(){\n            if (options[name]) {\n              options[name].apply(this);\n            }\n          });\n        })(panorama, streetview_events[i]);\n      }\n\n      return panorama;\n    };\n\n    GMaps.Route = function(options) {\n      this.map = options.map;\n      this.route = options.route;\n      this.step_count = 0;\n      this.steps = this.route.legs[0].steps;\n      this.steps_length = this.steps.length;\n\n      this.polyline = this.map.drawPolyline({\n        path: new google.maps.MVCArray(),\n        strokeColor: options.strokeColor,\n        strokeOpacity: options.strokeOpacity,\n        strokeWeight: options.strokeWeight\n      }).getPath();\n\n      this.back = function() {\n        if (this.step_count > 0) {\n          this.step_count--;\n          var path = this.route.legs[0].steps[this.step_count].path;\n          for (var p in path){\n            if (path.hasOwnProperty(p)){\n              this.polyline.pop();\n            }\n          }\n        }\n      };\n\n      this.forward = function() {\n        if (this.step_count < this.steps_length) {\n          var path = this.route.legs[0].steps[this.step_count].path;\n          for (var p in path){\n            if (path.hasOwnProperty(p)){\n              this.polyline.push(path[p]);\n            }\n          }\n          this.step_count++;\n        }\n      };\n    };\n\n    // Geolocation (Modern browsers only)\n    GMaps.geolocate = function(options) {\n      var complete_callback = options.always || options.complete;\n\n      if (navigator.geolocation) {\n        navigator.geolocation.getCurrentPosition(function(position) {\n          options.success(position);\n\n          if (complete_callback) {\n            complete_callback();\n          }\n        }, function(error) {\n          options.error(error);\n\n          if (complete_callback) {\n            complete_callback();\n          }\n        }, options.options);\n      }\n      else {\n        options.not_supported();\n\n        if (complete_callback) {\n          complete_callback();\n        }\n      }\n    };\n\n    // Geocoding\n    GMaps.geocode = function(options) {\n      this.geocoder = new google.maps.Geocoder();\n      var callback = options.callback;\n      if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) {\n        options.latLng = new google.maps.LatLng(options.lat, options.lng);\n      }\n\n      delete options.lat;\n      delete options.lng;\n      delete options.callback;\n      this.geocoder.geocode(options, function(results, status) {\n        callback(results, status);\n      });\n    };\n\n    // Static maps\n    GMaps.staticMapURL = function(options){\n      var parameters = [];\n      var data;\n\n      var static_root = '../../../../maps.googleapis.com/maps/api/staticmap';\n      if (options.url){\n        static_root = options.url;\n        delete options.url;\n      }\n      static_root += '?';\n\n      var markers = options.markers;\n      delete options.markers;\n      if (!markers && options.marker){\n        markers = [options.marker];\n        delete options.marker;\n      }\n\n      var polyline = options.polyline;\n      delete options.polyline;\n\n      /** Map options **/\n      if (options.center){\n        parameters.push('center=' + options.center);\n        delete options.center;\n      }\n      else if (options.address){\n        parameters.push('center=' + options.address);\n        delete options.address;\n      }\n      else if (options.lat){\n        parameters.push(['center=', options.lat, ',', options.lng].join(''));\n        delete options.lat;\n        delete options.lng;\n      }\n      else if (options.visible){\n        var visible = encodeURI(options.visible.join('|'));\n        parameters.push('visible=' + visible);\n      }\n\n      var size = options.size;\n      if (size){\n        if (size.join){\n          size = size.join('x');\n        }\n        delete options.size;\n      }\n      else {\n        size = '630x300';\n      }\n      parameters.push('size=' + size);\n\n      if (!options.zoom){\n        options.zoom = 15;\n      }\n\n      var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true;\n      delete options.sensor;\n      parameters.push('sensor=' + sensor);\n\n      for (var param in options){\n        if (options.hasOwnProperty(param)){\n          parameters.push(param + '=' + options[param]);\n        }\n      }\n\n      /** Markers **/\n      if (markers){\n        var marker, loc;\n\n        for (var i=0; data=markers[i]; i++){\n          marker = [];\n\n          if (data.size && data.size !== 'normal'){\n            marker.push('size:' + data.size);\n          }\n          else if (data.icon){\n            marker.push('icon:' + encodeURI(data.icon));\n          }\n\n          if (data.color){\n            marker.push('color:' + data.color.replace('#', '0x'));\n          }\n\n          if (data.label){\n            marker.push('label:' + data.label[0].toUpperCase());\n          }\n\n          loc = (data.address ? data.address : data.lat + ',' + data.lng);\n\n          if (marker.length || i === 0){\n            marker.push(loc);\n            marker = marker.join('|');\n            parameters.push('markers=' + encodeURI(marker));\n          }\n          // New marker without styles\n          else {\n            marker = parameters.pop() + encodeURI('|' + loc);\n            parameters.push(marker);\n          }\n        }\n      }\n\n      /** Polylines **/\n      function parseColor(color, opacity){\n        if (color[0] === '#'){\n          color = color.replace('#', '0x');\n\n          if (opacity){\n            opacity = parseFloat(opacity);\n            opacity = Math.min(1, Math.max(opacity, 0));\n            if (opacity === 0){\n              return '0x00000000';\n            }\n            opacity = (opacity * 255).toString(16);\n            if (opacity.length === 1){\n              opacity += opacity;\n            }\n\n            color = color.slice(0,8) + opacity;\n          }\n        }\n        return color;\n      }\n\n      if (polyline){\n        data = polyline;\n        polyline = [];\n\n        if (data.strokeWeight){\n          polyline.push('weight:' + parseInt(data.strokeWeight, 10));\n        }\n\n        if (data.strokeColor){\n          var color = parseColor(data.strokeColor, data.strokeOpacity);\n          polyline.push('color:' + color);\n        }\n\n        if (data.fillColor){\n          var fillcolor = parseColor(data.fillColor, data.fillOpacity);\n          polyline.push('fillcolor:' + fillcolor);\n        }\n\n        var path = data.path;\n        if (path.join){\n          for (var j=0, pos; pos=path[j]; j++){\n            polyline.push(pos.join(','));\n          }\n        }\n        else {\n          polyline.push('enc:' + path);\n        }\n\n        polyline = polyline.join('|');\n        parameters.push('path=' + encodeURI(polyline));\n      }\n\n      parameters = parameters.join('&');\n      return static_root + parameters;\n    };\n\n    //==========================\n    // Polygon containsLatLng\n    // https://github.com/tparkin/Google-Maps-Point-in-Polygon\n    // Poygon getBounds extension - google-maps-extensions\n    // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js\n    if (!google.maps.Polygon.prototype.getBounds) {\n      google.maps.Polygon.prototype.getBounds = function(latLng) {\n        var bounds = new google.maps.LatLngBounds();\n        var paths = this.getPaths();\n        var path;\n\n        for (var p = 0; p < paths.getLength(); p++) {\n          path = paths.getAt(p);\n          for (var i = 0; i < path.getLength(); i++) {\n            bounds.extend(path.getAt(i));\n          }\n        }\n\n        return bounds;\n      };\n    }\n\n    if (!google.maps.Polygon.prototype.containsLatLng) {\n      // Polygon containsLatLng - method to determine if a latLng is within a polygon\n      google.maps.Polygon.prototype.containsLatLng = function(latLng) {\n        // Exclude points outside of bounds as there is no way they are in the poly\n        var bounds = this.getBounds();\n\n        if (bounds !== null && !bounds.contains(latLng)) {\n          return false;\n        }\n\n        // Raycast point in polygon method\n        var inPoly = false;\n\n        var numPaths = this.getPaths().getLength();\n        for (var p = 0; p < numPaths; p++) {\n          var path = this.getPaths().getAt(p);\n          var numPoints = path.getLength();\n          var j = numPoints - 1;\n\n          for (var i = 0; i < numPoints; i++) {\n            var vertex1 = path.getAt(i);\n            var vertex2 = path.getAt(j);\n\n            if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {\n              if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {\n                inPoly = !inPoly;\n              }\n            }\n\n            j = i;\n          }\n        }\n\n        return inPoly;\n      };\n    }\n\n    google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {\n      return this.contains(latLng);\n    };\n\n    google.maps.Marker.prototype.setFences = function(fences) {\n      this.fences = fences;\n    };\n\n    google.maps.Marker.prototype.addFence = function(fence) {\n      this.fences.push(fence);\n    };\n\n    return GMaps;\n  }(this));\n\n  var coordsToLatLngs = function(coords, useGeoJSON) {\n    var first_coord = coords[0];\n    var second_coord = coords[1];\n\n    if(useGeoJSON) {\n      first_coord = coords[1];\n      second_coord = coords[0];\n    }\n\n    return new google.maps.LatLng(first_coord, second_coord);\n  };\n\n  var arrayToLatLng = function(coords, useGeoJSON) {\n    for(var i=0; i < coords.length; i++) {\n      if(coords[i].length > 0 && typeof(coords[i][0]) != \"number\") {\n        coords[i] = arrayToLatLng(coords[i], useGeoJSON);\n      }\n      else {\n        coords[i] = coordsToLatLngs(coords[i], useGeoJSON);\n      }\n    }\n\n    return coords;\n  };\n\n  var extend_object = function(obj, new_obj) {\n    if(obj === new_obj) return obj;\n\n    for(var name in new_obj) {\n      obj[name] = new_obj[name];\n    }\n\n    return obj;\n  };\n\n  var replace_object = function(obj, replace) {\n    if(obj === replace) return obj;\n\n    for(var name in replace) {\n      if(obj[name] != undefined)\n        obj[name] = replace[name];\n    }\n\n    return obj;\n  };\n\n  var array_map = function(array, callback) {\n    var original_callback_params = Array.prototype.slice.call(arguments, 2);\n\n    if (Array.prototype.map && array.map === Array.prototype.map) {\n      return Array.prototype.map.call(array, function(item) {\n        callback_params = original_callback_params;\n        callback_params.splice(0, 0, item);\n\n        return callback.apply(this, callback_params);\n      });\n    }\n    else {\n      var array_return = [];\n      var array_length = array.length;\n\n      for(var i = 0; i < array_length; i++) {\n        callback_params = original_callback_params;\n        callback_params = callback_params.splice(0, 0, array[i]);\n        array_return.push(callback.apply(this, callback_params));\n      }\n\n      return array_return;\n    }\n  };\n\n  var array_flat = function(array) {\n    new_array = [];\n\n    for(var i=0; i < array.length; i++) {\n      new_array = new_array.concat(array[i]);\n    }\n\n    return new_array;\n  };\n\n}"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/gritter.js",
    "content": "var Gritter = function () {\n\n    $('#add-sticky').click(function(){\n\n        var unique_id = $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a sticky notice!',\n            // (string | mandatory) the text inside the notification\n            text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: true,\n            // (int | optional) the time you want it to be alive for before fading out\n            time: '',\n            // (string | optional) the class name you want to apply to that specific message\n            class_name: 'my-sticky-class'\n        });\n\n        // You can have it return a unique id, this can be used to manually remove it later using\n        /*\n         setTimeout(function(){\n\n         $.gritter.remove(unique_id, {\n         fade: true,\n         speed: 'slow'\n         });\n\n         }, 6000)\n         */\n\n        return false;\n\n    });\n\n    $('#add-regular').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a regular notice!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (int | optional) the time you want it to be alive for before fading out\n            time: ''\n        });\n\n        return false;\n\n    });\n\n    $('#add-max').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice with a max of 3 on screen at one time!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (function) before the gritter notice is opened\n            before_open: function(){\n                if($('.gritter-item-wrapper').length == 3)\n                {\n                    // Returning false prevents a new gritter from opening\n                    return false;\n                }\n            }\n        });\n\n        return false;\n\n    });\n\n    $('#add-without-image').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice without an image!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.'\n        });\n\n        return false;\n    });\n\n    $('#add-gritter-light').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a light notification',\n            // (string | mandatory) the text inside the notification\n            text: 'Just add a \"gritter-light\" class_name to your $.gritter.add or globally to $.gritter.options.class_name',\n            class_name: 'gritter-light'\n        });\n\n        return false;\n    });\n\n    $(\"#remove-all\").click(function(){\n\n        $.gritter.removeAll();\n        return false;\n\n    });\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/home-chartjs.js",
    "content": "var Script = function () {\n\n\n    var doughnutData = [\n        {\n            value: 30,\n            color:\"#F7464A\"\n        },\n        {\n            value : 50,\n            color : \"#46BFBD\"\n        },\n        {\n            value : 100,\n            color : \"#FDB45C\"\n        },\n        {\n            value : 40,\n            color : \"#949FB1\"\n        },\n        {\n            value : 120,\n            color : \"#4D5360\"\n        }\n\n    ];\n    var lineChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n\n    new Chart(document.getElementById(\"doughnut\").getContext(\"2d\")).Doughnut(doughnutData);\n    new Chart(document.getElementById(\"line\").getContext(\"2d\")).Line(lineChartData);\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/home-page-calender.js",
    "content": "var Script = function () {\n\n//    calender\n\n    var date = new Date();\n    var d = date.getDate();\n    var m = date.getMonth();\n    var y = date.getFullYear();\n\n    $('#calendar').fullCalendar({\n        header: {\n            left: 'prev,next today',\n            center: 'title',\n            right: 'month,basicWeek,basicDay'\n        },\n        editable: true,\n        events: [\n            {\n                title: 'All Day Event',\n                start: new Date(y, m, 1)\n            },\n            {\n                title: 'Long Event',\n                start: new Date(y, m, d-5),\n                end: new Date(y, m, d-2)\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d-3, 16, 0),\n                allDay: false\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d+4, 16, 0),\n                allDay: false\n            },\n            {\n                title: 'Meeting',\n                start: new Date(y, m, d, 10, 30),\n                allDay: false\n            },\n            {\n                title: 'Lunch',\n                start: new Date(y, m, d, 12, 0),\n                end: new Date(y, m, d, 14, 0),\n                allDay: false\n            },\n            {\n                title: 'Birthday Party',\n                start: new Date(y, m, d+1, 19, 0),\n                end: new Date(y, m, d+1, 22, 30),\n                allDay: false\n            },\n            {\n                title: 'Click for Google',\n                start: new Date(y, m, 28),\n                end: new Date(y, m, 29),\n                url: '../../../../google.com/default.htm'\n            }\n        ]\n    });\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/jQuery.dualListBox-1.3.js",
    "content": "﻿/*\n*       Developed by Justin Mead\n*       ©2011 MeadMiracle\n*\t\twww.meadmiracle.com / meadmiracle@gmail.com\n*       Version 1.3\n*       Testing: IE8/Windows XP\n*                Firefox/Windows XP\n*                Chrome/Windows XP\n*       Licensed under the Creative Commons GPL http://creativecommons.org/licenses/GPL/2.0/\n*\n*       OPTIONS LISTING:\n*           *box1View, box2View         - the id attributes of the VISIBLE listboxes\n*           *box1Storage, box2Storage   - the id attributes of the HIDDEN listboxes (used for filtering)\n*           *box1Filter, box2Filter     - the id attributes of the textboxes used to filter the lists\n*           *box1Clear, box2Clear       - the id attributes of the elements used to clear/reset the filters\n*           *box1Counter, box2Counter   - the id attributes of the elements used to display counts of visible/total items (used when filtering)\n*           *to1, to2                   - the id attributes of the elements used to transfer only selected items between boxes\n*           *allTo1, allTo2             - the id attributes of the elements used to transfer ALL (visible) items between boxes\n*           *transferMode               - the type of transfer to perform on items (see heading TRANSFER MODES)\n*           *sortBy                     - the attribute to use when sorting items (values: 'text' or 'value')\n*           *useFilters                 - allow the filtering of items in either box (true/false)\n*           *useCounters                - use the visible/total counters (true/false)\n*           *useSorting                 - sort items after executing a transfer (true/false)\n*           *selectOnSubmit             - select items in box 2 when the form is submitted (true/false)\n*\n*       All options have default values, and as such, are optional.  Check the 'settings' JSON object below to see the defaults.\n*\n*       TRANSFER MODES:\n*           * 'move' - In this mode, items will be removed from the box in which they currently reside and moved to the other box. This is the default.\n*           * 'copy' - In this mode, items in box 1 will ALWAYS remain in box 1 (unless they are hidden by filtering).  When they are selected for transfer\n*                      they will be copied to box 2 and will be given the class 'copiedOption' in box 1 (my default styling for this class is yellow background\n*                      but you may choose whatever styling suits you).  If they are then transferred from box 2, they disappear from box 2, and the 'copiedOption'\n*                      class is removed from the corresponding option in box 1.\n*\n*/\n\n(function($) {\n    var settings = new Array();\n    var group1 = new Array();\n    var group2 = new Array();\n    var onSort = new Array();\n\n    //the main method that the end user will execute to setup the DLB\n    $.configureBoxes = function(options) {\n        //define default settings\n        var index = settings.push({\n            box1View: 'box1View',\n            box1Storage: 'box1Storage',\n            box1Filter: 'box1Filter',\n            box1Clear: 'box1Clear',\n            box1Counter: 'box1Counter',\n            box2View: 'box2View',\n            box2Storage: 'box2Storage',\n            box2Filter: 'box2Filter',\n            box2Clear: 'box2Clear',\n            box2Counter: 'box2Counter',\n            to1: 'to1',\n            allTo1: 'allTo1',\n            to2: 'to2',\n            allTo2: 'allTo2',\n            transferMode: 'move',\n            sortBy: 'text',\n            useFilters: true,\n            useCounters: true,\n            useSorting: true,\n            selectOnSubmit: true\n        });\n\n        index--;\n\n        //merge default settings w/ user defined settings (with user-defined settings overriding defaults)\n        $.extend(settings[index], options);\n\n        //define box groups\n        group1.push({\n            view: settings[index].box1View,\n            storage: settings[index].box1Storage,\n            filter: settings[index].box1Filter,\n            clear: settings[index].box1Clear,\n            counter: settings[index].box1Counter,\n            index: index\n        });\n        group2.push({\n            view: settings[index].box2View,\n            storage: settings[index].box2Storage,\n            filter: settings[index].box2Filter,\n            clear: settings[index].box2Clear,\n            counter: settings[index].box2Counter,\n            index: index\n        });\n\n        //define sort function\n        if (settings[index].sortBy == 'text') {\n            onSort.push(function(a, b) {\n                var aVal = a.text.toLowerCase();\n                var bVal = b.text.toLowerCase();\n                if (aVal < bVal) { return -1; }\n                if (aVal > bVal) { return 1; }\n                return 0;\n            });\n        } else {\n            onSort.push(function(a, b) {\n                var aVal = a.value.toLowerCase();\n                var bVal = b.value.toLowerCase();\n                if (aVal < bVal) { return -1; }\n                if (aVal > bVal) { return 1; }\n                return 0;\n            });\n        }\n\n        //configure events\n        if (settings[index].useFilters) {\n            $('#' + group1[index].filter).keyup(function() {\n                Filter(group1[index]);\n            });\n            $('#' + group2[index].filter).keyup(function() {\n                Filter(group2[index]);\n            });\n            $('#' + group1[index].clear).click(function() {\n                ClearFilter(group1[index]);\n            });\n            $('#' + group2[index].clear).click(function() {\n                ClearFilter(group2[index]);\n            });\n        }\n        if (IsMoveMode(settings[index])) {\n            $('#' + group2[index].view).dblclick(function() {\n                MoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].to1).click(function() {\n                MoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].allTo1).click(function() {\n                MoveAll(group2[index], group1[index]);\n            });\n        } else {\n            $('#' + group2[index].view).dblclick(function() {\n                RemoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].to1).click(function() {\n                RemoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].allTo1).click(function() {\n                RemoveAll(group2[index], group1[index]);\n            });\n        }\n        $('#' + group1[index].view).dblclick(function() {\n            MoveSelected(group1[index], group2[index]);\n        });\n        $('#' + settings[index].to2).click(function() {\n            MoveSelected(group1[index], group2[index]);\n        });\n        $('#' + settings[index].allTo2).click(function() {\n            MoveAll(group1[index], group2[index]);\n        });\n\n        //initialize the counters\n        if (settings[index].useCounters) {\n            UpdateLabel(group1[index]);\n            UpdateLabel(group2[index]);\n        }\n\n        //pre-sort item sets\n        if (settings[index].useSorting) {\n            SortOptions(group1[index]);\n            SortOptions(group2[index]);\n        }\n\n        //hide the storage boxes\n        $('#' + group1[index].storage + ',#' + group2[index].storage).css('display', 'none');\n\n        //attach onSubmit functionality if desired\n        if (settings[index].selectOnSubmit) {\n            $('#' + settings[index].box2View).closest('form').submit(function() {\n                $('#' + settings[index].box2View).children('option').attr('selected', 'selected');\n            });\n        }\n    };\n\n    function UpdateLabel(group) {\n        var showingCount = $(\"#\" + group.view + \" option\").size();\n        var hiddenCount = $(\"#\" + group.storage + \" option\").size();\n        $(\"#\" + group.counter).text('Showing ' + showingCount + ' of ' + (showingCount + hiddenCount));\n    }\n\n    function Filter(group) {\n        var index = group.index;\n        var filterLower;\n        if (settings[index].useFilters) {\n            filterLower = $('#' + group.filter).val().toString().toLowerCase();\n        } else {\n            filterLower = '';\n        }\n        $('#' + group.view + ' option').filter(function(i) {\n            var toMatch = $(this).text().toString().toLowerCase();\n            return toMatch.indexOf(filterLower) == -1;\n        }).appendTo('#' + group.storage);\n        $('#' + group.storage + ' option').filter(function(i) {\n            var toMatch = $(this).text().toString().toLowerCase();\n            return toMatch.indexOf(filterLower) != -1;\n        }).appendTo('#' + group.view);\n        try {\n            $('#' + group.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        if (settings[index].useSorting) { SortOptions(group); }\n        if (settings[index].useCounters) { UpdateLabel(group); }\n    }\n\n    function SortOptions(group) {\n        var $toSortOptions = $('#' + group.view + ' option');\n        $toSortOptions.sort(onSort[group.index]);\n        $('#' + group.view).empty().append($toSortOptions);\n    }\n\n    function MoveSelected(fromGroup, toGroup) {\n        if (IsMoveMode(settings[fromGroup.index])) {\n            $('#' + fromGroup.view + ' option:selected').appendTo('#' + toGroup.view);\n        } else {\n            $('#' + fromGroup.view + ' option:selected:not([class*=copiedOption])').clone().appendTo('#' + toGroup.view).end().end().addClass('copiedOption');\n        }\n        try {\n            $('#' + fromGroup.view + ' option,#' + toGroup.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(toGroup);\n        if (settings[fromGroup.index].useCounters) { UpdateLabel(fromGroup); }\n    }\n\n    function MoveAll(fromGroup, toGroup) {\n        if (IsMoveMode(settings[fromGroup.index])) {\n            $('#' + fromGroup.view + ' option').appendTo('#' + toGroup.view);\n        } else {\n            $('#' + fromGroup.view + ' option:not([class*=copiedOption])').clone().appendTo('#' + toGroup.view).end().end().addClass('copiedOption');\n        }\n        try {\n            $('#' + fromGroup.view + ' option,#' + toGroup.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(toGroup);\n        if (settings[fromGroup.index].useCounters) { UpdateLabel(fromGroup); }\n    }\n\n    function RemoveSelected(removeGroup, otherGroup) {\n        $('#' + otherGroup.view + ' option.copiedOption').add('#' + otherGroup.storage + ' option.copiedOption').remove();\n        try {\n            $('#' + removeGroup.view + ' option:selected').appendTo('#' + otherGroup.view).removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        $('#' + removeGroup.view + ' option').add('#' + removeGroup.storage + ' option').clone().addClass('copiedOption').appendTo('#' + otherGroup.view);\n        Filter(otherGroup);\n        if (settings[removeGroup.index].useCounters) { UpdateLabel(removeGroup); }\n    }\n\n    function RemoveAll(removeGroup, otherGroup) {\n        $('#' + otherGroup.view + ' option.copiedOption').add('#' + otherGroup.storage + ' option.copiedOption').remove();\n        try {\n            $('#' + removeGroup.storage + ' option').clone().addClass('copiedOption').add('#' + removeGroup.view + ' option').appendTo('#' + otherGroup.view).removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(otherGroup);\n        if (settings[removeGroup.index].useCounters) { UpdateLabel(removeGroup); }\n    }\n\n    function ClearFilter(group) {\n        $('#' + group.filter).val('');\n        $('#' + group.storage + ' option').appendTo('#' + group.view);\n        try {\n            $('#' + group.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        if (settings[group.index].useSorting) { SortOptions(group); }\n        if (settings[group.index].useCounters) { UpdateLabel(group); }\n    }\n\n    function IsMoveMode(currSettings) {\n        return currSettings.transferMode == 'move';\n    }\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/jquery.blockui.js",
    "content": "/*!\n * jQuery blockUI plugin\n * Version 2.53 (01-NOV-2012)\n * @requires jQuery v1.3 or later\n *\n * Examples at: http://malsup.com/jquery/block/\n * Copyright (c) 2007-2012 M. Alsup\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n * Thanks to Amir-Hossein Sobhi for some excellent contributions!\n */\n\n;(function() {\n\"use strict\";\n\n\tfunction setup($) {\n\t\tif (/^1\\.(0|1|2)/.test($.fn.jquery)) {\n\t\t\t/*global alert:true */\n\t\t\talert('blockUI requires jQuery v1.3 or later!  You are using v' + $.fn.jquery);\n\t\t\treturn;\n\t\t}\n\n\t\t$.fn._fadeIn = $.fn.fadeIn;\n\n\t\tvar noOp = $.noop || function() {};\n\n\t\t// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle\n\t\t// retarded userAgent strings on Vista)\n\t\tvar msie = /MSIE/.test(navigator.userAgent);\n\t\tvar ie6  = /MSIE 6.0/.test(navigator.userAgent);\n\t\tvar mode = document.documentMode || 0;\n\t\t// var setExpr = msie && (($.browser.version < 8 && !mode) || mode < 8);\n\t\tvar setExpr = $.isFunction( document.createElement('div').style.setExpression );\n\n\t\t// global $ methods for blocking/unblocking the entire page\n\t\t$.blockUI   = function(opts) { install(window, opts); };\n\t\t$.unblockUI = function(opts) { remove(window, opts); };\n\n\t\t// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)\n\t\t$.growlUI = function(title, message, timeout, onClose) {\n\t\t\tvar $m = $('<div class=\"growlUI\"></div>');\n\t\t\tif (title) $m.append('<h1>'+title+'</h1>');\n\t\t\tif (message) $m.append('<h2>'+message+'</h2>');\n\t\t\tif (timeout === undefined) timeout = 3000;\n\t\t\t$.blockUI({\n\t\t\t\tmessage: $m, fadeIn: 700, fadeOut: 1000, centerY: false,\n\t\t\t\ttimeout: timeout, showOverlay: false,\n\t\t\t\tonUnblock: onClose,\n\t\t\t\tcss: $.blockUI.defaults.growlCSS\n\t\t\t});\n\t\t};\n\n\t\t// plugin method for blocking element content\n\t\t$.fn.block = function(opts) {\n\t\t\tvar fullOpts = $.extend({}, $.blockUI.defaults, opts || {});\n\t\t\tthis.each(function() {\n\t\t\t\tvar $el = $(this);\n\t\t\t\tif (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))\n\t\t\t\t\treturn;\n\t\t\t\t$el.unblock({ fadeOut: 0 });\n\t\t\t});\n\n\t\t\treturn this.each(function() {\n\t\t\t\tif ($.css(this,'position') == 'static')\n\t\t\t\t\tthis.style.position = 'relative';\n\t\t\t\tthis.style.zoom = 1; // force 'hasLayout' in ie\n\t\t\t\tinstall(this, opts);\n\t\t\t});\n\t\t};\n\n\t\t// plugin method for unblocking element content\n\t\t$.fn.unblock = function(opts) {\n\t\t\treturn this.each(function() {\n\t\t\t\tremove(this, opts);\n\t\t\t});\n\t\t};\n\n\t\t$.blockUI.version = 2.53; // 2nd generation blocking at no extra cost!\n\n\t\t// override these in your code to change the default behavior and style\n\t\t$.blockUI.defaults = {\n\t\t\t// message displayed when blocking (use null for no message)\n\t\t\tmessage:  '<h1>Please wait...</h1>',\n\n\t\t\ttitle: null,\t\t// title string; only used when theme == true\n\t\t\tdraggable: true,\t// only used when theme == true (requires jquery-ui.js to be loaded)\n\n\t\t\ttheme: false, // set to true to use with jQuery UI themes\n\n\t\t\t// styles for the message when blocking; if you wish to disable\n\t\t\t// these and use an external stylesheet then do this in your code:\n\t\t\t// $.blockUI.defaults.css = {};\n\t\t\tcss: {\n\t\t\t\tpadding:\t0,\n\t\t\t\tmargin:\t\t0,\n\t\t\t\twidth:\t\t'30%',\n\t\t\t\ttop:\t\t'40%',\n\t\t\t\tleft:\t\t'35%',\n\t\t\t\ttextAlign:\t'center',\n\t\t\t\tcolor:\t\t'#000',\n\t\t\t\tborder:\t\t'3px solid #aaa',\n\t\t\t\tbackgroundColor:'#fff',\n\t\t\t\tcursor:\t\t'wait'\n\t\t\t},\n\n\t\t\t// minimal style set used when themes are used\n\t\t\tthemedCSS: {\n\t\t\t\twidth:\t'30%',\n\t\t\t\ttop:\t'40%',\n\t\t\t\tleft:\t'35%'\n\t\t\t},\n\n\t\t\t// styles for the overlay\n\t\t\toverlayCSS:  {\n\t\t\t\tbackgroundColor:\t'#000',\n\t\t\t\topacity:\t\t\t\t0.6,\n\t\t\t\tcursor:\t\t\t\t'wait'\n\t\t\t},\n\n\t\t\t// style to replace wait cursor before unblocking to correct issue\n\t\t\t// of lingering wait cursor\n\t\t\tcursorReset: 'default',\n\n\t\t\t// styles applied when using $.growlUI\n\t\t\tgrowlCSS: {\n\t\t\t\twidth:\t\t'350px',\n\t\t\t\ttop:\t\t'10px',\n\t\t\t\tleft:\t\t'',\n\t\t\t\tright:\t\t'10px',\n\t\t\t\tborder:\t\t'none',\n\t\t\t\tpadding:\t'5px',\n\t\t\t\topacity:\t0.6,\n\t\t\t\tcursor:\t\t'default',\n\t\t\t\tcolor:\t\t'#fff',\n\t\t\t\tbackgroundColor: '#000',\n\t\t\t\t'-webkit-border-radius':'10px',\n\t\t\t\t'-moz-border-radius':\t'10px',\n\t\t\t\t'border-radius':\t\t'10px'\n\t\t\t},\n\n\t\t\t// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w\n\t\t\t// (hat tip to Jorge H. N. de Vasconcelos)\n\t\t\t/*jshint scripturl:true */\n\t\t\tiframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',\n\n\t\t\t// force usage of iframe in non-IE browsers (handy for blocking applets)\n\t\t\tforceIframe: false,\n\n\t\t\t// z-index for the blocking overlay\n\t\t\tbaseZ: 1000,\n\n\t\t\t// set these to true to have the message automatically centered\n\t\t\tcenterX: true, // <-- only effects element blocking (page block controlled via css above)\n\t\t\tcenterY: true,\n\n\t\t\t// allow body element to be stetched in ie6; this makes blocking look better\n\t\t\t// on \"short\" pages.  disable if you wish to prevent changes to the body height\n\t\t\tallowBodyStretch: true,\n\n\t\t\t// enable if you want key and mouse events to be disabled for content that is blocked\n\t\t\tbindEvents: true,\n\n\t\t\t// be default blockUI will supress tab navigation from leaving blocking content\n\t\t\t// (if bindEvents is true)\n\t\t\tconstrainTabKey: true,\n\n\t\t\t// fadeIn time in millis; set to 0 to disable fadeIn on block\n\t\t\tfadeIn:  200,\n\n\t\t\t// fadeOut time in millis; set to 0 to disable fadeOut on unblock\n\t\t\tfadeOut:  400,\n\n\t\t\t// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock\n\t\t\ttimeout: 0,\n\n\t\t\t// disable if you don't want to show the overlay\n\t\t\tshowOverlay: true,\n\n\t\t\t// if true, focus will be placed in the first available input field when\n\t\t\t// page blocking\n\t\t\tfocusInput: true,\n\n\t\t\t// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)\n\t\t\t// no longer needed in 2012\n\t\t\t// applyPlatformOpacityRules: true,\n\n\t\t\t// callback method invoked when fadeIn has completed and blocking message is visible\n\t\t\tonBlock: null,\n\n\t\t\t// callback method invoked when unblocking has completed; the callback is\n\t\t\t// passed the element that has been unblocked (which is the window object for page\n\t\t\t// blocks) and the options that were passed to the unblock call:\n\t\t\t//\tonUnblock(element, options)\n\t\t\tonUnblock: null,\n\n\t\t\t// callback method invoked when the overlay area is clicked.\n\t\t\t// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.\n\t\t\tonOverlayClick: null,\n\n\t\t\t// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493\n\t\t\tquirksmodeOffsetHack: 4,\n\n\t\t\t// class name of the message block\n\t\t\tblockMsgClass: 'blockMsg',\n\n\t\t\t// if it is already blocked, then ignore it (don't unblock and reblock)\n\t\t\tignoreIfBlocked: false\n\t\t};\n\n\t\t// private data and functions follow...\n\n\t\tvar pageBlock = null;\n\t\tvar pageBlockEls = [];\n\n\t\tfunction install(el, opts) {\n\t\t\tvar css, themedCSS;\n\t\t\tvar full = (el == window);\n\t\t\tvar msg = (opts && opts.message !== undefined ? opts.message : undefined);\n\t\t\topts = $.extend({}, $.blockUI.defaults, opts || {});\n\n\t\t\tif (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))\n\t\t\t\treturn;\n\n\t\t\topts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});\n\t\t\tcss = $.extend({}, $.blockUI.defaults.css, opts.css || {});\n\t\t\tif (opts.onOverlayClick)\n\t\t\t\topts.overlayCSS.cursor = 'pointer';\n\n\t\t\tthemedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});\n\t\t\tmsg = msg === undefined ? opts.message : msg;\n\n\t\t\t// remove the current block (if there is one)\n\t\t\tif (full && pageBlock)\n\t\t\t\tremove(window, {fadeOut:0});\n\n\t\t\t// if an existing element is being used as the blocking content then we capture\n\t\t\t// its current place in the DOM (and current display style) so we can restore\n\t\t\t// it when we unblock\n\t\t\tif (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {\n\t\t\t\tvar node = msg.jquery ? msg[0] : msg;\n\t\t\t\tvar data = {};\n\t\t\t\t$(el).data('blockUI.history', data);\n\t\t\t\tdata.el = node;\n\t\t\t\tdata.parent = node.parentNode;\n\t\t\t\tdata.display = node.style.display;\n\t\t\t\tdata.position = node.style.position;\n\t\t\t\tif (data.parent)\n\t\t\t\t\tdata.parent.removeChild(node);\n\t\t\t}\n\n\t\t\t$(el).data('blockUI.onUnblock', opts.onUnblock);\n\t\t\tvar z = opts.baseZ;\n\n\t\t\t// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;\n\t\t\t// layer1 is the iframe layer which is used to supress bleed through of underlying content\n\t\t\t// layer2 is the overlay layer which has opacity and a wait cursor (by default)\n\t\t\t// layer3 is the message content that is displayed while blocking\n\t\t\tvar lyr1, lyr2, lyr3, s;\n\t\t\tif (msie || opts.forceIframe)\n\t\t\t\tlyr1 = $('<iframe class=\"blockUI\" style=\"z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0\" src=\"'+opts.iframeSrc+'\"></iframe>');\n\t\t\telse\n\t\t\t\tlyr1 = $('<div class=\"blockUI\" style=\"display:none\"></div>');\n\n\t\t\tif (opts.theme)\n\t\t\t\tlyr2 = $('<div class=\"blockUI blockOverlay ui-widget-overlay\" style=\"z-index:'+ (z++) +';display:none\"></div>');\n\t\t\telse\n\t\t\t\tlyr2 = $('<div class=\"blockUI blockOverlay\" style=\"z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0\"></div>');\n\n\t\t\tif (opts.theme && full) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all\" style=\"z-index:'+(z+10)+';display:none;position:fixed\">';\n\t\t\t\tif ( opts.title ) {\n\t\t\t\t\ts += '<div class=\"ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle\">'+(opts.title || '&nbsp;')+'</div>';\n\t\t\t\t}\n\t\t\t\ts += '<div class=\"ui-widget-content ui-dialog-content\"></div>';\n\t\t\t\ts += '</div>';\n\t\t\t}\n\t\t\telse if (opts.theme) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all\" style=\"z-index:'+(z+10)+';display:none;position:absolute\">';\n\t\t\t\tif ( opts.title ) {\n\t\t\t\t\ts += '<div class=\"ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle\">'+(opts.title || '&nbsp;')+'</div>';\n\t\t\t\t}  \n\t\t\t\ts += '<div class=\"ui-widget-content ui-dialog-content\"></div>';\n\t\t\t\ts += '</div>';\n\t\t\t}\n\t\t\telse if (full) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockPage\" style=\"z-index:'+(z+10)+';display:none;position:fixed\"></div>';\n\t\t\t}\n\t\t\telse {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockElement\" style=\"z-index:'+(z+10)+';display:none;position:absolute\"></div>';\n\t\t\t}\n\t\t\tlyr3 = $(s);\n\n\t\t\t// if we have a message, style it\n\t\t\tif (msg) {\n\t\t\t\tif (opts.theme) {\n\t\t\t\t\tlyr3.css(themedCSS);\n\t\t\t\t\tlyr3.addClass('ui-widget-content');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tlyr3.css(css);\n\t\t\t}\n\n\t\t\t// style the overlay\n\t\t\tif (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)\n\t\t\t\tlyr2.css(opts.overlayCSS);\n\t\t\tlyr2.css('position', full ? 'fixed' : 'absolute');\n\n\t\t\t// make iframe layer transparent in IE\n\t\t\tif (msie || opts.forceIframe)\n\t\t\t\tlyr1.css('opacity',0.0);\n\n\t\t\t//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);\n\t\t\tvar layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);\n\t\t\t$.each(layers, function() {\n\t\t\t\tthis.appendTo($par);\n\t\t\t});\n\n\t\t\tif (opts.theme && opts.draggable && $.fn.draggable) {\n\t\t\t\tlyr3.draggable({\n\t\t\t\t\thandle: '.ui-dialog-titlebar',\n\t\t\t\t\tcancel: 'li'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)\n\t\t\tvar expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);\n\t\t\tif (ie6 || expr) {\n\t\t\t\t// give body 100% height\n\t\t\t\tif (full && opts.allowBodyStretch && $.support.boxModel)\n\t\t\t\t\t$('html,body').css('height','100%');\n\n\t\t\t\t// fix ie6 issue when blocked element has a border width\n\t\t\t\tif ((ie6 || !$.support.boxModel) && !full) {\n\t\t\t\t\tvar t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');\n\t\t\t\t\tvar fixT = t ? '(0 - '+t+')' : 0;\n\t\t\t\t\tvar fixL = l ? '(0 - '+l+')' : 0;\n\t\t\t\t}\n\n\t\t\t\t// simulate fixed position\n\t\t\t\t$.each(layers, function(i,o) {\n\t\t\t\t\tvar s = o[0].style;\n\t\t\t\t\ts.position = 'absolute';\n\t\t\t\t\tif (i < 2) {\n\t\t\t\t\t\tif (full)\n\t\t\t\t\t\t\ts.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + \"px\"');\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ts.setExpression('height','this.parentNode.offsetHeight + \"px\"');\n\t\t\t\t\t\tif (full)\n\t\t\t\t\t\t\ts.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + \"px\"');\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ts.setExpression('width','this.parentNode.offsetWidth + \"px\"');\n\t\t\t\t\t\tif (fixL) s.setExpression('left', fixL);\n\t\t\t\t\t\tif (fixT) s.setExpression('top', fixT);\n\t\t\t\t\t}\n\t\t\t\t\telse if (opts.centerY) {\n\t\t\t\t\t\tif (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + \"px\"');\n\t\t\t\t\t\ts.marginTop = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!opts.centerY && full) {\n\t\t\t\t\t\tvar top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;\n\t\t\t\t\t\tvar expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + \"px\"';\n\t\t\t\t\t\ts.setExpression('top',expression);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// show the message\n\t\t\tif (msg) {\n\t\t\t\tif (opts.theme)\n\t\t\t\t\tlyr3.find('.ui-widget-content').append(msg);\n\t\t\t\telse\n\t\t\t\t\tlyr3.append(msg);\n\t\t\t\tif (msg.jquery || msg.nodeType)\n\t\t\t\t\t$(msg).show();\n\t\t\t}\n\n\t\t\tif ((msie || opts.forceIframe) && opts.showOverlay)\n\t\t\t\tlyr1.show(); // opacity is zero\n\t\t\tif (opts.fadeIn) {\n\t\t\t\tvar cb = opts.onBlock ? opts.onBlock : noOp;\n\t\t\t\tvar cb1 = (opts.showOverlay && !msg) ? cb : noOp;\n\t\t\t\tvar cb2 = msg ? cb : noOp;\n\t\t\t\tif (opts.showOverlay)\n\t\t\t\t\tlyr2._fadeIn(opts.fadeIn, cb1);\n\t\t\t\tif (msg)\n\t\t\t\t\tlyr3._fadeIn(opts.fadeIn, cb2);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (opts.showOverlay)\n\t\t\t\t\tlyr2.show();\n\t\t\t\tif (msg)\n\t\t\t\t\tlyr3.show();\n\t\t\t\tif (opts.onBlock)\n\t\t\t\t\topts.onBlock();\n\t\t\t}\n\n\t\t\t// bind key and mouse events\n\t\t\tbind(1, el, opts);\n\n\t\t\tif (full) {\n\t\t\t\tpageBlock = lyr3[0];\n\t\t\t\tpageBlockEls = $(':input:enabled:visible',pageBlock);\n\t\t\t\tif (opts.focusInput)\n\t\t\t\t\tsetTimeout(focus, 20);\n\t\t\t}\n\t\t\telse\n\t\t\t\tcenter(lyr3[0], opts.centerX, opts.centerY);\n\n\t\t\tif (opts.timeout) {\n\t\t\t\t// auto-unblock\n\t\t\t\tvar to = setTimeout(function() {\n\t\t\t\t\tif (full)\n\t\t\t\t\t\t$.unblockUI(opts);\n\t\t\t\t\telse\n\t\t\t\t\t\t$(el).unblock(opts);\n\t\t\t\t}, opts.timeout);\n\t\t\t\t$(el).data('blockUI.timeout', to);\n\t\t\t}\n\t\t}\n\n\t\t// remove the block\n\t\tfunction remove(el, opts) {\n\t\t\tvar full = (el == window);\n\t\t\tvar $el = $(el);\n\t\t\tvar data = $el.data('blockUI.history');\n\t\t\tvar to = $el.data('blockUI.timeout');\n\t\t\tif (to) {\n\t\t\t\tclearTimeout(to);\n\t\t\t\t$el.removeData('blockUI.timeout');\n\t\t\t}\n\t\t\topts = $.extend({}, $.blockUI.defaults, opts || {});\n\t\t\tbind(0, el, opts); // unbind events\n\n\t\t\tif (opts.onUnblock === null) {\n\t\t\t\topts.onUnblock = $el.data('blockUI.onUnblock');\n\t\t\t\t$el.removeData('blockUI.onUnblock');\n\t\t\t}\n\n\t\t\tvar els;\n\t\t\tif (full) // crazy selector to handle odd field errors in ie6/7\n\t\t\t\tels = $('body').children().filter('.blockUI').add('body > .blockUI');\n\t\t\telse\n\t\t\t\tels = $el.find('>.blockUI');\n\n\t\t\t// fix cursor issue\n\t\t\tif ( opts.cursorReset ) {\n\t\t\t\tif ( els.length > 1 )\n\t\t\t\t\tels[1].style.cursor = opts.cursorReset;\n\t\t\t\tif ( els.length > 2 )\n\t\t\t\t\tels[2].style.cursor = opts.cursorReset;\n\t\t\t}\n\n\t\t\tif (full)\n\t\t\t\tpageBlock = pageBlockEls = null;\n\n\t\t\tif (opts.fadeOut) {\n\t\t\t\tels.fadeOut(opts.fadeOut);\n\t\t\t\tsetTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);\n\t\t\t}\n\t\t\telse\n\t\t\t\treset(els, data, opts, el);\n\t\t}\n\n\t\t// move blocking element back into the DOM where it started\n\t\tfunction reset(els,data,opts,el) {\n\t\t\tels.each(function(i,o) {\n\t\t\t\t// remove via DOM calls so we don't lose event handlers\n\t\t\t\tif (this.parentNode)\n\t\t\t\t\tthis.parentNode.removeChild(this);\n\t\t\t});\n\n\t\t\tif (data && data.el) {\n\t\t\t\tdata.el.style.display = data.display;\n\t\t\t\tdata.el.style.position = data.position;\n\t\t\t\tif (data.parent)\n\t\t\t\t\tdata.parent.appendChild(data.el);\n\t\t\t\t$(el).removeData('blockUI.history');\n\t\t\t}\n\n\t\t\tif (typeof opts.onUnblock == 'function')\n\t\t\t\topts.onUnblock(el,opts);\n\n\t\t\t// fix issue in Safari 6 where block artifacts remain until reflow\n\t\t\tvar body = $(document.body), w = body.width(), cssW = body[0].style.width;\n\t\t\tbody.width(w-1).width(w);\n\t\t\tbody[0].style.width = cssW;\n\t\t}\n\n\t\t// bind/unbind the handler\n\t\tfunction bind(b, el, opts) {\n\t\t\tvar full = el == window, $el = $(el);\n\n\t\t\t// don't bother unbinding if there is nothing to unbind\n\t\t\tif (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))\n\t\t\t\treturn;\n\n\t\t\t$el.data('blockUI.isBlocked', b);\n\n\t\t\t// don't bind events when overlay is not in use or if bindEvents is false\n\t\t\tif (!opts.bindEvents || (b && !opts.showOverlay))\n\t\t\t\treturn;\n\n\t\t\t// bind anchors and inputs for mouse and key events\n\t\t\tvar events = 'mousedown mouseup keydown keypress touchstart touchend touchmove';\n\t\t\tif (b)\n\t\t\t\t$(document).bind(events, opts, handler);\n\t\t\telse\n\t\t\t\t$(document).unbind(events, handler);\n\n\t\t// former impl...\n\t\t//\t\tvar $e = $('a,:input');\n\t\t//\t\tb ? $e.bind(events, opts, handler) : $e.unbind(events, handler);\n\t\t}\n\n\t\t// event handler to suppress keyboard/mouse events when blocking\n\t\tfunction handler(e) {\n\t\t\t// allow tab navigation (conditionally)\n\t\t\tif (e.keyCode && e.keyCode == 9) {\n\t\t\t\tif (pageBlock && e.data.constrainTabKey) {\n\t\t\t\t\tvar els = pageBlockEls;\n\t\t\t\t\tvar fwd = !e.shiftKey && e.target === els[els.length-1];\n\t\t\t\t\tvar back = e.shiftKey && e.target === els[0];\n\t\t\t\t\tif (fwd || back) {\n\t\t\t\t\t\tsetTimeout(function(){focus(back);},10);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar opts = e.data;\n\t\t\tvar target = $(e.target);\n\t\t\tif (target.hasClass('blockOverlay') && opts.onOverlayClick)\n\t\t\t\topts.onOverlayClick();\n\n\t\t\t// allow events within the message content\n\t\t\tif (target.parents('div.' + opts.blockMsgClass).length > 0)\n\t\t\t\treturn true;\n\n\t\t\t// allow events for content that is not being blocked\n\t\t\treturn target.parents().children().filter('div.blockUI').length === 0;\n\t\t}\n\n\t\tfunction focus(back) {\n\t\t\tif (!pageBlockEls)\n\t\t\t\treturn;\n\t\t\tvar e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];\n\t\t\tif (e)\n\t\t\t\te.focus();\n\t\t}\n\n\t\tfunction center(el, x, y) {\n\t\t\tvar p = el.parentNode, s = el.style;\n\t\t\tvar l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');\n\t\t\tvar t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');\n\t\t\tif (x) s.left = l > 0 ? (l+'px') : '0';\n\t\t\tif (y) s.top  = t > 0 ? (t+'px') : '0';\n\t\t}\n\n\t\tfunction sz(el, p) {\n\t\t\treturn parseInt($.css(el,p),10)||0;\n\t\t}\n\n\t}\n\n\n\t/*global define:true */\n\tif (typeof define === 'function' && define.amd && define.amd.jQuery) {\n\t\tdefine(['jquery'], setup);\n\t} else {\n\t\tsetup(jQuery);\n\t}\n\n})();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/jquery.nicescroll.js",
    "content": "/* jquery.nicescroll 3.5.0 InuYaksa*2013 MIT http://areaaperta.com/nicescroll */(function(e){var z=!1,E=!1,L=5E3,M=2E3,y=0,N=function(){var e=document.getElementsByTagName(\"script\"),e=e[e.length-1].src.split(\"?\")[0];return 0<e.split(\"/\").length?e.split(\"/\").slice(0,-1).join(\"/\")+\"/\":\"\"}(),H=[\"ms\",\"moz\",\"webkit\",\"o\"],v=window.requestAnimationFrame||!1,w=window.cancelAnimationFrame||!1;if(!v)for(var O in H){var F=H[O];v||(v=window[F+\"RequestAnimationFrame\"]);w||(w=window[F+\"CancelAnimationFrame\"]||window[F+\"CancelRequestAnimationFrame\"])}var A=window.MutationObserver||window.WebKitMutationObserver||\n    !1,I={zindex:\"auto\",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:\"#424242\",cursorwidth:\"5px\",cursorborder:\"1px solid #fff\",cursorborderradius:\"5px\",scrollspeed:60,mousescrollstep:24,touchbehavior:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:\"\",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,\n    horizrailenabled:!0,railalign:\"right\",railvalign:\"bottom\",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:0.3,rtlmode:!1,cursordragontouch:!1,oneaxismousemode:\"auto\"},G=!1,P=function(){if(G)return G;var e=document.createElement(\"DIV\"),c={haspointerlock:\"pointerLockElement\"in document||\n    \"mozPointerLockElement\"in document||\"webkitPointerLockElement\"in document};c.isopera=\"opera\"in window;c.isopera12=c.isopera&&\"getUserMedia\"in navigator;c.isoperamini=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);c.isie=\"all\"in document&&\"attachEvent\"in e&&!c.isopera;c.isieold=c.isie&&!(\"msInterpolationMode\"in e.style);c.isie7=c.isie&&!c.isieold&&(!(\"documentMode\"in document)||7==document.documentMode);c.isie8=c.isie&&\"documentMode\"in document&&8==document.documentMode;c.isie9=\n    c.isie&&\"performance\"in window&&9<=document.documentMode;c.isie10=c.isie&&\"performance\"in window&&10<=document.documentMode;c.isie9mobile=/iemobile.9/i.test(navigator.userAgent);c.isie9mobile&&(c.isie9=!1);c.isie7mobile=!c.isie9mobile&&c.isie7&&/iemobile/i.test(navigator.userAgent);c.ismozilla=\"MozAppearance\"in e.style;c.iswebkit=\"WebkitAppearance\"in e.style;c.ischrome=\"chrome\"in window;c.ischrome22=c.ischrome&&c.haspointerlock;c.ischrome26=c.ischrome&&\"transition\"in e.style;c.cantouch=\"ontouchstart\"in\n    document.documentElement||\"ontouchstart\"in window;c.hasmstouch=window.navigator.msPointerEnabled||!1;c.ismac=/^mac$/i.test(navigator.platform);c.isios=c.cantouch&&/iphone|ipad|ipod/i.test(navigator.platform);c.isios4=c.isios&&!(\"seal\"in Object);c.isandroid=/android/i.test(navigator.userAgent);c.trstyle=!1;c.hastransform=!1;c.hastranslate3d=!1;c.transitionstyle=!1;c.hastransition=!1;c.transitionend=!1;for(var k=[\"transform\",\"msTransform\",\"webkitTransform\",\"MozTransform\",\"OTransform\"],l=0;l<k.length;l++)if(\"undefined\"!=\n    typeof e.style[k[l]]){c.trstyle=k[l];break}c.hastransform=!1!=c.trstyle;c.hastransform&&(e.style[c.trstyle]=\"translate3d(1px,2px,3px)\",c.hastranslate3d=/translate3d/.test(e.style[c.trstyle]));c.transitionstyle=!1;c.prefixstyle=\"\";c.transitionend=!1;for(var k=\"transition webkitTransition MozTransition OTransition OTransition msTransition KhtmlTransition\".split(\" \"),q=\" -webkit- -moz- -o- -o -ms- -khtml-\".split(\" \"),t=\"transitionend webkitTransitionEnd transitionend otransitionend oTransitionEnd msTransitionEnd KhtmlTransitionEnd\".split(\" \"),\n                                                                                                                                                                                                                                                                     l=0;l<k.length;l++)if(k[l]in e.style){c.transitionstyle=k[l];c.prefixstyle=q[l];c.transitionend=t[l];break}c.ischrome26&&(c.prefixstyle=q[1]);c.hastransition=c.transitionstyle;a:{k=[\"-moz-grab\",\"-webkit-grab\",\"grab\"];if(c.ischrome&&!c.ischrome22||c.isie)k=[];for(l=0;l<k.length;l++)if(q=k[l],e.style.cursor=q,e.style.cursor==q){k=q;break a}k=\"url(http://www.google.com/intl/en_ALL/mapfiles/openhand.cur),n-resize\"}c.cursorgrabvalue=k;c.hasmousecapture=\"setCapture\"in e;c.hasMutationObserver=!1!==A;return G=\n    c},Q=function(h,c){function k(){var d=b.win;if(\"zIndex\"in d)return d.zIndex();for(;0<d.length&&9!=d[0].nodeType;){var c=d.css(\"zIndex\");if(!isNaN(c)&&0!=c)return parseInt(c);d=d.parent()}return!1}function l(d,c,f){c=d.css(c);d=parseFloat(c);return isNaN(d)?(d=u[c]||0,f=3==d?f?b.win.outerHeight()-b.win.innerHeight():b.win.outerWidth()-b.win.innerWidth():1,b.isie8&&d&&(d+=1),f?d:0):d}function q(d,c,f,g){b._bind(d,c,function(b){b=b?b:window.event;var g={original:b,target:b.target||b.srcElement,type:\"wheel\",\n    deltaMode:\"MozMousePixelScroll\"==b.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){b.preventDefault?b.preventDefault():b.returnValue=!1;return!1},stopImmediatePropagation:function(){b.stopImmediatePropagation?b.stopImmediatePropagation():b.cancelBubble=!0}};\"mousewheel\"==c?(g.deltaY=-0.025*b.wheelDelta,b.wheelDeltaX&&(g.deltaX=-0.025*b.wheelDeltaX)):g.deltaY=b.detail;return f.call(d,g)},g)}function t(d,c,f){var g,e;0==d.deltaMode?(g=-Math.floor(d.deltaX*(b.opt.mousescrollstep/54)),e=-Math.floor(d.deltaY*\n    (b.opt.mousescrollstep/54))):1==d.deltaMode&&(g=-Math.floor(d.deltaX*b.opt.mousescrollstep),e=-Math.floor(d.deltaY*b.opt.mousescrollstep));c&&(b.opt.oneaxismousemode&&0==g&&e)&&(g=e,e=0);g&&(b.scrollmom&&b.scrollmom.stop(),b.lastdeltax+=g,b.debounced(\"mousewheelx\",function(){var d=b.lastdeltax;b.lastdeltax=0;b.rail.drag||b.doScrollLeftBy(d)},120));if(e){if(b.opt.nativeparentscrolling&&f&&!b.ispage&&!b.zoomactive)if(0>e){if(b.getScrollTop()>=b.page.maxh)return!0}else if(0>=b.getScrollTop())return!0;\n    b.scrollmom&&b.scrollmom.stop();b.lastdeltay+=e;b.debounced(\"mousewheely\",function(){var d=b.lastdeltay;b.lastdeltay=0;b.rail.drag||b.doScrollBy(d)},120)}d.stopImmediatePropagation();return d.preventDefault()}var b=this;this.version=\"3.5.0\";this.name=\"nicescroll\";this.me=c;this.opt={doc:e(\"body\"),win:!1};e.extend(this.opt,I);this.opt.snapbackspeed=80;if(h)for(var p in b.opt)\"undefined\"!=typeof h[p]&&(b.opt[p]=h[p]);this.iddoc=(this.doc=b.opt.doc)&&this.doc[0]?this.doc[0].id||\"\":\"\";this.ispage=/BODY|HTML/.test(b.opt.win?\n    b.opt.win[0].nodeName:this.doc[0].nodeName);this.haswrapper=!1!==b.opt.win;this.win=b.opt.win||(this.ispage?e(window):this.doc);this.docscroll=this.ispage&&!this.haswrapper?e(window):this.win;this.body=e(\"body\");this.iframe=this.isfixed=this.viewport=!1;this.isiframe=\"IFRAME\"==this.doc[0].nodeName&&\"IFRAME\"==this.win[0].nodeName;this.istextarea=\"TEXTAREA\"==this.win[0].nodeName;this.forcescreen=!1;this.canshowonmouseevent=\"scroll\"!=b.opt.autohidemode;this.page=this.view=this.onzoomout=this.onzoomin=\n    this.onscrollcancel=this.onscrollend=this.onscrollstart=this.onclick=this.ongesturezoom=this.onkeypress=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=!1;this.scroll={x:0,y:0};this.scrollratio={x:0,y:0};this.cursorheight=20;this.scrollvaluemax=0;this.observerremover=this.observer=this.scrollmom=this.scrollrunning=this.checkrtlmode=!1;do this.id=\"ascrail\"+M++;while(document.getElementById(this.id));this.hasmousefocus=this.hasfocus=this.zoomactive=this.zoom=this.selectiondrag=this.cursorfreezed=\n    this.cursor=this.rail=!1;this.visibility=!0;this.hidden=this.locked=!1;this.cursoractive=!0;this.overflowx=b.opt.overflowx;this.overflowy=b.opt.overflowy;this.nativescrollingarea=!1;this.checkarea=0;this.events=[];this.saved={};this.delaylist={};this.synclist={};this.lastdeltay=this.lastdeltax=0;this.detected=P();var g=e.extend({},this.detected);this.ishwscroll=(this.canhwscroll=g.hastransform&&b.opt.hwacceleration)&&b.haswrapper;this.istouchcapable=!1;g.cantouch&&(g.ischrome&&!g.isios&&!g.isandroid)&&\n(this.istouchcapable=!0,g.cantouch=!1);g.cantouch&&(g.ismozilla&&!g.isios&&!g.isandroid)&&(this.istouchcapable=!0,g.cantouch=!1);b.opt.enablemouselockapi||(g.hasmousecapture=!1,g.haspointerlock=!1);this.delayed=function(d,c,f,g){var e=b.delaylist[d],k=(new Date).getTime();if(!g&&e&&e.tt)return!1;e&&e.tt&&clearTimeout(e.tt);if(e&&e.last+f>k&&!e.tt)b.delaylist[d]={last:k+f,tt:setTimeout(function(){b.delaylist[d].tt=0;c.call()},f)};else if(!e||!e.tt)b.delaylist[d]={last:k,tt:0},setTimeout(function(){c.call()},\n    0)};this.debounced=function(d,c,f){var g=b.delaylist[d];(new Date).getTime();b.delaylist[d]=c;g||setTimeout(function(){var c=b.delaylist[d];b.delaylist[d]=!1;c.call()},f)};this.synched=function(d,c){b.synclist[d]=c;(function(){b.onsync||(v(function(){b.onsync=!1;for(d in b.synclist){var c=b.synclist[d];c&&c.call(b);b.synclist[d]=!1}}),b.onsync=!0)})();return d};this.unsynched=function(d){b.synclist[d]&&(b.synclist[d]=!1)};this.css=function(d,c){for(var f in c)b.saved.css.push([d,f,d.css(f)]),d.css(f,\n    c[f])};this.scrollTop=function(d){return\"undefined\"==typeof d?b.getScrollTop():b.setScrollTop(d)};this.scrollLeft=function(d){return\"undefined\"==typeof d?b.getScrollLeft():b.setScrollLeft(d)};BezierClass=function(b,c,f,g,e,k,l){this.st=b;this.ed=c;this.spd=f;this.p1=g||0;this.p2=e||1;this.p3=k||0;this.p4=l||1;this.ts=(new Date).getTime();this.df=this.ed-this.st};BezierClass.prototype={B2:function(b){return 3*b*b*(1-b)},B3:function(b){return 3*b*(1-b)*(1-b)},B4:function(b){return(1-b)*(1-b)*(1-b)},\n    getNow:function(){var b=1-((new Date).getTime()-this.ts)/this.spd,c=this.B2(b)+this.B3(b)+this.B4(b);return 0>b?this.ed:this.st+Math.round(this.df*c)},update:function(b,c){this.st=this.getNow();this.ed=b;this.spd=c;this.ts=(new Date).getTime();this.df=this.ed-this.st;return this}};if(this.ishwscroll){this.doc.translate={x:0,y:0,tx:\"0px\",ty:\"0px\"};g.hastranslate3d&&g.isios&&this.doc.css(\"-webkit-backface-visibility\",\"hidden\");var s=function(){var d=b.doc.css(g.trstyle);return d&&\"matrix\"==d.substr(0,\n    6)?d.replace(/^.*\\((.*)\\)$/g,\"$1\").replace(/px/g,\"\").split(/, +/):!1};this.getScrollTop=function(d){if(!d){if(d=s())return 16==d.length?-d[13]:-d[5];if(b.timerscroll&&b.timerscroll.bz)return b.timerscroll.bz.getNow()}return b.doc.translate.y};this.getScrollLeft=function(d){if(!d){if(d=s())return 16==d.length?-d[12]:-d[4];if(b.timerscroll&&b.timerscroll.bh)return b.timerscroll.bh.getNow()}return b.doc.translate.x};this.notifyScrollEvent=document.createEvent?function(b){var c=document.createEvent(\"UIEvents\");\n    c.initUIEvent(\"scroll\",!1,!0,window,1);b.dispatchEvent(c)}:document.fireEvent?function(b){var c=document.createEventObject();b.fireEvent(\"onscroll\");c.cancelBubble=!0}:function(b,c){};g.hastranslate3d&&b.opt.enabletranslate3d?(this.setScrollTop=function(d,c){b.doc.translate.y=d;b.doc.translate.ty=-1*d+\"px\";b.doc.css(g.trstyle,\"translate3d(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\",0px)\");c||b.notifyScrollEvent(b.win[0])},this.setScrollLeft=function(d,c){b.doc.translate.x=d;b.doc.translate.tx=-1*\n    d+\"px\";b.doc.css(g.trstyle,\"translate3d(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\",0px)\");c||b.notifyScrollEvent(b.win[0])}):(this.setScrollTop=function(d,c){b.doc.translate.y=d;b.doc.translate.ty=-1*d+\"px\";b.doc.css(g.trstyle,\"translate(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\")\");c||b.notifyScrollEvent(b.win[0])},this.setScrollLeft=function(d,c){b.doc.translate.x=d;b.doc.translate.tx=-1*d+\"px\";b.doc.css(g.trstyle,\"translate(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\")\");c||b.notifyScrollEvent(b.win[0])})}else this.getScrollTop=\n    function(){return b.docscroll.scrollTop()},this.setScrollTop=function(d){return b.docscroll.scrollTop(d)},this.getScrollLeft=function(){return b.docscroll.scrollLeft()},this.setScrollLeft=function(d){return b.docscroll.scrollLeft(d)};this.getTarget=function(b){return!b?!1:b.target?b.target:b.srcElement?b.srcElement:!1};this.hasParent=function(b,c){if(!b)return!1;for(var f=b.target||b.srcElement||b||!1;f&&f.id!=c;)f=f.parentNode||!1;return!1!==f};var u={thin:1,medium:3,thick:5};this.getOffset=function(){if(b.isfixed)return{top:parseFloat(b.win.css(\"top\")),\n    left:parseFloat(b.win.css(\"left\"))};if(!b.viewport)return b.win.offset();var d=b.win.offset(),c=b.viewport.offset();return{top:d.top-c.top+b.viewport.scrollTop(),left:d.left-c.left+b.viewport.scrollLeft()}};this.updateScrollBar=function(d){if(b.ishwscroll)b.rail.css({height:b.win.innerHeight()}),b.railh&&b.railh.css({width:b.win.innerWidth()});else{var c=b.getOffset(),f=c.top,g=c.left,f=f+l(b.win,\"border-top-width\",!0);b.win.outerWidth();b.win.innerWidth();var g=g+(b.rail.align?b.win.outerWidth()-\n    l(b.win,\"border-right-width\")-b.rail.width:l(b.win,\"border-left-width\")),e=b.opt.railoffset;e&&(e.top&&(f+=e.top),b.rail.align&&e.left&&(g+=e.left));b.locked||b.rail.css({top:f,left:g,height:d?d.h:b.win.innerHeight()});b.zoom&&b.zoom.css({top:f+1,left:1==b.rail.align?g-20:g+b.rail.width+4});b.railh&&!b.locked&&(f=c.top,g=c.left,d=b.railh.align?f+l(b.win,\"border-top-width\",!0)+b.win.innerHeight()-b.railh.height:f+l(b.win,\"border-top-width\",!0),g+=l(b.win,\"border-left-width\"),b.railh.css({top:d,left:g,\n    width:b.railh.width}))}};this.doRailClick=function(d,c,f){var g;b.locked||(b.cancelEvent(d),c?(c=f?b.doScrollLeft:b.doScrollTop,g=f?(d.pageX-b.railh.offset().left-b.cursorwidth/2)*b.scrollratio.x:(d.pageY-b.rail.offset().top-b.cursorheight/2)*b.scrollratio.y,c(g)):(c=f?b.doScrollLeftBy:b.doScrollBy,g=f?b.scroll.x:b.scroll.y,d=f?d.pageX-b.railh.offset().left:d.pageY-b.rail.offset().top,f=f?b.view.w:b.view.h,g>=d?c(f):c(-f)))};b.hasanimationframe=v;b.hascancelanimationframe=w;b.hasanimationframe?b.hascancelanimationframe||\n    (w=function(){b.cancelAnimationFrame=!0}):(v=function(b){return setTimeout(b,15-Math.floor(+new Date/1E3)%16)},w=clearInterval);this.init=function(){b.saved.css=[];if(g.isie7mobile||g.isoperamini)return!0;g.hasmstouch&&b.css(b.ispage?e(\"html\"):b.win,{\"-ms-touch-action\":\"none\"});b.zindex=\"auto\";b.zindex=!b.ispage&&\"auto\"==b.opt.zindex?k()||\"auto\":b.opt.zindex;!b.ispage&&\"auto\"!=b.zindex&&b.zindex>y&&(y=b.zindex);b.isie&&(0==b.zindex&&\"auto\"==b.opt.zindex)&&(b.zindex=\"auto\");if(!b.ispage||!g.cantouch&&\n    !g.isieold&&!g.isie9mobile){var d=b.docscroll;b.ispage&&(d=b.haswrapper?b.win:b.doc);g.isie9mobile||b.css(d,{\"overflow-y\":\"hidden\"});b.ispage&&g.isie7&&(\"BODY\"==b.doc[0].nodeName?b.css(e(\"html\"),{\"overflow-y\":\"hidden\"}):\"HTML\"==b.doc[0].nodeName&&b.css(e(\"body\"),{\"overflow-y\":\"hidden\"}));g.isios&&(!b.ispage&&!b.haswrapper)&&b.css(e(\"body\"),{\"-webkit-overflow-scrolling\":\"touch\"});var c=e(document.createElement(\"div\"));c.css({position:\"relative\",top:0,\"float\":\"right\",width:b.opt.cursorwidth,height:\"0px\",\n    \"background-color\":b.opt.cursorcolor,border:b.opt.cursorborder,\"background-clip\":\"padding-box\",\"-webkit-border-radius\":b.opt.cursorborderradius,\"-moz-border-radius\":b.opt.cursorborderradius,\"border-radius\":b.opt.cursorborderradius});c.hborder=parseFloat(c.outerHeight()-c.innerHeight());b.cursor=c;var f=e(document.createElement(\"div\"));f.attr(\"id\",b.id);f.addClass(\"nicescroll-rails\");var l,h,x=[\"left\",\"right\"],q;for(q in x)h=x[q],(l=b.opt.railpadding[h])?f.css(\"padding-\"+h,l+\"px\"):b.opt.railpadding[h]=\n    0;f.append(c);f.width=Math.max(parseFloat(b.opt.cursorwidth),c.outerWidth())+b.opt.railpadding.left+b.opt.railpadding.right;f.css({width:f.width+\"px\",zIndex:b.zindex,background:b.opt.background,cursor:\"default\"});f.visibility=!0;f.scrollable=!0;f.align=\"left\"==b.opt.railalign?0:1;b.rail=f;c=b.rail.drag=!1;b.opt.boxzoom&&(!b.ispage&&!g.isieold)&&(c=document.createElement(\"div\"),b.bind(c,\"click\",b.doZoom),b.zoom=e(c),b.zoom.css({cursor:\"pointer\",\"z-index\":b.zindex,backgroundImage:\"url(\"+N+\"zoomico.png)\",\n    height:18,width:18,backgroundPosition:\"0px 0px\"}),b.opt.dblclickzoom&&b.bind(b.win,\"dblclick\",b.doZoom),g.cantouch&&b.opt.gesturezoom&&(b.ongesturezoom=function(d){1.5<d.scale&&b.doZoomIn(d);0.8>d.scale&&b.doZoomOut(d);return b.cancelEvent(d)},b.bind(b.win,\"gestureend\",b.ongesturezoom)));b.railh=!1;if(b.opt.horizrailenabled){b.css(d,{\"overflow-x\":\"hidden\"});c=e(document.createElement(\"div\"));c.css({position:\"relative\",top:0,height:b.opt.cursorwidth,width:\"0px\",\"background-color\":b.opt.cursorcolor,\n    border:b.opt.cursorborder,\"background-clip\":\"padding-box\",\"-webkit-border-radius\":b.opt.cursorborderradius,\"-moz-border-radius\":b.opt.cursorborderradius,\"border-radius\":b.opt.cursorborderradius});c.wborder=parseFloat(c.outerWidth()-c.innerWidth());b.cursorh=c;var m=e(document.createElement(\"div\"));m.attr(\"id\",b.id+\"-hr\");m.addClass(\"nicescroll-rails\");m.height=Math.max(parseFloat(b.opt.cursorwidth),c.outerHeight());m.css({height:m.height+\"px\",zIndex:b.zindex,background:b.opt.background});m.append(c);\n    m.visibility=!0;m.scrollable=!0;m.align=\"top\"==b.opt.railvalign?0:1;b.railh=m;b.railh.drag=!1}b.ispage?(f.css({position:\"fixed\",top:\"0px\",height:\"100%\"}),f.align?f.css({right:\"0px\"}):f.css({left:\"0px\"}),b.body.append(f),b.railh&&(m.css({position:\"fixed\",left:\"0px\",width:\"100%\"}),m.align?m.css({bottom:\"0px\"}):m.css({top:\"0px\"}),b.body.append(m))):(b.ishwscroll?(\"static\"==b.win.css(\"position\")&&b.css(b.win,{position:\"relative\"}),d=\"HTML\"==b.win[0].nodeName?b.body:b.win,b.zoom&&(b.zoom.css({position:\"absolute\",\n    top:1,right:0,\"margin-right\":f.width+4}),d.append(b.zoom)),f.css({position:\"absolute\",top:0}),f.align?f.css({right:0}):f.css({left:0}),d.append(f),m&&(m.css({position:\"absolute\",left:0,bottom:0}),m.align?m.css({bottom:0}):m.css({top:0}),d.append(m))):(b.isfixed=\"fixed\"==b.win.css(\"position\"),d=b.isfixed?\"fixed\":\"absolute\",b.isfixed||(b.viewport=b.getViewport(b.win[0])),b.viewport&&(b.body=b.viewport,!1==/fixed|relative|absolute/.test(b.viewport.css(\"position\"))&&b.css(b.viewport,{position:\"relative\"})),\n    f.css({position:d}),b.zoom&&b.zoom.css({position:d}),b.updateScrollBar(),b.body.append(f),b.zoom&&b.body.append(b.zoom),b.railh&&(m.css({position:d}),b.body.append(m))),g.isios&&b.css(b.win,{\"-webkit-tap-highlight-color\":\"rgba(0,0,0,0)\",\"-webkit-touch-callout\":\"none\"}),g.isie&&b.opt.disableoutline&&b.win.attr(\"hideFocus\",\"true\"),g.iswebkit&&b.opt.disableoutline&&b.win.css({outline:\"none\"}));!1===b.opt.autohidemode?(b.autohidedom=!1,b.rail.css({opacity:b.opt.cursoropacitymax}),b.railh&&b.railh.css({opacity:b.opt.cursoropacitymax})):\n    !0===b.opt.autohidemode||\"leave\"===b.opt.autohidemode?(b.autohidedom=e().add(b.rail),g.isie8&&(b.autohidedom=b.autohidedom.add(b.cursor)),b.railh&&(b.autohidedom=b.autohidedom.add(b.railh)),b.railh&&g.isie8&&(b.autohidedom=b.autohidedom.add(b.cursorh))):\"scroll\"==b.opt.autohidemode?(b.autohidedom=e().add(b.rail),b.railh&&(b.autohidedom=b.autohidedom.add(b.railh))):\"cursor\"==b.opt.autohidemode?(b.autohidedom=e().add(b.cursor),b.railh&&(b.autohidedom=b.autohidedom.add(b.cursorh))):\"hidden\"==b.opt.autohidemode&&\n        (b.autohidedom=!1,b.hide(),b.locked=!1);if(g.isie9mobile)b.scrollmom=new J(b),b.onmangotouch=function(d){d=b.getScrollTop();var c=b.getScrollLeft();if(d==b.scrollmom.lastscrolly&&c==b.scrollmom.lastscrollx)return!0;var f=d-b.mangotouch.sy,g=c-b.mangotouch.sx;if(0!=Math.round(Math.sqrt(Math.pow(g,2)+Math.pow(f,2)))){var n=0>f?-1:1,e=0>g?-1:1,k=+new Date;b.mangotouch.lazy&&clearTimeout(b.mangotouch.lazy);80<k-b.mangotouch.tm||b.mangotouch.dry!=n||b.mangotouch.drx!=e?(b.scrollmom.stop(),b.scrollmom.reset(c,\n    d),b.mangotouch.sy=d,b.mangotouch.ly=d,b.mangotouch.sx=c,b.mangotouch.lx=c,b.mangotouch.dry=n,b.mangotouch.drx=e,b.mangotouch.tm=k):(b.scrollmom.stop(),b.scrollmom.update(b.mangotouch.sx-g,b.mangotouch.sy-f),b.mangotouch.tm=k,f=Math.max(Math.abs(b.mangotouch.ly-d),Math.abs(b.mangotouch.lx-c)),b.mangotouch.ly=d,b.mangotouch.lx=c,2<f&&(b.mangotouch.lazy=setTimeout(function(){b.mangotouch.lazy=!1;b.mangotouch.dry=0;b.mangotouch.drx=0;b.mangotouch.tm=0;b.scrollmom.doMomentum(30)},100)))}},f=b.getScrollTop(),\n    m=b.getScrollLeft(),b.mangotouch={sy:f,ly:f,dry:0,sx:m,lx:m,drx:0,lazy:!1,tm:0},b.bind(b.docscroll,\"scroll\",b.onmangotouch);else{if(g.cantouch||b.istouchcapable||b.opt.touchbehavior||g.hasmstouch){b.scrollmom=new J(b);b.ontouchstart=function(d){if(d.pointerType&&2!=d.pointerType)return!1;if(!b.locked){if(g.hasmstouch)for(var c=d.target?d.target:!1;c;){var f=e(c).getNiceScroll();if(0<f.length&&f[0].me==b.me)break;if(0<f.length)return!1;if(\"DIV\"==c.nodeName&&c.id==b.id)break;c=c.parentNode?c.parentNode:\n    !1}b.cancelScroll();if((c=b.getTarget(d))&&/INPUT/i.test(c.nodeName)&&/range/i.test(c.type))return b.stopPropagation(d);!(\"clientX\"in d)&&\"changedTouches\"in d&&(d.clientX=d.changedTouches[0].clientX,d.clientY=d.changedTouches[0].clientY);b.forcescreen&&(f=d,d={original:d.original?d.original:d},d.clientX=f.screenX,d.clientY=f.screenY);b.rail.drag={x:d.clientX,y:d.clientY,sx:b.scroll.x,sy:b.scroll.y,st:b.getScrollTop(),sl:b.getScrollLeft(),pt:2,dl:!1};if(b.ispage||!b.opt.directionlockdeadzone)b.rail.drag.dl=\n    \"f\";else{var f=e(window).width(),n=e(window).height(),k=Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),l=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),n=Math.max(0,l-n),f=Math.max(0,k-f);b.rail.drag.ck=!b.rail.scrollable&&b.railh.scrollable?0<n?\"v\":!1:b.rail.scrollable&&!b.railh.scrollable?0<f?\"h\":!1:!1;b.rail.drag.ck||(b.rail.drag.dl=\"f\")}b.opt.touchbehavior&&(b.isiframe&&g.isie)&&(f=b.win.position(),b.rail.drag.x+=f.left,b.rail.drag.y+=f.top);\n    b.hasmoving=!1;b.lastmouseup=!1;b.scrollmom.reset(d.clientX,d.clientY);if(!g.cantouch&&!this.istouchcapable&&!g.hasmstouch){if(!c||!/INPUT|SELECT|TEXTAREA/i.test(c.nodeName))return!b.ispage&&g.hasmousecapture&&c.setCapture(),b.opt.touchbehavior?b.cancelEvent(d):b.stopPropagation(d);/SUBMIT|CANCEL|BUTTON/i.test(e(c).attr(\"type\"))&&(pc={tg:c,click:!1},b.preventclick=pc)}}};b.ontouchend=function(d){if(d.pointerType&&2!=d.pointerType)return!1;if(b.rail.drag&&2==b.rail.drag.pt&&(b.scrollmom.doMomentum(),\n    b.rail.drag=!1,b.hasmoving&&(b.hasmoving=!1,b.lastmouseup=!0,b.hideCursor(),g.hasmousecapture&&document.releaseCapture(),!g.cantouch)))return b.cancelEvent(d)};var t=b.opt.touchbehavior&&b.isiframe&&!g.hasmousecapture;b.ontouchmove=function(d,c){if(d.pointerType&&2!=d.pointerType)return!1;if(b.rail.drag&&2==b.rail.drag.pt){if(g.cantouch&&\"undefined\"==typeof d.original)return!0;b.hasmoving=!0;b.preventclick&&!b.preventclick.click&&(b.preventclick.click=b.preventclick.tg.onclick||!1,b.preventclick.tg.onclick=\n    b.onpreventclick);d=e.extend({original:d},d);\"changedTouches\"in d&&(d.clientX=d.changedTouches[0].clientX,d.clientY=d.changedTouches[0].clientY);if(b.forcescreen){var f=d;d={original:d.original?d.original:d};d.clientX=f.screenX;d.clientY=f.screenY}f=ofy=0;if(t&&!c){var n=b.win.position(),f=-n.left;ofy=-n.top}var k=d.clientY+ofy,n=k-b.rail.drag.y,l=d.clientX+f,h=l-b.rail.drag.x,r=b.rail.drag.st-n;b.ishwscroll&&b.opt.bouncescroll?0>r?r=Math.round(r/2):r>b.page.maxh&&(r=b.page.maxh+Math.round((r-b.page.maxh)/\n    2)):(0>r&&(k=r=0),r>b.page.maxh&&(r=b.page.maxh,k=0));if(b.railh&&b.railh.scrollable){var m=b.rail.drag.sl-h;b.ishwscroll&&b.opt.bouncescroll?0>m?m=Math.round(m/2):m>b.page.maxw&&(m=b.page.maxw+Math.round((m-b.page.maxw)/2)):(0>m&&(l=m=0),m>b.page.maxw&&(m=b.page.maxw,l=0))}f=!1;if(b.rail.drag.dl)f=!0,\"v\"==b.rail.drag.dl?m=b.rail.drag.sl:\"h\"==b.rail.drag.dl&&(r=b.rail.drag.st);else{var n=Math.abs(n),h=Math.abs(h),x=b.opt.directionlockdeadzone;if(\"v\"==b.rail.drag.ck){if(n>x&&h<=0.3*n)return b.rail.drag=\n    !1,!0;h>x&&(b.rail.drag.dl=\"f\",e(\"body\").scrollTop(e(\"body\").scrollTop()))}else if(\"h\"==b.rail.drag.ck){if(h>x&&n<=0.3*h)return b.rail.drag=!1,!0;n>x&&(b.rail.drag.dl=\"f\",e(\"body\").scrollLeft(e(\"body\").scrollLeft()))}}b.synched(\"touchmove\",function(){b.rail.drag&&2==b.rail.drag.pt&&(b.prepareTransition&&b.prepareTransition(0),b.rail.scrollable&&b.setScrollTop(r),b.scrollmom.update(l,k),b.railh&&b.railh.scrollable?(b.setScrollLeft(m),b.showCursor(r,m)):b.showCursor(r),g.isie10&&document.selection.clear())});\n    g.ischrome&&b.istouchcapable&&(f=!1);if(f)return b.cancelEvent(d)}}}b.onmousedown=function(d,c){if(!(b.rail.drag&&1!=b.rail.drag.pt)){if(b.locked)return b.cancelEvent(d);b.cancelScroll();b.rail.drag={x:d.clientX,y:d.clientY,sx:b.scroll.x,sy:b.scroll.y,pt:1,hr:!!c};var f=b.getTarget(d);!b.ispage&&g.hasmousecapture&&f.setCapture();b.isiframe&&!g.hasmousecapture&&(b.saved.csspointerevents=b.doc.css(\"pointer-events\"),b.css(b.doc,{\"pointer-events\":\"none\"}));return b.cancelEvent(d)}};b.onmouseup=function(d){if(b.rail.drag&&\n    (g.hasmousecapture&&document.releaseCapture(),b.isiframe&&!g.hasmousecapture&&b.doc.css(\"pointer-events\",b.saved.csspointerevents),1==b.rail.drag.pt))return b.rail.drag=!1,b.cancelEvent(d)};b.onmousemove=function(d){if(b.rail.drag&&1==b.rail.drag.pt){if(g.ischrome&&0==d.which)return b.onmouseup(d);b.cursorfreezed=!0;if(b.rail.drag.hr){b.scroll.x=b.rail.drag.sx+(d.clientX-b.rail.drag.x);0>b.scroll.x&&(b.scroll.x=0);var c=b.scrollvaluemaxw;b.scroll.x>c&&(b.scroll.x=c)}else b.scroll.y=b.rail.drag.sy+\n    (d.clientY-b.rail.drag.y),0>b.scroll.y&&(b.scroll.y=0),c=b.scrollvaluemax,b.scroll.y>c&&(b.scroll.y=c);b.synched(\"mousemove\",function(){b.rail.drag&&1==b.rail.drag.pt&&(b.showCursor(),b.rail.drag.hr?b.doScrollLeft(Math.round(b.scroll.x*b.scrollratio.x),b.opt.cursordragspeed):b.doScrollTop(Math.round(b.scroll.y*b.scrollratio.y),b.opt.cursordragspeed))});return b.cancelEvent(d)}};if(g.cantouch||b.opt.touchbehavior)b.onpreventclick=function(d){if(b.preventclick)return b.preventclick.tg.onclick=b.preventclick.click,\n    b.preventclick=!1,b.cancelEvent(d)},b.bind(b.win,\"mousedown\",b.ontouchstart),b.onclick=g.isios?!1:function(d){return b.lastmouseup?(b.lastmouseup=!1,b.cancelEvent(d)):!0},b.opt.grabcursorenabled&&g.cursorgrabvalue&&(b.css(b.ispage?b.doc:b.win,{cursor:g.cursorgrabvalue}),b.css(b.rail,{cursor:g.cursorgrabvalue}));else{var p=function(d){if(b.selectiondrag){if(d){var c=b.win.outerHeight();d=d.pageY-b.selectiondrag.top;0<d&&d<c&&(d=0);d>=c&&(d-=c);b.selectiondrag.df=d}0!=b.selectiondrag.df&&(b.doScrollBy(2*\n    -Math.floor(b.selectiondrag.df/6)),b.debounced(\"doselectionscroll\",function(){p()},50))}};b.hasTextSelected=\"getSelection\"in document?function(){return 0<document.getSelection().rangeCount}:\"selection\"in document?function(){return\"None\"!=document.selection.type}:function(){return!1};b.onselectionstart=function(d){b.ispage||(b.selectiondrag=b.win.offset())};b.onselectionend=function(d){b.selectiondrag=!1};b.onselectiondrag=function(d){b.selectiondrag&&b.hasTextSelected()&&b.debounced(\"selectionscroll\",\n    function(){p(d)},250)}}g.hasmstouch&&(b.css(b.rail,{\"-ms-touch-action\":\"none\"}),b.css(b.cursor,{\"-ms-touch-action\":\"none\"}),b.bind(b.win,\"MSPointerDown\",b.ontouchstart),b.bind(document,\"MSPointerUp\",b.ontouchend),b.bind(document,\"MSPointerMove\",b.ontouchmove),b.bind(b.cursor,\"MSGestureHold\",function(b){b.preventDefault()}),b.bind(b.cursor,\"contextmenu\",function(b){b.preventDefault()}));this.istouchcapable&&(b.bind(b.win,\"touchstart\",b.ontouchstart),b.bind(document,\"touchend\",b.ontouchend),b.bind(document,\n    \"touchcancel\",b.ontouchend),b.bind(document,\"touchmove\",b.ontouchmove));b.bind(b.cursor,\"mousedown\",b.onmousedown);b.bind(b.cursor,\"mouseup\",b.onmouseup);b.railh&&(b.bind(b.cursorh,\"mousedown\",function(d){b.onmousedown(d,!0)}),b.bind(b.cursorh,\"mouseup\",function(d){if(!(b.rail.drag&&2==b.rail.drag.pt))return b.rail.drag=!1,b.hasmoving=!1,b.hideCursor(),g.hasmousecapture&&document.releaseCapture(),b.cancelEvent(d)}));if(b.opt.cursordragontouch||!g.cantouch&&!b.opt.touchbehavior)b.rail.css({cursor:\"default\"}),\n    b.railh&&b.railh.css({cursor:\"default\"}),b.jqbind(b.rail,\"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),b.jqbind(b.rail,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}),b.opt.sensitiverail&&(b.bind(b.rail,\"click\",function(d){b.doRailClick(d,!1,!1)}),b.bind(b.rail,\"dblclick\",function(d){b.doRailClick(d,!0,!1)}),b.bind(b.cursor,\"click\",function(d){b.cancelEvent(d)}),b.bind(b.cursor,\"dblclick\",function(d){b.cancelEvent(d)})),b.railh&&(b.jqbind(b.railh,\n    \"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),b.jqbind(b.railh,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}),b.opt.sensitiverail&&(b.bind(b.railh,\"click\",function(d){b.doRailClick(d,!1,!0)}),b.bind(b.railh,\"dblclick\",function(d){b.doRailClick(d,!0,!0)}),b.bind(b.cursorh,\"click\",function(d){b.cancelEvent(d)}),b.bind(b.cursorh,\"dblclick\",function(d){b.cancelEvent(d)})));!g.cantouch&&!b.opt.touchbehavior?(b.bind(g.hasmousecapture?b.win:document,\n    \"mouseup\",b.onmouseup),b.bind(document,\"mousemove\",b.onmousemove),b.onclick&&b.bind(document,\"click\",b.onclick),!b.ispage&&b.opt.enablescrollonselection&&(b.bind(b.win[0],\"mousedown\",b.onselectionstart),b.bind(document,\"mouseup\",b.onselectionend),b.bind(b.cursor,\"mouseup\",b.onselectionend),b.cursorh&&b.bind(b.cursorh,\"mouseup\",b.onselectionend),b.bind(document,\"mousemove\",b.onselectiondrag)),b.zoom&&(b.jqbind(b.zoom,\"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),\n    b.jqbind(b.zoom,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}))):(b.bind(g.hasmousecapture?b.win:document,\"mouseup\",b.ontouchend),b.bind(document,\"mousemove\",b.ontouchmove),b.onclick&&b.bind(document,\"click\",b.onclick),b.opt.cursordragontouch&&(b.bind(b.cursor,\"mousedown\",b.onmousedown),b.bind(b.cursor,\"mousemove\",b.onmousemove),b.cursorh&&b.bind(b.cursorh,\"mousedown\",function(d){b.onmousedown(d,!0)}),b.cursorh&&b.bind(b.cursorh,\"mousemove\",b.onmousemove)));b.opt.enablemousewheel&&\n(b.isiframe||b.bind(g.isie&&b.ispage?document:b.win,\"mousewheel\",b.onmousewheel),b.bind(b.rail,\"mousewheel\",b.onmousewheel),b.railh&&b.bind(b.railh,\"mousewheel\",b.onmousewheelhr));!b.ispage&&(!g.cantouch&&!/HTML|BODY/.test(b.win[0].nodeName))&&(b.win.attr(\"tabindex\")||b.win.attr({tabindex:L++}),b.jqbind(b.win,\"focus\",function(d){z=b.getTarget(d).id||!0;b.hasfocus=!0;b.canshowonmouseevent&&b.noticeCursor()}),b.jqbind(b.win,\"blur\",function(d){z=!1;b.hasfocus=!1}),b.jqbind(b.win,\"mouseenter\",function(d){E=\n    b.getTarget(d).id||!0;b.hasmousefocus=!0;b.canshowonmouseevent&&b.noticeCursor()}),b.jqbind(b.win,\"mouseleave\",function(){E=!1;b.hasmousefocus=!1;b.rail.drag||b.hideCursor()}))}b.onkeypress=function(d){if(b.locked&&0==b.page.maxh)return!0;d=d?d:window.e;var c=b.getTarget(d);if(c&&/INPUT|TEXTAREA|SELECT|OPTION/.test(c.nodeName)&&(!c.getAttribute(\"type\")&&!c.type||!/submit|button|cancel/i.tp))return!0;if(b.hasfocus||b.hasmousefocus&&!z||b.ispage&&!z&&!E){c=d.keyCode;if(b.locked&&27!=c)return b.cancelEvent(d);\n    var f=d.ctrlKey||!1,n=d.shiftKey||!1,g=!1;switch(c){case 38:case 63233:b.doScrollBy(72);g=!0;break;case 40:case 63235:b.doScrollBy(-72);g=!0;break;case 37:case 63232:b.railh&&(f?b.doScrollLeft(0):b.doScrollLeftBy(72),g=!0);break;case 39:case 63234:b.railh&&(f?b.doScrollLeft(b.page.maxw):b.doScrollLeftBy(-72),g=!0);break;case 33:case 63276:b.doScrollBy(b.view.h);g=!0;break;case 34:case 63277:b.doScrollBy(-b.view.h);g=!0;break;case 36:case 63273:b.railh&&f?b.doScrollPos(0,0):b.doScrollTo(0);g=!0;break;\n        case 35:case 63275:b.railh&&f?b.doScrollPos(b.page.maxw,b.page.maxh):b.doScrollTo(b.page.maxh);g=!0;break;case 32:b.opt.spacebarenabled&&(n?b.doScrollBy(b.view.h):b.doScrollBy(-b.view.h),g=!0);break;case 27:b.zoomactive&&(b.doZoom(),g=!0)}if(g)return b.cancelEvent(d)}};b.opt.enablekeyboard&&b.bind(document,g.isopera&&!g.isopera12?\"keypress\":\"keydown\",b.onkeypress);b.bind(window,\"resize\",b.lazyResize);b.bind(window,\"orientationchange\",b.lazyResize);b.bind(window,\"load\",b.lazyResize);if(g.ischrome&&\n    !b.ispage&&!b.haswrapper){var s=b.win.attr(\"style\"),f=parseFloat(b.win.css(\"width\"))+1;b.win.css(\"width\",f);b.synched(\"chromefix\",function(){b.win.attr(\"style\",s)})}b.onAttributeChange=function(d){b.lazyResize(250)};!b.ispage&&!b.haswrapper&&(!1!==A?(b.observer=new A(function(d){d.forEach(b.onAttributeChange)}),b.observer.observe(b.win[0],{childList:!0,characterData:!1,attributes:!0,subtree:!1}),b.observerremover=new A(function(d){d.forEach(function(d){if(0<d.removedNodes.length)for(var c in d.removedNodes)if(d.removedNodes[c]==\n    b.win[0])return b.remove()})}),b.observerremover.observe(b.win[0].parentNode,{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(b.bind(b.win,g.isie&&!g.isie9?\"propertychange\":\"DOMAttrModified\",b.onAttributeChange),g.isie9&&b.win[0].attachEvent(\"onpropertychange\",b.onAttributeChange),b.bind(b.win,\"DOMNodeRemoved\",function(d){d.target==b.win[0]&&b.remove()})));!b.ispage&&b.opt.boxzoom&&b.bind(window,\"resize\",b.resizeZoom);b.istextarea&&b.bind(b.win,\"mouseup\",b.lazyResize);b.checkrtlmode=!0;\n    b.lazyResize(30)}if(\"IFRAME\"==this.doc[0].nodeName){var K=function(d){b.iframexd=!1;try{var c=\"contentDocument\"in this?this.contentDocument:this.contentWindow.document}catch(f){b.iframexd=!0,c=!1}if(b.iframexd)return\"console\"in window&&console.log(\"NiceScroll error: policy restriced iframe\"),!0;b.forcescreen=!0;b.isiframe&&(b.iframe={doc:e(c),html:b.doc.contents().find(\"html\")[0],body:b.doc.contents().find(\"body\")[0]},b.getContentSize=function(){return{w:Math.max(b.iframe.html.scrollWidth,b.iframe.body.scrollWidth),\n    h:Math.max(b.iframe.html.scrollHeight,b.iframe.body.scrollHeight)}},b.docscroll=e(b.iframe.body));!g.isios&&(b.opt.iframeautoresize&&!b.isiframe)&&(b.win.scrollTop(0),b.doc.height(\"\"),d=Math.max(c.getElementsByTagName(\"html\")[0].scrollHeight,c.body.scrollHeight),b.doc.height(d));b.lazyResize(30);g.isie7&&b.css(e(b.iframe.html),{\"overflow-y\":\"hidden\"});b.css(e(b.iframe.body),{\"overflow-y\":\"hidden\"});g.isios&&b.haswrapper&&b.css(e(c.body),{\"-webkit-transform\":\"translate3d(0,0,0)\"});\"contentWindow\"in\n    this?b.bind(this.contentWindow,\"scroll\",b.onscroll):b.bind(c,\"scroll\",b.onscroll);b.opt.enablemousewheel&&b.bind(c,\"mousewheel\",b.onmousewheel);b.opt.enablekeyboard&&b.bind(c,g.isopera?\"keypress\":\"keydown\",b.onkeypress);if(g.cantouch||b.opt.touchbehavior)b.bind(c,\"mousedown\",b.ontouchstart),b.bind(c,\"mousemove\",function(d){b.ontouchmove(d,!0)}),b.opt.grabcursorenabled&&g.cursorgrabvalue&&b.css(e(c.body),{cursor:g.cursorgrabvalue});b.bind(c,\"mouseup\",b.ontouchend);b.zoom&&(b.opt.dblclickzoom&&b.bind(c,\n    \"dblclick\",b.doZoom),b.ongesturezoom&&b.bind(c,\"gestureend\",b.ongesturezoom))};this.doc[0].readyState&&\"complete\"==this.doc[0].readyState&&setTimeout(function(){K.call(b.doc[0],!1)},500);b.bind(this.doc,\"load\",K)}};this.showCursor=function(d,c){b.cursortimeout&&(clearTimeout(b.cursortimeout),b.cursortimeout=0);if(b.rail){b.autohidedom&&(b.autohidedom.stop().css({opacity:b.opt.cursoropacitymax}),b.cursoractive=!0);if(!b.rail.drag||1!=b.rail.drag.pt)\"undefined\"!=typeof d&&!1!==d&&(b.scroll.y=Math.round(1*\n    d/b.scrollratio.y)),\"undefined\"!=typeof c&&(b.scroll.x=Math.round(1*c/b.scrollratio.x));b.cursor.css({height:b.cursorheight,top:b.scroll.y});b.cursorh&&(!b.rail.align&&b.rail.visibility?b.cursorh.css({width:b.cursorwidth,left:b.scroll.x+b.rail.width}):b.cursorh.css({width:b.cursorwidth,left:b.scroll.x}),b.cursoractive=!0);b.zoom&&b.zoom.stop().css({opacity:b.opt.cursoropacitymax})}};this.hideCursor=function(d){!b.cursortimeout&&(b.rail&&b.autohidedom&&!(b.hasmousefocus&&\"leave\"==b.opt.autohidemode))&&\n(b.cursortimeout=setTimeout(function(){if(!b.rail.active||!b.showonmouseevent)b.autohidedom.stop().animate({opacity:b.opt.cursoropacitymin}),b.zoom&&b.zoom.stop().animate({opacity:b.opt.cursoropacitymin}),b.cursoractive=!1;b.cursortimeout=0},d||b.opt.hidecursordelay))};this.noticeCursor=function(d,c,f){b.showCursor(c,f);b.rail.active||b.hideCursor(d)};this.getContentSize=b.ispage?function(){return{w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),h:Math.max(document.body.scrollHeight,\n    document.documentElement.scrollHeight)}}:b.haswrapper?function(){return{w:b.doc.outerWidth()+parseInt(b.win.css(\"paddingLeft\"))+parseInt(b.win.css(\"paddingRight\")),h:b.doc.outerHeight()+parseInt(b.win.css(\"paddingTop\"))+parseInt(b.win.css(\"paddingBottom\"))}}:function(){return{w:b.docscroll[0].scrollWidth,h:b.docscroll[0].scrollHeight}};this.onResize=function(d,c){if(!b.win)return!1;if(!b.haswrapper&&!b.ispage){if(\"none\"==b.win.css(\"display\"))return b.visibility&&b.hideRail().hideRailHr(),!1;!b.hidden&&\n    !b.visibility&&b.showRail().showRailHr()}var f=b.page.maxh,g=b.page.maxw,e=b.view.w;b.view={w:b.ispage?b.win.width():parseInt(b.win[0].clientWidth),h:b.ispage?b.win.height():parseInt(b.win[0].clientHeight)};b.page=c?c:b.getContentSize();b.page.maxh=Math.max(0,b.page.h-b.view.h);b.page.maxw=Math.max(0,b.page.w-b.view.w);if(b.page.maxh==f&&b.page.maxw==g&&b.view.w==e){if(b.ispage)return b;f=b.win.offset();if(b.lastposition&&(g=b.lastposition,g.top==f.top&&g.left==f.left))return b;b.lastposition=f}0==\n    b.page.maxh?(b.hideRail(),b.scrollvaluemax=0,b.scroll.y=0,b.scrollratio.y=0,b.cursorheight=0,b.setScrollTop(0),b.rail.scrollable=!1):b.rail.scrollable=!0;0==b.page.maxw?(b.hideRailHr(),b.scrollvaluemaxw=0,b.scroll.x=0,b.scrollratio.x=0,b.cursorwidth=0,b.setScrollLeft(0),b.railh.scrollable=!1):b.railh.scrollable=!0;b.locked=0==b.page.maxh&&0==b.page.maxw;if(b.locked)return b.ispage||b.updateScrollBar(b.view),!1;!b.hidden&&!b.visibility?b.showRail().showRailHr():!b.hidden&&!b.railh.visibility&&b.showRailHr();\n    b.istextarea&&(b.win.css(\"resize\")&&\"none\"!=b.win.css(\"resize\"))&&(b.view.h-=20);b.cursorheight=Math.min(b.view.h,Math.round(b.view.h*(b.view.h/b.page.h)));b.cursorheight=b.opt.cursorfixedheight?b.opt.cursorfixedheight:Math.max(b.opt.cursorminheight,b.cursorheight);b.cursorwidth=Math.min(b.view.w,Math.round(b.view.w*(b.view.w/b.page.w)));b.cursorwidth=b.opt.cursorfixedheight?b.opt.cursorfixedheight:Math.max(b.opt.cursorminheight,b.cursorwidth);b.scrollvaluemax=b.view.h-b.cursorheight-b.cursor.hborder;\n    b.railh&&(b.railh.width=0<b.page.maxh?b.view.w-b.rail.width:b.view.w,b.scrollvaluemaxw=b.railh.width-b.cursorwidth-b.cursorh.wborder);b.checkrtlmode&&b.railh&&(b.checkrtlmode=!1,b.opt.rtlmode&&0==b.scroll.x&&b.setScrollLeft(b.page.maxw));b.ispage||b.updateScrollBar(b.view);b.scrollratio={x:b.page.maxw/b.scrollvaluemaxw,y:b.page.maxh/b.scrollvaluemax};b.getScrollTop()>b.page.maxh?b.doScrollTop(b.page.maxh):(b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y)),b.scroll.x=Math.round(b.getScrollLeft()*\n        (1/b.scrollratio.x)),b.cursoractive&&b.noticeCursor());b.scroll.y&&0==b.getScrollTop()&&b.doScrollTo(Math.floor(b.scroll.y*b.scrollratio.y));return b};this.resize=b.onResize;this.lazyResize=function(d){d=isNaN(d)?30:d;b.delayed(\"resize\",b.resize,d);return b};this._bind=function(d,c,f,g){b.events.push({e:d,n:c,f:f,b:g,q:!1});d.addEventListener?d.addEventListener(c,f,g||!1):d.attachEvent?d.attachEvent(\"on\"+c,f):d[\"on\"+c]=f};this.jqbind=function(d,c,f){b.events.push({e:d,n:c,f:f,q:!0});e(d).bind(c,f)};\n    this.bind=function(d,c,f,e){var k=\"jquery\"in d?d[0]:d;\"mousewheel\"==c?\"onwheel\"in b.win?b._bind(k,\"wheel\",f,e||!1):(d=\"undefined\"!=typeof document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",q(k,d,f,e||!1),\"DOMMouseScroll\"==d&&q(k,\"MozMousePixelScroll\",f,e||!1)):k.addEventListener?(g.cantouch&&/mouseup|mousedown|mousemove/.test(c)&&b._bind(k,\"mousedown\"==c?\"touchstart\":\"mouseup\"==c?\"touchend\":\"touchmove\",function(b){if(b.touches){if(2>b.touches.length){var d=b.touches.length?b.touches[0]:b;d.original=\n        b;f.call(this,d)}}else b.changedTouches&&(d=b.changedTouches[0],d.original=b,f.call(this,d))},e||!1),b._bind(k,c,f,e||!1),g.cantouch&&\"mouseup\"==c&&b._bind(k,\"touchcancel\",f,e||!1)):b._bind(k,c,function(d){if((d=d||window.event||!1)&&d.srcElement)d.target=d.srcElement;\"pageY\"in d||(d.pageX=d.clientX+document.documentElement.scrollLeft,d.pageY=d.clientY+document.documentElement.scrollTop);return!1===f.call(k,d)||!1===e?b.cancelEvent(d):!0})};this._unbind=function(b,c,f,g){b.removeEventListener?b.removeEventListener(c,\n        f,g):b.detachEvent?b.detachEvent(\"on\"+c,f):b[\"on\"+c]=!1};this.unbindAll=function(){for(var d=0;d<b.events.length;d++){var c=b.events[d];c.q?c.e.unbind(c.n,c.f):b._unbind(c.e,c.n,c.f,c.b)}};this.cancelEvent=function(b){b=b.original?b.original:b?b:window.event||!1;if(!b)return!1;b.preventDefault&&b.preventDefault();b.stopPropagation&&b.stopPropagation();b.preventManipulation&&b.preventManipulation();b.cancelBubble=!0;b.cancel=!0;return b.returnValue=!1};this.stopPropagation=function(b){b=b.original?\n        b.original:b?b:window.event||!1;if(!b)return!1;if(b.stopPropagation)return b.stopPropagation();b.cancelBubble&&(b.cancelBubble=!0);return!1};this.showRail=function(){if(0!=b.page.maxh&&(b.ispage||\"none\"!=b.win.css(\"display\")))b.visibility=!0,b.rail.visibility=!0,b.rail.css(\"display\",\"block\");return b};this.showRailHr=function(){if(!b.railh)return b;if(0!=b.page.maxw&&(b.ispage||\"none\"!=b.win.css(\"display\")))b.railh.visibility=!0,b.railh.css(\"display\",\"block\");return b};this.hideRail=function(){b.visibility=\n        !1;b.rail.visibility=!1;b.rail.css(\"display\",\"none\");return b};this.hideRailHr=function(){if(!b.railh)return b;b.railh.visibility=!1;b.railh.css(\"display\",\"none\");return b};this.show=function(){b.hidden=!1;b.locked=!1;return b.showRail().showRailHr()};this.hide=function(){b.hidden=!0;b.locked=!0;return b.hideRail().hideRailHr()};this.toggle=function(){return b.hidden?b.show():b.hide()};this.remove=function(){b.stop();b.cursortimeout&&clearTimeout(b.cursortimeout);b.doZoomOut();b.unbindAll();g.isie9&&\n    b.win[0].detachEvent(\"onpropertychange\",b.onAttributeChange);!1!==b.observer&&b.observer.disconnect();!1!==b.observerremover&&b.observerremover.disconnect();b.events=null;b.cursor&&b.cursor.remove();b.cursorh&&b.cursorh.remove();b.rail&&b.rail.remove();b.railh&&b.railh.remove();b.zoom&&b.zoom.remove();for(var d=0;d<b.saved.css.length;d++){var c=b.saved.css[d];c[0].css(c[1],\"undefined\"==typeof c[2]?\"\":c[2])}b.saved=!1;b.me.data(\"__nicescroll\",\"\");var f=e.nicescroll;f.each(function(d){if(this&&this.id===\n        b.id){delete f[d];for(var c=++d;c<f.length;c++,d++)f[d]=f[c];f.length--;f.length&&delete f[f.length]}});for(var k in b)b[k]=null,delete b[k];b=null};this.scrollstart=function(d){this.onscrollstart=d;return b};this.scrollend=function(d){this.onscrollend=d;return b};this.scrollcancel=function(d){this.onscrollcancel=d;return b};this.zoomin=function(d){this.onzoomin=d;return b};this.zoomout=function(d){this.onzoomout=d;return b};this.isScrollable=function(b){b=b.target?b.target:b;if(\"OPTION\"==b.nodeName)return!0;\n        for(;b&&1==b.nodeType&&!/BODY|HTML/.test(b.nodeName);){var c=e(b),c=c.css(\"overflowY\")||c.css(\"overflowX\")||c.css(\"overflow\")||\"\";if(/scroll|auto/.test(c))return b.clientHeight!=b.scrollHeight;b=b.parentNode?b.parentNode:!1}return!1};this.getViewport=function(b){for(b=b&&b.parentNode?b.parentNode:!1;b&&1==b.nodeType&&!/BODY|HTML/.test(b.nodeName);){var c=e(b);if(/fixed|absolute/.test(c.css(\"position\")))return c;var f=c.css(\"overflowY\")||c.css(\"overflowX\")||c.css(\"overflow\")||\"\";if(/scroll|auto/.test(f)&&\n        b.clientHeight!=b.scrollHeight||0<c.getNiceScroll().length)return c;b=b.parentNode?b.parentNode:!1}return!1};this.onmousewheel=function(d){if(b.locked)return b.debounced(\"checkunlock\",b.resize,250),!0;if(b.rail.drag)return b.cancelEvent(d);\"auto\"==b.opt.oneaxismousemode&&0!=d.deltaX&&(b.opt.oneaxismousemode=!1);if(b.opt.oneaxismousemode&&0==d.deltaX&&!b.rail.scrollable)return b.railh&&b.railh.scrollable?b.onmousewheelhr(d):!0;var c=+new Date,f=!1;b.opt.preservenativescrolling&&b.checkarea+600<c&&\n    (b.nativescrollingarea=b.isScrollable(d),f=!0);b.checkarea=c;if(b.nativescrollingarea)return!0;if(d=t(d,!1,f))b.checkarea=0;return d};this.onmousewheelhr=function(d){if(b.locked||!b.railh.scrollable)return!0;if(b.rail.drag)return b.cancelEvent(d);var c=+new Date,f=!1;b.opt.preservenativescrolling&&b.checkarea+600<c&&(b.nativescrollingarea=b.isScrollable(d),f=!0);b.checkarea=c;return b.nativescrollingarea?!0:b.locked?b.cancelEvent(d):t(d,!0,f)};this.stop=function(){b.cancelScroll();b.scrollmon&&b.scrollmon.stop();\n        b.cursorfreezed=!1;b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y));b.noticeCursor();return b};this.getTransitionSpeed=function(d){var c=Math.round(10*b.opt.scrollspeed);d=Math.min(c,Math.round(d/20*b.opt.scrollspeed));return 20<d?d:0};b.opt.smoothscroll?b.ishwscroll&&g.hastransition&&b.opt.usetransition?(this.prepareTransition=function(d,c){var f=c?20<d?d:0:b.getTransitionSpeed(d),e=f?g.prefixstyle+\"transform \"+f+\"ms ease-out\":\"\";if(!b.lasttransitionstyle||b.lasttransitionstyle!=e)b.lasttransitionstyle=\n        e,b.doc.css(g.transitionstyle,e);return f},this.doScrollLeft=function(c,g){var f=b.scrollrunning?b.newscrolly:b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,g){var f=b.scrollrunning?b.newscrollx:b.getScrollLeft();b.doScrollPos(f,c,g)},this.doScrollPos=function(c,e,f){var k=b.getScrollTop(),l=b.getScrollLeft();(0>(b.newscrolly-k)*(e-k)||0>(b.newscrollx-l)*(c-l))&&b.cancelScroll();!1==b.opt.bouncescroll&&(0>e?e=0:e>b.page.maxh&&(e=b.page.maxh),0>c?c=0:c>b.page.maxw&&(c=b.page.maxw));\n        if(b.scrollrunning&&c==b.newscrollx&&e==b.newscrolly)return!1;b.newscrolly=e;b.newscrollx=c;b.newscrollspeed=f||!1;if(b.timer)return!1;b.timer=setTimeout(function(){var f=b.getScrollTop(),k=b.getScrollLeft(),l,h;l=c-k;h=e-f;l=Math.round(Math.sqrt(Math.pow(l,2)+Math.pow(h,2)));l=b.newscrollspeed&&1<b.newscrollspeed?b.newscrollspeed:b.getTransitionSpeed(l);b.newscrollspeed&&1>=b.newscrollspeed&&(l*=b.newscrollspeed);b.prepareTransition(l,!0);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);\n            0<l&&(!b.scrollrunning&&b.onscrollstart&&b.onscrollstart.call(b,{type:\"scrollstart\",current:{x:k,y:f},request:{x:c,y:e},end:{x:b.newscrollx,y:b.newscrolly},speed:l}),g.transitionend?b.scrollendtrapped||(b.scrollendtrapped=!0,b.bind(b.doc,g.transitionend,b.onScrollEnd,!1)):(b.scrollendtrapped&&clearTimeout(b.scrollendtrapped),b.scrollendtrapped=setTimeout(b.onScrollEnd,l)),b.timerscroll={bz:new BezierClass(f,b.newscrolly,l,0,0,0.58,1),bh:new BezierClass(k,b.newscrollx,l,0,0,0.58,1)},b.cursorfreezed||\n                (b.timerscroll.tm=setInterval(function(){b.showCursor(b.getScrollTop(),b.getScrollLeft())},60)));b.synched(\"doScroll-set\",function(){b.timer=0;b.scrollendtrapped&&(b.scrollrunning=!0);b.setScrollTop(b.newscrolly);b.setScrollLeft(b.newscrollx);if(!b.scrollendtrapped)b.onScrollEnd()})},50)},this.cancelScroll=function(){if(!b.scrollendtrapped)return!0;var c=b.getScrollTop(),e=b.getScrollLeft();b.scrollrunning=!1;g.transitionend||clearTimeout(g.transitionend);b.scrollendtrapped=!1;b._unbind(b.doc,g.transitionend,\n        b.onScrollEnd);b.prepareTransition(0);b.setScrollTop(c);b.railh&&b.setScrollLeft(e);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);b.timerscroll=!1;b.cursorfreezed=!1;b.showCursor(c,e);return b},this.onScrollEnd=function(){b.scrollendtrapped&&b._unbind(b.doc,g.transitionend,b.onScrollEnd);b.scrollendtrapped=!1;b.prepareTransition(0);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);b.timerscroll=!1;var c=b.getScrollTop(),e=b.getScrollLeft();b.setScrollTop(c);b.railh&&\n    b.setScrollLeft(e);b.noticeCursor(!1,c,e);b.cursorfreezed=!1;0>c?c=0:c>b.page.maxh&&(c=b.page.maxh);0>e?e=0:e>b.page.maxw&&(e=b.page.maxw);if(c!=b.newscrolly||e!=b.newscrollx)return b.doScrollPos(e,c,b.opt.snapbackspeed);b.onscrollend&&b.scrollrunning&&b.onscrollend.call(b,{type:\"scrollend\",current:{x:e,y:c},end:{x:b.newscrollx,y:b.newscrolly}});b.scrollrunning=!1}):(this.doScrollLeft=function(c,g){var f=b.scrollrunning?b.newscrolly:b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          g){var f=b.scrollrunning?b.newscrollx:b.getScrollLeft();b.doScrollPos(f,c,g)},this.doScrollPos=function(c,g,f){function e(){if(b.cancelAnimationFrame)return!0;b.scrollrunning=!0;if(p=1-p)return b.timer=v(e)||1;var c=0,d=sy=b.getScrollTop();if(b.dst.ay){var d=b.bzscroll?b.dst.py+b.bzscroll.getNow()*b.dst.ay:b.newscrolly,f=d-sy;if(0>f&&d<b.newscrolly||0<f&&d>b.newscrolly)d=b.newscrolly;b.setScrollTop(d);d==b.newscrolly&&(c=1)}else c=1;var g=sx=b.getScrollLeft();if(b.dst.ax){g=b.bzscroll?b.dst.px+b.bzscroll.getNow()*\n        b.dst.ax:b.newscrollx;f=g-sx;if(0>f&&g<b.newscrollx||0<f&&g>b.newscrollx)g=b.newscrollx;b.setScrollLeft(g);g==b.newscrollx&&(c+=1)}else c+=1;2==c?(b.timer=0,b.cursorfreezed=!1,b.bzscroll=!1,b.scrollrunning=!1,0>d?d=0:d>b.page.maxh&&(d=b.page.maxh),0>g?g=0:g>b.page.maxw&&(g=b.page.maxw),g!=b.newscrollx||d!=b.newscrolly?b.doScrollPos(g,d):b.onscrollend&&b.onscrollend.call(b,{type:\"scrollend\",current:{x:sx,y:sy},end:{x:b.newscrollx,y:b.newscrolly}})):b.timer=v(e)||1}g=\"undefined\"==typeof g||!1===g?b.getScrollTop(!0):\n        g;if(b.timer&&b.newscrolly==g&&b.newscrollx==c)return!0;b.timer&&w(b.timer);b.timer=0;var k=b.getScrollTop(),l=b.getScrollLeft();(0>(b.newscrolly-k)*(g-k)||0>(b.newscrollx-l)*(c-l))&&b.cancelScroll();b.newscrolly=g;b.newscrollx=c;if(!b.bouncescroll||!b.rail.visibility)0>b.newscrolly?b.newscrolly=0:b.newscrolly>b.page.maxh&&(b.newscrolly=b.page.maxh);if(!b.bouncescroll||!b.railh.visibility)0>b.newscrollx?b.newscrollx=0:b.newscrollx>b.page.maxw&&(b.newscrollx=b.page.maxw);b.dst={};b.dst.x=c-l;b.dst.y=\n        g-k;b.dst.px=l;b.dst.py=k;var h=Math.round(Math.sqrt(Math.pow(b.dst.x,2)+Math.pow(b.dst.y,2)));b.dst.ax=b.dst.x/h;b.dst.ay=b.dst.y/h;var m=0,q=h;0==b.dst.x?(m=k,q=g,b.dst.ay=1,b.dst.py=0):0==b.dst.y&&(m=l,q=c,b.dst.ax=1,b.dst.px=0);h=b.getTransitionSpeed(h);f&&1>=f&&(h*=f);b.bzscroll=0<h?b.bzscroll?b.bzscroll.update(q,h):new BezierClass(m,q,h,0,1,0,1):!1;if(!b.timer){(k==b.page.maxh&&g>=b.page.maxh||l==b.page.maxw&&c>=b.page.maxw)&&b.checkContentSize();var p=1;b.cancelAnimationFrame=!1;b.timer=1;\n        b.onscrollstart&&!b.scrollrunning&&b.onscrollstart.call(b,{type:\"scrollstart\",current:{x:l,y:k},request:{x:c,y:g},end:{x:b.newscrollx,y:b.newscrolly},speed:h});e();(k==b.page.maxh&&g>=k||l==b.page.maxw&&c>=l)&&b.checkContentSize();b.noticeCursor()}},this.cancelScroll=function(){b.timer&&w(b.timer);b.timer=0;b.bzscroll=!1;b.scrollrunning=!1;return b}):(this.doScrollLeft=function(c,g){var f=b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,g){var f=b.getScrollLeft();b.doScrollPos(f,\n        c,g)},this.doScrollPos=function(c,g,f){var e=c>b.page.maxw?b.page.maxw:c;0>e&&(e=0);var k=g>b.page.maxh?b.page.maxh:g;0>k&&(k=0);b.synched(\"scroll\",function(){b.setScrollTop(k);b.setScrollLeft(e)})},this.cancelScroll=function(){});this.doScrollBy=function(c,g){var f=0,f=g?Math.floor((b.scroll.y-c)*b.scrollratio.y):(b.timer?b.newscrolly:b.getScrollTop(!0))-c;if(b.bouncescroll){var e=Math.round(b.view.h/2);f<-e?f=-e:f>b.page.maxh+e&&(f=b.page.maxh+e)}b.cursorfreezed=!1;py=b.getScrollTop(!0);if(0>f&&\n        0>=py)return b.noticeCursor();if(f>b.page.maxh&&py>=b.page.maxh)return b.checkContentSize(),b.noticeCursor();b.doScrollTop(f)};this.doScrollLeftBy=function(c,g){var f=0,f=g?Math.floor((b.scroll.x-c)*b.scrollratio.x):(b.timer?b.newscrollx:b.getScrollLeft(!0))-c;if(b.bouncescroll){var e=Math.round(b.view.w/2);f<-e?f=-e:f>b.page.maxw+e&&(f=b.page.maxw+e)}b.cursorfreezed=!1;px=b.getScrollLeft(!0);if(0>f&&0>=px||f>b.page.maxw&&px>=b.page.maxw)return b.noticeCursor();b.doScrollLeft(f)};this.doScrollTo=\n        function(c,g){g&&Math.round(c*b.scrollratio.y);b.cursorfreezed=!1;b.doScrollTop(c)};this.checkContentSize=function(){var c=b.getContentSize();(c.h!=b.page.h||c.w!=b.page.w)&&b.resize(!1,c)};b.onscroll=function(c){b.rail.drag||b.cursorfreezed||b.synched(\"scroll\",function(){b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y));b.railh&&(b.scroll.x=Math.round(b.getScrollLeft()*(1/b.scrollratio.x)));b.noticeCursor()})};b.bind(b.docscroll,\"scroll\",b.onscroll);this.doZoomIn=function(c){if(!b.zoomactive){b.zoomactive=\n        !0;b.zoomrestore={style:{}};var k=\"position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight\".split(\" \"),f=b.win[0].style,l;for(l in k){var h=k[l];b.zoomrestore.style[h]=\"undefined\"!=typeof f[h]?f[h]:\"\"}b.zoomrestore.style.width=b.win.css(\"width\");b.zoomrestore.style.height=b.win.css(\"height\");b.zoomrestore.padding={w:b.win.outerWidth()-b.win.width(),h:b.win.outerHeight()-b.win.height()};g.isios4&&(b.zoomrestore.scrollTop=e(window).scrollTop(),e(window).scrollTop(0));\n        b.win.css({position:g.isios4?\"absolute\":\"fixed\",top:0,left:0,\"z-index\":y+100,margin:\"0px\"});k=b.win.css(\"backgroundColor\");(\"\"==k||/transparent|rgba\\(0, 0, 0, 0\\)|rgba\\(0,0,0,0\\)/.test(k))&&b.win.css(\"backgroundColor\",\"#fff\");b.rail.css({\"z-index\":y+101});b.zoom.css({\"z-index\":y+102});b.zoom.css(\"backgroundPosition\",\"0px -18px\");b.resizeZoom();b.onzoomin&&b.onzoomin.call(b);return b.cancelEvent(c)}};this.doZoomOut=function(c){if(b.zoomactive)return b.zoomactive=!1,b.win.css(\"margin\",\"\"),b.win.css(b.zoomrestore.style),\n        g.isios4&&e(window).scrollTop(b.zoomrestore.scrollTop),b.rail.css({\"z-index\":b.zindex}),b.zoom.css({\"z-index\":b.zindex}),b.zoomrestore=!1,b.zoom.css(\"backgroundPosition\",\"0px 0px\"),b.onResize(),b.onzoomout&&b.onzoomout.call(b),b.cancelEvent(c)};this.doZoom=function(c){return b.zoomactive?b.doZoomOut(c):b.doZoomIn(c)};this.resizeZoom=function(){if(b.zoomactive){var c=b.getScrollTop();b.win.css({width:e(window).width()-b.zoomrestore.padding.w+\"px\",height:e(window).height()-b.zoomrestore.padding.h+\"px\"});\n        b.onResize();b.setScrollTop(Math.min(b.page.maxh,c))}};this.init();e.nicescroll.push(this)},J=function(e){var c=this;this.nc=e;this.steptime=this.lasttime=this.speedy=this.speedx=this.lasty=this.lastx=0;this.snapy=this.snapx=!1;this.demuly=this.demulx=0;this.lastscrolly=this.lastscrollx=-1;this.timer=this.chky=this.chkx=0;this.time=function(){return+new Date};this.reset=function(e,l){c.stop();var h=c.time();c.steptime=0;c.lasttime=h;c.speedx=0;c.speedy=0;c.lastx=e;c.lasty=l;c.lastscrollx=-1;c.lastscrolly=\n    -1};this.update=function(e,l){var h=c.time();c.steptime=h-c.lasttime;c.lasttime=h;var h=l-c.lasty,t=e-c.lastx,b=c.nc.getScrollTop(),p=c.nc.getScrollLeft(),b=b+h,p=p+t;c.snapx=0>p||p>c.nc.page.maxw;c.snapy=0>b||b>c.nc.page.maxh;c.speedx=t;c.speedy=h;c.lastx=e;c.lasty=l};this.stop=function(){c.nc.unsynched(\"domomentum2d\");c.timer&&clearTimeout(c.timer);c.timer=0;c.lastscrollx=-1;c.lastscrolly=-1};this.doSnapy=function(e,l){var h=!1;0>l?(l=0,h=!0):l>c.nc.page.maxh&&(l=c.nc.page.maxh,h=!0);0>e?(e=0,h=\n    !0):e>c.nc.page.maxw&&(e=c.nc.page.maxw,h=!0);h&&c.nc.doScrollPos(e,l,c.nc.opt.snapbackspeed)};this.doMomentum=function(e){var l=c.time(),h=e?l+e:c.lasttime;e=c.nc.getScrollLeft();var t=c.nc.getScrollTop(),b=c.nc.page.maxh,p=c.nc.page.maxw;c.speedx=0<p?Math.min(60,c.speedx):0;c.speedy=0<b?Math.min(60,c.speedy):0;h=h&&60>=l-h;if(0>t||t>b||0>e||e>p)h=!1;e=c.speedx&&h?c.speedx:!1;if(c.speedy&&h&&c.speedy||e){var g=Math.max(16,c.steptime);50<g&&(e=g/50,c.speedx*=e,c.speedy*=e,g=50);c.demulxy=0;c.lastscrollx=\n    c.nc.getScrollLeft();c.chkx=c.lastscrollx;c.lastscrolly=c.nc.getScrollTop();c.chky=c.lastscrolly;var s=c.lastscrollx,u=c.lastscrolly,d=function(){var e=600<c.time()-l?0.04:0.02;if(c.speedx&&(s=Math.floor(c.lastscrollx-c.speedx*(1-c.demulxy)),c.lastscrollx=s,0>s||s>p))e=0.1;if(c.speedy&&(u=Math.floor(c.lastscrolly-c.speedy*(1-c.demulxy)),c.lastscrolly=u,0>u||u>b))e=0.1;c.demulxy=Math.min(1,c.demulxy+e);c.nc.synched(\"domomentum2d\",function(){c.speedx&&(c.nc.getScrollLeft()!=c.chkx&&c.stop(),c.chkx=\n    s,c.nc.setScrollLeft(s));c.speedy&&(c.nc.getScrollTop()!=c.chky&&c.stop(),c.chky=u,c.nc.setScrollTop(u));c.timer||(c.nc.hideCursor(),c.doSnapy(s,u))});1>c.demulxy?c.timer=setTimeout(d,g):(c.stop(),c.nc.hideCursor(),c.doSnapy(s,u))};d()}else c.doSnapy(c.nc.getScrollLeft(),c.nc.getScrollTop())}},B=e.fn.scrollTop;e.cssHooks.pageYOffset={get:function(h,c,k){return(c=e.data(h,\"__nicescroll\")||!1)&&c.ishwscroll?c.getScrollTop():B.call(h)},set:function(h,c){var k=e.data(h,\"__nicescroll\")||!1;k&&k.ishwscroll?\n    k.setScrollTop(parseInt(c)):B.call(h,c);return this}};e.fn.scrollTop=function(h){if(\"undefined\"==typeof h){var c=this[0]?e.data(this[0],\"__nicescroll\")||!1:!1;return c&&c.ishwscroll?c.getScrollTop():B.call(this)}return this.each(function(){var c=e.data(this,\"__nicescroll\")||!1;c&&c.ishwscroll?c.setScrollTop(parseInt(h)):B.call(e(this),h)})};var C=e.fn.scrollLeft;e.cssHooks.pageXOffset={get:function(h,c,k){return(c=e.data(h,\"__nicescroll\")||!1)&&c.ishwscroll?c.getScrollLeft():C.call(h)},set:function(h,\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            c){var k=e.data(h,\"__nicescroll\")||!1;k&&k.ishwscroll?k.setScrollLeft(parseInt(c)):C.call(h,c);return this}};e.fn.scrollLeft=function(h){if(\"undefined\"==typeof h){var c=this[0]?e.data(this[0],\"__nicescroll\")||!1:!1;return c&&c.ishwscroll?c.getScrollLeft():C.call(this)}return this.each(function(){var c=e.data(this,\"__nicescroll\")||!1;c&&c.ishwscroll?c.setScrollLeft(parseInt(h)):C.call(e(this),h)})};var D=function(h){var c=this;this.length=0;this.name=\"nicescrollarray\";this.each=function(e){for(var h=\n    0,k=0;h<c.length;h++)e.call(c[h],k++);return c};this.push=function(e){c[c.length]=e;c.length++};this.eq=function(e){return c[e]};if(h)for(a=0;a<h.length;a++){var k=e.data(h[a],\"__nicescroll\")||!1;k&&(this[this.length]=k,this.length++)}return this};(function(e,c,k){for(var l=0;l<c.length;l++)k(e,c[l])})(D.prototype,\"show hide toggle onResize resize remove stop doScrollPos\".split(\" \"),function(e,c){e[c]=function(){var e=arguments;return this.each(function(){this[c].apply(this,e)})}});e.fn.getNiceScroll=\n    function(h){return\"undefined\"==typeof h?new D(this):this[h]&&e.data(this[h],\"__nicescroll\")||!1};e.extend(e.expr[\":\"],{nicescroll:function(h){return e.data(h,\"__nicescroll\")?!0:!1}});e.fn.niceScroll=function(h,c){\"undefined\"==typeof c&&(\"object\"==typeof h&&!(\"jquery\"in h))&&(c=h,h=!1);var k=new D;\"undefined\"==typeof c&&(c={});h&&(c.doc=e(h),c.win=e(this));var l=!(\"doc\"in c);!l&&!(\"win\"in c)&&(c.win=e(this));this.each(function(){var h=e(this).data(\"__nicescroll\")||!1;h||(c.doc=l?e(this):c.doc,h=new Q(c,\n    e(this)),e(this).data(\"__nicescroll\",h));k.push(h)});return 1==k.length?k[0]:k};window.NiceScroll={getjQuery:function(){return e}};e.nicescroll||(e.nicescroll=new D,e.nicescroll.options=I)})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/jquery.sparkline.js",
    "content": "/**\n*\n* jquery.sparkline.js\n*\n* v2.0\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIRQ - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function ($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n         VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl] + values[vl + 1]) / 2;\n        } else {\n            vl = Math.floor(values.length / 4);\n            return values.length % 2 ? (values[vl * q] + values[vl * q + 1]) / 2 : values[vl * q];\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (arr[i] !== val || (!ignoreNull && val === null)) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n        if ($.browser.hasCanvas) {\n            target = new VCanvas_canvas(width, height, this, interact);\n        } else if ($.browser.msie) {\n            target = new VCanvas_vml(width, height, this);\n        } else {\n            return false;\n        }\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            // jQuery 1.3.0 completely changed the meaning of :hidden :-/\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || ($.fn.jquery < '1.3.0' && $(this).parents().is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                if (options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy)) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                            vertices.push(null);\n                        }\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor')) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            values = $.map(values, Number);\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            shape = this.renderPerformance().append();\n            this.shapes[shape.id] = 'p1';\n            this.valueShapes.p1 = shape.id;\n            shape = this.renderTarget().append();\n            this.shapes[shape.id] = 't0';\n            this.valueShapes.t0 = shape.id;\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                shape = this.renderSlice(i).append();\n                this.valueShapes[i] = shape.id; // store just the shapeid\n                this.shapes[shape.id] = i;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] },\n                { field: 'lo', value: this.loutlier },\n                { field: 'ro', value: this.routlier }\n            ];\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    if ($.browser.msie && !document.namespaces.v) {\n        document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n    }\n\n    if ($.browser.hasCanvas === undefined) {\n        $.browser.hasCanvas = document.createElement('canvas').getContext !== undefined;\n    }\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return;  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            // Prevent very small slices from being mistaken as a whole pie\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return;\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/nestable.js",
    "content": "var Nestable = function () {\n\n    var updateOutput = function (e) {\n        var list = e.length ? e : $(e.target),\n            output = list.data('output');\n        if (window.JSON) {\n            output.val(window.JSON.stringify(list.nestable('serialize'))); //, null, 2));\n        } else {\n            output.val('JSON browser support required for this demo.');\n        }\n    };\n\n\n\n    // activate Nestable for list 1\n    $('#nestable_list_1').nestable({\n        group: 1\n    })\n        .on('change', updateOutput);\n\n    // activate Nestable for list 2\n    $('#nestable_list_2').nestable({\n        group: 1\n    })\n        .on('change', updateOutput);\n\n    // output initial serialised data\n    updateOutput($('#nestable_list_1').data('output', $('#nestable_list_1_output')));\n    updateOutput($('#nestable_list_2').data('output', $('#nestable_list_2_output')));\n\n    $('#nestable_list_menu').on('click', function (e) {\n        var target = $(e.target),\n            action = target.data('action');\n        if (action === 'expand-all') {\n            $('.dd').nestable('expandAll');\n        }\n        if (action === 'collapse-all') {\n            $('.dd').nestable('collapseAll');\n        }\n    });\n\n    $('#nestable_list_3').nestable();\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/pulstate.js",
    "content": "var Pulstate = function () {\n\n//    pulstate\n\n    jQuery('#pulsate-regular').pulsate({\n        color: \"#E74955\"\n    });\n\n    jQuery('#pulsate-once').click(function () {\n        $(this).pulsate({\n            color: \"#A5D16C\",\n            repeat: false\n        });\n    });\n\n    jQuery('#pulsate-hover').pulsate({\n        color: \"#4A8BC2\",\n        repeat: false,\n        onHover: true\n    });\n\n    jQuery('#pulsate-crazy').click(function () {\n        $(this).pulsate({\n            color: \"#FCB322\",\n            reach: 50,\n            repeat: 10,\n            speed: 100,\n            glow: true\n        });\n    });\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/respond.js",
    "content": "\n/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */\n/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */\nwindow.matchMedia = window.matchMedia || (function(doc, undefined){\n  \n  var bool,\n      docElem  = doc.documentElement,\n      refNode  = docElem.firstElementChild || docElem.firstChild,\n      // fakeBody required for <FF4 when executed in <head>\n      fakeBody = doc.createElement('body'),\n      div      = doc.createElement('div');\n  \n  div.id = 'mq-test-1';\n  div.style.cssText = \"position:absolute;top:-100em\";\n  fakeBody.style.background = \"none\";\n  fakeBody.appendChild(div);\n  \n  return function(q){\n    \n    div.innerHTML = '&shy;<style media=\"'+q+'\"> #mq-test-1 { width: 42px; }</style>';\n    \n    docElem.insertBefore(fakeBody, refNode);\n    bool = div.offsetWidth == 42;  \n    docElem.removeChild(fakeBody);\n    \n    return { matches: bool, media: q };\n  };\n  \n})(document);\n\n\n\n\n/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */\n(function( win ){\n\t//exposed namespace\n\twin.respond\t\t= {};\n\t\n\t//define update even in native-mq-supporting browsers, to avoid errors\n\trespond.update\t= function(){};\n\t\n\t//expose media query support flag for external use\n\trespond.mediaQueriesSupported\t= win.matchMedia && win.matchMedia( \"only all\" ).matches;\n\t\n\t//if media queries are supported, exit here\n\tif( respond.mediaQueriesSupported ){ return; }\n\t\n\t//define vars\n\tvar doc \t\t\t= win.document,\n\t\tdocElem \t\t= doc.documentElement,\n\t\tmediastyles\t\t= [],\n\t\trules\t\t\t= [],\n\t\tappendedEls \t= [],\n\t\tparsedSheets \t= {},\n\t\tresizeThrottle\t= 30,\n\t\thead \t\t\t= doc.getElementsByTagName( \"head\" )[0] || docElem,\n\t\tbase\t\t\t= doc.getElementsByTagName( \"base\" )[0],\n\t\tlinks\t\t\t= head.getElementsByTagName( \"link\" ),\n\t\trequestQueue\t= [],\n\t\t\n\t\t//loop stylesheets, send text content to translate\n\t\tripCSS\t\t\t= function(){\n\t\t\tvar sheets \t= links,\n\t\t\t\tsl \t\t= sheets.length,\n\t\t\t\ti\t\t= 0,\n\t\t\t\t//vars for loop:\n\t\t\t\tsheet, href, media, isCSS;\n\n\t\t\tfor( ; i < sl; i++ ){\n\t\t\t\tsheet\t= sheets[ i ],\n\t\t\t\thref\t= sheet.href,\n\t\t\t\tmedia\t= sheet.media,\n\t\t\t\tisCSS\t= sheet.rel && sheet.rel.toLowerCase() === \"stylesheet\";\n\n\t\t\t\t//only links plz and prevent re-parsing\n\t\t\t\tif( !!href && isCSS && !parsedSheets[ href ] ){\n\t\t\t\t\t// selectivizr exposes css through the rawCssText expando\n\t\t\t\t\tif (sheet.styleSheet && sheet.styleSheet.rawCssText) {\n\t\t\t\t\t\ttranslate( sheet.styleSheet.rawCssText, href, media );\n\t\t\t\t\t\tparsedSheets[ href ] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( (!/^([a-zA-Z:]*\\/\\/)/.test( href ) && !base)\n\t\t\t\t\t\t\t|| href.replace( RegExp.$1, \"\" ).split( \"../../../default.htm\" )[0] === win.location.host ){\n\t\t\t\t\t\t\trequestQueue.push( {\n\t\t\t\t\t\t\t\thref: href,\n\t\t\t\t\t\t\t\tmedia: media\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tmakeRequests();\n\t\t},\n\t\t\n\t\t//recurse through request queue, get css text\n\t\tmakeRequests\t= function(){\n\t\t\tif( requestQueue.length ){\n\t\t\t\tvar thisRequest = requestQueue.shift();\n\t\t\t\t\n\t\t\t\tajax( thisRequest.href, function( styles ){\n\t\t\t\t\ttranslate( styles, thisRequest.href, thisRequest.media );\n\t\t\t\t\tparsedSheets[ thisRequest.href ] = true;\n\t\t\t\t\tmakeRequests();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t\n\t\t//find media blocks in css text, convert to style blocks\n\t\ttranslate\t\t\t= function( styles, href, media ){\n\t\t\tvar qs\t\t\t= styles.match(  /@media[^\\{]+\\{([^\\{\\}]*\\{[^\\}\\{]*\\})+/gi ),\n\t\t\t\tql\t\t\t= qs && qs.length || 0,\n\t\t\t\t//try to get CSS path\n\t\t\t\thref\t\t= href.substring( 0, href.lastIndexOf( \"../../../default.htm\" )),\n\t\t\t\trepUrls\t\t= function( css ){\n\t\t\t\t\treturn css.replace( /(url\\()['\"]?([^\\/\\)'\"][^:\\)'\"]+)['\"]?(\\))/g, \"$1\" + href + \"$2$3\" );\n\t\t\t\t},\n\t\t\t\tuseMedia\t= !ql && media,\n\t\t\t\t//vars used in loop\n\t\t\t\ti\t\t\t= 0,\n\t\t\t\tj, fullq, thisq, eachq, eql;\n\n\t\t\t//if path exists, tack on trailing slash\n\t\t\tif( href.length ){ href += \"../../../default.htm\"; }\t\n\t\t\t\t\n\t\t\t//if no internal queries exist, but media attr does, use that\t\n\t\t\t//note: this currently lacks support for situations where a media attr is specified on a link AND\n\t\t\t\t//its associated stylesheet has internal CSS media queries.\n\t\t\t\t//In those cases, the media attribute will currently be ignored.\n\t\t\tif( useMedia ){\n\t\t\t\tql = 1;\n\t\t\t}\n\t\t\t\n\n\t\t\tfor( ; i < ql; i++ ){\n\t\t\t\tj\t= 0;\n\t\t\t\t\n\t\t\t\t//media attr\n\t\t\t\tif( useMedia ){\n\t\t\t\t\tfullq = media;\n\t\t\t\t\trules.push( repUrls( styles ) );\n\t\t\t\t}\n\t\t\t\t//parse for styles\n\t\t\t\telse{\n\t\t\t\t\tfullq\t= qs[ i ].match( /@media *([^\\{]+)\\{([\\S\\s]+?)$/ ) && RegExp.$1;\n\t\t\t\t\trules.push( RegExp.$2 && repUrls( RegExp.$2 ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\teachq\t= fullq.split( \",\" );\n\t\t\t\teql\t\t= eachq.length;\n\t\t\t\t\t\n\t\t\t\tfor( ; j < eql; j++ ){\n\t\t\t\t\tthisq\t= eachq[ j ];\n\t\t\t\t\tmediastyles.push( { \n\t\t\t\t\t\tmedia\t: thisq.split( \"(\" )[ 0 ].match( /(only\\s+)?([a-zA-Z]+)\\s?/ ) && RegExp.$2 || \"all\",\n\t\t\t\t\t\trules\t: rules.length - 1,\n\t\t\t\t\t\thasquery: thisq.indexOf(\"(\") > -1,\n\t\t\t\t\t\tminw\t: thisq.match( /\\(min\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || \"\" ), \n\t\t\t\t\t\tmaxw\t: thisq.match( /\\(max\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || \"\" )\n\t\t\t\t\t} );\n\t\t\t\t}\t\n\t\t\t}\n\n\t\t\tapplyMedia();\n\t\t},\n        \t\n\t\tlastCall,\n\t\t\n\t\tresizeDefer,\n\t\t\n\t\t// returns the value of 1em in pixels\n\t\tgetEmValue\t\t= function() {\n\t\t\tvar ret,\n\t\t\t\tdiv = doc.createElement('div'),\n\t\t\t\tbody = doc.body,\n\t\t\t\tfakeUsed = false;\n\t\t\t\t\t\t\t\t\t\n\t\t\tdiv.style.cssText = \"position:absolute;font-size:1em;width:1em\";\n\t\t\t\t\t\n\t\t\tif( !body ){\n\t\t\t\tbody = fakeUsed = doc.createElement( \"body\" );\n\t\t\t\tbody.style.background = \"none\";\n\t\t\t}\n\t\t\t\t\t\n\t\t\tbody.appendChild( div );\n\t\t\t\t\t\t\t\t\n\t\t\tdocElem.insertBefore( body, docElem.firstChild );\n\t\t\t\t\t\t\t\t\n\t\t\tret = div.offsetWidth;\n\t\t\t\t\t\t\t\t\n\t\t\tif( fakeUsed ){\n\t\t\t\tdocElem.removeChild( body );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbody.removeChild( div );\n\t\t\t}\n\t\t\t\n\t\t\t//also update eminpx before returning\n\t\t\tret = eminpx = parseFloat(ret);\n\t\t\t\t\t\t\t\t\n\t\t\treturn ret;\n\t\t},\n\t\t\n\t\t//cached container for 1em value, populated the first time it's needed \n\t\teminpx,\n\t\t\n\t\t//enable/disable styles\n\t\tapplyMedia\t\t\t= function( fromResize ){\n\t\t\tvar name\t\t= \"clientWidth\",\n\t\t\t\tdocElemProp\t= docElem[ name ],\n\t\t\t\tcurrWidth \t= doc.compatMode === \"CSS1Compat\" && docElemProp || doc.body[ name ] || docElemProp,\n\t\t\t\tstyleBlocks\t= {},\n\t\t\t\tlastLink\t= links[ links.length-1 ],\n\t\t\t\tnow \t\t= (new Date()).getTime();\n\n\t\t\t//throttle resize calls\t\n\t\t\tif( fromResize && lastCall && now - lastCall < resizeThrottle ){\n\t\t\t\tclearTimeout( resizeDefer );\n\t\t\t\tresizeDefer = setTimeout( applyMedia, resizeThrottle );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlastCall\t= now;\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\tfor( var i in mediastyles ){\n\t\t\t\tvar thisstyle = mediastyles[ i ],\n\t\t\t\t\tmin = thisstyle.minw,\n\t\t\t\t\tmax = thisstyle.maxw,\n\t\t\t\t\tminnull = min === null,\n\t\t\t\t\tmaxnull = max === null,\n\t\t\t\t\tem = \"em\";\n\t\t\t\t\n\t\t\t\tif( !!min ){\n\t\t\t\t\tmin = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );\n\t\t\t\t}\n\t\t\t\tif( !!max ){\n\t\t\t\t\tmax = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true\n\t\t\t\tif( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){\n\t\t\t\t\t\tif( !styleBlocks[ thisstyle.media ] ){\n\t\t\t\t\t\t\tstyleBlocks[ thisstyle.media ] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//remove any existing respond style element(s)\n\t\t\tfor( var i in appendedEls ){\n\t\t\t\tif( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){\n\t\t\t\t\thead.removeChild( appendedEls[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//inject active styles, grouped by media type\n\t\t\tfor( var i in styleBlocks ){\n\t\t\t\tvar ss\t\t= doc.createElement( \"style\" ),\n\t\t\t\t\tcss\t\t= styleBlocks[ i ].join( \"\\n\" );\n\t\t\t\t\n\t\t\t\tss.type = \"text/css\";\t\n\t\t\t\tss.media\t= i;\n\t\t\t\t\n\t\t\t\t//originally, ss was appended to a documentFragment and sheets were appended in bulk.\n\t\t\t\t//this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!\n\t\t\t\thead.insertBefore( ss, lastLink.nextSibling );\n\t\t\t\t\n\t\t\t\tif ( ss.styleSheet ){ \n\t\t        \tss.styleSheet.cssText = css;\n\t\t        } \n\t\t        else {\n\t\t\t\t\tss.appendChild( doc.createTextNode( css ) );\n\t\t        }\n\t\t        \n\t\t\t\t//push to appendedEls to track for later removal\n\t\t\t\tappendedEls.push( ss );\n\t\t\t}\n\t\t},\n\t\t//tweaked Ajax functions from Quirksmode\n\t\tajax = function( url, callback ) {\n\t\t\tvar req = xmlHttp();\n\t\t\tif (!req){\n\t\t\t\treturn;\n\t\t\t}\t\n\t\t\treq.open( \"GET\", url, true );\n\t\t\treq.onreadystatechange = function () {\n\t\t\t\tif ( req.readyState != 4 || req.status != 200 && req.status != 304 ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcallback( req.responseText );\n\t\t\t}\n\t\t\tif ( req.readyState == 4 ){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treq.send( null );\n\t\t},\n\t\t//define ajax obj \n\t\txmlHttp = (function() {\n\t\t\tvar xmlhttpmethod = false;\t\n\t\t\ttry {\n\t\t\t\txmlhttpmethod = new XMLHttpRequest();\n\t\t\t}\n\t\t\tcatch( e ){\n\t\t\t\txmlhttpmethod = new ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t\t\t}\n\t\t\treturn function(){\n\t\t\t\treturn xmlhttpmethod;\n\t\t\t};\n\t\t})();\n\t\n\t//translate CSS\n\tripCSS();\n\t\n\t//expose update for re-running respond later on\n\trespond.update = ripCSS;\n\t\n\t//adjust on resize\n\tfunction callMedia(){\n\t\tapplyMedia( true );\n\t}\n\tif( win.addEventListener ){\n\t\twin.addEventListener( \"resize\", callMedia, false );\n\t}\n\telse if( win.attachEvent ){\n\t\twin.attachEvent( \"onresize\", callMedia );\n\t}\n})(this);"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/sliders.js",
    "content": "var Sliders = function () {\n\n    // default sliders\n    $(\"#default-slider\").slider();\n\n    // snap inc\n    $(\"#snap-inc-slider\").slider({\n        value: 50,\n        min: 0,\n        max: 1000,\n        step: 100,\n        slide: function (event, ui) {\n            $(\"#snap-inc-slider-amount\").text(\"$\" + ui.value);\n        }\n    });\n\n    $(\"#snap-inc-slider-amount\").text(\"$\" + $(\"#snap-inc-slider\").slider(\"value\"));\n\n    // range slider\n    $(\"#slider-range\").slider({\n        range: true,\n        min: 0,\n        max: 500,\n        values: [75, 300],\n        slide: function (event, ui) {\n            $(\"#slider-range-amount\").text(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n        }\n    });\n\n    $(\"#slider-range-amount\").text(\"$\" + $(\"#slider-range\").slider(\"values\", 0) + \" - $\" + $(\"#slider-range\").slider(\"values\", 1));\n\n    //range max\n\n    $(\"#slider-range-max\").slider({\n        range: \"max\",\n        min: 1,\n        max: 10,\n        value: 2,\n        slide: function (event, ui) {\n            $(\"#slider-range-max-amount\").text(ui.value);\n        }\n    });\n\n    $(\"#slider-range-max-amount\").text($(\"#slider-range-max\").slider(\"value\"));\n\n    // range min\n    $(\"#slider-range-min\").slider({\n        range: \"min\",\n        value: 37,\n        min: 1,\n        max: 700,\n        slide: function (event, ui) {\n            $(\"#slider-range-min-amount\").text(\"$\" + ui.value);\n        }\n    });\n\n    $(\"#slider-range-min-amount\").text(\"$\" + $(\"#slider-range-min\").slider(\"value\"));\n\n    //\n    // setup graphic EQ\n    $( \"#eq > span\" ).each(function() {\n    // read initial values from markup and remove that\n        var value = parseInt( $( this ).text(), 10 );\n        $( this ).empty().slider({\n            value: value,\n            range: \"min\",\n            animate: true,\n            orientation: \"vertical\"\n        });\n    });\n\n    // bound to select\n\n    var select = $( \"#minbeds\" );\n    var slider = $( \"<div id='slider'></div>\" ).insertAfter( select ).slider({\n        min: 1,\n        max: 6,\n        range: \"min\",\n        value: select[ 0 ].selectedIndex + 1,\n        slide: function( event, ui ) {\n            select[ 0 ].selectedIndex = ui.value - 1;\n        }\n    });\n    $( \"#minbeds\" ).change(function() {\n        slider.slider( \"value\", this.selectedIndex + 1 );\n    });\n\n    // vertical slider\n    $(\"#slider-vertical\").slider({\n        orientation: \"vertical\",\n        range: \"min\",\n        min: 0,\n        max: 100,\n        value: 60,\n        slide: function (event, ui) {\n            $(\"#slider-vertical-amount\").text(ui.value);\n        }\n    });\n    $(\"#slider-vertical-amount\").text($(\"#slider-vertical\").slider(\"value\"));\n\n    // vertical range sliders\n    $(\"#slider-range-vertical\").slider({\n        orientation: \"vertical\",\n        range: true,\n        values: [17, 67],\n        slide: function (event, ui) {\n            $(\"#slider-range-vertical-amount\").text(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n        }\n    });\n\n    $(\"#slider-range-vertical-amount\").text(\"$\" + $(\"#slider-range-vertical\").slider(\"values\", 0) + \" - $\" + $(\"#slider-range-vertical\").slider(\"values\", 1));\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/sparkline-chart.js",
    "content": "var Script = function () {\n\n//sparkline chart\n\n    $(\"table.chart-line\").each(function () {\n        var colors = [];\n        $(\"table.chart-line thead th:not(:first)\").each(function () {\n            colors.push($(this).css(\"color\"));\n        });\n        $(this).graphTable({\n            series:'columns',\n            position:'replace',\n            width:'100%',\n            height:'205px',\n            colors:colors,\n            legend:false,\n            marginLeft:\"40px\"\n        }, {\n            legend:{\n                position:\"ne\"\n            },\n            series:{\n                lines:{ show:true },\n                points:{ show:true }\n            }\n        })\n    });\n\n    $(\"table.chart-bar\").each(function () {\n        var colors = [];\n        $(\"table.chart-line thead th:not(:first)\").each(function () {\n            colors.push($(this).css(\"color\"));\n        });\n        $(this).graphTable(\n            {\n                series:'columns',\n                position:'replace',\n                width:'100%',\n                height:'205px',\n                colors:colors,\n                legend:false,\n                marginLeft:\"40px\"\n            }, {\n                series:{\n                    lines: {\n                        show: false,\n                        lineWidth: 2\n                    },\n                    points: {show: false},\n                    shadowSize: 2,\n                    bars:{\n                        show:true,\n                        lineWidth:1,\n                        barWidth:0.8,\n                        fill:true,\n                        align:\"left\",\n                        multiplebars:false\n                    }\n                },\n                grid: {\n                    hoverable: false,\n                    show: true,\n                    borderWidth: 0,\n                    labelMargin: 12\n                },\n\n                legend: {\n                    show: false,\n                    position:\"ne\"\n                }\n            });\n    });\n\n    /* spark line start */\n    $(\"#metro-sparkline-type1\").sparkline(\n        [5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7],\n        {\n            type:\"line\",\n            height:60,\n            lineColor: '#457bb2',\n            fillColor: '#dff1ff',\n            spotColor: '#de577b',\n            minSpotColor: '#de577b',\n            highlightLineColor: '#de577b'\n        });\n    $(\"#metro-sparkline-type2\").sparkline(\n        [5, 6, 7, 2, 0, -4, -2, 4, 5, 6, 7, 2, 0, -4, -2, 4 ],\n        {\n            type:\"bar\",\n            height:60,\n            barColor: '#4f8ac7',\n            negBarColor: '#da587c'\n        });\n    $(\"#metro-sparkline-type3\").sparkline(\n        [5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3],\n        {\n            type:\"discrete\",\n            height:60,\n            lineColor: '#7e9d43'\n        });\n    /* spark line end */\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/tree.js",
    "content": "var TreeView = function () {\n\n        // handle collapse/expand for tree_1\n        $('#tree_1_collapse').click(function () {\n            $('.tree-toggle', $('#tree_1 > li > ul')).addClass(\"closed\");\n            $('.branch', $('#tree_1 > li > ul')).removeClass(\"in\");\n        });\n\n        $('#tree_1_expand').click(function () {\n            $('.tree-toggle', $('#tree_1 > li > ul')).removeClass(\"closed\");\n            $('.branch', $('#tree_1 > li > ul')).addClass(\"in\");\n        });\n\n        // handle collapse/expand for tree_2\n        $('#tree_2_collapse').click(function () {\n            $('.tree-toggle', $('#tree_2 > li > ul')).addClass(\"closed\");\n            $('.branch', $('#tree_2 > li > ul')).removeClass(\"in\");\n        });\n\n        $('#tree_2_expand').click(function () {\n            //$('.tree-toggle', $('#tree_2 > li > ul')).removeClass(\"closed\");\n            // iterate tree nodes and exppand all nodes\n            $('.tree-toggle', $('#tree_2 > li > ul')).each(function () {\n                $(this).click(); //trigger tree node click\n            });\n            $('.branch', $('#tree_2 > li > ul')).addClass(\"in\");\n        });\n\n        //This is a quick example of capturing the select event on tree leaves, not branches\n        $(\"#tree_1\").on(\"nodeselect.tree.data-api\", \"[data-role=leaf]\", function (e) {\n            var output = \"\";\n\n            output += \"Node nodeselect event fired:\\n\";\n            output += \"Node Type: leaf\\n\";\n            output += \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\";\n            output += \"Parentage: \" + e.node.parentage.join(\"/\");\n\n            alert(output);\n        });\n\n        //This is a quick example of capturing the select event on tree branches, not leaves\n        $(\"#tree_1\").on(\"nodeselect.tree.data-api\", \"[role=branch]\", function (e) {\n            var output = \"Node nodeselect event fired:\\n\"; + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n        //Listening for the 'openbranch' event. Look for e.node, which is the actual node the user opens\n\n        $(\"#tree_1\").on(\"openbranch.tree\", \"[data-toggle=branch]\", function (e) {\n\n            var output = \"Node openbranch event fired:\\n\" + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n\n        //Listening for the 'closebranch' event. Look for e.node, which is the actual node the user closed\n\n        $(\"#tree_1\").on(\"closebranch.tree\", \"[data-toggle=branch]\", function (e) {\n\n            var output = \"Node closebranch event fired:\\n\" + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/bs_js/vmaps-scripts.js",
    "content": "var Script = function () {\n\n    //    world vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_world').vectorMap({\n            map: 'world_en',\n            backgroundColor: '#333333',\n            color: '#ffffff',\n            hoverOpacity: 0.7,\n            selectedColor: '#666666',\n            enableZoom: true,\n            showTooltip: true,\n            values: sample_data,\n            scaleColors: ['#C8EEFF', '#006491'],\n            normalizeFunction: 'polynomial'\n        });\n    });\n\n    //    russia vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_russia').vectorMap({\n            map: 'russia_en',\n            backgroundColor: '#333333',\n            color: '#ffffff',\n            hoverOpacity: 0.7,\n            selectedColor: '#999999',\n            enableZoom: true,\n            showTooltip: true,\n            values: sample_data,\n            scaleColors: ['#C8EEFF', '#006491'],\n            normalizeFunction: 'polynomial'\n        });\n    });\n\n    //    germany vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_germany').vectorMap({\n            map: 'germany_en',\n            onRegionClick: function(element, code, region)\n            {\n                var message = 'You clicked \"'\n                    + region\n                    + '\" which has the code: '\n                    + code.toUpperCase();\n\n                alert(message);\n            }\n        });\n    });\n\n    //    usa vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_usa').vectorMap({\n            map: 'usa_en',\n            enableZoom: true,\n            showTooltip: true,\n            selectedRegion: 'MO'\n        });\n    });\n\n    //    europe vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_europe').vectorMap({\n            map: 'europe_en',\n            enableZoom: false,\n            showTooltip: false\n        });\n    });\n\n\n}();"
  },
  {
    "path": "src/main/webapp/jslib/chart/g.bar.js",
    "content": "/*!\n * g.Raphael 0.5 - Charting library, based on Raphaël\n *\n * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n(function () {\n\tvar mmin = Math.min,\n\t\tmmax = Math.max;\n\n\tfunction finger(x, y, width, height, dir, ending, isPath, paper) {\n\t\tvar path,\n\t\t\tends = { round: 'round', sharp: 'sharp', soft: 'soft', square: 'square' };\n\n\t\t// dir 0 for horizontal and 1 for vertical\n\t\tif ((dir && !height) || (!dir && !width)) {\n\t\t\treturn isPath ? \"\" : paper.path();\n\t\t}\n\n\t\tending = ends[ending] || \"square\";\n\t\theight = Math.round(height);\n\t\twidth = Math.round(width);\n\t\tx = Math.round(x);\n\t\ty = Math.round(y);\n\n\t\tswitch (ending) {\n\t\t\tcase \"round\":\n\t\t\t\tif (!dir) {\n\t\t\t\t\tvar r = ~~(height / 2);\n\n\t\t\t\t\tif (width < r) {\n\t\t\t\t\t\tr = width;\n\t\t\t\t\t\tpath = [\n\t\t\t\t\t\t\t\"M\", x + .5, y + .5 - ~~(height / 2),\n\t\t\t\t\t\t\t\"l\", 0, 0,\n\t\t\t\t\t\t\t\"a\", r, ~~(height / 2), 0, 0, 1, 0, height,\n\t\t\t\t\t\t\t\"l\", 0, 0,\n\t\t\t\t\t\t\t\"z\"\n\t\t\t\t\t\t];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpath = [\n\t\t\t\t\t\t\t\"M\", x + .5, y + .5 - r,\n\t\t\t\t\t\t\t\"l\", width - r, 0,\n\t\t\t\t\t\t\t\"a\", r, r, 0, 1, 1, 0, height,\n\t\t\t\t\t\t\t\"l\", r - width, 0,\n\t\t\t\t\t\t\t\"z\"\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tr = ~~(width / 2);\n\n\t\t\t\t\tif (height < r) {\n\t\t\t\t\t\tr = height;\n\t\t\t\t\t\tpath = [\n\t\t\t\t\t\t\t\"M\", x - ~~(width / 2), y,\n\t\t\t\t\t\t\t\"l\", 0, 0,\n\t\t\t\t\t\t\t\"a\", ~~(width / 2), r, 0, 0, 1, width, 0,\n\t\t\t\t\t\t\t\"l\", 0, 0,\n\t\t\t\t\t\t\t\"z\"\n\t\t\t\t\t\t];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpath = [\n\t\t\t\t\t\t\t\"M\", x - r, y,\n\t\t\t\t\t\t\t\"l\", 0, r - height,\n\t\t\t\t\t\t\t\"a\", r, r, 0, 1, 1, width, 0,\n\t\t\t\t\t\t\t\"l\", 0, height - r,\n\t\t\t\t\t\t\t\"z\"\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"sharp\":\n\t\t\t\tif (!dir) {\n\t\t\t\t\tvar half = ~~(height / 2);\n\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x, y + half,\n\t\t\t\t\t\t\"l\", 0, -height, mmax(width - half, 0), 0, mmin(half, width), half, -mmin(half, width), half + (half * 2 < height),\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\thalf = ~~(width / 2);\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x + half, y,\n\t\t\t\t\t\t\"l\", -width, 0, 0, -mmax(height - half, 0), half, -mmin(half, height), half, mmin(half, height), half,\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"square\":\n\t\t\t\tif (!dir) {\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x, y + ~~(height / 2),\n\t\t\t\t\t\t\"l\", 0, -height, width, 0, 0, height,\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x + ~~(width / 2), y,\n\t\t\t\t\t\t\"l\", 1 - width, 0, 0, -height, width - 1, 0,\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"soft\":\n\t\t\t\tif (!dir) {\n\t\t\t\t\tr = mmin(width, Math.round(height / 5));\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x + .5, y + .5 - ~~(height / 2),\n\t\t\t\t\t\t\"l\", width - r, 0,\n\t\t\t\t\t\t\"a\", r, r, 0, 0, 1, r, r,\n\t\t\t\t\t\t\"l\", 0, height - r * 2,\n\t\t\t\t\t\t\"a\", r, r, 0, 0, 1, -r, r,\n\t\t\t\t\t\t\"l\", r - width, 0,\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tr = mmin(Math.round(width / 5), height);\n\t\t\t\t\tpath = [\n\t\t\t\t\t\t\"M\", x - ~~(width / 2), y,\n\t\t\t\t\t\t\"l\", 0, r - height,\n\t\t\t\t\t\t\"a\", r, r, 0, 0, 1, r, -r,\n\t\t\t\t\t\t\"l\", width - 2 * r, 0,\n\t\t\t\t\t\t\"a\", r, r, 0, 0, 1, r, r,\n\t\t\t\t\t\t\"l\", 0, height - r,\n\t\t\t\t\t\t\"z\"\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t}\n\n\t\tif (isPath) {\n\t\t\treturn path.join(\",\");\n\t\t} else {\n\t\t\treturn paper.path(path);\n\t\t}\n\t}\n\n\t/*\n\t * Vertical Barchart\n\t */\n\tfunction VBarchart(paper, x, y, width, height, values, opts) {\n\t\topts = opts || {};\n\n\t\tvar chartinst = this,\n\t\t\ttype = opts.type || \"square\",\n\t\t\tgutter = parseFloat(opts.gutter || \"20%\"),\n\t\t\tchart = paper.set(),\n\t\t\tbars = paper.set(),\n\t\t\tcovers = paper.set(),\n\t\t\tcovers2 = paper.set(),\n\t\t\ttotal = Math.max.apply(Math, values),\n\t\t\tstacktotal = [],\n\t\t\tmulti = 0,\n\t\t\tcolors = opts.colors || chartinst.colors,\n\t\t\tlen = values.length;\n\n\t\tif (Raphael.is(values[0], \"array\")) {\n\t\t\ttotal = [];\n\t\t\tmulti = len;\n\t\t\tlen = 0;\n\n\t\t\tfor (var i = values.length; i--;) {\n\t\t\t\tbars.push(paper.set());\n\t\t\t\ttotal.push(Math.max.apply(Math, values[i]));\n\t\t\t\tlen = Math.max(len, values[i].length);\n\t\t\t}\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tfor (var i = len; i--;) {\n\t\t\t\t\tvar tot = 0;\n\n\t\t\t\t\tfor (var j = values.length; j--;) {\n\t\t\t\t\t\ttot +=+ values[j][i] || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tstacktotal.push(tot);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = values.length; i--;) {\n\t\t\t\tif (values[i].length < len) {\n\t\t\t\t\tfor (var j = len; j--;) {\n\t\t\t\t\t\tvalues[i].push(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal = Math.max.apply(Math, opts.stacked ? stacktotal : total);\n\t\t}\n\t\t\n\t\ttotal = (opts.to) || total;\n\n\t\tvar barwidth = width / (len * (100 + gutter) + gutter) * 100,\n\t\t\tbarhgutter = barwidth * gutter / 100,\n\t\t\tbarvgutter = opts.vgutter == null ? 20 : opts.vgutter,\n\t\t\tstack = [],\n\t\t\tX = x + barhgutter,\n\t\t\tY = (height - 2 * barvgutter) / total;\n\n\t\tif (!opts.stretch) {\n\t\t\tbarhgutter = Math.round(barhgutter);\n\t\t\tbarwidth = Math.floor(barwidth);\n\t\t}\n\n\t\t!opts.stacked && (barwidth /= multi || 1);\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tstack = [];\n\n\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\tvar h = Math.round((multi ? values[j][i] : values[i]) * Y),\n\t\t\t\t\ttop = y + height - barvgutter - h,\n\t\t\t\t\tbar = finger(Math.round(X + barwidth / 2), top + h, barwidth, h, true, type, null, paper).attr({ stroke: \"none\", fill: colors[multi ? j : i] });\n\n\t\t\t\tif (multi) {\n\t\t\t\t\tbars[j].push(bar);\n\t\t\t\t} else {\n\t\t\t\t\tbars.push(bar);\n\t\t\t\t}\n\n\t\t\t\tbar.y = top;\n\t\t\t\tbar.x = Math.round(X + barwidth / 2);\n\t\t\t\tbar.w = barwidth;\n\t\t\t\tbar.h = h;\n\t\t\t\tbar.value = multi ? values[j][i] : values[i];\n\n\t\t\t\tif (!opts.stacked) {\n\t\t\t\t\tX += barwidth;\n\t\t\t\t} else {\n\t\t\t\t\tstack.push(bar);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tvar cvr;\n\n\t\t\t\tcovers2.push(cvr = paper.rect(stack[0].x - stack[0].w / 2, y, barwidth, height).attr(chartinst.shim));\n\t\t\t\tcvr.bars = paper.set();\n\n\t\t\t\tvar size = 0;\n\n\t\t\t\tfor (var s = stack.length; s--;) {\n\t\t\t\t\tstack[s].toFront();\n\t\t\t\t}\n\n\t\t\t\tfor (var s = 0, ss = stack.length; s < ss; s++) {\n\t\t\t\t\tvar bar = stack[s],\n\t\t\t\t\t\tcover,\n\t\t\t\t\t\th = (size + bar.value) * Y,\n\t\t\t\t\t\tpath = finger(bar.x, y + height - barvgutter - !!size * .5, barwidth, h, true, type, 1, paper);\n\n\t\t\t\t\tcvr.bars.push(bar);\n\t\t\t\t\tsize && bar.attr({path: path});\n\t\t\t\t\tbar.h = h;\n\t\t\t\t\tbar.y = y + height - barvgutter - !!size * .5 - h;\n\t\t\t\t\tcovers.push(cover = paper.rect(bar.x - bar.w / 2, bar.y, barwidth, bar.value * Y).attr(chartinst.shim));\n\t\t\t\t\tcover.bar = bar;\n\t\t\t\t\tcover.value = bar.value;\n\t\t\t\t\tsize += bar.value;\n\t\t\t\t}\n\n\t\t\t\tX += barwidth;\n\t\t\t}\n\n\t\t\tX += barhgutter;\n\t\t}\n\n\t\tcovers2.toFront();\n\t\tX = x + barhgutter;\n\n\t\tif (!opts.stacked) {\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\t\tvar cover;\n\n\t\t\t\t\tcovers.push(cover = paper.rect(Math.round(X), y + barvgutter, barwidth, height - barvgutter).attr(chartinst.shim));\n\t\t\t\t\tcover.bar = multi ? bars[j][i] : bars[i];\n\t\t\t\t\tcover.value = cover.bar.value;\n\t\t\t\t\tX += barwidth;\n\t\t\t\t}\n\n\t\t\t\tX += barhgutter;\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar xdim = chartinst.snapEnds(0, len, 1),\n\t\t\tminx = xdim.from,\n\t\t\tmaxx = xdim.to,\n\t\t\tydim = chartinst.snapEnds(0, total, 1),\n\t\t\tminy = ydim.from,\n\t\t\tmaxy = ydim.to;\n\t\tvar axis = paper.set();\n\n\t\tif (opts.axis) {\n\t\t\tvar ax = (opts.axis + \"\").split(/[,\\s]+/);\n\t\t\t// +ax[0] && axis.push(chartinst.axis(x, y + gutter, width, minx, maxx, opts.axisxstep || Math.floor((width) / 20), 2, paper));\n\t\t\t+ax[0] && axis.push(paper.path([\"M\", x, y + gutter + 0.5,\"h\", width]));\n\t\t\t+ax[1] && axis.push(chartinst.axis(x + width, y + height - gutter, height - 2 * gutter, miny, maxy, opts.axisystep || Math.floor((height - gutter) / 20), 3, paper));\n\t\t\t// +ax[2] && axis.push(chartinst.axis(x, y + height - gutter, width, minx, maxx, opts.axisxstep || Math.floor((width) / 20), 0, paper));\n\t\t\t+ax[2] && axis.push(paper.path([\"M\", x, y + height - gutter + 0.5,\"h\", width]));\n\t\t\t+ax[3] && axis.push(chartinst.axis(x, y + height - gutter, height - 2 * gutter, miny, maxy, opts.axisystep || Math.floor((height - gutter) / 20), 1, paper));\n\t\t}\n\n\n\t\tchart.label = function (labels, isBottom) {\n\t\t\tlabels = labels || [];\n\t\t\tthis.labels = paper.set();\n\n\t\t\tvar L, l = -Infinity;\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\tvar tot = 0;\n\n\t\t\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\t\t\ttot += multi ? values[j][i] : values[i];\n\t\t\t\t\t\tvar bar = multi ? bars[j][i] : bars[i];\n\n\t\t\t\t\t\tif (j == multi - 1) {\n\t\t\t\t\t\t\tvar label = chartinst.labelise(labels[i], tot, total);\n\n\t\t\t\t\t\t\tL = paper.text(bar.x, y + height - barvgutter / 2, label).insertBefore(covers[i * (multi || 1) + j]);\n\n\t\t\t\t\t\t\tvar bb = L.getBBox();\n\n\t\t\t\t\t\t\tif (bb.x - 7 < l) {\n\t\t\t\t\t\t\t\tL.remove();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.labels.push(L);\n\t\t\t\t\t\t\t\tl = bb.x + bb.width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\t\t\tvar label = chartinst.labelise(multi ? labels[j] && labels[j][i] : labels[i], multi ? values[j][i] : values[i], total);\n\t\t\t\t\t\tvar bar = multi ? bars[j][i] : bars[i];\n\n\t\t\t\t\t\tL = paper.text(bar.x, isBottom ? y + height - barvgutter / 2 : bar.y - 10, label).insertBefore(covers[i * (multi || 1) + j]);\n\n\t\t\t\t\t\tvar bb = L.getBBox();\n\n\t\t\t\t\t\tif (bb.x - 7 < l) {\n\t\t\t\t\t\t\tL.remove();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.labels.push(L);\n\t\t\t\t\t\t\tl = bb.x + bb.width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.hover = function (fin, fout) {\n\t\t\tcovers2.hide();\n\t\t\tcovers.show();\n\t\t\tcovers.mouseover(fin).mouseout(fout);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.hoverColumn = function (fin, fout) {\n\t\t\tcovers.hide();\n\t\t\tcovers2.show();\n\t\t\tfout = fout || function () {};\n\t\t\tcovers2.mouseover(fin).mouseout(fout);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.click = function (f) {\n\t\t\tcovers2.hide();\n\t\t\tcovers.show();\n\t\t\tcovers.click(f);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.each = function (f) {\n\t\t\tif (!Raphael.is(f, \"function\")) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tfor (var i = covers.length; i--;) {\n\t\t\t\tf.call(covers[i]);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.eachColumn = function (f) {\n\t\t\tif (!Raphael.is(f, \"function\")) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tfor (var i = covers2.length; i--;) {\n\t\t\t\tf.call(covers2[i]);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.clickColumn = function (f) {\n\t\t\tcovers.hide();\n\t\t\tcovers2.show();\n\t\t\tcovers2.click(f);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.push(bars, covers, covers2);\n\t\tchart.bars = bars;\n\t\tchart.covers = covers;\n\t\tchart.axis = axis;\n\t\t\n\t\treturn chart;\n\t};\n\n\t/**\n\t * Horizontal Barchart\n\t */\n\tfunction HBarchart(paper, x, y, width, height, values, opts) {\n\t\topts = opts || {};\n\n\t\tvar chartinst = this,\n\t\t\ttype = opts.type || \"square\",\n\t\t\tgutter = parseFloat(opts.gutter || \"20%\"),\n\t\t\tchart = paper.set(),\n\t\t\tbars = paper.set(),\n\t\t\tcovers = paper.set(),\n\t\t\tcovers2 = paper.set(),\n\t\t\ttotal = Math.max.apply(Math, values),\n\t\t\tstacktotal = [],\n\t\t\tmulti = 0,\n\t\t\tcolors = opts.colors || chartinst.colors,\n\t\t\tlen = values.length;\n\n\t\tif (Raphael.is(values[0], \"array\")) {\n\t\t\ttotal = [];\n\t\t\tmulti = len;\n\t\t\tlen = 0;\n\n\t\t\tfor (var i = values.length; i--;) {\n\t\t\t\tbars.push(paper.set());\n\t\t\t\ttotal.push(Math.max.apply(Math, values[i]));\n\t\t\t\tlen = Math.max(len, values[i].length);\n\t\t\t}\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tfor (var i = len; i--;) {\n\t\t\t\t\tvar tot = 0;\n\t\t\t\t\tfor (var j = values.length; j--;) {\n\t\t\t\t\t\ttot +=+ values[j][i] || 0;\n\t\t\t\t\t}\n\t\t\t\t\tstacktotal.push(tot);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = values.length; i--;) {\n\t\t\t\tif (values[i].length < len) {\n\t\t\t\t\tfor (var j = len; j--;) {\n\t\t\t\t\t\tvalues[i].push(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal = Math.max.apply(Math, opts.stacked ? stacktotal : total);\n\t\t}\n\t\t\n\t\ttotal = (opts.to) || total;\n\n\t\tvar barheight = Math.floor(height / (len * (100 + gutter) + gutter) * 100),\n\t\t\tbargutter = Math.floor(barheight * gutter / 100),\n\t\t\tstack = [],\n\t\t\tY = y + bargutter,\n\t\t\tX = (width - 1) / total;\n\n\t\t!opts.stacked && (barheight /= multi || 1);\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tstack = [];\n\n\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\tvar val = multi ? values[j][i] : values[i],\n\t\t\t\t\tbar = finger(x, Y + barheight / 2, Math.round(val * X), barheight - 1, false, type, null, paper).attr({stroke: \"none\", fill: colors[multi ? j : i]});\n\n\t\t\t\tif (multi) {\n\t\t\t\t\tbars[j].push(bar);\n\t\t\t\t} else {\n\t\t\t\t\tbars.push(bar);\n\t\t\t\t}\n\n\t\t\t\tbar.x = x + Math.round(val * X);\n\t\t\t\tbar.y = Y + barheight / 2;\n\t\t\t\tbar.w = Math.round(val * X);\n\t\t\t\tbar.h = barheight;\n\t\t\t\tbar.value = +val;\n\n\t\t\t\tif (!opts.stacked) {\n\t\t\t\t\tY += barheight;\n\t\t\t\t} else {\n\t\t\t\t\tstack.push(bar);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tvar cvr = paper.rect(x, stack[0].y - stack[0].h / 2, width, barheight).attr(chartinst.shim);\n\n\t\t\t\tcovers2.push(cvr);\n\t\t\t\tcvr.bars = paper.set();\n\n\t\t\t\tvar size = 0;\n\n\t\t\t\tfor (var s = stack.length; s--;) {\n\t\t\t\t\tstack[s].toFront();\n\t\t\t\t}\n\n\t\t\t\tfor (var s = 0, ss = stack.length; s < ss; s++) {\n\t\t\t\t\tvar bar = stack[s],\n\t\t\t\t\t\tcover,\n\t\t\t\t\t\tval = Math.round((size + bar.value) * X),\n\t\t\t\t\t\tpath = finger(x, bar.y, val, barheight - 1, false, type, 1, paper);\n\n\t\t\t\t\tcvr.bars.push(bar);\n\t\t\t\t\tsize && bar.attr({ path: path });\n\t\t\t\t\tbar.w = val;\n\t\t\t\t\tbar.x = x + val;\n\t\t\t\t\tcovers.push(cover = paper.rect(x + size * X, bar.y - bar.h / 2, bar.value * X, barheight).attr(chartinst.shim));\n\t\t\t\t\tcover.bar = bar;\n\t\t\t\t\tsize += bar.value;\n\t\t\t\t}\n\n\t\t\t\tY += barheight;\n\t\t\t}\n\n\t\t\tY += bargutter;\n\t\t}\n\n\t\tcovers2.toFront();\n\t\tY = y + bargutter;\n\n\t\tif (!opts.stacked) {\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tfor (var j = 0; j < (multi || 1); j++) {\n\t\t\t\t\tvar cover = paper.rect(x, Y, width, barheight).attr(chartinst.shim);\n\n\t\t\t\t\tcovers.push(cover);\n\t\t\t\t\tcover.bar = multi ? bars[j][i] : bars[i];\n\t\t\t\t\tcover.value = cover.bar.value;\n\t\t\t\t\tY += barheight;\n\t\t\t\t}\n\n\t\t\t\tY += bargutter;\n\t\t\t}\n\t\t}\n\n\t\tvar xdim = chartinst.snapEnds(0, total, 1),\n\t\t\tminx = xdim.from,\n\t\t\tmaxx = xdim.to,\n\t\t\tydim = chartinst.snapEnds(0, len, 1),\n\t\t\tminy = ydim.from,\n\t\t\tmaxy = ydim.to;\n\t\tvar axis = paper.set();\n\n\t\tif (opts.axis) {\n\t\t\tvar ax = (opts.axis + \"\").split(/[,\\s]+/);\n\t\t\t+ax[0] && axis.push(chartinst.axis(x, y, width, minx, maxx, opts.axisxstep || Math.floor((width) / 20), 2, paper));\n\t\t\t//+ax[1] && axis.push(chartinst.axis(x + width, y + height, height, miny, maxy, opts.axisystep || Math.floor((height - gutter) / 20), 3, paper));\n\t\t\t+ax[1] && axis.push(paper.path([\"M\", x+width+ 0.5, y,\"v\", height]));\n\t\t\t+ax[2] && axis.push(chartinst.axis(x, y + height, width, minx, maxx, opts.axisxstep || Math.floor((width) / 20), 0, paper));\n\t\t\t//+ax[3] && axis.push(chartinst.axis(x, y + height, height, miny, maxy, opts.axisystep || Math.floor((height - gutter) / 20), 1, paper));\n\t\t\t+ax[3] && axis.push(paper.path([\"M\", x+ 0.5, y,\"v\", height]));\n\t\t}\n\t\t\n\t\tchart.label = function (labels, isRight) {\n\t\t\tlabels = labels || [];\n\t\t\tthis.labels = paper.set();\n\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tfor (var j = 0; j < multi; j++) {\n\t\t\t\t\tvar bar = multi ? bars[j][i] : bars[i];\n\t\t\t\t\tvar label = chartinst.labelise(multi ? labels[j] && labels[j][i] : labels[i], multi ? values[j][i] : values[i], total),\n\t\t\t\t\t\tX = isRight ? bar.x - barheight / 2 + 3 : x + 5,\n\t\t\t\t\t\tA = isRight ? \"end\" : \"start\",\n\t\t\t\t\t\tL;\n\n\t\t\t\t\tthis.labels.push(L = paper.text(X, bar.y, label).attr({ \"text-anchor\": A }).insertBefore(covers[i * (multi || 1) + j]));\n\n\t\t\t\t\tif (L.getBBox().x < x + 5) {\n\t\t\t\t\t\tL.attr({x: x + 5, \"text-anchor\": \"start\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbar.label = L;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.hover = function (fin, fout) {\n\t\t\tcovers2.hide();\n\t\t\tcovers.show();\n\t\t\tfout = fout || function () {};\n\t\t\tcovers.mouseover(fin).mouseout(fout);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.hoverColumn = function (fin, fout) {\n\t\t\tcovers.hide();\n\t\t\tcovers2.show();\n\t\t\tfout = fout || function () {};\n\t\t\tcovers2.mouseover(fin).mouseout(fout);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.each = function (f) {\n\t\t\tif (!Raphael.is(f, \"function\")) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tfor (var i = covers.length; i--;) {\n\t\t\t\tf.call(covers[i]);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.eachColumn = function (f) {\n\t\t\tif (!Raphael.is(f, \"function\")) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tfor (var i = covers2.length; i--;) {\n\t\t\t\tf.call(covers2[i]);\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.click = function (f) {\n\t\t\tcovers2.hide();\n\t\t\tcovers.show();\n\t\t\tcovers.click(f);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.clickColumn = function (f) {\n\t\t\tcovers.hide();\n\t\t\tcovers2.show();\n\t\t\tcovers2.click(f);\n\t\t\treturn this;\n\t\t};\n\n\t\tchart.push(bars, covers, covers2);\n\t\tchart.bars = bars;\n\t\tchart.covers = covers;\n\t\treturn chart;\n\t};\n\t\n\t//inheritance\n\tvar F = function() {};\n\tF.prototype = Raphael.g;\n\tHBarchart.prototype = VBarchart.prototype = new F;\n\t\n\tRaphael.fn.hbarchart = function(x, y, width, height, values, opts) {\n\t\treturn new HBarchart(this, x, y, width, height, values, opts);\n\t};\n\t\n\tRaphael.fn.barchart = function(x, y, width, height, values, opts) {\n\t\treturn new VBarchart(this, x, y, width, height, values, opts);\n\t};\n})();\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/g.dot.js",
    "content": "/*!\n * g.Raphael 0.5 - Charting library, based on Raphaël\n *\n * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n(function () {\n        var colorValue = function (value, total, s, b) {\n            return 'hsb(' + [Math.min((1 - value / total) * .4, 1), s || .75, b || .75] + ')';\n        };\n\n    function Dotchart(paper, x, y, width, height, valuesx, valuesy, size, opts) {\n        \n        var chartinst = this;\n        \n        function drawAxis(ax) {\n            +ax[0] && (ax[0] = chartinst.axis(x + gutter, y + gutter, width - 2 * gutter, minx, maxx, opts.axisxstep || Math.floor((width - 2 * gutter) / 20), 2, opts.axisxlabels || null, opts.axisxtype || \"t\", null, paper));\n            +ax[1] && (ax[1] = chartinst.axis(x + width - gutter, y + height - gutter, height - 2 * gutter, miny, maxy, opts.axisystep || Math.floor((height - 2 * gutter) / 20), 3, opts.axisylabels || null, opts.axisytype || \"t\", null, paper));\n            +ax[2] && (ax[2] = chartinst.axis(x + gutter, y + height - gutter + maxR, width - 2 * gutter, minx, maxx, opts.axisxstep || Math.floor((width - 2 * gutter) / 20), 0, opts.axisxlabels || null, opts.axisxtype || \"t\", null, paper));\n            +ax[3] && (ax[3] = chartinst.axis(x + gutter - maxR, y + height - gutter, height - 2 * gutter, miny, maxy, opts.axisystep || Math.floor((height - 2 * gutter) / 20), 1, opts.axisylabels || null, opts.axisytype || \"t\", null, paper));\n        }\n\n        opts = opts || {};\n        var xdim = chartinst.snapEnds(Math.min.apply(Math, valuesx), Math.max.apply(Math, valuesx), valuesx.length - 1),\n            minx = xdim.from,\n            maxx = xdim.to,\n            gutter = opts.gutter || 10,\n            ydim = chartinst.snapEnds(Math.min.apply(Math, valuesy), Math.max.apply(Math, valuesy), valuesy.length - 1),\n            miny = ydim.from,\n            maxy = ydim.to,\n            len = Math.max(valuesx.length, valuesy.length, size.length),\n            symbol = paper[opts.symbol] || \"circle\",\n            res = paper.set(),\n            series = paper.set(),\n            max = opts.max || 100,\n            top = Math.max.apply(Math, size),\n            R = [],\n            k = Math.sqrt(top / Math.PI) * 2 / max;\n\n        for (var i = 0; i < len; i++) {\n            R[i] = Math.min(Math.sqrt(size[i] / Math.PI) * 2 / k, max);\n        }\n\n        gutter = Math.max.apply(Math, R.concat(gutter));\n\n        var axis = paper.set(),\n            maxR = Math.max.apply(Math, R);\n\n        if (opts.axis) {\n            var ax = (opts.axis + \"\").split(/[,\\s]+/);\n\n            drawAxis.call(chartinst, ax);\n\n            var g = [], b = [];\n\n            for (var i = 0, ii = ax.length; i < ii; i++) {\n                var bb = ax[i].all ? ax[i].all.getBBox()[[\"height\", \"width\"][i % 2]] : 0;\n\n                g[i] = bb + gutter;\n                b[i] = bb;\n            }\n\n            gutter = Math.max.apply(Math, g.concat(gutter));\n\n            for (var i = 0, ii = ax.length; i < ii; i++) if (ax[i].all) {\n                ax[i].remove();\n                ax[i] = 1;\n            }\n\n            drawAxis.call(chartinst, ax);\n\n            for (var i = 0, ii = ax.length; i < ii; i++) if (ax[i].all) {\n                axis.push(ax[i].all);\n            }\n\n            res.axis = axis;\n        }\n\n        var kx = (width - gutter * 2) / ((maxx - minx) || 1),\n            ky = (height - gutter * 2) / ((maxy - miny) || 1);\n\n        for (var i = 0, ii = valuesy.length; i < ii; i++) {\n            var sym = paper.raphael.is(symbol, \"array\") ? symbol[i] : symbol,\n                X = x + gutter + (valuesx[i] - minx) * kx,\n                Y = y + height - gutter - (valuesy[i] - miny) * ky;\n\n            sym && R[i] && series.push(paper[sym](X, Y, R[i]).attr({ fill: opts.heat ? colorValue(R[i], maxR) : chartinst.colors[0], \"fill-opacity\": opts.opacity ? R[i] / max : 1, stroke: \"none\" }));\n        }\n\n        var covers = paper.set();\n\n        for (var i = 0, ii = valuesy.length; i < ii; i++) {\n            var X = x + gutter + (valuesx[i] - minx) * kx,\n                Y = y + height - gutter - (valuesy[i] - miny) * ky;\n\n            covers.push(paper.circle(X, Y, maxR).attr(chartinst.shim));\n            opts.href && opts.href[i] && covers[i].attr({href: opts.href[i]});\n            covers[i].r = +R[i].toFixed(3);\n            covers[i].x = +X.toFixed(3);\n            covers[i].y = +Y.toFixed(3);\n            covers[i].X = valuesx[i];\n            covers[i].Y = valuesy[i];\n            covers[i].value = size[i] || 0;\n            covers[i].dot = series[i];\n        }\n\n        res.covers = covers;\n        res.series = series;\n        res.push(series, axis, covers);\n\n        res.hover = function (fin, fout) {\n            covers.mouseover(fin).mouseout(fout);\n            return this;\n        };\n\n        res.click = function (f) {\n            covers.click(f);\n            return this;\n        };\n\n        res.each = function (f) {\n            if (!paper.raphael.is(f, \"function\")) {\n                return this;\n            }\n\n            for (var i = covers.length; i--;) {\n                f.call(covers[i]);\n            }\n\n            return this;\n        };\n\n        res.href = function (map) {\n            var cover;\n\n            for (var i = covers.length; i--;) {\n                cover = covers[i];\n\n                if (cover.X == map.x && cover.Y == map.y && cover.value == map.value) {\n                    cover.attr({href: map.href});\n                }\n            }\n        };\n        return res;\n    };\n    \n    //inheritance\n    var F = function() {};\n    F.prototype = Raphael.g\n    Dotchart.prototype = new F;\n    \n    //public\n    Raphael.fn.dotchart = function(x, y, width, height, valuesx, valuesy, size, opts) {\n        return new Dotchart(this, x, y, width, height, valuesx, valuesy, size, opts);\n    }\n})();\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/g.line.js",
    "content": "/*!\n * g.Raphael 0.5 - Charting library, based on Raphaël\n *\n * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n(function () {\n\n    function shrink(values, dim) {\n        var k = values.length / dim,\n            j = 0,\n            l = k,\n            sum = 0,\n            res = [];\n\n        while (j < values.length) {\n            l--;\n\n            if (l < 0) {\n                sum += values[j] * (1 + l);\n                res.push(sum / k);\n                sum = values[j++] * -l;\n                l += k;\n            } else {\n                sum += values[j++];\n            }\n        }\n        return res;\n    }\n\n    function getAnchors(p1x, p1y, p2x, p2y, p3x, p3y) {\n        var l1 = (p2x - p1x) / 2,\n            l2 = (p3x - p2x) / 2,\n            a = Math.atan((p2x - p1x) / Math.abs(p2y - p1y)),\n            b = Math.atan((p3x - p2x) / Math.abs(p2y - p3y));\n\n        a = p1y < p2y ? Math.PI - a : a;\n        b = p3y < p2y ? Math.PI - b : b;\n\n        var alpha = Math.PI / 2 - ((a + b) % (Math.PI * 2)) / 2,\n            dx1 = l1 * Math.sin(alpha + a),\n            dy1 = l1 * Math.cos(alpha + a),\n            dx2 = l2 * Math.sin(alpha + b),\n            dy2 = l2 * Math.cos(alpha + b);\n\n        return {\n            x1: p2x - dx1,\n            y1: p2y + dy1,\n            x2: p2x + dx2,\n            y2: p2y + dy2\n        };\n    }\n\n    function Linechart(paper, x, y, width, height, valuesx, valuesy, opts) {\n        \n        var chartinst = this;\n        \n        opts = opts || {};\n\n        if (!paper.raphael.is(valuesx[0], \"array\")) {\n            valuesx = [valuesx];\n        }\n\n        if (!paper.raphael.is(valuesy[0], \"array\")) {\n            valuesy = [valuesy];\n        }\n\n        var gutter = opts.gutter || 10,\n            len = Math.max(valuesx[0].length, valuesy[0].length),\n            symbol = opts.symbol || \"\",\n            colors = opts.colors || chartinst.colors,\n            columns = null,\n            dots = null,\n            chart = paper.set(),\n            path = [];\n\n        for (var i = 0, ii = valuesy.length; i < ii; i++) {\n            len = Math.max(len, valuesy[i].length);\n        }\n\n        var shades = paper.set();\n\n        for (i = 0, ii = valuesy.length; i < ii; i++) {\n            if (opts.shade) {\n                shades.push(paper.path().attr({ stroke: \"none\", fill: colors[i], opacity: opts.nostroke ? 1 : .3 }));\n            }\n\n            if (valuesy[i].length > width - 2 * gutter) {\n                valuesy[i] = shrink(valuesy[i], width - 2 * gutter);\n                len = width - 2 * gutter;\n            }\n\n            if (valuesx[i] && valuesx[i].length > width - 2 * gutter) {\n                valuesx[i] = shrink(valuesx[i], width - 2 * gutter);\n            }\n        }\n\n        var allx = Array.prototype.concat.apply([], valuesx),\n            ally = Array.prototype.concat.apply([], valuesy),\n            xdim = chartinst.snapEnds(Math.min.apply(Math, allx), Math.max.apply(Math, allx), valuesx[0].length - 1),\n            minx = xdim.from,\n            maxx = xdim.to,\n            ydim = chartinst.snapEnds(Math.min.apply(Math, ally), Math.max.apply(Math, ally), valuesy[0].length - 1),\n            miny = ydim.from,\n            maxy = ydim.to,\n            kx = (width - gutter * 2) / ((maxx - minx) || 1),\n            ky = (height - gutter * 2) / ((maxy - miny) || 1);\n\n        var axis = paper.set();\n        if (opts.axis) {\n        \t\n        \tminy = 0;\n        \tmaxy = ydim.to;\n        \tky = (height - gutter * 2) / ((maxy - miny) || 1);\n        \t\n            var ax = (opts.axis + \"\").split(/[,\\s]+/);\n            +ax[0] && axis.push(chartinst.axis(x + gutter, y + gutter, width - 2 * gutter, minx, maxx, opts.axisxstep || Math.floor((width - 2 * gutter) / 20), 2, opts.axisxlables, paper));\n            +ax[1] && axis.push(chartinst.axis(x + width - gutter, y + height - gutter, height - 2 * gutter, ydim.from, ydim.to, opts.axisystep || Math.floor((height - 2 * gutter) / 20), 3, paper));\n            +ax[2] && axis.push(chartinst.axis(x + gutter, y + height - gutter, width - 2 * gutter, minx, maxx, opts.axisxstep || Math.floor((width - 2 * gutter) / 20), 0, opts.axisxlables, paper));\n            //+ax[3] && axis.push(chartinst.axis(x + gutter, y + height - gutter, height - 2 * gutter, ydim.from, ydim.to, opts.axisystep || Math.floor((height - 2 * gutter) / 20), 1, paper));\n            +ax[3] && axis.push(chartinst.axis(x + gutter, y + height - gutter, height - 2 * gutter, miny, maxy, opts.axisystep || Math.floor((height - 2 * gutter) / 20), 1, paper));\n        }\n\n        var lines = paper.set(),\n            symbols = paper.set(),\n            line;\n\n        for (i = 0, ii = valuesy.length; i < ii; i++) {\n            if (!opts.nostroke) {\n                lines.push(line = paper.path().attr({\n                    stroke: colors[i],\n                    \"stroke-width\": opts.width || 2,\n                    \"stroke-linejoin\": \"round\",\n                    \"stroke-linecap\": \"round\",\n                    \"stroke-dasharray\": opts.dash || \"\"\n                }));\n            }\n\n            var sym = Raphael.is(symbol, \"array\") ? symbol[i] : symbol,\n                symset = paper.set();\n\n            path = [];\n\n            for (var j = 0, jj = valuesy[i].length; j < jj; j++) {\n                var X = x + gutter + ((valuesx[i] || valuesx[0])[j] - minx) * kx,\n                    Y = y + height - gutter - (valuesy[i][j] - miny) * ky;\n\n                (Raphael.is(sym, \"array\") ? sym[j] : sym) && symset.push(paper[Raphael.is(sym, \"array\") ? sym[j] : sym](X, Y, (opts.width || 2) * 3).attr({ fill: colors[i], stroke: \"none\" }));\n\n                if (opts.smooth) {\n                    if (j && j != jj - 1) {\n                        var X0 = x + gutter + ((valuesx[i] || valuesx[0])[j - 1] - minx) * kx,\n                            Y0 = y + height - gutter - (valuesy[i][j - 1] - miny) * ky,\n                            X2 = x + gutter + ((valuesx[i] || valuesx[0])[j + 1] - minx) * kx,\n                            Y2 = y + height - gutter - (valuesy[i][j + 1] - miny) * ky,\n                            a = getAnchors(X0, Y0, X, Y, X2, Y2);\n\n                        path = path.concat([a.x1, a.y1, X, Y, a.x2, a.y2]);\n                    }\n\n                    if (!j) {\n                        path = [\"M\", X, Y, \"C\", X, Y];\n                    }\n                } else {\n                    path = path.concat([j ? \"L\" : \"M\", X, Y]);\n                }\n            }\n\n            if (opts.smooth) {\n                path = path.concat([X, Y, X, Y]);\n            }\n\n            symbols.push(symset);\n\n            if (opts.shade) {\n                shades[i].attr({ path: path.concat([\"L\", X, y + height - gutter, \"L\",  x + gutter + ((valuesx[i] || valuesx[0])[0] - minx) * kx, y + height - gutter, \"z\"]).join(\",\") });\n            }\n\n            !opts.nostroke && line.attr({ path: path.join(\",\") });\n        }\n\n        function createColumns(f) {\n            // unite Xs together\n            var Xs = [];\n\n            for (var i = 0, ii = valuesx.length; i < ii; i++) {\n                Xs = Xs.concat(valuesx[i]);\n            }\n\n            Xs.sort(function(a,b){return a-b;});\n            // remove duplicates\n\n            var Xs2 = [],\n                xs = [];\n\n            for (i = 0, ii = Xs.length; i < ii; i++) {\n                Xs[i] != Xs[i - 1] && Xs2.push(Xs[i]) && xs.push(x + gutter + (Xs[i] - minx) * kx);\n            }\n            \n\n            Xs = Xs2;\n            ii = Xs.length;\n\n            var cvrs = f || paper.set();\n\n            for (i = 0; i < ii; i++) {\n                var X = xs[i] - (xs[i] - (xs[i - 1] || x)) / 2,\n                    w = ((xs[i + 1] || x + width) - xs[i]) / 2 + (xs[i] - (xs[i - 1] || x)) / 2,\n                    C;\n\n                f ? (C = {}) : cvrs.push(C = paper.rect(X - 1, y, Math.max(w + 1, 1), height).attr({ stroke: \"none\", fill: \"#000\", opacity: 0 }));\n                C.values = [];\n                C.symbols = paper.set();\n                C.y = [];\n                C.x = xs[i];\n                C.axis = Xs[i];\n\n                for (var j = 0, jj = valuesy.length; j < jj; j++) {\n                    Xs2 = valuesx[j] || valuesx[0];\n\n                    for (var k = 0, kk = Xs2.length; k < kk; k++) {\n                        if (Xs2[k] == Xs[i]) {\n                            C.values.push(valuesy[j][k]);\n                            C.y.push(y + height - gutter - (valuesy[j][k] - miny) * ky);\n                            C.symbols.push(chart.symbols[j][k]);\n                        }\n                    }\n                }\n\n                f && f.call(C);\n            }\n\n            !f && (columns = cvrs);\n        }\n\n        function createDots(f) {\n            var cvrs = f || paper.set(),\n                C;\n\n            for (var i = 0, ii = valuesy.length; i < ii; i++) {\n                for (var j = 0, jj = valuesy[i].length; j < jj; j++) {\n                    var X = x + gutter + ((valuesx[i] || valuesx[0])[j] - minx) * kx,\n                        nearX = x + gutter + ((valuesx[i] || valuesx[0])[j ? j - 1 : 1] - minx) * kx,\n                        Y = y + height - gutter - (valuesy[i][j] - miny) * ky;\n\n                    f ? (C = {}) : cvrs.push(C = paper.circle(X, Y, Math.abs(nearX - X) / 2).attr({ stroke: \"none\", fill: \"#000\", opacity: 0 }));\n                    C.x = X;\n                    C.y = Y;\n                    C.value = valuesy[i][j];\n                    C.line = chart.lines[i];\n                    C.shade = chart.shades[i];\n                    C.symbol = chart.symbols[i][j];\n                    C.symbols = chart.symbols[i];\n                    C.axis = (valuesx[i] || valuesx[0])[j];\n                    f && f.call(C);\n                }\n            }\n\n            !f && (dots = cvrs);\n        }\n\n        chart.push(lines, shades, symbols, axis, columns, dots);\n        chart.lines = lines;\n        chart.shades = shades;\n        chart.symbols = symbols;\n        chart.axis = axis;\n\n        chart.hoverColumn = function (fin, fout) {\n            !columns && createColumns();\n            columns.mouseover(fin).mouseout(fout);\n            return this;\n        };\n\n        chart.clickColumn = function (f) {\n            !columns && createColumns();\n            columns.click(f);\n            return this;\n        };\n\n        chart.hrefColumn = function (cols) {\n            var hrefs = paper.raphael.is(arguments[0], \"array\") ? arguments[0] : arguments;\n\n            if (!(arguments.length - 1) && typeof cols == \"object\") {\n                for (var x in cols) {\n                    for (var i = 0, ii = columns.length; i < ii; i++) if (columns[i].axis == x) {\n                        columns[i].attr(\"href\", cols[x]);\n                    }\n                }\n            }\n\n            !columns && createColumns();\n\n            for (i = 0, ii = hrefs.length; i < ii; i++) {\n                columns[i] && columns[i].attr(\"href\", hrefs[i]);\n            }\n\n            return this;\n        };\n\n        chart.hover = function (fin, fout) {\n            !dots && createDots();\n            dots.mouseover(fin).mouseout(fout);\n            return this;\n        };\n\n        chart.click = function (f) {\n            !dots && createDots();\n            dots.click(f);\n            return this;\n        };\n\n        chart.each = function (f) {\n            createDots(f);\n            return this;\n        };\n\n        chart.eachColumn = function (f) {\n            createColumns(f);\n            return this;\n        };\n\n        return chart;\n    };\n    \n    //inheritance\n    var F = function() {};\n    F.prototype = Raphael.g;\n    Linechart.prototype = new F;\n    \n    //public\n    Raphael.fn.linechart = function(x, y, width, height, valuesx, valuesy, opts) {\n        return new Linechart(this, x, y, width, height, valuesx, valuesy, opts);\n    }\n    \n})();\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/g.pie.js",
    "content": "/*\n * g.Raphael 0.5 - Charting library, based on Raphaël\n *\n * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n(function () {\n\n    function Piechart(paper, cx, cy, r, values, opts) {\n        opts = opts || {};\n\n        var chartinst = this,\n            sectors = [],\n            covers = paper.set(),\n            chart = paper.set(),\n            series = paper.set(),\n            order = [],\n            len = values.length,\n            angle = 0,\n            total = 0,\n            others = 0,\n            cut = 9,\n            defcut = true;\n\n        function sector(cx, cy, r, startAngle, endAngle, fill) {\n            var rad = Math.PI / 180,\n                x1 = cx + r * Math.cos(-startAngle * rad),\n                x2 = cx + r * Math.cos(-endAngle * rad),\n                xm = cx + r / 2 * Math.cos(-(startAngle + (endAngle - startAngle) / 2) * rad),\n                y1 = cy + r * Math.sin(-startAngle * rad),\n                y2 = cy + r * Math.sin(-endAngle * rad),\n                ym = cy + r / 2 * Math.sin(-(startAngle + (endAngle - startAngle) / 2) * rad),\n                res = [\n                    \"M\", cx, cy,\n                    \"L\", x1, y1,\n                    \"A\", r, r, 0, +(Math.abs(endAngle - startAngle) > 180), 1, x2, y2,\n                    \"z\"\n                ];\n\n            res.middle = { x: xm, y: ym };\n            return res;\n        }\n\n        chart.covers = covers;\n\n        if (len == 1) {\n            series.push(paper.circle(cx, cy, r).attr({ fill: chartinst.colors[0], stroke: opts.stroke || \"#fff\", \"stroke-width\": opts.strokewidth == null ? 1 : opts.strokewidth }));\n            covers.push(paper.circle(cx, cy, r).attr(chartinst.shim));\n            total = values[0];\n            values[0] = { value: values[0], order: 0, valueOf: function () { return this.value; } };\n            series[0].middle = {x: cx, y: cy};\n            series[0].mangle = 180;\n        } else {\n            for (var i = 0; i < len; i++) {\n                total += values[i];\n                values[i] = { value: values[i], order: i, valueOf: function () { return this.value; } };\n            }\n\n            values.sort(function (a, b) {\n                return b.value - a.value;\n            });\n\n            for (i = 0; i < len; i++) {\n                if (defcut && values[i] * 360 / total <= 1.5) {\n                    cut = i;\n                    defcut = false;\n                }\n\n                if (i > cut) {\n                    defcut = false;\n                    values[cut].value += values[i];\n                    values[cut].others = true;\n                    others = values[cut].value;\n                }\n            }\n\n            len = Math.min(cut + 1, values.length);\n            others && values.splice(len) && (values[cut].others = true);\n\n            for (i = 0; i < len; i++) {\n                var mangle = angle - 360 * values[i] / total / 2;\n\n                if (!i) {\n                    angle = 90 - mangle;\n                    mangle = angle - 360 * values[i] / total / 2;\n                }\n\n                if (opts.init) {\n                    var ipath = sector(cx, cy, 1, angle, angle - 360 * values[i] / total).join(\",\");\n                }\n\n                var path = sector(cx, cy, r, angle, angle -= 360 * values[i] / total);\n                var p = paper.path(opts.init ? ipath : path).attr({ fill: opts.colors && opts.colors[i] || chartinst.colors[i] || \"#666\", stroke: opts.stroke || \"#fff\", \"stroke-width\": (opts.strokewidth == null ? 1 : opts.strokewidth), \"stroke-linejoin\": \"round\" });\n\n                p.value = values[i];\n                p.middle = path.middle;\n                p.mangle = mangle;\n                sectors.push(p);\n                series.push(p);\n                opts.init && p.animate({ path: path.join(\",\") }, (+opts.init - 1) || 1000, \">\");\n            }\n\n            for (i = 0; i < len; i++) {\n                p = paper.path(sectors[i].attr(\"path\")).attr(chartinst.shim);\n                opts.href && opts.href[i] && p.attr({ href: opts.href[i] });\n                p.attr = function () {};\n                covers.push(p);\n                series.push(p);\n            }\n        }\n\n        chart.hover = function (fin, fout) {\n            fout = fout || function () {};\n\n            var that = this;\n\n            for (var i = 0; i < len; i++) {\n                (function (sector, cover, j) {\n                    var o = {\n                        sector: sector,\n                        cover: cover,\n                        cx: cx,\n                        cy: cy,\n                        mx: sector.middle.x,\n                        my: sector.middle.y,\n                        mangle: sector.mangle,\n                        r: r,\n                        value: values[j],\n                        total: total,\n                        label: that.labels && that.labels[j]\n                    };\n                    cover.mouseover(function () {\n                        fin.call(o);\n                    }).mouseout(function () {\n                        fout.call(o);\n                    });\n                })(series[i], covers[i], i);\n            }\n            return this;\n        };\n\n        // x: where label could be put\n        // y: where label could be put\n        // value: value to show\n        // total: total number to count %\n        chart.each = function (f) {\n            var that = this;\n\n            for (var i = 0; i < len; i++) {\n                (function (sector, cover, j) {\n                    var o = {\n                        sector: sector,\n                        cover: cover,\n                        cx: cx,\n                        cy: cy,\n                        x: sector.middle.x,\n                        y: sector.middle.y,\n                        mangle: sector.mangle,\n                        r: r,\n                        value: values[j],\n                        total: total,\n                        label: that.labels && that.labels[j]\n                    };\n                    f.call(o);\n                })(series[i], covers[i], i);\n            }\n            return this;\n        };\n\n        chart.click = function (f) {\n            var that = this;\n\n            for (var i = 0; i < len; i++) {\n                (function (sector, cover, j) {\n                    var o = {\n                        sector: sector,\n                        cover: cover,\n                        cx: cx,\n                        cy: cy,\n                        mx: sector.middle.x,\n                        my: sector.middle.y,\n                        mangle: sector.mangle,\n                        r: r,\n                        value: values[j],\n                        total: total,\n                        label: that.labels && that.labels[j]\n                    };\n                    cover.click(function () { f.call(o); });\n                })(series[i], covers[i], i);\n            }\n            return this;\n        };\n\n        chart.inject = function (element) {\n            element.insertBefore(covers[0]);\n        };\n\n        var legend = function (labels, otherslabel, mark, dir) {\n            var x = cx + r + r / 5,\n                y = cy,\n                h = y + 10;\n\n            labels = labels || [];\n            dir = (dir && dir.toLowerCase && dir.toLowerCase()) || \"east\";\n            mark = paper[mark && mark.toLowerCase()] || \"circle\";\n            chart.labels = paper.set();\n\n            for (var i = 0; i < len; i++) {\n                var clr = series[i].attr(\"fill\"),\n                    j = values[i].order,\n                    txt;\n\n                values[i].others && (labels[j] = otherslabel || \"Others\");\n                labels[j] = chartinst.labelise(labels[j], values[i], total);\n                chart.labels.push(paper.set());\n                chart.labels[i].push(paper[mark](x + 5, h, 5).attr({ fill: clr, stroke: \"none\" }));\n                chart.labels[i].push(txt = paper.text(x + 20, h, labels[j] || values[j]).attr(chartinst.txtattr).attr({ fill: opts.legendcolor || \"#000\", \"text-anchor\": \"start\"}));\n                covers[i].label = chart.labels[i];\n                h += txt.getBBox().height * 1.2;\n            }\n\n            var bb = chart.labels.getBBox(),\n                tr = {\n                    east: [0, -bb.height / 2],\n                    west: [-bb.width - 2 * r - 20, -bb.height / 2],\n                    north: [-r - bb.width / 2, -r - bb.height - 10],\n                    south: [-r - bb.width / 2, r + 10]\n                }[dir];\n\n            chart.labels.translate.apply(chart.labels, tr);\n            chart.push(chart.labels);\n        };\n\n        if (opts.legend) {\n            legend(opts.legend, opts.legendothers, opts.legendmark, opts.legendpos);\n        }\n\n        chart.push(series, covers);\n        chart.series = series;\n        chart.covers = covers;\n\n        return chart;\n    };\n    \n    //inheritance\n    var F = function() {};\n    F.prototype = Raphael.g;\n    Piechart.prototype = new F;\n    \n    //public\n    Raphael.fn.piechart = function(cx, cy, r, values, opts) {\n        return new Piechart(this, cx, cy, r, values, opts);\n    }\n    \n})();\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/g.raphael.js",
    "content": "/*!\n * g.Raphael 0.5 - Charting library, based on Raphaël\n *\n * Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n\n/*\n * Tooltips on Element prototype\n */\n/*\\\n * Element.popup\n [ method ]\n **\n * Puts the context Element in a 'popup' tooltip. Can also be used on sets.\n **\n > Parameters\n **\n - dir (string) location of Element relative to the tail: `'down'`, `'left'`, `'up'` [default], or `'right'`.\n - size (number) amount of bevel/padding around the Element, as well as half the width and height of the tail [default: `5`]\n - x (number) x coordinate of the popup's tail [default: Element's `x` or `cx`]\n - y (number) y coordinate of the popup's tail [default: Element's `y` or `cy`]\n **\n = (object) path element of the popup\n > Usage\n | paper.circle(50, 50, 5).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).popup();\n \\*/\nRaphael.el.popup = function (dir, size, x, y) {\n    var paper = this.paper || this[0].paper,\n        bb, xy, center, cw, ch;\n\n    if (!paper) return;\n\n    switch (this.type) {\n        case 'text':\n        case 'circle':\n        case 'ellipse': center = true; break;\n        default: center = false;\n    }\n\n    dir = dir == null ? 'up' : dir;\n    size = size || 5;\n    bb = this.getBBox();\n\n    x = typeof x == 'number' ? x : (center ? bb.x + bb.width / 2 : bb.x);\n    y = typeof y == 'number' ? y : (center ? bb.y + bb.height / 2 : bb.y);\n    cw = Math.max(bb.width / 2 - size, 0);\n    ch = Math.max(bb.height / 2 - size, 0);\n\n    this.translate(x - bb.x - (center ? bb.width / 2 : 0), y - bb.y - (center ? bb.height / 2 : 0));\n    bb = this.getBBox();\n\n    var paths = {\n        up: [\n            'M', x, y,\n            'l', -size, -size, -cw, 0,\n            'a', size, size, 0, 0, 1, -size, -size,\n            'l', 0, -bb.height,\n            'a', size, size, 0, 0, 1, size, -size,\n            'l', size * 2 + cw * 2, 0,\n            'a', size, size, 0, 0, 1, size, size,\n            'l', 0, bb.height,\n            'a', size, size, 0, 0, 1, -size, size,\n            'l', -cw, 0,\n            'z'\n        ].join(','),\n        down: [\n            'M', x, y,\n            'l', size, size, cw, 0,\n            'a', size, size, 0, 0, 1, size, size,\n            'l', 0, bb.height,\n            'a', size, size, 0, 0, 1, -size, size,\n            'l', -(size * 2 + cw * 2), 0,\n            'a', size, size, 0, 0, 1, -size, -size,\n            'l', 0, -bb.height,\n            'a', size, size, 0, 0, 1, size, -size,\n            'l', cw, 0,\n            'z'\n        ].join(','),\n        left: [\n            'M', x, y,\n            'l', -size, size, 0, ch,\n            'a', size, size, 0, 0, 1, -size, size,\n            'l', -bb.width, 0,\n            'a', size, size, 0, 0, 1, -size, -size,\n            'l', 0, -(size * 2 + ch * 2),\n            'a', size, size, 0, 0, 1, size, -size,\n            'l', bb.width, 0,\n            'a', size, size, 0, 0, 1, size, size,\n            'l', 0, ch,\n            'z'\n        ].join(','),\n        right: [\n            'M', x, y,\n            'l', size, -size, 0, -ch,\n            'a', size, size, 0, 0, 1, size, -size,\n            'l', bb.width, 0,\n            'a', size, size, 0, 0, 1, size, size,\n            'l', 0, size * 2 + ch * 2,\n            'a', size, size, 0, 0, 1, -size, size,\n            'l', -bb.width, 0,\n            'a', size, size, 0, 0, 1, -size, -size,\n            'l', 0, -ch,\n            'z'\n        ].join(',')\n    };\n\n    xy = {\n        up: { x: -!center * (bb.width / 2), y: -size * 2 - (center ? bb.height / 2 : bb.height) },\n        down: { x: -!center * (bb.width / 2), y: size * 2 + (center ? bb.height / 2 : bb.height) },\n        left: { x: -size * 2 - (center ? bb.width / 2 : bb.width), y: -!center * (bb.height / 2) },\n        right: { x: size * 2 + (center ? bb.width / 2 : bb.width), y: -!center * (bb.height / 2) }\n    }[dir];\n\n    this.translate(xy.x, xy.y);\n\n    return paper.path(paths[dir]).attr({ fill: \"#000\", stroke: \"none\" }).insertBefore(this.node ? this : this[0]);\n};\n\n/*\\\n * Element.tag\n [ method ]\n **\n * Puts the context Element in a 'tag' tooltip. Can also be used on sets.\n **\n > Parameters\n **\n - angle (number) angle of orientation in degrees [default: `0`]\n - r (number) radius of the loop [default: `5`]\n - x (number) x coordinate of the center of the tag loop [default: Element's `x` or `cx`]\n - y (number) y coordinate of the center of the tag loop [default: Element's `x` or `cx`]\n **\n = (object) path element of the tag\n > Usage\n | paper.circle(50, 50, 15).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).tag(60);\n \\*/\nRaphael.el.tag = function (angle, r, x, y) {\n    var d = 3,\n        paper = this.paper || this[0].paper;\n\n    if (!paper) return;\n\n    var p = paper.path().attr({ fill: '#000', stroke: '#000' }),\n        bb = this.getBBox(),\n        dx, R, center, tmp;\n\n    switch (this.type) {\n        case 'text':\n        case 'circle':\n        case 'ellipse': center = true; break;\n        default: center = false;\n    }\n\n    angle = angle || 0;\n    x = typeof x == 'number' ? x : (center ? bb.x + bb.width / 2 : bb.x);\n    y = typeof y == 'number' ? y : (center ? bb.y + bb.height / 2 : bb.y);\n    r = r == null ? 5 : r;\n    R = .5522 * r;\n\n    if (bb.height >= r * 2) {\n        p.attr({\n            path: [\n                \"M\", x, y + r,\n                \"a\", r, r, 0, 1, 1, 0, -r * 2, r, r, 0, 1, 1, 0, r * 2,\n                \"m\", 0, -r * 2 -d,\n                \"a\", r + d, r + d, 0, 1, 0, 0, (r + d) * 2,\n                \"L\", x + r + d, y + bb.height / 2 + d,\n                \"l\", bb.width + 2 * d, 0, 0, -bb.height - 2 * d, -bb.width - 2 * d, 0,\n                \"L\", x, y - r - d\n            ].join(\",\")\n        });\n    } else {\n        dx = Math.sqrt(Math.pow(r + d, 2) - Math.pow(bb.height / 2 + d, 2));\n        p.attr({\n            path: [\n                \"M\", x, y + r,\n                \"c\", -R, 0, -r, R - r, -r, -r, 0, -R, r - R, -r, r, -r, R, 0, r, r - R, r, r, 0, R, R - r, r, -r, r,\n                \"M\", x + dx, y - bb.height / 2 - d,\n                \"a\", r + d, r + d, 0, 1, 0, 0, bb.height + 2 * d,\n                \"l\", r + d - dx + bb.width + 2 * d, 0, 0, -bb.height - 2 * d,\n                \"L\", x + dx, y - bb.height / 2 - d\n            ].join(\",\")\n        });\n    }\n\n    angle = 360 - angle;\n    p.rotate(angle, x, y);\n\n    if (this.attrs) {\n        //elements\n        this.attr(this.attrs.x ? 'x' : 'cx', x + r + d + (!center ? this.type == 'text' ? bb.width : 0 : bb.width / 2)).attr('y', center ? y : y - bb.height / 2);\n        this.rotate(angle, x, y);\n        angle > 90 && angle < 270 && this.attr(this.attrs.x ? 'x' : 'cx', x - r - d - (!center ? bb.width : bb.width / 2)).rotate(180, x, y);\n    } else {\n        //sets\n        if (angle > 90 && angle < 270) {\n            this.translate(x - bb.x - bb.width - r - d, y - bb.y - bb.height / 2);\n            this.rotate(angle - 180, bb.x + bb.width + r + d, bb.y + bb.height / 2);\n        } else {\n            this.translate(x - bb.x + r + d, y - bb.y - bb.height / 2);\n            this.rotate(angle, bb.x - r - d, bb.y + bb.height / 2); \n        }\n    }\n\n    return p.insertBefore(this.node ? this : this[0]);\n};\n\n/*\\\n * Element.drop\n [ method ]\n **\n * Puts the context Element in a 'drop' tooltip. Can also be used on sets.\n **\n > Parameters\n **\n - angle (number) angle of orientation in degrees [default: `0`]\n - x (number) x coordinate of the drop's point [default: Element's `x` or `cx`]\n - y (number) y coordinate of the drop's point [default: Element's `x` or `cx`]\n **\n = (object) path element of the drop\n > Usage\n | paper.circle(50, 50, 8).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).drop(60);\n \\*/\nRaphael.el.drop = function (angle, x, y) {\n    var bb = this.getBBox(),\n        paper = this.paper || this[0].paper,\n        center, size, p, dx, dy;\n\n    if (!paper) return;\n\n    switch (this.type) {\n        case 'text':\n        case 'circle':\n        case 'ellipse': center = true; break;\n        default: center = false;\n    }\n\n    angle = angle || 0;\n\n    x = typeof x == 'number' ? x : (center ? bb.x + bb.width / 2 : bb.x);\n    y = typeof y == 'number' ? y : (center ? bb.y + bb.height / 2 : bb.y);\n    size = Math.max(bb.width, bb.height) + Math.min(bb.width, bb.height);\n    p = paper.path([\n        \"M\", x, y,\n        \"l\", size, 0,\n        \"A\", size * .4, size * .4, 0, 1, 0, x + size * .7, y - size * .7,\n        \"z\"\n    ]).attr({fill: \"#000\", stroke: \"none\"}).rotate(22.5 - angle, x, y);\n\n    angle = (angle + 90) * Math.PI / 180;\n    dx = (x + size * Math.sin(angle)) - (center ? 0 : bb.width / 2);\n    dy = (y + size * Math.cos(angle)) - (center ? 0 : bb.height / 2);\n\n    this.attrs ?\n        this.attr(this.attrs.x ? 'x' : 'cx', dx).attr(this.attrs.y ? 'y' : 'cy', dy) :\n        this.translate(dx - bb.x, dy - bb.y);\n\n    return p.insertBefore(this.node ? this : this[0]);\n};\n\n/*\\\n * Element.flag\n [ method ]\n **\n * Puts the context Element in a 'flag' tooltip. Can also be used on sets.\n **\n > Parameters\n **\n - angle (number) angle of orientation in degrees [default: `0`]\n - x (number) x coordinate of the flag's point [default: Element's `x` or `cx`]\n - y (number) y coordinate of the flag's point [default: Element's `x` or `cx`]\n **\n = (object) path element of the flag\n > Usage\n | paper.circle(50, 50, 10).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).flag(60);\n \\*/\nRaphael.el.flag = function (angle, x, y) {\n    var d = 3,\n        paper = this.paper || this[0].paper;\n\n    if (!paper) return;\n\n    var p = paper.path().attr({ fill: '#000', stroke: '#000' }),\n        bb = this.getBBox(),\n        h = bb.height / 2,\n        center;\n\n    switch (this.type) {\n        case 'text':\n        case 'circle':\n        case 'ellipse': center = true; break;\n        default: center = false;\n    }\n\n    angle = angle || 0;\n    x = typeof x == 'number' ? x : (center ? bb.x + bb.width / 2 : bb.x);\n    y = typeof y == 'number' ? y : (center ? bb.y + bb.height / 2: bb.y);\n\n    p.attr({\n        path: [\n            \"M\", x, y,\n            \"l\", h + d, -h - d, bb.width + 2 * d, 0, 0, bb.height + 2 * d, -bb.width - 2 * d, 0,\n            \"z\"\n        ].join(\",\")\n    });\n\n    angle = 360 - angle;\n    p.rotate(angle, x, y);\n\n    if (this.attrs) {\n        //elements\n        this.attr(this.attrs.x ? 'x' : 'cx', x + h + d + (!center ? this.type == 'text' ? bb.width : 0 : bb.width / 2)).attr('y', center ? y : y - bb.height / 2);\n        this.rotate(angle, x, y);\n        angle > 90 && angle < 270 && this.attr(this.attrs.x ? 'x' : 'cx', x - h - d - (!center ? bb.width : bb.width / 2)).rotate(180, x, y);\n    } else {\n        //sets\n        if (angle > 90 && angle < 270) {\n            this.translate(x - bb.x - bb.width - h - d, y - bb.y - bb.height / 2);\n            this.rotate(angle - 180, bb.x + bb.width + h + d, bb.y + bb.height / 2);\n        } else {\n            this.translate(x - bb.x + h + d, y - bb.y - bb.height / 2);\n            this.rotate(angle, bb.x - h - d, bb.y + bb.height / 2);\n        }\n    }\n\n    return p.insertBefore(this.node ? this : this[0]);\n};\n\n/*\\\n * Element.label\n [ method ]\n **\n * Puts the context Element in a 'label' tooltip. Can also be used on sets.\n **\n = (object) path element of the label.\n > Usage\n | paper.circle(50, 50, 10).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).label();\n \\*/\nRaphael.el.label = function () {\n    var bb = this.getBBox(),\n        paper = this.paper || this[0].paper,\n        r = Math.min(20, bb.width + 10, bb.height + 10) / 2;\n\n    if (!paper) return;\n\n    return paper.rect(bb.x - r / 2, bb.y - r / 2, bb.width + r, bb.height + r, r).attr({ stroke: 'none', fill: '#000' }).insertBefore(this.node ? this : this[0]);\n};\n\n/*\\\n * Element.blob\n [ method ]\n **\n * Puts the context Element in a 'blob' tooltip. Can also be used on sets.\n **\n > Parameters\n **\n - angle (number) angle of orientation in degrees [default: `0`]\n - x (number) x coordinate of the blob's tail [default: Element's `x` or `cx`]\n - y (number) y coordinate of the blob's tail [default: Element's `x` or `cx`]\n **\n = (object) path element of the blob\n > Usage\n | paper.circle(50, 50, 8).attr({\n |     stroke: \"#fff\",\n |     fill: \"0-#c9de96-#8ab66b:44-#398235\"\n | }).blob(60);\n \\*/\nRaphael.el.blob = function (angle, x, y) {\n    var bb = this.getBBox(),\n        rad = Math.PI / 180,\n        paper = this.paper || this[0].paper,\n        p, center, size;\n\n    if (!paper) return;\n\n    switch (this.type) {\n        case 'text':\n        case 'circle':\n        case 'ellipse': center = true; break;\n        default: center = false;\n    }\n\n    p = paper.path().attr({ fill: \"#000\", stroke: \"none\" });\n    angle = (+angle + 1 ? angle : 45) + 90;\n    size = Math.min(bb.height, bb.width);\n    x = typeof x == 'number' ? x : (center ? bb.x + bb.width / 2 : bb.x);\n    y = typeof y == 'number' ? y : (center ? bb.y + bb.height / 2 : bb.y);\n\n    var w = Math.max(bb.width + size, size * 25 / 12),\n        h = Math.max(bb.height + size, size * 25 / 12),\n        x2 = x + size * Math.sin((angle - 22.5) * rad),\n        y2 = y + size * Math.cos((angle - 22.5) * rad),\n        x1 = x + size * Math.sin((angle + 22.5) * rad),\n        y1 = y + size * Math.cos((angle + 22.5) * rad),\n        dx = (x1 - x2) / 2,\n        dy = (y1 - y2) / 2,\n        rx = w / 2,\n        ry = h / 2,\n        k = -Math.sqrt(Math.abs(rx * rx * ry * ry - rx * rx * dy * dy - ry * ry * dx * dx) / (rx * rx * dy * dy + ry * ry * dx * dx)),\n        cx = k * rx * dy / ry + (x1 + x2) / 2,\n        cy = k * -ry * dx / rx + (y1 + y2) / 2;\n\n    p.attr({\n        x: cx,\n        y: cy,\n        path: [\n            \"M\", x, y,\n            \"L\", x1, y1,\n            \"A\", rx, ry, 0, 1, 1, x2, y2,\n            \"z\"\n        ].join(\",\")\n    });\n\n    this.translate(cx - bb.x - bb.width / 2, cy - bb.y - bb.height / 2);\n\n    return p.insertBefore(this.node ? this : this[0]);\n};\n\n/*\n * Tooltips on Paper prototype\n */\n/*\\\n * Paper.label\n [ method ]\n **\n * Puts the given `text` into a 'label' tooltip. The text is given a default style according to @g.txtattr. See @Element.label\n **\n > Parameters\n **\n - x (number) x coordinate of the center of the label\n - y (number) y coordinate of the center of the label\n - text (string) text to place inside the label\n **\n = (object) set containing the label path and the text element\n > Usage\n | paper.label(50, 50, \"$9.99\");\n \\*/\nRaphael.fn.label = function (x, y, text) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.label(), text);\n};\n\n/*\\\n * Paper.popup\n [ method ]\n **\n * Puts the given `text` into a 'popup' tooltip. The text is given a default style according to @g.txtattr. See @Element.popup\n *\n * Note: The `dir` parameter has changed from g.Raphael 0.4.1 to 0.5. The options `0`, `1`, `2`, and `3` has been changed to `'down'`, `'left'`, `'up'`, and `'right'` respectively.\n **\n > Parameters\n **\n - x (number) x coordinate of the popup's tail\n - y (number) y coordinate of the popup's tail\n - text (string) text to place inside the popup\n - dir (string) location of the text relative to the tail: `'down'`, `'left'`, `'up'` [default], or `'right'`.\n - size (number) amount of padding around the Element [default: `5`]\n **\n = (object) set containing the popup path and the text element\n > Usage\n | paper.popup(50, 50, \"$9.99\", 'down');\n \\*/\nRaphael.fn.popup = function (x, y, text, dir, size) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.popup(dir, size), text);\n};\n\n/*\\\n * Paper.tag\n [ method ]\n **\n * Puts the given text into a 'tag' tooltip. The text is given a default style according to @g.txtattr. See @Element.tag\n **\n > Parameters\n **\n - x (number) x coordinate of the center of the tag loop\n - y (number) y coordinate of the center of the tag loop\n - text (string) text to place inside the tag\n - angle (number) angle of orientation in degrees [default: `0`]\n - r (number) radius of the loop [default: `5`]\n **\n = (object) set containing the tag path and the text element\n > Usage\n | paper.tag(50, 50, \"$9.99\", 60);\n \\*/\nRaphael.fn.tag = function (x, y, text, angle, r) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.tag(angle, r), text);\n};\n\n/*\\\n * Paper.flag\n [ method ]\n **\n * Puts the given `text` into a 'flag' tooltip. The text is given a default style according to @g.txtattr. See @Element.flag\n **\n > Parameters\n **\n - x (number) x coordinate of the flag's point\n - y (number) y coordinate of the flag's point\n - text (string) text to place inside the flag\n - angle (number) angle of orientation in degrees [default: `0`]\n **\n = (object) set containing the flag path and the text element\n > Usage\n | paper.flag(50, 50, \"$9.99\", 60);\n \\*/\nRaphael.fn.flag = function (x, y, text, angle) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.flag(angle), text);\n};\n\n/*\\\n * Paper.drop\n [ method ]\n **\n * Puts the given text into a 'drop' tooltip. The text is given a default style according to @g.txtattr. See @Element.drop\n **\n > Parameters\n **\n - x (number) x coordinate of the drop's point\n - y (number) y coordinate of the drop's point\n - text (string) text to place inside the drop\n - angle (number) angle of orientation in degrees [default: `0`]\n **\n = (object) set containing the drop path and the text element\n > Usage\n | paper.drop(50, 50, \"$9.99\", 60);\n \\*/\nRaphael.fn.drop = function (x, y, text, angle) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.drop(angle), text);\n};\n\n/*\\\n * Paper.blob\n [ method ]\n **\n * Puts the given text into a 'blob' tooltip. The text is given a default style according to @g.txtattr. See @Element.blob\n **\n > Parameters\n **\n - x (number) x coordinate of the blob's tail\n - y (number) y coordinate of the blob's tail\n - text (string) text to place inside the blob\n - angle (number) angle of orientation in degrees [default: `0`]\n **\n = (object) set containing the blob path and the text element\n > Usage\n | paper.blob(50, 50, \"$9.99\", 60);\n \\*/\nRaphael.fn.blob = function (x, y, text, angle) {\n    var set = this.set();\n\n    text = this.text(x, y, text).attr(Raphael.g.txtattr);\n    return set.push(text.blob(angle), text);\n};\n/**\n * zhanghuihua\n */\nRaphael.fn.axis=function (x, y, length, from, to, steps, orientation, labels, type, dashsize) {\n\treturn Raphael.g.axis(x, y, length, from, to, steps, orientation, labels, type, dashsize, this) ;\n};\n/**\n * Brightness functions on the Element prototype\n */\n/*\\\n * Element.lighter\n [ method ]\n **\n * Makes the context element lighter by increasing the brightness and reducing the saturation by a given factor. Can be called on Sets.\n **\n > Parameters\n **\n - times (number) adjustment factor [default: `2`]\n **\n = (object) Element\n > Usage\n | paper.circle(50, 50, 20).attr({\n |     fill: \"#ff0000\",\n |     stroke: \"#fff\",\n |     \"stroke-width\": 2\n | }).lighter(6);\n \\*/\nRaphael.el.lighter = function (times) {\n    times = times || 2;\n\n    var fs = [this.attrs.fill, this.attrs.stroke];\n\n    this.fs = this.fs || [fs[0], fs[1]];\n\n    fs[0] = Raphael.rgb2hsb(Raphael.getRGB(fs[0]).hex);\n    fs[1] = Raphael.rgb2hsb(Raphael.getRGB(fs[1]).hex);\n    fs[0].b = Math.min(fs[0].b * times, 1);\n    fs[0].s = fs[0].s / times;\n    fs[1].b = Math.min(fs[1].b * times, 1);\n    fs[1].s = fs[1].s / times;\n\n    this.attr({fill: \"hsb(\" + [fs[0].h, fs[0].s, fs[0].b] + \")\", stroke: \"hsb(\" + [fs[1].h, fs[1].s, fs[1].b] + \")\"});\n    return this;\n};\n\n/*\\\n * Element.darker\n [ method ]\n **\n * Makes the context element darker by decreasing the brightness and increasing the saturation by a given factor. Can be called on Sets.\n **\n > Parameters\n **\n - times (number) adjustment factor [default: `2`]\n **\n = (object) Element\n > Usage\n | paper.circle(50, 50, 20).attr({\n |     fill: \"#ff0000\",\n |     stroke: \"#fff\",\n |     \"stroke-width\": 2\n | }).darker(6);\n \\*/\nRaphael.el.darker = function (times) {\n    times = times || 2;\n\n    var fs = [this.attrs.fill, this.attrs.stroke];\n\n    this.fs = this.fs || [fs[0], fs[1]];\n\n    fs[0] = Raphael.rgb2hsb(Raphael.getRGB(fs[0]).hex);\n    fs[1] = Raphael.rgb2hsb(Raphael.getRGB(fs[1]).hex);\n    fs[0].s = Math.min(fs[0].s * times, 1);\n    fs[0].b = fs[0].b / times;\n    fs[1].s = Math.min(fs[1].s * times, 1);\n    fs[1].b = fs[1].b / times;\n\n    this.attr({fill: \"hsb(\" + [fs[0].h, fs[0].s, fs[0].b] + \")\", stroke: \"hsb(\" + [fs[1].h, fs[1].s, fs[1].b] + \")\"});\n    return this;\n};\n\n/*\\\n * Element.resetBrightness\n [ method ]\n **\n * Resets brightness and saturation levels to their original values. See @Element.lighter and @Element.darker. Can be called on Sets.\n **\n = (object) Element\n > Usage\n | paper.circle(50, 50, 20).attr({\n |     fill: \"#ff0000\",\n |     stroke: \"#fff\",\n |     \"stroke-width\": 2\n | }).lighter(6).resetBrightness();\n \\*/\nRaphael.el.resetBrightness = function () {\n    if (this.fs) {\n        this.attr({ fill: this.fs[0], stroke: this.fs[1] });\n        delete this.fs;\n    }\n    return this;\n};\n\n//alias to set prototype\n(function () {\n    var brightness = ['lighter', 'darker', 'resetBrightness'],\n        tooltips = ['popup', 'tag', 'flag', 'label', 'drop', 'blob'];\n\n    for (var f in tooltips) (function (name) {\n        Raphael.st[name] = function () {\n            return Raphael.el[name].apply(this, arguments);\n        };\n    })(tooltips[f]);\n\n    for (var f in brightness) (function (name) {\n        Raphael.st[name] = function () {\n            for (var i = 0; i < this.length; i++) {\n                this[i][name].apply(this[i], arguments);\n            }\n\n            return this;\n        };\n    })(brightness[f]);\n})();\n\n//chart prototype for storing common functions\nRaphael.g = {\n    /*\\\n     * g.shim\n     [ object ]\n     **\n     * An attribute object that charts will set on all generated shims (shims being the invisible objects that mouse events are bound to)\n     **\n     > Default value\n     | { stroke: 'none', fill: '#000', 'fill-opacity': 0 }\n     \\*/\n    shim: { stroke: 'none', fill: '#000', 'fill-opacity': 0 },\n\n    /*\\\n     * g.txtattr\n     [ object ]\n     **\n     * An attribute object that charts and tooltips will set on any generated text\n     **\n     > Default value\n     | { font: '12px Arial, sans-serif', fill: '#fff' }\n     \\*/  \n    txtattr: { font: '12px Arial, sans-serif', fill: '#fff' },\n\n    /*\\\n     * g.colors\n     [ array ]\n     **\n     * An array of color values that charts will iterate through when drawing chart data values.\n     **\n     \\*/\n    colors: (function () {\n            var hues = [.6, .2, .05, .1333, .75, 0],\n                colors = [];\n\n            for (var i = 0; i < 10; i++) {\n                if (i < hues.length) {\n                    colors.push('hsb(' + hues[i] + ',.75, .75)');\n                } else {\n                    colors.push('hsb(' + hues[i - hues.length] + ', 1, .5)');\n                }\n            }\n\n            return colors;\n    })(),\n    \n    snapEnds: function(from, to, steps) {\n        var f = from,\n            t = to;\n\n        if (f == t) {\n            return {from: f, to: t, power: 0};\n        }\n\n        function round(a) {\n            return Math.abs(a - .5) < .25 ? ~~(a) + .5 : Math.ceil(a);\n        }\n\n        var d = (t - f) / steps,\n            r = ~~(d),\n            R = r,\n            i = 0;\n\n        if (r) {\n            while (R) {\n                i--;\n                R = ~~(d * Math.pow(10, i)) / Math.pow(10, i);\n            }\n\n            i ++;\n        } else {\n            while (!r) {\n                i = i || 1;\n                r = ~~(d * Math.pow(10, i)) / Math.pow(10, i);\n                i++;\n            }\n\n            i && i--;\n        }\n\n        t = round(to * Math.pow(10, i)) / Math.pow(10, i);\n\n        if (t < to) {\n            t = round((to + .5) * Math.pow(10, i)) / Math.pow(10, i);\n        }\n\n        f = round((from - (i > 0 ? 0 : .5)) * Math.pow(10, i)) / Math.pow(10, i);\n        return { from: f, to: t, power: i };\n    },\n\n    axis: function (x, y, length, from, to, steps, orientation, labels, type, dashsize, paper) {\n        dashsize = dashsize == null ? 2 : dashsize;\n        type = type || \"t\";\n        steps = steps || 10;\n        paper = arguments[arguments.length-1] //paper is always last argument\n\n        var path = type == \"|\" || type == \" \" ? [\"M\", x + .5, y, \"l\", 0, .001] : orientation == 1 || orientation == 3 ? [\"M\", x + .5, y, \"l\", 0, -length] : [\"M\", x, y + .5, \"l\", length, 0],\n            ends = this.snapEnds(from, to, steps),\n            f = ends.from,\n            t = ends.to,\n            i = ends.power,\n            j = 0,\n            txtattr = { font: \"11px 'Fontin Sans', Fontin-Sans, sans-serif\" },\n            text = paper.set(),\n            d;\n\n        d = (t - f) / steps;\n\n        var label = f,\n            rnd = i > 0 ? i : 0;\n            dx = length / steps;\n\n        if (+orientation == 1 || +orientation == 3) {\n            var Y = y,\n                addon = (orientation - 1 ? 1 : -1) * (dashsize + 3 + !!(orientation - 1));\n\n            while (Y >= y - length) {\n                type != \"-\" && type != \" \" && (path = path.concat([\"M\", x - (type == \"+\" || type == \"|\" ? dashsize : !(orientation - 1) * dashsize * 2), Y + .5, \"l\", dashsize * 2 + 1, 0]));\n                text.push(paper.text(x + addon, Y, (labels && labels[j++]) || (Math.round(label) == label ? label : +label.toFixed(rnd))).attr(txtattr).attr({ \"text-anchor\": orientation - 1 ? \"start\" : \"end\" }));\n                label += d;\n                Y -= dx;\n            }\n\n            if (Math.round(Y + dx - (y - length))) {\n                type != \"-\" && type != \" \" && (path = path.concat([\"M\", x - (type == \"+\" || type == \"|\" ? dashsize : !(orientation - 1) * dashsize * 2), y - length + .5, \"l\", dashsize * 2 + 1, 0]));\n                text.push(paper.text(x + addon, y - length, (labels && labels[j]) || (Math.round(label) == label ? label : +label.toFixed(rnd))).attr(txtattr).attr({ \"text-anchor\": orientation - 1 ? \"start\" : \"end\" }));\n            }\n        } else {\n            label = f;\n            rnd = (i > 0) * i;\n            addon = (orientation ? -1 : 1) * (dashsize + 9 + !orientation);\n\n            var X = x,\n                dx = length / steps,\n                txt = 0,\n                prev = 0;\n\n            while (X <= x + length) {\n                type != \"-\" && type != \" \" && (path = path.concat([\"M\", X + .5, y - (type == \"+\" ? dashsize : !!orientation * dashsize * 2), \"l\", 0, dashsize * 2 + 1]));\n                text.push(txt = paper.text(X, y + addon, (labels && labels[j++]) || (Math.round(label) == label ? label : +label.toFixed(rnd))).attr(txtattr));\n\n                var bb = txt.getBBox();\n\n                if (prev >= bb.x - 5) {\n                    text.pop(text.length - 1).remove();\n                } else {\n                    prev = bb.x + bb.width;\n                }\n\n                label += d;\n                X += dx;\n            }\n\n            if (Math.round(X - dx - x - length)) {\n                type != \"-\" && type != \" \" && (path = path.concat([\"M\", x + length + .5, y - (type == \"+\" ? dashsize : !!orientation * dashsize * 2), \"l\", 0, dashsize * 2 + 1]));\n                text.push(paper.text(x + length, y + addon, (labels && labels[j]) || (Math.round(label) == label ? label : +label.toFixed(rnd))).attr(txtattr));\n            }\n        }\n\n        var res = paper.path(path);\n\n        res.text = text;\n        res.all = paper.set([res, text]);\n        res.remove = function () {\n            this.text.remove();\n            this.constructor.prototype.remove.call(this);\n        };\n\n        return res;\n    },\n    \n    labelise: function(label, val, total) {\n        if (label) {\n            return (label + \"\").replace(/(##+(?:\\.#+)?)|(%%+(?:\\.%+)?)/g, function (all, value, percent) {\n                if (value) {\n                    return (+val).toFixed(value.replace(/^#+\\.?/g, \"\").length);\n                }\n                if (percent) {\n                    return (val * 100 / total).toFixed(percent.replace(/^%+\\.?/g, \"\").length) + \"%\";\n                }\n            });\n        } else {\n            return (+val).toFixed(0);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/index.html",
    "content": "\n\n\n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>农技推广综合管理平台</title>\n<script type=\"text/javascript\" src=\"./raphael.js\"></script>\n<script type=\"text/javascript\" src=\"./g.raphael.js\"></script>\n<script type=\"text/javascript\" src=\"./g.bar.js\"></script>\n<script type=\"text/javascript\" src=\"./g.line.js\"></script>\n<script type=\"text/javascript\" src=\"./g.pie.js\"></script>\n<script type=\"text/javascript\" src=\"./g.dot.js\"></script>\n<script type=\"text/javascript\" src=\"./jquery-2.1.4.js\"></script>\n  <script type=\"text/javascript\">\nvar options = {\n\taxis: \"0 0 1 1\", // Where to put the labels (trbl)\n\taxisxstep: 6, // How many x interval labels to render (axisystep does the same for the y axis)\n\tshade:true, // true, false\n\tsmooth:false, //曲线\n\tsymbol:\"circle\",\n\tcolors:[\"#F44\"]\n};\n\n$(function () {\n\t\n\t// Make the raphael object\n\tvar r = Raphael(\"chartHolder\"); \n\tvar dateE=['07','08','09','10','11','12','13','14','15'];\n\tvar lines = r.linechart(\n\t\t20, // X start in pixels\n\t\t10, // Y start in pixels\n\t\t600, // Width of chart in pixels\n\t\t400, // Height of chart in pixels\n\t\t[07,08,09,10,11,12,13,14,15], // Array of x coordinates equal in length to ycoords\n\t\t[7,8,9,10,11,12,13,14,15], // Array of y coordinates equal in length to xcoords\n\t\toptions // opts object\n\t);\n\tlines.label(dateE,true);\n\n});\n</script>\n</head>\n<body>\n <div id=\"chartHolder\" style=\"width: 650px;height: 450px\"></div>\n\n</body>\n</html>\n\n\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/jquery-2.1.4.js",
    "content": "/*!\n * jQuery JavaScript Library v2.1.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:01Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\n\nvar arr = [];\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\tversion = \"2.1.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the function hasn't returned already, we're confident that\n\t\t// |obj| is a plain object, created by {} or constructed with new Object\n\t\treturn true;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf(\"use strict\") === 1 ) {\n\t\t\t\tscript = document.createElement(\"script\");\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t// and removal by using an indirect global eval\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ selector.length - 1 ] === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// We once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata_priv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = data_priv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = data_priv.access( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = data_priv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = iframe[ 0 ].contentDocument;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// Support: IE9\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\t}\n\n\tif ( computed ) {\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// Support: iOS < 6\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\tvar pixelPositionVal, boxSizingReliableVal,\n\t\tdocElem = document.documentElement,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE9-11+\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;\" +\n\t\t\"position:absolute\";\n\tcontainer.appendChild( div );\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computePixelPositionAndBoxSizingReliable() {\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;\" +\n\t\t\t\"box-sizing:border-box;display:block;margin-top:1%;top:1%;\" +\n\t\t\t\"border:1px;padding:1px;width:4px;position:absolute\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocElem.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div, null );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\tdocElem.removeChild( container );\n\t}\n\n\t// Support: node.js jsdom\n\t// Don't assume that getComputedStyle is a property of the global object\n\tif ( window.getComputedStyle ) {\n\t\tjQuery.extend( support, {\n\t\t\tpixelPosition: function() {\n\n\t\t\t\t// This test is executed only once but we still do memoizing\n\t\t\t\t// since we can use the boxSizingReliable pre-computing.\n\t\t\t\t// No need to check if the test was already performed, though.\n\t\t\t\tcomputePixelPositionAndBoxSizingReliable();\n\t\t\t\treturn pixelPositionVal;\n\t\t\t},\n\t\t\tboxSizingReliable: function() {\n\t\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\t\tcomputePixelPositionAndBoxSizingReliable();\n\t\t\t\t}\n\t\t\t\treturn boxSizingReliableVal;\n\t\t\t},\n\t\t\treliableMarginRight: function() {\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// This support function is only executed once so no memoizing is needed.\n\t\t\t\tvar ret,\n\t\t\t\t\tmarginDiv = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\t\tmarginDiv.style.cssText = div.style.cssText =\n\t\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;padding:0\";\n\t\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\t\tdiv.style.width = \"1px\";\n\t\t\t\tdocElem.appendChild( container );\n\n\t\t\t\tret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );\n\n\t\t\t\tdocElem.removeChild( container );\n\t\t\t\tdiv.removeChild( marginDiv );\n\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t});\n\t}\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar\n\t// Swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trnumsplit = new RegExp( \"^(\" + pnum + \")(.*)$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + pnum + \")\", \"i\" ),\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[0].toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = data_priv.get( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = data_priv.access( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display !== \"none\" || !hidden ) {\n\t\t\t\tdata_priv.set( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.extend({\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\n// Support: Android 2.3\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE9\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t}\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur(),\n\t\t\t\t// break the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = data_priv.get( elem, \"fxshow\" );\n\n\t// Handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE9-10 do not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tdata_priv.get( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\t\t\tstyle.display = \"inline-block\";\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always(function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t});\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = data_priv.access( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// Store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\n\t\t\tdata_priv.remove( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === \"none\" ? defaultDisplay( elem.nodeName ) : display) === \"inline\" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || data_priv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = data_priv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = data_priv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: iOS<=5.1, Android<=4.2+\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE<=11+\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: Android<=2.3\n\t// Options inside disabled selects are incorrectly marked as disabled\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<=11+\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n})();\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle;\n\t\tif ( !isXML ) {\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ name ];\n\t\t\tattrHandle[ name ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tname.toLowerCase() :\n\t\t\t\tnull;\n\t\t\tattrHandle[ name ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n});\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i;\n\njQuery.fn.extend({\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.hasAttribute( \"tabindex\" ) || rfocusable.test( elem.nodeName ) || elem.href ?\n\t\t\t\t\telem.tabIndex :\n\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\tproceed = typeof value === \"string\" && value,\n\t\t\ti = 0,\n\t\t\tlen = this.length;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value,\n\t\t\ti = 0,\n\t\t\tlen = this.length;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// Toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tdata_priv.set( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : data_priv.get( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n});\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// IE6-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ? !option.disabled : option.getAttribute( \"disabled\" ) === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\n// Support: Android 2.3\n// Workaround failure to string-cast null input\njQuery.parseJSON = function( data ) {\n\treturn JSON.parse( data + \"\" );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE9\n\ttry {\n\t\ttmp = new DOMParser();\n\t\txml = tmp.parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Document location\n\tajaxLocation = window.location.href,\n\n\t// Segment location into parts\n\tajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[0] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" )\n\t\t\t.replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t});\n};\n\n\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[ 0 ] ) {\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0;\n};\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new XMLHttpRequest();\n\t} catch( e ) {}\n};\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSuccessStatus = {\n\t\t// file protocol always yields status code 0, assume 200\n\t\t0: 200,\n\t\t// Support: IE9\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE9\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( \"onunload\", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]();\n\t\t}\n\t});\n}\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport(function( options ) {\n\tvar callback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = xhr.onload = xhr.onerror = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\t// file: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\t\t\t\t\t\t\t\t\t// Support: IE9\n\t\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText === \"string\" ? {\n\t\t\t\t\t\t\t\t\t\ttext: xhr.responseText\n\t\t\t\t\t\t\t\t\t} : undefined,\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\txhr.onerror = callback(\"error\");\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = xhrCallbacks[ id ] = callback(\"abort\");\n\n\t\t\t\ttry {\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery(\"<script>\").prop({\n\t\t\t\t\tasync: true,\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t}).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n});\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\n\n\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf(\"auto\") > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each(function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t});\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\telem = this[ 0 ],\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// Support: BlackBerry 5, iOS 3 (original iPhone)\n\t\t// If we don't have gBCR, just use 0,0 rather than error\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: box.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\" ) === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : window.pageXOffset,\n\t\t\t\t\ttop ? val : window.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\n// Support: Safari<7+, Chrome<37+\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n});\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t});\n}\n\n\n\n\nvar\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n"
  },
  {
    "path": "src/main/webapp/jslib/chart/raphael-min.js",
    "content": "// ┌─────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël 2.0 - JavaScript Vector Library                             │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\\\\n// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\\\\n// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\\\\n// └─────────────────────────────────────────────────────────────────────┘ \\\\\n(function(a){var b=\"0.3.2\",c=\"hasOwnProperty\",d=/[\\.\\/]/,e=\"*\",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=[];h=a,i=0;for(var s=0,t=f.length;s<t;s++)\"zIndex\"in f[s]&&(o.push(f[s].zIndex),f[s].zIndex<0&&(p[f[s].zIndex]=f[s]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(s=0;s<t;s++){n=f[s];if(\"zIndex\"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i){i=d;return q}do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i){i=d;return q}}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i){i=d;return q}}}i=d;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp(\"(?:\\\\.|\\\\/|^)\"+a+\"(?:\\\\.|\\\\/|$)\")).test(h);return h},k.unbind=function(a,b){var f=a.split(d),g,h,i,k=[j];for(var l=0,m=f.length;l<m;l++)for(var n=0;n<k.length;n+=i.length-2){i=[n,1],g=k[n].n;if(f[l]!=e)g[f[l]]&&i.push(g[f[l]]);else for(h in g)g[c](h)&&i.push(g[h]);k.splice.apply(k,i)}for(l=0,m=k.length;l<m;l++){g=k[l];while(g.n){if(b){if(g.f){for(n=0,jj=g.f.length;n<jj;n++)if(g.f[n]==b){g.f.splice(n,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var o=g.n[h].f;for(n=0,jj=o.length;n<jj;n++)if(o[n]==b){o.splice(n,1);break}!o.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.version=b,k.toString=function(){return\"You are running Eve \"+b},typeof module!=\"undefined\"&&module.exports?module.exports=k:a.eve=k})(this),function(){function cr(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cl.length;y<z;y++){var x=cl[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cl.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(attr in j)if(j[g](attr))if(U[g](attr)||d.paper.customAttributes[g](attr)){u[attr]=d.attr(attr),u[attr]==null&&(u[attr]=T[attr]),v[attr]=j[attr];switch(U[attr]){case C:w[attr]=(v[attr]-u[attr])/t;break;case\"colour\":u[attr]=a.getRGB(u[attr]);var A=a.getRGB(v[attr]);w[attr]={r:(A.r-u[attr].r)/t,g:(A.g-u[attr].g)/t,b:(A.b-u[attr].b)/t};break;case\"path\":var B=bG(u[attr],v[attr]),D=B[1];u[attr]=B[0],w[attr]=[];for(y=0,z=u[attr].length;y<z;y++){w[attr][y]=[0];for(var E=1,F=u[attr][y].length;E<F;E++)w[attr][y][E]=(D[y][E]-u[attr][y][E])/t}break;case\"transform\":var G=d._,H=bQ(G[attr],v[attr]);if(H){u[attr]=H.from,v[attr]=H.to,w[attr]=[],w[attr].real=!0;for(y=0,z=u[attr].length;y<z;y++){w[attr][y]=[u[attr][y][0]];for(E=1,F=u[attr][y].length;E<F;E++)w[attr][y][E]=(v[attr][y][E]-u[attr][y][E])/t}}else{var I=d.matrix||new bR,J={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};u[attr]=[I.a,I.b,I.c,I.d,I.e,I.f],bO(J,v[attr]),v[attr]=J._.transform,w[attr]=[(J.matrix.a-I.a)/t,(J.matrix.b-I.b)/t,(J.matrix.c-I.c)/t,(J.matrix.d-I.d)/t,(J.matrix.e-I.e)/t,(J.matrix.e-I.f)/t]}break;case\"csv\":var K=r(j[attr])[s](c),L=r(u[attr])[s](c);if(attr==\"clip-rect\"){u[attr]=L,w[attr]=[],y=L.length;while(y--)w[attr][y]=(K[y]-u[attr][y])/t}v[attr]=K;break;default:K=[][n](j[attr]),L=[][n](u[attr]),w[attr]=[],y=d.paper.customAttributes[attr].length;while(y--)w[attr][y]=((K[y]||0)-(L[y]||0))/t}}var M=j.easing,O=a.easing_formulas[M];if(!O){O=r(M).match(N);if(O&&O.length==5){var P=O;O=function(a){return cp(a,+P[1],+P[2],+P[3],+P[4],t)}}else O=be}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:O,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cl.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cl.length==1)return cn()}l&&(x.start=new Date-x.ms*f),cl.length==1&&cm(cn)}else k.initstatus=f,k.start=new Date-k.ms*f;eve(\"anim.start.\"+d.id,d,b)}}function cq(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bc)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cp(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cd(){return this.x+q+this.y+q+this.width+\" × \"+this.height}function cc(){return this.x+q+this.y}function bR(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bw(a){var b=[];for(var c=0,d=a.length;d-2>c;c+=2){var e=[{x:+a[c],y:+a[c+1]},{x:+a[c],y:+a[c+1]},{x:+a[c+2],y:+a[c+3]},{x:+a[c+4],y:+a[c+5]}];d-4==c?(e[0]={x:+a[c-2],y:+a[c-1]},e[3]=e[2]):c&&(e[0]={x:+a[c-2],y:+a[c-1]}),b.push([\"C\",(-e[0].x+6*e[1].x+e[2].x)/6,(-e[0].y+6*e[1].y+e[2].y)/6,(e[1].x+6*e[2].x-e[3].x)/6,(e[1].y+6*e[2].y-e[3].y)/6,e[2].x,e[2].y])}return b}function bv(){return this.hex}function bt(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join(\"␀\"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bs(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bs(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function a(c){if(a.is(c,\"function\"))return b?c():eve.on(\"DOMload\",c);if(a.is(c,E)){var e=c,f=a._engine.create[m](a,e.splice(0,3+a.is(e[0],C))),h=f.set(),i=0,j=e.length,k;for(;i<j;i++)k=e[i]||{},d[g](k.type)&&h.push(f[k.type]().attr(k));return h}var l=Array.prototype.slice.call(arguments,0);if(a.is(l[l.length-1],\"function\")){var n=l.pop();return b?n.call(a._engine.create[m](a,l)):eve.on(\"DOMload\",function(){n.call(a._engine.create[m](a,l))})}return a._engine.create[m](a,arguments)}a.version=\"2.0.0\",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\\{(\\d+)\\}/g,f=\"prototype\",g=\"hasOwnProperty\",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,\"Raphael\"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l=\"appendChild\",m=\"apply\",n=\"concat\",o=\"createTouch\"in h.doc,p=\"\",q=\" \",r=String,s=\"split\",t=\"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\"[s](q),u={mousedown:\"touchstart\",mousemove:\"touchmove\",mouseup:\"touchend\"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C=\"number\",D=\"string\",E=\"array\",F=\"toString\",G=\"fill\",H=Object.prototype.toString,I={},J=\"push\",K=a._ISURL=/^url\\(['\"]?([^\\)]+?)['\"]?\\)$/i,L=/^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i,M={NaN:1,Infinity:1,\"-Infinity\":1},N=/^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,O=w.round,P=\"setAttribute\",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={\"arrow-end\":\"none\",\"arrow-start\":\"none\",blur:0,\"clip-rect\":\"0 0 1e9 1e9\",cursor:\"default\",cx:0,cy:0,fill:\"#fff\",\"fill-opacity\":1,font:'10px \"Arial\"',\"font-family\":'\"Arial\"',\"font-size\":\"10\",\"font-style\":\"normal\",\"font-weight\":400,gradient:0,height:0,href:\"http://raphaeljs.com/\",opacity:1,path:\"M0,0\",r:0,rx:0,ry:0,src:\"\",stroke:\"#000\",\"stroke-dasharray\":\"\",\"stroke-linecap\":\"butt\",\"stroke-linejoin\":\"butt\",\"stroke-miterlimit\":0,\"stroke-opacity\":1,\"stroke-width\":1,target:\"_blank\",\"text-anchor\":\"middle\",title:\"Raphael\",transform:\"\",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,\"clip-rect\":\"csv\",cx:C,cy:C,fill:\"colour\",\"fill-opacity\":C,\"font-size\":C,height:C,opacity:C,path:\"path\",r:C,rx:C,ry:C,stroke:\"colour\",\"stroke-opacity\":C,\"stroke-width\":C,transform:\"transform\",width:C,x:C,y:C},V=/\\s*,\\s*/,W={hs:1,rg:1},X=/,?([achlmqrstvxz]),?/gi,Y=/([achlmrqstvz])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?\\s*,?\\s*)+)/ig,Z=/([rstm])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?\\s*,?\\s*)+)/ig,$=/(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)\\s*,?\\s*/ig,_=a._radial_gradient=/^r(?:\\(([^,]+?)\\s*,\\s*([^\\)]+?)\\))?/,ba={},bb=function(a,b){return a.key-b.key},bc=function(a,b){return Q(a)-Q(b)},bd=function(){},be=function(a){return a},bf=a._rectPath=function(a,b,c,d,e){if(e)return[[\"M\",a+e,b],[\"l\",c-e*2,0],[\"a\",e,e,0,0,1,e,e],[\"l\",0,d-e*2],[\"a\",e,e,0,0,1,-e,e],[\"l\",e*2-c,0],[\"a\",e,e,0,0,1,-e,-e],[\"l\",0,e*2-d],[\"a\",e,e,0,0,1,e,-e],[\"z\"]];return[[\"M\",a,b],[\"l\",c,0],[\"l\",0,d],[\"l\",-c,0],[\"z\"]]},bg=function(a,b,c,d){d==null&&(d=c);return[[\"M\",a,b],[\"m\",0,-d],[\"a\",c,d,0,1,1,0,2*d],[\"a\",c,d,0,1,1,0,-2*d],[\"z\"]]},bh=a._getPath={path:function(a){return a.attr(\"path\")},circle:function(a){var b=a.attrs;return bg(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bg(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bf(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bf(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bf(b.x,b.y,b.width,b.height)}},bi=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g;a=bG(a);for(e=0,ii=a.length;e<ii;e++){g=a[e];for(f=1,jj=g.length;f<jj;f+=2)c=b.x(g[f],g[f+1]),d=b.y(g[f],g[f+1]),g[f]=c,g[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\",\"1.1\")?\"SVG\":\"VML\";if(a.type==\"VML\"){var bj=h.doc.createElement(\"div\"),bk;bj.innerHTML='<v:shape adj=\"1\"/>',bk=bj.firstChild,bk.style.behavior=\"url(#default#VML)\";if(!bk||typeof bk.adj!=\"object\")return a.type=p;bj=null}a.svg=!(a.vml=a.type==\"VML\"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b==\"finite\")return!M[g](+a);if(b==\"array\")return a instanceof Array;return b==\"null\"&&a===null||b==typeof a&&a!==null||b==\"object\"&&a===Object(a)||b==\"array\"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,\"finite\")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bl=a.createUUID=function(a,b){return function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a==\"x\"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve(\"setWindow\",a,h.win,b),h.win=b,h.doc=h.win.document,initWin&&initWin(h.win)};var bm=function(b){if(a.vml){var c=/^\\s+|\\s+$/g,d;try{var e=new ActiveXObject(\"htmlfile\");e.write(\"<body>\"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bm=bt(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue(\"ForeColor\");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return\"#\"+(\"000000\"+b.toString(16)).slice(-6)}catch(e){return\"none\"}})}else{var i=h.doc.createElement(\"i\");i.title=\"Raphaël Colour Picker\",i.style.display=\"none\",h.doc.body.appendChild(i),bm=bt(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue(\"color\")})}return bm(b)},bn=function(){return\"hsb(\"+[this.h,this.s,this.b]+\")\"},bo=function(){return\"hsl(\"+[this.h,this.s,this.l]+\")\"},bp=function(){return this.hex},bq=function(b,c,d){c==null&&a.is(b,\"object\")&&\"r\"in b&&\"g\"in b&&\"b\"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},br=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:bp};a.is(e,\"finite\")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,\"object\")&&\"h\"in b&&\"s\"in b&&\"b\"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,\"object\")&&\"h\"in b&&\"s\"in b&&\"l\"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,\"string\")&&(b=a.getRGB(b)),a.is(b,\"object\")&&\"r\"in b&&\"g\"in b&&\"b\"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:\"none\"},crl.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=bp;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,\"object\")&&\"h\"in a&&\"s\"in a&&\"b\"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return br(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,\"object\")&&\"h\"in a&&\"s\"in a&&\"l\"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return br(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bq(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bn}},a.rgb2hsl=function(a,b,c){c=bq(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bo}},a._path2string=function(){return this.join(\",\").replace(X,\"$1\")};var bu=a._preload=function(a,b){var c=h.doc.createElement(\"img\");c.style.cssText=\"position:absolute;left:-9999em;top-9999em\",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bt(function(b){if(!b||!!((b=r(b)).indexOf(\"-\")+1))return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:bv};if(b==\"none\")return{r:-1,g:-1,b:-1,hex:\"none\",toString:bv};!W[g](b.toLowerCase().substring(0,2))&&b.charAt()!=\"#\"&&(b=bm(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](V),d=Q(j[0]),j[0].slice(-1)==\"%\"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)==\"%\"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)==\"%\"&&(f*=2.55),k[1].toLowerCase().slice(0,4)==\"rgba\"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)==\"%\"&&(h/=100));if(k[5]){j=k[5][s](V),d=Q(j[0]),j[0].slice(-1)==\"%\"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)==\"%\"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)==\"%\"&&(f*=2.55),(j[0].slice(-3)==\"deg\"||j[0].slice(-1)==\"°\")&&(d/=360),k[1].toLowerCase().slice(0,4)==\"hsba\"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)==\"%\"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](V),d=Q(j[0]),j[0].slice(-1)==\"%\"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)==\"%\"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)==\"%\"&&(f*=2.55),(j[0].slice(-3)==\"deg\"||j[0].slice(-1)==\"°\")&&(d/=360),k[1].toLowerCase().slice(0,4)==\"hsla\"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)==\"%\"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bv},k.hex=\"#\"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,\"finite\")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:bv}},a),a.hsb=bt(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bt(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bt(function(a,b,c){return\"#\"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=bt(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=by(b)),d.length||r(b).replace(Y,function(a,b,e){var f=[],g=b.toLowerCase();e.replace($,function(a,b){b&&f.push(+b)}),g==\"m\"&&f.length>2&&(d.push([b][n](f.splice(0,2))),g=\"l\",b=b==\"m\"?\"l\":\"L\");if(g==\"r\")d.push([b][n](f));else while(f.length>=c[g]){d.push([b][n](f.splice(0,c[g])));if(!c[g])break}}),d.toString=a._path2string;return d}),a.parseTransformString=bt(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=by(b)),d.length||r(b).replace(Z,function(a,b,c){var e=[],f=v.call(b);c.replace($,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d}),a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}};var bx=bt(function(a){if(!a)return{x:0,y:0,width:0,height:0};a=bG(a);var b=0,c=0,d=[],e=[],f;for(var g=0,h=a.length;g<h;g++){f=a[g];if(f[0]==\"M\")b=f[1],c=f[2],d.push(b),e.push(c);else{var i=bF(b,c,f[1],f[2],f[3],f[4],f[5],f[6]);d=d[n](i.min.x,i.max.x),e=e[n](i.min.y,i.max.y),b=f[5],c=f[6]}}var j=y[m](0,d),k=y[m](0,e);return{x:j,y:k,width:x[m](0,d)-j,height:x[m](0,e)-k}},null,function(a){return{x:a.x,y:a.y,width:a.width,height:a.height}}),by=function(b){var c=[];if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);for(var d=0,e=b.length;d<e;d++){c[d]=[];for(var f=0,g=b[d].length;f<g;f++)c[d][f]=b[d][f]}c.toString=a._path2string;return c},bz=a._pathToRelative=bt(function(b){if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var c=[],d=0,e=0,f=0,g=0,h=0;b[0][0]==\"M\"&&(d=b[0][1],e=b[0][2],f=d,g=e,h++,c.push([\"M\",d,e]));for(var i=h,j=b.length;i<j;i++){var k=c[i]=[],l=b[i];if(l[0]!=v.call(l[0])){k[0]=v.call(l[0]);switch(k[0]){case\"a\":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]-d).toFixed(3),k[7]=+(l[7]-e).toFixed(3);break;case\"v\":k[1]=+(l[1]-e).toFixed(3);break;case\"m\":f=l[1],g=l[2];default:for(var m=1,n=l.length;m<n;m++)k[m]=+(l[m]-(m%2?d:e)).toFixed(3)}}else{k=c[i]=[],l[0]==\"m\"&&(f=l[1]+d,g=l[2]+e);for(var o=0,p=l.length;o<p;o++)c[i][o]=l[o]}var q=c[i].length;switch(c[i][0]){case\"z\":d=f,e=g;break;case\"h\":d+=+c[i][q-1];break;case\"v\":e+=+c[i][q-1];break;default:d+=+c[i][q-2],e+=+c[i][q-1]}}c.toString=a._path2string;return c},0,by),bA=a._pathToAbsolute=bt(function(b){if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[[\"M\",0,0]];var c=[],d=0,e=0,f=0,g=0,h=0;b[0][0]==\"M\"&&(d=+b[0][1],e=+b[0][2],f=d,g=e,h++,c[0]=[\"M\",d,e]);for(var i,j,k=h,l=b.length;k<l;k++){c.push(i=[]),j=b[k];if(j[0]!=S.call(j[0])){i[0]=S.call(j[0]);switch(i[0]){case\"A\":i[1]=j[1],i[2]=j[2],i[3]=j[3],i[4]=j[4],i[5]=j[5],i[6]=+(j[6]+d),i[7]=+(j[7]+e);break;case\"V\":i[1]=+j[1]+e;break;case\"H\":i[1]=+j[1]+d;break;case\"R\":var m=[d,e][n](j.slice(1));for(var o=2,p=m.length;o<p;o++)m[o]=+m[o]+d,m[++o]=+m[o]+e;c.pop(),c=c[n](bw(m));break;case\"M\":f=+j[1]+d,g=+j[2]+e;default:for(o=1,p=j.length;o<p;o++)i[o]=+j[o]+(o%2?d:e)}}else if(j[0]==\"R\")m=[d,e][n](j.slice(1)),c.pop(),c=c[n](bw(m)),i=[\"R\"][n](j.slice(-2));else for(var q=0,r=j.length;q<r;q++)i[q]=j[q];switch(i[0]){case\"Z\":d=f,e=g;break;case\"H\":d=i[1];break;case\"V\":e=i[1];break;case\"M\":f=i[i.length-2],g=i[i.length-1];default:d=i[i.length-2],e=i[i.length-1]}}c.toString=a._path2string;return c},null,by),bB=function(a,b,c,d){return[a,b,c,d,c,d]},bC=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bD=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bt(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bD(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](\",\");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bE=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bF=bt(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>\"1e12\"&&(l=.5),z(n)>\"1e12\"&&(n=.5),l>0&&l<1&&(q=bE(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bE(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>\"1e12\"&&(l=.5),z(n)>\"1e12\"&&(n=.5),l>0&&l<1&&(q=bE(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bE(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bG=a._path2curve=bt(function(a,b){var c=bA(a),d=b&&bA(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return[\"C\",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case\"M\":b.X=a[1],b.Y=a[2];break;case\"A\":a=[\"C\"][n](bD[m](0,[b.x,b.y][n](a.slice(1))));break;case\"S\":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=[\"C\",c,d][n](a.slice(1));break;case\"T\":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=[\"C\"][n](bC(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case\"Q\":b.qx=a[1],b.qy=a[2],a=[\"C\"][n](bC(b.x,b.y,a[1],a[2],a[3],a[4]));break;case\"L\":a=[\"C\"][n](bB(b.x,b.y,a[1],a[2]));break;case\"H\":a=[\"C\"][n](bB(b.x,b.y,a[1],b.y));break;case\"V\":a=[\"C\"][n](bB(b.x,b.y,b.x,a[1]));break;case\"Z\":a=[\"C\"][n](bB(b.x,b.y,b.X,b.Y))}return a},h=function(a,b){if(a[b].length>7){a[b].shift();var e=a[b];while(e.length)a.splice(b++,0,[\"C\"][n](e.splice(0,6)));a.splice(b,1),k=x(c.length,d&&d.length||0)}},i=function(a,b,e,f,g){a&&b&&a[g][0]==\"M\"&&b[g][0]!=\"M\"&&(b.splice(g,0,[\"M\",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],k=x(c.length,d&&d.length||0))};for(var j=0,k=x(c.length,d&&d.length||0);j<k;j++){c[j]=g(c[j],e),h(c,j),d&&(d[j]=g(d[j],f)),d&&h(d,j),i(c,d,e,f,j),i(d,c,f,e,j);var l=c[j],o=d&&d[j],p=l.length,q=d&&o.length;e.x=l[p-2],e.y=l[p-1],e.bx=Q(l[p-4])||e.x,e.by=Q(l[p-3])||e.y,f.bx=d&&(Q(o[q-4])||f.x),f.by=d&&(Q(o[q-3])||f.y),f.x=d&&o[q-2],f.y=d&&o[q-1]}return d?[c,d]:c},null,by),bH=a._parseDots=bt(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\\d\\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+\"%\"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+\"%\"}return c}),bI=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bJ=a._tofront=function(a,b){b.top!==a&&(bI(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bK=a._toback=function(a,b){b.bottom!==a&&(bI(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bL=a._insertafter=function(a,b,c){bI(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bM=a._insertbefore=function(a,b,c){bI(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bN=function(a){return function(){throw new Error(\"Raphaël: you are calling to method “\"+a+\"” of removed object\")}},bO=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\\.{3}|\\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new bR;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q==\"t\"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q==\"r\"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q==\"s\"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q==\"m\"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},bP=function(a){var b=a[0];switch(b.toLowerCase()){case\"t\":return[b,0,0];case\"m\":return[b,1,0,0,1,0,0];case\"r\":return a.length==4?[b,0,a[2],a[3]]:[b,0];case\"s\":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},bQ=a._equaliseTransform=function(b,c){c=r(c).replace(/\\.{3}|\\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||bP(c[g]),k=c[g]||bP(j);if(j[0]!=k[0]||j[0].toLowerCase()==\"r\"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()==\"s\"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,\"object\")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bz,a._engine={},a.path2curve=bG,a.matrix=function(a,b,c,d,e,f){return new bR(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof bR&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new bR(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new bR(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?\"matrix(\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+\")\":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return\"progid:DXImageTransform.Microsoft.Matrix(M11=\"+this.get(0)+\", M12=\"+this.get(2)+\", M21=\"+this.get(1)+\", M22=\"+this.get(3)+\", Dx=\"+this.get(4)+\", Dy=\"+this.get(5)+\", sizingmethod='auto expand')\"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();return b.isSimple?\"t\"+[b.dx,b.dy]+\"s\"+[b.scalex,b.scaley,0,0]+\"r\"+[b.rotate,0,0]:\"m\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(bR.prototype);var bS=navigator.userAgent.match(/Version\\/(.*?)\\s/)||navigator.userAgent.match(/Chrome\\/(\\d+)/);navigator.vendor==\"Apple Computer, Inc.\"&&(bS&&bS[1]<4||navigator.platform.slice(0,2)==\"iP\")||navigator.vendor==\"Google Inc.\"&&bS&&bS[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:\"none\"});setTimeout(function(){a.remove()})}:k.safari=bd;var bT=function(){this.returnValue=!1},bU=function(){return this.originalEvent.preventDefault()},bV=function(){this.cancelBubble=!0},bW=function(){return this.originalEvent.stopPropagation()},bX=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=bU,e.stopPropagation=bW;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||bT,a.stopPropagation=a.stopPropagation||bV;return c.call(d,a,f,g)};a.attachEvent(\"on\"+b,e);var f=function(){a.detachEvent(\"on\"+b,e);return!0};return f}}(),bY=[],bZ=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=bY.length;while(g--){f=bY[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display=\"none\",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve(\"drag.over.\"+f.el.id,f.el,l),b+=e,c+=d,eve(\"drag.move.\"+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},b$=function(b){a.unmousemove(bZ).unmouseup(b$);var c=bY.length,d;while(c--)d=bY[c],d.el._drag={},eve(\"drag.end.\"+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);bY=[]},b_=a.el={};for(var ca=t.length;ca--;)(function(b){a[b]=b_[b]=function(c,d){a.is(c,\"function\")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:bX(this.shape||this.node||h.doc,b,c,d||this)}));return this},a[\"un\"+b]=b_[\"un\"+b]=function(a){var c=this.events,d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[ca]);b_.data=function(b,c){var d=ba[this.id]=ba[this.id]||{};if(arguments.length==1){if(a.is(b,\"object\")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve(\"data.get.\"+this.id,this,d[b],b);return d[b]}d[b]=c,eve(\"data.set.\"+this.id,this,c,b);return this},b_.removeData=function(a){a==null?ba[this.id]={}:ba[this.id]&&delete ba[this.id][a];return this},b_.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},b_.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)},b_.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!bY.length&&a.mousemove(bZ).mouseup(b$),bY.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on(\"drag.start.\"+this.id,c),b&&eve.on(\"drag.move.\"+this.id,b),d&&eve.on(\"drag.end.\"+this.id,d),eve(\"drag.start.\"+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},this.mousedown(i);return this},b_.onDragOver=function(a){a?eve.on(\"drag.over.\"+this.id,a):eve.unbind(\"drag.over.\"+this.id)},b_.undrag=function(){var b=bY.length;while(b--)bY[b].el==this&&(a.unmousedown(bY[b].start),bY.splice(b++,1),eve.unbind(\"drag.*.\"+this.id));!bY.length&&a.unmousemove(bZ).unmouseup(b$)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||\"about:blank\",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,\"array\")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cs(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var cb=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName==\"svg\"){var f=cb(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},b_.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bh[this.type](this),b.bboxwt=bx(this.realPath),b.bboxwt.toString=cd,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bh[this.type](this);b.bbox=bx(bi(this.realPath,this.matrix)),b.bbox.toString=cd,b.dirty=b.dirtyT=0}return b.bbox},b_.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},b_.glow=function(a){if(this.type==\"text\")return null;a=a||{};var b={width:(a.width||10)+(+this.attr(\"stroke-width\")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||\"#000\"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bh[this.type](this);f=this.matrix?bi(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:\"none\",\"stroke-linejoin\":\"round\",\"stroke-linecap\":\"round\",\"stroke-width\":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var ce={},cf=function(b,c,d,e,f,g,h,i,j){var k=0,l=100,m=[b,c,d,e,f,g,h,i].join(),n=ce[m],o,p;!n&&(ce[m]=n={data:[]}),n.timer&&clearTimeout(n.timer),n.timer=setTimeout(function(){delete ce[m]},2e3);if(j!=null&&!n.precision){var q=cf(b,c,d,e,f,g,h,i);n.precision=~~q*10,n.data=[]}l=n.precision||l;for(var r=0;r<l+1;r++){n.data[r*l]?p=n.data[r*l]:(p=a.findDotsAtSegment(b,c,d,e,f,g,h,i,r/l),n.data[r*l]=p),r&&(k+=A(A(o.x-p.x,2)+A(o.y-p.y,2),.5));if(j!=null&&k>=j)return p;o=p}if(j==null)return k},cg=function(b,c){return function(d,e,f){d=bG(d);var g,h,i,j,k=\"\",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]==\"M\")g=+i[1],h=+i[2];else{j=cf(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cf(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=[\"C\"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=[\"M\"+m.x,m.y+\"C\"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cf(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},ch=cg(1),ci=cg(),cj=cg(0,1);a.getTotalLength=ch,a.getPointAtLength=ci,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cj(a,b).end;var d=cj(a,c,1);return b?cj(d,b).end:d},b_.getTotalLength=function(){if(this.type==\"path\"){if(this.node.getTotalLength)return this.node.getTotalLength();return ch(this.attrs.path)}},b_.getPointAtLength=function(a){if(this.type==\"path\")return ci(this.attrs.path,a)},b_.getSubpath=function(b,c){if(this.type==\"path\")return a.getSubpath(this.attrs.path,b,c)};var ck=a.easing_formulas={linear:function(a){return a},\"<\":function(a){return A(a,1.7)},\">\":function(a){return A(a,.48)},\"<>\":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};ck.easeIn=ck[\"ease-in\"]=ck[\"<\"],ck.easeOut=ck[\"ease-out\"]=ck[\">\"],ck.easeInOut=ck[\"ease-in-out\"]=ck[\"<>\"],ck[\"back-in\"]=ck.backIn,ck[\"back-out\"]=ck.backOut;var cl=[],cm=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cn=function(){var b=+(new Date),c=0;for(;c<cl.length;c++){var d=cl[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cl.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case\"colour\":p=\"rgb(\"+[co(O(i[u].r+t*f*j[u].r)),co(O(i[u].g+t*f*j[u].g)),co(O(i[u].b+t*f*j[u].b))].join(\",\")+\")\";break;case\"path\":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case\"transform\":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[[\"m\",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case\"csv\":if(u==\"clip-rect\"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve(\"anim.frame.\"+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve(\"anim.frame.\"+c.id,c,d),eve(\"anim.finish.\"+c.id,c,d),a.is(b,\"function\")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cl.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cr(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cr(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cl.length&&cm(cn)},co=function(a){return a>255?255:a<0?0:a};b_.animateWith=function(b,c,d,e,f,g){var h=d?a.animation(d,e,f,g):c;status=b.status(c);return this.animate(h).status(h,status*c.ms/h.ms)},b_.onAnimation=function(a){a?eve.on(\"anim.frame.\"+this.id,a):eve.unbind(\"anim.frame.\"+this.id);return this},cq.prototype.delay=function(a){var b=new cq(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cq.prototype.repeat=function(a){var b=new cq(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cq)return b;if(a.is(d,\"function\")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+\"%\"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cq(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cq({100:f},c)},b_.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cq?b:a.animation(b,c,d,e);cr(g,f,g.percents[0],null,f.attr());return f},b_.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},b_.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cr(a,this,-1,y(b,1));return this}e=cl.length;for(;d<e;d++){f=cl[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},b_.pause=function(a){for(var b=0;b<cl.length;b++)cl[b].el.id==this.id&&(!a||cl[b].anim==a)&&eve(\"anim.pause.\"+this.id,this,cl[b].anim)!==!1&&(cl[b].paused=!0);return this},b_.resume=function(a){for(var b=0;b<cl.length;b++)if(cl[b].el.id==this.id&&(!a||cl[b].anim==a)){var c=cl[b];eve(\"anim.resume.\"+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},b_.stop=function(a){for(var b=0;b<cl.length;b++)cl[b].el.id==this.id&&(!a||cl[b].anim==a)&&eve(\"anim.stop.\"+this.id,this,cl[b].anim)!==!1&&cl.splice(b--,1);return this},b_.toString=function(){return\"Raphaël’s object\"};var cs=function(a){this.items=[],this.length=0,this.type=\"set\";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==b_.constructor||a[b].constructor==cs)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},ct=cs.prototype;ct.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==b_.constructor||a.constructor==cs)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},ct.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},ct.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cu in b_)b_[g](cu)&&(ct[cu]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cu));ct.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],\"object\"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},ct.clear=function(){while(this.length)this.pop()},ct.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cs(e)},ct.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},ct.animate=function(b,c,d,e){(a.is(d,\"function\")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k);return this},ct.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},ct.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b);return{x:a,y:b,width:x[m](0,c)-a,height:x[m](0,d)-b}},ct.clone=function(a){a=new cs;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},ct.toString=function(){return\"Raphaël‘s set\"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face[\"font-family\"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face[\"units-per-em\"]=R(a.face[\"units-per-em\"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&\"M\"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:\"L\",c:\"C\",x:\"z\",t:\"m\",r:\"l\",v:\"c\"}[a]||\"M\"})+\"z\"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||\"normal\",d=d||\"normal\",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp(\"(^|\\\\s)\"+b.replace(/[^\\w\\d\\s+!~.:_-]/g,p)+\"(\\\\s|$)\",\"i\");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face[\"font-weight\"]==c&&(j.face[\"font-style\"]==d||!j.face[\"font-style\"])&&j.face[\"font-stretch\"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||\"middle\",i=x(y(i||0,1),-1);var j=this.set(),k=r(e)[s](p),l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face[\"units-per-em\"];var o=f.face.bbox[s](c),q=+o[0],t=+o[1]+(h==\"baseline\"?o[3]-o[1]+ +f.face.descent:(o[3]-o[1])/2);for(var u=0,v=k.length;u<v;u++){var w=u&&f.glyphs[k[u-1]]||{},z=f.glyphs[k[u]];l+=u?(w.w||f.w)+(w.k&&w.k[k[u]]||0)+f.w*i:0,z&&z.d&&j.push(this.path(z.d).attr({fill:\"#000\",stroke:\"none\",transform:[[\"t\",l*n,0]]}))}j.transform([\"...s\",n,n,q,t,\"t\",(b-q)/n,(d-t)/n])}return j},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\\{([^\\}]+)\\}/g,b=/(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e==\"function\"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+\"\";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=ct,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve(\"DOMload\")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState=\"complete\"},!1),b.readyState=\"loading\"),e()}(document,\"DOMContentLoaded\"),i.was?h.win.Raphael=a:Raphael=a,eve.on(\"DOMload\",function(){b=!0})}(),window.Raphael.svg&&function(a){var b=\"hasOwnProperty\",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l=\"\",m=\" \",n=\"http://www.w3.org/1999/xlink\",o={block:\"M5,0 0,2.5 5,5z\",classic:\"M5,0 0,2.5 5,5 3.5,3 3.5,2z\",diamond:\"M2.5,0 5,2.5 2.5,5 0,2.5z\",open:\"M6,1 1,3.5 6,6\",oval:\"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z\"},p={};a.toString=function(){return\"Your browser supports SVG.\\nYou are running Raphaël \"+this.version};var q=function(d,e){if(e){typeof d==\"string\"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)==\"xlink:\"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS(\"http://www.w3.org/2000/svg\",d),d.style&&(d.style.webkitTapHighlightColor=\"rgba(0,0,0,0)\");return d},r={},s=/^url\\(#(.*)\\)$/,t=function(b,c){var d=b.getAttribute(\"fill\");d=d&&d.match(s),d&&!--r[d[1]]&&(delete r[d[1]],c.defs.removeChild(a._g.doc.getElementById(d[1])))},u=function(b,e){var j=\"linear\",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j=\"radial\";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\\s*\\-\\s*/);if(j==\"linear\"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;b.gradient&&(p.defs.removeChild(b.gradient),delete b.gradient),k=k.replace(/[\\(\\)\\s,\\xb0#]/g,\"-\"),s=q(j+\"Gradient\",{id:k}),b.gradient=s,q(s,j==\"radial\"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q(\"stop\",{offset:w[x].offset?w[x].offset:x?\"100%\":\"0%\",\"stop-color\":w[x].color||\"#fff\"}))}q(o,{fill:\"url(#\"+k+\")\",opacity:1,\"fill-opacity\":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},v=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+\" translate(\"+b.x+\",\"+b.y+\")\"})},w=function(d,e,f){if(d.type==\"path\"){var g=c(e).toLowerCase().split(\"-\"),h=d.paper,i=f?\"end\":\"start\",j=d.node,k=d.attrs,l=k[\"stroke-width\"],n=g.length,r=\"classic\",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case\"block\":case\"classic\":case\"oval\":case\"diamond\":case\"open\":case\"none\":r=g[n];break;case\"wide\":y=5;break;case\"narrow\":y=2;break;case\"long\":x=5;break;case\"short\":x=2}r==\"open\"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:\"none\",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:\"none\"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!=\"none\"){var A=\"raphael-marker-\"+r,B=\"raphael-marker-\"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q(\"path\"),{\"stroke-linecap\":\"round\",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName(\"use\")[0]):(C=q(q(\"marker\"),{id:B,markerHeight:y,markerWidth:x,orient:\"auto\",refX:v,refY:y/2}),D=q(q(\"use\"),{\"xlink:href\":\"#\"+A,transform:(f?\" rotate(180 \"+x/2+\" \"+y/2+\") \":m)+\"scale(\"+x/z+\",\"+y/z+\")\",\"stroke-width\":1/((x/z+y/z)/2)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var E=u*(r!=\"diamond\"&&r!=\"oval\");f?(s=d._.arrows.startdx*l||0,t=a.getTotalLength(k.path)-E*l):(s=E*l,t=a.getTotalLength(k.path)-(d._.arrows.enddx*l||0)),w={},w[\"marker-\"+i]=\"url(#\"+B+\")\";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+\"Path\"]=A,d._.arrows[i+\"Marker\"]=B,d._.arrows[i+\"dx\"]=E,d._.arrows[i+\"Type\"]=r,d._.arrows[i+\"String\"]=e}else f?(s=d._.arrows.startdx*l||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*l||0)),d._.arrows[i+\"Path\"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+\"Path\"],delete d._.arrows[i+\"Marker\"],delete d._.arrows[i+\"dx\"],delete d._.arrows[i+\"Type\"],delete d._.arrows[i+\"String\"];for(w in p)if(p[b](w)&&!p[w]){var F=a._g.doc.getElementById(w);F&&F.parentNode.removeChild(F)}}},x={\"\":[0],none:[0],\"-\":[3,1],\".\":[1,1],\"-.\":[3,1,1,1],\"-..\":[3,1,1,1,1,1],\". \":[1,3],\"- \":[4,3],\"--\":[8,3],\"- .\":[4,3,1,3],\"--.\":[8,3,1,3],\"--..\":[8,3,1,3,1,3]},y=function(a,b,d){b=x[c(b).toLowerCase()];if(b){var e=a.attrs[\"stroke-width\"]||\"1\",f={round:e,square:e,butt:0}[a.attrs[\"stroke-linecap\"]||d[\"stroke-linecap\"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{\"stroke-dasharray\":g.join(\",\")})}},z=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility=\"hidden\";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case\"blur\":d.blur(p);break;case\"href\":case\"title\":case\"target\":var r=i.parentNode;if(r.tagName.toLowerCase()!=\"a\"){var s=q(\"a\");r.insertBefore(s,i),s.appendChild(i),r=s}o==\"target\"&&p==\"blank\"?r.setAttributeNS(n,\"show\",\"new\"):r.setAttributeNS(n,o,p);break;case\"cursor\":i.style.cursor=p;break;case\"transform\":d.transform(p);break;case\"arrow-start\":w(d,p);break;case\"arrow-end\":w(d,p,1);break;case\"clip-rect\":var t=c(p).split(j);if(t.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var x=q(\"clipPath\"),z=q(\"rect\");x.id=a.createUUID(),q(z,{x:t[0],y:t[1],width:t[2],height:t[3]}),x.appendChild(z),d.paper.defs.appendChild(x),q(i,{\"clip-path\":\"url(#\"+x.id+\")\"}),d.clip=z}if(!p){var A=a._g.doc.getElementById(i.getAttribute(\"clip-path\").replace(/(^url\\(#|\\)$)/g,l));A&&A.parentNode.removeChild(A),q(i,{\"clip-path\":l}),delete d.clip}break;case\"path\":d.type==\"path\"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):\"M0,0\"}),d._.dirty=1,d._.arrows&&(\"startString\"in d._.arrows&&w(d,d._.arrows.startString),\"endString\"in d._.arrows&&w(d,d._.arrows.endString,1)));break;case\"width\":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o=\"x\",p=k.x;else break;case\"x\":k.fx&&(p=-k.x-(k.width||0));case\"rx\":if(o==\"rx\"&&d.type==\"rect\")break;case\"cx\":i.setAttribute(o,p),d.pattern&&v(d),d._.dirty=1;break;case\"height\":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o=\"y\",p=k.y;else break;case\"y\":k.fy&&(p=-k.y-(k.height||0));case\"ry\":if(o==\"ry\"&&d.type==\"rect\")break;case\"cy\":i.setAttribute(o,p),d.pattern&&v(d),d._.dirty=1;break;case\"r\":d.type==\"rect\"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case\"src\":d.type==\"image\"&&i.setAttributeNS(n,\"href\",p);break;case\"stroke-width\":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k[\"stroke-dasharray\"]&&y(d,k[\"stroke-dasharray\"],f),d._.arrows&&(\"startString\"in d._.arrows&&w(d,d._.arrows.startString),\"endString\"in d._.arrows&&w(d,d._.arrows.endString,1));break;case\"stroke-dasharray\":y(d,p,f);break;case\"fill\":var C=c(p).match(a._ISURL);if(C){x=q(\"pattern\");var D=q(\"image\");x.id=a.createUUID(),q(x,{x:0,y:0,patternUnits:\"userSpaceOnUse\",height:1,width:1}),q(D,{x:0,y:0,\"xlink:href\":C[1]}),x.appendChild(D),function(b){a._preload(C[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(D,{width:a,height:c}),d.paper.safari()})}(x),d.paper.defs.appendChild(x),i.style.fill=\"url(#\"+x.id+\")\",q(i,{fill:\"url(#\"+x.id+\")\"}),d.pattern=x,d.pattern&&v(d);break}var E=a.getRGB(p);if(!E.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,\"undefined\")&&a.is(f.opacity,\"undefined\")&&q(i,{opacity:k.opacity}),!a.is(k[\"fill-opacity\"],\"undefined\")&&a.is(f[\"fill-opacity\"],\"undefined\")&&q(i,{\"fill-opacity\":k[\"fill-opacity\"]});else if((d.type==\"circle\"||d.type==\"ellipse\"||c(p).charAt()!=\"r\")&&u(d,p)){if(\"opacity\"in k||\"fill-opacity\"in k){var F=a._g.doc.getElementById(i.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g,l));if(F){var G=F.getElementsByTagName(\"stop\");q(G[G.length-1],{\"stop-opacity\":(\"opacity\"in k?k.opacity:1)*(\"fill-opacity\"in k?k[\"fill-opacity\"]:1)})}}k.gradient=p,k.fill=\"none\";break}E[b](\"opacity\")&&q(i,{\"fill-opacity\":E.opacity>1?E.opacity/100:E.opacity});case\"stroke\":E=a.getRGB(p),i.setAttribute(o,E.hex),o==\"stroke\"&&E[b](\"opacity\")&&q(i,{\"stroke-opacity\":E.opacity>1?E.opacity/100:E.opacity}),o==\"stroke\"&&d._.arrows&&(\"startString\"in d._.arrows&&w(d,d._.arrows.startString),\"endString\"in d._.arrows&&w(d,d._.arrows.endString,1));break;case\"gradient\":(d.type==\"circle\"||d.type==\"ellipse\"||c(p).charAt()!=\"r\")&&u(d,p);break;case\"opacity\":k.gradient&&!k[b](\"stroke-opacity\")&&q(i,{\"stroke-opacity\":p>1?p/100:p});case\"fill-opacity\":if(k.gradient){F=a._g.doc.getElementById(i.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g,l)),F&&(G=F.getElementsByTagName(\"stop\"),q(G[G.length-1],{\"stop-opacity\":p}));break};default:o==\"font-size\"&&(p=e(p,10)+\"px\");var H=o.replace(/(\\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[H]=p,d._.dirty=1,i.setAttribute(o,p)}}B(d,f),i.style.visibility=m},A=1.2,B=function(d,f){if(d.type==\"text\"&&!!(f[b](\"text\")||f[b](\"font\")||f[b](\"font-size\")||f[b](\"x\")||f[b](\"y\"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue(\"font-size\"),10):10;if(f[b](\"text\")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split(\"\\n\"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q(\"tspan\"),n&&q(m,{dy:i*A,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName(\"tspan\");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*A,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,\"finite\")&&q(k[0],{dy:r})}},C=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},D=a.el;C.prototype=D,D.constructor=C,a._engine.path=function(a,b){var c=q(\"path\");b.canvas&&b.canvas.appendChild(c);var d=new C(c,b);d.type=\"path\",z(d,{fill:\"none\",stroke:\"#000\",path:a});return d},D.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([[\"r\",a,b,e]]));return this},D.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([[\"s\",a,b,e,f]]));return this},D.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([[\"t\",a,b]]));return this},D.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&v(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b](\"stroke-width\")?this.attrs[\"stroke-width\"]:1;this.attr({\"stroke-width\":e})}return this},D.hide=function(){!this.removed&&this.paper.safari(this.node.style.display=\"none\");return this},D.show=function(){!this.removed&&this.paper.safari(this.node.style.display=\"\");return this},D.remove=function(){if(!this.removed){this.paper.__set__&&this.paper.__set__.exclude(this),k.unbind(\"*.*.\"+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node);for(var b in this)delete this[b];this.removed=!0}},D._getBBox=function(){if(this.node.style.display==\"none\"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},D.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill==\"none\"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,\"string\")){if(c==\"fill\"&&this.attrs.fill==\"none\"&&this.attrs.gradient)return this.attrs.gradient;if(c==\"transform\")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],\"function\")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,\"array\")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,\"object\")&&(m=c);for(var n in m)k(\"attr.\"+n+\".\"+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],\"function\")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}z(this,m);return this},D.toFront=function(){if(this.removed)return this;this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},D.toBack=function(){if(this.removed)return this;if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var b=this.paper}return this},D.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},D.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},D.blur=function(b){var c=this;if(+b!==0){var d=q(\"filter\"),e=q(\"feGaussianBlur\");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:\"url(#\"+d.id+\")\"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute(\"filter\")},a._engine.circle=function(a,b,c,d){var e=q(\"circle\");a.canvas&&a.canvas.appendChild(e);var f=new C(e,a);f.attrs={cx:b,cy:c,r:d,fill:\"none\",stroke:\"#000\"},f.type=\"circle\",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q(\"rect\");a.canvas&&a.canvas.appendChild(g);var h=new C(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:\"none\",stroke:\"#000\"},h.type=\"rect\",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q(\"ellipse\");a.canvas&&a.canvas.appendChild(f);var g=new C(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:\"none\",stroke:\"#000\"},g.type=\"ellipse\",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q(\"image\");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:\"none\"}),g.setAttributeNS(n,\"href\",b),a.canvas&&a.canvas.appendChild(g);var h=new C(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type=\"image\";return h},a._engine.text=function(b,c,d,e){var f=q(\"text\");b.canvas&&b.canvas.appendChild(f);var g=new C(f,b);g.attrs={x:c,y:d,\"text-anchor\":\"middle\",text:e,font:a._availableAttrs.font,stroke:\"none\",fill:\"#000\"},g.type=\"text\",z(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute(\"width\",this.width),this.canvas.setAttribute(\"height\",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error(\"SVG container not found.\");var h=q(\"svg\"),i=\"overflow:hidden;\",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:\"http://www.w3.org/2000/svg\"}),c==1?(h.style.cssText=i+\"position:absolute;left:\"+d+\"px;top:\"+e+\"px\",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+\"position:relative\",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k(\"setViewBox\",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?\"meet\":\"xMinYMin\",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j=\"0 0 \"+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l=\"stroke-width\"in h.attrs?h.attrs[\"stroke-width\"]:1,h.attr({\"stroke-width\":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c=a.getScreenCTM()||a.createSVGMatrix(),d=-c.e%1,e=-c.f%1;if(d||e)d&&(this._left=(this._left+d)%1,b.left=this._left+\"px\"),e&&(this._top=(this._top+e)%1,b.top=this._top+\"px\")},a.prototype.clear=function(){a.eve(\"clear\",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q(\"desc\")).appendChild(a._g.doc.createTextNode(\"Created with Raphaël \"+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q(\"defs\"))},a.prototype.remove=function(){k(\"remove\",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=removed(a)};var E=a.st;for(var F in D)D[b](F)&&!E[b](F)&&(E[F]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(F))}(window.Raphael),window.Raphael.vml&&function(a){var b=\"hasOwnProperty\",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j=\"fill\",k=/[, ]+/,l=a.eve,m=\" progid:DXImageTransform.Microsoft\",n=\" \",o=\"\",p={M:\"m\",L:\"l\",C:\"c\",Z:\"x\",m:\"t\",l:\"r\",c:\"v\",z:\"x\"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\\S+Blur\\([^\\)]+\\)/g,s=/-?[^,\\s-]+/g,t=\"position:absolute;left:0;top:0;width:1px;height:1px\",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()==\"m\",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b==\"m\"?\"l\":\"L\"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j==\"z\"&&(j=\"x\");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?\",\":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p=\"\",q,r=u/b,s=u/c;m.visibility=\"hidden\";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+=\"x\"),c<0&&(p+=\" y\")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility=\"visible\"}};a.toString=function(){return\"Your browser doesn’t support SVG. Falling down to VML.\\nYou are running Raphaël \"+this.version},addArrow=function(a,b,d){var e=c(b).toLowerCase().split(\"-\"),f=d?\"end\":\"start\",g=e.length,h=\"classic\",i=\"medium\",j=\"medium\";while(g--)switch(e[g]){case\"block\":case\"classic\":case\"oval\":case\"diamond\":case\"open\":case\"none\":h=e[g];break;case\"wide\":case\"narrow\":j=e[g];break;case\"long\":case\"short\":i=e[g]}var k=a.node.getElementsByTagName(\"stroke\")[0];k[f+\"arrow\"]=h,k[f+\"arrowlength\"]=i,k[f+\"arrowwidth\"]=j},setFillAndStroke=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),\"blur\"in i&&e.blur(i.blur);if(i.path&&e.type==\"path\"||r)l.path=x(~c(m.path).toLowerCase().indexOf(\"r\")?a._pathToAbsolute(m.path):m.path),e.type==\"image\"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));\"transform\"in i&&e.transform(i.transform);if(s){var A=+m.cx,C=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format(\"ar{0},{1},{2},{3},{4},{1},{4},{1}x\",f((A-D)*u),f((C-E)*u),f((A+D)*u),f((C+E)*u),f(A*u))}if(\"clip-rect\"in i){var F=c(i[\"clip-rect\"]).split(k);if(F.length==4){F[2]=+F[2]+ +F[0],F[3]=+F[3]+ +F[1];var G=l.clipRect||a._g.doc.createElement(\"div\"),H=G.style;H.clip=a.format(\"rect({1}px {2}px {3}px {0}px)\",F),l.clipRect||(H.position=\"absolute\",H.top=0,H.left=0,H.width=e.paper.width+\"px\",H.height=e.paper.height+\"px\",l.parentNode.insertBefore(G,l),G.appendChild(l),l.clipRect=G)}i[\"clip-rect\"]||l.clipRect&&(l.clipRect.style.clip=o)}if(e.textpath){var I=e.textpath.style;i.font&&(I.font=i.font),i[\"font-family\"]&&(I.fontFamily='\"'+i[\"font-family\"].split(\",\")[0].replace(/^['\"]+|['\"]+$/g,o)+'\"'),i[\"font-size\"]&&(I.fontSize=i[\"font-size\"]),i[\"font-weight\"]&&(I.fontWeight=i[\"font-weight\"]),i[\"font-style\"]&&(I.fontStyle=i[\"font-style\"])}\"arrow-start\"in i&&addArrow(t,i[\"arrow-start\"]),\"arrow-end\"in i&&addArrow(t,i[\"arrow-end\"],1);if(i.opacity!=null||i[\"stroke-width\"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i[\"stroke-width\"]!=null||i[\"stroke-opacity\"]!=null||i[\"fill-opacity\"]!=null||i[\"stroke-dasharray\"]!=null||i[\"stroke-miterlimit\"]!=null||i[\"stroke-linejoin\"]!=null||i[\"stroke-linecap\"]!=null){var J=l.getElementsByTagName(j),K=!1;J=J&&J[0],!J&&(K=J=B(j)),e.type==\"image\"&&i.src&&(J.src=i.src),i.fill&&(J.on=!0);if(J.on==null||i.fill==\"none\"||i.fill===null)J.on=!1;if(J.on&&i.fill){var L=c(i.fill).match(a._ISURL);if(L){J.parentNode==l&&l.removeChild(J),J.rotate=!0,J.src=L[1],J.type=\"tile\";var M=e.getBBox(1);J.position=M.x+n+M.y,e._.fillpos=[M.x,M.y],a._preload(L[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else J.color=a.getRGB(i.fill).hex,J.src=o,J.type=\"solid\",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!=\"r\")&&addGradientFill(t,i.fill,J)&&(m.fill=\"none\",m.gradient=i.fill,J.rotate=!1)}if(\"fill-opacity\"in i||\"opacity\"in i){var N=((+m[\"fill-opacity\"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);N=h(g(N,0),1),J.opacity=N,J.src&&(J.color=\"none\")}l.appendChild(J);var O=l.getElementsByTagName(\"stroke\")&&l.getElementsByTagName(\"stroke\")[0],P=!1;!O&&(P=O=B(\"stroke\"));if(i.stroke&&i.stroke!=\"none\"||i[\"stroke-width\"]||i[\"stroke-opacity\"]!=null||i[\"stroke-dasharray\"]||i[\"stroke-miterlimit\"]||i[\"stroke-linejoin\"]||i[\"stroke-linecap\"])O.on=!0;(i.stroke==\"none\"||i.stroke===null||O.on==null||i.stroke==0||i[\"stroke-width\"]==0)&&(O.on=!1);var Q=a.getRGB(i.stroke);O.on&&i.stroke&&(O.color=Q.hex),N=((+m[\"stroke-opacity\"]+1||2)-1)*((+m.opacity+1||2)-1)*((+Q.o+1||2)-1);var T=(d(i[\"stroke-width\"])||1)*.75;N=h(g(N,0),1),i[\"stroke-width\"]==null&&(T=m[\"stroke-width\"]),i[\"stroke-width\"]&&(O.weight=T),T&&T<1&&(N*=T)&&(O.weight=1),O.opacity=N,i[\"stroke-linejoin\"]&&(O.joinstyle=i[\"stroke-linejoin\"]||\"miter\"),O.miterlimit=i[\"stroke-miterlimit\"]||8,i[\"stroke-linecap\"]&&(O.endcap=i[\"stroke-linecap\"]==\"butt\"?\"flat\":i[\"stroke-linecap\"]==\"square\"?\"square\":\"round\");if(i[\"stroke-dasharray\"]){var U={\"-\":\"shortdash\",\".\":\"shortdot\",\"-.\":\"shortdashdot\",\"-..\":\"shortdashdotdot\",\". \":\"dot\",\"- \":\"dash\",\"--\":\"longdash\",\"- .\":\"dashdot\",\"--.\":\"longdashdot\",\"--..\":\"longdashdotdot\"};O.dashstyle=U[b](i[\"stroke-dasharray\"])?U[i[\"stroke-dasharray\"]]:o}P&&l.appendChild(O)}if(t.type==\"text\"){t.paper.canvas.style.display=o;var V=t.paper.span,W=100,X=m.font&&m.font.match(/\\d+(?:\\.\\d*)?(?=px)/);p=V.style,m.font&&(p.font=m.font),m[\"font-family\"]&&(p.fontFamily=m[\"font-family\"]),m[\"font-weight\"]&&(p.fontWeight=m[\"font-weight\"]),m[\"font-style\"]&&(p.fontStyle=m[\"font-style\"]),X=d(X?X[0]:m[\"font-size\"]),p.fontSize=X*W+\"px\",t.textpath.string&&(V.innerHTML=c(t.textpath.string).replace(/</g,\"&#60;\").replace(/&/g,\"&#38;\").replace(/\\n/g,\"<br>\"));var Y=V.getBoundingClientRect();t.W=m.w=(Y.right-Y.left)/W,t.H=m.h=(Y.bottom-Y.top)/W,t.X=m.x,t.Y=m.y+t.H/2,(\"x\"in i||\"y\"in i)&&(t.path.v=a.format(\"m{0},{1}l{2},{1}\",f(m.x*u),f(m.y*u),f(m.x*u)+1));var Z=[\"x\",\"y\",\"text\",\"font\",\"font-family\",\"font-weight\",\"font-style\",\"font-size\"];for(var $=0,_=Z.length;$<_;$++)if(Z[$]in i){t._.dirty=1;break}switch(m[\"text-anchor\"]){case\"start\":t.textpath.style[\"v-text-align\"]=\"left\",t.bbx=t.W/2;break;case\"end\":t.textpath.style[\"v-text-align\"]=\"right\",t.bbx=-t.W/2;break;default:t.textpath.style[\"v-text-align\"]=\"center\",t.bbx=0}t.textpath.style[\"v-text-kern\"]=!0}},addGradientFill=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l=\"linear\",m=\".5 .5\";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l=\"radial\",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\\s*\\-\\s*/);if(l==\"linear\"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method=\"none\",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():\"0% \"+g.color,l==\"radial\"?(g.type=\"gradientTitle\",g.focus=\"100%\",g.focussize=\"0 0\",g.focusposition=m,g.angle=0):(g.type=\"gradient\",g.angle=(270-p)%360),b.appendChild(g)}return 1},Element=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null};var A=a.el;Element.prototype=A,A.constructor=Element,A.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?\"s\"+[d.scale,d.scale]+\"-1-1t\"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\\.{3}|\\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf(\"-\"),l=!c(this.attrs.fill).indexOf(\"url(\");g.translate(-0.5,-0.5);if(l||k||this.type==\"image\"){h.matrix=\"1 0 0 1\",h.offset=\"0 0\",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},A.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([[\"r\",a,b,e]]));return this}},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([[\"t\",a,b]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([[\"s\",a,b,e,f]])),this._.dirtyT=1;return this},A.hide=function(){!this.removed&&(this.node.style.display=\"none\");return this},A.show=function(){!this.removed&&(this.node.style.display=o);return this},A._getBBox=function(){if(this.removed)return{};return this.type==\"text\"?{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}:pathDimensions(this.attrs.path)},A.remove=function(){if(!this.removed){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind(\"*.*.\"+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)delete this[b];this.removed=!0}},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill==\"none\"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,\"string\")){if(c==j&&this.attrs.fill==\"none\"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],\"function\")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,\"array\")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,\"object\")&&(n=c);for(var o in n)l(\"attr.\"+o+\".\"+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],\"function\")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type==\"text\"&&(this.textpath.string=n.text),setFillAndStroke(this,n)}return this},A.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},A.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},A.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+\".Blur(pixelradius=\"+(+b||1.5)+\")\",c.margin=a.format(\"-{0}px 0 0 -{0}px\",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=B(\"shape\");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new Element(c,b),e={fill:\"none\",stroke:\"#000\"};a&&(e.path=a),d.type=\"path\",d.path=[],d.Path=o,setFillAndStroke(d,e),b.canvas.appendChild(c);var f=B(\"skew\");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type=\"rect\";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type=\"ellipse\",setFillAndStroke(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type=\"circle\",setFillAndStroke(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:\"none\"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type=\"image\",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type=\"tile\",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=B(\"shape\"),i=B(\"path\"),j=B(\"textpath\");d=d||0,e=e||0,g=g||\"\",i.v=a.format(\"m{0},{1}l{2},{1}\",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin=\"0 0\";var k=new Element(h,b),l={fill:\"#000\",stroke:\"none\",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type=\"text\",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,setFillAndStroke(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=B(\"skew\");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(a,b){var c=this.canvas.style;this.width=a,this.height=b,a==+a&&(a+=\"px\"),b==+b&&(b+=\"px\"),c.width=a,c.height=b,c.clip=\"rect(0 \"+a+\" \"+b+\" 0)\",this._viewBox&&setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve(\"setViewBox\",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform(\"...\")});return this};var B,C=function(a){var b=a.document;b.createStyleSheet().addRule(\".rvml\",\"behavior:url(#default#VML)\");try{!b.namespaces.rvml&&b.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\"),B=function(a){return b.createElement(\"<rvml:\"+a+' class=\"rvml\">')}}catch(c){B=function(a){return b.createElement(\"<\"+a+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}};C(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error(\"VML container not found.\");var i=new a._Paper,j=i.canvas=a._g.doc.createElement(\"div\"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+=\"px\"),d==+d&&(d+=\"px\"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin=\"0 0\",i.span=a._g.doc.createElement(\"span\"),i.span.style.cssText=\"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\",j.appendChild(i.span),k.cssText=a.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+\"px\",k.top=h+\"px\",k.position=\"absolute\"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve(\"clear\",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement(\"span\"),this.span.style.cssText=\"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve(\"remove\",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=removed(b);return!0};var D=a.st;for(var E in A)A[b](E)&&!D[b](E)&&(D[E]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(E))}(window.Raphael)"
  },
  {
    "path": "src/main/webapp/jslib/chart/raphael.js",
    "content": "// ┌─────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël 2.0.1 - JavaScript Vector Library                           │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\\\\n// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\\\\n// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\\\\n// └─────────────────────────────────────────────────────────────────────┘ \\\\\n\n// ┌──────────────────────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Eve 0.4.0 - JavaScript Events Library                                                │ \\\\\n// ├──────────────────────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://dmitry.baranovskiy.com/)          │ \\\\\n// │ Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. │ \\\\\n// └──────────────────────────────────────────────────────────────────────────────────────┘ \\\\\n\n(function (glob) {\n    var version = \"0.4.0\",\n        has = \"hasOwnProperty\",\n        separator = /[\\.\\/]/,\n        wildcard = \"*\",\n        fun = function () {},\n        numsort = function (a, b) {\n            return a - b;\n        },\n        current_event,\n        stop,\n        events = {n: {}},\n    \n        eve = function (name, scope) {\n            var e = events,\n                oldstop = stop,\n                args = Array.prototype.slice.call(arguments, 2),\n                listeners = eve.listeners(name),\n                z = 0,\n                f = false,\n                l,\n                indexed = [],\n                queue = {},\n                out = [],\n                errors = [];\n            current_event = name;\n            stop = 0;\n            for (var i = 0, ii = listeners.length; i < ii; i++) if (\"zIndex\" in listeners[i]) {\n                indexed.push(listeners[i].zIndex);\n                if (listeners[i].zIndex < 0) {\n                    queue[listeners[i].zIndex] = listeners[i];\n                }\n            }\n            indexed.sort(numsort);\n            while (indexed[z] < 0) {\n                l = queue[indexed[z++]];\n                out.push(l.apply(scope, args));\n                if (stop) {\n                    stop = oldstop;\n                    return out;\n                }\n            }\n            for (i = 0; i < ii; i++) {\n                l = listeners[i];\n                if (\"zIndex\" in l) {\n                    if (l.zIndex == indexed[z]) {\n                        out.push(l.apply(scope, args));\n                        if (stop) {\n                            stop = oldstop;\n                            return out;\n                        }\n                        do {\n                            z++;\n                            l = queue[indexed[z]];\n                            l && out.push(l.apply(scope, args));\n                            if (stop) {\n                                stop = oldstop;\n                                return out;\n                            }\n                        } while (l)\n                    } else {\n                        queue[l.zIndex] = l;\n                    }\n                } else {\n                    out.push(l.apply(scope, args));\n                    if (stop) {\n                        stop = oldstop;\n                        return out;\n                    }\n                }\n            }\n            stop = oldstop;\n            return out.length ? out : null;\n        };\n    \n    eve.listeners = function (name) {\n        var names = name.split(separator),\n            e = events,\n            item,\n            items,\n            k,\n            i,\n            ii,\n            j,\n            jj,\n            nes,\n            es = [e],\n            out = [];\n        for (i = 0, ii = names.length; i < ii; i++) {\n            nes = [];\n            for (j = 0, jj = es.length; j < jj; j++) {\n                e = es[j].n;\n                items = [e[names[i]], e[wildcard]];\n                k = 2;\n                while (k--) {\n                    item = items[k];\n                    if (item) {\n                        nes.push(item);\n                        out = out.concat(item.f || []);\n                    }\n                }\n            }\n            es = nes;\n        }\n        return out;\n    };\n    \n    \n    eve.on = function (name, f) {\n        var names = name.split(separator),\n            e = events;\n        for (var i = 0, ii = names.length; i < ii; i++) {\n            e = e.n;\n            !e[names[i]] && (e[names[i]] = {n: {}});\n            e = e[names[i]];\n        }\n        e.f = e.f || [];\n        for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {\n            return fun;\n        }\n        e.f.push(f);\n        return function (zIndex) {\n            if (+zIndex == +zIndex) {\n                f.zIndex = +zIndex;\n            }\n        };\n    };\n    \n    eve.stop = function () {\n        stop = 1;\n    };\n    \n    eve.nt = function (subname) {\n        if (subname) {\n            return new RegExp(\"(?:\\\\.|\\\\/|^)\" + subname + \"(?:\\\\.|\\\\/|$)\").test(current_event);\n        }\n        return current_event;\n    };\n    \n    eve.unbind = function (name, f) {\n        var names = name.split(separator),\n            e,\n            key,\n            splice,\n            i, ii, j, jj,\n            cur = [events];\n        for (i = 0, ii = names.length; i < ii; i++) {\n            for (j = 0; j < cur.length; j += splice.length - 2) {\n                splice = [j, 1];\n                e = cur[j].n;\n                if (names[i] != wildcard) {\n                    if (e[names[i]]) {\n                        splice.push(e[names[i]]);\n                    }\n                } else {\n                    for (key in e) if (e[has](key)) {\n                        splice.push(e[key]);\n                    }\n                }\n                cur.splice.apply(cur, splice);\n            }\n        }\n        for (i = 0, ii = cur.length; i < ii; i++) {\n            e = cur[i];\n            while (e.n) {\n                if (f) {\n                    if (e.f) {\n                        for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {\n                            e.f.splice(j, 1);\n                            break;\n                        }\n                        !e.f.length && delete e.f;\n                    }\n                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n                        var funcs = e.n[key].f;\n                        for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {\n                            funcs.splice(j, 1);\n                            break;\n                        }\n                        !funcs.length && delete e.n[key].f;\n                    }\n                } else {\n                    delete e.f;\n                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n                        delete e.n[key].f;\n                    }\n                }\n                e = e.n;\n            }\n        }\n    };\n    \n    eve.once = function (name, f) {\n        var f2 = function () {\n            f.apply(this, arguments);\n            eve.unbind(name, f2);\n        };\n        return eve.on(name, f2);\n    };\n    \n    eve.version = version;\n    eve.toString = function () {\n        return \"You are running Eve \" + version;\n    };\n    (typeof module != \"undefined\" && module.exports) ? (module.exports = eve) : (glob.eve = eve);\n})(this);\n\n// ┌─────────────────────────────────────────────────────────────────────┐ \\\\\n// │ \"Raphaël 2.0.1\" - JavaScript Vector Library                         │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\\\\n// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\\\\n// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\\\\n// └─────────────────────────────────────────────────────────────────────┘ \\\\\n(function () {\n    \n    function R(first) {\n        if (R.is(first, \"function\")) {\n            return loaded ? first() : eve.on(\"DOMload\", first);\n        } else if (R.is(first, array)) {\n            return R._engine.create[apply](R, first.splice(0, 3 + R.is(first[0], nu))).add(first);\n        } else {\n            var args = Array.prototype.slice.call(arguments, 0);\n            if (R.is(args[args.length - 1], \"function\")) {\n                var f = args.pop();\n                return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on(\"DOMload\", function () {\n                    f.call(R._engine.create[apply](R, args));\n                });\n            } else {\n                return R._engine.create[apply](R, arguments);\n            }\n        }\n    }\n    R.version = \"2.0.1\";\n    R.eve = eve;\n    var loaded,\n        separator = /[, ]+/,\n        elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},\n        formatrg = /\\{(\\d+)\\}/g,\n        proto = \"prototype\",\n        has = \"hasOwnProperty\",\n        g = {\n            doc: document,\n            win: window\n        },\n        oldRaphael = {\n            was: Object.prototype[has].call(g.win, \"Raphael\"),\n            is: g.win.Raphael\n        },\n        Paper = function () {\n            \n            \n            this.ca = this.customAttributes = {};\n        },\n        paperproto,\n        appendChild = \"appendChild\",\n        apply = \"apply\",\n        concat = \"concat\",\n        supportsTouch = \"createTouch\" in g.doc,\n        E = \"\",\n        S = \" \",\n        Str = String,\n        split = \"split\",\n        events = \"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\"[split](S),\n        touchMap = {\n            mousedown: \"touchstart\",\n            mousemove: \"touchmove\",\n            mouseup: \"touchend\"\n        },\n        lowerCase = Str.prototype.toLowerCase,\n        math = Math,\n        mmax = math.max,\n        mmin = math.min,\n        abs = math.abs,\n        pow = math.pow,\n        PI = math.PI,\n        nu = \"number\",\n        string = \"string\",\n        array = \"array\",\n        toString = \"toString\",\n        fillString = \"fill\",\n        objectToString = Object.prototype.toString,\n        paper = {},\n        push = \"push\",\n        ISURL = R._ISURL = /^url\\(['\"]?([^\\)]+?)['\"]?\\)$/i,\n        colourRegExp = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i,\n        isnan = {\"NaN\": 1, \"Infinity\": 1, \"-Infinity\": 1},\n        bezierrg = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n        round = math.round,\n        setAttribute = \"setAttribute\",\n        toFloat = parseFloat,\n        toInt = parseInt,\n        upperCase = Str.prototype.toUpperCase,\n        availableAttrs = R._availableAttrs = {\n            \"arrow-end\": \"none\",\n            \"arrow-start\": \"none\",\n            blur: 0,\n            \"clip-rect\": \"0 0 1e9 1e9\",\n            cursor: \"default\",\n            cx: 0,\n            cy: 0,\n            fill: \"#fff\",\n            \"fill-opacity\": 1,\n            font: '10px \"Arial\"',\n            \"font-family\": '\"Arial\"',\n            \"font-size\": \"10\",\n            \"font-style\": \"normal\",\n            \"font-weight\": 400,\n            gradient: 0,\n            height: 0,\n            href: \"http://raphaeljs.com/\",\n            \"letter-spacing\": 0,\n            opacity: 1,\n            path: \"M0,0\",\n            r: 0,\n            rx: 0,\n            ry: 0,\n            src: \"\",\n            stroke: \"#000\",\n            \"stroke-dasharray\": \"\",\n            \"stroke-linecap\": \"butt\",\n            \"stroke-linejoin\": \"butt\",\n            \"stroke-miterlimit\": 0,\n            \"stroke-opacity\": 1,\n            \"stroke-width\": 1,\n            target: \"_blank\",\n            \"text-anchor\": \"middle\",\n            title: \"Raphael\",\n            transform: \"\",\n            width: 0,\n            x: 0,\n            y: 0\n        },\n        availableAnimAttrs = R._availableAnimAttrs = {\n            blur: nu,\n            \"clip-rect\": \"csv\",\n            cx: nu,\n            cy: nu,\n            fill: \"colour\",\n            \"fill-opacity\": nu,\n            \"font-size\": nu,\n            height: nu,\n            opacity: nu,\n            path: \"path\",\n            r: nu,\n            rx: nu,\n            ry: nu,\n            stroke: \"colour\",\n            \"stroke-opacity\": nu,\n            \"stroke-width\": nu,\n            transform: \"transform\",\n            width: nu,\n            x: nu,\n            y: nu\n        },\n        commaSpaces = /\\s*,\\s*/,\n        hsrg = {hs: 1, rg: 1},\n        p2s = /,?([achlmqrstvxz]),?/gi,\n        pathCommand = /([achlmrqstvz])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?\\s*,?\\s*)+)/ig,\n        tCommand = /([rstm])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?\\s*,?\\s*)+)/ig,\n        pathValues = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)\\s*,?\\s*/ig,\n        radial_gradient = R._radial_gradient = /^r(?:\\(([^,]+?)\\s*,\\s*([^\\)]+?)\\))?/,\n        eldata = {},\n        sortByKey = function (a, b) {\n            return a.key - b.key;\n        },\n        sortByNumber = function (a, b) {\n            return toFloat(a) - toFloat(b);\n        },\n        fun = function () {},\n        pipe = function (x) {\n            return x;\n        },\n        rectPath = R._rectPath = function (x, y, w, h, r) {\n            if (r) {\n                return [[\"M\", x + r, y], [\"l\", w - r * 2, 0], [\"a\", r, r, 0, 0, 1, r, r], [\"l\", 0, h - r * 2], [\"a\", r, r, 0, 0, 1, -r, r], [\"l\", r * 2 - w, 0], [\"a\", r, r, 0, 0, 1, -r, -r], [\"l\", 0, r * 2 - h], [\"a\", r, r, 0, 0, 1, r, -r], [\"z\"]];\n            }\n            return [[\"M\", x, y], [\"l\", w, 0], [\"l\", 0, h], [\"l\", -w, 0], [\"z\"]];\n        },\n        ellipsePath = function (x, y, rx, ry) {\n            if (ry == null) {\n                ry = rx;\n            }\n            return [[\"M\", x, y], [\"m\", 0, -ry], [\"a\", rx, ry, 0, 1, 1, 0, 2 * ry], [\"a\", rx, ry, 0, 1, 1, 0, -2 * ry], [\"z\"]];\n        },\n        getPath = R._getPath = {\n            path: function (el) {\n                return el.attr(\"path\");\n            },\n            circle: function (el) {\n                var a = el.attrs;\n                return ellipsePath(a.cx, a.cy, a.r);\n            },\n            ellipse: function (el) {\n                var a = el.attrs;\n                return ellipsePath(a.cx, a.cy, a.rx, a.ry);\n            },\n            rect: function (el) {\n                var a = el.attrs;\n                return rectPath(a.x, a.y, a.width, a.height, a.r);\n            },\n            image: function (el) {\n                var a = el.attrs;\n                return rectPath(a.x, a.y, a.width, a.height);\n            },\n            text: function (el) {\n                var bbox = el._getBBox();\n                return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n            }\n        },\n        mapPath = R.mapPath = function (path, matrix) {\n            if (!matrix) {\n                return path;\n            }\n            var x, y, i, j, ii, jj, pathi;\n            path = path2curve(path);\n            for (i = 0, ii = path.length; i < ii; i++) {\n                pathi = path[i];\n                for (j = 1, jj = pathi.length; j < jj; j += 2) {\n                    x = matrix.x(pathi[j], pathi[j + 1]);\n                    y = matrix.y(pathi[j], pathi[j + 1]);\n                    pathi[j] = x;\n                    pathi[j + 1] = y;\n                }\n            }\n            return path;\n        };\n\n    R._g = g;\n    \n    R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") ? \"SVG\" : \"VML\");\n    if (R.type == \"VML\") {\n        var d = g.doc.createElement(\"div\"),\n            b;\n        d.innerHTML = '<v:shape adj=\"1\"/>';\n        b = d.firstChild;\n        b.style.behavior = \"url(#default#VML)\";\n        if (!(b && typeof b.adj == \"object\")) {\n            return (R.type = E);\n        }\n        d = null;\n    }\n    \n    \n    R.svg = !(R.vml = R.type == \"VML\");\n    R._Paper = Paper;\n    \n    R.fn = paperproto = Paper.prototype = R.prototype;\n    R._id = 0;\n    R._oid = 0;\n    \n    R.is = function (o, type) {\n        type = lowerCase.call(type);\n        if (type == \"finite\") {\n            return !isnan[has](+o);\n        }\n        if (type == \"array\") {\n            return o instanceof Array;\n        }\n        return  (type == \"null\" && o === null) ||\n                (type == typeof o && o !== null) ||\n                (type == \"object\" && o === Object(o)) ||\n                (type == \"array\" && Array.isArray && Array.isArray(o)) ||\n                objectToString.call(o).slice(8, -1).toLowerCase() == type;\n    };\n    \n    R.angle = function (x1, y1, x2, y2, x3, y3) {\n        if (x3 == null) {\n            var x = x1 - x2,\n                y = y1 - y2;\n            if (!x && !y) {\n                return 0;\n            }\n            return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;\n        } else {\n            return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);\n        }\n    };\n    \n    R.rad = function (deg) {\n        return deg % 360 * PI / 180;\n    };\n    \n    R.deg = function (rad) {\n        return rad * 180 / PI % 360;\n    };\n    \n    R.snapTo = function (values, value, tolerance) {\n        tolerance = R.is(tolerance, \"finite\") ? tolerance : 10;\n        if (R.is(values, array)) {\n            var i = values.length;\n            while (i--) if (abs(values[i] - value) <= tolerance) {\n                return values[i];\n            }\n        } else {\n            values = +values;\n            var rem = value % values;\n            if (rem < tolerance) {\n                return value - rem;\n            }\n            if (rem > values - tolerance) {\n                return value - rem + values;\n            }\n        }\n        return value;\n    };\n    \n    \n    var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {\n        return function () {\n            return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(uuidRegEx, uuidReplacer).toUpperCase();\n        };\n    })(/[xy]/g, function (c) {\n        var r = math.random() * 16 | 0,\n            v = c == \"x\" ? r : (r & 3 | 8);\n        return v.toString(16);\n    });\n\n    \n    R.setWindow = function (newwin) {\n        eve(\"setWindow\", R, g.win, newwin);\n        g.win = newwin;\n        g.doc = g.win.document;\n        if (R._engine.initWin) {\n            R._engine.initWin(g.win);\n        }\n    };\n    var toHex = function (color) {\n        if (R.vml) {\n            // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/\n            var trim = /^\\s+|\\s+$/g;\n            var bod;\n            try {\n                var docum = new ActiveXObject(\"htmlfile\");\n                docum.write(\"<body>\");\n                docum.close();\n                bod = docum.body;\n            } catch(e) {\n                bod = createPopup().document.body;\n            }\n            var range = bod.createTextRange();\n            toHex = cacher(function (color) {\n                try {\n                    bod.style.color = Str(color).replace(trim, E);\n                    var value = range.queryCommandValue(\"ForeColor\");\n                    value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);\n                    return \"#\" + (\"000000\" + value.toString(16)).slice(-6);\n                } catch(e) {\n                    return \"none\";\n                }\n            });\n        } else {\n            var i = g.doc.createElement(\"i\");\n            i.title = \"Rapha\\xebl Colour Picker\";\n            i.style.display = \"none\";\n            g.doc.body.appendChild(i);\n            toHex = cacher(function (color) {\n                i.style.color = color;\n                return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue(\"color\");\n            });\n        }\n        return toHex(color);\n    },\n    hsbtoString = function () {\n        return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n    },\n    hsltoString = function () {\n        return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n    },\n    rgbtoString = function () {\n        return this.hex;\n    },\n    prepareRGB = function (r, g, b) {\n        if (g == null && R.is(r, \"object\") && \"r\" in r && \"g\" in r && \"b\" in r) {\n            b = r.b;\n            g = r.g;\n            r = r.r;\n        }\n        if (g == null && R.is(r, string)) {\n            var clr = R.getRGB(r);\n            r = clr.r;\n            g = clr.g;\n            b = clr.b;\n        }\n        if (r > 1 || g > 1 || b > 1) {\n            r /= 255;\n            g /= 255;\n            b /= 255;\n        }\n        \n        return [r, g, b];\n    },\n    packageRGB = function (r, g, b, o) {\n        r *= 255;\n        g *= 255;\n        b *= 255;\n        var rgb = {\n            r: r,\n            g: g,\n            b: b,\n            hex: R.rgb(r, g, b),\n            toString: rgbtoString\n        };\n        R.is(o, \"finite\") && (rgb.opacity = o);\n        return rgb;\n    };\n    \n    \n    R.color = function (clr) {\n        var rgb;\n        if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"b\" in clr) {\n            rgb = R.hsb2rgb(clr);\n            clr.r = rgb.r;\n            clr.g = rgb.g;\n            clr.b = rgb.b;\n            clr.hex = rgb.hex;\n        } else if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"l\" in clr) {\n            rgb = R.hsl2rgb(clr);\n            clr.r = rgb.r;\n            clr.g = rgb.g;\n            clr.b = rgb.b;\n            clr.hex = rgb.hex;\n        } else {\n            if (R.is(clr, \"string\")) {\n                clr = R.getRGB(clr);\n            }\n            if (R.is(clr, \"object\") && \"r\" in clr && \"g\" in clr && \"b\" in clr) {\n                rgb = R.rgb2hsl(clr);\n                clr.h = rgb.h;\n                clr.s = rgb.s;\n                clr.l = rgb.l;\n                rgb = R.rgb2hsb(clr);\n                clr.v = rgb.b;\n            } else {\n                clr = {hex: \"none\"};\n                clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;\n            }\n        }\n        clr.toString = rgbtoString;\n        return clr;\n    };\n    \n    R.hsb2rgb = function (h, s, v, o) {\n        if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"b\" in h) {\n            v = h.b;\n            s = h.s;\n            h = h.h;\n            o = h.o;\n        }\n        h *= 360;\n        var R, G, B, X, C;\n        h = (h % 360) / 60;\n        C = v * s;\n        X = C * (1 - abs(h % 2 - 1));\n        R = G = B = v - C;\n\n        h = ~~h;\n        R += [C, X, 0, 0, X, C][h];\n        G += [X, C, C, X, 0, 0][h];\n        B += [0, 0, X, C, C, X][h];\n        return packageRGB(R, G, B, o);\n    };\n    \n    R.hsl2rgb = function (h, s, l, o) {\n        if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"l\" in h) {\n            l = h.l;\n            s = h.s;\n            h = h.h;\n        }\n        if (h > 1 || s > 1 || l > 1) {\n            h /= 360;\n            s /= 100;\n            l /= 100;\n        }\n        h *= 360;\n        var R, G, B, X, C;\n        h = (h % 360) / 60;\n        C = 2 * s * (l < .5 ? l : 1 - l);\n        X = C * (1 - abs(h % 2 - 1));\n        R = G = B = l - C / 2;\n\n        h = ~~h;\n        R += [C, X, 0, 0, X, C][h];\n        G += [X, C, C, X, 0, 0][h];\n        B += [0, 0, X, C, C, X][h];\n        return packageRGB(R, G, B, o);\n    };\n    \n    R.rgb2hsb = function (r, g, b) {\n        b = prepareRGB(r, g, b);\n        r = b[0];\n        g = b[1];\n        b = b[2];\n\n        var H, S, V, C;\n        V = mmax(r, g, b);\n        C = V - mmin(r, g, b);\n        H = (C == 0 ? null :\n             V == r ? (g - b) / C :\n             V == g ? (b - r) / C + 2 :\n                      (r - g) / C + 4\n            );\n        H = ((H + 360) % 6) * 60 / 360;\n        S = C == 0 ? 0 : C / V;\n        return {h: H, s: S, b: V, toString: hsbtoString};\n    };\n    \n    R.rgb2hsl = function (r, g, b) {\n        b = prepareRGB(r, g, b);\n        r = b[0];\n        g = b[1];\n        b = b[2];\n\n        var H, S, L, M, m, C;\n        M = mmax(r, g, b);\n        m = mmin(r, g, b);\n        C = M - m;\n        H = (C == 0 ? null :\n             M == r ? (g - b) / C :\n             M == g ? (b - r) / C + 2 :\n                      (r - g) / C + 4);\n        H = ((H + 360) % 6) * 60 / 360;\n        L = (M + m) / 2;\n        S = (C == 0 ? 0 :\n             L < .5 ? C / (2 * L) :\n                      C / (2 - 2 * L));\n        return {h: H, s: S, l: L, toString: hsltoString};\n    };\n    R._path2string = function () {\n        return this.join(\",\").replace(p2s, \"$1\");\n    };\n    function repush(array, item) {\n        for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {\n            return array.push(array.splice(i, 1)[0]);\n        }\n    }\n    function cacher(f, scope, postprocessor) {\n        function newf() {\n            var arg = Array.prototype.slice.call(arguments, 0),\n                args = arg.join(\"\\u2400\"),\n                cache = newf.cache = newf.cache || {},\n                count = newf.count = newf.count || [];\n            if (cache[has](args)) {\n                repush(count, args);\n                return postprocessor ? postprocessor(cache[args]) : cache[args];\n            }\n            count.length >= 1e3 && delete cache[count.shift()];\n            count.push(args);\n            cache[args] = f[apply](scope, arg);\n            return postprocessor ? postprocessor(cache[args]) : cache[args];\n        }\n        return newf;\n    }\n\n    var preload = R._preload = function (src, f) {\n        var img = g.doc.createElement(\"img\");\n        img.style.cssText = \"position:absolute;left:-9999em;top:-9999em\";\n        img.onload = function () {\n            f.call(this);\n            this.onload = null;\n            g.doc.body.removeChild(this);\n        };\n        img.onerror = function () {\n            g.doc.body.removeChild(this);\n        };\n        g.doc.body.appendChild(img);\n        img.src = src;\n    };\n    \n    function clrToString() {\n        return this.hex;\n    }\n\n    \n    R.getRGB = cacher(function (colour) {\n        if (!colour || !!((colour = Str(colour)).indexOf(\"-\") + 1)) {\n            return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n        }\n        if (colour == \"none\") {\n            return {r: -1, g: -1, b: -1, hex: \"none\", toString: clrToString};\n        }\n        !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == \"#\") && (colour = toHex(colour));\n        var res,\n            red,\n            green,\n            blue,\n            opacity,\n            t,\n            values,\n            rgb = colour.match(colourRegExp);\n        if (rgb) {\n            if (rgb[2]) {\n                blue = toInt(rgb[2].substring(5), 16);\n                green = toInt(rgb[2].substring(3, 5), 16);\n                red = toInt(rgb[2].substring(1, 3), 16);\n            }\n            if (rgb[3]) {\n                blue = toInt((t = rgb[3].charAt(3)) + t, 16);\n                green = toInt((t = rgb[3].charAt(2)) + t, 16);\n                red = toInt((t = rgb[3].charAt(1)) + t, 16);\n            }\n            if (rgb[4]) {\n                values = rgb[4][split](commaSpaces);\n                red = toFloat(values[0]);\n                values[0].slice(-1) == \"%\" && (red *= 2.55);\n                green = toFloat(values[1]);\n                values[1].slice(-1) == \"%\" && (green *= 2.55);\n                blue = toFloat(values[2]);\n                values[2].slice(-1) == \"%\" && (blue *= 2.55);\n                rgb[1].toLowerCase().slice(0, 4) == \"rgba\" && (opacity = toFloat(values[3]));\n                values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n            }\n            if (rgb[5]) {\n                values = rgb[5][split](commaSpaces);\n                red = toFloat(values[0]);\n                values[0].slice(-1) == \"%\" && (red *= 2.55);\n                green = toFloat(values[1]);\n                values[1].slice(-1) == \"%\" && (green *= 2.55);\n                blue = toFloat(values[2]);\n                values[2].slice(-1) == \"%\" && (blue *= 2.55);\n                (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n                rgb[1].toLowerCase().slice(0, 4) == \"hsba\" && (opacity = toFloat(values[3]));\n                values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n                return R.hsb2rgb(red, green, blue, opacity);\n            }\n            if (rgb[6]) {\n                values = rgb[6][split](commaSpaces);\n                red = toFloat(values[0]);\n                values[0].slice(-1) == \"%\" && (red *= 2.55);\n                green = toFloat(values[1]);\n                values[1].slice(-1) == \"%\" && (green *= 2.55);\n                blue = toFloat(values[2]);\n                values[2].slice(-1) == \"%\" && (blue *= 2.55);\n                (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n                rgb[1].toLowerCase().slice(0, 4) == \"hsla\" && (opacity = toFloat(values[3]));\n                values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n                return R.hsl2rgb(red, green, blue, opacity);\n            }\n            rgb = {r: red, g: green, b: blue, toString: clrToString};\n            rgb.hex = \"#\" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);\n            R.is(opacity, \"finite\") && (rgb.opacity = opacity);\n            return rgb;\n        }\n        return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n    }, R);\n    \n    R.hsb = cacher(function (h, s, b) {\n        return R.hsb2rgb(h, s, b).hex;\n    });\n    \n    R.hsl = cacher(function (h, s, l) {\n        return R.hsl2rgb(h, s, l).hex;\n    });\n    \n    R.rgb = cacher(function (r, g, b) {\n        return \"#\" + (16777216 | b | (g << 8) | (r << 16)).toString(16).slice(1);\n    });\n    \n    R.getColor = function (value) {\n        var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},\n            rgb = this.hsb2rgb(start.h, start.s, start.b);\n        start.h += .075;\n        if (start.h > 1) {\n            start.h = 0;\n            start.s -= .2;\n            start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});\n        }\n        return rgb.hex;\n    };\n    \n    R.getColor.reset = function () {\n        delete this.start;\n    };\n\n    // http://schepers.cc/getting-to-the-point\n    function catmullRom2bezier(crp) {\n        var d = [];\n        for (var i = 0, iLen = crp.length; iLen - 2 > i; i += 2) {\n            var p = [{x: +crp[i],     y: +crp[i + 1]},\n                     {x: +crp[i],     y: +crp[i + 1]},\n                     {x: +crp[i + 2], y: +crp[i + 3]},\n                     {x: +crp[i + 4], y: +crp[i + 5]}];\n            if (iLen - 4 == i) {\n                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};\n                p[3] = p[2];\n            } else if (i) {\n                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};\n            }\n            d.push([\"C\",\n                (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n                (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n                (p[1].x + 6 * p[2].x - p[3].x) / 6,\n                (p[1].y + 6*p[2].y - p[3].y) / 6,\n                p[2].x,\n                p[2].y\n            ]);\n        }\n\n        return d;\n    }\n    \n    R.parsePathString = cacher(function (pathString) {\n        if (!pathString) {\n            return null;\n        }\n        var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},\n            data = [];\n        if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption\n            data = pathClone(pathString);\n        }\n        if (!data.length) {\n            Str(pathString).replace(pathCommand, function (a, b, c) {\n                var params = [],\n                    name = b.toLowerCase();\n                c.replace(pathValues, function (a, b) {\n                    b && params.push(+b);\n                });\n                if (name == \"m\" && params.length > 2) {\n                    data.push([b][concat](params.splice(0, 2)));\n                    name = \"l\";\n                    b = b == \"m\" ? \"l\" : \"L\";\n                }\n                if (name == \"r\") {\n                    data.push([b][concat](params));\n                } else while (params.length >= paramCounts[name]) {\n                    data.push([b][concat](params.splice(0, paramCounts[name])));\n                    if (!paramCounts[name]) {\n                        break;\n                    }\n                }\n            });\n        }\n        data.toString = R._path2string;\n        return data;\n    });\n    \n    R.parseTransformString = cacher(function (TString) {\n        if (!TString) {\n            return null;\n        }\n        var paramCounts = {r: 3, s: 4, t: 2, m: 6},\n            data = [];\n        if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption\n            data = pathClone(TString);\n        }\n        if (!data.length) {\n            Str(TString).replace(tCommand, function (a, b, c) {\n                var params = [],\n                    name = lowerCase.call(b);\n                c.replace(pathValues, function (a, b) {\n                    b && params.push(+b);\n                });\n                data.push([b][concat](params));\n            });\n        }\n        data.toString = R._path2string;\n        return data;\n    });\n    \n    R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n        var t1 = 1 - t,\n            t13 = pow(t1, 3),\n            t12 = pow(t1, 2),\n            t2 = t * t,\n            t3 = t2 * t,\n            x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,\n            y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,\n            mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),\n            my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),\n            nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),\n            ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),\n            ax = t1 * p1x + t * c1x,\n            ay = t1 * p1y + t * c1y,\n            cx = t1 * c2x + t * p2x,\n            cy = t1 * c2y + t * p2y,\n            alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);\n        (mx > nx || my < ny) && (alpha += 180);\n        return {\n            x: x,\n            y: y,\n            m: {x: mx, y: my},\n            n: {x: nx, y: ny},\n            start: {x: ax, y: ay},\n            end: {x: cx, y: cy},\n            alpha: alpha\n        };\n    };\n    R._removedFactory = function (methodname) {\n        return function () {\n            throw new Error(\"Rapha\\xebl: you are calling to method \\u201c\" + methodname + \"\\u201d of removed object\");\n        };\n    };\n    var pathDimensions = cacher(function (path) {\n        if (!path) {\n            return {x: 0, y: 0, width: 0, height: 0};\n        }\n        path = path2curve(path);\n        var x = 0, \n            y = 0,\n            X = [],\n            Y = [],\n            p;\n        for (var i = 0, ii = path.length; i < ii; i++) {\n            p = path[i];\n            if (p[0] == \"M\") {\n                x = p[1];\n                y = p[2];\n                X.push(x);\n                Y.push(y);\n            } else {\n                var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n                X = X[concat](dim.min.x, dim.max.x);\n                Y = Y[concat](dim.min.y, dim.max.y);\n                x = p[5];\n                y = p[6];\n            }\n        }\n        var xmin = mmin[apply](0, X),\n            ymin = mmin[apply](0, Y);\n        return {\n            x: xmin,\n            y: ymin,\n            width: mmax[apply](0, X) - xmin,\n            height: mmax[apply](0, Y) - ymin\n        };\n    }, null, function (o) {\n        return {\n            x: o.x,\n            y: o.y,\n            width: o.width,\n            height: o.height\n        };\n    }),\n        pathClone = function (pathArray) {\n            var res = [];\n            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n                pathArray = R.parsePathString(pathArray);\n            }\n            for (var i = 0, ii = pathArray.length; i < ii; i++) {\n                res[i] = [];\n                for (var j = 0, jj = pathArray[i].length; j < jj; j++) {\n                    res[i][j] = pathArray[i][j];\n                }\n            }\n            res.toString = R._path2string;\n            return res;\n        },\n        pathToRelative = R._pathToRelative = cacher(function (pathArray) {\n            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n                pathArray = R.parsePathString(pathArray);\n            }\n            var res = [],\n                x = 0,\n                y = 0,\n                mx = 0,\n                my = 0,\n                start = 0;\n            if (pathArray[0][0] == \"M\") {\n                x = pathArray[0][1];\n                y = pathArray[0][2];\n                mx = x;\n                my = y;\n                start++;\n                res.push([\"M\", x, y]);\n            }\n            for (var i = start, ii = pathArray.length; i < ii; i++) {\n                var r = res[i] = [],\n                    pa = pathArray[i];\n                if (pa[0] != lowerCase.call(pa[0])) {\n                    r[0] = lowerCase.call(pa[0]);\n                    switch (r[0]) {\n                        case \"a\":\n                            r[1] = pa[1];\n                            r[2] = pa[2];\n                            r[3] = pa[3];\n                            r[4] = pa[4];\n                            r[5] = pa[5];\n                            r[6] = +(pa[6] - x).toFixed(3);\n                            r[7] = +(pa[7] - y).toFixed(3);\n                            break;\n                        case \"v\":\n                            r[1] = +(pa[1] - y).toFixed(3);\n                            break;\n                        case \"m\":\n                            mx = pa[1];\n                            my = pa[2];\n                        default:\n                            for (var j = 1, jj = pa.length; j < jj; j++) {\n                                r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);\n                            }\n                    }\n                } else {\n                    r = res[i] = [];\n                    if (pa[0] == \"m\") {\n                        mx = pa[1] + x;\n                        my = pa[2] + y;\n                    }\n                    for (var k = 0, kk = pa.length; k < kk; k++) {\n                        res[i][k] = pa[k];\n                    }\n                }\n                var len = res[i].length;\n                switch (res[i][0]) {\n                    case \"z\":\n                        x = mx;\n                        y = my;\n                        break;\n                    case \"h\":\n                        x += +res[i][len - 1];\n                        break;\n                    case \"v\":\n                        y += +res[i][len - 1];\n                        break;\n                    default:\n                        x += +res[i][len - 2];\n                        y += +res[i][len - 1];\n                }\n            }\n            res.toString = R._path2string;\n            return res;\n        }, 0, pathClone),\n        pathToAbsolute = R._pathToAbsolute = cacher(function (pathArray) {\n            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n                pathArray = R.parsePathString(pathArray);\n            }\n            if (!pathArray || !pathArray.length) {\n                return [[\"M\", 0, 0]];\n            }\n            var res = [],\n                x = 0,\n                y = 0,\n                mx = 0,\n                my = 0,\n                start = 0;\n            if (pathArray[0][0] == \"M\") {\n                x = +pathArray[0][1];\n                y = +pathArray[0][2];\n                mx = x;\n                my = y;\n                start++;\n                res[0] = [\"M\", x, y];\n            }\n            for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n                res.push(r = []);\n                pa = pathArray[i];\n                if (pa[0] != upperCase.call(pa[0])) {\n                    r[0] = upperCase.call(pa[0]);\n                    switch (r[0]) {\n                        case \"A\":\n                            r[1] = pa[1];\n                            r[2] = pa[2];\n                            r[3] = pa[3];\n                            r[4] = pa[4];\n                            r[5] = pa[5];\n                            r[6] = +(pa[6] + x);\n                            r[7] = +(pa[7] + y);\n                            break;\n                        case \"V\":\n                            r[1] = +pa[1] + y;\n                            break;\n                        case \"H\":\n                            r[1] = +pa[1] + x;\n                            break;\n                        case \"R\":\n                            var dots = [x, y][concat](pa.slice(1));\n                            for (var j = 2, jj = dots.length; j < jj; j++) {\n                                dots[j] = +dots[j] + x;\n                                dots[++j] = +dots[j] + y;\n                            }\n                            res.pop();\n                            res = res[concat](catmullRom2bezier(dots));\n                            break;\n                        case \"M\":\n                            mx = +pa[1] + x;\n                            my = +pa[2] + y;\n                        default:\n                            for (j = 1, jj = pa.length; j < jj; j++) {\n                                r[j] = +pa[j] + ((j % 2) ? x : y);\n                            }\n                    }\n                } else if (pa[0] == \"R\") {\n                    dots = [x, y][concat](pa.slice(1));\n                    res.pop();\n                    res = res[concat](catmullRom2bezier(dots));\n                    r = [\"R\"][concat](pa.slice(-2));\n                } else {\n                    for (var k = 0, kk = pa.length; k < kk; k++) {\n                        r[k] = pa[k];\n                    }\n                }\n                switch (r[0]) {\n                    case \"Z\":\n                        x = mx;\n                        y = my;\n                        break;\n                    case \"H\":\n                        x = r[1];\n                        break;\n                    case \"V\":\n                        y = r[1];\n                        break;\n                    case \"M\":\n                        mx = r[r.length - 2];\n                        my = r[r.length - 1];\n                    default:\n                        x = r[r.length - 2];\n                        y = r[r.length - 1];\n                }\n            }\n            res.toString = R._path2string;\n            return res;\n        }, null, pathClone),\n        l2c = function (x1, y1, x2, y2) {\n            return [x1, y1, x2, y2, x2, y2];\n        },\n        q2c = function (x1, y1, ax, ay, x2, y2) {\n            var _13 = 1 / 3,\n                _23 = 2 / 3;\n            return [\n                    _13 * x1 + _23 * ax,\n                    _13 * y1 + _23 * ay,\n                    _13 * x2 + _23 * ax,\n                    _13 * y2 + _23 * ay,\n                    x2,\n                    y2\n                ];\n        },\n        a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n            // for more information of where this math came from visit:\n            // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n            var _120 = PI * 120 / 180,\n                rad = PI / 180 * (+angle || 0),\n                res = [],\n                xy,\n                rotate = cacher(function (x, y, rad) {\n                    var X = x * math.cos(rad) - y * math.sin(rad),\n                        Y = x * math.sin(rad) + y * math.cos(rad);\n                    return {x: X, y: Y};\n                });\n            if (!recursive) {\n                xy = rotate(x1, y1, -rad);\n                x1 = xy.x;\n                y1 = xy.y;\n                xy = rotate(x2, y2, -rad);\n                x2 = xy.x;\n                y2 = xy.y;\n                var cos = math.cos(PI / 180 * angle),\n                    sin = math.sin(PI / 180 * angle),\n                    x = (x1 - x2) / 2,\n                    y = (y1 - y2) / 2;\n                var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n                if (h > 1) {\n                    h = math.sqrt(h);\n                    rx = h * rx;\n                    ry = h * ry;\n                }\n                var rx2 = rx * rx,\n                    ry2 = ry * ry,\n                    k = (large_arc_flag == sweep_flag ? -1 : 1) *\n                        math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),\n                    cx = k * rx * y / ry + (x1 + x2) / 2,\n                    cy = k * -ry * x / rx + (y1 + y2) / 2,\n                    f1 = math.asin(((y1 - cy) / ry).toFixed(9)),\n                    f2 = math.asin(((y2 - cy) / ry).toFixed(9));\n\n                f1 = x1 < cx ? PI - f1 : f1;\n                f2 = x2 < cx ? PI - f2 : f2;\n                f1 < 0 && (f1 = PI * 2 + f1);\n                f2 < 0 && (f2 = PI * 2 + f2);\n                if (sweep_flag && f1 > f2) {\n                    f1 = f1 - PI * 2;\n                }\n                if (!sweep_flag && f2 > f1) {\n                    f2 = f2 - PI * 2;\n                }\n            } else {\n                f1 = recursive[0];\n                f2 = recursive[1];\n                cx = recursive[2];\n                cy = recursive[3];\n            }\n            var df = f2 - f1;\n            if (abs(df) > _120) {\n                var f2old = f2,\n                    x2old = x2,\n                    y2old = y2;\n                f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n                x2 = cx + rx * math.cos(f2);\n                y2 = cy + ry * math.sin(f2);\n                res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n            }\n            df = f2 - f1;\n            var c1 = math.cos(f1),\n                s1 = math.sin(f1),\n                c2 = math.cos(f2),\n                s2 = math.sin(f2),\n                t = math.tan(df / 4),\n                hx = 4 / 3 * rx * t,\n                hy = 4 / 3 * ry * t,\n                m1 = [x1, y1],\n                m2 = [x1 + hx * s1, y1 - hy * c1],\n                m3 = [x2 + hx * s2, y2 - hy * c2],\n                m4 = [x2, y2];\n            m2[0] = 2 * m1[0] - m2[0];\n            m2[1] = 2 * m1[1] - m2[1];\n            if (recursive) {\n                return [m2, m3, m4][concat](res);\n            } else {\n                res = [m2, m3, m4][concat](res).join()[split](\",\");\n                var newres = [];\n                for (var i = 0, ii = res.length; i < ii; i++) {\n                    newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n                }\n                return newres;\n            }\n        },\n        findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n            var t1 = 1 - t;\n            return {\n                x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,\n                y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y\n            };\n        },\n        curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n            var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),\n                b = 2 * (c1x - p1x) - 2 * (c2x - c1x),\n                c = p1x - c1x,\n                t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,\n                t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,\n                y = [p1y, p2y],\n                x = [p1x, p2x],\n                dot;\n            abs(t1) > \"1e12\" && (t1 = .5);\n            abs(t2) > \"1e12\" && (t2 = .5);\n            if (t1 > 0 && t1 < 1) {\n                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n                x.push(dot.x);\n                y.push(dot.y);\n            }\n            if (t2 > 0 && t2 < 1) {\n                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n                x.push(dot.x);\n                y.push(dot.y);\n            }\n            a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);\n            b = 2 * (c1y - p1y) - 2 * (c2y - c1y);\n            c = p1y - c1y;\n            t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;\n            t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;\n            abs(t1) > \"1e12\" && (t1 = .5);\n            abs(t2) > \"1e12\" && (t2 = .5);\n            if (t1 > 0 && t1 < 1) {\n                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n                x.push(dot.x);\n                y.push(dot.y);\n            }\n            if (t2 > 0 && t2 < 1) {\n                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n                x.push(dot.x);\n                y.push(dot.y);\n            }\n            return {\n                min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},\n                max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}\n            };\n        }),\n        path2curve = R._path2curve = cacher(function (path, path2) {\n            var p = pathToAbsolute(path),\n                p2 = path2 && pathToAbsolute(path2),\n                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n                processPath = function (path, d) {\n                    var nx, ny;\n                    if (!path) {\n                        return [\"C\", d.x, d.y, d.x, d.y, d.x, d.y];\n                    }\n                    !(path[0] in {T:1, Q:1}) && (d.qx = d.qy = null);\n                    switch (path[0]) {\n                        case \"M\":\n                            d.X = path[1];\n                            d.Y = path[2];\n                            break;\n                        case \"A\":\n                            path = [\"C\"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));\n                            break;\n                        case \"S\":\n                            nx = d.x + (d.x - (d.bx || d.x));\n                            ny = d.y + (d.y - (d.by || d.y));\n                            path = [\"C\", nx, ny][concat](path.slice(1));\n                            break;\n                        case \"T\":\n                            d.qx = d.x + (d.x - (d.qx || d.x));\n                            d.qy = d.y + (d.y - (d.qy || d.y));\n                            path = [\"C\"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n                            break;\n                        case \"Q\":\n                            d.qx = path[1];\n                            d.qy = path[2];\n                            path = [\"C\"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n                            break;\n                        case \"L\":\n                            path = [\"C\"][concat](l2c(d.x, d.y, path[1], path[2]));\n                            break;\n                        case \"H\":\n                            path = [\"C\"][concat](l2c(d.x, d.y, path[1], d.y));\n                            break;\n                        case \"V\":\n                            path = [\"C\"][concat](l2c(d.x, d.y, d.x, path[1]));\n                            break;\n                        case \"Z\":\n                            path = [\"C\"][concat](l2c(d.x, d.y, d.X, d.Y));\n                            break;\n                    }\n                    return path;\n                },\n                fixArc = function (pp, i) {\n                    if (pp[i].length > 7) {\n                        pp[i].shift();\n                        var pi = pp[i];\n                        while (pi.length) {\n                            pp.splice(i++, 0, [\"C\"][concat](pi.splice(0, 6)));\n                        }\n                        pp.splice(i, 1);\n                        ii = mmax(p.length, p2 && p2.length || 0);\n                    }\n                },\n                fixM = function (path1, path2, a1, a2, i) {\n                    if (path1 && path2 && path1[i][0] == \"M\" && path2[i][0] != \"M\") {\n                        path2.splice(i, 0, [\"M\", a2.x, a2.y]);\n                        a1.bx = 0;\n                        a1.by = 0;\n                        a1.x = path1[i][1];\n                        a1.y = path1[i][2];\n                        ii = mmax(p.length, p2 && p2.length || 0);\n                    }\n                };\n            for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {\n                p[i] = processPath(p[i], attrs);\n                fixArc(p, i);\n                p2 && (p2[i] = processPath(p2[i], attrs2));\n                p2 && fixArc(p2, i);\n                fixM(p, p2, attrs, attrs2, i);\n                fixM(p2, p, attrs2, attrs, i);\n                var seg = p[i],\n                    seg2 = p2 && p2[i],\n                    seglen = seg.length,\n                    seg2len = p2 && seg2.length;\n                attrs.x = seg[seglen - 2];\n                attrs.y = seg[seglen - 1];\n                attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;\n                attrs.by = toFloat(seg[seglen - 3]) || attrs.y;\n                attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);\n                attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);\n                attrs2.x = p2 && seg2[seg2len - 2];\n                attrs2.y = p2 && seg2[seg2len - 1];\n            }\n            return p2 ? [p, p2] : p;\n        }, null, pathClone),\n        parseDots = R._parseDots = cacher(function (gradient) {\n            var dots = [];\n            for (var i = 0, ii = gradient.length; i < ii; i++) {\n                var dot = {},\n                    par = gradient[i].match(/^([^:]*):?([\\d\\.]*)/);\n                dot.color = R.getRGB(par[1]);\n                if (dot.color.error) {\n                    return null;\n                }\n                dot.color = dot.color.hex;\n                par[2] && (dot.offset = par[2] + \"%\");\n                dots.push(dot);\n            }\n            for (i = 1, ii = dots.length - 1; i < ii; i++) {\n                if (!dots[i].offset) {\n                    var start = toFloat(dots[i - 1].offset || 0),\n                        end = 0;\n                    for (var j = i + 1; j < ii; j++) {\n                        if (dots[j].offset) {\n                            end = dots[j].offset;\n                            break;\n                        }\n                    }\n                    if (!end) {\n                        end = 100;\n                        j = ii;\n                    }\n                    end = toFloat(end);\n                    var d = (end - start) / (j - i + 1);\n                    for (; i < j; i++) {\n                        start += d;\n                        dots[i].offset = start + \"%\";\n                    }\n                }\n            }\n            return dots;\n        }),\n        tear = R._tear = function (el, paper) {\n            el == paper.top && (paper.top = el.prev);\n            el == paper.bottom && (paper.bottom = el.next);\n            el.next && (el.next.prev = el.prev);\n            el.prev && (el.prev.next = el.next);\n        },\n        tofront = R._tofront = function (el, paper) {\n            if (paper.top === el) {\n                return;\n            }\n            tear(el, paper);\n            el.next = null;\n            el.prev = paper.top;\n            paper.top.next = el;\n            paper.top = el;\n        },\n        toback = R._toback = function (el, paper) {\n            if (paper.bottom === el) {\n                return;\n            }\n            tear(el, paper);\n            el.next = paper.bottom;\n            el.prev = null;\n            paper.bottom.prev = el;\n            paper.bottom = el;\n        },\n        insertafter = R._insertafter = function (el, el2, paper) {\n            tear(el, paper);\n            el2 == paper.top && (paper.top = el);\n            el2.next && (el2.next.prev = el);\n            el.next = el2.next;\n            el.prev = el2;\n            el2.next = el;\n        },\n        insertbefore = R._insertbefore = function (el, el2, paper) {\n            tear(el, paper);\n            el2 == paper.bottom && (paper.bottom = el);\n            el2.prev && (el2.prev.next = el);\n            el.prev = el2.prev;\n            el2.prev = el;\n            el.next = el2;\n        },\n        extractTransform = R._extractTransform = function (el, tstr) {\n            if (tstr == null) {\n                return el._.transform;\n            }\n            tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, el._.transform || E);\n            var tdata = R.parseTransformString(tstr),\n                deg = 0,\n                dx = 0,\n                dy = 0,\n                sx = 1,\n                sy = 1,\n                _ = el._,\n                m = new Matrix;\n            _.transform = tdata || [];\n            if (tdata) {\n                for (var i = 0, ii = tdata.length; i < ii; i++) {\n                    var t = tdata[i],\n                        tlen = t.length,\n                        command = Str(t[0]).toLowerCase(),\n                        absolute = t[0] != command,\n                        inver = absolute ? m.invert() : 0,\n                        x1,\n                        y1,\n                        x2,\n                        y2,\n                        bb;\n                    if (command == \"t\" && tlen == 3) {\n                        if (absolute) {\n                            x1 = inver.x(0, 0);\n                            y1 = inver.y(0, 0);\n                            x2 = inver.x(t[1], t[2]);\n                            y2 = inver.y(t[1], t[2]);\n                            m.translate(x2 - x1, y2 - y1);\n                        } else {\n                            m.translate(t[1], t[2]);\n                        }\n                    } else if (command == \"r\") {\n                        if (tlen == 2) {\n                            bb = bb || el.getBBox(1);\n                            m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n                            deg += t[1];\n                        } else if (tlen == 4) {\n                            if (absolute) {\n                                x2 = inver.x(t[2], t[3]);\n                                y2 = inver.y(t[2], t[3]);\n                                m.rotate(t[1], x2, y2);\n                            } else {\n                                m.rotate(t[1], t[2], t[3]);\n                            }\n                            deg += t[1];\n                        }\n                    } else if (command == \"s\") {\n                        if (tlen == 2 || tlen == 3) {\n                            bb = bb || el.getBBox(1);\n                            m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n                            sx *= t[1];\n                            sy *= t[tlen - 1];\n                        } else if (tlen == 5) {\n                            if (absolute) {\n                                x2 = inver.x(t[3], t[4]);\n                                y2 = inver.y(t[3], t[4]);\n                                m.scale(t[1], t[2], x2, y2);\n                            } else {\n                                m.scale(t[1], t[2], t[3], t[4]);\n                            }\n                            sx *= t[1];\n                            sy *= t[2];\n                        }\n                    } else if (command == \"m\" && tlen == 7) {\n                        m.add(t[1], t[2], t[3], t[4], t[5], t[6]);\n                    }\n                    _.dirtyT = 1;\n                    el.matrix = m;\n                }\n            }\n\n            el.matrix = m;\n\n            _.sx = sx;\n            _.sy = sy;\n            _.deg = deg;\n            _.dx = dx = m.e;\n            _.dy = dy = m.f;\n\n            if (sx == 1 && sy == 1 && !deg && _.bbox) {\n                _.bbox.x += +dx;\n                _.bbox.y += +dy;\n            } else {\n                _.dirtyT = 1;\n            }\n        },\n        getEmpty = function (item) {\n            var l = item[0];\n            switch (l.toLowerCase()) {\n                case \"t\": return [l, 0, 0];\n                case \"m\": return [l, 1, 0, 0, 1, 0, 0];\n                case \"r\": if (item.length == 4) {\n                    return [l, 0, item[2], item[3]];\n                } else {\n                    return [l, 0];\n                }\n                case \"s\": if (item.length == 5) {\n                    return [l, 1, 1, item[3], item[4]];\n                } else if (item.length == 3) {\n                    return [l, 1, 1];\n                } else {\n                    return [l, 1];\n                }\n            }\n        },\n        equaliseTransform = R._equaliseTransform = function (t1, t2) {\n            t2 = Str(t2).replace(/\\.{3}|\\u2026/g, t1);\n            t1 = R.parseTransformString(t1) || [];\n            t2 = R.parseTransformString(t2) || [];\n            var maxlength = mmax(t1.length, t2.length),\n                from = [],\n                to = [],\n                i = 0, j, jj,\n                tt1, tt2;\n            for (; i < maxlength; i++) {\n                tt1 = t1[i] || getEmpty(t2[i]);\n                tt2 = t2[i] || getEmpty(tt1);\n                if ((tt1[0] != tt2[0]) ||\n                    (tt1[0].toLowerCase() == \"r\" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||\n                    (tt1[0].toLowerCase() == \"s\" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))\n                    ) {\n                    return;\n                }\n                from[i] = [];\n                to[i] = [];\n                for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {\n                    j in tt1 && (from[i][j] = tt1[j]);\n                    j in tt2 && (to[i][j] = tt2[j]);\n                }\n            }\n            return {\n                from: from,\n                to: to\n            };\n        };\n    R._getContainer = function (x, y, w, h) {\n        var container;\n        container = h == null && !R.is(x, \"object\") ? g.doc.getElementById(x) : x;\n        if (container == null) {\n            return;\n        }\n        if (container.tagName) {\n            if (y == null) {\n                return {\n                    container: container,\n                    width: container.style.pixelWidth || container.offsetWidth,\n                    height: container.style.pixelHeight || container.offsetHeight\n                };\n            } else {\n                return {\n                    container: container,\n                    width: y,\n                    height: w\n                };\n            }\n        }\n        return {\n            container: 1,\n            x: x,\n            y: y,\n            width: w,\n            height: h\n        };\n    };\n    \n    R.pathToRelative = pathToRelative;\n    R._engine = {};\n    \n    R.path2curve = path2curve;\n    \n    R.matrix = function (a, b, c, d, e, f) {\n        return new Matrix(a, b, c, d, e, f);\n    };\n    function Matrix(a, b, c, d, e, f) {\n        if (a != null) {\n            this.a = +a;\n            this.b = +b;\n            this.c = +c;\n            this.d = +d;\n            this.e = +e;\n            this.f = +f;\n        } else {\n            this.a = 1;\n            this.b = 0;\n            this.c = 0;\n            this.d = 1;\n            this.e = 0;\n            this.f = 0;\n        }\n    }\n    (function (matrixproto) {\n        \n        matrixproto.add = function (a, b, c, d, e, f) {\n            var out = [[], [], []],\n                m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],\n                matrix = [[a, c, e], [b, d, f], [0, 0, 1]],\n                x, y, z, res;\n\n            if (a && a instanceof Matrix) {\n                matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];\n            }\n\n            for (x = 0; x < 3; x++) {\n                for (y = 0; y < 3; y++) {\n                    res = 0;\n                    for (z = 0; z < 3; z++) {\n                        res += m[x][z] * matrix[z][y];\n                    }\n                    out[x][y] = res;\n                }\n            }\n            this.a = out[0][0];\n            this.b = out[1][0];\n            this.c = out[0][1];\n            this.d = out[1][1];\n            this.e = out[0][2];\n            this.f = out[1][2];\n        };\n        \n        matrixproto.invert = function () {\n            var me = this,\n                x = me.a * me.d - me.b * me.c;\n            return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);\n        };\n        \n        matrixproto.clone = function () {\n            return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n        };\n        \n        matrixproto.translate = function (x, y) {\n            this.add(1, 0, 0, 1, x, y);\n        };\n        \n        matrixproto.scale = function (x, y, cx, cy) {\n            y == null && (y = x);\n            (cx || cy) && this.add(1, 0, 0, 1, cx, cy);\n            this.add(x, 0, 0, y, 0, 0);\n            (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);\n        };\n        \n        matrixproto.rotate = function (a, x, y) {\n            a = R.rad(a);\n            x = x || 0;\n            y = y || 0;\n            var cos = +math.cos(a).toFixed(9),\n                sin = +math.sin(a).toFixed(9);\n            this.add(cos, sin, -sin, cos, x, y);\n            this.add(1, 0, 0, 1, -x, -y);\n        };\n        \n        matrixproto.x = function (x, y) {\n            return x * this.a + y * this.c + this.e;\n        };\n        \n        matrixproto.y = function (x, y) {\n            return x * this.b + y * this.d + this.f;\n        };\n        matrixproto.get = function (i) {\n            return +this[Str.fromCharCode(97 + i)].toFixed(4);\n        };\n        matrixproto.toString = function () {\n            return R.svg ?\n                \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\" :\n                [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();\n        };\n        matrixproto.toFilter = function () {\n            return \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + this.get(0) +\n                \", M12=\" + this.get(2) + \", M21=\" + this.get(1) + \", M22=\" + this.get(3) +\n                \", Dx=\" + this.get(4) + \", Dy=\" + this.get(5) + \", sizingmethod='auto expand')\";\n        };\n        matrixproto.offset = function () {\n            return [this.e.toFixed(4), this.f.toFixed(4)];\n        };\n        function norm(a) {\n            return a[0] * a[0] + a[1] * a[1];\n        }\n        function normalize(a) {\n            var mag = math.sqrt(norm(a));\n            a[0] && (a[0] /= mag);\n            a[1] && (a[1] /= mag);\n        }\n        \n        matrixproto.split = function () {\n            var out = {};\n            // translation\n            out.dx = this.e;\n            out.dy = this.f;\n\n            // scale and shear\n            var row = [[this.a, this.c], [this.b, this.d]];\n            out.scalex = math.sqrt(norm(row[0]));\n            normalize(row[0]);\n\n            out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];\n            row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];\n\n            out.scaley = math.sqrt(norm(row[1]));\n            normalize(row[1]);\n            out.shear /= out.scaley;\n\n            // rotation\n            var sin = -row[0][1],\n                cos = row[1][1];\n            if (cos < 0) {\n                out.rotate = R.deg(math.acos(cos));\n                if (sin < 0) {\n                    out.rotate = 360 - out.rotate;\n                }\n            } else {\n                out.rotate = R.deg(math.asin(sin));\n            }\n\n            out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);\n            out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;\n            out.noRotation = !+out.shear.toFixed(9) && !out.rotate;\n            return out;\n        };\n        \n        matrixproto.toTransformString = function (shorter) {\n            var s = shorter || this[split]();\n            if (s.isSimple) {\n                s.scalex = +s.scalex.toFixed(4);\n                s.scaley = +s.scaley.toFixed(4);\n                s.rotate = +s.rotate.toFixed(4);\n                return  (s.dx && s.dy ? \"t\" + [s.dx, s.dy] : E) + \n                        (s.scalex != 1 || s.scaley != 1 ? \"s\" + [s.scalex, s.scaley, 0, 0] : E) +\n                        (s.rotate ? \"r\" + [s.rotate, 0, 0] : E);\n            } else {\n                return \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n            }\n        };\n    })(Matrix.prototype);\n\n    // WebKit rendering bug workaround method\n    var version = navigator.userAgent.match(/Version\\/(.*?)\\s/) || navigator.userAgent.match(/Chrome\\/(\\d+)/);\n    if ((navigator.vendor == \"Apple Computer, Inc.\") && (version && version[1] < 4 || navigator.platform.slice(0, 2) == \"iP\") ||\n        (navigator.vendor == \"Google Inc.\" && version && version[1] < 8)) {\n        \n        paperproto.safari = function () {\n            var rect = this.rect(-99, -99, this.width + 99, this.height + 99).attr({stroke: \"none\"});\n            setTimeout(function () {rect.remove();});\n        };\n    } else {\n        paperproto.safari = fun;\n    }\n \n    var preventDefault = function () {\n        this.returnValue = false;\n    },\n    preventTouch = function () {\n        return this.originalEvent.preventDefault();\n    },\n    stopPropagation = function () {\n        this.cancelBubble = true;\n    },\n    stopTouch = function () {\n        return this.originalEvent.stopPropagation();\n    },\n    addEvent = (function () {\n        if (g.doc.addEventListener) {\n            return function (obj, type, fn, element) {\n                var realName = supportsTouch && touchMap[type] ? touchMap[type] : type,\n                    f = function (e) {\n                        var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n                            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n                            x = e.clientX + scrollX,\n                            y = e.clientY + scrollY;\n                    if (supportsTouch && touchMap[has](type)) {\n                        for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {\n                            if (e.targetTouches[i].target == obj) {\n                                var olde = e;\n                                e = e.targetTouches[i];\n                                e.originalEvent = olde;\n                                e.preventDefault = preventTouch;\n                                e.stopPropagation = stopTouch;\n                                break;\n                            }\n                        }\n                    }\n                    return fn.call(element, e, x, y);\n                };\n                obj.addEventListener(realName, f, false);\n                return function () {\n                    obj.removeEventListener(realName, f, false);\n                    return true;\n                };\n            };\n        } else if (g.doc.attachEvent) {\n            return function (obj, type, fn, element) {\n                var f = function (e) {\n                    e = e || g.win.event;\n                    var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n                        scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n                        x = e.clientX + scrollX,\n                        y = e.clientY + scrollY;\n                    e.preventDefault = e.preventDefault || preventDefault;\n                    e.stopPropagation = e.stopPropagation || stopPropagation;\n                    return fn.call(element, e, x, y);\n                };\n                obj.attachEvent(\"on\" + type, f);\n                var detacher = function () {\n                    obj.detachEvent(\"on\" + type, f);\n                    return true;\n                };\n                return detacher;\n            };\n        }\n    })(),\n    drag = [],\n    dragMove = function (e) {\n        var x = e.clientX,\n            y = e.clientY,\n            scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n            dragi,\n            j = drag.length;\n        while (j--) {\n            dragi = drag[j];\n            if (supportsTouch) {\n                var i = e.touches.length,\n                    touch;\n                while (i--) {\n                    touch = e.touches[i];\n                    if (touch.identifier == dragi.el._drag.id) {\n                        x = touch.clientX;\n                        y = touch.clientY;\n                        (e.originalEvent ? e.originalEvent : e).preventDefault();\n                        break;\n                    }\n                }\n            } else {\n                e.preventDefault();\n            }\n            var node = dragi.el.node,\n                o,\n                next = node.nextSibling,\n                parent = node.parentNode,\n                display = node.style.display;\n            g.win.opera && parent.removeChild(node);\n            node.style.display = \"none\";\n            o = dragi.el.paper.getElementByPoint(x, y);\n            node.style.display = display;\n            g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n            o && eve(\"drag.over.\" + dragi.el.id, dragi.el, o);\n            x += scrollX;\n            y += scrollY;\n            eve(\"drag.move.\" + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);\n        }\n    },\n    dragUp = function (e) {\n        R.unmousemove(dragMove).unmouseup(dragUp);\n        var i = drag.length,\n            dragi;\n        while (i--) {\n            dragi = drag[i];\n            dragi.el._drag = {};\n            eve(\"drag.end.\" + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);\n        }\n        drag = [];\n    },\n    \n    elproto = R.el = {};\n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    \n    for (var i = events.length; i--;) {\n        (function (eventName) {\n            R[eventName] = elproto[eventName] = function (fn, scope) {\n                if (R.is(fn, \"function\")) {\n                    this.events = this.events || [];\n                    this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});\n                }\n                return this;\n            };\n            R[\"un\" + eventName] = elproto[\"un\" + eventName] = function (fn) {\n                var events = this.events,\n                    l = events.length;\n                while (l--) if (events[l].name == eventName && events[l].f == fn) {\n                    events[l].unbind();\n                    events.splice(l, 1);\n                    !events.length && delete this.events;\n                    return this;\n                }\n                return this;\n            };\n        })(events[i]);\n    }\n    \n    \n    elproto.data = function (key, value) {\n        var data = eldata[this.id] = eldata[this.id] || {};\n        if (arguments.length == 1) {\n            if (R.is(key, \"object\")) {\n                for (var i in key) if (key[has](i)) {\n                    this.data(i, key[i]);\n                }\n                return this;\n            }\n            eve(\"data.get.\" + this.id, this, data[key], key);\n            return data[key];\n        }\n        data[key] = value;\n        eve(\"data.set.\" + this.id, this, value, key);\n        return this;\n    };\n    \n    elproto.removeData = function (key) {\n        if (key == null) {\n            eldata[this.id] = {};\n        } else {\n            eldata[this.id] && delete eldata[this.id][key];\n        }\n        return this;\n    };\n    \n    elproto.hover = function (f_in, f_out, scope_in, scope_out) {\n        return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);\n    };\n    \n    elproto.unhover = function (f_in, f_out) {\n        return this.unmouseover(f_in).unmouseout(f_out);\n    };\n    var draggable = [];\n    \n    elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {\n        function start(e) {\n            (e.originalEvent || e).preventDefault();\n            var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n                scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;\n            this._drag.x = e.clientX + scrollX;\n            this._drag.y = e.clientY + scrollY;\n            this._drag.id = e.identifier;\n            !drag.length && R.mousemove(dragMove).mouseup(dragUp);\n            drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});\n            onstart && eve.on(\"drag.start.\" + this.id, onstart);\n            onmove && eve.on(\"drag.move.\" + this.id, onmove);\n            onend && eve.on(\"drag.end.\" + this.id, onend);\n            eve(\"drag.start.\" + this.id, start_scope || move_scope || this, e.clientX + scrollX, e.clientY + scrollY, e);\n        }\n        this._drag = {};\n        draggable.push({el: this, start: start});\n        this.mousedown(start);\n        return this;\n    };\n    \n    elproto.onDragOver = function (f) {\n        f ? eve.on(\"drag.over.\" + this.id, f) : eve.unbind(\"drag.over.\" + this.id);\n    };\n    \n    elproto.undrag = function () {\n        var i = draggable.length;\n        while (i--) if (draggable[i].el == this) {\n            this.unmousedown(draggable[i].start);\n            draggable.splice(i, 1);\n            eve.unbind(\"drag.*.\" + this.id);\n        }\n        !draggable.length && R.unmousemove(dragMove).unmouseup(dragUp);\n    };\n    \n    paperproto.circle = function (x, y, r) {\n        var out = R._engine.circle(this, x || 0, y || 0, r || 0);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.rect = function (x, y, w, h, r) {\n        var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.ellipse = function (x, y, rx, ry) {\n        var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.path = function (pathString) {\n        pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);\n        var out = R._engine.path(R.format[apply](R, arguments), this);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.image = function (src, x, y, w, h) {\n        var out = R._engine.image(this, src || \"about:blank\", x || 0, y || 0, w || 0, h || 0);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.text = function (x, y, text) {\n        var out = R._engine.text(this, x || 0, y || 0, Str(text));\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.set = function (itemsArray) {\n        !R.is(itemsArray, \"array\") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));\n        var out = new Set(itemsArray);\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    paperproto.setStart = function (set) {\n        this.__set__ = set || this.set();\n    };\n    \n    paperproto.setFinish = function (set) {\n        var out = this.__set__;\n        delete this.__set__;\n        return out;\n    };\n    \n    paperproto.setSize = function (width, height) {\n        return R._engine.setSize.call(this, width, height);\n    };\n    \n    paperproto.setViewBox = function (x, y, w, h, fit) {\n        return R._engine.setViewBox.call(this, x, y, w, h, fit);\n    };\n    \n    \n    paperproto.top = paperproto.bottom = null;\n    \n    paperproto.raphael = R;\n    var getOffset = function (elem) {\n        var box = elem.getBoundingClientRect(),\n            doc = elem.ownerDocument,\n            body = doc.body,\n            docElem = doc.documentElement,\n            clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n            top  = box.top  + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,\n            left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;\n        return {\n            y: top,\n            x: left\n        };\n    };\n    \n    paperproto.getElementByPoint = function (x, y) {\n        var paper = this,\n            svg = paper.canvas,\n            target = g.doc.elementFromPoint(x, y);\n        if (g.win.opera && target.tagName == \"svg\") {\n            var so = getOffset(svg),\n                sr = svg.createSVGRect();\n            sr.x = x - so.x;\n            sr.y = y - so.y;\n            sr.width = sr.height = 1;\n            var hits = svg.getIntersectionList(sr, null);\n            if (hits.length) {\n                target = hits[hits.length - 1];\n            }\n        }\n        if (!target) {\n            return null;\n        }\n        while (target.parentNode && target != svg.parentNode && !target.raphael) {\n            target = target.parentNode;\n        }\n        target == paper.canvas.parentNode && (target = svg);\n        target = target && target.raphael ? paper.getById(target.raphaelid) : null;\n        return target;\n    };\n    \n    paperproto.getById = function (id) {\n        var bot = this.bottom;\n        while (bot) {\n            if (bot.id == id) {\n                return bot;\n            }\n            bot = bot.next;\n        }\n        return null;\n    };\n    \n    paperproto.forEach = function (callback, thisArg) {\n        var bot = this.bottom;\n        while (bot) {\n            if (callback.call(thisArg, bot) === false) {\n                return this;\n            }\n            bot = bot.next;\n        }\n        return this;\n    };\n    function x_y() {\n        return this.x + S + this.y;\n    }\n    function x_y_w_h() {\n        return this.x + S + this.y + S + this.width + \" \\xd7 \" + this.height;\n    }\n    \n    elproto.getBBox = function (isWithoutTransform) {\n        if (this.removed) {\n            return {};\n        }\n        var _ = this._;\n        if (isWithoutTransform) {\n            if (_.dirty || !_.bboxwt) {\n                this.realPath = getPath[this.type](this);\n                _.bboxwt = pathDimensions(this.realPath);\n                _.bboxwt.toString = x_y_w_h;\n                _.dirty = 0;\n            }\n            return _.bboxwt;\n        }\n        if (_.dirty || _.dirtyT || !_.bbox) {\n            if (_.dirty || !this.realPath) {\n                _.bboxwt = 0;\n                this.realPath = getPath[this.type](this);\n            }\n            _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));\n            _.bbox.toString = x_y_w_h;\n            _.dirty = _.dirtyT = 0;\n        }\n        return _.bbox;\n    };\n    \n    elproto.clone = function () {\n        if (this.removed) {\n            return null;\n        }\n        var out = this.paper[this.type]().attr(this.attr());\n        this.__set__ && this.__set__.push(out);\n        return out;\n    };\n    \n    elproto.glow = function (glow) {\n        if (this.type == \"text\") {\n            return null;\n        }\n        glow = glow || {};\n        var s = {\n            width: (glow.width || 10) + (+this.attr(\"stroke-width\") || 1),\n            fill: glow.fill || false,\n            opacity: glow.opacity || .5,\n            offsetx: glow.offsetx || 0,\n            offsety: glow.offsety || 0,\n            color: glow.color || \"#000\"\n        },\n            c = s.width / 2,\n            r = this.paper,\n            out = r.set(),\n            path = this.realPath || getPath[this.type](this);\n        path = this.matrix ? mapPath(path, this.matrix) : path;\n        for (var i = 1; i < c + 1; i++) {\n            out.push(r.path(path).attr({\n                stroke: s.color,\n                fill: s.fill ? s.color : \"none\",\n                \"stroke-linejoin\": \"round\",\n                \"stroke-linecap\": \"round\",\n                \"stroke-width\": +(s.width / c * i).toFixed(3),\n                opacity: +(s.opacity / c).toFixed(3)\n            }));\n        }\n        return out.insertBefore(this).translate(s.offsetx, s.offsety);\n    };\n    var curveslengths = {},\n    getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {\n        var len = 0,\n            precision = 100,\n            name = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y].join(),\n            cache = curveslengths[name],\n            old, dot;\n        !cache && (curveslengths[name] = cache = {data: []});\n        cache.timer && clearTimeout(cache.timer);\n        cache.timer = setTimeout(function () {delete curveslengths[name];}, 2e3);\n        if (length != null && !cache.precision) {\n            var total = getPointAtSegmentLength(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);\n            cache.precision = ~~total * 10;\n            cache.data = [];\n        }\n        precision = cache.precision || precision;\n        for (var i = 0; i < precision + 1; i++) {\n            if (cache.data[i * precision]) {\n                dot = cache.data[i * precision];\n            } else {\n                dot = R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, i / precision);\n                cache.data[i * precision] = dot;\n            }\n            i && (len += pow(pow(old.x - dot.x, 2) + pow(old.y - dot.y, 2), .5));\n            if (length != null && len >= length) {\n                return dot;\n            }\n            old = dot;\n        }\n        if (length == null) {\n            return len;\n        }\n    },\n    getLengthFactory = function (istotal, subpath) {\n        return function (path, length, onlystart) {\n            path = path2curve(path);\n            var x, y, p, l, sp = \"\", subpaths = {}, point,\n                len = 0;\n            for (var i = 0, ii = path.length; i < ii; i++) {\n                p = path[i];\n                if (p[0] == \"M\") {\n                    x = +p[1];\n                    y = +p[2];\n                } else {\n                    l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n                    if (len + l > length) {\n                        if (subpath && !subpaths.start) {\n                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n                            sp += [\"C\" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];\n                            if (onlystart) {return sp;}\n                            subpaths.start = sp;\n                            sp = [\"M\" + point.x, point.y + \"C\" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();\n                            len += l;\n                            x = +p[5];\n                            y = +p[6];\n                            continue;\n                        }\n                        if (!istotal && !subpath) {\n                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n                            return {x: point.x, y: point.y, alpha: point.alpha};\n                        }\n                    }\n                    len += l;\n                    x = +p[5];\n                    y = +p[6];\n                }\n                sp += p.shift() + p;\n            }\n            subpaths.end = sp;\n            point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);\n            point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});\n            return point;\n        };\n    };\n    var getTotalLength = getLengthFactory(1),\n        getPointAtLength = getLengthFactory(),\n        getSubpathsAtLength = getLengthFactory(0, 1);\n    \n    R.getTotalLength = getTotalLength;\n    \n    R.getPointAtLength = getPointAtLength;\n    \n    R.getSubpath = function (path, from, to) {\n        if (this.getTotalLength(path) - to < 1e-6) {\n            return getSubpathsAtLength(path, from).end;\n        }\n        var a = getSubpathsAtLength(path, to, 1);\n        return from ? getSubpathsAtLength(a, from).end : a;\n    };\n    \n    elproto.getTotalLength = function () {\n        if (this.type != \"path\") {return;}\n        if (this.node.getTotalLength) {\n            return this.node.getTotalLength();\n        }\n        return getTotalLength(this.attrs.path);\n    };\n    \n    elproto.getPointAtLength = function (length) {\n        if (this.type != \"path\") {return;}\n        return getPointAtLength(this.attrs.path, length);\n    };\n    \n    elproto.getSubpath = function (from, to) {\n        if (this.type != \"path\") {return;}\n        return R.getSubpath(this.attrs.path, from, to);\n    };\n    \n    var ef = R.easing_formulas = {\n        linear: function (n) {\n            return n;\n        },\n        \"<\": function (n) {\n            return pow(n, 1.7);\n        },\n        \">\": function (n) {\n            return pow(n, .48);\n        },\n        \"<>\": function (n) {\n            var q = .48 - n / 1.04,\n                Q = math.sqrt(.1734 + q * q),\n                x = Q - q,\n                X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),\n                y = -Q - q,\n                Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),\n                t = X + Y + .5;\n            return (1 - t) * 3 * t * t + t * t * t;\n        },\n        backIn: function (n) {\n            var s = 1.70158;\n            return n * n * ((s + 1) * n - s);\n        },\n        backOut: function (n) {\n            n = n - 1;\n            var s = 1.70158;\n            return n * n * ((s + 1) * n + s) + 1;\n        },\n        elastic: function (n) {\n            if (n == !!n) {\n                return n;\n            }\n            return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;\n        },\n        bounce: function (n) {\n            var s = 7.5625,\n                p = 2.75,\n                l;\n            if (n < (1 / p)) {\n                l = s * n * n;\n            } else {\n                if (n < (2 / p)) {\n                    n -= (1.5 / p);\n                    l = s * n * n + .75;\n                } else {\n                    if (n < (2.5 / p)) {\n                        n -= (2.25 / p);\n                        l = s * n * n + .9375;\n                    } else {\n                        n -= (2.625 / p);\n                        l = s * n * n + .984375;\n                    }\n                }\n            }\n            return l;\n        }\n    };\n    ef.easeIn = ef[\"ease-in\"] = ef[\"<\"];\n    ef.easeOut = ef[\"ease-out\"] = ef[\">\"];\n    ef.easeInOut = ef[\"ease-in-out\"] = ef[\"<>\"];\n    ef[\"back-in\"] = ef.backIn;\n    ef[\"back-out\"] = ef.backOut;\n\n    var animationElements = [],\n        requestAnimFrame = window.requestAnimationFrame       ||\n                           window.webkitRequestAnimationFrame ||\n                           window.mozRequestAnimationFrame    ||\n                           window.oRequestAnimationFrame      ||\n                           window.msRequestAnimationFrame     ||\n                           function (callback) {\n                               setTimeout(callback, 16);\n                           },\n        animation = function () {\n            var Now = +new Date,\n                l = 0;\n            for (; l < animationElements.length; l++) {\n                var e = animationElements[l];\n                if (e.el.removed || e.paused) {\n                    continue;\n                }\n                var time = Now - e.start,\n                    ms = e.ms,\n                    easing = e.easing,\n                    from = e.from,\n                    diff = e.diff,\n                    to = e.to,\n                    t = e.t,\n                    that = e.el,\n                    set = {},\n                    now,\n                    init = {},\n                    key;\n                if (e.initstatus) {\n                    time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;\n                    e.status = e.initstatus;\n                    delete e.initstatus;\n                    e.stop && animationElements.splice(l--, 1);\n                } else {\n                    e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;\n                }\n                if (time < 0) {\n                    continue;\n                }\n                if (time < ms) {\n                    var pos = easing(time / ms);\n                    for (var attr in from) if (from[has](attr)) {\n                        switch (availableAnimAttrs[attr]) {\n                            case nu:\n                                now = +from[attr] + pos * ms * diff[attr];\n                                break;\n                            case \"colour\":\n                                now = \"rgb(\" + [\n                                    upto255(round(from[attr].r + pos * ms * diff[attr].r)),\n                                    upto255(round(from[attr].g + pos * ms * diff[attr].g)),\n                                    upto255(round(from[attr].b + pos * ms * diff[attr].b))\n                                ].join(\",\") + \")\";\n                                break;\n                            case \"path\":\n                                now = [];\n                                for (var i = 0, ii = from[attr].length; i < ii; i++) {\n                                    now[i] = [from[attr][i][0]];\n                                    for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n                                        now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];\n                                    }\n                                    now[i] = now[i].join(S);\n                                }\n                                now = now.join(S);\n                                break;\n                            case \"transform\":\n                                if (diff[attr].real) {\n                                    now = [];\n                                    for (i = 0, ii = from[attr].length; i < ii; i++) {\n                                        now[i] = [from[attr][i][0]];\n                                        for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n                                            now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];\n                                        }\n                                    }\n                                } else {\n                                    var get = function (i) {\n                                        return +from[attr][i] + pos * ms * diff[attr][i];\n                                    };\n                                    // now = [[\"r\", get(2), 0, 0], [\"t\", get(3), get(4)], [\"s\", get(0), get(1), 0, 0]];\n                                    now = [[\"m\", get(0), get(1), get(2), get(3), get(4), get(5)]];\n                                }\n                                break;\n                            case \"csv\":\n                                if (attr == \"clip-rect\") {\n                                    now = [];\n                                    i = 4;\n                                    while (i--) {\n                                        now[i] = +from[attr][i] + pos * ms * diff[attr][i];\n                                    }\n                                }\n                                break;\n                            default:\n                                var from2 = [][concat](from[attr]);\n                                now = [];\n                                i = that.paper.customAttributes[attr].length;\n                                while (i--) {\n                                    now[i] = +from2[i] + pos * ms * diff[attr][i];\n                                }\n                                break;\n                        }\n                        set[attr] = now;\n                    }\n                    that.attr(set);\n                    (function (id, that, anim) {\n                        setTimeout(function () {\n                            eve(\"anim.frame.\" + id, that, anim);\n                        });\n                    })(that.id, that, e.anim);\n                } else {\n                    (function(f, el, a) {\n                        setTimeout(function() {\n                            eve(\"anim.frame.\" + el.id, el, a);\n                            eve(\"anim.finish.\" + el.id, el, a);\n                            R.is(f, \"function\") && f.call(el);\n                        });\n                    })(e.callback, that, e.anim);\n                    that.attr(to);\n                    animationElements.splice(l--, 1);\n                    if (e.repeat > 1 && !e.next) {\n                        for (key in to) if (to[has](key)) {\n                            init[key] = e.totalOrigin[key];\n                        }\n                        e.el.attr(init);\n                        runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);\n                    }\n                    if (e.next && !e.stop) {\n                        runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);\n                    }\n                }\n            }\n            R.svg && that && that.paper && that.paper.safari();\n            animationElements.length && requestAnimFrame(animation);\n        },\n        upto255 = function (color) {\n            return color > 255 ? 255 : color < 0 ? 0 : color;\n        };\n    \n    elproto.animateWith = function (element, anim, params, ms, easing, callback) {\n        var a = params ? R.animation(params, ms, easing, callback) : anim,\n            status = element.status(anim);\n        return this.animate(a).status(a, status * anim.ms / a.ms);\n    };\n    function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {\n        var cx = 3 * p1x,\n            bx = 3 * (p2x - p1x) - cx,\n            ax = 1 - cx - bx,\n            cy = 3 * p1y,\n            by = 3 * (p2y - p1y) - cy,\n            ay = 1 - cy - by;\n        function sampleCurveX(t) {\n            return ((ax * t + bx) * t + cx) * t;\n        }\n        function solve(x, epsilon) {\n            var t = solveCurveX(x, epsilon);\n            return ((ay * t + by) * t + cy) * t;\n        }\n        function solveCurveX(x, epsilon) {\n            var t0, t1, t2, x2, d2, i;\n            for(t2 = x, i = 0; i < 8; i++) {\n                x2 = sampleCurveX(t2) - x;\n                if (abs(x2) < epsilon) {\n                    return t2;\n                }\n                d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;\n                if (abs(d2) < 1e-6) {\n                    break;\n                }\n                t2 = t2 - x2 / d2;\n            }\n            t0 = 0;\n            t1 = 1;\n            t2 = x;\n            if (t2 < t0) {\n                return t0;\n            }\n            if (t2 > t1) {\n                return t1;\n            }\n            while (t0 < t1) {\n                x2 = sampleCurveX(t2);\n                if (abs(x2 - x) < epsilon) {\n                    return t2;\n                }\n                if (x > x2) {\n                    t0 = t2;\n                } else {\n                    t1 = t2;\n                }\n                t2 = (t1 - t0) / 2 + t0;\n            }\n            return t2;\n        }\n        return solve(t, 1 / (200 * duration));\n    }\n    elproto.onAnimation = function (f) {\n        f ? eve.on(\"anim.frame.\" + this.id, f) : eve.unbind(\"anim.frame.\" + this.id);\n        return this;\n    };\n    function Animation(anim, ms) {\n        var percents = [],\n            newAnim = {};\n        this.ms = ms;\n        this.times = 1;\n        if (anim) {\n            for (var attr in anim) if (anim[has](attr)) {\n                newAnim[toFloat(attr)] = anim[attr];\n                percents.push(toFloat(attr));\n            }\n            percents.sort(sortByNumber);\n        }\n        this.anim = newAnim;\n        this.top = percents[percents.length - 1];\n        this.percents = percents;\n    }\n    \n    Animation.prototype.delay = function (delay) {\n        var a = new Animation(this.anim, this.ms);\n        a.times = this.times;\n        a.del = +delay || 0;\n        return a;\n    };\n    \n    Animation.prototype.repeat = function (times) { \n        var a = new Animation(this.anim, this.ms);\n        a.del = this.del;\n        a.times = math.floor(mmax(times, 0)) || 1;\n        return a;\n    };\n    function runAnimation(anim, element, percent, status, totalOrigin, times) {\n        percent = toFloat(percent);\n        var params,\n            isInAnim,\n            isInAnimSet,\n            percents = [],\n            next,\n            prev,\n            timestamp,\n            ms = anim.ms,\n            from = {},\n            to = {},\n            diff = {};\n        if (status) {\n            for (i = 0, ii = animationElements.length; i < ii; i++) {\n                var e = animationElements[i];\n                if (e.el.id == element.id && e.anim == anim) {\n                    if (e.percent != percent) {\n                        animationElements.splice(i, 1);\n                        isInAnimSet = 1;\n                    } else {\n                        isInAnim = e;\n                    }\n                    element.attr(e.totalOrigin);\n                    break;\n                }\n            }\n        } else {\n            status = +to; // NaN\n        }\n        for (var i = 0, ii = anim.percents.length; i < ii; i++) {\n            if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {\n                percent = anim.percents[i];\n                prev = anim.percents[i - 1] || 0;\n                ms = ms / anim.top * (percent - prev);\n                next = anim.percents[i + 1];\n                params = anim.anim[percent];\n                break;\n            } else if (status) {\n                element.attr(anim.anim[anim.percents[i]]);\n            }\n        }\n        if (!params) {\n            return;\n        }\n        if (!isInAnim) {\n            for (var attr in params) if (params[has](attr)) {\n                if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {\n                    from[attr] = element.attr(attr);\n                    (from[attr] == null) && (from[attr] = availableAttrs[attr]);\n                    to[attr] = params[attr];\n                    switch (availableAnimAttrs[attr]) {\n                        case nu:\n                            diff[attr] = (to[attr] - from[attr]) / ms;\n                            break;\n                        case \"colour\":\n                            from[attr] = R.getRGB(from[attr]);\n                            var toColour = R.getRGB(to[attr]);\n                            diff[attr] = {\n                                r: (toColour.r - from[attr].r) / ms,\n                                g: (toColour.g - from[attr].g) / ms,\n                                b: (toColour.b - from[attr].b) / ms\n                            };\n                            break;\n                        case \"path\":\n                            var pathes = path2curve(from[attr], to[attr]),\n                                toPath = pathes[1];\n                            from[attr] = pathes[0];\n                            diff[attr] = [];\n                            for (i = 0, ii = from[attr].length; i < ii; i++) {\n                                diff[attr][i] = [0];\n                                for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n                                    diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;\n                                }\n                            }\n                            break;\n                        case \"transform\":\n                            var _ = element._,\n                                eq = equaliseTransform(_[attr], to[attr]);\n                            if (eq) {\n                                from[attr] = eq.from;\n                                to[attr] = eq.to;\n                                diff[attr] = [];\n                                diff[attr].real = true;\n                                for (i = 0, ii = from[attr].length; i < ii; i++) {\n                                    diff[attr][i] = [from[attr][i][0]];\n                                    for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n                                        diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;\n                                    }\n                                }\n                            } else {\n                                var m = (element.matrix || new Matrix),\n                                    to2 = {\n                                        _: {transform: _.transform},\n                                        getBBox: function () {\n                                            return element.getBBox(1);\n                                        }\n                                    };\n                                from[attr] = [\n                                    m.a,\n                                    m.b,\n                                    m.c,\n                                    m.d,\n                                    m.e,\n                                    m.f\n                                ];\n                                extractTransform(to2, to[attr]);\n                                to[attr] = to2._.transform;\n                                diff[attr] = [\n                                    (to2.matrix.a - m.a) / ms,\n                                    (to2.matrix.b - m.b) / ms,\n                                    (to2.matrix.c - m.c) / ms,\n                                    (to2.matrix.d - m.d) / ms,\n                                    (to2.matrix.e - m.e) / ms,\n                                    (to2.matrix.e - m.f) / ms\n                                ];\n                                // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];\n                                // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};\n                                // extractTransform(to2, to[attr]);\n                                // diff[attr] = [\n                                //     (to2._.sx - _.sx) / ms,\n                                //     (to2._.sy - _.sy) / ms,\n                                //     (to2._.deg - _.deg) / ms,\n                                //     (to2._.dx - _.dx) / ms,\n                                //     (to2._.dy - _.dy) / ms\n                                // ];\n                            }\n                            break;\n                        case \"csv\":\n                            var values = Str(params[attr])[split](separator),\n                                from2 = Str(from[attr])[split](separator);\n                            if (attr == \"clip-rect\") {\n                                from[attr] = from2;\n                                diff[attr] = [];\n                                i = from2.length;\n                                while (i--) {\n                                    diff[attr][i] = (values[i] - from[attr][i]) / ms;\n                                }\n                            }\n                            to[attr] = values;\n                            break;\n                        default:\n                            values = [][concat](params[attr]);\n                            from2 = [][concat](from[attr]);\n                            diff[attr] = [];\n                            i = element.paper.customAttributes[attr].length;\n                            while (i--) {\n                                diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;\n                            }\n                            break;\n                    }\n                }\n            }\n            var easing = params.easing,\n                easyeasy = R.easing_formulas[easing];\n            if (!easyeasy) {\n                easyeasy = Str(easing).match(bezierrg);\n                if (easyeasy && easyeasy.length == 5) {\n                    var curve = easyeasy;\n                    easyeasy = function (t) {\n                        return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);\n                    };\n                } else {\n                    easyeasy = pipe;\n                }\n            }\n            timestamp = params.start || anim.start || +new Date;\n            e = {\n                anim: anim,\n                percent: percent,\n                timestamp: timestamp,\n                start: timestamp + (anim.del || 0),\n                status: 0,\n                initstatus: status || 0,\n                stop: false,\n                ms: ms,\n                easing: easyeasy,\n                from: from,\n                diff: diff,\n                to: to,\n                el: element,\n                callback: params.callback,\n                prev: prev,\n                next: next,\n                repeat: times || anim.times,\n                origin: element.attr(),\n                totalOrigin: totalOrigin\n            };\n            animationElements.push(e);\n            if (status && !isInAnim && !isInAnimSet) {\n                e.stop = true;\n                e.start = new Date - ms * status;\n                if (animationElements.length == 1) {\n                    return animation();\n                }\n            }\n            if (isInAnimSet) {\n                e.start = new Date - e.ms * status;\n            }\n            animationElements.length == 1 && requestAnimFrame(animation);\n        } else {\n            isInAnim.initstatus = status;\n            isInAnim.start = new Date - isInAnim.ms * status;\n        }\n        eve(\"anim.start.\" + element.id, element, anim);\n    }\n    \n    R.animation = function (params, ms, easing, callback) {\n        if (params instanceof Animation) {\n            return params;\n        }\n        if (R.is(easing, \"function\") || !easing) {\n            callback = callback || easing || null;\n            easing = null;\n        }\n        params = Object(params);\n        ms = +ms || 0;\n        var p = {},\n            json,\n            attr;\n        for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + \"%\" != attr) {\n            json = true;\n            p[attr] = params[attr];\n        }\n        if (!json) {\n            return new Animation(params, ms);\n        } else {\n            easing && (p.easing = easing);\n            callback && (p.callback = callback);\n            return new Animation({100: p}, ms);\n        }\n    };\n    \n    elproto.animate = function (params, ms, easing, callback) {\n        var element = this;\n        if (element.removed) {\n            callback && callback.call(element);\n            return element;\n        }\n        var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);\n        runAnimation(anim, element, anim.percents[0], null, element.attr());\n        return element;\n    };\n    \n    elproto.setTime = function (anim, value) {\n        if (anim && value != null) {\n            this.status(anim, mmin(value, anim.ms) / anim.ms);\n        }\n        return this;\n    };\n    \n    elproto.status = function (anim, value) {\n        var out = [],\n            i = 0,\n            len,\n            e;\n        if (value != null) {\n            runAnimation(anim, this, -1, mmin(value, 1));\n            return this;\n        } else {\n            len = animationElements.length;\n            for (; i < len; i++) {\n                e = animationElements[i];\n                if (e.el.id == this.id && (!anim || e.anim == anim)) {\n                    if (anim) {\n                        return e.status;\n                    }\n                    out.push({\n                        anim: e.anim,\n                        status: e.status\n                    });\n                }\n            }\n            if (anim) {\n                return 0;\n            }\n            return out;\n        }\n    };\n    \n    elproto.pause = function (anim) {\n        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n            if (eve(\"anim.pause.\" + this.id, this, animationElements[i].anim) !== false) {\n                animationElements[i].paused = true;\n            }\n        }\n        return this;\n    };\n    \n    elproto.resume = function (anim) {\n        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n            var e = animationElements[i];\n            if (eve(\"anim.resume.\" + this.id, this, e.anim) !== false) {\n                delete e.paused;\n                this.status(e.anim, e.status);\n            }\n        }\n        return this;\n    };\n    \n    elproto.stop = function (anim) {\n        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n            if (eve(\"anim.stop.\" + this.id, this, animationElements[i].anim) !== false) {\n                animationElements.splice(i--, 1);\n            }\n        }\n        return this;\n    };\n    elproto.toString = function () {\n        return \"Rapha\\xebl\\u2019s object\";\n    };\n\n    // Set\n    var Set = function (items) {\n        this.items = [];\n        this.length = 0;\n        this.type = \"set\";\n        if (items) {\n            for (var i = 0, ii = items.length; i < ii; i++) {\n                if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {\n                    this[this.items.length] = this.items[this.items.length] = items[i];\n                    this.length++;\n                }\n            }\n        }\n    },\n    setproto = Set.prototype;\n    \n    setproto.push = function () {\n        var item,\n            len;\n        for (var i = 0, ii = arguments.length; i < ii; i++) {\n            item = arguments[i];\n            if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {\n                len = this.items.length;\n                this[len] = this.items[len] = item;\n                this.length++;\n            }\n        }\n        return this;\n    };\n    \n    setproto.pop = function () {\n        this.length && delete this[this.length--];\n        return this.items.pop();\n    };\n    \n    setproto.forEach = function (callback, thisArg) {\n        for (var i = 0, ii = this.items.length; i < ii; i++) {\n            if (callback.call(thisArg, this.items[i], i) === false) {\n                return this;\n            }\n        }\n        return this;\n    };\n    for (var method in elproto) if (elproto[has](method)) {\n        setproto[method] = (function (methodname) {\n            return function () {\n                var arg = arguments;\n                return this.forEach(function (el) {\n                    el[methodname][apply](el, arg);\n                });\n            };\n        })(method);\n    }\n    setproto.attr = function (name, value) {\n        if (name && R.is(name, array) && R.is(name[0], \"object\")) {\n            for (var j = 0, jj = name.length; j < jj; j++) {\n                this.items[j].attr(name[j]);\n            }\n        } else {\n            for (var i = 0, ii = this.items.length; i < ii; i++) {\n                this.items[i].attr(name, value);\n            }\n        }\n        return this;\n    };\n    \n    setproto.clear = function () {\n        while (this.length) {\n            this.pop();\n        }\n    };\n    \n    setproto.splice = function (index, count, insertion) {\n        index = index < 0 ? mmax(this.length + index, 0) : index;\n        count = mmax(0, mmin(this.length - index, count));\n        var tail = [],\n            todel = [],\n            args = [],\n            i;\n        for (i = 2; i < arguments.length; i++) {\n            args.push(arguments[i]);\n        }\n        for (i = 0; i < count; i++) {\n            todel.push(this[index + i]);\n        }\n        for (; i < this.length - index; i++) {\n            tail.push(this[index + i]);\n        }\n        var arglen = args.length;\n        for (i = 0; i < arglen + tail.length; i++) {\n            this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];\n        }\n        i = this.items.length = this.length -= count - arglen;\n        while (this[i]) {\n            delete this[i++];\n        }\n        return new Set(todel);\n    };\n    \n    setproto.exclude = function (el) {\n        for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {\n            this.splice(i, 1);\n            return true;\n        }\n    };\n    setproto.animate = function (params, ms, easing, callback) {\n        (R.is(easing, \"function\") || !easing) && (callback = easing || null);\n        var len = this.items.length,\n            i = len,\n            item,\n            set = this,\n            collector;\n        if (!len) {\n            return this;\n        }\n        callback && (collector = function () {\n            !--len && callback.call(set);\n        });\n        easing = R.is(easing, string) ? easing : collector;\n        var anim = R.animation(params, ms, easing, collector);\n        item = this.items[--i].animate(anim);\n        while (i--) {\n            this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim);\n        }\n        return this;\n    };\n    setproto.insertAfter = function (el) {\n        var i = this.items.length;\n        while (i--) {\n            this.items[i].insertAfter(el);\n        }\n        return this;\n    };\n    setproto.getBBox = function () {\n        var x = [],\n            y = [],\n            w = [],\n            h = [];\n        for (var i = this.items.length; i--;) if (!this.items[i].removed) {\n            var box = this.items[i].getBBox();\n            x.push(box.x);\n            y.push(box.y);\n            w.push(box.x + box.width);\n            h.push(box.y + box.height);\n        }\n        x = mmin[apply](0, x);\n        y = mmin[apply](0, y);\n        return {\n            x: x,\n            y: y,\n            width: mmax[apply](0, w) - x,\n            height: mmax[apply](0, h) - y\n        };\n    };\n    setproto.clone = function (s) {\n        s = new Set;\n        for (var i = 0, ii = this.items.length; i < ii; i++) {\n            s.push(this.items[i].clone());\n        }\n        return s;\n    };\n    setproto.toString = function () {\n        return \"Rapha\\xebl\\u2018s set\";\n    };\n\n    \n    R.registerFont = function (font) {\n        if (!font.face) {\n            return font;\n        }\n        this.fonts = this.fonts || {};\n        var fontcopy = {\n                w: font.w,\n                face: {},\n                glyphs: {}\n            },\n            family = font.face[\"font-family\"];\n        for (var prop in font.face) if (font.face[has](prop)) {\n            fontcopy.face[prop] = font.face[prop];\n        }\n        if (this.fonts[family]) {\n            this.fonts[family].push(fontcopy);\n        } else {\n            this.fonts[family] = [fontcopy];\n        }\n        if (!font.svg) {\n            fontcopy.face[\"units-per-em\"] = toInt(font.face[\"units-per-em\"], 10);\n            for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {\n                var path = font.glyphs[glyph];\n                fontcopy.glyphs[glyph] = {\n                    w: path.w,\n                    k: {},\n                    d: path.d && \"M\" + path.d.replace(/[mlcxtrv]/g, function (command) {\n                            return {l: \"L\", c: \"C\", x: \"z\", t: \"m\", r: \"l\", v: \"c\"}[command] || \"M\";\n                        }) + \"z\"\n                };\n                if (path.k) {\n                    for (var k in path.k) if (path[has](k)) {\n                        fontcopy.glyphs[glyph].k[k] = path.k[k];\n                    }\n                }\n            }\n        }\n        return font;\n    };\n    \n    paperproto.getFont = function (family, weight, style, stretch) {\n        stretch = stretch || \"normal\";\n        style = style || \"normal\";\n        weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;\n        if (!R.fonts) {\n            return;\n        }\n        var font = R.fonts[family];\n        if (!font) {\n            var name = new RegExp(\"(^|\\\\s)\" + family.replace(/[^\\w\\d\\s+!~.:_-]/g, E) + \"(\\\\s|$)\", \"i\");\n            for (var fontName in R.fonts) if (R.fonts[has](fontName)) {\n                if (name.test(fontName)) {\n                    font = R.fonts[fontName];\n                    break;\n                }\n            }\n        }\n        var thefont;\n        if (font) {\n            for (var i = 0, ii = font.length; i < ii; i++) {\n                thefont = font[i];\n                if (thefont.face[\"font-weight\"] == weight && (thefont.face[\"font-style\"] == style || !thefont.face[\"font-style\"]) && thefont.face[\"font-stretch\"] == stretch) {\n                    break;\n                }\n            }\n        }\n        return thefont;\n    };\n    \n    paperproto.print = function (x, y, string, font, size, origin, letter_spacing) {\n        origin = origin || \"middle\"; // baseline|middle\n        letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);\n        var out = this.set(),\n            letters = Str(string)[split](E),\n            shift = 0,\n            path = E,\n            scale;\n        R.is(font, string) && (font = this.getFont(font));\n        if (font) {\n            scale = (size || 16) / font.face[\"units-per-em\"];\n            var bb = font.face.bbox[split](separator),\n                top = +bb[0],\n                height = +bb[1] + (origin == \"baseline\" ? bb[3] - bb[1] + (+font.face.descent) : (bb[3] - bb[1]) / 2);\n            for (var i = 0, ii = letters.length; i < ii; i++) {\n                var prev = i && font.glyphs[letters[i - 1]] || {},\n                    curr = font.glyphs[letters[i]];\n                shift += i ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;\n                curr && curr.d && out.push(this.path(curr.d).attr({\n                    fill: \"#000\",\n                    stroke: \"none\",\n                    transform: [[\"t\", shift * scale, 0]]\n                }));\n            }\n            out.transform([\"...s\", scale, scale, top, height, \"t\", (x - top) / scale, (y - height) / scale]);\n        }\n        return out;\n    };\n\n    \n    paperproto.add = function (json) {\n        if (R.is(json, \"array\")) {\n            var res = this.set(),\n                i = 0,\n                ii = json.length,\n                j;\n            for (; i < ii; i++) {\n                j = json[i] || {};\n                elements[has](j.type) && res.push(this[j.type]().attr(j));\n            }\n        }\n        return res;\n    };\n\n    \n    R.format = function (token, params) {\n        var args = R.is(params, array) ? [0][concat](params) : arguments;\n        token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {\n            return args[++i] == null ? E : args[i];\n        }));\n        return token || E;\n    };\n    \n    R.fullfill = (function () {\n        var tokenRegex = /\\{([^\\}]+)\\}/g,\n            objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, // matches .xxxxx or [\"xxxxx\"] to run over object properties\n            replacer = function (all, key, obj) {\n                var res = obj;\n                key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {\n                    name = name || quotedName;\n                    if (res) {\n                        if (name in res) {\n                            res = res[name];\n                        }\n                        typeof res == \"function\" && isFunc && (res = res());\n                    }\n                });\n                res = (res == null || res == obj ? all : res) + \"\";\n                return res;\n            };\n        return function (str, obj) {\n            return String(str).replace(tokenRegex, function (all, key) {\n                return replacer(all, key, obj);\n            });\n        };\n    })();\n    \n    R.ninja = function () {\n        oldRaphael.was ? (g.win.Raphael = oldRaphael.is) : delete Raphael;\n        return R;\n    };\n    \n    R.st = setproto;\n    // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html\n    (function (doc, loaded, f) {\n        if (doc.readyState == null && doc.addEventListener){\n            doc.addEventListener(loaded, f = function () {\n                doc.removeEventListener(loaded, f, false);\n                doc.readyState = \"complete\";\n            }, false);\n            doc.readyState = \"loading\";\n        }\n        function isLoaded() {\n            (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve(\"DOMload\");\n        }\n        isLoaded();\n    })(document, \"DOMContentLoaded\");\n\n    oldRaphael.was ? (g.win.Raphael = R) : (Raphael = R);\n    \n    eve.on(\"DOMload\", function () {\n        loaded = true;\n    });\n})();\n\n\n// ┌─────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël - JavaScript Vector Library                                 │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ SVG Module                                                          │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\\\\n// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\\\\n// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\\\\n// └─────────────────────────────────────────────────────────────────────┘ \\\\\nwindow.Raphael.svg && function (R) {\n    var has = \"hasOwnProperty\",\n        Str = String,\n        toFloat = parseFloat,\n        toInt = parseInt,\n        math = Math,\n        mmax = math.max,\n        abs = math.abs,\n        pow = math.pow,\n        separator = /[, ]+/,\n        eve = R.eve,\n        E = \"\",\n        S = \" \";\n    var xlink = \"http://www.w3.org/1999/xlink\",\n        markers = {\n            block: \"M5,0 0,2.5 5,5z\",\n            classic: \"M5,0 0,2.5 5,5 3.5,3 3.5,2z\",\n            diamond: \"M2.5,0 5,2.5 2.5,5 0,2.5z\",\n            open: \"M6,1 1,3.5 6,6\",\n            oval: \"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z\"\n        },\n        markerCounter = {};\n    R.toString = function () {\n        return  \"Your browser supports SVG.\\nYou are running Rapha\\xebl \" + this.version;\n    };\n    var $ = function (el, attr) {\n        if (attr) {\n            if (typeof el == \"string\") {\n                el = $(el);\n            }\n            for (var key in attr) if (attr[has](key)) {\n                if (key.substring(0, 6) == \"xlink:\") {\n                    el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));\n                } else {\n                    el.setAttribute(key, Str(attr[key]));\n                }\n            }\n        } else {\n            el = R._g.doc.createElementNS(\"http://www.w3.org/2000/svg\", el);\n            el.style && (el.style.webkitTapHighlightColor = \"rgba(0,0,0,0)\");\n        }\n        return el;\n    },\n    addGradientFill = function (element, gradient) {\n        var type = \"linear\",\n            id = element.id + gradient,\n            fx = .5, fy = .5,\n            o = element.node,\n            SVG = element.paper,\n            s = o.style,\n            el = R._g.doc.getElementById(id);\n        if (!el) {\n            gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {\n                type = \"radial\";\n                if (_fx && _fy) {\n                    fx = toFloat(_fx);\n                    fy = toFloat(_fy);\n                    var dir = ((fy > .5) * 2 - 1);\n                    pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&\n                        (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&\n                        fy != .5 &&\n                        (fy = fy.toFixed(5) - 1e-5 * dir);\n                }\n                return E;\n            });\n            gradient = gradient.split(/\\s*\\-\\s*/);\n            if (type == \"linear\") {\n                var angle = gradient.shift();\n                angle = -toFloat(angle);\n                if (isNaN(angle)) {\n                    return null;\n                }\n                var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],\n                    max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);\n                vector[2] *= max;\n                vector[3] *= max;\n                if (vector[2] < 0) {\n                    vector[0] = -vector[2];\n                    vector[2] = 0;\n                }\n                if (vector[3] < 0) {\n                    vector[1] = -vector[3];\n                    vector[3] = 0;\n                }\n            }\n            var dots = R._parseDots(gradient);\n            if (!dots) {\n                return null;\n            }\n            id = id.replace(/[\\(\\)\\s,\\xb0#]/g, \"_\");\n            \n            if (element.gradient && id != element.gradient.id) {\n                SVG.defs.removeChild(element.gradient);\n                delete element.gradient;\n            }\n\n            if (!element.gradient) {\n                el = $(type + \"Gradient\", {id: id});\n                element.gradient = el;\n                $(el, type == \"radial\" ? {\n                    fx: fx,\n                    fy: fy\n                } : {\n                    x1: vector[0],\n                    y1: vector[1],\n                    x2: vector[2],\n                    y2: vector[3],\n                    gradientTransform: element.matrix.invert()\n                });\n                SVG.defs.appendChild(el);\n                for (var i = 0, ii = dots.length; i < ii; i++) {\n                    el.appendChild($(\"stop\", {\n                        offset: dots[i].offset ? dots[i].offset : i ? \"100%\" : \"0%\",\n                        \"stop-color\": dots[i].color || \"#fff\"\n                    }));\n                }\n            }\n        }\n        $(o, {\n            fill: \"url(#\" + id + \")\",\n            opacity: 1,\n            \"fill-opacity\": 1\n        });\n        s.fill = E;\n        s.opacity = 1;\n        s.fillOpacity = 1;\n        return 1;\n    },\n    updatePosition = function (o) {\n        var bbox = o.getBBox(1);\n        $(o.pattern, {patternTransform: o.matrix.invert() + \" translate(\" + bbox.x + \",\" + bbox.y + \")\"});\n    },\n    addArrow = function (o, value, isEnd) {\n        if (o.type == \"path\") {\n            var values = Str(value).toLowerCase().split(\"-\"),\n                p = o.paper,\n                se = isEnd ? \"end\" : \"start\",\n                node = o.node,\n                attrs = o.attrs,\n                stroke = attrs[\"stroke-width\"],\n                i = values.length,\n                type = \"classic\",\n                from,\n                to,\n                dx,\n                refX,\n                attr,\n                w = 3,\n                h = 3,\n                t = 5;\n            while (i--) {\n                switch (values[i]) {\n                    case \"block\":\n                    case \"classic\":\n                    case \"oval\":\n                    case \"diamond\":\n                    case \"open\":\n                    case \"none\":\n                        type = values[i];\n                        break;\n                    case \"wide\": h = 5; break;\n                    case \"narrow\": h = 2; break;\n                    case \"long\": w = 5; break;\n                    case \"short\": w = 2; break;\n                }\n            }\n            if (type == \"open\") {\n                w += 2;\n                h += 2;\n                t += 2;\n                dx = 1;\n                refX = isEnd ? 4 : 1;\n                attr = {\n                    fill: \"none\",\n                    stroke: attrs.stroke\n                };\n            } else {\n                refX = dx = w / 2;\n                attr = {\n                    fill: attrs.stroke,\n                    stroke: \"none\"\n                };\n            }\n            if (o._.arrows) {\n                if (isEnd) {\n                    o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;\n                    o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;\n                } else {\n                    o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;\n                    o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;\n                }\n            } else {\n                o._.arrows = {};\n            }\n            if (type != \"none\") {\n                var pathId = \"raphael-marker-\" + type,\n                    markerId = \"raphael-marker-\" + se + type + w + h;\n                if (!R._g.doc.getElementById(pathId)) {\n                    p.defs.appendChild($($(\"path\"), {\n                        \"stroke-linecap\": \"round\",\n                        d: markers[type],\n                        id: pathId\n                    }));\n                    markerCounter[pathId] = 1;\n                } else {\n                    markerCounter[pathId]++;\n                }\n                var marker = R._g.doc.getElementById(markerId),\n                    use;\n                if (!marker) {\n                    marker = $($(\"marker\"), {\n                        id: markerId,\n                        markerHeight: h,\n                        markerWidth: w,\n                        orient: \"auto\",\n                        refX: refX,\n                        refY: h / 2\n                    });\n                    use = $($(\"use\"), {\n                        \"xlink:href\": \"#\" + pathId,\n                        transform: (isEnd ? \" rotate(180 \" + w / 2 + \" \" + h / 2 + \") \" : S) + \"scale(\" + w / t + \",\" + h / t + \")\",\n                        \"stroke-width\": 1 / ((w / t + h / t) / 2)\n                    });\n                    marker.appendChild(use);\n                    p.defs.appendChild(marker);\n                    markerCounter[markerId] = 1;\n                } else {\n                    markerCounter[markerId]++;\n                    use = marker.getElementsByTagName(\"use\")[0];\n                }\n                $(use, attr);\n                var delta = dx * (type != \"diamond\" && type != \"oval\");\n                if (isEnd) {\n                    from = o._.arrows.startdx * stroke || 0;\n                    to = R.getTotalLength(attrs.path) - delta * stroke;\n                } else {\n                    from = delta * stroke;\n                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n                }\n                attr = {};\n                attr[\"marker-\" + se] = \"url(#\" + markerId + \")\";\n                if (to || from) {\n                    attr.d = Raphael.getSubpath(attrs.path, from, to);\n                }\n                $(node, attr);\n                o._.arrows[se + \"Path\"] = pathId;\n                o._.arrows[se + \"Marker\"] = markerId;\n                o._.arrows[se + \"dx\"] = delta;\n                o._.arrows[se + \"Type\"] = type;\n                o._.arrows[se + \"String\"] = value;\n            } else {\n                if (isEnd) {\n                    from = o._.arrows.startdx * stroke || 0;\n                    to = R.getTotalLength(attrs.path) - from;\n                } else {\n                    from = 0;\n                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n                }\n                o._.arrows[se + \"Path\"] && $(node, {d: Raphael.getSubpath(attrs.path, from, to)});\n                delete o._.arrows[se + \"Path\"];\n                delete o._.arrows[se + \"Marker\"];\n                delete o._.arrows[se + \"dx\"];\n                delete o._.arrows[se + \"Type\"];\n                delete o._.arrows[se + \"String\"];\n            }\n            for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {\n                var item = R._g.doc.getElementById(attr);\n                item && item.parentNode.removeChild(item);\n            }\n        }\n    },\n    dasharray = {\n        \"\": [0],\n        \"none\": [0],\n        \"-\": [3, 1],\n        \".\": [1, 1],\n        \"-.\": [3, 1, 1, 1],\n        \"-..\": [3, 1, 1, 1, 1, 1],\n        \". \": [1, 3],\n        \"- \": [4, 3],\n        \"--\": [8, 3],\n        \"- .\": [4, 3, 1, 3],\n        \"--.\": [8, 3, 1, 3],\n        \"--..\": [8, 3, 1, 3, 1, 3]\n    },\n    addDashes = function (o, value, params) {\n        value = dasharray[Str(value).toLowerCase()];\n        if (value) {\n            var width = o.attrs[\"stroke-width\"] || \"1\",\n                butt = {round: width, square: width, butt: 0}[o.attrs[\"stroke-linecap\"] || params[\"stroke-linecap\"]] || 0,\n                dashes = [],\n                i = value.length;\n            while (i--) {\n                dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;\n            }\n            $(o.node, {\"stroke-dasharray\": dashes.join(\",\")});\n        }\n    },\n    setFillAndStroke = function (o, params) {\n        var node = o.node,\n            attrs = o.attrs,\n            vis = node.style.visibility;\n        node.style.visibility = \"hidden\";\n        for (var att in params) {\n            if (params[has](att)) {\n                if (!R._availableAttrs[has](att)) {\n                    continue;\n                }\n                var value = params[att];\n                attrs[att] = value;\n                switch (att) {\n                    case \"blur\":\n                        o.blur(value);\n                        break;\n                    case \"href\":\n                    case \"title\":\n                    case \"target\":\n                        var pn = node.parentNode;\n                        if (pn.tagName.toLowerCase() != \"a\") {\n                            var hl = $(\"a\");\n                            pn.insertBefore(hl, node);\n                            hl.appendChild(node);\n                            pn = hl;\n                        }\n                        if (att == \"target\" && value == \"blank\") {\n                            pn.setAttributeNS(xlink, \"show\", \"new\");\n                        } else {\n                            pn.setAttributeNS(xlink, att, value);\n                        }\n                        break;\n                    case \"cursor\":\n                        node.style.cursor = value;\n                        break;\n                    case \"transform\":\n                        o.transform(value);\n                        break;\n                    case \"arrow-start\":\n                        addArrow(o, value);\n                        break;\n                    case \"arrow-end\":\n                        addArrow(o, value, 1);\n                        break;\n                    case \"clip-rect\":\n                        var rect = Str(value).split(separator);\n                        if (rect.length == 4) {\n                            o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);\n                            var el = $(\"clipPath\"),\n                                rc = $(\"rect\");\n                            el.id = R.createUUID();\n                            $(rc, {\n                                x: rect[0],\n                                y: rect[1],\n                                width: rect[2],\n                                height: rect[3]\n                            });\n                            el.appendChild(rc);\n                            o.paper.defs.appendChild(el);\n                            $(node, {\"clip-path\": \"url(#\" + el.id + \")\"});\n                            o.clip = rc;\n                        }\n                        if (!value) {\n                            var path = node.getAttribute(\"clip-path\");\n                            if (path) {\n                                var clip = R._g.doc.getElementById(path.replace(/(^url\\(#|\\)$)/g, E));\n                                clip && clip.parentNode.removeChild(clip);\n                                $(node, {\"clip-path\": E});\n                                delete o.clip;\n                            }\n                        }\n                    break;\n                    case \"path\":\n                        if (o.type == \"path\") {\n                            $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : \"M0,0\"});\n                            o._.dirty = 1;\n                            if (o._.arrows) {\n                                \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n                                \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n                            }\n                        }\n                        break;\n                    case \"width\":\n                        node.setAttribute(att, value);\n                        o._.dirty = 1;\n                        if (attrs.fx) {\n                            att = \"x\";\n                            value = attrs.x;\n                        } else {\n                            break;\n                        }\n                    case \"x\":\n                        if (attrs.fx) {\n                            value = -attrs.x - (attrs.width || 0);\n                        }\n                    case \"rx\":\n                        if (att == \"rx\" && o.type == \"rect\") {\n                            break;\n                        }\n                    case \"cx\":\n                        node.setAttribute(att, value);\n                        o.pattern && updatePosition(o);\n                        o._.dirty = 1;\n                        break;\n                    case \"height\":\n                        node.setAttribute(att, value);\n                        o._.dirty = 1;\n                        if (attrs.fy) {\n                            att = \"y\";\n                            value = attrs.y;\n                        } else {\n                            break;\n                        }\n                    case \"y\":\n                        if (attrs.fy) {\n                            value = -attrs.y - (attrs.height || 0);\n                        }\n                    case \"ry\":\n                        if (att == \"ry\" && o.type == \"rect\") {\n                            break;\n                        }\n                    case \"cy\":\n                        node.setAttribute(att, value);\n                        o.pattern && updatePosition(o);\n                        o._.dirty = 1;\n                        break;\n                    case \"r\":\n                        if (o.type == \"rect\") {\n                            $(node, {rx: value, ry: value});\n                        } else {\n                            node.setAttribute(att, value);\n                        }\n                        o._.dirty = 1;\n                        break;\n                    case \"src\":\n                        if (o.type == \"image\") {\n                            node.setAttributeNS(xlink, \"href\", value);\n                        }\n                        break;\n                    case \"stroke-width\":\n                        if (o._.sx != 1 || o._.sy != 1) {\n                            value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;\n                        }\n                        if (o.paper._vbSize) {\n                            value *= o.paper._vbSize;\n                        }\n                        node.setAttribute(att, value);\n                        if (attrs[\"stroke-dasharray\"]) {\n                            addDashes(o, attrs[\"stroke-dasharray\"], params);\n                        }\n                        if (o._.arrows) {\n                            \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n                            \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n                        }\n                        break;\n                    case \"stroke-dasharray\":\n                        addDashes(o, value, params);\n                        break;\n                    case \"fill\":\n                        var isURL = Str(value).match(R._ISURL);\n                        if (isURL) {\n                            el = $(\"pattern\");\n                            var ig = $(\"image\");\n                            el.id = R.createUUID();\n                            $(el, {x: 0, y: 0, patternUnits: \"userSpaceOnUse\", height: 1, width: 1});\n                            $(ig, {x: 0, y: 0, \"xlink:href\": isURL[1]});\n                            el.appendChild(ig);\n\n                            (function (el) {\n                                R._preload(isURL[1], function () {\n                                    var w = this.offsetWidth,\n                                        h = this.offsetHeight;\n                                    $(el, {width: w, height: h});\n                                    $(ig, {width: w, height: h});\n                                    o.paper.safari();\n                                });\n                            })(el);\n                            o.paper.defs.appendChild(el);\n                            node.style.fill = \"url(#\" + el.id + \")\";\n                            $(node, {fill: \"url(#\" + el.id + \")\"});\n                            o.pattern = el;\n                            o.pattern && updatePosition(o);\n                            break;\n                        }\n                        var clr = R.getRGB(value);\n                        if (!clr.error) {\n                            delete params.gradient;\n                            delete attrs.gradient;\n                            !R.is(attrs.opacity, \"undefined\") &&\n                                R.is(params.opacity, \"undefined\") &&\n                                $(node, {opacity: attrs.opacity});\n                            !R.is(attrs[\"fill-opacity\"], \"undefined\") &&\n                                R.is(params[\"fill-opacity\"], \"undefined\") &&\n                                $(node, {\"fill-opacity\": attrs[\"fill-opacity\"]});\n                        } else if ((o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value)) {\n                            if (\"opacity\" in attrs || \"fill-opacity\" in attrs) {\n                                var gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n                                if (gradient) {\n                                    var stops = gradient.getElementsByTagName(\"stop\");\n                                    $(stops[stops.length - 1], {\"stop-opacity\": (\"opacity\" in attrs ? attrs.opacity : 1) * (\"fill-opacity\" in attrs ? attrs[\"fill-opacity\"] : 1)});\n                                }\n                            }\n                            attrs.gradient = value;\n                            attrs.fill = \"none\";\n                            break;\n                        }\n                        clr[has](\"opacity\") && $(node, {\"fill-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n                    case \"stroke\":\n                        clr = R.getRGB(value);\n                        node.setAttribute(att, clr.hex);\n                        att == \"stroke\" && clr[has](\"opacity\") && $(node, {\"stroke-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n                        if (att == \"stroke\" && o._.arrows) {\n                            \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n                            \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n                        }\n                        break;\n                    case \"gradient\":\n                        (o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value);\n                        break;\n                    case \"opacity\":\n                        if (attrs.gradient && !attrs[has](\"stroke-opacity\")) {\n                            $(node, {\"stroke-opacity\": value > 1 ? value / 100 : value});\n                        }\n                        // fall\n                    case \"fill-opacity\":\n                        if (attrs.gradient) {\n                            gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n                            if (gradient) {\n                                stops = gradient.getElementsByTagName(\"stop\");\n                                $(stops[stops.length - 1], {\"stop-opacity\": value});\n                            }\n                            break;\n                        }\n                    default:\n                        att == \"font-size\" && (value = toInt(value, 10) + \"px\");\n                        var cssrule = att.replace(/(\\-.)/g, function (w) {\n                            return w.substring(1).toUpperCase();\n                        });\n                        node.style[cssrule] = value;\n                        o._.dirty = 1;\n                        node.setAttribute(att, value);\n                        break;\n                }\n            }\n        }\n\n        tuneText(o, params);\n        node.style.visibility = vis;\n    },\n    leading = 1.2,\n    tuneText = function (el, params) {\n        if (el.type != \"text\" || !(params[has](\"text\") || params[has](\"font\") || params[has](\"font-size\") || params[has](\"x\") || params[has](\"y\"))) {\n            return;\n        }\n        var a = el.attrs,\n            node = el.node,\n            fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue(\"font-size\"), 10) : 10;\n\n        if (params[has](\"text\")) {\n            a.text = params.text;\n            while (node.firstChild) {\n                node.removeChild(node.firstChild);\n            }\n            var texts = Str(params.text).split(\"\\n\"),\n                tspans = [],\n                tspan;\n            for (var i = 0, ii = texts.length; i < ii; i++) {\n                tspan = $(\"tspan\");\n                i && $(tspan, {dy: fontSize * leading, x: a.x});\n                tspan.appendChild(R._g.doc.createTextNode(texts[i]));\n                node.appendChild(tspan);\n                tspans[i] = tspan;\n            }\n        } else {\n            tspans = node.getElementsByTagName(\"tspan\");\n            for (i = 0, ii = tspans.length; i < ii; i++) if (i) {\n                $(tspans[i], {dy: fontSize * leading, x: a.x});\n            } else {\n                $(tspans[0], {dy: 0});\n            }\n        }\n        $(node, {x: a.x, y: a.y});\n        el._.dirty = 1;\n        var bb = el._getBBox(),\n            dif = a.y - (bb.y + bb.height / 2);\n        dif && R.is(dif, \"finite\") && $(tspans[0], {dy: dif});\n    },\n    Element = function (node, svg) {\n        var X = 0,\n            Y = 0;\n        \n        this[0] = this.node = node;\n        \n        node.raphael = true;\n        \n        this.id = R._oid++;\n        node.raphaelid = this.id;\n        this.matrix = R.matrix();\n        this.realPath = null;\n        \n        this.paper = svg;\n        this.attrs = this.attrs || {};\n        this._ = {\n            transform: [],\n            sx: 1,\n            sy: 1,\n            deg: 0,\n            dx: 0,\n            dy: 0,\n            dirty: 1\n        };\n        !svg.bottom && (svg.bottom = this);\n        \n        this.prev = svg.top;\n        svg.top && (svg.top.next = this);\n        svg.top = this;\n        \n        this.next = null;\n    },\n    elproto = R.el;\n\n    Element.prototype = elproto;\n    elproto.constructor = Element;\n\n    R._engine.path = function (pathString, SVG) {\n        var el = $(\"path\");\n        SVG.canvas && SVG.canvas.appendChild(el);\n        var p = new Element(el, SVG);\n        p.type = \"path\";\n        setFillAndStroke(p, {\n            fill: \"none\",\n            stroke: \"#000\",\n            path: pathString\n        });\n        return p;\n    };\n    \n    elproto.rotate = function (deg, cx, cy) {\n        if (this.removed) {\n            return this;\n        }\n        deg = Str(deg).split(separator);\n        if (deg.length - 1) {\n            cx = toFloat(deg[1]);\n            cy = toFloat(deg[2]);\n        }\n        deg = toFloat(deg[0]);\n        (cy == null) && (cx = cy);\n        if (cx == null || cy == null) {\n            var bbox = this.getBBox(1);\n            cx = bbox.x + bbox.width / 2;\n            cy = bbox.y + bbox.height / 2;\n        }\n        this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n        return this;\n    };\n    \n    elproto.scale = function (sx, sy, cx, cy) {\n        if (this.removed) {\n            return this;\n        }\n        sx = Str(sx).split(separator);\n        if (sx.length - 1) {\n            sy = toFloat(sx[1]);\n            cx = toFloat(sx[2]);\n            cy = toFloat(sx[3]);\n        }\n        sx = toFloat(sx[0]);\n        (sy == null) && (sy = sx);\n        (cy == null) && (cx = cy);\n        if (cx == null || cy == null) {\n            var bbox = this.getBBox(1);\n        }\n        cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n        cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n        this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n        return this;\n    };\n    \n    elproto.translate = function (dx, dy) {\n        if (this.removed) {\n            return this;\n        }\n        dx = Str(dx).split(separator);\n        if (dx.length - 1) {\n            dy = toFloat(dx[1]);\n        }\n        dx = toFloat(dx[0]) || 0;\n        dy = +dy || 0;\n        this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n        return this;\n    };\n    \n    elproto.transform = function (tstr) {\n        var _ = this._;\n        if (tstr == null) {\n            return _.transform;\n        }\n        R._extractTransform(this, tstr);\n\n        this.clip && $(this.clip, {transform: this.matrix.invert()});\n        this.pattern && updatePosition(this);\n        this.node && $(this.node, {transform: this.matrix});\n    \n        if (_.sx != 1 || _.sy != 1) {\n            var sw = this.attrs[has](\"stroke-width\") ? this.attrs[\"stroke-width\"] : 1;\n            this.attr({\"stroke-width\": sw});\n        }\n\n        return this;\n    };\n    \n    elproto.hide = function () {\n        !this.removed && this.paper.safari(this.node.style.display = \"none\");\n        return this;\n    };\n    \n    elproto.show = function () {\n        !this.removed && this.paper.safari(this.node.style.display = \"\");\n        return this;\n    };\n    \n    elproto.remove = function () {\n        if (this.removed) {\n            return;\n        }\n        var paper = this.paper;\n        paper.__set__ && paper.__set__.exclude(this);\n        eve.unbind(\"*.*.\" + this.id);\n        if (this.gradient) {\n            paper.defs.removeChild(this.gradient);\n        }\n        R._tear(this, paper);\n        this.node.parentNode.removeChild(this.node);\n        for (var i in this) {\n            this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n        }\n        this.removed = true;\n    };\n    elproto._getBBox = function () {\n        if (this.node.style.display == \"none\") {\n            this.show();\n            var hide = true;\n        }\n        var bbox = {};\n        try {\n            bbox = this.node.getBBox();\n        } catch(e) {\n            // Firefox 3.0.x plays badly here\n        } finally {\n            bbox = bbox || {};\n        }\n        hide && this.hide();\n        return bbox;\n    };\n    \n    elproto.attr = function (name, value) {\n        if (this.removed) {\n            return this;\n        }\n        if (name == null) {\n            var res = {};\n            for (var a in this.attrs) if (this.attrs[has](a)) {\n                res[a] = this.attrs[a];\n            }\n            res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n            res.transform = this._.transform;\n            return res;\n        }\n        if (value == null && R.is(name, \"string\")) {\n            if (name == \"fill\" && this.attrs.fill == \"none\" && this.attrs.gradient) {\n                return this.attrs.gradient;\n            }\n            if (name == \"transform\") {\n                return this._.transform;\n            }\n            var names = name.split(separator),\n                out = {};\n            for (var i = 0, ii = names.length; i < ii; i++) {\n                name = names[i];\n                if (name in this.attrs) {\n                    out[name] = this.attrs[name];\n                } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n                    out[name] = this.paper.customAttributes[name].def;\n                } else {\n                    out[name] = R._availableAttrs[name];\n                }\n            }\n            return ii - 1 ? out : out[names[0]];\n        }\n        if (value == null && R.is(name, \"array\")) {\n            out = {};\n            for (i = 0, ii = name.length; i < ii; i++) {\n                out[name[i]] = this.attr(name[i]);\n            }\n            return out;\n        }\n        if (value != null) {\n            var params = {};\n            params[name] = value;\n        } else if (name != null && R.is(name, \"object\")) {\n            params = name;\n        }\n        for (var key in params) {\n            eve(\"attr.\" + key + \".\" + this.id, this, params[key]);\n        }\n        for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n            var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n            this.attrs[key] = params[key];\n            for (var subkey in par) if (par[has](subkey)) {\n                params[subkey] = par[subkey];\n            }\n        }\n        setFillAndStroke(this, params);\n        return this;\n    };\n    \n    elproto.toFront = function () {\n        if (this.removed) {\n            return this;\n        }\n        if (this.node.parentNode.tagName.toLowerCase() == \"a\") {\n            this.node.parentNode.parentNode.appendChild(this.node.parentNode);\n        } else {\n            this.node.parentNode.appendChild(this.node);\n        }\n        var svg = this.paper;\n        svg.top != this && R._tofront(this, svg);\n        return this;\n    };\n    \n    elproto.toBack = function () {\n        if (this.removed) {\n            return this;\n        }\n        var parent = this.node.parentNode;\n        if (parent.tagName.toLowerCase() == \"a\") {\n            parent.parentNode.insertBefore(this.node.parentNode, this.node.parentNode.parentNode.firstChild); \n        } else if (parent.firstChild != this.node) {\n            parent.insertBefore(this.node, this.node.parentNode.firstChild);\n        }\n        R._toback(this, this.paper);\n        var svg = this.paper;\n        return this;\n    };\n    \n    elproto.insertAfter = function (element) {\n        if (this.removed) {\n            return this;\n        }\n        var node = element.node || element[element.length - 1].node;\n        if (node.nextSibling) {\n            node.parentNode.insertBefore(this.node, node.nextSibling);\n        } else {\n            node.parentNode.appendChild(this.node);\n        }\n        R._insertafter(this, element, this.paper);\n        return this;\n    };\n    \n    elproto.insertBefore = function (element) {\n        if (this.removed) {\n            return this;\n        }\n        var node = element.node || element[0].node;\n        node.parentNode.insertBefore(this.node, node);\n        R._insertbefore(this, element, this.paper);\n        return this;\n    };\n    elproto.blur = function (size) {\n        // Experimental. No Safari support. Use it on your own risk.\n        var t = this;\n        if (+size !== 0) {\n            var fltr = $(\"filter\"),\n                blur = $(\"feGaussianBlur\");\n            t.attrs.blur = size;\n            fltr.id = R.createUUID();\n            $(blur, {stdDeviation: +size || 1.5});\n            fltr.appendChild(blur);\n            t.paper.defs.appendChild(fltr);\n            t._blur = fltr;\n            $(t.node, {filter: \"url(#\" + fltr.id + \")\"});\n        } else {\n            if (t._blur) {\n                t._blur.parentNode.removeChild(t._blur);\n                delete t._blur;\n                delete t.attrs.blur;\n            }\n            t.node.removeAttribute(\"filter\");\n        }\n    };\n    R._engine.circle = function (svg, x, y, r) {\n        var el = $(\"circle\");\n        svg.canvas && svg.canvas.appendChild(el);\n        var res = new Element(el, svg);\n        res.attrs = {cx: x, cy: y, r: r, fill: \"none\", stroke: \"#000\"};\n        res.type = \"circle\";\n        $(el, res.attrs);\n        return res;\n    };\n    R._engine.rect = function (svg, x, y, w, h, r) {\n        var el = $(\"rect\");\n        svg.canvas && svg.canvas.appendChild(el);\n        var res = new Element(el, svg);\n        res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: \"none\", stroke: \"#000\"};\n        res.type = \"rect\";\n        $(el, res.attrs);\n        return res;\n    };\n    R._engine.ellipse = function (svg, x, y, rx, ry) {\n        var el = $(\"ellipse\");\n        svg.canvas && svg.canvas.appendChild(el);\n        var res = new Element(el, svg);\n        res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: \"none\", stroke: \"#000\"};\n        res.type = \"ellipse\";\n        $(el, res.attrs);\n        return res;\n    };\n    R._engine.image = function (svg, src, x, y, w, h) {\n        var el = $(\"image\");\n        $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: \"none\"});\n        el.setAttributeNS(xlink, \"href\", src);\n        svg.canvas && svg.canvas.appendChild(el);\n        var res = new Element(el, svg);\n        res.attrs = {x: x, y: y, width: w, height: h, src: src};\n        res.type = \"image\";\n        return res;\n    };\n    R._engine.text = function (svg, x, y, text) {\n        var el = $(\"text\");\n        // $(el, {x: x, y: y, \"text-anchor\": \"middle\"});\n        svg.canvas && svg.canvas.appendChild(el);\n        var res = new Element(el, svg);\n        res.attrs = {\n            x: x,\n            y: y,\n            \"text-anchor\": \"middle\",\n            text: text,\n            font: R._availableAttrs.font,\n            stroke: \"none\",\n            fill: \"#000\"\n        };\n        res.type = \"text\";\n        setFillAndStroke(res, res.attrs);\n        return res;\n    };\n    R._engine.setSize = function (width, height) {\n        this.width = width || this.width;\n        this.height = height || this.height;\n        this.canvas.setAttribute(\"width\", this.width);\n        this.canvas.setAttribute(\"height\", this.height);\n        if (this._viewBox) {\n            this.setViewBox.apply(this, this._viewBox);\n        }\n        return this;\n    };\n    R._engine.create = function () {\n        var con = R._getContainer.apply(0, arguments),\n            container = con && con.container,\n            x = con.x,\n            y = con.y,\n            width = con.width,\n            height = con.height;\n        if (!container) {\n            throw new Error(\"SVG container not found.\");\n        }\n        var cnvs = $(\"svg\"),\n            css = \"overflow:hidden;\",\n            isFloating;\n        x = x || 0;\n        y = y || 0;\n        width = width || 512;\n        height = height || 342;\n        $(cnvs, {\n            height: height,\n            version: 1.1,\n            width: width,\n            xmlns: \"http://www.w3.org/2000/svg\"\n        });\n        if (container == 1) {\n            cnvs.style.cssText = css + \"position:absolute;left:\" + x + \"px;top:\" + y + \"px\";\n            R._g.doc.body.appendChild(cnvs);\n            isFloating = 1;\n        } else {\n            cnvs.style.cssText = css + \"position:relative\";\n            if (container.firstChild) {\n                container.insertBefore(cnvs, container.firstChild);\n            } else {\n                container.appendChild(cnvs);\n            }\n        }\n        container = new R._Paper;\n        container.width = width;\n        container.height = height;\n        container.canvas = cnvs;\n        // plugins.call(container, container, R.fn);\n        container.clear();\n        container._left = container._top = 0;\n        isFloating && (container.renderfix = function () {});\n        container.renderfix();\n        return container;\n    };\n    R._engine.setViewBox = function (x, y, w, h, fit) {\n        eve(\"setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n        var size = mmax(w / this.width, h / this.height),\n            top = this.top,\n            aspectRatio = fit ? \"meet\" : \"xMinYMin\",\n            vb,\n            sw;\n        if (x == null) {\n            if (this._vbSize) {\n                size = 1;\n            }\n            delete this._vbSize;\n            vb = \"0 0 \" + this.width + S + this.height;\n        } else {\n            this._vbSize = size;\n            vb = x + S + y + S + w + S + h;\n        }\n        $(this.canvas, {\n            viewBox: vb,\n            preserveAspectRatio: aspectRatio\n        });\n        while (size && top) {\n            sw = \"stroke-width\" in top.attrs ? top.attrs[\"stroke-width\"] : 1;\n            top.attr({\"stroke-width\": sw});\n            top._.dirty = 1;\n            top._.dirtyT = 1;\n            top = top.prev;\n        }\n        this._viewBox = [x, y, w, h, !!fit];\n        return this;\n    };\n    \n    R.prototype.renderfix = function () {\n        var cnvs = this.canvas,\n            s = cnvs.style,\n            pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix(),\n            left = -pos.e % 1,\n            top = -pos.f % 1;\n        if (left || top) {\n            if (left) {\n                this._left = (this._left + left) % 1;\n                s.left = this._left + \"px\";\n            }\n            if (top) {\n                this._top = (this._top + top) % 1;\n                s.top = this._top + \"px\";\n            }\n        }\n    };\n    \n    R.prototype.clear = function () {\n        R.eve(\"clear\", this);\n        var c = this.canvas;\n        while (c.firstChild) {\n            c.removeChild(c.firstChild);\n        }\n        this.bottom = this.top = null;\n        (this.desc = $(\"desc\")).appendChild(R._g.doc.createTextNode(\"Created with Rapha\\xebl \" + R.version));\n        c.appendChild(this.desc);\n        c.appendChild(this.defs = $(\"defs\"));\n    };\n    \n    R.prototype.remove = function () {\n        eve(\"remove\", this);\n        this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);\n        for (var i in this) {\n            this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n        }\n    };\n    var setproto = R.st;\n    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n        setproto[method] = (function (methodname) {\n            return function () {\n                var arg = arguments;\n                return this.forEach(function (el) {\n                    el[methodname].apply(el, arg);\n                });\n            };\n        })(method);\n    }\n}(window.Raphael);\n\n// ┌─────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël - JavaScript Vector Library                                 │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ VML Module                                                          │ \\\\\n// ├─────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\\\\n// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\\\\n// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\\\\n// └─────────────────────────────────────────────────────────────────────┘ \\\\\nwindow.Raphael.vml && function (R) {\n    var has = \"hasOwnProperty\",\n        Str = String,\n        toFloat = parseFloat,\n        math = Math,\n        round = math.round,\n        mmax = math.max,\n        mmin = math.min,\n        abs = math.abs,\n        fillString = \"fill\",\n        separator = /[, ]+/,\n        eve = R.eve,\n        ms = \" progid:DXImageTransform.Microsoft\",\n        S = \" \",\n        E = \"\",\n        map = {M: \"m\", L: \"l\", C: \"c\", Z: \"x\", m: \"t\", l: \"r\", c: \"v\", z: \"x\"},\n        bites = /([clmz]),?([^clmz]*)/gi,\n        blurregexp = / progid:\\S+Blur\\([^\\)]+\\)/g,\n        val = /-?[^,\\s-]+/g,\n        cssDot = \"position:absolute;left:0;top:0;width:1px;height:1px\",\n        zoom = 21600,\n        pathTypes = {path: 1, rect: 1, image: 1},\n        ovalTypes = {circle: 1, ellipse: 1},\n        path2vml = function (path) {\n            var total =  /[ahqstv]/ig,\n                command = R._pathToAbsolute;\n            Str(path).match(total) && (command = R._path2curve);\n            total = /[clmz]/g;\n            if (command == R._pathToAbsolute && !Str(path).match(total)) {\n                var res = Str(path).replace(bites, function (all, command, args) {\n                    var vals = [],\n                        isMove = command.toLowerCase() == \"m\",\n                        res = map[command];\n                    args.replace(val, function (value) {\n                        if (isMove && vals.length == 2) {\n                            res += vals + map[command == \"m\" ? \"l\" : \"L\"];\n                            vals = [];\n                        }\n                        vals.push(round(value * zoom));\n                    });\n                    return res + vals;\n                });\n                return res;\n            }\n            var pa = command(path), p, r;\n            res = [];\n            for (var i = 0, ii = pa.length; i < ii; i++) {\n                p = pa[i];\n                r = pa[i][0].toLowerCase();\n                r == \"z\" && (r = \"x\");\n                for (var j = 1, jj = p.length; j < jj; j++) {\n                    r += round(p[j] * zoom) + (j != jj - 1 ? \",\" : E);\n                }\n                res.push(r);\n            }\n            return res.join(S);\n        },\n        compensation = function (deg, dx, dy) {\n            var m = R.matrix();\n            m.rotate(-deg, .5, .5);\n            return {\n                dx: m.x(dx, dy),\n                dy: m.y(dx, dy)\n            };\n        },\n        setCoords = function (p, sx, sy, dx, dy, deg) {\n            var _ = p._,\n                m = p.matrix,\n                fillpos = _.fillpos,\n                o = p.node,\n                s = o.style,\n                y = 1,\n                flip = \"\",\n                dxdy,\n                kx = zoom / sx,\n                ky = zoom / sy;\n            s.visibility = \"hidden\";\n            if (!sx || !sy) {\n                return;\n            }\n            o.coordsize = abs(kx) + S + abs(ky);\n            s.rotation = deg * (sx * sy < 0 ? -1 : 1);\n            if (deg) {\n                var c = compensation(deg, dx, dy);\n                dx = c.dx;\n                dy = c.dy;\n            }\n            sx < 0 && (flip += \"x\");\n            sy < 0 && (flip += \" y\") && (y = -1);\n            s.flip = flip;\n            o.coordorigin = (dx * -kx) + S + (dy * -ky);\n            if (fillpos || _.fillsize) {\n                var fill = o.getElementsByTagName(fillString);\n                fill = fill && fill[0];\n                o.removeChild(fill);\n                if (fillpos) {\n                    c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));\n                    fill.position = c.dx * y + S + c.dy * y;\n                }\n                if (_.fillsize) {\n                    fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);\n                }\n                o.appendChild(fill);\n            }\n            s.visibility = \"visible\";\n        };\n    R.toString = function () {\n        return  \"Your browser doesn\\u2019t support SVG. Falling down to VML.\\nYou are running Rapha\\xebl \" + this.version;\n    };\n    var addArrow = function (o, value, isEnd) {\n        var values = Str(value).toLowerCase().split(\"-\"),\n            se = isEnd ? \"end\" : \"start\",\n            i = values.length,\n            type = \"classic\",\n            w = \"medium\",\n            h = \"medium\";\n        while (i--) {\n            switch (values[i]) {\n                case \"block\":\n                case \"classic\":\n                case \"oval\":\n                case \"diamond\":\n                case \"open\":\n                case \"none\":\n                    type = values[i];\n                    break;\n                case \"wide\":\n                case \"narrow\": h = values[i]; break;\n                case \"long\":\n                case \"short\": w = values[i]; break;\n            }\n        }\n        var stroke = o.node.getElementsByTagName(\"stroke\")[0];\n        stroke[se + \"arrow\"] = type;\n        stroke[se + \"arrowlength\"] = w;\n        stroke[se + \"arrowwidth\"] = h;\n    },\n    setFillAndStroke = function (o, params) {\n        // o.paper.canvas.style.display = \"none\";\n        o.attrs = o.attrs || {};\n        var node = o.node,\n            a = o.attrs,\n            s = node.style,\n            xy,\n            newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),\n            isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),\n            res = o;\n\n\n        for (var par in params) if (params[has](par)) {\n            a[par] = params[par];\n        }\n        if (newpath) {\n            a.path = R._getPath[o.type](o);\n            o._.dirty = 1;\n        }\n        params.href && (node.href = params.href);\n        params.title && (node.title = params.title);\n        params.target && (node.target = params.target);\n        params.cursor && (s.cursor = params.cursor);\n        \"blur\" in params && o.blur(params.blur);\n        if (params.path && o.type == \"path\" || newpath) {\n            node.path = path2vml(~Str(a.path).toLowerCase().indexOf(\"r\") ? R._pathToAbsolute(a.path) : a.path);\n            if (o.type == \"image\") {\n                o._.fillpos = [a.x, a.y];\n                o._.fillsize = [a.width, a.height];\n                setCoords(o, 1, 1, 0, 0, 0);\n            }\n        }\n        \"transform\" in params && o.transform(params.transform);\n        if (isOval) {\n            var cx = +a.cx,\n                cy = +a.cy,\n                rx = +a.rx || +a.r || 0,\n                ry = +a.ry || +a.r || 0;\n            node.path = R.format(\"ar{0},{1},{2},{3},{4},{1},{4},{1}x\", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));\n        }\n        if (\"clip-rect\" in params) {\n            var rect = Str(params[\"clip-rect\"]).split(separator);\n            if (rect.length == 4) {\n                rect[2] = +rect[2] + (+rect[0]);\n                rect[3] = +rect[3] + (+rect[1]);\n                var div = node.clipRect || R._g.doc.createElement(\"div\"),\n                    dstyle = div.style;\n                dstyle.clip = R.format(\"rect({1}px {2}px {3}px {0}px)\", rect);\n                if (!node.clipRect) {\n                    dstyle.position = \"absolute\";\n                    dstyle.top = 0;\n                    dstyle.left = 0;\n                    dstyle.width = o.paper.width + \"px\";\n                    dstyle.height = o.paper.height + \"px\";\n                    node.parentNode.insertBefore(div, node);\n                    div.appendChild(node);\n                    node.clipRect = div;\n                }\n            }\n            if (!params[\"clip-rect\"]) {\n                node.clipRect && (node.clipRect.style.clip = \"auto\");\n            }\n        }\n        if (o.textpath) {\n            var textpathStyle = o.textpath.style;\n            params.font && (textpathStyle.font = params.font);\n            params[\"font-family\"] && (textpathStyle.fontFamily = '\"' + params[\"font-family\"].split(\",\")[0].replace(/^['\"]+|['\"]+$/g, E) + '\"');\n            params[\"font-size\"] && (textpathStyle.fontSize = params[\"font-size\"]);\n            params[\"font-weight\"] && (textpathStyle.fontWeight = params[\"font-weight\"]);\n            params[\"font-style\"] && (textpathStyle.fontStyle = params[\"font-style\"]);\n        }\n        if (\"arrow-start\" in params) {\n            addArrow(res, params[\"arrow-start\"]);\n        }\n        if (\"arrow-end\" in params) {\n            addArrow(res, params[\"arrow-end\"], 1);\n        }\n        if (params.opacity != null || \n            params[\"stroke-width\"] != null ||\n            params.fill != null ||\n            params.src != null ||\n            params.stroke != null ||\n            params[\"stroke-width\"] != null ||\n            params[\"stroke-opacity\"] != null ||\n            params[\"fill-opacity\"] != null ||\n            params[\"stroke-dasharray\"] != null ||\n            params[\"stroke-miterlimit\"] != null ||\n            params[\"stroke-linejoin\"] != null ||\n            params[\"stroke-linecap\"] != null) {\n            var fill = node.getElementsByTagName(fillString),\n                newfill = false;\n            fill = fill && fill[0];\n            !fill && (newfill = fill = createNode(fillString));\n            if (o.type == \"image\" && params.src) {\n                fill.src = params.src;\n            }\n            params.fill && (fill.on = true);\n            if (fill.on == null || params.fill == \"none\" || params.fill === null) {\n                fill.on = false;\n            }\n            if (fill.on && params.fill) {\n                var isURL = Str(params.fill).match(R._ISURL);\n                if (isURL) {\n                    fill.parentNode == node && node.removeChild(fill);\n                    fill.rotate = true;\n                    fill.src = isURL[1];\n                    fill.type = \"tile\";\n                    var bbox = o.getBBox(1);\n                    fill.position = bbox.x + S + bbox.y;\n                    o._.fillpos = [bbox.x, bbox.y];\n\n                    R._preload(isURL[1], function () {\n                        o._.fillsize = [this.offsetWidth, this.offsetHeight];\n                    });\n                } else {\n                    fill.color = R.getRGB(params.fill).hex;\n                    fill.src = E;\n                    fill.type = \"solid\";\n                    if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != \"r\") && addGradientFill(res, params.fill, fill)) {\n                        a.fill = \"none\";\n                        a.gradient = params.fill;\n                        fill.rotate = false;\n                    }\n                }\n            }\n            if (\"fill-opacity\" in params || \"opacity\" in params) {\n                var opacity = ((+a[\"fill-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);\n                opacity = mmin(mmax(opacity, 0), 1);\n                fill.opacity = opacity;\n                if (fill.src) {\n                    fill.color = \"none\";\n                }\n            }\n            node.appendChild(fill);\n            var stroke = (node.getElementsByTagName(\"stroke\") && node.getElementsByTagName(\"stroke\")[0]),\n            newstroke = false;\n            !stroke && (newstroke = stroke = createNode(\"stroke\"));\n            if ((params.stroke && params.stroke != \"none\") ||\n                params[\"stroke-width\"] ||\n                params[\"stroke-opacity\"] != null ||\n                params[\"stroke-dasharray\"] ||\n                params[\"stroke-miterlimit\"] ||\n                params[\"stroke-linejoin\"] ||\n                params[\"stroke-linecap\"]) {\n                stroke.on = true;\n            }\n            (params.stroke == \"none\" || params.stroke === null || stroke.on == null || params.stroke == 0 || params[\"stroke-width\"] == 0) && (stroke.on = false);\n            var strokeColor = R.getRGB(params.stroke);\n            stroke.on && params.stroke && (stroke.color = strokeColor.hex);\n            opacity = ((+a[\"stroke-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);\n            var width = (toFloat(params[\"stroke-width\"]) || 1) * .75;\n            opacity = mmin(mmax(opacity, 0), 1);\n            params[\"stroke-width\"] == null && (width = a[\"stroke-width\"]);\n            params[\"stroke-width\"] && (stroke.weight = width);\n            width && width < 1 && (opacity *= width) && (stroke.weight = 1);\n            stroke.opacity = opacity;\n        \n            params[\"stroke-linejoin\"] && (stroke.joinstyle = params[\"stroke-linejoin\"] || \"miter\");\n            stroke.miterlimit = params[\"stroke-miterlimit\"] || 8;\n            params[\"stroke-linecap\"] && (stroke.endcap = params[\"stroke-linecap\"] == \"butt\" ? \"flat\" : params[\"stroke-linecap\"] == \"square\" ? \"square\" : \"round\");\n            if (params[\"stroke-dasharray\"]) {\n                var dasharray = {\n                    \"-\": \"shortdash\",\n                    \".\": \"shortdot\",\n                    \"-.\": \"shortdashdot\",\n                    \"-..\": \"shortdashdotdot\",\n                    \". \": \"dot\",\n                    \"- \": \"dash\",\n                    \"--\": \"longdash\",\n                    \"- .\": \"dashdot\",\n                    \"--.\": \"longdashdot\",\n                    \"--..\": \"longdashdotdot\"\n                };\n                stroke.dashstyle = dasharray[has](params[\"stroke-dasharray\"]) ? dasharray[params[\"stroke-dasharray\"]] : E;\n            }\n            newstroke && node.appendChild(stroke);\n        }\n        if (res.type == \"text\") {\n            res.paper.canvas.style.display = E;\n            var span = res.paper.span,\n                m = 100,\n                fontSize = a.font && a.font.match(/\\d+(?:\\.\\d*)?(?=px)/);\n            s = span.style;\n            a.font && (s.font = a.font);\n            a[\"font-family\"] && (s.fontFamily = a[\"font-family\"]);\n            a[\"font-weight\"] && (s.fontWeight = a[\"font-weight\"]);\n            a[\"font-style\"] && (s.fontStyle = a[\"font-style\"]);\n            fontSize = toFloat(a[\"font-size\"] || fontSize && fontSize[0]) || 10;\n            s.fontSize = fontSize * m + \"px\";\n            res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, \"&#60;\").replace(/&/g, \"&#38;\").replace(/\\n/g, \"<br>\"));\n            var brect = span.getBoundingClientRect();\n            res.W = a.w = (brect.right - brect.left) / m;\n            res.H = a.h = (brect.bottom - brect.top) / m;\n            // res.paper.canvas.style.display = \"none\";\n            res.X = a.x;\n            res.Y = a.y + res.H / 2;\n\n            (\"x\" in params || \"y\" in params) && (res.path.v = R.format(\"m{0},{1}l{2},{1}\", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));\n            var dirtyattrs = [\"x\", \"y\", \"text\", \"font\", \"font-family\", \"font-weight\", \"font-style\", \"font-size\"];\n            for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {\n                res._.dirty = 1;\n                break;\n            }\n        \n            // text-anchor emulation\n            switch (a[\"text-anchor\"]) {\n                case \"start\":\n                    res.textpath.style[\"v-text-align\"] = \"left\";\n                    res.bbx = res.W / 2;\n                break;\n                case \"end\":\n                    res.textpath.style[\"v-text-align\"] = \"right\";\n                    res.bbx = -res.W / 2;\n                break;\n                default:\n                    res.textpath.style[\"v-text-align\"] = \"center\";\n                    res.bbx = 0;\n                break;\n            }\n            res.textpath.style[\"v-text-kern\"] = true;\n        }\n        // res.paper.canvas.style.display = E;\n    },\n    addGradientFill = function (o, gradient, fill) {\n        o.attrs = o.attrs || {};\n        var attrs = o.attrs,\n            pow = Math.pow,\n            opacity,\n            oindex,\n            type = \"linear\",\n            fxfy = \".5 .5\";\n        o.attrs.gradient = gradient;\n        gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {\n            type = \"radial\";\n            if (fx && fy) {\n                fx = toFloat(fx);\n                fy = toFloat(fy);\n                pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);\n                fxfy = fx + S + fy;\n            }\n            return E;\n        });\n        gradient = gradient.split(/\\s*\\-\\s*/);\n        if (type == \"linear\") {\n            var angle = gradient.shift();\n            angle = -toFloat(angle);\n            if (isNaN(angle)) {\n                return null;\n            }\n        }\n        var dots = R._parseDots(gradient);\n        if (!dots) {\n            return null;\n        }\n        o = o.shape || o.node;\n        if (dots.length) {\n            o.removeChild(fill);\n            fill.on = true;\n            fill.method = \"none\";\n            fill.color = dots[0].color;\n            fill.color2 = dots[dots.length - 1].color;\n            var clrs = [];\n            for (var i = 0, ii = dots.length; i < ii; i++) {\n                dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);\n            }\n            fill.colors = clrs.length ? clrs.join() : \"0% \" + fill.color;\n            if (type == \"radial\") {\n                fill.type = \"gradientTitle\";\n                fill.focus = \"100%\";\n                fill.focussize = \"0 0\";\n                fill.focusposition = fxfy;\n                fill.angle = 0;\n            } else {\n                // fill.rotate= true;\n                fill.type = \"gradient\";\n                fill.angle = (270 - angle) % 360;\n            }\n            o.appendChild(fill);\n        }\n        return 1;\n    },\n    Element = function (node, vml) {\n        this[0] = this.node = node;\n        node.raphael = true;\n        this.id = R._oid++;\n        node.raphaelid = this.id;\n        this.X = 0;\n        this.Y = 0;\n        this.attrs = {};\n        this.paper = vml;\n        this.matrix = R.matrix();\n        this._ = {\n            transform: [],\n            sx: 1,\n            sy: 1,\n            dx: 0,\n            dy: 0,\n            deg: 0,\n            dirty: 1,\n            dirtyT: 1\n        };\n        !vml.bottom && (vml.bottom = this);\n        this.prev = vml.top;\n        vml.top && (vml.top.next = this);\n        vml.top = this;\n        this.next = null;\n    };\n    var elproto = R.el;\n\n    Element.prototype = elproto;\n    elproto.constructor = Element;\n    elproto.transform = function (tstr) {\n        if (tstr == null) {\n            return this._.transform;\n        }\n        var vbs = this.paper._viewBoxShift,\n            vbt = vbs ? \"s\" + [vbs.scale, vbs.scale] + \"-1-1t\" + [vbs.dx, vbs.dy] : E,\n            oldt;\n        if (vbs) {\n            oldt = tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, this._.transform || E);\n        }\n        R._extractTransform(this, vbt + tstr);\n        var matrix = this.matrix.clone(),\n            skew = this.skew,\n            o = this.node,\n            split,\n            isGrad = ~Str(this.attrs.fill).indexOf(\"-\"),\n            isPatt = !Str(this.attrs.fill).indexOf(\"url(\");\n        matrix.translate(-.5, -.5);\n        if (isPatt || isGrad || this.type == \"image\") {\n            skew.matrix = \"1 0 0 1\";\n            skew.offset = \"0 0\";\n            split = matrix.split();\n            if ((isGrad && split.noRotation) || !split.isSimple) {\n                o.style.filter = matrix.toFilter();\n                var bb = this.getBBox(),\n                    bbt = this.getBBox(1),\n                    dx = bb.x - bbt.x,\n                    dy = bb.y - bbt.y;\n                o.coordorigin = (dx * -zoom) + S + (dy * -zoom);\n                setCoords(this, 1, 1, dx, dy, 0);\n            } else {\n                o.style.filter = E;\n                setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);\n            }\n        } else {\n            o.style.filter = E;\n            skew.matrix = Str(matrix);\n            skew.offset = matrix.offset();\n        }\n        oldt && (this._.transform = oldt);\n        return this;\n    };\n    elproto.rotate = function (deg, cx, cy) {\n        if (this.removed) {\n            return this;\n        }\n        if (deg == null) {\n            return;\n        }\n        deg = Str(deg).split(separator);\n        if (deg.length - 1) {\n            cx = toFloat(deg[1]);\n            cy = toFloat(deg[2]);\n        }\n        deg = toFloat(deg[0]);\n        (cy == null) && (cx = cy);\n        if (cx == null || cy == null) {\n            var bbox = this.getBBox(1);\n            cx = bbox.x + bbox.width / 2;\n            cy = bbox.y + bbox.height / 2;\n        }\n        this._.dirtyT = 1;\n        this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n        return this;\n    };\n    elproto.translate = function (dx, dy) {\n        if (this.removed) {\n            return this;\n        }\n        dx = Str(dx).split(separator);\n        if (dx.length - 1) {\n            dy = toFloat(dx[1]);\n        }\n        dx = toFloat(dx[0]) || 0;\n        dy = +dy || 0;\n        if (this._.bbox) {\n            this._.bbox.x += dx;\n            this._.bbox.y += dy;\n        }\n        this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n        return this;\n    };\n    elproto.scale = function (sx, sy, cx, cy) {\n        if (this.removed) {\n            return this;\n        }\n        sx = Str(sx).split(separator);\n        if (sx.length - 1) {\n            sy = toFloat(sx[1]);\n            cx = toFloat(sx[2]);\n            cy = toFloat(sx[3]);\n            isNaN(cx) && (cx = null);\n            isNaN(cy) && (cy = null);\n        }\n        sx = toFloat(sx[0]);\n        (sy == null) && (sy = sx);\n        (cy == null) && (cx = cy);\n        if (cx == null || cy == null) {\n            var bbox = this.getBBox(1);\n        }\n        cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n        cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n    \n        this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n        this._.dirtyT = 1;\n        return this;\n    };\n    elproto.hide = function () {\n        !this.removed && (this.node.style.display = \"none\");\n        return this;\n    };\n    elproto.show = function () {\n        !this.removed && (this.node.style.display = E);\n        return this;\n    };\n    elproto._getBBox = function () {\n        if (this.removed) {\n            return {};\n        }\n        return {\n            x: this.X + (this.bbx || 0) - this.W / 2,\n            y: this.Y - this.H,\n            width: this.W,\n            height: this.H\n        };\n    };\n    elproto.remove = function () {\n        if (this.removed) {\n            return;\n        }\n        this.paper.__set__ && this.paper.__set__.exclude(this);\n        R.eve.unbind(\"*.*.\" + this.id);\n        R._tear(this, this.paper);\n        this.node.parentNode.removeChild(this.node);\n        this.shape && this.shape.parentNode.removeChild(this.shape);\n        for (var i in this) {\n            this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n        }\n        this.removed = true;\n    };\n    elproto.attr = function (name, value) {\n        if (this.removed) {\n            return this;\n        }\n        if (name == null) {\n            var res = {};\n            for (var a in this.attrs) if (this.attrs[has](a)) {\n                res[a] = this.attrs[a];\n            }\n            res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n            res.transform = this._.transform;\n            return res;\n        }\n        if (value == null && R.is(name, \"string\")) {\n            if (name == fillString && this.attrs.fill == \"none\" && this.attrs.gradient) {\n                return this.attrs.gradient;\n            }\n            var names = name.split(separator),\n                out = {};\n            for (var i = 0, ii = names.length; i < ii; i++) {\n                name = names[i];\n                if (name in this.attrs) {\n                    out[name] = this.attrs[name];\n                } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n                    out[name] = this.paper.customAttributes[name].def;\n                } else {\n                    out[name] = R._availableAttrs[name];\n                }\n            }\n            return ii - 1 ? out : out[names[0]];\n        }\n        if (this.attrs && value == null && R.is(name, \"array\")) {\n            out = {};\n            for (i = 0, ii = name.length; i < ii; i++) {\n                out[name[i]] = this.attr(name[i]);\n            }\n            return out;\n        }\n        var params;\n        if (value != null) {\n            params = {};\n            params[name] = value;\n        }\n        value == null && R.is(name, \"object\") && (params = name);\n        for (var key in params) {\n            eve(\"attr.\" + key + \".\" + this.id, this, params[key]);\n        }\n        if (params) {\n            for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n                var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n                this.attrs[key] = params[key];\n                for (var subkey in par) if (par[has](subkey)) {\n                    params[subkey] = par[subkey];\n                }\n            }\n            // this.paper.canvas.style.display = \"none\";\n            if (params.text && this.type == \"text\") {\n                this.textpath.string = params.text;\n            }\n            setFillAndStroke(this, params);\n            // this.paper.canvas.style.display = E;\n        }\n        return this;\n    };\n    elproto.toFront = function () {\n        !this.removed && this.node.parentNode.appendChild(this.node);\n        this.paper && this.paper.top != this && R._tofront(this, this.paper);\n        return this;\n    };\n    elproto.toBack = function () {\n        if (this.removed) {\n            return this;\n        }\n        if (this.node.parentNode.firstChild != this.node) {\n            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);\n            R._toback(this, this.paper);\n        }\n        return this;\n    };\n    elproto.insertAfter = function (element) {\n        if (this.removed) {\n            return this;\n        }\n        if (element.constructor == R.st.constructor) {\n            element = element[element.length - 1];\n        }\n        if (element.node.nextSibling) {\n            element.node.parentNode.insertBefore(this.node, element.node.nextSibling);\n        } else {\n            element.node.parentNode.appendChild(this.node);\n        }\n        R._insertafter(this, element, this.paper);\n        return this;\n    };\n    elproto.insertBefore = function (element) {\n        if (this.removed) {\n            return this;\n        }\n        if (element.constructor == R.st.constructor) {\n            element = element[0];\n        }\n        element.node.parentNode.insertBefore(this.node, element.node);\n        R._insertbefore(this, element, this.paper);\n        return this;\n    };\n    elproto.blur = function (size) {\n        var s = this.node.runtimeStyle,\n            f = s.filter;\n        f = f.replace(blurregexp, E);\n        if (+size !== 0) {\n            this.attrs.blur = size;\n            s.filter = f + S + ms + \".Blur(pixelradius=\" + (+size || 1.5) + \")\";\n            s.margin = R.format(\"-{0}px 0 0 -{0}px\", round(+size || 1.5));\n        } else {\n            s.filter = f;\n            s.margin = 0;\n            delete this.attrs.blur;\n        }\n    };\n\n    R._engine.path = function (pathString, vml) {\n        var el = createNode(\"shape\");\n        el.style.cssText = cssDot;\n        el.coordsize = zoom + S + zoom;\n        el.coordorigin = vml.coordorigin;\n        var p = new Element(el, vml),\n            attr = {fill: \"none\", stroke: \"#000\"};\n        pathString && (attr.path = pathString);\n        p.type = \"path\";\n        p.path = [];\n        p.Path = E;\n        setFillAndStroke(p, attr);\n        vml.canvas.appendChild(el);\n        var skew = createNode(\"skew\");\n        skew.on = true;\n        el.appendChild(skew);\n        p.skew = skew;\n        p.transform(E);\n        return p;\n    };\n    R._engine.rect = function (vml, x, y, w, h, r) {\n        var path = R._rectPath(x, y, w, h, r),\n            res = vml.path(path),\n            a = res.attrs;\n        res.X = a.x = x;\n        res.Y = a.y = y;\n        res.W = a.width = w;\n        res.H = a.height = h;\n        a.r = r;\n        a.path = path;\n        res.type = \"rect\";\n        return res;\n    };\n    R._engine.ellipse = function (vml, x, y, rx, ry) {\n        var res = vml.path(),\n            a = res.attrs;\n        res.X = x - rx;\n        res.Y = y - ry;\n        res.W = rx * 2;\n        res.H = ry * 2;\n        res.type = \"ellipse\";\n        setFillAndStroke(res, {\n            cx: x,\n            cy: y,\n            rx: rx,\n            ry: ry\n        });\n        return res;\n    };\n    R._engine.circle = function (vml, x, y, r) {\n        var res = vml.path(),\n            a = res.attrs;\n        res.X = x - r;\n        res.Y = y - r;\n        res.W = res.H = r * 2;\n        res.type = \"circle\";\n        setFillAndStroke(res, {\n            cx: x,\n            cy: y,\n            r: r\n        });\n        return res;\n    };\n    R._engine.image = function (vml, src, x, y, w, h) {\n        var path = R._rectPath(x, y, w, h),\n            res = vml.path(path).attr({stroke: \"none\"}),\n            a = res.attrs,\n            node = res.node,\n            fill = node.getElementsByTagName(fillString)[0];\n        a.src = src;\n        res.X = a.x = x;\n        res.Y = a.y = y;\n        res.W = a.width = w;\n        res.H = a.height = h;\n        a.path = path;\n        res.type = \"image\";\n        fill.parentNode == node && node.removeChild(fill);\n        fill.rotate = true;\n        fill.src = src;\n        fill.type = \"tile\";\n        res._.fillpos = [x, y];\n        res._.fillsize = [w, h];\n        node.appendChild(fill);\n        setCoords(res, 1, 1, 0, 0, 0);\n        return res;\n    };\n    R._engine.text = function (vml, x, y, text) {\n        var el = createNode(\"shape\"),\n            path = createNode(\"path\"),\n            o = createNode(\"textpath\");\n        x = x || 0;\n        y = y || 0;\n        text = text || \"\";\n        path.v = R.format(\"m{0},{1}l{2},{1}\", round(x * zoom), round(y * zoom), round(x * zoom) + 1);\n        path.textpathok = true;\n        o.string = Str(text);\n        o.on = true;\n        el.style.cssText = cssDot;\n        el.coordsize = zoom + S + zoom;\n        el.coordorigin = \"0 0\";\n        var p = new Element(el, vml),\n            attr = {\n                fill: \"#000\",\n                stroke: \"none\",\n                font: R._availableAttrs.font,\n                text: text\n            };\n        p.shape = el;\n        p.path = path;\n        p.textpath = o;\n        p.type = \"text\";\n        p.attrs.text = Str(text);\n        p.attrs.x = x;\n        p.attrs.y = y;\n        p.attrs.w = 1;\n        p.attrs.h = 1;\n        setFillAndStroke(p, attr);\n        el.appendChild(o);\n        el.appendChild(path);\n        vml.canvas.appendChild(el);\n        var skew = createNode(\"skew\");\n        skew.on = true;\n        el.appendChild(skew);\n        p.skew = skew;\n        p.transform(E);\n        return p;\n    };\n    R._engine.setSize = function (width, height) {\n        var cs = this.canvas.style;\n        this.width = width;\n        this.height = height;\n        width == +width && (width += \"px\");\n        height == +height && (height += \"px\");\n        cs.width = width;\n        cs.height = height;\n        cs.clip = \"rect(0 \" + width + \" \" + height + \" 0)\";\n        if (this._viewBox) {\n            R._engine.setViewBox.apply(this, this._viewBox);\n        }\n        return this;\n    };\n    R._engine.setViewBox = function (x, y, w, h, fit) {\n        R.eve(\"setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n        var width = this.width,\n            height = this.height,\n            size = 1 / mmax(w / width, h / height),\n            H, W;\n        if (fit) {\n            H = height / h;\n            W = width / w;\n            if (w * H < width) {\n                x -= (width - w * H) / 2 / H;\n            }\n            if (h * W < height) {\n                y -= (height - h * W) / 2 / W;\n            }\n        }\n        this._viewBox = [x, y, w, h, !!fit];\n        this._viewBoxShift = {\n            dx: -x,\n            dy: -y,\n            scale: size\n        };\n        this.forEach(function (el) {\n            el.transform(\"...\");\n        });\n        return this;\n    };\n    var createNode;\n    R._engine.initWin = function (win) {\n            var doc = win.document;\n            doc.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n            try {\n                !doc.namespaces.rvml && doc.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n                createNode = function (tagName) {\n                    return doc.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n                };\n            } catch (e) {\n                createNode = function (tagName) {\n                    return doc.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n                };\n            }\n        };\n    R._engine.initWin(R._g.win);\n    R._engine.create = function () {\n        var con = R._getContainer.apply(0, arguments),\n            container = con.container,\n            height = con.height,\n            s,\n            width = con.width,\n            x = con.x,\n            y = con.y;\n        if (!container) {\n            throw new Error(\"VML container not found.\");\n        }\n        var res = new R._Paper,\n            c = res.canvas = R._g.doc.createElement(\"div\"),\n            cs = c.style;\n        x = x || 0;\n        y = y || 0;\n        width = width || 512;\n        height = height || 342;\n        res.width = width;\n        res.height = height;\n        width == +width && (width += \"px\");\n        height == +height && (height += \"px\");\n        res.coordsize = zoom * 1e3 + S + zoom * 1e3;\n        res.coordorigin = \"0 0\";\n        res.span = R._g.doc.createElement(\"span\");\n        res.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\";\n        c.appendChild(res.span);\n        cs.cssText = R.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\", width, height);\n        if (container == 1) {\n            R._g.doc.body.appendChild(c);\n            cs.left = x + \"px\";\n            cs.top = y + \"px\";\n            cs.position = \"absolute\";\n        } else {\n            if (container.firstChild) {\n                container.insertBefore(c, container.firstChild);\n            } else {\n                container.appendChild(c);\n            }\n        }\n        // plugins.call(res, res, R.fn);\n        res.renderfix = function () {};\n        return res;\n    };\n    R.prototype.clear = function () {\n        R.eve(\"clear\", this);\n        this.canvas.innerHTML = E;\n        this.span = R._g.doc.createElement(\"span\");\n        this.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\";\n        this.canvas.appendChild(this.span);\n        this.bottom = this.top = null;\n    };\n    R.prototype.remove = function () {\n        R.eve(\"remove\", this);\n        this.canvas.parentNode.removeChild(this.canvas);\n        for (var i in this) {\n            this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n        }\n        return true;\n    };\n\n    var setproto = R.st;\n    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n        setproto[method] = (function (methodname) {\n            return function () {\n                var arg = arguments;\n                return this.forEach(function (el) {\n                    el[methodname].apply(el, arg);\n                });\n            };\n        })(method);\n    }\n}(window.Raphael);"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta1\n * License: http://www.my97.net/dp/license.asp\n */\nvar $dp,WdatePicker;(function(){var $={\n$langList:[{name:\"en\",charset:\"UTF-8\"},{name:\"zh-cn\",charset:\"gb2312\"},{name:\"zh-tw\",charset:\"GBK\"}],\n$skinList:[\n\t{name:\"default\",charset:\"gb2312\"},\n\t{name:\"whyGreen\",charset:\"gb2312\"},\n\t{name:\"blue\",charset:\"gb2312\"},\n\t{name:\"green\",charset:\"gb2312\"},\n\t{name:\"simple\",charset:\"gb2312\"},\n\t{name:\"ext\",charset:\"gb2312\"},\n\t{name:\"blueFresh\",charset:\"gb2312\"},\n\t{name:\"YcloudRed\",charset:\"gb2312\"}\n],\n$wdate:true,\n$crossFrame:true,\n$preLoad:false,\ndoubleCalendar:false,\nenableKeyboard:true,\nenableInputMask:true,\nautoUpdateOnChanged:null,\nwhichDayIsfirstWeek:4,\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nfirstDayOfWeek:0,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOK:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:null,\nqsEnabled:true,\nautoShowQS:false,\n\nspecialDates:null,specialDays:null,disabledDates:null,disabledDays:null,opposite:false,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<A.length;B++){var _=parseInt(A[B].style.zIndex);if(_>$)$=_}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<D.length;F++){try{if(D[F].contentWindow==$){var E=V(D[F]);A+=E.left;_+=E.top;break}}catch(B){}}$=$.parent}return{\"leftM\":A,\"topM\":_}}function V(F){if(F.getBoundingClientRect)return F.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},E=false,H=null,_=F.offsetTop,G=F.offsetLeft,D=F.offsetWidth,B=F.offsetHeight,C=F.offsetParent;if(C!=F)while(C){G+=C.offsetLeft;_+=C.offsetTop;if(Q(C,\"position\").toLowerCase()==\"fixed\")E=true;else if(C.tagName.toLowerCase()==\"body\")H=C.ownerDocument.defaultView;C=C.offsetParent}C=F.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(O(C)))if(!a||C.style.overflow!==\"visible\"){G-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}if(!E){var $=Z(H);G-=$.left;_-=$.top}D+=G;B+=_;return{\"left\":G,\"top\":_,\"right\":D,\"bottom\":B}}}function L($){$=$||U;var B=$[M],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H].clientWidth)?B[H].clientWidth:B.body.offsetWidth,_=($.innerHeight)?$.innerHeight:(B[H]&&B[H].clientHeight)?B[H].clientHeight:B.body.offsetHeight;return{\"width\":A,\"height\":_}}function Z($){$=$||U;var B=$[M],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function D($){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(L,D){$dp.win=X;B();L=L||{};for(var J in $)if(J.substring(0,1)!=\"$\"&&L[J]===undefined)L[J]=$[J];if(D){if(!K()){_=_||setInterval(function(){if(U[M].readyState==\"complete\")clearInterval(_);T(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=S;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=S;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var H=F();if(H){L.srcEl=H.srcElement||H.target;H.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el[\"My97Mark\"]===true||L.el.disabled||($dp.dd&&O($dp.dd)!=\"none\"&&$dp.dd.style.left!=\"-970px\")){L.el[\"My97Mark\"]=false;return}I(L);if(H&&L.el.nodeType==1&&L.el[\"My97Mark\"]===undefined){L.el[\"My97Mark\"]=false;var A,C;if(H.type==\"focus\"){A=\"onclick\";C=\"onfocus\"}else{A=\"onfocus\";C=\"onclick\"}E(L.el,A,L.el[C])}}function K(){if(R&&U!=X&&U[M].readyState!=\"complete\")return false;return true}function F(){if(G){func=F.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=\"<iframe hideFocus=true width=97 height=9 frameborder=0 border=0 scrolling=no></iframe>\";var D=F.lastChild.contentWindow[M],_=$.$langList,C=$.$skinList,H=E.getRealLang();F.lang=H.name;F.skin=E.skin;var G=[\"<head><script>document.oncontextmenu=function(){return false;};\",\"var $d, $dp, $cfg=document.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\",\"if($cfg.eCont) {$dp = {};for(var p in $pdp) {$dp[p] = $pdp[p];}}else{$dp = $pdp;};for (var p in $cfg) {$dp[p] = $cfg[p];};\",\"</script><script src=\",A,\"lang/\",H.name,\".js charset=\",H.charset,\"></script>\"];for(var I=0;I<C.length;I++)if(C[I].name==E.skin)G.push(\"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\"+A+\"skin/\"+C[I].name+\"/datepicker.css\\\" charset=\\\"\"+C[I].charset+\"\\\"/>\");G.push(\"<script type=\\\"text/javascript\\\" src=\\\"\"+A+\"calendar.js?\\\"+Math.random()+\\\" charset=\\\"gb2312\\\"></script>\");G.push(\"</head><body leftmargin=\\\"0\\\" topmargin=\\\"0\\\" tabindex=0></body></html>\");G.push(\"<script>var t;t=t||setInterval(function(){if(document.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);if($FF||$OPERA)document.close();</script>\");E.setPos=B;E.onload=Y;D.write(\"<html>\");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(B!=\"under\"&&(($.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\"}}})()"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/calendar.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta1\n * License: http://www.my97.net/dp/license.asp\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('o $c;k($5E){6E.3c.84(\"6a\",l($){k(!$)h.2c();t $});6E.3c.6Z(\"6n\",l(){o $=h.6k;3m($.56!=1)$=$.7b;t $});79.3c.3k=l($,b){o A=$.1l(/67/,\"\");b.6O=l($){5G.1X=$;t b()};h.76(A,b.6O,1n)}}l 6c(){$c=h;h.3l=[];$d=1O.78(\"x\");$d.1d=\"4b\";$d.1P=\"<x 1D=6T><x Y=\\\\\"3S 6R\\\\\"><a></a></x><x Y=\\\\\"3S 6U\\\\\"><a></a></x><x 1c=\\\\\"2J:2z\\\\\"><x Y=\\\\\"2Y 6Y\\\\\"></x><1u Y=42></x><x 1c=\\\\\"2J:2z\\\\\"><x Y=\\\\\"2Y 6S\\\\\"></x><1u Y=42></x><x Y=\\\\\"3S 71\\\\\"><a></a></x><x Y=\\\\\"3S 7e\\\\\"><a></a></x><x 1c=\\\\\"2J:5R\\\\\"></x></x><x 1c=\\\\\"72:77;75:6I\\\\\"></x><x></x><x 1D=73><x Y=\\\\\"2Y 74\\\\\"></x><x Y=\\\\\"2Y 7f\\\\\"></x><x Y=\\\\\"2Y 7g\\\\\"></x><1x 2x=0 2q=0 2s=0><1j><18 7d=2><4n 1D=7a></4n>&4c;<1u Y=7c 4d=2><1u 1g=\\\\\":\\\\\" Y=6p 6j><1u Y=6d 4d=2><1u 1g=\\\\\":\\\\\" Y=6p 6j><1u Y=6d 4d=2></18><18><1K 1D=6W></1K></18></1j><1j><18><1K 1D=6X></1K></18></1j></1x></x><x 1D=70></x><x 1D=7h><1u Y=4l 1D=7G 3h=1K><1u Y=4l 1D=7F 3h=1K><1u Y=4l 1D=7I 3h=1K></x>\";6J($d,l(){3w()});A();h.6e();$f.20=[1O,$d.1J,$d.1w,$d.3e,$d.3G,$d.43,$d.2H,$d.2f,$d.1R];1b(o B=0;B<$f.20.u;B++){o b=$f.20[B];b.34=B==$f.20.u-1?$f.20[1]:$f.20[B+1];$f.3k(b,\"53\",4K)}$();4k(\"y,M,H,m,s\");$d.6f.1s=l(){58(1)};$d.6i.1s=l(){58(-1)};$d.54.1s=l(){k($d.1G.1c.2e!=\"6P\"){$c.4D();3J($d.1G)}q 1m($d.1G)};1O.5J.4j($d);l A(){o b=$(\"a\");1p=$(\"x\"),1N=$(\"1u\"),4i=$(\"1K\"),6h=$(\"4n\");$d.3Z=b[0];$d.3X=b[1];$d.3M=b[3];$d.3W=b[2];$d.3F=1p[9];$d.1J=1N[0];$d.1w=1N[1];$d.4h=1p[0];$d.3x=1p[4];$d.35=1p[6];$d.1G=1p[10];$d.3i=1p[11];$d.2V=1p[12];$d.64=1p[13];$d.65=1p[14];$d.62=1p[15];$d.54=1p[16];$d.3r=1p[17];$d.3e=1N[2];$d.3G=1N[4];$d.43=1N[6];$d.2H=1N[7];$d.2f=1N[8];$d.1R=1N[9];$d.6f=4i[0];$d.6i=4i[1];$d.6l=6h[0];l $($){t $d.5L($)}}l $(){$d.3Z.1s=l(){$1L=$1L<=0?$1L-1:-1;k($1L%5==0){$d.1w.24();t}$d.1w.1g=$n.y-1;$d.1w.2u()};$d.3X.1s=l(){$n.2n(\"M\",-1);$d.1J.2u()};$d.3M.1s=l(){$n.2n(\"M\",1);$d.1J.2u()};$d.3W.1s=l(){$1L=$1L>=0?$1L+1:1;k($1L%5==0){$d.1w.24();t}$d.1w.1g=$n.y+1;$d.1w.2u()}}}6c.3c={6e:l(){$1L=0;$f.5X=h;k($f.3K&&$f.z.3K!=1i){$f.z.3K=1a;$f.z.4y()}h.5w();$n=h.6H=19 1C();$1z=19 1C();$1v=h.2w=19 1C();h.1B=h.2P($f.1B);h.3o=$f.3o==1i?($f.Z.28&&$f.Z.28?1n:1a):$f.3o;$f.2m=$f.2m==1i?($f.4L&&$f.Z.d?1n:1a):$f.2m;h.4S=h.3j(\"7H\");h.5D=h.3j(\"7E\");h.5O=h.3j(\"7B\");h.5Q=h.3j(\"7A\");h.22=h.3t($f.22,$f.22!=$f.6r?$f.1Q:$f.2N,$f.6r);h.1U=h.3t($f.1U,$f.1U!=$f.6q?$f.1Q:$f.2N,$f.6q);k(h.22.2t(h.1U)>0)$f.44=$1k.7D;k(h.1T()){h.5U();h.3P=$f.z[$f.1y]}q h.3p(1n,2);4f($n);$d.6l.1P=$1k.7C;$d.2H.1g=$1k.7P;$d.2f.1g=$1k.7O;$d.1R.1g=$1k.7R;$d.1R.25=!$c.1t($1v);h.5x();h.5g();k($f.44)7N($f.44);h.47();k($f.z.56==1&&$f.z[\"3H\"]===6K){$f.3k($f.z,\"53\",4K);$f.3k($f.z,\"2u\",l(){k($f&&$f.1M.1c.2e==\"2r\"){$c.3L();k($f.5X.3P!=$f.z[$f.1y]&&$f.z.7J)55($f.z,\"7M\")}});$f.z[\"3H\"]=1n}$c.1f=$f.z;3w()},5U:l(){o b=h.2I();k(b!=0){o $;k(b>0)$=h.1U;q $=h.22;k($f.Z.3T){$n.y=$.y;$n.M=$.M;$n.d=$.d}k($f.Z.28){$n.H=$.H;$n.m=$.m;$n.s=$.s}}},2O:l(J,C,Q,E,B,G,F,K,L){o $;k(J&&J.1T)$=J;q{$=19 1C();k(J!=\"\"){C=C||$f.1B;o H,P=0,O,A=/3g|2l|3b|y|2v|2W|3N|M|1M|d|%2h|51|H|52|m|4Z|s|2X|D|4g|W|w/g,b=C.3a(A);A.2E=0;k(L)O=J.49(/\\\\W+/);q{o D=0,M=\"^\";3m((O=A.33(C))!==1i){k(D>=0)M+=C.1E(D,O.3Y);D=A.2E;3f(O[0]){1e\"3g\":M+=\"(\\\\\\\\d{4})\";1h;1e\"2l\":M+=\"(\\\\\\\\d{3})\";1h;1e\"2v\":1e\"2W\":1e\"2X\":1e\"D\":M+=\"(\\\\\\\\D+)\";1h;61:M+=\"(\\\\\\\\d\\\\\\\\d?)\";1h}}M+=\".*$\";O=19 4e(M).33(J);P=1}k(O){1b(H=0;H<b.u;H++){o I=O[H+P];k(I)3f(b[H]){1e\"2v\":1e\"2W\":$.M=N(b[H],I);1h;1e\"y\":1e\"3b\":I=3B(I,0);k(I<50)I+=5j;q I+=7L;$.y=I;1h;1e\"2l\":$.y=3B(I,0)+$f.5f;1h;61:$[b[H].4X(-1)]=I;1h}}}q $.d=32}}$.68(Q,E,B,G,F,K);t $;l N(A,$){o b=A==\"2v\"?$1k.5z:$1k.2g;1b(o B=0;B<12;B++)k(b[B].3I()==$.7n(0,b[B].u).3I())t B+1;t-1}},3j:l(b){o B,$=$f[b],A=\"(?:\";k($){1b(B=0;B<$.u;B++){A+=h.2P($[B]);k(B!=$.u-1)A+=\"|\"}A=19 4e(A+\")\")}q A=1i;t A},2p:l(){o $=h.4N();k($f.z[$f.1y]!=$)$f.z[$f.1y]=$;h.3E()},3E:l($){o b=$f.$($f.7q),$=2M($,h.4N($f.1Q));k(b)b.1g=$;$f.z[\"3A\"]=$},2P:l(s){o 3C=\"2K\",1r,2D,6L=/#?\\\\{(.*?)\\\\}/;s=s+\"\";1b(o i=0;i<3C.u;i++)s=s.1l(\"%\"+3C.1I(i),h.1V(3C.1I(i),1i,$1z));k(s.1E(0,3)==\"#F{\"){s=s.1E(3,s.u-1);k(s.1q(\"t \")<0)s=\"t \"+s;s=$f.4A.2T(\"19 7p(\\\\\"\"+s+\"\\\\\");\");s=s()}q 3m((1r=6L.33(s))!=1i){1r.2E=1r.3Y+1r[1].u+1r[0].u-1r[1].u-1;2D=2i(2T(1r[1]));k(2D<0)2D=\"2j\"+(-2D);s=s.1E(0,1r.3Y)+2D+s.1E(1r.2E+1)}t s},3t:l(A,B,b){o $;A=h.2P(A);k(!A||A==\"\")A=b;k(7m A==\"7j\")$=A;q{$=h.2O(A,B,1i,1i,1,0,0,0,1a);$.y=(\"\"+$.y).1l(/^2j/,\"-\");$.M=(\"\"+$.M).1l(/^2j/,\"-\");$.d=(\"\"+$.d).1l(/^2j/,\"-\");$.H=(\"\"+$.H).1l(/^2j/,\"-\");$.m=(\"\"+$.m).1l(/^2j/,\"-\");$.s=(\"\"+$.s).1l(/^2j/,\"-\");k(A.1q(\"%2h\")>=0){A=A.1l(/%2h/g,\"0\");$.d=0;$.M=2i($.M)+1}$.1S()}t $},1T:l(){o b,$;k($f.7k||($f.6z!=\"\"&&$f.z[$f.1y]==\"\")){b=h.2P($f.6z);$=$f.1Q}q{b=$f.z[$f.1y];$=h.1B}$n.2a(h.2O(b,$));k(b!=\"\"){o A=1;k($f.Z.3T&&!h.4s($n)){$n.y=$1z.y;$n.M=$1z.M;$n.d=$1z.d;A=0}k($f.Z.28&&!h.4q($n)){$n.H=$1z.H;$n.m=$1z.m;$n.s=$1z.s;A=0}t A&&h.1t($n)}t 1},4s:l($){k($.y!=1i)$=3d($.y,4)+\"-\"+$.M+\"-\"+$.d;t $.3a(/^((\\\\d{2}(([6t][7z])|([6s][26]))[\\\\-\\\\/\\\\s]?((((0?[6v])|(1[6u]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[6A])))|(((0?[6G])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])))))|(\\\\d{2}(([6t][7y])|([6s][7v]))[\\\\-\\\\/\\\\s]?((((0?[6v])|(1[6u]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[6A])))|(((0?[6G])|(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])))))?$/)},4q:l($){k($.H!=1i)$=$.H+\":\"+$.m+\":\"+$.s;t $.3a(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},2I:l($,A){$=$||$n;o b=$.2t(h.22,A);k(b>0){b=$.2t(h.1U,A);k(b<0)b=0}t b},1t:l($,A,B){A=A||$f.Z.3O;o b=h.2I($,A);k(b==0){b=1;k(A==\"d\"&&B==1i)B=2B.5A((19 1F($.y,$.M-1,$.d).1W()-$f.41+7)%7);b=!h.5I(B)&&!h.5q($,A)}q b=0;t b},6B:l(){o b=$f.z,A=h,$=$f.z[$f.1y];k($f.4U>=0&&$f.4U<=2&&$!=1i){k($!=\"\")A.2w.2a(A.2O($,A.1B));k($==\"\"||(A.4s(A.2w)&&A.4q(A.2w)&&A.1t(A.2w))){k($!=\"\"){A.6H.2a(A.2w);A.2p()}q A.3E(\"\")}q t 1n}t 1a},3L:l($){3w();k(h.6B()){h.3p(1a);$f.1m()}q{k($){2R($);h.3p(1n,2)}q h.3p(1n);$f.1Y()}},3s:l(){o E,C,D,K,A,H=19 2C(),F=$1k.5l,G=$f.41,I=\"\",$=\"\",b=19 1C($n.y,$n.M,$n.d,0,0,0),J=b.y,B=b.M;A=1-19 1F(J,B-1,1).1W()+G;k(A>1)A-=7;H.a(\"<1x Y=5F 2L=2F% 2s=0 2x=0 2q=0>\");H.a(\"<1j Y=5H 4p=5p>\");k($f.5b)H.a(\"<18>\"+F[0]+\"</18>\");1b(E=0;E<7;E++)H.a(\"<18>\"+F[(G+E)%7+1]+\"</18>\");H.a(\"</1j>\");1b(E=1,C=A;E<7;E++){H.a(\"<1j>\");1b(D=0;D<7;D++){b.1T(J,B,C++);b.1S();k(b.M==B){K=1a;k(b.2t($1v,\"d\")==0)I=\"7u\";q k(b.2t($1z,\"d\")==0)I=\"7t\";q I=($f.5a&&(0==(G+D)%7||6==(G+D)%7)?\"7r\":\"7s\");$=($f.5a&&(0==(G+D)%7||6==(G+D)%7)?\"7w\":\"7x\")}q k($f.5K){K=1a;I=\"7l\";$=\"7i\"}q K=1n;k($f.5b&&D==0&&(E<4||K))H.a(\"<18 Y=7o>\"+4B(b,$f.41==0?1:0)+\"</18>\");H.a(\"<18 \");k(K){k(h.1t(b,\"d\",D)){k(h.5N(2B.5A((19 1F(b.y,b.M-1,b.d).1W()-$f.41+7)%7))||h.5r(b))I=\"7K\";H.a(\"1s=\\\\\"3q(\"+b.y+\",\"+b.M+\",\"+b.d+\");\\\\\" \");H.a(\"2A=\\\\\"h.1d=\\'\"+$+\"\\'\\\\\" \");H.a(\"2y=\\\\\"h.1d=\\'\"+I+\"\\'\\\\\" \")}q I=\"7Q\";H.a(\"Y=\"+I);H.a(\">\"+b.d+\"</18>\")}q H.a(\"></18>\")}H.a(\"</1j>\")}H.a(\"</1x>\");t H.j()},5q:l(b,A){o $=h.4H(b,h.4S,A);t(h.4S&&$f.5e)?!$:$},5I:l($){t h.4I($,h.5D)},5r:l($){t h.4H($,h.5O)},5N:l($){t h.4I($,h.5Q)},4H:l($,B,A){o b=A==\"d\"?$f.4a:$f.1Q;t B?B.4o(h.3y(b,$)):0},4I:l(b,$){t $?$.4o(b):0},2U:l(p,c,r,e,2d){o s=19 2C(),4t=2d?\"r\"+p:p;5k=$n[p];s.a(\"<1x 2x=0 2q=3 2s=0\");1b(o i=0;i<r;i++){s.a(\"<1j 2Q=\\\\\"2Q\\\\\">\");1b(o j=0;j<c;j++){s.a(\"<18 2Q \");$n[p]=2T(e);k(($f.5e&&h.2I($n,p)==0)||h.1t($n,p)){s.a(\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\\\\"\");s.a(\"1m($d.\"+p+\"D);$d.\"+4t+\"I.1g=\"+$n[p]+\";$d.\"+4t+\"I.4y();\\\\\"\")}q s.a(\"Y=\\'4u\\'\");s.a(\">\"+(p==\"M\"?$1k.2g[$n[p]-1]:$n[p])+\"</18>\")}s.a(\"</1j>\")}s.a(\"</1x>\");$n[p]=5k;t s.j()},4z:l($,b){k($){o A=$.6V;k($66)A=$.7S().2z;b.1c.2z=A}},8L:l($){h.4z($,$d.3x);$d.3x.1P=h.2U(\"M\",2,6,\"i+j*6+1\",$==$d.2k)},4x:l(b,A){o $=19 2C();A=2M(A,$n.y-5);$.a(h.2U(\"y\",2,5,A+\"+i+j*5\",b==$d.2o));$.a(\"<1x 2x=0 2q=3 2s=0 4p=5p><1j><18 \");$.a(h.22.y<A?\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\'k(1X.2c)1X.2c();1X.4m=1a;$c.4x(0,\"+(A-10)+\")\\'\":\"Y=\\'4u\\'\");$.a(\">\\\\8R</18><18 Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\\\\"1m($d.35);$d.1w.4y();\\\\\">\\\\5u</18><18 \");$.a(h.1U.y>A+10?\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\'k(1X.2c)1X.2c();1X.4m=1a;$c.4x(0,\"+(A+10)+\")\\'\":\"Y=\\'4u\\'\");$.a(\">\\\\8A</18></1j></1x>\");h.4z(b,$d.35);$d.35.1P=$.j()},3V:l(A,b,$){$d[A+\"D\"].1P=h.2U(A,6,b,$)},8z:l(){h.3V(\"H\",4,\"i * 6 + j\")},8q:l(){h.3V(\"m\",2,\"i * 30 + j * 5\")},8x:l(){h.3V(\"s\",1,\"j * 10\")},4D:l(A){h.6D();o b=h.3l,C=b.1c,$=19 2C();$.a(\"<1x Y=5F 2L=2F% 2b=2F% 2s=0 2x=0 2q=0>\");$.a(\"<1j Y=5H><18><x 1c=\\\\\"2J:2z\\\\\">\"+$1k.8C+\"</x>\");k(!A)$.a(\"<x 1c=\\\\\"2J:5R;8B:8y\\\\\" 1s=\\\\\"1m($d.1G);\\\\\">\\\\5u</x>\");$.a(\"</18></1j>\");1b(o B=0;B<b.u;B++)k(b[B]){$.a(\"<1j><18 1c=\\'4F-4p:2z\\' 2Q=\\'2Q\\' Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 1s=\\\\\"\");$.a(\"3q(\"+b[B].y+\", \"+b[B].M+\", \"+b[B].d+\",\"+b[B].H+\",\"+b[B].m+\",\"+b[B].s+\");\\\\\">\");$.a(\"&4c;\"+h.3y(1i,b[B]));$.a(\"</18></1j>\")}q $.a(\"<1j><18 Y=\\'1A\\'>&4c;</18></1j>\");$.a(\"</1x>\");$d.1G.1P=$.j()},5w:l(){$(/w/);$(/4g|W/);$(/2X|D/);$(/3g|2l|3b|y/);$(/2v|2W|3N|M/);$(/1M|d/);$(/51|H/);$(/52|m/);$(/4Z|s/);$f.Z.3T=($f.Z.y||$f.Z.M||$f.Z.d)?1a:1n;$f.Z.28=($f.Z.H||$f.Z.m||$f.Z.s)?1a:1n;$f.2N=$f.2N.1l(/%1F/,$f.4a).1l(/%8E/,$f.5t);k($f.Z.3T){k($f.Z.28)$f.1Q=$f.2N;q $f.1Q=$f.4a}q $f.1Q=$f.5t;l $(b){o $=(b+\"\").4X(1,2);$f.Z[$]=b.33($f.1B)?($f.Z.3O=$,1a):1n}},5x:l(){o $=0;$f.Z.y?($=1,1Y($d.1w,$d.3Z,$d.3W)):1m($d.1w,$d.3Z,$d.3W);$f.Z.M?($=1,1Y($d.1J,$d.3X,$d.3M)):1m($d.1J,$d.3X,$d.3M);$?1Y($d.4h):1m($d.4h);k($f.Z.28){1Y($d.2V);3v($d.3e,$f.Z.H);3v($d.3G,$f.Z.m);3v($d.43,$f.Z.s)}q 1m($d.2V);2S($d.2H,$f.5B);2S($d.2f,$f.5v);2S($d.1R,$f.4L);2S($d.54,!$f.5M&&$f.Z.d&&$f.8F);k($f.5m||!($f.5B||$f.5v||$f.4L))1m($d.3r);q 1Y($d.3r)},3p:l(B,D){o A=$f.z,b=$5E?\"Y\":\"1d\";k(B)C(A);q{k(D==1i)D=$f.4U;3f(D){1e 0:k(8D($1k.8r)){A[$f.1y]=h.3P;C(A)}q $(A);1h;1e 1:A[$f.1y]=h.3P;C(A);1h;1e 2:$(A);1h}}l C(A){o B=A.1d;k(B){o $=B.1l(/5o/g,\"\");k(B!=$)A.5n(b,$)}}l $($){$.5n(b,$.1d+\" 5o\")}},1V:l(D,b,$){$=$||$1v;o H,C=[D+D,D],E,A=$[D],F=l($){t 3d(A,$.u)};3f(D){1e\"w\":A=1W($);1h;1e\"D\":o G=1W($)+1;F=l($){t $.u==2?$1k.8s[G]:$1k.5l[G]};1h;1e\"W\":A=4B($);1h;1e\"y\":C=[\"3g\",\"2l\",\"3b\",\"y\"];b=b||C[0];F=l(b){t 3d((b.u<4)?(b.u<3?$.y%2F:($.y+5j-$f.5f)%8p):A,b.u)};1h;1e\"M\":C=[\"2v\",\"2W\",\"3N\",\"M\"];F=l($){t($.u==4)?$1k.5z[A-1]:($.u==3)?$1k.2g[A-1]:3d(A,$.u)};1h}b=b||D+D;k(\"2K\".1q(D)>-1&&D!=\"y\"&&!$f.Z[D])k(\"8I\".1q(D)>-1)A=0;q A=1;o B=[];1b(H=0;H<C.u;H++){E=C[H];k(b.1q(E)>=0){B[H]=F(E);b=b.1l(E,\"{\"+H+\"}\")}}1b(H=0;H<B.u;H++)b=b.1l(19 4e(\"\\\\\\\\{\"+H+\"\\\\\\\\}\",\"g\"),B[H]);t b},3y:l(b,$){$=$||h.2O($f.z[$f.1y],h.1B)||$1v;b=b||h.1B;k(b.1q(\"%2h\")>=0){o A=19 1C();A.2a($);A.d=0;A.M=2i(A.M)+1;A.1S();b=b.1l(/%2h/g,A.d)}o B=\"8v\";1b(o D=0;D<B.u;D++){o C=B.1I(D);b=h.1V(C,b,$)}k($f.Z[\"D\"]){b=b.1l(/2X/g,\"%1M\").1l(/D/g,\"%d\");b=h.1V(\"M\",b,$);b=b.1l(/\\\\%1M/g,h.1V(\"D\",\"2X\")).1l(/\\\\%d/g,h.1V(\"D\",\"D\"))}q b=h.1V(\"M\",b,$);t b},8w:l(b,$){t h.1V(b,$,$n)},4N:l($){t h.3y($,$n)},47:l(){$d.3F.1P=\"\";k($f.5M){$c.3o=1a;$f.5K=1n;$d.1d=\"4b 8u\";o $=19 2C();$.a(\"<1x Y=8G 2L=2F% 2x=0 2q=0 2s=1><1j><18 5s=5C>\");$.a(h.3s());$.a(\"</18><18 5s=5C>\");$n.2n(\"M\",1);$.a(h.3s());$d.2k=$d.1J.5y(1a);$d.2o=$d.1w.5y(1a);$d.3F.4j($d.2k);$d.3F.4j($d.2o);$d.2k.1g=$1k.2g[$n.M-1];$d.2k[\"3A\"]=$n.M;$d.2o.1g=$n.y;4k(\"5S,5V\");$d.2k.1d=$d.2o.1d=\"42\";$n.2n(\"M\",-1);$.a(\"</18></1j></1x>\");$d.3i.1P=$.j()}q{$d.1d=\"4b\";$d.3i.1P=h.3s()}k(!$f.Z.d||$f.8P){h.4D(1a);3J($d.1G)}q 1m($d.1G);h.5P()},5P:l(){o b=8Q.1O.5L(\"8S\");1b(o C=0;C<b.u;C++){o $=$d.1c.2b;$d.1c.2b=\"\";o A=$d.36;k(b[C].8J==5G&&A){b[C].1c.2L=$d.5c+\"5d\";o B=$d.2V.36;k(B&&$d.3r.1c.2e==\"2r\"&&$d.2V.1c.2e!=\"2r\"&&1O.5J.8O-A>=B){A+=B;$d.1c.2b=A}q $d.1c.2b=$;b[C].1c.2b=2B.6g(A,$d.36)+\"5d\"}}$d.1G.1c.2L=$d.3i.5c;$d.1G.1c.2b=$d.3i.36},4P:l(){$n.d=2B.8H(19 1F($n.y,$n.M,0).2G(),$n.d);$1v.2a($n);h.2p();k(!$f.5m)k(h.1t($n)){4r();1m($f.1M)}k($f.5h)29(\"5h\")},5g:l(){$d.2H.1s=l(){k(!29(\"8K\")){$f.z[$f.1y]=\"\";$c.3E(\"\");4r();1m($f.1M);k($f.5i)29(\"5i\")}};$d.1R.1s=l(){3q()};k(h.1t($1z)){$d.2f.25=1n;$d.2f.1s=l(){$n.2a($1z);3q()}}q $d.2f.25=1a},6D:l(){o H,G,A,F,C=[],$=5,E=$f.6C.u,b=$f.Z.3O;k(E>$)E=$;q k(b==\"m\"||b==\"s\")C=[-60,-30,0,30,60,-15,15,-45,45];q 1b(H=0;H<$;H++)C[H]=$n[b]-2+H;1b(H=G=0;H<E;H++){A=h.3t($f.6C[H]);k(h.1t(A))h.3l[G++]=A}o B=\"2K\",D=[1,1,1,0,0,0];1b(H=0;H<=B.1q(b);H++)D[H]=$n[B.1I(H)];1b(H=0;G<$;H++)k(H<C.u){A=19 1C(D[0],D[1],D[2],D[3],D[4],D[5]);A[b]=C[H];A.1S();k(h.1t(A))h.3l[G++]=A}q h.3l[G++]=1i}};l 4r(){o b=$f.z;83{k(b.1c.2e!=\"2r\"&&b.3h!=\"6I\"&&(b.63.3I()==\"1u\"||b.63.3I()==\"81\")){k($f.82==b)$f.z[\"3H\"]=1a;$f.z.24();t}}87($){}b[\"3H\"]=1n}l 2C(){h.s=19 88();h.i=0;h.a=l($){h.s[h.i++]=$};h.j=l(){t h.s.86(\"\")}}l 4B($,B){B=B||0;o b=19 1F($.y,$.M-1,$.d+B);b.6w(b.2G()-(b.1W()+6)%7+$f.7V-1);o A=b.6N();b.7W(0);b.6w(4);t 2B.7T((A-b.6N())/(7*7U))+1}l 1W($){o b=19 1F($.y,$.M-1,$.d);t b.1W()}l 1Y(){3u(3n,\"\")}l 3J(){3u(3n,\"6P\")}l 1m(){3u(3n,\"2r\")}l 3u(b,$){1b(i=0;i<b.u;i++)b[i].1c.2e=$}l 2S(b,$){$?1Y(b):1m(b)}l 3v(b,$){k($)b.25=1n;q{b.25=1a;b.1g=\"7Z\"}}l c(p,1H){k(p==\"M\")1H=3z(1H,1,12);q k(p==\"H\")1H=3z(1H,0,23);q k(\"6o\".1q(p)>=0)1H=3z(1H,0,59);k($1v[p]!=1H&&!29(p+\"80\")){o 6M=\"21(\\\\\"\"+p+\"\\\\\",\"+1H+\")\",3D=$c.2I();k(3D==0)2T(6M);q k(3D<0)4Y($c.22);q k(3D>0)4Y($c.1U);$d.1R.25=!$c.1t($1v);k(\"7X\".1q(p)>=0)$c.47();29(p+\"7Y\")}l 4Y($){4f($c.1t($)?$:$1v)}}l 4f($){21(\"y\",$.y);21(\"M\",$.M);21(\"d\",$.d);21(\"H\",$.H);21(\"m\",$.m);21(\"s\",$.s)}l 3q(F,B,b,D,C,A){o $=19 1C($n.y,$n.M,$n.d,$n.H,$n.m,$n.s);$n.1T(F,B,b,D,C,A);k(!29(\"8j\")){o E=$.y==F&&$.M==B&&$.d==b;k(!E&&3n.u!=0){c(\"y\",F);c(\"M\",B);c(\"d\",b);$c.1f=$f.z;k($f.2m)$c.2p()}k($c.3o||E||3n.u==0)$c.4P()}q $n=$}l 29($){o b;k($f[$])b=$f[$].4M($f.z,$f);t b}l 21(b,$){k($==1i)$=$n[b];$1v[b]=$n[b]=$;k(\"8k\".1q(b)>=0)$d[b+\"I\"].1g=$;k(b==\"M\"){$d.1J[\"3A\"]=$;$d.1J.1g=$1k.2g[$-1]}}l 3z(b,$,A){k(b<$)b=$;q k(b>A)b=A;t b}l 6J($,b){$f.3k($,\"53\",l(){o $=1X,A=($.4O==6K)?$.4J:$.4O;k(A==9)b()})}l 3d($,b){$=$+\"\";3m($.u<b)$=\"0\"+$;t $}l 3w(){1m($d.35,$d.3x,$d.64,$d.65,$d.62)}l 58($){k($c.1f.56!=1)$c.1f=$d.3e;3f($c.1f){1e $d.3e:c(\"H\",$n.H+$);1h;1e $d.3G:c(\"m\",$n.m+$);1h;1e $d.43:c(\"s\",$n.s+$);1h}k($f.2m)$c.2p()}l 1C(D,A,$,C,B,b){h.1T(D,A,$,C,B,b)}1C.3c={1T:l(E,B,b,D,C,A){o $=19 1F();h.y=1o(E,h.y,$.4R());h.M=1o(B,h.M,$.4Q()+1);h.d=$f.Z.d?1o(b,h.d,$.2G()):1;h.H=1o(D,h.H,$.4T());h.m=1o(C,h.m,$.4W());h.s=1o(A,h.s,$.4V())},2a:l($){k($)h.1T($.y,$.M,$.d,$.H,$.m,$.s)},68:l(E,B,b,D,C,A){o $=19 1F();h.y=1o(h.y,E,$.4R());h.M=1o(h.M,B,$.4Q()+1);h.d=$f.Z.d?1o(h.d,b,$.2G()):1;h.H=1o(h.H,D,$.4T());h.m=1o(h.m,C,$.4W());h.s=1o(h.s,A,$.4V())},2t:l($,C){o A=\"2K\",b,B;C=A.1q(C);C=C>=0?C:5;1b(o D=0;D<=C;D++){B=A.1I(D);b=h[B]-$[B];k(b>0)t 1;q k(b<0)t-1}t 0},1S:l(){o $=19 1F(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.4R();h.M=$.4Q()+1;h.d=$.2G();h.H=$.4T();h.m=$.4W();h.s=$.4V();t!69(h.y)},2n:l(b,$){k(\"2K\".1q(b)>=0){o A=h.d;k(b==\"M\")h.d=1;h[b]+=$;h.1S();h.d=A}}};l 2i($){t 8h($,10)}l 3B($,b){t 2M(2i($),b)}l 1o($,A,b){t 3B($,2M(A,b))}l 2M($,b){t $==1i||69($)?b:$}l 55(A,$){k($66)A.55(\"67\"+$);q{o b=1O.8i(\"8n\");b.8o($,1a,1a);A.8l(b)}}l 3R($){o A,B,b=\"y,M,H,m,s,5V,5S\".49(\",\");1b(B=0;B<b.u;B++){A=b[B];k($d[A+\"I\"]==$)t A.4X(A.u-1,A.u)}t 0}l 6m($){o b=3R(h);k(!b)t;$c.1f=h;k(b==\"y\")h.1d=\"5T\";q k(b==\"M\"){h.1d=\"5T\";h.1g=h[\"3A\"]}h.4w();$c[\"2U\"+b](h);3J($d[b+\"D\"])}l 3Q(5W){o p=3R(h),2d,4E,v=h.1g,5Z=$n[p];k(p==0)t;$n[p]=5Y(v)>=0?5Y(v):$n[p];k(p==\"y\"){2d=h==$d.2o;k(2d&&$n.M==12)$n.y-=1}q k(p==\"M\"){2d=h==$d.2k;k(2d){4E=$1k.2g[$n[p]-1];k(5Z==12)$n.y+=1;$n.2n(\"M\",-1)}k($1v.M==$n.M)h.1g=4E||$1k.2g[$n[p]-1];k(($1v.y!=$n.y))c(\"y\",$n.y)}2T(\"c(\\\\\"\"+p+\"\\\\\",\"+$n[p]+\")\");k(5W!==1a){k(p==\"y\"||p==\"M\")h.1d=\"42\";1m($d[p+\"D\"])}k($f.2m)$c.2p()}l 2R($){k($.2c){$.2c();$.8m()}q{$.4m=1a;$.6a=1n}k($6b)$.4J=0}l 4k($){o A=$.49(\",\");1b(o B=0;B<A.u;B++){o b=A[B]+\"I\";$d[b].8b=6m;$d[b].2u=3Q}}l 4K(M){o H=M.6n||M.6k,Q=M.4O||M.4J;4C=$f.1M.1c.2e!=\"2r\";k(Q>=8c&&Q<=89)Q-=48;k($f.8a&&4C){k(!H.34){H.34=$f.20[1];$c.1f=$f.z}k(H==$f.z)$c.1f=$f.z;k(Q==27)k(H==$f.z){$c.3L();t}q $f.z.24();k(Q>=37&&Q<=40){o U;k($c.1f==$f.z||$c.1f==$d.1R)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]);2R(M);t}q{U=$f.Z.3O;$d[U+\"I\"].24()}U=U||3R($c.1f);k(U){k(Q==38||Q==39)$n[U]+=1;q $n[U]-=1;$n.1S();$c.1f.1g=$n[U];3Q.4M($c.1f,1a);$c.1f.4w()}}q k(Q==9){o D=H.34;1b(o R=0;R<$f.20.u;R++)k(D.25==1a||D.36==0)D=D.34;q 1h;k($c.1f!=D){$c.1f=D;D.24()}}q k(Q==13){3Q.4M($c.1f);k($c.1f.3h==\"1K\")$c.1f.8f();q $c.4P();$c.1f=$f.z}}q k(Q==9&&H==$f.z)$c.3L();k($f.8g&&!$6b&&!$f.3K&&$c.1f==$f.z&&(Q>=48&&Q<=57)){o T=$f.z,S=T.1g,F=E(T),I={1Z:\"\",1r:[]},R=0,K,N=0,X=0,O=0,J,b=/3g|2l|3b|y|3N|M|1M|d|%2h|51|H|52|m|4Z|s|4g|W|w/g,L=$f.1B.3a(b),B,A,$,V,W,G,J=0;k(S!=\"\"){O=S.3a(/[0-9]/g);O=O==1i?0:O.u;1b(R=0;R<L.u;R++)O-=2B.6g(L[R].u,2);O=O>=0?1:0;k(O==1&&F>=S.u)F=S.u-1}S=S.1E(0,F)+8d.8e(Q)+S.1E(F+O);F++;1b(R=0;R<S.u;R++){o C=S.1I(R);k(/[0-9]/.4o(C))I.1Z+=C;q I.1r[R]=1}S=\"\";b.2E=0;3m((K=b.33($f.1B))!==1i){X=K.3Y-(K[0]==\"%2h\"?1:0);k(N>=0){S+=$f.1B.1E(N,X);k(F>=N+J&&F<=X+J)F+=X-N}N=b.2E;G=N-X;B=I.1Z.1E(0,G);A=K[0].1I(0);$=2i(B.1I(0));k(I.1Z.u>1){V=I.1Z.1I(1);W=$*10+2i(V)}q{V=\"\";W=$}k(I.1r[X+1]||A==\"M\"&&W>12||A==\"d\"&&W>31||A==\"H\"&&W>23||\"6o\".1q(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.1Z=I.1Z.1E(G);k(I.1Z==\"\")1h}T.1g=S;P(T,F);2R(M)}k(4C&&$c.1f!=$f.z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2R(M);l E(A){o b=0;k($f.4A.1O.6Q){o B=$f.4A.1O.6Q.85(),$=B.4F.u;B.6F(\"4v\",-A.1g.u);b=B.4F.u-$}q k(A.4G||A.4G==\"0\")b=A.4G;t b}l P(b,A){k(b.6x){b.24();b.6x(A,A)}q k(b.6y){o $=b.6y();$.8M(1a);$.8N(\"4v\",A);$.6F(\"4v\",A);$.4w()}}}1O.8t=1',62,551,'|||||||||||_||||dp||this|||if|function||dt|var||else|||return|length|||div||el|||||||||||||||||||||||||class|has|||||||||td|new|true|for|style|className|case|currFocus|value|break|null|tr|lang|replace|hide|false|pInt3|divs|indexOf|arr|onclick|checkValid|input|sdt|yI|table|elProp|tdt|menu|dateFmt|DPDate|id|substring|Date|qsDivSel|pv|charAt|MI|button|ny|dd|ipts|document|innerHTML|realFmt|okI|refresh|loadDate|maxDate|getP|getDay|event|show|str|focusArr|sv|minDate||focus|disabled|||st|callFunc|loadFromDate|height|preventDefault|isR|display|todayI|aMonStr|ld|pInt|9700|rMI|yyy|autoUpdateOnChanged|attr|ryI|update|cellpadding|none|border|compareWith|onblur|MMMM|date|cellspacing|onmouseout|left|onmouseover|Math|sb|tmpEval|lastIndex|100|getDate|clearI|checkRange|float|yMdHms|width|rtn|realFullFmt|splitDate|doExp|nowrap|_cancelKey|shorH|eval|_f|tDiv|MMM|DD|menuSel|menuOn||||exec|nextCtrl|yD|offsetHeight||||match|yy|prototype|doStr|HI|switch|yyyy|type|dDiv|_initRe|attachEvent|QS|while|arguments|autoPickDate|mark|day_Click|bDiv|_fd|doCustomDate|setDisp|disHMS|hideSel|MD|getDateStr|makeInRange|realValue|pInt2|ps|rv|setRealValue|rMD|mI|My97Mark|toLowerCase|showB|readOnly|close|rightImg|MM|minUnit|oldValue|_blur|_foundInput|navImg|sd|onmousedown|_fHMS|navRightImg|leftImg|index|navLeftImg||firstDayOfWeek|yminput|sI|errMsg|||draw||split|realDateFmt|WdateDiv|nbsp|maxlength|RegExp|_setAll|WW|titleDiv|btns|appendChild|_inputBindEvent|dpButton|cancelBubble|span|test|align|isTime|elFocus|isDate|fp|invalidMenu|character|select|_fy|blur|_fMyPos|win|getWeek|isShow|_fillQS|mStr|text|selectionStart|testDate|testDay|keyCode|_tab|isShowOK|call|getNewDateStr|which|pickDate|getMonth|getFullYear|ddateRe|getHours|errDealMode|getSeconds|getMinutes|slice|_setFrom|ss||HH|mm|onkeydown|qsDiv|fireEvent|nodeType||updownEvent||highLineWeekDay|isShowWeek|offsetWidth|px|opposite|yearOffset|initBtn|onpicked|oncleared|2000|bak|aWeekStr|eCont|setAttribute|WdateFmtErr|center|testDisDate|testSpeDate|valign|realTimeFmt|xd7|isShowToday|_dealFmt|initShowAndHide|cloneNode|aLongMonStr|abs|isShowClear|top|ddayRe|FF|WdayTable|window|MTitle|testDisDay|body|isShowOthers|getElementsByTagName|doubleCalendar|testSpeDay|sdateRe|autoSize|sdayRe|right|rM|yminputfocus|_makeDateInRange|ry|showDiv|cal|Number|oldv||default|sD|nodeName|HD|mD|IE|on|coverDate|isNaN|returnValue|OPERA|My97DP|tE|init|upButton|max|spans|downButton|readonly|target|timeSpan|_focus|srcElement|ms|tm|defMaxDate|defMinDate|13579|02468|02|13578|setDate|setSelectionRange|createTextRange|startDate|01|checkAndUpdate|quickSel|initQS|Event|moveStart|469|newdate|hidden|attachTabEvent|undefined|re|func|valueOf|_ieEmuEventHandler|block|selection|NavImgll|YMenu|dpTitle|NavImgl|offsetLeft|dpTimeUp|dpTimeDown|MMenu|__defineGetter__|dpQS|NavImgrr|position|dpTime|hhMenu|overflow|addEventListener|absolute|createElement|HTMLElement|dpTimeStr|parentNode|tB|rowspan|NavImgr|mmMenu|ssMenu|dpControl|WotherDayOn|object|alwaysUseStartDate|WotherDay|typeof|substr|Wweek|Function|vel|Wwday|Wday|Wtoday|Wselday|01345789|WwdayOn|WdayOn|1235679|048|specialDays|specialDates|timeStr|err_1|disabledDays|dpTodayInput|dpClearInput|disabledDates|dpOkInput|onchange|WspecialDay|1900|change|alert|todayStr|clearStr|WinvalidDay|okStr|getBoundingClientRect|round|86400000|whichDayIsfirstWeek|setMonth|yMd|changed|00|changing|textarea|srcEl|try|__defineSetter__|createRange|join|catch|Array|105|enableKeyboard|onfocus|96|String|fromCharCode|click|enableInputMask|parseInt|createEvent|onpicking|yHms|dispatchEvent|stopPropagation|HTMLEvents|initEvent|1000|_fm|errAlertMsg|aLongWeekStr|ready|WdateDiv2|ydHmswW|getNewP|_fs|pointer|_fH|u2192|cursor|quickStr|confirm|Time|qsEnabled|WdayTable2|min|Hms|contentWindow|onclearing|_fM|collapse|moveEnd|scrollHeight|autoShowQS|parent|u2190|iframe'.split('|'),0,{}))"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naLongWeekStr:[\"wk\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\naLongMonStr: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u8303\\u56F4,\\u9700\\u8981\\u64A4\\u9500\\u5417?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u786E\\u5B9A\",\nupdateStr: \"\\u786E\\u5B9A\",\ntimeStr: \"\\u65F6\\u95F4\",\nquickStr: \"\\u5FEB\\u901F\\u9009\\u62E9\", \nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u4E8E\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u7BC4\\u570D,\\u9700\\u8981\\u64A4\\u92B7\\u55CE?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u78BA\\u5B9A\",\nupdateStr: \"\\u78BA\\u5B9A\",\ntimeStr: \"\\u6642\\u9593\",\nquickStr: \"\\u5FEB\\u901F\\u9078\\u64C7\",\nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u65BC\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/skin/default/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.7\n */\n\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#FFFFFF;\n\tborder:#bbb 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tdisplay:block;\n\tcursor:pointer;\n\theight:16px;\n\twidth:16px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll 0 0;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll -16px 0;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -32px 0;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -48px 0;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tpadding:1px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\theight:20px;\n\tborder:0px;\n\twidth:50px;\n\tcursor:pointer;\t\t\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\theight:20px;\n\tcolor:blue;\n\tborder:#ccc 1px solid;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\t\n\tborder:#ccc 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n\t\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tbackground-color:#BDEBEE;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#FF2F2F;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#000;\n\tbackground-color:#C0EBEF;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A9E4E9;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#6A6AFF;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n}\n\n.WdateDiv #dpTime input{\n\twidth:18px;\n\theight:20px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n    background:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\t\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tmargin-top:2px;\n\tmargin-right:1px;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/My97DatePicker/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.7 Skin:whyGreen\n */ \n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tcursor:pointer;\n\tdisplay:block;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat -16px 0px;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -32px 0px;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -48px 0px;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:20px;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tmargin-top:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/locale/easyui-lang-en.js",
    "content": "if ($.fn.pagination){\n\t$.fn.pagination.defaults.beforePageText = 'Page';\n\t$.fn.pagination.defaults.afterPageText = 'of {pages}';\n\t$.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items';\n}\nif ($.fn.datagrid){\n\t$.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...';\n}\nif ($.fn.treegrid && $.fn.datagrid){\n\t$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;\n}\nif ($.messager){\n\t$.messager.defaults.ok = 'Ok';\n\t$.messager.defaults.cancel = 'Cancel';\n}\nif ($.fn.validatebox){\n\t$.fn.validatebox.defaults.missingMessage = 'This field is required.';\n\t$.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.';\n\t$.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.';\n\t$.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.';\n\t$.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.';\n}\nif ($.fn.numberbox){\n\t$.fn.numberbox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combobox){\n\t$.fn.combobox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combotree){\n\t$.fn.combotree.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combogrid){\n\t$.fn.combogrid.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.calendar){\n\t$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];\n\t$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n}\nif ($.fn.datebox){\n\t$.fn.datebox.defaults.currentText = 'Today';\n\t$.fn.datebox.defaults.closeText = 'Close';\n\t$.fn.datebox.defaults.okText = 'Ok';\n\t$.fn.datebox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.datetimebox && $.fn.datebox){\n\t$.extend($.fn.datetimebox.defaults,{\n\t\tcurrentText: $.fn.datebox.defaults.currentText,\n\t\tcloseText: $.fn.datebox.defaults.closeText,\n\t\tokText: $.fn.datebox.defaults.okText,\n\t\tmissingMessage: $.fn.datebox.defaults.missingMessage\n\t});\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js",
    "content": "if ($.fn.pagination){\n\t$.fn.pagination.defaults.beforePageText = '第';\n\t$.fn.pagination.defaults.afterPageText = '共{pages}页';\n\t$.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录';\n}\nif ($.fn.datagrid){\n\t$.fn.datagrid.defaults.loadMsg = '正在处理，请稍待。。。';\n}\nif ($.fn.treegrid && $.fn.datagrid){\n\t$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;\n}\nif ($.messager){\n\t$.messager.defaults.ok = '确定';\n\t$.messager.defaults.cancel = '取消';\n}\nif ($.fn.validatebox){\n\t$.fn.validatebox.defaults.missingMessage = '该输入项为必输项';\n\t$.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址';\n\t$.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址';\n\t$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间';\n\t$.fn.validatebox.defaults.rules.remote.message = '请修正该字段';\n}\nif ($.fn.numberbox){\n\t$.fn.numberbox.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combobox){\n\t$.fn.combobox.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combotree){\n\t$.fn.combotree.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combogrid){\n\t$.fn.combogrid.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.calendar){\n\t$.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六'];\n\t$.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];\n}\nif ($.fn.datebox){\n\t$.fn.datebox.defaults.currentText = '今天';\n\t$.fn.datebox.defaults.closeText = '关闭';\n\t$.fn.datebox.defaults.okText = '确定';\n\t$.fn.datebox.defaults.missingMessage = '该输入项为必输项';\n\t$.fn.datebox.defaults.formatter = function(date){\n\t\tvar y = date.getFullYear();\n\t\tvar m = date.getMonth()+1;\n\t\tvar d = date.getDate();\n\t\treturn y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);\n\t};\n\t$.fn.datebox.defaults.parser = function(s){\n\t\tif (!s) return new Date();\n\t\tvar ss = s.split('-');\n\t\tvar y = parseInt(ss[0],10);\n\t\tvar m = parseInt(ss[1],10);\n\t\tvar d = parseInt(ss[2],10);\n\t\tif (!isNaN(y) && !isNaN(m) && !isNaN(d)){\n\t\t\treturn new Date(y,m-1,d);\n\t\t} else {\n\t\t\treturn new Date();\n\t\t}\n\t};\n}\nif ($.fn.datetimebox && $.fn.datebox){\n\t$.extend($.fn.datetimebox.defaults,{\n\t\tcurrentText: $.fn.datebox.defaults.currentText,\n\t\tcloseText: $.fn.datebox.defaults.closeText,\n\t\tokText: $.fn.datebox.defaults.okText,\n\t\tmissingMessage: $.fn.datebox.defaults.missingMessage\n\t});\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #95B8E7;\n}\n.accordion .accordion-header {\n  background: #E0ECFF;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #FBEC88;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-color: #95B8E7;\n}\n.calendar-header {\n  background: #E0ECFF;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #F4F4F4;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #b7d2ff;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #FBEC88;\n  color: #000000;\n  border: 1px solid #E2C608;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #95B8E7;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #E0ECFF;\n}\n.combo-arrow-hover {\n  background-color: #eaf2ff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #efefef;\n  background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #aac5e7;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #95B8E7;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #F4F4F4;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dddddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #eaf2ff;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #95B8E7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #F4F4F4;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #F4F4F4;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dddddd;\n}\n.dialog-button {\n  border-top: 1px solid #dddddd;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #eaf2ff;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #95B8E7;\n}\n.panel-header {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #0E2D5F;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #95B8E7;\n}\n.accordion .accordion-header {\n  background: #E0ECFF;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #FBEC88;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #000000;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #95B8E7;\n}\n.window {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #95B8E7;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #F4F4F4;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dddddd;\n}\n.dialog-button {\n  border-top: 1px solid #dddddd;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #95B8E7;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #E0ECFF;\n}\n.combo-arrow-hover {\n  background-color: #eaf2ff;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #FBEC88;\n  color: #000000;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #aac5e7;\n}\n.layout-split-north {\n  border-bottom: 5px solid #E6EEF8;\n}\n.layout-split-south {\n  border-top: 5px solid #E6EEF8;\n}\n.layout-split-east {\n  border-left: 5px solid #E6EEF8;\n}\n.layout-split-west {\n  border-right: 5px solid #E6EEF8;\n}\n.layout-expand {\n  background-color: #E0ECFF;\n}\n.layout-expand-over {\n  background-color: #E0ECFF;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #eaf2ff;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #0E2D5F;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #0E2D5F;\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #E0ECFF;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #95B8E7;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #eaf2ff;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #eaf2ff;\n  color: #000000;\n  border: 1px solid #b7d2ff;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #efefef;\n  background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #aac5e7;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #95B8E7;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #F4F4F4;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dddddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #eaf2ff;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #95B8E7;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #E0ECFF;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #E0ECFF;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-color: #95B8E7;\n}\n.calendar-header {\n  background: #E0ECFF;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #F4F4F4;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #b7d2ff;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #FBEC88;\n  color: #000000;\n  border: 1px solid #E2C608;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #F4F4F4;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #95B8E7;\n}\n.spinner-arrow {\n  background-color: #E0ECFF;\n}\n.spinner-arrow-hover {\n  background-color: #eaf2ff;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #95B8E7;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #FBEC88;\n  color: #000000;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #95B8E7;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #E0ECFF;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #95B8E7;\n  background: #E0ECFF;\n}\n.slider-rule span {\n  border-color: #95B8E7;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #ddd;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #b7d2ff;\n  color: #000000;\n  background: #eaf2ff;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #aac5e7;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #95B8E7;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #95B8E7;\n}\n.tree-node-hover {\n  background: #eaf2ff;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #95B8E7;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #95B8E7;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #95B8E7;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #95B8E7;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #95B8E7;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #aac5e7;\n}\n.layout-split-north {\n  border-bottom: 5px solid #E6EEF8;\n}\n.layout-split-south {\n  border-top: 5px solid #E6EEF8;\n}\n.layout-split-east {\n  border-left: 5px solid #E6EEF8;\n}\n.layout-split-west {\n  border-right: 5px solid #E6EEF8;\n}\n.layout-expand {\n  background-color: #E0ECFF;\n}\n.layout-expand-over {\n  background-color: #E0ECFF;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #eaf2ff;\n  color: #000000;\n  border: 1px solid #b7d2ff;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #ddd;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #b7d2ff;\n  color: #000000;\n  background: #eaf2ff;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #95B8E7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #95B8E7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #eaf2ff;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #95B8E7;\n}\n.panel-header {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #0E2D5F;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #95B8E7;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #E0ECFF;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #E0ECFF;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #95B8E7;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #E0ECFF;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #95B8E7;\n  background: #E0ECFF;\n}\n.slider-rule span {\n  border-color: #95B8E7;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #95B8E7;\n}\n.spinner-arrow {\n  background-color: #E0ECFF;\n}\n.spinner-arrow-hover {\n  background-color: #eaf2ff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #aac5e7;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #eaf2ff;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #0E2D5F;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #0E2D5F;\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #E0ECFF;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #95B8E7;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #eaf2ff;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #95B8E7;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #95B8E7;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #95B8E7;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #95B8E7;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #95B8E7;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #95B8E7;\n}\n.tree-node-hover {\n  background: #eaf2ff;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/default/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #95B8E7;\n}\n.window {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #95B8E7;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #D3D3D3;\n}\n.accordion .accordion-header {\n  background: #f3f3f3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #0092DC;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-color: #D3D3D3;\n}\n.calendar-header {\n  background: #f3f3f3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #fafafa;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #ccc;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #0092DC;\n  color: #fff;\n  border: 1px solid #0070a9;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #D3D3D3;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #f3f3f3;\n}\n.combo-arrow-hover {\n  background-color: #e2e2e2;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #fafafa;\n  background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #bfbfbf;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #D3D3D3;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #fafafa;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #ddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #e2e2e2;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #D3D3D3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #fafafa;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #fafafa;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #ddd;\n}\n.dialog-button {\n  border-top: 1px solid #ddd;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #e2e2e2;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #D3D3D3;\n}\n.panel-header {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #575765;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #D3D3D3;\n}\n.accordion .accordion-header {\n  background: #f3f3f3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #0092DC;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #D3D3D3;\n}\n.window {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #D3D3D3;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #fafafa;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #ddd;\n}\n.dialog-button {\n  border-top: 1px solid #ddd;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #D3D3D3;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #f3f3f3;\n}\n.combo-arrow-hover {\n  background-color: #e2e2e2;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #0092DC;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #bfbfbf;\n}\n.layout-split-north {\n  border-bottom: 5px solid #efefef;\n}\n.layout-split-south {\n  border-top: 5px solid #efefef;\n}\n.layout-split-east {\n  border-left: 5px solid #efefef;\n}\n.layout-split-west {\n  border-right: 5px solid #efefef;\n}\n.layout-expand {\n  background-color: #f3f3f3;\n}\n.layout-expand-over {\n  background-color: #f3f3f3;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #e2e2e2;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #575765;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #575765;\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f3f3f3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #D3D3D3;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #e2e2e2;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #e2e2e2;\n  color: #000000;\n  border: 1px solid #ccc;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #fafafa;\n  background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #bfbfbf;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #D3D3D3;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #fafafa;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #ddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #e2e2e2;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #D3D3D3;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f3f3f3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f3f3f3;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-color: #D3D3D3;\n}\n.calendar-header {\n  background: #f3f3f3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #fafafa;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #ccc;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #0092DC;\n  color: #fff;\n  border: 1px solid #0070a9;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #fafafa;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #D3D3D3;\n}\n.spinner-arrow {\n  background-color: #f3f3f3;\n}\n.spinner-arrow-hover {\n  background-color: #e2e2e2;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #D3D3D3;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #0092DC;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #D3D3D3;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f3f3f3;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #D3D3D3;\n  background: #f3f3f3;\n}\n.slider-rule span {\n  border-color: #D3D3D3;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #f3f3f3;\n  border-color: #D3D3D3;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #f3f3f3;\n}\n.menu-active {\n  border-color: #ccc;\n  color: #000000;\n  background: #e2e2e2;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #bfbfbf;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #D3D3D3;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #D3D3D3;\n}\n.tree-node-hover {\n  background: #e2e2e2;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #D3D3D3;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #D3D3D3;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #D3D3D3;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #D3D3D3;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #D3D3D3;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #bfbfbf;\n}\n.layout-split-north {\n  border-bottom: 5px solid #efefef;\n}\n.layout-split-south {\n  border-top: 5px solid #efefef;\n}\n.layout-split-east {\n  border-left: 5px solid #efefef;\n}\n.layout-split-west {\n  border-right: 5px solid #efefef;\n}\n.layout-expand {\n  background-color: #f3f3f3;\n}\n.layout-expand-over {\n  background-color: #f3f3f3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #e2e2e2;\n  color: #000000;\n  border: 1px solid #ccc;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #f3f3f3;\n  border-color: #D3D3D3;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #f3f3f3;\n}\n.menu-active {\n  border-color: #ccc;\n  color: #000000;\n  background: #e2e2e2;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #D3D3D3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #D3D3D3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #e2e2e2;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #D3D3D3;\n}\n.panel-header {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #575765;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #D3D3D3;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f3f3f3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f3f3f3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #D3D3D3;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f3f3f3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #D3D3D3;\n  background: #f3f3f3;\n}\n.slider-rule span {\n  border-color: #D3D3D3;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #D3D3D3;\n}\n.spinner-arrow {\n  background-color: #f3f3f3;\n}\n.spinner-arrow-hover {\n  background-color: #e2e2e2;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #bfbfbf;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #e2e2e2;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #575765;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #575765;\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f3f3f3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #D3D3D3;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #e2e2e2;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #D3D3D3;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #D3D3D3;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #D3D3D3;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #D3D3D3;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #D3D3D3;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #D3D3D3;\n}\n.tree-node-hover {\n  background: #e2e2e2;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/gray/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #D3D3D3;\n}\n.window {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #D3D3D3;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/icon.css",
    "content": ".icon-blank{\n\tbackground:url('icons/blank.gif') no-repeat center center;\n}\n.icon-add{\n\tbackground:url('icons/edit_add.png') no-repeat center center;\n}\n.icon-edit{\n\tbackground:url('icons/pencil.png') no-repeat center center;\n}\n.icon-remove{\n\tbackground:url('icons/edit_remove.png') no-repeat center center;\n}\n.icon-save{\n\tbackground:url('icons/filesave.png') no-repeat center center;\n}\n.icon-cut{\n\tbackground:url('icons/cut.png') no-repeat center center;\n}\n.icon-ok{\n\tbackground:url('icons/ok.png') no-repeat center center;\n}\n.icon-no{\n\tbackground:url('icons/no.png') no-repeat center center;\n}\n.icon-cancel{\n\tbackground:url('icons/cancel.png') no-repeat center center;\n}\n.icon-reload{\n\tbackground:url('icons/reload.png') no-repeat center center;\n}\n.icon-search{\n\tbackground:url('icons/search.png') no-repeat center center;\n}\n.icon-print{\n\tbackground:url('icons/print.png') no-repeat center center;\n}\n.icon-help{\n\tbackground:url('icons/help.png') no-repeat center center;\n}\n.icon-undo{\n\tbackground:url('icons/undo.png') no-repeat center center;\n}\n.icon-redo{\n\tbackground:url('icons/redo.png') no-repeat center center;\n}\n.icon-back{\n\tbackground:url('icons/back.png') no-repeat center center;\n}\n.icon-sum{\n\tbackground:url('icons/sum.png') no-repeat center center;\n}\n.icon-tip{\n\tbackground:url('icons/tip.png') no-repeat center center;\n}\n\n.icon-mini-add{\n\tbackground:url('icons/mini_add.png') no-repeat center center;\n}\n.icon-mini-edit{\n\tbackground:url('icons/mini_edit.png') no-repeat center center;\n}\n.icon-mini-refresh{\n\tbackground:url('icons/mini_refresh.png') no-repeat center center;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #c3d9e0;\n}\n.accordion .accordion-header {\n  background: #daeef5;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #6caef5;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-color: #c3d9e0;\n}\n.calendar-header {\n  background: #daeef5;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #6caef5;\n  color: #fff;\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #c3d9e0;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #daeef5;\n}\n.combo-arrow-hover {\n  background-color: #9cc8f7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #1a7bc9;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #c3d9e0;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #9cc8f7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #c3d9e0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #9cc8f7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #c3d9e0;\n}\n.panel-header {\n  background-color: #daeef5;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #c3d9e0;\n}\n.accordion .accordion-header {\n  background: #daeef5;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #6caef5;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #c3d9e0;\n}\n.window {\n  background-color: #daeef5;\n}\n.window-proxy {\n  border: 1px dashed #c3d9e0;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #c3d9e0;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #daeef5;\n}\n.combo-arrow-hover {\n  background-color: #9cc8f7;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #6caef5;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #1a7bc9;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #daeef5;\n}\n.layout-expand-over {\n  background-color: #daeef5;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #9cc8f7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #daeef5;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #daeef5;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #c3d9e0;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #9cc8f7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #1a7bc9;\n  background-repeat: repeat-x;\n  border: 1px solid #1a7bc9;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #1a7bc9;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #daeef5;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #daeef5;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #1a7bc9;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #c3d9e0;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #9cc8f7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #c3d9e0;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #daeef5;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #daeef5;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-color: #c3d9e0;\n}\n.calendar-header {\n  background: #daeef5;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #6caef5;\n  color: #fff;\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #c3d9e0;\n}\n.spinner-arrow {\n  background-color: #daeef5;\n}\n.spinner-arrow-hover {\n  background-color: #9cc8f7;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #c3d9e0;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #6caef5;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #c3d9e0;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #daeef5;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #c3d9e0;\n  background: #daeef5;\n}\n.slider-rule span {\n  border-color: #c3d9e0;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #9cc8f7;\n  color: #404040;\n  background: #9cc8f7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #1a7bc9;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #c3d9e0;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #c3d9e0;\n}\n.tree-node-hover {\n  background: #9cc8f7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #c3d9e0;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #c3d9e0;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #c3d9e0;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #c3d9e0;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #6caef5;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #1a7bc9;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #daeef5;\n}\n.layout-expand-over {\n  background-color: #daeef5;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #1a7bc9;\n  background-repeat: repeat-x;\n  border: 1px solid #1a7bc9;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #1a7bc9;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #daeef5;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #9cc8f7;\n  color: #404040;\n  background: #9cc8f7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #c3d9e0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #c3d9e0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #9cc8f7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #c3d9e0;\n}\n.panel-header {\n  background-color: #daeef5;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #c3d9e0;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #daeef5;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #c3d9e0;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #c3d9e0;\n  background: #daeef5;\n}\n.slider-rule span {\n  border-color: #c3d9e0;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #c3d9e0;\n}\n.spinner-arrow {\n  background-color: #daeef5;\n}\n.spinner-arrow-hover {\n  background-color: #9cc8f7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #1a7bc9;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #9cc8f7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #daeef5;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #daeef5;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #c3d9e0;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #9cc8f7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #c3d9e0;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #c3d9e0;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #c3d9e0;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #c3d9e0;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #c3d9e0;\n}\n.tree-node-hover {\n  background: #9cc8f7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-blue/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #c3d9e0;\n}\n.window {\n  background-color: #daeef5;\n}\n.window-proxy {\n  border: 1px dashed #c3d9e0;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #abafb8;\n}\n.accordion .accordion-header {\n  background: #c7ccd1;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #84909c;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #abafb8;\n}\n.calendar {\n  border-color: #abafb8;\n}\n.calendar-header {\n  background: #c7ccd1;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E6E6E6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #84909c;\n  color: #fff;\n  border: 1px solid #84909c;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #abafb8;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #c7ccd1;\n}\n.combo-arrow-hover {\n  background-color: #E6E6E6;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #84909c;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #abafb8;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E6E6E6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #84909c;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #abafb8;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E6E6E6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #abafb8;\n}\n.panel-header {\n  background-color: #c7ccd1;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #abafb8;\n}\n.accordion .accordion-header {\n  background: #c7ccd1;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #84909c;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #abafb8;\n}\n.window {\n  background-color: #c7ccd1;\n}\n.window-proxy {\n  border: 1px dashed #abafb8;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #abafb8;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #c7ccd1;\n}\n.combo-arrow-hover {\n  background-color: #E6E6E6;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #84909c;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #84909c;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #c7ccd1;\n}\n.layout-expand-over {\n  background-color: #c7ccd1;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E6E6E6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #c7ccd1;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #c7ccd1;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #abafb8;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E6E6E6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #84909c;\n  background-repeat: repeat-x;\n  border: 1px solid #84909c;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #84909c;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #c7ccd1;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #c7ccd1;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #84909c;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #abafb8;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E6E6E6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #84909c;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #abafb8;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #c7ccd1;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #c7ccd1;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #abafb8;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #abafb8;\n}\n.calendar {\n  border-color: #abafb8;\n}\n.calendar-header {\n  background: #c7ccd1;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E6E6E6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #84909c;\n  color: #fff;\n  border: 1px solid #84909c;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #abafb8;\n}\n.spinner-arrow {\n  background-color: #c7ccd1;\n}\n.spinner-arrow-hover {\n  background-color: #E6E6E6;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #abafb8;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #84909c;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #abafb8;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #c7ccd1;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #abafb8;\n  background: #c7ccd1;\n}\n.slider-rule span {\n  border-color: #abafb8;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E6E6E6;\n  color: #404040;\n  background: #E6E6E6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #84909c;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #abafb8;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #abafb8;\n}\n.tree-node-hover {\n  background: #E6E6E6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #84909c;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #abafb8;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #abafb8;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #abafb8;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #abafb8;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #84909c;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #c7ccd1;\n}\n.layout-expand-over {\n  background-color: #c7ccd1;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #84909c;\n  background-repeat: repeat-x;\n  border: 1px solid #84909c;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #84909c;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #c7ccd1;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E6E6E6;\n  color: #404040;\n  background: #E6E6E6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #abafb8;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #abafb8;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E6E6E6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #abafb8;\n}\n.panel-header {\n  background-color: #c7ccd1;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #abafb8;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #c7ccd1;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #abafb8;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #abafb8;\n  background: #c7ccd1;\n}\n.slider-rule span {\n  border-color: #abafb8;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #abafb8;\n}\n.spinner-arrow {\n  background-color: #c7ccd1;\n}\n.spinner-arrow-hover {\n  background-color: #E6E6E6;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #84909c;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E6E6E6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #c7ccd1;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #c7ccd1;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #abafb8;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E6E6E6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #abafb8;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #abafb8;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #abafb8;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #abafb8;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #abafb8;\n}\n.tree-node-hover {\n  background: #E6E6E6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-gray/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #abafb8;\n}\n.window {\n  background-color: #c7ccd1;\n}\n.window-proxy {\n  border: 1px dashed #abafb8;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #b1c242;\n}\n.accordion .accordion-header {\n  background: #e5f0c9;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #c8d47b;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #b1c242;\n}\n.calendar {\n  border-color: #b1c242;\n}\n.calendar-header {\n  background: #e5f0c9;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E0F892;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #c8d47b;\n  color: #404040;\n  border: 1px solid #c8d47b;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #b1c242;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #e5f0c9;\n}\n.combo-arrow-hover {\n  background-color: #E0F892;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #859416;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #b1c242;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E0F892;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #b1c242;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E0F892;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #b1c242;\n}\n.panel-header {\n  background-color: #e5f0c9;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #b1c242;\n}\n.accordion .accordion-header {\n  background: #e5f0c9;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #c8d47b;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #b1c242;\n}\n.window {\n  background-color: #e5f0c9;\n}\n.window-proxy {\n  border: 1px dashed #b1c242;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #b1c242;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #e5f0c9;\n}\n.combo-arrow-hover {\n  background-color: #E0F892;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #c8d47b;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #859416;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #e5f0c9;\n}\n.layout-expand-over {\n  background-color: #e5f0c9;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E0F892;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #e5f0c9;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #e5f0c9;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #b1c242;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E0F892;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #9ba842;\n  background-repeat: repeat-x;\n  border: 1px solid #9ba842;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #9ba842;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #e5f0c9;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #e5f0c9;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #859416;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #b1c242;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E0F892;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #b1c242;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #e5f0c9;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #e5f0c9;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #b1c242;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #b1c242;\n}\n.calendar {\n  border-color: #b1c242;\n}\n.calendar-header {\n  background: #e5f0c9;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E0F892;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #c8d47b;\n  color: #404040;\n  border: 1px solid #c8d47b;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #b1c242;\n}\n.spinner-arrow {\n  background-color: #e5f0c9;\n}\n.spinner-arrow-hover {\n  background-color: #E0F892;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #b1c242;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #c8d47b;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #b1c242;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #e5f0c9;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #b1c242;\n  background: #e5f0c9;\n}\n.slider-rule span {\n  border-color: #b1c242;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E0F892;\n  color: #404040;\n  background: #E0F892;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #859416;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #b1c242;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #b1c242;\n}\n.tree-node-hover {\n  background: #E0F892;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #b1c242;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #b1c242;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #b1c242;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #b1c242;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #b1c242;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #859416;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #e5f0c9;\n}\n.layout-expand-over {\n  background-color: #e5f0c9;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #9ba842;\n  background-repeat: repeat-x;\n  border: 1px solid #9ba842;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #9ba842;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #e5f0c9;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E0F892;\n  color: #404040;\n  background: #E0F892;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #b1c242;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #b1c242;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E0F892;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #b1c242;\n}\n.panel-header {\n  background-color: #e5f0c9;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #b1c242;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #e5f0c9;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #b1c242;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #b1c242;\n  background: #e5f0c9;\n}\n.slider-rule span {\n  border-color: #b1c242;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #b1c242;\n}\n.spinner-arrow {\n  background-color: #e5f0c9;\n}\n.spinner-arrow-hover {\n  background-color: #E0F892;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #859416;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E0F892;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #e5f0c9;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #e5f0c9;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #b1c242;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E0F892;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #b1c242;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #b1c242;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #b1c242;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #b1c242;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #b1c242;\n}\n.tree-node-hover {\n  background: #E0F892;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-green/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #b1c242;\n}\n.window {\n  background-color: #e5f0c9;\n}\n.window-proxy {\n  border: 1px dashed #b1c242;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #d4a375;\n}\n.accordion .accordion-header {\n  background: #f0e3bf;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f7cc8f;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #d4a375;\n}\n.calendar {\n  border-color: #d4a375;\n}\n.calendar-header {\n  background: #f0e3bf;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff7d6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n  border: 1px solid #f7cc8f;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #d4a375;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e3bf;\n}\n.combo-arrow-hover {\n  background-color: #fff7d6;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #de8033;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #d4a375;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff7d6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #d4a375;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff7d6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #d4a375;\n}\n.panel-header {\n  background-color: #f0e3bf;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #d4a375;\n}\n.accordion .accordion-header {\n  background: #f0e3bf;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f7cc8f;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #d4a375;\n}\n.window {\n  background-color: #f0e3bf;\n}\n.window-proxy {\n  border: 1px dashed #d4a375;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #d4a375;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e3bf;\n}\n.combo-arrow-hover {\n  background-color: #fff7d6;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #de8033;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e3bf;\n}\n.layout-expand-over {\n  background-color: #f0e3bf;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff7d6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e3bf;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e3bf;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #d4a375;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff7d6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #de8033;\n  background-repeat: repeat-x;\n  border: 1px solid #de8033;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #de8033;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e3bf;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e3bf;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #de8033;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #d4a375;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff7d6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #d4a375;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e3bf;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e3bf;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #d4a375;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #d4a375;\n}\n.calendar {\n  border-color: #d4a375;\n}\n.calendar-header {\n  background: #f0e3bf;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff7d6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n  border: 1px solid #f7cc8f;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #d4a375;\n}\n.spinner-arrow {\n  background-color: #f0e3bf;\n}\n.spinner-arrow-hover {\n  background-color: #fff7d6;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #d4a375;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #d4a375;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e3bf;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #d4a375;\n  background: #f0e3bf;\n}\n.slider-rule span {\n  border-color: #d4a375;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff7d6;\n  color: #404040;\n  background: #fff7d6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #de8033;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #d4a375;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #d4a375;\n}\n.tree-node-hover {\n  background: #fff7d6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #d4a375;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #d4a375;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #d4a375;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #d4a375;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #de8033;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #de8033;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e3bf;\n}\n.layout-expand-over {\n  background-color: #f0e3bf;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #de8033;\n  background-repeat: repeat-x;\n  border: 1px solid #de8033;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #de8033;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e3bf;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff7d6;\n  color: #404040;\n  background: #fff7d6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #d4a375;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #d4a375;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff7d6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #d4a375;\n}\n.panel-header {\n  background-color: #f0e3bf;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #d4a375;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e3bf;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #d4a375;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #d4a375;\n  background: #f0e3bf;\n}\n.slider-rule span {\n  border-color: #d4a375;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #d4a375;\n}\n.spinner-arrow {\n  background-color: #f0e3bf;\n}\n.spinner-arrow-hover {\n  background-color: #fff7d6;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #de8033;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff7d6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e3bf;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e3bf;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #d4a375;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff7d6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #d4a375;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #d4a375;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #d4a375;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #d4a375;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #d4a375;\n}\n.tree-node-hover {\n  background: #fff7d6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-orange/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #d4a375;\n}\n.window {\n  background-color: #f0e3bf;\n}\n.window-proxy {\n  border: 1px dashed #d4a375;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #f6c1bc;\n}\n.accordion .accordion-header {\n  background: #f0e1e3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f09090;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-color: #f6c1bc;\n}\n.calendar-header {\n  background: #f0e1e3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff0e7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f09090;\n  color: #404040;\n  border: 1px solid #f09090;\n  padding: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #f6c1bc;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e1e3;\n}\n.combo-arrow-hover {\n  background-color: #fff0e7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #c75252;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #f6c1bc;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff0e7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f09090;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #f6c1bc;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff0e7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #f6c1bc;\n}\n.panel-header {\n  background-color: #f0e1e3;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #f6c1bc;\n}\n.accordion .accordion-header {\n  background: #f0e1e3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f09090;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #f6c1bc;\n}\n.window {\n  background-color: #f0e1e3;\n}\n.window-proxy {\n  border: 1px dashed #f6c1bc;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #f6c1bc;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e1e3;\n}\n.combo-arrow-hover {\n  background-color: #fff0e7;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f09090;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #c75252;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e1e3;\n}\n.layout-expand-over {\n  background-color: #f0e1e3;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff0e7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e1e3;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e1e3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #f6c1bc;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff0e7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #c75252;\n  background-repeat: repeat-x;\n  border: 1px solid #c75252;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #c75252;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e1e3;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e1e3;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #c75252;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #f6c1bc;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff0e7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f09090;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #f6c1bc;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e1e3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e1e3;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-color: #f6c1bc;\n}\n.calendar-header {\n  background: #f0e1e3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff0e7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f09090;\n  color: #404040;\n  border: 1px solid #f09090;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #f6c1bc;\n}\n.spinner-arrow {\n  background-color: #f0e1e3;\n}\n.spinner-arrow-hover {\n  background-color: #fff0e7;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #f6c1bc;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f09090;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #f6c1bc;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e1e3;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #f6c1bc;\n  background: #f0e1e3;\n}\n.slider-rule span {\n  border-color: #f6c1bc;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff0e7;\n  color: #404040;\n  background: #fff0e7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #c75252;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #f6c1bc;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #f6c1bc;\n}\n.tree-node-hover {\n  background: #fff0e7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f09090;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #f6c1bc;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #f6c1bc;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #f6c1bc;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #f6c1bc;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #eb6565;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #c75252;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e1e3;\n}\n.layout-expand-over {\n  background-color: #f0e1e3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #c75252;\n  background-repeat: repeat-x;\n  border: 1px solid #c75252;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #c75252;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e1e3;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff0e7;\n  color: #404040;\n  background: #fff0e7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #f6c1bc;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #f6c1bc;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff0e7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #f6c1bc;\n}\n.panel-header {\n  background-color: #f0e1e3;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #f6c1bc;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e1e3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #f6c1bc;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #f6c1bc;\n  background: #f0e1e3;\n}\n.slider-rule span {\n  border-color: #f6c1bc;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #f6c1bc;\n}\n.spinner-arrow {\n  background-color: #f0e1e3;\n}\n.spinner-arrow-hover {\n  background-color: #fff0e7;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #c75252;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff0e7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e1e3;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e1e3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #f6c1bc;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff0e7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #f6c1bc;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #f6c1bc;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #f6c1bc;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #f6c1bc;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #f6c1bc;\n}\n.tree-node-hover {\n  background: #fff0e7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/easyui1.3.3/themes/metro-red/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #f6c1bc;\n}\n.window {\n  background-color: #f0e1e3;\n}\n.window-proxy {\n  border: 1px dashed #f6c1bc;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/extEasyUI.js",
    "content": "/**\n * 使panel和datagrid在加载时提示\n * \n * @requires jQuery,EasyUI\n * \n */\n$.fn.panel.defaults.loadingMessage = '加载中....';\n$.fn.datagrid.defaults.loadMsg = '加载中....';\n\n/**\n * @requires jQuery,EasyUI\n * \n * panel关闭时回收内存，主要用于layout使用iframe嵌入网页时的内存泄漏问题\n */\n$.fn.panel.defaults.onBeforeDestroy = function() {\n\tvar frame = $('iframe', this);\n\ttry {\n\t\tif (frame.length > 0) {\n\t\t\tfor ( var i = 0; i < frame.length; i++) {\n\t\t\t\tframe[i].src = '';\n\t\t\t\tframe[i].contentWindow.document.write('');\n\t\t\t\tframe[i].contentWindow.close();\n\t\t\t}\n\t\t\tframe.remove();\n\t\t\tif (navigator.userAgent.indexOf(\"MSIE\") > 0) {// IE特有回收内存方法\n\t\t\t\ttry {\n\t\t\t\t\tCollectGarbage();\n\t\t\t\t} catch (e) {\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t}\n};\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 防止panel/window/dialog组件超出浏览器边界\n * @param left\n * @param top\n */\nvar easyuiPanelOnMove = function(left, top) {\n\tvar l = left;\n\tvar t = top;\n\tif (l < 1) {\n\t\tl = 1;\n\t}\n\tif (t < 1) {\n\t\tt = 1;\n\t}\n\tvar width = parseInt($(this).parent().css('width')) + 14;\n\tvar height = parseInt($(this).parent().css('height')) + 14;\n\tvar right = l + width;\n\tvar buttom = t + height;\n\tvar browserWidth = $(window).width();\n\tvar browserHeight = $(window).height();\n\tif (right > browserWidth) {\n\t\tl = browserWidth - width;\n\t}\n\tif (buttom > browserHeight) {\n\t\tt = browserHeight - height;\n\t}\n\t$(this).parent().css({/* 修正面板位置 */\n\t\tleft : l,\n\t\ttop : t\n\t});\n};\n$.fn.dialog.defaults.onMove = easyuiPanelOnMove;\n$.fn.window.defaults.onMove = easyuiPanelOnMove;\n$.fn.panel.defaults.onMove = easyuiPanelOnMove;\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 通用错误提示\n * \n * 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作\n */\nvar easyuiErrorFunction = function(XMLHttpRequest) {\n\tparent.$.messager.alert('错误', XMLHttpRequest.responseText);\n};\n$.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.tree.defaults.onLoadError = easyuiErrorFunction;\n$.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.combobox.defaults.onLoadError = easyuiErrorFunction;\n$.fn.form.defaults.onLoadError = easyuiErrorFunction;\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 为datagrid、treegrid增加表头菜单，用于显示或隐藏列，注意：冻结列不在此菜单中\n */\nvar createGridHeaderContextMenu = function(e, field) {\n\te.preventDefault();\n\tvar grid = $(this);/* grid本身 */\n\tvar headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */\n\tif (!headerContextMenu) {\n\t\tvar tmenu = $('<div style=\"width:100px;\"></div>').appendTo('body');\n\t\tvar fields = grid.datagrid('getColumnFields');\n\t\tfor ( var i = 0; i < fields.length; i++) {\n\t\t\tvar fildOption = grid.datagrid('getColumnOption', fields[i]);\n\t\t\tif (!fildOption.hidden) {\n\t\t\t\t$('<div iconCls=\"tick\" field=\"' + fields[i] + '\"/>').html(fildOption.title).appendTo(tmenu);\n\t\t\t} else {\n\t\t\t\t$('<div iconCls=\"bullet_blue\" field=\"' + fields[i] + '\"/>').html(fildOption.title).appendTo(tmenu);\n\t\t\t}\n\t\t}\n\t\theaderContextMenu = this.headerContextMenu = tmenu.menu({\n\t\t\tonClick : function(item) {\n\t\t\t\tvar field = $(item.target).attr('field');\n\t\t\t\tif (item.iconCls == 'tick') {\n\t\t\t\t\tgrid.datagrid('hideColumn', field);\n\t\t\t\t\t$(this).menu('setIcon', {\n\t\t\t\t\t\ttarget : item.target,\n\t\t\t\t\t\ticonCls : 'bullet_blue'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tgrid.datagrid('showColumn', field);\n\t\t\t\t\t$(this).menu('setIcon', {\n\t\t\t\t\t\ttarget : item.target,\n\t\t\t\t\t\ticonCls : 'tick'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\theaderContextMenu.menu('show', {\n\t\tleft : e.pageX,\n\t\ttop : e.pageY\n\t});\n};\n$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;\n$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;\n\n/**\n * grid tooltip参数\n * \n *  \n */\nvar gridTooltipOptions = {\n\ttooltip : function(jq, fields) {\n\t\treturn jq.each(function() {\n\t\t\tvar panel = $(this).datagrid('getPanel');\n\t\t\tif (fields && typeof fields == 'object' && fields.sort) {\n\t\t\t\t$.each(fields, function() {\n\t\t\t\t\tvar field = this;\n\t\t\t\t\tbindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbindEvent($(\".datagrid-body .datagrid-cell\", panel));\n\t\t\t}\n\t\t});\n\n\t\tfunction bindEvent(jqs) {\n\t\t\tjqs.mouseover(function() {\n\t\t\t\tvar content = $(this).text();\n\t\t\t\tif (content.replace(/(^\\s*)|(\\s*$)/g, '').length > 5) {\n\t\t\t\t\t$(this).tooltip({\n\t\t\t\t\t\tcontent : content,\n\t\t\t\t\t\ttrackMouse : true,\n\t\t\t\t\t\tposition : 'bottom',\n\t\t\t\t\t\tonHide : function() {\n\t\t\t\t\t\t\t$(this).tooltip('destroy');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonUpdate : function(p) {\n\t\t\t\t\t\t\tvar tip = $(this).tooltip('tip');\n\t\t\t\t\t\t\tif (parseInt(tip.css('width')) > 500) {\n\t\t\t\t\t\t\t\ttip.css('width', 500);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}).tooltip('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\n/**\n * Datagrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+\n * \n * 简单实现，如需高级功能，可以自由修改\n * \n * 使用说明:\n * \n * 在easyui.min.js之后导入本js\n * \n * 代码案例:\n * \n * $(\"#dg\").datagrid('tooltip'); 所有列\n * \n * $(\"#dg\").datagrid('tooltip',['productid','listprice']); 指定列\n * \n *  \n */\n$.extend($.fn.datagrid.methods, gridTooltipOptions);\n\n/**\n * Treegrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+\n * \n * 简单实现，如需高级功能，可以自由修改\n * \n * 使用说明:\n * \n * 在easyui.min.js之后导入本js\n * \n * 代码案例:\n * \n * $(\"#dg\").treegrid('tooltip'); 所有列\n * \n * $(\"#dg\").treegrid('tooltip',['productid','listprice']); 指定列\n * \n *  \n */\n$.extend($.fn.treegrid.methods, gridTooltipOptions);\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 扩展validatebox，添加验证两次密码功能\n */\n$.extend($.fn.validatebox.defaults.rules, {\n\teqPwd : {\n\t\tvalidator : function(value, param) {\n\t\t\treturn value == $(param[0]).val();\n\t\t},\n\t\tmessage : '密码不一致！'\n\t}\n});\n\n//扩展tree，使其可以获取实心节点\n$.extend($.fn.tree.methods, {\n\tgetCheckedExt : function(jq) {// 获取checked节点(包括实心)\n\t\tvar checked = $(jq).tree(\"getChecked\");\n\t\tvar checkbox2 = $(jq).find(\"span.tree-checkbox2\").parent();\n\t\t$.each(checkbox2, function() {\n\t\t\tvar node = $.extend({}, $.data(this, \"tree-node\"), {\n\t\t\t\ttarget : this\n\t\t\t});\n\t\t\tchecked.push(node);\n\t\t});\n\t\treturn checked;\n\t},\n\tgetSolidExt : function(jq) {// 获取实心节点\n\t\tvar checked = [];\n\t\tvar checkbox2 = $(jq).find(\"span.tree-checkbox2\").parent();\n\t\t$.each(checkbox2, function() {\n\t\t\tvar node = $.extend({}, $.data(this, \"tree-node\"), {\n\t\t\t\ttarget : this\n\t\t\t});\n\t\t\tchecked.push(node);\n\t\t});\n\t\treturn checked;\n\t}\n});\n\n//扩展tree，使其支持平滑数据格式\n$.fn.tree.defaults.loadFilter = function(data, parent) {\n\tvar opt = $(this).data().tree.options;\n\tvar idFiled, textFiled, parentField;\n\tif (opt.parentField) {\n\t\tidFiled = opt.idFiled || 'id';\n\t\ttextFiled = opt.textFiled || 'text';\n\t\tparentField = opt.parentField;\n\t\tvar i, l, treeData = [], tmpMap = [];\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttmpMap[data[i][idFiled]] = data[i];\n\t\t}\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\tif (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {\n\t\t\t\tif (!tmpMap[data[i][parentField]]['children'])\n\t\t\t\t\ttmpMap[data[i][parentField]]['children'] = [];\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttmpMap[data[i][parentField]]['children'].push(data[i]);\n\t\t\t} else {\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttreeData.push(data[i]);\n\t\t\t}\n\t\t}\n\t\treturn treeData;\n\t}\n\treturn data;\n};\n\n// 扩展treegrid，使其支持平滑数据格式\n$.fn.treegrid.defaults.loadFilter = function(data, parentId) {\n\tvar opt = $(this).data().treegrid.options;\n\tvar idFiled, textFiled, parentField;\n\tif (opt.parentField) {\n\t\tidFiled = opt.idFiled || 'id';\n\t\ttextFiled = opt.textFiled || 'text';\n\t\tparentField = opt.parentField;\n\t\tvar i, l, treeData = [], tmpMap = [];\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttmpMap[data[i][idFiled]] = data[i];\n\t\t}\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\tif (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {\n\t\t\t\tif (!tmpMap[data[i][parentField]]['children'])\n\t\t\t\t\ttmpMap[data[i][parentField]]['children'] = [];\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttmpMap[data[i][parentField]]['children'].push(data[i]);\n\t\t\t} else {\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttreeData.push(data[i]);\n\t\t\t}\n\t\t}\n\t\treturn treeData;\n\t}\n\treturn data;\n};\n\n// 扩展combotree，使其支持平滑数据格式\n$.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter;\n\n/**\n * \n * @requires jQuery,EasyUI\n * \n * 创建一个模式化的dialog\n * \n * @returns $.modalDialog.handler 这个handler代表弹出的dialog句柄\n * \n * @returns $.modalDialog.xxx 这个xxx是可以自己定义名称，主要用在弹窗关闭时，刷新某些对象的操作，可以将xxx这个对象预定义好\n */\n$.modalDialog = function(options) {\n\tif ($.modalDialog.handler == undefined) {// 避免重复弹出\n\t\tvar opts = $.extend({\n\t\t\ttitle : '',\n\t\t\twidth : 840,\n\t\t\theight : 680,\n\t\t\tmodal : true,\n\t\t\tonClose : function() {\n\t\t\t\t$.modalDialog.handler = undefined;\n\t\t\t\t$(this).dialog('destroy');\n\t\t\t},\n\t\t\tonOpen : function() {\n\t\t\t}\n\t\t}, options);\n\t\topts.modal = true;// 强制此dialog为模式化，无视传递过来的modal参数\n\t\treturn $.modalDialog.handler = $('<div/>').dialog(opts);\n\t}\n};\n\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/extJquery.js",
    "content": "/**\n * Create a cookie with the given key and value and other optional parameters.\n * \n * @example $.cookie('the_cookie', 'the_value');\n * @desc Set the value of a cookie.\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\n * @desc Create a cookie with all available options.\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Create a session cookie.\n * @example $.cookie('the_cookie', null);\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain used when the cookie was set.\n * \n * @param String\n *            key The key of the cookie.\n * @param String\n *            value The value of the cookie.\n * @param Object\n *            options An object literal containing key/value pairs to provide optional cookie attributes.\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. If a negative value is specified (e.g. a date in the past), the cookie will be deleted. If set to null or omitted, the cookie will be a session cookie and will not be retained when the the browser exits.\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will require a secure protocol (like HTTPS).\n * @type undefined\n * \n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n * \n * Get the value of a cookie with the given key.\n * \n * @example $.cookie('the_cookie');\n * @desc Get the value of a cookie.\n * \n * @param String\n *            key The key of the cookie.\n * @return The value of the cookie.\n * @type String\n * \n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\n$.cookie = function(key, value, options) {\n\tif (arguments.length > 1 && (value === null || typeof value !== \"object\")) {\n\t\toptions = $.extend({}, options);\n\t\tif (value === null) {\n\t\t\toptions.expires = -1;\n\t\t}\n\t\tif (typeof options.expires === 'number') {\n\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\tt.setDate(t.getDate() + days);\n\t\t}\n\t\treturn (document.cookie = [ encodeURIComponent(key), '=', options.raw ? String(value) : encodeURIComponent(String(value)), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join(''));\n\t}\n\toptions = value || {};\n\tvar result, decode = options.raw ? function(s) {\n\t\treturn s;\n\t} : decodeURIComponent;\n\treturn (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;\n};\n\n/**\n * @author 孙宇\n * \n * @requires jQuery\n * \n * 将form表单元素的值序列化成对象\n * \n * @returns object\n */\n$.serializeObject = function(form) {\n\tvar o = {};\n\t$.each(form.serializeArray(), function(index) {\n\t\tif (o[this['name']]) {\n\t\t\to[this['name']] = o[this['name']] + \",\" + this['value'];\n\t\t} else {\n\t\t\to[this['name']] = this['value'];\n\t\t}\n\t});\n\treturn o;\n};\n\n/**\n * @author 孙宇\n * \n * 增加formatString功能\n * \n * 使用方法：$.formatString('字符串{0}字符串{1}字符串','第一个变量','第二个变量');\n * \n * @returns 格式化后的字符串\n */\n$.formatString = function(str) {\n\tfor ( var i = 0; i < arguments.length - 1; i++) {\n\t\tstr = str.replace(\"{\" + i + \"}\", arguments[i + 1]);\n\t}\n\treturn str;\n};\n\n/**\n * @author 孙宇\n * \n * 接收一个以逗号分割的字符串，返回List，list里每一项都是一个字符串\n * \n * @returns list\n */\n$.stringToList = function(value) {\n\tif (value != undefined && value != '') {\n\t\tvar values = [];\n\t\tvar t = value.split(',');\n\t\tfor ( var i = 0; i < t.length; i++) {\n\t\t\tvalues.push('' + t[i]);/* 避免他将ID当成数字 */\n\t\t}\n\t\treturn values;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/**\n * @author 孙宇\n * \n * @requires jQuery\n * \n * 改变jQuery的AJAX默认属性和方法\n */\n$.ajaxSetup({\n\ttype : 'POST',\n\terror : function(XMLHttpRequest, textStatus, errorThrown) {\n\t\ttry {\n\t\t\tparent.$.messager.progress('close');\n\t\t\tparent.$.messager.alert('错误', XMLHttpRequest.responseText);\n\t\t} catch (e) {\n\t\t\talert(XMLHttpRequest.responseText);\n\t\t}\n\t}\n});\n\n/**\n * @author 孙宇\n * \n * 去字符串空格\n * \n * @returns\n */\nString.prototype.trim = function() {\n\treturn this.replace(/(^\\s*)|(\\s*$)/g, '');\n};\nString.prototype.ltrim = function() {\n\treturn this.replace(/(^\\s*)/g, '');\n};\nString.prototype.rtrim = function() {\n\treturn this.replace(/(\\s*$)/g, '');\n};\n\nfunction progressLoad(){  \n    $(\"<div class=\\\"datagrid-mask\\\" style=\\\"position:absolute;z-index: 9999;\\\"></div>\").css({display:\"block\",width:\"100%\",height:$(window).height()}).appendTo(\"body\");  \n    $(\"<div class=\\\"datagrid-mask-msg\\\" style=\\\"position:absolute;z-index: 9999;\\\"></div>\").html(\"正在处理，请稍候。。。\").appendTo(\"body\").css({display:\"block\",left:($(document.body).outerWidth(true) - 190) / 2,top:($(window).height() - 45) / 2});  \n}\n\nfunction progressClose(){\n\t$(\".datagrid-mask\").remove();  \n\t$(\".datagrid-mask-msg\").remove();\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/lightmvc.js",
    "content": "\n/**\n * @author 鸵鸟\n * \n * @requires jQuery\n * \n * 当页面加载完毕关闭加载进度\n * **/\n$(window).load(function(){\n\t$(\"#loading\").fadeOut();\n});\n\n/**\n * @author 鸵鸟\n * \n * @requires jQuery\n * \n * 防止退格键导致页面回退\n */\n$(document).keydown(function (e) { \n\tvar doPrevent; \n\tif (e.keyCode == 8) { \n\t\tvar d = e.srcElement || e.target; \n\t\tif (d.tagName.toUpperCase() == 'INPUT' || d.tagName.toUpperCase() == 'TEXTAREA') { \n\t\t\tdoPrevent = d.readOnly || d.disabled; \n\t\t}else{\n\t\t\tdoPrevent = true; \n\t\t}\n\t}else{ \n\t\tdoPrevent = false; \n\t}\n\tif (doPrevent) \n\te.preventDefault(); \n});\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/default/config.txt",
    "content": "'default':{name:'Ĭ��',width:24,height:24,line:7,list:{'smile':'΢Ц','tongue':'����ͷ','titter':'͵Ц','laugh':'��Ц','sad':'�ѹ�','wronged':'ί��','fastcry':'������','cry':'��','wail':'����','mad':'����','knock':'�ô�','curse':'����','crazy':'ץ��','angry':'����','ohmy':'����','awkward':'����','panic':'����','shy':'����','cute':'����','envy':'��Ľ','proud':'����','struggle':'�ܶ�','quiet':'����','shutup':'����','doubt':'����','despise':'����','sleep':'˯��','bye':'�ټ�'}}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/ipb/config.txt",
    "content": "ipb:{name:'IPB',width:20,height:25,line:8,list:{smile:'΢Ц',joyful:'����',laugh:'Ц',biglaugh:'��Ц',w00t:'����',wub:'��ϲ',depres:'��ɥ',sad:'����',cry:'����',angry:'����',devil:'ħ��',blush:'����',kiss:'��',surprised:'����',wondering:'�ɻ�',unsure:'��ȷ��',tongue:'����ͷ',cool:'ˣ��',blink:'գ��',whistling:'������',glare:'����',pinch:'��',sideways:'����',sleep:'˯��',sick:'����',ninja:'����',bandit:'ǿ��',police:'����',angel:'��ʹ',magician:'ħ��ʦ',alien:'������',heart:'�Ķ�'}}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_emot/pidgin/config.txt",
    "content": "pidgin:{name:'Pidgin',width:22,height:25,line:8,list:{smile:'΢Ц',cute:'�ɰ�',wink:'գ��',laugh:'��Ц',victory:'ʤ��',sad:'����',cry:'����',angry:'����',shout:'����',curse:'����',devil:'ħ��',blush:'����',tongue:'����ͷ',envy:'��Ľ',cool:'ˣ��',kiss:'��',shocked:'����',sweat:'��',sick:'����',bye:'�ټ�',tired:'��',sleepy:'˯��',question:'����',rose:'õ��',gift:'����',coffee:'����',music:'����',soccer:'����',good:'��ͬ',bad:'����',love:'��',brokenheart:'����'}}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/en.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': 'Default',\n    'none': 'None',\n    'defaultReadTip': 'WYSIWYG Editor,press alt+1-9,toogle to tool area,press tab,select button,press esc,return editor',\n\n    'Cut': 'Cut (Ctrl+X)',\n    'Copy': 'Copy (Ctrl+C)',\n    'Paste': 'Paste (Ctrl+V)',\n    'Pastetext': 'Paste as plain text',\n    'PastetextTip': 'Use Ctrl+V on your keyboard to paste the text.',\n    'Blocktag': 'Block tag',\n    'Fontface': 'Font family',\n    'FontSize': 'Font size',\n    'Bold': 'Bold (Ctrl+B)',\n    'Italic': 'Italic (Ctrl+I)',\n    'Underline': 'Underline (Ctrl+U)',\n    'Strikethrough': 'Strikethrough',\n    'FontColor': 'Select text color',\n    'BackColor': 'Select background color',\n    'SelectAll': 'SelectAll (Ctrl+A)',\n    'Removeformat': 'Remove formatting',\n    'Align': 'Align',\n    'List': 'List',\n    'Outdent': 'Outdent',\n    'Indent': 'Indent',\n    'Link': 'Insert/edit link (Ctrl+L)',\n    'Unlink': 'Unlink',\n    'Anchor': 'Anchor',\n    'Img': 'Insert/edit image',\n    'Flash': 'Insert/edit flash',\n    'Media': 'Insert/edit media',\n    'Hr': 'Horizontal rule',\n    'Emot': 'Emotions',\n    'Table': 'Insert a new table',\n    'Source': 'Edit source code',\n    'WYSIWYG': 'WYSIWYG mode',\n    'Preview': 'Preview',\n    'Print': 'Print (Ctrl+P)',\n    'Fullscreen': 'Toggle fullscreen (Esc)',\n    'About': 'About xhEditor',\n\n    'dialogOk': 'Ok',\n    'dialogCancel': 'Cancel',\n    'cutDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+X) instead.',\n    'copyDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+C) instead.',\n    'pasteDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+V) instead.',\n    'close': 'Close',\n\n    'listFontname': [{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': 'Paragraph',\n        'h1': 'Heading 1',\n        'h2': 'Heading 2',\n        'h3': 'Heading 3',\n        'h4': 'Heading 4',\n        'h5': 'Heading 5',\n        'h6': 'Heading 6',\n        'pre': 'Preformatted',\n        'address': 'Address'\n    },\n\n    'fontsize': {\n        'x-small': '1',\n        'small': '2',\n        'medium': '3',\n        'large': '4',\n        'x-large': '5',\n        'xx-large': '6',\n        '-webkit-xxx-large': '7'\n    },\n\n    'align': {\n        'justifyleft': 'Align left',\n        'justifycenter': 'Align center',\n        'justifyright': 'Align right',\n        'justifyfull': 'Align full'\n    },\n\n    'list': {\n        'insertOrderedList': 'Ordered list',\n        'insertUnorderedList': 'Unordered list'\n    },\n\n    'link': {\n        'url': 'Link URL: ',\n        'target': 'Target:&nbsp;&nbsp; ',\n        'targetBlank': 'New window',\n        'targetSelf': 'Same window',\n        'targetParent': 'Parent window',\n        'linkText': 'Link Text:',\n        'defText': 'Click here',\n        'anchor': 'Anchor: &nbsp;&nbsp;',\n        'anchorNone': 'None selected'\n    },\n\n    'anchor': {\n        'name': 'Anchor name: '\n    },\n\n    'img': {\n        'url': 'Img URL:&nbsp; ',\n        'alt': 'Alt text: ',\n        'align': 'Alignment:',\n        'alignLeft': 'Left',\n        'alignRight': 'Right',\n        'alignTop': 'Top',\n        'alignMiddle': 'Middle',\n        'alignBaseline': 'Baseline',\n        'alignBottom': 'Bottom',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;',\n        'border': 'Border:&nbsp; &nbsp;',\n        'hspace': 'Hspace:&nbsp;&nbsp;&nbsp;',\n        'vspace': 'Vspace:&nbsp; &nbsp;'\n    },\n\n    'flash': {\n        'url': 'Flash URL:',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;'\n    },\n\n    'media': {\n        'url': 'Media URL:',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;'\n    },\n\n    'emot.default': {\n        'smile': 'Smile',\n        'tongue': 'Tongue',\n        'titter': 'Titter',\n        'laugh': 'Laugh',\n        'sad': 'Sad',\n        'wronged': 'Wronged',\n        'fastcry': 'Fast cry',\n        'cry': 'Cry',\n        'wail': 'Wail',\n        'mad': 'Mad',\n        'knock': 'Knock',\n        'curse': 'Curse',\n        'crazy': 'Crazy',\n        'angry': 'Angry',\n        'ohmy': 'Oh my',\n        'awkward': 'Awkward',\n        'panic': 'Panic',\n        'shy': 'Shy',\n        'cute': 'Cute',\n        'envy': 'Envy',\n        'proud': 'Proud',\n        'struggle': 'Struggle',\n        'quiet': 'Quiet',\n        'shutup': 'Shut up',\n        'doubt': 'Doubt',\n        'despise': 'Despise',\n        'sleep': 'Sleep',\n        'bye': 'Bye'\n    },\n\n    'table': {\n        'rows': 'Rows:&nbsp; &nbsp; &nbsp; &nbsp;',\n        'columns': 'Cols:&nbsp; &nbsp; &nbsp; &nbsp;',\n        'headers': 'Headers:&nbsp; &nbsp;&nbsp;',\n        'headersRow': 'First row',\n        'headersCol': 'First column',\n        'headersBoth': 'Both',\n        'width': 'Width: &nbsp; &nbsp; &nbsp;',\n        'height': 'Height:&nbsp; &nbsp; &nbsp;',\n        'border': 'Border:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',\n        'cellSpacing': 'CellSpacing:',\n        'cellPadding': 'CellPadding:',\n        'align': 'Align:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',\n        'alignLeft': 'Left',\n        'alignCenter': 'Center',\n        'alignRight': 'Right',\n        'caption': 'Caption:&nbsp;&nbsp;&nbsp;&nbsp;'\n    },\n\n    'upload': {\n        'btnText' : 'Upload',\n        'browserTitle': 'Browser file',\n        'progressTitle': 'File uploading(Esc cancel)',\n        'progressTip': 'File uploading,please wait...',\n        'countLimit': 'Please do not upload more then {$0} files.',\n        'extLimit': 'Upload file extension required for this: {$0}',\n        'typeLimit': 'You can only drag and drop the same type of files.',\n        'apiError': '{$0} upload interface error!\\r\\n\\r\\nreturn error:\\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor is a platform independent WYSWYG XHTML editor based by jQuery,released as Open Source under <a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>.'\n});"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': '默认',\n    'none': '无',\n    'defaultReadTip': '可视化编辑器,alt+1到9键,切换到工具区,tab键,选择按钮,esc键,返回编辑',\n\n    'Cut': '剪切 (Ctrl+X)',\n    'Copy': '复制 (Ctrl+C)',\n    'Paste': '粘贴 (Ctrl+V)',\n    'Pastetext': '粘贴文本',\n    'PastetextTip': '使用键盘快捷键(Ctrl+V)把内容粘贴到方框里，按 确定',\n    'Blocktag': '段落标签',\n    'Fontface': '字体',\n    'FontSize': '字体大小',\n    'Bold': '加粗 (Ctrl+B)',\n    'Italic': '斜体 (Ctrl+I)',\n    'Underline': '下划线 (Ctrl+U)',\n    'Strikethrough': '删除线',\n    'FontColor': '字体颜色',\n    'BackColor': '背景颜色',\n    'SelectAll': '全选 (Ctrl+A)',\n    'Removeformat': '删除文字格式',\n    'Align': '对齐',\n    'List': '列表',\n    'Outdent': '减少缩进',\n    'Indent': '增加缩进',\n    'Link': '超链接 (Ctrl+L)',\n    'Unlink': '取消超链接',\n    'Anchor': '锚点',\n    'Img': '图片',\n    'Flash': 'Flash动画',\n    'Media': '多媒体文件',\n    'Hr': '插入水平线',\n    'Emot': '表情',\n    'Table': '表格',\n    'Source': '源代码',\n    'WYSIWYG': '可视化编辑',\n    'Preview': '预览',\n    'Print': '打印 (Ctrl+P)',\n    'Fullscreen': '全屏编辑 (Esc)',\n    'About': '关于 xhEditor',\n\n    'dialogOk': '确定',\n    'dialogCancel': '取消',\n    'cutDisabledTip': '您的浏览器安全设置不允许使用剪切操作，请使用键盘快捷键(Ctrl + X)来完成',\n    'copyDisabledTip': '您的浏览器安全设置不允许使用复制操作，请使用键盘快捷键(Ctrl + C)来完成',\n    'pasteDisabledTip': '您的浏览器安全设置不允许使用粘贴操作，请使用键盘快捷键(Ctrl + V)来完成',\n    'close': '关闭',\n\n    'listFontname': [{n:'宋体',c:'SimSun'},{n:'仿宋体',c:'FangSong_GB2312'},{n:'黑体',c:'SimHei'},{n:'楷体',c:'KaiTi_GB2312'},{n:'微软雅黑',c:'Microsoft YaHei'},{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': '普通段落',\n        'h1': '标题1',\n        'h2': '标题2',\n        'h3': '标题3',\n        'h4': '标题4',\n        'h5': '标题5',\n        'h6': '标题6',\n        'pre': '已编排格式',\n        'address': '地址'\n    },\n\n    'fontsize': {\n        'x-small': '极小',\n        'small': '特小',\n        'medium': '小',\n        'large': '中',\n        'x-large': '大',\n        'xx-large': '特大',\n        '-webkit-xxx-large': '极大'\n    },\n\n    'align': {\n        'justifyleft': '左对齐',\n        'justifycenter': '居中',\n        'justifyright': '右对齐',\n        'justifyfull': '两端对齐'\n    },\n\n    'list': {\n        'insertOrderedList': '数字列表',\n        'insertUnorderedList': '符号列表'\n    },\n\n    'link': {\n        'url': '链接地址: ',\n        'target': '打开方式: ',\n        'targetBlank': '新窗口',\n        'targetSelf': '当前窗口',\n        'targetParent': '父窗口',\n        'linkText': '链接文字: ',\n        'defText': '点击打开链接',\n        'anchor': '页内锚点: ',\n        'anchorNone': '未选择'\n    },\n\n    'anchor': {\n        'name': '锚点名称: '\n    },\n\n    'img': {\n        'url': '图片文件: ',\n        'alt': '替换文本: ',\n        'align': '对齐方式: ',\n        'alignLeft': '左对齐',\n        'alignRight': '右对齐',\n        'alignTop': '顶端',\n        'alignMiddle': '居中',\n        'alignBaseline': '基线',\n        'alignBottom': '底边',\n        'width': '宽　　度: ',\n        'height': '高　　度: ',\n        'border': '边框大小: ',\n        'hspace': '水平间距: ',\n        'vspace': '垂直间距: '\n    },\n\n    'flash': {\n        'url': '动画文件: ',\n        'width': '宽　　度: ',\n        'height': '高　　度: '\n    },\n\n    'media': {\n        'url': '媒体文件: ',\n        'width': '宽　　度: ',\n        'height': '高　　度: '\n    },\n\n    'emot.default': {\n        'smile': '微笑',\n        'tongue': '吐舌头',\n        'titter': '偷笑',\n        'laugh': '大笑',\n        'sad': '难过',\n        'wronged': '委屈',\n        'fastcry': '快哭了',\n        'cry': '哭',\n        'wail': '大哭',\n        'mad': '生气',\n        'knock': '敲打',\n        'curse': '骂人',\n        'crazy': '抓狂',\n        'angry': '发火',\n        'ohmy': '惊讶',\n        'awkward': '尴尬',\n        'panic': '惊恐',\n        'shy': '害羞',\n        'cute': '可怜',\n        'envy': '羡慕',\n        'proud': '得意',\n        'struggle': '奋斗',\n        'quiet': '安静',\n        'shutup': '闭嘴',\n        'doubt': '疑问',\n        'despise': '鄙视',\n        'sleep': '睡觉',\n        'bye': '再见'\n    },\n\n    'table': {\n        'rows': '行　　数: ',\n        'columns': '列　　数: ',\n        'headers': '标题单元: ',\n        'headersRow': '第一行',\n        'headersCol': '第一列',\n        'headersBoth': '第一行和第一列',\n        'width': '宽　　度: ',\n        'height': '高　　度: ',\n        'border': '边框大小: ',\n        'cellSpacing': '表格间距: ',\n        'cellPadding': '表格填充: ',\n        'align': '对齐方式: ',\n        'alignLeft': '左对齐',\n        'alignCenter': '居中',\n        'alignRight': '右对齐',\n        'caption': '表格标题: '\n    },\n\n    'upload': {\n        'btnText' : '上传',\n        'browserTitle': '浏览文件',\n        'progressTitle': '文件上传中(Esc取消上传)',\n        'progressTip': '文件上传中，请稍候……',\n        'countLimit': '请不要一次上传超过{$0}个文件',\n        'extLimit': '文件的扩展名必需为：{$0}',\n        'typeLimit': '每次只能拖放上传同一类型文件',\n        'apiError': '{$0} 上传接口发生错误！\\r\\n\\r\\n返回的错误内容为: \\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor是基于jQuery开发的跨平台轻量可视化XHTML编辑器，基于<a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>开源协议发布。'\n});"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_lang/zh-tw.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': '預設',\n    'none': '無',\n    'defaultReadTip': '可視化編輯器,alt+1到9鍵,切換到工具區,tab鍵,選擇按鈕,esc鍵,返回編輯',\n\n    'Cut': '剪下 (Ctrl+X)',\n    'Copy': '複製 (Ctrl+C)',\n    'Paste': '貼上 (Ctrl+V)',\n    'Pastetext': '貼上文本',\n    'PastetextTip': '使用鍵盤快捷鍵(Ctrl+V)把內容貼上到方框裡，按 確定',\n    'Blocktag': '段落標籤',\n    'Fontface': '字型',\n    'FontSize': '字型大小',\n    'Bold': '粗體 (Ctrl+B)',\n    'Italic': '斜體 (Ctrl+I)',\n    'Underline': '底線 (Ctrl+U)',\n    'Strikethrough': '刪除線',\n    'FontColor': '字型顏色',\n    'BackColor': '背景顏色',\n    'SelectAll': '全選 (Ctrl+A)',\n    'Removeformat': '刪除文字格式',\n    'Align': '對齊',\n    'List': '列表',\n    'Outdent': '減少縮排',\n    'Indent': '增加縮排',\n    'Link': '超連結 (Ctrl+L)',\n    'Unlink': '取消超連結',\n    'Anchor': '錨點',\n    'Img': '圖片',\n    'Flash': 'Flash動畫',\n    'Media': '多媒體文件',\n    'Hr': '插入水平線',\n    'Emot': '表情',\n    'Table': '表格',\n    'Source': '原始碼',\n    'WYSIWYG': '可視化編輯',\n    'Preview': '預覽',\n    'Print': '打印 (Ctrl+P)',\n    'Fullscreen': '全螢幕編輯 (Esc)',\n    'About': '關於 xhEditor',\n\n    'dialogOk': '確定',\n    'dialogCancel': '取消',\n    'cutDisabledTip': '您的瀏覽器安全設置不允許使用剪下操作，請使用鍵盤快捷鍵(Ctrl + X)來完成',\n    'copyDisabledTip': '您的瀏覽器安全設置不允許使用複製操作，請使用鍵盤快捷鍵(Ctrl + C)來完成',\n    'pasteDisabledTip': '您的瀏覽器安全設置不允許使用貼上操作，請使用鍵盤快捷鍵(Ctrl + V)來完成',\n    'close': '關閉',\n\n    'listFontname': [{n:'新細明體',c:'PMingLiu'},{n:'細明體',c:'mingliu'},{n:'標楷體',c:'DFKai-SB'},{n:'微軟正黑體',c:'Microsoft JhengHei'},{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': '普通段落',\n        'h1': '標題1',\n        'h2': '標題2',\n        'h3': '標題3',\n        'h4': '標題4',\n        'h5': '標題5',\n        'h6': '標題6',\n        'pre': '已編排格式',\n        'address': '地址'\n    },\n\n    'fontsize': {\n        'x-small': '極小',\n        'small': '特小',\n        'medium': '小',\n        'large': '中',\n        'x-large': '大',\n        'xx-large': '特大',\n        '-webkit-xxx-large': '極大'\n    },\n\n    'align': {\n        'justifyleft': '靠左對齊',\n        'justifycenter': '置中',\n        'justifyright': '靠右對齊',\n        'justifyfull': '左右對齊'\n    },\n\n    'list': {\n        'insertOrderedList': '數字列表',\n        'insertUnorderedList': '符號列表'\n    },\n\n    'link': {\n        'url': '鏈接地址: ',\n        'target': '打開方式: ',\n        'targetBlank': '新窗口',\n        'targetSelf': '當前窗口',\n        'targetParent': '父窗口',\n        'linkText': '鏈接文字: ',\n        'defText': '點擊打開鏈接',\n        'anchor': '頁內錨點: ',\n        'anchorNone': '未選擇'\n    },\n\n    'anchor': {\n        'name': '錨點名稱: '\n    },\n\n    'img': {\n        'url': '圖片文件: ',\n        'alt': '替換文本: ',\n        'align': '對齊方式: ',\n        'alignLeft': '靠左對齊',\n        'alignRight': '靠右對齊',\n        'alignTop': '頂端',\n        'alignMiddle': '置中',\n        'alignBaseline': '基線',\n        'alignBottom': '底邊',\n        'width': '寬　　度: ',\n        'height': '高　　度: ',\n        'border': '邊框大小: ',\n        'hspace': '水平間距: ',\n        'vspace': '垂直間距: '\n    },\n\n    'flash': {\n        'url': '動畫文件: ',\n        'width': '寬　　度: ',\n        'height': '高　　度: '\n    },\n\n    'media': {\n        'url': '媒體文件: ',\n        'width': '寬　　度: ',\n        'height': '高　　度: '\n    },\n\n    'emot.default': {\n        'smile': '微笑',\n        'tongue': '吐舌頭',\n        'titter': '偷笑',\n        'laugh': '大笑',\n        'sad': '難過',\n        'wronged': '委屈',\n        'fastcry': '快哭了',\n        'cry': '哭',\n        'wail': '大哭',\n        'mad': '生氣',\n        'knock': '敲打',\n        'curse': '罵人',\n        'crazy': '抓狂',\n        'angry': '發火',\n        'ohmy': '驚訝',\n        'awkward': '尷尬',\n        'panic': '驚恐',\n        'shy': '害羞',\n        'cute': '可憐',\n        'envy': '羨慕',\n        'proud': '得意',\n        'struggle': '奮鬥',\n        'quiet': '安靜',\n        'shutup': '閉嘴',\n        'doubt': '疑問',\n        'despise': '鄙視',\n        'sleep': '睡覺',\n        'bye': '再見'\n    },\n\n    'table': {\n        'rows': '行　　數: ',\n        'columns': '列　　數: ',\n        'headers': '標題單元: ',\n        'headersRow': '第一行',\n        'headersCol': '第一列',\n        'headersBoth': '第一行和第一列',\n        'width': '寬　　度: ',\n        'height': '高　　度: ',\n        'border': '邊框大小: ',\n        'cellSpacing': '表格間距: ',\n        'cellPadding': '表格填充: ',\n        'align': '對齊方式: ',\n        'alignLeft': '靠左對齊',\n        'alignCenter': '置中',\n        'alignRight': '靠右對齊',\n        'caption': '表格標題: '\n    },\n\n    'upload': {\n        'btnText' : '上傳',\n        'browserTitle': '瀏覽文件',\n        'progressTitle': '文件上傳中(Esc取消上傳)',\n        'progressTip': '文件上傳中，請稍候……',\n        'countLimit': '請不要一次上傳超過{$0}個文件',\n        'extLimit': '文件的擴展名必需為：{$0}',\n        'typeLimit': '每次只能拖放上傳同一類型文件',\n        'apiError': '{$0} 上傳接口發生錯誤！\\r\\n\\r\\n返回的錯誤內容為: \\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor是基於jQuery開發的跨平台輕量可視化XHTML編輯器，基於<a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>開源協議發佈。'\n});"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/html2markdown.js",
    "content": "/**\n * HTML2Markdown - An HTML to Markdown converter.\n * \n * This implementation uses HTML DOM parsing for conversion. Parsing code was\n * abstracted out in a parsing function which should be easy to remove in favor\n * of other parsing libraries.\n * \n * Converted MarkDown was tested with ShowDown library for HTML rendering. And\n * it tries to create MarkDown that does not confuse ShowDown when certain\n * combination of HTML tags come together.\n * \n * @author Himanshu Gilani\n * @author Kates Gasis (original author)\n * \n */\n\nif (typeof require != \"undefined\") {\n\tvar htmlparser = require(\"./htmldomparser\");\n\tvar HTMLParser = htmlparser.HTMLParser;\n}\n\n/**\n * HTML2Markdown\n * @param html - html string to convert\n * @return converted markdown text\n */\nfunction HTML2Markdown(html, opts) {\n\tvar logging = false;\n\tvar nodeList = [];\n\tvar listTagStack = [];\n\tvar linkAttrStack = [];\n\tvar blockquoteStack = [];\n\tvar preStack = [];\n\t\n\tvar links = [];\n\t\n\topts = opts || {};\n\tvar inlineStyle = opts['inlineStyle'] || false;\n\n\tvar markdownTags = {\n\t\t\"hr\": \"- - -\\n\\n\",\n\t\t\"br\": \"  \\n\",\n\t\t\"title\": \"# \",\n\t\t\"h1\": \"# \",\n\t\t\"h2\": \"## \",\n\t\t\"h3\": \"### \",\n\t\t\"h4\": \"#### \",\n\t\t\"h5\": \"##### \",\n\t\t\"h6\": \"###### \",\n\t\t\"b\": \"**\",\n\t\t\"strong\": \"**\",\n\t\t\"i\": \"_\",\n\t\t\"em\": \"_\",\n\t\t\"dfn\": \"_\",\n\t\t\"var\": \"_\",\t\n\t\t\"cite\": \"_\",\n\t\t\"span\": \" \",\n\t\t\"ul\": \"* \",\n\t\t\"ol\": \"1. \",\n\t\t\"dl\": \"- \",\n\t\t\"blockquote\": \"> \"\n\t};\n\n\tfunction getListMarkdownTag() {\n\t\tvar listItem = \"\";\t\t\n\t\tif(listTagStack) {\n\t\t\tfor ( var i = 0; i < listTagStack.length - 1; i++) {\n\t\t\t\tlistItem += \"  \";\n\t\t\t}\t\t\t\n\t\t}\n\t\tlistItem += peek(listTagStack);\t\t\n\t\treturn listItem;\n\t}\n\t\n\tfunction convertAttrs(attrs) {\n\t\tvar attributes = {};\n\t\tfor(var k in attrs) {\n\t\t\tvar attr = attrs[k];\n\t\t\tattributes[attr.name] = attr;\n\t\t}\n\t\treturn attributes;\n\t}\n\n\tfunction peek(list) {\n\t\tif(list && list.length > 0) {\n\t\t\treturn list.slice(-1)[0];\t\n\t\t} \n\t\treturn \"\";\t\t\n\t}\n\n\tfunction peekTillNotEmpty(list) {\n\t\tif(!list) {\n\t\t\treturn \"\";\n\t\t}\n\t\t\t\t\n\t\tfor(var i = list.length - 1; i>=0; i-- ){\n\t\t\tif(list[i] != \"\") {\n\t\t\t\treturn list[i];\n\t\t\t} \t\t\n\t\t}\t\t\n\t\treturn \"\";\n\t}\n\t\n\tfunction removeIfEmptyTag(start) {\n\t\tvar cleaned = false;\n\t\tif(start == peekTillNotEmpty(nodeList)) {\n\t\t\twhile(peek(nodeList) != start) {\n\t\t\t\tnodeList.pop();\n\t\t\t}\n\t\t\tnodeList.pop();\n\t\t\tcleaned = true;\n\t\t} \n\t\treturn cleaned;\n\t}\n\t\n\tfunction sliceText(start) {\n\t\tvar text = [];\n\t\twhile(nodeList.length > 0 && peek(nodeList) != start) {\n\t\t\tvar t = nodeList.pop();\n\t\t\ttext.unshift(t);\n\t\t}\n\t\treturn text.join(\"\");\n\t}\n\t\n\tfunction block(isEndBlock) {\n\t\tvar lastItem = nodeList.pop();\n\t\tif (!lastItem) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!isEndBlock) {\n\t\t\tvar block;\n\t\t\tif(/\\s*\\n\\n\\s*$/.test(lastItem)) {\n\t\t\t\tlastItem = lastItem.replace(/\\s*\\n\\n\\s*$/, \"\\n\\n\");\n\t\t\t\tblock = \"\";\n\t\t\t} else if(/\\s*\\n\\s*$/.test(lastItem)) {\n\t\t\t\tlastItem = lastItem.replace(/\\s*\\n\\s*$/, \"\\n\");\n\t\t\t\tblock = \"\\n\";\n\t\t\t} else if(/\\s+$/.test(lastItem)) {\t\t\t\t\n\t\t\t\tblock = \"\\n\\n\";\n\t\t\t} else {\n\t\t\t\tblock = \"\\n\\n\";\n\t\t\t} \n\t\t\t\n\t\t\tnodeList.push(lastItem);\n\t\t\tnodeList.push(block);\t\n\t\t} else {\n\t\t\tnodeList.push(lastItem);\n\t\t\tif(!lastItem.endsWith(\"\\n\")) {\n\t\t\t\tnodeList.push(\"\\n\\n\");\n\t\t\t}\n\t\t}\n \t}\n\t\n\tfunction listBlock() {\n\t\tif(nodeList.length > 0) {\n\t\t\tvar li = peek(nodeList);\n\n\t\t\tif(!li.endsWith(\"\\n\")) {\n\t\t\t\tnodeList.push(\"\\n\");\n\t\t\t} \n\t\t} else {\n\t\t\tnodeList.push(\"\\n\");\n\t\t}\n\t}\n\t\n\ttry {\n\t\tvar dom;\n\t\tif(html) {\n\t\tvar e = document.createElement('div');\n\t\t\te.innerHTML = html;\n\t\t\tdom = e;\n\t\t} else {\n\t\t\tdom = window.document.body;\n\t\t}\n\n\t\tHTMLParser(dom,{\n\t\t\tstart: function(tag, attrs, unary) {\n\t\t\t\ttag = tag.toLowerCase();\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"start: \"+ tag);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(unary && (tag != \"br\" && tag != \"hr\" && tag != \"img\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tswitch (tag) {\n\t\t\t\tcase \"br\":\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"hr\":\n\t\t\t\t\tblock();\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"title\":\t\n\t\t\t\tcase \"h1\":\n\t\t\t\tcase \"h2\":\n\t\t\t\tcase \"h3\":\n\t\t\t\tcase \"h4\":\n\t\t\t\tcase \"h5\":\n\t\t\t\tcase \"h6\":\n\t\t\t\t\tblock();\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"b\":\n\t\t\t\tcase \"strong\":\n\t\t\t\tcase \"i\":\n\t\t\t\tcase \"em\":\n\t\t\t\tcase \"dfn\": \n\t\t\t\tcase \"var\": \t\n\t\t\t\tcase \"cite\":\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"span\":\n\t\t\t\t\tif(! /\\s+$/.test(peek(nodeList))) {\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\t\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"p\":\n\t\t\t\tcase \"div\":\t\t\t\t\n\t\t\t\tcase \"td\":\n\t\t\t\t\tblock();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ul\":\n\t\t\t\tcase \"ol\":\n\t\t\t\tcase \"dl\":\t\n\t\t\t\t\tlistTagStack.push(markdownTags[tag]);\n\t\t\t\t\t// lists are block elements\n\t\t\t\t\tif(listTagStack.length > 1) {\n\t\t\t\t\t\tlistBlock();\n\t\t\t\t\t} else {\t\t\t\t\t\t\n\t\t\t\t\t\tblock();\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"li\":\n\t\t\t\tcase \"dt\":\n\t\t\t\t\tvar li = getListMarkdownTag();\n\t\t\t\t\tnodeList.push(li);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"a\":\t\t\t\t\t\n\t\t\t\t\tvar attribs = convertAttrs(attrs);\n\t\t\t\t\tlinkAttrStack.push(attribs);\n\t\t\t\t\tnodeList.push(\"[\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"img\":\n\t\t\t\t\tvar attribs = convertAttrs(attrs);\n\t\t\t\t\tvar alt, title, url; \n\t\t\t\t\t\n\t\t\t\t\tattribs[\"src\"] ? url = getNormalizedUrl(attribs[\"src\"].value) : url = \"\";\n\t\t\t\t\tif(!url) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tattribs['alt'] ? alt = attribs['alt'].value.trim() : alt = \"\";\n\t\t\t\t\tattribs['title'] ? title = attribs['title'].value.trim() : title = \"\";\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// if parent of image tag is nested in anchor tag use inline style\n\t\t\t\t\tif(!inlineStyle && !peekTillNotEmpty(nodeList).startsWith(\"[\")) {\t\t\t\t\t\t\n\t\t\t\t\t\tvar l = links.indexOf(url);\n\t\t\t\t\t\tif(l == -1) {\n\t\t\t\t\t\t\tlinks.push(url);\n\t\t\t\t\t\t\tl=links.length-1;\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tblock();\n\t\t\t\t\t\tnodeList.push(\"![\");\n\t\t\t\t\t\tif(alt!= \"\") {\n\t\t\t\t\t\t\tnodeList.push(alt);\n\t\t\t\t\t\t} else if (title != null) {\n\t\t\t\t\t\t\tnodeList.push(title);\n\t\t\t\t\t\t} \n\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"][\" + l + \"]\");\n\t\t\t\t\t\tblock();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//if image is not a link image then treat images as block elements\n\t\t\t\t\t\tif(!peekTillNotEmpty(nodeList).startsWith(\"[\")) {\n\t\t\t\t\t\t\tblock();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"![\" + alt + \"](\" + url + (title ? \" \\\"\" + title + \"\\\"\" : \"\") + \")\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!peekTillNotEmpty(nodeList).startsWith(\"[\")) {\n\t\t\t\t\t\t\tblock(true);\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\n\t\t\t\tcase \"blockquote\":\n\t\t\t\t\tblock();\n\t\t\t\t\tblockquoteStack.push(markdownTags[tag]);\n\t\t\t\t\tnodeList.push(blockquoteStack.join(\"\"));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\":\n\t\t\t\tcase \"code\":\n\t\t\t\t\tblock();\n\t\t\t\t\tpreStack.push(true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\t\t\t\t\n\t\t\t},\n\t\t\tchars: function(text) {\t\t\t\n\t\t\t\tif(preStack.length > 0) {\n\t\t\t\t\ttext = \"    \" + text.replace(/\\n/g,\"\\n    \");\n\t\t\t\t} else if(text.trim() != \"\") {\n\t\t\t\t\ttext = text.replace(/\\s+/g, \" \");\n\t\t\t\t\t\n\t\t\t\t\tvar prevText = peekTillNotEmpty(nodeList);\n\t\t\t\t\tif(/\\s+$/.test(prevText)) {\n\t\t\t\t\t\ttext = text.replace(/^\\s+/g, \"\");\n\t\t\t\t\t}\t\n\t\t\t\t} else {\n\t\t\t\t\tnodeList.push(\"\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"text: \"+ text);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnodeList.push(text);\n\t\t\t},\n\t\t\tend: function(tag) {\n\t\t\t\ttag = tag.toLowerCase();\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"end: \"+ tag);\n\t\t\t\t}\n\t\t\t\tswitch (tag) {\t\t\t\t\n\t\t\t\tcase \"title\":\t\n\t\t\t\tcase \"h1\":\n\t\t\t\tcase \"h2\":\n\t\t\t\tcase \"h3\":\n\t\t\t\tcase \"h4\":\n\t\t\t\tcase \"h5\":\n\t\t\t\tcase \"h6\":\n\t\t\t\t\tif(!removeIfEmptyTag(markdownTags[tag])) {\n\t\t\t\t\t\tblock(true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"p\":\n\t\t\t\tcase \"div\":\n\t\t\t\tcase \"td\":\n\t\t\t\t\twhile(nodeList.length > 0 && peek(nodeList).trim() == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t}\n\t\t\t\t\tblock(true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"b\":\n\t\t\t\tcase \"strong\":\n\t\t\t\tcase \"i\":\n\t\t\t\tcase \"em\":\n\t\t\t\tcase \"dfn\": \n\t\t\t\tcase \"var\": \t\n\t\t\t\tcase \"cite\":\n\t\t\t\t\tif(!removeIfEmptyTag(markdownTags[tag])) {\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(sliceText(markdownTags[tag]).trim());\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tvar text = sliceText(\"[\");\n\t\t\t\t\ttext = text.replace(/\\s+/g, \" \");\t\t\t\t\t\n\t\t\t\t\ttext = text.trim();\n\t\t\t\t\t\n\t\t\t\t\tif(text == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar attrs = linkAttrStack.pop();\n\t\t\t\t\tvar url;\n\t\t\t\t\tattrs[\"href\"] &&  attrs[\"href\"].value != \"\" ? url = getNormalizedUrl(attrs[\"href\"].value) : url = \"\";\n\t\t\t\t\t\n\t\t\t\t\tif(url == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\n\t\t\t\t\tif(!inlineStyle && !peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\tvar l = links.indexOf(url);\n\t\t\t\t\t\tif(l == -1) {\n\t\t\t\t\t\t\tlinks.push(url);\n\t\t\t\t\t\t\tl=links.length-1;\n\t\t\t\t\t\t}\t\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"][\" + l + \"]\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\t\tvar text = nodeList.pop();\n\t\t\t\t\t\t\ttext = nodeList.pop() + text;\n\t\t\t\t\t\t\tblock();\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar title = attrs[\"title\"];\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"](\" + url + (title ? \" \\\"\" + title.value.trim().replace(/\\s+/g, \" \") + \"\\\"\" : \"\") + \")\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\t\tblock(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\t\t\t\t\n\t\t\t\tcase \"ul\":\n\t\t\t\tcase \"ol\":\n\t\t\t\tcase \"dl\":\t\n\t\t\t\t\tlistBlock();\n\t\t\t\t\tlistTagStack.pop();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"li\":\n\t\t\t\tcase \"dt\":\n\t\t\t\t\tvar li = getListMarkdownTag();\n\t\t\t\t\tif(!removeIfEmptyTag(li)) {\n\t\t\t\t\t\tvar text = sliceText(li).trim();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(text.startsWith(\"[![\")) {\n\t\t\t\t\t\t\tnodeList.pop();\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tblock();\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t\tblock(true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t\tlistBlock();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"blockquote\":\n\t\t\t\t\tblockquoteStack.pop();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\":\n\t\t\t\tcase \"code\":\n\t\t\t\t\tblock(true);\n\t\t\t\t\tpreStack.pop();\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"span\":\n\t\t\t\t\tif(peek(nodeList).trim() == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tif(peek(nodeList) == \" \") {\n\t\t\t\t\t\t\tnodeList.pop();\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar text = nodeList.pop();\n\t\t\t\t\t\tnodeList.push(text.trim());\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\t\t\t\t\n\t\t\t\tcase \"br\":\n\t\t\t\tcase \"hr\":\n\t\t\t\tcase \"img\":\n\t\t\t\tcase \"table\":\t\n\t\t\t\tcase \"tr\":\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}, {\"nodesToIgnore\": [\"script\", \"noscript\", \"object\", \"iframe\", \"frame\", \"head\", \"style\", \"label\"]});\n\t\t\n\t\tif(!inlineStyle) {\t\t\t\t\t\t\t\n\t\t\tfor ( var i = 0; i < links.length; i++) {\n\t\t\t\tif(i == 0) {\n\t\t\t\t\tvar lastItem = nodeList.pop();\n\t\t\t\t\tnodeList.push(lastItem.replace(/\\s+$/g, \"\"));\n\t\t\t\t\tnodeList.push(\"\\n\\n[\" + i + \"]: \" + links[i]);\n\t\t\t\t} else {\n\t\t\t\t\tnodeList.push(\"\\n[\" + i + \"]: \" + links[i]);\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch(e) {\n\t\tconsole.log(e.stack);\n\t\tconsole.trace();\n\t}\n\t\n\treturn nodeList.join(\"\");\n\t\n}\n\nfunction getNormalizedUrl(s) {\n\tvar urlBase = location.href;\n\tvar urlDir  = urlBase.replace(/\\/[^\\/]*$/, '/');\n\tvar urlPage = urlBase.replace(/#[^\\/#]*$/, '');\n\n\tvar url;\n\tif(/^[a-zA-Z]([a-zA-Z0-9 -.])*:/.test(s)) {\n\t\t// already absolute url\n\t\turl = s;\n\t} else if(/^\\x2f/.test(s)) {// %2f --> /\n\t\t// url is relative to site\n\t\tlocation.protocol != \"\" ? url = location.protocol + \"//\" : url =\"\";\t\t\n\t\turl+= location.hostname;\t\t\n\t\tif(location.port != \"80\") {\n\t\t\turl+=\":\"+location.port;\n\t\t}\t\t\t\t\n\t\turl += s;\n\t} else if(/^#/.test(s)) {\n\t\t// url is relative to page\n\t\turl = urlPage + s;\n\t} else {\n\t\turl = urlDir + s;\n\t}\n\treturn encodeURI(url);\n}\n\nif (typeof exports != \"undefined\") {\n\texports.HTML2Markdown = HTML2Markdown;\n}\n\t\t\nif (typeof exports != \"undefined\") {\n\texports.HTML2MarkDown = HTML2MarkDown;\n}\n\n/* add the useful functions to String object*/\nif (typeof String.prototype.trim != 'function') {\n\tString.prototype.trim = function() {\n\t\treturn replace(/^\\s+|\\s+$/g,\"\");\n\t};\t\n}\n\nif (typeof String.prototype.isNotEmpty != 'function') {\n\tString.prototype.isNotEmpty = function() {\n\t\tif (/\\S/.test(this)) {\n\t\t    return true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\t\t\n\t};\t\n}\n\nif (typeof String.prototype.replaceAll != 'function') {\n\tString.prototype.replaceAll = function(stringToFind,stringToReplace){\n\t    var temp = this;\n\t    var index = temp.indexOf(stringToFind);\n\t        while(index != -1){\n\t            temp = temp.replace(stringToFind,stringToReplace);\n\t            index = temp.indexOf(stringToFind);\n\t        }\n\t        return temp;\n\t};\t\n}\n\nif (typeof String.prototype.startsWith != 'function') {\n\tString.prototype.startsWith = function(str) {\n\t\treturn this.indexOf(str) == 0;\n\t};\n}\n\nif (typeof String.prototype.endsWith != 'function') {\n\tString.prototype.endsWith = function(suffix) {\n\t    return this.match(suffix+\"$\") == suffix;\n\t};\t\n}\n\nif (typeof Array.prototype.indexOf != 'function') {\n\tArray.prototype.indexOf = function(obj, fromIndex) {\n\t\tif (fromIndex == null) {\n\t\t\tfromIndex = 0;\n\t\t} else if (fromIndex < 0) {\n\t\t\tfromIndex = Math.max(0, this.length + fromIndex);\n\t\t}\n\t\tfor ( var i = fromIndex, j = this.length; i < j; i++) {\n\t\t\tif (this[i] === obj)\n\t\t\t\treturn i;\n\t\t}\n\t\treturn -1;\n\t};\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/htmldomparser.js",
    "content": "/*\n * HTMLParser - This implementation of parser assumes we are parsing HTML in browser\n * and user DOM methods available in browser for parsing HTML.\n * \n * @author Himanshu Gilani\n * \n */\n\nvar HTMLParser = function(node, handler, opts) {\n\topts = opts || {};\n\tvar nodesToIgnore = opts['nodesToIgnore'] || [];\n\tvar parseHiddenNodes = opts['parseHiddenNodes'] || 'false';\n\t\n\tvar c = node.childNodes;\n\tfor ( var i = 0; i < c.length; i++) {\n\t\ttry {\n\t\t\tvar ignore = false;\n\t\t\tfor(var k=0; k< nodesToIgnore.length; k++) {\n\t\t\t\tif(c[i].nodeName.toLowerCase() == nodesToIgnore[k]) {\n\t\t\t\t\tignore= true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//NOTE hidden node testing is expensive in FF.\n\t\t\tif (ignore || (!parseHiddenNodes && isHiddenNode(c[i]))  ){\n\t\t\t\tcontinue;\n\t\t\t} \n\t\t\t\n\t\t\tif (c[i].nodeName.toLowerCase() != \"#text\" && c[i].nodeName.toLowerCase() != \"#comment\") {\n\t\t\t\tvar attrs = [];\n\n\t\t\t\tif (c[i].hasAttributes()) {\n\t\t\t\t\tvar attributes = c[i].attributes;\n\t\t\t\t\tfor ( var a = 0; a < attributes.length; a++) {\n\t\t\t\t\t\tvar attribute = attributes.item(a);\n\n\t\t\t\t\t\tattrs.push({\n\t\t\t\t\t\t\tname : attribute.nodeName,\n\t\t\t\t\t\t\tvalue : attribute.nodeValue,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (handler.start) {\n\t\t\t\t\tif (c[i].hasChildNodes()) {\n\t\t\t\t\t\thandler.start(c[i].nodeName, attrs, false);\n\n\t\t\t\t\t\tif (c[i].nodeName.toLowerCase() == \"pre\" || c[i].nodeName.toLowerCase() == \"code\") {\n\t\t\t\t\t\t\thandler.chars(c[i].innerHTML);\n\t\t\t\t\t\t} else if (c[i].nodeName.toLowerCase() == \"iframe\" || c[i].nodeName.toLowerCase() == \"frame\") {\n\t\t\t\t\t\t\tif (c[i].contentDocument && c[i].contentDocument.documentElement) {\n\t\t\t\t\t\t\t\treturn HTMLParser(c[i].contentDocument.documentElement, handler, opts);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (c[i].hasChildNodes()) {\n\t\t\t\t\t\t\tHTMLParser(c[i], handler, opts);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (handler.end) {\n\t\t\t\t\t\t\thandler.end(c[i].nodeName);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandler.start(c[i].nodeName, attrs, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (c[i].nodeName.toLowerCase() == \"#text\") {\n\t\t\t\tif (handler.chars) {\n\t\t\t\t\thandler.chars(c[i].nodeValue);\n\t\t\t\t}\n\t\t\t} else if (c[i].nodeName.toLowerCase() == \"#comment\") {\n\t\t\t\tif (handler.comment) {\n\t\t\t\t\thandler.comment(c[i].nodeValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t//properly log error\t\n\t\t\tconsole.log(\"error while parsing node: \" + c[i].nodeName.toLowerCase());\n\t\t}\n\t}\n};\n\nfunction isHiddenNode(node) {\n\tif(node.nodeName.toLowerCase() == \"title\"){\n\t\treturn false;\n\t}\n\t\n\tif (window.getComputedStyle) {\n\t\ttry {\n\t\t\tvar style = window.getComputedStyle(node, null);\n\t\t\tif (style.getPropertyValue && style.getPropertyValue('display') == 'none') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// consume and ignore. node styles are not accessible\n\t\t}\n\t\treturn false;\n\t}\n} "
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.css",
    "content": "html,body{\n\tfont-size:12px;\n\tpadding:0px;margin:0;\n\toverflow:hidden;\n\twidth:100%;height:100%;\n}\n#buttonArea{\n\tbackground:url(img/bg1.gif);\n\tborder-top:1px solid #F0F5FA;\n\tborder-bottom:1px solid #99BBE8;\n\tpadding:3px;\n}\n#controlBtns{\n\tfloat:right;\n}\n.btn{\n\tdisplay:inline-block;\n\tcolor:#000;\n\ttext-decoration:none;\n\tpadding-right:3px;\n\tcursor:pointer;\n}\n.btn span{\n\tdisplay:inline-block;\n\theight:17px;\n\tline-height:17px;\n\tpadding:2px;\n}\n.btn img{border:0;vertical-align:text-bottom;}\n.btn:hover{background:url(img/btnbgr.gif) top right;}\n.btn:hover span{background:url(img/btnbg.gif);}\n#listArea{\n\toverflow-x:hidden;\n\toverflow-y:auto;\n}\n#listTitle tr{background:url(img/bg2.gif);}\n#listTitle td{padding:5px;border-top:1px solid #F0F5FA;border-left:1px solid #fff;border-right:1px solid #ccc;border-bottom:1px solid #D0D0D0;}\n#listBody tr{cursor:pointer;}\n#listBody .hover{background:#F0F0F0;}\n#listBody .select{background:#DFE8F6;}\n#listBody td{padding:5px;border-bottom:1px solid #EDEDED;}\n#progressArea{\n\tbackground:#D4E1F2;\n\tborder-top:1px solid #99BBE8;\n\tpadding:3px;\n}\n#progressBar{\n\tposition: relative;\n\tborder:1px solid #6593CF;\n\tpadding:1px;\n}\n#progress{\n\theight:16px;\n\tbackground:#8FB5E8 url(img/progressbg.gif);\n}\n#progressBar span{\n\tposition: absolute;\n\ttext-align: center;\n\twidth:100%;line-height:16px;\n\tcolor:#396095;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\n<head>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>MultiUpload Demo</title>\n<link href=\"multiupload.css\" rel=\"stylesheet\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"../../jquery/jquery-1.4.4.min.js\"></script>\n<script type=\"text/javascript\" src=\"swfupload/swfupload.js\"></script>\n<script type=\"text/javascript\" src=\"multiupload.js\"></script>\n<script type=\"text/javascript\">\n$(window).load(pageInit);\nfunction pageInit()\n{\n\tvar uploadurl='../upload.php',ext='所有文件 (*.*)',size='2 MB',count=5,useget=0,params={}//默认值 \n\n\tuploadurl=getQuery('uploadurl')||uploadurl;ext=getQuery('ext')||ext;size=getQuery('size')||size;count=getQuery('count')||count;useget=getQuery('useget')||useget;\n\tvar tmpParams=getQuery('params');\n\tif(tmpParams)\n\t{\n\t\ttry{eval(\"tmpParams=\" + tmpParams);}catch(ex){};\n\t\tparams=$.extend({},params,tmpParams);\n\t}\n\text=ext.match(/([^\\(]+?)\\s*\\(\\s*([^\\)]+?)\\s*\\)/i);\n\tsetTimeout(fixHeight,10);\n\tswfu = new SWFUpload({\n\t\t// Flash组件\n\t\tflash_url : \"swfupload/swfupload.swf\",\n\t\tprevent_swf_caching : false,//是否缓存SWF文件\n\t\t\n\t\t// 服务器端\n\t\tupload_url: uploadurl,\n\t\tfile_post_name : \"filedata\",\n\t\tpost_params: params,//随文件上传一同向上传接收程序提交的Post数据\n\t\tuse_query_string : useget=='1'?true:false,//是否用GET方式发送参数\n\n\t\t// 文件设置\n\t\tfile_types : ext[2],//文件格式限制\n\t\tfile_types_description : ext[1],//文件格式描述\n\t\tfile_size_limit : size,\t// 文件大小限制\n\t\tfile_upload_limit : count,//上传文件总数\n\t\tfile_queue_limit:0,//上传队列总数\n\t\tcustom_settings : {\n\t\t\ttest : \"aaa\"\n\t\t},\n\t\t\t\n\t\t// 事件处理\n\t\tfile_queued_handler : fileQueued,//添加成功\n\t\tfile_queue_error_handler : fileQueueError,//添加失败\n\t\tupload_start_handler : uploadStart,//上传开始\n\t\tupload_progress_handler : uploadProgress,//上传进度\n\t\tupload_error_handler : uploadError,//上传失败\n\t\tupload_success_handler : uploadSuccess,//上传成功\n\t\tupload_complete_handler : uploadComplete,//上传结束\n\n\t\t// 按钮设置\n\t\tbutton_placeholder_id : \"divAddFiles\",\n\t\tbutton_width: 69,\n\t\tbutton_height: 17,\n\t\tbutton_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,\n\t\tbutton_cursor: SWFUpload.CURSOR.HAND,\n\t\tbutton_image_url : \"img/add.gif\",\n\t\tbutton_text: '<span class=\"theFont\">添加文件</span>',\n\t\tbutton_text_style: \".theFont { font-size: 12px; }\",\n\t\tbutton_text_left_padding: 20,\n\t\tbutton_text_top_padding: 0,\n\t\t\n\t\t// 调试设置\n\t\tdebug: false\n\t});\n}\nfunction fixHeight(){$('#listArea').css('height',(document.body.clientHeight-56)+'px');}\nfunction getQuery(item){var svalue = location.search.match(new RegExp('[\\?\\&]' + item + '=([^\\&]*)(\\&?)','i'));return svalue?decodeURIComponent(svalue[1]):'';} \n\n//----------------跨域支持代码开始(非跨域环境请删除这段代码)----------------\nvar JSON = JSON || {};\nJSON.stringify = JSON.stringify || function (obj) {\n\tvar t = typeof (obj);\n\tif (t != \"object\" || obj === null) {\n\t\tif (t == \"string\")obj = '\"'+obj+'\"';\n\t\treturn String(obj);\n\t}\n\telse {\n\t\tvar n, v, json = [], arr = (obj && obj.constructor == Array);\n\t\tfor (n in obj) {\n\t\t\tv = obj[n]; t = typeof(v);\n\t\t\tif (t == \"string\") v = '\"'+v+'\"';\n\t\t\telse if (t == \"object\" && v !== null) v = JSON.stringify(v);\n\t\t\tjson.push((arr ? \"\" : '\"' + n + '\":') + String(v));\n\t\t}\n\t\treturn (arr ? \"[\" : \"{\") + String(json) + (arr ? \"]\" : \"}\");\n\t}\n};\nvar callback= callback || function(v){\n\tv=JSON.stringify(v);\n\twindow.name=escape(v);\n\twindow.location='http://'+location.search.match(/[\\?&]parenthost=(.*)(&|$)/i)[1]+'/xheditorproxy.html';//这个文件最好是一个0字节文件，如果无此文件也会正常工作\n}\n//----------------跨域支持代码结束----------------\n</script>\n</head>\n<body>\n\t<div id=\"upload\">\n\t\t<div id=\"buttonArea\">\n\t\t\t<div id=\"controlBtns\" style=\"display:none;\"><a href=\"javascript:void(0);\" id=\"btnClear\" onclick=\"removeFile();\" class=\"btn\" style=\"display:none;\"><span><img src=\"img/clear.gif\" /> 删除文件</span></a> <a href=\"javascript:void(0);\" id=\"btnStart\" onclick=\"startUploadFiles();\" class=\"btn\"><span><img src=\"img/start.gif\" /> 开始上传</span></a></div>\n\t\t\t<a href=\"javascript:void(0);\" id=\"addFiles\" class=\"btn\"><span><div id=\"divAddFiles\">添加文件</div></span></a>\n\t\t</div>\n\t\t<div id=\"listArea\">\n\t\t\t<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n\t\t\t\t<thead id=\"listTitle\"><tr><td width=\"53%\">文件名</td><td width=\"25%\">大小</td><td width=\"22%\">状态</td></tr></thead>\n\t\t\t\t<tbody id=\"listBody\">\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t\t<div id=\"progressArea\">\n\t\t\t<div id=\"progressBar\"><span>0%</span><div id=\"progress\" style=\"width:1px;\"></div></div>\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.js",
    "content": "/*!\n * MultiUpload for xheditor\n * @requires xhEditor\n * \n * @author Yanis.Wang<yanis.wang@gmail.com>\n * @site http://xheditor.com/\n * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)\n * \n * @Version: 0.9.2 (build 100505)\n */\nvar swfu,selQueue=[],selectID,arrMsg=[],allSize=0,uploadSize=0;\nfunction removeFile()\n{\n\tvar file;\n\tif(!selectID)return;\n\tfor(var i in selQueue)\n\t{\n\t\tfile=selQueue[i];\n\t\tif(file.id==selectID)\n\t\t{\n\t\t\tselQueue.splice(i,1);\n\t\t\tallSize-=file.size;\n\t\t\tswfu.cancelUpload(file.id);\n\t\t\t$('#'+file.id).remove();\n\t\t\tselectID=null;\n\t\t\tbreak;\n\t\t}\n\t}\n\t$('#btnClear').hide();\n\tif(selQueue.length==0)$('#controlBtns').hide();\n}\nfunction startUploadFiles()\n{\n\tif(swfu.getStats().files_queued>0)\n\t{\n\t\t$('#controlBtns').hide();\n\t\tswfu.startUpload();\n\t}\n\telse alert('上传前请先添加文件');\n}\nfunction setFileState(fileid,txt)\n{\n\t$('#'+fileid+'_state').text(txt);\n}\nfunction fileQueued(file)//队列添加成功\n{\n\tfor(var i in selQueue)if(selQueue[i].name==file.name){swfu.cancelUpload(file.id);return false;}//防止同名文件重复添加\n\tif(selQueue.length==0)$('#controlBtns').show();\n\tselQueue.push(file);\n\tallSize+=file.size;\n\t$('#listBody').append('<tr id=\"'+file.id+'\"><td>'+file.name+'</td><td>'+formatBytes(file.size)+'</td><td id=\"'+file.id+'_state\">就绪</td></tr>');\n\t$('#'+file.id).hover(function(){$(this).addClass('hover');},function(){$(this).removeClass('hover');})\n\t.click(function(){selectID=file.id;$('#listBody tr').removeClass('select');$(this).removeClass('hover').addClass('select');$('#btnClear').show();})\n}\nfunction fileQueueError(file, errorCode, message)//队列添加失败\n{\n\tvar errorName='';\n\tswitch (errorCode)\n\t{\n\t\tcase SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:\n\t\t\terrorName = \"只能同时上传 \"+this.settings.file_upload_limit+\" 个文件\";\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:\n\t\t\terrorName = \"选择的文件超过了当前大小限制：\"+this.settings.file_size_limit;\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:\n\t\t\terrorName = \"零大小文件\";\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:\n\t\t\terrorName = \"文件扩展名必需为：\"+this.settings.file_types_description+\" (\"+this.settings.file_types+\")\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\terrorName = \"未知错误\";\n\t\t\tbreak;\n\t}\n\talert(errorName);\n}\nfunction uploadStart(file)//单文件上传开始\n{\n\tsetFileState(file.id,'上传中…');\n}\nfunction uploadProgress(file, bytesLoaded, bytesTotal)//单文件上传进度\n{\n\tvar percent=Math.ceil((uploadSize+bytesLoaded)/allSize*100);\n\t$('#progressBar span').text(percent+'% ('+formatBytes(uploadSize+bytesLoaded)+' / '+formatBytes(allSize)+')');\n\t$('#progressBar div').css('width',percent+'%');\n}\nfunction uploadSuccess(file, serverData)//单文件上传成功\n{\n\tvar data=Object;\n\ttry{eval(\"data=\" + serverData);}catch(ex){};\n\tif(data.err!=undefined&&data.msg!=undefined)\n\t{\n\t\tif(!data.err)\n\t\t{\n\t\t\tuploadSize+=file.size;\n\t\t\tarrMsg.push(data.msg);\n\t\t\tsetFileState(file.id,'上传成功');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetFileState(file.id,'上传失败');\n\t\t\talert(data.err);\n\t\t}\n\t}\n\telse setFileState(file.id,'上传失败！');\n}\nfunction uploadError(file, errorCode, message)//单文件上传错误\n{\n\tsetFileState(file.id,'上传失败！');\n}\nfunction uploadComplete(file)//文件上传周期结束\n{\n\tif(swfu.getStats().files_queued>0)swfu.startUpload();\n\telse uploadAllComplete();\n}\nfunction uploadAllComplete()//全部文件上传成功\n{\n\tcallback(arrMsg);\n}\nfunction formatBytes(bytes) {\n\tvar s = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\tvar e = Math.floor(Math.log(bytes)/Math.log(1024));\n\treturn (bytes/Math.pow(1024, Math.floor(e))).toFixed(2)+\" \"+s[e];\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.js",
    "content": "/**\n * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com\n *\n * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/\n *\n * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz�n and Mammon Media and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\n\n\n/* ******************* */\n/* Constructor & Init  */\n/* ******************* */\nvar SWFUpload;\n\nif (SWFUpload == undefined) {\n\tSWFUpload = function (settings) {\n\t\tthis.initSWFUpload(settings);\n\t};\n}\n\nSWFUpload.prototype.initSWFUpload = function (settings) {\n\ttry {\n\t\tthis.customSettings = {};\t// A container where developers can place their own settings associated with this instance.\n\t\tthis.settings = settings;\n\t\tthis.eventQueue = [];\n\t\tthis.movieName = \"SWFUpload_\" + SWFUpload.movieCount++;\n\t\tthis.movieElement = null;\n\n\n\t\t// Setup global control tracking\n\t\tSWFUpload.instances[this.movieName] = this;\n\n\t\t// Load the settings.  Load the Flash movie.\n\t\tthis.initSettings();\n\t\tthis.loadFlash();\n\t\tthis.displayDebugInfo();\n\t} catch (ex) {\n\t\tdelete SWFUpload.instances[this.movieName];\n\t\tthrow ex;\n\t}\n};\n\n/* *************** */\n/* Static Members  */\n/* *************** */\nSWFUpload.instances = {};\nSWFUpload.movieCount = 0;\nSWFUpload.version = \"2.2.0 2009-03-25\";\nSWFUpload.QUEUE_ERROR = {\n\tQUEUE_LIMIT_EXCEEDED\t  \t\t: -100,\n\tFILE_EXCEEDS_SIZE_LIMIT  \t\t: -110,\n\tZERO_BYTE_FILE\t\t\t  \t\t: -120,\n\tINVALID_FILETYPE\t\t  \t\t: -130\n};\nSWFUpload.UPLOAD_ERROR = {\n\tHTTP_ERROR\t\t\t\t  \t\t: -200,\n\tMISSING_UPLOAD_URL\t      \t\t: -210,\n\tIO_ERROR\t\t\t\t  \t\t: -220,\n\tSECURITY_ERROR\t\t\t  \t\t: -230,\n\tUPLOAD_LIMIT_EXCEEDED\t  \t\t: -240,\n\tUPLOAD_FAILED\t\t\t  \t\t: -250,\n\tSPECIFIED_FILE_ID_NOT_FOUND\t\t: -260,\n\tFILE_VALIDATION_FAILED\t  \t\t: -270,\n\tFILE_CANCELLED\t\t\t  \t\t: -280,\n\tUPLOAD_STOPPED\t\t\t\t\t: -290\n};\nSWFUpload.FILE_STATUS = {\n\tQUEUED\t\t : -1,\n\tIN_PROGRESS\t : -2,\n\tERROR\t\t : -3,\n\tCOMPLETE\t : -4,\n\tCANCELLED\t : -5\n};\nSWFUpload.BUTTON_ACTION = {\n\tSELECT_FILE  : -100,\n\tSELECT_FILES : -110,\n\tSTART_UPLOAD : -120\n};\nSWFUpload.CURSOR = {\n\tARROW : -1,\n\tHAND : -2\n};\nSWFUpload.WINDOW_MODE = {\n\tWINDOW : \"window\",\n\tTRANSPARENT : \"transparent\",\n\tOPAQUE : \"opaque\"\n};\n\n// Private: takes a URL, determines if it is relative and converts to an absolute URL\n// using the current site. Only processes the URL if it can, otherwise returns the URL untouched\nSWFUpload.completeURL = function(url) {\n\tif (typeof(url) !== \"string\" || url.match(/^https?:\\/\\//i) || url.match(/^\\//)) {\n\t\treturn url;\n\t}\n\t\n\tvar currentURL = window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? \":\" + window.location.port : \"\");\n\t\n\tvar indexSlash = window.location.pathname.lastIndexOf(\"/\");\n\tif (indexSlash <= 0) {\n\t\tpath = \"/\";\n\t} else {\n\t\tpath = window.location.pathname.substr(0, indexSlash) + \"/\";\n\t}\n\t\n\treturn /*currentURL +*/ path + url;\n\t\n};\n\n\n/* ******************** */\n/* Instance Members  */\n/* ******************** */\n\n// Private: initSettings ensures that all the\n// settings are set, getting a default value if one was not assigned.\nSWFUpload.prototype.initSettings = function () {\n\tthis.ensureDefault = function (settingName, defaultValue) {\n\t\tthis.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];\n\t};\n\t\n\t// Upload backend settings\n\tthis.ensureDefault(\"upload_url\", \"\");\n\tthis.ensureDefault(\"preserve_relative_urls\", false);\n\tthis.ensureDefault(\"file_post_name\", \"Filedata\");\n\tthis.ensureDefault(\"post_params\", {});\n\tthis.ensureDefault(\"use_query_string\", false);\n\tthis.ensureDefault(\"requeue_on_error\", false);\n\tthis.ensureDefault(\"http_success\", []);\n\tthis.ensureDefault(\"assume_success_timeout\", 0);\n\t\n\t// File Settings\n\tthis.ensureDefault(\"file_types\", \"*.*\");\n\tthis.ensureDefault(\"file_types_description\", \"All Files\");\n\tthis.ensureDefault(\"file_size_limit\", 0);\t// Default zero means \"unlimited\"\n\tthis.ensureDefault(\"file_upload_limit\", 0);\n\tthis.ensureDefault(\"file_queue_limit\", 0);\n\n\t// Flash Settings\n\tthis.ensureDefault(\"flash_url\", \"swfupload.swf\");\n\tthis.ensureDefault(\"prevent_swf_caching\", true);\n\t\n\t// Button Settings\n\tthis.ensureDefault(\"button_image_url\", \"\");\n\tthis.ensureDefault(\"button_width\", 1);\n\tthis.ensureDefault(\"button_height\", 1);\n\tthis.ensureDefault(\"button_text\", \"\");\n\tthis.ensureDefault(\"button_text_style\", \"color: #000000; font-size: 16pt;\");\n\tthis.ensureDefault(\"button_text_top_padding\", 0);\n\tthis.ensureDefault(\"button_text_left_padding\", 0);\n\tthis.ensureDefault(\"button_action\", SWFUpload.BUTTON_ACTION.SELECT_FILES);\n\tthis.ensureDefault(\"button_disabled\", false);\n\tthis.ensureDefault(\"button_placeholder_id\", \"\");\n\tthis.ensureDefault(\"button_placeholder\", null);\n\tthis.ensureDefault(\"button_cursor\", SWFUpload.CURSOR.ARROW);\n\tthis.ensureDefault(\"button_window_mode\", SWFUpload.WINDOW_MODE.WINDOW);\n\t\n\t// Debug Settings\n\tthis.ensureDefault(\"debug\", false);\n\tthis.settings.debug_enabled = this.settings.debug;\t// Here to maintain v2 API\n\t\n\t// Event Handlers\n\tthis.settings.return_upload_start_handler = this.returnUploadStart;\n\tthis.ensureDefault(\"swfupload_loaded_handler\", null);\n\tthis.ensureDefault(\"file_dialog_start_handler\", null);\n\tthis.ensureDefault(\"file_queued_handler\", null);\n\tthis.ensureDefault(\"file_queue_error_handler\", null);\n\tthis.ensureDefault(\"file_dialog_complete_handler\", null);\n\t\n\tthis.ensureDefault(\"upload_start_handler\", null);\n\tthis.ensureDefault(\"upload_progress_handler\", null);\n\tthis.ensureDefault(\"upload_error_handler\", null);\n\tthis.ensureDefault(\"upload_success_handler\", null);\n\tthis.ensureDefault(\"upload_complete_handler\", null);\n\t\n\tthis.ensureDefault(\"debug_handler\", this.debugMessage);\n\n\tthis.ensureDefault(\"custom_settings\", {});\n\n\t// Other settings\n\tthis.customSettings = this.settings.custom_settings;\n\t\n\t// Update the flash url if needed\n\tif (!!this.settings.prevent_swf_caching) {\n\t\tthis.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + \"preventswfcaching=\" + new Date().getTime();\n\t}\n\t\n\tif (!this.settings.preserve_relative_urls) {\n\t\t//this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url);\t// Don't need to do this one since flash doesn't look at it\n\t\tthis.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);\n\t\tthis.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);\n\t}\n\t\n\tdelete this.ensureDefault;\n};\n\n// Private: loadFlash replaces the button_placeholder element with the flash movie.\nSWFUpload.prototype.loadFlash = function () {\n\tvar targetElement, tempParent;\n\n\t// Make sure an element with the ID we are going to use doesn't already exist\n\tif (document.getElementById(this.movieName) !== null) {\n\t\tthrow \"ID \" + this.movieName + \" is already in use. The Flash Object could not be added\";\n\t}\n\n\t// Get the element where we will be placing the flash movie\n\ttargetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;\n\n\tif (targetElement == undefined) {\n\t\tthrow \"Could not find the placeholder element: \" + this.settings.button_placeholder_id;\n\t}\n\n\t// Append the container and load the flash\n\ttempParent = document.createElement(\"div\");\n\ttempParent.innerHTML = this.getFlashHTML();\t// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)\n\ttargetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);\n\n\t// Fix IE Flash/Form bug\n\tif (window[this.movieName] == undefined) {\n\t\twindow[this.movieName] = this.getMovieElement();\n\t}\n\t\n};\n\n// Private: getFlashHTML generates the object tag needed to embed the flash in to the document\nSWFUpload.prototype.getFlashHTML = function () {\n\t// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay\n\treturn ['<object id=\"', this.movieName, '\" type=\"application/x-shockwave-flash\" data=\"', this.settings.flash_url, '\" width=\"', this.settings.button_width, '\" height=\"', this.settings.button_height, '\" class=\"swfupload\">',\n\t\t\t\t'<param name=\"wmode\" value=\"', this.settings.button_window_mode, '\" />',\n\t\t\t\t'<param name=\"movie\" value=\"', this.settings.flash_url, '\" />',\n\t\t\t\t'<param name=\"quality\" value=\"high\" />',\n\t\t\t\t'<param name=\"menu\" value=\"false\" />',\n\t\t\t\t'<param name=\"allowScriptAccess\" value=\"always\" />',\n\t\t\t\t'<param name=\"flashvars\" value=\"' + this.getFlashVars() + '\" />',\n\t\t\t\t'</object>'].join(\"\");\n};\n\n// Private: getFlashVars builds the parameter string that will be passed\n// to flash in the flashvars param.\nSWFUpload.prototype.getFlashVars = function () {\n\t// Build a string from the post param object\n\tvar paramString = this.buildParamString();\n\tvar httpSuccessString = this.settings.http_success.join(\",\");\n\t\n\t// Build the parameter string\n\treturn [\"movieName=\", encodeURIComponent(this.movieName),\n\t\t\t\"&amp;uploadURL=\", encodeURIComponent(this.settings.upload_url),\n\t\t\t\"&amp;useQueryString=\", encodeURIComponent(this.settings.use_query_string),\n\t\t\t\"&amp;requeueOnError=\", encodeURIComponent(this.settings.requeue_on_error),\n\t\t\t\"&amp;httpSuccess=\", encodeURIComponent(httpSuccessString),\n\t\t\t\"&amp;assumeSuccessTimeout=\", encodeURIComponent(this.settings.assume_success_timeout),\n\t\t\t\"&amp;params=\", encodeURIComponent(paramString),\n\t\t\t\"&amp;filePostName=\", encodeURIComponent(this.settings.file_post_name),\n\t\t\t\"&amp;fileTypes=\", encodeURIComponent(this.settings.file_types),\n\t\t\t\"&amp;fileTypesDescription=\", encodeURIComponent(this.settings.file_types_description),\n\t\t\t\"&amp;fileSizeLimit=\", encodeURIComponent(this.settings.file_size_limit),\n\t\t\t\"&amp;fileUploadLimit=\", encodeURIComponent(this.settings.file_upload_limit),\n\t\t\t\"&amp;fileQueueLimit=\", encodeURIComponent(this.settings.file_queue_limit),\n\t\t\t\"&amp;debugEnabled=\", encodeURIComponent(this.settings.debug_enabled),\n\t\t\t\"&amp;buttonImageURL=\", encodeURIComponent(this.settings.button_image_url),\n\t\t\t\"&amp;buttonWidth=\", encodeURIComponent(this.settings.button_width),\n\t\t\t\"&amp;buttonHeight=\", encodeURIComponent(this.settings.button_height),\n\t\t\t\"&amp;buttonText=\", encodeURIComponent(this.settings.button_text),\n\t\t\t\"&amp;buttonTextTopPadding=\", encodeURIComponent(this.settings.button_text_top_padding),\n\t\t\t\"&amp;buttonTextLeftPadding=\", encodeURIComponent(this.settings.button_text_left_padding),\n\t\t\t\"&amp;buttonTextStyle=\", encodeURIComponent(this.settings.button_text_style),\n\t\t\t\"&amp;buttonAction=\", encodeURIComponent(this.settings.button_action),\n\t\t\t\"&amp;buttonDisabled=\", encodeURIComponent(this.settings.button_disabled),\n\t\t\t\"&amp;buttonCursor=\", encodeURIComponent(this.settings.button_cursor)\n\t\t].join(\"\");\n};\n\n// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload\n// The element is cached after the first lookup\nSWFUpload.prototype.getMovieElement = function () {\n\tif (this.movieElement == undefined) {\n\t\tthis.movieElement = document.getElementById(this.movieName);\n\t}\n\n\tif (this.movieElement === null) {\n\t\tthrow \"Could not find Flash element\";\n\t}\n\t\n\treturn this.movieElement;\n};\n\n// Private: buildParamString takes the name/value pairs in the post_params setting object\n// and joins them up in to a string formatted \"name=value&amp;name=value\"\nSWFUpload.prototype.buildParamString = function () {\n\tvar postParams = this.settings.post_params; \n\tvar paramStringPairs = [];\n\n\tif (typeof(postParams) === \"object\") {\n\t\tfor (var name in postParams) {\n\t\t\tif (postParams.hasOwnProperty(name)) {\n\t\t\t\tparamStringPairs.push(encodeURIComponent(name.toString()) + \"=\" + encodeURIComponent(postParams[name].toString()));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn paramStringPairs.join(\"&amp;\");\n};\n\n// Public: Used to remove a SWFUpload instance from the page. This method strives to remove\n// all references to the SWF, and other objects so memory is properly freed.\n// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.\n// Credits: Major improvements provided by steffen\nSWFUpload.prototype.destroy = function () {\n\ttry {\n\t\t// Make sure Flash is done before we try to remove it\n\t\tthis.cancelUpload(null, false);\n\t\t\n\n\t\t// Remove the SWFUpload DOM nodes\n\t\tvar movieElement = null;\n\t\tmovieElement = this.getMovieElement();\n\t\t\n\t\tif (movieElement && typeof(movieElement.CallFunction) === \"unknown\") { // We only want to do this in IE\n\t\t\t// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)\n\t\t\tfor (var i in movieElement) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof(movieElement[i]) === \"function\") {\n\t\t\t\t\t\tmovieElement[i] = null;\n\t\t\t\t\t}\n\t\t\t\t} catch (ex1) {}\n\t\t\t}\n\n\t\t\t// Remove the Movie Element from the page\n\t\t\ttry {\n\t\t\t\tmovieElement.parentNode.removeChild(movieElement);\n\t\t\t} catch (ex) {}\n\t\t}\n\t\t\n\t\t// Remove IE form fix reference\n\t\twindow[this.movieName] = null;\n\n\t\t// Destroy other references\n\t\tSWFUpload.instances[this.movieName] = null;\n\t\tdelete SWFUpload.instances[this.movieName];\n\n\t\tthis.movieElement = null;\n\t\tthis.settings = null;\n\t\tthis.customSettings = null;\n\t\tthis.eventQueue = null;\n\t\tthis.movieName = null;\n\t\t\n\t\t\n\t\treturn true;\n\t} catch (ex2) {\n\t\treturn false;\n\t}\n};\n\n\n// Public: displayDebugInfo prints out settings and configuration\n// information about this SWFUpload instance.\n// This function (and any references to it) can be deleted when placing\n// SWFUpload in production.\nSWFUpload.prototype.displayDebugInfo = function () {\n\tthis.debug(\n\t\t[\n\t\t\t\"---SWFUpload Instance Info---\\n\",\n\t\t\t\"Version: \", SWFUpload.version, \"\\n\",\n\t\t\t\"Movie Name: \", this.movieName, \"\\n\",\n\t\t\t\"Settings:\\n\",\n\t\t\t\"\\t\", \"upload_url:               \", this.settings.upload_url, \"\\n\",\n\t\t\t\"\\t\", \"flash_url:                \", this.settings.flash_url, \"\\n\",\n\t\t\t\"\\t\", \"use_query_string:         \", this.settings.use_query_string.toString(), \"\\n\",\n\t\t\t\"\\t\", \"requeue_on_error:         \", this.settings.requeue_on_error.toString(), \"\\n\",\n\t\t\t\"\\t\", \"http_success:             \", this.settings.http_success.join(\", \"), \"\\n\",\n\t\t\t\"\\t\", \"assume_success_timeout:   \", this.settings.assume_success_timeout, \"\\n\",\n\t\t\t\"\\t\", \"file_post_name:           \", this.settings.file_post_name, \"\\n\",\n\t\t\t\"\\t\", \"post_params:              \", this.settings.post_params.toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_types:               \", this.settings.file_types, \"\\n\",\n\t\t\t\"\\t\", \"file_types_description:   \", this.settings.file_types_description, \"\\n\",\n\t\t\t\"\\t\", \"file_size_limit:          \", this.settings.file_size_limit, \"\\n\",\n\t\t\t\"\\t\", \"file_upload_limit:        \", this.settings.file_upload_limit, \"\\n\",\n\t\t\t\"\\t\", \"file_queue_limit:         \", this.settings.file_queue_limit, \"\\n\",\n\t\t\t\"\\t\", \"debug:                    \", this.settings.debug.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"prevent_swf_caching:      \", this.settings.prevent_swf_caching.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"button_placeholder_id:    \", this.settings.button_placeholder_id.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_placeholder:       \", (this.settings.button_placeholder ? \"Set\" : \"Not Set\"), \"\\n\",\n\t\t\t\"\\t\", \"button_image_url:         \", this.settings.button_image_url.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_width:             \", this.settings.button_width.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_height:            \", this.settings.button_height.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text:              \", this.settings.button_text.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_style:        \", this.settings.button_text_style.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_top_padding:  \", this.settings.button_text_top_padding.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_left_padding: \", this.settings.button_text_left_padding.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_action:            \", this.settings.button_action.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_disabled:          \", this.settings.button_disabled.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"custom_settings:          \", this.settings.custom_settings.toString(), \"\\n\",\n\t\t\t\"Event Handlers:\\n\",\n\t\t\t\"\\t\", \"swfupload_loaded_handler assigned:  \", (typeof this.settings.swfupload_loaded_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_dialog_start_handler assigned: \", (typeof this.settings.file_dialog_start_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_queued_handler assigned:       \", (typeof this.settings.file_queued_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_queue_error_handler assigned:  \", (typeof this.settings.file_queue_error_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_start_handler assigned:      \", (typeof this.settings.upload_start_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_progress_handler assigned:   \", (typeof this.settings.upload_progress_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_error_handler assigned:      \", (typeof this.settings.upload_error_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_success_handler assigned:    \", (typeof this.settings.upload_success_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_complete_handler assigned:   \", (typeof this.settings.upload_complete_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"debug_handler assigned:             \", (typeof this.settings.debug_handler === \"function\").toString(), \"\\n\"\n\t\t].join(\"\")\n\t);\n};\n\n/* Note: addSetting and getSetting are no longer used by SWFUpload but are included\n\tthe maintain v2 API compatibility\n*/\n// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.\nSWFUpload.prototype.addSetting = function (name, value, default_value) {\n    if (value == undefined) {\n        return (this.settings[name] = default_value);\n    } else {\n        return (this.settings[name] = value);\n\t}\n};\n\n// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.\nSWFUpload.prototype.getSetting = function (name) {\n    if (this.settings[name] != undefined) {\n        return this.settings[name];\n\t}\n\n    return \"\";\n};\n\n\n\n// Private: callFlash handles function calls made to the Flash element.\n// Calls are made with a setTimeout for some functions to work around\n// bugs in the ExternalInterface library.\nSWFUpload.prototype.callFlash = function (functionName, argumentArray) {\n\targumentArray = argumentArray || [];\n\t\n\tvar movieElement = this.getMovieElement();\n\tvar returnValue, returnString;\n\n\t// Flash's method if calling ExternalInterface methods (code adapted from MooTools).\n\ttry {\n\t\treturnString = movieElement.CallFunction('<invoke name=\"' + functionName + '\" returntype=\"javascript\">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');\n\t\treturnValue = eval(returnString);\n\t} catch (ex) {\n\t\tthrow \"Call to \" + functionName + \" failed\";\n\t}\n\t\n\t// Unescape file post param values\n\tif (returnValue != undefined && typeof returnValue.post === \"object\") {\n\t\treturnValue = this.unescapeFilePostParams(returnValue);\n\t}\n\n\treturn returnValue;\n};\n\n/* *****************************\n\t-- Flash control methods --\n\tYour UI should use these\n\tto operate SWFUpload\n   ***************************** */\n\n// WARNING: this function does not work in Flash Player 10\n// Public: selectFile causes a File Selection Dialog window to appear.  This\n// dialog only allows 1 file to be selected.\nSWFUpload.prototype.selectFile = function () {\n\tthis.callFlash(\"SelectFile\");\n};\n\n// WARNING: this function does not work in Flash Player 10\n// Public: selectFiles causes a File Selection Dialog window to appear/ This\n// dialog allows the user to select any number of files\n// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.\n// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around\n// for this bug.\nSWFUpload.prototype.selectFiles = function () {\n\tthis.callFlash(\"SelectFiles\");\n};\n\n\n// Public: startUpload starts uploading the first file in the queue unless\n// the optional parameter 'fileID' specifies the ID \nSWFUpload.prototype.startUpload = function (fileID) {\n\tthis.callFlash(\"StartUpload\", [fileID]);\n};\n\n// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.\n// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.\n// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.\nSWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {\n\tif (triggerErrorEvent !== false) {\n\t\ttriggerErrorEvent = true;\n\t}\n\tthis.callFlash(\"CancelUpload\", [fileID, triggerErrorEvent]);\n};\n\n// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.\n// If nothing is currently uploading then nothing happens.\nSWFUpload.prototype.stopUpload = function () {\n\tthis.callFlash(\"StopUpload\");\n};\n\n/* ************************\n * Settings methods\n *   These methods change the SWFUpload settings.\n *   SWFUpload settings should not be changed directly on the settings object\n *   since many of the settings need to be passed to Flash in order to take\n *   effect.\n * *********************** */\n\n// Public: getStats gets the file statistics object.\nSWFUpload.prototype.getStats = function () {\n\treturn this.callFlash(\"GetStats\");\n};\n\n// Public: setStats changes the SWFUpload statistics.  You shouldn't need to \n// change the statistics but you can.  Changing the statistics does not\n// affect SWFUpload accept for the successful_uploads count which is used\n// by the upload_limit setting to determine how many files the user may upload.\nSWFUpload.prototype.setStats = function (statsObject) {\n\tthis.callFlash(\"SetStats\", [statsObject]);\n};\n\n// Public: getFile retrieves a File object by ID or Index.  If the file is\n// not found then 'null' is returned.\nSWFUpload.prototype.getFile = function (fileID) {\n\tif (typeof(fileID) === \"number\") {\n\t\treturn this.callFlash(\"GetFileByIndex\", [fileID]);\n\t} else {\n\t\treturn this.callFlash(\"GetFile\", [fileID]);\n\t}\n};\n\n// Public: addFileParam sets a name/value pair that will be posted with the\n// file specified by the Files ID.  If the name already exists then the\n// exiting value will be overwritten.\nSWFUpload.prototype.addFileParam = function (fileID, name, value) {\n\treturn this.callFlash(\"AddFileParam\", [fileID, name, value]);\n};\n\n// Public: removeFileParam removes a previously set (by addFileParam) name/value\n// pair from the specified file.\nSWFUpload.prototype.removeFileParam = function (fileID, name) {\n\tthis.callFlash(\"RemoveFileParam\", [fileID, name]);\n};\n\n// Public: setUploadUrl changes the upload_url setting.\nSWFUpload.prototype.setUploadURL = function (url) {\n\tthis.settings.upload_url = url.toString();\n\tthis.callFlash(\"SetUploadURL\", [url]);\n};\n\n// Public: setPostParams changes the post_params setting\nSWFUpload.prototype.setPostParams = function (paramsObject) {\n\tthis.settings.post_params = paramsObject;\n\tthis.callFlash(\"SetPostParams\", [paramsObject]);\n};\n\n// Public: addPostParam adds post name/value pair.  Each name can have only one value.\nSWFUpload.prototype.addPostParam = function (name, value) {\n\tthis.settings.post_params[name] = value;\n\tthis.callFlash(\"SetPostParams\", [this.settings.post_params]);\n};\n\n// Public: removePostParam deletes post name/value pair.\nSWFUpload.prototype.removePostParam = function (name) {\n\tdelete this.settings.post_params[name];\n\tthis.callFlash(\"SetPostParams\", [this.settings.post_params]);\n};\n\n// Public: setFileTypes changes the file_types setting and the file_types_description setting\nSWFUpload.prototype.setFileTypes = function (types, description) {\n\tthis.settings.file_types = types;\n\tthis.settings.file_types_description = description;\n\tthis.callFlash(\"SetFileTypes\", [types, description]);\n};\n\n// Public: setFileSizeLimit changes the file_size_limit setting\nSWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {\n\tthis.settings.file_size_limit = fileSizeLimit;\n\tthis.callFlash(\"SetFileSizeLimit\", [fileSizeLimit]);\n};\n\n// Public: setFileUploadLimit changes the file_upload_limit setting\nSWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {\n\tthis.settings.file_upload_limit = fileUploadLimit;\n\tthis.callFlash(\"SetFileUploadLimit\", [fileUploadLimit]);\n};\n\n// Public: setFileQueueLimit changes the file_queue_limit setting\nSWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {\n\tthis.settings.file_queue_limit = fileQueueLimit;\n\tthis.callFlash(\"SetFileQueueLimit\", [fileQueueLimit]);\n};\n\n// Public: setFilePostName changes the file_post_name setting\nSWFUpload.prototype.setFilePostName = function (filePostName) {\n\tthis.settings.file_post_name = filePostName;\n\tthis.callFlash(\"SetFilePostName\", [filePostName]);\n};\n\n// Public: setUseQueryString changes the use_query_string setting\nSWFUpload.prototype.setUseQueryString = function (useQueryString) {\n\tthis.settings.use_query_string = useQueryString;\n\tthis.callFlash(\"SetUseQueryString\", [useQueryString]);\n};\n\n// Public: setRequeueOnError changes the requeue_on_error setting\nSWFUpload.prototype.setRequeueOnError = function (requeueOnError) {\n\tthis.settings.requeue_on_error = requeueOnError;\n\tthis.callFlash(\"SetRequeueOnError\", [requeueOnError]);\n};\n\n// Public: setHTTPSuccess changes the http_success setting\nSWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {\n\tif (typeof http_status_codes === \"string\") {\n\t\thttp_status_codes = http_status_codes.replace(\" \", \"\").split(\",\");\n\t}\n\t\n\tthis.settings.http_success = http_status_codes;\n\tthis.callFlash(\"SetHTTPSuccess\", [http_status_codes]);\n};\n\n// Public: setHTTPSuccess changes the http_success setting\nSWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {\n\tthis.settings.assume_success_timeout = timeout_seconds;\n\tthis.callFlash(\"SetAssumeSuccessTimeout\", [timeout_seconds]);\n};\n\n// Public: setDebugEnabled changes the debug_enabled setting\nSWFUpload.prototype.setDebugEnabled = function (debugEnabled) {\n\tthis.settings.debug_enabled = debugEnabled;\n\tthis.callFlash(\"SetDebugEnabled\", [debugEnabled]);\n};\n\n// Public: setButtonImageURL loads a button image sprite\nSWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {\n\tif (buttonImageURL == undefined) {\n\t\tbuttonImageURL = \"\";\n\t}\n\t\n\tthis.settings.button_image_url = buttonImageURL;\n\tthis.callFlash(\"SetButtonImageURL\", [buttonImageURL]);\n};\n\n// Public: setButtonDimensions resizes the Flash Movie and button\nSWFUpload.prototype.setButtonDimensions = function (width, height) {\n\tthis.settings.button_width = width;\n\tthis.settings.button_height = height;\n\t\n\tvar movie = this.getMovieElement();\n\tif (movie != undefined) {\n\t\tmovie.style.width = width + \"px\";\n\t\tmovie.style.height = height + \"px\";\n\t}\n\t\n\tthis.callFlash(\"SetButtonDimensions\", [width, height]);\n};\n// Public: setButtonText Changes the text overlaid on the button\nSWFUpload.prototype.setButtonText = function (html) {\n\tthis.settings.button_text = html;\n\tthis.callFlash(\"SetButtonText\", [html]);\n};\n// Public: setButtonTextPadding changes the top and left padding of the text overlay\nSWFUpload.prototype.setButtonTextPadding = function (left, top) {\n\tthis.settings.button_text_top_padding = top;\n\tthis.settings.button_text_left_padding = left;\n\tthis.callFlash(\"SetButtonTextPadding\", [left, top]);\n};\n\n// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button\nSWFUpload.prototype.setButtonTextStyle = function (css) {\n\tthis.settings.button_text_style = css;\n\tthis.callFlash(\"SetButtonTextStyle\", [css]);\n};\n// Public: setButtonDisabled disables/enables the button\nSWFUpload.prototype.setButtonDisabled = function (isDisabled) {\n\tthis.settings.button_disabled = isDisabled;\n\tthis.callFlash(\"SetButtonDisabled\", [isDisabled]);\n};\n// Public: setButtonAction sets the action that occurs when the button is clicked\nSWFUpload.prototype.setButtonAction = function (buttonAction) {\n\tthis.settings.button_action = buttonAction;\n\tthis.callFlash(\"SetButtonAction\", [buttonAction]);\n};\n\n// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button\nSWFUpload.prototype.setButtonCursor = function (cursor) {\n\tthis.settings.button_cursor = cursor;\n\tthis.callFlash(\"SetButtonCursor\", [cursor]);\n};\n\n/* *******************************\n\tFlash Event Interfaces\n\tThese functions are used by Flash to trigger the various\n\tevents.\n\t\n\tAll these functions a Private.\n\t\n\tBecause the ExternalInterface library is buggy the event calls\n\tare added to a queue and the queue then executed by a setTimeout.\n\tThis ensures that events are executed in a determinate order and that\n\tthe ExternalInterface bugs are avoided.\n******************************* */\n\nSWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {\n\t// Warning: Don't call this.debug inside here or you'll create an infinite loop\n\t\n\tif (argumentArray == undefined) {\n\t\targumentArray = [];\n\t} else if (!(argumentArray instanceof Array)) {\n\t\targumentArray = [argumentArray];\n\t}\n\t\n\tvar self = this;\n\tif (typeof this.settings[handlerName] === \"function\") {\n\t\t// Queue the event\n\t\tthis.eventQueue.push(function () {\n\t\t\tthis.settings[handlerName].apply(this, argumentArray);\n\t\t});\n\t\t\n\t\t// Execute the next queued event\n\t\tsetTimeout(function () {\n\t\t\tself.executeNextEvent();\n\t\t}, 0);\n\t\t\n\t} else if (this.settings[handlerName] !== null) {\n\t\tthrow \"Event handler \" + handlerName + \" is unknown or is not a function\";\n\t}\n};\n\n// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout\n// we must queue them in order to garentee that they are executed in order.\nSWFUpload.prototype.executeNextEvent = function () {\n\t// Warning: Don't call this.debug inside here or you'll create an infinite loop\n\n\tvar  f = this.eventQueue ? this.eventQueue.shift() : null;\n\tif (typeof(f) === \"function\") {\n\t\tf.apply(this);\n\t}\n};\n\n// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have\n// properties that contain characters that are not valid for JavaScript identifiers. To work around this\n// the Flash Component escapes the parameter names and we must unescape again before passing them along.\nSWFUpload.prototype.unescapeFilePostParams = function (file) {\n\tvar reg = /[$]([0-9a-f]{4})/i;\n\tvar unescapedPost = {};\n\tvar uk;\n\n\tif (file != undefined) {\n\t\tfor (var k in file.post) {\n\t\t\tif (file.post.hasOwnProperty(k)) {\n\t\t\t\tuk = k;\n\t\t\t\tvar match;\n\t\t\t\twhile ((match = reg.exec(uk)) !== null) {\n\t\t\t\t\tuk = uk.replace(match[0], String.fromCharCode(parseInt(\"0x\" + match[1], 16)));\n\t\t\t\t}\n\t\t\t\tunescapedPost[uk] = file.post[k];\n\t\t\t}\n\t\t}\n\n\t\tfile.post = unescapedPost;\n\t}\n\n\treturn file;\n};\n\n// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)\nSWFUpload.prototype.testExternalInterface = function () {\n\ttry {\n\t\treturn this.callFlash(\"TestExternalInterface\");\n\t} catch (ex) {\n\t\treturn false;\n\t}\n};\n\n// Private: This event is called by Flash when it has finished loading. Don't modify this.\n// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.\nSWFUpload.prototype.flashReady = function () {\n\t// Check that the movie element is loaded correctly with its ExternalInterface methods defined\n\tvar movieElement = this.getMovieElement();\n\n\tif (!movieElement) {\n\t\tthis.debug(\"Flash called back ready but the flash movie can't be found.\");\n\t\treturn;\n\t}\n\n\tthis.cleanUp(movieElement);\n\t\n\tthis.queueEvent(\"swfupload_loaded_handler\");\n};\n\n// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.\n// This function is called by Flash each time the ExternalInterface functions are created.\nSWFUpload.prototype.cleanUp = function (movieElement) {\n\t// Pro-actively unhook all the Flash functions\n\ttry {\n\t\tif (this.movieElement && typeof(movieElement.CallFunction) === \"unknown\") { // We only want to do this in IE\n\t\t\tthis.debug(\"Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)\");\n\t\t\tfor (var key in movieElement) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof(movieElement[key]) === \"function\") {\n\t\t\t\t\t\tmovieElement[key] = null;\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (ex1) {\n\t\n\t}\n\n\t// Fix Flashes own cleanup code so if the SWFMovie was removed from the page\n\t// it doesn't display errors.\n\twindow[\"__flash__removeCallback\"] = function (instance, name) {\n\t\ttry {\n\t\t\tif (instance) {\n\t\t\t\tinstance[name] = null;\n\t\t\t}\n\t\t} catch (flashEx) {\n\t\t\n\t\t}\n\t};\n\n};\n\n\n/* This is a chance to do something before the browse window opens */\nSWFUpload.prototype.fileDialogStart = function () {\n\tthis.queueEvent(\"file_dialog_start_handler\");\n};\n\n\n/* Called when a file is successfully added to the queue. */\nSWFUpload.prototype.fileQueued = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"file_queued_handler\", file);\n};\n\n\n/* Handle errors that occur when an attempt to queue a file fails. */\nSWFUpload.prototype.fileQueueError = function (file, errorCode, message) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"file_queue_error_handler\", [file, errorCode, message]);\n};\n\n/* Called after the file dialog has closed and the selected files have been queued.\n\tYou could call startUpload here if you want the queued files to begin uploading immediately. */\nSWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {\n\tthis.queueEvent(\"file_dialog_complete_handler\", [numFilesSelected, numFilesQueued, numFilesInQueue]);\n};\n\nSWFUpload.prototype.uploadStart = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"return_upload_start_handler\", file);\n};\n\nSWFUpload.prototype.returnUploadStart = function (file) {\n\tvar returnValue;\n\tif (typeof this.settings.upload_start_handler === \"function\") {\n\t\tfile = this.unescapeFilePostParams(file);\n\t\treturnValue = this.settings.upload_start_handler.call(this, file);\n\t} else if (this.settings.upload_start_handler != undefined) {\n\t\tthrow \"upload_start_handler must be a function\";\n\t}\n\n\t// Convert undefined to true so if nothing is returned from the upload_start_handler it is\n\t// interpretted as 'true'.\n\tif (returnValue === undefined) {\n\t\treturnValue = true;\n\t}\n\t\n\treturnValue = !!returnValue;\n\t\n\tthis.callFlash(\"ReturnUploadStart\", [returnValue]);\n};\n\n\n\nSWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_progress_handler\", [file, bytesComplete, bytesTotal]);\n};\n\nSWFUpload.prototype.uploadError = function (file, errorCode, message) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_error_handler\", [file, errorCode, message]);\n};\n\nSWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_success_handler\", [file, serverData, responseReceived]);\n};\n\nSWFUpload.prototype.uploadComplete = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_complete_handler\", file);\n};\n\n/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the\n   internal debug console.  You can override this event and have messages written where you want. */\nSWFUpload.prototype.debug = function (message) {\n\tthis.queueEvent(\"debug_handler\", message);\n};\n\n\n/* **********************************\n\tDebug Console\n\tThe debug console is a self contained, in page location\n\tfor debug message to be sent.  The Debug Console adds\n\titself to the body if necessary.\n\n\tThe console is automatically scrolled as messages appear.\n\t\n\tIf you are using your own debug handler or when you deploy to production and\n\thave debug disabled you can remove these functions to reduce the file size\n\tand complexity.\n********************************** */\n   \n// Private: debugMessage is the default debug_handler.  If you want to print debug messages\n// call the debug() function.  When overriding the function your own function should\n// check to see if the debug setting is true before outputting debug information.\nSWFUpload.prototype.debugMessage = function (message) {\n\tif (this.settings.debug) {\n\t\tvar exceptionMessage, exceptionValues = [];\n\n\t\t// Check for an exception object and print it nicely\n\t\tif (typeof message === \"object\" && typeof message.name === \"string\" && typeof message.message === \"string\") {\n\t\t\tfor (var key in message) {\n\t\t\t\tif (message.hasOwnProperty(key)) {\n\t\t\t\t\texceptionValues.push(key + \": \" + message[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\texceptionMessage = exceptionValues.join(\"\\n\") || \"\";\n\t\t\texceptionValues = exceptionMessage.split(\"\\n\");\n\t\t\texceptionMessage = \"EXCEPTION: \" + exceptionValues.join(\"\\nEXCEPTION: \");\n\t\t\tSWFUpload.Console.writeLine(exceptionMessage);\n\t\t} else {\n\t\t\tSWFUpload.Console.writeLine(message);\n\t\t}\n\t}\n};\n\nSWFUpload.Console = {};\nSWFUpload.Console.writeLine = function (message) {\n\tvar console, documentForm;\n\n\ttry {\n\t\tconsole = document.getElementById(\"SWFUpload_Console\");\n\n\t\tif (!console) {\n\t\t\tdocumentForm = document.createElement(\"form\");\n\t\t\tdocument.getElementsByTagName(\"body\")[0].appendChild(documentForm);\n\n\t\t\tconsole = document.createElement(\"textarea\");\n\t\t\tconsole.id = \"SWFUpload_Console\";\n\t\t\tconsole.style.fontFamily = \"monospace\";\n\t\t\tconsole.setAttribute(\"wrap\", \"off\");\n\t\t\tconsole.wrap = \"off\";\n\t\t\tconsole.style.overflow = \"auto\";\n\t\t\tconsole.style.width = \"700px\";\n\t\t\tconsole.style.height = \"350px\";\n\t\t\tconsole.style.margin = \"5px\";\n\t\t\tdocumentForm.appendChild(console);\n\t\t}\n\n\t\tconsole.value += message + \"\\n\";\n\n\t\tconsole.scrollTop = console.scrollHeight - console.clientHeight;\n\t} catch (ex) {\n\t\talert(\"Exception: \" + ex.name + \" Message: \" + ex.message);\n\t}\n};\n"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/showdown.js",
    "content": "//\n// showdown.js -- A javascript port of Markdown.\n//\n// Copyright (c) 2007 John Fraser.\n//\n// Original Markdown Copyright (c) 2004-2005 John Gruber\n//   <http://daringfireball.net/projects/markdown/>\n//\n// Redistributable under a BSD-style open source license.\n// See license.txt for more information.\n//\n// The full source distribution is at:\n//\n//\t\t\t\tA A L\n//\t\t\t\tT C A\n//\t\t\t\tT K B\n//\n//   <http://www.attacklab.net/>\n//\n//\n// Wherever possible, Showdown is a straight, line-by-line port\n// of the Perl version of Markdown.\n//\n// This is not a normal parser design; it's basically just a\n// series of string substitutions.  It's hard to read and\n// maintain this way,  but keeping Showdown close to the original\n// design makes it easier to port new features.\n//\n// More importantly, Showdown behaves like markdown.pl in most\n// edge cases.  So web applications can do client-side preview\n// in Javascript, and then build identical HTML on the server.\n//\n// This port needs the new RegExp functionality of ECMA 262,\n// 3rd Edition (i.e. Javascript 1.5).  Most modern web browsers\n// should do fine.  Even with the new regular expression features,\n// We do a lot of work to emulate Perl's regex functionality.\n// The tricky changes in this file mostly have the \"attacklab:\"\n// label.  Major or self-explanatory changes don't.\n//\n// Smart diff tools like Araxis Merge will be able to match up\n// this file with markdown.pl in a useful way.  A little tweaking\n// helps: in a copy of markdown.pl, replace \"#\" with \"//\" and\n// replace \"$text\" with \"text\".  Be sure to ignore whitespace\n// and line endings.\n//\n//\n// Showdown usage:\n//\n//   var text = \"Markdown *rocks*.\";\n//\n//   var converter = new Showdown.converter();\n//   var html = converter.makeHtml(text);\n//\n//   alert(html);\n//\n// Note: move the sample code to the bottom of this\n// file before uncommenting it.\n//\n//\n// Showdown namespace\n//\nvar Showdown={extensions:{}},forEach=Showdown.forEach=function(a,b){if(typeof a.forEach==\"function\")a.forEach(b);else{var c,d=a.length;for(c=0;c<d;c++)b(a[c],c,a)}},stdExtName=function(a){return a.replace(/[_-]||\\s/g,\"\").toLowerCase()};Showdown.converter=function(a){var b,c,d,e=0,f=[],g=[];if(typeof module!=\"undefind\"&&typeof exports!=\"undefined\"&&typeof require!=\"undefind\"){var h=require(\"fs\");if(h){var i=h.readdirSync((__dirname||\".\")+\"/extensions\").filter(function(a){return~a.indexOf(\".js\")}).map(function(a){return a.replace(/\\.js$/,\"\")});Showdown.forEach(i,function(a){var b=stdExtName(a);Showdown.extensions[b]=require(\"./extensions/\"+a)})}}this.makeHtml=function(a){return b={},c={},d=[],a=a.replace(/~/g,\"~T\"),a=a.replace(/\\$/g,\"~D\"),a=a.replace(/\\r\\n/g,\"\\n\"),a=a.replace(/\\r/g,\"\\n\"),a=\"\\n\\n\"+a+\"\\n\\n\",a=M(a),a=a.replace(/^[ \\t]+$/mg,\"\"),Showdown.forEach(f,function(b){a=k(b,a)}),a=z(a),a=m(a),a=l(a),a=o(a),a=K(a),a=a.replace(/~D/g,\"$$\"),a=a.replace(/~T/g,\"~\"),Showdown.forEach(g,function(b){a=k(b,a)}),a};if(a&&a.extensions){var j=this;Showdown.forEach(a.extensions,function(a){typeof a==\"string\"&&(a=Showdown.extensions[stdExtName(a)]);if(typeof a!=\"function\")throw\"Extension '\"+a+\"' could not be loaded.  It was either not found or is not a valid extension.\";Showdown.forEach(a(j),function(a){a.type?a.type===\"language\"||a.type===\"lang\"?f.push(a):(a.type===\"output\"||a.type===\"html\")&&g.push(a):g.push(a)})})}var k=function(a,b){if(a.regex){var c=new RegExp(a.regex,\"g\");return b.replace(c,a.replace)}if(a.filter)return a.filter(b)},l=function(a){return a+=\"~0\",a=a.replace(/^[ ]{0,3}\\[(.+)\\]:[ \\t]*\\n?[ \\t]*<?(\\S+?)>?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,function(a,d,e,f,g){return d=d.toLowerCase(),b[d]=G(e),f?f+g:(g&&(c[d]=g.replace(/\"/g,\"&quot;\")),\"\")}),a=a.replace(/~0/,\"\"),a},m=function(a){a=a.replace(/\\n/g,\"\\n\\n\");var b=\"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside\",c=\"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside\";return a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b[^\\r]*?\\n<\\/\\2>[ \\t]*(?=\\n+))/gm,n),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm,n),a=a.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/(\\n\\n[ ]{0,3}<!(--[^\\r]*?--\\s*)+>[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/\\n\\n/g,\"\\n\"),a},n=function(a,b){var c=b;return c=c.replace(/\\n\\n/g,\"\\n\"),c=c.replace(/^\\n/,\"\"),c=c.replace(/\\n+$/g,\"\"),c=\"\\n\\n~K\"+(d.push(c)-1)+\"K\\n\\n\",c},o=function(a){a=v(a);var b=A(\"<hr />\");return a=a.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\\_[ ]?){3,}[ \\t]*$/gm,b),a=x(a),a=y(a),a=E(a),a=m(a),a=F(a),a},p=function(a){return a=B(a),a=q(a),a=H(a),a=t(a),a=r(a),a=I(a),a=G(a),a=D(a),a=a.replace(/  +\\n/g,\" <br />\\n\"),a},q=function(a){var b=/(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|<!(--.*?--\\s*)+>)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\\/?code>(?=.)/g,\"$1`\");return b=N(b,\"\\\\`*_\"),b}),a},r=function(a){return a=a.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g,s),a=a.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]\\([ \\t]*()<?(.*?(?:\\(.*?\\).*?)?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,s),a=a.replace(/(\\[([^\\[\\]]+)\\])()()()()()/g,s),a},s=function(a,d,e,f,g,h,i,j){j==undefined&&(j=\"\");var k=d,l=e,m=f.toLowerCase(),n=g,o=j;if(n==\"\"){m==\"\"&&(m=l.toLowerCase().replace(/ ?\\n/g,\" \")),n=\"#\"+m;if(b[m]!=undefined)n=b[m],c[m]!=undefined&&(o=c[m]);else{if(!(k.search(/\\(\\s*\\)$/m)>-1))return k;n=\"\"}}n=N(n,\"*_\");var p='<a href=\"'+n+'\"';return o!=\"\"&&(o=o.replace(/\"/g,\"&quot;\"),o=N(o,\"*_\"),p+=' title=\"'+o+'\"'),p+=\">\"+l+\"</a>\",p},t=function(a){return a=a.replace(/(!\\[(.*?)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g,u),a=a.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()<?(\\S+?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,u),a},u=function(a,d,e,f,g,h,i,j){var k=d,l=e,m=f.toLowerCase(),n=g,o=j;o||(o=\"\");if(n==\"\"){m==\"\"&&(m=l.toLowerCase().replace(/ ?\\n/g,\" \")),n=\"#\"+m;if(b[m]==undefined)return k;n=b[m],c[m]!=undefined&&(o=c[m])}l=l.replace(/\"/g,\"&quot;\"),n=N(n,\"*_\");var p='<img src=\"'+n+'\" alt=\"'+l+'\"';return o=o.replace(/\"/g,\"&quot;\"),o=N(o,\"*_\"),p+=' title=\"'+o+'\"',p+=\" />\",p},v=function(a){function b(a){return a.replace(/[^\\w]/g,\"\").toLowerCase()}return a=a.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,function(a,c){return A('<h1 id=\"'+b(c)+'\">'+p(c)+\"</h1>\")}),a=a.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,function(a,c){return A('<h2 id=\"'+b(c)+'\">'+p(c)+\"</h2>\")}),a=a.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,function(a,c,d){var e=c.length;return A(\"<h\"+e+' id=\"'+b(d)+'\">'+p(d)+\"</h\"+e+\">\")}),a},w,x=function(a){a+=\"~0\";var b=/^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;return e?a=a.replace(b,function(a,b,c){var d=b,e=c.search(/[*+-]/g)>-1?\"ul\":\"ol\";d=d.replace(/\\n{2,}/g,\"\\n\\n\\n\");var f=w(d);return f=f.replace(/\\s+$/,\"\"),f=\"<\"+e+\">\"+f+\"</\"+e+\">\\n\",f}):(b=/(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/g,a=a.replace(b,function(a,b,c,d){var e=b,f=c,g=d.search(/[*+-]/g)>-1?\"ul\":\"ol\",f=f.replace(/\\n{2,}/g,\"\\n\\n\\n\"),h=w(f);return h=e+\"<\"+g+\">\\n\"+h+\"</\"+g+\">\\n\",h})),a=a.replace(/~0/,\"\"),a};w=function(a){return e++,a=a.replace(/\\n{2,}$/,\"\\n\"),a+=\"~0\",a=a.replace(/(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+([^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,function(a,b,c,d,e){var f=e,g=b,h=c;return g||f.search(/\\n{2,}/)>-1?f=o(L(f)):(f=x(L(f)),f=f.replace(/\\n$/,\"\"),f=p(f)),\"<li>\"+f+\"</li>\\n\"}),a=a.replace(/~0/g,\"\"),e--,a};var y=function(a){return a+=\"~0\",a=a.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,function(a,b,c){var d=b,e=c;return d=C(L(d)),d=M(d),d=d.replace(/^\\n+/g,\"\"),d=d.replace(/\\n+$/g,\"\"),d=\"<pre>\"+d+\"\\n</pre>\",A(d)+e}),a=a.replace(/~0/,\"\"),a},z=function(a){return a+=\"~0\",a=a.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g,function(a,b,c){var d=b,e=c;return e=C(e),e=M(e),e=e.replace(/^\\n+/g,\"\"),e=e.replace(/\\n+$/g,\"\"),e=\"<pre>\"+e+\"\\n</pre>\",A(e)}),a=a.replace(/~0/,\"\"),a},A=function(a){return a=a.replace(/(^\\n+|\\n+$)/g,\"\"),\"\\n\\n~K\"+(d.push(a)-1)+\"K\\n\\n\"},B=function(a){return a=a.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,function(a,b,c,d,e){var f=d;return f=f.replace(/^([ \\t]*)/g,\"\"),f=f.replace(/[ \\t]*$/g,\"\"),f=C(f),b+\"<code>\"+f+\"</code>\"}),a},C=function(a){return a=a.replace(/&/g,\"&amp;\"),a=a.replace(/</g,\"&lt;\"),a=a.replace(/>/g,\"&gt;\"),a=N(a,\"*_{}[]\\\\\",!1),a},D=function(a){return a=a.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\"<strong>$2</strong>\"),a=a.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\"<em>$2</em>\"),a},E=function(a){return a=a.replace(/((^[ \\t]*>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm,function(a,b){var c=b;return c=c.replace(/^[ \\t]*>[ \\t]?/gm,\"~0\"),c=c.replace(/~0/g,\"\"),c=c.replace(/^[ \\t]+$/gm,\"\"),c=o(c),c=c.replace(/(^|\\n)/g,\"$1  \"),c=c.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /mg,\"~0\"),c=c.replace(/~0/g,\"\"),c}),A(\"<blockquote>\\n\"+c+\"\\n</blockquote>\")}),a},F=function(a){a=a.replace(/^\\n+/g,\"\"),a=a.replace(/\\n+$/g,\"\");var b=a.split(/\\n{2,}/g),c=[],e=b.length;for(var f=0;f<e;f++){var g=b[f];g.search(/~K(\\d+)K/g)>=0?c.push(g):g.search(/\\S/)>=0&&(g=p(g),g=g.replace(/^([ \\t]*)/g,\"<p>\"),g+=\"</p>\",c.push(g))}e=c.length;for(var f=0;f<e;f++)while(c[f].search(/~K(\\d+)K/)>=0){var h=d[RegExp.$1];h=h.replace(/\\$/g,\"$$$$\"),c[f]=c[f].replace(/~K\\d+K/,h)}return c.join(\"\\n\\n\")},G=function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g,\"&amp;\"),a=a.replace(/<(?![a-z\\/?\\$!])/gi,\"&lt;\"),a},H=function(a){return a=a.replace(/\\\\(\\\\)/g,O),a=a.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g,O),a},I=function(a){return a=a.replace(/<((https?|ftp|dict):[^'\">\\s]+)>/gi,'<a href=\"$1\">$1</a>'),a=a.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,function(a,b){return J(K(b))}),a},J=function(a){var b=[function(a){return\"&#\"+a.charCodeAt(0)+\";\"},function(a){return\"&#x\"+a.charCodeAt(0).toString(16)+\";\"},function(a){return a}];return a=\"mailto:\"+a,a=a.replace(/./g,function(a){if(a==\"@\")a=b[Math.floor(Math.random()*2)](a);else if(a!=\":\"){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a='<a href=\"'+a+'\">'+a+\"</a>\",a=a.replace(/\">.+:/g,'\">'),a},K=function(a){return a=a.replace(/~E(\\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)}),a},L=function(a){return a=a.replace(/^(\\t|[ ]{1,4})/gm,\"~0\"),a=a.replace(/~0/g,\"\"),a},M=function(a){return a=a.replace(/\\t(?=\\t)/g,\"    \"),a=a.replace(/\\t/g,\"~A~B\"),a=a.replace(/~B(.+?)~A/g,function(a,b,c){var d=b,e=4-d.length%4;for(var f=0;f<e;f++)d+=\" \";return d}),a=a.replace(/~A/g,\"    \"),a=a.replace(/~B/g,\"\"),a},N=function(a,b,c){var d=\"([\"+b.replace(/([\\[\\]\\\\])/g,\"\\\\$1\")+\"])\";c&&(d=\"\\\\\\\\\"+d);var e=new RegExp(d,\"g\");return a=a.replace(e,O),a},O=function(a,b){var c=b.charCodeAt(0);return\"~E\"+c+\"E\"}},typeof module!=\"undefined\"&&(module.exports=Showdown),typeof define==\"function\"&&define.amd&&define(\"showdown\",function(){return Showdown});"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_plugins/ubb.js",
    "content": "/*!\n * WYSIWYG UBB Editor support for xhEditor\n * @requires xhEditor\n * \n * @author Yanis.Wang<yanis.wang@gmail.com>\n * @site http://xheditor.com/\n * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)\n * \n * @Version: 0.9.12 (build 120228)\n */\nfunction ubb2html(sUBB)\n{\n\tvar i,sHtml=String(sUBB),arrcode=new Array(),cnum=0;\n\tvar arrFontsize=['10px','13px','16px','18px','24px','32px','48px'];\n\n\tsHtml=sHtml.replace(/[<>&\"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','\"':'&quot;'}[c];});\n\tsHtml=sHtml.replace(/\\r?\\n/g,\"<br />\");\n\t\n\tsHtml=sHtml.replace(/\\[code\\s*(?:=\\s*([^\\]]+?))?\\]([\\s\\S]*?)\\[\\/code\\]/ig,function(all,t,c){//code特殊处理\n\t\tcnum++;arrcode[cnum]=all;\n\t\treturn \"[\\tubbcodeplace_\"+cnum+\"\\t]\";\n\t});\n\n\tsHtml=sHtml.replace(/\\[(\\/?)(b|u|i|s|sup|sub)\\]/ig,'<$1$2>');\n\tsHtml=sHtml.replace(/\\[color\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<font color=\"$1\">');\n\tsHtml=sHtml.replace(/\\[font\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<font face=\"$1\">');\n\tsHtml=sHtml.replace(/\\[\\/(color|font)\\]/ig,'</font>');\n\tsHtml=sHtml.replace(/\\[size\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,function(all,size){\n\t\tif(size.match(/^\\d+$/))size=arrFontsize[size-1];\n\t\treturn '<span style=\"font-size:'+size+';\">';\n\t});\n\tsHtml=sHtml.replace(/\\[back\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<span style=\"background-color:$1;\">');\n\tsHtml=sHtml.replace(/\\[\\/(size|back)\\]/ig,'</span>');\n\tfor(i=0;i<3;i++)sHtml=sHtml.replace(/\\[align\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\](((?!\\[align(?:\\s+[^\\]]+)?\\])[\\s\\S])*?)\\[\\/align\\]/ig,'<p align=\"$1\">$2</p>');\n\tsHtml=sHtml.replace(/\\[img\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/img\\]/ig,'<img src=\"$1\" alt=\"\" />');\n\tsHtml=sHtml.replace(/\\[img\\s*=([^,\\]]*)(?:\\s*,\\s*(\\d*%?)\\s*,\\s*(\\d*%?)\\s*)?(?:,?\\s*(\\w+))?\\s*\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*)?\\s*\\[\\/img\\]/ig,function(all,alt,p1,p2,p3,src){\n\t\tvar str='<img src=\"'+src+'\" alt=\"'+alt+'\"',a=p3?p3:(!isNum(p1)?p1:'');\n\t\tif(isNum(p1))str+=' width=\"'+p1+'\"';\n\t\tif(isNum(p2))str+=' height=\"'+p2+'\"'\n\t\tif(a)str+=' align=\"'+a+'\"';\n\t\tstr+=' />';\n\t\treturn str;\n\t});\n\tsHtml=sHtml.replace(/\\[emot\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\/\\]/ig,'<img emot=\"$1\" />');\n\tsHtml=sHtml.replace(/\\[url\\]\\s*(((?!\")[\\s\\S])*?)(?:\"[\\s\\S]*?)?\\s*\\[\\/url\\]/ig,'<a href=\"$1\">$1</a>');\n\tsHtml=sHtml.replace(/\\[url\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]\\s*([\\s\\S]*?)\\s*\\[\\/url\\]/ig,'<a href=\"$1\">$2</a>');\n\tsHtml=sHtml.replace(/\\[email\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/email\\]/ig,'<a href=\"mailto:$1\">$1</a>');\n\tsHtml=sHtml.replace(/\\[email\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]\\s*([\\s\\S]+?)\\s*\\[\\/email\\]/ig,'<a href=\"mailto:$1\">$2</a>');\n\tsHtml=sHtml.replace(/\\[quote\\]/ig,'<blockquote>');\n\tsHtml=sHtml.replace(/\\[\\/quote\\]/ig,'</blockquote>');\n\tsHtml=sHtml.replace(/\\[flash\\s*(?:=\\s*(\\d+)\\s*,\\s*(\\d+)\\s*)?\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/flash\\]/ig,function(all,w,h,url){\n\t\tif(!w)w=480;if(!h)h=400;\n\t\treturn '<embed type=\"application/x-shockwave-flash\" src=\"'+url+'\" wmode=\"opaque\" quality=\"high\" bgcolor=\"#ffffff\" menu=\"false\" play=\"true\" loop=\"true\" width=\"'+w+'\" height=\"'+h+'\"/>';\n\t});\n\tsHtml=sHtml.replace(/\\[media\\s*(?:=\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d+)\\s*)?)?\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/media\\]/ig,function(all,w,h,play,url){\n\t\tif(!w)w=480;if(!h)h=400;\n\t\treturn '<embed type=\"application/x-mplayer2\" src=\"'+url+'\" enablecontextmenu=\"false\" autostart=\"'+(play=='1'?'true':'false')+'\" width=\"'+w+'\" height=\"'+h+'\"/>';\n\t});\n\tsHtml=sHtml.replace(/\\[table\\s*(?:=\\s*(\\d{1,4}%?)\\s*(?:,\\s*([^\\]\"]+)(?:\"[^\\]]*?)?)?)?\\s*\\]/ig,function(all,w,b){\n\t\tvar str='<table';\n\t\tif(w)str+=' width=\"'+w+'\"';\n\t\tif(b)str+=' bgcolor=\"'+b+'\"';\n\t\treturn str+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[tr\\s*(?:=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?)?\\s*\\]/ig,function(all,bg){\n\t\treturn '<tr'+(bg?' bgcolor=\"'+bg+'\"':'')+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[td\\s*(?:=\\s*(\\d{1,2})\\s*,\\s*(\\d{1,2})\\s*(?:,\\s*(\\d{1,4}%?))?)?\\s*\\]/ig,function(all,col,row,w){\n\t\treturn '<td'+(col>1?' colspan=\"'+col+'\"':'')+(row>1?' rowspan=\"'+row+'\"':'')+(w?' width=\"'+w+'\"':'')+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[\\/(table|tr|td)\\]/ig,'</$1>');\n\t\n\tsHtml=sHtml.replace(/\\[\\*\\]((?:(?!\\[\\*\\]|\\[\\/list\\]|\\[list\\s*(?:=[^\\]]+)?\\])[\\s\\S])+)/ig,'<li>$1</li>');\n\tsHtml=sHtml.replace(/\\[list\\s*(?:=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?)?\\s*\\]/ig,function(all,type){\n\t\tvar str='<ul';\n\t\tif(type)str+=' type=\"'+type+'\"';\n\t\treturn str+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[\\/list\\]/ig,'</ul>');\n\tsHtml=sHtml.replace(/\\[hr\\/\\]/ig,'<hr />');\n\t\n\tfor(i=1;i<=cnum;i++)sHtml=sHtml.replace(\"[\\tubbcodeplace_\"+i+\"\\t]\", arrcode[i]);\n\n\tsHtml=sHtml.replace(/(^|<\\/?\\w+(?:\\s+[^>]*?)?>)([^<$]+)/ig, function(all,tag,text){\n\t\treturn tag+text.replace(/[\\t ]/g,function(c){return {'\\t':'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',' ':'&nbsp;'}[c];});\n\t});\n\tfunction isNum(s){if(s!=null&&s!='')return !isNaN(s);else return false;}\n\t\n\treturn sHtml;\n}\n\nfunction html2ubb(sHtml)\n{\n\n\tvar regSrc=/\\s+src\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i,regWidth=/\\s+width\\s*=\\s*([\"']?)\\s*(\\d+(?:\\.\\d+)?%?)\\s*\\1(\\s|$)/i,regHeight=/\\s+height\\s*=\\s*([\"']?)\\s*(\\d+(?:\\.\\d+)?%?)\\s*\\1(\\s|$)/i,regBg=/(?:background|background-color|bgcolor)\\s*[:=]\\s*([\"']?)\\s*((rgb\\s*\\(\\s*\\d{1,3}%?,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\))|(#[0-9a-f]{3,6})|([a-z]{1,20}))\\s*\\1/i\n\tvar i,sUBB=String(sHtml),arrcode=new Array(),cnum=0;\n\n\tsUBB=sUBB.replace(/[ \\t]*\\r?\\n[ \\t]*/g,'');\n\t\n\tsUBB = sUBB.replace(/<(script|style)(\\s+[^>]*?)?>[\\s\\S]*?<\\/\\1>/ig, '');\n\tsUBB = sUBB.replace(/<!--[\\s\\S]*?-->/ig,'');\n\n\tsUBB=sUBB.replace(/<br(\\s+[^>]*)?\\/?>/ig,\"\\r\\n\");\n\t\n\tsUBB=sUBB.replace(/\\[code\\s*(=\\s*([^\\]]+?))?\\]([\\s\\S]*?)\\[\\/code\\]/ig,function(all,t,c){//code特殊处理\n\t\tcnum++;arrcode[cnum]=all;\n\t\treturn \"[\\tubbcodeplace_\"+cnum+\"\\t]\";\n\t});\n\t\n\tsUBB=sUBB.replace(/<(\\/?)(b|u|i|s)(\\s+[^>]*?)?>/ig,'[$1$2]');\n\tsUBB=sUBB.replace(/<(\\/?)strong(\\s+[^>]*?)?>/ig,'[$1b]');\n\tsUBB=sUBB.replace(/<(\\/?)em(\\s+[^>]*?)?>/ig,'[$1i]');\n\tsUBB=sUBB.replace(/<(\\/?)(strike|del)(\\s+[^>]*?)?>/ig,'[$1s]');\n\tsUBB=sUBB.replace(/<(\\/?)(sup|sub)(\\s+[^>]*?)?>/ig,'[$1$2]');\n\n\t//font转ubb\n\tfunction font2ubb(all,tag,attrs,content)\n\t{\n\t\tif(!attrs)return content;\n\t\tvar arrStart=[],arrEnd=[];\n\t\tvar match;\n\t\tmatch=attrs.match(/ face\\s*=\\s*\"\\s*([^\"]+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[font='+match[1]+']');\n\t\t\tarrEnd.push('[/font]');\n\t\t}\n\t\tmatch=attrs.match(/ size\\s*=\\s*\"\\s*(\\d+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[size='+match[1]+']');\n\t\t\tarrEnd.push('[/size]');\n\t\t}\n\t\tmatch=attrs.match(/ color\\s*=\\s*\"\\s*([^\"]+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[color='+formatColor(match[1])+']');\n\t\t\tarrEnd.push('[/color]');\n\t\t}\n\t\treturn arrStart.join('')+content+arrEnd.join('');\n\t}\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,font2ubb);//第3层\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?)<\\/\\1>/ig,font2ubb);//第2层\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?)<\\/\\1>/ig,font2ubb);//最里层\n\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(span)(?:\\s+[^>]*?)?\\s+style\\s*=\\s*\"((?:[^\"]*?;)*\\s*(?:font-family|font-size|color|background|background-color)\\s*:[^\"]*)\"(?: [^>]+)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,function(all,tag,style,content){\n\t\tvar face=style.match(/(?:^|;)\\s*font-family\\s*:\\s*([^;]+)/i),size=style.match(/(?:^|;)\\s*font-size\\s*:\\s*([^;]+)/i),color=style.match(/(?:^|;)\\s*color\\s*:\\s*([^;]+)/i),back=style.match(/(?:^|;)\\s*(?:background|background-color)\\s*:\\s*([^;]+)/i),str=content;\n\t\tvar arrStart=[],arrEnd=[];\n\t\tif(face){\n\t\t\tarrStart.push('[font='+face[1]+']');\n\t\t\tarrEnd.push('[/font]');\n\t\t}\n\t\tif(size){\n\t\t\tarrStart.push('[size='+size[1]+']');\n\t\t\tarrEnd.push('[/size]');\n\t\t}\n\t\tif(color){\n\t\t\tarrStart.push('[color='+formatColor(color[1])+']');\n\t\t\tarrEnd.push('[/color]');\n\t\t}\n\t\tif(back){\n\t\t\tarrStart.push('[back='+formatColor(back[1])+']');\n\t\t\tarrEnd.push('[/back]');\n\t\t}\n\t\treturn arrStart.join('')+str+arrEnd.join('');\n\t});\n\tfunction formatColor(c)\n\t{\n\t\tvar matchs;\n\t\tif(matchs=c.match(/\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i)){c=(matchs[1]*65536+matchs[2]*256+matchs[3]*1).toString(16);while(c.length<6)c='0'+c;c='#'+c;}\n\t\tc=c.replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,'#$1$1$2$2$3$3');\n\t\treturn c;\n\t}\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(div|p)(?:\\s+[^>]*?)?[\\s\"';]\\s*(?:text-)?align\\s*[=:]\\s*([\"']?)\\s*(left|center|right)\\s*\\2[^>]*>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])+?)<\\/\\1>/ig,'[align=$3]$4[/align]');\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(center)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?)<\\/\\1>/ig,'[align=center]$2[/align]');\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(p|div)(?:\\s+[^>]*?)?\\s+style\\s*=\\s*\"(?:[^;\"]*;)*\\s*text-align\\s*:([^;\"]*)[^\"]*\"(?: [^>]+)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,function(all,tag,align,content){\n\t\treturn '[align='+align+']'+content+'[/align]';\n\t});\n\tsUBB=sUBB.replace(/<a(?:\\s+[^>]*?)?\\s+href=([\"'])\\s*(.+?)\\s*\\1[^>]*>\\s*([\\s\\S]*?)\\s*<\\/a>/ig,function(all,q,url,text){\n\t\tif(!(url&&text))return '';\n\t\tvar tag='url',str;\n\t\tif(url.match(/^mailto:/i))\n\t\t{\n\t\t\ttag='email';\n\t\t\turl=url.replace(/mailto:(.+?)/i,'$1');\n\t\t}\n\t\tstr='['+tag;\n\t\tif(url!=text)str+='='+url;\n\t\treturn str+']'+text+'[/'+tag+']';\n\t});\n\tsUBB=sUBB.replace(/<img(\\s+[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar emot=attr.match(/\\s+emot\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i);\n\t\tif(emot)return '[emot='+emot[2]+'/]';\n\t\tvar url=attr.match(regSrc),alt=attr.match(/\\s+alt\\s*=\\s*([\"']?)\\s*(.*?)\\s*\\1(\\s|$)/i),w=attr.match(regWidth),h=attr.match(regHeight),align=attr.match(/\\s+align\\s*=\\s*([\"']?)\\s*(\\w+)\\s*\\1(\\s|$)/i),str='[img',p='';\n\t\tif(!url)return '';\n\t\tp+=alt[2];\n\t\tif(w||h)p+=','+(w?w[2]:'')+','+(h?h[2]:'');\n\t\tif(align)p+=','+align[2];\n\t\tif(p)str+='='+p;\n\t\tstr+=']'+url[2]+'[/img]';\n\t\treturn str;\n\t});\n\tsUBB=sUBB.replace(/<blockquote(?:\\s+[^>]*?)?>/ig,'[quote]');\n\tsUBB=sUBB.replace(/<\\/blockquote>/ig,'[/quote]');\n\tsUBB=sUBB.replace(/<embed((?:\\s+[^>]*?)?(?:\\s+type\\s*=\\s*\"\\s*application\\/x-shockwave-flash\\s*\"|\\s+classid\\s*=\\s*\"\\s*clsid:d27cdb6e-ae6d-11cf-96b8-4445535400000\\s*\")[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),str='[flash';\n\t\tif(!url)return '';\n\t\tif(w&&h)str+='='+w[2]+','+h[2];\n\t\tstr+=']'+url[2];\n\t\treturn str+'[/flash]';\n\t});\n\tsUBB=sUBB.replace(/<embed((?:\\s+[^>]*?)?(?:\\s+type\\s*=\\s*\"\\s*application\\/x-mplayer2\\s*\"|\\s+classid\\s*=\\s*\"\\s*clsid:6bf52a52-394a-11d3-b153-00c04f79faa6\\s*\")[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),p=attr.match(/\\s+autostart\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i),str='[media',auto='0';\n\t\tif(!url)return '';\n\t\tif(p)if(p[2]=='true')auto='1';\n\t\tif(w&&h)str+='='+w[2]+','+h[2]+','+auto;\n\t\tstr+=']'+url[2];\n\t\treturn str+'[/media]';\n\t});\n\tsUBB=sUBB.replace(/<table(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[table';\n\t\tif(attr)\n\t\t{\n\t\t\tvar w=attr.match(regWidth),b=attr.match(regBg);\n\t\t\tif(w)\n\t\t\t{\n\t\t\t\tstr+='='+w[2];\n\t\t\t\tif(b)str+=','+b[2];\n\t\t\t}\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<tr(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[tr';\n\t\tif(attr)\n\t\t{\n\t\t\tvar bg=attr.match(regBg)\n\t\t\tif(bg)str+='='+bg[2];\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<(?:th|td)(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[td';\n\t\tif(attr)\n\t\t{\n\t\t\tvar col=attr.match(/\\s+colspan\\s*=\\s*([\"']?)\\s*(\\d+)\\s*\\1(\\s|$)/i),row=attr.match(/\\s+rowspan\\s*=\\s*([\"']?)\\s*(\\d+)\\s*\\1(\\s|$)/i),w=attr.match(regWidth);\n\t\t\tcol=col?col[2]:1;\n\t\t\trow=row?row[2]:1;\n\t\t\tif(col>1||row>1||w)str+='='+col+','+row;\n\t\t\tif(w)str+=','+w[2];\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<\\/(table|tr)>/ig,'[/$1]');\n\tsUBB=sUBB.replace(/<\\/(th|td)>/ig,'[/td]');\n\t\n\tsUBB=sUBB.replace(/<ul(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar t;\n\t\tif(attr)t=attr.match(/\\s+type\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i);\n\t\treturn '[list'+(t?'='+t[2]:'')+']';\n\t});\n\tsUBB=sUBB.replace(/<ol(\\s+[^>]*?)?>/ig,'[list=1]');\n\tsUBB=sUBB.replace(/<li(\\s+[^>]*?)?>/ig,'[*]');\n\tsUBB=sUBB.replace(/<\\/li>/ig,'');\n\tsUBB=sUBB.replace(/<\\/(ul|ol)>/ig,'[/list]');\n\tsUBB=sUBB.replace(/<h([1-6])(\\s+[^>]*?)?>/ig,function(all,n){return '\\r\\n\\r\\n[size='+(7-n)+'][b]'});\n\tsUBB=sUBB.replace(/<\\/h[1-6]>/ig,'[/b][/size]\\r\\n\\r\\n');\n\tsUBB=sUBB.replace(/<address(\\s+[^>]*?)?>/ig,'\\r\\n[i]');\n\tsUBB=sUBB.replace(/<\\/address>/ig,'[i]\\r\\n');\n\tsUBB=sUBB.replace(/<hr(\\s+[^>]*?)?\\/>/ig,'[hr/]');\n\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(p)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,\"\\r\\n\\r\\n$2\\r\\n\\r\\n\");\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(div)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,\"\\r\\n$2\\r\\n\");\n\t\n\tsUBB=sUBB.replace(/((\\s|&nbsp;)*\\r?\\n){3,}/g,\"\\r\\n\\r\\n\");//限制最多2次换行\n\tsUBB=sUBB.replace(/^((\\s|&nbsp;)*\\r?\\n)+/g,'');//清除开头换行\n\tsUBB=sUBB.replace(/((\\s|&nbsp;)*\\r?\\n)+$/g,'');//清除结尾换行\n\t\n\tfor(i=1;i<=cnum;i++)sUBB=sUBB.replace(\"[\\tubbcodeplace_\"+i+\"\\t]\", arrcode[i]);\n\n\tsUBB=sUBB.replace(/<[^<>]+?>/g,'');//删除所有HTML标签\n\tvar arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'\"'};\n\tsUBB=sUBB.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});\n\t\n\t//清除空内容的UBB标签\n\tsUBB=sUBB.replace(/\\[([a-z]+)(?:=[^\\[\\]]+)?\\]\\s*\\[\\/\\1\\]/ig,'');\n\t\n\treturn sUBB;\n}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n.wordImage{border:1px dotted #c00;background:url(img/wordimg.gif) #ffc center center no-repeat;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dotted #c00;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) #ffc center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/default/ui.css",
    "content": ".xhe_default table, .xhe_default tr, .xhe_default td, .xhe_default iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_default table.xheLayout {display:inline-table;background:#F0F0EE; border:1px solid #C5C5C5;width:100%;height:100%;}\n.xhe_default td.xheTool{padding:0px 3px;border-bottom:1px solid #C5C5C5;}\n.xhe_default td.xheTool span{float:left;margin:2px 0px;}\n.xhe_default td.xheTool br{clear:left;}\n\n.xhe_default span.xheGStart{display:none;}\n.xhe_default span.xheGEnd{display:none;}\n.xhe_default span.xheSeparator{display:block;height:22px;width:4px;margin:2px 2px !important;background:url(img/icons.gif) no-repeat -660px 0;}\n\n.xhe_default a.xheButton{display:inline-block;margin:1px;border:0px;cursor:pointer;text-decoration:none;}\n.xhe_default a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_default a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_default a.xheEnabled:hover {margin:0px;border:1px solid #999;background:#fff;}\n.xhe_default a.xheActive{margin:0px;border:1px solid #999; background:#fff;}\n\n.xhe_default a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_default span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_default span.xheBtnCut {background-position:0 0}\n.xhe_default span.xheBtnCopy {background-position:-20px 0}\n.xhe_default span.xheBtnPaste {background-position:-40px 0}\n.xhe_default span.xheBtnPastetext {background-position:-60px 0}\n.xhe_default span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_default span.xheBtnFontface {background-position:-100px 0}\n.xhe_default span.xheBtnFontSize {background-position:-120px 0}\n.xhe_default span.xheBtnBold {background-position:-140px 0}\n.xhe_default span.xheBtnItalic {background-position:-160px 0}\n.xhe_default span.xheBtnUnderline {background-position:-180px 0}\n.xhe_default span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_default span.xheBtnFontColor {background-position:-220px 0}\n.xhe_default span.xheBtnBackColor {background-position:-240px 0}\n.xhe_default span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_default span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_default span.xheBtnAlign {background-position:-300px 0}\n.xhe_default span.xheBtnList {background-position:-320px 0}\n.xhe_default span.xheBtnOutdent {background-position:-340px 0}\n.xhe_default span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_default span.xheBtnLink {background-position:-380px 0}\n.xhe_default span.xheBtnUnlink {background-position:-400px 0}\n.xhe_default span.xheBtnAnchor {background-position:-420px 0}\n.xhe_default span.xheBtnImg {background-position:-440px 0}\n.xhe_default span.xheBtnFlash {background-position:-460px 0}\n.xhe_default span.xheBtnMedia {background-position:-480px 0}\n.xhe_default span.xheBtnHr {background-position:-500px 0}\n.xhe_default span.xheBtnEmot {background-position:-520px 0}\n.xhe_default span.xheBtnTable {background-position:-540px 0}\n\n.xhe_default span.xheBtnSource {background-position:-560px 0}\n.xhe_default span.xheBtnPreview {background-position:-580px 0}\n.xhe_default span.xheBtnPrint {background-position:-600px 0}\n.xhe_default span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_default span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_default .xheIframeArea{height:100%;}\n.xhe_default iframe {display:block;background:#fff;width:100%;height:100%;}\n\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#999 1px solid;background:#fff;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #999;padding:2px;}\n.xheEmot ul{border-top:1px solid #999;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #999;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;padding:1px;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #BBB;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\t\n}\n.xheModalTitle{padding:5px;background:#F0F0EE;border-bottom:1px solid #BBB;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#222;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/nostyle/ui.css",
    "content": ".xhe_nostyle table, .xhe_nostyle tr, .xhe_nostyle td, .xhe_nostyle iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_nostyle table.xheLayout {display:inline-table;background:#FFF; border:1px solid #C5C5C5;width:100%;height:100%;}\n.xhe_nostyle td.xheTool{padding:0px 3px;border-bottom:1px solid #C5C5C5;}\n.xhe_nostyle td.xheTool span{float:left;margin:2px 0px;}\n.xhe_nostyle td.xheTool br{clear:left;}\n\n.xhe_nostyle span.xheGStart{display:none;}\n.xhe_nostyle span.xheGEnd{display:none;}\n.xhe_nostyle span.xheSeparator{display:block;height:22px;width:4px;margin:2px 2px !important;background:url(img/icons.gif) no-repeat -660px 0;}\n\n.xhe_nostyle a.xheButton{display:inline-block;margin:1px;border:0px;cursor:pointer;text-decoration:none;}\n.xhe_nostyle a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_nostyle a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_nostyle a.xheEnabled:hover {margin:0px;border:1px solid #999;background:#fff;}\n.xhe_nostyle a.xheActive{margin:0px;border:1px solid #999; background:#fff;}\n\n.xhe_nostyle a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_nostyle span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_nostyle span.xheBtnCut {background-position:0 0}\n.xhe_nostyle span.xheBtnCopy {background-position:-20px 0}\n.xhe_nostyle span.xheBtnPaste {background-position:-40px 0}\n.xhe_nostyle span.xheBtnPastetext {background-position:-60px 0}\n.xhe_nostyle span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_nostyle span.xheBtnFontface {background-position:-100px 0}\n.xhe_nostyle span.xheBtnFontSize {background-position:-120px 0}\n.xhe_nostyle span.xheBtnBold {background-position:-140px 0}\n.xhe_nostyle span.xheBtnItalic {background-position:-160px 0}\n.xhe_nostyle span.xheBtnUnderline {background-position:-180px 0}\n.xhe_nostyle span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_nostyle span.xheBtnFontColor {background-position:-220px 0}\n.xhe_nostyle span.xheBtnBackColor {background-position:-240px 0}\n.xhe_nostyle span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_nostyle span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_nostyle span.xheBtnAlign {background-position:-300px 0}\n.xhe_nostyle span.xheBtnList {background-position:-320px 0}\n.xhe_nostyle span.xheBtnOutdent {background-position:-340px 0}\n.xhe_nostyle span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_nostyle span.xheBtnLink {background-position:-380px 0}\n.xhe_nostyle span.xheBtnUnlink {background-position:-400px 0}\n.xhe_nostyle span.xheBtnAnchor {background-position:-420px 0}\n.xhe_nostyle span.xheBtnImg {background-position:-440px 0}\n.xhe_nostyle span.xheBtnFlash {background-position:-460px 0}\n.xhe_nostyle span.xheBtnMedia {background-position:-480px 0}\n.xhe_nostyle span.xheBtnHr {background-position:-500px 0}\n.xhe_nostyle span.xheBtnEmot {background-position:-520px 0}\n.xhe_nostyle span.xheBtnTable {background-position:-540px 0}\n\n.xhe_nostyle span.xheBtnSource {background-position:-560px 0}\n.xhe_nostyle span.xheBtnPreview {background-position:-580px 0}\n.xhe_nostyle span.xheBtnPrint {background-position:-600px 0}\n.xhe_nostyle span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_nostyle span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_nostyle .xheIframeArea{height:100%;}\n.xhe_nostyle iframe {display:block;background:#fff;width:100%;height:100%;}\n\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#999 1px solid;background:#fff;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #999;padding:2px;}\n.xheEmot ul{border-top:1px solid #999;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #999;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #BBB;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#F0F0EE;border-bottom:1px solid #BBB;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#222;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007blue/ui.css",
    "content": ".xhe_o2007blue table, .xhe_o2007blue tr, .xhe_o2007blue td, .xhe_o2007blue iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_o2007blue table.xheLayout {display:inline-table;background:#E5EFFD; border:1px solid #ABC6DD;width:100%;height:100%;}\n.xhe_o2007blue td.xheTool {padding:1px 3px;border-bottom:1px solid #ABC6DD;}\n.xhe_o2007blue td.xheTool span{float:left;margin:2px 0px;}\n.xhe_o2007blue td.xheTool br{clear:left;}\n\n.xhe_o2007blue span.xheGStart{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007blue span.xheGEnd{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007blue span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_o2007blue a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_o2007blue a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_o2007blue a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100)}\n.xhe_o2007blue a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_o2007blue a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important;}\n\n.xhe_o2007blue a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_o2007blue span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_o2007blue span.xheBtnCut {background-position:0 0}\n.xhe_o2007blue span.xheBtnCopy {background-position:-20px 0}\n.xhe_o2007blue span.xheBtnPaste {background-position:-40px 0}\n.xhe_o2007blue span.xheBtnPastetext {background-position:-60px 0}\n.xhe_o2007blue span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_o2007blue span.xheBtnFontface {background-position:-100px 0}\n.xhe_o2007blue span.xheBtnFontSize {background-position:-120px 0}\n.xhe_o2007blue span.xheBtnBold {background-position:-140px 0}\n.xhe_o2007blue span.xheBtnItalic {background-position:-160px 0}\n.xhe_o2007blue span.xheBtnUnderline {background-position:-180px 0}\n.xhe_o2007blue span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_o2007blue span.xheBtnFontColor {background-position:-220px 0}\n.xhe_o2007blue span.xheBtnBackColor {background-position:-240px 0}\n.xhe_o2007blue span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_o2007blue span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_o2007blue span.xheBtnAlign {background-position:-300px 0}\n.xhe_o2007blue span.xheBtnList {background-position:-320px 0}\n.xhe_o2007blue span.xheBtnOutdent {background-position:-340px 0}\n.xhe_o2007blue span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_o2007blue span.xheBtnLink {background-position:-380px 0}\n.xhe_o2007blue span.xheBtnUnlink {background-position:-400px 0}\n.xhe_o2007blue span.xheBtnAnchor {background-position:-420px 0}\n.xhe_o2007blue span.xheBtnImg {background-position:-440px 0}\n.xhe_o2007blue span.xheBtnFlash {background-position:-460px 0}\n.xhe_o2007blue span.xheBtnMedia {background-position:-480px 0}\n.xhe_o2007blue span.xheBtnHr {background-position:-500px 0}\n.xhe_o2007blue span.xheBtnEmot {background-position:-520px 0}\n.xhe_o2007blue span.xheBtnTable {background-position:-540px 0}\n\n.xhe_o2007blue span.xheBtnSource {background-position:-560px 0}\n.xhe_o2007blue span.xheBtnPreview {background-position:-580px 0}\n.xhe_o2007blue span.xheBtnPrint {background-position:-600px 0}\n.xhe_o2007blue span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_o2007blue span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_o2007blue .xheIframeArea{height:100%;}\n.xhe_o2007blue iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#ABC6DD 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#C6DAE9;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #ABC6DD;padding:2px;}\n.xheEmot ul{border-top:1px solid #ABC6DD;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #ABC6DD;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #ABC6DD;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#D1DEEF;border-bottom:1px solid #ABC6DD;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/o2007silver/ui.css",
    "content": ".xhe_o2007silver table, .xhe_o2007silver tr, .xhe_o2007silver td, .xhe_o2007silver iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_o2007silver table.xheLayout {display:inline-table;background:#EEEEEE; border:1px solid #BBBBBB;width:100%;height:100%;}\n.xhe_o2007silver td.xheTool {padding:1px 3px;border-bottom:1px solid #BBBBBB;}\n.xhe_o2007silver td.xheTool span{float:left;margin:2px 0px;}\n.xhe_o2007silver td.xheTool br{clear:left;}\n\n.xhe_o2007silver span.xheGStart{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007silver span.xheGEnd{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007silver span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_o2007silver a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_o2007silver a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_o2007silver a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100)}\n.xhe_o2007silver a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_o2007silver a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important}\n\n.xhe_o2007silver a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_o2007silver span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_o2007silver span.xheBtnCut {background-position:0 0}\n.xhe_o2007silver span.xheBtnCopy {background-position:-20px 0}\n.xhe_o2007silver span.xheBtnPaste {background-position:-40px 0}\n.xhe_o2007silver span.xheBtnPastetext {background-position:-60px 0}\n.xhe_o2007silver span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_o2007silver span.xheBtnFontface {background-position:-100px 0}\n.xhe_o2007silver span.xheBtnFontSize {background-position:-120px 0}\n.xhe_o2007silver span.xheBtnBold {background-position:-140px 0}\n.xhe_o2007silver span.xheBtnItalic {background-position:-160px 0}\n.xhe_o2007silver span.xheBtnUnderline {background-position:-180px 0}\n.xhe_o2007silver span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_o2007silver span.xheBtnFontColor {background-position:-220px 0}\n.xhe_o2007silver span.xheBtnBackColor {background-position:-240px 0}\n.xhe_o2007silver span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_o2007silver span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_o2007silver span.xheBtnAlign {background-position:-300px 0}\n.xhe_o2007silver span.xheBtnList {background-position:-320px 0}\n.xhe_o2007silver span.xheBtnOutdent {background-position:-340px 0}\n.xhe_o2007silver span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_o2007silver span.xheBtnLink {background-position:-380px 0}\n.xhe_o2007silver span.xheBtnUnlink {background-position:-400px 0}\n.xhe_o2007silver span.xheBtnAnchor {background-position:-420px 0}\n.xhe_o2007silver span.xheBtnImg {background-position:-440px 0}\n.xhe_o2007silver span.xheBtnFlash {background-position:-460px 0}\n.xhe_o2007silver span.xheBtnMedia {background-position:-480px 0}\n.xhe_o2007silver span.xheBtnHr {background-position:-500px 0}\n.xhe_o2007silver span.xheBtnEmot {background-position:-520px 0}\n.xhe_o2007silver span.xheBtnTable {background-position:-540px 0}\n\n.xhe_o2007silver span.xheBtnSource {background-position:-560px 0}\n.xhe_o2007silver span.xheBtnPreview {background-position:-580px 0}\n.xhe_o2007silver span.xheBtnPrint {background-position:-600px 0}\n.xhe_o2007silver span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_o2007silver span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_o2007silver .xheIframeArea{height:100%;}\n.xhe_o2007silver iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#BBBBBB 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #BBBBBB;padding:2px;}\n.xheEmot ul{border-top:1px solid #BBBBBB;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #BBBBBB;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #AAA;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#DDD;border-bottom:1px solid #AAA;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height: expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "src/main/webapp/jslib/eu_js/xheditor/xheditor_skin/vista/ui.css",
    "content": ".xhe_vista table, .xhe_vista tr, .xhe_vista td, .xhe_vista iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_vista table.xheLayout {display:inline-table;background:#E0E8F5; border:1px solid #99BBE8;width:100%;height:100%;}\n.xhe_vista td.xheTool {padding:1px 3px;border-bottom:1px solid #99BBE8;}\n.xhe_vista td.xheTool span{float:left;margin:2px 0px;}\n.xhe_vista td.xheTool br{clear:left;}\n\n.xhe_vista span.xheGStart{display:block;width:4px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_vista span.xheGEnd{display:block;width:4px;height:22px;background:url(img/buttonbg.gif) -26px 0;}\n.xhe_vista span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_vista a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_vista a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_vista a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_vista a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_vista a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important;}\n\n.xhe_vista a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_vista span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_vista span.xheBtnCut {background-position:0 0}\n.xhe_vista span.xheBtnCopy {background-position:-20px 0}\n.xhe_vista span.xheBtnPaste {background-position:-40px 0}\n.xhe_vista span.xheBtnPastetext {background-position:-60px 0}\n.xhe_vista span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_vista span.xheBtnFontface {background-position:-100px 0}\n.xhe_vista span.xheBtnFontSize {background-position:-120px 0}\n.xhe_vista span.xheBtnBold {background-position:-140px 0}\n.xhe_vista span.xheBtnItalic {background-position:-160px 0}\n.xhe_vista span.xheBtnUnderline {background-position:-180px 0}\n.xhe_vista span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_vista span.xheBtnFontColor {background-position:-220px 0}\n.xhe_vista span.xheBtnBackColor {background-position:-240px 0}\n.xhe_vista span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_vista span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_vista span.xheBtnAlign {background-position:-300px 0}\n.xhe_vista span.xheBtnList {background-position:-320px 0}\n.xhe_vista span.xheBtnOutdent {background-position:-340px 0}\n.xhe_vista span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_vista span.xheBtnLink {background-position:-380px 0}\n.xhe_vista span.xheBtnUnlink {background-position:-400px 0}\n.xhe_vista span.xheBtnAnchor {background-position:-420px 0}\n.xhe_vista span.xheBtnImg {background-position:-440px 0}\n.xhe_vista span.xheBtnFlash {background-position:-460px 0}\n.xhe_vista span.xheBtnMedia {background-position:-480px 0}\n.xhe_vista span.xheBtnHr {background-position:-500px 0}\n.xhe_vista span.xheBtnEmot {background-position:-520px 0}\n.xhe_vista span.xheBtnTable {background-position:-540px 0}\n\n.xhe_vista span.xheBtnSource {background-position:-560px 0}\n.xhe_vista span.xheBtnPreview {background-position:-580px 0}\n.xhe_vista span.xheBtnPrint {background-position:-600px 0}\n.xhe_vista span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_vista span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_vista .xheIframeArea{height:100%;}\n.xhe_vista iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#99BBE8 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#B8CFEE;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #99BBE8;padding:2px;}\n.xheEmot ul{border-top:1px solid #99BBE8;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #99BBE8;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #99BBE8;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:3px;line-height:18px;background:url(img/titlebg.gif) repeat-x;border-bottom:1px solid #99BBE8;}\n.xheModalClose{float:right;width:30px;height:18px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "src/main/webapp/style/eu/index/article.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searcharticle{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searcharticle input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n.searchdate{ position: relative; margin-bottom: 10px;}\n.searchdate input{ width: 150px; outline: none;}\n\n\n.categorySearch { margin-top: 20px; border: 1px solid #19840E; padding: 5px; width: 220px;}\n.categoryHead { border-bottom: solid 1px #89CDAC;}\n.categoryHead span b{ font-size: 18px;}\ntable.categoryList tr{ height: 30px; overflow: hidden;}\ntable.categoryList tr td{ vertical-align: middle;}\ntable.categoryList span.categoryicon{ display: block; width: 16px; height:16px; background: url(\"../images/index/category_icon.png\") no-repeat;}\ntable.categoryList a { cursor: pointer;}\n\n\n\n.articlelist{ width:680px;}\n.articlelist ul li .pic{  float:left; display:block; overflow:hidden;}\n.articlelist li .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em; }\n.articlelist li a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n.articlelist ul li p{ font-size:12px; color:#999;}\n.articlelist ul li{ width:670px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n.articlelist table{}\n.articlelist table tr{ height: 32px; line-height: 32px;}\n.articlelist table a{ line-height: 32px;}\n\n\n.articletitle{ width: 100%; border-bottom: dashed #D5D5D5 1px; padding 10px; display: block; text-align: center;}\n.articletitle .title{ font-size: 28px; line-height: 1.5em; color: #333; font-weight: bold;}\n.articletitle .time{ font-size: 18px; line-height: 2em; color: #333;}\n\n.news_model ul li{ width: 256px; float: left; padding: 4px 0; border-bottom: dashed #D5D5D5 1px; }\n.news_model ul li a { font-size: 12px; color: #333; text-decoration: none; float: left;}\n.news_model ul li .time { float: right; width: 50px; }"
  },
  {
    "path": "src/main/webapp/style/eu/index/comment.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searchquestion{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searchquestion input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n.askquestion{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/askquestion.png\"); }\n.askquestion:hover{ background: url(\"../images/index/askquestion_s.png\"); }\n.myquestion{ width: 120px; height: 35px; line-height: 30px; margin-top: 15px; margin-right: 15px; border: 1px solid #045bb2; border-radius: 4px; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); color: #fff; font-size: 24px; text-align: center; text-shadow: 0 1px 1px rgba(0,0,0,.12); outline: 0; cursor: pointer;}\n\n.comment_list{width: 620px;}\n.comment_list ul{ border: 1px solid #ddd; border-radius: 4px; box-shadow: 0 1px 1px rgba(0,0,0,.05);}\n.comment_list ul li.commentitem{ list-style: none; display: block; background: none; width: 100%; overflow: hidden; clear: both; margin: 0;}\n.comment_list textarea{ outline:none; resize: none; font-size: 13px; line-height: 20px;}\n\n.comment_list .comment_post{ position: relative; padding: 0px 10px;}\n.comment_list .comment_post .avatar{box-shadow: 0 1px 1px rgba(255,255,255,0.75); position: relative; border-radius: 3px; background-color: #fff; float: left;}\n.comment_list .comment_post .avatar img{ display: block; width: 50px; height: 50px; max-width: none; box-shadow: 0 1px 3px rgba(0,0,0,0.22); -webkit-border-radius: 3px; border-radius: 3px;}\n\n.comment_list .comment_post .comment_body{ padding-left: 60px;}\n.comment_list .comment_post .comment_body .comment_header{ padding-top: 1px;}\n.comment_list .comment_post .comment_body .comment_header .user_name{ font-size: 14px; margin-right: 8px; color: #d32 !important;}\n.comment_list .comment_post .comment_body p{ font-size: 13px; line-height: 1.5em; margin: .5em 0; word-wrap: break-word; text-indent: 0; clear: none;}\n.comment_list .comment_post .comment_body .comment_footer{ line-height: 1.5em; font-size: 12px; color: #999;}\n.comment_list .comment_post .comment_body .comment_footer .comment_time{ margin-right: 8px;}\n.comment_list .comment_post .comment_body .comment_footer a{ margin: 0 6px 0 0; padding: 0 6px 0 0; color: #999;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon{ vertical-align: middle; display: inline-block; overflow: hidden; background: transparent url(\"../images/Sprites_Embed.png\") no-repeat; position: relative; top: -1px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon_reply{ width: 18px; height: 13px; background-position: 0 -105px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon_like{ width: 14px; height: 13px; background-position: 0 -117px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_likes_count{ float:right; color: #999; font-size: 13px;}\n.comment_list .comment_post .comment_body .comment_replylittlebox{ padding: 3px 30px;}\n.comment_list .comment_post .comment_body .replylittlebox_textarea{ position: relative; border: 1px solid #ccc; border-bottom: none; padding-right: 20px; background: #fff; overflow: hidden; border-top-right-radius: 3px; border-top-left-radius: 3px;}\n.comment_list .comment_post .comment_body .replylittlebox_textarea textarea{ display: block; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; border: none; box-shadow: none; -webkit-appearance: none; overflow: auto; padding: 10px; height: 20px; margin: 0; color: #999; width: 100%;}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar .replylittlebox_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar .replylittlebox_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 14px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\n.comment_list .comment_paginator{ text-align: right; padding: 10px 0px; clear: both; line-height: 1em;}\n.comment_list .comment_paginator a{ font-size: 12px; margin: 0 3px; padding: 2px 5px; border: 1px solid transparent; cursor: pointer; text-decoration: none; color: #777;}\n.comment_list .comment_paginator a.paginator_current{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; color: #d32; }\n.comment_list .comment_paginator a:hover{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; }\n\n.comment_list .comment_replybox{width: auto; font-size: 12px; z-index: 3; margin: 0;  padding: 0 0 0 60px; position: relative;}\n.comment_list .comment_replybox .replybox_avatar{ position: absolute; top: 0; left: 0; float: left; box-shadow: 0 1px 3px rgba(0,0,0,0.22); -webkit-border-radius: 3px; border-radius: 3px;}\n.comment_list .comment_replybox .replybox_textarea{ position: relative; border: 1px solid #ccc; border-bottom: none; padding-right: 20px; background: #fff; overflow: hidden; border-top-right-radius: 3px; border-top-left-radius: 3px;}\n.comment_list .comment_replybox .replybox_textarea textarea{ display: block; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; border: none; box-shadow: none; -webkit-appearance: none; overflow: auto; padding: 10px; height: 54px; margin: 0; color: #999; width: 100%;}\n.comment_list .comment_replybox .replybox_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n.comment_list .comment_replybox .replybox_toolbar .replybox_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n.comment_list .comment_replybox .replybox_toolbar .replybox_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 14px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\n.answerlist{ width:630px;}\n.answerlist li .time{ float: right; width: 50px; padding-right: 18px}\n.answerlist li a{ font-size: 14px;color: #333;text-decoration: none;float: left;}\n.answerlist li p{ margin-top: 20px; margin-left: 10px; font-size: 13px; line-height: 1.5; color: #999;}\n.answerlist ul li{ width:620px;float:left; padding: 3px 0; border-bottom: dashed #D5D5D5 1px;}\n.answerlist ul li .highline{ color: red;}"
  },
  {
    "path": "src/main/webapp/style/eu/index/commpany.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.applycommpany{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/applycompany.png\"); }\n.applycommpany:hover{ background: url(\"../images/index/applycompany_s.png\"); }\n\n.btn_applycompany{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/publish.png\"); }\n.btn_applycompany:hover{ background: url(\"../images/index/publish_s.png\"); }\n\n.companylist{ width:630px;}\n.companylist ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.companylist li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.companylist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.companylist li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n.companylist li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n.companylist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.companylist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}"
  },
  {
    "path": "src/main/webapp/style/eu/index/countryside.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.applycountryside{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/applyxiaxiang.png\"); }\n.applycountryside:hover{ background: url(\"../images/index/applyxiaxiang_s.png\"); }\n\n.countrysidelist{ width:630px;}\n.countrysidelist ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.countrysidelist li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.countrysidelist li a{ font-size:18px; color:#333; text-decoration:none; line-height:2em;}\n.countrysidelist li p{ font-size: 12px; color: #999; line-height: 1.4em;}\n.countrysidelist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.countrysidelist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n#provincecity label { width: 20px; height: 30px; line-height: 30px; text-align: right; float: left; font-weight: bold; color: #666; margin: 12px 10px 0 0;}\n\n#tpersonlist thead th { background-color: rgb(81, 130, 187); color: #fff; border-bottom-width: 0; text-align: center;}\n#tpersonlist td { color: #000; position: relative;}\n#tpersonlist tr, #tpersonlist th { border: 1px solid rgb(81, 130, 187);}\n#tpersonlist td, #tpersonlist th { padding: 5px 8px; font-size: 12px; font-family: Verdana; font-weight: bold;}\n\n.del_btn{ width: 18px; display: block; position: absolute; right: -13px; top: -2px; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\ni.del_icon { width: 18px;height: 18px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -145px -201px; position: absolute; left: 0px;}\n"
  },
  {
    "path": "src/main/webapp/style/eu/index/css.css",
    "content": "html, body {\n    height: 100%;\n    }\n    .wrapper{\n    min-height: 100%;\n    height: auto !important;\n    height: 100%;\n    }\n    .z_footerk{\n    margin: -90px auto 0;\n    }\n    .re_index{\n      padding-bottom: 90px;\n    }\n    .z_indexk{\n     padding-bottom: 90px;\n    }\n    .z_indexk:after {\n    clear: both;\n    display: block;\n    height: 0;\n    visibility: hidden;\n    content: \".\";\n    }\n    .re_index:after {\n    clear: both;\n    display: block;\n    height: 0;\n    visibility: hidden;\n    content: \".\";\n    }\n.z_gap{\n\theight:10px;\n\tclear:both;\n\tbackground:#FFF;\n\twidth:100%;\n\tmargin:0px;\n\tdisplay:block;\n\tpadding:0px;\n}\n.container1{\n\twidth:951px;\n\tmargin:0 auto;\n}\n@font-face\n{\nfont-family: Hiragino;\nsrc: url('../Hiragino Sans GB W3.otf')\n,url('../HiraginoSansGB-W3-Alphabetic.eot');\n}\n.z_clear{\n\tpadding: 0px;\n\tmargin: 0px;\n}\n.z_color{\n\tcolor:#3b4d63;\n}\n.green{\n\tcolor:#5dbd06;\t\n}\n.yellow{\n\tcolor:#feb825;\t\n}\n.red{\n\tcolor:#e63c53;\t\n}\n.gray{\n\tcolor:#323232;\t\n}\n.orange{\n\tcolor: #ec5221;\n\t}\n/*start:濠电偛顦崝宀勫船閿燂拷*/\n.re_bg{\n\tbackground: url(../img/re-bg.png) no-repeat  center top;\n\tbackground-size: 100% auto;\n\twidth:100%;\n\theight:225px;\n\tpadding-top:20px;\n}\n.re_logo{\n\tfloat: left;\n\tpadding-top: 45px;\n\tpadding-bottom: 10px;\n}\n.re_conntent{\n\twidth:590px;\n\theight: 120px;\n\tpadding-top: 253px;\n\tfloat: left;\n\tfont-size:11px;\n}\n.re_box{\n\twidth:322px;\n\t/**height:350px;**/\n\tbackground: url(../img/re-box.png) no-repeat;\n\tfloat: right;\n\tbackground-size: 322px 350px;\n\tpadding-top: 40px;\n}\n.re_box ul li input{\n\tpadding-top:0px;\n\tpadding-bottom:0px;\n}\n.re_box ul li label{\n\tline-height: 30px;\n}\n.z_input{\n\tborder:1px solid #3b4d63; \n}\n.re-btn{\n\tbackground:url(../img/zhuce.png) no-repeat 0px 0px; \n\twidth:100px; \n\theight:34px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right: 30px;\n\t}\n.re-btn:hover{\n\tbackground:url(../img/zhuce.png) no-repeat 0px -35px; \n\twidth:100px; \n\theight:34px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right: 30px;\n\t}\n/*end:濠电偛顦崝宀勫船閿燂拷*/\n/*start:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�閹凤拷*/\n.logo{\n\tfloat: left;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n.nav-pad{\n\tpadding-top: 20px;\n\tpadding-bottom: 15px;\n}\n.logo-right{\n\tfont-size: 13px;\n\theight:80px;\n\tfloat: right;\n}\n.logo-right ul li img{\n\tfont: left;\n}\n.z_per {\n\tpadding-top: 20px;\n\tpadding-bottom: 10px;\n\tfloat: right;\n}\n.z_per, .z_per li ul{\n\tlist-style: none;\n}\n.z_per li ,.z_per li ul li{\n\tfloat: left;\n}\n\n.z_notice{\n\tbackground: url(../img/notice.png) no-repeat;\n\twidth: 21px;\n\theight: 15px;\n\tcolor: #FFF;\n\tdisplay: inline-block;\n\ttext-align: center;\n\tfont-size: 11px;\n\tline-height: 15px;\n\tposition: absolute;\n\ttop:-15px;\n\tright:135px;\n}\n.heng{\n\tbackground: url(../img/index-heng.png) no-repeat  center top;\n\tbackground-size: 100% 100%;\n\theight:5px;\n}\n.re_index{\n\tmargin-top: 15px;\n}\n.re_indexbg{\n\tbackground: #e8edf0;\n\toverflow:hidden;\n\tzoom:1;\n}\n.content-left{\n\tfloat: left;\n\twidth: 210px;\n}\n.content-rightk{\n\tfloat: right;\n\twidth: 741px;\n\tbackground: green;\n\tmin-height:710px;\n\tbackground: #FFF;\n\toverflow:hidden;\n\tzoom:1;\n}\n.left-top{\n\t/*padding: 10px 20px 2px 20px;*/\n\tpadding:10px;\n\tbackground: #e8edf0;\n}\n.left-top table tr td{\n\tpadding:5px;\n}\n.touxk {\n\tlist-style: none;\n\twidth: 190px;\n\tmargin:0px;\n\tpadding:0px;\n\tfont-size: 14px;\n\ttext-align: center;\n}\n.touxk li{\n\ttext-align:left;\n\tlist-style:none;\n}\n.touxk .toux {\n\twidth: 190px;\n\tdisplay: inline-block;\n\ttext-align: center;\n}\n.touxk .toux li{\n\tfont-size: 14px;\n}\n.touxk .toux  p{\n\tfloat: right;\n\tdisplay: inline-block;\n\twidth: 110px;\n}\n.touxk .toux img{\n\twidth: 120px;\n\theight: 120px;\n}\n.touxk .toux span{\n\tfont-size:15px;\n}\n.z_size{\n\tfont-size: 18px;\n}\n\n.left_candan{\n\twidth:210px; \n\tfloat:left;\n\tmargin:0px;\n}\n.left_candan li{\n\tlist-style:none;\n\twidth:210px; \n\theight:43px;\n\tbackground:url(../img/left_caidan.png) \n\tno-repeat; \n\tcursor:pointer;\n\tfloat:left;\n\t}\n.left_candan a{\n\twidth:210px; \n\theight:45px; \n\tfloat:left; \n\tpadding:0px; \n\tmargin:0px;\n}\n.left_candan a em{\n\tdisplay:none;\n}\n.left_candan .zhuye{background-position:0px 0px;}\n.left_candan .zhuye:hover{background-position:0px -260px;}\n.left_candan .zhuti{background-position:0px -43px;}\n.left_candan .zhuti:hover{background-position:0px -304px;}\n.left_candan .xinban{background-position:0px -86px;}\n.left_candan .xinban:hover{background-position:0px -347px;}\n.left_candan .renling{background-position:0px -129px;}\n.left_candan .renling:hover{background-position:0px -390px;}\n.left_candan .biangeng{background-position:0px -172px;}\n.left_candan .biangeng:hover{background-position:0px -433px;}\n.left_candan .zhuxiao{background-position:0px -215px;}\n.left_candan .zhuxiao:hover{background-position:0px -476px;}\n\n.download{\n\tbackground: #f7f7f7;\n\theight:200px;\n\tclear: both;\n\tpadding: 20px;\n\tborder-bottom: 2px solid #bbbbbb;\n\tmargin:0px;\n}\n.download p{\n\tborder-bottom:1px solid #abafb2;\n\tline-height: 30px;\n}\n.download li{\n\tbackground: url(../img/xztb.png) no-repeat 0px 5px;\n\tline-height: 28px;\n\tpadding-left:24px;\n}\n.download li:hover{\n\tbackground: url(../img/xztb.png) no-repeat 0px -23px;\n\tcolor:#ec4e1b;\n\tcursor: pointer;\n}\n/*start:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�濞佳嗐亹閸涘﹦鐟归柨鐕傛嫹*/\n.content-right{\n\tfloat: right;\n\twidth:730px;\n}\n.tab_tablek{\n\tpadding: 0 10px;\n}\n.z_tab_table thead tr{\n\tborder-bottom: 2px solid #81878c;\n\tcolor:#3b4d63;\n}\n.z_tab_table thead tr th{\n\tcolor:#3b4d63;\n\tfont-weight: 400;\n\tfont-size: 13px;\n}\n.z_tab_table tbody tr{\n\tborder: 0px;\n}\n.z_tab_table tbody tr td{\n\tfont-size: 12px;\n}\n\n/*end:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�濞佳嗐亹閸涘﹦鐟归柨鐕傛嫹*/\n.z_footerk{\n\theight:85px;\n\tposition: relative;\n    z-index: 10;\n}\n.z_footer{\n\twidth:100%;\n\tbackground: #efefef;\n\tpadding:10px 0 5px 0;\n\theight:90px;\n\tdisplay: block;\n}\n.z_footer{\n\tfont-size: 11px;\n\tline-height: 15px;\n}\n.z_footer p{\n\tmargin:0px;\n\tpadding: 0px;\n\tline-height:20px;\n}\n/*end:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�閹凤拷*/\n/***************start:闂佸搫鍊瑰妯绘叏濞嗘垹纾鹃柟瀵稿Х瑜版煡鏌ｉ姀鐘垫瀮妞ゆ洩鎷�*********************/\n.z_content{\n\tborder: 1px solid #e8edf0;\n\tborder-bottom:3px solid #e8edf0 ;\n\tmin-height: 706px;\n}\n.z_content h5{\n\tbackground: #e8edf0;\n\tline-height: 25px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n}\n.z_from{\n\tpadding: 10px 25px;\n\tclear: both;\n}\n.z_from input{\n\tpadding-top:2px;\n\tpadding-bottom: 3px;\n}\n.prog2\n{\n\tbackground: url(../img/p2.png) no-repeat ;\n\theight:61px;\n\twidth:680px;\n}\n.z_from h4{\n\tbackground: url(../img/yuan.png) no-repeat 0  30px ;\n\tfont-size: 16px;\n\tpadding: 25px 0 0 16px;\n\tborder-top:1px solid #6f7c8d;\n\tcolor:#3b4d63;\n\tfont-weight: 400;\n\tmargin-top:20px;\n}\n.z_from h4 .tb{\n\tfont-size:12px;\n\tcolor:#999999;\n}\n.z_from h4 .tb input[type=\"checkbox\"]{\n\tborder: 1px solid #999999;\n\tvertical-align:sub;\n}\n.z_from .form-horizontal .control-group{\n\tmargin-bottom:10px;\n}\n.z_from .form-horizontal .control-group .control-label{\n\tpadding-top: 2px;\n}\n.z_from .form-horizontal .control{\n\tmargin-left: 170px;\n}\n.must{\n\tcolor:#fe0101;\n\tfont-size:18px;\n\tdisplay: inline-block;\n}\n.notic_info{\n\tfont-size: 12px;\n\tcolor:#999999;\n}\n.z_add a{\n\tfont-size:14px;\n\tcolor: #3b4d63;\n\ttext-decoration: underline;\n}\n.z_select{\n\twidth:480px;\n}\n.z_select select{\n\tpadding: 0px;\n\tmargin:0px;\n\tfloat:left;\n\tmargin-right:5px; \n\twidth:80px;\n\tline-height:20px;\n\tpadding:3px;\n}\n.z_checkbox{\n\twidth:660px;\n\tmargin-left:20px;\n}\n.login_person{\n\tbackground: #e8edf0;\n\tline-height: 25px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n}\n.login_person_con{\n\twidth: 740px;\n\theight:142px;\n\tpadding-top: 20px;\n\tborder-bottom: 3px solid #bbbbbb;\n\tmargin-bottom: 20px;\n\tpadding-left: 20px;\n}\n.login_person_no{\n\twidth:170px;\n\theight: 122px;\n\tfloat: left;\n\tborder-right:3px solid #e1e1e1;\n\tpadding-right: 25px;\n}\n.no1{\n\twidth:140px;\n\tpadding-left: 30px;\n}\n.no2{\n\tpadding-right:0px;\n\tmargin-right: 0px;\n}\n.login_person_no .text-right img{\n\tmargin-right: 15px;\n} \n.login_person_no .xing{\n\tmargin:25px 0 10px 40px;\n}\n.login_person_no .z_ul{\n\tmargin:25px 0 10px 15px;\n}\n.sq_btn{\n\tbackground: url(../img/renzheng_01.png) no-repeat;\n\tfloat: left;\n\twidth: 106px;\n\theight: 106px;\n\tmargin: 10px 0 0 20px;\n\tcursor: pointer;\n}\n.sq_btn:hover{\n\tbackground: url(../img/renzheng_02.png) no-repeat;\n}\n/***************end:闂佸搫鍊瑰妯绘叏濞嗘垹纾鹃柟瀵稿Х瑜版煡鏌ｉ姀鐘垫瀮妞ゆ洩鎷�*********************/\n.index-top{\n\tmargin-top: 20px;\n}\n.z-index{\n\tmargin-bottom:0px;\n\tclear:both;\n\tfloat: right;\n}\n.z-index li a{\n\tcolor: #3b4d63;\n}\n.z_adbg{\n\tbackground: url(../img/adbg.png) no-repeat  center top;\n\tbackground-size: 100% 100%;\n\theight:385px;\n}\n.loginbg{\n\twidth:318px;\n\t/**height:307px;**/\n\tborder-bottom: 3px solid #dcdde2;\n\tfloat: right;\n\tmargin: 8px 20px 0 0;\n\tborder-radius: 5px;\n\tbackground: #ffffff;\n\tpadding-top:16px;\n}\n.login_tab li{\n\twidth: 60%;\n\ttext-align: center;\n\tmargin-right: 0px;\n}\n\n.nav-tabs > li > a{\n\tline-height: 30px;\n}\n.login_tab li a:hover{\n\tline-height: 30px;\n}\n.login_tab .active a{\n\tborder-top: 4px solid #e63c53;\n\tline-height: 27px;\n}\n.logink li label{\n\tline-height: 30px;\n\twidth:80px;\n\tfloat:left;\n}\n.logink li input{\n\twidth:160px;\n\tfloat:left;\n\tmargin-left:10px;\n}\n.logink{\n\tpadding-top: 10px;\n}\n.login-btn{\n\tbackground:url(../img/login1.png) no-repeat; \n\twidth:100px; \n\theight:35px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right:30px;\n\t}\n.login-btn:hover{\n\tbackground:url(../img/login2.png) no-repeat; \n\twidth:100px; \n\theight:35px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right:30px;\n\t}\n.z_adleft{\n\tfloat: left;\n\tmargin:20px 0 0 15px;\n}\n.z_adleft .xuanch{\n\tmargin-bottom: 40px;\n}\n.z_adleft .liucheng{\n\tmargin-left: 60px;\n}\n.index_content{\n\tpadding-top: 30px;\n\tmin-height: 450px;\n}\n.index_left{\n\twidth:650px;\n\tfloat: left;\n\tmargin-top: -5px;\n}\n.tongzhi{\n\tbackground: url(../img/tongzhi.png) no-repeat; \n\twidth: 292px;\n\theight:186px;\n\tmargin-left: -5px;\n\tpadding:30px 5px 20px;\n}\n.gongshi{\n\tborder: 1px solid #e8edf0; \n\twidth: 310px;\n\theight: 230px;\n\tmargin-top: -5px;\n}\n.gongshi h5{\n\tbackground: #e8edf0;\n    line-height: 30px;\n    padding-left: 10px;\n    margin: 0px;\n    font-weight: 400;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px;\n}\n.gongshi h5 span{\n\tfloat: right;\n\tmargin-right: 10px;\n    margin-top: 10px;\n}\n.z_p{\n\tdisplay: block;\n\toverflow: hidden;\n\tzoom:1;\n}\n.z_p .tit{\n\twidth: 80px;\n\tbackground: #3b4d63;\n\theight:25px;\n\tdisplay: inline-block;\n\tline-height: 25px;\n\tcolor: #FFF;\n\tpadding-left: 15px;\n\tfloat: left;\n}\n.more{\n\tfloat: right;\n\twidth:42px;\n\tmargin-right: 10px;\n\tmargin-top:5px;\n}\n.tz_list {\n\tclear:both;\n\tlist-style: none;\n\tmargin: 10px 5px 0px 15px; \n\theight:150px;\n}\n.tz_list li{\n\tpadding: 4px 0;\n}\n.tz_list li .tz_tit{\n\tdisplay: inline-block;\n\twidth: 162px;\n\twhite-space:nowrap;/* 婵炴垶鎸哥粔闈涚暦閼碱剚鍋橀柨鐕傛嫹*/\n\toverflow:hidden;/* 闂佸憡鍔曢幊搴敊閹邦喗鎯ラ柛娑卞幖濮ｅ鎮楃涵鍛棄閻庤濞婂顕�醇閺囩噥鍚呴梺鑺ッ换妤冪矓閹绢喖绀勬繛宸簻閸斻儵鏌涢幒鎴烆棤婵炲牊鍨垮畷姗�川椤撗冩櫍 */\n\ttext-overflow:ellipsis;\n}\n.index_right{\n\twidth: 290px;\n\tfloat: right;\n\theight: 20px;\n}\n.index_left .content{\n\twidth: 310px;\n\theight: 230px;\n\tborder: 1px solid #e8edf0;\n\tfloat: right;\n\tmargin-left: 10px;\n\tborder-radius:3px; \n}\n.index_left .content h5{\n\tbackground: #e8edf0;\n\tline-height: 30px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n\tborder-top-left-radius:3px; \n\tborder-top-right-radius:3px; \n}\n.index_left .content h5 span{\n\tfloat: right;\n\tmargin-right: 10px;\n\tmargin-top:10px;\n}\n.listr{\n\tpadding-bottom: 20px;\n}\n.listr li{\n\twidth:280px;\n\tdisplay: inline-block;\n\twhite-space:nowrap;/* 婵炴垶鎸哥粔闈涚暦閼碱剚鍋橀柨鐕傛嫹*/\n\toverflow:hidden;/* 闂佸憡鍔曢幊搴敊閹邦喗鎯ラ柛娑卞幖濮ｅ鎮楃涵鍛棄閻庤濞婂顕�醇閺囩噥鍚呴梺鑺ッ换妤冪矓閹绢喖绀勬繛宸簻閸斻儵鏌涢幒鎴烆棤婵炲牊鍨垮畷姗�川椤撗冩櫍 */\n\ttext-overflow:ellipsis;\n}\n.lianjie {\n\tcolor: #3b4d63;\n}\n.lianjie_a a{\n\tfont-size: 12px;\n}\n.z_shangchuan{\n\tbackground: url(../img/shangchuan.png) no-repeat;\n\twidth: 92px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_yulan{\n\tbackground: url(../img/yulan.png) no-repeat;\n\twidth: 82px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_shangchuan:hover{\n\tbackground: url(../img/shangchuan2.png) no-repeat;\n\twidth: 92px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n\tcursor: pointer;\n}\n.z_fasong{\n\tbackground: url(../img/fasong.png) no-repeat;\n\twidth: 108px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_fasong:hover{\n\tbackground: url(../img/fasong2.png) no-repeat;\n\twidth: 108px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n\tcursor: pointer;\n}\n.tshi_content{\n\tfont-size: 12px;\n}\n.tshi_content h6{\n\tfont-weight: 400;\n\tfont-size: 14px;\n}\n.tshi_content p{\n\ttext-indent:2em;\n}\n.z_tijiao{\n\tborder: 0px;\n\twidth: 63px;\n\theight: 20px;\n\tbackground: url(../img/baocuntijiao.png) no-repeat  -68px -28px;\n\tdisplay: inline-block;\n}\n.z_tijiao:hover{\n\tborder: 0px;\n\twidth: 63px;\n\theight: 20px;\n\tbackground: url(../img/baocuntijiao.png) no-repeat  -68px 0px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n}\n.zt_table,.zt_table td{\n\tfont-size: 12px;\n}\n.zt_table tr td{\n\twidth: 25%;\n}\n.zt_table .zt_table_left{\n\ttext-align: right;\n}\n/*start閻庢鍠氶幊鎾诲吹椤撶儐娴栭柛婵堟儷s*/\n.t_shangchuan{\n\twidth:860px;\n\theight:560px;\n\tmargin-left:-420px;\n}\n.shangchuan_left{\n\twidth: 550px;\n\theight:480px;\n\tfloat: left;\n}\n.shangchuan_right\n{\n\tfloat: right;\n\twidth: 280px;\n\theight:480px;\n}\n.shangchuan_left .z_tc_img{\n\tdisplay: block;\n\tmargin:40px;\n\twidth: 450px;\n\theight: 300px;\n\ttext-align: center;\n}\n.shangchuan_left .z_tc_img img{\n\tmax-height:300px;\n\tmax-width:450px;\n}\n.z_tc_btn{\n\twidth: 100%;\n\ttext-align: center;\n}\n.z_tc_shili li{\n\tborder: 1px solid #bbbbbb;\n\twidth:270px;\n\theight: 180px;\n\tdisplay: block;\n\tmargin-top: 20px;\n}\n/*end閻庢鍠氶幊鎾诲吹椤撶儐娴栭柛婵堟儷s*/\n.z_yes{\n\tcolor:#666666;\n}\n.z_no{\n\tcolor:#b3b3b3;\n}\n.pager .z_anniu a{\n\tborder:1px solid #b3b3b3;\n\tcolor:#b3b3b3;\n}\n\n.z_container{\n\twidth: 684px;\n\tmargin: 0 auto;\n\tmargin-top: 20px;\n\t\n}\n\n\n\n.z_img_s{\n\toverflow:hidden;\n\tborder:1px solid #c2c2c2;\n\tfloat:left;\n\tbackground:#d6d6d6;\n\t}\n.z_one{\n\twidth:120px;\n\theight:120px;\n}\n.z_two{\n\twidth:110px;\n\theight:110px;\n\tmargin:10px 0  0px  20px;\n\t}\n.z_three{\n\twidth:90px;\n\theight:90px;\n\tmargin:30px 0  0px  20px;\n\t}\n.z_img_s img{\n\tmax-width:none;\n\tmargin:5px;\n}\n\n/* 开办主体Loading */\n.over {\n    display: none;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background-color: #f5f5f5;\n    filter:alpha(opacity=50); /*IE滤镜，透明度50%*/\n    -moz-opacity:0.5; /*Firefox私有，透明度50%*/\n    opacity:0.5;/*其他，透明度50%*/\n    z-index: 1000;\n}\n\n.layout {\n    display: none;\n    position: absolute;\n    bottom: 30%;\n    left: 40%;\n    width: 20%;\n    height: 20%;\n    z-index: 1001;\n    text-align:center;\n}\n#memberSelection{\n\twidth: 100px;\n}\n.row-fluid p{\n\tmargin-left: 40px;\n\tdisplay: inline-block;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/index/default.css",
    "content": "/*the main demo bar (div)*/\n/*set the position of demo bar at plugin page > Look & Feel*/\nhtml{ }  /*padding-top:43px;*/\n#wpthemedemobar {\n  position:absolute;\n  /*top:0px;*/\n  left:0px;\n  width:100%;\n  height:43px;\n  padding:0px;\n  margin:0px;\n  background-color:#f1f1f1;\n  border-bottom:1px solid #cccccc;\n  color:#444444;\n  font-weight: bold;\n  font-family: tahoma;\n  font-size: 11px;\n  text-align:center;\n  z-index:100;\n}\n#openthemesbar{\n\t position: fixed;\n top:0px;\n  right:0px;\n  width:29px;\n  height:20px;\n  padding:0px;\n  margin:0px;\n  background-color:#f1f1f1;\n  border-bottom:1px solid #cccccc;\n  color:#444444;\n  cursor:pointer;\n  font-weight: bold;\n  font-family: tahoma;\n  font-size: 11px;\n  text-align:center;\n  z-index:99999999999999999999;\n  background:url(http://www.themepark.com.cn/demo/wp-content/plugins/wordpress-theme-demo-bar/images/bar.jpg)\n\t}\n\t#ad_thmemesbar{ position:absolute; left:20px; top:10px; font-size:14px; color:#06C;}\n.wpthemedemobar_wrapper {\n  width:100%;\n  position:relative;\n  padding-top:7px;\n}\n.wptdb_left a{ line-height:53px;}#gbds_thmemesbar{ cursor:pointer;}\n/*currently not in used (a)*/\n#wpthemedemobar a,#wpthemedemobar a:link,#wpthemedemobar a:visited {\n  font-weight: bold;\n  font-family: tahoma;\n}\n  \n/*the theme's name (span)*/\n.wptdb_themename {\n  border-bottom:1px solid #cccccc;\n}\n  \n/*the left content including close button and etc (div)*/\n.wptdb_left {\n  position:absolute;\n  top:3px;\n  right:5px;\n  z-index:99999999999;\n}\n\n/*the images in the left content including close button and etc (img)*/\n.wptdb_left img {\n  margin-right:4px;\n}\n  \n/*the \"currently previewing theme (previewed x times)\" part (div)*/\n.wptdb_current {\n  margin:0 auto; \n  text-align:center;\n  font-size:14px;\n  line-height:34px;\n  \n}\n  \n/*the text : previewed x times (span)*/\n.wptdb_popularity { \n  color:#888888;\n  font-weight:normal\n}\n\n/*quick jump area (div)*/\n.wptdb_jumpbar_wrapper {\n  position:absolute;\n  top:3px;\n  right:15px;\n}\n\n/*quick jump : select menu (select)*/\n.wptdb_jumpbar_select { \n  background-color:#f1f1f1;\n  border:1px solid #cccccc;\n  font-size:11px;\n  font-weight:bold;\n  font-family:tahoma;\n  color:#333333;\n  vertical-align:top;\n  margin-top:3px;\n}\n\n/*quick jump : select menu > option (option)*/\n.wptdb_jumpbar_select option {\n  padding:1px;\n}\n\n/*quick jump (input type=button)*/\n#wpthemedemobar .wptdb_jumpbar_preview_button {\n  background-color:#2885B7;\n  border:1px solid #cccccc;\n  font:bold 11px tahoma;\n  color:#fff;\n  margin-left:5px;\n  padding:4px;\n  padding-left:9px;\n  padding-right:9px;\n  -moz-border-radius:5px;\n}\n\n\n/* qTip - Tooltip script */\ndiv#wptdb_qTip {\n padding: 6px;\n border: 1px solid #cccccc;\n display: none;\n background: #fff;\n color: #333333;\n font: 11px Verdana, Arial, sans-serif;\n text-align: left;\n position: absolute;\n z-index: 1000;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/index/detailinputunit.css",
    "content": ".into_unit { width: 600px; border: 1px solid #ccc; padding: 10px 10px; overflow: hidden; background: #fff; margin-bottom: 10px; position: relative; box-shadow: 0 0 20px rgba(0,0,0,.15); border-radius: 4px; }\n.info_title{ background-color: #ffffff;  height: 30px;  line-height: 30px;  position: absolute; z-index: 1000; text-align: center; letter-spacing: 1px; font-size: 13px;}\n.info_detail { width: 500px; margin: 20px 30px; padding: 10px 20px 10px 20px; border: 1px dashed #dddddd; float: left; text-align: left; position: relative;}\n\n.info_detail div{ overflow: hidden; table-layout: fixed; word-wrap: break-word; font-size: 14px; color: #333;}\n.info_detail p{ margin-top: 15px;}\n.info_detail span input, .info_detail span textarea, .info_detail select{ outline: none; border-radius: 3px; -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 0.5s ease, box-shadow 0.5s ease; -moz-transition: border 0.5s ease, box-shadow 0.5s ease; -o-transition: border 0.5s ease, box-shadow 0.5s ease; transition: border 0.5s ease, box-shadow 0.5s ease;}\n.info_detail span input{ width: 200px; height: 14px; line-height: 20px; float: left; padding: 6px; border: 1px solid #bbb; text-align: left; font-size: 16px;}\n.info_detail span{ float: left; width: 100%; margin-top: 2px; clear: both;}\n.info_detail strong{ font-size: 14px; font-weight: bold; color: #666; float: left;}\n.info_detail select{ height: 28px; float: left; padding: 4px; border: 1px solid #bbb; text-align: left; font-size: 16px;}\n.info_detail select option, .info_detail span textarea{ font-size: 16px;}\n\n\n.edit_password_btn { width: 120px; height: 36px; padding: 0; background: #fff; zoom: 1; cursor: pointer; color: #fff; font-size: 20px; font-family: \"΢ź\"; text-shadow: 0 1px 0 #fff, 0 2px 0 #333; border-radius: 4px; border: 1px solid #0095d8; border-color: #009de4 #0095d8 #0073a7; box-shadow: 0 2px 2px rgba(0, 0, 0, .15), inset 0 1px 0 rgba(255, 255, 255, .5), 0 0 15px rgba(0,0,0,.3); background: #0095d8;}\n.edit_password_btn:hover{ border-color: #00b0ff #009fe6 #0081bb; background: #009fe6; background: -webkit-gradient(linear, left top, left bottom, from(#00a3ec),to(#0093d5));}\n\n\n.edit_publish_btn { width: 120px; height: 36px; padding: 0; background: #fff; zoom: 1; cursor: pointer; color: #fff; font-size: 20px; font-family: \"΢ź\"; text-shadow: 0 1px 0 #fff, 0 2px 0 #333; border-radius: 4px; border: 1px solid #0095d8; border-color: #009de4 #0095d8 #0073a7; box-shadow: 0 2px 2px rgba(0, 0, 0, .15), inset 0 1px 0 rgba(255, 255, 255, .5), 0 0 15px rgba(0,0,0,.3); background: #0095d8;}\n.edit_publish_btn:hover{ border-color: #00b0ff #009fe6 #0081bb; background: #009fe6; background: -webkit-gradient(linear, left top, left bottom, from(#00a3ec),to(#0093d5));}"
  },
  {
    "path": "src/main/webapp/style/eu/index/embed.default.css",
    "content": "#ds-ssr{display:none !important}#ds-reset,#ds-related-reads{font-weight:normal;font-size:13px;font-size-adjust:none;color:#333;line-height:1;text-align:left}#ds-reset *,#ds-related-reads *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#ds-reset input[type=button],#ds-related-reads input[type=button],#ds-reset input[type=submit],#ds-related-reads input[type=submit],#ds-reset input[type=reset],#ds-related-reads input[type=reset],#ds-reset button,#ds-related-reads button{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#ds-reset div,#ds-related-reads div,#ds-reset ul,#ds-related-reads ul,#ds-reset ol,#ds-related-reads ol,#ds-reset li,#ds-related-reads li,#ds-reset ul li,#ds-related-reads ul li,#ds-reset ol li,#ds-related-reads ol li,#ds-reset iframe,#ds-related-reads iframe,#ds-reset h1,#ds-related-reads h1,#ds-reset h2,#ds-related-reads h2,#ds-reset h3,#ds-related-reads h3,#ds-reset h4,#ds-related-reads h4,#ds-reset h5,#ds-related-reads h5,#ds-reset h6,#ds-related-reads h6,#ds-reset p,#ds-related-reads p,#ds-reset img,#ds-related-reads img,#ds-reset blockquote,#ds-related-reads blockquote,#ds-reset a,#ds-related-reads a,#ds-reset span,#ds-related-reads span,#ds-reset pre,#ds-related-reads pre,#ds-reset code,#ds-related-reads code,#ds-reset strong,#ds-related-reads strong,#ds-reset sub,#ds-related-reads sub,#ds-reset sup,#ds-related-reads sup,#ds-reset fieldset,#ds-related-reads fieldset,#ds-reset form,#ds-related-reads form,#ds-reset label,#ds-related-reads label,#ds-reset input,#ds-related-reads input,#ds-reset textarea,#ds-related-reads textarea,#ds-reset header,#ds-related-reads header,#ds-reset section,#ds-related-reads section,#ds-reset article,#ds-related-reads article,#ds-reset select,#ds-related-reads select{border:0;padding:0;margin:0;vertical-align:baseline;font:inherit;line-height:inherit;background:none;width:auto;height:auto;float:none;overflow:visible;transition:none}#ds-reset strong,#ds-related-reads strong{font-weight:bold}#ds-reset p,#ds-related-reads p{text-indent:0;clear:none}#ds-reset span,#ds-related-reads span,#ds-reset strong,#ds-related-reads strong,#ds-reset label,#ds-related-reads label,#ds-reset input,#ds-related-reads input{display:inline;margin:0}#ds-reset textarea:focus,#ds-related-reads textarea:focus,#ds-reset input:focus,#ds-related-reads input:focus{outline:none}#ds-reset ul,#ds-related-reads ul,#ds-reset ol,#ds-related-reads ol,#ds-reset ul li,#ds-related-reads ul li,#ds-reset ol li,#ds-related-reads ol li{list-style:none;display:block}#ds-reset input,#ds-related-reads input,#ds-reset button,#ds-related-reads button{-webkit-border-radius:3px;border-radius:3px}#ds-indicator{display:none;position:fixed;z-index:99999;top:150px;left:0;padding:8px;border-bottom-right-radius:3px;border-top-right-radius:3px;width:16px;height:16px;background:#666 url(\"data:image/gif;base64,R0lGODlhEAAQAPQAAGZmZv///2lpadzc3K+vr/r6+ufn5319fZmZmfDw8Le3t8DAwHV1daOjo4eHh9LS0srKygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==\") 8px 8px no-repeat;*background-image:url(\"../images/loading.gif\");*position:absolute;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#ds-waiting{cursor:wait;display:block;width:16px;height:11px;padding:0 0 3px 5px;margin:0;background:url(\"data:image/gif;base64,R0lGODlhEAALAPQAAP///z2LqeLt8dvp7u7090GNqz2LqV+fuJ/F1IW2ycrf51aatHWswaXJ14i4ys3h6FmctUCMqniuw+vz9eHs8fb5+meku+Tu8vT4+cfd5bbT3tbm7PH2+AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA\") 0 0 no-repeat;*background-image:url(\"../images/waiting.gif\")}#ds-reset .ds-highlight{color:#d32 !important}#ds-reset .ds-rounded{-webkit-border-radius:3px;border-radius:3px}#ds-reset .ds-rounded-top{-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}#ds-reset .ds-rounded-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px}#ds-reset .ds-gradient-bg{background:url(\"../images/bg_sprites.png\") 0 -60px repeat-x}#ds-reset .ds-avatar{box-shadow:0 1px 1px rgba(255,255,255,0.75);position:relative;-webkit-border-radius:3px;border-radius:3px;background-color:#fff;float:left}#ds-reset .ds-avatar img{display:block;width:50px;height:50px;max-width:none;box-shadow:0 1px 3px rgba(0,0,0,0.22);-webkit-border-radius:3px;border-radius:3px}#ds-reset .ds-avatar .ds-service-icon{display:block;position:absolute;bottom:-4px;right:-4px}#ds-reset img.ds-smiley{margin:0;padding:0;display:inline;border:none}#ds-reset .ds-icon{vertical-align:middle;display:inline-block;overflow:hidden;background:transparent url(\"../images/Sprites_Embed.png\") no-repeat;_background-image:url(\"../images/sprites.gif\")}#ds-reset a .ds-icon{opacity:.6;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear}#ds-reset a:hover .ds-icon{opacity:1}#ds-reset .ds-service-list a{vertical-align:middle;padding-right:3px}#ds-reset .ds-service-list li:hover a{color:#333}#ds-reset .ds-service-icon,#ds-reset .ds-service-icon-grey{width:16px !important;height:16px !important;line-height:100px;display:inline-block;background:url(\"../images/service-icons-color.png?v=2\") no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\");overflow:hidden}#ds-reset .ds-service-icon-grey{background-image:url(\"../images/service-icons-grey.png\");_background-image:url(\"../images/service-icons-grey.gif\")}#ds-reset .ds-service-link{height:16px !important;line-height:16px;padding-left:20px;display:block;background:url(\"../images/service-icons-color.png?v=2\") no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\");overflow:hidden}#ds-reset .ds-weibo{background-position:0 0}#ds-reset .ds-renren{background-position:0 -32px}#ds-reset .ds-qqt{background-position:0 -64px}#ds-reset .ds-kaixin{background-position:0 -80px}#ds-reset .ds-douban{background-position:0 -96px}#ds-reset .ds-qzone{background-position:0 -128px}#ds-reset .ds-duoshuo{background-position:0 -144px}#ds-reset .ds-qq{background-position:0 -192px}#ds-reset .ds-baidu{background-position:0 -208px}#ds-reset .ds-google{background-position:0 -240px}#ds-reset .ds-weixin{background-position:0 -272px}#ds-reset .ds-wechat{background-position:0 -272px}.ds-icons-32 a{display:block;cursor:pointer;width:32px !important;height:32px !important;background:url(\"../images/icons_large.png\") no-repeat !important;overflow:hidden;text-indent:-9999px}.ds-icons-32 a.ds-weibo{background-position:-37px 0 !important}.ds-icons-32 a.ds-qzone{background-position:0 0 !important}.ds-icons-32 a.ds-qqt{background-position:-74px 0 !important}.ds-icons-32 a.ds-renren{background-position:-148px 0 !important}.ds-icons-32 a.ds-kaixin{background-position:-111px 0 !important}.ds-icons-32 a.ds-weixin{background-position:-224px 0 !important}.ds-icons-32 a.ds-wechat{background-position:-224px 0 !important}.ds-icons-32 a.ds-qq{background-position:-488px 0 !important}.ds-icons-32 a.ds-douban{background-position:-186px 0 !important}.ds-icons-32 a.ds-baidu{background-position:-262px 0 !important}#ds-reset #ds-ctx{padding:0;margin:8px 0;max-width:640px}#ds-reset #ds-ctx .ds-ctx-entry{padding:6px;margin:0;border-bottom:1px solid #e6e6e6}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a{color:#e77064}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a:hover{color:#d32}#ds-reset #ds-ctx .ds-ctx-entry .ds-avatar{margin:0;width:30px;height:30px}#ds-reset #ds-ctx .ds-ctx-entry .ds-avatar img{width:30px;height:30px;box-shadow:none}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-body{margin-left:38px}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head{position:relative;_zoom:1;line-height:1em;padding:1px 0 0;margin:0 0 .25em}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-nth{color:#999;font-size:12px;position:absolute;top:2px;right:0}#ds-reset #ds-ctx .ds-ctx-entry .ds-time{font-size:12px;*font-size:12px;margin-left:8px;color:#999;_zoom:1}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-content{position:relative;_zoom:1;padding:0;margin:0;overflow:hidden;line-height:1.5em}#ds-reset #ds-ctx .ds-ctx-entry:hover .ds-comment-actions{display:block}#ds-reset #ds-ctx .ds-comment-actions{bottom:0;right:0;line-height:18px;position:absolute;display:none;*display:block}#ds-reset #ds-ctx .ds-comment-actions a{margin:0 0 0 6px}#ds-reset.ds-touch #ds-ctx .ds-ctx-entry .ds-comment-actions{display:block}#ds-reset .ds-comment-body #ds-ctx{border-left:3px solid #ccc;background-color:rgba(0,0,0,0.03)}#ds-reset.ds-no-opacity .ds-comment-body #ds-ctx{background:#f8f8f8}#ds-reset .ds-dialog-body #ds-ctx .ds-ctx-entry:hover .ds-comment-actions{display:none}#ds-thread{clear:both;position:relative;overflow:visible;_zoom:1}#ds-thread #ds-reset a{cursor:pointer;text-decoration:none;color:#777;background-color:transparent;-webkit-transition:color .15s linear;-moz-transition:color .15s linear;transition:color .15s linear}#ds-thread #ds-reset a:hover{color:#333}#ds-thread #ds-reset ul,#ds-thread #ds-reset ul li{background:none;margin:0;padding:0}#ds-thread #ds-reset .ds-arrow{position:absolute;width:0;height:0;font-size:0 !important;line-height:0 !important;_border-right-color:#ffc0cb !important;_border-left-color:#ffc0cb !important;_filter:chroma(color=#ffc0cb) !important}#ds-thread #ds-reset .ds-arrow-down{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #fff}#ds-thread #ds-reset button{cursor:pointer;margin:0;padding:0;border-radius:0}#ds-thread #ds-reset .ds-meta{position:relative;padding:8px 0;line-height:24px;border-bottom:1px solid rgba(0,0,0,0.13)}#ds-thread #ds-reset .ds-like-tooltip{position:absolute;z-index:9999;background-color:#fcfcfc;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fcfcfc), to(#f9f9f9));background:-moz-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcfcfc), color-stop(100%, #f9f9f9));background:-webkit-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:-ms-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc',endColorstr='#f9f9f9',GradientType=0);border:1px solid #aaa;box-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 1px 0 #fff;font-size:12px;padding:8px 14px}#ds-thread #ds-reset .ds-like-tooltip ul{width:84px;float:left}#ds-thread #ds-reset .ds-like-tooltip li{line-height:16px;margin:6px 0}#ds-thread #ds-reset .ds-like-tooltip p{clear:both;margin:6px 0}#ds-thread #ds-reset .ds-like-tooltip .ds-like-tooltip-footer{text-align:right}#ds-thread #ds-reset a.ds-like-thread-button{color:#555;padding:4px 8px;border:1px solid #ccc;border-bottom-color:#aaa;box-shadow:inset 0 0 1px #fff;margin-right:15px;text-shadow:0 1px 0 #fff;background-color:#e0e0e0;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e0e0e0));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e0e0e0);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e0e0e0);background-image:-ms-linear-gradient(#fff, #fff 25%, #e0e0e0);background-image:linear-gradient(#fff, #fff 25%, #e0e0e0)}#ds-thread #ds-reset a.ds-like-thread-button .ds-icon-heart{position:relative;top:-2px;opacity:1}#ds-thread #ds-reset a.ds-like-thread-button span{color:#555}#ds-thread #ds-reset .ds-thread-cancel-like{display:none}#ds-thread #ds-reset a.ds-thread-liked{background:#e9e9e9}#ds-thread #ds-reset a.ds-thread-liked:hover .ds-thread-cancel-like{display:inline}#ds-thread #ds-reset a.ds-thread-liked:hover .ds-thread-like-text{display:none}#ds-thread #ds-reset #ds-hot-posts{border:1px solid #ccc;overflow:hidden;margin:8px 0;padding:0;_height:100%}#ds-thread #ds-reset .ds-header{font-weight:bold;font-size:14px;color:#555;line-height:30px;padding:0 12px}#ds-thread #ds-reset .ds-toolbar{position:relative;z-index:5;font-size:12px;padding:8px 0;width:100%;clear:both}#ds-thread #ds-reset .ds-toolbar:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-visitor{float:right;line-height:1.5em;margin-right:6px}#ds-thread #ds-reset .ds-account-control{float:right;position:relative;font-size:12px;cursor:pointer;text-align:right;line-height:18px;padding-bottom:3px;width:75px}#ds-thread #ds-reset .ds-account-control span{display:block;float:left;color:#999}#ds-thread #ds-reset .ds-account-control ul{display:none;position:absolute;top:19px;left:0;border:1px solid #aaa;background:#f8f8f8;box-shadow:inset 0 1px 1px #fff,0 1px 1px rgba(0,0,0,0.3);border-radius:3px;text-align:center}#ds-thread #ds-reset .ds-account-control ul li a{border-top:1px solid #fff;border-bottom:1px solid #ddd;display:block;padding:3px 10px;text-shadow:0 1px 0 #fff}#ds-thread #ds-reset .ds-account-control ul li a:hover{color:#555}#ds-thread #ds-reset .ds-account-control.ds-active span{color:#555}#ds-thread #ds-reset .ds-account-control.ds-active ul{display:block}#ds-thread #ds-reset .ds-alert{margin:.5em 0;border:1px solid #fbeed5;border-radius:3px;padding:6px 6px;color:#c09853;background-color:#fcf8e3;line-height:1.5em}#ds-thread #ds-reset .ds-login-buttons{width:100%;position:relative;padding:10px 0 6px}#ds-thread #ds-reset .ds-login-buttons p{float:left;line-height:24px;margin:0}#ds-thread #ds-reset .ds-login-buttons .ds-service-list li{float:left;height:16px;width:54px;padding:4px 0;margin:0 0 0 6px}#ds-thread #ds-reset .ds-login-buttons .ds-more-services{color:#d32 !important;line-height:16px;display:block}#ds-thread #ds-reset .ds-login-buttons .ds-more-services:hover{color:#e77064 !important}#ds-thread #ds-reset .ds-login-buttons .ds-additional-services{display:none}#ds-thread #ds-reset .ds-login-buttons .ds-social-links{float:left;width:306px}#ds-thread #ds-reset .ds-login-buttons:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset a.ds-unread-comments-count{display:none;background-color:#d32;color:#fff !important;margin-right:6px;padding:1px 5px;font-weight:bold;-webkit-border-radius:5px;border-radius:5px;box-shadow:inset 0 1px 1px rgba(255,255,255,0.4),0 1px 1px rgba(0,0,0,0.3);text-shadow:0 1px 1px rgba(0,0,0,0.3)}#ds-thread #ds-reset a.ds-unread-comments-count:hover{background:#f00}#ds-thread #ds-reset .ds-replybox{width:auto;font-size:12px;z-index:3;margin:8px 0;padding:0 0 0 60px;position:relative;_zoom:1}#ds-thread #ds-reset .ds-replybox:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-replybox .ds-avatar{position:absolute;top:0;left:0}#ds-thread #ds-reset .ds-replybox .ds-avatar img{width:50px;height:50px;visibility:visible;margin:0}#ds-thread #ds-reset .ds-inline-replybox{margin:8px 0 2px 0;padding-left:38px}#ds-thread #ds-reset .ds-inline-replybox .ds-avatar img{width:30px;height:30px;box-shadow:0 1px 2px rgba(0,0,0,0.22)}#ds-thread #ds-reset .ds-textarea-wrapper{position:relative;border:1px solid #ccc;border-bottom:none;padding-right:20px;background:#fff url(\"../images/bg_sprites.png\") 0 -90px repeat-x;overflow:hidden}#ds-thread #ds-reset .ds-textarea-wrapper textarea{box-shadow:none;-webkit-appearance:none;overflow:auto;padding:10px;height:54px;margin:0;resize:none;color:#999;width:100%}#ds-thread #ds-reset .ds-textarea-wrapper textarea:focus{color:#333}#ds-thread #ds-reset .ds-textarea-wrapper .ds-hidden-text{word-wrap:break-word;visibility:hidden;position:absolute;top:0;left:10px;right:10px}#ds-thread #ds-reset .ds-textarea-wrapper textarea,#ds-thread #ds-reset .ds-textarea-wrapper .ds-hidden-text{display:block;font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;border:none}#ds-thread #ds-reset .ds-post-toolbar{position:relative;width:100%;box-shadow:0 1px 0 rgba(255,255,255,0.6)}#ds-thread #ds-reset .ds-post-toolbar span,#ds-thread #ds-reset .ds-post-toolbar input,#ds-thread #ds-reset .ds-post-toolbar label,#ds-thread #ds-reset .ds-post-toolbar a{vertical-align:middle;width:auto}#ds-thread #ds-reset .ds-post-options{position:relative;margin-right:100px;height:30px;border:1px solid #ccc;border-right:none;border-bottom-color:#aaa;border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px}#ds-thread #ds-reset .ds-toolbar-buttons{position:absolute;top:5px;left:6px}#ds-thread #ds-reset .ds-toolbar-button{display:block;width:19px !important;height:19px;float:left;margin-right:4px;background:transparent url(\"../images/Sprites_Embed.png\") no-repeat;_background-image:url(\"../images/sprites.gif\");vertical-align:middle;opacity:.6;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear}#ds-thread #ds-reset .ds-toolbar-button:hover{opacity:1}#ds-thread #ds-reset .ds-add-image{background-position:0 -48px}#ds-thread #ds-reset .ds-add-image:hover{background-position:0 -66px}#ds-thread #ds-reset .ds-add-emote{background-position:0 -12px}#ds-thread #ds-reset .ds-add-emote:hover{background-position:0 -30px}#ds-thread #ds-reset .ds-sync{font-size:12px;color:#999;line-height:30px;position:absolute;right:5px}#ds-thread #ds-reset .ds-sync label{color:#777;cursor:pointer;-webkit-transition:color .15s linear;-moz-transition:color .15s linear;transition:color .15s linear}#ds-thread #ds-reset .ds-sync label:hover{color:#555}#ds-thread #ds-reset .ds-sync a.ds-service-icon,#ds-thread #ds-reset .ds-sync a.ds-service-icon-grey{margin:7px 2px 7px 3px}#ds-thread #ds-reset .ds-post-button{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;position:absolute;right:0;top:0;height:32px;width:100px;text-align:center;text-shadow:0 1px 0 #fff;color:#555;font-size:14px;font-weight:bold;border:1px solid #ccc;border-bottom-color:#aaa;border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fcfcfc), color-stop(25%, #fcfcfc), to(#e6e6e6));background-image:-webkit-linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:-ms-linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);-webkit-transition:all .15s linear;-moz-transition:all .15s linear;transition:all .15s linear;box-shadow:inset 0 0 1px #fff}#ds-thread #ds-reset .ds-post-button:hover{background-position:0 -15px;color:#333}#ds-thread #ds-reset .ds-post-button:active{-webkit-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)}#ds-thread #ds-reset .ds-comments-info{width:100%;font-size:13px;margin-top:10px;padding:8px 0;line-height:25px;position:relative}#ds-thread #ds-reset .ds-sort{position:absolute;right:0;top:8px}#ds-thread #ds-reset .ds-sort a{color:#999;padding:0 4px;margin:0 2px}#ds-thread #ds-reset .ds-sort a:hover{color:#333}#ds-thread #ds-reset .ds-sort a.ds-current,#ds-thread #ds-reset .ds-sort a:active{color:#d32}#ds-thread #ds-reset ul.ds-comments-tabs .ds-highlight{margin:0 2px 0 0}#ds-thread #ds-reset ul.ds-comments-tabs .ds-service-icon{vertical-align:middle;margin:0 2px 1px 0}#ds-thread #ds-reset li.ds-tab{display:inline;font-size:13px;margin:0 5px 0 0;padding:0}#ds-thread #ds-reset li.ds-tab a{text-shadow:0 1px 0 #fff;padding:3px 5px;display:inline;-webkit-border-radius:5px;border-radius:5px}#ds-thread #ds-reset li.ds-tab a.ds-current{border:1px solid #ccc;background-color:rgba(0,0,0,0.04)}#ds-thread #ds-reset li.ds-tab a:hover{background-color:rgba(0,0,0,0.04)}#ds-thread #ds-reset .ds-comments{width:100%;border-bottom:1px solid rgba(0,0,0,0.13)}#ds-thread #ds-reset .ds-comments:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset li.ds-post{width:100%;overflow:hidden;clear:both;border-top:1px solid rgba(0,0,0,0.13);margin:0;padding:0;list-style:none}#ds-thread #ds-reset li.ds-post-placeholder{text-align:center;color:#999;padding:1em 0}#ds-thread #ds-reset .ds-post-self{position:relative;padding:10px;border-top:1px solid rgba(255,255,255,0.7)}#ds-thread #ds-reset .ds-post-self:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-post-self:hover .ds-post-delete,#ds-thread #ds-reset .ds-post-self:hover .ds-post-report{display:inline-block}#ds-thread #ds-reset.ds-touch .ds-post-self .ds-post-delete,#ds-thread #ds-reset.ds-touch .ds-post-self .ds-post-report{display:inline-block}#ds-thread #ds-reset .ds-comment-body{padding-left:60px}#ds-thread #ds-reset .ds-comment-body p{font-size:13px;line-height:1.5em;margin:.5em 0;word-wrap:break-word}#ds-thread #ds-reset .ds-comment-body img{max-width:100%;vertical-align:text-bottom;box-shadow:none}#ds-thread #ds-reset .ds-comment-body embed{max-width:100%}#ds-thread #ds-reset .ds-comment-body code{display:block;font-size:12px;font-family:Monaco,Menlo,Consolas,\"Courier New\",monospace;padding:8px 12px;background-color:#f0f0f0;margin:8px 0;border-radius:3px;border:1px solid #ddd;color:#666}#ds-thread #ds-reset .ds-comment-body a{color:#777}#ds-thread #ds-reset .ds-comment-body a:hover{color:#555}#ds-thread #ds-reset a.ds-comment-context{position:relative;margin:.5em 0;color:#e77064}#ds-thread #ds-reset a.ds-comment-context:hover{color:#d32}#ds-thread #ds-reset #ds-bubble{position:absolute;background-color:#fff;-webkit-border-radius:5px;border-radius:5px;padding:10px;color:#333;border:1px solid #aaa;box-shadow:0 0 2px rgba(0,0,0,0.2);z-index:9999;font-size:13px}#ds-thread #ds-reset #ds-bubble a{color:#e77064}#ds-thread #ds-reset #ds-bubble a:hover{color:#d32}#ds-thread #ds-reset #ds-bubble p{line-height:18px}#ds-thread #ds-reset #ds-bubble .ds-arrow-border{border-top-color:#aaa;bottom:-6px}#ds-thread #ds-reset #ds-bubble .ds-arrow{left:32px;bottom:-5px}#ds-thread #ds-reset #ds-ctx-bubble{width:300px}#ds-thread #ds-reset #ds-ctx-bubble .ds-bubble-footer{padding:6px 0 0 0;line-height:18px}#ds-thread #ds-reset #ds-user-card{width:276px;min-height:50px}#ds-thread #ds-reset #ds-user-card .ds-avatar{margin-right:10px}#ds-thread #ds-reset #ds-user-card .ds-avatar img{width:50px;height:50px}#ds-thread #ds-reset #ds-user-card .ds-user-name{vertical-align:top;display:inline-block;max-width:8em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14px}#ds-thread #ds-reset #ds-user-card .ds-user-card-meta{margin:14px 0 0 62px}#ds-thread #ds-reset #ds-user-card .ds-user-description{border-top:1px dotted #ddd;margin-top:.5em;color:#aaa}#ds-thread #ds-reset #ds-user-card .ds-service-icon{margin-right:3px}#ds-thread #ds-reset .ds-comment-header{padding-top:1px}#ds-thread #ds-reset .ds-comment-footer{line-height:1.5em}#ds-thread #ds-reset .ds-comment-footer a{margin:0 6px 0 0;padding:0 6px 0 0}#ds-thread #ds-reset .ds-comment-actions a{font-size:12px;color:#999}#ds-thread #ds-reset .ds-comment-actions a .ds-icon{position:relative;top:-1px}#ds-thread #ds-reset .ds-user-name{color:#777;font-size:13px;margin-right:8px}#ds-thread #ds-reset .ds-post-liked .ds-icon-like{background-position:0 -130px}#ds-thread #ds-reset .ds-post-liked a.ds-post-likes{color:#d32}#ds-thread #ds-reset .ds-reply-active{display:block}#ds-thread #ds-reset .ds-reply-active .ds-post-reply{color:#333}#ds-thread #ds-reset .ds-reply-active .ds-post-reply .ds-icon{opacity:1}#ds-thread #ds-reset .ds-post-delete,#ds-thread #ds-reset .ds-post-report{display:none}#ds-thread #ds-reset .ds-icon-heart{width:14px;height:13px;background-position:0 -130px}#ds-thread #ds-reset .ds-icon-settings{width:12px;height:12px;margin:3px 4px 0;opacity:1}#ds-thread #ds-reset .ds-icon-like{width:14px;height:13px;background-position:0 -117px}#ds-thread #ds-reset .ds-icon-share{width:18px;height:13px;background-position:0 -234px}#ds-thread #ds-reset .ds-icon-reply{width:18px;height:13px;background-position:0 -105px}#ds-thread #ds-reset .ds-icon-delete{width:13px;height:13px;background-position:0 -176px}#ds-thread #ds-reset .ds-icon-report{width:12px;height:12px;background-position:0 -189px}#ds-thread #ds-reset .ds-time{font-size:12px;*font-size:12px;margin-right:8px;color:#999;_zoom:1}#ds-thread #ds-reset ul.ds-children{margin-left:38px}#ds-thread #ds-reset ul.ds-children .ds-avatar{width:30px;height:30px}#ds-thread #ds-reset ul.ds-children .ds-avatar img{width:30px;height:30px}#ds-thread #ds-reset ul.ds-children .ds-post-self{padding-left:0}#ds-thread #ds-reset ul.ds-children .ds-comment-body{padding-left:38px}#ds-thread #ds-reset .ds-paginator{border-bottom:1px solid rgba(0,0,0,0.13);text-align:right;padding-bottom:15px;clear:both;line-height:1em}#ds-thread #ds-reset .ds-paginator div.ds-border{border-top:1px solid rgba(255,255,255,0.7);margin-bottom:15px}#ds-thread #ds-reset .ds-paginator a{font-size:12px;margin:0 3px;padding:2px 5px;border:1px solid transparent}#ds-thread #ds-reset .ds-paginator a:hover,#ds-thread #ds-reset .ds-paginator a.ds-current{-webkit-border-radius:3px;border-radius:3px;background-color:rgba(0,0,0,0.03)}#ds-thread #ds-reset .ds-paginator a.ds-current{color:#d32;border:1px solid #ccc}#ds-thread #ds-reset .ds-powered-by{font-size:12px;text-align:right;padding:10px 0}#ds-thread #ds-reset .ds-powered-by a{color:#999;text-decoration:none}#ds-thread #ds-reset .ds-powered-by a:hover{color:#555}#ds-thread #ds-reset.ds-no-transition .ds-post-button,#ds-thread #ds-reset.ds-no-transition .ds-more a{background:url(\"../images/bg_sprites.png\") repeat-x !important}#ds-thread #ds-reset.ds-no-transition .ds-post-button:hover,#ds-thread #ds-reset.ds-no-transition .ds-more a:hover{background-position:0 -30px !important}#ds-thread #ds-reset.ds-no-transition .ds-like-thread-button{background:url(\"../images/bg_sprites.png\") repeat-x}#ds-thread #ds-reset.ds-no-opacity li.ds-post{border-top:1px solid #ddd}#ds-thread #ds-reset.ds-no-opacity .ds-comments,#ds-thread #ds-reset.ds-no-opacity .ds-paginator{border-bottom:1px solid #ddd}#ds-thread #ds-reset.ds-no-opacity .ds-post-self{border-top:none}#ds-thread #ds-reset.ds-no-opacity .ds-tab a.ds-current{background:#f8f8f8}#ds-thread #ds-reset.ds-ie6 .ds-post-report,#ds-thread #ds-reset.ds-ie6 .ds-post-delete{display:inline !important}#ds-thread #ds-reset.ds-ie6 .ds-textarea-wrapper{padding:10px 10px}#ds-thread #ds-reset.ds-ie6 .ds-textarea-wrapper textarea{width:95%;color:#333;padding:0}#ds-thread #ds-reset.ds-ie6 .ds-post{width:100%;float:left}#ds-thread #ds-reset.ds-ie6 .ds-tab a.ds-current{padding-bottom:5px}#ds-thread #ds-reset.ds-ie6 #ds-ctx-bubble .ds-arrow{bottom:-8px}#ds-thread #ds-reset.ds-ie6 #ds-ctx-bubble .ds-arrow-border{bottom:-9px}#ds-thread.ds-narrow #ds-reset .ds-post-self{padding:8px}#ds-thread.ds-narrow #ds-reset .ds-comment-body,#ds-thread.ds-narrow #ds-reset .ds-replybox{padding-left:38px}#ds-thread.ds-narrow #ds-reset .ds-avatar img{width:30px;height:30px}#ds-thread.ds-narrow #ds-reset .ds-post-button{width:70px}#ds-thread.ds-narrow #ds-reset .ds-post-options{margin-right:70px}#ds-smilies-tooltip{border:1px solid #aaa;position:absolute;width:400px;background-color:#fff;z-index:9999;box-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}#ds-smilies-tooltip a{cursor:pointer}#ds-smilies-tooltip ul{list-style-type:none;padding:0;margin:0}#ds-smilies-tooltip ul.ds-smilies-tabs{width:119px;position:absolute;top:0;left:0;height:159px;overflow-y:auto;background:#f8f8f8;border-right:1px solid #ccc;border-top-left-radius:3px;border-bottom-left-radius:3px}#ds-smilies-tooltip ul.ds-smilies-tabs li a{color:#999;padding:6px 10px;display:block;border-bottom:1px solid #ccc;background-color:#fff;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fff), to(#e9e9e9));background:-moz-linear-gradient(top, #fff 0, #e9e9e9 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(100%, #e9e9e9));background:-webkit-linear-gradient(top, #fff 0, #e9e9e9 100%);background:-ms-linear-gradient(top, #fff 0, #e9e9e9 100%);background:linear-gradient(top, #fff 0, #e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e9e9e9',GradientType=0);font-size:12px;line-height:1.3em}#ds-smilies-tooltip ul.ds-smilies-tabs li:first-child a{border-top-left-radius:3px}#ds-smilies-tooltip ul.ds-smilies-tabs li a.ds-current{color:#666;background:#e3e3e3;filter:none;box-shadow:inset 0 0 4px rgba(0,0,0,0.1)}#ds-smilies-tooltip .ds-smilies-container{padding:10px 5px;height:140px;margin-left:125px;overflow-y:auto}#ds-smilies-tooltip .ds-smilies-container li{list-style:none;float:left;width:26px;height:26px;text-align:center;cursor:pointer}#ds-smilies-tooltip .ds-smilies-container li img{visibility:visible}#ds-smilies-tooltip .ds-smilies-container li:hover{position:relative;top:-1px}#ds-wrapper{left:0;right:0;top:20%;bottom:0;width:100%;margin:auto;z-index:9999;position:fixed;_position:absolute;text-align:center;color:#777}#ds-wrapper .ds-dialog,#ds-wrapper #ds-reset.ds-dialog{margin:0 auto;text-align:left;_zoom:1;width:480px;max-width:100%}#ds-wrapper #ds-reset.ds-dialog-bind-more .ds-service-list{width:50%}#ds-wrapper #ds-reset a{cursor:pointer;text-decoration:none;color:#777}#ds-wrapper #ds-reset .ds-dialog-inner{width:100%;position:relative;border:1px solid #aaa;background:#fff url(\"../images/bg_sprites.png\") 0 -90px repeat-x;text-shadow:0 1px 0 #fff;box-shadow:inset 0 1px 1px #fff,0 2px 6px rgba(0,0,0,0.4)}#ds-wrapper #ds-reset .ds-dialog-inner .ds-unread-list{max-height:300px;overflow-y:auto}#ds-wrapper #ds-reset .ds-control-group{margin:18px 0;position:relative;padding-right:80px;max-width:166px}#ds-wrapper #ds-reset .ds-control-group input{color:#777;width:100%;font-size:13px;border:1px solid #ccc;padding:4px 80px 6px 6px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.1)}#ds-wrapper #ds-reset .ds-control-group input:focus{border-color:#08b5fb}#ds-wrapper #ds-reset .ds-control-group label{font-size:13px;color:#ccc;letter-spacing:1px;position:absolute;right:0;top:8px}#ds-wrapper #ds-reset tr{height:45px}#ds-wrapper #ds-reset button{cursor:pointer;color:#555;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);-webkit-transition:all .15s linear;-moz-transition:all .15s linear;transition:all .15s linear;border:1px solid #aaa;display:inline-block;font-size:15px;height:30px;width:100px;padding:0}#ds-wrapper #ds-reset button:hover{background-position:0 -15px;color:#333}#ds-wrapper #ds-reset button:active{top:0;-webkit-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)}#ds-wrapper #ds-reset h2{display:block;font-weight:normal;font-size:16px;margin:0 0 15px 0;color:#555}#ds-wrapper #ds-reset .ds-dialog-body{padding:30px 30px 25px;position:relative;overflow:hidden}#ds-wrapper #ds-reset .ds-icons-32{height:32px;margin-bottom:20px;overflow:hidden}#ds-wrapper #ds-reset .ds-icons-32 a{float:left;margin:0 5px 0 0}#ds-wrapper #ds-reset ul li{margin:10px 0}#ds-wrapper #ds-reset .ds-service-list{width:45%;float:left}#ds-wrapper #ds-reset .ds-service-list .ds-more-services{display:none}#ds-wrapper #ds-reset .ds-icon-ok{background-position:0 -203px;width:12px;height:12px}#ds-wrapper #ds-reset .ds-quote{margin:10px 0;padding:6px 10px;background:#f8f8f8;line-height:1.5em;font-size:12px;overflow-y:auto;max-height:180px}#ds-wrapper #ds-reset .ds-textarea-wrapper{border:1px solid #ccc;padding:0 20px 0 0;position:relative;margin:12px 0}#ds-wrapper #ds-reset .ds-textarea-wrapper textarea{width:100%;height:54px;margin:0;resize:none;padding:6px 10px;overflow:auto}#ds-wrapper #ds-reset .ds-textarea-wrapper .ds-hidden-text{top:0;left:10px;right:10px;position:absolute;visibility:hidden;word-wrap:break-word}#ds-wrapper #ds-reset .ds-textarea-wrapper textarea,#ds-wrapper #ds-reset .ds-textarea-wrapper .ds-hidden-text{font-size:13px;line-height:1.5em}#ds-wrapper #ds-reset .ds-actions{position:relative;height:30px}#ds-wrapper #ds-reset .ds-actions button{display:block;position:absolute;top:0;right:0}#ds-wrapper #ds-reset .ds-dialog-close{position:absolute;bottom:13px;right:11px;display:block;width:13px;height:13px;overflow:hidden;background:transparent url(\"../images/Sprites_Embed.png\") 0 -163px no-repeat;_background-image:url(\"../images/sprites.gif\")}#ds-wrapper #ds-reset .ds-dialog-close:hover{background-position:0 -176px}#ds-wrapper #ds-reset .ds-logo{display:inline-block;width:64px;height:21px;margin-right:10px;background:url(\"../images/logo.png\") 0 0 no-repeat}#ds-wrapper #ds-reset .ds-dialog-footer{clear:both;border-top:1px dotted #ccc;padding:10px 15px 6px}#ds-wrapper #ds-reset .ds-dialog-footer span{color:#999;position:relative;top:-6px}#ds-wrapper #ds-reset .ds-connect{display:none}#ds-wrapper #ds-reset .ds-unread-list li{position:relative;margin:0;padding:8px 0;border-top:1px solid #eee;line-height:1.5em;color:#777}#ds-wrapper #ds-reset .ds-unread-list li a{color:#d32}#ds-wrapper #ds-reset .ds-unread-list li a:hover{color:#e45c4e}#ds-wrapper #ds-reset .ds-unread-list li a[rel~=\"author\"]{color:#777}#ds-wrapper #ds-reset .ds-unread-list li .ds-delete{display:none;position:absolute;right:0;bottom:10px;text-indent:-9999px;width:14px;height:14px;overflow:hidden;background:transparent url(\"../images/delete.gif\") no-repeat scroll 0 -14px}#ds-wrapper #ds-reset .ds-unread-list li:hover .ds-delete{display:block}#ds-wrapper #ds-reset.ds-touch .ds-unread-list li .ds-delete{display:block}#ds-wrapper.ds-no-transition #ds-reset button{background:url(\"../images/bg_sprites.png\") repeat-x !important}#ds-wrapper.ds-no-transition #ds-reset button:hover{background-position:0 -30px !important}#ds-wrapper.ds-no-transition #ds-reset.ds-dialog{background-image:url(\"../images/black.png\")}#ds-wrapper.ds-ie6 #ds-reset{margin-top:0}#ds-wrapper.ds-ie6 #ds-reset .ds-dialog-footer span{top:-3px}#ds-notify{position:fixed;*position:absolute;z-index:9999;max-width:144px;_width:130px;display:block;float:none;padding:8px 12px;background-color:#fff;-webkit-border-radius:5px;border-radius:5px;box-shadow:0 1px 1px rgba(0,0,0,0.25);border:1px solid #aaa}#ds-notify #ds-reset{line-height:14px}#ds-notify #ds-reset a.ds-logo{width:18px;height:14px;background:transparent url(\"../images/Sprites_Embed.png\") 0 -220px no-repeat;_background-image:url(\"../images/sprites.gif\");position:absolute;display:block;top:8px;left:12px}#ds-notify #ds-reset span.ds-unread-count{font-weight:bold;color:#e32}#ds-notify #ds-reset ul.ds-notify-unread{line-height:150%;display:inline-block;margin:0 0 0 22px;padding:0}#ds-notify #ds-reset ul.ds-notify-unread li a{color:#d32;text-decoration:none}#ds-recent-comments li.ds-comment{list-style-type:none;position:relative !important;margin:0 !important;padding:6px 0 !important;_zoom:1;border-top:1px solid #dcdcdc;word-wrap:break-word;font-size:13px}#ds-recent-comments li.ds-comment a{display:inline}#ds-recent-comments li.ds-comment div{padding:0;margin:0}#ds-recent-comments li.ds-comment .ds-avatar{position:absolute !important;top:6px !important;left:0 !important}#ds-recent-comments li.ds-comment .ds-avatar a{display:block}#ds-recent-comments li.ds-comment .ds-meta{*margin-left:-15px;_margin-left:0}#ds-recent-comments li.ds-comment .ds-time{font-size:10px;color:#999;margin-left:5px}#ds-recent-comments li.ds-comment .ds-thread-title{margin:0 0 4px 0;line-height:13px;font-size:12px;color:#777}#ds-recent-comments li.ds-comment .ds-thread-title a{font-size:12px}#ds-recent-comments li.ds-comment .ds-excerpt{line-height:18px}#ds-recent-comments li.ds-comment.ds-show-avatars{padding-left:38px !important}#ds-recent-visitors .ds-avatar{display:inline;padding:0 !important;margin:4px !important}#ds-login .ds-icons-32 a{float:left;margin:0 5px 0 0}#ds-share #ds-reset.ds-share-aside-left ul,#ds-share #ds-reset.ds-share-aside-right ul,#ds-share #ds-reset.ds-share-inline ul{list-style:none;margin:0;padding:0;*zoom:1}#ds-share #ds-reset.ds-share-aside-left ul:after,#ds-share #ds-reset.ds-share-aside-right ul:after,#ds-share #ds-reset.ds-share-inline ul:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-share #ds-reset.ds-share-aside-left ul li,#ds-share #ds-reset.ds-share-aside-right ul li,#ds-share #ds-reset.ds-share-inline ul li{list-style:none;float:left;font-size:14px;padding:7px 0}#ds-share #ds-reset.ds-share-inline{position:relative}#ds-share #ds-reset.ds-share-inline ul li{margin-left:8px}#ds-share #ds-reset.ds-share-inline ul li:first-child{margin-left:0}#ds-share #ds-reset.ds-share-aside-left,#ds-share #ds-reset.ds-share-aside-right{position:fixed;top:50%;z-index:1000;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;transition:all .2s linear}#ds-share #ds-reset.ds-share-aside-left{left:0;-webkit-transform:translate(-100%, -50%);-ms-transform:translate(-100%, -50%);-o-transform:translate(-100%, -50%);transform:translate(-100%, -50%)}#ds-share #ds-reset.ds-share-aside-right{right:0;-webkit-transform:translate(100%, -50%);-ms-transform:translate(100%, -50%);-o-transform:translate(100%, -50%);transform:translate(100%, -50%)}#ds-share #ds-reset .ds-share-aside-toggle{width:28px;padding:23px 2px;background:#e94c4c;color:#fff;position:absolute;top:0;text-align:center;font-size:16px;font-weight:bolder;cursor:pointer}#ds-share #ds-reset.ds-share-aside-left .ds-share-aside-toggle{right:-32px;border-top-right-radius:3px;border-bottom-right-radius:3px}#ds-share #ds-reset.ds-share-aside-left .ds-share-icons{border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}#ds-share #ds-reset.ds-share-aside-right .ds-share-aside-toggle{left:-32px;border-top-left-radius:3px;border-bottom-left-radius:3px}#ds-share #ds-reset.ds-share-aside-right .ds-share-icons{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#ds-share #ds-reset.slide-to-left{-webkit-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);transform:translate(0, -50%)}#ds-share #ds-reset.slide-to-right{-webkit-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);transform:translate(0, -50%)}#ds-share #ds-reset .ds-share-icons-32 .ds-weibo,#ds-share #ds-reset .ds-share-icons-32 .ds-sohu,#ds-share #ds-reset .ds-share-icons-32 .ds-renren,#ds-share #ds-reset .ds-share-icons-32 .ds-netease,#ds-share #ds-reset .ds-share-icons-32 .ds-qqt,#ds-share #ds-reset .ds-share-icons-32 .ds-kaixin,#ds-share #ds-reset .ds-share-icons-32 .ds-douban,#ds-share #ds-reset .ds-share-icons-32 .ds-msn,#ds-share #ds-reset .ds-share-icons-32 .ds-qzone,#ds-share #ds-reset .ds-share-icons-32 .ds-duoshuo,#ds-share #ds-reset .ds-share-icons-32 .ds-360,#ds-share #ds-reset .ds-share-icons-32 .ds-alipay,#ds-share #ds-reset .ds-share-icons-32 .ds-qq,#ds-share #ds-reset .ds-share-icons-32 .ds-baidu,#ds-share #ds-reset .ds-share-icons-32 .ds-taobao,#ds-share #ds-reset .ds-share-icons-32 .ds-google,#ds-share #ds-reset .ds-share-icons-32 .ds-more,#ds-share #ds-reset .ds-share-icons-32 .ds-wechat,#ds-share #ds-reset .ds-share-icons-32 .ds-diandian,#ds-share #ds-reset .ds-share-icons-32 .ds-huaban,#ds-share #ds-reset .ds-share-icons-32 .ds-duitang,#ds-share #ds-reset .ds-share-icons-32 .ds-youdao,#ds-share #ds-reset .ds-share-icons-32 .ds-pengyou,#ds-share #ds-reset .ds-share-icons-32 .ds-facebook,#ds-share #ds-reset .ds-share-icons-32 .ds-twitter,#ds-share #ds-reset .ds-share-icons-32 .ds-linkedin,#ds-share #ds-reset .ds-share-icons-32 .ds-meilishuo,#ds-share #ds-reset .ds-share-icons-32 .ds-mogujie{height:32px;width:32px;text-decoration:none;color:#999;display:block;overflow:hidden;background-image:url(\"../images/service-icons-color-32.png\");background-repeat:no-repeat;_background-image:url(\"../images/service-icons-color-32.gif\")}#ds-share #ds-reset .ds-share-icons-32 .ds-weibo{background-position:0 0}#ds-share #ds-reset .ds-share-icons-32 .ds-sohu{background-position:0 -32px}#ds-share #ds-reset .ds-share-icons-32 .ds-renren{background-position:0 -64px}#ds-share #ds-reset .ds-share-icons-32 .ds-netease{background-position:0 -96px}#ds-share #ds-reset .ds-share-icons-32 .ds-qqt{background-position:0 -128px}#ds-share #ds-reset .ds-share-icons-32 .ds-kaixin{background-position:0 -160px}#ds-share #ds-reset .ds-share-icons-32 .ds-douban{background-position:0 -192px}#ds-share #ds-reset .ds-share-icons-32 .ds-msn{background-position:0 -224px}#ds-share #ds-reset .ds-share-icons-32 .ds-qzone{background-position:0 -256px}#ds-share #ds-reset .ds-share-icons-32 .ds-duoshuo{background-position:0 -288px}#ds-share #ds-reset .ds-share-icons-32 .ds-360{background-position:0 -320px}#ds-share #ds-reset .ds-share-icons-32 .ds-alipay{background-position:0 -352px}#ds-share #ds-reset .ds-share-icons-32 .ds-qq{background-position:0 -384px}#ds-share #ds-reset .ds-share-icons-32 .ds-baidu{background-position:0 -416px}#ds-share #ds-reset .ds-share-icons-32 .ds-taobao{background-position:0 -448px}#ds-share #ds-reset .ds-share-icons-32 .ds-google{background-position:0 -480px}#ds-share #ds-reset .ds-share-icons-32 .ds-more{background-position:0 -512px}#ds-share #ds-reset .ds-share-icons-32 .ds-wechat{background-position:0 -544px}#ds-share #ds-reset .ds-share-icons-32 .ds-diandian{background-position:0 -576px}#ds-share #ds-reset .ds-share-icons-32 .ds-huaban{background-position:0 -608px}#ds-share #ds-reset .ds-share-icons-32 .ds-duitang{background-position:0 -640px}#ds-share #ds-reset .ds-share-icons-32 .ds-youdao{background-position:0 -672px}#ds-share #ds-reset .ds-share-icons-32 .ds-pengyou{background-position:0 -704px}#ds-share #ds-reset .ds-share-icons-32 .ds-facebook{background-position:0 -736px}#ds-share #ds-reset .ds-share-icons-32 .ds-twitter{background-position:0 -768px}#ds-share #ds-reset .ds-share-icons-32 .ds-linkedin{background-position:0 -800px}#ds-share #ds-reset .ds-share-icons-32 .ds-meilishuo{background-position:0 -832px}#ds-share #ds-reset .ds-share-icons-32 .ds-mogujie{background-position:0 -864px}#ds-share #ds-reset .ds-share-icons-32 .flat{background-image:url(\"../images/service-icons-color-flat-32.png\");_background-image:url(\"../images/service-icons-color-flat-32.gif\")}#ds-share #ds-reset .ds-share-icons-16 .ds-weibo,#ds-share #ds-reset .ds-share-icons-16 .ds-sohu,#ds-share #ds-reset .ds-share-icons-16 .ds-renren,#ds-share #ds-reset .ds-share-icons-16 .ds-netease,#ds-share #ds-reset .ds-share-icons-16 .ds-qqt,#ds-share #ds-reset .ds-share-icons-16 .ds-kaixin,#ds-share #ds-reset .ds-share-icons-16 .ds-douban,#ds-share #ds-reset .ds-share-icons-16 .ds-msn,#ds-share #ds-reset .ds-share-icons-16 .ds-qzone,#ds-share #ds-reset .ds-share-icons-16 .ds-duoshuo,#ds-share #ds-reset .ds-share-icons-16 .ds-360,#ds-share #ds-reset .ds-share-icons-16 .ds-alipay,#ds-share #ds-reset .ds-share-icons-16 .ds-qq,#ds-share #ds-reset .ds-share-icons-16 .ds-baidu,#ds-share #ds-reset .ds-share-icons-16 .ds-taobao,#ds-share #ds-reset .ds-share-icons-16 .ds-google,#ds-share #ds-reset .ds-share-icons-16 .ds-more,#ds-share #ds-reset .ds-share-icons-16 .ds-wechat,#ds-share #ds-reset .ds-share-icons-16 .ds-diandian,#ds-share #ds-reset .ds-share-icons-16 .ds-huaban,#ds-share #ds-reset .ds-share-icons-16 .ds-duitang,#ds-share #ds-reset .ds-share-icons-16 .ds-youdao,#ds-share #ds-reset .ds-share-icons-16 .ds-pengyou,#ds-share #ds-reset .ds-share-icons-16 .ds-facebook,#ds-share #ds-reset .ds-share-icons-16 .ds-twitter,#ds-share #ds-reset .ds-share-icons-16 .ds-linkedin,#ds-share #ds-reset .ds-share-icons-16 .ds-meilishuo,#ds-share #ds-reset .ds-share-icons-16 .ds-mogujie{line-height:16px;padding-left:20px;text-decoration:none;color:#999;display:block;overflow:hidden;background-image:url(\"../images/service-icons-color.png?v=2\");background-repeat:no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\")}#ds-share #ds-reset .ds-share-icons-16 .ds-weibo{background-position:0 0}#ds-share #ds-reset .ds-share-icons-16 .ds-sohu{background-position:0 -16px}#ds-share #ds-reset .ds-share-icons-16 .ds-renren{background-position:0 -32px}#ds-share #ds-reset .ds-share-icons-16 .ds-netease{background-position:0 -48px}#ds-share #ds-reset .ds-share-icons-16 .ds-qqt{background-position:0 -64px}#ds-share #ds-reset .ds-share-icons-16 .ds-kaixin{background-position:0 -80px}#ds-share #ds-reset .ds-share-icons-16 .ds-douban{background-position:0 -96px}#ds-share #ds-reset .ds-share-icons-16 .ds-msn{background-position:0 -112px}#ds-share #ds-reset .ds-share-icons-16 .ds-qzone{background-position:0 -128px}#ds-share #ds-reset .ds-share-icons-16 .ds-duoshuo{background-position:0 -144px}#ds-share #ds-reset .ds-share-icons-16 .ds-360{background-position:0 -160px}#ds-share #ds-reset .ds-share-icons-16 .ds-alipay{background-position:0 -176px}#ds-share #ds-reset .ds-share-icons-16 .ds-qq{background-position:0 -192px}#ds-share #ds-reset .ds-share-icons-16 .ds-baidu{background-position:0 -208px}#ds-share #ds-reset .ds-share-icons-16 .ds-taobao{background-position:0 -224px}#ds-share #ds-reset .ds-share-icons-16 .ds-google{background-position:0 -240px}#ds-share #ds-reset .ds-share-icons-16 .ds-more{background-position:0 -256px}#ds-share #ds-reset .ds-share-icons-16 .ds-wechat{background-position:0 -272px}#ds-share #ds-reset .ds-share-icons-16 .ds-diandian{background-position:0 -288px}#ds-share #ds-reset .ds-share-icons-16 .ds-huaban{background-position:0 -304px}#ds-share #ds-reset .ds-share-icons-16 .ds-duitang{background-position:0 -320px}#ds-share #ds-reset .ds-share-icons-16 .ds-youdao{background-position:0 -336px}#ds-share #ds-reset .ds-share-icons-16 .ds-pengyou{background-position:0 -352px}#ds-share #ds-reset .ds-share-icons-16 .ds-facebook{background-position:0 -368px}#ds-share #ds-reset .ds-share-icons-16 .ds-twitter{background-position:0 -384px}#ds-share #ds-reset .ds-share-icons-16 .ds-linkedin{background-position:0 -400px}#ds-share #ds-reset .ds-share-icons-16 .ds-meilishuo{background-position:0 -416px}#ds-share #ds-reset .ds-share-icons-16 .ds-mogujie{background-position:0 -432px}#ds-share #ds-reset .ds-share-icons-16 .flat{background-image:url(\"../images/service-icons-color-flat.png\");_background-image:url(\"../images/service-icons-color-flat.gif\")}#ds-share #ds-reset .ds-share-icons{border:1px solid #ccc;background:#fff;border-radius:3px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner{width:208px;padding:10px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul{margin:0;padding:0}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li{padding-left:8px;margin-left:0;width:92px;font-size:12px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li:hover{border-radius:3px;background:#eee}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li:nth-child(even){margin-left:8px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-footer{text-align:right;line-height:30px;font-size:12px;color:#ccc;background-color:#eee;padding-right:10px}#ds-share #ds-reset .ds-share-icons-more{top:30px;left:0;position:absolute;z-index:1000}#ds-share.ds-no-transition #ds-reset.ds-share-aside-left{left:-229px;transform:none}#ds-share.ds-no-transition #ds-reset.ds-share-aside-right{right:-229px;transform:none}#ds-share .ds-share-aside-left,#ds-share .ds-share-aside-right{width:230px;_position:absolute;_bottom:auto;_top:expression(eval(document.documentElement.scrollTop+200))}#ds-share .ds-share-aside-left{_left:expression(eval(document.documentElement.scrollLeft-230))}#ds-share .ds-share-aside-right{_right:auto;_left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0 - 230))}#ds-related-reads .ds-reads-expand{margin:1rem 0 0}#ds-related-reads .ds-reads-expand h2,#ds-related-reads .ds-reads-expand .ds-header{display:inline-block}#ds-related-reads .ds-reads-expand .ds-header{border-left:6px solid #f94a47;padding-left:9px;font-size:18px;line-height:1.5;color:#999}#ds-related-reads .ds-reads-expand section{margin-top:15px}#ds-related-reads .ds-reads-expand .ds-reads-item{display:block;-webkit-user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);margin-bottom:16.5px}#ds-related-reads .ds-reads-expand .ds-reads-item:last-child{margin-bottom:0}#ds-related-reads .ds-reads-expand .ds-reads-item:after{content:\"\";display:table;clear:both}#ds-related-reads .ds-reads-expand h2,#ds-related-reads .ds-reads-expand .ds-reads-title{font-size:18px;font-weight:bold;color:#333;line-height:1.125}#ds-related-reads .ds-reads-expand .ds-reads-item:visited h2,#ds-related-reads .ds-reads-expand .ds-reads-item:visited .ds-reads-title{color:#999}#ds-related-reads .ds-reads-expand .ds-reads-pics{margin-top:12px}#ds-related-reads .ds-reads-expand ul:after{content:\"\";display:table;clear:both}#ds-related-reads .ds-reads-expand li{float:left;box-sizing:border-box;width:33.3%;position:relative;overflow:hidden}#ds-related-reads .ds-reads-expand li:first-child{border-right:3px solid transparent}#ds-related-reads .ds-reads-expand li:last-child{border-left:3px solid transparent}#ds-related-reads .ds-reads-expand li:nth-child(2){border-right:1.5px solid transparent;border-left:1.5px solid transparent}#ds-related-reads .ds-reads-expand .ds-reads-pic-wrap{position:absolute;top:0;left:0;bottom:0;right:0;background-position:center center;background-size:cover;background-repeat:none}#ds-related-reads .ds-reads-expand .ds-reads-dumb{width:100%;margin-top:65.26%}#ds-related-reads .ds-reads-expand .ds-reads-info{margin-top:12px}#ds-related-reads .ds-reads-expand .ds-reads-info span{vertical-align:middle;font-size:12px;color:#999;display:inline-block;line-height:18px;height:18px}#ds-related-reads .ds-reads-expand .ds-reads-info span.ds-reads-app-special{width:7em;background:#f94a47;color:#fff;text-align:center;border-radius:3px;margin-right:3px}#ds-related-reads .ds-reads-expand .ds-reads-info span.ds-reads-from{margin-right:9px}#ds-related-reads .ds-reads-expand .ds-reads-desc{float:left;width:66.6%}#ds-related-reads .ds-reads-expand .ds-reads-desc .ds-reads-title{display:-webkit-box;display:box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;box-orient:vertical;line-height:1.125em;-webkit-line-clamp:2}#ds-related-reads .ds-reads-expand .ds-reads-desc.ds-reads-only{float:none;width:100%}#ds-related-reads .ds-reads-expand .ds-reads-pic-right{float:left;width:33.3%;position:relative;border-left:3px solid transparent;box-sizing:border-box;overflow:hidden}#ds-related-reads .ds-reads-expand .ds-reads-pic-right .ds-reads-vid-info{position:absolute;height:16px;font-size:10px;bottom:0;right:0;padding:4px 8px 4px 30px;z-index:1;color:#fff;background:rgba(0,0,0,0.5) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAkCAYAAADPRbkKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZVJREFUWMNj+P//P8NQxgyjHhhEHmAF4lIgvgrEP//TB3wH4tNAnAjEjJR4gA2Id/8fWDCfHE/AGDX/BwcII9LhoBjbAsR+MIFbSIZMBWJuOqVhISDehGT3VgLqOYB4DpL6jzCJP0iCSnTOiM5Idl/Co04OiE+hRxlMEhnI0dkDNkR4wAmIX2FLc4PBA6JA/AEpIyPLgTJ1CVoK+TvYPADC0kDsAsQsSGI8QLwKzW0vgNh3MHoAHatD6yNkcAzqUf7B7gF/UOmC5qZpQMwOlR+0HmAG4hYg/odWUyegqRuUHmjAkmQeALERFrWDzgOGWEpHULNGGId6/sFcD4CKyDZocmIYih64RIT6UQ+MemDUA0PEA2pAPBOIU9F6akPGA1uRxFdCG3dDygPT0dx1BRorQ8YD7Fg8Aeo3xA61TJwEbdT9H6w9MmJKIWMgfojPA0OhUy8CxHtweeA22rAK1yAdVgE18jqR+gxvh+rAljcQLwRix2EztAgb3C0D4mtA/ItOjv4BxGegJQ1Fg7uj8wOjHiATAwCwU/nx3nM/GAAAAABJRU5ErkJggg==) no-repeat;background-position:8px center;background-size:16px;line-height:1.5}"
  },
  {
    "path": "src/main/webapp/style/eu/index/expert.css",
    "content": ".searchexpert{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searchexpert input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n\n\n.categorySearch { margin-top: 20px; border: 1px solid #19840E; padding: 5px; width: 220px;}\n.categoryHead { border-bottom: solid 1px #89CDAC;}\n.categoryHead span b{ font-size: 18px;}\ntable.categoryList tr{ height: 30px; overflow: hidden;}\ntable.categoryList tr td{ vertical-align: middle;}\ntable.categoryList span.categoryicon{ display: block; width: 16px; height:16px; background: url(\"../images/index/category_icon.png\") no-repeat;}\ntable.categoryList a { cursor: pointer;}\n\n\n\n.expertlist{ width:680px;}\n.expertlist ul li .pic{  float:left; display:block; overflow:hidden;}\n.expertlist li .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em; }\n.expertlist li a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n.expertlist ul li p{ font-size:12px; color:#999;}\n.expertlist ul li{ width:670px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.expertlist img { width: 150px !important; height: 150px !important; float: left; border-radius: 4px; margin: 1px 10px 5px 0;}\n.expertlist .expertname { font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\"; font-size:16px;}\n.expertlist .expertcontent { font-size: 13px; color: #888;}\n\n.expertlist table{}\n.expertlist table tr{ height: 32px; line-height: 32px;}\n.expertlist table a{ line-height: 32px;}\n\n\n.articletitle{ width: 100%; border-bottom: dashed #D5D5D5 1px; padding 10px; display: block; text-align: center;}\n.articletitle .title{ font-size: 28px; line-height: 1.5em; color: #333; font-weight: bold;}\n.articletitle .time{ font-size: 18px; line-height: 2em; color: #333;}\n\n.news_model ul li{ width: 256px; float: left; padding: 4px 0; border-bottom: dashed #D5D5D5 1px; }\n.news_model ul li a { font-size: 12px; color: #333; text-decoration: none; float: left;}\n.news_model ul li .time { float: right; width: 50px; }"
  },
  {
    "path": "src/main/webapp/style/eu/index/information.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searchdate{ position: relative; margin-bottom: 10px;}\n.searchdate input{ width: 150px; outline: none;}\n\n\n.informationlist{ width:630px;}\n.informationlist li .time{ float: right; width: 150px; font-size: 14px; line-height: 2em; color: #eb302f; margin-top: 4px; }\n.informationlist li a{ font-size: 16px;line-height: 2em;color: #333;text-decoration: none;float: left;}\n.informationlist ul li{ width:620px;float:left; padding: 10px 0; border-bottom: dashed #D5D5D5 1px;}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/index/knowledgedata.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.knowledgecontent{ width: 960px; height: auto; padding: 20px 0; margin: 0 auto; overflow: hidden;}\n.knowledgecontent .widget{ width: 960px;}\n\n.selectknowledge{ width: 960px; height: 41px; background: url(\"../images/index/basis.png\") no-repeat; position:relative}\n.selectknowledge ul{ width: 960px; height: 41px; display: block; list-style: none; padding: 0px;}\n.selectknowledge ul li{ float: left; width: 145px; height: 41px; display: block; position: relative;  margin-top: -5px;  cursor: pointer;}\n.selectknowledge .itemlabel{ width: 145px; height: 41px; z-index: -999; background: url(\"../images/index/label_s.png\") no-repeat; position: relative;}\n.selectknowledge .selectedlabel1{ background: url(\"../images/index/label1.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel2{ background: url(\"../images/index/label2.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel3{ background: url(\"../images/index/label3.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel4{ background: url(\"../images/index/label4.png\") no-repeat; z-index: 100;}\n.selectknowledge .searchknowledge{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: absolute; top: -3px; right: 0px; cursor: pointer;}\n.selectknowledge .searchknowledge input{ width: 210px; height: 35px; border: 0px transparent; padding: 3px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n\n.knowledgelist ul li{ float: left; width:100%; padding:10px 0; border-bottom: dashed #D5D5D5 1px;}\n.knowledge_title{ color:  #259; font-size:14px; display:block; width:100%;}\n.knowledge_expandable{ margin-top:5px; font-size:13px; line-height: 1.5;color:#999;cursor: pointer;}\n.knowledge_expandable img{ width:98px !important; height:73px !important; float:left; border-radius: 4px;margin: 1px 10px 5px 0; position: inherit !important;}\n.knowledge_expandable .toggle-expand{display: inline-block; padding: 0 3px; color: #0c5897; border-radius: 2px; font-size: .9em;}\n.knowledge_collapse{ color: #fff; float:right; z-index: 1; margin: 0; background-color: #81baeb; padding: 1px 6px; border-radius: 3px; cursor: pointer;opacity: 0.9;border: 0;}\n.knowledge_collapse i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon2.png) !important;background-repeat: no-repeat;margin-right: 5px; background-position: -70px -38px; width: 8px; height: 9px;}\n.knowledge_content{color: #333; margin: 10px 0px; line-height: 20px;}\n.knowledge_actions{ margin-top:3px; display:block;}\n.knowledge_actions a{ margin: 0 5px;}\n.knowledge_actions .highlight{ color: red; padding: 0 2px;}\n.knowledge_actions a{text-shadow: 0 1px 0 #fff;display: inline;text-decoration: none;color: #777;}\n\n\n.knowledgecategory { position:relative; width:950px; text-align:center;overflow: hidden; border: 2px dashed #89CDAC; margin: 0 auto;}\n.knowledgecategory ul { float:left; left:50%; padding: 8px 0px; position: relative; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li { float: left; position:relative; right:50%; text-align: center; list-style-type: none; position: relative; padding: 0px 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li a{ border: 1px solid #ccc; padding: 5px 10px; text-decoration: none; color: #666; font-family: arial, verdana, tahoma; font-size: 11px; display: inline-block; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li a:hover{ background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n.knowledgecategory li a.selected{ background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n\n.knowledgecategory div.separate { clear: both; border: 1px dashed #89CDAC;}\n\n.knowledgecategory div.categoryname { position: absolute; margin-top: 10px; left: 10px;color: #666;font-family: '微软雅黑', '宋体', 'Times New Roman';}\n\n\n.tree ul { padding-top: 20px; position: relative; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.tree li { float: left; text-align: center; list-style-type: none; position: relative; padding: 20px 5px 0 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n/*We will use ::before and ::after to draw the connectors*/\n.tree li::before, .tree li::after{ content: ''; position: absolute; top: 0; right: 50%; border-top: 1px solid #ccc; width:50%; height: 20px;}\n.tree li::after{ right: auto; left: 50%; border-left: 1px solid #ccc;}\n/*We need to remove left-right connectors from elements without \nany siblings*/\n.tree li:only-child::after, .tree li:only-child::before { display: none;}\n/*Remove space from the top of single children*/\n.tree li:only-child{ padding-top: 0;}\n/*Remove left connector from first child and \nright connector from last child*/\n.tree li:first-child::before, .tree li:last-child::after{ border: 0 none;}\n/*Adding back the vertical connector to the last nodes*/\n.tree li:last-child::before{ border-right: 1px solid #ccc; border-radius: 0 5px 0 0; -webkit-border-radius: 0 5px 0 0; -moz-border-radius: 0 5px 0 0;}\n.tree li:first-child::after{ border-radius: 5px 0 0 0; -webkit-border-radius: 5px 0 0 0; -moz-border-radius: 5px 0 0 0;}\n/*Time to add downward connectors from parents*/\n.tree ul ul::before{ content: ''; position: absolute; top: 0; left: 50%; border-left: 1px solid #ccc; width: 0; height: 20px;}\n.tree li a{ border: 1px solid #ccc; padding: 5px 10px; text-decoration: none; color: #666; font-family: arial, verdana, tahoma; font-size: 11px; display: inline-block; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n/*Time for some hover effects*/\n/*We will apply the hover effect the the lineage of the element also*/\n.tree li a:hover, .tree li a:hover+ul li a { background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n.tree li a.selectedchild { background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n/*Connector styles on hover*/\n.tree li a:hover+ul li::after, \n.tree li a:hover+ul li::before, \n.tree li a:hover+ul::before, \n.tree li a:hover+ul ul::before{ border-color:  #94a0b4;}\n"
  },
  {
    "path": "src/main/webapp/style/eu/index/login.css",
    "content": ".login{ margin: 0px; padding: 100px 0 0 0; background: #F8FFFD;}\n\n.loginform{ margin: 0px auto; width:326px; height: 292px; background:url(\"../images/index/Group.png\") no-repeat;}\n.loginform label{ font-family: \"΢ź\", \"\", \"Times New Roman\"; font-size: 13px; font-weight: 600;}\n.loginform input{ margin-top: 5px; width: 250px; height: auto; font-size: 13px; padding: 2px 5px; vertical-align: middle; line-height: 20px;}\n\n.username{ display: block; margin: 0px auto; width: 260px; padding-top: 85px;}\n.password{ display: block; margin: 0px auto; width: 260px; margin-top: 15px;}\n.button{ display: block; margin-top: 20px;}\n.forgetpassword{ color: #7c7c7c; text-decoration: none; float: right; font-size: 13px; font-weight: 400;}\n\n.Login_Button{width: 78px; height: 43px; background:url(\"../images/index/login_b.png\"); cursor: pointer; margin-left: 20px; float: left; }\n.Login_Button:hover{background:url(\"../images/index/login_bs.png\");}\n.Register_Button{width: 173px; height: 43px; background:url(\"../images/index/register_e.png\"); cursor: pointer; margin-left: 25px; float: left;}\n.Register_Button:hover{background:url(\"../images/index/register_es.png\");}"
  },
  {
    "path": "src/main/webapp/style/eu/index/performance.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n\n.performancelist{ width:630px; margin: 10px 0px; border-bottom: dashed 1px #CCCCCC; }\n.performancelist ul li .pic{ width: 120px; height: 155px; float: left; display: block; overflow: hidden;}\n.performancelist ul li .pic img{ width: 120px; height: 155px; border: none;}\n.performancelist ul li  .performance_title{ float: left;display: block; width: 164px; margin-left: 10px;}\n.performancelist li { float:left; display:block; margin-left:10px; overflow:hidden; height:16px;width: 320px; margin-right: 10px;}\n.performancelist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.performancelist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.performancelist .loop_big_caj_nav{ width: 380px; margin: 10px 0px;}\n.performancelist .widge_hd p{ margin: 0px;}\n.performancelist .performance_title{ margin-left: 150px; font-size: 16px; line-height: 25px;}\n.performancelist .performance_days{ margin-left: 5px;line-height: 25px;font-size: 16px;color: red;}\n.performancelist ul li .del_btn{ width: 27px; display: block; position: absolute; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\n.performancelist ul li i.del_icon { width: 27px;height: 27px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -12px -168px; position: absolute; left: 0px;}\n\n\n.performancelist2{ width: 660px; height: auto; padding: 10px; }\n.performancelist2 ul{ padding: 10px 0 0 0!important; float: left;}\n.performancelist2 ul li{ width: 200px; height: 190px; margin: 7px 10px; overflow: hidden; float: left; position: relative;}\n.performancelist2 ul li img{ width: 100%; height: 100%;}\n.performancelist2 ul li .del_btn{ width: 27px; display: block; position: absolute; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\n.performancelist2 ul li i.del_icon { width: 27px;height: 27px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -12px -168px; position: absolute; left: 0px;}\n\n.performancelist2 .dateselect a.date { font-size: 12px; margin: 2px; padding: 2px 5px; border: 1px solid #ccc; cursor: pointer; text-decoration: none; color: #777; border-radius: 3px; float: left;}\n.performancelist2 .dateselect a.emptydate { color: red !important; border: 1px solid red !important;}\n.performancelist2 .dateselect a:hover{ background-color: #89CDAC;}\n.performancelist2 .dateselect a.selected{ background-color: #89CDAC;}\n\n.performancedetail ul li{ width: 100%; margin: 3px 0px;}\n.performancedetail ul li span{ display: block;}"
  },
  {
    "path": "src/main/webapp/style/eu/index/personalquestionlist.css",
    "content": ".personaltabs { width: 100%; outline: 0;}\n.personaltabs .personal_message_head{ margin: 0 auto; padding: 0; width: 350px; border: 1px solid #ABE9F1; border-radius: 10px; box-shadow: 0 1px 4px rgba(0,0,0,.3);}\n.personal_message_container{ outline: 0;}\n\n.personal_message_item { float: left; width: 50%; text-align: center; vertical-align: middle; position: relative; cursor: pointer; background: 0 0; border: 0; outline: 0;}\nbutton.personal_message_item{ padding: 0; line-height: 1.7; border-radius: 10px;}\n.personal_message_item .icon { position: relative; width: 22px; line-height: 40px; margin: 9px; opacity: .6; font-size: 14pt; font-weight: bold; color: #11798C;}\n.personal_message_item.current{ background-color: #40ADAD; box-shadow: 0 1px 3px rgba(0,0,0,.3);}\n.personal_message_item.current span{ color: white;}\n\n.personal_message_border{ height: 3px; width: 100%; position: relative; background: linear-gradient(to right,rgba(250,250,250,.1) 0,rgba(240,240,240,.8) 1%,#ddd 4%,#ddd 96%,rgba(240,240,240,.8) 99%,rgba(250,250,250,.1) 100%); box-shadow: 0 1px 1px rgba(0,0,0,.05);}\n\n.clearfix:before, .clearfix:after { display: table; content: \"\";}\n.clearfix:after { clear: both;}\n\n.personal_message_frame{ width: 100%; position: relative;}"
  },
  {
    "path": "src/main/webapp/style/eu/index/play.css",
    "content": "@charset \"utf-8\";\n.x-player {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\tbackground: #000000;\n\t-webkit-user-select: none;\n    overflow: hidden;\n}\n.x-player p, .x-player li, .x-player ul, .x-player h1,.x-player button {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n.x-mask {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\topacity: 0.7;\n\tbackground: #000;\n\tz-index: 10;\n}\n.x-trigger {\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n    z-index:50;\n}\n.x-fs-console {\n    zoom:1.5;\n}\n.x-fs-console .x-control-btn .x-playing{\n    background:url(./img/ico_playbtn@2x.png) no-repeat center center;;\n    background-size:contain;\n}\n.x-fs-console .x-control-btn .x-pause{\n    background:url(./img/ico_pausebtn@2x.png) no-repeat center center;;\n    background-size:16px 16px;\n}\n.x-fs-console .x-control-btn .x-zoomout{\n    background:url(./img/ico_zoomout@2x.png) no-repeat center center;;\n    background-size:16px 16px;\n}\n.x-fs-console .x-settings .x-panel li{\n    font-size:14px;\n}\n.x-console {\n    display:none;\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\twidth: 100%;\n}\n.x-showmore a {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 15px;\n\tcolor: #bbbbbb;\n\ttext-decoration: none;\n\tfont-size: 14px;\n\tz-index: 20;\n    line-height: 35px;\n}\n.x-video-poster,.x-video-logo{\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n.x-video-poster img {\n\twidth: 100%;\n\theight: 100%;\n}\n.x-video-logo{\n    display: none;\n}\n.x-icon-exclusive{\n    position:absolute;\n    width:15%;\n    height:7.5%;\n    max-height: 54px;\n    max-width: 196px;\n    right: 3%;\n    top: 4%;\n    background: url(./img/icon-exclusive-min.png) no-repeat center center;\n    background-size: contain;\n}\n.x-video-player {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\tpadding: 0;\n\tmargin: 0;\n}\n.x-video-button {\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 85;\n}\n.x-video-button .x-video-play-ico {\n\twidth: 86px;\n\theight: 86px;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -43px;\n\tmargin-top: -43px;\n\tbackground: url(./img/xplayerv4.png) no-repeat 0 0;\n}\n.x-player .x-btn {\n\tdisplay: inline-block;\n\tpadding: 2px 8px;\n\tmargin-bottom: 0;\n\tfont-size: 12px;\n\tline-height: 20px;\n\ttext-align: center;\n\tvertical-align: middle;\n\tcolor: #333333;\n\tbackground-color: #f5f5f5;\n\tbackground-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n\tbackground-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n\tbackground-repeat: repeat-x;\n\tborder-color: #e6e6e6 #e6e6e6 #bfbfbf;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n\tborder: 1px solid #bbbbbb;\n\tborder-bottom-color: #a2a2a2;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\t-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\t-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\tbox-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n}\n.x-player .x-btn-pay {\n\tcolor: #ffffff;\n\tbackground-color: #ff822e;\n\tbackground-image: -moz-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff944d), to(#ff6600));\n\tbackground-image: -webkit-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: -o-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: linear-gradient(to bottom, #ff944d, #ff6600);\n\tbackground-repeat: repeat-x;\n\tborder-color: #ff6600 #ff6600 #b34700;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n}\n.x-player .x-btn-major {\n\tcolor: #ffffff;\n    background-color: #2c8ce0;\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47a4f4), color-stop(5%, #2e8ee2), to(#2683d8));\n    background-image: -webkit-linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: -moz-linear-gradient(top, #47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: -o-linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n\tbackground-repeat: repeat-x;\n\tborder-color: #ff6600 #ff6600 #b34700;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n}\n.x-video-info {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tz-index: 20;\n}\n.x-video-info .x-title {\n\tposition: relative;\n\tfont-size: 14px;\n\tcolor: #bbbbbb;\n\tpadding: 0 15px;\n\tz-index: 20;\n    line-height: 35px;\n}\n.x-feedback {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tz-index: 60;\n}\n.x-message {\n\twidth: auto;\n\theight: 35px;\n\tpadding: 0 15px;\n\tposition: relative;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n}\n.x-message-btn {\n\tposition: absolute;\n\tright: 15px;\n\ttop: 0px;\n}\n.x-message-input {\n\tposition: absolute;\n\tright: 65px;\n\ttop: 3px;\n\theight: 25px;\n\tpadding: 0 3px;\n\twidth: 150px;\n}\n.x-dashboard {\n\twidth: 100%;\n\theight: 60px;\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 80;\n}\n.x-progress {\n\twidth: 100%;\n\theight: 20px;\n\tposition: relative;\n}\n.x-progress-track {\n\twidth: 100%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #555555;\n}\n.x-progress-load {\n\twidth: 80%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #909090;\n}\n.x-progress-play {\n\twidth: 30%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #eb3c10;\n}\n.x-controls {\n\twidth: 100%;\n\theight: 40px;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-moz-box-orient: horizontal;\n\t-webkit-box-orient: horizontal;\n\tbox-orient: horizontal;\n\tbackground: #222222;\n}\n.x-control-btn {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: none;\n\tborder: none;\n}\n.x-control-btn em {\n\tdisplay: none;\n}\n.x-control-btn b {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: block;\n\tbackground: url(./img/xplayerv4.png) no-repeat -85px 0;\n}\n.x-control-btn .x-playing {\n\tbackground-position: -85px 0;\n}\n.x-control-btn .x-pause {\n\tbackground-position: -260px 12px;\n}\n.x-control-btn .x-zoomin {\n\tbackground-position: -142px 11px;\n}\n.x-control-btn .x-zoomout {\n\tbackground-position: -206px 11px;\n}\n.x-play-control {\n\twidth: 70px;\n\theight: 40px;\n}\n.x-time-display {\n\twidth: 100px;\n\tline-height: 40px;\n\tcolor: #555555;\n\tfont-size: 14px;\n\ttext-align: center;\n\tfont-family: Arial, sans-serif\n}\n.x-settings {\n\t-moz-box-flex: 1;\n\t-webkit-box-flex: 1;\n\tbox-flex: 1;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-moz-box-orient: horizontal;\n\t-webkit-box-orient: horizontal;\n\tbox-orient: horizontal;\n\tposition: relative;\n    padding-right:50px;\n     -moz-box-pack:end;\n     -webkit-box-pack:end;\n     -o-box-pack:end;\n     box-pack:end;\n}\n.x-fullscreen {\n\twidth: 50px;\n\theight: 40px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n}\n.x-quality,.x-localization,.x-playshow,.x-playspeed {\n\twidth: 60px;\n\theight: 30px;\n\ttext-align: center;\n\ttext-align: center;\n    padding-top:10px;\n}\n.x-playspeed{\n    display:none;\n   /* margin-right:10px;*/\n}\n.x-quality .x-control-btn,.x-localization .x-control-btn,.x-playshow .x-control-btn,.x-playspeed .x-control-btn{\n\tdisplay: inline-block;\n\twidth: 35px;\n\theight: 20px;\n    padding:0 3px;\n\tbackground: none;\n\tbackground: #626262;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tcolor: #e5e5e5;\n\tfont-size: 12px;\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#7f7f7f), color-stop(0.5, #757575), to(#565656));\n}\n.x-playspeed .x-control-btn{/*width:56px;*/padding:0;}\n.x-fs-console .x-quality .x-control-btn,.x-fs-console .x-localization .x-control-btn,.x-fs-console .x-playshow .x-control-btn ,.x-fs-console .x-playspeed .x-control-btn{\n    font-size:14px;\n}\n.x-progress-seek {\n\twidth: 18px;\n\theight: 24px;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-webkit-box-align: center;\n\t-moz-box-align: center;\n\t-webkit-box-pack: center;\n\t-moz-box-pack: center;\n\tposition: absolute;\n\tleft: 0;\n\ttop: -8px;\n\tline-height: 25px;\n}\n.x-seek-handle {\n\twidth: 16px;\n\theight: 16px;\n\t-webkit-border-radius: 22px;\n\t-moz-border-radius: 22px;\n\tborder-radius: 22px;\n\tborder: 3px solid #eb3c10;\n\tbackground: #ececec;\n}\n.x-settings .x-panel {\n    display:none;\n\twidth: 60px;\n\theight: auto;\n\tposition: absolute;\n\tbottom: 40px;\n}\n.x-settings .x-panel ul {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\ttop: -2px;\n\tz-index: 20;\n}\n.x-settings .x-panel li {\n\tcolor: #bbbbbb;\n\tfont-size: 12px;\n\theight: 24px;\n\tlist-style: none;\n\tmargin-bottom: 5px;\n\tline-height: 24px;\n}\n.x-settings .x-panel li:last-child {\n\tmargin: 0;\n}\n.x-settings .x-panel .selected {\n\tbackground: #2ea5e4;\n\tcolor: #222222;\n}\n.x-settings .x-mask {\n\ttop: -4px;\n\tleft: -2px;\n\tpadding: 2px;\n}\n.x-settings .pressed .x-control-btn {\n\tbackground: #06a7e1;\n\tcolor: #ffffff;\n}\n.x-progress-mini {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n}\n.x-progress-track-mini {\n\twidth: 100%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #555555;\n}\n.x-progress-load-mini {\n\twidth: 80%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #909090;\n}\n.x-progress-play-mini {\n\twidth: 30%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #eb3c10;\n}\n.x-prompt {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 40;\n}\n.x-prompt-mode {\n\twidth: 80px;\n\theight: 45px;\n\tposition: absolute;\n\tbottom: 44%;\n\tleft: 50%;\n\tmargin-left: -50px;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n\tline-height: 22px;\n\tpadding: 5px 10px;\n\ttext-align: center;\n}\n.x-prompt-forward {\n\tposition: relative;\n\ttext-align: left;\n\tbackground: url(./img/xplayerv4.png) no-repeat 45px -142px;\n\tfont-size: 18px;\n\tz-index: 20;\n}\n.x-prompt-time {\n\tposition: relative;\n\tz-index: 20;\n}\n.x-prompt-current {\n\tline-height: 45px;\n\tfont-size: 18px;\n}\n.x-prompt-back {\n\tposition: relative;\n\ttext-align: right;\n\tbackground: url(./img/xplayerv4.png) no-repeat -91px -142px;\n\tfont-size: 18px;\n\tz-index: 20;\n}\n.x-prompt-status {\n\twidth: 75px;\n\theight: 40px;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -38px;\n\tbottom: 80px;\n\tline-height: 40px;\n\ttext-align: center;\n}\n.x-prompt-txt {\n\tposition: relative;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n\tfont-size: 18px;\n    line-height: 40px;\n}\n.x-tips {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 50px;\n\tz-index: 70;\n}\n.x-tips-txt {\n\tline-height: 35px;\n\tpadding: 0 15px;\n\tcolor: #bbbbbb;\n\tposition: relative;\n\tz-index: 20;\n\tfont-size: 14px;\n}\n.x-tips-txt a {\n\tmargin-left: 5px;\n\tcolor: #06a7e1;\n}\n.x-tips-close {\n\twidth: 35px;\n\theight: 35px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tz-index: 20;\n}\n.x-tips-close a {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: url(./img/xplayerv4.png) no-repeat -23px -86px;\n}\n.x-tips-close em {\n\tdisplay: none;\n}\n.x-pay {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0px;\n    z-index:90;\n}\n.x-pay-txt {\n\twidth: auto;\n\theight: 35px;\n\toverflow: hidden;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tpadding-right: 200px;\n\tfont-size: 18px;\n\tcolor: #bbbbbb;\n\tz-index: 20;\n}\n.x-pay-txt h1 {\n\tfont-size: 14px;\n\tpadding: 0 15px;\n    line-height:35px;\n}\n.x-pay-txt .x-vip,.x-pay-panel .x-vip {\n\tfont-style: normal;\n\tcolor: #ff6600;\n}\n.x-pay-tips {\n\tfont-size: 14px;\n\tpadding: 0 15px;\n}\n.x-pay-btn {\n\twidth: 180px;\n\theight: 35px;\n\tline-height: 35px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tz-index: 20;\n}\n.x-pay-btn .x-btn {\n\tmargin-right: 10px;\n}\n.x-pay-trial {\n\tfont-size: 12px;\n\tcolor: #bbbbbb;\n\tmargin: 0 10px;\n}\n.x-showlist {\n    display:none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 60;\n    -webkit-backface-visibility:hidden;\n    -moz-backface-visibility:hidden;\n    -ms-backface-visibility:hidden;\n    -o-backface-visibility:hidden;\n    backface-visibility:hidden\n}\n.x-showlist-inner {\n\twidth: 500px;\n\theight: 360px;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -250px;\n\tmargin-top: -180px;\n\tz-index: 20;\n    -webkit-backface-visibility:hidden;\n    -moz-backface-visibility:hidden;\n    -ms-backface-visibility:hidden;\n    -o-backface-visibility:hidden;\n    backface-visibility:hidden\n}\n.x-showlist-hd {\n\tposition: relative;\n\tz-index: 20;\n}\n.x-showlist-hd label {\n\tposition: absolute;\n\ttop: 5px;\n\tleft: 5px;\n\tfont-size: 14px;\n\tcolor: #bbbbbb;\n}\n.x-showlist-close {\n\twidth: 32px;\n\theight: 32px;\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbackground: url(./img/xplayerv4.png) no-repeat 8px -88px;\n\tz-index: 20;\n}\n.x-showlist-bd {\n\twidth: 410px;\n\theight: auto;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -200px;\n\tmargin-top: -130px;\n    overflow: hidden;\n\tz-index: 20;\n}\n.x-showlist-bullet{\n\twidth: 410px;\n    height: 265px;\n\toverflow-y: scroll;\n    overflow-x: hidden;\n}\n.x-showlist-bd a{\n    text-decoration:none;\n    color:white;\n}\n.x-showlist-bullet li {\n\twidth: 100%;\n\theight: 40px;\n\tbackground: #000000;\n\tmargin-bottom: 1px;\n\tline-height: 40px;\n\tcolor: #bbbbbb;\n    text-indent:10px;\n    overflow:hidden;\n}\n.x-showlist-bullet .selected {\n\tbackground: #06a7e1;\n\tcolor: #222222;\n}\n.x-showlist-grid {\n\twidth: 420px;\n\tposition: relative;\n\tz-index: 20;\n}\n.x-showlist-grid li {\n\twidth: 40px;\n\theight: 40px;\n\tmargin: 0 1px 1px 0;\n\tbackground: #000000;\n\tfloat: left;\n\tcolor: #ffffff;\n\ttext-align: center;\n\tline-height: 40px;\n\tfont-size: 14px;\n}\n.x-showlist-grid .disabled {\n\tcolor: #555555;\n}\n.x-showlist-grid .visited {\n\tcolor: #911891;\n}\n.x-showlist-ft {\n\twidth: 100%;\n\theight: 65px;\n\tline-height: 65px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tz-index: 20;\n}\n.x-showlist-pages {\n\twidth: 100%;\n\theight: 100%;\n\ttext-align: center;\n}\n.x-showlist-pages ul,.x-showlist-pages li,.x-showlist-pages span {\n\tdisplay: inline-block;\n}\n.x-showlist-pages li {\n\twidth: 12px;\n\theight: 12px;\n\tbackground: url(./img/xplayerv4.png) no-repeat -288px -96px;\n\tmargin: 0 5px;\n}\n.x-showlist-pages li em {\n\tdisplay: none;\n}\n.x-showlist-pages .current {\n\tbackground-position: -256px -96px\n}\n.x-showlist-pages .x-showlist-pre {\n\twidth: 32px;\n\theight: 32px;\n\tvertical-align: middle;\n\tbackground: url(./img/xplayerv4.png) no-repeat -192px -94px;\n}\n.x-showlist-pages .x-showlist-next {\n\twidth: 32px;\n\theight: 32px;\n\tvertical-align: middle;\n\tbackground: url(./img/xplayerv4.png) no-repeat -208px -94px;\n}\n.x-showlist-pages .x-disabled-pre {\n\tbackground-position: -128px -94px;\n}\n.x-showlist-pages .x-disabled-next {\n\tbackground-position: -146px -94px;\n}\n.x-advert {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 80;\n\tfont-size: 12px;\n\tcolor: #bbbbbb;\n\t-webkit-user-select: none;\n}\n.x-advert-skip {\n\twidth: 70px;\n\theight: 35px;\n\tposition: relative;\n\ttext-align: center;\n\tfloat: right;\n\tmargin-left: 3px;\n}\n.x-advert-countdown {\n\twidth: 80px;\n\theight: 35px;\n\tposition: relative;\n\ttext-align: center;\n\tfloat: right;\n}\n.x-advert-txt {\n\tposition: relative;\n\tz-index: 20;\n\tline-height: 35px;\n}\n.x-advert-sec {\n    color: #d83e26;\n}\n.x-advert-detail {\n\twidth: 120px;\n\theight: 35px;\n\tline-height: 50px;\n\tposition: absolute;\n\tright: 0;\n\tbottom: 50px;\n\ttext-align: center;\n}\n.x-advert-detail .x-advert-txt {\n\tfont-size: 14px;\n}\n.x-ico-detail {\n\tdisplay: inline-block;\n\twidth: 15px;\n\theight: 15px;\n\tbackground: url(./img/xplayerv4.png) no-repeat -96px -96px;\n\tposition: relative;\n\ttop: 3px;\n\tleft: 5px;\n}\n.x-video-loading {\n\tdisplay: none;\n\twidth: 64px;\n\theight: 64px;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tz-index: 60;\n\tmargin-left: -32px;\n\tmargin-top: -32px;\n\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGODdGMTE3NDA3MjA2ODExODIyQUJFM0Q2NThGMUE2NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5QUJGREFFRTMxNjcxMUUyQTdGQ0MzMTAyNDYwOEM0MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNjMxMEJBODMxNjUxMUUyQTdGQ0MzMTAyNDYwOEM0MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkFCRjExNDMyNzIwNjgxMTgwODNEQjJGMEFDNDg0NjYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg3RjExNzQwNzIwNjgxMTgyMkFCRTNENjU4RjFBNjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6kvxsdAAANkElEQVR42uxbe2xUVRq/5955tJ2ZtjB9QWkpUp6WKIiLLrS7UgK0QhYTuxoNuOIqZotKuiYmm9XgixgSjTH8o3+sr+h2E0LcUJVXwIBQHj4QLCiU0u2WFkrfdDrtzNy5+5273xlPT++9c6dMu7txJ/kyt9N7z9zv9/2+57lDNE2Tfs4vWfqZvxzsgBAyHusT7l0USr0oHqt43oTRkTHfMY5Ky5wowjs7J4THwwhCdCJBSCYAvKVlXFfBdycK/5mCCg9wawxzymv/SwAQwdJUWTeIC9/5YwYEPTcMkoqKR1CiCIyRP2r/bQAQweJMyRSQNFROf1+/fv3Me++99/bi4uJbsrOz8zIzM/2pqakRp9M5ALGnCq+nEvb5fJqqqiQUCkmRSMSIZVrSg8EYUiHhlPaCZIEUgMwFWQxyz6ZNm/5QX1//9/7+/nZYfxgkBBIGieBxEGQQzl0IUgiSQddj90MFQJPy8vKIw+EwCqLJ0TtBAAinfAre9BSQWSB3wI2Wv/7661tbW1vPUuVQySACIIKgglDKLwGZCTJZBICXsrIyAuxIGghjAYDRnfqxB8SPllsAUvrMM8883dbWdgbWugEyABLgQBiyAGAZyGxcz20GAJO1a9dKXq/3phmRKABMeRcqnw1yC7U6ULTy2LFju6LRaC+s0z8GAMpA5uCacQGg0tXVJZWUlNwUCIkAwCtP/T0HKb/kwQcf3Hjt2jVK9x4QCkCfBQhmANwFUmyXAbxUV1eTlJQUmastyHgBwGifg3S9+7nnnqsJBoMtcG0XSLcBCGYsEAFYBDIDZJJVDDCTTz/9lEBWkRNlgl0AWMBjtKeWv3v79u1/DofDbXDddZBOBMGKBaIbRFg2wMyRD5JOgU4UACpnz54l4IoJMcEOAAQLmxSkJ/X5JTU1NVtA+Va4pkMAwA4LGAAh/PwKrDkd0yitGZSxAABCGhoaiN/vtw0Cu9YRh/oKFjeUAZOqqqrmvfLKK09DunPYKEgId45+DPGipbGx8cempqaW5ubmSxDMGvEcFQoiTVEUGtykuro6qaioKKGYNn/+fLJz505tzZo1JBAIsO8mce/ThAGM+l7M8yVQwVVcvXr1FJxLqU+Lm6sg10yYEGMB3My1PXv2/K2ysvL3sM4qkF+B/AJjSRbm/zSMMxRwWvjIWVlZZOvWrZZWF4512bZtm359PCZYuQBP/Sz0+9KjR4/+Fc6j1L+CIPBAiCD0gJt0guK1hYWF98P1v8YKsQSLHgqqD5VO4RokWSix5YKCAgJp1pbyTFavXs13ooYgxAPAiUGJlrd3QLqphjzfDOf9E4UHYhQIHR0d5x966KHNcO1yej1auwCzyCS0uENomYlwwzEg3G63TFOeoLCh8lQGBwdJbm6uYtB+2wJARqvQqD+XlrdXrlw5Cuf8A6XFCgTw8aMzZsygDc4vQeaBTMMg6sN1XQY3RoT7GAUCxAf5gQceIGZKi/Lqq6/ybfkoFpgBwHzfhxZb/Nprr/0J/n8ZpdkKhEuXLh2FSLwOfbwYLe7DQOpgN2IV0eN0ncrDDz9sFwR55syZDjMWWAHAfJ+Wp/e0tLR8Af+/BNLEgTAKCKD96fz8/PtR+VtwDQ+6kxxPcQsQeCYo9AWBTo6nPBWoVxQuuI4AwQwABW96Ksjtjz322Cb430WQRgRBBEIHAXr3ZiiLq5H2xah8ql2rJ8AEnQXp6ekOYJup4rxMnTqVH8KMAkA2+AIHUjYN6LaEG15GheOY7Nu371Btbe15OO4B6QcJ4sSHlrv6K0lzCv2D/v5+acOGDbKNZogsXbpUsjpPNhiTs5FW6uLFixfgl2qc8vxxFPJ84Mknn6yD4z6QG6h8iCmfrOmtMC/Ujh8/Ln/55Zfx5hbS5s2bNat6QDbI/xQAFyA8w+fzeQXLj2LAwYMH61tbW7tE5cd7mKmqqvTiiy8qJlkj9iorK5NycnJM6wEjAHQXKC8vLzaiO+8OtKPbsWPHMZzu8sprWhK3nAQWxJhw8uRJMjw8TCwYoP/v1ltvlQxqDEMAWAxwzp49Oz+O9dX29vYO8H/a0AzhdDecLOpbgMDHAvLhhx9axQL977lz50p2GcBG2w5oL/1mQY/J+fPnmzjl2Vh7Ql+HDh2STXaeYkWWAAAxG4sT3g0yMjJ8nEKjOjt6cPHixXa0epjt7GjjuNtKl+a28PT7hTqFCAFStDJZuHChKQMcBozQmeDxeJwWOzUEAehCy/9HtrXoq7OzUxEMNSoeFBcXM3ZHrRgwAlmXy+WMQ2nS29sbFFLjRADAW5luoFgNP/TPp0yZIpl1hlYDkQn35zHuSslxtvlpdygZBEfN7PkA3ZIhujcVJwhCSeo2Sy/jrHwsaHu9XsWg9+cBIm1tbbbqAIlPdwMDA0Gr8pf6PXRbmQbDjIligJ6xoAGTBSaIQrq7uxU7ADAfpgEtAv7dZ9ED6EFv1qxZWdz2tw4CGacnLXSt/700n66VOXPmGD1/wDNCgcZJsVMKa5xyEaBNV5xKMDp//vyp2D67uY5roqyvb86uWrWKpW4eBF7kH374QTHbajcCgKa18IULF66a0J+lPHXatGnpUGvnciDoTBgPFuCSMqe8g7a6K1asIMKDFyIL5IaGBsVsXREAFQEI7d+/vykeA+CmotXV1QtwhpDKjbtIMkHAtfidab1jve++++iEXjFwgREs+OqrrxSDXuKnWRz3JS4cYVHfzu/r6/sjRPpUsQnhj2/cuDEMhcZfOjo6WuDva9gW0/I4kqyqEO+Nn1V40tLSPOfOnYtOnz5dLMJGKAnlOqF7BnAYwPtirbppFghjbR+sr6+/ECcQqtAyK2+99dZd+KyAj2dCMljAWZ89kKE/efLEE0+4QHmZe7qEfwYpdgzNkttgqEPixQAKwCBcfCZOKtQFqDi3oqKiCEfe6XiTsXgwFiC462RBeQ80N76XXnpJ4TKQSxr5MBZzE8fu3bsdBqW6ZlUHqEiT4EcffXS5qanperxYAGWz9s4779yTk5OThzs96RgXYtPgREDgzlW4zRO6l+AD6md+8MEHTso8afTTZyOU/+yzz1zff/8936uM6leM0laMAXTK8+67756IBwAVyAhpBw4cWAk3locxJBNBSLHLBhOrp+AWXYbb7Z5UW1ubduedd8qCtQ3lzTffdEg/PYGmGpX3fBDkQWHB0A9RNr+xsfF34G+T48wH9ffvvvvu+sqVKw9CULyKQ1J+VBYWLKEJ5e2INMeGsxQAADYDLJ+ybt26sGBRoxhF5wRk+fLl1JC9XACMsO80C4J8OqQXByKRSO8LL7xwiI6/LL4wJrfddtukU6dOrYIvp9thlA25uDOUia7hRWakST89TsceqfPg/9MxntDrskpKSnKPHDmSCcqbWd7JuYFTVVXHs88+q3BTKtNhjWzRCYbQcv2A/EWoC360QH0EGIWFhSmff/55KbjPMr/fX4Cbobm4U+RH5TJRMlDhTPw8C7flcsDqU15++eVpJ06cyABg+a0up0X0d7zxxhvub775JsilvYhZq27kAuIOsV4XZGdnT/v6669/W1BQkGGguGmWgJ5ieNeuXW07duxo+vbbb3vwpnirqMJA1gX1vffRRx9NB5EhsDL/VfkqVIjssc8BLFJeXj4YCAS6uT2KkBgAY3qbACBxvpiKVspevXr17J07d/7G4/EoNkGI3VgUXlBeB8AyvVCbByCuBHp6evRxGhRbSlFRkQuaKwUCnGPBggVRWZZVrjKNcoFM5f7mv1OFrk9aunTpMKzfhb4/wE2qo0ZDVisAeKt4GAiPPPJICaS8FZD6iB0GiEAYyBB3zEfsiKC0kfVjcQnadw2CbwiKt+uc8kGzcZ1VEDTqDYYwmne///77559//vkj4XBYNWCAHTFimix0erJJZyfW/Lr/Dw0NOdavX6+B8r14n4OC5TU7zZAVCCFclNb5ndu3bz+9ZcuWL8DPwiZp0Up5EQij8ZZs0N+LjY4eCLu6upxQiYY/+eSTTiHlhe0Maq1cQLxBVpikoTtMBsrNAHcohRrBEy89GtGWY5gqFCsR4V2kv26Y06dPR8Ele8+cOcOUH7ExazWoteMC4qQowjGBftn1ffv2XVy0aNHuurq6Zohxdq0vmYzaZWFvggiPzsSsD3lefvvtt7Vly5ZdB+VpB8oi/pAd5RNlgNHGCStRWXDMrKqqKtq2bRv9TYDXRunMsyBiECDNWKNCKo7U1NT0HD58uBNdsh9pP5yI8naygNVEVhFLVVrMQNmc+dRTT818/PHHi+fNm5dmp4eIo3jsb6guI1Db93788ccd3FZ8ABk5zK0h2bH8WAEQU6TMsSGVK2V9lZWVeRs3bpxeWlrqh2JGsQGA+Hmkvb09AhVl8L333uuGUrgblR5ApYNCsFMT2Zi5WQDE6G35k5mysjJ/RUVFFvTxXqgk3bm5uQ4ofgi0tnrQHBwcVKFiDIPC4cuXLw81NDQM7t27tw+s3oeKDnLvrLwNce6T8K5UMgCQDHK33R9NKUL+F7NCiPNpXmHez6M3sx+ZTABG7dZI9n42x29UaELhxd7DXN+gChaXpJvYi0z2Dyc1A0Xi/XDSdFfKpGaI3qzSRq/x+OUou0FV2La28/MWO/VDcvcb/v/r8Z/5618CDACSrI8YsjnaagAAAABJRU5ErkJggg==) no-repeat 0 0;\n\t-moz-animation-name: loadingAnimations;\n\t-moz-animation-duration: 1.2s;\n\t-moz-animation-iteration-count: infinite;\n\t-moz-animation-timing-function: linear;\n\t-webkit-animation-name: loadingAnimations;\n\t-webkit-animation-duration: 1.2s;\n\t-webkit-animation-iteration-count: infinite;\n\t-webkit-animation-timing-function: linear;\n\t-o-animation-name: loadingAnimations;\n\t-o-animation-duration: 1.2s;\n\t-o-animation-iteration-count: infinite;\n\t-o-animation-timing-function: linear;\n}\n@-webkit-keyframes loadingAnimations {\n\t12.5% {\n\t-webkit-transform: rotate(45deg);\n\t-moz-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\t-o-transform: rotate(45deg);\n\ttransform: rotate(45deg)\n}\n25% {\n\t-webkit-transform: rotate(90deg);\n\t-moz-transform: rotate(90deg);\n\t-ms-transform: rotate(90deg);\n\t-o-transform: rotate(90deg);\n\ttransform: rotate(90deg)\n}\n37.5% {\n\t-webkit-transform: rotate(135deg);\n\t-moz-transform: rotate(135deg);\n\t-ms-transform: rotate(135deg);\n\t-o-transform: rotate(135deg);\n\ttransform: rotate(135deg)\n}\n50% {\n\t-webkit-transform: rotate(180deg);\n\t-moz-transform: rotate(180deg);\n\t-ms-transform: rotate(180deg);\n\t-o-transform: rotate(180deg);\n\ttransform: rotate(180deg)\n}\n62.5% {\n\t-webkit-transform: rotate(225deg);\n\t-moz-transform: rotate(225deg);\n\t-ms-transform: rotate(225deg);\n\t-o-transform: rotate(225deg);\n\ttransform: rotate(225deg)\n}\n75% {\n\t-webkit-transform: rotate(270deg);\n\t-moz-transform: rotate(270deg);\n\t-ms-transform: rotate(270deg);\n\t-o-transform: rotate(270deg);\n\ttransform: rotate(270deg)\n}\n87.5% {\n\t-webkit-transform: rotate(315deg);\n\t-moz-transform: rotate(315deg);\n\t-ms-transform: rotate(315deg);\n\t-o-transform: rotate(315deg);\n\ttransform: rotate(315deg)\n}\n100% {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg)\n}\n}\n\n/*recommend begin*/\n.x-recommend {\n//display: none;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 90;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: #222222;\n    overflow:hidden;\n    display: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-webkit-box-align: center;\n\t-moz-box-align: center;\n\t-webkit-box-pack: center;\n    -moz-box-pack: center\n}\n.x-recommend .x-pages{\n    width:auto;\n    height:auto;\n    overflow:hidden;\n    position:relative;\n    text-align:center;\n    padding: 30px 30px;\n}\n.x-recommend .x-replay{\n    position: absolute;\n    z-index: 20;\n    right: 0px;\n    top:0px;\n    width: 150px;\n    height: 85px;\n}\n.x-recommend .x-item{\n    position:relative;\n    z-index: 10;\n    width: 150px;\n    height: 85px;\n    margin: 0 12px 12px 0;\n    overflow: hidden;\n    display: inline-block;\n    vertical-align:middle;\n}\n.x-recommend .x-item-noimg img{\n    width:150px;\n    height:85px;\n}\n.x-recommend .x-item-img img{\n    width:100%;\n}\n.x-recommend .x-item-bg {\n\tz-index: 1;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\theight: 100%;\n\twidth: 100%;\n\tbackground: url(./img/item_bg.png) no-repeat left  top;\n}\n.x-recommend .x-item-title {\n\tz-index: 10;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\twidth: 100%;\n\theight: 40px;\n\toverflow: hidden;\n    text-align: left;\n    padding: 0 1px;\n    font-size: 14px;\n    font-weight: normal;\n    color:#ffffff;\n    text-shadow:1px 1px 1px #000000;\n}\n.x-recommend .x-item-url {\n\tz-index: 20;\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tleft: 0;\n\ttop: 0\n}\n.x-recommend .x-item-url a {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n    font-size: 14px;\n\twidth: 100%;\n\theight: 100%\n}\n.x-recommend .x-play-loading {\n\tdisplay: none;\n\tbackground-size: 32px 32px;\n\twidth: 32px;\n\theight: 32px;\n\tmargin-left: -16px;\n\tmargin-top: -16px\n}\n\n.x-ad-pause{\n    display:none;\n    position:absolute;\n    left:50%;\n    top:50%;\n    margin-left:-300px;\n    margin-top:-225px;\n    z-index: 90; /* > trigger */\n}\n.x-ad-pause .x-pause-close{\n    position:absolute;\n    width:44px;\n    height:44px;\n    right:0;\n    top:0;\n\tbackground: url(./img/xplayerv4.png) no-repeat -17px -83px;\n}\n\n.x-ad-pause .x-pause-prompt{\n    position: absolute;\n    left: 0;\n    bottom: 3px;\n    width: 29px;\n    height: 16px;\n    background: url(http://r2.ykimg.com/051000005604C79D67BC3D7CA2063AD4) no-repeat center;\n    background-size: contain;\n}\n/*2016.4.18 PlayLimit-----edit by vanery 10分钟限播s*/\n.x-app-guide, .x-app-guide-other, .x-app-guide-5min{\n\tbackground: url(http://player.youku.com/h5player/img/onlytip.png) no-repeat;\n    background-size:contain;\n\twidth:220px;\n\theight: 159px;\n\tborder-radius: 3px;\n    position:absolute;\n    left:50%;\n    top:50%;\n    margin-left:-110px;\n    margin-top:-74px;\n    z-index:100;\n}\n.x-app-guide-other{\n\theight:183px;\n\tbackground: url(http://player.youku.com/h5player/img/onlytipother.png) no-repeat;\n    background-size:contain;\n}\n.x-app-guide-5min{\n\theight: 160px;\n\tbackground: url(http://player.youku.com/h5player/img/tip5min.png) no-repeat;\n\tbackground-size:contain;\n}\n.x-app-guide .x-app-guide-par{\n\tposition: relative;\n\theight:100%;\n}\n.x-app-guide p{\n\twidth:44px;\n\theight:44px;\n\tposition: absolute;\n\tright:12px;\n\ttop: -12px;\n    z-index:102;\n}\n.x-app-openapp{\n    display: block;\n    width:100%;\n    height:40px;\n    position: absolute;\n    left:0;\n    bottom: 0;\n    z-index:101;\n}\n\n.x-app-bg{\n    width:100%;\n    height:100%;\n    position:absolute;\n    left:0;\n    top:0;\n    background:#000;\n    z-index:90;\n    opacity: .8;\n}\n/*e end*/\n.x-pay-panel{\n    width: 100%;\n    height: 100%;\n    margin: auto;\n    position: absolute;\n    top: 0; left: 0; bottom: 0; right: 0;\n    z-index:90;\n    background-color: #000000;\n}\n.x-pay-content{\n    margin: auto;\n    width: 80%;\n    height: 40%;\n    text-align: center;\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n}\n\n.x-pay-title{\n    color: #ffffff;\n    text-align: center;\n    font-size: 18px;\n    line-height: 30px;\n    margin: 30px;\n}\n.x-icon-prompt{\n    display: inline-block;\n    vertical-align: middle;\n    position: relative;\n    font-style: normal;\n    direction: ltr;\n    height: 14px;\n    width: 14px;\n    margin: 2px;\n    border: 1px solid #ff6000;\n    overflow: visible;\n    -webkit-border-radius: 50%;\n    -moz-border-radius: 50%;\n    -o-border-radius: 50%;\n    border-radius: 50%;\n    color: #eee;\n}\n.x-icon-prompt:after{\n    position: absolute;\n    left: 50%;\n    -webkit-transform: translateX(-50%);\n    -moz-transform: translateX(-50%);\n    -ms-transform: translateX(-50%);\n    -o-transform: translateX(-50%);\n    transform: translateX(-50%);\n    width: 2px;\n    height: 2px;\n    content: '';\n    pointer-events: none;\n    box-shadow: inset 0 0 0 1px,0 1px,0 2px,0 5px;\n    top: 4px;\n    color: #ff6000;\n}\n.x-pay-panel .x-button{\n    padding: 0 10px;\n    height: 40px;\n    line-height: 40px;\n    font-size: 18px;\n    cursor: pointer;\n    border: none;\n    margin: 0 10px;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n}\n.x-pay-panel .x-try{\n    color: #4a5159;\n    background-color: #b4b4b4;\n}\n.x-pay-panel .x-buy{\n    color: #ffffff;\n    background-color: #ff6000;\n}\n@media screen and (max-width: 640px) {\n    .x-showlist {\n        zoom: 0.8;\n    }\n    .x-showlist-grid li {\n        font-size: 16px;\n    }\n}\n@media screen and (max-width: 480px) {\n    .x-showlist {\n        zoom: 0.7;\n    }\n    .x-showlist-grid li {\n        font-size: 18px;\n    }\n}\n\n@media all and (min-width:620px) {\n    .x-ad-pause{display:block;}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/index/themepark.css",
    "content": "/*   \nTheme Name: 超级门户\nTheme URI:http://www.themepark.com.cn/\nDescription: WEB主题公园出品的一款内容站主题，也可以用于企业seo优化站，全站小工具布局，模块可重复使用，灵活性超强！\nAuthor:WEB主题公园\nAuthor URI: http://www.themepark.com.cn/\nVersion: 1.35\n*/\n\n* { margin: 0; padding: 0; }\nimg{ border:none;}\nbody { background: white; font: 14px/1.4 Georgia, Serif; font-family:微软雅黑, Arial, Helvetica, sans-serif;background:url(\"../images/home_b.gif\"); padding: 0px; }\n.screen-reader-text { position: absolute; left: -9999px; top: -9999px; }\n.clear { clear: both; }\n.group:after { visibility: hidden; display: block; font-size: 0; content: \" \"; clear: both; height: 0; }\n* html .group, *:first-child+html .group { zoom: 1; } /* First selector = IE6, Second Selector = IE 7 */\n#index_model { width: 960px; margin: 10px auto; overflow:hidden; }\n#index_model_in{ width:980px; margin:0; padding:0; overflow:hidden; height:auto;}\nh1, h2, h3 { font-weight: normal; margin: 0 0 10px 0 ; }\np { margin: 0 0 5px 0; }\nul,li,ol{ list-style:none; display:block;}\na{ text-decoration:none;}\n#header{ width:100%; height:180px; position:relative;background:url(\"../images/nav_b.png\"); padding-bottom:8px;z-index:9999;}\n#header .top{ width:100%;  height:34px; border-top:solid 2px #fff;}\n#header .top .top_in{ width:960px; height:34px; margin:0  auto;}\n#header .top .top_gonggao{ width:504px; height:34px; float:left; position: relative; overflow:hidden; padding-left:30px; }\n#header .top .top_gonggao_bd{ position:absolute; left:0; top:0;background:no-repeat 0px 0px url(\"../images/Sprites.png\"); width:124px; height:34px;}\n#header .top  .top_gonggao_bd_r{ position:absolute; right:0; top:0; background:no-repeat 0px -37px url(\"../images/Sprites.png\"); width:30px; height:34px;}\n#header .top .top_gonggao_bd b{ font-size:12px; font-weight:normal; color:#FFF; line-height:34px; padding-left:43px;}\n#header .top .top_gonggao marquee a{ display:block; padding:2px 5px; background:#7a7a7a; border-left: #9bcb18 solid 1px;border-radius:4px; color:#FFF; font-size:12px; margin-top:7px; float:left; margin-right:20px;}\n\n#header .top .top_gonggao marquee a:hover{ background:#373737;}\n#header .top span{ display:block; float: right; height:34px; padding-left:25px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat; line-height:34px; color:#fff; font-size:12px; margin-right:30px;}\n#header .top .tel{ background-position:4px -103px;}\n#header .top .mail{ background-position:0 -75px;}\n\n\n#header #header_in{ width:960px; height:134px; margin:0 auto; overflow:hidden;}\n#header #header_in img{ max-width:100%;}\n#header #header_in .logo{ width:auto; height:74px; display:block; overflow:hidden; float:left;}\n#header #header_in .logo img{ height:74px; width:auto;}\n#header #header_in .header_ad{ float:right; width:636px; height:66px; padding:8px; position:relative; overflow:hidden;}\n#header #header_in .header_ad span{ width:32px; height:34px; position:absolute;background-image:url(\"../images/Sprites.png\");}\n#header #header_in .header_ad .left{ left:0; top:0; background-position:0 -139px;}\n#header #header_in .header_ad .right{ right:0; bottom:0; background-position:0 -232px;}\n#header #header_in .header_ad a{ display:block; width:636px; height:66px; overflow:hidden;}\n/* nav */\n#header #nav{ width:960px; height:46px; margin:0 auto; }\n#header #nav .menu_nav{ width:896px; height:45px; margin:0 auto; display:block; float: left;}\n#header #nav .menu_nav li{  float:left; width:auto; height:45px; display:block; line-height:45px; margin-right:1px; position:relative; z-index:99;white-space:nowrap;}\n#header #nav .menu_nav li a{ font-size:16px; font-weight:normal; color:#1b1b1b; text-decoration:none; position:relative; z-index:20; width: auto; height:45px; display:block; float:left;padding:0 15px;}\n#header #nav .menu_nav li .hover{ width:100%; height:43px; position:absolute; top:0; left:0; z-index:8px; display:none; border-top:solid 2px #eb302f;}\n#nav .menu_nav .current-menu-item .hover,#nav .menu_nav  .current-category-ancestor .hover,#nav .menu_nav  .current-menu-ancestor .hover,#nav .menu_nav  .current-post-parent .hover{ display:block !important;}\n#nav .menu_nav li .sub-menu{ display:none;  height:auto; width:130px; border:solid 5px #FFFFFF; position:absolute; top:44px; left:0; background:#f7f7f7;box-shadow: 0 1px 3px #333333; overflow:hidden; z-index:10; padding:5px;}\n#nav .menu_nav li .sub-menu li .sub-menu,#nav .menu_nav li .sub-menu li .sub-menu li .sub-menu,#nav .menu_nav li .sub-menu li .sub-menu li .sub-menu{ display:block !important;}\n#nav .menu_nav li .sub-menu li .current-menu-item a,#nav .menu_nav li .sub-menu li a{ color: #eb302f!important; text-shadow:none !important;}\n#nav .menu_nav li .sub-menu li a{ width:110px !important; padding:0 10px !important; display:inline; height:auto !important; float:left;}\n#nav .menu_nav li .sub-menu li a:hover{ background:#333 !important; color:#FFF !important;}\n#nav .menu_nav li .sub-menu li{ float:left; width:130px; height:auto !important; padding:0; line-height:28px !important; margin:2px 0; border-bottom:dotted 1px #CCCCCC;}\n#nav .home_url{ width:62px; height:46px; float:left;background:no-repeat 0px -309px url(\"../images/Sprites.png\");}\n\n\n\n/* pic */\n#pic_out{ width:960px; height:359px; overflow:hidden; margin:20px auto; border:solid 1px #CCCCCC; position:relative;}\n#pic{ width:940px; height:335px; overflow:hidden; position:relative; margin:0 auto; border:10px #FFFFFF solid; background:#FFF;}\n#pic ul li a{ display:block; width:100%; height:367px; overflow:hidden; position:relative; z-index:2;}\n#pic ul li {display:block; width:100%; height:421px; position:relative;}\n#pic .pic_text{ width:100%; height:40px; position:absolute;background:url(\"../images/black_b2.png\"); bottom:86px;  right:0; z-index:3;}\n#pic .pic_text span{ width:44px; height:40px; display:block;background:no-repeat 0px -387px url(\"../images/Sprites.png\"); float:left;}\n#pic .pic_text b{ font-size:12px; color:#fff; font-weight:normal; line-height:18px;}\n#pic .prve,#pic .next{ width:80px; height:80px; background-image:url(\"../images/Sprites.png\"); position:absolute; top:131px; display: block;z-index:1000; cursor:pointer;}\n#pic .prve{ background-position:80px -1px; left:-100px;}\n#pic .next{background-position:80px -80px; right:-100px;}\n\n/* pic */\n#pic_out2{ width:100%; height:435px; overflow:hidden; margin-top:-8px; margin-bottom:20px; border-bottom: solid 10px #EBEBEB; position:relative;*margin-top:-8px;_margin-top:-8px; z-index:100; z-index:10;}\n#pic2{ width:100%; height:435px; overflow:hidden; position:relative; margin:0 auto;  background:#FFF;}\n#pic2 ul li a{ display:block; width:100%; height:435px; overflow:hidden; position:relative; z-index:2;}\n#pic2 ul li {display:block; width:100%; height:435px; position:relative;}\n#pic2 .pic_text{ width:100%; height:40px; position:absolute;background:url(\"../images/black_b2.png\"); bottom:0;  right:0; z-index:3;}\n#pic2 .pic_text span{ width:44px; height:40px; display:block;background:no-repeat 0px -387px url(\"../images/Sprites.png\"); float:left;}\n#pic2 .pic_text b{ font-size:12px; color:#fff; font-weight:normal; line-height:18px;}\n#pic2 .prve,#pic2 .next{ width:80px; height:80px; background-image:url(\"../images/Sprites.png\"); position:absolute; top:161px; display: block;z-index:1000; cursor:pointer;}\n#pic2 .prve{ background-position:80px -1px; left:-100px;}\n#pic2 .next{background-position:80px -80px; right:-100px;}\n.test_inf{ margin:0 auto; width:960px;height:40px;}\n\n/* widget */\n.widget{ height:auto; overflow:hidden; float:left; margin: 5px 15px 5px 0px;}\n.widget .widge_hd{ width:100%; height:34px; float:left; border-bottom:solid 1px #89CDAC;}\n.widget .widge_hd span{ float:left; display:block; height:34px; width:auto;}\n.widget .widge_hd span b{ width:100%; display:block; font-size:14px; color:#303030;line-height: 20px;}\n.widget .widge_hd span p{ display:block; font-size:9px; color: #eb302f;  text-transform:uppercase;}\n.widget .widge_hd a{ width:52px; height:18px;background:0 -435px url(\"../images/Sprites.png\"); display: block; float: right; color: #eb302f; padding:16px 0 0 20px; font-weight:bold; text-decoration:none; font-size:14px;line-height: 14px;}\n.widget .widge_hd a:hover{ color:#CCC;}\n#vedio{ width:500px;}\n.widget ul{ width:100%; height:auto; padding:10px 0 0 0!important; float:left; margin: 0px !important;}\n.widget ul li{ display:block; float:left;}\n.widget .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em;}\n.widget p{ font-size:12px; color:#999;}\n.widget img{ max-width:100%;}\n\n.widget_nav_menu ul li{ width:100%; height: auto; padding:5px 0; display:block;  border-bottom:dashed 1px #d6d6d6;  background:#fff;}\n.widget_nav_menu ul li a{  padding:5px 0 5px 20px; color:#666; display:block; width:100%; background:#F5F5F5; border-left:#ccc solid 3px; text-decoration:none;}\n.widget_nav_menu ul li a:hover{border-left:#eb302f solid 3px;color:#eb302f}\n.widget_nav_menu  ul .current_page_item a,.widget_nav_menu  ul .current-cat a{ color:#eb302f;border-left:#eb302f solid 3px;}\n.widget_nav_menu ul  .current-cat  .children li a,.widget_nav_menu ul  .current_page_item  .children li a,.widget_nav_menu ul  .current_page_item  .sub-menu li a,.widget_nav_menu ul  .current-cat .sub-menu li a{color:#666 !important; }\n.widget_nav_menu  ul  li .sub-menu,.widget_nav_menu  ul  li .children{ margin-left:10px; display:block;}\n.widget_nav_menu  ul  li .sub-menu li,.widget_nav_menu  ul  li .children li{ border:none; padding:5px 0 !important;}\n.widget_nav_menu  ul  li .sub-menu li a,.widget_nav_menu  ul  li .children li a{ border:none !important; background:none !important; padding:0 !important; margin-left:20px; }\n.case525,#new525,#vedios,.case525,.table1,#vedio{ height:370px;}\n\n\n.widget_border{ width: 780px; height: 5px; margin: 3 0px; float: left; background: url(\"../images/index/headbg.png\") repeat;}\n\n.widget table{}\n.widget table span.articleicon{ display: block; width: 9px; height:15px; margin-top: -5px; background: url(\"../images/index/index_article_icon.gif\") no-repeat;}\n.widget table a{ margin-left: 5px; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\"; font-size: 14px; line-height: 24px; color: #266AAB; text-decoration:none;}\n.widget table a b{ color:#eb302f;text-transform:uppercase;}\n.widget table a:hover{ color: red;}\n.widget table td{ overflow: hidden; white-space: nowrap; color: #999999;}\n\n\n#widget_news{width:370px; height:220px; border: 1px solid #19840E; padding: 5px;}\n#widget_news ul li#first{ margin:0;width:228px; height:295px; border:none; }\n#widget_news ul li#first a{ width:228px; height:295px; overflow:hidden; position:relative; display:block; overflow:hidden;}\n#widget_news ul li#first a span{ display:block; width:42px; height:40px; position:absolute; left:0l top:0; background:-281px -446px url(\"../images/Sprites.png\");}\n#widget_news ul li#first div{ width:218px; height: auto; background: no-repeat url(\"../images/first.png\"); position:absolute; bottom:-90px; padding:65px 5px 0 5px;}\n#widget_news ul li#first div p{ font-size:14px; color:#fff;}\n#widget_news ul li a,#vedio #bottom_text a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n#widget_news ul li a:hover,#vedio #bottom_text a:hover{ text-decoration:underline;}\n#widget_news ul li#first div p b,#widget_news ul li  a b,#vedio ul li a b,#vedio #bottom_text a b{ color:#eb302f;text-transform:uppercase;}\n#widget_news ul li{ width:600px; float:left; padding :3px 0; margin-left:10px; border-bottom: dashed #D5D5D5 1px;}\n\n\n#widget_expert{ width:780px; height: auto;}\n#widget_expert ul{ width:780px;}\n#widget_expert ul li{width:230px; height:300px; margin:0 13px 13px 0;}\n#widget_expert ul li a{ position:relative; display:block; width:230px; height:300px; overflow:hidden;}\n#widget_expert ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n#widget_expert ul li a .case_title b ,#widget_expert ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n#widget_expert ul li a .case_title b{ background-position:-5px -559px;float:left;}\n#widget_expert ul li a .case_title p{ background-position:-5px -601px;float:right;}\n#widget_expert ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n#widget_expert ul li a .case_t b{ color:#fff; font-size:14px;}\n\n.loop_big_caj_nav{ width:780px; height:auto; text-align: end; float:left;}\n.loop_big_caj_nav a{ display:inline-block; padding:0px 10px; margin-right:2px; background:#666; color:#FFF; font-size:14px; cursor:pointer;}\n.loop_big_caj_nav a:hover{ background:#eb302f;}\n\n\n#new525{ width:625px;}\n#new525 ul li#first{ margin:0;width:228px; height:295px; border:none; }\n#new525 ul li#first a{ width:228px; height:295px; overflow:hidden; position:relative; display:block; overflow:hidden;}\n#new525 ul li.scond a{ font-size:16px; margin-bottom:10px; overflow:hidden; display:block; }\n#new525 ul li#first a span{ display:block; width:42px; height:40px; position:absolute; left:0l top:0; background:-281px -446px url(\"../images/Sprites.png\");}\n#new525 ul li#first div{ width:218px; height: auto; background: no-repeat url(\"../images/first.png\"); position:absolute; bottom:-90px; padding:65px 5px 0 5px;}\n#new525 ul li#first div p{ font-size:14px; color:#fff;}\n#new525 ul li a{ font-size:14px; color:#333; text-decoration:none;}\n#new525 ul li a:hover,#vedio #bottom_text a:hover{ text-decoration:underline;}\n#new525 ul li#first div p b,#new525 ul li  a b,#vedio ul li a b,#vedio #bottom_text a b{ color:#eb302f;text-transform:uppercase;}\n#new525 ul li{ width:386px; float:left; padding :5px 0 5px 0; margin-left:10px; border-bottom:dashed #D5D5D5 1px;}\n\n\n#vedio .vidio_fam{  width:290px; height:215px; float:right;}\n#vedio ul{ width:470px; height:295px;}\n#vedio ul li{ width:170px; height:48px; overflow:hidden; display:block;  margin-bottom:8px;}\n#vedio ul li a{ font-size:12px; color:#333; text-decoration:none;  width:158px; height:36px;display:block;border:1px solid #CCC; padding:5px;}\n#vedio ul li a:hover,#vedio ul li .in{ border:1px solid #eb302f;}\n#vedio #bottom_text{ width:471px; height:auto; float:left;}\n\n#vedios{ width:315px;}\n#vedios ul{  width:315px; height:295px;}\n#vedios ul li{ width:315px; float:left; padding :5px 0 5px 0; margin-left:10px; border-bottom:dashed #D5D5D5 1px;}\n#vedios ul li a{ font-size:14px; color:#333; text-decoration:none;}\n#vedios .vedio_kuang{ width:303px; height:200px; padding:5px; background:#FFF; border:#CCC solid 1px;}\n#vedios .vedio_kuang iframe { width:303px !important; height:200px !important; }\n\n.case1{ width:960px !important; height:auto;}\n.case1 ul{ width:980px;}\n.case1 ul li{width:230px; height:300px; margin:0 13px 13px 0;}\n.case1 ul li a{ position:relative; display:block; width:230px; height:300px; overflow:hidden;}\n.case1 ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n.case1 ul li a .case_title b ,.case1 ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n.case1 ul li a .case_title b{ background-position:-5px -559px;float:left;}\n.case1 ul li a .case_title p{ background-position:-5px -601px;float:right;}\n.case1 ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n.case1 ul li a .case_t b{ color:#fff; font-size:14px;}\n\n\n.news_modle1,.news_modle2,.news_modle3{ width:306px;}\n.news_modle1 ul li#fiest .pic{ width:124px; height:93px; float:left; display:block; overflow:hidden;}\n.news_modle1 ul li#fiest .pic img{ width:124px; height:93px;}\n.news_modle1 ul li .news_modle1_title,.news_modle1 ul li p,.news_modle1 ul li#fiest .time{ float:left; display:block; width:154px; margin-left:10px; overflow:hidden; height:16px;}\n.news_modle1 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.news_modle1 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.news_modle1 ul li{ width:306px;float:left; padding :4px 0; border-bottom: dashed #D5D5D5 1px;}\n.news_modle1 ul li a:hover{ text-decoration:underline;}\n.news_modle1 ul li .time{ float:right; width:50px; padding-right:18px;}\n.news_modle1 ul li#fiest{ padding-bottom:12px;}\n\n.func_nav{ width:125px; border: 1px solid #19840E; padding: 5px;}\n.func_nav ul{ width:125px;}\n.func_nav li{ width:104px; height:130px; margin: 0px 10px; position:relative; overflow:hidden; border-bottom: 1px dashed #89CDAC;}\n.func_nav li b{ display:block; width:133px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:-90px; color:#FFF; font-size:12px; font-weight:normal;}\n.func_nav li b a{color:#FFF; text-decoration:none;}\n.func_nav li b a:hover{ text-decoration:underline;}\n\n#widget_inform{ width:370px; height:220px; border: 1px solid #19840E; padding: 5px;}\n#widget_inform ul li a{ font-size:18px; color:#333; text-decoration:none; float:left;}\n#widget_inform ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_inform ul li{ width:620px;float:left; padding :3px 0; border-bottom: dashed #D5D5D5 1px;}\n#widget_inform ul li a:hover{ text-decoration:underline;}\n#widget_inform ul li .time{ float:right; width:100px; padding-right:18px;}\n\n#widget_link{ width:800px;}\n#widget_link ul li a{ font-family: \"宋体\"; font-size:12px; color: #266AAB; text-decoration:none; float:left; text-decoration: none;}\n#widget_link ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_link ul li{ width:200px;float:left; padding :3px 0; background: url(\"../images/index/index_nav_icon.gif\") no-repeat 8px 8px; text-indent: 20px;}\n#widget_link ul li a:hover{ color: red;}\n\n#widget_question{ width:630px;}\n#widget_question ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n#widget_questionul li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n#widget_questionul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n#widget_question ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_question ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.question_title{ color:  #259; font-size:14px; display:block; width:100%;}\n.question_expandable{ margin-top:5px; font-size:13px; line-height: 1.5;color:#999;cursor: pointer;}\n.question_expandable img{width:98px !important; height:73px !important; float:left; border-radius: 4px;margin: 1px 10px 5px 0;}\n.question_expandable .toggle-expand{display: inline-block; padding: 0 3px; color: #0c5897; border-radius: 2px; font-size: .9em;}\n.question_collapse{ color: #fff; float:right; z-index: 1; margin: 0; background-color: #81baeb; padding: 1px 6px; border-radius: 3px; cursor: pointer;opacity: 0.9;border: 0;}\n.question_collapse i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon2.png) !important;background-repeat: no-repeat;margin-right: 5px; background-position: -70px -38px; width: 8px; height: 9px;}\n.question_content{color: #333; margin: 10px 0px; line-height: 20px;}\n.question_actions{ margin-top:3px; display:block;}\n.question_actions a{ margin: 0 5px;}\n.question_actions .highlight{ color: red; padding: 0 2px;}\n.question_actions i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon.png);background-repeat: no-repeat;margin-right: 5px;}\n.question_actions a{text-shadow: 0 1px 0 #fff;display: inline;text-decoration: none;color: #777;}\n.question_actions .comments_count .icon_comment{width: 9px;height: 10px;background-position: -28px -22px;}\n.question_actions .like_count .icon_like{width: 10px;height: 10px;background-position: -41px -22px;}\n\n#widget_company{ width:306px; max-height:370px;}\n#widget_company ul li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n#widget_company li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n#widget_company ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_company ul li{ width:295px;float:left; padding :3px 0; border-bottom: dashed #D5D5D5 1px;}\n#widget_company ul li a:hover{ text-decoration:underline; color: red;}\n\n.companylist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.companylist li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n.companylist li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n.companylist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.companylist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n.list_paginator{text-align: right; padding: 10px 0px;clear: both;line-height: 1em;}\n.list_paginator a{font-size: 12px; margin: 0 3px;padding: 2px 5px; border: 1px solid transparent; cursor: pointer; text-decoration: none; color: #777;}\n.list_paginator a.paginator_current { border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; color: #d32;}\n.list_paginator a:hover{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; }\n\n.table1{ width:415px;}\n.table1 .widge_hd2{width:100%; height:34px; float:left; border-bottom:solid 1px #cecece;}\n.table1 .widge_hd2 a{ font-size:14px;  color:#999; margin-right:10px; display:block; padding:2px 10px; float:left; margin-top:10px; cursor:pointer;}\n.table1 .widge_hd2 a.inopen{ background:#eb302f; box-shadow:0 1px 5px #7d1110 inset; color:#FFF;} \n.table1 ul{ display:none;}\n.table1 ul.show{ display:block;}\n.table1 ul li .table1_title,.table1 ul li p,.table1 ul li#fiest .time{ float:left; display:block; width:154px; margin-left:10px;}\n.table1 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.table1 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.table1 ul li{ width:406px;float:left; padding :6px 0; border-bottom: dashed #D5D5D5 1px;}\n.table1 ul li a:hover{ text-decoration:underline;}\n.table1 ul li .time{ float:right; width:50px; padding-right:18px;}\n#ss1{ display:block;}\n\n\n.case525{ width:625px;}\n.case525 ul{ width:661px;}\n.case525 ul li#fiest .pic{ width:120px; height:155px; float:left; display:block; overflow:hidden;}\n.case525 ul li#fiest .pic img{ width:120px; height:155px;}\n.case525 ul li .news_modle1_title,.case525 ul li p,.case525 ul li#fiest .time{ float:left; display:block; width:164px; margin-left:10px;}\n.case525 ul li#fiest{ padding-bottom:12px;}\n.case525  ul li a{ font-size:14px; color:#333; text-decoration:none; float:left;}\n.case525 ul li#fiest{ width:320px; margin-right:10px;}\n.case525 ul li#fiest .btn{ width:100px; float:left; display:block; background:#eb302f; color: #FFF; padding:3px 0; text-align:center;     border-radius: 4px;margin-left:10px;}\n.case525 ul li#fiest .btn:hover{ background: #666;}\n\n.news_modle2 ul li #pics,.news_modle2 ul li#fiest .pic img{ width:98px !important; height:73px !important; }\n.news_modle2 ul li #pics img{ width:98px; height:73px;}\n.news_modle2 ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.news_modle2 ul li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.news_modle2 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.news_modle2 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.news_modle2 ul li{ width:306px;float:left; padding :1px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.news_modle2 ul li a:hover{ text-decoration:underline;}\n\n.news_modle3 ul{ width:321px;}\n.news_modle3 li{ width:143px; height:108px; margin:7px; position:relative; overflow:hidden;}\n.news_modle3 li b{ display:block; width:133px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:-90px; color:#FFF; font-size:12px; font-weight:normal;}\n.news_modle3 li b a{color:#FFF; text-decoration:none;}\n.news_modle3 li b a:hover{ text-decoration:underline;}\n\n.case2,.case3{ width:960px; height:auto;}\n.case2 ul{ width:980px;}\n.case2 ul li{width:230px; height:180px; margin-right:13px;}\n.case2 ul li a{ position:relative; display:block; width:230px; height:173px; overflow:hidden;}\n.case2 ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n.case2 ul li a .case_title b ,.case2 ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n.case2 ul li a .case_title b{ background-position:-5px -559px;float:left;}\n.case2 ul li a .case_title p{ background-position:-5px -601px;float:right;}\n.case2 ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n.case2 ul li a .case_t b{ color:#fff; font-size:14px;}\n\n\n.case3 ul{ width:980px;}\n.case3 li#big{ width:485px; height:361px; margin-left:0;overflow:hidden;}\n.case3 li{ width:230px; height:173px; margin:7px 4px; position:relative;overflow:hidden;}\n.case3 li#big b{ width:475px;}\n.case3 li b{ display:block; width:220px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; color:#FFF; font-size:12px; font-weight:normal;}\n.case3 li b a{color:#FFF; text-decoration:none;}\n.case3 li b a:hover{ text-decoration:underline;}\n\n.case4 { width:960px;}\n.case4 ul{ width:980px;}\n.case4 li{ width:133px; height:100px; margin:1px; position:relative; border: solid 1px #CCCCCC;}\n.case4 li b{ display:block; width:216px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; color:#FFF; font-size:12px; font-weight:normal;}\n.case4 li b a{color:#FFF; text-decoration:none;}\n.case4 li b a:hover{ text-decoration:underline;}\n\n\n\n#footer{ width:100%; height:auto;;  border-top: solid 10px #dadada; background:#3c3c3c; padding:10px 0; position:relative;}\n#footer_in{ width:960px; height:auto; margin:0 auto; position:relative;}\n#footer_in .footer_shadow{ width:960px; height:10px; position:absolute; top:-30px;}\n#footer_in .footer_modle{ width:100%; height:auto; padding:10px 0 20px 0; margin:5px 0; border-bottom:solid 1px #CCCCCC; overflow:hidden; }\n#footer_in .footer_modle .title{ width:100%; height:auto; float:left; padding-bottom:5px;}\n#footer_in .footer_modle .title b{   color:#fff;display: block; font-size: 14px; width: 100%;}\n#footer_in .footer_modle .title  a{   color: #eb302f;display: block;font-size: 9px;text-transform: uppercase;}\n\n#footer_in .footer_modle .link{ width:211px; height:auto; float:left; overflow:hidden; margin-right:28px;}\n#footer_in .footer_modle .link ul{ width:100%; height:auto; display:block; overflow:hidden; float:left; border-top: 1px dashed #767676;}\n#footer_in .footer_modle .link ul li{    border-bottom: 1px dashed #767676;float: left;  width:100%; }\n#footer_in .footer_modle .link ul li a{ color:#ccc; font-size:12px; text-decoration:none; display:block; width:100%;padding: 5px 0; }\n#footer_in .footer_modle .link ul li a:hover{ background:#767676;}\n#footer_in .footer_modle .subscription{ float:left; width:262px; height:190px; margin-right:28px;}\n#footer_in .footer_modle .subscription .rssbook{ background:#2d2d2d !important; border:1px solid #4a4a4a !important; padding:21px 17px !important;}\n#footer_in .footer_modle .subscription .rssbook input.rsstxt{ width:97% !important; }\n\n#footer_in .footer_modle .icon{ width:260px; height:auto; overflow:hidden; float:left; margin-right:28px;}\n#footer_in .footer_modle .icon ul{ width:280px; height:auto; display: block;}\n#footer_in .footer_modle .icon ul li{ display:block; width:78px; height:61px; float:left; margin:0 10px 10px 0; border: solid 1px #666;}\n#footer_in .footer_modle .icon ul li:hover{border: solid 1px  #333; }\n\n#footer_in .footer_modle .dimensional{ width:138px; float:left;}\n#footer_in .footer_modle .dimensional img{ width:138px; height:138px;}\n\n#footer_in .links{ width:960px; height:auto; display:block;}\n#footer_in .links li{ display:inline; padding-right:15px;}\n#footer_in .links li a{ font-size:12px; color:#cacaca; text-decoration:none;}\n#footer_in .links li a:hover{ color:#FFF;}\n\n#footer_in p{ font-size:12px; color:#cacaca;}\n#footer_in p a{font-size:12px; color:#cacaca; text-decoration:none;}\n#footer_in p a:hover{ color:#eb302f}\n\n\n\n\n/* page_top */\n#page_top{ width:100%; height:56px; padding-top:20px; overflow:hidden; background-image: url(\"../images/pic_b.jpg\"); background-position:center; margin-top:-7px;}\n#page_top .page_top_in{ width:960px; height:76px; margin:0 auto;}\n#page_top .page_top_in h3{ display:block; width:100%; font-size:24px; color:#fff; font-weight:normal;text-transform:uppercase;}\n#page_top .page_top_in h3 a{ font-size:14px; color:#FFF; text-transform:uppercase;}\n#page_top .page_top_in p{ font-size:9px; color:#FFF;}\n#page_muen_nav{ width:960px; height:auto; padding:10px; margin:0 auto 10px auto ; border-bottom: dashed #D5D5D5 1px;}\n#page_muen_nav b,#page_muen_nav a{ font-size:12px; color:#666; text-decoration:none;}\n#page_muen_nav a:hover{color:#eb302f}\n\n\n/* content */\n#content{ width:960px; height: auto; padding:20px 0; margin:0 auto; overflow:hidden;}\n#content .left_mian{ width:240px; height:auto; overflow:hidden; float:left; padding:10px; border:solid 1px #EEE; }\n#content .right_mian{ width:680px; height:auto; overflow:hidden; float:right;}\n#content .case_pic{ position:relative; top:0; left:0;}\n#content .case_pic ul li{  position:relative; }\n#content .case_pic ul li .bottom_tucase{ width:319px; height:15px; position:absolute; bottom:-15px;background:url(\"../images/bottom.png\");}\n#content .case_pic ul li a{ overflow:hidden;position:relative;}\n#content .case_pic ul li .hover_case{ width:319px; height:190px; overflow:hidden; position:absolute; left:0; top:190px; background:url(\"../images/black_b.png\");}\n#test_list_b{ background:#FFF; margin-top:5px; box-shadow:0 0  3px #CCCCCC; margin-right:3px;}#test_list_b ul{ padding:0;}\n\n/* left */\n#content .left_mian .widget{ padding-bottom:15px; }\n#content .left_mian .widget,#content .left_mian .news_modle2 li{ width:240px !important; }\n#content .left_mian .news_modle2 li .news_modle1_title,#content .left_mian .news_modle2 li p{ width:159px;}\n#content .left_mian .news_modle1 li .news_modle1_title,#content .left_mian .news_modle1 li p{ width:142px;}\n#content .left_mian .news_modle3 li,#content .left_mian .news_modle3 li b, #content .left_mian .news_modle3 li a img{ width:124px; height:auto;}\n#content .left_mian .news_modle2 li .time,#content .left_mian .news_modle1 li .time,#content .left_mian  #vedio,#content .left_mian  #widget_news,#content .left_mian  #new525,,#content .left_mian #vedios ,#content .left_mian .case525,#content .left_mian .table1{ display:none;}\n#content .left_mian .case4 ul{ width:272px !important; }\n#content .left_mian .case4 ul li{ border: none;}\n#content .left_mian .case1 ul,#content .left_mian .case2 ul{ width:270px}\n#content .left_mian .case1 .caseleft,#content .left_mian .case2 .caseleft{ margin-left:20px;}\n#content .left_mian .case1 .caseleft ul li,#content .left_mian .case2 .caseleft ul li{ margin-right:20px;}\n#content .left_mian .case1 .caseleft .loop_big_caj_nav,#content .left_mian .case2 .caseleft .loop_big_caj_nav{ width:191px;}\n#content .left_mian .case3  ul li#big,#content .left_mian .case3  ul li#big img{ width:270px; height:203px;}\n#content .left_mian .case3  ul li#big b,#content .left_mian  .case3 ul{width:270px; display:block;}\n#content .left_mian .case3  ul li,#content .left_mian .case3  ul li a,#content .left_mian .case3  ul li a img{ width:127px; height:96px;}\n#content .left_mian .case3  ul li b{ display: none;}\n\n.pager {width:95%;overflow:hidden;white-space:nowrap;padding:4px;float:left;text-align:left; margin:20px 0;}\n.pager a { background:#333; color:#FFF; font-size:12px;margin:2px;padding:6px 12px; text-decoration:none; float:left;}\n.pager a.current {background:#eb302f; font-size:12px;margin:2px;padding:6px 12px;}\n.pager a:hover {background:#eb302f;font-size:12px;color:#fff;text-decoration:none;}\n.hover_incase{ position:absolute; top:0; left:0; display:none;}\n\n/*news_loop_01*/\n.news_loop_01{ display:block; width:100%; height:auto; overflow:hidden;}\n.news_loop_01 li{ float:left; display:block; width:100%; padding:10px 0; border-bottom:dashed #999999 1px;}\n.news_loop_01 li .news_001_pic{ width:83px; height:83px; display:block; overflow:hidden; float:left; position:relative;}\n.news_loop_01 li span{ display:block; float:left; padding-left:15px; width:428px;}\n.news_loop_01 li .news_001_pic img{ width:88px; height:88px; position:absolute;}\n.news_loop_01 li#fist .news_001_pic,.news_loop_01 li#fist .news_001_pic img{ width:143px; height:108px;}\n.news_loop_01 li#fist .news_001_pic{ border:8px solid #fff; margin-left:3px; box-shadow: 0 1px 3px #E1E1E1;}\n.news_loop_01 li#fist a.news_001_pic:hover{border:8px solid #eb302f;}\n.news_loop_01 li#fist span{ width:450px;}\n.news_loop_01 li span b{ font-size:18px; color:#333; display:block;}\n.news_loop_01 li span b a{ color:#333; text-decoration:none;}.news_loop_01 li span b a:hover{ color:#eb302f;}\n.news_loop_01 li span a.time{ font-size:12px; color:#eb302f; margin:4px 0;}\n.news_loop_01 li span p{ display:block; font-size:12px; color:#333;}\n.news_loop_01 li span a.news_btn{ color:#eb302f; font-size:14px; display:block; padding-left:25px;background:0 -615px no-repeat url(\"../images/Sprites.png\"); margin-top:10px; }\n.news_loop_02 li{ float:left; display:block; width:100%; padding:6px 0; border-bottom:dashed #999999 1px;}\n.news_loop_02 li a{ font-size:14px; color:#666; padding-left:15px; background:0 -294px no-repeat url(\"../images/Sprites.png\"); text-decoration:none; float:left}\n.news_loop_02 li p{ float:right; font-size:12px; color:#999;}\n.news_loop_02 li a:hover{ color:#eb302f}\n\n.case_pic{ position:absolute; left:0; top:180px;}\n.case_pic ul{ width:1004px; height:auto; overflow:hidden; margin:0; padding:0;}\n.case_pic ul li{ width:290px; height:344px; background:#FFF; margin:0 17px 10px 3px; float:left; display:block; border:8px solid #fff;  box-shadow: 0 1px 3px #E1E1E1;}\n.case_pic ul li a{ display:block; overflow:hidden; width:290px; height:215px; float:left; border-bottom:3px solid #FFF;}\n.case_pic ul li a:hover{ border-bottom:3px solid  #eb302f}\n.case_pic ul li:hover{border:8px solid  #E4E4E4;}\n.case_pic ul li b{ float:left; padding:7px 10px; font-size:14px; color:#333; }\n.case_pic ul li p{ float:left; padding:0 10px; font-size:12px; color:#666; margin:0;}\n#text_list li span{ width:606px !important;}\n\n\n#pic_text_list li#big .news_001_pic,#pic_text_list li#big .news_001_pic img{ width:290px; height:215px;}\n#pic_text_list li#big .news_001_pic{ margin-left:3px;}\n#pic_text_list li#big span{ width:302px}\n#pic_text_list li#big a.news_001_pic:hover{ background:#DFDFDF;}\n#pic_text_list{ padding:0; margin:0;}\n#pic_text_list li#big .news_001_pic{ padding:10px; background:#FFF; box-shadow:0 0 3px #CCCCCC;}\n#pic_text_list .tag{ margin-top:10px;}\n\n/* page&single */\n.enter{ width:100%; height:auto; overflow:hidden;}\n.enter p{ font-size:12px; color:#666; line-height:22px;}\n.enter a{ color:#eb302f}\n.enter img{ max-width:100%; height:auto;}\n.title_page{ width:610px; border-left:solid 9px #eb302f; border-right:#CCC solid 1px; border-top:#CCC solid 1px;border-bottom:#CCC solid 1px;background:#FFF; padding:5px;}\n.enter_full .title_page,#nav_product_mue .title_page{ width:939px;}\n.title_page h1{ font-size:16px; margin:0;}\n#nav_product_mue .title_page{ margin-bottom:10px;}\n#nav_product_mue .title_page a{ font-size:12px; color:#eb302f; margin-left:5px;}\n\n.enter_full  .des_page{ width:936px;}\n.title_page h1 .title_page .title_page b{ font-size:16px; color:#333; font-weight:normal; margin:0;}\n.des_page{ width:650px; padding:10px; margin-bottom:10px; border-bottom:dashed #CCCCCC 1px;}\n.des_page a{ font-size:12px; color:#999;}\n.des_page ul{ display:inline-block; margin-left:10px;}\n.des_page ul li{margin-left:10px;}\n#nogallery_enter .gallery_xz,#nogallery_enter .list-h,#nogallery_enter #enter_xz{ display:none !important;}\n#enter_xz{ background:#FFF; border:10px solid #fff;box-shadow: 0 1px 3px #333333; margin:15px 0 10px 5px;border-radius: 5px;}\n.smaoll_xzs,.smaoll_xzs li{ width:600px !important; min-height:400px;}\n.big_xzs,.big_xzs li{ width:930px !important; min-height:500px;}\n#enter_xz ul li{ text-align:center;}\n#enter_xz .next{ position:absolute; width:91px; height:100%; background: no-repeat center url(\"../images/next.png\"); bottom:0; right:-91px; z-index:100; cursor:pointer;}\n#enter_xz .prve{ position:absolute; width:91px; height:100%; background:no-repeat center url(\"../images/prev.png\"); bottom:0; left:-91px;  z-index:100;cursor:pointer;}\n.bqc{ border-top:#CCC dotted 1px;}\n#bandds .list-h{ width:100%; display:block; overflow:hidden; padding:0; margin:0;}\n#bandds .list-h li{ float:left; margin:9px;}\n/* product */\n.enter_cs{ display:block; width:650px; padding:10px 0 10px 0; font-size:18px; color:#eb302f; margin:15px 0; border-bottom:#999 1px dashed;}\n.product_pic{  width:624px; height:400px; display:block; overflow:hidden; border:solid #d6d6d6 3px; float:left; position:relative;}\n.product_pic .loading{  width:624px; height:400px;position:absolute; background: center no-repeat url(\"../images/loading.gif\"); display:none;}\n.product_pic img{  width:624px; height:400px;}\n.product_text{ width:627px; height: auto; float:right; overflow:hidden;}\n.product_text h1{ font-size:18px; color:#333;}\n.product_text .time{ font-size:12px; color:#999; display:block; width:200px; margin:3px 0;}\n.tag_pro{ display:block; width:100%; height:auto; overflow:hidden;margin:10px 0;}\n.product_text ul li{ display:inline-block; margin-right:10px; text-decoration:none;}\n.product_text ul li a{ font-size:14px; color:#999;} .product_text ul li a:hover{ color:#eb302f;}\n.tag_pro a{ display:block; background:#666; color: #FFF; font-size:12px; text-decoration: none; margin:0 10px 5px 0; border-radius: 5px; float:left; padding:5px 5px; cursor: pointer;}\n.tag_pro a.selecttag{ background:#eb302f;}\n.tag_pro a:hover{ background:#eb302f;}\n.product_text span,.product_jianjie span{ display:block; width:100%;margin-bottom:0; color:#eb302f; font-size:16px; padding-bottom:5px; border-bottom:solid 1px #999; margin-top:0;}\n.product_text .de_product{ width:100%; height: auto; overflow:hidden;font-size:12px; color:#666; margin-bottom:5px;}.product_text .de_product span{ border:none;}\n.product_text .btn,.product_jianjie .btn{ display:block; width:260px; text-align:center; padding:10px 0; background:#ff9c00; border:3px solid #cecece; border-radius: 5px; font-size:18px; color:#FFF; text-decoration:none;}\n.product_jianjie .btn{ float:left;}\n.product_text .btn:hover{ background:#333;}\n.product .list{ width:624px; padding:2px; border:1px solid #CCC; height:79px; background:#FFF; float:left; margin-top:20px; }\n.product .list .prve,.product .list .next{ display:block; background:#e4e4e4; height:59px; padding:10px; font-size:12px; color:#FFF; float:left; line-height:55px; cursor:pointer; }\n.product .list .prve:hover,.product .list .next:hover{ background:#eb302f;}\n.product .list ul{ width: auto; float:left; display:block; height:81px; margin:0; padding:0;}\n.product .list .lsit_hover{ width:566px; float:left; display:block; height:81px; overflow:hidden;}\n.product .list ul li{ float:left; display:block; width:100px; height:75px; border:#CCC solid 2px; margin:0 5px;}\n.product .list ul li a img{ width:100px; height:75px;  }\n.product .list ul li:hover,.bodee{ border:solid 2px #eb302f !important;}\n.product .list ul li a{ cursor:pointer;}\n.aligncenter { display: block; margin-left: auto; margin-right: auto; }\n.aligncenter p.wp-caption-text {display: block;margin-left: auto;margin-right: auto;text-align: center;} \n#full_prodcts_single{ overflow:hidden; width:100%;}#full_prodcts_single .product{ width:628px;}\n#full_prodcts_single .product_text{ width:100%; text-align:left;}\n#full_prodcts_single .product_pic,#full_prodcts_single .list{ float:left; overflow:hidden;}\n.product_jianjie{ float:right; width:305px; overflow:hidden;}\n#full_prodcts_single .enter_cs{ width:100%;}\n#full_prodcts_single .product .list .lsit_hover{ width:894px; float:left; display:block; height:84px; overflow:hidden;}\n#full_prodcts_single .product .list{ width:952px;}\n#full_prodcts_single .de_product{ margin:10px 0;}\n.de_product p{ font-size:14px; color:#333;}\n.relevant li{ width:470px !important;}.relevant_right li{ width:300px !important;}\n.relevatright_div,.relevatright_div ul{width:630px !important;}\n.relevat_b{ display:block; font-size:14px; border-bottom:#CCC dotted 1px; color:#666;}\n.relevat_div{ padding-top:10px !important;} \n\n#respond{ padding:10px 0; border-top:dashed #999999 1px; margin-top:20px;}\n.liuy3{ padding:10px 0; color:#666; font-size:12px;}\n.liuy2{ float:left; padding-right:10px; width:50px; overflow: hidden}\n#commentform input ,#commentform  textarea { border:#ccc solid 1px; background:#FFF; padding:5px; }\n#commentform #submit{ padding:5px 20px; background:#eb302f ; color:#FFF; font-weight:bold; margin:0 0 0 60px; cursor:pointer;border-radius: 5px;}\n#commentform #submit:hover{ background:#333; }\n\n.kefu{ width:50px; height:auto; background:#fff; padding:2px; position:fixed; right:3px; top:200px; _position:absolute; _top:expression(eval(document.documentElement.scrollTop+200));\n_left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||3));\nborder:solid 1px #CCC; z-index:3;}\n.kefu .kefu_d{ width:50px; height:50px; background-image:url(../images/Sprites.png); border-bottom:dotted 1px #CCCCCC; position:relative;}\n.kefu .kefu_d:hover{ background-color:#F2F2F2; cursor:pointer;}\n.kefu #top{ background-position:9px -803px;}\n.kefu #top a,.kefu #homes a,.kefu #shoucang a{ display:block;width:50px; height:50px;}\n.kefu #weixin{ background-position:9px -846px;}\n.kefu #weixin div{ width:201px; height:auto; overflow:hidden;}\n.kefu #kefu_severs{ background-position:9px -892px;}\n.kefu #kefu_severs div{ width: auto; height:auto; padding:10px;}\n.kefu #kefu_severs div a{ display:block; width:100%; float:left; padding:5px 0; border-bottom:#CCC dashed 1px; color:#666; font-size:14px; line-height:24px;}\n.kefu #shoucang{ background-position:9px -936px;}\n.kefu #homes{ background-position:9px -981px;}\n.kefu .kefu_d div{ position:absolute; top:0; right:50px; background:url(../images/white.png); display:none; border:#CCC solid 1px;}\n/* END screen media */\n\n.left_mian  #vedios  ul{ width:279px !important; height:auto !important;}\n.left_mian  .vedio_kuang{width:258px !important;}\n.left_mian #vedios .vedio_kuang iframe { width:259px !important;}\n.left_mian #s{ width:187px;}\n.searchd{ width:100%; padding:5px 0; overflow:hidden;}\n.searchd h2{ font-size:14px; color:#666; margin:2px 0;}\n#s{ width:230px; padding:3px; border:#999 solid 1px; overflow:hidden; float:left;}\n#searchform select{ width: auto; padding:2px; border:#999 solid 1px;}\n#searchsubmit{ background:#eb302f; padding:3px 10px; color:#FFF; cursor:pointer; border:none;    text-transform: uppercase; float:left;}\n#searchsubmit:hover{ background:#333;}\n#searchform{ padding-bottom:7px; overflow:hidden;}\n.searchd b{ float:left; font-size:12px;}\n.searchd a{ font-size:12px;  text-decoration:none;border-radius:3px; padding:2px 5px; margin:0 3px 8px 0; float:left; border: solid 1px #999;color:#eb302f;}\n.searchd a:hover{ background:#eb302f; color:#FFF;}\n.seach23 #searchform{ float:right; }\n.seach23 { width:100%; height:23px;}\n.seach23 p{ float:left; font-size:12px; color:#666; line-height:23px;}\n/*Alignment*/\n.alignleft { display:inline; float:left; margin-right:1.625em;}\n.alignright {display:inline;float:right; margin-left:1.625em;}\n.aligncenter { clear:both; display:block; margin-left:auto; margin-right:auto;}\n.rssbook .btn,.rssbook  .subscribeButton{  color: #ffffff; cursor: pointer; display: block;font-weight: bold; height: 22px; line-height: 22px;  text-align: center;  width: 90px;background:#676767; border: 1px solid #777;float: right;}\n.rssbook label { width:35px; padding-right:10px; color:#CCC; font-size:12px; display:block; float:left; line-height:26px;}\n.rssbook .sml_nameinput,.rssbook .sml_emailinput{ width:170px;font-size: 14px;height: 20px;margin-bottom: 5px;padding: 2px 3px; background:#999; border:solid 1px #999999;}\n.rssbook .required th,.rssbook .required td{ width:128px; float:left; display:block; padding-bottom:5px;}\n.rssbook .required td input { width:221px; margin-bottom:5px;}\n.rssbook .required th label{ width:100%;}\n.nav_product_mu ,#nav_product_mue { display:block; width:960px; height:auto; overflow:hidden;}#nav_product_mue { margin:0 auto; padding:10px 0; border-bottom:1px solid #999;}\n.nav_product_mu li{ width: auto; height:auto; display:block; float:left;}\n.nav_product_mu li.menu-item-has-children{ width:100%; margin-bottom:10px;} \n.nav_product_mu li a{ display:block; width: auto; height:auto; font-size:14px; color:#333; font-weight:bold;  padding:2px; float:left; margin-right:10px; text-align:center; text-decoration:none;border-radius:5px;}\n.nav_product_mu li .sub-menu{ display:block; float:left;}\n.nav_product_mu li .sub-menu li{ display:inline-block; margin-right:10px;}\n.nav_product_mu li .sub-menu li a{ color:#999; font-size:12px ;  width:auto ; padding:3px; font-weight:normal; cursor:pointer; }\n.nav_product_mu li .sub-menu li a:hover{ color:#fff !important;background:#ff0000;}      \n\n\n#nav_product_mue  #choose{ padding:3px 30px; background:#ff0000; color:#FFF; border: none;text-transform: uppercase; cursor:pointer;}\n#nav_product_mue  #choose:hover{background:#333; }\n.select{ background:#ff0000; color:#FFF !important;font-weight:bold !important;}\n#tagesulg,#catsulg{ display: none;}\n#tagesname{ width:730px; background:#EAEAEA; border:none; font-size:14px; color:#666; padding:3px;}\n.s_search_ys{ background:#FFF; float:left; width:950px; padding:5px;}\n\n\n.order_list{ width:96%; padding:5px 2%; height:auto; display:block; overflow:hidden;}\n.order_list li{ display:block; width:100%; height:auto; padding-bottom:10px;  border:#ccc solid 1px; margin-bottom:10px; overflow:hidden;}\n.order_list li .order_top{ width:96%; height:auto; padding:5px 2%; background:#E1E1E1; overflow:hidden; border-bottom:1px solid #CCC;}\n.order_list li .order_top b{ font-size:14px; color:#333; float:left;}\n.order_list li .order_top .star{ font-size:12px; color:#fff; float:right; display:block; background:#F60; border:#CCC; border-radius:5px; padding:3px; text-decoration:none;}\n.order_list li .order_top .star:hover{ background:#F30;}\n.order_list li .order_top em{ float:right; font-size:12px; color:#333;}\n.order_list li .order_pic{ width:15%; height:auto; overflow:hidden; display:block; float:left; margin:2%; float: left;}\n.order_list li .order_more{ width:80%; float:left; margin-top:2%;}\n.order_list li .order_post_name { font-size:14px; color:#333; text-decoration:none; width:100%; font-weight:bold;}\n.order_list li .red{ font-size:14px; color:#F00;}\n.order_list li p{ margin:0; color:#333;}\n.order_list li a{ color:#03F;}\n.order_list li .orderstatus{ display:block; padding:2px;  border:#ccc solid 1px; margin:3px 0;}\n.order_comment{ width:96%; height:auto; overflow:hidden; padding:2%;}\n.order_comment p{ display:block; width:100%; overflow:hidden;}\n.order_star{ display:block; width:21px; height:17px; float:left; cursor:pointer;}\n#order_comment em{ float:left; margin-left:10px;}\n#order_stars{ width:107px; height:17px; background-image:url(../images/star_y.png); background-repeat:no-repeat; display:block;}\n.order_stars_4{ background-position:0 -21px ;}\n.order_stars_3{ background-position:0 -42px ;}\n.order_stars_2{ background-position:0 -63px ;}\n.order_stars_1{ background-position:0 -84px ;}\n.order_comment textarea{ border:solid #CCC 1px; background:#FFF;border-radius:5px; padding:2%; font-size:14px; color:#666; width:95%;}\n.order_comment .button-primary{ border:#FFF solid 1px; background:#F60; color:#FFF; padding:5px 8px; cursor:pointer;border-radius:5px; margin-top:10px; }\n.order_comment .button-primary:hover{ background:#F30;}\n.order-pagination{ width:96%; padding:2%; height:auto; overflow:hidden; }\n.order-pagination span{ font-size:14px; color:#333 ; padding:2px 5px; float:left; display: block;margin:0 2px;}\n.order-pagination a{ display:block; float:left; padding:2px 5px; border:solid #CCC 1px; margin:0 2px; color:#333; text-decoration:none;}\n.order-pagination a:hover{ color:#FFF; background:#666;}\n.per_title{ font-size:14px; display:block; width:100%; padding:2px 0; border-bottom:dashed 1px #CCCCCC; font-weight:bold;}\n.per{ display:block; width:95%; padding:5px 2%; background:#F7F7F7; border: none; font-size:14px; color:#666;  font-weight:bold; float:left;}\n.right_btn{ float:right; color:#069 !important; font-size:12px; font-weight:normal;}\n\n\n/* shop*/\n.shop_form{ width:100%; height:auto; overflow:hidden;}\n.information{ display:block; width:95%; padding:5px 2%; border:#F60 solid 1px; background:#FDEBC6; color:#F00; margin:5px 0 15px 0;font-size:14px; float:left; }\n.success{border:#9C0 solid 1px; background:#E7F4A8;}\n.shop_form div{ width:96%; padding:3px 2%; height: auto; float:left; overflow:hidden; margin-bottom:8px;}\n.shop_form label{ font-size:14px; color:#333; margin-right:10px; width:105px; display:block; float:left; }\n.shop_form input{ float:left; width:40%;}\n.shop_form input,.shop_form textarea { padding:3px; border:#999 solid 1px; font-size:14px; color:#666;border-radius:3px;} \n.shop_form textarea{ width:96%; padding:1.5%; margin:3px 0;}\n.shop_form div em{ font-size:12px; color:#999;line-height:18px; margin-left:10px;}\n.shop_form div a{ margin-right:10px;}\n.shop_form  #wp-submit{ padding:5px 25px; background:#F60; color:#FFF; cursor:pointer;float:right;} \n.shop_form  .wp-submit{ padding:5px 45px; background:#F60; color:#FFF; cursor:pointer; border:solid #FFF 1px; margin:5px 0 0 112px;} \n.shop_form  #wp-submit:hover,.shop_form  .wp-submit:hover{ background: #F30; }\n#rememberme{ width:17px; margin:5px 0 0 112px;}\n.captcha{margin:5px 0 0 112px; }\n.captcha img{ width:180px; height:auto; border: solid #CCC 1px;}\n#original{ font-size:14px; color:#666; text-decoration:line-through; margin:0 10px 0 0}\n#price_now,#price_all{ font-size:14px; color:#F00;}\n#shop_price{ width:100%; margin:10px 0;}\n#shop_price_all{ width:100%; margin:0 0 10px 0;}\n.shop_comment{ width:100%; height:auto; margin:20px 0;}\n.shop_comment .shop_comment_title{ width:100%; margin:10px 0; font-size:16px; color:#333; border-bottom:dashed 1px #CCCCCC; display:block;}\n.shop_comment li{ width:100%; height:auto; margin-bottom:5px; border-bottom:#E6E6E6 1px dotted;}\n.shop_comment li p{ width:100%; height:auto; display: block; overflow:hidden;font-size:12px; color:#666;}\n.shop_comment li p b{ font-size:14px; color:#333; float:left;}\n.shop_comment li p span{ font-size:12px; color:#999; float:right;}\n.btn{ cursor:pointer;}\n.close_order{ float: right; line-height:21px; color:#999; font-weight:normal; cursor:pointer; font-size:12px;}\n.de_product p .original_price{ color:#333; text-decoration:line-through; text-decoration:line-through; float:none}\n.de_product p .price{ color:#F60; font-size:18px;}\n.shop_form{ width:100%; height:auto; overflow:hidden; padding-top:20px; }\n.hidden_block{ display:none;}\n.information{ display:block; width:95%; padding:5px 2%; border:#F60 solid 1px; background:#FDEBC6; color:#F00; margin:5px 0 15px 0;font-size:14px; float:left; }\n.information a{ font-size:14px; color:#069; margin:0 3px; text-decoration:none;}\n.success{border:#9C0 solid 1px; background:#E7F4A8;}\n.enter_cs{ display:block; width:628px; padding:0;  margin:15px 0; border:#ccc 1px solid; overflow:hidden;background:#FFF;}\n.enter_cs a{font-size:14px;padding:5px 15px; float:left; cursor:pointer; color: #333; border-right:solid #ccc 1px; }\n.enter_cs a.cutyes{ background:#999; color:#FFF; font-weight:bold;}\n.tag_pro b{display:block; float:left; font-size:14px;}\n#shop_login{ float:right; height:34px; line-height:34px;}\n#shop_login a{ font-size:12px; color:#FFF; display:block; margin-right:10px; float:left;}\n#shop_login a:hover{ text-decoration:underline;}\na.btn_login{ display:block; padding:0 18px; background:#a8302f; color:#FFF; height:20px; line-height:20px; margin-top:5px;border-radius:5px; border:#FFF solid 1px; }\na.btn_login:hover{ color:#FFF; background:#000; color:#CCC; text-decoration: none !important;}\n.original_price{ color:#CCC; font-size:12px; float:left; display:block; text-decoration:line-through; margin-right:10px; line-height:20px; padding:1px 3px;}\n#price{ color:#FFF;  margin-left:0; padding:1px 3px; background:#eb302f; font-size:14px;border-radius:3px; float:left;font-weight:bold; font-style:normal;}\n#price_l{ color:#fff; float:left; margin:0 0 3px 0;padding:1px 5px; background:#333; font-size:14px;border-radius:3px; font-size:14px; }\n.shop_p  .original_price{ color:#666; font-size:12px; width:100px; margin:0;}\n.shop_p {margin:3px 0 3px 0; }\n.prices_p,.case_pic .time{ width:100%; display:block; overflow:hidden; padding:0 0 10px 10px;}\n#white{ color:#CCC; margin-right:5px;}\n#full_prodcts_single .de_product{ margin:10px 0; max-height:245px;}\n#black{ color:#333; margin-left:10px;}\n.case_pic ul li p{ height:55px;}\n#big #price,#big .original_price{  float:none; display:inline;}\n.ppre{ margin:5px 0;}\n\n\n/*2015-3-19 shop_community*/\n\n#cat_bbs_list{ width:99%;  overflow:hidden; float:left; background:#FFF; border:#CCC solid 1px;}\n#cat_bbs_list_title{ width:96%;padding:15px 2% 8px 2%;height:auto; background:#fff;border-bottom:#CCC solid 1px; overflow:hidden;}\n#cat_bbs_list_title span{ display:block; float:left;}\n#cat_bbs_list .btn_loop{ width:96%;padding:10px 2%; float:left;border-bottom:#CCC solid 1px; overflow:hidden; background:#F3F3F3}\n#cat_bbs_list .btn_loop a{ font-size:14px;  margin-right:15px; color:#333; text-decoration:none; background-image:url(../images/bbs_sp.png); background-repeat: no-repeat; padding-left:25px; line-height:30px;}\n#cat_bbs_list .btn_loop a:hover{ text-decoration:underline;}\n#cat_bbs_list .btn_loop a#all{ background-position:-2px -8px; }\n#cat_bbs_list .btn_loop a#jinghua{ background-position:-2px -44px; } \n#cat_bbs_list .btn_loop a#huitie{ background-position:-2px -84px; }\n\n#cat_bbs_list_title h1,#post_bbs_page_from_title h1{ font-size:16px; color:#666;  margin:5px 0; float:left; margin-right:10px;}\n#cat_bbs_list_title b{ font-size:12px; font-weight:normal; color:#666; float:left; line-height:30px; margin-left:10px;} \n#cat_bbs_list_title .post_btn,#post_bbs_page_from_title .post_btn{ float:right; display:block; padding:3px 5px; background:#3998C6; color:#FFF; font-size:14px;border-radius:5px; }\n#cat_bbs_list_title .post_btn:hover{ background:#333;}\n#cat_bbs_list ul li{ width:96%;padding:0 2%;height:auto; display:block; float:left; border-bottom:#CCC dashed 1px;}\n#cat_bbs_list ul li:hover{ background:#F3F3F3;}\n#author_bbs_avatar { width:80px; overflow:hidden; float:left; min-width:50px; text-align:center; padding-bottom:15px; padding-top:15px; position: relative;}\n#author_bbs_avatar #louzhu{ width:36px; height:36px; position:absolute; top:0; right:0; background: 0 -128px url(../images/bbs_sp.png);}\n#author_bbs_avatar #huifu{ width:36px; height:36px; position:absolute; top:0; right:0; background: 0 -183px url(../images/bbs_sp.png);}\n#author_bbs_avatar a{ display:inline-block; padding:3px; border:#999 1px solid; background:#FFF; overflow:hidden; font-size:0;border-radius:100%; }\n#author_bbs_avatar b{ font-size:14px; color:#999;}\n#author_bbs_avatar a img{ width:100%; height:auto;border-radius:100%;}\n#cat_bbs_list ul{ width:100%; padding:0; margin:0; overflow:hidden; display:block;}\n#cat_bbs_list ul li .left_bbs_single{  display:block; overflow:hidden; margin-left:100px;padding:15px 0;}\n#cat_bbs_list ul li #left_bbs_single{ margin-left:0; padding-left:20px; background:#FAFAFA; padding-right:10px; padding-bottom:120px; position:relative; }\n#cat_bbs_list ul li .left_bbs_single .bbs_a_title{ font-size:16px; color:#666; font-weight:bold; text-decoration:none;}\n#cat_bbs_list ul li .left_bbs_single .bbs_a_title:hover{ text-decoration:underline;}\n#cat_bbs_list ul li .left_bbs_single div,#cat_bbs_list ul li .author_bbs_avatar div{ width:100%; overflow:hidden; margin:5px 0;}\n#cat_bbs_list ul li .left_bbs_single div b{ display:block; padding:3px 5px; background:#A5A5A5; color:#FFF; font-size:12px; margin-right:10px; float:left;border-radius:5px; font-weight:normal;}\n#cat_bbs_list ul li #author_bbs_avatar div b{ font-size:12px; font-weight:normal; display:inline-block; margin-bottom:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.jinghua{ padding:3px 5px; background:#7ECDD3; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.bbs_over{ padding:3px 5px; background:#70AB1F; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.admin_answer{ padding:3px 5px; background:#F60; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li span div b.zhiding{ background:#FF7171;}\n#cat_bbs_list ul li span div b.jinghua{ background:#7ECDD3}\n#cat_bbs_list ul li span div b.bbs_over{ background:#70AB1F}\n#cat_bbs_list ul li span p{ margin-top:10px;text-indent:0 !important;word-break:break-all; /*支持IE，chrome，FF不支持*/\n　word-wrap:break-word;/*支持IE，chrome，FF*/}\n#cat_bbs_list ul li span a#zd_shop_bbs{ color:#F00;}\n.nav_bbs{ width:100%; height:auto; padding:10px 0; overflow:hidden;}\n.nav_bbs a{ display:block; padding:3px 8px; border:solid 1px #CCCCCC; margin-left:5px; float:left; color:#666; text-decoration:none;}\n.nav_bbs a:hover,.nav_bbs a.current{ background:#666; color:#FFF;}\n\n.post_bbs_page_from{ width:96%;padding:10px 1.5%; overflow:hidden; }\n.post_bbs_page_from #tougao_content_ifr{border:solid 1px #CCCCCC;}\n#post_bbs_page_from_title{width:96%;padding:10px 2%; overflow:hidden;background:#F3F3F3; margin-bottom:20px;}\n.post_bbs_page_from .cat{ width:100%; height:auto; padding:5px 0; margin-bottom:15px;}\n.post_bbs_page_from .cat label { font-size:14px; color:#666;}\n.post_bbs_page_from input#tougao_title,.post_bbs_page_from input#CAPTCHA{ padding:8px; border:solid 1px #CCCCCC; width:60%;}\n.error{ display:block; padding:5px; background:#FFD9D9; border:#F00; color:#F00; font-size:14px; text-indent:0 !important;}\n.post_bbs_page_from .submit{ float: left; display:block; padding:5px 60px; border: none; cursor:pointer; background:#3998C6; color:#FFF; font-size:16px;border-radius:5px; margin-right:20px;}\n.post_bbs_page_from  .reset{ float: left; display:block; padding:5px 60px; border: none; cursor:pointer; background:#ccc; color:#FFF; font-size:16px;border-radius:5px;}\n.yzmmmm{ display:block; width:100%;}\n.tijiao{ padding:10px 0 20px 50px; overflow:hidden;}\n.wp-editor-tabs{ display:none !important;}\n.single_bbs_avatar{ padding-right:10px; }\n#cat_bbs_list ul li#single_bbs_li{ padding:0 0 0 2% !important; width:98%;} \n#bbs_enter p,#bbs_enter a, #bbs_enter b{ font-size:14px;}\n#cat_bbs_list ul li  span .datetime{ position:absolute; display:block; right:10px; bottom:15px; width:200px;}\n#cat_bbs_list ul li  span .datetime a{ margin-left:10px;}\n.comment_ector{ width:100%; overflow:hidden; position:relative; padding-top:50px;}\n.comment_ector .tutle{position:absolute; left:10px; top:0; width:100%; height:60px;}\n.comment_ector .avatar_comment{ width:60px; height:60px;display:block; padding:3px; border:#999 1px solid; background:#FFF; overflow:hidden; font-size:0;border-radius:100%; float:left; margin-right:10px;}\n.comment_ector .avatar_comment img{width:60px; height:60px;border-radius:100%; }\n.comment_ector span{ width: auto; display: block; float:right; height:32px; padding:15px 15px 0 0}\n#comment_bbs{ width:98%; padding-top:30px !important; border:solid 1px #CCCCCC;}\n.comment_ector b{ font-size:14px; color:#999; line-height:51px;}\n#commentform #submit{ margin:0 !important; }\n.per b,.per a{ line-height:60px;}\n.per_title{ display:block; overflow:hidden; border-bottom:solid 1px #CCCCCC; padding:0;}\n.per_title a{ display:block; padding:5px 15px; background:#CCC; float:left; color:#fff; margin-right:1px; cursor:pointer; text-decoration: none;}\n.per img{ float:left; margin-right:20px; width:60px; height:60px; border-radius:60px; border:solid 4px #FFFFFF;}\n\n.wptdb_right{position: absolute;right: 5px;z-index: 99999999999;}\n/*#btnlogin{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #f80; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #f80; background: -webkit-gradient(linear, left top, left bottom, from(#ffbb33),to(#ff8800));}*/\n#btnlogin{ width: 78px; height: 43px; background:url(\"../images/index/login_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnlogin:hover{ background:url(\"../images/index/login_as.png\");}\n/*#btnregister{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #0095d8; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #0095d8; }*/\n#btnregister{ width: 173px; height: 43px; background:url(\"../images/index/register_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnregister:hover{ background:url(\"../images/index/register_as.png\");}\n/*#btnlogout{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #7d1110; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #eb302f; }*/\n#btnlogout{ width: 78px; height: 43px; background:url(\"../images/index/logout_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnlogout:hover{ background:url(\"../images/index/logout_as.png\");}"
  },
  {
    "path": "src/main/webapp/style/eu/index/thickbox.css",
    "content": "#TB_overlay {\n\tbackground: #000;\n\topacity: 0.7;\n\tfilter: alpha(opacity=70);\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 100050; /* Above DFW. */\n}\n\n#TB_window {\n\tposition: fixed;\n\tbackground-color: #fff;\n\tz-index: 100050; /* Above DFW. */\n\tvisibility: hidden;\n\ttext-align: left;\n\ttop: 50%;\n\tleft: 50%;\n\t-webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 );\n\tbox-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 );\n}\n\n#TB_window img#TB_Image {\n\tdisplay: block;\n\tmargin: 15px 0 0 15px;\n\tborder-right: 1px solid #ccc;\n\tborder-bottom: 1px solid #ccc;\n\tborder-top: 1px solid #666;\n\tborder-left: 1px solid #666;\n}\n\n#TB_caption{\n\theight: 25px;\n\tpadding: 7px 30px 10px 25px;\n\tfloat: left;\n}\n\n#TB_closeWindow {\n\theight: 25px;\n\tpadding: 11px 25px 10px 0;\n\tfloat: right;\n}\n\n#TB_closeWindowButton {\n\tposition: absolute;\n\tleft: auto;\n\tright: 0;\n\twidth: 29px;\n\theight: 29px;\n\tborder: 0;\n\tpadding: 0;\n\tbackground: none;\n\tcursor: pointer;\n\toutline: none;\n\t-webkit-transition: color .1s ease-in-out, background .1s ease-in-out;\n\ttransition: color .1s ease-in-out, background .1s ease-in-out;\n}\n\n#TB_ajaxWindowTitle {\n\tfloat: left;\n\tfont-weight: 600;\n\tline-height: 29px;\n\toverflow: hidden;\n\tpadding: 0 29px 0 10px;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\twidth: calc( 100% - 39px );\n}\n\n#TB_title {\n\tbackground: #fcfcfc;\n\tborder-bottom: 1px solid #ddd;\n\theight: 29px;\n}\n\n#TB_ajaxContent {\n\tclear: both;\n\tpadding: 2px 15px 15px 15px;\n\toverflow: auto;\n\ttext-align: left;\n\tline-height: 1.4em;\n}\n\n#TB_ajaxContent.TB_modal {\n\tpadding: 15px;\n}\n\n#TB_ajaxContent p {\n\tpadding: 5px 0px 5px 0px;\n}\n\n#TB_load {\n\tposition: fixed;\n\tdisplay: none;\n\tz-index: 103;\n\ttop: 50%;\n\tleft: 50%;\n\tbackground-color: #E8E8E8;\n\tborder: 1px solid #555;\n\tmargin: -45px 0 0 -125px;\n\tpadding: 40px 15px 15px;\n}\n\n#TB_HideSelect {\n\tz-index: 99;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tbackground-color: #fff;\n\tborder: none;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\theight: 100%;\n\twidth: 100%;\n}\n\n#TB_iframeContent {\n\tclear: both;\n\tborder: none;\n}\n\n.tb-close-icon {\n\tdisplay: block;\n\tcolor: #666;\n\ttext-align: center;\n\tline-height: 29px;\n\twidth: 29px;\n\theight: 29px;\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n.tb-close-icon:before {\n\tcontent: \"\\f158\";\n\tfont: normal 20px/29px dashicons;\n\tspeak: none;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n#TB_closeWindowButton:hover .tb-close-icon,\n#TB_closeWindowButton:focus .tb-close-icon {\n\tcolor: #00a0d2;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/css/style-default.css",
    "content": "@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n/*!\n * QuickAdmin v1.3.1\n *\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\nbody {\n  font-family: 'Open Sans', sans-serif;\n  background: #f0f0f0;\n  font-size: 13px;\n  color: #7c7c7c;\n  position: relative;\n}\n*,\na:focus {\n  outline: none !important;\n}\nbutton:focus {\n  outline: none !important;\n}\nbutton::-moz-focus-inner {\n  border: 0;\n}\na:hover {\n  color: #333333;\n}\na {\n  color: #4a8bc2;\n  outline: 0 !important;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: 'Open Sans', sans-serif;\n  margin: 0 0 5px;\n  font-weight: 400;\n  text-shadow: 0 1px 0 #ffffff;\n  color: #4d4d4d;\n}\nh1.glyphicons,\nh2.glyphicons,\nh3.glyphicons,\nh4.glyphicons,\nh5.glyphicons,\nh6.glyphicons {\n  color: #7c7c7c;\n}\nh1 span,\nh2 span,\nh3 span,\nh4 span,\nh5 span,\nh6 span {\n  color: #afafaf;\n  font-weight: 400;\n  padding: 0 5px;\n  font-style: italic;\n}\nh1 span,\nh2 span,\nh3 span {\n  font-size: 50%;\n  text-transform: none;\n  padding: 0;\n  position: relative;\n  top: -3px;\n  font-weight: 400;\n}\nh1 {\n  line-height: 40px;\n}\nh2,\nh3 {\n  line-height: 30px;\n}\nh2 {\n  font-size: 26px;\n}\n.heading-buttons h1,\n.heading-buttons h2,\n.heading-buttons h3,\n.heading-buttons h4,\n.heading-buttons h5,\n.heading-buttons h6 {\n  display: inline-block;\n  margin: 0 15px;\n}\n.heading-buttons h1.glyphicons,\n.heading-buttons h2.glyphicons,\n.heading-buttons h3.glyphicons,\n.heading-buttons h4.glyphicons,\n.heading-buttons h5.glyphicons,\n.heading-buttons h6.glyphicons {\n  display: inline-block;\n}\n.heading-buttons .buttons {\n  margin-top: 3px;\n  margin-right: 15px;\n  text-align: right;\n}\n.heading-buttons .btn {\n  margin-right: 15px;\n}\n.heading-buttons .btn:last-child {\n  margin-right: 0;\n}\np {\n  margin: 0 0 10px;\n  line-height: normal;\n}\n.lead {\n  margin: 0 0 10px;\n}\n.glyphicons {\n  color: #7c7c7c;\n}\nul.icons {\n  text-align: left;\n  padding: 0;\n}\nul.icons li {\n  display: block;\n  padding: 0 0 0 25px;\n  line-height: 22px;\n  color: #7c7c7c;\n}\nul.icons li i:before {\n  color: #7c7c7c;\n  font-size: 17px;\n  left: 0;\n  top: 4px;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: 'Open Sans', sans-serif;\n}\npre.prettyprint {\n  word-break: normal;\n  word-wrap: normal;\n  white-space: pre;\n  background-color: #f8f8f8;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f8f8f8), color-stop(50%, #eeeeee));\n  background-image: -webkit-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -moz-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -o-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  -moz-background-size: 38px 38px;\n  background-size: 38px 38px;\n  border: 1px solid #ebebeb;\n  display: block;\n  line-height: 19px;\n  margin-bottom: 15px;\n  overflow: visible;\n  overflow-y: hidden;\n  padding: 0 0 0 4px;\n}\npre.prettyprint .glyphicons {\n  padding: 0 0 0 20px;\n}\npre.prettyprint .glyphicons i:before {\n  font-size: 17px;\n  top: 1px;\n}\n#content pre.prettyprint,\n#content pre.prettyprint span {\n  color: #7c7c7c;\n}\nblockquote {\n  margin: 0;\n  padding: 0 0 0 5px;\n}\nblockquote,\nblockquote.pull-right {\n  border: none;\n}\nblockquote p {\n  font-weight: 400;\n  font-size: 13px;\n  margin: 0 0 10px;\n}\nblockquote small {\n  color: #4a8bc2;\n}\n.separator {\n  padding: 15px 0;\n  display: block;\n}\n.separator.bottom {\n  padding: 0 0 15px;\n}\n.separator.top {\n  padding: 15px 0 0;\n}\nhr {\n  border-top-color: #dbdbdb;\n  border-bottom: none;\n  margin: 15px 0;\n}\nhr.separator {\n  padding: 0;\n}\nhr.separator.top {\n  margin: 15px 0 0;\n}\nhr.separator.bottom {\n  margin: 0 0 15px;\n}\n@media print {\n  html,\n  body {\n    height: auto !important;\n    min-height: none !important;\n  }\n  @page  {\n    size: auto;\n    margin: 10mm 10mm 10mm 10mm;\n  }\n  #content {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  .breadcrumb,\n  #tlyPageGuideWrapper,\n  .filter-bar {\n    display: none !important;\n  }\n  .table td,\n  .table th {\n    vertical-align: middle;\n  }\n  .table th {\n    padding: 3px;\n    text-align: center;\n  }\n  .table img {\n    float: left;\n  }\n}\n.map_canvas img {\n  max-width: none !important;\n}\n.streetview {\n  width: 100%;\n  height: 300px;\n}\n.ui-dialog-vevent .dtstart {\n  display: none;\n}\n.ui-dialog-vevent .website {\n  margin: 0 0 1em;\n}\n#fontawesome [class^=\"icon-\"],\n#fontawesome [class*=\" icon-\"] {\n  font-size: 24px;\n  line-height: 24px;\n  vertical-align: middle;\n  margin: 0 5px 0 0;\n}\n#fontawesome a {\n  line-height: 40px;\n}\n.innerLR {\n  padding: 0 15px;\n  position: relative;\n}\n.innerTB {\n  padding: 15px 0;\n  position: relative;\n}\n.innerAll {\n  padding: 15px;\n  position: relative;\n}\n.innerL {\n  padding-left: 15px;\n  position: relative;\n}\n.innerR {\n  padding-right: 15px;\n  position: relative;\n}\n.innerT {\n  padding-top: 15px;\n  position: relative;\n}\n.innerB {\n  padding-bottom: 15px;\n  position: relative;\n}\n.center {\n  text-align: center !important;\n}\n.margin-bottom-none {\n  margin-bottom: 0 !important;\n}\n.margin-none {\n  margin: 0 !important;\n}\n.padding-none {\n  padding: 0 !important;\n}\n.border-none {\n  border: none !important;\n}\n.box-shadow-none {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.padding-none-TB {\n  padding-bottom: 0 !important;\n  padding-top: 0 !important;\n}\n.relativeWrap {\n  position: relative;\n}\n.text-primary {\n  color: #4a8bc2;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-faded {\n  color: #d7d7d7 !important;\n}\n.text-large {\n  font-size: 35px;\n  line-height: 40px;\n}\n.text-xlarge {\n  font-size: 50px;\n  line-height: 50px;\n}\n.text-xxlarge {\n  font-size: 70px;\n  line-height: 70px;\n}\n.text-underline {\n  text-decoration: underline;\n}\n.text-right {\n  text-align: right !important;\n}\n.containerBg {\n  background: #f0f0f0;\n}\n.whiteBg {\n  background: #fff;\n}\n.row-merge {\n  position: relative;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-left: 0;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 1px;\n  background: #dbdbdb;\n  content: \"\";\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span3\"] {\n  width: 25.26315789473684%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span4\"] {\n  width: 33.68421052631579%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span5\"] {\n  width: 42.10526315789473%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span6\"] {\n  width: 50.74626865671642%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span8\"] {\n  width: 67.66169154228855%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span9\"] {\n  width: 75.78947368421052%;\n}\n.row-merge.border-top,\n.row-merge ~ .row-merge {\n  border-top: 1px solid #dbdbdb;\n}\n.row-merge.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n#wrapper {\n  overflow: hidden;\n  overflow-y: auto;\n  float: left;\n  width: 100%;\n}\nbody > .container-fluid {\n  padding: 0;\n  background: #f0f0f0;\n}\nbody > .container-fluid.fixed {\n  margin: 30px auto 30px;\n  border-left: 1px solid #d8d8d8;\n  border-right: 1px solid #d8d8d8;\n  width: 94%;\n}\nbody > .container-fluid.documentation {\n  background: #fff;\n}\nbody > .container-fluid.fixed {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nbody > .container-fluid.fixed #wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nbody > .container-fluid.fixed #content {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nbody > .container-fluid.fixed #footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nbody > .container-fluid.fixed .navbar.main,\nbody > .container-fluid.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n#content {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  min-width: 320px;\n  min-height: 500px;\n  padding: 0 0 15px;\n  background: #f0f0f0;\n}\n#content > .menubar {\n  border-left: none;\n  border-right: none;\n}\n#content > p {\n  padding: 0 15px 5px;\n}\n#content > h1,\n#content > h2,\n#content > h3,\n#content > h4,\n#content > h5,\n#content > h6 {\n  margin: 18px 15px 15px;\n}\n#content > .filter-bar {\n  border-right: none;\n  border-left: none;\n}\n#content .heading-buttons {\n  margin-top: 15px;\n}\n#content .heading-arrow {\n  text-transform: uppercase;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 15px;\n  padding: 0 15px;\n  font-size: 11pt;\n  height: 35px;\n  line-height: 30px;\n  position: relative;\n}\n#content .heading-arrow:after {\n  content: \"\";\n  display: inline-block;\n  width: 0;\n  height: 0;\n  border-bottom: 8px solid #dbdbdb;\n  border-right: 8px solid transparent;\n  border-left: 8px solid transparent;\n  position: absolute;\n  bottom: 0;\n  left: 15px;\n}\n#content .heading-arrow.glyphicons {\n  padding: 0 10px 0 40px;\n}\n#content .heading-arrow.glyphicons i:before {\n  font-size: 17px;\n  left: 15px;\n}\n#content .heading-arrow.margin-bottom-none {\n  margin-bottom: 0;\n}\n#content > .widget {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget .widget-head,\n#content > .widget .widget-body {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget:last-child {\n  margin: 0;\n}\n#content > .table {\n  border-left: none;\n  border-right: none;\n}\n#content > .table tr td:first-child {\n  border-left: none;\n}\n#footer {\n  font-weight: 600;\n  position: relative;\n  overflow: hidden;\n  z-index: 10000;\n  border-bottom: 1px solid #dbdbdb;\n  border-top: 1px solid #dbdbdb;\n}\n#footer a:not(.btn) {\n  color: #7c7c7c;\n}\n#footer .copy {\n  background: #e5e5e5;\n  text-align: center;\n  padding: 5px 10px;\n  font-size: 12px;\n  height: 20px;\n}\n#footer .copy a {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nhtml.sidebar #content {\n  margin: 0 0 0 65px;\n}\nhtml.sidebar .menu-right #content {\n  margin: 0 65px 0 0;\n}\n@media (min-width: 768px) {\n  html.sticky-sidebar.sidebar:not(.fixed) body {\n    overflow: hidden;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed),\n  html.sticky-sidebar.sidebar:not(.fixed) body,\n  html.sticky-sidebar.sidebar:not(.fixed) body > .container-fluid,\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    min-height: 100%;\n    height: 100%;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    margin-bottom: -32px;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #menu {\n    position: fixed;\n    bottom: 0;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #content {\n    padding-bottom: 47px;\n  }\n}\n@media (min-width: 768px) {\n  html.sticky-top:not(.fixed) #content {\n    padding-top: 50px;\n  }\n  html.sticky-top:not(.fixed) .navbar.main {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 10000;\n  }\n  html.sticky-top:not(.fixed).sidebar .navbar.main {\n    left: 65px;\n  }\n  html.sticky-top:not(.fixed).sidebar .menu-right .navbar.main {\n    left: 0;\n    right: 65px;\n  }\n  html.sticky-top:not(.fixed) .menu-hidden .navbar.main {\n    left: 0 !important;\n    right: 0 !important;\n  }\n  html.sticky-top:not(.fixed).front #content {\n    padding-top: 100px;\n    margin: 0 !important;\n  }\n}\nhtml.fixed,\nhtml.fixed body {\n  min-height: auto;\n  height: auto;\n  overflow: visible;\n}\nbody > .container-fluid.fixed {\n  min-height: auto;\n  height: auto;\n}\nbody > .container-fluid.fixed #wrapper {\n  position: relative;\n  overflow: hidden;\n  min-height: auto;\n  height: auto;\n  margin: 0;\n}\nbody > .container-fluid.fixed #menu {\n  position: absolute;\n  height: 100%;\n  min-height: 100%;\n  bottom: auto;\n}\n.ui-resizable-helper.menu {\n  border: 1px dotted gray;\n  border-left: none;\n  background: rgba(0, 0, 0, 0.3);\n}\n.ui-resizable-handle {\n  width: 3px;\n  border-style: solid;\n  border-width: 0;\n  border-color: rgba(0, 0, 0, 0.4);\n}\n.dropdown-menu {\n  z-index: 100000;\n}\n#menu {\n  width: 65px;\n  float: left;\n  position: absolute;\n  left: 0;\n  top: 0;\n  overflow: hidden;\n  height: 100%;\n  min-height: 100%;\n  background: #1f2123;\n  font-size: 11px;\n}\n#menu .appbrand {\n  font-weight: 700;\n  display: block;\n  text-decoration: none;\n  line-height: 10px;\n  padding: 10px;\n  text-align: center;\n  color: #ffffff;\n  border-bottom: 1px solid #161718;\n}\n#menu .profile {\n  display: block;\n  padding: 10px 0;\n  border-bottom: 1px solid #161718;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .profile a {\n  border: 1px solid #161718;\n  display: inline-block;\n  width: 36px;\n  height: 36px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a:hover {\n  border-color: #000000;\n}\n#menu .slim-scroll > ul,\n#menu > ul {\n  list-style: none;\n  float: left;\n  margin: 0;\n  padding: 0;\n  display: block;\n  width: 100%;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .slim-scroll > ul > li,\n#menu > ul > li {\n  display: block;\n  border-bottom: 1px solid #161718;\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  position: relative;\n  overflow: hidden;\n  padding: 0;\n  margin: 0;\n}\n#menu .slim-scroll > ul > li a,\n#menu > ul > li a {\n  display: block;\n  width: auto;\n  padding: 10px;\n  margin: 0;\n  line-height: 10px;\n  text-decoration: none;\n  font-weight: 600;\n  color: #4c4d4f;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li a.glyphicons,\n#menu > ul > li a.glyphicons {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i,\n#menu > ul > li a.glyphicons i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i:before,\n#menu > ul > li a.glyphicons i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.glyphicons > a,\n#menu > ul > li.glyphicons > a {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i,\n#menu > ul > li.glyphicons > a i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i:before,\n#menu > ul > li.glyphicons > a i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.active,\n#menu > ul > li.active {\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  border-top: 1px solid #2a2c2e;\n  position: relative;\n  overflow: visible;\n}\n#menu .slim-scroll > ul > li.active > a,\n#menu > ul > li.active > a {\n  background: #161718;\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active.glyphicons a i:before,\n#menu > ul > li.active.glyphicons a i:before {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active:first-child,\n#menu > ul > li.active:first-child {\n  border-top: none;\n}\n#menu .slim-scroll > ul > li:hover > a,\n#menu > ul > li:hover > a {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li:hover.glyphicons a i:before,\n#menu > ul > li:hover.glyphicons a i:before {\n  color: #737474;\n}\n#menu.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.menu-left .ui-resizable-e {\n  background: rgba(255, 255, 255, 0.2);\n  right: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\n.menu-left .ui-resizable-e:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right .ui-resizable-w {\n  background: rgba(255, 255, 255, 0.2);\n  left: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\nbody .menu-right .ui-resizable-w:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right #menu {\n  left: auto;\n  right: 0;\n  border-right: none;\n  border-left: 1px solid #d8d8d8;\n}\nbody .menu-right.fixed #content {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\nbody .menu-right.fixed .navbar.main,\nbody .menu-right.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.menu-hidden #menu {\n  display: none;\n}\n.menu-hidden #content {\n  margin: 0 !important;\n}\n.menu-hidden .navbar.main .btn-navbar {\n  left: 0;\n  border-left: none;\n}\n.menu-hidden .navbar.main .topnav.tn1 {\n  left: 37px;\n}\n.menu-hidden.login .navbar.main .appbrand,\n.menu-hidden.documentation .navbar.main .appbrand {\n  display: inline-block;\n  border: none;\n}\n.menu-hidden.login .navbar.main .appbrand span,\n.menu-hidden.documentation .navbar.main .appbrand span {\n  border: none;\n}\n.navbar.main {\n  height: 49px;\n  background-color: #4a8bc2;\n  border-bottom: 1px solid #346d9d;\n  margin: 0;\n}\n.navbar.main .btn-navbar {\n  height: 49px;\n  line-height: 49px;\n  padding: 0 10px;\n  margin: 0;\n  float: left;\n  display: block;\n  border: none;\n  background: #4a8bc2;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .btn-navbar .icon-bar {\n  background: #ffffff;\n  box-shadow: 0 1px 0 #346d9d;\n}\n.navbar.main .btn-navbar:hover {\n  background: #4286bf;\n}\n.navbar.main .btn-navbar.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.navbar.main .topnav {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left {\n  border-left: none;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left > li:first-child {\n  border-left: none;\n}\n.navbar.main .topnav > li {\n  position: relative;\n  float: left;\n  height: 49px;\n  line-height: 49px;\n  display: block;\n  padding: 0 0 0 10px;\n}\n.navbar.main .topnav > li a {\n  cursor: pointer;\n}\n.navbar.main .topnav > li > a {\n  display: block;\n  color: #ffffff;\n  text-decoration: none;\n  padding: 1px 11px 0 9px;\n  height: 49px;\n  line-height: 50px;\n  /* &:hover { background: darken(@navbarBg, 2%); } */\n\n}\n.navbar.main .topnav > li > a > img {\n  margin: 0 0 3px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 11px 0 9px;\n}\n.navbar.main .topnav > li > a.glyphicons i {\n  padding: 0 10px 0 0;\n  display: block;\n  float: left;\n  width: 17px;\n  line-height: 49px;\n  height: 49px;\n}\n.navbar.main .topnav > li > a.glyphicons i:before {\n  color: #ffffff;\n  font-size: 17px;\n  position: relative;\n  width: 17px;\n  text-align: center;\n  line-height: 51px;\n  height: 49px;\n  left: auto;\n  right: auto;\n}\n.navbar.main .topnav > li > a.glyphicons.single-icon i {\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout i {\n  float: right;\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout span {\n  padding: 0 8px 0 0;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 8px;\n  height: 33px;\n  line-height: 33px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 8px;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a {\n  background: #346d9d;\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.active > a .caret,\n.navbar.main .topnav > li:hover > a .caret,\n.navbar.main .topnav > li.open > a .caret {\n  top: 2px;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i,\n.navbar.main .topnav > li:hover > a.glyphicons i,\n.navbar.main .topnav > li.open > a.glyphicons i {\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i:before,\n.navbar.main .topnav > li:hover > a.glyphicons i:before,\n.navbar.main .topnav > li.open > a.glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.glyphs ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: #346d9d;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  float: left;\n  display: block;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 1px 0 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  height: 22px;\n  line-height: 22px;\n  padding: 5px 10px;\n  display: block;\n  text-decoration: none;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i {\n  height: 22px;\n  line-height: 22px;\n  display: block;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n  position: relative;\n  left: auto;\n  top: auto;\n  display: block;\n  text-align: center;\n  font-size: 17px;\n  color: #538fc1;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover {\n  padding: 0;\n  background: #579ad2;\n  border-right: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons i:before,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons i:before {\n  color: #ffffff;\n}\n.navbar.main .topnav > li.glyphs ul li.active:first-child,\n.navbar.main .topnav > li.glyphs ul li:hover:first-child {\n  -webkit-border-radius: 5px 0 0 5px;\n  -moz-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n  border-right: none;\n  border-left: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child .glyphicons {\n  padding: 5px 11px 5px 9px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.search form {\n  margin: 0;\n  padding: 0;\n  background: #afcae2;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.search form input {\n  background: none;\n  border: none;\n  color: #628db3;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n  line-height: 32px;\n  width: 100px;\n  padding: 0 0 0 10px;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form button {\n  background: none;\n  border: none;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n}\n.navbar.main .topnav > li.search form button i:before {\n  display: block;\n  position: relative;\n  left: auto;\n  right: auto;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 5px;\n  font-size: 17px;\n  color: #346d9d;\n}\n.navbar.main .topnav > li.search form input,\n.navbar.main .topnav > li.search form button {\n  vertical-align: top;\n}\n.navbar.main .topnav > li.search,\n.navbar.main .topnav > li.glyphs {\n  margin-left: 10px;\n}\n.navbar.main .topnav > li.search + .glyphs {\n  margin-left: 0;\n}\n.navbar.main .topnav > li.glyphs + .search,\n.navbar.main .topnav > li.glyphs + .tooltip + .search {\n  margin-left: 0;\n}\n.navbar.main .topnav > li:last-child {\n  border-right: 1px solid #346d9d;\n  padding: 0 9px 0 10px;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  padding: 8px 9px;\n  box-shadow: -1px 0 0 0 #619aca;\n}\n.navbar.main .topnav > li:first-child {\n  border-left: 1px solid #619aca;\n}\n.navbar.main .topnav > li:last-child.open .dropdown-menu {\n  right: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu {\n  background: #363432;\n  border: none;\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  right: 0;\n  width: 180px;\n}\n.navbar.main .topnav > li.open .dropdown-menu.pull-left {\n  left: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li {\n  border-bottom: 1px solid #4a4947;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:last-child {\n  border-bottom: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > span {\n  border-top: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li > span {\n  height: 29px;\n  line-height: 29px;\n  padding: 0 10px;\n  display: block;\n  background: #363432;\n  color: #c8c8c8;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons i:before {\n  left: auto;\n  right: 10px;\n  top: 5px;\n  font-size: 17px;\n  color: #c4c4c4;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover {\n  background: #1c1a19;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active a {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li .btn {\n  margin: 3px 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > span {\n  background: rgba(0, 0, 0, 0.1);\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile a:hover {\n  color: #fff;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #272729;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #595959;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.account > .dropdown-menu {\n  width: 220px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.2);\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 11px solid transparent;\n  position: absolute;\n  display: block;\n  left: 7px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  top: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n  position: absolute;\n  display: block;\n  left: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  left: auto;\n  right: 7px;\n  margin: 0;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  right: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  margin-top: 13px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu.pull-right,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu.pull-right {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu {\n  background: #fff;\n  border: 1px solid #c8c8c8;\n  margin: 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span {\n  background: #fff;\n  color: #939494;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span i:before {\n  color: #cccccc;\n  font-size: 15px !important;\n  top: 7px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li.active > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li.active > a {\n  /*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\n  font-weight: 600;\n  color: #000;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile {\n  background: #fff;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile a:hover {\n  color: #7c7c7c;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #fdfdfd;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #ccc;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) {\n  padding: 10px 10px 10px 50px;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) i:before {\n  right: auto;\n  left: 10px;\n  top: 10px !important;\n  font-size: 30px !important;\n  color: #f2f2f2;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a {\n  background: rgba(74, 139, 194, 0.08);\n  color: #939494;\n  text-shadow: 0 1px 0 #fff;\n  border: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a i:before {\n  color: #4a8bc2;\n  left: 10px;\n  top: 10px;\n}\n.navbar.main .topnav > li.open.dd-flags .dropdown-menu img {\n  margin: -3px 4px 0 0;\n}\n.navbar.main .topnav .dropdown > a .caret {\n  border-top-color: #ffffff;\n  top: 16px;\n  position: relative;\n}\n.navbar.main .topnav .dropdown-menu {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav:last-of-type {\n  border-right: none;\n}\n.navbar.main .topnav:last-of-type li:last-child {\n  border: none;\n}\n.submenu-show {\n  display: block;\n  margin-top: -35px !important;\n  position: absolute;\n}\n.submenu-show.pull-left {\n  left: auto !important;\n  right: 100% !important;\n}\n.submenu-show.pull-right {\n  right: auto !important;\n  left: 100% !important;\n}\n.submenu-hide {\n  display: none !important;\n  position: relative;\n  top: auto;\n  float: left;\n}\n.filter-bar {\n  background: #e5e5e5;\n  margin: 0 auto 15px;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  line-height: 30px;\n  height: 40px;\n  padding: 0 10px;\n}\n.filter-bar.border-top-none {\n  border-top: none;\n}\n.filter-bar div {\n  padding: 5px 0;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar div div {\n  padding: 0;\n  margin: 0;\n}\n.filter-bar div div:not(.helper) {\n  margin: 0 15px 0 0;\n}\n.filter-bar div div input {\n  margin: 3px 0 0;\n}\n.filter-bar div div.input-append {\n  margin: 0;\n}\n.filter-bar div div.input-append .add-on {\n  padding: 1px 3px;\n  margin: 3px 0 0 -1px;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.filter-bar div div.input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\n.filter-bar div div.input-append button.add-on {\n  width: 24px;\n  height: 24px;\n}\n.filter-bar div div:last-child {\n  margin: 0;\n}\n.filter-bar div:not(.helper) {\n  float: left;\n}\n.filter-bar div.glyphicons {\n  padding: 0 0 0 35px;\n}\n.filter-bar div.glyphicons i:before {\n  top: 12px;\n  left: 9px;\n  font-size: 17px;\n  color: rgba(255, 255, 255, 0.8);\n}\n.filter-bar div.clearfix {\n  padding: 0;\n  clear: both;\n  float: none;\n  display: block;\n  height: 0;\n  margin: 0;\n}\n.filter-bar div.lbl {\n  padding: 0 10px 0 35px;\n  background: #4a8bc2;\n  height: 40px;\n  line-height: 40px;\n  margin-right: 10px;\n  color: #fff;\n}\n.filter-bar form {\n  margin: 0;\n}\n.filter-bar form input,\n.filter-bar form select {\n  margin: 0 5px 3px 0;\n  padding: 1px 5px;\n  color: #a7a7a7;\n}\n.filter-bar form select {\n  padding: 1px;\n  height: 23px;\n}\n.filter-bar form label {\n  float: left;\n  margin: 0 5px;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar.border-none {\n  border: none;\n}\n.filter-bar.dark {\n  background: #64625f;\n  color: #fff;\n}\n.filter-bar.dark div div.input-append .add-on {\n  background: #42403e;\n  color: #fff;\n  border-color: #42403e;\n}\n.filter-bar.dark div div.input-append .add-on i:before {\n  color: #767473;\n  text-shadow: none;\n}\n.filter-bar.dark form input:focus {\n  border-color: #42403e;\n}\n.filter-bar.dark form input,\n.filter-bar.dark form select {\n  border-color: #42403e;\n}\n.menubar {\n  height: 30px;\n  position: relative;\n  overflow: hidden;\n  border: 1px solid #dbdbdb;\n  background: #fafafa;\n  margin: 0;\n  font-size: 9pt;\n}\n.menubar ul {\n  margin: 0;\n  padding: 0 5px;\n  list-style: none;\n  height: 30px;\n}\n.menubar ul li {\n  float: left;\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  padding: 0 5px;\n}\n.menubar ul li.divider {\n  border-left: 1px solid #ebebeb;\n  width: 0px;\n  padding: 0;\n  margin: 0 8px;\n}\n.menubar ul li a {\n  color: #7c7c7c;\n  font-weight: 700;\n  font-size: 9pt;\n}\n.menubar.links {\n  border: none;\n  background: none;\n  height: 25px;\n  padding: 0 0 5px;\n}\n.menubar.links ul {\n  padding: 0;\n  height: 25px;\n}\n.menubar.links ul li {\n  height: 25px;\n  line-height: 25px;\n}\n.menubar.links ul li:first-child {\n  padding-left: 0;\n}\n.menubar.links.primary ul li a {\n  color: #4a8bc2;\n}\n.widget {\n  background: #ffffff;\n  margin: 0 auto 15px;\n  position: relative;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget .tab-content {\n  padding: 0;\n}\n.widget .widget-head {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  text-shadow: 0 1px 0 0 1px 0 #ffffff;\n  height: 35px;\n  line-height: 35px;\n  position: relative;\n  padding: 0 15px 0 0;\n  overflow: hidden;\n}\n.widget .widget-head.progress {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons,\n.widget .widget-head ul .glyphicons {\n  height: 30px;\n  width: 30px;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons i:before,\n.widget .widget-head ul .glyphicons i:before {\n  width: 30px;\n  height: 30px;\n  line-height: 23px;\n  text-align: center;\n  font-size: 16px;\n  color: rgba(255, 255, 255, 0.5);\n}\n.widget .widget-head .heading {\n  margin: 0;\n  color: #7c7c7c;\n  font-size: 14px;\n  height: 35px;\n  line-height: 35px;\n  padding: 0 15px;\n  float: left;\n}\n.widget .widget-head .heading.glyphicons {\n  width: auto;\n  display: block;\n  padding: 0 0 0 35px;\n}\n.widget .widget-head .heading.glyphicons i:before {\n  padding: 0;\n  margin: 0;\n  left: 0;\n  top: 0;\n  height: 35px;\n  line-height: 35px;\n  text-align: center;\n  width: 35px;\n  color: #7c7c7c;\n  font-size: 16px;\n  font-weight: normal;\n  text-shadow: none;\n}\n.widget .widget-head a {\n  text-shadow: none;\n}\n.widget .widget-head .dropdown-menu li > a:hover,\n.widget .widget-head .dropdown-menu li > a:focus,\n.widget .widget-head .dropdown-submenu:hover > a {\n  background-color: #4a8bc2;\n  background-image: -moz-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4a8bc2), to(#d24343));\n  background-image: -webkit-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -o-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: linear-gradient(to bottom, #4a8bc2, #d24343);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);\n}\n.widget .details {\n  font-size: 8pt;\n  color: #7c7c7c;\n}\n.widget .widget-body {\n  padding: 15px;\n}\n.widget .widget-body form {\n  margin: 0;\n}\n.widget .widget-body > pre:last-child,\n.widget .widget-body > p:last-child {\n  margin: 0;\n}\n.widget .widget-body.list {\n  color: #7c7c7c;\n  padding: 0;\n}\n.widget .widget-body.list .count {\n  font-size: 15pt;\n  font-weight: 400;\n}\n.widget .widget-body.list ul {\n  margin: 0;\n  list-style: none;\n}\n.widget .widget-body.list ul li {\n  padding: 0 10px;\n  height: 39px;\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  line-height: 39px;\n  text-align: left;\n  text-shadow: 0 1px 0 #ffffff;\n  clear: both;\n}\n.widget .widget-body.list ul li .badge {\n  position: absolute;\n  right: 8px;\n  top: 10px;\n}\n.widget .widget-body.list ul li:first-child {\n  border-top: none;\n}\n.widget .widget-body.list ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list ul li .count {\n  float: right;\n  color: #000000;\n}\n.widget .widget-body.list ul li .sparkline {\n  position: relative;\n  top: 5px;\n  margin-left: 5px;\n}\n.widget .widget-body.list ul li a {\n  color: #000000;\n  font-weight: bold;\n}\n.widget .widget-body.list.products li {\n  height: 60px;\n  line-height: 60px;\n}\n.widget .widget-body.list.products .img {\n  float: left;\n  display: inline-block;\n  width: 48px;\n  height: 44px;\n  line-height: 44px;\n  color: #fff;\n  text-align: center;\n  background: #272729;\n  margin: 8px 8px 0 0;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  text-shadow: none;\n  cursor: pointer;\n  font-size: 10pt;\n  font-weight: 600;\n}\n.widget .widget-body.list.products .title {\n  line-height: normal;\n  display: inline-block;\n  padding: 13px 0 0;\n  text-transform: uppercase;\n}\n.widget .widget-body.list.products .title strong {\n  font-family: \"Open Sans\", sans-serif;\n  text-transform: none;\n}\n.widget .widget-body.list.fluid ul li {\n  height: auto;\n  line-height: normal;\n  padding: 10px;\n}\n.widget .widget-body.list.list-2 ul li {\n  border-bottom: 1px solid #d8d9da;\n  border-top: none;\n  background: #f8f8f8;\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #dddddd;\n  background: #fff;\n}\n.widget .widget-body.list.list-2 ul li.active i:before {\n  font-weight: normal;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: none;\n}\n.widget .widget-body.list.list-2 ul li.active a {\n  color: #4a8bc2;\n}\n.widget .widget-body.list.list-2 ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list.list-2 ul li a {\n  display: block;\n  color: #222;\n  padding: 0 0 0 30px;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  color: #555;\n  width: 20px;\n  height: 17px;\n  font-size: 14px;\n  border: 1px solid #ccc;\n  background: #dddddd;\n  top: 9px;\n  left: 0;\n  text-align: center;\n  vertical-align: middle;\n  padding-top: 3px;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu {\n  height: auto;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul {\n  padding: 0 0 10px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li {\n  height: auto;\n  line-height: normal;\n  background: none;\n  border: none;\n  line-height: 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li a {\n  color: #333;\n  padding: 0 0 0 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li.active a {\n  font-weight: bold;\n}\n.widget .widget-footer {\n  background: #fafafa;\n  height: 25px;\n  line-height: 25px;\n  border-top: 1px solid #ebebeb;\n}\n.widget .widget-footer .glyphicons {\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n  padding: 0;\n  float: right;\n}\n.widget .widget-footer .glyphicons i:before {\n  font-size: 16px;\n  color: #c3c3c3;\n  text-align: center;\n  width: 20px;\n  height: 25px;\n  line-height: 25px;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget .widget-footer .glyphicons:hover i:before {\n  color: rgba(0, 0, 0, 0.5);\n}\n.widget.margin-bottom-none {\n  margin-bottom: 0;\n}\n.widget.widget-gray {\n  background: #f5f5f5;\n}\n.widget.widget-gray .widget-head {\n  background: #e9e9e9;\n  border-color: #d1d2d3;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.widget.widget-gray .widget-head .heading {\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget.widget-gray .widget-head .heading.glyphicons i:before {\n  background: none;\n  color: #555;\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2:before,\n.widget.widget-2:after {\n  display: none;\n}\n.widget.widget-2 .widget-head {\n  background: #e2e2e4;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  height: 36px;\n  line-height: 36px;\n  border-color: #d1d2d3;\n}\n.widget.widget-2 .widget-head .heading {\n  line-height: 36px;\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n  font-size: 12pt;\n}\n.widget.widget-2 .widget-head .heading i:before {\n  color: #555555;\n  background: none;\n  border: none;\n  left: 3px;\n  top: 2px;\n}\n.widget.widget-2 .widget-body {\n  border: 1px solid #d1d2d3;\n  border-top: 0;\n  background: #f5f5f5;\n}\n.widget.widget-2.primary .widget-head {\n  background: #4a8bc2;\n  border-color: #4a8bc2;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2.primary .widget-head .heading {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-2.primary .widget-head .heading i:before {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-3:before,\n.widget.widget-3:after {\n  display: none;\n}\n.widget.widget-3 .widget-head {\n  height: 36px;\n  line-height: 36px;\n}\n.widget.widget-3 .widget-head .heading {\n  display: block;\n  text-align: center;\n  float: none;\n  line-height: 36px;\n  height: 36px;\n  text-transform: uppercase;\n  font-size: 12pt;\n}\n.widget.widget-3 .widget-head .heading i:before {\n  background: none;\n  border: none;\n  left: 3px;\n  top: 5px;\n  font-size: 20px;\n  color: #45484d;\n}\n.widget.widget-3 .widget-head .heading .glyphicons {\n  vertical-align: middle;\n  width: 35px;\n  height: 36px;\n  padding: 0;\n}\n.widget.widget-3 .widget-body {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-body.large {\n  font-size: 26pt;\n  font-weight: bold;\n  text-align: center;\n  padding: 25px 0;\n  vertical-align: middle;\n  line-height: normal;\n}\n.widget.widget-3 .widget-body.large.cancellations span {\n  line-height: 20px;\n  text-align: left;\n  font-size: 17pt;\n  display: inline-block;\n  text-shadow: none;\n}\n.widget.widget-3 .widget-body.large.cancellations span span {\n  display: block;\n}\n.widget.widget-3 .widget-body.large.cancellations span span:first-child {\n  color: #4a8bc2;\n  text-transform: uppercase;\n  font-size: 13pt;\n}\n.widget.widget-3 .widget-body.large.dashboard {\n  padding: 15px 0;\n}\n.widget.widget-3 .widget-footer {\n  background: #fafafa;\n  border-top: none;\n}\n.widget.widget-3 .widget-footer a {\n  float: none;\n  color: #dddddd;\n  width: auto;\n  padding: 0 10px 0 30px;\n  border-right: 1px solid #dbdbdb;\n  text-decoration: none;\n}\n.widget.widget-3 .widget-footer a i:before {\n  color: #dddddd;\n  left: 5px;\n}\n.widget.widget-3 .widget-footer a:hover {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer a:hover i:before {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer.align-center {\n  text-align: center;\n}\n.widget.widget-3 .widget-footer.align-center a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right {\n  text-align: right;\n}\n.widget.widget-3 .widget-footer.align-right a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right a:last-child {\n  border-right: none;\n}\n.widget.widget-4 {\n  border: none;\n  background: none;\n}\n.widget.widget-4 .widget-head {\n  background: none;\n  padding: 10px;\n  border: none;\n}\n.widget.widget-4 .widget-head .heading {\n  color: #544f49;\n  text-shadow: none;\n  padding: 0;\n  margin: 0;\n}\n.widget.widget-4 .widget-body {\n  padding: 0 10px 10px;\n  border: none;\n}\n.widget.widget-4 .widget-body.list ul li {\n  padding: 0;\n}\n.widget.widget-heading-simple {\n  border: none;\n  background: none;\n}\n.widget.widget-heading-simple > .widget-head {\n  border: none;\n  background: none;\n  padding: 0 0 5px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading {\n  padding: 0;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons {\n  padding: 0 0 0 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons i:before {\n  text-align: left;\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-body {\n  border: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget.widget-body-simple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-simple > .widget-body {\n  background: none;\n  border: none;\n  padding: 0;\n}\n.widget.widget-body-white > .widget-body {\n  background: #ffffff;\n}\n.widget.widget-body-gray {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-gray > .widget-body {\n  background: #e5e5e5;\n}\n.widget.widget-body-primary {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-primary > .widget-body {\n  background: #4a8bc2;\n}\n.widget.widget-body-primary > .widget-body * {\n  color: #fff;\n  text-shadow: none;\n}\n.widget.widget-body-multiple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-multiple > .widget-body {\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  margin-bottom: 7.5px;\n}\n.widget.widget-body-multiple > .widget-body:last-of-type {\n  margin-bottom: 0;\n}\n.widget.widget-body-multiple.widget-body-gray > .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget-offers .price {\n  font-size: 14px;\n}\n.widget-offers .price strong {\n  color: #000;\n}\n.widget-offers .thumb {\n  padding: 0;\n}\n.widget-offers h5 {\n  border-bottom: 1px solid #cecece;\n  font-weight: 600;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 1px 0 0 #eeeeee;\n  padding: 0 0 5px;\n}\n.widget-activity > .widget-body {\n  padding: 0 15px;\n}\n.widget-activity ul.list {\n  list-style: none;\n  margin: 0 -15px;\n  padding: 0;\n}\n.widget-activity ul.list li {\n  height: 39px;\n  line-height: 39px;\n  position: relative;\n  overflow: hidden;\n  border-bottom: 1px solid #ebebeb;\n  padding: 0 15px;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.widget-activity ul.list li:hover,\n.widget-activity ul.list li.highlight {\n  background: #f2f2f2;\n  box-shadow: 0 1px 0 0 #ffffff inset;\n  -moz-box-shadow: 0 1px 0 0 #ffffff inset;\n  -webkit-box-shadow: 0 1px 0 0 #ffffff inset;\n  text-shadow: 0 1px 0 #ffffff;\n  cursor: pointer;\n}\n.widget-activity ul.list li:hover:after,\n.widget-activity ul.list li.highlight:after {\n  content: \"\\e212\";\n  display: block;\n  position: absolute;\n  right: 15px;\n  top: 0;\n  height: 39px;\n  line-height: 39px;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  color: #d5d5d5;\n}\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before {\n  color: #505050;\n}\n.widget-activity ul.list li > span {\n  display: block;\n  height: 39px;\n  line-height: 39px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-activity ul.list li > span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-activity ul.list li > span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon {\n  width: 30px;\n  height: 39px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon i {\n  height: 39px;\n  display: block;\n  position: relative;\n}\n.widget-activity ul.list li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #cbcbcb;\n  font-size: 18px;\n  line-height: 39px;\n}\n.widget-activity ul.list li.double {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span.ellipsis {\n  line-height: 15px;\n  padding: 7px 0 0;\n  font-weight: 600;\n  font-size: 11px;\n}\n.widget-activity ul.list li.double > span .meta {\n  display: block;\n  line-height: 15px;\n  font-weight: 400;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta i:before {\n  top: 1px;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta span {\n  font-style: italic;\n}\n.widget-activity ul.list li.double .activity-icon {\n  margin-left: 0;\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i {\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i:before {\n  line-height: 45px;\n}\n.widget-activity ul.list li.double:hover:after,\n.widget-activity ul.list li.double.highlight:after {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li:last-child {\n  border: none;\n}\n.widget-activity .view-all {\n  position: absolute;\n  top: 18px;\n  right: 15px;\n}\n.widget-messages ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.widget-messages ul li {\n  border: 1px solid #e5e5e5;\n  padding: 5px;\n  margin: 0 0 10px;\n  position: relative;\n}\n.widget-messages ul li .meta span {\n  color: #a3a3a3;\n  font-size: 12px;\n}\n.widget-messages ul li .glyphicons.single.bin {\n  position: relative;\n  text-decoration: none;\n  padding: 0;\n  width: 15px;\n  height: 20px;\n  top: 5px;\n}\n.widget-messages ul li .glyphicons.single.bin i {\n  display: block;\n  width: 15px;\n  height: 20px;\n  text-align: center;\n}\n.widget-messages ul li .glyphicons.single.bin i:before {\n  color: #cccccc;\n  position: relative;\n  line-height: 20px;\n  left: auto;\n  top: auto;\n}\n.widget-messages ul li:last-child {\n  margin: 0;\n}\n.widget-timeline .widget-body {\n  padding: 15px;\n  position: relative;\n}\n.widget-timeline .widget-body:before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline:not(.widget) {\n  position: relative;\n}\n.widget-timeline:not(.widget):before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline .view-all {\n  margin-left: 35px;\n}\n.widget-timeline ul.list-timeline {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\n.widget-timeline ul.list-timeline li {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  position: relative;\n  overflow: hidden;\n  background: #ffffff;\n  border: 1px solid #ebebeb;\n  margin: 0 0 10px;\n  padding: 0 10px;\n}\n.widget-timeline ul.list-timeline li:last-child {\n  margin: 0;\n}\n.widget-timeline ul.list-timeline li span {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-timeline ul.list-timeline li span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-timeline ul.list-timeline li span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon {\n  width: 30px;\n  height: 30px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon i {\n  height: 30px;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  position: relative;\n  background: #64625f;\n}\n.widget-timeline ul.list-timeline li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #fff;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget-chat {\n  padding-bottom: 60px !important;\n}\n.widget-chat .media {\n  position: relative;\n  min-height: 80px;\n}\n.widget-chat .media .media-object {\n  position: relative;\n}\n.widget-chat .media .thumb {\n  padding: 0;\n}\n.widget-chat .media small {\n  color: #cccccc;\n}\n.widget-chat .media small:before,\n.widget-chat .media small:after {\n  content: \"\";\n}\n.widget-chat .media small.author {\n  position: absolute;\n  left: 0;\n  width: 50px;\n  top: 60px;\n  text-align: center;\n  display: block;\n}\n.widget-chat .media small.date {\n  display: block;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 5px;\n  padding: 0 0 3px;\n  text-align: right;\n  width: 100%;\n}\n.widget-chat .media.right small.author {\n  left: auto;\n  right: 0;\n}\n.widget-chat .media.right small.date {\n  text-align: left;\n}\n.widget-chat .media .media-body {\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  padding: 0;\n}\n.widget-chat .media .media-body blockquote {\n  padding: 0;\n  width: 100%;\n}\n.widget-chat .media .media-body blockquote p:last-child {\n  margin: 0;\n}\n.widget-chat .media:last-of-type {\n  padding-bottom: 10px;\n}\n.widget-chat .chat-controls {\n  position: absolute;\n  height: 30px;\n  padding: 15px 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  border: 1px solid #dbdbdb;\n  border-top: none;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  background: #fff;\n}\n.widget-chat .widget-body {\n  padding-bottom: 0;\n}\n.widget-chat.widget-heading-simple > .widget-body {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.widget-stats {\n  background: #ffffff;\n  padding: 15px 0;\n  margin: 0;\n  height: 80px;\n  position: relative;\n  text-align: center;\n  display: block;\n  border: 1px solid #dbdbdb;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget-stats .count {\n  position: absolute;\n  top: 0;\n  left: 0;\n  font-size: 13px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget-stats .label {\n  font-weight: 600;\n  padding: 4px;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2) inset;\n}\n.widget-stats span {\n  display: inline-block;\n}\n.widget-stats .txt {\n  padding: 0;\n  color: #cecece;\n}\n.widget-stats .glyphicons {\n  padding: 0;\n  display: block;\n}\n.widget-stats .glyphicons i {\n  display: block;\n}\n.widget-stats .glyphicons i:before {\n  color: #cecece;\n  font-size: 30px;\n  top: 0;\n  left: 0;\n  position: relative;\n}\n.widget-stats,\n.widget-stats:hover,\n.widget-stats:focus {\n  text-decoration: none;\n}\n.widget-stats:hover {\n  background: #fdfdfd;\n}\n.widget-stats.small {\n  padding: 5px 0;\n}\n.widget-stats.small .glyphicons {\n  padding: 12px 0 0;\n}\n.widget-stats.small .glyphicons i:before {\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 {\n  padding: 8px 0;\n  height: 94px;\n}\n.widget-stats.widget-stats-1 .glyphicons {\n  display: block;\n  height: 35px;\n  line-height: 35px;\n  padding-bottom: 5px;\n}\n.widget-stats.widget-stats-1 .glyphicons .txt {\n  display: inline-block;\n  padding: 0 5px;\n  line-height: 35px;\n}\n.widget-stats.widget-stats-1 .glyphicons i {\n  display: inline-block;\n}\n.widget-stats.widget-stats-1 .glyphicons i:before {\n  top: 5px;\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  display: inline-block;\n  font-weight: 700;\n  padding: 0;\n  line-height: 40px;\n}\n.widget-stats.widget-stats-2 .txt {\n  font-size: 14px;\n}\n.widget-stats.widget-stats-2 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  font-weight: 700;\n  padding: 0 0 3px;\n  display: block;\n  line-height: 55px;\n}\n.widget-stats.widget-stats-gray.widget-stats-1 .txt,\n.widget-stats.widget-stats-gray.widget-stats-2 .txt {\n  color: #000;\n}\n.widget-stats.widget-stats-easy-pie .easy-pie {\n  display: block;\n  width: 50px;\n  margin: -5px auto 0;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .easy-pie {\n  margin: 0 auto;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .txt {\n  padding: 7px 0 0;\n}\n.widget-stats.widget-stats-3 .sparkline {\n  display: inline-block;\n}\n.widget-stats.widget-stats-3 .txt {\n  text-align: left;\n  vertical-align: middle;\n  padding: 13px 0 0 10px;\n}\n.widget-stats.widget-stats-3 .count {\n  padding: 0 0 5px;\n  display: block;\n}\n.widget-stats.widget-stats-gray {\n  background: #e5e5e5;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.box-generic {\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n  position: relative;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  margin: 0 0 15px;\n}\n.ribbon-wrapper {\n  width: 85px;\n  height: 88px;\n  overflow: hidden;\n  position: absolute;\n  top: -3px;\n  right: -3px;\n}\n.ribbon-wrapper .ribbon {\n  display: block;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  font-weight: 600;\n  color: #fff;\n  text-align: center;\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  position: relative;\n  padding: 7px 0;\n  left: -5px;\n  top: 15px;\n  width: 120px;\n  line-height: 20px;\n  background-color: #797979;\n  -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n}\n.ribbon-wrapper .ribbon:before,\n.ribbon-wrapper .ribbon:after {\n  content: \"\";\n  border-top: 2px solid #797979;\n  border-left: 2px solid transparent;\n  border-right: 2px solid transparent;\n  position: absolute;\n  bottom: -2px;\n}\n.ribbon-wrapper .ribbon:before {\n  left: 0;\n  bottom: -1px;\n}\n.ribbon-wrapper .ribbon:after {\n  right: 0;\n}\n.ribbon-wrapper .ribbon.primary {\n  background-color: #4a8bc2;\n}\n.ribbon-wrapper .ribbon.success {\n  background-color: #609450;\n}\n.ribbon-wrapper .ribbon.warning {\n  background-color: #ab7a4b;\n}\n.ribbon-wrapper .ribbon.danger {\n  background-color: #bd362f;\n}\n.ribbon-wrapper .ribbon.default {\n  background-color: #e5e5e5;\n  color: #595959;\n}\n.ribbon-wrapper .ribbon.default:before,\n.ribbon-wrapper .ribbon.default:after {\n  border-top: 2px solid #ccc;\n}\n.ribbon-wrapper.small {\n  width: 65px;\n  height: 68px;\n}\n.ribbon-wrapper.small .ribbon {\n  width: 90px;\n  padding: 0;\n  font-size: 13px;\n}\n.ribbon-wrapper.small .ribbon:before {\n  bottom: -2px;\n}\n.breadcrumb {\n  height: 38px;\n  line-height: 39px;\n  padding: 0 15px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  background: none;\n  border-bottom: 1px solid #dbdbdb;\n  box-shadow: 0 1px 0 0 #fff;\n  -moz-box-shadow: 0 1px 0 0 #fff;\n  -webkit-box-shadow: 0 1px 0 0 #fff;\n  color: #ababab;\n  font-size: 12px;\n  position: relative;\n  overflow: hidden;\n}\n.breadcrumb li {\n  text-shadow: 0 1px 0 #ffffff;\n  line-height: 38px;\n  height: 38px;\n}\n.breadcrumb li a {\n  color: #ababab;\n  font-weight: 600;\n}\n.breadcrumb li a.glyphicons {\n  color: #ababab;\n  padding: 0 0 0 25px;\n}\n.breadcrumb li a.glyphicons i:before {\n  color: #ababab;\n  font-size: 14px;\n  top: 12px;\n  left: 3px;\n}\n.breadcrumb li.divider {\n  margin: 0 5px 0 7px;\n  width: 0;\n  border-left: 1px solid #dbdbdb;\n  border-right: 1px solid #fff;\n  vertical-align: top;\n}\n.well {\n  z-index: 1;\n  position: relative;\n  padding: 15px;\n  margin: 0 0 15px;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #fafafa;\n  border-color: #dbdbdb;\n}\n.well.small {\n  padding: 10px;\n}\n.well .popover {\n  z-index: 2;\n  font-size: 13px;\n}\n.well.dark {\n  background: rgba(0, 0, 0, 0.2);\n}\n.well.white {\n  background: #fff;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle {\n  position: relative;\n  height: 35px;\n  width: 30px;\n  display: block;\n  cursor: pointer;\n  float: right;\n  margin-right: -10px;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle:before {\n  font-family: \"Glyphicons\";\n  font-size: 17px;\n  display: block;\n  width: 100%;\n  height: 35px;\n  line-height: 34px;\n  text-align: center;\n  color: #cccccc;\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle {\n  margin-right: 0;\n  height: 25px;\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle:before {\n  height: 25px;\n  line-height: 25px;\n}\n[data-toggle=\"collapse-widget\"] a ~ .collapse-toggle {\n  margin-right: 0;\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"false\"] .collapse-toggle:before {\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .collapse-toggle:before {\n  content: \"\\e191\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .widget-head {\n  border-bottom: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list) {\n  -webkit-transition: padding 0.1s ease;\n  -moz-transition: padding 0.1s ease;\n  -o-transition: padding 0.1s ease;\n  transition: padding 0.1s ease;\n  padding: 0px;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list).in {\n  padding: 15px;\n}\n.glyphicons.standard {\n  width: 24px;\n  height: 24px;\n  padding: 0;\n}\n.glyphicons.standard i {\n  display: block;\n  height: 24px;\n}\n.glyphicons.standard i:before {\n  color: #64625f;\n  position: relative;\n  top: auto;\n  left: auto;\n}\n.glyphicons.standard:not(.disabled):hover i:before {\n  color: #797979;\n}\n.glyphicons.standard.btn {\n  padding: 4px;\n}\n.glyphicons.standard.btn.btn-small {\n  padding: 2px 5px;\n  width: auto;\n  height: auto;\n}\n.glyphicons.standard.btn.btn-small i:before {\n  top: auto;\n  line-height: 22px;\n}\n.glyphicons.primary i:before {\n  color: #4a8bc2;\n}\n.glyphicons.single {\n  color: #4a8bc2;\n  padding: 0 0 0 20px;\n}\n.glyphicons.single i:before {\n  font-size: 13px;\n  top: 4px;\n  color: #4a8bc2;\n}\n.glyphicons.single + .single {\n  margin-left: 8px;\n}\n.glyphicons.single.regular {\n  color: #7c7c7c;\n}\n.glyphicons.single.regular i:before {\n  color: #7c7c7c;\n}\n.glyphicons.text-error {\n  color: #4a8bc2;\n}\n.glyphicons.text-error i:before {\n  color: #4a8bc2;\n}\n.glyphicons.text-info {\n  color: #5d92b3;\n}\n.glyphicons.text-info i:before {\n  color: #5d92b3;\n}\n.glyphicons.text-success {\n  color: #719d46;\n}\n.glyphicons.text-success i:before {\n  color: #719d46;\n}\n.glyphicons.btn-action {\n  width: 25px;\n  height: 25px;\n  padding: 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border-width: 1px;\n  border-style: solid;\n  vertical-align: middle;\n}\n.glyphicons.btn-action i:before {\n  font-size: 14px;\n  top: 5px;\n  left: 5px;\n  text-shadow: 0 1px 0 #fff;\n  color: #fff !important;\n}\n.glyphicons.btn-action.btn-default i:before {\n  color: #7c7c7c !important;\n}\n.glyphicons.btn-action.single {\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  border: none;\n  background: none;\n  margin-right: 10px;\n}\n.glyphicons.btn-icon {\n  text-align: left;\n  padding: 5px 7px 5px 40px;\n}\n.glyphicons.btn-icon i {\n  float: left;\n}\n.glyphicons.btn-icon i:before {\n  font-size: 15px;\n  top: 0;\n  left: 0;\n  width: 33px;\n  height: 23px;\n  -webkit-border-radius: 3px 0px 0px 3px;\n  -moz-border-radius: 3px 0px 0px 3px;\n  border-radius: 3px 0px 0px 3px;\n  vertical-align: middle;\n  padding: 7px 0 0;\n  text-align: center;\n}\n.glyphicons.btn-icon.right {\n  text-align: left;\n  padding: 5px 0 5px 7px;\n}\n.glyphicons.btn-icon.right i:before {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n  right: 0;\n  left: auto;\n  text-align: center;\n}\n.glyphicons.btn-large {\n  padding: 10px 10px 10px 40px;\n  font-weight: 600;\n}\n.glyphicons.btn-large i:before {\n  top: 12px;\n  left: 12px;\n  font-size: 17px;\n}\n.glyphicons.btn-large.btn-icon i:before {\n  top: 0;\n  left: 0;\n  height: 28px;\n  padding: 12px 0 0;\n}\n.glyphicons.btn-small {\n  padding: 2px 10px 2px 35px;\n}\n.glyphicons.btn-small i:before {\n  padding: 5px 0 0;\n  width: 28px;\n  height: 19px;\n  font-size: 14px;\n}\n.glyphicons.btn-mini {\n  padding: 1px 6px 1px 33px;\n}\n.glyphicons.btn-mini i:before {\n  padding: 5px 0 0;\n  width: 26px;\n  height: 17px;\n  font-size: 13px;\n}\n.glyphicons.orange i:before {\n  color: #EDB459;\n}\n.glyphicons.btn-default i:before {\n  color: #9e9e9e;\n  text-shadow: none;\n}\nh4.glyphicons {\n  padding: 0 0 0 35px;\n  display: block;\n}\nh4.glyphicons i:before {\n  font-size: 22px;\n  font-weight: normal;\n  color: #575655;\n}\nh3.glyphicons,\nh2.glyphicons {\n  padding: 0 0 0 45px;\n  display: block;\n}\nh3.glyphicons i:before,\nh2.glyphicons i:before {\n  font-size: 27px;\n  font-weight: normal;\n  left: 2px;\n  top: 3px;\n  color: #575655;\n}\nh3.glyphicons.cogwheels i:before,\nh2.glyphicons.cogwheels i:before {\n  left: 5px;\n}\n.finances_summary .well {\n  font-size: 16px;\n  text-align: center;\n}\n.finances_summary .well strong {\n  display: block;\n  font-size: 22pt;\n  color: #45494c;\n  line-height: normal;\n}\n.finances_summary .glyphicons.standard i:before {\n  color: #cccccc;\n}\ndiv.glyphicons {\n  padding: 0 0 0 35px;\n}\ndiv.glyphicons i:before {\n  color: #cccccc;\n}\ndiv.glyphicons.glyphicon-large {\n  padding: 0 0 0 75px;\n}\ndiv.glyphicons.glyphicon-large i:before {\n  font-size: 50px;\n  left: 0;\n}\ndiv.glyphicons.glyphicon-large.group-column {\n  padding: 0 0 0 85px;\n}\ndiv.glyphicons.glyphicon-large.group-column i:before {\n  font-size: 45px;\n  left: 12px;\n}\ndiv.glyphicons.glyphicon-top {\n  padding: 0;\n  text-align: center;\n}\ndiv.glyphicons.glyphicon-top i {\n  display: block;\n  position: relative;\n}\ndiv.glyphicons.glyphicon-top i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i {\n  padding: 0 0 10px;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i:before {\n  font-size: 70px;\n}\ndiv.glyphicons.glyphicon-primary i:before {\n  color: #4a8bc2;\n}\n.widget-body-primary div.glyphicons i:before {\n  color: #fff;\n}\n.social-large {\n  height: 97px;\n}\n.social-large a {\n  display: block;\n  height: 77px;\n  float: left;\n  padding: 10px 19px;\n  color: #d5d5d5;\n  background: #ffffff;\n  font-weight: bold;\n  text-align: center;\n  border-right: 1px solid #e5e5e5;\n  text-decoration: none;\n}\n.social-large a i {\n  display: block;\n  position: relative;\n  padding: 0 0 8px;\n}\n.social-large a i:before {\n  display: block;\n  text-align: center;\n  top: auto;\n  left: auto;\n  position: relative;\n  font-size: 50px;\n  color: #d5d5d5;\n}\n.social-large a.active,\n.social-large a:hover {\n  color: #fff;\n  background: #4a8bc2;\n}\n.social-large a.active i:before,\n.social-large a:hover i:before {\n  color: #fff;\n}\n.social-large a:last-child {\n  border: none;\n}\n.social-large.social-large-2 a {\n  display: inline-block;\n  font-weight: 400;\n  float: none;\n  border: none;\n  background: none;\n  color: #444444;\n}\n.social-large.social-large-2 a i:before {\n  color: #444444;\n}\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover {\n  color: #4a8bc2;\n}\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before {\n  color: #4a8bc2;\n}\n.widget-pinterest .widget-body {\n  padding: 0;\n}\n.widget-pinterest .widget-body .description {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.widget-pinterest .widget-body .thumb {\n  padding: 0;\n  border: none;\n}\n.widget-pinterest .widget-body .thumb img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter {\n  position: relative;\n}\n.jstwitter .item {\n  overflow: hidden;\n}\n.jstwitter .tweet-wrapper {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.jstwitter .widget-body {\n  padding: 0;\n}\n.jstwitter .item a {\n  text-decoration: none;\n}\n.jstwitter .item img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter .item .thumb {\n  padding: 0;\n  border: none;\n}\n.jstwitter .item a:hover {\n  text-decoration: underline;\n}\n.jstwitter .item .text {\n  display: block;\n}\n.jstwitter .item .time,\n.jstwitter .item .user {\n  font-style: italic;\n  color: #999;\n}\n.jstwitter .item.active {\n  display: block;\n}\n.rating {\n  unicode-bidi: bidi-override;\n  direction: rtl;\n}\n.rating.text-large {\n  margin: 7px 0;\n}\n.rating span.star {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  display: inline-block;\n}\n.rating span.star:before {\n  content: \"\\f006\";\n  padding-right: 5px;\n}\n.rating:not(.read-only) span.star:hover {\n  cursor: pointer;\n}\n.rating:not(.read-only) span.star:hover:before,\n.rating:not(.read-only) span.star:hover ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.rating span.star.active:before,\n.rating span.star.active ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.hero-unit {\n  background: none;\n  border: none;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n.widget.widget-tabs {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs .tab-content {\n  padding: 0;\n}\n.widget.widget-tabs > .widget-head {\n  background: #ffffff;\n  border-color: #dbdbdb;\n  overflow: visible;\n}\n.widget.widget-tabs > .widget-head ul {\n  position: relative;\n  overflow: visible;\n  list-style: none;\n  height: 35px;\n  margin: 0;\n  display: inline-block;\n}\n.widget.widget-tabs > .widget-head ul li {\n  height: 35px;\n  line-height: 35px;\n  float: left;\n  display: block;\n  border-right: 1px solid #dbdbdb;\n}\n.widget.widget-tabs > .widget-head ul li a {\n  width: auto;\n  height: 35px;\n  display: block;\n  padding: 0 15px;\n  position: relative;\n  overflow: hidden;\n  color: #7c7c7c;\n  text-decoration: none;\n}\n.widget.widget-tabs > .widget-head ul li a i:before {\n  left: 5px;\n  top: 5px;\n  color: #9d9d9d;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 15px 0 35px;\n}\n.widget.widget-tabs > .widget-head ul li.active {\n  height: 36px;\n  background: #fff;\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a i:before {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.widget.widget-tabs > .widget-body.large {\n  padding: 25px;\n}\n.widget.widget-tabs-double > .widget-head {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul li,\n.widget.widget-tabs-double > .widget-head ul li.active {\n  height: 40px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double > .widget-head ul li a,\n.widget.widget-tabs-double > .widget-head ul li.active a {\n  height: 35px;\n  padding: 5px 0 0;\n}\n.widget.widget-tabs-double > .widget-head ul li a span,\n.widget.widget-tabs-double > .widget-head ul li.active a span {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 15px 0 38px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons i:before,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons i:before {\n  left: 4px;\n  top: 9px;\n  font-size: 20px;\n}\n.widget.widget-tabs-double-2 {\n  border: none;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border: 1px solid #dbdbdb;\n  border-bottom: none;\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 > .widget-head ul {\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li {\n  height: 70px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a {\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n  height: 70px;\n  padding: 5px 0 0;\n  text-decoration: none;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a span {\n  display: block;\n  line-height: 30px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i {\n  display: block;\n  height: 24px;\n  padding: 13px 0 0;\n  line-height: 24px;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  left: auto;\n  top: auto;\n  font-size: 24px;\n  position: relative;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active {\n  height: 70px;\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover {\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-double-2 .widget-body-regular {\n  padding: 10px;\n  border: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 .widget-body-regular p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-vertical .widget-head {\n  border: none;\n  height: auto;\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-head ul {\n  display: block;\n  height: auto;\n}\n.widget.widget-tabs-vertical .widget-head ul li {\n  float: none;\n  display: block;\n  border-right: none;\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-vertical .widget-head ul li:last-child {\n  border: none;\n}\n.widget.widget-tabs-vertical .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-body .tab-content {\n  padding: 12px 15px;\n}\n.widget.widget-wizard-pills .widget-head {\n  height: 60px;\n  padding: 10px 0;\n}\n.widget.widget-wizard-pills .widget-head ul {\n  height: 60px;\n}\n.widget.widget-wizard-pills .widget-head ul li {\n  height: 60px;\n  line-height: 60px;\n  color: #7c7c7c;\n  padding: 0 0 0 10px;\n  border: none;\n  position: relative;\n}\n.widget.widget-wizard-pills .widget-head ul li.status {\n  height: 45px;\n  padding: 15px 15px 0;\n  font-weight: 600;\n}\n.widget.widget-wizard-pills .widget-head ul li.status span.r {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-wizard-pills .widget-head ul li a {\n  height: 58px;\n  line-height: 60px;\n  padding: 0;\n  width: 58px;\n  text-align: center;\n  background: #dbdbdb;\n  border: 1px solid #dbdbdb;\n  color: #c8c8c8;\n  font-weight: 600;\n  font-size: 16pt;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  position: relative;\n  z-index: 2;\n}\n.widget.widget-wizard-pills .widget-head ul li.active {\n  height: 60px;\n  background: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.active a {\n  width: 60px;\n  height: 60px;\n  background: #f4f4f4;\n  border: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.primary a {\n  width: 60px;\n  height: 60px;\n  background: #4a8bc2;\n  border: none;\n  color: #fff;\n}\n.widget.widget-wizard-pills .widget-head ul li:not(:first-child):before {\n  position: absolute;\n  background: #dbdbdb;\n  height: 1px;\n  left: 0;\n  right: 0;\n  top: 29px;\n  display: block;\n  content: \"\";\n  z-index: 1;\n}\n.widget.widget-wizard-pills .widget-head ul li.no-padding {\n  padding: 0;\n}\n.widget.widget-tabs-2 {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-2.border-bottom-none {\n  border-bottom: none;\n}\n.widget.widget-tabs-2 > .widget-head {\n  background: #fff;\n  border: none;\n  border-bottom: 1px solid #dbdbdb;\n  padding: 0 10px;\n}\n.widget.widget-tabs-2 > .widget-head ul {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs-2 > .widget-head ul li {\n  border: none;\n}\n.widget.widget-tabs-2 > .widget-head ul li.active {\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -o-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: linear-gradient(to bottom, #f7f7f7, #ffffff);\n  background-repeat: repeat-x;\n}\n.widget.widget-tabs-2 > .widget-head ul li a {\n  border: 1px solid #dddddd;\n  border-bottom: none;\n  border-right: none;\n  color: #222;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.widget.widget-tabs-2 > .widget-head ul li:first-child a {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget.widget-tabs-2 > .widget-body {\n  background: #fff;\n  border: none;\n  padding: 15px;\n}\n.widget.tabs-right .widget-head ul {\n  float: right;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons {\n  width: 38px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i {\n  width: 38px;\n  display: block;\n  line-height: 35px;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i:before {\n  width: 38px;\n  text-align: center;\n  left: auto;\n  top: auto;\n  position: relative;\n  display: block;\n  line-height: 35px;\n  color: #cbcbcb;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li.active a.glyphicons i:before {\n  color: #505050;\n}\n.widget.widget-tabs-icons-only .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-body p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-icons-only .widget-head {\n  padding: 0 0 10px;\n}\n.widget.widget-tabs-icons-only .widget-head ul {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  list-style: none;\n  margin: 0;\n  height: 30px;\n  line-height: 30px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-head ul li {\n  color: #dadada;\n  float: left;\n  display: block;\n  padding: 0 10px 0 0;\n  font-size: 8pt;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons {\n  width: 30px;\n  height: 30px;\n  padding: 0 3px;\n  text-align: center;\n  cursor: pointer;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i {\n  background: #e5e5e5;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  height: 30px;\n  position: relative;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #64625f;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:hover i {\n  background: #dedede;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i {\n  background: #64625f;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i:before {\n  color: #fff;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:last-child {\n  padding: 0;\n}\n.tabsbar {\n  height: 60px;\n  border: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n  margin: 0 0 15px;\n}\n.tabsbar ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  height: 60px;\n}\n.tabsbar ul li {\n  float: left;\n  display: block;\n  height: 54px;\n  border-right: 1px solid #dbdbdb;\n  background: #fdfdfd;\n  padding: 3px;\n}\n.tabsbar ul li a {\n  display: block;\n  height: 54px;\n  line-height: 54px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  color: #7c7c7c;\n  text-decoration: none;\n  -webkit-transition: background 1s ease;\n  -moz-transition: background 1s ease;\n  -o-transition: background 1s ease;\n  transition: background 1s ease;\n}\n.tabsbar ul li a i {\n  display: inline-block;\n  float: left;\n  width: 39px;\n  height: 54px;\n}\n.tabsbar ul li a i:before {\n  color: #7c7c7c;\n  position: relative;\n  top: auto;\n  left: auto;\n  line-height: 54px;\n  text-align: center;\n}\n.tabsbar ul li.active a {\n  background-color: #6ca1ce;\n  background-image: -moz-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#83b0d5), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -o-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: linear-gradient(to bottom, #83b0d5, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff83b0d5', endColorstr='#ff4a8bc2', GradientType=0);\n  color: #fff;\n}\n.tabsbar ul li.active a i:before {\n  color: #fff;\n}\n.tabsbar.tabsbar-2 {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul li {\n  height: 39px;\n  padding: 0;\n  background: none;\n  border: none;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a {\n  height: 39px;\n  line-height: 39px;\n  background: none;\n  -webkit-transition: color 0.5s ease;\n  -moz-transition: color 0.5s ease;\n  -o-transition: color 0.5s ease;\n  transition: color 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a i {\n  height: 39px;\n  width: 33px;\n}\n.tabsbar.tabsbar-2 ul li a i:before {\n  line-height: 39px;\n  font-size: 20px;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.tabsbar.tabsbar-2 ul li.active {\n  background: #fff;\n}\n.tabsbar.tabsbar-2 ul li.active a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li.active a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a {\n  background: #4a8bc2;\n  color: #fff;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a i:before {\n  color: #fff;\n}\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n  background: #4a8bc2;\n  border-bottom-color: #4a8bc2;\n  color: #fff;\n}\n.nav-tabs {\n  border-bottom-color: #4a8bc2;\n}\n.nav-tabs > li > a {\n  padding: 6px 8px;\n}\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover {\n  background: #4a8bc2;\n  border-top-color: #4a8bc2;\n  border-left-color: #4a8bc2;\n  border-right-color: #4a8bc2;\n  color: #fff;\n  font-weight: bold;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.nav-pills a {\n  cursor: pointer;\n}\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover {\n  background: #4a8bc2;\n  color: #fff;\n}\n.nav-pills .glyphicons {\n  padding-left: 25px;\n}\n.nav-pills .glyphicons i:before {\n  position: relative;\n  font-size: 14px;\n  left: -10px;\n  top: 2px;\n  color: #F5EADB;\n  font-weight: normal;\n  text-shadow: none;\n}\n.tab-content {\n  overflow: visible;\n  padding: 0;\n}\n.btn {\n  font-weight: 600;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n}\n.btn-block {\n  width: 100%;\n}\n.btn + .btn:not(.btn-block) {\n  margin: 0 0 0 5px;\n}\n.input-append .btn + .btn,\n.input-prepend .btn + .btn {\n  margin-left: -1px;\n}\n.btn-group .btn + .btn:not(.btn-block) {\n  margin-left: -1px;\n}\n.btn-group.dropup .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-default {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n  color: rgba(0, 0, 0, 0.6);\n  text-shadow: 0 1px 0 #fff;\n  font-weight: 600;\n  background-color: #efefef;\n  background-image: -moz-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#e7e7e7));\n  background-image: -webkit-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -o-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: linear-gradient(to bottom, #f4f4f4, #e7e7e7);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe7e7e7', GradientType=0);\n  border: 1px solid #cecece;\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled,\n.btn-default[disabled],\n.btn-default:hover,\n.btn-default:focus {\n  background: #e8e8e8;\n}\n.btn-default:active,\n.btn-default.active {\n  background: #e8e8e8;\n  color: #fff;\n  text-shadow: none;\n}\n.btn-default .caret {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n.btn-warning {\n  background-color: #b6895e;\n  background-image: -moz-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#be946b), to(#ab7a4b));\n  background-image: -webkit-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -o-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: linear-gradient(to bottom, #be946b, #ab7a4b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbe946b', endColorstr='#ffab7a4b', GradientType=0);\n  border: 1px solid #88613b;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-warning.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled,\n.btn-warning[disabled],\n.btn-warning:hover,\n.btn-warning:focus {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-info {\n  background: #93B9D8;\n  border: 1px solid #93B9D8;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-info.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled,\n.btn-info[disabled],\n.btn-info:hover,\n.btn-info:focus {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info:active,\n.btn-info.active {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-danger {\n  background-color: #ca4741;\n  background-image: -moz-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d3534c), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -o-linear-gradient(top, #d3534c, #bd362f);\n  background-image: linear-gradient(to bottom, #d3534c, #bd362f);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd3534c', endColorstr='#ffbd362f', GradientType=0);\n  border: 1px solid #942a25;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-danger.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled,\n.btn-danger[disabled],\n.btn-danger:hover,\n.btn-danger:focus {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-primary {\n  background-color: #619aca;\n  background-image: -moz-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#70a3cf), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -o-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: linear-gradient(to bottom, #70a3cf, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff70a3cf', endColorstr='#ff4a8bc2', GradientType=0);\n  border: 1px solid #3771a2;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-primary.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.4);\n  text-shadow: none;\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.btn-primary:focus {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.btn-inverse {\n  background-color: #53575d;\n  background-image: -moz-linear-gradient(top, #5d6168, #45484d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5d6168), to(#45484d));\n  background-image: -webkit-linear-gradient(top, #5d6168, #45484d);\n  background-image: -o-linear-gradient(top, #5d6168, #45484d);\n  background-image: linear-gradient(to bottom, #5d6168, #45484d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5d6168', endColorstr='#ff45484d', GradientType=0);\n  border: 1px solid #2d2f32;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-inverse.glyphicons i:before {\n  color: #919293;\n  text-shadow: none;\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled,\n.btn-inverse[disabled],\n.btn-inverse:hover,\n.btn-inverse:focus {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse:active,\n.btn-inverse.active {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-success {\n  background-color: #6fa45f;\n  background-image: -moz-linear-gradient(top, #79ae69, #609450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#79ae69), to(#609450));\n  background-image: -webkit-linear-gradient(top, #79ae69, #609450);\n  background-image: -o-linear-gradient(top, #79ae69, #609450);\n  background-image: linear-gradient(to bottom, #79ae69, #609450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff79ae69', endColorstr='#ff609450', GradientType=0);\n  border: 1px solid #4b733e;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-success.glyphicons i:before {\n  color: #a2bc9b;\n  text-shadow: none;\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled,\n.btn-success[disabled],\n.btn-success:hover,\n.btn-success:focus {\n  background: #609450;\n  color: #fff;\n}\n.btn-success:active,\n.btn-success.active {\n  background: #609450;\n  color: #fff;\n}\n.btn-success .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-group .btn-primary:not(.dropdown-toggle),\n.btn-group .btn-primary:not('[data-toggle*=\"\"]') {\n  margin-right: 2px;\n}\n.btn-group-vertical.block {\n  display: block;\n}\n.btn-group.btn-block {\n  padding: 0;\n  position: relative;\n}\n.btn-group.btn-block .leadcontainer {\n  left: 0;\n  position: absolute;\n  right: 29px;\n}\n.btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n  text-align: left;\n}\n.btn-group.btn-block .dropdown-lead {\n  box-sizing: border-box;\n  width: 100%;\n}\n.btn-group.btn-block .dropdown-toggle {\n  width: 30px;\n  float: right;\n  box-sizing: border-box;\n  text-align: center;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-icon-stacked {\n  text-align: left;\n  padding: 5px 5px 5px 45px;\n}\n.btn-icon-stacked i {\n  display: block;\n  width: 24px;\n  height: 24px;\n  position: absolute;\n  left: 10px;\n  top: 10px;\n}\n.btn-icon-stacked i:before {\n  left: auto;\n  top: auto;\n  position: relative;\n  text-align: center;\n}\n.btn-icon-stacked span {\n  display: block;\n  font-size: 13px;\n  line-height: normal;\n}\n.btn-facebook {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #728dc0;\n  background-image: -moz-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#8098c6), to(#5d7cb6));\n  background-image: -webkit-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -o-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: linear-gradient(to bottom, #8098c6, #5d7cb6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8098c6', endColorstr='#ff5d7cb6', GradientType=0);\n  border: 1px solid #5d7cb6;\n}\n.btn-facebook i:before {\n  color: #fff;\n}\n.btn-facebook:hover {\n  background: #8098c6;\n  color: #fff;\n}\n.btn-google {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #b24343;\n  background-image: -moz-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bf4a4a), to(#9e3838));\n  background-image: -webkit-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -o-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: linear-gradient(to bottom, #bf4a4a, #9e3838);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbf4a4a', endColorstr='#ff9e3838', GradientType=0);\n  border: 1px solid #9e3838;\n}\n.btn-google i:before {\n  color: #fff;\n}\n.btn-google:hover {\n  background: #bf4a4a;\n  color: #fff;\n}\n.btn-toggle-code {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  z-index: 1000;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-toggle-code.outside {\n  bottom: -24px;\n}\n#demo_buttons .btn-block {\n  max-width: 200px;\n  margin: 0 auto;\n}\n#demo_buttons thead th {\n  width: 25%;\n}\n.form-inline.small input,\n.form-inline.small select {\n  margin: 0 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  padding: 1px 5px;\n  border-color: #d8d9da;\n  color: #a7a7a7;\n}\n.form-inline.small select {\n  padding: 1px 0;\n  height: 23px;\n}\n.form-inline.small select:last-child {\n  margin-right: 0;\n}\n.form-inline.small label {\n  float: left;\n  margin: 0 5px 0 0;\n  display: block;\n}\n.form-inline.small .input-append.block {\n  display: block;\n}\n.form-inline.small .input-append input {\n  margin: 0;\n  width: 85%;\n}\n.form-inline.small .input-append .add-on {\n  padding: 1px 3px;\n  margin: 0 0 0 -1px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.form-inline.small .input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: #c1c1c1;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n}\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  font-size: 13px;\n}\n.uniformjs .radio .disabled input[type=\"radio\"],\n.uniformjs .checkbox .disabled input[type=\"checkbox\"] {\n  margin-left: 0;\n}\n.uniformjs .radio,\n.uniformjs .checkbox {\n  padding-left: 0;\n}\n.uniformjs .radio {\n  height: auto;\n}\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 3px;\n}\n.uniformjs label.radio {\n  margin-bottom: 0;\n}\n.uniformjs label.radio.inline {\n  margin: 0;\n}\n.checkbox.inline {\n  padding-bottom: 1px;\n}\n.uniformjs .radio span {\n  margin: 2px 0 0;\n}\n.uniformjs .checkbox span {\n  margin: -2px 0 0;\n}\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 13px;\n}\n.input-full input {\n  width: 83%;\n  height: 17px;\n}\nlegend {\n  line-height: normal;\n  height: auto;\n  font-size: 18px;\n  margin: 0 0 6px;\n  text-align: left;\n  padding: 0;\n  border: 0;\n  color: #797979;\n}\n.btn-group > .btn,\n.btn-group > .dropdown-menu {\n  font-size: 13px;\n}\n.strong {\n  font-weight: bold;\n}\ninput[type=text],\ninput[type=password],\nselect,\ntextarea {\n  border-color: #D8D9DA;\n  color: #A7A7A7;\n}\n.control-label.center {\n  text-align: center;\n}\n.form-actions {\n  background: none;\n  border: none;\n  margin: 0;\n}\n.form-horizontal .form-actions {\n  margin-top: 0;\n  padding: 0;\n}\n.form-horizontal .controls {\n  margin-left: 145px;\n}\n.form-horizontal .control-label {\n  width: 125px;\n}\n.form-horizontal .control-group:last-child {\n  margin: 0;\n}\n.input-prepend .add-on,\n.input-append .add-on {\n  background: #fff;\n}\n.input-prepend .add-on i:before,\n.input-append .add-on i:before {\n  color: #D0D1D1;\n}\n.input-prepend .add-on icon,\n.input-append .add-on icon {\n  margin-top: 0;\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n  background: #fff;\n}\n.input-prepend .add-on.glyphicons i:before,\n.input-append .add-on.glyphicons i:before {\n  font-size: 14px;\n  left: 7px;\n  top: 7px;\n  color: #D0D1D1;\n}\n.input-append .add-on.glyphicons i:before {\n  left: 6px;\n}\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover {\n  background: #4a8bc2;\n}\n.ms-container .custom-header {\n  height: 30px;\n  line-height: 30px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  font-weight: 600;\n  border: 1px solid #dbdbdb;\n}\n.ms-container .custom-header:not(.custom-footer) {\n  border-bottom: none;\n}\n.ms-container .custom-header.custom-footer {\n  border-top: none;\n}\n.select2-container img.flag,\n.select2-drop img.flag {\n  height: 10px;\n  width: 15px;\n  padding-right: 10px;\n}\n.select2-container .select2-choice {\n  border-color: #dbdbdb;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-container-multi .select2-choices {\n  border-color: #dbdbdb;\n  background: #fff;\n}\n.select2-container .select2-choice div {\n  border-color: #d8d8d8;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-drop {\n  border-color: #d8d8d8;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n  margin: 5px 0 3px 5px;\n  border-color: #d8d8d8;\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background: #4a8bc2;\n}\n.bootstrap-timepicker-widget table td {\n  font-size: 13px;\n}\n.bootstrap-timepicker > [class*=\"icon-\"] {\n  vertical-align: text-top;\n  margin: 0 0 0 -22.5px;\n  pointer-events: none;\n  position: relative;\n  cursor: pointer;\n}\n.table {\n  margin: 0 0 15px;\n  position: relative;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table.table-white {\n  background: #fff;\n}\n.table th,\n.table td {\n  border-top-color: #ebebeb;\n}\n.table td.center,\n.table th.center {\n  text-align: center;\n}\n.table td.right,\n.table th.right {\n  text-align: right;\n}\n.table-condensed {\n  font-size: 10pt;\n}\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 10px;\n}\n.table-borderless th,\n.table-borderless td {\n  border: none;\n}\n.table-striped tbody tr:nth-child(odd) td,\n.table-striped tbody tr:nth-child(odd) th {\n  background-color: #fafafa;\n}\n.table-bordered {\n  border-color: #dbdbdb;\n  /* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.table-bordered th,\n.table-bordered td {\n  border-color: #dbdbdb;\n}\n.table-fill td {\n  background: #F8F8F8;\n}\n.table .progress:last-child,\n.table .alert:last-child {\n  margin: 0;\n}\n.table .shortRight {\n  width: 25%;\n  text-align: right;\n  direction: rtl;\n  text-indent: 10px;\n}\n.table-large-spacing td {\n  padding: 20px 15px;\n}\n.table .thead td {\n  padding: 8px;\n  font-weight: bold;\n}\n.table-vertical-center td,\n.table-vertical-center th {\n  vertical-align: middle;\n}\n.table-thead-simple thead th {\n  background: none;\n  border-left: none;\n  border-right: none;\n  border-top: none;\n  border-bottom: 1px solid #ebebeb;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  text-shadow: none;\n  text-transform: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.table-thead-simple.table-thead-border-none {\n  border-top: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-thead-simple.table-thead-border-none thead th {\n  border-bottom: none;\n}\n.table-thead-simple.table-thead-border-none thead:first-child tr:first-child > th:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > td:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-primary {\n  border-color: #dbdbdb;\n  border-top: none;\n}\n.table-primary thead th {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  color: #fff;\n  font-size: 14px;\n}\n.table-primary tbody td {\n  color: #7c7c7c;\n  background: #fafafa;\n  border-width: 0px;\n}\n.table-primary tbody td.important {\n  color: #4a8bc2;\n  font-weight: 600;\n}\n.table-primary tbody td.actions {\n  padding-right: 1px;\n}\n.table-primary.table-bordered tbody td {\n  border-color: #dbdbdb;\n  border-width: 1px;\n  /*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\n}\n.table-primary tbody tr:nth-child(odd) td,\n.table-primary tbody tr:nth-child(odd) th {\n  background: #ffffff;\n}\n.table-primary tbody tr.selectable td {\n  cursor: pointer;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background: #cecece;\n  box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -webkit-box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -moz-box-shadow: 0 0 0 1px #a8a8a8 inset;\n}\n.table-pricing th,\n.table-pricing td {\n  padding: 10px;\n}\n.table-pricing .plan {\n  font-weight: 600;\n  font-size: 14px;\n  display: block;\n}\n.table-pricing .price {\n  font-weight: 600;\n  font-size: 24px;\n  display: block;\n}\n.table-pricing .heading {\n  font-weight: 600;\n  font-size: 24px;\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard {\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard.circle_ok i:before {\n  color: #9fc75f;\n}\n.table-pricing-2 th {\n  padding: 12px 0;\n  background: #64625f;\n  font-size: 14px;\n  color: #fff;\n  border-color: #5a5855;\n}\n.table-pricing-2 .pricing td {\n  padding: 12px 10px 10px;\n  background: #e5e5e5;\n  border-color: #cecece;\n}\ndiv.dataTables_filter label {\n  float: none;\n}\n.row-fluid [class*=\"span\"]:last-of-type .dataTables_filter {\n  text-align: right;\n}\n#DataTables_Table_0_length select {\n  width: 80px;\n}\n#DataTables_Table_0_info {\n  padding: 0;\n}\n.dataTables_paginate {\n  text-align: right;\n}\n.dataTables_length {\n  padding-top: 5px;\n}\n.ColVis {\n  margin: 0;\n}\n.google-visualization-table-div-page {\n  margin: 10px 0 0 0 !important;\n}\n.google-visualization-table-div-page .a-d-e-h-g {\n  padding: 0;\n  border: none;\n  margin: 0;\n}\n.google-visualization-table-div-page .a-d-e-f-g,\n.google-visualization-table-div-page .a-d-e-h-g {\n  border-style: none;\n}\n.google-visualization-table-div-page .a-d-e-o-q .a-d-e-h-g {\n  border: none;\n}\n.google-visualization-table-div-page .a-d-e {\n  background: none;\n  margin-left: 5px;\n}\n.google-visualization-table-div-page .a-d-e.a-d-e-o-p {\n  margin-left: 0;\n}\n.google-visualization-table-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n  border: 1px solid #e5e5e5;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  font-size: 10pt;\n  background: none !important;\n}\n.google-visualization-table-table td,\n.google-visualization-table-table .tableHeaderRow td {\n  padding: 4px 10px;\n  border: none;\n  border-left: 1px solid #e5e5e5;\n  border-top: 1px solid #e5e5e5;\n  line-height: 20px;\n}\n.google-visualization-table-table .tableHeaderRow td {\n  font-weight: bold;\n  vertical-align: bottom;\n}\n.google-visualization-table-table tbody tr:nth-child(odd) td,\n.google-visualization-table-table tbody tr:nth-child(odd) td {\n  background-color: rgba(255, 255, 255, 0.5);\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:first-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:last-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child td,\n.google-visualization-table-table tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n@media only screen and (max-width: 979px) {\n  .table-responsive.swipe-horizontal {\n    border-collapse: collapse;\n    border-spacing: 0;\n    display: block;\n    position: relative;\n    width: 100%;\n    border-left: 1px solid #DDD;\n  }\n  .table-responsive.swipe-horizontal th,\n  .table-responsive.swipe-horizontal td {\n    display: block;\n    margin: 0;\n    vertical-align: top;\n  }\n  .table-responsive.swipe-horizontal th {\n    text-align: right;\n    border-bottom: 0;\n    border-left: 0;\n  }\n  .table-responsive.swipe-horizontal td {\n    min-height: 1.25em;\n    text-align: left;\n    border-left: 0;\n    border-right: 0;\n    border-bottom: 0;\n    border-top: 0;\n    font-size: 13px;\n  }\n  .table-responsive.swipe-horizontal thead {\n    display: block;\n    float: left;\n  }\n  .table-responsive.swipe-horizontal thead tr {\n    display: block;\n  }\n  .table-responsive.swipe-horizontal tbody {\n    display: block;\n    width: auto;\n    position: relative;\n    overflow-x: auto;\n    white-space: nowrap;\n    word-spacing: 0;\n    letter-spacing: 0;\n    font-size: 0;\n  }\n  .table-responsive.swipe-horizontal tbody tr {\n    display: inline-block;\n    vertical-align: top;\n    border-left: 1px solid #e5e5e5;\n  }\n  .table-responsive.block {\n    /* Force table to not be like tables anymore */\n  \n    /* Hide table headers (but not display: none;, for accessibility) */\n  \n    /* Label the data */\n  \n  }\n  .table-responsive.block table,\n  .table-responsive.block thead,\n  .table-responsive.block tbody,\n  .table-responsive.block th,\n  .table-responsive.block td,\n  .table-responsive.block tr {\n    display: block;\n  }\n  .table-responsive.block thead tr {\n    position: absolute;\n    top: -9999px;\n    left: -9999px;\n  }\n  .table-responsive.block tr {\n    border: 1px solid #e5e5e5;\n  }\n  .table-responsive.block td {\n    /* Behave  like a \"row\" */\n  \n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n    position: relative;\n    padding-left: 50%;\n    white-space: normal;\n    text-align: left;\n  }\n  .table-responsive.block td:before {\n    /* Now like a table header */\n  \n    position: absolute;\n    /* Top/left values mimic padding */\n  \n    vertical-align: middle;\n    left: 6px;\n    width: 45%;\n    padding-right: 10px;\n    white-space: nowrap;\n    text-align: right;\n    font-weight: bold;\n  }\n  .table-responsive.block td:before {\n    content: attr(data-title);\n  }\n}\n.table-invoice td {\n  border: none;\n  padding: 0;\n}\n.table-projects .stats span {\n  display: block;\n  text-transform: uppercase;\n  padding: 2px 0;\n}\n.table-projects .stats span.count {\n  font-size: 18pt;\n  font-weight: normal;\n  color: #4a8bc2;\n}\n.label.large {\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n  background: #e5e5e5;\n  color: #64625f;\n  text-shadow: 0 1px 0 #fff;\n}\n.label.label-primary {\n  background: #4a8bc2;\n}\n.label.label-warning {\n  background: #ab7a4b;\n}\n.label.label-important {\n  background: #bd362f;\n}\n.label.label-success {\n  background: #609450;\n}\n.label.label-block {\n  display: block;\n}\n.tooltip-inner {\n  background: #272a2c;\n  color: #bab9b9;\n}\n.tooltip.bottom .tooltip-arrow {\n  border-bottom-color: #272a2c;\n}\n.tooltip.top .tooltip-arrow {\n  border-top-color: #272a2c;\n}\n.tooltip.left .tooltip-arrow {\n  border-left-color: #272a2c;\n}\n.tooltip.right .tooltip-arrow {\n  border-right-color: #272a2c;\n}\n.tooltip.left {\n  margin-left: -13px;\n}\n#flotTip {\n  white-space: nowrap;\n  border: 1px solid #4a8bc2;\n  padding: 3px 8px;\n  background: #4a8bc2;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  position: absolute;\n  z-index: 100;\n  color: #fff;\n}\n.popover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n}\n.popover .popover-title {\n  font-weight: 600;\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n}\n#demo_popovers .popover {\n  position: relative;\n  display: block;\n  width: 100%;\n  margin: 0;\n}\n.modal-backdrop {\n  z-index: 10000;\n  background: #000000;\n}\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.modal {\n  z-index: 10001;\n  border-color: #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  background: #ffffff;\n}\n.modal .modal-header {\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  border-color: #dbdbdb;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.modal .modal-header h3 {\n  font-size: 14px;\n}\n.modal .modal-header .close {\n  position: absolute;\n  top: 5px;\n  right: 10px;\n  padding: 0;\n  margin: 0;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #7c7c7c;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.modal .modal-body {\n  padding: 10px;\n}\n.modal .modal-body p:last-child {\n  margin: 0;\n}\n.modal .modal-footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  border-color: #ebebeb;\n  padding: 10px;\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n.alert {\n  margin: 0 0 15px;\n  color: #fff;\n  border-color: #ab7a4b;\n  background: #ab7a4b;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n}\n.alert h4 {\n  margin: 0 0 5px;\n  color: #fff;\n}\n.alert.alert-error {\n  background: #bd362f;\n  color: #fff;\n  border-color: #bd362f;\n}\n.alert.alert-error .close {\n  color: #fff;\n}\n.alert.alert-error h4 {\n  color: #fff;\n}\n.alert.alert-primary {\n  background: #4a8bc2;\n  color: #fff;\n  border-color: #4a8bc2;\n}\n.alert.alert-primary .close {\n  color: #fff;\n}\n.alert.alert-primary h4 {\n  color: #fff;\n}\n.alert.alert-info {\n  background: #dff3f8;\n  color: #7399b9;\n  border-color: #93b9d8;\n}\n.alert.alert-info .close {\n  color: #7399b9;\n}\n.alert.alert-success {\n  border-color: #609450;\n  background: #609450;\n  color: #fff;\n}\n.alert.alert-success .close,\n.alert.alert-success h4 {\n  color: #fff;\n}\n.alert .close {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #fff;\n}\n.progress {\n  background: #ffffff;\n  margin: 0 0 10px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.progress .bar {\n  background: #e8e8e8;\n}\n.progress .bar.right {\n  text-align: right;\n  text-indent: 10px;\n  direction: rtl;\n}\n.progress.white {\n  background: #fff;\n}\n.progress.progress-info .bar {\n  background: #93b9d8;\n}\n.progress.progress-success .bar {\n  background: #609450;\n}\n.progress.progress-warning .bar {\n  background: #ab7a4b;\n}\n.progress.progress-primary .bar {\n  background: #4a8bc2;\n}\n.progress.progress-danger .bar {\n  background: #bd362f;\n}\n.progress.progress-inverse .bar {\n  background: #45484d;\n}\n.progress.progress-small {\n  height: 15px;\n}\n.progress.progress-small .bar {\n  font-size: 8px;\n  line-height: 15px;\n}\n.progress.progress-small .bar.right {\n  text-indent: 2px;\n}\n.progress.progress-mini {\n  height: 5px;\n}\n.accordion {\n  margin: 0 0 10px;\n  position: relative;\n}\n.accordion .accordion-group {\n  border-color: #dbdbdb;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.accordion .accordion-inner {\n  font-size: 13px;\n  background: #ffffff;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  border-color: #dbdbdb;\n}\n.accordion .accordion-heading .accordion-toggle {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  color: #7c7c7c;\n  text-decoration: none;\n  font-weight: 600;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n}\n.accordion.accordion-2 {\n  border: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle {\n  border-bottom: 1px solid #dbdbdb;\n  background: #ffffff;\n  height: 38px;\n  line-height: 38px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons {\n  padding: 0 10px;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i {\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  display: block;\n  float: left;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i:before {\n  font-size: 20px;\n  color: #cccccc;\n  top: auto;\n  left: auto;\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  position: relative;\n  text-align: center;\n}\n.accordion.accordion-2 .accordion-body.in {\n  border-bottom: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-group {\n  border: none;\n  margin: 0;\n}\n.accordion.accordion-2 .accordion-group:last-child .accordion-body.in {\n  border-top: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-inner {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.pager li > a,\n.pager li > span {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.pagination ul {\n  background: #ffffff;\n}\n.pagination ul > li > a:hover {\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n  border-color: #70a3cf;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a,\n.pagination ul > li > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  font-weight: 600;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.pagination ul > .disabled > a:hover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.gritter-item-wrapper .gritter-item p {\n  margin: 0 0 10px;\n}\n.gritter-item-wrapper .gritter-item p:last-child {\n  margin: 0;\n}\n.gritter-item-wrapper.gritter-primary .gritter-top {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-bottom {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item {\n  background: rgba(74, 139, 194, 0.9);\n  padding: 10px 10px 15px;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  color: #fff;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item a {\n  color: #fff;\n  text-decoration: underline;\n}\n.notyfy_wrapper {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.notyfy_wrapper.notyfy_alert {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_error {\n  background: #bd362f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_success {\n  background: #51a351;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_warning {\n  background: #74614f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_information {\n  background: #57B7E2;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_confirm {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2;\n  border: none;\n}\n.notyfy_wrapper.notyfy_primary,\n.notyfy_wrapper.notyfy_primary * {\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_default {\n  background: #fafafa;\n}\n.notyfy_wrapper.notyfy_dark {\n  background: #4a4846;\n}\n.notyfy_wrapper.notyfy_dark,\n.notyfy_wrapper.notyfy_dark * {\n  color: #fff;\n}\n#notyfy_container_top {\n  top: 0;\n  left: 0;\n  width: 100%;\n}\n#notyfy_container_top .notyfy_wrapper {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper {\n  border: none;\n  box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper p {\n  margin: 0;\n}\n#content-notification .notyfy_wrapper .notyfy_message {\n  padding: 15px 10px;\n}\n#content-notification .notyfy_wrapper.notyfy_default {\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_dark {\n  background: #4a4846 url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2 url(\"../images/pattern1.png\") repeat;\n  box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -moz-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -webkit-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n}\n.sliders-vertical span {\n  height: 120px;\n  float: left;\n  margin: 15px;\n}\n.ui-slider-wrap {\n  display: block;\n  padding: 5px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider {\n  background: rgba(0, 0, 0, 0.1);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal {\n  height: 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal .ui-slider-handle {\n  top: -5px;\n}\n.ui-slider-wrap .ui-slider-vertical .ui-slider-handle {\n  left: -4px;\n}\n.ui-slider-wrap .ui-slider-handle {\n  -webkit-border-radius: 50% 50% 50% 50%;\n  -moz-border-radius: 50% 50% 50% 50%;\n  border-radius: 50% 50% 50% 50%;\n  background: #fff;\n  border-width: 3px;\n  border-style: solid;\n  border-color: rgba(0, 0, 0, 0.3);\n  width: 13px;\n  height: 13px;\n  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n}\n.ui-slider-wrap .ui-slider-range {\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  background: rgba(0, 0, 0, 0.2);\n}\n.ui-slider-wrap .slider-primary .ui-slider-handle {\n  border-color: #4a8bc2;\n}\n.ui-slider-wrap .slider-primary .ui-slider-range {\n  background: #4a8bc2;\n}\n.ui-slider-wrap .slider-warning .ui-slider-handle {\n  border-color: #FBB450;\n}\n.ui-slider-wrap .slider-warning .ui-slider-range {\n  background: #FBB450;\n}\n.ui-slider-wrap .slider-success .ui-slider-handle {\n  border-color: #609450;\n}\n.ui-slider-wrap .slider-success .ui-slider-range {\n  background: #609450;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-handle {\n  border-color: #3F4246;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-range {\n  background: #3F4246;\n}\n.ui-slider-wrap .slider-info .ui-slider-handle {\n  border-color: #93B9D8;\n}\n.ui-slider-wrap .slider-info .ui-slider-range {\n  background: #93B9D8;\n}\n.sliders-vertical {\n  position: relative;\n  margin: 0 auto;\n  display: inline-block;\n}\n.sliders-vertical .ui-slider-wrap {\n  margin: 0 5px;\n}\n.sliders-vertical .ui-slider {\n  margin: 0;\n}\n.vertical-range-slider .ui-slider-wrap {\n  display: inline-block;\n  margin: 0 auto;\n}\n.sliderContainer {\n  height: 35px;\n  margin-top: 50px;\n  width: 100%;\n}\n.sliderContainer select,\n.sliderContainer textarea,\n.sliderContainer input[type=\"text\"],\n.sliderContainer input[type=\"password\"],\n.sliderContainer input[type=\"datetime\"],\n.sliderContainer input[type=\"datetime-local\"],\n.sliderContainer input[type=\"date\"],\n.sliderContainer input[type=\"month\"],\n.sliderContainer input[type=\"time\"],\n.sliderContainer input[type=\"week\"],\n.sliderContainer input[type=\"number\"],\n.sliderContainer input[type=\"email\"],\n.sliderContainer input[type=\"url\"],\n.sliderContainer input[type=\"search\"],\n.sliderContainer input[type=\"tel\"],\n.sliderContainer input[type=\"color\"],\n.sliderContainer .uneditable-input {\n  margin: 0;\n  padding: 2px 4px;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container {\n  margin: 0 20px;\n}\n.sliderContainer .ui-rangeSlider-bar {\n  background: #4a8bc2;\n  height: 30px;\n  margin: 0;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-noArrow .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-bar {\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.sliderContainer .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-label {\n  background: #e5e5e5;\n  color: #7c7c7c;\n  font-size: 13px;\n}\n.sliderContainer .ui-rangeSlider-container {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-editRangeSlider .ui-rangeSlider-label {\n  padding: 5px;\n}\n.sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #e5e5e5;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4a8bc2;\n  margin-right: -4px;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4a8bc2;\n  margin-left: -4px;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  width: 20px;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale {\n  overflow: hidden;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label {\n  color: #7c7c7c;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-bar {\n  background: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #bd362f;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-bar {\n  background: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #609450;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-bar {\n  background: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #ab7a4b;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #cecece;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-container,\n.widget-body-gray .sliderContainer .ui-rangeSlider-arrow,\n.widget-body-gray .sliderContainer .ui-rangeSlider-label {\n  background: #cecece;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-bar {\n  background: #4d4d4d;\n}\n.ui-widget-header {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n  background: #fafafa;\n  border-color: #dddddd;\n  color: #797979;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-widget-content {\n  border: none;\n}\n.ui-datepicker {\n  padding: 10px;\n  background: #fff;\n  font-size: 12px;\n}\n.ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.widget-body-gray .ui-datepicker {\n  background: none;\n  padding: 0;\n  font-size: 12px;\n}\n.widget-body-gray .ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-datepicker-inline {\n  width: 100%;\n  padding: 0;\n}\n.datepicker-inline {\n  margin: 0 0 5px;\n}\n.wizard .wizard-head {\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-bottom: none;\n}\n.bwizard-steps .label {\n  position: relative;\n  top: -1px;\n  margin: 0 5px 0 0;\n  padding: 1px 5px 2px;\n}\n.bwizard-steps .active .label {\n  background-color: #333;\n}\n.bwizard-steps {\n  display: block;\n  margin: 0;\n  padding: 0;\n  height: 40px;\n  list-style: none;\n}\n.bwizard-steps li {\n  display: block;\n  float: left;\n  position: relative;\n  margin-right: 5px;\n  line-height: 40px;\n  height: 40px;\n  background: #fafafa;\n}\n.bwizard-steps li a {\n  display: block;\n  height: 40px;\n  line-height: 40px;\n  padding: 0 20px 0 40px;\n}\n.bwizard-steps li.active {\n  color: #fff;\n  background: #4a8bc2;\n}\n.bwizard-steps li.active:after {\n  border-left-color: #4a8bc2;\n}\n.bwizard-steps li.active a {\n  color: #fff;\n  cursor: default;\n}\n.bwizard-steps li:after {\n  position: absolute;\n  right: -20px;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fafafa;\n  border-top: 20px inset transparent;\n  content: \"\";\n  z-index: 2;\n}\n.bwizard-steps li:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fff;\n  border-top: 20px inset transparent;\n  content: \"\";\n}\n.bwizard-steps li:last-child {\n  margin-right: 0;\n}\n.bwizard-steps li:first-child:before {\n  border: none;\n}\n.bwizard-steps li:first-child a {\n  padding-left: 20px;\n}\n.bwizard-steps a:hover {\n  text-decoration: none;\n}\n.bwizard-steps.clickable li:not (.active ) {\n  cursor: pointer;\n}\n.bwizard-steps.clickable li:hover:not (.active ) {\n  background: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ):after {\n  border-left-color: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ) a {\n  color: #08c;\n}\n@media (max-width: 480px) {\n  /* badges only on small screens */\n  .bwizard-steps li:after,\n  .bwizard-steps li:before {\n    border: none;\n  }\n  .bwizard-steps li,\n  .bwizard-steps li.active,\n  .bwizard-steps li:first-child,\n  .bwizard-steps li:last-child {\n    margin-right: 0;\n    padding: 0;\n    background-color: transparent;\n  }\n}\n.layout-timeline {\n  border-top-color: #d2d1d0 !important;\n  border-top-width: 2px !important;\n}\n.layout-timeline > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  width: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline .media {\n  margin: 0 0 15px;\n}\n.layout-timeline .media .media-body {\n  padding: 10px 0 0;\n  line-height: 17px;\n}\n.layout-timeline .media .media-body .author {\n  font-size: 14px;\n}\n.layout-timeline .glyphicons.pencil {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  margin: 0;\n  padding: 0;\n  width: 20px;\n  height: 20px;\n}\n.layout-timeline .glyphicons.pencil i:before {\n  top: 0;\n  right: 0;\n  font-size: 17px;\n  color: #cccccc;\n}\n.layout-timeline ul.timeline {\n  list-style: none;\n  margin: 0;\n  padding: 15px 15px 15px 30px;\n}\n.layout-timeline ul.timeline > li {\n  position: relative;\n  padding: 0 0 15px;\n}\n.layout-timeline ul.timeline > li .date {\n  width: 50px;\n  padding: 5px 0;\n  text-align: center;\n  text-transform: uppercase;\n  font-weight: 600;\n  position: absolute;\n  left: -70px;\n  top: 0;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .date strong {\n  display: block;\n  line-height: 10px;\n  padding: 3px 0 0;\n}\n.layout-timeline ul.timeline > li .type {\n  position: absolute;\n  text-transform: uppercase;\n  color: #7c7c7c;\n  font-weight: 600;\n  padding: 0 35px 0 0;\n  top: 15px;\n  width: 100px;\n  text-align: right;\n  left: -195px;\n  line-height: 24px;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .type i:before {\n  left: auto;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type .time {\n  position: absolute;\n  top: 24px;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type:after {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -60px;\n  top: 12px;\n  width: 45px;\n  height: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .type:before {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -20px;\n  top: 9px;\n  width: 8px;\n  height: 8px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .separator .type {\n  top: 60px;\n}\n.layout-timeline ul.timeline > li .alert-gray {\n  background: #f8f8f8;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  border: none;\n  margin: 0;\n}\n.layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 0 5px 25px;\n}\n.layout-timeline ul.timeline > li p.glyphicons i:before {\n  color: #dfdfdf;\n  font-size: 17px;\n  top: 5px;\n  left: 0;\n}\n.layout-timeline ul.timeline > li .widget-body-gray .glyphicons i:before {\n  color: #7c7c7c;\n}\n.layout-timeline ul.timeline > li .widget-body-gray a {\n  color: #000;\n  text-decoration: underline;\n}\n.layout-timeline ul.timeline > li .widget-body-gray strong {\n  font-weight: 400;\n  color: #000;\n}\n.layout-timeline ul.timeline > li.active .type {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type i:before {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after {\n  background: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active:before {\n  display: block;\n  position: absolute;\n  content: \"\";\n  top: 0;\n  bottom: 0;\n  left: -45px;\n  width: 2px;\n  z-index: 2;\n  background: #4a8bc2;\n}\n.nav-timeline > li {\n  margin: 0 0 5px;\n}\n.nav-timeline > li > a {\n  background: #b3b3b3;\n  border: none;\n  margin: 0 !important;\n  font-weight: 600;\n}\n.nav-timeline > li > a.glyphicons {\n  padding: 8px 12px;\n}\n.nav-timeline > li > a.glyphicons i:before {\n  position: absolute;\n  left: auto;\n  right: 8px;\n  top: 8px;\n  color: #fff;\n}\n.nav-timeline > li.active > a {\n  background: #4a8bc2;\n}\nbody.login {\n  background: #f0f0f0;\n}\nbody.login #login {\n  padding: 40px 0 0;\n}\nbody.login #login a:not(.btn) {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nbody.login #login h1 {\n  font-size: 20pt;\n  text-align: center;\n  display: block;\n  padding: 0 0 20px;\n  text-shadow: 0 1px 0 #ffffff;\n}\nbody.login #login h1 i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n  color: #7c7c7c;\n}\nbody.login #login .wrapper {\n  max-width: 354px;\n  min-width: 300px;\n  margin: 0 auto;\n  position: relative;\n}\nbody.login #login .wrapper.signup {\n  max-width: 600px;\n}\nbody.login #login .widget .widget-head .btn {\n  margin: -4px 0 0 5px;\n}\nbody.login #login .widget .widget-head div {\n  font-size: 12px;\n}\nbody.login #login .widget .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  background: #fafafa;\n}\nbody.login #login .widget .widget-footer {\n  height: 40px;\n  line-height: 40px;\n  margin: 15px 0 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n}\nbody.login #login .widget .widget-footer p {\n  font-size: 12px;\n  color: #7c7c7c;\n  font-weight: 600;\n  margin: 0;\n  width: auto;\n  float: none;\n  padding: 0 10px 0 35px;\n  display: block;\n  height: 40px;\n  line-height: 40px;\n}\nbody.login #login .widget .widget-footer p i:before {\n  top: 7px;\n  left: 7px;\n}\nbody.login #login label {\n  font-size: 13px;\n  color: #7c7c7c;\n  font-weight: 600;\n}\nbody.login #login .checkbox {\n  margin-top: 5px;\n}\nbody.login #login .password {\n  float: right;\n  font-size: 12px;\n  font-weight: 400;\n}\nbody.login #login input[type=\"text\"],\nbody.login #login input[type=\"password\"] {\n  font-size: 13px;\n  height: auto;\n  margin-bottom: 10px;\n  padding: 5px 9px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n}\nbody.login #login ::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #ccc;\n}\nbody.login #login :-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #ccc;\n}\nbody.login #login ::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #ccc;\n}\nbody.login #login :-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #ccc;\n}\nbody.login #login form {\n  margin: 0;\n}\nbody.login #login p {\n  margin: 5px 0;\n}\nbody.login #login p:first-child {\n  margin: 0 0 10px;\n}\nbody.login #login p:last-child {\n  margin: 10px 0 0;\n}\nbody.login #login .form-signin {\n  position: relative;\n  max-width: 600px;\n  margin: 0 auto 20px;\n  background-color: #fff;\n  border: 1px solid #e5e5e5;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\nbody.login #login .form-signin .inner {\n  padding: 20px;\n}\n.gallery ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.gallery ul li .thumb {\n  position: relative;\n  display: block;\n  padding: 5px;\n  margin-bottom: 10px;\n  z-index: 1;\n  overflow: hidden;\n}\n.gallery ul li.span2:nth-child(6n+7) {\n  margin-left: 0;\n}\n.gallery ul li.span3:nth-child(4n+5) {\n  margin-left: 0;\n}\n.gallery ul li.span4:nth-child(3n+4) {\n  margin-left: 0;\n}\n.gallery.gallery-masonry li[class*=\"span\"] {\n  margin-left: 0;\n}\n.gallery.gallery-2 li .thumb {\n  padding: 0;\n  border-color: #4c4c4c;\n}\n.thumb {\n  display: block;\n  padding: 3px;\n  border: 1px solid #dbdbdb;\n}\n.thumb,\n.thumb img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails {\n  margin: 0;\n}\n.thumbnails > li {\n  margin-bottom: 15px;\n}\n.thumbnails > li .thumbnail {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails > li .thumbnail .caption {\n  color: #7c7c7c;\n}\n.thumbnails > li a.thumbnail:hover,\n.thumbnails > li a.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.thumbnail {\n  border-color: #dbdbdb;\n}\na.thumbnail .caption {\n  display: block;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.carousel {\n  margin-bottom: 15px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .carousel-control {\n  font-size: 45px;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background: #e5e5e5;\n  color: #000;\n  border-color: #000;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-control.right {\n  text-align: center;\n}\n.carousel .carousel-inner {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  border: 1px solid #dbdbdb;\n}\n.carousel .item {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .item img {\n  min-width: 100%;\n}\n.carousel .carousel-caption {\n  background: rgba(229, 229, 229, 0.95);\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-caption p {\n  color: #7c7c7c;\n}\n.carousel .carousel-caption h4 {\n  font-size: 12pt;\n  color: #000;\n  font-weight: 600;\n}\n.carousel .carousel-caption a {\n  text-decoration: underline;\n  color: #000;\n}\n.carousel.carousel-1 {\n  height: 223px;\n  margin-bottom: 33px;\n  background: #e5e5e5;\n}\n.carousel.carousel-1 .item {\n  height: 223px;\n  overflow: hidden;\n}\n.carousel.carousel-1 .item img {\n  min-height: 100%;\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.carousel.carousel-1 .carousel-indicators {\n  top: auto;\n  bottom: -23px;\n  right: 0;\n}\n.carousel.carousel-1 .carousel-indicators li {\n  background: #96bcdc;\n}\n.carousel.carousel-1 .carousel-indicators li.active {\n  background: #4a8bc2;\n}\n.carousel.carousel-1 .carousel-caption {\n  height: 193px;\n  background: #e5e5e5;\n  top: 0;\n}\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n.jcrop-holder {\n  margin: 0 auto;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.jcrop-holder img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.fc-state-highlight {\n  background: rgba(0, 0, 0, 0.2);\n}\n#external-events ul {\n  list-style: none;\n  margin: 0 0 20px;\n}\n#external-events li {\n  margin: 0 0 5px;\n  padding: 2px 5px;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  font-size: .85em;\n  cursor: pointer;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n#external-events li.glyphicons {\n  padding: 2px 5px 2px 30px;\n  display: block;\n}\n#external-events li.glyphicons i:before {\n  font-size: 14px;\n  color: #fff;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.3);\n  height: 24px;\n  width: 24px;\n  line-height: 24px;\n  text-align: center;\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  border-right: 1px solid rgba(255, 255, 255, 0.4);\n}\n.fc-header-title h2 {\n  font-size: 16pt;\n  line-height: 25px;\n}\n.fc-event-skin {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.fc-event-time,\n.fc-event-title {\n  padding: 0 5px;\n}\n#calendar .btn-group .btn-primary {\n  margin-right: 2px;\n}\n#guided-tour {\n  position: fixed;\n  z-index: 10000;\n  top: 100px;\n  right: -100%;\n  width: 40px;\n  height: 20px;\n  padding: 10px;\n  background: #4a8bc2;\n  font-size: 14pt;\n  color: #fff;\n  text-align: center;\n  box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n  -webkit-transition: width 0.5s ease;\n  -moz-transition: width 0.5s ease;\n  -o-transition: width 0.5s ease;\n  transition: width 0.5s ease;\n  overflow: hidden;\n  white-space: nowrap;\n}\n#guided-tour .hide {\n  float: left;\n  height: 0;\n  display: inline-block !important;\n  opacity: 0;\n  -webkit-transition: opacity 0.6s ease;\n  -moz-transition: opacity 0.6s ease;\n  -o-transition: opacity 0.6s ease;\n  transition: opacity 0.6s ease;\n}\n#guided-tour #close-tour {\n  display: none;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  padding: 10px;\n  color: rgba(0, 0, 0, 0.8);\n  text-shadow: 0 1px 0 #fff;\n  background: rgba(255, 255, 255, 0.6);\n}\n#guided-tour #close-tour:hover {\n  background: rgba(255, 255, 255, 0.9);\n}\n#guided-tour:hover {\n  width: 100px;\n  padding: 10px 40px 10px 10px;\n}\n#guided-tour:hover .hide {\n  padding: 0 5px 0 0;\n  opacity: 1;\n  height: auto;\n}\n#guided-tour:hover #close-tour {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  margin: 0;\n  width: 100%;\n  height: auto;\n  padding: 20px;\n  z-index: 9000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  margin: 0 90px 0 120px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages h4 {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages p:last-child {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(0, 0, 0, 0.4);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover:after {\n  border-top-color: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover:after {\n  border-bottom-color: rgba(0, 0, 0, 0.9);\n}\n.tlypageguide_shadow:after {\n  background: rgba(74, 139, 194, 0.2);\n  box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -moz-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -webkit-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  top: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  top: 20px;\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #4a8bc2;\n}\n#docs_icons {\n  text-align: center;\n  padding: 0 20px;\n}\n#docs_icons .glyphicons {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n  width: 125px;\n  font-size: 12px;\n  line-height: 48px;\n  overflow: hidden;\n  color: #7c7c7c;\n}\n#docs_icons .glyphicons i:before {\n  line-height: 55px !important;\n  color: #4a8bc2;\n}\n.documentation ul ul {\n  margin-bottom: 10px;\n}\n.documentation .span3 .menu.affix {\n  position: fixed;\n  top: 20px;\n  width: 220px;\n}\n.documentation .show-grid {\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n.documentation .show-grid [class*=\"span\"] {\n  background-color: #535a5e;\n  text-align: center;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  min-height: 40px;\n  line-height: 40px;\n  color: #fff;\n}\n.documentation .show-grid .show-grid {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.documentation .show-grid .show-grid [class*=\"span\"] {\n  background-color: #848d93;\n}\n#landing_1 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_1 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_1 .banner {\n  background: #000;\n  height: 321px;\n}\n#landing_1 .banner .banner-wrapper {\n  height: 321px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_1 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n  background: #000;\n}\n#landing_1 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 65px;\n  right: 27px;\n  position: absolute;\n  background: #fff;\n  color: #4a8bc2;\n  font-size: 22pt;\n  font-weight: bold;\n  padding: 0 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 126px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 370px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_1 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  top: 232px;\n  right: 27px;\n}\n#landing_2 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_2 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_2 .banner {\n  background: #1f2123;\n  height: 356px;\n}\n#landing_2 .banner .banner-wrapper {\n  height: 356px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_2 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 55px;\n  right: 27px;\n  position: absolute;\n  color: #fff;\n  font-size: 27pt;\n  font-weight: bold;\n  text-shadow: none;\n  padding: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 115px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 380px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  bottom: 40px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-primary {\n  right: 230px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-danger {\n  right: 27px;\n  bottom: 37px;\n}\n.container-960 {\n  width: 960px;\n  margin: 0 auto;\n}\n.separator-line {\n  width: 100%;\n  height: 1px;\n  background: #e5e5e5;\n  margin-bottom: 10px;\n}\n#choose-preview {\n  padding: 50px 0;\n}\n#choose-preview h2 {\n  margin-left: 0;\n}\n#choose-preview h2 span.text-primary {\n  font-size: 26pt;\n  font-weight: bold;\n  top: auto;\n}\n#choose-preview .control-group {\n  margin: 0 0 5px;\n}\n#choose-preview select {\n  color: #000;\n}\n#choose-preview .heading-buttons {\n  margin-bottom: 10px;\n}\n#choose-preview .box {\n  padding: 10px;\n}\n#choose-preview .box .options {\n  display: none;\n}\n#choose-preview .box .actions a {\n  display: none;\n}\n#choose-preview .box .actions a.btn-active {\n  display: inline-block;\n}\n#choose-preview .box h3 {\n  text-transform: uppercase;\n  margin: 0 0 12px;\n}\n#choose-preview .box.active {\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n}\n#choose-preview .box.active .options {\n  display: block;\n}\n#choose-preview .box.active h3 {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n}\n#choose-preview.style-dark .well {\n  background: #ffffff;\n}\n#choose-preview.style-dark .box.active {\n  background: #fafafa;\n  border-color: #ebebeb;\n}\n#choose-preview.style-dark .box.active h3 {\n  text-shadow: none;\n  color: #fff;\n}\n#choose-preview.style-dark .box.active hr {\n  border-top-color: #ebebeb;\n}\nhtml.front .menu-hidden .navbar.main {\n  height: 99px;\n}\nhtml.front .navbar.main {\n  height: auto;\n  left: 0 !important;\n}\nhtml.front .navbar.main .secondary {\n  height: 49px;\n  line-height: 49px;\n  position: relative;\n  overflow: hidden;\n  background-color: #275b87;\n  border-bottom: 1px solid #346d9d;\n}\nhtml.front .navbar.main .secondary .appbrand {\n  font-weight: 700;\n  font-size: 25pt;\n  color: #fff;\n  text-decoration: none;\n  padding: 0 8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type {\n  border-left: none;\n  margin-left: -8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type > li:first-of-type {\n  border-left: none;\n}\nhtml.front .navbar.main li.search {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\nhtml.front .navbar.main li.glyphs + .glyphs {\n  padding-left: 0;\n}\nhtml.front .navbar.main li.glyphs {\n  border: none;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  margin-left: 0;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons {\n  color: #538fc1;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons i {\n  display: inline-block;\n  width: 32px;\n  vertical-align: top;\n}\nhtml.front .navbar.main li.glyphs ul li.active .glyphicons,\nhtml.front .navbar.main li.glyphs ul li:hover .glyphicons {\n  color: #fff;\n}\nhtml.front .navbar.main li.glyphs ul li.single,\nhtml.front .navbar.main li.glyphs ul li.single:last-child {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nhtml.front #content {\n  margin: 0;\n}\nhtml.front #footer {\n  background: #1f2123;\n  color: #919192;\n}\nhtml.front #footer a:not(.btn) {\n  color: #4a8bc2;\n}\nhtml.front #footer .copy {\n  background: #000;\n  color: #2a2a2a;\n  text-align: left;\n}\nhtml.front #footer .copy a {\n  color: #2a2a2a;\n  text-decoration: none;\n}\nhtml.front #footer .copy .appbrand {\n  position: absolute;\n  right: 10px;\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n}\nhtml.front #footer .box-generic {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  background: #191a1c;\n  border: none;\n}\nhtml.front #footer h4 {\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n  text-shadow: none;\n  color: #fff;\n  margin: 0 0 8px;\n}\nhtml.front #footer ul {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\nhtml.front #footer ul li {\n  display: block;\n  background: #191a1c;\n  margin: 0 0 1px;\n  line-height: 30px;\n  height: 30px;\n}\nhtml.front #footer ul li a {\n  line-height: 30px;\n  height: 30px;\n  display: block;\n  padding: 0 10px;\n}\nhtml.front #footer ul li:first-of-type {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nhtml.front #footer ul li:last-of-type {\n  margin: 0;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nhtml.front #footer ul.icons li {\n  padding: 0 10px 0 35px;\n}\nhtml.front #footer ul.icons li i:before {\n  top: 7px;\n  left: 10px;\n}\nhtml.front #contact_gmap {\n  height: 400px;\n}\nhtml.rtl {\n  /* Buttons */\n\n  /* Typography */\n\n  /* Widgets */\n\n  /* Tabs */\n\n  /* Form elements */\n\n  /* Tables */\n\n  /* Menus */\n\n  /* UI elements */\n\n  /* Layout */\n\n  /* Timeline */\n\n  /* Login */\n\n  /* Front */\n\n}\nhtml.rtl .btn-group.btn-block .leadcontainer {\n  left: 29px;\n  right: 0;\n}\nhtml.rtl .btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\nhtml.rtl .btn-group.btn-block .dropdown-toggle {\n  float: left;\n}\nhtml.rtl .btn-toggle-code {\n  left: 0;\n  right: auto;\n}\nhtml.rtl h3.glyphicons,\nhtml.rtl h2.glyphicons {\n  padding: 0 45px 0 0;\n}\nhtml.rtl h3.glyphicons i:before,\nhtml.rtl h2.glyphicons i:before {\n  left: auto;\n  right: 2px;\n}\nhtml.rtl .widget .widget-head .heading {\n  float: right;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons {\n  padding: 0 35px 0 0;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget .widget-head {\n  padding: 0 0 0 15px;\n}\nhtml.rtl .widget .details.pull-right {\n  float: left;\n}\nhtml.rtl .breadcrumb li.pull-right {\n  float: left;\n}\nhtml.rtl [data-toggle=\"collapse-widget\"] .collapse-toggle {\n  float: left;\n}\nhtml.rtl .widget-activity ul.list li > span {\n  float: right;\n}\nhtml.rtl .widget-activity ul.list li.double .activity-icon {\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .widget-activity ul.list li:hover:after,\nhtml.rtl .widget-activity ul.list li.highlight:after {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .widget .widget-body.list ul li .count {\n  float: left;\n}\nhtml.rtl .widget .widget-body.list ul li {\n  text-align: right;\n}\nhtml.rtl .widget .widget-body.list ul li .badge {\n  left: 8px;\n  right: auto;\n}\nhtml.rtl .media > .pull-left {\n  float: right;\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .media > .pull-right {\n  float: left;\n  margin-right: 10px;\n  margin-left: 0;\n}\nhtml.rtl .widget-chat .media small.author {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget-chat .media.right small.author {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .breadcrumb li a.glyphicons {\n  padding: 0 25px 0 0;\n}\nhtml.rtl .breadcrumb li a.glyphicons i:before {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li {\n  border-right: none;\n  border-left: 1px solid #dbdbdb;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:last-child {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 35px 0 15px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a i:before {\n  left: auto;\n  right: 5px;\n}\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li a.glyphicons,\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 38px 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  right: auto;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head {\n  padding: 0;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head ul li {\n  border-left: none;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head {\n  padding: 10px 10px 10px 0;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head ul li {\n  border: none;\n}\nhtml.rtl .widget.widget-tabs-icons-only .widget-head ul.pull-right {\n  float: left;\n}\nhtml.rtl .tabsbar.tabsbar-2 ul li a {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .tabsbar ul li a i {\n  float: right;\n}\nhtml.rtl .bootstrap-select.btn-group,\nhtml.rtl .bootstrap-select.btn-group[class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .select2-container-multi .select2-search-choice-close {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .select2-container-multi .select2-choices .select2-search-choice {\n  padding: 3px 18px 3px 5px;\n}\nhtml.rtl .select2-container img.flag,\nhtml.rtl .select2-drop img.flag {\n  padding: 0 0 0 10px;\n}\nhtml.rtl .radio,\nhtml.rtl .checkbox {\n  padding: 0;\n}\nhtml.rtl div.checker {\n  margin: 0 0 0 5px;\n}\nhtml.rtl div.dataTables_paginate {\n  float: left;\n}\nhtml.rtl div.dataTables_filter label {\n  float: left;\n}\nhtml.rtl .table td.right,\nhtml.rtl .table th.right {\n  text-align: left;\n}\nhtml.rtl .navbar.main .topnav > li.search form input {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n  padding: 0 35px 0 10px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  left: auto;\n  right: 7px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  left: auto;\n  right: 8px;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n}\nhtml.rtl .navbar.main .topnav > li {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav > li:first-child {\n  border-left: none;\n}\nhtml.rtl .navbar.main .topnav > li.search,\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  margin: 0;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n  box-shadow: -1px 0 0 0 #346d9d, 1px 0 0 0 #619aca;\n}\nhtml.rtl .navbar.main .topnav.pull-left {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav.pull-left:first-of-type {\n  padding-right: 8px;\n}\nhtml.rtl .navbar.main .topnav.pull-right {\n  float: left;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left: 1px solid #346d9d;\n}\nhtml.rtl .navbar.main .topnav.open .dropdown-menu {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .navbar.main .topnav .submenu-show.pull-right {\n  left: auto !important;\n  right: 100% !important;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right {\n  float: left;\n}\nhtml.rtl .ribbon-wrapper {\n  right: auto;\n  left: -3px;\n}\nhtml.rtl .ribbon-wrapper .ribbon {\n  -webkit-transform: rotate(-45deg);\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  left: auto;\n  right: -5px;\n}\nhtml.rtl .ribbon-wrapper .ribbon:after {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .ribbon-wrapper .ribbon:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .innerLR {\n  padding: 0 15px;\n  position: relative;\n}\nhtml.rtl .innerL {\n  padding-right: 15px;\n  padding-left: 0;\n  position: relative;\n}\nhtml.rtl .innerR {\n  padding-left: 15px;\n  padding-right: 0;\n  position: relative;\n}\nhtml.rtl .layout-timeline ul.timeline {\n  padding: 15px 30px 15px 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .date {\n  right: -70px;\n  left: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type {\n  right: -195px;\n  left: auto;\n  text-align: left;\n  padding: 0 0 0 35px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type i:before {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type .time {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:before {\n  left: -20px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:after {\n  left: -60px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .glyphicons.pencil {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 25px 5px 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .layout-timeline .nav-timeline > li > a.glyphicons i:before {\n  right: auto;\n  left: 8px;\n}\nhtml.rtl body.login #login .password {\n  float: left;\n}\nhtml.rtl.front .navbar.main .secondary .appbrand.pull-left {\n  float: right;\n}\nhtml.rtl.front .navbar.main .topnav.pull-right > li:last-child {\n  border-left: none;\n}\nhtml.rtl.front .navbar.main .secondary ul.topnav:first-of-type {\n  margin-left: 0;\n  padding-left: 8px;\n}\n/* Responsive */\n@media (max-width: 767px) {\n  html.rtl .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  html.rtl .layout-timeline ul.timeline > li .date {\n    right: auto;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type {\n    right: auto;\n    margin: 0 0 10px 60px;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type .time {\n    left: -40px;\n    right: auto;\n  }\n  html.rtl .navbar.main .topnav > li {\n    float: none;\n    border-right: none;\n  }\n  html.rtl .navbar.main .topnav > li.search {\n    box-shadow: none !important;\n    -moz-box-shadow: none !important;\n    -webkit-box-shadow: none !important;\n  }\n  html.rtl .navbar.main .topnav > li.search form button {\n    right: auto;\n    left: 0;\n  }\n  html.rtl .navbar.main .topnav,\n  html.rtl .navbar.main .topnav.pull-left,\n  html.rtl .navbar.main .topnav.pull-right {\n    float: none;\n  }\n  html.rtl .navbar.main .topnav.pull-left:first-of-type {\n    padding-right: 0;\n  }\n  html.rtl .navbar.main .topnav.open .dropdown-menu {\n    right: auto;\n    left: auto;\n  }\n  html.rtl .navbar.main .topnav .submenu-show.pull-right {\n    left: auto !important;\n    right: auto !important;\n  }\n}\n.lt-ie9 .widget .widget-body.list ul li {\n  border-bottom: 1px solid #efefef;\n}\n.lt-ie9 .navbar.main .btn-navbar {\n  float: left;\n}\n.lt-ie9 .navbar.main .topnav {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 42px;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  margin-top: 0;\n  top: 8px;\n  left: 5px;\n}\n.lt-ie9 .heading-buttons h1.glyphicons,\n.lt-ie9 .heading-buttons h2.glyphicons,\n.lt-ie9 .heading-buttons h3.glyphicons,\n.lt-ie9 .heading-buttons h4.glyphicons,\n.lt-ie9 .heading-buttons h5.glyphicons,\n.lt-ie9 .heading-buttons h6.glyphicons {\n  float: left;\n}\n.lt-ie9 #guided-tour .hide {\n  display: none !important;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on {\n  width: 24px;\n  padding-right: 0;\n  padding-left: 0;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i {\n  width: 24px;\n  height: 24px;\n  display: block;\n  vertical-align: middle;\n  line-height: 24px;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i:before {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n  top: auto;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  vertical-align: middle;\n  margin-top: 0;\n  top: 0;\n}\n.lt-ie9 #footer {\n  background: #222;\n}\n.lt-ie9 #footer .copy {\n  background: #111;\n}\n.lt-ie9 .ribbon-wrapper {\n  display: none;\n}\n/* Desktop wide */\n@media (min-width: 1200px) {\n  .navbar.main .topnav > li.search form input {\n    width: 155px;\n  }\n}\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px) {\n  body > .container-fluid.fixed {\n    width: 98%;\n    margin: 10px auto 10px;\n  }\n  .hidden-desktop-1 {\n    display: none !important;\n  }\n}\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px) {\n  .navbar.main .topnav > li.search {\n    margin-left: 10px !important;\n  }\n}\n@media (max-width: 979px) {\n  body > .container-fluid.fixed {\n    width: auto;\n    border: none;\n    margin: 0;\n  }\n}\n@media (max-width: 767px) {\n  body {\n    padding: 0;\n  }\n  .nav-tabs > li > a {\n    font-size: 10pt;\n  }\n  .nav-tabs > li > a,\n  .nav-pills > li > a {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n  .documentation .span3 .menu.affix {\n    position: relative;\n    top: 0;\n    width: auto;\n  }\n  .phone-margin.bottom {\n    margin: 0 0 10px;\n  }\n  .well {\n    padding: 5px;\n  }\n  .widget .widget-body {\n    padding: 5px;\n  }\n  .widget.margin-bottom-none {\n    margin-bottom: 10px;\n  }\n  .widget.widget-tabs .widget-head {\n    height: auto;\n    padding: 0;\n  }\n  .widget.widget-tabs .widget-head ul {\n    display: block;\n    border-right: none;\n    height: auto;\n  }\n  .widget.widget-tabs .widget-head ul li {\n    float: none;\n    display: block;\n    width: 100%;\n  }\n  .widget.widget-tabs-icons-only .widget-head {\n    height: auto;\n  }\n  .widget-activity ul.list li > span.ellipsis {\n    max-width: 60%;\n  }\n  .widget-activity ul.list li.double > span.ellipsis {\n    max-width: 75%;\n  }\n  .widget-gallery .nav {\n    display: none;\n  }\n  .widget-gallery.widget-gallery-slide .gallery {\n    width: auto;\n  }\n  .widget-chat .media .pull-left,\n  .widget-chat .media .pull-right {\n    margin: 0;\n  }\n  .widget-chat .chat-controls {\n    height: 60px;\n  }\n  .widget-chat {\n    padding-bottom: 90px !important;\n  }\n  .widget-chat .media small.author {\n    position: relative;\n    top: auto;\n    left: auto;\n    right: auto;\n    width: auto;\n  }\n  .widget-chat .media small.date {\n    border: none;\n  }\n  .tabsbar,\n  .tabsbar.tabsbar-2 {\n    height: auto;\n  }\n  .tabsbar ul,\n  .tabsbar.tabsbar-2 ul {\n    height: auto;\n  }\n  .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  .layout-timeline ul.timeline > li .date {\n    position: relative;\n    left: auto;\n    display: block;\n    top: auto;\n  }\n  .layout-timeline ul.timeline > li .type {\n    position: relative;\n    left: auto;\n    top: auto;\n    width: auto;\n    margin: 0 60px 10px 0;\n  }\n  .layout-timeline ul.timeline > li .type:before,\n  .layout-timeline ul.timeline > li .type:after {\n    display: none;\n  }\n  .layout-timeline ul.timeline > li .type .time {\n    top: 0;\n    right: -40px;\n  }\n  .layout-timeline ul.timeline > li.active .separator .type {\n    margin-bottom: 0;\n  }\n  .layout-timeline ul.timeline > li .separator .type {\n    top: auto;\n  }\n  .widget-activity ul.list {\n    margin: 0;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n    height: 35px;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head ul li {\n    float: left;\n    width: auto;\n  }\n  .media {\n    text-align: center;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    border: none;\n    padding-bottom: 0;\n    margin: 0;\n  }\n  .media img.pull-left,\n  .media img.pull-right {\n    display: inline-block;\n  }\n  .media blockquote {\n    padding: 0;\n    text-align: center;\n  }\n  .media blockquote.pull-right p,\n  .media blockquote.pull-right small {\n    text-align: center;\n  }\n  .menu-right #menu {\n    left: 0;\n    right: auto;\n  }\n  .menu-right.menu-hidden #content {\n    margin: 0;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n    width: auto;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n    display: none;\n  }\n  .row-merge.border-top,\n  .row-merge ~ .row-merge {\n    border-top: 1px solid #e5e5e5;\n  }\n  body.login #login {\n    padding: 50px 5px;\n  }\n  #gritter-notice-wrapper {\n    display: none !important;\n  }\n  .topnav .dropdown.submenu {\n    height: auto;\n  }\n  .topnav .dropdown.submenu .submenu-show {\n    position: relative;\n    margin: 0 !important;\n    top: auto !important;\n    left: auto !important;\n    right: auto !important;\n  }\n  .navbar.main {\n    height: auto;\n  }\n  .navbar.main .topnav {\n    border-left: none;\n    border-right: none;\n    float: none;\n  }\n  .navbar.main .topnav > li {\n    float: none;\n    border-top: 1px solid #346d9d;\n    border-bottom: 1px solid #619aca;\n  }\n  .navbar.main .topnav > li.active,\n  .navbar.main .topnav > li:hover,\n  .navbar.main .topnav > li.open {\n    padding: 8px;\n  }\n  .navbar.main .topnav > li.search form {\n    position: relative;\n  }\n  .navbar.main .topnav > li.search form input {\n    width: 90%;\n  }\n  .navbar.main .topnav > li.search form button {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n  .navbar.main .topnav > li:first-child {\n    border-top: none;\n  }\n  .navbar.main .topnav > li .dropdown.submenu .dropdown-menu {\n    position: relative;\n    float: none;\n    display: block !important;\n    padding: 0;\n    border: none;\n    border-top: 1px solid #f3f3f3;\n  }\n  .navbar.main .topnav:first-of-type > li:first-child {\n    margin-left: 38px;\n  }\n  .menu-hidden .navbar.main {\n    height: 50px;\n    overflow: hidden;\n  }\n  .container-960 {\n    width: auto;\n  }\n  #landing_1 [class*=\"span\"] {\n    padding: 0 5px;\n  }\n  #landing_1 .banner-1 {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item img {\n    min-height: 0;\n    height: auto;\n  }\n  #landing_1 .banner-1 .carousel-caption {\n    height: auto;\n  }\n  #landing_1 .banner {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3,\n  #landing_1 .banner .banner-wrapper.banner-1 p,\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    position: relative;\n    top: auto;\n    right: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    display: block;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 p {\n    margin: 0 0 5px;\n    text-align: center;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3 {\n    font-size: 12pt;\n    line-height: 46px;\n    text-align: center;\n  }\n  .social-large {\n    height: auto;\n  }\n  .social-large a {\n    float: none;\n    display: block;\n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n  }\n  .social-large a:last-child {\n    border: none;\n  }\n  #content .heading-mosaic {\n    height: auto !important;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: normal !important;\n  }\n}\n@media (max-width: 480px) {\n  h1,\n  h2,\n  h3 {\n    line-height: 30px;\n    font-size: 18pt;\n  }\n  h3.glyphicons i:before,\n  h2.glyphicons i:before {\n    font-size: 24px;\n    top: 3px;\n    left: 5px;\n  }\n  .heading-buttons .buttons {\n    margin-top: 10px;\n    float: none;\n    padding: 0 10px;\n    text-align: center;\n  }\n  .heading-buttons .buttons .btn {\n    margin: 0;\n    float: none;\n  }\n  .separator {\n    padding: 5px 0;\n    margin: 0;\n  }\n  .table-condensed th,\n  .table-condensed td {\n    padding: 4px 5px;\n  }\n  p.glyphicons {\n    padding: 5px 0 10px 55px;\n  }\n  p.glyphicons i:before {\n    color: #D67170;\n    font-size: 35pt;\n    top: 0;\n  }\n  p.glyphicons.right {\n    padding: 0 55px 0 0;\n  }\n}\n@media (max-width: 320px) {\n  .nav-tabs > li,\n  .nav-tabs > li > a,\n  .nav-tabs > li > a:hover {\n    display: block;\n    float: none;\n    margin: 0 0 -1px;\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li:hover {\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li,\n  .nav-tabs > li > a {\n    border-color: #E0D5C6;\n    background: #F5EADB;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n}\n#themer {\n  position: fixed;\n  top: 40%;\n  left: 50%;\n  z-index: 1000;\n  width: 260px;\n  margin: -50px 0 0 -130px;\n  text-align: left;\n}\n#themer.in {\n  overflow: visible;\n}\n#themer .close2 {\n  position: absolute;\n  background: #DDD;\n  color: #222;\n  font-weight: 600;\n  height: 20px;\n  top: 14px;\n  right: 10px;\n  line-height: 20px;\n  text-align: center;\n  font-size: 10pt;\n  padding: 0 10px;\n  cursor: pointer;\n}\n#themer .wrapper {\n  position: relative;\n  background: #292c2e;\n  border: 1px solid #2f3235;\n  padding: 15px;\n  color: #fafafa;\n}\n#themer .wrapper hr.separator {\n  margin: 10px 0;\n  border-top-color: #5e646b;\n  border-bottom-color: #2f3235;\n}\n#themer .wrapper h4 {\n  border-bottom: 1px solid #5e6060;\n  padding: 0 0 10px;\n  margin: 0 0 10px;\n  color: #fff;\n}\n#themer .wrapper h4 span {\n  color: #5e6060;\n  font-weight: normal;\n  font-size: 10pt;\n  text-shadow: none;\n}\n#themer .wrapper .btn {\n  margin: 0;\n}\n#themer .wrapper #themer-getcode-less {\n  margin: 0 0 0 5px;\n}\n#themer .wrapper ul {\n  margin: 0;\n  list-style: none;\n}\n#themer .wrapper ul li {\n  height: 25px;\n  line-height: 25px;\n  position: relative;\n}\n#themer .wrapper ul li .minicolors {\n  line-height: normal;\n  border: none;\n  top: 2px;\n  right: 0;\n  position: absolute;\n}\n#themer .wrapper ul li .minicolors input {\n  border: none;\n  height: 20px;\n  width: 69px;\n  background: #414649;\n  color: #fff;\n  font-size: 9pt;\n  padding: 0 5px;\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li .minicolors-swatch {\n  cursor: pointer;\n  width: 18px;\n  height: 18px;\n}\n#themer .wrapper ul li .minicolors-panel {\n  z-index: 10000;\n  top: 24px;\n}\n#themer .wrapper ul li .minicolors-position-left .minicolors-panel {\n  left: -152px;\n}\n#themer .wrapper ul li select {\n  position: absolute;\n  top: 3px;\n  right: 0;\n  width: 100px;\n  height: 20px;\n  line-height: normal;\n  padding: 0;\n  margin: 0;\n  font-size: 9pt;\n  background: #414649;\n  border: 1px solid #2F3235;\n  color: #fff;\n}\n#themer .wrapper ul li .link {\n  text-decoration: underline;\n  cursor: pointer;\n}\n#themer .wrapper ul li label {\n  margin: 0;\n  line-height: 25px;\n  font-size: 9pt;\n}\n#themer .wrapper ul li label input {\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li.advanced {\n  display: none;\n}\n#themer.themer-advanced .wrapper ul li.advanced {\n  display: block;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/css/style-flat.css",
    "content": "@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n/*!\n *\n * QuickAdmin v1.3.1\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\nbody {\n  font-family: 'Open Sans', sans-serif;\n  background: #f0f0f0;\n  font-size: 13px;\n  color: #7c7c7c;\n  position: relative;\n}\n*,\na:focus {\n  outline: none !important;\n}\nbutton:focus {\n  outline: none !important;\n}\nbutton::-moz-focus-inner {\n  border: 0;\n}\na:hover {\n  color: #333333;\n}\na {\n  color: #4a8bc2;\n  outline: 0 !important;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: 'Open Sans', sans-serif;\n  margin: 0 0 5px;\n  font-weight: 400;\n  text-shadow: 0 1px 0 #ffffff;\n  color: #4d4d4d;\n}\nh1.glyphicons,\nh2.glyphicons,\nh3.glyphicons,\nh4.glyphicons,\nh5.glyphicons,\nh6.glyphicons {\n  color: #7c7c7c;\n}\nh1 span,\nh2 span,\nh3 span,\nh4 span,\nh5 span,\nh6 span {\n  color: #afafaf;\n  font-weight: 400;\n  padding: 0 5px;\n  font-style: italic;\n}\nh1 span,\nh2 span,\nh3 span {\n  font-size: 50%;\n  text-transform: none;\n  padding: 0;\n  position: relative;\n  top: -3px;\n  font-weight: 400;\n}\nh1 {\n  line-height: 40px;\n}\nh2,\nh3 {\n  line-height: 30px;\n}\nh2 {\n  font-size: 26px;\n}\n.heading-buttons h1,\n.heading-buttons h2,\n.heading-buttons h3,\n.heading-buttons h4,\n.heading-buttons h5,\n.heading-buttons h6 {\n  display: inline-block;\n  margin: 0 15px;\n}\n.heading-buttons h1.glyphicons,\n.heading-buttons h2.glyphicons,\n.heading-buttons h3.glyphicons,\n.heading-buttons h4.glyphicons,\n.heading-buttons h5.glyphicons,\n.heading-buttons h6.glyphicons {\n  display: inline-block;\n}\n.heading-buttons .buttons {\n  margin-top: 3px;\n  margin-right: 15px;\n  text-align: right;\n}\n.heading-buttons .btn {\n  margin-right: 15px;\n}\n.heading-buttons .btn:last-child {\n  margin-right: 0;\n}\np {\n  margin: 0 0 10px;\n  line-height: normal;\n}\n.lead {\n  margin: 0 0 10px;\n}\n.glyphicons {\n  color: #7c7c7c;\n}\nul.icons {\n  text-align: left;\n  padding: 0;\n}\nul.icons li {\n  display: block;\n  padding: 0 0 0 25px;\n  line-height: 22px;\n  color: #7c7c7c;\n}\nul.icons li i:before {\n  color: #7c7c7c;\n  font-size: 17px;\n  left: 0;\n  top: 4px;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: 'Open Sans', sans-serif;\n}\npre.prettyprint {\n  word-break: normal;\n  word-wrap: normal;\n  white-space: pre;\n  background-color: #f8f8f8;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f8f8f8), color-stop(50%, #eeeeee));\n  background-image: -webkit-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -moz-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -o-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  -moz-background-size: 38px 38px;\n  background-size: 38px 38px;\n  border: 1px solid #ebebeb;\n  display: block;\n  line-height: 19px;\n  margin-bottom: 15px;\n  overflow: visible;\n  overflow-y: hidden;\n  padding: 0 0 0 4px;\n}\npre.prettyprint .glyphicons {\n  padding: 0 0 0 20px;\n}\npre.prettyprint .glyphicons i:before {\n  font-size: 17px;\n  top: 1px;\n}\n#content pre.prettyprint,\n#content pre.prettyprint span {\n  color: #7c7c7c;\n}\nblockquote {\n  margin: 0;\n  padding: 0 0 0 5px;\n}\nblockquote,\nblockquote.pull-right {\n  border: none;\n}\nblockquote p {\n  font-weight: 400;\n  font-size: 13px;\n  margin: 0 0 10px;\n}\nblockquote small {\n  color: #4a8bc2;\n}\n.separator {\n  padding: 15px 0;\n  display: block;\n}\n.separator.bottom {\n  padding: 0 0 15px;\n}\n.separator.top {\n  padding: 15px 0 0;\n}\nhr {\n  border-top-color: #dbdbdb;\n  border-bottom: none;\n  margin: 15px 0;\n}\nhr.separator {\n  padding: 0;\n}\nhr.separator.top {\n  margin: 15px 0 0;\n}\nhr.separator.bottom {\n  margin: 0 0 15px;\n}\n@media print {\n  html,\n  body {\n    height: auto !important;\n    min-height: none !important;\n  }\n  @page  {\n    size: auto;\n    margin: 10mm 10mm 10mm 10mm;\n  }\n  #content {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  .breadcrumb,\n  #tlyPageGuideWrapper,\n  .filter-bar {\n    display: none !important;\n  }\n  .table td,\n  .table th {\n    vertical-align: middle;\n  }\n  .table th {\n    padding: 3px;\n    text-align: center;\n  }\n  .table img {\n    float: left;\n  }\n}\n.map_canvas img {\n  max-width: none !important;\n}\n.streetview {\n  width: 100%;\n  height: 300px;\n}\n.ui-dialog-vevent .dtstart {\n  display: none;\n}\n.ui-dialog-vevent .website {\n  margin: 0 0 1em;\n}\n#fontawesome [class^=\"icon-\"],\n#fontawesome [class*=\" icon-\"] {\n  font-size: 24px;\n  line-height: 24px;\n  vertical-align: middle;\n  margin: 0 5px 0 0;\n}\n#fontawesome a {\n  line-height: 40px;\n}\n.innerLR {\n  padding: 0 15px;\n  position: relative;\n}\n.innerTB {\n  padding: 15px 0;\n  position: relative;\n}\n.innerAll {\n  padding: 15px;\n  position: relative;\n}\n.innerL {\n  padding-left: 15px;\n  position: relative;\n}\n.innerR {\n  padding-right: 15px;\n  position: relative;\n}\n.innerT {\n  padding-top: 15px;\n  position: relative;\n}\n.innerB {\n  padding-bottom: 15px;\n  position: relative;\n}\n.center {\n  text-align: center !important;\n}\n.margin-bottom-none {\n  margin-bottom: 0 !important;\n}\n.margin-none {\n  margin: 0 !important;\n}\n.padding-none {\n  padding: 0 !important;\n}\n.border-none {\n  border: none !important;\n}\n.box-shadow-none {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.padding-none-TB {\n  padding-bottom: 0 !important;\n  padding-top: 0 !important;\n}\n.relativeWrap {\n  position: relative;\n}\n.text-primary {\n  color: #4a8bc2;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-faded {\n  color: #d7d7d7 !important;\n}\n.text-large {\n  font-size: 35px;\n  line-height: 40px;\n}\n.text-xlarge {\n  font-size: 50px;\n  line-height: 50px;\n}\n.text-xxlarge {\n  font-size: 70px;\n  line-height: 70px;\n}\n.text-underline {\n  text-decoration: underline;\n}\n.text-right {\n  text-align: right !important;\n}\n.containerBg {\n  background: #f0f0f0;\n}\n.whiteBg {\n  background: #fff;\n}\n.row-merge {\n  position: relative;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-left: 0;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 1px;\n  background: #dbdbdb;\n  content: \"\";\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span3\"] {\n  width: 25.26315789473684%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span4\"] {\n  width: 33.68421052631579%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span5\"] {\n  width: 42.10526315789473%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span6\"] {\n  width: 50.74626865671642%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span8\"] {\n  width: 67.66169154228855%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span9\"] {\n  width: 75.78947368421052%;\n}\n.row-merge.border-top,\n.row-merge ~ .row-merge {\n  border-top: 1px solid #dbdbdb;\n}\n.row-merge.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n#wrapper {\n  overflow: hidden;\n  overflow-y: auto;\n  float: left;\n  width: 100%;\n}\nbody > .container-fluid {\n  padding: 0;\n  background: #f0f0f0;\n}\nbody > .container-fluid.fixed {\n  margin: 30px auto 30px;\n  border-left: 1px solid #d8d8d8;\n  border-right: 1px solid #d8d8d8;\n  width: 94%;\n}\nbody > .container-fluid.documentation {\n  background: #fff;\n}\nbody > .container-fluid.fixed {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nbody > .container-fluid.fixed #wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nbody > .container-fluid.fixed #content {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nbody > .container-fluid.fixed #footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nbody > .container-fluid.fixed .navbar.main,\nbody > .container-fluid.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n#content {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  min-width: 320px;\n  min-height: 500px;\n  padding: 0 0 15px;\n  background: #f0f0f0;\n}\n#content > .menubar {\n  border-left: none;\n  border-right: none;\n}\n#content > p {\n  padding: 0 15px 5px;\n}\n#content > h1,\n#content > h2,\n#content > h3,\n#content > h4,\n#content > h5,\n#content > h6 {\n  margin: 18px 15px 15px;\n}\n#content > .filter-bar {\n  border-right: none;\n  border-left: none;\n}\n#content .heading-buttons {\n  margin-top: 15px;\n}\n#content .heading-arrow {\n  text-transform: uppercase;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 15px;\n  padding: 0 15px;\n  font-size: 11pt;\n  height: 35px;\n  line-height: 30px;\n  position: relative;\n}\n#content .heading-arrow:after {\n  content: \"\";\n  display: inline-block;\n  width: 0;\n  height: 0;\n  border-bottom: 8px solid #dbdbdb;\n  border-right: 8px solid transparent;\n  border-left: 8px solid transparent;\n  position: absolute;\n  bottom: 0;\n  left: 15px;\n}\n#content .heading-arrow.glyphicons {\n  padding: 0 10px 0 40px;\n}\n#content .heading-arrow.glyphicons i:before {\n  font-size: 17px;\n  left: 15px;\n}\n#content .heading-arrow.margin-bottom-none {\n  margin-bottom: 0;\n}\n#content > .widget {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget .widget-head,\n#content > .widget .widget-body {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget:last-child {\n  margin: 0;\n}\n#content > .table {\n  border-left: none;\n  border-right: none;\n}\n#content > .table tr td:first-child {\n  border-left: none;\n}\n#footer {\n  font-weight: 600;\n  position: relative;\n  overflow: hidden;\n  z-index: 10000;\n  border-bottom: 1px solid #dbdbdb;\n  border-top: 1px solid #dbdbdb;\n}\n#footer a:not(.btn) {\n  color: #7c7c7c;\n}\n#footer .copy {\n  background: #e5e5e5;\n  text-align: center;\n  padding: 5px 10px;\n  font-size: 12px;\n  height: 20px;\n}\n#footer .copy a {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nhtml.sidebar #content {\n  margin: 0 0 0 65px;\n}\nhtml.sidebar .menu-right #content {\n  margin: 0 65px 0 0;\n}\n@media (min-width: 768px) {\n  html.sticky-sidebar.sidebar:not(.fixed) body {\n    overflow: hidden;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed),\n  html.sticky-sidebar.sidebar:not(.fixed) body,\n  html.sticky-sidebar.sidebar:not(.fixed) body > .container-fluid,\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    min-height: 100%;\n    height: 100%;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    margin-bottom: -32px;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #menu {\n    position: fixed;\n    bottom: 0;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #content {\n    padding-bottom: 47px;\n  }\n}\n@media (min-width: 768px) {\n  html.sticky-top:not(.fixed) #content {\n    padding-top: 50px;\n  }\n  html.sticky-top:not(.fixed) .navbar.main {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 10000;\n  }\n  html.sticky-top:not(.fixed).sidebar .navbar.main {\n    left: 65px;\n  }\n  html.sticky-top:not(.fixed).sidebar .menu-right .navbar.main {\n    left: 0;\n    right: 65px;\n  }\n  html.sticky-top:not(.fixed) .menu-hidden .navbar.main {\n    left: 0 !important;\n    right: 0 !important;\n  }\n  html.sticky-top:not(.fixed).front #content {\n    padding-top: 100px;\n    margin: 0 !important;\n  }\n}\nhtml.fixed,\nhtml.fixed body {\n  min-height: auto;\n  height: auto;\n  overflow: visible;\n}\nbody > .container-fluid.fixed {\n  min-height: auto;\n  height: auto;\n}\nbody > .container-fluid.fixed #wrapper {\n  position: relative;\n  overflow: hidden;\n  min-height: auto;\n  height: auto;\n  margin: 0;\n}\nbody > .container-fluid.fixed #menu {\n  position: absolute;\n  height: 100%;\n  min-height: 100%;\n  bottom: auto;\n}\n.ui-resizable-helper.menu {\n  border: 1px dotted gray;\n  border-left: none;\n  background: rgba(0, 0, 0, 0.3);\n}\n.ui-resizable-handle {\n  width: 3px;\n  border-style: solid;\n  border-width: 0;\n  border-color: rgba(0, 0, 0, 0.4);\n}\n.dropdown-menu {\n  z-index: 100000;\n}\n#menu {\n  width: 65px;\n  float: left;\n  position: absolute;\n  left: 0;\n  top: 0;\n  overflow: hidden;\n  height: 100%;\n  min-height: 100%;\n  background: #1f2123;\n  font-size: 11px;\n}\n#menu .appbrand {\n  font-weight: 700;\n  display: block;\n  text-decoration: none;\n  line-height: 10px;\n  padding: 10px;\n  text-align: center;\n  color: #ffffff;\n  border-bottom: 1px solid #161718;\n}\n#menu .profile {\n  display: block;\n  padding: 10px 0;\n  border-bottom: 1px solid #161718;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .profile a {\n  border: 1px solid #161718;\n  display: inline-block;\n  width: 36px;\n  height: 36px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a:hover {\n  border-color: #000000;\n}\n#menu .slim-scroll > ul,\n#menu > ul {\n  list-style: none;\n  float: left;\n  margin: 0;\n  padding: 0;\n  display: block;\n  width: 100%;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .slim-scroll > ul > li,\n#menu > ul > li {\n  display: block;\n  border-bottom: 1px solid #161718;\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  position: relative;\n  overflow: hidden;\n  padding: 0;\n  margin: 0;\n}\n#menu .slim-scroll > ul > li a,\n#menu > ul > li a {\n  display: block;\n  width: auto;\n  padding: 10px;\n  margin: 0;\n  line-height: 10px;\n  text-decoration: none;\n  font-weight: 600;\n  color: #4c4d4f;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li a.glyphicons,\n#menu > ul > li a.glyphicons {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i,\n#menu > ul > li a.glyphicons i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i:before,\n#menu > ul > li a.glyphicons i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.glyphicons > a,\n#menu > ul > li.glyphicons > a {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i,\n#menu > ul > li.glyphicons > a i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i:before,\n#menu > ul > li.glyphicons > a i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.active,\n#menu > ul > li.active {\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  border-top: 1px solid #2a2c2e;\n  position: relative;\n  overflow: visible;\n}\n#menu .slim-scroll > ul > li.active > a,\n#menu > ul > li.active > a {\n  background: #161718;\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active.glyphicons a i:before,\n#menu > ul > li.active.glyphicons a i:before {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active:first-child,\n#menu > ul > li.active:first-child {\n  border-top: none;\n}\n#menu .slim-scroll > ul > li:hover > a,\n#menu > ul > li:hover > a {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li:hover.glyphicons a i:before,\n#menu > ul > li:hover.glyphicons a i:before {\n  color: #737474;\n}\n#menu.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.menu-left .ui-resizable-e {\n  background: rgba(255, 255, 255, 0.2);\n  right: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\n.menu-left .ui-resizable-e:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right .ui-resizable-w {\n  background: rgba(255, 255, 255, 0.2);\n  left: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\nbody .menu-right .ui-resizable-w:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right #menu {\n  left: auto;\n  right: 0;\n  border-right: none;\n  border-left: 1px solid #d8d8d8;\n}\nbody .menu-right.fixed #content {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\nbody .menu-right.fixed .navbar.main,\nbody .menu-right.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.menu-hidden #menu {\n  display: none;\n}\n.menu-hidden #content {\n  margin: 0 !important;\n}\n.menu-hidden .navbar.main .btn-navbar {\n  left: 0;\n  border-left: none;\n}\n.menu-hidden .navbar.main .topnav.tn1 {\n  left: 37px;\n}\n.menu-hidden.login .navbar.main .appbrand,\n.menu-hidden.documentation .navbar.main .appbrand {\n  display: inline-block;\n  border: none;\n}\n.menu-hidden.login .navbar.main .appbrand span,\n.menu-hidden.documentation .navbar.main .appbrand span {\n  border: none;\n}\n.navbar.main {\n  height: 49px;\n  background-color: #4a8bc2;\n  border-bottom: 1px solid #346d9d;\n  margin: 0;\n}\n.navbar.main .btn-navbar {\n  height: 49px;\n  line-height: 49px;\n  padding: 0 10px;\n  margin: 0;\n  float: left;\n  display: block;\n  border: none;\n  background: #4a8bc2;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .btn-navbar .icon-bar {\n  background: #ffffff;\n  box-shadow: 0 1px 0 #346d9d;\n}\n.navbar.main .btn-navbar:hover {\n  background: #4286bf;\n}\n.navbar.main .btn-navbar.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.navbar.main .topnav {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left {\n  border-left: none;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left > li:first-child {\n  border-left: none;\n}\n.navbar.main .topnav > li {\n  position: relative;\n  float: left;\n  height: 49px;\n  line-height: 49px;\n  display: block;\n  padding: 0 0 0 10px;\n}\n.navbar.main .topnav > li a {\n  cursor: pointer;\n}\n.navbar.main .topnav > li > a {\n  display: block;\n  color: #ffffff;\n  text-decoration: none;\n  padding: 1px 11px 0 9px;\n  height: 49px;\n  line-height: 50px;\n  /* &:hover { background: darken(@navbarBg, 2%); } */\n\n}\n.navbar.main .topnav > li > a > img {\n  margin: 0 0 3px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 11px 0 9px;\n}\n.navbar.main .topnav > li > a.glyphicons i {\n  padding: 0 10px 0 0;\n  display: block;\n  float: left;\n  width: 17px;\n  line-height: 49px;\n  height: 49px;\n}\n.navbar.main .topnav > li > a.glyphicons i:before {\n  color: #ffffff;\n  font-size: 17px;\n  position: relative;\n  width: 17px;\n  text-align: center;\n  line-height: 51px;\n  height: 49px;\n  left: auto;\n  right: auto;\n}\n.navbar.main .topnav > li > a.glyphicons.single-icon i {\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout i {\n  float: right;\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout span {\n  padding: 0 8px 0 0;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 8px;\n  height: 33px;\n  line-height: 33px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 8px;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a {\n  background: #346d9d;\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.active > a .caret,\n.navbar.main .topnav > li:hover > a .caret,\n.navbar.main .topnav > li.open > a .caret {\n  top: 2px;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i,\n.navbar.main .topnav > li:hover > a.glyphicons i,\n.navbar.main .topnav > li.open > a.glyphicons i {\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i:before,\n.navbar.main .topnav > li:hover > a.glyphicons i:before,\n.navbar.main .topnav > li.open > a.glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.glyphs ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: #346d9d;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  float: left;\n  display: block;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 1px 0 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  height: 22px;\n  line-height: 22px;\n  padding: 5px 10px;\n  display: block;\n  text-decoration: none;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i {\n  height: 22px;\n  line-height: 22px;\n  display: block;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n  position: relative;\n  left: auto;\n  top: auto;\n  display: block;\n  text-align: center;\n  font-size: 17px;\n  color: #538fc1;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover {\n  padding: 0;\n  background: #579ad2;\n  border-right: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons i:before,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons i:before {\n  color: #ffffff;\n}\n.navbar.main .topnav > li.glyphs ul li.active:first-child,\n.navbar.main .topnav > li.glyphs ul li:hover:first-child {\n  -webkit-border-radius: 5px 0 0 5px;\n  -moz-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n  border-right: none;\n  border-left: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child .glyphicons {\n  padding: 5px 11px 5px 9px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.search form {\n  margin: 0;\n  padding: 0;\n  background: #afcae2;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.search form input {\n  background: none;\n  border: none;\n  color: #628db3;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n  line-height: 32px;\n  width: 100px;\n  padding: 0 0 0 10px;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form button {\n  background: none;\n  border: none;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n}\n.navbar.main .topnav > li.search form button i:before {\n  display: block;\n  position: relative;\n  left: auto;\n  right: auto;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 5px;\n  font-size: 17px;\n  color: #346d9d;\n}\n.navbar.main .topnav > li.search form input,\n.navbar.main .topnav > li.search form button {\n  vertical-align: top;\n}\n.navbar.main .topnav > li.search,\n.navbar.main .topnav > li.glyphs {\n  margin-left: 10px;\n}\n.navbar.main .topnav > li.search + .glyphs {\n  margin-left: 0;\n}\n.navbar.main .topnav > li.glyphs + .search,\n.navbar.main .topnav > li.glyphs + .tooltip + .search {\n  margin-left: 0;\n}\n.navbar.main .topnav > li:last-child {\n  border-right: 1px solid #346d9d;\n  padding: 0 9px 0 10px;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  padding: 8px 9px;\n  box-shadow: -1px 0 0 0 #619aca;\n}\n.navbar.main .topnav > li:first-child {\n  border-left: 1px solid #619aca;\n}\n.navbar.main .topnav > li:last-child.open .dropdown-menu {\n  right: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu {\n  background: #363432;\n  border: none;\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  right: 0;\n  width: 180px;\n}\n.navbar.main .topnav > li.open .dropdown-menu.pull-left {\n  left: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li {\n  border-bottom: 1px solid #4a4947;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:last-child {\n  border-bottom: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > span {\n  border-top: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li > span {\n  height: 29px;\n  line-height: 29px;\n  padding: 0 10px;\n  display: block;\n  background: #363432;\n  color: #c8c8c8;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons i:before {\n  left: auto;\n  right: 10px;\n  top: 5px;\n  font-size: 17px;\n  color: #c4c4c4;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover {\n  background: #1c1a19;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active a {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li .btn {\n  margin: 3px 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > span {\n  background: rgba(0, 0, 0, 0.1);\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile a:hover {\n  color: #fff;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #272729;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #595959;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.account > .dropdown-menu {\n  width: 220px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.2);\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 11px solid transparent;\n  position: absolute;\n  display: block;\n  left: 7px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  top: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n  position: absolute;\n  display: block;\n  left: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  left: auto;\n  right: 7px;\n  margin: 0;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  right: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  margin-top: 13px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu.pull-right,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu.pull-right {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu {\n  background: #fff;\n  border: 1px solid #c8c8c8;\n  margin: 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span {\n  background: #fff;\n  color: #939494;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span i:before {\n  color: #cccccc;\n  font-size: 15px !important;\n  top: 7px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li.active > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li.active > a {\n  /*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\n  font-weight: 600;\n  color: #000;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile {\n  background: #fff;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile a:hover {\n  color: #7c7c7c;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #fdfdfd;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #ccc;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) {\n  padding: 10px 10px 10px 50px;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) i:before {\n  right: auto;\n  left: 10px;\n  top: 10px !important;\n  font-size: 30px !important;\n  color: #f2f2f2;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a {\n  background: rgba(74, 139, 194, 0.08);\n  color: #939494;\n  text-shadow: 0 1px 0 #fff;\n  border: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a i:before {\n  color: #4a8bc2;\n  left: 10px;\n  top: 10px;\n}\n.navbar.main .topnav > li.open.dd-flags .dropdown-menu img {\n  margin: -3px 4px 0 0;\n}\n.navbar.main .topnav .dropdown > a .caret {\n  border-top-color: #ffffff;\n  top: 16px;\n  position: relative;\n}\n.navbar.main .topnav .dropdown-menu {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav:last-of-type {\n  border-right: none;\n}\n.navbar.main .topnav:last-of-type li:last-child {\n  border: none;\n}\n.submenu-show {\n  display: block;\n  margin-top: -35px !important;\n  position: absolute;\n}\n.submenu-show.pull-left {\n  left: auto !important;\n  right: 100% !important;\n}\n.submenu-show.pull-right {\n  right: auto !important;\n  left: 100% !important;\n}\n.submenu-hide {\n  display: none !important;\n  position: relative;\n  top: auto;\n  float: left;\n}\n.filter-bar {\n  background: #e5e5e5;\n  margin: 0 auto 15px;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  line-height: 30px;\n  height: 40px;\n  padding: 0 10px;\n}\n.filter-bar.border-top-none {\n  border-top: none;\n}\n.filter-bar div {\n  padding: 5px 0;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar div div {\n  padding: 0;\n  margin: 0;\n}\n.filter-bar div div:not(.helper) {\n  margin: 0 15px 0 0;\n}\n.filter-bar div div input {\n  margin: 3px 0 0;\n}\n.filter-bar div div.input-append {\n  margin: 0;\n}\n.filter-bar div div.input-append .add-on {\n  padding: 1px 3px;\n  margin: 3px 0 0 -1px;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.filter-bar div div.input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\n.filter-bar div div.input-append button.add-on {\n  width: 24px;\n  height: 24px;\n}\n.filter-bar div div:last-child {\n  margin: 0;\n}\n.filter-bar div:not(.helper) {\n  float: left;\n}\n.filter-bar div.glyphicons {\n  padding: 0 0 0 35px;\n}\n.filter-bar div.glyphicons i:before {\n  top: 12px;\n  left: 9px;\n  font-size: 17px;\n  color: rgba(255, 255, 255, 0.8);\n}\n.filter-bar div.clearfix {\n  padding: 0;\n  clear: both;\n  float: none;\n  display: block;\n  height: 0;\n  margin: 0;\n}\n.filter-bar div.lbl {\n  padding: 0 10px 0 35px;\n  background: #4a8bc2;\n  height: 40px;\n  line-height: 40px;\n  margin-right: 10px;\n  color: #fff;\n}\n.filter-bar form {\n  margin: 0;\n}\n.filter-bar form input,\n.filter-bar form select {\n  margin: 0 5px 3px 0;\n  padding: 1px 5px;\n  color: #a7a7a7;\n}\n.filter-bar form select {\n  padding: 1px;\n  height: 23px;\n}\n.filter-bar form label {\n  float: left;\n  margin: 0 5px;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar.border-none {\n  border: none;\n}\n.filter-bar.dark {\n  background: #64625f;\n  color: #fff;\n}\n.filter-bar.dark div div.input-append .add-on {\n  background: #42403e;\n  color: #fff;\n  border-color: #42403e;\n}\n.filter-bar.dark div div.input-append .add-on i:before {\n  color: #767473;\n  text-shadow: none;\n}\n.filter-bar.dark form input:focus {\n  border-color: #42403e;\n}\n.filter-bar.dark form input,\n.filter-bar.dark form select {\n  border-color: #42403e;\n}\n.menubar {\n  height: 30px;\n  position: relative;\n  overflow: hidden;\n  border: 1px solid #dbdbdb;\n  background: #fafafa;\n  margin: 0;\n  font-size: 9pt;\n}\n.menubar ul {\n  margin: 0;\n  padding: 0 5px;\n  list-style: none;\n  height: 30px;\n}\n.menubar ul li {\n  float: left;\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  padding: 0 5px;\n}\n.menubar ul li.divider {\n  border-left: 1px solid #ebebeb;\n  width: 0px;\n  padding: 0;\n  margin: 0 8px;\n}\n.menubar ul li a {\n  color: #7c7c7c;\n  font-weight: 700;\n  font-size: 9pt;\n}\n.menubar.links {\n  border: none;\n  background: none;\n  height: 25px;\n  padding: 0 0 5px;\n}\n.menubar.links ul {\n  padding: 0;\n  height: 25px;\n}\n.menubar.links ul li {\n  height: 25px;\n  line-height: 25px;\n}\n.menubar.links ul li:first-child {\n  padding-left: 0;\n}\n.menubar.links.primary ul li a {\n  color: #4a8bc2;\n}\n.widget {\n  background: #ffffff;\n  margin: 0 auto 15px;\n  position: relative;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget .tab-content {\n  padding: 0;\n}\n.widget .widget-head {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  text-shadow: 0 1px 0 0 1px 0 #ffffff;\n  height: 35px;\n  line-height: 35px;\n  position: relative;\n  padding: 0 15px 0 0;\n  overflow: hidden;\n}\n.widget .widget-head.progress {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons,\n.widget .widget-head ul .glyphicons {\n  height: 30px;\n  width: 30px;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons i:before,\n.widget .widget-head ul .glyphicons i:before {\n  width: 30px;\n  height: 30px;\n  line-height: 23px;\n  text-align: center;\n  font-size: 16px;\n  color: rgba(255, 255, 255, 0.5);\n}\n.widget .widget-head .heading {\n  margin: 0;\n  color: #7c7c7c;\n  font-size: 14px;\n  height: 35px;\n  line-height: 35px;\n  padding: 0 15px;\n  float: left;\n}\n.widget .widget-head .heading.glyphicons {\n  width: auto;\n  display: block;\n  padding: 0 0 0 35px;\n}\n.widget .widget-head .heading.glyphicons i:before {\n  padding: 0;\n  margin: 0;\n  left: 0;\n  top: 0;\n  height: 35px;\n  line-height: 35px;\n  text-align: center;\n  width: 35px;\n  color: #7c7c7c;\n  font-size: 16px;\n  font-weight: normal;\n  text-shadow: none;\n}\n.widget .widget-head a {\n  text-shadow: none;\n}\n.widget .widget-head .dropdown-menu li > a:hover,\n.widget .widget-head .dropdown-menu li > a:focus,\n.widget .widget-head .dropdown-submenu:hover > a {\n  background-color: #4a8bc2;\n  background-image: -moz-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4a8bc2), to(#d24343));\n  background-image: -webkit-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -o-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: linear-gradient(to bottom, #4a8bc2, #d24343);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);\n}\n.widget .details {\n  font-size: 8pt;\n  color: #7c7c7c;\n}\n.widget .widget-body {\n  padding: 15px;\n}\n.widget .widget-body form {\n  margin: 0;\n}\n.widget .widget-body > pre:last-child,\n.widget .widget-body > p:last-child {\n  margin: 0;\n}\n.widget .widget-body.list {\n  color: #7c7c7c;\n  padding: 0;\n}\n.widget .widget-body.list .count {\n  font-size: 15pt;\n  font-weight: 400;\n}\n.widget .widget-body.list ul {\n  margin: 0;\n  list-style: none;\n}\n.widget .widget-body.list ul li {\n  padding: 0 10px;\n  height: 39px;\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  line-height: 39px;\n  text-align: left;\n  text-shadow: 0 1px 0 #ffffff;\n  clear: both;\n}\n.widget .widget-body.list ul li .badge {\n  position: absolute;\n  right: 8px;\n  top: 10px;\n}\n.widget .widget-body.list ul li:first-child {\n  border-top: none;\n}\n.widget .widget-body.list ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list ul li .count {\n  float: right;\n  color: #000000;\n}\n.widget .widget-body.list ul li .sparkline {\n  position: relative;\n  top: 5px;\n  margin-left: 5px;\n}\n.widget .widget-body.list ul li a {\n  color: #000000;\n  font-weight: bold;\n}\n.widget .widget-body.list.products li {\n  height: 60px;\n  line-height: 60px;\n}\n.widget .widget-body.list.products .img {\n  float: left;\n  display: inline-block;\n  width: 48px;\n  height: 44px;\n  line-height: 44px;\n  color: #fff;\n  text-align: center;\n  background: #272729;\n  margin: 8px 8px 0 0;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  text-shadow: none;\n  cursor: pointer;\n  font-size: 10pt;\n  font-weight: 600;\n}\n.widget .widget-body.list.products .title {\n  line-height: normal;\n  display: inline-block;\n  padding: 13px 0 0;\n  text-transform: uppercase;\n}\n.widget .widget-body.list.products .title strong {\n  font-family: \"Open Sans\", sans-serif;\n  text-transform: none;\n}\n.widget .widget-body.list.fluid ul li {\n  height: auto;\n  line-height: normal;\n  padding: 10px;\n}\n.widget .widget-body.list.list-2 ul li {\n  border-bottom: 1px solid #d8d9da;\n  border-top: none;\n  background: #f8f8f8;\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #dddddd;\n  background: #fff;\n}\n.widget .widget-body.list.list-2 ul li.active i:before {\n  font-weight: normal;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: none;\n}\n.widget .widget-body.list.list-2 ul li.active a {\n  color: #4a8bc2;\n}\n.widget .widget-body.list.list-2 ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list.list-2 ul li a {\n  display: block;\n  color: #222;\n  padding: 0 0 0 30px;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  color: #555;\n  width: 20px;\n  height: 17px;\n  font-size: 14px;\n  border: 1px solid #ccc;\n  background: #dddddd;\n  top: 9px;\n  left: 0;\n  text-align: center;\n  vertical-align: middle;\n  padding-top: 3px;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu {\n  height: auto;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul {\n  padding: 0 0 10px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li {\n  height: auto;\n  line-height: normal;\n  background: none;\n  border: none;\n  line-height: 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li a {\n  color: #333;\n  padding: 0 0 0 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li.active a {\n  font-weight: bold;\n}\n.widget .widget-footer {\n  background: #fafafa;\n  height: 25px;\n  line-height: 25px;\n  border-top: 1px solid #ebebeb;\n}\n.widget .widget-footer .glyphicons {\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n  padding: 0;\n  float: right;\n}\n.widget .widget-footer .glyphicons i:before {\n  font-size: 16px;\n  color: #c3c3c3;\n  text-align: center;\n  width: 20px;\n  height: 25px;\n  line-height: 25px;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget .widget-footer .glyphicons:hover i:before {\n  color: rgba(0, 0, 0, 0.5);\n}\n.widget.margin-bottom-none {\n  margin-bottom: 0;\n}\n.widget.widget-gray {\n  background: #f5f5f5;\n}\n.widget.widget-gray .widget-head {\n  background: #e9e9e9;\n  border-color: #d1d2d3;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.widget.widget-gray .widget-head .heading {\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget.widget-gray .widget-head .heading.glyphicons i:before {\n  background: none;\n  color: #555;\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2:before,\n.widget.widget-2:after {\n  display: none;\n}\n.widget.widget-2 .widget-head {\n  background: #e2e2e4;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  height: 36px;\n  line-height: 36px;\n  border-color: #d1d2d3;\n}\n.widget.widget-2 .widget-head .heading {\n  line-height: 36px;\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n  font-size: 12pt;\n}\n.widget.widget-2 .widget-head .heading i:before {\n  color: #555555;\n  background: none;\n  border: none;\n  left: 3px;\n  top: 2px;\n}\n.widget.widget-2 .widget-body {\n  border: 1px solid #d1d2d3;\n  border-top: 0;\n  background: #f5f5f5;\n}\n.widget.widget-2.primary .widget-head {\n  background: #4a8bc2;\n  border-color: #4a8bc2;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2.primary .widget-head .heading {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-2.primary .widget-head .heading i:before {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-3:before,\n.widget.widget-3:after {\n  display: none;\n}\n.widget.widget-3 .widget-head {\n  height: 36px;\n  line-height: 36px;\n}\n.widget.widget-3 .widget-head .heading {\n  display: block;\n  text-align: center;\n  float: none;\n  line-height: 36px;\n  height: 36px;\n  text-transform: uppercase;\n  font-size: 12pt;\n}\n.widget.widget-3 .widget-head .heading i:before {\n  background: none;\n  border: none;\n  left: 3px;\n  top: 5px;\n  font-size: 20px;\n  color: #45484d;\n}\n.widget.widget-3 .widget-head .heading .glyphicons {\n  vertical-align: middle;\n  width: 35px;\n  height: 36px;\n  padding: 0;\n}\n.widget.widget-3 .widget-body {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-body.large {\n  font-size: 26pt;\n  font-weight: bold;\n  text-align: center;\n  padding: 25px 0;\n  vertical-align: middle;\n  line-height: normal;\n}\n.widget.widget-3 .widget-body.large.cancellations span {\n  line-height: 20px;\n  text-align: left;\n  font-size: 17pt;\n  display: inline-block;\n  text-shadow: none;\n}\n.widget.widget-3 .widget-body.large.cancellations span span {\n  display: block;\n}\n.widget.widget-3 .widget-body.large.cancellations span span:first-child {\n  color: #4a8bc2;\n  text-transform: uppercase;\n  font-size: 13pt;\n}\n.widget.widget-3 .widget-body.large.dashboard {\n  padding: 15px 0;\n}\n.widget.widget-3 .widget-footer {\n  background: #fafafa;\n  border-top: none;\n}\n.widget.widget-3 .widget-footer a {\n  float: none;\n  color: #dddddd;\n  width: auto;\n  padding: 0 10px 0 30px;\n  border-right: 1px solid #dbdbdb;\n  text-decoration: none;\n}\n.widget.widget-3 .widget-footer a i:before {\n  color: #dddddd;\n  left: 5px;\n}\n.widget.widget-3 .widget-footer a:hover {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer a:hover i:before {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer.align-center {\n  text-align: center;\n}\n.widget.widget-3 .widget-footer.align-center a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right {\n  text-align: right;\n}\n.widget.widget-3 .widget-footer.align-right a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right a:last-child {\n  border-right: none;\n}\n.widget.widget-4 {\n  border: none;\n  background: none;\n}\n.widget.widget-4 .widget-head {\n  background: none;\n  padding: 10px;\n  border: none;\n}\n.widget.widget-4 .widget-head .heading {\n  color: #544f49;\n  text-shadow: none;\n  padding: 0;\n  margin: 0;\n}\n.widget.widget-4 .widget-body {\n  padding: 0 10px 10px;\n  border: none;\n}\n.widget.widget-4 .widget-body.list ul li {\n  padding: 0;\n}\n.widget.widget-heading-simple {\n  border: none;\n  background: none;\n}\n.widget.widget-heading-simple > .widget-head {\n  border: none;\n  background: none;\n  padding: 0 0 5px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading {\n  padding: 0;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons {\n  padding: 0 0 0 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons i:before {\n  text-align: left;\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-body {\n  border: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget.widget-body-simple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-simple > .widget-body {\n  background: none;\n  border: none;\n  padding: 0;\n}\n.widget.widget-body-white > .widget-body {\n  background: #ffffff;\n}\n.widget.widget-body-gray {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-gray > .widget-body {\n  background: #e5e5e5;\n}\n.widget.widget-body-primary {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-primary > .widget-body {\n  background: #4a8bc2;\n}\n.widget.widget-body-primary > .widget-body * {\n  color: #fff;\n  text-shadow: none;\n}\n.widget.widget-body-multiple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-multiple > .widget-body {\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  margin-bottom: 7.5px;\n}\n.widget.widget-body-multiple > .widget-body:last-of-type {\n  margin-bottom: 0;\n}\n.widget.widget-body-multiple.widget-body-gray > .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget-offers .price {\n  font-size: 14px;\n}\n.widget-offers .price strong {\n  color: #000;\n}\n.widget-offers .thumb {\n  padding: 0;\n}\n.widget-offers h5 {\n  border-bottom: 1px solid #cecece;\n  font-weight: 600;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 1px 0 0 #eeeeee;\n  padding: 0 0 5px;\n}\n.widget-activity > .widget-body {\n  padding: 0 15px;\n}\n.widget-activity ul.list {\n  list-style: none;\n  margin: 0 -15px;\n  padding: 0;\n}\n.widget-activity ul.list li {\n  height: 39px;\n  line-height: 39px;\n  position: relative;\n  overflow: hidden;\n  border-bottom: 1px solid #ebebeb;\n  padding: 0 15px;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.widget-activity ul.list li:hover,\n.widget-activity ul.list li.highlight {\n  background: #f2f2f2;\n  box-shadow: 0 1px 0 0 #ffffff inset;\n  -moz-box-shadow: 0 1px 0 0 #ffffff inset;\n  -webkit-box-shadow: 0 1px 0 0 #ffffff inset;\n  text-shadow: 0 1px 0 #ffffff;\n  cursor: pointer;\n}\n.widget-activity ul.list li:hover:after,\n.widget-activity ul.list li.highlight:after {\n  content: \"\\e212\";\n  display: block;\n  position: absolute;\n  right: 15px;\n  top: 0;\n  height: 39px;\n  line-height: 39px;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  color: #d5d5d5;\n}\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before {\n  color: #505050;\n}\n.widget-activity ul.list li > span {\n  display: block;\n  height: 39px;\n  line-height: 39px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-activity ul.list li > span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-activity ul.list li > span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon {\n  width: 30px;\n  height: 39px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon i {\n  height: 39px;\n  display: block;\n  position: relative;\n}\n.widget-activity ul.list li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #cbcbcb;\n  font-size: 18px;\n  line-height: 39px;\n}\n.widget-activity ul.list li.double {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span.ellipsis {\n  line-height: 15px;\n  padding: 7px 0 0;\n  font-weight: 600;\n  font-size: 11px;\n}\n.widget-activity ul.list li.double > span .meta {\n  display: block;\n  line-height: 15px;\n  font-weight: 400;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta i:before {\n  top: 1px;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta span {\n  font-style: italic;\n}\n.widget-activity ul.list li.double .activity-icon {\n  margin-left: 0;\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i {\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i:before {\n  line-height: 45px;\n}\n.widget-activity ul.list li.double:hover:after,\n.widget-activity ul.list li.double.highlight:after {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li:last-child {\n  border: none;\n}\n.widget-activity .view-all {\n  position: absolute;\n  top: 18px;\n  right: 15px;\n}\n.widget-messages ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.widget-messages ul li {\n  border: 1px solid #e5e5e5;\n  padding: 5px;\n  margin: 0 0 10px;\n  position: relative;\n}\n.widget-messages ul li .meta span {\n  color: #a3a3a3;\n  font-size: 12px;\n}\n.widget-messages ul li .glyphicons.single.bin {\n  position: relative;\n  text-decoration: none;\n  padding: 0;\n  width: 15px;\n  height: 20px;\n  top: 5px;\n}\n.widget-messages ul li .glyphicons.single.bin i {\n  display: block;\n  width: 15px;\n  height: 20px;\n  text-align: center;\n}\n.widget-messages ul li .glyphicons.single.bin i:before {\n  color: #cccccc;\n  position: relative;\n  line-height: 20px;\n  left: auto;\n  top: auto;\n}\n.widget-messages ul li:last-child {\n  margin: 0;\n}\n.widget-timeline .widget-body {\n  padding: 15px;\n  position: relative;\n}\n.widget-timeline .widget-body:before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline:not(.widget) {\n  position: relative;\n}\n.widget-timeline:not(.widget):before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline .view-all {\n  margin-left: 35px;\n}\n.widget-timeline ul.list-timeline {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\n.widget-timeline ul.list-timeline li {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  position: relative;\n  overflow: hidden;\n  background: #ffffff;\n  border: 1px solid #ebebeb;\n  margin: 0 0 10px;\n  padding: 0 10px;\n}\n.widget-timeline ul.list-timeline li:last-child {\n  margin: 0;\n}\n.widget-timeline ul.list-timeline li span {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-timeline ul.list-timeline li span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-timeline ul.list-timeline li span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon {\n  width: 30px;\n  height: 30px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon i {\n  height: 30px;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  position: relative;\n  background: #64625f;\n}\n.widget-timeline ul.list-timeline li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #fff;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget-chat {\n  padding-bottom: 60px !important;\n}\n.widget-chat .media {\n  position: relative;\n  min-height: 80px;\n}\n.widget-chat .media .media-object {\n  position: relative;\n}\n.widget-chat .media .thumb {\n  padding: 0;\n}\n.widget-chat .media small {\n  color: #cccccc;\n}\n.widget-chat .media small:before,\n.widget-chat .media small:after {\n  content: \"\";\n}\n.widget-chat .media small.author {\n  position: absolute;\n  left: 0;\n  width: 50px;\n  top: 60px;\n  text-align: center;\n  display: block;\n}\n.widget-chat .media small.date {\n  display: block;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 5px;\n  padding: 0 0 3px;\n  text-align: right;\n  width: 100%;\n}\n.widget-chat .media.right small.author {\n  left: auto;\n  right: 0;\n}\n.widget-chat .media.right small.date {\n  text-align: left;\n}\n.widget-chat .media .media-body {\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  padding: 0;\n}\n.widget-chat .media .media-body blockquote {\n  padding: 0;\n  width: 100%;\n}\n.widget-chat .media .media-body blockquote p:last-child {\n  margin: 0;\n}\n.widget-chat .media:last-of-type {\n  padding-bottom: 10px;\n}\n.widget-chat .chat-controls {\n  position: absolute;\n  height: 30px;\n  padding: 15px 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  border: 1px solid #dbdbdb;\n  border-top: none;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  background: #fff;\n}\n.widget-chat .widget-body {\n  padding-bottom: 0;\n}\n.widget-chat.widget-heading-simple > .widget-body {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.widget-stats {\n  background: #ffffff;\n  padding: 15px 0;\n  margin: 0;\n  height: 80px;\n  position: relative;\n  text-align: center;\n  display: block;\n  border: 1px solid #dbdbdb;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget-stats .count {\n  position: absolute;\n  top: 0;\n  left: 0;\n  font-size: 13px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget-stats .label {\n  font-weight: 600;\n  padding: 4px;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2) inset;\n}\n.widget-stats span {\n  display: inline-block;\n}\n.widget-stats .txt {\n  padding: 0;\n  color: #cecece;\n}\n.widget-stats .glyphicons {\n  padding: 0;\n  display: block;\n}\n.widget-stats .glyphicons i {\n  display: block;\n}\n.widget-stats .glyphicons i:before {\n  color: #cecece;\n  font-size: 30px;\n  top: 0;\n  left: 0;\n  position: relative;\n}\n.widget-stats,\n.widget-stats:hover,\n.widget-stats:focus {\n  text-decoration: none;\n}\n.widget-stats:hover {\n  background: #fdfdfd;\n}\n.widget-stats.small {\n  padding: 5px 0;\n}\n.widget-stats.small .glyphicons {\n  padding: 12px 0 0;\n}\n.widget-stats.small .glyphicons i:before {\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 {\n  padding: 8px 0;\n  height: 94px;\n}\n.widget-stats.widget-stats-1 .glyphicons {\n  display: block;\n  height: 35px;\n  line-height: 35px;\n  padding-bottom: 5px;\n}\n.widget-stats.widget-stats-1 .glyphicons .txt {\n  display: inline-block;\n  padding: 0 5px;\n  line-height: 35px;\n}\n.widget-stats.widget-stats-1 .glyphicons i {\n  display: inline-block;\n}\n.widget-stats.widget-stats-1 .glyphicons i:before {\n  top: 5px;\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  display: inline-block;\n  font-weight: 700;\n  padding: 0;\n  line-height: 40px;\n}\n.widget-stats.widget-stats-2 .txt {\n  font-size: 14px;\n}\n.widget-stats.widget-stats-2 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  font-weight: 700;\n  padding: 0 0 3px;\n  display: block;\n  line-height: 55px;\n}\n.widget-stats.widget-stats-gray.widget-stats-1 .txt,\n.widget-stats.widget-stats-gray.widget-stats-2 .txt {\n  color: #000;\n}\n.widget-stats.widget-stats-easy-pie .easy-pie {\n  display: block;\n  width: 50px;\n  margin: -5px auto 0;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .easy-pie {\n  margin: 0 auto;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .txt {\n  padding: 7px 0 0;\n}\n.widget-stats.widget-stats-3 .sparkline {\n  display: inline-block;\n}\n.widget-stats.widget-stats-3 .txt {\n  text-align: left;\n  vertical-align: middle;\n  padding: 13px 0 0 10px;\n}\n.widget-stats.widget-stats-3 .count {\n  padding: 0 0 5px;\n  display: block;\n}\n.widget-stats.widget-stats-gray {\n  background: #e5e5e5;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.box-generic {\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n  position: relative;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  margin: 0 0 15px;\n}\n.ribbon-wrapper {\n  width: 85px;\n  height: 88px;\n  overflow: hidden;\n  position: absolute;\n  top: -3px;\n  right: -3px;\n}\n.ribbon-wrapper .ribbon {\n  display: block;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  font-weight: 600;\n  color: #fff;\n  text-align: center;\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  position: relative;\n  padding: 7px 0;\n  left: -5px;\n  top: 15px;\n  width: 120px;\n  line-height: 20px;\n  background-color: #797979;\n  -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n}\n.ribbon-wrapper .ribbon:before,\n.ribbon-wrapper .ribbon:after {\n  content: \"\";\n  border-top: 2px solid #797979;\n  border-left: 2px solid transparent;\n  border-right: 2px solid transparent;\n  position: absolute;\n  bottom: -2px;\n}\n.ribbon-wrapper .ribbon:before {\n  left: 0;\n  bottom: -1px;\n}\n.ribbon-wrapper .ribbon:after {\n  right: 0;\n}\n.ribbon-wrapper .ribbon.primary {\n  background-color: #4a8bc2;\n}\n.ribbon-wrapper .ribbon.success {\n  background-color: #609450;\n}\n.ribbon-wrapper .ribbon.warning {\n  background-color: #ab7a4b;\n}\n.ribbon-wrapper .ribbon.danger {\n  background-color: #bd362f;\n}\n.ribbon-wrapper .ribbon.default {\n  background-color: #e5e5e5;\n  color: #595959;\n}\n.ribbon-wrapper .ribbon.default:before,\n.ribbon-wrapper .ribbon.default:after {\n  border-top: 2px solid #ccc;\n}\n.ribbon-wrapper.small {\n  width: 65px;\n  height: 68px;\n}\n.ribbon-wrapper.small .ribbon {\n  width: 90px;\n  padding: 0;\n  font-size: 13px;\n}\n.ribbon-wrapper.small .ribbon:before {\n  bottom: -2px;\n}\n.breadcrumb {\n  height: 38px;\n  line-height: 39px;\n  padding: 0 15px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  background: none;\n  border-bottom: 1px solid #dbdbdb;\n  box-shadow: 0 1px 0 0 #fff;\n  -moz-box-shadow: 0 1px 0 0 #fff;\n  -webkit-box-shadow: 0 1px 0 0 #fff;\n  color: #ababab;\n  font-size: 12px;\n  position: relative;\n  overflow: hidden;\n}\n.breadcrumb li {\n  text-shadow: 0 1px 0 #ffffff;\n  line-height: 38px;\n  height: 38px;\n}\n.breadcrumb li a {\n  color: #ababab;\n  font-weight: 600;\n}\n.breadcrumb li a.glyphicons {\n  color: #ababab;\n  padding: 0 0 0 25px;\n}\n.breadcrumb li a.glyphicons i:before {\n  color: #ababab;\n  font-size: 14px;\n  top: 12px;\n  left: 3px;\n}\n.breadcrumb li.divider {\n  margin: 0 5px 0 7px;\n  width: 0;\n  border-left: 1px solid #dbdbdb;\n  border-right: 1px solid #fff;\n  vertical-align: top;\n}\n.well {\n  z-index: 1;\n  position: relative;\n  padding: 15px;\n  margin: 0 0 15px;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #fafafa;\n  border-color: #dbdbdb;\n}\n.well.small {\n  padding: 10px;\n}\n.well .popover {\n  z-index: 2;\n  font-size: 13px;\n}\n.well.dark {\n  background: rgba(0, 0, 0, 0.2);\n}\n.well.white {\n  background: #fff;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle {\n  position: relative;\n  height: 35px;\n  width: 30px;\n  display: block;\n  cursor: pointer;\n  float: right;\n  margin-right: -10px;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle:before {\n  font-family: \"Glyphicons\";\n  font-size: 17px;\n  display: block;\n  width: 100%;\n  height: 35px;\n  line-height: 34px;\n  text-align: center;\n  color: #cccccc;\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle {\n  margin-right: 0;\n  height: 25px;\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle:before {\n  height: 25px;\n  line-height: 25px;\n}\n[data-toggle=\"collapse-widget\"] a ~ .collapse-toggle {\n  margin-right: 0;\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"false\"] .collapse-toggle:before {\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .collapse-toggle:before {\n  content: \"\\e191\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .widget-head {\n  border-bottom: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list) {\n  -webkit-transition: padding 0.1s ease;\n  -moz-transition: padding 0.1s ease;\n  -o-transition: padding 0.1s ease;\n  transition: padding 0.1s ease;\n  padding: 0px;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list).in {\n  padding: 15px;\n}\n.glyphicons.standard {\n  width: 24px;\n  height: 24px;\n  padding: 0;\n}\n.glyphicons.standard i {\n  display: block;\n  height: 24px;\n}\n.glyphicons.standard i:before {\n  color: #64625f;\n  position: relative;\n  top: auto;\n  left: auto;\n}\n.glyphicons.standard:not(.disabled):hover i:before {\n  color: #797979;\n}\n.glyphicons.standard.btn {\n  padding: 4px;\n}\n.glyphicons.standard.btn.btn-small {\n  padding: 2px 5px;\n  width: auto;\n  height: auto;\n}\n.glyphicons.standard.btn.btn-small i:before {\n  top: auto;\n  line-height: 22px;\n}\n.glyphicons.primary i:before {\n  color: #4a8bc2;\n}\n.glyphicons.single {\n  color: #4a8bc2;\n  padding: 0 0 0 20px;\n}\n.glyphicons.single i:before {\n  font-size: 13px;\n  top: 4px;\n  color: #4a8bc2;\n}\n.glyphicons.single + .single {\n  margin-left: 8px;\n}\n.glyphicons.single.regular {\n  color: #7c7c7c;\n}\n.glyphicons.single.regular i:before {\n  color: #7c7c7c;\n}\n.glyphicons.text-error {\n  color: #4a8bc2;\n}\n.glyphicons.text-error i:before {\n  color: #4a8bc2;\n}\n.glyphicons.text-info {\n  color: #5d92b3;\n}\n.glyphicons.text-info i:before {\n  color: #5d92b3;\n}\n.glyphicons.text-success {\n  color: #719d46;\n}\n.glyphicons.text-success i:before {\n  color: #719d46;\n}\n.glyphicons.btn-action {\n  width: 25px;\n  height: 25px;\n  padding: 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border-width: 1px;\n  border-style: solid;\n  vertical-align: middle;\n}\n.glyphicons.btn-action i:before {\n  font-size: 14px;\n  top: 5px;\n  left: 5px;\n  text-shadow: 0 1px 0 #fff;\n  color: #fff !important;\n}\n.glyphicons.btn-action.btn-default i:before {\n  color: #7c7c7c !important;\n}\n.glyphicons.btn-action.single {\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  border: none;\n  background: none;\n  margin-right: 10px;\n}\n.glyphicons.btn-icon {\n  text-align: left;\n  padding: 5px 7px 5px 40px;\n}\n.glyphicons.btn-icon i {\n  float: left;\n}\n.glyphicons.btn-icon i:before {\n  font-size: 15px;\n  top: 0;\n  left: 0;\n  width: 33px;\n  height: 23px;\n  -webkit-border-radius: 3px 0px 0px 3px;\n  -moz-border-radius: 3px 0px 0px 3px;\n  border-radius: 3px 0px 0px 3px;\n  vertical-align: middle;\n  padding: 7px 0 0;\n  text-align: center;\n}\n.glyphicons.btn-icon.right {\n  text-align: left;\n  padding: 5px 0 5px 7px;\n}\n.glyphicons.btn-icon.right i:before {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n  right: 0;\n  left: auto;\n  text-align: center;\n}\n.glyphicons.btn-large {\n  padding: 10px 10px 10px 40px;\n  font-weight: 600;\n}\n.glyphicons.btn-large i:before {\n  top: 12px;\n  left: 12px;\n  font-size: 17px;\n}\n.glyphicons.btn-large.btn-icon i:before {\n  top: 0;\n  left: 0;\n  height: 28px;\n  padding: 12px 0 0;\n}\n.glyphicons.btn-small {\n  padding: 2px 10px 2px 35px;\n}\n.glyphicons.btn-small i:before {\n  padding: 5px 0 0;\n  width: 28px;\n  height: 19px;\n  font-size: 14px;\n}\n.glyphicons.btn-mini {\n  padding: 1px 6px 1px 33px;\n}\n.glyphicons.btn-mini i:before {\n  padding: 5px 0 0;\n  width: 26px;\n  height: 17px;\n  font-size: 13px;\n}\n.glyphicons.orange i:before {\n  color: #EDB459;\n}\n.glyphicons.btn-default i:before {\n  color: #9e9e9e;\n  text-shadow: none;\n}\nh4.glyphicons {\n  padding: 0 0 0 35px;\n  display: block;\n}\nh4.glyphicons i:before {\n  font-size: 22px;\n  font-weight: normal;\n  color: #575655;\n}\nh3.glyphicons,\nh2.glyphicons {\n  padding: 0 0 0 45px;\n  display: block;\n}\nh3.glyphicons i:before,\nh2.glyphicons i:before {\n  font-size: 27px;\n  font-weight: normal;\n  left: 2px;\n  top: 3px;\n  color: #575655;\n}\nh3.glyphicons.cogwheels i:before,\nh2.glyphicons.cogwheels i:before {\n  left: 5px;\n}\n.finances_summary .well {\n  font-size: 16px;\n  text-align: center;\n}\n.finances_summary .well strong {\n  display: block;\n  font-size: 22pt;\n  color: #45494c;\n  line-height: normal;\n}\n.finances_summary .glyphicons.standard i:before {\n  color: #cccccc;\n}\ndiv.glyphicons {\n  padding: 0 0 0 35px;\n}\ndiv.glyphicons i:before {\n  color: #cccccc;\n}\ndiv.glyphicons.glyphicon-large {\n  padding: 0 0 0 75px;\n}\ndiv.glyphicons.glyphicon-large i:before {\n  font-size: 50px;\n  left: 0;\n}\ndiv.glyphicons.glyphicon-large.group-column {\n  padding: 0 0 0 85px;\n}\ndiv.glyphicons.glyphicon-large.group-column i:before {\n  font-size: 45px;\n  left: 12px;\n}\ndiv.glyphicons.glyphicon-top {\n  padding: 0;\n  text-align: center;\n}\ndiv.glyphicons.glyphicon-top i {\n  display: block;\n  position: relative;\n}\ndiv.glyphicons.glyphicon-top i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i {\n  padding: 0 0 10px;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i:before {\n  font-size: 70px;\n}\ndiv.glyphicons.glyphicon-primary i:before {\n  color: #4a8bc2;\n}\n.widget-body-primary div.glyphicons i:before {\n  color: #fff;\n}\n.social-large {\n  height: 97px;\n}\n.social-large a {\n  display: block;\n  height: 77px;\n  float: left;\n  padding: 10px 19px;\n  color: #d5d5d5;\n  background: #ffffff;\n  font-weight: bold;\n  text-align: center;\n  border-right: 1px solid #e5e5e5;\n  text-decoration: none;\n}\n.social-large a i {\n  display: block;\n  position: relative;\n  padding: 0 0 8px;\n}\n.social-large a i:before {\n  display: block;\n  text-align: center;\n  top: auto;\n  left: auto;\n  position: relative;\n  font-size: 50px;\n  color: #d5d5d5;\n}\n.social-large a.active,\n.social-large a:hover {\n  color: #fff;\n  background: #4a8bc2;\n}\n.social-large a.active i:before,\n.social-large a:hover i:before {\n  color: #fff;\n}\n.social-large a:last-child {\n  border: none;\n}\n.social-large.social-large-2 a {\n  display: inline-block;\n  font-weight: 400;\n  float: none;\n  border: none;\n  background: none;\n  color: #444444;\n}\n.social-large.social-large-2 a i:before {\n  color: #444444;\n}\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover {\n  color: #4a8bc2;\n}\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before {\n  color: #4a8bc2;\n}\n.widget-pinterest .widget-body {\n  padding: 0;\n}\n.widget-pinterest .widget-body .description {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.widget-pinterest .widget-body .thumb {\n  padding: 0;\n  border: none;\n}\n.widget-pinterest .widget-body .thumb img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter {\n  position: relative;\n}\n.jstwitter .item {\n  overflow: hidden;\n}\n.jstwitter .tweet-wrapper {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.jstwitter .widget-body {\n  padding: 0;\n}\n.jstwitter .item a {\n  text-decoration: none;\n}\n.jstwitter .item img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter .item .thumb {\n  padding: 0;\n  border: none;\n}\n.jstwitter .item a:hover {\n  text-decoration: underline;\n}\n.jstwitter .item .text {\n  display: block;\n}\n.jstwitter .item .time,\n.jstwitter .item .user {\n  font-style: italic;\n  color: #999;\n}\n.jstwitter .item.active {\n  display: block;\n}\n.rating {\n  unicode-bidi: bidi-override;\n  direction: rtl;\n}\n.rating.text-large {\n  margin: 7px 0;\n}\n.rating span.star {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  display: inline-block;\n}\n.rating span.star:before {\n  content: \"\\f006\";\n  padding-right: 5px;\n}\n.rating:not(.read-only) span.star:hover {\n  cursor: pointer;\n}\n.rating:not(.read-only) span.star:hover:before,\n.rating:not(.read-only) span.star:hover ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.rating span.star.active:before,\n.rating span.star.active ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.hero-unit {\n  background: none;\n  border: none;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n.widget.widget-tabs {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs .tab-content {\n  padding: 0;\n}\n.widget.widget-tabs > .widget-head {\n  background: #ffffff;\n  border-color: #dbdbdb;\n  overflow: visible;\n}\n.widget.widget-tabs > .widget-head ul {\n  position: relative;\n  overflow: visible;\n  list-style: none;\n  height: 35px;\n  margin: 0;\n  display: inline-block;\n}\n.widget.widget-tabs > .widget-head ul li {\n  height: 35px;\n  line-height: 35px;\n  float: left;\n  display: block;\n  border-right: 1px solid #dbdbdb;\n}\n.widget.widget-tabs > .widget-head ul li a {\n  width: auto;\n  height: 35px;\n  display: block;\n  padding: 0 15px;\n  position: relative;\n  overflow: hidden;\n  color: #7c7c7c;\n  text-decoration: none;\n}\n.widget.widget-tabs > .widget-head ul li a i:before {\n  left: 5px;\n  top: 5px;\n  color: #9d9d9d;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 15px 0 35px;\n}\n.widget.widget-tabs > .widget-head ul li.active {\n  height: 36px;\n  background: #fff;\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a i:before {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.widget.widget-tabs > .widget-body.large {\n  padding: 25px;\n}\n.widget.widget-tabs-double > .widget-head {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul li,\n.widget.widget-tabs-double > .widget-head ul li.active {\n  height: 40px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double > .widget-head ul li a,\n.widget.widget-tabs-double > .widget-head ul li.active a {\n  height: 35px;\n  padding: 5px 0 0;\n}\n.widget.widget-tabs-double > .widget-head ul li a span,\n.widget.widget-tabs-double > .widget-head ul li.active a span {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 15px 0 38px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons i:before,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons i:before {\n  left: 4px;\n  top: 9px;\n  font-size: 20px;\n}\n.widget.widget-tabs-double-2 {\n  border: none;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border: 1px solid #dbdbdb;\n  border-bottom: none;\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 > .widget-head ul {\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li {\n  height: 70px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a {\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n  height: 70px;\n  padding: 5px 0 0;\n  text-decoration: none;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a span {\n  display: block;\n  line-height: 30px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i {\n  display: block;\n  height: 24px;\n  padding: 13px 0 0;\n  line-height: 24px;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  left: auto;\n  top: auto;\n  font-size: 24px;\n  position: relative;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active {\n  height: 70px;\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover {\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-double-2 .widget-body-regular {\n  padding: 10px;\n  border: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 .widget-body-regular p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-vertical .widget-head {\n  border: none;\n  height: auto;\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-head ul {\n  display: block;\n  height: auto;\n}\n.widget.widget-tabs-vertical .widget-head ul li {\n  float: none;\n  display: block;\n  border-right: none;\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-vertical .widget-head ul li:last-child {\n  border: none;\n}\n.widget.widget-tabs-vertical .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-body .tab-content {\n  padding: 12px 15px;\n}\n.widget.widget-wizard-pills .widget-head {\n  height: 60px;\n  padding: 10px 0;\n}\n.widget.widget-wizard-pills .widget-head ul {\n  height: 60px;\n}\n.widget.widget-wizard-pills .widget-head ul li {\n  height: 60px;\n  line-height: 60px;\n  color: #7c7c7c;\n  padding: 0 0 0 10px;\n  border: none;\n  position: relative;\n}\n.widget.widget-wizard-pills .widget-head ul li.status {\n  height: 45px;\n  padding: 15px 15px 0;\n  font-weight: 600;\n}\n.widget.widget-wizard-pills .widget-head ul li.status span.r {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-wizard-pills .widget-head ul li a {\n  height: 58px;\n  line-height: 60px;\n  padding: 0;\n  width: 58px;\n  text-align: center;\n  background: #dbdbdb;\n  border: 1px solid #dbdbdb;\n  color: #c8c8c8;\n  font-weight: 600;\n  font-size: 16pt;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  position: relative;\n  z-index: 2;\n}\n.widget.widget-wizard-pills .widget-head ul li.active {\n  height: 60px;\n  background: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.active a {\n  width: 60px;\n  height: 60px;\n  background: #f4f4f4;\n  border: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.primary a {\n  width: 60px;\n  height: 60px;\n  background: #4a8bc2;\n  border: none;\n  color: #fff;\n}\n.widget.widget-wizard-pills .widget-head ul li:not(:first-child):before {\n  position: absolute;\n  background: #dbdbdb;\n  height: 1px;\n  left: 0;\n  right: 0;\n  top: 29px;\n  display: block;\n  content: \"\";\n  z-index: 1;\n}\n.widget.widget-wizard-pills .widget-head ul li.no-padding {\n  padding: 0;\n}\n.widget.widget-tabs-2 {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-2.border-bottom-none {\n  border-bottom: none;\n}\n.widget.widget-tabs-2 > .widget-head {\n  background: #fff;\n  border: none;\n  border-bottom: 1px solid #dbdbdb;\n  padding: 0 10px;\n}\n.widget.widget-tabs-2 > .widget-head ul {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs-2 > .widget-head ul li {\n  border: none;\n}\n.widget.widget-tabs-2 > .widget-head ul li.active {\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -o-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: linear-gradient(to bottom, #f7f7f7, #ffffff);\n  background-repeat: repeat-x;\n}\n.widget.widget-tabs-2 > .widget-head ul li a {\n  border: 1px solid #dddddd;\n  border-bottom: none;\n  border-right: none;\n  color: #222;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.widget.widget-tabs-2 > .widget-head ul li:first-child a {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget.widget-tabs-2 > .widget-body {\n  background: #fff;\n  border: none;\n  padding: 15px;\n}\n.widget.tabs-right .widget-head ul {\n  float: right;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons {\n  width: 38px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i {\n  width: 38px;\n  display: block;\n  line-height: 35px;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i:before {\n  width: 38px;\n  text-align: center;\n  left: auto;\n  top: auto;\n  position: relative;\n  display: block;\n  line-height: 35px;\n  color: #cbcbcb;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li.active a.glyphicons i:before {\n  color: #505050;\n}\n.widget.widget-tabs-icons-only .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-body p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-icons-only .widget-head {\n  padding: 0 0 10px;\n}\n.widget.widget-tabs-icons-only .widget-head ul {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  list-style: none;\n  margin: 0;\n  height: 30px;\n  line-height: 30px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-head ul li {\n  color: #dadada;\n  float: left;\n  display: block;\n  padding: 0 10px 0 0;\n  font-size: 8pt;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons {\n  width: 30px;\n  height: 30px;\n  padding: 0 3px;\n  text-align: center;\n  cursor: pointer;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i {\n  background: #e5e5e5;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  height: 30px;\n  position: relative;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #64625f;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:hover i {\n  background: #dedede;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i {\n  background: #64625f;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i:before {\n  color: #fff;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:last-child {\n  padding: 0;\n}\n.tabsbar {\n  height: 60px;\n  border: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n  margin: 0 0 15px;\n}\n.tabsbar ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  height: 60px;\n}\n.tabsbar ul li {\n  float: left;\n  display: block;\n  height: 54px;\n  border-right: 1px solid #dbdbdb;\n  background: #fdfdfd;\n  padding: 3px;\n}\n.tabsbar ul li a {\n  display: block;\n  height: 54px;\n  line-height: 54px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  color: #7c7c7c;\n  text-decoration: none;\n  -webkit-transition: background 1s ease;\n  -moz-transition: background 1s ease;\n  -o-transition: background 1s ease;\n  transition: background 1s ease;\n}\n.tabsbar ul li a i {\n  display: inline-block;\n  float: left;\n  width: 39px;\n  height: 54px;\n}\n.tabsbar ul li a i:before {\n  color: #7c7c7c;\n  position: relative;\n  top: auto;\n  left: auto;\n  line-height: 54px;\n  text-align: center;\n}\n.tabsbar ul li.active a {\n  background-color: #6ca1ce;\n  background-image: -moz-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#83b0d5), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -o-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: linear-gradient(to bottom, #83b0d5, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff83b0d5', endColorstr='#ff4a8bc2', GradientType=0);\n  color: #fff;\n}\n.tabsbar ul li.active a i:before {\n  color: #fff;\n}\n.tabsbar.tabsbar-2 {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul li {\n  height: 39px;\n  padding: 0;\n  background: none;\n  border: none;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a {\n  height: 39px;\n  line-height: 39px;\n  background: none;\n  -webkit-transition: color 0.5s ease;\n  -moz-transition: color 0.5s ease;\n  -o-transition: color 0.5s ease;\n  transition: color 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a i {\n  height: 39px;\n  width: 33px;\n}\n.tabsbar.tabsbar-2 ul li a i:before {\n  line-height: 39px;\n  font-size: 20px;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.tabsbar.tabsbar-2 ul li.active {\n  background: #fff;\n}\n.tabsbar.tabsbar-2 ul li.active a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li.active a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a {\n  background: #4a8bc2;\n  color: #fff;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a i:before {\n  color: #fff;\n}\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n  background: #4a8bc2;\n  border-bottom-color: #4a8bc2;\n  color: #fff;\n}\n.nav-tabs {\n  border-bottom-color: #4a8bc2;\n}\n.nav-tabs > li > a {\n  padding: 6px 8px;\n}\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover {\n  background: #4a8bc2;\n  border-top-color: #4a8bc2;\n  border-left-color: #4a8bc2;\n  border-right-color: #4a8bc2;\n  color: #fff;\n  font-weight: bold;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.nav-pills a {\n  cursor: pointer;\n}\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover {\n  background: #4a8bc2;\n  color: #fff;\n}\n.nav-pills .glyphicons {\n  padding-left: 25px;\n}\n.nav-pills .glyphicons i:before {\n  position: relative;\n  font-size: 14px;\n  left: -10px;\n  top: 2px;\n  color: #F5EADB;\n  font-weight: normal;\n  text-shadow: none;\n}\n.tab-content {\n  overflow: visible;\n  padding: 0;\n}\n.btn {\n  font-weight: 600;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n}\n.btn-block {\n  width: 100%;\n}\n.btn + .btn:not(.btn-block) {\n  margin: 0 0 0 5px;\n}\n.input-append .btn + .btn,\n.input-prepend .btn + .btn {\n  margin-left: -1px;\n}\n.btn-group .btn + .btn:not(.btn-block) {\n  margin-left: -1px;\n}\n.btn-group.dropup .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-default {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n  color: rgba(0, 0, 0, 0.6);\n  text-shadow: 0 1px 0 #fff;\n  font-weight: 600;\n  background-color: #efefef;\n  background-image: -moz-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#e7e7e7));\n  background-image: -webkit-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -o-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: linear-gradient(to bottom, #f4f4f4, #e7e7e7);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe7e7e7', GradientType=0);\n  border: 1px solid #cecece;\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled,\n.btn-default[disabled],\n.btn-default:hover,\n.btn-default:focus {\n  background: #e8e8e8;\n}\n.btn-default:active,\n.btn-default.active {\n  background: #e8e8e8;\n  color: #fff;\n  text-shadow: none;\n}\n.btn-default .caret {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n.btn-warning {\n  background-color: #b6895e;\n  background-image: -moz-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#be946b), to(#ab7a4b));\n  background-image: -webkit-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -o-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: linear-gradient(to bottom, #be946b, #ab7a4b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbe946b', endColorstr='#ffab7a4b', GradientType=0);\n  border: 1px solid #88613b;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-warning.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled,\n.btn-warning[disabled],\n.btn-warning:hover,\n.btn-warning:focus {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-info {\n  background: #93B9D8;\n  border: 1px solid #93B9D8;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-info.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled,\n.btn-info[disabled],\n.btn-info:hover,\n.btn-info:focus {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info:active,\n.btn-info.active {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-danger {\n  background-color: #ca4741;\n  background-image: -moz-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d3534c), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -o-linear-gradient(top, #d3534c, #bd362f);\n  background-image: linear-gradient(to bottom, #d3534c, #bd362f);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd3534c', endColorstr='#ffbd362f', GradientType=0);\n  border: 1px solid #942a25;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-danger.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled,\n.btn-danger[disabled],\n.btn-danger:hover,\n.btn-danger:focus {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-primary {\n  background-color: #619aca;\n  background-image: -moz-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#70a3cf), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -o-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: linear-gradient(to bottom, #70a3cf, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff70a3cf', endColorstr='#ff4a8bc2', GradientType=0);\n  border: 1px solid #3771a2;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-primary.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.4);\n  text-shadow: none;\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.btn-primary:focus {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.btn-inverse {\n  background-color: #53575d;\n  background-image: -moz-linear-gradient(top, #5d6168, #45484d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5d6168), to(#45484d));\n  background-image: -webkit-linear-gradient(top, #5d6168, #45484d);\n  background-image: -o-linear-gradient(top, #5d6168, #45484d);\n  background-image: linear-gradient(to bottom, #5d6168, #45484d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5d6168', endColorstr='#ff45484d', GradientType=0);\n  border: 1px solid #2d2f32;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-inverse.glyphicons i:before {\n  color: #919293;\n  text-shadow: none;\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled,\n.btn-inverse[disabled],\n.btn-inverse:hover,\n.btn-inverse:focus {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse:active,\n.btn-inverse.active {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-success {\n  background-color: #6fa45f;\n  background-image: -moz-linear-gradient(top, #79ae69, #609450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#79ae69), to(#609450));\n  background-image: -webkit-linear-gradient(top, #79ae69, #609450);\n  background-image: -o-linear-gradient(top, #79ae69, #609450);\n  background-image: linear-gradient(to bottom, #79ae69, #609450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff79ae69', endColorstr='#ff609450', GradientType=0);\n  border: 1px solid #4b733e;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-success.glyphicons i:before {\n  color: #a2bc9b;\n  text-shadow: none;\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled,\n.btn-success[disabled],\n.btn-success:hover,\n.btn-success:focus {\n  background: #609450;\n  color: #fff;\n}\n.btn-success:active,\n.btn-success.active {\n  background: #609450;\n  color: #fff;\n}\n.btn-success .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-group .btn-primary:not(.dropdown-toggle),\n.btn-group .btn-primary:not('[data-toggle*=\"\"]') {\n  margin-right: 2px;\n}\n.btn-group-vertical.block {\n  display: block;\n}\n.btn-group.btn-block {\n  padding: 0;\n  position: relative;\n}\n.btn-group.btn-block .leadcontainer {\n  left: 0;\n  position: absolute;\n  right: 29px;\n}\n.btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n  text-align: left;\n}\n.btn-group.btn-block .dropdown-lead {\n  box-sizing: border-box;\n  width: 100%;\n}\n.btn-group.btn-block .dropdown-toggle {\n  width: 30px;\n  float: right;\n  box-sizing: border-box;\n  text-align: center;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-icon-stacked {\n  text-align: left;\n  padding: 5px 5px 5px 45px;\n}\n.btn-icon-stacked i {\n  display: block;\n  width: 24px;\n  height: 24px;\n  position: absolute;\n  left: 10px;\n  top: 10px;\n}\n.btn-icon-stacked i:before {\n  left: auto;\n  top: auto;\n  position: relative;\n  text-align: center;\n}\n.btn-icon-stacked span {\n  display: block;\n  font-size: 13px;\n  line-height: normal;\n}\n.btn-facebook {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #728dc0;\n  background-image: -moz-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#8098c6), to(#5d7cb6));\n  background-image: -webkit-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -o-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: linear-gradient(to bottom, #8098c6, #5d7cb6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8098c6', endColorstr='#ff5d7cb6', GradientType=0);\n  border: 1px solid #5d7cb6;\n}\n.btn-facebook i:before {\n  color: #fff;\n}\n.btn-facebook:hover {\n  background: #8098c6;\n  color: #fff;\n}\n.btn-google {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #b24343;\n  background-image: -moz-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bf4a4a), to(#9e3838));\n  background-image: -webkit-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -o-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: linear-gradient(to bottom, #bf4a4a, #9e3838);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbf4a4a', endColorstr='#ff9e3838', GradientType=0);\n  border: 1px solid #9e3838;\n}\n.btn-google i:before {\n  color: #fff;\n}\n.btn-google:hover {\n  background: #bf4a4a;\n  color: #fff;\n}\n.btn-toggle-code {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  z-index: 1000;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-toggle-code.outside {\n  bottom: -24px;\n}\n#demo_buttons .btn-block {\n  max-width: 200px;\n  margin: 0 auto;\n}\n#demo_buttons thead th {\n  width: 25%;\n}\n.form-inline.small input,\n.form-inline.small select {\n  margin: 0 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  padding: 1px 5px;\n  border-color: #d8d9da;\n  color: #a7a7a7;\n}\n.form-inline.small select {\n  padding: 1px 0;\n  height: 23px;\n}\n.form-inline.small select:last-child {\n  margin-right: 0;\n}\n.form-inline.small label {\n  float: left;\n  margin: 0 5px 0 0;\n  display: block;\n}\n.form-inline.small .input-append.block {\n  display: block;\n}\n.form-inline.small .input-append input {\n  margin: 0;\n  width: 85%;\n}\n.form-inline.small .input-append .add-on {\n  padding: 1px 3px;\n  margin: 0 0 0 -1px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.form-inline.small .input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: #c1c1c1;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n}\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  font-size: 13px;\n}\n.uniformjs .radio .disabled input[type=\"radio\"],\n.uniformjs .checkbox .disabled input[type=\"checkbox\"] {\n  margin-left: 0;\n}\n.uniformjs .radio,\n.uniformjs .checkbox {\n  padding-left: 0;\n}\n.uniformjs .radio {\n  height: auto;\n}\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 3px;\n}\n.uniformjs label.radio {\n  margin-bottom: 0;\n}\n.uniformjs label.radio.inline {\n  margin: 0;\n}\n.checkbox.inline {\n  padding-bottom: 1px;\n}\n.uniformjs .radio span {\n  margin: 2px 0 0;\n}\n.uniformjs .checkbox span {\n  margin: -2px 0 0;\n}\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 13px;\n}\n.input-full input {\n  width: 83%;\n  height: 17px;\n}\nlegend {\n  line-height: normal;\n  height: auto;\n  font-size: 18px;\n  margin: 0 0 6px;\n  text-align: left;\n  padding: 0;\n  border: 0;\n  color: #797979;\n}\n.btn-group > .btn,\n.btn-group > .dropdown-menu {\n  font-size: 13px;\n}\n.strong {\n  font-weight: bold;\n}\ninput[type=text],\ninput[type=password],\nselect,\ntextarea {\n  border-color: #D8D9DA;\n  color: #A7A7A7;\n}\n.control-label.center {\n  text-align: center;\n}\n.form-actions {\n  background: none;\n  border: none;\n  margin: 0;\n}\n.form-horizontal .form-actions {\n  margin-top: 0;\n  padding: 0;\n}\n.form-horizontal .controls {\n  margin-left: 145px;\n}\n.form-horizontal .control-label {\n  width: 125px;\n}\n.form-horizontal .control-group:last-child {\n  margin: 0;\n}\n.input-prepend .add-on,\n.input-append .add-on {\n  background: #fff;\n}\n.input-prepend .add-on i:before,\n.input-append .add-on i:before {\n  color: #D0D1D1;\n}\n.input-prepend .add-on icon,\n.input-append .add-on icon {\n  margin-top: 0;\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n  background: #fff;\n}\n.input-prepend .add-on.glyphicons i:before,\n.input-append .add-on.glyphicons i:before {\n  font-size: 14px;\n  left: 7px;\n  top: 7px;\n  color: #D0D1D1;\n}\n.input-append .add-on.glyphicons i:before {\n  left: 6px;\n}\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover {\n  background: #4a8bc2;\n}\n.ms-container .custom-header {\n  height: 30px;\n  line-height: 30px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  font-weight: 600;\n  border: 1px solid #dbdbdb;\n}\n.ms-container .custom-header:not(.custom-footer) {\n  border-bottom: none;\n}\n.ms-container .custom-header.custom-footer {\n  border-top: none;\n}\n.select2-container img.flag,\n.select2-drop img.flag {\n  height: 10px;\n  width: 15px;\n  padding-right: 10px;\n}\n.select2-container .select2-choice {\n  border-color: #dbdbdb;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-container-multi .select2-choices {\n  border-color: #dbdbdb;\n  background: #fff;\n}\n.select2-container .select2-choice div {\n  border-color: #d8d8d8;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-drop {\n  border-color: #d8d8d8;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n  margin: 5px 0 3px 5px;\n  border-color: #d8d8d8;\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background: #4a8bc2;\n}\n.bootstrap-timepicker-widget table td {\n  font-size: 13px;\n}\n.bootstrap-timepicker > [class*=\"icon-\"] {\n  vertical-align: text-top;\n  margin: 0 0 0 -22.5px;\n  pointer-events: none;\n  position: relative;\n  cursor: pointer;\n}\n.table {\n  margin: 0 0 15px;\n  position: relative;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table.table-white {\n  background: #fff;\n}\n.table th,\n.table td {\n  border-top-color: #ebebeb;\n}\n.table td.center,\n.table th.center {\n  text-align: center;\n}\n.table td.right,\n.table th.right {\n  text-align: right;\n}\n.table-condensed {\n  font-size: 10pt;\n}\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 10px;\n}\n.table-borderless th,\n.table-borderless td {\n  border: none;\n}\n.table-striped tbody tr:nth-child(odd) td,\n.table-striped tbody tr:nth-child(odd) th {\n  background-color: #fafafa;\n}\n.table-bordered {\n  border-color: #dbdbdb;\n  /* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.table-bordered th,\n.table-bordered td {\n  border-color: #dbdbdb;\n}\n.table-fill td {\n  background: #F8F8F8;\n}\n.table .progress:last-child,\n.table .alert:last-child {\n  margin: 0;\n}\n.table .shortRight {\n  width: 25%;\n  text-align: right;\n  direction: rtl;\n  text-indent: 10px;\n}\n.table-large-spacing td {\n  padding: 20px 15px;\n}\n.table .thead td {\n  padding: 8px;\n  font-weight: bold;\n}\n.table-vertical-center td,\n.table-vertical-center th {\n  vertical-align: middle;\n}\n.table-thead-simple thead th {\n  background: none;\n  border-left: none;\n  border-right: none;\n  border-top: none;\n  border-bottom: 1px solid #ebebeb;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  text-shadow: none;\n  text-transform: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.table-thead-simple.table-thead-border-none {\n  border-top: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-thead-simple.table-thead-border-none thead th {\n  border-bottom: none;\n}\n.table-thead-simple.table-thead-border-none thead:first-child tr:first-child > th:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > td:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-primary {\n  border-color: #dbdbdb;\n  border-top: none;\n}\n.table-primary thead th {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  color: #fff;\n  font-size: 14px;\n}\n.table-primary tbody td {\n  color: #7c7c7c;\n  background: #fafafa;\n  border-width: 0px;\n}\n.table-primary tbody td.important {\n  color: #4a8bc2;\n  font-weight: 600;\n}\n.table-primary tbody td.actions {\n  padding-right: 1px;\n}\n.table-primary.table-bordered tbody td {\n  border-color: #dbdbdb;\n  border-width: 1px;\n  /*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\n}\n.table-primary tbody tr:nth-child(odd) td,\n.table-primary tbody tr:nth-child(odd) th {\n  background: #ffffff;\n}\n.table-primary tbody tr.selectable td {\n  cursor: pointer;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background: #cecece;\n  box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -webkit-box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -moz-box-shadow: 0 0 0 1px #a8a8a8 inset;\n}\n.table-pricing th,\n.table-pricing td {\n  padding: 10px;\n}\n.table-pricing .plan {\n  font-weight: 600;\n  font-size: 14px;\n  display: block;\n}\n.table-pricing .price {\n  font-weight: 600;\n  font-size: 24px;\n  display: block;\n}\n.table-pricing .heading {\n  font-weight: 600;\n  font-size: 24px;\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard {\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard.circle_ok i:before {\n  color: #9fc75f;\n}\n.table-pricing-2 th {\n  padding: 12px 0;\n  background: #64625f;\n  font-size: 14px;\n  color: #fff;\n  border-color: #5a5855;\n}\n.table-pricing-2 .pricing td {\n  padding: 12px 10px 10px;\n  background: #e5e5e5;\n  border-color: #cecece;\n}\ndiv.dataTables_filter label {\n  float: none;\n}\n.row-fluid [class*=\"span\"]:last-of-type .dataTables_filter {\n  text-align: right;\n}\n#DataTables_Table_0_length select {\n  width: 80px;\n}\n#DataTables_Table_0_info {\n  padding: 0;\n}\n.dataTables_paginate {\n  text-align: right;\n}\n.dataTables_length {\n  padding-top: 5px;\n}\n.ColVis {\n  margin: 0;\n}\n.google-visualization-table-div-page {\n  margin: 10px 0 0 0 !important;\n}\n.google-visualization-table-div-page .a-d-e-h-g {\n  padding: 0;\n  border: none;\n  margin: 0;\n}\n.google-visualization-table-div-page .a-d-e-f-g,\n.google-visualization-table-div-page .a-d-e-h-g {\n  border-style: none;\n}\n.google-visualization-table-div-page .a-d-e-o-q .a-d-e-h-g {\n  border: none;\n}\n.google-visualization-table-div-page .a-d-e {\n  background: none;\n  margin-left: 5px;\n}\n.google-visualization-table-div-page .a-d-e.a-d-e-o-p {\n  margin-left: 0;\n}\n.google-visualization-table-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n  border: 1px solid #e5e5e5;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  font-size: 10pt;\n  background: none !important;\n}\n.google-visualization-table-table td,\n.google-visualization-table-table .tableHeaderRow td {\n  padding: 4px 10px;\n  border: none;\n  border-left: 1px solid #e5e5e5;\n  border-top: 1px solid #e5e5e5;\n  line-height: 20px;\n}\n.google-visualization-table-table .tableHeaderRow td {\n  font-weight: bold;\n  vertical-align: bottom;\n}\n.google-visualization-table-table tbody tr:nth-child(odd) td,\n.google-visualization-table-table tbody tr:nth-child(odd) td {\n  background-color: rgba(255, 255, 255, 0.5);\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:first-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:last-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child td,\n.google-visualization-table-table tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n@media only screen and (max-width: 979px) {\n  .table-responsive.swipe-horizontal {\n    border-collapse: collapse;\n    border-spacing: 0;\n    display: block;\n    position: relative;\n    width: 100%;\n    border-left: 1px solid #DDD;\n  }\n  .table-responsive.swipe-horizontal th,\n  .table-responsive.swipe-horizontal td {\n    display: block;\n    margin: 0;\n    vertical-align: top;\n  }\n  .table-responsive.swipe-horizontal th {\n    text-align: right;\n    border-bottom: 0;\n    border-left: 0;\n  }\n  .table-responsive.swipe-horizontal td {\n    min-height: 1.25em;\n    text-align: left;\n    border-left: 0;\n    border-right: 0;\n    border-bottom: 0;\n    border-top: 0;\n    font-size: 13px;\n  }\n  .table-responsive.swipe-horizontal thead {\n    display: block;\n    float: left;\n  }\n  .table-responsive.swipe-horizontal thead tr {\n    display: block;\n  }\n  .table-responsive.swipe-horizontal tbody {\n    display: block;\n    width: auto;\n    position: relative;\n    overflow-x: auto;\n    white-space: nowrap;\n    word-spacing: 0;\n    letter-spacing: 0;\n    font-size: 0;\n  }\n  .table-responsive.swipe-horizontal tbody tr {\n    display: inline-block;\n    vertical-align: top;\n    border-left: 1px solid #e5e5e5;\n  }\n  .table-responsive.block {\n    /* Force table to not be like tables anymore */\n  \n    /* Hide table headers (but not display: none;, for accessibility) */\n  \n    /* Label the data */\n  \n  }\n  .table-responsive.block table,\n  .table-responsive.block thead,\n  .table-responsive.block tbody,\n  .table-responsive.block th,\n  .table-responsive.block td,\n  .table-responsive.block tr {\n    display: block;\n  }\n  .table-responsive.block thead tr {\n    position: absolute;\n    top: -9999px;\n    left: -9999px;\n  }\n  .table-responsive.block tr {\n    border: 1px solid #e5e5e5;\n  }\n  .table-responsive.block td {\n    /* Behave  like a \"row\" */\n  \n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n    position: relative;\n    padding-left: 50%;\n    white-space: normal;\n    text-align: left;\n  }\n  .table-responsive.block td:before {\n    /* Now like a table header */\n  \n    position: absolute;\n    /* Top/left values mimic padding */\n  \n    vertical-align: middle;\n    left: 6px;\n    width: 45%;\n    padding-right: 10px;\n    white-space: nowrap;\n    text-align: right;\n    font-weight: bold;\n  }\n  .table-responsive.block td:before {\n    content: attr(data-title);\n  }\n}\n.table-invoice td {\n  border: none;\n  padding: 0;\n}\n.table-projects .stats span {\n  display: block;\n  text-transform: uppercase;\n  padding: 2px 0;\n}\n.table-projects .stats span.count {\n  font-size: 18pt;\n  font-weight: normal;\n  color: #4a8bc2;\n}\n.label.large {\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n  background: #e5e5e5;\n  color: #64625f;\n  text-shadow: 0 1px 0 #fff;\n}\n.label.label-primary {\n  background: #4a8bc2;\n}\n.label.label-warning {\n  background: #ab7a4b;\n}\n.label.label-important {\n  background: #bd362f;\n}\n.label.label-success {\n  background: #609450;\n}\n.label.label-block {\n  display: block;\n}\n.tooltip-inner {\n  background: #272a2c;\n  color: #bab9b9;\n}\n.tooltip.bottom .tooltip-arrow {\n  border-bottom-color: #272a2c;\n}\n.tooltip.top .tooltip-arrow {\n  border-top-color: #272a2c;\n}\n.tooltip.left .tooltip-arrow {\n  border-left-color: #272a2c;\n}\n.tooltip.right .tooltip-arrow {\n  border-right-color: #272a2c;\n}\n.tooltip.left {\n  margin-left: -13px;\n}\n#flotTip {\n  white-space: nowrap;\n  border: 1px solid #4a8bc2;\n  padding: 3px 8px;\n  background: #4a8bc2;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  position: absolute;\n  z-index: 100;\n  color: #fff;\n}\n.popover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n}\n.popover .popover-title {\n  font-weight: 600;\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n}\n#demo_popovers .popover {\n  position: relative;\n  display: block;\n  width: 100%;\n  margin: 0;\n}\n.modal-backdrop {\n  z-index: 10000;\n  background: #000000;\n}\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.modal {\n  z-index: 10001;\n  border-color: #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  background: #ffffff;\n}\n.modal .modal-header {\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  border-color: #dbdbdb;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.modal .modal-header h3 {\n  font-size: 14px;\n}\n.modal .modal-header .close {\n  position: absolute;\n  top: 5px;\n  right: 10px;\n  padding: 0;\n  margin: 0;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #7c7c7c;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.modal .modal-body {\n  padding: 10px;\n}\n.modal .modal-body p:last-child {\n  margin: 0;\n}\n.modal .modal-footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  border-color: #ebebeb;\n  padding: 10px;\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n.alert {\n  margin: 0 0 15px;\n  color: #fff;\n  border-color: #ab7a4b;\n  background: #ab7a4b;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n}\n.alert h4 {\n  margin: 0 0 5px;\n  color: #fff;\n}\n.alert.alert-error {\n  background: #bd362f;\n  color: #fff;\n  border-color: #bd362f;\n}\n.alert.alert-error .close {\n  color: #fff;\n}\n.alert.alert-error h4 {\n  color: #fff;\n}\n.alert.alert-primary {\n  background: #4a8bc2;\n  color: #fff;\n  border-color: #4a8bc2;\n}\n.alert.alert-primary .close {\n  color: #fff;\n}\n.alert.alert-primary h4 {\n  color: #fff;\n}\n.alert.alert-info {\n  background: #dff3f8;\n  color: #7399b9;\n  border-color: #93b9d8;\n}\n.alert.alert-info .close {\n  color: #7399b9;\n}\n.alert.alert-success {\n  border-color: #609450;\n  background: #609450;\n  color: #fff;\n}\n.alert.alert-success .close,\n.alert.alert-success h4 {\n  color: #fff;\n}\n.alert .close {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #fff;\n}\n.progress {\n  background: #ffffff;\n  margin: 0 0 10px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.progress .bar {\n  background: #e8e8e8;\n}\n.progress .bar.right {\n  text-align: right;\n  text-indent: 10px;\n  direction: rtl;\n}\n.progress.white {\n  background: #fff;\n}\n.progress.progress-info .bar {\n  background: #93b9d8;\n}\n.progress.progress-success .bar {\n  background: #609450;\n}\n.progress.progress-warning .bar {\n  background: #ab7a4b;\n}\n.progress.progress-primary .bar {\n  background: #4a8bc2;\n}\n.progress.progress-danger .bar {\n  background: #bd362f;\n}\n.progress.progress-inverse .bar {\n  background: #45484d;\n}\n.progress.progress-small {\n  height: 15px;\n}\n.progress.progress-small .bar {\n  font-size: 8px;\n  line-height: 15px;\n}\n.progress.progress-small .bar.right {\n  text-indent: 2px;\n}\n.progress.progress-mini {\n  height: 5px;\n}\n.accordion {\n  margin: 0 0 10px;\n  position: relative;\n}\n.accordion .accordion-group {\n  border-color: #dbdbdb;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.accordion .accordion-inner {\n  font-size: 13px;\n  background: #ffffff;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  border-color: #dbdbdb;\n}\n.accordion .accordion-heading .accordion-toggle {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  color: #7c7c7c;\n  text-decoration: none;\n  font-weight: 600;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n}\n.accordion.accordion-2 {\n  border: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle {\n  border-bottom: 1px solid #dbdbdb;\n  background: #ffffff;\n  height: 38px;\n  line-height: 38px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons {\n  padding: 0 10px;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i {\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  display: block;\n  float: left;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i:before {\n  font-size: 20px;\n  color: #cccccc;\n  top: auto;\n  left: auto;\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  position: relative;\n  text-align: center;\n}\n.accordion.accordion-2 .accordion-body.in {\n  border-bottom: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-group {\n  border: none;\n  margin: 0;\n}\n.accordion.accordion-2 .accordion-group:last-child .accordion-body.in {\n  border-top: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-inner {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.pager li > a,\n.pager li > span {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.pagination ul {\n  background: #ffffff;\n}\n.pagination ul > li > a:hover {\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n  border-color: #70a3cf;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a,\n.pagination ul > li > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  font-weight: 600;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.pagination ul > .disabled > a:hover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.gritter-item-wrapper .gritter-item p {\n  margin: 0 0 10px;\n}\n.gritter-item-wrapper .gritter-item p:last-child {\n  margin: 0;\n}\n.gritter-item-wrapper.gritter-primary .gritter-top {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-bottom {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item {\n  background: rgba(74, 139, 194, 0.9);\n  padding: 10px 10px 15px;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  color: #fff;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item a {\n  color: #fff;\n  text-decoration: underline;\n}\n.notyfy_wrapper {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.notyfy_wrapper.notyfy_alert {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_error {\n  background: #bd362f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_success {\n  background: #51a351;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_warning {\n  background: #74614f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_information {\n  background: #57B7E2;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_confirm {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2;\n  border: none;\n}\n.notyfy_wrapper.notyfy_primary,\n.notyfy_wrapper.notyfy_primary * {\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_default {\n  background: #fafafa;\n}\n.notyfy_wrapper.notyfy_dark {\n  background: #4a4846;\n}\n.notyfy_wrapper.notyfy_dark,\n.notyfy_wrapper.notyfy_dark * {\n  color: #fff;\n}\n#notyfy_container_top {\n  top: 0;\n  left: 0;\n  width: 100%;\n}\n#notyfy_container_top .notyfy_wrapper {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper {\n  border: none;\n  box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper p {\n  margin: 0;\n}\n#content-notification .notyfy_wrapper .notyfy_message {\n  padding: 15px 10px;\n}\n#content-notification .notyfy_wrapper.notyfy_default {\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_dark {\n  background: #4a4846 url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2 url(\"../images/pattern1.png\") repeat;\n  box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -moz-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -webkit-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n}\n.sliders-vertical span {\n  height: 120px;\n  float: left;\n  margin: 15px;\n}\n.ui-slider-wrap {\n  display: block;\n  padding: 5px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider {\n  background: rgba(0, 0, 0, 0.1);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal {\n  height: 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal .ui-slider-handle {\n  top: -5px;\n}\n.ui-slider-wrap .ui-slider-vertical .ui-slider-handle {\n  left: -4px;\n}\n.ui-slider-wrap .ui-slider-handle {\n  -webkit-border-radius: 50% 50% 50% 50%;\n  -moz-border-radius: 50% 50% 50% 50%;\n  border-radius: 50% 50% 50% 50%;\n  background: #fff;\n  border-width: 3px;\n  border-style: solid;\n  border-color: rgba(0, 0, 0, 0.3);\n  width: 13px;\n  height: 13px;\n  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n}\n.ui-slider-wrap .ui-slider-range {\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  background: rgba(0, 0, 0, 0.2);\n}\n.ui-slider-wrap .slider-primary .ui-slider-handle {\n  border-color: #4a8bc2;\n}\n.ui-slider-wrap .slider-primary .ui-slider-range {\n  background: #4a8bc2;\n}\n.ui-slider-wrap .slider-warning .ui-slider-handle {\n  border-color: #FBB450;\n}\n.ui-slider-wrap .slider-warning .ui-slider-range {\n  background: #FBB450;\n}\n.ui-slider-wrap .slider-success .ui-slider-handle {\n  border-color: #609450;\n}\n.ui-slider-wrap .slider-success .ui-slider-range {\n  background: #609450;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-handle {\n  border-color: #3F4246;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-range {\n  background: #3F4246;\n}\n.ui-slider-wrap .slider-info .ui-slider-handle {\n  border-color: #93B9D8;\n}\n.ui-slider-wrap .slider-info .ui-slider-range {\n  background: #93B9D8;\n}\n.sliders-vertical {\n  position: relative;\n  margin: 0 auto;\n  display: inline-block;\n}\n.sliders-vertical .ui-slider-wrap {\n  margin: 0 5px;\n}\n.sliders-vertical .ui-slider {\n  margin: 0;\n}\n.vertical-range-slider .ui-slider-wrap {\n  display: inline-block;\n  margin: 0 auto;\n}\n.sliderContainer {\n  height: 35px;\n  margin-top: 50px;\n  width: 100%;\n}\n.sliderContainer select,\n.sliderContainer textarea,\n.sliderContainer input[type=\"text\"],\n.sliderContainer input[type=\"password\"],\n.sliderContainer input[type=\"datetime\"],\n.sliderContainer input[type=\"datetime-local\"],\n.sliderContainer input[type=\"date\"],\n.sliderContainer input[type=\"month\"],\n.sliderContainer input[type=\"time\"],\n.sliderContainer input[type=\"week\"],\n.sliderContainer input[type=\"number\"],\n.sliderContainer input[type=\"email\"],\n.sliderContainer input[type=\"url\"],\n.sliderContainer input[type=\"search\"],\n.sliderContainer input[type=\"tel\"],\n.sliderContainer input[type=\"color\"],\n.sliderContainer .uneditable-input {\n  margin: 0;\n  padding: 2px 4px;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container {\n  margin: 0 20px;\n}\n.sliderContainer .ui-rangeSlider-bar {\n  background: #4a8bc2;\n  height: 30px;\n  margin: 0;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-noArrow .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-bar {\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.sliderContainer .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-label {\n  background: #e5e5e5;\n  color: #7c7c7c;\n  font-size: 13px;\n}\n.sliderContainer .ui-rangeSlider-container {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-editRangeSlider .ui-rangeSlider-label {\n  padding: 5px;\n}\n.sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #e5e5e5;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4a8bc2;\n  margin-right: -4px;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4a8bc2;\n  margin-left: -4px;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  width: 20px;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale {\n  overflow: hidden;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label {\n  color: #7c7c7c;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-bar {\n  background: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #bd362f;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-bar {\n  background: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #609450;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-bar {\n  background: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #ab7a4b;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #cecece;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-container,\n.widget-body-gray .sliderContainer .ui-rangeSlider-arrow,\n.widget-body-gray .sliderContainer .ui-rangeSlider-label {\n  background: #cecece;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-bar {\n  background: #4d4d4d;\n}\n.ui-widget-header {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n  background: #fafafa;\n  border-color: #dddddd;\n  color: #797979;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-widget-content {\n  border: none;\n}\n.ui-datepicker {\n  padding: 10px;\n  background: #fff;\n  font-size: 12px;\n}\n.ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.widget-body-gray .ui-datepicker {\n  background: none;\n  padding: 0;\n  font-size: 12px;\n}\n.widget-body-gray .ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-datepicker-inline {\n  width: 100%;\n  padding: 0;\n}\n.datepicker-inline {\n  margin: 0 0 5px;\n}\n.wizard .wizard-head {\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-bottom: none;\n}\n.bwizard-steps .label {\n  position: relative;\n  top: -1px;\n  margin: 0 5px 0 0;\n  padding: 1px 5px 2px;\n}\n.bwizard-steps .active .label {\n  background-color: #333;\n}\n.bwizard-steps {\n  display: block;\n  margin: 0;\n  padding: 0;\n  height: 40px;\n  list-style: none;\n}\n.bwizard-steps li {\n  display: block;\n  float: left;\n  position: relative;\n  margin-right: 5px;\n  line-height: 40px;\n  height: 40px;\n  background: #fafafa;\n}\n.bwizard-steps li a {\n  display: block;\n  height: 40px;\n  line-height: 40px;\n  padding: 0 20px 0 40px;\n}\n.bwizard-steps li.active {\n  color: #fff;\n  background: #4a8bc2;\n}\n.bwizard-steps li.active:after {\n  border-left-color: #4a8bc2;\n}\n.bwizard-steps li.active a {\n  color: #fff;\n  cursor: default;\n}\n.bwizard-steps li:after {\n  position: absolute;\n  right: -20px;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fafafa;\n  border-top: 20px inset transparent;\n  content: \"\";\n  z-index: 2;\n}\n.bwizard-steps li:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fff;\n  border-top: 20px inset transparent;\n  content: \"\";\n}\n.bwizard-steps li:last-child {\n  margin-right: 0;\n}\n.bwizard-steps li:first-child:before {\n  border: none;\n}\n.bwizard-steps li:first-child a {\n  padding-left: 20px;\n}\n.bwizard-steps a:hover {\n  text-decoration: none;\n}\n.bwizard-steps.clickable li:not (.active ) {\n  cursor: pointer;\n}\n.bwizard-steps.clickable li:hover:not (.active ) {\n  background: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ):after {\n  border-left-color: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ) a {\n  color: #08c;\n}\n@media (max-width: 480px) {\n  /* badges only on small screens */\n  .bwizard-steps li:after,\n  .bwizard-steps li:before {\n    border: none;\n  }\n  .bwizard-steps li,\n  .bwizard-steps li.active,\n  .bwizard-steps li:first-child,\n  .bwizard-steps li:last-child {\n    margin-right: 0;\n    padding: 0;\n    background-color: transparent;\n  }\n}\n.layout-timeline {\n  border-top-color: #d2d1d0 !important;\n  border-top-width: 2px !important;\n}\n.layout-timeline > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  width: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline .media {\n  margin: 0 0 15px;\n}\n.layout-timeline .media .media-body {\n  padding: 10px 0 0;\n  line-height: 17px;\n}\n.layout-timeline .media .media-body .author {\n  font-size: 14px;\n}\n.layout-timeline .glyphicons.pencil {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  margin: 0;\n  padding: 0;\n  width: 20px;\n  height: 20px;\n}\n.layout-timeline .glyphicons.pencil i:before {\n  top: 0;\n  right: 0;\n  font-size: 17px;\n  color: #cccccc;\n}\n.layout-timeline ul.timeline {\n  list-style: none;\n  margin: 0;\n  padding: 15px 15px 15px 30px;\n}\n.layout-timeline ul.timeline > li {\n  position: relative;\n  padding: 0 0 15px;\n}\n.layout-timeline ul.timeline > li .date {\n  width: 50px;\n  padding: 5px 0;\n  text-align: center;\n  text-transform: uppercase;\n  font-weight: 600;\n  position: absolute;\n  left: -70px;\n  top: 0;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .date strong {\n  display: block;\n  line-height: 10px;\n  padding: 3px 0 0;\n}\n.layout-timeline ul.timeline > li .type {\n  position: absolute;\n  text-transform: uppercase;\n  color: #7c7c7c;\n  font-weight: 600;\n  padding: 0 35px 0 0;\n  top: 15px;\n  width: 100px;\n  text-align: right;\n  left: -195px;\n  line-height: 24px;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .type i:before {\n  left: auto;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type .time {\n  position: absolute;\n  top: 24px;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type:after {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -60px;\n  top: 12px;\n  width: 45px;\n  height: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .type:before {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -20px;\n  top: 9px;\n  width: 8px;\n  height: 8px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .separator .type {\n  top: 60px;\n}\n.layout-timeline ul.timeline > li .alert-gray {\n  background: #f8f8f8;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  border: none;\n  margin: 0;\n}\n.layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 0 5px 25px;\n}\n.layout-timeline ul.timeline > li p.glyphicons i:before {\n  color: #dfdfdf;\n  font-size: 17px;\n  top: 5px;\n  left: 0;\n}\n.layout-timeline ul.timeline > li .widget-body-gray .glyphicons i:before {\n  color: #7c7c7c;\n}\n.layout-timeline ul.timeline > li .widget-body-gray a {\n  color: #000;\n  text-decoration: underline;\n}\n.layout-timeline ul.timeline > li .widget-body-gray strong {\n  font-weight: 400;\n  color: #000;\n}\n.layout-timeline ul.timeline > li.active .type {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type i:before {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after {\n  background: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active:before {\n  display: block;\n  position: absolute;\n  content: \"\";\n  top: 0;\n  bottom: 0;\n  left: -45px;\n  width: 2px;\n  z-index: 2;\n  background: #4a8bc2;\n}\n.nav-timeline > li {\n  margin: 0 0 5px;\n}\n.nav-timeline > li > a {\n  background: #b3b3b3;\n  border: none;\n  margin: 0 !important;\n  font-weight: 600;\n}\n.nav-timeline > li > a.glyphicons {\n  padding: 8px 12px;\n}\n.nav-timeline > li > a.glyphicons i:before {\n  position: absolute;\n  left: auto;\n  right: 8px;\n  top: 8px;\n  color: #fff;\n}\n.nav-timeline > li.active > a {\n  background: #4a8bc2;\n}\nbody.login {\n  background: #f0f0f0;\n}\nbody.login #login {\n  padding: 40px 0 0;\n}\nbody.login #login a:not(.btn) {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nbody.login #login h1 {\n  font-size: 20pt;\n  text-align: center;\n  display: block;\n  padding: 0 0 20px;\n  text-shadow: 0 1px 0 #ffffff;\n}\nbody.login #login h1 i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n  color: #7c7c7c;\n}\nbody.login #login .wrapper {\n  max-width: 354px;\n  min-width: 300px;\n  margin: 0 auto;\n  position: relative;\n}\nbody.login #login .wrapper.signup {\n  max-width: 600px;\n}\nbody.login #login .widget .widget-head .btn {\n  margin: -4px 0 0 5px;\n}\nbody.login #login .widget .widget-head div {\n  font-size: 12px;\n}\nbody.login #login .widget .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  background: #fafafa;\n}\nbody.login #login .widget .widget-footer {\n  height: 40px;\n  line-height: 40px;\n  margin: 15px 0 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n}\nbody.login #login .widget .widget-footer p {\n  font-size: 12px;\n  color: #7c7c7c;\n  font-weight: 600;\n  margin: 0;\n  width: auto;\n  float: none;\n  padding: 0 10px 0 35px;\n  display: block;\n  height: 40px;\n  line-height: 40px;\n}\nbody.login #login .widget .widget-footer p i:before {\n  top: 7px;\n  left: 7px;\n}\nbody.login #login label {\n  font-size: 13px;\n  color: #7c7c7c;\n  font-weight: 600;\n}\nbody.login #login .checkbox {\n  margin-top: 5px;\n}\nbody.login #login .password {\n  float: right;\n  font-size: 12px;\n  font-weight: 400;\n}\nbody.login #login input[type=\"text\"],\nbody.login #login input[type=\"password\"] {\n  font-size: 13px;\n  height: auto;\n  margin-bottom: 10px;\n  padding: 5px 9px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n}\nbody.login #login ::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #ccc;\n}\nbody.login #login :-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #ccc;\n}\nbody.login #login ::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #ccc;\n}\nbody.login #login :-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #ccc;\n}\nbody.login #login form {\n  margin: 0;\n}\nbody.login #login p {\n  margin: 5px 0;\n}\nbody.login #login p:first-child {\n  margin: 0 0 10px;\n}\nbody.login #login p:last-child {\n  margin: 10px 0 0;\n}\nbody.login #login .form-signin {\n  position: relative;\n  max-width: 600px;\n  margin: 0 auto 20px;\n  background-color: #fff;\n  border: 1px solid #e5e5e5;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\nbody.login #login .form-signin .inner {\n  padding: 20px;\n}\n.gallery ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.gallery ul li .thumb {\n  position: relative;\n  display: block;\n  padding: 5px;\n  margin-bottom: 10px;\n  z-index: 1;\n  overflow: hidden;\n}\n.gallery ul li.span2:nth-child(6n+7) {\n  margin-left: 0;\n}\n.gallery ul li.span3:nth-child(4n+5) {\n  margin-left: 0;\n}\n.gallery ul li.span4:nth-child(3n+4) {\n  margin-left: 0;\n}\n.gallery.gallery-masonry li[class*=\"span\"] {\n  margin-left: 0;\n}\n.gallery.gallery-2 li .thumb {\n  padding: 0;\n  border-color: #4c4c4c;\n}\n.thumb {\n  display: block;\n  padding: 3px;\n  border: 1px solid #dbdbdb;\n}\n.thumb,\n.thumb img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails {\n  margin: 0;\n}\n.thumbnails > li {\n  margin-bottom: 15px;\n}\n.thumbnails > li .thumbnail {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails > li .thumbnail .caption {\n  color: #7c7c7c;\n}\n.thumbnails > li a.thumbnail:hover,\n.thumbnails > li a.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.thumbnail {\n  border-color: #dbdbdb;\n}\na.thumbnail .caption {\n  display: block;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.carousel {\n  margin-bottom: 15px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .carousel-control {\n  font-size: 45px;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background: #e5e5e5;\n  color: #000;\n  border-color: #000;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-control.right {\n  text-align: center;\n}\n.carousel .carousel-inner {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  border: 1px solid #dbdbdb;\n}\n.carousel .item {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .item img {\n  min-width: 100%;\n}\n.carousel .carousel-caption {\n  background: rgba(229, 229, 229, 0.95);\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-caption p {\n  color: #7c7c7c;\n}\n.carousel .carousel-caption h4 {\n  font-size: 12pt;\n  color: #000;\n  font-weight: 600;\n}\n.carousel .carousel-caption a {\n  text-decoration: underline;\n  color: #000;\n}\n.carousel.carousel-1 {\n  height: 223px;\n  margin-bottom: 33px;\n  background: #e5e5e5;\n}\n.carousel.carousel-1 .item {\n  height: 223px;\n  overflow: hidden;\n}\n.carousel.carousel-1 .item img {\n  min-height: 100%;\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.carousel.carousel-1 .carousel-indicators {\n  top: auto;\n  bottom: -23px;\n  right: 0;\n}\n.carousel.carousel-1 .carousel-indicators li {\n  background: #96bcdc;\n}\n.carousel.carousel-1 .carousel-indicators li.active {\n  background: #4a8bc2;\n}\n.carousel.carousel-1 .carousel-caption {\n  height: 193px;\n  background: #e5e5e5;\n  top: 0;\n}\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n.jcrop-holder {\n  margin: 0 auto;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.jcrop-holder img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.fc-state-highlight {\n  background: rgba(0, 0, 0, 0.2);\n}\n#external-events ul {\n  list-style: none;\n  margin: 0 0 20px;\n}\n#external-events li {\n  margin: 0 0 5px;\n  padding: 2px 5px;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  font-size: .85em;\n  cursor: pointer;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n#external-events li.glyphicons {\n  padding: 2px 5px 2px 30px;\n  display: block;\n}\n#external-events li.glyphicons i:before {\n  font-size: 14px;\n  color: #fff;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.3);\n  height: 24px;\n  width: 24px;\n  line-height: 24px;\n  text-align: center;\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  border-right: 1px solid rgba(255, 255, 255, 0.4);\n}\n.fc-header-title h2 {\n  font-size: 16pt;\n  line-height: 25px;\n}\n.fc-event-skin {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.fc-event-time,\n.fc-event-title {\n  padding: 0 5px;\n}\n#calendar .btn-group .btn-primary {\n  margin-right: 2px;\n}\n#guided-tour {\n  position: fixed;\n  z-index: 10000;\n  top: 100px;\n  right: -100%;\n  width: 40px;\n  height: 20px;\n  padding: 10px;\n  background: #4a8bc2;\n  font-size: 14pt;\n  color: #fff;\n  text-align: center;\n  box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n  -webkit-transition: width 0.5s ease;\n  -moz-transition: width 0.5s ease;\n  -o-transition: width 0.5s ease;\n  transition: width 0.5s ease;\n  overflow: hidden;\n  white-space: nowrap;\n}\n#guided-tour .hide {\n  float: left;\n  height: 0;\n  display: inline-block !important;\n  opacity: 0;\n  -webkit-transition: opacity 0.6s ease;\n  -moz-transition: opacity 0.6s ease;\n  -o-transition: opacity 0.6s ease;\n  transition: opacity 0.6s ease;\n}\n#guided-tour #close-tour {\n  display: none;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  padding: 10px;\n  color: rgba(0, 0, 0, 0.8);\n  text-shadow: 0 1px 0 #fff;\n  background: rgba(255, 255, 255, 0.6);\n}\n#guided-tour #close-tour:hover {\n  background: rgba(255, 255, 255, 0.9);\n}\n#guided-tour:hover {\n  width: 100px;\n  padding: 10px 40px 10px 10px;\n}\n#guided-tour:hover .hide {\n  padding: 0 5px 0 0;\n  opacity: 1;\n  height: auto;\n}\n#guided-tour:hover #close-tour {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  margin: 0;\n  width: 100%;\n  height: auto;\n  padding: 20px;\n  z-index: 9000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  margin: 0 90px 0 120px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages h4 {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages p:last-child {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(0, 0, 0, 0.4);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover:after {\n  border-top-color: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover:after {\n  border-bottom-color: rgba(0, 0, 0, 0.9);\n}\n.tlypageguide_shadow:after {\n  background: rgba(74, 139, 194, 0.2);\n  box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -moz-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -webkit-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  top: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  top: 20px;\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #4a8bc2;\n}\n#docs_icons {\n  text-align: center;\n  padding: 0 20px;\n}\n#docs_icons .glyphicons {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n  width: 125px;\n  font-size: 12px;\n  line-height: 48px;\n  overflow: hidden;\n  color: #7c7c7c;\n}\n#docs_icons .glyphicons i:before {\n  line-height: 55px !important;\n  color: #4a8bc2;\n}\n.documentation ul ul {\n  margin-bottom: 10px;\n}\n.documentation .span3 .menu.affix {\n  position: fixed;\n  top: 20px;\n  width: 220px;\n}\n.documentation .show-grid {\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n.documentation .show-grid [class*=\"span\"] {\n  background-color: #535a5e;\n  text-align: center;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  min-height: 40px;\n  line-height: 40px;\n  color: #fff;\n}\n.documentation .show-grid .show-grid {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.documentation .show-grid .show-grid [class*=\"span\"] {\n  background-color: #848d93;\n}\n#landing_1 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_1 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_1 .banner {\n  background: #000;\n  height: 321px;\n}\n#landing_1 .banner .banner-wrapper {\n  height: 321px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_1 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n  background: #000;\n}\n#landing_1 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 65px;\n  right: 27px;\n  position: absolute;\n  background: #fff;\n  color: #4a8bc2;\n  font-size: 22pt;\n  font-weight: bold;\n  padding: 0 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 126px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 370px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_1 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  top: 232px;\n  right: 27px;\n}\n#landing_2 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_2 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_2 .banner {\n  background: #1f2123;\n  height: 356px;\n}\n#landing_2 .banner .banner-wrapper {\n  height: 356px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_2 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 55px;\n  right: 27px;\n  position: absolute;\n  color: #fff;\n  font-size: 27pt;\n  font-weight: bold;\n  text-shadow: none;\n  padding: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 115px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 380px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  bottom: 40px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-primary {\n  right: 230px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-danger {\n  right: 27px;\n  bottom: 37px;\n}\n.container-960 {\n  width: 960px;\n  margin: 0 auto;\n}\n.separator-line {\n  width: 100%;\n  height: 1px;\n  background: #e5e5e5;\n  margin-bottom: 10px;\n}\n#choose-preview {\n  padding: 50px 0;\n}\n#choose-preview h2 {\n  margin-left: 0;\n}\n#choose-preview h2 span.text-primary {\n  font-size: 26pt;\n  font-weight: bold;\n  top: auto;\n}\n#choose-preview .control-group {\n  margin: 0 0 5px;\n}\n#choose-preview select {\n  color: #000;\n}\n#choose-preview .heading-buttons {\n  margin-bottom: 10px;\n}\n#choose-preview .box {\n  padding: 10px;\n}\n#choose-preview .box .options {\n  display: none;\n}\n#choose-preview .box .actions a {\n  display: none;\n}\n#choose-preview .box .actions a.btn-active {\n  display: inline-block;\n}\n#choose-preview .box h3 {\n  text-transform: uppercase;\n  margin: 0 0 12px;\n}\n#choose-preview .box.active {\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n}\n#choose-preview .box.active .options {\n  display: block;\n}\n#choose-preview .box.active h3 {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n}\n#choose-preview.style-dark .well {\n  background: #ffffff;\n}\n#choose-preview.style-dark .box.active {\n  background: #fafafa;\n  border-color: #ebebeb;\n}\n#choose-preview.style-dark .box.active h3 {\n  text-shadow: none;\n  color: #fff;\n}\n#choose-preview.style-dark .box.active hr {\n  border-top-color: #ebebeb;\n}\nhtml.front .menu-hidden .navbar.main {\n  height: 99px;\n}\nhtml.front .navbar.main {\n  height: auto;\n  left: 0 !important;\n}\nhtml.front .navbar.main .secondary {\n  height: 49px;\n  line-height: 49px;\n  position: relative;\n  overflow: hidden;\n  background-color: #275b87;\n  border-bottom: 1px solid #346d9d;\n}\nhtml.front .navbar.main .secondary .appbrand {\n  font-weight: 700;\n  font-size: 25pt;\n  color: #fff;\n  text-decoration: none;\n  padding: 0 8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type {\n  border-left: none;\n  margin-left: -8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type > li:first-of-type {\n  border-left: none;\n}\nhtml.front .navbar.main li.search {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\nhtml.front .navbar.main li.glyphs + .glyphs {\n  padding-left: 0;\n}\nhtml.front .navbar.main li.glyphs {\n  border: none;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  margin-left: 0;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons {\n  color: #538fc1;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons i {\n  display: inline-block;\n  width: 32px;\n  vertical-align: top;\n}\nhtml.front .navbar.main li.glyphs ul li.active .glyphicons,\nhtml.front .navbar.main li.glyphs ul li:hover .glyphicons {\n  color: #fff;\n}\nhtml.front .navbar.main li.glyphs ul li.single,\nhtml.front .navbar.main li.glyphs ul li.single:last-child {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nhtml.front #content {\n  margin: 0;\n}\nhtml.front #footer {\n  background: #1f2123;\n  color: #919192;\n}\nhtml.front #footer a:not(.btn) {\n  color: #4a8bc2;\n}\nhtml.front #footer .copy {\n  background: #000;\n  color: #2a2a2a;\n  text-align: left;\n}\nhtml.front #footer .copy a {\n  color: #2a2a2a;\n  text-decoration: none;\n}\nhtml.front #footer .copy .appbrand {\n  position: absolute;\n  right: 10px;\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n}\nhtml.front #footer .box-generic {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  background: #191a1c;\n  border: none;\n}\nhtml.front #footer h4 {\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n  text-shadow: none;\n  color: #fff;\n  margin: 0 0 8px;\n}\nhtml.front #footer ul {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\nhtml.front #footer ul li {\n  display: block;\n  background: #191a1c;\n  margin: 0 0 1px;\n  line-height: 30px;\n  height: 30px;\n}\nhtml.front #footer ul li a {\n  line-height: 30px;\n  height: 30px;\n  display: block;\n  padding: 0 10px;\n}\nhtml.front #footer ul li:first-of-type {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nhtml.front #footer ul li:last-of-type {\n  margin: 0;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nhtml.front #footer ul.icons li {\n  padding: 0 10px 0 35px;\n}\nhtml.front #footer ul.icons li i:before {\n  top: 7px;\n  left: 10px;\n}\nhtml.front #contact_gmap {\n  height: 400px;\n}\nhtml.rtl {\n  /* Buttons */\n\n  /* Typography */\n\n  /* Widgets */\n\n  /* Tabs */\n\n  /* Form elements */\n\n  /* Tables */\n\n  /* Menus */\n\n  /* UI elements */\n\n  /* Layout */\n\n  /* Timeline */\n\n  /* Login */\n\n  /* Front */\n\n}\nhtml.rtl .btn-group.btn-block .leadcontainer {\n  left: 29px;\n  right: 0;\n}\nhtml.rtl .btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\nhtml.rtl .btn-group.btn-block .dropdown-toggle {\n  float: left;\n}\nhtml.rtl .btn-toggle-code {\n  left: 0;\n  right: auto;\n}\nhtml.rtl h3.glyphicons,\nhtml.rtl h2.glyphicons {\n  padding: 0 45px 0 0;\n}\nhtml.rtl h3.glyphicons i:before,\nhtml.rtl h2.glyphicons i:before {\n  left: auto;\n  right: 2px;\n}\nhtml.rtl .widget .widget-head .heading {\n  float: right;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons {\n  padding: 0 35px 0 0;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget .widget-head {\n  padding: 0 0 0 15px;\n}\nhtml.rtl .widget .details.pull-right {\n  float: left;\n}\nhtml.rtl .breadcrumb li.pull-right {\n  float: left;\n}\nhtml.rtl [data-toggle=\"collapse-widget\"] .collapse-toggle {\n  float: left;\n}\nhtml.rtl .widget-activity ul.list li > span {\n  float: right;\n}\nhtml.rtl .widget-activity ul.list li.double .activity-icon {\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .widget-activity ul.list li:hover:after,\nhtml.rtl .widget-activity ul.list li.highlight:after {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .widget .widget-body.list ul li .count {\n  float: left;\n}\nhtml.rtl .widget .widget-body.list ul li {\n  text-align: right;\n}\nhtml.rtl .widget .widget-body.list ul li .badge {\n  left: 8px;\n  right: auto;\n}\nhtml.rtl .media > .pull-left {\n  float: right;\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .media > .pull-right {\n  float: left;\n  margin-right: 10px;\n  margin-left: 0;\n}\nhtml.rtl .widget-chat .media small.author {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget-chat .media.right small.author {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .breadcrumb li a.glyphicons {\n  padding: 0 25px 0 0;\n}\nhtml.rtl .breadcrumb li a.glyphicons i:before {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li {\n  border-right: none;\n  border-left: 1px solid #dbdbdb;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:last-child {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 35px 0 15px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a i:before {\n  left: auto;\n  right: 5px;\n}\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li a.glyphicons,\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 38px 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  right: auto;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head {\n  padding: 0;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head ul li {\n  border-left: none;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head {\n  padding: 10px 10px 10px 0;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head ul li {\n  border: none;\n}\nhtml.rtl .widget.widget-tabs-icons-only .widget-head ul.pull-right {\n  float: left;\n}\nhtml.rtl .tabsbar.tabsbar-2 ul li a {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .tabsbar ul li a i {\n  float: right;\n}\nhtml.rtl .bootstrap-select.btn-group,\nhtml.rtl .bootstrap-select.btn-group[class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .select2-container-multi .select2-search-choice-close {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .select2-container-multi .select2-choices .select2-search-choice {\n  padding: 3px 18px 3px 5px;\n}\nhtml.rtl .select2-container img.flag,\nhtml.rtl .select2-drop img.flag {\n  padding: 0 0 0 10px;\n}\nhtml.rtl .radio,\nhtml.rtl .checkbox {\n  padding: 0;\n}\nhtml.rtl div.checker {\n  margin: 0 0 0 5px;\n}\nhtml.rtl div.dataTables_paginate {\n  float: left;\n}\nhtml.rtl div.dataTables_filter label {\n  float: left;\n}\nhtml.rtl .table td.right,\nhtml.rtl .table th.right {\n  text-align: left;\n}\nhtml.rtl .navbar.main .topnav > li.search form input {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n  padding: 0 35px 0 10px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  left: auto;\n  right: 7px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  left: auto;\n  right: 8px;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n}\nhtml.rtl .navbar.main .topnav > li {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav > li:first-child {\n  border-left: none;\n}\nhtml.rtl .navbar.main .topnav > li.search,\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  margin: 0;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n  box-shadow: -1px 0 0 0 #346d9d, 1px 0 0 0 #619aca;\n}\nhtml.rtl .navbar.main .topnav.pull-left {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav.pull-left:first-of-type {\n  padding-right: 8px;\n}\nhtml.rtl .navbar.main .topnav.pull-right {\n  float: left;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left: 1px solid #346d9d;\n}\nhtml.rtl .navbar.main .topnav.open .dropdown-menu {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .navbar.main .topnav .submenu-show.pull-right {\n  left: auto !important;\n  right: 100% !important;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right {\n  float: left;\n}\nhtml.rtl .ribbon-wrapper {\n  right: auto;\n  left: -3px;\n}\nhtml.rtl .ribbon-wrapper .ribbon {\n  -webkit-transform: rotate(-45deg);\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  left: auto;\n  right: -5px;\n}\nhtml.rtl .ribbon-wrapper .ribbon:after {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .ribbon-wrapper .ribbon:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .innerLR {\n  padding: 0 15px;\n  position: relative;\n}\nhtml.rtl .innerL {\n  padding-right: 15px;\n  padding-left: 0;\n  position: relative;\n}\nhtml.rtl .innerR {\n  padding-left: 15px;\n  padding-right: 0;\n  position: relative;\n}\nhtml.rtl .layout-timeline ul.timeline {\n  padding: 15px 30px 15px 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .date {\n  right: -70px;\n  left: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type {\n  right: -195px;\n  left: auto;\n  text-align: left;\n  padding: 0 0 0 35px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type i:before {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type .time {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:before {\n  left: -20px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:after {\n  left: -60px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .glyphicons.pencil {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 25px 5px 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .layout-timeline .nav-timeline > li > a.glyphicons i:before {\n  right: auto;\n  left: 8px;\n}\nhtml.rtl body.login #login .password {\n  float: left;\n}\nhtml.rtl.front .navbar.main .secondary .appbrand.pull-left {\n  float: right;\n}\nhtml.rtl.front .navbar.main .topnav.pull-right > li:last-child {\n  border-left: none;\n}\nhtml.rtl.front .navbar.main .secondary ul.topnav:first-of-type {\n  margin-left: 0;\n  padding-left: 8px;\n}\n/* Responsive */\n@media (max-width: 767px) {\n  html.rtl .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  html.rtl .layout-timeline ul.timeline > li .date {\n    right: auto;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type {\n    right: auto;\n    margin: 0 0 10px 60px;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type .time {\n    left: -40px;\n    right: auto;\n  }\n  html.rtl .navbar.main .topnav > li {\n    float: none;\n    border-right: none;\n  }\n  html.rtl .navbar.main .topnav > li.search {\n    box-shadow: none !important;\n    -moz-box-shadow: none !important;\n    -webkit-box-shadow: none !important;\n  }\n  html.rtl .navbar.main .topnav > li.search form button {\n    right: auto;\n    left: 0;\n  }\n  html.rtl .navbar.main .topnav,\n  html.rtl .navbar.main .topnav.pull-left,\n  html.rtl .navbar.main .topnav.pull-right {\n    float: none;\n  }\n  html.rtl .navbar.main .topnav.pull-left:first-of-type {\n    padding-right: 0;\n  }\n  html.rtl .navbar.main .topnav.open .dropdown-menu {\n    right: auto;\n    left: auto;\n  }\n  html.rtl .navbar.main .topnav .submenu-show.pull-right {\n    left: auto !important;\n    right: auto !important;\n  }\n}\n.lt-ie9 .widget .widget-body.list ul li {\n  border-bottom: 1px solid #efefef;\n}\n.lt-ie9 .navbar.main .btn-navbar {\n  float: left;\n}\n.lt-ie9 .navbar.main .topnav {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 42px;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  margin-top: 0;\n  top: 8px;\n  left: 5px;\n}\n.lt-ie9 .heading-buttons h1.glyphicons,\n.lt-ie9 .heading-buttons h2.glyphicons,\n.lt-ie9 .heading-buttons h3.glyphicons,\n.lt-ie9 .heading-buttons h4.glyphicons,\n.lt-ie9 .heading-buttons h5.glyphicons,\n.lt-ie9 .heading-buttons h6.glyphicons {\n  float: left;\n}\n.lt-ie9 #guided-tour .hide {\n  display: none !important;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on {\n  width: 24px;\n  padding-right: 0;\n  padding-left: 0;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i {\n  width: 24px;\n  height: 24px;\n  display: block;\n  vertical-align: middle;\n  line-height: 24px;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i:before {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n  top: auto;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  vertical-align: middle;\n  margin-top: 0;\n  top: 0;\n}\n.lt-ie9 #footer {\n  background: #222;\n}\n.lt-ie9 #footer .copy {\n  background: #111;\n}\n.lt-ie9 .ribbon-wrapper {\n  display: none;\n}\n/* Desktop wide */\n@media (min-width: 1200px) {\n  .navbar.main .topnav > li.search form input {\n    width: 155px;\n  }\n}\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px) {\n  body > .container-fluid.fixed {\n    width: 98%;\n    margin: 10px auto 10px;\n  }\n  .hidden-desktop-1 {\n    display: none !important;\n  }\n}\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px) {\n  .navbar.main .topnav > li.search {\n    margin-left: 10px !important;\n  }\n}\n@media (max-width: 979px) {\n  body > .container-fluid.fixed {\n    width: auto;\n    border: none;\n    margin: 0;\n  }\n}\n@media (max-width: 767px) {\n  body {\n    padding: 0;\n  }\n  .nav-tabs > li > a {\n    font-size: 10pt;\n  }\n  .nav-tabs > li > a,\n  .nav-pills > li > a {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n  .documentation .span3 .menu.affix {\n    position: relative;\n    top: 0;\n    width: auto;\n  }\n  .phone-margin.bottom {\n    margin: 0 0 10px;\n  }\n  .well {\n    padding: 5px;\n  }\n  .widget .widget-body {\n    padding: 5px;\n  }\n  .widget.margin-bottom-none {\n    margin-bottom: 10px;\n  }\n  .widget.widget-tabs .widget-head {\n    height: auto;\n    padding: 0;\n  }\n  .widget.widget-tabs .widget-head ul {\n    display: block;\n    border-right: none;\n    height: auto;\n  }\n  .widget.widget-tabs .widget-head ul li {\n    float: none;\n    display: block;\n    width: 100%;\n  }\n  .widget.widget-tabs-icons-only .widget-head {\n    height: auto;\n  }\n  .widget-activity ul.list li > span.ellipsis {\n    max-width: 60%;\n  }\n  .widget-activity ul.list li.double > span.ellipsis {\n    max-width: 75%;\n  }\n  .widget-gallery .nav {\n    display: none;\n  }\n  .widget-gallery.widget-gallery-slide .gallery {\n    width: auto;\n  }\n  .widget-chat .media .pull-left,\n  .widget-chat .media .pull-right {\n    margin: 0;\n  }\n  .widget-chat .chat-controls {\n    height: 60px;\n  }\n  .widget-chat {\n    padding-bottom: 90px !important;\n  }\n  .widget-chat .media small.author {\n    position: relative;\n    top: auto;\n    left: auto;\n    right: auto;\n    width: auto;\n  }\n  .widget-chat .media small.date {\n    border: none;\n  }\n  .tabsbar,\n  .tabsbar.tabsbar-2 {\n    height: auto;\n  }\n  .tabsbar ul,\n  .tabsbar.tabsbar-2 ul {\n    height: auto;\n  }\n  .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  .layout-timeline ul.timeline > li .date {\n    position: relative;\n    left: auto;\n    display: block;\n    top: auto;\n  }\n  .layout-timeline ul.timeline > li .type {\n    position: relative;\n    left: auto;\n    top: auto;\n    width: auto;\n    margin: 0 60px 10px 0;\n  }\n  .layout-timeline ul.timeline > li .type:before,\n  .layout-timeline ul.timeline > li .type:after {\n    display: none;\n  }\n  .layout-timeline ul.timeline > li .type .time {\n    top: 0;\n    right: -40px;\n  }\n  .layout-timeline ul.timeline > li.active .separator .type {\n    margin-bottom: 0;\n  }\n  .layout-timeline ul.timeline > li .separator .type {\n    top: auto;\n  }\n  .widget-activity ul.list {\n    margin: 0;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n    height: 35px;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head ul li {\n    float: left;\n    width: auto;\n  }\n  .media {\n    text-align: center;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    border: none;\n    padding-bottom: 0;\n    margin: 0;\n  }\n  .media img.pull-left,\n  .media img.pull-right {\n    display: inline-block;\n  }\n  .media blockquote {\n    padding: 0;\n    text-align: center;\n  }\n  .media blockquote.pull-right p,\n  .media blockquote.pull-right small {\n    text-align: center;\n  }\n  .menu-right #menu {\n    left: 0;\n    right: auto;\n  }\n  .menu-right.menu-hidden #content {\n    margin: 0;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n    width: auto;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n    display: none;\n  }\n  .row-merge.border-top,\n  .row-merge ~ .row-merge {\n    border-top: 1px solid #e5e5e5;\n  }\n  body.login #login {\n    padding: 50px 5px;\n  }\n  #gritter-notice-wrapper {\n    display: none !important;\n  }\n  .topnav .dropdown.submenu {\n    height: auto;\n  }\n  .topnav .dropdown.submenu .submenu-show {\n    position: relative;\n    margin: 0 !important;\n    top: auto !important;\n    left: auto !important;\n    right: auto !important;\n  }\n  .navbar.main {\n    height: auto;\n  }\n  .navbar.main .topnav {\n    border-left: none;\n    border-right: none;\n    float: none;\n  }\n  .navbar.main .topnav > li {\n    float: none;\n    border-top: 1px solid #346d9d;\n    border-bottom: 1px solid #619aca;\n  }\n  .navbar.main .topnav > li.active,\n  .navbar.main .topnav > li:hover,\n  .navbar.main .topnav > li.open {\n    padding: 8px;\n  }\n  .navbar.main .topnav > li.search form {\n    position: relative;\n  }\n  .navbar.main .topnav > li.search form input {\n    width: 90%;\n  }\n  .navbar.main .topnav > li.search form button {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n  .navbar.main .topnav > li:first-child {\n    border-top: none;\n  }\n  .navbar.main .topnav > li .dropdown.submenu .dropdown-menu {\n    position: relative;\n    float: none;\n    display: block !important;\n    padding: 0;\n    border: none;\n    border-top: 1px solid #f3f3f3;\n  }\n  .navbar.main .topnav:first-of-type > li:first-child {\n    margin-left: 38px;\n  }\n  .menu-hidden .navbar.main {\n    height: 50px;\n    overflow: hidden;\n  }\n  .container-960 {\n    width: auto;\n  }\n  #landing_1 [class*=\"span\"] {\n    padding: 0 5px;\n  }\n  #landing_1 .banner-1 {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item img {\n    min-height: 0;\n    height: auto;\n  }\n  #landing_1 .banner-1 .carousel-caption {\n    height: auto;\n  }\n  #landing_1 .banner {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3,\n  #landing_1 .banner .banner-wrapper.banner-1 p,\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    position: relative;\n    top: auto;\n    right: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    display: block;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 p {\n    margin: 0 0 5px;\n    text-align: center;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3 {\n    font-size: 12pt;\n    line-height: 46px;\n    text-align: center;\n  }\n  .social-large {\n    height: auto;\n  }\n  .social-large a {\n    float: none;\n    display: block;\n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n  }\n  .social-large a:last-child {\n    border: none;\n  }\n  #content .heading-mosaic {\n    height: auto !important;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: normal !important;\n  }\n}\n@media (max-width: 480px) {\n  h1,\n  h2,\n  h3 {\n    line-height: 30px;\n    font-size: 18pt;\n  }\n  h3.glyphicons i:before,\n  h2.glyphicons i:before {\n    font-size: 24px;\n    top: 3px;\n    left: 5px;\n  }\n  .heading-buttons .buttons {\n    margin-top: 10px;\n    float: none;\n    padding: 0 10px;\n    text-align: center;\n  }\n  .heading-buttons .buttons .btn {\n    margin: 0;\n    float: none;\n  }\n  .separator {\n    padding: 5px 0;\n    margin: 0;\n  }\n  .table-condensed th,\n  .table-condensed td {\n    padding: 4px 5px;\n  }\n  p.glyphicons {\n    padding: 5px 0 10px 55px;\n  }\n  p.glyphicons i:before {\n    color: #D67170;\n    font-size: 35pt;\n    top: 0;\n  }\n  p.glyphicons.right {\n    padding: 0 55px 0 0;\n  }\n}\n@media (max-width: 320px) {\n  .nav-tabs > li,\n  .nav-tabs > li > a,\n  .nav-tabs > li > a:hover {\n    display: block;\n    float: none;\n    margin: 0 0 -1px;\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li:hover {\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li,\n  .nav-tabs > li > a {\n    border-color: #E0D5C6;\n    background: #F5EADB;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n}\n#themer {\n  position: fixed;\n  top: 40%;\n  left: 50%;\n  z-index: 1000;\n  width: 260px;\n  margin: -50px 0 0 -130px;\n  text-align: left;\n}\n#themer.in {\n  overflow: visible;\n}\n#themer .close2 {\n  position: absolute;\n  background: #DDD;\n  color: #222;\n  font-weight: 600;\n  height: 20px;\n  top: 14px;\n  right: 10px;\n  line-height: 20px;\n  text-align: center;\n  font-size: 10pt;\n  padding: 0 10px;\n  cursor: pointer;\n}\n#themer .wrapper {\n  position: relative;\n  background: #292c2e;\n  border: 1px solid #2f3235;\n  padding: 15px;\n  color: #fafafa;\n}\n#themer .wrapper hr.separator {\n  margin: 10px 0;\n  border-top-color: #5e646b;\n  border-bottom-color: #2f3235;\n}\n#themer .wrapper h4 {\n  border-bottom: 1px solid #5e6060;\n  padding: 0 0 10px;\n  margin: 0 0 10px;\n  color: #fff;\n}\n#themer .wrapper h4 span {\n  color: #5e6060;\n  font-weight: normal;\n  font-size: 10pt;\n  text-shadow: none;\n}\n#themer .wrapper .btn {\n  margin: 0;\n}\n#themer .wrapper #themer-getcode-less {\n  margin: 0 0 0 5px;\n}\n#themer .wrapper ul {\n  margin: 0;\n  list-style: none;\n}\n#themer .wrapper ul li {\n  height: 25px;\n  line-height: 25px;\n  position: relative;\n}\n#themer .wrapper ul li .minicolors {\n  line-height: normal;\n  border: none;\n  top: 2px;\n  right: 0;\n  position: absolute;\n}\n#themer .wrapper ul li .minicolors input {\n  border: none;\n  height: 20px;\n  width: 69px;\n  background: #414649;\n  color: #fff;\n  font-size: 9pt;\n  padding: 0 5px;\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li .minicolors-swatch {\n  cursor: pointer;\n  width: 18px;\n  height: 18px;\n}\n#themer .wrapper ul li .minicolors-panel {\n  z-index: 10000;\n  top: 24px;\n}\n#themer .wrapper ul li .minicolors-position-left .minicolors-panel {\n  left: -152px;\n}\n#themer .wrapper ul li select {\n  position: absolute;\n  top: 3px;\n  right: 0;\n  width: 100px;\n  height: 20px;\n  line-height: normal;\n  padding: 0;\n  margin: 0;\n  font-size: 9pt;\n  background: #414649;\n  border: 1px solid #2F3235;\n  color: #fff;\n}\n#themer .wrapper ul li .link {\n  text-decoration: underline;\n  cursor: pointer;\n}\n#themer .wrapper ul li label {\n  margin: 0;\n  line-height: 25px;\n  font-size: 9pt;\n}\n#themer .wrapper ul li label input {\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li.advanced {\n  display: none;\n}\n#themer.themer-advanced .wrapper ul li.advanced {\n  display: block;\n}\n/* Reset box-shadow & borders */\n.btn,\n.widget,\n.widget-body,\n.widget-stats,\n.carousel-inner,\n.layout-timeline ul.timeline > li .date,\n.box-generic,\n.well,\n.accordion,\n.accordion .accordion-group {\n  border: none !important;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n/* Reset box-shadow only */\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input,\n.dropdown-menu,\n.table-bordered,\n.progress .bar,\n.popover {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n/* Reset borders only */\n.chat-controls,\n.thumb,\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.menubar,\n.widget.widget-tabs-double-2 > .widget-head,\n.widget.widget-tabs-double-2 .widget-body-regular {\n  border: none !important;\n}\n/* Reset padding only */\n.thumb {\n  padding: 0 !important;\n}\n/* Reset rounded corners */\n#content,\n.navbar.main,\n#wrapper,\n.btn,\n.widget,\n.widget-head,\n.widget-body,\n.carousel,\n.carousel-inner,\n.carousel .item,\n.carousel .item img,\n.nav li a,\n.thumb,\n.thumb img,\n.widget-stats,\n.label,\n.badge,\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.layout-timeline ul.timeline > li .date,\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input,\n.alert,\n.tooltip-inner,\n.popover,\n.pagination ul,\n.pagination a,\n.pager a,\n.table-bordered,\n.table-bordered td,\n.table-bordered th,\n.box-generic,\n.progress,\n.progress .bar,\n.add-on,\n.well,\n.accordion .accordion-heading .accordion-toggle,\n.accordion .accordion-inner,\npre,\n.widget-chat .chat-controls {\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n/* Fix top menu */\n.navbar.main .topnav > li > a {\n  padding: 0 10px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 9px;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  padding: 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  padding: 5px 10px;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 10px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 10px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px 9px !important;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px !important;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 6px 9px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after {\n  display: none;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu {\n  top: 45px;\n}\n/* input + btn */\n.input-append .btn {\n  height: 30px;\n}\n.fileupload-new .input-append .btn-file {\n  height: 22px;\n}\n/* tabs */\n.tabsbar ul li a {\n  background: #f9f9f9;\n}\n.tabsbar:not(.tabsbar-2) ul li.active a {\n  background: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border-bottom: 1px solid #dbdbdb !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.css",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n.icon-large {\n  font-size: 1.3333333333333333em;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n.nav [class^=\"icon-\"],\n.nav [class*=\" icon-\"] {\n  vertical-align: inherit;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n}\n.nav [class^=\"icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  vertical-align: -25%;\n}\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large {\n  line-height: .75em;\n  margin-top: -7px;\n  padding-top: 5px;\n  margin-bottom: -5px;\n  padding-bottom: 4px;\n}\n.btn [class^=\"icon-\"].pull-left,\n.btn [class*=\" icon-\"].pull-left,\n.btn [class^=\"icon-\"].pull-right,\n.btn [class*=\" icon-\"].pull-right {\n  vertical-align: inherit;\n}\n.btn [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large {\n  margin-top: -0.5em;\n}\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n.icon-glass {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf000;');\n}\n.icon-music {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf001;');\n}\n.icon-search {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf002;');\n}\n.icon-envelope-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf003;');\n}\n.icon-heart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf004;');\n}\n.icon-star {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf005;');\n}\n.icon-star-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf006;');\n}\n.icon-user {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf007;');\n}\n.icon-film {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;');\n}\n.icon-th-large {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;');\n}\n.icon-th {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;');\n}\n.icon-th-list {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;');\n}\n.icon-ok {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00c;');\n}\n.icon-remove {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00d;');\n}\n.icon-zoom-in {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00e;');\n}\n.icon-zoom-out {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf010;');\n}\n.icon-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');\n}\n.icon-power-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');\n}\n.icon-signal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf012;');\n}\n.icon-cog {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');\n}\n.icon-trash {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf014;');\n}\n.icon-home {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf015;');\n}\n.icon-file-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf016;');\n}\n.icon-time {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf017;');\n}\n.icon-road {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf018;');\n}\n.icon-download-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf019;');\n}\n.icon-download {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01a;');\n}\n.icon-upload {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01b;');\n}\n.icon-inbox {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01c;');\n}\n.icon-play-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01d;');\n}\n.icon-repeat {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');\n}\n.icon-rotate-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');\n}\n.icon-refresh {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf021;');\n}\n.icon-list-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf022;');\n}\n.icon-lock {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf023;');\n}\n.icon-flag {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf024;');\n}\n.icon-headphones {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf025;');\n}\n.icon-volume-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf026;');\n}\n.icon-volume-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf027;');\n}\n.icon-volume-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf028;');\n}\n.icon-qrcode {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf029;');\n}\n.icon-barcode {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02a;');\n}\n.icon-tag {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02b;');\n}\n.icon-tags {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02c;');\n}\n.icon-book {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02d;');\n}\n.icon-bookmark {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02e;');\n}\n.icon-print {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02f;');\n}\n.icon-camera {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf030;');\n}\n.icon-font {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf031;');\n}\n.icon-bold {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf032;');\n}\n.icon-italic {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf033;');\n}\n.icon-text-height {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf034;');\n}\n.icon-text-width {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf035;');\n}\n.icon-align-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf036;');\n}\n.icon-align-center {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf037;');\n}\n.icon-align-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf038;');\n}\n.icon-align-justify {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf039;');\n}\n.icon-list {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03a;');\n}\n.icon-indent-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03b;');\n}\n.icon-indent-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03c;');\n}\n.icon-facetime-video {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03d;');\n}\n.icon-picture {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03e;');\n}\n.icon-pencil {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf040;');\n}\n.icon-map-marker {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf041;');\n}\n.icon-adjust {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf042;');\n}\n.icon-tint {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf043;');\n}\n.icon-edit {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf044;');\n}\n.icon-share {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf045;');\n}\n.icon-check {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf046;');\n}\n.icon-move {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf047;');\n}\n.icon-step-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf048;');\n}\n.icon-fast-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf049;');\n}\n.icon-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04a;');\n}\n.icon-play {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04b;');\n}\n.icon-pause {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04c;');\n}\n.icon-stop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04d;');\n}\n.icon-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04e;');\n}\n.icon-fast-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf050;');\n}\n.icon-step-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf051;');\n}\n.icon-eject {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf052;');\n}\n.icon-chevron-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf053;');\n}\n.icon-chevron-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf054;');\n}\n.icon-plus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf055;');\n}\n.icon-minus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf056;');\n}\n.icon-remove-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf057;');\n}\n.icon-ok-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf058;');\n}\n.icon-question-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf059;');\n}\n.icon-info-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05a;');\n}\n.icon-screenshot {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05b;');\n}\n.icon-remove-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05c;');\n}\n.icon-ok-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05d;');\n}\n.icon-ban-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05e;');\n}\n.icon-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf060;');\n}\n.icon-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf061;');\n}\n.icon-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf062;');\n}\n.icon-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf063;');\n}\n.icon-share-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');\n}\n.icon-mail-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');\n}\n.icon-resize-full {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf065;');\n}\n.icon-resize-small {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf066;');\n}\n.icon-plus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf067;');\n}\n.icon-minus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf068;');\n}\n.icon-asterisk {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf069;');\n}\n.icon-exclamation-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06a;');\n}\n.icon-gift {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06b;');\n}\n.icon-leaf {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06c;');\n}\n.icon-fire {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06d;');\n}\n.icon-eye-open {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06e;');\n}\n.icon-eye-close {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf070;');\n}\n.icon-warning-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf071;');\n}\n.icon-plane {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf072;');\n}\n.icon-calendar {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf073;');\n}\n.icon-random {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf074;');\n}\n.icon-comment {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf075;');\n}\n.icon-magnet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf076;');\n}\n.icon-chevron-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf077;');\n}\n.icon-chevron-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf078;');\n}\n.icon-retweet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf079;');\n}\n.icon-shopping-cart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07a;');\n}\n.icon-folder-close {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07b;');\n}\n.icon-folder-open {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07c;');\n}\n.icon-resize-vertical {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07d;');\n}\n.icon-resize-horizontal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07e;');\n}\n.icon-bar-chart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf080;');\n}\n.icon-twitter-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf081;');\n}\n.icon-facebook-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf082;');\n}\n.icon-camera-retro {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf083;');\n}\n.icon-key {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf084;');\n}\n.icon-cogs {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');\n}\n.icon-comments {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf086;');\n}\n.icon-thumbs-up-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf087;');\n}\n.icon-thumbs-down-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf088;');\n}\n.icon-star-half {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf089;');\n}\n.icon-heart-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08a;');\n}\n.icon-signout {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08b;');\n}\n.icon-linkedin-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08c;');\n}\n.icon-pushpin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08d;');\n}\n.icon-external-link {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;');\n}\n.icon-signin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf090;');\n}\n.icon-trophy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf091;');\n}\n.icon-github-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf092;');\n}\n.icon-upload-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf093;');\n}\n.icon-lemon {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf094;');\n}\n.icon-phone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf095;');\n}\n.icon-check-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');\n}\n.icon-unchecked {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');\n}\n.icon-bookmark-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;');\n}\n.icon-phone-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf098;');\n}\n.icon-twitter {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf099;');\n}\n.icon-facebook {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09a;');\n}\n.icon-github {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09b;');\n}\n.icon-unlock {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09c;');\n}\n.icon-credit-card {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09d;');\n}\n.icon-rss {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09e;');\n}\n.icon-hdd {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a0;');\n}\n.icon-bullhorn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a1;');\n}\n.icon-bell {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a2;');\n}\n.icon-certificate {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a3;');\n}\n.icon-hand-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a4;');\n}\n.icon-hand-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a5;');\n}\n.icon-hand-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a6;');\n}\n.icon-hand-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a7;');\n}\n.icon-circle-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a8;');\n}\n.icon-circle-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a9;');\n}\n.icon-circle-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0aa;');\n}\n.icon-circle-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ab;');\n}\n.icon-globe {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ac;');\n}\n.icon-wrench {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ad;');\n}\n.icon-tasks {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;');\n}\n.icon-filter {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;');\n}\n.icon-briefcase {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b1;');\n}\n.icon-fullscreen {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;');\n}\n.icon-group {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c0;');\n}\n.icon-link {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c1;');\n}\n.icon-cloud {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c2;');\n}\n.icon-beaker {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c3;');\n}\n.icon-cut {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c4;');\n}\n.icon-copy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c5;');\n}\n.icon-paper-clip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');\n}\n.icon-paperclip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');\n}\n.icon-save {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c7;');\n}\n.icon-sign-blank {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c8;');\n}\n.icon-reorder {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;');\n}\n.icon-list-ul {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;');\n}\n.icon-list-ol {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;');\n}\n.icon-strikethrough {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;');\n}\n.icon-underline {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;');\n}\n.icon-table {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;');\n}\n.icon-magic {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d0;');\n}\n.icon-truck {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d1;');\n}\n.icon-pinterest {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d2;');\n}\n.icon-pinterest-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d3;');\n}\n.icon-google-plus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d4;');\n}\n.icon-google-plus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d5;');\n}\n.icon-money {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d6;');\n}\n.icon-caret-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d7;');\n}\n.icon-caret-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d8;');\n}\n.icon-caret-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d9;');\n}\n.icon-caret-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0da;');\n}\n.icon-columns {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;');\n}\n.icon-sort {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dc;');\n}\n.icon-sort-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dd;');\n}\n.icon-sort-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0de;');\n}\n.icon-envelope {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;');\n}\n.icon-linkedin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e1;');\n}\n.icon-undo {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');\n}\n.icon-rotate-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');\n}\n.icon-legal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e3;');\n}\n.icon-dashboard {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e4;');\n}\n.icon-comment-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;');\n}\n.icon-comments-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e6;');\n}\n.icon-bolt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e7;');\n}\n.icon-sitemap {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;');\n}\n.icon-umbrella {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e9;');\n}\n.icon-paste {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ea;');\n}\n.icon-lightbulb {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0eb;');\n}\n.icon-exchange {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ec;');\n}\n.icon-cloud-download {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;');\n}\n.icon-cloud-upload {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;');\n}\n.icon-user-md {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f0;');\n}\n.icon-stethoscope {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f1;');\n}\n.icon-suitcase {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f2;');\n}\n.icon-bell-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;');\n}\n.icon-coffee {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f4;');\n}\n.icon-food {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f5;');\n}\n.icon-file-text-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f6;');\n}\n.icon-building {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f7;');\n}\n.icon-hospital {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f8;');\n}\n.icon-ambulance {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f9;');\n}\n.icon-medkit {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fa;');\n}\n.icon-fighter-jet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fb;');\n}\n.icon-beer {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fc;');\n}\n.icon-h-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fd;');\n}\n.icon-plus-sign-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;');\n}\n.icon-double-angle-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf100;');\n}\n.icon-double-angle-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf101;');\n}\n.icon-double-angle-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf102;');\n}\n.icon-double-angle-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf103;');\n}\n.icon-angle-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf104;');\n}\n.icon-angle-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf105;');\n}\n.icon-angle-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf106;');\n}\n.icon-angle-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf107;');\n}\n.icon-desktop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf108;');\n}\n.icon-laptop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf109;');\n}\n.icon-tablet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10a;');\n}\n.icon-mobile-phone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10b;');\n}\n.icon-circle-blank {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10c;');\n}\n.icon-quote-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;');\n}\n.icon-quote-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;');\n}\n.icon-spinner {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf110;');\n}\n.icon-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf111;');\n}\n.icon-reply {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');\n}\n.icon-mail-reply {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');\n}\n.icon-github-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf113;');\n}\n.icon-folder-close-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf114;');\n}\n.icon-folder-open-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf115;');\n}\n.icon-expand-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf116;');\n}\n.icon-collapse-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf117;');\n}\n.icon-smile {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;');\n}\n.icon-frown {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf119;');\n}\n.icon-meh {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11a;');\n}\n.icon-gamepad {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11b;');\n}\n.icon-keyboard {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11c;');\n}\n.icon-flag-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11d;');\n}\n.icon-flag-checkered {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11e;');\n}\n.icon-terminal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf120;');\n}\n.icon-code {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;');\n}\n.icon-reply-all {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');\n}\n.icon-mail-reply-all {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');\n}\n.icon-star-half-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');\n}\n.icon-star-half-full {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');\n}\n.icon-location-arrow {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf124;');\n}\n.icon-crop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;');\n}\n.icon-code-fork {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf126;');\n}\n.icon-unlink {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf127;');\n}\n.icon-question {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;');\n}\n.icon-info {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;');\n}\n.icon-exclamation {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;');\n}\n.icon-superscript {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;');\n}\n.icon-subscript {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;');\n}\n.icon-eraser {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12d;');\n}\n.icon-puzzle-piece {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12e;');\n}\n.icon-microphone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf130;');\n}\n.icon-microphone-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf131;');\n}\n.icon-shield {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf132;');\n}\n.icon-calendar-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf133;');\n}\n.icon-fire-extinguisher {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf134;');\n}\n.icon-rocket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf135;');\n}\n.icon-maxcdn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf136;');\n}\n.icon-chevron-sign-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf137;');\n}\n.icon-chevron-sign-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf138;');\n}\n.icon-chevron-sign-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf139;');\n}\n.icon-chevron-sign-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13a;');\n}\n.icon-html5 {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13b;');\n}\n.icon-css3 {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13c;');\n}\n.icon-anchor {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13d;');\n}\n.icon-unlock-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;');\n}\n.icon-bullseye {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf140;');\n}\n.icon-ellipsis-horizontal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;');\n}\n.icon-ellipsis-vertical {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;');\n}\n.icon-rss-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf143;');\n}\n.icon-play-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;');\n}\n.icon-ticket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf145;');\n}\n.icon-minus-sign-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;');\n}\n.icon-check-minus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf147;');\n}\n.icon-level-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf148;');\n}\n.icon-level-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf149;');\n}\n.icon-check-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;');\n}\n.icon-edit-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;');\n}\n.icon-external-link-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;');\n}\n.icon-share-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;');\n}\n.icon-compass {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14e;');\n}\n.icon-collapse {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf150;');\n}\n.icon-collapse-top {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf151;');\n}\n.icon-expand {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf152;');\n}\n.icon-eur {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');\n}\n.icon-euro {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');\n}\n.icon-gbp {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf154;');\n}\n.icon-usd {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');\n}\n.icon-dollar {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');\n}\n.icon-inr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');\n}\n.icon-rupee {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');\n}\n.icon-jpy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');\n}\n.icon-yen {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');\n}\n.icon-cny {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');\n}\n.icon-renminbi {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');\n}\n.icon-krw {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');\n}\n.icon-won {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');\n}\n.icon-btc {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');\n}\n.icon-bitcoin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');\n}\n.icon-file {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;');\n}\n.icon-file-text {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;');\n}\n.icon-sort-by-alphabet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15d;');\n}\n.icon-sort-by-alphabet-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15e;');\n}\n.icon-sort-by-attributes {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf160;');\n}\n.icon-sort-by-attributes-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf161;');\n}\n.icon-sort-by-order {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf162;');\n}\n.icon-sort-by-order-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf163;');\n}\n.icon-thumbs-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;');\n}\n.icon-thumbs-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;');\n}\n.icon-youtube-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf166;');\n}\n.icon-youtube {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf167;');\n}\n.icon-xing {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf168;');\n}\n.icon-xing-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf169;');\n}\n.icon-youtube-play {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16a;');\n}\n.icon-dropbox {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16b;');\n}\n.icon-stackexchange {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16c;');\n}\n.icon-instagram {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16d;');\n}\n.icon-flickr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16e;');\n}\n.icon-adn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf170;');\n}\n.icon-bitbucket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf171;');\n}\n.icon-bitbucket-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf172;');\n}\n.icon-tumblr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf173;');\n}\n.icon-tumblr-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf174;');\n}\n.icon-long-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf175;');\n}\n.icon-long-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf176;');\n}\n.icon-long-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf177;');\n}\n.icon-long-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf178;');\n}\n.icon-apple {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf179;');\n}\n.icon-windows {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17a;');\n}\n.icon-android {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17b;');\n}\n.icon-linux {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17c;');\n}\n.icon-dribble {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17d;');\n}\n.icon-skype {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17e;');\n}\n.icon-foursquare {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf180;');\n}\n.icon-trello {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf181;');\n}\n.icon-female {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf182;');\n}\n.icon-male {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf183;');\n}\n.icon-gittip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf184;');\n}\n.icon-sun {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf185;');\n}\n.icon-moon {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf186;');\n}\n.icon-archive {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf187;');\n}\n.icon-bug {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf188;');\n}\n.icon-vk {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf189;');\n}\n.icon-weibo {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18a;');\n}\n.icon-renren {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18b;');\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/css/font-awesome.css",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../font/fontawesome-webfont.eot?v=3.2.0');\n  src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.0') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.0') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.0') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.0') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n/* FONT AWESOME CORE\n * -------------------------- */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em;\n}\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 1.3333333333333333em;\n}\n/* makes sure icons active on rollover in links */\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  display: inline;\n}\n/* increased font size for icon-large */\n[class^=\"icon-\"].icon-fixed-width,\n[class*=\" icon-\"].icon-fixed-width {\n  display: inline-block;\n  width: 1.1428571428571428em;\n  text-align: right;\n  padding-right: 0.2857142857142857em;\n}\n[class^=\"icon-\"].icon-fixed-width.icon-large,\n[class*=\" icon-\"].icon-fixed-width.icon-large {\n  width: 1.4285714285714286em;\n}\n.icons-ul {\n  margin-left: 2.142857142857143em;\n  list-style-type: none;\n}\n.icons-ul > li {\n  position: relative;\n}\n.icons-ul .icon-li {\n  position: absolute;\n  left: -2.142857142857143em;\n  width: 2.142857142857143em;\n  text-align: center;\n  line-height: inherit;\n}\n[class^=\"icon-\"].hide,\n[class*=\" icon-\"].hide {\n  display: none;\n}\n.icon-muted {\n  color: #eeeeee;\n}\n.icon-light {\n  color: #ffffff;\n}\n.icon-dark {\n  color: #333333;\n}\n.icon-border {\n  border: solid 1px #eeeeee;\n  padding: .2em .25em .15em;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n.icon-2x {\n  font-size: 2em;\n}\n.icon-2x.icon-border {\n  border-width: 2px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.icon-3x {\n  font-size: 3em;\n}\n.icon-3x.icon-border {\n  border-width: 3px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n}\n.icon-4x {\n  font-size: 4em;\n}\n.icon-4x.icon-border {\n  border-width: 4px;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n}\n.icon-5x {\n  font-size: 5em;\n}\n.icon-5x.icon-border {\n  border-width: 5px;\n  -webkit-border-radius: 7px;\n  -moz-border-radius: 7px;\n  border-radius: 7px;\n}\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n[class^=\"icon-\"].pull-left,\n[class*=\" icon-\"].pull-left {\n  margin-right: .3em;\n}\n[class^=\"icon-\"].pull-right,\n[class*=\" icon-\"].pull-right {\n  margin-left: .3em;\n}\n/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n/* keeps Bootstrap styles with and without icons the same */\n.btn [class^=\"icon-\"].icon-large,\n.nav [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].icon-spin,\n.nav [class^=\"icon-\"].icon-spin,\n.btn [class*=\" icon-\"].icon-spin,\n.nav [class*=\" icon-\"].icon-spin {\n  display: inline-block;\n}\n.nav-tabs [class^=\"icon-\"],\n.nav-pills [class^=\"icon-\"],\n.nav-tabs [class*=\" icon-\"],\n.nav-pills [class*=\" icon-\"],\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].pull-left.icon-2x,\n.btn [class*=\" icon-\"].pull-left.icon-2x,\n.btn [class^=\"icon-\"].pull-right.icon-2x,\n.btn [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .18em;\n}\n.btn [class^=\"icon-\"].icon-spin.icon-large,\n.btn [class*=\" icon-\"].icon-spin.icon-large {\n  line-height: .8em;\n}\n.btn.btn-small [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-small [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .25em;\n}\n.btn.btn-large [class^=\"icon-\"],\n.btn.btn-large [class*=\" icon-\"] {\n  margin-top: 0;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .05em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x {\n  margin-right: .2em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-left: .2em;\n}\n/* EXTRAS\n * -------------------------- */\n/* Stacked and layered icon */\n.icon-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: -35%;\n}\n.icon-stack [class^=\"icon-\"],\n.icon-stack [class*=\" icon-\"] {\n  display: block;\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  font-size: 1em;\n  line-height: inherit;\n  *line-height: 2em;\n}\n.icon-stack .icon-stack-base {\n  font-size: 2em;\n  *line-height: 1em;\n}\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n@-moz-keyframes spin {\n  0% {\n    -moz-transform: rotate(0deg);\n  }\n  100% {\n    -moz-transform: rotate(359deg);\n  }\n}\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n  }\n}\n@-o-keyframes spin {\n  0% {\n    -o-transform: rotate(0deg);\n  }\n  100% {\n    -o-transform: rotate(359deg);\n  }\n}\n@-ms-keyframes spin {\n  0% {\n    -ms-transform: rotate(0deg);\n  }\n  100% {\n    -ms-transform: rotate(359deg);\n  }\n}\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(359deg);\n  }\n}\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n/* ensure rotation occurs inside anchor tags */\na .icon-rotate-90:before,\na .icon-rotate-180:before,\na .icon-rotate-270:before,\na .icon-flip-horizontal:before,\na .icon-flip-vertical:before {\n  display: inline-block;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.icon-glass:before {\n  content: \"\\f000\";\n}\n.icon-music:before {\n  content: \"\\f001\";\n}\n.icon-search:before {\n  content: \"\\f002\";\n}\n.icon-envelope-alt:before {\n  content: \"\\f003\";\n}\n.icon-heart:before {\n  content: \"\\f004\";\n}\n.icon-star:before {\n  content: \"\\f005\";\n}\n.icon-star-empty:before {\n  content: \"\\f006\";\n}\n.icon-user:before {\n  content: \"\\f007\";\n}\n.icon-film:before {\n  content: \"\\f008\";\n}\n.icon-th-large:before {\n  content: \"\\f009\";\n}\n.icon-th:before {\n  content: \"\\f00a\";\n}\n.icon-th-list:before {\n  content: \"\\f00b\";\n}\n.icon-ok:before {\n  content: \"\\f00c\";\n}\n.icon-remove:before {\n  content: \"\\f00d\";\n}\n.icon-zoom-in:before {\n  content: \"\\f00e\";\n}\n.icon-zoom-out:before {\n  content: \"\\f010\";\n}\n.icon-power-off:before,\n.icon-off:before {\n  content: \"\\f011\";\n}\n.icon-signal:before {\n  content: \"\\f012\";\n}\n.icon-cog:before {\n  content: \"\\f013\";\n}\n.icon-trash:before {\n  content: \"\\f014\";\n}\n.icon-home:before {\n  content: \"\\f015\";\n}\n.icon-file-alt:before {\n  content: \"\\f016\";\n}\n.icon-time:before {\n  content: \"\\f017\";\n}\n.icon-road:before {\n  content: \"\\f018\";\n}\n.icon-download-alt:before {\n  content: \"\\f019\";\n}\n.icon-download:before {\n  content: \"\\f01a\";\n}\n.icon-upload:before {\n  content: \"\\f01b\";\n}\n.icon-inbox:before {\n  content: \"\\f01c\";\n}\n.icon-play-circle:before {\n  content: \"\\f01d\";\n}\n.icon-rotate-right:before,\n.icon-repeat:before {\n  content: \"\\f01e\";\n}\n.icon-refresh:before {\n  content: \"\\f021\";\n}\n.icon-list-alt:before {\n  content: \"\\f022\";\n}\n.icon-lock:before {\n  content: \"\\f023\";\n}\n.icon-flag:before {\n  content: \"\\f024\";\n}\n.icon-headphones:before {\n  content: \"\\f025\";\n}\n.icon-volume-off:before {\n  content: \"\\f026\";\n}\n.icon-volume-down:before {\n  content: \"\\f027\";\n}\n.icon-volume-up:before {\n  content: \"\\f028\";\n}\n.icon-qrcode:before {\n  content: \"\\f029\";\n}\n.icon-barcode:before {\n  content: \"\\f02a\";\n}\n.icon-tag:before {\n  content: \"\\f02b\";\n}\n.icon-tags:before {\n  content: \"\\f02c\";\n}\n.icon-book:before {\n  content: \"\\f02d\";\n}\n.icon-bookmark:before {\n  content: \"\\f02e\";\n}\n.icon-print:before {\n  content: \"\\f02f\";\n}\n.icon-camera:before {\n  content: \"\\f030\";\n}\n.icon-font:before {\n  content: \"\\f031\";\n}\n.icon-bold:before {\n  content: \"\\f032\";\n}\n.icon-italic:before {\n  content: \"\\f033\";\n}\n.icon-text-height:before {\n  content: \"\\f034\";\n}\n.icon-text-width:before {\n  content: \"\\f035\";\n}\n.icon-align-left:before {\n  content: \"\\f036\";\n}\n.icon-align-center:before {\n  content: \"\\f037\";\n}\n.icon-align-right:before {\n  content: \"\\f038\";\n}\n.icon-align-justify:before {\n  content: \"\\f039\";\n}\n.icon-list:before {\n  content: \"\\f03a\";\n}\n.icon-indent-left:before {\n  content: \"\\f03b\";\n}\n.icon-indent-right:before {\n  content: \"\\f03c\";\n}\n.icon-facetime-video:before {\n  content: \"\\f03d\";\n}\n.icon-picture:before {\n  content: \"\\f03e\";\n}\n.icon-pencil:before {\n  content: \"\\f040\";\n}\n.icon-map-marker:before {\n  content: \"\\f041\";\n}\n.icon-adjust:before {\n  content: \"\\f042\";\n}\n.icon-tint:before {\n  content: \"\\f043\";\n}\n.icon-edit:before {\n  content: \"\\f044\";\n}\n.icon-share:before {\n  content: \"\\f045\";\n}\n.icon-check:before {\n  content: \"\\f046\";\n}\n.icon-move:before {\n  content: \"\\f047\";\n}\n.icon-step-backward:before {\n  content: \"\\f048\";\n}\n.icon-fast-backward:before {\n  content: \"\\f049\";\n}\n.icon-backward:before {\n  content: \"\\f04a\";\n}\n.icon-play:before {\n  content: \"\\f04b\";\n}\n.icon-pause:before {\n  content: \"\\f04c\";\n}\n.icon-stop:before {\n  content: \"\\f04d\";\n}\n.icon-forward:before {\n  content: \"\\f04e\";\n}\n.icon-fast-forward:before {\n  content: \"\\f050\";\n}\n.icon-step-forward:before {\n  content: \"\\f051\";\n}\n.icon-eject:before {\n  content: \"\\f052\";\n}\n.icon-chevron-left:before {\n  content: \"\\f053\";\n}\n.icon-chevron-right:before {\n  content: \"\\f054\";\n}\n.icon-plus-sign:before {\n  content: \"\\f055\";\n}\n.icon-minus-sign:before {\n  content: \"\\f056\";\n}\n.icon-remove-sign:before {\n  content: \"\\f057\";\n}\n.icon-ok-sign:before {\n  content: \"\\f058\";\n}\n.icon-question-sign:before {\n  content: \"\\f059\";\n}\n.icon-info-sign:before {\n  content: \"\\f05a\";\n}\n.icon-screenshot:before {\n  content: \"\\f05b\";\n}\n.icon-remove-circle:before {\n  content: \"\\f05c\";\n}\n.icon-ok-circle:before {\n  content: \"\\f05d\";\n}\n.icon-ban-circle:before {\n  content: \"\\f05e\";\n}\n.icon-arrow-left:before {\n  content: \"\\f060\";\n}\n.icon-arrow-right:before {\n  content: \"\\f061\";\n}\n.icon-arrow-up:before {\n  content: \"\\f062\";\n}\n.icon-arrow-down:before {\n  content: \"\\f063\";\n}\n.icon-mail-forward:before,\n.icon-share-alt:before {\n  content: \"\\f064\";\n}\n.icon-resize-full:before {\n  content: \"\\f065\";\n}\n.icon-resize-small:before {\n  content: \"\\f066\";\n}\n.icon-plus:before {\n  content: \"\\f067\";\n}\n.icon-minus:before {\n  content: \"\\f068\";\n}\n.icon-asterisk:before {\n  content: \"\\f069\";\n}\n.icon-exclamation-sign:before {\n  content: \"\\f06a\";\n}\n.icon-gift:before {\n  content: \"\\f06b\";\n}\n.icon-leaf:before {\n  content: \"\\f06c\";\n}\n.icon-fire:before {\n  content: \"\\f06d\";\n}\n.icon-eye-open:before {\n  content: \"\\f06e\";\n}\n.icon-eye-close:before {\n  content: \"\\f070\";\n}\n.icon-warning-sign:before {\n  content: \"\\f071\";\n}\n.icon-plane:before {\n  content: \"\\f072\";\n}\n.icon-calendar:before {\n  content: \"\\f073\";\n}\n.icon-random:before {\n  content: \"\\f074\";\n}\n.icon-comment:before {\n  content: \"\\f075\";\n}\n.icon-magnet:before {\n  content: \"\\f076\";\n}\n.icon-chevron-up:before {\n  content: \"\\f077\";\n}\n.icon-chevron-down:before {\n  content: \"\\f078\";\n}\n.icon-retweet:before {\n  content: \"\\f079\";\n}\n.icon-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.icon-folder-close:before {\n  content: \"\\f07b\";\n}\n.icon-folder-open:before {\n  content: \"\\f07c\";\n}\n.icon-resize-vertical:before {\n  content: \"\\f07d\";\n}\n.icon-resize-horizontal:before {\n  content: \"\\f07e\";\n}\n.icon-bar-chart:before {\n  content: \"\\f080\";\n}\n.icon-twitter-sign:before {\n  content: \"\\f081\";\n}\n.icon-facebook-sign:before {\n  content: \"\\f082\";\n}\n.icon-camera-retro:before {\n  content: \"\\f083\";\n}\n.icon-key:before {\n  content: \"\\f084\";\n}\n.icon-cogs:before {\n  content: \"\\f085\";\n}\n.icon-comments:before {\n  content: \"\\f086\";\n}\n.icon-thumbs-up-alt:before {\n  content: \"\\f087\";\n}\n.icon-thumbs-down-alt:before {\n  content: \"\\f088\";\n}\n.icon-star-half:before {\n  content: \"\\f089\";\n}\n.icon-heart-empty:before {\n  content: \"\\f08a\";\n}\n.icon-signout:before {\n  content: \"\\f08b\";\n}\n.icon-linkedin-sign:before {\n  content: \"\\f08c\";\n}\n.icon-pushpin:before {\n  content: \"\\f08d\";\n}\n.icon-external-link:before {\n  content: \"\\f08e\";\n}\n.icon-signin:before {\n  content: \"\\f090\";\n}\n.icon-trophy:before {\n  content: \"\\f091\";\n}\n.icon-github-sign:before {\n  content: \"\\f092\";\n}\n.icon-upload-alt:before {\n  content: \"\\f093\";\n}\n.icon-lemon:before {\n  content: \"\\f094\";\n}\n.icon-phone:before {\n  content: \"\\f095\";\n}\n.icon-unchecked:before,\n.icon-check-empty:before {\n  content: \"\\f096\";\n}\n.icon-bookmark-empty:before {\n  content: \"\\f097\";\n}\n.icon-phone-sign:before {\n  content: \"\\f098\";\n}\n.icon-twitter:before {\n  content: \"\\f099\";\n}\n.icon-facebook:before {\n  content: \"\\f09a\";\n}\n.icon-github:before {\n  content: \"\\f09b\";\n}\n.icon-unlock:before {\n  content: \"\\f09c\";\n}\n.icon-credit-card:before {\n  content: \"\\f09d\";\n}\n.icon-rss:before {\n  content: \"\\f09e\";\n}\n.icon-hdd:before {\n  content: \"\\f0a0\";\n}\n.icon-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.icon-bell:before {\n  content: \"\\f0a2\";\n}\n.icon-certificate:before {\n  content: \"\\f0a3\";\n}\n.icon-hand-right:before {\n  content: \"\\f0a4\";\n}\n.icon-hand-left:before {\n  content: \"\\f0a5\";\n}\n.icon-hand-up:before {\n  content: \"\\f0a6\";\n}\n.icon-hand-down:before {\n  content: \"\\f0a7\";\n}\n.icon-circle-arrow-left:before {\n  content: \"\\f0a8\";\n}\n.icon-circle-arrow-right:before {\n  content: \"\\f0a9\";\n}\n.icon-circle-arrow-up:before {\n  content: \"\\f0aa\";\n}\n.icon-circle-arrow-down:before {\n  content: \"\\f0ab\";\n}\n.icon-globe:before {\n  content: \"\\f0ac\";\n}\n.icon-wrench:before {\n  content: \"\\f0ad\";\n}\n.icon-tasks:before {\n  content: \"\\f0ae\";\n}\n.icon-filter:before {\n  content: \"\\f0b0\";\n}\n.icon-briefcase:before {\n  content: \"\\f0b1\";\n}\n.icon-fullscreen:before {\n  content: \"\\f0b2\";\n}\n.icon-group:before {\n  content: \"\\f0c0\";\n}\n.icon-link:before {\n  content: \"\\f0c1\";\n}\n.icon-cloud:before {\n  content: \"\\f0c2\";\n}\n.icon-beaker:before {\n  content: \"\\f0c3\";\n}\n.icon-cut:before {\n  content: \"\\f0c4\";\n}\n.icon-copy:before {\n  content: \"\\f0c5\";\n}\n.icon-paperclip:before,\n.icon-paper-clip:before {\n  content: \"\\f0c6\";\n}\n.icon-save:before {\n  content: \"\\f0c7\";\n}\n.icon-sign-blank:before {\n  content: \"\\f0c8\";\n}\n.icon-reorder:before {\n  content: \"\\f0c9\";\n}\n.icon-list-ul:before {\n  content: \"\\f0ca\";\n}\n.icon-list-ol:before {\n  content: \"\\f0cb\";\n}\n.icon-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.icon-underline:before {\n  content: \"\\f0cd\";\n}\n.icon-table:before {\n  content: \"\\f0ce\";\n}\n.icon-magic:before {\n  content: \"\\f0d0\";\n}\n.icon-truck:before {\n  content: \"\\f0d1\";\n}\n.icon-pinterest:before {\n  content: \"\\f0d2\";\n}\n.icon-pinterest-sign:before {\n  content: \"\\f0d3\";\n}\n.icon-google-plus-sign:before {\n  content: \"\\f0d4\";\n}\n.icon-google-plus:before {\n  content: \"\\f0d5\";\n}\n.icon-money:before {\n  content: \"\\f0d6\";\n}\n.icon-caret-down:before {\n  content: \"\\f0d7\";\n}\n.icon-caret-up:before {\n  content: \"\\f0d8\";\n}\n.icon-caret-left:before {\n  content: \"\\f0d9\";\n}\n.icon-caret-right:before {\n  content: \"\\f0da\";\n}\n.icon-columns:before {\n  content: \"\\f0db\";\n}\n.icon-sort:before {\n  content: \"\\f0dc\";\n}\n.icon-sort-down:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-up:before {\n  content: \"\\f0de\";\n}\n.icon-envelope:before {\n  content: \"\\f0e0\";\n}\n.icon-linkedin:before {\n  content: \"\\f0e1\";\n}\n.icon-rotate-left:before,\n.icon-undo:before {\n  content: \"\\f0e2\";\n}\n.icon-legal:before {\n  content: \"\\f0e3\";\n}\n.icon-dashboard:before {\n  content: \"\\f0e4\";\n}\n.icon-comment-alt:before {\n  content: \"\\f0e5\";\n}\n.icon-comments-alt:before {\n  content: \"\\f0e6\";\n}\n.icon-bolt:before {\n  content: \"\\f0e7\";\n}\n.icon-sitemap:before {\n  content: \"\\f0e8\";\n}\n.icon-umbrella:before {\n  content: \"\\f0e9\";\n}\n.icon-paste:before {\n  content: \"\\f0ea\";\n}\n.icon-lightbulb:before {\n  content: \"\\f0eb\";\n}\n.icon-exchange:before {\n  content: \"\\f0ec\";\n}\n.icon-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.icon-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.icon-user-md:before {\n  content: \"\\f0f0\";\n}\n.icon-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.icon-suitcase:before {\n  content: \"\\f0f2\";\n}\n.icon-bell-alt:before {\n  content: \"\\f0f3\";\n}\n.icon-coffee:before {\n  content: \"\\f0f4\";\n}\n.icon-food:before {\n  content: \"\\f0f5\";\n}\n.icon-file-text-alt:before {\n  content: \"\\f0f6\";\n}\n.icon-building:before {\n  content: \"\\f0f7\";\n}\n.icon-hospital:before {\n  content: \"\\f0f8\";\n}\n.icon-ambulance:before {\n  content: \"\\f0f9\";\n}\n.icon-medkit:before {\n  content: \"\\f0fa\";\n}\n.icon-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.icon-beer:before {\n  content: \"\\f0fc\";\n}\n.icon-h-sign:before {\n  content: \"\\f0fd\";\n}\n.icon-plus-sign-alt:before {\n  content: \"\\f0fe\";\n}\n.icon-double-angle-left:before {\n  content: \"\\f100\";\n}\n.icon-double-angle-right:before {\n  content: \"\\f101\";\n}\n.icon-double-angle-up:before {\n  content: \"\\f102\";\n}\n.icon-double-angle-down:before {\n  content: \"\\f103\";\n}\n.icon-angle-left:before {\n  content: \"\\f104\";\n}\n.icon-angle-right:before {\n  content: \"\\f105\";\n}\n.icon-angle-up:before {\n  content: \"\\f106\";\n}\n.icon-angle-down:before {\n  content: \"\\f107\";\n}\n.icon-desktop:before {\n  content: \"\\f108\";\n}\n.icon-laptop:before {\n  content: \"\\f109\";\n}\n.icon-tablet:before {\n  content: \"\\f10a\";\n}\n.icon-mobile-phone:before {\n  content: \"\\f10b\";\n}\n.icon-circle-blank:before {\n  content: \"\\f10c\";\n}\n.icon-quote-left:before {\n  content: \"\\f10d\";\n}\n.icon-quote-right:before {\n  content: \"\\f10e\";\n}\n.icon-spinner:before {\n  content: \"\\f110\";\n}\n.icon-circle:before {\n  content: \"\\f111\";\n}\n.icon-mail-reply:before,\n.icon-reply:before {\n  content: \"\\f112\";\n}\n.icon-github-alt:before {\n  content: \"\\f113\";\n}\n.icon-folder-close-alt:before {\n  content: \"\\f114\";\n}\n.icon-folder-open-alt:before {\n  content: \"\\f115\";\n}\n.icon-expand-alt:before {\n  content: \"\\f116\";\n}\n.icon-collapse-alt:before {\n  content: \"\\f117\";\n}\n.icon-smile:before {\n  content: \"\\f118\";\n}\n.icon-frown:before {\n  content: \"\\f119\";\n}\n.icon-meh:before {\n  content: \"\\f11a\";\n}\n.icon-gamepad:before {\n  content: \"\\f11b\";\n}\n.icon-keyboard:before {\n  content: \"\\f11c\";\n}\n.icon-flag-alt:before {\n  content: \"\\f11d\";\n}\n.icon-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.icon-terminal:before {\n  content: \"\\f120\";\n}\n.icon-code:before {\n  content: \"\\f121\";\n}\n.icon-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-mail-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-star-half-full:before,\n.icon-star-half-empty:before {\n  content: \"\\f123\";\n}\n.icon-location-arrow:before {\n  content: \"\\f124\";\n}\n.icon-crop:before {\n  content: \"\\f125\";\n}\n.icon-code-fork:before {\n  content: \"\\f126\";\n}\n.icon-unlink:before {\n  content: \"\\f127\";\n}\n.icon-question:before {\n  content: \"\\f128\";\n}\n.icon-info:before {\n  content: \"\\f129\";\n}\n.icon-exclamation:before {\n  content: \"\\f12a\";\n}\n.icon-superscript:before {\n  content: \"\\f12b\";\n}\n.icon-subscript:before {\n  content: \"\\f12c\";\n}\n.icon-eraser:before {\n  content: \"\\f12d\";\n}\n.icon-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.icon-microphone:before {\n  content: \"\\f130\";\n}\n.icon-microphone-off:before {\n  content: \"\\f131\";\n}\n.icon-shield:before {\n  content: \"\\f132\";\n}\n.icon-calendar-empty:before {\n  content: \"\\f133\";\n}\n.icon-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.icon-rocket:before {\n  content: \"\\f135\";\n}\n.icon-maxcdn:before {\n  content: \"\\f136\";\n}\n.icon-chevron-sign-left:before {\n  content: \"\\f137\";\n}\n.icon-chevron-sign-right:before {\n  content: \"\\f138\";\n}\n.icon-chevron-sign-up:before {\n  content: \"\\f139\";\n}\n.icon-chevron-sign-down:before {\n  content: \"\\f13a\";\n}\n.icon-html5:before {\n  content: \"\\f13b\";\n}\n.icon-css3:before {\n  content: \"\\f13c\";\n}\n.icon-anchor:before {\n  content: \"\\f13d\";\n}\n.icon-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.icon-bullseye:before {\n  content: \"\\f140\";\n}\n.icon-ellipsis-horizontal:before {\n  content: \"\\f141\";\n}\n.icon-ellipsis-vertical:before {\n  content: \"\\f142\";\n}\n.icon-rss-sign:before {\n  content: \"\\f143\";\n}\n.icon-play-sign:before {\n  content: \"\\f144\";\n}\n.icon-ticket:before {\n  content: \"\\f145\";\n}\n.icon-minus-sign-alt:before {\n  content: \"\\f146\";\n}\n.icon-check-minus:before {\n  content: \"\\f147\";\n}\n.icon-level-up:before {\n  content: \"\\f148\";\n}\n.icon-level-down:before {\n  content: \"\\f149\";\n}\n.icon-check-sign:before {\n  content: \"\\f14a\";\n}\n.icon-edit-sign:before {\n  content: \"\\f14b\";\n}\n.icon-external-link-sign:before {\n  content: \"\\f14c\";\n}\n.icon-share-sign:before {\n  content: \"\\f14d\";\n}\n.icon-compass:before {\n  content: \"\\f14e\";\n}\n.icon-collapse:before {\n  content: \"\\f150\";\n}\n.icon-collapse-top:before {\n  content: \"\\f151\";\n}\n.icon-expand:before {\n  content: \"\\f152\";\n}\n.icon-euro:before,\n.icon-eur:before {\n  content: \"\\f153\";\n}\n.icon-gbp:before {\n  content: \"\\f154\";\n}\n.icon-dollar:before,\n.icon-usd:before {\n  content: \"\\f155\";\n}\n.icon-rupee:before,\n.icon-inr:before {\n  content: \"\\f156\";\n}\n.icon-yen:before,\n.icon-jpy:before {\n  content: \"\\f157\";\n}\n.icon-renminbi:before,\n.icon-cny:before {\n  content: \"\\f158\";\n}\n.icon-won:before,\n.icon-krw:before {\n  content: \"\\f159\";\n}\n.icon-bitcoin:before,\n.icon-btc:before {\n  content: \"\\f15a\";\n}\n.icon-file:before {\n  content: \"\\f15b\";\n}\n.icon-file-text:before {\n  content: \"\\f15c\";\n}\n.icon-sort-by-alphabet:before {\n  content: \"\\f15d\";\n}\n.icon-sort-by-alphabet-alt:before {\n  content: \"\\f15e\";\n}\n.icon-sort-by-attributes:before {\n  content: \"\\f160\";\n}\n.icon-sort-by-attributes-alt:before {\n  content: \"\\f161\";\n}\n.icon-sort-by-order:before {\n  content: \"\\f162\";\n}\n.icon-sort-by-order-alt:before {\n  content: \"\\f163\";\n}\n.icon-thumbs-up:before {\n  content: \"\\f164\";\n}\n.icon-thumbs-down:before {\n  content: \"\\f165\";\n}\n.icon-youtube-sign:before {\n  content: \"\\f166\";\n}\n.icon-youtube:before {\n  content: \"\\f167\";\n}\n.icon-xing:before {\n  content: \"\\f168\";\n}\n.icon-xing-sign:before {\n  content: \"\\f169\";\n}\n.icon-youtube-play:before {\n  content: \"\\f16a\";\n}\n.icon-dropbox:before {\n  content: \"\\f16b\";\n}\n.icon-stackexchange:before {\n  content: \"\\f16c\";\n}\n.icon-instagram:before {\n  content: \"\\f16d\";\n}\n.icon-flickr:before {\n  content: \"\\f16e\";\n}\n.icon-adn:before {\n  content: \"\\f170\";\n}\n.icon-bitbucket:before {\n  content: \"\\f171\";\n}\n.icon-bitbucket-sign:before {\n  content: \"\\f172\";\n}\n.icon-tumblr:before {\n  content: \"\\f173\";\n}\n.icon-tumblr-sign:before {\n  content: \"\\f174\";\n}\n.icon-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.icon-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.icon-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.icon-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.icon-apple:before {\n  content: \"\\f179\";\n}\n.icon-windows:before {\n  content: \"\\f17a\";\n}\n.icon-android:before {\n  content: \"\\f17b\";\n}\n.icon-linux:before {\n  content: \"\\f17c\";\n}\n.icon-dribble:before {\n  content: \"\\f17d\";\n}\n.icon-skype:before {\n  content: \"\\f17e\";\n}\n.icon-foursquare:before {\n  content: \"\\f180\";\n}\n.icon-trello:before {\n  content: \"\\f181\";\n}\n.icon-female:before {\n  content: \"\\f182\";\n}\n.icon-male:before {\n  content: \"\\f183\";\n}\n.icon-gittip:before {\n  content: \"\\f184\";\n}\n.icon-sun:before {\n  content: \"\\f185\";\n}\n.icon-moon:before {\n  content: \"\\f186\";\n}\n.icon-archive:before {\n  content: \"\\f187\";\n}\n.icon-bug:before {\n  content: \"\\f188\";\n}\n.icon-vk:before {\n  content: \"\\f189\";\n}\n.icon-weibo:before {\n  content: \"\\f18a\";\n}\n.icon-renren:before {\n  content: \"\\f18b\";\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/bootstrap.less",
    "content": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n\n\n/* keeps Bootstrap styles with and without icons the same */\n.btn, .nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n//    display: inline;\n    &.icon-large { line-height: .9em; }\n    &.icon-spin { display: inline-block; }\n  }\n}\n.nav-tabs, .nav-pills {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &, &.icon-large { line-height: .9em; }\n  }\n}\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .18em; }\n    }\n    &.icon-spin.icon-large { line-height: .8em; }\n  }\n}\n.btn.btn-small {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .25em; }\n    }\n  }\n}\n.btn.btn-large {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    margin-top: 0; // overrides bootstrap default\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .05em; }\n    }\n    &.pull-left.icon-2x { margin-right: .2em; }\n    &.pull-right.icon-2x { margin-left: .2em; }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/core.less",
    "content": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  .icon-FontAwesome();\n}\n\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 4/3em;\n}\n\n/* makes sure icons active on rollover in links */\na {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    display: inline;\n  }\n}\n\n/* increased font size for icon-large */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.icon-fixed-width {\n    display: inline-block;\n    width: 16/14em;\n    text-align: right;\n    padding-right: 4/14em;\n    &.icon-large {\n      width: 20/14em;\n    }\n  }\n}\n\n.icons-ul {\n  margin-left: @icons-li-width;\n  list-style-type: none;\n\n  > li { position: relative; }\n\n  .icon-li {\n    position: absolute;\n    left: -@icons-li-width;\n    width: @icons-li-width;\n    text-align: center;\n    line-height: inherit;\n  }\n}\n\n// allows usage of the hide class directly on font awesome icons\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.hide {\n    display: none;\n  }\n}\n\n.icon-muted { color: @iconMuted; }\n.icon-light { color: @iconLight; }\n.icon-dark { color: @iconDark; }\n\n// Icon Borders\n// -------------------------\n\n.icon-border {\n  border: solid 1px @borderColor;\n  padding: .2em .25em .15em;\n  .border-radius(3px);\n}\n\n// Icon Sizes\n// -------------------------\n\n.icon-2x {\n  font-size: 2em;\n  &.icon-border {\n    border-width: 2px;\n    .border-radius(4px);\n  }\n}\n.icon-3x {\n  font-size: 3em;\n  &.icon-border {\n    border-width: 3px;\n    .border-radius(5px);\n  }\n}\n.icon-4x {\n  font-size: 4em;\n  &.icon-border {\n    border-width: 4px;\n    .border-radius(6px);\n  }\n}\n\n.icon-5x {\n  font-size: 5em;\n  &.icon-border {\n    border-width: 5px;\n    .border-radius(7px);\n  }\n}\n\n\n// Floats & Margins\n// -------------------------\n\n// Quick floats\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.pull-left {\n    margin-right: .3em;\n  }\n  &.pull-right {\n    margin-left: .3em;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/extras.less",
    "content": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n.icon-stack();\n\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n\n@-moz-keyframes spin {\n  0% { -moz-transform: rotate(0deg); }\n  100% { -moz-transform: rotate(359deg); }\n}\n@-webkit-keyframes spin {\n  0% { -webkit-transform: rotate(0deg); }\n  100% { -webkit-transform: rotate(359deg); }\n}\n@-o-keyframes spin {\n  0% { -o-transform: rotate(0deg); }\n  100% { -o-transform: rotate(359deg); }\n}\n@-ms-keyframes spin {\n  0% { -ms-transform: rotate(0deg); }\n  100% { -ms-transform: rotate(359deg); }\n}\n@keyframes spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(359deg); }\n}\n\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n/* ensure rotation occurs inside anchor tags */\na {\n  .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {\n    &:before { display: inline-block; }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/font-awesome-ie7.less",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n.icon-large {\n  font-size: 4/3em;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n\n.nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    vertical-align: inherit;\n    margin-top: -4px;\n    padding-top: 3px;\n    margin-bottom: -4px;\n    padding-bottom: 3px;\n    &.icon-large {\n      vertical-align: -25%;\n    }\n  }\n}\n\n.nav-pills, .nav-tabs {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.icon-large {\n      line-height: .75em;\n      margin-top: -7px;\n      padding-top: 5px;\n      margin-bottom: -5px;\n      padding-bottom: 4px;\n    }\n  }\n}\n\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right { vertical-align: inherit; }\n    &.icon-large {\n      margin-top: -.5em;\n    }\n  }\n}\n\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n\n.ie7icon(@inner) { *zoom: ~\"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')\"; }\n\n\n.icon-glass {\n  .ie7icon('&#xf000;');\n}\n\n\n.icon-music {\n  .ie7icon('&#xf001;');\n}\n\n\n.icon-search {\n  .ie7icon('&#xf002;');\n}\n\n\n.icon-envelope-alt {\n  .ie7icon('&#xf003;');\n}\n\n\n.icon-heart {\n  .ie7icon('&#xf004;');\n}\n\n\n.icon-star {\n  .ie7icon('&#xf005;');\n}\n\n\n.icon-star-empty {\n  .ie7icon('&#xf006;');\n}\n\n\n.icon-user {\n  .ie7icon('&#xf007;');\n}\n\n\n.icon-film {\n  .ie7icon('&#xf008;');\n}\n\n\n.icon-th-large {\n  .ie7icon('&#xf009;');\n}\n\n\n.icon-th {\n  .ie7icon('&#xf00a;');\n}\n\n\n.icon-th-list {\n  .ie7icon('&#xf00b;');\n}\n\n\n.icon-ok {\n  .ie7icon('&#xf00c;');\n}\n\n\n.icon-remove {\n  .ie7icon('&#xf00d;');\n}\n\n\n.icon-zoom-in {\n  .ie7icon('&#xf00e;');\n}\n\n\n.icon-zoom-out {\n  .ie7icon('&#xf010;');\n}\n\n\n.icon-off {\n  .ie7icon('&#xf011;');\n}\n\n.icon-power-off {\n  .ie7icon('&#xf011;');\n}\n\n\n.icon-signal {\n  .ie7icon('&#xf012;');\n}\n\n\n.icon-cog {\n  .ie7icon('&#xf013;');\n}\n\n\n.icon-trash {\n  .ie7icon('&#xf014;');\n}\n\n\n.icon-home {\n  .ie7icon('&#xf015;');\n}\n\n\n.icon-file-alt {\n  .ie7icon('&#xf016;');\n}\n\n\n.icon-time {\n  .ie7icon('&#xf017;');\n}\n\n\n.icon-road {\n  .ie7icon('&#xf018;');\n}\n\n\n.icon-download-alt {\n  .ie7icon('&#xf019;');\n}\n\n\n.icon-download {\n  .ie7icon('&#xf01a;');\n}\n\n\n.icon-upload {\n  .ie7icon('&#xf01b;');\n}\n\n\n.icon-inbox {\n  .ie7icon('&#xf01c;');\n}\n\n\n.icon-play-circle {\n  .ie7icon('&#xf01d;');\n}\n\n\n.icon-repeat {\n  .ie7icon('&#xf01e;');\n}\n\n.icon-rotate-right {\n  .ie7icon('&#xf01e;');\n}\n\n\n.icon-refresh {\n  .ie7icon('&#xf021;');\n}\n\n\n.icon-list-alt {\n  .ie7icon('&#xf022;');\n}\n\n\n.icon-lock {\n  .ie7icon('&#xf023;');\n}\n\n\n.icon-flag {\n  .ie7icon('&#xf024;');\n}\n\n\n.icon-headphones {\n  .ie7icon('&#xf025;');\n}\n\n\n.icon-volume-off {\n  .ie7icon('&#xf026;');\n}\n\n\n.icon-volume-down {\n  .ie7icon('&#xf027;');\n}\n\n\n.icon-volume-up {\n  .ie7icon('&#xf028;');\n}\n\n\n.icon-qrcode {\n  .ie7icon('&#xf029;');\n}\n\n\n.icon-barcode {\n  .ie7icon('&#xf02a;');\n}\n\n\n.icon-tag {\n  .ie7icon('&#xf02b;');\n}\n\n\n.icon-tags {\n  .ie7icon('&#xf02c;');\n}\n\n\n.icon-book {\n  .ie7icon('&#xf02d;');\n}\n\n\n.icon-bookmark {\n  .ie7icon('&#xf02e;');\n}\n\n\n.icon-print {\n  .ie7icon('&#xf02f;');\n}\n\n\n.icon-camera {\n  .ie7icon('&#xf030;');\n}\n\n\n.icon-font {\n  .ie7icon('&#xf031;');\n}\n\n\n.icon-bold {\n  .ie7icon('&#xf032;');\n}\n\n\n.icon-italic {\n  .ie7icon('&#xf033;');\n}\n\n\n.icon-text-height {\n  .ie7icon('&#xf034;');\n}\n\n\n.icon-text-width {\n  .ie7icon('&#xf035;');\n}\n\n\n.icon-align-left {\n  .ie7icon('&#xf036;');\n}\n\n\n.icon-align-center {\n  .ie7icon('&#xf037;');\n}\n\n\n.icon-align-right {\n  .ie7icon('&#xf038;');\n}\n\n\n.icon-align-justify {\n  .ie7icon('&#xf039;');\n}\n\n\n.icon-list {\n  .ie7icon('&#xf03a;');\n}\n\n\n.icon-indent-left {\n  .ie7icon('&#xf03b;');\n}\n\n\n.icon-indent-right {\n  .ie7icon('&#xf03c;');\n}\n\n\n.icon-facetime-video {\n  .ie7icon('&#xf03d;');\n}\n\n\n.icon-picture {\n  .ie7icon('&#xf03e;');\n}\n\n\n.icon-pencil {\n  .ie7icon('&#xf040;');\n}\n\n\n.icon-map-marker {\n  .ie7icon('&#xf041;');\n}\n\n\n.icon-adjust {\n  .ie7icon('&#xf042;');\n}\n\n\n.icon-tint {\n  .ie7icon('&#xf043;');\n}\n\n\n.icon-edit {\n  .ie7icon('&#xf044;');\n}\n\n\n.icon-share {\n  .ie7icon('&#xf045;');\n}\n\n\n.icon-check {\n  .ie7icon('&#xf046;');\n}\n\n\n.icon-move {\n  .ie7icon('&#xf047;');\n}\n\n\n.icon-step-backward {\n  .ie7icon('&#xf048;');\n}\n\n\n.icon-fast-backward {\n  .ie7icon('&#xf049;');\n}\n\n\n.icon-backward {\n  .ie7icon('&#xf04a;');\n}\n\n\n.icon-play {\n  .ie7icon('&#xf04b;');\n}\n\n\n.icon-pause {\n  .ie7icon('&#xf04c;');\n}\n\n\n.icon-stop {\n  .ie7icon('&#xf04d;');\n}\n\n\n.icon-forward {\n  .ie7icon('&#xf04e;');\n}\n\n\n.icon-fast-forward {\n  .ie7icon('&#xf050;');\n}\n\n\n.icon-step-forward {\n  .ie7icon('&#xf051;');\n}\n\n\n.icon-eject {\n  .ie7icon('&#xf052;');\n}\n\n\n.icon-chevron-left {\n  .ie7icon('&#xf053;');\n}\n\n\n.icon-chevron-right {\n  .ie7icon('&#xf054;');\n}\n\n\n.icon-plus-sign {\n  .ie7icon('&#xf055;');\n}\n\n\n.icon-minus-sign {\n  .ie7icon('&#xf056;');\n}\n\n\n.icon-remove-sign {\n  .ie7icon('&#xf057;');\n}\n\n\n.icon-ok-sign {\n  .ie7icon('&#xf058;');\n}\n\n\n.icon-question-sign {\n  .ie7icon('&#xf059;');\n}\n\n\n.icon-info-sign {\n  .ie7icon('&#xf05a;');\n}\n\n\n.icon-screenshot {\n  .ie7icon('&#xf05b;');\n}\n\n\n.icon-remove-circle {\n  .ie7icon('&#xf05c;');\n}\n\n\n.icon-ok-circle {\n  .ie7icon('&#xf05d;');\n}\n\n\n.icon-ban-circle {\n  .ie7icon('&#xf05e;');\n}\n\n\n.icon-arrow-left {\n  .ie7icon('&#xf060;');\n}\n\n\n.icon-arrow-right {\n  .ie7icon('&#xf061;');\n}\n\n\n.icon-arrow-up {\n  .ie7icon('&#xf062;');\n}\n\n\n.icon-arrow-down {\n  .ie7icon('&#xf063;');\n}\n\n\n.icon-share-alt {\n  .ie7icon('&#xf064;');\n}\n\n.icon-mail-forward {\n  .ie7icon('&#xf064;');\n}\n\n\n.icon-resize-full {\n  .ie7icon('&#xf065;');\n}\n\n\n.icon-resize-small {\n  .ie7icon('&#xf066;');\n}\n\n\n.icon-plus {\n  .ie7icon('&#xf067;');\n}\n\n\n.icon-minus {\n  .ie7icon('&#xf068;');\n}\n\n\n.icon-asterisk {\n  .ie7icon('&#xf069;');\n}\n\n\n.icon-exclamation-sign {\n  .ie7icon('&#xf06a;');\n}\n\n\n.icon-gift {\n  .ie7icon('&#xf06b;');\n}\n\n\n.icon-leaf {\n  .ie7icon('&#xf06c;');\n}\n\n\n.icon-fire {\n  .ie7icon('&#xf06d;');\n}\n\n\n.icon-eye-open {\n  .ie7icon('&#xf06e;');\n}\n\n\n.icon-eye-close {\n  .ie7icon('&#xf070;');\n}\n\n\n.icon-warning-sign {\n  .ie7icon('&#xf071;');\n}\n\n\n.icon-plane {\n  .ie7icon('&#xf072;');\n}\n\n\n.icon-calendar {\n  .ie7icon('&#xf073;');\n}\n\n\n.icon-random {\n  .ie7icon('&#xf074;');\n}\n\n\n.icon-comment {\n  .ie7icon('&#xf075;');\n}\n\n\n.icon-magnet {\n  .ie7icon('&#xf076;');\n}\n\n\n.icon-chevron-up {\n  .ie7icon('&#xf077;');\n}\n\n\n.icon-chevron-down {\n  .ie7icon('&#xf078;');\n}\n\n\n.icon-retweet {\n  .ie7icon('&#xf079;');\n}\n\n\n.icon-shopping-cart {\n  .ie7icon('&#xf07a;');\n}\n\n\n.icon-folder-close {\n  .ie7icon('&#xf07b;');\n}\n\n\n.icon-folder-open {\n  .ie7icon('&#xf07c;');\n}\n\n\n.icon-resize-vertical {\n  .ie7icon('&#xf07d;');\n}\n\n\n.icon-resize-horizontal {\n  .ie7icon('&#xf07e;');\n}\n\n\n.icon-bar-chart {\n  .ie7icon('&#xf080;');\n}\n\n\n.icon-twitter-sign {\n  .ie7icon('&#xf081;');\n}\n\n\n.icon-facebook-sign {\n  .ie7icon('&#xf082;');\n}\n\n\n.icon-camera-retro {\n  .ie7icon('&#xf083;');\n}\n\n\n.icon-key {\n  .ie7icon('&#xf084;');\n}\n\n\n.icon-cogs {\n  .ie7icon('&#xf085;');\n}\n\n\n.icon-comments {\n  .ie7icon('&#xf086;');\n}\n\n\n.icon-thumbs-up-alt {\n  .ie7icon('&#xf087;');\n}\n\n\n.icon-thumbs-down-alt {\n  .ie7icon('&#xf088;');\n}\n\n\n.icon-star-half {\n  .ie7icon('&#xf089;');\n}\n\n\n.icon-heart-empty {\n  .ie7icon('&#xf08a;');\n}\n\n\n.icon-signout {\n  .ie7icon('&#xf08b;');\n}\n\n\n.icon-linkedin-sign {\n  .ie7icon('&#xf08c;');\n}\n\n\n.icon-pushpin {\n  .ie7icon('&#xf08d;');\n}\n\n\n.icon-external-link {\n  .ie7icon('&#xf08e;');\n}\n\n\n.icon-signin {\n  .ie7icon('&#xf090;');\n}\n\n\n.icon-trophy {\n  .ie7icon('&#xf091;');\n}\n\n\n.icon-github-sign {\n  .ie7icon('&#xf092;');\n}\n\n\n.icon-upload-alt {\n  .ie7icon('&#xf093;');\n}\n\n\n.icon-lemon {\n  .ie7icon('&#xf094;');\n}\n\n\n.icon-phone {\n  .ie7icon('&#xf095;');\n}\n\n\n.icon-check-empty {\n  .ie7icon('&#xf096;');\n}\n\n.icon-unchecked {\n  .ie7icon('&#xf096;');\n}\n\n\n.icon-bookmark-empty {\n  .ie7icon('&#xf097;');\n}\n\n\n.icon-phone-sign {\n  .ie7icon('&#xf098;');\n}\n\n\n.icon-twitter {\n  .ie7icon('&#xf099;');\n}\n\n\n.icon-facebook {\n  .ie7icon('&#xf09a;');\n}\n\n\n.icon-github {\n  .ie7icon('&#xf09b;');\n}\n\n\n.icon-unlock {\n  .ie7icon('&#xf09c;');\n}\n\n\n.icon-credit-card {\n  .ie7icon('&#xf09d;');\n}\n\n\n.icon-rss {\n  .ie7icon('&#xf09e;');\n}\n\n\n.icon-hdd {\n  .ie7icon('&#xf0a0;');\n}\n\n\n.icon-bullhorn {\n  .ie7icon('&#xf0a1;');\n}\n\n\n.icon-bell {\n  .ie7icon('&#xf0a2;');\n}\n\n\n.icon-certificate {\n  .ie7icon('&#xf0a3;');\n}\n\n\n.icon-hand-right {\n  .ie7icon('&#xf0a4;');\n}\n\n\n.icon-hand-left {\n  .ie7icon('&#xf0a5;');\n}\n\n\n.icon-hand-up {\n  .ie7icon('&#xf0a6;');\n}\n\n\n.icon-hand-down {\n  .ie7icon('&#xf0a7;');\n}\n\n\n.icon-circle-arrow-left {\n  .ie7icon('&#xf0a8;');\n}\n\n\n.icon-circle-arrow-right {\n  .ie7icon('&#xf0a9;');\n}\n\n\n.icon-circle-arrow-up {\n  .ie7icon('&#xf0aa;');\n}\n\n\n.icon-circle-arrow-down {\n  .ie7icon('&#xf0ab;');\n}\n\n\n.icon-globe {\n  .ie7icon('&#xf0ac;');\n}\n\n\n.icon-wrench {\n  .ie7icon('&#xf0ad;');\n}\n\n\n.icon-tasks {\n  .ie7icon('&#xf0ae;');\n}\n\n\n.icon-filter {\n  .ie7icon('&#xf0b0;');\n}\n\n\n.icon-briefcase {\n  .ie7icon('&#xf0b1;');\n}\n\n\n.icon-fullscreen {\n  .ie7icon('&#xf0b2;');\n}\n\n\n.icon-group {\n  .ie7icon('&#xf0c0;');\n}\n\n\n.icon-link {\n  .ie7icon('&#xf0c1;');\n}\n\n\n.icon-cloud {\n  .ie7icon('&#xf0c2;');\n}\n\n\n.icon-beaker {\n  .ie7icon('&#xf0c3;');\n}\n\n\n.icon-cut {\n  .ie7icon('&#xf0c4;');\n}\n\n\n.icon-copy {\n  .ie7icon('&#xf0c5;');\n}\n\n\n.icon-paper-clip {\n  .ie7icon('&#xf0c6;');\n}\n\n.icon-paperclip {\n  .ie7icon('&#xf0c6;');\n}\n\n\n.icon-save {\n  .ie7icon('&#xf0c7;');\n}\n\n\n.icon-sign-blank {\n  .ie7icon('&#xf0c8;');\n}\n\n\n.icon-reorder {\n  .ie7icon('&#xf0c9;');\n}\n\n\n.icon-list-ul {\n  .ie7icon('&#xf0ca;');\n}\n\n\n.icon-list-ol {\n  .ie7icon('&#xf0cb;');\n}\n\n\n.icon-strikethrough {\n  .ie7icon('&#xf0cc;');\n}\n\n\n.icon-underline {\n  .ie7icon('&#xf0cd;');\n}\n\n\n.icon-table {\n  .ie7icon('&#xf0ce;');\n}\n\n\n.icon-magic {\n  .ie7icon('&#xf0d0;');\n}\n\n\n.icon-truck {\n  .ie7icon('&#xf0d1;');\n}\n\n\n.icon-pinterest {\n  .ie7icon('&#xf0d2;');\n}\n\n\n.icon-pinterest-sign {\n  .ie7icon('&#xf0d3;');\n}\n\n\n.icon-google-plus-sign {\n  .ie7icon('&#xf0d4;');\n}\n\n\n.icon-google-plus {\n  .ie7icon('&#xf0d5;');\n}\n\n\n.icon-money {\n  .ie7icon('&#xf0d6;');\n}\n\n\n.icon-caret-down {\n  .ie7icon('&#xf0d7;');\n}\n\n\n.icon-caret-up {\n  .ie7icon('&#xf0d8;');\n}\n\n\n.icon-caret-left {\n  .ie7icon('&#xf0d9;');\n}\n\n\n.icon-caret-right {\n  .ie7icon('&#xf0da;');\n}\n\n\n.icon-columns {\n  .ie7icon('&#xf0db;');\n}\n\n\n.icon-sort {\n  .ie7icon('&#xf0dc;');\n}\n\n\n.icon-sort-down {\n  .ie7icon('&#xf0dd;');\n}\n\n\n.icon-sort-up {\n  .ie7icon('&#xf0de;');\n}\n\n\n.icon-envelope {\n  .ie7icon('&#xf0e0;');\n}\n\n\n.icon-linkedin {\n  .ie7icon('&#xf0e1;');\n}\n\n\n.icon-undo {\n  .ie7icon('&#xf0e2;');\n}\n\n.icon-rotate-left {\n  .ie7icon('&#xf0e2;');\n}\n\n\n.icon-legal {\n  .ie7icon('&#xf0e3;');\n}\n\n\n.icon-dashboard {\n  .ie7icon('&#xf0e4;');\n}\n\n\n.icon-comment-alt {\n  .ie7icon('&#xf0e5;');\n}\n\n\n.icon-comments-alt {\n  .ie7icon('&#xf0e6;');\n}\n\n\n.icon-bolt {\n  .ie7icon('&#xf0e7;');\n}\n\n\n.icon-sitemap {\n  .ie7icon('&#xf0e8;');\n}\n\n\n.icon-umbrella {\n  .ie7icon('&#xf0e9;');\n}\n\n\n.icon-paste {\n  .ie7icon('&#xf0ea;');\n}\n\n\n.icon-lightbulb {\n  .ie7icon('&#xf0eb;');\n}\n\n\n.icon-exchange {\n  .ie7icon('&#xf0ec;');\n}\n\n\n.icon-cloud-download {\n  .ie7icon('&#xf0ed;');\n}\n\n\n.icon-cloud-upload {\n  .ie7icon('&#xf0ee;');\n}\n\n\n.icon-user-md {\n  .ie7icon('&#xf0f0;');\n}\n\n\n.icon-stethoscope {\n  .ie7icon('&#xf0f1;');\n}\n\n\n.icon-suitcase {\n  .ie7icon('&#xf0f2;');\n}\n\n\n.icon-bell-alt {\n  .ie7icon('&#xf0f3;');\n}\n\n\n.icon-coffee {\n  .ie7icon('&#xf0f4;');\n}\n\n\n.icon-food {\n  .ie7icon('&#xf0f5;');\n}\n\n\n.icon-file-text-alt {\n  .ie7icon('&#xf0f6;');\n}\n\n\n.icon-building {\n  .ie7icon('&#xf0f7;');\n}\n\n\n.icon-hospital {\n  .ie7icon('&#xf0f8;');\n}\n\n\n.icon-ambulance {\n  .ie7icon('&#xf0f9;');\n}\n\n\n.icon-medkit {\n  .ie7icon('&#xf0fa;');\n}\n\n\n.icon-fighter-jet {\n  .ie7icon('&#xf0fb;');\n}\n\n\n.icon-beer {\n  .ie7icon('&#xf0fc;');\n}\n\n\n.icon-h-sign {\n  .ie7icon('&#xf0fd;');\n}\n\n\n.icon-plus-sign-alt {\n  .ie7icon('&#xf0fe;');\n}\n\n\n.icon-double-angle-left {\n  .ie7icon('&#xf100;');\n}\n\n\n.icon-double-angle-right {\n  .ie7icon('&#xf101;');\n}\n\n\n.icon-double-angle-up {\n  .ie7icon('&#xf102;');\n}\n\n\n.icon-double-angle-down {\n  .ie7icon('&#xf103;');\n}\n\n\n.icon-angle-left {\n  .ie7icon('&#xf104;');\n}\n\n\n.icon-angle-right {\n  .ie7icon('&#xf105;');\n}\n\n\n.icon-angle-up {\n  .ie7icon('&#xf106;');\n}\n\n\n.icon-angle-down {\n  .ie7icon('&#xf107;');\n}\n\n\n.icon-desktop {\n  .ie7icon('&#xf108;');\n}\n\n\n.icon-laptop {\n  .ie7icon('&#xf109;');\n}\n\n\n.icon-tablet {\n  .ie7icon('&#xf10a;');\n}\n\n\n.icon-mobile-phone {\n  .ie7icon('&#xf10b;');\n}\n\n\n.icon-circle-blank {\n  .ie7icon('&#xf10c;');\n}\n\n\n.icon-quote-left {\n  .ie7icon('&#xf10d;');\n}\n\n\n.icon-quote-right {\n  .ie7icon('&#xf10e;');\n}\n\n\n.icon-spinner {\n  .ie7icon('&#xf110;');\n}\n\n\n.icon-circle {\n  .ie7icon('&#xf111;');\n}\n\n\n.icon-reply {\n  .ie7icon('&#xf112;');\n}\n\n.icon-mail-reply {\n  .ie7icon('&#xf112;');\n}\n\n\n.icon-github-alt {\n  .ie7icon('&#xf113;');\n}\n\n\n.icon-folder-close-alt {\n  .ie7icon('&#xf114;');\n}\n\n\n.icon-folder-open-alt {\n  .ie7icon('&#xf115;');\n}\n\n\n.icon-expand-alt {\n  .ie7icon('&#xf116;');\n}\n\n\n.icon-collapse-alt {\n  .ie7icon('&#xf117;');\n}\n\n\n.icon-smile {\n  .ie7icon('&#xf118;');\n}\n\n\n.icon-frown {\n  .ie7icon('&#xf119;');\n}\n\n\n.icon-meh {\n  .ie7icon('&#xf11a;');\n}\n\n\n.icon-gamepad {\n  .ie7icon('&#xf11b;');\n}\n\n\n.icon-keyboard {\n  .ie7icon('&#xf11c;');\n}\n\n\n.icon-flag-alt {\n  .ie7icon('&#xf11d;');\n}\n\n\n.icon-flag-checkered {\n  .ie7icon('&#xf11e;');\n}\n\n\n.icon-terminal {\n  .ie7icon('&#xf120;');\n}\n\n\n.icon-code {\n  .ie7icon('&#xf121;');\n}\n\n\n.icon-reply-all {\n  .ie7icon('&#xf122;');\n}\n\n\n.icon-mail-reply-all {\n  .ie7icon('&#xf122;');\n}\n\n\n.icon-star-half-empty {\n  .ie7icon('&#xf123;');\n}\n\n.icon-star-half-full {\n  .ie7icon('&#xf123;');\n}\n\n\n.icon-location-arrow {\n  .ie7icon('&#xf124;');\n}\n\n\n.icon-crop {\n  .ie7icon('&#xf125;');\n}\n\n\n.icon-code-fork {\n  .ie7icon('&#xf126;');\n}\n\n\n.icon-unlink {\n  .ie7icon('&#xf127;');\n}\n\n\n.icon-question {\n  .ie7icon('&#xf128;');\n}\n\n\n.icon-info {\n  .ie7icon('&#xf129;');\n}\n\n\n.icon-exclamation {\n  .ie7icon('&#xf12a;');\n}\n\n\n.icon-superscript {\n  .ie7icon('&#xf12b;');\n}\n\n\n.icon-subscript {\n  .ie7icon('&#xf12c;');\n}\n\n\n.icon-eraser {\n  .ie7icon('&#xf12d;');\n}\n\n\n.icon-puzzle-piece {\n  .ie7icon('&#xf12e;');\n}\n\n\n.icon-microphone {\n  .ie7icon('&#xf130;');\n}\n\n\n.icon-microphone-off {\n  .ie7icon('&#xf131;');\n}\n\n\n.icon-shield {\n  .ie7icon('&#xf132;');\n}\n\n\n.icon-calendar-empty {\n  .ie7icon('&#xf133;');\n}\n\n\n.icon-fire-extinguisher {\n  .ie7icon('&#xf134;');\n}\n\n\n.icon-rocket {\n  .ie7icon('&#xf135;');\n}\n\n\n.icon-maxcdn {\n  .ie7icon('&#xf136;');\n}\n\n\n.icon-chevron-sign-left {\n  .ie7icon('&#xf137;');\n}\n\n\n.icon-chevron-sign-right {\n  .ie7icon('&#xf138;');\n}\n\n\n.icon-chevron-sign-up {\n  .ie7icon('&#xf139;');\n}\n\n\n.icon-chevron-sign-down {\n  .ie7icon('&#xf13a;');\n}\n\n\n.icon-html5 {\n  .ie7icon('&#xf13b;');\n}\n\n\n.icon-css3 {\n  .ie7icon('&#xf13c;');\n}\n\n\n.icon-anchor {\n  .ie7icon('&#xf13d;');\n}\n\n\n.icon-unlock-alt {\n  .ie7icon('&#xf13e;');\n}\n\n\n.icon-bullseye {\n  .ie7icon('&#xf140;');\n}\n\n\n.icon-ellipsis-horizontal {\n  .ie7icon('&#xf141;');\n}\n\n\n.icon-ellipsis-vertical {\n  .ie7icon('&#xf142;');\n}\n\n\n.icon-rss-sign {\n  .ie7icon('&#xf143;');\n}\n\n\n.icon-play-sign {\n  .ie7icon('&#xf144;');\n}\n\n\n.icon-ticket {\n  .ie7icon('&#xf145;');\n}\n\n\n.icon-minus-sign-alt {\n  .ie7icon('&#xf146;');\n}\n\n\n.icon-check-minus {\n  .ie7icon('&#xf147;');\n}\n\n\n.icon-level-up {\n  .ie7icon('&#xf148;');\n}\n\n\n.icon-level-down {\n  .ie7icon('&#xf149;');\n}\n\n\n.icon-check-sign {\n  .ie7icon('&#xf14a;');\n}\n\n\n.icon-edit-sign {\n  .ie7icon('&#xf14b;');\n}\n\n\n.icon-external-link-sign {\n  .ie7icon('&#xf14c;');\n}\n\n\n.icon-share-sign {\n  .ie7icon('&#xf14d;');\n}\n\n\n.icon-compass {\n  .ie7icon('&#xf14e;');\n}\n\n\n.icon-collapse {\n  .ie7icon('&#xf150;');\n}\n\n\n.icon-collapse-top {\n  .ie7icon('&#xf151;');\n}\n\n\n.icon-expand {\n  .ie7icon('&#xf152;');\n}\n\n\n.icon-eur {\n  .ie7icon('&#xf153;');\n}\n\n.icon-euro {\n  .ie7icon('&#xf153;');\n}\n\n\n.icon-gbp {\n  .ie7icon('&#xf154;');\n}\n\n\n.icon-usd {\n  .ie7icon('&#xf155;');\n}\n\n.icon-dollar {\n  .ie7icon('&#xf155;');\n}\n\n\n.icon-inr {\n  .ie7icon('&#xf156;');\n}\n\n.icon-rupee {\n  .ie7icon('&#xf156;');\n}\n\n\n.icon-jpy {\n  .ie7icon('&#xf157;');\n}\n\n.icon-yen {\n  .ie7icon('&#xf157;');\n}\n\n\n.icon-cny {\n  .ie7icon('&#xf158;');\n}\n\n.icon-renminbi {\n  .ie7icon('&#xf158;');\n}\n\n\n.icon-krw {\n  .ie7icon('&#xf159;');\n}\n\n.icon-won {\n  .ie7icon('&#xf159;');\n}\n\n\n.icon-btc {\n  .ie7icon('&#xf15a;');\n}\n\n.icon-bitcoin {\n  .ie7icon('&#xf15a;');\n}\n\n\n.icon-file {\n  .ie7icon('&#xf15b;');\n}\n\n\n.icon-file-text {\n  .ie7icon('&#xf15c;');\n}\n\n\n.icon-sort-by-alphabet {\n  .ie7icon('&#xf15d;');\n}\n\n\n.icon-sort-by-alphabet-alt {\n  .ie7icon('&#xf15e;');\n}\n\n\n.icon-sort-by-attributes {\n  .ie7icon('&#xf160;');\n}\n\n\n.icon-sort-by-attributes-alt {\n  .ie7icon('&#xf161;');\n}\n\n\n.icon-sort-by-order {\n  .ie7icon('&#xf162;');\n}\n\n\n.icon-sort-by-order-alt {\n  .ie7icon('&#xf163;');\n}\n\n\n.icon-thumbs-up {\n  .ie7icon('&#xf164;');\n}\n\n\n.icon-thumbs-down {\n  .ie7icon('&#xf165;');\n}\n\n\n.icon-youtube-sign {\n  .ie7icon('&#xf166;');\n}\n\n\n.icon-youtube {\n  .ie7icon('&#xf167;');\n}\n\n\n.icon-xing {\n  .ie7icon('&#xf168;');\n}\n\n\n.icon-xing-sign {\n  .ie7icon('&#xf169;');\n}\n\n\n.icon-youtube-play {\n  .ie7icon('&#xf16a;');\n}\n\n\n.icon-dropbox {\n  .ie7icon('&#xf16b;');\n}\n\n\n.icon-stackexchange {\n  .ie7icon('&#xf16c;');\n}\n\n\n.icon-instagram {\n  .ie7icon('&#xf16d;');\n}\n\n\n.icon-flickr {\n  .ie7icon('&#xf16e;');\n}\n\n\n.icon-adn {\n  .ie7icon('&#xf170;');\n}\n\n\n.icon-bitbucket {\n  .ie7icon('&#xf171;');\n}\n\n\n.icon-bitbucket-sign {\n  .ie7icon('&#xf172;');\n}\n\n\n.icon-tumblr {\n  .ie7icon('&#xf173;');\n}\n\n\n.icon-tumblr-sign {\n  .ie7icon('&#xf174;');\n}\n\n\n.icon-long-arrow-down {\n  .ie7icon('&#xf175;');\n}\n\n\n.icon-long-arrow-up {\n  .ie7icon('&#xf176;');\n}\n\n\n.icon-long-arrow-left {\n  .ie7icon('&#xf177;');\n}\n\n\n.icon-long-arrow-right {\n  .ie7icon('&#xf178;');\n}\n\n\n.icon-apple {\n  .ie7icon('&#xf179;');\n}\n\n\n.icon-windows {\n  .ie7icon('&#xf17a;');\n}\n\n\n.icon-android {\n  .ie7icon('&#xf17b;');\n}\n\n\n.icon-linux {\n  .ie7icon('&#xf17c;');\n}\n\n\n.icon-dribble {\n  .ie7icon('&#xf17d;');\n}\n\n\n.icon-skype {\n  .ie7icon('&#xf17e;');\n}\n\n\n.icon-foursquare {\n  .ie7icon('&#xf180;');\n}\n\n\n.icon-trello {\n  .ie7icon('&#xf181;');\n}\n\n\n.icon-female {\n  .ie7icon('&#xf182;');\n}\n\n\n.icon-male {\n  .ie7icon('&#xf183;');\n}\n\n\n.icon-gittip {\n  .ie7icon('&#xf184;');\n}\n\n\n.icon-sun {\n  .ie7icon('&#xf185;');\n}\n\n\n.icon-moon {\n  .ie7icon('&#xf186;');\n}\n\n\n.icon-archive {\n  .ie7icon('&#xf187;');\n}\n\n\n.icon-bug {\n  .ie7icon('&#xf188;');\n}\n\n\n.icon-vk {\n  .ie7icon('&#xf189;');\n}\n\n\n.icon-weibo {\n  .ie7icon('&#xf18a;');\n}\n\n\n.icon-renren {\n  .ie7icon('&#xf18b;');\n}\n\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/font-awesome.less",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n@import \"variables.less\";\n@import \"mixins.less\";\n@import \"path.less\";\n@import \"core.less\";\n@import \"bootstrap.less\";\n@import \"extras.less\";\n@import \"icons.less\";\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/icons.less",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n\n.icon-glass:before { content: @glass; }\n.icon-music:before { content: @music; }\n.icon-search:before { content: @search; }\n.icon-envelope-alt:before { content: @envelope-alt; }\n.icon-heart:before { content: @heart; }\n.icon-star:before { content: @star; }\n.icon-star-empty:before { content: @star-empty; }\n.icon-user:before { content: @user; }\n.icon-film:before { content: @film; }\n.icon-th-large:before { content: @th-large; }\n.icon-th:before { content: @th; }\n.icon-th-list:before { content: @th-list; }\n.icon-ok:before { content: @ok; }\n.icon-remove:before { content: @remove; }\n.icon-zoom-in:before { content: @zoom-in; }\n.icon-zoom-out:before { content: @zoom-out; }\n.icon-power-off:before,\n.icon-off:before { content: @off; }\n.icon-signal:before { content: @signal; }\n.icon-cog:before { content: @cog; }\n.icon-trash:before { content: @trash; }\n.icon-home:before { content: @home; }\n.icon-file-alt:before { content: @file-alt; }\n.icon-time:before { content: @time; }\n.icon-road:before { content: @road; }\n.icon-download-alt:before { content: @download-alt; }\n.icon-download:before { content: @download; }\n.icon-upload:before { content: @upload; }\n.icon-inbox:before { content: @inbox; }\n.icon-play-circle:before { content: @play-circle; }\n.icon-rotate-right:before,\n.icon-repeat:before { content: @repeat; }\n.icon-refresh:before { content: @refresh; }\n.icon-list-alt:before { content: @list-alt; }\n.icon-lock:before { content: @lock; }\n.icon-flag:before { content: @flag; }\n.icon-headphones:before { content: @headphones; }\n.icon-volume-off:before { content: @volume-off; }\n.icon-volume-down:before { content: @volume-down; }\n.icon-volume-up:before { content: @volume-up; }\n.icon-qrcode:before { content: @qrcode; }\n.icon-barcode:before { content: @barcode; }\n.icon-tag:before { content: @tag; }\n.icon-tags:before { content: @tags; }\n.icon-book:before { content: @book; }\n.icon-bookmark:before { content: @bookmark; }\n.icon-print:before { content: @print; }\n.icon-camera:before { content: @camera; }\n.icon-font:before { content: @font; }\n.icon-bold:before { content: @bold; }\n.icon-italic:before { content: @italic; }\n.icon-text-height:before { content: @text-height; }\n.icon-text-width:before { content: @text-width; }\n.icon-align-left:before { content: @align-left; }\n.icon-align-center:before { content: @align-center; }\n.icon-align-right:before { content: @align-right; }\n.icon-align-justify:before { content: @align-justify; }\n.icon-list:before { content: @list; }\n.icon-indent-left:before { content: @indent-left; }\n.icon-indent-right:before { content: @indent-right; }\n.icon-facetime-video:before { content: @facetime-video; }\n.icon-picture:before { content: @picture; }\n.icon-pencil:before { content: @pencil; }\n.icon-map-marker:before { content: @map-marker; }\n.icon-adjust:before { content: @adjust; }\n.icon-tint:before { content: @tint; }\n.icon-edit:before { content: @edit; }\n.icon-share:before { content: @share; }\n.icon-check:before { content: @check; }\n.icon-move:before { content: @move; }\n.icon-step-backward:before { content: @step-backward; }\n.icon-fast-backward:before { content: @fast-backward; }\n.icon-backward:before { content: @backward; }\n.icon-play:before { content: @play; }\n.icon-pause:before { content: @pause; }\n.icon-stop:before { content: @stop; }\n.icon-forward:before { content: @forward; }\n.icon-fast-forward:before { content: @fast-forward; }\n.icon-step-forward:before { content: @step-forward; }\n.icon-eject:before { content: @eject; }\n.icon-chevron-left:before { content: @chevron-left; }\n.icon-chevron-right:before { content: @chevron-right; }\n.icon-plus-sign:before { content: @plus-sign; }\n.icon-minus-sign:before { content: @minus-sign; }\n.icon-remove-sign:before { content: @remove-sign; }\n.icon-ok-sign:before { content: @ok-sign; }\n.icon-question-sign:before { content: @question-sign; }\n.icon-info-sign:before { content: @info-sign; }\n.icon-screenshot:before { content: @screenshot; }\n.icon-remove-circle:before { content: @remove-circle; }\n.icon-ok-circle:before { content: @ok-circle; }\n.icon-ban-circle:before { content: @ban-circle; }\n.icon-arrow-left:before { content: @arrow-left; }\n.icon-arrow-right:before { content: @arrow-right; }\n.icon-arrow-up:before { content: @arrow-up; }\n.icon-arrow-down:before { content: @arrow-down; }\n.icon-mail-forward:before,\n.icon-share-alt:before { content: @share-alt; }\n.icon-resize-full:before { content: @resize-full; }\n.icon-resize-small:before { content: @resize-small; }\n.icon-plus:before { content: @plus; }\n.icon-minus:before { content: @minus; }\n.icon-asterisk:before { content: @asterisk; }\n.icon-exclamation-sign:before { content: @exclamation-sign; }\n.icon-gift:before { content: @gift; }\n.icon-leaf:before { content: @leaf; }\n.icon-fire:before { content: @fire; }\n.icon-eye-open:before { content: @eye-open; }\n.icon-eye-close:before { content: @eye-close; }\n.icon-warning-sign:before { content: @warning-sign; }\n.icon-plane:before { content: @plane; }\n.icon-calendar:before { content: @calendar; }\n.icon-random:before { content: @random; }\n.icon-comment:before { content: @comment; }\n.icon-magnet:before { content: @magnet; }\n.icon-chevron-up:before { content: @chevron-up; }\n.icon-chevron-down:before { content: @chevron-down; }\n.icon-retweet:before { content: @retweet; }\n.icon-shopping-cart:before { content: @shopping-cart; }\n.icon-folder-close:before { content: @folder-close; }\n.icon-folder-open:before { content: @folder-open; }\n.icon-resize-vertical:before { content: @resize-vertical; }\n.icon-resize-horizontal:before { content: @resize-horizontal; }\n.icon-bar-chart:before { content: @bar-chart; }\n.icon-twitter-sign:before { content: @twitter-sign; }\n.icon-facebook-sign:before { content: @facebook-sign; }\n.icon-camera-retro:before { content: @camera-retro; }\n.icon-key:before { content: @key; }\n.icon-cogs:before { content: @cogs; }\n.icon-comments:before { content: @comments; }\n.icon-thumbs-up-alt:before { content: @thumbs-up-alt; }\n.icon-thumbs-down-alt:before { content: @thumbs-down-alt; }\n.icon-star-half:before { content: @star-half; }\n.icon-heart-empty:before { content: @heart-empty; }\n.icon-signout:before { content: @signout; }\n.icon-linkedin-sign:before { content: @linkedin-sign; }\n.icon-pushpin:before { content: @pushpin; }\n.icon-external-link:before { content: @external-link; }\n.icon-signin:before { content: @signin; }\n.icon-trophy:before { content: @trophy; }\n.icon-github-sign:before { content: @github-sign; }\n.icon-upload-alt:before { content: @upload-alt; }\n.icon-lemon:before { content: @lemon; }\n.icon-phone:before { content: @phone; }\n.icon-unchecked:before,\n.icon-check-empty:before { content: @check-empty; }\n.icon-bookmark-empty:before { content: @bookmark-empty; }\n.icon-phone-sign:before { content: @phone-sign; }\n.icon-twitter:before { content: @twitter; }\n.icon-facebook:before { content: @facebook; }\n.icon-github:before { content: @github; }\n.icon-unlock:before { content: @unlock; }\n.icon-credit-card:before { content: @credit-card; }\n.icon-rss:before { content: @rss; }\n.icon-hdd:before { content: @hdd; }\n.icon-bullhorn:before { content: @bullhorn; }\n.icon-bell:before { content: @bell; }\n.icon-certificate:before { content: @certificate; }\n.icon-hand-right:before { content: @hand-right; }\n.icon-hand-left:before { content: @hand-left; }\n.icon-hand-up:before { content: @hand-up; }\n.icon-hand-down:before { content: @hand-down; }\n.icon-circle-arrow-left:before { content: @circle-arrow-left; }\n.icon-circle-arrow-right:before { content: @circle-arrow-right; }\n.icon-circle-arrow-up:before { content: @circle-arrow-up; }\n.icon-circle-arrow-down:before { content: @circle-arrow-down; }\n.icon-globe:before { content: @globe; }\n.icon-wrench:before { content: @wrench; }\n.icon-tasks:before { content: @tasks; }\n.icon-filter:before { content: @filter; }\n.icon-briefcase:before { content: @briefcase; }\n.icon-fullscreen:before { content: @fullscreen; }\n.icon-group:before { content: @group; }\n.icon-link:before { content: @link; }\n.icon-cloud:before { content: @cloud; }\n.icon-beaker:before { content: @beaker; }\n.icon-cut:before { content: @cut; }\n.icon-copy:before { content: @copy; }\n.icon-paperclip:before,\n.icon-paper-clip:before { content: @paper-clip; }\n.icon-save:before { content: @save; }\n.icon-sign-blank:before { content: @sign-blank; }\n.icon-reorder:before { content: @reorder; }\n.icon-list-ul:before { content: @list-ul; }\n.icon-list-ol:before { content: @list-ol; }\n.icon-strikethrough:before { content: @strikethrough; }\n.icon-underline:before { content: @underline; }\n.icon-table:before { content: @table; }\n.icon-magic:before { content: @magic; }\n.icon-truck:before { content: @truck; }\n.icon-pinterest:before { content: @pinterest; }\n.icon-pinterest-sign:before { content: @pinterest-sign; }\n.icon-google-plus-sign:before { content: @google-plus-sign; }\n.icon-google-plus:before { content: @google-plus; }\n.icon-money:before { content: @money; }\n.icon-caret-down:before { content: @caret-down; }\n.icon-caret-up:before { content: @caret-up; }\n.icon-caret-left:before { content: @caret-left; }\n.icon-caret-right:before { content: @caret-right; }\n.icon-columns:before { content: @columns; }\n.icon-sort:before { content: @sort; }\n.icon-sort-down:before { content: @sort-down; }\n.icon-sort-up:before { content: @sort-up; }\n.icon-envelope:before { content: @envelope; }\n.icon-linkedin:before { content: @linkedin; }\n.icon-rotate-left:before,\n.icon-undo:before { content: @undo; }\n.icon-legal:before { content: @legal; }\n.icon-dashboard:before { content: @dashboard; }\n.icon-comment-alt:before { content: @comment-alt; }\n.icon-comments-alt:before { content: @comments-alt; }\n.icon-bolt:before { content: @bolt; }\n.icon-sitemap:before { content: @sitemap; }\n.icon-umbrella:before { content: @umbrella; }\n.icon-paste:before { content: @paste; }\n.icon-lightbulb:before { content: @lightbulb; }\n.icon-exchange:before { content: @exchange; }\n.icon-cloud-download:before { content: @cloud-download; }\n.icon-cloud-upload:before { content: @cloud-upload; }\n.icon-user-md:before { content: @user-md; }\n.icon-stethoscope:before { content: @stethoscope; }\n.icon-suitcase:before { content: @suitcase; }\n.icon-bell-alt:before { content: @bell-alt; }\n.icon-coffee:before { content: @coffee; }\n.icon-food:before { content: @food; }\n.icon-file-text-alt:before { content: @file-text-alt; }\n.icon-building:before { content: @building; }\n.icon-hospital:before { content: @hospital; }\n.icon-ambulance:before { content: @ambulance; }\n.icon-medkit:before { content: @medkit; }\n.icon-fighter-jet:before { content: @fighter-jet; }\n.icon-beer:before { content: @beer; }\n.icon-h-sign:before { content: @h-sign; }\n.icon-plus-sign-alt:before { content: @plus-sign-alt; }\n.icon-double-angle-left:before { content: @double-angle-left; }\n.icon-double-angle-right:before { content: @double-angle-right; }\n.icon-double-angle-up:before { content: @double-angle-up; }\n.icon-double-angle-down:before { content: @double-angle-down; }\n.icon-angle-left:before { content: @angle-left; }\n.icon-angle-right:before { content: @angle-right; }\n.icon-angle-up:before { content: @angle-up; }\n.icon-angle-down:before { content: @angle-down; }\n.icon-desktop:before { content: @desktop; }\n.icon-laptop:before { content: @laptop; }\n.icon-tablet:before { content: @tablet; }\n.icon-mobile-phone:before { content: @mobile-phone; }\n.icon-circle-blank:before { content: @circle-blank; }\n.icon-quote-left:before { content: @quote-left; }\n.icon-quote-right:before { content: @quote-right; }\n.icon-spinner:before { content: @spinner; }\n.icon-circle:before { content: @circle; }\n.icon-mail-reply:before,\n.icon-reply:before { content: @reply; }\n.icon-github-alt:before { content: @github-alt; }\n.icon-folder-close-alt:before { content: @folder-close-alt; }\n.icon-folder-open-alt:before { content: @folder-open-alt; }\n.icon-expand-alt:before { content: @expand-alt; }\n.icon-collapse-alt:before { content: @collapse-alt; }\n.icon-smile:before { content: @smile; }\n.icon-frown:before { content: @frown; }\n.icon-meh:before { content: @meh; }\n.icon-gamepad:before { content: @gamepad; }\n.icon-keyboard:before { content: @keyboard; }\n.icon-flag-alt:before { content: @flag-alt; }\n.icon-flag-checkered:before { content: @flag-checkered; }\n.icon-terminal:before { content: @terminal; }\n.icon-code:before { content: @code; }\n.icon-reply-all:before { content: @reply-all; }\n.icon-mail-reply-all:before { content: @mail-reply-all; }\n.icon-star-half-full:before,\n.icon-star-half-empty:before { content: @star-half-empty; }\n.icon-location-arrow:before { content: @location-arrow; }\n.icon-crop:before { content: @crop; }\n.icon-code-fork:before { content: @code-fork; }\n.icon-unlink:before { content: @unlink; }\n.icon-question:before { content: @question; }\n.icon-info:before { content: @info; }\n.icon-exclamation:before { content: @exclamation; }\n.icon-superscript:before { content: @superscript; }\n.icon-subscript:before { content: @subscript; }\n.icon-eraser:before { content: @eraser; }\n.icon-puzzle-piece:before { content: @puzzle-piece; }\n.icon-microphone:before { content: @microphone; }\n.icon-microphone-off:before { content: @microphone-off; }\n.icon-shield:before { content: @shield; }\n.icon-calendar-empty:before { content: @calendar-empty; }\n.icon-fire-extinguisher:before { content: @fire-extinguisher; }\n.icon-rocket:before { content: @rocket; }\n.icon-maxcdn:before { content: @maxcdn; }\n.icon-chevron-sign-left:before { content: @chevron-sign-left; }\n.icon-chevron-sign-right:before { content: @chevron-sign-right; }\n.icon-chevron-sign-up:before { content: @chevron-sign-up; }\n.icon-chevron-sign-down:before { content: @chevron-sign-down; }\n.icon-html5:before { content: @html5; }\n.icon-css3:before { content: @css3; }\n.icon-anchor:before { content: @anchor; }\n.icon-unlock-alt:before { content: @unlock-alt; }\n.icon-bullseye:before { content: @bullseye; }\n.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; }\n.icon-ellipsis-vertical:before { content: @ellipsis-vertical; }\n.icon-rss-sign:before { content: @rss-sign; }\n.icon-play-sign:before { content: @play-sign; }\n.icon-ticket:before { content: @ticket; }\n.icon-minus-sign-alt:before { content: @minus-sign-alt; }\n.icon-check-minus:before { content: @check-minus; }\n.icon-level-up:before { content: @level-up; }\n.icon-level-down:before { content: @level-down; }\n.icon-check-sign:before { content: @check-sign; }\n.icon-edit-sign:before { content: @edit-sign; }\n.icon-external-link-sign:before { content: @external-link-sign; }\n.icon-share-sign:before { content: @share-sign; }\n.icon-compass:before { content: @compass; }\n.icon-collapse:before { content: @collapse; }\n.icon-collapse-top:before { content: @collapse-top; }\n.icon-expand:before { content: @expand; }\n.icon-euro:before,\n.icon-eur:before { content: @eur; }\n.icon-gbp:before { content: @gbp; }\n.icon-dollar:before,\n.icon-usd:before { content: @usd; }\n.icon-rupee:before,\n.icon-inr:before { content: @inr; }\n.icon-yen:before,\n.icon-jpy:before { content: @jpy; }\n.icon-renminbi:before,\n.icon-cny:before { content: @cny; }\n.icon-won:before,\n.icon-krw:before { content: @krw; }\n.icon-bitcoin:before,\n.icon-btc:before { content: @btc; }\n.icon-file:before { content: @file; }\n.icon-file-text:before { content: @file-text; }\n.icon-sort-by-alphabet:before { content: @sort-by-alphabet; }\n.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; }\n.icon-sort-by-attributes:before { content: @sort-by-attributes; }\n.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; }\n.icon-sort-by-order:before { content: @sort-by-order; }\n.icon-sort-by-order-alt:before { content: @sort-by-order-alt; }\n.icon-thumbs-up:before { content: @thumbs-up; }\n.icon-thumbs-down:before { content: @thumbs-down; }\n.icon-youtube-sign:before { content: @youtube-sign; }\n.icon-youtube:before { content: @youtube; }\n.icon-xing:before { content: @xing; }\n.icon-xing-sign:before { content: @xing-sign; }\n.icon-youtube-play:before { content: @youtube-play; }\n.icon-dropbox:before { content: @dropbox; }\n.icon-stackexchange:before { content: @stackexchange; }\n.icon-instagram:before { content: @instagram; }\n.icon-flickr:before { content: @flickr; }\n.icon-adn:before { content: @adn; }\n.icon-bitbucket:before { content: @bitbucket; }\n.icon-bitbucket-sign:before { content: @bitbucket-sign; }\n.icon-tumblr:before { content: @tumblr; }\n.icon-tumblr-sign:before { content: @tumblr-sign; }\n.icon-long-arrow-down:before { content: @long-arrow-down; }\n.icon-long-arrow-up:before { content: @long-arrow-up; }\n.icon-long-arrow-left:before { content: @long-arrow-left; }\n.icon-long-arrow-right:before { content: @long-arrow-right; }\n.icon-apple:before { content: @apple; }\n.icon-windows:before { content: @windows; }\n.icon-android:before { content: @android; }\n.icon-linux:before { content: @linux; }\n.icon-dribble:before { content: @dribble; }\n.icon-skype:before { content: @skype; }\n.icon-foursquare:before { content: @foursquare; }\n.icon-trello:before { content: @trello; }\n.icon-female:before { content: @female; }\n.icon-male:before { content: @male; }\n.icon-gittip:before { content: @gittip; }\n.icon-sun:before { content: @sun; }\n.icon-moon:before { content: @moon; }\n.icon-archive:before { content: @archive; }\n.icon-bug:before { content: @bug; }\n.icon-vk:before { content: @vk; }\n.icon-weibo:before { content: @weibo; }\n.icon-renren:before { content: @renren; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/mixins.less",
    "content": "// Mixins\n// --------------------------\n\n.icon(@icon) {\n  .icon-FontAwesome();\n  content: @icon;\n}\n\n.icon-FontAwesome() {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em; // fixes ie7 issues\n}\n\n.border-radius(@radius) {\n  -webkit-border-radius: @radius;\n  -moz-border-radius: @radius;\n  border-radius: @radius;\n}\n\n.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) {\n  .icon-stack {\n    position: relative;\n    display: inline-block;\n    width: @width;\n    height: @height;\n    line-height: @width;\n    vertical-align: -35%;\n    [class^=\"icon-\"],\n    [class*=\" icon-\"] {\n      display: block;\n      text-align: center;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      font-size: @top-font-size;\n      line-height: inherit;\n      *line-height: @height;\n    }\n    .icon-stack-base {\n      font-size: @base-font-size;\n      *line-height: @height / @base-font-size;\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/path.less",
    "content": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}');\n  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'),\n    url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'),\n    url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'),\n    url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg');\n//  src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts\n  font-weight: normal;\n  font-style: normal;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/less/variables.less",
    "content": "// Variables\n// --------------------------\n\n@FontAwesomePath:    \"../font\";\n//@FontAwesomePath:    \"//netdna.bootstrapcdn.com/font-awesome/3.2.0/font\"; // for referencing Bootstrap CDN font files directly\n@FontAwesomeVersion: \"3.2.0\";\n@borderColor:        #eee;\n@iconMuted:          #eee;\n@iconLight:          #fff;\n@iconDark:           #333;\n@icons-li-width:     30/14em;\n\n\n  @glass: \"\\f000\";\n\n  @music: \"\\f001\";\n\n  @search: \"\\f002\";\n\n  @envelope-alt: \"\\f003\";\n\n  @heart: \"\\f004\";\n\n  @star: \"\\f005\";\n\n  @star-empty: \"\\f006\";\n\n  @user: \"\\f007\";\n\n  @film: \"\\f008\";\n\n  @th-large: \"\\f009\";\n\n  @th: \"\\f00a\";\n\n  @th-list: \"\\f00b\";\n\n  @ok: \"\\f00c\";\n\n  @remove: \"\\f00d\";\n\n  @zoom-in: \"\\f00e\";\n\n  @zoom-out: \"\\f010\";\n\n  @off: \"\\f011\";\n\n  @signal: \"\\f012\";\n\n  @cog: \"\\f013\";\n\n  @trash: \"\\f014\";\n\n  @home: \"\\f015\";\n\n  @file-alt: \"\\f016\";\n\n  @time: \"\\f017\";\n\n  @road: \"\\f018\";\n\n  @download-alt: \"\\f019\";\n\n  @download: \"\\f01a\";\n\n  @upload: \"\\f01b\";\n\n  @inbox: \"\\f01c\";\n\n  @play-circle: \"\\f01d\";\n\n  @repeat: \"\\f01e\";\n\n  @refresh: \"\\f021\";\n\n  @list-alt: \"\\f022\";\n\n  @lock: \"\\f023\";\n\n  @flag: \"\\f024\";\n\n  @headphones: \"\\f025\";\n\n  @volume-off: \"\\f026\";\n\n  @volume-down: \"\\f027\";\n\n  @volume-up: \"\\f028\";\n\n  @qrcode: \"\\f029\";\n\n  @barcode: \"\\f02a\";\n\n  @tag: \"\\f02b\";\n\n  @tags: \"\\f02c\";\n\n  @book: \"\\f02d\";\n\n  @bookmark: \"\\f02e\";\n\n  @print: \"\\f02f\";\n\n  @camera: \"\\f030\";\n\n  @font: \"\\f031\";\n\n  @bold: \"\\f032\";\n\n  @italic: \"\\f033\";\n\n  @text-height: \"\\f034\";\n\n  @text-width: \"\\f035\";\n\n  @align-left: \"\\f036\";\n\n  @align-center: \"\\f037\";\n\n  @align-right: \"\\f038\";\n\n  @align-justify: \"\\f039\";\n\n  @list: \"\\f03a\";\n\n  @indent-left: \"\\f03b\";\n\n  @indent-right: \"\\f03c\";\n\n  @facetime-video: \"\\f03d\";\n\n  @picture: \"\\f03e\";\n\n  @pencil: \"\\f040\";\n\n  @map-marker: \"\\f041\";\n\n  @adjust: \"\\f042\";\n\n  @tint: \"\\f043\";\n\n  @edit: \"\\f044\";\n\n  @share: \"\\f045\";\n\n  @check: \"\\f046\";\n\n  @move: \"\\f047\";\n\n  @step-backward: \"\\f048\";\n\n  @fast-backward: \"\\f049\";\n\n  @backward: \"\\f04a\";\n\n  @play: \"\\f04b\";\n\n  @pause: \"\\f04c\";\n\n  @stop: \"\\f04d\";\n\n  @forward: \"\\f04e\";\n\n  @fast-forward: \"\\f050\";\n\n  @step-forward: \"\\f051\";\n\n  @eject: \"\\f052\";\n\n  @chevron-left: \"\\f053\";\n\n  @chevron-right: \"\\f054\";\n\n  @plus-sign: \"\\f055\";\n\n  @minus-sign: \"\\f056\";\n\n  @remove-sign: \"\\f057\";\n\n  @ok-sign: \"\\f058\";\n\n  @question-sign: \"\\f059\";\n\n  @info-sign: \"\\f05a\";\n\n  @screenshot: \"\\f05b\";\n\n  @remove-circle: \"\\f05c\";\n\n  @ok-circle: \"\\f05d\";\n\n  @ban-circle: \"\\f05e\";\n\n  @arrow-left: \"\\f060\";\n\n  @arrow-right: \"\\f061\";\n\n  @arrow-up: \"\\f062\";\n\n  @arrow-down: \"\\f063\";\n\n  @share-alt: \"\\f064\";\n\n  @resize-full: \"\\f065\";\n\n  @resize-small: \"\\f066\";\n\n  @plus: \"\\f067\";\n\n  @minus: \"\\f068\";\n\n  @asterisk: \"\\f069\";\n\n  @exclamation-sign: \"\\f06a\";\n\n  @gift: \"\\f06b\";\n\n  @leaf: \"\\f06c\";\n\n  @fire: \"\\f06d\";\n\n  @eye-open: \"\\f06e\";\n\n  @eye-close: \"\\f070\";\n\n  @warning-sign: \"\\f071\";\n\n  @plane: \"\\f072\";\n\n  @calendar: \"\\f073\";\n\n  @random: \"\\f074\";\n\n  @comment: \"\\f075\";\n\n  @magnet: \"\\f076\";\n\n  @chevron-up: \"\\f077\";\n\n  @chevron-down: \"\\f078\";\n\n  @retweet: \"\\f079\";\n\n  @shopping-cart: \"\\f07a\";\n\n  @folder-close: \"\\f07b\";\n\n  @folder-open: \"\\f07c\";\n\n  @resize-vertical: \"\\f07d\";\n\n  @resize-horizontal: \"\\f07e\";\n\n  @bar-chart: \"\\f080\";\n\n  @twitter-sign: \"\\f081\";\n\n  @facebook-sign: \"\\f082\";\n\n  @camera-retro: \"\\f083\";\n\n  @key: \"\\f084\";\n\n  @cogs: \"\\f085\";\n\n  @comments: \"\\f086\";\n\n  @thumbs-up-alt: \"\\f087\";\n\n  @thumbs-down-alt: \"\\f088\";\n\n  @star-half: \"\\f089\";\n\n  @heart-empty: \"\\f08a\";\n\n  @signout: \"\\f08b\";\n\n  @linkedin-sign: \"\\f08c\";\n\n  @pushpin: \"\\f08d\";\n\n  @external-link: \"\\f08e\";\n\n  @signin: \"\\f090\";\n\n  @trophy: \"\\f091\";\n\n  @github-sign: \"\\f092\";\n\n  @upload-alt: \"\\f093\";\n\n  @lemon: \"\\f094\";\n\n  @phone: \"\\f095\";\n\n  @check-empty: \"\\f096\";\n\n  @bookmark-empty: \"\\f097\";\n\n  @phone-sign: \"\\f098\";\n\n  @twitter: \"\\f099\";\n\n  @facebook: \"\\f09a\";\n\n  @github: \"\\f09b\";\n\n  @unlock: \"\\f09c\";\n\n  @credit-card: \"\\f09d\";\n\n  @rss: \"\\f09e\";\n\n  @hdd: \"\\f0a0\";\n\n  @bullhorn: \"\\f0a1\";\n\n  @bell: \"\\f0a2\";\n\n  @certificate: \"\\f0a3\";\n\n  @hand-right: \"\\f0a4\";\n\n  @hand-left: \"\\f0a5\";\n\n  @hand-up: \"\\f0a6\";\n\n  @hand-down: \"\\f0a7\";\n\n  @circle-arrow-left: \"\\f0a8\";\n\n  @circle-arrow-right: \"\\f0a9\";\n\n  @circle-arrow-up: \"\\f0aa\";\n\n  @circle-arrow-down: \"\\f0ab\";\n\n  @globe: \"\\f0ac\";\n\n  @wrench: \"\\f0ad\";\n\n  @tasks: \"\\f0ae\";\n\n  @filter: \"\\f0b0\";\n\n  @briefcase: \"\\f0b1\";\n\n  @fullscreen: \"\\f0b2\";\n\n  @group: \"\\f0c0\";\n\n  @link: \"\\f0c1\";\n\n  @cloud: \"\\f0c2\";\n\n  @beaker: \"\\f0c3\";\n\n  @cut: \"\\f0c4\";\n\n  @copy: \"\\f0c5\";\n\n  @paper-clip: \"\\f0c6\";\n\n  @save: \"\\f0c7\";\n\n  @sign-blank: \"\\f0c8\";\n\n  @reorder: \"\\f0c9\";\n\n  @list-ul: \"\\f0ca\";\n\n  @list-ol: \"\\f0cb\";\n\n  @strikethrough: \"\\f0cc\";\n\n  @underline: \"\\f0cd\";\n\n  @table: \"\\f0ce\";\n\n  @magic: \"\\f0d0\";\n\n  @truck: \"\\f0d1\";\n\n  @pinterest: \"\\f0d2\";\n\n  @pinterest-sign: \"\\f0d3\";\n\n  @google-plus-sign: \"\\f0d4\";\n\n  @google-plus: \"\\f0d5\";\n\n  @money: \"\\f0d6\";\n\n  @caret-down: \"\\f0d7\";\n\n  @caret-up: \"\\f0d8\";\n\n  @caret-left: \"\\f0d9\";\n\n  @caret-right: \"\\f0da\";\n\n  @columns: \"\\f0db\";\n\n  @sort: \"\\f0dc\";\n\n  @sort-down: \"\\f0dd\";\n\n  @sort-up: \"\\f0de\";\n\n  @envelope: \"\\f0e0\";\n\n  @linkedin: \"\\f0e1\";\n\n  @undo: \"\\f0e2\";\n\n  @legal: \"\\f0e3\";\n\n  @dashboard: \"\\f0e4\";\n\n  @comment-alt: \"\\f0e5\";\n\n  @comments-alt: \"\\f0e6\";\n\n  @bolt: \"\\f0e7\";\n\n  @sitemap: \"\\f0e8\";\n\n  @umbrella: \"\\f0e9\";\n\n  @paste: \"\\f0ea\";\n\n  @lightbulb: \"\\f0eb\";\n\n  @exchange: \"\\f0ec\";\n\n  @cloud-download: \"\\f0ed\";\n\n  @cloud-upload: \"\\f0ee\";\n\n  @user-md: \"\\f0f0\";\n\n  @stethoscope: \"\\f0f1\";\n\n  @suitcase: \"\\f0f2\";\n\n  @bell-alt: \"\\f0f3\";\n\n  @coffee: \"\\f0f4\";\n\n  @food: \"\\f0f5\";\n\n  @file-text-alt: \"\\f0f6\";\n\n  @building: \"\\f0f7\";\n\n  @hospital: \"\\f0f8\";\n\n  @ambulance: \"\\f0f9\";\n\n  @medkit: \"\\f0fa\";\n\n  @fighter-jet: \"\\f0fb\";\n\n  @beer: \"\\f0fc\";\n\n  @h-sign: \"\\f0fd\";\n\n  @plus-sign-alt: \"\\f0fe\";\n\n  @double-angle-left: \"\\f100\";\n\n  @double-angle-right: \"\\f101\";\n\n  @double-angle-up: \"\\f102\";\n\n  @double-angle-down: \"\\f103\";\n\n  @angle-left: \"\\f104\";\n\n  @angle-right: \"\\f105\";\n\n  @angle-up: \"\\f106\";\n\n  @angle-down: \"\\f107\";\n\n  @desktop: \"\\f108\";\n\n  @laptop: \"\\f109\";\n\n  @tablet: \"\\f10a\";\n\n  @mobile-phone: \"\\f10b\";\n\n  @circle-blank: \"\\f10c\";\n\n  @quote-left: \"\\f10d\";\n\n  @quote-right: \"\\f10e\";\n\n  @spinner: \"\\f110\";\n\n  @circle: \"\\f111\";\n\n  @reply: \"\\f112\";\n\n  @github-alt: \"\\f113\";\n\n  @folder-close-alt: \"\\f114\";\n\n  @folder-open-alt: \"\\f115\";\n\n  @expand-alt: \"\\f116\";\n\n  @collapse-alt: \"\\f117\";\n\n  @smile: \"\\f118\";\n\n  @frown: \"\\f119\";\n\n  @meh: \"\\f11a\";\n\n  @gamepad: \"\\f11b\";\n\n  @keyboard: \"\\f11c\";\n\n  @flag-alt: \"\\f11d\";\n\n  @flag-checkered: \"\\f11e\";\n\n  @terminal: \"\\f120\";\n\n  @code: \"\\f121\";\n\n  @reply-all: \"\\f122\";\n\n  @mail-reply-all: \"\\f122\";\n\n  @star-half-empty: \"\\f123\";\n\n  @location-arrow: \"\\f124\";\n\n  @crop: \"\\f125\";\n\n  @code-fork: \"\\f126\";\n\n  @unlink: \"\\f127\";\n\n  @question: \"\\f128\";\n\n  @info: \"\\f129\";\n\n  @exclamation: \"\\f12a\";\n\n  @superscript: \"\\f12b\";\n\n  @subscript: \"\\f12c\";\n\n  @eraser: \"\\f12d\";\n\n  @puzzle-piece: \"\\f12e\";\n\n  @microphone: \"\\f130\";\n\n  @microphone-off: \"\\f131\";\n\n  @shield: \"\\f132\";\n\n  @calendar-empty: \"\\f133\";\n\n  @fire-extinguisher: \"\\f134\";\n\n  @rocket: \"\\f135\";\n\n  @maxcdn: \"\\f136\";\n\n  @chevron-sign-left: \"\\f137\";\n\n  @chevron-sign-right: \"\\f138\";\n\n  @chevron-sign-up: \"\\f139\";\n\n  @chevron-sign-down: \"\\f13a\";\n\n  @html5: \"\\f13b\";\n\n  @css3: \"\\f13c\";\n\n  @anchor: \"\\f13d\";\n\n  @unlock-alt: \"\\f13e\";\n\n  @bullseye: \"\\f140\";\n\n  @ellipsis-horizontal: \"\\f141\";\n\n  @ellipsis-vertical: \"\\f142\";\n\n  @rss-sign: \"\\f143\";\n\n  @play-sign: \"\\f144\";\n\n  @ticket: \"\\f145\";\n\n  @minus-sign-alt: \"\\f146\";\n\n  @check-minus: \"\\f147\";\n\n  @level-up: \"\\f148\";\n\n  @level-down: \"\\f149\";\n\n  @check-sign: \"\\f14a\";\n\n  @edit-sign: \"\\f14b\";\n\n  @external-link-sign: \"\\f14c\";\n\n  @share-sign: \"\\f14d\";\n\n  @compass: \"\\f14e\";\n\n  @collapse: \"\\f150\";\n\n  @collapse-top: \"\\f151\";\n\n  @expand: \"\\f152\";\n\n  @eur: \"\\f153\";\n\n  @gbp: \"\\f154\";\n\n  @usd: \"\\f155\";\n\n  @inr: \"\\f156\";\n\n  @jpy: \"\\f157\";\n\n  @cny: \"\\f158\";\n\n  @krw: \"\\f159\";\n\n  @btc: \"\\f15a\";\n\n  @file: \"\\f15b\";\n\n  @file-text: \"\\f15c\";\n\n  @sort-by-alphabet: \"\\f15d\";\n\n  @sort-by-alphabet-alt: \"\\f15e\";\n\n  @sort-by-attributes: \"\\f160\";\n\n  @sort-by-attributes-alt: \"\\f161\";\n\n  @sort-by-order: \"\\f162\";\n\n  @sort-by-order-alt: \"\\f163\";\n\n  @thumbs-up: \"\\f164\";\n\n  @thumbs-down: \"\\f165\";\n\n  @youtube-sign: \"\\f166\";\n\n  @youtube: \"\\f167\";\n\n  @xing: \"\\f168\";\n\n  @xing-sign: \"\\f169\";\n\n  @youtube-play: \"\\f16a\";\n\n  @dropbox: \"\\f16b\";\n\n  @stackexchange: \"\\f16c\";\n\n  @instagram: \"\\f16d\";\n\n  @flickr: \"\\f16e\";\n\n  @adn: \"\\f170\";\n\n  @bitbucket: \"\\f171\";\n\n  @bitbucket-sign: \"\\f172\";\n\n  @tumblr: \"\\f173\";\n\n  @tumblr-sign: \"\\f174\";\n\n  @long-arrow-down: \"\\f175\";\n\n  @long-arrow-up: \"\\f176\";\n\n  @long-arrow-left: \"\\f177\";\n\n  @long-arrow-right: \"\\f178\";\n\n  @apple: \"\\f179\";\n\n  @windows: \"\\f17a\";\n\n  @android: \"\\f17b\";\n\n  @linux: \"\\f17c\";\n\n  @dribble: \"\\f17d\";\n\n  @skype: \"\\f17e\";\n\n  @foursquare: \"\\f180\";\n\n  @trello: \"\\f181\";\n\n  @female: \"\\f182\";\n\n  @male: \"\\f183\";\n\n  @gittip: \"\\f184\";\n\n  @sun: \"\\f185\";\n\n  @moon: \"\\f186\";\n\n  @archive: \"\\f187\";\n\n  @bug: \"\\f188\";\n\n  @vk: \"\\f189\";\n\n  @weibo: \"\\f18a\";\n\n  @renren: \"\\f18b\";\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_bootstrap.scss",
    "content": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n\n\n/* keeps Bootstrap styles with and without icons the same */\n.btn, .nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    //    display: inline;\n    &.icon-large { line-height: .9em; }\n    &.icon-spin { display: inline-block; }\n  }\n}\n.nav-tabs, .nav-pills {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &, &.icon-large { line-height: .9em; }\n  }\n}\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .18em; }\n    }\n    &.icon-spin.icon-large { line-height: .8em; }\n  }\n}\n.btn.btn-small {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .25em; }\n    }\n  }\n}\n.btn.btn-large {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    margin-top: 0; // overrides bootstrap default\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .05em; }\n    }\n    &.pull-left.icon-2x { margin-right: .2em; }\n    &.pull-right.icon-2x { margin-left: .2em; }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_core.scss",
    "content": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  @include icon-FontAwesome();\n}\n\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: (4em/3);\n}\n\n/* makes sure icons active on rollover in links */\na {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    display: inline;\n  }\n}\n\n/* increased font size for icon-large */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.icon-fixed-width {\n    display: inline-block;\n    width: (16em/14);\n    text-align: right;\n    padding-right: (4em/14);\n    &.icon-large {\n      width: (20em/14);\n    }\n  }\n}\n\n.icons-ul {\n  margin-left: $icons-li-width;\n  list-style-type: none;\n\n  > li { position: relative; }\n\n  .icon-li {\n    position: absolute;\n    left: -$icons-li-width;\n    width: $icons-li-width;\n    text-align: center;\n    line-height: inherit;\n  }\n}\n\n// allows usage of the hide class directly on font awesome icons\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.hide {\n    display: none;\n  }\n}\n\n.icon-muted { color: $iconMuted; }\n.icon-light { color: $iconLight; }\n.icon-dark { color: $iconDark; }\n\n// Icon Borders\n// -------------------------\n\n.icon-border {\n  border: solid 1px $borderColor;\n  padding: .2em .25em .15em;\n  @include border-radius(3px);\n}\n\n// Icon Sizes\n// -------------------------\n\n.icon-2x {\n  font-size: 2em;\n  &.icon-border {\n    border-width: 2px;\n    @include border-radius(4px);\n  }\n}\n.icon-3x {\n  font-size: 3em;\n  &.icon-border {\n    border-width: 3px;\n    @include border-radius(5px);\n  }\n}\n.icon-4x {\n  font-size: 4em;\n  &.icon-border {\n    border-width: 4px;\n    @include border-radius(6px);\n  }\n}\n\n.icon-5x {\n  font-size: 5em;\n  &.icon-border {\n    border-width: 5px;\n    @include border-radius(7px);\n  }\n}\n\n\n// Floats & Margins\n// -------------------------\n\n// Quick floats\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.pull-left {\n    margin-right: .3em;\n  }\n  &.pull-right {\n    margin-left: .3em;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_extras.scss",
    "content": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n@include icon-stack();\n\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n\n@-moz-keyframes spin {\n  0% { -moz-transform: rotate(0deg); }\n  100% { -moz-transform: rotate(359deg); }\n}\n@-webkit-keyframes spin {\n  0% { -webkit-transform: rotate(0deg); }\n  100% { -webkit-transform: rotate(359deg); }\n}\n@-o-keyframes spin {\n  0% { -o-transform: rotate(0deg); }\n  100% { -o-transform: rotate(359deg); }\n}\n@-ms-keyframes spin {\n  0% { -ms-transform: rotate(0deg); }\n  100% { -ms-transform: rotate(359deg); }\n}\n@keyframes spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(359deg); }\n}\n\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n/* ensure rotation occurs inside anchor tags */\na {\n  .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {\n    &:before { display: inline-block; }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_icons.scss",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n * readers do not read off random characters that represent icons */\n\n.icon-glass:before { content: $glass; }\n.icon-music:before { content: $music; }\n.icon-search:before { content: $search; }\n.icon-envelope-alt:before { content: $envelope-alt; }\n.icon-heart:before { content: $heart; }\n.icon-star:before { content: $star; }\n.icon-star-empty:before { content: $star-empty; }\n.icon-user:before { content: $user; }\n.icon-film:before { content: $film; }\n.icon-th-large:before { content: $th-large; }\n.icon-th:before { content: $th; }\n.icon-th-list:before { content: $th-list; }\n.icon-ok:before { content: $ok; }\n.icon-remove:before { content: $remove; }\n.icon-zoom-in:before { content: $zoom-in; }\n.icon-zoom-out:before { content: $zoom-out; }\n.icon-power-off:before,\n.icon-off:before { content: $off; }\n.icon-signal:before { content: $signal; }\n.icon-cog:before { content: $cog; }\n.icon-trash:before { content: $trash; }\n.icon-home:before { content: $home; }\n.icon-file-alt:before { content: $file-alt; }\n.icon-time:before { content: $time; }\n.icon-road:before { content: $road; }\n.icon-download-alt:before { content: $download-alt; }\n.icon-download:before { content: $download; }\n.icon-upload:before { content: $upload; }\n.icon-inbox:before { content: $inbox; }\n.icon-play-circle:before { content: $play-circle; }\n.icon-rotate-right:before,\n.icon-repeat:before { content: $repeat; }\n.icon-refresh:before { content: $refresh; }\n.icon-list-alt:before { content: $list-alt; }\n.icon-lock:before { content: $lock; }\n.icon-flag:before { content: $flag; }\n.icon-headphones:before { content: $headphones; }\n.icon-volume-off:before { content: $volume-off; }\n.icon-volume-down:before { content: $volume-down; }\n.icon-volume-up:before { content: $volume-up; }\n.icon-qrcode:before { content: $qrcode; }\n.icon-barcode:before { content: $barcode; }\n.icon-tag:before { content: $tag; }\n.icon-tags:before { content: $tags; }\n.icon-book:before { content: $book; }\n.icon-bookmark:before { content: $bookmark; }\n.icon-print:before { content: $print; }\n.icon-camera:before { content: $camera; }\n.icon-font:before { content: $font; }\n.icon-bold:before { content: $bold; }\n.icon-italic:before { content: $italic; }\n.icon-text-height:before { content: $text-height; }\n.icon-text-width:before { content: $text-width; }\n.icon-align-left:before { content: $align-left; }\n.icon-align-center:before { content: $align-center; }\n.icon-align-right:before { content: $align-right; }\n.icon-align-justify:before { content: $align-justify; }\n.icon-list:before { content: $list; }\n.icon-indent-left:before { content: $indent-left; }\n.icon-indent-right:before { content: $indent-right; }\n.icon-facetime-video:before { content: $facetime-video; }\n.icon-picture:before { content: $picture; }\n.icon-pencil:before { content: $pencil; }\n.icon-map-marker:before { content: $map-marker; }\n.icon-adjust:before { content: $adjust; }\n.icon-tint:before { content: $tint; }\n.icon-edit:before { content: $edit; }\n.icon-share:before { content: $share; }\n.icon-check:before { content: $check; }\n.icon-move:before { content: $move; }\n.icon-step-backward:before { content: $step-backward; }\n.icon-fast-backward:before { content: $fast-backward; }\n.icon-backward:before { content: $backward; }\n.icon-play:before { content: $play; }\n.icon-pause:before { content: $pause; }\n.icon-stop:before { content: $stop; }\n.icon-forward:before { content: $forward; }\n.icon-fast-forward:before { content: $fast-forward; }\n.icon-step-forward:before { content: $step-forward; }\n.icon-eject:before { content: $eject; }\n.icon-chevron-left:before { content: $chevron-left; }\n.icon-chevron-right:before { content: $chevron-right; }\n.icon-plus-sign:before { content: $plus-sign; }\n.icon-minus-sign:before { content: $minus-sign; }\n.icon-remove-sign:before { content: $remove-sign; }\n.icon-ok-sign:before { content: $ok-sign; }\n.icon-question-sign:before { content: $question-sign; }\n.icon-info-sign:before { content: $info-sign; }\n.icon-screenshot:before { content: $screenshot; }\n.icon-remove-circle:before { content: $remove-circle; }\n.icon-ok-circle:before { content: $ok-circle; }\n.icon-ban-circle:before { content: $ban-circle; }\n.icon-arrow-left:before { content: $arrow-left; }\n.icon-arrow-right:before { content: $arrow-right; }\n.icon-arrow-up:before { content: $arrow-up; }\n.icon-arrow-down:before { content: $arrow-down; }\n.icon-mail-forward:before,\n.icon-share-alt:before { content: $share-alt; }\n.icon-resize-full:before { content: $resize-full; }\n.icon-resize-small:before { content: $resize-small; }\n.icon-plus:before { content: $plus; }\n.icon-minus:before { content: $minus; }\n.icon-asterisk:before { content: $asterisk; }\n.icon-exclamation-sign:before { content: $exclamation-sign; }\n.icon-gift:before { content: $gift; }\n.icon-leaf:before { content: $leaf; }\n.icon-fire:before { content: $fire; }\n.icon-eye-open:before { content: $eye-open; }\n.icon-eye-close:before { content: $eye-close; }\n.icon-warning-sign:before { content: $warning-sign; }\n.icon-plane:before { content: $plane; }\n.icon-calendar:before { content: $calendar; }\n.icon-random:before { content: $random; }\n.icon-comment:before { content: $comment; }\n.icon-magnet:before { content: $magnet; }\n.icon-chevron-up:before { content: $chevron-up; }\n.icon-chevron-down:before { content: $chevron-down; }\n.icon-retweet:before { content: $retweet; }\n.icon-shopping-cart:before { content: $shopping-cart; }\n.icon-folder-close:before { content: $folder-close; }\n.icon-folder-open:before { content: $folder-open; }\n.icon-resize-vertical:before { content: $resize-vertical; }\n.icon-resize-horizontal:before { content: $resize-horizontal; }\n.icon-bar-chart:before { content: $bar-chart; }\n.icon-twitter-sign:before { content: $twitter-sign; }\n.icon-facebook-sign:before { content: $facebook-sign; }\n.icon-camera-retro:before { content: $camera-retro; }\n.icon-key:before { content: $key; }\n.icon-cogs:before { content: $cogs; }\n.icon-comments:before { content: $comments; }\n.icon-thumbs-up-alt:before { content: $thumbs-up-alt; }\n.icon-thumbs-down-alt:before { content: $thumbs-down-alt; }\n.icon-star-half:before { content: $star-half; }\n.icon-heart-empty:before { content: $heart-empty; }\n.icon-signout:before { content: $signout; }\n.icon-linkedin-sign:before { content: $linkedin-sign; }\n.icon-pushpin:before { content: $pushpin; }\n.icon-external-link:before { content: $external-link; }\n.icon-signin:before { content: $signin; }\n.icon-trophy:before { content: $trophy; }\n.icon-github-sign:before { content: $github-sign; }\n.icon-upload-alt:before { content: $upload-alt; }\n.icon-lemon:before { content: $lemon; }\n.icon-phone:before { content: $phone; }\n.icon-unchecked:before,\n.icon-check-empty:before { content: $check-empty; }\n.icon-bookmark-empty:before { content: $bookmark-empty; }\n.icon-phone-sign:before { content: $phone-sign; }\n.icon-twitter:before { content: $twitter; }\n.icon-facebook:before { content: $facebook; }\n.icon-github:before { content: $github; }\n.icon-unlock:before { content: $unlock; }\n.icon-credit-card:before { content: $credit-card; }\n.icon-rss:before { content: $rss; }\n.icon-hdd:before { content: $hdd; }\n.icon-bullhorn:before { content: $bullhorn; }\n.icon-bell:before { content: $bell; }\n.icon-certificate:before { content: $certificate; }\n.icon-hand-right:before { content: $hand-right; }\n.icon-hand-left:before { content: $hand-left; }\n.icon-hand-up:before { content: $hand-up; }\n.icon-hand-down:before { content: $hand-down; }\n.icon-circle-arrow-left:before { content: $circle-arrow-left; }\n.icon-circle-arrow-right:before { content: $circle-arrow-right; }\n.icon-circle-arrow-up:before { content: $circle-arrow-up; }\n.icon-circle-arrow-down:before { content: $circle-arrow-down; }\n.icon-globe:before { content: $globe; }\n.icon-wrench:before { content: $wrench; }\n.icon-tasks:before { content: $tasks; }\n.icon-filter:before { content: $filter; }\n.icon-briefcase:before { content: $briefcase; }\n.icon-fullscreen:before { content: $fullscreen; }\n.icon-group:before { content: $group; }\n.icon-link:before { content: $link; }\n.icon-cloud:before { content: $cloud; }\n.icon-beaker:before { content: $beaker; }\n.icon-cut:before { content: $cut; }\n.icon-copy:before { content: $copy; }\n.icon-paperclip:before,\n.icon-paper-clip:before { content: $paper-clip; }\n.icon-save:before { content: $save; }\n.icon-sign-blank:before { content: $sign-blank; }\n.icon-reorder:before { content: $reorder; }\n.icon-list-ul:before { content: $list-ul; }\n.icon-list-ol:before { content: $list-ol; }\n.icon-strikethrough:before { content: $strikethrough; }\n.icon-underline:before { content: $underline; }\n.icon-table:before { content: $table; }\n.icon-magic:before { content: $magic; }\n.icon-truck:before { content: $truck; }\n.icon-pinterest:before { content: $pinterest; }\n.icon-pinterest-sign:before { content: $pinterest-sign; }\n.icon-google-plus-sign:before { content: $google-plus-sign; }\n.icon-google-plus:before { content: $google-plus; }\n.icon-money:before { content: $money; }\n.icon-caret-down:before { content: $caret-down; }\n.icon-caret-up:before { content: $caret-up; }\n.icon-caret-left:before { content: $caret-left; }\n.icon-caret-right:before { content: $caret-right; }\n.icon-columns:before { content: $columns; }\n.icon-sort:before { content: $sort; }\n.icon-sort-down:before { content: $sort-down; }\n.icon-sort-up:before { content: $sort-up; }\n.icon-envelope:before { content: $envelope; }\n.icon-linkedin:before { content: $linkedin; }\n.icon-rotate-left:before,\n.icon-undo:before { content: $undo; }\n.icon-legal:before { content: $legal; }\n.icon-dashboard:before { content: $dashboard; }\n.icon-comment-alt:before { content: $comment-alt; }\n.icon-comments-alt:before { content: $comments-alt; }\n.icon-bolt:before { content: $bolt; }\n.icon-sitemap:before { content: $sitemap; }\n.icon-umbrella:before { content: $umbrella; }\n.icon-paste:before { content: $paste; }\n.icon-lightbulb:before { content: $lightbulb; }\n.icon-exchange:before { content: $exchange; }\n.icon-cloud-download:before { content: $cloud-download; }\n.icon-cloud-upload:before { content: $cloud-upload; }\n.icon-user-md:before { content: $user-md; }\n.icon-stethoscope:before { content: $stethoscope; }\n.icon-suitcase:before { content: $suitcase; }\n.icon-bell-alt:before { content: $bell-alt; }\n.icon-coffee:before { content: $coffee; }\n.icon-food:before { content: $food; }\n.icon-file-text-alt:before { content: $file-text-alt; }\n.icon-building:before { content: $building; }\n.icon-hospital:before { content: $hospital; }\n.icon-ambulance:before { content: $ambulance; }\n.icon-medkit:before { content: $medkit; }\n.icon-fighter-jet:before { content: $fighter-jet; }\n.icon-beer:before { content: $beer; }\n.icon-h-sign:before { content: $h-sign; }\n.icon-plus-sign-alt:before { content: $plus-sign-alt; }\n.icon-double-angle-left:before { content: $double-angle-left; }\n.icon-double-angle-right:before { content: $double-angle-right; }\n.icon-double-angle-up:before { content: $double-angle-up; }\n.icon-double-angle-down:before { content: $double-angle-down; }\n.icon-angle-left:before { content: $angle-left; }\n.icon-angle-right:before { content: $angle-right; }\n.icon-angle-up:before { content: $angle-up; }\n.icon-angle-down:before { content: $angle-down; }\n.icon-desktop:before { content: $desktop; }\n.icon-laptop:before { content: $laptop; }\n.icon-tablet:before { content: $tablet; }\n.icon-mobile-phone:before { content: $mobile-phone; }\n.icon-circle-blank:before { content: $circle-blank; }\n.icon-quote-left:before { content: $quote-left; }\n.icon-quote-right:before { content: $quote-right; }\n.icon-spinner:before { content: $spinner; }\n.icon-circle:before { content: $circle; }\n.icon-mail-reply:before,\n.icon-reply:before { content: $reply; }\n.icon-github-alt:before { content: $github-alt; }\n.icon-folder-close-alt:before { content: $folder-close-alt; }\n.icon-folder-open-alt:before { content: $folder-open-alt; }\n.icon-expand-alt:before { content: $expand-alt; }\n.icon-collapse-alt:before { content: $collapse-alt; }\n.icon-smile:before { content: $smile; }\n.icon-frown:before { content: $frown; }\n.icon-meh:before { content: $meh; }\n.icon-gamepad:before { content: $gamepad; }\n.icon-keyboard:before { content: $keyboard; }\n.icon-flag-alt:before { content: $flag-alt; }\n.icon-flag-checkered:before { content: $flag-checkered; }\n.icon-terminal:before { content: $terminal; }\n.icon-code:before { content: $code; }\n.icon-reply-all:before { content: $reply-all; }\n.icon-mail-reply-all:before { content: $mail-reply-all; }\n.icon-star-half-full:before,\n.icon-star-half-empty:before { content: $star-half-empty; }\n.icon-location-arrow:before { content: $location-arrow; }\n.icon-crop:before { content: $crop; }\n.icon-code-fork:before { content: $code-fork; }\n.icon-unlink:before { content: $unlink; }\n.icon-question:before { content: $question; }\n.icon-info:before { content: $info; }\n.icon-exclamation:before { content: $exclamation; }\n.icon-superscript:before { content: $superscript; }\n.icon-subscript:before { content: $subscript; }\n.icon-eraser:before { content: $eraser; }\n.icon-puzzle-piece:before { content: $puzzle-piece; }\n.icon-microphone:before { content: $microphone; }\n.icon-microphone-off:before { content: $microphone-off; }\n.icon-shield:before { content: $shield; }\n.icon-calendar-empty:before { content: $calendar-empty; }\n.icon-fire-extinguisher:before { content: $fire-extinguisher; }\n.icon-rocket:before { content: $rocket; }\n.icon-maxcdn:before { content: $maxcdn; }\n.icon-chevron-sign-left:before { content: $chevron-sign-left; }\n.icon-chevron-sign-right:before { content: $chevron-sign-right; }\n.icon-chevron-sign-up:before { content: $chevron-sign-up; }\n.icon-chevron-sign-down:before { content: $chevron-sign-down; }\n.icon-html5:before { content: $html5; }\n.icon-css3:before { content: $css3; }\n.icon-anchor:before { content: $anchor; }\n.icon-unlock-alt:before { content: $unlock-alt; }\n.icon-bullseye:before { content: $bullseye; }\n.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; }\n.icon-ellipsis-vertical:before { content: $ellipsis-vertical; }\n.icon-rss-sign:before { content: $rss-sign; }\n.icon-play-sign:before { content: $play-sign; }\n.icon-ticket:before { content: $ticket; }\n.icon-minus-sign-alt:before { content: $minus-sign-alt; }\n.icon-check-minus:before { content: $check-minus; }\n.icon-level-up:before { content: $level-up; }\n.icon-level-down:before { content: $level-down; }\n.icon-check-sign:before { content: $check-sign; }\n.icon-edit-sign:before { content: $edit-sign; }\n.icon-external-link-sign:before { content: $external-link-sign; }\n.icon-share-sign:before { content: $share-sign; }\n.icon-compass:before { content: $compass; }\n.icon-collapse:before { content: $collapse; }\n.icon-collapse-top:before { content: $collapse-top; }\n.icon-expand:before { content: $expand; }\n.icon-euro:before,\n.icon-eur:before { content: $eur; }\n.icon-gbp:before { content: $gbp; }\n.icon-dollar:before,\n.icon-usd:before { content: $usd; }\n.icon-rupee:before,\n.icon-inr:before { content: $inr; }\n.icon-yen:before,\n.icon-jpy:before { content: $jpy; }\n.icon-renminbi:before,\n.icon-cny:before { content: $cny; }\n.icon-won:before,\n.icon-krw:before { content: $krw; }\n.icon-bitcoin:before,\n.icon-btc:before { content: $btc; }\n.icon-file:before { content: $file; }\n.icon-file-text:before { content: $file-text; }\n.icon-sort-by-alphabet:before { content: $sort-by-alphabet; }\n.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; }\n.icon-sort-by-attributes:before { content: $sort-by-attributes; }\n.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; }\n.icon-sort-by-order:before { content: $sort-by-order; }\n.icon-sort-by-order-alt:before { content: $sort-by-order-alt; }\n.icon-thumbs-up:before { content: $thumbs-up; }\n.icon-thumbs-down:before { content: $thumbs-down; }\n.icon-youtube-sign:before { content: $youtube-sign; }\n.icon-youtube:before { content: $youtube; }\n.icon-xing:before { content: $xing; }\n.icon-xing-sign:before { content: $xing-sign; }\n.icon-youtube-play:before { content: $youtube-play; }\n.icon-dropbox:before { content: $dropbox; }\n.icon-stackexchange:before { content: $stackexchange; }\n.icon-instagram:before { content: $instagram; }\n.icon-flickr:before { content: $flickr; }\n.icon-adn:before { content: $adn; }\n.icon-bitbucket:before { content: $bitbucket; }\n.icon-bitbucket-sign:before { content: $bitbucket-sign; }\n.icon-tumblr:before { content: $tumblr; }\n.icon-tumblr-sign:before { content: $tumblr-sign; }\n.icon-long-arrow-down:before { content: $long-arrow-down; }\n.icon-long-arrow-up:before { content: $long-arrow-up; }\n.icon-long-arrow-left:before { content: $long-arrow-left; }\n.icon-long-arrow-right:before { content: $long-arrow-right; }\n.icon-apple:before { content: $apple; }\n.icon-windows:before { content: $windows; }\n.icon-android:before { content: $android; }\n.icon-linux:before { content: $linux; }\n.icon-dribble:before { content: $dribble; }\n.icon-skype:before { content: $skype; }\n.icon-foursquare:before { content: $foursquare; }\n.icon-trello:before { content: $trello; }\n.icon-female:before { content: $female; }\n.icon-male:before { content: $male; }\n.icon-gittip:before { content: $gittip; }\n.icon-sun:before { content: $sun; }\n.icon-moon:before { content: $moon; }\n.icon-archive:before { content: $archive; }\n.icon-bug:before { content: $bug; }\n.icon-vk:before { content: $vk; }\n.icon-weibo:before { content: $weibo; }\n.icon-renren:before { content: $renren; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_mixins.scss",
    "content": "// Mixins\n// --------------------------\n\n@mixin icon($icon) {\n  @include icon-FontAwesome();\n  content: $icon;\n}\n\n@mixin icon-FontAwesome() {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em; // fixes ie7 issues\n}\n\n@mixin border-radius($radius) {\n  -webkit-border-radius: $radius;\n  -moz-border-radius: $radius;\n  border-radius: $radius;\n}\n\n@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) {\n  .icon-stack {\n    position: relative;\n    display: inline-block;\n    width: $width;\n    height: $height;\n    line-height: $width;\n    vertical-align: -35%;\n    [class^=\"icon-\"],\n    [class*=\" icon-\"] {\n      display: block;\n      text-align: center;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      font-size: $top-font-size;\n      line-height: inherit;\n      *line-height: $height;\n    }\n    .icon-stack-base {\n      font-size: $base-font-size;\n      *line-height: #{$height / $base-font-size}em;\n    }\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_path.scss",
    "content": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}');\n  src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg');\n//  src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts\n  font-weight: normal;\n  font-style: normal;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/_variables.scss",
    "content": "// Variables\n// --------------------------\n\n$FontAwesomePath: \"../font\" !default;\n$FontAwesomeVersion: \"3.2.0\" !default;\n$borderColor: #eeeeee !default;\n$iconMuted: #eeeeee !default;\n$iconLight: white !default;\n$iconDark: #333333 !default;\n$icons-li-width: (30em/14);\n\n\n$glass: \"\\f000\";\n\n$music: \"\\f001\";\n\n$search: \"\\f002\";\n\n$envelope-alt: \"\\f003\";\n\n$heart: \"\\f004\";\n\n$star: \"\\f005\";\n\n$star-empty: \"\\f006\";\n\n$user: \"\\f007\";\n\n$film: \"\\f008\";\n\n$th-large: \"\\f009\";\n\n$th: \"\\f00a\";\n\n$th-list: \"\\f00b\";\n\n$ok: \"\\f00c\";\n\n$remove: \"\\f00d\";\n\n$zoom-in: \"\\f00e\";\n\n$zoom-out: \"\\f010\";\n\n$off: \"\\f011\";\n\n$signal: \"\\f012\";\n\n$cog: \"\\f013\";\n\n$trash: \"\\f014\";\n\n$home: \"\\f015\";\n\n$file-alt: \"\\f016\";\n\n$time: \"\\f017\";\n\n$road: \"\\f018\";\n\n$download-alt: \"\\f019\";\n\n$download: \"\\f01a\";\n\n$upload: \"\\f01b\";\n\n$inbox: \"\\f01c\";\n\n$play-circle: \"\\f01d\";\n\n$repeat: \"\\f01e\";\n\n$refresh: \"\\f021\";\n\n$list-alt: \"\\f022\";\n\n$lock: \"\\f023\";\n\n$flag: \"\\f024\";\n\n$headphones: \"\\f025\";\n\n$volume-off: \"\\f026\";\n\n$volume-down: \"\\f027\";\n\n$volume-up: \"\\f028\";\n\n$qrcode: \"\\f029\";\n\n$barcode: \"\\f02a\";\n\n$tag: \"\\f02b\";\n\n$tags: \"\\f02c\";\n\n$book: \"\\f02d\";\n\n$bookmark: \"\\f02e\";\n\n$print: \"\\f02f\";\n\n$camera: \"\\f030\";\n\n$font: \"\\f031\";\n\n$bold: \"\\f032\";\n\n$italic: \"\\f033\";\n\n$text-height: \"\\f034\";\n\n$text-width: \"\\f035\";\n\n$align-left: \"\\f036\";\n\n$align-center: \"\\f037\";\n\n$align-right: \"\\f038\";\n\n$align-justify: \"\\f039\";\n\n$list: \"\\f03a\";\n\n$indent-left: \"\\f03b\";\n\n$indent-right: \"\\f03c\";\n\n$facetime-video: \"\\f03d\";\n\n$picture: \"\\f03e\";\n\n$pencil: \"\\f040\";\n\n$map-marker: \"\\f041\";\n\n$adjust: \"\\f042\";\n\n$tint: \"\\f043\";\n\n$edit: \"\\f044\";\n\n$share: \"\\f045\";\n\n$check: \"\\f046\";\n\n$move: \"\\f047\";\n\n$step-backward: \"\\f048\";\n\n$fast-backward: \"\\f049\";\n\n$backward: \"\\f04a\";\n\n$play: \"\\f04b\";\n\n$pause: \"\\f04c\";\n\n$stop: \"\\f04d\";\n\n$forward: \"\\f04e\";\n\n$fast-forward: \"\\f050\";\n\n$step-forward: \"\\f051\";\n\n$eject: \"\\f052\";\n\n$chevron-left: \"\\f053\";\n\n$chevron-right: \"\\f054\";\n\n$plus-sign: \"\\f055\";\n\n$minus-sign: \"\\f056\";\n\n$remove-sign: \"\\f057\";\n\n$ok-sign: \"\\f058\";\n\n$question-sign: \"\\f059\";\n\n$info-sign: \"\\f05a\";\n\n$screenshot: \"\\f05b\";\n\n$remove-circle: \"\\f05c\";\n\n$ok-circle: \"\\f05d\";\n\n$ban-circle: \"\\f05e\";\n\n$arrow-left: \"\\f060\";\n\n$arrow-right: \"\\f061\";\n\n$arrow-up: \"\\f062\";\n\n$arrow-down: \"\\f063\";\n\n$share-alt: \"\\f064\";\n\n$resize-full: \"\\f065\";\n\n$resize-small: \"\\f066\";\n\n$plus: \"\\f067\";\n\n$minus: \"\\f068\";\n\n$asterisk: \"\\f069\";\n\n$exclamation-sign: \"\\f06a\";\n\n$gift: \"\\f06b\";\n\n$leaf: \"\\f06c\";\n\n$fire: \"\\f06d\";\n\n$eye-open: \"\\f06e\";\n\n$eye-close: \"\\f070\";\n\n$warning-sign: \"\\f071\";\n\n$plane: \"\\f072\";\n\n$calendar: \"\\f073\";\n\n$random: \"\\f074\";\n\n$comment: \"\\f075\";\n\n$magnet: \"\\f076\";\n\n$chevron-up: \"\\f077\";\n\n$chevron-down: \"\\f078\";\n\n$retweet: \"\\f079\";\n\n$shopping-cart: \"\\f07a\";\n\n$folder-close: \"\\f07b\";\n\n$folder-open: \"\\f07c\";\n\n$resize-vertical: \"\\f07d\";\n\n$resize-horizontal: \"\\f07e\";\n\n$bar-chart: \"\\f080\";\n\n$twitter-sign: \"\\f081\";\n\n$facebook-sign: \"\\f082\";\n\n$camera-retro: \"\\f083\";\n\n$key: \"\\f084\";\n\n$cogs: \"\\f085\";\n\n$comments: \"\\f086\";\n\n$thumbs-up-alt: \"\\f087\";\n\n$thumbs-down-alt: \"\\f088\";\n\n$star-half: \"\\f089\";\n\n$heart-empty: \"\\f08a\";\n\n$signout: \"\\f08b\";\n\n$linkedin-sign: \"\\f08c\";\n\n$pushpin: \"\\f08d\";\n\n$external-link: \"\\f08e\";\n\n$signin: \"\\f090\";\n\n$trophy: \"\\f091\";\n\n$github-sign: \"\\f092\";\n\n$upload-alt: \"\\f093\";\n\n$lemon: \"\\f094\";\n\n$phone: \"\\f095\";\n\n$check-empty: \"\\f096\";\n\n$bookmark-empty: \"\\f097\";\n\n$phone-sign: \"\\f098\";\n\n$twitter: \"\\f099\";\n\n$facebook: \"\\f09a\";\n\n$github: \"\\f09b\";\n\n$unlock: \"\\f09c\";\n\n$credit-card: \"\\f09d\";\n\n$rss: \"\\f09e\";\n\n$hdd: \"\\f0a0\";\n\n$bullhorn: \"\\f0a1\";\n\n$bell: \"\\f0a2\";\n\n$certificate: \"\\f0a3\";\n\n$hand-right: \"\\f0a4\";\n\n$hand-left: \"\\f0a5\";\n\n$hand-up: \"\\f0a6\";\n\n$hand-down: \"\\f0a7\";\n\n$circle-arrow-left: \"\\f0a8\";\n\n$circle-arrow-right: \"\\f0a9\";\n\n$circle-arrow-up: \"\\f0aa\";\n\n$circle-arrow-down: \"\\f0ab\";\n\n$globe: \"\\f0ac\";\n\n$wrench: \"\\f0ad\";\n\n$tasks: \"\\f0ae\";\n\n$filter: \"\\f0b0\";\n\n$briefcase: \"\\f0b1\";\n\n$fullscreen: \"\\f0b2\";\n\n$group: \"\\f0c0\";\n\n$link: \"\\f0c1\";\n\n$cloud: \"\\f0c2\";\n\n$beaker: \"\\f0c3\";\n\n$cut: \"\\f0c4\";\n\n$copy: \"\\f0c5\";\n\n$paper-clip: \"\\f0c6\";\n\n$save: \"\\f0c7\";\n\n$sign-blank: \"\\f0c8\";\n\n$reorder: \"\\f0c9\";\n\n$list-ul: \"\\f0ca\";\n\n$list-ol: \"\\f0cb\";\n\n$strikethrough: \"\\f0cc\";\n\n$underline: \"\\f0cd\";\n\n$table: \"\\f0ce\";\n\n$magic: \"\\f0d0\";\n\n$truck: \"\\f0d1\";\n\n$pinterest: \"\\f0d2\";\n\n$pinterest-sign: \"\\f0d3\";\n\n$google-plus-sign: \"\\f0d4\";\n\n$google-plus: \"\\f0d5\";\n\n$money: \"\\f0d6\";\n\n$caret-down: \"\\f0d7\";\n\n$caret-up: \"\\f0d8\";\n\n$caret-left: \"\\f0d9\";\n\n$caret-right: \"\\f0da\";\n\n$columns: \"\\f0db\";\n\n$sort: \"\\f0dc\";\n\n$sort-down: \"\\f0dd\";\n\n$sort-up: \"\\f0de\";\n\n$envelope: \"\\f0e0\";\n\n$linkedin: \"\\f0e1\";\n\n$undo: \"\\f0e2\";\n\n$legal: \"\\f0e3\";\n\n$dashboard: \"\\f0e4\";\n\n$comment-alt: \"\\f0e5\";\n\n$comments-alt: \"\\f0e6\";\n\n$bolt: \"\\f0e7\";\n\n$sitemap: \"\\f0e8\";\n\n$umbrella: \"\\f0e9\";\n\n$paste: \"\\f0ea\";\n\n$lightbulb: \"\\f0eb\";\n\n$exchange: \"\\f0ec\";\n\n$cloud-download: \"\\f0ed\";\n\n$cloud-upload: \"\\f0ee\";\n\n$user-md: \"\\f0f0\";\n\n$stethoscope: \"\\f0f1\";\n\n$suitcase: \"\\f0f2\";\n\n$bell-alt: \"\\f0f3\";\n\n$coffee: \"\\f0f4\";\n\n$food: \"\\f0f5\";\n\n$file-text-alt: \"\\f0f6\";\n\n$building: \"\\f0f7\";\n\n$hospital: \"\\f0f8\";\n\n$ambulance: \"\\f0f9\";\n\n$medkit: \"\\f0fa\";\n\n$fighter-jet: \"\\f0fb\";\n\n$beer: \"\\f0fc\";\n\n$h-sign: \"\\f0fd\";\n\n$plus-sign-alt: \"\\f0fe\";\n\n$double-angle-left: \"\\f100\";\n\n$double-angle-right: \"\\f101\";\n\n$double-angle-up: \"\\f102\";\n\n$double-angle-down: \"\\f103\";\n\n$angle-left: \"\\f104\";\n\n$angle-right: \"\\f105\";\n\n$angle-up: \"\\f106\";\n\n$angle-down: \"\\f107\";\n\n$desktop: \"\\f108\";\n\n$laptop: \"\\f109\";\n\n$tablet: \"\\f10a\";\n\n$mobile-phone: \"\\f10b\";\n\n$circle-blank: \"\\f10c\";\n\n$quote-left: \"\\f10d\";\n\n$quote-right: \"\\f10e\";\n\n$spinner: \"\\f110\";\n\n$circle: \"\\f111\";\n\n$reply: \"\\f112\";\n\n$github-alt: \"\\f113\";\n\n$folder-close-alt: \"\\f114\";\n\n$folder-open-alt: \"\\f115\";\n\n$expand-alt: \"\\f116\";\n\n$collapse-alt: \"\\f117\";\n\n$smile: \"\\f118\";\n\n$frown: \"\\f119\";\n\n$meh: \"\\f11a\";\n\n$gamepad: \"\\f11b\";\n\n$keyboard: \"\\f11c\";\n\n$flag-alt: \"\\f11d\";\n\n$flag-checkered: \"\\f11e\";\n\n$terminal: \"\\f120\";\n\n$code: \"\\f121\";\n\n$reply-all: \"\\f122\";\n\n$mail-reply-all: \"\\f122\";\n\n$star-half-empty: \"\\f123\";\n\n$location-arrow: \"\\f124\";\n\n$crop: \"\\f125\";\n\n$code-fork: \"\\f126\";\n\n$unlink: \"\\f127\";\n\n$question: \"\\f128\";\n\n$info: \"\\f129\";\n\n$exclamation: \"\\f12a\";\n\n$superscript: \"\\f12b\";\n\n$subscript: \"\\f12c\";\n\n$eraser: \"\\f12d\";\n\n$puzzle-piece: \"\\f12e\";\n\n$microphone: \"\\f130\";\n\n$microphone-off: \"\\f131\";\n\n$shield: \"\\f132\";\n\n$calendar-empty: \"\\f133\";\n\n$fire-extinguisher: \"\\f134\";\n\n$rocket: \"\\f135\";\n\n$maxcdn: \"\\f136\";\n\n$chevron-sign-left: \"\\f137\";\n\n$chevron-sign-right: \"\\f138\";\n\n$chevron-sign-up: \"\\f139\";\n\n$chevron-sign-down: \"\\f13a\";\n\n$html5: \"\\f13b\";\n\n$css3: \"\\f13c\";\n\n$anchor: \"\\f13d\";\n\n$unlock-alt: \"\\f13e\";\n\n$bullseye: \"\\f140\";\n\n$ellipsis-horizontal: \"\\f141\";\n\n$ellipsis-vertical: \"\\f142\";\n\n$rss-sign: \"\\f143\";\n\n$play-sign: \"\\f144\";\n\n$ticket: \"\\f145\";\n\n$minus-sign-alt: \"\\f146\";\n\n$check-minus: \"\\f147\";\n\n$level-up: \"\\f148\";\n\n$level-down: \"\\f149\";\n\n$check-sign: \"\\f14a\";\n\n$edit-sign: \"\\f14b\";\n\n$external-link-sign: \"\\f14c\";\n\n$share-sign: \"\\f14d\";\n\n$compass: \"\\f14e\";\n\n$collapse: \"\\f150\";\n\n$collapse-top: \"\\f151\";\n\n$expand: \"\\f152\";\n\n$eur: \"\\f153\";\n\n$gbp: \"\\f154\";\n\n$usd: \"\\f155\";\n\n$inr: \"\\f156\";\n\n$jpy: \"\\f157\";\n\n$cny: \"\\f158\";\n\n$krw: \"\\f159\";\n\n$btc: \"\\f15a\";\n\n$file: \"\\f15b\";\n\n$file-text: \"\\f15c\";\n\n$sort-by-alphabet: \"\\f15d\";\n\n$sort-by-alphabet-alt: \"\\f15e\";\n\n$sort-by-attributes: \"\\f160\";\n\n$sort-by-attributes-alt: \"\\f161\";\n\n$sort-by-order: \"\\f162\";\n\n$sort-by-order-alt: \"\\f163\";\n\n$thumbs-up: \"\\f164\";\n\n$thumbs-down: \"\\f165\";\n\n$youtube-sign: \"\\f166\";\n\n$youtube: \"\\f167\";\n\n$xing: \"\\f168\";\n\n$xing-sign: \"\\f169\";\n\n$youtube-play: \"\\f16a\";\n\n$dropbox: \"\\f16b\";\n\n$stackexchange: \"\\f16c\";\n\n$instagram: \"\\f16d\";\n\n$flickr: \"\\f16e\";\n\n$adn: \"\\f170\";\n\n$bitbucket: \"\\f171\";\n\n$bitbucket-sign: \"\\f172\";\n\n$tumblr: \"\\f173\";\n\n$tumblr-sign: \"\\f174\";\n\n$long-arrow-down: \"\\f175\";\n\n$long-arrow-up: \"\\f176\";\n\n$long-arrow-left: \"\\f177\";\n\n$long-arrow-right: \"\\f178\";\n\n$apple: \"\\f179\";\n\n$windows: \"\\f17a\";\n\n$android: \"\\f17b\";\n\n$linux: \"\\f17c\";\n\n$dribble: \"\\f17d\";\n\n$skype: \"\\f17e\";\n\n$foursquare: \"\\f180\";\n\n$trello: \"\\f181\";\n\n$female: \"\\f182\";\n\n$male: \"\\f183\";\n\n$gittip: \"\\f184\";\n\n$sun: \"\\f185\";\n\n$moon: \"\\f186\";\n\n$archive: \"\\f187\";\n\n$bug: \"\\f188\";\n\n$vk: \"\\f189\";\n\n$weibo: \"\\f18a\";\n\n$renren: \"\\f18b\";\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/font-awesome-ie7.scss",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n.icon-large {\n  font-size: (4em/3);\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n\n.nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    vertical-align: inherit;\n    margin-top: -4px;\n    padding-top: 3px;\n    margin-bottom: -4px;\n    padding-bottom: 3px;\n    &.icon-large {\n      vertical-align: -25%;\n    }\n  }\n}\n\n.nav-pills, .nav-tabs {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.icon-large {\n      line-height: .75em;\n      margin-top: -7px;\n      padding-top: 5px;\n      margin-bottom: -5px;\n      padding-bottom: 4px;\n    }\n  }\n}\n\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right { vertical-align: inherit; }\n    &.icon-large {\n      margin-top: -.5em;\n    }\n  }\n}\n\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n\n@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); }\n\n\n.icon-glass {\n  @include ie7icon('&#xf000;');\n}\n\n\n.icon-music {\n  @include ie7icon('&#xf001;');\n}\n\n\n.icon-search {\n  @include ie7icon('&#xf002;');\n}\n\n\n.icon-envelope-alt {\n  @include ie7icon('&#xf003;');\n}\n\n\n.icon-heart {\n  @include ie7icon('&#xf004;');\n}\n\n\n.icon-star {\n  @include ie7icon('&#xf005;');\n}\n\n\n.icon-star-empty {\n  @include ie7icon('&#xf006;');\n}\n\n\n.icon-user {\n  @include ie7icon('&#xf007;');\n}\n\n\n.icon-film {\n  @include ie7icon('&#xf008;');\n}\n\n\n.icon-th-large {\n  @include ie7icon('&#xf009;');\n}\n\n\n.icon-th {\n  @include ie7icon('&#xf00a;');\n}\n\n\n.icon-th-list {\n  @include ie7icon('&#xf00b;');\n}\n\n\n.icon-ok {\n  @include ie7icon('&#xf00c;');\n}\n\n\n.icon-remove {\n  @include ie7icon('&#xf00d;');\n}\n\n\n.icon-zoom-in {\n  @include ie7icon('&#xf00e;');\n}\n\n\n.icon-zoom-out {\n  @include ie7icon('&#xf010;');\n}\n\n\n.icon-off {\n  @include ie7icon('&#xf011;');\n}\n\n.icon-power-off {\n  @include ie7icon('&#xf011;');\n}\n\n\n.icon-signal {\n  @include ie7icon('&#xf012;');\n}\n\n\n.icon-cog {\n  @include ie7icon('&#xf013;');\n}\n\n\n.icon-trash {\n  @include ie7icon('&#xf014;');\n}\n\n\n.icon-home {\n  @include ie7icon('&#xf015;');\n}\n\n\n.icon-file-alt {\n  @include ie7icon('&#xf016;');\n}\n\n\n.icon-time {\n  @include ie7icon('&#xf017;');\n}\n\n\n.icon-road {\n  @include ie7icon('&#xf018;');\n}\n\n\n.icon-download-alt {\n  @include ie7icon('&#xf019;');\n}\n\n\n.icon-download {\n  @include ie7icon('&#xf01a;');\n}\n\n\n.icon-upload {\n  @include ie7icon('&#xf01b;');\n}\n\n\n.icon-inbox {\n  @include ie7icon('&#xf01c;');\n}\n\n\n.icon-play-circle {\n  @include ie7icon('&#xf01d;');\n}\n\n\n.icon-repeat {\n  @include ie7icon('&#xf01e;');\n}\n\n.icon-rotate-right {\n  @include ie7icon('&#xf01e;');\n}\n\n\n.icon-refresh {\n  @include ie7icon('&#xf021;');\n}\n\n\n.icon-list-alt {\n  @include ie7icon('&#xf022;');\n}\n\n\n.icon-lock {\n  @include ie7icon('&#xf023;');\n}\n\n\n.icon-flag {\n  @include ie7icon('&#xf024;');\n}\n\n\n.icon-headphones {\n  @include ie7icon('&#xf025;');\n}\n\n\n.icon-volume-off {\n  @include ie7icon('&#xf026;');\n}\n\n\n.icon-volume-down {\n  @include ie7icon('&#xf027;');\n}\n\n\n.icon-volume-up {\n  @include ie7icon('&#xf028;');\n}\n\n\n.icon-qrcode {\n  @include ie7icon('&#xf029;');\n}\n\n\n.icon-barcode {\n  @include ie7icon('&#xf02a;');\n}\n\n\n.icon-tag {\n  @include ie7icon('&#xf02b;');\n}\n\n\n.icon-tags {\n  @include ie7icon('&#xf02c;');\n}\n\n\n.icon-book {\n  @include ie7icon('&#xf02d;');\n}\n\n\n.icon-bookmark {\n  @include ie7icon('&#xf02e;');\n}\n\n\n.icon-print {\n  @include ie7icon('&#xf02f;');\n}\n\n\n.icon-camera {\n  @include ie7icon('&#xf030;');\n}\n\n\n.icon-font {\n  @include ie7icon('&#xf031;');\n}\n\n\n.icon-bold {\n  @include ie7icon('&#xf032;');\n}\n\n\n.icon-italic {\n  @include ie7icon('&#xf033;');\n}\n\n\n.icon-text-height {\n  @include ie7icon('&#xf034;');\n}\n\n\n.icon-text-width {\n  @include ie7icon('&#xf035;');\n}\n\n\n.icon-align-left {\n  @include ie7icon('&#xf036;');\n}\n\n\n.icon-align-center {\n  @include ie7icon('&#xf037;');\n}\n\n\n.icon-align-right {\n  @include ie7icon('&#xf038;');\n}\n\n\n.icon-align-justify {\n  @include ie7icon('&#xf039;');\n}\n\n\n.icon-list {\n  @include ie7icon('&#xf03a;');\n}\n\n\n.icon-indent-left {\n  @include ie7icon('&#xf03b;');\n}\n\n\n.icon-indent-right {\n  @include ie7icon('&#xf03c;');\n}\n\n\n.icon-facetime-video {\n  @include ie7icon('&#xf03d;');\n}\n\n\n.icon-picture {\n  @include ie7icon('&#xf03e;');\n}\n\n\n.icon-pencil {\n  @include ie7icon('&#xf040;');\n}\n\n\n.icon-map-marker {\n  @include ie7icon('&#xf041;');\n}\n\n\n.icon-adjust {\n  @include ie7icon('&#xf042;');\n}\n\n\n.icon-tint {\n  @include ie7icon('&#xf043;');\n}\n\n\n.icon-edit {\n  @include ie7icon('&#xf044;');\n}\n\n\n.icon-share {\n  @include ie7icon('&#xf045;');\n}\n\n\n.icon-check {\n  @include ie7icon('&#xf046;');\n}\n\n\n.icon-move {\n  @include ie7icon('&#xf047;');\n}\n\n\n.icon-step-backward {\n  @include ie7icon('&#xf048;');\n}\n\n\n.icon-fast-backward {\n  @include ie7icon('&#xf049;');\n}\n\n\n.icon-backward {\n  @include ie7icon('&#xf04a;');\n}\n\n\n.icon-play {\n  @include ie7icon('&#xf04b;');\n}\n\n\n.icon-pause {\n  @include ie7icon('&#xf04c;');\n}\n\n\n.icon-stop {\n  @include ie7icon('&#xf04d;');\n}\n\n\n.icon-forward {\n  @include ie7icon('&#xf04e;');\n}\n\n\n.icon-fast-forward {\n  @include ie7icon('&#xf050;');\n}\n\n\n.icon-step-forward {\n  @include ie7icon('&#xf051;');\n}\n\n\n.icon-eject {\n  @include ie7icon('&#xf052;');\n}\n\n\n.icon-chevron-left {\n  @include ie7icon('&#xf053;');\n}\n\n\n.icon-chevron-right {\n  @include ie7icon('&#xf054;');\n}\n\n\n.icon-plus-sign {\n  @include ie7icon('&#xf055;');\n}\n\n\n.icon-minus-sign {\n  @include ie7icon('&#xf056;');\n}\n\n\n.icon-remove-sign {\n  @include ie7icon('&#xf057;');\n}\n\n\n.icon-ok-sign {\n  @include ie7icon('&#xf058;');\n}\n\n\n.icon-question-sign {\n  @include ie7icon('&#xf059;');\n}\n\n\n.icon-info-sign {\n  @include ie7icon('&#xf05a;');\n}\n\n\n.icon-screenshot {\n  @include ie7icon('&#xf05b;');\n}\n\n\n.icon-remove-circle {\n  @include ie7icon('&#xf05c;');\n}\n\n\n.icon-ok-circle {\n  @include ie7icon('&#xf05d;');\n}\n\n\n.icon-ban-circle {\n  @include ie7icon('&#xf05e;');\n}\n\n\n.icon-arrow-left {\n  @include ie7icon('&#xf060;');\n}\n\n\n.icon-arrow-right {\n  @include ie7icon('&#xf061;');\n}\n\n\n.icon-arrow-up {\n  @include ie7icon('&#xf062;');\n}\n\n\n.icon-arrow-down {\n  @include ie7icon('&#xf063;');\n}\n\n\n.icon-share-alt {\n  @include ie7icon('&#xf064;');\n}\n\n.icon-mail-forward {\n  @include ie7icon('&#xf064;');\n}\n\n\n.icon-resize-full {\n  @include ie7icon('&#xf065;');\n}\n\n\n.icon-resize-small {\n  @include ie7icon('&#xf066;');\n}\n\n\n.icon-plus {\n  @include ie7icon('&#xf067;');\n}\n\n\n.icon-minus {\n  @include ie7icon('&#xf068;');\n}\n\n\n.icon-asterisk {\n  @include ie7icon('&#xf069;');\n}\n\n\n.icon-exclamation-sign {\n  @include ie7icon('&#xf06a;');\n}\n\n\n.icon-gift {\n  @include ie7icon('&#xf06b;');\n}\n\n\n.icon-leaf {\n  @include ie7icon('&#xf06c;');\n}\n\n\n.icon-fire {\n  @include ie7icon('&#xf06d;');\n}\n\n\n.icon-eye-open {\n  @include ie7icon('&#xf06e;');\n}\n\n\n.icon-eye-close {\n  @include ie7icon('&#xf070;');\n}\n\n\n.icon-warning-sign {\n  @include ie7icon('&#xf071;');\n}\n\n\n.icon-plane {\n  @include ie7icon('&#xf072;');\n}\n\n\n.icon-calendar {\n  @include ie7icon('&#xf073;');\n}\n\n\n.icon-random {\n  @include ie7icon('&#xf074;');\n}\n\n\n.icon-comment {\n  @include ie7icon('&#xf075;');\n}\n\n\n.icon-magnet {\n  @include ie7icon('&#xf076;');\n}\n\n\n.icon-chevron-up {\n  @include ie7icon('&#xf077;');\n}\n\n\n.icon-chevron-down {\n  @include ie7icon('&#xf078;');\n}\n\n\n.icon-retweet {\n  @include ie7icon('&#xf079;');\n}\n\n\n.icon-shopping-cart {\n  @include ie7icon('&#xf07a;');\n}\n\n\n.icon-folder-close {\n  @include ie7icon('&#xf07b;');\n}\n\n\n.icon-folder-open {\n  @include ie7icon('&#xf07c;');\n}\n\n\n.icon-resize-vertical {\n  @include ie7icon('&#xf07d;');\n}\n\n\n.icon-resize-horizontal {\n  @include ie7icon('&#xf07e;');\n}\n\n\n.icon-bar-chart {\n  @include ie7icon('&#xf080;');\n}\n\n\n.icon-twitter-sign {\n  @include ie7icon('&#xf081;');\n}\n\n\n.icon-facebook-sign {\n  @include ie7icon('&#xf082;');\n}\n\n\n.icon-camera-retro {\n  @include ie7icon('&#xf083;');\n}\n\n\n.icon-key {\n  @include ie7icon('&#xf084;');\n}\n\n\n.icon-cogs {\n  @include ie7icon('&#xf085;');\n}\n\n\n.icon-comments {\n  @include ie7icon('&#xf086;');\n}\n\n\n.icon-thumbs-up-alt {\n  @include ie7icon('&#xf087;');\n}\n\n\n.icon-thumbs-down-alt {\n  @include ie7icon('&#xf088;');\n}\n\n\n.icon-star-half {\n  @include ie7icon('&#xf089;');\n}\n\n\n.icon-heart-empty {\n  @include ie7icon('&#xf08a;');\n}\n\n\n.icon-signout {\n  @include ie7icon('&#xf08b;');\n}\n\n\n.icon-linkedin-sign {\n  @include ie7icon('&#xf08c;');\n}\n\n\n.icon-pushpin {\n  @include ie7icon('&#xf08d;');\n}\n\n\n.icon-external-link {\n  @include ie7icon('&#xf08e;');\n}\n\n\n.icon-signin {\n  @include ie7icon('&#xf090;');\n}\n\n\n.icon-trophy {\n  @include ie7icon('&#xf091;');\n}\n\n\n.icon-github-sign {\n  @include ie7icon('&#xf092;');\n}\n\n\n.icon-upload-alt {\n  @include ie7icon('&#xf093;');\n}\n\n\n.icon-lemon {\n  @include ie7icon('&#xf094;');\n}\n\n\n.icon-phone {\n  @include ie7icon('&#xf095;');\n}\n\n\n.icon-check-empty {\n  @include ie7icon('&#xf096;');\n}\n\n.icon-unchecked {\n  @include ie7icon('&#xf096;');\n}\n\n\n.icon-bookmark-empty {\n  @include ie7icon('&#xf097;');\n}\n\n\n.icon-phone-sign {\n  @include ie7icon('&#xf098;');\n}\n\n\n.icon-twitter {\n  @include ie7icon('&#xf099;');\n}\n\n\n.icon-facebook {\n  @include ie7icon('&#xf09a;');\n}\n\n\n.icon-github {\n  @include ie7icon('&#xf09b;');\n}\n\n\n.icon-unlock {\n  @include ie7icon('&#xf09c;');\n}\n\n\n.icon-credit-card {\n  @include ie7icon('&#xf09d;');\n}\n\n\n.icon-rss {\n  @include ie7icon('&#xf09e;');\n}\n\n\n.icon-hdd {\n  @include ie7icon('&#xf0a0;');\n}\n\n\n.icon-bullhorn {\n  @include ie7icon('&#xf0a1;');\n}\n\n\n.icon-bell {\n  @include ie7icon('&#xf0a2;');\n}\n\n\n.icon-certificate {\n  @include ie7icon('&#xf0a3;');\n}\n\n\n.icon-hand-right {\n  @include ie7icon('&#xf0a4;');\n}\n\n\n.icon-hand-left {\n  @include ie7icon('&#xf0a5;');\n}\n\n\n.icon-hand-up {\n  @include ie7icon('&#xf0a6;');\n}\n\n\n.icon-hand-down {\n  @include ie7icon('&#xf0a7;');\n}\n\n\n.icon-circle-arrow-left {\n  @include ie7icon('&#xf0a8;');\n}\n\n\n.icon-circle-arrow-right {\n  @include ie7icon('&#xf0a9;');\n}\n\n\n.icon-circle-arrow-up {\n  @include ie7icon('&#xf0aa;');\n}\n\n\n.icon-circle-arrow-down {\n  @include ie7icon('&#xf0ab;');\n}\n\n\n.icon-globe {\n  @include ie7icon('&#xf0ac;');\n}\n\n\n.icon-wrench {\n  @include ie7icon('&#xf0ad;');\n}\n\n\n.icon-tasks {\n  @include ie7icon('&#xf0ae;');\n}\n\n\n.icon-filter {\n  @include ie7icon('&#xf0b0;');\n}\n\n\n.icon-briefcase {\n  @include ie7icon('&#xf0b1;');\n}\n\n\n.icon-fullscreen {\n  @include ie7icon('&#xf0b2;');\n}\n\n\n.icon-group {\n  @include ie7icon('&#xf0c0;');\n}\n\n\n.icon-link {\n  @include ie7icon('&#xf0c1;');\n}\n\n\n.icon-cloud {\n  @include ie7icon('&#xf0c2;');\n}\n\n\n.icon-beaker {\n  @include ie7icon('&#xf0c3;');\n}\n\n\n.icon-cut {\n  @include ie7icon('&#xf0c4;');\n}\n\n\n.icon-copy {\n  @include ie7icon('&#xf0c5;');\n}\n\n\n.icon-paper-clip {\n  @include ie7icon('&#xf0c6;');\n}\n\n.icon-paperclip {\n  @include ie7icon('&#xf0c6;');\n}\n\n\n.icon-save {\n  @include ie7icon('&#xf0c7;');\n}\n\n\n.icon-sign-blank {\n  @include ie7icon('&#xf0c8;');\n}\n\n\n.icon-reorder {\n  @include ie7icon('&#xf0c9;');\n}\n\n\n.icon-list-ul {\n  @include ie7icon('&#xf0ca;');\n}\n\n\n.icon-list-ol {\n  @include ie7icon('&#xf0cb;');\n}\n\n\n.icon-strikethrough {\n  @include ie7icon('&#xf0cc;');\n}\n\n\n.icon-underline {\n  @include ie7icon('&#xf0cd;');\n}\n\n\n.icon-table {\n  @include ie7icon('&#xf0ce;');\n}\n\n\n.icon-magic {\n  @include ie7icon('&#xf0d0;');\n}\n\n\n.icon-truck {\n  @include ie7icon('&#xf0d1;');\n}\n\n\n.icon-pinterest {\n  @include ie7icon('&#xf0d2;');\n}\n\n\n.icon-pinterest-sign {\n  @include ie7icon('&#xf0d3;');\n}\n\n\n.icon-google-plus-sign {\n  @include ie7icon('&#xf0d4;');\n}\n\n\n.icon-google-plus {\n  @include ie7icon('&#xf0d5;');\n}\n\n\n.icon-money {\n  @include ie7icon('&#xf0d6;');\n}\n\n\n.icon-caret-down {\n  @include ie7icon('&#xf0d7;');\n}\n\n\n.icon-caret-up {\n  @include ie7icon('&#xf0d8;');\n}\n\n\n.icon-caret-left {\n  @include ie7icon('&#xf0d9;');\n}\n\n\n.icon-caret-right {\n  @include ie7icon('&#xf0da;');\n}\n\n\n.icon-columns {\n  @include ie7icon('&#xf0db;');\n}\n\n\n.icon-sort {\n  @include ie7icon('&#xf0dc;');\n}\n\n\n.icon-sort-down {\n  @include ie7icon('&#xf0dd;');\n}\n\n\n.icon-sort-up {\n  @include ie7icon('&#xf0de;');\n}\n\n\n.icon-envelope {\n  @include ie7icon('&#xf0e0;');\n}\n\n\n.icon-linkedin {\n  @include ie7icon('&#xf0e1;');\n}\n\n\n.icon-undo {\n  @include ie7icon('&#xf0e2;');\n}\n\n.icon-rotate-left {\n  @include ie7icon('&#xf0e2;');\n}\n\n\n.icon-legal {\n  @include ie7icon('&#xf0e3;');\n}\n\n\n.icon-dashboard {\n  @include ie7icon('&#xf0e4;');\n}\n\n\n.icon-comment-alt {\n  @include ie7icon('&#xf0e5;');\n}\n\n\n.icon-comments-alt {\n  @include ie7icon('&#xf0e6;');\n}\n\n\n.icon-bolt {\n  @include ie7icon('&#xf0e7;');\n}\n\n\n.icon-sitemap {\n  @include ie7icon('&#xf0e8;');\n}\n\n\n.icon-umbrella {\n  @include ie7icon('&#xf0e9;');\n}\n\n\n.icon-paste {\n  @include ie7icon('&#xf0ea;');\n}\n\n\n.icon-lightbulb {\n  @include ie7icon('&#xf0eb;');\n}\n\n\n.icon-exchange {\n  @include ie7icon('&#xf0ec;');\n}\n\n\n.icon-cloud-download {\n  @include ie7icon('&#xf0ed;');\n}\n\n\n.icon-cloud-upload {\n  @include ie7icon('&#xf0ee;');\n}\n\n\n.icon-user-md {\n  @include ie7icon('&#xf0f0;');\n}\n\n\n.icon-stethoscope {\n  @include ie7icon('&#xf0f1;');\n}\n\n\n.icon-suitcase {\n  @include ie7icon('&#xf0f2;');\n}\n\n\n.icon-bell-alt {\n  @include ie7icon('&#xf0f3;');\n}\n\n\n.icon-coffee {\n  @include ie7icon('&#xf0f4;');\n}\n\n\n.icon-food {\n  @include ie7icon('&#xf0f5;');\n}\n\n\n.icon-file-text-alt {\n  @include ie7icon('&#xf0f6;');\n}\n\n\n.icon-building {\n  @include ie7icon('&#xf0f7;');\n}\n\n\n.icon-hospital {\n  @include ie7icon('&#xf0f8;');\n}\n\n\n.icon-ambulance {\n  @include ie7icon('&#xf0f9;');\n}\n\n\n.icon-medkit {\n  @include ie7icon('&#xf0fa;');\n}\n\n\n.icon-fighter-jet {\n  @include ie7icon('&#xf0fb;');\n}\n\n\n.icon-beer {\n  @include ie7icon('&#xf0fc;');\n}\n\n\n.icon-h-sign {\n  @include ie7icon('&#xf0fd;');\n}\n\n\n.icon-plus-sign-alt {\n  @include ie7icon('&#xf0fe;');\n}\n\n\n.icon-double-angle-left {\n  @include ie7icon('&#xf100;');\n}\n\n\n.icon-double-angle-right {\n  @include ie7icon('&#xf101;');\n}\n\n\n.icon-double-angle-up {\n  @include ie7icon('&#xf102;');\n}\n\n\n.icon-double-angle-down {\n  @include ie7icon('&#xf103;');\n}\n\n\n.icon-angle-left {\n  @include ie7icon('&#xf104;');\n}\n\n\n.icon-angle-right {\n  @include ie7icon('&#xf105;');\n}\n\n\n.icon-angle-up {\n  @include ie7icon('&#xf106;');\n}\n\n\n.icon-angle-down {\n  @include ie7icon('&#xf107;');\n}\n\n\n.icon-desktop {\n  @include ie7icon('&#xf108;');\n}\n\n\n.icon-laptop {\n  @include ie7icon('&#xf109;');\n}\n\n\n.icon-tablet {\n  @include ie7icon('&#xf10a;');\n}\n\n\n.icon-mobile-phone {\n  @include ie7icon('&#xf10b;');\n}\n\n\n.icon-circle-blank {\n  @include ie7icon('&#xf10c;');\n}\n\n\n.icon-quote-left {\n  @include ie7icon('&#xf10d;');\n}\n\n\n.icon-quote-right {\n  @include ie7icon('&#xf10e;');\n}\n\n\n.icon-spinner {\n  @include ie7icon('&#xf110;');\n}\n\n\n.icon-circle {\n  @include ie7icon('&#xf111;');\n}\n\n\n.icon-reply {\n  @include ie7icon('&#xf112;');\n}\n\n.icon-mail-reply {\n  @include ie7icon('&#xf112;');\n}\n\n\n.icon-github-alt {\n  @include ie7icon('&#xf113;');\n}\n\n\n.icon-folder-close-alt {\n  @include ie7icon('&#xf114;');\n}\n\n\n.icon-folder-open-alt {\n  @include ie7icon('&#xf115;');\n}\n\n\n.icon-expand-alt {\n  @include ie7icon('&#xf116;');\n}\n\n\n.icon-collapse-alt {\n  @include ie7icon('&#xf117;');\n}\n\n\n.icon-smile {\n  @include ie7icon('&#xf118;');\n}\n\n\n.icon-frown {\n  @include ie7icon('&#xf119;');\n}\n\n\n.icon-meh {\n  @include ie7icon('&#xf11a;');\n}\n\n\n.icon-gamepad {\n  @include ie7icon('&#xf11b;');\n}\n\n\n.icon-keyboard {\n  @include ie7icon('&#xf11c;');\n}\n\n\n.icon-flag-alt {\n  @include ie7icon('&#xf11d;');\n}\n\n\n.icon-flag-checkered {\n  @include ie7icon('&#xf11e;');\n}\n\n\n.icon-terminal {\n  @include ie7icon('&#xf120;');\n}\n\n\n.icon-code {\n  @include ie7icon('&#xf121;');\n}\n\n\n.icon-reply-all {\n  @include ie7icon('&#xf122;');\n}\n\n\n.icon-mail-reply-all {\n  @include ie7icon('&#xf122;');\n}\n\n\n.icon-star-half-empty {\n  @include ie7icon('&#xf123;');\n}\n\n.icon-star-half-full {\n  @include ie7icon('&#xf123;');\n}\n\n\n.icon-location-arrow {\n  @include ie7icon('&#xf124;');\n}\n\n\n.icon-crop {\n  @include ie7icon('&#xf125;');\n}\n\n\n.icon-code-fork {\n  @include ie7icon('&#xf126;');\n}\n\n\n.icon-unlink {\n  @include ie7icon('&#xf127;');\n}\n\n\n.icon-question {\n  @include ie7icon('&#xf128;');\n}\n\n\n.icon-info {\n  @include ie7icon('&#xf129;');\n}\n\n\n.icon-exclamation {\n  @include ie7icon('&#xf12a;');\n}\n\n\n.icon-superscript {\n  @include ie7icon('&#xf12b;');\n}\n\n\n.icon-subscript {\n  @include ie7icon('&#xf12c;');\n}\n\n\n.icon-eraser {\n  @include ie7icon('&#xf12d;');\n}\n\n\n.icon-puzzle-piece {\n  @include ie7icon('&#xf12e;');\n}\n\n\n.icon-microphone {\n  @include ie7icon('&#xf130;');\n}\n\n\n.icon-microphone-off {\n  @include ie7icon('&#xf131;');\n}\n\n\n.icon-shield {\n  @include ie7icon('&#xf132;');\n}\n\n\n.icon-calendar-empty {\n  @include ie7icon('&#xf133;');\n}\n\n\n.icon-fire-extinguisher {\n  @include ie7icon('&#xf134;');\n}\n\n\n.icon-rocket {\n  @include ie7icon('&#xf135;');\n}\n\n\n.icon-maxcdn {\n  @include ie7icon('&#xf136;');\n}\n\n\n.icon-chevron-sign-left {\n  @include ie7icon('&#xf137;');\n}\n\n\n.icon-chevron-sign-right {\n  @include ie7icon('&#xf138;');\n}\n\n\n.icon-chevron-sign-up {\n  @include ie7icon('&#xf139;');\n}\n\n\n.icon-chevron-sign-down {\n  @include ie7icon('&#xf13a;');\n}\n\n\n.icon-html5 {\n  @include ie7icon('&#xf13b;');\n}\n\n\n.icon-css3 {\n  @include ie7icon('&#xf13c;');\n}\n\n\n.icon-anchor {\n  @include ie7icon('&#xf13d;');\n}\n\n\n.icon-unlock-alt {\n  @include ie7icon('&#xf13e;');\n}\n\n\n.icon-bullseye {\n  @include ie7icon('&#xf140;');\n}\n\n\n.icon-ellipsis-horizontal {\n  @include ie7icon('&#xf141;');\n}\n\n\n.icon-ellipsis-vertical {\n  @include ie7icon('&#xf142;');\n}\n\n\n.icon-rss-sign {\n  @include ie7icon('&#xf143;');\n}\n\n\n.icon-play-sign {\n  @include ie7icon('&#xf144;');\n}\n\n\n.icon-ticket {\n  @include ie7icon('&#xf145;');\n}\n\n\n.icon-minus-sign-alt {\n  @include ie7icon('&#xf146;');\n}\n\n\n.icon-check-minus {\n  @include ie7icon('&#xf147;');\n}\n\n\n.icon-level-up {\n  @include ie7icon('&#xf148;');\n}\n\n\n.icon-level-down {\n  @include ie7icon('&#xf149;');\n}\n\n\n.icon-check-sign {\n  @include ie7icon('&#xf14a;');\n}\n\n\n.icon-edit-sign {\n  @include ie7icon('&#xf14b;');\n}\n\n\n.icon-external-link-sign {\n  @include ie7icon('&#xf14c;');\n}\n\n\n.icon-share-sign {\n  @include ie7icon('&#xf14d;');\n}\n\n\n.icon-compass {\n  @include ie7icon('&#xf14e;');\n}\n\n\n.icon-collapse {\n  @include ie7icon('&#xf150;');\n}\n\n\n.icon-collapse-top {\n  @include ie7icon('&#xf151;');\n}\n\n\n.icon-expand {\n  @include ie7icon('&#xf152;');\n}\n\n\n.icon-eur {\n  @include ie7icon('&#xf153;');\n}\n\n.icon-euro {\n  @include ie7icon('&#xf153;');\n}\n\n\n.icon-gbp {\n  @include ie7icon('&#xf154;');\n}\n\n\n.icon-usd {\n  @include ie7icon('&#xf155;');\n}\n\n.icon-dollar {\n  @include ie7icon('&#xf155;');\n}\n\n\n.icon-inr {\n  @include ie7icon('&#xf156;');\n}\n\n.icon-rupee {\n  @include ie7icon('&#xf156;');\n}\n\n\n.icon-jpy {\n  @include ie7icon('&#xf157;');\n}\n\n.icon-yen {\n  @include ie7icon('&#xf157;');\n}\n\n\n.icon-cny {\n  @include ie7icon('&#xf158;');\n}\n\n.icon-renminbi {\n  @include ie7icon('&#xf158;');\n}\n\n\n.icon-krw {\n  @include ie7icon('&#xf159;');\n}\n\n.icon-won {\n  @include ie7icon('&#xf159;');\n}\n\n\n.icon-btc {\n  @include ie7icon('&#xf15a;');\n}\n\n.icon-bitcoin {\n  @include ie7icon('&#xf15a;');\n}\n\n\n.icon-file {\n  @include ie7icon('&#xf15b;');\n}\n\n\n.icon-file-text {\n  @include ie7icon('&#xf15c;');\n}\n\n\n.icon-sort-by-alphabet {\n  @include ie7icon('&#xf15d;');\n}\n\n\n.icon-sort-by-alphabet-alt {\n  @include ie7icon('&#xf15e;');\n}\n\n\n.icon-sort-by-attributes {\n  @include ie7icon('&#xf160;');\n}\n\n\n.icon-sort-by-attributes-alt {\n  @include ie7icon('&#xf161;');\n}\n\n\n.icon-sort-by-order {\n  @include ie7icon('&#xf162;');\n}\n\n\n.icon-sort-by-order-alt {\n  @include ie7icon('&#xf163;');\n}\n\n\n.icon-thumbs-up {\n  @include ie7icon('&#xf164;');\n}\n\n\n.icon-thumbs-down {\n  @include ie7icon('&#xf165;');\n}\n\n\n.icon-youtube-sign {\n  @include ie7icon('&#xf166;');\n}\n\n\n.icon-youtube {\n  @include ie7icon('&#xf167;');\n}\n\n\n.icon-xing {\n  @include ie7icon('&#xf168;');\n}\n\n\n.icon-xing-sign {\n  @include ie7icon('&#xf169;');\n}\n\n\n.icon-youtube-play {\n  @include ie7icon('&#xf16a;');\n}\n\n\n.icon-dropbox {\n  @include ie7icon('&#xf16b;');\n}\n\n\n.icon-stackexchange {\n  @include ie7icon('&#xf16c;');\n}\n\n\n.icon-instagram {\n  @include ie7icon('&#xf16d;');\n}\n\n\n.icon-flickr {\n  @include ie7icon('&#xf16e;');\n}\n\n\n.icon-adn {\n  @include ie7icon('&#xf170;');\n}\n\n\n.icon-bitbucket {\n  @include ie7icon('&#xf171;');\n}\n\n\n.icon-bitbucket-sign {\n  @include ie7icon('&#xf172;');\n}\n\n\n.icon-tumblr {\n  @include ie7icon('&#xf173;');\n}\n\n\n.icon-tumblr-sign {\n  @include ie7icon('&#xf174;');\n}\n\n\n.icon-long-arrow-down {\n  @include ie7icon('&#xf175;');\n}\n\n\n.icon-long-arrow-up {\n  @include ie7icon('&#xf176;');\n}\n\n\n.icon-long-arrow-left {\n  @include ie7icon('&#xf177;');\n}\n\n\n.icon-long-arrow-right {\n  @include ie7icon('&#xf178;');\n}\n\n\n.icon-apple {\n  @include ie7icon('&#xf179;');\n}\n\n\n.icon-windows {\n  @include ie7icon('&#xf17a;');\n}\n\n\n.icon-android {\n  @include ie7icon('&#xf17b;');\n}\n\n\n.icon-linux {\n  @include ie7icon('&#xf17c;');\n}\n\n\n.icon-dribble {\n  @include ie7icon('&#xf17d;');\n}\n\n\n.icon-skype {\n  @include ie7icon('&#xf17e;');\n}\n\n\n.icon-foursquare {\n  @include ie7icon('&#xf180;');\n}\n\n\n.icon-trello {\n  @include ie7icon('&#xf181;');\n}\n\n\n.icon-female {\n  @include ie7icon('&#xf182;');\n}\n\n\n.icon-male {\n  @include ie7icon('&#xf183;');\n}\n\n\n.icon-gittip {\n  @include ie7icon('&#xf184;');\n}\n\n\n.icon-sun {\n  @include ie7icon('&#xf185;');\n}\n\n\n.icon-moon {\n  @include ie7icon('&#xf186;');\n}\n\n\n.icon-archive {\n  @include ie7icon('&#xf187;');\n}\n\n\n.icon-bug {\n  @include ie7icon('&#xf188;');\n}\n\n\n.icon-vk {\n  @include ie7icon('&#xf189;');\n}\n\n\n.icon-weibo {\n  @include ie7icon('&#xf18a;');\n}\n\n\n.icon-renren {\n  @include ie7icon('&#xf18b;');\n}\n\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/font-awesome/scss/font-awesome.scss",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n@import \"variables\";\n@import \"mixins\";\n@import \"path\";\n@import \"core\";\n@import \"bootstrap\";\n@import \"extras\";\n@import \"icons\";\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/fonts/glyphicons/css/glyphicons.css",
    "content": "/*!\n *\n *  Project:  GLYPHICONS\n *  Author:   Jan Kovarik - www.glyphicons.com\n *  Twitter:  @jankovarik\n *\n */\nhtml,\nhtml .halflings {\n  -webkit-font-smoothing: antialiased !important;\n}\n@font-face {\n  font-family: 'Glyphicons';\n  src: url('../fonts/glyphicons-regular.eot');\n  src: url('../fonts/glyphicons-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-regular.woff') format('woff'), url('../fonts/glyphicons-regular.ttf') format('truetype'), url('../fonts/glyphicons-regular.svg#glyphicons_halflingsregular') format('svg'), url('../fonts/glyphicons-regular.otf') format('opentype');\n  font-weight: normal;\n  font-style: normal;\n}\n.glyphicons {\n  display: inline-block;\n  position: relative;\n  padding: 5px 0 5px 35px;\n  color: #1d1d1b;\n  text-decoration: none;\n  *display: inline;\n  *zoom: 1;\n}\n.glyphicons i:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  font: 24px/1em 'Glyphicons';\n  font-style: normal;\n  color: #1d1d1b;\n}\n.glyphicons.white i:before {\n  color: #fff;\n}\n.glyphicons.glass i:before {\n  content: \"\\e001\";\n}\n.glyphicons.leaf i:before {\n  content: \"\\e002\";\n}\n.glyphicons.dog i:before {\n  content: \"\\e003\";\n}\n.glyphicons.user i:before {\n  content: \"\\e004\";\n}\n.glyphicons.girl i:before {\n  content: \"\\e005\";\n}\n.glyphicons.car i:before {\n  content: \"\\e006\";\n}\n.glyphicons.user_add i:before {\n  content: \"\\e007\";\n}\n.glyphicons.user_remove i:before {\n  content: \"\\e008\";\n}\n.glyphicons.film i:before {\n  content: \"\\e009\";\n}\n.glyphicons.magic i:before {\n  content: \"\\e010\";\n}\n.glyphicons.envelope i:before {\n  content: \"\\2709\";\n}\n.glyphicons.camera i:before {\n  content: \"\\e012\";\n}\n.glyphicons.heart i:before {\n  content: \"\\e013\";\n}\n.glyphicons.beach_umbrella i:before {\n  content: \"\\e014\";\n}\n.glyphicons.train i:before {\n  content: \"\\e015\";\n}\n.glyphicons.print i:before {\n  content: \"\\e016\";\n}\n.glyphicons.bin i:before {\n  content: \"\\e017\";\n}\n.glyphicons.music i:before {\n  content: \"\\e018\";\n}\n.glyphicons.note i:before {\n  content: \"\\e019\";\n}\n.glyphicons.heart_empty i:before {\n  content: \"\\e020\";\n}\n.glyphicons.home i:before {\n  content: \"\\e021\";\n}\n.glyphicons.snowflake i:before {\n  content: \"\\2744\";\n}\n.glyphicons.fire i:before {\n  content: \"\\e023\";\n}\n.glyphicons.magnet i:before {\n  content: \"\\e024\";\n}\n.glyphicons.parents i:before {\n  content: \"\\e025\";\n}\n.glyphicons.binoculars i:before {\n  content: \"\\e026\";\n}\n.glyphicons.road i:before {\n  content: \"\\e027\";\n}\n.glyphicons.search i:before {\n  content: \"\\e028\";\n}\n.glyphicons.cars i:before {\n  content: \"\\e029\";\n}\n.glyphicons.notes_2 i:before {\n  content: \"\\e030\";\n}\n.glyphicons.pencil i:before {\n  content: \"\\270F\";\n}\n.glyphicons.bus i:before {\n  content: \"\\e032\";\n}\n.glyphicons.wifi_alt i:before {\n  content: \"\\e033\";\n}\n.glyphicons.luggage i:before {\n  content: \"\\e034\";\n}\n.glyphicons.old_man i:before {\n  content: \"\\e035\";\n}\n.glyphicons.woman i:before {\n  content: \"\\e036\";\n}\n.glyphicons.file i:before {\n  content: \"\\e037\";\n}\n.glyphicons.coins i:before {\n  content: \"\\e038\";\n}\n.glyphicons.airplane i:before {\n  content: \"\\2708\";\n}\n.glyphicons.notes i:before {\n  content: \"\\e040\";\n}\n.glyphicons.stats i:before {\n  content: \"\\e041\";\n}\n.glyphicons.charts i:before {\n  content: \"\\e042\";\n}\n.glyphicons.pie_chart i:before {\n  content: \"\\e043\";\n}\n.glyphicons.group i:before {\n  content: \"\\e044\";\n}\n.glyphicons.keys i:before {\n  content: \"\\e045\";\n}\n.glyphicons.calendar i:before {\n  content: \"\\e046\";\n}\n.glyphicons.router i:before {\n  content: \"\\e047\";\n}\n.glyphicons.camera_small i:before {\n  content: \"\\e048\";\n}\n.glyphicons.dislikes i:before {\n  content: \"\\e049\";\n}\n.glyphicons.star i:before {\n  content: \"\\e050\";\n}\n.glyphicons.link i:before {\n  content: \"\\e051\";\n}\n.glyphicons.eye_open i:before {\n  content: \"\\e052\";\n}\n.glyphicons.eye_close i:before {\n  content: \"\\e053\";\n}\n.glyphicons.alarm i:before {\n  content: \"\\e054\";\n}\n.glyphicons.clock i:before {\n  content: \"\\e055\";\n}\n.glyphicons.stopwatch i:before {\n  content: \"\\e056\";\n}\n.glyphicons.projector i:before {\n  content: \"\\e057\";\n}\n.glyphicons.history i:before {\n  content: \"\\e058\";\n}\n.glyphicons.truck i:before {\n  content: \"\\e059\";\n}\n.glyphicons.cargo i:before {\n  content: \"\\e060\";\n}\n.glyphicons.compass i:before {\n  content: \"\\e061\";\n}\n.glyphicons.keynote i:before {\n  content: \"\\e062\";\n}\n.glyphicons.paperclip i:before {\n  content: \"\\e063\";\n}\n.glyphicons.power i:before {\n  content: \"\\e064\";\n}\n.glyphicons.lightbulb i:before {\n  content: \"\\e065\";\n}\n.glyphicons.tag i:before {\n  content: \"\\e066\";\n}\n.glyphicons.tags i:before {\n  content: \"\\e067\";\n}\n.glyphicons.cleaning i:before {\n  content: \"\\e068\";\n}\n.glyphicons.ruller i:before {\n  content: \"\\e069\";\n}\n.glyphicons.gift i:before {\n  content: \"\\e070\";\n}\n.glyphicons.umbrella i:before {\n  content: \"\\2602\";\n}\n.glyphicons.book i:before {\n  content: \"\\e072\";\n}\n.glyphicons.bookmark i:before {\n  content: \"\\e073\";\n}\n.glyphicons.wifi i:before {\n  content: \"\\e074\";\n}\n.glyphicons.cup i:before {\n  content: \"\\e075\";\n}\n.glyphicons.stroller i:before {\n  content: \"\\e076\";\n}\n.glyphicons.headphones i:before {\n  content: \"\\e077\";\n}\n.glyphicons.headset i:before {\n  content: \"\\e078\";\n}\n.glyphicons.warning_sign i:before {\n  content: \"\\e079\";\n}\n.glyphicons.signal i:before {\n  content: \"\\e080\";\n}\n.glyphicons.retweet i:before {\n  content: \"\\e081\";\n}\n.glyphicons.refresh i:before {\n  content: \"\\e082\";\n}\n.glyphicons.roundabout i:before {\n  content: \"\\e083\";\n}\n.glyphicons.random i:before {\n  content: \"\\e084\";\n}\n.glyphicons.heat i:before {\n  content: \"\\e085\";\n}\n.glyphicons.repeat i:before {\n  content: \"\\e086\";\n}\n.glyphicons.display i:before {\n  content: \"\\e087\";\n}\n.glyphicons.log_book i:before {\n  content: \"\\e088\";\n}\n.glyphicons.adress_book i:before {\n  content: \"\\e089\";\n}\n.glyphicons.building i:before {\n  content: \"\\e090\";\n}\n.glyphicons.eyedropper i:before {\n  content: \"\\e091\";\n}\n.glyphicons.adjust i:before {\n  content: \"\\e092\";\n}\n.glyphicons.tint i:before {\n  content: \"\\e093\";\n}\n.glyphicons.crop i:before {\n  content: \"\\e094\";\n}\n.glyphicons.vector_path_square i:before {\n  content: \"\\e095\";\n}\n.glyphicons.vector_path_circle i:before {\n  content: \"\\e096\";\n}\n.glyphicons.vector_path_polygon i:before {\n  content: \"\\e097\";\n}\n.glyphicons.vector_path_line i:before {\n  content: \"\\e098\";\n}\n.glyphicons.vector_path_curve i:before {\n  content: \"\\e099\";\n}\n.glyphicons.vector_path_all i:before {\n  content: \"\\e100\";\n}\n.glyphicons.font i:before {\n  content: \"\\e101\";\n}\n.glyphicons.italic i:before {\n  content: \"\\e102\";\n}\n.glyphicons.bold i:before {\n  content: \"\\e103\";\n}\n.glyphicons.text_underline i:before {\n  content: \"\\e104\";\n}\n.glyphicons.text_strike i:before {\n  content: \"\\e105\";\n}\n.glyphicons.text_height i:before {\n  content: \"\\e106\";\n}\n.glyphicons.text_width i:before {\n  content: \"\\e107\";\n}\n.glyphicons.text_resize i:before {\n  content: \"\\e108\";\n}\n.glyphicons.left_indent i:before {\n  content: \"\\e109\";\n}\n.glyphicons.right_indent i:before {\n  content: \"\\e110\";\n}\n.glyphicons.align_left i:before {\n  content: \"\\e111\";\n}\n.glyphicons.align_center i:before {\n  content: \"\\e112\";\n}\n.glyphicons.align_right i:before {\n  content: \"\\e113\";\n}\n.glyphicons.justify i:before {\n  content: \"\\e114\";\n}\n.glyphicons.list i:before {\n  content: \"\\e115\";\n}\n.glyphicons.text_smaller i:before {\n  content: \"\\e116\";\n}\n.glyphicons.text_bigger i:before {\n  content: \"\\e117\";\n}\n.glyphicons.embed i:before {\n  content: \"\\e118\";\n}\n.glyphicons.embed_close i:before {\n  content: \"\\e119\";\n}\n.glyphicons.table i:before {\n  content: \"\\e120\";\n}\n.glyphicons.message_full i:before {\n  content: \"\\e121\";\n}\n.glyphicons.message_empty i:before {\n  content: \"\\e122\";\n}\n.glyphicons.message_in i:before {\n  content: \"\\e123\";\n}\n.glyphicons.message_out i:before {\n  content: \"\\e124\";\n}\n.glyphicons.message_plus i:before {\n  content: \"\\e125\";\n}\n.glyphicons.message_minus i:before {\n  content: \"\\e126\";\n}\n.glyphicons.message_ban i:before {\n  content: \"\\e127\";\n}\n.glyphicons.message_flag i:before {\n  content: \"\\e128\";\n}\n.glyphicons.message_lock i:before {\n  content: \"\\e129\";\n}\n.glyphicons.message_new i:before {\n  content: \"\\e130\";\n}\n.glyphicons.inbox i:before {\n  content: \"\\e131\";\n}\n.glyphicons.inbox_plus i:before {\n  content: \"\\e132\";\n}\n.glyphicons.inbox_minus i:before {\n  content: \"\\e133\";\n}\n.glyphicons.inbox_lock i:before {\n  content: \"\\e134\";\n}\n.glyphicons.inbox_in i:before {\n  content: \"\\e135\";\n}\n.glyphicons.inbox_out i:before {\n  content: \"\\e136\";\n}\n.glyphicons.cogwheel i:before {\n  content: \"\\e137\";\n}\n.glyphicons.cogwheels i:before {\n  content: \"\\e138\";\n}\n.glyphicons.picture i:before {\n  content: \"\\e139\";\n}\n.glyphicons.adjust_alt i:before {\n  content: \"\\e140\";\n}\n.glyphicons.database_lock i:before {\n  content: \"\\e141\";\n}\n.glyphicons.database_plus i:before {\n  content: \"\\e142\";\n}\n.glyphicons.database_minus i:before {\n  content: \"\\e143\";\n}\n.glyphicons.database_ban i:before {\n  content: \"\\e144\";\n}\n.glyphicons.folder_open i:before {\n  content: \"\\e145\";\n}\n.glyphicons.folder_plus i:before {\n  content: \"\\e146\";\n}\n.glyphicons.folder_minus i:before {\n  content: \"\\e147\";\n}\n.glyphicons.folder_lock i:before {\n  content: \"\\e148\";\n}\n.glyphicons.folder_flag i:before {\n  content: \"\\e149\";\n}\n.glyphicons.folder_new i:before {\n  content: \"\\e150\";\n}\n.glyphicons.edit i:before {\n  content: \"\\e151\";\n}\n.glyphicons.new_window i:before {\n  content: \"\\e152\";\n}\n.glyphicons.check i:before {\n  content: \"\\e153\";\n}\n.glyphicons.unchecked i:before {\n  content: \"\\e154\";\n}\n.glyphicons.more_windows i:before {\n  content: \"\\e155\";\n}\n.glyphicons.show_big_thumbnails i:before {\n  content: \"\\e156\";\n}\n.glyphicons.show_thumbnails i:before {\n  content: \"\\e157\";\n}\n.glyphicons.show_thumbnails_with_lines i:before {\n  content: \"\\e158\";\n}\n.glyphicons.show_lines i:before {\n  content: \"\\e159\";\n}\n.glyphicons.playlist i:before {\n  content: \"\\e160\";\n}\n.glyphicons.imac i:before {\n  content: \"\\e161\";\n}\n.glyphicons.macbook i:before {\n  content: \"\\e162\";\n}\n.glyphicons.ipad i:before {\n  content: \"\\e163\";\n}\n.glyphicons.iphone i:before {\n  content: \"\\e164\";\n}\n.glyphicons.iphone_transfer i:before {\n  content: \"\\e165\";\n}\n.glyphicons.iphone_exchange i:before {\n  content: \"\\e166\";\n}\n.glyphicons.ipod i:before {\n  content: \"\\e167\";\n}\n.glyphicons.ipod_shuffle i:before {\n  content: \"\\e168\";\n}\n.glyphicons.ear_plugs i:before {\n  content: \"\\e169\";\n}\n.glyphicons.phone i:before {\n  content: \"\\e170\";\n}\n.glyphicons.step_backward i:before {\n  content: \"\\e171\";\n}\n.glyphicons.fast_backward i:before {\n  content: \"\\e172\";\n}\n.glyphicons.rewind i:before {\n  content: \"\\e173\";\n}\n.glyphicons.play i:before {\n  content: \"\\e174\";\n}\n.glyphicons.pause i:before {\n  content: \"\\e175\";\n}\n.glyphicons.stop i:before {\n  content: \"\\e176\";\n}\n.glyphicons.forward i:before {\n  content: \"\\e177\";\n}\n.glyphicons.fast_forward i:before {\n  content: \"\\e178\";\n}\n.glyphicons.step_forward i:before {\n  content: \"\\e179\";\n}\n.glyphicons.eject i:before {\n  content: \"\\e180\";\n}\n.glyphicons.facetime_video i:before {\n  content: \"\\e181\";\n}\n.glyphicons.download_alt i:before {\n  content: \"\\e182\";\n}\n.glyphicons.mute i:before {\n  content: \"\\e183\";\n}\n.glyphicons.volume_down i:before {\n  content: \"\\e184\";\n}\n.glyphicons.volume_up i:before {\n  content: \"\\e185\";\n}\n.glyphicons.screenshot i:before {\n  content: \"\\e186\";\n}\n.glyphicons.move i:before {\n  content: \"\\e187\";\n}\n.glyphicons.more i:before {\n  content: \"\\e188\";\n}\n.glyphicons.brightness_reduce i:before {\n  content: \"\\e189\";\n}\n.glyphicons.brightness_increase i:before {\n  content: \"\\e190\";\n}\n.glyphicons.circle_plus i:before {\n  content: \"\\e191\";\n}\n.glyphicons.circle_minus i:before {\n  content: \"\\e192\";\n}\n.glyphicons.circle_remove i:before {\n  content: \"\\e193\";\n}\n.glyphicons.circle_ok i:before {\n  content: \"\\e194\";\n}\n.glyphicons.circle_question_mark i:before {\n  content: \"\\e195\";\n}\n.glyphicons.circle_info i:before {\n  content: \"\\e196\";\n}\n.glyphicons.circle_exclamation_mark i:before {\n  content: \"\\e197\";\n}\n.glyphicons.remove i:before {\n  content: \"\\e198\";\n}\n.glyphicons.ok i:before {\n  content: \"\\e199\";\n}\n.glyphicons.ban i:before {\n  content: \"\\e200\";\n}\n.glyphicons.download i:before {\n  content: \"\\e201\";\n}\n.glyphicons.upload i:before {\n  content: \"\\e202\";\n}\n.glyphicons.shopping_cart i:before {\n  content: \"\\e203\";\n}\n.glyphicons.lock i:before {\n  content: \"\\e204\";\n}\n.glyphicons.unlock i:before {\n  content: \"\\e205\";\n}\n.glyphicons.electricity i:before {\n  content: \"\\e206\";\n}\n.glyphicons.ok_2 i:before {\n  content: \"\\e207\";\n}\n.glyphicons.remove_2 i:before {\n  content: \"\\e208\";\n}\n.glyphicons.cart_out i:before {\n  content: \"\\e209\";\n}\n.glyphicons.cart_in i:before {\n  content: \"\\e210\";\n}\n.glyphicons.left_arrow i:before {\n  content: \"\\e211\";\n}\n.glyphicons.right_arrow i:before {\n  content: \"\\e212\";\n}\n.glyphicons.down_arrow i:before {\n  content: \"\\e213\";\n}\n.glyphicons.up_arrow i:before {\n  content: \"\\e214\";\n}\n.glyphicons.resize_small i:before {\n  content: \"\\e215\";\n}\n.glyphicons.resize_full i:before {\n  content: \"\\e216\";\n}\n.glyphicons.circle_arrow_left i:before {\n  content: \"\\e217\";\n}\n.glyphicons.circle_arrow_right i:before {\n  content: \"\\e218\";\n}\n.glyphicons.circle_arrow_top i:before {\n  content: \"\\e219\";\n}\n.glyphicons.circle_arrow_down i:before {\n  content: \"\\e220\";\n}\n.glyphicons.play_button i:before {\n  content: \"\\e221\";\n}\n.glyphicons.unshare i:before {\n  content: \"\\e222\";\n}\n.glyphicons.share i:before {\n  content: \"\\e223\";\n}\n.glyphicons.chevron-right i:before {\n  content: \"\\e224\";\n}\n.glyphicons.chevron-left i:before {\n  content: \"\\e225\";\n}\n.glyphicons.bluetooth i:before {\n  content: \"\\e226\";\n}\n.glyphicons.euro i:before {\n  content: \"\\20AC\";\n}\n.glyphicons.usd i:before {\n  content: \"\\e228\";\n}\n.glyphicons.gbp i:before {\n  content: \"\\e229\";\n}\n.glyphicons.retweet_2 i:before {\n  content: \"\\e230\";\n}\n.glyphicons.moon i:before {\n  content: \"\\e231\";\n}\n.glyphicons.sun i:before {\n  content: \"\\2609\";\n}\n.glyphicons.cloud i:before {\n  content: \"\\2601\";\n}\n.glyphicons.direction i:before {\n  content: \"\\e234\";\n}\n.glyphicons.brush i:before {\n  content: \"\\e235\";\n}\n.glyphicons.pen i:before {\n  content: \"\\e236\";\n}\n.glyphicons.zoom_in i:before {\n  content: \"\\e237\";\n}\n.glyphicons.zoom_out i:before {\n  content: \"\\e238\";\n}\n.glyphicons.pin i:before {\n  content: \"\\e239\";\n}\n.glyphicons.albums i:before {\n  content: \"\\e240\";\n}\n.glyphicons.rotation_lock i:before {\n  content: \"\\e241\";\n}\n.glyphicons.flash i:before {\n  content: \"\\e242\";\n}\n.glyphicons.google_maps i:before {\n  content: \"\\e243\";\n}\n.glyphicons.anchor i:before {\n  content: \"\\2693\";\n}\n.glyphicons.conversation i:before {\n  content: \"\\e245\";\n}\n.glyphicons.chat i:before {\n  content: \"\\e246\";\n}\n.glyphicons.male i:before {\n  content: \"\\e247\";\n}\n.glyphicons.female i:before {\n  content: \"\\e248\";\n}\n.glyphicons.asterisk i:before {\n  content: \"\\002A\";\n}\n.glyphicons.divide i:before {\n  content: \"\\00F7\";\n}\n.glyphicons.snorkel_diving i:before {\n  content: \"\\e251\";\n}\n.glyphicons.scuba_diving i:before {\n  content: \"\\e252\";\n}\n.glyphicons.oxygen_bottle i:before {\n  content: \"\\e253\";\n}\n.glyphicons.fins i:before {\n  content: \"\\e254\";\n}\n.glyphicons.fishes i:before {\n  content: \"\\e255\";\n}\n.glyphicons.boat i:before {\n  content: \"\\e256\";\n}\n.glyphicons.delete i:before {\n  content: \"\\e257\";\n}\n.glyphicons.sheriffs_star i:before {\n  content: \"\\e258\";\n}\n.glyphicons.qrcode i:before {\n  content: \"\\e259\";\n}\n.glyphicons.barcode i:before {\n  content: \"\\e260\";\n}\n.glyphicons.pool i:before {\n  content: \"\\e261\";\n}\n.glyphicons.buoy i:before {\n  content: \"\\e262\";\n}\n.glyphicons.spade i:before {\n  content: \"\\e263\";\n}\n.glyphicons.bank i:before {\n  content: \"\\e264\";\n}\n.glyphicons.vcard i:before {\n  content: \"\\e265\";\n}\n.glyphicons.electrical_plug i:before {\n  content: \"\\e266\";\n}\n.glyphicons.flag i:before {\n  content: \"\\e267\";\n}\n.glyphicons.credit_card i:before {\n  content: \"\\e268\";\n}\n.glyphicons.keyboard-wireless i:before {\n  content: \"\\e269\";\n}\n.glyphicons.keyboard-wired i:before {\n  content: \"\\e270\";\n}\n.glyphicons.shield i:before {\n  content: \"\\e271\";\n}\n.glyphicons.ring i:before {\n  content: \"\\02DA\";\n}\n.glyphicons.cake i:before {\n  content: \"\\e273\";\n}\n.glyphicons.drink i:before {\n  content: \"\\e274\";\n}\n.glyphicons.beer i:before {\n  content: \"\\e275\";\n}\n.glyphicons.fast_food i:before {\n  content: \"\\e276\";\n}\n.glyphicons.cutlery i:before {\n  content: \"\\e277\";\n}\n.glyphicons.pizza i:before {\n  content: \"\\e278\";\n}\n.glyphicons.birthday_cake i:before {\n  content: \"\\e279\";\n}\n.glyphicons.tablet i:before {\n  content: \"\\e280\";\n}\n.glyphicons.settings i:before {\n  content: \"\\e281\";\n}\n.glyphicons.bullets i:before {\n  content: \"\\e282\";\n}\n.glyphicons.cardio i:before {\n  content: \"\\e283\";\n}\n.glyphicons.t-shirt i:before {\n  content: \"\\e284\";\n}\n.glyphicons.pants i:before {\n  content: \"\\e285\";\n}\n.glyphicons.sweater i:before {\n  content: \"\\e286\";\n}\n.glyphicons.fabric i:before {\n  content: \"\\e287\";\n}\n.glyphicons.leather i:before {\n  content: \"\\e288\";\n}\n.glyphicons.scissors i:before {\n  content: \"\\e289\";\n}\n.glyphicons.bomb i:before {\n  content: \"\\e290\";\n}\n.glyphicons.skull i:before {\n  content: \"\\e291\";\n}\n.glyphicons.celebration i:before {\n  content: \"\\e292\";\n}\n.glyphicons.tea_kettle i:before {\n  content: \"\\e293\";\n}\n.glyphicons.french_press i:before {\n  content: \"\\e294\";\n}\n.glyphicons.coffe_cup i:before {\n  content: \"\\e295\";\n}\n.glyphicons.pot i:before {\n  content: \"\\e296\";\n}\n.glyphicons.grater i:before {\n  content: \"\\e297\";\n}\n.glyphicons.kettle i:before {\n  content: \"\\e298\";\n}\n.glyphicons.hospital i:before {\n  content: \"\\e299\";\n}\n.glyphicons.hospital_h i:before {\n  content: \"\\e300\";\n}\n.glyphicons.microphone i:before {\n  content: \"\\e301\";\n}\n.glyphicons.webcam i:before {\n  content: \"\\e302\";\n}\n.glyphicons.temple_christianity_church i:before {\n  content: \"\\e303\";\n}\n.glyphicons.temple_islam i:before {\n  content: \"\\e304\";\n}\n.glyphicons.temple_hindu i:before {\n  content: \"\\e305\";\n}\n.glyphicons.temple_buddhist i:before {\n  content: \"\\e306\";\n}\n.glyphicons.bicycle i:before {\n  content: \"\\e307\";\n}\n.glyphicons.life_preserver i:before {\n  content: \"\\e308\";\n}\n.glyphicons.share_alt i:before {\n  content: \"\\e309\";\n}\n.glyphicons.comments i:before {\n  content: \"\\e310\";\n}\n.glyphicons.flower i:before {\n  content: \"\\2698\";\n}\n.glyphicons.baseball i:before {\n  content: \"\\e312\";\n}\n.glyphicons.rugby i:before {\n  content: \"\\e313\";\n}\n.glyphicons.ax i:before {\n  content: \"\\e314\";\n}\n.glyphicons.table_tennis i:before {\n  content: \"\\e315\";\n}\n.glyphicons.bowling i:before {\n  content: \"\\e316\";\n}\n.glyphicons.tree_conifer i:before {\n  content: \"\\e317\";\n}\n.glyphicons.tree_deciduous i:before {\n  content: \"\\e318\";\n}\n.glyphicons.more_items i:before {\n  content: \"\\e319\";\n}\n.glyphicons.sort i:before {\n  content: \"\\e320\";\n}\n.glyphicons.filter i:before {\n  content: \"\\e321\";\n}\n.glyphicons.gamepad i:before {\n  content: \"\\e322\";\n}\n.glyphicons.playing_dices i:before {\n  content: \"\\e323\";\n}\n.glyphicons.calculator i:before {\n  content: \"\\e324\";\n}\n.glyphicons.tie i:before {\n  content: \"\\e325\";\n}\n.glyphicons.wallet i:before {\n  content: \"\\e326\";\n}\n.glyphicons.piano i:before {\n  content: \"\\e327\";\n}\n.glyphicons.sampler i:before {\n  content: \"\\e328\";\n}\n.glyphicons.podium i:before {\n  content: \"\\e329\";\n}\n.glyphicons.soccer_ball i:before {\n  content: \"\\e330\";\n}\n.glyphicons.blog i:before {\n  content: \"\\e331\";\n}\n.glyphicons.dashboard i:before {\n  content: \"\\e332\";\n}\n.glyphicons.certificate i:before {\n  content: \"\\e333\";\n}\n.glyphicons.bell i:before {\n  content: \"\\e334\";\n}\n.glyphicons.candle i:before {\n  content: \"\\e335\";\n}\n.glyphicons.pushpin i:before {\n  content: \"\\e336\";\n}\n.glyphicons.iphone_shake i:before {\n  content: \"\\e337\";\n}\n.glyphicons.pin_flag i:before {\n  content: \"\\e338\";\n}\n.glyphicons.turtle i:before {\n  content: \"\\e339\";\n}\n.glyphicons.rabbit i:before {\n  content: \"\\e340\";\n}\n.glyphicons.globe i:before {\n  content: \"\\e341\";\n}\n.glyphicons.briefcase i:before {\n  content: \"\\e342\";\n}\n.glyphicons.hdd i:before {\n  content: \"\\e343\";\n}\n.glyphicons.thumbs_up i:before {\n  content: \"\\e344\";\n}\n.glyphicons.thumbs_down i:before {\n  content: \"\\e345\";\n}\n.glyphicons.hand_right i:before {\n  content: \"\\e346\";\n}\n.glyphicons.hand_left i:before {\n  content: \"\\e347\";\n}\n.glyphicons.hand_up i:before {\n  content: \"\\e348\";\n}\n.glyphicons.hand_down i:before {\n  content: \"\\e349\";\n}\n.glyphicons.fullscreen i:before {\n  content: \"\\e350\";\n}\n.glyphicons.shopping_bag i:before {\n  content: \"\\e351\";\n}\n.glyphicons.book_open i:before {\n  content: \"\\e352\";\n}\n.glyphicons.nameplate i:before {\n  content: \"\\e353\";\n}\n.glyphicons.nameplate_alt i:before {\n  content: \"\\e354\";\n}\n.glyphicons.vases i:before {\n  content: \"\\e355\";\n}\n.glyphicons.bullhorn i:before {\n  content: \"\\e356\";\n}\n.glyphicons.dumbbell i:before {\n  content: \"\\e357\";\n}\n.glyphicons.suitcase i:before {\n  content: \"\\e358\";\n}\n.glyphicons.file_import i:before {\n  content: \"\\e359\";\n}\n.glyphicons.file_export i:before {\n  content: \"\\e360\";\n}\n.glyphicons.bug i:before {\n  content: \"\\e361\";\n}\n.glyphicons.crown i:before {\n  content: \"\\e362\";\n}\n.glyphicons.smoking i:before {\n  content: \"\\e363\";\n}\n.glyphicons.cloud-upload i:before {\n  content: \"\\e364\";\n}\n.glyphicons.cloud-download i:before {\n  content: \"\\e365\";\n}\n.glyphicons.restart i:before {\n  content: \"\\e366\";\n}\n.glyphicons.security_camera i:before {\n  content: \"\\e367\";\n}\n.glyphicons.expand i:before {\n  content: \"\\e368\";\n}\n.glyphicons.collapse i:before {\n  content: \"\\e369\";\n}\n.glyphicons.collapse_top i:before {\n  content: \"\\e370\";\n}\n.glyphicons.globe_af i:before {\n  content: \"\\e371\";\n}\n.glyphicons.global i:before {\n  content: \"\\e372\";\n}\n.glyphicons.spray i:before {\n  content: \"\\e373\";\n}\n.glyphicons.nails i:before {\n  content: \"\\e374\";\n}\n.glyphicons.claw_hammer i:before {\n  content: \"\\e375\";\n}\n.glyphicons.classic_hammer i:before {\n  content: \"\\e376\";\n}\n.glyphicons.hand_saw i:before {\n  content: \"\\e377\";\n}\n.glyphicons.riflescope i:before {\n  content: \"\\e378\";\n}\n.glyphicons.electrical_socket_eu i:before {\n  content: \"\\e379\";\n}\n.glyphicons.electrical_socket_us i:before {\n  content: \"\\e380\";\n}\n.glyphicons.pinterest i:before {\n  content: \"\\e381\";\n}\n.glyphicons.dropbox i:before {\n  content: \"\\e382\";\n}\n.glyphicons.google_plus i:before {\n  content: \"\\e383\";\n}\n.glyphicons.jolicloud i:before {\n  content: \"\\e384\";\n}\n.glyphicons.yahoo i:before {\n  content: \"\\e385\";\n}\n.glyphicons.blogger i:before {\n  content: \"\\e386\";\n}\n.glyphicons.picasa i:before {\n  content: \"\\e387\";\n}\n.glyphicons.amazon i:before {\n  content: \"\\e388\";\n}\n.glyphicons.tumblr i:before {\n  content: \"\\e389\";\n}\n.glyphicons.wordpress i:before {\n  content: \"\\e390\";\n}\n.glyphicons.instapaper i:before {\n  content: \"\\e391\";\n}\n.glyphicons.evernote i:before {\n  content: \"\\e392\";\n}\n.glyphicons.xing i:before {\n  content: \"\\e393\";\n}\n.glyphicons.zootool i:before {\n  content: \"\\e394\";\n}\n.glyphicons.dribbble i:before {\n  content: \"\\e395\";\n}\n.glyphicons.deviantart i:before {\n  content: \"\\e396\";\n}\n.glyphicons.read_it_later i:before {\n  content: \"\\e397\";\n}\n.glyphicons.linked_in i:before {\n  content: \"\\e398\";\n}\n.glyphicons.forrst i:before {\n  content: \"\\e399\";\n}\n.glyphicons.pinboard i:before {\n  content: \"\\e400\";\n}\n.glyphicons.behance i:before {\n  content: \"\\e401\";\n}\n.glyphicons.github i:before {\n  content: \"\\e402\";\n}\n.glyphicons.youtube i:before {\n  content: \"\\e403\";\n}\n.glyphicons.skitch i:before {\n  content: \"\\e404\";\n}\n.glyphicons.foursquare i:before {\n  content: \"\\e405\";\n}\n.glyphicons.quora i:before {\n  content: \"\\e406\";\n}\n.glyphicons.badoo i:before {\n  content: \"\\e407\";\n}\n.glyphicons.spotify i:before {\n  content: \"\\e408\";\n}\n.glyphicons.stumbleupon i:before {\n  content: \"\\e409\";\n}\n.glyphicons.readability i:before {\n  content: \"\\e410\";\n}\n.glyphicons.facebook i:before {\n  content: \"\\e411\";\n}\n.glyphicons.twitter i:before {\n  content: \"\\e412\";\n}\n.glyphicons.instagram i:before {\n  content: \"\\e413\";\n}\n.glyphicons.posterous_spaces i:before {\n  content: \"\\e414\";\n}\n.glyphicons.vimeo i:before {\n  content: \"\\e415\";\n}\n.glyphicons.flickr i:before {\n  content: \"\\e416\";\n}\n.glyphicons.last_fm i:before {\n  content: \"\\e417\";\n}\n.glyphicons.rss i:before {\n  content: \"\\e418\";\n}\n.glyphicons.skype i:before {\n  content: \"\\e419\";\n}\n.glyphicons.e-mail i:before {\n  content: \"\\e420\";\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/accordions.less",
    "content": "//\n// Accordions\n// --------------------------------------------------\n\n// Accordion\n// ------------------------- //\n\n.accordion {\n\tmargin: 0 0 10px;\n\tposition: relative;\n\t.accordion-group { \n\t\tborder-color: @contentBorder; .rounded();\n\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t.rounded(5px,5px,5px,5px); \n\t}\n\t.accordion-inner { font-size: 13px; background: @widgetBg; .rounded(0,0,5px,5px); border-color: @contentBorder; }\n\t.accordion-heading .accordion-toggle {\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tcolor: @bodyText;\n\t\ttext-decoration: none;\n\t\tfont-weight: 600;\n\t\t.rounded(5px,5px,0,0);\n\t\theight: 29px;\n\t\tpadding: 0 10px;\n\t\tline-height: 29px;\n\t}\n\t\n\t&.accordion-2 {\n\t\tborder: 1px solid @contentBorder;\n\t\t.accordion-heading .accordion-toggle {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\tbackground: @widgetBg;\n\t\t\theight: 38px;\n\t\t\tline-height: 38px;\n\t\t\t.rounded();\n\t\t\t&.glyphicons {\n\t\t\t\tpadding: 0 10px;\n\t\t\t\ti {\n\t\t\t\t\twidth: 30px;\n\t\t\t\t\tline-height: 38px;\n\t\t\t\t\theight: 38px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\t\tcolor: #cccccc;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\twidth: 30px;\n\t\t\t\t\t\tline-height: 38px;\n\t\t\t\t\t\theight: 38px;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.accordion-body.in {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t}\n\t\t.accordion-group {\n\t\t\tborder: none;\n\t\t\tmargin: 0;\n\t\t\t&:last-child {\n\t\t\t\t.accordion-body.in { border-top: 1px solid @contentBorder; }\n\t\t\t}\n\t\t}\n\t\t.accordion-inner { \n\t\t\tborder: none;\n\t\t\t.rounded();\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/alerts.less",
    "content": "//\n// Alerts\n// --------------------------------------------------\n\n// Alert\n// ------------------------- //\n\n.alert { \n\tmargin: 0 0 @spacing;\n\tcolor: #fff;\n\th4 { margin: 0 0 5px; color: #fff; }\n\tborder-color: @warningColor;\n\tbackground: @warningColor;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t\n\t&.alert-error {\n\t\tbackground: @dangerColor;\n\t\tcolor: #fff;\n\t\tborder-color: @dangerColor;\n\t\t.close { color: #fff; }\n\t\th4 { color: #fff; }\n\t}\n\t&.alert-primary {\n\t\tbackground: @primaryColor;\n\t\tcolor: #fff;\n\t\tborder-color: @primaryColor;\n\t\t.close { color: #fff; }\n\t\th4 { color: #fff; }\n\t}\n\t&.alert-info {\n\t\tbackground: #dff3f8;\n\t\tcolor: #7399b9;\n\t\tborder-color: #93b9d8;\n\t\t.close { color: #7399b9; }\n\t}\n\t&.alert-success {\n\t\tborder-color: @successColor;\n\t\tbackground: @successColor;\n\t\tcolor: #fff;\n\t\t.close, h4 { color: #fff; }\n\t}\n\t.close {\n\t\topacity: 1;\n\t\tfilter: alpha(opacity=100);\n\t\tcolor: #fff;\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/buttons.less",
    "content": "//\n// Buttons\n// --------------------------------------------------\n\n// Button\n// -------------------------\n\n.btn { font-weight: 600; .rounded(2px,2px,2px,2px); }\n.btn-block { width: 100%; }\n.btn + .btn:not(.btn-block) { margin: 0 0 0 5px; }\n.input-append, .input-prepend { .btn + .btn { margin-left: -1px; } }\n.btn-group { \n\t.btn + .btn:not(.btn-block) { margin-left: -1px; } \n\t&.dropup { \n\t\t.btn:first-child { .rounded(); } \n\t} \n}\n\n// Default\n// -------------------------\n\n.btn-default {\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n\tcolor: rgba(0,0,0,.6);\n\ttext-shadow: 0 1px 0 #fff;\n\tfont-weight: 600;\n\t#gradient > .vertical(lighten(#e7e7e7, 5%),#e7e7e7);\n\tborder: 1px solid darken(#e7e7e7, 10%);\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled, .btn-default[disabled],\n.btn-default:hover, .btn-default:focus { background: #e8e8e8; }\n.btn-default:active, .btn-default.active { background: #e8e8e8; color: #fff; text-shadow: none; }\n.btn-default .caret { border-top-color: rgba(0,0,0,.5); }\n\n// Warning\n// -------------------------\n\n.btn-warning {\n\t#gradient > .vertical(lighten(@warningColor, 10%),@warningColor);\n\tborder: 1px solid darken(@warningColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled, .btn-warning[disabled],\n.btn-warning:hover, .btn-warning:focus { background: @warningColor; color: #fff; }\n.btn-warning:active, .btn-warning.active { background: @warningColor; color: #fff; }\n.btn-warning .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Info\n// -------------------------\n\n.btn-info {\n\tbackground: #93B9D8;\n\tborder: 1px solid #93B9D8;\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled, .btn-info[disabled],\n.btn-info:hover, .btn-info:focus { background: #93B9D8; color: #fff; }\n.btn-info:active, .btn-info.active { background: #93B9D8; color: #fff; }\n.btn-info .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Danger\n// -------------------------\n\n.btn-danger {\n\t#gradient > .vertical(lighten(@dangerColor, 10%), @dangerColor);\n\tborder: 1px solid darken(@dangerColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled, .btn-danger[disabled],\n.btn-danger:hover, .btn-danger:focus { background: @dangerColor; color: #fff; }\n.btn-danger:active, .btn-danger.active { background: @dangerColor; color: #fff; }\n.btn-danger .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Primary\n// -------------------------\n\n.btn-primary {\n\t#gradient > .vertical(lighten(@primaryColor, 10%), @primaryColor);\n\tborder: 1px solid darken(@primaryColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.4); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled, .btn-primary[disabled],\n.btn-primary:hover, .btn-primary:focus { background: @primaryColor; color: #fff; }\n.btn-primary:active, .btn-primary.active { background: @primaryColor; color: #fff; }\n.btn-primary .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; }\n\n// Inverse\n// -------------------------\n\n.btn-inverse {\n\t#gradient > .vertical(lighten(@inverseColor, 10%), @inverseColor);\n\tborder: 1px solid darken(@inverseColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: #919293; text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled, .btn-inverse[disabled],\n.btn-inverse:hover, .btn-inverse:focus { background: @inverseColor; color: #fff; }\n.btn-inverse:active, .btn-inverse.active { background: @inverseColor; color: #fff; }\n.btn-inverse .caret { border-top-color: #fff; border-bottom-color: #fff; }\n\n// Success\n// -------------------------\n\n.btn-success {\n\t#gradient > .vertical(lighten(@successColor, 10%), @successColor);\n\tborder: 1px solid darken(@successColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: #a2bc9b; text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled, .btn-success[disabled],\n.btn-success:hover, .btn-success:focus { background: @successColor; color: #fff; }\n.btn-success:active, .btn-success.active { background: @successColor; color: #fff; }\n.btn-success .caret { border-top-color: #fff; border-bottom-color: #fff; }\n\n// Button groups\n// -------------------------\n\n.btn-group {\n\t.btn-primary {\n\t\t&:not(.dropdown-toggle),\n\t\t&:not('[data-toggle*=\"\"]') { margin-right: 2px; }\n\t}\n}\n.btn-group-vertical.block { display: block; }\n.btn-group.btn-block {\n\tpadding: 0;\n\tposition: relative;\n\t.leadcontainer {\n\t\tleft: 0;\n\t    position: absolute;\n\t    right: 29px;\n\t    > .btn:first-child {\n\t    \t.rounded();\n\t\t\tmargin-left: 0;\n\t\t\t-webkit-border-bottom-left-radius: 4px;\n\t\t\tborder-bottom-left-radius: 4px;\n\t\t\t-webkit-border-top-left-radius: 4px;\n\t\t\tborder-top-left-radius: 4px;\n\t\t\t-moz-border-radius-bottomleft: 4px;\n\t\t\t-moz-border-radius-topleft: 4px;\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\t.dropdown-lead {\n\t    box-sizing: border-box;\n\t    width: 100%;\n\t}\n\t.dropdown-toggle {\n\t\twidth: 30px;\n\t    float: right;\n\t    box-sizing: border-box;\n\t    text-align: center;\n\t    padding-left: 0;\n\t    padding-right: 0;\n\t}\n}\n\n// Button icon stacked\n// -------------------------\n\n.btn-icon-stacked {\n\ttext-align: left;\n\tpadding: 5px 5px 5px 45px;\n\ti {\n\t\tdisplay: block;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tposition: absolute;\n\t\tleft: 10px;\n\t\ttop: 10px;\n\t\t&:before { left: auto; top: auto; position: relative; text-align: center; }\n\t}\n\tspan { \n\t\tdisplay: block; \n\t\tfont-size: 13px;\n\t\tline-height: normal;\n\t}\n}\n\n// Button other styles\n// -------------------------\n\n.btn-facebook {\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t#gradient > .vertical(lighten(#5d7cb6, 10%), #5d7cb6);\n\tborder: 1px solid #5d7cb6;\n\ti:before { color: #fff; }\n\t&:hover { background: lighten(#5d7cb6, 10%); color: #fff; }\n}\n.btn-google {\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t#gradient > .vertical(lighten(#9e3838, 10%), #9e3838);\n\tborder: 1px solid #9e3838;\n\ti:before { color: #fff; }\n\t&:hover { background: lighten(#9e3838, 10%); color: #fff; }\n}\n\n// Toggle view code Button\n// -------------------------\n\n.btn-toggle-code { position: absolute; bottom: 0; right: 0; z-index: 1000; .rounded(); &.outside { bottom: -24px; } }\n\n// ONLY Buttons on UI Demo Page (Table)\n// -------------------------\n\n#demo_buttons {\n\t.btn-block { max-width: 200px; margin: 0 auto; }\n\tthead th { width: 25%; }\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/calendar.less",
    "content": "//\n// Calendar\n// --------------------------------------------------\n\n// Calendar\n// ------------------------- //\n\n.fc-state-highlight { background: rgba(0,0,0,.2); }\n#external-events ul { list-style: none; margin: 0 0 20px; }\n#external-events li {\n\tmargin: 0 0 5px;\n\tpadding: 2px 5px;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0, .5);\n\tfont-size: .85em;\n\tcursor: pointer;\n\t.rounded(3px,3px,3px,3px);\n\t.bevelEmboss();\n}\n#external-events li.glyphicons { \n\tpadding: 2px 5px 2px 30px;\n\tdisplay: block;\n\ti:before { font-size: 14px; color: #fff; top: 0; left: 0; background: rgba(0,0,0,.3); height: 24px; width: 24px; line-height: 24px; text-align: center; .rounded(3px, 0, 0, 3px); border-right: 1px solid rgba(255,255,255,.4); }\n}\n.fc-header-title h2 { font-size: 16pt; line-height: 25px; }\n.fc-event-skin { border-color: @primaryColor; background-color: @primaryColor; text-shadow: 0 1px 0 rgba(0,0,0, .5); .bevelEmboss(); }\n.fc-event-time, .fc-event-title { padding: 0 5px; }\n#calendar .btn-group .btn-primary {\n\tmargin-right: 2px;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/choose.less",
    "content": "// Choose Preview\n// -------------------------\n\n#choose-preview {\n    padding: 50px 0;\n    h2 {\n    \tspan.text-primary { font-size: 26pt; font-weight: bold; top: auto; }\n    \tmargin-left: 0;\n    }\n    .control-group { margin: 0 0 5px; }\n    select { color: #000; }\n    .heading-buttons { margin-bottom: 10px; }\n   \t.box {\n   \t\tpadding: 10px;\n   \t\t.options { display: none; }\n   \t\t.actions a { \n   \t\t\tdisplay: none;\n   \t\t\t&.btn-active { display: inline-block; }\n   \t\t}\n   \t\th3 { text-transform: uppercase; margin: 0 0 12px; }\n   \t\t&.active {\n   \t\t\tbackground: @widgetBg;\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tpadding: @spacing;\n   \t\t\t.options { display: block; }\n   \t\t\th3 { color: #000; text-shadow: 0 1px 0 #fff; }\n   \t\t} \n   \t}\n   \t&.style-dark {\n   \t\t.well {\n   \t\t\tbackground: @widgetBg;\n   \t\t}\n   \t\t.box {\n   \t\t\t&.active {\n   \t\t\t\tbackground: @contentBg1;\n   \t\t\t\tborder-color: @contentBorder2;\n   \t\t\t\th3 {\n   \t\t\t\t\ttext-shadow: none;\n   \t\t\t\t\tcolor: #fff;\n   \t\t\t\t}\n   \t\t\t\thr { border-top-color: @contentBorder2; }\n   \t\t\t}\n   \t\t}\n   \t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/documentation.less",
    "content": "//\n// Documentation\n// --------------------------------------------------\n\n// Icons\n// ------------------------- //\n\n#docs_icons {\n\ttext-align: center;\n\tpadding: 0 20px;\n\t.glyphicons {\n\t\tdisplay: inline-block;\n\t\t*display: inline;\n\t\t*zoom: 1;\n\t\twidth: 125px;\n\t\tfont-size: 12px;\n\t\tline-height: 48px;\n\t\toverflow: hidden;\n\t\tcolor: @bodyText;\n\t}\n\t.glyphicons i:before {\n\t\tline-height: 55px !important;\n\t\tcolor: @primaryColor;\n\t}\n}\n\n// Documentation\n// ------------------------- //\n\n.documentation {\n\tul {\n\t\tul { margin-bottom: 10px; }\n\t}\n\t.span3 .menu.affix { position: fixed; top: 20px; width: 220px; }\n\t\n\t.show-grid {\n\t\tmargin-top: 10px;\n\t\tmargin-bottom: 20px;\n\t\t[class*=\"span\"] {\n\t\t\tbackground-color: lighten(#232628, 20%);\n\t\t\ttext-align: center;\n\t\t\t.rounded(3px,3px,3px,3px);\n\t\t\tmin-height: 40px;\n\t\t\tline-height: 40px;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.show-grid {\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\t[class*=\"span\"] {\n\t\t\t\tbackground-color: lighten(#232628, 40%);\n\t\t\t}\n\t\t}\t\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/form-wizards.less",
    "content": "//\n// Form Wizards\n// --------------------------------------------------\n\n// Wizards\n// ------------------------- //\n\n.wizard {\n\t.wizard-head {\n\t\tbackground: #fff;\n\t\tborder: 1px solid #e5e5e5;\n\t\tborder-bottom: none;\n\t}\n}\n\n.bwizard-steps .label {\n\tposition: relative;\n\ttop: -1px;\n\tmargin: 0 5px 0 0;\n\tpadding: 1px 5px 2px;\n}\n\n.bwizard-steps .active .label {\n\tbackground-color: #333;\n}\n\n.bwizard-steps {\n\tdisplay: block;\n\tmargin: 0;\n\tpadding: 0;\n\theight: 40px;\n\tlist-style: none;\n\tli {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tposition: relative;\n\t\tmargin-right: 5px;\n\t\tline-height: 40px;\n\t\theight: 40px;\n\t\tbackground: #fafafa;\n\t\ta {\n\t\t\tdisplay: block;\n\t\t\theight: 40px;\n\t\t\tline-height: 40px;\n\t\t\tpadding: 0 20px 0 40px;\n\t\t}\n\t\t&.active {\n\t\t\tcolor: #fff;\n\t\t\tbackground: @primaryColor;\n\t\t\t&:after { border-left-color: @primaryColor; }\n\t\t\ta { color: #fff; cursor: default; }\n\t\t}\n\t\t&:after {\n\t\t\tposition: absolute;\n\t\t\tright: -20px;\n\t\t\ttop: 0;\n\t\t\theight: 0;\n\t\t\twidth: 0;\n\t\t\tborder-bottom: 20px inset transparent;\n\t\t\tborder-left: 20px solid #fafafa;\n\t\t\tborder-top: 20px inset transparent;\n\t\t\tcontent: \"\";\n\t\t\tz-index: 2;\n\t\t}\n\t\t&:before {\n\t\t\tposition: absolute;\n\t\t\tleft: 0;\n\t\t\ttop: 0;\n\t\t\theight: 0;\n\t\t\twidth: 0;\n\t\t\tborder-bottom: 20px inset transparent;\n\t\t\tborder-left: 20px solid #fff;\n\t\t\tborder-top: 20px inset transparent;\n\t\t\tcontent: \"\";\n\t\t}\n\t\t&:last-child:after {\n\t\t\t\n\t\t}\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\t&:first-child:before {\n\t\t\tborder: none;\n\t\t}\n\t\t&:first-child a { padding-left: 20px; }\n\t}\n}\n\n.bwizard-steps a:hover {\n\ttext-decoration: none;\n}\n\n.bwizard-steps.clickable li:not (.active ) {\n\tcursor: pointer;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ) {\n\tbackground: #ccc;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ):after {\n\tborder-left-color: #ccc;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ) a {\n\tcolor: #08c;\n}\n\n// Responsive\n// ------------------------- //\n\n@media ( max-width : 480px) { /* badges only on small screens */\n\t.bwizard-steps li:after,.bwizard-steps li:before {\n\t\tborder: none\n\t}\n\t.bwizard-steps li,.bwizard-steps li.active,.bwizard-steps li:first-child,.bwizard-steps li:last-child\n\t\t{\n\t\tmargin-right: 0;\n\t\tpadding: 0;\n\t\tbackground-color: transparent\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/forms.less",
    "content": "//\n// Forms\n// --------------------------------------------------\n\n// Inline\n// -------------------------\n\n.form-inline.small {\n\tinput,select { margin: 0 5px 0 0; .rounded(); padding: 1px 5px; border-color: #d8d9da; color: #a7a7a7; }\n\tselect { padding: 1px 0; height: 23px; &:last-child { margin-right: 0; } }\n\tlabel { float: left; margin: 0 5px 0 0; display: block; }\n\t.input-append \n\t{\n\t\t&.block { display: block; }\n\t\tinput { margin: 0; width: 85%; }\n\t\t.add-on {\n\t\t\tpadding: 1px 3px;\n\t\t\tmargin: 0 0 0 -1px;\n\t\t\t.rounded();\n\t\t\tbackground: #fff;\n\t\t\tcolor: #d8d9da;\n\t\t\tborder-color: #d8d9da;\n\t\t\ti:before { top: 4px; left: 4px; font-size: 14px; color: #d0d1d1; }\n\t\t}\n\t}\n}\n\n// General\n// -------------------------\n\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n\tborder-color: #c1c1c1;\n  \t-webkit-box-shadow: none;\n  \t-moz-box-shadow: none;\n  \tbox-shadow: none;\n}\nselect, 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 { font-size: 13px; }\n.uniformjs .radio .disabled input[type=\"radio\"], \n.uniformjs .checkbox .disabled input[type=\"checkbox\"] { margin-left: 0; }\n.uniformjs .radio, .uniformjs .checkbox { padding-left: 0; }\n.uniformjs .radio { height: auto; }\n.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 3px; }\n.uniformjs label.radio { margin-bottom: 0; }\n.uniformjs label.radio.inline { margin: 0; }\n.checkbox.inline { padding-bottom: 1px; }\n.uniformjs .radio span { margin: 2px 0 0; }\n.uniformjs .checkbox span { margin: -2px 0 0; }\nlabel, input, button, select, textarea { font-size: 13px; }\n.input-full input { width: 83%; height: 17px; }\nlegend {\n\tline-height: normal;\n\theight: auto;\n\tfont-size: 18px;\n\tmargin: 0 0 6px;\n\ttext-align: left;\n\tpadding: 0;\n\tborder: 0;\n\tcolor: #797979;\n}\n.btn-group > .btn, .btn-group > .dropdown-menu { font-size: 13px; }\n.strong { font-weight: bold; }\ninput[type=text],\ninput[type=password],\nselect, textarea { \n\tborder-color: #D8D9DA;\n\tcolor: #A7A7A7;\n}\n\n.control-label.center { text-align: center; }\n.form-actions { background: none; border: none; margin: 0; }\n.form-horizontal {\n\t.form-actions { margin-top: 0; padding: 0; }\n\t.controls { margin-left: 145px; }\n\t.control-label { width: 125px; }\n\t.control-group:last-child { margin: 0; }\n}\n.input-prepend .add-on,\n.input-append .add-on {\n\tbackground: #fff;\n\ti:before { color: #D0D1D1; }\n\ticon { margin-top: 0; }\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n\tbackground: #fff;\n\ti:before { font-size: 14px; left: 7px; top: 7px; color: #D0D1D1; }\n}\n.input-append .add-on.glyphicons i:before { left: 6px; }\n\n// Multiselect\n// -------------------------\n\n.ms-container .ms-selectable li.ms-hover, .ms-container .ms-selection li.ms-hover {\n\tbackground: @primaryColor;\n}\n.ms-container {\n\t.custom-header {\n\t\theight: 30px; \n\t\tline-height: 30px; \n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tpadding: 0 @spacing;\n\t\tfont-weight: 600;\n\t\tborder: 1px solid @contentBorder;\n\t\t&:not(.custom-footer) { border-bottom: none; }\n\t\t&.custom-footer { border-top: none; } \n\t}\n} \n\n// Select2 Templating\n// -------------------------\n\n.select2-container img.flag,\n.select2-drop img.flag {\n\theight: 10px;\n\twidth: 15px;\n\tpadding-right: 10px;\n}\n.select2-container .select2-choice {\n\tborder-color: @contentBorder;\n\tbackground: #fff;\n\t.rounded();\n}\n.select2-container-multi .select2-choices {\n\tborder-color: @contentBorder;\n\tbackground: #fff;\t\n}\n.select2-container .select2-choice div {\n\tborder-color: @containerBorder;\n\tbackground: #fff;\n\t.rounded();\n}\n.select2-drop {\n\tborder-color: @containerBorder;\n\t#reset .boxShadow();\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n\tmargin: 5px 0 3px 5px;\n\tborder-color: @containerBorder;\n}\n\n// DateTimePicker\n// -------------------------\n\n.datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active:hover:hover, .datetimepicker table tr td span.active.disabled:hover, .datetimepicker table tr td span.active.disabled:hover:hover, .datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active:hover.disabled, .datetimepicker table tr td span.active.disabled.disabled, .datetimepicker table tr td span.active.disabled:hover.disabled, .datetimepicker table tr td span.active[disabled], .datetimepicker table tr td span.active:hover[disabled], .datetimepicker table tr td span.active.disabled[disabled], .datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover, .datetimepicker table tr td.active:hover:hover, .datetimepicker table tr td.active.disabled:hover, .datetimepicker table tr td.active.disabled:hover:hover, .datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active:hover.disabled, .datetimepicker table tr td.active.disabled.disabled, .datetimepicker table tr td.active.disabled:hover.disabled, .datetimepicker table tr td.active[disabled], .datetimepicker table tr td.active:hover[disabled], .datetimepicker table tr td.active.disabled[disabled], .datetimepicker table tr td.active.disabled:hover[disabled] {\n\tbackground: @primaryColor;\n}\n\n// Bootstrap TimePicker\n.bootstrap-timepicker-widget table td { font-size: 13px; }\n.bootstrap-timepicker {\n\t> [class*=\"icon-\"] { vertical-align: text-top; margin: 0 0 0 -22.5px; pointer-events: none; position: relative; cursor: pointer; }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/front.less",
    "content": "//\n// Front customizations\n// --------------------------------------------------\n\n// Top menu\n// ------------------------- //\n\nhtml.front {\n\t.menu-hidden {\n\t\t.navbar.main { height: 99px; }\n\t}\n\t.navbar.main {\n\t\theight: auto;\n\t\tleft: 0 !important;\n\t\t.secondary {\n\t\t\theight: 49px;\n\t\t\tline-height: 49px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tbackground-color: @navbarSecondaryBg;\n\t\t\tborder-bottom: 1px solid @topnavBorder1;\n\t\t\t.appbrand {\n\t\t\t\tfont-weight: 700;\n\t\t\t\tfont-size: 25pt;\n\t\t\t\tcolor: #fff;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0 8px;\n\t\t\t}\n\t\t}\n\t\tul.topnav:first-of-type {\n\t\t\tborder-left: none;\n\t\t\tmargin-left: -8px;\n\t\t\t> li:first-of-type {\n\t\t\t\tborder-left: none;\n\t\t\t}\n\t\t}\n\t\tli.search { \n\t\t\t#reset .boxShadow();  \n\t\t}\n\t\tli.glyphs + .glyphs {\n\t\t\tpadding-left: 0;\n\t\t}\n\t\tli.glyphs {\n\t\t\tborder: none; \n\t\t\t#reset .boxShadow(); \n\t\t\tmargin-left: 0;\n\t\t\tul li {\n\t\t\t\t.glyphicons {\n\t\t\t\t\tcolor: @navbarGlypsText;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\twidth: 32px;\n\t\t\t\t\t\tvertical-align: top;\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t&.active, &:hover {\n\t\t\t\t\t.glyphicons { color: #fff; }\n\t\t\t\t}\n\t\t\t\t&.single { \n\t\t\t\t\t&, &:last-child { .rounded(5px,5px,5px,5px); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t#content {\n\t\tmargin: 0;\n\t}\n\t#footer {\n\t\tbackground: #1f2123;\n\t\tcolor: #919192;\n\t\ta:not(.btn) { color: @primaryColor; }\n\t\t.copy { \n\t\t\tbackground: #000; \n\t\t\tcolor: #2a2a2a;\n\t\t\ta { color: #2a2a2a; text-decoration: none; }\n\t\t\ttext-align: left;\n\t\t\t.appbrand {\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 10px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-size: 15px;\n\t\t\t\tfont-weight: 700;\n\t\t\t} \n\t\t}\n\t\t.box-generic {\n\t\t\t#reset .boxShadow();\n\t\t\tbackground: #191a1c;\n\t\t\tborder: none;\n\t\t}\n\t\th4 {\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-size: 15px;\n\t\t\tfont-weight: 700;\n\t\t\ttext-shadow: none;\n\t\t\tcolor: #fff;\n\t\t\tmargin: 0 0 8px;\n\t\t}\n\t\tul {\n\t\t\tlist-style: none;\n\t\t\tmargin: 0 0 @spacing;\n\t\t\tpadding: 0;\n\t\t\tli {\n\t\t\t\tdisplay: block;\n\t\t\t\tbackground: #191a1c;\n\t\t\t\tmargin: 0 0 1px;\n\t\t\t\tline-height: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\ta {\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\theight: 30px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tpadding: 0 10px;\n\t\t\t\t}\n\t\t\t\t&:first-of-type { .rounded(5px,5px,0,0); }\n\t\t\t\t&:last-of-type { margin: 0; .rounded(0,0,5px,5px); }\n\t\t\t}\n\t\t\t&.icons {\n\t\t\t\tli {\n\t\t\t\t\tpadding: 0 10px 0 35px;\n\t\t\t\t\ti:before { top: 7px; left: 10px; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t#contact_gmap { height: 400px; }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/gallery.less",
    "content": "//\n// Gallery\n// --------------------------------------------------\n\n// Gallery\n// ------------------------- //\n\n.gallery {\n\tul { \n\t\tmargin: 0; \n\t\tpadding: 0; \n\t\tlist-style: none;\n\t\tli {\n\t\t\t.thumb {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 5px;\n\t\t\t\tmargin-bottom: 10px;\n\t\t\t\tz-index: 1;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t&.span2:nth-child(6n+7) { margin-left: 0; }\n\t\t\t&.span3:nth-child(4n+5) { margin-left: 0; }\n\t\t\t&.span4:nth-child(3n+4) { margin-left: 0; }\n\t\t}\n\t}\n\t&.gallery-masonry {\n\t\tli { &[class*=\"span\"] { margin-left: 0; } }\n\t}\n\t&.gallery-2 {\n\t\tli {\n\t\t\t.thumb { padding: 0; border-color: #4c4c4c; }\n\t\t}\n\t}\n}\n.thumb { \n\tdisplay: block; \n\tpadding: 3px; \n\tborder: 1px solid @contentBorder;\n\t&, img { .rounded(5px,5px,5px,5px); }\n}\n\n// Thumbnails\n// ------------------------- //\n\n.thumbnails {\n\tmargin: 0;\n\t> li {\n\t\tmargin-bottom: @spacing;\n\t\t.thumbnail {\n\t\t\tborder-color: @contentBorder;\n\t\t\tbackground: @widgetBg;\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t.caption { color: @bodyText; }\n\t\t}\n\t\ta.thumbnail:hover, a.thumbnail:focus {\n\t\t\tborder-color: @primaryColor;\n\t\t\t-webkit-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\t-moz-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\tbox-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\ttext-decoration: none;\n\t\t}\n\t}\n}\n.thumbnail { border-color: @contentBorder; }\na.thumbnail { .caption { display: block; } }\na.thumbnail:hover, a.thumbnail:focus {\n\tborder-color: @primaryColor;\n\t-webkit-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t-moz-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\tbox-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\ttext-decoration: none;\n}\n\n// Carousels\n// ------------------------- //\n\n.carousel {\n\tmargin-bottom: @spacing;\n\t.rounded(5px, 5px, 5px, 5px);\n\t.carousel-control {\n\t\tfont-size: 45px;\n\t\topacity: 1;\n\t\tfilter: alpha(opacity=100);\n\t\tbackground: @widgetBgGray;\n\t\tcolor: #000;\n\t\tborder-color: #000;\n\t\ttext-shadow: @bodyTextShadow;\n\t\t&.right { text-align: center; }\n\t}\n\t.carousel-inner {\n\t\t.rounded(5px, 5px, 5px, 5px);\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\tborder: 1px solid @contentBorder;\n\t}\n\t.item {\n\t\t.rounded(5px, 5px, 5px, 5px);\n\t\timg { min-width: 100%; }\n\t}\n\t.carousel-caption {\n\t\tbackground: fade(@widgetBgGray, 95%);\n\t\ttext-shadow: @bodyTextShadow;\n\t\tp { color: @bodyText; }\n\t\th4 { font-size: 12pt; color: #000; font-weight: 600; }\n\t\ta { text-decoration: underline; color: #000; }\n\t}\n\t&.carousel-1 {\n\t\theight: 223px;\n\t\tmargin-bottom: 33px;\n\t\tbackground: @widgetBgGray;\n\t\t.item {\n\t\t\theight: 223px;\n\t\t\toverflow: hidden;\n\t\t\timg { min-height: 100%; .rounded(0, 5px, 5px, 0); }\n\t\t}\n\t\t.carousel-indicators {\n\t\t\ttop: auto;\n\t\t\tbottom: -23px;\n\t\t\tright: 0;\n\t\t\tli {\n\t\t\t\tbackground: lighten(@primaryColor, 20%);\n\t\t\t\t&.active { background: @primaryColor; }\n\t\t\t}\n\t\t}\n\t\t.carousel-caption {\n\t\t\theight: 223px-30px;\n\t\t\tbackground: @widgetBgGray;\n\t\t\ttop: 0;\n\t\t}\n\t}\n}\n\n// Jcrop\n// ---------------------------\n\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n\n  .rounded(5px,5px,5px,5px);\n\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n\n.jcrop-holder {\n\tmargin: 0 auto;\n\t.rounded(5px,5px,5px,5px);\n\timg { .rounded(5px,5px,5px,5px); }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/guidedtour.less",
    "content": "//\n// Guided Tour\n// --------------------------------------------------\n\n// Guided Tour Button\n// -------------------------\n\n#guided-tour {\n\tposition: fixed;\n\tz-index: 10000;\n\ttop: 100px; \n\tright: -100%;\n\twidth: 40px;\n\theight: 20px;\n\tpadding: 10px;\n\tbackground: @primaryColor;\n\tfont-size: 14pt;\n\tcolor: #fff;\n\ttext-align: center;\n\tbox-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\t-moz-box-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\t-webkit-box-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.2);\n\tcursor: pointer;\n\t.transition(width .5s ease);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\t.hide { \n\t\tfloat: left; \n\t\theight: 0; \n\t\tdisplay: inline-block !important; \n\t\topacity: 0; \n\t\t.transition(opacity .6s ease);\n\t}\n\t#close-tour { \n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tpadding: 10px;\n\t\tcolor: rgba(0,0,0,.8);\n\t\ttext-shadow: 0 1px 0 #fff;\n\t\tbackground: rgba(255,255,255,.6);\n\t\t&:hover { background: rgba(255,255,255,.9); }\n\t}\n\t&:hover {\n\t\twidth: 100px;\n\t\tpadding: 10px 40px 10px 10px;\n\t\t.hide { padding: 0 5px 0 0; opacity: 1; height: auto; }\n\t\t#close-tour { display: block; }\n\t}\n}\n\n// Guided Tour\n// -------------------------\n\n#tlyPageGuideWrapper #tlyPageGuideMessages { \n\tmargin: 0; width: 100%; height: auto; padding: 20px; z-index: 9000;\n\tdiv { margin: 0 90px 0 120px; }\n\th4 { color: #fff; }\n\tp:last-child { margin: 0; }\n}\n#tlyPageGuideWrapper #tlyPageGuide li { background: rgba(0,0,0,.4); }\n#tlyPageGuideWrapper #tlyPageGuide li:hover { background: rgba(0,0,0,.9); }\n#tlyPageGuideWrapper #tlyPageGuide li {\n\t&.tlypageguide_right:after,\n\t&.tlypageguide_left:after,\n\t&.tlypageguide_top:after { border-top-color: rgba(0,0,0,.3); }\n\t&.tlypageguide_bottom:after { border-bottom-color: rgba(0,0,0,.3); }\n\t&.tlypageguide_right:hover,\n\t&.tlypageguide_left:hover,\n\t&.tlypageguide_top:hover { \n\t\tmargin: 0;\n\t\t&:after { border-top-color: rgba(0,0,0,.9); } \n\t}\n\t&.tlypageguide_bottom:hover { \n\t\tmargin: 0;\n\t\t&:after { border-bottom-color: rgba(0,0,0,.9); } \n\t}\n}\n.tlypageguide_shadow:after { \n\tbackground: fade(@primaryColor, 20%);\n\tbox-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n\t-moz-box-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n\t-webkit-box-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active { background: @primaryColor; }\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n\tborder-top-color: @primaryColor;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n\tborder-bottom-color: @primaryColor;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back, #tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n\ttop: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span { top: 20px; background: @primaryColor; }\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close { background: @primaryColor; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/jquery-ui.less",
    "content": "//\n// jQueryUI\n// --------------------------------------------------\n\n// General\n// ------------------------- //\n\n.ui-widget-header {\n\tborder-color: @primaryColor;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default\n{\n\tbackground: #fafafa;\n\tborder-color: #dddddd;\n\tcolor: #797979;\n}\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active\n{\n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.ui-widget-content { border: none; }\n\n// Datepicker\n// ------------------------- //\n\n.ui-datepicker {\n\tpadding: 10px;\n\tbackground: #fff;\n\tfont-size: 12px;\n\t.ui-widget-header {\n\t\tbackground: none;\n\t\tcolor: #4d4d4d;\n\t\tborder: none;\n\t}\n\t.ui-datepicker-calendar {\n\t\tborder-collapse: collapse;\n\t\tthead { \n\t\t\tbackground: #cecece;\n\t\t\tth { padding: .5em .3em; } \n\t\t}\n\t\ttbody {\n\t\t\ttd { \n\t\t\t\tpadding: 0;\n\t\t\t\tspan { text-align: center; }\n\t\t\t\ta {\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\t&.ui-state-default { \n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tcolor: #4d4d4d;\n\t\t\t\t\t\tfont-weight: 600; \n\t\t\t\t\t}\n\t\t\t\t\t&.ui-state-active {\n\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t}\n}\n\n.widget-body-gray {\n\t.ui-datepicker {\n\t\tbackground: none;\n\t\tpadding: 0;\n\t\tfont-size: 12px;\n\t\t.ui-widget-header {\n\t\t\tbackground: none;\n\t\t\tcolor: #4d4d4d;\n\t\t\tborder: none;\n\t\t}\n\t\t.ui-datepicker-calendar {\n\t\t\tborder-collapse: collapse;\n\t\t\tthead { \n\t\t\t\tbackground: #cecece;\n\t\t\t\tth { padding: .5em .3em; } \n\t\t\t}\n\t\t\ttbody {\n\t\t\t\ttd { \n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tspan { text-align: center; }\n\t\t\t\t\ta {\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t&.ui-state-default { \n\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t\tcolor: #4d4d4d;\n\t\t\t\t\t\t\tfont-weight: 600; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.ui-state-active {\n\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ui-datepicker-inline { width: 100%; padding: 0; }\n.datepicker-inline { margin: 0 0 5px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/labels.less",
    "content": "//\n// Labels\n// --------------------------------------------------\n\n// Label\n// -------------------------\n\n.label {\n\t&.large {\n\t\theight: 29px;\n\t\tpadding: 0 10px;\n\t\tline-height: 29px;\n\t\tbackground: #e5e5e5;\n\t\tcolor: #64625f;\n\t\ttext-shadow: 0 1px 0 #fff;\n\t}\n\t&.label-primary { background: @primaryColor; }\n\t&.label-warning { background: @warningColor; }\n\t&.label-important { background: @dangerColor; }\n\t&.label-success { background: @successColor; }\n\t&.label-block { display: block; }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/landings.less",
    "content": "//\n// Landing pages\n// --------------------------------------------------\n\n#landing_1 {\n\t.mosaic-line {\n\t\theight: 58px;\n\t\tline-height: 58px;\n\t\tborder-bottom: 1px solid #e5e5e5;\n\t\tbackground: #f9f9f9;\n\t\t&.mosaic-line-2 {\n\t\t\tline-height: 100px;\n\t\t\theight: 100px;\n\t\t\th2 { \n\t\t\t\tline-height: 100px;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tspan { color: #ccc; } \n\t\t\t}\n\t\t}\n\t}\n\t.banner {\n\t\tbackground: #000;\n\t\theight: 321px;\n\t\t.banner-wrapper {\n\t\t\theight: 321px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\t&.banner-1 {\n\t\t\t\tmargin: 0;\n\t\t\t\tbackground: #000;\n\t\t\t\th3 {\n\t\t\t\t\theight: 46px;\n\t\t\t\t\tline-height: 46px;\n\t\t\t\t\ttop: 65px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\tfont-size: 22pt;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t}\n\t\t\t\tp {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 126px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tbackground: #1f1e1e;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tline-height: 25px;\n\t\t\t\t\twidth: 370px;\n\t\t\t\t\ttext-align: right;\n\t\t\t\t\tpadding: 10px 15px;\n\t\t\t\t\ta { text-decoration: underline; color: @primaryColor; }\n\t\t\t\t}\n\t\t\t\t.btn { \n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 232px;\n\t\t\t\t\tright: 27px; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n#landing_2 {\n\t.mosaic-line {\n\t\theight: 58px;\n\t\tline-height: 58px;\n\t\tborder-bottom: 1px solid #e5e5e5;\n\t\tbackground: #f9f9f9;\n\t\t&.mosaic-line-2 {\n\t\t\tline-height: 100px;\n\t\t\theight: 100px;\n\t\t\th2 { \n\t\t\t\tline-height: 100px;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tspan { color: #ccc; } \n\t\t\t}\n\t\t}\n\t}\n\t.banner {\n\t\tbackground: #1f2123;\n\t\theight: 356px;\n\t\t.banner-wrapper {\n\t\t\theight: 356px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\t&.banner-1 {\n\t\t\t\tmargin: 0;\n\t\t\t\th3 {\n\t\t\t\t\theight: 46px;\n\t\t\t\t\tline-height: 46px;\n\t\t\t\t\ttop: 55px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-size: 27pt;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t\tp {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 115px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tbackground: #1f1e1e;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tline-height: 25px;\n\t\t\t\t\twidth: 380px;\n\t\t\t\t\ttext-align: right;\n\t\t\t\t\tpadding: 10px 15px;\n\t\t\t\t\ta { text-decoration: underline; color: @primaryColor; }\n\t\t\t\t}\n\t\t\t\t.btn { \n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbottom: 40px;\n\t\t\t\t\t&.btn-primary { right: 230px; }\n\t\t\t\t\t&.btn-danger { right: 27px; bottom: 37px; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Other\n// -------------------------\n\n.container-960 { width: 960px; margin: 0 auto; }\n.separator-line { width: 100%; height: 1px; background: #e5e5e5; margin-bottom: 10px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/layout.less",
    "content": "//\n// Layout\n// --------------------------------------------------\n\n// General\n// -------------------------\n\n.innerLR { padding: 0 @spacing; position: relative; }\n.innerTB { padding: @spacing 0; position: relative; }\n.innerAll { padding: @spacing; position: relative; }\n.innerL { padding-left: @spacing; position: relative; }\n.innerR { padding-right: @spacing; position: relative; }\n.innerT { padding-top: @spacing; position: relative; }\n.innerB { padding-bottom: @spacing; position: relative; }\n\n// Other Utilities\n// -------------------------\n\n.center { text-align: center !important; }\n.margin-bottom-none { margin-bottom: 0 !important; }\n.margin-none { margin: 0 !important; }\n.padding-none { padding: 0 !important; }\n.border-none { border: none !important; }\n.box-shadow-none { #reset .boxShadow(); }\n.padding-none-TB { padding-bottom: 0 !important; padding-top: 0 !important; }\n.relativeWrap { position: relative; }\n.text-primary { color: @primaryColor; }\n.text-uppercase { text-transform: uppercase; }\n.text-faded { color: #d7d7d7 !important; }\n.text-large { font-size: 35px; line-height: 40px; }\n.text-xlarge { font-size: 50px; line-height: 50px; }\n.text-xxlarge { font-size: 70px; line-height: 70px; }\n.text-underline { text-decoration: underline; }\n.text-right { text-align: right !important; }\n.containerBg { background: @containerBg; }\n.whiteBg { background: #fff; }\n\n// Grid\n// -------------------------\n\n.row-merge {\n\tposition: relative;\n\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\tmargin-left: 0;\n\t\t&:after { position: absolute; top: 0; bottom: 0; width: 1px; background: @contentBorder; content: \"\"; }\n\t}\n\t> [class*=\"span\"] ~ [class*=\"span3\"] { width: 25.26315789473684%; }\n\t> [class*=\"span\"] ~ [class*=\"span4\"] { width: 33.68421052631579%; }\n\t> [class*=\"span\"] ~ [class*=\"span5\"] { width: 42.10526315789473%; }\n\t> [class*=\"span\"] ~ [class*=\"span6\"] { width: 50.74626865671642%; }\n\t> [class*=\"span\"] ~ [class*=\"span8\"] { width: 67.66169154228855%; }\n\t> [class*=\"span\"] ~ [class*=\"span9\"] { width: 75.78947368421052%; }\n\t&.border-top, & ~ & { border-top: 1px solid @contentBorder; }\n\t&.border-bottom { border-bottom: 1px solid @contentBorder; }\n}\n\n// Main Wrapper\n// -------------------------\n\n#wrapper {\n\toverflow: hidden; \n\toverflow-y: auto;\n\tfloat: left;\n\twidth: 100%;\n}\n\n// Content\n// -------------------------\n\nbody > .container-fluid { \n\tpadding: 0;\n\tbackground: @containerBg;\n\t&.fixed { \n\t\tmargin: 30px auto 30px;\n\t\tborder-left: 1px solid @containerBorder;\n\t\tborder-right: 1px solid @containerBorder;\n\t\twidth: 94%;\n\t}\n\t&.documentation {\n\t\tbackground: #fff;\n\t}\n}\n\nbody > .container-fluid.fixed { \n\t.rounded(5px, 5px, 5px, 5px);\n\t#wrapper { .rounded(5px, 5px, 0, 0); }\n\t#content { .rounded(0, 5px, 0, 0); }\n\t#footer { .rounded(0,0,5px,5px); }\n\t.navbar.main, .navbar.main .wrapper { .rounded(5px, 5px, 0, 0); }\n}\n\n#content { \n\tposition: relative;\n\toverflow: hidden;\n\tmargin: 0;\n\tmin-width: 320px;\n\tmin-height: 500px;\n\tpadding: 0 0 @spacing;\n\tbackground: @containerBg;\n\t> .menubar { border-left: none; border-right: none; }\n\t> p { padding: 0 @spacing 5px; }\n\t> h1, > h2, > h3, > h4, > h5, > h6 { margin: @spacing+3 @spacing @spacing; }\n\t> .filter-bar {\n\t\tborder-right: none;\n\t\tborder-left: none;\n\t}\n\t.heading-buttons { margin-top: @spacing; }\n\t.heading-arrow {\n\t\ttext-transform: uppercase;\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\tmargin: 0 0 @spacing;\n\t\tpadding: 0 @spacing;\n\t\tfont-size: 11pt;\n\t\theight: 35px;\n\t\tline-height: 30px;\n\t\tposition: relative;\n\t\t&:after {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-bottom: 8px solid @contentBorder;\n\t\t\tborder-right: 8px solid transparent;\n\t\t\tborder-left: 8px solid transparent;\n\t\t\tposition: absolute;\n\t\t\tbottom: 0;\n\t\t\tleft: 15px;\n\t\t}\n\t\t&.glyphicons { padding: 0 10px 0 40px; i:before { font-size: 17px; left: 15px; } }\n\t\t&.margin-bottom-none { margin-bottom: 0; }\n\t}\n\t\n\t> .widget { \n\t\tborder-left: 0; \n\t\tborder-right: 0;\n\t\t.widget-head,\n\t\t.widget-body {\n\t\t\tborder-left: 0; \n\t\t\tborder-right: 0;\n\t\t}\n\t\t&:last-child { margin: 0; }\n\t}\n\t\n\t> .table { \n\t\tborder-left: none; border-right: none;\n\t\ttr td:first-child { border-left: none; }\n\t}\n}\n\n// Footer\n// -------------------------\n \n#footer {\n\tfont-weight: 600;\n\tposition: relative;\n\toverflow: hidden;\n\tz-index: 10000;\n\ta:not(.btn) { color: @bodyText; }\n\tborder-bottom: 1px solid @contentBorder;\n\tborder-top: 1px solid @contentBorder;\n\t.copy {\n\t\tbackground: @widgetBgGray;\n\t\ttext-align: center;\n\t\tpadding: 5px 10px;\n\t\tfont-size: 12px;\n\t\ta { color: @bodyText; text-decoration: underline; }\n\t\theight: 20px;\n\t}\n}\n\nhtml.sidebar {\n\t#content { margin: 0 0 0 65px; }\n\t.menu-right { \n\t\t#content { margin: 0 65px 0 0; } \n\t}\n}\n\n// Sticky Sidebar & Footer always bottom\n// -------------------------\n@media (min-width: 768px)\n{\n\thtml.sticky-sidebar.sidebar:not(.fixed) {\n\t\tbody { overflow: hidden; }\n\t\t&, body, \n\t\tbody > .container-fluid,\n\t\t#wrapper {\n\t\t\tmin-height: 100%;\n\t\t\theight: 100%; \n\t\t}\n\t\t#wrapper { margin-bottom: -32px; }\n\t\t#menu { \n\t\t\tposition: fixed;\n\t\t\tbottom: 0;\n\t\t}\n\t\t#content { padding-bottom: 47px; }\n\t}\n}\n\n// Sticky Top Menu\n// -------------------------\n\n@media (min-width: 768px)\n{\n\thtml.sticky-top:not(.fixed) {\n\t\t#content { padding-top: 50px; }\n\t\t.navbar.main {\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tz-index: 10000;\n\t\t}\n\t\t&.sidebar {\n\t\t\t.navbar.main { left: 65px; }\n\t\t\t.menu-right {\n\t\t\t\t.navbar.main { left: 0; right: 65px; }\n\t\t\t}\n\t\t}\n\t\t.menu-hidden {\n\t\t\t.navbar.main { left: 0 !important; right: 0 !important; }\n\t\t}\n\t\t&.front {\n\t\t\t#content { padding-top: 100px; margin: 0 !important; }\n\t\t}\n\t}\n}\n\nhtml.fixed {\n\t&, body {\n\t\tmin-height: auto; \n\t\theight: auto;\n\t\toverflow: visible;\n\t}\n}\nbody > .container-fluid.fixed {\n\tmin-height: auto;\n\theight: auto;\n\t#wrapper {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tmin-height: auto;\n\t\theight: auto;\n\t\tmargin: 0;\n\t}\n\t#menu {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\tmin-height: 100%;\n\t\tbottom: auto;\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/login.less",
    "content": "//\n// Login section specific styles\n// --------------------------------------------------\n\n// Login\n// -------------------------\n\nbody.login {\n\tbackground: @containerBg;\n\t#login {\n\t\ta:not(.btn) { color: @bodyText; text-decoration: underline; }\n\t    padding: 40px 0 0;\n\t    h1 {\n\t    \tfont-size: 20pt;\n\t    \ttext-align: center;\n\t    \tdisplay: block;\n\t    \tpadding: 0 0 20px;\n\t    \ttext-shadow: @bodyTextShadow;\n\t    \ti {\n\t    \t\t&:before {\n\t    \t\t\tposition: relative;\n\t    \t\t\tleft: auto;\n\t    \t\t\ttop: auto;\n\t    \t\t\tcolor: @bodyText;\n\t    \t\t}\n\t    \t}\n\t    }\n\t    .wrapper {\n\t    \tmax-width: 354px;\n\t    \tmin-width: 300px;\n\t    \tmargin: 0 auto;\n\t    \tposition: relative;\n\t    \t&.signup {\n\t    \t\tmax-width: 600px;\n\t    \t}\n\t    }\n\t    .widget {\n\t    \t.widget-head {\n\t    \t\t.btn { margin: -4px 0 0 5px; }\n\t    \t\tdiv { font-size: 12px; }\n\t    \t}\n\t    \t.widget-body {\n\t    \t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\tbackground: #fafafa;\n\t    \t}\n\t    \t.widget-footer {\n\t    \t\theight: 40px;\n\t    \t\tline-height: 40px;\n\t    \t\tmargin: @spacing 0 0;\n\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\tborder: 1px solid @contentBorder;\n\t    \t\tp { font-size: 12px; color: @bodyText; font-weight: 600; margin: 0; width: auto; float: none; padding: 0 10px 0 35px; display: block; height: 40px; line-height: 40px; i:before { top: 7px; left: 7px; } }\n\t    \t}\n\t    }\n\t    label { font-size: 13px; color: #7c7c7c; font-weight: 600; }\n        .checkbox { margin-top: 5px; }\n        .password { float: right; font-size: 12px; font-weight: 400; }\n        input[type=\"text\"],\n\t    input[type=\"password\"] {\n\t     \tfont-size: 13px;\n\t        height: auto;\n\t        margin-bottom: 10px;\n\t        padding: 5px 9px;\n\t        .bevelEmboss(0,0);\n\t        .rounded();\n\t        background: #fff;\n\t\t}\n\t\t::-webkit-input-placeholder { /* WebKit browsers */ color: #ccc; }\n\t\t:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #ccc; }\n\t\t::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #ccc; }\n\t\t:-ms-input-placeholder { /* Internet Explorer 10+ */ color: #ccc; }\n\t\tform { margin: 0; }\n        p { \n\t        margin: 5px 0;\n\t        &:first-child { margin: 0 0 10px; }\n\t        &:last-child { margin: 10px 0 0; } \n\t    }\n\t   \t.form-signin {\n\t   \t\tposition: relative;\n\t        max-width: 600px;\n\t        margin: 0 auto 20px;\n\t        background-color: #fff;\n\t        border: 1px solid #e5e5e5;\n\t        -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        .inner { padding: 20px; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/lt-ie9.less",
    "content": "//\n// lt-ie9\n// --------------------------------------------------\n\n// lt-ie9\n// ------------------------- //\n\n.lt-ie9 {\n\t.widget .widget-body.list ul li {\n\t\tborder-bottom: 1px solid #efefef;\n\t}\n\t.navbar.main .btn-navbar { float: left; }\n\t.navbar.main .topnav { position: absolute; top: 0; right: 0; height: 42px; }\n\t.navbar.main .topnav .dropdown > a .caret { margin-top: 0; top: 8px; left: 5px; }\n\t.heading-buttons h1.glyphicons, .heading-buttons h2.glyphicons, .heading-buttons h3.glyphicons, .heading-buttons h4.glyphicons, .heading-buttons h5.glyphicons, .heading-buttons h6.glyphicons { float: left; }\n\t#guided-tour {\n\t\t.hide { display: none !important; }\n\t}\n\t.filter-bar div div.input-append .add-on {\n\t\twidth: 24px;\n\t\tpadding-right: 0;\n\t\tpadding-left: 0;\n\t\ti {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t\tdisplay: block;\n\t\t\tvertical-align: middle;\n\t\t\tline-height: 24px;\n\t\t\t&:before {\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tline-height: 24px;\n\t\t\t\ttop: auto;\n\t\t\t}\n\t\t}\n\t}\n\t.navbar.main .topnav .dropdown > a .caret {\n\t\tvertical-align: middle;\n\t\tmargin-top: 0;\n\t\ttop: 0;\n\t}\n\t#footer {\n\t\tbackground: #222;\n\t\t.copy { background: #111; }\n\t}\n\t.ribbon-wrapper { display: none; }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/menus.less",
    "content": "//\n// Menus\n// --------------------------------------------------\n\n// General\n// -------------------------\n\n.ui-resizable-helper { \n\t&.menu { border: 1px dotted gray; border-left: none; background: rgba(0,0,0,.3); }\n}\n.ui-resizable-handle { \n\twidth: 3px; \n\tborder-style: solid; \n\tborder-width: 0; \n\tborder-color: rgba(0,0,0,.4); \n}\n.dropdown-menu { z-index: 100000; }\n\n// Left menu\n// -------------------------\n\n#menu {\n\t.appbrand {\n\t\tfont-weight: 700;\n\t\tdisplay: block;\n\t\ttext-decoration: none;\n\t\tline-height: 10px;\n\t\tpadding: 10px;\n\t\ttext-align: center;\n\t\tcolor: @menuAppbrand;\n\t\tborder-bottom: 1px solid @menuBorder1;\n\t}\n\t.profile {\n\t\tdisplay: block;\n\t\tpadding: 10px 0;\n\t\tborder-bottom: 1px solid @menuBorder1;\n\t\tborder-top: 1px solid @menuBorder2;\n\t\ta {\n\t\t\tborder: 1px solid @menuBorder1;\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 36px;\n\t\t\theight: 36px;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\timg { .rounded(5px,5px,5px,5px); }\n\t\t\t&:hover { border-color: darken(@menuBorder1, 10%); }\n\t\t}\n\t}\n\twidth: 65px;\n\tfloat: left;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\toverflow: hidden;\n\theight: 100%;\n\tmin-height: 100%;\n\tbackground: @menuBg;\n\tfont-size: 11px;\n\t.slim-scroll > ul, > ul {\n\t\tlist-style: none;\n\t\tfloat: left;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tborder-top: 1px solid @menuBorder2;\n\t\t> li { \n\t\t\tdisplay: block;\n\t\t\tborder-bottom: 1px solid @menuBorder1;\n\t\t\tbox-shadow: 0 1px 0 0 @menuBorder2;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\ta {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: auto;\n\t\t\t\tpadding: 10px;\n\t\t\t\tmargin: 0;\n\t\t\t\tline-height: 10px;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tcolor: @menuText;\n\t\t\t\ttext-align: center;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\tpadding: 10px 5px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 0 5px;\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\tcolor: @menuText;\n\t\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t\t&.glyphicons {\n\t\t\t\t> a { \n\t\t\t\t\tpadding: 10px 5px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 0 5px;\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\tcolor: @menuText;\n\t\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\tbox-shadow: 0 1px 0 0 @menuBorder2;\n\t\t\t\tborder-top: 1px solid @menuBorder2; \n\t\t\t\tposition: relative;\n\t\t\t\toverflow: visible;\n\t\t\t\t> a { \n\t\t\t\t\tbackground: @menuActiveBg;\n\t\t\t\t\tcolor: @menuActiveText;\n\t\t\t\t}\n\t\t\t\t&.glyphicons a i:before { color: @menuActiveText; }\n\t\t\t\t&:first-child { border-top: none; }\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t> a { color: @menuActiveText; }\n\t\t\t\t&.glyphicons a i:before { color: @menuActiveText; }\n\t\t\t}\n\t\t}\n\t}\n\t&.ui-state-disabled {\n\t\topacity: 1;\n\t\tfilter: Alpha(Opacity=100);\n\t}\n}\n\n.menu-left .ui-resizable-e {\n\tbackground: rgba(255,255,255,.2);\n\tright: 0;\n\tborder-left-width: 1px;\n\tborder-right-width: 1px;\n\t&:hover { background: rgba(255,255,255,.4); }\n}\n\n// Right menu\n// -------------------------\n\nbody .menu-right {\n\t.ui-resizable-w {\n\t\tbackground: rgba(255,255,255,.2);\n\t\tleft: 0;\n\t\tborder-left-width: 1px;\n\t\tborder-right-width: 1px;\n\t\t&:hover { background: rgba(255,255,255,.4); }\n\t}\n\t#menu { \n\t\tleft: auto; \n\t\tright: 0;\n\t\tborder-right: none;\n\t\tborder-left: 1px solid #d8d8d8;\n\t}\n\t&.fixed {\n\t\t#content { \n\t\t\t.rounded(5px,0,0,0); \n\t\t}\n\t\t.navbar.main, .navbar.main .wrapper {\n\t\t\t.rounded(5px,0,0,0);\n\t\t}\n\t}\n}\n\n// Hidden menu\n// -------------------------\n\n.menu-hidden {\n\t#menu { display: none; }\n\t#content { margin: 0 !important; }\n\t.navbar.main .btn-navbar { left: 0; border-left: none; }\n\t.navbar.main .topnav {\n\t\t&.tn1 { left: 37px; }\n\t}\n\t&.login, &.documentation {\n\t\t.navbar.main .appbrand { \n\t\t\tdisplay: inline-block;\n\t\t\tborder: none;\n\t\t\tspan { border: none; } \n\t\t}\n\t}\n}\n\n// Top navbar\n// -------------------------\n\n.navbar.main { \n\theight: 49px;\n\tbackground-color: @navbarBg;\n\tborder-bottom: 1px solid @topnavBorder1; \n\tmargin: 0;\n\t.btn-navbar {\n\t\theight: 49px;\n\t\tline-height: 49px;\n\t\tpadding: 0 10px; \n\t\tmargin: 0; \n\t\tfloat: left; \n\t\tdisplay: block; \n\t\tborder: none;\n\t\tbackground: @navbarBg;\n\t\t.rounded();\n\t\t.icon-bar { \n\t\t\tbackground: @navbarText;\n\t\t\tbox-shadow: 0 1px 0 @topnavBorder1; \n\t\t}\n\t\t&:hover { background: darken(@navbarBg, 2%); }\n\t\t&.ui-state-disabled {\n\t\t\topacity: 1;\n\t\t\tfilter: Alpha(Opacity=100);\n\t\t}\n\t}\n\t.topnav {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tborder-left: 1px solid @topnavBorder1;\n\t\tborder-right: 1px solid @topnavBorder2;\n\t\t&.pull-left + .topnav.pull-left { \n\t\t\tborder-left: none; \n\t\t\t> li:first-child { border-left: none; } \n\t\t}\n\t\t> li {\n\t\t\tposition: relative; \n\t\t\tfloat: left; \n\t\t\theight: 49px; \n\t\t\tline-height: 49px;\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 0 0 10px;\n\t\t\ta { cursor: pointer; }\n\t\t\t> a {\n\t\t\t\tdisplay: block;\n\t\t\t\tcolor: @navbarText;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 1px 11px 0 9px;\n\t\t\t\theight: 49px;\n\t\t\t\tline-height: 50px;\n\t\t\t\t> img { margin: 0 0 3px; }\n\t\t\t\t&.glyphicons { \n\t\t\t\t\tpadding: 0 11px 0 9px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tpadding: 0 10px 0 0;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\twidth: 17px;\n\t\t\t\t\t\tline-height: 49px; \n\t\t\t\t\t\theight: 49px;\n\t\t\t\t\t\t&:before { \n\t\t\t\t\t\t\tcolor: @navbarText; \n\t\t\t\t\t\t\tfont-size: 17px; \n\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\twidth: 17px; \n\t\t\t\t\t\t\ttext-align: center; \n\t\t\t\t\t\t\tline-height: 51px; \n\t\t\t\t\t\t\theight: 49px; \n\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\tright: auto; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.single-icon { \n\t\t\t\t\t\ti { padding: 0; } \n\t\t\t\t\t}\n\t\t\t\t\t&.logout {\n\t\t\t\t\t\ti { float: right; padding: 0; }\n\t\t\t\t\t\tspan { padding: 0 8px 0 0; }\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t/* &:hover { background: darken(@navbarBg, 2%); } */\n\t\t\t}\n\t\t\t&.active, &:hover, &.open {\n\t\t\t\tpadding: 8px 0 8px 8px;\n\t\t\t\t&:last-child { padding: 8px 9px 8px 8px; }\n\t\t\t\theight: 33px;\n\t\t\t\tline-height: 33px;\n\t\t\t\t> a {\n\t\t\t\t\t.caret { top: 2px; }\n\t\t\t\t\tbackground: @navbarActiveBg;\n\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\theight: 22px;\n\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\ti {\n\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\t&:before { line-height: 22px; height: 22px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.glyphs {\n\t\t\t\tpadding: 8px;\n\t\t\t\theight: 33px;\n\t\t\t\tborder-left: 1px solid @topnavBorder1;\n\t\t\t\tborder-right: 1px solid @topnavBorder2;\n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2, 1px 0 0 0 @topnavBorder1;\n\t\t\t\tul {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tlist-style: none;\n\t\t\t\t\tbackground: @navbarActiveBg;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\tli { \n\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t\tpadding: 0 1px 0 0;\n\t\t\t\t\t\t.glyphicons {\n\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t&:before { \n\t\t\t\t\t\t\t\t\tline-height: 22px; \n\t\t\t\t\t\t\t\t\theight: 22px; \n\t\t\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\t\t\ttop: auto; \n\t\t\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\t\t\ttext-align: center; \n\t\t\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\t\t\tcolor: @navbarGlypsText;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active, &:hover {\n\t\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\t\tbackground: @navbarGlypsActiveBg;\n\t\t\t\t\t\t\t.glyphicons i:before { color: @navbarText; }\n\t\t\t\t\t\t\tborder-right: 1px solid @topnavBorder3;\n\t\t\t\t\t\t\t&:first-child { .rounded(5px,0,0,5px); }\n\t\t\t\t\t\t\t&:last-child { \n\t\t\t\t\t\t\t\t.rounded(0,5px,5px,0); \n\t\t\t\t\t\t\t\tborder-right: none; \n\t\t\t\t\t\t\t\tborder-left: 1px solid @topnavBorder3;\n\t\t\t\t\t\t\t\t.glyphicons { padding: 5px 11px 5px 9px; } \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.search {\n\t\t\t\tpadding: 8px;\n\t\t\t\theight: 33px;\n\t\t\t\tborder-left: 1px solid @topnavBorder1;\n\t\t\t\tborder-right: 1px solid @topnavBorder2;\n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2, 1px 0 0 0 @topnavBorder1;\n\t\t\t\tform {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tbackground: @navbarSearchBg;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\tinput {\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tcolor: @navbarSearchText;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t\twidth: 100px;\n\t\t\t\t\t\tpadding: 0 0 0 10px;\n\t\t\t\t\t\t#reset .boxShadow();\n\t\t\t\t\t\t.placeholderColor(@navbarSearchText);\n\t\t\t\t\t}\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\ti:before { \n\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\tright: auto; \n\t\t\t\t\t\t\theight: 32px; \n\t\t\t\t\t\t\tline-height: 32px; \n\t\t\t\t\t\t\tpadding: 0 5px; \n\t\t\t\t\t\t\tfont-size: 17px; \n\t\t\t\t\t\t\tcolor: @topnavBorder1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tinput,button { vertical-align: top; }\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.search, &.glyphs { margin-left: 10px; }\n\t\t\t&.search + .glyphs { margin-left: 0; }\n\t\t\t&.glyphs + .search, &.glyphs + .tooltip + .search { margin-left: 0; }\n\t\t\t&:last-child { \n\t\t\t\tborder-right: 1px solid @topnavBorder1; \n\t\t\t\tpadding: 0 9px 0 10px; \n\t\t\t\t&.glyphs, &.search { \n\t\t\t\t\tpadding: 8px 9px;\n\t\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2; \n\t\t\t\t} \n\t\t\t}\n\t\t\t&:first-child { border-left: 1px solid @topnavBorder2; }\n\t\t\t&:last-child.open .dropdown-menu { right: 0; }\n\t\t\t&.open {\n\t\t\t\t.dropdown-menu {\n\t\t\t\t\tbackground: #363432;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tbox-shadow: none;\n\t\t\t\t\t-webkit-box-shadow: none;\n\t\t\t\t\t-moz-box-shadow: none;\n\t\t\t\t\tright: 0;\n\t\t\t\t\t&.pull-left { left: 0; }\n\t\t\t\t\twidth: 180px;\n\t\t\t\t\tli {\n\t\t\t\t\t\tborder-bottom: 1px solid #4a4947;\n\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t> a, > a:hover, > span { border-top: none; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\theight: 29px;\n\t\t\t\t\t\t\tline-height: 29px;\n\t\t\t\t\t\t\tpadding: 0 10px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tbackground: #363432;\n\t\t\t\t\t\t\tcolor: #c8c8c8;\n\t\t\t\t\t\t\t&.glyphicons { i:before { left: auto; right: 10px; top: 5px; font-size: 17px; color: #c4c4c4; } }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> a:hover {\n\t\t\t\t\t\t\tbackground: darken(#363432, 10%);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground: darken(#363432, 15%);\n\t\t\t\t\t\t\ta { background: darken(#363432, 15%); }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.btn { margin: 3px 0; }\n\t\t\t\t\t\t&.highlight {\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\tbackground: rgba(0,0,0,.1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.profile {\n\t\t\t\t\t\t\ta:hover { color: #fff; }\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tpadding: 5px 10px 10px;\n\t\t\t\t\t\t\t\t.heading {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 5px;\n\t\t\t\t\t\t\t\t\ta { text-transform: none; }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.img {\n\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\tbackground: #272729;\n\t\t\t\t\t\t\t\t\tmargin: 0 10px 0 0;\n\t\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\t\tcontent: \"\\e004\";\n\t\t\t\t\t\t\t\t\t\tcolor: #595959;\n\t\t\t\t\t\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\t\t\t\t\t\tfont-size: 24px;\n\t\t\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.clearfix { display: block; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.account {\n\t\t\t\t\t> .dropdown-menu {\n\t\t\t\t\t\twidth: 220px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-1, .dd-1 {\n\t\t\t\t\t> .dropdown-menu, .typeahead {\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\t\twidth: 0;\n\t\t\t\t\t\t\theight: 0;\n\t\t\t\t\t\t\tborder: 11px solid transparent;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tleft: 7px;\n\t\t\t\t\t\t\tborder-top-width: 0;\n\t\t\t\t\t\t\tborder-bottom-color: #999;\n\t\t\t\t\t\t\tborder-bottom-color: rgba(0, 0, 0, 0.25);\n\t\t\t\t\t\t\ttop: -11px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:after {\n\t\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\t\twidth: 0;\n\t\t\t\t\t\t\theight: 0;\n\t\t\t\t\t\t\tborder: 10px solid transparent;\n\t\t\t\t\t\t\ttop: -10px;\n\t\t\t\t\t\t\tborder-top-width: 0;\n\t\t\t\t\t\t\tborder-bottom-color: #ffffff;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tleft: 8px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.pull-right:before, &.pull-right:after { left: auto; right: 7px; margin: 0; }\n\t\t\t\t\t\t&.pull-right:after { right: 8px; }\n\t\t\t\t\t\tbox-shadow: 0 0 10px 1px rgba(0,0,0,0.2);\n\t\t\t\t\t}\n\t\t\t\t\t.typeahead { margin-top: 13px !important; }\n\t\t\t\t\t.dropdown-menu.pull-right { .rounded(); }\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\tborder: 1px solid #c8c8c8;\n\t\t\t\t\t\tmargin: 5px 0 0;\n\t\t\t\t\t\t.rounded();\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\tborder-color: #f3f3f3;\n\t\t\t\t\t\t\ta:not(.btn), span {\n\t\t\t\t\t\t\t\tbackground: #fff; \n\t\t\t\t\t\t\t\tcolor: #939494;\n\t\t\t\t\t\t\t\ti:before { color: #cccccc; font-size: 15px !important; top: 7px !important; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> li:not(.profile):hover, > li.active {\n\t\t\t\t\t\t\t> a {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\tcolor: #000;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tli.profile {\n\t\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\t\ta:hover { color: #7c7c7c; }\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tpadding: 5px 10px 10px;\n\t\t\t\t\t\t\t\t.heading {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 5px;\n\t\t\t\t\t\t\t\t\ta { text-transform: none; }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.img {\n\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\tbackground: #fdfdfd;\n\t\t\t\t\t\t\t\t\tmargin: 0 10px 0 0;\n\t\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\t\tcontent: \"\\e004\";\n\t\t\t\t\t\t\t\t\t\tcolor: #ccc;\n\t\t\t\t\t\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\t\t\t\t\t\tfont-size: 24px;\n\t\t\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.clearfix { display: block; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-2 {\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\ta:not(.btn) {\n\t\t\t\t\t\t\t\tpadding: 10px 10px 10px 50px;\n\t\t\t\t\t\t\t\ti:before {\n\t\t\t\t\t\t\t\t\tright: auto;\n\t\t\t\t\t\t\t\t\tleft: 10px;\n\t\t\t\t\t\t\t\t\ttop: 10px !important;\n\t\t\t\t\t\t\t\t\tfont-size: 30px !important;\n\t\t\t\t\t\t\t\t\tcolor: lighten(#ccc, 15%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> li:not(.profile):hover {\n\t\t\t\t\t\t\tborder-color: #f3f3f3;\n\t\t\t\t\t\t\t> a {\n\t\t\t\t\t\t\t\tbackground: fade(@primaryColor, 8%);\n\t\t\t\t\t\t\t\tcolor: #939494;\n\t\t\t\t\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\t\tbox-shadow: none;\n\t\t\t\t\t\t\t\t-moz-box-shadow: none;\n\t\t\t\t\t\t\t\t-webkit-box-shadow: none;\n\t\t\t\t\t\t\t\ti:before { color: @primaryColor; left: 10px; top: 10px; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-flags {\n\t\t\t\t\t.dropdown-menu img { margin: -3px 4px 0 0; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.dropdown > a { .caret { border-top-color: @navbarText; top: 16px; position: relative; } }\n\t\t.dropdown-menu { .rounded(); }\n\t}\n\t.topnav:last-of-type { border-right: none; li:last-child { border: none; } }\n}\n\n.submenu-show {\n    display: block;\n    margin-top: -35px !important;\n    position: absolute;\n    &.pull-left {\n    \tleft: auto !important;\n    \tright: 100% !important;\n    }\n    &.pull-right {\n    \tright: auto !important;\n    \tleft: 100% !important;\n    }\n}\n.submenu-hide {\n    display: none !important;\n    position: relative;\n    top: auto;\n    float: left;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/mixins.less",
    "content": "#reset {\n\t.boxShadow()\n\t{\n\t\tbox-shadow: none !important;\n\t\t-moz-box-shadow: none !important;\n\t\t-webkit-box-shadow: none !important;\n\t}\n\t.rounded ()\n\t{\n\t\t-webkit-border-radius: 0 !important;\n\t\t-moz-border-radius: 0 !important;\n\t\tborder-radius: 0 !important;\n\t}\n}\n\n.bevelEmboss(@ol:0.2, @od:0.2)\n{\n\tbox-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n\t-moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n\t-webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n}\n\n.placeholderColor (@color: #ffffff)\n{\n\t&::-webkit-input-placeholder { color: @color; }\n\t&:-moz-placeholder { color: @color; }\n\t&::-moz-placeholder { color: @color; }\n\t&:-ms-input-placeholder { color: @color; }\n}\n\n.rounded (@a:0, @b:0, @c:0, @d:0)\n{\n\t-webkit-border-radius: @a @b @c @d;\n\t-moz-border-radius: @a @b @c @d;\n\tborder-radius: @a @b @c @d;\n}\n\n// Transitions\n.transition(@transition) {\n  -webkit-transition: @transition;\n     -moz-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n\n#gradient {\n\t.horizontal(@startColor: #555, @endColor: #333) {\n\t\tbackground-color: @endColor;\n\t    background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+\n\t    background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t    background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t    background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10\n\t    background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10\n\t    background-repeat: repeat-x;\n\t    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n\t.vertical(@startColor: #555, @endColor: #333) {\n\t    background-color: mix(@startColor, @endColor, 60%);\n\t    background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n\t    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t    background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t    background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n\t    background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n\t\tbackground-repeat: repeat-x;\n\t\tfilter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/modals.less",
    "content": "//\n// Modals\n// --------------------------------------------------\n\n// Backdrop\n// -------------------------\n\n.modal-backdrop {\n\tz-index: 10000;\n\tbackground: #000000;\n\t&, &.fade.in {\n\t\topacity: 0.9;\n\t\tfilter: alpha(opacity=90);\n\t}\n}\n\n// Modal\n// -------------------------\n\n.modal {\n\tz-index: 10001;\n\tborder-color: @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\tbackground: @widgetBg;\n\t.modal-header {\n\t\tpadding: 0 10px;\n\t\theight: 29px;\n\t\tline-height: 29px;\n\t\tborder-color: @contentBorder;\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\t.rounded(5px,5px,0,0);\n\t\th3 { font-size: 14px; }\n\t\t.close {\n\t\t\tposition: absolute;\n\t\t\ttop: 5px;\n\t\t\tright: 10px;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\topacity: 1;\n\t\t\tfilter: alpha(opacity=100); \n\t\t\tcolor: @bodyText;\n\t\t\ttext-shadow: @bodyTextShadow;\n\t\t}\n\t}\n\t.modal-body { padding: 10px; p:last-child { margin: 0; } }\n\t.modal-footer {\n\t\t.rounded(0,0,5px,5px);\n\t\t.bevelEmboss(0,0);\n\t\tborder-color: @contentBorder2;\n\t\tpadding: 10px;\n\t\tbackground: @contentBg1 url(\"../images/pattern1.png\") repeat;\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/notifications.less",
    "content": "//\n// Notifications\n// --------------------------------------------------\n\n// Gritter\n// -------------------------\n\n.gritter-item-wrapper {\n\t.gritter-item { \n\t\tp { \n\t\t\tmargin: 0 0 10px; \n\t\t\t&:last-child { margin: 0; } \n\t\t}\n\t}\n\t&.gritter-primary {\n\t\t.gritter-top { display: none; }\n\t\t.gritter-bottom { display: none; }\n\t\t.gritter-item {\n\t\t\tbackground: fade(@primaryColor, 90%);\n\t\t\tpadding: 10px 10px 15px;\n\t\t\t.rounded(10px, 10px, 10px, 10px);\n\t\t\tcolor: #fff;\n\t\t\ta { color: #fff; text-decoration: underline; }\n\t\t}\n\t}\n}\n\n// Notyfy\n// -------------------------\n\n.notyfy_wrapper {\n\tborder: none;\n\t.rounded();\n\t&.notyfy_alert { background: #ffffff; }\n\t&.notyfy_error { background: #bd362f; color: #fff; }\n\t&.notyfy_success { background: #51a351; color: #fff; }\n\t&.notyfy_warning { background: #74614f; color: #fff; }\n\t&.notyfy_information { background: #57B7E2; color: #fff; }\n\t&.notyfy_confirm { background: #ffffff; }\n\t&.notyfy_primary {\n\t\tbackground: @primaryColor;\n\t\tborder: none;\n\t\t&, * { color: #fff; }\n\t}\n\t&.notyfy_default {\n\t\tbackground: #fafafa;\n\t}\n\t&.notyfy_dark {\n\t\tbackground: darken(#64625f, 10%);\n\t\t&, * { color: #fff; }\n\t}\n}\n\n// Notyfy TOP\n// -------------------------\n\n#notyfy_container_top {\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\t.notyfy_wrapper { .rounded(); }\n}\n\n// Notyfy CONTENT (eg. Dashboard)\n// -------------------------\n\n#content-notification {\n\t.notyfy_wrapper {\n\t\tborder: none;\n\t\tbox-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t-moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t-webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t.rounded();\n\t\tp { margin: 0; }\n\t\t.notyfy_message {\n\t\t\tpadding: 15px 10px;\n\t\t}\n\t\t&.notyfy_default {\n\t\t\tbackground: #fafafa url(\"../images/pattern1.png\") repeat;\n\t\t}\n\t\t&.notyfy_dark {\n\t\t\tbackground: darken(#64625f, 10%) url(\"../images/pattern1.png\") repeat;\n\t\t}\n\t\t&.notyfy_primary {\n\t\t\tbackground: @primaryColor url(\"../images/pattern1.png\") repeat;\n\t\t\tbox-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t\t-moz-box-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t\t-webkit-box-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/pagination.less",
    "content": "//\n// Pagination\n// --------------------------------------------------\n\n// Pagination\n// ------------------------- //\n\n.pager li > a, .pager li > span {\n\t.rounded(5px,5px,5px,5px);\n}\n.pagination ul {\n\tbackground: @widgetBg;\n}\n.pagination ul > li > a:hover {\n\tbox-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-webkit-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-moz-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n\tborder-color: lighten(@primaryColor,10%);\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: 600;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n} \n.pagination ul > .active > a, \n.pagination ul > .active > span {\n\tborder-color: @primaryColor;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: 600;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\tbox-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-webkit-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-moz-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n}\n.pagination ul > li > a, \n.pagination ul > li > span {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tcolor: #dddddd;\n\tfont-weight: 600;\n\ttext-shadow: none;\n\t.bevelEmboss(0,0);\n}\n.pagination ul > .disabled > a:hover {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tcolor: #dddddd;\n\ttext-shadow: none;\n\t.bevelEmboss(0,0);\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/popovers.less",
    "content": "//\n// Popovers\n// --------------------------------------------------\n\n// Popovers\n// -------------------------\n\n.popover {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.popover-title {\n\t\tfont-weight: 600;\n\t\tpadding: 0 10px;\n\t\theight: 29px;\n\t\tline-height: 29px;\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n}\n\n// Popovers Demo ONLY (UI page)\n// -------------------------\n\n#demo_popovers {\n\t.popover {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/progress-bars.less",
    "content": "//\n// Progress bars\n// --------------------------------------------------\n\n// Progress bar\n// ------------------------- //\n\n.progress {\n\tbackground: @widgetBg;\n\tmargin: 0 0 10px;\n\t.bevelEmboss(0,0);\n\t.bar { background: #e8e8e8; }\n\t.bar.right { text-align: right; text-indent: 10px; direction: rtl; }\n\t&.white { background: #fff; }\n\t&.progress-info .bar { background: #93b9d8; }\n\t&.progress-success .bar { background: @successColor; }\n\t&.progress-warning .bar { background: @warningColor; }\n\t&.progress-primary .bar { background: @primaryColor; }\n\t&.progress-danger .bar { background: @dangerColor; }\n\t&.progress-inverse .bar { background: @inverseColor; }\n\t&.progress-small {\n\t\theight: 15px;\n\t\t.bar { font-size: 8px; line-height: 15px; &.right { text-indent: 2px; } }\n\t}\n\t&.progress-mini { height: 5px; }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/responsive.less",
    "content": "//\n// Responsive\n// --------------------------------------------------\n\n// Responsive\n// ------------------------- //\n\n/* Desktop wide */\n@media (min-width: 1200px)\n{\n\t.navbar.main .topnav > li.search form input { width: 155px; }\n}\n\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px)\n{\n\tbody > .container-fluid.fixed {\n\t\twidth: 98%;\n\t\tmargin: 10px auto 10px;\n\t}\n\t.hidden-desktop-1 { display: none !important; }\n}\n\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px)\n{\n\t.navbar.main .topnav > li.search { margin-left: 10px !important; }\n}\n\n@media (max-width: 979px)\n{\n\tbody > .container-fluid.fixed { width: auto; border: none; margin: 0; }\n}\n@media (max-width: 767px)\n{\n\tbody { padding: 0; }\n\t\n\t.nav-tabs > li > a { font-size: 10pt; }\n\t.nav-tabs > li > a, .nav-pills > li > a { padding-left: 5px; padding-right: 5px; }\n\t\n\t.documentation .span3 .menu.affix { position: relative; top: 0; width: auto; }\n\t.phone-margin.bottom { margin: 0 0 10px; }\n\t.well { padding: 5px; }\n\t\n\t.widget {\n\t\t.widget-body { padding: 5px; }\n\t\t&.margin-bottom-none { margin-bottom: 10px; }\n\t\t&.widget-tabs {\n\t\t\t.widget-head {\n\t\t\t\theight: auto;\n\t\t\t\tpadding: 0;\n\t\t\t\tul {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: none;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tli { float: none; display: block; width: 100%; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.widget-tabs-icons-only .widget-head { height: auto; }\n\t}\n\t.widget-activity ul.list li > span.ellipsis { max-width: 60%; }\n\t.widget-activity ul.list li.double > span.ellipsis { max-width: 75%; }\n\t.widget-gallery .nav { display: none; }\n\t.widget-gallery.widget-gallery-slide .gallery { width: auto; }\n\t.widget-chat .media .pull-left, .widget-chat .media .pull-right { margin: 0; }\n\t.widget-chat .chat-controls { height: 60px; }\n\t.widget-chat { padding-bottom: 90px !important; }\n\t.widget-chat .media small.author {\n\t\tposition: relative;\n\t\ttop: auto;\n\t\tleft: auto;\n\t\tright: auto;\n\t\twidth: auto;\n\t}\n\t.widget-chat .media small.date { border: none; }\n\t.tabsbar {\n\t\t&, &.tabsbar-2 {\n\t\t\theight: auto;\n\t\t\tul { height: auto; }\n\t\t}\n\t}\n\t.layout-timeline ul.timeline {\n\t\tpadding: 0;\n\t}\n\t.layout-timeline ul.timeline > li .date {\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tdisplay: block;\n\t\ttop: auto;\n\t}\n\t.layout-timeline ul.timeline > li .type {\n\t\tposition: relative;\n\t\tleft: auto;\n\t\ttop: auto;\n\t\twidth: auto;\n\t\tmargin: 0 60px 10px 0;\n\t\t&:before, &:after { display: none; }\n\t\t.time { \n\t\t\ttop: 0;\n\t\t\tright: -40px; \n\t\t}\n\t}\n\t.layout-timeline ul.timeline > li.active .separator .type { margin-bottom: 0; }\n\t.layout-timeline ul.timeline > li .separator .type { \n\t\ttop: auto; \n\t}\n\t.widget-activity ul.list { margin: 0; }\n\t.widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n\t\theight: 35px;\n\t\tul li {\n\t\t\tfloat: left;\n\t\t\twidth: auto;\n\t\t}\n\t}\n\t\n\t.media {\n\t\ttext-align: center;\n\t\t.pull-left, .pull-right { border: none; padding-bottom: 0; margin: 0; }\n\t\timg.pull-left, img.pull-right { display: inline-block; }\n\t\tblockquote { padding: 0; text-align: center; &.pull-right p, &.pull-right small { text-align: center; } }\n\t}\n\t.menu-right {\n\t\t#menu { \n\t\t\tleft: 0; \n\t\t\tright: auto; \n\t\t}\n\t\t&.menu-hidden {\n\t\t\t#content { margin: 0; }\n\t\t}\n\t}\n\t.row-merge {\n\t\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\t\twidth: auto;\n\t\t\t&:after { display: none; }\n\t\t}\n\t\t&.border-top, & ~ & { border-top: 1px solid #e5e5e5; }\n\t}\n\tbody.login #login {\n\t\tpadding: 50px 5px;\n\t}\n\t#gritter-notice-wrapper { display: none !important; }\n\t.topnav .dropdown.submenu {\n\t\theight: auto;\n\t\t.submenu-show {\n\t\t\tposition: relative;\n\t\t\tmargin: 0 !important;\n\t\t\ttop: auto !important;\n\t\t\tleft: auto !important;\n\t\t\tright: auto !important;\n\t\t}\n\t}\n\t.navbar.main {\n\t\theight: auto;\n\t\t.topnav {\n\t\t\tborder-left: none;\n\t\t\tborder-right: none;\n\t\t\tfloat: none;\n\t\t\t> li {\n\t\t\t\tfloat: none;\n\t\t\t\tborder-top: 1px solid @topnavBorder1;\n\t\t\t\tborder-bottom: 1px solid @topnavBorder2;\n\t\t\t\t&.active, &:hover, &.open {\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t}\n\t\t\t\t&.search form {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tinput { width: 90%; }\n\t\t\t\t\tbutton { position: absolute; right: 0; top: 0; }\n\t\t\t\t}\n\t\t\t\t&:first-child { border-top: none; }\n\t\t\t\t.dropdown.submenu {\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\tfloat: none;\n\t\t\t\t\t\tdisplay: block !important;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tborder-top: 1px solid #f3f3f3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:first-of-type {\n\t\t\t\t> li:first-child { margin-left: 38px; }\n\t\t\t}\n\t\t}\n\t}\n\t.menu-hidden {\n\t\t.navbar.main {\n\t\t\theight: 50px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\t.container-960 { width: auto; }\n\t#landing_1 {\n\t\t[class*=\"span\"] { padding: 0 5px; }\n\t\t.banner-1 {\n\t\t\theight: auto;\n\t\t\t.item { \n\t\t\t\theight: auto;\n\t\t\t\timg {\n\t\t\t\t\tmin-height: 0;\n\t\t\t\t\theight: auto;\n\t\t\t\t} \n\t\t\t}\n\t\t\t.carousel-caption { height: auto; }\n\t\t}\n\t\t.banner {\n\t\t\theight: auto;\n\t\t\t.banner-wrapper {\n\t\t\t\theight: auto;\n\t\t\t\t&.banner-1 {\n\t\t\t\t\th3,p,.btn {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t\t.btn { display: block; .rounded(0,0,0,0); }\n\t\t\t\t\tp { margin: 0 0 5px; text-align: center; }\n\t\t\t\t\th3 { font-size: 12pt; line-height: 46px; text-align: center; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.social-large {\n\t\theight: auto;\n\t\ta { \n\t\t\tfloat: none; \n\t\t\tdisplay: block;\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid #e5e5e5;\n\t\t\t&:last-child { border: none; } \n\t\t}\n\t}\n\t#content .heading-mosaic { height: auto !important; padding-top: 10px; padding-bottom: 10px; line-height: normal !important; }\t\n}\n@media (max-width: 480px)\n{\n\th1, h2, h3 { line-height: 30px; font-size: 18pt; }\n\th3.glyphicons,\n\th2.glyphicons {\n\t\ti:before { font-size: 24px; top: 3px; left: 5px; }\n\t}\n\t.heading-buttons .buttons { margin-top: 10px; float: none; padding: 0 10px; .btn { margin: 0; float: none; } text-align: center; }\n\t.separator { padding: 5px 0; margin: 0; }\n\t.table-condensed th, .table-condensed td { padding: 4px 5px; }\n\tp.glyphicons {\n\t\tpadding: 5px 0 10px 55px;\n\t\ti:before { color: #D67170; font-size: 35pt; top: 0; }\n\t\t&.right { padding: 0 55px 0 0; }\n\t}\n}\n@media (max-width: 320px)\n{\n\t.nav-tabs > li,\n\t.nav-tabs > li > a,\n\t.nav-tabs > li > a:hover { \n\t\tdisplay: block;\n\t\tfloat: none; \n\t\tmargin: 0 0 -1px;\n\t\tborder-color: @primaryColor;\n\t}\n\t.nav-tabs > li:hover {\n\t\tborder-color: @primaryColor;\n\t}\n\t.nav-tabs > li,\n\t.nav-tabs > li > a {\n\t\tborder-color: #E0D5C6;\n\t\tbackground: #F5EADB;\n\t\t.rounded();\n\t}\n\t.nav-tabs > .active > a, .nav-tabs > .active > a:hover { \n\t\t\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/rtl.less",
    "content": "// RTL\n// -------------------------\n\nhtml.rtl {\n\t\n\t/* Buttons */\n\t.btn-group.btn-block .leadcontainer { left: 29px; right: 0; }\n\t.btn-group.btn-block .leadcontainer > .btn:first-child { .rounded(0,5px,5px,0); }\n\t.btn-group.btn-block .dropdown-toggle { float: left; }\n\t.btn-toggle-code { left: 0; right: auto; }\n\t\n\t/* Typography */\n\th3.glyphicons, h2.glyphicons { \n\t\tpadding: 0 45px 0 0;\n\t\ti:before { left: auto; right: 2px; }\n\t}\n\t\n\t/* Widgets */\n\t.widget .widget-head .heading { float: right; }\n\t.widget .widget-head .heading.glyphicons { padding: 0 35px 0 0; }\n\t.widget .widget-head .heading.glyphicons i:before { left: auto; right: 0; }\n\t.widget .widget-head { padding: 0 0 0 15px; }\n\t.widget .details.pull-right { float: left; }\n\t.breadcrumb li.pull-right { float: left; }\n\t[data-toggle=\"collapse-widget\"] .collapse-toggle { float: left; }\n\t.widget-activity ul.list li > span { float: right; }\n\t.widget-activity ul.list li.double .activity-icon { margin-left: 10px; margin-right: 0; }\n\t.widget-activity ul.list li:hover:after, .widget-activity ul.list li.highlight:after { right: auto; left: 15px; }\n\t.widget .widget-body.list ul li .count { float: left; }\n\t.widget .widget-body.list ul li { text-align: right; }\n\t.widget .widget-body.list ul li .badge { left: 8px; right: auto; }\n\t.media > .pull-left { float: right; margin-left: 10px; margin-right: 0; }\n\t.media > .pull-right { float: left; margin-right: 10px; margin-left: 0; }\n\t.widget-chat .media small.author { left: auto; right: 0; }\n\t.widget-chat .media.right small.author { left: 0; right: auto; }\n\t.breadcrumb li a.glyphicons { padding: 0 25px 0 0; }\n\t.breadcrumb li a.glyphicons i:before { left: auto; right: 3px; }\n\t\n\t/* Tabs */\n\t.widget.widget-tabs > .widget-head ul li { border-right: none; border-left: 1px solid @contentBorder; }\n\t.widget.widget-tabs > .widget-head ul li.active:first-child { .rounded(); }\n\t.widget.widget-tabs > .widget-head ul li.active:last-child { .rounded(0,5px,0,0); }\n\t.widget.widget-tabs > .widget-head ul li a.glyphicons { padding: 0 35px 0 15px; }\n\t.widget.widget-tabs > .widget-head ul li a i:before { left: auto; right: 5px; }\n\t.widget.widget-tabs-double > .widget-head ul li a.glyphicons, .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons { padding: 5px 38px 0 15px; }\n\t.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons { padding: 0 15px; }\n\t.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before { right: auto; }\n\t.widget.widget-tabs-vertical {\n\t\t.widget-head { \n\t\t\tpadding: 0;\n\t\t\tul li { border-left: none; } \n\t\t}\n\t}\n\t.widget.widget-wizard-pills .widget-head {\n\t\tpadding: 10px 10px 10px 0;\n\t\tul li { border: none; }\n\t}\n\t.widget.widget-tabs-icons-only .widget-head ul.pull-right { float: left; }\n\t.tabsbar.tabsbar-2 ul li a { padding: 0 10px 0 0; }\n\t.tabsbar ul li a i { float: right; }\n\t\n\t/* Form elements */\n\t.bootstrap-select.btn-group, .bootstrap-select.btn-group[class*=\"span\"] { margin-right: 0; }\n\t.select2-container-multi .select2-search-choice-close { left: auto; right: 3px; }\n\t.select2-container-multi .select2-choices .select2-search-choice { padding: 3px 18px 3px 5px; }\n\t.select2-container img.flag, .select2-drop img.flag { padding: 0 0 0 10px; }\n\t.radio, .checkbox { padding: 0; }\n\tdiv.checker { margin: 0 0 0 5px; }\n\t\n\t/* Tables */\n\tdiv.dataTables_paginate { float: left; }\n\tdiv.dataTables_filter label { float: left; }\n\t.table td.right, .table th.right { text-align: left; }\n\t\n\t/* Menus */\n\t.navbar.main .topnav > li.search form input { padding: 0 10px 0 0; }\n\t.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons, .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons, .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n\t\tpadding: 0 35px 0 10px;\n\t}\n\t.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before, .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before, .navbar.main .topnav > li.open.dd-1 .typeahead:before, .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n\t\tleft: auto;\n\t\tright: 7px;\n\t}\n\t.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after, .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after, .navbar.main .topnav > li.open.dd-1 .typeahead:after, .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n\t\tleft: auto;\n\t\tright: 8px;\n\t}\n\t.navbar.main .topnav {\n\t\tborder-left-color: @topnavBorder2; \n\t\tborder-right-color: @topnavBorder1; \n\t\t> li { \n\t\t\tfloat: right;\n\t\t\t&:first-child { border-left: none; }\n\t\t\t&.search, &.glyphs { margin: 0; }\n\t\t\t&.glyphs { \n\t\t\t\tborder-left-color: @topnavBorder2; \n\t\t\t\tborder-right-color: @topnavBorder1; \n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder1, 1px 0 0 0 @topnavBorder2;\n\t\t\t} \n\t\t}\n\t\t&.pull-left { \n\t\t\tfloat: right;\n\t\t\t&:first-of-type { padding-right: 8px; } \n\t\t}\n\t\t&.pull-right {\n\t\t\tfloat: left; \n\t\t\t> li:last-child { border-left: 1px solid @topnavBorder1; }\n\t\t}\n\t\t&.open {\n\t\t\t.dropdown-menu { right: auto; left: 0; }\n\t\t}\n\t\t.submenu-show.pull-right { left: auto !important; right: 100% !important; }\n\t}\n\t.navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right { float: left; }\n\t\n\t/* UI elements */\n\t.ribbon-wrapper {\n\t\tright: auto;\n\t\tleft: -3px;\n\t\t.ribbon {\n\t\t\t-webkit-transform: rotate(-45deg);\n\t\t\t-moz-transform: rotate(-45deg);\n\t\t\t-ms-transform: rotate(-45deg);\n\t\t\t-o-transform: rotate(-45deg);\n\t\t\tleft: auto;\n\t\t\tright: -5px;\n\t\t\t&:after { right: auto; left: 0; }\n\t\t\t&:before { left: auto; right: 0; }\n\t\t}\n\t}\n\t\n\t/* Layout */\n\t.row-merge > [class*=\"span\"] ~ [class*=\"span\"] { margin-right: 0; }\n\t.innerLR { padding: 0 @spacing; position: relative; }\n\t.innerL { padding-right: @spacing; padding-left: 0; position: relative; }\n\t.innerR { padding-left: @spacing; padding-right: 0; position: relative; }\n\t\n\t/* Timeline */\n\t.layout-timeline {\n\t\tul.timeline {\n\t\t\tpadding: 15px 30px 15px 15px;\n\t\t\t> li {\n\t\t\t\t.date { right: -70px; left: auto; }\n\t\t\t\t.type { \n\t\t\t\t\tright: -195px; \n\t\t\t\t\tleft: auto; \n\t\t\t\t\ttext-align: left; \n\t\t\t\t\tpadding: 0 0 0 35px;;\n\t\t\t\t\ti:before { left: 0; right: auto; }\n\t\t\t\t\t.time { right: auto; left: 0; }\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tleft: -20px;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t\t&:after {\n\t\t\t\t\t\tleft: -60px;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.glyphicons.pencil { right: auto; left: 15px; }\n\t\t\t\tp.glyphicons { \n\t\t\t\t\tpadding: 5px 25px 5px 0;\n\t\t\t\t\ti:before { left: auto; right: 0; } \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.nav-timeline > li > a.glyphicons i:before { right: auto; left: 8px; }\n\t}\n\t\n\t/* Login */\n\tbody.login #login .password { float: left; }\n\t\n\t/* Front */\n\t&.front .navbar.main .secondary .appbrand.pull-left { float: right; }\n\t&.front .navbar.main .topnav.pull-right > li:last-child { border-left: none; }\n\t&.front .navbar.main .secondary ul.topnav:first-of-type { margin-left: 0; padding-left: 8px; }\n}\n\n/* Responsive */\n@media (max-width: 767px)\n{\n\thtml.rtl {\n\t\t.layout-timeline ul.timeline { padding: 0; }\n\t\t.layout-timeline ul.timeline > li .date { right: auto; }\n\t\t.layout-timeline ul.timeline > li .type { right: auto; margin: 0 0 10px 60px; .time { left: -40px; right: auto; }}\n\t\t\n\t\t.navbar.main .topnav {\n\t\t\t> li { \n\t\t\t\tfloat: none;\n\t\t\t\t&.search {\n\t\t\t\t\t#reset .boxShadow();\n\t\t\t\t\tform button { right: auto; left: 0; }\n\t\t\t\t}\n\t\t\t\tborder-right: none;\n\t\t\t}\n\t\t\t&, &.pull-left, &.pull-right { float: none; }\n\t\t\t&.pull-left:first-of-type { padding-right: 0; }\n\t\t\t&.open .dropdown-menu { right: auto; left: auto; }\n\t\t\t.submenu-show.pull-right { left: auto !important; right: auto !important; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/scaffolding.less",
    "content": "//\n// Scaffolding\n// --------------------------------------------------\n\n// Body\n// -------------------------\n\nbody { \n\tfont-family: 'Open Sans', sans-serif; \n\tbackground: @bodyBg;\n\tfont-size: 13px;\n\tcolor: @bodyText;\n\tposition: relative;\n}\n\n// Outlines\n// -------------------------\n\n*, a:focus { outline: none !important; }\nbutton:focus { outline: none !important; }\nbutton::-moz-focus-inner { border: 0; }\n\n// Links\n// -------------------------\n\na:hover { color: @linkHover; }\na { color: @primaryColor; outline: 0 !important; }\n\n// Headings \n// -------------------------\n\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: 'Open Sans', sans-serif;\n\tmargin: 0 0 5px;\n\tfont-weight: 400; \n\ttext-shadow: @bodyTextShadow; \n\tcolor: #4d4d4d;\n\t&.glyphicons {\n\t\tcolor: @bodyText;\n\t}\n\tspan {\n\t\tcolor: @subheadingText;\n\t\tfont-weight: 400;\n\t\tpadding: 0 5px;\n\t\tfont-style: italic;\n\t}\n}\nh1 span, h2 span, h3 span {\n\tfont-size: 50%;\n\ttext-transform: none;\n\tpadding: 0;\n\tposition: relative;\n\ttop: -3px;\n\tfont-weight: 400;\n}\nh1 { line-height: 40px; }\nh2, h3 { line-height: 30px; }\nh2 { font-size: 26px; }\n\n// Heading with buttons\n// -------------------------\n\n.heading-buttons {\n\th1,h2,h3,h4,h5,h6 { display: inline-block; margin: 0 @spacing; &.glyphicons { display: inline-block; } }\n\t.buttons {\n\t\tmargin-top: 3px;\n\t\tmargin-right: @spacing;\n\t\ttext-align: right;\n\t}\n\t.btn { \n\t\tmargin-right: @spacing; \n\t\t&:last-child { margin-right: 0; } \n\t}\n}\n\n// Paragraphs\n// -------------------------\n\np { \n\tmargin: 0 0 10px; \n\tline-height: normal; \n}\n.lead { margin: 0 0 10px; }\n.glyphicons { color: @bodyText; }\n\n// Lists\n// -------------------------\n\nul.icons {\n\ttext-align: left; padding: 0;\n\tli { \n\t\tdisplay: block;\n\t\tpadding: 0 0 0 25px;\n\t\tline-height: 22px;\n\t\tcolor: @bodyText;\n\t\ti:before { color: @bodyText; font-size: 17px; left: 0; top: 4px; } \n\t}\n}\n\n// Other\n// -------------------------\n\ninput, button, select, textarea { font-family: 'Open Sans', sans-serif; }\n\n// Code\n// -------------------------\n\npre.prettyprint {\n\tword-break: normal;\n\tword-wrap: normal;\n\twhite-space: pre;\n\tbackground-color: @preBg1;\n\tbackground-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, @preBg1), color-stop(50%, @preBg2));\n\tbackground-image: -webkit-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: -moz-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: -o-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: linear-gradient(@preBg1 50%, @preBg2 50%);\n\t-moz-background-size: 38px 38px;\n\tbackground-size: 38px 38px;\n\tborder: 1px solid @contentBorder2;\n\tdisplay: block;\n\tline-height: 19px;\n\tmargin-bottom: @spacing;\n\toverflow: visible;\n\toverflow-y: hidden;\n\tpadding: 0 0 0 4px;\n\t.glyphicons { \n\tpadding: 0 0 0 20px;\n\t\ti:before { font-size: 17px; top: 1px; }\n\t}\n}\n#content {\n\tpre.prettyprint {\n\t\t&, span { color: @bodyText; }\n\t}\n}\n\n// Blockquote\n// -------------------------\n\nblockquote { \n\t&, &.pull-right { border: none; }\n\tp { font-weight: 400; font-size: 13px; margin: 0 0 10px; }\n\tmargin: 0;\n\tpadding: 0 0 0 5px;\n}\nblockquote small { color: @primaryColor; }\n\n// Separators\n// -------------------------\n\n.separator { padding: @spacing 0; display: block; }\n.separator.bottom { padding: 0 0 @spacing; }\n.separator.top { padding: @spacing 0 0; }\nhr { \n\tborder-top-color: @contentBorder; border-bottom: none; margin: @spacing 0;\n\t&.separator {\n\t\tpadding: 0;\n\t\t&.top { margin: @spacing 0 0; }\n\t\t&.bottom { margin: 0 0 @spacing; }\n\t}\n}\n\n// Print\n// -------------------------\n\n@media print {\n\thtml, body { height: auto !important; min-height: none !important; }\n\t@page { \n\t    size: auto; \n\t\tmargin: 10mm 10mm 10mm 10mm;  \n\t} \n\t#content { margin: 0 !important; padding: 0 !important; }\n\t.breadcrumb,\n\t#tlyPageGuideWrapper,\n\t.filter-bar { display: none !important; }\n\t.table {\n\t\ttd, th { vertical-align: middle; }\n\t\tth { padding: 3px; text-align: center; }\n\t\timg { float: left; }\n\t}\n}\n\n// Google maps\n// -------------------------\n\n.map_canvas img { max-width: none !important; }\n.streetview { width:100%; height:300px; }\n.ui-dialog-vevent .dtstart { display:none; }\n.ui-dialog-vevent .website { margin:0 0 1em; }\n\n#fontawesome {\n\t[class^=\"icon-\"], [class*=\" icon-\"] {\n\t\tfont-size: 24px/1em;\n\t\tline-height: 24px;\n\t\tvertical-align: middle;\n\t\tmargin: 0 5px 0 0; \n\t}\n\ta { line-height: 40px; }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/sliders.less",
    "content": "//\n// Sliders\n// --------------------------------------------------\n\n// jQueryUI\n// ------------------------- //\n\n.sliders-vertical span {\n\theight: 120px;\n\tfloat: left;\n\tmargin: 15px\n}\n.ui-slider-wrap {\n\tdisplay: block;\n\tpadding: 5px;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t.rounded(10px,10px,10px,10px);\n\t.ui-slider {\n\t\tbackground: rgba(0,0,0,.1);\n\t\t.bevelEmboss();\n\t\t.rounded(10px,10px,10px,10px);\n\t}\n\t.ui-slider-horizontal {\n\t\theight: 10px;\n\t\t.ui-slider-handle { top: -5px; }\n\t}\n\t.ui-slider-vertical {\n\t\t.ui-slider-handle { left: -4px; }\n\t}\n\t.ui-slider-handle {\n\t\t.rounded(50%,50%,50%,50%);\n\t\tbackground: #fff;\n\t\tborder-width: 3px;\n\t\tborder-style: solid;\n\t\tborder-color: rgba(0,0,0,.3);\n\t\twidth: 13px;\n\t\theight: 13px;\n\t\tbox-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t\t-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t\t-moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t}\n\t.ui-slider-range {\n\t\t.rounded(10px,10px,10px,10px);\n\t\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\t-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\tbackground: rgba(0,0,0,.2);\n\t}\n\t.slider-primary {\n\t\t.ui-slider-handle { border-color: @primaryColor; }\n\t\t.ui-slider-range { background: @primaryColor; }\n\t}\n\t.slider-warning {\n\t\t.ui-slider-handle { border-color: #FBB450; }\n\t\t.ui-slider-range { background: #FBB450; }\n\t}\n\t.slider-success {\n\t\t.ui-slider-handle { border-color: #609450; }\n\t\t.ui-slider-range { background: #609450; }\n\t}\n\t.slider-inverse {\n\t\t.ui-slider-handle { border-color: #3F4246; }\n\t\t.ui-slider-range { background: #3F4246; }\n\t}\n\t.slider-info {\n\t\t.ui-slider-handle { border-color: #93B9D8; }\n\t\t.ui-slider-range { background: #93B9D8; }\n\t}\n}\n.sliders-vertical {\n\tposition: relative;\n\tmargin: 0 auto;\n\tdisplay: inline-block;\n\t.ui-slider-wrap { margin: 0 5px; }\n\t.ui-slider { margin: 0; }\n}\n.vertical-range-slider {\n\t.ui-slider-wrap { display: inline-block; margin: 0 auto; }\n\t.slider { }\n}\n\n// jQRangeSliders\n// ------------------------- //\n\n.sliderContainer {\n\theight: 35px;\n\tmargin-top: 50px;\n\twidth: 100%;\n\tselect, 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 {\n\t\tmargin: 0;\n\t\tpadding: 2px 4px;\n\t}\n\t.ui-rangeSlider-withArrows .ui-rangeSlider-container { margin: 0 20px; }\n\t.ui-rangeSlider-bar { background: @primaryColor; height: 30px; margin: 0; }\n\t.ui-rangeSlider-withArrows .ui-rangeSlider-container, \n\t.ui-rangeSlider-noArrow .ui-rangeSlider-container,\n\t.ui-rangeSlider-arrow,\n\t.ui-rangeSlider-bar { .bevelEmboss(0,0); }\n\t.ui-rangeSlider-container,\n\t.ui-rangeSlider-arrow,\n\t.ui-rangeSlider-label {\n\t\tbackground: @widgetBgGray;\n\t\tcolor: @bodyText;\n\t\tfont-size: 13px;\n\t}\n\t.ui-rangeSlider-container {\n\t\tborder-color: @contentBorder;\n\t}\n\t.ui-editRangeSlider .ui-rangeSlider-label { padding: 5px; }\n\t.ui-rangeSlider-label-inner { border-top-color: @widgetBgGray; }\n\t.ui-rangeSlider-arrow { border-color: @contentBorder; }\n\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @primaryColor; margin-right: -4px; }\n\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @primaryColor; margin-left: -4px; }\n\t.ui-rangeSlider-arrow { width: 20px; }\n\t.ui-rangeSlider .ui-ruler-scale { overflow: hidden; }\n\t.ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner { border-color: @contentBorder; }\n\t.ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label { color: @bodyText; }\n\t\n\t.rangeslider-danger {\n\t\t.ui-rangeSlider-bar { background: @dangerColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @dangerColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @dangerColor; }\n\t}\n\t.rangeslider-success {\n\t\t.ui-rangeSlider-bar { background: @successColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @successColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @successColor; }\n\t}\n\t.rangeslider-warning {\n\t\t.ui-rangeSlider-bar { background: @warningColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @warningColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @warningColor; }\n\t}\n}\n.widget-body-gray {\n\t.sliderContainer {\n\t\t.ui-rangeSlider-label-inner { border-top-color: #cecece; }\n\t\t.ui-rangeSlider-container,\n\t\t.ui-rangeSlider-arrow,\n\t\t.ui-rangeSlider-label { background: #cecece; color: #4d4d4d; font-weight: 600; }\n\t\t.ui-rangeSlider:not(.rangeslider-success) {\n\t\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: #4d4d4d; }\n\t\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: #4d4d4d; }\n\t\t\t.ui-rangeSlider-bar { background: #4d4d4d; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/style-default.less",
    "content": "/*!\n * QuickAdmin v1.3.1\n *\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\n\n@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n@import \"mixins.less\";\n\n// Variables\n// -------------------------\n\n@import \"variables.less\";\n\n// Scaffolding\n// -------------------------\n\n@import \"scaffolding.less\";\n\n// Layout\n// -------------------------\n\n@import \"layout.less\";\n\n// Menus\n// -------------------------\n\n@import \"menus.less\";\n\n// Widgets\n// -------------------------\n\n@import \"widgets.less\";\n\n// Tabs\n// -------------------------\n\n@import \"tabs.less\";\n\n// Buttons\n// -------------------------\n\n@import \"buttons.less\";\n\n// Forms\n// -------------------------\n\n@import \"forms.less\";\n\n// Tables\n// -------------------------\n\n@import \"tables.less\";\n\n// Labels\n// -------------------------\n\n@import \"labels.less\";\n\n// Tooltips\n// -------------------------\n\n@import \"tooltips.less\";\n\n// Popovers\n// -------------------------\n\n@import \"popovers.less\";\n\n// Modals\n// -------------------------\n\n@import \"modals.less\";\n\n// Alerts\n// -------------------------\n\n@import \"alerts.less\";\n\n// Progress bars\n// -------------------------\n\n@import \"progress-bars.less\";\n\n// Accordions\n// -------------------------\n\n@import \"accordions.less\";\n\n// Pagination\n// -------------------------\n\n@import \"pagination.less\";\n\n// Notifications\n// -------------------------\n\n@import \"notifications.less\";\n\n// Sliders\n// -------------------------\n\n@import \"sliders.less\";\n\n// jQueryUI\n// -------------------------\n\n@import \"jquery-ui.less\";\n\n// Form Wizards\n// -------------------------\n\n@import \"form-wizards.less\";\n\n// Timeline\n// -------------------------\n\n@import \"timeline.less\";\n\n// Login\n// -------------------------\n\n@import \"login.less\";\n\n// Gallery\n// -------------------------\n\n@import \"gallery.less\";\n\n// Calendar\n// -------------------------\n\n@import \"calendar.less\";\n\n// Guided Tour\n// -------------------------\n\n@import \"guidedtour.less\";\n\n// Documentation\n// -------------------------\n\n@import \"documentation.less\";\n\n// Landing pages\n// -------------------------\n\n@import \"landings.less\";\n\n// Choose (Start) Page\n// -------------------------\n\n@import \"choose.less\";\n\n// Front module customizations\n// -------------------------\n\n@import \"front.less\";\n\n// RTL\n// -------------------------\n\n@import \"rtl.less\";\n\n// lt-ie9\n// -------------------------\n\n@import \"lt-ie9.less\";\n\n// Responsive\n// -------------------------\n\n@import \"responsive.less\";\n\n// Themer\n// -------------------------\n\n@import \"themer.less\";"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/style-flat.less",
    "content": "/*!\n *\n * QuickAdmin v1.3.1\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\n\n@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n@import \"mixins.less\";\n\n// Variables\n// -------------------------\n\n@import \"variables.less\";\n\n// Scaffolding\n// -------------------------\n\n@import \"scaffolding.less\";\n\n// Layout\n// -------------------------\n\n@import \"layout.less\";\n\n// Menus\n// -------------------------\n\n@import \"menus.less\";\n\n// Widgets\n// -------------------------\n\n@import \"widgets.less\";\n\n// Tabs\n// -------------------------\n\n@import \"tabs.less\";\n\n// Buttons\n// -------------------------\n\n@import \"buttons.less\";\n\n// Forms\n// -------------------------\n\n@import \"forms.less\";\n\n// Tables\n// -------------------------\n\n@import \"tables.less\";\n\n// Labels\n// -------------------------\n\n@import \"labels.less\";\n\n// Tooltips\n// -------------------------\n\n@import \"tooltips.less\";\n\n// Popovers\n// -------------------------\n\n@import \"popovers.less\";\n\n// Modals\n// -------------------------\n\n@import \"modals.less\";\n\n// Alerts\n// -------------------------\n\n@import \"alerts.less\";\n\n// Progress bars\n// -------------------------\n\n@import \"progress-bars.less\";\n\n// Accordions\n// -------------------------\n\n@import \"accordions.less\";\n\n// Pagination\n// -------------------------\n\n@import \"pagination.less\";\n\n// Notifications\n// -------------------------\n\n@import \"notifications.less\";\n\n// Sliders\n// -------------------------\n\n@import \"sliders.less\";\n\n// jQueryUI\n// -------------------------\n\n@import \"jquery-ui.less\";\n\n// Form Wizards\n// -------------------------\n\n@import \"form-wizards.less\";\n\n// Timeline\n// -------------------------\n\n@import \"timeline.less\";\n\n// Login\n// -------------------------\n\n@import \"login.less\";\n\n// Gallery\n// -------------------------\n\n@import \"gallery.less\";\n\n// Calendar\n// -------------------------\n\n@import \"calendar.less\";\n\n// Guided Tour\n// -------------------------\n\n@import \"guidedtour.less\";\n\n// Documentation\n// -------------------------\n\n@import \"documentation.less\";\n\n// Landing pages\n// -------------------------\n\n@import \"landings.less\";\n\n// Choose (Start) Page\n// -------------------------\n\n@import \"choose.less\";\n\n// Front module customizations\n// -------------------------\n\n@import \"front.less\";\n\n// RTL\n// -------------------------\n\n@import \"rtl.less\";\n\n// lt-ie9\n// -------------------------\n\n@import \"lt-ie9.less\";\n\n// Responsive\n// -------------------------\n\n@import \"responsive.less\";\n\n// Themer\n// -------------------------\n\n@import \"themer.less\";\n\n// Customizations\n// -------------------------\n\n/* Reset box-shadow & borders */\n.btn,\n.widget, \n.widget-body,\n.widget-stats,\n.carousel-inner,\n.layout-timeline ul.timeline > li .date,\n.box-generic,\n.well,\n.accordion, .accordion .accordion-group { \n\tborder: none !important;\n\t#reset .boxShadow();\n}\n\n/* Reset box-shadow only */\nselect, 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,\n.dropdown-menu,\n.table-bordered,\n.progress .bar,\n.popover {\n\t#reset .boxShadow();\n}\n\n/* Reset borders only */\n.chat-controls,\n.thumb,\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.menubar,\n.widget.widget-tabs-double-2 > .widget-head,\n.widget.widget-tabs-double-2 .widget-body-regular {\n\tborder: none !important;\n}\n\n/* Reset padding only */\n.thumb {\n\tpadding: 0 !important;\n}\n\n/* Reset rounded corners */\n#content,\n.navbar.main,\n#wrapper,\n.btn,\n.widget,\n.widget-head,\n.widget-body,\n.carousel,\n.carousel-inner,\n.carousel .item,\n.carousel .item img,\n.nav li a,\n.thumb,\n.thumb img,\n.widget-stats,\n.label, .badge,\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.layout-timeline ul.timeline > li .date,\nselect, 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,\n.alert,\n.tooltip-inner, .popover, \n.pagination ul, .pagination a, .pager a,\n.table-bordered, .table-bordered td, .table-bordered th,\n.box-generic,\n.progress, .progress .bar,\n.add-on,\n.well,\n.accordion .accordion-heading .accordion-toggle, .accordion .accordion-inner,\npre,\n.widget-chat .chat-controls {\n\t#reset .rounded();\n}\n\n/* Fix top menu */\n.navbar.main .topnav > li > a { padding: 0 10px; }\n.navbar.main .topnav > li > a.glyphicons { padding: 0 9px; }\n.navbar.main .topnav > li.glyphs ul li { padding: 0; }\n.navbar.main .topnav > li.glyphs ul li .glyphicons { padding: 5px 10px; }\n.navbar.main .topnav > li.active, .navbar.main .topnav > li:hover, .navbar.main .topnav > li.open { padding: 8px 0 8px 10px; }\n.navbar.main .topnav > li.active:last-child, .navbar.main .topnav > li:hover:last-child, .navbar.main .topnav > li.open:last-child { padding: 8px 9px 8px 10px; }\n.navbar.main .topnav > li.search { padding: 8px 9px !important; }\n.navbar.main .topnav > li.glyphs { padding: 8px !important; }\n.navbar.main .topnav > li.active > a.glyphicons, .navbar.main .topnav > li:hover > a.glyphicons, .navbar.main .topnav > li.open > a.glyphicons { padding: 6px 9px; }\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after { display: none; }\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu { top: 45px; }\n\n/* input + btn */\n.input-append .btn { height: 30px; }\n.fileupload-new .input-append .btn-file { height: 22px; }\n\n/* tabs */\n.tabsbar ul li a { background: #f9f9f9; }\n.tabsbar:not(.tabsbar-2) ul li.active a { background: @primaryColor; }\n.widget.widget-tabs-double-2 > .widget-head { border-bottom: 1px solid @contentBorder !important; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/tables.less",
    "content": "//\n// Tables\n// --------------------------------------------------\n\n// Regular Tables\n// -------------------------\n\n.table { \n\tmargin: 0 0 @spacing; \n\tposition: relative; \n\t.rounded(); \n\t&.table-white { background: #fff; }\n}\n.table th, .table td { border-top-color: @contentBorder2; }\n.table td.center, .table th.center { text-align: center; }\n.table td.right, .table th.right { text-align: right; }\n\n// Condensed\n// -------------------------\n\n.table-condensed { font-size: 10pt; }\n.table-condensed th, .table-condensed td { padding: 4px 10px; }\n\n// Borderless\n// -------------------------\n\n.table-borderless {\n\tth, td { border: none; }\n}\n\n// Striped\n// -------------------------\n\n.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { background-color: @contentBg1; }\n\n// Bordered\n// -------------------------\n\n.table-bordered { \n\tborder-color: @contentBorder; th, td { border-color: @contentBorder; }\n\t/* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n}\n\n// Utilities\n// -------------------------\n\n.table-fill td { background: #F8F8F8; }\n.table .progress:last-child,\n.table .alert:last-child { margin: 0; }\n.table .shortRight { width: 25%; text-align: right; direction: rtl; text-indent: 10px; }\n.table-large-spacing td { padding: 20px 15px; }\n.table .thead td { padding: 8px; font-weight: bold; }\n.table-vertical-center td,\n.table-vertical-center th { vertical-align: middle; }\n\n// table-thead-simple\n// -------------------------\n\n.table-thead-simple {\n\tthead {\n\t\tth {\n\t\t\tbackground: none;\n\t\t\tborder-left: none;\n\t\t\tborder-right: none;\n\t\t\tborder-top: none;\n\t\t\tborder-bottom: 1px solid @contentBorder2;\n\t\t\tcolor: @bodyText;\n\t\t\t.rounded();\n\t\t\ttext-shadow: none;\n\t\t\ttext-transform: none;\n\t\t\t.bevelEmboss(0,0);\n\t\t}\n\t}\n\t&.table-thead-border-none {\n\t\tborder-top: none;\n\t\t.rounded();\n\t\tthead {\n\t\t\tth {\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\t\t}\n\t\tthead:first-child tr:first-child > th:last-child, \n\t\ttbody:first-child tr:first-child > td:last-child, \n\t\ttbody:first-child tr:first-child > th:last-child { .rounded(); }\n\t}\n}\n\n// Table Primary\n// -------------------------\n\n.table-primary {\n\tborder-color: @contentBorder;\n\tborder-top: none;\n\tthead \n\t{\n\t\tth { \n\t\t\tborder-color: @primaryColor;\n\t\t\tbackground-color: @primaryColor;\n\t\t\tcolor: #fff;\n\t\t\tfont-size: 14px;\n\t\t}\n\t\t&:first-child tr:first-child > th:first-child,\n\t\t&:first-child tr:first-child > th:last-child {  }\n\t}\n\ttbody td {\n\t\tcolor: @bodyText;\n\t\tbackground: @contentBg1;\n\t\tborder-width: 0px; \n\t\t&.important { color: @primaryColor; font-weight: 600; }\n\t\t&.actions { padding-right: 1px; }\n\t}\n\t&.table-bordered {\n\t\ttbody td {\n\t\t\tborder-color: @contentBorder;\n\t\t\tborder-width: 1px;\n\t\t\t/*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\t\t}\n\t}\n\ttbody tr:nth-child(odd) td, \n\ttbody tr:nth-child(odd) th {\n\t\tbackground: @widgetBg;\n\t}\n\ttbody tr.selectable td { cursor: pointer; }\n\ttbody tr.selected td,\n\ttbody tr.selectable:hover td {\n\t\tbackground: darken(@contentBorder, 5%);\n\t\tbox-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset;\n\t\t-webkit-box-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset;\n\t\t-moz-box-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset; \n\t}\n}\n\n// Pricing tables\n// -------------------------\n\n.table-pricing {\n\tth, td {\n\t\tpadding: 10px;\n\t}\n\t.plan { font-weight: 600; font-size: 14px; display: block; }\n\t.price { font-weight: 600; font-size: 24px; display: block; }\n\t.heading { font-weight: 600; font-size: 24px; vertical-align: middle; }\n\t.glyphicons.standard {\n\t\tvertical-align: middle;\n\t\t&.circle_ok {\n\t\t\ti:before { color: #9fc75f; }\n\t\t}\n\t}\n}\n.table-pricing-2 {\n\tth { padding: 12px 0; background: #64625f; font-size: 14px; color: #fff; border-color: #5a5855; }\n\t.pricing {\n\t\ttd {\n\t\t\tpadding: 12px 10px 10px;\n\t\t\tbackground: #e5e5e5;\n\t\t\tborder-color: #cecece;\n\t\t}\n\t}\n}\n\n// DataTables\n// -------------------------\n\ndiv.dataTables_filter label { float: none; }\n.row-fluid [class*=\"span\"]:last-of-type { .dataTables_filter { text-align: right; } }\n#DataTables_Table_0_length select { width: 80px; }\n#DataTables_Table_0_info { padding: 0; }\n.dataTables_paginate { text-align: right; }\n.dataTables_length { padding-top: 5px; }\n.ColVis { margin: 0; }\n\n// Google Visualization Tables\n// -------------------------\n\n.google-visualization-table-div-page {\n\tmargin: 10px 0 0 0 !important;\n\t.a-d-e-h-g { padding: 0; border: none; margin: 0; }\n\t.a-d-e-f-g, .a-d-e-h-g { border-style: none; }\n\t.a-d-e-o-q .a-d-e-h-g { border: none; }\n\t.a-d-e { background: none; margin-left: 5px; }\n\t.a-d-e.a-d-e-o-p { margin-left: 0; }\n}\n.google-visualization-table-table {\n\twidth: 100%;\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\tborder: 1px solid #e5e5e5;\n\tborder-left: 0;\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\tborder-radius: 4px;\n\tfont-size: 10pt;\n\tbackground: none !important;\n\ttd, .tableHeaderRow td {\n\t\tpadding: 4px 10px;\n\t\tborder: none;\n\t\tborder-left: 1px solid #e5e5e5;\n\t\tborder-top: 1px solid #e5e5e5;\n\t\tline-height: 20px;\n\t}\n\t.tableHeaderRow td { font-weight: bold; vertical-align: bottom; }\n\ttbody tr:nth-child(odd) td, tbody tr:nth-child(odd) td {\n\t\tbackground-color: rgba(255,255,255,.5);\n\t}\n\t.tableHeaderRow:first-child tr:first-child > td:first-child, \n\ttbody:first-child tr:first-child > td:first-child {\n\t\t-webkit-border-top-left-radius: 4px;\n\t\tborder-top-left-radius: 4px;\n\t\t-moz-border-radius-topleft: 4px;\n\t}\n\t.tableHeaderRow:first-child tr:first-child > td:last-child, \n\ttbody:first-child tr:first-child > td:last-child {\n\t\t-webkit-border-top-right-radius: 4px;\n\t\tborder-top-right-radius: 4px;\n\t\t-moz-border-radius-topright: 4px;\n\t}\n\ttbody:last-child tr:last-child > td:first-child {\n\t\t-webkit-border-bottom-left-radius: 4px;\n\t\tborder-bottom-left-radius: 4px;\n\t\t-moz-border-radius-bottomleft: 4px;\n\t}\n\ttbody:last-child tr:last-child > td:last-child {\n\t\t-webkit-border-bottom-right-radius: 4px;\n\t\tborder-bottom-right-radius: 4px;\n\t\t-moz-border-radius-bottomright: 4px;\n\t}\n\t.tableHeaderRow:first-child tr:first-child td, \n\ttbody:first-child tr:first-child td {\n\t\tborder-top: 0;\n\t}\n}\n\n// Responsive Tables\n// -------------------------\n\n@media only screen and (max-width: 979px)\n{\t\n\t.table-responsive {\n\t\t&.swipe-horizontal {\n\t\t\twidth: 100%; border-collapse: collapse; border-spacing: 0;\n\t\t\tdisplay: block; position: relative; width: 100%;\n\t\t\tborder-left: 1px solid #DDD;\n\t\t\tth, td { \n\t\t\t\tdisplay: block; margin: 0; vertical-align: top;\n\t\t\t\t&:last-child { }\n\t\t\t}\n\t\t\tth { text-align: right; border-bottom: 0; border-left: 0; }\n\t\t\ttd { min-height: 1.25em; text-align: left; border-left: 0; border-right: 0; border-bottom: 0; border-top: 0; font-size: 13px; }\n\t\t\tthead { \n\t\t\t\tdisplay: block; float: left;\n\t\t\t\ttr { display: block; } \n\t\t\t}\n\t\t\ttbody {\n\t\t\t\tdisplay: block; width: auto; position: relative; overflow-x: auto; white-space: nowrap; word-spacing: 0; letter-spacing: 0; font-size: 0;\n\t\t\t\ttr { display: inline-block; vertical-align: top; border-left: 1px solid #e5e5e5; } \n\t\t\t}\n\t\t}\n\t\t&.block {\n\t\t\t/* Force table to not be like tables anymore */\n\t\t\ttable, thead, tbody, th, td, tr { \n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t/* Hide table headers (but not display: none;, for accessibility) */\n\t\t\tthead tr { \n\t\t\t\tposition: absolute;\n\t\t\t\ttop: -9999px;\n\t\t\t\tleft: -9999px;\n\t\t\t}\n\n\t\t\ttr { border: 1px solid #e5e5e5; }\n\t\t \ttd { \n\t\t\t\t/* Behave  like a \"row\" */\n\t\t\t\tborder: none;\n\t\t\t\tborder-bottom: 1px solid #e5e5e5; \n\t\t\t\tposition: relative;\n\t\t\t\tpadding-left: 50%; \n\t\t\t\twhite-space: normal;\n\t\t\t\ttext-align:left;\n\t\t\t}\n\t\t \n\t\t\ttd:before { \n\t\t\t\t/* Now like a table header */\n\t\t\t\tposition: absolute;\n\t\t\t\t/* Top/left values mimic padding */\n\t\t\t\tvertical-align: middle;\n\t\t\t\tleft: 6px;\n\t\t\t\twidth: 45%; \n\t\t\t\tpadding-right: 10px; \n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-align:right;\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t \n\t\t\t/* Label the data */\n\t\t\ttd:before { content: attr(data-title); }\n\t\t}\n\t}\n}\n\n// Invoice\n// -------------------------\n\n.table-invoice {\n\ttd { border: none; padding: 0; }\n}\n\n// Advanced profile / projects\n// -------------------------\n\n.table-projects {\n\t.stats {\n\t\tspan { \n\t\t\tdisplay: block; \n\t\t\ttext-transform: uppercase;\n\t\t\tpadding: 2px 0;\n\t\t\t&.count { font-size: 18pt; font-weight: normal; color: @primaryColor; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/tabs.less",
    "content": "//\n// Tabs\n// --------------------------------------------------\n\n.widget {\n\t&.widget-tabs {\n\t\tborder-color: @contentBorder;\n\t\t.tab-content { padding: 0; }\n\t\t> .widget-head {\n\t\t\tbackground: @widgetBg;\n\t\t\tborder-color: @contentBorder;\n\t\t\toverflow: visible;\n\t\t\tul {\n\t\t\t\tposition: relative;\n\t\t\t\toverflow: visible;\n\t\t\t\tlist-style: none;\n\t\t\t\theight: 35px;\n\t\t\t\tmargin: 0;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tli {\n\t\t\t\t\theight: 35px;\n\t\t\t\t\tline-height: 35px;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: 1px solid @contentBorder;\n\t\t\t\t\ta {\n\t\t\t\t\t\twidth: auto; \n\t\t\t\t\t\theight: 35px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\ti:before { left: 5px; top: 5px; color: #9d9d9d; text-shadow: @bodyTextShadow; }\n\t\t\t\t\t\t&.glyphicons { padding: 0 15px 0 35px; }\n\t\t\t\t\t}\n\t\t\t\t\t&.active {\n\t\t\t\t\t\theight: 36px;\n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\tcolor: #505050;\n\t\t\t\t\t\ta { color: #505050; i:before { color: #505050; } }\n\t\t\t\t\t\t&:first-child { .rounded(5px,0,0,0); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\t&.large { padding: 25px; }\n\t\t}\n\t}\n\t&.widget-tabs-double {\n\t\t> .widget-head {\n\t\t\theight: 40px;\n\t\t\tul {\n\t\t\t\theight: 40px;\n\t\t\t\tli, li.active {\n\t\t\t\t\theight: 40px;\n\t\t\t\t\tline-height: 20px;\n\t\t\t\t\ta {\n\t\t\t\t\t\theight: 35px;\n\t\t\t\t\t\tpadding: 5px 0 0;\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\t\tpadding: 5px 15px 0 38px;\n\t\t\t\t\t\t\ti:before { left: 4px; top: 9px; font-size: 20px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-double-2 {\n\t\tborder: none;\n\t\t> .widget-head {\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tborder-bottom: none;\n\t\t\theight: 70px;\n\t\t\t&.border-bottom {\n\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t}\n\t\t\tul {\n\t\t\t\theight: 70px;\n\t\t\t\tli {\n\t\t\t\t\theight: 70px;\n\t\t\t\t\tline-height: 20px;\n\t\t\t\t\ta {\n\t\t\t\t\t\t.transition(color 1s ease);\n\t\t\t\t\t\theight: 70px;\n\t\t\t\t\t\tpadding: 5px 0 0;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\t\t\tpadding: 13px 0 0;\n\t\t\t\t\t\t\t\tline-height: 24px;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ti:before { left: auto; top: auto; font-size: 24px; position: relative; .transition(color 1s ease); }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.active { \n\t\t\t\t\t\theight: 70px;\n\t\t\t\t\t\tbackground: @widgetBg;\n\t\t\t\t\t\ta { \n\t\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\t\ti:before { color: @primaryColor; } \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @widgetBg;\n\t\t\t\t\t\ta {\n\t\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\t\ti:before { color: @primaryColor; } \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\tpadding: 0;\n\t\t}\n\t\t.widget-body-regular {\n\t\t\tpadding: 10px;\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tp:last-child { margin: 0; }\n\t\t}\n\t}\n\t&.widget-tabs-vertical {\n\t\t.widget-head {\n\t\t\tborder: none;\n\t\t\theight: auto;\n\t\t\tpadding: 0;\n\t\t\tul {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: auto;\n\t\t\t\tli {\n\t\t\t\t\tfloat: none;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: none;\n\t\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t\t\t&:last-child { border: none; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tpadding: 0;\n\t\t\t.tab-content { padding: 12px 15px; }\n\t\t}\n\t}\n\t&.widget-wizard-pills {\n\t\t.widget-head {\n\t\t\theight: 60px;\n\t\t\tpadding: 10px 0;\n\t\t\tul {\n\t\t\t\theight: 60px;\n\t\t\t\tli {\n\t\t\t\t\theight: 60px;\n\t\t\t\t\tline-height: 60px;\n\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\tpadding: 0 0 0 10px;\n\t\t\t\t\tborder: none;\n\t\t\t\t\t&.status {\n\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\tpadding: 15px 15px 0;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tspan.r {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta {\n\t\t\t\t\t\theight: 58px;\n\t\t\t\t\t\tline-height: 60px;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\twidth: 58px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tbackground: @contentBorder;\n\t\t\t\t\t\tborder: 1px solid @contentBorder;\n\t\t\t\t\t\tcolor: #c8c8c8;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tfont-size: 16pt;\n\t\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t}\n\t\t\t\t\t&.active {\n\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\ta {\n\t\t\t\t\t\t\twidth: 60px;\n\t\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\t\tbackground: lighten(@contentBorder, 10%);\n\t\t\t\t\t\t\tborder: none; \n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\t&.primary {\n\t\t\t\t\t\ta { \n\t\t\t\t\t\t\twidth: 60px;\n\t\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\tcolor: #fff; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tposition: relative;\n\t\t\t\t\t&:not(:first-child):before {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tbackground: @contentBorder;\n\t\t\t\t\t\theight: 1px;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\ttop: 29px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\tz-index: 1;\n\t\t\t\t\t}\n\t\t\t\t\t&.no-padding { padding: 0; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-2 {\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\t&.border-bottom-none { border-bottom: none; }\n\t\t> .widget-head {\n\t\t\tbackground: #fff;\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\tpadding: 0 10px;\n\t\t\tul {\n\t\t\t\tborder-color: @contentBorder;\n\t\t\t\tli {\n\t\t\t\t\tborder: none;\n\t\t\t\t\t&.active {\n\t\t\t\t\t\tbackground-color: #f7f7f7;\n\t\t\t\t\t\tbackground-image: -moz-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: -webkit-gradient(linear,0 0,0 100%,from(#f7f7f7),to(#ffffff));\n\t\t\t\t\t\tbackground-image: -webkit-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: -o-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: linear-gradient(to bottom,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-repeat: repeat-x;\n\t\t\t\t\t}\n\t\t\t\t\ta {\n\t\t\t\t\t\tborder: 1px solid #dddddd;\n\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\tborder-right: none;\n\t\t\t\t\t\tcolor: #222;\n\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t}\n\t\t\t\t\t&:first-child a { .rounded(); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body { background: #fff; border: none; padding: 15px; }\n\t}\n\t&.tabs-right {\n\t\t.widget-head {\n\t\t\tul { float: right; }\n\t\t}\n\t}\n\t&.widget-tabs-icons-only-2 {\n\t\t> .widget-head {\n\t\t\tul li {\n\t\t\t\ta.glyphicons {\n\t\t\t\t\twidth: 38px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\ti {\n\t\t\t\t\t\twidth: 38px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tline-height: 35px;\n\t\t\t\t\t\t&:before { width: 38px; text-align: center; left: auto; top: auto; position: relative; display: block; line-height: 35px; color: #cbcbcb; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.active a.glyphicons i:before { color: #505050; }\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-icons-only {\n\t\t.widget-body { \n\t\t\tpadding: 0;\n\t\t\tp:last-child { margin: 0; } \n\t\t}\n\t\t.widget-head {\n\t\t\tpadding: 0 0 10px;\n\t\t\tul {\n\t\t\t\tdisplay: block;\n\t\t\t\toverflow: hidden;\n\t\t\t\tposition: relative;\n\t\t\t\tlist-style: none;\n\t\t\t\tmargin: 0;\n\t\t\t\theight: 30px;\n\t\t\t\tline-height: 30px;\n\t\t\t\tpadding: 0;\n\t\t\t\tli {\n\t\t\t\t\tcolor: #dadada;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tpadding: 0 10px 0 0;\n\t\t\t\t\tfont-size: 8pt;\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\twidth: 30px;\n\t\t\t\t\t\theight: 30px;\n\t\t\t\t\t\tpadding: 0 3px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\ti {\n\t\t\t\t\t\t\tbackground: #e5e5e5; \n\t\t\t\t\t\t\t.transition(background .5s ease);\n\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\t.rounded(2px,2px,2px,2px); \n\t\t\t\t\t\t\theight: 30px; \n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t&:before { position: relative; top: 0; left: 0; color: #64625f; font-size: 17px; line-height: 30px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\ti { background: #dedede; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\tbackground: #64625f;\n\t\t\t\t\t\t\t\t&:before { color: #fff; } \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:last-child { padding: 0; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Tabsbar\n// -------------------------\n\n.tabsbar {\n\theight: 60px;\n\tborder: 1px solid @contentBorder;\n\tposition: relative;\n\toverflow: hidden;\n\tmargin: 0 0 @spacing;\n\tul {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\theight: 60px;\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tdisplay: block;\n\t\t\theight: 54px;\n\t\t\tborder-right: 1px solid @contentBorder;\n\t\t\tbackground: @contentGradient1;\n\t\t\tpadding: 3px;\n\t\t\ta {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: 54px;\n\t\t\t\tline-height: 54px;\n\t\t\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\t\t\tpadding: 0 15px;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\ttext-decoration: none;\n\t\t\t\t.transition(background 1s ease);\n\t\t\t\ti {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\twidth: 39px;\n\t\t\t\t\theight: 54px;\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\tline-height: 54px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\ta {\n\t\t\t\t\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.tabsbar-2 {\n\t\theight: 39px;\n\t\tul {\n\t\t\theight: 39px;\n\t\t\tli {\n\t\t\t\theight: 39px;\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground: none;\n\t\t\t\tborder: none;\n\t\t\t\t.transition(background .5s ease);\n\t\t\t\ta {\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tline-height: 39px;\n\t\t\t\t\tbackground: none;\n\t\t\t\t\t.transition(color .5s ease);\n\t\t\t\t\ti {\n\t\t\t\t\t\theight: 39px;\n\t\t\t\t\t\twidth: 33px;\n\t\t\t\t\t\t&:before { line-height: 39px; font-size: 20px; .transition(color 1s ease); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.active {\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\ta {\n\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&:not(.active):hover {\n\t\t\t\t\ta {\n\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.active-fill {\n\t\t\tul li.active a {\n\t\t\t\tbackground: @primaryColor;\n\t\t\t\tcolor: #fff;\n\t\t\t\ti:before { color: #fff; }\n\t\t\t}\n\t\t}\n\t}\n}\n\n// nav-tabs & nav-pills\n// -------------------------\n\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n\tbackground: @primaryColor;\n\tborder-bottom-color: @primaryColor;\n\tcolor: #fff;\n}\n.nav-tabs { border-bottom-color: @primaryColor; }\n.nav-tabs > li > a {\n\tpadding: 6px 8px;\n}\n.nav-tabs > .active > a, .nav-tabs > .active > a:hover { \n\tbackground: @primaryColor;\n\tborder-top-color: @primaryColor; \n\tborder-left-color: @primaryColor;\n\tborder-right-color: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: bold;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t.bevelEmboss();\n}\n.nav-pills a { cursor: pointer; }\n.nav-pills > .active > a, .nav-pills > .active > a:hover { \n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.nav-pills {\n\t.glyphicons { \n\t\tpadding-left: 25px;\n\t\ti:before { position: relative; font-size: 14px; left: -10px; top: 2px; color: #F5EADB; font-weight: normal; text-shadow: none; }\n\t}\n}\n.tab-content { overflow: visible; padding: 0; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/themer.less",
    "content": "// Themer\n// -------------------------\n\n#themer {\n\tposition: fixed;\n\ttop: 40%;\n\tleft: 50%;\n\tz-index: 1000;\n\twidth: 260px;\n\tmargin: -50px 0 0 -130px;\n\ttext-align: left;\n\t&.in { overflow: visible; }\n\t.close2 {\n\t\tposition: absolute; background: #DDD; color: #222; font-weight: 600; height: 20px; top: 14px; right: 10px;\n\t\tline-height: 20px; text-align: center; font-size: 10pt; padding: 0 10px;\n\t\tcursor: pointer;\n\t}\n\t.wrapper {\n\t\tposition: relative;\n\t\tbackground: #292c2e;\n\t\tborder: 1px solid #2f3235;\n\t\tpadding: 15px;\n\t\tcolor: #fafafa;\n\t\thr.separator {\n\t\t\tmargin: 10px 0;\n\t\t\tborder-top-color: #5e646b;\n\t\t\tborder-bottom-color: #2f3235;\n\t\t}\n\t\th4 { \n\t\t\tborder-bottom: 1px solid #5e6060;\n\t\t\tpadding: 0 0 10px;\n\t\t\tmargin: 0 0 10px;\n\t\t\tcolor: #fff;\n\t\t\tspan { color: #5e6060; font-weight: normal; font-size: 10pt; text-shadow: none; }\n\t\t}\n\t\t.btn {\n\t\t\tmargin: 0; \n\t\t}\n\t\t#themer-getcode-less { margin: 0 0 0 5px; }\n\t\tul {\n\t\t\tmargin: 0;\n\t\t\tlist-style: none;\n\t\t\tli {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\tposition: relative;\n\t\t\t\t.minicolors { line-height: normal; border: none; top: 2px; right: 0; position: absolute; }\n\t\t\t\t.minicolors input { border: none; height: 20px; width: 69px; background: #414649; color: #fff; font-size: 9pt; padding: 0 5px; margin: 0 0 1px; }\n\t\t\t\t.minicolors-swatch { cursor: pointer; width: 18px; height: 18px; }\n\t\t\t\t.minicolors-panel { z-index: 10000; top: 24px; }\n\t\t\t\t.minicolors-position-left .minicolors-panel { left: -152px; }\n\t\t\t\tselect { \n\t\t\t\t\tposition: absolute; top: 3px; right: 0; width: 100px; height: 20px; line-height: normal; padding: 0; margin: 0; font-size: 9pt;\n\t\t\t\t\tbackground: lighten(#292C2E, 10%);\n\t\t\t\t\tborder: 1px solid #2F3235;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t\t.link { text-decoration: underline; cursor: pointer; }\n\t\t\t\tlabel { margin: 0; line-height: 25px; font-size: 9pt; input { margin: 0 0 1px; } }\n\t\t\t\t&.advanced { display: none; }\n\t\t\t}\n\t\t}\n\t}\n\t&.themer-advanced {\n\t\t.wrapper ul li.advanced { display: block; }\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/timeline.less",
    "content": "//\n// Timeline page\n// --------------------------------------------------\n\n.layout-timeline {\n\tborder-top-color: #d2d1d0 !important;\n\tborder-top-width: 2px !important;\n\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\t&:after {\n\t\t\twidth: 2px;\n\t\t\tbackground: #d2d1d0;\n\t\t}\n\t}\n\t.media {\n\t\tmargin: 0 0 @spacing;\n\t\t.media-body {\n\t\t\tpadding: 10px 0 0;\n\t\t\tline-height: 17px;\n\t\t\t.author { font-size: 14px; }\n\t\t}\n\t}\n\t.glyphicons.pencil {\n\t\tposition: absolute;\n\t\ttop: @spacing;\n\t\tright: @spacing;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\ti:before {\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfont-size: 17px;\n\t\t\tcolor: #cccccc;\n\t\t}\n\t}\n\tul.timeline {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: @spacing @spacing @spacing @spacing*2;\n\t\t> li {\n\t\t\tposition: relative;\n\t\t\tpadding: 0 0 @spacing;\n\t\t\t.date {\n\t\t\t\twidth: 50px;\n\t\t\t\tpadding: 5px 0;\n\t\t\t\ttext-align: center;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: -70px;\n\t\t\t\ttop: 0;\n\t\t\t\tz-index: 2;\n\t\t\t\tstrong {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tline-height: 10px;\n\t\t\t\t\tpadding: 3px 0 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.type {\n\t\t\t\tposition: absolute;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tpadding: 0 35px 0 0;\n\t\t\t\ttop: 15px;\n\t\t\t\twidth: 100px;\n\t\t\t\ttext-align: right;\n\t\t\t\tleft: -195px;\n\t\t\t\tline-height: 24px;\n\t\t\t\tz-index: 2;\n\t\t\t\ti:before { left: auto; right: 0; color: #c6c6c5; }\n\t\t\t\t.time { position: absolute; top: 24px; right: 0; color: #c6c6c5; }\n\t\t\t\t&:after {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: -60px;\n\t\t\t\t\ttop: 12px;\n\t\t\t\t\twidth: 45px;\n\t\t\t\t\theight: 2px;\n\t\t\t\t\tbackground: #d2d1d0;\n\t\t\t\t}\n\t\t\t\t&:before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: -20px;\n\t\t\t\t\ttop: 9px;\n\t\t\t\t\twidth: 8px;\n\t\t\t\t\theight: 8px;\n\t\t\t\t\tbackground: #d2d1d0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.separator {\n\t\t\t\t.type { top: 60px; }\n\t\t\t}\n\t\t\t.alert-gray {\n\t\t\t\tbackground: #f8f8f8;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\t.rounded();\n\t\t\t\tborder: none;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\tp.glyphicons {\n\t\t\t\tpadding: 5px 0 5px 25px;\n\t\t\t\ti:before { color: #dfdfdf; font-size: 17px; top: 5px; left: 0; }\n\t\t\t}\n\t\t\t.widget-body-gray {\n\t\t\t\t.glyphicons i:before { color: @bodyText; }\n\t\t\t\ta { color: #000; text-decoration: underline; }\n\t\t\t\tstrong { font-weight: 400; color: #000; }\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\t.type { \n\t\t\t\t\tcolor: @primaryColor; \n\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t&:before, &:after {\n\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t&:before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbottom: 0;\n\t\t\t\t\tleft: -45px;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tz-index: 2;\n\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n.nav-timeline {\n\t> li {\n\t\tmargin: 0 0 5px;\n\t\t> a {\n\t\t\tbackground: #b3b3b3;\n\t\t\tborder: none;\n\t\t\tmargin: 0 !important;\n\t\t\tfont-weight: 600;\n\t\t\t&.glyphicons {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\ti:before { position: absolute; left: auto; right: 8px; top: 8px; color: #fff; }\n\t\t\t} \n\t\t}\n\t\t&.active {\n\t\t\t> a {\n\t\t\t\tbackground: @primaryColor;\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/tooltips.less",
    "content": "//\n// Tooltips\n// --------------------------------------------------\n\n// Tooltips\n// -------------------------\n\n.tooltip-inner { background: #272a2c; color: #bab9b9; }\n.tooltip.bottom .tooltip-arrow { border-bottom-color: #272a2c; }\n.tooltip.top .tooltip-arrow { border-top-color: #272a2c; }\n.tooltip.left .tooltip-arrow { border-left-color: #272a2c; }\n.tooltip.right .tooltip-arrow { border-right-color: #272a2c; }\n.tooltip.left { margin-left: -13px; }\n\n// Flot Charts Tooltips\n// -------------------------\n\n#flotTip { \n\twhite-space: nowrap; \n\tborder: 1px solid @primaryColor; \n\tpadding: 3px 8px; \n\tbackground: @primaryColor; \n\t.rounded(5px,5px,5px,5px); \n\t.bevelEmboss();\n\tposition: absolute;\n\tz-index: 100; \n\tcolor: #fff;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/variables.less",
    "content": "// Variables\n// -------------------------\n\n@primaryColor: #4a8bc2;\n@dangerColor: #bd362f;\n@successColor: #609450;\n@warningColor: #ab7a4b;\n@inverseColor: #45484d;\n@spacing: 15px;\n\n// General Layout\n// -------------------------\n\n@bodyBg: #f0f0f0;\n@bodyText: #7c7c7c;\n@bodyText2: #000;\n@containerBorder: #d8d8d8;\n@containerBg: #f0f0f0;\n@linkHover: #333333;\n@bodyTextShadow: 0 1px 0 #fff;\n\n// Top menus\n// -------------------------\n\n@topnavBorder1: #346d9d;\n@topnavBorder2: #619aca;\n@topnavBorder3: #296190;\n@navbarBg: @primaryColor;\n@navbarText: #ffffff;\n@navbarActiveBg: #346d9d;\n@navbarGlypsText: #538fc1;\n@navbarGlypsActiveBg: #579ad2;\n@navbarSearchBg: #afcae2;\n@navbarSearchText: #628db3;\n@navbarSecondaryBg: #275b87;\n\n// Sidebar Menu\n// -------------------------\n\n@menuBg: #1f2123;\n@menuAppbrand: #ffffff;\n@menuText: #4c4d4f;\n@menuBorder1: #161718;\n@menuBorder2: #2a2c2e;\n@menuActiveBg: #161718;\n@menuActiveText: #737474;\n\n// Content\n// -------------------------\n\n@contentGradient1: #fdfdfd;\n@contentGradient2: #f4f4f4;\n@contentBorder: #d8d8d8;\n@contentShadow1: #dbdbdb;\n@contentShadow2: #f6f6f6;\n@widgetBg: #ffffff;\n@widgetBgGray: #e5e5e5;\n@contentBg1: #fafafa;\n@contentBorder: #dbdbdb;\n@contentBorder2: #ebebeb;\n@subheadingText: lighten(@bodyText, 20%);\n\n// Widget specific\n// -------------------------\n\n@listActiveHoverBg: #f2f2f2;\n@listActiveHoverBoxShadow: 0 1px 0 0 #fff inset;\n@preBg1: #f8f8f8;\n@preBg2: #eeeeee;\n@wellBg: #fafafa;\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/less/widgets.less",
    "content": "//\n// Widgets\n// --------------------------------------------------\n\n// Filters Widget\n// -------------------------\n\n.filter-bar {\n\tbackground: @widgetBgGray;\n\tmargin: 0 auto @spacing;\n\tborder: 1px solid @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t.rounded(5px,5px,5px,5px);\n\t&.border-top-none { border-top: none; }\n\tline-height: 30px;\n\theight: 40px;\n\tpadding: 0 10px;\n\tdiv {\n\t\tdiv {\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\t&:not(.helper) {\n\t\t\t\tmargin: 0 15px 0 0;\n\t\t\t}\n\t\t\tinput { \n\t\t\t\tmargin: 3px 0 0;\n\t\t\t}\n\t\t\t&.input-append {\n\t\t\t\t.add-on {\n\t\t\t\t\tpadding: 1px 3px;\n\t\t\t\t\tmargin: 3px 0 0 -1px;\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\tcolor: #d8d9da;\n\t\t\t\t\tborder-color: #d8d9da;\n\t\t\t\t\ti:before { top: 4px; left: 4px; font-size: 14px; color: #d0d1d1; }\n\t\t\t\t}\n\t\t\t\tbutton.add-on { width: 24px; height: 24px; }\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\t&:last-child { margin: 0; }\n\t\t}\n\t\tpadding: 5px 0;\n\t\tdisplay: block;\n\t\t&:not(.helper) { float: left; }\n\t\tline-height: 30px;\n\t\t&.glyphicons {\n\t\t\tpadding: 0 0 0 35px;\n\t\t\ti:before {\n\t\t\t\ttop: 12px; left: 9px;\n\t\t\t\tfont-size: 17px;\n\t\t\t\tcolor: rgba(255,255,255,.8);\n\t\t\t}\n\t\t}\n\t\t&.clearfix {\n\t\t\tpadding: 0; clear: both; float: none; display: block; height: 0; margin: 0;\n\t\t}\n\t\t&.lbl {\n\t\t\tpadding: 0 10px 0 35px;\n\t\t\tbackground: @primaryColor; \n\t\t\theight: 40px;\n\t\t\tline-height: 40px;\n\t\t\tmargin-right: 10px;\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n\tform {\n\t\tmargin: 0;\n\t\tinput,select { margin: 0 5px 3px 0; padding: 1px 5px; color: #a7a7a7; }\n\t\tselect { padding: 1px; height: 23px; }\n\t\tlabel { float: left; margin: 0 5px; display: block; line-height: 30px; }\n\t}\n\t&.border-none { border: none; }\n\t&.dark {\n\t\tbackground: #64625f;\n\t\tcolor: #fff;\n\t\tdiv div.input-append .add-on { background: #42403e; color: #fff; border-color: #42403e; i:before { color: #767473; text-shadow: none; } }\n\t\tform {\n\t\t\tinput:focus { border-color: #42403e; }\n\t\t\tinput,select { border-color: #42403e; }\n\t\t}\n\t}\n}\n\n// Buttons widget\n// -------------------------\n\n.menubar {\n\theight: 30px;\n\tposition: relative;\n\toverflow: hidden;\n\tborder: 1px solid @contentBorder;\n\tbackground: @contentBg1;\n\tmargin: 0;\n\tfont-size: 9pt;\n\tul {\n\t\tmargin: 0;\n\t\tpadding: 0 5px;\n\t\tlist-style: none;\n\t\theight: 30px;\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tdisplay: block;\n\t\t\theight: 30px;\n\t\t\tline-height: 30px;\n\t\t\tpadding: 0 5px;\n\t\t\t&.divider {\n\t\t\t\tborder-left: 1px solid @contentBorder2;\n\t\t\t\twidth: 0px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 8px;\n\t\t\t}\n\t\t\ta {\n\t\t\t\tcolor: @bodyText;\n\t\t\t\tfont-weight: 700;\n\t\t\t\tfont-size: 9pt;\n\t\t\t}\n\t\t}\n\t}\n\t&.links {\n\t\tborder: none;\n\t\tbackground: none;\n\t\theight: 25px;\n\t\tpadding: 0 0 5px;\n\t\tul {\n\t\t\tpadding: 0;\n\t\t\theight: 25px;\n\t\t\tli {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\t&:first-child { padding-left: 0; } \n\t\t\t}\n\t\t}\n\t\t&.primary {\n\t\t\tul li a { color: @primaryColor; }\n\t\t}\n\t}\n}\n\n// Widgets\n// -------------------------\n\n.widget {\n\tbackground: @widgetBg;\n\tmargin: 0 auto @spacing;\n\tposition: relative;\n\tborder: 1px solid @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\t.tab-content { padding: 0; }\n\t.widget-head {\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\t.rounded(5px,5px,0,0);\n\t\ttext-shadow: 0 1px 0 @bodyTextShadow;\n\t\theight: 35px;\n\t\tline-height: 35px;\n\t\tposition: relative;\n\t\tpadding: 0 @spacing 0 0;\n\t\toverflow: hidden;\n\t\t&.progress {\n\t\t\t.rounded();\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\t> .glyphicons, ul .glyphicons {\n\t\t\theight: 30px;\n\t\t\twidth: 30px;\n\t\t\tpadding: 0;\n\t\t\ti:before {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tline-height: 23px;\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: rgba(255,255,255,.5);\n\t\t\t}\n\t\t}\n\t\t.heading { \n\t\t\tmargin: 0; \n\t\t\tcolor: @bodyText;\n\t\t\tfont-size: 14px;\n\t\t\theight: 35px;\n\t\t\tline-height: 35px;\n\t\t\tpadding: 0 @spacing;\n\t\t\tfloat: left;\n\t\t\t&.glyphicons {\n\t\t\t\twidth: auto;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 0 0 0 35px;\n\t\t\t\ti:before {\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\theight: 35px;\n\t\t\t\t\tline-height: 35px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\twidth: 35px;\n\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t}\n\t\t\t} \n\t\t}\n\t\ta { text-shadow: none; }\n\t\t.dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a {\n\t\t\tbackground-color: @primaryColor;\n\t\t\tbackground-image: -moz-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: -webkit-gradient(linear,0 0,0 100%,from(@primaryColor),to(#d24343));\n\t\t\tbackground-image: -webkit-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: -o-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: linear-gradient(to bottom,@primaryColor,#d24343);\n\t\t\tbackground-repeat: repeat-x;\n\t\t\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c',endColorstr='#ffd24343',GradientType=0);\n\t\t}\n\t}\n\t.details { font-size: 8pt; color: @bodyText; }\n\t.widget-body {\n\t\tform { margin: 0; }\n\t\tpadding: @spacing;\n\t\t> pre:last-child, > p:last-child { margin: 0; }\n\t\t&.list {\n\t\t\t.count { font-size: 15pt; font-weight: 400; }\n\t\t\tcolor: @bodyText;\n\t\t\tpadding: 0;\n\t\t\tul {\n\t\t\t\tmargin: 0;\n\t\t\t\tlist-style: none;\n\t\t\t\tli {\n\t\t\t\t\t.badge { position: absolute; right: 8px; top: 10px; } \n\t\t\t\t\tpadding: 0 10px; \n\t\t\t\t\theight: 39px; \n\t\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tline-height: 39px; \n\t\t\t\t\ttext-align: left; \n\t\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t\t\tclear: both;\n\t\t\t\t\t&:first-child { border-top: none; }\n\t\t\t\t\t&:last-child { border-bottom: none; } \n\t\t\t\t\t.count { float: right; color: @bodyText2; } \n\t\t\t\t\t.sparkline { position: relative; top: 5px; margin-left: 5px; }\n\t\t\t\t\ta { color: @bodyText2; font-weight: bold; }\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.products {\n\t\t\t\tli {\n\t\t\t\t\theight: 60px;\n\t\t\t\t\tline-height: 60px;\n\t\t\t\t}\n\t\t\t\t.img {\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\twidth: 48px;\n\t\t\t\t\theight: 44px;\n\t\t\t\t\tline-height: 44px;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tbackground: #272729;\n\t\t\t\t\tmargin: 8px 8px 0 0;\n\t\t\t\t\t.rounded(3px,3px,3px,3px);\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tfont-size: 10pt;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t}\n\t\t\t\t.title {\n\t\t\t\t\tline-height: normal;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tpadding: 13px 0 0;\n\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\tstrong {\n\t\t\t\t\t\tfont-family: \"Open Sans\", sans-serif;\n\t\t\t\t\t\ttext-transform: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.fluid {\n\t\t\t\tul li { height: auto; line-height: normal; padding: 10px; }\n\t\t\t}\n\t\t\t&.list-2 {\n\t\t\t\tul li {\n\t\t\t\t\tborder-bottom: 1px solid #d8d9da;\n\t\t\t\t\tborder-top: none;\n\t\t\t\t\tbackground: #f8f8f8;\n\t\t\t\t\t&.active {\n\t\t\t\t\t\tborder-color: #dddddd; \n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\ti:before { font-weight: normal; background: @primaryColor; color: #fff; text-shadow: none; }\n\t\t\t\t\t\ta { color: @primaryColor; } \n\t\t\t\t\t}\n\t\t\t\t\t&:last-child { border-bottom: none; }\n\t\t\t\t\ta {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tcolor: #222;\n\t\t\t\t\t\tpadding: 0 0 0 30px;\n\t\t\t\t\t\ti:before { color: #555; width: 20px; height: 17px; font-size: 14px; border: 1px solid #ccc; background: #dddddd; top: 9px; left: 0; text-align: center; vertical-align: middle; padding-top: 3px; text-shadow: 0 1px 0 #fff; } \n\t\t\t\t\t}\n\t\t\t\t\t&.hasSubmenu {\n\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t> a {  }\n\t\t\t\t\t\tul {\n\t\t\t\t\t\t\tpadding: 0 0 10px;\n\t\t\t\t\t\t\tli {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\t\tline-height: 20px;\n\t\t\t\t\t\t\t\ta {\n\t\t\t\t\t\t\t\t\tcolor: #333;\n\t\t\t\t\t\t\t\t\tpadding: 0 0 0 20px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t&.active a { font-weight: bold; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.widget-footer {\n\t\tbackground: @contentBg1;\n\t\theight: 25px;\n\t\tline-height: 25px;\n\t\tborder-top: 1px solid @contentBorder2;\n\t\t.glyphicons {\n\t\t\twidth: 25px; height: 25px; line-height: 25px; padding: 0; float: right;\n\t\t\ti:before {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: #c3c3c3;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t}\n\t\t\t&:hover i:before {\n\t\t\t\tcolor: rgba(0,0,0,.5);\n\t\t\t}\n\t\t}\n\t}\n\t\n    &.margin-bottom-none { margin-bottom: 0; }\n\t&.widget-gray {\n\t\tbackground: #f5f5f5;\n\t\t.widget-head {\n\t\t\tbackground: #e9e9e9;\n\t\t\tborder-color: #d1d2d3;\n\t\t\t.bevelEmboss(0.6, 0);\n\t\t\t.heading {\n\t\t\t\tcolor: #555555; text-shadow: 0 1px 0 #fff;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\ti:before { background: none; color: #555; border-color: rgba(0,0,0,.1); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-2 {\n\t\t&:before, &:after { display: none; }\n\t\t.widget-head {\n\t\t\tbackground: #e2e2e4;\n\t\t\t.bevelEmboss(0.6, 0);\n\t\t\theight: 36px;\n\t\t\tline-height: 36px;\n\t\t\tborder-color: #d1d2d3;\n\t\t\t.heading {\n\t\t\t\tline-height: 36px;\n\t\t\t\tcolor: #555555;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tfont-size: 12pt;\n\t\t\t\ti:before {\n\t\t\t\t\tcolor: #555555;\n\t\t\t\t\tbackground: none;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t\ttop: 2px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tborder: 1px solid #d1d2d3;\n\t\t\tborder-top: 0;\n\t\t\tbackground: #f5f5f5;\n\t\t}\n\t\t&.primary {\n\t\t\t.widget-head { \n\t\t\t\tbackground: @primaryColor;\n\t\t\t\tborder-color: @primaryColor;\n\t\t\t\t.bevelEmboss(0.6,0.1);\n\t\t\t\t.heading { color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.5); i:before { color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.5); } } \n\t\t\t}\n\t\t}\n\t}\n\t&.widget-3 {\n\t\t&:before, &:after { display: none; }\n\t\t.widget-head {\n\t\t\theight: 36px;\n\t\t\tline-height: 36px;\n\t\t\t.heading {\n\t\t\t\tdisplay: block;\n\t\t\t\ttext-align: center;\n\t\t\t\tfloat: none;\n\t\t\t\tline-height: 36px;\n\t\t\t\theight: 36px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-size: 12pt;\n\t\t\t\ti:before {\n\t\t\t\t\tbackground: none;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t\ttop: 5px;\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tcolor: #45484d;\n\t\t\t\t}\n\t\t\t\t.glyphicons {\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\twidth: 35px;\n\t\t\t\t\theight: 36px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t&.large {\n\t\t\t\tfont-size: 26pt;\n\t\t\t\tfont-weight: bold;\n\t\t\t\ttext-align: center;\n\t\t\t\tpadding: 25px 0;\n\t\t\t\tvertical-align: middle;\n\t\t\t\tline-height: normal;\n\t\t\t\t&.cancellations {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tline-height: 20px;\n\t\t\t\t\t\ttext-align: left;\n\t\t\t\t\t\tfont-size: 17pt;\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\t\tspan { display: block; }\n\t\t\t\t\t\tspan:first-child { color: @primaryColor; text-transform: uppercase; font-size: 13pt; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dashboard {\n\t\t\t\t\tpadding: 15px 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-footer {\n\t\t\tbackground: @contentBg1;\n\t\t\tborder-top: none;\n\t\t\ta { \n\t\t\t\tfloat: none; color: #dddddd; width: auto; padding: 0 10px 0 30px; border-right: 1px solid @contentBorder; text-decoration: none; i:before { color: #dddddd; left: 5px; }\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t} \n\t\t\t}\n\t\t\t&.align-center { text-align: center; a:first-child { border-left: 1px solid @contentBorder; } }\n\t\t\t&.align-right { text-align: right; a:first-child { border-left: 1px solid @contentBorder; } a:last-child { border-right: none; } }\n\t\t}\n\t}\n\t&.widget-4 {\n\t\tborder: none;\n\t\tbackground: none;\n\t\t.widget-head {\n\t\t\tbackground: none;\n\t\t\tpadding: 10px;\n\t\t\tborder: none;\n\t\t\t.heading {\n\t\t\t\tcolor: #544f49;\n\t\t\t\ttext-shadow: none;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tpadding: 0 10px 10px;\n\t\t\tborder: none;\n\t\t\t&.list {\n\t\t\t\tul li { padding: 0; }\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-heading-simple {\n\t\tborder: none;\n\t\tbackground: none;\n\t\t> .widget-head {\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tpadding: 0 0 5px;\n\t\t\theight: 25px;\n\t\t\tline-height: 25px;\n\t\t\t.heading { \n\t\t\t\tpadding: 0;\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\tpadding: 0 0 0 25px;\n\t\t\t\t\ti:before { \n\t\t\t\t\t\ttext-align: left; \n\t\t\t\t\t\twidth: 25px;\n\t\t\t\t\t\theight: 25px;\n\t\t\t\t\t\tline-height: 25px; \n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t}\n\t}\n\t&.widget-body-simple {\n\t\t#reset .boxShadow();\n\t\t> .widget-body {\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t&.widget-body-white {\n\t\t> .widget-body { background: @widgetBg; }\n\t}\n\t&.widget-body-gray {\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t> .widget-body { background: @widgetBgGray; }\n\t}\n\t&.widget-body-primary {\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t> .widget-body { \n\t\t\tbackground: @primaryColor; \n\t\t\t* { color: #fff; text-shadow: none; } \n\t\t}\n\t}\n\t&.widget-body-multiple {\n\t\t#reset .boxShadow();\n\t\t> .widget-body {\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\tmargin-bottom: @spacing/2;\n\t\t\t&:last-of-type { margin-bottom: 0; }\n\t\t}\n\t\t&.widget-body-gray {\n\t\t\t> .widget-body {\n\t\t\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2; \n\t\t\t}\n\t\t}\n\t}\n}\n\n// Dashboard widgets\n// -------------------------\n\n.widget-offers { \n\t.price { \n\t\tfont-size: 14px;\n\t\tstrong { color: #000; } \n\t}\n\t.thumb { padding: 0; }\n\th5 { \n\t\tborder-bottom: 1px solid #cecece; \n\t\tfont-weight: 600; \n\t\ttext-shadow: @bodyTextShadow; \n\t\tbox-shadow: 0 1px 0 0 #eeeeee;\n\t\tpadding: 0 0 5px;\n\t}\n}\n\n// dashboard recent activity widget\n// -------------------------\n\n.widget-activity {\n\t> .widget-body { padding: 0 @spacing; }\n\tul.list {\n\t\tlist-style: none;\n\t\tmargin: 0 -@spacing;\n\t\tpadding: 0;\n\t\tli {\n\t\t\theight: 39px;\n\t\t\tline-height: 39px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tborder-bottom: 1px solid @contentBorder2;\n\t\t\tpadding: 0 @spacing;\n\t\t\t.transition(background .5s ease);\n\t\t\t&:hover, &.highlight {\n\t\t\t\tbackground: @listActiveHoverBg;\n\t\t\t\tbox-shadow: @listActiveHoverBoxShadow;\n\t\t\t\t-moz-box-shadow: @listActiveHoverBoxShadow;\n\t\t\t\t-webkit-box-shadow: @listActiveHoverBoxShadow;\n\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t\tcursor: pointer;\n\t\t\t\t&:after {\n\t\t\t\t\tcontent: \"\\e212\";\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: @spacing;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tline-height: 39px;\n\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\tfont-size: 24px/1em;\n\t\t\t\t\tcolor: #d5d5d5;\n\t\t\t\t}\n\t\t\t\t.activity-icon i:before { color: #505050; }\n\t\t\t}\n\t\t\t> span { \n\t\t\t\tdisplay: block; \n\t\t\t\theight: 39px; line-height: 39px; float: left; position: relative; overflow: hidden;\n\t\t\t\t&.ellipsis {\n\t\t\t\t\twhite-space:nowrap;\n\t\t    \t\ttext-overflow:ellipsis; \n\t\t    \t\tmax-width:75%;\n\t\t\t\t}\n\t\t\t\t&.date { width: 40px; text-align: center; }\n\t\t\t}\n\t\t\t.activity-icon {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 39px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 10px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttext-align: center;\n\t\t\t\ti {\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: relative; \n\t\t\t\t}\n\t\t\t\ti:before { position: relative; top: 0; left: 0; color: #cbcbcb; font-size: 18px; line-height: 39px; }\n\t\t\t}\n\t\t\t&.double {\n\t\t\t\theight: 45px; \n\t\t\t\tline-height: 45px;\n\t\t\t\t> span {\n\t\t\t\t\theight: 45px; \n\t\t\t\t\tline-height: 45px; \n\t\t\t\t\t&.ellipsis {\n\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\tpadding: 7px 0 0;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\t}\n\t\t\t\t\t.meta { \n\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\tfont-weight: 400;\n\t\t\t\t\t\tcolor: #b7b7b7;\n\t\t\t\t\t\ti:before { top: 1px; color: #b7b7b7; }\n\t\t\t\t\t\tspan { font-style: italic; } \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.activity-icon { margin-left: 0; height: 45px; i { height: 45px; &:before { line-height: 45px; } } }\n\t\t\t\t&:hover, &.highlight {\n\t\t\t\t\t&:after {\n\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:last-child { border: none; }\n\t\t}\n\t}\n\t.view-all { position: absolute; top: @spacing+3; right: @spacing; }\n}\n\n.widget-messages {\n\tul {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tli {\n\t\t\tborder: 1px solid #e5e5e5;\n\t\t\tpadding: 5px;\n\t\t\tmargin: 0 0 10px;\n\t\t\tposition: relative;\n\t\t\t.meta span { color: #a3a3a3; font-size: 12px; }\n\t\t\t.glyphicons.single.bin {\n\t\t\t\tposition: relative;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0; width: 15px; height: 20px; top: 5px;\n\t\t\t\ti {\n\t\t\t\t\tdisplay: block; width: 15px; height: 20px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\t&:before { color: #cccccc; position: relative; line-height: 20px; left: auto; top: auto;  } \n\t\t\t\t} \n\t\t\t}\n\t\t\t&:last-child { margin: 0; }\n\t\t}\n\t}\n}\n\n// Widget Timeline\n// -------------------------\n\n.widget-timeline {\n\t.widget-body { \n\t\tpadding: 15px;\n\t\tposition: relative; \n\t\t&:before { display: block; width: 1px; background: @contentBorder; top: 15px; bottom: 30px; left: 75px; content: \"\"; position: absolute; }\n\t}\n\t&:not(.widget) {\n\t\tposition: relative;\n\t\t&:before { display: block; width: 1px; background: @contentBorder; top: 15px; bottom: 30px; left: 75px; content: \"\"; position: absolute; }\n\t}\n\t.view-all { margin-left: 35px; }\n\tul.list-timeline {\n\t\tlist-style: none;\n\t\tmargin: 0 0 15px;\n\t\tpadding: 0;\n\t\tli {\n\t\t\t&:last-child { margin: 0; }\n\t\t\tdisplay: block;\n\t\t\theight: 30px;\n\t\t\tline-height: 30px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tbackground: @widgetBg;\n\t\t\tborder: 1px solid @contentBorder2;\n\t\t\tmargin: 0 0 10px;\n\t\t\tpadding: 0 10px;\n\t\t\tspan { \n\t\t\t\tdisplay: block; \n\t\t\t\theight: 30px; line-height: 30px; float: left; position: relative; overflow: hidden;\n\t\t\t\t&.ellipsis {\n\t\t\t\t\twhite-space:nowrap;\n\t\t    \t\ttext-overflow:ellipsis; \n\t\t    \t\tmax-width:75%;\n\t\t\t\t}\n\t\t\t\t&.date { width: 40px; text-align: center; }\n\t\t\t}\n\t\t\t.activity-icon {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 10px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttext-align: center;\n\t\t\t\ti {\n\t\t\t\t\theight: 30px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\t.rounded(2px,2px,2px,2px);\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tbackground: #64625f; \n\t\t\t\t}\n\t\t\t\ti:before { position: relative; top: 0; left: 0; color: #fff; font-size: 17px; line-height: 30px; }\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Chat widgets\n// -------------------------\n\n.widget-chat {\n\t.media {\n\t\tposition: relative;\n\t\tmin-height: 80px;\n\t\t.media-object {\n\t\t\tposition: relative;\n\t\t}\n\t\t.thumb { padding: 0; }\n\t\tsmall { \n\t\t\tcolor: #cccccc;\n\t\t\t&:before, &:after { content: \"\"; }\n\t\t\t&.author { position: absolute; left: 0; width: 50px; top: 60px; text-align: center; display: block; }\n\t\t\t&.date { display: block; border-bottom: 1px solid @contentBorder; margin: 0 0 5px; padding: 0 0 3px; text-align: right; width: 100%; } \n\t\t}\n\t\t&.right { \n\t\t\tsmall {\n\t\t\t\t&.author { left: auto; right: 0; }\n\t\t\t\t&.date { text-align: left; }\n\t\t\t}\t\n\t\t}\n\t\t.media-body {\n\t\t\t.rounded(2px, 2px, 2px, 2px);\n\t\t\tpadding: 0;\n\t\t\tblockquote {\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\tp:last-child { margin: 0; }\n\t\t\t}\n\t\t}\n\t\t&:last-of-type { padding-bottom: 10px; }\n\t}\n\t.chat-controls {\n\t\tposition: absolute;\n\t\theight: 30px;\n\t\tpadding: @spacing 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tborder: 1px solid @contentBorder;\n\t\tborder-top: none;\n\t\t.rounded(0, 0, 5px, 5px);\n\t\tbackground: #fff;\n\t}\n\t.widget-body { padding-bottom: 0; }\n\t&.widget-heading-simple > .widget-body { .rounded(5px, 5px, 0, 0); }\n\tpadding-bottom: 60px !important;\n}\n\n// Stats widgets\n// -------------------------\n\n.widget-stats {\n\tbackground: @widgetBg;\n\tpadding: @spacing 0;\n\tmargin: 0;\n\theight: 80px;\n\tposition: relative;\n\ttext-align: center;\n\tdisplay: block;\n\tborder: 1px solid @contentBorder;\n\ttext-shadow: @bodyTextShadow;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\t.count {\n\t\tposition: absolute; \n\t\ttop: 0; \n\t\tleft: 0; \n\t\tfont-size: 13px; \n\t\t.rounded();\n\t}\n\t.label { font-weight: 600; padding: 4px; box-shadow: 0 0 0 1px rgba(0,0,0,.2) inset; }\n\tspan { display: inline-block; }\n\t.txt { padding: 0; color: #cecece; }\n\t.glyphicons {\n\t\tpadding: 0;\n\t\tdisplay: block;\n\t\ti { display: block; }\n\t\ti:before { color: #cecece; font-size: 30px; top: 0; left: 0; position: relative; }\n\t}\n\t&, &:hover, &:focus { text-decoration: none; }\n\t&:hover { background: @contentGradient1; }\n\t&.small {\n\t\tpadding: 5px 0;\n\t\t.glyphicons {\n\t\t\tpadding: 12px 0 0;\n\t\t\ti:before { font-size: 25px; }\n\t\t}\n\t}\n\t&.widget-stats-1 {\n\t\tpadding: 8px 0;\n\t\theight: 94px;\n\t\t.glyphicons {\n\t\t\tdisplay: block;\n\t\t\theight: 35px;\n\t\t\tline-height: 35px;\n\t\t\tpadding-bottom: 5px;\n\t\t\t.txt { display: inline-block; padding: 0 5px; line-height: 35px; }\n\t\t\ti {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\t&:before { top: 5px; font-size: 25px; }\n\t\t\t}\n\t\t}\n\t\t.count { position: relative; top: auto; right: auto; font-size: 60px; display: inline-block; font-weight: 700; padding: 0; line-height: 40px; }\n\t}\n\t&.widget-stats-2 {\n\t\t.txt { font-size: 14px; }\n\t\t.count { position: relative; top: auto; right: auto; font-size: 60px; font-weight: 700; padding: 0 0 3px; display: block; line-height: 55px; }\n\t}\n\t&.widget-stats-gray {\n\t\t&.widget-stats-1, &.widget-stats-2 {\n\t\t\t.txt { color: #000; }\n\t\t}\n\t}\n\t&.widget-stats-easy-pie {\n\t\t.easy-pie { display: block; width: 50px; margin: -5px auto 0; }\n\t\t&.txt-single {\n\t\t\t.easy-pie { margin: 0 auto; }\n\t\t\t.txt { padding: 7px 0 0; }\n\t\t}\n\t}\n\t&.widget-stats-3 {\n\t\t.sparkline { display: inline-block; }\n\t\t.txt {\n\t\t\ttext-align: left;\n\t\t\tvertical-align: middle;\n\t\t\tpadding: 13px 0 0 10px;\n\t\t}\n\t\t.count { padding: 0 0 5px; display: block; }\n\t}\n\t\n\t&.widget-stats-gray {\n\t\tbackground: @widgetBgGray;\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t}\n}\n\n// Generic Widget\n// -------------------------\n\n.box-generic { \n\tborder: 1px solid @contentBorder;\n\tpadding: @spacing; \n\tposition: relative; \n\tbackground: @widgetBg;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\tmargin: 0 0 @spacing;\n}\n\n// Ribbons\n// -------------------------\n\n.ribbon-wrapper {\n\twidth: 85px;\n\theight: 88px;\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: -3px;\n\tright: -3px;\n\t.ribbon {\n\t\tdisplay: block;\n\t\tfont-family: Arial, sans-serif;\n\t\tfont-size: 15px;\n\t\tfont-weight: 600;\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\t-webkit-transform: rotate(45deg);\n\t\t-moz-transform: rotate(45deg);\n\t\t-ms-transform: rotate(45deg);\n\t\t-o-transform: rotate(45deg);\n\t\tposition: relative;\n\t\tpadding: 7px 0;\n\t\tleft: -5px;\n\t\ttop: 15px;\n\t\twidth: 120px;\n\t\tline-height: 20px;\n\t\tbackground-color: #797979;\n\t\t-webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\t-moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\tbox-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\t&:before, &:after { \n\t\t\tcontent:  \"\";\n\t\t\tborder-top: 2px solid #797979;\n\t\t\tborder-left: 2px solid transparent;\n\t\t\tborder-right: 2px solid transparent;\n\t\t\tposition: absolute;\n\t\t\tbottom: -2px;\n\t\t}\n\t\t&:before { left: 0; bottom: -1px; }\n\t\t&:after { right: 0; }\n\t\t&.primary { background-color: @primaryColor; }\n\t\t&.success { background-color: @successColor; }\n\t\t&.warning { background-color: @warningColor; }\n\t\t&.danger { background-color: @dangerColor; }\n\t\t&.default { \n\t\t\tbackground-color: #e5e5e5;\n\t\t\tcolor: #595959;\n\t\t\t&:before, &:after { \n\t\t\t\tborder-top: 2px solid #ccc;\n\t\t\t} \n\t\t}\n\t}\n\t&.small {\n\t\twidth: 65px;\n\t\theight: 68px;\n\t\t.ribbon { \n\t\t\twidth: 90px; padding: 0; font-size: 13px;\n\t\t\t&:before {\n\t\t\t\tbottom: -2px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Breadcrumb\n// -------------------------\n\n.breadcrumb {\n\theight: 38px;\n\tline-height: 39px;\n\tpadding: 0 @spacing;\n\t.rounded();\n\tmargin: 0;\n\tbackground: none;\n\tborder-bottom: 1px solid @contentBorder;\n\tbox-shadow: 0 1px 0 0 #fff;\n\t-moz-box-shadow: 0 1px 0 0 #fff;\n\t-webkit-box-shadow: 0 1px 0 0 #fff;\n\tcolor: #ababab;\n\tfont-size: 12px;\n\tposition: relative;\n\toverflow: hidden;\n\tli { \n\t\ttext-shadow: @bodyTextShadow; \n\t\tline-height: 38px;\n\t\theight: 38px;\n\t\ta { \n\t\t\tcolor: #ababab; \n\t\t\tfont-weight: 600; \n\t\t\t&.glyphicons {\n\t\t\t\tcolor: #ababab;\n\t\t\t\tpadding: 0 0 0 25px;\n\t\t\t\ti:before {\n\t\t\t\t\tcolor: #ababab;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\ttop: 12px;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.divider { \n\t\t\tmargin: 0 5px 0 7px;\n\t\t\twidth: 0;\n\t\t\tborder-left: 1px solid @contentBorder; \n\t\t\tborder-right: 1px solid #fff;\n\t\t\tvertical-align: top;\n\t\t}\n\t}\n}\n\n// Wells\n// -------------------------\n\n.well {\n\tz-index: 1;\n\tposition: relative;\n\tpadding: 15px;\n\tmargin: 0 0 @spacing;\n\t&.small { padding: 10px; }\n\t.popover { \n\t\tz-index: 2;\n\t\tfont-size: 13px; \n\t}\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\tbackground: @wellBg;\n\tborder-color: @contentBorder;\n\t&.dark { background: rgba(0,0,0,.2); }\n\t&.white { background: #fff; }\n}\n\n// Collapsible Widgets\n// -------------------------\n\n[data-toggle=\"collapse-widget\"] {\n\t.collapse-toggle {\n\t\tposition: relative;\n\t\theight: 35px;\n\t\twidth: 30px;\n\t\tdisplay: block;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\t&:before {\n\t\t\tfont-family: \"Glyphicons\";\n\t\t\tfont-size: 17px;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\theight: 35px;\n\t\t\tline-height: 34px;\n\t\t\ttext-align: center;\n\t\t\tcolor: #cccccc;\n\t\t\tcontent: \"\\e192\";\n\t\t}\n\t\tmargin-right: -10px;\n\t}\n\t&.widget-heading-simple {\n\t\t.collapse-toggle { \n\t\t\tmargin-right: 0;\n\t\t\theight: 25px;\n\t\t\t&:before {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t} \n\t\t}\n\t}\n\ta ~ .collapse-toggle { margin-right: 0; }\n\t&[data-collapse-closed=\"false\"] {\n\t\t.collapse-toggle:before { content: \"\\e192\"; }\n\t}\n\t&[data-collapse-closed=\"true\"] {\n\t\t.collapse-toggle:before { content: \"\\e191\"; }\n\t\t.widget-head {\n\t\t\tborder-bottom: none;\n\t\t\tbox-shadow: none;\n\t\t\t-moz-box-shadow: none;\n\t\t\t-webkit-box-shadow: none;\n\t\t}\n\t}\n\t.collapse:not(.list) {\n\t\t.transition(padding .10s ease);\n\t\tpadding: 0px;\n\t\t&.in {\n\t\t\tpadding: @spacing;\n\t\t}\n\t}\n}\n\n// Glyphicons\n// -------------------------\n\n.glyphicons {\n\t&.standard {\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tpadding: 0;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\theight: 24px;\n\t\t\t&:before { color: #64625f; position: relative; top: auto; left: auto; }\n\t\t}\n\t\t&:not(.disabled):hover { i:before { color: #797979; } }\n\t\t&.btn { \n\t\t\tpadding: 4px;\n\t\t\t&.btn-small { padding: 2px 5px; width: auto; height: auto; i:before { top: auto; line-height: 22px; } } \n\t\t}\n\t}\n\t&.primary { i:before { color: @primaryColor; } }\n\t&.single {\n\t\tcolor: @primaryColor;\n\t\tpadding: 0 0 0 20px;\n\t\ti:before { font-size: 13px; top: 4px; color: @primaryColor; }\n\t\t+ .single { margin-left: 8px; }\n\t\t&.regular {\n\t\t\tcolor: @bodyText; \n\t\t\ti:before { \n\t\t\t\tcolor: @bodyText; \n\t\t\t} \n\t\t}\n\t}\n\t&.text-error { color: @primaryColor; i:before { color: @primaryColor; } }\n\t&.text-info { color: #5d92b3; i:before { color: #5d92b3; } }\n\t&.text-success { color: #719d46; i:before { color: #719d46; } }\n\t&.btn-action {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tpadding: 0;\n\t\t.rounded(5px,5px,5px,5px);\n\t\tborder-width: 1px;\n\t\tborder-style: solid;\n\t\tvertical-align: middle;\n\t\ti:before {\n\t\t\tfont-size: 14px;\n\t\t\ttop: 5px;\n\t\t\tleft: 5px;\n\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\tcolor: #fff !important;\n\t\t}\n\t\t&.btn-default i:before { color: #7c7c7c !important; }\n\t\t&.single {\n\t\t\tbox-shadow: none;\n\t\t\t-webkit-box-shadow: none;\n\t\t\t-moz-box-shadow: none;\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\t&.btn-icon {\n\t\ttext-align: left;\n\t\tpadding: 5px 7px 5px 40px;\n\t\ti {\n\t\t\tfloat: left;\n\t\t\t&:before { font-size: 15px; top: 0; left: 0; width: 33px; height: 23px; .rounded(3px, 0px, 0px, 3px); vertical-align: middle; padding: 7px 0 0; text-align: center; }\n\t\t}\n\t\t&.right {\n\t\t\ttext-align: left;\n\t\t\tpadding: 5px 0 5px 7px;\n\t\t\ti:before { .rounded(0, 3px, 3px, 0); right: 0; left: auto; text-align: center; }\n\t\t}\n\t}\n\t&.btn-large {\n\t\tpadding: 10px 10px 10px 40px; font-weight: 600;\n\t\ti:before { top: 12px; left: 12px; font-size: 17px; } \n\t\t&.btn-icon {\n\t\t\ti:before { top: 0; left: 0; height: 28px; padding: 12px 0 0; }\n\t\t}\n\t}\n\t&.btn-small { \n\t\tpadding: 2px 10px 2px 35px;\n\t\ti:before { padding: 5px 0 0; width: 28px; height: 19px; font-size: 14px; } \n\t}\n\t&.btn-mini { \n\t\tpadding: 1px 6px 1px 33px;\n\t\ti:before { padding: 5px 0 0; width: 26px; height: 17px; font-size: 13px; } \n\t}\n\t&.orange i:before {\n\t\tcolor: #EDB459;\n\t}\n\t&.btn-default i:before { color: #9e9e9e; text-shadow: none; }\n}\n\nh4.glyphicons {\n\tpadding: 0 0 0 35px;\n\tdisplay: block;\n\ti:before { font-size: 22px; font-weight: normal; color: #575655; }\n}\nh3.glyphicons,\nh2.glyphicons {\n\tpadding: 0 0 0 45px;\n\tdisplay: block;\n\ti:before { font-size: 27px; font-weight: normal; left: 2px; top: 3px; color: #575655; }\n\t&.cogwheels i:before { left: 5px; }\n}\n\n// Finances Summary\n// -------------------------\n\n.finances_summary {\n\t.well \n\t{\n\t\tfont-size: 16px;\n\t\ttext-align: center;\n\t\tstrong {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 22pt;\n\t\t\tcolor: #45494c;\n\t\t\tline-height: normal;\n\t\t}\n\t}\n\t.glyphicons.standard i:before { color: #cccccc; }\n}\n\n// Icons within content\n// -------------------------\n\ndiv.glyphicons {\n\tpadding: 0 0 0 35px;\n\ti:before { color: #cccccc; }\n\t&.glyphicon-large {\n\t\tpadding: 0 0 0 75px;\n\t\ti:before { font-size: 50px; left: 0; }\n\t\t&.group-column {\n\t\t\tpadding: 0 0 0 85px;\n\t\t\ti:before { font-size: 45px; left: 12px; }\n\t\t}\n\t}\n\t&.glyphicon-top {\n\t\tpadding: 0;\n\t\ttext-align: center;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\t&:before {\n\t\t\t\tposition: relative;\n\t\t\t\tleft: auto;\n\t\t\t\ttop: auto;\n\t\t\t}\n\t\t}\n\t\t&.glyphicon-xlarge {\n\t\t\ti { padding: 0 0 10px; }\n\t\t\ti:before { font-size: 70px; }\n\t\t}\n\t}\n\t&.glyphicon-primary {\n\t\ti:before { color: @primaryColor; }\n\t}\n}\n.widget-body-primary {\n\tdiv.glyphicons i:before { color: #fff; }\n}\n\n// Large social icons\n// -------------------------\n\n.social-large {\n\theight: 97px;\n\ta {\n\t\tdisplay: block;\n\t\theight: 77px;\n\t\tfloat: left;\n\t\tpadding: 10px 19px;\n\t\tcolor: #d5d5d5;\n\t\tbackground: #ffffff;\n\t\tfont-weight: bold;\n\t\ttext-align: center;\n\t\tborder-right: 1px solid #e5e5e5;\n\t\ttext-decoration: none;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\tpadding: 0 0 8px;\n\t\t\t&:before { display: block; text-align: center; top: auto; left: auto; position: relative; font-size: 50px; color: #d5d5d5; }\n\t\t}\n\t\t&.active, &:hover {\n\t\t\tcolor: #fff;\n\t\t\tbackground: @primaryColor;\n\t\t\ti:before { color: #fff; }\n\t\t}\n\t\t&:last-child { border: none; }\n\t}\n\t&.social-large-2 {\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tfont-weight: 400;\n\t\t\tfloat: none;\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tcolor: #444444;\n\t\t\ti:before { color: #444444; }\n\t\t\t&.active, &:hover {\n\t\t\t\tcolor: @primaryColor;\n\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t} \n\t\t}\n\t}\n}\n\n// Pinterest style widget\n// ---------------------------\n.widget-pinterest {\n\t.widget-body {\n\t\tpadding: 0;\n\t\t.description {\n\t\t    -webkit-box-sizing:border-box;\n\t\t    -moz-box-sizing:border-box;\n\t\t    box-sizing:border-box;\n\t\t    line-height:16px;\n\t\t    padding: @spacing;\n\t\t}\n\t\t.thumb { \n\t\t\tpadding: 0; \n\t\t\tborder: none; \n\t\t\timg { \n\t\t\t\twidth:100%; \n\t\t\t\t.rounded(5px, 5px, 0, 0); \n\t\t\t} \n\t\t}\n\t}\n}\n\n// Twitter\n// ---------------------------\n\n.jstwitter {\n    position: relative;\n\t.item { overflow:hidden; }\n\t.tweet-wrapper {\n\t    -webkit-box-sizing:border-box;\n\t    -moz-box-sizing:border-box;\n\t    box-sizing:border-box;\n\t    line-height:16px;\n\t    padding: @spacing;\n\t}\n\t.widget-body { padding: 0; }\n\t.item a { text-decoration: none; }\n\t.item img { width:100%; .rounded(5px, 5px, 0, 0); }\n\t.item .thumb { padding: 0; border: none; }\n\t.item a:hover { text-decoration: underline; }\n\t.item .text { display:block; }\n\t.item .time,\n\t.item .user {\n\t    font-style: italic;\n\t    color: #999;\n\t}\n\t.item.active { display: block; }\n}\n\n// Star ratings\n// ---------------------------\n\n.rating {\n\tunicode-bidi: bidi-override;\n\tdirection: rtl;\n\t&.text-large { margin: 7px 0; }\n\tspan.star{\n\t\tfont-family:FontAwesome;\n\t\tfont-weight:normal;\n\t\tfont-style:normal;\n\t\tdisplay:inline-block;\n\t}\n\tspan.star:before { content:\"\\f006\"; padding-right:5px; }\n\t&:not(.read-only) \n\t{\n\t\tspan.star:hover { cursor:pointer; }\n\t\tspan.star:hover:before,\n\t\tspan.star:hover ~ span.star:before { content:\"\\f005\"; color: @primaryColor; }\n\t}\n\tspan.star.active:before,\n\tspan.star.active ~ span.star:before { content:\"\\f005\"; color: @primaryColor; }\n}\n\n// Hero unit\n// ---------------------------\n\n.hero-unit {\n\tbackground: none;\n\tborder: none;\n\t#reset .rounded();\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/calendar.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * calendar.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* initialize the external events\n\t-----------------------------------------------------------------*/\n\n\t$('#external-events ul li').each(function() \n\t{\n\t\n\t\t// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)\n\t\t// it doesn't need to have a start or end\n\t\tvar eventObject = {\n\t\t\ttitle: $.trim($(this).text()) // use the element's text as the event title\n\t\t};\n\t\t\n\t\t// store the Event Object in the DOM element so we can get to it later\n\t\t$(this).data('eventObject', eventObject);\n\t\t\n\t\t// make the event draggable using jQuery UI\n\t\t$(this).draggable(\n\t\t{\n\t\t\tzIndex: 999,\n\t\t\trevert: true,      // will cause the event to go back to its\n\t\t\trevertDuration: 0,  //  original position after the drag,\n\t\t\tstart: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t\t});\n\t\t\n\t});\n\n\t/* initialize the calendar\n\t-----------------------------------------------------------------*/\n\t\n\t$('#calendar').fullCalendar({\n\t\theader: {\n\t\t\tleft: 'prev,next today',\n\t\t\tcenter: 'title',\n\t\t\tright: 'month,agendaWeek,agendaDay'\n\t\t},\n\t\teditable: true,\n\t\tdroppable: true,\n\t\tevents: basePath + \"ajax.php?section=calendarEvents\",\n\t\tdrop: function(date, allDay) \n\t\t{\n\t\t\t// retrieve the dropped element's stored Event Object\n\t\t\tvar originalEventObject = $(this).data('eventObject');\n\t\t\t\n\t\t\t// we need to copy it, so that multiple events don't have a reference to the same object\n\t\t\tvar copiedEventObject = $.extend({}, originalEventObject);\n\t\t\t\n\t\t\t// assign it the date that was reported\n\t\t\tcopiedEventObject.start = date;\n\t\t\tcopiedEventObject.allDay = allDay;\n\t\t\t\n\t\t\t// render the event on the calendar\n\t\t\t// the last `true` argument determines if the event \"sticks\" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)\n\t\t\t$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);\n\t\t\t\n\t\t\t// is the \"remove after drop\" checkbox checked?\n\t\t\tif ($('#drop-remove').is(':checked')) {\n\t\t\t\t// if so, remove the element from the \"Draggable Events\" list\n\t\t\t\t$(this).remove();\n\t\t\t}\n\t\t\t\n\t\t}\n\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/charts.helper.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * charts.helper.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\nvar charts = \n{\n\t// init charts on finances page\n\tinitFinances: function()\n\t{\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\t},\n\t\n\t// init charts on Google Analytics page\n\tinitGoogleAnalytics: function()\n\t{\n\t\t// init lines chart with fill & without points\n\t\t//this.chart_lines_fill_nopoints.init();\n\t},\n\t\n\t// init charts on Charts page\n\tinitCharts: function()\n\t{\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\n\t\t// init lines chart with fill & without points\n\t\tthis.chart_lines_fill_nopoints.init();\n\n\t\t// init ordered bars chart\n\t\tthis.chart_ordered_bars.init();\n\n\t\t// init donut chart\n\t\tthis.chart_donut.init();\n\n\t\t// init stacked bars chart\n\t\tthis.chart_stacked_bars.init();\n\n\t\t// init pie chart\n\t\tthis.chart_pie.init();\n\n\t\t// init horizontal bars chart\n\t\tthis.chart_horizontal_bars.init();\n\n\t\t// init live chart\n\t\tthis.chart_live.init();\n\t},\n\t\n\t// init charts on dashboard\n\tinitIndex: function()\n\t{\t\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\t},\n\n\t// utility class\n\tutility:\n\t{\n\t\tchartColors: [ themerPrimaryColor, \"#444\", \"#777\", \"#999\", \"#DDD\", \"#EEE\" ],\n\t\tchartBackgroundColors: [\"transparent\", \"transparent\"],\n\n\t\tapplyStyle: function(that)\n\t\t{\n\t\t\tthat.options.colors = charts.utility.chartColors;\n\t\t\tthat.options.grid.backgroundColor = { colors: charts.utility.chartBackgroundColors };\n\t\t\tthat.options.grid.borderColor = charts.utility.chartColors[0];\n\t\t\tthat.options.grid.color = charts.utility.chartColors[0];\n\t\t},\n\t\t\n\t\t// generate random number for charts\n\t\trandNum: function()\n\t\t{\n\t\t\treturn (Math.floor( Math.random()* (1+40-20) ) ) + 20;\n\t\t}\n\t},\n\n\ttraffic_sources_pie: \n\t{\n\t\t// data\n\t\tdata: [\n\t\t\t{ label: \"organic\",  data: 60 },\n\t\t\t{ label: \"direct\",  data: 22.1 },\n\t\t\t{ label: \"referral\",  data: 16.9 },\n\t\t\t{ label: \"cpc\",  data: 1 }\n\t\t],\n\t\t\n\t\t// chart object\n\t\tplot: null,\n\t\t\n\t\t// chart options\n\t\toptions: {\n\t\t\tseries: {\n\t            pie: {\n\t                show: true,\n\t                redraw: true,\n\t                radius: 1,\n\t                tilt: 0.6,\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div style=\"font-size:8pt;text-align:center;padding:5px;color:#fff;\">'+Math.round(series.percent)+'%</div>';\n\t                    },\n\t                    background: { opacity: 0.8 }\n\t                }\n\t            }\n\t        },\n\t        legend: { show: true, backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        grid: { hoverable: true },\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"<strong>%y% %s</strong>\",\n\t\t\t\tdateFormat: \"%y-%0m-%0d\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: 10,\n\t\t\t\t\ty: 20\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#pie\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// traffic sources dataTables\n\t// we are now using Google Charts instead of Flot\n\ttraffic_sources_dataTables:\n\t{\n\t\t// tables data\n\t\tdata: \n\t\t{\n\t\t\ttableSources:  \n\t\t\t{\n\t\t\t\tdata: null,\n\t\t\t\tinit: function()\n\t\t\t\t{\n\t\t\t\t\tvar data = new google.visualization.DataTable();\n\t\t\t        data.addColumn('string', 'source');\n\t\t\t        data.addColumn('string', 'medium');\n\t\t\t        data.addColumn('number', 'visits');\n\t\t\t        data.addColumn('number', 'pg_views');\n\t\t\t        data.addColumn('string', 'avg_time');\n\n\t\t\t        data.addRows(7);\n\t\t\t        data.setCell(0, 0, 'google', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 2, 89, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 3, 299, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 4, '00:01:48', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 0, '(direct)', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 1, '(none)', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 2, 14, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 3, 34, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 4, '00:03:15', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 0, 'yahoo', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 2, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 3, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 0, 'ask', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 3, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 4, '00:01:34', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 0, 'bing', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 0, 'conduit', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 0, 'google', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 1, 'cpc', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\n\t\t\t        this.data = data;\n\t\t\t        return data;\n\t\t\t\t}\n\t\t\t},\n\t\t\ttableReffering:\n\t\t\t{\n\t\t\t\tdata: null,\n\t\t\t\tinit: function()\n\t\t\t\t{\n\t\t\t\t\tvar data = new google.visualization.DataTable();\n\t\t\t\t\tdata.addColumn('string', 'source');\n\t\t\t        data.addColumn('number', 'pg_views');\n\t\t\t        data.addColumn('string', 'avg_time');\n\t\t\t        data.addColumn('string', 'exits');\n\t\t\t        \n\t\t\t\t\tdata.addRows(6);\n\t\t\t\t\tdata.setCell(0, 0, 'google.ro');\n\t\t\t\t\tdata.setCell(0, 1, 14, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(0, 2, '00:05:51', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(0, 3, '3', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 0, 'search.sweetim.com');\n\t\t\t\t\tdata.setCell(1, 1, 5, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 2, '00:03:29', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 0, 'start.funmoods.com');\n\t\t\t\t\tdata.setCell(2, 1, 5, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 2, '00:01:02', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 0, 'google.md');\n\t\t\t\t\tdata.setCell(3, 1, 2, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 2, '00:03:56', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 0, 'searchmobileonline.com');\n\t\t\t\t\tdata.setCell(4, 1, 2, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 2, '00:02:21', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 0, 'google.com');\n\t\t\t\t\tdata.setCell(5, 1, 1, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 2, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\t\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t// chart\n\t\tchart: \n\t\t{\n\t\t\ttableSources: null,\n\t\t\ttableReffering: null\n\t\t},\n\t\t\n\t\t// options\n\t\toptions: \n\t\t{\n\t\t\ttableSources: \n\t\t\t{\n\t\t\t\tpage: 'enable',\n\t\t\t\tpageSize: 6,\n\t\t\t\tallowHtml: true,\n\t\t\t\tcssClassNames: {\n\t\t\t\t\theaderRow: 'tableHeaderRow',\n\t\t\t\t\ttableRow: 'tableRow',\n\t\t\t\t\tselectedTableRow: 'selectedTableRow',\n\t\t\t\t\thoverTableRow: 'hoverTableRow'\n\t\t\t\t},\n\t\t\t\twidth: '100%',\n\t\t\t\talternatingRowStyle: false,\n\t\t\t\tpagingSymbols: { prev: '<span class=\"btn btn-inverse\">prev</btn>', next: '<span class=\"btn btn-inverse\">next</span>' }\n\t\t\t},\n\t\t\t\n\t\t\ttableReffering:\n\t\t\t{\n\t\t\t\tpage: 'enable',\n\t\t\t\tpageSize: 6,\n\t\t\t\tallowHtml: true,\n\t\t\t\tcssClassNames: {\n\t\t\t\t\theaderRow: 'tableHeaderRow',\n\t\t\t\t\ttableRow: 'tableRow',\n\t\t\t\t\tselectedTableRow: 'selectedTableRow',\n\t\t\t\t\thoverTableRow: 'hoverTableRow'\n\t\t\t\t},\n\t\t\t\twidth: '100%',\n\t\t\t\talternatingRowStyle: false,\n\t\t\t\tpagingSymbols: { prev: '<span class=\"btn btn-inverse\">prev</btn>', next: '<span class=\"btn btn-inverse\">next</span>' }\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// data\n\t\t\tcharts.traffic_sources_dataTables.data.tableSources.init();\n\t\t\tcharts.traffic_sources_dataTables.data.tableReffering.init();\n\t\t\t\n\t\t\t// charts\n\t\t\tcharts.traffic_sources_dataTables.drawTableSources();\n\t\t\tcharts.traffic_sources_dataTables.drawTableReffering();\n\t\t},\n\n\t\t// draw Traffic Sources Table\n\t\tdrawTableSources: function()\n\t\t{\n\t\t\tthis.chart.tableSources = new google.visualization.Table(document.getElementById('dataTableSources'));\n\t\t\tthis.chart.tableSources.draw(this.data.tableSources.data, this.options.tableSources);\n\t\t},\n\n\t\t// draw Refferals Table\n\t\tdrawTableReffering: function()\n\t\t{\n\t\t\tthis.chart.tableReffering = new google.visualization.Table(document.getElementById('dataTableReffering'));\n\t\t\tthis.chart.tableReffering.draw(this.data.tableReffering.data, this.options.tableReffering);\n\t\t}\n\t},\n\t\n\t// simple chart\n\tchart_simple:\n\t{\n\t\t// data\n\t\tdata: \n\t\t{\n\t\t\tsin: [],\n\t\t\tcos: []\n\t\t},\n\t\t\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: \n\t\t\t{\n\t\t\t\tshow: true,\n\t\t\t    aboveData: true,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active: false},\n\t            lines: {\n            \t\tshow: true,\n            \t\tfill: false,\n            \t\tlineWidth: 4,\n            \t\tsteps: false\n            \t},\n\t            points: {\n\t            \tshow:true,\n\t            \tradius: 5,\n\t            \tsymbol: \"circle\",\n\t            \tfill: true,\n\t            \tborderColor: \"#fff\"\n\t            }\n\t        },\n\t        legend: { position: \"se\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true, //activate tooltip\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.3\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\n\t\t\tif (this.plot == null)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < 14; i += 0.5) \n\t\t\t\t{\n\t\t\t        this.data.sin.push([i, Math.sin(i)]);\n\t\t\t        this.data.cos.push([i, Math.cos(i)]);\n\t\t\t    }\n\t\t\t}\n\t\t\tthis.plot = $.plot(\n\t\t\t\t$(\"#chart_simple\"),\n\t           \t[{\n\t    \t\t\tlabel: \"Sin\", \n\t    \t\t\tdata: this.data.sin,\n\t    \t\t\tlines: {fillColor: \"#DA4C4C\"},\n\t    \t\t\tpoints: {fillColor: \"#fff\"}\n\t    \t\t}, \n\t    \t\t{\t\n\t    \t\t\tlabel: \"Cos\", \n\t    \t\t\tdata: this.data.cos,\n\t    \t\t\tlines: {fillColor: \"#444\"},\n\t    \t\t\tpoints: {fillColor: \"#fff\"}\n\t    \t\t}], this.options);\n\t\t}\n\t},\n\t\n\t// lines chart with fill & without points\n\tchart_lines_fill_nopoints: \n\t{\n\t\t// chart data\n\t\tdata: \n\t\t{\n\t\t\td1: [],\n\t\t\td2: []\n\t\t},\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: true,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t            lines: {\n            \t\tshow: true,\n            \t\tfill: true,\n            \t\tlineWidth: 2,\n            \t\tsteps: false\n            \t},\n\t            points: {show:false}\n\t        },\n\t        legend: { position: \"nw\", backgroundColor: null, backgroundOpacity: 0 },\n\t        yaxis: { min: 0 },\n\t        xaxis: {ticks:11, tickDecimals: 0},\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\t// generate some data\n\t\t\tthis.data.d1 = [[1, 3+charts.utility.randNum()], [2, 6+charts.utility.randNum()], [3, 9+charts.utility.randNum()], [4, 12+charts.utility.randNum()],[5, 15+charts.utility.randNum()],[6, 18+charts.utility.randNum()],[7, 21+charts.utility.randNum()],[8, 15+charts.utility.randNum()],[9, 18+charts.utility.randNum()],[10, 21+charts.utility.randNum()],[11, 24+charts.utility.randNum()],[12, 27+charts.utility.randNum()],[13, 30+charts.utility.randNum()],[14, 33+charts.utility.randNum()],[15, 24+charts.utility.randNum()],[16, 27+charts.utility.randNum()],[17, 30+charts.utility.randNum()],[18, 33+charts.utility.randNum()],[19, 36+charts.utility.randNum()],[20, 39+charts.utility.randNum()],[21, 42+charts.utility.randNum()],[22, 45+charts.utility.randNum()],[23, 36+charts.utility.randNum()],[24, 39+charts.utility.randNum()],[25, 42+charts.utility.randNum()],[26, 45+charts.utility.randNum()],[27,38+charts.utility.randNum()],[28, 51+charts.utility.randNum()],[29, 55+charts.utility.randNum()], [30, 60+charts.utility.randNum()]];\n\t\t\tthis.data.d2 = [[1, charts.utility.randNum()-5], [2, charts.utility.randNum()-4], [3, charts.utility.randNum()-4], [4, charts.utility.randNum()],[5, 4+charts.utility.randNum()],[6, 4+charts.utility.randNum()],[7, 5+charts.utility.randNum()],[8, 5+charts.utility.randNum()],[9, 6+charts.utility.randNum()],[10, 6+charts.utility.randNum()],[11, 6+charts.utility.randNum()],[12, 2+charts.utility.randNum()],[13, 3+charts.utility.randNum()],[14, 4+charts.utility.randNum()],[15, 4+charts.utility.randNum()],[16, 4+charts.utility.randNum()],[17, 5+charts.utility.randNum()],[18, 5+charts.utility.randNum()],[19, 2+charts.utility.randNum()],[20, 2+charts.utility.randNum()],[21, 3+charts.utility.randNum()],[22, 3+charts.utility.randNum()],[23, 3+charts.utility.randNum()],[24, 2+charts.utility.randNum()],[25, 4+charts.utility.randNum()],[26, 4+charts.utility.randNum()],[27,5+charts.utility.randNum()],[28, 2+charts.utility.randNum()],[29, 2+charts.utility.randNum()], [30, 3+charts.utility.randNum()]];\n\t\t\t\n\t\t\t// make chart\n\t\t\tthis.plot = $.plot(\n\t\t\t\t'#chart_lines_fill_nopoints', \n\t\t\t\t[{\n         \t\t\tlabel: \"Visits\", \n         \t\t\tdata: this.data.d1,\n         \t\t\tlines: {fillColor: \"rgba(0,0,0,0.01)\"},\n         \t\t\tpoints: {fillColor: \"#88bbc8\"}\n         \t\t}, \n         \t\t{\t\n         \t\t\tlabel: \"Unique Visits\", \n         \t\t\tdata: this.data.d2,\n         \t\t\tlines: {fillColor: \"rgba(0,0,0,0.1)\"},\n         \t\t\tpoints: {fillColor: \"#ed7a53\"}\n         \t\t}], \n         \t\tthis.options);\n\t\t}\n\t},\n\n\t// ordered bars chart\n\tchart_ordered_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions:\n\t\t{\n\t\t\tbars: {\n\t\t\t\tshow:true,\n\t\t\t\tbarWidth: 0.2,\n\t\t\t\tfill:1\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false}\n\t        },\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\t//some data\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d1.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d2.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d3.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var ds = new Array();\n\t\t \n\t\t    ds.push({\n\t\t     \tlabel: \"Data One\",\n\t\t        data:d1,\n\t\t        bars: {order: 1}\n\t\t    });\n\t\t    ds.push({\n\t\t    \tlabel: \"Data Two\",\n\t\t        data:d2,\n\t\t        bars: {order: 2}\n\t\t    });\n\t\t    ds.push({\n\t\t    \tlabel: \"Data Three\",\n\t\t        data:d3,\n\t\t        bars: {order: 3}\n\t\t    });\n\t\t\tthis.data = ds;\n\n\t\t\tthis.plot = $.plot($(\"#chart_ordered_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// donut chart\n\tchart_donut:\n\t{\n\t\t// chart data\n\t\tdata: [\n\t\t    { label: \"USA\",  data: 38 },\n\t\t    { label: \"Brazil\",  data: 23 },\n\t\t    { label: \"India\",  data: 15 },\n\t\t    { label: \"Turkey\",  data: 9 },\n\t\t    { label: \"France\",  data: 7 },\n\t\t    { label: \"China\",  data: 5 },\n\t\t    { label: \"Germany\",  data: 3 }\n\t\t],\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: {\n\t\t\t\tpie: { \n\t\t\t\t\tshow: true,\n\t\t\t\t\tinnerRadius: 0.4,\n\t\t\t\t\thighlight: {\n\t\t\t\t\t\topacity: 0.1\n\t\t\t\t\t},\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 8\n\t\t\t\t\t},\n\t\t\t\t\tstartAngle: 2,\n\t\t\t\t    combine: {\n\t                    color: '#EEE',\n\t                    threshold: 0.05\n\t                },\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div class=\"label label-inverse\">'+label+'&nbsp;'+Math.round(series.percent)+'%</div>';\n\t                    }\n\t                }\n\t\t\t\t},\n\t\t\t\tgrow: {\tactive: false}\n\t\t\t},\n\t\t\tlegend:{show:false},\n\t\t\tgrid: {\n\t            hoverable: true,\n\t            clickable: true,\n\t            backgroundColor : { }\n\t        },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.1\"+\"%\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_donut\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// horizontal bars chart\n\tchart_horizontal_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t\t        bars: {\n\t\t        \tshow:true,\n\t\t\t\t\thorizontal: true,\n\t\t\t\t\tbarWidth:0.2,\n\t\t\t\t\tfill:1\n\t\t\t\t}\n\t        },\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d1.push([parseInt(Math.random() * 30),i ]);\n\n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d2.push([parseInt(Math.random() * 30),i ]);\n\n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d3.push([ parseInt(Math.random() * 30),i]);\n\n\t\t    this.data = new Array();\n\t\t    this.data.push({\n\t\t        data: d1,\n\t\t        bars: {\n\t\t            horizontal:true, \n\t\t            show: true, \n\t\t            barWidth: 0.2, \n\t\t            order: 1\n\t\t        }\n\t\t    });\n\t\t\tthis.data.push({\n\t\t\t    data: d2,\n\t\t\t    bars: {\n\t\t\t        horizontal:true, \n\t\t\t        show: true, \n\t\t\t        barWidth: 0.2, \n\t\t\t        order: 2\n\t\t\t    }\n\t\t\t});\n\t\t\tthis.data.push({\n\t\t\t    data: d3,\n\t\t\t    bars: {\n\t\t\t        horizontal:true, \n\t\t\t        show: true, \n\t\t\t        barWidth: 0.2, \n\t\t\t        order: 3\n\t\t\t    }\n\t\t\t});\n\n\t\t\tthis.plot = $.plot($(\"#chart_horizontal_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// pie chart\n\tchart_pie:\n\t{\n\t\t// chart data\n\t\tdata: [\n\t\t    { label: \"USA\",  data: 38 },\n\t\t    { label: \"Brazil\",  data: 23 },\n\t\t    { label: \"India\",  data: 15 },\n\t\t    { label: \"Turkey\",  data: 9 },\n\t\t    { label: \"France\",  data: 7 },\n\t\t    { label: \"China\",  data: 5 },\n\t\t    { label: \"Germany\",  data: 3 }\n\t\t],\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: {\n\t\t\t\tpie: { \n\t\t\t\t\tshow: true,\n\t\t\t\t\thighlight: {\n\t\t\t\t\t\topacity: 0.1\n\t\t\t\t\t},\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t},\n\t\t\t\t\tstartAngle: 2,\n\t\t\t\t    combine: {\n\t                    color: '#353535',\n\t                    threshold: 0.05\n\t                },\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div class=\"label label-inverse\">'+label+'&nbsp;'+Math.round(series.percent)+'%</div>';\n\t                    }\n\t                }\n\t\t\t\t},\n\t\t\t\tgrow: {\tactive: false}\n\t\t\t},\n\t\t\tcolors: [],\n\t\t\tlegend:{show:false},\n\t\t\tgrid: {\n\t            hoverable: true,\n\t            clickable: true,\n\t            backgroundColor : { }\n\t        },\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.1\"+\"%\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_pie\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// stacked bars chart\n\tchart_stacked_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t        \tstack: 0,\n                lines: { show: false, fill: true, steps: false },\n                bars: { show: true, barWidth: 0.5, fill:1}\n\t\t    },\n\t        xaxis: {ticks:11, tickDecimals: 0},\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d1.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d2.push([i, parseInt(Math.random() * 20)]);\n\t\t \n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d3.push([i, parseInt(Math.random() * 20)]);\n\t\t \n\t\t    this.data = new Array();\n\t\t \n\t\t    this.data.push({\n\t\t     \tlabel: \"Data One\",\n\t\t        data: d1\n\t\t    });\n\t\t    this.data.push({\n\t\t    \tlabel: \"Data Two\",\n\t\t        data: d2\n\t\t    });\n\t\t    this.data.push({\n\t\t    \tlabel: \"Data Tree\",\n\t\t        data: d3\n\t\t    });\n\n\t\t    this.plot = $.plot($(\"#chart_stacked_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// live chart\n\tchart_live:\n\t{\n\t\t// chart data\n\t\tdata: [],\n\t\ttotalPoints: 300,\n\t    updateInterval: 200,\n\n\t\t// we use an inline data source in the example, usually data would\n\t    // be fetched from a server\n\t\tgetRandomData: function()\n\t\t{\n\t\t\tif (this.data.length > 0)\n\t            this.data = this.data.slice(1);\n\n\t        // do a random walk\n\t        while (this.data.length < this.totalPoints) \n\t\t    {\n\t            var prev = this.data.length > 0 ? this.data[this.data.length - 1] : 50;\n\t            var y = prev + Math.random() * 10 - 5;\n\t            if (y < 0)\n\t                y = 0;\n\t            if (y > 100)\n\t                y = 100;\n\t            this.data.push(y);\n\t        }\n\n\t        // zip the generated y values with the x values\n\t        var res = [];\n\t        for (var i = 0; i < this.data.length; ++i)\n\t            res.push([i, this.data[i]])\n\t        return res;\n\t\t},\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: { \n\t        \tgrow: { active: false },\n\t        \tshadowSize: 0,\n\t        \tlines: {\n            \t\tshow: true,\n            \t\tfill: true,\n            \t\tlineWidth: 2,\n            \t\tsteps: false\n\t            }\n\t        },\n\t        grid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t}, \n\t\t\tcolors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"Value is : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t},\t\n\t        yaxis: { min: 0, max: 100 },\n\t        xaxis: { show: true}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_live\"), [ this.getRandomData() ], this.options);\n\t\t\tsetTimeout(this.update, charts.chart_live.updateInterval);\n\t\t},\n\n\t\t// update\n\t\tupdate: function()\n\t\t{\n\t\t\tcharts.chart_live.plot.setData([ charts.chart_live.getRandomData() ]);\n\t        charts.chart_live.plot.draw();\n\t        \n\t        setTimeout(charts.chart_live.update, charts.chart_live.updateInterval);\n\t\t}\n\t}\n};"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/charts.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * charts.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n * \n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initCharts();\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/choose.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * choose.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar url_default = [];\n\t\turl_default['admin'] = $('#choose-preview .options[data-for=\"admin\"] .actions a').attr('href');\n\t\turl_default['front'] = $('#choose-preview .options[data-for=\"front\"] .actions a').attr('href');\n\t\n\t$('#choose-preview')\n\t\t.find('.options select')\n\t\t.on('change', function()\n\t\t{\n\t\t\tvar box = $(this).parents('.box:first');\n\t\t\tvar $for = $(this).attr('data-for');\n\t\t\tvar select_layout = box.find('select[data-type=\"layout\"]');\n\t\t\tvar select_sidebar = box.find('select[data-type=\"sidebar\"]');\n\t\t\tvar select_sidebar_position = box.find('select[data-type=\"menu\"]');\n\t\t\tvar select_sidebar_sticky = box.find('select[data-type=\"sidebar-sticky\"]');\n\t\t\tvar select_top_sticky = box.find('select[data-type=\"top-sticky\"]');\n\t\t\tvar select_rtl = box.find('select[data-type=\"rtl\"]');\n\t\t\tvar select_style = box.find('select[data-type=\"style\"]');\n\t\t\t\n\t\t\tvar url = url_default[$for];\n\t\t\t\n\t\t\tif (select_layout.length)\n\t\t\t\turl += '&layout_type=' + select_layout.val();\n\t\t\tif (select_sidebar.length)\n\t\t\t\turl += '&sidebar=' + select_sidebar.val();\n\t\t\tif (select_sidebar_position.length)\n\t\t\t\turl += '&menu_position=' + select_sidebar_position.val();\n\t\t\tif (select_sidebar_sticky.length) \n\t\t\t\turl += '&sidebar-sticky=' + select_sidebar_sticky.val();\n\t\t\tif (select_top_sticky.length) \n\t\t\t\turl += '&top-sticky=' + select_top_sticky.val();\n\t\t\tif (select_rtl.length) \n\t\t\t\turl += '&rtl=' + select_rtl.val();\n\t\t\tif (select_style.length) \n\t\t\t\turl += '&style=' + select_style.val();\n\t\t\t\n\t\t\t$('#choose-preview .options[data-for=\"'+$for+'\"] .actions a').attr('href', url);\n\t\t\t\n\t\t\t/*\n\t\t\tvar selector = '#' + $for + '-' + select_style.val();\n\t\t\tif (select_layout.length) \n\t\t\t\tselector += '-' + select_layout.val();\n\t\t\tif (select_menu.length) \n\t\t\t\tselector += '-' + select_menu.val();\n\t\t\tif (select_rtl.length) \n\t\t\t\tselector += '-rtl-' + select_rtl.val();\n\t\t\t\n\t\t\tbox.find('.actions a').removeClass('btn-active');\n\t\t\t$(selector).addClass('btn-active');\n\t\t\t\n\t\t\tconsole.log(selector);\n\t\t\t*/\n\t\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/common.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * common.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/* Utility functions */\n\n// generate a random number\nfunction randNum()\n{\n\treturn (Math.floor( Math.random()* (1+40-20) ) ) + 20;\n}\n\nfunction PDFTarget(target)\n{\n\tvar doc = $('html').clone();\n\tvar target = $(target).clone();\n\tvar form = $('#PDFTargetForm');\n\tif (!form.length) {\n\t\t$('body').append('<form id=\"PDFTargetForm\"></form>');\n\t\tform = $('#PDFTargetForm');\n\t}\n\t\n\tform.attr('action', basePath + 'ajax.php?section=pdf');\n\tform.attr('method', 'POST');\n\tform.append('<input type=\"hidden\" name=\"target\" value=\"\" />');\n\t\n\ttarget.find('.hidden-print').remove();\n\tdoc.find('body').html(target);\n\tvar html = doc.html();\n\t\n\tform.find('input').val(html);\n\tform.submit();\n}\n\nfunction beautify(source)\n{\n\tvar output,\n\t\topts = {};\n\n    /*\n    opts.indent_size = $('#tabsize').val();\n    opts.indent_char = opts.indent_size == 1 ? '\\t' : ' ';\n    opts.max_preserve_newlines = $('#max-preserve-newlines').val();\n    opts.preserve_newlines = opts.max_preserve_newlines !== -1;\n    opts.keep_array_indentation = $('#keep-array-indentation').prop('checked');\n    opts.break_chained_methods = $('#break-chained-methods').prop('checked');\n    opts.indent_scripts = $('#indent-scripts').val();\n    opts.brace_style = $('#brace-style').val();\n    opts.space_before_conditional = $('#space-before-conditional').prop('checked');\n    opts.unescape_strings = $('#unescape-strings').prop('checked');\n    opts.wrap_line_length = $('#wrap-line-length').val();\n    opts.space_after_anon_function = true;\n    */\n\t\n\topts.preserve_newlines = false;\n\n\toutput = html_beautify(source, opts);\n    return output;\n}\n\n// generate a random number within a range (PHP's mt_rand JavaScript implementation)\nfunction mt_rand (min, max) \n{\n\t// http://kevin.vanzonneveld.net\n\t// +   original by: Onno Marsman\n\t// +   improved by: Brett Zamir (http://brett-zamir.me)\n\t// +   input by: Kongo\n\t// *     example 1: mt_rand(1, 1);\n\t// *     returns 1: 1\n\tvar argc = arguments.length;\n\tif (argc === 0) {\n\t\tmin = 0;\n\t\tmax = 2147483647;\n\t}\n\telse if (argc === 1) {\n\t\tthrow new Error('Warning: mt_rand() expects exactly 2 parameters, 1 given');\n\t}\n\telse {\n\t\tmin = parseInt(min, 10);\n\t\tmax = parseInt(max, 10);\n\t}\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n// scroll to element animation\nfunction scrollTo(id)\n{\n\tif ($(id).length)\n\t\t$('html,body').animate({scrollTop: $(id).offset().top},'slow');\n}\n\n// handle menu toggle button action\nfunction toggleMenuHidden()\n{\n\t//console.log('toggleMenuHidden');\n\t$('.container-fluid:first').toggleClass('menu-hidden');\n\t$('#menu').toggleClass('hidden-phone', function()\n\t{\n\t\tif ($('.container-fluid:first').is('.menu-hidden'))\n\t\t{\n\t\t\tif (typeof resetResizableMenu != 'undefined') \n\t\t\t\tresetResizableMenu(true);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tremoveMenuHiddenPhone();\n\t\t\t\n\t\t\tif (typeof lastResizableMenuPosition != 'undefined') \n\t\t\t\tlastResizableMenuPosition();\n\t\t}\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t\t$.cookie('menuHidden', $('.container-fluid:first').is('.menu-hidden'));\n\t});\n\t\n\tif (typeof masonryGallery != 'undefined') \n\t\tmasonryGallery();\t\n}\n\nfunction removeMenuHiddenPhone()\n{\n\tif (!$('.container-fluid:first').is('.menu-hidden') && $('#menu').is('.hidden-phone'))\n\t\t$('#menu').removeClass('hidden-phone');\n}\n\n// handle generate sparkline charts\nfunction genSparklines()\n{\n\tif ($('.sparkline').length)\n\t{\n\t\t$.each($('#content .sparkline'), function(k,v)\n\t\t{\n\t\t\tvar size = { w: 150, h: 28 };\n\t\t\tif ($(this).parent().is('.widget-stats'))\n\t\t\t\tsize = { w: 150, h: 35 }\n\t\t\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\tvar data = [[1, 3+randNum()], [2, 5+randNum()], [3, 8+randNum()], [4, 11+randNum()],[5, 14+randNum()],[6, 17+randNum()],[7, 20+randNum()], [8, 15+randNum()], [9, 18+randNum()], [10, 22+randNum()]];\n\t\t \t$(v).sparkline(data, \n\t\t\t{ \n\t\t\t\ttype: 'bar',\n\t\t\t\twidth: size.w,\n\t\t\t\theight: size.h,\n\t\t\t\tstackedBarColor: [\"#dadada\", color],\n\t\t\t\tlineWidth: 2\n\t\t\t});\n\t\t});\n\t\t$.each($('#menu .sparkline'), function(k,v)\n\t\t{\n\t\t\tvar size = { w: 150, h: 20 };\n\t\t\tif ($(this).parent().is('.widget-stats-3'))\n\t\t\t\tsize = { w: 150, h: 35 }\n\t\t\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\tvar data = [[1, 3+randNum()], [2, 5+randNum()], [3, 8+randNum()], [4, 11+randNum()],[5, 14+randNum()],[6, 17+randNum()],[7, 20+randNum()], [8, 15+randNum()], [9, 18+randNum()], [10, 22+randNum()]];\n\t\t \t$(v).sparkline(data, \n\t\t\t{ \n\t\t\t\ttype: 'bar',\n\t\t\t\twidth: size.w,\n\t\t\t\theight: size.h,\n\t\t\t\tstackedBarColor: [\"#dadada\", color],\n\t\t\t\tlineWidth: 2\n\t\t\t});\n\t\t});\n\t}\n}\n\n//handle generate easy-pie-charts\nfunction genEasyPie()\n{\n\tif ($('.easy-pie').length && $.fn.easyPieChart)\n\t{\n\t\t$.each($('.easy-pie'), function(k,v)\n\t\t{\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\t$(v).easyPieChart({\n\t\t\t\tbarColor: color,\n\t\t\t\tanimate: ($('html').is('.ie') ? false : 3000),\n                lineWidth: 4,\n                size: 50\n\t\t\t});\n\t\t});\n\t}\n}\n\n/*\n * Helper function for JQueryUI Sliders Create event\n */\nfunction JQSliderCreate()\n{\n\t$(this)\n\t\t.removeClass('ui-corner-all ui-widget-content')\n\t\t.wrap('<span class=\"ui-slider-wrap\"></span>')\n\t\t.find('.ui-slider-handle')\n\t\t.removeClass('ui-corner-all ui-state-default');\n}\n\n$(function()\n{\n\t// Sidebar menu collapsibles\n\t$('#menu .collapse').on('show', function(e)\n\t{\n\t\te.stopPropagation();\n\t\t$(this).parents('.hasSubmenu:first').addClass('active');\n\t})\n\t.on('hidden', function(e)\n\t{\n\t\te.stopPropagation();\n\t\t$(this).parents('.hasSubmenu:first').removeClass('active');\n\t});\n\t\n\t// main menu visibility toggle\n\t$('.navbar.main .btn-navbar').click(function()\n\t{\n\t\tvar disabled = typeof toggleMenuButtonWhileTourOpen != 'undefined' ? toggleMenuButtonWhileTourOpen(true) : false;\n\t\tif (!disabled)\n\t\t\ttoggleMenuHidden();\n\t});\n\t\n\t// topnav toggle\n\t$('.navbar.main .toggle-navbar').click(function()\n\t{\n\t\tvar that = $(this);\n\t\t\n\t\tif ($('.navbar.main .wrapper').is(':hidden'))\n\t\t{\n\t\t\t$(this).slideUp(20, function(){\n\t\t\t\t$('.navbar.main .wrapper').show();\n\t\t\t\t$('.navbar.main').animate({ height: 34 }, 200, function(){\n\t\t\t\t\t$('.navbar.main').toggleClass('navbar-hidden');\n\t\t\t\t\tthat.slideDown();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$(this).slideUp(20, function(){\n\t\t\t\t$('.navbar.main').animate({ height: 0 }, 200, function(){\n\t\t\t\t\t$('.navbar.main .wrapper').hide();\n\t\t\t\t\t$('.navbar.main').toggleClass('navbar-hidden');\n\t\t\t\t\tthat.slideDown();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\t\n\t// multi-level top menu\n\t$('.submenu').hover(function()\n\t{\n        $(this).children('ul').removeClass('submenu-hide').addClass('submenu-show');\n    }, function()\n    {\n    \t$(this).children('ul').removeClass('.submenu-show').addClass('submenu-hide');\n    })\n    .find(\"a:first\").append(\" &raquo; \");\n\t\n\t// tooltips\n\t$('[data-toggle=\"tooltip\"]').tooltip();\n\t\n\t// popovers\n\t$('[data-toggle=\"popover\"]').popover();\n\t\n\t// save to PDF\n\t$('[data-toggle*=\"pdf\"]').on('click', function(e){\n\t\te.preventDefault();\n\t\tPDFTarget($(this).attr('data-target'));\n\t});\n\t\n\t// prettyphoto\n\tif ($('[data-toggle=\"prettyPhoto\"]').length) \n\t\t$('[data-toggle=\"prettyPhoto\"]').prettyPhoto();\n\t\n\t// loading state for buttons\n\t$('[data-toggle*=\"btn-loading\"]').click(function () {\n        var btn = $(this);\n        btn.button('loading');\n        setTimeout(function () {\n        \tbtn.button('reset')\n        }, 3000);\n    });\n\t$('[data-toggle*=\"button-loading\"]').click(function () {\n        var btn = $(this);\n        btn.button('loading');\n    });\n\t\n\t// typeahead\n\tif ($('[data-toggle=\"typeahead\"]').length)\n\t\t$('[data-toggle=\"typeahead\"]').typeahead({\n\t\t\tsource: [\"Alabama\",\"Alaska\",\"Arizona\",\"Arkansas\",\"California\",\"Colorado\",\"Connecticut\",\"Delaware\",\"Florida\",\"Georgia\",\"Hawaii\",\"Idaho\",\"Illinois\",\"Indiana\",\"Iowa\",\"Kansas\",\"Kentucky\",\"Louisiana\",\"Maine\",\"Maryland\",\"Massachusetts\",\"Michigan\",\"Minnesota\",\"Mississippi\",\"Missouri\",\"Montana\",\"Nebraska\",\"Nevada\",\"New Hampshire\",\"New Jersey\",\"New Mexico\",\"New York\",\"North Dakota\",\"North Carolina\",\"Ohio\",\"Oklahoma\",\"Oregon\",\"Pennsylvania\",\"Rhode Island\",\"South Carolina\",\"South Dakota\",\"Tennessee\",\"Texas\",\"Utah\",\"Vermont\",\"Virginia\",\"Washington\",\"West Virginia\",\"Wisconsin\",\"Wyoming\"],\n\t\t\titems: 4\n\t\t});\n\t\n\t// print\n\t$('[data-toggle=\"print\"]').click(function(e)\n\t{\n\t\te.preventDefault();\n\t\twindow.print();\n\t});\n\t\n\t// gridalicious\n\t$('[data-toggle*=\"gridalicious\"]').each(function(){\n\t\tvar $that = $(this);\n\t\t$(this).gridalicious({\n\t\t\tgutter: 13, \n\t\t\twidth: $that.attr('data-gridalicious-width') ? parseInt($that.attr('data-gridalicious-width')) : 200,\n\t\t\tanimate: true,\n\t\t\tselector: '.widget'\n\t\t}).removeClass('hide');\n\t});\n\t\n\t// collapsible widgets\n\t$('.widget[data-toggle=\"collapse-widget\"] .widget-body')\n\t\t.on('show', function(){\n\t\t\t$(this).parents('.widget:first').attr('data-collapse-closed', \"false\");\n\t\t})\n\t\t.on('shown', function(){\n\t\t\tsetTimeout(function(){ $(window).resize(); }, 500);\n\t\t})\n\t\t.on('hidden', function(){\n\t\t\t$(this).parents('.widget:first').attr('data-collapse-closed', \"true\");\n\t\t});\n\t\n\t$('.widget[data-toggle=\"collapse-widget\"]').each(function()\n\t{\n\t\t// append toggle button\n\t\t$(this).find('.widget-head').append('<span class=\"collapse-toggle\"></span>');\n\t\t\n\t\t// make the widget body collapsible\n\t\t$(this).find('.widget-body').addClass('collapse');\n\t\t\n\t\t// verify if the widget should be opened\n\t\tif ($(this).attr('data-collapse-closed') !== \"true\")\n\t\t\t$(this).find('.widget-body').addClass('in');\n\t\t\n\t\t// bind the toggle button\n\t\t$(this).find('.collapse-toggle').on('click', function(){\n\t\t\t$(this).parents('.widget:first').find('.widget-body').collapse('toggle');\n\t\t});\n\t});\n\t\n\t// generate sparkline charts\n\tgenSparklines();\n\t\n\t// generate easy-pie-charts\n\tgenEasyPie();\n\t\n\t// Google Code Prettify\n\tif ($('.prettyprint').length)\n\t\tprettyPrint();\n\t\n\t// bind window resize event\n\t$(window).resize(function()\n\t{\n\t\t\n\t});\n\t\n\t// trigger window resize event\n\t$(window).resize();\n\t\n\t// view source toggle buttons\n\t$('.btn-source-toggle').click(function(e){\n\t\te.preventDefault();\n\t\t$('.code:not(.show)').toggleClass('hide');\n\t});\n\t\n\t// source-code widgets\n\t$('[data-toggle=\"source-code\"]').each(function(){\n\t\tvar button = $('<span data-toggle=\"source-code-toggle\" class=\"hidden-phone btn btn-toggle-code btn-mini btn-primary btn-icon glyphicons embed_close\"><i></i> Source</span>');\n\t\tif ($(this).attr('data-placement') == 'outside') button.addClass('outside');\n\t\t$(this).append(button);\n\t\t$(this).css('overflow', 'visible');\n\t}).on('click', '[data-toggle=\"source-code-toggle\"]', function(){\n\t\tvar html = $(this).parent().clone();\n\t\t\thtml.find('[data-toggle=\"source-code-toggle\"]').remove();\n\t\t\thtml = beautify(html.html());\n\t\t\thtml = $('<pre class=\"prettyprint\"></pre>').text(html);\n\t\t\n\t\tbootbox.alert(html);\n\t\t\n\t\tif ($('.prettyprint').length)\n\t\t\tprettyPrint();\n\t});\n\t\n\t// reset themer\n\t$('[data-toggle=\"reset-themer\"]').click(function(e){\n\t\te.preventDefault();\n\t\tif (typeof updateTheme != 'undefined') {\n\t\t\tupdateTheme(0);\n\t\t}\n\t\tlocation = $(this).attr('href');\n\t});\n\t\n\t// show/hide toggle buttons\n\t$('[data-toggle=\"hide\"]').click(function()\n\t{\n\t\tif ($(this).is('.bootboxTarget'))\n\t\t\tbootbox.alert($($(this).attr('data-target')).html());\n\t\telse {\n\t\t\t$($(this).attr('data-target')).toggleClass('hide');\n\t\t\tif ($(this).is('.scrollTarget') && !$($(this).attr('data-target')).is('.hide'))\n\t\t\t\tscrollTo($(this).attr('data-target'));\n\t\t}\n\t});\n\t\n\t// handle menu position change\n\t$('#toggle-menu-position').on('change', function()\n\t{\n\t\t$('.container-fluid:first').toggleClass('menu-right');\n\t\t\n\t\tif ($(this).prop('checked')) \n\t\t\t$('.container-fluid:first').removeClass('menu-left');\n\t\telse\n\t\t\t$('.container-fluid:first').addClass('menu-left');\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t\t$.cookie('rightMenu', $(this).prop('checked') ? $(this).prop('checked') : null);\n\t\t\n\t\tif (typeof resetResizableMenu != 'undefined' && typeof lastResizableMenuPosition != 'undefined')\n\t\t{\n\t\t\tresetResizableMenu(true);\n\t\t\tlastResizableMenuPosition();\n\t\t}\n\t\tremoveMenuHiddenPhone();\n\t});\n\t\n\t// handle persistent menu position on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('rightMenu') && $('#toggle-menu-position').length)\n\t{\n\t\t$('#toggle-menu-position').prop('checked', true);\n\t\t$('.container-fluid:first').not('.menu-right').removeClass('menu-left').addClass('menu-right');\n\t}\n\t\n\t// handle layout type change\n\t$('#toggle-layout').on('change', function()\n\t{\n\t\tif ($(this).prop('checked'))\n\t\t{\n\t\t\t$('.container-fluid:first').addClass('fixed');\n\t\t}\n\t\telse\n\t\t\t$('.container-fluid:first').removeClass('fixed');\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t{\n\t\t\t$.cookie('layoutFixed', $(this).prop('checked') ? $(this).prop('checked') : null);\n\t\t\t$.cookie('layoutFluid', $(this).prop('checked') ? null : $(this).prop('checked'));\n\t\t}\n\t});\n\t\n\t// handle persistent layout type on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('layoutFixed') && $('#toggle-layout').length)\n\t{\n\t\t$('#toggle-layout').prop('checked', true);\n\t\t$('.container-fluid:first').addClass('fixed');\n\t}\n\telse if (!$('.container-fluid:first').is('.fixed') || (typeof $.cookie != 'undefined' && $.cookie('layoutFluid')))\n\t{\n\t\t$('#toggle-layout').prop('checked', false);\n\t\t$('.container-fluid:first').removeClass('fixed');\n\t}\n\t\n\t// handle persistent menu visibility on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('menuHidden') && $.cookie('menuHidden') == 'true' || (!$('.container-fluid').is('.menu-hidden') && !$('#menu').is(':visible')))\n\t\ttoggleMenuHidden();\n\telse if ($('#menu').is(':visible'))\n\t{\n\t\tremoveMenuHiddenPhone();\n\t\t\n\t\tif (typeof lastResizableMenuPosition != 'undefined') \n\t\t\tlastResizableMenuPosition();\n\t}\n\t\n\t// menu slim scroll max height\n\tsetTimeout(function()\n\t{\n\t\tvar menu_max_height = parseInt($('#menu .slim-scroll').attr('data-scroll-height'));\n\t\tvar menu_real_max_height = parseInt($('#wrapper').height());\n\t\t$('#menu .slim-scroll').slimScroll({\n\t\t\theight: (menu_max_height < menu_real_max_height ? (menu_real_max_height - 40) : menu_max_height) + \"px\",\n\t\t\tallowPageScroll : true,\n\t\t\trailDraggable: ($.fn.draggable ? true : false)\n\t    });\n\t\t\n\t\tif (Modernizr.touch)\n\t\t\treturn; \n\t\t\n\t\t// fixes weird bug when page loads and mouse over the sidebar (can't scroll)\n\t\t$('#menu .slim-scroll').trigger('mouseenter').trigger('mouseleave');\n\t}, 200);\n\t\n\t/* Slim Scroll Widgets */\n\t$('.widget-scroll').each(function(){\n\t\t$(this).find('.widget-body > div').slimScroll({\n\t\t\theight: $(this).attr('data-scroll-height')\n\t    });\n\t});\n\t\n\t/* Other non-widget Slim Scroll areas */\n\t$('#content .slim-scroll').each(function(){\n\t\tvar scrollSize = $(this).attr('data-scroll-size') ? $(this).attr('data-scroll-size') : \"7px\";\n\t\t$(this).slimScroll({\n\t\t\theight: $(this).attr('data-scroll-height'),\n\t\t\tallowPageScroll : false,\n\t\t\trailVisible: false,\n\t\t\tsize: '0',\n\t\t\trailDraggable: ($.fn.draggable ? true : false)\n\t    });\n\t});\n\n\t/* wysihtml5 */\n\tif ($('textarea.wysihtml5').size() > 0)\n\t\t$('textarea.wysihtml5').wysihtml5();\n\t\n\t/*\n\t * Boostrap Extended\n\t */\n\t// custom select for Boostrap using dropdowns\n\tif ($('.selectpicker').length) $('.selectpicker').selectpicker();\n\t\n\t// bootstrap-toggle-buttons\n\tif ($('.toggle-button').length) $('.toggle-button').toggleButtons();\n\t\n\t/*\n\t * UniformJS: Sexy form elements\n\t */\n\tif ($('.uniformjs').length) $('.uniformjs').find(\"select, input, button, textarea\").uniform();\n\t\n\t// colorpicker\n\tif ($('#colorpicker').length) $('#colorpicker').farbtastic('#colorpickerColor');\n\t\n\t// datepicker\n\tif ($('#datepicker').length) $(\"#datepicker\").datepicker({ showOtherMonths:true });\n\tif ($('#datepicker-inline').length) $('#datepicker-inline').datepicker({ inline: true, showOtherMonths:true });\n\t\n\t// daterange\n\tif ($('#dateRangeFrom').length && $('#dateRangeTo').length)\n\t{\n\t\t$( \"#dateRangeFrom\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: false,\n\t\t\tnumberOfMonths: 2,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#dateRangeTo\" ).datepicker( \"option\", \"minDate\", selectedDate );\n\t\t\t}\n\t\t}).datepicker( \"option\", \"maxDate\", $('#dateRangeTo').val() );\n\n\t\t$( \"#dateRangeTo\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: false,\n\t\t\tnumberOfMonths: 2,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#dateRangeFrom\" ).datepicker( \"option\", \"maxDate\", selectedDate );\n\t\t\t}\n\t\t}).datepicker( \"option\", \"minDate\", $('#dateRangeFrom').val() );\n\t}\n\t\n\t/* Table select / checkboxes utility */\n\t$('.checkboxs thead :checkbox').change(function(){\n\t\tif ($(this).is(':checked'))\n\t\t{\n\t\t\t$('.checkboxs tbody :checkbox').prop('checked', true).parent().addClass('checked');\n\t\t\t$('.checkboxs tbody tr.selectable').addClass('selected');\n\t\t\t$('.checkboxs_actions').show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$('.checkboxs tbody :checkbox').prop('checked', false).parent().removeClass('checked');\n\t\t\t$('.checkboxs tbody tr.selectable').removeClass('selected');\n\t\t\t$('.checkboxs_actions').hide();\n\t\t}\n\t});\n\t\n\t$('.checkboxs tbody').on('click', 'tr.selectable', function(e){\n\t\tvar c = $(this).find(':checkbox');\n\t\tvar s = $(e.srcElement);\n\t\t\n\t\tif (e.srcElement.nodeName == 'INPUT')\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t\t$(this).addClass('selected');\n\t\t\telse\n\t\t\t\t$(this).removeClass('selected');\n\t\t}\n\t\telse if (e.srcElement.nodeName != 'TD' && e.srcElement.nodeName != 'TR' && e.srcElement.nodeName != 'DIV')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t{\n\t\t\t\tc.prop('checked', false).parent().removeClass('checked');\n\t\t\t\t$(this).removeClass('selected');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tc.prop('checked', true).parent().addClass('checked');\n\t\t\t\t$(this).addClass('selected');\n\t\t\t}\n\t\t}\n\t\tif ($('.checkboxs tr.selectable :checked').size() == $('.checkboxs tr.selectable :checkbox').size())\n\t\t\t$('.checkboxs thead :checkbox').prop('checked', true).parent().addClass('checked');\n\t\telse\n\t\t\t$('.checkboxs thead :checkbox').prop('checked', false).parent().removeClass('checked');\n\n\t\tif ($('.checkboxs tr.selectable :checked').size() >= 1)\n\t\t\t$('.checkboxs_actions').show();\n\t\telse\n\t\t\t$('.checkboxs_actions').hide();\n\t});\n\t\n\tif ($('.checkboxs tbody :checked').size() == $('.checkboxs tbody :checkbox').size() && $('.checkboxs tbody :checked').length)\n\t\t$('.checkboxs thead :checkbox').prop('checked', true).parent().addClass('checked');\n\t\n\tif ($('.checkboxs tbody :checked').length)\n\t\t$('.checkboxs_actions').show();\n\t\n\t$('.radioboxs tbody tr.selectable').click(function(e){\n\t\tvar c = $(this).find(':radio');\n\t\tif (e.srcElement.nodeName == 'INPUT')\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t\t$(this).addClass('selected');\n\t\t\telse\n\t\t\t\t$(this).removeClass('selected');\n\t\t}\n\t\telse if (e.srcElement.nodeName != 'TD' && e.srcElement.nodeName != 'TR')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t{\n\t\t\t\tc.attr('checked', false);\n\t\t\t\t$(this).removeClass('selected');\t\t\t\t\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tc.attr('checked', true);\n\t\t\t\t$('.radioboxs tbody tr.selectable').removeClass('selected');\n\t\t\t\t$(this).addClass('selected');\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// sortable tables\n\tif ($( \".js-table-sortable\" ).length)\n\t{\t\n\t\t$( \".js-table-sortable\" ).sortable(\n\t\t{\n\t\t\tplaceholder: \"ui-state-highlight\",\n\t\t\titems: \"tbody tr\",\n\t\t\thandle: \".js-sortable-handle\",\n\t\t\tforcePlaceholderSize: true,\n\t\t\thelper: function(e, ui) \n\t\t\t{\n\t\t\t\tui.children().each(function() {\n\t\t\t\t\t$(this).width($(this).width());\n\t\t\t\t});\n\t\t\t\treturn ui;\n\t\t\t},\n\t\t\tstart: function(event, ui) \n\t\t\t{\n\t\t\t\tif (typeof mainYScroller != 'undefined') mainYScroller.disable();\n\t\t\t\tui.placeholder.html('<td colspan=\"' + $(this).find('tbody tr:first td').size() + '\">&nbsp;</td>');\n\t\t\t},\n\t\t    stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t\t});\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/contact.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * contact.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/* Google Maps API */\nif (typeof google != 'undefined')\n{\n\tvar map_latlng = new google.maps.LatLng(47.06285,21.943721);\n\tvar map_options = {\n\t\t\tzoom: 1,\n\t\t\tcenter: map_latlng,\n\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP,\n\t\t\tpanControl: false,\n\t\t\tzoomControl: false,\n\t\t\tscaleControl: false,\n\t\t\tmapTypeControl: false,\n\t\t\tdisableDefaultUI: true,\n\t\t\tscrollwheel: false,\n\t\t\tstyles: [{\n\t\t\t\tstylers: [{ \n\t\t\t\t\tsaturation: -20\n\t\t\t\t}, { \n\t\t\t\t\thue: themerPrimaryColor \n\t\t\t\t}]\n\t\t\t}, {\n\t\t\t\telementType: \"labels.text.fill\",\n\t\t\t\tstylers: [{ color: \"#444444\" }]\n\t\t\t    //stylers: [{ color: primaryColor }]\n\t\t\t}]\n\t};\n\n\tvar markerIconDefault_image = new google.maps.MarkerImage(commonPath + \"theme/images/marker.png\",\n\t\t\t// This marker is 44 pixels wide by 56 pixels tall.\n\t\t\tnew google.maps.Size(44, 56),\n\t\t\t// The origin for this image is 0,0.\n\t\t\tnew google.maps.Point(0, 0),\n\t\t\t// The anchor for this image is the base of the flagpole at 0,32.\n\t\t\tnew google.maps.Point(22, 56));\n\n\tvar markerIconDefault_shadow = new google.maps.MarkerImage(commonPath + \"theme/images/marker_shadow.png\",\n\t\t\t// This marker is 44 pixels wide by 56 pixels tall.\n\t\t\tnew google.maps.Size(37, 21),\n\t\t\t// The origin for this image is 0,0.\n\t\t\tnew google.maps.Point(0,0),\n\t\t\t// The anchor for this image is the base of the flagpole at 0,32.\n\t\t\tnew google.maps.Point(20, 10));\n\n\tvar markerIconDefault_shape = {\n\t\t\tcoord: [1, 1, 1, 52, 42, 52, 42 , 1],\n\t\t\ttype: 'poly'\n\t};\n\n}\n\nfunction initializeMap(el, options)\n{\n\tif (typeof google == 'undefined') \n\t\treturn false;\n\n\tvar map = new google.maps.Map(document.getElementById(el), options);\n\tvar marker = new google.maps.Marker({\n\t\tposition: map_latlng,\n\t\ttitle: 'My Location',\n\t\tshadow: markerIconDefault_shadow,\n\t\ticon: markerIconDefault_image,\n\t\tmap: map\n\t});\n}\n\n$(function()\n{\n\t// Contact Page Google Maps\n    if ($('#contact_gmap').size() > 0 && typeof google != 'undefined')\n    {\n    \tmap_options.zoom = 13;\n    \tinitializeMap('contact_gmap', map_options);\n    }\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/file_managers.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * file_managers.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function() \n{\n\t/* Plupload */\n\t$(\"#pluploadUploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'gears,browserplus,html5',\n\t\turl : 'theme/scripts/plugins/forms/plupload/examples/upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : 'theme/scripts/plugins/forms/plupload/js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : 'theme/scripts/plugins/forms/plupload/js/plupload.silverlight.xap'\n\t});\n\n\t// Client side form validation\n\t$('#pluploadForm').submit(function(e) {\n        var uploader = $('#pluploadUploader').pluploadQueue();\n\n        // Files in queue upload them first\n        if (uploader.files.length > 0) {\n            // When all files are uploaded submit form\n            uploader.bind('StateChanged', function() {\n                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {\n                    $('#pluploadForm').submit();\n                }\n            });\n                \n            uploader.start();\n        } else {\n            alert('You must queue at least one file.');\n        }\n\n        return false;\n    });\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/finances.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * finances.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initFinances();\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/form_elements.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_elements.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// button state demo\n\t$('#btn-loading')\n\t    .click(function () {\n\t        var btn = $(this)\n\t        btn.button('loading')\n\t        setTimeout(function () {\n\t            btn.button('reset')\n\t        }, 3000)\n\t    });\n\t\n\t/* Select2 - Advanced Select Controls */\n\t\n\t// Basic\n\t$('#select2_1').select2();\n\t\n\t// Multiple\n\t$('#select2_2').select2();\n\t\n\t// Placeholders\n\t$(\"#select2_3\").select2({\n\t\tplaceholder: \"Select a State\",\n\t\tallowClear: true\n\t});\n\t$(\"#select2_4\").select2({\n\t    placeholder: \"Select a State\",\n\t    allowClear: true\n\t});\n\t\n\t// tagging support\n\t$(\"#select2_5\").select2({tags:[\"red\", \"green\", \"blue\"]});\n\t\n\t// enable/disable mode\n\t$(\"#select2_6_1\").select2();\n\t$(\"#select2_6_2\").select2();\n\t$(\"#select2_6_enable\").click(function() { $(\"#select2_6_1,#select2_6_2\").select2(\"enable\"); });\n\t$(\"#select2_6_disable\").click(function() { $(\"#select2_6_1,#select2_6_2\").select2(\"disable\"); });\n\t\n\t// templating\n\tfunction format(state) {\n\t    if (!state.id) return state.text; // optgroup\n\t    return \"<img class='flag' src='http://ivaynberg.github.com/select2/images/flags/\" + state.id.toLowerCase() + \".png'/>\" + state.text;\n\t}\n\t$(\"#select2_7\").select2({\n\t    formatResult: format,\n\t    formatSelection: format,\n\t    escapeMarkup: function(m) { return m; }\n\t});\n\t\n\t/* DateTimePicker */\n\t\n\t// default\n\t$(\"#datetimepicker1\").datetimepicker({\n\t\tformat: 'yyyy-mm-dd hh:ii',\n\t\tstartDate: \"2013-02-14 10:00\",\n\t\tminView: 0\n\t});\n\t\n\t// component\n\t$('#datetimepicker2').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n\t\tstartDate: \"2013-02-14 10:00\"\n\t});\n\t\n\t// positioning\n\t$('#datetimepicker3').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n        autoclose: true,\n        todayBtn: true,\n        startDate: \"2013-02-14 10:00\",\n        pickerPosition: \"bottom-left\"\n\t});\n\t\n\t// advanced\n\t$('#datetimepicker4').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n        autoclose: true,\n        todayBtn: true,\n        startDate: \"2013-02-14 10:00\",\n        minuteStep: 10\n\t});\n\t\n\t// meridian\n\t$('#datetimepicker5').datetimepicker({\n\t\tformat: \"dd MM yyyy - HH:ii P\",\n\t    showMeridian: true,\n\t    autoclose: true,\n\t    startDate: \"2013-02-14 10:00\",\n\t    todayBtn: true\n\t});\n\t\n\t// with date only\n\t$(\"#datetimepicker6\").datetimepicker({\n\t    format: 'yyyy-mm-dd',\n\t    startDate: \"2013-06-18\",\n\t    minView: 2, // this forces the picker to not go any further than days view\n\t    pickerPosition: \"bottom-left\"\n\t});\n\t\n\t/*\n\t * Input Masks\n\t */\n\t$.extend($.inputmask.defaults, {\n        'autounmask': true\n    });\n\n    $(\"#inputmask-date\").inputmask(\"d/m/y\", {autoUnmask: true});\n    $(\"#inputmask-date-1\").inputmask(\"d/m/y\",{ \"placeholder\": \"*\"});\n    $(\"#inputmask-date-2\").inputmask(\"d/m/y\",{ \"placeholder\": \"dd/mm/yyyy\" });\n    $(\"#inputmask-phone\").inputmask(\"mask\", {\"mask\": \"(999) 999-9999\"});\n    $(\"#inputmask-tax\").inputmask({\"mask\": \"99-9999999\"});\n    $(\"#inputmask-decimal\").inputmask('decimal', { rightAlignNumerics: false });\n    $(\"#inputmask-currency\").inputmask('\\u20AC 999,999,999.99', { numericInput: true, rightAlignNumerics: false, greedy: false});\n    $(\"#inputmask-ssn\").inputmask(\"999-99-9999\", {clearMaskOnLostFocus: true });\n    \n    /*\n     * Multiselect\n     */\n    $('#multiselect-optgroup').multiSelect({ selectableOptgroup: true });\n    $('#pre-selected-options').multiSelect();\n    $('#multiselect-custom').multiSelect({\n    \tselectableHeader: \"<div class='custom-header'>Selectable items</div>\",\n    \tselectionHeader: \"<div class='custom-header'>Selection items</div>\",\n    \tselectableFooter: \"<div class='custom-header custom-footer'>Selectable footer</div>\",\n    \tselectionFooter: \"<div class='custom-header custom-footer'>Selection footer</div>\"\n    });\n    \n    /*\n     * bootstrap-timepicker\n     */\n    $('#timepicker1').timepicker();\n    $('#timepicker2').timepicker({\n        minuteStep: 1,\n        template: 'modal',\n        showSeconds: true,\n        showMeridian: false,\n        modalBackdrop: true\n    });\n    $('#timepicker3').timepicker({\n        minuteStep: 5,\n        showInputs: false,\n        disableFocus: true\n    });\n    $('#timepicker4').timepicker({\n        minuteStep: 1,\n        secondStep: 5,\n        showInputs: false,\n        showSeconds: true,\n        showMeridian: false\n    });\n    $('#timepicker5').timepicker({\n        template: false,\n        showInputs: false,\n        minuteStep: 5\n    });\n\t\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/form_validator.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_validator.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$.validator.setDefaults(\n{\n\tsubmitHandler: function() { alert(\"submitted!\"); },\n\tshowErrors: function(map, list) \n\t{\n\t\tthis.currentElements.parents('label:first, .controls:first').find('.error').remove();\n\t\tthis.currentElements.parents('.control-group:first').removeClass('error');\n\t\t\n\t\t$.each(list, function(index, error) \n\t\t{\n\t\t\tvar ee = $(error.element);\n\t\t\tvar eep = ee.parents('label:first').length ? ee.parents('label:first') : ee.parents('.controls:first');\n\t\t\t\n\t\t\tee.parents('.control-group:first').addClass('error');\n\t\t\teep.find('.error').remove();\n\t\t\teep.append('<p class=\"error help-block\"><span class=\"label label-important\">' + error.message + '</span></p>');\n\t\t});\n\t\t//refreshScrollers();\n\t}\n});\n\n$(function()\n{\n\t// validate signup form on keyup and submit\n\t$(\"#validateSubmitForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/form_wizards.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_wizards.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar bWizardTabClass = '';\n\t$('.wizard').each(function()\n\t{\n\t\tif ($(this).is('#rootwizard'))\n\t\t\tbWizardTabClass = 'bwizard-steps';\n\t\telse\n\t\t\tbWizardTabClass = '';\n\n\t\tvar wiz = $(this);\n\t\t\n\t\t$(this).bootstrapWizard(\n\t\t{\n\t\t\tonNext: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\tif(index==1)\n\t\t\t\t{\n\t\t\t\t\t// Make sure we entered the title\n\t\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, \n\t\t\tonLast: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\t// Make sure we entered the title\n\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}, \n\t\t\tonTabClick: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\t// Make sure we entered the title\n\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTabShow: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\tvar $total = navigation.find('li:not(.status)').length;\n\t\t\t\tvar $current = index+1;\n\t\t\t\tvar $percent = ($current/$total) * 100;\n\t\t\t\t\n\t\t\t\tif (wiz.find('.bar').length)\n\t\t\t\t{\n\t\t\t\t\twiz.find('.bar').css({width:$percent+'%'});\n\t\t\t\t\twiz.find('.bar')\n\t\t\t\t\t\t.find('.step-current').html($current)\n\t\t\t\t\t\t.parent().find('.steps-total').html($total)\n\t\t\t\t\t\t.parent().find('.steps-percent').html(Math.round($percent) + \"%\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// update status\n\t\t\t\tif (wiz.find('.step-current').length) wiz.find('.step-current').html($current);\n\t\t\t\tif (wiz.find('.steps-total').length) wiz.find('.steps-total').html($total);\n\t\t\t\tif (wiz.find('.steps-complete').length) wiz.find('.steps-complete').html(($current-1));\n\t\t\t\t\n\t\t\t\t// mark all previous tabs as complete\n\t\t\t\tnavigation.find('li:not(.status)').removeClass('primary');\n\t\t\t\tnavigation.find('li:not(.status):lt('+($current-1)+')').addClass('primary');\n\t\n\t\t\t\t// If it's the last tab then hide the last button and show the finish instead\n\t\t\t\tif($current >= $total) {\n\t\t\t\t\twiz.find('.pagination .next').hide();\n\t\t\t\t\twiz.find('.pagination .finish').show();\n\t\t\t\t\twiz.find('.pagination .finish').removeClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\twiz.find('.pagination .next').show();\n\t\t\t\t\twiz.find('.pagination .finish').hide();\n\t\t\t\t}\n\t\t\t},\n\t\t\ttabClass: bWizardTabClass,\n\t\t\tnextSelector: '.next', \n\t\t\tpreviousSelector: '.previous',\n\t\t\tfirstSelector: '.first', \n\t\t\tlastSelector: '.last'\n\t\t});\n\n\t\twiz.find('.finish').click(function() \n\t\t{\n\t\t\talert('Finished!, Starting over!');\n\t\t\twiz.find(\"a[data-toggle*='tab']:first\").trigger('click');\n\t\t});\n\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/google_analytics.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * google_analytics.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initGoogleAnalytics();\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/image_crop.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * image_crop.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#jcrop-target-1').Jcrop({},function(){\n\t\tapi = this;\n\t\tapi.setSelect([130,65,130+350,65+285]);\n\t\tapi.setOptions({ bgFade: true });\n\t\tapi.ui.selection.addClass('jcrop-selection');\n\t});\n\t\n\t/*\n\t * JCrop with preview Example\n\t */\n\t// Create variables (in this scope) to hold the API and image size\n    var jcrop_api,\n        boundx,\n        boundy,\n\n        // Grab some information about the preview pane\n        $preview = $('#preview-pane'),\n        $pcnt = $('#preview-pane .preview-container'),\n        $pimg = $('#preview-pane .preview-container img'),\n\n        xsize = $pcnt.width(),\n        ysize = $pcnt.height();\n\t\n\tfunction handleTarget2()\n\t{   \n\t    $('#jcrop-target-2').Jcrop({\n\t    \tonChange: updatePreview,\n\t    \tonSelect: updatePreview,\n\t    \taspectRatio: xsize / ysize\n\t    },function(){\n\t    \t// Use the API to get the real image size\n\t    \tvar bounds = this.getBounds();\n\t    \tboundx = bounds[0];\n\t    \tboundy = bounds[1];\n\t    \t// Store the API in the jcrop_api variable\n\t    \tjcrop_api = this;\n\t    \t\n\t    \tjcrop_api.setSelect([130,65,130+350,65+285]);\n\t    \tjcrop_api.setOptions({ bgFade: true });\n\t    \tjcrop_api.ui.selection.addClass('jcrop-selection');\n\n\t    \t// Move the preview into the jcrop container for css positioning\n\t    \t$preview.appendTo(jcrop_api.ui.holder);\n\t    });\n\t}\n\t\n\tfunction updatePreview(c)\n\t{\n\t\tif (parseInt(c.w) > 0)\n\t\t{\n\t\t\tvar rx = xsize / c.w;\n\t\t\tvar ry = ysize / c.h;\n\n\t\t\t$pimg.css({\n\t\t\t\twidth: Math.round(rx * boundx) + 'px',\n\t\t\t\theight: Math.round(ry * boundy) + 'px',\n\t\t\t\tmarginLeft: '-' + Math.round(rx * c.x) + 'px',\n\t\t\t\tmarginTop: '-' + Math.round(ry * c.y) + 'px'\n\t\t\t});\n\t\t}\n\t};\n\t\n\thandleTarget2();\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/index.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * index.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\t\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initIndex();\n\t\n\t/*\n\t * Chat widget\n\t */\n\tif ($('.widget-chat').length)\n\t{\n\t\t$('.widget-chat form').submit(function(e)\n\t\t{\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tvar direction = $(this).parents('.widget-chat').find('.media:first blockquote').is('.pull-right') ? 'left' : 'right';\n\t\t\tvar media = $(this).parents('.widget-chat').find('.media:first').clone();\n\t\t\tvar message = $(this).find('[name=\"message\"]');\n\t\t\t\n\t\t\t// prepare media\n\t\t\tmedia.hide();\n\t\t\tmedia.find('small.author a.strong').text('Awesome');\n\t\t\t\n\t\t\t// apply direction\n\t\t\tmedia.removeClass('right').addClass(direction);\n\t\t\tmedia.find('blockquote').attr('class', '').addClass('pull-' + direction);\n\t\t\tmedia.find('.media-object').removeClass('pull-left pull-right').addClass('pull-' + direction);\n\t\t\t\n\t\t\t// apply message\n\t\t\tmedia.find('blockquote p').text(message.val());\n\t\t\t\n\t\t\t// reset input\n\t\t\tmessage.val('');\n\t\t\t\n\t\t\t// jump slimScroll to top\n\t\t\t$(this).parents('.widget-chat:first').find('.slim-scroll').slimScroll({ scrollTo: '0' });\n\t\t\t\n\t\t\t// insert media in the conversation\n\t\t\t$(this).parents('.widget-chat:first').find('.chat-items').prepend(media).find('.media:hidden').slideDown();\n\t\t});\n\t}\n\t\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/infinite_scroll.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * infinite_scroll.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar isCustomScroll = $('body').css('overflow') === 'hidden';\n\n\t$('.jscroll').jscroll({\n\t    loadingHtml: '<div class=\"alert alert-primary center\">Loading ...</div>',\n\t    debug: false,\n\t    nextSelector: '.jscroll-next:last',\n\t    isCustomScroll: isCustomScroll,\n\t    isWindow: !isCustomScroll,\n\t    customScroll: isCustomScroll ? '#wrapper' : 'window'\n\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/maps_google.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * maps_google.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/*\n * Extending Gmaps with pagination\n */\n( function($) {\n\t$.extend($.ui.gmap.prototype, {\n\t\tpagination: function(prop) {\n\t\t\tvar $el = $(\"<div id='pagination' class='navbar' style='width: 100%'><div class='navbar-inner' style='padding: 0;'><ul class='nav' style='width: 100%;'><li style='width: 33%;'><a href='#' style='font-size: 20pt;' class='back-btn left'>&lsaquo;</a></li><li style='width: 33%;' class='center'><a class='display' style='font-size: 14pt;'></a></li><li style='width: 33%;'><a href='#' class='fwd-btn right' style='font-size: 20pt;'>&rsaquo;</a></li></ul></div></div>\");\n\t\t\tvar self = this, i = 0, prop = prop || 'title';\n\t\t\tself.set('pagination', function(a, b) {\n\t\t\t\tif (a) {\n\t\t\t\t\ti = i + b;\n\t\t\t\t\t$el.find('.display').text(self.get('markers')[i][prop]);\n\t\t\t\t\tself.get('map').panTo(self.get('markers')[i].getPosition());\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.get('pagination')(true, 0);\n\t\t\t$el.find('.back-btn').click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.get('pagination')((i > 0), -1, this);\n\t\t\t});\n\t\t\t$el.find('.fwd-btn').click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.get('pagination')((i < self.get('markers').length - 1), 1, this);\n\t\t\t});\n\t\t\tself.addControl($el, google.maps.ControlPosition.TOP_LEFT);\t\t\t\n\t\t}\n\t});\n} (jQuery) );\n\n$(function()\n{\n\t\n\t/*\n\t * Clustering\n\t */\n\tif ($('#google-map-clustering').length)\n\t{\n\t\t// We need to bind the map with the \"init\" event otherwise bounds will be null\n\t\t$('#google-map-clustering').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', function(evt, map) { \n\t\t\tvar bounds = map.getBounds();\n\t\t\tvar southWest = bounds.getSouthWest();\n\t\t\tvar northEast = bounds.getNorthEast();\n\t\t\tvar lngSpan = northEast.lng() - southWest.lng();\n\t\t\tvar latSpan = northEast.lat() - southWest.lat();\n\t\t\tfor ( var i = 0; i < 1000; i++ ) {\n\t\t\t\tvar lat = southWest.lat() + latSpan * Math.random();\n\t\t\t\tvar lng = southWest.lng() + lngSpan * Math.random();\n\t\t\t\t$('#google-map-clustering').gmap('addMarker', { \n\t\t\t\t\t'position': new google.maps.LatLng(lat, lng) \n\t\t\t\t}).click(function() {\n\t\t\t\t\t$('#google-map-clustering').gmap('openInfoWindow', { content : 'Hello world!' }, this);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('#google-map-clustering').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers')));\n\t\t\t// To call methods in MarkerClusterer simply call \n\t\t\t// $('#google-map-clustering').gmap('get', 'MarkerClusterer').callingSomeMethod();\n\t\t});\n\t}\n\t\n\t/*\n\t * Extend with pagination\n\t */\n\tif ($('#google-map-extend-pagination').length)\n\t{\n\t\tvar markers = [\n\t\t\t{'position': '59.32893000000001,18.064910000000054', 'title': 'Stockholm, Sweden' },\n\t\t\t{'position': '35.6894875,139.69170639999993', 'title': 'Tokyo, Japan' },\n\t\t\t{'position': '13.7234186, 100.47623190000002', 'title': 'Bangkok, Thailand' },\n\t\t\t{'position': '51.508129,-0.12800500000003012', 'title': 'London, Great Britain' },\n\t\t\t{'position': '40.7143528,-74.0059731', 'title': 'New York, USA' },\n\t\t\t{'position': '48.856614,2.3522219000000177', 'title': 'Paris, France' },\n\t\t\t{'position': '34.0522342,-118.2436849', 'title': 'Los Angeles, USA' },\n\t\t\t{'position': '55.75,37.616666699999996', 'title': 'Moskva, Ryssia' }\n\t\t];\n\t\t\n\t\t$('#google-map-extend-pagination').gmap({'zoom': 5, 'disableDefaultUI':true, 'callback': function() {\n\t\t\tvar self = this;\n\t\t\t$.each(markers, function(i, marker) {\n\t\t\t\tself.addMarker(marker).click(function() {\n\t\t\t\t\tself.openInfoWindow({'content': this.title}, this);\n\t\t\t\t});\n\t\t\t});\n\t\t}}).gmap('pagination', 'title');\n\t}\n\t\n\t/*\n\t * Filtering\n\t */\n\tif ($('#google-map-filters').length)\n\t{\n\t\t// format\n\t\tString.prototype.format = function() { a = this; for ( k in arguments ) { a = a.replace(\"{\" + k + \"}\", arguments[k]); } return a; };\n\t\t\n\t\t$('#google-map-filters').gmap({'disableDefaultUI':true}).bind('init', function(evt, map) { \n\t\t\t//$('#google-map-filters').gmap('addControl', 'tags-control', google.maps.ControlPosition.TOP_LEFT);\n\t\t\t$('#google-map-filters').gmap('addControl', 'radios', google.maps.ControlPosition.TOP_LEFT);\n\t\t\tvar southWest = map.getBounds().getSouthWest();\n\t\t\tvar northEast = map.getBounds().getNorthEast();\n\t\t\tvar lngSpan = northEast.lng() - southWest.lng();\n\t\t\tvar latSpan = northEast.lat() - southWest.lat();\n\t\t\tvar images = ['http://google-maps-icons.googlecode.com/files/friends.png', 'http://google-maps-icons.googlecode.com/files/home.png', 'http://google-maps-icons.googlecode.com/files/girlfriend.png', 'http://google-maps-icons.googlecode.com/files/dates.png', 'http://google-maps-icons.googlecode.com/files/realestate.png', 'http://google-maps-icons.googlecode.com/files/apartment.png', 'http://google-maps-icons.googlecode.com/files/family.png'];\n\t\t\tvar tags = ['jQuery', 'Google maps', 'Plugin', 'SEO', 'Java', 'PHP', 'C#', 'Ruby', 'JavaScript', 'HTML'];\n\t\t\t//$('#tags').append('<option value=\"all\">All</option>');\n\t\t\t$.each(tags, function(i, tag) {\n\t\t\t\t//$('#tags').append(('<option value=\"{0}\">{1}</option>').format(tag, tag));\n\t\t\t\t$('#radios').append(('<label style=\"margin-right:5px;display:block;\"><input type=\"checkbox\" style=\"margin-right:3px\" value=\"{0}\"/>{1}</label>').format(tag, tag));\n\t\t\t});\n\t\t\tfor ( i = 0; i < 100; i++ ) {\n\t\t\t\tvar temp = [];\n\t\t\t\tfor ( j = 0; j < Math.random()*5; j++ ) {\n\t\t\t\t\ttemp.push(tags[Math.floor(Math.random()*10)]);\n\t\t\t\t}\n\t\t\t\t$('#google-map-filters').gmap('addMarker', { 'icon': images[(Math.floor(Math.random()*7))], 'tags':temp, 'bound':true, 'position': new google.maps.LatLng(southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random()) } ).click(function() {\n\t\t\t\t\tvar visibleInViewport = ( $('#google-map-filters').gmap('inViewport', $(this)[0]) ) ? 'I\\'m visible in the viewport.' : 'I\\'m sad and hidden.';\n\t\t\t\t\t$('#google-map-filters').gmap('openInfoWindow', { 'content': $(this)[0].tags + '<br/>' +visibleInViewport }, this);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('input:checkbox').click(function() {\n\t\t\t\t$('#google-map-filters').gmap('closeInfoWindow');\n\t\t\t\t$('#google-map-filters').gmap('set', 'bounds', null);\n\t\t\t\tvar filters = [];\n\t\t\t\t$('input:checkbox:checked').each(function(i, checkbox) {\n\t\t\t\t\tfilters.push($(checkbox).val());\n\t\t\t\t});\n\t\t\t\tif ( filters.length > 0 ) {\n\t\t\t\t\t$('#google-map-filters').gmap('find', 'markers', { 'property': 'tags', 'value': filters, 'operator': 'OR' }, function(marker, found) {\n\t\t\t\t\t\tif (found) {\n\t\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarker.setVisible(found); \n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each($('#google-map-filters').gmap('get', 'markers'), function(i, marker) {\n\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\tmarker.setVisible(true); \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t/*$(\"#tags\").change(function() {\n\t\t\t\t$('#google-map-filters').gmap('closeInfoWindow');\n\t\t\t\t$('#google-map-filters').gmap('set', 'bounds', null);\n\t\t\t\tif ( $(this).val() == 'all' ) {\n\t\t\t\t\t$.each($('#google-map-filters').gmap('get', 'markers'), function(i, marker) {\n\t\t\t\t\t\tmarker.setVisible(true); \n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$('#google-map-filters').gmap('find', 'markers', { 'property': 'tags', 'value': $(this).val() }, function(marker, found) {\n\t\t\t\t\t\tif (found) {\n\t\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarker.setVisible(found); \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});*/\n\t\t});\n\t}\n\t\n\t/*\n\t * Geocoding\n\t */\n\tif ($('#google-map-geocoding').length)\n\t{\n\t\t$('#google-map-geocoding').gmap({'zoom': 2 }).bind('init', function(event, map) { \n\t\t\t$(map).click( function(event) {\n\t\t\t\t$('#google-map-geocoding').gmap('addMarker', {\n\t\t\t\t\t'position': event.latLng, \n\t\t\t\t\t'draggable': true, \n\t\t\t\t\t'bounds': false\n\t\t\t\t}, function(map, marker) {\n\t\t\t\t\t$('#modals').append('<div id=\"dialog'+marker.__gm_id+'\" class=\"hide\">' + \n\t\t\t\t\t\t\t'<label for=\"country\">Country</label>'+ \n\t\t\t\t\t\t\t'<input id=\"country'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"country\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"state\">State</label>' + \n\t\t\t\t\t\t\t'<input id=\"state'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"state\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"address\">Address</label>' + \n\t\t\t\t\t\t\t'<input id=\"address'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"address\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"comment\">Comment</label>' + \n\t\t\t\t\t\t\t'<textarea id=\"comment\" name=\"comment\" class=\"input-block-level\" rows=\"5\"></textarea>' + \n\t\t\t\t\t'</div>');\n\t\t\t\t\tfindLocation(marker.getPosition(), marker);\n\t\t\t\t}).dragend( function(event) {\n\t\t\t\t\tfindLocation(event.latLng, this);\n\t\t\t\t}).click( function() {\n\t\t\t\t\topenDialog(this);\n\t\t\t\t})\n\t\t\t});\n\t\t});\n\n\t\tfunction findLocation(location, marker) {\n\t\t\t$('#google-map-geocoding').gmap('search', {'location': location}, function(results, status) {\n\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\t$.each(results[0].address_components, function(i,v) {\n\t\t\t\t\t\tif ( v.types[0] == \"administrative_area_level_1\" || \n\t\t\t\t\t\t\t v.types[0] == \"administrative_area_level_2\" ) {\n\t\t\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"state\"]').attr('value', v.long_name);\n\t\t\t\t\t\t} else if ( v.types[0] == \"country\") {\n\t\t\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"country\"]').attr('value', v.long_name);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tmarker.setTitle(results[0].formatted_address);\n\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"address\"]').attr('value', results[0].formatted_address);\n\t\t\t\t\topenDialog(marker);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction openDialog(marker) {\n\t\t\tbootbox.dialog($('#dialog'+marker.__gm_id).html(), [{\n\t\t\t\t'label': 'Save',\n\t\t\t\t'class': 'btn-success',\n\t\t\t\t'callback': function(){}\n\t\t\t}, {\n\t\t\t\t'label': 'Remove',\n\t\t\t\t'class': 'btn-danger',\n\t\t\t\t'callback': function(){\n\t\t\t\t\tmarker.setMap(null);\n\t\t\t\t}\n\t\t\t}]);\n\t\t}\n\t}\n\t\n\t/*\n\t * JSON\n\t */\n\tif ($('#google-map-json').length)\n\t{\n\t\t$('#google-map-json').gmap().bind('init', function() { \n\t\t\t$.getJSON( basePath + 'theme/scripts/plugins/maps/jquery-ui-map/data/demo.json', function(data) { \n\t\t\t\t$.each( data.markers, function(i, marker) {\n\t\t\t\t\t$('#google-map-json').gmap('addMarker', { \n\t\t\t\t\t\t'position': new google.maps.LatLng(marker.latitude, marker.longitude), \n\t\t\t\t\t\t'bounds': true \n\t\t\t\t\t}).click(function() {\n\t\t\t\t\t\t$('#google-map-json').gmap('openInfoWindow', { 'content': marker.content }, this);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\t\n\t/*\n\t * Streetview\n\t */\n\tif ($('#google-map-streetview').length)\n\t{\n\t\t$('#google-map-streetview').gmap({ 'disableDefaultUI':true, 'callback': function() {\n\t\t\tvar self = this;\n\t\t\tself.microformat('.vevent', function(result, item, index) {\n\t\t\t\tvar clone = $(item).clone().addClass('ui-dialog-vevent').append('<div id=\"streetview{0}\" class=\"streetview\"></div>'.replace('{0}', index));\n\t\t\t\tclone.find('p').remove();\n\t\t\t\tvar latlng = new google.maps.LatLng(result.location[0].geo[0].latitude['value-title'], result.location[0].geo[0].longitude['value-title']);\n\t\t\t\tself.addMarker( { 'bounds':true, 'position': latlng, 'title': result.summary, 'icon': 'http://google-maps-icons.googlecode.com/files/music-rock.png' }, function(map, marker) {\n\t\t\t\t\t$(item).find('.summary').click( function() {\n\t\t\t\t\t\t$(marker).triggerEvent('click');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\t$(item).mouseover(function() {\n\t\t\t\t\t\tself.get('map').panTo(marker.getPosition());\n\t\t\t\t\t});\n\t\t\t\t}).click(function() {\n\t\t\t\t\tself.get('map').panTo( $(this)[0].getPosition());\n\t\t\t\t\t//$(clone).dialog({ 'modal': true, 'width': 530, 'title': result.summary, 'resizable': false, 'draggable': false });\n\t\t\t\t\tbootbox.alert($(clone).html());\n\t\t\t\t\tself.displayStreetView('streetview{0}'.replace('{0}', index), { 'position': $(this)[0].getPosition() });\n\t\t\t\t});\n\t\t\t});\n\t\t}});\n\t}\n\t\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/maps_vector.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * maps_vector.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t\n\t$('#maps_vector_tabs a[data-toggle=\"tab\"]').on('shown', function (e)\n\t{\n\t\tif ($(this).attr('data-init'))\n\t\t\treturn;\n\t\t\n\t\t$(this).attr('data-init', 1);\n\t\tswitch ($(this).attr('href'))\n\t\t{\n\t\t\tcase '#tab1':\n\t\t\t\tinitWorldMapGDP();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab2':\n\t\t\t\tinitWorldMapMarkers();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab3':\n\t\t\t\tinitUSAUnemployment();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab4':\n\t\t\t\tinitRegionSelection();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab5':\n\t\t\t\tinitFranceElections();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab6':\n\t\t\t\tinitRandomColors();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab7':\n\t\t\t\tinitMallMap();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab8':\n\t\t\t\tinitProjectionMap();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\t// load this map by default\n\tinitWorldMapGDP();\n\t\n\t// GDP by country\n\tfunction initWorldMapGDP()\n\t{\n\t\t$('#world-map-gdp').vectorMap({\n\t\t\tmap: 'world_mill_en',\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tvalues: gdpData,\n\t\t\t\t\tscale: ['#C8EEFF', '#0071A4'],\n\t\t\t\t\tnormalizeFunction: 'polynomial'\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonLabelShow: function(e, el, code){\n\t\t\t\tel.html(el.html()+' (GDP - '+gdpData[code]+')');\n\t\t\t}\n\t\t});\n\t}\n\t\n\t// World map markers\n\tfunction initWorldMapMarkers()\n\t{\n\t\t$('#world-map-markers').vectorMap({\n\t\t\tmap: 'world_mill_en',\n\t\t\tscaleColors: ['#C8EEFF', '#0071A4'],\n\t\t\tnormalizeFunction: 'polynomial',\n\t\t\thoverOpacity: 0.7,\n\t\t\thoverColor: false,\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: primaryColor,\n\t\t\t\t\tstroke: '#383f47'\n\t\t\t\t}\n\t\t\t},\n\t\t\tbackgroundColor: '#383f47',\n\t\t\tmarkers: [\n\t\t\t          {latLng: [41.90, 12.45], name: 'Vatican City'},\n\t\t\t          {latLng: [43.73, 7.41], name: 'Monaco'},\n\t\t\t          {latLng: [-0.52, 166.93], name: 'Nauru'},\n\t\t\t          {latLng: [-8.51, 179.21], name: 'Tuvalu'},\n\t\t\t          {latLng: [43.93, 12.46], name: 'San Marino'},\n\t\t\t          {latLng: [47.14, 9.52], name: 'Liechtenstein'},\n\t\t\t          {latLng: [7.11, 171.06], name: 'Marshall Islands'},\n\t\t\t          {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'},\n\t\t\t          {latLng: [3.2, 73.22], name: 'Maldives'},\n\t\t\t          {latLng: [35.88, 14.5], name: 'Malta'},\n\t\t\t          {latLng: [12.05, -61.75], name: 'Grenada'},\n\t\t\t          {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'},\n\t\t\t          {latLng: [13.16, -59.55], name: 'Barbados'},\n\t\t\t          {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'},\n\t\t\t          {latLng: [-4.61, 55.45], name: 'Seychelles'},\n\t\t\t          {latLng: [7.35, 134.46], name: 'Palau'},\n\t\t\t          {latLng: [42.5, 1.51], name: 'Andorra'},\n\t\t\t          {latLng: [14.01, -60.98], name: 'Saint Lucia'},\n\t\t\t          {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'},\n\t\t\t          {latLng: [1.3, 103.8], name: 'Singapore'},\n\t\t\t          {latLng: [1.46, 173.03], name: 'Kiribati'},\n\t\t\t          {latLng: [-21.13, -175.2], name: 'Tonga'},\n\t\t\t          {latLng: [15.3, -61.38], name: 'Dominica'},\n\t\t\t          {latLng: [-20.2, 57.5], name: 'Mauritius'},\n\t\t\t          {latLng: [26.02, 50.55], name: 'Bahrain'},\n\t\t\t          {latLng: [0.33, 6.73], name: 'So Tom and Prncipe'}\n\t\t\t          ]\n\t\t});\n\t}\n\t\n\t// USA unemployment\n\tfunction initUSAUnemployment()\n\t{\n\t\t$.getJSON( basePath + 'theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json', function(data){\n\t\t\tvar val = 2009;\n\t\t\tstatesValues = jvm.values.apply({}, jvm.values(data.states)),\n\t\t\tmetroPopValues = Array.prototype.concat.apply([], jvm.values(data.metro.population)),\n\t\t\tmetroUnemplValues = Array.prototype.concat.apply([], jvm.values(data.metro.unemployment));\n\n\t\t\t$('#usa-unemployment').vectorMap({\n\t\t\t\tmap: 'us_aea_en',\n\t\t\t\tmarkers: data.metro.coords,\n\t\t\t\tseries: {\n\t\t\t\t\tmarkers: [{\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tscale: ['#FEE5D9', '#A50F15'],\n\t\t\t\t\t\tvalues: data.metro.unemployment[val],\n\t\t\t\t\t\tmin: jvm.min(metroUnemplValues),\n\t\t\t\t\t\tmax: jvm.max(metroUnemplValues)\n\t\t\t\t\t},{\n\t\t\t\t\t\tattribute: 'r',\n\t\t\t\t\t\tscale: [5, 20],\n\t\t\t\t\t\tvalues: data.metro.population[val],\n\t\t\t\t\t\tmin: jvm.min(metroPopValues),\n\t\t\t\t\t\tmax: jvm.max(metroPopValues)\n\t\t\t\t\t}],\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: ['#DEEBF7', '#08519C'],\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data.states[val],\n\t\t\t\t\t\tmin: jvm.min(statesValues),\n\t\t\t\t\t\tmax: jvm.max(statesValues)\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tonMarkerLabelShow: function(event, label, index){\n\t\t\t\t\tlabel.html(\n\t\t\t\t\t\t\t'<b>'+data.metro.names[index]+'</b><br/>'+\n\t\t\t\t\t\t\t'<b>Population: </b>'+data.metro.population[val][index]+'</br>'+\n\t\t\t\t\t\t\t'<b>Unemployment rate: </b>'+data.metro.unemployment[val][index]+'%'\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tonRegionLabelShow: function(event, label, code){\n\t\t\t\t\tlabel.html(\n\t\t\t\t\t\t\t'<b>'+label.html()+'</b></br>'+\n\t\t\t\t\t\t\t'<b>Unemployment rate: </b>'+data.states[val][code]+'%'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar mapObject = $('#usa-unemployment').vectorMap('get', 'mapObject');\n\n\t\t\t$(\"#usa-unemployment-slider\").slider({\n\t\t\t\tvalue: val,\n\t\t\t\tmin: 2005,\n\t\t\t\tmax: 2009,\n\t\t\t\tstep: 1,\n\t\t\t\tcreate: JQSliderCreate,\n\t\t\t\tslide: function( event, ui ) {\n\t\t\t\t\t$('#usa-unemployment-slider-year strong').html(ui.value);\n\t\t\t\t\tval = ui.value;\n\t\t\t\t\tmapObject.series.regions[0].setValues(data.states[ui.value]);\n\t\t\t\t\tmapObject.series.markers[0].setValues(data.metro.unemployment[ui.value]);\n\t\t\t\t\tmapObject.series.markers[1].setValues(data.metro.population[ui.value]);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\t// regions selection\n\tfunction initRegionSelection()\n\t{\n\t\tmap = new jvm.WorldMap({\n\t\t\tcontainer: $('#regions-selection'),\n\t\t\tmap: 'de_merc_en',\n\t\t\tregionsSelectable: true,\n\t\t\tmarkersSelectable: true,\n\t\t\tmarkers: [\n\t\t\t          {latLng: [52.50, 13.39], name: 'Berlin'},\n\t\t\t          {latLng: [53.56, 10.00], name: 'Hamburg'},\n\t\t\t          {latLng: [48.13, 11.56], name: 'Munich'},\n\t\t\t          {latLng: [50.95, 6.96], name: 'Cologne'},\n\t\t\t          {latLng: [50.11, 8.68], name: 'Frankfurt am Main'},\n\t\t\t          {latLng: [48.77, 9.17], name: 'Stuttgart'},\n\t\t\t          {latLng: [51.23, 6.78], name: 'Dusseldorf'},\n\t\t\t          {latLng: [51.51, 7.46], name: 'Dortmund'},\n\t\t\t          {latLng: [51.45, 7.01], name: 'Essen'},\n\t\t\t          {latLng: [53.07, 8.80], name: 'Bremen'}\n\t\t\t],\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: '#4DAC26'\n\t\t\t\t},\n\t\t\t    selected: {\n\t\t\t    \tfill: '#CA0020'\n\t\t\t    }\n\t\t\t},\n\t\t\tregionStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: '#B8E186'\n\t\t\t\t},\n\t\t\t    selected: {\n\t\t\t    \tfill: '#F4A582'\n\t\t\t    }\n\t\t\t},\n\t\t\tseries: {\n\t\t\t\tmarkers: [{\n\t\t\t\t\tattribute: 'r',\n\t\t\t        scale: [5, 15],\n\t\t\t        values: [\n\t\t\t                 887.70,\n\t\t\t        \t\t 755.16,\n\t\t\t        \t\t 310.69,\n\t\t\t        \t\t 405.17,\n\t\t\t        \t\t 248.31,\n\t\t\t        \t\t 207.35,\n\t\t\t        \t\t 217.22,\n\t\t\t        \t\t 280.71,\n\t\t\t        \t\t 210.32,\n\t\t\t        \t\t 325.42\n\t\t\t        ]\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonRegionSelected: function(){\n\t\t\t\tif (window.localStorage) {\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t'jvectormap-selected-regions',\n\t\t\t        \t\tJSON.stringify(map.getSelectedRegions())\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonMarkerSelected: function(){\n\t\t\t\tif (window.localStorage) {\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t'jvectormap-selected-markers',\n\t\t\t        \t\tJSON.stringify(map.getSelectedMarkers())\n\t\t\t\t\t);\n\t\t\t        }\n\t\t\t}\n\t\t});\n\t\tmap.setSelectedRegions( JSON.parse( window.localStorage.getItem('jvectormap-selected-regions') || '[]' ) );\n\t\tmap.setSelectedMarkers( JSON.parse( window.localStorage.getItem('jvectormap-selected-markers') || '[]' ) );\n\t}\n\t\n\t// France elections\n\tfunction initFranceElections()\n\t{\n\t\t$.getJSON('theme/scripts/plugins/maps/jvectormap/data/france-elections.json', function(data){\n\t\t\tnew jvm.WorldMap({\n\t\t\t\tmap: 'fr_merc_en',\n\t\t\t\tcontainer: $('#france-2007'),\n\t\t\t\tseries: {\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: {\n\t\t\t\t\t\t\t'1': '#4169E1',\n\t\t\t\t\t\t\t'2': '#FF69B4'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data['year2007'].results\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnew jvm.WorldMap({\n\t\t\t\tmap: 'fr_merc_en',\n\t\t\t\tcontainer: $('#france-2012'),\n\t\t\t\tseries: {\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: {\n\t\t\t\t\t\t\t'1': '#FF69B4',\n\t\t\t\t\t\t\t'2': '#4169E1'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data['year2012'].results\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\t// random colors\n\tvar palette = ['#66C2A5', '#FC8D62', '#8DA0CB', '#E78AC3', '#A6D854'],\n\t\tgenerateColors = function(){\n\t        var colors = {},\n\t            key;\n\t\n\t        for (key in colorsMap.regions) {\n\t          colors[key] = palette[Math.floor(Math.random()*palette.length)];\n\t        }\n\t        return colors;\n\t      },\n\t      colorsMap;\n\t      \n\tfunction initRandomColors()\n\t{\n\t\tcolorsMap = new jvm.WorldMap({\n\t\t\tmap: 'es_merc_en',\n\t\t\tcontainer: $('#random-colors-map'),\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tattribute: 'fill'\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\t\tcolorsMap.series.regions[0].setValues(generateColors());\n\t\t$('#update-colors-button').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tcolorsMap.series.regions[0].setValues(generateColors());\n\t\t});\n\t}\n\t\n\t// mall map\n\tfunction initMallMap()\n\t{\n\t\t$('#mall-map').vectorMap({\n\t\t\tmap: 'mall',\n\t\t\tbackgroundColor: 'transparent',\n\t\t\tmarkers: [{\n\t\t\t\tcoords: [60, 110],\n\t\t\t\tname: 'Escalator 1',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [260, 95],\n\t\t\t\tname: 'Escalator 2',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [434, 95],\n\t\t\t\tname: 'Escalator 3',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [634, 110],\n\t\t\t\tname: 'Escalator 4',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t}],\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tF102: 'SPORTS & OUTDOOR',\n\t\t\t\t\t\tF103: 'HOME DECOR',\n\t\t\t\t\t\tF105: 'FASHION',\n\t\t\t\t\t\tF106: 'OTHER',\n\t\t\t\t\t\tF108: 'BEAUTY & SPA',\n\t\t\t\t\t\tF109: 'FASHION',\n\t\t\t\t\t\tF110: 'BEAUTY & SPA',\n\t\t\t\t\t\tF111: 'URBAN FAVORITES',\n\t\t\t\t\t\tF114: 'SERVICES',\n\t\t\t\t\t\tF166: 'DINING',\n\t\t\t\t\t\tF167: 'FASHION',\n\t\t\t\t\t\tF169: 'DINING',\n\t\t\t\t\t\tF170: 'ENTERTAINMENT',\n\t\t\t\t\t\tF172: 'DINING',\n\t\t\t\t\t\tF174: 'DINING',\n\t\t\t\t\t\tF115: 'KIDS STUFF',\n\t\t\t\t\t\tF117: 'LIFESTYLE',\n\t\t\t\t\t\tF118: 'URBAN FAVORITES',\n\t\t\t\t\t\tF119: 'FASHION',\n\t\t\t\t\t\tF120: 'FASHION',\n\t\t\t\t\t\tF122: 'KIDS STUFF',\n\t\t\t\t\t\tF124: 'KIDS STUFF',\n\t\t\t\t\t\tF125: 'KIDS STUFF',\n\t\t\t\t\t\tF126: 'KIDS STUFF',\n\t\t\t\t\t\tF128: 'KIDS STUFF',\n\t\t\t\t\t\tF129: 'LIFESTYLE',\n\t\t\t\t\t\tF130: 'HOME DECOR',\n\t\t\t\t\t\tF132: 'DINING',\n\t\t\t\t\t\tF133: 'SPORTS & OUTDOOR',\n\t\t\t\t\t\tF134: 'KIDS STUFF',\n\t\t\t\t\t\tF135: 'LIFESTYLE',\n\t\t\t\t\t\tF136: 'LIFESTYLE',\n\t\t\t\t\t\tF139: 'KIDS STUFF',\n\t\t\t\t\t\tF153: 'DINING',\n\t\t\t\t\t\tF155: 'FASHION',\n\t\t\t\t\t\tF156: 'URBAN FAVORITES',\n\t\t\t\t\t\tF157: 'URBAN FAVORITES',\n\t\t\t\t\t\tF158: 'LINGERIE & UNDERWEAR',\n\t\t\t\t\t\tF159: 'FASHION',\n\t\t\t\t\t\tF160: 'FASHION',\n\t\t\t\t\t\tF162: 'FASHION',\n\t\t\t\t\t\tF164: 'FASHION',\n\t\t\t\t\t\tF165: 'FASHION',\n\t\t\t\t\t\tFR01: 'REST ROOMS',\n\t\t\t\t\t\tFR02: 'REST ROOMS',\n\t\t\t\t\t\tFR03: 'REST ROOMS',\n\t\t\t\t\t\tFR04: 'REST ROOMS',\n\t\t\t\t\t\tFFC: 'DINING'\n\t\t\t\t\t},\n\t\t\t\t\tscale: {\n\t\t\t\t\t\t\"FASHION\": \"#2761ad\",\n\t\t\t\t\t\t\"LINGERIE & UNDERWEAR\": \"#d58aa3\",\n\t\t\t\t\t\t\"BEAUTY & SPA\": \"#ee549f\",\n\t\t\t\t\t\t\"URBAN FAVORITES\": \"#15bbba\",\n\t\t\t\t\t\t\"SPORTS & OUTDOOR\": \"#8864ab\",\n\t\t\t\t\t\t\"KIDS STUFF\": \"#ef4e36\",\n\t\t\t\t\t\t\"ENTERTAINMENT\": \"#e47325\",\n\t\t\t\t\t\t\"HOME DECOR\": \"#a2614f\",\n\t\t\t\t\t\t\"LIFESTYLE\": \"#8a8934\",\n\t\t\t\t\t\t\"DINING\": \"#73bb43\",\n\t\t\t\t\t\t\"REST ROOMS\": \"#6c260f\",\n\t\t\t\t\t\t\"SERVICES\": \"#504d7c\",\n\t\t\t\t\t\t\"OTHER\": \"#c7b789\"\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonRegionLabelShow: function(e, el, code){\n\t\t\t\tif (el.html() === '') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\t// reverse projection map\n\tvar mapProjection,\n\t    markerIndex = 0,\n\t    markersCoords = {};\n\t\n\tfunction initProjectionMap()\n\t{\n\t\tmapProjection = new jvm.WorldMap({\n\t\t\tmap: 'us_lcc_en',\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: 'red'\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontainer: $('#projection-map'),\n\t\t\tonMarkerLabelShow: function(e, label, code){\n\t\t\t\tmapProjection.label.text(markersCoords[code].lat.toFixed(2)+', '+markersCoords[code].lng.toFixed(2));\n\t\t\t},\n\t\t\tonMarkerClick: function(e, code){\n\t\t\t\tmapProjection.removeMarkers([code]);\n\t\t\t\tmapProjection.label.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tmapProjection.container.click(function(e){\n\t\t\tvar latLng = mapProjection.pointToLatLng(e.offsetX, e.offsetY),\n\t\t\ttargetCls = $(e.target).attr('class');\n\n\t\t\tif (latLng && (!targetCls || (targetCls && $(e.target).attr('class').indexOf('jvectormap-marker') === -1))) {\n\t\t\t\tmarkersCoords[markerIndex] = latLng;\n\t\t\t\tmapProjection.addMarker(markerIndex, {latLng: [latLng.lat, latLng.lng]});\n\t\t\t\tmarkerIndex += 1;\n\t\t\t}\n\t\t});\n\t}\n\t\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/modals.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * modals.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#modals-bootbox-alert').click(function()\n\t{\n\t\tbootbox.alert(\"Hello World!\", function(result) \n\t\t{\n\t\t\t$.gritter.add({\n\t\t\t\ttitle: 'Callback!',\n\t\t\t\ttext: \"I'm just a BootBox Alert callback!\"\n\t\t\t});\n\t\t});\n\t});\n\t$('#modals-bootbox-confirm').click(function()\n\t{\n\t\tbootbox.confirm(\"Are you sure?\", function(result) \n\t\t{\n\t\t\t$.gritter.add({\n\t\t\t\ttitle: 'Callback!',\n\t\t\t\ttext: \"BootBox Confirm Callback with result: \"+ result\n\t\t\t});\n\t\t});\n\t});\n\t$('#modals-bootbox-prompt').click(function()\n\t{\n\t\tbootbox.prompt(\"What is your name?\", function(result) \n\t\t{                \n\t\t\tif (result === null) {                                             \n\t\t\t\t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"BootBox Prompt Dismissed!\"\n\t\t\t\t});                            \n\t\t\t} else {\n\t\t\t\t$.gritter.add({\n\t\t\t\t\ttitle: 'Hi ' + result,\n\t\t\t\t\ttext: \"BootBox Prompt Callback with result: \"+ result\n\t\t\t\t});                          \n\t\t\t}\n\t\t});\n\t});\n\t$('#modals-bootbox-custom').click(function()\n\t{\n\t\tbootbox.dialog(\"I am a custom dialog\", [{\n\t\t    \"label\" : \"Success!\",\n\t\t    \"class\" : \"btn-success\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Great success\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Danger!\",\n\t\t    \"class\" : \"btn-danger\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Uh oh, look out!\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Click ME!\",\n\t\t    \"class\" : \"btn-primary\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Primary button!\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Just a button...\"\n\t\t}]);\n\t});\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/notifications.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * notifications.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('[data-toggle=\"notyfy\"]').click(function () \n\t{\n\t\tvar self = $(this);\n\t\tif(self.data('layout') == 'inline') \n\t\t{\n\t\t\t$(self.data('custom')).notyfy(\n\t\t\t{\n\t\t\t\ttext: text[self.data('type')],\n\t\t\t\ttype: self.data('type'),\n\t\t\t\tdismissQueue: true,\n\t\t\t\tbuttons: (self.data('type') != 'confirm') ? false : [{\n\t\t\t\t\taddClass: 'btn btn-success btn-small glyphicons btn-icon ok_2',\n\t\t\t\t\ttext: '<i></i> Ok',\n\t\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t\t$notyfy.close();\n\t\t\t\t\t\t$(self.data('custom')).notyfy({\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t\ttext: 'You clicked \"<strong>Ok</strong>\" button.',\n\t\t\t\t\t\t\ttype: 'success'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\taddClass: 'btn btn-danger btn-small glyphicons btn-icon remove_2',\n\t\t\t\t\ttext: 'Cancel',\n\t\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t\t$notyfy.close();\n\t\t\t\t\t\t$(self.data('custom')).notyfy({\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t\ttext: 'You clicked \"Cancel\" button',\n\t\t\t\t\t\t\ttype: 'error'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\n\t\tnotyfy({\n\t\t\ttext: notification[self.data('type')],\n\t\t\ttype: self.data('type'),\n\t\t\tdismissQueue: true,\n\t\t\tlayout: self.data('layout'),\n\t\t\tbuttons: (self.data('type') != 'confirm') ? false : [{\n\t\t\t\taddClass: 'btn btn-success btn-small btn-icon glyphicons ok_2',\n\t\t\t\ttext: '<i></i> Ok',\n\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t$notyfy.close();\n\t\t\t\t\tnotyfy({\n\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\ttext: 'You clicked \"<strong>Ok</strong>\" button',\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\tlayout: self.data('layout')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\taddClass: 'btn btn-danger btn-small btn-icon glyphicons remove_2',\n\t\t\t\ttext: '<i></i> Cancel',\n\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t$notyfy.close();\n\t\t\t\t\tnotyfy({\n\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\ttext: '<strong>You clicked \"Cancel\" button<strong>',\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tlayout: self.data('layout')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\treturn false;\n\t});\n\t\n\t/* Gritter Notifications */\n\t\n\t/* Global setting override\n\t$.extend($.gritter.options, {\n\t    class_name: 'gritter-light', // for light notifications (can be added directly to $.gritter.add too)\n\t    position: 'bottom-left', // possibilities: bottom-left, bottom-right, top-left, top-right\n\t\tfade_in_speed: 100, // how fast notifications fade in (string or int)\n\t\tfade_out_speed: 100, // how fast the notices fade out\n\t\ttime: 3000 // hang on the screen for...\n\t});\n    */\n\n\t$('.gritter-add-sticky').click(function()\n\t{\n\t\tvar unique_id = $.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a sticky notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: true,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: '',\n\t\t\t// (string | optional) the class name you want to apply to that specific message\n\t\t\tclass_name: 'my-sticky-class'\n\t\t});\n\t\t\n\t\t// You can have it return a unique id, this can be used to manually remove it later using\n\t\t/*\n\t\tsetTimeout(function(){\n\n\t\t\t$.gritter.remove(unique_id, {\n\t\t\t\tfade: true,\n\t\t\t\tspeed: 'slow'\n\t\t\t});\n\n\t\t}, 6000)\n\t\t*/\n\t\treturn false;\n\t});\n\n\t$('.gritter-add-regular').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a regular notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: false,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: ''\n\t\t});\n\n\t\treturn false;\n\n\t});\n\t\n\t$('.gritter-add-primary').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a primary notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: false,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: '',\n\t\t\t// (string | optional) the class name you want to apply to that specific message\n\t\t\tclass_name: 'gritter-primary'\n\t\t});\n\n\t\treturn false;\n\n\t});\n\n    $('.gritter-add-max').click(function()\n    {\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice with a max of 3 on screen at one time!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (function) before the gritter notice is opened\n            before_open: function(){\n                if($('.gritter-item-wrapper').length == 3)\n                {\n                    // Returning false prevents a new gritter from opening\n                    return false;\n                }\n            }\n        });\n        return false;\n    });\n\n\t$('.gritter-add-without-image').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a notice without an image!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.'\n\t\t});\n\t\treturn false;\n\t});\n\n    $('.gritter-add-white').click(function()\n    {\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a light notification',\n            // (string | mandatory) the text inside the notification\n            text: 'Just add a \"gritter-light\" class_name to your $.gritter.add or globally to $.gritter.options.class_name',\n            class_name: 'gritter-light'\n        });\n        return false;\n    });\n\n});\n\nvar notification = [];\n\nnotification['alert'] = 'Best check yo self, you\\'<strong>re not looking too good</strong>.';\nnotification['primary'] = \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.\";\nnotification['error'] = '<strong>Change a few things up and try submitting again.</strong> This Error message.';\nnotification['success'] = 'You <strong>successfully</strong> read this important alert message.';\nnotification['information'] = 'This alert needs your attention, but it\\'s not super <strong>important</strong>.';\nnotification['warning'] = '<strong>Warning!</strong> Best check yo self, you\\'re not looking too good.';\nnotification['confirm'] = 'Do you want to continue?';"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/sliders.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * sliders.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* jQRangeSliders */\n\t\n\t// regular Range Slider\n\t$(\"#rangeSlider\").rangeSlider();\n\t\n\t// edit Range Slider\n\t$(\"#rangeSliderEdit\").editRangeSlider();\n\t\n\t// date Range Slider\n\t$(\"#rangeSliderDate\").dateRangeSlider();\n\t\n\t// Range Slider without Arrows\n    $(\"#rangeSliderWArrows\").rangeSlider({ arrows: false });\n    \n    // Range Slider Formatter\n    $(\"#rangeSliderFormatter\").rangeSlider({\n    \tformatter:function(val){\n    \t\tvar value = Math.round(val * 5) / 5,\n    \t\tdecimal = value - Math.round(val);\n    \t\treturn \"$\" + (decimal == 0 ? value.toString() + \".0\" : value.toString());\n    \t}\n    });\n    \n    // Range Slider Ruler\n    $(\"#rangeSliderRuler\").rangeSlider({\n    \tscales: [\n\t         // Primary scale\n\t         {\n\t        \t first: function(val){ return val; },\n\t        \t next: function(val){ return val + 10; },\n\t        \t stop: function(val){ return false; },\n\t        \t label: function(val){ return val; },\n\t        \t format: function(tickContainer, tickStart, tickEnd){ \n\t        \t\t tickContainer.addClass(\"myCustomClass\");\n\t        \t }\n\t         },\n\t         // Secondary scale\n\t         {\n\t        \t first: function(val){ return val; },\n\t        \t next: function(val){\n\t        \t\t if (val % 10 === 9){\n\t        \t\t\t return val + 2;\n\t        \t\t }\n\t        \t\t return val + 1;\n\t        \t },\n\t        \t stop: function(val){ return false; },\n\t        \t label: function(){ return null; }\n\t         }]\n    });\n    \n    // Date Range Slider Ruler\n    var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n    $(\"#rangeSliderRulerDate\").dateRangeSlider(\n    {\n    \tbounds: {min: new Date(2012, 0, 1), max: new Date(2012, 11, 31, 12, 59, 59)},\n    \tdefaultValues: {min: new Date(2012, 1, 10), max: new Date(2012, 4, 22)},\n    \tscales: [{\n    \t\tfirst: function(value){ return value; },\n    \t\tend: function(value) {return value; },\n    \t\tnext: function(value){\n    \t\t\tvar next = new Date(value);\n    \t\t\treturn new Date(next.setMonth(value.getMonth() + 1));\n    \t\t},\n    \t\tlabel: function(value){\n    \t\t\treturn months[value.getMonth()];\n    \t\t},\n    \t\tformat: function(tickContainer, tickStart, tickEnd){\n    \t\t\ttickContainer.addClass(\"myCustomClass\");\n    \t\t}\n    \t}]\n    });\n    \n    // Range Slider Step\n    $(\"#rangeSliderStep\").rangeSlider({step: 10});\n    \n    // Range Slider Wheel Zoom\n    $(\"#rangeSliderWheelZoom\").rangeSlider({wheelMode: \"zoom\"});\n    \n    // Range Slider Wheel Scroll\n    $(\"#rangeSliderWheelScroll\").rangeSlider({wheelMode: \"scroll\", wheelSpeed: 30});\n    \n    /*\n\t * JQueryUI Slider: Default slider\n\t */\n\tif ($('.slider-single').size() > 0)\n\t{\n\t\t$( \".slider-single\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\tvalue: 10,\n\t        animate: true,\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n\t}\n\t\n\t/*\n\t * JQueryUI Slider: Multiple Vertical Sliders\n\t */\n\t$( \".sliders-vertical > span\" ).each(function() \n\t{\n        var value = parseInt( $( this ).text(), 10 );\n        $( this ).empty().slider({\n        \tcreate: JQSliderCreate,\n            value: value,\n            range: \"min\",\n            animate: true,\n            orientation: \"vertical\",\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n    });\n\t\n\t/*\n\t * JQueryUI Slider: Range Slider\n\t */\n\tif ($('.range-slider').size() > 0)\n    {\n\t\t$( \".range-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t        range: true,\n\t        min: 0,\n\t        max: 500,\n\t        values: [ 75, 300 ],\n\t        slide: function( event, ui ) {\n\t            $( \".range-slider .amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n    \t$( \".range-slider .amount\" ).val( \"$\" + $( \".range-slider .slider\" ).slider( \"values\", 0 ) +\n    \t\t\t\" - $\" + $( \".range-slider .slider\" ).slider( \"values\", 1 ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Snap to Increments\n\t */\n\tif ($('.increments-slider').size() > 0)\n    {\n\t\t$( \".increments-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\tvalue:100,\n\t        min: 0,\n\t        max: 500,\n\t        step: 50,\n\t        slide: function( event, ui ) {\n\t            $( \".increments-slider .amount\" ).val( \"$\" + ui.value );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n\t\t$( \".increments-slider .amount\" ).val( \"$\" + $( \".increments-slider .slider\" ).slider( \"value\" ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Vertical Range Slider\n\t */\n\tif ($('.vertical-range-slider').size() > 0)\n    {\n\t\t$( \".vertical-range-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\torientation: \"vertical\",\n\t        range: true,\n\t        min: 0,\n\t        max: 500,\n\t        values: [ 100, 400 ],\n\t        slide: function( event, ui ) {\n\t            $( \".vertical-range-slider .amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n    \t$( \".vertical-range-slider .amount\" ).val( \"$\" + $( \".vertical-range-slider .slider\" ).slider( \"values\", 0 ) +\n    \t\t\t\" - $\" + $( \".vertical-range-slider .slider\" ).slider( \"values\", 1 ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Range fixed minimum\n\t */\n\tif ($('.slider-range-min').size() > 0)\n\t{\n\t\t$( \".slider-range-min .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n            range: \"min\",\n            value: 150,\n            min: 1,\n            max: 700,\n            slide: function( event, ui ) {\n                $( \".slider-range-min .amount\" ).val( \"$\" + ui.value );\n            },\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n        $( \".slider-range-min .amount\" ).val( \"$\" + $( \".slider-range-min .slider\" ).slider( \"value\" ) );\n\t}\n\t\n\t/*\n\t * JQueryUI Slider: Range fixed maximum\n\t */\n\tif ($('.slider-range-max').size() > 0)\n\t{\n\t\t$( \".slider-range-max .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n            range: \"max\",\n            min: 1,\n            max: 700,\n            value: 150,\n            slide: function( event, ui ) {\n                $( \".slider-range-max .amount\" ).val( \"$\" + ui.value );\n            },\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n        $( \".slider-range-max .amount\" ).val( \"$\" + $( \".slider-range-max .slider\" ).slider( \"value\" ) );\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/tables.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tables.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* DataTables */\n\tif ($('.dynamicTable').size() > 0)\n\t{\n\t\t$('.dynamicTable').each(function()\n\t\t{\n\t\t\t// DataTables with TableTools\n\t\t\tif ($(this).is('.tableTools'))\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span5'T><'span3'l><'span4'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t},\n\t\t\t\t\t\"oTableTools\": {\n\t\t\t\t        \"sSwfPath\": commonPath + \"theme/scripts/plugins/tables/DataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf\"\n\t\t\t\t    }\n\t\t\t\t});\n\t\t\t}\n\t\t\t// colVis extras initialization\n\t\t\telse if ($(this).is('.colVis'))\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span3'f><'span3'l><'span6'C>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t// default initialization\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span5'T><'span3'l><'span4'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/tables_responsive.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tables_responsive.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* FooTable */\n\tif ($('.footable').length)\n\t\t$('.footable').footable();\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/themer.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * themer.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\nfunction themerUpdateColors(primary)\n{\n\tupdatePrimaryColor(primary, true, true);\n}\n\n//Converts an RGB object to a hex string\nfunction rgb2hex(rgb) \n{\n\tvar hex = [\n\t\trgb.r.toString(16),\n\t\trgb.g.toString(16),\n\t\trgb.b.toString(16)\n\t];\n\t$.each(hex, function(nr, val) {\n\t\tif (val.length === 1) hex[nr] = '0' + val;\n\t});\n\treturn '#' + hex.join('');\n}\n\n// converts a string to RGB object\nfunction rgbString2obj(string)\n{\n\tvar parts = string.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n\tvar rgbObj = { r: Number(parts[1]), g: Number(parts[2]), b: Number(parts[3]) };\n\treturn rgbObj;\n}\n\nfunction updatePrimaryColor(hex, attach, charts)\n{\n\tthemerPrimaryColor = hex;\n\t$('#themer-primary-cp').val(themerPrimaryColor);\n\t$.minicolors.refresh();\n\t\n\tif (attach === true)\n\t\tattachStylesheet();\n\t\n\tif (charts === true)\n\t\tupdateCharts();\n\t\n\tif (themerPrimaryColor != themerThemes[themerSelectedTheme].primaryColor)\n\t\tthemerCustom[themerSelectedTheme].primaryColor = themerPrimaryColor;\n\telse\n\t\tthemerCustom[themerSelectedTheme].primaryColor = null;\n\t\n\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n\t\n\ttoggleGetCode();\n}\n\nfunction toggleGetCode()\n{\n\tvar tcs = themerCustom[themerSelectedTheme];\n\t\n\tif (themerSelectedTheme != 0 || (themerSelectedTheme == 0 && tcs.primaryColor != null))\n\t{\n\t\tif ($('#themer-getcode').is(':hidden')) $('#themer-getcode').show();\n\t}\n\telse\n\t{\n\t\tif ($('#themer-getcode').is(':visible')) $('#themer-getcode').hide();\n\t}\n}\n\nvar themerAdvanced = $.cookie('themerAdvanced') != null ? $.cookie('themerAdvanced') == true : false;\nfunction themerAdvancedToggle()\n{\n\tvar cp = [$('#themer-primary-cp'), $('#themer-header-cp'), $('#themer-menu-cp')];\n\t\n\tif ($('#themer-advanced-toggle').is(':checked'))\n\t{\n\t\t$('#themer').addClass('themer-advanced');\n\t\t$.each(cp, function(k,v){ v.attr('data-textfield', true).removeClass('minicolors-hidden'); });\n\t}\n\telse\n\t{\n\t\t$('#themer').removeClass('themer-advanced');\n\t\t$.each(cp, function(k,v){ v.attr('data-textfield', false).addClass('minicolors-hidden'); });\n\t}\n}\n\nfunction generateCSS(basePath)\n{\n\tif(!basePath)\n\t\tbasePath = \"\";\n\t\t\n\tvar css =\n\t\t\"@primaryColor: \" + themerPrimaryColor + \";\\n\" +\n\t\t\"#gradient {\\n\" +\n\t\t\".vertical(@startColor: #555, @endColor: #333) {\\n\" +\n\t\t\"   background-color: mix(@startColor, @endColor, 60%);\\n\" +\n\t\t\"   background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\\n\" +\n\t\t\"   background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\\n\" +\n\t\t\"   background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\\n\" +\n\t\t\"   background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\\n\" +\n\t\t\"   background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\\n\" +\n\t\t\"   background-repeat: repeat-x;\\n\" +\n\t\t\"   filter: e(%(\\\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\\\",argb(@startColor),argb(@endColor))); // IE9 and down\\n\" +\n\t\t\"}\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryBgColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryGradientTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryTextColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tcolor: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryBorderColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tborder-color: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\";\n\t\t\n\tcss += \n\t\t\".table-primary tbody td\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: lighten(@primaryColor, 50%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".table-primary tbody tr.selected td, .table-primary tbody tr.selectable:hover td\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: lighten(@primaryColor, 40%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".table-primary.table-bordered tbody td, .table-primary, .pagination ul > .disabled > a, .pagination ul > .disabled > span\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-color: lighten(@primaryColor, 50%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// header special\n\t\t\"@headerBorder0: darken(@primaryColor, 20%);\\n\" +\n\t\t\"@headerBorder1: darken(@primaryColor, 15%);\\n\" +\n\t\t\"@headerBorder2: lighten(@primaryColor, 20%);\\n\" +\n\t\t\".navbar.main {\\n\" +\n\t\t\"\tborder-bottom-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li:first-child {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs, .navbar.main .topnav > li.search {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder2;\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// rtl\n\t\t\"html.rtl .navbar.main .topnav.pull-right > li:last-child {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.rtl .navbar.main .topnav {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.rtl .navbar.main .topnav > li.glyphs {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li:last-child.glyphs, .navbar.main .topnav > li:last-child.search {\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li:last-child {\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\\n\" + \n\t\t\".navbar.main .topnav > li.glyphs ul {\\n\" +\n\t\t\"\tbackground: @headerBorder1;\\n\" +\n\t\t\"\tborder-color: @headerBorder0;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover {\\n\" +\n\t\t\"\t&:last-child { border-color: @headerBorder0; }\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover, \\n\" +\n\t\t\".navbar.main .topnav > li.search form {\\n\" +\n\t\t\"\tbackground: @headerBorder2;\\n\" +\n\t\t\"\tborder-color: @headerBorder0;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\\n\" +\n\t\t\"\tcolor: @headerBorder2 !important;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li.active .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\\n\" +\n\t\t\"\tcolor: #fff !important;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.front .navbar.main .secondary {\\n\" +\n\t\t\"\tbackground: @headerBorder0;\\n\" +\n\t\t\"\tborder-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.search form button i:before, .navbar.main .topnav > li.search form input {\\n\" +\n\t\t\"\tcolor: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.search form input {\\n\" +\n\t\t\"\t&::-webkit-input-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&:-moz-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&::-moz-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&:-ms-input-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border left color\n\t\t\".bwizard-steps li.active:after, .sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-left-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border right color\n\t\t\".sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-right-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border top color\n\t\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-top-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border bottom color\n\t\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-bottom-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// active primary button\n\t\t\".btn-primary:active, .btn-primary.active\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: darken(@primaryColor, 20%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// hover/focus primary button\n\t\t\".btn-primary:hover, .btn-primary:focus\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: darken(@primaryColor, 5%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// guide tour\n\t\t\".tlypageguide_shadow:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: fade(@primaryColor, 20%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".widget .widget-body.list.list-2 ul li\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\t&.active { border-color: lighten(@primaryColor, 20%); }\\n\" +\n\t\t\"\ta { color: lighten(@primaryColor, 20%); i:before { background: lighten(@primaryColor, 50%); color: lighten(@primaryColor, 10%); border-color: lighten(@primaryColor, 20%); } }\\n\" +\n\t\t\"}\";\n\t\t\n\treturn css;\n}\n\nfunction attachStylesheet(basePath, reset)\n{\n\t/*if(!$(\"#themer-stylesheet\").length) $('body').append('<div id=\"themer-stylesheet\"></div>');\n\t$(\"#themer-stylesheet\").html($('<style type=\"text/less\">' + generateCSS(basePath) + '</style>'));*/\n\t\n\tif (themerSelectedTheme == 0)\n\t{\n\t\t$('#themer-stylesheet').empty();\n\t\tless.refreshStyles();\n\t\tif (reset === true) return false;\n\t}\n\t\n\tif(!$(\"#themer-stylesheet\").length) \n\t\t$('head').append('<style id=\"themer-stylesheet\"></style>');\n\t\n\tvar code = generateCSS(basePath);\n\tlatestCode.less = code;\n\t\n\t$('#themer-stylesheet').attr('type', 'text/x-less').text(code);\n\tless.refreshStyles();\n}\n\nfunction updateCharts()\n{\n\tif (typeof primaryColor != 'undefined')\n\t\tprimaryColor = themerPrimaryColor;\n\t\t\n\tif (typeof genSparklines != 'undefined') \n\t\tgenSparklines();\n\t\n\tif (typeof charts == 'undefined')\n\t\treturn false;\n\t\n\t// apply styling\n\tcharts.utility.chartColors.shift();\n\tcharts.utility.chartColors.unshift(themerPrimaryColor);\n\t\n\tif (typeof charts.website_traffic_graph != 'undefined' && charts.website_traffic_graph.plot != null)\n\t\tcharts.website_traffic_graph.init();\n\t\n\tif (typeof charts.website_traffic_overview != 'undefined' && charts.website_traffic_overview.plot != null)\n\t\tcharts.website_traffic_overview.init();\n\t\n\tif (typeof charts.traffic_sources_pie != 'undefined' && charts.traffic_sources_pie.plot != null)\n\t\tcharts.traffic_sources_pie.init();\n\t\n\tif (typeof charts.chart_simple != 'undefined' && charts.chart_simple.plot != null)\n\t\tcharts.chart_simple.init();\n\t\n\tif (typeof charts.chart_lines_fill_nopoints != 'undefined' && charts.chart_lines_fill_nopoints.plot != null)\n\t\tcharts.chart_lines_fill_nopoints.init();\n\t\n\tif (typeof charts.chart_ordered_bars != 'undefined' && charts.chart_ordered_bars.plot != null)\n\t\tcharts.chart_ordered_bars.init();\n\t\n\tif (typeof charts.chart_donut != 'undefined' && charts.chart_donut.plot != null)\n\t\tcharts.chart_donut.init();\n\t\n\tif (typeof charts.chart_stacked_bars != 'undefined' && charts.chart_stacked_bars.plot != null)\n\t\tcharts.chart_stacked_bars.init();\n\t\n\tif (typeof charts.chart_pie != 'undefined' && charts.chart_pie.plot != null)\n\t\tcharts.chart_pie.init();\n\t\n\tif (typeof charts.chart_horizontal_bars != 'undefined' && charts.chart_horizontal_bars.plot != null)\n\t\tcharts.chart_horizontal_bars.init();\n\t\n\tif (typeof charts.chart_live != 'undefined' && charts.chart_live.plot != null)\n\t\tcharts.chart_live.init();\n}\n\nfunction updateTheme(themeSelect)\n{\n\tif ($('#themer-theme').val() != themeSelect) $('#themer-theme').val(themeSelect);\n\t\n\tthemerSelectedTheme = themeSelect; // index\n\t$.cookie('themerSelectedTheme', themerSelectedTheme);\n\t\n\tvar uPrimaryColor = themerCustom[themeSelect].primaryColor != null ? themerCustom[themeSelect].primaryColor : themerThemes[themeSelect].primaryColor;\n\t\n\tupdatePrimaryColor(uPrimaryColor, false, true);\n\t\n\t// gmaps colored support\n\tif (typeof map_options != 'undefined')\n\t\tmap_options.styles[0].stylers[1].hue = themerPrimaryColor;\n\t\n\tif ($('#contact_gmap').size() > 0 && typeof google != 'undefined')\n    {\n    \tmap_options.zoom = 13;\n    \tinitializeMap('contact_gmap', map_options);\n    }\n\t\n\tif (themeSelect == 0 && themerCustom[themeSelect].primaryColor == null)\n\t\tattachStylesheet('', true); // reset\n\telse\n\t\tattachStylesheet();\n}\n\nfunction themerGetCode(less)\n{\n\tvar tlc;\n\tif (less === true)\n\t\ttlc = latestCode.less;\n\telse\n\t\ttlc = latestCode.css();\n\t\t\n\t//bootbox.alert($('<textarea class=\"input-block-level\" rows=\"10\"></textarea>').val(tlc));\n\tbootbox.alert($('<pre class=\"prettyprint lang-html\" id=\"themer-pretty\"></pre>').html(tlc));\n}\n\nvar primaryGradientTargets = \n[\n \t\"#menu .slim-scroll > ul.menu-0 > li.active > a\",\n \t\"#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover\",\n \t\"#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover\",\n \t\".widget-stats.primary\",\n \t\".btn-primary\",\n \t\".tabsbar:not(.tabsbar-2) ul li.active a\"\n];\n\nvar primaryBgColorTargets = \n[\n\t\".btn-primary\",\n\t\"#flotTip\",\n\t\".btn-group.open .btn-primary.dropdown-toggle, .btn-primary.disabled, .btn-primary[disabled], .btn-primary:hover\",\n\t\".label-primary\",\n\t\".table-primary thead th\",\n\t\".pagination ul > .active > a, .pagination ul > .active > span\",\n\t\".gallery ul li .thumb\",\n\t\".widget-activity ul.filters li.glyphicons.active i\",\n\t\".ui-slider-wrap .slider-primary .ui-slider-range\",\n\t\".accordion-heading .accordion-toggle\",\n\t\".ui-widget-header\",\n\t\".ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active\",\n\t\".fc-event-skin\",\n\t\"#external-events li\",\n\t\".notyfy_wrapper.notyfy_primary\",\n\t\".progress.progress-primary .bar\",\n\t\".alert.alert-primary\",\n\t\".pagination ul > li > a:hover, .pagination ul > li.primary > a\",\n\t\".gritter-item-wrapper.gritter-primary .gritter-item\",\n\t\"#content-notification .notyfy_wrapper.notyfy_primary\",\n\t\".ribbon-wrapper .ribbon.primary\",\n\t\".label.label-primary\",\n\t\".widget-stats.primary, .widget-stats.primary:hover\",\n\t\".tabsbar:not(.tabsbar-2) ul li.active a\",\n\t\".widget.widget-wizard-pills .widget-head ul li.primary a\",\n\t\".bwizard-steps li.active\",\n\t\".sliderContainer .ui-rangeSlider-bar\",\n\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active\",\n\t\"#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close\",\n\t\"#tlyPageGuideWrapper #tlyPageGuideMessages span\",\n\t\".tabsbar.tabsbar-2.active-fill ul li.active a\",\n\t\".shop-client-products.list ul li a .glyphicons i\",\n\t\".social-large:not(.social-large-2) a.active, .social-large:not(.social-large-2) a:hover\",\n\t\"#landing_1 .banner-1 .carousel-indicators li.active\",\n\t\".navbar.main\",\n\t\".navbar.main .btn-navbar, .navbar.main .btn-navbar:hover\",\n\t\".nav-timeline > li.active > a, .nav-timeline > li > a:hover, .nav-timeline > li.active > a:hover\",\n\t\".layout-timeline ul.timeline > li.active .type:before, .layout-timeline ul.timeline > li.active .type:after\",\n\t\".layout-timeline ul.timeline > li.active:before\",\n\t\".carousel.carousel-1 .carousel-indicators li.active\",\n\t\".widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active\",\n\t\".widget.widget-body-primary > .widget-body\"\n];\nvar primaryTextColorTargets = \n[\n \t\"a, p a\",\n\t\".widget .widget-body.list ul li .count\",\n\t\".widget-stats .txt strong\",\n\t\".glyphicons.single i:before\",\n\t\".glyphicons.single\",\n\t\".table-primary tbody td.important\",\n\t\".widget.widget-3 .widget-body.large.cancellations span span:first-child\",\n\t\".widget .widget-footer a:hover, .widget .widget-footer a:hover i:before\",\n\t\".widget.widget-3 .widget-footer a:hover, .widget.widget-3 .widget-footer a:hover i:before\",\n\t\"blockquote small\",\n\t\".tabsbar.tabsbar-2 ul li.active a\",\n\t\".tabsbar.tabsbar-2 ul li.active a i:before\",\n\t\".glyphicons.primary i:before, .glyphicons.standard:not(.disabled):hover i:before\",\n\t\".menubar.links.primary ul li a\",\n\t\".text-primary\",\n\t\"#docs_icons .glyphicons i:before\",\n\t\".widget.widget-tabs-double-2 .widget-head ul li.active a i:before, .widget.widget-tabs-double-2 .widget-head ul li.active a\",\n\t\".shop-client-products.product-details .form-horizontal .price\",\n\t\".widget-activity ul.list li:hover .activity-icon i:before, .widget-activity ul.list li.highlight .activity-icon i:before\",\n\t\"#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before\",\n\t\"#landing_1 .banner .banner-wrapper.banner-1 p a\",\n\t\"#landing_1 .banner .banner-wrapper.banner-1 h3\",\n\t\"#landing_2 .banner .banner-wrapper.banner-1 p a, #landing_2 .banner .banner-wrapper.banner-1 .buy a\",\n\t\"#landing_2 .banner .banner-wrapper.banner-1 h3\",\n\t\"#landing_1 .banner-1 .carousel-caption a\",\n\t\"div.glyphicons.glyphicon-primary i:before\",\n\t\".layout-timeline ul.timeline > li.active .type\",\n\t\".layout-timeline ul.timeline > li.active .type i:before\",\n\t\".social-large.social-large-2 a.active i:before, .social-large.social-large-2 a:hover i:before\",\n\t\".social-large.social-large-2 a.active, .social-large.social-large-2 a:hover\",\n\t\"html.front #footer a:not(.btn)\"\n];\nvar primaryBorderColorTargets = \n[\n\t\".btn-primary\",\n\t\".ui-slider-wrap .slider-primary .ui-slider-handle\",\n\t\"#flotTip\",\n\t\".widget.widget-2.primary .widget-head\",\n\t\".widget .widget-body.list.list-2 ul li.active a i:before\",\n\t\".table-primary thead th\",\n\t\".pagination ul > .active > a, .pagination ul > .active > span\",\n\t\".widget.widget-4 .widget-head .heading\",\n\t\".ui-widget-header\",\n\t\".fc-event-skin\",\n\t\".alert.alert-primary\",\n\t\".pagination ul > li > a:hover, .pagination ul > li.primary > a\",\n\t\".widget-stats.primary\",\n\t\"#menu .slim-scroll > ul.menu-0 > li.active > a\",\n\t\".widget-chat .media .media-body\",\n\t\".widget-chat .media .media-body.right\",\n\t\"#menu .slim-scroll > ul.menu-0 > li.active > a, #menu > ul.menu-0 > li.active > a\"\n];\n\n/*\n * Persistent Selected Theme\n */\nvar themerSelectedTheme = $.cookie('themerSelectedTheme') != null ? $.cookie('themerSelectedTheme') : 0;\n\n/*\n * Holds the latest CSS/LESS\n */\nvar latestCode = {\n\tcss: function(){ return $('#themer-stylesheet').text(); },\n\tless: null\n};\n\nvar themerThemes = [\n\t{\n\t\tname: \"Default\",\n\t\tprimaryColor: primaryColor,\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Brown\",\n\t\tprimaryColor: \"#ba5d32\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Purple-Gray\",\n\t\tprimaryColor: \"#86618f\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Purple-Wine\",\n\t\tprimaryColor: \"#b94b6f\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Blue-Gray\",\n\t\tprimaryColor: \"#496cad\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Green Army\",\n\t\tprimaryColor: \"#6f8745\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Black & White\",\n\t\tprimaryColor: \"#575757\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Army\",\n\t\tprimaryColor: \"#7a7a3a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Evil Army\",\n\t\tprimaryColor: \"#567a3a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Forest\",\n\t\tprimaryColor: \"#947131\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Cold Blue\",\n\t\tprimaryColor: \"#676d8a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Warm Blue\",\n\t\tprimaryColor: \"#cc5470\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Experiment #2\",\n\t\tprimaryColor: \"#438080\",\n\t\tvisible: false\n\t}\n];\n\n/*\n * Persistent Custom Theme Colors\n */\nvar themerCustomDefault = [];\n$.each(themerThemes, function(k,v) { themerCustomDefault[k] = { primaryColor: null }; });\nvar themerCustom = $.cookie('themerCustom') != null ? $.parseJSON($.cookie('themerCustom')) : themerCustomDefault;\n\nif (themerThemes.length != themerCustom.length)\n{\n\t$.each(themerThemes, function(k,v){ if (typeof themerCustom[k] == 'undefined') themerCustom[k] = v; });\n\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n}\n\n$(function()\n{\n\tif ($('#themer').length)\n\t{\n\t\tvar themerOpened = $.cookie('themerOpened') ? $.cookie('themerOpened') : 0;\n\t\t\n\t\t$('#themer')\n\t\t\t.on('shown', function(){ $.cookie('themerOpened', 1); })\n\t\t\t.on('hidden', function(){ $.cookie('themerOpened', 0); });\n\t\t\n\t\t$('#themer .close2').on('click', function(){\n\t\t\t$('#themer').collapse('hide');\n\t\t});\n\t\t\n\t\tif (themerOpened == 1)\n\t\t\t$('#themer').collapse('show');\n\t\t\n\t\t$(\"#themer-primary-cp\")\n\t\t\t.attr('data-default', themerPrimaryColor)\n\t\t\t.on('change', function(){\n\t\t\t\tvar input = $(this),\n\t\t\t\thex = input.val();\n\t\t\t\tif (hex) updatePrimaryColor(hex, true, true);\n\t\t\t});\n\t\t\n\t\tvar themeSelect = $('#themer-theme');\n\t\t$.each(themerThemes, function( i, p ) {\n\t\t\tif (p.visible === true)\n\t\t\t{\n\t\t\t\tvar option = $(\"<option></option>\").text(p.name).val(i);\n\t\t\t\tthemeSelect.append(option);\n\t\t\t}\n\t\t});\n\t\tthemeSelect.on('change', function(e) \n\t\t{\n\t\t\te.preventDefault();\n\t\t\tupdateTheme(themeSelect.val());\n\t\t});\n\t\t\n\t\t$('#themer-getcode-less').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tthemerGetCode(true);\n\t\t});\n\t\t\n\t\t$('#themer-getcode-css').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tthemerGetCode();\n\t\t});\n\t\t\n\t\t$('#themer-custom-reset').click(function()\n\t\t{\n\t\t\tthemerCustom[themerSelectedTheme].primaryColor = null;\n\t\t\t\n\t\t\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n\t\t\tupdateTheme(themerSelectedTheme);\n\t\t});\n\t\t\n\t\t$('#themer-advanced-toggle').on('change', function()\n\t\t{\n\t\t\t$.cookie('themerAdvanced', $(this).is(':checked') ? \"1\" : \"0\");\n\t\t\tthemerAdvancedToggle();\n\t\t});\n\t\t\n\t\tif (themerAdvanced)\n\t\t\t$('#themer-advanced-toggle').prop('checked', true).trigger('change');\n\t\t\n\t\tupdateTheme(themerSelectedTheme);\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/tour_demo.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tour_demo.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tif (!$('#tlyPageGuide').length)\n\t\treturn false;\n\t\n\ttl.pg.init({\n\t\tcustom_open_button: '#tour-demo-start'\n\t});\n\t\n\tsetTimeout(function(){\n\t\t$('#tour-demo-start').click();\n\t}, 1000);\n\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/twitter.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * twitter.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function() {\t\t\n\n\tJQTWEET = {\n\n\t\t\t// Set twitter hash/user, number of tweets & id/class to append tweets\n\t\t\t// You need to clear tweet-date.txt before toggle between hash and user\n\t\t\t// for multiple hashtags, you can separate the hashtag with OR, eg:\n\t\t\t// hash: '%23jquery OR %23css'\t\t\t    \n\t\t\t//search: '%23heroes2013', //leave this blank if you want to show user's tweet\n\t\t\tsearch: '', //leave this blank if you want to show user's tweet\n\t\t    user: 'quenesstestacc', //username\n\t\t\tnumTweets: 18, //number of tweets\n\t\t\tappendTo: '.jstwitter',\n\t\t\tuseGridalicious: false,\n\t\t\ttemplate: '<div class=\"item\">{IMG}<div class=\"tweet-wrapper\"><span class=\"text\">{TEXT}</span>\\\n\t\t\t\t<span class=\"time\"><a href=\"{URL}\" target=\"_blank\">{AGO}</a></span>\\\n\t\t\t\tby <span class=\"user\">{USER}</span></div></div>',\n\n\t\t\t// core function of jqtweet\n\t\t\t// https://dev.twitter.com/docs/using-search\n\t\t\tloadTweets: function() {\n\n\t\t\t\tvar request;\n\n\t\t\t\t// different JSON request {hash|user}\n\t\t\t\tif (JQTWEET.search) {\n\t\t\t\t\trequest = {\n\t\t\t\t\t\tq: JQTWEET.search,\n\t\t\t\t\t\tcount: JQTWEET.numTweets,\n\t\t\t\t\t\tapi: 'search_tweets'\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trequest = {\n\t\t\t\t\t\tq: JQTWEET.user,\n\t\t\t\t\t\tcount: JQTWEET.numTweets,\n\t\t\t\t\t\tapi: 'statuses_userTimeline'\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: basePath + 'ajax.php?section=twitter',\n\t\t\t\t\ttype: 'POST',\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tdata: request,\n\t\t\t\t\tsuccess: function(data, textStatus, xhr) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(JQTWEET.appendTo).empty();\n\n\t\t\t\t\t\tif (data.httpstatus == 200) {\n\t\t\t\t\t\t\tif (JQTWEET.search) data = data.statuses;\n\n\t\t\t\t\t\t\tvar text, name, img;\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t// append tweets into page\n\t\t\t\t\t\t\t\tfor (var i = 0; i < JQTWEET.numTweets; i++) \n\t\t\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\timg = '';\n\t\t\t\t\t\t\t\t\turl = 'http://twitter.com/' + data[i].user.screen_name + '/status/' + data[i].id_str;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif (data[i].entities['media']) {\n\t\t\t\t\t\t\t\t\t\t\timg = '<a href=\"' + url + '\" target=\"_blank\" class=\"thumb\"><img src=\"' + data[i].entities['media'][0].media_url + '\" /></a>';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} catch (e) {  \n\t\t\t\t\t\t\t\t\t\t//no media\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t$(JQTWEET.appendTo).append( JQTWEET.template.replace('{TEXT}', JQTWEET.ify.clean(data[i].text) )\n\t\t\t\t\t\t\t\t\t\t.replace('{USER}', data[i].user.screen_name)\n\t\t\t\t\t\t\t\t\t\t.replace('{IMG}', img)                                \n\t\t\t\t\t\t\t\t\t\t.replace('{AGO}', JQTWEET.timeAgo(data[i].created_at) )\n\t\t\t\t\t\t\t\t\t\t.replace('{URL}', url )\t\t\t                            \n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$(JQTWEET.appendTo).each(function(index)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar $that = $(this);\n\t\t\t\t\t\t\t\t\tif (JQTWEET.useGridalicious || ($(this).attr('data-gridalicious') && $(this).attr('data-gridalicious') !== \"false\")) \n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$(this).find('.item').wrap('<div class=\"widget\"><div class=\"widget-body\"></div></div>');\n\t\t\t\t\t\t\t\t\t\t$(this).gridalicious({\n\t\t\t\t\t\t\t\t\t\t\tgutter: 13, \n\t\t\t\t\t\t\t\t\t\t\twidth: $that.attr('data-gridalicious-width') ? parseInt($that.attr('data-gridalicious-width')) : 200,\n\t\t\t\t\t\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t\t\t\t\t\t\tselector: '.widget'\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ((!JQTWEET.useGridalicious && !$(this).attr('data-gridalicious')) || $(this).attr('data-gridalicious') == \"false\")\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif ($(this).attr('data-type') == 'slide')\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif ($(this).find('.item').size() > 1)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$(this).find('.item').hide();\n\t\t\t\t\t\t\t    \t            $(this).find('.item:first').show().addClass('active');\n\t\t\t\t\t\t\t    \t            var $that = $(this);\n\t\t\t\t\t\t\t    \t            \n\t\t\t\t\t\t\t    \t            setInterval(function()\n\t\t\t\t\t\t\t    \t\t\t \t{\n\t\t\t\t\t\t\t    \t            \tif ($that.find('.item').length <= 1)\n\t\t\t\t\t\t\t                \t\t\treturn;\n\t\t\t\t\t\t\t                \t\t\n\t\t\t\t\t\t\t                \t\tvar active_index = $that.find('.item.active').index(JQTWEET.appendTo + ':eq('+index+') .item');\n\t\t\t\t\t\t\t                \t\tvar next_index = $that.find('.item').eq(active_index+1).index(JQTWEET.appendTo + ':eq('+index+') .item');\n\t\t\t\t\t\t\t\t                \tif (next_index == -1) active_index = -1;\n\t\t\t\t\t\t\t\t                \t\n\t\t\t\t\t\t\t\t                \t$that.find('.item.active').hide().removeClass('active');\n\t\t\t\t\t\t\t\t                \t$that.find('.item').eq(active_index+1).show().addClass('active');\n\t\t\t\t\t\t    \t\t\t \t\t}, 3000);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ($(this).attr('data-images') === 'false')\n\t\t\t\t\t\t\t\t\t\t$(this).find('.thumb').remove();\n\t\t\t\t\t\t\t\t});\t\n\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t//item is less than item count\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else alert('no data returned');\n\n\t\t\t\t\t}   \n\n\t\t\t\t});\n\n\t\t\t}, \n\n\n\t\t\t/**\n\t\t\t * relative time calculator FROM TWITTER\n\t\t\t * @param {string} twitter date string returned from Twitter API\n\t\t\t * @return {string} relative time like \"2 minutes ago\"\n\t\t\t */\n\t\t\ttimeAgo: function(dateString) {\n\t\t\t\tvar rightNow = new Date();\n\t\t\t\tvar then = new Date(dateString);\n\n\t\t\t\tif ($.browser.msie) {\n\t\t\t\t\t// IE can't parse these crazy Ruby dates\n\t\t\t\t\tthen = Date.parse(dateString.replace(/( \\+)/, ' UTC$1'));\n\t\t\t\t}\n\n\t\t\t\tvar diff = rightNow - then;\n\n\t\t\t\tvar second = 1000,\n\t\t\t\tminute = second * 60,\n\t\t\t\thour = minute * 60,\n\t\t\t\tday = hour * 24,\n\t\t\t\tweek = day * 7;\n\n\t\t\t\tif (isNaN(diff) || diff < 0) {\n\t\t\t\t\treturn \"\"; // return blank string if unknown\n\t\t\t\t}\n\n\t\t\t\tif (diff < second * 2) {\n\t\t\t\t\t// within 2 seconds\n\t\t\t\t\treturn \"right now\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < minute) {\n\t\t\t\t\treturn Math.floor(diff / second) + \" seconds ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < minute * 2) {\n\t\t\t\t\treturn \"about 1 minute ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < hour) {\n\t\t\t\t\treturn Math.floor(diff / minute) + \" minutes ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < hour * 2) {\n\t\t\t\t\treturn \"about 1 hour ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < day) {\n\t\t\t\t\treturn  Math.floor(diff / hour) + \" hours ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff > day && diff < day * 2) {\n\t\t\t\t\treturn \"yesterday\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < day * 365) {\n\t\t\t\t\treturn Math.floor(diff / day) + \" days ago\";\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\treturn \"over a year ago\";\n\t\t\t\t}\n\t\t\t}, // timeAgo()\n\n\n\t\t\t/**\n\t\t\t * The Twitalinkahashifyer!\n\t\t\t * http://www.dustindiaz.com/basement/ify.html\n\t\t\t * Eg:\n\t\t\t * ify.clean('your tweet text');\n\t\t\t */\n\t\t\tify:  {\n\t\t\t\tlink: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\b(((https*\\:\\/\\/)|www\\.)[^\\\"\\']+?)(([!?,.\\)]+)?(\\s|$))/g, function(link, m1, m2, m3, m4) {\n\t\t\t\t\t\tvar http = m2.match(/w/) ? 'http://' : '';\n\t\t\t\t\t\treturn '<a class=\"twtr-hyperlink\" target=\"_blank\" href=\"' + http + m1 + '\">' + ((m1.length > 25) ? m1.substr(0, 24) + '...' : m1) + '</a>' + m4;\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tat: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\B[@＠]([a-zA-Z0-9_]{1,20})/g, function(m, username) {\n\t\t\t\t\t\treturn '<a target=\"_blank\" class=\"twtr-atreply\" href=\"http://twitter.com/intent/user?screen_name=' + username + '\">@' + username + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tlist: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\B[@＠]([a-zA-Z0-9_]{1,20}\\/\\w+)/g, function(m, userlist) {\n\t\t\t\t\t\treturn '<a target=\"_blank\" class=\"twtr-atreply\" href=\"http://twitter.com/' + userlist + '\">@' + userlist + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\thash: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/(^|\\s+)#(\\w+)/gi, function(m, before, hash) {\n\t\t\t\t\t\treturn before + '<a target=\"_blank\" class=\"twtr-hashtag\" href=\"http://twitter.com/search?q=%23' + hash + '\">#' + hash + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tclean: function(tweet) {\n\t\t\t\t\treturn this.hash(this.at(this.list(this.link(tweet))));\n\t\t\t\t}\n\t\t\t} // ify\n\n\n\t};\t\t\n\n});\n\n$(function () {\n    // start jqtweet!\n    JQTWEET.loadTweets();\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/ui.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * ui.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* \n\t * JQuery Pagination Examples \n\t */\n\t\n\t$('.jquery-bootpag-pagination').bootpag({\n\t   total: 23,\n\t   page: 1,\n\t   maxVisible: 10 \n\t}).on('page', function(event, num){\n\t    $(\".jquery-bootpag-content\").html(\"Page \" + num); // or some ajax content loading ...\n\t});\n\t\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/demo/widgets.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * widgets.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#widget-progress-bar .bar').width(\"50%\");\n\tsetInterval(function(){\n\t\tvar w = mt_rand(30, 100);\n\t\t$('#widget-progress-bar .steps-percent').html(w + \"%\");\n\t\t$('#widget-progress-bar .bar').width(w + \"%\");\n\t}, 2000);\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/Makefile",
    "content": "dist: all\n\t@echo Done\n\nall:\n\t@echo Compiling coffee script\n\tcoffee -c *.coffee\n\nwatch:\n\t@echo Watch coffee script files\n\tcoffee -w *.coffee\n\n.PHONY: dist all watch"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/Readme.md",
    "content": "easy pie chart\n==============\n\nEasy pie chart is a jQuery plugin that uses the canvas element to render simple pie charts for single values.\nThese charts are highly customizable, very easy to implement and **scale to the resolution of the display of the client to provide sharp charts even on retina displays**.\n\n![](https://github.com/rendro/easy-pie-chart/raw/master/img/easy-pie-chart.png)\n\nGet started\n-----------\n\nTo use the easy pie chart plugin you need to load the current version of jQuery (testet with 1.7.2) and the source (css+js) of the plugin.\nJust add the following lines to the `head` of your website:\n\n    <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"/path/to/jquery.easy-pie-chart.js\"></script>\n\n    <link rel=\"stylesheet\"type=\"text/css\" href=\"/path/to/jquery.easy-pie-chart.css\">\n\nThe second step is to add a element to your site to represent chart and add the `data-percent` attribute with the percent number the pie chart should have:\n\n    <div class=\"chart\" data-percent=\"73\">73%</div>\n\nFinally you have to initialize the plugin with your desired configuration:\n\n    <script type=\"text/javascript\">\n    $(function() {\n        $('.chart').easyPieChart({\n            //your configuration goes here\n        });\n    });\n    </script>\n\nConfiguration parameter\n-----------------------\n\nYou can pass a set of these options to the initialize function to set a custom behaviour and look for the plugin.\n\n<table>\n    <tr>\n        <th>Property (Type)</th>\n        <th>Default</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td><strong>barColor</strong></td>\n        <td>#ef1e25</td>\n        <td>The color of the curcular bar. You can pass either a css valid color string like rgb, rgba hex or string colors. But you can also pass a function that accepts the current percentage as a value to return a dynamically generated color.</td>\n    </tr>\n    <tr>\n        <td><strong>trackColor</strong></td>\n        <td>#f2f2f2</td>\n        <td>The color of the track for the bar, false to disable rendering.</td>\n    </tr>\n    <tr>\n        <td><strong>scaleColor</strong></td>\n        <td>#dfe0e0</td>\n        <td>The color of the scale lines, false to disable rendering.</td>\n    </tr>\n    <tr>\n        <td><strong>lineCap</strong></td>\n        <td>round</td>\n        <td>Defines how the ending of the bar line looks like. Possible values are: <code>butt</code>, <code>round</code> and <code>square</code>.</td>\n    </tr>\n    <tr>\n        <td><strong>lineWidth</strong></td>\n        <td>3</td>\n        <td>Width of the bar line in px.</td>\n    </tr>\n    <tr>\n        <td><strong>size</strong></td>\n        <td>110</td>\n        <td>Size of the pie chart in px. It will always be a square.</td>\n    </tr>\n    <tr>\n        <td><strong>animate</strong></td>\n        <td>false</td>\n        <td>Time in milliseconds for a eased animation of the bar growing, or false to deactivate.</td>\n    </tr>\n    <tr>\n        <td><strong>onStart</strong></td>\n        <td>$.noop</td>\n        <td>Callback function that is called at the start of any animation (only if animate is not false).</td>\n    </tr>\n    <tr>\n        <td><strong>onStop</strong></td>\n        <td>$.noop</td>\n        <td>Callback function that is called at the end of any animation (only if animate is not false).</td>\n    </tr>\n</table>\n\n\nPublic plugin methods\n---------------------\n\nIf you want to update the current percentage of the a pie chart, you can call the `update` method. The instance of the plugin is saved in the jQuery-data.\n\n    <script type=\"text/javascript\">\n    $(function() {\n        //create instance\n        $('.chart').easyPieChart({\n            animate: 2000\n        });\n        //update instance after 5 sec\n        setTimeout(function() {\n            $('.chart').data('easyPieChart').update(40);\n        }, 5000);\n    });\n    </script>\n\nCredits\n-------\n\nThanks to [Rafal Bromirski](http://www.paranoida.com/) for making [this dribble shot](http://drbl.in/ezuc) which inspired me and [Philip Thrasher](http://philipthrasher.com/) for his [CoffeeScript jQuery boilerplate](https://github.com/pthrasher/coffee-plate)\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns are not implemented.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // create xmlns\n      if (!doc.namespaces['g_vml_']) {\n        doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                           '#default#VML');\n\n      }\n      if (!doc.namespaces['g_o_']) {\n        doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                           '#default#VML');\n      }\n\n      // Setup default CSS.  Only add one style sheet per document\n      if (!doc.styleSheets['ex_canvas_']) {\n        var ss = doc.createStyleSheet();\n        ss.owningElement.id = 'ex_canvas_';\n        ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n            // default size is 300x150 in Gecko and Opera\n            'text-align:left;width:300px;height:150px}' +\n            'g_vml_\\\\:*{behavior:url(#default#VML)}' +\n            'g_o_\\\\:*{behavior:url(#default#VML)}';\n\n      }\n\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n\n        el.getContext = getContext;\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n      case 'height':\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var dec2hex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.substring(0, 3) == 'rgb') {\n      var start = styleString.indexOf('(', 3);\n      var end = styleString.indexOf(')', start + 1);\n      var guts = styleString.substring(start + 1, end).split(',');\n\n      str = '#';\n      for (var i = 0; i < 3; i++) {\n        str += dec2hex[Number(guts[i])];\n      }\n\n      if (guts.length == 4 && styleString.substr(3, 1) == 'a') {\n        alpha = guts[3];\n      }\n    } else {\n      str = styleString;\n    }\n\n    return {color: str, alpha: alpha};\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\")\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px;\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd',\n                                    vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var lineStr = [];\n    var lineOpen = false;\n    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * this.globalAlpha;\n\n    var W = 10;\n    var H = 10;\n\n    lineStr.push('<g_vml_:shape',\n                 ' filled=\"', !!aFill, '\"',\n                 ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                 ' coordorigin=\"0 0\" coordsize=\"', Z * W, ' ', Z * H, '\"',\n                 ' stroked=\"', !aFill, '\"',\n                 ' path=\"');\n\n    var newSeq = false;\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var i = 0; i < this.currentPath_.length; i++) {\n      var p = this.currentPath_[i];\n      var c;\n\n      switch (p.type) {\n        case 'moveTo':\n          c = p;\n          lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'lineTo':\n          lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'close':\n          lineStr.push(' x ');\n          p = null;\n          break;\n        case 'bezierCurveTo':\n          lineStr.push(' c ',\n                       mr(p.cp1x), ',', mr(p.cp1y), ',',\n                       mr(p.cp2x), ',', mr(p.cp2y), ',',\n                       mr(p.x), ',', mr(p.y));\n          break;\n        case 'at':\n        case 'wa':\n          lineStr.push(' ', p.type, ' ',\n                       mr(p.x - this.arcScaleX_ * p.radius), ',',\n                       mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                       mr(p.x + this.arcScaleX_ * p.radius), ',',\n                       mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                       mr(p.xStart), ',', mr(p.yStart), ' ',\n                       mr(p.xEnd), ',', mr(p.yEnd));\n          break;\n      }\n\n\n      // TODO: Following is broken for curves due to\n      //       move to proper paths.\n\n      // Figure out dimensions so we can do gradient fills\n      // properly\n      if (p) {\n        if (min.x == null || p.x < min.x) {\n          min.x = p.x;\n        }\n        if (max.x == null || p.x > max.x) {\n          max.x = p.x;\n        }\n        if (min.y == null || p.y < min.y) {\n          min.y = p.y;\n        }\n        if (max.y == null || p.y > max.y) {\n          max.y = p.y;\n        }\n      }\n    }\n    lineStr.push(' \">');\n\n    if (!aFill) {\n      var lineWidth = this.lineScale_ * this.lineWidth;\n\n      // VML cannot correctly render a line if the width is less than 1px.\n      // In that case, we dilute the color to make the line look thinner.\n      if (lineWidth < 1) {\n        opacity *= lineWidth;\n      }\n\n      lineStr.push(\n        '<g_vml_:stroke',\n        ' opacity=\"', opacity, '\"',\n        ' joinstyle=\"', this.lineJoin, '\"',\n        ' miterlimit=\"', this.miterLimit, '\"',\n        ' endcap=\"', processLineCap(this.lineCap), '\"',\n        ' weight=\"', lineWidth, 'px\"',\n        ' color=\"', color, '\" />'\n      );\n    } else if (typeof this.fillStyle == 'object') {\n      var fillStyle = this.fillStyle;\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / this.arcScaleX_;\n        var y0 = fillStyle.y0_ / this.arcScaleY_;\n        var x1 = fillStyle.x1_ / this.arcScaleX_;\n        var y1 = fillStyle.y1_ / this.arcScaleY_;\n        var p0 = this.getCoords_(x0, y0);\n        var p1 = this.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        var width  = max.x - min.x;\n        var height = max.y - min.y;\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= this.arcScaleX_ * Z;\n        height /= this.arcScaleY_ * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * this.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * this.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else {\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n\n    lineStr.push('</g_vml_:shape>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  }\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    }\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    copyState(this.aStack_.pop(), this);\n    this.m_ = this.mStack_.pop();\n  };\n\n  function matrixIsFinite(m) {\n    for (var j = 0; j < 3; j++) {\n      for (var k = 0; k < 2; k++) {\n        if (!isFinite(m[j][k]) || isNaN(m[j][k])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function() {\n    return new CanvasPattern_;\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_() {}\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n\n})();\n\n} // if\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/index.html",
    "content": "<!doctype html>\n<html>\n    <head>\n        <meta charset=\"utf-8\">\n        <title>Easy Pie Chart</title>\n        <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>\n        <script type=\"text/javascript\" src=\"http://html5shiv.googlecode.com/svn/trunk/html5.js\"></script>\n        <script type=\"text/javascript\" src=\"excanvas.js\"></script>\n        <script type=\"text/javascript\" src=\"../jquery.easy-pie-chart.js\"></script>\n\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"../jquery.easy-pie-chart.css\" media=\"screen\">\n\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n        <script type=\"text/javascript\">\n            var initPieChart = function() {\n                $('.percentage').easyPieChart({\n                    animate: 1000\n                });\n                $('.percentage-light').easyPieChart({\n                    barColor: function(percent) {\n                        percent /= 100;\n                        return \"rgb(\" + Math.round(255 * (1-percent)) + \", \" + Math.round(255 * percent) + \", 0)\";\n                    },\n                    trackColor: '#666',\n                    scaleColor: false,\n                    lineCap: 'butt',\n                    lineWidth: 15,\n                    animate: 1000\n                });\n\n                $('.updateEasyPieChart').on('click', function(e) {\n                  e.preventDefault();\n                  $('.percentage, .percentage-light').each(function() {\n                    var newValue = Math.round(100*Math.random());\n                    $(this).data('easyPieChart').update(newValue);\n                    $('span', this).text(newValue);\n                  });\n                });\n            };\n        </script>\n    </head>\n    <body onload=\"initPieChart();\">\n        <div class=\"container\">\n            <h1>EASY PIE CHART</h1>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"55\"><span>55</span>%</div>\n                <div class=\"label\">New visits</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"46\"><span>46</span>%</div>\n                <div class=\"label\">Bounce rate</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"92\"><span>92</span>%</div>\n                <div class=\"label\">Server load</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"84\"><span>752</span>MB</div>\n                <div class=\"label\">Used RAM</div>\n            </div>\n            <div style=\"clear:both;\"></div>\n            <div class=\"dark\">\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"55\"><span>55</span>%</div>\n                    <div class=\"label\">New visits</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"46\"><span>46</span>%</div>\n                    <div class=\"label\">Bounce rate</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"92\"><span>92</span>%</div>\n                    <div class=\"label\">Server load</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"84\"><span>752</span>MB</div>\n                    <div class=\"label\">Used RAM</div>\n                </div>\n                <div style=\"clear:both;\"></div>\n            </div>\n\n            <p><a href=\"#\" class=\"button updateEasyPieChart\">Update pie charts</a></p>\n\n            <p class=\"credits\">Inspired by: <a href=\"http://drbl.in/ezuc\" target=\"_blank\">Simple Pie Charts II by Rafal Bromirski on dribble</a></p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/examples/style.css",
    "content": "body {\n    font: 13px/1.4 'Helvetica Neue', 'Helvetica','Arial', sans-serif;\n    color: #333;\n}\n\n.container {\n    width: 520px;\n    margin: auto;\n}\n\nh1 {\n    border-bottom: 1px solid #d9d9d9;\n}\n\na {\n    color: #be2221;\n    text-decoration: none;\n}\n\n.chart {\n    float: left;\n    margin: 10px;\n}\n\n.percentage,\n.label {\n    text-align: center;\n    color: #333;\n    font-weight: 100;\n    font-size: 1.2em;\n    margin-bottom: 0.3em;\n}\n\n.credits {\n    padding-top: 0.5em;\n    clear: both;\n    color: #999;\n}\n\n.credits a {\n    color: #333;\n}\n\n.dark {\n    background: #333;\n}\n\n.dark .percentage-light,\n.dark .label {\n    text-align: center;\n    color: #999;\n    font-weight: 100;\n    font-size: 1.2em;\n    margin-bottom: 0.3em;\n}\n\n\n.button {\n  -webkit-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  -moz-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  padding: 6px 20px;\n  font-weight: bold;\n  text-transform: uppercase;\n  display: block;\n  margin: auto;\n  max-width: 200px;\n  text-align: center;\n  background-color: #5c5c5c;\n  background-image: -moz-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -ms-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#666666), to(#4d4d4d));\n  background-image: -webkit-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -o-linear-gradient(top, #666666, #4d4d4d);\n  background-image: linear-gradient(top, #666666, #4d4d4d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#4d4d4d', GradientType=0);\n  color: #ffffff;\n  text-shadow: 0 1px 1px #333333;\n}\n.button:hover {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #616161;\n  background-image: -moz-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -ms-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6b6b6b), to(#525252));\n  background-image: -webkit-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -o-linear-gradient(top, #6b6b6b, #525252);\n  background-image: linear-gradient(top, #6b6b6b, #525252);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b6b6b', endColorstr='#525252', GradientType=0);\n}\n.button:active {\n  background-color: #575757;\n  background-image: -moz-linear-gradient(top, #616161, #474747);\n  background-image: -ms-linear-gradient(top, #616161, #474747);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#616161), to(#474747));\n  background-image: -webkit-linear-gradient(top, #616161, #474747);\n  background-image: -o-linear-gradient(top, #616161, #474747);\n  background-image: linear-gradient(top, #616161, #474747);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#474747', GradientType=0);\n  -webkit-transform: translate(0, 1px);\n  -moz-transform: translate(0, 1px);\n  -ms-transform: translate(0, 1px);\n  -o-transform: translate(0, 1px);\n  transform: translate(0, 1px);\n}\n.button:disabled {\n  background-color: #dddddd;\n  background-image: -moz-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -ms-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e7e7e7), to(#cdcdcd));\n  background-image: -webkit-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -o-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e7e7e7', endColorstr='#cdcdcd', GradientType=0);\n  color: #939393;\n  text-shadow: 0 1px 1px #fff;\n}\n\n@media screen and (max-device-width: 480px) {\n  .container{\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.coffee",
    "content": "###\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n###\n\n(($) ->\n  $.easyPieChart = (el, options) ->\n\n    @el = el\n    @$el = $ el\n    @$el.data \"easyPieChart\", @\n\n    @init = =>\n      @options = $.extend {}, $.easyPieChart.defaultOptions, options\n\n      #get relevant data\n      percent = parseInt @$el.data('percent'), 10\n      @percentage = 0\n\n      #create canvas element and set the origin to the center\n      @canvas = $(\"<canvas width='#{@options.size}' height='#{@options.size}'></canvas>\").get(0)\n      @$el.append @canvas\n      G_vmlCanvasManager.initElement @canvas if G_vmlCanvasManager?\n      @ctx = @canvas.getContext '2d'\n\n      if window.devicePixelRatio > 1\n        scaleBy = window.devicePixelRatio\n        $(@canvas).css({\n          width: @options.size\n          height: @options.size\n        })\n        @canvas.width *= scaleBy\n        @canvas.height *= scaleBy\n        @ctx.scale scaleBy, scaleBy\n\n      @ctx.translate @options.size/2, @options.size/2\n      @$el.addClass 'easyPieChart'\n      @$el.css {\n        width: @options.size\n        height: @options.size\n        lineHeight: \"#{@options.size}px\"\n      }\n\n\n\n      @update percent\n      @\n\n    @update = (percent) =>\n      if @options.animate == false\n        drawLine percent\n      else\n        animateLine @percentage, percent\n\n    renderScale = =>\n      @ctx.fillStyle = @options.scaleColor\n      @ctx.lineWidth = 1\n      addScaleLine i for i in [0..24]\n\n    addScaleLine = (i) =>\n      offset = if i%6==0 then 0 else @options.size*0.017\n      @ctx.save()\n      @ctx.rotate i * Math.PI / 12\n      @ctx.fillRect @options.size/2-offset, 0, -@options.size*0.05+offset, 1\n      @ctx.restore()\n\n    renderTrack = =>\n      offset = @options.size/2-@options.lineWidth/2\n      offset -= @options.size*0.08 if @options.scaleColor != false\n\n      @ctx.beginPath()\n      @ctx.arc 0, 0, offset, 0, Math.PI * 2, true\n      @ctx.closePath()\n      @ctx.strokeStyle = @options.trackColor\n      @ctx.lineWidth = @options.lineWidth\n      @ctx.stroke()\n\n    renderBackground = =>\n      do renderScale if @options.scaleColor != false\n      do renderTrack if @options.trackColor != false\n\n    drawLine = (percent) =>\n      do renderBackground\n\n      @ctx.strokeStyle = if $.isFunction @options.barColor  then @options.barColor percent else @options.barColor\n      @ctx.lineCap = @options.lineCap\n      @ctx.lineWidth = @options.lineWidth\n\n      offset = @options.size/2-@options.lineWidth/2\n      offset -= @options.size*0.08 if @options.scaleColor != false\n\n      @ctx.save()\n      @ctx.rotate -Math.PI/2\n      @ctx.beginPath()\n      @ctx.arc 0, 0, offset, 0, Math.PI * 2 * percent/100, false\n      @ctx.stroke()\n      @ctx.restore()\n\n    animateLine = (from, to) =>\n      fps = 30\n      steps = fps * @options.animate/1000\n      currentStep = 0\n\n      @options.onStart.call @\n      @percentage = to\n\n      if @animation\n        clearInterval @animation\n        @animation = false\n\n      @animation = setInterval =>\n        @ctx.clearRect -@options.size/2, -@options.size/2, @options.size, @options.size\n        renderBackground.call @\n        drawLine.call @, [easeInOutQuad currentStep, from, to-from, steps]\n\n        currentStep++\n\n        if (currentStep/steps) > 1\n          clearInterval @animation\n          @animation = false\n          @options.onStop.call @\n\n      , 1000/fps\n\n    #t=time;b=beginning value;c=change in value;d=duration\n    easeInOutQuad = (t, b, c, d) ->\n\n      easeIn = (t) ->\n        return Math.pow(t, 2) # Quad\n      easing = (t) ->\n        if (t < 1)\n          return easeIn(t)\n        else\n          return 2 - easeIn( (t/2) * -2 + 2 )\n\n      t /= d / 2\n      return c / 2 * easing(t) + b\n\n    @init()\n\n  $.easyPieChart.defaultOptions =\n    barColor:        '#ef1e25'\n    trackColor:      '#f2f2f2'\n    scaleColor:      '#dfe0e0'\n    lineCap:         'round'\n    size:            110\n    lineWidth:       3\n    animate:         false\n    onStart:         $.noop\n    onStop:          $.noop\n\n  $.fn.easyPieChart = (options) ->\n    $.each @, (i, el) ->\n      $el = ($ el)\n\n      unless $el.data 'easyPieChart'\n        $el.data 'easyPieChart', new $.easyPieChart el, options\n\n  undefined\n)(jQuery)\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.css",
    "content": ".easyPieChart {\n    position: relative;\n    text-align: center;\n}\n\n.easyPieChart canvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.js",
    "content": "// Generated by CoffeeScript 1.4.0\n\n/*\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n*/\n\n\n(function() {\n\n  (function($) {\n    $.easyPieChart = function(el, options) {\n      var addScaleLine, animateLine, drawLine, easeInOutQuad, renderBackground, renderScale, renderTrack,\n        _this = this;\n      this.el = el;\n      this.$el = $(el);\n      this.$el.data(\"easyPieChart\", this);\n      this.init = function() {\n        var percent;\n        _this.options = $.extend({}, $.easyPieChart.defaultOptions, options);\n        percent = parseInt(_this.$el.data('percent'), 10);\n        _this.percentage = 0;\n        _this.canvas = $(\"<canvas width='\" + _this.options.size + \"' height='\" + _this.options.size + \"'></canvas>\").get(0);\n        _this.$el.append(_this.canvas);\n        if (typeof G_vmlCanvasManager !== \"undefined\" && G_vmlCanvasManager !== null) {\n          G_vmlCanvasManager.initElement(_this.canvas);\n        }\n        _this.ctx = _this.canvas.getContext('2d');\n        if (window.devicePixelRatio > 1.5) {\n          $(_this.canvas).css({\n            width: _this.options.size,\n            height: _this.options.size\n          });\n          _this.canvas.width *= 2;\n          _this.canvas.height *= 2;\n          _this.ctx.scale(2, 2);\n        }\n        _this.ctx.translate(_this.options.size / 2, _this.options.size / 2);\n        _this.$el.addClass('easyPieChart');\n        _this.$el.css({\n          width: _this.options.size,\n          height: _this.options.size,\n          lineHeight: \"\" + _this.options.size + \"px\"\n        });\n        _this.update(percent);\n        return _this;\n      };\n      this.update = function(percent) {\n        if (_this.options.animate === false) {\n          return drawLine(percent);\n        } else {\n          return animateLine(_this.percentage, percent);\n        }\n      };\n      renderScale = function() {\n        var i, _i, _results;\n        _this.ctx.fillStyle = _this.options.scaleColor;\n        _this.ctx.lineWidth = 1;\n        _results = [];\n        for (i = _i = 0; _i <= 24; i = ++_i) {\n          _results.push(addScaleLine(i));\n        }\n        return _results;\n      };\n      addScaleLine = function(i) {\n        var offset;\n        offset = i % 6 === 0 ? 0 : _this.options.size * 0.017;\n        _this.ctx.save();\n        _this.ctx.rotate(i * Math.PI / 12);\n        _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1);\n        return _this.ctx.restore();\n      };\n      renderTrack = function() {\n        var offset;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true);\n        _this.ctx.closePath();\n        _this.ctx.strokeStyle = _this.options.trackColor;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        return _this.ctx.stroke();\n      };\n      renderBackground = function() {\n        if (_this.options.scaleColor !== false) {\n          renderScale();\n        }\n        if (_this.options.trackColor !== false) {\n          return renderTrack();\n        }\n      };\n      drawLine = function(percent) {\n        var offset;\n        renderBackground();\n        _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor;\n        _this.ctx.lineCap = _this.options.lineCap;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.save();\n        _this.ctx.rotate(-Math.PI / 2);\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false);\n        _this.ctx.stroke();\n        return _this.ctx.restore();\n      };\n      animateLine = function(from, to) {\n        var currentStep, fps, steps;\n        fps = 30;\n        steps = fps * _this.options.animate / 1000;\n        currentStep = 0;\n        _this.options.onStart.call(_this);\n        _this.percentage = to;\n        if (_this.animation) {\n          clearInterval(_this.animation);\n          _this.animation = false;\n        }\n        return _this.animation = setInterval(function() {\n          _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size);\n          renderBackground.call(_this);\n          drawLine.call(_this, [easeInOutQuad(currentStep, from, to - from, steps)]);\n          currentStep++;\n          if ((currentStep / steps) > 1) {\n            clearInterval(_this.animation);\n            _this.animation = false;\n            return _this.options.onStop.call(_this);\n          }\n        }, 1000 / fps);\n      };\n      easeInOutQuad = function(t, b, c, d) {\n        var easeIn, easing;\n        easeIn = function(t) {\n          return Math.pow(t, 2);\n        };\n        easing = function(t) {\n          if (t < 1) {\n            return easeIn(t);\n          } else {\n            return 2 - easeIn((t / 2) * -2 + 2);\n          }\n        };\n        t /= d / 2;\n        return c / 2 * easing(t) + b;\n      };\n      return this.init();\n    };\n    $.easyPieChart.defaultOptions = {\n      barColor: '#ef1e25',\n      trackColor: '#f2f2f2',\n      scaleColor: '#dfe0e0',\n      lineCap: 'round',\n      size: 110,\n      lineWidth: 3,\n      animate: false,\n      onStart: $.noop,\n      onStop: $.noop\n    };\n    $.fn.easyPieChart = function(options) {\n      return $.each(this, function(i, el) {\n        var $el;\n        $el = $(el);\n        if (!$el.data('easyPieChart')) {\n          return $el.data('easyPieChart', new $.easyPieChart(el, options));\n        }\n      });\n    };\n    return void 0;\n  })(jQuery);\n\n}).call(this);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/API.txt",
    "content": "Flot Reference\n--------------\n\nConsider a call to the plot function:\n\n   var plot = $.plot(placeholder, data, options)\n\nThe placeholder is a jQuery object or DOM element or jQuery expression\nthat the plot will be put into. This placeholder needs to have its\nwidth and height set as explained in the README (go read that now if\nyou haven't, it's short). The plot will modify some properties of the\nplaceholder so it's recommended you simply pass in a div that you\ndon't use for anything else. Make sure you check any fancy styling\nyou apply to the div, e.g. background images have been reported to be a\nproblem on IE 7.\n\nThe format of the data is documented below, as is the available\noptions. The plot object returned from the call has some methods you\ncan call. These are documented separately below.\n\nNote that in general Flot gives no guarantees if you change any of the\nobjects you pass in to the plot function or get out of it since\nthey're not necessarily deep-copied.\n\n\nData Format\n-----------\n\nThe data is an array of data series:\n\n  [ series1, series2, ... ]\n\nA series can either be raw data or an object with properties. The raw\ndata format is an array of points:\n\n  [ [x1, y1], [x2, y2], ... ]\n\nE.g.\n\n  [ [1, 3], [2, 14.01], [3.5, 3.14] ]\n\nNote that to simplify the internal logic in Flot both the x and y\nvalues must be numbers (even if specifying time series, see below for\nhow to do this). This is a common problem because you might retrieve\ndata from the database and serialize them directly to JSON without\nnoticing the wrong type. If you're getting mysterious errors, double\ncheck that you're inputting numbers and not strings.\n\nIf a null is specified as a point or if one of the coordinates is null\nor couldn't be converted to a number, the point is ignored when\ndrawing. As a special case, a null value for lines is interpreted as a\nline segment end, i.e. the points before and after the null value are\nnot connected.\n\nLines and points take two coordinates. For filled lines and bars, you\ncan specify a third coordinate which is the bottom of the filled\narea/bar (defaults to 0).\n\nThe format of a single series object is as follows:\n\n  {\n    color: color or number\n    data: rawdata\n    label: string\n    lines: specific lines options\n    bars: specific bars options\n    points: specific points options\n    xaxis: number\n    yaxis: number\n    clickable: boolean\n    hoverable: boolean\n    shadowSize: number\n  }\n\nYou don't have to specify any of them except the data, the rest are\noptions that will get default values. Typically you'd only specify\nlabel and data, like this:\n\n  {\n    label: \"y = 3\",\n    data: [[0, 3], [10, 3]]\n  }\n\nThe label is used for the legend, if you don't specify one, the series\nwill not show up in the legend.\n\nIf you don't specify color, the series will get a color from the\nauto-generated colors. The color is either a CSS color specification\n(like \"rgb(255, 100, 123)\") or an integer that specifies which of\nauto-generated colors to select, e.g. 0 will get color no. 0, etc.\n\nThe latter is mostly useful if you let the user add and remove series,\nin which case you can hard-code the color index to prevent the colors\nfrom jumping around between the series.\n\nThe \"xaxis\" and \"yaxis\" options specify which axis to use. The axes\nare numbered from 1 (default), so { yaxis: 2} means that the series\nshould be plotted against the second y axis.\n\n\"clickable\" and \"hoverable\" can be set to false to disable\ninteractivity for specific series if interactivity is turned on in\nthe plot, see below.\n\nThe rest of the options are all documented below as they are the same\nas the default options passed in via the options parameter in the plot\ncommmand. When you specify them for a specific data series, they will\noverride the default options for the plot for that data series.\n\nHere's a complete example of a simple data specification:\n\n  [ { label: \"Foo\", data: [ [10, 1], [17, -14], [30, 5] ] },\n    { label: \"Bar\", data: [ [11, 13], [19, 11], [30, -7] ] } ]\n\n\nPlot Options\n------------\n\nAll options are completely optional. They are documented individually\nbelow, to change them you just specify them in an object, e.g.\n\n  var options = {\n    series: {\n      lines: { show: true },\n      points: { show: true }\n    }\n  };\n\n  $.plot(placeholder, data, options);\n\n\nCustomizing the legend\n======================\n\n  legend: {\n    show: boolean\n    labelFormatter: null or (fn: string, series object -> string)\n    labelBoxBorderColor: color\n    noColumns: number\n    position: \"ne\" or \"nw\" or \"se\" or \"sw\"\n    margin: number of pixels or [x margin, y margin]\n    backgroundColor: null or color\n    backgroundOpacity: number between 0 and 1\n    container: null or jQuery object/DOM element/jQuery expression\n  }\n\nThe legend is generated as a table with the data series labels and\nsmall label boxes with the color of the series. If you want to format\nthe labels in some way, e.g. make them to links, you can pass in a\nfunction for \"labelFormatter\". Here's an example that makes them\nclickable:\n\n  labelFormatter: function(label, series) {\n    // series is the series object for the label\n    return '<a href=\"#' + label + '\">' + label + '</a>';\n  }\n\n\"noColumns\" is the number of columns to divide the legend table into.\n\"position\" specifies the overall placement of the legend within the\nplot (top-right, top-left, etc.) and margin the distance to the plot\nedge (this can be either a number or an array of two numbers like [x,\ny]). \"backgroundColor\" and \"backgroundOpacity\" specifies the\nbackground. The default is a partly transparent auto-detected\nbackground.\n\nIf you want the legend to appear somewhere else in the DOM, you can\nspecify \"container\" as a jQuery object/expression to put the legend\ntable into. The \"position\" and \"margin\" etc. options will then be\nignored. Note that Flot will overwrite the contents of the container.\n\n\nCustomizing the axes\n====================\n\n  xaxis, yaxis: {\n    show: null or true/false\n    position: \"bottom\" or \"top\" or \"left\" or \"right\"\n    mode: null or \"time\"\n\n    color: null or color spec\n    tickColor: null or color spec\n    \n    min: null or number\n    max: null or number\n    autoscaleMargin: null or number\n    \n    transform: null or fn: number -> number\n    inverseTransform: null or fn: number -> number\n    \n    ticks: null or number or ticks array or (fn: range -> ticks array)\n    tickSize: number or array\n    minTickSize: number or array\n    tickFormatter: (fn: number, object -> string) or string\n    tickDecimals: null or number\n\n    labelWidth: null or number\n    labelHeight: null or number\n    reserveSpace: null or true\n    \n    tickLength: null or number\n\n    alignTicksWithAxis: null or number\n  }\n\nAll axes have the same kind of options. The following describes how to\nconfigure one axis, see below for what to do if you've got more than\none x axis or y axis.\n\nIf you don't set the \"show\" option (i.e. it is null), visibility is\nauto-detected, i.e. the axis will show up if there's data associated\nwith it. You can override this by setting the \"show\" option to true or\nfalse.\n\nThe \"position\" option specifies where the axis is placed, bottom or\ntop for x axes, left or right for y axes. The \"mode\" option determines\nhow the data is interpreted, the default of null means as decimal\nnumbers. Use \"time\" for time series data, see the time series data\nsection.\n\nThe \"color\" option determines the color of the labels and ticks for\nthe axis (default is the grid color). For more fine-grained control\nyou can also set the color of the ticks separately with \"tickColor\"\n(otherwise it's autogenerated as the base color with some\ntransparency).\n\nThe options \"min\"/\"max\" are the precise minimum/maximum value on the\nscale. If you don't specify either of them, a value will automatically\nbe chosen based on the minimum/maximum data values. Note that Flot\nalways examines all the data values you feed to it, even if a\nrestriction on another axis may make some of them invisible (this\nmakes interactive use more stable).\n\nThe \"autoscaleMargin\" is a bit esoteric: it's the fraction of margin\nthat the scaling algorithm will add to avoid that the outermost points\nends up on the grid border. Note that this margin is only applied when\na min or max value is not explicitly set. If a margin is specified,\nthe plot will furthermore extend the axis end-point to the nearest\nwhole tick. The default value is \"null\" for the x axes and 0.02 for y\naxes which seems appropriate for most cases.\n\n\"transform\" and \"inverseTransform\" are callbacks you can put in to\nchange the way the data is drawn. You can design a function to\ncompress or expand certain parts of the axis non-linearly, e.g.\nsuppress weekends or compress far away points with a logarithm or some\nother means. When Flot draws the plot, each value is first put through\nthe transform function. Here's an example, the x axis can be turned\ninto a natural logarithm axis with the following code:\n\n  xaxis: {\n    transform: function (v) { return Math.log(v); },\n    inverseTransform: function (v) { return Math.exp(v); }\n  }\n\nSimilarly, for reversing the y axis so the values appear in inverse\norder:\n  \n  yaxis: {\n    transform: function (v) { return -v; },\n    inverseTransform: function (v) { return -v; }\n  }\n\nNote that for finding extrema, Flot assumes that the transform\nfunction does not reorder values (it should be monotone).\n\nThe inverseTransform is simply the inverse of the transform function\n(so v == inverseTransform(transform(v)) for all relevant v). It is\nrequired for converting from canvas coordinates to data coordinates,\ne.g. for a mouse interaction where a certain pixel is clicked. If you\ndon't use any interactive features of Flot, you may not need it.\n\n\nThe rest of the options deal with the ticks.\n\nIf you don't specify any ticks, a tick generator algorithm will make\nsome for you. The algorithm has two passes. It first estimates how\nmany ticks would be reasonable and uses this number to compute a nice\nround tick interval size. Then it generates the ticks.\n\nYou can specify how many ticks the algorithm aims for by setting\n\"ticks\" to a number. The algorithm always tries to generate reasonably\nround tick values so even if you ask for three ticks, you might get\nfive if that fits better with the rounding. If you don't want any\nticks at all, set \"ticks\" to 0 or an empty array.\n\nAnother option is to skip the rounding part and directly set the tick\ninterval size with \"tickSize\". If you set it to 2, you'll get ticks at\n2, 4, 6, etc. Alternatively, you can specify that you just don't want\nticks at a size less than a specific tick size with \"minTickSize\".\nNote that for time series, the format is an array like [2, \"month\"],\nsee the next section.\n\nIf you want to completely override the tick algorithm, you can specify\nan array for \"ticks\", either like this:\n\n  ticks: [0, 1.2, 2.4]\n\nOr like this where the labels are also customized:\n\n  ticks: [[0, \"zero\"], [1.2, \"one mark\"], [2.4, \"two marks\"]]\n\nYou can mix the two if you like.\n  \nFor extra flexibility you can specify a function as the \"ticks\"\nparameter. The function will be called with an object with the axis\nmin and max and should return a ticks array. Here's a simplistic tick\ngenerator that spits out intervals of pi, suitable for use on the x\naxis for trigonometric functions:\n\n  function piTickGenerator(axis) {\n    var res = [], i = Math.floor(axis.min / Math.PI);\n    do {\n      var v = i * Math.PI;\n      res.push([v, i + \"\\u03c0\"]);\n      ++i;\n    } while (v < axis.max);\n    \n    return res;\n  }\n\nYou can control how the ticks look like with \"tickDecimals\", the\nnumber of decimals to display (default is auto-detected).\n\nAlternatively, for ultimate control over how ticks are formatted you can\nprovide a function to \"tickFormatter\". The function is passed two\nparameters, the tick value and an axis object with information, and\nshould return a string. The default formatter looks like this:\n\n  function formatter(val, axis) {\n    return val.toFixed(axis.tickDecimals);\n  }\n\nThe axis object has \"min\" and \"max\" with the range of the axis,\n\"tickDecimals\" with the number of decimals to round the value to and\n\"tickSize\" with the size of the interval between ticks as calculated\nby the automatic axis scaling algorithm (or specified by you). Here's\nan example of a custom formatter:\n\n  function suffixFormatter(val, axis) {\n    if (val > 1000000)\n      return (val / 1000000).toFixed(axis.tickDecimals) + \" MB\";\n    else if (val > 1000)\n      return (val / 1000).toFixed(axis.tickDecimals) + \" kB\";\n    else\n      return val.toFixed(axis.tickDecimals) + \" B\";\n  }\n\n\"labelWidth\" and \"labelHeight\" specifies a fixed size of the tick\nlabels in pixels. They're useful in case you need to align several\nplots. \"reserveSpace\" means that even if an axis isn't shown, Flot\nshould reserve space for it - it is useful in combination with\nlabelWidth and labelHeight for aligning multi-axis charts.\n\n\"tickLength\" is the length of the tick lines in pixels. By default, the\ninnermost axes will have ticks that extend all across the plot, while\nany extra axes use small ticks. A value of null means use the default,\nwhile a number means small ticks of that length - set it to 0 to hide\nthe lines completely.\n\nIf you set \"alignTicksWithAxis\" to the number of another axis, e.g.\nalignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks\nof this axis are aligned with the ticks of the other axis. This may\nimprove the looks, e.g. if you have one y axis to the left and one to\nthe right, because the grid lines will then match the ticks in both\nends. The trade-off is that the forced ticks won't necessarily be at\nnatural places.\n\n\nMultiple axes\n=============\n\nIf you need more than one x axis or y axis, you need to specify for\neach data series which axis they are to use, as described under the\nformat of the data series, e.g. { data: [...], yaxis: 2 } specifies\nthat a series should be plotted against the second y axis.\n\nTo actually configure that axis, you can't use the xaxis/yaxis options\ndirectly - instead there are two arrays in the options:\n\n   xaxes: []\n   yaxes: []\n\nHere's an example of configuring a single x axis and two y axes (we\ncan leave options of the first y axis empty as the defaults are fine):\n\n  {\n    xaxes: [ { position: \"top\" } ],\n    yaxes: [ { }, { position: \"right\", min: 20 } ]\n  }\n\nThe arrays get their default values from the xaxis/yaxis settings, so\nsay you want to have all y axes start at zero, you can simply specify\nyaxis: { min: 0 } instead of adding a min parameter to all the axes.\n\nGenerally, the various interfaces in Flot dealing with data points\neither accept an xaxis/yaxis parameter to specify which axis number to\nuse (starting from 1), or lets you specify the coordinate directly as\nx2/x3/... or x2axis/x3axis/... instead of \"x\" or \"xaxis\".\n\n  \nTime series data\n================\n\nTime series are a bit more difficult than scalar data because\ncalendars don't follow a simple base 10 system. For many cases, Flot\nabstracts most of this away, but it can still be a bit difficult to\nget the data into Flot. So we'll first discuss the data format.\n\nThe time series support in Flot is based on Javascript timestamps,\ni.e. everywhere a time value is expected or handed over, a Javascript\ntimestamp number is used. This is a number, not a Date object. A\nJavascript timestamp is the number of milliseconds since January 1,\n1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's\nin milliseconds, so remember to multiply by 1000!\n\nYou can see a timestamp like this\n\n  alert((new Date()).getTime())\n\nNormally you want the timestamps to be displayed according to a\ncertain time zone, usually the time zone in which the data has been\nproduced. However, Flot always displays timestamps according to UTC.\nIt has to as the only alternative with core Javascript is to interpret\nthe timestamps according to the time zone that the visitor is in,\nwhich means that the ticks will shift unpredictably with the time zone\nand daylight savings of each visitor.\n\nSo given that there's no good support for custom time zones in\nJavascript, you'll have to take care of this server-side.\n\nThe easiest way to think about it is to pretend that the data\nproduction time zone is UTC, even if it isn't. So if you have a\ndatapoint at 2002-02-20 08:00, you can generate a timestamp for eight\no'clock UTC even if it really happened eight o'clock UTC+0200.\n\nIn PHP you can get an appropriate timestamp with\n'strtotime(\"2002-02-20 UTC\") * 1000', in Python with\n'calendar.timegm(datetime_object.timetuple()) * 1000', in .NET with\nsomething like:\n\n  public static int GetJavascriptTimestamp(System.DateTime input)\n  {\n    System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse(\"1/1/1970\").Ticks);\n    System.DateTime time = input.Subtract(span);\n    return (long)(time.Ticks / 10000);\n  }\n\nJavascript also has some support for parsing date strings, so it is\npossible to generate the timestamps manually client-side.\n\nIf you've already got the real UTC timestamp, it's too late to use the\npretend trick described above. But you can fix up the timestamps by\nadding the time zone offset, e.g. for UTC+0200 you would add 2 hours\nto the UTC timestamp you got. Then it'll look right on the plot. Most\nprogramming environments have some means of getting the timezone\noffset for a specific date (note that you need to get the offset for\neach individual timestamp to account for daylight savings).\n\nOnce you've gotten the timestamps into the data and specified \"time\"\nas the axis mode, Flot will automatically generate relevant ticks and\nformat them. As always, you can tweak the ticks via the \"ticks\" option\n- just remember that the values should be timestamps (numbers), not\nDate objects.\n\nTick generation and formatting can also be controlled separately\nthrough the following axis options:\n\n  minTickSize: array\n  timeformat: null or format string\n  monthNames: null or array of size 12 of strings\n  twelveHourClock: boolean\n\nHere \"timeformat\" is a format string to use. You might use it like\nthis:\n\n  xaxis: {\n    mode: \"time\"\n    timeformat: \"%y/%m/%d\"\n  }\n  \nThis will result in tick labels like \"2000/12/24\". The following\nspecifiers are supported\n\n  %h: hours\n  %H: hours (left-padded with a zero)\n  %M: minutes (left-padded with a zero)\n  %S: seconds (left-padded with a zero)\n  %d: day of month (1-31), use %0d for zero-padding\n  %m: month (1-12), use %0m for zero-padding\n  %y: year (four digits)\n  %b: month name (customizable)\n  %p: am/pm, additionally switches %h/%H to 12 hour instead of 24\n  %P: AM/PM (uppercase version of %p)\n\nInserting a zero like %0m or %0d means that the specifier will be\nleft-padded with a zero if it's only single-digit. So %y-%0m-%0d\nresults in unambigious ISO timestamps like 2007-05-10 (for May 10th).\n\nYou can customize the month names with the \"monthNames\" option. For\ninstance, for Danish you might specify:\n\n  monthNames: [\"jan\", \"feb\", \"mar\", \"apr\", \"maj\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n\nIf you set \"twelveHourClock\" to true, the autogenerated timestamps\nwill use 12 hour AM/PM timestamps instead of 24 hour.\n  \nThe format string and month names are used by a very simple built-in\nformat function that takes a date object, a format string (and\noptionally an array of month names) and returns the formatted string.\nIf needed, you can access it as $.plot.formatDate(date, formatstring,\nmonthNames) or even replace it with another more advanced function\nfrom a date library if you're feeling adventurous.\n\nIf everything else fails, you can control the formatting by specifying\na custom tick formatter function as usual. Here's a simple example\nwhich will format December 24 as 24/12:\n\n  tickFormatter: function (val, axis) {\n    var d = new Date(val);\n    return d.getUTCDate() + \"/\" + (d.getUTCMonth() + 1);\n  }\n\nNote that for the time mode \"tickSize\" and \"minTickSize\" are a bit\nspecial in that they are arrays on the form \"[value, unit]\" where unit\nis one of \"second\", \"minute\", \"hour\", \"day\", \"month\" and \"year\". So\nyou can specify\n\n  minTickSize: [1, \"month\"]\n\nto get a tick interval size of at least 1 month and correspondingly,\nif axis.tickSize is [2, \"day\"] in the tick formatter, the ticks have\nbeen produced with two days in-between.\n\n\n\nCustomizing the data series\n===========================\n\n  series: {\n    lines, points, bars: {\n      show: boolean\n      lineWidth: number\n      fill: boolean or number\n      fillColor: null or color/gradient\n    }\n\n    points: {\n      radius: number\n      symbol: \"circle\" or function\n    }\n\n    bars: {\n      barWidth: number\n      align: \"left\" or \"center\"\n      horizontal: boolean\n    }\n\n    lines: {\n      steps: boolean\n    }\n\n    shadowSize: number\n  }\n  \n  colors: [ color1, color2, ... ]\n\nThe options inside \"series: {}\" are copied to each of the series. So\nyou can specify that all series should have bars by putting it in the\nglobal options, or override it for individual series by specifying\nbars in a particular the series object in the array of data.\n  \nThe most important options are \"lines\", \"points\" and \"bars\" that\nspecify whether and how lines, points and bars should be shown for\neach data series. In case you don't specify anything at all, Flot will\ndefault to showing lines (you can turn this off with\nlines: { show: false }). You can specify the various types\nindependently of each other, and Flot will happily draw each of them\nin turn (this is probably only useful for lines and points), e.g.\n\n  var options = {\n    series: {\n      lines: { show: true, fill: true, fillColor: \"rgba(255, 255, 255, 0.8)\" },\n      points: { show: true, fill: false }\n    }\n  };\n\n\"lineWidth\" is the thickness of the line or outline in pixels. You can\nset it to 0 to prevent a line or outline from being drawn; this will\nalso hide the shadow.\n\n\"fill\" is whether the shape should be filled. For lines, this produces\narea graphs. You can use \"fillColor\" to specify the color of the fill.\nIf \"fillColor\" evaluates to false (default for everything except\npoints which are filled with white), the fill color is auto-set to the\ncolor of the data series. You can adjust the opacity of the fill by\nsetting fill to a number between 0 (fully transparent) and 1 (fully\nopaque).\n\nFor bars, fillColor can be a gradient, see the gradient documentation\nbelow. \"barWidth\" is the width of the bars in units of the x axis (or\nthe y axis if \"horizontal\" is true), contrary to most other measures\nthat are specified in pixels. For instance, for time series the unit\nis milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of\na day. \"align\" specifies whether a bar should be left-aligned\n(default) or centered on top of the value it represents. When\n\"horizontal\" is on, the bars are drawn horizontally, i.e. from the y\naxis instead of the x axis; note that the bar end points are still\ndefined in the same way so you'll probably want to swap the\ncoordinates if you've been plotting vertical bars first.\n\nFor lines, \"steps\" specifies whether two adjacent data points are\nconnected with a straight (possibly diagonal) line or with first a\nhorizontal and then a vertical line. Note that this transforms the\ndata by adding extra points.\n\nFor points, you can specify the radius and the symbol. The only\nbuilt-in symbol type is circles, for other types you can use a plugin\nor define them yourself by specifying a callback:\n\n  function cross(ctx, x, y, radius, shadow) {\n      var size = radius * Math.sqrt(Math.PI) / 2;\n      ctx.moveTo(x - size, y - size);\n      ctx.lineTo(x + size, y + size);\n      ctx.moveTo(x - size, y + size);\n      ctx.lineTo(x + size, y - size);\n  }\n\nThe parameters are the drawing context, x and y coordinates of the\ncenter of the point, a radius which corresponds to what the circle\nwould have used and whether the call is to draw a shadow (due to\nlimited canvas support, shadows are currently faked through extra\ndraws). It's good practice to ensure that the area covered by the\nsymbol is the same as for the circle with the given radius, this\nensures that all symbols have approximately the same visual weight.\n\n\"shadowSize\" is the default size of shadows in pixels. Set it to 0 to\nremove shadows.\n\nThe \"colors\" array specifies a default color theme to get colors for\nthe data series from. You can specify as many colors as you like, like\nthis:\n\n  colors: [\"#d18b2c\", \"#dba255\", \"#919733\"]\n\nIf there are more data series than colors, Flot will try to generate\nextra colors by lightening and darkening colors in the theme.\n\n\nCustomizing the grid\n====================\n\n  grid: {\n    show: boolean\n    aboveData: boolean\n    color: color\n    backgroundColor: color/gradient or null\n    labelMargin: number\n    axisMargin: number\n    markings: array of markings or (fn: axes -> array of markings)\n    borderWidth: number\n    borderColor: color or null\n    minBorderMargin: number or null\n    clickable: boolean\n    hoverable: boolean\n    autoHighlight: boolean\n    mouseActiveRadius: number\n  }\n\nThe grid is the thing with the axes and a number of ticks. Many of the\nthings in the grid are configured under the individual axes, but not\nall. \"color\" is the color of the grid itself whereas \"backgroundColor\"\nspecifies the background color inside the grid area, here null means\nthat the background is transparent. You can also set a gradient, see\nthe gradient documentation below.\n\nYou can turn off the whole grid including tick labels by setting\n\"show\" to false. \"aboveData\" determines whether the grid is drawn\nabove the data or below (below is default).\n\n\"labelMargin\" is the space in pixels between tick labels and axis\nline, and \"axisMargin\" is the space in pixels between axes when there\nare two next to each other. Note that you can style the tick labels\nwith CSS, e.g. to change the color. They have class \"tickLabel\".\n\n\"borderWidth\" is the width of the border around the plot. Set it to 0\nto disable the border. You can also set \"borderColor\" if you want the\nborder to have a different color than the grid lines.\n\"minBorderMargin\" controls the default minimum margin around the\nborder - it's used to make sure that points aren't accidentally\nclipped by the canvas edge so by default the value is computed from\nthe point radius.\n\n\"markings\" is used to draw simple lines and rectangular areas in the\nbackground of the plot. You can either specify an array of ranges on\nthe form { xaxis: { from, to }, yaxis: { from, to } } (with multiple\naxes, you can specify coordinates for other axes instead, e.g. as\nx2axis/x3axis/...) or with a function that returns such an array given\nthe axes for the plot in an object as the first parameter.\n\nYou can set the color of markings by specifying \"color\" in the ranges\nobject. Here's an example array:\n\n  markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: \"#bb0000\" }, ... ]\n\nIf you leave out one of the values, that value is assumed to go to the\nborder of the plot. So for example if you only specify { xaxis: {\nfrom: 0, to: 2 } } it means an area that extends from the top to the\nbottom of the plot in the x range 0-2.\n\nA line is drawn if from and to are the same, e.g.\n\n  markings: [ { yaxis: { from: 1, to: 1 } }, ... ]\n\nwould draw a line parallel to the x axis at y = 1. You can control the\nline width with \"lineWidth\" in the range object.\n\nAn example function that makes vertical stripes might look like this:\n\n  markings: function (axes) {\n    var markings = [];\n    for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2)\n      markings.push({ xaxis: { from: x, to: x + 1 } });\n    return markings;\n  }\n\n\nIf you set \"clickable\" to true, the plot will listen for click events\non the plot area and fire a \"plotclick\" event on the placeholder with\na position and a nearby data item object as parameters. The coordinates\nare available both in the unit of the axes (not in pixels) and in\nglobal screen coordinates.\n\nLikewise, if you set \"hoverable\" to true, the plot will listen for\nmouse move events on the plot area and fire a \"plothover\" event with\nthe same parameters as the \"plotclick\" event. If \"autoHighlight\" is\ntrue (the default), nearby data items are highlighted automatically.\nIf needed, you can disable highlighting and control it yourself with\nthe highlight/unhighlight plot methods described elsewhere.\n\nYou can use \"plotclick\" and \"plothover\" events like this:\n\n    $.plot($(\"#placeholder\"), [ d ], { grid: { clickable: true } });\n\n    $(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n        alert(\"You clicked at \" + pos.x + \", \" + pos.y);\n        // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...\n        // if you need global screen coordinates, they are pos.pageX, pos.pageY\n\n        if (item) {\n          highlight(item.series, item.datapoint);\n          alert(\"You clicked a point!\");\n        }\n    });\n\nThe item object in this example is either null or a nearby object on the form:\n\n  item: {\n      datapoint: the point, e.g. [0, 2]\n      dataIndex: the index of the point in the data array\n      series: the series object\n      seriesIndex: the index of the series\n      pageX, pageY: the global screen coordinates of the point\n  }\n\nFor instance, if you have specified the data like this \n\n    $.plot($(\"#placeholder\"), [ { label: \"Foo\", data: [[0, 10], [7, 3]] } ], ...);\n\nand the mouse is near the point (7, 3), \"datapoint\" is [7, 3],\n\"dataIndex\" will be 1, \"series\" is a normalized series object with\namong other things the \"Foo\" label in series.label and the color in\nseries.color, and \"seriesIndex\" is 0. Note that plugins and options\nthat transform the data can shift the indexes from what you specified\nin the original data array.\n\nIf you use the above events to update some other information and want\nto clear out that info in case the mouse goes away, you'll probably\nalso need to listen to \"mouseout\" events on the placeholder div.\n\n\"mouseActiveRadius\" specifies how far the mouse can be from an item\nand still activate it. If there are two or more points within this\nradius, Flot chooses the closest item. For bars, the top-most bar\n(from the latest specified data series) is chosen.\n\nIf you want to disable interactivity for a specific data series, you\ncan set \"hoverable\" and \"clickable\" to false in the options for that\nseries, like this { data: [...], label: \"Foo\", clickable: false }.\n\n\nSpecifying gradients\n====================\n\nA gradient is specified like this:\n\n  { colors: [ color1, color2, ... ] }\n\nFor instance, you might specify a background on the grid going from\nblack to gray like this:\n\n  grid: {\n    backgroundColor: { colors: [\"#000\", \"#999\"] }\n  }\n\nFor the series you can specify the gradient as an object that\nspecifies the scaling of the brightness and the opacity of the series\ncolor, e.g.\n\n  { colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] }\n\nwhere the first color simply has its alpha scaled, whereas the second\nis also darkened. For instance, for bars the following makes the bars\ngradually disappear, without outline:\n\n  bars: {\n      show: true,\n      lineWidth: 0,\n      fill: true,\n      fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] }\n  }\n  \nFlot currently only supports vertical gradients drawn from top to\nbottom because that's what works with IE.\n\n\nPlot Methods\n------------\n\nThe Plot object returned from the plot function has some methods you\ncan call:\n\n  - highlight(series, datapoint)\n\n    Highlight a specific datapoint in the data series. You can either\n    specify the actual objects, e.g. if you got them from a\n    \"plotclick\" event, or you can specify the indices, e.g.\n    highlight(1, 3) to highlight the fourth point in the second series\n    (remember, zero-based indexing).\n\n  \n  - unhighlight(series, datapoint) or unhighlight()\n\n    Remove the highlighting of the point, same parameters as\n    highlight.\n\n    If you call unhighlight with no parameters, e.g. as\n    plot.unhighlight(), all current highlights are removed.\n\n\n  - setData(data)\n\n    You can use this to reset the data used. Note that axis scaling,\n    ticks, legend etc. will not be recomputed (use setupGrid() to do\n    that). You'll probably want to call draw() afterwards.\n\n    You can use this function to speed up redrawing a small plot if\n    you know that the axes won't change. Put in the new data with\n    setData(newdata), call draw(), and you're good to go. Note that\n    for large datasets, almost all the time is consumed in draw()\n    plotting the data so in this case don't bother.\n\n    \n  - setupGrid()\n\n    Recalculate and set axis scaling, ticks, legend etc.\n\n    Note that because of the drawing model of the canvas, this\n    function will immediately redraw (actually reinsert in the DOM)\n    the labels and the legend, but not the actual tick lines because\n    they're drawn on the canvas. You need to call draw() to get the\n    canvas redrawn.\n    \n  - draw()\n\n    Redraws the plot canvas.\n\n  - triggerRedrawOverlay()\n\n    Schedules an update of an overlay canvas used for drawing\n    interactive things like a selection and point highlights. This\n    is mostly useful for writing plugins. The redraw doesn't happen\n    immediately, instead a timer is set to catch multiple successive\n    redraws (e.g. from a mousemove). You can get to the overlay by\n    setting up a drawOverlay hook.\n\n  - width()/height()\n\n    Gets the width and height of the plotting area inside the grid.\n    This is smaller than the canvas or placeholder dimensions as some\n    extra space is needed (e.g. for labels).\n\n  - offset()\n\n    Returns the offset of the plotting area inside the grid relative\n    to the document, useful for instance for calculating mouse\n    positions (event.pageX/Y minus this offset is the pixel position\n    inside the plot).\n\n  - pointOffset({ x: xpos, y: ypos })\n\n    Returns the calculated offset of the data point at (x, y) in data\n    space within the placeholder div. If you are working with multiple axes, you\n    can specify the x and y axis references, e.g. \n\n      o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 })\n      // o.left and o.top now contains the offset within the div\n\n  - resize()\n\n    Tells Flot to resize the drawing canvas to the size of the\n    placeholder. You need to run setupGrid() and draw() afterwards as\n    canvas resizing is a destructive operation. This is used\n    internally by the resize plugin.\n\n  - shutdown()\n\n    Cleans up any event handlers Flot has currently registered. This\n    is used internally.\n\n\nThere are also some members that let you peek inside the internal\nworkings of Flot which is useful in some cases. Note that if you change\nsomething in the objects returned, you're changing the objects used by\nFlot to keep track of its state, so be careful.\n\n  - getData()\n\n    Returns an array of the data series currently used in normalized\n    form with missing settings filled in according to the global\n    options. So for instance to find out what color Flot has assigned\n    to the data series, you could do this:\n\n      var series = plot.getData();\n      for (var i = 0; i < series.length; ++i)\n        alert(series[i].color);\n\n    A notable other interesting field besides color is datapoints\n    which has a field \"points\" with the normalized data points in a\n    flat array (the field \"pointsize\" is the increment in the flat\n    array to get to the next point so for a dataset consisting only of\n    (x,y) pairs it would be 2).\n\n  - getAxes()\n\n    Gets an object with the axes. The axes are returned as the\n    attributes of the object, so for instance getAxes().xaxis is the\n    x axis.\n\n    Various things are stuffed inside an axis object, e.g. you could\n    use getAxes().xaxis.ticks to find out what the ticks are for the\n    xaxis. Two other useful attributes are p2c and c2p, functions for\n    transforming from data point space to the canvas plot space and\n    back. Both returns values that are offset with the plot offset.\n    Check the Flot source code for the complete set of attributes (or\n    output an axis with console.log() and inspect it).\n\n    With multiple axes, the extra axes are returned as x2axis, x3axis,\n    etc., e.g. getAxes().y2axis is the second y axis. You can check\n    y2axis.used to see whether the axis is associated with any data\n    points and y2axis.show to see if it is currently shown. \n \n  - getPlaceholder()\n\n    Returns placeholder that the plot was put into. This can be useful\n    for plugins for adding DOM elements or firing events.\n\n  - getCanvas()\n\n    Returns the canvas used for drawing in case you need to hack on it\n    yourself. You'll probably need to get the plot offset too.\n  \n  - getPlotOffset()\n\n    Gets the offset that the grid has within the canvas as an object\n    with distances from the canvas edges as \"left\", \"right\", \"top\",\n    \"bottom\". I.e., if you draw a circle on the canvas with the center\n    placed at (left, top), its center will be at the top-most, left\n    corner of the grid.\n\n  - getOptions()\n\n    Gets the options for the plot, normalized, with default values\n    filled in. You get a reference to actual values used by Flot, so\n    if you modify the values in here, Flot will use the new values.\n    If you change something, you probably have to call draw() or\n    setupGrid() or triggerRedrawOverlay() to see the change.\n    \n\nHooks\n=====\n\nIn addition to the public methods, the Plot object also has some hooks\nthat can be used to modify the plotting process. You can install a\ncallback function at various points in the process, the function then\ngets access to the internal data structures in Flot.\n\nHere's an overview of the phases Flot goes through:\n\n  1. Plugin initialization, parsing options\n  \n  2. Constructing the canvases used for drawing\n\n  3. Set data: parsing data specification, calculating colors,\n     copying raw data points into internal format,\n     normalizing them, finding max/min for axis auto-scaling\n\n  4. Grid setup: calculating axis spacing, ticks, inserting tick\n     labels, the legend\n\n  5. Draw: drawing the grid, drawing each of the series in turn\n\n  6. Setting up event handling for interactive features\n\n  7. Responding to events, if any\n\n  8. Shutdown: this mostly happens in case a plot is overwritten \n\nEach hook is simply a function which is put in the appropriate array.\nYou can add them through the \"hooks\" option, and they are also available\nafter the plot is constructed as the \"hooks\" attribute on the returned\nplot object, e.g.\n\n  // define a simple draw hook\n  function hellohook(plot, canvascontext) { alert(\"hello!\"); };\n\n  // pass it in, in an array since we might want to specify several\n  var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } });\n\n  // we can now find it again in plot.hooks.draw[0] unless a plugin\n  // has added other hooks\n\nThe available hooks are described below. All hook callbacks get the\nplot object as first parameter. You can find some examples of defined\nhooks in the plugins bundled with Flot.\n\n - processOptions  [phase 1]\n\n   function(plot, options)\n   \n   Called after Flot has parsed and merged options. Useful in the\n   instance where customizations beyond simple merging of default\n   values is needed. A plugin might use it to detect that it has been\n   enabled and then turn on or off other options.\n\n \n - processRawData  [phase 3]\n\n   function(plot, series, data, datapoints)\n \n   Called before Flot copies and normalizes the raw data for the given\n   series. If the function fills in datapoints.points with normalized\n   points and sets datapoints.pointsize to the size of the points,\n   Flot will skip the copying/normalization step for this series.\n   \n   In any case, you might be interested in setting datapoints.format,\n   an array of objects for specifying how a point is normalized and\n   how it interferes with axis scaling.\n\n   The default format array for points is something along the lines of:\n\n     [\n       { x: true, number: true, required: true },\n       { y: true, number: true, required: true }\n     ]\n\n   The first object means that for the first coordinate it should be\n   taken into account when scaling the x axis, that it must be a\n   number, and that it is required - so if it is null or cannot be\n   converted to a number, the whole point will be zeroed out with\n   nulls. Beyond these you can also specify \"defaultValue\", a value to\n   use if the coordinate is null. This is for instance handy for bars\n   where one can omit the third coordinate (the bottom of the bar)\n   which then defaults to 0.\n\n\n - processDatapoints  [phase 3]\n\n   function(plot, series, datapoints)\n \n   Called after normalization of the given series but before finding\n   min/max of the data points. This hook is useful for implementing data\n   transformations. \"datapoints\" contains the normalized data points in\n   a flat array as datapoints.points with the size of a single point\n   given in datapoints.pointsize. Here's a simple transform that\n   multiplies all y coordinates by 2:\n\n     function multiply(plot, series, datapoints) {\n         var points = datapoints.points, ps = datapoints.pointsize;\n         for (var i = 0; i < points.length; i += ps)\n             points[i + 1] *= 2;\n     }\n\n   Note that you must leave datapoints in a good condition as Flot\n   doesn't check it or do any normalization on it afterwards.\n\n\n - drawSeries  [phase 5]\n\n   function(plot, canvascontext, series)\n\n   Hook for custom drawing of a single series. Called just before the\n   standard drawing routine has been called in the loop that draws\n   each series.\n   \n \n - draw  [phase 5]\n\n   function(plot, canvascontext)\n \n   Hook for drawing on the canvas. Called after the grid is drawn\n   (unless it's disabled or grid.aboveData is set) and the series have\n   been plotted (in case any points, lines or bars have been turned\n   on). For examples of how to draw things, look at the source code.\n   \n \n - bindEvents  [phase 6]\n\n   function(plot, eventHolder)\n\n   Called after Flot has setup its event handlers. Should set any\n   necessary event handlers on eventHolder, a jQuery object with the\n   canvas, e.g.\n\n     function (plot, eventHolder) {\n         eventHolder.mousedown(function (e) {\n             alert(\"You pressed the mouse at \" + e.pageX + \" \" + e.pageY);\n         });\n     }\n\n   Interesting events include click, mousemove, mouseup/down. You can\n   use all jQuery events. Usually, the event handlers will update the\n   state by drawing something (add a drawOverlay hook and call\n   triggerRedrawOverlay) or firing an externally visible event for\n   user code. See the crosshair plugin for an example.\n     \n   Currently, eventHolder actually contains both the static canvas\n   used for the plot itself and the overlay canvas used for\n   interactive features because some versions of IE get the stacking\n   order wrong. The hook only gets one event, though (either for the\n   overlay or for the static canvas).\n\n   Note that custom plot events generated by Flot are not generated on\n   eventHolder, but on the div placeholder supplied as the first\n   argument to the plot call. You can get that with\n   plot.getPlaceholder() - that's probably also the one you should use\n   if you need to fire a custom event.\n\n\n - drawOverlay  [phase 7]\n\n   function (plot, canvascontext)\n\n   The drawOverlay hook is used for interactive things that need a\n   canvas to draw on. The model currently used by Flot works the way\n   that an extra overlay canvas is positioned on top of the static\n   canvas. This overlay is cleared and then completely redrawn\n   whenever something interesting happens. This hook is called when\n   the overlay canvas is to be redrawn.\n\n   \"canvascontext\" is the 2D context of the overlay canvas. You can\n   use this to draw things. You'll most likely need some of the\n   metrics computed by Flot, e.g. plot.width()/plot.height(). See the\n   crosshair plugin for an example.\n\n\n - shutdown  [phase 8]\n\n   function (plot, eventHolder)\n\n   Run when plot.shutdown() is called, which usually only happens in\n   case a plot is overwritten by a new plot. If you're writing a\n   plugin that adds extra DOM elements or event handlers, you should\n   add a callback to clean up after you. Take a look at the section in\n   PLUGINS.txt for more info.\n\n   \nPlugins\n-------\n\nPlugins extend the functionality of Flot. To use a plugin, simply\ninclude its Javascript file after Flot in the HTML page.\n\nIf you're worried about download size/latency, you can concatenate all\nthe plugins you use, and Flot itself for that matter, into one big file\n(make sure you get the order right), then optionally run it through a\nJavascript minifier such as YUI Compressor.\n\nHere's a brief explanation of how the plugin plumbings work:\n\nEach plugin registers itself in the global array $.plot.plugins. When\nyou make a new plot object with $.plot, Flot goes through this array\ncalling the \"init\" function of each plugin and merging default options\nfrom the \"option\" attribute of the plugin. The init function gets a\nreference to the plot object created and uses this to register hooks\nand add new public methods if needed.\n\nSee the PLUGINS.txt file for details on how to write a plugin. As the\nabove description hints, it's actually pretty easy.\n\n\nVersion number\n--------------\n\nThe version number of Flot is available in $.plot.version.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/FAQ.txt",
    "content": "Frequently asked questions\n--------------------------\n\nQ: How much data can Flot cope with?\n\nA: Flot will happily draw everything you send to it so the answer\ndepends on the browser. The excanvas emulation used for IE (built with\nVML) makes IE by far the slowest browser so be sure to test with that\nif IE users are in your target group.\n\n1000 points is not a problem, but as soon as you start having more\npoints than the pixel width, you should probably start thinking about\ndownsampling/aggregation as this is near the resolution limit of the\nchart anyway. If you downsample server-side, you also save bandwidth.\n\n\nQ: Flot isn't working when I'm using JSON data as source!\n\nA: Actually, Flot loves JSON data, you just got the format wrong.\nDouble check that you're not inputting strings instead of numbers,\nlike [[\"0\", \"-2.13\"], [\"5\", \"4.3\"]]. This is most common mistake, and\nthe error might not show up immediately because Javascript can do some\nconversion automatically.\n\n\nQ: Can I export the graph?\n\nA: This is a limitation of the canvas technology. There's a hook in\nthe canvas object for getting an image out, but you won't get the tick\nlabels. And it's not likely to be supported by IE. At this point, your\nbest bet is probably taking a screenshot, e.g. with PrtScn.\n\n\nQ: The bars are all tiny in time mode?\n\nA: It's not really possible to determine the bar width automatically.\nSo you have to set the width with the barWidth option which is NOT in\npixels, but in the units of the x axis (or the y axis for horizontal\nbars). For time mode that's milliseconds so the default value of 1\nmakes the bars 1 millisecond wide.\n\n\nQ: Can I use Flot with libraries like Mootools or Prototype?\n\nA: Yes, Flot supports it out of the box and it's easy! Just use jQuery\ninstead of $, e.g. call jQuery.plot instead of $.plot and use\njQuery(something) instead of $(something). As a convenience, you can\nput in a DOM element for the graph placeholder where the examples and\nthe API documentation are using jQuery objects.\n\nDepending on how you include jQuery, you may have to add one line of\ncode to prevent jQuery from overwriting functions from the other\nlibraries, see the documentation in jQuery (\"Using jQuery with other\nlibraries\") for details.\n\n\nQ: Flot doesn't work with [insert name of Javascript UI framework]!\n\nA: The only non-standard thing used by Flot is the canvas tag;\notherwise it is simply a series of absolute positioned divs within the\nplaceholder tag you put in. If this is not working, it's probably\nbecause the framework you're using is doing something weird with the\nDOM, or you're using it the wrong way.\n\nA common problem is that there's display:none on a container until the\nuser does something. Many tab widgets work this way, and there's\nnothing wrong with it - you just can't call Flot inside a display:none\ncontainer as explained in the README so you need to hold off the Flot\ncall until the container is actually displayed (or use\nvisibility:hidden instead of display:none or move the container\noff-screen).\n\nIf you find there's a specific thing we can do to Flot to help, feel\nfree to submit a bug report. Otherwise, you're welcome to ask for help\non the forum/mailing list, but please don't submit a bug report to\nFlot.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/LICENSE.txt",
    "content": "Copyright (c) 2007-2009 IOLA and Ole Laursen\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/Makefile",
    "content": "# Makefile for generating minified files\n\n.PHONY: all\n\n# we cheat and process all .js files instead of an exhaustive list\nall: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js)))\n\n%.min.js: %.js\n\tyui-compressor $< -o $@\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/NEWS.txt",
    "content": "Flot 0.7\n--------\n\nAPI changes:\n\nMultiple axes support. Code using dual axes should be changed from\nusing x2axis/y2axis in the options to using an array (although\nbackwards-compatibility hooks are in place). For instance,\n\n  {\n    xaxis: { ... }, x2axis: { ... },\n    yaxis: { ... }, y2axis: { ... }\n  }\n\nbecomes\n\n  {\n    xaxes: [ { ... }, { ... } ],\n    yaxes: [ { ... }, { ... } ]\n  }\n\nNote that if you're just using one axis, continue to use the\nxaxis/yaxis directly (it now sets the default settings for the\narrays). Plugins touching the axes must be ported to take the extra\naxes into account, check the source to see some examples.\n\nA related change is that the visibility of axes is now auto-detected.\nSo if you were relying on an axis to show up even without any data in\nthe chart, you now need to set the axis \"show\" option explicitly.\n\n\"tickColor\" on the grid options is now deprecated in favour of a\ncorresponding option on the axes, so { grid: { tickColor: \"#000\" }}\nbecomes { xaxis: { tickColor: \"#000\"}, yaxis: { tickColor: \"#000\"} },\nbut if you just configure a base color Flot will now autogenerate a\ntick color by adding transparency. Backwards-compatibility hooks are\nin place.\n\nFinal note: now that IE 9 is coming out with canvas support, you may\nwant to adapt the excanvas include to skip loading it in IE 9 (the\nexamples have been adapted thanks to Ryley Breiddal). An alternative\nto excanvas using Flash has also surfaced, if your graphs are slow in\nIE, you may want to give it a spin:\n\n  http://code.google.com/p/flashcanvas/\n\n\nChanges:\n\n- Support for specifying a bottom for each point for line charts when\n  filling them, this means that an arbitrary bottom can be used\n  instead of just the x axis (based on patches patiently provided by\n  Roman V. Prikhodchenko).\n- New fillbetween plugin that can compute a bottom for a series from\n  another series, useful for filling areas between lines (see new\n  example percentiles.html for a use case).\n- More predictable handling of gaps for the stacking plugin, now all\n  undefined ranges are skipped.\n- Stacking plugin can stack horizontal bar charts.\n- Navigate plugin now redraws the plot while panning instead of only\n  after the fact (can be disabled by setting the pan.frameRate option\n  to null), raised by lastthemy (issue 235).\n- Date formatter now accepts %0m and %0d to get a zero-padded month or\n  day (issue raised by Maximillian Dornseif).\n- Revamped internals to support an unlimited number of axes, not just\n  dual (sponsored by Flight Data Services,\n  www.flightdataservices.com).\n- New setting on axes, \"tickLength\", to control the size of ticks or\n  turn them off without turning off the labels.\n- Axis labels are now put in container divs with classes, for instance\n  labels in the x axes can be reached via \".xAxis .tickLabel\".\n- Support for setting the color of an axis (sponsored by Flight Data\n  Services, www.flightdataservices.com).\n- Tick color is now auto-generated as the base color with some\n  transparency (unless you override it).\n- Support for aligning ticks in the axes with \"alignTicksWithAxis\" to\n  ensure that they appear next to each other rather than in between,\n  at the expense of possibly awkward tick steps (sponsored by Flight\n  Data Services, www.flightdataservices.com).\n- Support for customizing the point type through a callback when\n  plotting points and new symbol plugin with some predefined point\n  types (sponsored by Utility Data Corporation).\n- Resize plugin for automatically redrawing when the placeholder\n  changes size, e.g. on window resizes (sponsored by Novus Partners).\n  A resize() method has been added to plot object facilitate this.\n- Support Infinity/-Infinity for plotting asymptotes by hacking it\n  into +/-Number.MAX_VALUE (reported by rabaea.mircea).\n- Support for restricting navigate plugin to not pan/zoom an axis (based\n  on patch by kkaefer).\n- Support for providing the drag cursor for the navigate plugin as an\n  option (based on patch by Kelly T. Moore).\n- Options for controlling whether an axis is shown or not (suggestion\n  by Timo Tuominen) and whether to reserve space for it even if it\n  isn't shown.\n- New attribute $.plot.version with the Flot version as a string.\n- The version comment is now included in the minified jquery.flot.min.js.\n- New options.grid.minBorderMargin for adjusting the minimum margin\n  provided around the border (based on patch by corani, issue 188).\n- Refactor replot behaviour so Flot tries to reuse the existing\n  canvas, adding shutdown() methods to the plot (based on patch by\n  Ryley Breiddal, issue 269). This prevents a memory leak in Chrome\n  and hopefully makes replotting faster for those who are using $.plot\n  instead of .setData()/.draw(). Also update jQuery to 1.5.1 to\n  prevent IE leaks fixed in jQuery.\n- New real-time line chart example.\n\n- New hooks: drawSeries, shutdown\n\nBug fixes:\n\n- Fixed problem with findNearbyItem and bars on top of each other\n  (reported by ragingchikn, issue 242).\n- Fixed problem with ticks and the border (based on patch from\n  ultimatehustler69, issue 236).\n- Fixed problem with plugins adding options to the series objects.\n- Fixed a problem introduced in 0.6 with specifying a gradient with {\n  brightness: x, opacity: y }.\n- Don't use $.browser.msie, check for getContext on the created canvas\n  element instead and try to use excanvas if it's not found (fixes IE\n  9 compatibility).\n- highlight(s, index) was looking up the point in the original s.data\n  instead of in the computed datapoints array, which breaks with\n  plugins that modify the datapoints (such as the stacking plugin).\n  Issue 316 reported by curlypaul924.\n- More robust handling of axis from data passed in from getData()\n  (problem reported by Morgan).\n- Fixed problem with turning off bar outline (issue 253, fix by Jordi\n  Castells).\n- Check the selection passed into setSelection in the selection\n  plugin, to guard against errors when synchronizing plots (fix by Lau\n  Bech Lauritzen).\n- Fix bug in crosshair code with mouseout resetting the crosshair even\n  if it is locked (fix by Lau Bech Lauritzen and Banko Adam).\n- Fix bug with points plotting using line width from lines rather than\n  points.\n- Fix bug with passing non-array 0 data (for plugins that don't expect\n  arrays, patch by vpapp1).\n- Fix errors in JSON in examples so they work with jQuery 1.4.2\n  (fix reported by honestbleeps, issue 357).\n- Fix bug with tooltip in interacting.html, this makes the tooltip\n  much smoother (fix by bdkahn). Fix related bug inside highlighting\n  handler in Flot.\n- Use closure trick to make inline colorhelpers plugin respect\n  jQuery.noConflict(true), renaming the global jQuery object (reported\n  by Nick Stielau).\n- Listen for mouseleave events and fire a plothover event with empty\n  item when it occurs to drop highlights when the mouse leaves the\n  plot (reported by by outspirit).\n- Fix bug with using aboveData with a background (reported by\n  amitayd).\n- Fix possible excanvas leak (report and suggested fix by tom9729).\n- Fix bug with backwards compatibility for shadowSize = 0 (report and\n  suggested fix by aspinak).\n- Adapt examples to skip loading excanvas (fix by Ryley Breiddal).\n- Fix bug that prevent a simple f(x) = -x transform from working\n  correctly (fix by Mike, issue 263).\n- Fix bug in restoring cursor in navigate plugin (reported by Matteo\n  Gattanini, issue 395).\n- Fix bug in picking items when transform/inverseTransform is in use\n  (reported by Ofri Raviv, and patches and analysis by Jan and Tom\n  Paton, issue 334 and 467).\n- Fix problem with unaligned ticks and hover/click events caused by\n  padding on the placeholder by hardcoding the placeholder padding to\n  0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some\n  other people, issue 301).\n- Update colorhelpers plugin to avoid dying when trying to parse an\n  invalid string (reported by cadavor, issue 483).\n\n\nFlot 0.6\n--------\n\nAPI changes:\n\n1. Selection support has been moved to a plugin. Thus if you're\npassing selection: { mode: something }, you MUST include the file\njquery.flot.selection.js after jquery.flot.js. This reduces the size\nof base Flot and makes it easier to customize the selection as well as\nimproving code clarity. The change is based on a patch from andershol.\n\n2. In the global options specified in the $.plot command,\n\"lines\", \"points\", \"bars\" and \"shadowSize\" have been moved to a\nsub-object called \"series\", i.e.\n\n  $.plot(placeholder, data, { lines: { show: true }})\n\nshould be changed to\n\n  $.plot(placeholder, data, { series: { lines: { show: true }}})\n\nAll future series-specific options will go into this sub-object to\nsimplify plugin writing. Backward-compatibility code is in place, so\nold code should not break.\n\n3. \"plothover\" no longer provides the original data point, but instead\na normalized one, since there may be no corresponding original point.\n\n4. Due to a bug in previous versions of jQuery, you now need at least\njQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some\nimprovements in event handling speed.\n\n\nChanges:\n\n- Added support for disabling interactivity for specific data series\n  (request from Ronald Schouten and Steve Upton).\n\n- Flot now calls $() on the placeholder and optional legend container\n  passed in so you can specify DOM elements or CSS expressions to make\n  it easier to use Flot with libraries like Prototype or Mootools or\n  through raw JSON from Ajax responses.\n\n- A new \"plotselecting\" event is now emitted while the user is making\n  a selection.\n\n- The \"plothover\" event is now emitted immediately instead of at most\n  10 times per second, you'll have to put in a setTimeout yourself if\n  you're doing something really expensive on this event.\n\n- The built-in date formatter can now be accessed as\n  $.plot.formatDate(...) (suggestion by Matt Manela) and even\n  replaced.\n\n- Added \"borderColor\" option to the grid (patch from Amaury Chamayou\n  and patch from Mike R. Williamson).\n\n- Added support for gradient backgrounds for the grid, take a look at\n  the \"setting options\" example (based on patch from Amaury Chamayou,\n  issue 90).\n\n- Gradient bars (suggestion by stefpet).\n  \n- Added a \"plotunselected\" event which is triggered when the selection\n  is removed, see \"selection\" example (suggestion by Meda Ugo);\n\n- The option legend.margin can now specify horizontal and vertical\n  margins independently (suggestion by someone who's annoyed).\n\n- Data passed into Flot is now copied to a new canonical format to\n  enable further processing before it hits the drawing routines. As a\n  side-effect, this should make Flot more robust in the face of bad\n  data (and fixes issue 112).\n\n- Step-wise charting: line charts have a new option \"steps\" that when\n  set to true connects the points with horizontal/vertical steps\n  instead of diagonal lines.\n\n- The legend labelFormatter now passes the series in addition to just\n  the label (suggestion by Vincent Lemeltier).\n\n- Horizontal bars (based on patch by Jason LeBrun).\n\n- Support for partial bars by specifying a third coordinate, i.e. they\n  don't have to start from the axis. This can be used to make stacked\n  bars.\n\n- New option to disable the (grid.show).\n\n- Added pointOffset method for converting a point in data space to an\n  offset within the placeholder.\n  \n- Plugin system: register an init method in the $.flot.plugins array\n  to get started, see PLUGINS.txt for details on how to write plugins\n  (it's easy). There are also some extra methods to enable access to\n  internal state.\n\n- Hooks: you can register functions that are called while Flot is\n  crunching the data and doing the plot. This can be used to modify\n  Flot without changing the source, useful for writing plugins. Some\n  hooks are defined, more are likely to come.\n  \n- Threshold plugin: you can set a threshold and a color, and the data\n  points below that threshold will then get the color. Useful for\n  marking data below 0, for instance.\n\n- Stack plugin: you can specify a stack key for each series to have\n  them summed. This is useful for drawing additive/cumulative graphs\n  with bars and (currently unfilled) lines.\n\n- Crosshairs plugin: trace the mouse position on the axes, enable with\n  crosshair: { mode: \"x\"} (see the new tracking example for a use).\n\n- Image plugin: plot prerendered images.\n\n- Navigation plugin for panning and zooming a plot.\n\n- More configurable grid.\n\n- Axis transformation support, useful for non-linear plots, e.g. log\n  axes and compressed time axes (like omitting weekends).\n\n- Support for twelve-hour date formatting (patch by Forrest Aldridge).\n\n- The color parsing code in Flot has been cleaned up and split out so\n  it's now available as a separate jQuery plugin. It's included inline\n  in the Flot source to make dependency managing easier. This also\n  makes it really easy to use the color helpers in Flot plugins.\n\nBug fixes:\n\n- Fixed two corner-case bugs when drawing filled curves (report and\n  analysis by Joshua Varner).\n- Fix auto-adjustment code when setting min to 0 for an axis where the\n  dataset is completely flat on that axis (report by chovy).\n- Fixed a bug with passing in data from getData to setData when the\n  secondary axes are used (issue 65, reported by nperelman).\n- Fixed so that it is possible to turn lines off when no other chart\n  type is shown (based on problem reported by Glenn Vanderburg), and\n  fixed so that setting lineWidth to 0 also hides the shadow (based on\n  problem reported by Sergio Nunes).\n- Updated mousemove position expression to the latest from jQuery (bug\n  reported by meyuchas).\n- Use CSS borders instead of background in legend (fix printing issue 25\n  and 45).\n- Explicitly convert axis min/max to numbers.\n- Fixed a bug with drawing marking lines with different colors\n  (reported by Khurram).\n- Fixed a bug with returning y2 values in the selection event (fix\n  by exists, issue 75).\n- Only set position relative on placeholder if it hasn't already a\n  position different from static (reported by kyberneticist, issue 95).\n- Don't round markings to prevent sub-pixel problems (reported by Dan\n  Lipsitt).\n- Make the grid border act similarly to a regular CSS border, i.e.\n  prevent it from overlapping the plot itself. This also fixes a\n  problem with anti-aliasing when the width is 1 pixel (reported by\n  Anthony Ettinger).\n- Imported version 3 of excanvas and fixed two issues with the newer\n  version. Hopefully, this will make Flot work with IE8 (nudge by\n  Fabien Menager, further analysis by Booink, issue 133).\n- Changed the shadow code for lines to hopefully look a bit better\n  with vertical lines.\n- Round tick positions to avoid possible problems with fractions\n  (suggestion by Fred, issue 130).\n- Made the heuristic for determining how many ticks to aim for a bit\n  smarter.\n- Fix for uneven axis margins (report and patch by Paul Kienzle) and\n  snapping to ticks (concurrent report and patch by lifthrasiir).\n- Fixed bug with slicing in findNearbyItems (patch by zollman).\n- Make heuristic for x axis label widths more dynamic (patch by\n  rickinhethuis).\n- Make sure points on top take precedence when finding nearby points\n  when hovering (reported by didroe, issue 224).\n\nFlot 0.5\n--------\n\nBackwards API change summary: Timestamps are now in UTC. Also\n\"selected\" event -> becomes \"plotselected\" with new data, the\nparameters for setSelection are now different (but backwards\ncompatibility hooks are in place), coloredAreas becomes markings with\na new interface (but backwards compatibility hooks are in place).\n\n\nInteractivity: added a new \"plothover\" event and this and the\n\"plotclick\" event now returns the closest data item (based on patch by\n/david, patch by Mark Byers for bar support). See the revamped\n\"interacting with the data\" example for some hints on what you can do.\n\nHighlighting: you can now highlight points and datapoints are\nautohighlighted when you hover over them (if hovering is turned on).\n\nSupport for dual axis has been added (based on patch by someone who's\nannoyed and /david). For each data series you can specify which axes\nit belongs to, and there are two more axes, x2axis and y2axis, to\ncustomize. This affects the \"selected\" event which has been renamed to\n\"plotselected\" and spews out { xaxis: { from: -10, to: 20 } ... },\nsetSelection in which the parameters are on a new form (backwards\ncompatible hooks are in place so old code shouldn't break) and\nmarkings (formerly coloredAreas).\n\nTimestamps in time mode are now displayed according to\nUTC instead of the time zone of the visitor. This affects the way the\ntimestamps should be input; you'll probably have to offset the\ntimestamps according to your local time zone. It also affects any\ncustom date handling code (which basically now should use the\nequivalent UTC date mehods, e.g. .setUTCMonth() instead of\n.setMonth().\n\nAdded support for specifying the size of tick labels (axis.labelWidth,\naxis.labelHeight). Useful for specifying a max label size to keep\nmultiple plots aligned.\n\nMarkings, previously coloredAreas, are now specified as ranges on the\naxes, like { xaxis: { from: 0, to: 10 }}. Furthermore with markings\nyou can now draw horizontal/vertical lines by setting from and to to\nthe same coordinate (idea from line support patch by by Ryan Funduk).\n\nThe \"fill\" option can now be a number that specifies the opacity of\nthe fill.\n\nYou can now specify a coordinate as null (like [2, null]) and Flot\nwill take the other coordinate into account when scaling the axes\n(based on patch by joebno).\n\nNew option for bars \"align\". Set it to \"center\" to center the bars on\nthe value they represent.\n\nsetSelection now takes a second parameter which you can use to prevent\nthe method from firing the \"plotselected\" handler. \n\nUsing the \"container\" option in legend now overwrites the container\nelement instead of just appending to it (fixes infinite legend bug,\nreported by several people, fix by Brad Dewey).\n\nFixed a bug in calculating spacing around the plot (reported by\ntimothytoe). Fixed a bug in finding max values for all-negative data\nsets. Prevent the possibility of eternal looping in tick calculations.\nFixed a bug when borderWidth is set to 0 (reported by\nRob/sanchothefat). Fixed a bug with drawing bars extending below 0\n(reported by James Hewitt, patch by Ryan Funduk). Fixed a\nbug with line widths of bars (reported by MikeM). Fixed a bug with\n'nw' and 'sw' legend positions. Improved the handling of axis\nauto-scaling with bars. Fixed a bug with multi-line x-axis tick\nlabels (reported by Luca Ciano). IE-fix help by Savage Zhang.\n\n\nFlot 0.4\n--------\n\nAPI changes: deprecated axis.noTicks in favor of just specifying the\nnumber as axis.ticks. So \"xaxis: { noTicks: 10 }\" becomes\n\"xaxis: { ticks: 10 }\"\n\nTime series support. Specify axis.mode: \"time\", put in Javascript\ntimestamps as data, and Flot will automatically spit out sensible\nticks. Take a look at the two new examples. The format can be\ncustomized with axis.timeformat and axis.monthNames, or if that fails\nwith axis.tickFormatter.\n\nSupport for colored background areas via grid.coloredAreas. Specify an\narray of { x1, y1, x2, y2 } objects or a function that returns these\ngiven { xmin, xmax, ymin, ymax }.\n\nMore members on the plot object (report by Chris Davies and others).\n\"getData\" for inspecting the assigned settings on data series (e.g.\ncolor) and \"setData\", \"setupGrid\" and \"draw\" for updating the contents\nwithout a total replot.\n\nThe default number of ticks to aim for is now dependent on the size of\nthe plot in pixels. Support for customizing tick interval sizes\ndirectly with axis.minTickSize and axis.tickSize.\n\nCleaned up the automatic axis scaling algorithm and fixed how it\ninteracts with ticks. Also fixed a couple of tick-related corner case\nbugs (one reported by mainstreetmark, another reported by timothytoe).\n\nThe option axis.tickFormatter now takes a function with two\nparameters, the second parameter is an optional object with\ninformation about the axis. It has min, max, tickDecimals, tickSize.\n\nAdded support for segmented lines (based on patch from Michael\nMacDonald) and for ignoring null and bad values (suggestion from Nick\nKonidaris and joshwaihi). \n\nAdded support for changing the border width (joebno and safoo).\nLabel colors can be changed via CSS by selecting the tickLabel class.\n\nFixed a bug in handling single-item bar series (reported by Emil\nFilipov). Fixed erratic behaviour when interacting with the plot\nwith IE 7 (reported by Lau Bech Lauritzen). Prevent IE/Safari text\nselection when selecting stuff on the canvas.\n\n\n\nFlot 0.3\n--------\n\nThis is mostly a quick-fix release because jquery.js wasn't included\nin the previous zip/tarball.\n\nSupport clicking on the plot. Turn it on with grid: { clickable: true },\nthen you get a \"plotclick\" event on the graph placeholder with the\nposition in units of the plot.\n\nFixed a bug in dealing with data where min = max, thanks to Michael\nMessinides.\n\nInclude jquery.js in the zip/tarball.\n\n\nFlot 0.2\n--------\n\nAdded support for putting a background behind the default legend. The\ndefault is the partly transparent background color. Added\nbackgroundColor and backgroundOpacity to the legend options to control\nthis.\n\nThe ticks options can now be a callback function that takes one\nparameter, an object with the attributes min and max. The function\nshould return a ticks array.\n\nAdded labelFormatter option in legend, useful for turning the legend\nlabels into links.\n\nFixed a couple of bugs.\n\nThe API should now be fully documented.\n\nPatch from Guy Fraser to make parts of the code smaller.\n\nAPI changes: Moved labelMargin option to grid from x/yaxis.\n\n\nFlot 0.1\n--------\n\nFirst public release.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/PLUGINS.txt",
    "content": "Writing plugins\n---------------\n\nAll you need to do to make a new plugin is creating an init function\nand a set of options (if needed), stuffing it into an object and\nputting it in the $.plot.plugins array. For example:\n\n  function myCoolPluginInit(plot) {\n    plot.coolstring = \"Hello!\";\n  };\n\n  $.plot.plugins.push({ init: myCoolPluginInit, options: { ... } });\n\n  // if $.plot is called, it will return a plot object with the\n  // attribute \"coolstring\"\n\nNow, given that the plugin might run in many different places, it's\na good idea to avoid leaking names. The usual trick here is wrap the\nabove lines in an anonymous function which is called immediately, like\nthis: (function () { inner code ... })(). To make it even more robust\nin case $ is not bound to jQuery but some other Javascript library, we\ncan write it as\n\n  (function ($) {\n    // plugin definition\n    // ...\n  })(jQuery);\n\nThere's a complete example below, but you should also check out the\nplugins bundled with Flot.\n\n\nComplete example\n----------------\n  \nHere is a simple debug plugin which alerts each of the series in the\nplot. It has a single option that control whether it is enabled and\nhow much info to output:\n\n  (function ($) {\n    function init(plot) {\n      var debugLevel = 1;\n    \n      function checkDebugEnabled(plot, options) {\n        if (options.debug) {\n          debugLevel = options.debug;\n            \n          plot.hooks.processDatapoints.push(alertSeries);\n        }\n      }\n\n      function alertSeries(plot, series, datapoints) {\n        var msg = \"series \" + series.label;\n        if (debugLevel > 1)\n          msg += \" with \" + series.data.length + \" points\";\n        alert(msg);\n      }\n    \n      plot.hooks.processOptions.push(checkDebugEnabled);\n    }\n\n    var options = { debug: 0 };\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: \"simpledebug\",\n        version: \"0.1\"\n    });\n  })(jQuery);\n\nWe also define \"name\" and \"version\". It's not used by Flot, but might\nbe helpful for other plugins in resolving dependencies.\n  \nPut the above in a file named \"jquery.flot.debug.js\", include it in an\nHTML page and then it can be used with:\n\n  $.plot($(\"#placeholder\"), [...], { debug: 2 });\n\nThis simple plugin illustrates a couple of points:\n\n - It uses the anonymous function trick to avoid name pollution.\n - It can be enabled/disabled through an option.\n - Variables in the init function can be used to store plot-specific\n   state between the hooks.\n\nThe two last points are important because there may be multiple plots\non the same page, and you'd want to make sure they are not mixed up.\n\n\nShutting down a plugin\n----------------------\n\nEach plot object has a shutdown hook which is run when plot.shutdown()\nis called. This usually mostly happens in case another plot is made on\ntop of an existing one.\n\nThe purpose of the hook is to give you a chance to unbind any event\nhandlers you've registered and remove any extra DOM things you've\ninserted.\n\nThe problem with event handlers is that you can have registered a\nhandler which is run in some point in the future, e.g. with\nsetTimeout(). Meanwhile, the plot may have been shutdown and removed,\nbut because your event handler is still referencing it, it can't be\ngarbage collected yet, and worse, if your handler eventually runs, it\nmay overwrite stuff on a completely different plot.\n\n \nSome hints on the options\n-------------------------\n   \nPlugins should always support appropriate options to enable/disable\nthem because the plugin user may have several plots on the same page\nwhere only one should use the plugin. In most cases it's probably a\ngood idea if the plugin is turned off rather than on per default, just\nlike most of the powerful features in Flot.\n\nIf the plugin needs options that are specific to each series, like the\npoints or lines options in core Flot, you can put them in \"series\" in\nthe options object, e.g.\n\n  var options = {\n    series: {\n      downsample: {\n        algorithm: null,\n        maxpoints: 1000\n      }\n    }\n  }\n\nThen they will be copied by Flot into each series, providing default\nvalues in case none are specified.\n\nThink hard and long about naming the options. These names are going to\nbe public API, and code is going to depend on them if the plugin is\nsuccessful.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/README.txt",
    "content": "About\n-----\n\nFlot is a Javascript plotting library for jQuery. Read more at the\nwebsite:\n\n  http://code.google.com/p/flot/\n\nTake a look at the examples linked from above, they should give a good\nimpression of what Flot can do and the source code of the examples is\nprobably the fastest way to learn how to use Flot.\n  \n\nInstallation\n------------\n\nJust include the Javascript file after you've included jQuery.\n\nGenerally, all browsers that support the HTML5 canvas tag are\nsupported.\n\nFor support for Internet Explorer < 9, you can use Excanvas, a canvas\nemulator; this is used in the examples bundled with Flot. You just\ninclude the excanvas script like this:\n\n  <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"excanvas.min.js\"></script><![endif]-->\n\nIf it's not working on your development IE 6.0, check that it has\nsupport for VML which Excanvas is relying on. It appears that some\nstripped down versions used for test environments on virtual machines\nlack the VML support.\n\nYou can also try using Flashcanvas (see\nhttp://code.google.com/p/flashcanvas/), which uses Flash to do the\nemulation. Although Flash can be a bit slower to load than VML, if\nyou've got a lot of points, the Flash version can be much faster\noverall. Flot contains some wrapper code for activating Excanvas which\nFlashcanvas is compatible with.\n\nYou need at least jQuery 1.2.6, but try at least 1.3.2 for interactive\ncharts because of performance improvements in event handling.\n\n\nBasic usage\n-----------\n\nCreate a placeholder div to put the graph in:\n\n   <div id=\"placeholder\"></div>\n\nYou need to set the width and height of this div, otherwise the plot\nlibrary doesn't know how to scale the graph. You can do it inline like\nthis:\n\n   <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\nYou can also do it with an external stylesheet. Make sure that the\nplaceholder isn't within something with a display:none CSS property -\nin that case, Flot has trouble measuring label dimensions which\nresults in garbled looks and might have trouble measuring the\nplaceholder dimensions which is fatal (it'll throw an exception).\n\nThen when the div is ready in the DOM, which is usually on document\nready, run the plot function:\n\n  $.plot($(\"#placeholder\"), data, options);\n\nHere, data is an array of data series and options is an object with\nsettings if you want to customize the plot. Take a look at the\nexamples for some ideas of what to put in or look at the reference\nin the file \"API.txt\". Here's a quick example that'll draw a line from\n(0, 0) to (1, 1):\n\n  $.plot($(\"#placeholder\"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });\n\nThe plot function immediately draws the chart and then returns a plot\nobject with a couple of methods.\n\n\nWhat's with the name?\n---------------------\n\nFirst: it's pronounced with a short o, like \"plot\". Not like \"flawed\".\n\nSo \"Flot\" rhymes with \"plot\".\n\nAnd if you look up \"flot\" in a Danish-to-English dictionary, some up\nthe words that come up are \"good-looking\", \"attractive\", \"stylish\",\n\"smart\", \"impressive\", \"extravagant\". One of the main goals with Flot\nis pretty looks.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/ajax.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Example of loading data dynamically with AJAX. Percentage change in GDP (source: <a href=\"http://epp.eurostat.ec.europa.eu/tgm/table.do?tab=table&init=1&plugin=1&language=en&pcode=tsieb020\">Eurostat</a>). Click the buttons below.</p>\n\n    <p>The data is fetched over HTTP, in this case directly from text\n    files. Usually the URL would point to some web server handler\n    (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that\n    extracts it from a database and serializes it to JSON.</p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"First dataset\"> -\n      <a href=\"data-eu-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"Second dataset\"> -\n      <a href=\"data-japan-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"Third dataset\"> -\n      <a href=\"data-usa-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>If you combine AJAX with setTimeout, you can poll the server\n       for new data.</p>\n\n    <p>\n      <input class=\"dataUpdate\" type=\"button\" value=\"Poll for data\">\n    </p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var options = {\n        lines: { show: true },\n        points: { show: true },\n        xaxis: { tickDecimals: 0, tickSize: 1 }\n    };\n    var data = [];\n    var placeholder = $(\"#placeholder\");\n    \n    $.plot(placeholder, data, options);\n\n    \n    // fetch one series, adding to what we got\n    var alreadyFetched = {};\n    \n    $(\"input.fetchSeries\").click(function () {\n        var button = $(this);\n        \n        // find the URL in the link right next to us \n        var dataurl = button.siblings('a').attr('href');\n\n        // then fetch the data with jQuery\n        function onDataReceived(series) {\n            // extract the first coordinate pair so you can see that\n            // data is now an ordinary Javascript object\n            var firstcoordinate = '(' + series.data[0][0] + ', ' + series.data[0][1] + ')';\n\n            button.siblings('span').text('Fetched ' + series.label + ', first point: ' + firstcoordinate);\n\n            // let's add it to our current data\n            if (!alreadyFetched[series.label]) {\n                alreadyFetched[series.label] = true;\n                data.push(series);\n            }\n            \n            // and plot all we got\n            $.plot(placeholder, data, options);\n         }\n        \n        $.ajax({\n            url: dataurl,\n            method: 'GET',\n            dataType: 'json',\n            success: onDataReceived\n        });\n    });\n\n\n    // initiate a recurring data update\n    $(\"input.dataUpdate\").click(function () {\n        // reset data\n        data = [];\n        alreadyFetched = {};\n        \n        $.plot(placeholder, data, options);\n\n        var iteration = 0;\n        \n        function fetchData() {\n            ++iteration;\n\n            function onDataReceived(series) {\n                // we get all the data in one go, if we only got partial\n                // data, we could merge it with what we already got\n                data = [ series ];\n                \n                $.plot($(\"#placeholder\"), data, options);\n            }\n        \n            $.ajax({\n                // usually, we'll just call the same URL, a script\n                // connected to a database, but in this case we only\n                // have static example files so we need to modify the\n                // URL\n                url: \"data-eu-gdp-growth-\" + iteration + \".json\",\n                method: 'GET',\n                dataType: 'json',\n                success: onDataReceived\n            });\n            \n            if (iteration < 5)\n                setTimeout(fetchData, 1000);\n            else {\n                data = [];\n                alreadyFetched = {};\n            }\n        }\n\n        setTimeout(fetchData, 1000);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/annotating.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Flot has support for simple background decorations such as\n    lines and rectangles. They can be useful for marking up certain\n    areas. You can easily add any HTML you need with standard DOM\n    manipulation, e.g. for labels. For drawing custom shapes there is\n    also direct access to the canvas.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    // generate a dataset\n    var d1 = [];\n    for (var i = 0; i < 20; ++i)\n        d1.push([i, Math.sin(i)]);\n    \n    var data = [{ data: d1, label: \"Pressure\", color: \"#333\" }];\n\n    // setup background areas\n    var markings = [\n        { color: '#f6f6f6', yaxis: { from: 1 } },\n        { color: '#f6f6f6', yaxis: { to: -1 } },\n        { color: '#000', lineWidth: 1, xaxis: { from: 2, to: 2 } },\n        { color: '#000', lineWidth: 1, xaxis: { from: 8, to: 8 } }\n    ];\n    \n    var placeholder = $(\"#placeholder\");\n    \n    // plot it\n    var plot = $.plot(placeholder, data, {\n        bars: { show: true, barWidth: 0.5, fill: 0.9 },\n        xaxis: { ticks: [], autoscaleMargin: 0.02 },\n        yaxis: { min: -2, max: 2 },\n        grid: { markings: markings }\n    });\n\n    // add labels\n    var o;\n\n    o = plot.pointOffset({ x: 2, y: -1.2});\n    // we just append it to the placeholder which Flot already uses\n    // for positioning\n    placeholder.append('<div style=\"position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller\">Warming up</div>');\n\n    o = plot.pointOffset({ x: 8, y: -1.2});\n    placeholder.append('<div style=\"position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller\">Actual measurements</div>');\n\n    // draw a little arrow on top of the last label to demonstrate\n    // canvas drawing\n    var ctx = plot.getCanvas().getContext(\"2d\");\n    ctx.beginPath();\n    o.left += 4;\n    ctx.moveTo(o.left, o.top);\n    ctx.lineTo(o.left, o.top - 10);\n    ctx.lineTo(o.left + 10, o.top - 5);\n    ctx.lineTo(o.left, o.top);\n    ctx.fillStyle = \"#000\";\n    ctx.fill();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/basic.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <p>Simple example. You don't need to specify much to get an\n       attractive look. Put in a placeholder, make sure you set its\n       dimensions (otherwise the plot library will barf) and call the\n       plot function with the data. The axes are automatically\n       scaled.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n    // a null signifies separate line segments\n    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n    \n    $.plot($(\"#placeholder\"), [ d1, d2, d3 ]);\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-1.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-2.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-3.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-4.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-5.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-japan-gdp-growth.json",
    "content": "{\n    \"label\": \"Japan\",\n    \"data\": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/data-usa-gdp-growth.json",
    "content": "{\n    \"label\": \"USA\",\n    \"data\": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]]\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/graph-types.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>Flot supports lines, points, filled areas, bars and any\n    combinations of these, in the same plot and even on the same data\n    series.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n    var d3 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d3.push([i, Math.cos(i)]);\n\n    var d4 = [];\n    for (var i = 0; i < 14; i += 0.1)\n        d4.push([i, Math.sqrt(i * 10)]);\n    \n    var d5 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d5.push([i, Math.sqrt(i)]);\n\n    var d6 = [];\n    for (var i = 0; i < 14; i += 0.5 + Math.random())\n        d6.push([i, Math.sqrt(2*i + Math.sin(i) + 5)]);\n                        \n    $.plot($(\"#placeholder\"), [\n        {\n            data: d1,\n            lines: { show: true, fill: true }\n        },\n        {\n            data: d2,\n            bars: { show: true }\n        },\n        {\n            data: d3,\n            points: { show: true }\n        },\n        {\n            data: d4,\n            lines: { show: true }\n        },\n        {\n            data: d5,\n            lines: { show: true },\n            points: { show: true }\n        },\n        {\n            data: d6,\n            lines: { show: true, steps: true }\n        }\n    ]);\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/image.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.image.js\"></script>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:400px;height:400px;\"></div>\n\n    <p>The Cat's Eye Nebula (<a href=\"http://hubblesite.org/gallery/album/nebula/pr2004027a/\">picture from Hubble</a>).</p>\n    \n    <p>With the image plugin, you can plot images. This is for example\n    useful for getting ticks on complex prerendered visualizations.\n    Instead of inputting data points, you put in the images and where\n    their two opposite corners are supposed to be in plot space.</p>\n\n    <p>Images represent a little further complication because you need\n    to make sure they are loaded before you can use them (Flot skips\n    incomplete images). The plugin comes with a couple of helpers\n    for doing that.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var data = [ [ [\"hs-2004-27-a-large_web.jpg\", -10, -10, 10, 10] ] ];\n    var options = {\n            series: { images: { show: true } },\n            xaxis: { min: -8, max: 4 },\n            yaxis: { min: -8, max: 4 }\n    };\n\n    $.plot.image.loadDataImages(data, options, function () {\n        $.plot($(\"#placeholder\"), data, options);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <p>Here are some examples for <a href=\"http://code.google.com/p/flot/\">Flot</a>, the Javascript charting library for jQuery:</p>\n\n    <ul>\n      <li><a href=\"basic.html\">Basic example</a></li>\n      <li><a href=\"graph-types.html\">Different graph types</a></li>\n      <li><a href=\"setting-options.html\">Setting various options</a> and <a href=\"annotating.html\">annotating a chart</a></li>\n      <li><a href=\"ajax.html\">Updating graphs with AJAX</a> and <a href=\"realtime.html\">real-time updates</a></li>\n    </ul>\n\n    <p>Being interactive:</p>\n    \n    <ul>\n      <li><a href=\"turning-series.html\">Turning series on/off</a></li>\n      <li><a href=\"selection.html\">Rectangular selection support and zooming</a> and <a href=\"zooming.html\">zooming with overview</a> (both with selection plugin)</li>\n      <li><a href=\"interacting.html\">Interacting with the data points</a></li>\n      <li><a href=\"navigate.html\">Panning and zooming</a> (with navigation plugin)</li>\n      <li><a href=\"resize.html\">Automatically redraw when window is resized</a> (with resize plugin)</li>\n    </ul>\n\n    <p>Various features:</p>\n    \n    <ul>\n      <li><a href=\"symbols.html\">Using other symbols than circles for points</a> (with symbol plugin)</li>\n      <li><a href=\"time.html\">Plotting time series</a> and <a href=\"visitors.html\">visitors per day with zooming and weekends</a> (with selection plugin)</li>\n      <li><a href=\"multiple-axes.html\">Multiple axes</a> and <a href=\"interacting-axes.html\">interacting with the axes</a></li>\n      <li><a href=\"thresholding.html\">Thresholding the data</a> (with threshold plugin)</li>\n      <li><a href=\"stacking.html\">Stacked charts</a> (with stacking plugin)</li>\n      <li><a href=\"percentiles.html\">Using filled areas to plot percentiles</a> (with fillbetween plugin)</li>\n      <li><a href=\"tracking.html\">Tracking curves with crosshair</a> (with crosshair plugin)</li>\n      <li><a href=\"image.html\">Plotting prerendered images</a> (with image plugin)</li>\n      <li><a href=\"pie.html\">Pie charts</a> (with pie plugin)</li>\n    </ul>\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/interacting-axes.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With multiple axes, you sometimes need to interact with them. A\n    simple way to do this is to draw the plot, deduce the axis\n    placements and insert a couple of divs on top to catch events.\n    Try clicking an axis.</p>\n\n    <p id=\"click\"></p>\n\n<script type=\"text/javascript\">\n$(function () {\n    function generate(start, end, fn) {\n        var res = [];\n        for (var i = 0; i <= 100; ++i) {\n            var x = start + i / 100 * (end - start);\n            res.push([x, fn(x)]);\n        }\n        return res;\n    }\n\n    var data = [\n        { data: generate(0, 10, function (x) { return Math.sqrt(x)}), xaxis: 1, yaxis:1 },\n        { data: generate(0, 10, function (x) { return Math.sin(x)}), xaxis: 1, yaxis:2 },\n        { data: generate(0, 10, function (x) { return Math.cos(x)}), xaxis: 1, yaxis:3 },\n        { data: generate(2, 10, function (x) { return Math.tan(x)}), xaxis: 2, yaxis: 4 }\n    ];\n\n    var plot = $.plot($(\"#placeholder\"),\n                      data,\n                      {\n                          xaxes: [\n                              { position: 'bottom' },\n                              { position: 'top'}\n                          ],\n                          yaxes: [\n                              { position: 'left' },\n                              { position: 'left' },\n                              { position: 'right' },\n                              { position: 'left' }\n                          ]\n                      });\n\n    // now for each axis, create a div\n\n    function getBoundingBoxForAxis(plot, axis) {\n        var left = axis.box.left, top = axis.box.top,\n            right = left + axis.box.width, bottom = top + axis.box.height;\n\n        // some ticks may stick out, enlarge the box to encompass all ticks\n        var cls = axis.direction + axis.n + 'Axis';\n        plot.getPlaceholder().find('.' + cls + ' .tickLabel').each(function () {\n            var pos = $(this).position();\n            left = Math.min(pos.left, left);\n            top = Math.min(pos.top, top);\n            right = Math.max(Math.round(pos.left) + $(this).outerWidth(), right);\n            bottom = Math.max(Math.round(pos.top) + $(this).outerHeight(), bottom);\n        });\n        \n        return { left: left, top: top, width: right - left, height: bottom - top };\n    }\n    \n    $.each(plot.getAxes(), function (i, axis) {\n        if (!axis.show)\n            return;\n        \n        var box = getBoundingBoxForAxis(plot, axis);\n        \n        $('<div class=\"axisTarget\" style=\"position:absolute;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n            .data('axis.direction', axis.direction)\n            .data('axis.n', axis.n)\n            .css({ backgroundColor: \"#f00\", opacity: 0, cursor: \"pointer\" })\n            .appendTo(plot.getPlaceholder())\n            .hover(\n                function () { $(this).css({ opacity: 0.10 }) },\n                function () { $(this).css({ opacity: 0 }) }\n            )\n            .click(function () {\n                $(\"#click\").text(\"You clicked the \" + axis.direction + axis.n + \"axis!\")\n            });\n    });\n});\n</script>\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/interacting.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>One of the goals of Flot is to support user interactions. Try\n    pointing and clicking on the points.</p>\n\n    <p id=\"hoverdata\">Mouse hovers at\n    (<span id=\"x\">0</span>, <span id=\"y\">0</span>). <span id=\"clickdata\"></span></p>\n\n    <p>A tooltip is easy to build with a bit of jQuery code and the\n    data returned from the plot.</p>\n\n    <p><input id=\"enableTooltip\" type=\"checkbox\">Enable tooltip</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    var plot = $.plot($(\"#placeholder\"),\n           [ { data: sin, label: \"sin(x)\"}, { data: cos, label: \"cos(x)\" } ], {\n               series: {\n                   lines: { show: true },\n                   points: { show: true }\n               },\n               grid: { hoverable: true, clickable: true },\n               yaxis: { min: -1.2, max: 1.2 }\n             });\n\n    function showTooltip(x, y, contents) {\n        $('<div id=\"tooltip\">' + contents + '</div>').css( {\n            position: 'absolute',\n            display: 'none',\n            top: y + 5,\n            left: x + 5,\n            border: '1px solid #fdd',\n            padding: '2px',\n            'background-color': '#fee',\n            opacity: 0.80\n        }).appendTo(\"body\").fadeIn(200);\n    }\n\n    var previousPoint = null;\n    $(\"#placeholder\").bind(\"plothover\", function (event, pos, item) {\n        $(\"#x\").text(pos.x.toFixed(2));\n        $(\"#y\").text(pos.y.toFixed(2));\n\n        if ($(\"#enableTooltip:checked\").length > 0) {\n            if (item) {\n                if (previousPoint != item.dataIndex) {\n                    previousPoint = item.dataIndex;\n                    \n                    $(\"#tooltip\").remove();\n                    var x = item.datapoint[0].toFixed(2),\n                        y = item.datapoint[1].toFixed(2);\n                    \n                    showTooltip(item.pageX, item.pageY,\n                                item.series.label + \" of \" + x + \" = \" + y);\n                }\n            }\n            else {\n                $(\"#tooltip\").remove();\n                previousPoint = null;            \n            }\n        }\n    });\n\n    $(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n        if (item) {\n            $(\"#clickdata\").text(\"You clicked point \" + item.dataIndex + \" in \" + item.series.label + \".\");\n            plot.highlight(item.series, item.datapoint);\n        }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/layout.css",
    "content": "body {\n  font-family: sans-serif;\n  font-size: 16px;\n  margin: 50px;\n  max-width: 800px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/multiple-axes.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Multiple axis support showing the raw oil price in US $/barrel of\n    crude oil vs. the exchange rate from US $ to €.</p>\n\n    <p>As illustrated, you can put in multiple axes if you\n    need to. For each data series, simply specify the axis number.\n    In the options, you can then configure where you want the extra\n    axes to appear.</p>\n\n    <p>Position axis <button>left</button> or <button>right</button>.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var oilprices = [[1167692400000,61.05], [1167778800000,58.32], [1167865200000,57.35], [1167951600000,56.31], [1168210800000,55.55], [1168297200000,55.64], [1168383600000,54.02], [1168470000000,51.88], [1168556400000,52.99], [1168815600000,52.99], [1168902000000,51.21], [1168988400000,52.24], [1169074800000,50.48], [1169161200000,51.99], [1169420400000,51.13], [1169506800000,55.04], [1169593200000,55.37], [1169679600000,54.23], [1169766000000,55.42], [1170025200000,54.01], [1170111600000,56.97], [1170198000000,58.14], [1170284400000,58.14], [1170370800000,59.02], [1170630000000,58.74], [1170716400000,58.88], [1170802800000,57.71], [1170889200000,59.71], [1170975600000,59.89], [1171234800000,57.81], [1171321200000,59.06], [1171407600000,58.00], [1171494000000,57.99], [1171580400000,59.39], [1171839600000,59.39], [1171926000000,58.07], [1172012400000,60.07], [1172098800000,61.14], [1172444400000,61.39], [1172530800000,61.46], [1172617200000,61.79], [1172703600000,62.00], [1172790000000,60.07], [1173135600000,60.69], [1173222000000,61.82], [1173308400000,60.05], [1173654000000,58.91], [1173740400000,57.93], [1173826800000,58.16], [1173913200000,57.55], [1173999600000,57.11], [1174258800000,56.59], [1174345200000,59.61], [1174518000000,61.69], [1174604400000,62.28], [1174860000000,62.91], [1174946400000,62.93], [1175032800000,64.03], [1175119200000,66.03], [1175205600000,65.87], [1175464800000,64.64], [1175637600000,64.38], [1175724000000,64.28], [1175810400000,64.28], [1176069600000,61.51], [1176156000000,61.89], [1176242400000,62.01], [1176328800000,63.85], [1176415200000,63.63], [1176674400000,63.61], [1176760800000,63.10], [1176847200000,63.13], [1176933600000,61.83], [1177020000000,63.38], [1177279200000,64.58], [1177452000000,65.84], [1177538400000,65.06], [1177624800000,66.46], [1177884000000,64.40], [1178056800000,63.68], [1178143200000,63.19], [1178229600000,61.93], [1178488800000,61.47], [1178575200000,61.55], [1178748000000,61.81], [1178834400000,62.37], [1179093600000,62.46], [1179180000000,63.17], [1179266400000,62.55], [1179352800000,64.94], [1179698400000,66.27], [1179784800000,65.50], [1179871200000,65.77], [1179957600000,64.18], [1180044000000,65.20], [1180389600000,63.15], [1180476000000,63.49], [1180562400000,65.08], [1180908000000,66.30], [1180994400000,65.96], [1181167200000,66.93], [1181253600000,65.98], [1181599200000,65.35], [1181685600000,66.26], [1181858400000,68.00], [1182117600000,69.09], [1182204000000,69.10], [1182290400000,68.19], [1182376800000,68.19], [1182463200000,69.14], [1182722400000,68.19], [1182808800000,67.77], [1182895200000,68.97], [1182981600000,69.57], [1183068000000,70.68], [1183327200000,71.09], [1183413600000,70.92], [1183586400000,71.81], [1183672800000,72.81], [1183932000000,72.19], [1184018400000,72.56], [1184191200000,72.50], [1184277600000,74.15], [1184623200000,75.05], [1184796000000,75.92], [1184882400000,75.57], [1185141600000,74.89], [1185228000000,73.56], [1185314400000,75.57], [1185400800000,74.95], [1185487200000,76.83], [1185832800000,78.21], [1185919200000,76.53], [1186005600000,76.86], [1186092000000,76.00], [1186437600000,71.59], [1186696800000,71.47], [1186956000000,71.62], [1187042400000,71.00], [1187301600000,71.98], [1187560800000,71.12], [1187647200000,69.47], [1187733600000,69.26], [1187820000000,69.83], [1187906400000,71.09], [1188165600000,71.73], [1188338400000,73.36], [1188511200000,74.04], [1188856800000,76.30], [1189116000000,77.49], [1189461600000,78.23], [1189548000000,79.91], [1189634400000,80.09], [1189720800000,79.10], [1189980000000,80.57], [1190066400000,81.93], [1190239200000,83.32], [1190325600000,81.62], [1190584800000,80.95], [1190671200000,79.53], [1190757600000,80.30], [1190844000000,82.88], [1190930400000,81.66], [1191189600000,80.24], [1191276000000,80.05], [1191362400000,79.94], [1191448800000,81.44], [1191535200000,81.22], [1191794400000,79.02], [1191880800000,80.26], [1191967200000,80.30], [1192053600000,83.08], [1192140000000,83.69], [1192399200000,86.13], [1192485600000,87.61], [1192572000000,87.40], [1192658400000,89.47], [1192744800000,88.60], [1193004000000,87.56], [1193090400000,87.56], [1193176800000,87.10], [1193263200000,91.86], [1193612400000,93.53], [1193698800000,94.53], [1193871600000,95.93], [1194217200000,93.98], [1194303600000,96.37], [1194476400000,95.46], [1194562800000,96.32], [1195081200000,93.43], [1195167600000,95.10], [1195426800000,94.64], [1195513200000,95.10], [1196031600000,97.70], [1196118000000,94.42], [1196204400000,90.62], [1196290800000,91.01], [1196377200000,88.71], [1196636400000,88.32], [1196809200000,90.23], [1196982000000,88.28], [1197241200000,87.86], [1197327600000,90.02], [1197414000000,92.25], [1197586800000,90.63], [1197846000000,90.63], [1197932400000,90.49], [1198018800000,91.24], [1198105200000,91.06], [1198191600000,90.49], [1198710000000,96.62], [1198796400000,96.00], [1199142000000,99.62], [1199314800000,99.18], [1199401200000,95.09], [1199660400000,96.33], [1199833200000,95.67], [1200351600000,91.90], [1200438000000,90.84], [1200524400000,90.13], [1200610800000,90.57], [1200956400000,89.21], [1201042800000,86.99], [1201129200000,89.85], [1201474800000,90.99], [1201561200000,91.64], [1201647600000,92.33], [1201734000000,91.75], [1202079600000,90.02], [1202166000000,88.41], [1202252400000,87.14], [1202338800000,88.11], [1202425200000,91.77], [1202770800000,92.78], [1202857200000,93.27], [1202943600000,95.46], [1203030000000,95.46], [1203289200000,101.74], [1203462000000,98.81], [1203894000000,100.88], [1204066800000,99.64], [1204153200000,102.59], [1204239600000,101.84], [1204498800000,99.52], [1204585200000,99.52], [1204671600000,104.52], [1204758000000,105.47], [1204844400000,105.15], [1205103600000,108.75], [1205276400000,109.92], [1205362800000,110.33], [1205449200000,110.21], [1205708400000,105.68], [1205967600000,101.84], [1206313200000,100.86], [1206399600000,101.22], [1206486000000,105.90], [1206572400000,107.58], [1206658800000,105.62], [1206914400000,101.58], [1207000800000,100.98], [1207173600000,103.83], [1207260000000,106.23], [1207605600000,108.50], [1207778400000,110.11], [1207864800000,110.14], [1208210400000,113.79], [1208296800000,114.93], [1208383200000,114.86], [1208728800000,117.48], [1208815200000,118.30], [1208988000000,116.06], [1209074400000,118.52], [1209333600000,118.75], [1209420000000,113.46], [1209592800000,112.52], [1210024800000,121.84], [1210111200000,123.53], [1210197600000,123.69], [1210543200000,124.23], [1210629600000,125.80], [1210716000000,126.29], [1211148000000,127.05], [1211320800000,129.07], [1211493600000,132.19], [1211839200000,128.85], [1212357600000,127.76], [1212703200000,138.54], [1212962400000,136.80], [1213135200000,136.38], [1213308000000,134.86], [1213653600000,134.01], [1213740000000,136.68], [1213912800000,135.65], [1214172000000,134.62], [1214258400000,134.62], [1214344800000,134.62], [1214431200000,139.64], [1214517600000,140.21], [1214776800000,140.00], [1214863200000,140.97], [1214949600000,143.57], [1215036000000,145.29], [1215381600000,141.37], [1215468000000,136.04], [1215727200000,146.40], [1215986400000,145.18], [1216072800000,138.74], [1216159200000,134.60], [1216245600000,129.29], [1216332000000,130.65], [1216677600000,127.95], [1216850400000,127.95], [1217282400000,122.19], [1217455200000,124.08], [1217541600000,125.10], [1217800800000,121.41], [1217887200000,119.17], [1217973600000,118.58], [1218060000000,120.02], [1218405600000,114.45], [1218492000000,113.01], [1218578400000,116.00], [1218751200000,113.77], [1219010400000,112.87], [1219096800000,114.53], [1219269600000,114.98], [1219356000000,114.98], [1219701600000,116.27], [1219788000000,118.15], [1219874400000,115.59], [1219960800000,115.46], [1220306400000,109.71], [1220392800000,109.35], [1220565600000,106.23], [1220824800000,106.34]];\n    var exchangerates = [[1167606000000,0.7580], [1167692400000,0.7580], [1167778800000,0.75470], [1167865200000,0.75490], [1167951600000,0.76130], [1168038000000,0.76550], [1168124400000,0.76930], [1168210800000,0.76940], [1168297200000,0.76880], [1168383600000,0.76780], [1168470000000,0.77080], [1168556400000,0.77270], [1168642800000,0.77490], [1168729200000,0.77410], [1168815600000,0.77410], [1168902000000,0.77320], [1168988400000,0.77270], [1169074800000,0.77370], [1169161200000,0.77240], [1169247600000,0.77120], [1169334000000,0.7720], [1169420400000,0.77210], [1169506800000,0.77170], [1169593200000,0.77040], [1169679600000,0.7690], [1169766000000,0.77110], [1169852400000,0.7740], [1169938800000,0.77450], [1170025200000,0.77450], [1170111600000,0.7740], [1170198000000,0.77160], [1170284400000,0.77130], [1170370800000,0.76780], [1170457200000,0.76880], [1170543600000,0.77180], [1170630000000,0.77180], [1170716400000,0.77280], [1170802800000,0.77290], [1170889200000,0.76980], [1170975600000,0.76850], [1171062000000,0.76810], [1171148400000,0.7690], [1171234800000,0.7690], [1171321200000,0.76980], [1171407600000,0.76990], [1171494000000,0.76510], [1171580400000,0.76130], [1171666800000,0.76160], [1171753200000,0.76140], [1171839600000,0.76140], [1171926000000,0.76070], [1172012400000,0.76020], [1172098800000,0.76110], [1172185200000,0.76220], [1172271600000,0.76150], [1172358000000,0.75980], [1172444400000,0.75980], [1172530800000,0.75920], [1172617200000,0.75730], [1172703600000,0.75660], [1172790000000,0.75670], [1172876400000,0.75910], [1172962800000,0.75820], [1173049200000,0.75850], [1173135600000,0.76130], [1173222000000,0.76310], [1173308400000,0.76150], [1173394800000,0.760], [1173481200000,0.76130], [1173567600000,0.76270], [1173654000000,0.76270], [1173740400000,0.76080], [1173826800000,0.75830], [1173913200000,0.75750], [1173999600000,0.75620], [1174086000000,0.7520], [1174172400000,0.75120], [1174258800000,0.75120], [1174345200000,0.75170], [1174431600000,0.7520], [1174518000000,0.75110], [1174604400000,0.7480], [1174690800000,0.75090], [1174777200000,0.75310], [1174860000000,0.75310], [1174946400000,0.75270], [1175032800000,0.74980], [1175119200000,0.74930], [1175205600000,0.75040], [1175292000000,0.750], [1175378400000,0.74910], [1175464800000,0.74910], [1175551200000,0.74850], [1175637600000,0.74840], [1175724000000,0.74920], [1175810400000,0.74710], [1175896800000,0.74590], [1175983200000,0.74770], [1176069600000,0.74770], [1176156000000,0.74830], [1176242400000,0.74580], [1176328800000,0.74480], [1176415200000,0.7430], [1176501600000,0.73990], [1176588000000,0.73950], [1176674400000,0.73950], [1176760800000,0.73780], [1176847200000,0.73820], [1176933600000,0.73620], [1177020000000,0.73550], [1177106400000,0.73480], [1177192800000,0.73610], [1177279200000,0.73610], [1177365600000,0.73650], [1177452000000,0.73620], [1177538400000,0.73310], [1177624800000,0.73390], [1177711200000,0.73440], [1177797600000,0.73270], [1177884000000,0.73270], [1177970400000,0.73360], [1178056800000,0.73330], [1178143200000,0.73590], [1178229600000,0.73590], [1178316000000,0.73720], [1178402400000,0.7360], [1178488800000,0.7360], [1178575200000,0.7350], [1178661600000,0.73650], [1178748000000,0.73840], [1178834400000,0.73950], [1178920800000,0.74130], [1179007200000,0.73970], [1179093600000,0.73960], [1179180000000,0.73850], [1179266400000,0.73780], [1179352800000,0.73660], [1179439200000,0.740], [1179525600000,0.74110], [1179612000000,0.74060], [1179698400000,0.74050], [1179784800000,0.74140], [1179871200000,0.74310], [1179957600000,0.74310], [1180044000000,0.74380], [1180130400000,0.74430], [1180216800000,0.74430], [1180303200000,0.74430], [1180389600000,0.74340], [1180476000000,0.74290], [1180562400000,0.74420], [1180648800000,0.7440], [1180735200000,0.74390], [1180821600000,0.74370], [1180908000000,0.74370], [1180994400000,0.74290], [1181080800000,0.74030], [1181167200000,0.73990], [1181253600000,0.74180], [1181340000000,0.74680], [1181426400000,0.7480], [1181512800000,0.7480], [1181599200000,0.7490], [1181685600000,0.74940], [1181772000000,0.75220], [1181858400000,0.75150], [1181944800000,0.75020], [1182031200000,0.74720], [1182117600000,0.74720], [1182204000000,0.74620], [1182290400000,0.74550], [1182376800000,0.74490], [1182463200000,0.74670], [1182549600000,0.74580], [1182636000000,0.74270], [1182722400000,0.74270], [1182808800000,0.7430], [1182895200000,0.74290], [1182981600000,0.7440], [1183068000000,0.7430], [1183154400000,0.74220], [1183240800000,0.73880], [1183327200000,0.73880], [1183413600000,0.73690], [1183500000000,0.73450], [1183586400000,0.73450], [1183672800000,0.73450], [1183759200000,0.73520], [1183845600000,0.73410], [1183932000000,0.73410], [1184018400000,0.7340], [1184104800000,0.73240], [1184191200000,0.72720], [1184277600000,0.72640], [1184364000000,0.72550], [1184450400000,0.72580], [1184536800000,0.72580], [1184623200000,0.72560], [1184709600000,0.72570], [1184796000000,0.72470], [1184882400000,0.72430], [1184968800000,0.72440], [1185055200000,0.72350], [1185141600000,0.72350], [1185228000000,0.72350], [1185314400000,0.72350], [1185400800000,0.72620], [1185487200000,0.72880], [1185573600000,0.73010], [1185660000000,0.73370], [1185746400000,0.73370], [1185832800000,0.73240], [1185919200000,0.72970], [1186005600000,0.73170], [1186092000000,0.73150], [1186178400000,0.72880], [1186264800000,0.72630], [1186351200000,0.72630], [1186437600000,0.72420], [1186524000000,0.72530], [1186610400000,0.72640], [1186696800000,0.7270], [1186783200000,0.73120], [1186869600000,0.73050], [1186956000000,0.73050], [1187042400000,0.73180], [1187128800000,0.73580], [1187215200000,0.74090], [1187301600000,0.74540], [1187388000000,0.74370], [1187474400000,0.74240], [1187560800000,0.74240], [1187647200000,0.74150], [1187733600000,0.74190], [1187820000000,0.74140], [1187906400000,0.73770], [1187992800000,0.73550], [1188079200000,0.73150], [1188165600000,0.73150], [1188252000000,0.7320], [1188338400000,0.73320], [1188424800000,0.73460], [1188511200000,0.73280], [1188597600000,0.73230], [1188684000000,0.7340], [1188770400000,0.7340], [1188856800000,0.73360], [1188943200000,0.73510], [1189029600000,0.73460], [1189116000000,0.73210], [1189202400000,0.72940], [1189288800000,0.72660], [1189375200000,0.72660], [1189461600000,0.72540], [1189548000000,0.72420], [1189634400000,0.72130], [1189720800000,0.71970], [1189807200000,0.72090], [1189893600000,0.7210], [1189980000000,0.7210], [1190066400000,0.7210], [1190152800000,0.72090], [1190239200000,0.71590], [1190325600000,0.71330], [1190412000000,0.71050], [1190498400000,0.70990], [1190584800000,0.70990], [1190671200000,0.70930], [1190757600000,0.70930], [1190844000000,0.70760], [1190930400000,0.7070], [1191016800000,0.70490], [1191103200000,0.70120], [1191189600000,0.70110], [1191276000000,0.70190], [1191362400000,0.70460], [1191448800000,0.70630], [1191535200000,0.70890], [1191621600000,0.70770], [1191708000000,0.70770], [1191794400000,0.70770], [1191880800000,0.70910], [1191967200000,0.71180], [1192053600000,0.70790], [1192140000000,0.70530], [1192226400000,0.7050], [1192312800000,0.70550], [1192399200000,0.70550], [1192485600000,0.70450], [1192572000000,0.70510], [1192658400000,0.70510], [1192744800000,0.70170], [1192831200000,0.70], [1192917600000,0.69950], [1193004000000,0.69940], [1193090400000,0.70140], [1193176800000,0.70360], [1193263200000,0.70210], [1193349600000,0.70020], [1193436000000,0.69670], [1193522400000,0.6950], [1193612400000,0.6950], [1193698800000,0.69390], [1193785200000,0.6940], [1193871600000,0.69220], [1193958000000,0.69190], [1194044400000,0.69140], [1194130800000,0.68940], [1194217200000,0.68910], [1194303600000,0.69040], [1194390000000,0.6890], [1194476400000,0.68340], [1194562800000,0.68230], [1194649200000,0.68070], [1194735600000,0.68150], [1194822000000,0.68150], [1194908400000,0.68470], [1194994800000,0.68590], [1195081200000,0.68220], [1195167600000,0.68270], [1195254000000,0.68370], [1195340400000,0.68230], [1195426800000,0.68220], [1195513200000,0.68220], [1195599600000,0.67920], [1195686000000,0.67460], [1195772400000,0.67350], [1195858800000,0.67310], [1195945200000,0.67420], [1196031600000,0.67440], [1196118000000,0.67390], [1196204400000,0.67310], [1196290800000,0.67610], [1196377200000,0.67610], [1196463600000,0.67850], [1196550000000,0.68180], [1196636400000,0.68360], [1196722800000,0.68230], [1196809200000,0.68050], [1196895600000,0.67930], [1196982000000,0.68490], [1197068400000,0.68330], [1197154800000,0.68250], [1197241200000,0.68250], [1197327600000,0.68160], [1197414000000,0.67990], [1197500400000,0.68130], [1197586800000,0.68090], [1197673200000,0.68680], [1197759600000,0.69330], [1197846000000,0.69330], [1197932400000,0.69450], [1198018800000,0.69440], [1198105200000,0.69460], [1198191600000,0.69640], [1198278000000,0.69650], [1198364400000,0.69560], [1198450800000,0.69560], [1198537200000,0.6950], [1198623600000,0.69480], [1198710000000,0.69280], [1198796400000,0.68870], [1198882800000,0.68240], [1198969200000,0.67940], [1199055600000,0.67940], [1199142000000,0.68030], [1199228400000,0.68550], [1199314800000,0.68240], [1199401200000,0.67910], [1199487600000,0.67830], [1199574000000,0.67850], [1199660400000,0.67850], [1199746800000,0.67970], [1199833200000,0.680], [1199919600000,0.68030], [1200006000000,0.68050], [1200092400000,0.6760], [1200178800000,0.6770], [1200265200000,0.6770], [1200351600000,0.67360], [1200438000000,0.67260], [1200524400000,0.67640], [1200610800000,0.68210], [1200697200000,0.68310], [1200783600000,0.68420], [1200870000000,0.68420], [1200956400000,0.68870], [1201042800000,0.69030], [1201129200000,0.68480], [1201215600000,0.68240], [1201302000000,0.67880], [1201388400000,0.68140], [1201474800000,0.68140], [1201561200000,0.67970], [1201647600000,0.67690], [1201734000000,0.67650], [1201820400000,0.67330], [1201906800000,0.67290], [1201993200000,0.67580], [1202079600000,0.67580], [1202166000000,0.6750], [1202252400000,0.6780], [1202338800000,0.68330], [1202425200000,0.68560], [1202511600000,0.69030], [1202598000000,0.68960], [1202684400000,0.68960], [1202770800000,0.68820], [1202857200000,0.68790], [1202943600000,0.68620], [1203030000000,0.68520], [1203116400000,0.68230], [1203202800000,0.68130], [1203289200000,0.68130], [1203375600000,0.68220], [1203462000000,0.68020], [1203548400000,0.68020], [1203634800000,0.67840], [1203721200000,0.67480], [1203807600000,0.67470], [1203894000000,0.67470], [1203980400000,0.67480], [1204066800000,0.67330], [1204153200000,0.6650], [1204239600000,0.66110], [1204326000000,0.65830], [1204412400000,0.6590], [1204498800000,0.6590], [1204585200000,0.65810], [1204671600000,0.65780], [1204758000000,0.65740], [1204844400000,0.65320], [1204930800000,0.65020], [1205017200000,0.65140], [1205103600000,0.65140], [1205190000000,0.65070], [1205276400000,0.6510], [1205362800000,0.64890], [1205449200000,0.64240], [1205535600000,0.64060], [1205622000000,0.63820], [1205708400000,0.63820], [1205794800000,0.63410], [1205881200000,0.63440], [1205967600000,0.63780], [1206054000000,0.64390], [1206140400000,0.64780], [1206226800000,0.64810], [1206313200000,0.64810], [1206399600000,0.64940], [1206486000000,0.64380], [1206572400000,0.63770], [1206658800000,0.63290], [1206745200000,0.63360], [1206831600000,0.63330], [1206914400000,0.63330], [1207000800000,0.6330], [1207087200000,0.63710], [1207173600000,0.64030], [1207260000000,0.63960], [1207346400000,0.63640], [1207432800000,0.63560], [1207519200000,0.63560], [1207605600000,0.63680], [1207692000000,0.63570], [1207778400000,0.63540], [1207864800000,0.6320], [1207951200000,0.63320], [1208037600000,0.63280], [1208124000000,0.63310], [1208210400000,0.63420], [1208296800000,0.63210], [1208383200000,0.63020], [1208469600000,0.62780], [1208556000000,0.63080], [1208642400000,0.63240], [1208728800000,0.63240], [1208815200000,0.63070], [1208901600000,0.62770], [1208988000000,0.62690], [1209074400000,0.63350], [1209160800000,0.63920], [1209247200000,0.640], [1209333600000,0.64010], [1209420000000,0.63960], [1209506400000,0.64070], [1209592800000,0.64230], [1209679200000,0.64290], [1209765600000,0.64720], [1209852000000,0.64850], [1209938400000,0.64860], [1210024800000,0.64670], [1210111200000,0.64440], [1210197600000,0.64670], [1210284000000,0.65090], [1210370400000,0.64780], [1210456800000,0.64610], [1210543200000,0.64610], [1210629600000,0.64680], [1210716000000,0.64490], [1210802400000,0.6470], [1210888800000,0.64610], [1210975200000,0.64520], [1211061600000,0.64220], [1211148000000,0.64220], [1211234400000,0.64250], [1211320800000,0.64140], [1211407200000,0.63660], [1211493600000,0.63460], [1211580000000,0.6350], [1211666400000,0.63460], [1211752800000,0.63460], [1211839200000,0.63430], [1211925600000,0.63460], [1212012000000,0.63790], [1212098400000,0.64160], [1212184800000,0.64420], [1212271200000,0.64310], [1212357600000,0.64310], [1212444000000,0.64350], [1212530400000,0.6440], [1212616800000,0.64730], [1212703200000,0.64690], [1212789600000,0.63860], [1212876000000,0.63560], [1212962400000,0.6340], [1213048800000,0.63460], [1213135200000,0.6430], [1213221600000,0.64520], [1213308000000,0.64670], [1213394400000,0.65060], [1213480800000,0.65040], [1213567200000,0.65030], [1213653600000,0.64810], [1213740000000,0.64510], [1213826400000,0.6450], [1213912800000,0.64410], [1213999200000,0.64140], [1214085600000,0.64090], [1214172000000,0.64090], [1214258400000,0.64280], [1214344800000,0.64310], [1214431200000,0.64180], [1214517600000,0.63710], [1214604000000,0.63490], [1214690400000,0.63330], [1214776800000,0.63340], [1214863200000,0.63380], [1214949600000,0.63420], [1215036000000,0.6320], [1215122400000,0.63180], [1215208800000,0.6370], [1215295200000,0.63680], [1215381600000,0.63680], [1215468000000,0.63830], [1215554400000,0.63710], [1215640800000,0.63710], [1215727200000,0.63550], [1215813600000,0.6320], [1215900000000,0.62770], [1215986400000,0.62760], [1216072800000,0.62910], [1216159200000,0.62740], [1216245600000,0.62930], [1216332000000,0.63110], [1216418400000,0.6310], [1216504800000,0.63120], [1216591200000,0.63120], [1216677600000,0.63040], [1216764000000,0.62940], [1216850400000,0.63480], [1216936800000,0.63780], [1217023200000,0.63680], [1217109600000,0.63680], [1217196000000,0.63680], [1217282400000,0.6360], [1217368800000,0.6370], [1217455200000,0.64180], [1217541600000,0.64110], [1217628000000,0.64350], [1217714400000,0.64270], [1217800800000,0.64270], [1217887200000,0.64190], [1217973600000,0.64460], [1218060000000,0.64680], [1218146400000,0.64870], [1218232800000,0.65940], [1218319200000,0.66660], [1218405600000,0.66660], [1218492000000,0.66780], [1218578400000,0.67120], [1218664800000,0.67050], [1218751200000,0.67180], [1218837600000,0.67840], [1218924000000,0.68110], [1219010400000,0.68110], [1219096800000,0.67940], [1219183200000,0.68040], [1219269600000,0.67810], [1219356000000,0.67560], [1219442400000,0.67350], [1219528800000,0.67630], [1219615200000,0.67620], [1219701600000,0.67770], [1219788000000,0.68150], [1219874400000,0.68020], [1219960800000,0.6780], [1220047200000,0.67960], [1220133600000,0.68170], [1220220000000,0.68170], [1220306400000,0.68320], [1220392800000,0.68770], [1220479200000,0.69120], [1220565600000,0.69140], [1220652000000,0.70090], [1220738400000,0.70120], [1220824800000,0.7010], [1220911200000,0.70050]];\n\n    function euroFormatter(v, axis) {\n        return v.toFixed(axis.tickDecimals) +\"€\";\n    }\n    \n    function doPlot(position) {\n        $.plot($(\"#placeholder\"),\n           [ { data: oilprices, label: \"Oil price ($)\" },\n             { data: exchangerates, label: \"USD/EUR exchange rate\", yaxis: 2 }],\n           { \n               xaxes: [ { mode: 'time' } ],\n               yaxes: [ { min: 0 },\n                        {\n                          // align if we are to the right\n                          alignTicksWithAxis: position == \"right\" ? 1 : null,\n                          position: position,\n                          tickFormatter: euroFormatter\n                        } ],\n               legend: { position: 'sw' }\n           });\n    }\n\n    doPlot(\"right\");\n    \n    $(\"button\").click(function () {\n        doPlot($(this).text());\n    });\n});\n</script>\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/navigate.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.navigate.js\"></script>\n    <style type=\"text/css\">\n    #placeholder .button {\n        position: absolute;\n        cursor: pointer;\n    }\n    #placeholder div.button {\n        font-size: smaller;\n        color: #999;\n        background-color: #eee;\n        padding: 2px;\n    }\n    .message {\n        padding-left: 50px;\n        font-size: smaller;\n    }\n    </style>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p class=\"message\"></p>\n\n    <p>With the navigate plugin it is easy to add panning and zooming.\n    Drag to pan, double click to zoom (or use the mouse scrollwheel).</p>\n\n    <p>The plugin fires events (useful for synchronizing several\n    plots) and adds a couple of public methods so you can easily build\n    a little user interface around it, like the little buttons at the\n    top right in the plot.</p>\n    \n\n<script type=\"text/javascript\">\n$(function () {\n    // generate data set from a parametric function with a fractal\n    // look\n    function sumf(f, t, m) {\n        var res = 0;\n        for (var i = 1; i < m; ++i)\n            res += f(i * i * t) / (i * i);\n        return res;\n    }\n    \n    var d1 = [];\n    for (var t = 0; t <= 2 * Math.PI; t += 0.01)\n        d1.push([sumf(Math.cos, t, 10), sumf(Math.sin, t, 10)]);\n    var data = [ d1 ];\n\n    \n    var placeholder = $(\"#placeholder\");\n    var options = {\n        series: { lines: { show: true }, shadowSize: 0 },\n        xaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },\n        yaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },\n        zoom: {\n            interactive: true\n        },\n        pan: {\n            interactive: true\n        }\n    };\n\n    var plot = $.plot(placeholder, data, options);\n\n    // show pan/zoom messages to illustrate events \n    placeholder.bind('plotpan', function (event, plot) {\n        var axes = plot.getAxes();\n        $(\".message\").html(\"Panning to x: \"  + axes.xaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.xaxis.max.toFixed(2)\n                           + \" and y: \" + axes.yaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.yaxis.max.toFixed(2));\n    });\n\n    placeholder.bind('plotzoom', function (event, plot) {\n        var axes = plot.getAxes();\n        $(\".message\").html(\"Zooming to x: \"  + axes.xaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.xaxis.max.toFixed(2)\n                           + \" and y: \" + axes.yaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.yaxis.max.toFixed(2));\n    });\n\n    // add zoom out button \n    $('<div class=\"button\" style=\"right:20px;top:20px\">zoom out</div>').appendTo(placeholder).click(function (e) {\n        e.preventDefault();\n        plot.zoomOut();\n    });\n\n    // and add panning buttons\n    \n    // little helper for taking the repetitive work out of placing\n    // panning arrows\n    function addArrow(dir, right, top, offset) {\n        $('<img class=\"button\" src=\"arrow-' + dir + '.gif\" style=\"right:' + right + 'px;top:' + top + 'px\">').appendTo(placeholder).click(function (e) {\n            e.preventDefault();\n            plot.pan(offset);\n        });\n    }\n\n    addArrow('left', 55, 60, { left: -100 });\n    addArrow('right', 25, 60, { left: 100 });\n    addArrow('up', 40, 45, { top: -100 });\n    addArrow('down', 40, 75, { top: 100 });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/percentiles.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.fillbetween.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:400px;\"></div>\n\n    <p>Height in centimeters of individuals from the US (2003-2006) as function of\n    age in years (source: <a href=\"http://www.cdc.gov/nchs/data/nhsr/nhsr010.pdf\">CDC</a>).\n    The 15%-85%, 25%-75% and 50% percentiles are indicated.</p>\n\n    <p>For each point of a filled curve, you can specify an arbitrary\n    bottom. As this example illustrates, this can be useful for\n    plotting percentiles. If you have the data sets available without\n    appropriate fill bottoms, you can use the fillbetween plugin to\n    compute the data point bottoms automatically.</p>\n    \n<script type=\"text/javascript\">\n$(function () {\n    var males = {'15%': [[2, 88.0], [3, 93.3], [4, 102.0], [5, 108.5], [6, 115.7], [7, 115.6], [8, 124.6], [9, 130.3], [10, 134.3], [11, 141.4], [12, 146.5], [13, 151.7], [14, 159.9], [15, 165.4], [16, 167.8], [17, 168.7], [18, 169.5], [19, 168.0]], '90%': [[2, 96.8], [3, 105.2], [4, 113.9], [5, 120.8], [6, 127.0], [7, 133.1], [8, 139.1], [9, 143.9], [10, 151.3], [11, 161.1], [12, 164.8], [13, 173.5], [14, 179.0], [15, 182.0], [16, 186.9], [17, 185.2], [18, 186.3], [19, 186.6]], '25%': [[2, 89.2], [3, 94.9], [4, 104.4], [5, 111.4], [6, 117.5], [7, 120.2], [8, 127.1], [9, 132.9], [10, 136.8], [11, 144.4], [12, 149.5], [13, 154.1], [14, 163.1], [15, 169.2], [16, 170.4], [17, 171.2], [18, 172.4], [19, 170.8]], '10%': [[2, 86.9], [3, 92.6], [4, 99.9], [5, 107.0], [6, 114.0], [7, 113.5], [8, 123.6], [9, 129.2], [10, 133.0], [11, 140.6], [12, 145.2], [13, 149.7], [14, 158.4], [15, 163.5], [16, 166.9], [17, 167.5], [18, 167.1], [19, 165.3]], 'mean': [[2, 91.9], [3, 98.5], [4, 107.1], [5, 114.4], [6, 120.6], [7, 124.7], [8, 131.1], [9, 136.8], [10, 142.3], [11, 150.0], [12, 154.7], [13, 161.9], [14, 168.7], [15, 173.6], [16, 175.9], [17, 176.6], [18, 176.8], [19, 176.7]], '75%': [[2, 94.5], [3, 102.1], [4, 110.8], [5, 117.9], [6, 124.0], [7, 129.3], [8, 134.6], [9, 141.4], [10, 147.0], [11, 156.1], [12, 160.3], [13, 168.3], [14, 174.7], [15, 178.0], [16, 180.2], [17, 181.7], [18, 181.3], [19, 182.5]], '85%': [[2, 96.2], [3, 103.8], [4, 111.8], [5, 119.6], [6, 125.6], [7, 131.5], [8, 138.0], [9, 143.3], [10, 149.3], [11, 159.8], [12, 162.5], [13, 171.3], [14, 177.5], [15, 180.2], [16, 183.8], [17, 183.4], [18, 183.5], [19, 185.5]], '50%': [[2, 91.9], [3, 98.2], [4, 106.8], [5, 114.6], [6, 120.8], [7, 125.2], [8, 130.3], [9, 137.1], [10, 141.5], [11, 149.4], [12, 153.9], [13, 162.2], [14, 169.0], [15, 174.8], [16, 176.0], [17, 176.8], [18, 176.4], [19, 177.4]]};\n    var females = {'15%': [[2, 84.8], [3, 93.7], [4, 100.6], [5, 105.8], [6, 113.3], [7, 119.3], [8, 124.3], [9, 131.4], [10, 136.9], [11, 143.8], [12, 149.4], [13, 151.2], [14, 152.3], [15, 155.9], [16, 154.7], [17, 157.0], [18, 156.1], [19, 155.4]], '90%': [[2, 95.6], [3, 104.1], [4, 111.9], [5, 119.6], [6, 127.6], [7, 133.1], [8, 138.7], [9, 147.1], [10, 152.8], [11, 161.3], [12, 166.6], [13, 167.9], [14, 169.3], [15, 170.1], [16, 172.4], [17, 169.2], [18, 171.1], [19, 172.4]], '25%': [[2, 87.2], [3, 95.9], [4, 101.9], [5, 107.4], [6, 114.8], [7, 121.4], [8, 126.8], [9, 133.4], [10, 138.6], [11, 146.2], [12, 152.0], [13, 153.8], [14, 155.7], [15, 158.4], [16, 157.0], [17, 158.5], [18, 158.4], [19, 158.1]], '10%': [[2, 84.0], [3, 91.9], [4, 99.2], [5, 105.2], [6, 112.7], [7, 118.0], [8, 123.3], [9, 130.2], [10, 135.0], [11, 141.1], [12, 148.3], [13, 150.0], [14, 150.7], [15, 154.3], [16, 153.6], [17, 155.6], [18, 154.7], [19, 153.1]], 'mean': [[2, 90.2], [3, 98.3], [4, 105.2], [5, 112.2], [6, 119.0], [7, 125.8], [8, 131.3], [9, 138.6], [10, 144.2], [11, 151.3], [12, 156.7], [13, 158.6], [14, 160.5], [15, 162.1], [16, 162.9], [17, 162.2], [18, 163.0], [19, 163.1]], '75%': [[2, 93.2], [3, 101.5], [4, 107.9], [5, 116.6], [6, 122.8], [7, 129.3], [8, 135.2], [9, 143.7], [10, 148.7], [11, 156.9], [12, 160.8], [13, 163.0], [14, 165.0], [15, 165.8], [16, 168.7], [17, 166.2], [18, 167.6], [19, 168.0]], '85%': [[2, 94.5], [3, 102.8], [4, 110.4], [5, 119.0], [6, 125.7], [7, 131.5], [8, 137.9], [9, 146.0], [10, 151.3], [11, 159.9], [12, 164.0], [13, 166.5], [14, 167.5], [15, 168.5], [16, 171.5], [17, 168.0], [18, 169.8], [19, 170.3]], '50%': [[2, 90.2], [3, 98.1], [4, 105.2], [5, 111.7], [6, 118.2], [7, 125.6], [8, 130.5], [9, 138.3], [10, 143.7], [11, 151.4], [12, 156.7], [13, 157.7], [14, 161.0], [15, 162.0], [16, 162.8], [17, 162.2], [18, 162.8], [19, 163.3]]};\n\n    var dataset = [\n       { label: 'Female mean', data: females['mean'], lines: { show: true }, color: \"rgb(255,50,50)\" },\n       { id: 'f15%', data: females['15%'], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(255,50,50)\" },\n       { id: 'f25%', data: females['25%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: 'f15%' },\n       { id: 'f50%', data: females['50%'], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(255,50,50)\", fillBetween: 'f25%' },\n       { id: 'f75%', data: females['75%'], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(255,50,50)\", fillBetween: 'f50%' },\n       { id: 'f85%', data: females['85%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: 'f75%' },\n       \n       { label: 'Male mean', data: males['mean'], lines: { show: true }, color: \"rgb(50,50,255)\" },\n       { id: 'm15%', data: males['15%'], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(50,50,255)\" },\n       { id: 'm25%', data: males['25%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: 'm15%' },\n       { id: 'm50%', data: males['50%'], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(50,50,255)\", fillBetween: 'm25%' },\n       { id: 'm75%', data: males['75%'], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(50,50,255)\", fillBetween: 'm50%' },\n       { id: 'm85%', data: males['85%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: 'm75%' }\n    ]\n\n    $.plot($(\"#placeholder\"), dataset, {\n            xaxis: { tickDecimals: 0 },\n            yaxis: { tickFormatter: function (v) { return v + \" cm\"; } },\n            legend: { position: 'se' }\n        });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/pie.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Pie Examples</title>\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.pie.js\"></script>\n\t\n<script type=\"text/javascript\">\n$(function () {\n\t// data\n\t/*var data = [\n\t\t{ label: \"Series1\",  data: 10},\n\t\t{ label: \"Series2\",  data: 30},\n\t\t{ label: \"Series3\",  data: 90},\n\t\t{ label: \"Series4\",  data: 70},\n\t\t{ label: \"Series5\",  data: 80},\n\t\t{ label: \"Series6\",  data: 110}\n\t];*/\n\t/*var data = [\n\t\t{ label: \"Series1\",  data: [[1,10]]},\n\t\t{ label: \"Series2\",  data: [[1,30]]},\n\t\t{ label: \"Series3\",  data: [[1,90]]},\n\t\t{ label: \"Series4\",  data: [[1,70]]},\n\t\t{ label: \"Series5\",  data: [[1,80]]},\n\t\t{ label: \"Series6\",  data: [[1,0]]}\n\t];*/\n\tvar data = [];\n\tvar series = Math.floor(Math.random()*10)+1;\n\tfor( var i = 0; i<series; i++)\n\t{\n\t\tdata[i] = { label: \"Series\"+(i+1), data: Math.floor(Math.random()*100)+1 }\n\t}\n\n\t// DEFAULT\n    $.plot($(\"#default\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// GRAPH 1\n\t$.plot($(\"#graph1\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 2\n\t$.plot($(\"#graph2\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.8 }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 3\n\t$.plot($(\"#graph3\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.5 }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 4\n\t$.plot($(\"#graph4\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { \n\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 5\n\t$.plot($(\"#graph5\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 3/4,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { \n\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 6\n\t$.plot($(\"#graph6\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 2/3,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 7\n\t$.plot($(\"#graph7\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tcombine: {\n\t\t\t\t\tcolor: '#999',\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 8\n\t$.plot($(\"#graph8\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius:300,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 9\n\t$.plot($(\"#graph9\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\ttilt: 0.5,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.8 }\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tcolor: '#999',\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// DONUT\n    $.plot($(\"#donut\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tinnerRadius: 0.5,\n\t\t\t\tshow: true\n\t\t\t}\n\t\t}\n\t});\n\n\t// INTERACTIVE\n    $.plot($(\"#interactive\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t},\n\t\tgrid: {\n\t\t\thoverable: true,\n\t\t\tclickable: true\n\t\t}\n\t});\n\t$(\"#interactive\").bind(\"plothover\", pieHover);\n\t$(\"#interactive\").bind(\"plotclick\", pieClick);\n\n});\n\nfunction pieHover(event, pos, obj) \n{\n\tif (!obj)\n                return;\n\tpercent = parseFloat(obj.series.percent).toFixed(2);\n\t$(\"#hover\").html('<span style=\"font-weight: bold; color: '+obj.series.color+'\">'+obj.series.label+' ('+percent+'%)</span>');\n}\n\nfunction pieClick(event, pos, obj) \n{\n\tif (!obj)\n                return;\n\tpercent = parseFloat(obj.series.percent).toFixed(2);\n\talert(''+obj.series.label+': '+percent+'%');\n}\n</script>\n\t<style type=\"text/css\">\n\t\t* {\n\t\t  font-family: sans-serif;\n\t\t}\n\t\t\n\t\tbody\n\t\t{\n\t\t\tpadding: 0 1em 1em 1em;\n\t\t}\n\t\t\n\t\tdiv.graph\n\t\t{\n\t\t\twidth: 400px;\n\t\t\theight: 300px;\n\t\t\tfloat: left;\n\t\t\tborder: 1px dashed gainsboro;\n\t\t}\n\t\t\n\t\tlabel\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmargin-left: 400px;\n\t\t\tpadding-left: 1em;\n\t\t}\n\t\t\n\t\th2\n\t\t{\n\t\t\tpadding-top: 1em;\n\t\t\tmargin-bottom: 0;\n\t\t\tclear: both;\n\t\t\tcolor: #ccc;\n\t\t}\n\t\t\n\t\tcode\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tbackground-color: #eee;\n\t\t\tborder: 1px dashed #999;\n\t\t\tpadding: 0.5em;\n\t\t\tmargin: 0.5em;\n\t\t\tcolor: #666;\n\t\t\tfont-size: 10pt;\n\t\t}\n\t\t\n\t\tcode b\n\t\t{\n\t\t\tcolor: black;\n\t\t}\n\t\t\n\t\tul\n\t\t{\n\t\t\tfont-size: 10pt;\n\t\t}\n\t\t\n\t\tul li\n\t\t{\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t\t\n\t\tul.options li\n\t\t{\n\t\t\tlist-style: none;\n\t\t\tmargin-bottom: 1em;\n\t\t}\n\t\t\n\t\tul li i\n\t\t{\n\t\t\tcolor: #999;\n\t\t}\n\t</style>\n </head>\n    <body>\n    <h1>Flot Pie Examples</h1>\n\n\t<h2>Default with Legend</h2>\n    <div id=\"default\" class=\"graph\"></div>\n\t<label for=\"default\">\n\t\tDefault pie graph with no options set.\n\t\t<code>\n$.plot($(\"#default\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\n\t<h2>Default without Legend</h2>\n    <div id=\"graph1\" class=\"graph\"></div>\n\t<label for=\"graph1\">\n\t\tDefault pie graph when legend is disabled. Since the labels would normally be outside the container, the graph is resized to fit.\n\t\t<code>\n$.plot($(\"#graph1\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph2</h2>\n    <div id=\"graph2\" class=\"graph\"></div>\n\t<label for=\"graph2\">\n\t\tAdded a semi-transparent background to the labels and a custom labelFormatter function.\n\t\t<code>\n$.plot($(\"#graph2\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { opacity: 0.8 }<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph3</h2>\n    <div id=\"graph3\" class=\"graph\"></div>\n\t<label for=\"graph3\">\n\t\tSlightly more transparent label backgrounds and adjusted the radius values to place them within the pie.\n\t\t<code>\n$.plot($(\"#graph3\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 3/4,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>background: { opacity: 0.5 }</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph4</h2>\n    <div id=\"graph4\" class=\"graph\"></div>\n\t<label for=\"graph4\">\n\t\tSemi-transparent, black-colored label background.\n\t\t<code>\n$.plot($(\"#graph4\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 3/4,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity: 0.5,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>color: '#000'</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph5</h2>\n    <div id=\"graph5\" class=\"graph\"></div>\n\t<label for=\"graph5\">\n\t\tSemi-transparent, black-colored label background placed at pie edge.\n\t\t<code>\n$.plot($(\"#graph5\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 3/4,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 3/4,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity: 0.5,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#000'<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph6</h2>\n    <div id=\"graph6\" class=\"graph\"></div>\n\t<label for=\"graph6\">\n\t\tLabels can be hidden if the slice is less than a given percentage of the pie (10% in this case).\n\t\t<br><span style=\"color: red\">Note: you may need to refresh the page to see this effect.</span>\n\t\t<code>\n$.plot($(\"#graph6\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 1,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 2/3,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>threshold: 0.1</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph7</h2>\n    <div id=\"graph7\" class=\"graph\"></div>\n\t<label for=\"graph7\">\n\t\tAll slices less than a given percentage of the pie can be combined into a single, larger slice (10% in this case).\n\t\t<br><span style=\"color: red\">Note: you may need to refresh the page to see this effect.</span>\n\t\t<code>\n$.plot($(\"#graph7\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>combine: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#999',<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph8</h2>\n    <div id=\"graph8\" class=\"graph\"></div>\n\t<label for=\"graph8\">\n\t\tThe radius can also be set to a specific size (even larger than the container itself).\n\t\t<code>\n$.plot($(\"#graph8\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius:300,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\n\t<h2>Graph9</h2>\n    <div id=\"graph9\" class=\"graph\" style=\"height: 250px;\"></div>\n\t<label for=\"graph9\">\n\t\tThe pie can be tilted at an angle.\n\t\t<code>\n$.plot($(\"#graph9\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>tilt: 0.5,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { opacity: 0.8 }<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combine: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#999',<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Donut</h2>\n    <div id=\"donut\" class=\"graph\"></div>\n\t<label for=\"donut\">\n\t\tA donut hole can be added.\n\t\t<code>\n$.plot($(\"#donut\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>innerRadius: 0.5,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Interactive</h2>\n    <div id=\"interactive\" class=\"graph\"></div>\n\t<label for=\"interactive\">\n\t\tThe pie can be made interactive with hover and click events.\n\t\t<code>\n$.plot($(\"#interactive\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>grid: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hoverable: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clickable: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n});<br/>\n<b>$(\"#interactive\").bind(\"plothover\", pieHover);<br/>\n$(\"#interactive\").bind(\"plotclick\", pieClick);</b><br/>\n\t\t</code>\n\t\t<div id=\"hover\"></div>\n\t</label>\n\t\t\n\t<h2>Pie Options</h2>\n\t<ul class=\"options\">\n\t\t<li style=\"border-bottom: 1px dotted #ccc;\"><b>option:</b> <i>default value</i> - Description of option</li>\n\t\t<li><b>show:</b> <i>false</i> - Enable the plugin and draw as a pie.</li>\n\t\t<li><b>radius:</b> <i>'auto'</i> - Sets the radius of the pie. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length. If set to 'auto', it will be set to 1 if the legend is enabled and 3/4 if not.</li>\n\t\t<li><b>innerRadius:</b> <i>0</i> - Sets the radius of the donut hole. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the radius, otherwise it will use the value as a direct pixel length.</li>\n\t\t<li><b>startAngle:</b> <i>3/2</i> - Factor of PI used for the starting angle (in radians) It can range between 0 and 2 (where 0 and 2 have the same result).</li>\n\t\t<li><b>tilt:</b> <i>1</i> - Percentage of tilt ranging from 0 and 1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn).</li>\n\t\t<li><b>offset:</b> <ul>\n\t\t\t<li><b>top:</b> <i>0</i> - Pixel distance to move the pie up and down (relative to the center).</li>\n\t\t\t<li><b>left:</b> <i>'auto'</i> - Pixel distance to move the pie left and right (relative to the center).</li>\n\t\t</ul>\n\t\t<li><b>stroke:</b> <ul>\n\t\t\t<li><b>color:</b> <i>'#FFF'</i> - Color of the border of each slice. Hexadecimal color definitions are prefered (other formats may or may not work).</li>\n\t\t\t<li><b>width:</b> <i>1</i> - Pixel width of the border of each slice.</li>\n\t\t</ul>\n\t\t<li><b>label:</b> <ul>\n\t\t\t<li><b>show:</b> <i>'auto'</i> - Enable/Disable the labels. This can be set to true, false, or 'auto'. When set to 'auto', it will be set to false if the legend is enabled and true if not.</li>\n\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t<li><b>threshold:</b> <i>0</i> - Hides the labels of any pie slice that is smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will hide all slices 3% or less of the total.</li>\n\t\t\t<li><b>formatter:</b> <i>[function]</i> - This function specifies how the positioned labels should be formatted, and is applied after the legend's labelFormatter function. The labels can also still be styled using the class \"pieLabel\" (i.e. \".pieLabel\" or \"#graph1 .pieLabel\").</li>\n\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t<li><b>background:</b> <ul>\n\t\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the slice.</li>\n\t\t\t\t<li><b>opacity:</b> <i>0</i> - Opacity of the background for the positioned labels. Acceptable values range from 0 to 1, where 0 is completely transparent and 1 is completely opaque.</li>\n\t\t\t</ul>\n\t\t</ul>\n\t\t<li><b>combine:</b> <ul>\n\t\t\t<li><b>threshold:</b> <i>0</i> - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice).</li>\n\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the first slice to be combined.</li>\n\t\t\t<li><b>label:</b> <i>'Other'</i> - Label text for the combined slice.</li>\n\t\t</ul>\n\t\t<li><b>highlight:</b> <ul>\n\t\t\t<li><b>opacity:</b> <i>0.5</i> - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date.\n\t\t</ul>\n\t</ul>\n\t\n\t<h2>Changes/Features</h2>\n\t<ul>\n\t\t<li style=\"list-style: none;\"><i>v1.0 - November 20th, 2009 - Brian Medendorp</i></li>\n\t\t<li>The pie plug-in is now part of the Flot repository! This should make it a lot easier to deal with.</li>\n\t\t<li>Added a new option (innerRadius) to add a \"donut hole\" to the center of the pie, based on comtributions from Anthony Aragues. I was a little reluctant to add this feature because it doesn't work very well with the shadow created for the tilted pie, but figured it was worthwhile for non-tilted pies. Also, excanvas apparently doesn't support compositing, so it will fall back to using the stroke color to fill in the center (but I recommend setting the stroke color to the background color anyway).</li>\n\t\t<li>Changed the lineJoin for the border of the pie slices to use the 'round' option. This should make the center of the pie look better, particularly when there are numerous thin slices.</li>\n\t\t<li>Included a bug fix submitted by btburnett3 to display a slightly smaller slice in the event that the slice is 100% and being rendered with Internet Explorer. I haven't experienced this bug myself, but it doesn't seem to hurt anything so I've included it.</li>\n\t\t<li>The tilt value is now used when calculating the maximum radius of the pie in relation to the height of the container. This should prevent the pie from being smaller than it needed to in some cases, as well as reducing the amount of extra white space generated above and below the pie.</li>\n\t\t<li><b>Hover and Click functionality are now availabe!</b><ul>\n\t\t\t<li>Thanks to btburnett3 for the original hover functionality and Anthony Aragues for the modification that makes it compatable with excanvas, this was a huge help!</li>\n\t\t\t<li>Added a new option (highlight opacity) to modify the highlight created when mousing over a slice. Currently this just uses a white overlay, but an option to change the hightlight color will be added when the appropriate functionality becomes available.\n\t\t\t<li>I had a major setback that required me to practically rebuild the hover/click events from scratch one piece at a time (I discovered that it only worked with a single pie on a page at a time), but the end result ended up being virtually identical to the original, so I'm not quite sure what exactly made it work.</li>\n\t\t\t<li><span style=\"color: red;\">Warning:</span> There are some minor issues with using this functionality in conjuction with some of the other more advanced features (tilt and donut). When using a donut hole, the inner portion still triggers the events even though that portion of the pie is no longer visible. When tilted, the interactive portions still use the original, untilted version of the pie when determining mouse position (this is because the isPointInPath function apparently doesn't work with transformations), however hover and click both work this way, so the appropriate slice is still highlighted when clicking, and it isn't as noticable of a problem.</li>\n\t\t</ul></li>\n\t\t<li>Included a bug fix submitted by Xavi Ivars to fix array issues when other javascript libraries are included in addition to jQuery</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.4 - July 1st, 2009 - Brian Medendorp</i></li>\n\t\t<li>Each series will now be shown in the legend, even if it's value is zero. The series will not get a positioned label because it will overlap with the other labels present and often makes them unreadable.</li>\n\t\t<li>Data can now be passed in using the standard Flot method using an array of datapoints, the pie plugin will simply use the first y-value that it finds for each series in this case. The plugin uses this datastructure internally, but you can still use the old method of passing in a single numerical value for each series (the plugin will convert it as necessary). This should make it easier to transition from other types of graphs (such as a stacked bar graph) to a pie.</li>\n\t\t<li>The pie can now be tilted at an angle with a new \"tilt\" option. Acceptable values range from 0-1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn). If the plugin determines that it will fit within the canvas, a drop shadow will be drawn under the tilted pie (this also requires a tilt value of 0.8 or less).</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3.2 - June 25th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Fixed a bug that was causing the pie to be shifted too far left or right when the legend is showing in some cases.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3.1 - June 24th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Fixed a bug that was causing nothing to be drawn and generating a javascript error if any of the data values were set to zero.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3 - June 23rd, 2009 - Brian Medendorp</i></li>\n\t\t<li>The legend now works without any modifications! Because of changes made to flot and the plugin system (thanks Ole Laursen!) I was able to simplify a number of things and am now able to use the legend without the direct access hack that was required in the previous version.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.2 - June 22nd, 2009 - Brian Medendorp</i></li>\n\t\t<li>The legend now works but only if you make the necessary changes to jquery.flot.js. Because of this, I changed the default values for pie.radius and pie.label.show to new 'auto' settings that change the default behavior of the size and labels depending on whether the legend functionality is available or not.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.1 - June 18th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Rewrote the entire pie code into a flot plugin (since that is now an option), so it should be much easier to use and the code is cleaned up a bit. However, the (standard flot) legend is no longer available because the only way to prevent the grid lines from being displayed also prevents the legend from being displayed. Hopefully this can be fixed at a later date.</li>\n\t\t<li>Restructured and combined some of the options. It should be much easier to deal with now.</li>\n\t\t<li>Added the ability to change the starting point of the pie (still defaults to the top).</li>\n\t\t<li>Modified the default options to show the labels to compensate for the lack of a legend.</li>\n\t\t<li>Modified this page to use a random dataset. <span style=\"color: red\">Note: you may need to refresh the page to see the effects of some of the examples.</span></li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>May 21st, 2009 - Brian Medendorp</i></li>\n\t\t<li>Merged original pie modifications by Sergey Nosenko into the latest SVN version <i>(as of May 15th, 2009)</i> so that it will work with ie8.</li>\n\t\t<li>Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.</li>\n\t\t<li>Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).</li>\n\t\t<li>Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.</li>\n\t\t<li>As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas</li>\n\t\t<li>Added new options \"radiusLimitFactor\" and \"radiusLimit\" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels \"outside\" the pie.</li>\n\t\t<li>Added a new option \"labelHidePercent\" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.</li>\n\t\t<li>Added a new option \"sliceCombinePercent\" that combines all slices smaller than the specified percentage into one larger slice. This is to help make the pie more attractive when there are a number of tiny slices. The options \"sliceCombineColor\" and \"sliceCombineLabel\" have also been added to change the color and name of the new slice if desired.</li>\n\t\t<li>Tested in Firefox (3.0.10, 3.5b4), Internet Explorer (6.0.2900, 7.0.5730, 8.0.6001), Chrome (1.0.154), Opera (9.64), and Safari (3.1.1, 4 beta 5528.16).\n\t</ul>\n\n\t\n </body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/realtime.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>You can update a chart periodically to get a real-time effect\n    by using a timer to insert the new data in the plot and redraw it.</p>\n\n    <p>Time between updates: <input id=\"updateInterval\" type=\"text\" value=\"\" style=\"text-align: right; width:5em\"> milliseconds</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    // we use an inline data source in the example, usually data would\n    // be fetched from a server\n    var data = [], totalPoints = 300;\n    function getRandomData() {\n        if (data.length > 0)\n            data = data.slice(1);\n\n        // do a random walk\n        while (data.length < totalPoints) {\n            var prev = data.length > 0 ? data[data.length - 1] : 50;\n            var y = prev + Math.random() * 10 - 5;\n            if (y < 0)\n                y = 0;\n            if (y > 100)\n                y = 100;\n            data.push(y);\n        }\n\n        // zip the generated y values with the x values\n        var res = [];\n        for (var i = 0; i < data.length; ++i)\n            res.push([i, data[i]])\n        return res;\n    }\n\n    // setup control widget\n    var updateInterval = 30;\n    $(\"#updateInterval\").val(updateInterval).change(function () {\n        var v = $(this).val();\n        if (v && !isNaN(+v)) {\n            updateInterval = +v;\n            if (updateInterval < 1)\n                updateInterval = 1;\n            if (updateInterval > 2000)\n                updateInterval = 2000;\n            $(this).val(\"\" + updateInterval);\n        }\n    });\n\n    // setup plot\n    var options = {\n        series: { shadowSize: 0 }, // drawing is faster without shadows\n        yaxis: { min: 0, max: 100 },\n        xaxis: { show: false }\n    };\n    var plot = $.plot($(\"#placeholder\"), [ getRandomData() ], options);\n\n    function update() {\n        plot.setData([ getRandomData() ]);\n        // since the axes don't change, we don't need to call plot.setupGrid()\n        plot.draw();\n        \n        setTimeout(update, updateInterval);\n    }\n\n    update();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/resize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.resize.js\"></script>\n    <style type=\"text/css\">\n    html, body {\n        height: 100%; /* make the percentage height on placeholder work */\n    }\n    .message {\n        padding-left: 50px;\n        font-size: smaller;\n    }\n    </style>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:80%;height:40%;\"></div>\n\n    <p class=\"message\"></p>\n\n    <p>Sometimes it makes more sense to just let the plot take up the\n    available space. In that case, we need to redraw the plot each\n    time the placeholder changes its size. If you include the resize\n    plugin, this is handled automatically.</p>\n\n    <p>Try resizing the window.</p>\n\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n\n    var placeholder = $(\"#placeholder\");\n    \n    var plot = $.plot(placeholder, [d1, d2, d3]);\n    \n    // the plugin includes a jQuery plugin for adding resize events to\n    // any element, let's just add a callback so we can display the\n    // placeholder size\n    placeholder.resize(function () {\n        $(\".message\").text(\"Placeholder is now \"\n                           + $(this).width() + \"x\" + $(this).height()\n                           + \" pixels\");\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/selection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>1000 kg. CO<sub>2</sub> emissions per year per capita for various countries (source: <a href=\"http://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions_per_capita\">Wikipedia</a>).</p>\n\n    <p>Flot supports selections through the selection plugin.\n       You can enable rectangular selection\n       or one-dimensional selection if the user should only be able to\n       select on one axis. Try left-click and drag on the plot above\n       where selection on the x axis is enabled.</p>\n\n    <p>You selected: <span id=\"selection\"></span></p>\n\n    <p>The plot command returns a plot object you can use to control\n       the selection. Click the buttons below.</p>\n\n    <p><input id=\"clearSelection\" type=\"button\" value=\"Clear selection\" />\n       <input id=\"setSelection\" type=\"button\" value=\"Select year 1994\" /></p>\n\n    <p>Selections are really useful for zooming. Just replot the\n       chart with min and max values for the axes set to the values\n       in the \"plotselected\" event triggered. Enable the checkbox\n       below and select a region again.</p>\n\n    <p><label><input id=\"zoom\" type=\"checkbox\" />Zoom to selection.</label></p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var data = [\n        {\n            label: \"United States\",\n            data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]\n        },\n        {\n            label: \"Russia\", \n            data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]\n        },\n        {\n            label: \"United Kingdom\",\n            data: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]\n        },\n        {\n            label: \"Germany\",\n            data: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]\n        },\n        {\n            label: \"Denmark\",\n \t    data: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]\n        },\n        {\n            label: \"Sweden\",\n            data: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]\n        },\n        {\n            label: \"Norway\",\n            data: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]\n        }\n    ];\n\n    var options = {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        legend: { noColumns: 2 },\n        xaxis: { tickDecimals: 0 },\n        yaxis: { min: 0 },\n        selection: { mode: \"x\" }\n    };\n\n    var placeholder = $(\"#placeholder\");\n\n    placeholder.bind(\"plotselected\", function (event, ranges) {\n        $(\"#selection\").text(ranges.xaxis.from.toFixed(1) + \" to \" + ranges.xaxis.to.toFixed(1));\n\n        var zoom = $(\"#zoom\").attr(\"checked\");\n        if (zoom)\n            plot = $.plot(placeholder, data,\n                          $.extend(true, {}, options, {\n                              xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                          }));\n    });\n\n    placeholder.bind(\"plotunselected\", function (event) {\n        $(\"#selection\").text(\"\");\n    });\n    \n    var plot = $.plot(placeholder, data, options);\n\n    $(\"#clearSelection\").click(function () {\n        plot.clearSelection();\n    });\n\n    $(\"#setSelection\").click(function () {\n        plot.setSelection({ xaxis: { from: 1994, to: 1995 } });\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/setting-options.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>There are plenty of options you can set to control the precise\n    looks of your plot. You can control the ticks on the axes, the\n    legend, the graph type, etc. The idea is that Flot goes to great\n    lengths to provide sensible defaults so that you don't have to\n    customize much for a good result.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.25)\n        d1.push([i, Math.sin(i)]);\n    \n    var d2 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.25)\n        d2.push([i, Math.cos(i)]);\n\n    var d3 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.1)\n        d3.push([i, Math.tan(i)]);\n    \n    $.plot($(\"#placeholder\"), [\n        { label: \"sin(x)\",  data: d1},\n        { label: \"cos(x)\",  data: d2},\n        { label: \"tan(x)\",  data: d3}\n    ], {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        xaxis: {\n            ticks: [0, [Math.PI/2, \"\\u03c0/2\"], [Math.PI, \"\\u03c0\"], [Math.PI * 3/2, \"3\\u03c0/2\"], [Math.PI * 2, \"2\\u03c0\"]]\n        },\n        yaxis: {\n            ticks: 10,\n            min: -2,\n            max: 2\n        },\n        grid: {\n            backgroundColor: { colors: [\"#fff\", \"#eee\"] }\n        }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/stacking.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.stack.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With the stack plugin, you can have Flot stack the\n    series. This is useful if you wish to display both a total and the\n    constituents it is made of. The only requirement is that you provide\n    the input sorted on x.</p>\n\n    <p class=\"stackControls\">\n    <input type=\"button\" value=\"With stacking\">\n    <input type=\"button\" value=\"Without stacking\">\n    </p>\n\n    <p class=\"graphControls\">\n    <input type=\"button\" value=\"Bars\">\n    <input type=\"button\" value=\"Lines\">\n    <input type=\"button\" value=\"Lines with steps\">\n    </p>\n\n<script id=\"source\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d1.push([i, parseInt(Math.random() * 30)]);\n\n    var d2 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d2.push([i, parseInt(Math.random() * 30)]);\n\n    var d3 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d3.push([i, parseInt(Math.random() * 30)]);\n\n    var stack = 0, bars = true, lines = false, steps = false;\n    \n    function plotWithOptions() {\n        $.plot($(\"#placeholder\"), [ d1, d2, d3 ], {\n            series: {\n                stack: stack,\n                lines: { show: lines, fill: true, steps: steps },\n                bars: { show: bars, barWidth: 0.6 }\n            }\n        });\n    }\n\n    plotWithOptions();\n    \n    $(\".stackControls input\").click(function (e) {\n        e.preventDefault();\n        stack = $(this).val() == \"With stacking\" ? true : null;\n        plotWithOptions();\n    });\n    $(\".graphControls input\").click(function (e) {\n        e.preventDefault();\n        bars = $(this).val().indexOf(\"Bars\") != -1;\n        lines = $(this).val().indexOf(\"Lines\") != -1;\n        steps = $(this).val().indexOf(\"steps\") != -1;\n        plotWithOptions();\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/symbols.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.symbol.js\"></script>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>Various point types. Circles are built-in. For other\n    point types, you can define a little callback function to draw the\n    symbol; some common ones are available in the symbol plugin.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    function generate(offset, amplitude) {\n        var res = [];\n        var start = 0, end = 10;\n        for (var i = 0; i <= 50; ++i) {\n            var x = start + i / 50 * (end - start);\n            res.push([x, amplitude * Math.sin(x + offset)]);\n        }\n        return res;\n    }\n\n    var data = [\n        { data: generate(2, 1.8), points: { symbol: \"circle\" } },\n        { data: generate(3, 1.5), points: { symbol: \"square\" } },\n        { data: generate(4, 0.9), points: { symbol: \"diamond\" } },\n        { data: generate(6, 1.4), points: { symbol: \"triangle\" } },\n        { data: generate(7, 1.1), points: { symbol: \"cross\" } }\n    ];\n\n    $.plot($(\"#placeholder\"), data, {\n        series: { points: { show: true, radius: 3 } },\n        grid: { hoverable: true }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/thresholding.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.threshold.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With the threshold plugin, you can apply a specific color to\n    the part of a data series below a threshold. This is can be useful\n    for highlighting negative values, e.g. when displaying net results\n    or what's in stock.</p>\n\n    <p class=\"controls\">\n    <input type=\"button\" value=\"Threshold at 5\">\n    <input type=\"button\" value=\"Threshold at 0\">\n    <input type=\"button\" value=\"Threshold at -2.5\">\n    </p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i <= 60; i += 1)\n        d1.push([i, parseInt(Math.random() * 30 - 10)]);\n\n    function plotWithOptions(t) {\n        $.plot($(\"#placeholder\"), [ {\n            data: d1,\n            color: \"rgb(30, 180, 20)\",\n            threshold: { below: t, color: \"rgb(200, 20, 30)\" },\n            lines: { steps: true }\n        } ]);\n    }\n\n    plotWithOptions(0);\n    \n    $(\".controls input\").click(function (e) {\n        e.preventDefault();\n        var t = parseFloat($(this).val().replace('Threshold at ', ''));\n        plotWithOptions(t);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/time.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Monthly mean atmospheric CO<sub>2</sub> in PPM at Mauna Loa, Hawaii (source: <a href=\"http://www.esrl.noaa.gov/gmd/ccgg/trends/\">NOAA/ESRL</a>).</p>\n\n    <p>If you tell Flot that an axis represents time, the data will\n      be interpreted as timestamps and the ticks adjusted and\n      formatted accordingly.</p>\n\n    <p>Zoom to: <button id=\"whole\">Whole period</button>\n      <button id=\"nineties\">1990-2000</button>\n      <button id=\"ninetynine\">1999</button></p>\n\n    <p>The timestamps must be specified as Javascript timestamps, as\n      milliseconds since January 1, 1970 00:00. This is like Unix\n      timestamps, but in milliseconds instead of seconds (remember to\n      multiply with 1000!).</p>\n\n    <p>As an extra caveat, the timestamps are interpreted according to\n      UTC to avoid having the graph shift with each visitor's local\n      time zone. So you might have to add your local time zone offset\n      to the timestamps or simply pretend that the data was produced\n      in UTC instead of your local time zone.</p>\n\n<script id=\"source\">\n$(function () {\n    var d = [[-373597200000, 315.71], [-370918800000, 317.45], [-368326800000, 317.50], [-363056400000, 315.86], [-360378000000, 314.93], [-357699600000, 313.19], [-352429200000, 313.34], [-349837200000, 314.67], [-347158800000, 315.58], [-344480400000, 316.47], [-342061200000, 316.65], [-339382800000, 317.71], [-336790800000, 318.29], [-334112400000, 318.16], [-331520400000, 316.55], [-328842000000, 314.80], [-326163600000, 313.84], [-323571600000, 313.34], [-320893200000, 314.81], [-318301200000, 315.59], [-315622800000, 316.43], [-312944400000, 316.97], [-310438800000, 317.58], [-307760400000, 319.03], [-305168400000, 320.03], [-302490000000, 319.59], [-299898000000, 318.18], [-297219600000, 315.91], [-294541200000, 314.16], [-291949200000, 313.83], [-289270800000, 315.00], [-286678800000, 316.19], [-284000400000, 316.89], [-281322000000, 317.70], [-278902800000, 318.54], [-276224400000, 319.48], [-273632400000, 320.58], [-270954000000, 319.78], [-268362000000, 318.58], [-265683600000, 316.79], [-263005200000, 314.99], [-260413200000, 315.31], [-257734800000, 316.10], [-255142800000, 317.01], [-252464400000, 317.94], [-249786000000, 318.56], [-247366800000, 319.69], [-244688400000, 320.58], [-242096400000, 321.01], [-239418000000, 320.61], [-236826000000, 319.61], [-234147600000, 317.40], [-231469200000, 316.26], [-228877200000, 315.42], [-226198800000, 316.69], [-223606800000, 317.69], [-220928400000, 318.74], [-218250000000, 319.08], [-215830800000, 319.86], [-213152400000, 321.39], [-210560400000, 322.24], [-207882000000, 321.47], [-205290000000, 319.74], [-202611600000, 317.77], [-199933200000, 316.21], [-197341200000, 315.99], [-194662800000, 317.07], [-192070800000, 318.36], [-189392400000, 319.57], [-178938000000, 322.23], [-176259600000, 321.89], [-173667600000, 320.44], [-170989200000, 318.70], [-168310800000, 316.70], [-165718800000, 316.87], [-163040400000, 317.68], [-160448400000, 318.71], [-157770000000, 319.44], [-155091600000, 320.44], [-152672400000, 320.89], [-149994000000, 322.13], [-147402000000, 322.16], [-144723600000, 321.87], [-142131600000, 321.21], [-139453200000, 318.87], [-136774800000, 317.81], [-134182800000, 317.30], [-131504400000, 318.87], [-128912400000, 319.42], [-126234000000, 320.62], [-123555600000, 321.59], [-121136400000, 322.39], [-118458000000, 323.70], [-115866000000, 324.07], [-113187600000, 323.75], [-110595600000, 322.40], [-107917200000, 320.37], [-105238800000, 318.64], [-102646800000, 318.10], [-99968400000, 319.79], [-97376400000, 321.03], [-94698000000, 322.33], [-92019600000, 322.50], [-89600400000, 323.04], [-86922000000, 324.42], [-84330000000, 325.00], [-81651600000, 324.09], [-79059600000, 322.55], [-76381200000, 320.92], [-73702800000, 319.26], [-71110800000, 319.39], [-68432400000, 320.72], [-65840400000, 321.96], [-63162000000, 322.57], [-60483600000, 323.15], [-57978000000, 323.89], [-55299600000, 325.02], [-52707600000, 325.57], [-50029200000, 325.36], [-47437200000, 324.14], [-44758800000, 322.11], [-42080400000, 320.33], [-39488400000, 320.25], [-36810000000, 321.32], [-34218000000, 322.90], [-31539600000, 324.00], [-28861200000, 324.42], [-26442000000, 325.64], [-23763600000, 326.66], [-21171600000, 327.38], [-18493200000, 326.70], [-15901200000, 325.89], [-13222800000, 323.67], [-10544400000, 322.38], [-7952400000, 321.78], [-5274000000, 322.85], [-2682000000, 324.12], [-3600000, 325.06], [2674800000, 325.98], [5094000000, 326.93], [7772400000, 328.13], [10364400000, 328.07], [13042800000, 327.66], [15634800000, 326.35], [18313200000, 324.69], [20991600000, 323.10], [23583600000, 323.07], [26262000000, 324.01], [28854000000, 325.13], [31532400000, 326.17], [34210800000, 326.68], [36630000000, 327.18], [39308400000, 327.78], [41900400000, 328.92], [44578800000, 328.57], [47170800000, 327.37], [49849200000, 325.43], [52527600000, 323.36], [55119600000, 323.56], [57798000000, 324.80], [60390000000, 326.01], [63068400000, 326.77], [65746800000, 327.63], [68252400000, 327.75], [70930800000, 329.72], [73522800000, 330.07], [76201200000, 329.09], [78793200000, 328.05], [81471600000, 326.32], [84150000000, 324.84], [86742000000, 325.20], [89420400000, 326.50], [92012400000, 327.55], [94690800000, 328.54], [97369200000, 329.56], [99788400000, 330.30], [102466800000, 331.50], [105058800000, 332.48], [107737200000, 332.07], [110329200000, 330.87], [113007600000, 329.31], [115686000000, 327.51], [118278000000, 327.18], [120956400000, 328.16], [123548400000, 328.64], [126226800000, 329.35], [128905200000, 330.71], [131324400000, 331.48], [134002800000, 332.65], [136594800000, 333.16], [139273200000, 332.06], [141865200000, 330.99], [144543600000, 329.17], [147222000000, 327.41], [149814000000, 327.20], [152492400000, 328.33], [155084400000, 329.50], [157762800000, 330.68], [160441200000, 331.41], [162860400000, 331.85], [165538800000, 333.29], [168130800000, 333.91], [170809200000, 333.40], [173401200000, 331.78], [176079600000, 329.88], [178758000000, 328.57], [181350000000, 328.46], [184028400000, 329.26], [189298800000, 331.71], [191977200000, 332.76], [194482800000, 333.48], [197161200000, 334.78], [199753200000, 334.78], [202431600000, 334.17], [205023600000, 332.78], [207702000000, 330.64], [210380400000, 328.95], [212972400000, 328.77], [215650800000, 330.23], [218242800000, 331.69], [220921200000, 332.70], [223599600000, 333.24], [226018800000, 334.96], [228697200000, 336.04], [231289200000, 336.82], [233967600000, 336.13], [236559600000, 334.73], [239238000000, 332.52], [241916400000, 331.19], [244508400000, 331.19], [247186800000, 332.35], [249778800000, 333.47], [252457200000, 335.11], [255135600000, 335.26], [257554800000, 336.60], [260233200000, 337.77], [262825200000, 338.00], [265503600000, 337.99], [268095600000, 336.48], [270774000000, 334.37], [273452400000, 332.27], [276044400000, 332.41], [278722800000, 333.76], [281314800000, 334.83], [283993200000, 336.21], [286671600000, 336.64], [289090800000, 338.12], [291769200000, 339.02], [294361200000, 339.02], [297039600000, 339.20], [299631600000, 337.58], [302310000000, 335.55], [304988400000, 333.89], [307580400000, 334.14], [310258800000, 335.26], [312850800000, 336.71], [315529200000, 337.81], [318207600000, 338.29], [320713200000, 340.04], [323391600000, 340.86], [325980000000, 341.47], [328658400000, 341.26], [331250400000, 339.29], [333928800000, 337.60], [336607200000, 336.12], [339202800000, 336.08], [341881200000, 337.22], [344473200000, 338.34], [347151600000, 339.36], [349830000000, 340.51], [352249200000, 341.57], [354924000000, 342.56], [357516000000, 343.01], [360194400000, 342.47], [362786400000, 340.71], [365464800000, 338.52], [368143200000, 336.96], [370738800000, 337.13], [373417200000, 338.58], [376009200000, 339.89], [378687600000, 340.93], [381366000000, 341.69], [383785200000, 342.69], [389052000000, 344.30], [391730400000, 343.43], [394322400000, 341.88], [397000800000, 339.89], [399679200000, 337.95], [402274800000, 338.10], [404953200000, 339.27], [407545200000, 340.67], [410223600000, 341.42], [412902000000, 342.68], [415321200000, 343.46], [417996000000, 345.10], [420588000000, 345.76], [423266400000, 345.36], [425858400000, 343.91], [428536800000, 342.05], [431215200000, 340.00], [433810800000, 340.12], [436489200000, 341.33], [439081200000, 342.94], [441759600000, 343.87], [444438000000, 344.60], [446943600000, 345.20], [452210400000, 347.36], [454888800000, 346.74], [457480800000, 345.41], [460159200000, 343.01], [462837600000, 341.23], [465433200000, 341.52], [468111600000, 342.86], [470703600000, 344.41], [473382000000, 345.09], [476060400000, 345.89], [478479600000, 347.49], [481154400000, 348.00], [483746400000, 348.75], [486424800000, 348.19], [489016800000, 346.54], [491695200000, 344.63], [494373600000, 343.03], [496969200000, 342.92], [499647600000, 344.24], [502239600000, 345.62], [504918000000, 346.43], [507596400000, 346.94], [510015600000, 347.88], [512690400000, 349.57], [515282400000, 350.35], [517960800000, 349.72], [520552800000, 347.78], [523231200000, 345.86], [525909600000, 344.84], [528505200000, 344.32], [531183600000, 345.67], [533775600000, 346.88], [536454000000, 348.19], [539132400000, 348.55], [541551600000, 349.52], [544226400000, 351.12], [546818400000, 351.84], [549496800000, 351.49], [552088800000, 349.82], [554767200000, 347.63], [557445600000, 346.38], [560041200000, 346.49], [562719600000, 347.75], [565311600000, 349.03], [567990000000, 350.20], [570668400000, 351.61], [573174000000, 352.22], [575848800000, 353.53], [578440800000, 354.14], [581119200000, 353.62], [583711200000, 352.53], [586389600000, 350.41], [589068000000, 348.84], [591663600000, 348.94], [594342000000, 350.04], [596934000000, 351.29], [599612400000, 352.72], [602290800000, 353.10], [604710000000, 353.65], [607384800000, 355.43], [609976800000, 355.70], [612655200000, 355.11], [615247200000, 353.79], [617925600000, 351.42], [620604000000, 349.81], [623199600000, 350.11], [625878000000, 351.26], [628470000000, 352.63], [631148400000, 353.64], [633826800000, 354.72], [636246000000, 355.49], [638920800000, 356.09], [641512800000, 357.08], [644191200000, 356.11], [646783200000, 354.70], [649461600000, 352.68], [652140000000, 351.05], [654735600000, 351.36], [657414000000, 352.81], [660006000000, 354.22], [662684400000, 354.85], [665362800000, 355.66], [667782000000, 357.04], [670456800000, 358.40], [673048800000, 359.00], [675727200000, 357.99], [678319200000, 356.00], [680997600000, 353.78], [683676000000, 352.20], [686271600000, 352.22], [688950000000, 353.70], [691542000000, 354.98], [694220400000, 356.09], [696898800000, 356.85], [699404400000, 357.73], [702079200000, 358.91], [704671200000, 359.45], [707349600000, 359.19], [709941600000, 356.72], [712620000000, 354.79], [715298400000, 352.79], [717894000000, 353.20], [720572400000, 354.15], [723164400000, 355.39], [725842800000, 356.77], [728521200000, 357.17], [730940400000, 358.26], [733615200000, 359.16], [736207200000, 360.07], [738885600000, 359.41], [741477600000, 357.44], [744156000000, 355.30], [746834400000, 353.87], [749430000000, 354.04], [752108400000, 355.27], [754700400000, 356.70], [757378800000, 358.00], [760057200000, 358.81], [762476400000, 359.68], [765151200000, 361.13], [767743200000, 361.48], [770421600000, 360.60], [773013600000, 359.20], [775692000000, 357.23], [778370400000, 355.42], [780966000000, 355.89], [783644400000, 357.41], [786236400000, 358.74], [788914800000, 359.73], [791593200000, 360.61], [794012400000, 361.58], [796687200000, 363.05], [799279200000, 363.62], [801957600000, 363.03], [804549600000, 361.55], [807228000000, 358.94], [809906400000, 357.93], [812502000000, 357.80], [815180400000, 359.22], [817772400000, 360.44], [820450800000, 361.83], [823129200000, 362.95], [825634800000, 363.91], [828309600000, 364.28], [830901600000, 364.94], [833580000000, 364.70], [836172000000, 363.31], [838850400000, 361.15], [841528800000, 359.40], [844120800000, 359.34], [846802800000, 360.62], [849394800000, 361.96], [852073200000, 362.81], [854751600000, 363.87], [857170800000, 364.25], [859845600000, 366.02], [862437600000, 366.46], [865116000000, 365.32], [867708000000, 364.07], [870386400000, 361.95], [873064800000, 360.06], [875656800000, 360.49], [878338800000, 362.19], [880930800000, 364.12], [883609200000, 364.99], [886287600000, 365.82], [888706800000, 366.95], [891381600000, 368.42], [893973600000, 369.33], [896652000000, 368.78], [899244000000, 367.59], [901922400000, 365.84], [904600800000, 363.83], [907192800000, 364.18], [909874800000, 365.34], [912466800000, 366.93], [915145200000, 367.94], [917823600000, 368.82], [920242800000, 369.46], [922917600000, 370.77], [925509600000, 370.66], [928188000000, 370.10], [930780000000, 369.08], [933458400000, 366.66], [936136800000, 364.60], [938728800000, 365.17], [941410800000, 366.51], [944002800000, 367.89], [946681200000, 369.04], [949359600000, 369.35], [951865200000, 370.38], [954540000000, 371.63], [957132000000, 371.32], [959810400000, 371.53], [962402400000, 369.75], [965080800000, 368.23], [967759200000, 366.87], [970351200000, 366.94], [973033200000, 368.27], [975625200000, 369.64], [978303600000, 370.46], [980982000000, 371.44], [983401200000, 372.37], [986076000000, 373.33], [988668000000, 373.77], [991346400000, 373.09], [993938400000, 371.51], [996616800000, 369.55], [999295200000, 368.12], [1001887200000, 368.38], [1004569200000, 369.66], [1007161200000, 371.11], [1009839600000, 372.36], [1012518000000, 373.09], [1014937200000, 373.81], [1017612000000, 374.93], [1020204000000, 375.58], [1022882400000, 375.44], [1025474400000, 373.86], [1028152800000, 371.77], [1030831200000, 370.73], [1033423200000, 370.50], [1036105200000, 372.18], [1038697200000, 373.70], [1041375600000, 374.92], [1044054000000, 375.62], [1046473200000, 376.51], [1049148000000, 377.75], [1051740000000, 378.54], [1054418400000, 378.20], [1057010400000, 376.68], [1059688800000, 374.43], [1062367200000, 373.11], [1064959200000, 373.10], [1067641200000, 374.77], [1070233200000, 375.97], [1072911600000, 377.03], [1075590000000, 377.87], [1078095600000, 378.88], [1080770400000, 380.42], [1083362400000, 380.62], [1086040800000, 379.70], [1088632800000, 377.43], [1091311200000, 376.32], [1093989600000, 374.19], [1096581600000, 374.47], [1099263600000, 376.15], [1101855600000, 377.51], [1104534000000, 378.43], [1107212400000, 379.70], [1109631600000, 380.92], [1112306400000, 382.18], [1114898400000, 382.45], [1117576800000, 382.14], [1120168800000, 380.60], [1122847200000, 378.64], [1125525600000, 376.73], [1128117600000, 376.84], [1130799600000, 378.29], [1133391600000, 380.06], [1136070000000, 381.40], [1138748400000, 382.20], [1141167600000, 382.66], [1143842400000, 384.69], [1146434400000, 384.94], [1149112800000, 384.01], [1151704800000, 382.14], [1154383200000, 380.31], [1157061600000, 378.81], [1159653600000, 379.03], [1162335600000, 380.17], [1164927600000, 381.85], [1167606000000, 382.94], [1170284400000, 383.86], [1172703600000, 384.49], [1175378400000, 386.37], [1177970400000, 386.54], [1180648800000, 385.98], [1183240800000, 384.36], [1185919200000, 381.85], [1188597600000, 380.74], [1191189600000, 381.15], [1193871600000, 382.38], [1196463600000, 383.94], [1199142000000, 385.44]]; \n\n    $.plot($(\"#placeholder\"), [d], { xaxis: { mode: \"time\" } });\n\n    $(\"#whole\").click(function () {\n        $.plot($(\"#placeholder\"), [d], { xaxis: { mode: \"time\" } });\n    });\n\n    $(\"#nineties\").click(function () {\n        $.plot($(\"#placeholder\"), [d], {\n            xaxis: {\n                mode: \"time\",\n                min: (new Date(1990, 1, 1)).getTime(),\n                max: (new Date(2000, 1, 1)).getTime()\n            }\n        });\n    });\n\n    $(\"#ninetynine\").click(function () {\n        $.plot($(\"#placeholder\"), [d], {\n            xaxis: {\n                mode: \"time\",\n                minTickSize: [1, \"month\"],\n                min: (new Date(1999, 1, 1)).getTime(),\n                max: (new Date(2000, 1, 1)).getTime()\n            }\n        });\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/tracking.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.crosshair.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>You can add crosshairs that'll track the mouse position, either\n    on both axes or as here on only one.</p>\n\n    <p>If you combine it with listening on hover events, you can use\n    it to track the intersection on the curves by interpolating\n    the data points (look at the legend).</p>\n\n    <p id=\"hoverdata\"></p>\n\n<script type=\"text/javascript\">\nvar plot;\n$(function () {\n    var sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.1) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    plot = $.plot($(\"#placeholder\"),\n                      [ { data: sin, label: \"sin(x) = -0.00\"},\n                        { data: cos, label: \"cos(x) = -0.00\" } ], {\n                            series: {\n                                lines: { show: true }\n                            },\n                            crosshair: { mode: \"x\" },\n                            grid: { hoverable: true, autoHighlight: false },\n                            yaxis: { min: -1.2, max: 1.2 }\n                        });\n    var legends = $(\"#placeholder .legendLabel\");\n    legends.each(function () {\n        // fix the widths so they don't jump around\n        $(this).css('width', $(this).width());\n    });\n\n    var updateLegendTimeout = null;\n    var latestPosition = null;\n    \n    function updateLegend() {\n        updateLegendTimeout = null;\n        \n        var pos = latestPosition;\n        \n        var axes = plot.getAxes();\n        if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||\n            pos.y < axes.yaxis.min || pos.y > axes.yaxis.max)\n            return;\n\n        var i, j, dataset = plot.getData();\n        for (i = 0; i < dataset.length; ++i) {\n            var series = dataset[i];\n\n            // find the nearest points, x-wise\n            for (j = 0; j < series.data.length; ++j)\n                if (series.data[j][0] > pos.x)\n                    break;\n            \n            // now interpolate\n            var y, p1 = series.data[j - 1], p2 = series.data[j];\n            if (p1 == null)\n                y = p2[1];\n            else if (p2 == null)\n                y = p1[1];\n            else\n                y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);\n\n            legends.eq(i).text(series.label.replace(/=.*/, \"= \" + y.toFixed(2)));\n        }\n    }\n    \n    $(\"#placeholder\").bind(\"plothover\",  function (event, pos, item) {\n        latestPosition = pos;\n        if (!updateLegendTimeout)\n            updateLegendTimeout = setTimeout(updateLegend, 50);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/turning-series.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Here is an example with real data: military budgets for\n        various countries in constant (2005) million US dollars (source: <a href=\"http://www.sipri.org/\">SIPRI</a>).</p>\n\n    <p>Since all data is available client-side, it's pretty easy to\n       make the plot interactive. Try turning countries on/off with the\n       checkboxes below.</p>\n\n    <p id=\"choices\">Show:</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var datasets = {\n        \"usa\": {\n            label: \"USA\",\n            data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]\n        },        \n        \"russia\": {\n            label: \"Russia\",\n            data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]\n        },\n        \"uk\": {\n            label: \"UK\",\n            data: [[1988, 62982], [1989, 62027], [1990, 60696], [1991, 62348], [1992, 58560], [1993, 56393], [1994, 54579], [1995, 50818], [1996, 50554], [1997, 48276], [1998, 47691], [1999, 47529], [2000, 47778], [2001, 48760], [2002, 50949], [2003, 57452], [2004, 60234], [2005, 60076], [2006, 59213]]\n        },\n        \"germany\": {\n            label: \"Germany\",\n            data: [[1988, 55627], [1989, 55475], [1990, 58464], [1991, 55134], [1992, 52436], [1993, 47139], [1994, 43962], [1995, 43238], [1996, 42395], [1997, 40854], [1998, 40993], [1999, 41822], [2000, 41147], [2001, 40474], [2002, 40604], [2003, 40044], [2004, 38816], [2005, 38060], [2006, 36984]]\n        },\n        \"denmark\": {\n            label: \"Denmark\",\n            data: [[1988, 3813], [1989, 3719], [1990, 3722], [1991, 3789], [1992, 3720], [1993, 3730], [1994, 3636], [1995, 3598], [1996, 3610], [1997, 3655], [1998, 3695], [1999, 3673], [2000, 3553], [2001, 3774], [2002, 3728], [2003, 3618], [2004, 3638], [2005, 3467], [2006, 3770]]\n        },\n        \"sweden\": {\n            label: \"Sweden\",\n            data: [[1988, 6402], [1989, 6474], [1990, 6605], [1991, 6209], [1992, 6035], [1993, 6020], [1994, 6000], [1995, 6018], [1996, 3958], [1997, 5780], [1998, 5954], [1999, 6178], [2000, 6411], [2001, 5993], [2002, 5833], [2003, 5791], [2004, 5450], [2005, 5521], [2006, 5271]]\n        },\n        \"norway\": {\n            label: \"Norway\",\n            data: [[1988, 4382], [1989, 4498], [1990, 4535], [1991, 4398], [1992, 4766], [1993, 4441], [1994, 4670], [1995, 4217], [1996, 4275], [1997, 4203], [1998, 4482], [1999, 4506], [2000, 4358], [2001, 4385], [2002, 5269], [2003, 5066], [2004, 5194], [2005, 4887], [2006, 4891]]\n        }\n    };\n\n    // hard-code color indices to prevent them from shifting as\n    // countries are turned on/off\n    var i = 0;\n    $.each(datasets, function(key, val) {\n        val.color = i;\n        ++i;\n    });\n    \n    // insert checkboxes \n    var choiceContainer = $(\"#choices\");\n    $.each(datasets, function(key, val) {\n        choiceContainer.append('<br/><input type=\"checkbox\" name=\"' + key +\n                               '\" checked=\"checked\" id=\"id' + key + '\">' +\n                               '<label for=\"id' + key + '\">'\n                                + val.label + '</label>');\n    });\n    choiceContainer.find(\"input\").click(plotAccordingToChoices);\n\n    \n    function plotAccordingToChoices() {\n        var data = [];\n\n        choiceContainer.find(\"input:checked\").each(function () {\n            var key = $(this).attr(\"name\");\n            if (key && datasets[key])\n                data.push(datasets[key]);\n        });\n\n        if (data.length > 0)\n            $.plot($(\"#placeholder\"), data, {\n                yaxis: { min: 0 },\n                xaxis: { tickDecimals: 0 }\n            });\n    }\n\n    plotAccordingToChoices();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/visitors.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Visitors per day to the Flot homepage. Weekends are colored. Try zooming.\n      The plot below shows an overview.</p>\n\n    <div id=\"overview\" style=\"margin-left:50px;margin-top:20px;width:400px;height:50px\"></div>\n\n<script id=\"source\">\n$(function () {\n    var d = [[1196463600000, 0], [1196550000000, 0], [1196636400000, 0], [1196722800000, 77], [1196809200000, 3636], [1196895600000, 3575], [1196982000000, 2736], [1197068400000, 1086], [1197154800000, 676], [1197241200000, 1205], [1197327600000, 906], [1197414000000, 710], [1197500400000, 639], [1197586800000, 540], [1197673200000, 435], [1197759600000, 301], [1197846000000, 575], [1197932400000, 481], [1198018800000, 591], [1198105200000, 608], [1198191600000, 459], [1198278000000, 234], [1198364400000, 1352], [1198450800000, 686], [1198537200000, 279], [1198623600000, 449], [1198710000000, 468], [1198796400000, 392], [1198882800000, 282], [1198969200000, 208], [1199055600000, 229], [1199142000000, 177], [1199228400000, 374], [1199314800000, 436], [1199401200000, 404], [1199487600000, 253], [1199574000000, 218], [1199660400000, 476], [1199746800000, 462], [1199833200000, 448], [1199919600000, 442], [1200006000000, 403], [1200092400000, 204], [1200178800000, 194], [1200265200000, 327], [1200351600000, 374], [1200438000000, 507], [1200524400000, 546], [1200610800000, 482], [1200697200000, 283], [1200783600000, 221], [1200870000000, 483], [1200956400000, 523], [1201042800000, 528], [1201129200000, 483], [1201215600000, 452], [1201302000000, 270], [1201388400000, 222], [1201474800000, 439], [1201561200000, 559], [1201647600000, 521], [1201734000000, 477], [1201820400000, 442], [1201906800000, 252], [1201993200000, 236], [1202079600000, 525], [1202166000000, 477], [1202252400000, 386], [1202338800000, 409], [1202425200000, 408], [1202511600000, 237], [1202598000000, 193], [1202684400000, 357], [1202770800000, 414], [1202857200000, 393], [1202943600000, 353], [1203030000000, 364], [1203116400000, 215], [1203202800000, 214], [1203289200000, 356], [1203375600000, 399], [1203462000000, 334], [1203548400000, 348], [1203634800000, 243], [1203721200000, 126], [1203807600000, 157], [1203894000000, 288]];\n\n    // first correct the timestamps - they are recorded as the daily\n    // midnights in UTC+0100, but Flot always displays dates in UTC\n    // so we have to add one hour to hit the midnights in the plot\n    for (var i = 0; i < d.length; ++i)\n      d[i][0] += 60 * 60 * 1000;\n\n    // helper for returning the weekends in a period\n    function weekendAreas(axes) {\n        var markings = [];\n        var d = new Date(axes.xaxis.min);\n        // go to the first Saturday\n        d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))\n        d.setUTCSeconds(0);\n        d.setUTCMinutes(0);\n        d.setUTCHours(0);\n        var i = d.getTime();\n        do {\n            // when we don't set yaxis, the rectangle automatically\n            // extends to infinity upwards and downwards\n            markings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } });\n            i += 7 * 24 * 60 * 60 * 1000;\n        } while (i < axes.xaxis.max);\n\n        return markings;\n    }\n    \n    var options = {\n        xaxis: { mode: \"time\", tickLength: 5 },\n        selection: { mode: \"x\" },\n        grid: { markings: weekendAreas }\n    };\n    \n    var plot = $.plot($(\"#placeholder\"), [d], options);\n    \n    var overview = $.plot($(\"#overview\"), [d], {\n        series: {\n            lines: { show: true, lineWidth: 1 },\n            shadowSize: 0\n        },\n        xaxis: { ticks: [], mode: \"time\" },\n        yaxis: { ticks: [], min: 0, autoscaleMargin: 0.1 },\n        selection: { mode: \"x\" }\n    });\n\n    // now connect the two\n    \n    $(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n        // do the zooming\n        plot = $.plot($(\"#placeholder\"), [d],\n                      $.extend(true, {}, options, {\n                          xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                      }));\n\n        // don't fire event on the overview to prevent eternal loop\n        overview.setSelection(ranges, true);\n    });\n    \n    $(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n        plot.setSelection(ranges);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/examples/zooming.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div style=\"float:left\">\n      <div id=\"placeholder\" style=\"width:500px;height:300px\"></div>\n    </div>\n    \n    <div id=\"miniature\" style=\"float:left;margin-left:20px\">\n      <div id=\"overview\" style=\"width:166px;height:100px\"></div>\n\n      <p id=\"overviewLegend\" style=\"margin-left:10px\"></p>\n    </div>\n\n    <p style=\"clear:left\">The selection support makes it easy to\n    construct flexible zooming schemes. With a few lines of code, the\n    small overview plot to the right has been connected to the large\n    plot. Try selecting a rectangle on either of them.</p>\n\n<script id=\"source\">\n$(function () {\n    // setup plot\n    function getData(x1, x2) {\n        var d = [];\n        for (var i = 0; i <= 100; ++i) {\n            var x = x1 + i * (x2 - x1) / 100;\n            d.push([x, Math.sin(x * Math.sin(x))]);\n        }\n\n        return [\n            { label: \"sin(x sin(x))\", data: d }\n        ];\n    }\n\n    var options = {\n        legend: { show: false },\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        yaxis: { ticks: 10 },\n        selection: { mode: \"xy\" }\n    };\n\n    var startData = getData(0, 3 * Math.PI);\n    \n    var plot = $.plot($(\"#placeholder\"), startData, options);\n\n    // setup overview\n    var overview = $.plot($(\"#overview\"), startData, {\n        legend: { show: true, container: $(\"#overviewLegend\") },\n        series: {\n            lines: { show: true, lineWidth: 1 },\n            shadowSize: 0\n        },\n        xaxis: { ticks: 4 },\n        yaxis: { ticks: 3, min: -2, max: 2 },\n        grid: { color: \"#999\" },\n        selection: { mode: \"xy\" }\n    });\n\n    // now connect the two\n    \n    $(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n        // clamp the zooming to prevent eternal zoom\n        if (ranges.xaxis.to - ranges.xaxis.from < 0.00001)\n            ranges.xaxis.to = ranges.xaxis.from + 0.00001;\n        if (ranges.yaxis.to - ranges.yaxis.from < 0.00001)\n            ranges.yaxis.to = ranges.yaxis.from + 0.00001;\n        \n        // do the zooming\n        plot = $.plot($(\"#placeholder\"), getData(ranges.xaxis.from, ranges.xaxis.to),\n                      $.extend(true, {}, options, {\n                          xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },\n                          yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }\n                      }));\n        \n        // don't fire event on the overview to prevent eternal loop\n        overview.setSelection(ranges, true);\n    });\n    $(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n        plot.setSelection(ranges);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns only support repeat.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Filling very large shapes (above 5000 points) is buggy.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  function encodeHtmlAttribute(s) {\n    return String(s).replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n  }\n\n  function addNamespacesAndStylesheet(doc) {\n    // create xmlns\n    if (!doc.namespaces['g_vml_']) {\n      doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                         '#default#VML');\n\n    }\n    if (!doc.namespaces['g_o_']) {\n      doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                         '#default#VML');\n    }\n\n    // Setup default CSS.  Only add one style sheet per document\n    if (!doc.styleSheets['ex_canvas_']) {\n      var ss = doc.createStyleSheet();\n      ss.owningElement.id = 'ex_canvas_';\n      ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n          // default size is 300x150 in Gecko and Opera\n          'text-align:left;width:300px;height:150px}';\n    }\n  }\n\n  // Add namespaces and stylesheet at startup.\n  addNamespacesAndStylesheet(document);\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n        el.getContext = getContext;\n\n        // Add namespaces and stylesheet to document of the element.\n        addNamespacesAndStylesheet(el.ownerDocument);\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.getContext().clearRect();\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        // In IE8 this does not trigger onresize.\n        el.firstChild.style.width =  el.clientWidth + 'px';\n        break;\n      case 'height':\n        el.getContext().clearRect();\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.firstChild.style.height = el.clientHeight + 'px';\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var decToHex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      decToHex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.font          = o1.font;\n    o2.textAlign     = o1.textAlign;\n    o2.textBaseline  = o1.textBaseline;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  var colorData = {\n    aliceblue: '#F0F8FF',\n    antiquewhite: '#FAEBD7',\n    aquamarine: '#7FFFD4',\n    azure: '#F0FFFF',\n    beige: '#F5F5DC',\n    bisque: '#FFE4C4',\n    black: '#000000',\n    blanchedalmond: '#FFEBCD',\n    blueviolet: '#8A2BE2',\n    brown: '#A52A2A',\n    burlywood: '#DEB887',\n    cadetblue: '#5F9EA0',\n    chartreuse: '#7FFF00',\n    chocolate: '#D2691E',\n    coral: '#FF7F50',\n    cornflowerblue: '#6495ED',\n    cornsilk: '#FFF8DC',\n    crimson: '#DC143C',\n    cyan: '#00FFFF',\n    darkblue: '#00008B',\n    darkcyan: '#008B8B',\n    darkgoldenrod: '#B8860B',\n    darkgray: '#A9A9A9',\n    darkgreen: '#006400',\n    darkgrey: '#A9A9A9',\n    darkkhaki: '#BDB76B',\n    darkmagenta: '#8B008B',\n    darkolivegreen: '#556B2F',\n    darkorange: '#FF8C00',\n    darkorchid: '#9932CC',\n    darkred: '#8B0000',\n    darksalmon: '#E9967A',\n    darkseagreen: '#8FBC8F',\n    darkslateblue: '#483D8B',\n    darkslategray: '#2F4F4F',\n    darkslategrey: '#2F4F4F',\n    darkturquoise: '#00CED1',\n    darkviolet: '#9400D3',\n    deeppink: '#FF1493',\n    deepskyblue: '#00BFFF',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1E90FF',\n    firebrick: '#B22222',\n    floralwhite: '#FFFAF0',\n    forestgreen: '#228B22',\n    gainsboro: '#DCDCDC',\n    ghostwhite: '#F8F8FF',\n    gold: '#FFD700',\n    goldenrod: '#DAA520',\n    grey: '#808080',\n    greenyellow: '#ADFF2F',\n    honeydew: '#F0FFF0',\n    hotpink: '#FF69B4',\n    indianred: '#CD5C5C',\n    indigo: '#4B0082',\n    ivory: '#FFFFF0',\n    khaki: '#F0E68C',\n    lavender: '#E6E6FA',\n    lavenderblush: '#FFF0F5',\n    lawngreen: '#7CFC00',\n    lemonchiffon: '#FFFACD',\n    lightblue: '#ADD8E6',\n    lightcoral: '#F08080',\n    lightcyan: '#E0FFFF',\n    lightgoldenrodyellow: '#FAFAD2',\n    lightgreen: '#90EE90',\n    lightgrey: '#D3D3D3',\n    lightpink: '#FFB6C1',\n    lightsalmon: '#FFA07A',\n    lightseagreen: '#20B2AA',\n    lightskyblue: '#87CEFA',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#B0C4DE',\n    lightyellow: '#FFFFE0',\n    limegreen: '#32CD32',\n    linen: '#FAF0E6',\n    magenta: '#FF00FF',\n    mediumaquamarine: '#66CDAA',\n    mediumblue: '#0000CD',\n    mediumorchid: '#BA55D3',\n    mediumpurple: '#9370DB',\n    mediumseagreen: '#3CB371',\n    mediumslateblue: '#7B68EE',\n    mediumspringgreen: '#00FA9A',\n    mediumturquoise: '#48D1CC',\n    mediumvioletred: '#C71585',\n    midnightblue: '#191970',\n    mintcream: '#F5FFFA',\n    mistyrose: '#FFE4E1',\n    moccasin: '#FFE4B5',\n    navajowhite: '#FFDEAD',\n    oldlace: '#FDF5E6',\n    olivedrab: '#6B8E23',\n    orange: '#FFA500',\n    orangered: '#FF4500',\n    orchid: '#DA70D6',\n    palegoldenrod: '#EEE8AA',\n    palegreen: '#98FB98',\n    paleturquoise: '#AFEEEE',\n    palevioletred: '#DB7093',\n    papayawhip: '#FFEFD5',\n    peachpuff: '#FFDAB9',\n    peru: '#CD853F',\n    pink: '#FFC0CB',\n    plum: '#DDA0DD',\n    powderblue: '#B0E0E6',\n    rosybrown: '#BC8F8F',\n    royalblue: '#4169E1',\n    saddlebrown: '#8B4513',\n    salmon: '#FA8072',\n    sandybrown: '#F4A460',\n    seagreen: '#2E8B57',\n    seashell: '#FFF5EE',\n    sienna: '#A0522D',\n    skyblue: '#87CEEB',\n    slateblue: '#6A5ACD',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#FFFAFA',\n    springgreen: '#00FF7F',\n    steelblue: '#4682B4',\n    tan: '#D2B48C',\n    thistle: '#D8BFD8',\n    tomato: '#FF6347',\n    turquoise: '#40E0D0',\n    violet: '#EE82EE',\n    wheat: '#F5DEB3',\n    whitesmoke: '#F5F5F5',\n    yellowgreen: '#9ACD32'\n  };\n\n\n  function getRgbHslContent(styleString) {\n    var start = styleString.indexOf('(', 3);\n    var end = styleString.indexOf(')', start + 1);\n    var parts = styleString.substring(start + 1, end).split(',');\n    // add alpha if needed\n    if (parts.length == 4 && styleString.substr(3, 1) == 'a') {\n      alpha = Number(parts[3]);\n    } else {\n      parts[3] = 1;\n    }\n    return parts;\n  }\n\n  function percent(s) {\n    return parseFloat(s) / 100;\n  }\n\n  function clamp(v, min, max) {\n    return Math.min(max, Math.max(min, v));\n  }\n\n  function hslToRgb(parts){\n    var r, g, b;\n    h = parseFloat(parts[0]) / 360 % 360;\n    if (h < 0)\n      h++;\n    s = clamp(percent(parts[1]), 0, 1);\n    l = clamp(percent(parts[2]), 0, 1);\n    if (s == 0) {\n      r = g = b = l; // achromatic\n    } else {\n      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      var p = 2 * l - q;\n      r = hueToRgb(p, q, h + 1 / 3);\n      g = hueToRgb(p, q, h);\n      b = hueToRgb(p, q, h - 1 / 3);\n    }\n\n    return '#' + decToHex[Math.floor(r * 255)] +\n        decToHex[Math.floor(g * 255)] +\n        decToHex[Math.floor(b * 255)];\n  }\n\n  function hueToRgb(m1, m2, h) {\n    if (h < 0)\n      h++;\n    if (h > 1)\n      h--;\n\n    if (6 * h < 1)\n      return m1 + (m2 - m1) * 6 * h;\n    else if (2 * h < 1)\n      return m2;\n    else if (3 * h < 2)\n      return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    else\n      return m1;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.charAt(0) == '#') {\n      str = styleString;\n    } else if (/^rgb/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      var str = '#', n;\n      for (var i = 0; i < 3; i++) {\n        if (parts[i].indexOf('%') != -1) {\n          n = Math.floor(percent(parts[i]) * 255);\n        } else {\n          n = Number(parts[i]);\n        }\n        str += decToHex[clamp(n, 0, 255)];\n      }\n      alpha = parts[3];\n    } else if (/^hsl/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      str = hslToRgb(parts);\n      alpha = parts[3];\n    } else {\n      str = colorData[styleString] || styleString;\n    }\n    return {color: str, alpha: alpha};\n  }\n\n  var DEFAULT_STYLE = {\n    style: 'normal',\n    variant: 'normal',\n    weight: 'normal',\n    size: 10,\n    family: 'sans-serif'\n  };\n\n  // Internal text style cache\n  var fontStyleCache = {};\n\n  function processFontStyle(styleString) {\n    if (fontStyleCache[styleString]) {\n      return fontStyleCache[styleString];\n    }\n\n    var el = document.createElement('div');\n    var style = el.style;\n    try {\n      style.font = styleString;\n    } catch (ex) {\n      // Ignore failures to set to invalid font.\n    }\n\n    return fontStyleCache[styleString] = {\n      style: style.fontStyle || DEFAULT_STYLE.style,\n      variant: style.fontVariant || DEFAULT_STYLE.variant,\n      weight: style.fontWeight || DEFAULT_STYLE.weight,\n      size: style.fontSize || DEFAULT_STYLE.size,\n      family: style.fontFamily || DEFAULT_STYLE.family\n    };\n  }\n\n  function getComputedStyle(style, element) {\n    var computedStyle = {};\n\n    for (var p in style) {\n      computedStyle[p] = style[p];\n    }\n\n    // Compute the size\n    var canvasFontSize = parseFloat(element.currentStyle.fontSize),\n        fontSize = parseFloat(style.size);\n\n    if (typeof style.size == 'number') {\n      computedStyle.size = style.size;\n    } else if (style.size.indexOf('px') != -1) {\n      computedStyle.size = fontSize;\n    } else if (style.size.indexOf('em') != -1) {\n      computedStyle.size = canvasFontSize * fontSize;\n    } else if(style.size.indexOf('%') != -1) {\n      computedStyle.size = (canvasFontSize / 100) * fontSize;\n    } else if (style.size.indexOf('pt') != -1) {\n      computedStyle.size = fontSize / .75;\n    } else {\n      computedStyle.size = canvasFontSize;\n    }\n\n    // Different scaling between normal text and VML text. This was found using\n    // trial and error to get the same size as non VML text.\n    computedStyle.size *= 0.981;\n\n    return computedStyle;\n  }\n\n  function buildStyle(style) {\n    return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +\n        style.size + 'px ' + style.family;\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.font = '10px sans-serif';\n    this.textAlign = 'left';\n    this.textBaseline = 'alphabetic';\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    if (this.textMeasureEl_) {\n      this.textMeasureEl_.removeNode(true);\n      this.textMeasureEl_ = null;\n    }\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1] ||\n        this.m_[1][1] != 1 || this.m_[1][0]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\");\n\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var W = 10;\n    var H = 10;\n    // Divide the shape into chunks if it's too long because IE has a limit\n    // somewhere for how long a VML shape can be. This simple division does\n    // not work with fills, only strokes, unfortunately.\n    var chunkSize = 5000;\n\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var j = 0; j < this.currentPath_.length; j += chunkSize) {\n      var lineStr = [];\n      var lineOpen = false;\n\n      lineStr.push('<g_vml_:shape',\n                   ' filled=\"', !!aFill, '\"',\n                   ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                   ' coordorigin=\"0,0\"',\n                   ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                   ' stroked=\"', !aFill, '\"',\n                   ' path=\"');\n\n      var newSeq = false;\n\n      for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) {\n        if (i % chunkSize == 0 && i > 0) { // move into position for next chunk\n          lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y));\n        }\n\n        var p = this.currentPath_[i];\n        var c;\n\n        switch (p.type) {\n          case 'moveTo':\n            c = p;\n            lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'lineTo':\n            lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'close':\n            lineStr.push(' x ');\n            p = null;\n            break;\n          case 'bezierCurveTo':\n            lineStr.push(' c ',\n                         mr(p.cp1x), ',', mr(p.cp1y), ',',\n                         mr(p.cp2x), ',', mr(p.cp2y), ',',\n                         mr(p.x), ',', mr(p.y));\n            break;\n          case 'at':\n          case 'wa':\n            lineStr.push(' ', p.type, ' ',\n                         mr(p.x - this.arcScaleX_ * p.radius), ',',\n                         mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                         mr(p.x + this.arcScaleX_ * p.radius), ',',\n                         mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                         mr(p.xStart), ',', mr(p.yStart), ' ',\n                         mr(p.xEnd), ',', mr(p.yEnd));\n            break;\n        }\n  \n  \n        // TODO: Following is broken for curves due to\n        //       move to proper paths.\n  \n        // Figure out dimensions so we can do gradient fills\n        // properly\n        if (p) {\n          if (min.x == null || p.x < min.x) {\n            min.x = p.x;\n          }\n          if (max.x == null || p.x > max.x) {\n            max.x = p.x;\n          }\n          if (min.y == null || p.y < min.y) {\n            min.y = p.y;\n          }\n          if (max.y == null || p.y > max.y) {\n            max.y = p.y;\n          }\n        }\n      }\n      lineStr.push(' \">');\n  \n      if (!aFill) {\n        appendStroke(this, lineStr);\n      } else {\n        appendFill(this, lineStr, min, max);\n      }\n  \n      lineStr.push('</g_vml_:shape>');\n  \n      this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n    }\n  };\n\n  function appendStroke(ctx, lineStr) {\n    var a = processStyle(ctx.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * ctx.globalAlpha;\n    var lineWidth = ctx.lineScale_ * ctx.lineWidth;\n\n    // VML cannot correctly render a line if the width is less than 1px.\n    // In that case, we dilute the color to make the line look thinner.\n    if (lineWidth < 1) {\n      opacity *= lineWidth;\n    }\n\n    lineStr.push(\n      '<g_vml_:stroke',\n      ' opacity=\"', opacity, '\"',\n      ' joinstyle=\"', ctx.lineJoin, '\"',\n      ' miterlimit=\"', ctx.miterLimit, '\"',\n      ' endcap=\"', processLineCap(ctx.lineCap), '\"',\n      ' weight=\"', lineWidth, 'px\"',\n      ' color=\"', color, '\" />'\n    );\n  }\n\n  function appendFill(ctx, lineStr, min, max) {\n    var fillStyle = ctx.fillStyle;\n    var arcScaleX = ctx.arcScaleX_;\n    var arcScaleY = ctx.arcScaleY_;\n    var width = max.x - min.x;\n    var height = max.y - min.y;\n    if (fillStyle instanceof CanvasGradient_) {\n      // TODO: Gradients transformed with the transformation matrix.\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / arcScaleX;\n        var y0 = fillStyle.y0_ / arcScaleY;\n        var x1 = fillStyle.x1_ / arcScaleX;\n        var y1 = fillStyle.y1_ / arcScaleY;\n        var p0 = ctx.getCoords_(x0, y0);\n        var p1 = ctx.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = ctx.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= arcScaleX * Z;\n        height /= arcScaleY * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * ctx.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else if (fillStyle instanceof CanvasPattern_) {\n      if (width && height) {\n        var deltaLeft = -min.x;\n        var deltaTop = -min.y;\n        lineStr.push('<g_vml_:fill',\n                     ' position=\"',\n                     deltaLeft / width * arcScaleX * arcScaleX, ',',\n                     deltaTop / height * arcScaleY * arcScaleY, '\"',\n                     ' type=\"tile\"',\n                     // TODO: Figure out the correct size to fit the scale.\n                     //' size=\"', w, 'px ', h, 'px\"',\n                     ' src=\"', fillStyle.src_, '\" />');\n       }\n    } else {\n      var a = processStyle(ctx.fillStyle);\n      var color = a.color;\n      var opacity = a.alpha * ctx.globalAlpha;\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n  }\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  };\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    };\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    if (this.aStack_.length) {\n      copyState(this.aStack_.pop(), this);\n      this.m_ = this.mStack_.pop();\n    }\n  };\n\n  function matrixIsFinite(m) {\n    return isFinite(m[0][0]) && isFinite(m[0][1]) &&\n        isFinite(m[1][0]) && isFinite(m[1][1]) &&\n        isFinite(m[2][0]) && isFinite(m[2][1]);\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /**\n   * The text drawing function.\n   * The maxWidth argument isn't taken in account, since no browser supports\n   * it yet.\n   */\n  contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {\n    var m = this.m_,\n        delta = 1000,\n        left = 0,\n        right = delta,\n        offset = {x: 0, y: 0},\n        lineStr = [];\n\n    var fontStyle = getComputedStyle(processFontStyle(this.font),\n                                     this.element_);\n\n    var fontStyleString = buildStyle(fontStyle);\n\n    var elementStyle = this.element_.currentStyle;\n    var textAlign = this.textAlign.toLowerCase();\n    switch (textAlign) {\n      case 'left':\n      case 'center':\n      case 'right':\n        break;\n      case 'end':\n        textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';\n        break;\n      case 'start':\n        textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';\n        break;\n      default:\n        textAlign = 'left';\n    }\n\n    // 1.75 is an arbitrary number, as there is no info about the text baseline\n    switch (this.textBaseline) {\n      case 'hanging':\n      case 'top':\n        offset.y = fontStyle.size / 1.75;\n        break;\n      case 'middle':\n        break;\n      default:\n      case null:\n      case 'alphabetic':\n      case 'ideographic':\n      case 'bottom':\n        offset.y = -fontStyle.size / 2.25;\n        break;\n    }\n\n    switch(textAlign) {\n      case 'right':\n        left = delta;\n        right = 0.05;\n        break;\n      case 'center':\n        left = right = delta / 2;\n        break;\n    }\n\n    var d = this.getCoords_(x + offset.x, y + offset.y);\n\n    lineStr.push('<g_vml_:line from=\"', -left ,' 0\" to=\"', right ,' 0.05\" ',\n                 ' coordsize=\"100 100\" coordorigin=\"0 0\"',\n                 ' filled=\"', !stroke, '\" stroked=\"', !!stroke,\n                 '\" style=\"position:absolute;width:1px;height:1px;\">');\n\n    if (stroke) {\n      appendStroke(this, lineStr);\n    } else {\n      // TODO: Fix the min and max params.\n      appendFill(this, lineStr, {x: -left, y: 0},\n                 {x: right, y: fontStyle.size});\n    }\n\n    var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +\n                m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';\n\n    var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);\n\n    lineStr.push('<g_vml_:skew on=\"t\" matrix=\"', skewM ,'\" ',\n                 ' offset=\"', skewOffset, '\" origin=\"', left ,' 0\" />',\n                 '<g_vml_:path textpathok=\"true\" />',\n                 '<g_vml_:textpath on=\"true\" string=\"',\n                 encodeHtmlAttribute(text),\n                 '\" style=\"v-text-align:', textAlign,\n                 ';font:', encodeHtmlAttribute(fontStyleString),\n                 '\" /></g_vml_:line>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fillText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, false);\n  };\n\n  contextPrototype.strokeText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, true);\n  };\n\n  contextPrototype.measureText = function(text) {\n    if (!this.textMeasureEl_) {\n      var s = '<span style=\"position:absolute;' +\n          'top:-20000px;left:0;padding:0;margin:0;border:none;' +\n          'white-space:pre;\"></span>';\n      this.element_.insertAdjacentHTML('beforeEnd', s);\n      this.textMeasureEl_ = this.element_.lastChild;\n    }\n    var doc = this.element_.ownerDocument;\n    this.textMeasureEl_.innerHTML = '';\n    this.textMeasureEl_.style.font = this.font;\n    // Don't use innerHTML or innerText because they allow markup/whitespace.\n    this.textMeasureEl_.appendChild(doc.createTextNode(text));\n    return {width: this.textMeasureEl_.offsetWidth};\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function(image, repetition) {\n    return new CanvasPattern_(image, repetition);\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_(image, repetition) {\n    assertImageIsValid(image);\n    switch (repetition) {\n      case 'repeat':\n      case null:\n      case '':\n        this.repetition_ = 'repeat';\n        break\n      case 'repeat-x':\n      case 'repeat-y':\n      case 'no-repeat':\n        this.repetition_ = repetition;\n        break;\n      default:\n        throwException('SYNTAX_ERR');\n    }\n\n    this.src_ = image.src;\n    this.width_ = image.width;\n    this.height_ = image.height;\n  }\n\n  function throwException(s) {\n    throw new DOMException_(s);\n  }\n\n  function assertImageIsValid(img) {\n    if (!img || img.nodeType != 1 || img.tagName != 'IMG') {\n      throwException('TYPE_MISMATCH_ERR');\n    }\n    if (img.readyState != 'complete') {\n      throwException('INVALID_STATE_ERR');\n    }\n  }\n\n  function DOMException_(s) {\n    this.code = this[s];\n    this.message = s +': DOM Exception ' + this.code;\n  }\n  var p = DOMException_.prototype = new Error;\n  p.INDEX_SIZE_ERR = 1;\n  p.DOMSTRING_SIZE_ERR = 2;\n  p.HIERARCHY_REQUEST_ERR = 3;\n  p.WRONG_DOCUMENT_ERR = 4;\n  p.INVALID_CHARACTER_ERR = 5;\n  p.NO_DATA_ALLOWED_ERR = 6;\n  p.NO_MODIFICATION_ALLOWED_ERR = 7;\n  p.NOT_FOUND_ERR = 8;\n  p.NOT_SUPPORTED_ERR = 9;\n  p.INUSE_ATTRIBUTE_ERR = 10;\n  p.INVALID_STATE_ERR = 11;\n  p.SYNTAX_ERR = 12;\n  p.INVALID_MODIFICATION_ERR = 13;\n  p.NAMESPACE_ERR = 14;\n  p.INVALID_ACCESS_ERR = 15;\n  p.VALIDATION_ERR = 16;\n  p.TYPE_MISMATCH_ERR = 17;\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n  DOMException = DOMException_;\n})();\n\n} // if\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.js",
    "content": "/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n\n(function($) {\n    $.color = {};\n\n    // construct color object with some convenient chainable helpers\n    $.color.make = function (r, g, b, a) {\n        var o = {};\n        o.r = r || 0;\n        o.g = g || 0;\n        o.b = b || 0;\n        o.a = a != null ? a : 1;\n\n        o.add = function (c, d) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] += d;\n            return o.normalize();\n        };\n        \n        o.scale = function (c, f) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] *= f;\n            return o.normalize();\n        };\n        \n        o.toString = function () {\n            if (o.a >= 1.0) {\n                return \"rgb(\"+[o.r, o.g, o.b].join(\",\")+\")\";\n            } else {\n                return \"rgba(\"+[o.r, o.g, o.b, o.a].join(\",\")+\")\";\n            }\n        };\n\n        o.normalize = function () {\n            function clamp(min, value, max) {\n                return value < min ? min: (value > max ? max: value);\n            }\n            \n            o.r = clamp(0, parseInt(o.r), 255);\n            o.g = clamp(0, parseInt(o.g), 255);\n            o.b = clamp(0, parseInt(o.b), 255);\n            o.a = clamp(0, o.a, 1);\n            return o;\n        };\n\n        o.clone = function () {\n            return $.color.make(o.r, o.b, o.g, o.a);\n        };\n\n        return o.normalize();\n    }\n\n    // extract CSS color property from element, going up in the DOM\n    // if it's \"transparent\"\n    $.color.extract = function (elem, css) {\n        var c;\n        do {\n            c = elem.css(css).toLowerCase();\n            // keep going until we find an element that has color, or\n            // we hit the body\n            if (c != '' && c != 'transparent')\n                break;\n            elem = elem.parent();\n        } while (!$.nodeName(elem.get(0), \"body\"));\n\n        // catch Safari's way of signalling transparent\n        if (c == \"rgba(0, 0, 0, 0)\")\n            c = \"transparent\";\n        \n        return $.color.parse(c);\n    }\n    \n    // parse CSS color string (like \"rgb(10, 32, 43)\" or \"#fff\"),\n    // returns color object, if parsing failed, you get black (0, 0,\n    // 0) out\n    $.color.parse = function (str) {\n        var res, m = $.color.make;\n\n        // Look for rgb(num,num,num)\n        if (res = /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10));\n        \n        // Look for rgba(num,num,num,num)\n        if (res = /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4]));\n            \n        // Look for rgb(num%,num%,num%)\n        if (res = /rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55);\n\n        // Look for rgba(num%,num%,num%,num)\n        if (res = /rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4]));\n        \n        // Look for #a0b1c2\n        if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))\n            return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16));\n\n        // Look for #fff\n        if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))\n            return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16));\n\n        // Otherwise, we're most likely dealing with a named color\n        var name = $.trim(str).toLowerCase();\n        if (name == \"transparent\")\n            return m(255, 255, 255, 0);\n        else {\n            // default to black\n            res = lookupColors[name] || [0, 0, 0];\n            return m(res[0], res[1], res[2]);\n        }\n    }\n    \n    var lookupColors = {\n        aqua:[0,255,255],\n        azure:[240,255,255],\n        beige:[245,245,220],\n        black:[0,0,0],\n        blue:[0,0,255],\n        brown:[165,42,42],\n        cyan:[0,255,255],\n        darkblue:[0,0,139],\n        darkcyan:[0,139,139],\n        darkgrey:[169,169,169],\n        darkgreen:[0,100,0],\n        darkkhaki:[189,183,107],\n        darkmagenta:[139,0,139],\n        darkolivegreen:[85,107,47],\n        darkorange:[255,140,0],\n        darkorchid:[153,50,204],\n        darkred:[139,0,0],\n        darksalmon:[233,150,122],\n        darkviolet:[148,0,211],\n        fuchsia:[255,0,255],\n        gold:[255,215,0],\n        green:[0,128,0],\n        indigo:[75,0,130],\n        khaki:[240,230,140],\n        lightblue:[173,216,230],\n        lightcyan:[224,255,255],\n        lightgreen:[144,238,144],\n        lightgrey:[211,211,211],\n        lightpink:[255,182,193],\n        lightyellow:[255,255,224],\n        lime:[0,255,0],\n        magenta:[255,0,255],\n        maroon:[128,0,0],\n        navy:[0,0,128],\n        olive:[128,128,0],\n        orange:[255,165,0],\n        pink:[255,192,203],\n        purple:[128,0,128],\n        violet:[128,0,128],\n        red:[255,0,0],\n        silver:[192,192,192],\n        white:[255,255,255],\n        yellow:[255,255,0]\n    };\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.js",
    "content": "/*\nFlot plugin for showing crosshairs, thin lines, when the mouse hovers\nover the plot.\n\n  crosshair: {\n    mode: null or \"x\" or \"y\" or \"xy\"\n    color: color\n    lineWidth: number\n  }\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a\nvertical crosshair that lets you trace the values on the x axis, \"y\"\nenables a horizontal crosshair and \"xy\" enables them both. \"color\" is\nthe color of the crosshair (default is \"rgba(170, 0, 0, 0.80)\"),\n\"lineWidth\" is the width of the drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n  - setCrosshair(pos)\n\n    Set the position of the crosshair. Note that this is cleared if\n    the user moves the mouse. \"pos\" is in coordinates of the plot and\n    should be on the form { x: xpos, y: ypos } (you can use x2/x3/...\n    if you're using multiple axes), which is coincidentally the same\n    format as what you get from a \"plothover\" event. If \"pos\" is null,\n    the crosshair is cleared.\n\n  - clearCrosshair()\n\n    Clear the crosshair.\n\n  - lockCrosshair(pos)\n\n    Cause the crosshair to lock to the current location, no longer\n    updating if the user moves the mouse. Optionally supply a position\n    (passed on to setCrosshair()) to move it to.\n\n    Example usage:\n      var myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n      $(\"#graph\").bind(\"plothover\", function (evt, position, item) {\n        if (item) {\n          // Lock the crosshair to the data point being hovered\n          myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] });\n        }\n        else {\n          // Return normal crosshair operation\n          myFlot.unlockCrosshair();\n        }\n      });\n\n  - unlockCrosshair()\n\n    Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n    var options = {\n        crosshair: {\n            mode: null, // one of null, \"x\", \"y\" or \"xy\",\n            color: \"rgba(170, 0, 0, 0.80)\",\n            lineWidth: 1\n        }\n    };\n    \n    function init(plot) {\n        // position of crosshair in pixels\n        var crosshair = { x: -1, y: -1, locked: false };\n\n        plot.setCrosshair = function setCrosshair(pos) {\n            if (!pos)\n                crosshair.x = -1;\n            else {\n                var o = plot.p2c(pos);\n                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n            }\n            \n            plot.triggerRedrawOverlay();\n        };\n        \n        plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n        \n        plot.lockCrosshair = function lockCrosshair(pos) {\n            if (pos)\n                plot.setCrosshair(pos);\n            crosshair.locked = true;\n        }\n\n        plot.unlockCrosshair = function unlockCrosshair() {\n            crosshair.locked = false;\n        }\n\n        function onMouseOut(e) {\n            if (crosshair.locked)\n                return;\n\n            if (crosshair.x != -1) {\n                crosshair.x = -1;\n                plot.triggerRedrawOverlay();\n            }\n        }\n\n        function onMouseMove(e) {\n            if (crosshair.locked)\n                return;\n                \n            if (plot.getSelection && plot.getSelection()) {\n                crosshair.x = -1; // hide the crosshair while selecting\n                return;\n            }\n                \n            var offset = plot.offset();\n            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n            plot.triggerRedrawOverlay();\n        }\n        \n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n            if (!plot.getOptions().crosshair.mode)\n                return;\n\n            eventHolder.mouseout(onMouseOut);\n            eventHolder.mousemove(onMouseMove);\n        });\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            var c = plot.getOptions().crosshair;\n            if (!c.mode)\n                return;\n\n            var plotOffset = plot.getPlotOffset();\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            if (crosshair.x != -1) {\n                ctx.strokeStyle = c.color;\n                ctx.lineWidth = c.lineWidth;\n                ctx.lineJoin = \"round\";\n\n                ctx.beginPath();\n                if (c.mode.indexOf(\"x\") != -1) {\n                    ctx.moveTo(crosshair.x, 0);\n                    ctx.lineTo(crosshair.x, plot.height());\n                }\n                if (c.mode.indexOf(\"y\") != -1) {\n                    ctx.moveTo(0, crosshair.y);\n                    ctx.lineTo(plot.width(), crosshair.y);\n                }\n                ctx.stroke();\n            }\n            ctx.restore();\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mouseout\", onMouseOut);\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n        });\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'crosshair',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.js",
    "content": "/*\nFlot plugin for computing bottoms for filled line and bar charts.\n\nThe case: you've got two series that you want to fill the area\nbetween. In Flot terms, you need to use one as the fill bottom of the\nother. You can specify the bottom of each data point as the third\ncoordinate manually, or you can use this plugin to compute it for you.\n\nIn order to name the other series, you need to give it an id, like this\n\n  var dataset = [\n       { data: [ ... ], id: \"foo\" } ,         // use default bottom\n       { data: [ ... ], fillBetween: \"foo\" }, // use first dataset as bottom\n       ];\n\n  $.plot($(\"#placeholder\"), dataset, { line: { show: true, fill: true }});\n\nAs a convenience, if the id given is a number that doesn't appear as\nan id in the series, it is interpreted as the index in the array\ninstead (so fillBetween: 0 can also mean the first series).\n  \nInternally, the plugin modifies the datapoints in each series. For\nline series, extra data points might be inserted through\ninterpolation. Note that at points where the bottom line is not\ndefined (due to a null point or start/end of line), the current line\nwill show a gap too. The algorithm comes from the jquery.flot.stack.js\nplugin, possibly some code could be shared.\n*/\n\n(function ($) {\n    var options = {\n        series: { fillBetween: null } // or number\n    };\n    \n    function init(plot) {\n        function findBottomSeries(s, allseries) {\n            var i;\n            for (i = 0; i < allseries.length; ++i) {\n                if (allseries[i].id == s.fillBetween)\n                    return allseries[i];\n            }\n\n            if (typeof s.fillBetween == \"number\") {\n                i = s.fillBetween;\n            \n                if (i < 0 || i >= allseries.length)\n                    return null;\n\n                return allseries[i];\n            }\n            \n            return null;\n        }\n        \n        function computeFillBottoms(plot, s, datapoints) {\n            if (s.fillBetween == null)\n                return;\n\n            var other = findBottomSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                withbottom = ps > 2 && datapoints.format[2].y,\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i];\n                    py = points[i + 1];\n                    qx = otherpoints[j];\n                    qy = otherpoints[j + 1];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        //newpoints[l + 1] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + 1] - py) * (qx - px) / (points[i - ps] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery)\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + 1] - qy) * (px - qx) / (otherpoints[j - otherps] - qx);\n\n                        //newpoints[l + 1] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] = bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(computeFillBottoms);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'fillbetween',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.js",
    "content": "/*\nFlot plugin for plotting images, e.g. useful for putting ticks on a\nprerendered complex visualization.\n\nThe data syntax is [[image, x1, y1, x2, y2], ...] where (x1, y1) and\n(x2, y2) are where you intend the two opposite corners of the image to\nend up in the plot. Image must be a fully loaded Javascript image (you\ncan make one with new Image()). If the image is not complete, it's\nskipped when plotting.\n\nThere are two helpers included for retrieving images. The easiest work\nthe way that you put in URLs instead of images in the data (like\n[\"myimage.png\", 0, 0, 10, 10]), then call $.plot.image.loadData(data,\noptions, callback) where data and options are the same as you pass in\nto $.plot. This loads the images, replaces the URLs in the data with\nthe corresponding images and calls \"callback\" when all images are\nloaded (or failed loading). In the callback, you can then call $.plot\nwith the data set. See the included example.\n\nA more low-level helper, $.plot.image.load(urls, callback) is also\nincluded. Given a list of URLs, it calls callback with an object\nmapping from URL to Image object when all images are loaded or have\nfailed loading.\n\nOptions for the plugin are\n\n  series: {\n      images: {\n          show: boolean\n          anchor: \"corner\" or \"center\"\n          alpha: [0,1]\n      }\n  }\n\nwhich can be specified for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], images: { ... } ])\n\nNote that because the data format is different from usual data points,\nyou can't use images with anything else in a specific data series.\n\nSetting \"anchor\" to \"center\" causes the pixels in the image to be\nanchored at the corner pixel centers inside of at the pixel corners,\neffectively letting half a pixel stick out to each side in the plot.\n\n\nA possible future direction could be support for tiling for large\nimages (like Google Maps).\n\n*/\n\n(function ($) {\n    var options = {\n        series: {\n            images: {\n                show: false,\n                alpha: 1,\n                anchor: \"corner\" // or \"center\"\n            }\n        }\n    };\n\n    $.plot.image = {};\n\n    $.plot.image.loadDataImages = function (series, options, callback) {\n        var urls = [], points = [];\n\n        var defaultShow = options.series.images.show;\n        \n        $.each(series, function (i, s) {\n            if (!(defaultShow || s.images.show))\n                return;\n            \n            if (s.data)\n                s = s.data;\n\n            $.each(s, function (i, p) {\n                if (typeof p[0] == \"string\") {\n                    urls.push(p[0]);\n                    points.push(p);\n                }\n            });\n        });\n\n        $.plot.image.load(urls, function (loadedImages) {\n            $.each(points, function (i, p) {\n                var url = p[0];\n                if (loadedImages[url])\n                    p[0] = loadedImages[url];\n            });\n\n            callback();\n        });\n    }\n    \n    $.plot.image.load = function (urls, callback) {\n        var missing = urls.length, loaded = {};\n        if (missing == 0)\n            callback({});\n\n        $.each(urls, function (i, url) {\n            var handler = function () {\n                --missing;\n                \n                loaded[url] = this;\n                \n                if (missing == 0)\n                    callback(loaded);\n            };\n\n            $('<img />').load(handler).error(handler).attr('src', url);\n        });\n    }\n    \n    function drawSeries(plot, ctx, series) {\n        var plotOffset = plot.getPlotOffset();\n        \n        if (!series.images || !series.images.show)\n            return;\n        \n        var points = series.datapoints.points,\n            ps = series.datapoints.pointsize;\n        \n        for (var i = 0; i < points.length; i += ps) {\n            var img = points[i],\n                x1 = points[i + 1], y1 = points[i + 2],\n                x2 = points[i + 3], y2 = points[i + 4],\n                xaxis = series.xaxis, yaxis = series.yaxis,\n                tmp;\n\n            // actually we should check img.complete, but it\n            // appears to be a somewhat unreliable indicator in\n            // IE6 (false even after load event)\n            if (!img || img.width <= 0 || img.height <= 0)\n                continue;\n\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n            \n            // if the anchor is at the center of the pixel, expand the \n            // image by 1/2 pixel in each direction\n            if (series.images.anchor == \"center\") {\n                tmp = 0.5 * (x2-x1) / (img.width - 1);\n                x1 -= tmp;\n                x2 += tmp;\n                tmp = 0.5 * (y2-y1) / (img.height - 1);\n                y1 -= tmp;\n                y2 += tmp;\n            }\n            \n            // clip\n            if (x1 == x2 || y1 == y2 ||\n                x1 >= xaxis.max || x2 <= xaxis.min ||\n                y1 >= yaxis.max || y2 <= yaxis.min)\n                continue;\n\n            var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;\n            if (x1 < xaxis.min) {\n                sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);\n                x1 = xaxis.min;\n            }\n\n            if (x2 > xaxis.max) {\n                sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);\n                x2 = xaxis.max;\n            }\n\n            if (y1 < yaxis.min) {\n                sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);\n                y1 = yaxis.min;\n            }\n\n            if (y2 > yaxis.max) {\n                sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);\n                y2 = yaxis.max;\n            }\n            \n            x1 = xaxis.p2c(x1);\n            x2 = xaxis.p2c(x2);\n            y1 = yaxis.p2c(y1);\n            y2 = yaxis.p2c(y2);\n            \n            // the transformation may have swapped us\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n\n            tmp = ctx.globalAlpha;\n            ctx.globalAlpha *= series.images.alpha;\n            ctx.drawImage(img,\n                          sx1, sy1, sx2 - sx1, sy2 - sy1,\n                          x1 + plotOffset.left, y1 + plotOffset.top,\n                          x2 - x1, y2 - y1);\n            ctx.globalAlpha = tmp;\n        }\n    }\n\n    function processRawData(plot, series, data, datapoints) {\n        if (!series.images.show)\n            return;\n\n        // format is Image, x1, y1, x2, y2 (opposite corners)\n        datapoints.format = [\n            { required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true }\n        ];\n    }\n    \n    function init(plot) {\n        plot.hooks.processRawData.push(processRawData);\n        plot.hooks.drawSeries.push(drawSeries);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'image',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.js",
    "content": "/*! Javascript plotting library for jQuery, v. 0.7.\n *\n * Released under the MIT license by IOLA, December 2007.\n *\n */\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return\"rgb(\"+[G.r,G.g,G.b].join(\",\")+\")\"}else{return\"rgba(\"+[G.r,G.g,G.b,G.a].join(\",\")+\")\"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=\"\"&&E!=\"transparent\"){break}D=D.parent()}while(!B.nodeName(D.get(0),\"body\"));if(E==\"rgba(0, 0, 0, 0)\"){E=\"transparent\"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D==\"transparent\"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n        \n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85 // set to 0 to avoid background\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    \n                    // mode specific options\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null, // number or [number, \"unit\"]\n                    monthNames: null, // list of names of months\n                    timeformat: null, // format string to use\n                    twelveHourClock: false // 12 or 24 time in time mode\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled \n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // or \"center\" \n                        horizontal: false\n                    },\n                    shadowSize: 3\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                hooks: {}\n            },\n        canvas = null,      // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        canvasWidth = 0, canvasHeight = 0,\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return canvas; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.resize = function () {\n            getCanvasDimensions();\n            resizeCanvas(canvas);\n            resizeCanvas(overlay);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n        \n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n        \n        function parseOptions(opts) {\n            var i;\n            \n            $.extend(true, options, opts);\n            \n            if (options.xaxis.color == null)\n                options.xaxis.color = options.grid.color;\n            if (options.yaxis.color == null)\n                options.yaxis.color = options.grid.color;\n            \n            if (options.xaxis.tickColor == null) // backwards-compatibility\n                options.xaxis.tickColor = options.grid.tickColor;\n            if (options.yaxis.tickColor == null) // backwards-compatibility\n                options.yaxis.tickColor = options.grid.tickColor;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            \n            // fill in defaults in axes, copy at least always the\n            // first as the rest of the code assumes it'll be there\n            for (i = 0; i < Math.max(1, options.xaxes.length); ++i)\n                options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);\n            for (i = 0; i < Math.max(1, options.yaxes.length); ++i)\n                options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n        \n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n        \n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n        \n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes \n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n            \n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n        \n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            return res;\n        }\n        \n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n                \n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n            var i;\n            \n            // collect what we already got of colors\n            var neededColors = series.length,\n                usedColors = [],\n                assignedColors = [];\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    --neededColors;\n                    if (typeof sc == \"number\")\n                        assignedColors.push(sc);\n                    else\n                        usedColors.push($.color.parse(series[i].color));\n                }\n            }\n            \n            // we might need to generate more colors if higher indices\n            // are assigned\n            for (i = 0; i < assignedColors.length; ++i) {\n                neededColors = Math.max(neededColors, assignedColors[i] + 1);\n            }\n\n            // produce colors as needed\n            var colors = [], variation = 0;\n            i = 0;\n            while (colors.length < neededColors) {\n                var c;\n                if (options.colors.length == i) // check degenerate case\n                    c = $.color.make(100, 100, 100);\n                else\n                    c = $.color.parse(options.colors[i]);\n\n                // vary color if needed\n                var sign = variation % 2 == 1 ? -1 : 1;\n                c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)\n\n                // FIXME: if we're getting to close to something else,\n                // we should probably skip this one\n                colors.push(c);\n                \n                ++i;\n                if (i >= options.colors.length) {\n                    i = 0;\n                    ++variation;\n                }\n            }\n\n            // fill in the options\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n        \n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n            \n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n                \n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n            \n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                var data = s.data, format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        format.push({ y: true, number: true, required: false, defaultValue: 0 });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n                    \n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n                \n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n                \n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n                                    \n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n                            \n                            points[k + m] = val;\n                        }\n                    }\n                    \n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.x)\n                                    updateAxis(s.xaxis, val, val);\n                                if (f.y)\n                                    updateAxis(s.yaxis, val, val);\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points,\n                ps = s.datapoints.pointsize;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n                \n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n                        \n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n                \n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2;\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n                \n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function makeCanvas(skipPositioning, cls) {\n            var c = document.createElement('canvas');\n            c.className = cls;\n            c.width = canvasWidth;\n            c.height = canvasHeight;\n                    \n            if (!skipPositioning)\n                $(c).css({ position: 'absolute', left: 0, top: 0 });\n                \n            $(c).appendTo(placeholder);\n                \n            if (!c.getContext) // excanvas hack\n                c = window.G_vmlCanvasManager.initElement(c);\n\n            // used for resetting in case we get replotted\n            c.getContext(\"2d\").save();\n            \n            return c;\n        }\n\n        function getCanvasDimensions() {\n            canvasWidth = placeholder.width();\n            canvasHeight = placeholder.height();\n            \n            if (canvasWidth <= 0 || canvasHeight <= 0)\n                throw \"Invalid dimensions for plot, width = \" + canvasWidth + \", height = \" + canvasHeight;\n        }\n\n        function resizeCanvas(c) {\n            // resizing should reset the state (excanvas seems to be\n            // buggy though)\n            if (c.width != canvasWidth)\n                c.width = canvasWidth;\n\n            if (c.height != canvasHeight)\n                c.height = canvasHeight;\n\n            // so try to get back to the initial state (even if it's\n            // gone now, this should be safe according to the spec)\n            var cctx = c.getContext(\"2d\");\n            cctx.restore();\n\n            // and save again\n            cctx.save();\n        }\n        \n        function setupCanvases() {\n            var reused,\n                existingCanvas = placeholder.children(\"canvas.base\"),\n                existingOverlay = placeholder.children(\"canvas.overlay\");\n\n            if (existingCanvas.length == 0 || existingOverlay == 0) {\n                // init everything\n                \n                placeholder.html(\"\"); // make sure placeholder is clear\n            \n                placeholder.css({ padding: 0 }); // padding messes up the positioning\n                \n                if (placeholder.css(\"position\") == 'static')\n                    placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n                getCanvasDimensions();\n                \n                canvas = makeCanvas(true, \"base\");\n                overlay = makeCanvas(false, \"overlay\"); // overlay canvas for interactive features\n\n                reused = false;\n            }\n            else {\n                // reuse existing elements\n\n                canvas = existingCanvas.get(0);\n                overlay = existingOverlay.get(0);\n\n                reused = true;\n            }\n\n            ctx = canvas.getContext(\"2d\");\n            octx = overlay.getContext(\"2d\");\n\n            // we include the canvas in the event holder too, because IE 7\n            // sometimes has trouble with the stacking order\n            eventHolder = $([overlay, canvas]);\n\n            if (reused) {\n                // run shutdown in the old plot object\n                placeholder.data(\"plot\").shutdown();\n\n                // reset reused canvases\n                plot.resize();\n                \n                // make sure overlay pixels are cleared (canvas is cleared when we redraw)\n                octx.clearRect(0, 0, canvasWidth, canvasHeight);\n                \n                // then whack any remaining obvious garbage left\n                eventHolder.unbind();\n                placeholder.children().not([canvas, overlay]).remove();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mouseleave(onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n            \n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n            \n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n            \n            function identity(x) { return x; }\n            \n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n            \n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n            var opts = axis.options, i, ticks = axis.ticks || [], labels = [],\n                l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;\n\n            function makeDummyDiv(labels, width) {\n                return $('<div style=\"position:absolute;top:-10000px;' + width + 'font-size:smaller\">' +\n                         '<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\">'\n                         + labels.join(\"\") + '</div></div>')\n                    .appendTo(placeholder);\n            }\n            \n            if (axis.direction == \"x\") {\n                // to avoid measuring the widths of the labels (it's slow), we\n                // construct fixed-size boxes and put the labels inside\n                // them, we don't need the exact figures and the\n                // fixed-size box content is easy to center\n                if (w == null)\n                    w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));\n\n                // measure x label heights\n                if (h == null) {\n                    labels = [];\n                    for (i = 0; i < ticks.length; ++i) {\n                        l = ticks[i].label;\n                        if (l)\n                            labels.push('<div class=\"tickLabel\" style=\"float:left;width:' + w + 'px\">' + l + '</div>');\n                    }\n\n                    if (labels.length > 0) {\n                        // stick them all in the same div and measure\n                        // collective height\n                        labels.push('<div style=\"clear:left\"></div>');\n                        dummyDiv = makeDummyDiv(labels, \"width:10000px;\");\n                        h = dummyDiv.height();\n                        dummyDiv.remove();\n                    }\n                }\n            }\n            else if (w == null || h == null) {\n                // calculate y label dimensions\n                for (i = 0; i < ticks.length; ++i) {\n                    l = ticks[i].label;\n                    if (l)\n                        labels.push('<div class=\"tickLabel\">' + l + '</div>');\n                }\n                \n                if (labels.length > 0) {\n                    dummyDiv = makeDummyDiv(labels, \"\");\n                    if (w == null)\n                        w = dummyDiv.children().width();\n                    if (h == null)\n                        h = dummyDiv.find(\"div.tickLabel\").height();\n                    dummyDiv.remove();\n                }\n            }\n\n            if (w == null)\n                w = 0;\n            if (h == null)\n                h = 0;\n\n            axis.labelWidth = w;\n            axis.labelHeight = h;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                tickLength = axis.options.tickLength,\n                axismargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                all = axis.direction == \"x\" ? xaxes : yaxes,\n                index;\n\n            // determine axis margin\n            var samePosition = $.grep(all, function (a) {\n                return a && a.options.position == pos && a.reserveSpace;\n            });\n            if ($.inArray(axis, samePosition) == samePosition.length - 1)\n                axismargin = 0; // outermost\n\n            // determine tick length - if we're innermost, we can use \"full\"\n            if (tickLength == null)\n                tickLength = \"full\";\n\n            var sameDirection = $.grep(all, function (a) {\n                return a && a.reserveSpace;\n            });\n\n            var innermost = $.inArray(axis, sameDirection) == 0;\n            if (!innermost && tickLength == \"full\")\n                tickLength = 5;\n                \n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            // compute box\n            if (axis.direction == \"x\") {\n                lh += padding;\n                \n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axismargin;\n                    axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axismargin, height: lh };\n                    plotOffset.top += lh + axismargin;\n                }\n            }\n            else {\n                lw += padding;\n                \n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axismargin, width: lw };\n                    plotOffset.left += lw + axismargin;\n                }\n                else {\n                    plotOffset.right += lw + axismargin;\n                    axis.box = { left: canvasWidth - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // set remaining bounding box coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left;\n                axis.box.width = plotWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top;\n                axis.box.height = plotHeight;\n            }\n        }\n        \n        function setupGrid() {\n            var i, axes = allAxes();\n\n            // first calculate the plot and axis box dimensions\n\n            $.each(axes, function (_, axis) {\n                axis.show = axis.options.show;\n                if (axis.show == null)\n                    axis.show = axis.used; // by default an axis is visible if it's got data\n                \n                axis.reserveSpace = axis.show || axis.options.reserveSpace;\n\n                setRange(axis);\n            });\n\n            allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });\n\n            plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions in house, we can compute the\n                // axis boxes, start from the outside (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                var minMargin = options.grid.minBorderMargin;\n                if (minMargin == null) {\n                    minMargin = 0;\n                    for (i = 0; i < series.length; ++i)\n                        minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);\n                }\n                    \n                for (var a in plotOffset) {\n                    plotOffset[a] += options.grid.borderWidth;\n                    plotOffset[a] = Math.max(minMargin, plotOffset[a]);\n                }\n            }\n            \n            plotWidth = canvasWidth - plotOffset.left - plotOffset.right;\n            plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plotWidth/Height, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n\n                insertAxisLabels();\n            }\n            \n            insertLegend();\n        }\n        \n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n                \n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? canvasWidth : canvasHeight);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                size, generator, unit, formatter, i, magn, norm;\n\n            if (opts.mode == \"time\") {\n                // pretty handling of time\n                \n                // map of app. size of time units in milliseconds\n                var timeUnitSize = {\n                    \"second\": 1000,\n                    \"minute\": 60 * 1000,\n                    \"hour\": 60 * 60 * 1000,\n                    \"day\": 24 * 60 * 60 * 1000,\n                    \"month\": 30 * 24 * 60 * 60 * 1000,\n                    \"year\": 365.2425 * 24 * 60 * 60 * 1000\n                };\n\n\n                // the allowed tick sizes, after 1 year we use\n                // an integer algorithm\n                var spec = [\n                    [1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n                    [30, \"second\"], \n                    [1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n                    [30, \"minute\"], \n                    [1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n                    [8, \"hour\"], [12, \"hour\"],\n                    [1, \"day\"], [2, \"day\"], [3, \"day\"],\n                    [0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n                    [2, \"month\"], [3, \"month\"], [6, \"month\"],\n                    [1, \"year\"]\n                ];\n\n                var minSize = 0;\n                if (opts.minTickSize != null) {\n                    if (typeof opts.tickSize == \"number\")\n                        minSize = opts.tickSize;\n                    else\n                        minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n                }\n\n                for (var i = 0; i < spec.length - 1; ++i)\n                    if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n                                 + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n                       && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)\n                        break;\n                size = spec[i][0];\n                unit = spec[i][1];\n                \n                // special-case the possibility of several years\n                if (unit == \"year\") {\n                    magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));\n                    norm = (delta / timeUnitSize.year) / magn;\n                    if (norm < 1.5)\n                        size = 1;\n                    else if (norm < 3)\n                        size = 2;\n                    else if (norm < 7.5)\n                        size = 5;\n                    else\n                        size = 10;\n\n                    size *= magn;\n                }\n\n                axis.tickSize = opts.tickSize || [size, unit];\n                \n                generator = function(axis) {\n                    var ticks = [],\n                        tickSize = axis.tickSize[0], unit = axis.tickSize[1],\n                        d = new Date(axis.min);\n                    \n                    var step = tickSize * timeUnitSize[unit];\n\n                    if (unit == \"second\")\n                        d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));\n                    if (unit == \"minute\")\n                        d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));\n                    if (unit == \"hour\")\n                        d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));\n                    if (unit == \"month\")\n                        d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));\n                    if (unit == \"year\")\n                        d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));\n                    \n                    // reset smaller components\n                    d.setUTCMilliseconds(0);\n                    if (step >= timeUnitSize.minute)\n                        d.setUTCSeconds(0);\n                    if (step >= timeUnitSize.hour)\n                        d.setUTCMinutes(0);\n                    if (step >= timeUnitSize.day)\n                        d.setUTCHours(0);\n                    if (step >= timeUnitSize.day * 4)\n                        d.setUTCDate(1);\n                    if (step >= timeUnitSize.year)\n                        d.setUTCMonth(0);\n\n\n                    var carry = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = d.getTime();\n                        ticks.push(v);\n                        if (unit == \"month\") {\n                            if (tickSize < 1) {\n                                // a bit complicated - we'll divide the month\n                                // up but we need to take care of fractions\n                                // so we don't end up in the middle of a day\n                                d.setUTCDate(1);\n                                var start = d.getTime();\n                                d.setUTCMonth(d.getUTCMonth() + 1);\n                                var end = d.getTime();\n                                d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n                                carry = d.getUTCHours();\n                                d.setUTCHours(0);\n                            }\n                            else\n                                d.setUTCMonth(d.getUTCMonth() + tickSize);\n                        }\n                        else if (unit == \"year\") {\n                            d.setUTCFullYear(d.getUTCFullYear() + tickSize);\n                        }\n                        else\n                            d.setTime(v + step);\n                    } while (v < axis.max && v != prev);\n\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    var d = new Date(v);\n\n                    // first check global format\n                    if (opts.timeformat != null)\n                        return $.plot.formatDate(d, opts.timeformat, opts.monthNames);\n                    \n                    var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n                    var span = axis.max - axis.min;\n                    var suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n                    \n                    if (t < timeUnitSize.minute)\n                        fmt = \"%h:%M:%S\" + suffix;\n                    else if (t < timeUnitSize.day) {\n                        if (span < 2 * timeUnitSize.day)\n                            fmt = \"%h:%M\" + suffix;\n                        else\n                            fmt = \"%b %d %h:%M\" + suffix;\n                    }\n                    else if (t < timeUnitSize.month)\n                        fmt = \"%b %d\";\n                    else if (t < timeUnitSize.year) {\n                        if (span < timeUnitSize.year)\n                            fmt = \"%b\";\n                        else\n                            fmt = \"%b %y\";\n                    }\n                    else\n                        fmt = \"%y\";\n                    \n                    return $.plot.formatDate(d, fmt, opts.monthNames);\n                };\n            }\n            else {\n                // pretty rounding of base-10 numbers\n                var maxDec = opts.tickDecimals;\n                var dec = -Math.floor(Math.log(delta) / Math.LN10);\n                if (maxDec != null && dec > maxDec)\n                    dec = maxDec;\n\n                magn = Math.pow(10, -dec);\n                norm = delta / magn; // norm is between 1.0 and 10.0\n                \n                if (norm < 1.5)\n                    size = 1;\n                else if (norm < 3) {\n                    size = 2;\n                    // special case for 2.5, requires an extra decimal\n                    if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                        size = 2.5;\n                        ++dec;\n                    }\n                }\n                else if (norm < 7.5)\n                    size = 5;\n                else\n                    size = 10;\n\n                size *= magn;\n                \n                if (opts.minTickSize != null && size < opts.minTickSize)\n                    size = opts.minTickSize;\n\n                axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n                axis.tickSize = opts.tickSize || size;\n\n                generator = function (axis) {\n                    var ticks = [];\n\n                    // spew out all possible ticks\n                    var start = floorInBase(axis.min, axis.tickSize),\n                        i = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    return v.toFixed(axis.tickDecimals);\n                };\n            }\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = generator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n                    \n                    generator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n                    \n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (axis.mode != \"time\" && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),\n                            ts = generator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n\n            axis.tickGenerator = generator;\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n            else\n                axis.tickFormatter = formatter;\n        }\n        \n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks({ min: axis.min, max: axis.max });\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n      \n        function draw() {\n            ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n            \n            if (grid.show && !grid.aboveData)\n                drawGrid();\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n            \n            if (grid.show && grid.aboveData)\n                drawGrid();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i;\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    var axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n                    \n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    if (xrange.from == xrange.to && yrange.from == yrange.to)\n                        continue;\n\n                    // then draw\n                    xrange.from = xrange.axis.p2c(xrange.from);\n                    xrange.to = xrange.axis.p2c(xrange.to);\n                    yrange.from = yrange.axis.p2c(yrange.from);\n                    yrange.to = yrange.axis.p2c(yrange.to);\n                    \n                    if (xrange.from == xrange.to || yrange.from == yrange.to) {\n                        // draw line\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;\n                        ctx.moveTo(xrange.from, yrange.from);\n                        ctx.lineTo(xrange.to, yrange.to);\n                        ctx.stroke();\n                    }\n                    else {\n                        // fill area\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n            \n            // draw the ticks\n            var axes = allAxes(), bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue\n                \n                ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n                \n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth;\n                    else\n                        yoff = plotHeight;\n                    \n                    if (ctx.lineWidth == 1) {\n                        x = Math.floor(x) + 0.5;\n                        y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n                    \n                    xoff = yoff = 0;\n\n                    if (v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\" && bw > 0\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n                        \n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n                        \n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n                \n                ctx.stroke();\n            }\n            \n            \n            // draw border\n            if (bw) {\n                ctx.lineWidth = bw;\n                ctx.strokeStyle = options.grid.borderColor;\n                ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n            }\n\n            ctx.restore();\n        }\n\n        function insertAxisLabels() {\n            placeholder.find(\".tickLabels\").remove();\n            \n            var html = ['<div class=\"tickLabels\" style=\"font-size:smaller\">'];\n\n            var axes = allAxes();\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box;\n                if (!axis.show)\n                    continue;\n                //debug: html.push('<div style=\"position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n                html.push('<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\" style=\"color:' + axis.options.color + '\">');\n                for (var i = 0; i < axis.ticks.length; ++i) {\n                    var tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    var pos = {}, align;\n                    \n                    if (axis.direction == \"x\") {\n                        align = \"center\";\n                        pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);\n                        if (axis.position == \"bottom\")\n                            pos.top = box.top + box.padding;\n                        else\n                            pos.bottom = canvasHeight - (box.top + box.height - box.padding);\n                    }\n                    else {\n                        pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);\n                        if (axis.position == \"left\") {\n                            pos.right = canvasWidth - (box.left + box.width - box.padding)\n                            align = \"right\";\n                        }\n                        else {\n                            pos.left = box.left + box.padding;\n                            align = \"left\";\n                        }\n                    }\n\n                    pos.width = axis.labelWidth;\n\n                    var style = [\"position:absolute\", \"text-align:\" + align ];\n                    for (var a in pos)\n                        style.push(a + \":\" + pos[a] + \"px\")\n                    \n                    html.push('<div class=\"tickLabel\" style=\"' + style.join(';') + '\">' + tick.label + '</div>');\n                }\n                html.push('</div>');\n            }\n\n            html.push('</div>');\n\n            placeholder.append(html.join(\"\"));\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n        \n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n                \n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n                    \n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n                    \n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n                    \n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n                    \n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n                    \n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n                    \n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n                    \n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n                    \n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n                    \n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n           \n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n            \n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n            \n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n            \n            // fill the bar\n            if (fillStyleCallback) {\n                c.beginPath();\n                c.moveTo(left, bottom);\n                c.lineTo(left, top);\n                c.lineTo(right, top);\n                c.lineTo(right, bottom);\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fill();\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom + offset);\n                if (drawLeft)\n                    c.lineTo(left, top + offset);\n                else\n                    c.moveTo(left, top + offset);\n                if (drawTop)\n                    c.lineTo(right, top + offset);\n                else\n                    c.moveTo(right, top + offset);\n                if (drawRight)\n                    c.lineTo(right, bottom + offset);\n                else\n                    c.moveTo(right, bottom + offset);\n                if (drawBottom)\n                    c.lineTo(left, bottom + offset);\n                else\n                    c.moveTo(left, bottom + offset);\n                c.stroke();\n            }\n        }\n        \n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n                \n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n            \n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n        \n        function insertLegend() {\n            placeholder.find(\".legend\").remove();\n\n            if (!options.legend.show)\n                return;\n            \n            var fragments = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                label = s.label;\n                if (!label)\n                    continue;\n                \n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                if (lf)\n                    label = lf(label, s);\n                \n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + label + '</td>');\n            }\n            if (rowStarted)\n                fragments.push('</tr>');\n            \n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n        \n        var highlights = [],\n            redrawTimeout = null;\n        \n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n                \n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    ps = s.datapoints.pointsize,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n                \n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n                        \n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n                    \n                if (s.bars.show && !item) { // no other point can be nearby\n                    var barLeft = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2,\n                        barRight = barLeft + s.bars.barWidth;\n                    \n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n  \n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ? \n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) && \n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n                \n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n            \n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n                \n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n            \n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, 30);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            octx.clearRect(0, 0, canvasWidth, canvasHeight);\n            octx.translate(plotOffset.left, plotOffset.top);\n            \n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n            \n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n        \n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n            \n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n            }\n            \n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\")\n                point = s.data[point];\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n        \n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n        \n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis;\n            \n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n            \n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var radius = 1.5 * pointRadius,\n                x = axisx.p2c(x),\n                y = axisy.p2c(y);\n            \n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n                \n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness)\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n                \n                return gradient;\n            }\n        }\n    }\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.7\";\n    \n    $.plot.plugins = [];\n\n    // returns a string with the date d formatted according to fmt\n    $.plot.formatDate = function(d, fmt, monthNames) {\n        var leftPad = function(n) {\n            n = \"\" + n;\n            return n.length == 1 ? \"0\" + n : n;\n        };\n        \n        var r = [];\n        var escape = false, padNext = false;\n        var hours = d.getUTCHours();\n        var isAM = hours < 12;\n        if (monthNames == null)\n            monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n        if (fmt.search(/%p|%P/) != -1) {\n            if (hours > 12) {\n                hours = hours - 12;\n            } else if (hours == 0) {\n                hours = 12;\n            }\n        }\n        for (var i = 0; i < fmt.length; ++i) {\n            var c = fmt.charAt(i);\n            \n            if (escape) {\n                switch (c) {\n                case 'h': c = \"\" + hours; break;\n                case 'H': c = leftPad(hours); break;\n                case 'M': c = leftPad(d.getUTCMinutes()); break;\n                case 'S': c = leftPad(d.getUTCSeconds()); break;\n                case 'd': c = \"\" + d.getUTCDate(); break;\n                case 'm': c = \"\" + (d.getUTCMonth() + 1); break;\n                case 'y': c = \"\" + d.getUTCFullYear(); break;\n                case 'b': c = \"\" + monthNames[d.getUTCMonth()]; break;\n                case 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n                case 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n                case '0': c = \"\"; padNext = true; break;\n                }\n                if (c && padNext) {\n                    c = leftPad(c);\n                    padNext = false;\n                }\n                r.push(c);\n                if (!padNext)\n                    escape = false;\n            }\n            else {\n                if (c == \"%\")\n                    escape = true;\n                else\n                    r.push(c);\n            }\n        }\n        return r.join(\"\");\n    };\n    \n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n    \n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.js",
    "content": "/*\nFlot plugin for adding panning and zooming capabilities to a plot.\n\nThe default behaviour is double click and scrollwheel up/down to zoom\nin, drag to pan. The plugin defines plot.zoom({ center }),\nplot.zoomOut() and plot.pan(offset) so you easily can add custom\ncontrols. It also fires a \"plotpan\" and \"plotzoom\" event when\nsomething happens, useful for synchronizing plots.\n\nOptions:\n\n  zoom: {\n    interactive: false\n    trigger: \"dblclick\" // or \"click\" for single click\n    amount: 1.5         // 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n  }\n  \n  pan: {\n    interactive: false\n    cursor: \"move\"      // CSS mouse cursor value used when dragging, e.g. \"pointer\"\n    frameRate: 20\n  }\n\n  xaxis, yaxis, x2axis, y2axis: {\n    zoomRange: null  // or [number, number] (min range, max range) or false\n    panRange: null   // or [number, number] (min, max) or false\n  }\n  \n\"interactive\" enables the built-in drag/click behaviour. If you enable\ninteractive for pan, then you'll have a basic plot that supports\nmoving around; the same for zoom.\n\n\"amount\" specifies the default amount to zoom in (so 1.5 = 150%)\nrelative to the current viewport.\n\n\"cursor\" is a standard CSS mouse cursor string used for visual\nfeedback to the user when dragging.\n\n\"frameRate\" specifies the maximum number of times per second the plot\nwill update itself while the user is panning around on it (set to null\nto disable intermediate pans, the plot will then not update until the\nmouse button is released).\n\n\"zoomRange\" is the interval in which zooming can happen, e.g. with\nzoomRange: [1, 100] the zoom will never scale the axis so that the\ndifference between min and max is smaller than 1 or larger than 100.\nYou can set either end to null to ignore, e.g. [1, null]. If you set\nzoomRange to false, zooming on that axis will be disabled.\n\n\"panRange\" confines the panning to stay within a range, e.g. with\npanRange: [-10, 20] panning stops at -10 in one end and at 20 in the\nother. Either can be null, e.g. [-10, null]. If you set\npanRange to false, panning on that axis will be disabled.\n\nExample API usage:\n\n  plot = $.plot(...);\n  \n  // zoom default amount in on the pixel (10, 20) \n  plot.zoom({ center: { left: 10, top: 20 } });\n\n  // zoom out again\n  plot.zoomOut({ center: { left: 10, top: 20 } });\n\n  // zoom 200% in on the pixel (10, 20) \n  plot.zoom({ amount: 2, center: { left: 10, top: 20 } });\n  \n  // pan 100 pixels to the left and 20 down\n  plot.pan({ left: -100, top: 20 })\n\nHere, \"center\" specifies where the center of the zooming should\nhappen. Note that this is defined in pixel space, not the space of the\ndata points (you can use the p2c helpers on the axes in Flot to help\nyou convert between these).\n\n\"amount\" is the amount to zoom the viewport relative to the current\nrange, so 1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is\n70% (zoom out). You can set the default in the options.\n  \n*/\n\n\n// First two dependencies, jquery.event.drag.js and\n// jquery.mousewheel.js, we put them inline here to save people the\n// effort of downloading them.\n\n/*\njquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)  \nLicensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt\n*/\n(function(E){E.fn.drag=function(L,K,J){if(K){this.bind(\"dragstart\",L)}if(J){this.bind(\"dragend\",J)}return !L?this.trigger(\"drag\"):this.bind(\"drag\",K?K:L)};var A=E.event,B=A.special,F=B.drag={not:\":input\",distance:0,which:1,dragging:false,setup:function(J){J=E.extend({distance:F.distance,which:F.which,not:F.not},J||{});J.distance=I(J.distance);A.add(this,\"mousedown\",H,J);if(this.attachEvent){this.attachEvent(\"ondragstart\",D)}},teardown:function(){A.remove(this,\"mousedown\",H);if(this===F.dragging){F.dragging=F.proxy=false}G(this,true);if(this.detachEvent){this.detachEvent(\"ondragstart\",D)}}};B.dragstart=B.dragend={setup:function(){},teardown:function(){}};function H(L){var K=this,J,M=L.data||{};if(M.elem){K=L.dragTarget=M.elem;L.dragProxy=F.proxy||K;L.cursorOffsetX=M.pageX-M.left;L.cursorOffsetY=M.pageY-M.top;L.offsetX=L.pageX-L.cursorOffsetX;L.offsetY=L.pageY-L.cursorOffsetY}else{if(F.dragging||(M.which>0&&L.which!=M.which)||E(L.target).is(M.not)){return }}switch(L.type){case\"mousedown\":E.extend(M,E(K).offset(),{elem:K,target:L.target,pageX:L.pageX,pageY:L.pageY});A.add(document,\"mousemove mouseup\",H,M);G(K,false);F.dragging=null;return false;case !F.dragging&&\"mousemove\":if(I(L.pageX-M.pageX)+I(L.pageY-M.pageY)<M.distance){break}L.target=M.target;J=C(L,\"dragstart\",K);if(J!==false){F.dragging=K;F.proxy=L.dragProxy=E(J||K)[0]}case\"mousemove\":if(F.dragging){J=C(L,\"drag\",K);if(B.drop){B.drop.allowed=(J!==false);B.drop.handler(L)}if(J!==false){break}L.type=\"mouseup\"}case\"mouseup\":A.remove(document,\"mousemove mouseup\",H);if(F.dragging){if(B.drop){B.drop.handler(L)}C(L,\"dragend\",K)}G(K,true);F.dragging=F.proxy=M.elem=false;break}return true}function C(M,K,L){M.type=K;var J=E.event.handle.call(L,M);return J===false?false:J||M.result}function I(J){return Math.pow(J,2)}function D(){return(F.dragging===false)}function G(K,J){if(!K){return }K.unselectable=J?\"off\":\"on\";K.onselectstart=function(){return J};if(K.style){K.style.MozUserSelect=J?\"\":\"none\"}}})(jQuery);\n\n\n/* jquery.mousewheel.min.js\n * Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n *\n * Version: 3.0.2\n * \n * Requires: 1.2.2+\n */\n(function(c){var a=[\"DOMMouseScroll\",\"mousewheel\"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind(\"mousewheel\",d):this.trigger(\"mousewheel\")},unmousewheel:function(d){return this.unbind(\"mousewheel\",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type=\"mousewheel\";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);\n\n\n\n\n(function ($) {\n    var options = {\n        xaxis: {\n            zoomRange: null, // or [number, number] (min range, max range)\n            panRange: null // or [number, number] (min, max)\n        },\n        zoom: {\n            interactive: false,\n            trigger: \"dblclick\", // or \"click\" for single click\n            amount: 1.5 // how much to zoom relative to current position, 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n        },\n        pan: {\n            interactive: false,\n            cursor: \"move\",\n            frameRate: 20\n        }\n    };\n\n    function init(plot) {\n        function onZoomClick(e, zoomOut) {\n            var c = plot.offset();\n            c.left = e.pageX - c.left;\n            c.top = e.pageY - c.top;\n            if (zoomOut)\n                plot.zoomOut({ center: c });\n            else\n                plot.zoom({ center: c });\n        }\n\n        function onMouseWheel(e, delta) {\n            onZoomClick(e, delta < 0);\n            return false;\n        }\n        \n        var prevCursor = 'default', prevPageX = 0, prevPageY = 0,\n            panTimeout = null;\n\n        function onDragStart(e) {\n            if (e.which != 1)  // only accept left-click\n                return false;\n            var c = plot.getPlaceholder().css('cursor');\n            if (c)\n                prevCursor = c;\n            plot.getPlaceholder().css('cursor', plot.getOptions().pan.cursor);\n            prevPageX = e.pageX;\n            prevPageY = e.pageY;\n        }\n        \n        function onDrag(e) {\n            var frameRate = plot.getOptions().pan.frameRate;\n            if (panTimeout || !frameRate)\n                return;\n\n            panTimeout = setTimeout(function () {\n                plot.pan({ left: prevPageX - e.pageX,\n                           top: prevPageY - e.pageY });\n                prevPageX = e.pageX;\n                prevPageY = e.pageY;\n                                                    \n                panTimeout = null;\n            }, 1 / frameRate * 1000);\n        }\n\n        function onDragEnd(e) {\n            if (panTimeout) {\n                clearTimeout(panTimeout);\n                panTimeout = null;\n            }\n                    \n            plot.getPlaceholder().css('cursor', prevCursor);\n            plot.pan({ left: prevPageX - e.pageX,\n                       top: prevPageY - e.pageY });\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.zoom.interactive) {\n                eventHolder[o.zoom.trigger](onZoomClick);\n                eventHolder.mousewheel(onMouseWheel);\n            }\n\n            if (o.pan.interactive) {\n                eventHolder.bind(\"dragstart\", { distance: 10 }, onDragStart);\n                eventHolder.bind(\"drag\", onDrag);\n                eventHolder.bind(\"dragend\", onDragEnd);\n            }\n        }\n\n        plot.zoomOut = function (args) {\n            if (!args)\n                args = {};\n            \n            if (!args.amount)\n                args.amount = plot.getOptions().zoom.amount\n\n            args.amount = 1 / args.amount;\n            plot.zoom(args);\n        }\n        \n        plot.zoom = function (args) {\n            if (!args)\n                args = {};\n            \n            var c = args.center,\n                amount = args.amount || plot.getOptions().zoom.amount,\n                w = plot.width(), h = plot.height();\n\n            if (!c)\n                c = { left: w / 2, top: h / 2 };\n                \n            var xf = c.left / w,\n                yf = c.top / h,\n                minmax = {\n                    x: {\n                        min: c.left - xf * w / amount,\n                        max: c.left + (1 - xf) * w / amount\n                    },\n                    y: {\n                        min: c.top - yf * h / amount,\n                        max: c.top + (1 - yf) * h / amount\n                    }\n                };\n\n            $.each(plot.getAxes(), function(_, axis) {\n                var opts = axis.options,\n                    min = minmax[axis.direction].min,\n                    max = minmax[axis.direction].max,\n                    zr = opts.zoomRange;\n\n                if (zr === false) // no zooming on this axis\n                    return;\n                    \n                min = axis.c2p(min);\n                max = axis.c2p(max);\n                if (min > max) {\n                    // make sure min < max\n                    var tmp = min;\n                    min = max;\n                    max = tmp;\n                }\n\n                var range = max - min;\n                if (zr &&\n                    ((zr[0] != null && range < zr[0]) ||\n                     (zr[1] != null && range > zr[1])))\n                    return;\n            \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotzoom\", [ plot ]);\n        }\n\n        plot.pan = function (args) {\n            var delta = {\n                x: +args.left,\n                y: +args.top\n            };\n\n            if (isNaN(delta.x))\n                delta.x = 0;\n            if (isNaN(delta.y))\n                delta.y = 0;\n\n            $.each(plot.getAxes(), function (_, axis) {\n                var opts = axis.options,\n                    min, max, d = delta[axis.direction];\n\n                min = axis.c2p(axis.p2c(axis.min) + d),\n                max = axis.c2p(axis.p2c(axis.max) + d);\n\n                var pr = opts.panRange;\n                if (pr === false) // no panning on this axis\n                    return;\n                \n                if (pr) {\n                    // check whether we hit the wall\n                    if (pr[0] != null && pr[0] > min) {\n                        d = pr[0] - min;\n                        min += d;\n                        max += d;\n                    }\n                    \n                    if (pr[1] != null && pr[1] < max) {\n                        d = pr[1] - max;\n                        min += d;\n                        max += d;\n                    }\n                }\n                \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotpan\", [ plot ]);\n        }\n\n        function shutdown(plot, eventHolder) {\n            eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick);\n            eventHolder.unbind(\"mousewheel\", onMouseWheel);\n            eventHolder.unbind(\"dragstart\", onDragStart);\n            eventHolder.unbind(\"drag\", onDrag);\n            eventHolder.unbind(\"dragend\", onDragEnd);\n            if (panTimeout)\n                clearTimeout(panTimeout);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'navigate',\n        version: '1.3'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.orderBars.js",
    "content": "/*\n * Flot plugin to order bars side by side.\n * \n * Released under the MIT license by Benjamin BUFFET, 20-Sep-2010.\n *\n * This plugin is an alpha version.\n *\n * To activate the plugin you must specify the parameter \"order\" for the specific serie :\n *\n *  $.plot($(\"#placeholder\"), [{ data: [ ... ], bars :{ order = null or integer }])\n *\n * If 2 series have the same order param, they are ordered by the position in the array;\n *\n * The plugin adjust the point by adding a value depanding of the barwidth\n * Exemple for 3 series (barwidth : 0.1) :\n *\n *          first bar décalage : -0.15\n *          second bar décalage : -0.05\n *          third bar décalage : 0.05\n *\n */\n\n(function($){\n    function init(plot){\n        var orderedBarSeries;\n        var nbOfBarsToOrder;\n        var borderWidth;\n        var borderWidthInXabsWidth;\n        var pixelInXWidthEquivalent = 1;\n        var isHorizontal = false;\n\n        /*\n         * This method add shift to x values\n         */\n        function reOrderBars(plot, serie, datapoints){\n            var shiftedPoints = null;\n            \n            if(serieNeedToBeReordered(serie)){                \n                checkIfGraphIsHorizontal(serie);\n                calculPixel2XWidthConvert(plot);\n                retrieveBarSeries(plot);\n                calculBorderAndBarWidth(serie);\n                \n                if(nbOfBarsToOrder >= 2){  \n                    var position = findPosition(serie);\n                    var decallage = 0;\n                    \n                    var centerBarShift = calculCenterBarShift();\n\n                    if (isBarAtLeftOfCenter(position)){\n                        decallage = -1*(sumWidth(orderedBarSeries,position-1,Math.floor(nbOfBarsToOrder / 2)-1)) - centerBarShift;\n                    }else{\n                        decallage = sumWidth(orderedBarSeries,Math.ceil(nbOfBarsToOrder / 2),position-2) + centerBarShift + borderWidthInXabsWidth*2;\n                    }\n\n                    shiftedPoints = shiftPoints(datapoints,serie,decallage);\n                    datapoints.points = shiftedPoints;\n               }\n           }\n           return shiftedPoints;\n        }\n\n        function serieNeedToBeReordered(serie){\n            return serie.bars != null\n                && serie.bars.show\n                && serie.bars.order != null;\n        }\n\n        function calculPixel2XWidthConvert(plot){\n            var gridDimSize = isHorizontal ? plot.getPlaceholder().innerHeight() : plot.getPlaceholder().innerWidth();\n            var minMaxValues = isHorizontal ? getAxeMinMaxValues(plot.getData(),1) : getAxeMinMaxValues(plot.getData(),0);\n            var AxeSize = minMaxValues[1] - minMaxValues[0];\n            pixelInXWidthEquivalent = AxeSize / gridDimSize;\n        }\n\n        function getAxeMinMaxValues(series,AxeIdx){\n            var minMaxValues = new Array();\n            for(var i = 0; i < series.length; i++){\n                minMaxValues[0] = series[i].data[0][AxeIdx];\n                minMaxValues[1] = series[i].data[series[i].data.length - 1][AxeIdx];\n            }\n            return minMaxValues;\n        }\n\n        function retrieveBarSeries(plot){\n            orderedBarSeries = findOthersBarsToReOrders(plot.getData());\n            nbOfBarsToOrder = orderedBarSeries.length;\n        }\n\n        function findOthersBarsToReOrders(series){\n            var retSeries = new Array();\n\n            for(var i = 0; i < series.length; i++){\n                if(series[i].bars.order != null && series[i].bars.show){\n                    retSeries.push(series[i]);\n                }\n            }\n\n            return retSeries.sort(sortByOrder);\n        }\n\n        function sortByOrder(serie1,serie2){\n            var x = serie1.bars.order;\n            var y = serie2.bars.order;\n            return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n        }\n\n        function  calculBorderAndBarWidth(serie){\n            borderWidth = serie.bars.lineWidth ? serie.bars.lineWidth  : 2;\n            borderWidthInXabsWidth = borderWidth * pixelInXWidthEquivalent;\n        }\n        \n        function checkIfGraphIsHorizontal(serie){\n            if(serie.bars.horizontal){\n                isHorizontal = true;\n            }\n        }\n\n        function findPosition(serie){\n            var pos = 0\n            for (var i = 0; i < orderedBarSeries.length; ++i) {\n                if (serie == orderedBarSeries[i]){\n                    pos = i;\n                    break;\n                }\n            }\n\n            return pos+1;\n        }\n\n        function calculCenterBarShift(){\n            var width = 0;\n\n            if(nbOfBarsToOrder%2 != 0)\n                width = (orderedBarSeries[Math.ceil(nbOfBarsToOrder / 2)].bars.barWidth)/2;\n\n            return width;\n        }\n\n        function isBarAtLeftOfCenter(position){\n            return position <= Math.ceil(nbOfBarsToOrder / 2);\n        }\n\n        function sumWidth(series,start,end){\n            var totalWidth = 0;\n\n            for(var i = start; i <= end; i++){\n                totalWidth += series[i].bars.barWidth+borderWidthInXabsWidth*2;\n            }\n\n            return totalWidth;\n        }\n\n        function shiftPoints(datapoints,serie,dx){\n            var ps = datapoints.pointsize;\n            var points = datapoints.points;\n            var j = 0;           \n            for(var i = isHorizontal ? 1 : 0;i < points.length; i += ps){\n                points[i] += dx;\n                //Adding the new x value in the serie to be abble to display the right tooltip value,\n                //using the index 3 to not overide the third index.\n                serie.data[j][3] = points[i];\n                j++;\n            }\n\n            return points;\n        }\n\n        plot.hooks.processDatapoints.push(reOrderBars);\n\n    }\n\n    var options = {\n        series : {\n            bars: {order: null} // or number/string\n        }\n    };\n\n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: \"orderBars\",\n        version: \"0.2\"\n    });\n\n})(jQuery)\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.js",
    "content": "/*\nFlot plugin for rendering pie charts. The plugin assumes the data is \ncoming is as a single data value for each series, and each of those \nvalues is a positive value or zero (negative numbers don't make \nany sense and will cause strange effects). The data values do \nNOT need to be passed in as percentage values because it \ninternally calculates the total and percentages.\n\n* Created by Brian Medendorp, June 2009\n* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars\n\n* Changes:\n\t2009-10-22: lineJoin set to round\n\t2009-10-23: IE full circle fix, donut\n\t2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera\n\t2009-11-17: Added IE hover capability submitted by Anthony Aragues\n\t2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well)\n\t\t\n\nAvailable options are:\nseries: {\n\tpie: {\n\t\tshow: true/false\n\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\toffset: {\n\t\t\ttop: integer value to move the pie up or down\n\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t},\n\t\tstroke: {\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\twidth: integer pixel width of the stroke\n\t\t},\n\t\tlabel: {\n\t\t\tshow: true/false, or 'auto'\n\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\tbackground: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\topacity: 0-1\n\t\t\t},\n\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t},\n\t\tcombine: {\n\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t}\n\t\thighlight: {\n\t\t\topacity: 0-1\n\t\t}\n\t}\n}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function ($) \n{\n\tfunction init(plot) // this is the \"body\" of the plugin\n\t{\n\t\tvar canvas = null;\n\t\tvar target = null;\n\t\tvar maxRadius = null;\n\t\tvar centerLeft = null;\n\t\tvar centerTop = null;\n\t\tvar total = 0;\n\t\tvar redraw = true;\n\t\tvar redrawAttempts = 10;\n\t\tvar shrink = 0.95;\n\t\tvar legendWidth = 0;\n\t\tvar processed = false;\n\t\tvar raw = false;\n\t\t\n\t\t// interactive variables\t\n\t\tvar highlights = [];\t\n\t\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\t\tplot.hooks.processOptions.push(checkPieEnabled);\n\t\tplot.hooks.bindEvents.push(bindEvents);\t\n\n\t\t// check to see if the pie plugin is enabled\n\t\tfunction checkPieEnabled(plot, options)\n\t\t{\n\t\t\tif (options.series.pie.show)\n\t\t\t{\n\t\t\t\t//disable grid\n\t\t\t\toptions.grid.show = false;\n\t\t\t\t\n\t\t\t\t// set labels.show\n\t\t\t\tif (options.series.pie.label.show=='auto')\n\t\t\t\t\tif (options.legend.show)\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius=='auto')\n\t\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t\t\n\t\t\t\t// ensure sane tilt\n\t\t\t\tif (options.series.pie.tilt>1)\n\t\t\t\t\toptions.series.pie.tilt=1;\n\t\t\t\tif (options.series.pie.tilt<0)\n\t\t\t\t\toptions.series.pie.tilt=0;\n\t\t\t\n\t\t\t\t// add processData hook to do transformations on the data\n\t\t\t\tplot.hooks.processDatapoints.push(processDatapoints);\n\t\t\t\tplot.hooks.drawOverlay.push(drawOverlay);\t\n\t\t\t\t\n\t\t\t\t// add draw hook\n\t\t\t\tplot.hooks.draw.push(draw);\n\t\t\t}\n\t\t}\n\t\n\t\t// bind hoverable events\n\t\tfunction bindEvents(plot, eventHolder) \t\t\n\t\t{\t\t\n\t\t\tvar options = plot.getOptions();\n\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.hoverable)\n\t\t\t\teventHolder.unbind('mousemove').mousemove(onMouseMove);\n\t\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.clickable)\n\t\t\t\teventHolder.unbind('click').click(onClick);\n\t\t}\t\n\t\t\n\n\t\t// debugging function that prints out an object\n\t\tfunction alertObject(obj)\n\t\t{\n\t\t\tvar msg = '';\n\t\t\tfunction traverse(obj, depth)\n\t\t\t{\n\t\t\t\tif (!depth)\n\t\t\t\t\tdepth = 0;\n\t\t\t\tfor (var i = 0; i < obj.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tfor (var j=0; j<depth; j++)\n\t\t\t\t\t\tmsg += '\\t';\n\t\t\t\t\n\t\t\t\t\tif( typeof obj[i] == \"object\")\n\t\t\t\t\t{\t// its an object\n\t\t\t\t\t\tmsg += ''+i+':\\n';\n\t\t\t\t\t\ttraverse(obj[i], depth+1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\t// its a value\n\t\t\t\t\t\tmsg += ''+i+': '+obj[i]+'\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttraverse(obj);\n\t\t\talert(msg);\n\t\t}\n\t\t\n\t\tfunction calcTotal(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tvar item = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (item)\n\t\t\t\t\ttotal += item;\n\t\t\t}\n\t\t}\t\n\t\t\n\t\tfunction processDatapoints(plot, series, data, datapoints) \n\t\t{\t\n\t\t\tif (!processed)\n\t\t\t{\n\t\t\t\tprocessed = true;\n\t\t\t\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction setupPie()\n\t\t{\n\t\t\tlegendWidth = target.children().filter('.legend').children().width();\n\t\t\n\t\t\t// calculate maximum radius and center point\n\t\t\tmaxRadius =  Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2;\n\t\t\tcenterTop = (canvas.height/2)+options.series.pie.offset.top;\n\t\t\tcenterLeft = (canvas.width/2);\n\t\t\t\n\t\t\tif (options.series.pie.offset.left=='auto')\n\t\t\t\tif (options.legend.position.match('w'))\n\t\t\t\t\tcenterLeft += legendWidth/2;\n\t\t\t\telse\n\t\t\t\t\tcenterLeft -= legendWidth/2;\n\t\t\telse\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t\t\t\n\t\t\tif (centerLeft<maxRadius)\n\t\t\t\tcenterLeft = maxRadius;\n\t\t\telse if (centerLeft>canvas.width-maxRadius)\n\t\t\t\tcenterLeft = canvas.width-maxRadius;\n\t\t}\n\t\t\n\t\tfunction fixData(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tif (typeof(data[i].data)=='number')\n\t\t\t\t\tdata[i].data = [[1,data[i].data]];\n\t\t\t\telse if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined')\n\t\t\t\t{\n\t\t\t\t\tif (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined')\n\t\t\t\t\t\tdata[i].label = data[i].data.label; // fix weirdness coming from flot\n\t\t\t\t\tdata[i].data = [[1,0]];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t\t\n\t\tfunction combine(data)\n\t\t{\n\t\t\tdata = fixData(data);\n\t\t\tcalcTotal(data);\n\t\t\tvar combined = 0;\n\t\t\tvar numCombined = 0;\n\t\t\tvar color = options.series.pie.combine.color;\n\t\t\t\n\t\t\tvar newdata = [];\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\t// make sure its a number\n\t\t\t\tdata[i].data[0][1] = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (!data[i].data[0][1])\n\t\t\t\t\tdata[i].data[0][1] = 0;\n\t\t\t\t\t\n\t\t\t\tif (data[i].data[0][1]/total<=options.series.pie.combine.threshold)\n\t\t\t\t{\n\t\t\t\t\tcombined += data[i].data[0][1];\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color)\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t}\t\t\t\t\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewdata.push({\n\t\t\t\t\t\tdata: [[1,data[i].data[0][1]]], \n\t\t\t\t\t\tcolor: data[i].color, \n\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\tangle: (data[i].data[0][1]*(Math.PI*2))/total,\n\t\t\t\t\t\tpercent: (data[i].data[0][1]/total*100)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (numCombined>0)\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1,combined]], \n\t\t\t\t\tcolor: color, \n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: (combined*(Math.PI*2))/total,\n\t\t\t\t\tpercent: (combined/total*100)\n\t\t\t\t});\n\t\t\treturn newdata;\n\t\t}\t\t\n\t\t\n\t\tfunction draw(plot, newCtx)\n\t\t{\n\t\t\tif (!target) return; // if no series were passed\n\t\t\tctx = newCtx;\n\t\t\n\t\t\tsetupPie();\n\t\t\tvar slices = plot.getData();\n\t\t\n\t\t\tvar attempts = 0;\n\t\t\tredraw = true;\n\t\t\twhile (redraw && attempts<redrawAttempts)\n\t\t\t{\n\t\t\t\tredraw = false;\n\t\t\t\tif (attempts>0)\n\t\t\t\t\tmaxRadius *= shrink;\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt<=0.8)\n\t\t\t\t\tdrawShadow();\n\t\t\t\tdrawPie();\n\t\t\t}\n\t\t\tif (attempts >= redrawAttempts) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend('<div class=\"error\">Could not draw pie with labels contained inside canvas</div>');\n\t\t\t}\n\t\t\t\n\t\t\tif ( plot.setSeries && plot.insertLegend )\n\t\t\t{\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\t\t\t\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\t\t\t\n\t\t\tfunction clear()\n\t\t\t{\n\t\t\t\tctx.clearRect(0,0,canvas.width,canvas.height);\n\t\t\t\ttarget.children().filter('.pieLabel, .pieLabelBackground').remove();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawShadow()\n\t\t\t{\n\t\t\t\tvar shadowLeft = 5;\n\t\t\t\tvar shadowTop = 15;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = 0.02;\n\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\t\n\t\t\t\tif (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge)\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = '#000';\n\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t\n\t\t\t\t//radius -= edge;\n\t\t\t\tfor (var i=1; i<=edge; i++)\n\t\t\t\t{\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0,0,radius,0,Math.PI*2,false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawPie()\n\t\t\t{\n\t\t\t\tstartAngle = Math.PI*options.series.pie.startAngle;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\t\t\t\t\n\t\t\t\t// draw slices\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\t// draw slice outlines\n\t\t\t\tctx.save();\n\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\tctx.restore();\n\t\t\t\t\t\n\t\t\t\t// draw donut hole\n\t\t\t\tdrawDonutHole(ctx);\n\t\t\t\t\n\t\t\t\t// draw labels\n\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\tdrawLabels();\n\t\t\t\t\n\t\t\t\t// restore to original state\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\tfunction drawSlice(angle, color, fill)\n\t\t\t\t{\t\n\t\t\t\t\tif (angle<=0)\n\t\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = 'round';\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\telse if ($.browser.msie)\n\t\t\t\t\t\tangle -= 0.0001;\n\t\t\t\t\t//ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0,0,radius,currentAngle,currentAngle+angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\t\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\telse\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction drawLabels()\n\t\t\t\t{\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\t\n\t\t\t\t\t// set radius\n\t\t\t\t\tif (options.series.pie.label.radius>1)\n\t\t\t\t\t\tvar radius = options.series.pie.label.radius;\n\t\t\t\t\telse\n\t\t\t\t\t\tvar radius = maxRadius * options.series.pie.label.radius;\n\t\t\t\t\t\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold*100)\n\t\t\t\t\t\t\tdrawLabel(slices[i], currentAngle, i);\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slice.data[0][1]==0)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// format label text\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\t\t\t\t\t\tif (lf)\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\tif (plf)\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar halfAngle = ((startAngle+slice.angle) + startAngle)/2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar html = '<span class=\"pieLabel\" id=\"pieLabel'+index+'\" style=\"position:absolute;top:' + y + 'px;left:' + x + 'px;\">' + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\t\t\t\t\t\tvar label = target.children('#pieLabel'+index);\n\t\t\t\t\t\tvar labelTop = (y - label.height()/2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width()/2);\n\t\t\t\t\t\tlabel.css('top', labelTop);\n\t\t\t\t\t\tlabel.css('left', labelLeft);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\t\t\t\t\t\tif (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0)\n\t\t\t\t\t\t\tredraw = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;';\n\t\t\t\t\t\t\t$('<div class=\"pieLabelBackground\" style=\"position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity);\n\t\t\t\t\t\t}\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\t\t\n\t\t// Placed here because it needs to be accessed from multiple locations \n\t\tfunction drawDonutHole(layer)\n\t\t{\n\t\t\t// draw donut hole\n\t\t\tif(options.series.pie.innerRadius > 0)\n\t\t\t{\n\t\t\t\t// subtract the center\n\t\t\t\tlayer.save();\n\t\t\t\tinnerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t\n\t\t\t\t// add inner stroke\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\t\t\n\t\t//-- Additional Interactive related functions --\n\t\t\n\t\tfunction isPointInPoly(poly, pt)\n\t\t{\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\t\t\n\t\tfunction findNearbySlice(mouseX, mouseY)\n\t\t{\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\t\t\t\n\t\t\tfor (var i = 0; i < slices.length; ++i) \n\t\t\t{\n\t\t\t\tvar s = slices[i];\t\n\t\t\t\t\n\t\t\t\tif(s.pie.show)\n\t\t\t\t{\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX-centerLeft;\n\t\t\t\t\ty = mouseY-centerTop;\n\t\t\t\t\tif(ctx.isPointInPath)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//alert('found slice!');\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround. \n\t\t\t\t\t\tp1X = (radius * Math.cos(s.startAngle));\n\t\t\t\t\t\tp1Y = (radius * Math.sin(s.startAngle));\n\t\t\t\t\t\tp2X = (radius * Math.cos(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp2Y = (radius * Math.sin(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp3X = (radius * Math.cos(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp3Y = (radius * Math.sin(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp4X = (radius * Math.cos(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp5X = (radius * Math.cos(s.startAngle+s.angle));\n\t\t\t\t\t\tp5Y = (radius * Math.sin(s.startAngle+s.angle));\n\t\t\t\t\t\tarrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];\n\t\t\t\t\t\tarrPoint = [x,y];\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\t\t\t\t\t\tif(isPointInPoly(arrPoly, arrPoint))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plothover', e);\n\t\t}\n\t\t\n        function onClick(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plotclick', e);\n        }\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\t\tfunction triggerClickHoverEvent(eventname, e) \n\t\t{\n\t\t\tvar offset = plot.offset(),\n\t\t\t\tcanvasX = parseInt(e.pageX - offset.left),\n\t\t\t\tcanvasY =  parseInt(e.pageY - offset.top),\n\t\t\t\titem = findNearbySlice(canvasX, canvasY);\n\t\t\t\n\t\t\tif (options.grid.autoHighlight) \n\t\t\t{\n\t\t\t\t// clear auto-highlights\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t\t{\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series))\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// highlight the slice\n\t\t\tif (item) \n\t\t\t    highlight(item.series, eventname);\n\t\t\t\t\n\t\t\t// trigger any hover bind events\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [ pos, item ]);\t\n\t\t}\n\n\t\tfunction highlight(s, auto) \n\t\t{\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i == -1) \n\t\t\t{\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\telse if (!auto)\n\t\t\t\thighlights[i].auto = false;\n\t\t}\n\n\t\tfunction unhighlight(s) \n\t\t{\n\t\t\tif (s == null) \n\t\t\t{\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i != -1) \n\t\t\t{\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) \n\t\t{\n\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t{\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) \n\t\t{\n\t\t\t//alert(options.series.pie.radius);\n\t\t\tvar options = plot.getOptions();\n\t\t\t//alert(options.series.pie.radius);\n\t\t\t\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\t\t\t\n\t\t\tfor (i = 0; i < highlights.length; ++i) \n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) \n\t\t\t{\n\t\t\t\tif (series.angle < 0) return;\n\t\t\t\t\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \"+options.series.pie.highlight.opacity+\")\"; // this is temporary until we have access to parseColor\n\t\t\t\t\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\toctx.moveTo(0,0); // Center of the pie\n\t\t\t\toctx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t\t\n\t\t}\t\n\t\t\n\t} // end init (plugin body)\n\t\n\t// define pie specific options and their default values\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: 'auto',\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius:0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 'auto'\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: '#FFF',\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: 'auto',\n\t\t\t\t\tformatter: function(label, slice){\n\t\t\t\t\t\treturn '<div style=\"font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';\">'+label+'<br/>'+Math.round(slice.percent)+'%</div>';\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: 'Other'\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: '#FFF',\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.0\"\n\t});\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.js",
    "content": "/*\nFlot plugin for automatically redrawing plots when the placeholder\nsize changes, e.g. on window resizes.\n\nIt works by listening for changes on the placeholder div (through the\njQuery resize event plugin) - if the size changes, it will redraw the\nplot.\n\nThere are no options. If you need to disable the plugin for some\nplots, you can just fix the size of their placeholders.\n*/\n\n\n/* Inline dependency: \n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k=\"setTimeout\",j=\"resize\",d=j+\"-special-event\",b=\"delay\",f=\"throttleWindow\";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);\n\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.js",
    "content": "/*\nFlot plugin for selecting regions.\n\nThe plugin defines the following options:\n\n  selection: {\n    mode: null or \"x\" or \"y\" or \"xy\",\n    color: color\n  }\n\nSelection support is enabled by setting the mode to one of \"x\", \"y\" or\n\"xy\". In \"x\" mode, the user will only be able to specify the x range,\nsimilarly for \"y\" mode. For \"xy\", the selection becomes a rectangle\nwhere both ranges can be specified. \"color\" is color of the selection\n(if you need to change the color later on, you can get to it with\nplot.getOptions().selection.color).\n\nWhen selection support is enabled, a \"plotselected\" event will be\nemitted on the DOM element you passed into the plot function. The\nevent handler gets a parameter with the ranges selected on the axes,\nlike this:\n\n  placeholder.bind(\"plotselected\", function(event, ranges) {\n    alert(\"You selected \" + ranges.xaxis.from + \" to \" + ranges.xaxis.to)\n    // similar for yaxis - with multiple axes, the extra ones are in\n    // x2axis, x3axis, ...\n  });\n\nThe \"plotselected\" event is only fired when the user has finished\nmaking the selection. A \"plotselecting\" event is fired during the\nprocess with the same parameters as the \"plotselected\" event, in case\nyou want to know what's happening while it's happening,\n\nA \"plotunselected\" event with no arguments is emitted when the user\nclicks the mouse to remove the selection.\n\nThe plugin allso adds the following methods to the plot object:\n\n- setSelection(ranges, preventEvent)\n\n  Set the selection rectangle. The passed in ranges is on the same\n  form as returned in the \"plotselected\" event. If the selection mode\n  is \"x\", you should put in either an xaxis range, if the mode is \"y\"\n  you need to put in an yaxis range and both xaxis and yaxis if the\n  selection mode is \"xy\", like this:\n\n    setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } });\n\n  setSelection will trigger the \"plotselected\" event when called. If\n  you don't want that to happen, e.g. if you're inside a\n  \"plotselected\" handler, pass true as the second parameter. If you\n  are using multiple axes, you can specify the ranges on any of those,\n  e.g. as x2axis/x3axis/... instead of xaxis, the plugin picks the\n  first one it sees.\n  \n- clearSelection(preventEvent)\n\n  Clear the selection rectangle. Pass in true to avoid getting a\n  \"plotunselected\" event.\n\n- getSelection()\n\n  Returns the current selection in the same format as the\n  \"plotselected\" event. If there's currently no selection, the\n  function returns null.\n\n*/\n\n(function ($) {\n    function init(plot) {\n        var selection = {\n                first: { x: -1, y: -1}, second: { x: -1, y: -1},\n                show: false,\n                active: false\n            };\n\n        // FIXME: The drag handling implemented here should be\n        // abstracted out, there's some similar code from a library in\n        // the navigation plugin, this should be massaged a bit to fit\n        // the Flot cases here better and reused. Doing this would\n        // make this plugin much slimmer.\n        var savedhandlers = {};\n\n        var mouseUpHandler = null;\n        \n        function onMouseMove(e) {\n            if (selection.active) {\n                updateSelection(e);\n                \n                plot.getPlaceholder().trigger(\"plotselecting\", [ getSelection() ]);\n            }\n        }\n\n        function onMouseDown(e) {\n            if (e.which != 1)  // only accept left-click\n                return;\n            \n            // cancel out any text selections\n            document.body.focus();\n\n            // prevent text selection and drag in old-school browsers\n            if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) {\n                savedhandlers.onselectstart = document.onselectstart;\n                document.onselectstart = function () { return false; };\n            }\n            if (document.ondrag !== undefined && savedhandlers.ondrag == null) {\n                savedhandlers.ondrag = document.ondrag;\n                document.ondrag = function () { return false; };\n            }\n\n            setSelectionPos(selection.first, e);\n\n            selection.active = true;\n\n            // this is a bit silly, but we have to use a closure to be\n            // able to whack the same handler again\n            mouseUpHandler = function (e) { onMouseUp(e); };\n            \n            $(document).one(\"mouseup\", mouseUpHandler);\n        }\n\n        function onMouseUp(e) {\n            mouseUpHandler = null;\n            \n            // revert drag stuff for old-school browsers\n            if (document.onselectstart !== undefined)\n                document.onselectstart = savedhandlers.onselectstart;\n            if (document.ondrag !== undefined)\n                document.ondrag = savedhandlers.ondrag;\n\n            // no more dragging\n            selection.active = false;\n            updateSelection(e);\n\n            if (selectionIsSane())\n                triggerSelectedEvent();\n            else {\n                // this counts as a clear\n                plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n                plot.getPlaceholder().trigger(\"plotselecting\", [ null ]);\n            }\n\n            return false;\n        }\n\n        function getSelection() {\n            if (!selectionIsSane())\n                return null;\n\n            var r = {}, c1 = selection.first, c2 = selection.second;\n            $.each(plot.getAxes(), function (name, axis) {\n                if (axis.used) {\n                    var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); \n                    r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };\n                }\n            });\n            return r;\n        }\n\n        function triggerSelectedEvent() {\n            var r = getSelection();\n\n            plot.getPlaceholder().trigger(\"plotselected\", [ r ]);\n\n            // backwards-compat stuff, to be removed in future\n            if (r.xaxis && r.yaxis)\n                plot.getPlaceholder().trigger(\"selected\", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]);\n        }\n\n        function clamp(min, value, max) {\n            return value < min ? min: (value > max ? max: value);\n        }\n\n        function setSelectionPos(pos, e) {\n            var o = plot.getOptions();\n            var offset = plot.getPlaceholder().offset();\n            var plotOffset = plot.getPlotOffset();\n            pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width());\n            pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height());\n\n            if (o.selection.mode == \"y\")\n                pos.x = pos == selection.first ? 0 : plot.width();\n\n            if (o.selection.mode == \"x\")\n                pos.y = pos == selection.first ? 0 : plot.height();\n        }\n\n        function updateSelection(pos) {\n            if (pos.pageX == null)\n                return;\n\n            setSelectionPos(selection.second, pos);\n            if (selectionIsSane()) {\n                selection.show = true;\n                plot.triggerRedrawOverlay();\n            }\n            else\n                clearSelection(true);\n        }\n\n        function clearSelection(preventEvent) {\n            if (selection.show) {\n                selection.show = false;\n                plot.triggerRedrawOverlay();\n                if (!preventEvent)\n                    plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n            }\n        }\n\n        // function taken from markings support in Flot\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = plot.getAxes();\n\n            for (var k in axes) {\n                axis = axes[k];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? plot.getXAxes()[0] : plot.getYAxes()[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function setSelection(ranges, preventEvent) {\n            var axis, range, o = plot.getOptions();\n\n            if (o.selection.mode == \"y\") {\n                selection.first.x = 0;\n                selection.second.x = plot.width();\n            }\n            else {\n                range = extractRange(ranges, \"x\");\n\n                selection.first.x = range.axis.p2c(range.from);\n                selection.second.x = range.axis.p2c(range.to);\n            }\n\n            if (o.selection.mode == \"x\") {\n                selection.first.y = 0;\n                selection.second.y = plot.height();\n            }\n            else {\n                range = extractRange(ranges, \"y\");\n\n                selection.first.y = range.axis.p2c(range.from);\n                selection.second.y = range.axis.p2c(range.to);\n            }\n\n            selection.show = true;\n            plot.triggerRedrawOverlay();\n            if (!preventEvent && selectionIsSane())\n                triggerSelectedEvent();\n        }\n\n        function selectionIsSane() {\n            var minSize = 5;\n            return Math.abs(selection.second.x - selection.first.x) >= minSize &&\n                Math.abs(selection.second.y - selection.first.y) >= minSize;\n        }\n\n        plot.clearSelection = clearSelection;\n        plot.setSelection = setSelection;\n        plot.getSelection = getSelection;\n\n        plot.hooks.bindEvents.push(function(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.selection.mode != null) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mousedown(onMouseDown);\n            }\n        });\n\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            // draw selection\n            if (selection.show && selectionIsSane()) {\n                var plotOffset = plot.getPlotOffset();\n                var o = plot.getOptions();\n\n                ctx.save();\n                ctx.translate(plotOffset.left, plotOffset.top);\n\n                var c = $.color.parse(o.selection.color);\n\n                ctx.strokeStyle = c.scale('a', 0.8).toString();\n                ctx.lineWidth = 1;\n                ctx.lineJoin = \"round\";\n                ctx.fillStyle = c.scale('a', 0.4).toString();\n\n                var x = Math.min(selection.first.x, selection.second.x),\n                    y = Math.min(selection.first.y, selection.second.y),\n                    w = Math.abs(selection.second.x - selection.first.x),\n                    h = Math.abs(selection.second.y - selection.first.y);\n\n                ctx.fillRect(x, y, w, h);\n                ctx.strokeRect(x, y, w, h);\n\n                ctx.restore();\n            }\n        });\n        \n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mousedown\", onMouseDown);\n            \n            if (mouseUpHandler)\n                $(document).unbind(\"mouseup\", mouseUpHandler);\n        });\n\n    }\n\n    $.plot.plugins.push({\n        init: init,\n        options: {\n            selection: {\n                mode: null, // one of null, \"x\", \"y\" or \"xy\"\n                color: \"#e8cfac\"\n            }\n        },\n        name: 'selection',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.js",
    "content": "/*\nFlot plugin for stacking data sets, i.e. putting them on top of each\nother, for accumulative graphs.\n\nThe plugin assumes the data is sorted on x (or y if stacking\nhorizontally). For line charts, it is assumed that if a line has an\nundefined gap (from a null point), then the line above it should have\nthe same gap - insert zeros instead of \"null\" if you want another\nbehaviour. This also holds for the start and end of the chart. Note\nthat stacking a mix of positive and negative values in most instances\ndoesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to\nthe same key (which can be any number or string or just \"true\"). To\nspecify the default stack, you can set\n\n  series: {\n    stack: null or true or key (number/string)\n  }\n\nor specify it for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], stack: true }])\n  \nThe stacking order is determined by the order of the data series in\nthe array (later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding\nan offset to the y value. For line series, extra data points are\ninserted through interpolation. If there's a second y value, it's also\nadjusted (e.g for bar charts or filled areas).\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.js",
    "content": "/*\nFlot plugin that adds some extra symbols for plotting points.\n\nThe symbols are accessed as strings through the standard symbol\nchoice:\n\n  series: {\n      points: {\n          symbol: \"square\" // or \"diamond\", \"triangle\", \"cross\"\n      }\n  }\n\n*/\n\n(function ($) {\n    function processRawData(plot, series, datapoints) {\n        // we normalize the area of each symbol so it is approximately the\n        // same as a circle of the given radius\n\n        var handlers = {\n            square: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.rect(x - size, y - size, size + size, size + size);\n            },\n            diamond: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 2s^2  =>  s = r * sqrt(pi/2)\n                var size = radius * Math.sqrt(Math.PI / 2);\n                ctx.moveTo(x - size, y);\n                ctx.lineTo(x, y - size);\n                ctx.lineTo(x + size, y);\n                ctx.lineTo(x, y + size);\n                ctx.lineTo(x - size, y);\n            },\n            triangle: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))\n                var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));\n                var height = size * Math.sin(Math.PI / 3);\n                ctx.moveTo(x - size/2, y + height/2);\n                ctx.lineTo(x + size/2, y + height/2);\n                if (!shadow) {\n                    ctx.lineTo(x, y - height/2);\n                    ctx.lineTo(x - size/2, y + height/2);\n                }\n            },\n            cross: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.moveTo(x - size, y - size);\n                ctx.lineTo(x + size, y + size);\n                ctx.moveTo(x - size, y + size);\n                ctx.lineTo(x + size, y - size);\n            }\n        }\n\n        var s = series.points.symbol;\n        if (handlers[s])\n            series.points.symbol = handlers[s];\n    }\n    \n    function init(plot) {\n        plot.hooks.processDatapoints.push(processRawData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        name: 'symbols',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.js",
    "content": "/*\nFlot plugin for thresholding data. Controlled through the option\n\"threshold\" in either the global series options\n\n  series: {\n    threshold: {\n      below: number\n      color: colorspec\n    }\n  }\n\nor in a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], threshold: { ... }}])\n\nThe data points below \"below\" are drawn with the specified color. This\nmakes it easy to mark points below 0, e.g. for budget data.\n\nInternally, the plugin works by splitting the data into two series,\nabove and below the threshold. The extra series below the threshold\nwill have its label cleared and the special \"originSeries\" attribute\nset to the original series. You may need to check for this in hover\nevents.\n*/\n\n(function ($) {\n    var options = {\n        series: { threshold: null } // or { below: number, color: color spec}\n    };\n    \n    function init(plot) {\n        function thresholdData(plot, s, datapoints) {\n            if (!s.threshold)\n                return;\n            \n            var ps = datapoints.pointsize, i, x, y, p, prevp,\n                thresholded = $.extend({}, s); // note: shallow copy\n\n            thresholded.datapoints = { points: [], pointsize: ps };\n            thresholded.label = null;\n            thresholded.color = s.threshold.color;\n            thresholded.threshold = null;\n            thresholded.originSeries = s;\n            thresholded.data = [];\n\n            var below = s.threshold.below,\n                origpoints = datapoints.points,\n                addCrossingPoints = s.lines.show;\n\n            threspoints = [];\n            newpoints = [];\n\n            for (i = 0; i < origpoints.length; i += ps) {\n                x = origpoints[i]\n                y = origpoints[i + 1];\n\n                prevp = p;\n                if (y < below)\n                    p = threspoints;\n                else\n                    p = newpoints;\n\n                if (addCrossingPoints && prevp != p && x != null\n                    && i > 0 && origpoints[i - ps] != null) {\n                    var interx = (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]) * (below - y) + x;\n                    prevp.push(interx);\n                    prevp.push(below);\n                    for (m = 2; m < ps; ++m)\n                        prevp.push(origpoints[i + m]);\n                    \n                    p.push(null); // start new segment\n                    p.push(null);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                    p.push(interx);\n                    p.push(below);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                }\n\n                p.push(x);\n                p.push(y);\n            }\n\n            datapoints.points = newpoints;\n            thresholded.datapoints.points = threspoints;\n            \n            if (thresholded.datapoints.points.length > 0)\n                plot.getData().push(thresholded);\n                \n            // FIXME: there are probably some edge cases left in bars\n        }\n        \n        plot.hooks.processDatapoints.push(thresholdData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'threshold',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.js",
    "content": "/*\n * jquery.flot.tooltip\n *\n * desc:\tcreate tooltip with values of hovered point on the graph, \n\t\t\t\t\tsupport many series, time mode, stacking and pie charts\n\t\t\t\t\tyou can set custom tip content (also with use of HTML tags) and precision of values\n * version:\t0.4.4\n * author: \tKrzysztof Urbas @krzysu [myviews.pl] with help of @ismyrnow\n * website:\thttps://github.com/krzysu/flot.tooltip\n * \n * released under MIT License, 2012\n*/\n\n(function ($) {\n\tvar options = {\n\t\ttooltip: false, //boolean\n\t\ttooltipOpts: {\n\t\t\tcontent: \"%s | X: %x | Y: %y.2\", //%s -> series label, %x -> X value, %y -> Y value, %x.2 -> precision of X value, %p -> percent\n\t\t\tdateFormat: \"%y-%0m-%0d\",\n\t\t\tshifts: {\n\t\t\t\tx: 10,\n\t\t\t\ty: 20\n\t\t\t},\n\t\t\tdefaultTheme: true\n\t\t}\n\t};\n\n\tvar init = function(plot) {\n\n\t\tvar tipPosition = {x: 0, y: 0};\n\t\tvar opts = plot.getOptions();\n\t\t\n\t\tvar updateTooltipPosition = function(pos) {\n\t\t\ttipPosition.x = pos.x;\n\t\t\ttipPosition.y = pos.y;\n\t\t};\n\t\t\n\t\tvar onMouseMove = function(e) {\n\t\t\t\t\t\t\n\t\t\tvar pos = {x: 0, y: 0};\n\n\t\t\tpos.x = e.pageX;\n\t\t\tpos.y = e.pageY;\n\n\t\t\tupdateTooltipPosition(pos);\n\t\t};\n\t\t\n\t\tvar timestampToDate = function(tmst) {\n\n\t\t\tvar theDate = new Date(tmst);\n\t\t\t\n\t\t\treturn $.plot.formatDate(theDate, opts.tooltipOpts.dateFormat);\n\t\t};\n\t\t\n\t\tplot.hooks.bindEvents.push(function (plot, eventHolder) {\n            \n\t\t\tvar to = opts.tooltipOpts;\n\t\t\tvar placeholder = plot.getPlaceholder();\n\t\t\tvar $tip;\n\t\t\t\n\t\t\tif (opts.tooltip === false) return;\n\n\t\t\tif( $('#flotTip').length > 0 ){\n\t\t\t\t$tip = $('#flotTip');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$tip = $('<div />').attr('id', 'flotTip');\n\t\t\t\t$tip.appendTo('body').hide().css({position: 'absolute'});\n\t\t\t\n\t\t\t\tif(to.defaultTheme) {\n\t\t\t\t\t$tip.css({\n\t\t\t\t\t\t'background': '#fff',\n\t\t\t\t\t\t'z-index': '100',\n\t\t\t\t\t\t'padding': '0.4em 0.6em',\n\t\t\t\t\t\t'border-radius': '0.5em',\n\t\t\t\t\t\t'font-size': '0.8em',\n\t\t\t\t\t\t'border': '1px solid #111'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t$(placeholder).bind(\"plothover\", function (event, pos, item) {\n\t\t\t\tif (item) {\t\t\t\t\t\n\t\t\t\t\tvar tipText;\n\n\t\t\t\t\tif(opts.xaxis.mode === \"time\" || opts.xaxes[0].mode === \"time\") {\n\t\t\t\t\t\ttipText = stringFormat(to.content, item, timestampToDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttipText = stringFormat(to.content, item);\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$tip.html( tipText ).css({left: tipPosition.x + to.shifts.x, top: tipPosition.y + to.shifts.y}).show();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$tip.hide().html('');\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\teventHolder.mousemove(onMouseMove);\n\t\t});\n\t\t\n\t\tvar stringFormat = function(content, item, fnct) {\n\t\t\n\t\t\tvar percentPattern = /%p\\.{0,1}(\\d{0,})/;\n\t\t\tvar seriesPattern = /%s/;\n\t\t\tvar xPattern = /%x\\.{0,1}(\\d{0,})/;\n\t\t\tvar yPattern = /%y\\.{0,1}(\\d{0,})/;\n\t\t\t\n\t\t\t//percent match\n\t\t\tif( typeof (item.series.percent) !== 'undefined' ) {\n\t\t\t\tcontent = adjustValPrecision(percentPattern, content, item.series.percent);\n\t\t\t}\n\t\t\t//series match\n\t\t\tif( typeof(item.series.label) !== 'undefined' ) {\n\t\t\t\tcontent = content.replace(seriesPattern, item.series.label);\n\t\t\t}\n\t\t\t// xVal match\n\t\t\tif( typeof(fnct) === 'function' ) {\n\t\t\t\tcontent = content.replace(xPattern, fnct(item.series.data[item.dataIndex][0]) );\n\t\t\t}\n\t\t\telse if( typeof item.series.data[item.dataIndex][0] === 'number' ) {\n\t\t\t\tcontent = adjustValPrecision(xPattern, content, item.series.data[item.dataIndex][0]);\n\t\t\t}\n\t\t\t// yVal match\n\t\t\tif( typeof item.series.data[item.dataIndex][1] === 'number' ) {\n\t\t\t\tcontent = adjustValPrecision(yPattern, content, item.series.data[item.dataIndex][1]);\n\t\t\t}\n\n\t\t\treturn content;\n\t\t};\n\t\t\n\t\tvar adjustValPrecision = function(pattern, content, value) {\n\t\t\n\t\t\tvar precision;\n\t\t\tif( content.match(pattern) !== 'null' ) {\n\t\t\t\tif(RegExp.$1 !== '') {\n\t\t\t\t\tprecision = RegExp.$1;\n\t\t\t\t\tvalue = value.toFixed(precision)\n\t\t\t\t}\n\t\t\t\tcontent = content.replace(pattern, value);\n\t\t\t}\n\t\t\n\t\t\treturn content;\n\t\t};\n\t}\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'tooltip',\n\t\tversion: '0.4.4'\n\t});\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/charts/flot/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/CHANGELOG.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html>\n<head><title>Farbtastic: Changelog</title></head>\n<body>\n  <h1 class=\"title\">Farbtastic: Changelog</h1>\n\n    <h2>1.2 - 2007/01/08</h2>\n    <ul>\n      <li>Fixed bug with linking multiple fields with the same value.</li>\n    </ul>\n    <h2>1.1 - 2006/10/27</h2>\n    <ul>\n      <li>Work around for the transparent PNGs in Internet Explorer.</li>\n      <li>Better mouse handling code to accomodate CSS-based layouts better.</li>\n    </ul>\n    <h2>1.0 - 2006/07/14</h2>\n    <ul>\n      <li>Initial release.</li>\n    </ul>\n\n    <p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n    <p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/LICENSE.txt",
    "content": "\n        GNU GENERAL PUBLIC LICENSE\n           Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n          Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n        GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n          NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n         END OF TERMS AND CONDITIONS\n\n      How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/README.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html>\n<head><title>Farbtastic: jQuery color picker plug-in</title></head>\n<body>\n        <h1 class=\"title\">Farbtastic: jQuery color picker plug-in</h1>\n    <div class=\"content\"><p>Farbtastic is a <a href=\"http://www.jquery.com/\">jQuery</a> plug-in that can add one or more color picker widgets into a page. Each widget is then linked to an existing element (e.g. a text field) and will update the element's value when a color is selected.</p>\n\n<p>Farbtastic uses layered transparent PNGs to render a saturation/luminance gradient inside of a hue circle. No Flash or pixel-sized divs are used.</p>\n\n<p>Farbtastic was written by <a href=\"http://www.acko.net/dev/farbtastic\">Steven Wittens</a> and is licensed under the GPL.</p>\n\n<h2>Basic Usage</h2>\n<ol>\n<li>Include farbtastic.js and farbtastic.css in your HTML:<br />\n<div class=\"codeblock\"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;farbtastic.js&quot;&gt;&lt;/script&gt;<br />&lt;link rel=&quot;stylesheet&quot; href=&quot;farbtastic.css&quot; type=&quot;text/css&quot; /&gt;</code></div>\n</li>\n<li>Add a placeholder div and a text field to your HTML, and give each an ID:<br />\n<div class=\"codeblock\"><code>&lt;form&gt;&lt;input type=&quot;text&quot; id=&quot;color&quot; name=&quot;color&quot; value=&quot;#123456&quot; /&gt;&lt;/form&gt;<br />&lt;div id=&quot;colorpicker&quot;&gt;&lt;/div&gt;</code></div>\n</li>\n<li>Add a ready() handler to the document which initializes the color picker and link it to the text field with the following syntax:<br />\n<div class=\"codeblock\"><code>&lt;script type=&quot;text/javascript&quot;&gt;<br />&nbsp; $(document).ready(function() {<br />&nbsp; &nbsp; $(&#039;#colorpicker&#039;).farbtastic(&#039;#color&#039;);<br />&nbsp; });<br />&lt;/script&gt;</code></div>\n</li>\n</ol>\n<p>See demo1.html and demo2.html for an example (jquery.js is not included!).</p>\n<h2>Styling</h2>\n<p>The color picker is a block-level element and is 195x195 pixels large. You can control the position by styling your placeholder (e.g. floating it).</p>\n<p>Note that the black/white gradients inside wheel.png and mask.png were generated programmatically and cannot be recreated easily in an image editing program.</p>\n<h2>Advanced Usage</h2>\n<h3>jQuery Method</h3>\n<dl>\n<dt>$(...).farbtastic()<br />\n$(...).farbtastic(callback)</dt>\n<dd>This creates color pickers in the selected objects. <code>callback</code> is optional and can be a:</p>\n<ul>\n<li><em>DOM Node</em>, <em>jQuery object</em> or <em>jQuery selector</em>: the color picker will be linked to the selected element(s) by syncing the value (for form elements) and color (all elements).</li>\n<li><em>Function</em>: this function will be called whenever the user chooses a different color.</dd>\n</dl>\n<h3>Object</h3>\n<dl>\n<dt>$.farbtastic(placeholder)<br />\n$.farbtastic(placeholder, callback)<br />\n</dt>\n<dd>Invoking <code>$.farbtastic(placeholder)</code> is the same as using <code>$(placeholder).farbtastic()</code> except that the Farbtastic object is returned instead of the jQuery object. This allows you to use the Farbtastic methods and properties below.</p>\n<p>Note that there is only one Farbtastic object per placeholder. If you call <code>$.farbtastic(placeholder)</code> twice <em>with the same placeholder</em>, you will get the same object back each time.</p>\n<p>The optional <code>callback</code> argument behaves exactly as for the jQuery method.<br />\n</dd>\n</dl>\n</dd>\n</dl>\n<h3>Methods</h3>\n<dl>\n<dt>.linkTo(callback)</dt>\n<dd>Allows you to set a new callback. Any existing callbacks are removed. See above for the meaning of <code>callback</code>.</dd>\n<dt>.setColor(string)</dt>\n<dd>Sets the picker color to the given color in hex representation.</dd>\n<dt>.setColor([h, s, l])</dt>\n<dd>Sets the picker color to the given color in normalized HSL (0..1 scale).</dd>\n</dl>\n<h3>Properties</h3>\n<dl>\n<dt>.linked</dt>\n<dd>The elements (jQuery object) or callback function this picker is linked to.</dd>\n<dt>.color</dt>\n<dd>Current color in hex representation.</dd>\n<dt>.hsl</dt>\n<dd>Current color in normalized HSL.</dd>\n</dl>\n</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/demo1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html>\n<head>\n <title>Farbtastic</title>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"farbtastic.js\"></script>\n <link rel=\"stylesheet\" href=\"farbtastic.css\" type=\"text/css\" />\n <script type=\"text/javascript\" charset=\"utf-8\">\n  $(document).ready(function() {\n    $('#demo').hide();\n    $('#picker').farbtastic('#color');\n  });\n </script>\n</head>\n<body>\n<h1>jQuery Color Picker: Farbtastic</h1>\n\n<div id=\"demo\" style=\"color: red; font-size: 1.4em\">jQuery.js is not present. You must install jQuery in this folder for the demo to work.</div>\n\n<form action=\"\" style=\"width: 400px;\">\n  <div class=\"form-item\"><label for=\"color\">Color:</label><input type=\"text\" id=\"color\" name=\"color\" value=\"#123456\" /></div><div id=\"picker\"></div>\n</form>\n\n<p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n<p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/demo2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html>\n<head>\n <title>Farbtastic</title>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"farbtastic.js\"></script>\n <link rel=\"stylesheet\" href=\"farbtastic.css\" type=\"text/css\" />\n <style type=\"text/css\" media=\"screen\">\n   .colorwell {\n     border: 2px solid #fff;\n     width: 6em;\n     text-align: center;\n     cursor: pointer;\n   }\n   body .colorwell-selected {\n     border: 2px solid #000;\n     font-weight: bold;\n   }\n </style>\n \n <script type=\"text/javascript\" charset=\"utf-8\">\n  $(document).ready(function() {\n    $('#demo').hide();\n    var f = $.farbtastic('#picker');\n    var p = $('#picker').css('opacity', 0.25);\n    var selected;\n    $('.colorwell')\n      .each(function () { f.linkTo(this); $(this).css('opacity', 0.75); })\n      .focus(function() {\n        if (selected) {\n          $(selected).css('opacity', 0.75).removeClass('colorwell-selected');\n        }\n        f.linkTo(this);\n        p.css('opacity', 1);\n        $(selected = this).css('opacity', 1).addClass('colorwell-selected');\n      });\n  });\n </script>\n</head>\n<body>\n<h1>jQuery Color Picker: Farbtastic</h1>\n\n<div id=\"demo\" style=\"color: red; font-size: 1.4em\">jQuery.js is not present. You must install jQuery in this folder for the demo to work.</div>\n\n<form action=\"\" style=\"width: 500px;\">\n  <div id=\"picker\" style=\"float: right;\"></div>\n  <div class=\"form-item\"><label for=\"color1\">Color 1:</label><input type=\"text\" id=\"color1\" name=\"color1\" class=\"colorwell\" value=\"#123456\" /></div>\n  <div class=\"form-item\"><label for=\"color2\">Color 2:</label><input type=\"text\" id=\"color2\" name=\"color2\" class=\"colorwell\" value=\"#123456\" /></div>\n  <div class=\"form-item\"><label for=\"color3\">Color 3:</label><input type=\"text\" id=\"color3\" name=\"color3\" class=\"colorwell\" value=\"#123456\" /></div>\n  \n</form>\n\n<p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n<p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.css",
    "content": "/**\n * Farbtastic Color Picker 1.2\n * © 2008 Steven Wittens\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n */\n.farbtastic {\n  position: relative;\n  margin: 0 auto;\n}\n.farbtastic * {\n  position: absolute;\n  cursor: crosshair;\n}\n.farbtastic, .farbtastic .wheel {\n  width: 195px;\n  height: 195px;\n}\n.farbtastic .color, .farbtastic .overlay {\n  top: 47px;\n  left: 47px;\n  width: 101px;\n  height: 101px;\n}\n.farbtastic .wheel {\n  background: url(wheel.png) no-repeat;\n  width: 195px;\n  height: 195px;\n}\n.farbtastic .overlay {\n  background: url(mask.png) no-repeat;\n}\n.farbtastic .marker {\n  width: 17px;\n  height: 17px;\n  margin: -8px 0 0 -8px;\n  overflow: hidden; \n  background: url(marker.png) no-repeat;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.js",
    "content": "/**\n * Farbtastic Color Picker 1.2\n * © 2008 Steven Wittens\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n */\n\njQuery.fn.farbtastic = function (callback) {\n  $.farbtastic(this, callback);\n  return this;\n};\n\njQuery.farbtastic = function (container, callback) {\n  var container = $(container).get(0);\n  return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));\n}\n\njQuery._farbtastic = function (container, callback) {\n  // Store farbtastic object\n  var fb = this;\n\n  // Insert markup\n  $(container).html('<div class=\"farbtastic\"><div class=\"color\"></div><div class=\"wheel\"></div><div class=\"overlay\"></div><div class=\"h-marker marker\"></div><div class=\"sl-marker marker\"></div></div>');\n  var e = $('.farbtastic', container);\n  fb.wheel = $('.wheel', container).get(0);\n  // Dimensions\n  fb.radius = 84;\n  fb.square = 100;\n  fb.width = 194;\n\n  // Fix background PNGs in IE6\n  if (navigator.appVersion.match(/MSIE [0-6]\\./)) {\n    $('*', e).each(function () {\n      if (this.currentStyle.backgroundImage != 'none') {\n        var image = this.currentStyle.backgroundImage;\n        image = this.currentStyle.backgroundImage.substring(5, image.length - 2);\n        $(this).css({\n          'backgroundImage': 'none',\n          'filter': \"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='\" + image + \"')\"\n        });\n      }\n    });\n  }\n\n  /**\n   * Link to the given element(s) or callback.\n   */\n  fb.linkTo = function (callback) {\n    // Unbind previous nodes\n    if (typeof fb.callback == 'object') {\n      $(fb.callback).unbind('keyup', fb.updateValue);\n    }\n\n    // Reset color\n    fb.color = null;\n\n    // Bind callback or elements\n    if (typeof callback == 'function') {\n      fb.callback = callback;\n    }\n    else if (typeof callback == 'object' || typeof callback == 'string') {\n      fb.callback = $(callback);\n      fb.callback.bind('keyup', fb.updateValue);\n      if (fb.callback.get(0).value) {\n        fb.setColor(fb.callback.get(0).value);\n      }\n    }\n    return this;\n  }\n  fb.updateValue = function (event) {\n    if (this.value && this.value != fb.color) {\n      fb.setColor(this.value);\n    }\n  }\n\n  /**\n   * Change color with HTML syntax #123456\n   */\n  fb.setColor = function (color) {\n    var unpack = fb.unpack(color);\n    if (fb.color != color && unpack) {\n      fb.color = color;\n      fb.rgb = unpack;\n      fb.hsl = fb.RGBToHSL(fb.rgb);\n      fb.updateDisplay();\n    }\n    return this;\n  }\n\n  /**\n   * Change color with HSL triplet [0..1, 0..1, 0..1]\n   */\n  fb.setHSL = function (hsl) {\n    fb.hsl = hsl;\n    fb.rgb = fb.HSLToRGB(hsl);\n    fb.color = fb.pack(fb.rgb);\n    fb.updateDisplay();\n    return this;\n  }\n\n  /////////////////////////////////////////////////////\n\n  /**\n   * Retrieve the coordinates of the given event relative to the center\n   * of the widget.\n   */\n  fb.widgetCoords = function (event) {\n    var x, y;\n    var el = event.target || event.srcElement;\n    var reference = fb.wheel;\n\n    if (typeof event.offsetX != 'undefined') {\n      // Use offset coordinates and find common offsetParent\n      var pos = { x: event.offsetX, y: event.offsetY };\n\n      // Send the coordinates upwards through the offsetParent chain.\n      var e = el;\n      while (e) {\n        e.mouseX = pos.x;\n        e.mouseY = pos.y;\n        pos.x += e.offsetLeft;\n        pos.y += e.offsetTop;\n        e = e.offsetParent;\n      }\n\n      // Look for the coordinates starting from the wheel widget.\n      var e = reference;\n      var offset = { x: 0, y: 0 }\n      while (e) {\n        if (typeof e.mouseX != 'undefined') {\n          x = e.mouseX - offset.x;\n          y = e.mouseY - offset.y;\n          break;\n        }\n        offset.x += e.offsetLeft;\n        offset.y += e.offsetTop;\n        e = e.offsetParent;\n      }\n\n      // Reset stored coordinates\n      e = el;\n      while (e) {\n        e.mouseX = undefined;\n        e.mouseY = undefined;\n        e = e.offsetParent;\n      }\n    }\n    else {\n      // Use absolute coordinates\n      var pos = fb.absolutePosition(reference);\n      x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;\n      y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;\n    }\n    // Subtract distance to middle\n    return { x: x - fb.width / 2, y: y - fb.width / 2 };\n  }\n\n  /**\n   * Mousedown handler\n   */\n  fb.mousedown = function (event) {\n    // Capture mouse\n    if (!document.dragging) {\n      $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);\n      document.dragging = true;\n    }\n\n    // Check which area is being dragged\n    var pos = fb.widgetCoords(event);\n    fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;\n\n    // Process\n    fb.mousemove(event);\n    return false;\n  }\n\n  /**\n   * Mousemove handler\n   */\n  fb.mousemove = function (event) {\n    // Get coordinates relative to color picker center\n    var pos = fb.widgetCoords(event);\n\n    // Set new HSL parameters\n    if (fb.circleDrag) {\n      var hue = Math.atan2(pos.x, -pos.y) / 6.28;\n      if (hue < 0) hue += 1;\n      fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);\n    }\n    else {\n      var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));\n      var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));\n      fb.setHSL([fb.hsl[0], sat, lum]);\n    }\n    return false;\n  }\n\n  /**\n   * Mouseup handler\n   */\n  fb.mouseup = function () {\n    // Uncapture mouse\n    $(document).unbind('mousemove', fb.mousemove);\n    $(document).unbind('mouseup', fb.mouseup);\n    document.dragging = false;\n  }\n\n  /**\n   * Update the markers and styles\n   */\n  fb.updateDisplay = function () {\n    // Markers\n    var angle = fb.hsl[0] * 6.28;\n    $('.h-marker', e).css({\n      left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',\n      top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'\n    });\n\n    $('.sl-marker', e).css({\n      left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',\n      top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'\n    });\n\n    // Saturation/Luminance gradient\n    $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));\n\n    // Linked elements or callback\n    if (typeof fb.callback == 'object') {\n      // Set background/foreground color\n      $(fb.callback).css({\n        backgroundColor: fb.color,\n        color: fb.hsl[2] > 0.5 ? '#000' : '#fff'\n      });\n\n      // Change linked value\n      $(fb.callback).each(function() {\n        if (this.value && this.value != fb.color) {\n          this.value = fb.color;\n        }\n      });\n    }\n    else if (typeof fb.callback == 'function') {\n      fb.callback.call(fb, fb.color);\n    }\n  }\n\n  /**\n   * Get absolute position of element\n   */\n  fb.absolutePosition = function (el) {\n    var r = { x: el.offsetLeft, y: el.offsetTop };\n    // Resolve relative to offsetParent\n    if (el.offsetParent) {\n      var tmp = fb.absolutePosition(el.offsetParent);\n      r.x += tmp.x;\n      r.y += tmp.y;\n    }\n    return r;\n  };\n\n  /* Various color utility functions */\n  fb.pack = function (rgb) {\n    var r = Math.round(rgb[0] * 255);\n    var g = Math.round(rgb[1] * 255);\n    var b = Math.round(rgb[2] * 255);\n    return '#' + (r < 16 ? '0' : '') + r.toString(16) +\n           (g < 16 ? '0' : '') + g.toString(16) +\n           (b < 16 ? '0' : '') + b.toString(16);\n  }\n\n  fb.unpack = function (color) {\n    if (color.length == 7) {\n      return [parseInt('0x' + color.substring(1, 3)) / 255,\n        parseInt('0x' + color.substring(3, 5)) / 255,\n        parseInt('0x' + color.substring(5, 7)) / 255];\n    }\n    else if (color.length == 4) {\n      return [parseInt('0x' + color.substring(1, 2)) / 15,\n        parseInt('0x' + color.substring(2, 3)) / 15,\n        parseInt('0x' + color.substring(3, 4)) / 15];\n    }\n  }\n\n  fb.HSLToRGB = function (hsl) {\n    var m1, m2, r, g, b;\n    var h = hsl[0], s = hsl[1], l = hsl[2];\n    m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;\n    m1 = l * 2 - m2;\n    return [this.hueToRGB(m1, m2, h+0.33333),\n        this.hueToRGB(m1, m2, h),\n        this.hueToRGB(m1, m2, h-0.33333)];\n  }\n\n  fb.hueToRGB = function (m1, m2, h) {\n    h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);\n    if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n    if (h * 2 < 1) return m2;\n    if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;\n    return m1;\n  }\n\n  fb.RGBToHSL = function (rgb) {\n    var min, max, delta, h, s, l;\n    var r = rgb[0], g = rgb[1], b = rgb[2];\n    min = Math.min(r, Math.min(g, b));\n    max = Math.max(r, Math.max(g, b));\n    delta = max - min;\n    l = (min + max) / 2;\n    s = 0;\n    if (l > 0 && l < 1) {\n      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));\n    }\n    h = 0;\n    if (delta > 0) {\n      if (max == r && max != g) h += (g - b) / delta;\n      if (max == g && max != b) h += (2 + (b - r) / delta);\n      if (max == b && max != r) h += (4 + (r - g) / delta);\n      h /= 6;\n    }\n    return [h, s, l];\n  }\n\n  // Install mousedown handler (the others are set on the document on-demand)\n  $('*', e).mousedown(fb.mousedown);\n\n    // Init color\n  fb.setColor('#000000');\n\n  // Set linked elements/callback\n  if (callback) {\n    fb.linkTo(callback);\n  }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/component.json",
    "content": "{\n    \"name\"         : \"jquery-miniColors\",\n    \"version\"      : \"2.0 beta\",\n    \"description\"  : \"jQuery MiniColors Plugin\",\n    \"homepage\"     : \"\",\n    \"main\"         : [ \"./jquery.miniColors.js\", \"./jquery.miniColors.css\" ],\n    \"dependencies\" : {\n        \"jquery\" : \">= 1.7.x\"\n    },\n    \"keywords\"     : [\n    ],\n    \"author\" : {\n        \"name\" : \"Cory LaViska\",\n        \"web\"  : \"http://www.abeautifulsite.net/\"\n    },\n    \"license\": [\n        \"http://www.opensource.org/licenses/mit-license.php\",\n        \"http://opensource.org/licenses/gpl-2.0.php\"\n    ]\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>jQuery MiniColors</title>\n\t<meta name=\"description\" content=\"A tiny color picker built on jQuery\" />\n\t<meta charset=\"utf-8\" />\n\t<meta name=\"viewport\" content=\"initial-scale=1.0\" />\n\t<link rel=\"stylesheet\" href=\"jquery.minicolors.css\" />\n\t<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\"></script>\n\t<script src=\"jquery.minicolors.js\"></script>\n\t<style>\n\t\t\n\t\tHTML,\n\t\tBODY {\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t}\n\t\t\n\t\tBODY {\n\t\t\tfont: 14px sans-serif;\n\t\t\tcolor: #666;\n\t\t\tline-height: 1.7;\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 0 20px;\n\t\t\tpadding-bottom: 32px;\n\t\t}\n\t\t\n\t\tH1, H2, H3 {\n\t\t\tfont-family: Georgia, serif;\n\t\t\tfont-weight: normal;\n\t\t\tcolor: black;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t\n\t\tH1, H2, H3, P {\n\t\t\tmargin: 20px 0;\n\t\t}\n\t\t\n\t\tA {\n\t\t\tcolor: #08C;\n\t\t}\n\t\t\n\t\tA:hover {\n\t\t\tcolor: #0BE;\n\t\t}\n\t\t\n\t\tPRE,\n\t\tCODE {\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 2px;\n\t\t}\n\t\t\n\t\tPRE {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tpadding: 10px;\n\t\t\tmargin: 30px 0;\n\t\t}\n\t\t\n\t\t.alert {\n\t\t\tbackground: #FFFCCC;\n\t\t\tcolor: black;\n\t\t\tpadding: 1px 10px;\n\t\t\tmargin: 30px 0;\n\t\t}\n\t\t\n\t\t#main {\n\t\t\tmax-width: 800px;\n\t\t\tbackground: white;\n\t\t\tborder: solid 1px #DDD;\n\t\t\tbox-shadow: 0 0 30px rgba(0, 0, 0, .05);\n\t\t\tpadding: 30px;\n\t\t\tmargin: 20px auto;\n\t\t}\n\t\t\n\t\t.example {\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 10px;\n\t\t\tmargin: 20px 0;\n\t\t}\n\t\t\n\t\t#console {\n\t\t\tposition: fixed;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\theight: 32px;\n\t\t\tfont-family: monospace;\n\t\t\tline-height: 32px;\n\t\t\ttext-align: center;\n\t\t\tbackground: black;\n\t\t\tcolor: white;\n\t\t\tz-index: 100;\n\t\t\t-moz-transition: all .5s;\n\t\t\t-ms-transition: all .5s;\n\t\t\t-webkit-transition: all .5s;\n\t\t\ttransition: all .5s;\n\t\t\topacity: 0;\n\t\t}\n\t\t\n\t\t#console.busy {\n\t\t\topacity: .85;\n\t\t}\n\t\t\n\t</style>\n\t\n\t<script>\n\t\t\n\t\t$(document).ready( function() {\n\t\t\t\n\t\t\tvar consoleTimeout;\n\t\t\t\n\t\t\t// Display the results of the change callback on any minicolors input\n\t\t\t$('INPUT[type=minicolors]').on('change', function() {\n\t\t\t\t\n\t\t\t\tvar input = $(this),\n\t\t\t\t\thex = input.val(),\n\t\t\t\t\topacity = input.attr('data-opacity'),\n\t\t\t\t\ttext;\n\t\t\t\t\n\t\t\t\t// Generate text to show in console\n\t\t\t\ttext = hex ? hex : 'transparent';\n\t\t\t\tif( opacity ) text += ', ' + opacity;\n\t\t\t\ttext += ' / ' + $.minicolors.rgbString(input)\n\t\t\t\t\n\t\t\t\t// Show text in console; disappear after a few seconds\n\t\t\t\t$('#console').text(text).addClass('busy');\n\t\t\t\tclearTimeout(consoleTimeout);\n\t\t\t\tconsoleTimeout = setTimeout( function() {\n\t\t\t\t\t$('#console').removeClass('busy');\n\t\t\t\t}, 3000);\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t// Adding controls dynamically\n\t\t\t$('#add-one').on('click', function() {\n\t\t\t\t\n\t\t\t\t// Just add an <input type=\"minicolors\" /> control anywhere in your page\n\t\t\t\t$('#add-one-result').append('<input type=\"minicolors\" data-slider=\"' + $('#add-one-slider').val() + '\" value=\"#ff6600\" /><br /><br />');\n\t\t\t\t\n\t\t\t\t// ...then call $.minicolors.init() to activate the control\n\t\t\t\t$.minicolors.init();\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t\n\t</script>\n\t\n</head>\n<body>\n\t\n\t<div id=\"main\">\n\t\t<h1>jQuery MiniColors 2.0 beta</h1>\n\t\t<p>\n\t\t\tA project by Cory LaViska of <a href=\"http://www.abeautifulsite.net/\">A Beautiful Site</a>. \n\t\t</p>\n\t\t<p>\n\t\t\tMiniColors is a tiny color picker built on jQuery. It's easy to use and works \n\t\t\twell on touch-enabled devices. Completely re-written for 2.0.\n\t\t</p>\n\t\t<div class=\"alert\">\n\t\t\t<p>\n\t\t\t\tThe MiniColors API was completely overhauled in 2.0. You will need to change your \n\t\t\t\tcode if you are upgrading from a previous version!\n\t\t\t</p>\n\t\t</div>\n\t\t\n\t\t<!-- Download -->\n\t\t<h2 id=\"download\">Download</h2>\n\t\t<p>\n\t\t\tYou can <a href=\"https://github.com/claviska/jquery-miniColors\">download the source</a> \n\t\t\ton GitHub. Help contribute to this project by posting bug reports, feature requests, and \n\t\t\tcode improvements!\n\t\t</p>\n\t\t\n\t\t<h2 id=\"usage\">Usage</h2>\n\t\t<p>\n\t\t\tThe plugin will automatically initialize all inputs of type <code>minicolors</code>: \n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" /&gt;</pre>\n\t\t<p>\n\t\t\tThis results in the default color picker: \n\t\t\t<input type=\"minicolors\" />\n\t\t</p>\n\t\t<p>\n\t\t\tTo set an initial value, use the <code>value</code> attribute:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" value=\"#00cc00\" /&gt;</pre>\n\t\t<p>\n\t\t\tThis results in the default color picker with a preset value: \n\t\t\t<input type=\"minicolors\" value=\"#00cc00\" />\n\t\t</p>\n\t\t<p>\n\t\t\tYou can obtain the selected value any time by grabbing the original <code>input</code> \n\t\t\telement's <code>value</code>.\n\t\t</p>\n\t\t\n\t\t<!-- Options -->\n\t\t<h2 id=\"options\">Options</h2>\n\t\t<p>\n\t\t\tOptions are set for each control using one or more of the HTML5 <code>data-</code> \n\t\t\tattributes mentioned below.\n\t\t</p>\n\t\t\n\t\t<h3>Slider Variations</h3>\n\t\t<p>\n\t\t\tMiniColors has four slider variations. Set the <code>data-slider</code> attribute \n\t\t\tto use them.  Valid options are <code>hue</code> (default), <code>saturation</code>, \n\t\t\t<code>brightness</code>, and <code>wheel</code>.\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-slider=\"saturation\" /&gt;</pre>\n\t\t\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#d7e036\" data-slider=\"hue\" />\n\t\t\t<input type=\"minicolors\" value=\"#00a9bf\" data-slider=\"saturation\" />\n\t\t\t<input type=\"minicolors\" value=\"#b340ff\" data-slider=\"brightness\" />\n\t\t\t<input type=\"minicolors\" value=\"#e87262\" data-slider=\"wheel\" />\n\t\t</p>\n\t\t\n\t\t<h3>Default Values</h3>\n\t\t<p>\n\t\t\tUse the <code>data-default</code> attribute to force a default hex value. Try clearing \n\t\t\tthe box—it will revert to its default value. Note that the default value does not have \n\t\t\tto be the same as the initial value (set with the <code>value</code> attribute).\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-default=\"#ffffff\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-default=\"#ffffff\" />\n\t\t</p>\n\t\t\n\t\t<h3>No Text Field</h3>\n\t\t<p>\n\t\t\tTurn the color picker into a stand-alone color swatch by setting <code>data-textfield</code> \n\t\t\tto <code>false</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-textfield=\"false\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#ff6600\" data-textfield=\"false\" data-slider=\"hue\" />\n\t\t\t<input type=\"minicolors\" value=\"#29cf37\" data-textfield=\"false\" data-slider=\"saturation\" />\n\t\t\t<input type=\"minicolors\" value=\"#b437c7\" data-textfield=\"false\" data-slider=\"brightness\" />\n\t\t\t<input type=\"minicolors\" value=\"#00a4d1\" data-textfield=\"false\" data-slider=\"wheel\" />\n\t\t</p>\n\t\t\n\t\t<h3>Opacity Slider</h3>\n\t\t<p>\n\t\t\tEnable the opacity slider by adding the <code>data-opacity</code> attribute:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-opacity=\".75\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#4471a3\" data-opacity=\".75\" />\n\t\t</p>\n\t\t<p>\n\t\t\tTo obtain the opacity value, grab the <code>data-opacity</code> attribute of your input \n\t\t\telement. Keep in mind that this value will not submit along with other form data, so it's \n\t\t\tbest to use the <code>change</code> callback to update a hidden element in your form if \n\t\t\tyou need it to be submitted.\n\t\t</p>\n\t\t\n\t\t<h3>Inline Controls</h3>\n\t\t<p>\n\t\t\tForce the color picker to appear inline by setting <code>data-control</code> to <code>inline</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-control=\"inline\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#3c9641\" data-control=\"inline\" data-slider=\"hue\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#d49f00\" data-control=\"inline\" data-slider=\"saturation\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#5cb8ff\" data-control=\"inline\" data-slider=\"brightness\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#5bbf4c\" data-control=\"inline\" data-slider=\"wheel\" data-style=\"margin: 10px;\" />\n\t\t</p>\n\t\t\n\t\t<h3>Dropdown Position</h3>\n\t\t<p>\n\t\t\tChange the position of the dropdown panel by setting the <code>data-position</code> \n\t\t\tattribute.  Valid options are <code>top</code>, <code>left</code>, and <code>top left</code>.\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-position=\"top\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-position=\"top\" data-opacity=\".5\" />\n\t\t</p>\n\t\t\n\t\t<h3>Swatch Position</h3>\n\t\t<p>\n\t\t\tForce the color swatch to appear on the left by setting <code>data-swatch-position</code> \n\t\t\tto <code>left</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-swatch-position=\"left\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-swatch-position=\"left\" />\n\t\t</p>\n\t\t\n\t\t<h3>Classes &amp; Styles</h3>\n\t\t<p>\n\t\t\tUse <code>data-class</code> and <code>data-style</code> to apply classes and styles \n\t\t\tto the parent element of the resulting control:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-class=\"my-class\" data-style=\"margin: 20px;\" /&gt;</pre>\n\t\t\n\t\t<!-- Utility Functions -->\n\t\t<h2 id=\"utility-functions\">Utility Functions</h2>\n\t\t<h3><code>$.minicolors.init()</code></h3>\n\t\t<p>\n\t\t\tCall this function to initialize controls that are created dynamically. You do not \n\t\t\tneed to specify a selector when calling this function.  Example:\n\t\t</p>\n\t\t\n\t\t<div class=\"example\">\n\t\t\t<p>\n\t\t\t\t<select id=\"add-one-slider\">\n\t\t\t\t\t<option value=\"hue\">Hue Picker</option>\n\t\t\t\t\t<option value=\"saturation\">Saturation Picker</option>\n\t\t\t\t\t<option value=\"brightness\">Brightness Picker</option>\n\t\t\t\t\t<option value=\"wheel\">Wheel Picker</option>\n\t\t\t\t</select>\n\t\t\t\t<button id=\"add-one\">Add it!</button>\n\t\t\t</p>\n\t\t\t<div id=\"add-one-result\"></div>\n\t\t</div>\n\t\t\n\t\t<h3><code>$.minicolors.remove(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tCall this function to remove a control from the DOM. (You can also remove any of the \n\t\t\tcontrol's parent elements with the same effect.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.refresh()</code></h3>\n\t\t<p>\n\t\t\tCall this function if you programmatically change the value of one or more controls.\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.show(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tShow the control attached to the specified <code>input</code> element. Only \n\t\t\tone control may be shown at once. (Doesn't apply to inline controls.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.hide()</code></h3>\n\t\t<p>\n\t\t\tHides any control that may be showing. (Doesn't apply to inline controls.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.rgbObject(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tReturns an object with <code>r</code>, <code>g</code>, <code>b</code>, and \n\t\t\t<code>a</code> properties. The <code>a</code> property will only be present \n\t\t\tif opacity is enabled on the specified control.\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.rgbString(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tReturns an RGB or RGBA string suitable for use in your CSS. If opacity is \n\t\t\tenabled on the specified control, an RGBA string will be returned.  Otherwise \n\t\t\tan RGB string will be returned.\n\t\t</p>\n\t\t\n\t\t<!-- Callbacks -->\n\t\t<h2 id=\"callbacks\">Callbacks</h2>\n\t\t<h3><code>change</code></h3>\n\t\t<p>\n\t\t\tAttach your <code>change</code> callback to the original <code>input</code> element. \n\t\t\tYou can access the value and opacity of the control using the <code>value</code> and \n\t\t\t<code>data-opacity</code> attributes, respectively.\n\t\t</p>\n\t\t<p>\n\t\t\tTo convert a control's hex value to RGB or RGBA, use the \n\t\t\t<code>$.minicolors.rgbObject()</code> or <code>$.minicolors.rgbString()</code> \n\t\t\tutility functions.\n\t\t</p>\n\t\t\n\t\t<!-- Settings -->\n\t\t<h2 id=\"settings\">Settings</h2>\n\t\t<p>\n\t\t\tAdjust plugin defaults by setting <code>$.minicolors.settings.<em>settingName</em></code>, \n\t\t\twhere <code><em>settingName</em></code> is one of the following:\n\t\t</p>\n\t\t\n\t\t<h3><code>animationSpeed</code> &amp; <code>animationEasing</code></h3>\n\t\t<p>\n\t\t\tThe animation speed and easing effect to use when making a color selection. \n\t\t\tDefaults to <code>100</code> (milliseconds) and <code>swing</code>, respectively.\n\t\t\tSet <code>animationSpeed</code> to <code>0</code> to disabled animation.\n\t\t</p>\n\t\t\n\t\t<h3><code>defaultSlider</code></h3>\n\t\t<p>\n\t\t\tSets the slider variation for all controls that don't specify it through \n\t\t\t<code>data-slider</code>. Default value is <code>hue</code>.\n\t\t</p>\n\t\t\n\t\t<h3><code>letterCase</code></h3>\n\t\t<p>\n\t\t\tForces the hex color's letter case to uppercase or lowercase.  Possible values \n\t\t\tare <code>lowercase</code> (default) and <code>uppercase</code>.\n\t\t</p>\n\t\t\n\t\t<h3><code>hideSpeed</code> &amp; <code>showSpeed</code></h3>\n\t\t<p>\n\t\t\tThe hide/show speed for dropdown controls. Default is <code>100</code> (milliseconds).\n\t\t</p>\n\t\t\n\t\t<!-- Styling Tips -->\n\t\t<h2 id=\"styling-tips\">Styling Tips</h2>\n\t\t<p>\n\t\t\tIf you change the <code>input</code> element's height or width via CSS, you'll also \n\t\t\tneed to adjust certain style properties in <code>.minicolors-swatch</code>, \n\t\t\t<code>.minicolors-panel</code>, <code>.minicolors-position-top</code>, and \n\t\t\t<code>.minicolors-position-left</code>.\n\t\t</p>\n\t</div>\n\t\n\t<div id=\"console\"></div>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.css",
    "content": ".minicolors {\n\tposition: relative;\n\tdisplay: inline-block;\n\tz-index: 1;\n}\n\n.minicolors-focus {\n\tz-index: 2;\n}\n\n.minicolors INPUT {\n\tmargin-right: 3px;\n\tborder: solid 1px #CCC;\n\tfont: 14px sans-serif;\n\twidth: 65px;\n\theight: 16px;\n\tvertical-align: middle;\n\tborder-radius: 0;\n\tbox-shadow: inset 0 2px 4px rgba(0, 0, 0, .04);\n\toutline: none;\n\tpadding: 2px;\n\tmargin-right: -1px;\n}\n\n.minicolors-swatch-left INPUT {\n\tmargin-left: -1px;\n\tmargin-right: auto;\n}\n\n.minicolors-focus INPUT,\n.minicolors-focus .minicolors-swatch {\n\tborder-color: #999;\n}\n\n.minicolors-hidden {\n\tposition: absolute;\n\tleft: -9999em;\n}\n\n.minicolors-swatch {\n\tposition: relative;\n\twidth: 20px;\n\theight: 20px;\n\tbackground: url(jquery.minicolors.png) -80px 0;\n\tborder: solid 1px #CCC;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.minicolors-swatch SPAN {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: none;\n\tbox-shadow: inset 0 9px 0 rgba(255, 255, 255, .1);\n\tdisplay: inline-block;\n}\n\n/* Panel */\n.minicolors-panel {\n\tposition: absolute;\n\ttop: 26px;\n\tleft: 0;\n\twidth: 173px;\n\theight: 152px;\n\tbackground: white;\n\tborder: solid 1px #CCC;\n\tbox-shadow: 0 0 20px rgba(0, 0, 0, .2);\n\tdisplay: none;\n}\n\n.minicolors-position-top .minicolors-panel {\n\ttop: -156px;\n}\n\n.minicolors-position-left .minicolors-panel {\n\tleft: -83px;\n}\n\n.minicolors-position-left.minicolors-with-opacity .minicolors-panel {\n\tleft: -104px;\n}\n\n.minicolors-with-opacity .minicolors-panel {\n\twidth: 194px;\n}\n\n.minicolors .minicolors-grid {\n\tposition: absolute;\n\ttop: 1px;\n\tleft: 1px;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: url(jquery.minicolors.png) -120px 0;\n\tcursor: crosshair;\n}\n\n.minicolors .minicolors-grid-inner {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: none;\n}\n\n.minicolors-slider-saturation .minicolors-grid {\n\tbackground-position: -420px 0;\n}\n\n.minicolors-slider-saturation .minicolors-grid-inner {\n\tbackground: url(jquery.minicolors.png) -270px 0;\n}\n\n.minicolors-slider-brightness .minicolors-grid {\n\tbackground-position: -570px 0;\n}\n\n.minicolors-slider-brightness .minicolors-grid-inner {\n\tbackground: black;\n}\n\n.minicolors-slider-wheel .minicolors-grid {\n\tbackground-position: -720px 0;\n}\n\n.minicolors-slider,\n.minicolors-opacity-slider {\n\tposition: absolute;\n\ttop: 1px;\n\tleft: 152px;\n\twidth: 20px;\n\theight: 150px;\n\tbackground: white url(jquery.minicolors.png) 0 0;\n\tcursor: crosshair;\n}\n\n.minicolors-slider-saturation .minicolors-slider {\n\tbackground-position: -60px 0;\n}\n\n.minicolors-slider-brightness .minicolors-slider {\n\tbackground-position: -20px 0;\n}\n\n.minicolors-slider-wheel .minicolors-slider {\n\tbackground-position: -20px 0;\n}\n\n.minicolors-opacity-slider {\n\tleft: 173px;\n\tbackground-position: -40px 0;\n\tdisplay: none;\n}\n\n.minicolors-with-opacity .minicolors-opacity-slider {\n\tdisplay: block;\n}\n\n/* Pickers */\n.minicolors-grid .minicolors-picker {\n\tposition: absolute;\n\ttop: 70px;\n\tleft: 70px;\n\twidth: 10px;\n\theight: 10px;\n\tborder: solid 1px black;\n\tborder-radius: 10px;\n\tmargin-top: -6px;\n\tmargin-left: -6px;\n\tbackground: none;\n}\n\n.minicolors-grid .minicolors-picker SPAN {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 6px;\n\theight: 6px;\n\tborder-radius: 6px;\n\tborder: solid 2px white;\n}\n\n.minicolors-picker {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 18px;\n\theight: 2px;\n\tbackground: white;\n\tborder: solid 1px black;\n\tmargin-top: -2px;\n}\n\n/* Inline controls */\n.minicolors-inline INPUT,\n.minicolors-inline .minicolors-swatch {\n\tdisplay: none;\n}\n\n.minicolors-inline .minicolors-panel {\n\tposition: relative;\n\ttop: auto;\n\tleft: auto;\n\tdisplay: inline-block;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.js",
    "content": "/*\n * jQuery MiniColors: A tiny color picker built on jQuery\n *\n * Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)\n *\n * Dual-licensed under the MIT and GPL Version 2 licenses\n *\n*/\nif(jQuery) (function($) {\n\t\n\t// The minicolors object (public methods and settings)\n\t$.minicolors = {\n\t\t\n\t\t// Default settings\n\t\tsettings: {\n\t\t\tdefaultSlider: 'hue',\n\t\t\tletterCase: 'lowercase',\n\t\t\thideSpeed: 100,\n\t\t\tshowSpeed: 100,\n\t\t\tanimationSpeed: 100,\n\t\t\tanimationEasing: 'swing'\n\t\t},\n\t\t\n\t\t// Initialized all controls of type=minicolors\n\t\tinit: function() {\n\t\t\t$('INPUT[data-type=minicolors]').each( function() {\n\t\t\t\tinit( $(this) );\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Remove the specified control from the DOM\n\t\tremove: function(input) {\n\t\t\t$(input).each( function() {\n\t\t\t\tremove($(this));\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Refresh the controls\n\t\trefresh: function() {\n\t\t\t$('INPUT[data-type=minicolors]').each( function() {\n\t\t\t\trefresh($(this));\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Shows the specified control\n\t\tshow: function(input) {\n\t\t\tshow( $(input).eq(0) );\n\t\t},\n\t\t\n\t\t// Hides all controls\n\t\thide: function() {\n\t\t\thide();\n\t\t},\n\t\t\n\t\t// Utility to convert a hex string to RGB(A) object\n\t\trgbObject: function(input) {\n\t\t\tvar hex = parseHex($(input).val(), true),\n\t\t\t\trgb = hex2rgb(hex),\n\t\t\t\topacity = input.attr('data-opacity');\n\t\t\tif( !rgb ) return null;\n\t\t\tif( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });\n\t\t\treturn rgb;\n\t\t},\n\t\t\n\t\t// Utility to convert a hex string to an RGB(A) string\n\t\trgbString: function(input) {\n\t\t\tvar hex = parseHex($(input).val(), true),\n\t\t\t\trgb = hex2rgb(hex),\n\t\t\t\topacity = input.attr('data-opacity');\n\t\t\tif( !rgb ) return null;\n\t\t\tif( opacity === undefined ) {\n\t\t\t\treturn 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n\t\t\t} else {\n\t\t\t\treturn 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\t// Initialize all input[type=minicolors] elements\n\tfunction init(input) {\n\t\t\n\t\tvar minicolors = $('<span class=\"minicolors\" />'),\n\t\t\tsliderType = input.attr('data-slider') || $.minicolors.settings.defaultSlider;\n\t\t\n\t\tif( input.data('initialized') ) return;\n\t\t\n\t\t// The wrapper\n\t\tminicolors\n\t\t\t.attr('class', input.attr('data-class'))\n\t\t\t.attr('style', input.attr('data-style'))\n\t\t\t.toggleClass('minicolors-swatch-left', input.attr('data-swatch-position') === 'left' )\n\t\t\t.toggleClass('minicolors-with-opacity', input.attr('data-opacity') !== undefined );\n\t\t\n\t\t// Custom positioning\n\t\tif( input.attr('data-position') !== undefined ) {\n\t\t\t$.each(input.attr('data-position').split(' '), function() {\n\t\t\t\tminicolors.addClass('minicolors-position-' + this);\n\t\t\t});\n\t\t}\n\t\t\n\t\t// The input\n\t\tinput\n\t\t\t.data('initialized', true)\n\t\t\t.attr('data-default', input.attr('data-default') || '')\n\t\t\t.attr('data-slider', sliderType)\n\t\t\t.prop('size', 7)\n\t\t\t.prop('maxlength', 7)\n\t\t\t.wrap(minicolors)\n\t\t\t.after(\n\t\t\t\t'<span class=\"minicolors-panel minicolors-slider-' + sliderType + '\">' + \n\t\t\t\t\t'<span class=\"minicolors-slider\">' + \n\t\t\t\t\t\t'<span class=\"minicolors-picker\"></span>' +\n\t\t\t\t\t'</span>' + \n\t\t\t\t\t'<span class=\"minicolors-opacity-slider\">' + \n\t\t\t\t\t\t'<span class=\"minicolors-picker\"></span>' +\n\t\t\t\t\t'</span>' +\n\t\t\t\t\t'<span class=\"minicolors-grid\">' +\n\t\t\t\t\t\t'<span class=\"minicolors-grid-inner\"></span>' +\n\t\t\t\t\t\t'<span class=\"minicolors-picker\"><span></span></span>' +\n\t\t\t\t\t'</span>' +\n\t\t\t\t'</span>'\n\t\t\t);\n\t\t\n\t\t// Prevent text selection in IE\n\t\tinput.parent().find('.minicolors-panel').on('selectstart', function() { return false; }).end();\n\t\t\n\t\t// Detect swatch position\n\t\tif( input.attr('data-swatch-position') === 'left' ) {\n\t\t\t// Left\n\t\t\tinput.before('<span class=\"minicolors-swatch\"><span></span></span>');\n\t\t} else {\n\t\t\t// Right\n\t\t\tinput.after('<span class=\"minicolors-swatch\"><span></span></span>');\n\t\t}\n\t\t\n\t\t// Disable textfield\n\t\tif( input.attr('data-textfield') === 'false' ) input.addClass('minicolors-hidden');\n\t\t\n\t\t// Inline controls\n\t\tif( input.attr('data-control') === 'inline' ) input.parent().addClass('minicolors-inline');\n\t\t\n\t\tupdateFromInput(input);\n\t\t\n\t}\n\t\n\t// Refresh the specified control\n\tfunction refresh(input) {\n\t\tupdateFromInput(input);\n\t}\n\t\n\t// Removes the specified control\n\tfunction remove(input) {\n\t\tvar minicolors = input.parent();\n\t\tif( input.data('initialized') && minicolors.hasClass('minicolors') ) {\n\t\t\tminicolors.remove();\n\t\t}\n\t}\n\t\n\t// Shows the specified dropdown panel\n\tfunction show(input) {\n\t\t\n\t\tvar minicolors = input.parent(),\n\t\t\tpanel = minicolors.find('.minicolors-panel');\n\t\t\n\t\t// Do nothing if uninitialized, disabled, or already open\n\t\tif( !input.data('initialized') || input.prop('disabled') || minicolors.hasClass('minicolors-focus') ) return;\n\t\t\n\t\thide();\n\t\t\n\t\tminicolors.addClass('minicolors-focus');\n\t\tpanel\n\t\t\t.stop(true, true)\n\t\t\t.fadeIn($.minicolors.settings.showSpeed);\n\t\t\n\t}\n\t\n\t// Hides all dropdown panels\n\tfunction hide() {\n\t\t\n\t\t$('.minicolors:not(.minicolors-inline)').each( function() {\n\t\t\t\n\t\t\tvar minicolors = $(this),\n\t\t\t\tinput = minicolors.find('INPUT');\n\t\t\t\n\t\t\tminicolors.find('.minicolors-panel').fadeOut($.minicolors.settings.hideSpeed, function() {\n\t\t\t\tminicolors.removeClass('minicolors-focus');\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n\t// Moves the selected picker\n\tfunction move(target, event, animate) {\n\t\t\n\t\tvar input = target.parents('.minicolors').find('INPUT'),\n\t\t\tpicker = target.find('[class$=-picker]'),\n\t\t\toffsetX = target.offset().left,\n\t\t\toffsetY = target.offset().top,\n\t\t\tx = Math.round(event.pageX - offsetX),\n\t\t\ty = Math.round(event.pageY - offsetY),\n\t\t\tduration = animate ? $.minicolors.settings.animationSpeed : 0,\n\t\t\twx, wy, r, phi;\n\t\t\t\n\t\t\n\t\t// Touch support\n\t\tif( event.originalEvent.changedTouches ) {\n\t\t\tx = event.originalEvent.changedTouches[0].pageX - offsetX;\n\t\t\ty = event.originalEvent.changedTouches[0].pageY - offsetY;\n\t\t}\n\t\t\n\t\t// Constrain picker to its container\n\t\tif( x < 0 ) x = 0;\n\t\tif( y < 0 ) y = 0;\n\t\tif( x > target.width() ) x = target.width();\n\t\tif( y > target.height() ) y = target.height();\n\t\t\n\t\t// Constrain color wheel values to the wheel\n\t\tif( target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid') ) {\n\t\t\twx = 75 - x;\n\t\t\twy = 75 - y;\n\t\t\tr = Math.sqrt(wx * wx + wy * wy);\n\t\t\tphi = Math.atan2(wy, wx);\n\t\t\tif( phi < 0 ) phi += Math.PI * 2;\n\t\t\tif( r > 75 ) {\n\t\t\t\tr = 75;\n\t\t\t\tx = 75 - (75 * Math.cos(phi));\n\t\t\t\ty = 75 - (75 * Math.sin(phi));\n\t\t\t}\n\t\t\tx = Math.round(x);\n\t\t\ty = Math.round(y);\n\t\t}\n\t\t\n\t\t// Move the picker\n\t\tif( target.is('.minicolors-grid') ) {\n\t\t\tpicker\n\t\t\t\t.stop(true)\n\t\t\t\t.animate({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t}, duration, $.minicolors.settings.animationEasing, function() {\n\t\t\t\t\tupdateFromControl(input);\n\t\t\t\t});\n\t\t} else {\n\t\t\tpicker\n\t\t\t\t.stop(true)\n\t\t\t\t.animate({\n\t\t\t\t\ttop: y + 'px'\n\t\t\t\t}, duration, $.minicolors.settings.animationEasing, function() {\n\t\t\t\t\tupdateFromControl(input);\n\t\t\t\t});\n\t\t}\n\t\t\n\t}\n\t\n\t// Sets the input based on the color picker values\n\tfunction updateFromControl(input) {\n\t\t\n\t\tfunction getCoords(picker, container) {\n\t\t\t\n\t\t\tvar left, top;\n\t\t\tif( !picker.length || !container ) return null;\n\t\t\tleft = picker.offset().left;\n\t\t\ttop = picker.offset().top;\n\t\t\t\n\t\t\treturn {\n\t\t\t\tx: left - container.offset().left + (picker.outerWidth() / 2),\n\t\t\t\ty: top - container.offset().top + (picker.outerHeight() / 2)\n\t\t\t};\n\t\t\t\n\t\t}\n\t\t\n\t\tvar hue, saturation, brightness, opacity, rgb, hex, x, y, r, phi,\n\t\t\t\n\t\t\t// Helpful references\n\t\t\tminicolors = input.parent(),\n\t\t\tpanel = minicolors.find('.minicolors-panel'),\n\t\t\tswatch = minicolors.find('.minicolors-swatch'),\n\t\t\thasOpacity = input.attr('data-opacity') !== undefined,\n\t\t\tsliderType = input.attr('data-slider'),\n\t\t\t\n\t\t\t// Panel objects\n\t\t\tgrid = minicolors.find('.minicolors-grid'),\n\t\t\tslider = minicolors.find('.minicolors-slider'),\n\t\t\topacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\t\t\t\n\t\t\t// Picker objects\n\t\t\tgridPicker = grid.find('[class$=-picker]'),\n\t\t\tsliderPicker = slider.find('[class$=-picker]'),\n\t\t\topacityPicker = opacitySlider.find('[class$=-picker]'),\n\t\t\t\n\t\t\t// Picker positions\n\t\t\tgridPos = getCoords(gridPicker, grid),\n\t\t\tsliderPos = getCoords(sliderPicker, slider),\n\t\t\topacityPos = getCoords(opacityPicker, opacitySlider);\n\t\t\n\t\t// Determine HSB values\n\t\tswitch(sliderType) {\n\t\t\t\n\t\t\tcase 'wheel':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\tx = (grid.width() / 2) - gridPos.x;\n\t\t\t\ty = (grid.height() / 2) - gridPos.y;\n\t\t\t\tr = Math.sqrt(x * x + y * y);\n\t\t\t\tphi = Math.atan2(y, x);\n\t\t\t\tif( phi < 0 ) phi += Math.PI * 2;\n\t\t\t\tif( r > 75 ) {\n\t\t\t\t\tr = 75;\n\t\t\t\t\tgridPos.x = 69 - (75 * Math.cos(phi));\n\t\t\t\t\tgridPos.y = 69 - (75 * Math.sin(phi));\n\t\t\t\t}\n\t\t\t\tsaturation = keepWithin(r / 0.75, 0, 100);\n\t\t\t\thue = keepWithin(phi * 180 / Math.PI, 0, 360);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'saturation':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(parseInt(gridPos.x * (360 / grid.width())), 0, 360);\n\t\t\t\tsaturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'brightness':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(parseInt(gridPos.x * (360 / grid.width())), 0, 360);\n\t\t\t\tsaturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height())), 0, 360);\n\t\t\t\tsaturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tgrid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\t// Determine opacity\n\t\tif( hasOpacity ) {\n\t\t\topacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);\n\t\t} else {\n\t\t\topacity = 1;\n\t\t}\n\t\t\n\t\t// Update input control\n\t\tinput.val(hex);\n\t\tif( hasOpacity ) input.attr('data-opacity', opacity);\n\t\t\n\t\t// Set swatch color\n\t\tswatch.find('SPAN').css({\n\t\t\tbackgroundColor: hex,\n\t\t\topacity: opacity\n\t\t});\n\t\t\n\t\t// Fire change event\n\t\tif( hex + opacity !== input.data('last-change') ) {\n\t\t\tinput\n\t\t\t\t.data('last-change', hex + opacity)\n\t\t\t\t.trigger('change', input);\n\t\t}\n\t\t\n\t}\n\t\n\t// Sets the color picker values from the input\n\tfunction updateFromInput(input, preserveInputValue) {\n\t\t\n\t\tvar hex,\n\t\t\thsb,\n\t\t\topacity,\n\t\t\tx, y, r, phi,\n\t\t\t\n\t\t\t// Helpful references\n\t\t\tminicolors = input.parent(),\n\t\t\tswatch = minicolors.find('.minicolors-swatch'),\n\t\t\thasOpacity = input.attr('data-opacity') !== undefined,\n\t\t\tsliderType = input.attr('data-slider'),\n\t\t\t\n\t\t\t\n\t\t\t// Panel objects\n\t\t\tgrid = minicolors.find('.minicolors-grid'),\n\t\t\tslider = minicolors.find('.minicolors-slider'),\n\t\t\topacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\t\t\t\n\t\t\t// Picker objects\n\t\t\tgridPicker = grid.find('[class$=-picker]'),\n\t\t\tsliderPicker = slider.find('[class$=-picker]'),\n\t\t\topacityPicker = opacitySlider.find('[class$=-picker]');\n\t\t\n\t\t// Determine hex/HSB values\n\t\thex = convertCase(parseHex(input.val(), true));\n\t\tif( !hex ) hex = convertCase(parseHex(input.attr('data-default'), true));\n\t\thsb = hex2hsb(hex);\n\t\t\n\t\t// Update input value\n\t\tif( !preserveInputValue ) input.val(hex);\n\t\t\n\t\t// Determine opacity value\n\t\tif( hasOpacity ) {\n\t\t\topacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\n\t\t\tinput.attr('data-opacity', opacity);\n\t\t\tswatch.find('SPAN').css('opacity', opacity);\n\t\t\t\n\t\t\t// Set opacity picker position\n\t\t\ty = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());\n\t\t\topacityPicker.css('top', y + 'px');\n\t\t}\n\t\t\n\t\t// Update swatch\n\t\tswatch.find('SPAN').css('backgroundColor', hex);\n\t\t\n\t\t// Determine picker locations\n\t\tswitch(sliderType) {\n\t\t\t\n\t\t\tcase 'wheel':\n\t\t\t\t// Set grid position\n\t\t\t\tr = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\n\t\t\t\tphi = hsb.h * Math.PI / 180;\n\t\t\t\tx = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\n\t\t\t\ty = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = 150 - (hsb.b / (100 / grid.height()));\n\t\t\t\tif( hex === '' ) y = 0;\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update panel color\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'saturation':\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin((5 * hsb.h) / 12, 0, 150);\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\n\t\t\t\t\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'brightness':\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin((5 * hsb.h) / 12, 0, 150);\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update panel color\n\t\t\t\tgrid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t// Converts to the letter case specified in $.minicolors.settings.letterCase\n\tfunction convertCase(string) {\n\t\treturn $.minicolors.settings.letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\n\t}\n\t\n\t// Parses a string and returns a valid hex string when possible\n\tfunction parseHex(string, expand) {\n\t\tstring = string.replace(/[^A-F0-9]/ig, '');\n\t\tif( string.length !== 3 && string.length !== 6 ) return '';\n\t\tif( string.length === 3 && expand ) {\n\t\t\tstring = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n\t\t}\n\t\treturn '#' + string;\n\t}\n\t\n\t// Keeps value within min and max\n\tfunction keepWithin(value, min, max) {\n\t\tif( value < min ) value = min;\n\t\tif( value > max ) value = max;\n\t\treturn value;\n\t}\n\t\n\t// Converts an HSB object to an RGB object\n\tfunction hsb2rgb(hsb) {\n\t\tvar rgb = {};\n\t\tvar h = Math.round(hsb.h);\n\t\tvar s = Math.round(hsb.s * 255 / 100);\n\t\tvar v = Math.round(hsb.b * 255 / 100);\n\t\tif(s === 0) {\n\t\t\trgb.r = rgb.g = rgb.b = v;\n\t\t} else {\n\t\t\tvar t1 = v;\n\t\t\tvar t2 = (255 - s) * v / 255;\n\t\t\tvar t3 = (t1 - t2) * (h % 60) / 60;\n\t\t\tif( h === 360 ) h = 0;\n\t\t\tif( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }\n\t\t\telse if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }\n\t\t\telse if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }\n\t\t\telse if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }\n\t\t\telse if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }\n\t\t\telse if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }\n\t\t\telse { rgb.r = 0; rgb.g = 0; rgb.b = 0; }\n\t\t}\n\t\treturn {\n\t\t\tr: Math.round(rgb.r),\n\t\t\tg: Math.round(rgb.g),\n\t\t\tb: Math.round(rgb.b)\n\t\t};\n\t}\n\t\n\t// Converts an RGB object to a hex string\n\tfunction rgb2hex(rgb) {\n\t\tvar hex = [\n\t\t\trgb.r.toString(16),\n\t\t\trgb.g.toString(16),\n\t\t\trgb.b.toString(16)\n\t\t];\n\t\t$.each(hex, function(nr, val) {\n\t\t\tif (val.length === 1) hex[nr] = '0' + val;\n\t\t});\n\t\treturn '#' + hex.join('');\n\t}\n\t\n\t// Converts an HSB object to a hex string\n\tfunction hsb2hex(hsb) {\n\t\treturn rgb2hex(hsb2rgb(hsb));\n\t}\n\t\n\t// Converts a hex string to an HSB object\n\tfunction hex2hsb(hex) {\n\t\tvar hsb = rgb2hsb(hex2rgb(hex));\n\t\tif( hsb.s === 0 ) hsb.h = 360;\n\t\treturn hsb;\n\t}\n\t\n\t// Converts an RGB object to an HSB object\n\tfunction rgb2hsb(rgb) {\n\t\tvar hsb = { h: 0, s: 0, b: 0 };\n\t\tvar min = Math.min(rgb.r, rgb.g, rgb.b);\n\t\tvar max = Math.max(rgb.r, rgb.g, rgb.b);\n\t\tvar delta = max - min;\n\t\thsb.b = max;\n\t\thsb.s = max !== 0 ? 255 * delta / max : 0;\n\t\tif( hsb.s !== 0 ) {\n\t\t\tif( rgb.r === max ) {\n\t\t\t\thsb.h = (rgb.g - rgb.b) / delta;\n\t\t\t} else if( rgb.g === max ) {\n\t\t\t\thsb.h = 2 + (rgb.b - rgb.r) / delta;\n\t\t\t} else {\n\t\t\t\thsb.h = 4 + (rgb.r - rgb.g) / delta;\n\t\t\t}\n\t\t} else {\n\t\t\thsb.h = -1;\n\t\t}\n\t\thsb.h *= 60;\n\t\tif( hsb.h < 0 ) {\n\t\t\thsb.h += 360;\n\t\t}\n\t\thsb.s *= 100/255;\n\t\thsb.b *= 100/255;\n\t\treturn hsb;\n\t}\n\t\n\t// Converts a hex string to an RGB object\n\tfunction hex2rgb(hex) {\n\t\thex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n\t\treturn {\n\t\t\tr: hex >> 16,\n\t\t\tg: (hex & 0x00FF00) >> 8,\n\t\t\tb: (hex & 0x0000FF)\n\t\t};\n\t}\n\t\n\t// A bit of magic...\n\t$(window).on('load', function() {\n\t\t\n\t\t// Auto-initialize\n\t\t$.minicolors.init();\n\t\t\n\t\t$(document)\n\t\t\t// Hide on clicks outside of the control\n\t\t\t.on('mousedown touchstart', function(event) {\n\t\t\t\tif( !$(event.target).parents().add(event.target).hasClass('minicolors') ) {\n\t\t\t\t\thide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Start moving\n\t\t\t.on('mousedown touchstart', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {\n\t\t\t\tvar target = $(this);\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(document).data('minicolors-target', target);\n\t\t\t\tmove(target, event, true);\n\t\t\t})\n\t\t\t// Move pickers\n\t\t\t.on('mousemove touchmove', function(event) {\n\t\t\t\tvar target = $(document).data('minicolors-target');\n\t\t\t\tif( target ) move(target, event);\n\t\t\t})\n\t\t\t// Stop moving\n\t\t\t.on('mouseup touchend', function() {\n\t\t\t\t$(this).removeData('minicolors-target');\n\t\t\t})\n\t\t\t// Toggle panel when swatch is clicked\n\t\t\t.on('mousedown touchstart', '.minicolors-swatch', function(event) {\n\t\t\t\tvar input = $(this).parent().find('INPUT'),\n\t\t\t\t\tminicolors = input.parent();\n\t\t\t\tif( minicolors.hasClass('minicolors-focus') ) {\n\t\t\t\t\thide(input);\n\t\t\t\t} else {\n\t\t\t\t\tshow(input);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Show on focus\n\t\t\t.on('focus', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tshow(input);\n\t\t\t})\n\t\t\t// Fix hex and hide on blur\n\t\t\t.on('blur', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tinput.val( convertCase(parseHex(input.val() !== '' ? input.val() : convertCase(parseHex(input.attr('data-default'), true)), true)) );\n\t\t\t\thide(input);\n\t\t\t})\n\t\t\t// Handle keypresses\n\t\t\t.on('keydown', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tswitch(event.keyCode) {\n\t\t\t\t\tcase 9: // tab\n\t\t\t\t\t\thide();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 27: // esc\n\t\t\t\t\t\thide();\n\t\t\t\t\t\tinput.blur();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Update on keyup\n\t\t\t.on('keyup', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tupdateFromInput(input, true);\n\t\t\t})\n\t\t\t// Update on paste\n\t\t\t.on('paste', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\tupdateFromInput(input, true);\n\t\t\t\t}, 1);\n\t\t\t});\n\t\t\n\t});\n\t\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/color/jquery-miniColors/readme.md",
    "content": "# jQuery MiniColors: A tiny color picker built on jQuery\n\n_Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)_\n\n_Dual-licensed under the MIT and GPL Version 2 licenses_\n\n\n## Demo & Documentation\n\nhttp://labs.abeautifulsite.net/jquery-miniColors/\n\n## Quick Start\n\n```html\n<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\"></script>\n<script src=\"jquery.minicolors.js\"></script>\n<link rel=\"stylesheet\" href=\"jquery.minicolors.css\" />\n```\n\nTo create a color picker:\n\n```html\n<input type=\"minicolors\" name=\"color\" />\n```\n\nRefer to `index.html` for complete documentation and examples."
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/README.md",
    "content": "# Project : bootstrap-datetimepicker\n======================================\n\n[![Build Status](https://travis-ci.org/smalot/bootstrap-datetimepicker.png?branch=master)](https://travis-ci.org/smalot/bootstrap-datetimepicker)\n\n[Homepage](http://www.malot.fr/bootstrap-datetimepicker/)\n\n[Demo page](http://www.malot.fr/bootstrap-datetimepicker/demo.php)\n\n# Project forked\n\nThis project is a fork of [bootstrap-datepicker project](https://github.com/eternicode/bootstrap-datepicker).\n\n\n# Home\n\nAs 'bootstrap-datetimepicker' is restricted to the date scope (day, month, year), this project aims to support too the time picking (hour, minutes).\n\n\n# Screenshots\n\n## Decade year view\n\n![Datetimepicker decade year view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_decade.png)\n\nThis view allows to select the day in the selected month.\n\n## Year view\n\n![Datetimepicker year view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_year.png)\n\nThis view allows to select the month in the selected year.\n\n## Month view\n\n![Datetimepicker month view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_month.png)\n\nThis view allows to select the year in a range of 10 years.\n\n## Day view\n\n![Datetimepicker day view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_day.png)\n\nThis view allows to select the hour in the selected day.\n\n## Hour view\n\n![Datetimepicker hour view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_hour.png)\n\nThis view allows to select the preset of minutes in the selected hour.\nThe range of 5 minutes (by default) has been selected to restrict buttons quantity to an acceptable value, but it can be overrided by the <code>minuteStep</code> property.\n\n## Day view - meridian\n\n![Datetimepicker day view meridian](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_day_meridian.png)\n\nMeridian is supported in both the day and hour views.\nTo use it, just enable the <code>showMeridian</code> property.\n\n## Hour view - meridian\n\n![Datetimepicker hour view meridian](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_hour_meridian.png)\n\n# Example\n\nAttached to a field with the format specified via options:\n\n```html\n<input type=\"text\" value=\"2012-05-15 21:05\" id=\"datetimepicker\">\n```\n```javascript\n$('#datetimepicker').datetimepicker({\n    format: 'yyyy-mm-dd hh:ii'\n});\n```\n\nAttached to a field with the format specified via markup:\n\n```html\n<input type=\"text\" value=\"2012-05-15 21:05\" id=\"datetimepicker\" data-date-format=\"yyyy-mm-dd hh:ii\">\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\nAs component:\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\nAs inline datetimepicker:\n\n```html\n<div id=\"datetimepicker\"></div>\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\n# Using bootstrap-datetimepicker.js\n\nCall the datetimepicker via javascript:\n\n```javascript\n$('.datetimepicker').datetimepicker()\n```\n\n## Dependencies\n\nRequires bootstrap's dropdown component (`dropdowns.less`) for some styles, and bootstrap's sprites (`sprites.less` and associated images) for arrows.\n\nA standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running `build/build_standalone.less` through the `lessc` compiler:\n\n```bash\n$ lessc build/build_standalone.less datetimepicker.css\n```\n\n## Options\n\nAll options that take a \"Date\" can handle a `Date` object; a String formatted according to the given `format`; or a timedelta relative to today, eg '-1d', '+6m +1y', etc, where valid units are 'd' (day), 'w' (week), 'm' (month), and 'y' (year).\n\nYou can also specify an ISO-8601 valid datetime, despite of the given `format` :\n * yyyy-mm-dd\n * yyyy-mm-dd hh:ii\n * yyyy-mm-ddThh:ii\n * yyyy-mm-dd hh:ii:ss\n * yyyy-mm-ddThh:ii:ssZ\n\n### format\n\nString.  Default: 'mm/dd/yyyy'\n\nThe date format, combination of p, P, h, hh, i, ii, s, ss, d, dd, m, mm, M, MM, yy, yyyy.\n\n * p : meridian in lower case ('am' or 'pm') - according to locale file\n * P : meridian in upper case ('AM' or 'PM') - according to locale file\n * s : seconds without leading zeros\n * ss : seconds, 2 digits with leading zeros\n * i : minutes without leading zeros\n * ii : minutes, 2 digits with leading zeros\n * h : hour without leading zeros - 24-hour format\n * hh : hour, 2 digits with leading zeros - 24-hour format\n * H : hour without leading zeros - 12-hour format\n * HH : hour, 2 digits with leading zeros - 12-hour format\n * d : day of the month without leading zeros\n * dd : day of the month, 2 digits with leading zeros\n * m : numeric representation of month without leading zeros\n * mm : numeric representation of the month, 2 digits with leading zeros\n * M : short textual representation of a month, three letters\n * MM : full textual representation of a month, such as January or March\n * yy : two digit representation of a year\n * yyyy : full numeric representation of a year, 4 digits\n\n### weekStart\n\nInteger.  Default: 0\n\nDay of the week start. 0 (Sunday) to 6 (Saturday)\n\n### startDate\n\nDate.  Default: Beginning of time\n\nThe earliest date that may be selected; all earlier dates will be disabled.\n\n### endDate\n\nDate.  Default: End of time\n\nThe latest date that may be selected; all later dates will be disabled.\n\n### daysOfWeekDisabled\n\nString, Array.  Default: '', []\n\nDays of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: `'0,6'` or `[0,6]`.\n\n### autoclose\n\nBoolean.  Default: false\n\nWhether or not to close the datetimepicker immediately when a date is selected.\n\n### startView\n\nNumber, String.  Default: 2, 'month'\n\nThe view that the datetimepicker should show when it is opened.\nAccepts values of :\n * 0 or 'hour' for the hour view\n * 1 or 'day' for the day view\n * 2 or 'month' for month view (the default)\n * 3 or 'year' for the 12-month overview\n * 4 or 'decade' for the 10-year overview. Useful for date-of-birth datetimepickers.\n\n### minView\n\nNumber, String. Default: 0, 'hour'\n\nThe lowest view that the datetimepicker should show.\n\n### maxView\n\nNumber, String. Default: 4, 'decade'\n\nThe highest view that the datetimepicker should show.\n\n### todayBtn\n\nBoolean, \"linked\".  Default: false\n\nIf true or \"linked\", displays a \"Today\" button at the bottom of the datetimepicker to select the current date.  If true, the \"Today\" button will only move the current date into view; if \"linked\", the current date will also be selected.\n\n### todayHighlight\n\nBoolean.  Default: false\n\nIf true, highlights the current date.\n\n### keyboardNavigation\n\nBoolean.  Default: true\n\nWhether or not to allow date navigation by arrow keys.\n\n### language\n\nString.  Default: 'en'\n\nThe two-letter code of the language to use for month and day names.  These will also be used as the input's value (and subsequently sent to the server in the case of form submissions).  Currently ships with English ('en'), German ('de'), Brazilian ('br'), and Spanish ('es') translations, but others can be added (see I18N below).  If an unknown language code is given, English will be used.\n\n### forceParse\n\nBoolean.  Default: true\n\nWhether or not to force parsing of the input value when the picker is closed.  That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`.\n\n### minuteStep\n\nNumber.  Default: 5\n\nThe increment used to build the hour view. A button is created for each <code>minuteStep</code> minutes.\n\n### pickerReferer : deprecated\n\nString.  Default: 'default'\n\nThe referer element to place the picker for the component implementation. If you want to place the picker just under the input field, just specify <code>input</code>.\n\n### pickerPosition\n\nString. Default: 'bottom-right' (other supported value : 'bottom-left')\n\nThis option allows to place the picker just under the input field for the component implementation instead of the default position which is at the bottom right of the button.\n\n### viewSelect\n\nNumber or String. Default: <code>same as minView</code> (supported values are: 'decade', 'year', 'month', 'day', 'hour')\n\nWith this option you can select the view from which the date will be selected. By default it's the last one, however you can choose the first one, so at each click the date will be updated.\n\n### showMeridian\n\nBoolean. Default: false\n\nThis option will enable meridian views for day and hour views.\n\n### initialDate\n\nDate or String. Default: new Date()\n\nYou can initialize the viewer with a date. By default it's now, so you can specify yesterday or today at midnight ...\n\n## Markup\n\nFormat as component.\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input class=\"span2\" size=\"16\" type=\"text\" value=\"12-02-2012\">\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n\nFormat as component with reset button to clear the input field.\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input class=\"span2\" size=\"16\" type=\"text\" value=\"12-02-2012\">\n    <span class=\"add-on\"><i class=\"icon-remove\"></i></span>\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n\n## Methods\n\n### .datetimepicker(options)\n\nInitializes an datetimepicker.\n\n### remove\n\nArguments: None\n\nRemove the datetimepicker.  Removes attached events, internal attached objects, and\nadded HTML elements.\n\n    $('#datetimepicker').datetimepicker('remove');\n\n### show\n\nArguments: None\n\nShow the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('show');\n```\n\n### hide\n\nArguments: None\n\nHide the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('hide');\n```\n\n### update\n\nArguments: None\n\nUpdate the datetimepicker with the current input value.\n\n```javascript\n$('#datetimepicker').datetimepicker('update');\n```\n\n### setStartDate\n\nArguments:\n\n* startDate (String)\n\nSets a new lower date limit on the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('setStartDate', '2012-01-01');\n```\n\nOmit startDate (or provide an otherwise falsey value) to unset the limit.\n\n```javascript\n$('#datetimepicker').datetimepicker('setStartDate');\n$('#datetimepicker').datetimepicker('setStartDate', null);\n```\n\n### setEndDate\n\nArguments:\n\n* endDate (String)\n\nSets a new upper date limit on the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('setEndDate', '2012-12-31');\n```\n\nOmit endDate (or provide an otherwise falsey value) to unset the limit.\n\n```javascript\n$('#datetimepicker').datetimepicker('setEndDate');\n$('#datetimepicker').datetimepicker('setEndDate', null);\n```\n\n### setDaysOfWeekDisabled\n\nArguments:\n\n* daysOfWeekDisabled (String|Array)\n\nSets the days of week that should be disabled.\n\n```javascript\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', [0,6]);\n```\n\nOmit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days.\n\n```javascript\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled');\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', null);\n```\n\n## Events\n\nDatetimepicker class exposes a few events for manipulating the dates.\n\n### show\n\nFired when the date picker is displayed.\n\n### hide\n\nFired when the date picker is hidden.\n\n### changeDate\n\nFired when the date is changed.\n\n```javascript\n$('#date-end')\n    .datetimepicker()\n    .on('changeDate', function(ev){\n        if (ev.date.valueOf() < date-start-display.valueOf()){\n            ....\n        }\n    });\n```\n\n### changeYear\n\nFired when the *view* year is changed from decade view.\n\n### changeMonth\n\nFired when the *view* month is changed from year view.\n\n### outOfRange\n\nFired when you pick a date before the *startDate* or after the *endDate* or when you specify a date via the method *setDate* or *setUTCDate*..\n\n## Keyboard support\n\nThe datetimepicker includes some keyboard navigation:\n\n### up, down, left, right arrow keys\n\nBy themselves, left/right will move backward/forward one day, up/down will move back/forward one week.\n\nWith the shift key, up/left will move backward one month, down/right will move forward one month.\n\nWith the ctrl key, up/left will move backward one year, down/right will move forward oone year.\n\nShift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.\n\n### escape\n\nThe escape key can be used to hide and re-show the datetimepicker; this is necessary if the user wants to manually edit the value.\n\n### enter\n\nWhen the picker is visible, enter will simply hide it.  When the picker is not visible, enter will have normal effects -- submitting the current form, etc.\n\n## I18N\n\nThe plugin supports i18n for the month and weekday names and the `weekStart` option.  The default is English ('en'); other available translations are avilable in the `js/locales/` directory, simply include your desired locale after the plugin.  To add more languages, simply add a key to `$.fn.datetimepicker.dates`, before calling `.datetimepicker()`.  Example:\n\n```javascript\n$.fn.datetimepicker.dates['en'] = {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\"\n};\n```\n\nRight-to-left languages may also include `rtl: true` to make the calendar display appropriately.\n\nIf your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding.  Simply add `charset=\"UTF-8\"` to your `script` tag:\n\n```html\n<script type=\"text/javascript\" src=\"bootstrap-datetimepicker.de.js\" charset=\"UTF-8\"></script>\n```\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/css/datetimepicker.css",
    "content": "/*!\n * Datetimepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datetimepicker {\n  padding: 4px;\n  margin-top: 1px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n\n}\n.datetimepicker-inline {\n  width: 220px;\n}\n.datetimepicker.datetimepicker-rtl {\n  direction: rtl;\n}\n.datetimepicker.datetimepicker-rtl table tr td span {\n  float: right;\n}\n.datetimepicker-dropdown, .datetimepicker-dropdown-left {\n  top: 0;\n  left: 0;\n}\n.datetimepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: 6px;\n}\n.datetimepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: 7px;\n}\n.datetimepicker-dropdown-left:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  right: 6px;\n}\n.datetimepicker-dropdown-left:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  right: 7px;\n}\n.datetimepicker > div {\n  display: none;\n}\n.datetimepicker.minutes div.datetimepicker-minutes {\n    display: block;\n}\n.datetimepicker.hours div.datetimepicker-hours {\n    display: block;\n}\n.datetimepicker.days div.datetimepicker-days {\n    display: block;\n}\n.datetimepicker.months div.datetimepicker-months {\n  display: block;\n}\n.datetimepicker.years div.datetimepicker-years {\n  display: block;\n}\n.datetimepicker table {\n  margin: 0;\n}\n.datetimepicker  td,\n.datetimepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datetimepicker table tr td,\n.table-striped .datetimepicker table tr th {\n  background-color: transparent;\n}\n.datetimepicker table tr td.minute:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.hour:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.day:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.old,\n.datetimepicker table tr td.new {\n  color: #999999;\n}\n.datetimepicker table tr td.disabled,\n.datetimepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td.today,\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today:hover:hover,\n.datetimepicker table tr td.today.disabled:hover,\n.datetimepicker table tr td.today.disabled:hover:hover,\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today:hover.disabled,\n.datetimepicker table tr td.today.disabled.disabled,\n.datetimepicker table tr td.today.disabled:hover.disabled,\n.datetimepicker table tr td.today[disabled],\n.datetimepicker table tr td.today:hover[disabled],\n.datetimepicker table tr td.today.disabled[disabled],\n.datetimepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datetimepicker table tr td.active,\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datetimepicker .datetimepicker-hours span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker .datetimepicker-hours table tr td span.hour_am,\n.datetimepicker .datetimepicker-hours table tr td span.hour_pm {\n  width: 14.6%;\n}\n.datetimepicker .datetimepicker-hours fieldset legend,\n.datetimepicker .datetimepicker-minutes fieldset legend {\n  margin-bottom: inherit;\n  line-height: 30px;\n}\n.datetimepicker .datetimepicker-minutes span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datetimepicker table tr td span.disabled,\n.datetimepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td span.active,\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span.old {\n  color: #999999;\n}\n.datetimepicker th.switch {\n  width: 145px;\n}\n.datetimepicker thead tr:first-child th,\n.datetimepicker tfoot tr:first-child th {\n  cursor: pointer;\n}\n.datetimepicker thead tr:first-child th:hover,\n.datetimepicker tfoot tr:first-child th:hover {\n  background: #eeeeee;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js",
    "content": "﻿/* =========================================================\n * bootstrap-datetimepicker.js\n * =========================================================\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Improvements by Sébastien Malot\n * Project URL : http://www.malot.fr/bootstrap-datetimepicker\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function( $ ) {\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate(), today.getUTCHours(), today.getUTCMinutes(), today.getUTCSeconds(), 0);\n\t}\n\n\t// Picker object\n\n\tvar Datetimepicker = function(element, options) {\n\t\tvar that = this;\n\n\t\tthis.element = $(element);\n\t\tthis.language = options.language || this.element.data('date-language') || \"en\";\n\t\tthis.language = this.language in dates ? this.language : \"en\";\n\t\tthis.isRTL = dates[this.language].rtl || false;\n\t\tthis.formatType = options.formatType || this.element.data('format-type') || 'standard';\n\t\tthis.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType);\n\t\tthis.isInline = false;\n\t\tthis.isVisible = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar').parent() : false;\n\t\tthis.componentReset = this.element.is('.date') ? this.element.find('.add-on .icon-remove').parent() : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0) {\n\t\t\tthis.component = false;\n\t\t}\n\t\tthis.linkField = options.linkField || this.element.data('link-field') || false;\n\t\tthis.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType);\n\t\tthis.minuteStep = options.minuteStep || this.element.data('minute-step') || 5;\n\t\tthis.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right';\n        this.showMeridian = options.showMeridian || this.element.data('show-meridian') || false;\n        this.initialDate = options.initialDate || new Date();\n\n\t\tthis._attachEvents();\n\n\t\tthis.minView = 0;\n\t\tif ('minView' in options) {\n\t\t\tthis.minView = options.minView;\n\t\t} else if ('minView' in this.element.data()) {\n\t\t\tthis.minView = this.element.data('min-view');\n\t\t}\n\t\tthis.minView = DPGlobal.convertViewMode(this.minView);\n\n\t\tthis.maxView = DPGlobal.modes.length-1;\n\t\tif ('maxView' in options) {\n\t\t\tthis.maxView = options.maxView;\n\t\t} else if ('maxView' in this.element.data()) {\n\t\t\tthis.maxView = this.element.data('max-view');\n\t\t}\n\t\tthis.maxView = DPGlobal.convertViewMode(this.maxView);\n\n\t\tthis.startViewMode = 2;\n\t\tif ('startView' in options) {\n\t\t\tthis.startViewMode = options.startView;\n\t\t} else if ('startView' in this.element.data()) {\n\t\t\tthis.startViewMode = this.element.data('start-view');\n\t\t}\n\t\tthis.startViewMode = DPGlobal.convertViewMode(this.startViewMode);\n\t\tthis.viewMode = this.startViewMode;\n\n        this.viewSelect = this.minView;\n        if ('viewSelect' in options) {\n            this.viewSelect = options.viewSelect;\n        } else if ('viewSelect' in this.element.data()) {\n            this.viewSelect = this.element.data('view-select');\n        }\n        this.viewSelect = DPGlobal.convertViewMode(this.viewSelect);\n\n\t\tthis.forceParse = true;\n\t\tif ('forceParse' in options) {\n\t\t\tthis.forceParse = options.forceParse;\n\t\t} else if ('dateForceParse' in this.element.data()) {\n\t\t\tthis.forceParse = this.element.data('date-force-parse');\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template)\n\t\t\t\t\t\t\t.appendTo(this.isInline ? this.element : 'body')\n\t\t\t\t\t\t\t.on({\n\t\t\t\t\t\t\t\tclick: $.proxy(this.click, this),\n\t\t\t\t\t\t\t\tmousedown: $.proxy(this.mousedown, this)\n\t\t\t\t\t\t\t});\n\n\t\tif (this.isInline) {\n\t\t\tthis.picker.addClass('datetimepicker-inline');\n\t\t} else {\n\t\t\tif (this.component && this.pickerPosition == 'bottom-left') {\n\t\t\t\tthis.picker.addClass('datetimepicker-dropdown-left dropdown-menu');\n\t\t\t} else {\n\t\t\t\tthis.picker.addClass('datetimepicker-dropdown dropdown-menu');\n\t\t\t}\n\t\t}\n\t\tif (this.isRTL){\n\t\t\tthis.picker.addClass('datetimepicker-rtl');\n\t\t\tthis.picker.find('.prev i, .next i')\n\t\t\t\t\t\t.toggleClass('icon-arrow-left icon-arrow-right');\n\t\t}\n\t\t$(document).on('mousedown', function (e) {\n\t\t\t// Clicked outside the datetimepicker, hide it\n\t\t\tif ($(e.target).closest('.datetimepicker').length === 0) {\n\t\t\t\tthat.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis.autoclose = false;\n\t\tif ('autoclose' in options) {\n\t\t\tthis.autoclose = options.autoclose;\n\t\t} else if ('dateAutoclose' in this.element.data()) {\n\t\t\tthis.autoclose = this.element.data('date-autoclose');\n\t\t}\n\n\t\tthis.keyboardNavigation = true;\n\t\tif ('keyboardNavigation' in options) {\n\t\t\tthis.keyboardNavigation = options.keyboardNavigation;\n\t\t} else if ('dateKeyboardNavigation' in this.element.data()) {\n\t\t\tthis.keyboardNavigation = this.element.data('date-keyboard-navigation');\n\t\t}\n\n\t\tthis.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false);\n\t\tthis.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false);\n\n\t\tthis.weekStart = ((options.weekStart || this.element.data('date-weekstart') || dates[this.language].weekStart || 0) % 7);\n\t\tthis.weekEnd = ((this.weekStart + 6) % 7);\n\t\tthis.startDate = -Infinity;\n\t\tthis.endDate = Infinity;\n\t\tthis.daysOfWeekDisabled = [];\n\t\tthis.setStartDate(options.startDate || this.element.data('date-startdate'));\n\t\tthis.setEndDate(options.endDate || this.element.data('date-enddate'));\n\t\tthis.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled'));\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif(this.isInline) {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatetimepicker.prototype = {\n\t\tconstructor: Datetimepicker,\n\n\t\t_events: [],\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tif (this.isInput) { // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t\tif (this.componentReset) {\n\t\t\t\t\tthis._events.push([\n\t\t\t\t\t\tthis.componentReset,\n\t\t\t\t\t\t{click: $.proxy(this.reset, this)}\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.element.is('div')) {  // inline datetimepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.on(ev);\n\t\t\t}\n\t\t},\n\t\t\n\t\t_detachEvents: function(){\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.off(ev);\n\t\t\t}\n\t\t\tthis._events = [];\n\t\t},\n\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tif (this.forceParse) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tthis.isVisible = true;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\thide: function(e){\n\t\t\tif(!this.isVisible) return;\n\t\t\tif(this.isInline) return;\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tthis.viewMode = this.startViewMode;\n\t\t\tthis.showMode();\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off('mousedown', this.hide);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val()  || \n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis.isVisible = false;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\tremove: function() {\n\t\t\tthis._detachEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datetimepicker;\n\t\t},\n\n\t\tgetDate: function() {\n\t\t\tvar d = this.getUTCDate();\n\t\t\treturn new Date(d.getTime() + (d.getTimezoneOffset()*60000));\n\t\t},\n\n\t\tgetUTCDate: function() {\n\t\t\treturn this.date;\n\t\t},\n\n\t\tsetDate: function(d) {\n\t\t\tthis.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));\n\t\t},\n\n\t\tsetUTCDate: function(d) {\n\t\t\tif (d >= this.startDate && d <= this.endDate) {\n\t\t\t\tthis.date = d;\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.viewDate = this.date;\n\t\t\t\tthis.fill();\n\t\t\t} else {\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\tdate: d,\n\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\tendDate: this.endDate\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tsetValue: function() {\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', formatted);\n\t\t\t\t}\n\t\t\t\tthis.element.data('date', formatted);\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', formatted);\n\t\t\t}\n\t\t\tif (this.linkField) {\n\t\t\t\t$('#' + this.linkField).val(this.getFormattedDate(this.linkFormat));\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format) {\n\t\t\tif(format == undefined) format = this.format;\n\t\t\treturn DPGlobal.formatDate(this.date, format, this.language, this.formatType);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis.startDate = startDate || -Infinity;\n\t\t\tif (this.startDate !== -Infinity) {\n\t\t\t\tthis.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis.endDate = endDate || Infinity;\n\t\t\tif (this.endDate !== Infinity) {\n\t\t\t\tthis.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis.daysOfWeekDisabled = daysOfWeekDisabled || [];\n\t\t\tif (!$.isArray(this.daysOfWeekDisabled)) {\n\t\t\t\tthis.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\\s*/);\n\t\t\t}\n\t\t\tthis.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) {\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif(this.isInline) return;\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function() {\n\t\t\t\t\t\t\treturn $(this).css('z-index') != 'auto';\n\t\t\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset, left;\n\t\t\tif (this.component) {\n\t\t\t\toffset = this.component.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t\tif (this.pickerPosition == 'bottom-left') {\n\t\t\t\t\tleft += this.component.outerWidth() - this.picker.outerWidth();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toffset = this.element.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t}\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\tupdate: function(){\n\t\t\tvar date, fromArgs = false;\n\t\t\tif(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {\n\t\t\t\tdate = arguments[0];\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdate = this.isInput ? this.element.prop('value') : this.element.data('date') || this.element.find('input').prop('value') || this.initialDate;\n\t\t\t}\n\n\t\t\tif (!date) {\n\t\t\t\tdate = new Date();\n\t\t\t\tfromArgs = false;\n\t\t\t}\n\n\t\t\tthis.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType);\n\n\t\t\tif (fromArgs) this.setValue();\n\n\t\t\tif (this.date < this.startDate) {\n\t\t\t\tthis.viewDate = new Date(this.startDate);\n\t\t\t} else if (this.date > this.endDate) {\n\t\t\t\tthis.viewDate = new Date(this.endDate);\n\t\t\t} else {\n\t\t\t\tthis.viewDate = new Date(this.date);\n\t\t\t}\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.weekStart,\n\t\t\thtml = '<tr>';\n\t\t\twhile (dowCnt < this.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datetimepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-months td').html(html);\n\t\t},\n\n\t\tfill: function() {\n\t\t\tif (this.date == null || this.viewDate == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tdayMonth = d.getUTCDate(),\n\t\t\t\thours = d.getUTCHours(),\n\t\t\t\tminutes = d.getUTCMinutes(),\n\t\t\t\tstartYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\n\t\t\t\tcurrentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(),\n\t\t\t\ttoday = new Date();\n\t\t\tthis.picker.find('.datetimepicker-days thead th:eq(1)')\n\t\t\t\t\t\t.text(dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('.datetimepicker-hours thead th:eq(1)')\n\t\t\t\t\t\t.text(dayMonth+' '+dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('.datetimepicker-minutes thead th:eq(1)')\n\t\t\t\t\t\t.text(dayMonth+' '+dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(dates[this.language].today)\n\t\t\t\t\t\t.toggle(this.todayBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\t/*var prevMonth = UTCDate(year, month, 0,0,0,0,0);\n\t\t\tprevMonth.setUTCDate(prevMonth.getDate() - (prevMonth.getUTCDay() - this.weekStart + 7)%7);*/\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28,0,0,0,0),\n                day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t    prevMonth.setUTCDate(day);\n      \t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t}\n\t\t\t\tclsName = '';\n\t\t\t\tif (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\n\t\t\t\t\tclsName += ' old';\n\t\t\t\t} else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\n\t\t\t\t\tclsName += ' new';\n\t\t\t\t}\n\t\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\t\tif (this.todayHighlight &&\n\t\t\t\t\tprevMonth.getUTCFullYear() == today.getFullYear() &&\n\t\t\t\t\tprevMonth.getUTCMonth() == today.getMonth() &&\n\t\t\t\t\tprevMonth.getUTCDate() == today.getDate()) {\n\t\t\t\t\tclsName += ' today';\n\t\t\t\t}\n\t\t\t\tif (prevMonth.valueOf() == currentDate) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\tif ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate ||\n\t\t\t\t\t$.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t}\n\t\t\t\thtml.push('<td class=\"day'+clsName+'\">'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-days tbody').empty().append(html.join(''));\n\n\t\t\thtml = [];\n            var txt = '', meridian = '', meridianOld = '';\n\t\t\tfor (var i=0;i<24;i++) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, i);\n\t\t\t\tclsName = '';\n\t\t\t\t// We want the previous hour for the startDate\n\t\t\t\tif ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (hours == i) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n                if (this.showMeridian && dates[this.language].meridiem.length == 2) {\n                    meridian = (i<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n                    if (meridian != meridianOld) {\n                        if (meridianOld != '') {\n                            html.push('</fieldset>');\n                        }\n                        html.push('<fieldset class=\"hour\"><legend>'+meridian.toUpperCase()+'</legend>');\n                    }\n                    meridianOld = meridian;\n                    txt = (i%12?i%12:12);\n                    html.push('<span class=\"hour'+clsName+' hour_'+(i<12?'am':'pm')+'\">'+txt+'</span>');\n                    if (i == 23) {\n                        html.push('</fieldset>');\n                    }\n                } else {\n                    txt = i+':00';\n                    html.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n                }\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-hours td').html(html.join(''));\n\n\t\t\thtml = [];\n            txt = '', meridian = '', meridianOld = '';\n\t\t\tfor(var i=0;i<60;i+=this.minuteStep) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, hours, i, 0);\n\t\t\t\tclsName = '';\n\t\t\t\tif (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (Math.floor(minutes/this.minuteStep) == Math.floor(i/this.minuteStep)) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n                if (this.showMeridian && dates[this.language].meridiem.length == 2) {\n                    meridian = (hours<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n                    if (meridian != meridianOld) {\n                        if (meridianOld != '') {\n                            html.push('</fieldset>');\n                        }\n                        html.push('<fieldset class=\"minute\"><legend>'+meridian.toUpperCase()+'</legend>');\n                    }\n                    meridianOld = meridian;\n                    txt = (hours%12?hours%12:12);\n                    //html.push('<span class=\"minute'+clsName+' minute_'+(hours<12?'am':'pm')+'\">'+txt+'</span>');\n                    html.push('<span class=\"minute'+clsName+'\">'+txt+':'+(i<10?'0'+i:i)+'</span>');\n                    if (i == 59) {\n                        html.push('</fieldset>');\n                    }\n                } else {\n                    txt = i+':00';\n                    //html.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n                    html.push('<span class=\"minute'+clsName+'\">'+hours+':'+(i<10?'0'+i:i)+'</span>');\n                }\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-minutes td').html(html.join(''));\n\n\t\t\tvar currentYear = this.date.getUTCFullYear();\n\t\t\tvar months = this.picker.find('.datetimepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear == year) {\n\t\t\t\tmonths.eq(this.date.getUTCMonth()).addClass('active');\n\t\t\t}\n\t\t\tif (year < startYear || year > endYear) {\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year == startYear) {\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year == endYear) {\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datetimepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i == -1 || i == 10 ? ' old' : '')+(currentYear == year ? ' active' : '')+(year < startYear || year > endYear ? ' disabled' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tday = d.getUTCDate(),\n\t\t\t\thour = d.getUTCHours();\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && hour <= this.startDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t  && day >= this.endDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t  && hour >= this.endDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t  && day >= this.endDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 4:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th, legend');\n\t\t\tif (target.length == 1) {\n\t\t\t\tif (target.is('.disabled')) {\n\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\t\tdate: this.viewDate,\n\t\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\t\tendDate: this.endDate\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch(this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveHour(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveDate(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n\n\t\t\t\t\t\t\t\tthis.viewMode = this.startViewMode;\n\t\t\t\t\t\t\t\tthis.showMode(0);\n\t\t\t\t\t\t\t\tthis._setDate(date);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')) {\n                            var year    = this.viewDate.getUTCFullYear(),\n                                month   = this.viewDate.getUTCMonth(),\n                                day     = this.viewDate.getUTCDate(),\n                                hours   = this.viewDate.getUTCHours(),\n                                minutes = this.viewDate.getUTCMinutes(),\n                                seconds = this.viewDate.getUTCSeconds();\n\n\t\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n                                day   = this.viewDate.getUTCDate();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMonth',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 3) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.year')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10) || 0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeYear',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 4) {\n                                    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.hour')){\n\t\t\t\t\t\t\t\thours = parseInt(target.text(), 10) || 0;\n                                if (target.hasClass('hour_am') || target.hasClass('hour_pm')) {\n                                    if (hours == 12 && target.hasClass('hour_am')) {\n                                        hours = 0;\n                                    } else if (hours != 12 && target.hasClass('hour_pm')) {\n                                        hours += 12;\n                                    }\n                                }\n                                this.viewDate.setUTCHours(hours);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeHour',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 1) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.minute')){\n\t\t\t\t\t\t\t\tminutes = parseInt(target.text().substr(target.text().indexOf(':')+1), 10) || 0;\n                                this.viewDate.setUTCMinutes(minutes);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMinute',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 0) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.viewMode != 0) {\n\t\t\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10) || 1;\n\t\t\t\t\t\t\tvar year = this.viewDate.getUTCFullYear(),\n\t\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\t\t\t\t\thours = this.viewDate.getUTCHours(),\n\t\t\t\t\t\t\t\tminutes = this.viewDate.getUTCMinutes(),\n\t\t\t\t\t\t\t\tseconds = this.viewDate.getUTCSeconds();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tif (month === 0) {\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tif (month == 11) {\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n                            this.viewDate.setUTCDate(day);\n                            this.viewDate.setUTCMonth(month);\n                            this.viewDate.setUTCFullYear(year);\n                            this.element.trigger({\n                                type: 'changeDay',\n                                date: this.viewDate\n                            });\n                            if (this.viewSelect >= 2) {\n\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                            }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which == 'date')\n\t\t\t\tthis.date = date;\n\t\t\tif (!which || which  == 'view')\n\t\t\t\tthis.viewDate = date;\n\t\t\tthis.fill();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeDate',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t\tthis.setValue();\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element) {\n\t\t\t\telement.change();\n\t\t\t\tif (this.autoclose && (!which || which == 'date')) {\n\t\t\t\t\t//this.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tmoveMinute: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep));\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveHour: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCHours(new_date.getUTCHours() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveDate: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCDate(new_date.getUTCDate() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag == 1){\n\t\t\t\ttest = dir == -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){ return new_date.getUTCMonth() == month; }\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){ return new_date.getUTCMonth() != new_month; };\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t} else {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i<mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){ return new_month != new_date.getUTCMonth(); };\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.startDate && date <= this.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode == 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, day, month,\n\t\t\t\tnewDate, newViewDate;\n\t\t\tswitch(e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 37 ? -1 : 1;\n                    viewMode = this.viewMode;\n                    if (e.ctrlKey) {\n                        viewMode += 2;\n                    } else if (e.shiftKey) {\n                        viewMode += 1;\n                    }\n                    if (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n                    } else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n                    } else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir);\n                    } else if (viewMode == 1) {\n\t\t\t\t\t\tnewDate = this.moveHour(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveHour(this.viewDate, dir);\n                    } else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir);\n                    }\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 38 ? -1 : 1;\n                    viewMode = this.viewMode;\n                    if (e.ctrlKey) {\n                        viewMode += 2;\n                    } else if (e.shiftKey) {\n                        viewMode += 1;\n                    }\n                    if (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n                    } else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n                    } else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir * 7);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir * 7);\n                    } else if (viewMode == 1) {\n                        if (this.showMeridian) {\n                            newDate = this.moveHour(this.date, dir * 6);\n                            newViewDate = this.moveHour(this.viewDate, dir * 6);\n                        } else {\n                            newDate = this.moveHour(this.date, dir * 4);\n                            newViewDate = this.moveHour(this.viewDate, dir * 4);\n                        }\n                    } else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir * 4);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir * 4);\n                    }\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n                    if (this.viewMode != 0) {\n                        var oldViewMode = this.viewMode;\n                        this.showMode(-1);\n                        this.fill();\n                        if (oldViewMode == this.viewMode && this.autoclose) {\n                            this.hide();\n                        }\n                    } else {\n                        this.fill();\n                        if (this.autoclose) {\n\t\t\t\t\t        this.hide();\n                        }\n                    }\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\tdate: this.date\n\t\t\t\t});\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput) {\n\t\t\t\t\telement = this.element;\n\t\t\t\t} else if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tvar newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));\n\t\t\t\tif (newViewMode >= this.minView && newViewMode <= this.maxView) {\n\t\t\t\t\tthis.viewMode = newViewMode;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/*\n\t\t\t  vitalets: fixing bug of very special conditions:\n\t\t\t  jquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover.\n\t\t\t  Method show() does not set display css correctly and datetimepicker is not shown.\n\t\t\t  Changed to .css('display', 'block') solve the problem.\n\t\t\t  See https://github.com/vitalets/x-editable/issues/37\n\n\t\t\t  In jquery 1.7.2+ everything works fine.\n\t\t\t*/\n\t\t\t//this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t\tthis.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t},\n\t\t\n\t\treset: function(e) {\n\t\t\tthis._setDate(null, 'date');\n\t\t}\n\t};\n\n\t$.fn.datetimepicker = function ( option ) {\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datetimepicker'),\n\t\t\t\toptions = typeof option == 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option == 'string' && typeof data[option] == 'function') {\n\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n\t\t});\n\t};\n\n\t$.fn.datetimepicker.defaults = {\n\t};\n\t$.fn.datetimepicker.Constructor = Datetimepicker;\n\tvar dates = $.fn.datetimepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\tmeridiem: [\"am\", \"pm\"],\n\t\t\tsuffix: [\"st\", \"nd\", \"rd\", \"th\"],\n\t\t\ttoday: \"Today\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'minutes',\n\t\t\t\tnavFnc: 'Hours',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'hours',\n\t\t\t\tnavFnc: 'Date',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\n\t\t},\n\t\tgetDefaultFormat: function (type, field) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii';\n\t\t\t\telse\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii:ss';\n\t\t\t} else if (type == \"php\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'Y-m-d H:i';\n\t\t\t\telse\n\t\t\t\t\treturn 'Y-m-d H:i:s';\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tvalidParts: function (type) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\treturn /hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;\n\t\t\t} else if (type == \"php\") {\n\t\t\t\treturn /[dDjlNwzFmMnStyYaABgGhHis]/g;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tnonpunctuation: /[^ -\\/:-@\\[-`{-~\\t\\n\\rTZ]+/g,\n\t\tparseFormat: function(format, type){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts(type), '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts(type));\n\t\t\tif (!separators || !separators.length || !parts || parts.length == 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, type) {\n\t\t\tif (date instanceof Date) {\n\t\t\t\tvar dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\n                dateUTC.setMilliseconds(0);\n\t\t\t\treturn dateUTC;\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii:ss', type);\n\t\t\t}\n\t\t\tif (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\n\t\t\t\tvar part_re = /([-+]\\d+)([dmwy])/,\n\t\t\t\t\tparts = date.match(/([-+]\\d+)([dmwy])/g),\n\t\t\t\t\tpart, dir;\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (var i=0; i<parts.length; i++) {\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch(part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0);\n\t\t\t}\n\t\t\tvar parts = date && date.match(this.nonpunctuation) || [],\n\t\t\t\tdate = new Date(0, 0, 0, 0, 0, 0, 0),\n\t\t\t\tparsed = {},\n\t\t\t\tsetters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\thh: function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\th:  function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\tHH: function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tH:  function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tii: function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\ti:  function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\tss: function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\ts:  function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\tyyyy: function(d,v){ return d.setUTCFullYear(v); },\n\t\t\t\t\tyy: function(d,v){ return d.setUTCFullYear(2000+v); },\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v<0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() != v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){ return d.setUTCDate(v); },\n\t\t\t\t\tp: function(d,v){ return d.setUTCHours(v==1?d.getUTCHours()+12:d.getUTCHours()); }\n\t\t\t\t},\n\t\t\t\tval, filtered, part;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t    \tsetters_map['P'] = setters_map['p'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n\t\t\tif (parts.length == format.parts.length) {\n\t\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = format.parts[i];\n\t\t\t\t\tif (isNaN(val)) {\n\t\t\t\t\t\tswitch(part) {\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t    case 'p':\n\t\t\t\t\t\t    case 'P':\n\t\t\t\t\t\t        val = $.inArray(parts[i].toLowerCase(), dates[language].meridiem);\n\t\t\t\t\t\t        break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tfor (var i=0, s; i<setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s]))\n\t\t\t\t\t\tsetters_map[s](date, parsed[s])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language, type){\n\t\t\tif (date == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar val;\n\t\t\tif (type == 'standard') {\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tyyyy: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\t// day\n\t\t\t\t\td: date.getUTCDate(),\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tp: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\th: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n                val.H  = (val.h%12==0? 12 : val.h%12);\n                val.HH = (val.H < 10 ? '0' : '') + val.H;\n                val.P  = val.p.toUpperCase();\n\t\t\t\tval.hh = (val.h < 10 ? '0' : '') + val.h;\n\t\t\t\tval.ii = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.ss = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\t} else if (type == 'php') {\n\t\t\t\t// php format\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\ty: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tY: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tF: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tn: date.getUTCMonth() + 1,\n\t\t\t\t\tt: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()),\n\t\t\t\t\t// day\n\t\t\t\t\tj: date.getUTCDate(),\n\t\t\t\t\tl: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tw: date.getUTCDay(), // 0 -> 6\n\t\t\t\t\tN: (date.getUTCDay()==0?7:date.getUTCDay()),       // 1 -> 7\n\t\t\t\t\tS: (date.getUTCDate()%10<=dates[language].suffix.length?dates[language].suffix[date.getUTCDate()%10-1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\ta: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\tg: (date.getUTCHours()%12==0?12:date.getUTCHours()%12),\n\t\t\t\t\tG: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n\t\t\t\tval.m = (val.n < 10 ? '0' : '') + val.n;\n\t\t\t\tval.d = (val.j < 10 ? '0' : '') + val.j;\n\t\t\t\tval.A = val.a.toString().toUpperCase();\n\t\t\t\tval.h = (val.g < 10 ? '0' : '') + val.g;\n\t\t\t\tval.H = (val.G < 10 ? '0' : '') + val.G;\n\t\t\t\tval.i = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.s = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t\tvar date = [],\n\t\t\t\tseps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift())\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\tconvertViewMode: function(viewMode){\n\t\t\tswitch (viewMode) {\n\t\t\t\tcase 4:\n\t\t\t\tcase 'decade':\n\t\t\t\t\tviewMode = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 'year':\n\t\t\t\t\tviewMode = 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'month':\n\t\t\t\t\tviewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'day':\n\t\t\t\t\tviewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\tcase 'hour':\n\t\t\t\t\tviewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn viewMode;\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\"><i class=\"icon-arrow-left\"/></th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\"><i class=\"icon-arrow-right\"/></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr></tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datetimepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-minutes\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-hours\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datetimepicker.DPGlobal = DPGlobal;\n\n}( window.jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js",
    "content": "/**\n * Bulgarian translation for bootstrap-datetimepicker\n * Apostol Apostolov <apostol.s.apostolov@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['bg'] = {\n\t\tdays: [\"Неделя\", \"Понеделник\", \"Вторник\", \"Сряда\", \"Четвъртък\", \"Петък\", \"Събота\", \"Неделя\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Вто\", \"Сря\", \"Чет\", \"Пет\", \"Съб\", \"Нед\"],\n\t\tdaysMin: [\"Н\", \"П\", \"В\", \"С\", \"Ч\", \"П\", \"С\", \"Н\"],\n\t\tmonths: [\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"],\n\t\tmonthsShort: [\"Ян\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Юни\", \"Юли\", \"Авг\", \"Сеп\", \"Окт\", \"Ное\", \"Дек\"],\n\t\ttoday: \"днес\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js",
    "content": "/**\n * Catalan translation for bootstrap-datetimepicker\n * J. Garcia <jogaco.en@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ca'] = {\n\t\tdays: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\", \"Diumenge\"],\n\t\tdaysShort: [\"Diu\",  \"Dil\", \"Dmt\", \"Dmc\", \"Dij\", \"Div\", \"Dis\", \"Diu\"],\n\t\tdaysMin: [\"dg\", \"dl\", \"dt\", \"dc\", \"dj\", \"dv\", \"ds\", \"dg\"],\n\t\tmonths: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n\t\ttoday: \"Avui\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js",
    "content": "/**\n * Czech translation for bootstrap-datetimepicker\n * Matěj Koubík <matej@koubik.name>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['cs'] = {\n\t\tdays: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\", \"Neděle\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Úte\", \"Stř\", \"Čtv\", \"Pát\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\", \"Ne\"],\n\t\tmonths: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tmonthsShort: [\"Led\", \"Úno\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čnc\", \"Srp\", \"Zář\", \"Říj\", \"Lis\", \"Pro\"],\n\t\ttoday: \"Dnes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js",
    "content": "/**\n * Danish translation for bootstrap-datetimepicker\n * Christian Pedersen <http://github.com/chripede>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['da'] = {\n\t\tdays: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\", \"Søndag\"],\n\t\tdaysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\", \"Søn\"],\n\t\tdaysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js",
    "content": "/**\n * German translation for bootstrap-datetimepicker\n * Sam Zurcher <sam@orelias.ch>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['de'] = {\n\t\tdays: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\", \"Sonntag\"],\n\t\tdaysShort: [\"Son\", \"Mon\", \"Die\", \"Mit\", \"Don\", \"Fre\", \"Sam\", \"Son\"],\n\t\tdaysMin: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Heute\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js",
    "content": "/**\n* Greek translation for bootstrap-datetimepicker\n*/\n;(function($){\n  $.fn.datetimepicker.dates['el'] = {\n\t    days: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\", \"Κυριακή\"],\n\t    daysShort: [\"Κυρ\", \"Δευ\", \"Τρι\", \"Τετ\", \"Πεμ\", \"Παρ\", \"Σαβ\", \"Κυρ\"],\n\t    daysMin: [\"Κυ\", \"Δε\", \"Τρ\", \"Τε\", \"Πε\", \"Πα\", \"Σα\", \"Κυ\"],\n\t    months: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάιος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n\t    monthsShort: [\"Ιαν\", \"Φεβ\", \"Μαρ\", \"Απρ\", \"Μάι\", \"Ιουν\", \"Ιουλ\", \"Αυγ\", \"Σεπ\", \"Οκτ\", \"Νοε\", \"Δεκ\"],\n\t    today: \"Σήμερα\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n  };\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js",
    "content": "/**\n * Spanish translation for bootstrap-datetimepicker\n * Bruno Bonamin <bruno.bonamin@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['es'] = {\n\t\tdays: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tmonthsShort: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Hoy\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js",
    "content": "/**\n * Finnish translation for bootstrap-datetimepicker\n * Jaakko Salonen <https://github.com/jsalonen>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['fi'] = {\n\t\tdays: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\", \"sunnuntai\"],\n\t\tdaysShort: [\"sun\", \"maa\", \"tii\", \"kes\", \"tor\", \"per\", \"lau\", \"sun\"],\n\t\tdaysMin: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\", \"su\"],\n\t\tmonths: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n\t\tmonthsShort: [\"tam\", \"hel\", \"maa\", \"huh\", \"tou\", \"kes\", \"hei\", \"elo\", \"syy\", \"lok\", \"mar\", \"jou\"],\n\t\ttoday: \"tänään\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js",
    "content": "/**\n * French translation for bootstrap-datetimepicker\n * Nico Mollet <nico.mollet@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['fr'] = {\n\t\tdays: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\", \"Dimanche\"],\n\t\tdaysShort: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\", \"Dim\"],\n\t\tdaysMin: [\"D\", \"L\", \"Ma\", \"Me\", \"J\", \"V\", \"S\", \"D\"],\n\t\tmonths: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Avr\", \"Mai\", \"Jui\", \"Jul\", \"Aou\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Aujourd'hui\",\n\t\tsuffix: [],\n\t\tmeridiem: [\"am\", \"pm\"],\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js",
    "content": "/**\n * Hebrew translation for bootstrap-datetimepicker\n * Sagie Maoz <sagie@maoz.info>\n */\n;(function($){\n  $.fn.datetimepicker.dates['he'] = {\n      days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\", \"ראשון\"],\n      daysShort: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      daysMin: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n      monthsShort: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\n      today: \"היום\",\n\t  suffix: [],\n\t  meridiem: [],\n      rtl: true\n  };\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js",
    "content": "/**\n * Croatian localisation\n */\n;(function($){\n\t$.fn.datetimepicker.dates['hr'] = {\n\t\tdays: [\"Nedjelja\", \"Ponedjelja\", \"Utorak\", \"Srijeda\", \"Četrtak\", \"Petak\", \"Subota\", \"Nedjelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Srr\", \"Čet\", \"Pet\", \"Sub\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"Sr\", \"Če\", \"Pe\", \"Su\", \"Ne\"],\n\t\tmonths: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n\t\tmonthsShort: [\"Sije\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Jul\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\n\t\ttoday: \"Danas\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js",
    "content": "/**\n * Hungarian translation for bootstrap-datetimepicker\n * darevish <http://github.com/darevish>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['hu'] = {\n\t\tdays: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\", \"Vasárnap\"],\n\t\tdaysShort: [\"Vas\", \"Hét\", \"Ked\", \"Sze\", \"Csü\", \"Pén\", \"Szo\", \"Vas\"],\n\t\tdaysMin: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\", \"V\"],\n\t\tmonths: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sze\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Ma\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js",
    "content": "/**\n * Bahasa translation for bootstrap-datetimepicker\n * Azwar Akbar <azwar.akbar@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['id'] = {\n\t\tdays: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\", \"Minggu\"],\n\t\tdaysShort: [\"Mgu\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\", \"Mgu\"],\n\t\tdaysMin: [\"Mg\", \"Sn\", \"Sl\", \"Ra\", \"Ka\", \"Ju\", \"Sa\", \"Mg\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js",
    "content": "/**\n * Icelandic translation for bootstrap-datetimepicker\n * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['is'] = {\n\t\tdays: [\"Sunnudagur\", \"Mánudagur\", \"Þriðjudagur\", \"Miðvikudagur\", \"Fimmtudagur\", \"Föstudagur\", \"Laugardagur\", \"Sunnudagur\"],\n\t\tdaysShort: [\"Sun\", \"Mán\", \"Þri\", \"Mið\", \"Fim\", \"Fös\", \"Lau\", \"Sun\"],\n\t\tdaysMin: [\"Su\", \"Má\", \"Þr\", \"Mi\", \"Fi\", \"Fö\", \"La\", \"Su\"],\n\t\tmonths: [\"Janúar\", \"Febrúar\", \"Mars\", \"Apríl\", \"Maí\", \"Júní\", \"Júlí\", \"Ágúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maí\", \"Jún\", \"Júl\", \"Ágú\", \"Sep\", \"Okt\", \"Nóv\", \"Des\"],\n\t\ttoday: \"Í Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js",
    "content": "/**\n * Italian translation for bootstrap-datetimepicker\n * Enrico Rubboli <rubboli@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['it'] = {\n\t\tdays: [\"Domenica\", \"Lunedi\", \"Martedi\", \"Mercoledi\", \"Giovedi\", \"Venerdi\", \"Sabato\", \"Domenica\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Oggi\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js",
    "content": "/**\n * Japanese translation for bootstrap-datetimepicker\n * Norio Suzuki <https://github.com/suzuki/>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ja'] = {\n\t\tdays: [\"日曜\", \"月曜\", \"火曜\", \"水曜\", \"木曜\", \"金曜\", \"土曜\", \"日曜\"],\n\t\tdaysShort: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"],\n\t\tdaysMin: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"],\n\t\tmonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tmonthsShort: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.kr.js",
    "content": "/**\n * Korean translation for bootstrap-datetimepicker\n * Gu Youn <http://github.com/guyoun>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['kr'] = {\n\t\tdays: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\", \"일요일\"],\n\t\tdaysShort: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\", \"일\"],\n\t\tdaysMin: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\", \"일\"],\n\t\tmonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tmonthsShort: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js",
    "content": "﻿/**\n * Lithuanian translation for bootstrap-datetimepicker\n * Šarūnas Gliebus <ssharunas@yahoo.co.uk>\n */\n\n;(function($){\n    $.fn.datetimepicker.dates['lt'] = {\n        days: [\"Sekmadienis\", \"Pirmadienis\", \"Antradienis\", \"Trečiadienis\", \"Ketvirtadienis\", \"Penktadienis\", \"Šeštadienis\", \"Sekmadienis\"],\n        daysShort: [\"S\", \"Pr\", \"A\", \"T\", \"K\", \"Pn\", \"Š\", \"S\"],\n        daysMin: [\"Sk\", \"Pr\", \"An\", \"Tr\", \"Ke\", \"Pn\", \"Št\", \"Sk\"],\n        months: [\"Sausis\", \"Vasaris\", \"Kovas\", \"Balandis\", \"Gegužė\", \"Birželis\", \"Liepa\", \"Rugpjūtis\", \"Rugsėjis\", \"Spalis\", \"Lapkritis\", \"Gruodis\"],\n        monthsShort: [\"Sau\", \"Vas\", \"Kov\", \"Bal\", \"Geg\", \"Bir\", \"Lie\", \"Rugp\", \"Rugs\", \"Spa\", \"Lap\", \"Gru\"],\n        today: \"Šiandien\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n    };\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js",
    "content": "/**\n * Latvian translation for bootstrap-datetimepicker\n * Artis Avotins <artis@apit.lv>\n */\n\n;(function($){\n    $.fn.datetimepicker.dates['lv'] = {\n        days: [\"Svētdiena\", \"Pirmdiena\", \"Otrdiena\", \"Trešdiena\", \"Ceturtdiena\", \"Piektdiena\", \"Sestdiena\", \"Svētdiena\"],\n        daysShort: [\"Sv\", \"P\", \"O\", \"T\", \"C\", \"Pk\", \"S\", \"Sv\"],\n        daysMin: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ce\", \"Pk\", \"St\", \"Sv\"],\n        months: [\"Janvāris\", \"Februāris\", \"Marts\", \"Aprīlis\", \"Maijs\", \"Jūnijs\", \"Jūlijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jūn\", \"Jūl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec.\"],\n        today: \"Šodien\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n    };\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js",
    "content": "/**\n * Malay translation for bootstrap-datetimepicker\n * Ateman Faiz <noorulfaiz@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ms'] = {\n\t\tdays: [\"Ahad\", \"Isnin\", \"Selasa\", \"Rabu\", \"Khamis\", \"Jumaat\", \"Sabtu\", \"Ahad\"],\n\t\tdaysShort: [\"Aha\", \"Isn\", \"Sel\", \"Rab\", \"Kha\", \"Jum\", \"Sab\", \"Aha\"],\n\t\tdaysMin: [\"Ah\", \"Is\", \"Se\", \"Ra\", \"Kh\", \"Ju\", \"Sa\", \"Ah\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Mac\", \"April\", \"Mei\", \"Jun\", \"Julai\", \"Ogos\", \"September\", \"Oktober\", \"November\", \"Disember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ogo\", \"Sep\", \"Okt\", \"Nov\", \"Dis\"],\n\t\ttoday: \"Hari Ini\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js",
    "content": "/**\n * Norwegian (bokmål) translation for bootstrap-datetimepicker\n * Fredrik Sundmyhr <http://github.com/fsundmyhr>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['nb'] = {\n\t\tdays: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\", \"Søndag\"],\n\t\tdaysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\", \"Søn\"],\n\t\tdaysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js",
    "content": "/**\n * Dutch translation for bootstrap-datetimepicker\n * Reinier Goltstein <mrgoltstein@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['nl'] = {\n\t\tdays: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\", \"Zondag\"],\n\t\tdaysShort: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\", \"Zo\"],\n\t\tdaysMin: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\", \"Zo\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Vandaag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js",
    "content": "/**\n * Polish translation for bootstrap-datetimepicker\n * Robert <rtpm@gazeta.pl>\n */\n;(function($){\n$.fn.datetimepicker.dates['pl'] = {\n        days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\", \"Niedziela\"],\n        daysShort: [\"Nie\", \"Pn\", \"Wt\", \"Śr\", \"Czw\", \"Pt\", \"So\", \"Nie\"],\n        daysMin: [\"N\", \"Pn\", \"Wt\", \"Śr\", \"Cz\", \"Pt\", \"So\", \"N\"],\n        months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n        monthsShort: [\"Sty\", \"Lu\", \"Mar\", \"Kw\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Pa\", \"Lis\", \"Gru\"],\n        today: \"Dzisiaj\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js",
    "content": "/**\n * Brazilian translation for bootstrap-datetimepicker\n * Cauan Cabral <cauan@radig.com.br>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['pt-BR'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Hoje\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js",
    "content": "/**\n * Portuguese translation for bootstrap-datetimepicker\n * Original code: Cauan Cabral <cauan@radig.com.br>\n * Tiago Melo <tiago.blackcode@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['pt'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js",
    "content": "/**\n * Romanian translation for bootstrap-datetimepicker\n * Cristian Vasile <cristi.mie@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ro'] = {\n\t\tdays: [\"Duminică\", \"Luni\", \"Marţi\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sâmbătă\", \"Duminică\"],\n\t\tdaysShort: [\"Dum\", \"Lun\", \"Mar\", \"Mie\", \"Joi\", \"Vin\", \"Sâm\", \"Dum\"],\n\t\tdaysMin: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sâ\", \"Du\"],\n\t\tmonths: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n\t\tmonthsShort: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Astăzi\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js",
    "content": "/**\n * Serbian latin translation for bootstrap-datetimepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['rs'] = {\n\t\tdays: [\"Nedelja\",\"Ponedeljak\", \"Utorak\", \"Sreda\", \"Četvrtak\", \"Petak\", \"Subota\", \"Nedelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Čet\", \"Pet\", \"Sub\", \"Ned\"],\n\t\tdaysMin: [\"N\", \"Po\", \"U\", \"Sr\", \"Č\", \"Pe\", \"Su\", \"N\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js",
    "content": "/**\n * Serbian cyrillic translation for bootstrap-datetimepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['rs'] = {\n\t\tdays: [\"Недеља\",\"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\", \"Недеља\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Уто\", \"Сре\", \"Чет\", \"Пет\", \"Суб\", \"Нед\"],\n\t\tdaysMin: [\"Н\", \"По\", \"У\", \"Ср\", \"Ч\", \"Пе\", \"Су\", \"Н\"],\n\t\tmonths: [\"Јануар\", \"Фебруар\", \"Март\", \"Април\", \"Мај\", \"Јун\", \"Јул\", \"Август\", \"Септембар\", \"Октобар\", \"Новембар\", \"Децембар\"],\n\t\tmonthsShort: [\"Јан\", \"Феб\", \"Мар\", \"Апр\", \"Мај\", \"Јун\", \"Јул\", \"Авг\", \"Сеп\", \"Окт\", \"Нов\", \"Дец\"],\n\t\ttoday: \"Данас\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js",
    "content": "/**\n * Russian translation for bootstrap-datetimepicker\n * Victor Taranenko <darwin@snowdale.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ru'] = {\n\t\tdays: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\", \"Воскресенье\"],\n\t\tdaysShort: [\"Вск\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\", \"Вск\"],\n\t\tdaysMin: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"],\n\t\tmonths: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\tmonthsShort: [\"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\ttoday: \"Сегодня\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js",
    "content": "/**\n * Slovak translation for bootstrap-datetimepicker\n * Marek Lichtner <marek@licht.sk>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates[\"sk\"] = {\n\t\tdays: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\", \"Nedeľa\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Str\", \"Štv\", \"Pia\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pia\", \"So\", \"Ne\"],\n\t\tmonths: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Dnes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sl.js",
    "content": "/**\n * Slovene translation for bootstrap-datetimepicker\n * Gregor Rudolf <gregor.rudolf@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['sl'] = {\n\t\tdays: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\", \"Nedelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"To\", \"Sr\", \"Če\", \"Pe\", \"So\", \"Ne\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sv.js",
    "content": "/**\n * Swedish translation for bootstrap-datetimepicker\n * Patrik Ragnarsson <patrik@starkast.net>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['sv'] = {\n\t\tdays: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\", \"Söndag\"],\n\t\tdaysShort: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\", \"Sön\"],\n\t\tdaysMin: [\"Sö\", \"Må\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lö\", \"Sö\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sw.js",
    "content": "/**\n * Swahili translation for bootstrap-datetimepicker\n * Edwin Mugendi <https://github.com/edwinmugendi>\n * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku\n */\n;(function($){\n    $.fn.datetimepicker.dates['sw'] = {\n        days: [\"Jumapili\", \"Jumatatu\", \"Jumanne\", \"Jumatano\", \"Alhamisi\", \"Ijumaa\", \"Jumamosi\", \"Jumapili\"],\n        daysShort: [\"J2\", \"J3\", \"J4\", \"J5\", \"Alh\", \"Ij\", \"J1\", \"J2\"],\n        daysMin: [\"2\", \"3\", \"4\", \"5\", \"A\", \"I\", \"1\", \"2\"],\n        months: [\"Januari\", \"Februari\", \"Machi\", \"Aprili\", \"Mei\", \"Juni\", \"Julai\", \"Agosti\", \"Septemba\", \"Oktoba\", \"Novemba\", \"Desemba\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mac\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n        today: \"Leo\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n    };\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.th.js",
    "content": "/**\n * Thai translation for bootstrap-datetimepicker\n * Suchau Jiraprapot <seroz24@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['th'] = {\n\t\tdays: [\"อาทิตย์\", \"จันทร์\", \"อังคาร\", \"พุธ\", \"พฤหัส\", \"ศุกร์\", \"เสาร์\", \"อาทิตย์\"],\n\t\tdaysShort: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tdaysMin: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tmonths: [\"มกราคม\", \"กุมภาพันธ์\", \"มีนาคม\", \"เมษายน\", \"พฤษภาคม\", \"มิถุนายน\", \"กรกฎาคม\", \"สิงหาคม\", \"กันยายน\", \"ตุลาคม\", \"พฤศจิกายน\", \"ธันวาคม\"],\n\t\tmonthsShort: [\"ม.ค.\", \"ก.พ.\", \"มี.ค.\", \"เม.ย.\", \"พ.ค.\", \"มิ.ย.\", \"ก.ค.\", \"ส.ค.\", \"ก.ย.\", \"ต.ค.\", \"พ.ย.\", \"ธ.ค.\"],\n\t\ttoday: \"วันนี้\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.tr.js",
    "content": "/**\n * Turkish translation for bootstrap-datetimepicker\n * Serkan Algur <kaisercrazy_2@hotmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['tr'] = {\n\t\tdays: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\", \"Pazar\"],\n\t\tdaysShort: [\"Pz\", \"Pzt\", \"Sal\", \"Çrş\", \"Prş\", \"Cu\", \"Cts\", \"Pz\"],\n\t\tdaysMin: [\"Pz\", \"Pzt\", \"Sa\", \"Çr\", \"Pr\", \"Cu\", \"Ct\", \"Pz\"],\n\t\tmonths: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n\t\tmonthsShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\n\t\ttoday: \"Bugün\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.uk.js",
    "content": "/**\n * Ukrainian translation for bootstrap-datetimepicker\n * Andrey Vityuk <andrey [dot] vityuk [at] gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['uk'] = {\n\t\tdays: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\", \"Неділя\"],\n\t\tdaysShort: [\"Нед\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\", \"Нед\"],\n\t\tdaysMin: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Нд\"],\n\t\tmonths: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\n\t\tmonthsShort: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\n\t\ttoday: \"Сьогодні\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js",
    "content": "/**\n * Simplified Chinese translation for bootstrap-datetimepicker\n * Yuan Cheung <advanimal@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-CN'] = {\n\t\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\ttoday: \"今日\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-TW.js",
    "content": "/**\n * Traditional Chinese translation for bootstrap-datetimepicker\n * Rung-Sheng Jang <daniel@i-trend.co.cc>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-TW'] = {\n\t\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.bowerrc",
    "content": "{\n  \"directory\" : \"spec/js/libs/\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.gitignore",
    "content": "*.swp\n_site\nnode_modules\n_SpecRunner.html\nspec/js/libs\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.travis.yml",
    "content": "language: node_js\nnode_js:\n  - \"0.8\"\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/LICENSE",
    "content": "The MIT license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/README.md",
    "content": "Timepicker for Twitter Bootstrap 2.x [![Build Status](https://secure.travis-ci.org/jdewit/bootstrap-timepicker.png)](http://travis-ci.org/jdewit/bootstrap-timepicker)\n------------------------------------\n\nA simple timepicker component for Twitter Bootstrap.\n\nDemos & Documentation\n=====================\n\nView <a href=\"http://jdewit.github.com/bootstrap-timepicker\">demos & documentation</a>.\n\nSupport\n=======\n\nIf you make money using this timepicker, please consider \nsupporting its development.\n\n<a href=\"http://www.pledgie.com/campaigns/19125\"><img alt=\"Click here to support bootstrap-timepicker!\" src=\"http://www.pledgie.com/campaigns/19125.png?skin_name=chrome\" border=\"0\" target=\"_blank\"/></a> <a class=\"FlattrButton\" style=\"display:none;\" rev=\"flattr;button:compact;\" href=\"http://jdewit.github.com/bootstrap-timepicker\"></a> <noscript><a href=\"http://flattr.com/thing/1116513/Bootstrap-Timepicker\" target=\"_blank\"> <img src=\"http://api.flattr.com/button/flattr-badge-large.png\" alt=\"Flattr this\" title=\"Flattr this\" border=\"0\" /></a></noscript>\n\nContributing\n============\n\n1. Install <a href=\"www.nodejs.org\">NodeJS</a> and <a href=\"www.npmjs.org\">Node Package Manager</a>.\n\n2. Install packages\n\n``` bash\n    npm install\n```\n\n3. Use <a href=\"https://github.com/twitter/bower\">Bower</a> to get the dev dependencies.\n\n``` bash \n$ bower install\n```\n\n4. Use <a href=\"www.gruntjs.com\">Grunt</a> to run tests, compress assets, etc. \n\n``` bash \n$ grunt test // run jshint and jasmine tests\n$ grunt watch // run jsHint and Jasmine tests whenever a file is changed\n$ grunt compile // minify the js and css files\n```\n\n- Please make it easy on me by covering any new features or issues \nwith <a href=\"http://pivotal.github.com/jasmine\">Jasmine</a> tests.\n- If your changes need documentation, please take the time to update the docs.\n\nAcknowledgements\n================\n\nThanks to everyone who have given feedback and submitted pull requests. A \nlist of all the contributors can be found <a href=\"https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\">here</a>.\n\nSpecial thanks to @eternicode and his <a href=\"https://github.com/eternicode/bootstrap-datepicker\">Twitter Datepicker</a> for inspiration.    \n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.css",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n.bootstrap-timepicker {\n  position: relative;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu {\n  left: auto;\n  right: 0;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before {\n  left: auto;\n  right: 12px;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after {\n  left: auto;\n  right: 13px;\n}\n.bootstrap-timepicker .add-on {\n  cursor: pointer;\n}\n.bootstrap-timepicker .add-on i {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n}\n.bootstrap-timepicker-widget.dropdown-menu {\n  padding: 2px 3px 2px 2px;\n}\n.bootstrap-timepicker-widget.dropdown-menu.open {\n  display: inline-block;\n}\n.bootstrap-timepicker-widget.dropdown-menu:before {\n  border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  content: \"\";\n  display: inline-block;\n  left: 9px;\n  position: absolute;\n  top: -7px;\n}\n.bootstrap-timepicker-widget.dropdown-menu:after {\n  border-bottom: 6px solid #FFFFFF;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  content: \"\";\n  display: inline-block;\n  left: 10px;\n  position: absolute;\n  top: -6px;\n}\n.bootstrap-timepicker-widget a.btn,\n.bootstrap-timepicker-widget input {\n  border-radius: 4px;\n}\n.bootstrap-timepicker-widget table {\n  width: 100%;\n  margin: 0;\n}\n.bootstrap-timepicker-widget table td {\n  text-align: center;\n  height: 30px;\n  margin: 0;\n  padding: 2px;\n}\n.bootstrap-timepicker-widget table td:not(.separator) {\n  min-width: 30px;\n}\n.bootstrap-timepicker-widget table td span {\n  width: 100%;\n}\n.bootstrap-timepicker-widget table td a {\n  border: 1px transparent solid;\n  width: 100%;\n  display: inline-block;\n  margin: 0;\n  padding: 8px 0;\n  outline: 0;\n  color: #333;\n}\n.bootstrap-timepicker-widget table td a:hover {\n  text-decoration: none;\n  background-color: #eee;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border-color: #ddd;\n}\n.bootstrap-timepicker-widget table td a i {\n  margin-top: 2px;\n}\n.bootstrap-timepicker-widget table td input {\n  width: 25px;\n  margin: 0;\n  text-align: center;\n}\n.bootstrap-timepicker-widget .modal-content {\n  padding: 4px;\n}\n@media (min-width: 767px) {\n  .bootstrap-timepicker-widget.modal {\n    width: 200px;\n    margin-left: -100px;\n  }\n}\n@media (max-width: 767px) {\n  .bootstrap-timepicker {\n    width: 100%;\n  }\n  .bootstrap-timepicker .dropdown-menu {\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.js",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n(function($, window, document, undefined) {\n  'use strict';\n\n  // TIMEPICKER PUBLIC CLASS DEFINITION\n  var Timepicker = function(element, options) {\n    this.widget = '';\n    this.$element = $(element);\n    this.defaultTime = options.defaultTime;\n    this.disableFocus = options.disableFocus;\n    this.isOpen = options.isOpen;\n    this.minuteStep = options.minuteStep;\n    this.modalBackdrop = options.modalBackdrop;\n    this.secondStep = options.secondStep;\n    this.showInputs = options.showInputs;\n    this.showMeridian = options.showMeridian;\n    this.showSeconds = options.showSeconds;\n    this.template = options.template;\n    this.appendWidgetTo = options.appendWidgetTo;\n\n    this._init();\n  };\n\n  Timepicker.prototype = {\n\n    constructor: Timepicker,\n\n    _init: function() {\n      var self = this;\n\n      if (this.$element.parent().hasClass('input-append') || this.$element.parent().hasClass('input-prepend')) {\n        this.$element.parent('.input-append, .input-prepend').find('.add-on').on({\n          'click.timepicker': $.proxy(this.showWidget, this)\n        });\n        this.$element.on({\n          'focus.timepicker': $.proxy(this.highlightUnit, this),\n          'click.timepicker': $.proxy(this.highlightUnit, this),\n          'keydown.timepicker': $.proxy(this.elementKeydown, this),\n          'blur.timepicker': $.proxy(this.blurElement, this)\n        });\n      } else {\n        if (this.template) {\n          this.$element.on({\n            'focus.timepicker': $.proxy(this.showWidget, this),\n            'click.timepicker': $.proxy(this.showWidget, this),\n            'blur.timepicker': $.proxy(this.blurElement, this)\n          });\n        } else {\n          this.$element.on({\n            'focus.timepicker': $.proxy(this.highlightUnit, this),\n            'click.timepicker': $.proxy(this.highlightUnit, this),\n            'keydown.timepicker': $.proxy(this.elementKeydown, this),\n            'blur.timepicker': $.proxy(this.blurElement, this)\n          });\n        }\n      }\n\n      if (this.template !== false) {\n        this.$widget = $(this.getTemplate()).prependTo(this.$element.parents(this.appendWidgetTo)).on('click', $.proxy(this.widgetClick, this));\n      } else {\n        this.$widget = false;\n      }\n\n      if (this.showInputs && this.$widget !== false) {\n        this.$widget.find('input').each(function() {\n          $(this).on({\n            'click.timepicker': function() { $(this).select(); },\n            'keydown.timepicker': $.proxy(self.widgetKeydown, self)\n          });\n        });\n      }\n\n      this.setDefaultTime(this.defaultTime);\n    },\n\n    blurElement: function() {\n      this.highlightedUnit = undefined;\n      this.updateFromElementVal();\n    },\n\n    decrementHour: function() {\n      if (this.showMeridian) {\n        if (this.hour === 1) {\n          this.hour = 12;\n        } else if (this.hour === 12) {\n          this.hour--;\n\n          return this.toggleMeridian();\n        } else if (this.hour === 0) {\n          this.hour = 11;\n\n          return this.toggleMeridian();\n        } else {\n          this.hour--;\n        }\n      } else {\n        if (this.hour === 0) {\n          this.hour = 23;\n        } else {\n          this.hour--;\n        }\n      }\n      this.update();\n    },\n\n    decrementMinute: function(step) {\n      var newVal;\n\n      if (step) {\n        newVal = this.minute - step;\n      } else {\n        newVal = this.minute - this.minuteStep;\n      }\n\n      if (newVal < 0) {\n        this.decrementHour();\n        this.minute = newVal + 60;\n      } else {\n        this.minute = newVal;\n      }\n      this.update();\n    },\n\n    decrementSecond: function() {\n      var newVal = this.second - this.secondStep;\n\n      if (newVal < 0) {\n        this.decrementMinute(true);\n        this.second = newVal + 60;\n      } else {\n        this.second = newVal;\n      }\n      this.update();\n    },\n\n    elementKeydown: function(e) {\n      switch (e.keyCode) {\n      case 9: //tab\n        this.updateFromElementVal();\n\n        switch (this.highlightedUnit) {\n        case 'hour':\n          e.preventDefault();\n          this.highlightNextUnit();\n          break;\n        case 'minute':\n          if (this.showMeridian || this.showSeconds) {\n            e.preventDefault();\n            this.highlightNextUnit();\n          }\n          break;\n        case 'second':\n          if (this.showMeridian) {\n            e.preventDefault();\n            this.highlightNextUnit();\n          }\n          break;\n        }\n        break;\n      case 27: // escape\n        this.updateFromElementVal();\n        break;\n      case 37: // left arrow\n        e.preventDefault();\n        this.highlightPrevUnit();\n        this.updateFromElementVal();\n        break;\n      case 38: // up arrow\n        e.preventDefault();\n        switch (this.highlightedUnit) {\n        case 'hour':\n          this.incrementHour();\n          this.highlightHour();\n          break;\n        case 'minute':\n          this.incrementMinute();\n          this.highlightMinute();\n          break;\n        case 'second':\n          this.incrementSecond();\n          this.highlightSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          this.highlightMeridian();\n          break;\n        }\n        break;\n      case 39: // right arrow\n        e.preventDefault();\n        this.updateFromElementVal();\n        this.highlightNextUnit();\n        break;\n      case 40: // down arrow\n        e.preventDefault();\n        switch (this.highlightedUnit) {\n        case 'hour':\n          this.decrementHour();\n          this.highlightHour();\n          break;\n        case 'minute':\n          this.decrementMinute();\n          this.highlightMinute();\n          break;\n        case 'second':\n          this.decrementSecond();\n          this.highlightSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          this.highlightMeridian();\n          break;\n        }\n        break;\n      }\n    },\n\n    formatTime: function(hour, minute, second, meridian) {\n      hour = hour < 10 ? '0' + hour : hour;\n      minute = minute < 10 ? '0' + minute : minute;\n      second = second < 10 ? '0' + second : second;\n\n      return hour + ':' + minute + (this.showSeconds ? ':' + second : '') + (this.showMeridian ? ' ' + meridian : '');\n    },\n\n    getCursorPosition: function() {\n      var input = this.$element.get(0);\n\n      if ('selectionStart' in input) {// Standard-compliant browsers\n\n        return input.selectionStart;\n      } else if (document.selection) {// IE fix\n        input.focus();\n        var sel = document.selection.createRange(),\n          selLen = document.selection.createRange().text.length;\n\n        sel.moveStart('character', - input.value.length);\n\n        return sel.text.length - selLen;\n      }\n    },\n\n    getTemplate: function() {\n      var template,\n        hourTemplate,\n        minuteTemplate,\n        secondTemplate,\n        meridianTemplate,\n        templateContent;\n\n      if (this.showInputs) {\n        hourTemplate = '<input type=\"text\" name=\"hour\" class=\"bootstrap-timepicker-hour\" maxlength=\"2\"/>';\n        minuteTemplate = '<input type=\"text\" name=\"minute\" class=\"bootstrap-timepicker-minute\" maxlength=\"2\"/>';\n        secondTemplate = '<input type=\"text\" name=\"second\" class=\"bootstrap-timepicker-second\" maxlength=\"2\"/>';\n        meridianTemplate = '<input type=\"text\" name=\"meridian\" class=\"bootstrap-timepicker-meridian\" maxlength=\"2\"/>';\n      } else {\n        hourTemplate = '<span class=\"bootstrap-timepicker-hour\"></span>';\n        minuteTemplate = '<span class=\"bootstrap-timepicker-minute\"></span>';\n        secondTemplate = '<span class=\"bootstrap-timepicker-second\"></span>';\n        meridianTemplate = '<span class=\"bootstrap-timepicker-meridian\"></span>';\n      }\n\n      templateContent = '<table>'+\n         '<tr>'+\n           '<td><a href=\"#\" data-action=\"incrementHour\"><i class=\"icon-chevron-up\"></i></a></td>'+\n           '<td class=\"separator\">&nbsp;</td>'+\n           '<td><a href=\"#\" data-action=\"incrementMinute\"><i class=\"icon-chevron-up\"></i></a></td>'+\n           (this.showSeconds ?\n             '<td class=\"separator\">&nbsp;</td>'+\n             '<td><a href=\"#\" data-action=\"incrementSecond\"><i class=\"icon-chevron-up\"></i></a></td>'\n           : '') +\n           (this.showMeridian ?\n             '<td class=\"separator\">&nbsp;</td>'+\n             '<td class=\"meridian-column\"><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-up\"></i></a></td>'\n           : '') +\n         '</tr>'+\n         '<tr>'+\n           '<td>'+ hourTemplate +'</td> '+\n           '<td class=\"separator\">:</td>'+\n           '<td>'+ minuteTemplate +'</td> '+\n           (this.showSeconds ?\n            '<td class=\"separator\">:</td>'+\n            '<td>'+ secondTemplate +'</td>'\n           : '') +\n           (this.showMeridian ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td>'+ meridianTemplate +'</td>'\n           : '') +\n         '</tr>'+\n         '<tr>'+\n           '<td><a href=\"#\" data-action=\"decrementHour\"><i class=\"icon-chevron-down\"></i></a></td>'+\n           '<td class=\"separator\"></td>'+\n           '<td><a href=\"#\" data-action=\"decrementMinute\"><i class=\"icon-chevron-down\"></i></a></td>'+\n           (this.showSeconds ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td><a href=\"#\" data-action=\"decrementSecond\"><i class=\"icon-chevron-down\"></i></a></td>'\n           : '') +\n           (this.showMeridian ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-down\"></i></a></td>'\n           : '') +\n         '</tr>'+\n       '</table>';\n\n      switch(this.template) {\n      case 'modal':\n        template = '<div class=\"bootstrap-timepicker-widget modal hide fade in\" data-backdrop=\"'+ (this.modalBackdrop ? 'true' : 'false') +'\">'+\n          '<div class=\"modal-header\">'+\n            '<a href=\"#\" class=\"close\" data-dismiss=\"modal\">×</a>'+\n            '<h3>Pick a Time</h3>'+\n          '</div>'+\n          '<div class=\"modal-content\">'+\n            templateContent +\n          '</div>'+\n          '<div class=\"modal-footer\">'+\n            '<a href=\"#\" class=\"btn btn-primary\" data-dismiss=\"modal\">OK</a>'+\n          '</div>'+\n        '</div>';\n        break;\n      case 'dropdown':\n        template = '<div class=\"bootstrap-timepicker-widget dropdown-menu\">'+ templateContent +'</div>';\n        break;\n      }\n\n      return template;\n    },\n\n    getTime: function() {\n      return this.formatTime(this.hour, this.minute, this.second, this.meridian);\n    },\n\n    hideWidget: function() {\n      if (this.isOpen === false) {\n        return;\n      }\n\n\t\t\tif (this.showInputs) {\n\t\t\t\tthis.updateFromWidgetInputs();\n\t\t\t}\n\n      this.$element.trigger({\n        'type': 'hide.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      if (this.template === 'modal' && this.$widget.modal) {\n        this.$widget.modal('hide');\n      } else {\n        this.$widget.removeClass('open');\n      }\n\n      $(document).off('mousedown.timepicker');\n\n      this.isOpen = false;\n    },\n\n    highlightUnit: function() {\n      this.position = this.getCursorPosition();\n      if (this.position >= 0 && this.position <= 2) {\n        this.highlightHour();\n      } else if (this.position >= 3 && this.position <= 5) {\n        this.highlightMinute();\n      } else if (this.position >= 6 && this.position <= 8) {\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else {\n          this.highlightMeridian();\n        }\n      } else if (this.position >= 9 && this.position <= 11) {\n        this.highlightMeridian();\n      }\n    },\n\n    highlightNextUnit: function() {\n      switch (this.highlightedUnit) {\n      case 'hour':\n        this.highlightMinute();\n        break;\n      case 'minute':\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else if (this.showMeridian){\n          this.highlightMeridian();\n        } else {\n          this.highlightHour();\n        }\n        break;\n      case 'second':\n        if (this.showMeridian) {\n          this.highlightMeridian();\n        } else {\n          this.highlightHour();\n        }\n        break;\n      case 'meridian':\n        this.highlightHour();\n        break;\n      }\n    },\n\n    highlightPrevUnit: function() {\n      switch (this.highlightedUnit) {\n      case 'hour':\n        this.highlightMeridian();\n        break;\n      case 'minute':\n        this.highlightHour();\n        break;\n      case 'second':\n        this.highlightMinute();\n        break;\n      case 'meridian':\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else {\n          this.highlightMinute();\n        }\n        break;\n      }\n    },\n\n    highlightHour: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'hour';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(0,2);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightMinute: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'minute';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(3,5);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightSecond: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'second';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(6,8);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightMeridian: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'meridian';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tif (this.showSeconds) {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$element.setSelectionRange(9,11);\n\t\t\t\t\t}, 0);\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$element.setSelectionRange(6,8);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n    },\n\n    incrementHour: function() {\n      if (this.showMeridian) {\n        if (this.hour === 11) {\n          this.hour++;\n          return this.toggleMeridian();\n        } else if (this.hour === 12) {\n          this.hour = 0;\n        }\n      }\n      if (this.hour === 23) {\n        this.hour = 0;\n\n        return;\n      }\n      this.hour++;\n      this.update();\n    },\n\n    incrementMinute: function(step) {\n      var newVal;\n\n      if (step) {\n        newVal = this.minute + step;\n      } else {\n        newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep);\n      }\n\n      if (newVal > 59) {\n        this.incrementHour();\n        this.minute = newVal - 60;\n      } else {\n        this.minute = newVal;\n      }\n      this.update();\n    },\n\n    incrementSecond: function() {\n      var newVal = this.second + this.secondStep - (this.second % this.secondStep);\n\n      if (newVal > 59) {\n        this.incrementMinute(true);\n        this.second = newVal - 60;\n      } else {\n        this.second = newVal;\n      }\n      this.update();\n    },\n\n    remove: function() {\n      $('document').off('.timepicker');\n      if (this.$widget) {\n        this.$widget.remove();\n      }\n      delete this.$element.data().timepicker;\n    },\n\n    setDefaultTime: function(defaultTime){\n      if (!this.$element.val()) {\n        if (defaultTime === 'current') {\n          var dTime = new Date(),\n            hours = dTime.getHours(),\n            minutes = Math.floor(dTime.getMinutes() / this.minuteStep) * this.minuteStep,\n            seconds = Math.floor(dTime.getSeconds() / this.secondStep) * this.secondStep,\n            meridian = 'AM';\n\n          if (this.showMeridian) {\n            if (hours === 0) {\n              hours = 12;\n            } else if (hours >= 12) {\n              if (hours > 12) {\n                hours = hours - 12;\n              }\n              meridian = 'PM';\n            } else {\n              meridian = 'AM';\n            }\n          }\n\n          this.hour = hours;\n          this.minute = minutes;\n          this.second = seconds;\n          this.meridian = meridian;\n\n          this.update();\n\n        } else if (defaultTime === false) {\n          this.hour = 0;\n          this.minute = 0;\n          this.second = 0;\n          this.meridian = 'AM';\n        } else {\n          this.setTime(defaultTime);\n        }\n      } else {\n        this.updateFromElementVal();\n      }\n    },\n\n    setTime: function(time) {\n      var arr,\n        timeArray;\n\n      if (this.showMeridian) {\n        arr = time.split(' ');\n        timeArray = arr[0].split(':');\n        this.meridian = arr[1];\n      } else {\n        timeArray = time.split(':');\n      }\n\n      this.hour = parseInt(timeArray[0], 10);\n      this.minute = parseInt(timeArray[1], 10);\n      this.second = parseInt(timeArray[2], 10);\n\n      if (isNaN(this.hour)) {\n        this.hour = 0;\n      }\n      if (isNaN(this.minute)) {\n        this.minute = 0;\n      }\n\n      if (this.showMeridian) {\n        if (this.hour > 12) {\n          this.hour = 12;\n        } else if (this.hour < 1) {\n          this.hour = 12;\n        }\n\n        if (this.meridian === 'am' || this.meridian === 'a') {\n          this.meridian = 'AM';\n        } else if (this.meridian === 'pm' || this.meridian === 'p') {\n          this.meridian = 'PM';\n        }\n\n        if (this.meridian !== 'AM' && this.meridian !== 'PM') {\n          this.meridian = 'AM';\n        }\n      } else {\n        if (this.hour >= 24) {\n          this.hour = 23;\n        } else if (this.hour < 0) {\n          this.hour = 0;\n        }\n      }\n\n      if (this.minute < 0) {\n        this.minute = 0;\n      } else if (this.minute >= 60) {\n        this.minute = 59;\n      }\n\n      if (this.showSeconds) {\n        if (isNaN(this.second)) {\n          this.second = 0;\n        } else if (this.second < 0) {\n          this.second = 0;\n        } else if (this.second >= 60) {\n          this.second = 59;\n        }\n      }\n\n      this.update();\n    },\n\n    showWidget: function() {\n      if (this.isOpen) {\n        return;\n      }\n\n      if (this.$element.is(':disabled')) {\n        return;\n      }\n\n      var self = this;\n      $(document).on('mousedown.timepicker', function (e) {\n        // Clicked outside the timepicker, hide it\n        if ($(e.target).closest('.bootstrap-timepicker-widget').length === 0) {\n          self.hideWidget();\n        }\n      });\n\n      this.$element.trigger({\n        'type': 'show.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      if (this.disableFocus) {\n        this.$element.blur();\n      }\n\n      this.updateFromElementVal();\n\n      if (this.template === 'modal' && this.$widget.modal) {\n        this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this));\n      } else {\n        if (this.isOpen === false) {\n          this.$widget.addClass('open');\n        }\n      }\n\n      this.isOpen = true;\n    },\n\n    toggleMeridian: function() {\n      this.meridian = this.meridian === 'AM' ? 'PM' : 'AM';\n      this.update();\n    },\n\n    update: function() {\n      this.$element.trigger({\n        'type': 'changeTime.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      this.updateElement();\n      this.updateWidget();\n    },\n\n    updateElement: function() {\n      this.$element.val(this.getTime()).change();\n    },\n\n    updateFromElementVal: function() {\n\t\t\tvar val = this.$element.val();\n\n\t\t\tif (val) {\n\t\t\t\tthis.setTime(val);\n\t\t\t}\n    },\n\n    updateWidget: function() {\n      if (this.$widget === false) {\n        return;\n      }\n\n      var hour = this.hour < 10 ? '0' + this.hour : this.hour,\n          minute = this.minute < 10 ? '0' + this.minute : this.minute,\n          second = this.second < 10 ? '0' + this.second : this.second;\n\n      if (this.showInputs) {\n        this.$widget.find('input.bootstrap-timepicker-hour').val(hour);\n        this.$widget.find('input.bootstrap-timepicker-minute').val(minute);\n\n        if (this.showSeconds) {\n          this.$widget.find('input.bootstrap-timepicker-second').val(second);\n        }\n        if (this.showMeridian) {\n          this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian);\n        }\n      } else {\n        this.$widget.find('span.bootstrap-timepicker-hour').text(hour);\n        this.$widget.find('span.bootstrap-timepicker-minute').text(minute);\n\n        if (this.showSeconds) {\n          this.$widget.find('span.bootstrap-timepicker-second').text(second);\n        }\n        if (this.showMeridian) {\n          this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian);\n        }\n      }\n    },\n\n    updateFromWidgetInputs: function() {\n      if (this.$widget === false) {\n        return;\n      }\n      var time = $('input.bootstrap-timepicker-hour', this.$widget).val() + ':' +\n        $('input.bootstrap-timepicker-minute', this.$widget).val() +\n        (this.showSeconds ? ':' + $('input.bootstrap-timepicker-second', this.$widget).val() : '') +\n        (this.showMeridian ? ' ' + $('input.bootstrap-timepicker-meridian', this.$widget).val() : '');\n\n      this.setTime(time);\n    },\n\n    widgetClick: function(e) {\n      e.stopPropagation();\n      e.preventDefault();\n\n      var action = $(e.target).closest('a').data('action');\n      if (action) {\n        this[action]();\n      }\n    },\n\n    widgetKeydown: function(e) {\n      var $input = $(e.target).closest('input'),\n          name = $input.attr('name');\n\n      switch (e.keyCode) {\n      case 9: //tab\n        if (this.showMeridian) {\n          if (name === 'meridian') {\n            return this.hideWidget();\n          }\n        } else {\n          if (this.showSeconds) {\n            if (name === 'second') {\n              return this.hideWidget();\n            }\n          } else {\n            if (name === 'minute') {\n              return this.hideWidget();\n            }\n          }\n        }\n\n        this.updateFromWidgetInputs();\n        break;\n      case 27: // escape\n        this.hideWidget();\n        break;\n      case 38: // up arrow\n        e.preventDefault();\n        switch (name) {\n        case 'hour':\n          this.incrementHour();\n          break;\n        case 'minute':\n          this.incrementMinute();\n          break;\n        case 'second':\n          this.incrementSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          break;\n        }\n        break;\n      case 40: // down arrow\n        e.preventDefault();\n        switch (name) {\n        case 'hour':\n          this.decrementHour();\n          break;\n        case 'minute':\n          this.decrementMinute();\n          break;\n        case 'second':\n          this.decrementSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          break;\n        }\n        break;\n      }\n    }\n  };\n\n\n  //TIMEPICKER PLUGIN DEFINITION\n  $.fn.timepicker = function(option) {\n    var args = Array.apply(null, arguments);\n    args.shift();\n    return this.each(function() {\n      var $this = $(this),\n        data = $this.data('timepicker'),\n        options = typeof option === 'object' && option;\n\n      if (!data) {\n        $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data()))));\n      }\n\n      if (typeof option === 'string') {\n        data[option].apply(data, args);\n      }\n    });\n  };\n\n  $.fn.timepicker.defaults = {\n    defaultTime: 'current',\n    disableFocus: false,\n    isOpen: false,\n    minuteStep: 15,\n    modalBackdrop: false,\n    secondStep: 15,\n    showSeconds: false,\n    showInputs: true,\n    showMeridian: true,\n    template: 'dropdown',\n    appendWidgetTo: '.bootstrap-timepicker'\n  };\n\n  $.fn.timepicker.Constructor = Timepicker;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/less/timepicker.less",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n.bootstrap-timepicker {\n    position: relative;\n\n    &.pull-right {\n        .bootstrap-timepicker-widget {\n            &.dropdown-menu {\n                left: auto;\n                right: 0;\n\n                &:before {\n                    left: auto;\n                    right: 12px;\n                }\n                &:after {\n                    left: auto;\n                    right: 13px;\n                }\n            }\n        }\n    }\n\n    .add-on { \n        cursor: pointer;\n        i {\n           display: inline-block;\n           width: 16px;\n           height: 16px;\n        }\n    }\n}\n.bootstrap-timepicker-widget {\n    &.dropdown-menu {\n        padding: 2px 3px 2px 2px; \n        &.open {\n            display: inline-block;\n        }\n        &:before {\n            border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n            border-left: 7px solid transparent;\n            border-right: 7px solid transparent;\n            content: \"\";\n            display: inline-block;\n            left: 9px;\n            position: absolute;\n            top: -7px;\n        }\n        &:after {\n            border-bottom: 6px solid #FFFFFF;\n            border-left: 6px solid transparent;\n            border-right: 6px solid transparent;\n            content: \"\";\n            display: inline-block;\n            left: 10px;\n            position: absolute;\n            top: -6px;\n        }\n    }\n\n    a.btn, input {\n        border-radius: 4px;\n    }\n\n    table {\n        width: 100%;\n        margin: 0;\n\n        td { \n            text-align: center;\n            height: 30px;\n            margin: 0;\n            padding: 2px;\n\n            &:not(.separator) {\n                min-width: 30px;\n            }\n\n            span {\n                width: 100%;\n            }\n            a {\n                border: 1px transparent solid;\n                width: 100%;\n                display: inline-block;\n                margin: 0;\n                padding: 8px 0;\n                outline: 0;\n                color: #333;\n\n                &:hover {\n                    text-decoration: none;\n                    background-color: #eee;\n                    -webkit-border-radius: 4px;\n                    -moz-border-radius: 4px;\n                    border-radius: 4px;\n                    border-color: #ddd;\n                }\n\n                i {\n                    margin-top: 2px;\n                }\n            }\n            input {\n                width: 25px;\n                margin: 0;\n                text-align: center;\n            }\n        }\n    }\n}\n\n.bootstrap-timepicker-widget .modal-content {\n    padding: 4px;\n}\n\n@media (min-width: 767px) {\n    .bootstrap-timepicker-widget.modal {\n        width: 200px; \n        margin-left: -100px; \n    }\n}\n\n@media (max-width: 767px) {\n    .bootstrap-timepicker {\n        width: 100%;\n\n        .dropdown-menu {\n            width: 100%;\n        }\n    }\n}\n\n\n\n\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/KeyboardEventsSpec.js",
    "content": "describe('Keyboard events feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    tp1,\n    tp2,\n    tp3;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      defaultTime: '23:15:20',\n      showMeridian: false,\n      showSeconds: true,\n      template: false\n    });\n    tp3 = $timepicker3.data('timepicker');\n  });\n\n  afterEach(function () {\n    $input1.data('timepicker').remove();\n    $input2.data('timepicker').remove();\n    $input3.data('timepicker').remove();\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n  });\n\n  it('should be able to control element by the arrow keys', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\n    $input1.trigger('focus');\n\n    if (tp1.highlightedUnit !== 'hour') {\n      tp1.highlightHour();\n    }\n\n    expect(tp1.highlightedUnit).toBe('hour', 'hour should be highlighted by default');\n    // hours\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('12:30 PM', '1');\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '2');\n    expect(tp1.highlightedUnit).toBe('hour', 'hour should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 39 //right\n    });\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted');\n\n    //minutes\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('11:45 AM', '3');\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted 1');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '4');\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted 2');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 39 //right\n    });\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    //meridian\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('11:30 PM', '5');\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '6');\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('minute', 'minutes should be highlighted');\n\n    // minutes\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:15 AM', '7');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('hour', 'hours should be highlighted');\n\n    // hours\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('10:15 AM', '8');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    // meridian\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('10:15 PM', '9');\n  });\n\n  it('should be able to change time via widget inputs in a dropdown', function() {\n    var $hourInput = tp1.$widget.find('input.bootstrap-timepicker-hour'),\n        $minuteInput = tp1.$widget.find('input.bootstrap-timepicker-minute'),\n        $meridianInput = tp1.$widget.find('input.bootstrap-timepicker-meridian'),\n        eventCount = 0,\n        time;\n\n\n    tp1.setTime('9:30 AM');\n    tp1.update();\n    $input1.parents('div').find('.add-on').click();\n\n    $input1.timepicker().on('changeTime.timepicker', function(e) {\n      eventCount++;\n      time = e.time.value;\n    });\n\n    expect(tp1.isOpen).toBe(true);\n\n    $hourInput.trigger('focus');\n    $hourInput.autotype('{{back}}{{back}}11{{tab}}');\n\n    expect(tp1.hour).toBe(11);\n    expect(eventCount).toBe(1, 'incorrect update events thrown');\n    expect(time).toBe('11:30 AM');\n\n    $minuteInput.autotype('{{back}}{{back}}45{{tab}}');\n\n    expect(tp1.minute).toBe(45);\n    expect(eventCount).toBe(2, 'incorrect update events thrown');\n    expect(time).toBe('11:45 AM');\n\n    $meridianInput.autotype('{{back}}{{back}}pm{{tab}}');\n\n    expect(tp1.meridian).toBe('PM');\n    expect(eventCount).toBe(3, 'incorrect update events thrown');\n    expect(time).toBe('11:45 PM');\n  });\n\n  it('should still be empty if input is empty', function() {\n\t\t$input1.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{tab}}');\n\n\t\texpect($input1.val()).toBe('');\n\t});\n  it('should allow time to be changed via widget inputs in a modal', function() {\n    //tp2.setTime('9:30 AM');\n    //tp2.update();\n    //$input2.parents('div').find('.add-on').click();\n\n    //var $hourInput = $('body').find('input.bootstrap-timepicker-hour'),\n        //$minuteInput = $('body').find('input.bootstrap-timepicker-minute'),\n        //$secondInput = $('body').find('input.bootstrap-timepicker-second'),\n        //$meridianInput = $('body').find('input.bootstrap-timepicker-meridian');\n\n    //$hourInput.autotype('{{back}}{{back}}2');\n    //$hourInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:30:00 AM');\n\n\n    //$minuteInput.autotype('{{back}}{{back}}0');\n    //$minuteInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:00 AM');\n\n    //$secondInput.autotype('{{back}}{{back}}30');\n    //$secondInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:30 AM');\n\n    //$meridianInput.autotype('{{back}}{{back}}p');\n    //$meridianInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:30 PM');\n  });\n\n  it('should be 12:00 AM if 00:00 AM is entered', function() {\n    //$input1.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}0:0 AM');\n    //$input1.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp1.getTime()).toBe('12:00 AM');\n  });\n\n  it('should validate input', function() {\n    //var $hourInput = tp1.$widget.find('input.bootstrap-timepicker-hour'),\n        //$minuteInput = tp1.$widget.find('input.bootstrap-timepicker-minute'),\n        //$meridianInput = tp1.$widget.find('input.bootstrap-timepicker-meridian'),\n        //$input3 = tp3.$element;\n\n        //tp1.setTime('11:30 AM');\n        //tp1.update();\n\n        //$hourInput.autotype('{{back}}{{back}}13');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:30 AM');\n\n        //$minuteInput.autotype('{{back}}{{back}}60');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 AM');\n\n        //$meridianInput.autotype('{{back}}{{back}}dk');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 AM');\n\n        //$meridianInput.autotype('{{back}}{{back}}p');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 PM');\n\n        //$input3.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}25:60:60');\n        //tp3.updateFromElementVal();\n        //expect(tp3.getTime()).toBe('23:59:59');\n  });\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/MouseEventsSpec.js",
    "content": "describe('Mouse events feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $input4,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    $timepicker4,\n    tp1,\n    tp2,\n    tp3,\n    tp4;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      defaultTime: '23:15:20',\n      showMeridian: false,\n      showSeconds: true\n    });\n    tp3 = $timepicker3.data('timepicker');\n\n    $input4 = $('#timepicker4');\n    $timepicker4 = $input4.timepicker({\n\t\t\tminuteStep: 5,\n\t\t\tshowInputs: false,\n\t\t\tshowMeridian: true,\n\t\t\ttemplate: 'modal',\n\t\t\tdisableFocus: true\n    });\n    tp4 = $timepicker4.data('timepicker');\n  });\n\n  afterEach(function () {\n    $input1.data('timepicker').remove();\n    $input2.data('timepicker').remove();\n    $input3.data('timepicker').remove();\n    $input4.data('timepicker').remove();\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n    $input4.remove();\n  });\n\n  it('should be shown and trigger show events on input click', function() {\n    var showEvents = 0;\n\n    $input1.on('show.timepicker', function() {\n      showEvents++;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n\n    expect(tp1.isOpen).toBe(true);\n    expect(showEvents).toBe(1);\n  });\n\n  it('should be hidden and trigger hide events on click outside of widget', function() {\n    var hideEvents = 0,\n        time;\n    $input1.val('11:30 AM');\n\n    $input1.on('hide.timepicker', function(e) {\n      hideEvents++;\n\n      time = e.time.value;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n    expect(tp1.isOpen).toBe(true);\n\n    tp1.$widget.find('.bootstrap-timepicker-hour').trigger('mousedown');\n    $('body').trigger('mousedown');\n\n    expect(tp1.isOpen).toBe(false, 'widget is still open');\n    expect(hideEvents).toBe(1, 'hide event was not thrown once');\n    expect(time).toBe('11:30 AM');\n\n  });\n\n  it('should increment hour on button click', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n\n    expect(tp1.getTime()).toBe('12:30 PM');\n\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    expect(tp2.getTime()).toBe('01:00:00 AM');\n  });\n\n  it('should decrement hour on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n\n    expect(tp1.getTime()).toBe('11:30 AM', 'meridian isnt toggling');\n\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    tp2.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n    expect(tp2.getTime()).toBe('01:00:00 AM');\n  });\n\n  it('should increment minute on button click', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\t\ttp4.setTime('11:30 AM');\n\t\ttp4.update();\n\n    tp1.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    expect(tp1.getTime()).toBe('11:45 AM');\n\n    tp2.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('00:30:00 AM');\n\n\t\t$input4.trigger('click');\n    tp4.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    tp4.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n\t\t$input4.closest('modal').find('.btn-primary').trigger('click');\n    expect(tp4.getTime()).toBe('10:35 AM');\n\t\texpect($input4.val()).toBe('10:35 AM');\n  });\n\n  it('should decrement minute on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n    tp4.setTime('11:30 AM');\n    tp4.update();\n\n    tp1.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp1.getTime()).toBe('12:15 PM');\n\n    tp4.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp4.getTime()).toBe('11:25 AM');\n  });\n\n  it('should be 11:30:00 PM if minute is decremented on empty input', function() {\n    tp2.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('11:30:00 PM');\n  });\n\n  it('should increment second on button click', function() {\n    tp2.setTime('11:30:15 AM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"incrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('11:30:30 AM');\n  });\n\n  it('should decrement second on button click', function() {\n    tp2.setTime('12:30:15 PM');\n    tp2.update();\n\n  });\n\n  it('should be 11:30:00 PM if minute is decremented on empty input', function() {\n    tp2.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('11:30:00 PM');\n  });\n\n  it('should increment second on button click', function() {\n    tp2.setTime('11:30:15 AM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"incrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('11:30:30 AM');\n  });\n\n  it('should decrement second on button click', function() {\n    tp2.setTime('12:30:15 PM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"decrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('12:29:45 PM');\n  });\n\n  it('should toggle meridian on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"toggleMeridian\"]').first().trigger('click');\n    expect(tp1.getTime()).toBe('12:30 AM');\n    tp1.$widget.find('a[data-action=\"toggleMeridian\"]').last().trigger('click');\n    expect(tp1.getTime()).toBe('12:30 PM');\n  });\n\n\n  it('should trigger changeTime event if time is changed', function() {\n    var eventCount = 0,\n        time;\n\n    $input1.timepicker().on('changeTime.timepicker', function(e) {\n      eventCount++;\n      time = e.time.value;\n    });\n\n    tp1.setTime('11:30 AM');\n\n    expect(eventCount).toBe(1);\n    expect(time).toBe('11:30 AM');\n\n    tp1.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n\n    expect(eventCount).toBe(2);\n    expect(tp1.getTime()).toBe('12:30 PM');\n    expect(time).toBe('12:30 PM');\n\n    tp1.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n\n    expect(eventCount).toBe(3);\n    expect(tp1.getTime()).toBe('12:45 PM');\n  });\n\n  it('should highlight widget inputs on click', function() {\n      //TODO;\n      //tp1.setTime('11:55 AM');\n      //tp1.update();\n\n      //$input1.parents('.bootstrap-timepicker').find('.add-on').trigger('click');\n      //expect(tp1.isOpen).toBe(true);\n      //expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).toBe('11');\n      //tp1.$widget.find('.bootstrap-timepicker-hour').trigger('click');\n      //var hour1 = window.getSelection().toString();\n////var range = window.getSelection().getRangeAt(0);\n////var hour1 = range.extractContents();\n\n      //expect(hour1).toBe('11', 'hour input not being highlighted');\n\n      //tp1.$widget.find('.bootstrap-timepicker-minute').trigger('click');\n      //var minute1 = window.getSelection().toString();\n      //expect(minute1).toBe('55', 'minute input not being highlighted');\n\n      //tp1.$widget.find('.bootstrap-timepicker-meridian').trigger('click');\n      //var meridian1 = window.getSelection().toString();\n      //expect(meridian1).toBe('AM', 'meridian input not being highlighted');\n  });\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/TimepickerSpec.js",
    "content": "describe('Timepicker feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    tp1,\n    tp2,\n    tp3;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      showMeridian: false,\n      showSeconds: true,\n      defaultTime: '13:25:15'\n    });\n    tp3 = $timepicker3.data('timepicker');\n  });\n\n  afterEach(function () {\n    if ($input1.data('timepicker') !== undefined) {\n      $input1.data('timepicker').remove();\n    }\n    if ($input2.data('timepicker') !== undefined) {\n      $input2.data('timepicker').remove();\n    }\n    if ($input3.data('timepicker') !== undefined) {\n      $input3.data('timepicker').remove();\n    }\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n  });\n\n  it('should be available on the jquery object', function() {\n    expect($.fn.timepicker).toBeDefined();\n  });\n\n  it('should be chainable', function() {\n    expect($timepicker1).toBe($input1);\n  });\n\n  it('should have sensible defaults', function() {\n    expect(tp1.defaultTime).toBeTruthy();\n    expect(tp1.minuteStep).toBe(15);\n    expect(tp1.secondStep).toBe(15);\n    expect(tp1.disableFocus).toBe(false);\n    expect(tp1.showSeconds).toBe(false);\n    expect(tp1.showInputs).toBe(true);\n    expect(tp1.showMeridian).toBe(true);\n    expect(tp1.template).toBe('dropdown');\n    expect(tp1.modalBackdrop).toBe(false);\n    expect(tp1.modalBackdrop).toBe(false);\n    expect(tp1.isOpen).toBe(false);\n  });\n\n  it('should allow user to configure defaults', function() {\n    expect(tp2.template).toBe('modal');\n    expect(tp2.minuteStep).toBe(30);\n  });\n\n  it('should be configurable with data attributes', function() {\n    $('body').append('<div id=\"hi\" class=\"bootstrap-timepicker\"><input id=\"customTimepicker\" data-template=\"modal\" data-minute-step=\"30\" data-modal-backdrop=\"true\" data-show-meridian=\"true\" type=\"text\"/></div');\n\n    var $customInput = $('body').find('#customTimepicker'),\n        tpCustom = $customInput.timepicker().data('timepicker');\n\n    expect($('body').find('#customTimepicker').length).toBe(1);\n    expect(tpCustom.template).toBe('modal');\n    expect(tpCustom.minuteStep).toBe(30, 'data-minute-step not working');\n    expect(tpCustom.modalBackdrop).toBe(true, 'data-modal-backdrop not working');\n    expect(tpCustom.showMeridian).toBe(true, 'data-show-meridian not working');\n\n    tpCustom.remove();\n  });\n\n  it('should have current time by default', function() {\n    var dTime = new Date(),\n      hour = dTime.getHours(),\n      minute = Math.floor(dTime.getMinutes() / tp1.minuteStep) * tp1.minuteStep;\n\n    if (hour > 12) {\n      hour = hour - 12;\n    }\n\n    expect(tp1.hour).toBe(hour);\n    expect(tp1.minute).toBe(minute);\n  });\n\n  it('should not override time with current time if value is already set', function() {\n    $('body').append('<div id=\"timepickerCustom\"><input id=\"timepickerCustomInput\" type=\"text\" value=\"12:15 AM\" /></div>');\n    var $customInput = $('#timepickerCustomInput').timepicker(),\n      tpCustom = $customInput.data('timepicker');\n\n    expect($customInput.val()).toBe('12:15 AM');\n\n    tpCustom.remove();\n    $('#timepickerCustom').remove();\n  });\n\n  it('should have no value if defaultTime is set to false', function() {\n    expect($input2.val()).toBe('');\n  });\n\n  it('should be able to set default time with config option', function() {\n    expect(tp3.getTime()).toBe('13:25:15');\n  });\n\n  it('should update the element and widget with the setTime method', function() {\n    tp2.setTime('09:15:20 AM');\n\n    expect(tp2.hour).toBe(9);\n    expect(tp2.minute).toBe(15);\n    expect(tp2.second).toBe(20);\n    expect(tp2.meridian).toBe('AM');\n    expect($input2.val()).toBe('09:15:20 AM');\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('09');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('15');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('20');\n    expect(tp2.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');\n  });\n\n  it('should be able to format time values into a string', function() {\n    expect(tp2.formatTime(3, 15, 45, 'PM')).toBe('03:15:45 PM');\n  });\n\n  it('should be able get & set the pickers time', function() {\n    tp3.setTime('23:15:20');\n    expect(tp3.getTime()).toBe('23:15:20');\n  });\n\n  it('should update picker on blur', function() {\n    $input1.val('10:25 AM');\n    expect(tp1.getTime()).not.toBe('10:25 AM');\n    $input1.trigger('blur');\n    expect(tp1.getTime()).toBe('10:25 AM');\n  });\n\n  it('should update element with updateElement method', function() {\n    tp1.hour = 10;\n    tp1.minute = 30;\n    tp1.meridian = 'PM';\n    tp1.updateElement();\n    expect($input1.val()).toBe('10:30 PM');\n  });\n\n  it('should update widget with updateWidget method', function() {\n    tp2.hour = 10;\n    tp2.minute = 30;\n    tp2.second = 15;\n\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).not.toBe('15');\n\n    tp2.updateWidget();\n\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('15');\n  });\n\n  it('should update picker with updateFromElementVal method', function() {\n    tp1.hour = 12;\n    tp1.minute = 12;\n    tp1.meridian = 'PM';\n    tp1.update();\n\n    $input1.val('10:30 AM');\n\n    expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');\n    expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');\n    expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).not.toBe('AM');\n    expect(tp1.hour).not.toBe(10);\n    expect(tp1.minute).not.toBe(30);\n    expect(tp1.meridian).not.toBe('AM');\n\n    tp1.updateFromElementVal();\n\n    expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');\n    expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');\n    expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(30);\n    expect(tp1.meridian).toBe('AM');\n  });\n\n  it('should update picker with updateFromWidgetInputs method', function() {\n    tp1.hour = 12;\n    tp1.minute = 12;\n    tp1.meridian = 'PM';\n    tp1.update();\n\n    tp1.$widget.find('.bootstrap-timepicker-hour').val(10);\n    tp1.$widget.find('.bootstrap-timepicker-minute').val(30);\n    tp1.$widget.find('.bootstrap-timepicker-meridian').val('AM');\n\n    expect(tp1.hour).not.toBe(10);\n    expect(tp1.minute).not.toBe(30);\n    expect(tp1.meridian).not.toBe('AM');\n    expect($input1.val()).not.toBe('10:30 AM');\n\n    tp1.updateFromWidgetInputs();\n\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(30);\n    expect(tp1.meridian).toBe('AM');\n    expect($input1.val()).toBe('10:30 AM');\n  });\n\n  it('should increment hours with incrementHour method', function() {\n    tp1.hour = 9;\n    tp1.incrementHour();\n    expect(tp1.hour).toBe(10);\n  });\n\n  it('should decrement hours with decrementHour method', function() {\n    tp1.hour = 9;\n    tp1.decrementHour();\n    expect(tp1.hour).toBe(8);\n  });\n\n  it('should toggle meridian if hour goes past 12', function() {\n    $input1.val('11:00 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n\n    expect(tp1.hour).toBe(12);\n    expect(tp1.minute).toBe(0);\n    expect(tp1.meridian).toBe('PM');\n  });\n\n  it('should toggle meridian if hour goes below 1', function() {\n    $input1.val('11:00 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n\n    expect(tp1.hour).toBe(12);\n    expect(tp1.minute).toBe(0);\n    expect(tp1.meridian).toBe('PM');\n  });\n\n  it('should set hour to 1 if hour increments on 12 for 12h clock', function() {\n    $input1.val('11:15 PM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n    tp1.incrementHour();\n\n    expect(tp1.getTime()).toBe('01:15 AM');\n  });\n\n  it('should set hour to 0 if hour increments on 23 for 24h clock', function() {\n    $input3.val('22:15:30');\n    tp3.updateFromElementVal();\n    tp3.incrementHour();\n    tp3.incrementHour();\n\n    expect(tp3.hour).toBe(0);\n    expect(tp3.minute).toBe(15);\n    expect(tp3.second).toBe(30);\n  });\n\n  it('should increment minutes with incrementMinute method', function() {\n    tp1.minute = 10;\n    tp1.incrementMinute();\n\n    expect(tp1.minute).toBe(15);\n\n    tp2.minute = 0;\n    tp2.incrementMinute();\n\n    expect(tp2.minute).toBe(30);\n  });\n\n  it('should decrement minutes with decrementMinute method', function() {\n    tp1.hour = 11;\n    tp1.minute = 0;\n    tp1.decrementMinute();\n\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(45);\n\n    tp2.hour = 11;\n    tp2.minute = 0;\n    tp2.decrementMinute();\n\n    expect(tp2.hour).toBe(10);\n    expect(tp2.minute).toBe(30);\n  });\n\n\n  it('should increment hour if minutes increment past 59', function() {\n    $input1.val('11:55 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementMinute();\n    tp1.update();\n\n    expect(tp1.getTime()).toBe('12:00 PM');\n  });\n\n  it('should toggle meridian with toggleMeridian method', function() {\n    tp1.meridian = 'PM';\n    tp1.toggleMeridian();\n\n    expect(tp1.meridian).toBe('AM');\n  });\n\n  it('should increment seconds with incrementSecond method', function() {\n    tp1.second = 0;\n    tp1.incrementSecond();\n\n    expect(tp1.second).toBe(15);\n\n    tp2.second = 0;\n    tp2.incrementSecond();\n\n    expect(tp2.second).toBe(30);\n  });\n\n  it('should decrement seconds with decrementSecond method', function() {\n    tp2.hour = 11;\n    tp2.minute = 0;\n    tp2.second = 0;\n    tp2.decrementSecond();\n\n    expect(tp2.minute).toBe(59);\n    expect(tp2.second).toBe(30);\n  });\n\n\n  it('should increment minute by 1 if seconds increment past 59', function() {\n    $input2.val('11:55:30 AM');\n    tp2.updateFromElementVal();\n    tp2.incrementSecond();\n    tp2.update();\n\n    expect(tp2.getTime()).toBe('11:56:00 AM');\n  });\n\n  it('should not have any remaining events if remove is called', function() {\n    var hideEvents = 0;\n\n    $input1.on('hide.timepicker', function() {\n      hideEvents++;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n    $('body').trigger('mousedown');\n\n    expect(hideEvents).toBe(1);\n\n    tp1.remove();\n    tp2.remove();\n    tp3.remove();\n\n    $('body').trigger('click');\n    expect(hideEvents).toBe(1);\n  });\n\n  it('should not have the widget in the DOM if remove method is called', function() {\n    expect($('body')).toContain('.bootstrap-timepicker-widget');\n    tp1.remove();\n    tp2.remove();\n    tp3.remove();\n    expect($('body')).not.toContain('.bootstrap-timepicker-widget');\n  });\n\n  it('should be able to set time from a script', function() {\n    $input1.timepicker('setTime', '12:35 PM');\n    tp1.update();\n    expect(tp1.getTime()).toBe('12:35 PM');\n  });\n\n  it('should be able to opened from script', function() {\n    expect(tp1.isOpen).toBe(false);\n    $input1.timepicker('showWidget');\n    expect(tp1.isOpen).toBe(true);\n  });\n\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/fixtures/timepicker.html",
    "content": "<div class=\"input-append bootstrap-timepicker\">\n    <input id=\"timepicker1\" type=\"text\" class=\"input-small\">\n    <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n</div>\n<div class=\"input-append bootstrap-timepicker\">\n    <input id=\"timepicker2\" type=\"text\" class=\"input-small\">\n    <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n</div>\n<div class=\"bootstrap-timepicker\">\n    <input id=\"timepicker3\" type=\"text\" />\n</div>\n<div class=\"bootstrap-timepicker\">\n    <input id=\"timepicker4\" type=\"text\" />\n</div>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/SpecHelper.js",
    "content": "\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/jasmine-jquery.js",
    "content": "var readFixtures = function() {\n  return jasmine.getFixtures().proxyCallTo_('read', arguments)\n}\n\nvar preloadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('preload', arguments)\n}\n\nvar loadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('load', arguments)\n}\n\nvar appendLoadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('appendLoad', arguments)\n}\n\nvar setFixtures = function(html) {\n  jasmine.getFixtures().proxyCallTo_('set', arguments)\n}\n\nvar appendSetFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('appendSet', arguments)\n}\n\nvar sandbox = function(attributes) {\n  return jasmine.getFixtures().sandbox(attributes)\n}\n\nvar spyOnEvent = function(selector, eventName) {\n  return jasmine.JQuery.events.spyOn(selector, eventName)\n}\n\nvar preloadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('preload', arguments)\n}\n\nvar loadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('load', arguments)\n}\n\nvar appendLoadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments)\n}\n\nvar setStyleFixtures = function(html) {\n  jasmine.getStyleFixtures().proxyCallTo_('set', arguments)\n}\n\nvar appendSetStyleFixtures = function(html) {\n  jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments)\n}\n\nvar loadJSONFixtures = function() {\n  return jasmine.getJSONFixtures().proxyCallTo_('load', arguments)\n}\n\nvar getJSONFixture = function(url) {\n  return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url]\n}\n\njasmine.spiedEventsKey = function (selector, eventName) {\n  return [$(selector).selector, eventName].toString()\n}\n\njasmine.getFixtures = function() {\n  return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures()\n}\n\njasmine.getStyleFixtures = function() {\n  return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures()\n}\n\njasmine.Fixtures = function() {\n  this.containerId = 'jasmine-fixtures'\n  this.fixturesCache_ = {}\n  this.fixturesPath = 'spec/js/fixtures'\n}\n\njasmine.Fixtures.prototype.set = function(html) {\n  this.cleanUp()\n  this.createContainer_(html)\n}\n\njasmine.Fixtures.prototype.appendSet= function(html) {\n  this.addToContainer_(html)\n}\n\njasmine.Fixtures.prototype.preload = function() {\n  this.read.apply(this, arguments)\n}\n\njasmine.Fixtures.prototype.load = function() {\n  this.cleanUp()\n  this.createContainer_(this.read.apply(this, arguments))\n}\n\njasmine.Fixtures.prototype.appendLoad = function() {\n  this.addToContainer_(this.read.apply(this, arguments))\n}\n\njasmine.Fixtures.prototype.read = function() {\n  var htmlChunks = []\n\n  var fixtureUrls = arguments\n  for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {\n    htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex]))\n  }\n\n  return htmlChunks.join('')\n}\n\njasmine.Fixtures.prototype.clearCache = function() {\n  this.fixturesCache_ = {}\n}\n\njasmine.Fixtures.prototype.cleanUp = function() {\n  $('#' + this.containerId).remove()\n}\n\njasmine.Fixtures.prototype.sandbox = function(attributes) {\n  var attributesToSet = attributes || {}\n  return $('<div id=\"sandbox\" />').attr(attributesToSet)\n}\n\njasmine.Fixtures.prototype.createContainer_ = function(html) {\n  var container\n  if(html instanceof $) {\n    container = $('<div id=\"' + this.containerId + '\" />')\n    container.html(html)\n  } else {\n    container = '<div id=\"' + this.containerId + '\">' + html + '</div>'\n  }\n  $(document.body).append(container)\n}\n\njasmine.Fixtures.prototype.addToContainer_ = function(html){\n  var container = $(document.body).find('#'+this.containerId).append(html)\n  if(!container.length){\n    this.createContainer_(html)\n  }\n}\n\njasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {\n  if (typeof this.fixturesCache_[url] === 'undefined') {\n    this.loadFixtureIntoCache_(url)\n  }\n  return this.fixturesCache_[url]\n}\n\njasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {\n  var url = this.makeFixtureUrl_(relativeUrl)\n  var request = $.ajax({\n    type: \"GET\",\n    url: url + \"?\" + new Date().getTime(),\n    async: false\n  })\n  this.fixturesCache_[relativeUrl] = request.responseText\n}\n\njasmine.Fixtures.prototype.makeFixtureUrl_ = function(relativeUrl){\n  return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl\n}\n\njasmine.Fixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {\n  return this[methodName].apply(this, passedArguments)\n}\n\n\njasmine.StyleFixtures = function() {\n  this.fixturesCache_ = {}\n  this.fixturesNodes_ = []\n  this.fixturesPath = 'spec/javascripts/fixtures'\n}\n\njasmine.StyleFixtures.prototype.set = function(css) {\n  this.cleanUp()\n  this.createStyle_(css)\n}\n\njasmine.StyleFixtures.prototype.appendSet = function(css) {\n  this.createStyle_(css)\n}\n\njasmine.StyleFixtures.prototype.preload = function() {\n  this.read_.apply(this, arguments)\n}\n\njasmine.StyleFixtures.prototype.load = function() {\n  this.cleanUp()\n  this.createStyle_(this.read_.apply(this, arguments))\n}\n\njasmine.StyleFixtures.prototype.appendLoad = function() {\n  this.createStyle_(this.read_.apply(this, arguments))\n}\n\njasmine.StyleFixtures.prototype.cleanUp = function() {\n  while(this.fixturesNodes_.length) {\n    this.fixturesNodes_.pop().remove()\n  }\n}\n\njasmine.StyleFixtures.prototype.createStyle_ = function(html) {\n  var styleText = $('<div></div>').html(html).text(),\n    style = $('<style>' + styleText + '</style>')\n\n  this.fixturesNodes_.push(style)\n\n  $('head').append(style)\n}\n\njasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache\n\njasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read\n\njasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_\n\njasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_\n\njasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_\n\njasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_\n\njasmine.getJSONFixtures = function() {\n  return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures()\n}\n\njasmine.JSONFixtures = function() {\n  this.fixturesCache_ = {}\n  this.fixturesPath = 'spec/javascripts/fixtures/json'\n}\n\njasmine.JSONFixtures.prototype.load = function() {\n  this.read.apply(this, arguments)\n  return this.fixturesCache_\n}\n\njasmine.JSONFixtures.prototype.read = function() {\n  var fixtureUrls = arguments\n  for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {\n    this.getFixtureData_(fixtureUrls[urlIndex])\n  }\n  return this.fixturesCache_\n}\n\njasmine.JSONFixtures.prototype.clearCache = function() {\n  this.fixturesCache_ = {}\n}\n\njasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {\n  this.loadFixtureIntoCache_(url)\n  return this.fixturesCache_[url]\n}\n\njasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {\n  var self = this\n  var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl\n  $.ajax({\n    async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded\n    cache: false,\n    dataType: 'json',\n    url: url,\n    success: function(data) {\n      self.fixturesCache_[relativeUrl] = data\n    },\n    fail: function(jqXHR, status, errorThrown) {\n        throw Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')')\n    }\n  })\n}\n\njasmine.JSONFixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {\n  return this[methodName].apply(this, passedArguments)\n}\n\njasmine.JQuery = function() {}\n\njasmine.JQuery.browserTagCaseIndependentHtml = function(html) {\n  return $('<div/>').append(html).html()\n}\n\njasmine.JQuery.elementToString = function(element) {\n  var domEl = $(element).get(0)\n  if (domEl == undefined || domEl.cloneNode)\n    return $('<div />').append($(element).clone()).html()\n  else\n    return element.toString()\n}\n\njasmine.JQuery.matchersClass = {}\n\n!function(namespace) {\n  var data = {\n    spiedEvents: {},\n    handlers:    []\n  }\n\n  namespace.events = {\n    spyOn: function(selector, eventName) {\n      var handler = function(e) {\n        data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = e\n      }\n      $(selector).bind(eventName, handler)\n      data.handlers.push(handler)\n      return {\n        selector: selector,\n        eventName: eventName,\n        handler: handler,\n        reset: function(){\n          delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]\n        }\n      }\n    },\n\n    wasTriggered: function(selector, eventName) {\n      return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)])\n    },\n\n    wasPrevented: function(selector, eventName) {\n      var e;\n      return (e = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]) && e.isDefaultPrevented()\n    },\n\n    cleanUp: function() {\n      data.spiedEvents = {}\n      data.handlers    = []\n    }\n  }\n}(jasmine.JQuery)\n\n!function(){\n  var jQueryMatchers = {\n    toHaveClass: function(className) {\n      return this.actual.hasClass(className)\n    },\n\n    toHaveCss: function(css){\n      for (var prop in css){\n        if (this.actual.css(prop) !== css[prop]) return false\n      }\n      return true\n    },\n\n    toBeVisible: function() {\n      return this.actual.is(':visible')\n    },\n\n    toBeHidden: function() {\n      return this.actual.is(':hidden')\n    },\n\n    toBeSelected: function() {\n      return this.actual.is(':selected')\n    },\n\n    toBeChecked: function() {\n      return this.actual.is(':checked')\n    },\n\n    toBeEmpty: function() {\n      return this.actual.is(':empty')\n    },\n\n    toExist: function() {\n      return $(document).find(this.actual).length\n    },\n\n    toHaveLength: function(length) {\n      return this.actual.length === length\n    },\n\n    toHaveAttr: function(attributeName, expectedAttributeValue) {\n      return hasProperty(this.actual.attr(attributeName), expectedAttributeValue)\n    },\n\n    toHaveProp: function(propertyName, expectedPropertyValue) {\n      return hasProperty(this.actual.prop(propertyName), expectedPropertyValue)\n    },\n\n    toHaveId: function(id) {\n      return this.actual.attr('id') == id\n    },\n\n    toHaveHtml: function(html) {\n      return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html)\n    },\n\n    toContainHtml: function(html){\n      var actualHtml = this.actual.html()\n      var expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html)\n      return (actualHtml.indexOf(expectedHtml) >= 0)\n    },\n\n    toHaveText: function(text) {\n      var trimmedText = $.trim(this.actual.text())\n      if (text && $.isFunction(text.test)) {\n        return text.test(trimmedText)\n      } else {\n        return trimmedText == text\n      }\n    },\n\n    toHaveValue: function(value) {\n      return this.actual.val() == value\n    },\n\n    toHaveData: function(key, expectedValue) {\n      return hasProperty(this.actual.data(key), expectedValue)\n    },\n\n    toBe: function(selector) {\n      return this.actual.is(selector)\n    },\n\n    toContain: function(selector) {\n      return this.actual.find(selector).length\n    },\n\n    toBeDisabled: function(selector){\n      return this.actual.is(':disabled')\n    },\n\n    toBeFocused: function(selector) {\n      return this.actual[0] === this.actual[0].ownerDocument.activeElement\n    },\n\n    toHandle: function(event) {\n\n      var events = $._data(this.actual.get(0), \"events\")\n\n      if(!events || !event || typeof event !== \"string\") {\n        return false\n      }\n\n      var namespaces = event.split(\".\")\n      var eventType = namespaces.shift()\n      var sortedNamespaces = namespaces.slice(0).sort()\n      var namespaceRegExp = new RegExp(\"(^|\\\\.)\" + sortedNamespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\")\n\n      if(events[eventType] && namespaces.length) {\n        for(var i = 0; i < events[eventType].length; i++) {\n          var namespace = events[eventType][i].namespace\n          if(namespaceRegExp.test(namespace)) {\n            return true\n          }\n        }\n      } else {\n        return events[eventType] && events[eventType].length > 0\n      }\n    },\n\n    // tests the existence of a specific event binding + handler\n    toHandleWith: function(eventName, eventHandler) {\n      var stack = $._data(this.actual.get(0), \"events\")[eventName]\n      for (var i = 0; i < stack.length; i++) {\n        if (stack[i].handler == eventHandler) return true\n      }\n      return false\n    }\n  }\n\n  var hasProperty = function(actualValue, expectedValue) {\n    if (expectedValue === undefined) return actualValue !== undefined\n    return actualValue == expectedValue\n  }\n\n  var bindMatcher = function(methodName) {\n    var builtInMatcher = jasmine.Matchers.prototype[methodName]\n\n    jasmine.JQuery.matchersClass[methodName] = function() {\n      if (this.actual\n        && (this.actual instanceof $\n          || jasmine.isDomNode(this.actual))) {\n            this.actual = $(this.actual)\n            var result = jQueryMatchers[methodName].apply(this, arguments)\n            var element\n            if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== \"HTML\")\n              this.actual = jasmine.JQuery.elementToString(this.actual)\n            return result\n          }\n\n          if (builtInMatcher) {\n            return builtInMatcher.apply(this, arguments)\n          }\n\n          return false\n    }\n  }\n\n  for(var methodName in jQueryMatchers) {\n    bindMatcher(methodName)\n  }\n}()\n\nbeforeEach(function() {\n  this.addMatchers(jasmine.JQuery.matchersClass)\n  this.addMatchers({\n    toHaveBeenTriggeredOn: function(selector) {\n      this.message = function() {\n        return [\n          \"Expected event \" + this.actual + \" to have been triggered on \" + selector,\n          \"Expected event \" + this.actual + \" not to have been triggered on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasTriggered(selector, this.actual)\n    }\n  })\n  this.addMatchers({\n    toHaveBeenTriggered: function(){\n      var eventName = this.actual.eventName,\n          selector = this.actual.selector\n      this.message = function() {\n        return [\n          \"Expected event \" + eventName + \" to have been triggered on \" + selector,\n          \"Expected event \" + eventName + \" not to have been triggered on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasTriggered(selector, eventName)\n     }\n  })\n  this.addMatchers({\n    toHaveBeenPreventedOn: function(selector) {\n      this.message = function() {\n        return [\n          \"Expected event \" + this.actual + \" to have been prevented on \" + selector,\n          \"Expected event \" + this.actual + \" not to have been prevented on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasPrevented(selector, this.actual)\n    }\n  })\n  this.addMatchers({\n    toHaveBeenPrevented: function() {\n      var eventName = this.actual.eventName,\n          selector = this.actual.selector\n      this.message = function() {\n        return [\n          \"Expected event \" + eventName + \" to have been prevented on \" + selector,\n          \"Expected event \" + eventName + \" not to have been prevented on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasPrevented(selector, eventName)\n    }\n  })\n})\n\nafterEach(function() {\n  jasmine.getFixtures().cleanUp()\n  jasmine.getStyleFixtures().cleanUp()\n  jasmine.JQuery.events.cleanUp()\n})\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/css/basic.css",
    "content": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 6px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n  margin-bottom: 22px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/css/dropzone.css",
    "content": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 6px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n  margin-bottom: 22px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n.dropzone {\n  border: 1px solid rgba(0,0,0,0.03);\n  min-height: 360px;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n  background: rgba(0,0,0,0.03);\n  padding: 23px;\n}\n.dropzone .default.message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n  background-position: 0 0;\n  position: absolute;\n  width: 428px;\n  height: 123px;\n  margin-left: -214px;\n  margin-top: -61.5px;\n  top: 50%;\n  left: 50%;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .default.message {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .default.message span {\n  display: none;\n}\n.dropzone.square .default.message {\n  background-position: 0 -123px;\n  width: 268px;\n  margin-left: -134px;\n  height: 174px;\n  margin-top: -87px;\n}\n.dropzone.drag-hover .message {\n  opacity: 0.15;\n  filter: alpha(opacity=15);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=15)\";\n}\n.dropzone.started .message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  font-size: 14px;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview.image-preview:hover .details img,\n.dropzone-previews .preview.image-preview:hover .details img {\n  display: block;\n  opacity: 0.1;\n  filter: alpha(opacity=10);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=10)\";\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .progress .upload,\n.dropzone-previews .preview.error .progress .upload {\n  background: #ee1e2d;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark,\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .error-mark,\n  .dropzone-previews .preview .error-mark,\n  .dropzone .preview .success-mark,\n  .dropzone-previews .preview .success-mark {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview .error-mark span,\n.dropzone-previews .preview .error-mark span,\n.dropzone .preview .success-mark span,\n.dropzone-previews .preview .success-mark span {\n  display: none;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  background-position: -268px -123px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  background-position: -268px -163px;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  -webkit-animation: loading 0.4s linear infinite;\n  -moz-animation: loading 0.4s linear infinite;\n  -o-animation: loading 0.4s linear infinite;\n  -ms-animation: loading 0.4s linear infinite;\n  animation: loading 0.4s linear infinite;\n  -webkit-transition: width 0.3s ease-in-out;\n  -moz-transition: width 0.3s ease-in-out;\n  -o-transition: width 0.3s ease-in-out;\n  -ms-transition: width 0.3s ease-in-out;\n  transition: width 0.3s ease-in-out;\n  -webkit-border-radius: 2px;\n  border-radius: 2px;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0%;\n  height: 100%;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: repeat-x;\n  background-position: 0px -400px;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .progress .upload,\n  .dropzone-previews .preview .progress .upload {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview.success .progress,\n.dropzone-previews .preview.success .progress {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n@-moz-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-webkit-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-o-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-ms-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.js",
    "content": ";(function(){\n\n\n/**\n * hasOwnProperty.\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Require the given path.\n *\n * @param {String} path\n * @return {Object} exports\n * @api public\n */\n\nfunction require(path, parent, orig) {\n  var resolved = require.resolve(path);\n\n  // lookup failed\n  if (null == resolved) {\n    orig = orig || path;\n    parent = parent || 'root';\n    var err = new Error('Failed to require \"' + orig + '\" from \"' + parent + '\"');\n    err.path = orig;\n    err.parent = parent;\n    err.require = true;\n    throw err;\n  }\n\n  var module = require.modules[resolved];\n\n  // perform real require()\n  // by invoking the module's\n  // registered function\n  if (!module.exports) {\n    module.exports = {};\n    module.client = module.component = true;\n    module.call(this, module.exports, require.relative(resolved), module);\n  }\n\n  return module.exports;\n}\n\n/**\n * Registered modules.\n */\n\nrequire.modules = {};\n\n/**\n * Registered aliases.\n */\n\nrequire.aliases = {};\n\n/**\n * Resolve `path`.\n *\n * Lookup:\n *\n *   - PATH/index.js\n *   - PATH.js\n *   - PATH\n *\n * @param {String} path\n * @return {String} path or null\n * @api private\n */\n\nrequire.resolve = function(path) {\n  if (path.charAt(0) === '/') path = path.slice(1);\n  var index = path + '/index.js';\n\n  var paths = [\n    path,\n    path + '.js',\n    path + '.json',\n    path + '/index.js',\n    path + '/index.json'\n  ];\n\n  for (var i = 0; i < paths.length; i++) {\n    var path = paths[i];\n    if (has.call(require.modules, path)) return path;\n  }\n\n  if (has.call(require.aliases, index)) {\n    return require.aliases[index];\n  }\n};\n\n/**\n * Normalize `path` relative to the current path.\n *\n * @param {String} curr\n * @param {String} path\n * @return {String}\n * @api private\n */\n\nrequire.normalize = function(curr, path) {\n  var segs = [];\n\n  if ('.' != path.charAt(0)) return path;\n\n  curr = curr.split('/');\n  path = path.split('/');\n\n  for (var i = 0; i < path.length; ++i) {\n    if ('..' == path[i]) {\n      curr.pop();\n    } else if ('.' != path[i] && '' != path[i]) {\n      segs.push(path[i]);\n    }\n  }\n\n  return curr.concat(segs).join('/');\n};\n\n/**\n * Register module at `path` with callback `definition`.\n *\n * @param {String} path\n * @param {Function} definition\n * @api private\n */\n\nrequire.register = function(path, definition) {\n  require.modules[path] = definition;\n};\n\n/**\n * Alias a module definition.\n *\n * @param {String} from\n * @param {String} to\n * @api private\n */\n\nrequire.alias = function(from, to) {\n  if (!has.call(require.modules, from)) {\n    throw new Error('Failed to alias \"' + from + '\", it does not exist');\n  }\n  require.aliases[to] = from;\n};\n\n/**\n * Return a require function relative to the `parent` path.\n *\n * @param {String} parent\n * @return {Function}\n * @api private\n */\n\nrequire.relative = function(parent) {\n  var p = require.normalize(parent, '..');\n\n  /**\n   * lastIndexOf helper.\n   */\n\n  function lastIndexOf(arr, obj) {\n    var i = arr.length;\n    while (i--) {\n      if (arr[i] === obj) return i;\n    }\n    return -1;\n  }\n\n  /**\n   * The relative require() itself.\n   */\n\n  function localRequire(path) {\n    var resolved = localRequire.resolve(path);\n    return require(resolved, parent, path);\n  }\n\n  /**\n   * Resolve relative to the parent.\n   */\n\n  localRequire.resolve = function(path) {\n    var c = path.charAt(0);\n    if ('/' == c) return path.slice(1);\n    if ('.' == c) return require.normalize(p, path);\n\n    // resolve deps by returning\n    // the dep in the nearest \"deps\"\n    // directory\n    var segs = parent.split('/');\n    var i = lastIndexOf(segs, 'deps') + 1;\n    if (!i) i = 0;\n    path = segs.slice(0, i + 1).join('/') + '/deps/' + path;\n    return path;\n  };\n\n  /**\n   * Check if module is defined at `path`.\n   */\n\n  localRequire.exists = function(path) {\n    return has.call(require.modules, localRequire.resolve(path));\n  };\n\n  return localRequire;\n};\nrequire.register(\"component-emitter/index.js\", function(exports, require, module){\n\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[event] = this._callbacks[event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  var self = this;\n  this._callbacks = this._callbacks || {};\n\n  function on() {\n    self.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  fn._off = on;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  var callbacks = this._callbacks[event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks[event];\n    return this;\n  }\n\n  // remove specific handler\n  var i = callbacks.indexOf(fn._off || fn);\n  if (~i) callbacks.splice(i, 1);\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks[event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\n});\nrequire.register(\"dropzone/index.js\", function(exports, require, module){\n\n\n/**\n * Exposing dropzone\n */\nmodule.exports = require(\"./lib/dropzone.js\");\n\n});\nrequire.register(\"dropzone/lib/dropzone.js\", function(exports, require, module){\n/*\n#\n# More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n# \n# Copyright (c) 2012, Matias Meno  \n# \n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n# \n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n# \n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n*/\n\n\n(function() {\n  var Dropzone, Em, camelize, contentLoaded, createElement, noop, without,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    __slice = [].slice,\n    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n  Em = typeof Emitter !== \"undefined\" && Emitter !== null ? Emitter : require(\"emitter\");\n\n  noop = function() {};\n\n  Dropzone = (function(_super) {\n    __extends(Dropzone, _super);\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n    \n    You can register an event handler like this:\n    \n        dropzone.on(\"dragEnter\", function() { });\n    */\n\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"selectedfiles\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"processingfile\", \"uploadprogress\", \"sending\", \"success\", \"complete\", \"reset\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      parallelUploads: 2,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 2,\n      thumbnailWidth: 100,\n      thumbnailHeight: 100,\n      params: {},\n      clickable: true,\n      enqueueForUpload: true,\n      previewsContainer: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n\n        this.element.className = \"\" + this.element.className + \" browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = createElement(\"<div class=\\\"message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          span.textContent = this.options.dictFallbackMessage;\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n      */\n\n      drop: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      selectedfiles: function(files) {\n        if (this.element === this.previewsContainer) {\n          return this.element.classList.add(\"started\");\n        }\n      },\n      reset: function() {\n        return this.element.classList.remove(\"started\");\n      },\n      addedfile: function(file) {\n        file.previewTemplate = createElement(this.options.previewTemplate);\n        this.previewsContainer.appendChild(file.previewTemplate);\n        file.previewTemplate.querySelector(\".filename span\").textContent = file.name;\n        return file.previewTemplate.querySelector(\".details\").appendChild(createElement(\"<div class=\\\"size\\\">\" + (this.filesize(file.size)) + \"</div>\"));\n      },\n      removedfile: function(file) {\n        return file.previewTemplate.parentNode.removeChild(file.previewTemplate);\n      },\n      thumbnail: function(file, dataUrl) {\n        file.previewTemplate.classList.remove(\"file-preview\");\n        file.previewTemplate.classList.add(\"image-preview\");\n        return file.previewTemplate.querySelector(\".details\").appendChild(createElement(\"<img alt=\\\"\" + file.name + \"\\\" src=\\\"\" + dataUrl + \"\\\"/>\"));\n      },\n      error: function(file, message) {\n        file.previewTemplate.classList.add(\"error\");\n        return file.previewTemplate.querySelector(\".error-message span\").textContent = message;\n      },\n      processingfile: function(file) {\n        return file.previewTemplate.classList.add(\"processing\");\n      },\n      uploadprogress: function(file, progress) {\n        return file.previewTemplate.querySelector(\".progress .upload\").style.width = \"\" + progress + \"%\";\n      },\n      sending: noop,\n      success: function(file) {\n        return file.previewTemplate.classList.add(\"success\");\n      },\n      complete: noop,\n      previewTemplate: \"<div class=\\\"preview file-preview\\\">\\n  <div class=\\\"details\\\">\\n   <div class=\\\"filename\\\"><span></span></div>\\n  </div>\\n  <div class=\\\"progress\\\"><span class=\\\"upload\\\"></span></div>\\n  <div class=\\\"success-mark\\\"><span>✔</span></div>\\n  <div class=\\\"error-mark\\\"><span>✘</span></div>\\n  <div class=\\\"error-message\\\"><span></span></div>\\n</div>\"\n    };\n\n    function Dropzone(element, options) {\n      var elementId, elementOptions, extend, fallback, _ref;\n\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (Dropzone.forElement(this.element)) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      elementId = this.element.id;\n      elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {};\n      extend = function() {\n        var key, object, objects, target, val, _i, _len;\n\n        target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n        for (_i = 0, _len = objects.length; _i < _len; _i++) {\n          object = objects[_i];\n          for (key in object) {\n            val = object[key];\n            target[key] = val;\n          }\n        }\n        return target;\n      };\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.url == null) {\n        this.options.url = this.element.action;\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if (!Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer) {\n        if (typeof this.options.previewsContainer === \"string\") {\n          this.previewsContainer = document.querySelector(this.options.previewsContainer);\n        } else if (this.options.previewsContainer.nodeType != null) {\n          this.previewsContainer = this.options.previewsContainer;\n        }\n        if (this.previewsContainer == null) {\n          throw new Error(\"Invalid `previewsContainer` option provided. Please provide a CSS selector or a plain HTML element.\");\n        }\n      } else {\n        this.previewsContainer = this.element;\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, _i, _len, _ref, _ref1,\n        _this = this;\n\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".message\")) {\n        this.element.appendChild(createElement(\"<div class=\\\"default message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.options.clickable) {\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        this.hiddenFileInput.style.display = \"none\";\n        document.body.appendChild(this.hiddenFileInput);\n        this.hiddenFileInput.addEventListener(\"change\", function() {\n          var files;\n\n          files = _this.hiddenFileInput.files;\n          if (files.length) {\n            _this.emit(\"selectedfiles\", files);\n            return _this.handleFiles(files);\n          }\n        });\n      }\n      this.files = [];\n      this.filesQueue = [];\n      this.filesProcessing = [];\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = {\n        \"dragstart\": function(e) {\n          return _this.emit(\"dragstart\", e);\n        },\n        \"dragenter\": function(e) {\n          noPropagation(e);\n          return _this.emit(\"dragenter\", e);\n        },\n        \"dragover\": function(e) {\n          noPropagation(e);\n          return _this.emit(\"dragover\", e);\n        },\n        \"dragleave\": function(e) {\n          return _this.emit(\"dragleave\", e);\n        },\n        \"drop\": function(e) {\n          noPropagation(e);\n          _this.drop(e);\n          return _this.emit(\"drop\", e);\n        },\n        \"dragend\": function(e) {\n          return _this.emit(\"dragend\", e);\n        },\n        \"click\": function(evt) {\n          if (!_this.options.clickable) {\n            return;\n          }\n          if (evt.target === _this.element || evt.target === _this.element.querySelector(\".message\")) {\n            return _this.hiddenFileInput.click();\n          }\n        }\n      };\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + this.options.paramName + \"\\\" multiple=\\\"multiple\\\" /><button type=\\\"submit\\\">Upload!</button></div>\";\n      fields = createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n\n      getFallback = function(elements) {\n        var el, _i, _len;\n\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(\"div\"))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var event, listener, _ref, _results;\n\n      _ref = this.listeners;\n      _results = [];\n      for (event in _ref) {\n        listener = _ref[event];\n        _results.push(this.element.addEventListener(event, listener, false));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var event, listener, _ref, _results;\n\n      _ref = this.listeners;\n      _results = [];\n      for (event in _ref) {\n        listener = _ref[event];\n        _results.push(this.element.removeEventListener(event, listener, false));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      if (this.options.clickable) {\n        this.element.classList.remove(\"clickable\");\n      }\n      this.removeEventListeners();\n      this.filesProcessing = [];\n      return this.filesQueue = [];\n    };\n\n    Dropzone.prototype.enable = function() {\n      if (this.options.clickable) {\n        this.element.classList.add(\"clickable\");\n      }\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var string;\n\n      if (size >= 100000000000) {\n        size = size / 100000000000;\n        string = \"TB\";\n      } else if (size >= 100000000) {\n        size = size / 100000000;\n        string = \"GB\";\n      } else if (size >= 100000) {\n        size = size / 100000;\n        string = \"MB\";\n      } else if (size >= 100) {\n        size = size / 100;\n        string = \"KB\";\n      } else {\n        size = size * 10;\n        string = \"b\";\n      }\n      return \"<strong>\" + (Math.round(size) / 10) + \"</strong> \" + string;\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files;\n\n      if (!e.dataTransfer) {\n        return;\n      }\n      files = e.dataTransfer.files;\n      this.emit(\"selectedfiles\", files);\n      if (files.length) {\n        return this.handleFiles(files);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(\"File is too big (\" + (Math.round(file.size / 1024 / 10.24) / 100) + \"MB). Max filesize: \" + this.options.maxFilesize + \"MB\");\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      var _this = this;\n\n      this.files.push(file);\n      this.emit(\"addedfile\", file);\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this.createThumbnail(file);\n      }\n      return this.accept(file, function(error) {\n        if (error) {\n          return _this.errorProcessing(file, error);\n        } else {\n          if (_this.options.enqueueForUpload) {\n            _this.filesQueue.push(file);\n            return _this.processQueue();\n          }\n        }\n      });\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.processing) {\n        throw new Error(\"Can't remove file currently processing\");\n      }\n      this.files = without(this.files, file);\n      this.filesQueue = without(this.filesQueue, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function() {\n      var file, _i, _len, _ref;\n\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (__indexOf.call(this.filesProcessing, file) < 0) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file) {\n      var fileReader,\n        _this = this;\n\n      fileReader = new FileReader;\n      fileReader.onload = function() {\n        var img;\n\n        img = new Image;\n        img.onload = function() {\n          var canvas, ctx, srcHeight, srcRatio, srcWidth, srcX, srcY, thumbnail, trgHeight, trgRatio, trgWidth, trgX, trgY;\n\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          srcX = 0;\n          srcY = 0;\n          srcWidth = img.width;\n          srcHeight = img.height;\n          canvas.width = _this.options.thumbnailWidth;\n          canvas.height = _this.options.thumbnailHeight;\n          trgX = 0;\n          trgY = 0;\n          trgWidth = canvas.width;\n          trgHeight = canvas.height;\n          srcRatio = img.width / img.height;\n          trgRatio = canvas.width / canvas.height;\n          if (img.height < canvas.height || img.width < canvas.width) {\n            trgHeight = srcHeight;\n            trgWidth = srcWidth;\n          } else {\n            if (srcRatio > trgRatio) {\n              srcHeight = img.height;\n              srcWidth = srcHeight * trgRatio;\n            } else {\n              srcWidth = img.width;\n              srcHeight = srcWidth / trgRatio;\n            }\n          }\n          srcX = (img.width - srcWidth) / 2;\n          srcY = (img.height - srcHeight) / 2;\n          trgY = (canvas.height - trgHeight) / 2;\n          trgX = (canvas.width - trgWidth) / 2;\n          ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, trgX, trgY, trgWidth, trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          return _this.emit(\"thumbnail\", file, thumbnail);\n        };\n        return img.src = fileReader.result;\n      };\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength;\n\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.filesProcessing.length;\n      i = processingLength;\n      while (i < parallelUploads) {\n        if (!this.filesQueue.length) {\n          return;\n        }\n        this.processFile(this.filesQueue.shift());\n        i++;\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      this.filesProcessing.push(file);\n      file.processing = true;\n      this.emit(\"processingfile\", file);\n      return this.uploadFile(file);\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      var formData, handleError, input, inputName, inputType, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2,\n        _this = this;\n\n      xhr = new XMLHttpRequest();\n      xhr.open(this.options.method, this.options.url, true);\n      handleError = function() {\n        return _this.errorProcessing(file, xhr.responseText || (\"Server responded with \" + xhr.status + \" code.\"));\n      };\n      xhr.onload = function(e) {\n        var response, _ref;\n\n        if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n          return handleError();\n        } else {\n          _this.emit(\"uploadprogress\", file, 100);\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            response = JSON.parse(response);\n          }\n          return _this.finished(file, response, e);\n        }\n      };\n      xhr.onerror = function() {\n        return handleError();\n      };\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = function(e) {\n        return _this.emit(\"uploadprogress\", file, Math.max(0, Math.min(100, (e.loaded / e.total) * 100)));\n      };\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n      xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n      xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      xhr.setRequestHeader(\"X-File-Name\", file.name);\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\n          input = _ref2[_i];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (!inputType || inputType.toLowerCase() !== \"checkbox\" || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      this.emit(\"sending\", file, xhr, formData);\n      formData.append(this.options.paramName, file);\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype.finished = function(file, responseText, e) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"finished\", file, responseText, e);\n      return this.emit(\"complete\", file);\n    };\n\n    Dropzone.prototype.errorProcessing = function(file, message) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"error\", file, message);\n      return this.emit(\"complete\", file);\n    };\n\n    return Dropzone;\n\n  })(Em);\n\n  Dropzone.version = \"2.0.8\";\n\n  Dropzone.options = {};\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    var instance, _i, _len, _ref;\n\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    _ref = Dropzone.instances;\n    for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n      instance = _ref[_i];\n      if (instance.element === element) {\n        return instance;\n      }\n    }\n    return null;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match[1].toUpperCase();\n    });\n  };\n\n  createElement = function(string) {\n    var div;\n\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  contentLoaded(window, function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n\n    if (false) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      _results.push(new Dropzone(dropzone));\n    }\n    return _results;\n  });\n\n}).call(this);\n\n});\nrequire.alias(\"component-emitter/index.js\", \"dropzone/deps/emitter/index.js\");\n\nif (typeof exports == \"object\") {\n  module.exports = require(\"dropzone\");\n} else if (typeof define == \"function\" && define.amd) {\n  define(function(){ return require(\"dropzone\"); });\n} else {\n  window[\"Dropzone\"] = require(\"dropzone\");\n}})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/dropzone/upload.php",
    "content": "<?php\n/*\n * Simple PHP File Upload EXAMPLE\n */\n\n/* THIS FILE IS USED IN DROPZONE FILE UPLOAD AS THE FORM ACTION\n * UNCOMMENT TO ENABLE THE ACTUAL FILE UPLOAD\n * \n$uploaddir = '/var/www/uploads/';\n$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);\n\necho '<pre>';\nif (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {\n    echo \"File is valid, and was successfully uploaded.\\n\";\n} else {\n    echo \"Possible file upload attack!\\n\";\n}\n\necho 'Here is some more debugging info:';\nprint_r($_FILES);\n\nprint \"</pre>\";\n*/"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/.gitignore",
    "content": "InputMask\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/README.md",
    "content": "#jquery.inputmask\n\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n\njquery.inputmask is a jquery plugin which create an input mask.\n\nAn inputmask helps the user with the input by ensuring a predefined format. This can be usefull for dates, numerics, phone numbers, ...\n\nHighlights:\n- easy to use\n- optional parts anywere in the mask\n- possibility to define aliases which hide complexity\n- date / datetime masks\n- numeric masks\n- lots of callbacks\n- non-greedy masks\n- many features can be enabled/disabled/configured by options\n- supports readonly/disabled/dir=\"rtl\" attributes\n- support data-inputmask attribute  \n- multi-mask support  \n\n\n## Usage:\n\nInclude the js-files which you can find in the dist-folder. You have the bundled file which contains the main plugin code and also all extensions. (date, numerics, other) or if you prefer to only include some parts, use the separate js-files in the dist/min folder.\n\nThe minimum to include is the jquery.inputmask.js\n\n```html\n<script src=\"jquery.js\" type=\"text/javascript\"></script>\n<script src=\"jquery.inputmask.js\" type=\"text/javascript\"></script>\n```\n\nDefine your masks:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\");  //direct mask\n   $(\"#phone\").inputmask(\"mask\", {\"mask\": \"(999) 999-9999\"}); //specifying fn & options\n   $(\"#tin\").inputmask({\"mask\": \"99-9999999\"}); //specifying options only\n});\n```\n\nor\n\n```html\n<input data-inputmask=\"'alias': 'date'\" />\n<input data-inputmask=\"'mask': '9', 'repeat': 10, 'greedy' : false\" />\n<input data-inputmask=\"'mask': '99-9999999'\" />\n```\n```javascript\n$(document).ready(function(){\n    $(\":input\").inputmask();\n});\n```\n\n## Options:\n\n### change the placeholder\n\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"placeholder\": \"*\" });\n});\n```\n\nor a multi-char placeholder\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"placeholder\": \"dd/mm/yyyy\" });\n});\n```\n\n### execute a function when the mask is completed, incomplete or cleared\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"oncomplete\": function(){ alert('inputmask complete'); } });\n   $(\"#date\").inputmask(\"d/m/y\",{ \"onincomplete\": function(){ alert('inputmask incomplete'); } });\n   $(\"#date\").inputmask(\"d/m/y\",{ \"oncleared\": function(){ alert('inputmask cleared'); } });\n});\n```\n\n### clearIncomplete - clear the incomplete input on blur\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"clearIncomplete\": true } });\n});\n```\n\n### mask repeat function\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask({ \"mask\": \"9\", \"repeat\": 10 });  // ~ mask \"9999999999\"\n});\n```\n\n### mask non-greedy repeat function\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask({ \"mask\": \"9\", \"repeat\": 10, \"greedy\": false });  // ~ mask \"9\" or mask \"99\" or ... mask \"9999999999\"\n});\n```\n\n### get the unmaskedvalue\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask('unmaskedvalue');\n});\n```\n\n### set a value and apply mask\n\nthis can be done with the traditionnal jquery.val function (all browsers) or javascript value property for browsers which implement lookupGetter or getOwnPropertyDescriptor\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").val(12345);\n\n   var number = document.getElementById(\"number\");\n   number.value = 12345;\n});\n```\n\nwith the autoUnmaskoption you can change the return of $.fn.val (or value property)  to unmaskedvalue or the maskedvalue\n\n```javascript\n$(document).ready(function(){\n   \t$('#<%= tbDate.ClientID%>').inputmask({ \"mask\": \"d/m/y\", 'autoUnmask' : true});\t//  value: 23/03/1973\n\talert($('#<%= tbDate.ClientID%>').val());\t// shows 23031973     (autoUnmask: true)\n\n\tvar tbDate = document.getElementById(\"<%= tbDate.ClientID%>\");\n    alert(tbDate.value);\t// shows 23031973     (autoUnmask: true)\n});\n```\n\n### add custom definitions\n\nYou can define your own definitions to use in your mask.  \nStart by choosing a masksymbol. \n\n##### validator\nNext define your validator.  The validator can be a regular expression or a function.\n\n##### cardinality\nCardinality specifies how many characters are represented and validated for the definition.\n\n##### prevalidator\n The prevalidator option is \nused to validate the characters before the definition cardinality is reached. (see 'j' example)\n\n##### definitionSymbol\nWhen you insert or delete characters, they are only shifted when the definition type is the same.  This behavior can be overridden\nby giving a definitionSymbol. (see example x, y, z, which can be used for ip-address masking, the validation is different, but it is allowed to shift the characteres between the definitions)\n\n```javascript\n$.extend($.inputmask.defaults.definitions, {\n    'f': {  //masksymbol\n        \"validator\": \"[0-9\\(\\)\\.\\+/ ]\",\n        \"cardinality\": 1,\n        'prevalidator': null\n    },\n\t'g': {\n        \"validator\": function (chrs, buffer, pos, strict, opts) { \n\t\t\t//do some logic and return true, false, or { \"pos\": new position, \"c\": character to place }\n\t\t}\t\t\n        \"cardinality\": 1,\n        'prevalidator': null\n    },\n\t'j': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n     }, \n\t 'x': {\n        validator: \"[0-2]\",\n        cardinality: 1,\n        definitionSymbol: \"i\" //this allows shifting values from other definitions, with the same masksymbol or definitionSymbol\n     },\n     'y': {\n        validator: function (chrs, buffer, pos, strict, opts) {\n                        var valExp2 = new RegExp(\"2[0-5]|[01][0-9]\");\n                        return valExp2.test(buffer[pos - 1] + chrs);\n                    },\n        cardinality: 1,\n        definitionSymbol: \"i\"\n     },\n     'z': {\n        validator: function (chrs, buffer, pos, strict, opts) {\n                       var valExp3 = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n                        return valExp3.test(buffer[pos - 2] + buffer[pos - 1] + chrs);\n        },\n        cardinality: 1,\n        definitionSymbol: \"i\"\n      }\n});\n```\n\n### set defaults\n\n```javascript\n$.extend($.inputmask.defaults, {\n    'autoUnmask': true\n});\n```\n\n### numeric input direction\n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('€ 999.999.999,99', { numericInput: true });    //123456  =>  € ___.__1.234,56\n});\n```\n\n#### skipRadixDance\n\nIf you define a radixPoint the caret will always jump to the integer part, until you type the radixpoint.  \n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('€ 999.999.999,99', { numericInput: true, radixPoint: \",\" });\n});\n```\n\nThis behavior can be skipped by setting the skipRadixDance to true.\n\n#### align the numerics to the right\n\nBy setting the rightAlignNumerics you can specify to right align a numeric inputmask.  Default is true.  \n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('decimal', { rightAlignNumerics: false });  //disables the right alignment of the decimal input\n});\n```\n\n\n### remove the inputmask\n\n```javascript\n$(document).ready(function(){\n    $('selector').inputmask('remove');\n});\n```\n\n### escape special mask chars\n\n```javascript\n$(document).ready(function(){\n    $(\"#months\").inputmask(\"m \\\\months\");\n});\n```\n\n### clearMaskOnLostFocus\n\nremove the empty mask on blur or when not empty removes the optional trailing part\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{placeholder:\" \", clearMaskOnLostFocus: true }); //default\n});\n```\n\n### Optional Masks\n\nIt is possible to define some parts in the mask as optional.  This is done by using [ ].\n\nExample:\n\n```javascript\n$('#test').inputmask('(99) 9999[9]-9999');\n```\nThis mask wil allow input like (99) 99999-9999 or (99) 9999-9999.  \nInput => 12123451234      mask => (12) 12345-1234    (trigger complete)  \nInput => 121234-1234      mask => (12) 1234-1234     (trigger complete)  \nInput => 1212341234       mask => (12) 12341-234_    (trigger incomplete)  \n\n#### skipOptionalPartCharacter\nAs an extra there is another configurable character which is used to skip an optional part in the mask.  \n\n```javascript\nskipOptionalPartCharacter: \" \",\n```\nInput => 121234 1234      mask => (12) 1234-1234     (trigger complete)  \n\nWhen `clearMaskOnLostFocus: true` is set in the options (default), the mask will clearout the optional part when it is not filled in and this only in case the optional part is at the end of the mask.\n\nFor example, given:\n\n```javascript\n$('#test').inputmask('999[-AAA]');\n```\nWhile the field has focus and is blank, users will see the full mask `___-___`.\nWhen the required part of the mask is filled and the field loses focus, the user will see `123`.\nWhen both the required and optional parts of the mask are filled out and the field loses focus, the user will see `123-ABC`.\n\n### Multiple masks\n\nYou can define multiple mask for your input.  Depending on the input the masking will switch between the defined masks.  \nThis can be usefull when the masks are too different to solve it with optional parts.\n\n```javascript\n  $(selector).inputmask({ mask: [\"999.999\", \"aa-aa-aa\"]});\n```\n\n### aliases option\n\nFirst you have to create an alias definition (more examples can be found in jquery.inputmask.extensions.js)\n\n```javascript\n$.extend($.inputmask.defaults.aliases, {\n        'date': {\n            mask: \"d/m/y\"\n        },\n        'dd/mm/yyyy': {\n\t    alias: \"date\"\n\t}\n});\n```\n\nuse:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"date\");    //   => equals to    $(\"#date\").inputmask(\"d/m/y\");\n});\n```\n\nor use the dd/mm/yyyy alias of the date alias:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"dd/mm/yyyy\");   //    => equals to    $(\"#date\").inputmask(\"d/m/y\");\n});\n```\n\n### auto upper/lower- casing inputmask\n\nsee jquery.inputmask.extensions.js for an example how to define \"auto\"-casing in a definition (definition A)\ncasing can be null, \"upper\" or \"lower\"\n\n```javascript\n$(document).ready(function(){\n   $(\"#test\").inputmask(\"999-AAA\");    //   => 123abc ===> 123-ABC\n});\n```\n### getemptymask command\n\nreturn the default (empty) mask value\n\n\n```javascript\n$(document).ready(function(){\n   $(\"#test\").inputmask(\"999-AAA\");\n   var initialValue = $(\"#test\").inputmask(\"getemptymask\");  // initialValue  => \"___-___\"\n});\n```\n\n### onKeyUp / onKeyDown option\n\nUse this to do some extra processing of the input when certain keys are pressed.\nThis can be usefull when implementing an alias, ex. decimal alias, autofill the digits when pressing tab.\n\nsee jquery.inputmask.extensions.js for some examples\n\n### hasMaskedValue\n\nCheck wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n\n```javascript\n$(document).ready(function(){\n\tfunction validateMaskedValue(val){}\n\tfunction validateValue(val){}\n\n\tvar val = $(\"#test\").val();\n    if($(\"#test\").inputmask(\"hasMaskedValue\"))\n\t  validateMaskedValue(val); \n   else validateValue(val); \n});\n```\n### showMaskOnFocus\n\nShows the mask when the input gets focus. (default = true)\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{ showMaskOnFocus: true }); //default\n});\n```\n\nTo make sure no mask is visible on focus also set the showMaskOnHover to false.  Otherwise hovering with the mouse will set the mask and will stay on focus.\n\n### showMaskOnHover\n\nShows the mask when hovering the mouse. (default = true)\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{ showMaskOnHover: true }); //default\n});\n```\n### onKeyValidation\n\nCallback function is executed on every keyvalidation with the result as parameter.\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",\n\t\t\t{ onKeyValidation: function (result) {\n\t\t\t\t\t\t\t\tconsole.log(result);\n\t\t\t\t\t\t\t\t} });\n});\n```\n### isComplete\n\nVerify wheter the current value is complete or not.\n\n```javascript\n$(document).ready(function(){\n    if($(\"#ssn\").inputmask(\"isComplete\")){\n\t\t//do something\n\t}\n});\n```\n\n### showTooltip\n\nShow the current mask definition as a tooltip.\n\n```javascript\n  $(selector).inputmask({ mask: [\"999-999-9999 [x99999]\", \"+099 99 99 9999[9]-9999\"], showTooltip: true });\n```\n\n\n## Supported markup options\n### RTL attribute\n\n```html\n<input id=\"test\" dir=\"rtl\" />\n```\n### readonly attribute\n\n```html\n<input id=\"test\" readonly=\"readonly\" />\n```\n### disabled attribute\n\n```html\n<input id=\"test\" disabled=\"disabled\" />\n```\n\n### maxlength attribute\n\n```html\n<input id=\"test\" maxlength=\"4\" />\n```\n### data-inputmask attribute\n\nYou can also apply an inputmask by using the data-inputmask attribute.  In the attribute you specify the options wanted for the inputmask.\nThis gets parsed with $.parseJSON (for the moment), so be sure to use a welformed json-string without the {}.\n\n```html\n<input data-inputmask=\"'alias': 'date'\" />\n<input data-inputmask=\"'mask': '9', 'repeat': 10, 'greedy' : false\" />\n```\n```javascript\n$(document).ready(function(){\n    $(\":input\").inputmask();\n});\n```\n\n## Compiling with Google Closure Compiler\n\nFirst grab the sources from github.  In the root you type ant.\nA new folder dist is created with the minified and optimized js-files\n\n## .NET Nuget Package Install\n```html\nPM> Install-Package jQuery.InputMask\n```\n\nIn App_Start, BundleConfig.cs\n```c#\nbundles.Add(new ScriptBundle(\"~/bundles/inputmask\").Include(\n                        \"~/Scripts/jquery.inputmask/jquery.inputmask-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.extensions-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.date.extensions-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.numeric.extensions-{version}.js\"));\n```\n\nIn Layout\n```html\n@Scripts.Render(\"~/bundles/inputmask\")\n```\n\n\n# jquery.inputmask extensions\n\n## Alias definitions\n\n### date & datetime aliases\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"dd/mm/yyyy\");\n   $(\"#date\").inputmask(\"mm/dd/yyyy\");\n   $(\"#date\").inputmask(\"date\"); // alias for dd/mm/yyyy\n   $(\"#date\").inputmask(\"date\", {yearrange: { minyear: 1900, maxyear: 2099 }}); //specify year range\n});\n```\n\nThe date aliases take leapyears into account.  There is also autocompletion on day, month, year.\nFor example:\n\ninput:\t2/2/2012 \t\tresult: 02/02/2012  \ninput:  352012\t\t\tresult: 03/05/2012  \ninput:  3/530\t\t\tresult: 03/05/2030  \ninput:  ctrl rightarrow\t        result: the date from today  \n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"datetime\"); // 24h\n   $(\"#date\").inputmask(\"datetime12\"); // am/pm\n});\n```\n\n### numeric aliases\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\");\n   $(\"#numeric\").inputmask(\"decimal\", { allowMinus: false });\n   $(\"#numeric\").inputmask(\"integer\");\n});\n```\n\nRadixDance\n\nWith the decimal mask the caret will always jump to the integer part, until you type the radixpoint.  \nThere is autocompletion on tab with decimal numbers.  You can disable this behaviour by setting the skipRadixDance to true.\n\nDefine the radixpoint\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { radixPoint: \",\" });\n});\n```\nDefine the number of digits after the radixpoint\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { digits: 3 });\n});\n```\nWhen TAB out of the input the digits autocomplate with 0 if the digits option is given a valid number.\n\nGrouping support through:  autoGroup, groupSeparator, groupSize\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { radixPoint: \",\", autoGroup: true, groupSeparator: \".\", groupSize: 3 });\n});\n```\n\nAllow minus and/or plus symbol\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { allowMinus: false });\n   $(\"#numeric\").inputmask(\"integer\", { allowMinus: false, allowPlus: true });\n});\n```\n\n### other aliases\n\nAn ip adress alias for entering valid ip-addresses.\n\n```javascript\n$(document).ready(function(){\n   $(selector).inputmask(\"ip\");\n});\n```\n\nYou can find/modify/extend this alias in the jquery.inputmask.extensions.js\n\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.js",
    "content": "/**\n* @license Input Mask plugin for jquery\n* http://github.com/RobinHerbots/jquery.inputmask\n* Copyright (c) 2010 - 2013 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 2.2.42\n*/\n\n(function ($) {\n    if ($.fn.inputmask == undefined) {\n        $.inputmask = {\n            //options default\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                escapeChar: \"\\\\\",\n                mask: null,\n                oncomplete: $.noop, //executes when the mask is complete\n                onincomplete: $.noop, //executes when the mask is incomplete and focus is lost\n                oncleared: $.noop, //executes when the mask is cleared\n                repeat: 0, //repetitions of the mask\n                greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed\n                autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\n                clearMaskOnLostFocus: true,\n                insertMode: true, //insert the input or overwrite the input\n                clearIncomplete: false, //clear the incomplete input on blur\n                aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js\n                onKeyUp: $.noop, //override to implement autocomplete on certain keys for example\n                onKeyDown: $.noop, //override to implement autocomplete on certain keys for example\n                showMaskOnFocus: true, //show the mask-placeholder when the input has focus\n                showMaskOnHover: true, //show the mask-placeholder when hovering the empty input\n                onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts\n                skipOptionalPartCharacter: \" \", //a character which can be used to skip an optional part of a mask\n                showTooltip: false, //show the activemask as tooltip\n                //numeric basic properties\n                numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)\n                radixPoint: \"\", //\".\", // | \",\"\n                skipRadixDance: false, //disable radixpoint caret positioning\n                rightAlignNumerics: true, //align numerics to the right\n                //numeric basic properties\n                definitions: {\n                    '9': {\n                        validator: \"[0-9]\",\n                        cardinality: 1\n                    },\n                    'a': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451]\",\n                        cardinality: 1\n                    },\n                    '*': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n                        cardinality: 1\n                    }\n                },\n                keyCode: {\n                    ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,\n                    NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91\n                },\n                //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF\n                ignorables: [9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],\n                getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) {\n                    var calculatedLength = buffer.length;\n                    if (!greedy && repeat > 1) {\n                        calculatedLength += (buffer.length * (repeat - 1));\n                    }\n                    return calculatedLength;\n                }\n            },\n            val: $.fn.val, //store the original jquery val function\n            escapeRegex: function (str) {\n                var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n                return str.replace(new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim'), '\\\\$1');\n            }\n        };\n\n        $.fn.inputmask = function (fn, options) {\n            var opts = $.extend(true, {}, $.inputmask.defaults, options),\n                msie10 = navigator.userAgent.match(new RegExp(\"msie 10\", \"i\")) !== null,\n                iphone = navigator.userAgent.match(new RegExp(\"iphone\", \"i\")) !== null,\n                android = navigator.userAgent.match(new RegExp(\"android.*safari.*\", \"i\")) !== null,\n                pasteEvent = isInputEventSupported('paste') && !msie10 ? 'paste' : 'input',\n                android533,\n                masksets,\n                activeMasksetIndex = 0;\n\n            if (android) {\n                var browser = navigator.userAgent.match(/safari.*/i),\n                    version = parseInt(new RegExp(/[0-9]+/).exec(browser));\n                android533 = (version <= 533);\n                //android534 = (533 < version) && (version <= 534);\n            }\n            if (typeof fn === \"string\") {\n                switch (fn) {\n                    case \"mask\":\n                        //resolve possible aliases given by options\n                        resolveAlias(opts.alias, options);\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), 0).mask(this);\n                        });\n                    case \"unmaskedvalue\":\n                        var $input = $(this), input = this;\n                        masksets = $input.data('inputmask')['masksets'];\n                        activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        opts = $input.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).unmaskedvalue(this);\n                    case \"remove\":\n                        return this.each(function () {\n                            var $input = $(this), input = this;\n                            setTimeout(function () {\n                                if ($input.data('inputmask')) {\n                                    masksets = $input.data('inputmask')['masksets'];\n                                    activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                                    opts = $input.data('inputmask')['opts'];\n                                    //writeout the unmaskedvalue\n                                    input._valueSet(maskScope(masksets, activeMasksetIndex).unmaskedvalue($input, true));\n                                    //clear data\n                                    $input.removeData('inputmask');\n                                    //unbind all events\n                                    $input.unbind(\".inputmask\");\n                                    $input.removeClass('focus.inputmask');\n                                    //restore the value property\n                                    var valueProperty;\n                                    if (Object.getOwnPropertyDescriptor)\n                                        valueProperty = Object.getOwnPropertyDescriptor(input, \"value\");\n                                    if (valueProperty && valueProperty.get) {\n                                        if (input._valueGet) {\n                                            Object.defineProperty(input, \"value\", {\n                                                get: input._valueGet,\n                                                set: input._valueSet\n                                            });\n                                        }\n                                    } else if (document.__lookupGetter__ && input.__lookupGetter__(\"value\")) {\n                                        if (input._valueGet) {\n                                            input.__defineGetter__(\"value\", input._valueGet);\n                                            input.__defineSetter__(\"value\", input._valueSet);\n                                        }\n                                    }\n                                    delete input._valueGet;\n                                    delete input._valueSet;\n                                }\n                            }, 0);\n                        });\n                        break;\n                    case \"getemptymask\": //return the default (empty) mask value, usefull for setting the default value in validation\n                        if (this.data('inputmask')) {\n                            masksets = this.data('inputmask')['masksets'];\n                            activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                            return masksets[activeMasksetIndex]['_buffer'].join('');\n                        }\n                        else return \"\";\n                    case \"hasMaskedValue\": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n                        return this.data('inputmask') ? !this.data('inputmask')['opts'].autoUnmask : false;\n                    case \"isComplete\":\n                        masksets = this.data('inputmask')['masksets'];\n                        activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                        opts = this.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).isComplete(this[0]._valueGet().split(''));\n                    default:\n                        //check if the fn is an alias\n                        if (!resolveAlias(fn, options)) {\n                            //maybe fn is a mask so we try\n                            //set mask\n                            opts.mask = fn;\n                        }\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                        });\n\n                        break;\n                }\n            } else if (typeof fn == \"object\") {\n                opts = $.extend(true, {}, $.inputmask.defaults, fn);\n\n                resolveAlias(opts.alias, fn); //resolve aliases\n                masksets = generateMaskSets();\n\n                return this.each(function () {\n                    maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                });\n            } else if (fn == undefined) {\n                //look for data-inputmask atribute - the attribute should only contain optipns\n                return this.each(function () {\n                    var attrOptions = $(this).attr(\"data-inputmask\");\n                    if (attrOptions && attrOptions != \"\") {\n                        try {\n                            attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"');\n                            var dataoptions = $.parseJSON(\"{\" + attrOptions + \"}\");\n                            opts = $.extend(true, {}, $.inputmask.defaults, options);\n                            $.extend(true, opts, dataoptions);\n                            resolveAlias(opts.alias, dataoptions);\n                            opts.alias = undefined;\n                            $(this).inputmask(opts);\n                        } catch (ex) { } //need a more relax parseJSON\n                    }\n                });\n            }\n\n            //helper functions\n            function isInputEventSupported(eventName) {\n                var el = document.createElement('input'),\n\t\t        eventName = 'on' + eventName,\n\t\t        isSupported = (eventName in el);\n                if (!isSupported) {\n                    el.setAttribute(eventName, 'return;');\n                    isSupported = typeof el[eventName] == 'function';\n                }\n                el = null;\n                return isSupported;\n            }\n            function resolveAlias(aliasStr, options) {\n                var aliasDefinition = opts.aliases[aliasStr];\n                if (aliasDefinition) {\n                    if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias); //alias is another alias\n                    $.extend(true, opts, aliasDefinition);  //merge alias definition in the options\n                    $.extend(true, opts, options);  //reapply extra given options\n                    return true;\n                }\n                return false;\n            }\n            function getMaskTemplate(mask) {\n                var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;\n                if (mask.length == 1 && greedy == false) { opts.placeholder = \"\"; } //hide placeholder with single non-greedy mask\n                var singleMask = $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    }\n                    else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var i = 0; i < maskdef.cardinality; i++) {\n                                outElem.push(getPlaceHolder(outCount + i));\n                            }\n                        } else {\n                            outElem.push(element);\n                            escaped = false;\n                        }\n                        outCount += outElem.length;\n                        return outElem;\n                    }\n                });\n\n                //allocate repetitions\n                var repeatedMask = singleMask.slice();\n                for (var i = 1; i < repeat && greedy; i++) {\n                    repeatedMask = repeatedMask.concat(singleMask.slice());\n                }\n\n                return { \"mask\": repeatedMask, \"repeat\": repeat, \"greedy\": greedy };\n            }\n            //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}\n            function getTestingChain(mask) {\n                var isOptional = false, escaped = false;\n                var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated\n\n                return $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    } else if (element == opts.optionalmarker.start && !escaped) {\n                        isOptional = true;\n                        newBlockMarker = true;\n                    }\n                    else if (element == opts.optionalmarker.end && !escaped) {\n                        isOptional = false;\n                        newBlockMarker = true;\n                    }\n                    else {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            var prevalidators = maskdef[\"prevalidator\"], prevalidatorsL = prevalidators ? prevalidators.length : 0;\n                            for (var i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator[\"validator\"], cardinality = prevalidator[\"cardinality\"];\n                                outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp(\".\"), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                                if (isOptional == true) //reset newBlockMarker\n                                    newBlockMarker = false;\n                            }\n                            outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp(\".\"), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                        } else {\n                            outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element });\n                            escaped = false;\n                        }\n                        //reset newBlockMarker\n                        newBlockMarker = false;\n                        return outElem;\n                    }\n                });\n            }\n            function generateMaskSets() {\n                var ms = [];\n                var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates\n                function markOptional(maskPart) { //needed for the clearOptionalTail functionality\n                    return opts.optionalmarker.start + maskPart + opts.optionalmarker.end;\n                }\n                function splitFirstOptionalEndPart(maskPart) {\n                    var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            optionalStartMarkers++;\n                        }\n                        if (maskPart.charAt(i) == opts.optionalmarker.end) {\n                            optionalEndMarkers++;\n                        }\n                        if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers)\n                            break;\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function splitFirstOptionalStartPart(maskPart) {\n                    var mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            break;\n                        }\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function generateMask(maskPrefix, maskPart) {\n                    var maskParts = splitFirstOptionalEndPart(maskPart);\n                    var newMask, maskTemplate;\n\n                    var masks = splitFirstOptionalStartPart(maskParts[0]);\n                    if (masks.length > 1) {\n                        newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional\n                            generateMask(maskPrefix + masks[0], masks[1] + maskParts[1]);\n                        }\n                        if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) {\n                            generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1]);\n                            generateMask(maskPrefix + masks[0], maskParts[1]);\n                        }\n                    }\n                    else {\n                        newMask = maskPrefix + maskParts;\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                    }\n\n                }\n                if ($.isArray(opts.mask)) {\n                    $.each(opts.mask, function (ndx, lmnt) {\n                        generateMask(\"\", lmnt.toString());\n                    });\n                } else generateMask(\"\", opts.mask.toString());\n\n                return ms;\n            }\n            function getPlaceHolder(pos) {\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n\n            function maskScope(masksets, activeMasksetIndex) {\n                //maskset helperfunctions\n\n                function getActiveMaskSet() {\n                    return masksets[activeMasksetIndex];\n                }\n\n                function getActiveTests() {\n                    return getActiveMaskSet()['tests'];\n                }\n\n                function getActiveBufferTemplate() {\n                    return getActiveMaskSet()['_buffer'];\n                }\n\n                function getActiveBuffer() {\n                    return getActiveMaskSet()['buffer'];\n                }\n\n                function isValid(pos, c, strict, isRTL) { //strict true ~ no correction or autofill\n                    strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions \n\n                    function _isValid(position, activeMaskset) {\n                        var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset[\"buffer\"];\n                        for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) {\n                            chrs += getBufferElement(buffer, testPos - (i - 1));\n                        }\n\n                        if (c) {\n                            chrs += c;\n                        }\n\n                        //return is false or a json object => { pos: ??, c: ??} or true\n                        return activeMaskset['tests'][testPos].fn != null ? activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) : false;\n                    }\n\n                    if (strict) {\n                        var result = _isValid(pos, getActiveMaskSet()); //only check validity in current mask when validating strict\n                        if (result === true) {\n                            result = { \"pos\": pos }; //always take a possible corrected maskposition into account\n                        }\n                        return result;\n                    }\n\n                    var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        activeMasksetIndex = index;\n\n                        var maskPos = pos;\n                        if (currentActiveMasksetIndex != activeMasksetIndex && !isMask(pos)) {\n                            if (c == activeMaskset['_buffer'][maskPos] || c == opts.skipOptionalPartCharacter) { //match non-mask item\n                                results.push({ \"activeMasksetIndex\": index, \"result\": { \"refresh\": true, c: activeMaskset['_buffer'][maskPos] } }); //new command hack only rewrite buffer\n                                activeMaskset['lastValidPosition'] = maskPos;\n                                return false;\n                            } else activeMaskset['lastValidPosition'] = isRTL ? getMaskLength() + 1 : -1; //mark mask as validated and invalid\n                            //maskPos = isRTL ? seekPrevious(pos) : seekNext(pos);\n                        }\n                        if ((activeMaskset['lastValidPosition'] == undefined\n                                && maskPos == (isRTL ? seekPrevious(getMaskLength()) : seekNext(-1))\n                        )\n                            || (isRTL || opts.numericInput)\n                            ? activeMaskset['lastValidPosition'] <= opts.numericInput ? getMaskLength() : seekNext(maskPos)\n                            : activeMaskset['lastValidPosition'] >= seekPrevious(maskPos)) {\n                            if (maskPos >= 0 && maskPos < getMaskLength()) {\n                                result = _isValid(maskPos, activeMaskset);\n                                if (result !== false) {\n                                    if (result === true) {\n                                        result = { \"pos\": maskPos }; //always take a possible corrected maskposition into account\n                                    }\n                                    var newValidPosition = result.pos || maskPos;\n                                    if (activeMaskset['lastValidPosition'] == undefined ||\n                                        (isRTL ? (opts.greedy ? activeMaskset['lastValidPosition'] > newValidPosition : newValidPosition == getActiveBuffer().length - 1)\n                                            : activeMaskset['lastValidPosition'] < newValidPosition))\n                                        activeMaskset['lastValidPosition'] = newValidPosition; //set new position from isValid\n                                } else activeMaskset['lastValidPosition'] = isRTL ? pos == getMaskLength() ? undefined : seekNext(pos) : pos == 0 ? undefined : seekPrevious(pos); //autocorrect validposition from backspace etc  \t\n                                results.push({ \"activeMasksetIndex\": index, \"result\": result });\n                            }\n                        }\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex\n\n                    return results; //return results of the multiple mask validations\n                }\n\n                function determineActiveMasksetIndex(isRTL) {\n                    var currentMasksetIndex = activeMasksetIndex,\n                        highestValid = { \"activeMasksetIndex\": 0, \"lastValidPosition\": isRTL ? getMaskLength() + 1 : -1 };\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        if (activeMaskset['lastValidPosition'] != undefined) {\n                            if ((isRTL || opts.numericInput) ? (activeMaskset['lastValidPosition'] < highestValid['lastValidPosition']) : (activeMaskset['lastValidPosition'] > highestValid['lastValidPosition'])) {\n                                highestValid[\"activeMasksetIndex\"] = index;\n                                highestValid[\"lastValidPosition\"] = activeMaskset['lastValidPosition'];\n                            }\n                        }\n                    });\n                    activeMasksetIndex = highestValid[\"activeMasksetIndex\"];\n                    if (currentMasksetIndex != activeMasksetIndex) {\n                        if (isRTL) {\n                            clearBuffer(getActiveBuffer(), 0, seekPrevious(highestValid[\"lastValidPosition\"]));\n                        } else {\n                            clearBuffer(getActiveBuffer(), seekNext(highestValid[\"lastValidPosition\"]), getMaskLength());\n                        }\n                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                    }\n                }\n\n                function isMask(pos) {\n                    var testPos = determineTestPosition(pos);\n                    var test = getActiveTests()[testPos];\n\n                    return test != undefined ? test.fn : false;\n                }\n\n                function determineTestPosition(pos) {\n                    return pos % getActiveTests().length;\n                }\n\n\n\n                function getMaskLength() {\n                    return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts);\n                }\n\n                //pos: from position\n\n                function seekNext(pos) {\n                    var maskL = getMaskLength();\n                    if (pos >= maskL) return maskL;\n                    var position = pos;\n                    while (++position < maskL && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                //pos: from position\n\n                function seekPrevious(pos) {\n                    var position = pos;\n                    if (position <= 0) return 0;\n\n                    while (--position > 0 && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                function setBufferElement(buffer, position, element, autoPrepare, isRTL) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position, isRTL);\n\n                    var test = getActiveTests()[determineTestPosition(position)];\n                    var elem = element;\n                    if (elem != undefined) {\n                        switch (test.casing) {\n                            case \"upper\":\n                                elem = element.toUpperCase();\n                                break;\n                            case \"lower\":\n                                elem = element.toLowerCase();\n                                break;\n                        }\n                    }\n\n                    buffer[position] = elem;\n                }\n\n                function getBufferElement(buffer, position, autoPrepare) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position);\n                    return buffer[position];\n                }\n\n                //needed to handle the non-greedy mask repetitions\n\n                function prepareBuffer(buffer, position, isRTL) {\n                    var j;\n                    if (isRTL) {\n                        while (position < 0 && buffer.length < getMaskLength()) {\n                            j = getActiveBufferTemplate().length - 1;\n                            position = getActiveBufferTemplate().length;\n                            while (getActiveBufferTemplate()[j] !== undefined) {\n                                buffer.unshift(getActiveBufferTemplate()[j--]);\n                            }\n                        }\n                    } else {\n                        while (buffer[position] == undefined && buffer.length < getMaskLength()) {\n                            j = 0;\n                            while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer\n                                buffer.push(getActiveBufferTemplate()[j++]);\n                            }\n                        }\n                    }\n\n                    return position;\n                }\n\n                function writeBuffer(input, buffer, caretPos) {\n                    input._valueSet(buffer.join(''));\n                    if (caretPos != undefined) {\n                        caret(input, caretPos);\n                    }\n                }\n\n                ;\n\n                function clearBuffer(buffer, start, end) {\n                    for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {\n                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));\n                    }\n                }\n\n                ;\n\n                function setReTargetPlaceHolder(buffer, pos) {\n                    var testPos = determineTestPosition(pos);\n                    setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos));\n                }\n\n                function checkVal(input, writeOut, strict, nptvl) {\n                    var isRTL = $(input).data('inputmask')['isRTL'],\n                        inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet(), isRTL).split('');\n\n                    $.each(masksets, function (ndx, ms) {\n                        ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                        ms[\"lastValidPosition\"] = undefined;\n                        ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                    });\n                    if (strict !== true) activeMasksetIndex = 0;\n                    //caret(input, getActiveMaskSet()[\"p\"]);\n\n                    if (isRTL && !opts.numericInput)\n                        inputValue = inputValue.reverse();\n\n                    var ml = getMaskLength();\n                    $.each(inputValue, function (ndx, charCode) {\n                        var index = isRTL ? (opts.numericInput ? ml : ml - ndx - 1) : ndx;\n                        if (isMask(isRTL ? (opts.numericInput ? seekPrevious(ml) : ml - ndx - 1) : ndx)\n                        || (strict !== true && charCode != getBufferElement(getActiveBufferTemplate(), index, true))) {\n                            $(input).trigger(\"keypress\", [true, charCode.charCodeAt(0), writeOut, strict, index]);\n                        }\n                    });\n                    if (strict === true)\n                        getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"p\"]) : seekPrevious(getActiveMaskSet()[\"p\"]);\n                }\n\n                function escapeRegex(str) {\n                    return $.inputmask.escapeRegex.call(this, str);\n                }\n\n                function truncateInput(inputValue, rtl) {\n                    return rtl ? inputValue.replace(new RegExp(\"^(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*\"), \"\") : inputValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*$\"), \"\");\n                }\n\n                function clearOptionalTail(input) {\n                    var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos;\n                    if ($(input).data('inputmask')['isRTL']) {\n                        for (var pos = 0; pos <= tmpBuffer.length - 1; pos++) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.splice(0, 1);\n                                else break;\n                            } else break;\n                        }\n                    } else {\n                        for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.pop();\n                                else break;\n                            } else break;\n                        }\n                    }\n                    writeBuffer(input, tmpBuffer);\n                }\n\n                //functionality fn\n                this.unmaskedvalue = function ($input, skipDatepickerCheck) {\n                    return unmaskedvalue($input, skipDatepickerCheck);\n                };\n                function unmaskedvalue($input, skipDatepickerCheck) {\n                    var input = $input[0];\n                    if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {\n                        checkVal(input, false, true);\n                        return $.map(getActiveBuffer(), function (element, index) {\n                            return isMask(index) && isValid(index, element, true) ? element : null;\n                        }).join('');\n                    } else {\n                        return input._valueGet();\n                    }\n                }\n\n                var caretSavePoint;\n\n                function caret(input, begin, end) {\n                    var npt = input.jquery && input.length > 0 ? input[0] : input, range;\n                    if (typeof begin == 'number') {\n                        if (!$(input).is(':visible')) {\n                            return;\n                        }\n                        end = (typeof end == 'number') ? end : begin;\n                        if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode\n                        if (npt.setSelectionRange) {\n                            if (android) {\n                                setTimeout(function () {\n                                    npt.selectionStart = begin;\n                                    npt.selectionEnd = android ? begin : end;\n                                }, 10);\n                                caretSavePoint = { \"begin\": begin, \"end\": end };\n                            } else {\n                                npt.selectionStart = begin;\n                                npt.selectionEnd = end;\n                            }\n                        } else if (npt.createTextRange) {\n                            range = npt.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd('character', end);\n                            range.moveStart('character', begin);\n                            range.select();\n                        }\n                    } else {\n                        if (!$(input).is(':visible')) {\n                            return { \"begin\": 0, \"end\": 0 };\n                        }\n                        if (npt.setSelectionRange) {\n                            begin = npt.selectionStart;\n                            end = npt.selectionEnd;\n                        } else if (document.selection && document.selection.createRange) {\n                            range = document.selection.createRange();\n                            begin = 0 - range.duplicate().moveStart('character', -100000);\n                            end = begin + range.text.length;\n                        }\n                        return { \"begin\": begin, \"end\": end };\n                    }\n                };\n\n                this.isComplete = function (buffer) {\n                    return isComplete(buffer);\n                };\n                function isComplete(buffer) {\n                    var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (ndx, ms) {\n                        activeMasksetIndex = ndx;\n                        var aml = seekPrevious(getMaskLength());\n                        if (ms[\"lastValidPosition\"] != undefined && ms[\"lastValidPosition\"] >= highestValidPosition && ms[\"lastValidPosition\"] == aml) {\n                            var msComplete = true;\n                            for (var i = 0; i <= aml; i++) {\n                                var mask = isMask(i), testPos = determineTestPosition(i);\n                                if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) {\n                                    msComplete = false;\n                                    break;\n                                }\n                            }\n                            complete = complete || msComplete;\n                            if (complete) //break loop\n                                return false;\n                        }\n                        highestValidPosition = ms[\"lastValidPosition\"];\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset\n                    return complete;\n                }\n                this.mask = function (el) {\n                    var $input = $(el);\n                    if (!$input.is(\":input\")) return;\n\n                    //store tests & original buffer in the input element - used to get the unmasked value\n                    $input.data('inputmask', {\n                        'masksets': masksets,\n                        'activeMasksetIndex': activeMasksetIndex,\n                        'opts': opts,\n                        'isRTL': false\n                    });\n\n                    //show tooltip\n                    if (opts.showTooltip) {\n                        $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                    }\n\n                    //correct greedy setting if needed\n                    getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0;\n\n                    //handle maxlength attribute\n                    var maxLength = $input.prop('maxLength');\n                    if (getMaskLength() > maxLength && maxLength > -1) { //FF sets no defined max length to -1 \n                        if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength;\n                        if (getActiveMaskSet()['greedy'] == false) {\n                            getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length);\n                        }\n                        $input.prop('maxLength', getMaskLength() * 2);\n                    }\n\n                    patchValueProperty(el);\n\n                    //init vars\n                    getActiveMaskSet()[\"undoBuffer\"] = el._valueGet();\n                    var skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        ignorable = false,\n                        isRTL = false;\n                    if (el.dir == \"rtl\" || opts.numericInput) {\n                        if (el.dir == \"rtl\" || (opts.numericInput && opts.rightAlignNumerics))\n                            $input.css(\"text-align\", \"right\");\n                        el.dir = \"ltr\";\n                        $input.removeAttr(\"dir\");\n                        var inputData = $input.data('inputmask');\n                        inputData['isRTL'] = true;\n                        $input.data('inputmask', inputData);\n                        isRTL = true;\n                    }\n\n                    //unbind all events - to make sure that no other mask will interfere when re-masking\n                    $input.unbind(\".inputmask\");\n                    $input.removeClass('focus.inputmask');\n                    //bind events\n                    $input.bind(\"mouseenter.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer());\n                            }\n                        }\n                    }).bind(\"blur.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer();\n                        $input.removeClass('focus.inputmask');\n                        if (nptValue != getActiveMaskSet()[\"undoBuffer\"]) {\n                            $input.change();\n                        }\n                        if (opts.clearMaskOnLostFocus && nptValue != '') {\n                            if (nptValue == getActiveBufferTemplate().join(''))\n                                input._valueSet('');\n                            else { //clearout optional tail of the mask\n                                clearOptionalTail(input);\n                            }\n                        }\n                        if (!isComplete(buffer)) {\n                            $input.trigger(\"incomplete\");\n                            if (opts.clearIncomplete) {\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                                activeMasksetIndex = 0;\n                                if (opts.clearMaskOnLostFocus)\n                                    input._valueSet('');\n                                else {\n                                    buffer = getActiveBufferTemplate().slice();\n                                    writeBuffer(input, buffer);\n                                }\n                            }\n                        }\n                    }).bind(\"focus.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet();\n                        if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            }\n                        }\n                        $input.addClass('focus.inputmask');\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                    }).bind(\"mouseleave.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (opts.clearMaskOnLostFocus) {\n                            if (!$input.hasClass('focus.inputmask')) {\n                                if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '')\n                                    input._valueSet('');\n                                else { //clearout optional tail of the mask\n                                    clearOptionalTail(input);\n                                }\n                            }\n                        }\n                    }).bind(\"click.inputmask\", function () {\n                        var input = this;\n                        setTimeout(function () {\n                            var selectedCaret = caret(input), buffer = getActiveBuffer();\n                            if (selectedCaret.begin == selectedCaret.end) {\n                                var clickPosition = selectedCaret.begin,\n                                    lvp = getActiveMaskSet()[\"lastValidPosition\"],\n                                    lastPosition;\n\n                                determineInputDirection(input, selectedCaret);\n                                if (isRTL) {\n                                    if (opts.numericInput) {\n                                        lastPosition = opts.skipRadixDance === false && opts.radixPoint != \"\" && $.inArray(opts.radixPoint, buffer) != -1 ? $.inArray(opts.radixPoint, buffer) : getMaskLength();\n                                    } else {\n                                        lastPosition = seekPrevious((lvp == undefined ? getMaskLength() : lvp) + 1);\n                                    }\n                                    caret(input, clickPosition > lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                } else {\n                                    lastPosition = seekNext(lvp == undefined ? -1 : lvp);\n                                    caret(input, clickPosition < lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                }\n                            }\n                        }, 0);\n                    }).bind('dblclick.inputmask', function () {\n                        var input = this;\n                        if (getActiveMaskSet()[\"lastValidPosition\"] != undefined) {\n                            setTimeout(function () {\n                                isRTL ?\n                                    caret(input, seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]), getMaskLength()) :\n                                    caret(input, 0, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n                            }, 0);\n                        }\n                    }).bind(\"keydown.inputmask\", keydownEvent\n                    ).bind(\"keypress.inputmask\", keypressEvent\n                    ).bind(\"keyup.inputmask\", keyupEvent\n                    ).bind(pasteEvent + \".inputmask dragdrop.inputmask drop.inputmask\", function () {\n                        var input = this, $input = $(input);\n                        setTimeout(function () {\n                            checkVal(input, true, false);\n                            if (isComplete(getActiveBuffer()))\n                                $input.trigger(\"complete\");\n                            $input.click();\n                        }, 0);\n                    }).bind('setvalue.inputmask', function () {\n                        var input = this;\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        checkVal(input, true);\n                        if (input._valueGet() == getActiveBufferTemplate().join(''))\n                            input._valueSet('');\n                    }).bind('complete.inputmask', opts.oncomplete)\n                        .bind('incomplete.inputmask', opts.onincomplete)\n                        .bind('cleared.inputmask', opts.oncleared);\n\n                    //apply mask\n                    checkVal(el, true, false);\n                    // Wrap document.activeElement in a try/catch block since IE9 throw \"Unspecified error\" if document.activeElement is undefined when we are in an IFrame.\n                    var activeElement;\n                    try {\n                        activeElement = document.activeElement;\n                    } catch (e) {\n                    }\n                    if (activeElement === el) { //position the caret when in focus\n                        $input.addClass('focus.inputmask');\n                        caret(el, getActiveMaskSet()[\"lastValidPosition\"]);\n                    } else if (opts.clearMaskOnLostFocus) {\n                        if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) {\n                            el._valueSet('');\n                        } else {\n                            clearOptionalTail(el);\n                        }\n                    }\n\n                    installEventRuler(el);\n\n                    //private functions\n\n                    function installEventRuler(npt) {\n                        var events = $._data(npt).events;\n\n                        $.each(events, function (eventType, eventHandlers) {\n                            $.each(eventHandlers, function (ndx, eventHandler) {\n                                if (eventHandler.namespace == \"inputmask\") {\n                                    var handler = eventHandler.handler;\n                                    eventHandler.handler = function (e) {\n                                        if (this.readOnly || this.disabled)\n                                            e.preventDefault;\n                                        else\n                                            return handler.apply(this, arguments);\n                                    };\n                                }\n                            });\n                        });\n                    }\n\n                    function patchValueProperty(npt) {\n                        var valueProperty;\n                        if (Object.getOwnPropertyDescriptor)\n                            valueProperty = Object.getOwnPropertyDescriptor(npt, \"value\");\n                        if (valueProperty && valueProperty.get) {\n                            if (!npt._valueGet) {\n\n                                npt._valueGet = valueProperty.get;\n                                npt._valueSet = valueProperty.set;\n\n                                Object.defineProperty(npt, \"value\", {\n                                    get: function () {\n                                        var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                            activeMasksetIndex = inputData['activeMasksetIndex'];\n                                        return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                    },\n                                    set: function (value) {\n                                        this._valueSet(value);\n                                        $(this).triggerHandler('setvalue.inputmask');\n                                    }\n                                });\n                            }\n                        } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                            if (!npt._valueGet) {\n                                npt._valueGet = npt.__lookupGetter__(\"value\");\n                                npt._valueSet = npt.__lookupSetter__(\"value\");\n\n                                npt.__defineGetter__(\"value\", function () {\n                                    var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                        activeMasksetIndex = inputData['activeMasksetIndex'];\n                                    return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                });\n                                npt.__defineSetter__(\"value\", function (value) {\n                                    this._valueSet(value);\n                                    $(this).triggerHandler('setvalue.inputmask');\n                                });\n                            }\n                        } else {\n                            if (!npt._valueGet) {\n                                npt._valueGet = function () { return this.value; };\n                                npt._valueSet = function (value) { this.value = value; };\n                            }\n                            if ($.fn.val.inputmaskpatch != true) {\n                                $.fn.val = function () {\n                                    if (arguments.length == 0) {\n                                        var $self = $(this);\n                                        if ($self.data('inputmask')) {\n                                            if ($self.data('inputmask')['opts'].autoUnmask)\n                                                return $self.inputmask('unmaskedvalue');\n                                            else {\n                                                var result = $.inputmask.val.apply($self);\n                                                var inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                                    activeMasksetIndex = inputData['activeMasksetIndex'];\n                                                return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';\n                                            }\n                                        } else return $.inputmask.val.apply($self);\n                                    } else {\n                                        var args = arguments;\n                                        return this.each(function () {\n                                            var $self = $(this);\n                                            var result = $.inputmask.val.apply($self, args);\n                                            if ($self.data('inputmask')) $self.triggerHandler('setvalue.inputmask');\n                                            return result;\n                                        });\n                                    }\n                                };\n                                $.extend($.fn.val, {\n                                    inputmaskpatch: true\n                                });\n                            }\n                        }\n                    }\n\n                    function determineInputDirection(input, pos) {\n                        //set input direction according the position to the radixPoint\n                        if (opts.numericInput && opts.radixPoint != \"\" && opts.skipRadixDance === false) {\n                            var nptStr = input._valueGet();\n                            var radixPosition = nptStr.indexOf(opts.radixPoint);\n                            isRTL = pos.begin <= radixPosition || pos.end <= radixPosition || radixPosition == -1;\n                        }\n                    }\n\n                    //shift chars to left from start to end and put c at end position if defined\n\n                    function shiftL(start, end, c) {\n                        var buffer = getActiveBuffer();\n                        while (!isMask(start) && start - 1 >= 0) start--; //jumping over nonmask position\n                        for (var i = start; i < end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                setReTargetPlaceHolder(buffer, i);\n                                var j = seekNext(i);\n                                var p = getBufferElement(buffer, j);\n                                if (p != getPlaceHolder(j)) {\n                                    if (j < getMaskLength() && isValid(i, p, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n                                        setBufferElement(buffer, i, getBufferElement(buffer, j), true, isRTL);\n                                        if (j < end) {\n                                            setReTargetPlaceHolder(buffer, j); //cleanup next position\n                                        }\n                                    } else {\n                                        if (isMask(i))\n                                            break;\n                                    }\n                                } //else if (c == undefined) break;\n                            } else {\n                                setReTargetPlaceHolder(buffer, i);\n                            }\n                        }\n                        if (c != undefined)\n                            setBufferElement(buffer, isRTL ? end : seekPrevious(end), c);\n\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return start; //return the used start position\n                    }\n\n                    function shiftR(start, end, c, full) { //full => behave like a push right ~ do not stop on placeholders\n                        var buffer = getActiveBuffer();\n                        for (var i = start; i <= end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                var t = getBufferElement(buffer, i);\n                                setBufferElement(buffer, i, c, true, isRTL);\n                                if (t != getPlaceHolder(i)) {\n                                    var j = seekNext(i);\n                                    if (j < getMaskLength()) {\n                                        if (isValid(j, t, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def)\n                                            c = t;\n                                        else {\n                                            if (isMask(j))\n                                                break;\n                                            else c = t;\n                                        }\n                                    } else break;\n                                } else {\n                                    c = t;\n                                    if (full !== true) break;\n                                }\n                            } else\n                                setReTargetPlaceHolder(buffer, i);\n                        }\n                        var lengthBefore = buffer.length;\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return end - (lengthBefore - buffer.length); //return new start position\n                    }\n\n                    ;\n\n                    function keydownEvent(e) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        skipKeyPressEvent = false;\n\n                        var input = this, k = e.keyCode, pos = caret(input);\n                        determineInputDirection(input, pos);\n\n                        //backspace, delete, and escape get special treatment\n                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete\n                            e.preventDefault(); //stop default action but allow propagation\n                            var beginPos = pos.begin;\n                            if (pos.begin == 0 && pos.end == getMaskLength()) {\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                            } else if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) { //partial selection\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                var ml = getMaskLength();\n                                if (opts.greedy == false) {\n                                    isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                } else {\n                                    for (var i = pos.begin; i < pos.end; i++) {\n                                        if (isMask(i))\n                                            isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                    }\n                                }\n                                checkVal(input, false, true, getActiveBuffer());\n                            } else {\n                                $.each(masksets, function (ndx, ms) {\n                                    activeMasksetIndex = ndx;\n                                    beginPos = android533 ? pos.end : pos.begin;\n                                    var buffer = getActiveBuffer(), firstMaskPos = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1),\n                                        maskL = getMaskLength();\n                                    if (k == opts.keyCode.DELETE) { //handle delete\n                                        if (isRTL ? beginPos > firstMaskPos : beginPos < firstMaskPos)\n                                            beginPos = firstMaskPos;\n                                        if (beginPos < maskL) {\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : seekNext(beginPos);\n                                                beginPos = shiftL(beginPos, maskL);\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        }\n                                    } else if (k == opts.keyCode.BACKSPACE) { //handle backspace\n                                        if (isRTL ? beginPos <= firstMaskPos : beginPos > firstMaskPos) {\n                                            beginPos -= 1;\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = shiftR(0, (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : beginPos - 1, getPlaceHolder(beginPos), true);\n                                                beginPos++;\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = buffer[beginPos + 1] == opts.radixPoint ? beginPos + 1 : seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        } else if (activeMasksetIndex > 0) { //retry other masks\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                            getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                            getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                            //init first \n                                            activeMasksetIndex = 0;\n                                            getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                                            getActiveMaskSet()[\"p\"] = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1);\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                        }\n                                    }\n                                });\n\n                            }\n\n                            determineActiveMasksetIndex(isRTL);\n                            writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            if (input._valueGet() == getActiveBufferTemplate().join(''))\n                                $(input).trigger('cleared');\n\n                            if (opts.showTooltip) { //update tooltip\n                                $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                            }\n                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch\n                            setTimeout(function () {\n                                var caretPos = isRTL ? getActiveMaskSet()[\"lastValidPosition\"] : seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n                                if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;\n                                caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);\n                            }, 0);\n                        } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up\n                            caret(input, 0, e.shiftKey ? pos.begin : 0);\n                        } else if (k == opts.keyCode.ESCAPE) { //escape\n                            input._valueSet(getActiveMaskSet()[\"undoBuffer\"]);\n                            checkVal(input, true, true);\n                        } else if (k == opts.keyCode.INSERT) { //insert\n                            opts.insertMode = !opts.insertMode;\n                            caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);\n                        } else if (opts.insertMode == false && !e.shiftKey) {\n                            if (k == opts.keyCode.RIGHT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin);\n                                }, 0);\n                            } else if (k == opts.keyCode.LEFT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin - 1);\n                                }, 0);\n                            }\n                        }\n\n                        opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown\n                        ignorable = $.inArray(k, opts.ignorables) != -1;\n                    }\n\n                    function keypressEvent(e, checkval, k, writeOut, strict, ndx) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        if (k == undefined && skipKeyPressEvent) return false;\n                        skipKeyPressEvent = true;\n\n                        var input = this, $input = $(input);\n\n                        e = e || window.event;\n                        var k = k || e.which || e.charCode || e.keyCode,\n                            c = String.fromCharCode(k);\n\n                        if ((e.ctrlKey || e.metaKey || ignorable) && checkval !== true) {\n                            return true;\n                        } else {\n                            if (k) {\n                                var pos, results, result;\n                                if (checkval) {\n                                    var pcaret = strict ? ndx : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]);\n                                    pos = { begin: pcaret, end: pcaret };\n                                } else {\n                                    pos = caret(input);\n                                }\n\n                                //clear possible selection\n                                var initialIndex = activeMasksetIndex, selectionCleared = false;\n                                $.each(masksets, function (ndx, lmnt) {\n                                    activeMasksetIndex = ndx;\n                                    getActiveMaskSet()[\"undoBuffer\"] = getActiveBuffer().join('');\n                                    if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) {\n                                        var posend = pos.end < getMaskLength() ? pos.end : getMaskLength();\n                                        clearBuffer(getActiveBuffer(), pos.begin, posend);\n                                        var ml = getMaskLength();\n                                        if (opts.greedy == false) {\n                                            isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                        } else {\n                                            for (var i = pos.begin; i < posend; i++) {\n                                                if (isMask(i))\n                                                    isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                            }\n                                        }\n                                        selectionCleared = true;\n                                    }\n                                });\n                                activeMasksetIndex = initialIndex; //restore index\n\n                                if (isRTL) {\n                                    var p = seekPrevious(selectionCleared ? pos.begin : pos.end);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                var maskL = getMaskLength(); //update masklength to include possible groupSeparator offset\n                                                var firstMaskPos = seekNext(-1), firstUnmaskedPosition = firstMaskPos;\n                                                if (opts.insertMode == true) {\n                                                    if (getActiveMaskSet()['greedy'] == true) {\n                                                        var bfrClone = buffer.slice();\n                                                        while (getBufferElement(bfrClone, firstUnmaskedPosition, true) != getPlaceHolder(firstUnmaskedPosition) && firstUnmaskedPosition <= p) {\n                                                            firstUnmaskedPosition = firstUnmaskedPosition == maskL ? (maskL + 1) : seekNext(firstUnmaskedPosition);\n                                                        }\n                                                    }\n                                                    if (firstUnmaskedPosition <= p && (getActiveMaskSet()['greedy'] || (buffer.length < maskL || getBufferElement(buffer, p) == getPlaceHolder(p)))) {\n                                                        if (buffer[firstMaskPos] != getPlaceHolder(firstMaskPos) && buffer.length < maskL) {\n                                                            var offset = prepareBuffer(buffer, -1, isRTL);\n                                                            if ((selectionCleared ? pos.begin : pos.end) != 0) p = p + offset;\n                                                            maskL = buffer.length;\n                                                        }\n                                                        shiftL(firstUnmaskedPosition, p, c);\n                                                    } else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = p;\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]));\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                } else {\n                                    var p = seekNext(pos.begin - 1);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                if (opts.insertMode == true) {\n                                                    var lastUnmaskedPosition = getMaskLength();\n                                                    var bfrClone = buffer.slice();\n                                                    while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) {\n                                                        lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition);\n                                                    }\n                                                    if (lastUnmaskedPosition >= p)\n                                                        shiftR(p, buffer.length, c);\n                                                    else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = seekNext(p);\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var p = getActiveMaskSet()[\"p\"], buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : p);\n\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                }\n                                if (android && checkval !== true) {\n                                    caret(input, caretSavePoint.begin, caretSavePoint.end);\n                                }\n                                if (opts.showTooltip) { //update tooltip\n                                    $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                                }\n                                e.preventDefault();\n                            }\n                        }\n                    }\n\n                    function keyupEvent(e) {\n                        var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();\n                        opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup\n                        if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {\n                            buffer = getActiveBufferTemplate().slice();\n                            writeBuffer(input, buffer);\n                            if (!isRTL) caret(input, 0);\n                            getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        }\n                    }\n                };\n                return this;\n            };\n            return this;\n        };\n    }\n})(jQuery);\n/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //extra definitions\n    $.extend($.inputmask.defaults.definitions, {\n        'A': { //auto uppercasing\n            validator: \"[A-Za-z]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        '#': {\n            validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n            cardinality: 1,\n            casing: \"upper\"\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'url': {\n            mask: \"ir\",\n            placeholder: \"\",\n            separator: \"\",\n            defaultPrefix: \"http://\",\n            regex: {\n                urlpre1: new RegExp(\"[fh]\"),\n                urlpre2: new RegExp(\"(ft|ht)\"),\n                urlpre3: new RegExp(\"(ftp|htt)\"),\n                urlpre4: new RegExp(\"(ftp:|http|ftps)\"),\n                urlpre5: new RegExp(\"(ftp:/|ftps:|http:|https)\"),\n                urlpre6: new RegExp(\"(ftp://|ftps:/|http:/|https:)\"),\n                urlpre7: new RegExp(\"(ftp://|ftps://|http://|https:/)\"),\n                urlpre8: new RegExp(\"(ftp://|ftps://|http://|https://)\")\n            },\n            definitions: {\n                'i': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return true;\n                    },\n                    cardinality: 8,\n                    prevalidator: (function () {\n                        var result = [], prefixLimit = 8;\n                        for (var i = 0; i < prefixLimit; i++) {\n                            result[i] = (function () {\n                                var j = i;\n                                return {\n                                    validator: function (chrs, buffer, pos, strict, opts) {\n                                        if (opts.regex[\"urlpre\" + (j + 1)]) {\n                                            var tmp = chrs, k;\n                                            if (((j + 1) - chrs.length) > 0) {\n                                                tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + \"\" + tmp;\n                                            }\n                                            var isValid = opts.regex[\"urlpre\" + (j + 1)].test(tmp);\n                                            if (!strict && !isValid) {\n                                                pos = pos - j;\n                                                for (k = 0; k < opts.defaultPrefix.length; k++) {\n                                                    buffer[pos] = opts.defaultPrefix[k]; pos++;\n                                                }\n                                                for (k = 0; k < tmp.length - 1; k++) {\n                                                    buffer[pos] = tmp[k]; pos++;\n                                                }\n                                                return { \"pos\": pos };\n                                            }\n                                            return isValid;\n                                        } else {\n                                            return false;\n                                        }\n                                    }, cardinality: j\n                                };\n                            })();\n                        }\n                        return result;\n                    })()\n                },\n                \"r\": {\n                    validator: \".\",\n                    cardinality: 50\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        \"ip\": {\n            mask: \"i.i.i.i\",\n            definitions: {\n                'i': {\n                    validator: \"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",\n                    cardinality: 3,\n                    prevalidator: [\n                                { validator: \"[0-2]\", cardinality: 1 },\n                                { validator: \"2[0-5]|[01][0-9]\", cardinality: 2 }\n                    ]\n                }\n            }\n        }\n    });\n})(jQuery);/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2012 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //date & time aliases\n    $.extend($.inputmask.defaults.definitions, {\n        'h': { //hours\n            validator: \"[01][0-9]|2[0-3]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-2]\", cardinality: 1 }]\n        },\n        's': { //seconds || minutes\n            validator: \"[0-5][0-9]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-5]\", cardinality: 1 }]\n        },\n        'd': { //basic day\n            validator: \"0[1-9]|[12][0-9]|3[01]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-3]\", cardinality: 1 }]\n        },\n        'm': { //basic month\n            validator: \"0[1-9]|1[012]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[01]\", cardinality: 1 }]\n        },\n        'y': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'dd/mm/yyyy': {\n            mask: \"1/2/y\",\n            placeholder: \"dd/mm/yyyy\",\n            regex: {\n                val1pre: new RegExp(\"[0-3]\"), //daypre\n                val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"), //day\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\"); }, //monthpre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\"); }//month\n            },\n            leapday: \"29/02/\",\n            separator: '/',\n            yearrange: { minyear: 1900, maxyear: 2099 },\n            isInYearRange: function (chrs, minyear, maxyear) {\n                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length)));\n                var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) ||\n            \t\t   (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false);\n            },\n            determinebaseyear: function (minyear, maxyear) {\n                var currentyear = (new Date()).getFullYear();\n                if (minyear > currentyear) return minyear;\n                if (maxyear < currentyear) return maxyear;\n\n                return currentyear;\n            },\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());\n                }\n            },\n            definitions: {\n                '1': { //val1 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.val1.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.val1pre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(0, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(0, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                'y': { //year\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                            var dayMonthValue = buffer.join('').substr(0, 6);\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(chrs, 10);//detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        } else return false;\n                    },\n                    cardinality: 4,\n                    prevalidator: [\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 1);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                return { \"pos\": pos };\n                            }\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n                            if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                                var dayMonthValue = buffer.join('').substr(0, 6);\n                                if (dayMonthValue != opts.leapday)\n                                    isValid = true;\n                                else {\n                                    var year = parseInt(chrs, 10);//detect leap year\n                                    if (year % 4 === 0)\n                                        if (year % 100 === 0)\n                                            if (year % 400 === 0)\n                                                isValid = true;\n                                            else isValid = false;\n                                        else isValid = true;\n                                    else isValid = false;\n                                }\n                            } else isValid = false;\n                            if (isValid) {\n                                buffer[pos - 1] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                buffer[pos++] = chrs[0];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    }, cardinality: 2\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                    }, cardinality: 3\n                }\n                    ]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'mm/dd/yyyy': {\n            placeholder: \"mm/dd/yyyy\",\n            alias: \"dd/mm/yyyy\", //reuse functionality of dd/mm/yyyy alias\n            regex: {\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\"); }, //daypre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\"); }, //day\n                val1pre: new RegExp(\"[01]\"), //monthpre\n                val1: new RegExp(\"0[1-9]|1[012]\") //month\n            },\n            leapday: \"02/29/\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());\n                }\n            }\n        },\n        'yyyy/mm/dd': {\n            mask: \"y/1/2\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            leapday: \"/02/29\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());\n                }\n            },\n            definitions: {\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(5, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n\n                        //check leap yeap\n                        if (isValid) {\n                            var dayMonthValue = buffer.join('').substr(4, 4) + chrs;\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(buffer.join('').substr(0, 4), 10);  //detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(5, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            }\n        },\n        'dd.mm.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"dd.mm.yyyy\",\n            leapday: \"29.02.\",\n            separator: '.',\n            alias: \"dd/mm/yyyy\"\n        },\n        'dd-mm-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"dd-mm-yyyy\",\n            leapday: \"29-02-\",\n            separator: '-',\n            alias: \"dd/mm/yyyy\"\n        },\n        'mm.dd.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"mm.dd.yyyy\",\n            leapday: \"02.29.\",\n            separator: '.',\n            alias: \"mm/dd/yyyy\"\n        },\n        'mm-dd-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"mm-dd-yyyy\",\n            leapday: \"02-29-\",\n            separator: '-',\n            alias: \"mm/dd/yyyy\"\n        },\n        'yyyy.mm.dd': {\n            mask: \"y.1.2\",\n            placeholder: \"yyyy.mm.dd\",\n            leapday: \".02.29\",\n            separator: '.',\n            alias: \"yyyy/mm/dd\"\n        },\n        'yyyy-mm-dd': {\n            mask: \"y-1-2\",\n            placeholder: \"yyyy-mm-dd\",\n            leapday: \"-02-29\",\n            separator: '-',\n            alias: \"yyyy/mm/dd\"\n        },\n        'datetime': {\n            mask: \"1/2/y h:s\",\n            placeholder: \"dd/mm/yyyy hh:mm\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                hrspre: new RegExp(\"[012]\"), //hours pre\n                hrs24: new RegExp(\"2[0-9]|1[3-9]\"),\n                hrs: new RegExp(\"[01][0-9]|2[0-3]\"), //hours\n                ampmpre: new RegExp(\"[apAP]\"),\n                ampm: new RegExp(\"^[a|p|A|P][m|M]\")\n            },\n            timeseparator: ':',\n            hourFormat: \"24\", // or 12\n            definitions: {\n                'h': { //hours\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.hrs.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.timeseparator || \"-.:\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    buffer[pos] = chrs.charAt(0);\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                        }\n\n                        if (isValid && opts.hourFormat !== \"24\" && opts.regex.hrs24.test(chrs)) {\n\n                            var tmp = parseInt(chrs, 10);\n\n                            if (tmp == 24) {\n                                buffer[pos + 5] = \"a\";\n                                buffer[pos + 6] = \"m\";\n                            } else {\n                                buffer[pos + 5] = \"p\";\n                                buffer[pos + 6] = \"m\";\n                            }\n\n                            tmp = tmp - 12;\n\n                            if (tmp < 10) {\n                                buffer[pos] = tmp.toString();\n                                buffer[pos - 1] = \"0\";\n                            } else {\n                                buffer[pos] = tmp.toString().charAt(1);\n                                buffer[pos - 1] = tmp.toString().charAt(0);\n                            }\n\n                            return { \"pos\": pos, \"c\": buffer[pos] };\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.hrspre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                't': { //am/pm\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.ampm.test(chrs);\n                        if (!strict && !isValid) {\n                            isValid = opts.regex.ampm.test(chrs + 'm');\n                            if (isValid) {\n                                buffer[pos - 1] = chrs.charAt(0);\n                                buffer[pos] = \"m\";\n                                pos++;\n                                return pos;\n                            }\n                        }\n                        return isValid;\n                    },\n                    casing: \"lower\",\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.ampmpre.test(chrs);\n                            if (isValid) {\n                                isValid = opts.regex.ampm.test(chrs + \"m\");\n                                if (isValid) {\n                                    buffer[pos] = chrs;\n                                    buffer[pos + 1] = 'm';\n                                    return pos;\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'datetime12': {\n            mask: \"1/2/y h:s t\",\n            placeholder: \"dd/mm/yyyy hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'h:s t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm:ss': {\n            mask: \"h:s:s\",\n            autoUnmask: false\n        },\n        'hh:mm': {\n            mask: \"h:s\",\n            autoUnmask: false\n        },\n        'date': {\n            alias: \"dd/mm/yyyy\" // \"mm/dd/yyyy\"\n        }\n    });\n})(jQuery);/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //number aliases\n    $.extend($.inputmask.defaults.aliases, {\n        'decimal': {\n            mask: \"~\",\n            placeholder: \"\",\n            repeat: 10,\n            greedy: false,\n            numericInput: true,\n            digits: \"*\", //numer of digits\n            groupSeparator: \"\",//\",\", // | \".\"\n            radixPoint: \".\",\n            groupSize: 3,\n            autoGroup: false,\n            allowPlus: true,\n            allowMinus: true,\n            getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account\n                var calculatedLength = buffer.length;\n\n                if (!greedy && repeat > 1) {\n                    calculatedLength += (buffer.length * (repeat - 1));\n                }\n\n                var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);\n                var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), \"\").replace(new RegExp(escapedRadixPoint), \"\"),\n                groupOffset = currentBufferStr.length - strippedBufferStr.length;\n                return calculatedLength + groupOffset;\n            },\n            postFormat: function (buffer, pos, reformatOnly, opts) {\n                if (opts.groupSeparator == \"\") return pos;\n                var cbuf = buffer.slice(),\n                    radixPos = $.inArray(opts.radixPoint, buffer);\n                if (!reformatOnly) {\n                    cbuf.splice(pos == 0 || pos <= radixPos || opts.skipRadixDance ? pos + 1 : pos, 0, \"?\"); //set position indicator\n                }\n                var bufVal = cbuf.join('');\n                if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                    bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                    var radixSplit = bufVal.split(opts.radixPoint);\n                    bufVal = radixSplit[0];\n                    var reg = new RegExp('([-\\+]?[\\\\d\\?]+)([\\\\d\\?]{' + opts.groupSize + '})');\n                    while (reg.test(bufVal)) {\n                        bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');\n                        bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);\n                    }\n                    if (radixSplit.length > 1)\n                        bufVal += opts.radixPoint + radixSplit[1];\n                }\n                buffer.length = bufVal.length; //align the length\n                for (var i = 0, l = bufVal.length; i < l; i++) {\n                    buffer[i] = bufVal.charAt(i);\n                }\n                var newPos = $.inArray(\"?\", buffer);\n                if (!reformatOnly) buffer.splice(newPos, 1);\n\n                return reformatOnly ? pos : newPos <= radixPos || (opts.skipRadixDance && newPos != 0) ? newPos - 1 : newPos;\n            },\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var escapedRadixPoint = $.inputmask.escapeRegex.call(this, radixPoint);\n                    var digitExpression = isNaN(digits) ? digits : '{0,' + digits + '}';\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)(\" + escapedRadixPoint + \"\\\\d\" + digitExpression + \")?$\");\n                }\n            },\n            onKeyDown: function (e, buffer, opts) {\n                var $input = $(this), input = this;\n                if (e.keyCode == opts.keyCode.TAB) {\n                    var radixPosition = $.inArray(opts.radixPoint, buffer);\n                    if (radixPosition != -1) {\n                        var masksets = $input.data('inputmask')['masksets'];\n                        var activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex][\"_buffer\"], masksets[activeMasksetIndex][\"greedy\"], masksets[activeMasksetIndex][\"repeat\"], buffer, opts) ; i++) {\n                            if (buffer[radixPosition + i] == undefined) buffer[radixPosition + i] = \"0\";\n                        }\n                        input._valueSet(buffer.join(''));\n                    }\n                } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) {\n                    opts.postFormat(buffer, 0, true, opts);\n                    input._valueSet(buffer.join(''));\n                }\n            },\n            definitions: {\n                '~': { //real number\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (chrs == \"\") return false;\n                        if (pos <= 1 && buffer[0] === '0' && new RegExp(\"[\\\\d-]\").test(chrs)) { //handle first char\n                            buffer[0] = \"\";\n                            return { \"pos\": 0 };\n                        }\n\n                        var cbuf = strict ? buffer.slice(0, pos) : buffer.slice();\n\n                        cbuf.splice(pos == 0 ? pos : pos + 1, 0, chrs);\n                        var bufferStr = cbuf.join('');\n                        if (opts.autoGroup && !strict) { //strip groupseparator\n                            var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                            bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                        }\n                        var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                        if (!isValid) {\n                            //let's help the regex a bit\n                            bufferStr += \"0\";\n                            isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                            if (!isValid) {\n                                //make a valid group\n                                var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator);\n                                for (i = bufferStr.length - lastGroupSeparator; i <= 3; i++) {\n                                    bufferStr += \"0\";\n                                }\n\n                                isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                                if (!isValid && !strict) {\n                                    if (chrs == opts.radixPoint) {\n                                        isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(\"0\" + bufferStr + \"0\");\n                                        if (isValid) {\n                                            buffer[pos] = \"0\";\n                                            pos++;\n                                            return { \"pos\": pos };\n                                        }\n                                    }\n                                }\n                            }\n                        }\n\n                        if (isValid != false && !strict && chrs != opts.radixPoint) {\n                            var newPos = opts.postFormat(buffer, pos, false, opts);\n                            return { \"pos\": newPos };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    prevalidator: null\n                }\n            },\n            insertMode: true,\n            autoUnmask: false\n        },\n        'integer': {\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)$\");\n                }\n            },\n            alias: \"decimal\"\n        }\n    });\n})(jQuery);\n/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nRegex extensions on the jquery.inputmask base\nAllows for using regular expressions as a mask\n*/\n(function ($) {\n    $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask(\"Regex\", { regex: \"[0-9]*\"}\n        'Regex': {\n            mask: \"r\",\n            greedy: false,\n            repeat: 10, //needs to be computed\n            regex: null,\n            regexSplit: null,\n            definitions: {\n                'r': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n\n                        function analyseRegex() {  //ENHANCE ME\n                            var regexSplitRegex = \"\\\\[.*?\\]\\\\*\";\n\n                            opts.regexSplit = opts.regex.match(new RegExp(regexSplitRegex, \"g\"));\n\n                            //if (opts.regex.indexOf(\"*\") != (opts.regex.length - 1)) {\n                            //    opts.regex += \"{1}\";\n                            //}\n                            //opts.regexSplit.push(opts.regex);\n                        }\n\n                        if (opts.regexSplit == null) {\n                            analyseRegex();\n                        }\n\n                        var cbuffer = buffer.slice(), regexPart = \"\", isValid = false;\n                        cbuffer.splice(pos, 0, chrs);\n                        var bufferStr = cbuffer.join('');\n                        for (var i = 0; i < opts.regexSplit.length; i++) {\n                            regexPart += opts.regexSplit[i];\n                            var exp = new RegExp(\"^\" + regexPart + \"$\");\n                            isValid = exp.test(bufferStr);\n                            console.log(bufferStr + ' ' + isValid + ' ' + regexPart);\n                            if (isValid) break;\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 1\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.date.extensions.js",
    "content": "(function(h){h.extend(h.inputmask.defaults.definitions,{h:{validator:\"[01][0-9]|2[0-3]\",cardinality:2,prevalidator:[{validator:\"[0-2]\",cardinality:1}]},s:{validator:\"[0-5][0-9]\",cardinality:2,prevalidator:[{validator:\"[0-5]\",cardinality:1}]},d:{validator:\"0[1-9]|[12][0-9]|3[01]\",cardinality:2,prevalidator:[{validator:\"[0-3]\",cardinality:1}]},m:{validator:\"0[1-9]|1[012]\",cardinality:2,prevalidator:[{validator:\"[01]\",cardinality:1}]},y:{validator:\"(19|20)\\\\d{2}\",cardinality:4,prevalidator:[{validator:\"[12]\",\ncardinality:1},{validator:\"(19|20)\",cardinality:2},{validator:\"(19|20)\\\\d\",cardinality:3}]}});h.extend(h.inputmask.defaults.aliases,{\"dd/mm/yyyy\":{mask:\"1/2/y\",placeholder:\"dd/mm/yyyy\",regex:{val1pre:/[0-3]/,val1:/0[1-9]|[12][0-9]|3[01]/,val2pre:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|[12][0-9]|3[01])\"+a+\"[01])\")},val2:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|[12][0-9])\"+a+\"(0[1-9]|1[012]))|(30\"+a+\"(0[13-9]|1[012]))|(31\"+a+\"(0[13578]|1[02]))\")}},\nleapday:\"29/02/\",separator:\"/\",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(a,d,c){var e=parseInt(a.concat(d.toString().slice(a.length))),a=parseInt(a.concat(c.toString().slice(a.length)));return(NaN!=e?d<=e&&e<=c:!1)||(NaN!=a?d<=a&&a<=c:!1)},determinebaseyear:function(a,d){var c=(new Date).getFullYear();return a>c?a:d<c?d:c},onKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val(a.getDate().toString()+(a.getMonth()+1).toString()+a.getFullYear().toString()))},\ndefinitions:{1:{validator:function(a,d,c,e,b){var f=b.regex.val1.test(a);if(!e&&!f&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(f=b.regex.val1.test(\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};return f},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=b.regex.val1pre.test(a);return!e&&!f&&(f=b.regex.val1.test(\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):f},cardinality:1}]},2:{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(0,3),g=b.regex.val2(b.separator).test(f+\na);if(!e&&!g&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(g=b.regex.val2(b.separator).test(f+\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};return g},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(0,3),g=b.regex.val2pre(b.separator).test(f+a);return!e&&!g&&(g=b.regex.val2(b.separator).test(f+\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):g},cardinality:1}]},y:{validator:function(a,d,c,e,b){if(b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear)){if(d.join(\"\").substr(0,\n6)!=b.leapday)return!0;a=parseInt(a,10);return 0===a%4?0===a%100?0===a%400?!0:!1:!0:!1}return!1},cardinality:4,prevalidator:[{validator:function(a,d,c,e,b){var f=b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear);if(!e&&!f){e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,1);if(f=b.isInYearRange(e+a,b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[0],{pos:c};e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);if(f=b.isInYearRange(e+\na,b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[0],d[c++]=e[1],{pos:c}}return f},cardinality:1},{validator:function(a,d,c,e,b){var f=b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear);if(!e&&!f){e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);if(f=b.isInYearRange(a[0]+e[1]+a[1],b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[1],{pos:c};e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);b.isInYearRange(e+\na,b.yearrange.minyear,b.yearrange.maxyear)?d.join(\"\").substr(0,6)!=b.leapday?f=!0:(b=parseInt(a,10),f=0===b%4?0===b%100?0===b%400?!0:!1:!0:!1):f=!1;if(f)return d[c-1]=e[0],d[c++]=e[1],d[c++]=a[0],{pos:c}}return f},cardinality:2},{validator:function(a,d,c,e,b){return b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},\"mm/dd/yyyy\":{placeholder:\"mm/dd/yyyy\",alias:\"dd/mm/yyyy\",regex:{val2pre:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[13-9]|1[012])\"+\na+\"[0-3])|(02\"+a+\"[0-2])\")},val2:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|1[012])\"+a+\"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\"+a+\"30)|((0[13578]|1[02])\"+a+\"31)\")},val1pre:/[01]/,val1:/0[1-9]|1[012]/},leapday:\"02/29/\",onKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val((a.getMonth()+1).toString()+a.getDate().toString()+a.getFullYear().toString()))}},\"yyyy/mm/dd\":{mask:\"y/1/2\",placeholder:\"yyyy/mm/dd\",alias:\"mm/dd/yyyy\",leapday:\"/02/29\",\nonKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val(a.getFullYear().toString()+(a.getMonth()+1).toString()+a.getDate().toString()))},definitions:{2:{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(5,3),g=b.regex.val2(b.separator).test(f+a);if(!e&&!g&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(g=b.regex.val2(b.separator).test(f+\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};if(g){if(d.join(\"\").substr(4,4)+a!=b.leapday)return!0;\na=parseInt(d.join(\"\").substr(0,4),10);return 0===a%4?0===a%100?0===a%400?!0:!1:!0:!1}return g},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(5,3),g=b.regex.val2pre(b.separator).test(f+a);return!e&&!g&&(g=b.regex.val2(b.separator).test(f+\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):g},cardinality:1}]}}},\"dd.mm.yyyy\":{mask:\"1.2.y\",placeholder:\"dd.mm.yyyy\",leapday:\"29.02.\",separator:\".\",alias:\"dd/mm/yyyy\"},\"dd-mm-yyyy\":{mask:\"1-2-y\",placeholder:\"dd-mm-yyyy\",leapday:\"29-02-\",separator:\"-\",\nalias:\"dd/mm/yyyy\"},\"mm.dd.yyyy\":{mask:\"1.2.y\",placeholder:\"mm.dd.yyyy\",leapday:\"02.29.\",separator:\".\",alias:\"mm/dd/yyyy\"},\"mm-dd-yyyy\":{mask:\"1-2-y\",placeholder:\"mm-dd-yyyy\",leapday:\"02-29-\",separator:\"-\",alias:\"mm/dd/yyyy\"},\"yyyy.mm.dd\":{mask:\"y.1.2\",placeholder:\"yyyy.mm.dd\",leapday:\".02.29\",separator:\".\",alias:\"yyyy/mm/dd\"},\"yyyy-mm-dd\":{mask:\"y-1-2\",placeholder:\"yyyy-mm-dd\",leapday:\"-02-29\",separator:\"-\",alias:\"yyyy/mm/dd\"},datetime:{mask:\"1/2/y h:s\",placeholder:\"dd/mm/yyyy hh:mm\",alias:\"dd/mm/yyyy\",\nregex:{hrspre:/[012]/,hrs24:/2[0-9]|1[3-9]/,hrs:/[01][0-9]|2[0-3]/,ampmpre:/[apAP]/,ampm:/^[a|p|A|P][m|M]/},timeseparator:\":\",hourFormat:\"24\",definitions:{h:{validator:function(a,d,c,e,b){var f=b.regex.hrs.test(a);if(!e&&!f&&(a.charAt(1)==b.timeseparator||-1!=\"-.:\".indexOf(a.charAt(1))))if(f=b.regex.hrs.test(\"0\"+a.charAt(0)))return d[c-1]=\"0\",d[c]=a.charAt(0),c++,{pos:c};return f&&\"24\"!==b.hourFormat&&b.regex.hrs24.test(a)?(a=parseInt(a,10),d[c+5]=24==a?\"a\":\"p\",d[c+6]=\"m\",a-=12,10>a?(d[c]=a.toString(),\nd[c-1]=\"0\"):(d[c]=a.toString().charAt(1),d[c-1]=a.toString().charAt(0)),{pos:c,c:d[c]}):f},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=b.regex.hrspre.test(a);return!e&&!f&&(f=b.regex.hrs.test(\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):f},cardinality:1}]},t:{validator:function(a,d,c,e,b){var f=b.regex.ampm.test(a);return!e&&!f&&(f=b.regex.ampm.test(a+\"m\"))?(d[c-1]=a.charAt(0),d[c]=\"m\",c++,c):f},casing:\"lower\",cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){if(e=b.regex.ampmpre.test(a))if(e=\nb.regex.ampm.test(a+\"m\"))return d[c]=a,d[c+1]=\"m\",c;return e},cardinality:1}]}},insertMode:!1,autoUnmask:!1},datetime12:{mask:\"1/2/y h:s t\",placeholder:\"dd/mm/yyyy hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"hh:mm t\":{mask:\"h:s t\",placeholder:\"hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"h:s t\":{mask:\"h:s t\",placeholder:\"hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"hh:mm:ss\":{mask:\"h:s:s\",autoUnmask:!1},\"hh:mm\":{mask:\"h:s\",autoUnmask:!1},date:{alias:\"dd/mm/yyyy\"}})})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.extensions.js",
    "content": "(function(a){a.extend(a.inputmask.defaults.definitions,{A:{validator:\"[A-Za-z]\",cardinality:1,casing:\"upper\"},\"#\":{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u04510-9]\",cardinality:1,casing:\"upper\"}});a.extend(a.inputmask.defaults.aliases,{url:{mask:\"ir\",placeholder:\"\",separator:\"\",defaultPrefix:\"http://\",regex:{urlpre1:/[fh]/,urlpre2:/(ft|ht)/,urlpre3:/(ftp|htt)/,urlpre4:/(ftp:|http|ftps)/,urlpre5:/(ftp:\\/|ftps:|http:|https)/,urlpre6:/(ftp:\\/\\/|ftps:\\/|http:\\/|https:)/,urlpre7:/(ftp:\\/\\/|ftps:\\/\\/|http:\\/\\/|https:\\/)/,\nurlpre8:/(ftp:\\/\\/|ftps:\\/\\/|http:\\/\\/|https:\\/\\/)/},definitions:{i:{validator:function(){return!0},cardinality:8,prevalidator:function(){for(var a=[],c=0;8>c;c++)a[c]=function(){var a=c;return{validator:function(e,c,d,b,g){if(g.regex[\"urlpre\"+(a+1)]){var f=e;0<a+1-e.length&&(f=c.join(\"\").substring(0,a+1-e.length)+\"\"+f);e=g.regex[\"urlpre\"+(a+1)].test(f);if(!b&&!e){d-=a;for(b=0;b<g.defaultPrefix.length;b++)c[d]=g.defaultPrefix[b],d++;for(b=0;b<f.length-1;b++)c[d]=f[b],d++;return{pos:d}}return e}return!1},\ncardinality:a}}();return a}()},r:{validator:\".\",cardinality:50}},insertMode:!1,autoUnmask:!1},ip:{mask:\"i.i.i.i\",definitions:{i:{validator:\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",cardinality:3,prevalidator:[{validator:\"[0-2]\",cardinality:1},{validator:\"2[0-5]|[01][0-9]\",cardinality:2}]}}}})})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.js",
    "content": "/*\n Input Mask plugin for jquery\n http://github.com/RobinHerbots/jquery.inputmask\n Copyright (c) 2010 - 2013 Robin Herbots\n Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n Version: 2.2.42\n*/\n(function(c){void 0==c.fn.inputmask&&(c.inputmask={defaults:{placeholder:\"_\",optionalmarker:{start:\"[\",end:\"]\"},escapeChar:\"\\\\\",mask:null,oncomplete:c.noop,onincomplete:c.noop,oncleared:c.noop,repeat:0,greedy:!0,autoUnmask:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},onKeyUp:c.noop,onKeyDown:c.noop,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:c.noop,skipOptionalPartCharacter:\" \",showTooltip:!1,numericInput:!1,radixPoint:\"\",skipRadixDance:!1,rightAlignNumerics:!0,\ndefinitions:{9:{validator:\"[0-9]\",cardinality:1},a:{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u0451]\",cardinality:1},\"*\":{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u04510-9]\",cardinality:1}},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,\nRIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},ignorables:[9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],getMaskLength:function(c,D,E){var K=c.length;!D&&1<E&&(K+=c.length*(E-1));return K}},val:c.fn.val,escapeRegex:function(c){return c.replace(RegExp(\"(\\\\/|\\\\.|\\\\*|\\\\+|\\\\?|\\\\||\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|\\\\\\\\)\",\"gim\"),\"\\\\$1\")}},c.fn.inputmask=function(L,D){function E(e,d){var g=b.aliases[e];return g?(g.alias&&E(g.alias),c.extend(!0,b,g),c.extend(!0,b,\nd),!0):!1}function K(e){var d=!1,g=0,t=b.greedy,a=b.repeat;1==e.length&&!1==t&&(b.placeholder=\"\");for(var e=c.map(e.split(\"\"),function(a){var c=[];if(a==b.escapeChar)d=true;else if(a!=b.optionalmarker.start&&a!=b.optionalmarker.end||d){var f=b.definitions[a];if(f&&!d)for(a=0;a<f.cardinality;a++)c.push(J(g+a));else{c.push(a);d=false}g=g+c.length;return c}}),x=e.slice(),f=1;f<a&&t;f++)x=x.concat(e.slice());return{mask:x,repeat:a,greedy:t}}function P(e){var d=!1,g=!1,t=!1;return c.map(e.split(\"\"),function(a){var c=\n[];if(a==b.escapeChar)g=!0;else if(a==b.optionalmarker.start&&!g)t=d=!0;else if(a==b.optionalmarker.end&&!g)d=!1,t=!0;else{var f=b.definitions[a];if(f&&!g){for(var k=f.prevalidator,e=k?k.length:0,B=1;B<f.cardinality;B++){var u=e>=B?k[B-1]:[],A=u.validator,u=u.cardinality;c.push({fn:A?\"string\"==typeof A?RegExp(A):new function(){this.test=A}:/./,cardinality:u?u:1,optionality:d,newBlockMarker:!0==d?t:!1,offset:0,casing:f.casing,def:f.definitionSymbol|a});!0==d&&(t=!1)}c.push({fn:f.validator?\"string\"==\ntypeof f.validator?RegExp(f.validator):new function(){this.test=f.validator}:/./,cardinality:f.cardinality,optionality:d,newBlockMarker:t,offset:0,casing:f.casing,def:f.definitionSymbol|a})}else c.push({fn:null,cardinality:0,optionality:d,newBlockMarker:t,offset:0,casing:null,def:a}),g=!1;t=!1;return c}})}function Q(){function e(a){var c=a.length;for(i=0;i<c&&a.charAt(i)!=b.optionalmarker.start;i++);var d=[a.substring(0,i)];i<c&&d.push(a.substring(i+1,c));return d}function d(a,x){var f=0,k=0,l=x.length;\nfor(i=0;i<l&&!(x.charAt(i)==b.optionalmarker.start&&f++,x.charAt(i)==b.optionalmarker.end&&k++,0<f&&f==k);i++);f=[x.substring(0,i)];i<l&&f.push(x.substring(i+1,l));var B=e(f[0]);if(1<B.length){if(l=a+B[0]+(b.optionalmarker.start+B[1]+b.optionalmarker.end)+(1<f.length?f[1]:\"\"),-1==c.inArray(l,t)&&(t.push(l),k=K(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat})),l=a+B[0]+(1<f.length?f[1]:\"\"),-1==c.inArray(l,t)&&(t.push(l),k=\nK(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat})),1<e(B[1]).length&&d(a+B[0],B[1]+f[1]),1<f.length&&1<e(f[1]).length)d(a+B[0]+(b.optionalmarker.start+B[1]+b.optionalmarker.end),f[1]),d(a+B[0],f[1])}else l=a+f,-1==c.inArray(l,t)&&(t.push(l),k=K(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat}))}var g=[],t=[];c.isArray(b.mask)?c.each(b.mask,function(a,\nb){d(\"\",b.toString())}):d(\"\",b.mask.toString());return g}function J(c){return b.placeholder.charAt(c%b.placeholder.length)}function F(e,d){var g,t;function a(){return e[d]}function x(){return a().tests}function f(){return a()._buffer}function k(){return a().buffer}function l(j,R,f,r){function y(a,j){for(var c=A(a),d=R?1:0,k=\"\",e=j.buffer,y=j.tests[c].cardinality;y>d;y--)k+=z(e,c-(y-1));R&&(k+=R);return null!=j.tests[c].fn?j.tests[c].fn.test(k,e,a,f,b):!1}if(f=!0===f){var g=y(j,a());!0===g&&(g={pos:j});\nreturn g}var l=[],g=!1,o=d;c.each(e,function(a){d=a;if(o!=d&&!u(j)){if(R==this._buffer[j]||R==b.skipOptionalPartCharacter)return l.push({activeMasksetIndex:a,result:{refresh:!0,c:this._buffer[j]}}),this.lastValidPosition=j,!1;this.lastValidPosition=r?p()+1:-1}if((void 0==this.lastValidPosition&&j==(r?H(p()):s(-1))||r||b.numericInput?this.lastValidPosition<=b.numericInput?p():s(j):this.lastValidPosition>=H(j))&&0<=j&&j<p()){g=y(j,this);if(!1!==g){!0===g&&(g={pos:j});var c=g.pos||j;if(void 0==this.lastValidPosition||\n(r?b.greedy?this.lastValidPosition>c:c==k().length-1:this.lastValidPosition<c))this.lastValidPosition=c}else this.lastValidPosition=r?j==p()?void 0:s(j):0==j?void 0:H(j);l.push({activeMasksetIndex:a,result:g})}});d=o;return l}function B(j){var f=d,M={activeMasksetIndex:0,lastValidPosition:j?p()+1:-1};c.each(e,function(a){if(void 0!=this.lastValidPosition&&(j||b.numericInput?this.lastValidPosition<M.lastValidPosition:this.lastValidPosition>M.lastValidPosition))M.activeMasksetIndex=a,M.lastValidPosition=\nthis.lastValidPosition});d=M.activeMasksetIndex;f!=d&&(j?K(k(),0,H(M.lastValidPosition)):K(k(),s(M.lastValidPosition),p()),a().writeOutBuffer=!0)}function u(a){a=A(a);a=x()[a];return void 0!=a?a.fn:!1}function A(a){return a%x().length}function p(){return b.getMaskLength(f(),a().greedy,a().repeat,k(),b)}function s(a){var b=p();if(a>=b)return b;for(;++a<b&&!u(a););return a}function H(a){if(0>=a)return 0;for(;0<--a&&!u(a););return a}function o(a,b,c,d,f){d&&(b=L(a,b,f));d=x()[A(b)];f=c;if(void 0!=f)switch(d.casing){case \"upper\":f=\nc.toUpperCase();break;case \"lower\":f=c.toLowerCase()}a[b]=f}function z(a,b,c){c&&(b=L(a,b));return a[b]}function L(a,b,c){if(c)for(;0>b&&a.length<p();){c=f().length-1;for(b=f().length;void 0!==f()[c];)a.unshift(f()[c--])}else for(;void 0==a[b]&&a.length<p();)for(c=0;void 0!==f()[c];)a.push(f()[c++]);return b}function E(a,b,c){a._valueSet(b.join(\"\"));void 0!=c&&C(a,c)}function K(a,b,c){for(var d=p();b<c&&b<d;b++)o(a,b,z(f().slice(),b,!0))}function I(a,b){var c=A(b);o(a,b,z(f(),c))}function D(j,k,g,\nr){var y=c(j).data(\"inputmask\").isRTL,r=void 0!=r?r.slice():P(j._valueGet(),y).split(\"\");c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=y?p():0});!0!==g&&(d=0);y&&!b.numericInput&&(r=r.reverse());var l=p();c.each(r,function(a,d){var e=y?b.numericInput?l:l-a-1:a;(u(y?b.numericInput?H(l):l-a-1:a)||!0!==g&&d!=z(f(),e,!0))&&c(j).trigger(\"keypress\",[!0,d.charCodeAt(0),k,g,e])});!0===g&&(a().lastValidPosition=y?s(a().p):H(a().p))}function F(a){return c.inputmask.escapeRegex.call(this,\na)}function P(a,b){return b?a.replace(RegExp(\"^(\"+F(f().join(\"\"))+\")*\"),\"\"):a.replace(RegExp(\"(\"+F(f().join(\"\"))+\")*$\"),\"\")}function Q(a){var b=k(),d=b.slice(),f,e;if(c(a).data(\"inputmask\").isRTL)for(e=0;e<=d.length-1;e++)if(f=A(e),x()[f].optionality)if(!u(e)||!l(e,b[e],!0))d.splice(0,1);else break;else break;else for(e=d.length-1;0<=e;e--)if(f=A(e),x()[f].optionality)if(!u(e)||!l(e,b[e],!0))d.pop();else break;else break;E(a,d)}function V(a,b){var d=a[0];return x()&&(!0===b||!a.hasClass(\"hasDatepicker\"))?\n(D(d,!1,!0),c.map(k(),function(a,b){return u(b)&&l(b,a,!0)?a:null}).join(\"\")):d._valueGet()}function C(a,d,f){var e=a.jquery&&0<a.length?a[0]:a;if(\"number\"==typeof d)c(a).is(\":visible\")&&(f=\"number\"==typeof f?f:d,!1==b.insertMode&&d==f&&f++,e.setSelectionRange?T?(setTimeout(function(){e.selectionStart=d;e.selectionEnd=T?d:f},10),g=d,t=f):(e.selectionStart=d,e.selectionEnd=f):e.createTextRange&&(a=e.createTextRange(),a.collapse(!0),a.moveEnd(\"character\",f),a.moveStart(\"character\",d),a.select()));else{if(!c(a).is(\":visible\"))return{begin:0,\nend:0};e.setSelectionRange?(d=e.selectionStart,f=e.selectionEnd):document.selection&&document.selection.createRange&&(a=document.selection.createRange(),d=0-a.duplicate().moveStart(\"character\",-1E5),f=d+a.text.length);return{begin:d,end:f}}}function S(a){var b=!1,k=0,g=d;c.each(e,function(c,e){d=c;var g=H(p());if(void 0!=e.lastValidPosition&&e.lastValidPosition>=k&&e.lastValidPosition==g){for(var l=!0,o=0;o<=g;o++){var s=u(o),t=A(o);if(s&&(void 0==a[o]||a[o]==J(o))||!s&&a[o]!=f()[t]){l=!1;break}}if(b=\nb||l)return!1}k=e.lastValidPosition});d=g;return b}this.unmaskedvalue=function(a,b){return V(a,b)};this.isComplete=function(a){return S(a)};this.mask=function(j){function F(a){a=c._data(a).events;c.each(a,function(a,b){c.each(b,function(a,b){if(\"inputmask\"==b.namespace){var c=b.handler;b.handler=function(a){if(this.readOnly||this.disabled)a.preventDefault;else return c.apply(this,arguments)}}})})}function M(a){var b;Object.getOwnPropertyDescriptor&&(b=Object.getOwnPropertyDescriptor(a,\"value\"));if(b&&\nb.get)a._valueGet||(a._valueGet=b.get,a._valueSet=b.set,Object.defineProperty(a,\"value\",{get:function(){var a=c(this),b=c(this).data(\"inputmask\"),d=b.masksets,f=b.activeMasksetIndex;return b&&b.opts.autoUnmask?a.inputmask(\"unmaskedvalue\"):this._valueGet()!=d[f]._buffer.join(\"\")?this._valueGet():\"\"},set:function(a){this._valueSet(a);c(this).triggerHandler(\"setvalue.inputmask\")}}));else if(document.__lookupGetter__&&a.__lookupGetter__(\"value\"))a._valueGet||(a._valueGet=a.__lookupGetter__(\"value\"),a._valueSet=\na.__lookupSetter__(\"value\"),a.__defineGetter__(\"value\",function(){var a=c(this),b=c(this).data(\"inputmask\"),d=b.masksets,f=b.activeMasksetIndex;return b&&b.opts.autoUnmask?a.inputmask(\"unmaskedvalue\"):this._valueGet()!=d[f]._buffer.join(\"\")?this._valueGet():\"\"}),a.__defineSetter__(\"value\",function(a){this._valueSet(a);c(this).triggerHandler(\"setvalue.inputmask\")}));else if(a._valueGet||(a._valueGet=function(){return this.value},a._valueSet=function(a){this.value=a}),!0!=c.fn.val.inputmaskpatch)c.fn.val=\nfunction(){if(arguments.length==0){var a=c(this);if(a.data(\"inputmask\")){if(a.data(\"inputmask\").opts.autoUnmask)return a.inputmask(\"unmaskedvalue\");var a=c.inputmask.val.apply(a),b=c(this).data(\"inputmask\");return a!=b.masksets[b.activeMasksetIndex]._buffer.join(\"\")?a:\"\"}return c.inputmask.val.apply(a)}var d=arguments;return this.each(function(){var a=c(this),b=c.inputmask.val.apply(a,d);a.data(\"inputmask\")&&a.triggerHandler(\"setvalue.inputmask\");return b})},c.extend(c.fn.val,{inputmaskpatch:!0})}\nfunction r(a,c){if(b.numericInput&&\"\"!=b.radixPoint&&!1===b.skipRadixDance){var d=a._valueGet().indexOf(b.radixPoint);n=c.begin<=d||c.end<=d||-1==d}}function y(b,c,d){for(var e=k();!u(b)&&0<=b-1;)b--;for(var h=b;h<c&&h<p();h++)if(u(h)){I(e,h);var g=s(h),j=z(e,g);if(j!=J(g))if(g<p()&&!1!==l(h,j,!0,n)&&x()[A(h)].def==x()[A(g)].def)o(e,h,z(e,g),!0,n),g<c&&I(e,g);else if(u(h))break}else I(e,h);void 0!=d&&o(e,n?c:H(c),d);if(!1==a().greedy){c=P(e.join(\"\"),n).split(\"\");e.length=c.length;h=0;for(d=e.length;h<\nd;h++)e[h]=c[h];0==e.length&&(a().buffer=f().slice())}return b}function O(b,c,d,e){for(var h=k();b<=c&&b<p();b++)if(u(b)){var g=z(h,b);o(h,b,d,!0,n);if(g!=J(b))if(d=s(b),d<p())if(!1!==l(d,g,!0,n)&&x()[A(b)].def==x()[A(d)].def)d=g;else if(u(d))break;else d=g;else break;else if(d=g,!0!==e)break}else I(h,b);e=h.length;if(!1==a().greedy){d=P(h.join(\"\"),n).split(\"\");h.length=d.length;b=0;for(g=h.length;b<g;b++)h[b]=d[b];0==h.length&&(a().buffer=f().slice())}return c-(e-h.length)}function V(g){U=!1;var j=\nthis,m=g.keyCode,q=C(j);r(j,q);if(m==b.keyCode.BACKSPACE||m==b.keyCode.DELETE||aa&&127==m||g.ctrlKey&&88==m){g.preventDefault();var h=q.begin;if(0==q.begin&&q.end==p())K(k(),q.begin,q.end),c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=n?p():0});else if(1<q.end-q.begin||1==q.end-q.begin&&b.insertMode){K(k(),q.begin,q.end);var l=p();if(!1==b.greedy)n?O(0,q.end-1,J(q.end),!0):y(q.begin,l);else for(var o=q.begin;o<q.end;o++)u(o)&&(n?O(0,q.end-1,J(q.end),!0):y(q.begin,\nl));D(j,!1,!0,k())}else c.each(e,function(c){d=c;h=Y?q.end:q.begin;var c=k(),e=n?H(p()+1):s(-1),g=p();if(m==b.keyCode.DELETE){if(n?h>e:h<e)h=e;if(h<g&&(b.numericInput&&\"\"!=b.radixPoint&&c[h]==b.radixPoint?(h=c.length-1==h?h:s(h),h=y(h,g)):n?(h=O(0,h,J(h),!0),h=s(h)):h=y(h,g),void 0!=a().lastValidPosition))-1!=a().lastValidPosition&&k()[a().lastValidPosition]==f()[a().lastValidPosition]&&(a().lastValidPosition=n?s(a().lastValidPosition):0==a().lastValidPosition?-1:H(a().lastValidPosition)),(n?a().lastValidPosition>\ne:a().lastValidPosition<e)?(a().lastValidPosition=void 0,a().p=e):(a().writeOutBuffer=!0,a().p=h)}else if(m==b.keyCode.BACKSPACE)if(n?h<=e:h>e){if(h-=1,b.numericInput&&\"\"!=b.radixPoint&&c[h]==b.radixPoint?(h=O(0,c.length-1==h?h:h-1,J(h),!0),h++):n?(h=O(0,h,J(h),!0),h=c[h+1]==b.radixPoint?h+1:s(h)):h=y(h,g),void 0!=a().lastValidPosition)-1!=a().lastValidPosition&&k()[a().lastValidPosition]==f()[a().lastValidPosition]&&(a().lastValidPosition=n?s(a().lastValidPosition):0==a().lastValidPosition?-1:H(a().lastValidPosition)),\n(n?a().lastValidPosition>e:a().lastValidPosition<e)?(a().lastValidPosition=void 0,a().p=e):(a().writeOutBuffer=!0,a().p=h)}else 0<d&&(a().lastValidPosition=void 0,a().writeOutBuffer=!0,a().p=e,d=0,a().buffer=f().slice(),a().p=n?H(p()+1):s(-1),a().lastValidPosition=void 0)});B(n);E(j,k(),a().p);j._valueGet()==f().join(\"\")&&c(j).trigger(\"cleared\");b.showTooltip&&v.prop(\"title\",a().mask)}else m==b.keyCode.END||m==b.keyCode.PAGE_DOWN?setTimeout(function(){var c=n?a().lastValidPosition:s(a().lastValidPosition);\n!b.insertMode&&(c==p()&&!g.shiftKey)&&c--;C(j,g.shiftKey?q.begin:c,c)},0):m==b.keyCode.HOME&&!g.shiftKey||m==b.keyCode.PAGE_UP?C(j,0,g.shiftKey?q.begin:0):m==b.keyCode.ESCAPE?(j._valueSet(a().undoBuffer),D(j,!0,!0)):m==b.keyCode.INSERT?(b.insertMode=!b.insertMode,C(j,!b.insertMode&&q.begin==p()?q.begin-1:q.begin)):!1==b.insertMode&&!g.shiftKey&&(m==b.keyCode.RIGHT?setTimeout(function(){var a=C(j);C(j,a.begin)},0):m==b.keyCode.LEFT&&setTimeout(function(){var a=C(j);C(j,a.begin-1)},0));b.onKeyDown.call(this,\ng,k(),b);W=-1!=c.inArray(m,b.ignorables)}function $(f,j,m,q,h,x){if(void 0==m&&U)return!1;U=!0;var A=c(this),f=f||window.event,m=m||f.which||f.charCode||f.keyCode,r=String.fromCharCode(m);if((f.ctrlKey||f.metaKey||W)&&!0!==j)return!0;if(m){var G,v;j?(m=h?x:b.numericInput?s(a().p):a().p,G={begin:m,end:m}):G=C(this);var m=d,D=!1;c.each(e,function(c){d=c;a().undoBuffer=k().join(\"\");if(G.end-G.begin>1||G.end-G.begin==1&&b.insertMode){c=G.end<p()?G.end:p();K(k(),G.begin,c);var e=p();if(b.greedy==false)n?\nO(0,c-1,J(c),true):y(G.begin,e);else for(var f=G.begin;f<c;f++)u(f)&&(n?O(0,c-1,J(c),true):y(G.begin,e));D=true}});d=m;if(n){var w=H(D?G.begin:G.end),m=l(w,r,h,n);!0===h&&(m=[{activeMasksetIndex:d,result:m}]);c.each(m,function(c,e){d=e.activeMasksetIndex;a().writeOutBuffer=true;var f=e.result;if(f!==false){var h=false,g=k();if(f!==true){h=f.refresh;w=f.pos!=void 0?f.pos:w;r=f.c!=void 0?f.c:r}if(h!==true){var h=p(),j=s(-1),f=j;if(b.insertMode==true){if(a().greedy==true)for(var m=g.slice();z(m,f,true)!=\nJ(f)&&f<=w;)f=f==h?h+1:s(f);if(f<=w&&(a().greedy||g.length<h||z(g,w)==J(w))){if(g[j]!=J(j)&&g.length<h){g=L(g,-1,n);if((D?G.begin:G.end)!=0)w=w+g}y(f,w,r)}else a().writeOutBuffer=false}else o(g,w,r,true,n)}a().p=w}});!0!==h&&B(n);if(!1!==q&&(c.each(m,function(a,b){if(b.activeMasksetIndex==d){v=b;return false}}),void 0!=v)){var I=this;setTimeout(function(){b.onKeyValidation.call(I,v.result,b)},0);if(a().writeOutBuffer&&!1!==v.result){var F=k();E(this,F,j?void 0:b.numericInput?s(a().p):a().p);setTimeout(function(){S(F)&&\nA.trigger(\"complete\")},0)}else a().buffer=a().undoBuffer.split(\"\")}}else w=s(G.begin-1),m=l(w,r,h,n),!0===h&&(m=[{activeMasksetIndex:d,result:m}]),c.each(m,function(c,f){d=f.activeMasksetIndex;a().writeOutBuffer=true;var e=f.result;if(e!==false){var h=false,g=k();if(e!==true){h=e.refresh;w=e.pos!=void 0?e.pos:w;r=e.c!=void 0?e.c:r}if(h!==true)if(b.insertMode==true){e=p();for(h=g.slice();z(h,e,true)!=J(e)&&e>=w;)e=e==0?-1:H(e);e>=w?O(w,g.length,r):a().writeOutBuffer=false}else o(g,w,r,true,n);a().p=\ns(w)}}),!0!==h&&B(n),!1!==q&&(c.each(m,function(a,b){if(b.activeMasksetIndex==d){v=b;return false}}),void 0!=v&&(I=this,setTimeout(function(){b.onKeyValidation.call(I,v.result,b)},0),a().writeOutBuffer&&!1!==v.result?(w=a().p,F=k(),E(this,F,j?void 0:w),setTimeout(function(){S(F)&&A.trigger(\"complete\")},0)):a().buffer=a().undoBuffer.split(\"\")));T&&!0!==j&&C(this,g,t);b.showTooltip&&A.prop(\"title\",a().mask);f.preventDefault()}}function Z(e){var d=c(this),g=e.keyCode,j=k();b.onKeyUp.call(this,e,j,b);\ng==b.keyCode.TAB&&(d.hasClass(\"focus.inputmask\")&&0==this._valueGet().length&&b.showMaskOnFocus)&&(j=f().slice(),E(this,j),n||C(this,0),a().undoBuffer=this._valueGet())}var v=c(j);if(v.is(\":input\")){v.data(\"inputmask\",{masksets:e,activeMasksetIndex:d,opts:b,isRTL:!1});b.showTooltip&&v.prop(\"title\",a().mask);a().greedy=a().greedy?a().greedy:0==a().repeat;var N=v.prop(\"maxLength\");p()>N&&-1<N&&(N<f().length&&(f().length=N),!1==a().greedy&&(a().repeat=Math.round(N/f().length)),v.prop(\"maxLength\",2*p()));\nM(j);a().undoBuffer=j._valueGet();var U=!1,W=!1,n=!1;if(\"rtl\"==j.dir||b.numericInput)(\"rtl\"==j.dir||b.numericInput&&b.rightAlignNumerics)&&v.css(\"text-align\",\"right\"),j.dir=\"ltr\",v.removeAttr(\"dir\"),N=v.data(\"inputmask\"),N.isRTL=!0,v.data(\"inputmask\",N),n=!0;v.unbind(\".inputmask\");v.removeClass(\"focus.inputmask\");v.bind(\"mouseenter.inputmask\",function(){!c(this).hasClass(\"focus.inputmask\")&&b.showMaskOnHover&&this._valueGet()!=k().join(\"\")&&E(this,k())}).bind(\"blur.inputmask\",function(){var g=c(this),\nj=this._valueGet(),m=k();g.removeClass(\"focus.inputmask\");j!=a().undoBuffer&&g.change();b.clearMaskOnLostFocus&&j!=\"\"&&(j==f().join(\"\")?this._valueSet(\"\"):Q(this));if(!S(m)){g.trigger(\"incomplete\");if(b.clearIncomplete){c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=n?p():0});d=0;if(b.clearMaskOnLostFocus)this._valueSet(\"\");else{m=f().slice();E(this,m)}}}}).bind(\"focus.inputmask\",function(){var e=c(this),d=this._valueGet();b.showMaskOnFocus&&!e.hasClass(\"focus.inputmask\")&&\n(!b.showMaskOnHover||b.showMaskOnHover&&d==\"\")&&this._valueGet()!=k().join(\"\")&&E(this,k(),a().p);e.addClass(\"focus.inputmask\");a().undoBuffer=this._valueGet()}).bind(\"mouseleave.inputmask\",function(){var a=c(this);b.clearMaskOnLostFocus&&(a.hasClass(\"focus.inputmask\")||(this._valueGet()==f().join(\"\")||this._valueGet()==\"\"?this._valueSet(\"\"):Q(this)))}).bind(\"click.inputmask\",function(){var e=this;setTimeout(function(){var d=C(e),f=k();if(d.begin==d.end){var g=d.begin,h=a().lastValidPosition;r(e,\nd);if(n){d=b.numericInput?b.skipRadixDance===false&&b.radixPoint!=\"\"&&c.inArray(b.radixPoint,f)!=-1?c.inArray(b.radixPoint,f):p():H((h==void 0?p():h)+1);C(e,g>d&&(l(g,f[g],true,n)!==false||!u(g))?g:d)}else{d=s(h==void 0?-1:h);C(e,g<d&&(l(g,f[g],true,n)!==false||!u(g))?g:d)}}},0)}).bind(\"dblclick.inputmask\",function(){var b=this;a().lastValidPosition!=void 0&&setTimeout(function(){n?C(b,H(a().lastValidPosition),p()):C(b,0,s(a().lastValidPosition))},0)}).bind(\"keydown.inputmask\",V).bind(\"keypress.inputmask\",\n$).bind(\"keyup.inputmask\",Z).bind(ba+\".inputmask dragdrop.inputmask drop.inputmask\",function(){var a=this,b=c(a);setTimeout(function(){D(a,true,false);S(k())&&b.trigger(\"complete\");b.click()},0)}).bind(\"setvalue.inputmask\",function(){a().undoBuffer=this._valueGet();D(this,true);this._valueGet()==f().join(\"\")&&this._valueSet(\"\")}).bind(\"complete.inputmask\",b.oncomplete).bind(\"incomplete.inputmask\",b.onincomplete).bind(\"cleared.inputmask\",b.oncleared);D(j,!0,!1);var X;try{X=document.activeElement}catch(ca){}X===\nj?(v.addClass(\"focus.inputmask\"),C(j,a().lastValidPosition)):b.clearMaskOnLostFocus&&(k().join(\"\")==f().join(\"\")?j._valueSet(\"\"):Q(j));F(j)}};return this}var b=c.extend(!0,{},c.inputmask.defaults,D),I=null!==navigator.userAgent.match(/msie 10/i),aa=null!==navigator.userAgent.match(/iphone/i),T=null!==navigator.userAgent.match(/android.*safari.*/i),ba=function(b){var c=document.createElement(\"input\"),b=\"on\"+b,g=b in c;g||(c.setAttribute(b,\"return;\"),g=\"function\"==typeof c[b]);return g}(\"paste\")&&!I?\n\"paste\":\"input\",Y,o,z=0;T&&(I=navigator.userAgent.match(/safari.*/i),Y=533>=parseInt(RegExp(/[0-9]+/).exec(I)));if(\"string\"===typeof L)switch(L){case \"mask\":return E(b.alias,D),o=Q(),this.each(function(){F(c.extend(true,{},o),0).mask(this)});case \"unmaskedvalue\":return I=c(this),o=I.data(\"inputmask\").masksets,z=I.data(\"inputmask\").activeMasksetIndex,b=I.data(\"inputmask\").opts,F(o,z).unmaskedvalue(this);case \"remove\":return this.each(function(){var e=c(this),d=this;setTimeout(function(){if(e.data(\"inputmask\")){o=\ne.data(\"inputmask\").masksets;z=e.data(\"inputmask\").activeMasksetIndex;b=e.data(\"inputmask\").opts;d._valueSet(F(o,z).unmaskedvalue(e,true));e.removeData(\"inputmask\");e.unbind(\".inputmask\");e.removeClass(\"focus.inputmask\");var c;Object.getOwnPropertyDescriptor&&(c=Object.getOwnPropertyDescriptor(d,\"value\"));if(c&&c.get)d._valueGet&&Object.defineProperty(d,\"value\",{get:d._valueGet,set:d._valueSet});else if(document.__lookupGetter__&&d.__lookupGetter__(\"value\")&&d._valueGet){d.__defineGetter__(\"value\",\nd._valueGet);d.__defineSetter__(\"value\",d._valueSet)}delete d._valueGet;delete d._valueSet}},0)});case \"getemptymask\":return this.data(\"inputmask\")?(o=this.data(\"inputmask\").masksets,z=this.data(\"inputmask\").activeMasksetIndex,o[z]._buffer.join(\"\")):\"\";case \"hasMaskedValue\":return this.data(\"inputmask\")?!this.data(\"inputmask\").opts.autoUnmask:!1;case \"isComplete\":return o=this.data(\"inputmask\").masksets,z=this.data(\"inputmask\").activeMasksetIndex,b=this.data(\"inputmask\").opts,F(o,z).isComplete(this[0]._valueGet().split(\"\"));\ndefault:return E(L,D)||(b.mask=L),o=Q(),this.each(function(){F(c.extend(true,{},o),z).mask(this)})}else{if(\"object\"==typeof L)return b=c.extend(!0,{},c.inputmask.defaults,L),E(b.alias,L),o=Q(),this.each(function(){F(c.extend(true,{},o),z).mask(this)});if(void 0==L)return this.each(function(){var e=c(this).attr(\"data-inputmask\");if(e&&e!=\"\")try{var e=e.replace(RegExp(\"'\",\"g\"),'\"'),d=c.parseJSON(\"{\"+e+\"}\");b=c.extend(true,{},c.inputmask.defaults,D);c.extend(true,b,d);E(b.alias,d);b.alias=void 0;c(this).inputmask(b)}catch(g){}})}return this})})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.numeric.extensions.js",
    "content": "(function(h){h.extend(h.inputmask.defaults.aliases,{decimal:{mask:\"~\",placeholder:\"\",repeat:10,greedy:!1,numericInput:!0,digits:\"*\",groupSeparator:\"\",radixPoint:\".\",groupSize:3,autoGroup:!1,allowPlus:!0,allowMinus:!0,getMaskLength:function(c,f,d,b,a){var e=c.length;!f&&1<d&&(e+=c.length*(d-1));c=h.inputmask.escapeRegex.call(this,a.groupSeparator);a=h.inputmask.escapeRegex.call(this,a.radixPoint);b=b.join(\"\");a=b.replace(RegExp(c,\"g\"),\"\").replace(RegExp(a),\"\");return e+(b.length-a.length)},postFormat:function(c,\nf,d,b){if(\"\"==b.groupSeparator)return f;var a=c.slice(),e=h.inArray(b.radixPoint,c);d||a.splice(0==f||f<=e||b.skipRadixDance?f+1:f,0,\"?\");a=a.join(\"\");if(b.autoGroup||d&&-1!=a.indexOf(b.groupSeparator)){for(var g=h.inputmask.escapeRegex.call(this,b.groupSeparator),a=a.replace(RegExp(g,\"g\"),\"\"),g=a.split(b.radixPoint),a=g[0],j=RegExp(\"([-+]?[\\\\d?]+)([\\\\d?]{\"+b.groupSize+\"})\");j.test(a);)a=a.replace(j,\"$1\"+b.groupSeparator+\"$2\"),a=a.replace(b.groupSeparator+b.groupSeparator,b.groupSeparator);1<g.length&&\n(a+=b.radixPoint+g[1])}c.length=a.length;g=0;for(j=a.length;g<j;g++)c[g]=a.charAt(g);a=h.inArray(\"?\",c);d||c.splice(a,1);return d?f:a<=e||b.skipRadixDance&&0!=a?a-1:a},regex:{number:function(c,f,d,b,a,e){c=h.inputmask.escapeRegex.call(this,c);d=h.inputmask.escapeRegex.call(this,d);b=isNaN(b)?b:\"{0,\"+b+\"}\";return RegExp(\"^\"+(\"[\"+(a?\"+\":\"\")+(e?\"-\":\"\")+\"]?\")+\"(\\\\d+|\\\\d{1,\"+f+\"}((\"+c+\"\\\\d{\"+f+\"})?)+)(\"+d+\"\\\\d\"+b+\")?$\")}},onKeyDown:function(c,f,d){var b=h(this);if(c.keyCode==d.keyCode.TAB){if(c=h.inArray(d.radixPoint,\nf),-1!=c){for(var a=b.data(\"inputmask\").masksets,b=b.data(\"inputmask\").activeMasksetIndex,e=1;e<=d.digits&&e<d.getMaskLength(a[b]._buffer,a[b].greedy,a[b].repeat,f,d);e++)void 0==f[c+e]&&(f[c+e]=\"0\");this._valueSet(f.join(\"\"))}}else if(c.keyCode==d.keyCode.DELETE||c.keyCode==d.keyCode.BACKSPACE)d.postFormat(f,0,!0,d),this._valueSet(f.join(\"\"))},definitions:{\"~\":{validator:function(c,f,d,b,a){if(\"\"==c)return!1;if(1>=d&&\"0\"===f[0]&&/[\\d-]/.test(c))return f[0]=\"\",{pos:0};var e=b?f.slice(0,d):f.slice();\ne.splice(0==d?d:d+1,0,c);e=e.join(\"\");if(a.autoGroup&&!b)var g=h.inputmask.escapeRegex.call(this,a.groupSeparator),e=e.replace(RegExp(g,\"g\"),\"\");g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(e);if(!g&&(e+=\"0\",g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(e),!g)){g=e.lastIndexOf(a.groupSeparator);for(i=e.length-g;3>=i;i++)e+=\"0\";g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,\na.allowPlus,a.allowMinus).test(e);if(!g&&!b&&c==a.radixPoint&&(g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(\"0\"+e+\"0\")))return f[d]=\"0\",d++,{pos:d}}return!1!=g&&!b&&c!=a.radixPoint?{pos:a.postFormat(f,d,!1,a)}:g},cardinality:1,prevalidator:null}},insertMode:!0,autoUnmask:!1},integer:{regex:{number:function(c,f,d,b,a,e){c=h.inputmask.escapeRegex.call(this,c);return RegExp(\"^\"+(\"[\"+(a?\"+\":\"\")+(e?\"-\":\"\")+\"]?\")+\"(\\\\d+|\\\\d{1,\"+f+\"}((\"+c+\"\\\\d{\"+f+\"})?)+)$\")}},\nalias:\"decimal\"}})})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.regex.extensions.js",
    "content": "(function(b){b.extend(b.inputmask.defaults.aliases,{Regex:{mask:\"r\",greedy:!1,repeat:10,regex:null,regexSplit:null,definitions:{r:{validator:function(f,a,c,d,e){null==e.regexSplit&&(e.regexSplit=e.regex.match(RegExp(\"\\\\[.*?]\\\\*\",\"g\")));var b=a.slice(),a=\"\",d=!1;b.splice(c,0,f);f=b.join(\"\");for(c=0;c<e.regexSplit.length&&!(a+=e.regexSplit[c],d=RegExp(\"^\"+a+\"$\").test(f),console.log(f+\" \"+d+\" \"+a),d);c++);return d},cardinality:1}}}})})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.date.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2012 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //date & time aliases\n    $.extend($.inputmask.defaults.definitions, {\n        'h': { //hours\n            validator: \"[01][0-9]|2[0-3]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-2]\", cardinality: 1 }]\n        },\n        's': { //seconds || minutes\n            validator: \"[0-5][0-9]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-5]\", cardinality: 1 }]\n        },\n        'd': { //basic day\n            validator: \"0[1-9]|[12][0-9]|3[01]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-3]\", cardinality: 1 }]\n        },\n        'm': { //basic month\n            validator: \"0[1-9]|1[012]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[01]\", cardinality: 1 }]\n        },\n        'y': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'dd/mm/yyyy': {\n            mask: \"1/2/y\",\n            placeholder: \"dd/mm/yyyy\",\n            regex: {\n                val1pre: new RegExp(\"[0-3]\"), //daypre\n                val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"), //day\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\"); }, //monthpre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\"); }//month\n            },\n            leapday: \"29/02/\",\n            separator: '/',\n            yearrange: { minyear: 1900, maxyear: 2099 },\n            isInYearRange: function (chrs, minyear, maxyear) {\n                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length)));\n                var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) ||\n            \t\t   (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false);\n            },\n            determinebaseyear: function (minyear, maxyear) {\n                var currentyear = (new Date()).getFullYear();\n                if (minyear > currentyear) return minyear;\n                if (maxyear < currentyear) return maxyear;\n\n                return currentyear;\n            },\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());\n                }\n            },\n            definitions: {\n                '1': { //val1 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.val1.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.val1pre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(0, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(0, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                'y': { //year\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                            var dayMonthValue = buffer.join('').substr(0, 6);\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(chrs, 10);//detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        } else return false;\n                    },\n                    cardinality: 4,\n                    prevalidator: [\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 1);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                return { \"pos\": pos };\n                            }\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n                            if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                                var dayMonthValue = buffer.join('').substr(0, 6);\n                                if (dayMonthValue != opts.leapday)\n                                    isValid = true;\n                                else {\n                                    var year = parseInt(chrs, 10);//detect leap year\n                                    if (year % 4 === 0)\n                                        if (year % 100 === 0)\n                                            if (year % 400 === 0)\n                                                isValid = true;\n                                            else isValid = false;\n                                        else isValid = true;\n                                    else isValid = false;\n                                }\n                            } else isValid = false;\n                            if (isValid) {\n                                buffer[pos - 1] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                buffer[pos++] = chrs[0];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    }, cardinality: 2\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                    }, cardinality: 3\n                }\n                    ]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'mm/dd/yyyy': {\n            placeholder: \"mm/dd/yyyy\",\n            alias: \"dd/mm/yyyy\", //reuse functionality of dd/mm/yyyy alias\n            regex: {\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\"); }, //daypre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\"); }, //day\n                val1pre: new RegExp(\"[01]\"), //monthpre\n                val1: new RegExp(\"0[1-9]|1[012]\") //month\n            },\n            leapday: \"02/29/\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());\n                }\n            }\n        },\n        'yyyy/mm/dd': {\n            mask: \"y/1/2\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            leapday: \"/02/29\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());\n                }\n            },\n            definitions: {\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(5, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n\n                        //check leap yeap\n                        if (isValid) {\n                            var dayMonthValue = buffer.join('').substr(4, 4) + chrs;\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(buffer.join('').substr(0, 4), 10);  //detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(5, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            }\n        },\n        'dd.mm.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"dd.mm.yyyy\",\n            leapday: \"29.02.\",\n            separator: '.',\n            alias: \"dd/mm/yyyy\"\n        },\n        'dd-mm-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"dd-mm-yyyy\",\n            leapday: \"29-02-\",\n            separator: '-',\n            alias: \"dd/mm/yyyy\"\n        },\n        'mm.dd.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"mm.dd.yyyy\",\n            leapday: \"02.29.\",\n            separator: '.',\n            alias: \"mm/dd/yyyy\"\n        },\n        'mm-dd-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"mm-dd-yyyy\",\n            leapday: \"02-29-\",\n            separator: '-',\n            alias: \"mm/dd/yyyy\"\n        },\n        'yyyy.mm.dd': {\n            mask: \"y.1.2\",\n            placeholder: \"yyyy.mm.dd\",\n            leapday: \".02.29\",\n            separator: '.',\n            alias: \"yyyy/mm/dd\"\n        },\n        'yyyy-mm-dd': {\n            mask: \"y-1-2\",\n            placeholder: \"yyyy-mm-dd\",\n            leapday: \"-02-29\",\n            separator: '-',\n            alias: \"yyyy/mm/dd\"\n        },\n        'datetime': {\n            mask: \"1/2/y h:s\",\n            placeholder: \"dd/mm/yyyy hh:mm\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                hrspre: new RegExp(\"[012]\"), //hours pre\n                hrs24: new RegExp(\"2[0-9]|1[3-9]\"),\n                hrs: new RegExp(\"[01][0-9]|2[0-3]\"), //hours\n                ampmpre: new RegExp(\"[apAP]\"),\n                ampm: new RegExp(\"^[a|p|A|P][m|M]\")\n            },\n            timeseparator: ':',\n            hourFormat: \"24\", // or 12\n            definitions: {\n                'h': { //hours\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.hrs.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.timeseparator || \"-.:\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    buffer[pos] = chrs.charAt(0);\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                        }\n\n                        if (isValid && opts.hourFormat !== \"24\" && opts.regex.hrs24.test(chrs)) {\n\n                            var tmp = parseInt(chrs, 10);\n\n                            if (tmp == 24) {\n                                buffer[pos + 5] = \"a\";\n                                buffer[pos + 6] = \"m\";\n                            } else {\n                                buffer[pos + 5] = \"p\";\n                                buffer[pos + 6] = \"m\";\n                            }\n\n                            tmp = tmp - 12;\n\n                            if (tmp < 10) {\n                                buffer[pos] = tmp.toString();\n                                buffer[pos - 1] = \"0\";\n                            } else {\n                                buffer[pos] = tmp.toString().charAt(1);\n                                buffer[pos - 1] = tmp.toString().charAt(0);\n                            }\n\n                            return { \"pos\": pos, \"c\": buffer[pos] };\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.hrspre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                't': { //am/pm\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.ampm.test(chrs);\n                        if (!strict && !isValid) {\n                            isValid = opts.regex.ampm.test(chrs + 'm');\n                            if (isValid) {\n                                buffer[pos - 1] = chrs.charAt(0);\n                                buffer[pos] = \"m\";\n                                pos++;\n                                return pos;\n                            }\n                        }\n                        return isValid;\n                    },\n                    casing: \"lower\",\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.ampmpre.test(chrs);\n                            if (isValid) {\n                                isValid = opts.regex.ampm.test(chrs + \"m\");\n                                if (isValid) {\n                                    buffer[pos] = chrs;\n                                    buffer[pos + 1] = 'm';\n                                    return pos;\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'datetime12': {\n            mask: \"1/2/y h:s t\",\n            placeholder: \"dd/mm/yyyy hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'h:s t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm:ss': {\n            mask: \"h:s:s\",\n            autoUnmask: false\n        },\n        'hh:mm': {\n            mask: \"h:s\",\n            autoUnmask: false\n        },\n        'date': {\n            alias: \"dd/mm/yyyy\" // \"mm/dd/yyyy\"\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //extra definitions\n    $.extend($.inputmask.defaults.definitions, {\n        'A': { //auto uppercasing\n            validator: \"[A-Za-z]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        '#': {\n            validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n            cardinality: 1,\n            casing: \"upper\"\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'url': {\n            mask: \"ir\",\n            placeholder: \"\",\n            separator: \"\",\n            defaultPrefix: \"http://\",\n            regex: {\n                urlpre1: new RegExp(\"[fh]\"),\n                urlpre2: new RegExp(\"(ft|ht)\"),\n                urlpre3: new RegExp(\"(ftp|htt)\"),\n                urlpre4: new RegExp(\"(ftp:|http|ftps)\"),\n                urlpre5: new RegExp(\"(ftp:/|ftps:|http:|https)\"),\n                urlpre6: new RegExp(\"(ftp://|ftps:/|http:/|https:)\"),\n                urlpre7: new RegExp(\"(ftp://|ftps://|http://|https:/)\"),\n                urlpre8: new RegExp(\"(ftp://|ftps://|http://|https://)\")\n            },\n            definitions: {\n                'i': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return true;\n                    },\n                    cardinality: 8,\n                    prevalidator: (function () {\n                        var result = [], prefixLimit = 8;\n                        for (var i = 0; i < prefixLimit; i++) {\n                            result[i] = (function () {\n                                var j = i;\n                                return {\n                                    validator: function (chrs, buffer, pos, strict, opts) {\n                                        if (opts.regex[\"urlpre\" + (j + 1)]) {\n                                            var tmp = chrs, k;\n                                            if (((j + 1) - chrs.length) > 0) {\n                                                tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + \"\" + tmp;\n                                            }\n                                            var isValid = opts.regex[\"urlpre\" + (j + 1)].test(tmp);\n                                            if (!strict && !isValid) {\n                                                pos = pos - j;\n                                                for (k = 0; k < opts.defaultPrefix.length; k++) {\n                                                    buffer[pos] = opts.defaultPrefix[k]; pos++;\n                                                }\n                                                for (k = 0; k < tmp.length - 1; k++) {\n                                                    buffer[pos] = tmp[k]; pos++;\n                                                }\n                                                return { \"pos\": pos };\n                                            }\n                                            return isValid;\n                                        } else {\n                                            return false;\n                                        }\n                                    }, cardinality: j\n                                };\n                            })();\n                        }\n                        return result;\n                    })()\n                },\n                \"r\": {\n                    validator: \".\",\n                    cardinality: 50\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        \"ip\": {\n            mask: \"i.i.i.i\",\n            definitions: {\n                'i': {\n                    validator: \"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",\n                    cardinality: 3,\n                    prevalidator: [\n                                { validator: \"[0-2]\", cardinality: 1 },\n                                { validator: \"2[0-5]|[01][0-9]\", cardinality: 2 }\n                    ]\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.js",
    "content": "/**\n* @license Input Mask plugin for jquery\n* http://github.com/RobinHerbots/jquery.inputmask\n* Copyright (c) 2010 - 2013 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 0.0.0\n*/\n\n(function ($) {\n    if ($.fn.inputmask == undefined) {\n        $.inputmask = {\n            //options default\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                escapeChar: \"\\\\\",\n                mask: null,\n                oncomplete: $.noop, //executes when the mask is complete\n                onincomplete: $.noop, //executes when the mask is incomplete and focus is lost\n                oncleared: $.noop, //executes when the mask is cleared\n                repeat: 0, //repetitions of the mask\n                greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed\n                autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\n                clearMaskOnLostFocus: true,\n                insertMode: true, //insert the input or overwrite the input\n                clearIncomplete: false, //clear the incomplete input on blur\n                aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js\n                onKeyUp: $.noop, //override to implement autocomplete on certain keys for example\n                onKeyDown: $.noop, //override to implement autocomplete on certain keys for example\n                showMaskOnFocus: true, //show the mask-placeholder when the input has focus\n                showMaskOnHover: true, //show the mask-placeholder when hovering the empty input\n                onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts\n                skipOptionalPartCharacter: \" \", //a character which can be used to skip an optional part of a mask\n                showTooltip: false, //show the activemask as tooltip\n                //numeric basic properties\n                numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)\n                radixPoint: \"\", //\".\", // | \",\"\n                skipRadixDance: false, //disable radixpoint caret positioning\n                rightAlignNumerics: true, //align numerics to the right\n                //numeric basic properties\n                definitions: {\n                    '9': {\n                        validator: \"[0-9]\",\n                        cardinality: 1\n                    },\n                    'a': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451]\",\n                        cardinality: 1\n                    },\n                    '*': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n                        cardinality: 1\n                    }\n                },\n                keyCode: {\n                    ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,\n                    NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91\n                },\n                //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF\n                ignorables: [9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],\n                getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) {\n                    var calculatedLength = buffer.length;\n                    if (!greedy && repeat > 1) {\n                        calculatedLength += (buffer.length * (repeat - 1));\n                    }\n                    return calculatedLength;\n                }\n            },\n            val: $.fn.val, //store the original jquery val function\n            escapeRegex: function (str) {\n                var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n                return str.replace(new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim'), '\\\\$1');\n            }\n        };\n\n        $.fn.inputmask = function (fn, options) {\n            var opts = $.extend(true, {}, $.inputmask.defaults, options),\n                msie10 = navigator.userAgent.match(new RegExp(\"msie 10\", \"i\")) !== null,\n                iphone = navigator.userAgent.match(new RegExp(\"iphone\", \"i\")) !== null,\n                android = navigator.userAgent.match(new RegExp(\"android.*safari.*\", \"i\")) !== null,\n                pasteEvent = isInputEventSupported('paste') && !msie10 ? 'paste' : 'input',\n                android533,\n                masksets,\n                activeMasksetIndex = 0;\n\n            if (android) {\n                var browser = navigator.userAgent.match(/safari.*/i),\n                    version = parseInt(new RegExp(/[0-9]+/).exec(browser));\n                android533 = (version <= 533);\n                //android534 = (533 < version) && (version <= 534);\n            }\n            if (typeof fn === \"string\") {\n                switch (fn) {\n                    case \"mask\":\n                        //resolve possible aliases given by options\n                        resolveAlias(opts.alias, options);\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), 0).mask(this);\n                        });\n                    case \"unmaskedvalue\":\n                        var $input = $(this), input = this;\n                        masksets = $input.data('inputmask')['masksets'];\n                        activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        opts = $input.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).unmaskedvalue(this);\n                    case \"remove\":\n                        return this.each(function () {\n                            var $input = $(this), input = this;\n                            setTimeout(function () {\n                                if ($input.data('inputmask')) {\n                                    masksets = $input.data('inputmask')['masksets'];\n                                    activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                                    opts = $input.data('inputmask')['opts'];\n                                    //writeout the unmaskedvalue\n                                    input._valueSet(maskScope(masksets, activeMasksetIndex).unmaskedvalue($input, true));\n                                    //clear data\n                                    $input.removeData('inputmask');\n                                    //unbind all events\n                                    $input.unbind(\".inputmask\");\n                                    $input.removeClass('focus.inputmask');\n                                    //restore the value property\n                                    var valueProperty;\n                                    if (Object.getOwnPropertyDescriptor)\n                                        valueProperty = Object.getOwnPropertyDescriptor(input, \"value\");\n                                    if (valueProperty && valueProperty.get) {\n                                        if (input._valueGet) {\n                                            Object.defineProperty(input, \"value\", {\n                                                get: input._valueGet,\n                                                set: input._valueSet\n                                            });\n                                        }\n                                    } else if (document.__lookupGetter__ && input.__lookupGetter__(\"value\")) {\n                                        if (input._valueGet) {\n                                            input.__defineGetter__(\"value\", input._valueGet);\n                                            input.__defineSetter__(\"value\", input._valueSet);\n                                        }\n                                    }\n                                    delete input._valueGet;\n                                    delete input._valueSet;\n                                }\n                            }, 0);\n                        });\n                        break;\n                    case \"getemptymask\": //return the default (empty) mask value, usefull for setting the default value in validation\n                        if (this.data('inputmask')) {\n                            masksets = this.data('inputmask')['masksets'];\n                            activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                            return masksets[activeMasksetIndex]['_buffer'].join('');\n                        }\n                        else return \"\";\n                    case \"hasMaskedValue\": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n                        return this.data('inputmask') ? !this.data('inputmask')['opts'].autoUnmask : false;\n                    case \"isComplete\":\n                        masksets = this.data('inputmask')['masksets'];\n                        activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                        opts = this.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).isComplete(this[0]._valueGet().split(''));\n                    default:\n                        //check if the fn is an alias\n                        if (!resolveAlias(fn, options)) {\n                            //maybe fn is a mask so we try\n                            //set mask\n                            opts.mask = fn;\n                        }\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                        });\n\n                        break;\n                }\n            } else if (typeof fn == \"object\") {\n                opts = $.extend(true, {}, $.inputmask.defaults, fn);\n\n                resolveAlias(opts.alias, fn); //resolve aliases\n                masksets = generateMaskSets();\n\n                return this.each(function () {\n                    maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                });\n            } else if (fn == undefined) {\n                //look for data-inputmask atribute - the attribute should only contain optipns\n                return this.each(function () {\n                    var attrOptions = $(this).attr(\"data-inputmask\");\n                    if (attrOptions && attrOptions != \"\") {\n                        try {\n                            attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"');\n                            var dataoptions = $.parseJSON(\"{\" + attrOptions + \"}\");\n                            opts = $.extend(true, {}, $.inputmask.defaults, options);\n                            $.extend(true, opts, dataoptions);\n                            resolveAlias(opts.alias, dataoptions);\n                            opts.alias = undefined;\n                            $(this).inputmask(opts);\n                        } catch (ex) { } //need a more relax parseJSON\n                    }\n                });\n            }\n\n            //helper functions\n            function isInputEventSupported(eventName) {\n                var el = document.createElement('input'),\n\t\t        eventName = 'on' + eventName,\n\t\t        isSupported = (eventName in el);\n                if (!isSupported) {\n                    el.setAttribute(eventName, 'return;');\n                    isSupported = typeof el[eventName] == 'function';\n                }\n                el = null;\n                return isSupported;\n            }\n            function resolveAlias(aliasStr, options) {\n                var aliasDefinition = opts.aliases[aliasStr];\n                if (aliasDefinition) {\n                    if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias); //alias is another alias\n                    $.extend(true, opts, aliasDefinition);  //merge alias definition in the options\n                    $.extend(true, opts, options);  //reapply extra given options\n                    return true;\n                }\n                return false;\n            }\n            function getMaskTemplate(mask) {\n                var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;\n                if (mask.length == 1 && greedy == false) { opts.placeholder = \"\"; } //hide placeholder with single non-greedy mask\n                var singleMask = $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    }\n                    else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var i = 0; i < maskdef.cardinality; i++) {\n                                outElem.push(getPlaceHolder(outCount + i));\n                            }\n                        } else {\n                            outElem.push(element);\n                            escaped = false;\n                        }\n                        outCount += outElem.length;\n                        return outElem;\n                    }\n                });\n\n                //allocate repetitions\n                var repeatedMask = singleMask.slice();\n                for (var i = 1; i < repeat && greedy; i++) {\n                    repeatedMask = repeatedMask.concat(singleMask.slice());\n                }\n\n                return { \"mask\": repeatedMask, \"repeat\": repeat, \"greedy\": greedy };\n            }\n            //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}\n            function getTestingChain(mask) {\n                var isOptional = false, escaped = false;\n                var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated\n\n                return $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    } else if (element == opts.optionalmarker.start && !escaped) {\n                        isOptional = true;\n                        newBlockMarker = true;\n                    }\n                    else if (element == opts.optionalmarker.end && !escaped) {\n                        isOptional = false;\n                        newBlockMarker = true;\n                    }\n                    else {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            var prevalidators = maskdef[\"prevalidator\"], prevalidatorsL = prevalidators ? prevalidators.length : 0;\n                            for (var i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator[\"validator\"], cardinality = prevalidator[\"cardinality\"];\n                                outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp(\".\"), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                                if (isOptional == true) //reset newBlockMarker\n                                    newBlockMarker = false;\n                            }\n                            outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp(\".\"), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                        } else {\n                            outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element });\n                            escaped = false;\n                        }\n                        //reset newBlockMarker\n                        newBlockMarker = false;\n                        return outElem;\n                    }\n                });\n            }\n            function generateMaskSets() {\n                var ms = [];\n                var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates\n                function markOptional(maskPart) { //needed for the clearOptionalTail functionality\n                    return opts.optionalmarker.start + maskPart + opts.optionalmarker.end;\n                }\n                function splitFirstOptionalEndPart(maskPart) {\n                    var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            optionalStartMarkers++;\n                        }\n                        if (maskPart.charAt(i) == opts.optionalmarker.end) {\n                            optionalEndMarkers++;\n                        }\n                        if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers)\n                            break;\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function splitFirstOptionalStartPart(maskPart) {\n                    var mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            break;\n                        }\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function generateMask(maskPrefix, maskPart) {\n                    var maskParts = splitFirstOptionalEndPart(maskPart);\n                    var newMask, maskTemplate;\n\n                    var masks = splitFirstOptionalStartPart(maskParts[0]);\n                    if (masks.length > 1) {\n                        newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional\n                            generateMask(maskPrefix + masks[0], masks[1] + maskParts[1]);\n                        }\n                        if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) {\n                            generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1]);\n                            generateMask(maskPrefix + masks[0], maskParts[1]);\n                        }\n                    }\n                    else {\n                        newMask = maskPrefix + maskParts;\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                    }\n\n                }\n                if ($.isArray(opts.mask)) {\n                    $.each(opts.mask, function (ndx, lmnt) {\n                        generateMask(\"\", lmnt.toString());\n                    });\n                } else generateMask(\"\", opts.mask.toString());\n\n                return ms;\n            }\n            function getPlaceHolder(pos) {\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n\n            function maskScope(masksets, activeMasksetIndex) {\n                //maskset helperfunctions\n\n                function getActiveMaskSet() {\n                    return masksets[activeMasksetIndex];\n                }\n\n                function getActiveTests() {\n                    return getActiveMaskSet()['tests'];\n                }\n\n                function getActiveBufferTemplate() {\n                    return getActiveMaskSet()['_buffer'];\n                }\n\n                function getActiveBuffer() {\n                    return getActiveMaskSet()['buffer'];\n                }\n\n                function isValid(pos, c, strict, isRTL) { //strict true ~ no correction or autofill\n                    strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions \n\n                    function _isValid(position, activeMaskset) {\n                        var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset[\"buffer\"];\n                        for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) {\n                            chrs += getBufferElement(buffer, testPos - (i - 1));\n                        }\n\n                        if (c) {\n                            chrs += c;\n                        }\n\n                        //return is false or a json object => { pos: ??, c: ??} or true\n                        return activeMaskset['tests'][testPos].fn != null ? activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) : false;\n                    }\n\n                    if (strict) {\n                        var result = _isValid(pos, getActiveMaskSet()); //only check validity in current mask when validating strict\n                        if (result === true) {\n                            result = { \"pos\": pos }; //always take a possible corrected maskposition into account\n                        }\n                        return result;\n                    }\n\n                    var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        activeMasksetIndex = index;\n\n                        var maskPos = pos;\n                        if (currentActiveMasksetIndex != activeMasksetIndex && !isMask(pos)) {\n                            if (c == activeMaskset['_buffer'][maskPos] || c == opts.skipOptionalPartCharacter) { //match non-mask item\n                                results.push({ \"activeMasksetIndex\": index, \"result\": { \"refresh\": true, c: activeMaskset['_buffer'][maskPos] } }); //new command hack only rewrite buffer\n                                activeMaskset['lastValidPosition'] = maskPos;\n                                return false;\n                            } else activeMaskset['lastValidPosition'] = isRTL ? getMaskLength() + 1 : -1; //mark mask as validated and invalid\n                            //maskPos = isRTL ? seekPrevious(pos) : seekNext(pos);\n                        }\n                        if ((activeMaskset['lastValidPosition'] == undefined\n                                && maskPos == (isRTL ? seekPrevious(getMaskLength()) : seekNext(-1))\n                        )\n                            || (isRTL || opts.numericInput)\n                            ? activeMaskset['lastValidPosition'] <= opts.numericInput ? getMaskLength() : seekNext(maskPos)\n                            : activeMaskset['lastValidPosition'] >= seekPrevious(maskPos)) {\n                            if (maskPos >= 0 && maskPos < getMaskLength()) {\n                                result = _isValid(maskPos, activeMaskset);\n                                if (result !== false) {\n                                    if (result === true) {\n                                        result = { \"pos\": maskPos }; //always take a possible corrected maskposition into account\n                                    }\n                                    var newValidPosition = result.pos || maskPos;\n                                    if (activeMaskset['lastValidPosition'] == undefined ||\n                                        (isRTL ? (opts.greedy ? activeMaskset['lastValidPosition'] > newValidPosition : newValidPosition == getActiveBuffer().length - 1)\n                                            : activeMaskset['lastValidPosition'] < newValidPosition))\n                                        activeMaskset['lastValidPosition'] = newValidPosition; //set new position from isValid\n                                } else activeMaskset['lastValidPosition'] = isRTL ? pos == getMaskLength() ? undefined : seekNext(pos) : pos == 0 ? undefined : seekPrevious(pos); //autocorrect validposition from backspace etc  \t\n                                results.push({ \"activeMasksetIndex\": index, \"result\": result });\n                            }\n                        }\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex\n\n                    return results; //return results of the multiple mask validations\n                }\n\n                function determineActiveMasksetIndex(isRTL) {\n                    var currentMasksetIndex = activeMasksetIndex,\n                        highestValid = { \"activeMasksetIndex\": 0, \"lastValidPosition\": isRTL ? getMaskLength() + 1 : -1 };\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        if (activeMaskset['lastValidPosition'] != undefined) {\n                            if ((isRTL || opts.numericInput) ? (activeMaskset['lastValidPosition'] < highestValid['lastValidPosition']) : (activeMaskset['lastValidPosition'] > highestValid['lastValidPosition'])) {\n                                highestValid[\"activeMasksetIndex\"] = index;\n                                highestValid[\"lastValidPosition\"] = activeMaskset['lastValidPosition'];\n                            }\n                        }\n                    });\n                    activeMasksetIndex = highestValid[\"activeMasksetIndex\"];\n                    if (currentMasksetIndex != activeMasksetIndex) {\n                        if (isRTL) {\n                            clearBuffer(getActiveBuffer(), 0, seekPrevious(highestValid[\"lastValidPosition\"]));\n                        } else {\n                            clearBuffer(getActiveBuffer(), seekNext(highestValid[\"lastValidPosition\"]), getMaskLength());\n                        }\n                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                    }\n                }\n\n                function isMask(pos) {\n                    var testPos = determineTestPosition(pos);\n                    var test = getActiveTests()[testPos];\n\n                    return test != undefined ? test.fn : false;\n                }\n\n                function determineTestPosition(pos) {\n                    return pos % getActiveTests().length;\n                }\n\n\n\n                function getMaskLength() {\n                    return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts);\n                }\n\n                //pos: from position\n\n                function seekNext(pos) {\n                    var maskL = getMaskLength();\n                    if (pos >= maskL) return maskL;\n                    var position = pos;\n                    while (++position < maskL && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                //pos: from position\n\n                function seekPrevious(pos) {\n                    var position = pos;\n                    if (position <= 0) return 0;\n\n                    while (--position > 0 && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                function setBufferElement(buffer, position, element, autoPrepare, isRTL) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position, isRTL);\n\n                    var test = getActiveTests()[determineTestPosition(position)];\n                    var elem = element;\n                    if (elem != undefined) {\n                        switch (test.casing) {\n                            case \"upper\":\n                                elem = element.toUpperCase();\n                                break;\n                            case \"lower\":\n                                elem = element.toLowerCase();\n                                break;\n                        }\n                    }\n\n                    buffer[position] = elem;\n                }\n\n                function getBufferElement(buffer, position, autoPrepare) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position);\n                    return buffer[position];\n                }\n\n                //needed to handle the non-greedy mask repetitions\n\n                function prepareBuffer(buffer, position, isRTL) {\n                    var j;\n                    if (isRTL) {\n                        while (position < 0 && buffer.length < getMaskLength()) {\n                            j = getActiveBufferTemplate().length - 1;\n                            position = getActiveBufferTemplate().length;\n                            while (getActiveBufferTemplate()[j] !== undefined) {\n                                buffer.unshift(getActiveBufferTemplate()[j--]);\n                            }\n                        }\n                    } else {\n                        while (buffer[position] == undefined && buffer.length < getMaskLength()) {\n                            j = 0;\n                            while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer\n                                buffer.push(getActiveBufferTemplate()[j++]);\n                            }\n                        }\n                    }\n\n                    return position;\n                }\n\n                function writeBuffer(input, buffer, caretPos) {\n                    input._valueSet(buffer.join(''));\n                    if (caretPos != undefined) {\n                        caret(input, caretPos);\n                    }\n                }\n\n                ;\n\n                function clearBuffer(buffer, start, end) {\n                    for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {\n                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));\n                    }\n                }\n\n                ;\n\n                function setReTargetPlaceHolder(buffer, pos) {\n                    var testPos = determineTestPosition(pos);\n                    setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos));\n                }\n\n                function checkVal(input, writeOut, strict, nptvl) {\n                    var isRTL = $(input).data('inputmask')['isRTL'],\n                        inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet(), isRTL).split('');\n\n                    $.each(masksets, function (ndx, ms) {\n                        ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                        ms[\"lastValidPosition\"] = undefined;\n                        ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                    });\n                    if (strict !== true) activeMasksetIndex = 0;\n                    //caret(input, getActiveMaskSet()[\"p\"]);\n\n                    if (isRTL && !opts.numericInput)\n                        inputValue = inputValue.reverse();\n\n                    var ml = getMaskLength();\n                    $.each(inputValue, function (ndx, charCode) {\n                        var index = isRTL ? (opts.numericInput ? ml : ml - ndx - 1) : ndx;\n                        if (isMask(isRTL ? (opts.numericInput ? seekPrevious(ml) : ml - ndx - 1) : ndx)\n                        || (strict !== true && charCode != getBufferElement(getActiveBufferTemplate(), index, true))) {\n                            $(input).trigger(\"keypress\", [true, charCode.charCodeAt(0), writeOut, strict, index]);\n                        }\n                    });\n                    if (strict === true)\n                        getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"p\"]) : seekPrevious(getActiveMaskSet()[\"p\"]);\n                }\n\n                function escapeRegex(str) {\n                    return $.inputmask.escapeRegex.call(this, str);\n                }\n\n                function truncateInput(inputValue, rtl) {\n                    return rtl ? inputValue.replace(new RegExp(\"^(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*\"), \"\") : inputValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*$\"), \"\");\n                }\n\n                function clearOptionalTail(input) {\n                    var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos;\n                    if ($(input).data('inputmask')['isRTL']) {\n                        for (var pos = 0; pos <= tmpBuffer.length - 1; pos++) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.splice(0, 1);\n                                else break;\n                            } else break;\n                        }\n                    } else {\n                        for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.pop();\n                                else break;\n                            } else break;\n                        }\n                    }\n                    writeBuffer(input, tmpBuffer);\n                }\n\n                //functionality fn\n                this.unmaskedvalue = function ($input, skipDatepickerCheck) {\n                    return unmaskedvalue($input, skipDatepickerCheck);\n                };\n                function unmaskedvalue($input, skipDatepickerCheck) {\n                    var input = $input[0];\n                    if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {\n                        checkVal(input, false, true);\n                        return $.map(getActiveBuffer(), function (element, index) {\n                            return isMask(index) && isValid(index, element, true) ? element : null;\n                        }).join('');\n                    } else {\n                        return input._valueGet();\n                    }\n                }\n\n                var caretSavePoint;\n\n                function caret(input, begin, end) {\n                    var npt = input.jquery && input.length > 0 ? input[0] : input, range;\n                    if (typeof begin == 'number') {\n                        if (!$(input).is(':visible')) {\n                            return;\n                        }\n                        end = (typeof end == 'number') ? end : begin;\n                        if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode\n                        if (npt.setSelectionRange) {\n                            if (android) {\n                                setTimeout(function () {\n                                    npt.selectionStart = begin;\n                                    npt.selectionEnd = android ? begin : end;\n                                }, 10);\n                                caretSavePoint = { \"begin\": begin, \"end\": end };\n                            } else {\n                                npt.selectionStart = begin;\n                                npt.selectionEnd = end;\n                            }\n                        } else if (npt.createTextRange) {\n                            range = npt.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd('character', end);\n                            range.moveStart('character', begin);\n                            range.select();\n                        }\n                    } else {\n                        if (!$(input).is(':visible')) {\n                            return { \"begin\": 0, \"end\": 0 };\n                        }\n                        if (npt.setSelectionRange) {\n                            begin = npt.selectionStart;\n                            end = npt.selectionEnd;\n                        } else if (document.selection && document.selection.createRange) {\n                            range = document.selection.createRange();\n                            begin = 0 - range.duplicate().moveStart('character', -100000);\n                            end = begin + range.text.length;\n                        }\n                        return { \"begin\": begin, \"end\": end };\n                    }\n                };\n\n                this.isComplete = function (buffer) {\n                    return isComplete(buffer);\n                };\n                function isComplete(buffer) {\n                    var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (ndx, ms) {\n                        activeMasksetIndex = ndx;\n                        var aml = seekPrevious(getMaskLength());\n                        if (ms[\"lastValidPosition\"] != undefined && ms[\"lastValidPosition\"] >= highestValidPosition && ms[\"lastValidPosition\"] == aml) {\n                            var msComplete = true;\n                            for (var i = 0; i <= aml; i++) {\n                                var mask = isMask(i), testPos = determineTestPosition(i);\n                                if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) {\n                                    msComplete = false;\n                                    break;\n                                }\n                            }\n                            complete = complete || msComplete;\n                            if (complete) //break loop\n                                return false;\n                        }\n                        highestValidPosition = ms[\"lastValidPosition\"];\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset\n                    return complete;\n                }\n                this.mask = function (el) {\n                    var $input = $(el);\n                    if (!$input.is(\":input\")) return;\n\n                    //store tests & original buffer in the input element - used to get the unmasked value\n                    $input.data('inputmask', {\n                        'masksets': masksets,\n                        'activeMasksetIndex': activeMasksetIndex,\n                        'opts': opts,\n                        'isRTL': false\n                    });\n\n                    //show tooltip\n                    if (opts.showTooltip) {\n                        $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                    }\n\n                    //correct greedy setting if needed\n                    getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0;\n\n                    //handle maxlength attribute\n                    var maxLength = $input.prop('maxLength');\n                    if (getMaskLength() > maxLength && maxLength > -1) { //FF sets no defined max length to -1 \n                        if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength;\n                        if (getActiveMaskSet()['greedy'] == false) {\n                            getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length);\n                        }\n                        $input.prop('maxLength', getMaskLength() * 2);\n                    }\n\n                    patchValueProperty(el);\n\n                    //init vars\n                    getActiveMaskSet()[\"undoBuffer\"] = el._valueGet();\n                    var skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        ignorable = false,\n                        isRTL = false;\n                    if (el.dir == \"rtl\" || opts.numericInput) {\n                        if (el.dir == \"rtl\" || (opts.numericInput && opts.rightAlignNumerics))\n                            $input.css(\"text-align\", \"right\");\n                        el.dir = \"ltr\";\n                        $input.removeAttr(\"dir\");\n                        var inputData = $input.data('inputmask');\n                        inputData['isRTL'] = true;\n                        $input.data('inputmask', inputData);\n                        isRTL = true;\n                    }\n\n                    //unbind all events - to make sure that no other mask will interfere when re-masking\n                    $input.unbind(\".inputmask\");\n                    $input.removeClass('focus.inputmask');\n                    //bind events\n                    $input.bind(\"mouseenter.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer());\n                            }\n                        }\n                    }).bind(\"blur.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer();\n                        $input.removeClass('focus.inputmask');\n                        if (nptValue != getActiveMaskSet()[\"undoBuffer\"]) {\n                            $input.change();\n                        }\n                        if (opts.clearMaskOnLostFocus && nptValue != '') {\n                            if (nptValue == getActiveBufferTemplate().join(''))\n                                input._valueSet('');\n                            else { //clearout optional tail of the mask\n                                clearOptionalTail(input);\n                            }\n                        }\n                        if (!isComplete(buffer)) {\n                            $input.trigger(\"incomplete\");\n                            if (opts.clearIncomplete) {\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                                activeMasksetIndex = 0;\n                                if (opts.clearMaskOnLostFocus)\n                                    input._valueSet('');\n                                else {\n                                    buffer = getActiveBufferTemplate().slice();\n                                    writeBuffer(input, buffer);\n                                }\n                            }\n                        }\n                    }).bind(\"focus.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet();\n                        if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            }\n                        }\n                        $input.addClass('focus.inputmask');\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                    }).bind(\"mouseleave.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (opts.clearMaskOnLostFocus) {\n                            if (!$input.hasClass('focus.inputmask')) {\n                                if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '')\n                                    input._valueSet('');\n                                else { //clearout optional tail of the mask\n                                    clearOptionalTail(input);\n                                }\n                            }\n                        }\n                    }).bind(\"click.inputmask\", function () {\n                        var input = this;\n                        setTimeout(function () {\n                            var selectedCaret = caret(input), buffer = getActiveBuffer();\n                            if (selectedCaret.begin == selectedCaret.end) {\n                                var clickPosition = selectedCaret.begin,\n                                    lvp = getActiveMaskSet()[\"lastValidPosition\"],\n                                    lastPosition;\n\n                                determineInputDirection(input, selectedCaret);\n                                if (isRTL) {\n                                    if (opts.numericInput) {\n                                        lastPosition = opts.skipRadixDance === false && opts.radixPoint != \"\" && $.inArray(opts.radixPoint, buffer) != -1 ? $.inArray(opts.radixPoint, buffer) : getMaskLength();\n                                    } else {\n                                        lastPosition = seekPrevious((lvp == undefined ? getMaskLength() : lvp) + 1);\n                                    }\n                                    caret(input, clickPosition > lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                } else {\n                                    lastPosition = seekNext(lvp == undefined ? -1 : lvp);\n                                    caret(input, clickPosition < lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                }\n                            }\n                        }, 0);\n                    }).bind('dblclick.inputmask', function () {\n                        var input = this;\n                        if (getActiveMaskSet()[\"lastValidPosition\"] != undefined) {\n                            setTimeout(function () {\n                                isRTL ?\n                                    caret(input, seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]), getMaskLength()) :\n                                    caret(input, 0, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n                            }, 0);\n                        }\n                    }).bind(\"keydown.inputmask\", keydownEvent\n                    ).bind(\"keypress.inputmask\", keypressEvent\n                    ).bind(\"keyup.inputmask\", keyupEvent\n                    ).bind(pasteEvent + \".inputmask dragdrop.inputmask drop.inputmask\", function () {\n                        var input = this, $input = $(input);\n                        setTimeout(function () {\n                            checkVal(input, true, false);\n                            if (isComplete(getActiveBuffer()))\n                                $input.trigger(\"complete\");\n                            $input.click();\n                        }, 0);\n                    }).bind('setvalue.inputmask', function () {\n                        var input = this;\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        checkVal(input, true);\n                        if (input._valueGet() == getActiveBufferTemplate().join(''))\n                            input._valueSet('');\n                    }).bind('complete.inputmask', opts.oncomplete)\n                        .bind('incomplete.inputmask', opts.onincomplete)\n                        .bind('cleared.inputmask', opts.oncleared);\n\n                    //apply mask\n                    checkVal(el, true, false);\n                    // Wrap document.activeElement in a try/catch block since IE9 throw \"Unspecified error\" if document.activeElement is undefined when we are in an IFrame.\n                    var activeElement;\n                    try {\n                        activeElement = document.activeElement;\n                    } catch (e) {\n                    }\n                    if (activeElement === el) { //position the caret when in focus\n                        $input.addClass('focus.inputmask');\n                        caret(el, getActiveMaskSet()[\"lastValidPosition\"]);\n                    } else if (opts.clearMaskOnLostFocus) {\n                        if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) {\n                            el._valueSet('');\n                        } else {\n                            clearOptionalTail(el);\n                        }\n                    }\n\n                    installEventRuler(el);\n\n                    //private functions\n\n                    function installEventRuler(npt) {\n                        var events = $._data(npt).events;\n\n                        $.each(events, function (eventType, eventHandlers) {\n                            $.each(eventHandlers, function (ndx, eventHandler) {\n                                if (eventHandler.namespace == \"inputmask\") {\n                                    var handler = eventHandler.handler;\n                                    eventHandler.handler = function (e) {\n                                        if (this.readOnly || this.disabled)\n                                            e.preventDefault;\n                                        else\n                                            return handler.apply(this, arguments);\n                                    };\n                                }\n                            });\n                        });\n                    }\n\n                    function patchValueProperty(npt) {\n                        var valueProperty;\n                        if (Object.getOwnPropertyDescriptor)\n                            valueProperty = Object.getOwnPropertyDescriptor(npt, \"value\");\n                        if (valueProperty && valueProperty.get) {\n                            if (!npt._valueGet) {\n\n                                npt._valueGet = valueProperty.get;\n                                npt._valueSet = valueProperty.set;\n\n                                Object.defineProperty(npt, \"value\", {\n                                    get: function () {\n                                        var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                            activeMasksetIndex = inputData['activeMasksetIndex'];\n                                        return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                    },\n                                    set: function (value) {\n                                        this._valueSet(value);\n                                        $(this).triggerHandler('setvalue.inputmask');\n                                    }\n                                });\n                            }\n                        } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                            if (!npt._valueGet) {\n                                npt._valueGet = npt.__lookupGetter__(\"value\");\n                                npt._valueSet = npt.__lookupSetter__(\"value\");\n\n                                npt.__defineGetter__(\"value\", function () {\n                                    var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                        activeMasksetIndex = inputData['activeMasksetIndex'];\n                                    return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                });\n                                npt.__defineSetter__(\"value\", function (value) {\n                                    this._valueSet(value);\n                                    $(this).triggerHandler('setvalue.inputmask');\n                                });\n                            }\n                        } else {\n                            if (!npt._valueGet) {\n                                npt._valueGet = function () { return this.value; };\n                                npt._valueSet = function (value) { this.value = value; };\n                            }\n                            if ($.fn.val.inputmaskpatch != true) {\n                                $.fn.val = function () {\n                                    if (arguments.length == 0) {\n                                        var $self = $(this);\n                                        if ($self.data('inputmask')) {\n                                            if ($self.data('inputmask')['opts'].autoUnmask)\n                                                return $self.inputmask('unmaskedvalue');\n                                            else {\n                                                var result = $.inputmask.val.apply($self);\n                                                var inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                                    activeMasksetIndex = inputData['activeMasksetIndex'];\n                                                return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';\n                                            }\n                                        } else return $.inputmask.val.apply($self);\n                                    } else {\n                                        var args = arguments;\n                                        return this.each(function () {\n                                            var $self = $(this);\n                                            var result = $.inputmask.val.apply($self, args);\n                                            if ($self.data('inputmask')) $self.triggerHandler('setvalue.inputmask');\n                                            return result;\n                                        });\n                                    }\n                                };\n                                $.extend($.fn.val, {\n                                    inputmaskpatch: true\n                                });\n                            }\n                        }\n                    }\n\n                    function determineInputDirection(input, pos) {\n                        //set input direction according the position to the radixPoint\n                        if (opts.numericInput && opts.radixPoint != \"\" && opts.skipRadixDance === false) {\n                            var nptStr = input._valueGet();\n                            var radixPosition = nptStr.indexOf(opts.radixPoint);\n                            isRTL = pos.begin <= radixPosition || pos.end <= radixPosition || radixPosition == -1;\n                        }\n                    }\n\n                    //shift chars to left from start to end and put c at end position if defined\n\n                    function shiftL(start, end, c) {\n                        var buffer = getActiveBuffer();\n                        while (!isMask(start) && start - 1 >= 0) start--; //jumping over nonmask position\n                        for (var i = start; i < end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                setReTargetPlaceHolder(buffer, i);\n                                var j = seekNext(i);\n                                var p = getBufferElement(buffer, j);\n                                if (p != getPlaceHolder(j)) {\n                                    if (j < getMaskLength() && isValid(i, p, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n                                        setBufferElement(buffer, i, getBufferElement(buffer, j), true, isRTL);\n                                        if (j < end) {\n                                            setReTargetPlaceHolder(buffer, j); //cleanup next position\n                                        }\n                                    } else {\n                                        if (isMask(i))\n                                            break;\n                                    }\n                                } //else if (c == undefined) break;\n                            } else {\n                                setReTargetPlaceHolder(buffer, i);\n                            }\n                        }\n                        if (c != undefined)\n                            setBufferElement(buffer, isRTL ? end : seekPrevious(end), c);\n\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return start; //return the used start position\n                    }\n\n                    function shiftR(start, end, c, full) { //full => behave like a push right ~ do not stop on placeholders\n                        var buffer = getActiveBuffer();\n                        for (var i = start; i <= end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                var t = getBufferElement(buffer, i);\n                                setBufferElement(buffer, i, c, true, isRTL);\n                                if (t != getPlaceHolder(i)) {\n                                    var j = seekNext(i);\n                                    if (j < getMaskLength()) {\n                                        if (isValid(j, t, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def)\n                                            c = t;\n                                        else {\n                                            if (isMask(j))\n                                                break;\n                                            else c = t;\n                                        }\n                                    } else break;\n                                } else {\n                                    c = t;\n                                    if (full !== true) break;\n                                }\n                            } else\n                                setReTargetPlaceHolder(buffer, i);\n                        }\n                        var lengthBefore = buffer.length;\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return end - (lengthBefore - buffer.length); //return new start position\n                    }\n\n                    ;\n\n                    function keydownEvent(e) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        skipKeyPressEvent = false;\n\n                        var input = this, k = e.keyCode, pos = caret(input);\n                        determineInputDirection(input, pos);\n\n                        //backspace, delete, and escape get special treatment\n                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete\n                            e.preventDefault(); //stop default action but allow propagation\n                            var beginPos = pos.begin;\n                            if (pos.begin == 0 && pos.end == getMaskLength()) {\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                            } else if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) { //partial selection\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                var ml = getMaskLength();\n                                if (opts.greedy == false) {\n                                    isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                } else {\n                                    for (var i = pos.begin; i < pos.end; i++) {\n                                        if (isMask(i))\n                                            isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                    }\n                                }\n                                checkVal(input, false, true, getActiveBuffer());\n                            } else {\n                                $.each(masksets, function (ndx, ms) {\n                                    activeMasksetIndex = ndx;\n                                    beginPos = android533 ? pos.end : pos.begin;\n                                    var buffer = getActiveBuffer(), firstMaskPos = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1),\n                                        maskL = getMaskLength();\n                                    if (k == opts.keyCode.DELETE) { //handle delete\n                                        if (isRTL ? beginPos > firstMaskPos : beginPos < firstMaskPos)\n                                            beginPos = firstMaskPos;\n                                        if (beginPos < maskL) {\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : seekNext(beginPos);\n                                                beginPos = shiftL(beginPos, maskL);\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        }\n                                    } else if (k == opts.keyCode.BACKSPACE) { //handle backspace\n                                        if (isRTL ? beginPos <= firstMaskPos : beginPos > firstMaskPos) {\n                                            beginPos -= 1;\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = shiftR(0, (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : beginPos - 1, getPlaceHolder(beginPos), true);\n                                                beginPos++;\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = buffer[beginPos + 1] == opts.radixPoint ? beginPos + 1 : seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        } else if (activeMasksetIndex > 0) { //retry other masks\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                            getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                            getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                            //init first \n                                            activeMasksetIndex = 0;\n                                            getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                                            getActiveMaskSet()[\"p\"] = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1);\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                        }\n                                    }\n                                });\n\n                            }\n\n                            determineActiveMasksetIndex(isRTL);\n                            writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            if (input._valueGet() == getActiveBufferTemplate().join(''))\n                                $(input).trigger('cleared');\n\n                            if (opts.showTooltip) { //update tooltip\n                                $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                            }\n                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch\n                            setTimeout(function () {\n                                var caretPos = isRTL ? getActiveMaskSet()[\"lastValidPosition\"] : seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n                                if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;\n                                caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);\n                            }, 0);\n                        } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up\n                            caret(input, 0, e.shiftKey ? pos.begin : 0);\n                        } else if (k == opts.keyCode.ESCAPE) { //escape\n                            input._valueSet(getActiveMaskSet()[\"undoBuffer\"]);\n                            checkVal(input, true, true);\n                        } else if (k == opts.keyCode.INSERT) { //insert\n                            opts.insertMode = !opts.insertMode;\n                            caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);\n                        } else if (opts.insertMode == false && !e.shiftKey) {\n                            if (k == opts.keyCode.RIGHT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin);\n                                }, 0);\n                            } else if (k == opts.keyCode.LEFT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin - 1);\n                                }, 0);\n                            }\n                        }\n\n                        opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown\n                        ignorable = $.inArray(k, opts.ignorables) != -1;\n                    }\n\n                    function keypressEvent(e, checkval, k, writeOut, strict, ndx) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        if (k == undefined && skipKeyPressEvent) return false;\n                        skipKeyPressEvent = true;\n\n                        var input = this, $input = $(input);\n\n                        e = e || window.event;\n                        var k = k || e.which || e.charCode || e.keyCode,\n                            c = String.fromCharCode(k);\n\n                        if ((e.ctrlKey || e.metaKey || ignorable) && checkval !== true) {\n                            return true;\n                        } else {\n                            if (k) {\n                                var pos, results, result;\n                                if (checkval) {\n                                    var pcaret = strict ? ndx : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]);\n                                    pos = { begin: pcaret, end: pcaret };\n                                } else {\n                                    pos = caret(input);\n                                }\n\n                                //clear possible selection\n                                var initialIndex = activeMasksetIndex, selectionCleared = false;\n                                $.each(masksets, function (ndx, lmnt) {\n                                    activeMasksetIndex = ndx;\n                                    getActiveMaskSet()[\"undoBuffer\"] = getActiveBuffer().join('');\n                                    if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) {\n                                        var posend = pos.end < getMaskLength() ? pos.end : getMaskLength();\n                                        clearBuffer(getActiveBuffer(), pos.begin, posend);\n                                        var ml = getMaskLength();\n                                        if (opts.greedy == false) {\n                                            isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                        } else {\n                                            for (var i = pos.begin; i < posend; i++) {\n                                                if (isMask(i))\n                                                    isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                            }\n                                        }\n                                        selectionCleared = true;\n                                    }\n                                });\n                                activeMasksetIndex = initialIndex; //restore index\n\n                                if (isRTL) {\n                                    var p = seekPrevious(selectionCleared ? pos.begin : pos.end);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                var maskL = getMaskLength(); //update masklength to include possible groupSeparator offset\n                                                var firstMaskPos = seekNext(-1), firstUnmaskedPosition = firstMaskPos;\n                                                if (opts.insertMode == true) {\n                                                    if (getActiveMaskSet()['greedy'] == true) {\n                                                        var bfrClone = buffer.slice();\n                                                        while (getBufferElement(bfrClone, firstUnmaskedPosition, true) != getPlaceHolder(firstUnmaskedPosition) && firstUnmaskedPosition <= p) {\n                                                            firstUnmaskedPosition = firstUnmaskedPosition == maskL ? (maskL + 1) : seekNext(firstUnmaskedPosition);\n                                                        }\n                                                    }\n                                                    if (firstUnmaskedPosition <= p && (getActiveMaskSet()['greedy'] || (buffer.length < maskL || getBufferElement(buffer, p) == getPlaceHolder(p)))) {\n                                                        if (buffer[firstMaskPos] != getPlaceHolder(firstMaskPos) && buffer.length < maskL) {\n                                                            var offset = prepareBuffer(buffer, -1, isRTL);\n                                                            if ((selectionCleared ? pos.begin : pos.end) != 0) p = p + offset;\n                                                            maskL = buffer.length;\n                                                        }\n                                                        shiftL(firstUnmaskedPosition, p, c);\n                                                    } else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = p;\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]));\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                } else {\n                                    var p = seekNext(pos.begin - 1);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                if (opts.insertMode == true) {\n                                                    var lastUnmaskedPosition = getMaskLength();\n                                                    var bfrClone = buffer.slice();\n                                                    while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) {\n                                                        lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition);\n                                                    }\n                                                    if (lastUnmaskedPosition >= p)\n                                                        shiftR(p, buffer.length, c);\n                                                    else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = seekNext(p);\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var p = getActiveMaskSet()[\"p\"], buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : p);\n\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                }\n                                if (android && checkval !== true) {\n                                    caret(input, caretSavePoint.begin, caretSavePoint.end);\n                                }\n                                if (opts.showTooltip) { //update tooltip\n                                    $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                                }\n                                e.preventDefault();\n                            }\n                        }\n                    }\n\n                    function keyupEvent(e) {\n                        var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();\n                        opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup\n                        if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {\n                            buffer = getActiveBufferTemplate().slice();\n                            writeBuffer(input, buffer);\n                            if (!isRTL) caret(input, 0);\n                            getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        }\n                    }\n                };\n                return this;\n            };\n            return this;\n        };\n    }\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.numeric.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //number aliases\n    $.extend($.inputmask.defaults.aliases, {\n        'decimal': {\n            mask: \"~\",\n            placeholder: \"\",\n            repeat: 10,\n            greedy: false,\n            numericInput: true,\n            digits: \"*\", //numer of digits\n            groupSeparator: \"\",//\",\", // | \".\"\n            radixPoint: \".\",\n            groupSize: 3,\n            autoGroup: false,\n            allowPlus: true,\n            allowMinus: true,\n            getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account\n                var calculatedLength = buffer.length;\n\n                if (!greedy && repeat > 1) {\n                    calculatedLength += (buffer.length * (repeat - 1));\n                }\n\n                var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);\n                var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), \"\").replace(new RegExp(escapedRadixPoint), \"\"),\n                groupOffset = currentBufferStr.length - strippedBufferStr.length;\n                return calculatedLength + groupOffset;\n            },\n            postFormat: function (buffer, pos, reformatOnly, opts) {\n                if (opts.groupSeparator == \"\") return pos;\n                var cbuf = buffer.slice(),\n                    radixPos = $.inArray(opts.radixPoint, buffer);\n                if (!reformatOnly) {\n                    cbuf.splice(pos == 0 || pos <= radixPos || opts.skipRadixDance ? pos + 1 : pos, 0, \"?\"); //set position indicator\n                }\n                var bufVal = cbuf.join('');\n                if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                    bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                    var radixSplit = bufVal.split(opts.radixPoint);\n                    bufVal = radixSplit[0];\n                    var reg = new RegExp('([-\\+]?[\\\\d\\?]+)([\\\\d\\?]{' + opts.groupSize + '})');\n                    while (reg.test(bufVal)) {\n                        bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');\n                        bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);\n                    }\n                    if (radixSplit.length > 1)\n                        bufVal += opts.radixPoint + radixSplit[1];\n                }\n                buffer.length = bufVal.length; //align the length\n                for (var i = 0, l = bufVal.length; i < l; i++) {\n                    buffer[i] = bufVal.charAt(i);\n                }\n                var newPos = $.inArray(\"?\", buffer);\n                if (!reformatOnly) buffer.splice(newPos, 1);\n\n                return reformatOnly ? pos : newPos <= radixPos || (opts.skipRadixDance && newPos != 0) ? newPos - 1 : newPos;\n            },\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var escapedRadixPoint = $.inputmask.escapeRegex.call(this, radixPoint);\n                    var digitExpression = isNaN(digits) ? digits : '{0,' + digits + '}';\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)(\" + escapedRadixPoint + \"\\\\d\" + digitExpression + \")?$\");\n                }\n            },\n            onKeyDown: function (e, buffer, opts) {\n                var $input = $(this), input = this;\n                if (e.keyCode == opts.keyCode.TAB) {\n                    var radixPosition = $.inArray(opts.radixPoint, buffer);\n                    if (radixPosition != -1) {\n                        var masksets = $input.data('inputmask')['masksets'];\n                        var activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex][\"_buffer\"], masksets[activeMasksetIndex][\"greedy\"], masksets[activeMasksetIndex][\"repeat\"], buffer, opts) ; i++) {\n                            if (buffer[radixPosition + i] == undefined) buffer[radixPosition + i] = \"0\";\n                        }\n                        input._valueSet(buffer.join(''));\n                    }\n                } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) {\n                    opts.postFormat(buffer, 0, true, opts);\n                    input._valueSet(buffer.join(''));\n                }\n            },\n            definitions: {\n                '~': { //real number\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (chrs == \"\") return false;\n                        if (pos <= 1 && buffer[0] === '0' && new RegExp(\"[\\\\d-]\").test(chrs)) { //handle first char\n                            buffer[0] = \"\";\n                            return { \"pos\": 0 };\n                        }\n\n                        var cbuf = strict ? buffer.slice(0, pos) : buffer.slice();\n\n                        cbuf.splice(pos == 0 ? pos : pos + 1, 0, chrs);\n                        var bufferStr = cbuf.join('');\n                        if (opts.autoGroup && !strict) { //strip groupseparator\n                            var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                            bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                        }\n                        var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                        if (!isValid) {\n                            //let's help the regex a bit\n                            bufferStr += \"0\";\n                            isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                            if (!isValid) {\n                                //make a valid group\n                                var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator);\n                                for (i = bufferStr.length - lastGroupSeparator; i <= 3; i++) {\n                                    bufferStr += \"0\";\n                                }\n\n                                isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                                if (!isValid && !strict) {\n                                    if (chrs == opts.radixPoint) {\n                                        isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(\"0\" + bufferStr + \"0\");\n                                        if (isValid) {\n                                            buffer[pos] = \"0\";\n                                            pos++;\n                                            return { \"pos\": pos };\n                                        }\n                                    }\n                                }\n                            }\n                        }\n\n                        if (isValid != false && !strict && chrs != opts.radixPoint) {\n                            var newPos = opts.postFormat(buffer, pos, false, opts);\n                            return { \"pos\": newPos };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    prevalidator: null\n                }\n            },\n            insertMode: true,\n            autoUnmask: false\n        },\n        'integer': {\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)$\");\n                }\n            },\n            alias: \"decimal\"\n        }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.regex.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nRegex extensions on the jquery.inputmask base\nAllows for using regular expressions as a mask\n*/\n(function ($) {\n    $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask(\"Regex\", { regex: \"[0-9]*\"}\n        'Regex': {\n            mask: \"r\",\n            greedy: false,\n            repeat: 10, //needs to be computed\n            regex: null,\n            regexSplit: null,\n            definitions: {\n                'r': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n\n                        function analyseRegex() {  //ENHANCE ME\n                            var regexSplitRegex = \"\\\\[.*?\\]\\\\*\";\n\n                            opts.regexSplit = opts.regex.match(new RegExp(regexSplitRegex, \"g\"));\n\n                            //if (opts.regex.indexOf(\"*\") != (opts.regex.length - 1)) {\n                            //    opts.regex += \"{1}\";\n                            //}\n                            //opts.regexSplit.push(opts.regex);\n                        }\n\n                        if (opts.regexSplit == null) {\n                            analyseRegex();\n                        }\n\n                        var cbuffer = buffer.slice(), regexPart = \"\", isValid = false;\n                        cbuffer.splice(pos, 0, chrs);\n                        var bufferStr = cbuffer.join('');\n                        for (var i = 0; i < opts.regexSplit.length; i++) {\n                            regexPart += opts.regexSplit[i];\n                            var exp = new RegExp(\"^\" + regexPart + \"$\");\n                            isValid = exp.test(bufferStr);\n                            console.log(bufferStr + ' ' + isValid + ' ' + regexPart);\n                            if (isValid) break;\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 1\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/README.md",
    "content": "[jQuery Validation Plugin](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) - Form validation made easy\n================================\n\nThe jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy.\n\n## [Help the project](http://pledgie.com/campaigns/18159)\n\nThis project is looking for help! [You can donate to the ongoing pledgie campaign](http://pledgie.com/campaigns/18159)\nand help spread the word. If you've used the plugin, or plan to use, consider a donation - any amount will help.\n\nYou can find the plan for how to spend the money on the [pledgie page](http://pledgie.com/campaigns/18159).\n\n## Getting Started\n\nInclude jQuery and the plugin on a page. Then select a form to validate and call the `validate` method.\n\n```html\n<form>\n\t<input required>\n</form>\n<script src=\"jquery.js\"></script>\n<script src=\"jquery.validation.js\"></script>\n<script>\n$(\"form\").validate();\n</script>\n```\n\nFor more information on how to setup a rules and customizations, [check the documentation](http://docs.jquery.com/Plugins/Validation).\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\nIf you've wrote custom methods that you'd like to contribute to additional-methods.js, create a branch, add the method there and send a pull request for that branch.\n\nIf you've wrote a patch for some bug listed on http://plugins.jquery.com/project/issues/validate, please provide a link to that issue in your commit message.\n\n## License\nCopyright (c) 2012 Jörn Zaefferer\nLicensed under the MIT license.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/changelog.txt",
    "content": "1.10.0 / 2012-09-07\n===================\n\n  * Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback.\n  * rename files for language_REGION according to the standard ISO_3166-1 (http://en.wikipedia.org/wiki/ISO_3166-1), for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW)\n  * Optimise RegEx patterns, especially for UK phone numbers.\n  * Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)\n  * Added croatian (HR) localization\n  * Existing French translations were edited and French translations for the additional methods were added.\n  * Merged in changes for specifying custom error messages in data attributes\n  * Updated UK Mobile phone number regex for new numbers. Fixes #154\n  * Add element to success call with test. Fixes #60\n  * Fixed regex for time additional method. Fixes #131\n  * resetForm now clears old previousValue on form elements. Fixes #312\n  * Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359\n  * Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405\n  * Added jQuery Mobile demo. Fixes #249\n  * Deoptimize findByName for correctness. Fixes #82 - $.validator.prototype.findByName breaks in IE7\n  * Added US zip code support and test. Fixes #90\n  * Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244\n  * Removed number stripping from stripHtml. Fixes #2\n  * Fixed invalid count on invalid to valid remote validation. Fixes #286\n  * Add link to file_input to demo index\n  * Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369\n  * Disables blur event when onfocusout is set to false. Test added.\n  * Fixed value issue for radio buttons and checkboxes. Fixes #363\n  * Added test for rangeWords and fixed regex and bounds in method. Fixes #308\n  * Fixed TinyMCE Demo and added link on demo page. Fixes #382\n  * Changed localization message for min/max. Fixes #273\n  * Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217\n  * Fixed delegate bug for dynamic-totals demo. Fixes #51\n  * Fix incorrect message for alphanumeric validator\n  * Removed incorrect false check on required attribute\n  * required attribute fix for non-html5 browsers. Fixes #301\n  * Added methods \"require_from_group\" and \"skip_or_fill_minimum\"\n  * Use correct iso code for swedish\n  * Updated demo HTML files to use HTML5 doctype\n  * Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41\n  * Introduce a elementValue method that normalizes only string values (don't touch array value of multi-select). Fixes #116\n  * Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9\n  * Fix bad double quote in test fixtures\n  * Fix maxWords method to include the upper bound, not exclude it. Fixes #284\n  * Fixed grammar error in german range validator message. Fixes #315\n  * Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280\n  * Fix jQuery.format usage, should be $.validator.format. Fixes #329\n  * Methods for 'all' UK phone numbers + UK postcodes\n  * Pattern method: Convert string param to RegExp. Fixes issue #223\n  * grammar error in german localization file\n  * Added Estonian localization for messages\n  * Improve tooltip handling on themerollered demo\n  * Add type=\"text\" to input fields without type attribute to please qSA\n  * Update themerollered demo to use tooltip to show errors as overlay.\n  * Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load.\n  * Fixed min error message broken in Japanese.\n  * Update form plugin to latest version. Enhance the ajaxSubmit demo.\n  * Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods\n  * Passing submit event to submitHandler callback\n  * Fixed #219 - Fix valid() on elements with dependency-callback or dependency-expression.\n  * Improve build to remove dist dir to ensure only the current release gets zipped up\n\n1.9.0\n---\n* Added Basque (EU) localization\n* Added Slovenian (SL) localization\n* Fixed issue #127 - Finnish translations has one : instead of ;\n* Fixed Russian localization, minor syntax issue\n* Added in support for HTML5 input types, fixes #97\n* Improved HTML5 support by setting novalidate attribute on the form, and reading the type attribute.\n* Fixed showLabel() removing all classes from error element. Remove only settings.validClass. Fixes #151.\n* Added 'pattern' to additional-methods to validate against arbitraty regular expressions.\n* Improved email method to not allow the dot at the end (valid by RFC, but unwanted here). Fixes #143\n* Fixed swedish and norwedian translations, min/max messages got switched. Fixes #181\n* Fixed #184 - resetForm: should unset lastElement\n* Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format\n* Fixed #177 - Fix validation of a single radio or checkbox input\n* Fixed #189 - :hidden elements are now ignored by default\n* Fixed #194 - Required as attribute fails if jQuery>=1.6 - Use .prop instead of .attr\n* Fixed #47, #39, #32 - Allowed credit card numbers to contain spaces as well as dashes (spaces are commonly input by users).\n\n1.8.1\n---\n* Added Thai (TH) localization, fixes #85\n* Added Vietnamese (VI) localization, thanks Ngoc\n* Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation.\n* Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form).\n\n1.8.0\n---\n* Improved NL localization (http://plugins.jquery.com/node/14120)\n* Added Georgian (GE) localization, thanks Avtandil Kikabidze\n* Added Serbian (SR) localization, thanks Aleksandar Milovac\n* Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal\n* Added Japanese (JA) localization, thanks Bryan Meyerovich\n* Added Catalan (CA) localization, thanks Xavier de Pedro\n* Fixed missing var statements within for-in loops\n* Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11)\n* Bugfixes for compability with jQuery 1.5.1, while maintaining backwards-compability\n\n1.7\n---\n* Added Lithuanian (LT) localization\n* Added Greek (EL) localization (http://plugins.jquery.com/node/12319)\n* Added Latvian (LV) localization (http://plugins.jquery.com/node/12349)\n* Added Hebrew (HE) localization (http://plugins.jquery.com/node/12039)\n* Fixed Spanish (ES) localization (http://plugins.jquery.com/node/12696)\n* Added jQuery UI themerolled demo\n* Removed cmxform.js\n* Fixed four missing semicolons (http://plugins.jquery.com/node/12639)\n* Renamed phone-method in additional-methods.js to phoneUS\n* Added phoneUK and mobileUK methods to additional-methods.js (http://plugins.jquery.com/node/12359)\n* Deep extend options to avoid modifying multiple forms when using the rules-method on a single element (http://plugins.jquery.com/node/12411)\n* Bugfixes for compability with jQuery 1.4.2, while maintaining backwards-compability\n\n1.6\n---\n* Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization\n* Updated Swedish (SE) localization (some missing html iso characters)\n* Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument\n* Fixed two accidental global variables\n* Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor\n* Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead)\n* Fixed remote form submit synchronization, kudos to Matas Petrikas\n* Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520\n* Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487\n* Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450\n* Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239\n* Fixed default message for digits (http://plugins.jquery.com/node/9853)\n* Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351)\n* Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233)\n* Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195)\n* Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144)\n* Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612)\n* Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611)\n\n1.5.5\n---\n* Fix for http://plugins.jquery.com/node/8659\n* Fixed trailing comma in messages_cs.js\n\n1.5.4\n---\n* Fixed remote method bug (http://plugins.jquery.com/node/8658)\n\n1.5.3\n---\n* Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624)\n* Updated multipart demo to use latest jQuery UI accordion\n* Added dateNL and time methods to additionalMethods.js\n* Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization\n* Moved jQuery.format (fomerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details)\n* Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4)\n* Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481)\n* Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443)\n* Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585)\n* Added option validClass, default \"valid\", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205)\n* Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635)\n* Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807)\n* Improved accept method to also accept a Drupal-style comma-seperated list of values (http://plugins.jquery.com/node/8580)\n\n1.5.2\n---\n* Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format\n* Fixed value passed to methods to exclude carriage return (\\r), same as jQuery's val() does\n* Added slovak (sk) localization\n* Added demo for intergration with jQuery UI tabs\n* Added selects-grouping example to tabs demo (see second tab, birthdate field)\n\n1.5.1\n---\n* Updated marketo demo to use invalidHandler option instead of binding invalid-form event\n* Added TinyMCE integration example\n* Added ukrainian (ua) localization\n* Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed)\n* Various small fixes for compability with both 1.2.6 and 1.3\n\n1.5\n---\n* Improved basic demo, validating confirm-password field after password changed\n* Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method that rely on the trimming\n* Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization\n* Fixed #3195: Two flaws in swedish localization\n* Fixed #3503: Extended rules(\"add\") to accept messages propery: use to specify add custom messages to an element via rules(\"add\", { messages: { required: \"Required! \" } });\n* Fixed #3356: Regression from #2908 when using meta-option\n* Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compability\n* Fixed #3516: Trigger invalid-form event even when remote validation is involved\n* Added invalidHandler option as a shortcut to bind(\"invalid-form\", function() {})\n* Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide)\n* Added test for creditcard validation and improved default message\n* Enhanced remote validation, accepting options to passthrough to $.ajax as paramter (either url string or options, including url property plus everything else that $.ajax supports)\n\n1.4\n---\n* Fixed #2931, validate elements in document order and ignore type=image inputs\n* Fixed usage of $ and jQuery variables, now fully comptible with all variations of noConflict usage\n* Implemented #2908, enabling custom messages via metadata ala class=\"{required:true,messages:{required:'required field'}}\", added demo/custom-messages-metadata-demo.html\n* Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength)\n* Fixed #2215 regression: Call unhighlight only for current elements, not everything\n* Implemented #2989, enabling image button to cancel validation\n* Fixed issue where IE incorrectly validates against maxlength=0\n* Added czech (cs) localization\n* Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary\n* Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0)\n* Added dutch (nl) localization (#3201)\n\n1.3\n---\n* Fixed invalid-form event, now only triggered when form is invalid\n* Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization\n* Added removeAttrs plugin to facilate adding and removing multiple attributes\n* Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: \"fieldName1 fieldName2[, fieldNameN\" }\n* Enhanced rules() for adding and removing (static) rules: rules(\"add\", \"method1[, methodN]\"/{method1:param[, method_n:param]}) and rules(\"remove\"[, \"method1[, method_n]\")\n* Enhanced rules-option, accepts space-seperated string-list of methods, eg. {birthdate: \"required date\"}\n* Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click\n* Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled as required:true so far)\n* Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success isn't applied for optional fields\n* Fixed url and email validation to not use trimmed values\n* Fixed creditcard validation to accept only digits and dashes (\"asdf\" is not a valid creditcard number)\n* Allow both button and input elements for cancel buttons (via class=\"cancel\")\n* Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted validator.checkForm to validate a form without UI sideeffects\n* Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compability with AIR\n\n1.2.1\n-----\n\n* Bundled delegeate plugin with validate plugin - its always required anyway\n* Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary)\n* Fixed stopRequest to prevent pendingRequest < 0\n* Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically fixes the issue introduced by automatically creating ranges in 1.2\n* Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success\n* Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted\n* Fixed validate() call with no elements selected, returning undefined instead of throwing an error\n* Improved demo, replacing metadata with classes/attributes for specifying rules\n* Fixed error when no custom message is used for remote validation\n* Modified email and url validation to require domain label and top label\n* Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additionals as url2 and email2\n* Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation\n* Added login form example with \"Email password\" link that makes the password field optional\n* Enhanced dynamic-totals demo with an example of a single message for two fields\n\n1.2\n---\n\n* Added AJAX-captcha validation example (based on http://psyrens.com/captcha/)\n* Added remember-the-milk-demo (thanks RTM team for the permission!)\n* Added marketo-demo (thanks Glen Lipka!)\n* Added support for ajax-validation, see method \"remote\"; serverside returns JSON, true for valid elements, false or a String for invalid, String is used as message\n* Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting\n* Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API\n* Added rules() plguin method to read and write rules for an element (currently read only)\n* Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/\n* Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js)\n* Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive examples for all methods\n* Removed validator.refresh(), validation is now completey dynamic\n* Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3)\n* Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3)\n* Added feature to merge min + max into and range and minlength + maxlength into rangelength\n* Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element\n* Allow to specify null or an empty string as a message to display nothing (see marketo demo)\n* Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details\n\n1.1.2\n---\n\n* Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/\n* Improved email method to better handle unicode characters\n* Fixed error container to hide when all elements are valid, not only on form submit\n* Fixed String.format to jQuery.format (moving into jQuery namespace)\n* Fixed accept method to accept both upper and lowercase extensions\n* Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times)\n* Changed debug-mode console log from \"error\" to \"warn\" level\n\n1.1.1\n-----\n\n* Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4\n* Fixed and improved String.format: Global search & replace, better handling of array arguments\n* Fixed cancel-button handling to use validator-object for storing state instead of form element\n* Fixed name selectors to handle \"complex\" names, eg. containing brackets (\"list[]\")\n* Added button and disabled elements to exclude from validation\n* Moved element event handlers to refresh to be able to add handlers to new elements\n* Fixed email validation to allow long top level domains (eg. \".travel\")\n* Moved showErrors() from valid() to form()\n* Added validator.size(): returns the number of current errors\n* Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element)\n* Compatible with jQuery 1.1.x and 1.2.x\n\n1.1\n---\n\n* Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option.\n* Fixed resetForm\n* Fixed custom-methods-demo\n\n1.0\n---\n\n* Improved number and numberDE methods to check for correct decimal numbers with delimiters\n* Only elements that have rules are checked (otherwise success-option is applied to all elements)\n* Added creditcard number method (thanks to Brian Klug)\n* Added ignore-option, eg. ignore: \"[@type=hidden]\", using that expression to exclude elements to validate. Default: none, though submit and reset buttons are always ignored\n* Heavily enhanced Functions-as-messages by providing a flexible String.format helper\n* Accept Functions as messages, providing runtime-custom-messages\n* Fixed exclusion of elements without rules from successList\n* Fixed custom-method-demo, replaced the alert with message displaying the number of errors\n* Fixed form-submit-prevention when using submitHandler\n* Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using\n  an array with {name, message, element} instead of an object with id:message pairs for the internal errorList.\n* Added support for specifying simple rules as simple strings, eg. \"required\" is equivalent to {required: true}\n* Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field.\n* Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused.\n* Added success option to show the a field was validated successfully\n* Fixed Opera select-issue (avoiding a attribute-collision)\n* Fixed problems with focussing hidden elements in IE\n* Added feature to skip validation for submit buttons with class \"cancel\"\n* Fixed potential issues with Google Toolbar by prefering plugin option messages over title attribute\n* submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms\n* Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur\n* IE6 error container layout issue is solved\n* Customize error element via errorElement option\n* Added validator.refresh() to find new inputs in the form\n* Added accept validation method, checks file extensions\n* Improved dependecy feature by adding two custom expressions: \":blank\" to select elements with an empty value and �:filled� to select elements with a value, both excluding whitespace\n* Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all error messages\n* Fixed docs for validator.showErrors()\n* Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages\n* Fixed error label creation to use specified error class\n* Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument\n* Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element)\n* Fixed two major bugs in IE (error containers) and Opera (metadata)\n* Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods)\n* Renamed \"min\" to \"minLength\", \"max\" to \"maxLength\", \"length\" to \"rangeLength\"\n* Added \"minValue\", \"maxValue\" and \"rangeValue\"\n* Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup\n* Added support for one-message-per-rule when defining messages via plugin settings\n* Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too.\n* Refactored tests and demos: Less files, better demos\n* Improved documentation: More examples for methods, more reference texts explaining some basics\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/ajaxSubmit-intergration-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<style type=\"text/css\">\n.warning { color: red; }\n</style>\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.form.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\tjQuery(function() {\n\t\t// show a simple loading indicator\n\t\tvar loader = jQuery('<div id=\"loader\"><img src=\"images/loading.gif\" alt=\"loading...\" /></div>')\n\t\t\t.css({position: \"relative\", top: \"1em\", left: \"25em\", display: \"inline\"})\n\t\t\t.appendTo(\"body\")\n\t\t\t.hide();\n\t\tjQuery().ajaxStart(function() {\n\t\t\tloader.show();\n\t\t}).ajaxStop(function() {\n\t\t\tloader.hide();\n\t\t}).ajaxError(function(a, b, e) {\n\t\t\tthrow e;\n\t\t});\n\n\t\tvar v = jQuery(\"#form\").validate({\n\t\t\tsubmitHandler: function(form) {\n\t\t\t\tjQuery(form).ajaxSubmit({\n\t\t\t\t\ttarget: \"#result\"\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tjQuery(\"#reset\").click(function() {\n\t\t\tv.resetForm();\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form method=\"post\" class=\"cmxform\" id=\"form\" action=\"form.php\">\n\t<fieldset>\n\t\t<legend>Login Form (Enter \"foobar\" as password)</legend>\n\t\t<p>\n\t\t\t<label for=\"user\">Username</label>\n\t\t\t<input id=\"user\" name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"required\" minlength=\"3\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"pass\">Password</label>\n\t\t\t<input type=\"password\" name=\"password\" id=\"password\" class=\"required\" minlength\"5\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Login\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<div id=\"result\">Please login!</div>\n\n<br/>\n\n<button id=\"reset\">Programmatically reset above form!</button>\n\n<p>Backend file: <a href=\"form.phps\">form.phps</a></p>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/captcha.js",
    "content": "$(function(){\n\t$(\"#refreshimg\").click(function(){\n\t\t$.post('newsession.php');\n\t\t$(\"#captchaimage\").load('image_req.php');\n\t\treturn false;\n\t});\n\t\n\t$(\"#captchaform\").validate({\n\t\trules: {\n\t\t\tcaptcha: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"process.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tcaptcha: \"Correct captcha is required. Click the captcha to generate a new one\"\t\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\talert(\"Correct captcha!\");\n\t\t},\n\t\tsuccess: function(label) {\n\t\t\tlabel.addClass(\"valid\").text(\"Valid captcha!\")\n\t\t},\n\t\tonkeyup: false\n\t});\n\t\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/image_req.php",
    "content": "<?php\n\n// Echo the image - timestamp appended to prevent caching\necho '<a href=\"index.php\" onclick=\"refreshimg(); return false;\" title=\"Click to refresh image\"><img src=\"images/image.jpg?' . time() . '\" width=\"132\" height=\"46\" alt=\"Captcha image\" /></a>';\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/image.php",
    "content": "<?php\n\n// Begin the session\nsession_start();\n\n// If the session is not present, set the variable to an error message\nif(!isset($_SESSION['captcha_id']))\n\t$str = 'ERROR!';\n// Else if it is present, set the variable to the session contents\nelse\n\t$str = $_SESSION['captcha_id'];\n\n// Set the content type\n//header('Content-type: image/png');\nheader('Cache-control: no-cache');\n\n// Create an image from button.png\n$image = imagecreatefrompng('button.png');\n\n// Set the font colour\n$colour = imagecolorallocate($image, 183, 178, 152);\n\n// Set the font\n$font = '../fonts/Anorexia.ttf';\n\n// Set a random integer for the rotation between -15 and 15 degrees\n$rotate = rand(-15, 15);\n\n// Create an image using our original image and adding the detail\nimagettftext($image, 14, $rotate, 18, 30, $colour, $font, $str);\n\n// Output the image as a png\nimagepng($image);\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/index.php",
    "content": "<?php\n\n// Make the page validate\nini_set('session.use_trans_sid', '0');\n\n// Include the random string file\nrequire 'rand.php';\n\n// Begin the session\nsession_start();\n\n// Set the session contents\n$_SESSION['captcha_id'] = $str;\n\n?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n\n<head>\n <title>AJAX CAPTCHA</title>\n <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n <meta name=\"keywords\" content=\"AJAX,JHR,PHP,CAPTCHA,download,PHP CAPTCHA,AJAX CAPTCHA,AJAX PHP CAPTCHA,download AJAX CAPTCHA,download AJAX PHP CAPTCHA\" />\n <meta name=\"description\" content=\"An AJAX CAPTCHA script, written in PHP\" />\n \n <script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n <script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n <script type=\"text/javascript\" src=\"captcha.js\"></script>\n \n <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n <style type=\"text/css\">\n  img { border: 1px solid #eee; }\n  p#statusgreen { font-size: 1.2em; background-color: #fff; color: #0a0; }\n  p#statusred { font-size: 1.2em; background-color: #fff; color: #a00; }\n  fieldset label { display: block; }\n  fieldset div#captchaimage { float: left; margin-right: 15px; }\n  fieldset input#captcha { width: 25%; border: 1px solid #ddd; padding: 2px; }\n  fieldset input#submit { display: block; margin: 2% 0% 0% 0%; }\n  #captcha.success {\n  \tborder: 1px solid #49c24f;\n\tbackground: #bcffbf;\n  }\n  #captcha.error {\n  \tborder: 1px solid #c24949;\n\tbackground: #ffbcbc;\n  }\n </style>\n</head>\n\n<body>\n\n<h1><acronym title=\"Asynchronous JavaScript And XML\">AJAX</acronym> <acronym title=\"Completely Automated Public Turing test to tell Computers and Humans Apart\">CAPTCHA</acronym>, based on <a href=\"http://psyrens.com/captcha/\">http://psyrens.com/captcha/</a></h1>\n\n<form id=\"captchaform\" action=\"\">\n<fieldset>\n <div id=\"captchaimage\"><a href=\"<?php echo $_SERVER['PHP_SELF']; ?>\" id=\"refreshimg\" title=\"Click to refresh image\"><img src=\"images/image.php?<?php echo time(); ?>\" width=\"132\" height=\"46\" alt=\"Captcha image\" /></a></div>\n <label for=\"captcha\">Enter the characters as seen on the image above (case insensitive):</label>\n <input type=\"text\" maxlength=\"6\" name=\"captcha\" id=\"captcha\" />\n <input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Check\" />\n</fieldset>\n</form>\n\n<p>If you can&#39;t decipher the text on the image, click it to dynamically generate a new one.</p>\n\n</body>\n\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/newsession.php",
    "content": "<?php\n\n// Include the random string file\nrequire 'rand.php';\n\n// Begin a new session\nsession_start();\n\n// Set the session contents\n$_SESSION['captcha_id'] = $str;\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/process.php",
    "content": "<?php\n\n// Begin the session\nsession_start();\n\n// To avoid case conflicts, make the input uppercase and check against the session value\n// If it's correct, echo '1' as a string\nif(strtoupper($_GET['captcha']) == $_SESSION['captcha_id'])\n\techo 'true';\n// Else echo '0' as a string\nelse\n\techo 'false';\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/rand.php",
    "content": "<?php\n\n// Create a random string, leaving out 'o' to avoid confusion with '0'\n$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4));\n\n// Concatenate the random string onto the random numbers\n// The font 'Anorexia' doesn't have a character for '8', so the numbers will only go up to 7\n// '0' is left out to avoid confusion with 'O'\n$str = rand(1, 7) . rand(1, 7) . $char;\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/style.css",
    "content": "body {\n\tmargin: 3% 5%;\n\tpadding: 0;\n\tbackground-color: #fff;\n\tcolor: #333;\n\tfont: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif;\n}\n\na:link, a:visited {\n\tbackground-color: #fff;\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n\na:hover, a:focus, a:active {\n\tbackground-color: #ffb;\n\tcolor: #454545;\n\ttext-decoration: underline;\n}\n\nh1 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.5em Helvetica, Arial, Verdana, Sans-serif;\n}\n\nh2 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.3em Helvetica, Arial, Verdana, Sans-serif;\n}\n\nh3 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.2em Helvetica, Arial, Verdana, Sans-serif;\n}\n\ntable {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n}\n\ntable th {\n\tborder: 1px solid #ddd;\n\tfont-weight: bold;\n\ttext-align: left;\n\tpadding: 1%;\n}\n\ntable td {\n\tborder: 1px solid #ddd;\n\tpadding: 1%;\n}\n\ndl, dt, dd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nform {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nfieldset {\n\tborder: 1px solid #ddd;\n\tmargin: 0% 0% 2% 0%;\n\tpadding: 2%;\n}\n\nfieldset legend {\n\tmargin: 0;\n\tpadding: 0 4px;\n\tbackground-color: inherit;\n\tcolor: #333;\n}\n\ncode {\n\tfont: 1em \"Courier New\", Courier, Monospace;\n}\n\npre code {\n\tfont: 1.1em \"Courier New\", Courier, Monospace;\n\tborder-bottom: 1px solid #eee;\n}\n\nimg {\n \tborder: 1px solid #eee;\n}\n\np#statusgreen {\n\tfont-size: 1.2em;\n\tbackground-color: #fff;\n\tcolor: #0a0;\n}\n\np#statusred {\n\tfont-size: 1.2em;\n\tbackground-color: #fff;\n\tcolor: #a00;\n}\n\nfieldset label {\n\tdisplay: block;\n}\n\nfieldset label.error {\n\tcolor: red;\t\n}\n\nfieldset label.valid {\n\tcolor: green;\n}\n\nfieldset div#captchaimage {\n\tfloat: left;\n\tmargin-right: 15px;\n}\n\nfieldset input#captcha {\n\twidth: 25%;\n\tborder: 1px solid #ddd;\n\tpadding: 2px;\n}\n\nfieldset input#submit {\n\tdisplay: block;\n\tmargin: 2% 0% 0% 0%;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/chili.css",
    "content": ".jscom, .mix htcom   { color: #4040c2; }\n.com      { color: green; }\n.regexp   { color: maroon; }\n.string   { color: teal; }\n.keywords { color: blue; }\n.global   { color: #008; }\n.numbers  { color: #880; }\n.comm     { color: green; }\n.tag      { color: blue; }\n.entity   { color: blue; }\n.string   { color: teal; }\n.aname    { color: maroon; }\n.avalue   { color: maroon; }\n.jquery   { color: #00a; }\n.plugin   { color: red; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxform.css",
    "content": "/**********************************\n\nName: cmxform Styles\n\n***********************************/\nform.cmxform {\n\twidth: 370px;\n\tfont-size: 1.0em;\n\tcolor: #333;\n}\n\nform.cmxform legend {\n\tpadding-left: 0;\n}\n\nform.cmxform legend, form.cmxform label {\n\tcolor: #333;\n}\n\nform.cmxform fieldset {\n\tborder: none;\n\tborder-top: 1px solid #C9DCA6;\n\tbackground: url(../images/cmxform-fieldset.gif) left bottom repeat-x;\n\tbackground-color: #F8FDEF;\n}\n\nform.cmxform fieldset fieldset {\n\tbackground: none;\n}\n\nform.cmxform fieldset p, form.cmxform fieldset fieldset {\n\tpadding: 5px 10px 7px;\n\tbackground: url(../images/cmxform-divider.gif) left bottom repeat-x;\n}\n\nform.cmxform label.error, label.error {\n\t/* remove the next line when you have trouble in IE6 with labels in list */\n\tcolor: red;\n\tfont-style: italic\n}\ndiv.error { display: none; }\ninput {\tborder: 1px solid black; }\ninput.checkbox { border: none }\ninput:focus { border: 1px dotted black; }\ninput.error { border: 1px dotted red; }\nform.cmxform .gray * { color: gray; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxformTemplate.css",
    "content": "/**********************************\n\nUse: cmxform template\n\n***********************************/\nform.cmxform fieldset {\n\tmargin-bottom: 10px;\n}\n\nform.cmxform legend {\n\tpadding: 0 2px;\n\tfont-weight: bold;\n\t_margin: 0 -7px; /* IE Win */\n}\n\nform.cmxform label {\n\tdisplay: inline-block;\n\tline-height: 1.8;\n\tvertical-align: top;\n\tcursor: hand;\n}\n\nform.cmxform fieldset p {\n\tlist-style: none;\n\tpadding: 5px;\n\tmargin: 0;\n}\n\nform.cmxform fieldset fieldset {\n\tborder: none;\n\tmargin: 3px 0 0;\n}\n\nform.cmxform fieldset fieldset legend {\n\tpadding: 0 0 5px;\n\tfont-weight: normal;\n}\n\nform.cmxform fieldset fieldset label {\n\tdisplay: block;\n\twidth: auto;\n}\n\nform.cmxform label { width: 100px; } /* Width of labels */\nform.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */\nform.cmxform label.error {\n\tmargin-left: 103px;\n\twidth: 220px;\n}\n\nform.cmxform input.submit {\n\tmargin-left: 103px;\n}\n\n/*\\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/core.css",
    "content": "body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif }\nbody { margin: 0; padding: 0; font-size: small; color: #333 }\nh1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 }\nh1 { font-size: large }\n#main { padding: 1em; }\n#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc;\n    background: url(../images/bg.gif) repeat-x; text-align: center }\n#banner a { color: white; }\n\t\np { margin: 10px 0; }\n\nli { margin-left: 10px; }\n\nh3 { margin: 1em 0 0; }\n\nh1 { font-size: 2em; }\nh2 { font-size: 1.8em; }\nh3 { font-size: 1.6em; }\nh4 { font-size: 1.4em; }\nh5 { font-size: 1.2em; }\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/reset.css",
    "content": "/**********************************\n\nUse: Reset Styles for all browsers\n\n***********************************/\n\t\nbody, p, blockquote {\n\tmargin: 0;\n\tpadding: 0;\n}\n\na img, iframe { border: none; }\n\t\n/* Headers\n------------------------------*/\n\nh1, h2, h3, h4, h5, h6 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-size: 100%;\n}\n\t\n/* Lists\n------------------------------*/\n\t\nul, ol, dl, li, dt, dd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\t\n/* Links\n------------------------------*/\n\na, a:link {}\na:visited {}\na:hover {}\na:active {}\n\n/* Forms\n------------------------------*/\n\nform, fieldset {\n\tmargin: 0;\n\tpadding: 0;\n}\n\t\nfieldset { border: 1px solid #000; }\n\nlegend {\n\tpadding: 0;\n\tcolor: #000;\n}\n\ninput, textarea, select {\n\tmargin: 0;\n\tpadding: 1px;\n\tfont-size: 100%;\n\tfont-family: inherit;\n}\n\t\nselect { padding: 0; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/screen.css",
    "content": "/**********************************\n\nUse: Main Screen Import\n\n***********************************/\n\n@import \"reset.css\";\n@import \"core.css\";\n\n@import \"cmxformTemplate.css\";\n@import \"cmxform.css\";"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-messages-metadata-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - comment form example</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"#commentForm\").validate({meta: \"validate\"});\n\t$(\"#commentForm2\").validate();\n\t$(\"#commentForm3\").validate({\n\t\tmessages: {\n\t\t\temail: {\n\t\t\t\trequired: 'Enter this!'\n\t\t\t}\n\t\t}\t\t\n\t});\n\n});\n</script>\n\n<style type=\"text/css\">\nform { width: 500px; }\nform label { width: 250px; }\nform label.error, \nform input.submit { margin-left: 253px; }\n</style>\n\n</head>\n<body>\n\t\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<p>Take a look at the source to see how messages can be customized with metadata.</p>\t\n\n<!-- Custom messages with custom \"meta\" setting -->\n<form class=\"cmxform\" id=\"commentForm\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{validate:{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n<!-- Custom messages with default \"meta\" setting -->\n<form class=\"cmxform\" id=\"commentForm2\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n<!-- Custom message for \"required\" in metadata is overriden by a validate option -->\n<form class=\"cmxform\" id=\"commentForm3\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true, email:true, messages:{email:'Please enter a valid email address'}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<a href=\"index.html\">Back to main page</a>\n\n<script src=\"http://www.google-analytics.com/urchin.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\">_uacct = \"UA-2623402-1\";urchinTracker();</script>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-methods-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\t// extend the current rules with new groovy ones\n\t\n\t// this one requires the text \"buga\", we define a default message, too\n\t$.validator.addMethod(\"buga\", function(value) {\n\t\treturn value == \"buga\";\n\t}, 'Please enter \"buga\"!');\n\t\n\t// this one requires the value to be the same as the first parameter\n\t$.validator.methods.equal = function(value, element, param) {\n\t\treturn value == param;\n\t};\n\t\n\t$().ready(function() {\n\t\tvar validator = $(\"#texttests\").bind(\"invalid-form.validate\", function() {\n\t\t\t$(\"#summary\").html(\"Your form contains \" + validator.numberOfInvalids() + \" errors, see details below.\");\n\t\t}).validate({\n\t\t\tdebug: true,\n\t\t\terrorElement: \"em\",\n\t\t\terrorContainer: $(\"#warning, #summary\"),\n\t\t\terrorPlacement: function(error, element) {\n\t\t\t\terror.appendTo( element.parent(\"td\").next(\"td\") );\n\t\t\t},\n\t\t\tsuccess: function(label) {\n\t\t\t\tlabel.text(\"ok!\").addClass(\"success\");\n\t\t\t},\n\t\t\trules: {\n\t\t\t\tnumber: {\n\t\t\t\t\trequired:true,\n\t\t\t\t\tminlength:3,\n\t\t\t\t\tmaxlength:15,\n\t\t\t\t\tnumber:true\t\n\t\t\t\t},\n\t\t\t\tsecret: \"buga\",\n\t\t\t\tmath: {\n\t\t\t\t\tequal: 11\t\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 50em; }\nem.error {\n  background:url(\"images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\nem.success {\n  background:url(\"images/checked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\n\nform.cmxform label.error {\n\tmargin-left: auto;\n\twidth: 250px;\n}\nem.error { color: black; }\n#warning { display: none; }\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form class=\"cmxform\" id=\"texttests\" method=\"get\" action=\"foo.html\">\n\t<h2 id=\"summary\"></h2>\n\n\t<fieldset>\n\t\t<legend>Example with custom methods and heavily customized error display</legend>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"number\">textarea</label></td>\n\t\t\t\t<td><input id=\"number\" name=\"number\"\n\t\t\t\t\ttitle=\"Please enter a number with at least 3 and max 15 characters!\" />\n\t\t\t\t</td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"secret\">Secret</label></td>\n\t\t\t\t<td><input name=\"secret\" id=\"secret\" /></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"math\">7 + 4 = </label></td>\n\t\t\t\t<td><input id=\"math\" name=\"math\" title=\"Please enter the correct result!\" /></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t</fieldset>\n</form>\n\n<h3 id=\"warning\">Your form contains tons of errors! Please try again.</h3>\n\n<p><a href=\"index.html\">Back to main page</a></p>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/dynamic-totals.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - dynamic forms demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted!\");\n\t}\n});\n$.validator.messages.max = jQuery.format(\"Your totals musn't exceed {0}!\");\n\n$.validator.addMethod(\"quantity\", function(value, element) {\n\treturn !this.optional(element) && !this.optional($(element).parent().prev().children(\"select\")[0]);\n}, \"Please select both the item and its amount.\");\n\n$().ready(function() {\n\t$(\"#orderform\").validate({\n\t\terrorPlacement: function(error, element) {\n\t\t\terror.appendTo( element.parent().next() );\n\t\t},\n\t\thighlight: function(element, errorClass) {\n\t\t\t$(element).addClass(errorClass).parent().prev().children(\"select\").addClass(errorClass);\n\t\t}\n\t});\n\t\n\tvar template = jQuery.format($(\"#template\").val());\n\tfunction addRow() {\n\t\t$(template(i++)).appendTo(\"#orderitems tbody\");\n\t}\n\t\n\tvar i = 1;\n\t// start with one row\n\taddRow();\n\t// add more rows on click\n\t$(\"#add\").click(addRow);\n\t\n\t// check keyup on quantity inputs to update totals field\n\t$(\"#orderform\").validateDelegate(\"input.quantity\", \"keyup\", function(event) {\n\t\tvar totals = 0;\n\t\t$(\"#orderitems input.quantity\").each(function() {\n\t\t\ttotals += +this.value;\n\t\t});\n\t\t$(\"#totals\").attr(\"value\", totals).valid();\n\t});\n\t\n});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 50em; }\nem.error {\n  background:url(\"images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\nem.success {\n  background:url(\"images/checked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\n\nform.cmxform label.error {\n\tmargin-left: auto;\n\twidth: 250px;\n}\nform.cmxform input.submit {\n\tmargin-left: 0;\n}\nem.error { color: black; }\n#warning { display: none; }\nselect.error {\n\tborder: 1px dotted red;\n}\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<textarea style=\"display:none\" id=\"template\">\n\t<tr>\n\t\t<td>\n\t\t\t<label>{0}. Item</label>\n\t\t</td>\n\t\t<td class='type'>\n\t\t\t<select name=\"item-type-{0}\">\n\t\t\t\t<option value=\"\">Select...</option>\n\t\t\t\t<option value=\"0\">Learning jQuery</option>\n\t\t\t\t<option value=\"1\">jQuery Reference Guide</option>\n\t\t\t\t<option value=\"2\">jQuery Cookbook</option>\n\t\t\t\t<option vlaue=\"3\">jQuery In Action</option>\n\t\t\t\t<option value=\"4\">jQuery For Designers</option>\n\t\t\t</select>\n\t\t</td>\n\t\t<td class='quantity'>\n\t\t\t<input size='4' class=\"quantity\" min=\"1\" id=\"item-quantity-{0}\" name=\"item-quantity-{0}\" />\n\t\t</td>\n\t\t<td class='quantity-error'></td>\n\t</tr>\n</textarea>\n\n<form id=\"orderform\" class=\"cmxform\" method=\"get\" action=\"foo.html\">\n\t<h2 id=\"summary\"></h2>\n\t\n\t<fieldset>\n\t\t<legend>Example with custom methods and heavily customized error display</legend>\n\t\t<table id=\"orderitems\">\n\t\t\t<tbody>\n\t\t\t\t\n\t\t\t</tbody>\n\t\t\t<tfoot>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\"><label>Totals (max 25)</label></td>\n\t\t\t\t\t<td class=\"totals\"><input id=\"totals\" name=\"totals\" value=\"0\" max=\"25\" readonly=\"readonly\" size='4' /></td>\n\t\t\t\t\t<td class=\"totals-error\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\">&nbsp;</td>\n\t\t\t\t\t<td><input class=\"submit\" type=\"submit\" value=\"Submit\"/></td>\n\t\t\t\t</tr>\n\t\t\t</tfoot>\n\t\t</table>\n\t</fieldset>\n</form>\n\n<button id=\"add\">Add another input to the form</button>\n\n<h1 id=\"warning\">Your form contains tons of errors! Please try again.</h1>\n\n<p><a href=\"index.html\">Back to main page</a></p>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/errorcontainer-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<style type=\"text/css\">\n.cmxform fieldset p.error label { color: red; }\ndiv.container {\n\tbackground-color: #eee;\n\tborder: 1px solid red;\n\tmargin: 5px;\n\tpadding: 5px;\n}\ndiv.container ol li {\n\tlist-style-type: disc;\n\tmargin-left: 20px;\n}\ndiv.container { display: none }\n.container label.error {\n\tdisplay: inline;\n}\nform.cmxform { width: 30em; }\nform.cmxform label.error {\n\tdisplay: block;\n\tmargin-left: 1em;\n\twidth: auto;\n}\n</style>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted! (skipping validation for cancel button)\");\n\t}\n});\n\n$().ready(function() {\n\t$(\"#form1\").validate({\n\t\terrorLabelContainer: $(\"#form1 div.error\")\n\t});\n\t\n\tvar container = $('div.container');\n\t// validate the form when it is submitted\n\tvar validator = $(\"#form2\").validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: $(\"ol\", container),\n\t\twrapper: 'li',\n\t\tmeta: \"validate\"\n\t});\n\t\n\t$(\".cancel\").click(function() {\n\t\tvalidator.resetForm();\n\t});\n});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form method=\"get\" class=\"cmxform\" id=\"form1\" action=\"\">\n\t<fieldset>\n\t\t<legend>Login Form</legend>\n\t\t<p>\n\t\t\t<label>Username</label>\n\t\t\t<input name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"{required:true,minlength:3}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label>Password</label>\n\t\t\t<input type=\"password\" maxlength=\"12\" name=\"password\" title=\"Please enter your password, between 5 and 12 characters\" class=\"{required:true,minlength:5}\" />\n\t\t</p>\n\t\t<div class=\"error\">\n\t\t</div>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Login\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<!-- our error container -->\n<div class=\"container\">\n\t<h4>There are serious errors in your form submission, please see below for details.</h4>\n\t<ol>\n\t\t<li><label for=\"email\" class=\"error\">Please enter your email address</label></li>\n\t\t<li><label for=\"phone\" class=\"error\">Please enter your phone <b>number</b> (between 2 and 8 characters)</label></li>\n\t\t<li><label for=\"address\" class=\"error\">Please enter your address (at least 3 characters)</label></li>\n\t\t<li><label for=\"avatar\" class=\"error\">Please select an image (png, jpg, jpeg, gif)</label></li>\n\t\t<li><label for=\"cv\" class=\"error\">Please select a document (doc, docx, txt, pdf)</label></li>\n\t</ol>\n</div>\n\n<form class=\"cmxform\" id=\"form2\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" class=\"{validate:{required:true,email:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Favorite Color</label>\n\t\t\t<select id=\"color\" name=\"color\" title=\"Please select your favorite color!\" class=\"{validate:{required:true}}\">\n\t\t\t\t<option></option>\n\t\t\t\t<option>Red</option>\n\t\t\t\t<option>Blue</option>\n\t\t\t\t<option>Yellow</option>\n\t\t\t</select>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"phone\">Phone</label>\n\t\t\t<input id=\"phone\" name=\"phone\" class=\"some styles {validate:{required:true,number:true, rangelength:[2,8]}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"address\">Address</label>\n\t\t\t<input id=\"address\" name=\"address\" class=\"some other styles {validate:{required:true,minlength:3}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"avatar\">Avatar</label>\n\t\t\t<input type=\"file\" id=\"avatar\" name=\"avatar\" class=\"{validate:{required:true,accept:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" title=\"Please agree to our policy!\" name=\"agree\" class=\"{validate:{required:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cv\">CV</label>\n\t\t\t<input type=\"file\" id=\"cv\" name=\"cv\" class=\"{validate:{required:true,accept:'docx?|txt|pdf'}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t\t<input class=\"cancel\" type=\"submit\" value=\"Cancel\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<div class=\"container\">\n\t<h4>There are serious errors in your form submission, please see details above the form!</h4>\n</div>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/file_input.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - comment form example</title>\n\n<link rel=\"stylesheet\" href=\"css/screen.css\" />\n<link rel=\"stylesheet\" href=\"css/cmxform.css\" />\n\n<script src=\"../lib/jquery.js\"></script>\n<script src=\"../jquery.validate.js\"></script>\n<script src=\"../additional-methods.js\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"#fileForm\").validate();\n});\n</script>\n\n</head>\n<body>\n\n<form class=\"cmxform\" id=\"fileForm\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Select the indicated type of files?</legend>\n\t\t<p>\n\t\t\t<label for=\"file1\">Select a plain text file (e.g. *.txt)</label>\n\t\t\t<input type=\"file\" id=\"file1\" name=\"file1\" class=\"required\" accept=\"text/plain\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file2\">Select any image file</label>\n\t\t\t<input type=\"file\" id=\"file2\" name=\"file2\" class=\"required\" accept=\"image/*\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file3\">Select either a PDF or a EPS file</label>\n\t\t\t<input type=\"file\" id=\"file3\" name=\"file3\" class=\"required\" accept=\"image/x-eps,application/pdf\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file4\">Select any audio or image file</label>\n\t\t\t<input type=\"file\" id=\"file4\" name=\"file4\" class=\"required\" accept=\"image/*,audio/*\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file5\">Select one or more plain text files (e.g. *.txt)</label>\n\t\t\t<input type=\"file\" id=\"file5\" name=\"file5\" class=\"required\" multiple accept=\"text/plain\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.php",
    "content": "<?php\n// wait a second to simulate a some latency\nusleep(500000);\n$user = $_REQUEST['user'];\n$pw = $_REQUEST['password'];\nif($user && $pw && $pw == \"foobar\")\n\techo \"Hi $user, welcome back.\";\nelse\n\techo \"Your password is wrong (must be foobar).\";\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.phps",
    "content": "<?php\n// wait a second to simulate a some latency\nusleep(500000);\n$user = $_REQUEST['user'];\n$pw = $_REQUEST['password'];\nif($user && $pw && $pw == \"foobar\")\n\techo \"Hi $user, welcome back.\";\nelse\n\techo \"Your password is wrong (must be foobar).\";\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/index.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - main demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery-1.7.2.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$.validator.setDefaults({\n\tsubmitHandler: function() { alert(\"submitted!\"); }\n});\n\n$().ready(function() {\n\t// validate the comment form when it is submitted\n\t$(\"#commentForm\").validate();\n\n\t// validate signup form on keyup and submit\n\t$(\"#signupForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n#signupForm { width: 670px; }\n#signupForm label.error {\n\tmargin-left: 10px;\n\twidth: auto;\n\tdisplay: inline;\n}\n#newsletter_topics label.error {\n\tdisplay: none;\n\tmargin-left: 103px;\n}\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<p>Default submitHandler is set to display an alert into of submitting the form</p>\n\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please provide your name, email address (won't be published) and a comment</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" minlength=\"2\" type=\"text\" required />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" type=\"email\" name=\"email\" required />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" type=\"url\" name=\"url\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" required></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form class=\"cmxform\" id=\"signupForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"username\">Username</label>\n\t\t\t<input id=\"username\" name=\"username\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"password\">Password</label>\n\t\t\t<input id=\"password\" name=\"password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"confirm_password\">Confirm password</label>\n\t\t\t<input id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" type=\"email\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"newsletter\">I'd like to receive the newsletter</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n\t\t</p>\n\t\t<fieldset id=\"newsletter_topics\">\n\t\t\t<legend>Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>\n\t\t\t<label for=\"topic_marketflash\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_marketflash\" value=\"marketflash\" name=\"topic\" />\n\t\t\t\tMarketflash\n\t\t\t</label>\n\t\t\t<label for=\"topic_fuzz\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_fuzz\" value=\"fuzz\" name=\"topic\" />\n\t\t\t\tLatest fuzz\n\t\t\t</label>\n\t\t\t<label for=\"topic_digester\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_digester\" value=\"digester\" name=\"topic\" />\n\t\t\t\tMailing list digester\n\t\t\t</label>\n\t\t\t<label for=\"topic\" class=\"error\">Please select at least two topics you'd like to receive.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<h3>Syntetic examples</h3>\n<ul>\n\t<li><a href=\"errorcontainer-demo.html\">Error message containers in action</a></li>\n\t<li><a href=\"custom-messages-metadata-demo.html\">Custom Messages as Metadata</a></li>\n\t<li><a href=\"radio-checkbox-select-demo.html\">Radio and checkbox buttons and selects</a></li>\n\t<li><a href=\"ajaxSubmit-intergration-demo.html\">Integration with Form Plugin (AJAX submit)</a></li>\n\t<li><a href=\"custom-methods-demo.html\">Custom methods and message display.</a></li>\n\t<li><a href=\"dynamic-totals.html\">Dynamic forms</a></li>\n\t<li><a href=\"themerollered.html\">Forms styled with jQuery UI Themeroller</a></li>\n\t<li><a href=\"tinymce/\">TinyMCE Demo</a></li>\n\t<li><a href=\"file_input.html\">File inputs</a></li>\n\t<li><a href=\"jquerymobile.html\">jQuery Mobile Form Validation</a></li>\n</ul>\n<h3>Real-world examples</h3>\n<ul>\n\t<li><a href=\"milk/\">Remember The Milk signup form</a></li>\n\t<li><a href=\"marketo/\">Marketo signup form</a></li>\n\t<li><a href=\"multipart/\">Buy and Sell a House multipart form</a></li>\n\t<li><a href=\"captcha/\">Remote captcha validation</a></li>\n</ul>\n\n<h3>Testsuite</h3>\n<ul>\n\t<li><a href=\"../test/\">Validation Testsuite</a></li>\n</ul>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/jquerymobile.html",
    "content": "<!DOCTYPE html>\n<html>\n\t<head>\n\t<title>My Page</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t<link rel=\"stylesheet\" href=\"http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css\" />\n\t<script src=\"http://code.jquery.com/jquery-1.7.1.min.js\"></script>\n\t<script src=\"http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js\"></script>\n\t<script src=\"../jquery.validate.js\"></script>\n\t<style>\n\t\tlabel.error {\n\t\t\t\tcolor: red;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tfont-weight: normal;\n\t\t\t\tline-height: 1.4;\n\t\t\t\tmargin-top: 0.5em;\n\t\t\t\twidth: 100%;\n\t\t\t\tfloat: none;\n\t\t}\n\n\t\t@media screen and (orientation: portrait){\n\t\t\t\tlabel.error { margin-left: 0; display: block; }\n\t\t}\n\n\t\t@media screen and (orientation: landscape){\n\t\t\t\tlabel.error { display: inline-block; margin-left: 22%; }\n\t\t}\n\n\t\tem { color: red; font-weight: bold; padding-right: .25em; }\n\t</style>\n</head>\n<body>\n\n\t<div id=\"page1\" data-role=\"page\">\n\n\t\t<div data-role=\"header\">\n\t\t\t<h1>Welcome</h1>\n\t\t</div>\n\n\t\t<div data-role=\"content\">\n\t\t\t<form method=\"GET\">\n\t\t\t\t<div data-role=\"fieldcontain\">\n\t\t\t\t\t<label for=\"email\">Email:</label>\n\t\t\t\t\t<input type=\"email\" name=\"email\" id=\"email\" />\n\t\t\t\t</div>\n\t\t\t\t<div data-role=\"fieldcontain\">\n\t\t\t\t\t<label for=\"password\">Password:</label>\n\t\t\t\t\t<input type=\"password\" name=\"password\" id=\"password\" />\n\t\t\t\t</div>\n\t\t\t\t<input data-role=\"submit\" type=\"submit\" value=\"Login\" />\n\t\t\t</form>\n\t\t</div>\n\n\t</div>\n\n\t<script>\n\t\t$('#page1').bind('pageinit', function(event) {\n\t\t\t$('form').validate({\n\t\t\t\trules: {\n\t\t\t\t\temail: {\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t},\n\t\t\t\t\tpassword: {\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t</script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/js/chili-1.7.pack.js",
    "content": "eval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('8={3b:\"1.6\",2o:\"1B.1Y,1B.23,1B.2e\",2i:\"\",2H:1a,12:\"\",2C:1a,Z:\"\",2a:\\'<H V=\"$0\">$$</H>\\',R:\"&#F;\",1j:\"&#F;&#F;&#F;&#F;\",1f:\"&#F;<1W/>\",3c:5(){9 $(y).39(\"1k\")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3==\"1h\")?h.3:h.3.1w;k.1m({A:A,3:\"(\"+3+\")\",u:1+(3.c(/\\\\\\\\./g,\"%\").c(/\\\\[.*?\\\\]/g,\"%\").3a(/\\\\((?!\\\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i<k.u;i++){4 3=k[i].3;3=3.c(/\\\\\\\\\\\\\\\\|\\\\\\\\(\\\\d+)/g,5(m,1F){9!1F?m:\"\\\\\\\\\"+(1E+1+1t(1F))});1x.1m(3);1E+=k[i].u}4 1w=1x.3d(\"|\");9 x 1u(1w,(a.3g)?\"2j\":\"g\")}5 1S(o){9 o.c(/&/g,\"&3h;\").c(/</g,\"&3e;\")}5 1R(o){9 o.c(/ +/g,5(1X){9 1X.c(/ /g,R)})}5 G(o){o=1S(o);7(R){o=1R(o)}9 o}5 2m(2E){4 i=0;4 j=1;4 h;19(h=k[i++]){4 1b=D;7(1b[j]){4 1U=/(\\\\\\\\\\\\$)|(?:\\\\$\\\\$)|(?:\\\\$(\\\\d+))/g;4 z=h.z.c(1U,5(m,1V,K){4 3f=\\'\\';7(1V){9\"$\"}v 7(!K){9 G(1b[j])}v 7(K==\"0\"){9 h.A}v{9 G(1b[j+1t(K,10)])}});4 1A=D[D.u-2];4 2h=D[D.u-1];4 2G=2h.2v(11,1A);11=1A+2E.u;14+=G(2G)+z;9 z}v{j+=h.u}}}4 R=8.R;4 k=x 2A;Q(4 A 2r a.k){2I(A,a.k[A])}4 14=\"\";4 11=0;l.c(2z(),2m);4 2y=l.2v(11,l.u);14+=G(2y);9 14}5 2B(X){7(!8.N[X]){4 Y=\\'<Y 32=\"1p\" 33=\"p/2u\"\\'+\\' 30=\"\\'+X+\\'\">\\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$(\"2d\").1O($W)}v{$(\"2d\").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l=\"\";l=l.c(/\\\\r\\\\n?/g,\"\\\\n\");4 C=1J(l,a);7(8.1j){C=C.c(/\\\\t/g,8.1j)}7(8.1f){C=C.c(/\\\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+\".1d\",Z:8.Z,2w:q+\".2u\"};4 B;7(13&&1v 13==\"2l\")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:\"2l.15\"});4 2n=x 1u(\"\\\\\\\\b\"+8.2i+\"\\\\\\\\b\",\"2j\");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i(\"V\");7(!1n){9}4 q=$.3u(1n.c(2n,\"\"));7(\\'\\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$(\".\"+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t(\"a 3w Q: \"+q+\\'@\\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\\'\\'==p){9\"\"}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\\\<1W[^>]*?\\\\>/3y,16);4 e=J.1L(\\'<1k>\\');e.3l=p;p=e.3m.c(x 1u(16,\"g\"),\\'\\\\r\\\\n\\');9 p}4 T=\"\";4 18=1G;$(1e).3j().G(\"1k\").U(\"2c\",5(){18=y}).U(\"1M\",5(){7(18==y)T=J.1i.29().3k});$(\"3n\").U(\"3q\",5(){7(\\'\\'!=T){2p.3r.3o(\\'3p\\',22(T));2V.2R=1a}}).U(\"2c\",5(){T=\"\"}).U(\"1M\",5(){18=1G})}})})(1Z);8.I[\"1Y.1d\"]={k:{2M:{3:/\\\\/\\\\*[^*]*\\\\*+(?:[^\\\\/][^*]*\\\\*+)*\\\\//},25:{3:/\\\\<!--(?:.|\\\\n)*?--\\\\>/},2f:{3:/\\\\/\\\\/.*/},2P:{3:/2L|2T|2J|2O|2N|2X|2K|2Z|2U|2S|2W|2Y|2Q|51|c-50/},53:{3:/\\\\/[^\\\\/\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\/\\\\\\\\\\\\n]*)*\\\\/[52]*/},1h:{3:/(?:\\\\\\'[^\\\\\\'\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\\\\\n]*)*\\\\\\')|(?:\\\\\"[^\\\\\"\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\\\\\n]*)*\\\\\")/},27:{3:/\\\\b[+-]?(?:\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)(?:[1r][+-]?\\\\d+)?\\\\b/},4X:{3:/\\\\b(D|1N|1K|1I|2t|2s|4W|1z|v|1a|Q|5|7|2r|4Z|x|1G|9|1Q|y|1H|1D|1v|4|4Y|19|59)\\\\b/},1y:{3:/\\\\b(58|2k|2p|5b|5a|55|J|54|57|1t|56|4L|4K|4N|4M|4H|4G|4J)\\\\b/},1C:{3:/(?:\\\\<\\\\w+)|(?:\\\\>)|(?:\\\\<\\\\/\\\\w+\\\\>)|(?:\\\\/\\\\>)/},26:{3:/\\\\s+\\\\w+(?=\\\\s*=)/},20:{3:/([\\\\\"\\\\\\'])(?:(?:[^\\\\1\\\\\\\\\\\\r\\\\n]*?(?:\\\\1\\\\1|\\\\\\\\.))*[^\\\\1\\\\\\\\\\\\r\\\\n]*?)\\\\1/},21:{3:/&[\\\\w#]+?;/},4I:{3:/(\\\\$|1Z)/}}};8.I[\"23.1d\"]={k:{25:{3:/\\\\<!--(?:.|\\\\n)*?--\\\\>/},1h:{3:/(?:\\\\\\'[^\\\\\\'\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\\\\\n]*)*\\\\\\')|(?:\\\\\"[^\\\\\"\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\\\\\n]*)*\\\\\")/},27:{3:/\\\\b[+-]?(?:\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)(?:[1r][+-]?\\\\d+)?\\\\b/},1C:{3:/(?:\\\\<\\\\w+)|(?:\\\\>)|(?:\\\\<\\\\/\\\\w+\\\\>)|(?:\\\\/\\\\>)/},26:{3:/\\\\s+\\\\w+(?=\\\\s*=)/},20:{3:/([\\\\\"\\\\\\'])(?:(?:[^\\\\1\\\\\\\\\\\\r\\\\n]*?(?:\\\\1\\\\1|\\\\\\\\.))*[^\\\\1\\\\\\\\\\\\r\\\\n]*?)\\\\1/},21:{3:/&[\\\\w#]+?;/}}};8.I[\"2e.1d\"]={k:{4S:{3:/\\\\/\\\\*[^*]*\\\\*+([^\\\\/][^*]*\\\\*+)*\\\\//},2f:{3:/(?:\\\\/\\\\/.*)|(?:[^\\\\\\\\]\\\\#.*)/},4V:{3:/\\\\\\'[^\\\\\\'\\\\\\\\]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\]*)*\\\\\\'/},4U:{3:/\\\\\"[^\\\\\"\\\\\\\\]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\]*)*\\\\\"/},4P:{3:/\\\\b(?:[4O][2b][1s][1s]|[4R][4Q][2b][1P]|[5c][5v][1s][5u][1P])\\\\b/},5x:{3:/\\\\b[+-]?(\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)([1r][+-]?\\\\d+)?\\\\b/},5y:{3:/\\\\b(?:5z|5w(?:5A|5E(?:5F(?:17|1c)|5G(?:17|1c))|17|1T|5B|5C|5D(?:17|1T|1c)|1c)|P(?:5h(?:5k|5j)|5e(?:5d|5g(?:5f|5l)|5r|E(?:5t|5s)|5n(?:5m|5p)|L(?:3X|3W)|O(?:S|3Y(?:3T|3S|3V))|3U|S(?:44|47|46)|41))|40)\\\\b/},1y:{3:/(?:\\\\$43|\\\\$42|\\\\$3R|\\\\$3G|\\\\$3F|\\\\$3I|\\\\$3H|\\\\$3C|\\\\$3B|\\\\$3D)\\\\b/},28:{3:/\\\\b(?:3O|3N|3P|3K|3J|3M|3L|48|4v|1N|1K|1I|4u|V|4x|4w|2t|4r|2s|4q|1z|4t|v|4s|4D|4C|4F|4E|4z|4y|4B|4A|4p|4d|2F|2F|4g|Q|4f|5|1y|7|4a|4m|4l|4o|4i|4k|x|4j|4h|4n|4b|4c|49|4e|3Q|3E|9|45|1Q|y|3Z|1D|5o|5q|4|19|5i)\\\\b/},2g:{3:/\\\\$(\\\\w+)/,z:\\'<H V=\"28\">$</H><H V=\"2g\">$1</H>\\'},1C:{3:/(?:\\\\<\\\\?[24][4T][24])|(?:\\\\<\\\\?)|(?:\\\\?\\\\>)/}}}',62,353,'|||exp|var|function||if|ChiliBook|return|recipe||replace||el|path||step|||steps|ingredients|||str|text|recipeName||||length|else||new|this|replacement|stepName|settings|dish|arguments||160|filter|span|recipes|document|||recipeLoaded|required|||for|replaceSpace||insidePRE|bind|class|domLink|stylesheetPath|link|stylesheetFolder||lastIndex|recipeFolder|options|perfect|chili|newline|ERROR|downPRE|while|false|aux|WARNING|js|codes|replaceNewLine|childNodes|string|selection|replaceTab|pre|settingsDef|push|elClass|getPath|stylesheet|makeDish|eE|Ll|parseInt|RegExp|typeof|source|exps|global|do|offset|code|tag|try|prevLength|aNum|null|true|catch|cook|case|createElement|mouseup|break|append|Ee|switch|replaceSpaces|escapeHTML|NOTICE|pattern|escaped|br|spaces|mix|jQuery|avalue|entity|preformatted|xml|Pp|htcom|aname|numbers|keyword|createRange|defaultReplacement|Uu|mousedown|head|php|com|variable|input|elementClass|gi|valueOf|object|chef|selectClass|elementPath|window|metaobjects|in|default|continue|css|substring|stylesheetFile|recipeFile|lastUnmatched|knowHow|Array|checkCSS|stylesheetLoading|each|matched|extends|unmatched|recipeLoading|prepareStep|unblockUI|ajaxSubmit|silverlight|jscom|unblock|block|plugin|clearFields|returnValue|fieldValue|blockUI|formSerialize|event|resetForm|ajaxForm|clearForm|fieldSerialize|href|browser|rel|type|msie|extend|selector|data|html|next|match|version|getPRE|join|lt|bit|ignoreCase|amp|attr|parents|htmlText|innerHTML|innerText|body|setData|Text|copy|clipboardData|recipeNotAvailable|alert|trim|getJSON|unavailable|indexOf|ig|recipePath|Date|_SESSION|_SERVER|php_errormsg|require_once|_GET|_FILES|_REQUEST|_POST|__METHOD__|__LINE__|and|abstract|__FILE__|__CLASS__|__FUNCTION__|require|_ENV|END|CONT|PREFIX|START|OCALSTATEDIR|IBDIR|UTPUT_HANDLER_|throw|__COMPILER_HALT_OFFSET__|VERSION|_COOKIE|GLOBALS|API|static|YSCONFDIR|HLIB_SUFFIX|array|protected|implements|print|private|exit|public|foreach|final|or|isset|old_function|list|include_once|include|php_user_filter|interface|exception|die|declare|elseif|echo|cfunction|as|const|clone|endswitch|endif|eval|endwhile|enddeclare|empty|endforeach|endfor|isNaN|NaN|jquery|Infinity|clearTimeout|setTimeout|clearInterval|setInterval|Nn|value|Rr|Tt|mlcom|Hh|string2|string1|delete|keywords|void|instanceof|content|taconite|gim|regexp|escape|constructor|parseFloat|unescape|toString|with|prototype|element|Ff|BINDIR|HP_|PATH|CONFIG_FILE_|EAR_|xor|INSTALL_DIR|EXTENSION_DIR|SCAN_DIR|MAX|INT_|unset|SIZE|use|DATADIR|XTENSION_DIR|OL|Ss|Aa|E_|number|const1|DEFAULT_INCLUDE_PATH|ALL|PARSE|STRICT|USER_|CO|MPILE_|RE_'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\t<title>Login Form with Email Password Link</title>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"screen.css\" />\n\t\n\t<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n\t<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n\n\t<script type=\"text/javascript\">\n\t\t\n\t$(function() {\n\t\t// highlight \n\t\tvar elements = $(\"input[type!='submit'], textarea, select\");\n\t\telements.focus(function(){\n\t\t\t$(this).parents('li').addClass('highlight');\n\t\t});\n\t\telements.blur(function(){\n\t\t\t$(this).parents('li').removeClass('highlight');\n\t\t});\n\t\t\n\t\t$(\"#forgotpassword\").click(function() {\n\t\t\t$(\"#password\").removeClass(\"required\");\n\t\t\t$(\"#login\").submit();\n\t\t\t$(\"#password\").addClass(\"required\");\n\t\t\treturn false;\n\t\t});\n\t\t\n\t\t$(\"#login\").validate()\n\t});\n\t</script>\n\t\n</head>\n<body>\n\t<div id=\"page\">\n\n\t\t<div id=\"header\">\n\t\t\t<h1>Login</h1>\n\t\t</div>\n\n\t\t<div id=\"content\">\n\t\t\t<p id=\"status\"></p>\n\t\t\t<form action=\"\" method=\"get\" id=\"login\">\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>User details</legend>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label for=\"email\"><span class=\"required\">Email address</span></label>\n\t\t\t\t\t\t\t<input id=\"email\" name=\"email\" class=\"text required email\" type=\"text\" />\n\t\t\t\t\t\t\t<label for=\"email\" class=\"error\">This must be a valid email address</label>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label for=\"password\"><span class=\"required\">Password</span></label>\n\t\t\t\t\t\t\t<input name=\"password\" type=\"password\" class=\"text required\" id=\"password\" minlength=\"4\" maxlength=\"20\" />\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label class=\"centered info\"><a id=\"forgotpassword\" href=\"#\">Email my password...</a></label>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</fieldset>\n\t\t\t\t\n\t\t\t\t<fieldset class=\"submit\">\n\t\t\t\t\t<input type=\"submit\" class=\"button\" value=\"Login...\" />\n\t\t\t\t</fieldset>\n\t\t\t\t\n\t\t\t\t<div class=\"clear\"></div>\n\t\t\t</form>\n\t\t\t\n\t\t\t</div>\n\t</div>\n\t\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/screen.css",
    "content": "/*******************************************************************************\n********************************************************************************\n**\n* - GENERAL\n*\n* - PAGE CONTAINERS\n*\n* - HEADER\n*\n* - CONTENT\n**\n********************************************************************************\n ******************************************************************************/\n\n\n\n\n/* GENERAL ------------------------------------------------------------------ */\n\n\thtml\n\t\t{\n\t\theight: 100%;\n\t}\n\t\n\t/* Zero default margin & padding around common elements */\n\tbody, dd, dl, dt, form, h1, h2, h3, h4, h5, h6, ul, ol, li, p\n\t\t{\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t\t}\n\t\n\tbody\n\t\t{\n\t\theight: 100%;\n\t\tbackground-color: #333333;\n\t\tbackground-image: url(images/bg.gif);\n\t\tbackground-position: 0% 0;\n\t\tcolor: #000000;\n\t\tline-height: 1.5;\n\t\tfont-family: Arial, Helvetica, sans-serif;\n\t\tfont-size: 62.5%;\n\t\ttext-align: center;\n\t\toverflow:auto;\n\t\t}\n\t\n\ta:link\n\t\t{\n\t\tcolor: #003399;\n\t\t}\n\t\n\ta:visited\n\t\t{\n\t\tcolor: #B266B2;\n\t\t}\n\t\n\ta:hover\n\t\t{\n\t\ttext-decoration: none;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* PAGE CONTAINERS ---------------------------------------------------------- */\n\t\n\t#page\n\t\t{\n\t\twidth: 636px;\n\t\tw\\idth: 600px;\n\t\tmin-height: 100%;\n\t\tmargin: 17px auto;\n\t\tpadding: 0 18px;\n\t\tbackground-image: url(images/page.gif);\n\t\tbackground-repeat: repeat-y;\n\t\ttext-align: left;\n\t\t}\n\t\n\t* html #page\n\t\t{\n\t\theight: 100%;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* HEADER ------------------------------------------------------------------- */\n\t\n\t#header\n\t\t{\n\t\theight: 90px;\n\t\tbackground-color: #B2DD32;\n\t\tbackground-image: url(images/header1.jpg);\n\t\tbackground-repeat: repeat-x;\n\t\t}\n\t\n\th1\n\t\t{\n\t\tpadding: 0 35px;\n\t\tfont-size: 2.2em;\n\t\tfont-weight: normal;\n\t\tline-height: 82px;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* CONTENT ------------------------------------------------------------------ */\n\t\n\t#content\n\t\t{\n\t\tpadding: 0 25px;\n\t\t}\n\t\n\tp\n\t\t{\n\t\tfont-size:1.1em;\n\t\tmargin-top: 1.5em;\n\t\t}\n\t\n\tform\n\t\t{\n\t\tmargin-top: 1.5em;\n\t\t}\n\t\n\t\n\n\t/*** MASTER FORM WIDTHS - CUSTOMIZE THIS TO CHANGE THE FORM LAYOUT ***/\n\n\t/*\n\tform width:\t\t550px\n\tleft column:\t190px / 180px + 10px padding\n\tmid column:\t\t200px\n\tright column:\t160px\n\t*/\n\n\tform{\n\t\twidth:550px !important;\n\t\t}\n\n\tfieldset.submit\n\t\t{\n\t\tpadding-left: 190px !important;\n\t\t}\n\n\tform label{\n\t\tpadding:0px 10px;\n\t\twidth: 160px;\n\t\t}\n\n\tform label.error,\n\tform input.submit\n\t\t{\n\t\tmargin-left:180px !important;\n\t\t}\t\t\n\n\tform fieldset fieldset label.error\n\t\t{\n\t\tmargin-left:0px !important;\n\t\twidth:200px !important;\n\t\t}\t\t\n\n\n\tform .centered{\n\t\tmargin-left:180px !important;\n\t\twidth:200px !important;\n\t\t}\n\t\n\tform .text, \n\tform .button,\n\tform .group,\n\tform .control,\n\tform .submit,\n\tform textarea,\n\tform select\n\t\t{\n\t\twidth: 200px !important;\n\t\t}\n\t\t\n\n\n\n/*** FIELDSETS AND LEGENDS ***/\n\n\tform{\n\t\twidth:550px;\n\t\tmargin-bottom:25px;\n\t\tclear:both;\n\t\t}\n\n\tform fieldset\n\t\t{\n\t\tmargin: 0 0 1.5em 0;\n\t\tpadding: 0 0 10px 0px;\n\t\t\n\t\tborder: 1px solid #BFBAB0;\n\t\t\n\t\tbackground-color: #F2EFE9;\n\t\tbackground-image: url(images/fieldset_gradient.jpg);\n\t\tbackground-repeat: repeat-x;\n\t\t\n\t\tbackground-color: #fff;\n\t\tbackground-image: url(images/fieldset-gradient-02.jpg);\n\t\tbackground-position:bottom;\n\t\t\n\t\tfloat: left;\n\t\tclear: both;\n\t\twidth: 100%;\n\t\t\n\t\t}\n\t\n\tform fieldset.submit\n\t\t{\n\t\tpadding: 0px 10px 10px 190px;\n\t\tborder-style: none;\n\t\t\n\t\tbackground-color: transparent;\n\t\tbackground-image: none;\n\t\t\n\t\tfloat: none;\n\t\twidth: auto;\n\t\t\n\t\t}\n\t\n\tform legend\n\t\t{\n\t\tcolor: #000000;\n\t\t\n\t\tfont-size:1.3em;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\tmargin-left: 1em;\n\t\tpadding:0px 5px;\n\t\t}\n\t\t\n\tform fieldset p{\n \t\tmargin:10px 0px 0px 10px;\n \t\t}\n\t\n/*** FORM BLOCKS ***/\n\n\tform ul\n\t\t{\n\t\tpadding:5px 10px;\n\t\tlist-style: none;\n\t\t}\n\t\n\tform li\n\t\t{\n\t\twidth: 100%;\n\t\t\n\t\tpadding:5px 0px 10px 0;\n\t\tborder-top:1px dotted #ccc;\n\t\t\n\t\tdisplay:block;\n\t\tfloat: left;\n\t\tclear: left;\n\t}\n\t\n\tform li:first-child\n\t\t{\n\t\tborder:none;\n\t\t}\n\n\t\n/*** FORM BLOCK ELEMENTS ***/\n\n\tform label\n\t\t{\n\t\tpadding:0px 10px;\n\t\twidth: 160px;\n\t\tfloat: left;\n\t\t}\n\t\t\n\tform .error{\n\t\tcolor: #c00;\n\t\t}\n\t\t\n\tform label.error\n\t\t{\n\t\tcolor: #c00;\n\t\t\n\t\tfont-size: 100%;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\twidth:308px;\n\t\tdisplay: none;\n\n\t\tmargin:8px 0px 0px 180px;\n\t\tpadding:3px 0px 0px 5px;\n\t\tborder-top:1px dotted #ccc;\n\t\t\n\t\tclear:both;\n\t\t}\n\t\t\n\tform label.info{\n\t\tfont-size: 100%;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\tmargin:8px 0px 0px 180px;\n\t\tpadding:3px 0px 0px 5px;\n\t\t}\n\n\tform fieldset fieldset,\n\tform .group\n\t\t{\n\t\twidth:200px;\n\t\t\n\t\tmargin: 0;\n\t\tborder:none;\n\t\t\n\t\tbackground:none;\n\t\t\n\t\tfloat:left;\n\t\tclear: none;\n\t\t\n\t\t}\n\t\t\n\tform fieldset fieldset label\n\t\t{\n\t\twidth:auto !important;\n\t\twhite-space:nowrap;\n\t\tpadding:0px;\n\t\tmargin:0px;\n\t\tdisplay:block;\n\t\tclear:both;\n\t\t}\n\t\t\n\tform label label.error{\n\t\tmargin-left:0px;\n\t\t}\n\n\tform label.centered{\n\t\tpadding:0px 0px;\n\t\twidth:200px !important;\n\t\t}\n\t\t\n\t/* see also the error class at the foot of the page */\n\t\n\tform fieldset fieldset label.spaced\n\t\t{\n\t\tmargin-bottom:3px;\n\t\t}\n\n/*** FORM ELEMENT COLUMNS ***/\n\n\t.col-1,\n\tfieldset fieldset.col-1 label\n\t\t{\n\t\twidth:100%;\n\t\t}\n\n\t.col-2,\n\tfieldset fieldset.col-2 label\n\t\t{\n\t\twidth:50%;\n\t\t}\n\n\t.col-3,\n\tfieldset fieldset.col-3 label\n\t\t{\n\t\twidth:33%;\n\t\t}\n\n\t.col-4,\n\tfieldset fieldset.col-4 label\n\t\t{\n\t\twidth:25%;\n\t\t}\n\n\n\n\n/*** FORM ELEMENTS ***/\n\n\tform input.submit{\n\t\tmargin:10px 0px 10px 180px;\n\t\tpadding:0px 2px;\n\t\t}\n\n\tform input, textarea, select, \n\tform label\n\t\t{\n\t\tfont-size:1.1em;\n\t\tline-height:1.6em;\n\t\t}\n\n\tform input, textarea, select\n\t\t{\n\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n\t\t}\n\n\tform .input[type=\"text\"],\n\tform textarea\n\t\t{\n\t\tpadding:1px;\n\t\t}\n\t\t\n\tform .input[type=\"radio\"],\n\tform .input[type=\"checkbox\"]\n\t\t{\n\t\tmargin:0px;\n\t\tpadding:0px;\n\t\tposition:relative;\n\t\ttop:3px;\n\t\t}\n\t\t\n/*** SUPPORTING CLASSES ***/\n\n\tform label.required{\n\t\tbackground-image:url(images/required_star.gif);\n\t\tbackground-position:right;\n\t\tbackground-repeat:no-repeat;\n\t\t}\n\t\n\tform span.required{\n\t\tpadding-right:15px;\n\t\t}\n\t\t\n\tform .clean\n\t\t{\n\t\tborder:none;\n\t\t}\n\t\t\n\tform .info{\n\t\tpadding-top:0.5em;\n\t\tfont-size:80%;\n\t\tline-height:100%;\n\t\tcolor:#aaa;\n\t\t}\n\t\t\n\tform .indent{\n \t\tpadding:2px 20px; \n\t\twidth:auto !important;\n\t\twhite-space:nowrap;\n\t\tpadding-left: 25px !important;\n \t\t}\n\t\t\n\tform label.disabled{\n\t\tcolor:#aaa;\n\t\t}\n\t\n\tform .highlight{\n\t\tbackground-color:#e2e2e2;\n\t\t}\n\t\n\t.off{\n\t\tdisplay:none !important;\n\t\t}\n\t\t\n\t.clear{\n\t\tclear:both;\n\t\t}\n\t\t"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['email']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/ie6.css",
    "content": "img.png {\n    background-image: expression(\n        this.runtimeStyle.backgroundImage = \"none\",\n        this.runtimeStyle.filter = \"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='\" + this.src + \"', sizingMethod='image')\",\n        this.src = \"images/blank.gif\"\n    );\n}\n\n\n\n.hidden {\n  display:none\n}\n\n\n\ndiv.login { width: 120px;}\ndiv.nav-global LI,\ndiv.nav-global LI A {  display:inline !important;  zoom: 1;}\n\ndiv.nav-global LI A:hover,\ndiv.nav-left li a:hover {  text-decoration: none;}\n\ndiv.buttonSubmit {  height: 36px;}\n\ndiv.buttonSubmit input {  position: absolute;}\n\ndiv.offerHeader {margin-left: 3px;}\n\n#col-left {  height: 340px;}\n\nspan#cancellation {\n  position: relative;\n  top: 20px;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"title\" content=\"Subscription Signup | Marketo\" />\n<meta name=\"robots\" content=\"index, follow\" />\n<meta name=\"description\" content=\"Marketo Search Marketing application\" />\n<meta name=\"keywords\" content=\"Marketo, Search Marketing\" />\n<meta name=\"language\" content=\"en\" />\n<title>Subscription Signup | Marketo</title>\n\n<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\" src=\"jquery.maskedinput.js\"></script>\n<script type=\"text/javascript\" src=\"mktSignup.js\"></script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"stylesheet.css\" />\n</head>\n<body>\n<!--[if lte IE 6]>\n  <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"ie6.css\" />\n<![endif]-->\n\n<!-- start page wrapper --><div id=\"letterbox\">\n\n<!-- start header container -->\n<div id=\"header-background\">\n        <div class=\"nav-global-container\">\n\n                <div class=\"login\"><a href=\"#\"><span></span>Customer Login</a></div>\n                <div class=\"logo\"><a href=\"#\"><img src=\"images/logo_marketo.gif\" width=\"168\" height=\"73\"  alt=\"Marketo\" /></a></div>\n\t\t<div class=\"nav-global\">\n\t\t\t\t<ul>\n      \t\t<li><a href=\"#\" class=\"nav-g01\"><span></span>Home</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g02\"><span></span>Products</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g04\"><span></span>B2B Marketing Resources</a></li>\n\n    \t\t\t<li><a href=\"#\" class=\"nav-g05\"><span></span>About Marketo</a></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t</div>\n</div>\n<!-- end header container -->\n<div class=\"line-grey-tier\"></div>\n\n<!-- start page container 2 div-->\n<div id=\"page-container\" class=\"resize\"><div id=\"page-content-inner\" class=\"resize\">\n\n<!-- start col-main -->\n\n<div id=\"col-main\" class=\"resize\" style=\"\">\n\n\n\n  <!-- start main content  -->\n  <div class=\"main-content resize\">\n\n  <div class=\"action-container\" style=\"display:none;\"></div>\n\n\n<h1>Step 1 of 2 </h1>\n<p>\n</p>\n<br clear=\"all\" />\n<div>\n  <form id=\"profileForm\" type=\"actionForm\" action=\"step2.htm\" method=\"get\" >\n\n\n    <div class=\"error\" style=\"display:none;\">\n      <img src=\"images/warning.gif\" alt=\"Warning!\" width=\"24\" height=\"24\" style=\"float:left; margin: -5px 10px 0px 0px; \" />\n\n      <span></span>.<br clear=\"all\"/>\n    </div>\n\n\n    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td class=\"label\"><label for=\"co_name\">Company Name:</label></td>\n        <td class=\"field\">\n          <input id=\"co_name\" class=\"required\" maxlength=\"40\" name=\"co_name\" size=\"20\" type=\"text\" tabindex=\"1\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"co_url\">Company URL:</label></td>\n        <td class=\"field\">\n          <input id=\"co_url\" class=\"required defaultInvalid url\" maxlength=\"40\" name=\"co_url\" style=\"width:163px\" type=\"text\" tabindex=\"2\" value=\"http://\" />\n        </td>\n      </tr>\n      <tr>\n        <td/><td/>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"first_name\">First Name:</label></td>\n        <td class=\"field\">\n          <input id=\"first_name\" class=\"required\" maxlength=\"40\" name=\"first_name\" size=\"20\" type=\"text\" tabindex=\"3\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"last_name\">Last Name:</label></td>\n        <td class=\"field\">\n          <input id=\"last_name\" class=\"required\" maxlength=\"40\" name=\"last_name\" size=\"20\" type=\"text\" tabindex=\"4\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"address1\">Company Address:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" class=\"required\" name=\"address1\" size=\"20\" type=\"text\" tabindex=\"5\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" name=\"address2\" size=\"20\" type=\"text\" tabindex=\"6\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"city\">City:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" class=\"required\" name=\"city\" size=\"20\" type=\"text\" tabindex=\"7\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"state\">State:</label></td>\n        <td class=\"field\">\n          <select id=\"state\" class=\"required\" name=\"state\" style=\"margin-left: 4px;\" tabindex=\"8\">\n            <option value=\"\">Choose State:</option>\n            <option value=\"AL\">Alabama</option><option value=\"AK\">Alaska</option><option value=\"AZ\">Arizona</option><option value=\"AR\">Arkansas</option><option value=\"CA\">California</option><option value=\"CO\">Colorado</option><option value=\"CT\">Connecticut</option><option value=\"DE\">Delaware</option><option value=\"FL\">Florida</option><option value=\"GA\">Georgia</option><option value=\"HI\">Hawaii</option><option value=\"ID\">Idaho</option><option value=\"IL\">Illinois</option><option value=\"IN\">Indiana</option><option value=\"IA\">Iowa</option><option value=\"KS\">Kansas</option><option value=\"KY\">Kentucky</option><option value=\"LA\">Louisiana</option><option value=\"ME\">Maine</option><option value=\"MD\">Maryland</option><option value=\"MA\">Massachusetts</option><option value=\"MI\">Michigan</option><option value=\"MN\">Minnesota</option><option value=\"MS\">Mississippi</option><option value=\"MO\">Missouri</option><option value=\"MT\">Montana</option><option value=\"NE\">Nebraska</option><option value=\"NV\">Nevada</option><option value=\"NH\">New Hampshire</option><option value=\"NJ\">New Jersey</option><option value=\"NM\">New Mexico</option><option value=\"NY\">New York</option><option value=\"NC\">North Carolina</option><option value=\"ND\">North Dakota</option><option value=\"OH\">Ohio</option><option value=\"OK\">Oklahoma</option><option value=\"OR\">Oregon</option><option value=\"PA\">Pennsylvania</option><option value=\"RI\">Rhode Island</option><option value=\"SC\">South Carolina</option><option value=\"SD\">South Dakota</option><option value=\"TN\">Tennessee</option><option value=\"TX\">Texas</option><option value=\"UT\">Utah</option><option value=\"VT\">Vermont</option><option value=\"VA\">Virginia</option><option value=\"WA\">Washington</option><option value=\"WV\">West Virginia</option><option value=\"WI\">Wisconsin</option><option value=\"WY\">Wyoming</option>\n          </select>\n        </td>\n      </tr>\n\n      <tr>\n        <td class=\"label\"><label for=\"zip\">Zip:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"10\" name=\"zip\" style=\"width: 100px\" type=\"text\" class=\"required zipcode\" tabindex=\"9\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"phone\">Phone:</label></td>\n        <td class=\"field\">\n          <input id=\"phone\" maxlength=\"14\" name=\"phone\" type=\"text\" class=\"required phone\" tabindex=\"10\" value=\"\" />\n        </td>\n      </tr>\n\n\n\n      <tr>\n        <td colspan=\"2\">\n          <h2 style=\"border-bottom: 1px solid #CCCCCC;\">Login Information</h2>\n        </td>\n      </tr>\n\n\n      <tr>\n        <td class=\"label\"><label for=\"email\">Email:</label></td>\n        <td class=\"field\">\n          <input id=\"email\" class=\"required email\" remote=\"emails.php\" maxlength=\"40\" name=\"email\" size=\"20\" type=\"text\" tabindex=\"11\" value=\"\" />\n        </td>\n      </tr>\n\n      <tr>\n        <td class=\"label\"><label for=\"password1\">Password:</label></td>\n        <td class=\"field\">\n        \t<input id=\"password1\" class=\"required password\" maxlength=\"40\" name=\"password1\" size=\"20\" type=\"password\" tabindex=\"12\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"password2\">Retype Password:</label></td>\n        <td class=\"field\">\n          <input id=\"password2\" class=\"required\" equalTo=\"#password1\" maxlength=\"40\" name=\"password2\"  size=\"20\" type=\"password\" tabindex=\"13\" value=\"\" />\n          <div class=\"formError\"></div>\n        </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td>\n          <div class=\"buttonSubmit\">\n            <span></span>\n            <input class=\"formButton\" type=\"submit\" value=\"Next\" style=\"width: 140px\" tabindex=\"14\" />\n          </div>\n\n        </td>\n      </tr>\n    </table><br /><br />\n  </form>\n  <br clear=\"all\"/>\n\n\n</div>\n\n\n\n\t</div>\t<!-- end main content  -->\n\t<br />\n</div> <!-- end col-main -->\n\n<!-- start left col -->\n<div id=\"col-left\" class=\"nav-left-back empty resize\" style=\"position: absolute; min-height: 450px;\">\n  <div class=\"col-left-header-tab\" style=\"position: absolute;\">Signup</div>\n  <div class=\"nav-left\">\n\n  </div>\n\n\n      <div class=\"left-nav-callout png\" style=\"top: 15px; margin-bottom: 100px;\">\n        <img src=\"images/left-nav-callout-long.png\"  class=\"png\" alt=\"\" />\n        <h6>Sign Up Process</h6>\n        <a style=\"background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Sign up with a valid credit card.</a>\n        <a style=\"background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Connect to your Google AdWords account.  You will need your AdWords Customer ID.</a>\n        <a style=\"background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Start your 30 day trial.  No payments until trial ends.</a>\n      </div>\n\n<div class=\"footerAddress\">\n<b>Marketo Inc.</b><br />\n1710 S. Amphlett Blvd.<br />\nSan Mateo, CA 94402 USA<br />\n</div>\n<br clear=\"all\"/>\n</div>\t<!-- end left col -->\n\n</div>  </div>  <!-- end page container 2 divs-->\n\n  <div id=\"footer-container\" align=\"center\">\n   <div class=\"footer\">\n    <ul>\n    <li><a href=\"..\">Home</a></li>\n    <li class=\"line-off\"><a href=\"step2.htm\">Second step</a></li>\n    </ul>\n    </div></div>\n\n\n\n<!-- end page wrapper -->\n</div>\n\n    </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/jquery.maskedinput.js",
    "content": "/*\n * Copyright (c) 2007 Josh Bush (digitalbush.com)\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE. \n */\n \n/*\n * Version: 1.1\n * Release: 2007-09-08\n */ \n(function($) {\n\t//Helper Functions for Caret positioning\n\tfunction getCaretPosition(ctl){\n\t\tvar res = {begin: 0, end: 0 };\n\t\tif (ctl.setSelectionRange){\n\t\t\tres.begin = ctl.selectionStart;\n\t\t\tres.end = ctl.selectionEnd;\n\t\t}else if (document.selection && document.selection.createRange){\n\t\t\tvar range = document.selection.createRange();\t\t\t\n\t\t\tres.begin = 0 - range.duplicate().moveStart('character', -100000);\n\t\t\tres.end = res.begin + range.text.length;\n\t\t}\n\t\treturn res;\n\t};\n\n\tfunction setCaretPosition(ctl, pos){\t\t\n\t\tif(ctl.setSelectionRange){\n\t\t\tctl.focus();\n\t\t\tctl.setSelectionRange(pos,pos);\n\t\t}else if (ctl.createTextRange){\n\t\t\tvar range = ctl.createTextRange();\n\t\t\trange.collapse(true);\n\t\t\trange.moveEnd('character', pos);\n\t\t\trange.moveStart('character', pos);\n\t\t\trange.select();\n\t\t}\n\t};\n\t\n\t//Predefined character definitions\n\tvar charMap={\n\t\t'9':\"[0-9]\",\n\t\t'a':\"[A-Za-z]\",\n\t\t'*':\"[A-Za-z0-9]\"\n\t};\n\t\n\t//Helper method to inject character definitions\n\t$.mask={\n\t\taddPlaceholder : function(c,r){\n\t\t\tcharMap[c]=r;\n\t\t}\n\t};\n\t\n\t$.fn.unmask=function(){\n\t\treturn this.trigger(\"unmask\");\n\t};\n\t\n\t//Main Method\n\t$.fn.mask = function(mask,settings) {\t\n\t\tsettings = $.extend({\n\t\t\tplaceholder: \"_\",\n\t\t\tcompleted: null\n\t\t}, settings);\n\t\t\t\n\t\t//Build Regex for format validation\n\t\tvar reString=\"^\";\t\n\t\tfor(var i=0;i<mask.length;i++)\n\t\t\treString+=(charMap[mask.charAt(i)] || (\"\\\\\"+mask.charAt(i)));\t\t\t\t\t\n\t\treString+=\"$\";\n\t\tvar re = new RegExp(reString);\n\n\t\treturn this.each(function(){\t\t\n\t\t\tvar input=$(this);\n\t\t\tvar buffer=new Array(mask.length);\n\t\t\tvar locked=new Array(mask.length);\t\t\n\n\t\t\t//Build buffer layout from mask\n\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\tlocked[i]=charMap[mask.charAt(i)]==null;\n\t\t\t\tbuffer[i]=locked[i]?mask.charAt(i):settings.placeholder;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/*Event Bindings*/\n\t\t\tfunction focusEvent(){\t\t\t\t\t\n\t\t\t\tcheckVal();\n\t\t\t\twriteBuffer();\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tsetCaretPosition(input[0],0);\n\t\t\t\t},0);\n\t\t\t};\t\t\t\n\t\t\tinput.bind(\"focus\",focusEvent);\n\n\t\t\tinput.bind(\"blur\",checkVal);\n\t\t\t\n\t\t\t//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson\n\t\t\tif ($.browser.msie) \n\t\t\t\tthis.onpaste= function(){setTimeout(checkVal,0);};                     \n\t\t\telse if ($.browser.mozilla)\n\t\t\t\tthis.addEventListener('input',checkVal,false);\n\t\t\t\n\t\t\tvar ignore=false;  //Variable for ignoring control keys\n\t\t\t\n\t\t\tfunction keydownEvent(e){\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tvar k = e.keyCode;\n\t\t\t\tignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));\n\t\t\t\t\n\t\t\t\t//delete selection before proceeding\n\t\t\t\tif((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){\n\t\t\t\t\tclearBuffer(pos.begin,pos.end);\n\t\t\t\t}\t\n\t\t\t\t//backspace and delete get special treatment\n\t\t\t\tif(k==8){//backspace\t\t\t\t\t\n\t\t\t\t\twhile(pos.begin-->=0){\n\t\t\t\t\t\tif(!locked[pos.begin]){\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuffer[pos.begin]=settings.placeholder;\n\t\t\t\t\t\t\tif($.browser.opera){\n\t\t\t\t\t\t\t\t//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\twriteBuffer(pos.begin);\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin+1);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\twriteBuffer();\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t}else if(k==46){//delete\n\t\t\t\t\tclearBuffer(pos.begin,pos.begin+1);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\treturn false;\n\t\t\t\t}else if (k==27){\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,0);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t};\n\t\t\tinput.bind(\"keydown\",keydownEvent);\n\n\t\t\tfunction keypressEvent(e){\t\t\t\t\t\n\t\t\t\tif(ignore){\n\t\t\t\t\tignore=false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\te=e||window.event;\n\t\t\t\tvar k=e.charCode||e.keyCode||e.which;\n\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\n\t\t\t\tvar caretPos=pos.begin;\t\n\t\t\t\t\n\t\t\t\tif(e.ctrlKey || e.altKey){//Ignore\n\t\t\t\t\treturn true;\n\t\t\t\t}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters\n\t\t\t\t\twhile(pos.begin<mask.length){\t\n\t\t\t\t\t\tvar reString=charMap[mask.charAt(pos.begin)];\n\t\t\t\t\t\tvar match;\n\t\t\t\t\t\tif(reString){\n\t\t\t\t\t\t\tvar reChar=new RegExp(reString);\n\t\t\t\t\t\t\tmatch=String.fromCharCode(k).match(reChar);\n\t\t\t\t\t\t}else{//we're on a mask char, go forward and try again\n\t\t\t\t\t\t\tpos.begin+=1;\n\t\t\t\t\t\t\tpos.end=pos.begin;\n\t\t\t\t\t\t\tcaretPos+=1;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(match)\n\t\t\t\t\t\t\tbuffer[pos.begin]=String.fromCharCode(k);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;//reject char\n\n\t\t\t\t\t\twhile(++caretPos<mask.length){//seek forward to next typable position\n\t\t\t\t\t\t\tif(!locked[caretPos])\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbreak;\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else\n\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\n\t\t\t\twriteBuffer();\n\t\t\t\tif(settings.completed && caretPos>=buffer.length)\n\t\t\t\t\tsettings.completed.call(input);\n\t\t\t\telse\n\t\t\t\t\tsetCaretPosition(this,caretPos);\n\t\t\t\t\n\t\t\t\treturn false;\t\t\t\t\n\t\t\t};\n\t\t\tinput.bind(\"keypress\",keypressEvent);\n\n\t\t\t/*Helper Methods*/\n\t\t\tfunction clearBuffer(start,end){\n\t\t\t\tfor(var i=start;i<end;i++){\n\t\t\t\t\tif(!locked[i])\n\t\t\t\t\t\tbuffer[i]=settings.placeholder;\n\t\t\t\t}\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tfunction writeBuffer(pos){\n\t\t\t\tvar s=\"\";\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\ts+=buffer[i];\n\t\t\t\t\tif(i==pos)\n\t\t\t\t\t\ts+=settings.placeholder;\n\t\t\t\t}\n\t\t\t\tinput.val(s);\n\t\t\t\treturn s;\n\t\t\t};\n\t\t\t\n\t\t\tfunction checkVal(){\t\n\t\t\t\t//try to place charcters where they belong\n\t\t\t\tvar test=input.val();\n\t\t\t\tvar pos=0;\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\tif(!locked[i]){\n\t\t\t\t\t\twhile(pos++<test.length){\n\t\t\t\t\t\t\t//Regex Test each char here.\n\t\t\t\t\t\t\tvar reChar=new RegExp(charMap[mask.charAt(i)]);\n\t\t\t\t\t\t\tif(test.charAt(pos-1).match(reChar)){\n\t\t\t\t\t\t\t\tbuffer[i]=test.charAt(pos-1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar s=writeBuffer();\n\t\t\t\tif(!s.match(re)){\t\t\t\t\t\t\t\n\t\t\t\t\tinput.val(\"\");\t\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t}\t\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tinput.one(\"unmask\",function(){\n\t\t\t\tinput.unbind(\"focus\",focusEvent);\n\t\t\t\tinput.unbind(\"blur\",checkVal);\n\t\t\t\tinput.unbind(\"keydown\",keydownEvent);\n\t\t\t\tinput.unbind(\"keypress\",keypressEvent);\n\t\t\t\tif ($.browser.msie) \n\t\t\t\t\tthis.onpaste= null;                     \n\t\t\t\telse if ($.browser.mozilla)\n\t\t\t\t\tthis.removeEventListener('input',checkVal,false);\n\t\t\t});\n\t\t\t\t\t\t\t\n\t\t});\n\t};\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/mktSignup.js",
    "content": " $(document).ready(function(){\n \t\n\tjQuery.validator.addMethod(\"password\", function( value, element ) {\n\t\tvar result = this.optional(element) || value.length >= 6 && /\\d/.test(value) && /[a-z]/i.test(value);\n\t\tif (!result) {\n\t\t\telement.value = \"\";\n\t\t\tvar validator = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tvalidator.blockFocusCleanup = true;\n\t\t\t\telement.focus();\n\t\t\t\tvalidator.blockFocusCleanup = false;\n\t\t\t}, 1);\n\t\t}\n\t\treturn result;\n\t}, \"Your password must be at least 6 characters long and contain at least one number and one character.\");\n\t\n\t// a custom method making the default value for companyurl (\"http://\") invalid, without displaying the \"invalid url\" message\n\tjQuery.validator.addMethod(\"defaultInvalid\", function(value, element) {\n\t\treturn value != element.defaultValue;\n\t}, \"\");\n\t\n\tjQuery.validator.addMethod(\"billingRequired\", function(value, element) {\n\t\tif ($(\"#bill_to_co\").is(\":checked\"))\n\t\t\treturn $(element).parents(\".subTable\").length;\n\t\treturn !this.optional(element);\n\t}, \"\");\n\t\n\tjQuery.validator.messages.required = \"\";\n\t$(\"form\").validate({\n\t\tinvalidHandler: function(e, validator) {\n\t\t\tvar errors = validator.numberOfInvalids();\n\t\t\tif (errors) {\n\t\t\t\tvar message = errors == 1\n\t\t\t\t\t? 'You missed 1 field. It has been highlighted below'\n\t\t\t\t\t: 'You missed ' + errors + ' fields.  They have been highlighted below';\n\t\t\t\t$(\"div.error span\").html(message);\n\t\t\t\t$(\"div.error\").show();\n\t\t\t} else {\n\t\t\t\t$(\"div.error\").hide();\n\t\t\t}\n\t\t},\n\t\tonkeyup: false,\n\t\tsubmitHandler: function() {\n\t\t\t$(\"div.error\").hide();\n\t\t\talert(\"submit! use link below to go to the other step\");\n\t\t},\n\t\tmessages: {\n\t\t\tpassword2: {\n\t\t\t\trequired: \" \",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\t\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: \" \",\n\t\t\t\temail: \"Please enter a valid email address, example: you@yourdomain.com\",\n\t\t\t\tremote: jQuery.validator.format(\"{0} is already taken, please enter a different address.\")\t\n\t\t\t}\n\t\t},\n\t\tdebug:true\n\t});\n\t\n  $(\".resize\").vjustify();\n  $(\"div.buttonSubmit\").hoverClass(\"buttonSubmitHover\");\n\n  if ($.browser.safari) {\n    $(\"body\").addClass(\"safari\");\n  }\n  \n  $(\"input.phone\").mask(\"(999) 999-9999\");\n  $(\"input.zipcode\").mask(\"99999\");\n  var creditcard = $(\"#creditcard\").mask(\"9999 9999 9999 9999\");\n\n  $(\"#cc_type\").change(\n    function() {\n      switch ($(this).val()){\n        case 'amex':\n          creditcard.unmask().mask(\"9999 999999 99999\");\n          break;\n        default:\n          creditcard.unmask().mask(\"9999 9999 9999 9999\");\n          break;\n      }\n    }\n  );\n\n  // toggle optional billing address\n  var subTableDiv = $(\"div.subTableDiv\");\n  var toggleCheck = $(\"input.toggleCheck\");\n  toggleCheck.is(\":checked\")\n  \t? subTableDiv.hide()\n\t: subTableDiv.show();\n  $(\"input.toggleCheck\").click(function() {\n      if (this.checked == true) {\n        subTableDiv.slideUp(\"medium\");\n        $(\"form\").valid();\n      } else {\n        subTableDiv.slideDown(\"medium\");\n      }\n  });\n\n\n});\n\n$.fn.vjustify = function() {\n    var maxHeight=0;\n    $(\".resize\").css(\"height\",\"auto\");\n    this.each(function(){\n        if (this.offsetHeight > maxHeight) {\n          maxHeight = this.offsetHeight;\n        }\n    });\n    this.each(function(){\n        $(this).height(maxHeight);\n        if (this.offsetHeight > maxHeight) {\n            $(this).height((maxHeight-(this.offsetHeight-maxHeight)));\n        }\n    });\n};\n\n$.fn.hoverClass = function(classname) {\n\treturn this.hover(function() {\n\t\t$(this).addClass(classname);\n\t}, function() {\n\t\t$(this).removeClass(classname);\n\t});\n};"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/step2.htm",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"title\" content=\"Subscription Signup | Marketo\" />\n<meta name=\"robots\" content=\"index, follow\" />\n<meta name=\"description\" content=\"Marketo Search Marketing application\" />\n<meta name=\"keywords\" content=\"Marketo, Search Marketing\" />\n<meta name=\"language\" content=\"en\" />\n<title>Subscription Signup | Marketo</title>\n\n<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.ajaxQueue.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.delegate.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\" src=\"jquery.maskedinput.js\"></script>\n<script type=\"text/javascript\" src=\"mktSignup.js\"></script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"stylesheet.css\" />\n</head>\n<body>\n<!--[if lte IE 6]>\n  <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"ie6.css\" />\n<![endif]-->\n\n\n\n<!-- start page wrapper --><div id=\"letterbox\">\n\n<!-- start header container -->\n<div id=\"header-background\">\n        <div class=\"nav-global-container\">\n\n                <div class=\"login\"><a href=\"https://app.marketo.com\"><span></span>Customer Login</a></div>\n                <div class=\"logo\"><a href=\"#\"><img src=\"images/logo_marketo.gif\" width=\"168\" height=\"73\"  alt=\"Marketo\" /></a></div>\n\t\t<div class=\"nav-global\">\n\t\t\t\t<ul>\n      \t\t<li><a href=\"#\" class=\"nav-g01\"><span></span>Home</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g02\"><span></span>Products</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g04\"><span></span>B2B Marketing Resources</a></li>\n\n    \t\t\t<li><a href=\"#\" class=\"nav-g05\"><span></span>About Marketo</a></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t</div>\n</div>\n<!-- end header container -->\n<div class=\"line-grey-tier\"></div>\n\n<!-- start page container 2 div-->\n<div id=\"page-container\" class=\"resize\"><div id=\"page-content-inner\" class=\"resize\">\n\n<!-- start col-main -->\n\n<div id=\"col-main\" class=\"resize\" style=\"\">\n\n\n\n  <!-- start main content  -->\n  <div class=\"main-content resize\">\n\n  <div class=\"action-container\" style=\"display:none;\"></div>\n\n\n<h1>Step 2 of 2</h1>\n<h2>Billing Information</h2>\n<p>\n</p>\n<br clear=\"all\" />\n<div>\n  <form id=\"billingForm\" action=\"\" method=\"get\" >\n\n    <div class=\"error\" style=\"display:none;\">\n      <img src=\"images/warning.gif\" alt=\"Warning!\" width=\"24\" height=\"24\" style=\"float:left; margin: -5px 10px 0px 0px; \" />\n\n      <span></span>.<br clear=\"all\" />\n    </div>\n    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td class=\"label\" style=\"vertical-align: top; padding-top: 8px;\">Billing Address:</td>\n        <td class=\"field\" style=\"font-weight: normal\">\n          <div class=\"billingAddressControl\">\n\n            <input type=\"checkbox\" id=\"bill_to_co\" name=\"bill_to_co\" class=\"toggleCheck\" checked=\"checked\" style=\"width: auto;\" tabindex=\"1\" />\n            <label for=\"bill_to_co\" style=\"cursor:pointer\">Same as Company Address</label>\n          </div>\n        </td>\n      </tr>\n      <tr class=\"subTable\">\n        <td colspan=\"2\">\n          <div style=\"background-color: #EEEEEE; border: 1px solid #CCCCCC; padding: 10px;\" class=\"subTableDiv\">\n            <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n              <tr>\n                <td class=\"label\"><label for=\"bill_first_name\">First Name:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_first_name\" size=\"20\" type=\"text\" tabindex=\"2\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_last_name\">Last Name:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_last_name\" size=\"20\" type=\"text\" tabindex=\"3\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_email\">Email:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired email\" remote=\"emails.php\" name=\"email\" size=\"20\" type=\"text\" tabindex=\"4\" value=\"\" />\n                  <div class=\"formError\"></div>\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_address1\">Address:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_address1\" size=\"20\" type=\"text\" tabindex=\"5\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" name=\"bill_address2\" size=\"20\" type=\"text\" tabindex=\"6\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_city\">City:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_city\" size=\"20\" type=\"text\" tabindex=\"7\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_state\">State:</label></td>\n                <td class=\"field\">\n                  <select id=\"bill_state\" class=\"billingRequired\" name=\"bill_state\" style=\"margin-left: 4px;\" tabindex=\"8\">\n\t\t\t\t\t<option value=\"\">Choose State</option>\n                    <option value=\"AL\">Alabama</option><option value=\"AK\">Alaska</option><option value=\"AZ\">Arizona</option><option value=\"AR\">Arkansas</option><option value=\"CA\">California</option><option value=\"CO\">Colorado</option><option value=\"CT\">Connecticut</option><option value=\"DE\">Delaware</option><option value=\"FL\">Florida</option><option value=\"GA\">Georgia</option><option value=\"HI\">Hawaii</option><option value=\"ID\">Idaho</option><option value=\"IL\">Illinois</option><option value=\"IN\">Indiana</option><option value=\"IA\">Iowa</option><option value=\"KS\">Kansas</option><option value=\"KY\">Kentucky</option><option value=\"LA\">Louisiana</option><option value=\"ME\">Maine</option><option value=\"MD\">Maryland</option><option value=\"MA\">Massachusetts</option><option value=\"MI\">Michigan</option><option value=\"MN\">Minnesota</option><option value=\"MS\">Mississippi</option><option value=\"MO\">Missouri</option><option value=\"MT\">Montana</option><option value=\"NE\">Nebraska</option><option value=\"NV\">Nevada</option><option value=\"NH\">New Hampshire</option><option value=\"NJ\">New Jersey</option><option value=\"NM\">New Mexico</option><option value=\"NY\">New York</option><option value=\"NC\">North Carolina</option><option value=\"ND\">North Dakota</option><option value=\"OH\">Ohio</option><option value=\"OK\">Oklahoma</option><option value=\"OR\">Oregon</option><option value=\"PA\">Pennsylvania</option><option value=\"RI\">Rhode Island</option><option value=\"SC\">South Carolina</option><option value=\"SD\">South Dakota</option><option value=\"TN\">Tennessee</option><option value=\"TX\">Texas</option><option value=\"UT\">Utah</option><option value=\"VT\">Vermont</option><option value=\"VA\">Virginia</option><option value=\"WA\">Washington</option><option value=\"WV\">West Virginia</option><option value=\"WI\">Wisconsin</option><option value=\"WY\">Wyoming</option>\n                  </select>\n                </td>\n              </tr>\n\n              <tr>\n                <td class=\"label\"><label for=\"bill_zip\">Zip:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"10\" class=\"billingRequired zipcode\" name=\"bill_zip\"  style=\"width: 100px\" type=\"text\" class=\"zipcode\" tabindex=\"9\" value=\"\" />\n                </td>\n              </tr>\n\n              <tr>\n                <td class=\"label\"><label for=\"bill_phone\">Phone:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"14\" class=\"billingRequired phone\" name=\"bill_phone\" style=\"width: 100px\" type=\"text\" class=\"phone\" tabindex=\"10\" value=\"\" />\n                </td>\n              </tr>\n            </table>\n          </div>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\">Credit Card Type:</td>\n        <td class=\"field\">\n          <select id=\"cc_type\" class=\"required\" name=\"cc_type\" class=\"creditCardType\" tabindex=\"11\">\n            <option value=\"\">Choose Credit Card</option>\n            <option value=\"amex\">American Express</option>\n            <option value=\"discover\">Discover</option>\n            <option value=\"mastercard\">MasterCard</option>\n            <option value=\"visa\">Visa</option>\n          </select>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\">Expiration:</td>\n        <td class=\"field\">\n          <select id=\"cc_exp_month\" name=\"cc_exp_month\" title=\"ExpirationMonth\" tabindex=\"12\">\n            <option value=\"01\">01 - Jan</option>\n            <option value=\"02\">02 - Feb</option>\n            <option value=\"03\">03 - Mar</option>\n            <option value=\"04\">04 - Apr</option>\n            <option value=\"05\">05 - May</option>\n            <option value=\"06\">06 - Jun</option>\n            <option value=\"07\">07 - Jul</option>\n            <option value=\"08\">08 - Aug</option>\n            <option value=\"09\">09 - Sep</option>\n            <option value=\"10\">10 - Oct</option>\n            <option value=\"11\">11 - Nov</option>\n            <option value=\"12\">12 - Dec</option>\n          </select>\n          <select id=\"cc_exp_year\" name=\"cc_exp_year\" title=\"ExpirationYear\" tabindex=\"13\">\n            <option value=\"2007\">2007</option>\n            <option value=\"2008\" selected=\"selected\">2008</option>\n            <option value=\"2009\">2009</option>\n            <option value=\"2010\">2010</option>\n            <option value=\"2011\">2011</option>\n            <option value=\"2012\">2012</option>\n            <option value=\"2013\">2013</option>\n            <option value=\"2014\">2014</option>\n            <option value=\"2015\">2015</option>\n            <option value=\"2016\">2016</option>\n          </select>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"credit_card\">Credit Card Number:</label></td>\n        <td class=\"field\">\n          <input maxlength=\"40\" id=\"creditcard\" class=\"required\" name=\"credit_card\" size=\"20\" type=\"text\" tabindex=\"14\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"cc_cvv\">Security Code:</label></td>\n        <td class=\"field\">\n          <input id=\"ccNumber\" class=\"required\" maxlength=\"4\" name=\"cc_cvv\" style=\"width: 30px;\" type=\"text\" style=\"vertical-align: top;\" tabindex=\"16\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td>\n          <div class=\"buttonSubmit\">\n            <span></span>\n            <input class=\"formButton\" type=\"submit\" value=\"Finish\" style=\"width: 180px\" />\n          </div><br clear=\"all\"/>\n\n        </td>\n      </tr>\n    </table>\n  </form>\n  <br clear=\"all\" />\n\n</div>\n\n\n\n\t</div>\t<!-- end main content  -->\n\t<br />\n</div> <!-- end col-main -->\n\n<!-- start left col -->\n<div id=\"col-left\" class=\"nav-left-back empty resize\" style=\"position: absolute; min-height: 450px;\">\n  <div class=\"col-left-header-tab\" style=\"position: absolute;\">Signup</div>\n  <div class=\"nav-left\">\n\n\n  </div>\n\n\n      <div class=\"left-nav-callout png\" style=\"top: 15px; margin-bottom: 100px;\">\n        <img src=\"images/left-nav-callout-long.png\"  class=\"png\" alt=\"\" />\n        <h6>Sign Up Process</h6>\n        <a style=\"background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Sign up with a valid credit card.</a>\n        <a style=\"background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Connect to your Google AdWords account.  You will need your AdWords Customer ID.</a>\n\n        <a target=\"_blank\" style=\"background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Start your 30 day trial.  No payments until trial ends.</a>\n      </div>\n\n<div class=\"footerAddress\">\n<b>Marketo Inc.</b><br />\n1710 S. Amphlett Blvd.<br />\nSan Mateo, CA 94402 USA<br />\n</div>\n<br clear=\"all\"/>\n</div>\t<!-- end left col -->\n\n</div>  </div>  <!-- end page container 2 divs-->\n\n  <div id=\"footer-container\" align=\"center\">\n   <div class=\"footer\">\n\t\t<ul>\n\t\t<li><a href=\"..\">Home</a></li>\n\t\t<li class=\"line-off\"><a href=\".\">Back to first step</a></li>\n\t\t</ul>\n\t\t</div></div>\n\n\n\n<!-- end page wrapper -->\n</div>\n\n\n<script src=\"http://www.google-analytics.com/urchin.js\" type=\"text/javascript\">\n</script>\n<script type=\"text/javascript\">\n_uacct = \"UA-2623402-1\";\nurchinTracker();\n</script>\n\n    </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/stylesheet.css",
    "content": ":-moz-any-link :focus {\n\toutline: none;\n}\n\n:focus {\n\t-moz-outline-style: none;\n\toutline: none;\n}\n\nbody {\n\tfont-size: 80%;\n\tmargin: 0;\n\tpadding: 0;\n\tfont-family: tahoma, geneva, sans-serif;\n\tbackground-color: #000000;\n}\n\na {\n\tcolor: #0653AB;\n\toutline: 0px;\n\ttext-decoration: none;\n}\n\na:hover {\n\toutline: 0px;\n\ttext-decoration: underline;\n}\n\nimg {\n\tborder: 0px;\n}\n\n/* s1.0 - Page Containers */\n#letterbox {\n\tmargin: 10px auto;\n\twidth: 883px;\n\tbackground-color: #364158;\n\tborder: 8px solid #D4D4D4;\n\tpadding: 1px 1px 10px 1px;\n}\n\n#header-background {\n\tbackground: url(images/back_nav_blue.gif) repeat-x;\n\tmargin: 0px auto;\n\tpadding: 0px;\n\theight: 73px;\n\twidth: 883px;\n\tborder-top: 4px solid #CCEAFE;\n\tborder-bottom: 4px solid #D4D4D4;\n}\n\n#page-container {\n\twidth: 866px;\n\tmargin: 0px auto;\n\tmargin-top: 33px; /* pad from top menu to actions buts*/\n\tmargin-bottom: -11px;\n\tpadding-top: 8px;\n\tpadding-bottom: 8px;\n\tbackground-color: #D4D4D4; /* light grey*/\n\tborder-right: 1px solid #464646;\n}\n\n#page-content-inner {\n\twidth: 849px;\n\tmargin: 0px auto;\n\tborder-top: 1px solid #9F9FA0;\n\tborder-left: 1px solid #A2A09A;\n\tbackground-color: #F4F1E9;\n\tposition: relative;\n}\n\n#page-content-inner #col-left {\n\twidth: 210px;\n\tfloat: left;\n\tbackground-color: #F4F1E9;\n}\n\n#page-content-inner #col-main {\n\twidth: 639px;\n\tbackground-color: #ffffff;\n\tposition: absolute;\n\tright: 0px;\n\ttop: 0px;\n}\n\n#footer-container {\n\twidth: 866px;\n\tposition: relative;\n\tleft: 8px;\n\tpadding: 2px 0px 10px 0px;\n\tbackground-color: #D4D4D4; /* light grey*/\n}\n\n/* s2.0 - Global navigation bar */\n.nav-global-container {\n\twidth: 880px;\n\tmargin: 0px auto;\n\tposition: relative;\n}\n\n* html .nav-global-container { /* ie6 fix*/\n\tmargin-bottom: -6px;\n}\n\n.login {\n\tposition: absolute;\n\tright: 20px;\n\ttext-align: center;\n}\n\n.login a,.login a span {\n\tdisplay: block;\n\theight: 18px;\n\tfont-size: 11px;\n\tbackground: url(images/login-sprite.gif) right -5px no-repeat;\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tpadding: 5px 10px 5px 10px;\n\tposition: relative;\n}\n\n.login a:hover {\n\tcolor: #000000;\n\ttext-decoration: underline;\n}\n\ndiv.login a span {\n\tbackground-position: left -105px;\n\twidth: 4px;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tpadding: 5px 0px 5px 0px;;\n}\n\ndiv.login a:hover span {\n\t\n}\n\n.logo {\n\tfloat: left;\n\tmargin: 0px 0px -5px 0px; /* neg marging for ie6 */\n}\n\n.logo img {\n\tborder: 0px;\n\tmargin-left: -1px;\n}\n\n.nav-global {\n\tfloat: left;\n\twidth: 645px;\n\tmargin: 40px 0px 0px 40px;\n\tbackground-color: transparent;\n}\n\n.nav-global ul {\n\tmargin: 0px;\n\tpadding: 0px;\n\tlist-style: none;\n}\n\n.nav-global li {\n\tfloat: left;\n\twhite-space: nowrap;\n}\n\ndiv.nav-global li a,div.nav-global li a span {\n\tbackground-image: url(images/tab-sprite.gif);\n\tbackground-position: right 100px;\n\tbackground-repeat: no-repeat;\n\theight: 32px;\n\tcolor: #666666;\n\ttext-decoration: none;\n\tfont: bold 16px 'trebuchet ms';\n\tmargin-right: 15px;\n\tdisplay: block;\n\tposition: relative;\n\tpadding: 7px 15px 0px 15px;\n}\n\ndiv.nav-global li a:hover {\n\tbackground-position: right 0px;\n\tcolor: #333333;\n}\n\ndiv.nav-global li a:hover span {\n\tbackground-position: left -100px;\n\tdisplay: block !important;\n}\n\ndiv.nav-global li a span {\n\tbackground-position: left 150px;\n\twidth: 4px;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\tpadding: 7px 0px 0px 0px;\n}\n\nbody.safari div.nav-global li a span {\n\tdisplay: none;\n}\n\ndiv.nav-global li a.on,div.nav-global li a.on:hover {\n\tbackground-position: right -55px;\n\tcolor: #FFFFFF;\n}\n\ndiv.nav-global li a.on span,div.nav-global li a.on:hover span {\n\tbackground-position: left -155px;\n\tdisplay: block !important;\n}\n\ndiv.action-container {\n\tposition: relative;\n\ttop: -45px;\n\tcursor: pointer;\n}\n\ndiv.action-icon-container {\n\tposition: absolute;\n\ttop: -17px;\n\tleft: -17px;\n\tz-index: 10;\n\twidth: 100px;\n\theight: 100px;\n\toverflow: hidden;\n}\n\ndiv.action-icon {\n\tborder: 0px;\n\tposition: absolute;\n\ttop: -0px;\n\tleft: 0px;\n}\n\ndiv.action-button-container {\n\theight: 106px;\n\twidth: 180px;\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tz-index: 5;\n}\n\nimg.action-icon {\n\tborder: 0px;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tz-index: 0\n}\n\ndiv.action-text {\n\tz-index: 20;\n\tcolor: #FFFFFF;\n\tposition: absolute;\n\tleft: 40px;\n\ttop: 12px;\n\tfont: 14px tahoma, geneva;\n\tpadding-top: 30px;\n}\n\ndiv.bigbuttons {\n\ttop: -20px;\n}\n\ndiv.action-header {\n\tz-index: 21;\n\tposition: absolute;\n\tleft: 40px;\n\ttop: 10px;\n}\n\ndiv.action-header b {\n\tfont: bold 17px tahoma, geneva;\n\tdisplay: block;\n\tmargin-bottom: 10px;\n\tcolor: #0b2c89;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\twidth: 130px;\n}\n\ndiv.action-header b.shadow {\n\ttop: 1px;\n\tleft: 1px;\n\tcolor: #d5d5d5;\n}\n\nimg.action-button {\n\tposition: relative;\n}\n\ndiv.hover img.action-button {\n\ttop: -131px;\n}\n\ndiv.on img.action-button {\n\ttop: -261px;\n}\n\n/* s3.0 - top of content Action Buttons */\n.action-buttons {\n\twidth: 100%; /* ie6 requires */\n}\n\n.action-buttons ul {\n\tposition: relative;\n\tpadding: 0px;\n}\n\n.action-buttons li {\n\tposition: relative; /* ie6 fix */\n\tfloat: left;\n\tlist-style: none;\n\ttext-align: center;\n\tline-height: 16px;\n\tmargin: -61px 0px 0px 0px;\n}\n\n.action-home li {\n\tmargin: -49px 0px 0px 0px;\n}\n\n.action-buttons  a {\n\tdisplay: block;\n\theight: 110px;\n\twidth: 175px;\n\tpadding: 14px 0px 0px 25px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n}\n\n.action-buttons li span {\n\tcolor: #053880;\n\tline-height: 47px;\n\tfont-size: 17px;\n}\n\ndiv.action-bottom {\n\tmargin: 15px 0px 10px 0px;\n\tfloat: left;\n}\n\ndiv.action-bottom a {\n\theight: 61px;\n\twidth: 178px;\n\tborder: 0px;\n\tbackground: url(images/action-bottom.gif) no-repeat 0px 0px;\n\tcolor: #0b2c89;\n\tfloat: left;\n\tposition: relative;\n\tfont: bold 17px tahoma, geneva;\n\ttext-decoration: none;\n\tmargin-right: 10px;\n}\n\ndiv.action-bottom a span {\n\tposition: absolute;\n\ttop: 15px;\n\tleft: 40px;\n}\n\ndiv.action-bottom a span.shadow {\n\ttop: 16px;\n\tleft: 41px;\n\tcolor: #d4d4d4;\n}\n\n.line-grey {\n\tbackground: url(images/line-grey.gif) 0 0 repeat-x;\n\theight: 2px;\n\tmargin: 8px 25px 20px 0;\n}\n\n/* s4.0 - Home Hero Area */\n.hero-background {\n\tposition: relative;\n\twidth: 880px;\n\tbackground: url(images/back_home-hero.jpg) 10px 0px no-repeat;\n\theight: 211px;\n\tmargin: -20px 0px 45px 0px;\n}\n\n.hero-text {\n\tfloat: right;\n\twidth: 626px;\n\tmargin-top: 26px;\n}\n\n.hero-text a { /* Sign Up Now Button */\n\tpadding: 5px 32px 0px 0px;\n\tfloat: right;\n}\n\n.hero-text h1 {\n\tfont-size: 2.3em;\n\tline-height: 1.2em;\n\tcolor: #333333;\n\tfont-family: Trebuchet MS;\n\tmargin: 12px 0px 10px 10px;\n}\n\n.hero-text h2 {\n\tmargin: 0px;\n\tfont-weight: normal;\n\tfont-size: 1.35em;\n\tmargin: 5px 0px 13px 10px\n}\n\n/* s4.1 - Home Left Header tab */\n.col-left-header-tab {\n\tposition: relative; /* ie6 fix */\n\tbackground: url(images/tab_green.gif) 0 0 no-repeat;\n\theight: 30px;\n\twidth: 166px;\n\ttext-align: center;\n\tcolor: #ffffff;\n\tfont: 20px 'trebuchet ms';\n\tpadding-top: 2px;\n\tmargin-top: -41px;\n\tmargin-left: 20px;\n\tline-height: 29px;\n\tmargin-bottom: 8px;\n\tdisplay: block;\n}\n\n.col-left-header-tab a {\n\tcolor: #FFFFFF;\n}\n\n.callout-green {\n\tbackground: url(images/back_green-fade.gif) 0 0 repeat-x;\n\tfont-size: 1.2em;\n\tpadding: 10px 15px 20px 13px;\n\tcolor: #303B52;\n\tline-height: 1.4em;\n}\n\n/* s4.2 - Home Left Quote */\n.callout-tan {\n\tcolor: #666666;\n}\n\n.callout-tan h1 {\n\tbackground: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y;\n\tfont-size: 1.1em;\n\ttext-align: center;\n\tmargin: 0px;\n\tpadding: 11px 5px 11px 2px;\n\tcolor: #333333;\n}\n\n.callout-tan p {\n\tmargin: 0px;\n\tmargin-top: 5px;\n\tline-height: 1.4em;\n\tpadding: 5px 10px 7px 13px;\n}\n\n.callout-tan p img {\n\tfloat: left;\n\tmargin: 5px 10px 5px 0px;\n}\n\n.callout-tan div {\n\ttext-align: left;\n\tpadding: 5px 10px 7px 0px;\n\tfont-weight: bold;\n}\n\n/* s4.3 - purple home boxes */\n.box-purple {\n\tbackground: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x;\n\tborder-left: 1px solid #ffffff;\n\tcolor: #333333;\n\twidth: 581px;\n\tpadding: 10px 15px 20px 15px;\n}\n\ndiv.box-purple a {\n\t\n}\n\n.box-purple h1 {\n\tfont-size: 1.5em;\n\tmargin: 10px 0px -15px 0px;\n}\n\n.box-purple li {\n\tmargin: 0px 0px 0px -23px;\n\tline-height: 1.6em;\n\tfont-size: 1em;\n}\n\n.box-purple  div {\n\tpadding: 0px 0px 0px 110px;\n}\n\n.icon-text01 {\n\tbackground-image: url(images/icon_search-engine-market.png);\n\tbackground-repeat: no-repeat;\n}\n\n* html .icon-text01 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_search-engine-market.png\",\n\t\tsizingMethod = \"crop\");\n}\n\n.icon-text02 {\n\tbackground: url(images/icon_landing-pages.png) 0 0 no-repeat;\n}\n\n* html .icon-text02 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_landing-pages.png\", sizingMethod =\n\t\t\"crop\");\n}\n\n.icon-text03 {\n\tbackground: url(images/icon_salesforce.png) 0 0 no-repeat;\n}\n\n* html .icon-text03 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_salesforce.png\", sizingMethod =\n\t\t\"crop\");\n}\n\n/* s4.4 - news home boxes */\n.callout-news {\n\tcolor: #555555;\n\tfloat: left;\n\twidth: 49%;\n\tmargin: 10px 1px 0px 0px;\n\tpadding-bottom: 20px;\n\ttext-align: left;\n}\n\n.line-news-r {\n\tborder-right: 1px solid #D4D4D4;\n}\n\n.callout-news h1 {\n\tbackground-color: #EEEEEE;\n\tfont-size: 1.2em;\n\tmargin: 0px;\n\tpadding: 11px 5px 11px 15px;\n\tcolor: #333333;\n}\n\n.callout-news p {\n\tmargin: 10px 0px 0px 10px;\n\tpadding: 0px 10px 7px 20px;\n\tbackground: url(images/news.gif) no-repeat left 1px;\n}\n\n.callout-news p a {\n\t\n}\n\n.callout-news ul {\n\tlist-style-type: none;\n\tpadding: 0;\n\tmargin: 10px 0 0 10px;\n}\n\n.callout-news li {\n\tbackground: url(images/icon_news.gif) no-repeat left 2px;\n\tpadding: 0px 5px 5px 20px;\n}\n\n.callout-news li a {\n\tdisplay: block;\n\tmargin-bottom: 5px;\n}\n\n.callout-news div {\n\ttext-align: right;\n}\n\n#scrollup {\n\tposition: relative;\n\toverflow: hidden;\n\theight: 440px;\n\twidth: 200px\n}\n\n.headline {\n\tposition: absolute;\n\ttop: 600px;\n\tleft: 5px;\n\theight: 585px;\n\twidth: 190px;\n\tfont: normal 12px tahoma, geneva !important;\n}\n\ndiv.more {\n\tmargin: 5px 0px 0px 0px;\n\tpadding: 0px 10px 0px 0px;\n\tletter-spacing: inherit;\n}\n\ndiv.more a {\n\tbackground: transparent url(images/arrow_r-blue.gif) no-repeat right 2px\n\t\t;\n\tfont-weight: bold;\n\tpadding: 0px 20px 0px 0px;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\ndiv.more a:hover {\n\ttext-decoration: underline;\n}\n\n/* sX.0 - Left Nav */\n.nav-left-back {\n\tbackground: url(images/back_nav_side.gif) 0 0 repeat-x;\n}\n\ndiv.empty {\n\tbackground: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x;\n}\n\ndiv.empty div.callout-green {\n\t\n}\n\n.nav-left {\n\tpadding-top: 12px;\n\t/*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/\n\twidth: 210px;\n}\n\n.nav-left ul {\n\tmargin: 0px;\n\tpadding: 0px;\n\tlist-style: none;\n}\n\n.nav-left li a {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tborder-top: 1px solid #B3D38D;\n\tborder-bottom: 1px solid #7CA84E;\n\tborder-left: 1px solid #97B973;\n\tpadding: 6px 0px 0px 20px;\n}\n\n.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover {\n\tcolor: #4C6F28;\n\tbackground-color: #F4F1E9;\n}\n\n.nav-left a.open {\n\tbackground-image: url(images/arrow_d-green.gif);\n\tbackground-repeat: no-repeat;\n\tbackground-position: 6px 11px;\n}\n\n.nav-left-header-tab {\n\tposition: relative; /* ie6 fix */\n\tbackground: url(images/tab_green.gif) 0 0 no-repeat;\n\theight: 32px;\n\twidth: 166px;\n\ttext-align: center;\n\tcolor: #ffffff;\n\tmargin: -41px 0px 0px 22px;\n\tline-height: 22px;\n\tmargin-bottom: 8px;\n\tdisplay: block;\n}\n\ndiv.empty div.nav-left-header-tab {\n\tbackground: url(images/tab_green2.gif) 0 0 no-repeat;\n}\n\n.nav-left a.active {\n\t/* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #F4F1E9;\n\tcolor: #4C6F28;\n\tborder-top: 1px solid #D1E5BB;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #DADADA;\n\tpadding: 6px 0px 0px 20px;\n}\n\n#nav-left-sub a {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #D6E8C4;\n\tcolor: #4C6F28;\n\tborder-top: 1px solid #D6E8C4;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #97B973;\n\tborder-right: 1px solid #8DBE5A;\n\tpadding: 6px 0px 0px 30px;\n}\n\n* html #nav-left-sub { /* ie6 fix */\n\tmargin-top: -1px;\n}\n\n*+html #nav-left-sub { /* ie7 fix */\n\tmargin-top: -1px;\n}\n\n#nav-left-sub a.active-page {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #ffffff;\n\tcolor: #666666;\n\tborder-top: 0px solid #7CA84E;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #97B973;\n\tborder-right: 0px solid #8DBE5A;\n\tpadding: 6px 0px 0px 30px;\n\tcursor: default; /* turns off hand icon for link */\n}\n\n/* sX.0 -  Main Content */\n.main-content {\n\tcolor: #666666;\n\tposition: absolute;\n\tright: 20px;\n\tpadding-top: 20px;\n\twidth: 585px;\n\tpadding-bottom: 20px;\n}\n\ndiv.main-content div.main-content {\n\t\n}\n\n.main-content h1 {\n\tcolor: #5890D1;\n\tfont-size: 1.9em;\n\tfont-family: Trebuchet MS;\n\tborder-bottom: 1px solid #cccccc;\n\tmargin: 0px 10px 0px 0px;\n}\n\n.main-content h2 {\n\tcolor: #666666;\n\tfont-size: 1.3em;\n\tfont-weight: normal;\n\tmargin: 10px 10px 5px 0px;\n}\n\n.main-content p {\n\tmargin: 10px 10px 10px 0px;\n\tline-height: 1.55em;\n}\n\n/* sX.1 -  Main Content Sub Styles */\n.sub-grey {\n\tborder-top: 1px solid #D4D4D4;\n\tborder-bottom: 1px solid #D4D4D4;\n\tbackground-color: #F4F4F4;\n\tmargin: 10px 10px 0px 0px;\n\tpadding: 0px 10px 20px 15px;\n}\n\n.sub-white {\n\tmargin: 10px 10px 0px 0px;\n\tpadding: 0px 10px 20px 15px;\n}\n\nimg.screen-grab-r {\n\tmargin-right: -8px;\n\ttext-align: right;\n\tpadding: 0px 0px 0px 10px;\n}\n\ndiv.main-content a.screenshot {\n\tfloat: right;\n\tpadding: 10px 10px 0px 0px\n}\n\n.content-foot {\n\tborder-top: 1px solid #D4D4D4;\n\tfont-size: .9em;\n\tline-height: 1.45em;\n\tmargin: 10px 20px 0px 0px;\n\tpadding: 10px 10px 30px 0px;\n}\n\ndiv.main-content ul {\n\tposition: relative;\n\tleft: -25px;\n}\n\ndiv.main-content li {\n\tmargin-bottom: 5px;\n\tlist-style-type: disc\n}\n\ndiv.main-content li a {\n\tcolor: #6A6CB0;\n}\n\n/* sX.0 - Footer */\ndiv.footer {\n\tcolor: #666666;\n\tfont-size: .85em;\n\tfont-weight: normal;\n\theight: 18px;\n\tmargin: 0px auto;\n\tfont-family: Tahoma, Geneva, sans-serif;\n\tmargin-top: 10px;\n}\n\n.footer ul {\n\tlist-style-type: none;\n}\n\n.footer li {\n\tfloat: left;\n\tborder-right: 1px solid #666666;\n\tpadding: 0px 7px 0px 7px;\n\tmargin-top: 3px;\n}\n\n.footer a {\n\tcolor: #666666;\n\ttext-decoration: none;\n}\n\n.footer a:hover {\n\tcolor: #0653AB;\n\ttext-decoration: none;\n}\n\n.footer li.line-off {\n\tborder-right: 0px solid #ffffff;\n}\n\ndiv.footer strong {\n\tfont-weight: normal;\n}\n\n/* sX.0 - General Colors */\n.line-grey,.line-grey-tier {\n\tborder-top: 1px solid #A3A3A2;\n}\n\n.line-grey-tier {\n\tpadding-bottom: 25px;\n}\n\n.bottom {\n\theight: 10px;\n}\n\ndiv.p10bottom {\n\tpadding-bottom: 10px;\n}\n\n.clear {\n\tclear: both;\n}\n\ntable.grid {\n\tbackground: #EEEEEE;\n}\n\ntable.grid th {\n\tbackground-color: #F4F4F4;\n}\n\ntable.grid td {\n\tbackground-color: #FFFFFF;\n}\n\ndiv.buttonSubmit {\n\tposition: relative;\n}\n\ndiv.buttonSubmit input,div.buttonSubmit span {\n\theight: 36px;\n\tposition: relative;\n\tbackground-image: url(images/button-submit.gif);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right 0px;\n\tfloat: left;\n\tcolor: #FFFFFF;\n\tfont-weight: bold;\n\tpadding: 0px 15px 2px 15px;\n\tmargin: 20px 0px 20px 0px;\n\tborder: 0px;\n\tcursor: pointer;\n\tz-index: 5;\n}\n\ndiv.buttonSubmit input {\n\twidth: auto;\n}\n\ndiv.buttonSubmit span {\n\twidth: 4px;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\tbackground-position: left -36px;\n\tpadding: 0px 0px 0px 0px;\n\tz-index: 10;\n}\n\nbody.safari div.buttonSubmit span {\n\tdisplay: none\n}\n\ndiv.buttonSubmitHover input {\n\tbackground-position: right -72px;\n}\n\ndiv.buttonSubmitHover span {\n\tbackground-position: left -108px;\n}\n\na.demoLink {\n\tpadding: 1px 10px 0px 17px;\n\theight: 24px;\n\tbackground: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px;\n\tdisplay: block;\n\tfloat: left;\n}\n\ndiv.callout-tan a {\n\tbackground: none;\n\tcolor: #0653AB;\n\tmargin: auto;\n\tdisplay: block;\n}\n\ndiv.callout-tan a:hover {\n\tbackground: none;\n\tcolor: #0653AB;\n}\n\nlabel.error {\n\tdisplay: block;\n\tcolor: red;\n\tfont-style: italic;\n\tfont-weight: normal;\n}\n\ninput.error {\n\tborder: 2px solid red;\n}\n\np.demoBlock {\n\tborder-bottom: 1px solid #DDDDDD;\n\tpadding-bottom: 10px;\n}\n\ndiv.left-nav-callout {\n\theight: 200px;\n\twidth: 190px;\n\ttop: 55px;\n\tleft: 5px;\n\tposition: relative;\n\tpadding-left: 9px;\n\tpadding-top: 13px;\n}\n\ndiv.left-nav-callout img.png {\n\tposition: absolute;\n\tz-index: 0;\n\ttop: 0px;\n\tleft: 0px;\n}\n\ndiv.left-nav-callout h6 {\n\tfont: bold 14px tahoma, geneva;\n\tcolor: #333333;\n\theight: 36px;\n\tpadding-left: 5px;\n\tmargin: 0px;\n\tposition: relative;\n\tz-index: 10;\n}\n\ndiv.left-nav-callout a {\n\tbackground: url(images/monitor24.gif) no-repeat 0px center;\n\tpadding: 5px 0px 5px 30px;\n\tdisplay: block;\n\tfont: bold 12px tahoma, geneva;\n\tcolor: #336699;\n\tmargin-bottom: 5px;\n\tposition: relative;\n\tz-index: 10;\n\twidth: 140px;\n}\n\nform table td {\n\tpadding: 5px;\n}\n\nform table input {\n\twidth: 200px;\n\tpadding: 3px;\n\tmargin: 0px;\n}\n\ntextarea {\n\twidth: 400px\n}\n\ntd.label {\n\twidth: 150px;\n}\n\ntr.required td.label {\n\tfont-weight: bold;\n\tbackground: url(/images/forms/backRequiredGray.gif) no-repeat right\n\t\tcenter;\n}\n\ndiv.subTableDiv {\n\twidth: 500px;\n}\n\ndiv.subTableDiv td.label {\n\twidth: 135px;\n}\n\nul#homeBlog li div.description {\n\tdisplay: none;\n}\n\ntd.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select {\n\tborder: 2px solid red;\n\tbackground-color: #FFFFD5;\n\tmargin: 0px;\n\tcolor: red;\n}\n\ntr td.field div.formError {\n\tdisplay: none;\n\tcolor: #FF0000;\n}\n\ntr.errorRow td.field div.formError {\n\tdisplay: block;\n\tfont-weight: normal;\n}\n\ndiv.error {\n\tcolor: red;\n}\n\ndiv.error a {\n\tcolor: #336699;\n\tfont-size: 12px;\n\ttext-decoration: underline\n}\n\ndiv.tooltip {\n\tposition: absolute;\n\tleft: 30px;\n\tbottom: 0px;\n\tdisplay: none; /* in case javascript is disabled */\n\twidth: 170px;\n\tbackground-color: #F4F1E9;\n\tz-index: 100;\n\tpadding: 10px;\n\tborder: 1px solid #CCCCCC;\n}\n\ndiv.offerbox {\n\twidth: 125px;\n\tfloat: left;\n\tposition: relative;\n}\n\ndiv.offerbox h3 {\n\tfont: bold 17px tahoma, geneva;\n\tcolor: #333333;\n\theight: 55px;\n\tmargin: 0px auto;\n\ttext-align: center;\n}\n\ndiv.offerbox h4 {\n\theight: 100px;\n\tfont: normal 13px tahoma, geneva;\n\tmargin: 0px;\n}\n\ndiv.offerbox h5 {\n\tfont: bold 14px tahoma, geneva;\n\tmargin: 0px;\n\theight: 55px;\n}\n\ndiv.offerbox h5 small {\n\tfloat: left;\n\tfont-weight: normal;\n\tfont-size: 10px;\n}\n\ndiv.offerbox div.learnmore {\n\tpadding-left: 25px;\n}\n\ndiv#marketoEditions {\n\tbackground: url(images/buynowBack.gif) no-repeat;\n\twidth: 584px;\n\theight: 376px;\n\tfloat: left;\n\tposition: relative;\n\tmargin-bottom: 10px;\n}\n\ndiv.offerHeader {\n\tbackground: #0D8BBD;\n\tposition: absolute;\n\ttop: 20px;\n\twidth: 266px;\n\theight: 34px;\n\tborder: 1px solid #e1e4e2;\n}\n\ndiv.offerHeader span {\n\tfont: 20px 'trebuchet ms';\n\tcolor: #FFFFFF;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n}\n\ndiv.offerHeader span.shadow {\n\tfont: 20px 'trebuchet ms';\n\tcolor: #333333;\n\tposition: absolute;\n}\n\ndiv.offerbox div.buttonSubmit {\n\tmargin: 5px 0px 0px 10px;\n}\n\ndiv.footerAddress {\n\tposition: absolute;\n\tbottom: 30px;\n\tleft: 20px;\n\tcolor: #666666;\n\tfont-size: 11px;\n\tdisplay: none;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['email']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = '\"Thats already taken.\"';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"milk.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/chili.css\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<style type=\"text/css\">\n\tpre { text-align: left; }\n</style>\n\n<script id=\"demo\" type=\"text/javascript\">\n$(document).ready(function() {\n\t// validate signup form on keyup and submit\n\tvar validator = $(\"#signupform\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2,\n\t\t\t\tremote: \"users.php\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tpassword_confirm: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true,\n\t\t\t\tremote: \"emails.php\"\n\t\t\t},\n\t\t\tdateformat: \"required\",\n\t\t\tterms: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Enter your firstname\",\n\t\t\tlastname: \"Enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Enter a username\",\n\t\t\t\tminlength: jQuery.format(\"Enter at least {0} characters\"),\n\t\t\t\tremote: jQuery.format(\"{0} is already in use\")\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Provide a password\",\n\t\t\t\trangelength: jQuery.format(\"Enter at least {0} characters\")\n\t\t\t},\n\t\t\tpassword_confirm: {\n\t\t\t\trequired: \"Repeat your password\",\n\t\t\t\tminlength: jQuery.format(\"Enter at least {0} characters\"),\n\t\t\t\tequalTo: \"Enter the same password as above\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: \"Please enter a valid email address\",\n\t\t\t\tminlength: \"Please enter a valid email address\",\n\t\t\t\tremote: jQuery.format(\"{0} is already in use\")\n\t\t\t},\n\t\t\tdateformat: \"Choose your preferred dateformat\",\n\t\t\tterms: \" \"\n\t\t},\n\t\t// the errorPlacement has to take the table layout into account\n\t\terrorPlacement: function(error, element) {\n\t\t\tif ( element.is(\":radio\") )\n\t\t\t\terror.appendTo( element.parent().next().next() );\n\t\t\telse if ( element.is(\":checkbox\") )\n\t\t\t\terror.appendTo ( element.next() );\n\t\t\telse\n\t\t\t\terror.appendTo( element.parent().next() );\n\t\t},\n\t\t// specifying a submitHandler prevents the default submit, good for the demo\n\t\tsubmitHandler: function() {\n\t\t\talert(\"submitted!\");\n\t\t},\n\t\t// set this class to error-labels to indicate valid fields\n\t\tsuccess: function(label) {\n\t\t\t// set &nbsp; as text for IE\n\t\t\tlabel.html(\"&nbsp;\").addClass(\"checked\");\n\t\t}\n\t});\n\t\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<div id=\"content\">\n\n<div id=\"header\">\n  <div id=\"headerlogo\"><img src=\"milk.png\" alt=\"Remember The Milk\" /></div>\n</div>\n<div style=\"clear: both;\"><div></div></div>\n\n\n<div class=\"content\">\n    <div id=\"signupbox\">\n       <div id=\"signuptab\">\n        <ul>\n          <li id=\"signupcurrent\"><a href=\" \">Signup</a></li>\n        </ul>\n      </div>\n      <div id=\"signupwrap\">\n      \t\t<form id=\"signupform\" autocomplete=\"off\" method=\"get\" action=\"\">\n\t  \t\t  <table>\n\t  \t\t  <tr>\n\t  \t\t  \t<td class=\"label\"><label id=\"lfirstname\" for=\"firstname\">First Name</label></td>\n\t  \t\t  \t<td class=\"field\"><input id=\"firstname\" name=\"firstname\" type=\"text\" value=\"\" maxlength=\"100\" /></td>\n\t  \t\t  \t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"llastname\" for=\"lastname\">Last Name</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"lastname\" name=\"lastname\" type=\"text\" value=\"\" maxlength=\"100\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lusername\" for=\"username\">Username</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"username\" name=\"username\" type=\"text\" value=\"\" maxlength=\"50\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lpassword\" for=\"password\">Password</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"password\" name=\"password\" type=\"password\" maxlength=\"50\" value=\"\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lpassword_confirm\" for=\"password_confirm\">Confirm Password</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"password_confirm\" name=\"password_confirm\" type=\"password\" maxlength=\"50\" value=\"\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lemail\" for=\"email\">Email Address</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"email\" name=\"email\" type=\"text\" value=\"\" maxlength=\"150\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n              \t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label>Which Looks Right</label></td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\" style=\"vertical-align: top; padding-top: 2px;\">\n\t  \t\t\t<table>\n\t  \t\t\t<tbody>\n\n\t  \t\t\t<tr>\n\t  \t\t\t\t<td style=\"padding-right: 5px;\">\n\t\t  \t\t\t\t<input id=\"dateformat_eu\" name=\"dateformat\" type=\"radio\" value=\"0\" />\n\t\t\t            <label id=\"ldateformat_eu\" for=\"dateformat_eu\">14/02/07</label>\n\t  \t\t\t\t</td>\n\t  \t\t\t\t<td style=\"padding-left: 5px;\">\n\t\t  \t\t\t\t<input id=\"dateformat_am\" name=\"dateformat\" type=\"radio\" value=\"1\"  />\n\t\t\t            <label id=\"ldateformat_am\" for=\"dateformat_am\">02/14/07</label>\n\t  \t\t\t\t</td>\n\t  \t\t\t\t<td>\n\t  \t\t\t\t</td>\n\t  \t\t\t</tr>\n\t  \t\t\t</tbody>\n\t  \t\t\t</table>\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\">&nbsp;</td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\">\n\t\t  \t\t\t<div id=\"termswrap\">\n\t\t\t  \t\t\t<input id=\"terms\" type=\"checkbox\" name=\"terms\" />\n\t\t\t            <label id=\"lterms\" for=\"terms\">I have read and accept the Terms of Use.</label>\n\t\t            </div> <!-- /termswrap -->\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lsignupsubmit\" for=\"signupsubmit\">Signup</label></td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\">\n\t            <input id=\"signupsubmit\" name=\"signup\" type=\"submit\" value=\"Signup\" />\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\n\t  \t\t  </table>\n          </form>\n      </div>\n    </div>\n</div>\n\n</div>\n\n</div>\n\n\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"<a href='#'>Show script used on this page</a><br/>\").appendTo(\"body\").click(function() {\n\t\tscript.toggle();\n\t\treturn false;\n\t});\n\t$(\"<a href='#'>Show serverside script</a>\").appendTo(\"body\").click(function() {\n\t\t\tserverscript.toggle();\n\t\t\treturn false;\n\t\t});\n\tvar script = $(\"<code class='mix'>\").html( $(\"#demo\").html() ).wrap(\"<pre></pre>\").parent().hide().appendTo(\"body\");\n\tvar serverscript;\n\t$.get(\"users.phps\", function(response) {\n\t\tserverscript = $(\"<pre>\").hide().html( response ).appendTo(\"body\");\n\t})\n\t\n});\n</script>\n\n<script src=\"../js/chili-1.7.pack.js\" type=\"text/javascript\"></script>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.css",
    "content": "/* GENERAL ELEMENTS */\n\n* { margin: 0; padding: 0; }\n\nbody, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; }\nbody { color: #333;  background-color: #fff; text-align: center; }\n\na:link { color:#0060BF; text-decoration: underline; }\na:visited { color:#0060BF; text-decoration: underline; }\na:active { color:#0060BF; text-decoration: underline; }\na:hover { color:#000000; text-decoration: underline; }\n\t\nh1, h2, h3, h4, h5, h6 { font-family: \"Lucida Grande\", \"Lucida Sans Unicode\", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; }\nh1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; }\nh2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; }\nh3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; }\nh4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; }\nh5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; }\nh6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; }\n\nimg { border: 0px; }\n\np { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; }\nli > p { margin-top: 0.2em; }\npre { font-family: monospace; font-size: 1.0em; }\nstrong, b { font-weight: bold; }\n\n/* PAGE ELEMENTS */\n\n/* Content */\n\n#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ }\n.content { margin-left: 4.5em; margin-right: 4.5em; }\n.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; }\n.content ol.terms li { margin-bottom: 1em; }\n\n/* Header */\n\n#header { padding-bottom: 10em; }\n#headerlogo { float: left; }\n#headerlogo img { width: 188px; height: 83px;  }\n#headernav { float: right; }\n\nlabel { font-weight: bold; }\n#reminders label { font-weight: normal; }\n\ntable.tabbedtable { padding-left: 3em; }\ntable.tabbedtable td { padding-bottom: 5px; }\ntable.tabbedtable label { text-align: right; padding-right: 9px; }\n.hiddenlabel { visibility: hidden; }\n.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; }\n.largelinkwrap { padding-top: 10px; padding-bottom: 10px; }\n\n\n\n#signuptab {\n  float:left;\n  width:100%;\n  background:#fff url(\"bg.gif\") repeat-x bottom;\n  font-size: 1.0em;\n  line-height: normal;\n}\n#signuptab ul {\n  margin:0;\n  padding: 0px 10px 0px 10px;\n  list-style:none;\n}\n#signuptab li {\n  float:left;\n  background:url(\"left_white.png\") no-repeat left top;\n  margin:0;\n  padding:0 3px 0 9px;\n  border-bottom:1px solid #CACACA;\n}\n#signuptab a {\n  float:left;\n  display:block;\n  width:.1em;\n  background:url(\"right_white.png\") no-repeat right top;\n  padding:2px 15px 0px 6px;\n  text-decoration:none;\n  font-weight:bold;\n  color:#fff;\n  white-space: nowrap;\n}\n#signuptab > ul a {width:auto;}\n/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n#signuptab a {float:none;}\n/* End IE5-Mac hack */\n#signuptab a:hover {\n  color:#333;\n}\n#signuptab #signupcurrent {\n  background-position:0 -150px;\n  border-width:0;\n}\n#signuptab #signupcurrent a {\n  background-position:100% -150px;\n  padding-bottom:1px;\n  color:#000;\n}\n#signuptab li:hover, #signuptab li:hover a {\n  background-position:0% -150px;\n  color:#000;\n}\n#signuptab li:hover a {\n  background-position:100% -150px;\n}\n\n/* Signup box */\n\n#signupbox {\n  width: 100%;\n  text-align: center;\n  margin: 0em auto;\n}\n\n#signupwrap {\n  border: 1px solid #CACACA;\n  border-top: 0;\n  text-align: left;\n  padding: 35px 10px 20px 30px;\n  clear: both;\n}\n\n/* Unsupported browsers */\n\n.orange_rbcontent { padding: 0.4em; }\n.orange_rbroundbox { width: 100%; }\n\n#unsupported {\n  font-weight: bold;\n  text-align: left;\n}\n\n/*#content {\n  padding-top: 15px;\n}*/\n\n/* Signup form */\n\n#signupform table {\n  border-spacing: 0px;\n  border-collapse: collapse;\n  empty-cells: show;\n}\n\n#signupform .label {\n  padding-top: 2px;\n  padding-right: 8px;\n  vertical-align: top;\n  text-align: right;\n  width: 125px;\n  white-space: nowrap;\n}\n\n#signupform .field {\n  padding-bottom: 10px;\n  white-space: nowrap;\n}\n\n#signupform .status {\n  padding-top: 2px;\n  padding-left: 8px;\n  vertical-align: top;\n  width: 246px;\n  white-space: nowrap;\n}\n\n#signupform .textfield {\n  width: 150px;\n}\n\n#signupform label.error {\n  background:url(\"../images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n  padding-bottom: 2px;\n  font-weight: bold;\n  color: #EA5200;\n}\n\n#signupform label.checked {\n  background:url(\"../images/checked.gif\") no-repeat 0px 0px;\n}\n\n#signupform .success_msg {\n  font-weight: bold;\n  color: #0060BF;\n  margin-left: 19px;\n}\n\n#signupform #dateformatStatus, #signupform #termsStatus {\n  margin-left: 6px;\n}\n\n#signupform #dateformat_eu {\n vertical-align: middle;\n}\n\n#signupform #ldateformat_eu {\n  font-weight: normal;\n  vertical-align: middle;\n}\n\n#signupform #dateformat_am {\n  vertical-align: middle;\n}\n\n#signupform #ldateformat_am {\n  font-weight: normal;\n  vertical-align: middle;\n}\n\n#signupform #termswrap {\n  float: left;\n}\n\n#signupform #terms {\n  vertical-align: middle;\n  float: left;\n  display: block;\n  margin-right: 5px;\n}\n\n#signupform #lterms {\n  font-weight: normal;\n  vertical-align: middle;\n  float: left;\n  display: block;\n  width: 350px;\n  white-space: normal;\n}\n\n#signupform #lsignupsubmit {\n  visibility: hidden;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['username']));\n//sleep(2);\nusleep(150000);\n$users = array('asdf', 'Peter', 'Peter2', 'George');\n$valid = 'true';\nforeach($users as $user) {\n\tif( strtolower($user) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$users = array('asdf', 'Peter', 'Peter2', 'George');\n$valid = 'true';\nforeach($users as $user) {\n\tif( strtolower($user) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<title>jQuery accordion form with validation</title>\n\n<link rel=\"stylesheet\" href=\"../assets/demo_blue.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n<script type=\"text/javascript\" src=\"js/jquery.maskedinput-1.0.js\"></script>\n<script type=\"text/javascript\" src=\"js/ui.core.js\"></script>\n<script type=\"text/javascript\" src=\"js/ui.accordion.js\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function(){\n\n\t$(\"#recordClientPhone\").mask(\"(999) 999-9999\");\n\t$(\"#recordClientPhoneAlt\").mask(\"(999) 999-9999\");\n\t$(\"#recordClientZip\").mask(\"99999\");\n\t$(\"#recordPropertyZip\").mask(\"99999\");\t\n\t$(\"#recordPurchaseZip\").mask(\"99999\");\t\n\n\t// add * to required field labels\n\t$('label.required').append('&nbsp;<strong>*</strong>&nbsp;');\n\n\t// accordion functions\n\tvar accordion = $(\"#stepForm\").accordion(); \n\tvar current = 0;\n\t\n\t$.validator.addMethod(\"pageRequired\", function(value, element) {\n\t\tvar $element = $(element)\n\t\tfunction match(index) {\n\t\t\treturn current == index && $(element).parents(\"#sf\" + (index + 1)).length;\n\t\t}\n\t\tif (match(0) || match(1) || match(2)) {\n\t\t\treturn !this.optional(element);\n\t\t}\n\t\treturn \"dependency-mismatch\";\n\t}, $.validator.messages.required)\n\t\n\tvar v = $(\"#cmaForm\").validate({\n\t\terrorClass: \"warning\",\n\t\tonkeyup: false,\n\t\tonblur: false,\n\t\tsubmitHandler: function() {\n\t\t\talert(\"Submitted, thanks!\");\n\t\t}\n\t});\n\t\n\t// back buttons do not need to run validation\n\t$(\"#sf2 .prevbutton\").click(function(){\n\t\taccordion.accordion(\"activate\", 0);\n\t\tcurrent = 0;\n\t}); \n\t$(\"#sf3 .prevbutton\").click(function(){\n\t\taccordion.accordion(\"activate\", 1);\n\t\tcurrent = 1;\n\t}); \n\t// these buttons all run the validation, overridden by specific targets above\n\t$(\".open2\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 2);\n\t    current = 2;\n\t  }\n\t});\n\t$(\".open1\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 1);\n\t    current = 1;\n\t  }\n\t});\n\t$(\".open0\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 0);\n\t    current = 0;\n\t  }\n\t});\n \n});\n</script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"style.css\" />\n</head>\n<body>\n\n<div id=\"wrap\">\n<div id=\"main\">\n\n<h1 class=\"top bottom\"><span>Help me</span> Buy and Sell a House</h1>\n<h2>This form is quick &amp; easy to complete - in only 3 steps!</h2>\n<form name=\"cmaForm\" id=\"cmaForm\" method=\"post\">\n<input type=\"hidden\" name=\"recordRequestPrimaryServiceID\" id=\"recordRequestPrimaryServiceID\" value=\"100\" />\n<input type=\"hidden\" name=\"recordClientServices\" id=\"recordClientServices\" value=\"1,3\" />\n<ul id=\"stepForm\" class=\"ui-accordion-container\">\n\t<li id=\"sf1\"><a href='#' class=\"ui-accordion-link\"> </a>\n\t<div>\n\t<fieldset><legend> Step 1 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about the property you're buying</h3>\n\t<label for=\"recordPurchaseMetRealtor\" class=\"input required\">Are you currently working with a<br />\n\treal estate agent? </label> &nbsp;&nbsp;No: <input name=\"recordPurchaseMetRealtor\" type=\"radio\" checked=\"checked\" class=\"inputclass\" value=\"0\" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yes: <input name=\"recordPurchaseMetRealtor\" type=\"radio\" class=\"inputclass pageRequired\" value=\"1\" title=\"Please choose Yes or No\" />\n\t<div class=\"formspacer\"></div>\n\t<label for=\"recordPurchaseTimeFrameID\" class=\"input required\">When would you like to move?</label> <select name=\"recordPurchaseTimeFrameID\" id=\"recordPurchaseTimeFrameID\" class=\"inputclass pageRequired\" title=\"Select a Time Frame\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less than 3 months</option>\n\t\t<option value=\"2\">3-6 months</option>\n\t\t<option value=\"3\">6-9 months</option>\n\t\t<option value=\"4\">9-12 months</option>\n\t\t<option value=\"5\">Over 12 months</option>\n\t</select> <br />\n\t<label for=\"recordPurchasePriceRangeID\" class=\"input required\">Purchase price range:</label> <select name=\"recordPurchasePriceRangeID\" id=\"recordPurchasePriceRangeID\" class=\"inputclass pageRequired\" title=\"Select a Price Range\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\"></option>\n\t\t<option value=\"2\">$75,000 - $100,000</option>\n\t\t<option value=\"3\">$100,000 - $125,000</option>\n\t\t<option value=\"4\">$125,000 - $150,000</option>\n\t\t<option value=\"5\">$150,000 - $200,000</option>\n\t\t<option value=\"6\">$200,000 - $250,000</option>\n\t\t<option value=\"7\">$250,000 - $300,000</option>\n\t\t<option value=\"8\">$300,000 - $350,000</option>\n\t\t<option value=\"9\">$350,000 - $400,000</option>\n\t\t<option value=\"10\">$400,000 - $500,000</option>\n\t\t<option value=\"11\">$500,000 - $700,000</option>\n\t\t<option value=\"12\">$700,000 - $900,000</option>\n\t\t<option value=\"13\">> $900,000</option>\n\t</select> <br />\n\t<label for=\"recordPurchaseState\" class=\"input required\">State:</label> <select name=\"recordPurchaseState\" id=\"recordPurchaseState\" class=\"inputclass pageRequired\" title=\"Select a State\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\n\t<label for=\"recordPurchasePropertyTypeID\" class=\"input\">Desired property type:</label> <select name=\"recordPurchasePropertyTypeID\" id=\"recordPurchasePropertyTypeID\" class=\"inputclass\" title=\"Select a Property Type\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Single Family Detached</option>\n\t\t<option value=\"2\">Condo</option>\n\t\t<option value=\"3\">Townhouse</option>\n\t\t<option value=\"4\">Rental</option>\n\t\t<option value=\"5\">Multi-Family</option>\n\t\t<option value=\"6\">Vacation Home</option>\n\t\t<option value=\"7\">Other</option>\n\t</select> <br />\n\t<div class=\"buttonWrapper\"><input name=\"formNext1\" type=\"button\" class=\"open1 nextbutton\" value=\"Next\" alt=\"Next\" title=\"Next\" /></div>\n\t</fieldset>\n\t</div>\n\t</li>\n\t<li id=\"sf2\">\n\t<a href='#' class=\"ui-accordion-link\">\n\t</a>\n\t<div>\n\t<fieldset><legend> Step 2 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about the property you're selling</h3>\n\t<label for=\"recordClientTimeFrameID\" class=\"input required\">When would you like to sell?</label> <select name=\"recordClientTimeFrameID\" id=\"recordClientTimeFrameID\" class=\"inputclass pageRequired\" title=\"Select a Time Frame\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less than 3 months</option>\n\t\t<option value=\"2\">3-6 months</option>\n\t\t<option value=\"3\">6-9 months</option>\n\t\t<option value=\"4\">9-12 months</option>\n\t\t<option value=\"5\">Over 12 months</option>\n\t</select> <br />\n\t<label for=\"recordClientHomeTypeID\" class=\"input required\">Type of property you are selling:</label> <select name=\"recordClientHomeTypeID\" id=\"recordClientHomeTypeID\" class=\"inputclass pageRequired\" title=\"Select a Property Type\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Single Family Detached</option>\n\t\t<option value=\"2\">Condo</option>\n\t\t<option value=\"3\">Townhouse</option>\n\t\t<option value=\"4\">Rental</option>\n\t\t<option value=\"5\">Multi-Family</option>\n\t\t<option value=\"6\">Vacation Home</option>\n\t\t<option value=\"7\">Other</option>\n\t</select> <br />\n\t<label for=\"recordPropertyAddress1\" class=\"input required\">Property Street Address:</label> <input name=\"recordPropertyAddress1\" id=\"recordPropertyAddress1\" class=\"inputclass pageRequired\" title=\"Street Address is required\" maxlength=\"254\" onblur=\"recordClientAddress1.value = this.value\" /><br />\n\t<label for=\"recordPropertyAddress2\" class=\"input\">Address (2):</label> <input name=\"recordPropertyAddress2\" id=\"recordPropertyAddress2\" class=\"inputclass\" maxlength=\"254\" onblur=\"recordClientAddress2.value = this.value\" /><br />\n\t<label for=\"recordPropertyCity\" class=\"input required\">City:</label> <input name=\"recordPropertyCity\" id=\"recordPropertyCity\" class=\"inputclass pageRequired\" title=\"City is required\" maxlength=\"254\" onblur=\"recordClientCity.value = this.value\" /><br />\n\t<label for=\"recordPropertyState\" class=\"input required\">State:</label> <select name=\"recordPropertyState\" id=\"recordPropertyState\" class=\"inputclass pageRequired\" title=\"Select a State\" onchange=\"recordClientState.value = this.value\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\t<label for=\"recordPropertyZip\" class=\"input required\">Zip:</label> <input name=\"recordPropertyZip\" id=\"recordPropertyZip\" class=\"inputclass pageRequired\" title=\"Zip Code is required\" maxlength=\"254\" onblur=\"recordClientZip.value = this.value\" /><br />\n\n\t<label for=\"recordClientPropertyValueID\" class=\"input required\">Estimated Market Value:</label> <select name=\"recordClientPropertyValueID\" id=\"recordClientPropertyValueID\" class=\"inputclass pageRequired\" title=\"Select a Price Range\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less Than $75K</option>\n\t\t<option value=\"2\">$75-$100K</option>\n\t\t<option value=\"3\">$100-$125K</option>\n\t\t<option value=\"4\">$125-$150K</option>\n\t\t<option value=\"5\">$150-$200K</option>\n\t\t<option value=\"6\">$200-$250K</option>\n\t\t<option value=\"7\">$250-$300K</option>\n\t\t<option value=\"8\">$300-$350K</option>\n\t\t<option value=\"9\">$350-$400K</option>\n\t\t<option value=\"10\">$400-$500K</option>\n\t\t<option value=\"11\">$500-$700K</option>\n\t\t<option value=\"12\">$700-$900K</option>\n\t\t<option value=\"13\">Over $900K</option>\n\t</select> <br />\n\t<label for=\"recordPropertyBedroomsID\" class=\"input\">Bedrooms:</label> <select name=\"recordPropertyBedroomsID\" id=\"recordPropertyBedroomsID\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">1</option>\n\t\t<option value=\"2\">2</option>\n\t\t<option value=\"3\">3</option>\n\t\t<option value=\"4\">4</option>\n\t\t<option value=\"5\">5+</option>\n\t</select> <br />\n\t<label for=\"recordPropertyBathroomsId\" class=\"input\">Bathrooms:</label> <select name=\"recordPropertyBathroomsId\" id=\"recordPropertyBathroomsId\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">1</option>\n\t\t<option value=\"2\">1.5</option>\n\t\t<option value=\"3\">2</option>\n\t\t<option value=\"4\">2.5</option>\n\t\t<option value=\"5\">3</option>\n\t\t<option value=\"6\">3.5</option>\n\t\t<option value=\"7\">4+</option>\n\t</select> <br />\n\t<label for=\"recordPropertyAgeId\" class=\"input\">Approx. Age of Home:</label> <select name=\"recordPropertyAgeId\" id=\"recordPropertyAgeId\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less Than 1 year</option>\n\t\t<option value=\"2\">1-5 years</option>\n\t\t<option value=\"3\">6-10 years</option>\n\t\t<option value=\"4\">11-15 years</option>\n\t\t<option value=\"5\">More than 15 years</option>\n\t</select> <br />\n\t<label for=\"recordPropertySqFt\" class=\"input\">Approx. Square Footage:</label> <input name=\"recordPropertySqFt\" id=\"recordPropertySqFt\" class=\"inputclass\" maxlength=\"254\" /><br />\n\t<div class=\"buttonWrapper\"><input name=\"formBack0\" type=\"button\" class=\"open0 prevbutton\" value=\"Back\" alt=\"Back\" title=\"Back\" /> <input name=\"formNext2\" type=\"button\" class=\"open2 nextbutton\" value=\"Next\" alt=\"Next\" title=\"Next\" /></div>\n\t</fieldset>\n\t</div>\n\t</li>\n\t<li id=\"sf3\">\n\t<a href='#' class=\"ui-accordion-link\">\n\t</a>\n\t<div>\n\t<fieldset><legend> Step 3 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about yourself</h3>\n\t<label for=\"recordClientNameFirst\" class=\"input required\">First Name:</label> <input name=\"recordClientNameFirst\" id=\"recordClientNameFirst\" class=\"inputclass pageRequired\" title=\"First Name is required\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientNameLast\" class=\"input required\">Last Name:</label> <input name=\"recordClientNameLast\" id=\"recordClientNameLast\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Last Name is required\" /> <br />\n\t<label for=\"recordClientAddress1\" class=\"input required\">Current Address:</label> <input name=\"recordClientAddress1\" id=\"recordClientAddress1\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Address is required\" /> <br />\n\t<label for=\"recordClientAddress2\" class=\"input\">Address (2):</label> <input name=\"recordClientAddress2\" id=\"recordClientAddress2\" class=\"inputclass\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientCity\" class=\"input required\">City:</label> <input name=\"recordClientCity\" id=\"recordClientCity\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"City is required\" /> <br />\n\t<label for=\"recordClientState\" class=\"input required\">State:</label> <select name=\"recordClientState\" id=\"recordClientState\" class=\"inputclass pageRequired\" title=\"Select a State\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\t<label for=\"recordClientZip\" class=\"input required\">Zip:</label> <input name=\"recordClientZip\" id=\"recordClientZip\" class=\"inputclass pageRequired\" maxlength=\"12\" title=\"Zip Code is required\" /> <br />\n\t<label for=\"recordClientPhone\" class=\"input required\">Phone Number:</label> <input name=\"recordClientPhone\" id=\"recordClientPhone\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Phone Number is required\" /> <br />\n\t<label for=\"recordClientPhoneAlt\" class=\"input\">Alternate Number:</label> <input name=\"recordClientPhoneAlt\" id=\"recordClientPhoneAlt\" class=\"inputclass\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientEmail\" class=\"input required\">Email Address:</label> <input name=\"recordClientEmail\" id=\"recordClientEmail\" class=\"inputclass pageRequired email\" maxlength=\"254\" title=\"Email address is required\" /> <br />\n\t<label for=\"recordClientEmail1\" class=\"input required\">Confirm Email:</label> <input name=\"recordClientEmail1\" id=\"recordClientEmail1\" class=\"inputclass pageRequired\" equalTo:\"'#recordClientEmail\" maxlength=\"254\" title=\"Please confirm your email address\" /> <br />\n\t<br />\n\t<p class=\"formDisclaimer\">This is a sample form, no information is sent anywhere.</p>\n\t<div class=\"buttonWrapper\"><input name=\"formBack1\" type=\"button\" class=\"open1 prevbutton\" value=\"Back\" alt=\"Back\" title=\"Back\" /> <input name=\"submit\" type=\"submit\" id=\"submit\" value=\"Submit\" class=\"submitbutton\" alt=\"Submit\" title=\"Submit\"></div>\n\t</fieldset>\n\t</div>\n\t</li>\n</ul>\n</form>\n\n</div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js",
    "content": "/*\n * Copyright (c) 2007 Josh Bush (digitalbush.com)\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE. \n */\n \n/*\n * Version: 1.0\n * Release: 2007-07-25\n */ \n(function($) {\n\t//Helper Functions for Caret positioning\n\tfunction getCaretPosition(ctl){\n\t\tvar res = {begin: 0, end: 0 };\n\t\tif (ctl.setSelectionRange){\n\t\t\tres.begin = ctl.selectionStart;\n\t\t\tres.end = ctl.selectionEnd;\n\t\t}else if (document.selection && document.selection.createRange){\n\t\t\tvar range = document.selection.createRange();\t\t\t\n\t\t\tres.begin = 0 - range.duplicate().moveStart('character', -100000);\n\t\t\tres.end = res.begin + range.text.length;\n\t\t}\n\t\treturn res;\n\t};\n\n\tfunction setCaretPosition(ctl, pos){\n\t\tif(ctl.setSelectionRange){\n\t\t\tctl.focus();\n\t\t\tctl.setSelectionRange(pos,pos);\n\t\t}else if (ctl.createTextRange){\n\t\t\tvar range = ctl.createTextRange();\n\t\t\trange.collapse(true);\n\t\t\trange.moveEnd('character', pos);\n\t\t\trange.moveStart('character', pos);\n\t\t\trange.select();\n\t\t}\n\t};\n\t\n\t//Predefined character definitions\n\tvar charMap={\n\t\t'9':\"[0-9]\",\n\t\t'a':\"[A-Za-z]\",\n\t\t'*':\"[A-Za-z0-9]\"\n\t};\n\t\n\t//Helper method to inject character definitions\n\t$.mask={\n\t\taddPlaceholder : function(c,r){\n\t\t\tcharMap[c]=r;\n\t\t}\n\t};\n\t\n\t//Main Method\n\t$.fn.mask = function(mask,settings) {\t\n\t\tsettings = $.extend({\n\t\t\tplaceholder: \"_\",\n\t\t\tcompleted: null\n\t\t}, settings);\n\t\t\t\n\t\t//Build Regex for format validation\n\t\tvar reString=\"^\";\t\n\t\tfor(var i=0;i<mask.length;i++)\n\t\t\treString+=(charMap[mask.charAt(i)] || (\"\\\\\"+mask.charAt(i)));\t\t\t\t\t\n\t\treString+=\"$\";\n\t\tvar re = new RegExp(reString);\n\n\t\treturn this.each(function(){\t\t\n\t\t\tvar input=$(this);\n\t\t\tvar buffer=new Array(mask.length);\n\t\t\tvar locked=new Array(mask.length);\t\t\n\n\t\t\t//Build buffer layout from mask\n\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\tlocked[i]=charMap[mask.charAt(i)]==null;\n\t\t\t\tbuffer[i]=locked[i]?mask.charAt(i):settings.placeholder;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/*Event Bindings*/\n\t\t\tinput.focus(function(){\t\t\t\t\t\n\t\t\t\tcheckVal();\n\t\t\t\twriteBuffer();\n\t\t\t\tsetCaretPosition(this,0);\t\t\n\t\t\t});\n\n\t\t\tinput.blur(checkVal);\n\t\t\t\n\t\t\t//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson\n\t\t\tif ($.browser.msie) \n\t\t\t\tthis.onpaste= function(){setTimeout(checkVal,0);};                     \n\t\t\telse if ($.browser.mozilla)\n\t\t\t\tthis.addEventListener('input',checkVal,false);\n\t\t\t\n\t\t\tvar ignore=false;  //Variable for ignoring control keys\n\t\t\t\n\t\t\tinput.keydown(function(e){\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tvar k = e.keyCode;\n\t\t\t\tignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));\n\t\t\t\t\n\t\t\t\t//delete selection before proceeding\n\t\t\t\tif((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){\n\t\t\t\t\tclearBuffer(pos.begin,pos.end);\n\t\t\t\t}\t\n\t\t\t\t//backspace and delete get special treatment\n\t\t\t\tif(k==8){//backspace\t\t\t\t\t\n\t\t\t\t\twhile(pos.begin-->=0){\n\t\t\t\t\t\tif(!locked[pos.begin]){\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuffer[pos.begin]=settings.placeholder;\n\t\t\t\t\t\t\tif($.browser.opera){\n\t\t\t\t\t\t\t\t//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\twriteBuffer(pos.begin);\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin+1);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\twriteBuffer();\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t}else if(k==46){//delete\n\t\t\t\t\tclearBuffer(pos.begin,pos.begin+1);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\treturn false;\n\t\t\t\t}else if (k==27){\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,0);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t});\n\n\t\t\tinput.keypress(function(e){\t\t\t\t\t\n\t\t\t\tif(ignore){\n\t\t\t\t\tignore=false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\te=e||window.event;\n\t\t\t\tvar k=e.charCode||e.keyCode||e.which;\n\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\n\t\t\t\tvar caretPos=pos.begin;\t\n\t\t\t\t\n\t\t\t\tif(e.ctrlKey || e.altKey){//Ignore\n\t\t\t\t\treturn true;\n\t\t\t\t}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters\n\t\t\t\t\twhile(pos.begin<mask.length){\t\n\t\t\t\t\t\tvar reString=charMap[mask.charAt(pos.begin)];\n\t\t\t\t\t\tvar match;\n\t\t\t\t\t\tif(reString){\n\t\t\t\t\t\t\tvar reChar=new RegExp(reString);\n\t\t\t\t\t\t\tmatch=String.fromCharCode(k).match(reChar);\n\t\t\t\t\t\t}else{//we're on a mask char, go forward and try again\n\t\t\t\t\t\t\tpos.begin+=1;\n\t\t\t\t\t\t\tpos.end=pos.begin;\n\t\t\t\t\t\t\tcaretPos+=1;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(match)\n\t\t\t\t\t\t\tbuffer[pos.begin]=String.fromCharCode(k);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;//reject char\n\n\t\t\t\t\t\twhile(++caretPos<mask.length){//seek forward to next typable position\n\t\t\t\t\t\t\tif(!locked[caretPos])\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbreak;\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else\n\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\n\t\t\t\twriteBuffer();\n\t\t\t\tif(settings.completed && caretPos>=buffer.length)\n\t\t\t\t\tsettings.completed.call(input);\n\t\t\t\telse\n\t\t\t\t\tsetCaretPosition(this,caretPos);\n\t\t\t\t\n\t\t\t\treturn false;\t\t\t\t\n\t\t\t});\n\n\t\t\t/*Helper Methods*/\n\t\t\tfunction clearBuffer(start,end){\n\t\t\t\tfor(var i=start;i<end;i++){\n\t\t\t\t\tif(!locked[i])\n\t\t\t\t\t\tbuffer[i]=settings.placeholder;\n\t\t\t\t}\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tfunction writeBuffer(pos){\n\t\t\t\tvar s=\"\";\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\ts+=buffer[i];\n\t\t\t\t\tif(i==pos)\n\t\t\t\t\t\ts+=settings.placeholder;\n\t\t\t\t}\n\t\t\t\tinput.val(s);\n\t\t\t\treturn s;\n\t\t\t};\n\t\t\t\n\t\t\tfunction checkVal(){\t\n\t\t\t\t//try to place charcters where they belong\n\t\t\t\tvar test=input.val();\n\t\t\t\tvar pos=0;\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\tif(!locked[i]){\n\t\t\t\t\t\twhile(pos++<test.length){\n\t\t\t\t\t\t\t//Regex Test each char here.\n\t\t\t\t\t\t\tvar reChar=new RegExp(charMap[mask.charAt(i)]);\n\t\t\t\t\t\t\tif(test.charAt(pos-1).match(reChar)){\n\t\t\t\t\t\t\t\tbuffer[i]=test.charAt(pos-1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar s=writeBuffer();\n\t\t\t\tif(!s.match(re)){\t\t\t\t\t\t\t\n\t\t\t\t\tinput.val(\"\");\t\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t}\t\t\t\t\t\n\t\t\t};\t\t\t\t\n\t\t});\n\t};\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.accordion.js",
    "content": "/*\n * jQuery UI Accordion 1.7.1\n *\n * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * http://docs.jquery.com/UI/Accordion\n *\n * Depends:\n *\tui.core.js\n */\n(function($) {\n\n$.widget(\"ui.accordion\", {\n\n\t_init: function() {\n\n\t\tvar o = this.options, self = this;\n\t\tthis.running = 0;\n\n\t\t// if the user set the alwaysOpen option on init\n\t\t// then we need to set the collapsible option\n\t\t// if they set both on init, collapsible will take priority\n\t\tif (o.collapsible == $.ui.accordion.defaults.collapsible &&\n\t\t\to.alwaysOpen != $.ui.accordion.defaults.alwaysOpen) {\n\t\t\to.collapsible = !o.alwaysOpen;\n\t\t}\n\n\t\tif ( o.navigation ) {\n\t\t\tvar current = this.element.find(\"a\").filter(o.navigationFilter);\n\t\t\tif ( current.length ) {\n\t\t\t\tif ( current.filter(o.header).length ) {\n\t\t\t\t\tthis.active = current;\n\t\t\t\t} else {\n\t\t\t\t\tthis.active = current.parent().parent().prev();\n\t\t\t\t\tcurrent.addClass(\"ui-accordion-content-active\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.addClass(\"ui-accordion ui-widget ui-helper-reset\");\n\t\t\n\t\t// in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix\n\t\tif (this.element[0].nodeName == \"UL\") {\n\t\t\tthis.element.children(\"li\").addClass(\"ui-accordion-li-fix\");\n\t\t}\n\n\t\tthis.headers = this.element.find(o.header).addClass(\"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\")\n\t\t\t.bind(\"mouseenter.accordion\", function(){ $(this).addClass('ui-state-hover'); })\n\t\t\t.bind(\"mouseleave.accordion\", function(){ $(this).removeClass('ui-state-hover'); })\n\t\t\t.bind(\"focus.accordion\", function(){ $(this).addClass('ui-state-focus'); })\n\t\t\t.bind(\"blur.accordion\", function(){ $(this).removeClass('ui-state-focus'); });\n\n\t\tthis.headers\n\t\t\t.next()\n\t\t\t\t.addClass(\"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\");\n\n\t\tthis.active = this._findActive(this.active || o.active).toggleClass(\"ui-state-default\").toggleClass(\"ui-state-active\").toggleClass(\"ui-corner-all\").toggleClass(\"ui-corner-top\");\n\t\tthis.active.next().addClass('ui-accordion-content-active');\n\n\t\t//Append icon elements\n\t\t$(\"<span/>\").addClass(\"ui-icon \" + o.icons.header).prependTo(this.headers);\n\t\tthis.active.find(\".ui-icon\").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);\n\n\t\t// IE7-/Win - Extra vertical space in lists fixed\n\t\tif ($.browser.msie) {\n\t\t\tthis.element.find('a').css('zoom', '1');\n\t\t}\n\n\t\tthis.resize();\n\n\t\t//ARIA\n\t\tthis.element.attr('role','tablist');\n\n\t\tthis.headers\n\t\t\t.attr('role','tab')\n\t\t\t.bind('keydown', function(event) { return self._keydown(event); })\n\t\t\t.next()\n\t\t\t.attr('role','tabpanel');\n\n\t\tthis.headers\n\t\t\t.not(this.active || \"\")\n\t\t\t.attr('aria-expanded','false')\n\t\t\t.attr(\"tabIndex\", \"-1\")\n\t\t\t.next()\n\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif (!this.active.length) {\n\t\t\tthis.headers.eq(0).attr('tabIndex','0');\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.attr('aria-expanded','true')\n\t\t\t\t.attr('tabIndex', '0');\n\t\t}\n\n\t\t// only need links in taborder for Safari\n\t\tif (!$.browser.safari)\n\t\t\tthis.headers.find('a').attr('tabIndex','-1');\n\n\t\tif (o.event) {\n\t\t\tthis.headers.bind((o.event) + \".accordion\", function(event) { return self._clickHandler.call(self, event, this); });\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tvar o = this.options;\n\n\t\tthis.element\n\t\t\t.removeClass(\"ui-accordion ui-widget ui-helper-reset\")\n\t\t\t.removeAttr(\"role\")\n\t\t\t.unbind('.accordion')\n\t\t\t.removeData('accordion');\n\n\t\tthis.headers\n\t\t\t.unbind(\".accordion\")\n\t\t\t.removeClass(\"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top\")\n\t\t\t.removeAttr(\"role\").removeAttr(\"aria-expanded\").removeAttr(\"tabindex\");\n\n\t\tthis.headers.find(\"a\").removeAttr(\"tabindex\");\n\t\tthis.headers.children(\".ui-icon\").remove();\n\t\tvar contents = this.headers.next().css(\"display\", \"\").removeAttr(\"role\").removeClass(\"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active\");\n\t\tif (o.autoHeight || o.fillHeight) {\n\t\t\tcontents.css(\"height\", \"\");\n\t\t}\n\t},\n\t\n\t_setData: function(key, value) {\n\t\tif(key == 'alwaysOpen') { key = 'collapsible'; value = !value; }\n\t\t$.widget.prototype._setData.apply(this, arguments);\t\n\t},\n\n\t_keydown: function(event) {\n\n\t\tvar o = this.options, keyCode = $.ui.keyCode;\n\n\t\tif (o.disabled || event.altKey || event.ctrlKey)\n\t\t\treturn;\n\n\t\tvar length = this.headers.length;\n\t\tvar currentIndex = this.headers.index(event.target);\n\t\tvar toFocus = false;\n\n\t\tswitch(event.keyCode) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[(currentIndex + 1) % length];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[(currentIndex - 1 + length) % length];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\treturn this._clickHandler({ target: event.target }, event.target);\n\t\t}\n\n\t\tif (toFocus) {\n\t\t\t$(event.target).attr('tabIndex','-1');\n\t\t\t$(toFocus).attr('tabIndex','0');\n\t\t\ttoFocus.focus();\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tresize: function() {\n\n\t\tvar o = this.options, maxHeight;\n\n\t\tif (o.fillSpace) {\n\t\t\t\n\t\t\tif($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }\n\t\t\tmaxHeight = this.element.parent().height();\n\t\t\tif($.browser.msie) { this.element.parent().css('overflow', defOverflow); }\n\t\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $(this).outerHeight();\n\t\t\t});\n\n\t\t\tvar maxPadding = 0;\n\t\t\tthis.headers.next().each(function() {\n\t\t\t\tmaxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());\n\t\t\t}).height(Math.max(0, maxHeight - maxPadding))\n\t\t\t.css('overflow', 'auto');\n\n\t\t} else if ( o.autoHeight ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next().each(function() {\n\t\t\t\tmaxHeight = Math.max(maxHeight, $(this).outerHeight());\n\t\t\t}).height(maxHeight);\n\t\t}\n\n\t},\n\n\tactivate: function(index) {\n\t\t// call clickHandler with custom event\n\t\tvar active = this._findActive(index)[0];\n\t\tthis._clickHandler({ target: active }, active);\n\t},\n\n\t_findActive: function(selector) {\n\t\treturn selector\n\t\t\t? typeof selector == \"number\"\n\t\t\t\t? this.headers.filter(\":eq(\" + selector + \")\")\n\t\t\t\t: this.headers.not(this.headers.not(selector))\n\t\t\t: selector === false\n\t\t\t\t? $([])\n\t\t\t\t: this.headers.filter(\":eq(0)\");\n\t},\n\n\t_clickHandler: function(event, target) {\n\n\t\tvar o = this.options;\n\t\tif (o.disabled) return false;\n\n\t\t// called only when using activate(false) to close all parts programmatically\n\t\tif (!event.target && o.collapsible) {\n\t\t\tthis.active.removeClass(\"ui-state-active ui-corner-top\").addClass(\"ui-state-default ui-corner-all\")\n\t\t\t\t.find(\".ui-icon\").removeClass(o.icons.headerSelected).addClass(o.icons.header);\n\t\t\tthis.active.next().addClass('ui-accordion-content-active');\n\t\t\tvar toHide = this.active.next(),\n\t\t\t\tdata = {\n\t\t\t\t\toptions: o,\n\t\t\t\t\tnewHeader: $([]),\n\t\t\t\t\toldHeader: o.active,\n\t\t\t\t\tnewContent: $([]),\n\t\t\t\t\toldContent: toHide\n\t\t\t\t},\n\t\t\t\ttoShow = (this.active = $([]));\n\t\t\tthis._toggle(toShow, toHide, data);\n\t\t\treturn false;\n\t\t}\n\n\t\t// get the click target\n\t\tvar clicked = $(event.currentTarget || target);\n\t\tvar clickedIsActive = clicked[0] == this.active[0];\n\n\t\t// if animations are still active, or the active header is the target, ignore click\n\t\tif (this.running || (!o.collapsible && clickedIsActive)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// switch classes\n\t\tthis.active.removeClass(\"ui-state-active ui-corner-top\").addClass(\"ui-state-default ui-corner-all\")\n\t\t\t.find(\".ui-icon\").removeClass(o.icons.headerSelected).addClass(o.icons.header);\n\t\tthis.active.next().addClass('ui-accordion-content-active');\n\t\tif (!clickedIsActive) {\n\t\t\tclicked.removeClass(\"ui-state-default ui-corner-all\").addClass(\"ui-state-active ui-corner-top\")\n\t\t\t\t.find(\".ui-icon\").removeClass(o.icons.header).addClass(o.icons.headerSelected);\n\t\t\tclicked.next().addClass('ui-accordion-content-active');\n\t\t}\n\n\t\t// find elements to show and hide\n\t\tvar toShow = clicked.next(),\n\t\t\ttoHide = this.active.next(),\n\t\t\tdata = {\n\t\t\t\toptions: o,\n\t\t\t\tnewHeader: clickedIsActive && o.collapsible ? $([]) : clicked,\n\t\t\t\toldHeader: this.active,\n\t\t\t\tnewContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'),\n\t\t\t\toldContent: toHide.find('> *')\n\t\t\t},\n\t\t\tdown = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );\n\n\t\tthis.active = clickedIsActive ? $([]) : clicked;\n\t\tthis._toggle(toShow, toHide, data, clickedIsActive, down);\n\n\t\treturn false;\n\n\t},\n\n\t_toggle: function(toShow, toHide, data, clickedIsActive, down) {\n\n\t\tvar o = this.options, self = this;\n\n\t\tthis.toShow = toShow;\n\t\tthis.toHide = toHide;\n\t\tthis.data = data;\n\n\t\tvar complete = function() { if(!self) return; return self._completed.apply(self, arguments); };\n\n\t\t// trigger changestart event\n\t\tthis._trigger(\"changestart\", null, this.data);\n\n\t\t// count elements to animate\n\t\tthis.running = toHide.size() === 0 ? toShow.size() : toHide.size();\n\n\t\tif (o.animated) {\n\n\t\t\tvar animOptions = {};\n\n\t\t\tif ( o.collapsible && clickedIsActive ) {\n\t\t\t\tanimOptions = {\n\t\t\t\t\ttoShow: $([]),\n\t\t\t\t\ttoHide: toHide,\n\t\t\t\t\tcomplete: complete,\n\t\t\t\t\tdown: down,\n\t\t\t\t\tautoHeight: o.autoHeight || o.fillSpace\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tanimOptions = {\n\t\t\t\t\ttoShow: toShow,\n\t\t\t\t\ttoHide: toHide,\n\t\t\t\t\tcomplete: complete,\n\t\t\t\t\tdown: down,\n\t\t\t\t\tautoHeight: o.autoHeight || o.fillSpace\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!o.proxied) {\n\t\t\t\to.proxied = o.animated;\n\t\t\t}\n\n\t\t\tif (!o.proxiedDuration) {\n\t\t\t\to.proxiedDuration = o.duration;\n\t\t\t}\n\n\t\t\to.animated = $.isFunction(o.proxied) ?\n\t\t\t\to.proxied(animOptions) : o.proxied;\n\n\t\t\to.duration = $.isFunction(o.proxiedDuration) ?\n\t\t\t\to.proxiedDuration(animOptions) : o.proxiedDuration;\n\n\t\t\tvar animations = $.ui.accordion.animations,\n\t\t\t\tduration = o.duration,\n\t\t\t\teasing = o.animated;\n\n\t\t\tif (!animations[easing]) {\n\t\t\t\tanimations[easing] = function(options) {\n\t\t\t\t\tthis.slide(options, {\n\t\t\t\t\t\teasing: easing,\n\t\t\t\t\t\tduration: duration || 700\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tanimations[easing](animOptions);\n\n\t\t} else {\n\n\t\t\tif (o.collapsible && clickedIsActive) {\n\t\t\t\ttoShow.toggle();\n\t\t\t} else {\n\t\t\t\ttoHide.hide();\n\t\t\t\ttoShow.show();\n\t\t\t}\n\n\t\t\tcomplete(true);\n\n\t\t}\n\n\t\ttoHide.prev().attr('aria-expanded','false').attr(\"tabIndex\", \"-1\").blur();\n\t\ttoShow.prev().attr('aria-expanded','true').attr(\"tabIndex\", \"0\").focus();\n\n\t},\n\n\t_completed: function(cancel) {\n\n\t\tvar o = this.options;\n\n\t\tthis.running = cancel ? 0 : --this.running;\n\t\tif (this.running) return;\n\n\t\tif (o.clearStyle) {\n\t\t\tthis.toShow.add(this.toHide).css({\n\t\t\t\theight: \"\",\n\t\t\t\toverflow: \"\"\n\t\t\t});\n\t\t}\n\n\t\tthis._trigger('change', null, this.data);\n\t}\n\n});\n\n\n$.extend($.ui.accordion, {\n\tversion: \"1.7.1\",\n\tdefaults: {\n\t\tactive: null,\n\t\talwaysOpen: true, //deprecated, use collapsible\n\t\tanimated: 'slide',\n\t\tautoHeight: true,\n\t\tclearStyle: false,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\tfillSpace: false,\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\ticons: {\n\t\t\theader: \"ui-icon-triangle-1-e\",\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tnavigation: false,\n\t\tnavigationFilter: function() {\n\t\t\treturn this.href.toLowerCase() == location.href.toLowerCase();\n\t\t}\n\t},\n\tanimations: {\n\t\tslide: function(options, additions) {\n\t\t\toptions = $.extend({\n\t\t\t\teasing: \"swing\",\n\t\t\t\tduration: 300\n\t\t\t}, options, additions);\n\t\t\tif ( !options.toHide.size() ) {\n\t\t\t\toptions.toShow.animate({height: \"show\"}, options);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !options.toShow.size() ) {\n\t\t\t\toptions.toHide.animate({height: \"hide\"}, options);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar overflow = options.toShow.css('overflow'),\n\t\t\t\tpercentDone,\n\t\t\t\tshowProps = {},\n\t\t\t\thideProps = {},\n\t\t\t\tfxAttrs = [ \"height\", \"paddingTop\", \"paddingBottom\" ],\n\t\t\t\toriginalWidth;\n\t\t\t// fix width before calculating height of hidden element\n\t\t\tvar s = options.toShow;\n\t\t\toriginalWidth = s[0].style.width;\n\t\t\ts.width( parseInt(s.parent().width(),10) - parseInt(s.css(\"paddingLeft\"),10) - parseInt(s.css(\"paddingRight\"),10) - (parseInt(s.css(\"borderLeftWidth\"),10) || 0) - (parseInt(s.css(\"borderRightWidth\"),10) || 0) );\n\t\t\t\n\t\t\t$.each(fxAttrs, function(i, prop) {\n\t\t\t\thideProps[prop] = 'hide';\n\t\t\t\t\n\t\t\t\tvar parts = ('' + $.css(options.toShow[0], prop)).match(/^([\\d+-.]+)(.*)$/);\n\t\t\t\tshowProps[prop] = {\n\t\t\t\t\tvalue: parts[1],\n\t\t\t\t\tunit: parts[2] || 'px'\n\t\t\t\t};\n\t\t\t});\n\t\t\toptions.toShow.css({ height: 0, overflow: 'hidden' }).show();\n\t\t\toptions.toHide.filter(\":hidden\").each(options.complete).end().filter(\":visible\").animate(hideProps,{\n\t\t\t\tstep: function(now, settings) {\n\t\t\t\t\t// only calculate the percent when animating height\n\t\t\t\t\t// IE gets very inconsistent results when animating elements\n\t\t\t\t\t// with small values, which is common for padding\n\t\t\t\t\tif (settings.prop == 'height') {\n\t\t\t\t\t\tpercentDone = (settings.now - settings.start) / (settings.end - settings.start);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\toptions.toShow[0].style[settings.prop] =\n\t\t\t\t\t\t(percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;\n\t\t\t\t},\n\t\t\t\tduration: options.duration,\n\t\t\t\teasing: options.easing,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tif ( !options.autoHeight ) {\n\t\t\t\t\t\toptions.toShow.css(\"height\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\toptions.toShow.css(\"width\", originalWidth);\n\t\t\t\t\toptions.toShow.css({overflow: overflow});\n\t\t\t\t\toptions.complete();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tbounceslide: function(options) {\n\t\t\tthis.slide(options, {\n\t\t\t\teasing: options.down ? \"easeOutBounce\" : \"swing\",\n\t\t\t\tduration: options.down ? 1000 : 200\n\t\t\t});\n\t\t},\n\t\teaseslide: function(options) {\n\t\t\tthis.slide(options, {\n\t\t\t\teasing: \"easeinout\",\n\t\t\t\tduration: 700\n\t\t\t});\n\t\t}\n\t}\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.core.js",
    "content": "/*\n * jQuery UI 1.7.1\n *\n * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * http://docs.jquery.com/UI\n */\n;jQuery.ui || (function($) {\n\nvar _remove = $.fn.remove,\n\tisFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);\n\n//Helper functions and ui object\n$.ui = {\n\tversion: \"1.7.1\",\n\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function(module, option, set) {\n\t\t\tvar proto = $.ui[module].prototype;\n\t\t\tfor(var i in set) {\n\t\t\t\tproto.plugins[i] = proto.plugins[i] || [];\n\t\t\t\tproto.plugins[i].push([option, set[i]]);\n\t\t\t}\n\t\t},\n\t\tcall: function(instance, name, args) {\n\t\t\tvar set = instance.plugins[name];\n\t\t\tif(!set || !instance.element[0].parentNode) { return; }\n\n\t\t\tfor (var i = 0; i < set.length; i++) {\n\t\t\t\tif (instance.options[set[i][0]]) {\n\t\t\t\t\tset[i][1].apply(instance.element, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: function(a, b) {\n\t\treturn document.compareDocumentPosition\n\t\t\t? a.compareDocumentPosition(b) & 16\n\t\t\t: a !== b && a.contains(b);\n\t},\n\n\thasScroll: function(el, a) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ($(el).css('overflow') == 'hidden') { return false; }\n\n\t\tvar scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',\n\t\t\thas = false;\n\n\t\tif (el[scroll] > 0) { return true; }\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[scroll] = 1;\n\t\thas = (el[scroll] > 0);\n\t\tel[scroll] = 0;\n\t\treturn has;\n\t},\n\n\tisOverAxis: function(x, reference, size) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn (x > reference) && (x < (reference + size));\n\t},\n\n\tisOver: function(y, x, top, left, height, width) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);\n\t},\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCAPS_LOCK: 20,\n\t\tCOMMA: 188,\n\t\tCONTROL: 17,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tINSERT: 45,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSHIFT: 16,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n};\n\n// WAI-ARIA normalization\nif (isFF2) {\n\tvar attr = $.attr,\n\t\tremoveAttr = $.fn.removeAttr,\n\t\tariaNS = \"http://www.w3.org/2005/07/aaa\",\n\t\tariaState = /^aria-/,\n\t\tariaRole = /^wairole:/;\n\n\t$.attr = function(elem, name, value) {\n\t\tvar set = value !== undefined;\n\n\t\treturn (name == 'role'\n\t\t\t? (set\n\t\t\t\t? attr.call(this, elem, name, \"wairole:\" + value)\n\t\t\t\t: (attr.apply(this, arguments) || \"\").replace(ariaRole, \"\"))\n\t\t\t: (ariaState.test(name)\n\t\t\t\t? (set\n\t\t\t\t\t? elem.setAttributeNS(ariaNS,\n\t\t\t\t\t\tname.replace(ariaState, \"aaa:\"), value)\n\t\t\t\t\t: attr.call(this, elem, name.replace(ariaState, \"aaa:\")))\n\t\t\t\t: attr.apply(this, arguments)));\n\t};\n\n\t$.fn.removeAttr = function(name) {\n\t\treturn (ariaState.test(name)\n\t\t\t? this.each(function() {\n\t\t\t\tthis.removeAttributeNS(ariaNS, name.replace(ariaState, \"\"));\n\t\t\t}) : removeAttr.call(this, name));\n\t};\n}\n\n//jQuery plugins\n$.fn.extend({\n\tremove: function() {\n\t\t// Safari has a native remove event which actually removes DOM elements,\n\t\t// so we have to use triggerHandler instead of trigger (#3037).\n\t\t$(\"*\", this).add(this).each(function() {\n\t\t\t$(this).triggerHandler(\"remove\");\n\t\t});\n\t\treturn _remove.apply(this, arguments );\n\t},\n\n\tenableSelection: function() {\n\t\treturn this\n\t\t\t.attr('unselectable', 'off')\n\t\t\t.css('MozUserSelect', '')\n\t\t\t.unbind('selectstart.ui');\n\t},\n\n\tdisableSelection: function() {\n\t\treturn this\n\t\t\t.attr('unselectable', 'on')\n\t\t\t.css('MozUserSelect', 'none')\n\t\t\t.bind('selectstart.ui', function() { return false; });\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t}\n});\n\n\n//Additional selectors\n$.extend($.expr[':'], {\n\tdata: function(elem, i, match) {\n\t\treturn !!$.data(elem, match[3]);\n\t},\n\n\tfocusable: function(element) {\n\t\tvar nodeName = element.nodeName.toLowerCase(),\n\t\t\ttabIndex = $.attr(element, 'tabindex');\n\t\treturn (/input|select|textarea|button|object/.test(nodeName)\n\t\t\t? !element.disabled\n\t\t\t: 'a' == nodeName || 'area' == nodeName\n\t\t\t\t? element.href || !isNaN(tabIndex)\n\t\t\t\t: !isNaN(tabIndex))\n\t\t\t// the element and all of its ancestors must be visible\n\t\t\t// the browser may report that the area is hidden\n\t\t\t&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;\n\t},\n\n\ttabbable: function(element) {\n\t\tvar tabIndex = $.attr(element, 'tabindex');\n\t\treturn (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');\n\t}\n});\n\n\n// $.widget is a factory to create jQuery plugins\n// taking some boilerplate code out of the plugin code\nfunction getter(namespace, plugin, method, args) {\n\tfunction getMethods(type) {\n\t\tvar methods = $[namespace][plugin][type] || [];\n\t\treturn (typeof methods == 'string' ? methods.split(/,?\\s+/) : methods);\n\t}\n\n\tvar methods = getMethods('getter');\n\tif (args.length == 1 && typeof args[0] == 'string') {\n\t\tmethods = methods.concat(getMethods('getterSetter'));\n\t}\n\treturn ($.inArray(method, methods) != -1);\n}\n\n$.widget = function(name, prototype) {\n\tvar namespace = name.split(\".\")[0];\n\tname = name.split(\".\")[1];\n\n\t// create plugin method\n\t$.fn[name] = function(options) {\n\t\tvar isMethodCall = (typeof options == 'string'),\n\t\t\targs = Array.prototype.slice.call(arguments, 1);\n\n\t\t// prevent calls to internal methods\n\t\tif (isMethodCall && options.substring(0, 1) == '_') {\n\t\t\treturn this;\n\t\t}\n\n\t\t// handle getter methods\n\t\tif (isMethodCall && getter(namespace, name, options, args)) {\n\t\t\tvar instance = $.data(this[0], name);\n\t\t\treturn (instance ? instance[options].apply(instance, args)\n\t\t\t\t: undefined);\n\t\t}\n\n\t\t// handle initialization and non-getter methods\n\t\treturn this.each(function() {\n\t\t\tvar instance = $.data(this, name);\n\n\t\t\t// constructor\n\t\t\t(!instance && !isMethodCall &&\n\t\t\t\t$.data(this, name, new $[namespace][name](this, options))._init());\n\n\t\t\t// method call\n\t\t\t(instance && isMethodCall && $.isFunction(instance[options]) &&\n\t\t\t\tinstance[options].apply(instance, args));\n\t\t});\n\t};\n\n\t// create widget constructor\n\t$[namespace] = $[namespace] || {};\n\t$[namespace][name] = function(element, options) {\n\t\tvar self = this;\n\n\t\tthis.namespace = namespace;\n\t\tthis.widgetName = name;\n\t\tthis.widgetEventPrefix = $[namespace][name].eventPrefix || name;\n\t\tthis.widgetBaseClass = namespace + '-' + name;\n\n\t\tthis.options = $.extend({},\n\t\t\t$.widget.defaults,\n\t\t\t$[namespace][name].defaults,\n\t\t\t$.metadata && $.metadata.get(element)[name],\n\t\t\toptions);\n\n\t\tthis.element = $(element)\n\t\t\t.bind('setData.' + name, function(event, key, value) {\n\t\t\t\tif (event.target == element) {\n\t\t\t\t\treturn self._setData(key, value);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind('getData.' + name, function(event, key) {\n\t\t\t\tif (event.target == element) {\n\t\t\t\t\treturn self._getData(key);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind('remove', function() {\n\t\t\t\treturn self.destroy();\n\t\t\t});\n\t};\n\n\t// add widget prototype\n\t$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);\n\n\t// TODO: merge getter and getterSetter properties from widget prototype\n\t// and plugin prototype\n\t$[namespace][name].getterSetter = 'option';\n};\n\n$.widget.prototype = {\n\t_init: function() {},\n\tdestroy: function() {\n\t\tthis.element.removeData(this.widgetName)\n\t\t\t.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')\n\t\t\t.removeAttr('aria-disabled');\n\t},\n\n\toption: function(key, value) {\n\t\tvar options = key,\n\t\t\tself = this;\n\n\t\tif (typeof key == \"string\") {\n\t\t\tif (value === undefined) {\n\t\t\t\treturn this._getData(key);\n\t\t\t}\n\t\t\toptions = {};\n\t\t\toptions[key] = value;\n\t\t}\n\n\t\t$.each(options, function(key, value) {\n\t\t\tself._setData(key, value);\n\t\t});\n\t},\n\t_getData: function(key) {\n\t\treturn this.options[key];\n\t},\n\t_setData: function(key, value) {\n\t\tthis.options[key] = value;\n\n\t\tif (key == 'disabled') {\n\t\t\tthis.element\n\t\t\t\t[value ? 'addClass' : 'removeClass'](\n\t\t\t\t\tthis.widgetBaseClass + '-disabled' + ' ' +\n\t\t\t\t\tthis.namespace + '-state-disabled')\n\t\t\t\t.attr(\"aria-disabled\", value);\n\t\t}\n\t},\n\n\tenable: function() {\n\t\tthis._setData('disabled', false);\n\t},\n\tdisable: function() {\n\t\tthis._setData('disabled', true);\n\t},\n\n\t_trigger: function(type, event, data) {\n\t\tvar callback = this.options[type],\n\t\t\teventName = (type == this.widgetEventPrefix\n\t\t\t\t? type : this.widgetEventPrefix + type);\n\n\t\tevent = $.Event(event);\n\t\tevent.type = eventName;\n\n\t\t// copy original event properties over to the new event\n\t\t// this would happen if we could call $.event.fix instead of $.Event\n\t\t// but we don't have a way to force an event to be fixed multiple times\n\t\tif (event.originalEvent) {\n\t\t\tfor (var i = $.event.props.length, prop; i;) {\n\t\t\t\tprop = $.event.props[--i];\n\t\t\t\tevent[prop] = event.originalEvent[prop];\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger(event, data);\n\n\t\treturn !($.isFunction(callback) && callback.call(this.element[0], event, data) === false\n\t\t\t|| event.isDefaultPrevented());\n\t}\n};\n\n$.widget.defaults = {\n\tdisabled: false\n};\n\n\n/** Mouse Interaction Plugin **/\n\n$.ui.mouse = {\n\t_mouseInit: function() {\n\t\tvar self = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn self._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif(self._preventClickEvent) {\n\t\t\t\t\tself._preventClickEvent = false;\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Prevent text selection in IE\n\t\tif ($.browser.msie) {\n\t\t\tthis._mouseUnselectable = this.element.attr('unselectable');\n\t\t\tthis.element.attr('unselectable', 'on');\n\t\t}\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\n\t\t// Restore text selection in IE\n\t\t($.browser.msie\n\t\t\t&& this.element.attr('unselectable', this._mouseUnselectable));\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\t// TODO: figure out why we have to use originalEvent\n\t\tevent.originalEvent = event.originalEvent || {};\n\t\tif (event.originalEvent.mouseHandled) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar self = this,\n\t\t\tbtnIsLeft = (event.which == 1),\n\t\t\telIsCancel = (typeof this.options.cancel == \"string\" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tself.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn self._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn self._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\t// preventDefault() is used to prevent the selection of text here -\n\t\t// however, in Safari, this causes select boxes not to be selectable\n\t\t// anymore, so this fix is needed\n\t\t($.browser.safari || event.preventDefault());\n\n\t\tevent.originalEvent.mouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.browser.msie && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\t\t\tthis._preventClickEvent = (event.target == this._mouseDownEvent.target);\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n};\n\n$.ui.mouse.defaults = {\n\tcancel: null,\n\tdistance: 1,\n\tdelay: 0\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/style.css",
    "content": "/********************************************\n   AUTHOR:  \t\t\tErwin Aligam \n   WEBSITE:   \t\t\thttp://www.styleshout.com/\n   TEMPLATE NAME: \tTechmania 1.0\n\tTEMPLATE CODE: \tS-0003\n    VERSION:         1.1          \t\n *******************************************/\n\t/********************************************\n   HTML ELEMENTS\n********************************************/ /* Top elements */\n\t/** { margin:0; padding: 0; }*/\nbody {\n\tbackground-color: #000;\n\tcolor: #555;\n\tfont: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif;\n\ttext-align: center;\n\tmargin: 15px 0;\n}\n\n/* links */\na {\n\tcolor: #213540;\n\tbackground: inherit;\n\ttext-decoration: none;\n}\n\na:hover {\n\tcolor: #3e4255;\n\ttext-decoration: underline;\n\tbackground: inherit;\n}\n\n/* headers */\nh1,h2,h3 {\n\tfont-family: 'Trebuchet MS', Arial, sans-serif;\n\tfont-weight: bold;\n}\n\nh1 {\n\tfont-size: 1.5em;\n\tmargin: 10px 15px;\n}\n\nh2 {\n\tfont-size: 1.3em;\n\ttext-transform: uppercase;\n\tcolor: #339900;\n\tmargin: 10px 15px;\n}\n\nh3 {\n\tfont-size: 1.1em;\n\tcolor: #333;\n\tmargin: 16px 0 0 18px;\n}\n\nh1,h2,h3 {\n\tpadding: 0;\n}\n\np {\n\tline-height: 1.4em;\n\tpadding: 0 15px;\n}\n\np.error {\n\tcolor: #CC0033;\n}\n\nul,ol {\n\tmargin: 10px 6px;\n\tpadding: 0 15px;\n\tcolor: #006699;\n}\n\nul span,ol span {\n\tcolor: #666666;\n}\n\n/* images */\nimg {\n\tborder: 2px solid #CCC;\n}\n\nimg.float-right {\n\tmargin: 5px 0px 10px 10px;\n}\n\nimg.float-left {\n\tmargin: 5px 10px 10px 0px;\n}\n\ncode {\n\tmargin: 5px 0;\n\tpadding: 10px;\n\ttext-align: left;\n\tdisplay: block;\n\toverflow: auto;\n\tfont: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;\n\t/* white-space: pre; */\n\tbackground: #FAFAFA;\n\tborder: 1px solid #EAEAEA;\n\tborder-left: 5px solid #72A545;\n}\n\nacronym {\n\tcursor: help;\n\tborder-bottom: 1px solid #777;\n}\n\nblockquote {\n\tmargin: 15px;\n\tpadding: 0 0 0 32px;\n\tbackground: #FAFAFA url(quote.gif) no-repeat 5px 10px !important;\n\tbackground-position: 8px 10px;\n\tborder: 1px solid #EAEAEA;\n\tborder-left: 5px solid #72A545;\n\tfont-weight: bold;\n}\n\n/* form elements */\nfieldset {\n\tmargin: 12px 12px 18px;\n\tpadding-left: 6px;\n\tborder: 1px solid #004080;\n\tcolor: #006699;\n}\n\nfieldset fieldset {\n\tborder: 1px solid #9ea190;\n\tmargin: 17px 14px;\n}\n\nform {\n\tmargin: 10px 15px;\n\tpadding: 0;\n}\n\nlabel {\n\tfont-weight: bold;\n\tmargin: 5px 3px 0 0;\n\twidth: 160px;\n\ttext-align: right;\n\tfloat: left;\n}\n\nlegend {\n\tfont-size: 1.2em;\n\tpadding: 0 12px;\n\tfont-weight: 900;\n\tbackground-color: #F9F9F9;\n}\n\nfieldset fieldset legend {\n\tfont-size: 1em;\n\tcolor: #1a2129;\n\tpadding: 0 18px;\n\tmargin-left: 75px;\n}\n\ninput {\n\tpadding: 3px;\n\tmargin: 4px 0;\n\tborder: 1px solid #CFCED3;\n\tfont: normal 1em Verdana, sans-serif;\n\tcolor: #777;\n}\n\ntextarea {\n\twidth: 400px;\n\tpadding: 4px;\n\tfont: normal 1em Verdana, sans-serif;\n\tborder: 1px solid #eee;\n\theight: 100px;\n\tdisplay: block;\n\tcolor: #777;\n}\n\ninput.button {\n\tmargin: 0;\n\tfont: bold 12px Arial, Sans-serif;\n\tborder: 1px solid #EAEAEA;\n\tpadding: 3px 4px;\n\tbackground: #CCC url(buttonbg.gif) repeat-x left bottom;\n\tcolor: #333; /* color: #339900; */\n\tcursor: pointer;\n}\n\ninput.submitbutton {\n\tbackground-color: #006699;\n\tcolor: #FFF;\n\tbackground-image: none;\n\tfont-weight: 900;\n\tborder: 1px solid #EAEAEA;\n\tmargin: 0 0 0 200px;\n}\n\n/* search */\n#sidebar #search {\n\tbackground: #f2f2f2;\n\tmargin: 0 15px;\n\tpadding: 5px 0;\n}\n\n#sidebar #search img {\n\tvertical-align: bottom;\n}\n\n#sidebar #search .textbox {\n\tbackground: #FFF url(input.png) no-repeat top left;\n\tborder: 1px solid #EAEAEA;\n\tfont-size: 11px;\n\tpadding: 3px;\n\twidth: 110px;\n}\n\n#sidebar #search input.searchbutton {\n\tmargin: 0;\n\tfont: bold 100% Arial, Sans-serif;\n\tborder: 1px solid #CCC;\n\tbackground: #CCC url(buttonbg.gif) repeat-x left bottom;\n\tpadding: 1px;\n\theight: 25px;\n\tcolor: #333;\n\twidth: 55px;\n}\n\n/*****************************\n      LAYOUT \n******************************/\n#wrap {\n\tmargin: 0 auto;\n\tpadding: 0;\n\ttext-align: left;\n\tbackground-color: #FFF;\n\twidth: 790px;\n}\n\n#content-wrap {\n\tclear: both;\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 790px;\n}\n\n/* header */\n#header {\n\tposition: relative;\n\tclear: left;\n\twidth: 790px;\n\theight: 137px;\n\tmargin: 0;\n\tpadding: 0;\n\tbackground: #000 url(headerbg.jpg) no-repeat left bottom;\n}\n\n#header h1#logo-text {\n\tfloat: right;\n\tmargin: 39px 58px 0 0;\n\tpadding: 0;\n\tfont: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif;\n\tletter-spacing: -2px;\n\tcolor: #FFF;\n\ttext-transform: none;\n\t/* change the values of top and right to adjust the position of the logo*/\n\ttop: 35px;\n\tright: 30px;\n}\n\n#header h2#slogan {\n\tfloat: right;\n\tmargin: 0 38px 0 0;\n\tpadding: 0;\n\tfont: bold 1.5em 'Trebuchet MS', Arial, Sans-serif;\n\ttext-transform: none;\n\tletter-spacing: 1px;\n\tcolor: #FFF;\n\tclear: both;\n\ttext-align: right;\n}\n\n#header h1#logo-text span {\n\tcolor: #CFCED3;\n}\n\n/* menu tabs */\n#header #header-tabs {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 25px;\n\tbackground: #000;\n\tfont: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif;\n}\n\n#header-tabs ul {\n\tmargin: 0;\n\tpadding: 2px 0px 0px 0px;\n\tlist-style: none;\n}\n\n#header-tabs li {\n\tdisplay: inline;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n#header-tabs a {\n\tfloat: left;\n\tbackground: url(tableft.gif) no-repeat left top;\n\tmargin: 0;\n\tpadding: 0 0 0 4px;\n\ttext-decoration: none;\n}\n\n#header-tabs a span {\n\tfloat: left;\n\tdisplay: block;\n\tbackground: url(tabright.gif) no-repeat right top;\n\tpadding: 7px 15px 4px 8px;\n\tcolor: #CCC;\n}\n\n/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n#header-tabs a span {\n\tfloat: none;\n}\n\n/* End IE5-Mac hack */\n#header-tabs a:hover span {\n\tcolor: #FFF;\n}\n\n#header-tabs a:hover {\n\tbackground-position: 0% -42px;\n}\n\n#header-tabs a:hover span {\n\tbackground-position: 100% -42px;\n}\n\n#header-tabs #current a {\n\tbackground-position: 0% -42px;\n}\n\n#header-tabs #current a span {\n\tbackground-position: 100% -42px;\n\tcolor: #FFF;\n}\n\n/* main content */\n#main {\n\twidth: 748px;\n\tmargin: 0;\n\tpadding: 8px 16px;\n\tbackground-color: #F9F9F9;\n\tborder-left: 5px solid #000;\n\tborder-right: 5px solid #000;\n}\n\n#main h1 {\n\tpadding: 8px 0 3px 25px;\n\ttext-transform: none;\n\tborder-bottom: 2px solid #f2f2f2;\n\tcolor: #339900;\n}\n\n/* sidebar */\n#sidebar { /*\tfloat: right;\n\twidth: 245px;\n\tmargin: 0 0 10px 0; padding: 0;\n\tbackground-color: inherit;\t*/\n\tdisplay: none;\n}\n\n#sidebar h1 {\n\tpadding: 8px 0px 3px 25px;\n\tbackground: url(square_arrow.gif) no-repeat 0% .7em;\n\ttext-transform: none;\n\tcolor: #339900;\n}\n\n#sidebar ul.sidemenu {\n\tlist-style: none;\n\tmargin: 10px 15px;\n\tpadding: 0;\n}\n\n#sidebar ul.sidemenu li {\n\tmargin-bottom: 1px;\n\tborder: 1px solid #f2f2f2;\n}\n\n#sidebar ul.sidemenu a {\n\tdisplay: block;\n\tfont-weight: bold;\n\tcolor: #333;\n\ttext-decoration: none;\n\tpadding: 2px 5px 2px 10px;\n\tbackground: #f2f2f2;\n\tborder-left: 5px solid #CCC;\n\tmin-height: 18px;\n}\n\n* html body #sidebar ul.sidemenu a {\n\theight: 18px;\n}\n\n#sidebar ul.sidemenu a:hover {\n\tpadding: 2px 5px 2px 10px;\n\tbackground: #f2f2f2;\n\tcolor: #339900;\n\tborder-left: 5px solid #72A545;\n}\n\n/* footer */\n#footer {\n\tclear: both;\n\theight: 40px;\n\tcolor: #CCC;\n\tbackground: #000;\n\tmargin: 0;\n\tfont-size: 92%;\n}\n\n#footer a {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: #FFF;\n}\n\n#footer #footer-left {\n\twidth: 68%;\n\tfloat: left;\n\ttext-align: left;\n\tmargin: 0;\n\tpadding: 10px;\n}\n\n#footer #footer-right {\n\twidth: 25%;\n\tfloat: right;\n\ttext-align: right;\n\tmargin: 0;\n\tpadding: 10px;\n}\n\n/* alignment classes */\n.float-left {\n\tfloat: left;\n}\n\n.float-right {\n\tfloat: right;\n}\n\n.align-left {\n\ttext-align: left;\n}\n\n.align-right {\n\ttext-align: right;\n}\n\n/* additional classes */\n.clear {\n\tclear: both;\n}\n\n.hide {\n\tdisplay: none;\n}\n\n.gray {\n\tcolor: #CCC;\n}\n\n.comments {\n\tcolor: #333;\n\tbackground: #FFF;\n\ttext-align: right;\n\tborder-top: 1px dashed #EFF0F1;\n\tborder-bottom: 1px dashed #EFF0F1;\n\tpadding: 5px 0;\n\tmargin-top: 20px;\n}\n\nhtml {\n\tmin-height: 100.1%;\n}\n\n/* ------ one ------------*/\nbody .mainText {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 12px;\n}\n\n#demoText h1,.mainText h1 {\n\tfont-size: 130%;\n\tcolor: #0099FF;\n\ttext-decoration: none;\n\tfont-family: Arial, Helvetica, sans-serif;\n\tmargin: 5px 4px 5px 24px;\n\tbackground: none;\n\tpadding: 0;\n\tborder: none;\n\ttext-transform: capitalize;\n}\n\n.mainText h2 {\n\tfont-size: 110%;\n\tcolor: #000033;\n\tfont-family: Arial, Helvetica, sans-serif;\n\ttext-decoration: none;\n\tbackground: none;\n\tmargin: 4px 32px 6px 22px;\n\ttext-transform: capitalize;\n}\n\n.mainText h3 {\n\tfont-size: 120%;\n\tfont-weight: 900;\n\tmargin: 14px 0 0 0;\n\ttext-align: center;\n\tcolor: #000033;\n}\n\n.mainText table {\n\twidth: 95%;\n\tborder: 1px solid #0099FF;\n\tborder-collapse: collapse;\n\tmargin: 18px 7px;\n}\n\n.mainText table td {\n\tbackground-color: #99CCFF;\n\tcolor: #000033;\n\tpadding: 4px;\n}\n\n.mainText table th {\n\tbackground-color: #000033;\n\tcolor: #99CCFF;\n\tpadding: 4px;\n}\n\n.mainText .linkPar a {\n\tcolor: #000033;\n\ttext-decoration: underline;\n}\n\n.mainText .linkPar a:hover {\n\tcolor: #660033;\n\ttext-decoration: none;\n\tfont-weight: 900;\n}\n\n.pusher {\n\tcursor: pointer;\n\tpadding: 3px 10px 3px 22px;\n\tfont-weight: 900;\n\tfont-size: 14px;\n}\n\n/* ------------- form specific styles are here  -------------- */\nfieldset {\n\tmargin: 0;\n\tborder: 1px solid #C3DE00;\n\tpadding: 10px;\n\t/*border:none;\npadding:0;*/\n\tcolor: #7563A5;\n}\n\nlegend {\n\tbackground-color: #FFFFFF;\n\ttext-align: center;\n\tcolor: #097981;\n\tpadding: 0 12px;\n}\n\nlabel {\n\ttext-align: right;\n\twidth: 298px;\n\tborder-right: 1px dotted #099;\n\tpadding-right: 5px;\n\tmargin: 0 0 8px 0;\n\tfloat: left;\n\tclear: left;\n\tdisplay: block;\n\tcolor: #7563A5;\n}\n\nlabel.checkbox,label.textarea {\n\tborder: none;\n}\n\nlabel.lgfield {\n\tborder: none;\n\ttext-align: center;\n\tclear: both;\n\tfloat: none;\n\twidth: 100%;\n}\n\nfieldset input,fieldset select,fieldset textarea {\n\tmargin-left: 10px;\n\tmargin-bottom: 8px;\n}\n\nselect.longfield {\n\tmargin: 0 0 0 115px;\n}\n\ninput [type=\"radio\"],input [type=\"checkbox\"] {\n\tmargin: 2px 0 0 4px;\n}\n\ntextarea {\n\twidth: 250px;\n\tfloat: left;\n}\n\n/*Get Help Form Styles*/\np.formDisclaimer {\n\ttext-align: center;\n\tmargin: 32px 24px 12px 0;\n\tfont-style: italic;\n}\n\ndiv.buttonWrapper {\n\tmargin: 28px 0 14px 0;\n\tclear: both;\n\ttext-align: center;\n}\n\n.formspacer {\n\theight: 1em;\n\tclear: both;\n}\n\n.hideField {\n\tdisplay: none;\n}\n\n.pushOpen {\n\theight: 18em;\n}\n\n/* ----- error message for field validation ----- */\n#stepForm label.warning {\n\ttext-align: left;\n\twidth: auto;\n\tpadding: 0;\n\tmargin: 0 0 0 10px;\n\tfloat: none;\n\tclear: none;\n\tdisplay: inline;\n\tcolor: #CC3366;\n\tfont-size: 10px;\n\tborder: none;\n\tborder-top: 1px dotted #CC3366;\n}\n\ndiv.requiredNotice {\n\twidth: 140px;\n\tfloat: right;\n\tmargin: 0 24px 0 0;\n\tpadding: 0;\n}\n\nh3.stepHeader {\n\ttext-align: left;\n\tfont-size: 16px;\n\tfont-weight: bold;\n\tmargin: 0 0 24px 24px;\n\tcolor: #676cac;\n}\n\nul#stepForm,ul#stepForm li {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nul#stepForm li {\n\tlist-style: none;\n}\n\n/* Form Buttons  */\ninput.submitbutton,.nextbutton,.prevbutton {\n\twidth: 100px;\n\theight: 40px;\n\tbackground-color: #663399;\n\tpadding: 4px;\n\tborder: 1px solid #339933;\n\tcursor: pointer;\n\ttext-align: center;\n\tcolor: #FFFFFF;\n\tmargin: 7px;\n}\n\ninput.submitbutton {\n\tbackground-color: #006699;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/radio-checkbox-select-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted!\");\n\t}\n});\n\t\n$.metadata.setType(\"attr\", \"validate\");\n\n$(document).ready(function() {\n\t$(\"#form1\").validate();\n\t$(\"#selecttest\").validate();\n});\n</script>\n\n<style type=\"text/css\">\n.block { display: block; }\nform.cmxform label.error { display: none; }\t\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form class=\"cmxform\" id=\"form1\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a form with a radio and checkbox buttons</legend>\n\t\t<fieldset>\n\t\t\t<legend>Gender</legend>\n\t\t\t<label for=\"gender_male\">\n\t\t\t\t<input  type=\"radio\" id=\"gender_male\" value=\"m\" name=\"gender\" validate=\"required:true\" />\n\t\t\t\tMale\n\t\t\t</label>\n\t\t\t<label for=\"gender_female\">\n\t\t\t\t<input  type=\"radio\" id=\"gender_female\" value=\"f\" name=\"gender\"/>\n\t\t\t\tFemale\n\t\t\t</label>\n\t\t\t<label for=\"gender\" class=\"error\">Please select your gender</label>\n\t\t</fieldset>\n\t\t<fieldset>\n\t\t\t<legend>Family</legend>\n\t\t\t<label for=\"family_single\">\n\t\t\t\t<input  type=\"radio\" id=\"family_single\" value=\"s\" name=\"family\" validate=\"required:true\" />\n\t\t\t\tSingle\n\t\t\t</label>\n\t\t\t<label for=\"family_married\">\n\t\t\t\t<input  type=\"radio\" id=\"family_married\" value=\"m\" name=\"family\" />\n\t\t\t\tMarried\n\t\t\t</label>\n\t\t\t<label for=\"family_other\">\n\t\t\t\t<input  type=\"radio\" id=\"family_other\" value=\"o\" name=\"family\" />\n\t\t\t\tOther\n\t\t\t</label>\n\t\t\t<label for=\"family\" class=\"error\">Please select your family status.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" validate=\"required:true\" />\n\t\t\t<br/>\n\t\t\t<label for=\"agree\" class=\"error block\">Please agree to our policy!</label>\n\t\t</p>\n\t\t<fieldset>\n\t\t\t<legend>Spam</legend>\n\t\t\t<label for=\"spam_email\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_email\" value=\"email\" name=\"spam[]\" validate=\"required:true, minlength:2\" />\n\t\t\t\tSpam via E-Mail\n\t\t\t</label>\n\t\t\t<label for=\"spam_phone\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_phone\" value=\"phone\" name=\"spam[]\" />\n\t\t\t\tSpam via Phone\n\t\t\t</label>\n\t\t\t<label for=\"spam_mail\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_mail\" value=\"mail\" name=\"spam[]\" />\n\t\t\t\tSpam via Mail\n\t\t\t</label>\n\t\t\t<label for=\"spam[]\" class=\"error\">Please select at least two types of spam.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form id=\"selecttest\">\n\t<h2>Some tests with selects</h2>\n\t<p>\n\t\t<label for=\"jungle\">Please select a jungle noun</label><br/>\n\t\t<select id=\"jungle\" name=\"jungle\" title=\"Please select something!\" validate=\"required:true\">\n\t\t\t<option value=\"\"></option>\n\t\t\t<option value=\"1\">Buga</option>\n\t\t\t<option value=\"2\">Baga</option>\n\t\t\t<option value=\"3\">Oi</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"fruit\">Please select at least two fruits</label><br/>\n\t\t<select id=\"fruit\" name=\"fruit\" title=\"Please select at least two fruits\" validate=\"required:true, minlength:2\" multiple=\"multiple\">\n\t\t\t<option value=\"b\">Banana</option>\n\t\t\t<option value=\"a\">Apple</option>\n\t\t\t<option value=\"p\">Peach</option>\n\t\t\t<option value=\"t\">Turtle</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"vegetables\">Please select no more than two vergetables</label><br/>\n\t\t<select id=\"vegetables\" name=\"vegetables\" title=\"Please select no more than two vergetables\" validate=\"required:true, maxlength:2\" multiple=\"multiple\">\n\t\t\t<option value=\"p\">Potato</option>\n\t\t\t<option value=\"t\">Tomato</option>\n\t\t\t<option value=\"s\">Salad</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"cars\">Please select at least two cars, but no more than three</label><br/>\n\t\t<select id=\"cars\" name=\"cars\" title=\"Please select at least two cars, but no more than three\" validate=\"required:true, rangelength:[2,3]\" multiple=\"multiple\">\n\t\t\t<option value=\"m_sl\">Mercedes SL</option>\n\t\t\t<option value=\"o_c\">Opel Corsa</option>\n\t\t\t<option value=\"vw_p\">VW Polo</option>\n\t\t\t<option value=\"t_s\">Titanic Skoda</option>\n\t\t</select>\n\t</p>\n\t\n\t<p><input type=\"submit\" value=\"Validate Selecttests\"/></p>\n</form>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tabs/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>jQuery UI tabs integration demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script id=\"demo\" type=\"text/javascript\">\n$(document).ready(function() {\n\tvar tabs = $(\"#tabs\").tabs();\n\tvar validator = $(\"#signupform\").validate({\n\t\tgroups: {\n\t\t\tbirthdate: \"birthdateDay birthdateMonth birthdateYear\"\n\t\t},\n\t\terrorPlacement: function(label, element) {\n\t\t\tif (/^birthdate/.test(element[0].name)) {\n\t\t\t\tlabel.insertAfter(\"#birthdateYear\");\n\t\t\t} else {\n\t\t\t\tlabel.insertAfter(element);\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// validate the other two selects when one changes to update the whole group\n\tvar birthdaySelects = $(\"#birthdateGroup select\").click(function() {\n\t\tbirthdaySelects.not(this).valid();\n\t})\n\t\n\t// overwrite focusInvalid to activate tab with invalid elements\n\tvalidator.focusInvalid = function() {\n\t\tif( this.settings.focusInvalid ) {\n\t\t\ttry {\n\t\t\t\tvar focused = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(\":visible\");\n\t\t\t\ttabs.tabs(\"select\", tabs.find(\">div\").index(focused.parent().parent()));\n\t\t\t\tfocused.focus();\n\t\t\t} catch(e) {\n\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t}\n\t\t}\n\t};\n});\n</script>\n\n<style>\n\tbody { font-size: 65.2% }\n\tlabel { display: inline-block; width: 8em; }\n\tlabel.error { color: red; margin-left: 0.5em; width: 20em; }\n</style>\n\n</head>\n<body>\n\t\n<form id=\"signupform\">\n\t\n\t<div id=\"tabs\">\n\t\t<ul>\n\t\t\t<li><a href=\"#logindata\">Login data</a></li>\n\t\t\t<li><a href=\"#personaldata\">Personal data</a></li>\n\t\t\t<li><a href=\"#subscriptions\">Subscriptions</a></li>\n\t\t</ul>\n\t\t<div id=\"logindata\">\n\t\t\t<p>\n\t\t\t\t<label for=\"username\">Username</label>\n\t\t\t\t<input id=\"username\" name=\"username\" class=\"required\" minlength=\"3\" maxlength=\"20\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"email\">Email address</label>\n\t\t\t\t<input id=\"email\" name=\"email\" class=\"required email\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\">Password</label>\n\t\t\t\t<input name=\"password\" type=\"password\" class=\"required\" id=\"password\" minlength=\"4\" maxlength=\"50\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"confirmpassword\">Confirm Password</label>\n\t\t\t\t<input name=\"confirmpassword\" type=\"password\" class=\"required\" equalTo=\"#password\" id=\"confirmpassword\" />\n\t\t\t</p>\n\t\t</div>\n\t\t<div id=\"personaldata\">\n\t\t\t<p>\n\t\t\t\t<label for=\"street\">Street</label>\n\t\t\t\t<input id=\"street\" name=\"street\" class=\"required\" minlength=\"3\" maxlength=\"50\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"city\">City</label>\n\t\t\t\t<input id=\"city\" name=\"city\" class=\"required\" minlength=\"3\" maxlength=\"50\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p id=\"birthdateGroup\">\n\t\t\t\t<label for=\"birthdateDay\">Birthdate</label>\n\t\t\t\t<select id=\"birthdateDay\" name=\"birthdateDay\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Day</option>\n\t\t\t\t\t<option>1</option>\n\t\t\t\t\t<option>2</option>\n\t\t\t\t\t<option>3</option>\n\t\t\t\t\t<option>...</option>\n\t\t\t\t</select>\n\t\t\t\t<select id=\"birthdateMonth\" name=\"birthdateMonth\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Month</option>\n\t\t\t\t\t<option>1</option>\n\t\t\t\t\t<option>2</option>\n\t\t\t\t\t<option>3</option>\n\t\t\t\t\t<option>4</option>\n\t\t\t\t\t<option>5</option>\n\t\t\t\t\t<option>6</option>\n\t\t\t\t\t<option>7</option>\n\t\t\t\t\t<option>8</option>\n\t\t\t\t\t<option>9</option>\n\t\t\t\t\t<option>10</option>\n\t\t\t\t\t<option>11</option>\n\t\t\t\t\t<option>12</option>\n\t\t\t\t</select>\n\t\t\t\t<select id=\"birthdateYear\" name=\"birthdateYear\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Year</option>\n\t\t\t\t\t<option>1950</option>\n\t\t\t\t\t<option>1951</option>\n\t\t\t\t\t<option>1952</option>\n\t\t\t\t\t<option>1953</option>\n\t\t\t\t\t<option>1954</option>\n\t\t\t\t\t<option>1955</option>\n\t\t\t\t\t<option>...</option>\n\t\t\t\t</select>\n\t\t\t</p>\n\t\t</div>\n\t\t<div id=\"subscriptions\">\n\t\t\t<p>\n\t\t\t\t<label for=\"weekly\">Weekly Newsletter</label>\n\t\t\t\t<input id=\"weekly\" name=\"weekly\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"updates\">Product Updates</label>\n\t\t\t\t<input id=\"updates\" name=\"updates\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"terms\">Terms and conditions</label>\n\t\t\t\t<input id=\"terms\" name=\"terms\" class=\"required\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t</div>\n\t</div>\n\n\t<input type=\"submit\" />\n</form>\n\n\n\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/themerollered.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - ThemeRolldered demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"http://code.jquery.com/ui/jquery-ui-git.css\" />\n\n<style type=\"text/css\">\nbody { font-size: 62.5%; }\nlabel { display: inline-block; width: 100px; }\nlegend { padding: 0.5em; }\nfieldset fieldset label { display: block; }\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; }\n#commentForm label.error, #commentForm button.submit { margin-left: 253px; }\n#signupForm { width: 670px; }\n#signupForm label.error {\n\tmargin-left: 10px;\n\twidth: auto;\n\tdisplay: inline;\n}\n#newsletter_topics label.error {\n\tdisplay: none;\n\tmargin-left: 103px;\n}\n</style>\n\n</head>\n<body>\n\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<legend class=\"ui-widget ui-widget-header ui-corner-all\">Please provide your name, email address (won't be published) and a comment</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" class=\"ui-widget-content\" minlength=\"2\" required type=\"text\" />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"ui-widget-content\" type=\"email\" required />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" name=\"url\" class=\"ui-widget-content\" value=\"\" type=\"url\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"ui-widget-content\" required></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<button class=\"submit\" type=\"submit\">Submit</button>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form class=\"cmxform\" id=\"signupForm\" method=\"get\" action=\"\">\n\t<fieldset class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<legend class=\"ui-widget ui-widget-header ui-corner-all\">Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"username\">Username</label>\n\t\t\t<input id=\"username\" name=\"username\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"password\">Password</label>\n\t\t\t<input id=\"password\" name=\"password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"confirm_password\">Confirm password</label>\n\t\t\t<input id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" type=\"email\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"newsletter\">I'd like to receive the newsletter</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n\t\t</p>\n\t\t<fieldset id=\"newsletter_topics\" class=\"ui-widget-content ui-corner-all\">\n\t\t\t<legend class=\"ui-widget-header ui-corner-all\">Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>\n\t\t\t<label for=\"topic_marketflash\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_marketflash\" value=\"marketflash\" name=\"topic\" />\n\t\t\t\tMarketflash\n\t\t\t</label>\n\t\t\t<label for=\"topic_fuzz\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_fuzz\" value=\"fuzz\" name=\"topic\" />\n\t\t\t\tLatest fuzz\n\t\t\t</label>\n\t\t\t<label for=\"topic_digester\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_digester\" value=\"digester\" name=\"topic\" />\n\t\t\t\tMailing list digester\n\t\t\t</label>\n\t\t\t<label for=\"topic\" class=\"error\">Please select at least two topics you'd like to receive.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<button class=\"submit\" type=\"submit\">Submit</button>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<script src=\"../lib/jquery-1.6.1.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n<script src=\"http://code.jquery.com/ui/jquery-ui-git.js\"></script>\n<script type=\"text/javascript\">\n$.validator.setDefaults({\n\tsubmitHandler: function() { alert(\"submitted!\"); },\n\tshowErrors: function(map, list) {\n\t\t// there's probably a way to simplify this\n\t\tvar focussed = document.activeElement;\n\t\tif (focussed && $(focussed).is(\"input, textarea\")) {\n\t\t\t$(this.currentForm).tooltip(\"close\", { currentTarget: focussed }, true)\n\t\t}\n\t\tthis.currentElements.removeAttr(\"title\").removeClass(\"ui-state-highlight\");\n\t\t$.each(list, function(index, error) {\n\t\t\t$(error.element).attr(\"title\", error.message).addClass(\"ui-state-highlight\");\n\t\t});\n\t\tif (focussed && $(focussed).is(\"input, textarea\")) {\n\t\t\t$(this.currentForm).tooltip(\"open\", { target: focussed });\n\t\t}\n\t}\n});\n\n(function() {\n\t// use custom tooltip; disable animations for now to work around lack of refresh method on tooltip\n\t$(\"#commentForm, #signupForm\").tooltip({\n\t\tshow: false,\n\t\thide: false\n\t});\n\n\t// validate the comment form when it is submitted\n\t$(\"#commentForm\").validate();\n\n\t// validate signup form on keyup and submit\n\t$(\"#signupForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n\n\t$(\"#signupForm input:not(:submit)\").addClass(\"ui-widget-content\");\n\n\t$(\":submit\").button();\n})();\n</script>\n<script src=\"http://jqueryui.com/themeroller/themeswitchertool/\"></script>\n<script>\n$.fn.themeswitcher && $('<div/>').css({\n\t\tposition: \"absolute\",\n\t\tright: 10,\n\t\ttop: 10\n\t}).appendTo(document.body).themeswitcher();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>jQuery Validation plugin: integration with TinyMCE</title>\n\n<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n<script type=\"text/javascript\" src=\"tiny_mce.js\"></script>\n<script type=\"text/javascript\">\n\ttinyMCE.init({\n\t\tmode : \"textareas\",\n\t\ttheme : \"simple\",\n\t\t// update validation status on change\n\t\tonchange_callback: function(editor) {\n\t\t\ttinyMCE.triggerSave();\n\t\t\t$(\"#\" + editor.id).valid();\n\t\t}\n\t});\n\t$(function() {\n\t\tvar validator = $(\"#myform\").submit(function() {\n\t\t\t// update underlying textarea before submit validation\n\t\t\ttinyMCE.triggerSave();\n\t\t}).validate({\n\t\t\tignore: \"\",\n\t\t\trules: {\n\t\t\t\ttitle: \"required\",\n\t\t\t\tcontent: \"required\"\n\t\t\t},\n\t\t\terrorPlacement: function(label, element) {\n\t\t\t\t// position error label after generated textarea\n\t\t\t\tif (element.is(\"textarea\")) {\n\t\t\t\t\tlabel.insertAfter(element.next());\n\t\t\t\t} else {\n\t\t\t\t\tlabel.insertAfter(element)\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tvalidator.focusInvalid = function() {\n\t\t\t// put focus on tinymce on submit validation\n\t\t\tif( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\tvar toFocus = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []);\n\t\t\t\t\tif (toFocus.is(\"textarea\")) {\n\t\t\t\t\t\ttinyMCE.get(toFocus.attr(\"id\")).focus();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttoFocus.filter(\":visible\").focus();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n</script>\n<!-- /TinyMCE -->\n\n</head>\n<body>\n\n<form id=\"myform\" action=\"\">\n\t<h3>TinyMCE and Validation Plugin integration example</h3>\n\n\t<label>Some other field</label>\n\t<input name=\"title\" />\n\n\t<br/>\n\t\n\t<label>Some richt text</label>\n\t<textarea id=\"content\" name=\"content\" rows=\"15\" cols=\"80\" style=\"width: 80%\"></textarea>\n\n\t<br />\n\t<input type=\"submit\" name=\"save\" value=\"Submit\" />\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/editor_template.js",
    "content": "(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+\"/skins/\"+s.skin+\"/content.css\");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+\"/skins/\"+s.skin+\"/ui.css\");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar(\"tools1\");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+\".\"+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/langs/en.js",
    "content": "tinyMCE.addI18n('en.simple',{\nbold_desc:\"Bold (Ctrl+B)\",\nitalic_desc:\"Italic (Ctrl+I)\",\nunderline_desc:\"Underline (Ctrl+U)\",\nstriketrough_desc:\"Strikethrough\",\nbullist_desc:\"Unordered list\",\nnumlist_desc:\"Ordered list\",\nundo_desc:\"Undo (Ctrl+Z)\",\nredo_desc:\"Redo (Ctrl+Y)\",\ncleanup_desc:\"Cleanup messy code\"\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css",
    "content": "/* Reset */\n.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\n\n/* Containers */\n.defaultSimpleSkin {position:relative}\n.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}\n.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}\n.defaultSimpleSkin .mceToolbar {height:24px;}\n\n/* Layout */\n.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}\n.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\n\n/* Button */\n.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}\n.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\n.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}\n.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\n\n/* Separator */\n.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}\n\n/* Theme */\n.defaultSimpleSkin span.mce_bold {background-position:0 0}\n.defaultSimpleSkin span.mce_italic {background-position:-60px 0}\n.defaultSimpleSkin span.mce_underline {background-position:-140px 0}\n.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}\n.defaultSimpleSkin span.mce_undo {background-position:-160px 0}\n.defaultSimpleSkin span.mce_redo {background-position:-100px 0}\n.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}\n.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\n.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/tiny_mce.js",
    "content": "var tinymce={majorVersion:'3',minorVersion:'2.1.1',releaseDate:'2008-11-27',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;t.isAir=/adobeair/i.test(ua);if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\\/\\/[^\\/]+$/.test(v))v+='/';base=v?v.match(/.*\\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\\s*|\\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);cn=s[3].match(/(^|\\.)(\\w+)$/i)[2];ns=t.createNS(s[3].replace(/\\.\\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\\.(\\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf(':/')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(u);each([\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"],function(v,i){var s=u[i];if(s)s=s.replace(/\\(mce_at\\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\\/?(\\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;if(u===\"./\")return u;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i,l;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0,l=base.length;i<l;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0,l=items.length;i<l;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i<l;i++)out+=\"../\";for(i=bp-1,l=items.length;i<l;i++){if(i!=bp-1)out+=\"/\"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==\".\")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+\"=\",b;if(!c)return;b=c.indexOf(\"; \"+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(\";\",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+\"=\"+escape(v)+((e)?\"; expires=\"+e.toGMTString():\"\")+((p)?\"; path=\"+escape(p):\"\")+((d)?\"; domain=\"+d:\"\")+((s)?\"; secure\":\"\");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\\bb\\tt\\nn\\ff\\rr\\\"\"\\'\\'\\\\\\\\';return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\\\u'+'0000'.substring(a.length)+a;})+'\"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',\"':'\"')+i+'\":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\\w]+$/,elmPattern:/^[\\w_*]+$/,elmClassPattern:/^([\\w_]*)\\.([\\w_]+)$/,props:{\"for\":\"htmlFor\",\"class\":\"className\",className:\"className\",checked:\"checked\",disabled:\"disabled\",maxlength:\"maxLength\",readonly:\"readOnly\",selected:\"selected\",value:\"value\",id:\"id\",name:\"name\",type:\"type\"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode==\"CSS1Compat\";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\\w\\\\*]+)?(?:#([\\w\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@([\\w\\\\]+)([\\^\\$\\*!]?=)([\\w\\\\]+)\\])?(?:\\:([\\w\\\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+=\"[@id='\"+v[2]+\"']\";if(v[3]){each(v[3].split('.'),function(n){xp+=\"[@class = '\"+n+\"' or contains(concat(' ', @class, ' '), ' \"+n+\" ')]\";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=t.selectorRe.exec(v);p[1]=p[1]||'*';cs+='find(\"'+p[1]+'\", function(n) {';if(p[2])cs+='if (n.id !== \"'+p[2]+'\") return;';if(p[3]){cs+='var c = \" \" + n.className + \" \";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(\" '+v+' \") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'=\"'+t.encode(a[k])+'\"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\\-0-9\\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':\"alpha(opacity=\"+(v*100)+\")\";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case\"style\":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case\"class\":e.className=v||'';break;case\"src\":case\"href\":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case\"shape\":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute(\"mce_\"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n===\"class\"&&v)v=v.replace(/(apple|webkit)\\-[a-z\\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\\s+anonymous\\(\\)\\s+\\{\\s+(.*)\\s+\\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,\"display\",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\\([^\\)]+\\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\\(([^\\)]+)\\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\\([^\\)]+\\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\\([\\'\\\"]?([^\\)\\'\\\"]+)[\\'\\\"]?\\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress(\"border\",\"\",\"border\");compress(\"border\",\"-width\",\"border-width\");compress(\"border\",\"-color\",\"border-color\");compress(\"border\",\"-style\",\"border-style\");compress(\"padding\",\"\",\"padding\");compress(\"margin\",\"\",\"margin\");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp(\"(^|\\\\s+)\"+c+\"(\\\\s+|$)\",\"g\");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\\/p>|<p([^>]+)><\\/p>|<p[^\\/+]\\/>/gi,'<p$1 mce_keep=\"true\">&nbsp;</p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName(\"p\");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp=\"1\">');h=h.replace(/<\\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName(\"DIV\");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/&apos;/g,'&#39;');h=h.replace(/\\s+(disabled|checked|readonly|selected)\\s*=\\s*[\\\"\\']?(false|0)[\\\"\\']?/gi,'');}h=h.replace(/<a( )([^>]+)\\/>|<a\\/>/gi,'<a$1$2></a>');if(s.keep_values){if(/<script|style/.test(h)){function trim(s){s=s.replace(/(<!--\\[CDATA\\[|\\]\\]-->)/g,'\\n');s=s.replace(/^[\\r\\n]*|[\\r\\n]*$/g,'');s=s.replace(/^\\s*(\\/\\/\\s*<!--|\\/\\/\\s*<!\\[CDATA\\[|<!--|<!\\[CDATA\\[)[\\r\\n]*/g,'');s=s.replace(/\\s*(\\/\\/\\s*\\]\\]>|\\/\\/\\s*-->|\\]\\]>|-->|\\]\\]-->)\\s*$/g,'');return s;};h=h.replace(/<script([^>]+|)>([\\s\\S]*?)<\\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type=\"text/javascript\"';if(b)b='<!--\\n'+b+'\\n// -->';return'<mce:script'+a+'>'+b+'</mce:script>';});h=h.replace(/<style([^>]+|)>([\\s\\S]*?)<\\/style>/g,function(v,a,b){b=trim(b);return'<mce:style'+a+'><!--\\n'+b+'\\n--></mce:style><style'+a+' mce_bogus=\"1\">'+b+'</style>';});}h=h.replace(/<!\\[CDATA\\[([\\s\\S]+)\\]\\]>/g,'<!--[CDATA[$1]]-->');h=h.replace(/<([\\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\\([^\\)]+\\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\\([\\'\\\"]?([^\\)\\'\\\"]+)\\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'=\"'+c+'\" mce_'+b+'=\"'+u+'\"';};a=a.replace(/ (src|href|style|coords|shape)=[\\\"]([^\\\"]+)[\\\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\\']([^\\']+)[\\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\\s\\\"\\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement(\"body\");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement(\"body\");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement(\"div\");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\\\"]/g,function(c,b){switch(c){case'&':return'&amp;';case'\"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\\s*rgb\\s*?\\(\\s*?([0-9]+)\\s*?,\\s*?([0-9]+)\\s*?,\\s*?([0-9]+)\\s*?\\)\\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\\s*|\\s*$|^\\s\\./g,\"\");if(/\\.mce/.test(v)||!/\\.[\\w\\-]+$/.test(v))return;ov=v;v=v.replace(/.*\\.([a-z0-9_\\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\\:\\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\\'javascript:\"\"\\';><\\/script>');DOM.get(\"__ie_onload\").onreadystatechange=function(){if(this.readyState==\"complete\"){Event._pageInit();DOM.get(\"__ie_onload\").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:\"\"'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\\n\\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;each(['onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent'],function(e){t[e]=new tinymce.util.Dispatcher(t);});tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create(\"body\"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';t.onBeforeGetContent.dispatch(t,s);if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\\s/.test(e.innerHTML))wb=' ';if(/\\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;s.content=t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;t.onGetContent.dispatch(t,s);return s.content;},setContent:function(h,s){var t=this,r=t.getRng(),c,d=t.win.document;s=s||{format:'html'};s.set=true;h=s.content=t.dom.processHTML(h);t.onBeforeSetContent.dispatch(t,s);h=s.content;if(r.insertNode){h+='<span id=\"__caret\">_</span>';r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));c=t.dom.get('__caret');r=d.createRange();r.setStartBefore(c);r.setEndAfter(c);t.setRng(r);d.execCommand('Delete',false,null);t.dom.remove('__caret');}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}t.onSetContent.dispatch(t,s);},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||r.collapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(tinymce.isWebKit&&s.anchorNode&&s.anchorNode.nodeType==1)return s.anchorNode.childNodes[s.anchorOffset];if(r.startContainer==r.endContainer){if(r.startOffset-r.endOffset<2){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement(\"html\"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(\"\"));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){if(tinymce.isIE)v=v.replace(/^\\-|\\-$/g,' ');this.node.appendChild(this.doc.createComment(v.replace(/\\-\\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\\?[^?]+\\?>|<html>|<\\/html>|<html\\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\\/>/g,' />');if(this.valid)h=h.replace(/\\%MCGT%/g,'&gt;');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str=\"\";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(\" \"+t.encode(n)+'=\"'+t.encode(v)+'\"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&\"]/g,function(v){switch(v){case'<':return'&lt;';case'>':return'&gt;';case'&':return'&amp;';case'\"':return'&quot;';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\\:\\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\\t',indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:'xhtml'},s);t.dom=s.dom;if(s.remove_redundant_brs){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<br \\/>(\\s*<\\/li>)/g,'$1');});}if(s.element_format=='html'){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<([^>]+) \\/>/g,'<$1>');});}if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\\[|\\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\\[|\\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\\-])?([\\w*.?~_\\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\\/pre>)/g,encode:1},{pattern:/(<!--\\[CDATA\\[)(.*?)(\\]\\]-->)/g}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\\s+<\\/p>|<p([^>]+)>\\s+<\\/p>/g,s.entity_encoding=='numeric'?'<p$1>&#160;</p>':'<p$1>&nbsp;</p>');if(s.remove_linebreaks){h=h.replace(/\\r?\\n|\\r/g,' ');h=h.replace(/(<[^>]+>)\\s+/g,'$1 ');h=h.replace(/\\s+(<\\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\\s+/g,'<$1>');h=h.replace(/\\s+<\\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\\s*/g,'\\n<$1$2$3>\\n');h=h.replace(/\\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\\n<$1$2>');h=h.replace(/<\\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\\s*/g,'</$1>\\n');h=h.replace(/\\n\\n/g,'\\n');}}h=t._unprotect(h,p);h=h.replace(/<!--\\[CDATA\\[([\\s\\S]+)\\]\\]-->/g,'<![CDATA[$1]]>');if(s.entity_encoding=='raw')h=h.replace(/<p>&nbsp;<\\/p>|<p([^>]+)>&nbsp;<\\/p>/g,'<p$1>\\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(ru.padd){if(hc&&(cn=n.firstChild)&&cn.nodeType===1&&n.childNodes.length===1){if(cn.hasAttribute?cn.hasAttribute('mce_bogus'):cn.getAttribute('mce_bogus'))w.writeText('\\u00a0');}else if(!hc)w.writeText('\\u00a0');}break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\\r\\n\\\\]/g,function(c){if(c==='\\n')return'\\\\n';else if(c==='\\\\')return'\\\\\\\\';return'\\\\r';});};function dec(s){return s.replace(/\\\\[\\\\rn]/g,function(c){if(c==='\\\\n')return'\\n';else if(c==='\\\\\\\\')return'\\\\';return'\\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\\<!--mce:([0-9]+)--\\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\\u007E-\\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);if(this.settings.bool_attrs.test(na)&&v){v=(''+v).toLowerCase();if(v==='false'||v==='0')return null;v=na;}switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\\s?mceItem\\w+\\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type=\"text/javascript\" src=\"'+tinymce._addVer(u)+'\"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone();});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange=\"';else ol=' onload=\"';ol+='tinymce.dom.ScriptLoader._onLoad(this,\\''+u+'\\','+ix+');\"';}document.write('<script type=\"text/javascript\" src=\"'+tinymce._addVer(u)+'\"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0;}};if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done();}});}else{e=tinymce.DOM.create('script',{id:id,type:'text/javascript',src:tinymce._addVer(u)});Event.add(e,'load',done);(document.getElementsByTagName('head')[0]||document.body).appendChild(e);}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+\": \"+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix,ic;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:\"return false;\",onmousedown:'return false;'});DOM.addClass(it,s['class']);ic=DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});if(s.icon_src)DOM.add(ic,'img',{src:s.icon_src});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id=\"'+this.id+'\" href=\"javascript:;\" class=\"'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'\" onmousedown=\"return false;\" onclick=\"return false;\" title=\"'+DOM.encode(s.title)+'\">';if(s.image)h+='<img class=\"mceIcon\" src=\"'+s.image+'\" />'+l+'</a>';else h+='<span class=\"mceIcon '+s['class']+'\"></span>'+(l?'<span class=\"'+cp+'Label\">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){var t=this,e,o;if(idx!=t.selectedIndex){e=DOM.get(t.id+'_text');o=t.items[idx];if(o){t.selectedValue=o.value;t.selectedIndex=idx;DOM.setHTML(e,DOM.encode(o.title));DOM.removeClass(e,'mceTitle');}else{DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');t.selectedValue=t.selectedIndex=null;}e=0;}else t.selectedValue=t.selectedIndex=null;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id=\"'+t.id+'\" cellpadding=\"0\" cellspacing=\"0\" class=\"'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'\"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:\"return false;\",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:\"return false;\",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){DOM.get(this.id).selectedIndex=idx+1;this.selectedValue=this.items[idx]?this.items[idx].value:null;},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=t.items[e.target.selectedIndex-1];if(v&&(v=v.value)){t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);}};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:\"return false;\",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:\"return false;\",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});DOM.setStyle(t.id+'_preview','backgroundColor',t.value);},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style=\"position: relative\">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\\?#].*$/,'').replace(/[\\/\\\\][^\\/]+$/,'');if(!/[\\/\\\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\\.(.+\\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\\.\\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:\"simple\",language:\"en\",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case\"exact\":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case\"textareas\":case\"specific_textareas\":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case\"mceFocus\":ed.focus();return true;case\"mceAddEditor\":case\"mceAddControl\":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case\"mceAddFrameControl\":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case\"mceRemoveEditor\":case\"mceRemoveControl\":if(ed)ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px',keep_styles:1},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\\/$/,''));each(explode(s.plugins.replace(/\\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css!==false){if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute(\"themes/\"+s.theme+\"/skins/\"+s.skin+\"/dialog.css\");}if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+(typeof(h)=='number'?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns=\"http://www.w3.org/1999/xhtml\"><base href=\"'+t.documentBaseURI.getURI()+'\" />';t.iframeHTML+='<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type=\"text/javascript\">document.domain = \"'+tinymce.relaxedDomain+'\";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id=\"'+bi+'\" class=\"mceContentBody '+bc+'\"></body></html>';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain=\"'+document.domain+'\";var ed = window.parent.tinyMCE.get(\"'+t.id+'\");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain=\"'+document.domain+'\";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+\"_ifr\",src:u||'javascript:\"\"',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace=\"nowrap\";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name=\"$1\"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\\r?\\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\\s*<pre.*?>/,'');o.content=o.content.replace(/<\\/pre>\\s*$/,'');if(o.set)o.content='<pre class=\"mceItemHidden\">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\\bmceItem\\w+\\b|\\bmceTemp\\w+\\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\\s|\\u00a0|)<\\/p>[\\r\\n]*|<br \\/>[\\r\\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\\.\\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\\#([^}]+)\\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+\"_ifr\",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus=\"1\" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\\s*|\\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+\"_ifr\");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand(\"styleWithCSS\",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand(\"useCSS\",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\\/)?([^\\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\\{\\$selection\\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\\'\\\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand(\"styleWithCSS\",0,s);}catch(ex){d.execCommand(\"useCSS\",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\\s*|\\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\\\u00a0|&#160;|&nbsp;)<\\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\\\\/p>|<p( )([^>]+)\\\\\\/>|<p( )([^>]+)>\\\\s+<\\\\\\/p>|<p><\\\\\\/p>|<p\\\\\\/>|<p>\\\\s+<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\\\s\\\\u00a0]+<\\\\\\/p>|<p>[\\\\s\\\\u00a0]+<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\\\\/p>|<p>(&nbsp;|&#160;)<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\\\s*<br \\\\\\/>\\\\s*<\\\\\\/p>|<p>\\\\s*<br \\\\\\/>\\\\s*<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\\\s*<br \\\\/>\\\\s*<\\\\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id=\"__\" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute(\"id\");n.setAttribute(\"id\",\"__mce\");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \\t\\r\\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName==\"HTML\"?d.body:sn;sn=sn.nodeName==\"BODY\"?sn.firstChild:sn;en=en.nodeName==\"HTML\"?d.body:en;en=en.nodeName==\"BODY\"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn==\"DIV\"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?'&nbsp;':'<br />';return nl[0];}else e.innerHTML=isOpera?'&nbsp;':'<br />';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+25);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){var pr;e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){pr=e.previousSibling;Event.remove(b,'DOMNodeInserted',handler);if(pr&&pr.nodeType==3&&/\\s+$/.test(pr.nodeValue))return;if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case\"|\":case\"separator\":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s,cc){s=s||{};s.menu_button=1;return this.createButton(id,s,cc);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm){ed.selection.moveToBookmark(bm);bm=0;}});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s,w){w=w||window;cb.call(s||this,w.confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s,w){var t=this;w=w||window;w.alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\\\n/g,'\\n');}});}());"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.js",
    "content": "/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */\n\n/*!\n * jQuery Validation Plugin 1.10.0\n *\n * http://bassistance.de/jquery-plugins/jquery-plugin-validation/\n * http://docs.jquery.com/Plugins/Validation\n *\n * Copyright (c) 2006 - 2011 Jörn Zaefferer\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n */\n\n(function() {\n\n\tfunction stripHtml(value) {\n\t\t// remove html tags and space chars\n\t\treturn value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')\n\t\t// remove punctuation\n\t\t.replace(/[.(),;:!?%#$'\"_+=\\/-]*/g,'');\n\t}\n\tjQuery.validator.addMethod(\"maxWords\", function(value, element, params) {\n\t\treturn this.optional(element) || stripHtml(value).match(/\\b\\w+\\b/g).length <= params;\n\t}, jQuery.validator.format(\"Please enter {0} words or less.\"));\n\n\tjQuery.validator.addMethod(\"minWords\", function(value, element, params) {\n\t\treturn this.optional(element) || stripHtml(value).match(/\\b\\w+\\b/g).length >= params;\n\t}, jQuery.validator.format(\"Please enter at least {0} words.\"));\n\n\tjQuery.validator.addMethod(\"rangeWords\", function(value, element, params) {\n\t\tvar valueStripped = stripHtml(value);\n\t\tvar regex = /\\b\\w+\\b/g;\n\t\treturn this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1];\n\t}, jQuery.validator.format(\"Please enter between {0} and {1} words.\"));\n\n})();\n\njQuery.validator.addMethod(\"letterswithbasicpunc\", function(value, element) {\n\treturn this.optional(element) || /^[a-z\\-.,()'\\\"\\s]+$/i.test(value);\n}, \"Letters or punctuation only please\");\n\njQuery.validator.addMethod(\"alphanumeric\", function(value, element) {\n\treturn this.optional(element) || /^\\w+$/i.test(value);\n}, \"Letters, numbers, and underscores only please\");\n\njQuery.validator.addMethod(\"lettersonly\", function(value, element) {\n\treturn this.optional(element) || /^[a-z]+$/i.test(value);\n}, \"Letters only please\");\n\njQuery.validator.addMethod(\"nowhitespace\", function(value, element) {\n\treturn this.optional(element) || /^\\S+$/i.test(value);\n}, \"No white space please\");\n\njQuery.validator.addMethod(\"ziprange\", function(value, element) {\n\treturn this.optional(element) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test(value);\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx\");\n\njQuery.validator.addMethod(\"zipcodeUS\", function(value, element) {\n\treturn this.optional(element) || /\\d{5}-\\d{4}$|^\\d{5}$/.test(value)\n}, \"The specified US ZIP Code is invalid\");\n\njQuery.validator.addMethod(\"integer\", function(value, element) {\n\treturn this.optional(element) || /^-?\\d+$/.test(value);\n}, \"A positive or negative non-decimal number please\");\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name jQuery.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\njQuery.validator.addMethod(\"vinUS\", function(v) {\n\tif (v.length != 17) {\n\t\treturn false;\n\t}\n\tvar i, n, d, f, cd, cdv;\n\tvar LL = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"J\",\"K\",\"L\",\"M\",\"N\",\"P\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"];\n\tvar VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];\n\tvar FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];\n\tvar rs = 0;\n\tfor(i = 0; i < 17; i++){\n\t\tf = FL[i];\n\t\td = v.slice(i,i+1);\n\t\tif (i == 8) {\n\t\t\tcdv = d;\n\t\t}\n\t\tif (!isNaN(d)) {\n\t\t\td *= f;\n\t\t} else {\n\t\t\tfor (n = 0; n < LL.length; n++) {\n\t\t\t\tif (d.toUpperCase() === LL[n]) {\n\t\t\t\t\td = VL[n];\n\t\t\t\t\td *= f;\n\t\t\t\t\tif (isNaN(cdv) && n == 8) {\n\t\t\t\t\t\tcdv = LL[n];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trs += d;\n\t}\n\tcd = rs % 11;\n\tif (cd == 10) {\n\t\tcd = \"X\";\n\t}\n\tif (cd == cdv) {\n\t\treturn true;\n\t}\n\treturn false;\n}, \"The specified vehicle identification number (VIN) is invalid.\");\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example jQuery.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example jQuery.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example jQuery.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name jQuery.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\njQuery.validator.addMethod(\"dateITA\", function(value, element) {\n\tvar check = false;\n\tvar re = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\n\tif( re.test(value)){\n\t\tvar adata = value.split('/');\n\t\tvar gg = parseInt(adata[0],10);\n\t\tvar mm = parseInt(adata[1],10);\n\t\tvar aaaa = parseInt(adata[2],10);\n\t\tvar xdata = new Date(aaaa,mm-1,gg);\n\t\tif ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )\n\t\t\tcheck = true;\n\t\telse\n\t\t\tcheck = false;\n\t} else\n\t\tcheck = false;\n\treturn this.optional(element) || check;\n}, \"Please enter a correct date\");\n\njQuery.validator.addMethod(\"dateNL\", function(value, element) {\n\treturn this.optional(element) || /^\\d\\d?[\\.\\/-]\\d\\d?[\\.\\/-]\\d\\d\\d?\\d?$/.test(value);\n}, \"Vul hier een geldige datum in.\");\n\njQuery.validator.addMethod(\"time\", function(value, element) {\n\treturn this.optional(element) || /^([0-1]\\d|2[0-3]):([0-5]\\d)$/.test(value);\n}, \"Please enter a valid time, between 00:00 and 23:59\");\njQuery.validator.addMethod(\"time12h\", function(value, element) {\n\treturn this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\\d){0,2}(\\ [AP]M))$/i.test(value);\n}, \"Please enter a valid time, between 00:00 am and 12:00 pm\");\n\n/**\n * matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\njQuery.validator.addMethod(\"phoneUS\", function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+/g, \"\");\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(\\+?1-?)?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})-?[2-9]\\d{2}-?\\d{4}$/);\n}, \"Please specify a valid phone number\");\n\njQuery.validator.addMethod('phoneUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\(|\\)|\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:(?:\\d{5}\\)?\\s?\\d{4,5})|(?:\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3}))|(?:\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4})|(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}))$/);\n}, 'Please specify a valid phone number');\n\njQuery.validator.addMethod('mobileUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[45789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/);\n}, 'Please specify a valid mobile number');\n\n//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\njQuery.validator.addMethod('phonesUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[45789]\\d{8}|624\\d{6})))$/);\n}, 'Please specify a valid uk phone number');\n// On the above three UK functions, do the following server side processing:\n//  Compare with ^((?:00\\s?|\\+)(44)\\s?)?\\(?0?(?:\\)\\s?)?([1-9]\\d{1,4}\\)?[\\d\\s]+)\n//  Extract $2 and set $prefix to '+44<space>' if $2 is '44' otherwise set $prefix to '0'\n//  Extract $3 and remove spaces and parentheses. Phone number is combined $2 and $3.\n// A number of very detailed GB telephone number RegEx patterns can also be found at:\n// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_UK_Telephone_Numbers\n\n//Matches UK postcode. based on http://snipplr.com/view/3152/postcode-validation/\njQuery.validator.addMethod('postcodeUK', function(postcode, element) {\n\tpostcode = (postcode.toUpperCase()).replace(/\\s+/g,'');\n\treturn this.optional(element) || postcode.match(/^([^QZ][^IJZ]{0,1}\\d{1,2})(\\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV]\\d[ABCDEFGHJKSTUW])(\\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV][^IJZ]\\d[ABEHMNPRVWXY])(\\d[^CIKMOV]{2})$/) || postcode.match(/^(GIR)(0AA)$/) || postcode.match(/^(BFPO)(\\d{1,4})$/) || postcode.match(/^(BFPO)(C\\/O\\d{1,3})$/);\n}, 'Please specify a valid postcode');\n\n// TODO check if value starts with <, otherwise don't try stripping anything\njQuery.validator.addMethod(\"strippedminlength\", function(value, element, param) {\n\treturn jQuery(value).text().length >= param;\n}, jQuery.validator.format(\"Please enter at least {0} characters\"));\n\n// same as email, but TLD is optional\njQuery.validator.addMethod(\"email2\", function(value, element, param) {\n\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i.test(value);\n}, jQuery.validator.messages.email);\n\n// same as url, but TLD is optional\njQuery.validator.addMethod(\"url2\", function(value, element, param) {\n\treturn this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n}, jQuery.validator.messages.url);\n\n// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\njQuery.validator.addMethod(\"creditcardtypes\", function(value, element, param) {\n\tif (/[^0-9-]+/.test(value)) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace(/\\D/g, \"\");\n\n\tvar validTypes = 0x0000;\n\n\tif (param.mastercard)\n\t\tvalidTypes |= 0x0001;\n\tif (param.visa)\n\t\tvalidTypes |= 0x0002;\n\tif (param.amex)\n\t\tvalidTypes |= 0x0004;\n\tif (param.dinersclub)\n\t\tvalidTypes |= 0x0008;\n\tif (param.enroute)\n\t\tvalidTypes |= 0x0010;\n\tif (param.discover)\n\t\tvalidTypes |= 0x0020;\n\tif (param.jcb)\n\t\tvalidTypes |= 0x0040;\n\tif (param.unknown)\n\t\tvalidTypes |= 0x0080;\n\tif (param.all)\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\n\tif (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0002 && /^(4)/.test(value)) { //visa\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub\n\t\treturn value.length == 14;\n\t}\n\tif (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0080) { //unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\");\n\njQuery.validator.addMethod(\"ipv4\", function(value, element, param) {\n\t\treturn this.optional(element) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test(value);\n}, \"Please enter a valid IP v4 address.\");\n\njQuery.validator.addMethod(\"ipv6\", function(value, element, param) {\n\t\treturn this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);\n}, \"Please enter a valid IP v6 address.\");\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example jQuery.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example jQuery.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name jQuery.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\njQuery.validator.addMethod(\"pattern\", function(value, element, param) {\n\tif (this.optional(element)) {\n\t\treturn true;\n\t}\n\tif (typeof param === 'string') {\n\t\tparam = new RegExp('^(?:' + param + ')$');\n\t}\n\treturn param.test(value);\n}, \"Invalid format.\");\n\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *  <input class=\"productinfo\" name=\"partnumber\">\n *  <input class=\"productinfo\" name=\"description\">\n *\n *  ...will validate unless at least one of them is filled.\n *\n * partnumber:  {require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n */\njQuery.validator.addMethod(\"require_from_group\", function(value, element, options) {\n\tvar validator = this;\n\tvar selector = options[1];\n\tvar validOrNot = $(selector, element.form).filter(function() {\n\t\treturn validator.elementValue(this);\n\t}).length >= options[0];\n\n\tif(!$(element).data('being_validated')) {\n\t\tvar fields = $(selector, element.form);\n\t\tfields.data('being_validated', true);\n\t\tfields.valid();\n\t\tfields.data('being_validated', false);\n\t}\n\treturn validOrNot;\n}, jQuery.format(\"Please fill at least {0} of these fields.\"));\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *  <input class=\"productinfo\" name=\"partnumber\">\n *  <input class=\"productinfo\" name=\"description\">\n *  <input class=\"productinfo\" name=\"color\">\n *\n *  ...will validate unless either at least two of them are filled,\n *  OR none of them are.\n *\n * partnumber:  {skip_or_fill_minimum: [2,\".productinfo\"]},\n *  description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:       {skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n */\njQuery.validator.addMethod(\"skip_or_fill_minimum\", function(value, element, options) {\n\tvar validator = this;\n\n\tnumberRequired = options[0];\n\tselector = options[1];\n\tvar numberFilled = $(selector, element.form).filter(function() {\n\t\treturn validator.elementValue(this);\n\t}).length;\n\tvar valid = numberFilled >= numberRequired || numberFilled === 0;\n\n\tif(!$(element).data('being_validated')) {\n\t\tvar fields = $(selector, element.form);\n\t\tfields.data('being_validated', true);\n\t\tfields.valid();\n\t\tfields.data('being_validated', false);\n\t}\n\treturn valid;\n}, jQuery.format(\"Please either skip these fields or fill at least {0} of them.\"));\n\n// Accept a value from a file input based on a required mimetype\njQuery.validator.addMethod(\"accept\", function(value, element, param) {\n\t// Split mime on commas incase we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace(/,/g, '|') : \"image/*\",\n\toptionalValue = this.optional(element),\n\ti, file;\n\n\t// Element is optional\n\tif(optionalValue) {\n\t\treturn optionalValue;\n\t}\n\n\tif($(element).attr(\"type\") === \"file\") {\n\t\t// If we are using a wildcard, make it regex friendly\n\t\ttypeParam = typeParam.replace(\"*\", \".*\");\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif(element.files && element.files.length) {\n\t\t\tfor(i = 0; i < element.files.length; i++) {\n\t\t\t\tfile = element.files[i];\n\n\t\t\t\t// Grab the mimtype from the loaded file, verify it matches\n\t\t\t\tif(!file.type.match(new RegExp( \".?(\" + typeParam + \")$\", \"i\"))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, jQuery.format(\"Please enter a value with a valid mimetype.\"));\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\njQuery.validator.addMethod(\"extension\", function(value, element, param) {\n\tparam = typeof param === \"string\" ? param.replace(/,/g, '|') : \"png|jpe?g|gif\";\n\treturn this.optional(element) || value.match(new RegExp(\".(\" + param + \")$\", \"i\"));\n}, jQuery.format(\"Please enter a value with a valid extension.\"));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.js",
    "content": "/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */\n\n(function($) {\n\n$.extend($.fn, {\n\t// http://docs.jquery.com/Plugins/Validation/validate\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can't chain anyway\n\t\tif (!this.length) {\n\t\t\tif (options && options.debug && window.console) {\n\t\t\t\tconsole.warn( \"nothing selected, can't validate, returning nothing\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data(this[0], 'validator');\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr('novalidate', 'novalidate');\n\n\t\tvalidator = new $.validator( options, this[0] );\n\t\t$.data(this[0], 'validator', validator);\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function(ev) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = ev.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $(ev.target).hasClass('cancel') ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif (validator.submitButton) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $(\"<input type='hidden'/>\").attr(\"name\", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif (validator.submitButton) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/valid\n\tvalid: function() {\n\t\tif ( $(this[0]).is('form')) {\n\t\t\treturn this.validate().form();\n\t\t} else {\n\t\t\tvar valid = true;\n\t\t\tvar validator = $(this[0].form).validate();\n\t\t\tthis.each(function() {\n\t\t\t\tvalid &= validator.element(this);\n\t\t\t});\n\t\t\treturn valid;\n\t\t}\n\t},\n\t// attributes: space seperated list of attributes to retrieve and remove\n\tremoveAttrs: function(attributes) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each(attributes.split(/\\s/), function(index, value) {\n\t\t\tresult[value] = $element.attr(value);\n\t\t\t$element.removeAttr(value);\n\t\t});\n\t\treturn result;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/rules\n\trules: function(command, argument) {\n\t\tvar element = this[0];\n\n\t\tif (command) {\n\t\t\tvar settings = $.data(element.form, 'validator').settings;\n\t\t\tvar staticRules = settings.rules;\n\t\t\tvar existingRules = $.validator.staticRules(element);\n\t\t\tswitch(command) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\n\t\t\t\tstaticRules[element.name] = existingRules;\n\t\t\t\tif (argument.messages) {\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif (!argument) {\n\t\t\t\t\tdelete staticRules[element.name];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tvar filtered = {};\n\t\t\t\t$.each(argument.split(/\\s/), function(index, method) {\n\t\t\t\t\tfiltered[method] = existingRules[method];\n\t\t\t\t\tdelete existingRules[method];\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tvar data = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.metadataRules(element),\n\t\t\t$.validator.classRules(element),\n\t\t\t$.validator.attributeRules(element),\n\t\t\t$.validator.staticRules(element)\n\t\t), element);\n\n\t\t// make sure required is at front\n\t\tif (data.required) {\n\t\t\tvar param = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend({required: param}, data);\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend($.expr[\":\"], {\n\t// http://docs.jquery.com/Plugins/Validation/blank\n\tblank: function(a) {return !$.trim(\"\" + a.value);},\n\t// http://docs.jquery.com/Plugins/Validation/filled\n\tfilled: function(a) {return !!$.trim(\"\" + a.value);},\n\t// http://docs.jquery.com/Plugins/Validation/unchecked\n\tunchecked: function(a) {return !a.checked;}\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n$.validator.format = function(source, params) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray(arguments);\n\t\t\targs.unshift(source);\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray(arguments).slice(1);\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each(params, function(i, n) {\n\t\tsource = source.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), n);\n\t});\n\treturn source;\n};\n\n$.extend($.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function(element, event) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\n\t\t\t}\n\t\t},\n\t\tonfocusout: function(element, event) {\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonkeyup: function(element, event) {\n\t\t\tif ( event.which === 9 && this.elementValue(element) === '' ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastActive ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonclick: function(element, event) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t\t// or option elements, check parent select in that case\n\t\t\telse if (element.parentNode.name in this.submitted) {\n\t\t\t\tthis.element(element.parentNode);\n\t\t\t}\n\t\t},\n\t\thighlight: function(element, errorClass, validClass) {\n\t\t\tif (element.type === 'radio') {\n\t\t\t\tthis.findByName(element.name).addClass(errorClass).removeClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).addClass(errorClass).removeClass(validClass);\n\t\t\t}\n\t\t},\n\t\tunhighlight: function(element, errorClass, validClass) {\n\t\t\tif (element.type === 'radio') {\n\t\t\t\tthis.findByName(element.name).removeClass(errorClass).addClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).removeClass(errorClass).addClass(validClass);\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults\n\tsetDefaults: function(settings) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tcreditcard: \"Please enter a valid credit card number.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\n\t\tminlength: $.validator.format(\"Please enter at least {0} characters.\"),\n\t\trangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\n\t\trange: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n\t\tmax: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\n\t\tmin: $.validator.format(\"Please enter a value greater than or equal to {0}.\")\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = (this.groups = {});\n\t\t\t$.each(this.settings.groups, function(key, value) {\n\t\t\t\t$.each(value.split(/\\s/), function(index, name) {\n\t\t\t\t\tgroups[name] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\tvar rules = this.settings.rules;\n\t\t\t$.each(rules, function(key, value) {\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\n\t\t\t});\n\n\t\t\tfunction delegate(event) {\n\t\t\t\tvar validator = $.data(this[0].form, \"validator\"),\n\t\t\t\t\teventType = \"on\" + event.type.replace(/^validate/, \"\");\n\t\t\t\tif (validator.settings[eventType]) {\n\t\t\t\t\tvalidator.settings[eventType].call(validator, this[0], event);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this.currentForm)\n\t\t\t\t.validateDelegate(\":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'] \",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\n\t\t\t\t.validateDelegate(\"[type='radio'], [type='checkbox'], select, option\", \"click\", delegate);\n\n\t\t\tif (this.settings.invalidHandler) {\n\t\t\t\t$(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler);\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/form\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend(this.submitted, this.errorMap);\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\n\t\t\tif (!this.valid()) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n\t\t\t\tthis.check( elements[i] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/element\n\t\telement: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\t\t\tthis.lastElement = element;\n\t\t\tthis.prepareElement( element );\n\t\t\tthis.currentElements = $(element);\n\t\t\tvar result = this.check( element ) !== false;\n\t\t\tif (result) {\n\t\t\t\tdelete this.invalid[element.name];\n\t\t\t} else {\n\t\t\t\tthis.invalid[element.name] = true;\n\t\t\t}\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/showErrors\n\t\tshowErrors: function(errors) {\n\t\t\tif(errors) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[name],\n\t\t\t\t\t\telement: this.findByName(name)[0]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function(element) {\n\t\t\t\t\treturn !(element.name in errors);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.settings.showErrors) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/resetForm\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements().removeClass( this.settings.errorClass ).removeData( \"previousValue\" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength(this.invalid);\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\tvar count = 0;\n\t\t\tfor ( var i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.addWrapper( this.toHide ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\n\t\t\t\t\t.filter(\":visible\")\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger(\"focusin\");\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep(this.errorList, function(n) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $(this.currentForm)\n\t\t\t.find(\"input, select, textarea\")\n\t\t\t.not(\":submit, :reset, :image, [disabled]\")\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter(function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this);\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[this.name] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[0];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.replace(' ', '.');\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $([]);\n\t\t\tthis.toHide = $([]);\n\t\t\tthis.currentElements = $([]);\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor(element);\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar type = $(element).attr('type'),\n\t\t\t\tval = $(element).val();\n\n\t\t\tif ( type === 'radio' || type === 'checkbox' ) {\n\t\t\t\treturn $('input[name=\"' + $(element).attr('name') + '\"]:checked').val();\n\t\t\t}\n\n\t\t\tif ( typeof val === 'string' ) {\n\t\t\t\treturn val.replace(/\\r/g, \"\");\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $(element).rules();\n\t\t\tvar dependencyMismatch = false;\n\t\t\tvar val = this.elementValue(element);\n\t\t\tvar result;\n\n\t\t\tfor (var method in rules ) {\n\t\t\t\tvar rule = { method: method, parameters: rules[method] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log(\"exception occured when checking element \" + element.id + \", check the '\" + rule.method + \"' method\", e);\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (dependencyMismatch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength(rules) ) {\n\t\t\t\tthis.successList.push(element);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's \"messages\" metadata\n\t\tcustomMetaMessage: function(element, method) {\n\t\t\tif (!$.metadata) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar meta = this.settings.meta ? $(element).metadata()[this.settings.meta] : $(element).metadata();\n\t\t\treturn meta && meta.messages && meta.messages[method];\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\tcustomDataMessage: function(element, method) {\n\t\t\treturn $(element).data('msg-' + method.toLowerCase()) || (element.attributes && $(element).attr('data-msg-' + method.toLowerCase()));\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[name];\n\t\t\treturn m && (m.constructor === String ? m : m[method]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor(var i = 0; i < arguments.length; i++) {\n\t\t\t\tif (arguments[i] !== undefined) {\n\t\t\t\t\treturn arguments[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\tthis.customMetaMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[method],\n\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\n\t\t\t} else if (theregex.test(message)) {\n\t\t\t\tmessage = $.validator.format(message.replace(theregex, '{$1}'), rule.parameters);\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element\n\t\t\t});\n\n\t\t\tthis.errorMap[element.name] = message;\n\t\t\tthis.submitted[element.name] = message;\n\t\t},\n\n\t\taddWrapper: function(toToggle) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements;\n\t\t\tfor ( i = 0; this.errorList[i]; i++ ) {\n\t\t\t\tvar error = this.errorList[i];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif (this.settings.success) {\n\t\t\t\tfor ( i = 0; this.successList[i]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.settings.unhighlight) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $(this.errorList).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function(element, message) {\n\t\t\tvar label = this.errorsFor( element );\n\t\t\tif ( label.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\tlabel.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// check if we have a generated label, replace the message then\n\t\t\t\tif ( label.attr(\"generated\") ) {\n\t\t\t\t\tlabel.html(message);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// create label\n\t\t\t\tlabel = $(\"<\" + this.settings.errorElement + \"/>\")\n\t\t\t\t\t.attr({\"for\":  this.idOrName(element), generated: true})\n\t\t\t\t\t.addClass(this.settings.errorClass)\n\t\t\t\t\t.html(message || \"\");\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tlabel = label.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\n\t\t\t\t}\n\t\t\t\tif ( !this.labelContainer.append(label).length ) {\n\t\t\t\t\tif ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement(label, $(element) );\n\t\t\t\t\t} else {\n\t\t\t\t\tlabel.insertAfter(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\tlabel.text(\"\");\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\tlabel.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( label, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add(label);\n\t\t},\n\n\t\terrorsFor: function(element) {\n\t\t\tvar name = this.idOrName(element);\n\t\t\treturn this.errors().filter(function() {\n\t\t\t\treturn $(this).attr('for') === name;\n\t\t\t});\n\t\t},\n\n\t\tidOrName: function(element) {\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n\t\t},\n\n\t\tvalidationTargetFor: function(element) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif (this.checkable(element)) {\n\t\t\t\telement = this.findByName( element.name ).not(this.settings.ignore)[0];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn (/radio|checkbox/i).test(element.type);\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $(this.currentForm).find('[name=\"' + name + '\"]');\n\t\t},\n\n\t\tgetLength: function(value, element) {\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\n\t\t\tcase 'select':\n\t\t\t\treturn $(\"option:selected\", element).length;\n\t\t\tcase 'input':\n\t\t\t\tif( this.checkable( element) ) {\n\t\t\t\t\treturn this.findByName(element.name).filter(':checked').length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function(param, element) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function(param, element) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function(param, element) {\n\t\t\t\treturn !!$(param, element.form).length;\n\t\t\t},\n\t\t\t\"function\": function(param, element) {\n\t\t\t\treturn param(element);\n\t\t\t}\n\t\t},\n\n\t\toptional: function(element) {\n\t\t\tvar val = this.elementValue(element);\n\t\t\treturn !$.validator.methods.required.call(this, val, element) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function(element) {\n\t\t\tif (!this.pending[element.name]) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[element.name] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function(element, valid) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif (this.pendingRequest < 0) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[element.name];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$(this.currentForm).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function(element) {\n\t\t\treturn $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: {required: true},\n\t\temail: {email: true},\n\t\turl: {url: true},\n\t\tdate: {date: true},\n\t\tdateISO: {dateISO: true},\n\t\tnumber: {number: true},\n\t\tdigits: {digits: true},\n\t\tcreditcard: {creditcard: true}\n\t},\n\n\taddClassRules: function(className, rules) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[className] = rules;\n\t\t} else {\n\t\t\t$.extend(this.classRuleSettings, className);\n\t\t}\n\t},\n\n\tclassRules: function(element) {\n\t\tvar rules = {};\n\t\tvar classes = $(element).attr('class');\n\t\tif ( classes ) {\n\t\t\t$.each(classes.split(' '), function() {\n\t\t\t\tif (this in $.validator.classRuleSettings) {\n\t\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function(element) {\n\t\tvar rules = {};\n\t\tvar $element = $(element);\n\n\t\tfor (var method in $.validator.methods) {\n\t\t\tvar value;\n\n\t\t\t// support for <input required> in both html5 and older browsers\n\t\t\tif (method === 'required') {\n\t\t\t\tvalue = $element.get(0).getAttribute(method);\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif (value === \"\") {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr(method);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\trules[method] = value;\n\t\t\t} else if ($element[0].getAttribute(\"type\") === method) {\n\t\t\t\trules[method] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\n\t\tif (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tmetadataRules: function(element) {\n\t\tif (!$.metadata) {\n\t\t\treturn {};\n\t\t}\n\n\t\tvar meta = $.data(element.form, 'validator').settings.meta;\n\t\treturn meta ?\n\t\t\t$(element).metadata()[meta] :\n\t\t\t$(element).metadata();\n\t},\n\n\tstaticRules: function(element) {\n\t\tvar rules = {};\n\t\tvar validator = $.data(element.form, 'validator');\n\t\tif (validator.settings.rules) {\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function(rules, element) {\n\t\t// handle dependency check\n\t\t$.each(rules, function(prop, val) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif (val === false) {\n\t\t\t\tdelete rules[prop];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (val.param || val.depends) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch (typeof val.depends) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tkeepRule = val.depends.call(element, element);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (keepRule) {\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each(rules, function(rule, parameter) {\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each(['minlength', 'maxlength', 'min', 'max'], function() {\n\t\t\tif (rules[this]) {\n\t\t\t\trules[this] = Number(rules[this]);\n\t\t\t}\n\t\t});\n\t\t$.each(['rangelength', 'range'], function() {\n\t\t\tif (rules[this]) {\n\t\t\t\trules[this] = [Number(rules[this][0]), Number(rules[this][1])];\n\t\t\t}\n\t\t});\n\n\t\tif ($.validator.autoCreateRanges) {\n\t\t\t// auto-create ranges\n\t\t\tif (rules.min && rules.max) {\n\t\t\t\trules.range = [rules.min, rules.max];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif (rules.minlength && rules.maxlength) {\n\t\t\t\trules.rangelength = [rules.minlength, rules.maxlength];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\t// To support custom messages in metadata ignore rule methods titled \"messages\"\n\t\tif (rules.messages) {\n\t\t\tdelete rules.messages;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function(data) {\n\t\tif( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each(data.split(/\\s/), function() {\n\t\t\t\ttransformed[this] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/addMethod\n\taddMethod: function(name, method, message) {\n\t\t$.validator.methods[name] = method;\n\t\t$.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\t\tif (method.length < 3) {\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/required\n\t\trequired: function(value, element, param) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend(param, element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $(element).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\treturn this.getLength(value, element) > 0;\n\t\t\t}\n\t\t\treturn $.trim(value).length > 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/remote\n\t\tremote: function(value, element, param) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue(element);\n\t\t\tif (!this.settings.messages[element.name] ) {\n\t\t\t\tthis.settings.messages[element.name] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && {url:param} || param;\n\n\t\t\tif ( this.pending[element.name] ) {\n\t\t\t\treturn \"pending\";\n\t\t\t}\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvar validator = this;\n\t\t\tthis.startRequest(element);\n\t\t\tvar data = {};\n\t\t\tdata[element.name] = value;\n\t\t\t$.ajax($.extend(true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\n\t\t\t\t\tvar valid = response === true || response === \"true\";\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tvar submitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement(element);\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push(element);\n\t\t\t\t\t\tdelete validator.invalid[element.name];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errors = {};\n\t\t\t\t\t\tvar message = response || validator.defaultMessage( element, \"remote\" );\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\n\t\t\t\t\t\tvalidator.invalid[element.name] = true;\n\t\t\t\t\t\tvalidator.showErrors(errors);\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest(element, valid);\n\t\t\t\t}\n\t\t\t}, param));\n\t\t\treturn \"pending\";\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/minlength\n\t\tminlength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/maxlength\n\t\tmaxlength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/rangelength\n\t\trangelength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/min\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/max\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/range\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/email\n\t\temail: function(value, element) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/url\n\t\turl: function(value, element) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/date\n\t\tdate: function(value, element) {\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value));\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/dateISO\n\t\tdateISO: function(value, element) {\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/number\n\t\tnumber: function(value, element) {\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/digits\n\t\tdigits: function(value, element) {\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/creditcard\n\t\t// based on http://en.wikipedia.org/wiki/Luhn\n\t\tcreditcard: function(value, element) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif (/[^0-9 \\-]+/.test(value)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false;\n\n\t\t\tvalue = value.replace(/\\D/g, \"\");\n\n\t\t\tfor (var n = value.length - 1; n >= 0; n--) {\n\t\t\t\tvar cDigit = value.charAt(n);\n\t\t\t\tnDigit = parseInt(cDigit, 10);\n\t\t\t\tif (bEven) {\n\t\t\t\t\tif ((nDigit *= 2) > 9) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn (nCheck % 10) === 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/equalTo\n\t\tequalTo: function(value, element, param) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $(param);\n\t\t\tif (this.settings.onfocusout) {\n\t\t\t\ttarget.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function() {\n\t\t\t\t\t$(element).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t}\n\n\t}\n\n});\n\n// deprecated, use $.validator.format instead\n$.format = $.validator.format;\n\n}(jQuery));\n\n// ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n(function($) {\n\tvar pendingRequests = {};\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter(function(settings, _, xhr) {\n\t\t\tvar port = settings.port;\n\t\t\tif (settings.mode === \"abort\") {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = xhr;\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Proxy ajax\n\t\tvar ajax = $.ajax;\n\t\t$.ajax = function(settings) {\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif (mode === \"abort\") {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\treturn (pendingRequests[port] = ajax.apply(this, arguments));\n\t\t\t}\n\t\t\treturn ajax.apply(this, arguments);\n\t\t};\n\t}\n}(jQuery));\n\n// provides cross-browser focusin and focusout events\n// IE has native support, in other browsers, use event caputuring (neither bubbles)\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n(function($) {\n\t// only implement if not provided by jQuery core (since 1.4)\n\t// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs\n\tif (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {\n\t\t$.each({\n\t\t\tfocus: 'focusin',\n\t\t\tblur: 'focusout'\n\t\t}, function( original, fix ){\n\t\t\t$.event.special[fix] = {\n\t\t\t\tsetup:function() {\n\t\t\t\t\tthis.addEventListener( original, handler, true );\n\t\t\t\t},\n\t\t\t\tteardown:function() {\n\t\t\t\t\tthis.removeEventListener( original, handler, true );\n\t\t\t\t},\n\t\t\t\thandler: function(e) {\n\t\t\t\t\tvar args = arguments;\n\t\t\t\t\targs[0] = $.event.fix(e);\n\t\t\t\t\targs[0].type = fix;\n\t\t\t\t\treturn $.event.handle.apply(this, args);\n\t\t\t\t}\n\t\t\t};\n\t\t\tfunction handler(e) {\n\t\t\t\te = $.event.fix(e);\n\t\t\t\te.type = fix;\n\t\t\t\treturn $.event.handle.call(this, e);\n\t\t\t}\n\t\t});\n\t}\n\t$.extend($.fn, {\n\t\tvalidateDelegate: function(delegate, type, handler) {\n\t\t\treturn this.bind(type, function(event) {\n\t\t\t\tvar target = $(event.target);\n\t\t\t\tif (target.is(delegate)) {\n\t\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/grunt.js",
    "content": "/*global config:true, task:true*/\nmodule.exports = function(grunt) {\n\ngrunt.initConfig({\n\tpkg: '<json:package.json>',\n\tmeta: {\n\t\tbanner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +\n\t\t\t'<%= grunt.template.today(\"m/d/yyyy\") %>\\n' +\n\t\t\t'<%= pkg.homepage ? \"* \" + pkg.homepage + \"\\n\" : \"\" %>' +\n\t\t\t'* Copyright (c) <%= grunt.template.today(\"yyyy\") %> <%= pkg.author.name %>;' +\n\t\t\t' Licensed <%= _.pluck(pkg.licenses, \"type\").join(\", \") %> */'\n\t},\n\tconcat: {\n\t\t'dist/jquery.validate.js': ['<banner>', '<file_strip_banner:jquery.validate.js>'],\n\t\t'dist/additional-methods.js': ['<banner>', '<file_strip_banner:additional-methods.js>']\n\t},\n\tmin: {\n\t\t'dist/jquery.validate.min.js': ['<banner>', 'dist/jquery.validate.js'],\n\t\t'dist/additional-methods.min.js': ['<banner>', 'dist/additional-methods.js']\n\t},\n\tzip: {\n\t\tdist: {\n\t\t\tsrc: [\n\t\t\t\t'dist/additional-methods.js',\n\t\t\t\t'dist/additional-methods.min.js',\n\t\t\t\t'dist/jquery.validate.js',\n\t\t\t\t'dist/jquery.validate.min.js',\n\t\t\t\t'README.md',\n\t\t\t\t'changelog.txt',\n\t\t\t\t'grunt.js',\n\t\t\t\t'package.json',\n\t\t\t\t'demo/**/*.*',\n\t\t\t\t'lib/**/*.*',\n\t\t\t\t'localization/**/*.*',\n\t\t\t\t'test/**/*.*'\n\t\t\t],\n\t\t\tdest: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip'\n\t\t}\n\t},\n\tqunit: {\n\t\tfiles: ['test/index.html']\n\t},\n\tlint: {\n\t\tfiles: ['jquery.validate.js']\n\t},\n\tjshint: {\n\t\toptions: {\n\t\t\tcurly: true,\n\t\t\teqeqeq: true,\n\t\t\timmed: true,\n\t\t\tlatedef: true,\n\t\t\tnewcap: true,\n\t\t\tnoarg: true,\n\t\t\tsub: true,\n\t\t\tundef: true,\n\t\t\teqnull: true,\n\t\t\tbrowser: true\n\t\t},\n\t\tglobals: {\n\t\t\tjQuery: true,\n\t\t\t$: true,\n\t\t\tconsole: true\n\t\t}\n\t}\n});\n\ngrunt.registerMultiTask('zip', 'Create a zip file for release', function() {\n\tvar files = grunt.file.expand(this.file.src);\n\t// grunt.log.writeln(require('util').inspect(files));\n\tgrunt.log.writeln(\"Creating zip file \" + this.file.dest);\n\n\tvar done = this.async();\n\n\tvar zipstream = require('zipstream');\n\tvar fs = require('fs');\n\n\tvar out = fs.createWriteStream(this.file.dest);\n\tvar zip = zipstream.createZip({ level: 1 });\n\n\tzip.pipe(out);\n\n\tfunction addFile() {\n\t\tif (!files.length) {\n\t\t\tzip.finalize(function(written) {\n\t\t\t\tgrunt.log.writeln(written + ' total bytes written');\n\t\t\t\tdone();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tvar file = files.shift();\n\t\tgrunt.log.verbose.writeln('Zipping ' + file);\n\t\tzip.addFile(fs.createReadStream(file), { name: file }, addFile);\n\t}\n\taddFile();\n});\n\ngrunt.registerTask('default', 'lint qunit');\ngrunt.registerTask('release', 'default concat min zip');\n\n};"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.3.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.3.2\n * http://jquery.com/\n *\n * Copyright (c) 2009 John Resig\n * Dual licensed under the MIT and GPL licenses.\n * http://docs.jquery.com/License\n *\n * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)\n * Revision: 6246\n */\n(function(){\n\nvar \n\t// Will speed up references to window, and allows munging its name.\n\twindow = this,\n\t// Will speed up references to undefined, and allows munging its name.\n\tundefined,\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\tjQuery = window.jQuery = window.$ = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#([\\w-]+)$/,\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\tthis.context = selector;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t// by name instead of ID\n\t\t\t\t\tif ( elem && elem.id != match[3] )\n\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\tvar ret = jQuery( elem || [] );\n\t\t\t\t\tret.context = document;\n\t\t\t\t\tret.selector = selector;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document ).ready( selector );\n\n\t\t// Make sure that old selector state is passed along\n\t\tif ( selector.selector && selector.context ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn this.setArray(jQuery.isArray( selector ) ?\n\t\t\tselector :\n\t\t\tjQuery.makeArray(selector));\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.3.2\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num === undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tArray.prototype.slice.call( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" )\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\telse if ( name )\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( typeof name === \"string\" )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text !== \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).clone();\n\n\t\t\tif ( this[0].parentNode )\n\t\t\t\twrap.insertBefore( this[0] );\n\n\t\t\twrap.map(function(){\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: [].push,\n\tsort: [].sort,\n\tsplice: [].splice,\n\n\tfind: function( selector ) {\n\t\tif ( this.length === 1 ) {\n\t\t\tvar ret = this.pushStack( [], \"find\", selector );\n\t\t\tret.length = 0;\n\t\t\tjQuery.find( selector, this[0], ret );\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery.unique(jQuery.map(this, function(elem){\n\t\t\t\treturn jQuery.find( selector, elem );\n\t\t\t})), \"find\", selector );\n\t\t}\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = this.ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\").replace(/^\\s*/, \"\")])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tvar orig = this.find(\"*\").andSelf(), i = 0;\n\n\t\t\tret.find(\"*\").andSelf().each(function(){\n\t\t\t\tif ( this.nodeName !== orig[i].nodeName )\n\t\t\t\t\treturn;\n\n\t\t\t\tvar events = jQuery.data( orig[i], \"events\" );\n\n\t\t\t\tfor ( var type in events ) {\n\t\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ti++;\n\t\t\t});\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, jQuery.grep(this, function(elem){\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}) ), \"filter\", selector );\n\t},\n\n\tclosest: function( selector ) {\n\t\tvar pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,\n\t\t\tcloser = 0;\n\n\t\treturn this.map(function(){\n\t\t\tvar cur = this;\n\t\t\twhile ( cur && cur.ownerDocument ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {\n\t\t\t\t\tjQuery.data(cur, \"closest\", closer);\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tcloser++;\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( typeof selector === \"string\" )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ), \"not\", selector );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn !!selector && this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\t\t\t\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif( jQuery.nodeName( elem, 'option' ) )\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( typeof value === \"number\" )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value === undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\") :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, +i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ),\n\t\t\t\"slice\", Array.prototype.slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tif ( this[0] ) {\n\t\t\tvar fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),\n\t\t\t\tscripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),\n\t\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( first )\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ )\n\t\t\t\t\tcallback.call( root(this[i], first), this.length > 1 || i > 0 ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) : fragment );\n\t\t\n\t\t\tif ( scripts )\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t}\n\n\t\treturn this;\n\t\t\n\t\tfunction root( elem, cur ) {\n\t\t\treturn table && jQuery.nodeName(elem, \"table\") && jQuery.nodeName(cur, \"tr\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy === \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n// exclude the following css properties to add px\nvar\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {},\n\ttoString = Object.prototype.toString;\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t\t!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && /\\S/.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.support.scriptEval )\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\telse\n\t\t\t\tscript.text = data;\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn typeof value === \"number\" && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames !== undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" )\n\t\t\t\t\treturn;\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra )\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tif ( extra === \"margin\" )\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\telse\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && !jQuery.support.opacity ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context, fragment ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" )\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\t// If a single string is passed in and it's a single tag\n\t\t// just do a createElement and skip the rest\n\t\tif ( !fragment && elems.length === 1 && typeof elems[0] === \"string\" ) {\n\t\t\tvar match = /^<(\\w+)\\s*\\/?>$/.exec(elems[0]);\n\t\t\tif ( match )\n\t\t\t\treturn [ context.createElement( match[1] ) ];\n\t\t}\n\n\t\tvar ret = [], scripts = [], div = context.createElement(\"div\");\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( typeof elem === \"number\" )\n\t\t\t\telem += '';\n\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = elem.replace(/^\\s+/, \"\").substring(0, 10).toLowerCase();\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\t!jQuery.support.htmlSerialize &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = /<tbody/i.test(elem),\n\t\t\t\t\t\ttbody = !tags.indexOf(\"<table\") && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && /^\\s/.test( elem ) )\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\t\t\t\t\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.nodeType )\n\t\t\t\tret.push( elem );\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 )\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn scripts;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && elem.parentNode )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name == \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\t\t\t\t\treturn attributeNode && attributeNode.specified\n\t\t\t\t\t\t? attributeNode.value\n\t\t\t\t\t\t: elem.nodeName.match(/(button|input|object|select|textarea)/i)\n\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t: elem.nodeName.match(/^(a|area)$/i) && elem.href\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\tif( i == null || typeof array === \"string\" || jQuery.isFunction(array) || array.setInterval )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( !jQuery.support.getAll ) {\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\n// Use of jQuery.browser is deprecated.\n// It's included for backwards compatibility and plugins,\n// although they should work to migrate away.\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [0,'0'])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ), name, selector );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector );\n\n\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\tret = ret.concat( elems );\n\t\t}\n\n\t\treturn this.pushStack( ret, name, selector );\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames, state ) {\n\t\tif( typeof state !== \"boolean\" )\n\t\t\tstate = !jQuery.className.has( this, classNames );\n\t\tjQuery.className[ state ? \"add\" : \"remove\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add([this]).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery(this).children().remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ){\n\t\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\n\t\t\tvar q = jQuery.data( elem, type );\n\t\n\t\t\tif ( !q || jQuery.isArray(data) )\n\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\t\t\telse if( data )\n\t\t\t\tq.push( data );\n\t\n\t\t}\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ){\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\t\t\n\t\tif( !type || type === \"fx\" )\n\t\t\tfn = queue[0];\n\t\t\t\n\t\tif( fn !== undefined )\n\t\t\tfn.call(elem);\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\tqueue: function(type, data){\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined )\n\t\t\treturn jQuery.queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\t\t\t\n\t\t\t if( type == \"fx\" && queue.length == 1 )\n\t\t\t\tqueue[0].call(this);\n\t\t});\n\t},\n\tdequeue: function(type){\n\t\treturn this.each(function(){\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t}\n});/*!\n * Sizzle CSS Selector Engine - v0.9.3\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString;\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 )\n\t\treturn [];\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, check, mode, extra, prune = true;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tchunker.lastIndex = 0;\n\t\n\twhile ( (m = chunker.exec(selector)) !== null ) {\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = RegExp.rightContext;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] )\n\t\t\t\t\tselector += parts.shift();\n\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar ret = seed ?\n\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\tSizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );\n\t\tset = Sizzle.filter( ret.expr, ret.set );\n\n\t\tif ( parts.length > 0 ) {\n\t\t\tcheckSet = makeArray(set);\n\t\t} else {\n\t\t\tprune = false;\n\t\t}\n\n\t\twhile ( parts.length ) {\n\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\tcur = \"\";\n\t\t\t} else {\n\t\t\t\tpop = parts.pop();\n\t\t\t}\n\n\t\t\tif ( pop == null ) {\n\t\t\t\tpop = context;\n\t\t\t}\n\n\t\t\tExpr.relative[ cur ]( checkSet, pop, isXML(context) );\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tthrow \"Syntax error, unrecognized expression: \" + (cur || selector);\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, context, results, seed );\n\n\t\tif ( sortOrder ) {\n\t\t\thasDuplicate = false;\n\t\t\tresults.sort(sortOrder);\n\n\t\t\tif ( hasDuplicate ) {\n\t\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.match[ type ].exec( expr )) ) {\n\t\t\tvar left = RegExp.leftContext;\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.match[ type ].exec( expr )) != null ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item;\n\t\t\t\tanyFound = false;\n\n\t\t\t\tif ( curLoop == result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr == old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tthrow \"Syntax error, unrecognized expression: \" + expr;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*_-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)(?:\\((['\"]*)((?:\\([^\\)]+\\)|[^\\2\\(\\)]*)+)\\2\\))?/\n\t},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag && !isXML ) {\n\t\t\t\tpart = part.toUpperCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = isXML ? part : part.toUpperCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace )\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\tfor ( var i = 0; curLoop[i] === false; i++ ){}\n\t\t\treturn curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] == \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] == \"even\" && \"2n\" || match[2] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( match[3].match(chunker).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toUpperCase() === \"BUTTON\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile (node = node.previousSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == 'first') return true;\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile (node = node.nextSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first == 1 && last == 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\treturn diff == 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first == 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue != check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes );\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.selectNode(a);\n\t\taRange.collapse(true);\n\t\tbRange.selectNode(b);\n\t\tbRange.collapse(true);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"form\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<input name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( !!document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n})();\n\nif ( document.querySelectorAll ) (function(){\n\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t// Safari can't handle uppercase or unicode characters when\n\t// in quirks mode.\n\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\treturn;\n\t}\n\t\n\tSizzle = function(query, context, extra, seed){\n\t\tcontext = context || document;\n\n\t\t// Only use querySelectorAll on non-XML documents\n\t\t// (ID selectors don't work in non-HTML documents)\n\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\ttry {\n\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t} catch(e){}\n\t\t}\n\t\t\n\t\treturn oldSizzle(query, context, extra, seed);\n\t};\n\n\tSizzle.find = oldSizzle.find;\n\tSizzle.filter = oldSizzle.filter;\n\tSizzle.selectors = oldSizzle.selectors;\n\tSizzle.matches = oldSizzle.matches;\n})();\n\nif ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\n\tvar div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\tif ( div.getElementsByClassName(\"e\").length === 0 )\n\t\treturn;\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 )\n\t\treturn;\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ){\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ) {\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ?  function(a, b){\n\treturn a.compareDocumentPosition(b) & 16;\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t!!elem.ownerDocument && isXML( elem.ownerDocument );\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.filter = Sizzle.filter;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\n\nSizzle.selectors.filters.hidden = function(elem){\n\treturn elem.offsetWidth === 0 || elem.offsetHeight === 0;\n};\n\nSizzle.selectors.filters.visible = function(elem){\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0;\n};\n\nSizzle.selectors.filters.animated = function(elem){\n\treturn jQuery.grep(jQuery.timers, function(fn){\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\njQuery.multiFilter = function( expr, elems, not ) {\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn Sizzle.matches(expr, elems);\n};\n\njQuery.dir = function( elem, dir ){\n\tvar matched = [], cur = elem[dir];\n\twhile ( cur && cur != document ) {\n\t\tif ( cur.nodeType == 1 )\n\t\t\tmatched.push( cur );\n\t\tcur = cur[dir];\n\t}\n\treturn matched;\n};\n\njQuery.nth = function(cur, result, dir, elem){\n\tresult = result || 1;\n\tvar num = 0;\n\n\tfor ( ; cur; cur = cur[dir] )\n\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\tbreak;\n\n\treturn cur;\n};\n\njQuery.sibling = function(n, elem){\n\tvar r = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\tr.push( n );\n\t}\n\n\treturn r;\n};\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && elem != window )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif ( data !== undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn );\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply(arguments.callee.elem, arguments) :\n\t\t\t\t\tundefined;\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar namespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\thandler.type = namespaces.slice().sort().join(\".\");\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\t\t\t\n\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\tjQuery.event.specialAll[type].setup.call(elem, data, namespaces);\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types === undefined || (typeof types === \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar namespaces = type.split(\".\");\n\t\t\t\t\ttype = namespaces.shift();\n\t\t\t\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( var handle in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( namespace.test(events[type][handle].type) )\n\t\t\t\t\t\t\t\t\tdelete events[type][handle];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\t\t\t\tjQuery.event.specialAll[type].teardown.call(elem, namespaces);\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem, bubbling ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event;\n\n\t\tif( !bubbling ){\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( this.global[type] )\n\t\t\t\t\tjQuery.each( jQuery.cache, function(){\n\t\t\t\t\t\tif ( this.events && this.events[type] )\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\t\t\t\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\t\t\t\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray(data);\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\tif ( handle )\n\t\t\thandle.apply( elem, data );\n\n\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\tif ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\tevent.result = false;\n\n\t\t// Trigger the native events (except for clicks on links)\n\t\tif ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\tthis.triggered = true;\n\t\t\ttry {\n\t\t\t\telem[ type ]();\n\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\tthis.triggered = false;\n\n\t\tif ( !event.isPropagationStopped() ) {\n\t\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\t\t\tif ( parent )\n\t\t\t\tjQuery.event.trigger(event, data, parent, true);\n\t\t}\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\t\t\n\t\t// Namespaced event handlers\n\t\tvar namespaces = event.type.split(\".\");\n\t\tevent.type = namespaces.shift();\n\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespaces.length && !event.exclusive;\n\t\t\n\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || namespace.test(handler.type) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tvar ret = handler.apply(this, arguments);\n\n\t\t\t\tif( ret !== undefined ){\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( event.isImmediatePropagationStopped() )\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function(event) {\n\t\tif ( event[expando] )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ){\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\tproxy = proxy || function(){ return fn.apply(this, arguments); };\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: bindReady,\n\t\t\tteardown: function() {}\n\t\t}\n\t},\n\t\n\tspecialAll: {\n\t\tlive: {\n\t\t\tsetup: function( selector, namespaces ){\n\t\t\t\tjQuery.event.add( this, namespaces[0], liveHandler );\n\t\t\t},\n\t\t\tteardown:  function( namespaces ){\n\t\t\t\tif ( namespaces.length ) {\n\t\t\t\t\tvar remove = 0, name = RegExp(\"(^|\\\\.)\" + namespaces[0] + \"(\\\\.|$)\");\n\t\t\t\t\t\n\t\t\t\t\tjQuery.each( (jQuery.data(this, \"events\").live || {}), function(){\n\t\t\t\t\t\tif ( name.test(this.type) )\n\t\t\t\t\t\t\tremove++;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif ( remove < 1 )\n\t\t\t\t\t\tjQuery.event.remove( this, namespaces[0], liveHandler );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.Event = function( src ){\n\t// Allow instantiation without the 'new' keyword\n\tif( !this.preventDefault )\n\t\treturn new jQuery.Event(src);\n\t\n\t// Event object\n\tif( src && src.type ){\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t}else\n\t\tthis.type = src;\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\t\n\t// Mark it as fixed\n\tthis[expando] = true;\n};\n\nfunction returnFalse(){\n\treturn false;\n}\nfunction returnTrue(){\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if preventDefault exists run it on the original event\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if stopPropagation exists run it on the original event\n\t\tif (e.stopPropagation)\n\t\t\te.stopPropagation();\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation:function(){\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != this )\n\t\ttry { parent = parent.parentNode; }\n\t\tcatch(e) { parent = this; }\n\t\n\tif( parent != this ){\n\t\t// set the correct event type\n\t\tevent.type = event.data;\n\t\t// handle event if we actually just moused on to a non sub-element\n\t\tjQuery.event.handle.apply( this, arguments );\n\t}\n};\n\t\njQuery.each({ \n\tmouseover: 'mouseenter', \n\tmouseout: 'mouseleave'\n}, function( orig, fix ){\n\tjQuery.event.special[ fix ] = {\n\t\tsetup: function(){\n\t\t\tjQuery.event.add( this, orig, withinElement, fix );\n\t\t},\n\t\tteardown: function(){\n\t\t\tjQuery.event.remove( this, orig, withinElement );\n\t\t}\n\t};\t\t\t   \n});\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif( this[0] ){\n\t\t\tvar event = jQuery.Event(type);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\t\t\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.mouseenter(fnOver).mouseleave(fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( fn );\n\n\t\treturn this;\n\t},\n\t\n\tlive: function( type, fn ){\n\t\tvar proxy = jQuery.event.proxy( fn );\n\t\tproxy.guid += this.selector + type;\n\n\t\tjQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );\n\n\t\treturn this;\n\t},\n\t\n\tdie: function( type, fn ){\n\t\tjQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ){\n\tvar check = RegExp(\"(^|\\\\.)\" + event.type + \"(\\\\.|$)\"),\n\t\tstop = true,\n\t\telems = [];\n\n\tjQuery.each(jQuery.data(this, \"events\").live || [], function(i, fn){\n\t\tif ( check.test(fn.type) ) {\n\t\t\tvar elem = jQuery(event.target).closest(fn.data)[0];\n\t\t\tif ( elem )\n\t\t\t\telems.push({ elem: elem, fn: fn });\n\t\t}\n\t});\n\n\telems.sort(function(a,b) {\n\t\treturn jQuery.data(a.elem, \"closest\") - jQuery.data(b.elem, \"closest\");\n\t});\n\t\n\tjQuery.each(elems, function(){\n\t\tif ( this.fn.call(this.elem, event, this.fn.data) === false )\n\t\t\treturn (stop = false);\n\t});\n\n\treturn stop;\n}\n\nfunction liveConvert(type, selector){\n\treturn [\"live\", type, selector.replace(/\\./g, \"`\").replace(/ /g, \"|\")].join(\".\");\n}\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document, jQuery );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera and webkit nightlies currently support this event\n\tif ( document.addEventListener ) {\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function(){\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", arguments.callee, false );\n\t\t\tjQuery.ready();\n\t\t}, false );\n\n\t// If IE event model is used\n\t} else if ( document.attachEvent ) {\n\t\t// ensure firing before onload,\n\t\t// maybe late but safe also for iframes\n\t\tdocument.attachEvent(\"onreadystatechange\", function(){\n\t\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t\tdocument.detachEvent( \"onreadystatechange\", arguments.callee );\n\t\t\t\tjQuery.ready();\n\t\t\t}\n\t\t});\n\n\t\t// If IE and not an iframe\n\t\t// continually check to see if the document is ready\n\t\tif ( document.documentElement.doScroll && window == window.top ) (function(){\n\t\t\tif ( jQuery.isReady ) return;\n\n\t\t\ttry {\n\t\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t\t} catch( error ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,\" +\n\t\"change,select,submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery( window ).bind( 'unload', function(){ \n\tfor ( var id in jQuery.cache )\n\t\t// Skip the window\n\t\tif ( id != 1 && jQuery.cache[ id ].handle )\n\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n}); \n(function(){\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = '   <link/><table></table><a href=\"/a\" style=\"color:red;float:left;opacity:.5;\">a</a><select><option>text</option></select><object><param/></object>';\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType == 3,\n\t\t\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\t\t\n\t\t// Make sure that you can get all elements in an <object> element\n\t\t// IE 7 always returns no results\n\t\tobjectAll: !!div.getElementsByTagName(\"object\")[0]\n\t\t\t.getElementsByTagName(\"*\").length,\n\t\t\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\t\t\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\t\t\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\t\t\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\topacity: a.style.opacity === \"0.5\",\n\t\t\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Will be defined later\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\t\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e){}\n\n\troot.insertBefore( script, root.firstChild );\n\t\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function(){\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", arguments.callee);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function(){\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\t});\n})();\n\nvar styleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\";\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\t\"float\": styleFloat,\n\tcssFloat: styleFloat,\n\tstyleFloat: styleFloat,\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\ttabindex: \"tabIndex\"\n};\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tif( callback )\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password|search/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n  \n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr:function(){\n\t\t\treturn window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = /^(\\w+:)?\\/\\/([^\\/?#]+)/.exec( s.url );\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\" && parts\n\t\t\t&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){\n\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The request was aborted, clear the interval and decrement jQuery.active\n\t\t\tif (xhr.readyState == 0) {\n\t\t\t\tif (ival) {\n\t\t\t\t\t// clear poll interval\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" ? \"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ? \"error\" :\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ? \"notmodified\" :\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout )\n\t\t\t\t\txhr.abort();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr && !requestDone )\n\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url];\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s != null is checked to keep backwards compatibility\n\t\tif( s && s.dataFilter )\n\t\t\tdata = s.dataFilter( data, type );\n\n\t\t// The filter can actually parse the response\n\t\tif( typeof data === \"string\" ){\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\tif ( type == \"script\" )\n\t\t\t\tjQuery.globalEval( data );\n\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type == \"json\" )\n\t\t\t\tdata = window[\"eval\"](\"(\" + data + \")\");\n\t\t}\n\t\t\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [ ];\n\n\t\tfunction add( key, value ){\n\t\t\ts[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n\t\t};\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( jQuery.isArray(a) || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( jQuery.isArray(a[j]) )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\tadd( j, this );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\tadd( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\nvar elemdisplay = {},\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\nfunction genFx( type, num ){\n\tvar obj = {};\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){\n\t\tobj[ this ] = type;\n\t});\n\treturn obj;\n}\n\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\t\n\t\t\t\tthis[i].style.display = old || \"\";\n\t\t\t\t\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar tagName = this[i].tagName, display;\n\t\t\t\t\t\n\t\t\t\t\tif ( elemdisplay[ tagName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ tagName ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\t\t\t\t\t\tif ( display === \"none\" )\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t\t\n\t\t\t\t\t\telemdisplay[ tagName ] = display;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = jQuery.data(this[i], \"olddisplay\") || \"\";\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" )\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn == null || bool ?\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t\t}) :\n\t\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType == 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\t\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( ( p == \"height\" || p == \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ){\n\tjQuery.fn[ name ] = function( speed, callback ){\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop == \"height\" || this.prop == \"width\" ) && this.elem.style )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( timerId );\n\t\t\t\t\ttimerId = undefined;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop == \"width\" || this.prop == \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tjQuery(this.elem).hide();\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t\t\t\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\tstep: {\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null )\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\telse\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t}\n\t}\n});\nif ( document.documentElement[\"getBoundingClientRect\"] )\n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tvar box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\t\treturn { top: top, left: left };\n\t};\nelse \n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\n\t\tvar elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView.getComputedStyle(elem, null),\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tcomputedStyle = defaultView.getComputedStyle(elem, null);\n\t\t\ttop -= elem.scrollTop, left -= elem.scrollLeft;\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop += elem.offsetTop, left += elem.offsetLeft;\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )\n\t\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" )\n\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" )\n\t\t\ttop  += body.offsetTop,\n\t\t\tleft += body.offsetLeft;\n\n\t\tif ( prevComputedStyle.position === \"fixed\" )\n\t\t\ttop  += Math.max(docElem.scrollTop, body.scrollTop),\n\t\t\tleft += Math.max(docElem.scrollLeft, body.scrollLeft);\n\n\t\treturn { top: top, left: left };\n\t};\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tif ( this.initialized ) return;\n\t\tvar body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,\n\t\t\thtml = '<div style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\"><div></div></div><table style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\" cellpadding=\"0\" cellspacing=\"0\"><tr><td></td></tr></table>';\n\n\t\trules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };\n\t\tfor ( prop in rules ) container.style[prop] = rules[prop];\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore(container, body.firstChild);\n\t\tinnerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tinnerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tbody.style.marginTop = '1px';\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);\n\t\tbody.style.marginTop = bodyMarginTop;\n\n\t\tbody.removeChild(container);\n\t\tthis.initialized = true;\n\t},\n\n\tbodyOffset: function(body) {\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset )\n\t\t\ttop  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,\n\t\t\tleft += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;\n\t\treturn { top: top, left: left };\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop'  );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth'  );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent || document.body;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return null;\n\n\t\treturn val !== undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\", // bottom or right\n\t\tlower = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\t\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] ||\n\t\t\tdocument.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tdocument.documentElement[\"client\" + name],\n\t\t\t\t\tdocument.body[\"scroll\" + name], document.documentElement[\"scroll\" + name],\n\t\t\t\t\tdocument.body[\"offset\" + name], document.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n})(); "
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.4.2\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2010, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Sat Feb 13 22:33:48 2010 -0500\n */\n(function( window, undefined ) {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<[\\w\\W]+>)[^>]*$|^#([\\w-]+)$/,\n\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\trtrim = /^(\\s|\\u00A0)+|(\\s|\\u00A0)+$/g,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\t\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\t\n\t// The functions to execute on DOM ready\n\treadyList = [],\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwnProperty = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\tindexOf = Array.prototype.indexOf;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\t\t\t\t\t\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(\"TAG\")\n\t\t\t} else if ( !context && /^\\w+$/.test( selector ) ) {\n\t\t\t\tthis.selector = selector;\n\t\t\t\tthis.context = document;\n\t\t\t\tselector = document.getElementsByTagName( selector );\n\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn jQuery( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.4.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\t\t\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\t\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady ) {\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\t} else if ( readyList ) {\n\t\t\t// Add the function to the wait list\n\t\t\treadyList.push( fn );\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\t\n\tend: function() {\n\t\treturn this.prevObject || jQuery(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging object literal values or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {\n\t\t\t\t\tvar clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src\n\t\t\t\t\t\t: jQuery.isArray(copy) ? [] : {};\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\t\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\t\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 13 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tvar fn, i = 0;\n\t\t\t\twhile ( (fn = readyList[ i++ ]) ) {\n\t\t\t\t\tfn.call( document, jQuery );\n\t\t\t\t}\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\treadyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\t\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\treturn jQuery.ready();\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || toString.call(obj) !== \"[object Object]\" || obj.nodeType || obj.setInterval ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor\n\t\t\t&& !hasOwnProperty.call(obj, \"constructor\")\n\t\t\t&& !hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\t\t\n\t\treturn key === undefined || hasOwnProperty.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\t\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\t\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\t\t\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( /^[\\],:{}\\s]*$/.test(data.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\")\n\t\t\t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\")\n\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\n\t\t\tif ( jQuery.support.scriptEval ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\tif ( array.length == null || typeof array === \"string\" || jQuery.isFunction(array) || (typeof array !== \"function\" && array.setInterval) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length, j = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tif ( !inv !== !callback( elems[ i ], i ) ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = /(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(opera)(?:.*version)?[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\t\t!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\\w.]+))?/.exec( ua ) ||\n\t\t  \t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tbrowser: {}\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch( error ) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n// Mutifunctional method to get and set values to a collection\n// The value/s can be optionally by executed if its a function\nfunction access( elems, key, value, exec, fn, pass ) {\n\tvar length = elems.length;\n\t\n\t// Setting many attributes\n\tif ( typeof key === \"object\" ) {\n\t\tfor ( var k in key ) {\n\t\t\taccess( elems, k, key[k], exec, fn, value );\n\t\t}\n\t\treturn elems;\n\t}\n\t\n\t// Setting one attribute\n\tif ( value !== undefined ) {\n\t\t// Optionally, function values get executed if exec is true\n\t\texec = !pass && exec && jQuery.isFunction(value);\n\t\t\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t}\n\t\t\n\t\treturn elems;\n\t}\n\t\n\t// Getting an attribute\n\treturn length ? fn( elems[0], key ) : undefined;\n}\n\nfunction now() {\n\treturn (new Date).getTime();\n}\n(function() {\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + now();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: div.getElementsByTagName(\"input\")[0].value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: document.createElement(\"select\").appendChild( document.createElement(\"option\") ).selected,\n\n\t\tparentNode: div.removeChild( div.appendChild( document.createElement(\"div\") ) ).parentNode === null,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\tcheckClone: false,\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e) {}\n\n\troot.insertBefore( script, root.firstChild );\n\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete script.test;\n\t\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\n\t\tdiv = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) { \n\t\tvar el = document.createElement(\"div\"); \n\t\teventName = \"on\" + eventName; \n\n\t\tvar isSupported = (eventName in el); \n\t\tif ( !isSupported ) { \n\t\t\tel.setAttribute(eventName, \"return;\"); \n\t\t\tisSupported = typeof el[eventName] === \"function\"; \n\t\t} \n\t\tel = null; \n\n\t\treturn isSupported; \n\t};\n\t\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\troot = script = div = all = a = null;\n})();\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\t\n\texpando:expando,\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t\"object\": true,\n\t\t\"applet\": true\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache;\n\n\t\tif ( !id && typeof name === \"string\" && data === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id ) { \n\t\t\tid = ++uuid;\n\t\t}\n\n\t\t// Avoid generating a new cache unless none exists and we\n\t\t// want to manipulate it.\n\t\tif ( typeof name === \"object\" ) {\n\t\t\telem[ expando ] = id;\n\t\t\tthisCache = cache[ id ] = jQuery.extend(true, {}, name);\n\n\t\t} else if ( !cache[ id ] ) {\n\t\t\telem[ expando ] = id;\n\t\t\tcache[ id ] = {};\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\treturn typeof name === \"string\" ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( thisCache ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tif ( jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete cache[ id ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tif ( typeof key === \"undefined\" && this.length ) {\n\t\t\treturn jQuery.data( this[0] );\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t}\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else {\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery.data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ), fn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i, elem ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\nvar rclass = /[\\n\\t]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /href|src|style/,\n\trtype = /(button|input)/i,\n\trfocusable = /(button|input|object|select|textarea)/i,\n\trclickable = /^(a|area)$/i,\n\trradiocheck = /radio|checkbox/;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \", setClass = elem.className;\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split(rspace);\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value, isBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className, i = 0, self = jQuery(this),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery.data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery.data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Typecast each time if the value is a Function and the appended\n\t\t\t// value is therefore different each time.\n\t\t\tif ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\t\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\t\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\t\t// Using attr for specific style information is now deprecated. Use style instead.\n\t\treturn jQuery.style( elem, name, value );\n\t}\n});\nvar rnamespaces = /\\.(.*)$/,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(/[^\\w\\s\\.\\|`]/g, function( ch ) {\n\t\t\treturn \"\\\\\" + ch;\n\t\t});\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {\n\t\t\telem = window;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery.data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events = elemData.events || {},\n\t\t\teventHandle = elemData.handle, eventHandle;\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\thandleObj.guid = handler.guid;\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( special.add ) { \n\t\t\t\tspecial.add.call( elem, handleObj ); \n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + \n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\")\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( var j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( var j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tremoveEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\tif ( this.events && this.events[type] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (e) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar target = event.target, old,\n\t\t\t\tisClick = jQuery.nodeName(target, \"a\") && type === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) && \n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ type ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + type ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + type ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ type ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + type ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace, events;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + namespaces.slice(0).sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tvar events = jQuery.data(this, \"events\"), handlers = events[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, arguments );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {\n\t\t\tevent.which = event.charCode || event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); \n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tvar remove = true,\n\t\t\t\t\ttype = handleObj.origType.replace(rnamespaces, \"\");\n\t\t\t\t\n\t\t\t\tjQuery.each( jQuery.data(this, \"events\").live || [], function() {\n\t\t\t\t\tif ( type === this.origType.replace(rnamespaces, \"\") ) {\n\t\t\t\t\t\tremove = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ( remove ) {\n\t\t\t\t\tjQuery.event.remove( this, handleObj.origType, liveHandler );\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( this.setInterval ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\telem.removeEventListener( type, handle, false );\n\t} : \n\tfunction( elem, type, handle ) {\n\t\telem.detachEvent( \"on\" + type, handle );\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\n\t// Mark it as fixed\n\tthis[ expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\t \n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar formElems = /textarea|input|select/i,\n\n\tchangeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !formElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery.data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery.data( elem, \"_change_data\", val );\n\t\t}\n\t\t\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\treturn jQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange, \n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information/focus[in] is not needed anymore\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery.data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n}\n\nfunction trigger( type, elem, args ) {\n\targs[0].type = type;\n\treturn jQuery.event.handle.apply( elem, args );\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t}, \n\t\t\tteardown: function() { \n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) { \n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\t\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\t\t\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\t\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tcontext.each(function(){\n\t\t\t\t\tjQuery.event.add( this, liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ) {\n\tvar stop, elems = [], selectors = [], args = arguments,\n\t\trelated, match, handleObj, elem, j, i, l, data,\n\t\tevents = jQuery.data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861)\n\tif ( event.liveFired === this || !events || !events.live || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( match[i].selector === handleObj.selector ) {\n\t\t\t\telem = match[i].elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tif ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {\n\t\t\tstop = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn \"live.\" + (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(/\\./g, \"`\").replace(/ /g, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( fn ) {\n\t\treturn fn ? this.bind( name, fn ) : this.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n// Prevent memory leaks in IE\n// Window isn't included so as not to unbind existing unload events\n// More info:\n//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/\nif ( window.attachEvent && !window.addEventListener ) {\n\twindow.attachEvent(\"onunload\", function() {\n\t\tfor ( var id in jQuery.cache ) {\n\t\t\tif ( jQuery.cache[ id ].handle ) {\n\t\t\t\t// Try/Catch is to handle iframes being unloaded, see #4280\n\t\t\t\ttry {\n\t\t\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t}\n\t});\n}\n/*!\n * Sizzle CSS Selector Engine - v1.0\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function(){\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tvar origContext = context = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\twhile ( (chunker.exec(\"\"), m = chunker.exec(soFar)) !== null ) {\n\t\tsoFar = m[3];\n\t\t\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = m[3];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\t\t\tvar ret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tvar ret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\t\t\tset = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray(set);\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function(results){\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort(sortOrder);\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice(1,1);\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item, left = match[1];\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\tleftMatch: {},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\treturn match[1].toLowerCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tSizzle.error( \"Syntax error, unrecognized expression: \" + name );\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t}));\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.sourceIndex || !b.sourceIndex ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.sourceIndex ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.ownerDocument || !b.ownerDocument ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.ownerDocument ? -1 : 1;\n\t\t}\n\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.setStart(a, 0);\n\t\taRange.setEnd(a, 0);\n\t\tbRange.setStart(b, 0);\n\t\tbRange.setEnd(b, 0);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\troot = form = null; // release memory in IE\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n\n\tdiv = null; // release memory in IE\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function(query, context, extra, seed){\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t} catch(e){}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\tdiv = null; // release memory in IE\n\t})();\n}\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\tdiv = null; // release memory in IE\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ? function(a, b){\n\treturn !!(a.compareDocumentPosition(b) & 16);\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = getText;\njQuery.isXMLDoc = isXML;\njQuery.contains = contains;\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tslice = Array.prototype.slice;\n\n// Implement the identical functionality for filter and not\nvar winnow = function( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ), length = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\t\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar ret = [], cur = this[0], match, matches = {}, selector;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( var i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ? \n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur });\n\t\t\t\t\t\t\tdelete matches[selector];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = jQuery.expr.match.POS.test( selectors ) ? \n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\treturn this.map(function( i, cur ) {\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t},\n\t\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\t\t\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call(arguments).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn jQuery.find.matches(expr, elems);\n\t},\n\t\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [], cur = elem[dir];\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /(<([\\w:]+)[^>]*?)\\/>/g,\n\trselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<script|<object|<embed|<option|<style/i,\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,  // checked=\"checked\" or checked (html5)\n\tfcloseTag = function( all, front, tag ) {\n\t\treturn rselfClosing.test( tag ) ?\n\t\t\tall :\n\t\t\tfront + \"></\" + tag + \">\";\n\t},\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ), contents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\t\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t elem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function() {\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML, ownerDocument = this.ownerDocument;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(rinlinejQuery, \"\")\n\t\t\t\t\t// Handle the case in IE 8 where action=/test/> self-closes a tag\n\t\t\t\t\t.replace(/=([^=\"'>\\s]+\\/)>/g, '=\"$1\">')\n\t\t\t\t\t.replace(rleadingWhitespace, \"\")], ownerDocument)[0];\n\t\t\t} else {\n\t\t\t\treturn this.cloneNode(true);\n\t\t\t}\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tcloneCopyEvent( this, ret );\n\t\t\tcloneCopyEvent( this.find(\"*\"), ret.find(\"*\") );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, fcloseTag);\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\tself.empty().append(function(){\n\t\t\t\t\treturn value.call( this, i, old );\n\t\t\t\t});\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery(value).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling, parent = this.parentNode;\n\n\t\t\t\tjQuery(this).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, value = args[0], scripts = [], fragment, parent;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = buildFragment( args, this, scripts );\n\t\t\t}\n\t\t\t\n\t\t\tfragment = results.fragment;\n\t\t\t\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti > 0 || results.cacheable || this.length > 1  ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t\tfunction root( elem, cur ) {\n\t\t\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n});\n\nfunction cloneCopyEvent(orig, ret) {\n\tvar i = 0;\n\n\tret.each(function() {\n\t\tif ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction buildFragment( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\t!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n}\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\t\t\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t\t\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\t\t\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\njQuery.extend({\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, fcloseTag);\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\t\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\t\t\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tid = elem[ jQuery.expando ];\n\t\t\t\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\t\t\t\t\n\t\t\t\tif ( data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tremoveEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n// exclude the following css properties to add px\nvar rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\tralpha = /alpha\\([^)]*\\)/,\n\tropacity = /opacity=([^)]*)/,\n\trfloat = /float/i,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display:\"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\n\t// cache check for defaultView.getComputedStyle\n\tgetComputedStyle = document.defaultView && document.defaultView.getComputedStyle,\n\t// normalize float css property\n\tstyleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\",\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\treturn access( this, name, value, true, function( elem, name, value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn jQuery.curCSS( elem, name );\n\t\t}\n\t\t\n\t\tif ( typeof value === \"number\" && !rexclude.test(name) ) {\n\t\t\tvalue += \"px\";\n\t\t}\n\n\t\tjQuery.style( elem, name, value );\n\t});\n};\n\njQuery.extend({\n\tstyle: function( elem, name, value ) {\n\t\t// don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// ignore negative width and height values #1599\n\t\tif ( (name === \"width\" || name === \"height\") && parseFloat(value) < 0 ) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\tvar style = elem.style || elem, set = value !== undefined;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\tstyle.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\tvar opacity = parseInt( value, 10 ) + \"\" === \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\";\n\t\t\t\tvar filter = style.filter || jQuery.curCSS( elem, \"filter\" ) || \"\";\n\t\t\t\tstyle.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;\n\t\t\t}\n\n\t\t\treturn style.filter && style.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( ropacity.exec(style.filter)[1] ) / 100) + \"\":\n\t\t\t\t\"\";\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tname = name.replace(rdashAlpha, fcamelCase);\n\n\t\tif ( set ) {\n\t\t\tstyle[ name ] = value;\n\t\t}\n\n\t\treturn style[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name === \"width\" || name === \"height\" ) {\n\t\t\tvar val, props = cssShow, which = name === \"width\" ? cssWidth : cssHeight;\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra ) {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\tgetWH();\n\t\t\t} else {\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\t\t\t}\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style, filter;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" && elem.currentStyle ) {\n\t\t\tret = ropacity.test(elem.currentStyle.filter || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\t\"\";\n\n\t\t\treturn ret === \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tif ( !force && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\n\t\t} else if ( getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( rfloat.test( name ) ) {\n\t\t\t\tname = \"float\";\n\t\t\t}\n\n\t\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\t\tvar defaultView = elem.ownerDocument.defaultView;\n\n\t\t\tif ( !defaultView ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle ) {\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\t}\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name === \"opacity\" && ret === \"\" ) {\n\t\t\t\tret = \"1\";\n\t\t\t}\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(rdashAlpha, fcamelCase);\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = camelCase === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth, height = elem.offsetHeight,\n\t\t\tskip = elem.nodeName.toLowerCase() === \"tr\";\n\n\t\treturn width === 0 && height === 0 && !skip ?\n\t\t\ttrue :\n\t\t\twidth > 0 && height > 0 && !skip ?\n\t\t\t\tfalse :\n\t\t\t\tjQuery.curCSS(elem, \"display\") === \"none\";\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\nvar jsc = now(),\n\trscript = /<script(.|\\s)*?\\/script>/gi,\n\trselectTextarea = /select|textarea/i,\n\trinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,\n\tjsre = /=\\?(&|$)/,\n\trquery = /\\?/,\n\trts = /(\\?|&)_=.*?(&|$)/,\n\trurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\tr20 = /%20/g,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load;\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" ) {\n\t\t\treturn _load.call( this, url );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function( res, status ) {\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div />\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || rselectTextarea.test(this.nodeName) ||\n\t\t\t\t\trinput.test(this.type));\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery(this).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"), function( i, o ) {\n\tjQuery.fn[o] = function( f ) {\n\t\treturn this.bind(o, f);\n\t};\n});\n\njQuery.extend({\n\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\ttraditional: false,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7 (can't request local files),\n\t\t// so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr: window.XMLHttpRequest && (window.location.protocol !== \"file:\" || !window.ActiveXObject) ?\n\t\t\tfunction() {\n\t\t\t\treturn new window.XMLHttpRequest();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\ttry {\n\t\t\t\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t\t\t} catch(e) {}\n\t\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajax: function( origSettings ) {\n\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);\n\t\t\n\t\tvar jsonp, status, data,\n\t\t\tcallbackContext = origSettings && origSettings.context || s,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\tif ( type === \"GET\" ) {\n\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t}\n\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data ) {\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t}\n\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t} catch(e) {}\n\n\t\t\t\tif ( head ) {\n\t\t\t\t\thead.removeChild( script );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType === \"script\" && s.cache === null ) {\n\t\t\ts.cache = false;\n\t\t}\n\n\t\tif ( s.cache === false && type === \"GET\" ) {\n\t\t\tvar ts = now();\n\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(rts, \"$1_=\" + ts + \"$2\");\n\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type === \"GET\" ) {\n\t\t\ts.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.data;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = rurl.exec( s.url ),\n\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType === \"script\" && type === \"GET\" && remote ) {\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif ( s.scriptCharset ) {\n\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t}\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function() {\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\thead.insertBefore( script, head.firstChild );\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\tif ( !xhr ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif ( s.username ) {\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\t} else {\n\t\t\txhr.open(type, s.url, s.async);\n\t\t}\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data || origSettings && origSettings.contentType ) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[s.url]);\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.etag[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-None-Match\", jQuery.etag[s.url]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\t// Only send the header if it's not a remote XHR\n\t\t\tif ( !remote ) {\n\t\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e) {}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global ) {\n\t\t\ttrigger(\"ajaxSend\", [xhr, s]);\n\t\t}\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {\n\t\t\t// The request was aborted\n\t\t\tif ( !xhr || xhr.readyState === 0 || isTimeout === \"abort\" ) {\n\t\t\t\t// Opera doesn't call onreadystatechange before this point\n\t\t\t\t// so we simulate the call\n\t\t\t\tif ( !requestDone ) {\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\n\t\t\t\trequestDone = true;\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t}\n\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\tstatus = isTimeout === \"timeout\" ?\n\t\t\t\t\t\"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ?\n\t\t\t\t\t\t\"error\" :\n\t\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ?\n\t\t\t\t\t\t\t\"notmodified\" :\n\t\t\t\t\t\t\t\"success\";\n\n\t\t\t\tvar errMsg;\n\n\t\t\t\tif ( status === \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(err) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t\terrMsg = err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.handleError(s, xhr, status, errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout === \"timeout\" ) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async ) {\n\t\t\t\t\txhr = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Override the abort handler, if we can (IE doesn't allow it, but that's OK)\n\t\t// Opera doesn't fire onreadystatechange at all on abort\n\t\ttry {\n\t\t\tvar oldAbort = xhr.abort;\n\t\t\txhr.abort = function() {\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\toldAbort.call( xhr );\n\t\t\t\t}\n\n\t\t\t\tonreadystatechange( \"abort\" );\n\t\t\t};\n\t\t} catch(e) { }\n\n\t\t// Timeout checker\n\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t// Check to see if the request is still happening\n\t\t\t\tif ( xhr && !requestDone ) {\n\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}\n\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send( type === \"POST\" || type === \"PUT\" || type === \"DELETE\" ? s.data : null );\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t\t// Fire the complete handlers\n\t\t\tcomplete();\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async ) {\n\t\t\tonreadystatechange();\n\t\t}\n\n\t\tfunction success() {\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success ) {\n\t\t\t\ts.success.call( callbackContext, data, status, xhr );\n\t\t\t}\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxSuccess\", [xhr, s] );\n\t\t\t}\n\t\t}\n\n\t\tfunction complete() {\n\t\t\t// Process result\n\t\t\tif ( s.complete ) {\n\t\t\t\ts.complete.call( callbackContext, xhr, status);\n\t\t\t}\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxComplete\", [xhr, s] );\n\t\t\t}\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction trigger(type, args) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) {\n\t\t\ts.error.call( s.context || s, xhr, status, e );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger( \"ajaxError\", [xhr, s, e] );\n\t\t}\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol === \"file:\" ||\n\t\t\t\t// Opera returns 0 when status is 304\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) ||\n\t\t\t\txhr.status === 304 || xhr.status === 1223 || xhr.status === 0;\n\t\t} catch(e) {}\n\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\tvar lastModified = xhr.getResponseHeader(\"Last-Modified\"),\n\t\t\tetag = xhr.getResponseHeader(\"Etag\");\n\n\t\tif ( lastModified ) {\n\t\t\tjQuery.lastModified[url] = lastModified;\n\t\t}\n\n\t\tif ( etag ) {\n\t\t\tjQuery.etag[url] = etag;\n\t\t}\n\n\t\t// Opera returns 0 when status is 304\n\t\treturn xhr.status === 304 || xhr.status === 0;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\") || \"\",\n\t\t\txml = type === \"xml\" || !type && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"parsererror\" );\n\t\t}\n\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s is checked to keep backwards compatibility\n\t\tif ( s && s.dataFilter ) {\n\t\t\tdata = s.dataFilter( data, type );\n\t\t}\n\n\t\t// The filter can actually parse the response\n\t\tif ( typeof data === \"string\" ) {\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type === \"json\" || !type && ct.indexOf(\"json\") >= 0 ) {\n\t\t\t\tdata = jQuery.parseJSON( data );\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\t} else if ( type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0 ) {\n\t\t\t\tjQuery.globalEval( data );\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [];\n\t\t\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\t\t\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray(a) || a.jquery ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[prefix] );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(r20, \"+\");\n\n\t\tfunction buildParams( prefix, obj ) {\n\t\t\tif ( jQuery.isArray(obj) ) {\n\t\t\t\t// Serialize array item.\n\t\t\t\tjQuery.each( obj, function( i, v ) {\n\t\t\t\t\tif ( traditional || /\\[\\]$/.test( prefix ) ) {\n\t\t\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\t\t\tadd( prefix, v );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t\t\t// Serialize object item.\n\t\t\t\tjQuery.each( obj, function( k, v ) {\n\t\t\t\t\tbuildParams( prefix + \"[\" + k + \"]\", v );\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else {\n\t\t\t\t// Serialize scalar item.\n\t\t\t\tadd( prefix, obj );\n\t\t\t}\n\t\t}\n\n\t\tfunction add( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction(value) ? value() : value;\n\t\t\ts[ s.length ] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\t\t}\n\t}\n});\nvar elemdisplay = {},\n\trfxtypes = /toggle|show|hide/,\n\trfxnum = /^([+-]=)?([\\d+-.]+)(.*)$/,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, callback ) {\n\t\tif ( speed || speed === 0) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\n\t\t\t\tthis[i].style.display = old || \"\";\n\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar nodeName = this[i].nodeName, display;\n\n\t\t\t\t\tif ( elemdisplay[ nodeName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ nodeName ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + nodeName + \" />\").appendTo(\"body\");\n\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\n\t\t\t\t\t\tif ( display === \"none\" ) {\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telem.remove();\n\n\t\t\t\t\t\telemdisplay[ nodeName ] = display;\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = jQuery.data(this[j], \"olddisplay\") || \"\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" ) {\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType === 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = p.replace(rdashAlpha, fcamelCase);\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( ( p === \"height\" || p === \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, callback ) {\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop === \"height\" || this.prop === \"width\" ) && this.elem.style ) {\n\t\t\tthis.elem.style.display = \"block\";\n\t\t}\n\t},\n\n\t// Get the current size\n\tcur: function( force ) {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(jQuery.fx.tick, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tvar old = jQuery.data(this.elem, \"olddisplay\");\n\t\t\t\t\tthis.elem.style.display = old ? old : this.options.display;\n\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") === \"none\" ) {\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style(this.elem, p, this.options.orig[p]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\t\t\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\t\n\tspeeds: {\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style(fx.elem, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tvar box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, \"marginTop\", true) ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\", checkDiv.style.top = \"20px\";\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\", innerDiv.style.position = \"relative\";\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.curCSS(body, \"marginTop\",  true) ) || 0;\n\t\t\tleft += parseFloat( jQuery.curCSS(body, \"marginLeft\", true) ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\t\n\tsetOffset: function( elem, options, i ) {\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( /static/.test( jQuery.curCSS( elem, \"position\" ) ) ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\t\tvar curElem   = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurTop    = parseInt( jQuery.curCSS( elem, \"top\",  true ), 10 ) || 0,\n\t\t\tcurLeft   = parseInt( jQuery.curCSS( elem, \"left\", true ), 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tvar props = {\n\t\t\ttop:  (options.top  - curOffset.top)  + curTop,\n\t\t\tleft: (options.left - curOffset.left) + curLeft\n\t\t};\n\t\t\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.curCSS(elem, \"marginTop\",  true) ) || 0;\n\t\toffset.left -= parseFloat( jQuery.curCSS(elem, \"marginLeft\", true) ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.curCSS(offsetParent[0], \"borderTopWidth\",  true) ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], \"borderLeftWidth\", true) ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\t\t\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn (\"scrollTo\" in elem && elem.document) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\treturn (\"scrollTo\" in elem && elem.document) ? // does it walk and quack like a window?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\telem.document.compatMode === \"CSS1Compat\" && elem.document.documentElement[ \"client\" + name ] ||\n\t\t\telem.document.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\t(elem.nodeType === 9) ? // is it a document\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\tjQuery.css( elem, type ) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n})(window);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.4.js",
    "content": "/*!\n * jQuery JavaScript Library v1.4.4\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2010, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu Nov 11 19:04:53 2010 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\trwhite = /\\s/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for non-word characters\n\trnonword = /\\W/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\t\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\t\n\t// The functions to execute on DOM ready\n\treadyList = [],\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\t\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\t\t\t\t\t\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(\"TAG\")\n\t\t\t} else if ( !context && !rnonword.test( selector ) ) {\n\t\t\t\tthis.selector = selector;\n\t\t\t\tthis.context = document;\n\t\t\t\tselector = document.getElementsByTagName( selector );\n\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn jQuery( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.4.4\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\t\t\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\t\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady ) {\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\t} else if ( readyList ) {\n\t\t\t// Add the function to the wait list\n\t\t\treadyList.push( fn );\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\t\n\tend: function() {\n\t\treturn this.prevObject || jQuery(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\t var options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\t\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\t\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tvar fn,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tready = readyList;\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\treadyList = null;\n\n\t\t\t\twhile ( (fn = ready[ i++ ]) ) {\n\t\t\t\t\tfn.call( document, jQuery );\n\t\t\t\t}\n\n\t\t\t\t// Trigger any bound ready events\n\t\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\t\t\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\t\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\t\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\t\t\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\n\t\t\tif ( jQuery.support.scriptEval ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\t\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\t\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\t\t\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\t\t\n\t\t\treturn elems;\n\t\t}\n\t\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// Verify that \\s matches non-breaking spaces\n// (IE fails on this test)\nif ( !rwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn (window.jQuery = window.$ = jQuery);\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + jQuery.now();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") );\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: div.getElementsByTagName(\"input\")[0].value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e) {}\n\n\troot.insertBefore( script, root.firstChild );\n\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete script.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tdocument.body.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\troot = script = div = all = a = null;\n})();\n\n\n\nvar windowData = {},\n\trbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\t\n\texpando: \"jQuery\" + jQuery.now(),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar isNode = elem.nodeType,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : null,\n\t\t\tcache = jQuery.cache, thisCache;\n\n\t\tif ( isNode && !id && typeof name === \"string\" && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the data from the object directly\n\t\tif ( !isNode ) {\n\t\t\tcache = elem;\n\n\t\t// Compute a unique ID for the element\n\t\t} else if ( !id ) {\n\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t}\n\n\t\t// Avoid generating a new cache unless none exists and we\n\t\t// want to manipulate it.\n\t\tif ( typeof name === \"object\" ) {\n\t\t\tif ( isNode ) {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\n\t\t\t} else {\n\t\t\t\tjQuery.extend( cache, name );\n\t\t\t}\n\n\t\t} else if ( isNode && !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\t\t}\n\n\t\tthisCache = isNode ? cache[ id ] : cache;\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\treturn typeof name === \"string\" ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar isNode = elem.nodeType,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem,\n\t\t\tcache = jQuery.cache,\n\t\t\tthisCache = isNode ? cache[ id ] : id;\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( thisCache ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tif ( isNode && jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\tif ( isNode && jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\n\t\t\t// Completely remove the data cache\n\t\t\t} else if ( isNode ) {\n\t\t\t\tdelete cache[ id ];\n\n\t\t\t// Remove all fields from the object\n\t\t\t} else {\n\t\t\t\tfor ( var n in elem ) {\n\t\t\t\t\tdelete elem[ n ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery.data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery.data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery.data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) && \n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\t\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// These attributes require special treatment\n\t\tvar special = rspecialurl.test( name );\n\n\t\t// Safari mis-reports the default selected property of an option\n\t\t// Accessing the parent's selectedIndex property fixes it\n\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\tif ( set ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t}\n\n\t\t\t\tif ( value === null ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t}\n\n\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tattributeNode.value :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\treturn elem[ name ];\n\t\t}\n\n\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\tif ( set ) {\n\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t}\n\n\t\t\treturn elem.style.cssText;\n\t\t}\n\n\t\tif ( set ) {\n\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\telem.setAttribute( name, \"\" + value );\n\t\t}\n\n\t\t// Ensure that missing attributes return undefined\n\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\telem.getAttribute( name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn attr === null ? undefined : attr;\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t},\n\tfocusCounts = { focusin: 0, focusout: 0 };\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\telem = window;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t  return;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery.data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use a key less likely to result in collisions for plain JS objects.\n\t\t// Fixes bug #7150.\n\t\tvar eventKey = elem.nodeType ? \"events\" : \"__events__\",\n\t\t\tevents = elemData[ eventKey ],\n\t\t\teventHandle = elemData.handle;\n\t\t\t\n\t\tif ( typeof events === \"function\" ) {\n\t\t\t// On plain objects events is a fn that holds the the data\n\t\t\t// which prevents this data from being JSON serialized\n\t\t\t// the function does not need to be called, it just contains the data\n\t\t\teventHandle = events.handle;\n\t\t\tevents = events.events;\n\n\t\t} else if ( !events ) {\n\t\t\tif ( !elem.nodeType ) {\n\t\t\t\t// On plain objects, create a fn that acts as the holder\n\t\t\t\t// of the values to avoid JSON serialization of event data\n\t\t\t\telemData[ eventKey ] = elemData = function(){};\n\t\t\t}\n\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( special.add ) { \n\t\t\t\tspecial.add.call( elem, handleObj ); \n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\teventKey = elem.nodeType ? \"events\" : \"__events__\",\n\t\t\telemData = jQuery.data( elem ),\n\t\t\tevents = elemData && elemData[ eventKey ];\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( typeof events === \"function\" ) {\n\t\t\telemData = events;\n\t\t\tevents = events.events;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + \n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( typeof elemData === \"function\" ) {\n\t\t\t\tjQuery.removeData( elem, eventKey );\n\n\t\t\t} else if ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\tif ( this.events && this.events[type] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = elem.nodeType ?\n\t\t\tjQuery.data( elem, \"handle\" ) :\n\t\t\t(jQuery.data( elem, \"__events__\" ) || {}).handle;\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) && \n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery.data(this, this.nodeType ? \"events\" : \"__events__\");\n\n\t\tif ( typeof events === \"function\" ) {\n\t\t\tevents = events.events;\n\t\t}\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); \n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} : \n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\te.liveFired = undefined;\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\t \n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\te.liveFired = undefined;\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery.data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery.data( elem, \"_change_data\", val );\n\t\t}\n\t\t\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\treturn jQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange, \n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery.data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\targs[0].type = type;\n\treturn jQuery.event.handle.apply( elem, args );\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( focusCounts[fix]++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}, \n\t\t\tteardown: function() { \n\t\t\t\tif ( --focusCounts[fix] === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) { \n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.trigger( e, null, e.target );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\t\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\t\t\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\t\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\t\t\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery.data( this, this.nodeType ? \"events\" : \"__events__\" );\n\n\tif ( typeof events === \"function\" ) {\n\t\tevents = events.events;\n\t}\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861)\n\tif ( event.liveFired === this || !events || !events.live || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\t\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n// Prevent memory leaks in IE\n// Window isn't included so as not to unbind existing unload events\n// More info:\n//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/\nif ( window.attachEvent && !window.addEventListener ) {\n\tjQuery(window).bind(\"unload\", function() {\n\t\tfor ( var id in jQuery.cache ) {\n\t\t\tif ( jQuery.cache[ id ].handle ) {\n\t\t\t\t// Try/Catch is to handle iframes being unloaded, see #4280\n\t\t\t\ttry {\n\t\t\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t}\n\t});\n}\n\n\n/*!\n * Sizzle CSS Selector Engine - v1.0\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName( \"*\" );\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+\\-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !/\\W/.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( \"Syntax error, unrecognized expression: \" + name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\tquery = query.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar old = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id;\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"#\" + nid + \" \" + query ), extra );\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS;\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\t\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ? \n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ? \n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\t\t\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\t\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\t\t\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call(arguments).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\t\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked (html5)\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\traction = /\\=([^=\"'>\\s]+\\/)>/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\t\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t elem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function() {\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML,\n\t\t\t\t\townerDocument = this.ownerDocument;\n\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(rinlinejQuery, \"\")\n\t\t\t\t\t// Handle the case in IE 8 where action=/test/> self-closes a tag\n\t\t\t\t\t.replace(raction, '=\"$1\">')\n\t\t\t\t\t.replace(rleadingWhitespace, \"\")], ownerDocument)[0];\n\t\t\t} else {\n\t\t\t\treturn this.cloneNode(true);\n\t\t\t}\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tcloneCopyEvent( this, ret );\n\t\t\tcloneCopyEvent( this.find(\"*\"), ret.find(\"*\") );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\t\t\t\n\t\t\tfragment = results.fragment;\n\t\t\t\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti > 0 || results.cacheable || this.length > 1  ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent(orig, ret) {\n\tvar i = 0;\n\n\tret.each(function() {\n\t\tif ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar oldData = jQuery.data( orig[i++] ),\n\t\t\tcurData = jQuery.data( this, oldData ),\n\t\t\tevents = oldData && oldData.events;\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\t!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\t\t\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t\t\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\t\t\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\njQuery.extend({\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\t\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\t\t\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\t\t\t\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\t\t\t\t\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trbracket = /\\[\\]$/,\n\tjsre = /\\=\\?(&|$)/,\n\trquery = /\\?/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load;\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function( res, status ) {\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || rselectTextarea.test(this.nodeName) ||\n\t\t\t\t\trinput.test(this.type));\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery(this).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"), function( i, o ) {\n\tjQuery.fn[o] = function( f ) {\n\t\treturn this.bind(o, f);\n\t};\n});\n\njQuery.extend({\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\ttraditional: false,\n\t\t*/\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr: function() {\n\t\t\treturn new window.XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\tajax: function( origSettings ) {\n\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),\n\t\t\tjsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);\n\n\t\ts.url = s.url.replace( rhash, \"\" );\n\n\t\t// Use original (not extended) context object if it was provided\n\t\ts.context = origSettings && origSettings.context != null ? origSettings.context : s;\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\tif ( type === \"GET\" ) {\n\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t}\n\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data ) {\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t}\n\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\tvar customJsonp = window[ jsonp ];\n\n\t\t\twindow[ jsonp ] = function( tmp ) {\n\t\t\t\tif ( jQuery.isFunction( customJsonp ) ) {\n\t\t\t\t\tcustomJsonp( tmp );\n\n\t\t\t\t} else {\n\t\t\t\t\t// Garbage collect\n\t\t\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t\t} catch( jsonpError ) {}\n\t\t\t\t}\n\n\t\t\t\tdata = tmp;\n\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t\n\t\t\t\tif ( head ) {\n\t\t\t\t\thead.removeChild( script );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType === \"script\" && s.cache === null ) {\n\t\t\ts.cache = false;\n\t\t}\n\n\t\tif ( s.cache === false && noContent ) {\n\t\t\tvar ts = jQuery.now();\n\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(rts, \"$1_=\" + ts);\n\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for GET/HEAD requests\n\t\tif ( s.data && noContent ) {\n\t\t\ts.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.data;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = rurl.exec( s.url ),\n\t\t\tremote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType === \"script\" && type === \"GET\" && remote ) {\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tif ( s.scriptCharset ) {\n\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t}\n\t\t\tscript.src = s.url;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function() {\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\thead.insertBefore( script, head.firstChild );\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\tif ( !xhr ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif ( s.username ) {\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\t} else {\n\t\t\txhr.open(type, s.url, s.async);\n\t\t}\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set content-type if data specified and content-body is valid for this type\n\t\t\tif ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[s.url]);\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.etag[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-None-Match\", jQuery.etag[s.url]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\t// Only send the header if it's not a remote XHR\n\t\t\tif ( !remote ) {\n\t\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*; q=0.01\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch( headerError ) {}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && jQuery.active-- === 1 ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxSend\", [xhr, s] );\n\t\t}\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {\n\t\t\t// The request was aborted\n\t\t\tif ( !xhr || xhr.readyState === 0 || isTimeout === \"abort\" ) {\n\t\t\t\t// Opera doesn't call onreadystatechange before this point\n\t\t\t\t// so we simulate the call\n\t\t\t\tif ( !requestDone ) {\n\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t}\n\n\t\t\t\trequestDone = true;\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t}\n\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\tstatus = isTimeout === \"timeout\" ?\n\t\t\t\t\t\"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ?\n\t\t\t\t\t\t\"error\" :\n\t\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ?\n\t\t\t\t\t\t\t\"notmodified\" :\n\t\t\t\t\t\t\t\"success\";\n\n\t\t\t\tvar errMsg;\n\n\t\t\t\tif ( status === \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch( parserError ) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t\terrMsg = parserError;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.handleError( s, xhr, status, errMsg );\n\t\t\t\t}\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t}\n\n\t\t\t\tif ( isTimeout === \"timeout\" ) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async ) {\n\t\t\t\t\txhr = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)\n\t\t// Opera doesn't fire onreadystatechange at all on abort\n\t\ttry {\n\t\t\tvar oldAbort = xhr.abort;\n\t\t\txhr.abort = function() {\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\t// oldAbort has no call property in IE7 so\n\t\t\t\t\t// just do it this way, which works in all\n\t\t\t\t\t// browsers\n\t\t\t\t\tFunction.prototype.call.call( oldAbort, xhr );\n\t\t\t\t}\n\n\t\t\t\tonreadystatechange( \"abort\" );\n\t\t\t};\n\t\t} catch( abortError ) {}\n\n\t\t// Timeout checker\n\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t// Check to see if the request is still happening\n\t\t\t\tif ( xhr && !requestDone ) {\n\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}\n\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send( noContent || s.data == null ? null : s.data );\n\n\t\t} catch( sendError ) {\n\t\t\tjQuery.handleError( s, xhr, null, sendError );\n\n\t\t\t// Fire the complete handlers\n\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async ) {\n\t\t\tonreadystatechange();\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction(value) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\t\t\t};\n\t\t\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\t\t\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray(a) || a.jquery ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[prefix], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(r20, \"+\");\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray(obj) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\t\t\t\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\tif ( jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tjQuery.each( obj, function( k, v ) {\n\t\t\t\tbuildParams( prefix + \"[\" + k + \"]\", v, traditional, add );\n\t\t\t});\n\t\t}\n\t\t\t\t\t\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) {\n\t\t\ts.error.call( s.context, xhr, status, e );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxError\", [xhr, s, e] );\n\t\t}\n\t},\n\n\thandleSuccess: function( s, xhr, status, data ) {\n\t\t// If a local callback was specified, fire it and pass it the data\n\t\tif ( s.success ) {\n\t\t\ts.success.call( s.context, data, status, xhr );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\t},\n\n\thandleComplete: function( s, xhr, status ) {\n\t\t// Process result\n\t\tif ( s.complete ) {\n\t\t\ts.complete.call( s.context, xhr, status );\n\t\t}\n\n\t\t// The request was completed\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxComplete\", [xhr, s] );\n\t\t}\n\n\t\t// Handle the global AJAX counter\n\t\tif ( s.global && jQuery.active-- === 1 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\t},\n\t\t\n\ttriggerGlobal: function( s, type, args ) {\n\t\t(s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t},\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol === \"file:\" ||\n\t\t\t\txhr.status >= 200 && xhr.status < 300 ||\n\t\t\t\txhr.status === 304 || xhr.status === 1223;\n\t\t} catch(e) {}\n\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\tvar lastModified = xhr.getResponseHeader(\"Last-Modified\"),\n\t\t\tetag = xhr.getResponseHeader(\"Etag\");\n\n\t\tif ( lastModified ) {\n\t\t\tjQuery.lastModified[url] = lastModified;\n\t\t}\n\n\t\tif ( etag ) {\n\t\t\tjQuery.etag[url] = etag;\n\t\t}\n\n\t\treturn xhr.status === 304;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\") || \"\",\n\t\t\txml = type === \"xml\" || !type && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"parsererror\" );\n\t\t}\n\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s is checked to keep backwards compatibility\n\t\tif ( s && s.dataFilter ) {\n\t\t\tdata = s.dataFilter( data, type );\n\t\t}\n\n\t\t// The filter can actually parse the response\n\t\tif ( typeof data === \"string\" ) {\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type === \"json\" || !type && ct.indexOf(\"json\") >= 0 ) {\n\t\t\t\tdata = jQuery.parseJSON( data );\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\t} else if ( type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0 ) {\n\t\t\t\tjQuery.globalEval( data );\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n});\n\n/*\n * Create the request object; Microsoft failed to properly\n * implement the XMLHttpRequest in IE7 (can't request local files),\n * so we use the ActiveXObject when it is available\n * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n * we need a fallback.\n */\nif ( window.ActiveXObject ) {\n\tjQuery.ajaxSettings.xhr = function() {\n\t\tif ( window.location.protocol !== \"file:\" ) {\n\t\t\ttry {\n\t\t\t\treturn new window.XMLHttpRequest();\n\t\t\t} catch(xhrError) {}\n\t\t}\n\n\t\ttry {\n\t\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t} catch(activeError) {}\n\t};\n}\n\n// Does this browser support XHR requests?\njQuery.support.ajax = !!jQuery.ajaxSettings.xhr();\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)(.*)$/,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery.data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery.data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery.data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" ) {\n\t\t\t\t\tjQuery.data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur() || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar r = parseFloat( jQuery.css( this.elem, this.prop ) );\n\t\treturn r && r > -10000 ? r : 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box || { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\t\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\t\t\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\t\t\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && elem.document.documentElement[ \"client\" + name ] ||\n\t\t\t\telem.document.body[ \"client\" + name ];\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.5.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu Mar 31 15:28:23 2011 -0400\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery._Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\nvar // Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\t// Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\t// make sure args are available (#8421)\n\t\t\t\t\t\targs = args || [];\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = arguments,\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tcount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t// Strange bug in FF4:\n\t\t\t\t\t// Values changed onto the arguments object sometimes end up as undefined values\n\t\t\t\t\t// outside the $.when method. Cloning the object into a fresh array solves the issue\n\t\t\t\t\tdeferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn deferred.promise();\n\t}\n});\n\n\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true,\n\t\treliableMarginRight: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.style.marginRight = \"0\";\n\t\t\tjQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0;\n\t\t}\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = event.type;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = undefined;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent && parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0;\n\t\t\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( donor ) {\n\t\t\t// Donor event is always a native one; fix it and switch its type.\n\t\t\t// Let focusin/out handler cancel the donor focus/blur event.\n\t\t\tvar e = jQuery.event.fix( donor );\n\t\t\te.type = fix;\n\t\t\te.originalEvent = {};\n\t\t\tjQuery.event.trigger( e, null, e.target );\n\t\t\tif ( e.isDefaultPrevented() ) {\n\t\t\t\tdonor.preventDefault();\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\tvar ret;\n\t\t\t\tjQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tret = curCSS( elem, \"margin-right\", \"marginRight\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" || position === \"fixed\") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.6.1.js",
    "content": "/*!\n * jQuery JavaScript Library v1.6.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu May 12 15:04:36 2011 -0400\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.6.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery._Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn (new Function( \"return \" + data ))();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\n\t\tif ( indexOf ) {\n\t\t\treturn indexOf.call( array, elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\nvar // Promise methods\n\tpromiseMethods = \"done fail isResolved isRejected promise then always pipe\".split( \" \" ),\n\t// Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\t// make sure args are available (#8421)\n\t\t\t\t\t\targs = args || [];\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\talways: function() {\n\t\t\t\treturn deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\tpipe: function( fnDone, fnFail ) {\n\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\tfail: [ fnFail, \"reject\" ]\n\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action ]( returned );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}).promise();\n\t\t\t},\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t});\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = arguments,\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tcount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t// Strange bug in FF4:\n\t\t\t\t\t// Values changed onto the arguments object sometimes end up as undefined values\n\t\t\t\t\t// outside the $.when method. Cloning the object into a fresh array solves the issue\n\t\t\t\t\tdeferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn deferred.promise();\n\t}\n});\n\n\n\njQuery.support = (function() {\n\n\tvar div = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tmarginDiv,\n\t\tsupport,\n\t\tfragment,\n\t\tbody,\n\t\tbodyStyle,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName( \"tbody\" ).length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName( \"link\" ).length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute( \"href\" ) === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t\tdiv.detachEvent( \"onclick\", click );\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t}\n\n\t// Check if a radio maintains it's value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\tdiv.innerHTML = \"\";\n\n\t// Figure out if the W3C box model works as expected\n\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t// We use our own, invisible, body\n\tbody = document.createElement( \"body\" );\n\tbodyStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\t// Set background to avoid IE crashes when removing (#9028)\n\t\tbackground: \"none\"\n\t};\n\tfor ( i in bodyStyle ) {\n\t\tbody.style[ i ] = bodyStyle[ i ];\n\t}\n\tbody.appendChild( div );\n\tdocumentElement.insertBefore( body, documentElement.firstChild );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tsupport.boxModel = div.offsetWidth === 2;\n\n\tif ( \"zoom\" in div.style ) {\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\t// (IE < 8 does this)\n\t\tdiv.style.display = \"inline\";\n\t\tdiv.style.zoom = 1;\n\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );\n\n\t\t// Check if elements with layout shrink-wrap their children\n\t\t// (IE 6 does this)\n\t\tdiv.style.display = \"\";\n\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 2 );\n\t}\n\n\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\ttds = div.getElementsByTagName( \"td\" );\n\n\t// Check if table cells still have offsetWidth/Height when they are set\n\t// to display:none and there are still other visible table cells in a\n\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t// determining if an element has been hidden directly using\n\t// display:none (it is still safe to use offsets if a parent element is\n\t// hidden; don safety goggles and see bug #4512 for more information).\n\t// (only IE 8 fails this test)\n\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\ttds[ 0 ].style.display = \"\";\n\ttds[ 1 ].style.display = \"none\";\n\n\t// Check if empty table cells still have offsetWidth/Height\n\t// (IE < 8 fail this test)\n\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\tdiv.innerHTML = \"\";\n\n\t// Check if div with explicit width and no margin-right incorrectly\n\t// gets computed margin-right based on width of container. For more\n\t// info see bug #3333\n\t// Fails in WebKit before Feb 2011 nightlies\n\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\tif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\t\tmarginDiv = document.createElement( \"div\" );\n\t\tmarginDiv.style.width = \"0\";\n\t\tmarginDiv.style.marginRight = \"0\";\n\t\tdiv.appendChild( marginDiv );\n\t\tsupport.reliableMarginRight =\n\t\t\t( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t}\n\n\t// Remove the body element we added\n\tbody.innerHTML = \"\";\n\tdocumentElement.removeChild( body );\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t} ) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\treturn support;\n})();\n\n// Keep track of boxModel\njQuery.boxModel = jQuery.support.boxModel;\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([a-z])([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t    var attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"$1-$2\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery.data( elem, deferDataKey, undefined, true );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&\n\t\t( src === \"mark\" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery.data( elem, queueDataKey, undefined, true ) &&\n\t\t\t\t!jQuery.data( elem, markDataKey, undefined, true ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.resolve();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = (type || \"fx\") + \"mark\";\n\t\t\tjQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery.data( elem, key, count, true );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ) {\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\t\tvar q = jQuery.data( elem, type, undefined, true );\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data), true );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\tdefer;\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.done( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise();\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\trinvalidChar = /\\:/,\n\tformHook, boolHook;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\t\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.prop );\n\t},\n\t\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\") || \"\") );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret,\n\t\t\telem = this[0];\n\t\t\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\n\tattrFix: {\n\t\t// Always normalize to ensure hook usage\n\t\ttabindex: \"tabIndex\"\n\t},\n\t\n\tattr: function( elem, name, value, pass ) {\n\t\tvar nType = elem.nodeType;\n\t\t\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( !(\"getAttribute\" in elem) ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tvar ret, hooks,\n\t\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// Normalize the name if needed\n\t\tname = notxml && jQuery.attrFix[ name ] || name;\n\n\t\thooks = jQuery.attrHooks[ name ];\n\n\t\tif ( !hooks ) {\n\t\t\t// Use boolHook for boolean attributes\n\t\t\tif ( rboolean.test( name ) &&\n\t\t\t\t(typeof value === \"boolean\" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {\n\n\t\t\t\thooks = boolHook;\n\n\t\t\t// Use formHook for forms and if the name contains certain characters\n\t\t\t} else if ( formHook && (jQuery.nodeName( elem, \"form\" ) || rinvalidChar.test( name )) ) {\n\t\t\t\thooks = formHook;\n\t\t\t}\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn undefined;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml ) {\n\t\t\treturn hooks.get( elem, name );\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, name ) {\n\t\tvar propName;\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tname = jQuery.attrFix[ name ] || name;\n\t\t\n\t\t\tif ( jQuery.support.getSetAttribute ) {\n\t\t\t\t// Use removeAttribute in browsers that support it\n\t\t\t\telem.removeAttribute( name );\n\t\t\t} else {\n\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\telem.removeAttributeNode( elem.getAttributeNode( name ) );\n\t\t\t}\n\n\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\tif ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {\n\t\t\t\telem[ propName ] = false;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabIndex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\t\n\tprop: function( elem, name, value ) {\n\t\tvar nType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar ret, hooks,\n\t\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.propFix[ name ] || name;\n\t\t\n\t\thooks = jQuery.propHooks[ name ];\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn (elem[ name ] = value);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\t\n\tpropHooks: {}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\treturn elem[ jQuery.propFix[ name ] || name ] ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = value;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// Use the value property for back compat\n// Use the formHook for button elements in IE6/7 (#1954)\njQuery.attrHooks.value = {\n\tget: function( elem, name ) {\n\t\tif ( formHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\treturn formHook.get( elem, name );\n\t\t}\n\t\treturn elem.value;\n\t},\n\tset: function( elem, value, name ) {\n\t\tif ( formHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\treturn formHook.set( elem, value, name );\n\t\t}\n\t\t// Does not return so that setAttribute is also used\n\t\telem.value = value;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !jQuery.support.getSetAttribute ) {\n\n\t// propFix is more comprehensive and contains all fixes\n\tjQuery.attrFix = jQuery.propFix;\n\t\n\t// Use this for any attribute on a form in IE6/7\n\tformHook = jQuery.attrHooks.name = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\t// Return undefined if nodeValue is empty string\n\t\t\treturn ret && ret.nodeValue !== \"\" ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Check form objects in IE (multiple bugs related)\n\t\t\t// Only use nodeValue if the attribute node exists on the form\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret ) {\n\t\t\t\tret.nodeValue = value;\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn (elem.style.cssText = \"\" + value);\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar hasOwn = Object.prototype.hasOwnProperty,\n\trnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspaces = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\t\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\texclusive;\n\n\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\n\t\t// triggerHandler() and global events don't bubble or run the default action\n\t\tif ( onlyHandlers || !elem ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t// points to jQuery.expando\n\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tevent.target = elem;\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\tvar cur = elem,\n\t\t\t// IE doesn't like method names with a colon (#3533, #8272)\n\t\t\tontype = type.indexOf(\":\") < 0 ? \"on\" + type : \"\";\n\n\t\t// Fire event on the current element, then bubble up the DOM tree\n\t\tdo {\n\t\t\tvar handle = jQuery._data( cur, \"handle\" );\n\n\t\t\tevent.currentTarget = cur;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Trigger an inline bound script\n\t\t\tif ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {\n\t\t\t\tevent.result = false;\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\t// Bubble up to document, then to window\n\t\t\tcur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;\n\t\t} while ( cur && !event.isPropagationStopped() );\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction)() check here because IE6/7 fails that test.\n\t\t\t\t// IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.\n\t\t\t\ttry {\n\t\t\t\t\tif ( ontype && elem[ type ] ) {\n\t\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t}\n\t\t\t\t} catch ( ieError ) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = undefined;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn event.result;\n\t},\n\n\thandle: function( event ) {\n\t\tevent = jQuery.event.fix( event || window.event );\n\t\t// Snapshot the handlers list since a called handler may add/remove events.\n\t\tvar handlers = ((jQuery._data( this, \"events\" ) || {})[ event.type ] || []).slice(0),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\targs = Array.prototype.slice.call( arguments, 0 );\n\n\t\t// Use the fix-ed Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.currentTarget = this;\n\n\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t// Triggered event must 1) be non-exclusive and have no namespace, or\n\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event.\n\t\t\tif ( run_all || event.namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\tevent.data = handleObj.data;\n\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar eventDocument = event.target.ownerDocument || document,\n\t\t\t\tdoc = eventDocument.documentElement,\n\t\t\t\tbody = eventDocument.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// set the correct event type\n\tevent.type = event.data;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent && parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( !jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = jQuery.nodeName( elem, \"input\" ) ? elem.type : \"\";\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = jQuery.nodeName( elem, \"input\" ) ? elem.type : \"\";\n\n\t\t\t\tif ( (e.keyCode === 13 && !jQuery.nodeName( elem, \"textarea\" ) ) ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0;\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( donor ) {\n\t\t\t// Donor event is always a native one; fix it and switch its type.\n\t\t\t// Let focusin/out handler cancel the donor focus/blur event.\n\t\t\tvar e = jQuery.event.fix( donor );\n\t\t\te.type = fix;\n\t\t\te.originalEvent = {};\n\t\t\tjQuery.event.trigger( e, null, e.target );\n\t\t\tif ( e.isDefaultPrevented() ) {\n\t\t\t\tdonor.preventDefault();\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\tvar handler;\n\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( arguments.length === 2 || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tif ( name === \"one\" ) {\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\t\treturn fn.apply( this, arguments );\n\t\t\t};\n\t\t\thandler.guid = fn.guid || jQuery.guid++;\n\t\t} else {\n\t\t\thandler = fn;\n\t\t}\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( name === \"die\" && !types &&\n\t\t\t\t\torigSelector && origSelector.charAt(0) === \".\" ) {\n\n\t\t\tcontext.unbind( origSelector );\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data === false || jQuery.isFunction( data ) ) {\n\t\t\tfn = data || returnFalse;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( liveMap[ type ] ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\n\t\t\t\t\t// Make sure not to accidentally match a child element with the same selector\n\t\t\t\t\tif ( related && jQuery.contains( elem, related ) ) {\n\t\t\t\t\t\trelated = elem;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspaces, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && ( typeof selector === \"string\" ?\n\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\t\t\n\t\t// Array\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[ selector ] ) {\n\t\t\t\t\t\tmatches[ selector ] = POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[ selector ];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\tfixDefaultChecked( elem );\n\t} else if ( elem.getElementsByTagName ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType;\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [], j;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( ret[i].getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\trrelNum = /^[+\\-]=/,\n\trrelNumFilter = /[^+\\-\\.\\de]+/g,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true,\n\t\t\"widows\": true,\n\t\t\"orphans\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( type === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && rrelNum.test( value ) ) {\n\t\t\t\tvalue = +value.replace( rrelNumFilter, \"\" ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN( value ) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\tvar ret;\n\t\t\t\tjQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tret = curCSS( elem, \"margin-right\", \"marginRight\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = s.contentType === \"application/x-www-form-urlencoded\" &&\n\t\t( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow,\n\trequestAnimationFrame = window.webkitRequestAnimationFrame ||\n\t    window.mozRequestAnimationFrame ||\n\t    window.oRequestAnimationFrame;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p,\n\t\t\t\tdisplay, e,\n\t\t\t\tparts, start, end, unit;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\tfor ( p in prop ) {\n\n\t\t\t\t// property name normalization\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tval = prop[ name ];\n\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdisplay = defaultDisplay( this.nodeName );\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]();\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\tvar timers = jQuery.timers,\n\t\t\t\ti = timers.length;\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery.dequeue( this );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx,\n\t\t\traf;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\t// Use requestAnimationFrame instead of setInterval if available\n\t\t\tif ( requestAnimationFrame ) {\n\t\t\t\ttimerId = 1;\n\t\t\t\traf = function() {\n\t\t\t\t\t// When timerId gets set to null at any point, this stops\n\t\t\t\t\tif ( timerId ) {\n\t\t\t\t\t\trequestAnimationFrame( raf );\n\t\t\t\t\t\tfx.tick();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\trequestAnimationFrame( raf );\n\t\t\t} else {\n\t\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options,\n\t\t\ti, n;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( i in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery(elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( var p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\toptions.complete.call( elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tfor ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( \"body\" ),\n\t\t\tdisplay = elem.css( \"display\" );\n\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tdocument.body.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html\n\t\t\t// document to it, Webkit & Firefox won't allow reusing the iframe document\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( \"<!doctype><html><body></body></html>\" );\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\tdocument.body.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" || position === \"fixed\") && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\tvar elem, win;\n\n\t\tif ( val === undefined ) {\n\t\t\telem = this[ 0 ];\n\n\t\t\tif ( !elem ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\n\t\t// Set the scroll offset\n\t\treturn this.each(function() {\n\t\t\twin = getWindow( this );\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!i ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t i ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\tthis[ method ] = val;\n\t\t\t}\n\t\t});\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.7.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.form.js",
    "content": "/*!\n * jQuery Form Plugin\n * version: 2.87 (20-OCT-2011)\n * @requires jQuery v1.3.2 or later\n *\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n */\n;(function($) {\n\n/*\n\tUsage Note:\n\t-----------\n\tDo not use both ajaxSubmit and ajaxForm on the same form.  These\n\tfunctions are intended to be exclusive.  Use ajaxSubmit if you want\n\tto bind your own submit handler to the form.  For example,\n\n\t$(document).ready(function() {\n\t\t$('#myForm').bind('submit', function(e) {\n\t\t\te.preventDefault(); // <-- important\n\t\t\t$(this).ajaxSubmit({\n\t\t\t\ttarget: '#output'\n\t\t\t});\n\t\t});\n\t});\n\n\tUse ajaxForm when you want the plugin to manage all the event binding\n\tfor you.  For example,\n\n\t$(document).ready(function() {\n\t\t$('#myForm').ajaxForm({\n\t\t\ttarget: '#output'\n\t\t});\n\t});\n\n\tWhen using ajaxForm, the ajaxSubmit function will be invoked for you\n\tat the appropriate time.\n*/\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n\t// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n\tif (!this.length) {\n\t\tlog('ajaxSubmit: skipping submit process - no element selected');\n\t\treturn this;\n\t}\n\n\tvar method, action, url, $form = this;\n\n\tif (typeof options == 'function') {\n\t\toptions = { success: options };\n\t}\n\n\tmethod = this.attr('method');\n\taction = this.attr('action');\n\turl = (typeof action === 'string') ? $.trim(action) : '';\n\turl = url || window.location.href || '';\n\tif (url) {\n\t\t// clean url (don't include hash vaue)\n\t\turl = (url.match(/^([^#]+)/)||[])[1];\n\t}\n\n\toptions = $.extend(true, {\n\t\turl:  url,\n\t\tsuccess: $.ajaxSettings.success,\n\t\ttype: method || 'GET',\n\t\tiframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n\t}, options);\n\n\t// hook for manipulating the form data before it is extracted;\n\t// convenient for use with rich editors like tinyMCE or FCKEditor\n\tvar veto = {};\n\tthis.trigger('form-pre-serialize', [this, options, veto]);\n\tif (veto.veto) {\n\t\tlog('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n\t\treturn this;\n\t}\n\n\t// provide opportunity to alter form data before it is serialized\n\tif (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n\t\tlog('ajaxSubmit: submit aborted via beforeSerialize callback');\n\t\treturn this;\n\t}\n\n   var traditional = options.traditional;\n   if ( traditional === undefined ) {\n      traditional = $.ajaxSettings.traditional;\n   }\n\n\tvar qx,n,v,a = this.formToArray(options.semantic);\n\tif (options.data) {\n\t\toptions.extraData = options.data;\n      qx = $.param(options.data, traditional);\n\t}\n\n\t// give pre-submit callback an opportunity to abort the submit\n\tif (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n\t\tlog('ajaxSubmit: submit aborted via beforeSubmit callback');\n\t\treturn this;\n\t}\n\n\t// fire vetoable 'validate' event\n\tthis.trigger('form-submit-validate', [a, this, options, veto]);\n\tif (veto.veto) {\n\t\tlog('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n\t\treturn this;\n\t}\n\n\tvar q = $.param(a, traditional);\n   if (qx)\n      q = ( q ? (q + '&' + qx) : qx );\n\n\tif (options.type.toUpperCase() == 'GET') {\n\t\toptions.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n\t\toptions.data = null;  // data is null for 'get'\n\t}\n\telse {\n\t\toptions.data = q; // data is the query string for 'post'\n\t}\n\n\tvar callbacks = [];\n\tif (options.resetForm) {\n\t\tcallbacks.push(function() { $form.resetForm(); });\n\t}\n\tif (options.clearForm) {\n\t\tcallbacks.push(function() { $form.clearForm(options.includeHidden); });\n\t}\n\n\t// perform a load on the target only if dataType is not provided\n\tif (!options.dataType && options.target) {\n\t\tvar oldSuccess = options.success || function(){};\n\t\tcallbacks.push(function(data) {\n\t\t\tvar fn = options.replaceTarget ? 'replaceWith' : 'html';\n\t\t\t$(options.target)[fn](data).each(oldSuccess, arguments);\n\t\t});\n\t}\n\telse if (options.success) {\n\t\tcallbacks.push(options.success);\n\t}\n\n\toptions.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n\t\tvar context = options.context || options;   // jQuery 1.4+ supports scope context\n\t\tfor (var i=0, max=callbacks.length; i < max; i++) {\n\t\t\tcallbacks[i].apply(context, [data, status, xhr || $form, $form]);\n\t\t}\n\t};\n\n\t// are there files to upload?\n\tvar fileInputs = $('input:file', this).length > 0;\n\tvar mp = 'multipart/form-data';\n\tvar multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n\t// options.iframe allows user to force iframe mode\n\t// 06-NOV-09: now defaulting to iframe mode if file input is detected\n   if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {\n\t   // hack to fix Safari hang (thanks to Tim Molendijk for this)\n\t   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n\t   if (options.closeKeepAlive) {\n\t\t   $.get(options.closeKeepAlive, function() { fileUpload(a); });\n\t\t}\n\t   else {\n\t\t   fileUpload(a);\n\t\t}\n   }\n   else {\n\t\t// IE7 massage (see issue 57)\n\t\tif ($.browser.msie && method == 'get' && typeof options.type === \"undefined\") {\n\t\t\tvar ieMeth = $form[0].getAttribute('method');\n\t\t\tif (typeof ieMeth === 'string')\n\t\t\t\toptions.type = ieMeth;\n\t\t}\n\t\t$.ajax(options);\n   }\n\n\t// fire 'notify' event\n\tthis.trigger('form-submit-notify', [this, options]);\n\treturn this;\n\n\n\t// private function for handling file uploads (hat tip to YAHOO!)\n\tfunction fileUpload(a) {\n\t\tvar form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n        var useProp = !!$.fn.prop;\n\n        if (a) {\n            if ( useProp ) {\n            \t// ensure that every serialized input is still enabled\n              \tfor (i=0; i < a.length; i++) {\n                    el = $(form[a[i].name]);\n                    el.prop('disabled', false);\n              \t}\n            } else {\n              \tfor (i=0; i < a.length; i++) {\n                    el = $(form[a[i].name]);\n                    el.removeAttr('disabled');\n              \t}\n            };\n        }\n\n\t\tif ($(':input[name=submit],:input[id=submit]', form).length) {\n\t\t\t// if there is an input with a name or id of 'submit' then we won't be\n\t\t\t// able to invoke the submit fn on the form (at least not x-browser)\n\t\t\talert('Error: Form elements must not have name or id of \"submit\".');\n\t\t\treturn;\n\t\t}\n\n\t\ts = $.extend(true, {}, $.ajaxSettings, options);\n\t\ts.context = s.context || s;\n\t\tid = 'jqFormIO' + (new Date().getTime());\n\t\tif (s.iframeTarget) {\n\t\t\t$io = $(s.iframeTarget);\n\t\t\tn = $io.attr('name');\n\t\t\tif (n == null)\n\t\t\t \t$io.attr('name', id);\n\t\t\telse\n\t\t\t\tid = n;\n\t\t}\n\t\telse {\n\t\t\t$io = $('<iframe name=\"' + id + '\" src=\"'+ s.iframeSrc +'\" />');\n\t\t\t$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });\n\t\t}\n\t\tio = $io[0];\n\n\n\t\txhr = { // mock object\n\t\t\taborted: 0,\n\t\t\tresponseText: null,\n\t\t\tresponseXML: null,\n\t\t\tstatus: 0,\n\t\t\tstatusText: 'n/a',\n\t\t\tgetAllResponseHeaders: function() {},\n\t\t\tgetResponseHeader: function() {},\n\t\t\tsetRequestHeader: function() {},\n\t\t\tabort: function(status) {\n\t\t\t\tvar e = (status === 'timeout' ? 'timeout' : 'aborted');\n\t\t\t\tlog('aborting upload... ' + e);\n\t\t\t\tthis.aborted = 1;\n\t\t\t\t$io.attr('src', s.iframeSrc); // abort op in progress\n\t\t\t\txhr.error = e;\n\t\t\t\ts.error && s.error.call(s.context, xhr, e, status);\n\t\t\t\tg && $.event.trigger(\"ajaxError\", [xhr, s, e]);\n\t\t\t\ts.complete && s.complete.call(s.context, xhr, e);\n\t\t\t}\n\t\t};\n\n\t\tg = s.global;\n\t\t// trigger ajax global events so that activity/block indicators work like normal\n\t\tif (g && ! $.active++) {\n\t\t\t$.event.trigger(\"ajaxStart\");\n\t\t}\n\t\tif (g) {\n\t\t\t$.event.trigger(\"ajaxSend\", [xhr, s]);\n\t\t}\n\n\t\tif (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {\n\t\t\tif (s.global) {\n\t\t\t\t$.active--;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (xhr.aborted) {\n\t\t\treturn;\n\t\t}\n\n\t\t// add submitting element to data if we know it\n\t\tsub = form.clk;\n\t\tif (sub) {\n\t\t\tn = sub.name;\n\t\t\tif (n && !sub.disabled) {\n\t\t\t\ts.extraData = s.extraData || {};\n\t\t\t\ts.extraData[n] = sub.value;\n\t\t\t\tif (sub.type == \"image\") {\n\t\t\t\t\ts.extraData[n+'.x'] = form.clk_x;\n\t\t\t\t\ts.extraData[n+'.y'] = form.clk_y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar CLIENT_TIMEOUT_ABORT = 1;\n\t\tvar SERVER_ABORT = 2;\n\n\t\tfunction getDoc(frame) {\n\t\t\tvar doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;\n\t\t\treturn doc;\n\t\t}\n\n\t\t// take a breath so that pending repaints get some cpu time before the upload starts\n\t\tfunction doSubmit() {\n\t\t\t// make sure form attrs are set\n\t\t\tvar t = $form.attr('target'), a = $form.attr('action');\n\n\t\t\t// update form attrs in IE friendly way\n\t\t\tform.setAttribute('target',id);\n\t\t\tif (!method) {\n\t\t\t\tform.setAttribute('method', 'POST');\n\t\t\t}\n\t\t\tif (a != s.url) {\n\t\t\t\tform.setAttribute('action', s.url);\n\t\t\t}\n\n\t\t\t// ie borks in some cases when setting encoding\n\t\t\tif (! s.skipEncodingOverride && (!method || /post/i.test(method))) {\n\t\t\t\t$form.attr({\n\t\t\t\t\tencoding: 'multipart/form-data',\n\t\t\t\t\tenctype:  'multipart/form-data'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// support timout\n\t\t\tif (s.timeout) {\n\t\t\t\ttimeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);\n\t\t\t}\n\n\t\t\t// look for server aborts\n\t\t\tfunction checkState() {\n\t\t\t\ttry {\n\t\t\t\t\tvar state = getDoc(io).readyState;\n\t\t\t\t\tlog('state = ' + state);\n\t\t\t\t\tif (state.toLowerCase() == 'uninitialized')\n\t\t\t\t\t\tsetTimeout(checkState,50);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tlog('Server abort: ' , e, ' (', e.name, ')');\n\t\t\t\t\tcb(SERVER_ABORT);\n\t\t\t\t\ttimeoutHandle && clearTimeout(timeoutHandle);\n\t\t\t\t\ttimeoutHandle = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add \"extra\" data to form if provided in options\n\t\t\tvar extraInputs = [];\n\t\t\ttry {\n\t\t\t\tif (s.extraData) {\n\t\t\t\t\tfor (var n in s.extraData) {\n\t\t\t\t\t\textraInputs.push(\n\t\t\t\t\t\t\t$('<input type=\"hidden\" name=\"'+n+'\" />').attr('value',s.extraData[n])\n\t\t\t\t\t\t\t\t.appendTo(form)[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!s.iframeTarget) {\n\t\t\t\t\t// add iframe to doc and submit the form\n\t\t\t\t\t$io.appendTo('body');\n\t                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);\n\t\t\t\t}\n\t\t\t\tsetTimeout(checkState,15);\n\t\t\t\tform.submit();\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\t// reset attrs and remove \"extra\" input elements\n\t\t\t\tform.setAttribute('action',a);\n\t\t\t\tif(t) {\n\t\t\t\t\tform.setAttribute('target', t);\n\t\t\t\t} else {\n\t\t\t\t\t$form.removeAttr('target');\n\t\t\t\t}\n\t\t\t\t$(extraInputs).remove();\n\t\t\t}\n\t\t}\n\n\t\tif (s.forceSync) {\n\t\t\tdoSubmit();\n\t\t}\n\t\telse {\n\t\t\tsetTimeout(doSubmit, 10); // this lets dom updates render\n\t\t}\n\n\t\tvar data, doc, domCheckCount = 50, callbackProcessed;\n\n\t\tfunction cb(e) {\n\t\t\tif (xhr.aborted || callbackProcessed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tdoc = getDoc(io);\n\t\t\t}\n\t\t\tcatch(ex) {\n\t\t\t\tlog('cannot access response document: ', ex);\n\t\t\t\te = SERVER_ABORT;\n\t\t\t}\n\t\t\tif (e === CLIENT_TIMEOUT_ABORT && xhr) {\n\t\t\t\txhr.abort('timeout');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (e == SERVER_ABORT && xhr) {\n\t\t\t\txhr.abort('server abort');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!doc || doc.location.href == s.iframeSrc) {\n\t\t\t\t// response not received yet\n\t\t\t\tif (!timedOut)\n\t\t\t\t\treturn;\n\t\t\t}\n            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);\n\n\t\t\tvar status = 'success', errMsg;\n\t\t\ttry {\n\t\t\t\tif (timedOut) {\n\t\t\t\t\tthrow 'timeout';\n\t\t\t\t}\n\n\t\t\t\tvar isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);\n\t\t\t\tlog('isXml='+isXml);\n\t\t\t\tif (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {\n\t\t\t\t\tif (--domCheckCount) {\n\t\t\t\t\t\t// in some browsers (Opera) the iframe DOM is not always traversable when\n\t\t\t\t\t\t// the onload callback fires, so we loop a bit to accommodate\n\t\t\t\t\t\tlog('requeing onLoad callback, DOM not available');\n\t\t\t\t\t\tsetTimeout(cb, 250);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// let this fall through because server response could be an empty document\n\t\t\t\t\t//log('Could not access iframe DOM after mutiple tries.');\n\t\t\t\t\t//throw 'DOMException: not available';\n\t\t\t\t}\n\n\t\t\t\t//log('response detected');\n                var docRoot = doc.body ? doc.body : doc.documentElement;\n                xhr.responseText = docRoot ? docRoot.innerHTML : null;\n\t\t\t\txhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;\n\t\t\t\tif (isXml)\n\t\t\t\t\ts.dataType = 'xml';\n\t\t\t\txhr.getResponseHeader = function(header){\n\t\t\t\t\tvar headers = {'content-type': s.dataType};\n\t\t\t\t\treturn headers[header];\n\t\t\t\t};\n                // support for XHR 'status' & 'statusText' emulation :\n                if (docRoot) {\n                    xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;\n                    xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;\n                }\n\n\t\t\t\tvar dt = (s.dataType || '').toLowerCase();\n\t\t\t\tvar scr = /(json|script|text)/.test(dt);\n\t\t\t\tif (scr || s.textarea) {\n\t\t\t\t\t// see if user embedded response in textarea\n\t\t\t\t\tvar ta = doc.getElementsByTagName('textarea')[0];\n\t\t\t\t\tif (ta) {\n\t\t\t\t\t\txhr.responseText = ta.value;\n                        // support for XHR 'status' & 'statusText' emulation :\n                        xhr.status = Number( ta.getAttribute('status') ) || xhr.status;\n                        xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse if (scr) {\n\t\t\t\t\t\t// account for browsers injecting pre around json response\n\t\t\t\t\t\tvar pre = doc.getElementsByTagName('pre')[0];\n\t\t\t\t\t\tvar b = doc.getElementsByTagName('body')[0];\n\t\t\t\t\t\tif (pre) {\n\t\t\t\t\t\t\txhr.responseText = pre.textContent ? pre.textContent : pre.innerText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (b) {\n\t\t\t\t\t\t\txhr.responseText = b.textContent ? b.textContent : b.innerText;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (dt == 'xml' && !xhr.responseXML && xhr.responseText != null) {\n\t\t\t\t\txhr.responseXML = toXml(xhr.responseText);\n\t\t\t\t}\n\n                try {\n                    data = httpData(xhr, dt, s);\n                }\n                catch (e) {\n                    status = 'parsererror';\n                    xhr.error = errMsg = (e || status);\n                }\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tlog('error caught: ',e);\n\t\t\t\tstatus = 'error';\n                xhr.error = errMsg = (e || status);\n\t\t\t}\n\n\t\t\tif (xhr.aborted) {\n\t\t\t\tlog('upload aborted');\n\t\t\t\tstatus = null;\n\t\t\t}\n\n            if (xhr.status) { // we've set xhr.status\n                status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';\n            }\n\n\t\t\t// ordering of these callbacks/triggers is odd, but that's how $.ajax does it\n\t\t\tif (status === 'success') {\n\t\t\t\ts.success && s.success.call(s.context, data, 'success', xhr);\n\t\t\t\tg && $.event.trigger(\"ajaxSuccess\", [xhr, s]);\n\t\t\t}\n            else if (status) {\n\t\t\t\tif (errMsg == undefined)\n\t\t\t\t\terrMsg = xhr.statusText;\n\t\t\t\ts.error && s.error.call(s.context, xhr, status, errMsg);\n\t\t\t\tg && $.event.trigger(\"ajaxError\", [xhr, s, errMsg]);\n            }\n\n\t\t\tg && $.event.trigger(\"ajaxComplete\", [xhr, s]);\n\n\t\t\tif (g && ! --$.active) {\n\t\t\t\t$.event.trigger(\"ajaxStop\");\n\t\t\t}\n\n\t\t\ts.complete && s.complete.call(s.context, xhr, status);\n\n\t\t\tcallbackProcessed = true;\n\t\t\tif (s.timeout)\n\t\t\t\tclearTimeout(timeoutHandle);\n\n\t\t\t// clean up\n\t\t\tsetTimeout(function() {\n\t\t\t\tif (!s.iframeTarget)\n\t\t\t\t\t$io.remove();\n\t\t\t\txhr.responseXML = null;\n\t\t\t}, 100);\n\t\t}\n\n\t\tvar toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)\n\t\t\tif (window.ActiveXObject) {\n\t\t\t\tdoc = new ActiveXObject('Microsoft.XMLDOM');\n\t\t\t\tdoc.async = 'false';\n\t\t\t\tdoc.loadXML(s);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdoc = (new DOMParser()).parseFromString(s, 'text/xml');\n\t\t\t}\n\t\t\treturn (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;\n\t\t};\n\t\tvar parseJSON = $.parseJSON || function(s) {\n\t\t\treturn window['eval']('(' + s + ')');\n\t\t};\n\n\t\tvar httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4\n\n\t\t\tvar ct = xhr.getResponseHeader('content-type') || '',\n\t\t\t\txml = type === 'xml' || !type && ct.indexOf('xml') >= 0,\n\t\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\t\tif (xml && data.documentElement.nodeName === 'parsererror') {\n\t\t\t\t$.error && $.error('parsererror');\n\t\t\t}\n\t\t\tif (s && s.dataFilter) {\n\t\t\t\tdata = s.dataFilter(data, type);\n\t\t\t}\n\t\t\tif (typeof data === 'string') {\n\t\t\t\tif (type === 'json' || !type && ct.indexOf('json') >= 0) {\n\t\t\t\t\tdata = parseJSON(data);\n\t\t\t\t} else if (type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0) {\n\t\t\t\t\t$.globalEval(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t};\n\t}\n};\n\n/**\n * ajaxForm() provides a mechanism for fully automating form submission.\n *\n * The advantages of using this method instead of ajaxSubmit() are:\n *\n * 1: This method will include coordinates for <input type=\"image\" /> elements (if the element\n *\tis used to submit the form).\n * 2. This method will include the submit element's name/value data (for the element that was\n *\tused to submit the form).\n * 3. This method binds the submit() method to the form for you.\n *\n * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely\n * passes the options argument along after properly binding events for submit elements and\n * the form itself.\n */\n$.fn.ajaxForm = function(options) {\n\t// in jQuery 1.3+ we can fix mistakes with the ready state\n\tif (this.length === 0) {\n\t\tvar o = { s: this.selector, c: this.context };\n\t\tif (!$.isReady && o.s) {\n\t\t\tlog('DOM not ready, queuing ajaxForm');\n\t\t\t$(function() {\n\t\t\t\t$(o.s,o.c).ajaxForm(options);\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\t\t// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()\n\t\tlog('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));\n\t\treturn this;\n\t}\n\n\treturn this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {\n\t\tif (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed\n\t\t\te.preventDefault();\n\t\t\t$(this).ajaxSubmit(options);\n\t\t}\n\t}).bind('click.form-plugin', function(e) {\n\t\tvar target = e.target;\n\t\tvar $el = $(target);\n\t\tif (!($el.is(\":submit,input:image\"))) {\n\t\t\t// is this a child element of the submit el?  (ex: a span within a button)\n\t\t\tvar t = $el.closest(':submit');\n\t\t\tif (t.length == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttarget = t[0];\n\t\t}\n\t\tvar form = this;\n\t\tform.clk = target;\n\t\tif (target.type == 'image') {\n\t\t\tif (e.offsetX != undefined) {\n\t\t\t\tform.clk_x = e.offsetX;\n\t\t\t\tform.clk_y = e.offsetY;\n\t\t\t} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin\n\t\t\t\tvar offset = $el.offset();\n\t\t\t\tform.clk_x = e.pageX - offset.left;\n\t\t\t\tform.clk_y = e.pageY - offset.top;\n\t\t\t} else {\n\t\t\t\tform.clk_x = e.pageX - target.offsetLeft;\n\t\t\t\tform.clk_y = e.pageY - target.offsetTop;\n\t\t\t}\n\t\t}\n\t\t// clear form vars\n\t\tsetTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);\n\t});\n};\n\n// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm\n$.fn.ajaxFormUnbind = function() {\n\treturn this.unbind('submit.form-plugin click.form-plugin');\n};\n\n/**\n * formToArray() gathers form element data into an array of objects that can\n * be passed to any of the following ajax functions: $.get, $.post, or load.\n * Each object in the array has both a 'name' and 'value' property.  An example of\n * an array for a simple login form might be:\n *\n * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]\n *\n * It is this array that is passed to pre-submit callback functions provided to the\n * ajaxSubmit() and ajaxForm() methods.\n */\n$.fn.formToArray = function(semantic) {\n\tvar a = [];\n\tif (this.length === 0) {\n\t\treturn a;\n\t}\n\n\tvar form = this[0];\n\tvar els = semantic ? form.getElementsByTagName('*') : form.elements;\n\tif (!els) {\n\t\treturn a;\n\t}\n\n\tvar i,j,n,v,el,max,jmax;\n\tfor(i=0, max=els.length; i < max; i++) {\n\t\tel = els[i];\n\t\tn = el.name;\n\t\tif (!n) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (semantic && form.clk && el.type == \"image\") {\n\t\t\t// handle image inputs on the fly when semantic == true\n\t\t\tif(!el.disabled && form.clk == el) {\n\t\t\t\ta.push({name: n, value: $(el).val()});\n\t\t\t\ta.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tv = $.fieldValue(el, true);\n\t\tif (v && v.constructor == Array) {\n\t\t\tfor(j=0, jmax=v.length; j < jmax; j++) {\n\t\t\t\ta.push({name: n, value: v[j]});\n\t\t\t}\n\t\t}\n\t\telse if (v !== null && typeof v != 'undefined') {\n\t\t\ta.push({name: n, value: v});\n\t\t}\n\t}\n\n\tif (!semantic && form.clk) {\n\t\t// input type=='image' are not found in elements array! handle it here\n\t\tvar $input = $(form.clk), input = $input[0];\n\t\tn = input.name;\n\t\tif (n && !input.disabled && input.type == 'image') {\n\t\t\ta.push({name: n, value: $input.val()});\n\t\t\ta.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n\t\t}\n\t}\n\treturn a;\n};\n\n/**\n * Serializes form data into a 'submittable' string. This method will return a string\n * in the format: name1=value1&amp;name2=value2\n */\n$.fn.formSerialize = function(semantic) {\n\t//hand off to jQuery.param for proper encoding\n\treturn $.param(this.formToArray(semantic));\n};\n\n/**\n * Serializes all field elements in the jQuery object into a query string.\n * This method will return a string in the format: name1=value1&amp;name2=value2\n */\n$.fn.fieldSerialize = function(successful) {\n\tvar a = [];\n\tthis.each(function() {\n\t\tvar n = this.name;\n\t\tif (!n) {\n\t\t\treturn;\n\t\t}\n\t\tvar v = $.fieldValue(this, successful);\n\t\tif (v && v.constructor == Array) {\n\t\t\tfor (var i=0,max=v.length; i < max; i++) {\n\t\t\t\ta.push({name: n, value: v[i]});\n\t\t\t}\n\t\t}\n\t\telse if (v !== null && typeof v != 'undefined') {\n\t\t\ta.push({name: this.name, value: v});\n\t\t}\n\t});\n\t//hand off to jQuery.param for proper encoding\n\treturn $.param(a);\n};\n\n/**\n * Returns the value(s) of the element in the matched set.  For example, consider the following form:\n *\n *  <form><fieldset>\n *\t  <input name=\"A\" type=\"text\" />\n *\t  <input name=\"A\" type=\"text\" />\n *\t  <input name=\"B\" type=\"checkbox\" value=\"B1\" />\n *\t  <input name=\"B\" type=\"checkbox\" value=\"B2\"/>\n *\t  <input name=\"C\" type=\"radio\" value=\"C1\" />\n *\t  <input name=\"C\" type=\"radio\" value=\"C2\" />\n *  </fieldset></form>\n *\n *  var v = $(':text').fieldValue();\n *  // if no values are entered into the text inputs\n *  v == ['','']\n *  // if values entered into the text inputs are 'foo' and 'bar'\n *  v == ['foo','bar']\n *\n *  var v = $(':checkbox').fieldValue();\n *  // if neither checkbox is checked\n *  v === undefined\n *  // if both checkboxes are checked\n *  v == ['B1', 'B2']\n *\n *  var v = $(':radio').fieldValue();\n *  // if neither radio is checked\n *  v === undefined\n *  // if first radio is checked\n *  v == ['C1']\n *\n * The successful argument controls whether or not the field element must be 'successful'\n * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).\n * The default value of the successful argument is true.  If this value is false the value(s)\n * for each element is returned.\n *\n * Note: This method *always* returns an array.  If no valid value can be determined the\n *\t   array will be empty, otherwise it will contain one or more values.\n */\n$.fn.fieldValue = function(successful) {\n\tfor (var val=[], i=0, max=this.length; i < max; i++) {\n\t\tvar el = this[i];\n\t\tvar v = $.fieldValue(el, successful);\n\t\tif (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {\n\t\t\tcontinue;\n\t\t}\n\t\tv.constructor == Array ? $.merge(val, v) : val.push(v);\n\t}\n\treturn val;\n};\n\n/**\n * Returns the value of the field element.\n */\n$.fieldValue = function(el, successful) {\n\tvar n = el.name, t = el.type, tag = el.tagName.toLowerCase();\n\tif (successful === undefined) {\n\t\tsuccessful = true;\n\t}\n\n\tif (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||\n\t\t(t == 'checkbox' || t == 'radio') && !el.checked ||\n\t\t(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||\n\t\ttag == 'select' && el.selectedIndex == -1)) {\n\t\t\treturn null;\n\t}\n\n\tif (tag == 'select') {\n\t\tvar index = el.selectedIndex;\n\t\tif (index < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tvar a = [], ops = el.options;\n\t\tvar one = (t == 'select-one');\n\t\tvar max = (one ? index+1 : ops.length);\n\t\tfor(var i=(one ? index : 0); i < max; i++) {\n\t\t\tvar op = ops[i];\n\t\t\tif (op.selected) {\n\t\t\t\tvar v = op.value;\n\t\t\t\tif (!v) { // extra pain for IE...\n\t\t\t\t\tv = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;\n\t\t\t\t}\n\t\t\t\tif (one) {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t\ta.push(v);\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n\treturn $(el).val();\n};\n\n/**\n * Clears the form data.  Takes the following actions on the form's input fields:\n *  - input text fields will have their 'value' property set to the empty string\n *  - select elements will have their 'selectedIndex' property set to -1\n *  - checkbox and radio inputs will have their 'checked' property set to false\n *  - inputs of type submit, button, reset, and hidden will *not* be effected\n *  - button elements will *not* be effected\n */\n$.fn.clearForm = function(includeHidden) {\n\treturn this.each(function() {\n\t\t$('input,select,textarea', this).clearFields(includeHidden);\n\t});\n};\n\n/**\n * Clears the selected form elements.\n */\n$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {\n\tvar re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list\n\treturn this.each(function() {\n\t\tvar t = this.type, tag = this.tagName.toLowerCase();\n\t\tif (re.test(t) || tag == 'textarea' || (includeHidden && /hidden/.test(t)) ) {\n\t\t\tthis.value = '';\n\t\t}\n\t\telse if (t == 'checkbox' || t == 'radio') {\n\t\t\tthis.checked = false;\n\t\t}\n\t\telse if (tag == 'select') {\n\t\t\tthis.selectedIndex = -1;\n\t\t}\n\t});\n};\n\n/**\n * Resets the form data.  Causes all form elements to be reset to their original value.\n */\n$.fn.resetForm = function() {\n\treturn this.each(function() {\n\t\t// guard against an input with the name of 'reset'\n\t\t// note that IE reports the reset function as an 'object'\n\t\tif (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {\n\t\t\tthis.reset();\n\t\t}\n\t});\n};\n\n/**\n * Enables or disables any matching elements.\n */\n$.fn.enable = function(b) {\n\tif (b === undefined) {\n\t\tb = true;\n\t}\n\treturn this.each(function() {\n\t\tthis.disabled = !b;\n\t});\n};\n\n/**\n * Checks/unchecks any matching checkboxes or radio buttons and\n * selects/deselects and matching option elements.\n */\n$.fn.selected = function(select) {\n\tif (select === undefined) {\n\t\tselect = true;\n\t}\n\treturn this.each(function() {\n\t\tvar t = this.type;\n\t\tif (t == 'checkbox' || t == 'radio') {\n\t\t\tthis.checked = select;\n\t\t}\n\t\telse if (this.tagName.toLowerCase() == 'option') {\n\t\t\tvar $sel = $(this).parent('select');\n\t\t\tif (select && $sel[0] && $sel[0].type == 'select-one') {\n\t\t\t\t// deselect all other options\n\t\t\t\t$sel.find('option').selected(false);\n\t\t\t}\n\t\t\tthis.selected = select;\n\t\t}\n\t});\n};\n\n// expose debug var\n$.fn.ajaxSubmit.debug = false;\n\n// helper fn for console logging\nfunction log() {\n\tif (!$.fn.ajaxSubmit.debug)\n\t\treturn;\n\tvar msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');\n\tif (window.console && window.console.log) {\n\t\twindow.console.log(msg);\n\t}\n\telse if (window.opera && window.opera.postError) {\n\t\twindow.opera.postError(msg);\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.3.2\n * http://jquery.com/\n *\n * Copyright (c) 2009 John Resig\n * Dual licensed under the MIT and GPL licenses.\n * http://docs.jquery.com/License\n *\n * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)\n * Revision: 6246\n */\n(function(){\n\nvar \n\t// Will speed up references to window, and allows munging its name.\n\twindow = this,\n\t// Will speed up references to undefined, and allows munging its name.\n\tundefined,\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\tjQuery = window.jQuery = window.$ = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#([\\w-]+)$/,\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\tthis.context = selector;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t// by name instead of ID\n\t\t\t\t\tif ( elem && elem.id != match[3] )\n\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\tvar ret = jQuery( elem || [] );\n\t\t\t\t\tret.context = document;\n\t\t\t\t\tret.selector = selector;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document ).ready( selector );\n\n\t\t// Make sure that old selector state is passed along\n\t\tif ( selector.selector && selector.context ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn this.setArray(jQuery.isArray( selector ) ?\n\t\t\tselector :\n\t\t\tjQuery.makeArray(selector));\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.3.2\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num === undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tArray.prototype.slice.call( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" )\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\telse if ( name )\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( typeof name === \"string\" )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text !== \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).clone();\n\n\t\t\tif ( this[0].parentNode )\n\t\t\t\twrap.insertBefore( this[0] );\n\n\t\t\twrap.map(function(){\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: [].push,\n\tsort: [].sort,\n\tsplice: [].splice,\n\n\tfind: function( selector ) {\n\t\tif ( this.length === 1 ) {\n\t\t\tvar ret = this.pushStack( [], \"find\", selector );\n\t\t\tret.length = 0;\n\t\t\tjQuery.find( selector, this[0], ret );\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery.unique(jQuery.map(this, function(elem){\n\t\t\t\treturn jQuery.find( selector, elem );\n\t\t\t})), \"find\", selector );\n\t\t}\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = this.ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\").replace(/^\\s*/, \"\")])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tvar orig = this.find(\"*\").andSelf(), i = 0;\n\n\t\t\tret.find(\"*\").andSelf().each(function(){\n\t\t\t\tif ( this.nodeName !== orig[i].nodeName )\n\t\t\t\t\treturn;\n\n\t\t\t\tvar events = jQuery.data( orig[i], \"events\" );\n\n\t\t\t\tfor ( var type in events ) {\n\t\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ti++;\n\t\t\t});\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, jQuery.grep(this, function(elem){\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}) ), \"filter\", selector );\n\t},\n\n\tclosest: function( selector ) {\n\t\tvar pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,\n\t\t\tcloser = 0;\n\n\t\treturn this.map(function(){\n\t\t\tvar cur = this;\n\t\t\twhile ( cur && cur.ownerDocument ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {\n\t\t\t\t\tjQuery.data(cur, \"closest\", closer);\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tcloser++;\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( typeof selector === \"string\" )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ), \"not\", selector );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn !!selector && this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\t\t\t\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif( jQuery.nodeName( elem, 'option' ) )\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( typeof value === \"number\" )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value === undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\") :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, +i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ),\n\t\t\t\"slice\", Array.prototype.slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tif ( this[0] ) {\n\t\t\tvar fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),\n\t\t\t\tscripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),\n\t\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( first )\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ )\n\t\t\t\t\tcallback.call( root(this[i], first), this.length > 1 || i > 0 ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) : fragment );\n\t\t\n\t\t\tif ( scripts )\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t}\n\n\t\treturn this;\n\t\t\n\t\tfunction root( elem, cur ) {\n\t\t\treturn table && jQuery.nodeName(elem, \"table\") && jQuery.nodeName(cur, \"tr\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy === \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n// exclude the following css properties to add px\nvar\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {},\n\ttoString = Object.prototype.toString;\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t\t!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && /\\S/.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.support.scriptEval )\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\telse\n\t\t\t\tscript.text = data;\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn typeof value === \"number\" && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames !== undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" )\n\t\t\t\t\treturn;\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra )\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tif ( extra === \"margin\" )\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\telse\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && !jQuery.support.opacity ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context, fragment ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" )\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\t// If a single string is passed in and it's a single tag\n\t\t// just do a createElement and skip the rest\n\t\tif ( !fragment && elems.length === 1 && typeof elems[0] === \"string\" ) {\n\t\t\tvar match = /^<(\\w+)\\s*\\/?>$/.exec(elems[0]);\n\t\t\tif ( match )\n\t\t\t\treturn [ context.createElement( match[1] ) ];\n\t\t}\n\n\t\tvar ret = [], scripts = [], div = context.createElement(\"div\");\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( typeof elem === \"number\" )\n\t\t\t\telem += '';\n\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = elem.replace(/^\\s+/, \"\").substring(0, 10).toLowerCase();\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\t!jQuery.support.htmlSerialize &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = /<tbody/i.test(elem),\n\t\t\t\t\t\ttbody = !tags.indexOf(\"<table\") && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && /^\\s/.test( elem ) )\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\t\t\t\t\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.nodeType )\n\t\t\t\tret.push( elem );\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 )\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn scripts;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && elem.parentNode )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name == \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\t\t\t\t\treturn attributeNode && attributeNode.specified\n\t\t\t\t\t\t? attributeNode.value\n\t\t\t\t\t\t: elem.nodeName.match(/(button|input|object|select|textarea)/i)\n\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t: elem.nodeName.match(/^(a|area)$/i) && elem.href\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\tif( i == null || typeof array === \"string\" || jQuery.isFunction(array) || array.setInterval )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( !jQuery.support.getAll ) {\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\n// Use of jQuery.browser is deprecated.\n// It's included for backwards compatibility and plugins,\n// although they should work to migrate away.\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [0,'0'])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ), name, selector );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector );\n\n\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\tret = ret.concat( elems );\n\t\t}\n\n\t\treturn this.pushStack( ret, name, selector );\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames, state ) {\n\t\tif( typeof state !== \"boolean\" )\n\t\t\tstate = !jQuery.className.has( this, classNames );\n\t\tjQuery.className[ state ? \"add\" : \"remove\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add([this]).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery(this).children().remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ){\n\t\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\n\t\t\tvar q = jQuery.data( elem, type );\n\t\n\t\t\tif ( !q || jQuery.isArray(data) )\n\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\t\t\telse if( data )\n\t\t\t\tq.push( data );\n\t\n\t\t}\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ){\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\t\t\n\t\tif( !type || type === \"fx\" )\n\t\t\tfn = queue[0];\n\t\t\t\n\t\tif( fn !== undefined )\n\t\t\tfn.call(elem);\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\tqueue: function(type, data){\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined )\n\t\t\treturn jQuery.queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\t\t\t\n\t\t\t if( type == \"fx\" && queue.length == 1 )\n\t\t\t\tqueue[0].call(this);\n\t\t});\n\t},\n\tdequeue: function(type){\n\t\treturn this.each(function(){\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t}\n});/*!\n * Sizzle CSS Selector Engine - v0.9.3\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString;\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 )\n\t\treturn [];\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, check, mode, extra, prune = true;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tchunker.lastIndex = 0;\n\t\n\twhile ( (m = chunker.exec(selector)) !== null ) {\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = RegExp.rightContext;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] )\n\t\t\t\t\tselector += parts.shift();\n\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar ret = seed ?\n\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\tSizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );\n\t\tset = Sizzle.filter( ret.expr, ret.set );\n\n\t\tif ( parts.length > 0 ) {\n\t\t\tcheckSet = makeArray(set);\n\t\t} else {\n\t\t\tprune = false;\n\t\t}\n\n\t\twhile ( parts.length ) {\n\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\tcur = \"\";\n\t\t\t} else {\n\t\t\t\tpop = parts.pop();\n\t\t\t}\n\n\t\t\tif ( pop == null ) {\n\t\t\t\tpop = context;\n\t\t\t}\n\n\t\t\tExpr.relative[ cur ]( checkSet, pop, isXML(context) );\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tthrow \"Syntax error, unrecognized expression: \" + (cur || selector);\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, context, results, seed );\n\n\t\tif ( sortOrder ) {\n\t\t\thasDuplicate = false;\n\t\t\tresults.sort(sortOrder);\n\n\t\t\tif ( hasDuplicate ) {\n\t\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.match[ type ].exec( expr )) ) {\n\t\t\tvar left = RegExp.leftContext;\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.match[ type ].exec( expr )) != null ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item;\n\t\t\t\tanyFound = false;\n\n\t\t\t\tif ( curLoop == result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr == old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tthrow \"Syntax error, unrecognized expression: \" + expr;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*_-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)(?:\\((['\"]*)((?:\\([^\\)]+\\)|[^\\2\\(\\)]*)+)\\2\\))?/\n\t},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag && !isXML ) {\n\t\t\t\tpart = part.toUpperCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = isXML ? part : part.toUpperCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace )\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\tfor ( var i = 0; curLoop[i] === false; i++ ){}\n\t\t\treturn curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] == \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] == \"even\" && \"2n\" || match[2] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( match[3].match(chunker).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toUpperCase() === \"BUTTON\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile (node = node.previousSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == 'first') return true;\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile (node = node.nextSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first == 1 && last == 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\treturn diff == 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first == 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue != check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes );\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.selectNode(a);\n\t\taRange.collapse(true);\n\t\tbRange.selectNode(b);\n\t\tbRange.collapse(true);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"form\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<input name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( !!document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n})();\n\nif ( document.querySelectorAll ) (function(){\n\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t// Safari can't handle uppercase or unicode characters when\n\t// in quirks mode.\n\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\treturn;\n\t}\n\t\n\tSizzle = function(query, context, extra, seed){\n\t\tcontext = context || document;\n\n\t\t// Only use querySelectorAll on non-XML documents\n\t\t// (ID selectors don't work in non-HTML documents)\n\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\ttry {\n\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t} catch(e){}\n\t\t}\n\t\t\n\t\treturn oldSizzle(query, context, extra, seed);\n\t};\n\n\tSizzle.find = oldSizzle.find;\n\tSizzle.filter = oldSizzle.filter;\n\tSizzle.selectors = oldSizzle.selectors;\n\tSizzle.matches = oldSizzle.matches;\n})();\n\nif ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\n\tvar div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\tif ( div.getElementsByClassName(\"e\").length === 0 )\n\t\treturn;\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 )\n\t\treturn;\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ){\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ) {\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ?  function(a, b){\n\treturn a.compareDocumentPosition(b) & 16;\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t!!elem.ownerDocument && isXML( elem.ownerDocument );\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.filter = Sizzle.filter;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\n\nSizzle.selectors.filters.hidden = function(elem){\n\treturn elem.offsetWidth === 0 || elem.offsetHeight === 0;\n};\n\nSizzle.selectors.filters.visible = function(elem){\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0;\n};\n\nSizzle.selectors.filters.animated = function(elem){\n\treturn jQuery.grep(jQuery.timers, function(fn){\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\njQuery.multiFilter = function( expr, elems, not ) {\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn Sizzle.matches(expr, elems);\n};\n\njQuery.dir = function( elem, dir ){\n\tvar matched = [], cur = elem[dir];\n\twhile ( cur && cur != document ) {\n\t\tif ( cur.nodeType == 1 )\n\t\t\tmatched.push( cur );\n\t\tcur = cur[dir];\n\t}\n\treturn matched;\n};\n\njQuery.nth = function(cur, result, dir, elem){\n\tresult = result || 1;\n\tvar num = 0;\n\n\tfor ( ; cur; cur = cur[dir] )\n\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\tbreak;\n\n\treturn cur;\n};\n\njQuery.sibling = function(n, elem){\n\tvar r = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\tr.push( n );\n\t}\n\n\treturn r;\n};\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && elem != window )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif ( data !== undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn );\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply(arguments.callee.elem, arguments) :\n\t\t\t\t\tundefined;\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar namespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\thandler.type = namespaces.slice().sort().join(\".\");\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\t\t\t\n\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\tjQuery.event.specialAll[type].setup.call(elem, data, namespaces);\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types === undefined || (typeof types === \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar namespaces = type.split(\".\");\n\t\t\t\t\ttype = namespaces.shift();\n\t\t\t\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( var handle in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( namespace.test(events[type][handle].type) )\n\t\t\t\t\t\t\t\t\tdelete events[type][handle];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\t\t\t\tjQuery.event.specialAll[type].teardown.call(elem, namespaces);\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem, bubbling ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event;\n\n\t\tif( !bubbling ){\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( this.global[type] )\n\t\t\t\t\tjQuery.each( jQuery.cache, function(){\n\t\t\t\t\t\tif ( this.events && this.events[type] )\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\t\t\t\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\t\t\t\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray(data);\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\tif ( handle )\n\t\t\thandle.apply( elem, data );\n\n\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\tif ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\tevent.result = false;\n\n\t\t// Trigger the native events (except for clicks on links)\n\t\tif ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\tthis.triggered = true;\n\t\t\ttry {\n\t\t\t\telem[ type ]();\n\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\tthis.triggered = false;\n\n\t\tif ( !event.isPropagationStopped() ) {\n\t\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\t\t\tif ( parent )\n\t\t\t\tjQuery.event.trigger(event, data, parent, true);\n\t\t}\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\t\t\n\t\t// Namespaced event handlers\n\t\tvar namespaces = event.type.split(\".\");\n\t\tevent.type = namespaces.shift();\n\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespaces.length && !event.exclusive;\n\t\t\n\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || namespace.test(handler.type) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tvar ret = handler.apply(this, arguments);\n\n\t\t\t\tif( ret !== undefined ){\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( event.isImmediatePropagationStopped() )\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function(event) {\n\t\tif ( event[expando] )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ){\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\tproxy = proxy || function(){ return fn.apply(this, arguments); };\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: bindReady,\n\t\t\tteardown: function() {}\n\t\t}\n\t},\n\t\n\tspecialAll: {\n\t\tlive: {\n\t\t\tsetup: function( selector, namespaces ){\n\t\t\t\tjQuery.event.add( this, namespaces[0], liveHandler );\n\t\t\t},\n\t\t\tteardown:  function( namespaces ){\n\t\t\t\tif ( namespaces.length ) {\n\t\t\t\t\tvar remove = 0, name = RegExp(\"(^|\\\\.)\" + namespaces[0] + \"(\\\\.|$)\");\n\t\t\t\t\t\n\t\t\t\t\tjQuery.each( (jQuery.data(this, \"events\").live || {}), function(){\n\t\t\t\t\t\tif ( name.test(this.type) )\n\t\t\t\t\t\t\tremove++;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif ( remove < 1 )\n\t\t\t\t\t\tjQuery.event.remove( this, namespaces[0], liveHandler );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.Event = function( src ){\n\t// Allow instantiation without the 'new' keyword\n\tif( !this.preventDefault )\n\t\treturn new jQuery.Event(src);\n\t\n\t// Event object\n\tif( src && src.type ){\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t}else\n\t\tthis.type = src;\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\t\n\t// Mark it as fixed\n\tthis[expando] = true;\n};\n\nfunction returnFalse(){\n\treturn false;\n}\nfunction returnTrue(){\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if preventDefault exists run it on the original event\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if stopPropagation exists run it on the original event\n\t\tif (e.stopPropagation)\n\t\t\te.stopPropagation();\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation:function(){\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != this )\n\t\ttry { parent = parent.parentNode; }\n\t\tcatch(e) { parent = this; }\n\t\n\tif( parent != this ){\n\t\t// set the correct event type\n\t\tevent.type = event.data;\n\t\t// handle event if we actually just moused on to a non sub-element\n\t\tjQuery.event.handle.apply( this, arguments );\n\t}\n};\n\t\njQuery.each({ \n\tmouseover: 'mouseenter', \n\tmouseout: 'mouseleave'\n}, function( orig, fix ){\n\tjQuery.event.special[ fix ] = {\n\t\tsetup: function(){\n\t\t\tjQuery.event.add( this, orig, withinElement, fix );\n\t\t},\n\t\tteardown: function(){\n\t\t\tjQuery.event.remove( this, orig, withinElement );\n\t\t}\n\t};\t\t\t   \n});\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif( this[0] ){\n\t\t\tvar event = jQuery.Event(type);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\t\t\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.mouseenter(fnOver).mouseleave(fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( fn );\n\n\t\treturn this;\n\t},\n\t\n\tlive: function( type, fn ){\n\t\tvar proxy = jQuery.event.proxy( fn );\n\t\tproxy.guid += this.selector + type;\n\n\t\tjQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );\n\n\t\treturn this;\n\t},\n\t\n\tdie: function( type, fn ){\n\t\tjQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ){\n\tvar check = RegExp(\"(^|\\\\.)\" + event.type + \"(\\\\.|$)\"),\n\t\tstop = true,\n\t\telems = [];\n\n\tjQuery.each(jQuery.data(this, \"events\").live || [], function(i, fn){\n\t\tif ( check.test(fn.type) ) {\n\t\t\tvar elem = jQuery(event.target).closest(fn.data)[0];\n\t\t\tif ( elem )\n\t\t\t\telems.push({ elem: elem, fn: fn });\n\t\t}\n\t});\n\n\telems.sort(function(a,b) {\n\t\treturn jQuery.data(a.elem, \"closest\") - jQuery.data(b.elem, \"closest\");\n\t});\n\t\n\tjQuery.each(elems, function(){\n\t\tif ( this.fn.call(this.elem, event, this.fn.data) === false )\n\t\t\treturn (stop = false);\n\t});\n\n\treturn stop;\n}\n\nfunction liveConvert(type, selector){\n\treturn [\"live\", type, selector.replace(/\\./g, \"`\").replace(/ /g, \"|\")].join(\".\");\n}\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document, jQuery );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera and webkit nightlies currently support this event\n\tif ( document.addEventListener ) {\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function(){\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", arguments.callee, false );\n\t\t\tjQuery.ready();\n\t\t}, false );\n\n\t// If IE event model is used\n\t} else if ( document.attachEvent ) {\n\t\t// ensure firing before onload,\n\t\t// maybe late but safe also for iframes\n\t\tdocument.attachEvent(\"onreadystatechange\", function(){\n\t\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t\tdocument.detachEvent( \"onreadystatechange\", arguments.callee );\n\t\t\t\tjQuery.ready();\n\t\t\t}\n\t\t});\n\n\t\t// If IE and not an iframe\n\t\t// continually check to see if the document is ready\n\t\tif ( document.documentElement.doScroll && window == window.top ) (function(){\n\t\t\tif ( jQuery.isReady ) return;\n\n\t\t\ttry {\n\t\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t\t} catch( error ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,\" +\n\t\"change,select,submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery( window ).bind( 'unload', function(){ \n\tfor ( var id in jQuery.cache )\n\t\t// Skip the window\n\t\tif ( id != 1 && jQuery.cache[ id ].handle )\n\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n}); \n(function(){\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = '   <link/><table></table><a href=\"/a\" style=\"color:red;float:left;opacity:.5;\">a</a><select><option>text</option></select><object><param/></object>';\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType == 3,\n\t\t\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\t\t\n\t\t// Make sure that you can get all elements in an <object> element\n\t\t// IE 7 always returns no results\n\t\tobjectAll: !!div.getElementsByTagName(\"object\")[0]\n\t\t\t.getElementsByTagName(\"*\").length,\n\t\t\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\t\t\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\t\t\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\t\t\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\topacity: a.style.opacity === \"0.5\",\n\t\t\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Will be defined later\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\t\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e){}\n\n\troot.insertBefore( script, root.firstChild );\n\t\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function(){\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", arguments.callee);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function(){\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\t});\n})();\n\nvar styleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\";\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\t\"float\": styleFloat,\n\tcssFloat: styleFloat,\n\tstyleFloat: styleFloat,\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\ttabindex: \"tabIndex\"\n};\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tif( callback )\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password|search/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n  \n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr:function(){\n\t\t\treturn window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = /^(\\w+:)?\\/\\/([^\\/?#]+)/.exec( s.url );\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\" && parts\n\t\t\t&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){\n\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The request was aborted, clear the interval and decrement jQuery.active\n\t\t\tif (xhr.readyState == 0) {\n\t\t\t\tif (ival) {\n\t\t\t\t\t// clear poll interval\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" ? \"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ? \"error\" :\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ? \"notmodified\" :\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout )\n\t\t\t\t\txhr.abort();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr && !requestDone )\n\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url];\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s != null is checked to keep backwards compatibility\n\t\tif( s && s.dataFilter )\n\t\t\tdata = s.dataFilter( data, type );\n\n\t\t// The filter can actually parse the response\n\t\tif( typeof data === \"string\" ){\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\tif ( type == \"script\" )\n\t\t\t\tjQuery.globalEval( data );\n\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type == \"json\" )\n\t\t\t\tdata = window[\"eval\"](\"(\" + data + \")\");\n\t\t}\n\t\t\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [ ];\n\n\t\tfunction add( key, value ){\n\t\t\ts[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n\t\t};\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( jQuery.isArray(a) || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( jQuery.isArray(a[j]) )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\tadd( j, this );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\tadd( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\nvar elemdisplay = {},\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\nfunction genFx( type, num ){\n\tvar obj = {};\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){\n\t\tobj[ this ] = type;\n\t});\n\treturn obj;\n}\n\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\t\n\t\t\t\tthis[i].style.display = old || \"\";\n\t\t\t\t\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar tagName = this[i].tagName, display;\n\t\t\t\t\t\n\t\t\t\t\tif ( elemdisplay[ tagName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ tagName ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\t\t\t\t\t\tif ( display === \"none\" )\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t\t\n\t\t\t\t\t\telemdisplay[ tagName ] = display;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = jQuery.data(this[i], \"olddisplay\") || \"\";\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" )\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn == null || bool ?\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t\t}) :\n\t\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType == 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\t\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( ( p == \"height\" || p == \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ){\n\tjQuery.fn[ name ] = function( speed, callback ){\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop == \"height\" || this.prop == \"width\" ) && this.elem.style )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( timerId );\n\t\t\t\t\ttimerId = undefined;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop == \"width\" || this.prop == \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tjQuery(this.elem).hide();\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t\t\t\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\tstep: {\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null )\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\telse\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t}\n\t}\n});\nif ( document.documentElement[\"getBoundingClientRect\"] )\n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tvar box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\t\treturn { top: top, left: left };\n\t};\nelse \n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\n\t\tvar elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView.getComputedStyle(elem, null),\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tcomputedStyle = defaultView.getComputedStyle(elem, null);\n\t\t\ttop -= elem.scrollTop, left -= elem.scrollLeft;\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop += elem.offsetTop, left += elem.offsetLeft;\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )\n\t\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" )\n\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" )\n\t\t\ttop  += body.offsetTop,\n\t\t\tleft += body.offsetLeft;\n\n\t\tif ( prevComputedStyle.position === \"fixed\" )\n\t\t\ttop  += Math.max(docElem.scrollTop, body.scrollTop),\n\t\t\tleft += Math.max(docElem.scrollLeft, body.scrollLeft);\n\n\t\treturn { top: top, left: left };\n\t};\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tif ( this.initialized ) return;\n\t\tvar body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,\n\t\t\thtml = '<div style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\"><div></div></div><table style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\" cellpadding=\"0\" cellspacing=\"0\"><tr><td></td></tr></table>';\n\n\t\trules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };\n\t\tfor ( prop in rules ) container.style[prop] = rules[prop];\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore(container, body.firstChild);\n\t\tinnerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tinnerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tbody.style.marginTop = '1px';\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);\n\t\tbody.style.marginTop = bodyMarginTop;\n\n\t\tbody.removeChild(container);\n\t\tthis.initialized = true;\n\t},\n\n\tbodyOffset: function(body) {\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset )\n\t\t\ttop  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,\n\t\t\tleft += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;\n\t\treturn { top: top, left: left };\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop'  );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth'  );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent || document.body;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return null;\n\n\t\treturn val !== undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\", // bottom or right\n\t\tlower = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\t\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] ||\n\t\t\tdocument.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tdocument.documentElement[\"client\" + name],\n\t\t\t\t\tdocument.body[\"scroll\" + name], document.documentElement[\"scroll\" + name],\n\t\t\t\t\tdocument.body[\"offset\" + name], document.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n})(); "
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.metadata.js",
    "content": "/*\n * Metadata - jQuery plugin for parsing metadata from elements\n *\n * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n *\n * Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $\n *\n */\n\n/**\n * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\n * in the JSON will become a property of the element itself.\n *\n * There are three supported types of metadata storage:\n *\n *   attr:  Inside an attribute. The name parameter indicates *which* attribute.\n *          \n *   class: Inside the class attribute, wrapped in curly braces: { }\n *   \n *   elem:  Inside a child element (e.g. a script tag). The\n *          name parameter indicates *which* element.\n *          \n * The metadata for an element is loaded the first time the element is accessed via jQuery.\n *\n * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\n * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\n * \n * @name $.metadata.setType\n *\n * @example <p id=\"one\" class=\"some_class {item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"class\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from the class attribute\n * \n * @example <p id=\"one\" class=\"some_class\" data=\"{item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"attr\", \"data\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a \"data\" attribute\n * \n * @example <p id=\"one\" class=\"some_class\"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>\n * @before $.metadata.setType(\"elem\", \"script\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a nested script element\n * \n * @param String type The encoding type\n * @param String name The name of the attribute to be used to get metadata (optional)\n * @cat Plugins/Metadata\n * @descr Sets the type of encoding to be used when loading metadata for the first time\n * @type undefined\n * @see metadata()\n */\n\n(function($) {\n\n$.extend({\n\tmetadata : {\n\t\tdefaults : {\n\t\t\ttype: 'class',\n\t\t\tname: 'metadata',\n\t\t\tcre: /({.*})/,\n\t\t\tsingle: 'metadata'\n\t\t},\n\t\tsetType: function( type, name ){\n\t\t\tthis.defaults.type = type;\n\t\t\tthis.defaults.name = name;\n\t\t},\n\t\tget: function( elem, opts ){\n\t\t\tvar settings = $.extend({},this.defaults,opts);\n\t\t\t// check for empty string in single property\n\t\t\tif ( !settings.single.length ) settings.single = 'metadata';\n\t\t\t\n\t\t\tvar data = $.data(elem, settings.single);\n\t\t\t// returned cached data if it already exists\n\t\t\tif ( data ) return data;\n\t\t\t\n\t\t\tdata = \"{}\";\n\t\t\t\n\t\t\tif ( settings.type == \"class\" ) {\n\t\t\t\tvar m = settings.cre.exec( elem.className );\n\t\t\t\tif ( m )\n\t\t\t\t\tdata = m[1];\n\t\t\t} else if ( settings.type == \"elem\" ) {\n\t\t\t\tif( !elem.getElementsByTagName )\n\t\t\t\t\treturn undefined;\n\t\t\t\tvar e = elem.getElementsByTagName(settings.name);\n\t\t\t\tif ( e.length )\n\t\t\t\t\tdata = $.trim(e[0].innerHTML);\n\t\t\t} else if ( elem.getAttribute != undefined ) {\n\t\t\t\tvar attr = elem.getAttribute( settings.name );\n\t\t\t\tif ( attr )\n\t\t\t\t\tdata = attr;\n\t\t\t}\n\t\t\t\n\t\t\tif ( data.indexOf( '{' ) <0 )\n\t\t\tdata = \"{\" + data + \"}\";\n\t\t\t\n\t\t\tdata = eval(\"(\" + data + \")\");\n\t\t\t\n\t\t\t$.data( elem, settings.single, data );\n\t\t\treturn data;\n\t\t}\n\t}\n});\n\n/**\n * Returns the metadata object for the first member of the jQuery object.\n *\n * @name metadata\n * @descr Returns element's metadata object\n * @param Object opts An object contianing settings to override the defaults\n * @type jQuery\n * @cat Plugins/Metadata\n */\n$.fn.metadata = function( opts ){\n\treturn $.metadata.get( this[0], opts );\n};\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.mockjax.js",
    "content": "/*!\n * MockJax - jQuery Plugin to Mock Ajax requests\n *\n * Version:  1.4.0\n * Released: 2011-02-04\n * Source:   http://github.com/appendto/jquery-mockjax\n * Docs:     http://enterprisejquery.com/2010/07/mock-your-ajax-requests-with-mockjax-for-rapid-development\n * Plugin:   mockjax\n * Author:   Jonathan Sharp (http://jdsharp.com)\n * License:  MIT,GPL\n * \n * Copyright (c) 2010 appendTo LLC.\n * Dual licensed under the MIT or GPL licenses.\n * http://appendto.com/open-source-licenses\n */\n(function($) {\n\tvar _ajax = $.ajax,\n\t\tmockHandlers = [];\n\t\n\tfunction parseXML(xml) {\n\t\tif ( window['DOMParser'] == undefined && window.ActiveXObject ) {\n\t\t\tDOMParser = function() { };\n\t\t\tDOMParser.prototype.parseFromString = function( xmlString ) {\n\t\t\t\tvar doc = new ActiveXObject('Microsoft.XMLDOM');\n\t\t        doc.async = 'false';\n\t\t        doc.loadXML( xmlString );\n\t\t\t\treturn doc;\n\t\t\t};\n\t\t}\n\t\t\n\t\ttry {\n\t\t\tvar xmlDoc \t= ( new DOMParser() ).parseFromString( xml, 'text/xml' );\n\t\t\tif ( $.isXMLDoc( xmlDoc ) ) {\n\t\t\t\tvar err = $('parsererror', xmlDoc);\n\t\t\t\tif ( err.length == 1 ) {\n\t\t\t\t\tthrow('Error: ' + $(xmlDoc).text() );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow('Unable to parse XML');\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\tvar msg = ( e.name == undefined ? e : e.name + ': ' + e.message );\n\t\t\t$(document).trigger('xmlParseError', [ msg ]);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn xmlDoc;\n\t}\n\t\n\t$.extend({\n\t\tajax: function(origSettings) {\n\t\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),\n\t\t\t    mock = false;\n\t\t\t// Iterate over our mock handlers (in registration order) until we find\n\t\t\t// one that is willing to intercept the request\n\t\t\t$.each(mockHandlers, function(k, v) {\n\t\t\t\tif ( !mockHandlers[k] ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar m = null;\n\t\t\t\t// If the mock was registered with a function, let the function decide if we \n\t\t\t\t// want to mock this request\n\t\t\t\tif ( $.isFunction(mockHandlers[k]) ) {\n\t\t\t\t\tm = mockHandlers[k](s);\n\t\t\t\t} else {\n\t\t\t\t\tm = mockHandlers[k];\n\t\t\t\t\t// Inspect the URL of the request and check if the mock handler's url \n\t\t\t\t\t// matches the url for this ajax request\n\t\t\t\t\tif ( $.isFunction(m.url.test) ) {\n\t\t\t\t\t\t// The user provided a regex for the url, test it\n\t\t\t\t\t\tif ( !m.url.test( s.url ) ) {\n\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a simple wildcard '*' or a direct URL match\n\t\t\t\t\t\tvar star = m.url.indexOf('*');\n\t\t\t\t\t\tif ( ( m.url != '*' && m.url != s.url && star == -1 ) ||\n\t\t\t\t\t\t\t( star > -1 && m.url.substr(0, star) != s.url.substr(0, star) ) ) {\n\t\t\t\t\t\t\t // The url we tested did not match the wildcard *\n\t\t\t\t\t\t\t m = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( m ) {\n\t\t\t\t\t\t// Inspect the data submitted in the request (either POST body or GET query string)\n\t\t\t\t\t\tif ( m.data && s.data ) {\n\t\t\t\t\t\t\tvar identical = false;\n\t\t\t\t\t\t\t// Deep inspect the identity of the objects\n\t\t\t\t\t\t\t(function ident(mock, live) {\n\t\t\t\t\t\t\t\t// Test for situations where the data is a querystring (not an object)\n\t\t\t\t\t\t\t\tif (typeof live === 'string') {\n\t\t\t\t\t\t\t\t\t// Querystring may be a regex\n\t\t\t\t\t\t\t\t\tidentical = $.isFunction( mock.test ) ? mock.test(live) : mock == live;\n\t\t\t\t\t\t\t\t\treturn identical;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$.each(mock, function(k, v) {\n\t\t\t\t\t\t\t\t\tif ( live[k] === undefined ) {\n\t\t\t\t\t\t\t\t\t\tidentical = false;\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tidentical = true;\n\t\t\t\t\t\t\t\t\t\tif ( typeof live[k] == 'object' ) {\n\t\t\t\t\t\t\t\t\t\t\treturn ident(mock[k], live[k]);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction( mock[k].test ) ) {\n\t\t\t\t\t\t\t\t\t\t\t\tidentical = mock[k].test(live[k]);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tidentical = ( mock[k] == live[k] );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn identical;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})(m.data, s.data);\n\t\t\t\t\t\t\t// They're not identical, do not mock this request\n\t\t\t\t\t\t\tif ( identical == false ) {\n\t\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Inspect the request type\n\t\t\t\t\t\tif ( m && m.type && m.type != s.type ) {\n\t\t\t\t\t\t\t// The request type doesn't match (GET vs. POST)\n\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( m ) {\n\t\t\t\t\tmock = true;\n\n\t\t\t\t\t// Handle console logging\n\t\t\t\t\tvar c = $.extend({}, $.mockjaxSettings, m);\n\t\t\t\t\tif ( c.log && $.isFunction(c.log) ) {\n\t\t\t\t\t\tc.log('MOCK ' + s.type.toUpperCase() + ': ' + s.url, $.extend({}, s));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar jsre = /=\\?(&|$)/, jsc = (new Date()).getTime();\n\n\t\t\t\t\t// Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here\n\t\t\t\t\t// because there isn't an easy hook for the cross domain script tag of jsonp\n\t\t\t\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\t\t\t\tif ( s.type.toUpperCase() === \"GET\" ) {\n\t\t\t\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\ts.dataType = \"json\";\n\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t// Build temporary JSONP function\n\t\t\t\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\t\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\t\t\t\n\t\t\t\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\t\t\t\tif ( s.data ) {\n\t\t\t\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t\n\t\t\t\t\t\t// We need to make sure\n\t\t\t\t\t\t// that a JSONP style response is executed properly\n\t\t\t\t\t\ts.dataType = \"script\";\n\t\t\t\n\t\t\t\t\t\t// Handle JSONP-style loading\n\t\t\t\t\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\t\t\t\t\tdata = tmp;\n\t\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t\t// Garbage collect\n\t\t\t\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t\t\t\t} catch(e) {}\n\t\t\t\n\t\t\t\t\t\t\tif ( head ) {\n\t\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\t\t\t\t\t\tparts = rurl.exec( s.url ),\n\t\t\t\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\t\t\t\t\t\n\t\t\t\t\t// Test if we are going to create a script tag (if so, intercept & mock)\n\t\t\t\t\tif ( s.dataType === \"script\" && s.type.toUpperCase() === \"GET\" && remote ) {\n\t\t\t\t\t\t// Synthesize the mock request for adding a script tag\n\t\t\t\t\t\tvar callbackContext = origSettings && origSettings.context || s;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfunction success() {\n\t\t\t\t\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\t\t\t\t\tif ( s.success ) {\n\t\t\t\t\t\t\t\ts.success.call( callbackContext, ( m.response ? m.response.toString() : m.responseText || ''), status, {} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// Fire the global callback\n\t\t\t\t\t\t\tif ( s.global ) {\n\t\t\t\t\t\t\t\ttrigger( \"ajaxSuccess\", [{}, s] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\tfunction complete() {\n\t\t\t\t\t\t\t// Process result\n\t\t\t\t\t\t\tif ( s.complete ) {\n\t\t\t\t\t\t\t\ts.complete.call( callbackContext, {} , status );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// The request was completed\n\t\t\t\t\t\t\tif ( s.global ) {\n\t\t\t\t\t\t\t\ttrigger( \"ajaxComplete\", [{}, s] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tfunction trigger(type, args) {\n\t\t\t\t\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ( m.response && $.isFunction(m.response) ) {\n\t\t\t\t\t\t\tm.response(origSettings);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.globalEval(m.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tmock = _ajax.call($, $.extend(true, {}, origSettings, {\n\t\t\t\t\t\t// Mock the XHR object\n\t\t\t\t\t\txhr: function() {\n\t\t\t\t\t\t\t// Extend with our default mockjax settings\n\t\t\t\t\t\t\tm = $.extend({}, $.mockjaxSettings, m);\n\n\t\t\t\t\t\t\tif ( m.contentType ) {\n\t\t\t\t\t\t\t\tm.headers['content-type'] = m.contentType;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Return our mock xhr object\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstatus: m.status,\n\t\t\t\t\t\t\t\treadyState: 1,\n\t\t\t\t\t\t\t\topen: function() { },\n\t\t\t\t\t\t\t\tsend: function() {\n\t\t\t\t\t\t\t\t\t// This is a substitute for < 1.4 which lacks $.proxy\n\t\t\t\t\t\t\t\t\tvar process = (function(that) {\n\t\t\t\t\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\t\t\t\t\treturn (function() {\n\t\t\t\t\t\t\t\t\t\t\t\t// The request has returned\n\t\t\t\t\t\t\t\t\t\t\t \tthis.status \t\t= m.status;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.readyState \t= 4;\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t// We have an executable function, call it to give \n\t\t\t\t\t\t\t\t\t\t\t\t// the mock handler a chance to update it's data\n\t\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction(m.response) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tm.response(origSettings);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t// Copy over our mock to our xhr object before passing control back to \n\t\t\t\t\t\t\t\t\t\t\t\t// jQuery's onreadystatechange callback\n\t\t\t\t\t\t\t\t\t\t\t\tif ( s.dataType == 'json' && ( typeof m.responseText == 'object' ) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseText = JSON.stringify(m.responseText);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if ( s.dataType == 'xml' ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( typeof m.responseXML == 'string' ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseXML = parseXML(m.responseXML);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseXML = m.responseXML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseText = m.responseText;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t// jQuery < 1.4 doesn't have onreadystate change for xhr\n\t\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction(this.onreadystatechange) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.onreadystatechange( m.isTimeout ? 'timeout' : undefined );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}).apply(that);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t})(this);\n\n\t\t\t\t\t\t\t\t\tif ( m.proxy ) {\n\t\t\t\t\t\t\t\t\t\t// We're proxying this request and loading in an external file instead\n\t\t\t\t\t\t\t\t\t\t_ajax({\n\t\t\t\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\t\t\turl: m.proxy,\n\t\t\t\t\t\t\t\t\t\t\ttype: m.proxyType,\n\t\t\t\t\t\t\t\t\t\t\tdata: m.data,\n\t\t\t\t\t\t\t\t\t\t\tdataType: s.dataType,\n\t\t\t\t\t\t\t\t\t\t\tcomplete: function(xhr, txt) {\n\t\t\t\t\t\t\t\t\t\t\t\tm.responseXML = xhr.responseXML;\n\t\t\t\t\t\t\t\t\t\t\t\tm.responseText = xhr.responseText;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.responseTimer = setTimeout(process, m.responseTime || 0);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// type == 'POST' || 'GET' || 'DELETE'\n\t\t\t\t\t\t\t\t\t\tif ( s.async === false ) {\n\t\t\t\t\t\t\t\t\t\t\t// TODO: Blocking delay\n\t\t\t\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tthis.responseTimer = setTimeout(process, m.responseTime || 50);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tabort: function() {\n\t\t\t\t\t\t\t\t\tclearTimeout(this.responseTimer);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsetRequestHeader: function() { },\n\t\t\t\t\t\t\t\tgetResponseHeader: function(header) {\n\t\t\t\t\t\t\t\t\t// 'Last-modified', 'Etag', 'content-type' are all checked by jQuery\n\t\t\t\t\t\t\t\t\tif ( m.headers && m.headers[header] ) {\n\t\t\t\t\t\t\t\t\t\t// Return arbitrary headers\n\t\t\t\t\t\t\t\t\t\treturn m.headers[header];\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'last-modified' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.lastModified || (new Date()).toString();\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'etag' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.etag || '';\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'content-type' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.contentType || 'text/plain';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\t\t\t\t\tvar headers = '';\n\t\t\t\t\t\t\t\t\t$.each(m.headers, function(k, v) {\n\t\t\t\t\t\t\t\t\t\theaders += k + ': ' + v + \"\\n\";\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\treturn headers;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// We don't have a mock request, trigger a normal request\n\t\t\tif ( !mock ) {\n\t\t\t\treturn _ajax.apply($, arguments);\n\t\t\t} else {\n\t\t\t\treturn mock;\n\t\t\t}\n\t\t}\n\t});\n\n\t$.mockjaxSettings = {\n\t\t//url:        null,\n\t\t//type:       'GET',\n\t\tlog:          function(msg) {\n\t\t              \twindow['console'] && window.console.log && window.console.log(msg);\n\t\t              },\n\t\tstatus:       200,\n\t\tresponseTime: 500,\n\t\tisTimeout:    false,\n\t\tcontentType:  'text/plain',\n\t\tresponse:     '', \n\t\tresponseText: '',\n\t\tresponseXML:  '',\n\t\tproxy:        '',\n\t\tproxyType:    'GET',\n\t\t\n\t\tlastModified: null,\n\t\tetag:         '',\n\t\theaders: {\n\t\t\tetag: 'IJF@H#@923uf8023hFO@I#H#',\n\t\t\t'content-type' : 'text/plain'\n\t\t}\n\t};\n\n\t$.mockjax = function(settings) {\n\t\tvar i = mockHandlers.length;\n\t\tmockHandlers[i] = settings;\n\t\treturn i;\n\t};\n\t$.mockjaxClear = function(i) {\n\t\tif ( arguments.length == 1 ) {\n\t\t\tmockHandlers[i] = null;\n\t\t} else {\n\t\t\tmockHandlers = [];\n\t\t}\n\t};\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ar.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: AR (Arabic; العربية)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"هذا الحقل إلزامي\",\n        remote: \"يرجى تصحيح هذا الحقل للمتابعة\",\n        email: \"رجاء إدخال عنوان بريد إلكتروني صحيح\",\n        url: \"رجاء إدخال عنوان موقع إلكتروني صحيح\",\n        date: \"رجاء إدخال تاريخ صحيح\",\n        dateISO: \"رجاء إدخال تاريخ صحيح (ISO)\",\n        number: \"رجاء إدخال عدد بطريقة صحيحة\",\n        digits: \"رجاء إدخال أرقام فقط\",\n        creditcard: \"رجاء إدخال رقم بطاقة ائتمان صحيح\",\n        equalTo: \"رجاء إدخال نفس القيمة\",\n        accept: \"رجاء إدخال ملف بامتداد موافق عليه\",\n        maxlength: jQuery.validator.format(\"الحد الأقصى لعدد الحروف هو {0}\"),\n        minlength: jQuery.validator.format(\"الحد الأدنى لعدد الحروف هو {0}\"),\n        rangelength: jQuery.validator.format(\"عدد الحروف يجب أن يكون بين {0} و {1}\"),\n        range: jQuery.validator.format(\"رجاء إدخال عدد قيمته بين {0} و {1}\"),\n        max: jQuery.validator.format(\"رجاء إدخال عدد أقل من أو يساوي (0}\"),\n        min: jQuery.validator.format(\"رجاء إدخال عدد أكبر من أو يساوي (0}\")\n});\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_bg.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: BG (Bulgarian; български език)\n */\njQuery.extend(jQuery.validator.messages, {\n\t\t required: \"Полето е задължително.\",\n\t\t remote: \"Моля, въведете правилната стойност.\",\n\t\t email: \"Моля, въведете валиден email.\",\n\t\t url: \"Моля, въведете валидно URL.\",\n\t\t date: \"Моля, въведете валидна дата.\",\n\t\t dateISO: \"Моля, въведете валидна дата (ISO).\",\n\t\t number: \"Моля, въведете валиден номер.\",\n\t\t digits: \"Моля, въведете само цифри\",\n\t\t creditcard: \"Моля, въведете валиден номер на кредитна карта.\",\n\t\t equalTo: \"Моля, въведете същата стойност отново.\",\n\t\t accept: \"Моля, въведете стойност с валидно разширение.\",\n\t\t maxlength: $.validator.format(\"Моля, въведете повече от {0} символа.\"),\n\t\t minlength: $.validator.format(\"Моля, въведете поне {0} символа.\"),\n\t\t rangelength: $.validator.format(\"Моля, въведете стойност с дължина между {0} и {1} символа.\"),\n\t\t range: $.validator.format(\"Моля, въведете стойност между {0} и {1}.\"),\n\t\t max: $.validator.format(\"Моля, въведете стойност по-малка или равна на {0}.\"),\n\t\t min: $.validator.format(\"Моля, въведете стойност по-голяма или равна на {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ca.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CA (Catalan; català)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Aquest camp és obligatori.\",\n  remote: \"Si us plau, omple aquest camp.\",\n  email: \"Si us plau, escriu una adreça de correu-e vàlida\",\n  url: \"Si us plau, escriu una URL vàlida.\",\n  date: \"Si us plau, escriu una data vàlida.\",\n  dateISO: \"Si us plau, escriu una data (ISO) vàlida.\",\n  number: \"Si us plau, escriu un número enter vàlid.\",\n  digits: \"Si us plau, escriu només dígits.\",\n  creditcard: \"Si us plau, escriu un número de tarjeta vàlid.\",\n  equalTo: \"Si us plau, escriu el maateix valor de nou.\",\n  accept: \"Si us plau, escriu un valor amb una extensió acceptada.\",\n  maxlength: jQuery.validator.format(\"Si us plau, no escriguis més de {0} caracters.\"),\n  minlength: jQuery.validator.format(\"Si us plau, no escriguis menys de {0} caracters.\"),\n  rangelength: jQuery.validator.format(\"Si us plau, escriu un valor entre {0} i {1} caracters.\"),\n  range: jQuery.validator.format(\"Si us plau, escriu un valor entre {0} i {1}.\"),\n  max: jQuery.validator.format(\"Si us plau, escriu un valor menor o igual a {0}.\"),\n  min: jQuery.validator.format(\"Si us plau, escriu un valor major o igual a {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_cs.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CS (Czech; čeština, český jazyk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Tento údaj je povinný.\",\n\tremote: \"Prosím, opravte tento údaj.\",\n\temail: \"Prosím, zadejte platný e-mail.\",\n\turl: \"Prosím, zadejte platné URL.\",\n\tdate: \"Prosím, zadejte platné datum.\",\n\tdateISO: \"Prosím, zadejte platné datum (ISO).\",\n\tnumber: \"Prosím, zadejte číslo.\",\n\tdigits: \"Prosím, zadávejte pouze číslice.\",\n\tcreditcard: \"Prosím, zadejte číslo kreditní karty.\",\n\tequalTo: \"Prosím, zadejte znovu stejnou hodnotu.\",\n\taccept: \"Prosím, zadejte soubor se správnou příponou.\",\n\tmaxlength: jQuery.validator.format(\"Prosím, zadejte nejvíce {0} znaků.\"),\n\tminlength: jQuery.validator.format(\"Prosím, zadejte nejméně {0} znaků.\"),\n\trangelength: jQuery.validator.format(\"Prosím, zadejte od {0} do {1} znaků.\"),\n\trange: jQuery.validator.format(\"Prosím, zadejte hodnotu od {0} do {1}.\"),\n\tmax: jQuery.validator.format(\"Prosím, zadejte hodnotu menší nebo rovnu {0}.\"),\n\tmin: jQuery.validator.format(\"Prosím, zadejte hodnotu větší nebo rovnu {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_da.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DA (Danish; dansk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Dette felt er påkrævet.\",\n\tmaxlength: jQuery.validator.format(\"Indtast højst {0} tegn.\"),\n\tminlength: jQuery.validator.format(\"Indtast mindst {0} tegn.\"),\n\trangelength: jQuery.validator.format(\"Indtast mindst {0} og højst {1} tegn.\"),\n\temail: \"Indtast en gyldig email-adresse.\",\n\turl: \"Indtast en gyldig URL.\",\n\tdate: \"Indtast en gyldig dato.\",\n\tnumber: \"Indtast et tal.\",\n\tdigits: \"Indtast kun cifre.\",\n\tequalTo: \"Indtast den samme værdi igen.\",\n\trange: jQuery.validator.format(\"Angiv en værdi mellem {0} og {1}.\"),\n\tmax: jQuery.validator.format(\"Angiv en værdi der højst er {0}.\"),\n\tmin: jQuery.validator.format(\"Angiv en værdi der mindst er {0}.\"),\n\tcreditcard: \"Indtast et gyldigt kreditkortnummer.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_de.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DE (German, Deutsch)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Dieses Feld ist ein Pflichtfeld.\",\n\tmaxlength: jQuery.validator.format(\"Geben Sie bitte maximal {0} Zeichen ein.\"),\n\tminlength: jQuery.validator.format(\"Geben Sie bitte mindestens {0} Zeichen ein.\"),\n\trangelength: jQuery.validator.format(\"Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein.\"),\n\temail: \"Geben Sie bitte eine gültige E-Mail Adresse ein.\",\n\turl: \"Geben Sie bitte eine gültige URL ein.\",\n\tdate: \"Bitte geben Sie ein gültiges Datum ein.\",\n\tnumber: \"Geben Sie bitte eine Nummer ein.\",\n\tdigits: \"Geben Sie bitte nur Ziffern ein.\",\n\tequalTo: \"Bitte denselben Wert wiederholen.\",\n\trange: jQuery.validator.format(\"Geben Sie bitte einen Wert zwischen {0} und {1} ein.\"),\n\tmax: jQuery.validator.format(\"Geben Sie bitte einen Wert kleiner oder gleich {0} ein.\"),\n\tmin: jQuery.validator.format(\"Geben Sie bitte einen Wert größer oder gleich {0} ein.\"),\n\tcreditcard: \"Geben Sie bitte eine gültige Kreditkarten-Nummer ein.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_el.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EL (Greek; ελληνικά)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Αυτό το πεδίο είναι υποχρεωτικό.\",\n\tremote: \"Παρακαλώ διορθώστε αυτό το πεδίο.\",\n\temail: \"Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.\",\n\turl: \"Παρακαλώ εισάγετε ένα έγκυρο URL.\",\n\tdate: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.\",\n\tdateISO: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).\",\n\tnumber: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό.\",\n\tdigits: \"Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.\",\n\tcreditcard: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.\",\n\tequalTo: \"Παρακαλώ εισάγετε την ίδια τιμή ξανά.\",\n\taccept: \"Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.\",\n\tmaxlength: $.validator.format(\"Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες.\"),\n\tminlength: $.validator.format(\"Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες.\"),\n\trangelength: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων.\"),\n\trange: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}.\"),\n\tmax: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}.\"),\n\tmin: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.\")\n});\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_es.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ES (Spanish; Español)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Este campo es obligatorio.\",\n  remote: \"Por favor, rellena este campo.\",\n  email: \"Por favor, escribe una dirección de correo válida\",\n  url: \"Por favor, escribe una URL válida.\",\n  date: \"Por favor, escribe una fecha válida.\",\n  dateISO: \"Por favor, escribe una fecha (ISO) válida.\",\n  number: \"Por favor, escribe un número entero válido.\",\n  digits: \"Por favor, escribe sólo dígitos.\",\n  creditcard: \"Por favor, escribe un número de tarjeta válido.\",\n  equalTo: \"Por favor, escribe el mismo valor de nuevo.\",\n  accept: \"Por favor, escribe un valor con una extensión aceptada.\",\n  maxlength: jQuery.validator.format(\"Por favor, no escribas más de {0} caracteres.\"),\n  minlength: jQuery.validator.format(\"Por favor, no escribas menos de {0} caracteres.\"),\n  rangelength: jQuery.validator.format(\"Por favor, escribe un valor entre {0} y {1} caracteres.\"),\n  range: jQuery.validator.format(\"Por favor, escribe un valor entre {0} y {1}.\"),\n  max: jQuery.validator.format(\"Por favor, escribe un valor menor o igual a {0}.\"),\n  min: jQuery.validator.format(\"Por favor, escribe un valor mayor o igual a {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_et.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ET (Estonian; eesti, eesti keel)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"See väli peab olema täidetud.\",\n\tmaxlength: jQuery.validator.format(\"Palun sisestage vähem kui {0} tähemärki.\"),\n\tminlength: jQuery.validator.format(\"Palun sisestage vähemalt {0} tähemärki.\"),\n\trangelength: jQuery.validator.format(\"Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki.\"),\n\temail: \"Palun sisestage korrektne e-maili aadress.\",\n\turl: \"Palun sisestage korrektne URL.\",\n\tdate: \"Palun sisestage korrektne kuupäev.\",\n\tdateISO: \"Palun sisestage korrektne kuupäev (YYYY-MM-DD).\",\n\tnumber: \"Palun sisestage korrektne number.\",\n\tdigits: \"Palun sisestage ainult numbreid.\",\n\tequalTo: \"Palun sisestage sama väärtus uuesti.\",\n\trange: jQuery.validator.format(\"Palun sisestage väärtus vahemikus {0} kuni {1}.\"),\n\tmax: jQuery.validator.format(\"Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}.\"),\n\tmin: jQuery.validator.format(\"Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}.\"),\n\tcreditcard: \"Palun sisestage korrektne krediitkaardi number.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_eu.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EU (Basque; euskara, euskera)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Eremu hau beharrezkoa da.\",\n  remote: \"Mesedez, bete eremu hau.\",\n  email: \"Mesedez, idatzi baliozko posta helbide bat.\",\n  url: \"Mesedez, idatzi baliozko URL bat.\",\n  date: \"Mesedez, idatzi baliozko data bat.\",\n  dateISO: \"Mesedez, idatzi baliozko (ISO) data bat.\",\n  number: \"Mesedez, idatzi baliozko zenbaki oso bat.\",\n  digits: \"Mesedez, idatzi digituak soilik.\",\n  creditcard: \"Mesedez, idatzi baliozko txartel zenbaki bat.\",\n  equalTo: \"Mesedez, idatzi berdina berriro ere.\",\n  accept: \"Mesedez, idatzi onartutako luzapena duen balio bat.\",\n  maxlength: jQuery.validator.format(\"Mesedez, ez idatzi {0} karaktere baino gehiago.\"),\n  minlength: jQuery.validator.format(\"Mesedez, ez idatzi {0} karaktere baino gutxiago.\"),\n  rangelength: jQuery.validator.format(\"Mesedez, idatzi {0} eta {1} karaktere arteko balio bat.\"),\n  range: jQuery.validator.format(\"Mesedez, idatzi {0} eta {1} arteko balio bat.\"),\n  max: jQuery.validator.format(\"Mesedez, idatzi {0} edo txikiagoa den balio bat.\"),\n  min: jQuery.validator.format(\"Mesedez, idatzi {0} edo handiagoa den balio bat.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fa.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FA (Persian; فارسی)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"تکمیل این فیلد اجباری است.\",\n       remote: \"لطفا این فیلد را تصحیح کنید.\",\n       email: \".لطفا یک ایمیل صحیح وارد کنید\",\n       url: \"لطفا آدرس صحیح وارد کنید.\",\n       date: \"لطفا یک تاریخ صحیح وارد کنید\",\n       dateISO: \"لطفا تاریخ صحیح وارد کنید (ISO).\",\n       number: \"لطفا عدد صحیح وارد کنید.\",\n       digits: \"لطفا تنها رقم وارد کنید\",\n       creditcard: \"لطفا کریدیت کارت صحیح وارد کنید.\",\n       equalTo: \"لطفا مقدار برابری وارد کنید\",\n       accept: \"لطفا مقداری وارد کنید که \",\n       maxlength: jQuery.validator.format(\"لطفا بیشتر از {0} حرف وارد نکنید.\"),\n       minlength: jQuery.validator.format(\"لطفا کمتر از {0} حرف وارد نکنید.\"),\n       rangelength: jQuery.validator.format(\"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\"),\n       range: jQuery.validator.format(\"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\"),\n       max: jQuery.validator.format(\"لطفا مقداری کمتر از {0} حرف وارد کنید.\"),\n       min: jQuery.validator.format(\"لطفا مقداری بیشتر از {0} حرف وارد کنید.\")\n}); \n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fi.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FI (Finnish; suomi, suomen kieli)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"T&auml;m&auml; kentt&auml; on pakollinen.\",\n\tmaxlength: jQuery.validator.format(\"Voit sy&ouml;tt&auml;&auml; enint&auml;&auml;n {0} merkki&auml;.\"),\n\tminlength: jQuery.validator.format(\"V&auml;hint&auml;&auml;n {0} merkki&auml;.\"),\n\trangelength: jQuery.validator.format(\"Sy&ouml;t&auml; v&auml;hint&auml;&auml;n {0} ja enint&auml;&auml;n {1} merkki&auml;.\"),\n\temail: \"Sy&ouml;t&auml; oikea s&auml;hk&ouml;postiosoite.\",\n\turl: \"Sy&ouml;t&auml; oikea URL osoite.\",\n\tdate: \"Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml;.\",\n\tdateISO: \"Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml; (VVVV-MM-DD).\",\n\tnumber: \"Sy&ouml;t&auml; numero.\",\n\tdigits: \"Sy&ouml;t&auml; pelk&auml;st&auml;&auml;n numeroita.\",\n\tequalTo: \"Sy&ouml;t&auml; sama arvo uudestaan.\",\n\trange: jQuery.validator.format(\"Sy&ouml;t&auml; arvo {0} ja {1} v&auml;lilt&auml;.\"),\n\tmax: jQuery.validator.format(\"Sy&ouml;t&auml; arvo joka on pienempi tai yht&auml; suuri kuin {0}.\"),\n\tmin: jQuery.validator.format(\"Sy&ouml;t&auml; arvo joka on yht&auml; suuri tai suurempi kuin {0}.\"),\n\tcreditcard: \"Sy&ouml;t&auml; voimassa oleva luottokorttinumero.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FR (French; français)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Ce champ est obligatoire.\",\n\tremote: \"Veuillez corriger ce champ.\",\n\temail: \"Veuillez fournir une adresse électronique valide.\",\n\turl: \"Veuillez fournir une adresse URL valide.\",\n\tdate: \"Veuillez fournir une date valide.\",\n\tdateISO: \"Veuillez fournir une date valide (ISO).\",\n\tnumber: \"Veuillez fournir un numéro valide.\",\n\tdigits: \"Veuillez fournir seulement des chiffres.\",\n\tcreditcard: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tequalTo: \"Veuillez fournir encore la même valeur.\",\n\taccept: \"Veuillez fournir une valeur avec une extension valide.\",\n\tmaxlength: $.validator.format(\"Veuillez fournir au plus {0} caractères.\"),\n\tminlength: $.validator.format(\"Veuillez fournir au moins {0} caractères.\"),\n\trangelength: $.validator.format(\"Veuillez fournir une valeur qui contient entre {0} et {1} caractères.\"),\n\trange: $.validator.format(\"Veuillez fournir une valeur entre {0} et {1}.\"),\n\tmax: $.validator.format(\"Veuillez fournir une valeur inférieur ou égal à {0}.\"),\n\tmin: $.validator.format(\"Veuillez fournir une valeur supérieur ou égal à {0}.\"),\n\tmaxWords: $.validator.format(\"Veuillez fournir au plus {0} mots.\"),\n\tminWords: $.validator.format(\"Veuillez fournir au moins {0} mots.\"),\n\trangeWords: $.validator.format(\"Veuillez fournir entre {0} et {1} mots.\"),\n\tletterswithbasicpunc: \"Veuillez fournir seulement des lettres et des signes de ponctuation.\",\n\talphanumeric: \"Veuillez fournir seulement des lettres, nombres, espaces et soulignages\",\n\tlettersonly: \"Veuillez fournir seulement des lettres.\",\n\tnowhitespace: \"Veuillez ne pas inscrire d'espaces blancs.\",\n\tziprange: \"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.\",\n\tinteger: \"Veuillez fournir un nombre non décimal qui est positif ou négatif.\",\n\tvinUS: \"Veuillez fournir un numéro d'identification du véhicule (VIN).\",\n\tdateITA: \"Veuillez fournir une date valide.\",\n\ttime: \"Veuillez fournir une heure valide entre 00:00 et 23:59.\",\n\tphoneUS: \"Veuillez fournir un numéro de téléphone valide.\",\n\tphoneUK: \"Veuillez fournir un numéro de téléphone valide.\",\n\tmobileUK: \"Veuillez fournir un numéro de téléphone mobile valide.\",\n\tstrippedminlength: jQuery.validator.format(\"Veuillez fournir au moins {0} caractères.\"),\n\temail2: \"Veuillez fournir une adresse électronique valide.\",\n\turl2: \"Veuillez fournir une adresse URL valide.\",\n\tcreditcardtypes: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tipv4: \"Veuillez fournir une adresse IP v4 valide.\",\n\tipv6: \"Veuillez fournir une adresse IP v6 valide.\"\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_he.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HE (Hebrew; עברית)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \".השדה הזה הינו שדה חובה\",\n\tremote: \"נא לתקן שדה זה.\",\n\temail: \"נא למלא כתובת דוא\\\"ל חוקית\",\n\turl: \"נא למלא כתובת אינטרנט חוקית.\",\n\tdate: \"נא למלא תאריך חוקי\",\n\tdateISO: \"נא למלא תאריך חוקי (ISO).\",\n\tnumber: \"נא למלא מספר.\",\n\tdigits: \".נא למלא רק מספרים\",\n\tcreditcard: \"נא למלא מספר כרטיס אשראי חוקי.\",\n\tequalTo: \"נא למלא את אותו ערך שוב.\",\n\taccept: \"נא למלא ערך עם סיומת חוקית.\",\n\tmaxlength: jQuery.validator.format(\".נא לא למלא יותר מ- {0} תווים\"),\n\tminlength: jQuery.validator.format(\"נא למלא לפחות {0} תווים.\"),\n\trangelength: jQuery.validator.format(\"נא למלא ערך בין {0} ל- {1} תווים.\"),\n\trange: jQuery.validator.format(\"נא למלא ערך בין {0} ל- {1}.\"),\n\tmax: jQuery.validator.format(\"נא למלא ערך קטן או שווה ל- {0}.\"),\n\tmin: jQuery.validator.format(\"נא למלא ערך גדול או שווה ל- {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HR (Croatia; hrvatski jezik)\n */\njQuery.extend(jQuery.validator.messages, {\n\t\trequired: \"Ovo polje je obavezno.\",\n\t\tremote: \"Ovo polje treba popraviti.\",\n\t\temail: \"Unesite ispravnu e-mail adresu.\",\n\t\turl: \"Unesite ispravan URL.\",\n\t\tdate: \"Unesite ispravan datum.\",\n\t\tdateISO: \"Unesite ispravan datum (ISO).\",\n\t\tnumber: \"Unesite ispravan broj.\",\n\t\tdigits: \"Unesite samo brojeve.\",\n\t\tcreditcard: \"Unesite ispravan broj kreditne kartice.\",\n\t\tequalTo: \"Unesite ponovo istu vrijednost.\",\n\t\taccept: \"Unesite vrijednost sa ispravnom ekstenzijom.\",\n\t\tmaxlength: $.validator.format(\"Maksimalni broj znakova je {0} .\"),\n\t\tminlength: $.validator.format(\"Minimalni broj znakova je {0} .\"),\n\t\trangelength: $.validator.format(\"Unesite vrijednost između {0} i {1} znakova.\"),\n\t\trange: $.validator.format(\"Unesite vrijednost između {0} i {1}.\"),\n\t\tmax: $.validator.format(\"Unesite vrijednost manju ili jednaku {0}.\"),\n\t\tmin: $.validator.format(\"Unesite vrijednost veću ili jednaku {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hu.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HU (Hungarian; Magyar)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Kötelező megadni.\",\n\tmaxlength: jQuery.validator.format(\"Legfeljebb {0} karakter hosszú legyen.\"),\n\tminlength: jQuery.validator.format(\"Legalább {0} karakter hosszú legyen.\"),\n\trangelength: jQuery.validator.format(\"Legalább {0} és legfeljebb {1} karakter hosszú legyen.\"),\n\temail: \"Érvényes e-mail címnek kell lennie.\",\n\turl: \"Érvényes URL-nek kell lennie.\",\n\tdate: \"Dátumnak kell lennie.\",\n\tnumber: \"Számnak kell lennie.\",\n\tdigits: \"Csak számjegyek lehetnek.\",\n\tequalTo: \"Meg kell egyeznie a két értéknek.\",\n\trange: jQuery.validator.format(\"{0} és {1} közé kell esnie.\"),\n\tmax: jQuery.validator.format(\"Nem lehet nagyobb, mint {0}.\"),\n\tmin: jQuery.validator.format(\"Nem lehet kisebb, mint {0}.\"),\n\tcreditcard: \"Érvényes hitelkártyaszámnak kell lennie.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_it.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: IT (Italian; Italiano)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Campo obbligatorio.\",\n       remote: \"Controlla questo campo.\",\n       email: \"Inserisci un indirizzo email valido.\",\n       url: \"Inserisci un indirizzo web valido.\",\n       date: \"Inserisci una data valida.\",\n       dateISO: \"Inserisci una data valida (ISO).\",\n       number: \"Inserisci un numero valido.\",\n       digits: \"Inserisci solo numeri.\",\n       creditcard: \"Inserisci un numero di carta di credito valido.\",\n       equalTo: \"Il valore non corrisponde.\",\n       accept: \"Inserisci un valore con un&apos;estensione valida.\",\n       maxlength: jQuery.validator.format(\"Non inserire pi&ugrave; di {0} caratteri.\"),\n       minlength: jQuery.validator.format(\"Inserisci almeno {0} caratteri.\"),\n       rangelength: jQuery.validator.format(\"Inserisci un valore compreso tra {0} e {1} caratteri.\"),\n       range: jQuery.validator.format(\"Inserisci un valore compreso tra {0} e {1}.\"),\n       max: jQuery.validator.format(\"Inserisci un valore minore o uguale a {0}.\"),\n       min: jQuery.validator.format(\"Inserisci un valore maggiore o uguale a {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ja.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: JA (Japanese; 日本語)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"このフィールドは必須です。\",\n  remote: \"このフィールドを修正してください。\",\n  email: \"有効なEメールアドレスを入力してください。\",\n  url: \"有効なURLを入力してください。\",\n  date: \"有効な日付を入力してください。\",\n  dateISO: \"有効な日付（ISO）を入力してください。\",\n  number: \"有効な数字を入力してください。\",\n  digits: \"数字のみを入力してください。\",\n  creditcard: \"有効なクレジットカード番号を入力してください。\",\n  equalTo: \"同じ値をもう一度入力してください。\",\n  accept: \"有効な拡張子を含む値を入力してください。\",\n  maxlength: jQuery.format(\"{0} 文字以内で入力してください。\"),\n  minlength: jQuery.format(\"{0} 文字以上で入力してください。\"),\n  rangelength: jQuery.format(\"{0} 文字から {1} 文字までの値を入力してください。\"),\n  range: jQuery.format(\"{0} から {1} までの値を入力してください。\"),\n  max: jQuery.format(\"{0} 以下の値を入力してください。\"),\n  min: jQuery.format(\"{0} 以上の値を入力してください。\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ka.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KA (Georgian; ქართული)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"ამ ველის შევსება აუცილებელია.\",\n        remote: \"გთხოვთ მიუთითოთ სწორი მნიშვნელობა.\",\n        email: \"გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.\",\n        url: \"გთხოვთ მიუთითოთ კორექტული URL.\",\n        date: \"გთხოვთ მიუთითოთ კორექტული თარიღი.\",\n        dateISO: \"გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.\",\n        number: \"გთხოვთ მიუთითოთ ციფრი.\",\n        digits: \"გთხოვთ მიუთითოთ მხოლოდ ციფრები.\",\n        creditcard: \"გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.\",\n        equalTo: \"გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.\",\n        accept: \"გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.\",\n        maxlength: jQuery.validator.format(\"დასაშვებია არაუმეტეს {0} სიმბოლო.\"),\n        minlength: jQuery.validator.format(\"აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო.\"),\n        rangelength: jQuery.validator.format(\"ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე.\"),\n        range: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე.\"),\n        max: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს.\"),\n        min: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_kk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KK (Kazakh; қазақ тілі)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Бұл өрісті міндетті түрде толтырыңыз.\",\n        remote: \"Дұрыс мағына енгізуіңізді сұраймыз.\",\n        email: \"Нақты электронды поштаңызды енгізуіңізді сұраймыз.\",\n        url: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n        date: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n        dateISO: \"Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.\",\n        number: \"Күнді енгізуіңізді сұраймыз.\",\n        digits: \"Тек қана сандарды енгізуіңізді сұраймыз.\",\n        creditcard: \"Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.\",\n        equalTo: \"Осы мәнді қайта енгізуіңізді сұраймыз.\",\n        accept: \"Файлдың кеңейтуін дұрыс таңдаңыз.\",\n        maxlength: jQuery.format(\"Ұзындығы {0} символдан  көр болмасын.\"),\n        minlength: jQuery.format(\"Ұзындығы {0} символдан аз болмасын.\"),\n        rangelength: jQuery.format(\"Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз.\"),\n        range: jQuery.format(\"Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз.\"),\n        max: jQuery.format(\"{0} аз немесе тең санын енгізуіңіді сұраймыз.\"),\n        min: jQuery.format(\"{0} көп немесе тең санын енгізуіңізді сұраймыз.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lt.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LT (Lithuanian; lietuvių kalba)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Šis laukas yra privalomas.\",\n       remote: \"Prašau pataisyti šį lauką.\",\n       email: \"Prašau įvesti teisingą elektroninio pašto adresą.\",\n       url: \"Prašau įvesti teisingą URL.\",\n       date: \"Prašau įvesti teisingą datą.\",\n       dateISO: \"Prašau įvesti teisingą datą (ISO).\",\n       number: \"Prašau įvesti teisingą skaičių.\",\n       digits: \"Prašau naudoti tik skaitmenis.\",\n       creditcard: \"Prašau įvesti teisingą kreditinės kortelės numerį.\",\n       equalTo: \"Prašau įvestį tą pačią reikšmę dar kartą.\",\n       accept: \"Prašau įvesti reikšmę su teisingu plėtiniu.\",\n       maxlength: $.format(\"Prašau įvesti ne daugiau kaip {0} simbolių.\"),\n       minlength: $.format(\"Prašau įvesti bent {0} simbolius.\"),\n       rangelength: $.format(\"Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių.\"),\n       range: $.format(\"Prašau įvesti reikšmę intervale nuo {0} iki {1}.\"),\n       max: $.format(\"Prašau įvesti reikšmę mažesnę arba lygią {0}.\"),\n       min: $.format(\"Prašau įvesti reikšmę didesnę arba lygią {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lv.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LV (Latvian; latviešu valoda)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Šis lauks ir obligāts.\",\n        remote: \"Lūdzu, pārbaudiet šo lauku.\",\n        email: \"Lūdzu, ievadiet derīgu e-pasta adresi.\",\n        url: \"Lūdzu, ievadiet derīgu URL adresi.\",\n        date: \"Lūdzu, ievadiet derīgu datumu.\",\n        dateISO: \"Lūdzu, ievadiet derīgu datumu (ISO).\",\n        number: \"Lūdzu, ievadiet derīgu numuru.\",\n        digits: \"Lūdzu, ievadiet tikai ciparus.\",\n        creditcard: \"Lūdzu, ievadiet derīgu kredītkartes numuru.\",\n        equalTo: \"Lūdzu, ievadiet to pašu vēlreiz.\",\n        accept: \"Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.\",\n        maxlength: jQuery.validator.format(\"Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes.\"),\n        minlength: jQuery.validator.format(\"Lūdzu, ievadiet vismaz {0} rakstzīmes.\"),\n        rangelength: jQuery.validator.format(\"Lūdzu ievadiet {0} līdz {1} rakstzīmes.\"),\n        range: jQuery.validator.format(\"Lūdzu, ievadiet skaitli no {0} līdz {1}.\"),\n        max: jQuery.validator.format(\"Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}.\"),\n        min: jQuery.validator.format(\"Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_nl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NL (Dutch; Nederlands, Vlaams)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Dit is een verplicht veld.\",\n        remote: \"Controleer dit veld.\",\n        email: \"Vul hier een geldig e-mailadres in.\",\n        url: \"Vul hier een geldige URL in.\",\n        date: \"Vul hier een geldige datum in.\",\n        dateISO: \"Vul hier een geldige datum in (ISO-formaat).\",\n        number: \"Vul hier een geldig getal in.\",\n        digits: \"Vul hier alleen getallen in.\",\n        creditcard: \"Vul hier een geldig creditcardnummer in.\",\n        equalTo: \"Vul hier dezelfde waarde in.\",\n        accept: \"Vul hier een waarde in met een geldige extensie.\",\n        maxlength: jQuery.validator.format(\"Vul hier maximaal {0} tekens in.\"),\n        minlength: jQuery.validator.format(\"Vul hier minimaal {0} tekens in.\"),\n        rangelength: jQuery.validator.format(\"Vul hier een waarde in van minimaal {0} en maximaal {1} tekens.\"),\n        range: jQuery.validator.format(\"Vul hier een waarde in van minimaal {0} en maximaal {1}.\"),\n        max: jQuery.validator.format(\"Vul hier een waarde in kleiner dan of gelijk aan {0}.\"),\n        min: jQuery.validator.format(\"Vul hier een waarde in groter dan of gelijk aan {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_no.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NO (Norwegian; Norsk)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Dette feltet er obligatorisk.\",\n       maxlength: jQuery.validator.format(\"Maksimalt {0} tegn.\"),\n       minlength: jQuery.validator.format(\"Minimum {0} tegn.\"),\n       rangelength: jQuery.validator.format(\"Angi minimum {0} og maksimum {1} tegn.\"),\n       email: \"Oppgi en gyldig epostadresse.\",\n       url: \"Angi en gyldig URL.\",\n       date: \"Angi en gyldig dato.\",\n       dateISO: \"Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).\",\n       dateSE: \"Angi en gyldig dato.\",\n       number: \"Angi et gyldig nummer.\",\n       numberSE: \"Angi et gyldig nummer.\",\n       digits: \"Skriv kun tall.\",\n       equalTo: \"Skriv samme verdi igjen.\",\n       range: jQuery.validator.format(\"Angi en verdi mellom {0} og {1}.\"),\n       max: jQuery.validator.format(\"Angi en verdi som er mindre eller lik {0}.\"),\n       min: jQuery.validator.format(\"Angi en verdi som er st&oslash;rre eller lik {0}.\"),\n       creditcard: \"Angi et gyldig kredittkortnummer.\"\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PL (Polish; język polski, polszczyzna)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To pole jest wymagane.\",\n\tremote: \"Proszę o wypełnienie tego pola.\",\n\temail: \"Proszę o podanie prawidłowego adresu email.\",\n\turl: \"Proszę o podanie prawidłowego URL.\",\n\tdate: \"Proszę o podanie prawidłowej daty.\",\n\tdateISO: \"Proszę o podanie prawidłowej daty (ISO).\",\n\tnumber: \"Proszę o podanie prawidłowej liczby.\",\n\tdigits: \"Proszę o podanie samych cyfr.\",\n\tcreditcard: \"Proszę o podanie prawidłowej karty kredytowej.\",\n\tequalTo: \"Proszę o podanie tej samej wartości ponownie.\",\n\taccept: \"Proszę o podanie wartości z prawidłowym rozszerzeniem.\",\n\tmaxlength: jQuery.validator.format(\"Proszę o podanie nie więcej niż {0} znaków.\"),\n\tminlength: jQuery.validator.format(\"Proszę o podanie przynajmniej {0} znaków.\"),\n\trangelength: jQuery.validator.format(\"Proszę o podanie wartości o długości od {0} do {1} znaków.\"),\n\trange: jQuery.validator.format(\"Proszę o podanie wartości z przedziału od {0} do {1}.\"),\n\tmax: jQuery.validator.format(\"Proszę o podanie wartości mniejszej bądź równej {0}.\"),\n\tmin: jQuery.validator.format(\"Proszę o podanie wartości większej bądź równej {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_BR.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: BR (Brazil)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Este campo &eacute; requerido.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.\",\n\turl: \"Por favor, forne&ccedil;a uma URL v&aacute;lida.\",\n\tdate: \"Por favor, forne&ccedil;a uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, forne&ccedil;a somente d&iacute;gitos.\",\n\tcreditcard: \"Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, forne&ccedil;a o mesmo valor novamente.\",\n\taccept: \"Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.\",\n\tmaxlength: jQuery.validator.format(\"Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres.\"),\n\tminlength: jQuery.validator.format(\"Por favor, forne&ccedil;a ao menos {0} caracteres.\"),\n\trangelength: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento.\"),\n\trange: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor entre {0} e {1}.\"),\n\tmax: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor menor ou igual a {0}.\"),\n\tmin: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor maior ou igual a {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_PT.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: PT (Portugal)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Campo de preenchimento obrigat&oacute;rio.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, introduza um endere&ccedil;o eletr&oacute;nico v&aacute;lido.\",\n\turl: \"Por favor, introduza um URL v&aacute;lido.\",\n\tdate: \"Por favor, introduza uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, introduza uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, introduza um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, introduza apenas d&iacute;gitos.\",\n\tcreditcard: \"Por favor, introduza um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, introduza de novo o mesmo valor.\",\n\taccept: \"Por favor, introduza um ficheiro com uma extens&atilde;o v&aacute;lida.\",\n\tmaxlength: jQuery.validator.format(\"Por favor, n&atilde;o introduza mais do que {0} caracteres.\"),\n\tminlength: jQuery.validator.format(\"Por favor, introduza pelo menos {0} caracteres.\"),\n\trangelength: jQuery.validator.format(\"Por favor, introduza entre {0} e {1} caracteres.\"),\n\trange: jQuery.validator.format(\"Por favor, introduza um valor entre {0} e {1}.\"),\n\tmax: jQuery.validator.format(\"Por favor, introduza um valor menor ou igual a {0}.\"),\n\tmin: jQuery.validator.format(\"Por favor, introduza um valor maior ou igual a {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ro.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RO (Romanian, limba română)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Acest câmp este obligatoriu.\",\n  remote: \"Te rugăm să completezi acest câmp.\",\n  email: \"Te rugăm să introduci o adresă de email validă\",\n  url: \"Te rugăm sa introduci o adresă URL validă.\",\n  date: \"Te rugăm să introduci o dată corectă.\",\n  dateISO: \"Te rugăm să introduci o dată (ISO) corectă.\",\n  number: \"Te rugăm să introduci un număr întreg valid.\",\n  digits: \"Te rugăm să introduci doar cifre.\",\n  creditcard: \"Te rugăm să introduci un numar de carte de credit valid.\",\n  equalTo: \"Te rugăm să reintroduci valoarea.\",\n  accept: \"Te rugăm să introduci o valoare cu o extensie validă.\",\n  maxlength: jQuery.validator.format(\"Te rugăm să nu introduci mai mult de {0} caractere.\"),\n  minlength: jQuery.validator.format(\"Te rugăm să introduci cel puțin {0} caractere.\"),\n  rangelength: jQuery.validator.format(\"Te rugăm să introduci o valoare între {0} și {1} caractere.\"),\n  range: jQuery.validator.format(\"Te rugăm să introduci o valoare între {0} și {1}.\"),\n  max: jQuery.validator.format(\"Te rugăm să introduci o valoare egal sau mai mică decât {0}.\"),\n  min: jQuery.validator.format(\"Te rugăm să introduci o valoare egal sau mai mare decât {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ru.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RU (Russian; русский язык)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Это поле необходимо заполнить.\",\n        remote: \"Пожалуйста, введите правильное значение.\",\n        email: \"Пожалуйста, введите корректный адрес электронной почты.\",\n        url: \"Пожалуйста, введите корректный URL.\",\n        date: \"Пожалуйста, введите корректную дату.\",\n        dateISO: \"Пожалуйста, введите корректную дату в формате ISO.\",\n        number: \"Пожалуйста, введите число.\",\n        digits: \"Пожалуйста, вводите только цифры.\",\n        creditcard: \"Пожалуйста, введите правильный номер кредитной карты.\",\n        equalTo: \"Пожалуйста, введите такое же значение ещё раз.\",\n        accept: \"Пожалуйста, выберите файл с правильным расширением.\",\n        maxlength: jQuery.validator.format(\"Пожалуйста, введите не больше {0} символов.\"),\n        minlength: jQuery.validator.format(\"Пожалуйста, введите не меньше {0} символов.\"),\n        rangelength: jQuery.validator.format(\"Пожалуйста, введите значение длиной от {0} до {1} символов.\"),\n        range: jQuery.validator.format(\"Пожалуйста, введите число от {0} до {1}.\"),\n        max: jQuery.validator.format(\"Пожалуйста, введите число, меньшее или равное {0}.\"),\n        min: jQuery.validator.format(\"Пожалуйста, введите число, большее или равное {0}.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_si.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SI (Slovenian)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Vpis v tem polju ni v pravi obliki.\",\n\temail: \"Prosimo, vnesite pravi email naslov.\",\n\turl: \"Prosimo, vnesite pravi URL.\",\n\tdate: \"Prosimo, vnesite pravi datum.\",\n\tdateISO: \"Prosimo, vnesite pravi datum (ISO).\",\n\tnumber: \"Prosimo, vnesite pravo številko.\",\n\tdigits: \"Prosimo, vnesite samo številke.\",\n\tcreditcard: \"Prosimo, vnesite pravo številko kreditne kartice.\",\n\tequalTo: \"Prosimo, ponovno vnesite enako vsebino.\",\n\taccept: \"Prosimo, vnesite vsebino z pravo končnico.\",\n\tmaxlength: $.validator.format(\"Prosimo, da ne vnašate več kot {0} znakov.\"),\n\tminlength: $.validator.format(\"Prosimo, vnesite vsaj {0} znakov.\"),\n\trangelength: $.validator.format(\"Prosimo, vnesite od {0} do {1} znakov.\"),\n\trange: $.validator.format(\"Prosimo, vnesite vrednost med {0} in {1}.\"),\n\tmax: $.validator.format(\"Prosimo, vnesite vrednost manjšo ali enako {0}.\"),\n\tmin: $.validator.format(\"Prosimo, vnesite vrednost večjo ali enako {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SK (Slovak; slovenčina, slovenský jazyk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Povinné zadať.\",\n\tmaxlength: jQuery.validator.format(\"Maximálne {0} znakov.\"),\n\tminlength: jQuery.validator.format(\"Minimálne {0} znakov.\"),\n\trangelength: jQuery.validator.format(\"Minimálne {0} a Maximálne {0} znakov.\"),\n\temail: \"E-mailová adresa musí byť platná.\",\n\turl: \"URL musí byť platný.\",\n\tdate: \"Musí byť dátum.\",\n\tnumber: \"Musí byť číslo.\",\n\tdigits: \"Môže obsahovať iba číslice.\",\n\tequalTo: \"Dva hodnoty sa musia rovnať.\",\n\trange: jQuery.validator.format(\"Musí byť medzi {0} a {1}.\"),\n\tmax: jQuery.validator.format(\"Nemôže byť viac ako{0}.\"),\n\tmin: jQuery.validator.format(\"Nemôže byť menej ako{0}.\"),\n\tcreditcard: \"Číslo platobnej karty musí byť platné.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Language: SL (Slovenian; slovenski jezik)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Prosimo popravite to polje.\",\n\temail: \"Prosimo vnesite veljaven email naslov.\",\n\turl: \"Prosimo vnesite veljaven URL naslov.\",\n\tdate: \"Prosimo vnesite veljaven datum.\",\n\tdateISO: \"Prosimo vnesite veljaven ISO datum.\",\n\tnumber: \"Prosimo vnesite veljavno število.\",\n\tdigits: \"Prosimo vnesite samo števila.\",\n\tcreditcard: \"Prosimo vnesite veljavno številko kreditne kartice.\",\n\tequalTo: \"Prosimo ponovno vnesite vrednost.\",\n\taccept: \"Prosimo vnesite vrednost z veljavno končnico.\",\n\tmaxlength: jQuery.validator.format(\"Prosimo vnesite največ {0} znakov.\"),\n\tminlength: jQuery.validator.format(\"Prosimo vnesite najmanj {0} znakov.\"),\n\trangelength: jQuery.validator.format(\"Prosimo vnesite najmanj {0} in največ {1} znakov.\"),\n\trange: jQuery.validator.format(\"Prosimo vnesite vrednost med {0} in {1}.\"),\n\tmax: jQuery.validator.format(\"Prosimo vnesite vrednost manjše ali enako {0}.\"),\n\tmin: jQuery.validator.format(\"Prosimo vnesite vrednost večje ali enako {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sr.js",
    "content": "﻿/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SR (Serbian; српски језик)\n */\njQuery.extend(jQuery.validator.messages, {\n    required: \"Поље је обавезно.\",\n    remote: \"Средите ово поље.\",\n    email: \"Унесите исправну и-мејл адресу\",\n    url: \"Унесите исправан URL.\",\n    date: \"Унесите исправан датум.\",\n    dateISO: \"Унесите исправан датум (ISO).\",\n    number: \"Унесите исправан број.\",\n    digits: \"Унесите само цифе.\",\n    creditcard: \"Унесите исправан број кредитне картице.\",\n    equalTo: \"Унесите исту вредност поново.\",\n    accept: \"Унесите вредност са одговарајућом екстензијом.\",\n    maxlength: $.validator.format(\"Унесите мање од {0}карактера.\"),\n    minlength: $.validator.format(\"Унесите барем {0} карактера.\"),\n    rangelength: $.validator.format(\"Унесите вредност дугачку између {0} и {1} карактера.\"),\n    range: $.validator.format(\"Унесите вредност између {0} и {1}.\"),\n    max: $.validator.format(\"Унесите вредност мању или једнаку {0}.\"),\n    min: $.validator.format(\"Унесите вредност већу или једнаку {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sv.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SV (Swedish; Svenska)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Detta f&auml;lt &auml;r obligatoriskt.\",\n\tmaxlength: jQuery.validator.format(\"Du f&aring;r ange h&ouml;gst {0} tecken.\"),\n\tminlength: jQuery.validator.format(\"Du m&aring;ste ange minst {0} tecken.\"),\n\trangelength: jQuery.validator.format(\"Ange minst {0} och max {1} tecken.\"),\n\temail: \"Ange en korrekt e-postadress.\",\n\turl: \"Ange en korrekt URL.\",\n\tdate: \"Ange ett korrekt datum.\",\n\tdateISO: \"Ange ett korrekt datum (&ARING;&ARING;&ARING;&ARING;-MM-DD).\",\n\tnumber: \"Ange ett korrekt nummer.\",\n\tdigits: \"Ange endast siffror.\",\n\tequalTo: \"Ange samma v&auml;rde igen.\",\n\trange: jQuery.validator.format(\"Ange ett v&auml;rde mellan {0} och {1}.\"),\n\tmax: jQuery.validator.format(\"Ange ett v&auml;rde som &auml;r mindre eller lika med {0}.\"),\n\tmin: jQuery.validator.format(\"Ange ett v&auml;rde som &auml;r st&ouml;rre eller lika med {0}.\"),\n\tcreditcard: \"Ange ett korrekt kreditkortsnummer.\"\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_th.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TH (Thai; ไทย)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"โปรดระบุ\",\n\tremote: \"โปรดแก้ไขให้ถูกต้อง\",\n\temail: \"โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง\",\n\turl: \"โปรดระบุ URL ที่ถูกต้อง\",\n\tdate: \"โปรดระบุวันที่ ที่ถูกต้อง\",\n\tdateISO: \"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).\",\n\tnumber: \"โปรดระบุทศนิยมที่ถูกต้อง\",\n\tdigits: \"โปรดระบุจำนวนเต็มที่ถูกต้อง\",\n\tcreditcard: \"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง\",\n\tequalTo: \"โปรดระบุค่าเดิมอีกครั้ง\",\n\taccept: \"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง\",\n\tmaxlength: jQuery.validator.format(\"โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ\"),\n\tminlength: jQuery.validator.format(\"โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ\"),\n\trangelength: jQuery.validator.format(\"โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ\"),\n\trange: jQuery.validator.format(\"โปรดระบุค่าระหว่าง {0} และ {1}\"),\n\tmax: jQuery.validator.format(\"โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}\"),\n\tmin: jQuery.validator.format(\"โปรดระบุค่ามากกว่าหรือเท่ากับ {0}\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_tr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TR (Turkish; Türkçe)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Bu alanın doldurulması zorunludur.\",\n\tremote: \"Lütfen bu alanı düzeltin.\",\n\temail: \"Lütfen geçerli bir e-posta adresi giriniz.\",\n\turl: \"Lütfen geçerli bir web adresi (URL) giriniz.\",\n\tdate: \"Lütfen geçerli bir tarih giriniz.\",\n\tdateISO: \"Lütfen geçerli bir tarih giriniz(ISO formatında)\",\n\tnumber: \"Lütfen geçerli bir sayı giriniz.\",\n\tdigits: \"Lütfen sadece sayısal karakterler giriniz.\",\n\tcreditcard: \"Lütfen geçerli bir kredi kartı giriniz.\",\n\tequalTo: \"Lütfen aynı değeri tekrar giriniz.\",\n\taccept: \"Lütfen geçerli uzantıya sahip bir değer giriniz.\",\n\tmaxlength: jQuery.validator.format(\"Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz.\"),\n\tminlength: jQuery.validator.format(\"Lütfen en az {0} karakter uzunluğunda bir değer giriniz.\"),\n\trangelength: jQuery.validator.format(\"Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz.\"),\n\trange: jQuery.validator.format(\"Lütfen {0} ile {1} arasında bir değer giriniz.\"),\n\tmax: jQuery.validator.format(\"Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz.\"),\n\tmin: jQuery.validator.format(\"Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_uk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: UK (Ukrainian; українська мова)\n */\njQuery.extend(jQuery.validator.messages, {\n    required: \"Це поле необхідно заповнити.\",\n    remote: \"Будь ласка, введіть правильне значення.\",\n    email: \"Будь ласка, введіть коректну адресу електронної пошти.\",\n    url: \"Будь ласка, введіть коректний URL.\",\n    date: \"Будь ласка, введіть коректну дату.\",\n    dateISO: \"Будь ласка, введіть коректну дату у форматі ISO.\",\n    number: \"Будь ласка, введіть число.\",\n    digits: \"Вводите потрібно лише цифри.\",\n    creditcard: \"Будь ласка, введіть правильний номер кредитної карти.\",\n    equalTo: \"Будь ласка, введіть таке ж значення ще раз.\",\n    accept: \"Будь ласка, виберіть файл з правильним розширенням.\",\n    maxlength: jQuery.validator.format(\"Будь ласка, введіть не більше {0} символів.\"),\n    minlength: jQuery.validator.format(\"Будь ласка, введіть не менше {0} символів.\"),\n    rangelength: jQuery.validator.format(\"Будь ласка, введіть значення довжиною від {0} до {1} символів.\"),\n    range: jQuery.validator.format(\"Будь ласка, введіть число від {0} до {1}.\"),\n    max: jQuery.validator.format(\"Будь ласка, введіть число, менше або рівно {0}.\"),\n    min: jQuery.validator.format(\"Будь ласка, введіть число, більше або рівно {0}.\")\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_vi.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: VI (Vietnamese; Tiếng Việt)\n */\njQuery.extend(jQuery.validator.messages, {\n required: \"Hãy nhập.\",\n remote: \"Hãy sửa cho đúng.\",\n email: \"Hãy nhập email.\",\n url: \"Hãy nhập URL.\",\n date: \"Hãy nhập ngày.\",\n dateISO: \"Hãy nhập ngày (ISO).\",\n number: \"Hãy nhập số.\",\n digits: \"Hãy nhập chữ số.\",\n creditcard: \"Hãy nhập số thẻ tín dụng.\",\n equalTo: \"Hãy nhập thêm lần nữa.\",\n accept: \"Phần mở rộng không đúng.\",\n maxlength: jQuery.format(\"Hãy nhập từ {0} kí tự trở xuống.\"),\n minlength: jQuery.format(\"Hãy nhập từ {0} kí tự trở lên.\"),\n rangelength: jQuery.format(\"Hãy nhập từ {0} đến {1} kí tự.\"),\n range: jQuery.format(\"Hãy nhập từ {0} đến {1}.\"),\n max: jQuery.format(\"Hãy nhập từ {0} trở xuống.\"),\n min: jQuery.format(\"Hãy nhập từ {1} trở lên.\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"必选字段\",\n\t\tremote: \"请修正该字段\",\n\t\temail: \"请输入正确格式的电子邮件\",\n\t\turl: \"请输入合法的网址\",\n\t\tdate: \"请输入合法的日期\",\n\t\tdateISO: \"请输入合法的日期 (ISO).\",\n\t\tnumber: \"请输入合法的数字\",\n\t\tdigits: \"只能输入整数\",\n\t\tcreditcard: \"请输入合法的信用卡号\",\n\t\tequalTo: \"请再次输入相同的值\",\n\t\taccept: \"请输入拥有合法后缀名的字符串\",\n\t\tmaxlength: jQuery.validator.format(\"请输入一个长度最多是 {0} 的字符串\"),\n\t\tminlength: jQuery.validator.format(\"请输入一个长度最少是 {0} 的字符串\"),\n\t\trangelength: jQuery.validator.format(\"请输入一个长度介于 {0} 和 {1} 之间的字符串\"),\n\t\trange: jQuery.validator.format(\"请输入一个介于 {0} 和 {1} 之间的值\"),\n\t\tmax: jQuery.validator.format(\"请输入一个最大为 {0} 的值\"),\n\t\tmin: jQuery.validator.format(\"请输入一个最小为 {0} 的值\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh_TW.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)\n * Region: TW (Taiwan)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"必填\",\n\t\tremote: \"請修正此欄位\",\n\t\temail: \"請輸入正確的電子信箱\",\n\t\turl: \"請輸入合法的URL\",\n\t\tdate: \"請輸入合法的日期\",\n\t\tdateISO: \"請輸入合法的日期 (ISO).\",\n\t\tnumber: \"請輸入數字\",\n\t\tdigits: \"請輸入整數\",\n\t\tcreditcard: \"請輸入合法的信用卡號碼\",\n\t\tequalTo: \"請重複輸入一次\",\n\t\taccept: \"請輸入有效的後缀字串\",\n\t\tmaxlength: jQuery.validator.format(\"請輸入長度不大於{0} 的字串\"),\n\t\tminlength: jQuery.validator.format(\"請輸入長度不小於 {0} 的字串\"),\n\t\trangelength: jQuery.validator.format(\"請輸入長度介於 {0} 和 {1} 之間的字串\"),\n\t\trange: jQuery.validator.format(\"請輸入介於 {0} 和 {1} 之間的數值\"),\n\t\tmax: jQuery.validator.format(\"請輸入不大於 {0} 的數值\"),\n\t\tmin: jQuery.validator.format(\"請輸入不小於 {0} 的數值\")\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_de.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: DE\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.test(value);\n\t},\n\tnumber: function(value, element) {\n\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.test(value);\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_nl.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: NL\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?[\\.\\/-]\\d\\d?[\\.\\/-]\\d\\d\\d?\\d?$/.test(value);\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_pt.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: PT_BR\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?\\/\\d\\d?\\/\\d\\d\\d?\\d?$/.test(value);\n\t}\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/package.json",
    "content": "{\n  \"name\": \"jquery-validation\",\n  \"title\": \"jQuery Validation Plugin\",\n  \"description\": \"Form validation made easy\",\n  \"version\": \"1.10.0\",\n  \"homepage\": \"https://github.com/jzaefferer/jquery-validation\",\n  \"author\": {\n    \"name\": \"Jörn Zaefferer\",\n    \"email\": \"joern.zaefferer@gmail.com\",\n    \"url\": \"http://bassistance.de\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/jzaefferer/jquery-validation.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/jzaefferer/jquery-validation/issues\"\n  },\n  \"licenses\": [\n    {\n      \"type\": \"MIT\",\n      \"url\": \"http://www.opensource.org/licenses/MIT\"\n    },\n    {\n      \"type\": \"GPL\",\n      \"url\": \"http://www.opensource.org/licenses/GPL-2.0\"\n    }\n  ],\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"grunt\": \"0.3.x\",\n    \"zipstream\": \"0.2.x\"\n  },\n  \"keywords\": []\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/events.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"firebug/firebug.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$().ready(function() {\n\tvar handler = {\n\t\tfocusin: function() {\n\t\t\t$(this).addClass(\"focus\");\n\t\t},\n\t\tfocusout: function() {\n\t\t\t$(this).removeClass(\"focus\");\n\t\t}\n\t}\n\t$(\"#commentForm\").delegate(\"focusin focusout\", \":text, textarea\", function(event) {\n\t\t/*\n\t\tthis.addClass(\"focus\").one(\"blur\", function() {\n\t\t\t$(this).removeClass(\"focus\");\n\t\t});\n\t\t*/\n\t\thandler[event.type].call(this, arguments);\n\t});\n\t$(\"#remove\").click(function() {\n\t\t$(\"#commentForm\").unbind(\"focusin\");\n\t})\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; display: block; float: left; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n.focus { background-color: red; }\n</style>\n\n</head>\n<body>\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true,email:true}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" name=\"url\" class=\"{url:true}\" value=\"\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"{required:true}\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<button id=\"remove\">Remove focus handler</button>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.css",
    "content": "\nhtml, body {\n    margin: 0;\n    background: #FFFFFF;\n    font-family: Lucida Grande, Tahoma, sans-serif;\n    font-size: 11px;\n    overflow: hidden;\n}\n\na {\n    text-decoration: none;\n}\n\na:hover {\n    text-decoration: underline;\n}\n\n.toolbar {\n    height: 14px;\n    border-top: 1px solid ThreeDHighlight;\n    border-bottom: 1px solid ThreeDShadow;\n    padding: 2px 6px;\n    background: ThreeDFace;\n}\n\n.toolbarRight {\n    position: absolute;\n    top: 4px;\n    right: 6px;\n}\n\n#log {\n    overflow: auto;\n    position: absolute;\n    left: 0;\n    width: 100%;\n}\n\n#commandLine {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 18px;\n    border: none;\n    border-top: 1px solid ThreeDShadow;\n}\n\n/************************************************************************************************/\n\n.logRow {\n    position: relative;\n    border-bottom: 1px solid #D7D7D7;\n    padding: 2px 4px 1px 6px;\n    background-color: #FFFFFF;\n}\n\n.logRow-command {\n    font-family: Monaco, monospace;\n    color: blue;\n}\n\n.objectBox-null {\n    padding: 0 2px;\n    border: 1px solid #666666;\n    background-color: #888888;\n    color: #FFFFFF;\n}\n\n.objectBox-string {\n    font-family: Monaco, monospace;\n    color: red;\n    white-space: pre;\n}\n\n.objectBox-number {\n    color: #000088;\n}\n\n.objectBox-function {\n    font-family: Monaco, monospace;\n    color: DarkGreen;\n}\n\n.objectBox-object {\n    color: DarkGreen;\n    font-weight: bold;\n}\n\n/************************************************************************************************/\n\n.logRow-info,\n.logRow-error,\n.logRow-warning {\n    background: #FFFFFF no-repeat 2px 2px;\n    padding-left: 20px;\n    padding-bottom: 3px;\n}\n\n.logRow-info {\n    background-image: url(infoIcon.png);\n}\n\n.logRow-warning {\n    background-color: cyan;\n    background-image: url(warningIcon.png);\n}\n\n.logRow-error {\n    background-color: LightYellow;\n    background-image: url(errorIcon.png);\n}\n\n.errorMessage {\n    vertical-align: top;\n    color: #FF0000;\n}\n\n.objectBox-sourceLink {\n    position: absolute;\n    right: 4px;\n    top: 2px;\n    padding-left: 8px;\n    font-family: Lucida Grande, sans-serif;\n    font-weight: bold;\n    color: #0000FF;\n}\n\n/************************************************************************************************/\n\n.logRow-group {\n    background: #EEEEEE;\n    border-bottom: none;\n}\n\n.logGroup {\n    background: #EEEEEE;\n}\n\n.logGroupBox {\n    margin-left: 24px;\n    border-top: 1px solid #D7D7D7;\n    border-left: 1px solid #D7D7D7;\n}\n\n/************************************************************************************************/\n\n.selectorTag,\n.selectorId,\n.selectorClass {\n    font-family: Monaco, monospace;\n    font-weight: normal;\n}\n\n.selectorTag {\n    color: #0000FF;\n}\n\n.selectorId {\n    color: DarkBlue;\n}\n\n.selectorClass {\n    color: red;\n}\n\n/************************************************************************************************/\n\n.objectBox-element {\n    font-family: Monaco, monospace;\n    color: #000088;\n}\n\n.nodeChildren {\n    margin-left: 16px;\n}\n\n.nodeTag {\n    color: blue;\n}\n\n.nodeValue {\n    color: #FF0000;\n    font-weight: normal;\n}\n\n.nodeText,\n.nodeComment {\n    margin: 0 2px;\n    vertical-align: top;\n}\n\n.nodeText {\n    color: #333333;\n}\n\n.nodeComment {\n    color: DarkGreen;\n}\n\n/************************************************************************************************/\n\n.propertyNameCell {\n    vertical-align: top;\n}\n\n.propertyName {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <title>Firebug</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"firebug.css\">\n</head>\n\n<body>\n    <div id=\"toolbar\" class=\"toolbar\">\n        <a href=\"#\" onclick=\"parent.console.clear()\">Clear</a>\n        <span class=\"toolbarRight\">\n            <a href=\"#\" onclick=\"parent.console.close()\">Close</a>\n        </span>\n    </div>\n    <div id=\"log\"></div>\n    <input type=\"text\" id=\"commandLine\">\n    \n    <script>parent.onFirebugReady(document);</script>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.js",
    "content": "\nif (!(\"console\" in window) || !(\"firebug\" in console)) {\n(function()\n{\n    window.console = \n    {\n        log: function()\n        {\n            logFormatted(arguments, \"\");\n        },\n        \n        debug: function()\n        {\n            logFormatted(arguments, \"debug\");\n        },\n        \n        info: function()\n        {\n            logFormatted(arguments, \"info\");\n        },\n        \n        warn: function()\n        {\n            logFormatted(arguments, \"warning\");\n        },\n        \n        error: function()\n        {\n            logFormatted(arguments, \"error\");\n        },\n        \n        assert: function(truth, message)\n        {\n            if (!truth)\n            {\n                var args = [];\n                for (var i = 1; i < arguments.length; ++i)\n                    args.push(arguments[i]);\n                \n                logFormatted(args.length ? args : [\"Assertion Failure\"], \"error\");\n                throw message ? message : \"Assertion Failure\";\n            }\n        },\n        \n        dir: function(object)\n        {\n            var html = [];\n                        \n            var pairs = [];\n            for (var name in object)\n            {\n                try\n                {\n                    pairs.push([name, object[name]]);\n                }\n                catch (exc)\n                {\n                }\n            }\n            \n            pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });\n            \n            html.push('<table>');\n            for (var i = 0; i < pairs.length; ++i)\n            {\n                var name = pairs[i][0], value = pairs[i][1];\n                \n                html.push('<tr>', \n                '<td class=\"propertyNameCell\"><span class=\"propertyName\">',\n                    escapeHTML(name), '</span></td>', '<td><span class=\"propertyValue\">');\n                appendObject(value, html);\n                html.push('</span></td></tr>');\n            }\n            html.push('</table>');\n            \n            logRow(html, \"dir\");\n        },\n        \n        dirxml: function(node)\n        {\n            var html = [];\n            \n            appendNode(node, html);\n            logRow(html, \"dirxml\");\n        },\n        \n        group: function()\n        {\n            logRow(arguments, \"group\", pushGroup);\n        },\n        \n        groupEnd: function()\n        {\n            logRow(arguments, \"\", popGroup);\n        },\n        \n        time: function(name)\n        {\n            timeMap[name] = (new Date()).getTime();\n        },\n        \n        timeEnd: function(name)\n        {\n            if (name in timeMap)\n            {\n                var delta = (new Date()).getTime() - timeMap[name];\n                logFormatted([name+ \":\", delta+\"ms\"]);\n                delete timeMap[name];\n            }\n        },\n        \n        count: function()\n        {\n            this.warn([\"count() not supported.\"]);\n        },\n        \n        trace: function()\n        {\n            this.warn([\"trace() not supported.\"]);\n        },\n        \n        profile: function()\n        {\n            this.warn([\"profile() not supported.\"]);\n        },\n        \n        profileEnd: function()\n        {\n        },\n        \n        clear: function()\n        {\n            consoleBody.innerHTML = \"\";\n        },\n\n        open: function()\n        {\n            toggleConsole(true);\n        },\n        \n        close: function()\n        {\n            if (frameVisible)\n                toggleConsole();\n        }\n    };\n \n    // ********************************************************************************************\n       \n    var consoleFrame = null;\n    var consoleBody = null;\n    var commandLine = null;\n    \n    var frameVisible = false;\n    var messageQueue = [];\n    var groupStack = [];\n    var timeMap = {};\n    \n    var clPrefix = \">>> \";\n    \n    var isFirefox = navigator.userAgent.indexOf(\"Firefox\") != -1;\n    var isIE = navigator.userAgent.indexOf(\"MSIE\") != -1;\n    var isOpera = navigator.userAgent.indexOf(\"Opera\") != -1;\n    var isSafari = navigator.userAgent.indexOf(\"AppleWebKit\") != -1;\n\n    // ********************************************************************************************\n\n    function toggleConsole(forceOpen)\n    {\n        frameVisible = forceOpen || !frameVisible;\n        if (consoleFrame)\n            consoleFrame.style.visibility = frameVisible ? \"visible\" : \"hidden\";\n        else\n            waitForBody();\n    }\n\n    function focusCommandLine()\n    {\n        toggleConsole(true);\n        if (commandLine)\n            commandLine.focus();\n    }\n\n    function waitForBody()\n    {\n        if (document.body)\n            createFrame();\n        else\n            setTimeout(waitForBody, 200);\n    }    \n\n    function createFrame()\n    {\n        if (consoleFrame)\n            return;\n        \n        window.onFirebugReady = function(doc)\n        {\n            window.onFirebugReady = null;\n\n            var toolbar = doc.getElementById(\"toolbar\");\n            toolbar.onmousedown = onSplitterMouseDown;\n\n            commandLine = doc.getElementById(\"commandLine\");\n            addEvent(commandLine, \"keydown\", onCommandLineKeyDown);\n\n            addEvent(doc, isIE || isSafari ? \"keydown\" : \"keypress\", onKeyDown);\n            \n            consoleBody = doc.getElementById(\"log\");\n            layout();\n            flush();\n        }\n\n        var baseURL = getFirebugURL();\n\n        consoleFrame = document.createElement(\"iframe\");\n        consoleFrame.setAttribute(\"src\", baseURL+\"/firebug.html\");\n        consoleFrame.setAttribute(\"frameBorder\", \"0\");\n        consoleFrame.style.visibility = (frameVisible ? \"visible\" : \"hidden\");    \n        consoleFrame.style.zIndex = \"2147483647\";\n        consoleFrame.style.position = \"fixed\";\n        consoleFrame.style.width = \"100%\";\n        consoleFrame.style.left = \"0\";\n        consoleFrame.style.bottom = \"0\";\n        consoleFrame.style.height = \"200px\";\n        document.body.appendChild(consoleFrame);\n    }\n    \n    function getFirebugURL()\n    {\n        var scripts = document.getElementsByTagName(\"script\");\n        for (var i = 0; i < scripts.length; ++i)\n        {\n            if (scripts[i].src.indexOf(\"firebug.js\") != -1)\n            {\n                var lastSlash = scripts[i].src.lastIndexOf(\"/\");\n                return scripts[i].src.substr(0, lastSlash);\n            }\n        }\n    }\n    \n    function evalCommandLine()\n    {\n        var text = commandLine.value;\n        commandLine.value = \"\";\n\n        logRow([clPrefix, text], \"command\");\n        \n        var value;\n        try\n        {\n            value = eval(text);\n        }\n        catch (exc)\n        {\n        }\n\n        console.log(value);\n    }\n    \n    function layout()\n    {\n        var toolbar = consoleBody.ownerDocument.getElementById(\"toolbar\");\n        var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);\n        consoleBody.style.top = toolbar.offsetHeight + \"px\";\n        consoleBody.style.height = height + \"px\";\n        \n        commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + \"px\";\n    }\n    \n    function logRow(message, className, handler)\n    {\n        if (consoleBody)\n            writeMessage(message, className, handler);\n        else\n        {\n            messageQueue.push([message, className, handler]);\n            waitForBody();\n        }\n    }\n    \n    function flush()\n    {\n        var queue = messageQueue;\n        messageQueue = [];\n        \n        for (var i = 0; i < queue.length; ++i)\n            writeMessage(queue[i][0], queue[i][1], queue[i][2]);\n    }\n\n    function writeMessage(message, className, handler)\n    {\n        var isScrolledToBottom =\n            consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;\n\n        if (!handler)\n            handler = writeRow;\n        \n        handler(message, className);\n        \n        if (isScrolledToBottom)\n            consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;\n    }\n    \n    function appendRow(row)\n    {\n        var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;\n        container.appendChild(row);\n    }\n\n    function writeRow(message, className)\n    {\n        var row = consoleBody.ownerDocument.createElement(\"div\");\n        row.className = \"logRow\" + (className ? \" logRow-\"+className : \"\");\n        row.innerHTML = message.join(\"\");\n        appendRow(row);\n    }\n\n    function pushGroup(message, className)\n    {\n        logFormatted(message, className);\n\n        var groupRow = consoleBody.ownerDocument.createElement(\"div\");\n        groupRow.className = \"logGroup\";\n        var groupRowBox = consoleBody.ownerDocument.createElement(\"div\");\n        groupRowBox.className = \"logGroupBox\";\n        groupRow.appendChild(groupRowBox);\n        appendRow(groupRowBox);\n        groupStack.push(groupRowBox);\n    }\n\n    function popGroup()\n    {\n        groupStack.pop();\n    }\n    \n    // ********************************************************************************************\n\n    function logFormatted(objects, className)\n    {\n        var html = [];\n\n        var format = objects[0];\n        var objIndex = 0;\n\n        if (typeof(format) != \"string\")\n        {\n            format = \"\";\n            objIndex = -1;\n        }\n\n        var parts = parseFormat(format);\n        for (var i = 0; i < parts.length; ++i)\n        {\n            var part = parts[i];\n            if (part && typeof(part) == \"object\")\n            {\n                var object = objects[++objIndex];\n                part.appender(object, html);\n            }\n            else\n                appendText(part, html);\n        }\n\n        for (var i = objIndex+1; i < objects.length; ++i)\n        {\n            appendText(\" \", html);\n            \n            var object = objects[i];\n            if (typeof(object) == \"string\")\n                appendText(object, html);\n            else\n                appendObject(object, html);\n        }\n        \n        logRow(html, className);\n    }\n\n    function parseFormat(format)\n    {\n        var parts = [];\n\n        var reg = /((^%|[^\\\\]%)(\\d+)?(\\.)([a-zA-Z]))|((^%|[^\\\\]%)([a-zA-Z]))/;    \n        var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};\n\n        for (var m = reg.exec(format); m; m = reg.exec(format))\n        {\n            var type = m[8] ? m[8] : m[5];\n            var appender = type in appenderMap ? appenderMap[type] : appendObject;\n            var precision = m[3] ? parseInt(m[3]) : (m[4] == \".\" ? -1 : 0);\n\n            parts.push(format.substr(0, m[0][0] == \"%\" ? m.index : m.index+1));\n            parts.push({appender: appender, precision: precision});\n\n            format = format.substr(m.index+m[0].length);\n        }\n\n        parts.push(format);\n\n        return parts;\n    }\n\n    function escapeHTML(value)\n    {\n        function replaceChars(ch)\n        {\n            switch (ch)\n            {\n                case \"<\":\n                    return \"&lt;\";\n                case \">\":\n                    return \"&gt;\";\n                case \"&\":\n                    return \"&amp;\";\n                case \"'\":\n                    return \"&#39;\";\n                case '\"':\n                    return \"&quot;\";\n            }\n            return \"?\";\n        };\n        return String(value).replace(/[<>&\"']/g, replaceChars);\n    }\n\n    function objectToString(object)\n    {\n        try\n        {\n            return object+\"\";\n        }\n        catch (exc)\n        {\n            return null;\n        }\n    }\n\n    // ********************************************************************************************\n\n    function appendText(object, html)\n    {\n        html.push(escapeHTML(objectToString(object)));\n    }\n\n    function appendNull(object, html)\n    {\n        html.push('<span class=\"objectBox-null\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendString(object, html)\n    {\n        html.push('<span class=\"objectBox-string\">&quot;', escapeHTML(objectToString(object)),\n            '&quot;</span>');\n    }\n\n    function appendInteger(object, html)\n    {\n        html.push('<span class=\"objectBox-number\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendFloat(object, html)\n    {\n        html.push('<span class=\"objectBox-number\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendFunction(object, html)\n    {\n        var reName = /function ?(.*?)\\(/;\n        var m = reName.exec(objectToString(object));\n        var name = m ? m[1] : \"function\";\n        html.push('<span class=\"objectBox-function\">', escapeHTML(name), '()</span>');\n    }\n    \n    function appendObject(object, html)\n    {\n        try\n        {\n            if (object == undefined)\n                appendNull(\"undefined\", html);\n            else if (object == null)\n                appendNull(\"null\", html);\n            else if (typeof object == \"string\")\n                appendString(object, html);\n            else if (typeof object == \"number\")\n                appendInteger(object, html);\n            else if (typeof object == \"function\")\n                appendFunction(object, html);\n            else if (object.nodeType == 1)\n                appendSelector(object, html);\n            else if (typeof object == \"object\")\n                appendObjectFormatted(object, html);\n            else\n                appendText(object, html);\n        }\n        catch (exc)\n        {\n        }\n    }\n        \n    function appendObjectFormatted(object, html)\n    {\n        var text = objectToString(object);\n        var reObject = /\\[object (.*?)\\]/;\n\n        var m = reObject.exec(text);\n        html.push('<span class=\"objectBox-object\">', m ? m[1] : text, '</span>')\n    }\n    \n    function appendSelector(object, html)\n    {\n        html.push('<span class=\"objectBox-selector\">');\n\n        html.push('<span class=\"selectorTag\">', escapeHTML(object.nodeName.toLowerCase()), '</span>');\n        if (object.id)\n            html.push('<span class=\"selectorId\">#', escapeHTML(object.id), '</span>');\n        if (object.className)\n            html.push('<span class=\"selectorClass\">.', escapeHTML(object.className), '</span>');\n\n        html.push('</span>');\n    }\n\n    function appendNode(node, html)\n    {\n        if (node.nodeType == 1)\n        {\n            html.push(\n                '<div class=\"objectBox-element\">',\n                    '&lt;<span class=\"nodeTag\">', node.nodeName.toLowerCase(), '</span>');\n\n            for (var i = 0; i < node.attributes.length; ++i)\n            {\n                var attr = node.attributes[i];\n                if (!attr.specified)\n                    continue;\n                \n                html.push('&nbsp;<span class=\"nodeName\">', attr.nodeName.toLowerCase(),\n                    '</span>=&quot;<span class=\"nodeValue\">', escapeHTML(attr.nodeValue),\n                    '</span>&quot;')\n            }\n\n            if (node.firstChild)\n            {\n                html.push('&gt;</div><div class=\"nodeChildren\">');\n\n                for (var child = node.firstChild; child; child = child.nextSibling)\n                    appendNode(child, html);\n                    \n                html.push('</div><div class=\"objectBox-element\">&lt;/<span class=\"nodeTag\">', \n                    node.nodeName.toLowerCase(), '&gt;</span></div>');\n            }\n            else\n                html.push('/&gt;</div>');\n        }\n        else if (node.nodeType == 3)\n        {\n            html.push('<div class=\"nodeText\">', escapeHTML(node.nodeValue),\n                '</div>');\n        }\n    }\n\n    // ********************************************************************************************\n    \n    function addEvent(object, name, handler)\n    {\n        if (document.all)\n            object.attachEvent(\"on\"+name, handler);\n        else\n            object.addEventListener(name, handler, false);\n    }\n    \n    function removeEvent(object, name, handler)\n    {\n        if (document.all)\n            object.detachEvent(\"on\"+name, handler);\n        else\n            object.removeEventListener(name, handler, false);\n    }\n    \n    function cancelEvent(event)\n    {\n        if (document.all)\n            event.cancelBubble = true;\n        else\n            event.stopPropagation();        \n    }\n\n    function onError(msg, href, lineNo)\n    {\n        var html = [];\n        \n        var lastSlash = href.lastIndexOf(\"/\");\n        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);\n        \n        html.push(\n            '<span class=\"errorMessage\">', msg, '</span>', \n            '<div class=\"objectBox-sourceLink\">', fileName, ' (line ', lineNo, ')</div>'\n        );\n        \n        logRow(html, \"error\");\n    };\n\n    function onKeyDown(event)\n    {\n        if (event.keyCode == 123)\n            toggleConsole();\n        else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey\n                 && (event.metaKey || event.ctrlKey))\n            focusCommandLine();\n        else\n            return;\n        \n        cancelEvent(event);\n    }\n\n    function onSplitterMouseDown(event)\n    {\n        if (isSafari || isOpera)\n            return;\n        \n        addEvent(document, \"mousemove\", onSplitterMouseMove);\n        addEvent(document, \"mouseup\", onSplitterMouseUp);\n\n        for (var i = 0; i < frames.length; ++i)\n        {\n            addEvent(frames[i].document, \"mousemove\", onSplitterMouseMove);\n            addEvent(frames[i].document, \"mouseup\", onSplitterMouseUp);\n        }\n    }\n    \n    function onSplitterMouseMove(event)\n    {\n        var win = document.all\n            ? event.srcElement.ownerDocument.parentWindow\n            : event.target.ownerDocument.defaultView;\n\n        var clientY = event.clientY;\n        if (win != win.parent)\n            clientY += win.frameElement ? win.frameElement.offsetTop : 0;\n        \n        var height = consoleFrame.offsetTop + consoleFrame.clientHeight;\n        var y = height - clientY;\n        \n        consoleFrame.style.height = y + \"px\";\n        layout();\n    }\n    \n    function onSplitterMouseUp(event)\n    {\n        removeEvent(document, \"mousemove\", onSplitterMouseMove);\n        removeEvent(document, \"mouseup\", onSplitterMouseUp);\n\n        for (var i = 0; i < frames.length; ++i)\n        {\n            removeEvent(frames[i].document, \"mousemove\", onSplitterMouseMove);\n            removeEvent(frames[i].document, \"mouseup\", onSplitterMouseUp);\n        }\n    }\n    \n    function onCommandLineKeyDown(event)\n    {\n        if (event.keyCode == 13)\n            evalCommandLine();\n        else if (event.keyCode == 27)\n            commandLine.value = \"\";\n    }\n    \n    window.onerror = onError;\n    addEvent(document, isIE || isSafari ? \"keydown\" : \"keypress\", onKeyDown);\n    \n    if (document.documentElement.getAttribute(\"debug\") == \"true\")\n        toggleConsole(true);\n})();\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebugx.js",
    "content": "\nif (!(\"console\" in window) || !(\"firebug\" in console))\n{\n    var names = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"assert\", \"dir\", \"dirxml\",\n    \"group\", \"groupEnd\", \"time\", \"timeEnd\", \"count\", \"trace\", \"profile\", \"profileEnd\"];\n\n    window.console = {};\n    for (var i = 0; i < names.length; ++i)\n        window.console[names[i]] = function() {}\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/index.html",
    "content": "<!DOCTYPE html>\n<html id=\"html\">\n<head>\n\t<title>jQuery - Validation Test Suite</title>\n\t<link rel=\"Stylesheet\" media=\"screen\" href=\"qunit/qunit.css\" />\n\t<script type=\"text/javascript\" src=\"jquery.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.form.js\"></script>\n\t<script type=\"text/javascript\" src=\"qunit/qunit.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.metadata.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.mockjax.js\"></script>\n\t<script type=\"text/javascript\" src=\"../jquery.validate.js\"></script>\n\t<script type=\"text/javascript\" src=\"../additional-methods.js\"></script>\n\t<script type=\"text/javascript\" src=\"test.js\"></script>\n\t<script type=\"text/javascript\" src=\"rules.js\"></script>\n\t<script type=\"text/javascript\" src=\"messages.js\"></script>\n\t<script type=\"text/javascript\" src=\"methods.js\"></script>\n</head>\n<body id=\"body\">\n\t<h1 id=\"qunit-header\">\n\t\t<a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Test Suite\n\t\t<a href=\"?jquery=1.3.2\">jQuery 1.3.2</a>\n\t\t<a href=\"?jquery=1.4.2\">jQuery 1.4.2</a>\n\t\t<a href=\"?jquery=1.4.4\">jQuery 1.4.4</a>\n\t\t<a href=\"?jquery=1.5.2\">jQuery 1.5.2</a>\n\t\t<a href=\"?jquery=1.6.1\">jQuery 1.6.1</a>\n\t\t<a href=\"?jquery=1.7.2\">jQuery 1.7.2</a>\n\t\t<a href=\"?jquery=git\">jQuery Latest (git)</a>\n\t\t</h1>\n\t<div>\n\t</div>\n\t<h2 id=\"qunit-banner\"></h2>\n\t<div id=\"qunit-testrunner-toolbar\"></div>\n\t<h2 id=\"qunit-userAgent\"></h2>\n\t<ol id=\"qunit-tests\"></ol>\n\n\t<!-- Test HTML -->\n\t<div id=\"other\" style=\"display:none;\">\n\t\t<input type=\"password\" name=\"pw1\" id=\"pw1\" value=\"engfeh\" />\n\t\t<input type=\"password\" name=\"pw2\" id=\"pw2\" value=\"\" />\n\t</div>\n\t<div id=\"qunit-fixture\">\n\t\t<p id=\"firstp\">See <a id=\"simon1\" href=\"http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector\" rel=\"bookmark\">this blog entry</a> for more information.</p>\n\t\t<p id=\"ap\">\n\t\t\tHere are some links in a normal paragraph: <a id=\"google\" href=\"http://www.google.com/\" title=\"Google!\">Google</a>,\n\t\t\t<a id=\"groups\" href=\"http://groups.google.com/\">Google Groups</a>.\n\t\t\tThis link has <code><a href=\"#\" id=\"anchor1\">class=\"blog\"</a></code>:\n\t\t\t<a href=\"http://diveintomark.org/\" class=\"blog\" hreflang=\"en\" id=\"mark\">diveintomark</a>\n\n\t\t</p>\n\t\t<div id=\"foo\">\n\t\t\t<p id=\"sndp\">Everything inside the red border is inside a div with <code>id=\"foo\"</code>.</p>\n\t\t\t<p lang=\"en\" id=\"en\">This is a normal link: <a id=\"yahoo\" href=\"http://www.yahoo.com/\" class=\"blogTest\">Yahoo</a></p>\n\t\t\t<p id=\"sap\">This link has <code><a href=\"#2\" id=\"anchor2\">class=\"blog\"</a></code>: <a href=\"http://simon.incutio.com/\" class=\"blog link\" id=\"simon\">Simon Willison's Weblog</a></p>\n\n\t\t</div>\n\t\t<p id=\"first\">Try them out:</p>\n\t\t<ul id=\"firstUL\"></ul>\n\t\t<ol id=\"empty\"></ol>\n\n\t\t<form id=\"testForm1\">\n\t\t\t<input type=\"text\" class=\"{required:true,minlength:2}\" title=\"buga\" name=\"firstname\" id=\"firstname\" />\n\t\t\t<label id=\"errorFirstname\" for=\"firstname\" class=\"error\">error for firstname</label>\n\t\t\t<input type=\"text\" class=\"{required:true}\" title=\"buga\" name=\"lastname\" id=\"lastname\" />\n\t\t\t<input type=\"text\" class=\"{required:true}\" title=\"something\" name=\"something\" id=\"something\" value=\"something\" />\n\t\t</form>\n\n\t\t<form id=\"testForm1clean\">\n\t\t\t<input title=\"buga\" name=\"firstname\" id=\"firstnamec\" />\n\t\t\t<label id=\"errorFirstname\" for=\"firstname\" class=\"error\">error for firstname</label>\n\t\t\t<input title=\"buga\" name=\"lastname\" id=\"lastnamec\" />\n\t\t\t<input name=\"username\" id=\"usernamec\" />\n\t\t</form>\n\n\t\t<form id=\"userForm\">\n\t\t\t<input type=\"text\" class=\"{required:true}\" name=\"username\" id=\"username\" />\n\t\t\t<input type=\"submit\" name=\"submitButton\" value=\"submitButtonValue\" />\n\t\t</form>\n\n\t\t<form id=\"signupForm\" action=\"form.php\">\n\t\t\t<input id=\"user\" name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"{required:true,minlength:3}\" />\n\t\t\t<input type=\"password\" name=\"password\" id=\"password\" class=\"{required:true,minlength:5}\" />\n\t\t</form>\n\n\t\t<form id=\"testForm2\">\n\t\t\t<input class=\"{required:true}\" type=\"radio\" name=\"agree\" id=\"agb\" />\n\t\t\t<label for=\"agree\" id=\"agreeLabel\" class=\"xerror\">error for agb</label>\n\t\t</form>\n\n\t\t<form id=\"testForm3\">\n\t\t\t<select class=\"{required:true}\" name=\"meal\" id=\"meal\" >\n\t\t\t\t<option value=\"\">Please select...</option>\n\t\t\t\t<option value=\"1\">Food</option>\n\t\t\t\t<option value=\"2\">Milk</option>\n\t\t\t</select>\n\t\t</form>\n\t\t<div class=\"error\" id=\"errorContainer\">\n\t\t\t<ul>\n\t\t\t\t<li class=\"error\" id=\"errorWrapper\">\n\t\t\t\t\t<label for=\"meal\" id=\"mealLabel\" class=\"error\">error for meal</label>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<form id=\"testForm4\">\n\t\t\t<input class=\"{foo:true}\" name=\"f1\" id=\"f1\" />\n\t\t\t<input class=\"{bar:true}\" name=\"f2\" id=\"f2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm5\">\n\t\t\t<input class=\"{equalTo:'#x2'}\" value=\"x\" name=\"x1\" id=\"x1\" />\n\t\t\t<input class=\"{equalTo:'#x1'}\" value=\"y\" name=\"x2\" id=\"x2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm6\">\n\t\t\t<input class=\"{required:true,minlength:2}\" type=\"checkbox\" name=\"check\" id=\"form6check1\" />\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"form6check2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm7\">\n\t\t\t<select class=\"{required:true,minlength:2}\" name=\"selectf7\" id=\"selectf7\" multiple=\"multiple\">\n\t\t\t\t<option id=\"optionxa\" value=\"0\">0</option>\n\t\t\t\t<option id=\"optionxb\" value=\"1\">1</option>\n\t\t\t\t<option id=\"optionxc\" value=\"2\">2</option>\n\t\t\t\t<option id=\"optionxd\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t</form>\n\n\t\t<form id=\"dateRangeForm\">\n\t\t\t<input id=\"fromDate\" name=\"fromDate\" class=\"requiredDateRange\" value=\"x\" />\n\t\t\t<input id=\"toDate\" name=\"toDate\" class=\"requiredDateRange\" value=\"y\" />\n\t\t\t<span class=\"errorContainer\"></span>\n\t\t</form>\n\n\t\t<form id=\"testForm8\">\n\t\t\t<input id=\"form8input\" class=\"{required:true,number:true,rangelength:[2,8]}\" name=\"abc\" />\n\t\t\t<input type=\"radio\" name=\"radio1\"/>\n\t\t</form>\n\n\t\t<form id=\"testForm9\">\n\t\t\t<input id=\"testEmail9\" class=\"{required:true,email:true,messages:{required:'required',email:'email'}}\" />\n\t\t</form>\n\n\t\t<form id=\"testForm10\">\n\t\t\t<input type=\"radio\" name=\"testForm10Radio\" value=\"1\" id=\"testForm10Radio1\" />\n\t\t\t<input type=\"radio\" name=\"testForm10Radio\" value=\"2\" id=\"testForm10Radio2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm11\">\n\t\t\t<!-- HTML5 -->\n\t\t\t<input required type=\"text\" name=\"testForm11Text\" id=\"testForm11text1\" />\n\t\t</form>\n\n\t\t<form id=\"testForm12\">\n\t\t\t<!-- empty \"type\" attribute -->\n\t\t\t<input name=\"testForm12text\" id=\"testForm12text\" class=\"{required:true}\" />\n\t\t</form>\n\n\t\t<form id=\"dataMessages\">\n\t\t\t<input name=\"dataMessagesName\" id=\"dataMessagesName\" class=\"required\" data-msg-required=\"You must enter a value here\" />\n\t\t</form>\n\n\t\t<div id=\"simplecontainer\">\n\t\t\t<h3></h3>\n\t\t</div>\n\n\t\t<div id=\"container\"></div>\n\n\t\t<ol id=\"labelcontainer\"></ol>\n\n\t\t<form id=\"elementsOrder\">\n\t\t\t<select class=\"required\" name=\"order1\" id=\"order1\"><option value=\"\">none</option></select>\n\t\t\t<input class=\"required\" name=\"order2\" id=\"order2\"/>\n\t\t\t<input class=\"required\" name=\"order3\" type=\"checkbox\" id=\"order3\"/>\n\t\t\t<input class=\"required\" name=\"order4\" id=\"order4\"/>\n\t\t\t<input class=\"required\" name=\"order5\" type=\"radio\" id=\"order5\"/>\n\t\t\t<input class=\"required\" name=\"order6\" id=\"order6\"/>\n\t\t\t<ul id=\"orderContainer\">\n\t\t\t</ul>\n\t\t</form>\n\n\t\t<form id=\"form\" action=\"formaction\">\n\t\t\t<input type=\"text\" name=\"action\" value=\"Test\" id=\"text1\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"   \" id=\"text1b\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"T \" id=\"text1c\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"T\" id=\"text2\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"TestTestTest\" id=\"text3\"/>\n\n\t\t\t<input type=\"text\" name=\"action\" value=\"0\" id=\"value1\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"10\" id=\"value2\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"1000\" id=\"value3\"/>\n\n\t\t\t<input type=\"radio\" name=\"radio1\" id=\"radio1\"/>\n\t\t\t<input type=\"radio\" name=\"radio1\" id=\"radio1a\"/>\n\t\t\t<input type=\"radio\" name=\"radio2\" id=\"radio2\" checked=\"checked\"/>\n\t\t\t<input type=\"radio\" name=\"radio\" id=\"radio3\"/>\n\t\t\t<input type=\"radio\" name=\"radio\" id=\"radio4\" checked=\"checked\"/>\n\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"check1\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"check1b\" />\n\n\t\t\t<input type=\"checkbox\" name=\"check2\" id=\"check2\"/>\n\n\t\t\t<input type=\"checkbox\" name=\"check3\" id=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\n\t\t\t<input type=\"hidden\" name=\"hidden\" id=\"hidden1\"/>\n\t\t\t<input type=\"text\" style=\"display:none;\" name=\"foo[bar]\" id=\"hidden2\"/>\n\n\t\t\t<input type=\"text\" readonly=\"readonly\" id=\"name\" name=\"name\" value=\"name\" />\n\n\t\t\t<button name=\"button\">Button</button>\n\n\t\t\t<textarea id=\"area1\" name=\"area1\">foobar</textarea>\n\n\n\t\t\t<textarea id=\"area2\" name=\"area2\"></textarea>\n\n\t\t\t<select name=\"select1\" id=\"select1\">\n\t\t\t\t<option id=\"option1a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option1b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option1c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option1d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select2\" id=\"select2\">\n\t\t\t\t<option id=\"option2a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option2b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option2c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option2d\" selected=\"selected\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select3\" id=\"select3\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option3a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option3b\" selected=\"selected\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option3c\" selected=\"selected\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option3d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select4\" id=\"select4\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option4a\" selected=\"selected\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option4b\" selected=\"selected\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option4c\" selected=\"selected\" value=\"3\">3</option>\n\t\t\t\t<option id=\"option4d\" selected=\"selected\" value=\"4\">4</option>\n\t\t\t\t<option id=\"option4e\" selected=\"selected\" value=\"5\">5</option>\n\t\t\t</select>\n\t\t\t<select name=\"select5\" id=\"select5\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option5a\" value=\"0\">0</option>\n\t\t\t\t<option id=\"option5b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option5c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option5d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t</form>\n\n\t\t<form id=\"v2\">\n\t\t\t<input id=\"v2-i1\" name=\"v2-i1\" class=\"required\" />\n\t\t\t<input id=\"v2-i2\" name=\"v2-i2\" class=\"required email\" />\n\t\t\t<input id=\"v2-i3\" name=\"v2-i3\" class=\"url\" />\n\t\t\t<input id=\"v2-i4\" name=\"v2-i4\" class=\"required\" minlength=\"2\" />\n\t\t\t<input id=\"v2-i5\" name=\"v2-i5\" class=\"required\" minlength=\"2\" maxlength=\"5\" customMethod1=\"123\" />\n\t\t\t<input id=\"v2-i6\" name=\"v2-i6\" class=\"required customMethod2 {maxlength: 5}\" minlength=\"2\" />\n\t\t\t<input id=\"v2-i7\" name=\"v2-i7\" />\n\t\t</form>\n\n\t\t<form id=\"checkables\">\n\t\t\t<input type=\"checkbox\" id=\"checkable1\" name=\"checkablesgroup\" class=\"required\" />\n\t\t\t<input type=\"checkbox\" id=\"checkable2\" name=\"checkablesgroup\" />\n\t\t\t<input type=\"checkbox\" id=\"checkable3\" name=\"checkablesgroup\" />\n\t\t</form>\n\n\n\t\t<form id=\"subformRequired\">\n\t\t\t<div class=\"billingAddressControl\">\n            \t<input type=\"checkbox\" id=\"bill_to_co\" name=\"bill_to_co\" class=\"toggleCheck\" checked=\"checked\" style=\"width: auto;\" tabindex=\"1\" />\n            \t<label for=\"bill_to_co\" style=\"cursor:pointer\">Same as Company Address</label>\n          \t</div>\n\t\t\t<div id=\"subform\">\n\t\t\t\t<input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_first_name\" size=\"20\" type=\"text\" tabindex=\"2\" value=\"\" />\n\t\t\t</div>\n\t\t\t<input id=\"co_name\" class=\"required\" maxlength=\"40\" name=\"co_name\" size=\"20\" type=\"text\" tabindex=\"1\" value=\"\" />\n\t\t</form>\n\n\t\t<form id=\"withTitle\">\n\t\t\t<input class=\"required\" name=\"hastitle\" type=\"text\" title=\"fromtitle\" />\n\t\t</form>\n\n\t\t<form id=\"ccform\" method=\"get\" action=\"\">\n\t\t\t<input id=\"cardnumber\" name=\"cardnumber\" />\n\t\t</form>\n\n\t\t<form id=\"productInfo\">\n\t\t\t<input class=\"productInfo\" name=\"partnumber\">\n\t\t\t<input class=\"productInfo\" name=\"description\">\n\t\t\t<input class=\"productInfo\" name=\"color\">\n\t\t\t<input class=\"productInfo\" type=\"checkbox\" name=\"discount\" />\n\t\t</form>\n\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/jquery.js",
    "content": "(function() {\n\nvar parts = document.location.search.slice( 1 ).split( \"&\" ),\n\tlength = parts.length,\n\ti = 0,\n\tcurrent,\n\tversion = \"1.3.2\",\n\tfile = \"http://code.jquery.com/jquery-git.js\";\n\nfor ( ; i < length; i++ ) {\n\tcurrent = parts[ i ].split( \"=\" );\n\tif ( current[ 0 ] === \"jquery\" ) {\n\t\tversion = current[ 1 ];\n\t\tbreak;\n\t}\n}\n\nif (version != \"git\") {\n\tfile = \"../lib/jquery-\" + version + \".js\";\n}\n\n\ndocument.write( \"<script src='\" + file + \"'></script>\" );\n\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/large.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.ajaxQueue.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$().ready(function() {\n\t$(\"#commentForm\").validate();\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; display: block; float: left; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n.focus { background-color: red; }\n</style>\n\n</head>\n<body>\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t<p>\n\t\t\t<label for=\"cname-x0\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname-x0\" name=\"name-x0\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t<p>\n\t\t\t<label for=\"cemail-x0\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail-x0\" name=\"email-x0\" class=\"{required:true,email:true}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x0\">URL (optional)</label>\n\t\t\t<input id=\"curl-x0\" name=\"url-x0\" class=\"{url:true}\" value=\"\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x0\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment-x0\" name=\"comment-x0\" class=\"{required:true}\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x1\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x1\" id=\"cname-x1\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x1\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x1\" id=\"cemail-x1\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x1\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x1\" id=\"curl-x1\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x1\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x1\" id=\"ccomment-x1\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x2\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x2\" id=\"cname-x2\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x2\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x2\" id=\"cemail-x2\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x2\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x2\" id=\"curl-x2\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x2\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x2\" id=\"ccomment-x2\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x3\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x3\" id=\"cname-x3\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x3\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x3\" id=\"cemail-x3\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x3\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x3\" id=\"curl-x3\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x3\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x3\" id=\"ccomment-x3\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x4\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x4\" id=\"cname-x4\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x4\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x4\" id=\"cemail-x4\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x4\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x4\" id=\"curl-x4\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x4\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x4\" id=\"ccomment-x4\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x5\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x5\" id=\"cname-x5\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x5\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x5\" id=\"cemail-x5\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x5\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x5\" id=\"curl-x5\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x5\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x5\" id=\"ccomment-x5\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x6\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x6\" id=\"cname-x6\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x6\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x6\" id=\"cemail-x6\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x6\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x6\" id=\"curl-x6\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x6\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x6\" id=\"ccomment-x6\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x7\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x7\" id=\"cname-x7\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x7\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x7\" id=\"cemail-x7\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x7\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x7\" id=\"curl-x7\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x7\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x7\" id=\"ccomment-x7\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x8\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x8\" id=\"cname-x8\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x8\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x8\" id=\"cemail-x8\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x8\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x8\" id=\"curl-x8\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x8\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x8\" id=\"ccomment-x8\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x9\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x9\" id=\"cname-x9\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x9\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x9\" id=\"cemail-x9\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x9\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x9\" id=\"curl-x9\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x9\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x9\" id=\"ccomment-x9\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/messages.js",
    "content": "module(\"messages\");\n\ntest(\"predefined message not overwritten by addMethod(a, b, undefined)\", function() {\n\tvar message = \"my custom message\";\n\t$.validator.messages.custom = message;\n\t$.validator.addMethod(\"custom\", function() {});\n\tdeepEqual(message, $.validator.messages.custom);\n\tdelete $.validator.messages.custom;\n\tdelete $.validator.methods.custom;\n});\n\ntest(\"group error messages\", function() {\n\t$.validator.addClassRules({\n\t\trequiredDateRange: {required:true, date:true, dateRange:true}\n\t});\n\t$.validator.addMethod(\"dateRange\", function() {\n\t\treturn new Date($(\"#fromDate\").val()) < new Date($(\"#toDate\").val());\n\t}, \"Please specify a correct date range.\");\n\tvar form = $(\"#dateRangeForm\");\n\tform.validate({\n\t\tgroups: {\n\t\t\tdateRange: \"fromDate toDate\"\n\t\t},\n\t\terrorPlacement: function(error) {\n\t\t\tform.find(\".errorContainer\").append(error);\n\t\t}\n\t});\n\tok( !form.valid() );\n\tequal( 1, form.find(\".errorContainer *\").length );\n\tequal( \"Please enter a valid date.\", form.find(\".errorContainer label.error\").text() );\n\n\t$(\"#fromDate\").val(\"12/03/2006\");\n\t$(\"#toDate\").val(\"12/01/2006\");\n\tok( !form.valid() );\n\tequal( \"Please specify a correct date range.\", form.find(\".errorContainer label.error\").text() );\n\n\t$(\"#toDate\").val(\"12/04/2006\");\n\tok( form.valid() );\n\tok( form.find(\".errorContainer label.error\").is(\":hidden\") );\n});\n\ntest(\"read messages from metadata\", function() {\n\tvar form = $(\"#testForm9\")\n\tform.validate();\n\tvar e = $(\"#testEmail9\")\n\te.valid();\n\tequal( form.find(\"label\").text(), \"required\" );\n\te.val(\"bla\").valid();\n\tequal( form.find(\"label\").text(), \"email\" );\n});\n\n\ntest(\"read messages from metadata, with meta option specified, but no metadata in there\", function() {\n\tvar form = $(\"#testForm1clean\")\n\tform.validate({\n\t\tmeta: \"validate\",\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\tok(!form.valid(), \"not valid\");\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/methods.js",
    "content": "(function($) {\n\nfunction methodTest( methodName ) {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods[methodName];\n\tvar element = $(\"#firstname\")[0];\n\treturn function(value, param) {\n\t\telement.value = value;\n\t\treturn method.call( v, value, element, param );\n\t};\n}\n\nmodule(\"methods\");\n\ntest(\"default messages\", function() {\n\tvar m = $.validator.methods;\n\t$.each(m, function(key) {\n\t\tok( jQuery.validator.messages[key], key + \" has a default message.\" );\n\t});\n});\n\ntest(\"digit\", function() {\n\tvar method = methodTest(\"digits\");\n\tok( method( \"123\" ), \"Valid digits\" );\n\tok(!method( \"123.000\" ), \"Invalid digits\" );\n\tok(!method( \"123.000,00\" ), \"Invalid digits\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid digits\" );\n\tok(!method( \"x123\" ), \"Invalid digits\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid digits\" );\n});\n\ntest(\"url\", function() {\n\tvar method = methodTest(\"url\");\n\tok( method( \"http://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"https://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"ftp://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"http://www.føtex.dk/\" ), \"Valid url, danish unicode characters\" );\n\tok( method( \"http://bösendorfer.de/\" ), \"Valid url, german unicode characters\" );\n\tok( method( \"http://192.168.8.5\" ), \"Valid IP Address\" )\n\tok(!method( \"http://192.168.8.\" ), \"Invalid IP Address\" )\n\tok(!method( \"http://bassistance\" ), \"Invalid url\" ); // valid\n\tok(!method( \"http://bassistance.\" ), \"Invalid url\" ); // valid\n\tok(!method( \"http://bassistance,de\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance;de\" ), \"Invalid url\" );\n\tok(!method( \"http://.bassistancede\" ), \"Invalid url\" );\n\tok(!method( \"bassistance.de\" ), \"Invalid url\" );\n});\n\ntest(\"url2 (tld optional)\", function() {\n\tvar method = methodTest(\"url2\");\n\tok( method( \"http://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"https://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"ftp://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"http://www.føtex.dk/\" ), \"Valid url, danish unicode characters\" );\n\tok( method( \"http://bösendorfer.de/\" ), \"Valid url, german unicode characters\" );\n\tok( method( \"http://192.168.8.5\" ), \"Valid IP Address\" )\n\tok(!method( \"http://192.168.8.\" ), \"Invalid IP Address\" )\n\tok( method( \"http://bassistance\" ), \"Invalid url\" );\n\tok( method( \"http://bassistance.\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance,de\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance;de\" ), \"Invalid url\" );\n\tok(!method( \"http://.bassistancede\" ), \"Invalid url\" );\n\tok(!method( \"bassistance.de\" ), \"Invalid url\" );\n});\n\ntest(\"email\", function() {\n\tvar method = methodTest(\"email\");\n\tok( method( \"name@domain.tld\" ), \"Valid email\" );\n\tok( method( \"name@domain.tl\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.com\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.travel\" ), \"Valid email\" );\n\tok( method( \"n@d.tld\" ), \"Valid email\" );\n\tok( method( \"ole@føtex.dk\"), \"Valid email\" );\n\tok( method( \"jörn@bassistance.de\"), \"Valid email\" );\n\tok( method( \"bla.blu@g.mail.com\"), \"Valid email\" );\n\tok( method( \"\\\"Scott Gonzalez\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"Scott González\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"name.\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name,\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name;\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok(!method( \"name\" ), \"Invalid email\" );\n\tok(!method( \"name@\" ), \"Invalid email\" );\n\tok(!method( \"name@domain\" ), \"Invalid email\" );\n\tok(!method( \"name.@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name,@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld.\" ), \"Invalid email\" );\n});\n\ntest(\"email2 (tld optional)\", function() {\n\tvar method = methodTest(\"email2\");\n\tok( method( \"name@domain.tld\" ), \"Valid email\" );\n\tok( method( \"name@domain.tl\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.com\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.travel\" ), \"Valid email\" );\n\tok( method( \"n@d.tld\" ), \"Valid email\" );\n\tok( method( \"ole@føtex.dk\"), \"Valid email\" );\n\tok( method( \"jörn@bassistance.de\"), \"Valid email\" );\n\tok( method( \"bla.blu@g.mail.com\"), \"Valid email\" );\n\tok( method( \"\\\"Scott Gonzalez\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"Scott González\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"name.\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name,\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name;\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok(!method( \"name\" ), \"Invalid email\" );\n\tok(!method( \"name@\" ), \"Invalid email\" );\n\tok( method( \"name@domain\" ), \"Invalid email\" );\n\tok(!method( \"name.@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name,@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld\" ), \"Invalid email\" );\n});\n\ntest(\"number\", function() {\n\tvar method = methodTest(\"number\");\n\tok( method( \"123\" ), \"Valid number\" );\n\tok( method( \"-123\" ), \"Valid number\" );\n\tok( method( \"123,000\" ), \"Valid number\" );\n\tok( method( \"-123,000\" ), \"Valid number\" );\n\tok( method( \"123,000.00\" ), \"Valid number\" );\n\tok( method( \"-123,000.00\" ), \"Valid number\" );\n\tok(!method( \"123.000,00\" ), \"Invalid number\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid number\" );\n\tok(!method( \"x123\" ), \"Invalid number\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid number\" );\n\n\tok( method( \"\" ), \"Blank is valid\" );\n\tok( method( \"123\" ), \"Valid decimal\" );\n\tok( method( \"123000\" ), \"Valid decimal\" );\n\tok( method( \"123000.12\" ), \"Valid decimal\" );\n\tok( method( \"-123000.12\" ), \"Valid decimal\" );\n\tok( method( \"123.000\" ), \"Valid decimal\" );\n\tok( method( \"123,000.00\" ), \"Valid decimal\" );\n\tok( method( \"-123,000.00\" ), \"Valid decimal\" );\n\tok( method( \".100\" ), \"Valid decimal\" );\n\tok(!method( \"1230,000.00\" ), \"Invalid decimal\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid decimal\" );\n\tok(!method( \"x123\" ), \"Invalid decimal\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid decimal\" );\n});\n\n/* disabled for now, need to figure out how to test localized methods\ntest(\"numberDE\", function() {\n\tvar method = methodTest(\"numberDE\");\n\tok( method( \"123\" ), \"Valid numberDE\" );\n\tok( method( \"-123\" ), \"Valid numberDE\" );\n\tok( method( \"123.000\" ), \"Valid numberDE\" );\n\tok( method( \"-123.000\" ), \"Valid numberDE\" );\n\tok( method( \"123.000,00\" ), \"Valid numberDE\" );\n\tok( method( \"-123.000,00\" ), \"Valid numberDE\" );\n\tok(!method( \"123,000.00\" ), \"Invalid numberDE\" );\n\tok(!method( \"123,0,0.0\" ), \"Invalid numberDE\" );\n\tok(!method( \"x123\" ), \"Invalid numberDE\" );\n\tok(!method( \"100,100.0.0\" ), \"Invalid numberDE\" );\n\n\tok( method( \"\" ), \"Blank is valid\" );\n\tok( method( \"123\" ), \"Valid decimalDE\" );\n\tok( method( \"123000\" ), \"Valid decimalDE\" );\n\tok( method( \"123000,12\" ), \"Valid decimalDE\" );\n\tok( method( \"-123000,12\" ), \"Valid decimalDE\" );\n\tok( method( \"123.000\" ), \"Valid decimalDE\" );\n\tok( method( \"123.000,00\" ), \"Valid decimalDE\" );\n\tok( method( \"-123.000,00\" ), \"Valid decimalDE\" )\n\tok(!method( \"123.0.0,0\" ), \"Invalid decimalDE\" );\n\tok(!method( \"x123\" ), \"Invalid decimalDE\" );\n\tok(!method( \"100,100.0.0\" ), \"Invalid decimalDE\" );\n});\n*/\n\ntest(\"date\", function() {\n\tvar method = methodTest(\"date\");\n\tok( method( \"06/06/1990\" ), \"Valid date\" );\n\tok( method( \"6/6/06\" ), \"Valid date\" );\n\tok(!method( \"1990x-06-06\" ), \"Invalid date\" );\n});\n\ntest(\"dateISO\", function() {\n\tvar method = methodTest(\"dateISO\");\n\tok( method( \"1990-06-06\" ), \"Valid date\" );\n\tok( method( \"1990/06/06\" ), \"Valid date\" );\n\tok( method( \"1990-6-6\" ), \"Valid date\" );\n\tok( method( \"1990/6/6\" ), \"Valid date\" );\n\tok(!method( \"1990-106-06\" ), \"Invalid date\" );\n\tok(!method( \"190-06-06\" ), \"Invalid date\" );\n});\n\n/* disabled for now, need to figure out how to test localized methods\ntest(\"dateDE\", function() {\n\tvar method = methodTest(\"dateDE\");\n\tok( method( \"03.06.1984\" ), \"Valid dateDE\" );\n\tok( method( \"3.6.84\" ), \"Valid dateDE\" );\n\tok(!method( \"6-6-06\" ), \"Invalid dateDE\" );\n\tok(!method( \"1990-06-06\" ), \"Invalid dateDE\" );\n\tok(!method( \"06/06/1990\" ), \"Invalid dateDE\" );\n\tok(!method( \"6/6/06\" ), \"Invalid dateDE\" );\n});\n*/\n\ntest(\"required\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.required,\n\t\te = $('#text1, #text1b, #hidden2, #select1, #select2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid text input\" );\n\tok(!method.call( v, e[1].value, e[2]), \"Invalid text input\" );\n\n\tok(!method.call( v, e[2].value, e[3]), \"Invalid select\" );\n\tok( method.call( v, e[3].value, e[4]), \"Valid select\" );\n\n\te = $('#area1, #area2, #pw1, #pw2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid textarea\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid textarea\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid password input\" );\n\tok(!method.call( v, e[3].value, e[3]), \"Invalid password input\" );\n\n\te = $('#radio1, #radio2, #radio3');\n\tok(!method.call( v, e[0].value, e[0]), \"Invalid radio\" );\n\tok( method.call( v, e[1].value, e[1]), \"Valid radio\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid radio\" );\n\n\te = $('#check1, #check2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid checkbox\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4');\n\tok(!method.call( v, e[0].value, e[0]), \"Invalid select\" );\n\tok( method.call( v, e[1].value, e[1]), \"Valid select\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid select\" );\n\tok( method.call( v, e[3].value, e[3]), \"Valid select\" );\n});\n\ntest(\"required with dependencies\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.required,\n\t\te = $('#hidden2, #select1, #area2, #radio1, #check2');\n\tok( method.call( v, e[0].value, e[0], \"asffsaa\"), \"Valid text input due to depencie not met\" );\n\tok(!method.call( v, e[0].value, e[0], \"input\"), \"Invalid text input\" );\n\tok( method.call( v, e[0].value, e[0], function() { return false; }), \"Valid text input due to depencie not met\" );\n\tok(!method.call( v, e[0].value, e[0], function() { return true; }), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], \"asfsfa\"), \"Valid select due to dependency not met\" );\n\tok(!method.call( v, e[1].value, e[1], \"input\"), \"Invalid select\" );\n\tok( method.call( v, e[2].value, e[2], \"asfsafsfa\"), \"Valid textarea due to dependency not met\" );\n\tok(!method.call( v, e[2].value, e[2], \"input\"), \"Invalid textarea\" );\n\tok( method.call( v, e[3].value, e[3], \"asfsafsfa\"), \"Valid radio due to dependency not met\" );\n\tok(!method.call( v, e[3].value, e[3], \"input\"), \"Invalid radio\" );\n\tok( method.call( v, e[4].value, e[4], \"asfsafsfa\"), \"Valid checkbox due to dependency not met\" );\n\tok(!method.call( v, e[4].value, e[4], \"input\"), \"Invalid checkbox\" );\n});\n\ntest(\"minlength\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.minlength,\n\t\tparam = 2,\n\t\te = $('#text1, #text1c, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n\tok( method.call( v, e[3].value, e[3], param), \"Valid text input\" );\n\n\te = $('#check1, #check2, #check3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Valid checkbox\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid checkbox\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4, #select5');\n\tok(method.call( v, e[0].value, e[0], param), \"Valid select \" + e[0].id );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid select \" + e[1].id );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid select \" + e[2].id );\n\tok( method.call( v, e[3].value, e[3], param), \"Valid select \" + e[3].id );\n\tok( method.call( v, e[4].value, e[4], param), \"Valid select \" + e[4].id );\n});\n\ntest(\"maxlength\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.maxlength,\n\t\tparam = 4,\n\t\te = $('#text1, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n\n\te = $('#check1, #check2, #check3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid checkbox\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Invalid checkbox\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid select\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid select\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid select\" );\n\tok(!method.call( v, e[3].value, e[3], param), \"Invalid select\" );\n});\n\ntest(\"rangelength\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.rangelength,\n\t\tparam = [2, 4],\n\t\te = $('#text1, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"min\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.min,\n\t\tparam = 8,\n\t\te = $('#value1, #value2, #value3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid text input\" );\n});\n\ntest(\"max\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.max,\n\t\tparam = 12,\n\t\te = $('#value1, #value2, #value3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"range\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.range,\n\t\tparam = [4,12],\n\t\te = $('#value1, #value2, #value3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"equalTo\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.equalTo,\n\t\te = $('#text1, #text2');\n\tok( method.call( v, \"Test\", e[0], \"#text1\"), \"Text input\" );\n\tok( method.call( v, \"T\", e[1], \"#text2\"), \"Another one\" );\n});\n\ntest(\"creditcard\", function() {\n\tvar method = methodTest(\"creditcard\");\n\tok( method( \"446-667-651\" ), \"Valid creditcard number\" );\n\tok( method( \"446 667 651\" ), \"Valid creditcard number\" );\n\tok( !method( \"asdf\" ), \"Invalid creditcard number\" );\n});\n\ntest(\"extension\", function() {\n\tvar method = methodTest(\"extension\");\n\tok( method( \"picture.gif\" ), \"Valid default accept type\" );\n\tok( method( \"picture.jpg\" ), \"Valid default accept type\" );\n\tok( method( \"picture.jpeg\" ), \"Valid default accept type\" );\n\tok( method( \"picture.png\" ), \"Valid default accept type\" );\n\tok( !method( \"picture.pgn\" ), \"Invalid default accept type\" );\n\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = function(value, param) {\n\t\t\treturn $.validator.methods.extension.call(v, value, $('#text1')[0], param);\n\t\t};\n\tok( method( \"picture.doc\", \"doc\"), \"Valid custom accept type\" );\n\tok( method( \"picture.pdf\", \"doc|pdf\"), \"Valid custom accept type\" );\n\tok( method( \"picture.pdf\", \"pdf|doc\"), \"Valid custom accept type\" );\n\tok( !method( \"picture.pdf\", \"doc\"), \"Invalid custom accept type\" );\n\tok( !method( \"picture.doc\", \"pdf\"), \"Invalid custom accept type\" );\n\n\tok( method( \"picture.pdf\", \"doc,pdf\"), \"Valid custom accept type, comma seperated\" );\n\tok( method( \"picture.pdf\", \"pdf,doc\"), \"Valid custom accept type, comma seperated\" );\n\tok( !method( \"picture.pdf\", \"gop,top\"), \"Invalid custom accept type, comma seperated\" );\n});\n\ntest(\"remote\", function() {\n\texpect(7);\n\tstop();\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"users.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"Please\",\n\t\t\t\tremote: jQuery.validator.format(\"{0} in use\")\n\t\t\t}\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\tok( false, \"submitHandler may never be called when validating only elements\");\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\t$(document).unbind(\"ajaxStop\");\n\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\tequal( \"Peter in use\", v.errorList[0].message );\n\n\t\t$(document).ajaxStop(function() {\n\t\t\t$(document).unbind(\"ajaxStop\");\n\t\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\t\tequal( \"Peter2 in use\", v.errorList[0].message );\n\t\t\tstart();\n\t\t});\n\t\te.val(\"Peter2\");\n\t\tstrictEqual( v.element(e), true, \"new value, new request; dependency-mismatch considered as valid though\" );\n\t});\n\tstrictEqual( v.element(e), false, \"invalid element, nothing entered yet\" );\n\te.val(\"Peter\");\n\tstrictEqual( v.element(e), true, \"still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though\" );\n});\n\ntest(\"remote, customized ajax options\", function() {\n\texpect(2);\n\tstop();\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"users.php\",\n\t\t\t\t\ttype: \"POST\",\n\t\t\t\t\tbeforeSend: function(request, settings) {\n\t\t\t\t\t\tdeepEqual(settings.type, \"POST\");\n\t\t\t\t\t\tdeepEqual(settings.data, \"username=asdf&email=email.com\");\n\t\t\t\t\t},\n\t\t\t\t\tdata: {\n\t\t\t\t\t\temail: function() {\n\t\t\t\t\t\t\treturn \"email.com\";\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tstart();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t$(\"#username\").val(\"asdf\");\n\t$(\"#userForm\").valid();\n});\n\n\ntest(\"remote extensions\", function() {\n\texpect(5);\n\tstop();\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"users2.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"Please\"\n\t\t\t}\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\tok( false, \"submitHandler may never be called when validating only elements\");\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\t$(document).unbind(\"ajaxStop\");\n\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\tequal( v.errorList[0].message, \"asdf is already taken, please try something else\" );\n\t\tv.element(e);\n\t\tequal( v.errorList[0].message, \"asdf is already taken, please try something else\", \"message doesn't change on revalidation\" );\n\t\tstart();\n\t});\n\tstrictEqual( v.element(e), false, \"invalid element, nothing entered yet\" );\n\te.val(\"asdf\");\n\tstrictEqual( v.element(e), true, \"still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though\" );\n});\n\nasyncTest(\"remote radio correct value sent\", function() {\n\texpect(1);\n\tvar e = $(\"#testForm10Radio2\");\n\te.attr('checked', 'checked');\n\tvar v = $(\"#testForm10\").validate({\n\t\trules: {\n\t\t\ttestForm10Radio: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"echo.php\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\tequal( data['testForm10Radio'], '2', ' correct radio value sent' );\n\t\t\t\t\t\tstart();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t});\n\n\tv.element(e);\n});\n\nasyncTest(\"remote reset clear old value\", function() {\n\texpect(1);\n\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"echo.php\",\n\t\t\t\t\tdataFilter: function(data) {\n\t\t\t\t\t\tvar json = JSON.parse(data);\n\t\t\t\t\t\tif(json.username == 'asdf') {\n\t\t\t\t\t\t\treturn \"\\\"asdf is already taken\\\"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \"\\\"\" + true + \"\\\"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\tvar waitTimeout;\n\n\t\t$(document).unbind(\"ajaxStop\");\n\n\n\t\t$(document).ajaxStop(function() {\n\t\t\tclearTimeout(waitTimeout);\n\t\t\tok( true, \"Remote request sent to server\" );\n\t\t\tstart();\n\t\t});\n\n\n\t\tv.resetForm();\n\t\te.val(\"asdf\");\n\t\twaitTimeout = setTimeout(function() {\n\t\t\tok( false, \"Remote server did not get request\");\n\t\t\tstart();\n\t\t}, 200);\n\t\tv.element(e);\n\t});\n\te.val(\"asdf\");\n\tv.element(e);\n});\n\nmodule(\"additional methods\");\n\ntest(\"phone (us)\", function() {\n\tvar method = methodTest(\"phoneUS\");\n\tok( method( \"1(212)-999-2345\" ), \"Valid us phone number\" );\n\tok( method( \"212 999 2344\" ), \"Valid us phone number\" );\n\tok( method( \"212-999-0983\" ), \"Valid us phone number\" );\n\tok(!method( \"111-123-5434\" ), \"Invalid us phone number\" );\n\tok(!method( \"212 123 4567\" ), \"Invalid us phone number\" );\n});\n\ntest(\"mobileUK\", function() {\n\tvar method = methodTest(\"mobileUK\");\n\tok( method( \"07734234323\" ), \"Valid UK Mobile Number\" );\n\tok( method( \"+447734234323\" ), \"Valid UK Mobile Number\" );\n\tok( !method( \"07034234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"0753423432\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"07604234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"077342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"044342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+44753423432\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+447604234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+4477342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+4444342343234\" ), \"Invalid UK Mobile Number\" );\n});\n\ntest(\"dateITA\", function() {\n\tvar method = methodTest(\"dateITA\");\n\tok( method( \"01/01/1900\" ), \"Valid date ITA\" );\n\tok(!method( \"01/13/1990\" ), \"Invalid date ITA\" );\n\tok(!method( \"01.01.1900\" ), \"Invalid date ITA\" );\n});\n\ntest(\"time\", function() {\n\tvar method = methodTest(\"time\");\n\tok( method(\"00:00\"), \"Valid time, lower bound\" );\n\tok( method(\"23:59\"), \"Valid time, upper bound\" );\n\tok( !method(\"12\"), \"Invalid time\" );\n\tok( !method(\"00:60\"), \"Invalid time\" );\n\tok( !method(\"24:60\"), \"Invalid time\" );\n\tok( !method(\"24:00\"), \"Invalid time\" );\n\tok( !method(\"29:59\"), \"Invalid time\" );\n\tok( !method(\"30:00\"), \"Invalid time\" );\n});\n\ntest(\"time12h\", function() {\n\tvar method = methodTest(\"time12h\");\n\tok( method(\"12:00 AM\"), \"Valid time, lower bound, am\" );\n\tok( method(\"11:59 AM\"), \"Valid time, upper bound, am\" );\n\tok( method(\"12:00 PM\"), \"Valid time, lower bound, pm\" );\n\tok( method(\"11:59 PM\"), \"Valid time, upper bound, pm\" );\n\tok( method(\"11:59 am\"), \"Valid time, also accept lowercase\" );\n\tok( method(\"11:59 pm\"), \"Valid time, also accept lowercase\" );\n\tok( !method(\"12:00\"), \"Invalid time\" );\n\tok( !method(\"12:61 am\"), \"Invalid time\" );\n\tok( !method(\"13:00 am\"), \"Invalid time\" );\n});\n\ntest(\"minWords\", function() {\n\tvar method = methodTest(\"minWords\");\n\tok( method(\"hello worlds\", 2), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", 2), \"html, valid\" );\n\tok( !method(\"hello\", 2), \"plain text, invalid\" );\n\tok( !method(\"<b>world</b>\", 2), \"html, invalid\" );\n\tok( !method(\"world <br/>\", 2), \"html, invalid\" );\n});\n\ntest(\"maxWords\", function() {\n\tvar method = methodTest(\"maxWords\");\n\tok( method(\"hello\", 2), \"plain text, valid\" );\n\tok( method(\"<b>world</b>\", 2), \"html, valid\" );\n\tok( method(\"world <br/>\", 2), \"html, valid\" );\n\tok( method(\"hello worlds\", 2), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", 2), \"html, valid\" );\n\tok( !method(\"hello 123 world\", 2), \"plain text, invalid\" );\n\tok( !method(\"<b>hello</b> 123 world\", 2), \"html, invalid\" );\n});\n\ntest(\"rangeWords\", function() {\n\tvar method = methodTest(\"rangeWords\");\n\tok( method(\"hello\", [0, 2]), \"plain text, valid\" );\n\tok( method(\"hello worlds\", [0, 2]), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", [0, 2]), \"html, valid\" );\n\tok( !method(\"hello worlds what is up\", [0, 2]), \"plain text, invalid\" );\n\tok( !method(\"<b>Hello</b> <b>world</b> <b>hello</b>\", [0, 2]), \"html, invalid\" );\n});\n\ntest(\"pattern\", function() {\n\tvar method = methodTest(\"pattern\");\n\tok( method( \"AR1004\", \"AR\\\\d{4}\" ), \"Correct format for the given RegExp\" );\n\tok( method( \"AR1004\", /^AR\\d{4}$/ ), \"Correct format for the given RegExp\" );\n\tok( !method( \"BR1004\", /^AR\\d{4}$/ ), \"Invalid format for the given RegExp\" );\n});\n\nfunction testCardTypeByNumber(number, cardname, expected) {\n\t$(\"#cardnumber\").val(number);\n\tvar actual = $(\"#ccform\").valid();\n\tequal(actual, expected, $.format(\"Expect card number {0} to validate to {1}, actually validated to \", number, expected));\n}\n\ntest('creditcardtypes, all', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tall: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", true)\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", true)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", true)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", true);\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1110\", \"VISA\", false)\n\ttestCardTypeByNumber(\"5432-1111-1111-1111\", \"MasterCard\", false)\n\ttestCardTypeByNumber(\"6611-6611-6611-6611\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3777-7777-7777-7777\", \"AMEX\", false)\n\n});\n\ntest('creditcardtypes, visa', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tvisa: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", true)\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", false)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", false);\n});\n\ntest('creditcardtypes, mastercard', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tmastercard: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", true)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", false);\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", false);\n});\n\nfunction fillFormWithValuesAndExpect(formSelector, inputValues, expected) {\n\tfor (i=0; i < inputValues.length; i++) {\n\t\t$(formSelector + ' input:eq(' + i + ')').val(inputValues[i]);\n\t}\n\tvar actual = $(formSelector).valid();\n\tequal(actual, expected, $.format(\"Filled inputs of form '{0}' with {1} values ({2})\", formSelector, inputValues.length, inputValues.toString()));\n\n}\n\ntest('require_from_group', function() {\n\t$(\"#productInfo\").validate({\n\t\trules: {\n\t\t\tpartnumber:  {require_from_group: [2,\".productInfo\"]},\n\t\t\tdescription: {require_from_group: [2,\".productInfo\"]},\n\t\t\tdiscount: {require_from_group: [2,\".productInfo\"]}\n\t\t}\n\t});\n\n\tfillFormWithValuesAndExpect('#productInfo', [], false);\n\tfillFormWithValuesAndExpect('#productInfo', [123], false);\n\t$('#productInfo input[type=\"checkbox\"]').attr('checked', 'checked');\n\tfillFormWithValuesAndExpect('#productInfo', [123], true);\n\t$('#productInfo input[type=\"checkbox\"]').removeAttr('checked');\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n});\n\ntest('skip_or_fill_minimum', function() {\n\t$(\"#productInfo\").validate({\n\t\trules: {\n\t\t\tpartnumber:  {skip_or_fill_minimum: [2,\".productInfo\"]},\n\t\t\tdescription: {skip_or_fill_minimum: [2,\".productInfo\"]},\n\t\t\tcolor:       {skip_or_fill_minimum: [2,\".productInfo\"]}\n\t\t}\n\t});\n\n\tfillFormWithValuesAndExpect('#productInfo', [], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123], false);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n});\n\ntest(\"zipcodeUS\", function() {\n\tvar method = methodTest(\"zipcodeUS\");\n\tok( method( \"12345\" ), \"Valid zip\" );\n\tok( method( \"12345-2345\" ), \"Valid zip\" );\n\tok(!method( \"1\" ), \"Invalid zip\" );\n\tok(!method( \"1234\" ), \"Invalid zip\" );\n\tok(!method( \"123-23\" ), \"Invalid zip\" );\n\tok(!method( \"12345-43\" ), \"Invalid zip\" );\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.css",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n/** Font Family and Sizes */\n\n#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {\n\tfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n}\n\n#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }\n#qunit-tests { font-size: smaller; }\n\n\n/** Resets */\n\n#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n\n/** Header */\n\n#qunit-header {\n\tpadding: 0.5em 0 0.5em 1em;\n\n\tcolor: #8699a4;\n\tbackground-color: #0d3349;\n\n\tfont-size: 1.5em;\n\tline-height: 1em;\n\tfont-weight: normal;\n\n\tborder-radius: 15px 15px 0 0;\n\t-moz-border-radius: 15px 15px 0 0;\n\t-webkit-border-top-right-radius: 15px;\n\t-webkit-border-top-left-radius: 15px;\n}\n\n#qunit-header a {\n\ttext-decoration: none;\n\tcolor: #c2ccd1;\n}\n\n#qunit-header a:hover,\n#qunit-header a:focus {\n\tcolor: #fff;\n}\n\n#qunit-header label {\n\tdisplay: inline-block;\n}\n\n#qunit-banner {\n\theight: 5px;\n}\n\n#qunit-testrunner-toolbar {\n\tpadding: 0.5em 0 0.5em 2em;\n\tcolor: #5E740B;\n\tbackground-color: #eee;\n}\n\n#qunit-userAgent {\n\tpadding: 0.5em 0 0.5em 2.5em;\n\tbackground-color: #2b81af;\n\tcolor: #fff;\n\ttext-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;\n}\n\n\n/** Tests: Pass/Fail */\n\n#qunit-tests {\n\tlist-style-position: inside;\n}\n\n#qunit-tests li {\n\tpadding: 0.4em 0.5em 0.4em 2.5em;\n\tborder-bottom: 1px solid #fff;\n\tlist-style-position: inside;\n}\n\n#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {\n\tdisplay: none;\n}\n\n#qunit-tests li strong {\n\tcursor: pointer;\n}\n\n#qunit-tests li a {\n\tpadding: 0.5em;\n\tcolor: #c2ccd1;\n\ttext-decoration: none;\n}\n#qunit-tests li a:hover,\n#qunit-tests li a:focus {\n\tcolor: #000;\n}\n\n#qunit-tests ol {\n\tmargin-top: 0.5em;\n\tpadding: 0.5em;\n\n\tbackground-color: #fff;\n\n\tborder-radius: 15px;\n\t-moz-border-radius: 15px;\n\t-webkit-border-radius: 15px;\n\n\tbox-shadow: inset 0px 2px 13px #999;\n\t-moz-box-shadow: inset 0px 2px 13px #999;\n\t-webkit-box-shadow: inset 0px 2px 13px #999;\n}\n\n#qunit-tests table {\n\tborder-collapse: collapse;\n\tmargin-top: .2em;\n}\n\n#qunit-tests th {\n\ttext-align: right;\n\tvertical-align: top;\n\tpadding: 0 .5em 0 0;\n}\n\n#qunit-tests td {\n\tvertical-align: top;\n}\n\n#qunit-tests pre {\n\tmargin: 0;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n#qunit-tests del {\n\tbackground-color: #e0f2be;\n\tcolor: #374e0c;\n\ttext-decoration: none;\n}\n\n#qunit-tests ins {\n\tbackground-color: #ffcaca;\n\tcolor: #500;\n\ttext-decoration: none;\n}\n\n/*** Test Counts */\n\n#qunit-tests b.counts                       { color: black; }\n#qunit-tests b.passed                       { color: #5E740B; }\n#qunit-tests b.failed                       { color: #710909; }\n\n#qunit-tests li li {\n\tmargin: 0.5em;\n\tpadding: 0.4em 0.5em 0.4em 0.5em;\n\tbackground-color: #fff;\n\tborder-bottom: none;\n\tlist-style-position: inside;\n}\n\n/*** Passing Styles */\n\n#qunit-tests li li.pass {\n\tcolor: #5E740B;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #C6E746;\n}\n\n#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }\n#qunit-tests .pass .test-name               { color: #366097; }\n\n#qunit-tests .pass .test-actual,\n#qunit-tests .pass .test-expected           { color: #999999; }\n\n#qunit-banner.qunit-pass                    { background-color: #C6E746; }\n\n/*** Failing Styles */\n\n#qunit-tests li li.fail {\n\tcolor: #710909;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #EE5757;\n\twhite-space: pre;\n}\n\n#qunit-tests > li:last-child {\n\tborder-radius: 0 0 15px 15px;\n\t-moz-border-radius: 0 0 15px 15px;\n\t-webkit-border-bottom-right-radius: 15px;\n\t-webkit-border-bottom-left-radius: 15px;\n}\n\n#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }\n#qunit-tests .fail .test-name,\n#qunit-tests .fail .module-name             { color: #000000; }\n\n#qunit-tests .fail .test-actual             { color: #EE5757; }\n#qunit-tests .fail .test-expected           { color: green;   }\n\n#qunit-banner.qunit-fail                    { background-color: #EE5757; }\n\n\n/** Result */\n\n#qunit-testresult {\n\tpadding: 0.5em 0.5em 0.5em 2.5em;\n\n\tcolor: #2b81af;\n\tbackground-color: #D2E0E6;\n\n\tborder-bottom: 1px solid white;\n}\n#qunit-testresult .module-name {\n\tfont-weight: bold;\n}\n\n/** Fixture */\n\n#qunit-fixture {\n\tposition: absolute;\n\ttop: -10000px;\n\tleft: -10000px;\n\twidth: 1000px;\n\theight: 1000px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.js",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n(function(window) {\n\nvar defined = {\n\tsetTimeout: typeof window.setTimeout !== \"undefined\",\n\tsessionStorage: (function() {\n\t\tvar x = \"qunit-test-string\";\n\t\ttry {\n\t\t\tsessionStorage.setItem(x, x);\n\t\t\tsessionStorage.removeItem(x);\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}())\n};\n\nvar\ttestId = 0,\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty;\n\nvar Test = function(name, testName, expected, async, callback) {\n\tthis.name = name;\n\tthis.testName = testName;\n\tthis.expected = expected;\n\tthis.async = async;\n\tthis.callback = callback;\n\tthis.assertions = [];\n};\nTest.prototype = {\n\tinit: function() {\n\t\tvar tests = id(\"qunit-tests\");\n\t\tif (tests) {\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\t\tb.innerHTML = \"Running \" + this.name;\n\t\t\tvar li = document.createElement(\"li\");\n\t\t\t\tli.appendChild( b );\n\t\t\t\tli.className = \"running\";\n\t\t\t\tli.id = this.id = \"test-output\" + testId++;\n\t\t\ttests.appendChild( li );\n\t\t}\n\t},\n\tsetup: function() {\n\t\tif (this.module != config.previousModule) {\n\t\t\tif ( config.previousModule ) {\n\t\t\t\trunLoggingCallbacks('moduleDone', QUnit, {\n\t\t\t\t\tname: config.previousModule,\n\t\t\t\t\tfailed: config.moduleStats.bad,\n\t\t\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\t\t\ttotal: config.moduleStats.all\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconfig.previousModule = this.module;\n\t\t\tconfig.moduleStats = { all: 0, bad: 0 };\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t} else if (config.autorun) {\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t}\n\n\t\tconfig.current = this;\n\t\tthis.testEnvironment = extend({\n\t\t\tsetup: function() {},\n\t\t\tteardown: function() {}\n\t\t}, this.moduleTestEnvironment);\n\n\t\trunLoggingCallbacks( 'testStart', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module\n\t\t});\n\n\t\t// allow utility functions to access the current test environment\n\t\t// TODO why??\n\t\tQUnit.current_testEnvironment = this.testEnvironment;\n\n\t\tif ( !config.pollution ) {\n\t\t\tsaveGlobal();\n\t\t}\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Setup failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t}\n\t},\n\trun: function() {\n\t\tconfig.current = this;\n\n\t\tvar running = id(\"qunit-testresult\");\n\n\t\tif ( running ) {\n\t\t\trunning.innerHTML = \"Running: <br/>\" + this.name;\n\t\t}\n\n\t\tif ( this.async ) {\n\t\t\tQUnit.stop();\n\t\t}\n\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Died on test #\" + (this.assertions.length + 1) + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t// else next test will carry the responsibility\n\t\t\tsaveGlobal();\n\n\t\t\t// Restart the tests if they're blocking\n\t\t\tif ( config.blocking ) {\n\t\t\t\tQUnit.start();\n\t\t\t}\n\t\t}\n\t},\n\tteardown: function() {\n\t\tconfig.current = this;\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\treturn;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\t} catch(e) {\n\t\t\t\tQUnit.pushFailure( \"Teardown failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t}\n\t\t}\n\t\tcheckPollution();\n\t},\n\tfinish: function() {\n\t\tconfig.current = this;\n\t\tif ( this.expected != null && this.expected != this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected \" + this.expected + \" assertions, but \" + this.assertions.length + \" were run\" );\n\t\t} else if ( this.expected == null && !this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.\" );\n\t\t}\n\n\t\tvar good = 0, bad = 0,\n\t\t\tli, i,\n\t\t\ttests = id(\"qunit-tests\");\n\n\t\tconfig.stats.all += this.assertions.length;\n\t\tconfig.moduleStats.all += this.assertions.length;\n\n\t\tif ( tests ) {\n\t\t\tvar ol = document.createElement(\"ol\");\n\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tvar assertion = this.assertions[i];\n\n\t\t\t\tli = document.createElement(\"li\");\n\t\t\t\tli.className = assertion.result ? \"pass\" : \"fail\";\n\t\t\t\tli.innerHTML = assertion.message || (assertion.result ? \"okay\" : \"failed\");\n\t\t\t\tol.appendChild( li );\n\n\t\t\t\tif ( assertion.result ) {\n\t\t\t\t\tgood++;\n\t\t\t\t} else {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// store result when possible\n\t\t\tif ( QUnit.config.reorder && defined.sessionStorage ) {\n\t\t\t\tif (bad) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-test-\" + this.module + \"-\" + this.testName, bad);\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (bad === 0) {\n\t\t\t\tol.style.display = \"none\";\n\t\t\t}\n\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\tb.innerHTML = this.name + \" <b class='counts'>(<b class='failed'>\" + bad + \"</b>, <b class='passed'>\" + good + \"</b>, \" + this.assertions.length + \")</b>\";\n\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\ta.innerHTML = \"Rerun\";\n\t\t\ta.href = QUnit.url({ filter: getText([b]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\n\t\t\taddEvent(b, \"click\", function() {\n\t\t\t\tvar next = b.nextSibling.nextSibling,\n\t\t\t\t\tdisplay = next.style.display;\n\t\t\t\tnext.style.display = display === \"none\" ? \"block\" : \"none\";\n\t\t\t});\n\n\t\t\taddEvent(b, \"dblclick\", function(e) {\n\t\t\t\tvar target = e && e.target ? e.target : window.event.srcElement;\n\t\t\t\tif ( target.nodeName.toLowerCase() == \"span\" || target.nodeName.toLowerCase() == \"b\" ) {\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\t\t\t\tif ( window.location && target.nodeName.toLowerCase() === \"strong\" ) {\n\t\t\t\t\twindow.location = QUnit.url({ filter: getText([target]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tli = id(this.id);\n\t\t\tli.className = bad ? \"fail\" : \"pass\";\n\t\t\tli.removeChild( li.firstChild );\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild( a );\n\t\t\tli.appendChild( ol );\n\n\t\t} else {\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tif ( !this.assertions[i].result ) {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tQUnit.reset();\n\n\t\trunLoggingCallbacks( 'testDone', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module,\n\t\t\tfailed: bad,\n\t\t\tpassed: this.assertions.length - bad,\n\t\t\ttotal: this.assertions.length\n\t\t} );\n\t},\n\n\tqueue: function() {\n\t\tvar test = this;\n\t\tsynchronize(function() {\n\t\t\ttest.init();\n\t\t});\n\t\tfunction run() {\n\t\t\t// each of these can by async\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.setup();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.run();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.teardown();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.finish();\n\t\t\t});\n\t\t}\n\t\t// defer when previous test run passed, if storage is available\n\t\tvar bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\tif (bad) {\n\t\t\trun();\n\t\t} else {\n\t\t\tsynchronize(run, true);\n\t\t}\n\t}\n\n};\n\nvar QUnit = {\n\n\t// call on start of module test to prepend name to all tests\n\tmodule: function(name, testEnvironment) {\n\t\tconfig.currentModule = name;\n\t\tconfig.currentModuleTestEnviroment = testEnvironment;\n\t},\n\n\tasyncTest: function(testName, expected, callback) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tQUnit.test(testName, expected, callback, true);\n\t},\n\n\ttest: function(testName, expected, callback, async) {\n\t\tvar name = '<span class=\"test-name\">' + escapeInnerText(testName) + '</span>';\n\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tif ( config.currentModule ) {\n\t\t\tname = '<span class=\"module-name\">' + config.currentModule + \"</span>: \" + name;\n\t\t}\n\n\t\tif ( !validTest(config.currentModule + \": \" + testName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar test = new Test(name, testName, expected, async, callback);\n\t\ttest.module = config.currentModule;\n\t\ttest.moduleTestEnvironment = config.currentModuleTestEnviroment;\n\t\ttest.queue();\n\t},\n\n\t// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.\n\texpect: function(asserts) {\n\t\tconfig.current.expected = asserts;\n\t},\n\n\t// Asserts true.\n\t// @example ok( \"asdfasdf\".length > 5, \"There must be at least 5 chars\" );\n\tok: function(result, msg) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"ok() assertion outside test context, was \" + sourceFromStacktrace(2));\n\t\t}\n\t\tresult = !!result;\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t};\n\t\tmsg = escapeInnerText(msg || (result ? \"okay\" : \"failed\"));\n\t\tif ( !result ) {\n\t\t\tvar source = sourceFromStacktrace(2);\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\tmsg += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t\t}\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t});\n\t},\n\n\t// Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values.\n\t// @example equal( format(\"Received {0} bytes.\", 2), \"Received 2 bytes.\" );\n\tequal: function(actual, expected, message) {\n\t\tQUnit.push(expected == actual, actual, expected, message);\n\t},\n\n\tnotEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected != actual, actual, expected, message);\n\t},\n\n\tdeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tnotDeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tstrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected === actual, actual, expected, message);\n\t},\n\n\tnotStrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected !== actual, actual, expected, message);\n\t},\n\n\traises: function(block, expected, message) {\n\t\tvar actual, ok = false;\n\n\t\tif (typeof expected === 'string') {\n\t\t\tmessage = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\ttry {\n\t\t\tblock.call(config.current.testEnvironment);\n\t\t} catch (e) {\n\t\t\tactual = e;\n\t\t}\n\n\t\tif (actual) {\n\t\t\t// we don't want to validate thrown error\n\t\t\tif (!expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a regexp\n\t\t\t} else if (QUnit.objectType(expected) === \"regexp\") {\n\t\t\t\tok = expected.test(actual);\n\t\t\t// expected is a constructor\n\t\t\t} else if (actual instanceof expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a validation function which returns true is validation passed\n\t\t\t} else if (expected.call({}, actual) === true) {\n\t\t\t\tok = true;\n\t\t\t}\n\t\t}\n\n\t\tQUnit.ok(ok, message);\n\t},\n\n\tstart: function(count) {\n\t\tconfig.semaphore -= count || 1;\n\t\tif (config.semaphore > 0) {\n\t\t\t// don't start until equal number of stop-calls\n\t\t\treturn;\n\t\t}\n\t\tif (config.semaphore < 0) {\n\t\t\t// ignore if start is called more often then stop\n\t\t\tconfig.semaphore = 0;\n\t\t}\n\t\t// A slight delay, to avoid any current callbacks\n\t\tif ( defined.setTimeout ) {\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tif (config.semaphore > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( config.timeout ) {\n\t\t\t\t\tclearTimeout(config.timeout);\n\t\t\t\t}\n\n\t\t\t\tconfig.blocking = false;\n\t\t\t\tprocess(true);\n\t\t\t}, 13);\n\t\t} else {\n\t\t\tconfig.blocking = false;\n\t\t\tprocess(true);\n\t\t}\n\t},\n\n\tstop: function(count) {\n\t\tconfig.semaphore += count || 1;\n\t\tconfig.blocking = true;\n\n\t\tif ( config.testTimeout && defined.setTimeout ) {\n\t\t\tclearTimeout(config.timeout);\n\t\t\tconfig.timeout = window.setTimeout(function() {\n\t\t\t\tQUnit.ok( false, \"Test timed out\" );\n\t\t\t\tconfig.semaphore = 1;\n\t\t\t\tQUnit.start();\n\t\t\t}, config.testTimeout);\n\t\t}\n\t}\n};\n\n//We want access to the constructor's prototype\n(function() {\n\tfunction F(){}\n\tF.prototype = QUnit;\n\tQUnit = new F();\n\t//Make F QUnit's constructor so that we can add to the prototype later\n\tQUnit.constructor = F;\n}());\n\n// deprecated; still export them to window to provide clear error messages\n// next step: remove entirely\nQUnit.equals = function() {\n\tQUnit.push(false, false, false, \"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead\");\n};\nQUnit.same = function() {\n\tQUnit.push(false, false, false, \"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead\");\n};\n\n// Maintain internal state\nvar config = {\n\t// The queue of tests to run\n\tqueue: [],\n\n\t// block until document ready\n\tblocking: true,\n\n\t// when enabled, show only failing tests\n\t// gets persisted through sessionStorage and can be changed in UI via checkbox\n\thidepassed: false,\n\n\t// by default, run previously failed tests first\n\t// very useful in combination with \"Hide passed tests\" checked\n\treorder: true,\n\n\t// by default, modify document.title when suite is done\n\taltertitle: true,\n\n\turlConfig: ['noglobals', 'notrycatch'],\n\n\t//logging callback queues\n\tbegin: [],\n\tdone: [],\n\tlog: [],\n\ttestStart: [],\n\ttestDone: [],\n\tmoduleStart: [],\n\tmoduleDone: []\n};\n\n// Load paramaters\n(function() {\n\tvar location = window.location || { search: \"\", protocol: \"file:\" },\n\t\tparams = location.search.slice( 1 ).split( \"&\" ),\n\t\tlength = params.length,\n\t\turlParams = {},\n\t\tcurrent;\n\n\tif ( params[ 0 ] ) {\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tcurrent = params[ i ].split( \"=\" );\n\t\t\tcurrent[ 0 ] = decodeURIComponent( current[ 0 ] );\n\t\t\t// allow just a key to turn on a flag, e.g., test.html?noglobals\n\t\t\tcurrent[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;\n\t\t\turlParams[ current[ 0 ] ] = current[ 1 ];\n\t\t}\n\t}\n\n\tQUnit.urlParams = urlParams;\n\tconfig.filter = urlParams.filter;\n\n\t// Figure out if we're running the tests from a server or not\n\tQUnit.isLocal = location.protocol === 'file:';\n}());\n\n// Expose the API as global variables, unless an 'exports'\n// object exists, in that case we assume we're in CommonJS - export everything at the end\nif ( typeof exports === \"undefined\" || typeof require === \"undefined\" ) {\n\textend(window, QUnit);\n\twindow.QUnit = QUnit;\n}\n\n// define these after exposing globals to keep them in these QUnit namespace only\nextend(QUnit, {\n\tconfig: config,\n\n\t// Initialize the configuration options\n\tinit: function() {\n\t\textend(config, {\n\t\t\tstats: { all: 0, bad: 0 },\n\t\t\tmoduleStats: { all: 0, bad: 0 },\n\t\t\tstarted: +new Date(),\n\t\t\tupdateRate: 1000,\n\t\t\tblocking: false,\n\t\t\tautostart: true,\n\t\t\tautorun: false,\n\t\t\tfilter: \"\",\n\t\t\tqueue: [],\n\t\t\tsemaphore: 0\n\t\t});\n\n\t\tvar qunit = id( \"qunit\" );\n\t\tif ( qunit ) {\n\t\t\tqunit.innerHTML =\n\t\t\t\t'<h1 id=\"qunit-header\">' + escapeInnerText( document.title ) + '</h1>' +\n\t\t\t\t'<h2 id=\"qunit-banner\"></h2>' +\n\t\t\t\t'<div id=\"qunit-testrunner-toolbar\"></div>' +\n\t\t\t\t'<h2 id=\"qunit-userAgent\"></h2>' +\n\t\t\t\t'<ol id=\"qunit-tests\"></ol>';\n\t\t}\n\n\t\tvar tests = id( \"qunit-tests\" ),\n\t\t\tbanner = id( \"qunit-banner\" ),\n\t\t\tresult = id( \"qunit-testresult\" );\n\n\t\tif ( tests ) {\n\t\t\ttests.innerHTML = \"\";\n\t\t}\n\n\t\tif ( banner ) {\n\t\t\tbanner.className = \"\";\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult.parentNode.removeChild( result );\n\t\t}\n\n\t\tif ( tests ) {\n\t\t\tresult = document.createElement( \"p\" );\n\t\t\tresult.id = \"qunit-testresult\";\n\t\t\tresult.className = \"result\";\n\t\t\ttests.parentNode.insertBefore( result, tests );\n\t\t\tresult.innerHTML = 'Running...<br/>&nbsp;';\n\t\t}\n\t},\n\n\t// Resets the test setup. Useful for tests that modify the DOM.\n\t// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.\n\treset: function() {\n\t\tif ( window.jQuery ) {\n\t\t\tjQuery( \"#qunit-fixture\" ).html( config.fixture );\n\t\t} else {\n\t\t\tvar main = id( 'qunit-fixture' );\n\t\t\tif ( main ) {\n\t\t\t\tmain.innerHTML = config.fixture;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Trigger an event on an element.\n\t// @example triggerEvent( document.body, \"click\" );\n\ttriggerEvent: function( elem, type, event ) {\n\t\tif ( document.createEvent ) {\n\t\t\tevent = document.createEvent(\"MouseEvents\");\n\t\t\tevent.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,\n\t\t\t\t0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\t\t\telem.dispatchEvent( event );\n\n\t\t} else if ( elem.fireEvent ) {\n\t\t\telem.fireEvent(\"on\"+type);\n\t\t}\n\t},\n\n\t// Safe object type checking\n\tis: function( type, obj ) {\n\t\treturn QUnit.objectType( obj ) == type;\n\t},\n\n\tobjectType: function( obj ) {\n\t\tif (typeof obj === \"undefined\") {\n\t\t\t\treturn \"undefined\";\n\n\t\t// consider: typeof null === object\n\t\t}\n\t\tif (obj === null) {\n\t\t\t\treturn \"null\";\n\t\t}\n\n\t\tvar type = toString.call( obj ).match(/^\\[object\\s(.*)\\]$/)[1] || '';\n\n\t\tswitch (type) {\n\t\t\tcase 'Number':\n\t\t\t\tif (isNaN(obj)) {\n\t\t\t\t\treturn \"nan\";\n\t\t\t\t}\n\t\t\t\treturn \"number\";\n\t\t\tcase 'String':\n\t\t\tcase 'Boolean':\n\t\t\tcase 'Array':\n\t\t\tcase 'Date':\n\t\t\tcase 'RegExp':\n\t\t\tcase 'Function':\n\t\t\t\t\treturn type.toLowerCase();\n\t\t}\n\t\tif (typeof obj === \"object\") {\n\t\t\t\treturn \"object\";\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tpush: function(result, actual, expected, message) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"assertion outside test context, was \" + sourceFromStacktrace());\n\t\t}\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: message,\n\t\t\tactual: actual,\n\t\t\texpected: expected\n\t\t};\n\n\t\tmessage = escapeInnerText(message) || (result ? \"okay\" : \"failed\");\n\t\tmessage = '<span class=\"test-message\">' + message + \"</span>\";\n\t\tvar output = message;\n\t\tif (!result) {\n\t\t\texpected = escapeInnerText(QUnit.jsDump.parse(expected));\n\t\t\tactual = escapeInnerText(QUnit.jsDump.parse(actual));\n\t\t\toutput += '<table><tr class=\"test-expected\"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';\n\t\t\tif (actual != expected) {\n\t\t\t\toutput += '<tr class=\"test-actual\"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';\n\t\t\t\toutput += '<tr class=\"test-diff\"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';\n\t\t\t}\n\t\t\tvar source = sourceFromStacktrace();\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\toutput += '<tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';\n\t\t\t}\n\t\t\toutput += \"</table>\";\n\t\t}\n\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: !!result,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\tpushFailure: function(message, source) {\n\t\tvar details = {\n\t\t\tresult: false,\n\t\t\tmessage: message\n\t\t};\n\t\tvar output = escapeInnerText(message);\n\t\tif (source) {\n\t\t\tdetails.source = source;\n\t\t\toutput += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: false,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\turl: function( params ) {\n\t\tparams = extend( extend( {}, QUnit.urlParams ), params );\n\t\tvar querystring = \"?\",\n\t\t\tkey;\n\t\tfor ( key in params ) {\n\t\t\tif ( !hasOwn.call( params, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tquerystring += encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( params[ key ] ) + \"&\";\n\t\t}\n\t\treturn window.location.pathname + querystring.slice( 0, -1 );\n\t},\n\n\textend: extend,\n\tid: id,\n\taddEvent: addEvent\n});\n\n//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later\n//Doing this allows us to tell if the following methods have been overwritten on the actual\n//QUnit object, which is a deprecated way of using the callbacks.\nextend(QUnit.constructor.prototype, {\n\t// Logging callbacks; all receive a single argument with the listed properties\n\t// run test/logs.html for any related changes\n\tbegin: registerLoggingCallback('begin'),\n\t// done: { failed, passed, total, runtime }\n\tdone: registerLoggingCallback('done'),\n\t// log: { result, actual, expected, message }\n\tlog: registerLoggingCallback('log'),\n\t// testStart: { name }\n\ttestStart: registerLoggingCallback('testStart'),\n\t// testDone: { name, failed, passed, total }\n\ttestDone: registerLoggingCallback('testDone'),\n\t// moduleStart: { name }\n\tmoduleStart: registerLoggingCallback('moduleStart'),\n\t// moduleDone: { name, failed, passed, total }\n\tmoduleDone: registerLoggingCallback('moduleDone')\n});\n\nif ( typeof document === \"undefined\" || document.readyState === \"complete\" ) {\n\tconfig.autorun = true;\n}\n\nQUnit.load = function() {\n\trunLoggingCallbacks( 'begin', QUnit, {} );\n\n\t// Initialize the config, saving the execution queue\n\tvar oldconfig = extend({}, config);\n\tQUnit.init();\n\textend(config, oldconfig);\n\n\tconfig.blocking = false;\n\n\tvar urlConfigHtml = '', len = config.urlConfig.length;\n\tfor ( var i = 0, val; i < len; i++ ) {\n\t\tval = config.urlConfig[i];\n\t\tconfig[val] = QUnit.urlParams[val];\n\t\turlConfigHtml += '<label><input name=\"' + val + '\" type=\"checkbox\"' + ( config[val] ? ' checked=\"checked\"' : '' ) + '>' + val + '</label>';\n\t}\n\n\tvar userAgent = id(\"qunit-userAgent\");\n\tif ( userAgent ) {\n\t\tuserAgent.innerHTML = navigator.userAgent;\n\t}\n\tvar banner = id(\"qunit-header\");\n\tif ( banner ) {\n\t\tbanner.innerHTML = '<a href=\"' + QUnit.url({ filter: undefined }) + '\"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;\n\t\taddEvent( banner, \"change\", function( event ) {\n\t\t\tvar params = {};\n\t\t\tparams[ event.target.name ] = event.target.checked ? true : undefined;\n\t\t\twindow.location = QUnit.url( params );\n\t\t});\n\t}\n\n\tvar toolbar = id(\"qunit-testrunner-toolbar\");\n\tif ( toolbar ) {\n\t\tvar filter = document.createElement(\"input\");\n\t\tfilter.type = \"checkbox\";\n\t\tfilter.id = \"qunit-filter-pass\";\n\t\taddEvent( filter, \"click\", function() {\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tif ( filter.checked ) {\n\t\t\t\tol.className = ol.className + \" hidepass\";\n\t\t\t} else {\n\t\t\t\tvar tmp = \" \" + ol.className.replace( /[\\n\\t\\r]/g, \" \" ) + \" \";\n\t\t\t\tol.className = tmp.replace(/ hidepass /, \" \");\n\t\t\t}\n\t\t\tif ( defined.sessionStorage ) {\n\t\t\t\tif (filter.checked) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-filter-passed-tests\", \"true\");\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-filter-passed-tests\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem(\"qunit-filter-passed-tests\") ) {\n\t\t\tfilter.checked = true;\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tol.className = ol.className + \" hidepass\";\n\t\t}\n\t\ttoolbar.appendChild( filter );\n\n\t\tvar label = document.createElement(\"label\");\n\t\tlabel.setAttribute(\"for\", \"qunit-filter-pass\");\n\t\tlabel.innerHTML = \"Hide passed tests\";\n\t\ttoolbar.appendChild( label );\n\t}\n\n\tvar main = id('qunit-fixture');\n\tif ( main ) {\n\t\tconfig.fixture = main.innerHTML;\n\t}\n\n\tif (config.autostart) {\n\t\tQUnit.start();\n\t}\n};\n\naddEvent(window, \"load\", QUnit.load);\n\n// addEvent(window, \"error\") gives us a useless event object\nwindow.onerror = function( message, file, line ) {\n\tif ( QUnit.config.current ) {\n\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t} else {\n\t\tQUnit.test( \"global failure\", function() {\n\t\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t\t});\n\t}\n};\n\nfunction done() {\n\tconfig.autorun = true;\n\n\t// Log the last module results\n\tif ( config.currentModule ) {\n\t\trunLoggingCallbacks( 'moduleDone', QUnit, {\n\t\t\tname: config.currentModule,\n\t\t\tfailed: config.moduleStats.bad,\n\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\ttotal: config.moduleStats.all\n\t\t} );\n\t}\n\n\tvar banner = id(\"qunit-banner\"),\n\t\ttests = id(\"qunit-tests\"),\n\t\truntime = +new Date() - config.started,\n\t\tpassed = config.stats.all - config.stats.bad,\n\t\thtml = [\n\t\t\t'Tests completed in ',\n\t\t\truntime,\n\t\t\t' milliseconds.<br/>',\n\t\t\t'<span class=\"passed\">',\n\t\t\tpassed,\n\t\t\t'</span> tests of <span class=\"total\">',\n\t\t\tconfig.stats.all,\n\t\t\t'</span> passed, <span class=\"failed\">',\n\t\t\tconfig.stats.bad,\n\t\t\t'</span> failed.'\n\t\t].join('');\n\n\tif ( banner ) {\n\t\tbanner.className = (config.stats.bad ? \"qunit-fail\" : \"qunit-pass\");\n\t}\n\n\tif ( tests ) {\n\t\tid( \"qunit-testresult\" ).innerHTML = html;\n\t}\n\n\tif ( config.altertitle && typeof document !== \"undefined\" && document.title ) {\n\t\t// show ✖ for good, ✔ for bad suite result in title\n\t\t// use escape sequences in case file gets loaded with non-utf-8-charset\n\t\tdocument.title = [\n\t\t\t(config.stats.bad ? \"\\u2716\" : \"\\u2714\"),\n\t\t\tdocument.title.replace(/^[\\u2714\\u2716] /i, \"\")\n\t\t].join(\" \");\n\t}\n\n\t// clear own sessionStorage items if all tests passed\n\tif ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {\n\t\tvar key;\n\t\tfor ( var i = 0; i < sessionStorage.length; i++ ) {\n\t\t\tkey = sessionStorage.key( i++ );\n\t\t\tif ( key.indexOf(\"qunit-test-\") === 0 ) {\n\t\t\t\tsessionStorage.removeItem( key );\n\t\t\t}\n\t\t}\n\t}\n\n\trunLoggingCallbacks( 'done', QUnit, {\n\t\tfailed: config.stats.bad,\n\t\tpassed: passed,\n\t\ttotal: config.stats.all,\n\t\truntime: runtime\n\t} );\n}\n\nfunction validTest( name ) {\n\tvar filter = config.filter,\n\t\trun = false;\n\n\tif ( !filter ) {\n\t\treturn true;\n\t}\n\n\tvar not = filter.charAt( 0 ) === \"!\";\n\tif ( not ) {\n\t\tfilter = filter.slice( 1 );\n\t}\n\n\tif ( name.indexOf( filter ) !== -1 ) {\n\t\treturn !not;\n\t}\n\n\tif ( not ) {\n\t\trun = true;\n\t}\n\n\treturn run;\n}\n\n// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)\n// Later Safari and IE10 are supposed to support error.stack as well\n// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack\nfunction extractStacktrace( e, offset ) {\n\toffset = offset || 3;\n\tif (e.stacktrace) {\n\t\t// Opera\n\t\treturn e.stacktrace.split(\"\\n\")[offset + 3];\n\t} else if (e.stack) {\n\t\t// Firefox, Chrome\n\t\tvar stack = e.stack.split(\"\\n\");\n\t\tif (/^error$/i.test(stack[0])) {\n\t\t\tstack.shift();\n\t\t}\n\t\treturn stack[offset];\n\t} else if (e.sourceURL) {\n\t\t// Safari, PhantomJS\n\t\t// hopefully one day Safari provides actual stacktraces\n\t\t// exclude useless self-reference for generated Error objects\n\t\tif ( /qunit.js$/.test( e.sourceURL ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// for actual exceptions, this is useful\n\t\treturn e.sourceURL + \":\" + e.line;\n\t}\n}\nfunction sourceFromStacktrace(offset) {\n\ttry {\n\t\tthrow new Error();\n\t} catch ( e ) {\n\t\treturn extractStacktrace( e, offset );\n\t}\n}\n\nfunction escapeInnerText(s) {\n\tif (!s) {\n\t\treturn \"\";\n\t}\n\ts = s + \"\";\n\treturn s.replace(/[\\&<>]/g, function(s) {\n\t\tswitch(s) {\n\t\t\tcase \"&\": return \"&amp;\";\n\t\t\tcase \"<\": return \"&lt;\";\n\t\t\tcase \">\": return \"&gt;\";\n\t\t\tdefault: return s;\n\t\t}\n\t});\n}\n\nfunction synchronize( callback, last ) {\n\tconfig.queue.push( callback );\n\n\tif ( config.autorun && !config.blocking ) {\n\t\tprocess(last);\n\t}\n}\n\nfunction process( last ) {\n\tfunction next() {\n\t\tprocess( last );\n\t}\n\tvar start = new Date().getTime();\n\tconfig.depth = config.depth ? config.depth + 1 : 1;\n\n\twhile ( config.queue.length && !config.blocking ) {\n\t\tif ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {\n\t\t\tconfig.queue.shift()();\n\t\t} else {\n\t\t\twindow.setTimeout( next, 13 );\n\t\t\tbreak;\n\t\t}\n\t}\n\tconfig.depth--;\n\tif ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {\n\t\tdone();\n\t}\n}\n\nfunction saveGlobal() {\n\tconfig.pollution = [];\n\n\tif ( config.noglobals ) {\n\t\tfor ( var key in window ) {\n\t\t\tif ( !hasOwn.call( window, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconfig.pollution.push( key );\n\t\t}\n\t}\n}\n\nfunction checkPollution( name ) {\n\tvar old = config.pollution;\n\tsaveGlobal();\n\n\tvar newGlobals = diff( config.pollution, old );\n\tif ( newGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Introduced global variable(s): \" + newGlobals.join(\", \") );\n\t}\n\n\tvar deletedGlobals = diff( old, config.pollution );\n\tif ( deletedGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Deleted global variable(s): \" + deletedGlobals.join(\", \") );\n\t}\n}\n\n// returns a new Array with the elements that are in a but not in b\nfunction diff( a, b ) {\n\tvar result = a.slice();\n\tfor ( var i = 0; i < result.length; i++ ) {\n\t\tfor ( var j = 0; j < b.length; j++ ) {\n\t\t\tif ( result[i] === b[j] ) {\n\t\t\t\tresult.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction extend(a, b) {\n\tfor ( var prop in b ) {\n\t\tif ( b[prop] === undefined ) {\n\t\t\tdelete a[prop];\n\n\t\t// Avoid \"Member not found\" error in IE8 caused by setting window.constructor\n\t\t} else if ( prop !== \"constructor\" || a !== window ) {\n\t\t\ta[prop] = b[prop];\n\t\t}\n\t}\n\n\treturn a;\n}\n\nfunction addEvent(elem, type, fn) {\n\tif ( elem.addEventListener ) {\n\t\telem.addEventListener( type, fn, false );\n\t} else if ( elem.attachEvent ) {\n\t\telem.attachEvent( \"on\" + type, fn );\n\t} else {\n\t\tfn();\n\t}\n}\n\nfunction id(name) {\n\treturn !!(typeof document !== \"undefined\" && document && document.getElementById) &&\n\t\tdocument.getElementById( name );\n}\n\nfunction registerLoggingCallback(key){\n\treturn function(callback){\n\t\tconfig[key].push( callback );\n\t};\n}\n\n// Supports deprecated method of completely overwriting logging callbacks\nfunction runLoggingCallbacks(key, scope, args) {\n\t//debugger;\n\tvar callbacks;\n\tif ( QUnit.hasOwnProperty(key) ) {\n\t\tQUnit[key].call(scope, args);\n\t} else {\n\t\tcallbacks = config[key];\n\t\tfor( var i = 0; i < callbacks.length; i++ ) {\n\t\t\tcallbacks[i].call( scope, args );\n\t\t}\n\t}\n}\n\n// Test for equality any JavaScript type.\n// Author: Philippe Rathé <prathe@gmail.com>\nQUnit.equiv = (function() {\n\n\tvar innerEquiv; // the real equiv function\n\tvar callers = []; // stack to decide between skip/abort functions\n\tvar parents = []; // stack to avoiding loops from circular referencing\n\n\t// Call the o related callback with the given arguments.\n\tfunction bindCallbacks(o, callbacks, args) {\n\t\tvar prop = QUnit.objectType(o);\n\t\tif (prop) {\n\t\t\tif (QUnit.objectType(callbacks[prop]) === \"function\") {\n\t\t\t\treturn callbacks[prop].apply(callbacks, args);\n\t\t\t} else {\n\t\t\t\treturn callbacks[prop]; // or undefined\n\t\t\t}\n\t\t}\n\t}\n\n\tvar getProto = Object.getPrototypeOf || function (obj) {\n\t\treturn obj.__proto__;\n\t};\n\n\tvar callbacks = (function () {\n\n\t\t// for string, boolean, number and null\n\t\tfunction useStrictEquality(b, a) {\n\t\t\tif (b instanceof a.constructor || a instanceof b.constructor) {\n\t\t\t\t// to catch short annotaion VS 'new' annotation of a\n\t\t\t\t// declaration\n\t\t\t\t// e.g. var i = 1;\n\t\t\t\t// var j = new Number(1);\n\t\t\t\treturn a == b;\n\t\t\t} else {\n\t\t\t\treturn a === b;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"string\" : useStrictEquality,\n\t\t\t\"boolean\" : useStrictEquality,\n\t\t\t\"number\" : useStrictEquality,\n\t\t\t\"null\" : useStrictEquality,\n\t\t\t\"undefined\" : useStrictEquality,\n\n\t\t\t\"nan\" : function(b) {\n\t\t\t\treturn isNaN(b);\n\t\t\t},\n\n\t\t\t\"date\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"date\" && a.valueOf() === b.valueOf();\n\t\t\t},\n\n\t\t\t\"regexp\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"regexp\" &&\n\t\t\t\t\t// the regex itself\n\t\t\t\t\ta.source === b.source &&\n\t\t\t\t\t// and its modifers\n\t\t\t\t\ta.global === b.global &&\n\t\t\t\t\t// (gmi) ...\n\t\t\t\t\ta.ignoreCase === b.ignoreCase &&\n\t\t\t\t\ta.multiline === b.multiline;\n\t\t\t},\n\n\t\t\t// - skip when the property is a method of an instance (OOP)\n\t\t\t// - abort otherwise,\n\t\t\t// initial === would have catch identical references anyway\n\t\t\t\"function\" : function() {\n\t\t\t\tvar caller = callers[callers.length - 1];\n\t\t\t\treturn caller !== Object && typeof caller !== \"undefined\";\n\t\t\t},\n\n\t\t\t\"array\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar len;\n\n\t\t\t\t// b could be an object literal here\n\t\t\t\tif (QUnit.objectType(b) !== \"array\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlen = a.length;\n\t\t\t\tif (len !== b.length) { // safe and faster\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\tloop = true;// dont rewalk array\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\tparents.pop();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparents.pop();\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t\"object\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar eq = true; // unless we can proove it\n\t\t\t\tvar aProperties = [], bProperties = []; // collection of\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// strings\n\n\t\t\t\t// comparing constructors is more strict than using\n\t\t\t\t// instanceof\n\t\t\t\tif (a.constructor !== b.constructor) {\n\t\t\t\t\t// Allow objects with no prototype to be equivalent to\n\t\t\t\t\t// objects with Object as their constructor.\n\t\t\t\t\tif (!((getProto(a) === null && getProto(b) === Object.prototype) ||\n\t\t\t\t\t\t(getProto(b) === null && getProto(a) === Object.prototype)))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// stack constructor before traversing properties\n\t\t\t\tcallers.push(a.constructor);\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\n\t\t\t\tfor (i in a) { // be strict: don't ensures hasOwnProperty\n\t\t\t\t\t\t\t\t// and go deep\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\t// don't go down the same path twice\n\t\t\t\t\t\t\tloop = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\taProperties.push(i); // collect a's properties\n\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\teq = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallers.pop(); // unstack, we are done\n\t\t\t\tparents.pop();\n\n\t\t\t\tfor (i in b) {\n\t\t\t\t\tbProperties.push(i); // collect b's properties\n\t\t\t\t}\n\n\t\t\t\t// Ensures identical properties name\n\t\t\t\treturn eq && innerEquiv(aProperties.sort(), bProperties.sort());\n\t\t\t}\n\t\t};\n\t}());\n\n\tinnerEquiv = function() { // can take multiple arguments\n\t\tvar args = Array.prototype.slice.apply(arguments);\n\t\tif (args.length < 2) {\n\t\t\treturn true; // end transition\n\t\t}\n\n\t\treturn (function(a, b) {\n\t\t\tif (a === b) {\n\t\t\t\treturn true; // catch the most you can\n\t\t\t} else if (a === null || b === null || typeof a === \"undefined\" ||\n\t\t\t\t\ttypeof b === \"undefined\" ||\n\t\t\t\t\tQUnit.objectType(a) !== QUnit.objectType(b)) {\n\t\t\t\treturn false; // don't lose time with error prone cases\n\t\t\t} else {\n\t\t\t\treturn bindCallbacks(a, callbacks, [ b, a ]);\n\t\t\t}\n\n\t\t\t// apply transition with (1..n) arguments\n\t\t}(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)));\n\t};\n\n\treturn innerEquiv;\n\n}());\n\n/**\n * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |\n * http://flesler.blogspot.com Licensed under BSD\n * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008\n *\n * @projectDescription Advanced and extensible data dumping for Javascript.\n * @version 1.0.0\n * @author Ariel Flesler\n * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}\n */\nQUnit.jsDump = (function() {\n\tfunction quote( str ) {\n\t\treturn '\"' + str.toString().replace(/\"/g, '\\\\\"') + '\"';\n\t}\n\tfunction literal( o ) {\n\t\treturn o + '';\n\t}\n\tfunction join( pre, arr, post ) {\n\t\tvar s = jsDump.separator(),\n\t\t\tbase = jsDump.indent(),\n\t\t\tinner = jsDump.indent(1);\n\t\tif ( arr.join ) {\n\t\t\tarr = arr.join( ',' + s + inner );\n\t\t}\n\t\tif ( !arr ) {\n\t\t\treturn pre + post;\n\t\t}\n\t\treturn [ pre, inner + arr, base + post ].join(s);\n\t}\n\tfunction array( arr, stack ) {\n\t\tvar i = arr.length, ret = new Array(i);\n\t\tthis.up();\n\t\twhile ( i-- ) {\n\t\t\tret[i] = this.parse( arr[i] , undefined , stack);\n\t\t}\n\t\tthis.down();\n\t\treturn join( '[', ret, ']' );\n\t}\n\n\tvar reName = /^function (\\w+)/;\n\n\tvar jsDump = {\n\t\tparse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance\n\t\t\tstack = stack || [ ];\n\t\t\tvar parser = this.parsers[ type || this.typeOf(obj) ];\n\t\t\ttype = typeof parser;\n\t\t\tvar inStack = inArray(obj, stack);\n\t\t\tif (inStack != -1) {\n\t\t\t\treturn 'recursion('+(inStack - stack.length)+')';\n\t\t\t}\n\t\t\t//else\n\t\t\tif (type == 'function')  {\n\t\t\t\t\tstack.push(obj);\n\t\t\t\t\tvar res = parser.call( this, obj, stack );\n\t\t\t\t\tstack.pop();\n\t\t\t\t\treturn res;\n\t\t\t}\n\t\t\t// else\n\t\t\treturn (type == 'string') ? parser : this.parsers.error;\n\t\t},\n\t\ttypeOf: function( obj ) {\n\t\t\tvar type;\n\t\t\tif ( obj === null ) {\n\t\t\t\ttype = \"null\";\n\t\t\t} else if (typeof obj === \"undefined\") {\n\t\t\t\ttype = \"undefined\";\n\t\t\t} else if (QUnit.is(\"RegExp\", obj)) {\n\t\t\t\ttype = \"regexp\";\n\t\t\t} else if (QUnit.is(\"Date\", obj)) {\n\t\t\t\ttype = \"date\";\n\t\t\t} else if (QUnit.is(\"Function\", obj)) {\n\t\t\t\ttype = \"function\";\n\t\t\t} else if (typeof obj.setInterval !== undefined && typeof obj.document !== \"undefined\" && typeof obj.nodeType === \"undefined\") {\n\t\t\t\ttype = \"window\";\n\t\t\t} else if (obj.nodeType === 9) {\n\t\t\t\ttype = \"document\";\n\t\t\t} else if (obj.nodeType) {\n\t\t\t\ttype = \"node\";\n\t\t\t} else if (\n\t\t\t\t// native arrays\n\t\t\t\ttoString.call( obj ) === \"[object Array]\" ||\n\t\t\t\t// NodeList objects\n\t\t\t\t( typeof obj.length === \"number\" && typeof obj.item !== \"undefined\" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === \"undefined\" ) ) )\n\t\t\t) {\n\t\t\t\ttype = \"array\";\n\t\t\t} else {\n\t\t\t\ttype = typeof obj;\n\t\t\t}\n\t\t\treturn type;\n\t\t},\n\t\tseparator: function() {\n\t\t\treturn this.multiline ?\tthis.HTML ? '<br />' : '\\n' : this.HTML ? '&nbsp;' : ' ';\n\t\t},\n\t\tindent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing\n\t\t\tif ( !this.multiline ) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar chr = this.indentChar;\n\t\t\tif ( this.HTML ) {\n\t\t\t\tchr = chr.replace(/\\t/g,'   ').replace(/ /g,'&nbsp;');\n\t\t\t}\n\t\t\treturn new Array( this._depth_ + (extra||0) ).join(chr);\n\t\t},\n\t\tup: function( a ) {\n\t\t\tthis._depth_ += a || 1;\n\t\t},\n\t\tdown: function( a ) {\n\t\t\tthis._depth_ -= a || 1;\n\t\t},\n\t\tsetParser: function( name, parser ) {\n\t\t\tthis.parsers[name] = parser;\n\t\t},\n\t\t// The next 3 are exposed so you can use them\n\t\tquote: quote,\n\t\tliteral: literal,\n\t\tjoin: join,\n\t\t//\n\t\t_depth_: 1,\n\t\t// This is the list of parsers, to modify them, use jsDump.setParser\n\t\tparsers: {\n\t\t\twindow: '[Window]',\n\t\t\tdocument: '[Document]',\n\t\t\terror: '[ERROR]', //when no parser is found, shouldn't happen\n\t\t\tunknown: '[Unknown]',\n\t\t\t'null': 'null',\n\t\t\t'undefined': 'undefined',\n\t\t\t'function': function( fn ) {\n\t\t\t\tvar ret = 'function',\n\t\t\t\t\tname = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE\n\t\t\t\tif ( name ) {\n\t\t\t\t\tret += ' ' + name;\n\t\t\t\t}\n\t\t\t\tret += '(';\n\n\t\t\t\tret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');\n\t\t\t\treturn join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );\n\t\t\t},\n\t\t\tarray: array,\n\t\t\tnodelist: array,\n\t\t\t'arguments': array,\n\t\t\tobject: function( map, stack ) {\n\t\t\t\tvar ret = [ ], keys, key, val, i;\n\t\t\t\tQUnit.jsDump.up();\n\t\t\t\tif (Object.keys) {\n\t\t\t\t\tkeys = Object.keys( map );\n\t\t\t\t} else {\n\t\t\t\t\tkeys = [];\n\t\t\t\t\tfor (key in map) { keys.push( key ); }\n\t\t\t\t}\n\t\t\t\tkeys.sort();\n\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\tkey = keys[ i ];\n\t\t\t\t\tval = map[ key ];\n\t\t\t\t\tret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) );\n\t\t\t\t}\n\t\t\t\tQUnit.jsDump.down();\n\t\t\t\treturn join( '{', ret, '}' );\n\t\t\t},\n\t\t\tnode: function( node ) {\n\t\t\t\tvar open = QUnit.jsDump.HTML ? '&lt;' : '<',\n\t\t\t\t\tclose = QUnit.jsDump.HTML ? '&gt;' : '>';\n\n\t\t\t\tvar tag = node.nodeName.toLowerCase(),\n\t\t\t\t\tret = open + tag;\n\n\t\t\t\tfor ( var a in QUnit.jsDump.DOMAttrs ) {\n\t\t\t\t\tvar val = node[QUnit.jsDump.DOMAttrs[a]];\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\tret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret + close + open + '/' + tag + close;\n\t\t\t},\n\t\t\tfunctionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function\n\t\t\t\tvar l = fn.length;\n\t\t\t\tif ( !l ) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tvar args = new Array(l);\n\t\t\t\twhile ( l-- ) {\n\t\t\t\t\targs[l] = String.fromCharCode(97+l);//97 is 'a'\n\t\t\t\t}\n\t\t\t\treturn ' ' + args.join(', ') + ' ';\n\t\t\t},\n\t\t\tkey: quote, //object calls it internally, the key part of an item in a map\n\t\t\tfunctionCode: '[code]', //function calls it internally, it's the content of the function\n\t\t\tattribute: quote, //node calls it internally, it's an html attribute value\n\t\t\tstring: quote,\n\t\t\tdate: quote,\n\t\t\tregexp: literal, //regex\n\t\t\tnumber: literal,\n\t\t\t'boolean': literal\n\t\t},\n\t\tDOMAttrs:{//attributes to dump from nodes, name=>realName\n\t\t\tid:'id',\n\t\t\tname:'name',\n\t\t\t'class':'className'\n\t\t},\n\t\tHTML:false,//if true, entities are escaped ( <, >, \\t, space and \\n )\n\t\tindentChar:'  ',//indentation unit\n\t\tmultiline:true //if true, items in a collection, are separated by a \\n, else just a space.\n\t};\n\n\treturn jsDump;\n}());\n\n// from Sizzle.js\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n//from jquery.js\nfunction inArray( elem, array ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( elem );\n\t}\n\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[ i ] === elem ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/*\n * Javascript Diff Algorithm\n *  By John Resig (http://ejohn.org/)\n *  Modified by Chu Alan \"sprite\"\n *\n * Released under the MIT license.\n *\n * More Info:\n *  http://ejohn.org/projects/javascript-diff-algorithm/\n *\n * Usage: QUnit.diff(expected, actual)\n *\n * QUnit.diff(\"the quick brown fox jumped over\", \"the quick fox jumps over\") == \"the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over\"\n */\nQUnit.diff = (function() {\n\tfunction diff(o, n) {\n\t\tvar ns = {};\n\t\tvar os = {};\n\t\tvar i;\n\n\t\tfor (i = 0; i < n.length; i++) {\n\t\t\tif (ns[n[i]] == null) {\n\t\t\t\tns[n[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\to: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tns[n[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i = 0; i < o.length; i++) {\n\t\t\tif (os[o[i]] == null) {\n\t\t\t\tos[o[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\tn: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tos[o[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i in ns) {\n\t\t\tif ( !hasOwn.call( ns, i ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ns[i].rows.length == 1 && typeof(os[i]) != \"undefined\" && os[i].rows.length == 1) {\n\t\t\t\tn[ns[i].rows[0]] = {\n\t\t\t\t\ttext: n[ns[i].rows[0]],\n\t\t\t\t\trow: os[i].rows[0]\n\t\t\t\t};\n\t\t\t\to[os[i].rows[0]] = {\n\t\t\t\t\ttext: o[os[i].rows[0]],\n\t\t\t\t\trow: ns[i].rows[0]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < n.length - 1; i++) {\n\t\t\tif (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&\n\t\t\tn[i + 1] == o[n[i].row + 1]) {\n\t\t\t\tn[i + 1] = {\n\t\t\t\t\ttext: n[i + 1],\n\t\t\t\t\trow: n[i].row + 1\n\t\t\t\t};\n\t\t\t\to[n[i].row + 1] = {\n\t\t\t\t\ttext: o[n[i].row + 1],\n\t\t\t\t\trow: i + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = n.length - 1; i > 0; i--) {\n\t\t\tif (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&\n\t\t\tn[i - 1] == o[n[i].row - 1]) {\n\t\t\t\tn[i - 1] = {\n\t\t\t\t\ttext: n[i - 1],\n\t\t\t\t\trow: n[i].row - 1\n\t\t\t\t};\n\t\t\t\to[n[i].row - 1] = {\n\t\t\t\t\ttext: o[n[i].row - 1],\n\t\t\t\t\trow: i - 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\to: o,\n\t\t\tn: n\n\t\t};\n\t}\n\n\treturn function(o, n) {\n\t\to = o.replace(/\\s+$/, '');\n\t\tn = n.replace(/\\s+$/, '');\n\t\tvar out = diff(o === \"\" ? [] : o.split(/\\s+/), n === \"\" ? [] : n.split(/\\s+/));\n\n\t\tvar str = \"\";\n\t\tvar i;\n\n\t\tvar oSpace = o.match(/\\s+/g);\n\t\tif (oSpace == null) {\n\t\t\toSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\toSpace.push(\" \");\n\t\t}\n\t\tvar nSpace = n.match(/\\s+/g);\n\t\tif (nSpace == null) {\n\t\t\tnSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\tnSpace.push(\" \");\n\t\t}\n\n\t\tif (out.n.length === 0) {\n\t\t\tfor (i = 0; i < out.o.length; i++) {\n\t\t\t\tstr += '<del>' + out.o[i] + oSpace[i] + \"</del>\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (out.n[0].text == null) {\n\t\t\t\tfor (n = 0; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\tstr += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < out.n.length; i++) {\n\t\t\t\tif (out.n[i].text == null) {\n\t\t\t\t\tstr += '<ins>' + out.n[i] + nSpace[i] + \"</ins>\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar pre = \"\";\n\n\t\t\t\t\tfor (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\t\tpre += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += \" \" + out.n[i].text + nSpace[i] + pre;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n}());\n\n// for CommonJS enviroments, export everything\nif ( typeof exports !== \"undefined\" || typeof require !== \"undefined\" ) {\n\textend(exports, QUnit);\n}\n\n// get at whatever the global object is, like window in browsers\n}( (function() {return this;}.call()) ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/rules.js",
    "content": "module(\"rules\");\n\ntest(\"rules() - internal - input\", function() {\n\tvar element = $('#firstname');\n\tvar v = $('#testForm1').validate();\n\tdeepEqual( element.rules(), { required: true, minlength: 2 } );\n});\n\ntest(\"rules(), ignore method:false\", function() {\n\tvar element = $('#firstnamec');\n\tvar v = $('#testForm1clean').validate({\n\t\trules: {\n\t\t\tfirstname: { required: false, minlength: 2 }\n\t\t}\n\t});\n\tdeepEqual( element.rules(), { minlength: 2 } );\n});\n\ntest(\"rules() HTML5 required (no value)\", function() {\n\tvar element = $('#testForm11text1');\n\tvar v = $('#testForm11').validate();\n\tdeepEqual( element.rules(), { required: true } );\n});\n\ntest(\"rules() - internal - select\", function() {\n\tvar element = $('#meal');\n\tvar v = $('#testForm3').validate();\n\tdeepEqual( element.rules(), {required: true} );\n});\n\ntest(\"rules() - external\", function() {\n\tvar element = $('#text1');\n\tvar v = $('#form').validate({\n\t\trules: {\n\t\t\taction: {date: true, min: 5}\n\t\t}\n\t});\n\tdeepEqual( element.rules(), {date: true, min: 5} );\n});\n\ntest(\"rules() - external - complete form\", function() {\n\texpect(1);\n\n\tvar methods = $.extend({}, $.validator.methods);\n\tvar messages = $.extend({}, $.validator.messages);\n\n\t$.validator.addMethod(\"verifyTest\", function() {\n\t\tok( true, \"method executed\" );\n\t\treturn true;\n\t});\n\tvar v = $('#form').validate({\n\t\trules: {\n\t\t\taction: {verifyTest: true}\n\t\t}\n\t});\n\tv.form();\n\n\t$.validator.methods = methods;\n\t$.validator.messages = messages;\n});\n\ntest(\"rules() - internal - input\", function() {\n\tvar element = $('#form8input');\n\tvar v = $('#testForm8').validate();\n\tdeepEqual( element.rules(), {required: true, number: true, rangelength: [2, 8]});\n});\n\ntest(\"rules(), merge min/max to range, minlength/maxlength to rangelength\", function() {\n\tjQuery.validator.autoCreateRanges = true;\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: 5,\n\t\t\t\tmax: 12\n\t\t\t},\n\t\t\tlastname: {\n\t\t\t\tminlength: 2,\n\t\t\t\tmaxlength: 8\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), {range: [5, 12]});\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {rangelength: [2, 8]} );\n\tjQuery.validator.autoCreateRanges = false;\n});\n\ntest(\"rules(), gurantee that required is at front\", function() {\n\t$(\"#testForm1\").validate();\n\tvar v = $(\"#v2\").validate();\n\t$(\"#subformRequired\").validate();\n\tfunction flatRules(element) {\n\t\tvar result = [];\n\t\tjQuery.each($(element).rules(), function(key, value) { result.push(key) });\n\t\treturn result.join(\" \");\n\t}\n\tequal( \"required minlength\", flatRules(\"#firstname\") );\n\tequal( \"required maxlength minlength\", flatRules(\"#v2-i6\") );\n\tequal( \"required maxlength\", flatRules(\"#co_name\") );\n\n\tQUnit.reset();\n\tjQuery.validator.autoCreateRanges = true;\n\tv = $(\"#v2\").validate();\n\tequal( \"required rangelength\", flatRules(\"#v2-i6\") );\n\n\t$(\"#subformRequired\").validate({\n\t\trules: {\n\t\t\tco_name: \"required\"\n\t\t}\n\t});\n\t$(\"#co_name\").removeClass();\n\tequal( \"required maxlength\", flatRules(\"#co_name\") );\n\tjQuery.validator.autoCreateRanges = false;\n});\n\ntest(\"rules(), evaluate dynamic parameters\", function() {\n\texpect(2);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: function(element) {\n\t\t\t\t\tequal( $(\"#firstnamec\")[0], element );\n\t\t\t\t\treturn 12;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), {min:12});\n});\n\ntest(\"rules(), class and attribute combinations\", function() {\n\n\t$.validator.addMethod(\"customMethod1\", function() {\n\t\treturn false;\n\t}, \"\");\n\t$.validator.addMethod(\"customMethod2\", function() {\n\t\treturn false;\n\t}, \"\");\n\tvar v = $(\"#v2\").validate({\n\t\trules: {\n\t\t\t'v2-i7': {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2,\n\t\t\t\tcustomMethod: true\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#v2-i1\").rules(), { required: true });\n\tdeepEqual( $(\"#v2-i2\").rules(), { required: true, email: true });\n\tdeepEqual( $(\"#v2-i3\").rules(), { url: true });\n\tdeepEqual( $(\"#v2-i4\").rules(), { required: true, minlength: 2 });\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: \"123\" });\n\tjQuery.validator.autoCreateRanges = true;\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, customMethod1: \"123\", rangelength: [2, 5] });\n\tdeepEqual( $(\"#v2-i6\").rules(), { required: true, customMethod2: true, rangelength: [2, 5] });\n\tjQuery.validator.autoCreateRanges = false;\n\tdeepEqual( $(\"#v2-i7\").rules(), { required: true, minlength: 2, customMethod: true });\n\n\tdelete $.validator.methods.customMethod1;\n\tdelete $.validator.messages.customMethod1;\n\tdelete $.validator.methods.customMethod2;\n\tdelete $.validator.messages.customMethod2;\n});\n\ntest(\"rules(), dependency checks\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: {\n\t\t\t\t\tparam: 5,\n\t\t\t\t\tdepends: function(el) {\n\t\t\t\t\t\treturn /^a/.test($(el).val());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tlastname: {\n\t\t\t\tmax: {\n\t\t\t\t\tparam: 12\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\tdepends: function() { return true; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tvar rules = $(\"#firstnamec\").rules();\n\tequal( 0, v.objectLength(rules) );\n\n\t$(\"#firstnamec\").val('ab');\n\tdeepEqual( $(\"#firstnamec\").rules(), {min:5});\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {max:12, email:true});\n});\n\ntest(\"rules(), add and remove\", function() {\n\t$.validator.addMethod(\"customMethod1\", function() {\n\t\treturn false;\n\t}, \"\");\n\t$(\"#v2\").validate();\n\tvar removedAttrs = $(\"#v2-i5\").removeClass(\"required\").removeAttrs(\"minlength maxlength\");\n\tdeepEqual( $(\"#v2-i5\").rules(), { customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").addClass(\"required\").attr(removedAttrs);\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").addClass(\"email\").attr({min: 5});\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").removeClass(\"required email\").removeAttrs(\"minlength maxlength customMethod1 min\");\n\tdeepEqual( $(\"#v2-i5\").rules(), {});\n\n\tdelete $.validator.methods.customMethod1;\n\tdelete $.validator.messages.customMethod1;\n});\n\ntest(\"rules(), add and remove static rules\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required date\"\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, date: true } );\n\n\t$(\"#firstnamec\").rules(\"remove\", \"date\")\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true } );\n\t$(\"#firstnamec\").rules(\"add\", \"email\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, email: true } );\n\n\t$(\"#firstnamec\").rules(\"remove\", \"required\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { email: true } );\n\n\tdeepEqual( $(\"#firstnamec\").rules(\"remove\"), { email: true } );\n\tdeepEqual( $(\"#firstnamec\").rules(), { } );\n\n\t$(\"#firstnamec\").rules(\"add\", \"required email\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, email: true } );\n\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {} );\n\t$(\"#lastnamec\").rules(\"add\", \"required\");\n\t$(\"#lastnamec\").rules(\"add\", {\n\t\tminlength: 2\n\t});\n\tdeepEqual( $(\"#lastnamec\").rules(), { required: true, minlength: 2 } );\n\n\n\tvar removedRules = $(\"#lastnamec\").rules(\"remove\", \"required email\");\n\tdeepEqual( $(\"#lastnamec\").rules(), { minlength: 2 } );\n\t$(\"#lastnamec\").rules(\"add\", removedRules);\n\tdeepEqual( $(\"#lastnamec\").rules(), { required: true, minlength: 2 } );\n});\n\ntest(\"rules(), add messages\", function() {\n\t$(\"#firstnamec\").attr(\"title\", null);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\t$(\"#testForm1clean\").valid();\n\t$(\"#firstnamec\").valid();\n\tdeepEqual( v.settings.messages.firstname, undefined );\n\n\t$(\"#firstnamec\").rules(\"add\", {\n\t\tmessages: {\n\t\t\trequired: \"required\"\n\t\t}\n\t});\n\n\t$(\"#firstnamec\").valid();\n\tdeepEqual( v.errorList[0] && v.errorList[0].message, \"required\" );\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/selects/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<title>Fun with jQuery</title>\n\n<script src=\"http://www.google.com/jsapi\"></script>\n<script>\n  google.load(\"jquery\", \"1\");\n</script>\n\n<script type=\"text/javascript\">\n\n$.fn.options = function(selector) {\n\treturn this.each(function() {\n\t\tfunction container(select) {\n\t\t\tif (select.next().is(\".option-container\")) {\n\t\t\t\treturn $(select).next();\n\t\t\t}\n\t\t\treturn $('<select class=\"option-container\" />').append(select.children()).insertAfter(select).hide();\n\t\t}\n\t\tvar container = container($(this));\n\t\t$(this).empty().append(container.children(selector).clone());\n\t});\n}\n\n$(document).ready(function(){\n\n\t$(\"#State\").hide()\n\n\t$(\"#Country\").change(function() {\n\t\tvar selected = this.options[this.selectedIndex].value;\n\t\tif (selected == \"US\") {\n\t\t\t$(\"#State\").show().options(\".state\");\n\t\t} else if (selected == \"CA\") {\n\t\t\t$(\"#State\").show().options(\".province\");\n\t\t} else {\n\t\t\t$(\"#State\").hide();\n\t\t}\n\t}).change();\n\n\n});\n</script>\n\n\n\n</head>\n\n<body>\nMission:\n\n<xmp>\nCODE\n\n</xmp>\n\n\n    <select size=\"1\" id=\"Country\" name=\"country\">\n      <option value=\"\">Select One</option>\n\n      <option value=\"US\" selected=\"selected\">United States</option>\n      <option value=\"CA\">Canada</option>\n      <option value=\"\">----------</option>\n      <option value=\"AF\">Afghanistan</option>\n      <option value=\"AL\">Albania</option>\n      <option value=\"DZ\">Algeria</option>\n\n      <option value=\"AS\">American Samoa</option>\n      <option value=\"AD\">Andorra</option>\n      <option value=\"AO\">Angola</option>\n      <option value=\"AI\">Anguilla</option>\n      <option value=\"AQ\">Antarctica</option>\n      <option value=\"AG\">Antigua and Barbuda</option>\n\n      <option value=\"AR\">Argentina</option>\n      <option value=\"AM\">Armenia</option>\n      <option value=\"AW\">Aruba</option>\n      <option value=\"AU\">Australia</option>\n      <option value=\"AT\">Austria</option>\n      <option value=\"AZ\">Azerbaidjan</option>\n\n      <option value=\"BS\">Bahamas</option>\n      <option value=\"BH\">Bahrain</option>\n      <option value=\"BD\">Bangladesh</option>\n      <option value=\"BB\">Barbados</option>\n      <option value=\"BY\">Belarus</option>\n      <option value=\"BE\">Belgium</option>\n\n      <option value=\"BZ\">Belize</option>\n      <option value=\"BJ\">Benin</option>\n      <option value=\"BM\">Bermuda</option>\n      <option value=\"BT\">Bhutan</option>\n      <option value=\"BO\">Bolivia</option>\n      <option value=\"BA\">Bosnia-Herzegovina</option>\n\n      <option value=\"BW\">Botswana</option>\n      <option value=\"BV\">Bouvet Island</option>\n      <option value=\"BR\">Brazil</option>\n      <option value=\"IO\">British Indian Ocean Territory</option>\n      <option value=\"BN\">Brunei Darussalam</option>\n      <option value=\"BG\">Bulgaria</option>\n\n      <option value=\"BF\">Burkina Faso</option>\n      <option value=\"BI\">Burundi</option>\n      <option value=\"KH\">Cambodia</option>\n      <option value=\"CM\">Cameroon</option>\n      <option value=\"CV\">Cape Verde</option>\n      <option value=\"KY\">Cayman Islands</option>\n\n      <option value=\"CF\">Central African Republic</option>\n      <option value=\"TD\">Chad</option>\n      <option value=\"CL\">Chile</option>\n      <option value=\"CN\">China</option>\n      <option value=\"CX\">Christmas Island</option>\n      <option value=\"CC\">Cocos (Keeling) Islands</option>\n\n      <option value=\"CO\">Colombia</option>\n      <option value=\"KM\">Comoros</option>\n      <option value=\"CG\">Congo</option>\n      <option value=\"CK\">Cook Islands</option>\n      <option value=\"CR\">Costa Rica</option>\n      <option value=\"HR\">Croatia</option>\n\n      <option value=\"CU\">Cuba</option>\n      <option value=\"CY\">Cyprus</option>\n      <option value=\"CZ\">Czech Republic</option>\n      <option value=\"DK\">Denmark</option>\n      <option value=\"DJ\">Djibouti</option>\n      <option value=\"DM\">Dominica</option>\n\n      <option value=\"DO\">Dominican Republic</option>\n      <option value=\"TP\">East Timor</option>\n      <option value=\"EC\">Ecuador</option>\n      <option value=\"EG\">Egypt</option>\n      <option value=\"SV\">El Salvador</option>\n      <option value=\"GQ\">Equatorial Guinea</option>\n\n      <option value=\"ER\">Eritrea</option>\n      <option value=\"EE\">Estonia</option>\n      <option value=\"ET\">Ethiopia</option>\n      <option value=\"FK\">Falkland Islands</option>\n      <option value=\"FO\">Faroe Islands</option>\n      <option value=\"FJ\">Fiji</option>\n\n      <option value=\"FI\">Finland</option>\n      <option value=\"CS\">Former Czechoslovakia</option>\n      <option value=\"SU\">Former USSR</option>\n      <option value=\"FR\">France</option>\n      <option value=\"FX\">France (European Territory)</option>\n      <option value=\"GF\">French Guyana</option>\n\n      <option value=\"TF\">French Southern Territories</option>\n      <option value=\"GA\">Gabon</option>\n      <option value=\"GM\">Gambia</option>\n      <option value=\"GE\">Georgia</option>\n      <option value=\"DE\">Germany</option>\n      <option value=\"GH\">Ghana</option>\n\n      <option value=\"GI\">Gibraltar</option>\n      <option value=\"GB\">Great Britain</option>\n      <option value=\"GR\">Greece</option>\n      <option value=\"GL\">Greenland</option>\n      <option value=\"GD\">Grenada</option>\n      <option value=\"GP\">Guadeloupe (French)</option>\n\n      <option value=\"GU\">Guam (USA)</option>\n      <option value=\"GT\">Guatemala</option>\n      <option value=\"GN\">Guinea</option>\n      <option value=\"GW\">Guinea Bissau</option>\n      <option value=\"GY\">Guyana</option>\n      <option value=\"HT\">Haiti</option>\n\n      <option value=\"HM\">Heard and McDonald Islands</option>\n      <option value=\"HN\">Honduras</option>\n      <option value=\"HK\">Hong Kong</option>\n      <option value=\"HU\">Hungary</option>\n      <option value=\"IS\">Iceland</option>\n      <option value=\"IN\">India</option>\n\n      <option value=\"ID\">Indonesia</option>\n      <option value=\"INT\">International</option>\n      <option value=\"IR\">Iran</option>\n      <option value=\"IQ\">Iraq</option>\n      <option value=\"IE\">Ireland</option>\n      <option value=\"IL\">Israel</option>\n\n      <option value=\"IT\">Italy</option>\n      <option value=\"CI\">Ivory Coast (Cote D&#39;Ivoire)</option>\n      <option value=\"JM\">Jamaica</option>\n      <option value=\"JP\">Japan</option>\n      <option value=\"JO\">Jordan</option>\n      <option value=\"KZ\">Kazakhstan</option>\n\n      <option value=\"KE\">Kenya</option>\n      <option value=\"KI\">Kiribati</option>\n      <option value=\"KW\">Kuwait</option>\n      <option value=\"KG\">Kyrgyzstan</option>\n      <option value=\"LA\">Laos</option>\n      <option value=\"LV\">Latvia</option>\n\n      <option value=\"LB\">Lebanon</option>\n      <option value=\"LS\">Lesotho</option>\n      <option value=\"LR\">Liberia</option>\n      <option value=\"LY\">Libya</option>\n      <option value=\"LI\">Liechtenstein</option>\n      <option value=\"LT\">Lithuania</option>\n\n      <option value=\"LU\">Luxembourg</option>\n      <option value=\"MO\">Macau</option>\n      <option value=\"MK\">Macedonia</option>\n      <option value=\"MG\">Madagascar</option>\n      <option value=\"MW\">Malawi</option>\n      <option value=\"MY\">Malaysia</option>\n\n      <option value=\"MV\">Maldives</option>\n      <option value=\"ML\">Mali</option>\n      <option value=\"MT\">Malta</option>\n      <option value=\"MH\">Marshall Islands</option>\n      <option value=\"MQ\">Martinique (French)</option>\n      <option value=\"MR\">Mauritania</option>\n\n      <option value=\"MU\">Mauritius</option>\n      <option value=\"YT\">Mayotte</option>\n      <option value=\"MX\">Mexico</option>\n      <option value=\"FM\">Micronesia</option>\n      <option value=\"MD\">Moldavia</option>\n      <option value=\"MC\">Monaco</option>\n\n      <option value=\"MN\">Mongolia</option>\n      <option value=\"MS\">Montserrat</option>\n      <option value=\"MA\">Morocco</option>\n      <option value=\"MZ\">Mozambique</option>\n      <option value=\"MM\">Myanmar</option>\n      <option value=\"NA\">Namibia</option>\n\n      <option value=\"NR\">Nauru</option>\n      <option value=\"NP\">Nepal</option>\n      <option value=\"NL\">Netherlands</option>\n      <option value=\"AN\">Netherlands Antilles</option>\n      <option value=\"NT\">Neutral Zone</option>\n      <option value=\"NC\">New Caledonia (French)</option>\n\n      <option value=\"NZ\">New Zealand</option>\n      <option value=\"NI\">Nicaragua</option>\n      <option value=\"NE\">Niger</option>\n      <option value=\"NG\">Nigeria</option>\n      <option value=\"NU\">Niue</option>\n      <option value=\"NF\">Norfolk Island</option>\n\n      <option value=\"KP\">North Korea</option>\n      <option value=\"MP\">Northern Mariana Islands</option>\n      <option value=\"NO\">Norway</option>\n      <option value=\"OM\">Oman</option>\n      <option value=\"PK\">Pakistan</option>\n      <option value=\"PW\">Palau</option>\n\n      <option value=\"PA\">Panama</option>\n      <option value=\"PG\">Papua New Guinea</option>\n      <option value=\"PY\">Paraguay</option>\n      <option value=\"PE\">Peru</option>\n      <option value=\"PH\">Philippines</option>\n      <option value=\"PN\">Pitcairn Island</option>\n\n      <option value=\"PL\">Poland</option>\n      <option value=\"PF\">Polynesia (French)</option>\n      <option value=\"PT\">Portugal</option>\n      <option value=\"PR\">Puerto Rico</option>\n      <option value=\"QA\">Qatar</option>\n      <option value=\"RE\">Reunion (French)</option>\n\n      <option value=\"RO\">Romania</option>\n      <option value=\"RU\">Russian Federation</option>\n      <option value=\"RW\">Rwanda</option>\n      <option value=\"GS\">S. Georgia & S. Sandwich Isls.</option>\n      <option value=\"SH\">Saint Helena</option>\n      <option value=\"KN\">Saint Kitts & Nevis Anguilla</option>\n\n      <option value=\"LC\">Saint Lucia</option>\n      <option value=\"PM\">Saint Pierre and Miquelon</option>\n      <option value=\"ST\">Saint Tome (Sao Tome) and Principe</option>\n      <option value=\"VC\">Saint Vincent & Grenadines</option>\n      <option value=\"WS\">Samoa</option>\n      <option value=\"SM\">San Marino</option>\n\n      <option value=\"SA\">Saudi Arabia</option>\n      <option value=\"SN\">Senegal</option>\n      <option value=\"SC\">Seychelles</option>\n      <option value=\"SL\">Sierra Leone</option>\n      <option value=\"SG\">Singapore</option>\n      <option value=\"SK\">Slovak Republic</option>\n\n      <option value=\"SI\">Slovenia</option>\n      <option value=\"SB\">Solomon Islands</option>\n      <option value=\"SO\">Somalia</option>\n      <option value=\"ZA\">South Africa</option>\n      <option value=\"KR\">South Korea</option>\n      <option value=\"ES\">Spain</option>\n\n      <option value=\"LK\">Sri Lanka</option>\n      <option value=\"SD\">Sudan</option>\n      <option value=\"SR\">Suriname</option>\n      <option value=\"SJ\">Svalbard and Jan Mayen Islands</option>\n      <option value=\"SZ\">Swaziland</option>\n      <option value=\"SE\">Sweden</option>\n\n      <option value=\"CH\">Switzerland</option>\n      <option value=\"SY\">Syria</option>\n      <option value=\"TJ\">Tadjikistan</option>\n      <option value=\"TW\">Taiwan</option>\n      <option value=\"TZ\">Tanzania</option>\n      <option value=\"TH\">Thailand</option>\n\n      <option value=\"TG\">Togo</option>\n      <option value=\"TK\">Tokelau</option>\n      <option value=\"TO\">Tonga</option>\n      <option value=\"TT\">Trinidad and Tobago</option>\n      <option value=\"TN\">Tunisia</option>\n      <option value=\"TR\">Turkey</option>\n\n      <option value=\"TM\">Turkmenistan</option>\n      <option value=\"TC\">Turks and Caicos Islands</option>\n      <option value=\"TV\">Tuvalu</option>\n      <option value=\"UG\">Uganda</option>\n      <option value=\"UA\">Ukraine</option>\n      <option value=\"AE\">United Arab Emirates</option>\n\n      <option value=\"GB\">United Kingdom</option>\n      <option value=\"UY\">Uruguay</option>\n      <option value=\"MIL\">USA Military</option>\n      <option value=\"UM\">USA Minor Outlying Islands</option>\n      <option value=\"UZ\">Uzbekistan</option>\n      <option value=\"VU\">Vanuatu</option>\n\n      <option value=\"VA\">Vatican City State</option>\n      <option value=\"VE\">Venezuela</option>\n      <option value=\"VN\">Vietnam</option>\n      <option value=\"VG\">Virgin Islands (British)</option>\n      <option value=\"VI\">Virgin Islands (USA)</option>\n      <option value=\"WF\">Wallis and Futuna Islands</option>\n\n      <option value=\"EH\">Western Sahara</option>\n      <option value=\"YE\">Yemen</option>\n      <option value=\"YU\">Yugoslavia</option>\n      <option value=\"ZR\">Zaire</option>\n      <option value=\"ZM\">Zambia</option>\n      <option value=\"ZW\">Zimbabwe</option>\n\n    </select>\n<br />\n\n<select  id=\"State\" name=\"State\">\n\n      <option value=\"\" class=\"selectone\">Select One</option>\n      <option value=\"AB\" class=\"province\">Alberta</option>\n      <option value=\"BC\" class=\"province\">British Columbia</option>\n      <option value=\"MB\" class=\"province\">Manitoba</option>\n\n      <option value=\"NB\" class=\"province\">New Brunswick</option>\n      <option value=\"NF\" class=\"province\">Newfoundland</option>\n      <option value=\"NT\" class=\"province\">Northwest Territories</option>\n      <option value=\"NS\" class=\"province\">Nova Scotia</option>\n      <option value=\"NU\" class=\"province\">Nunavut</option>\n      <option value=\"ON\" class=\"province\">Ontario</option>\n\n      <option value=\"PE\" class=\"province\">Prince Edward Island</option>\n      <option value=\"QC\" class=\"province\">Quebec</option>\n      <option value=\"SK\" class=\"province\">Saskatchewan</option>\n      <option value=\"YT\" class=\"province\">Yukon Territory</option>\n\n        <option value=\"AK\" class=\"state\">Alaska</option>\n        <option value=\"AL\" class=\"state\">Alabama</option>\n\n        <option value=\"AR\" class=\"state\">Arkansas</option>\n        <option value=\"AZ\" class=\"state\">Arizona</option>\n        <option value=\"CA\" class=\"state\">California</option>\n        <option value=\"CO\" class=\"state\">Colorado</option>\n        <option value=\"CT\" class=\"state\">Connecticut</option>\n        <option value=\"DC\" class=\"state\">District of Columbia</option>\n\n        <option value=\"DE\" class=\"state\">Delaware</option>\n        <option value=\"FL\" class=\"state\">Florida</option>\n        <option value=\"GA\" class=\"state\">Georgia</option>\n        <option value=\"HI\" class=\"state\">Hawaii</option>\n        <option value=\"IA\" class=\"state\">Iowa</option>\n        <option value=\"ID\" class=\"state\">Idaho</option>\n\n        <option value=\"IL\" class=\"state\">Illinois</option>\n        <option value=\"IN\" class=\"state\">Indiana</option>\n        <option value=\"KS\" class=\"state\">Kansas</option>\n        <option value=\"KY\" class=\"state\">Kentucky</option>\n        <option value=\"LA\" class=\"state\">Louisiana</option>\n        <option value=\"MA\" class=\"state\">Massachusetts</option>\n\n        <option value=\"MD\" class=\"state\">Maryland</option>\n        <option value=\"ME\" class=\"state\">Maine</option>\n        <option value=\"MI\" class=\"state\">Michigan</option>\n        <option value=\"MN\" class=\"state\">Minnesota</option>\n        <option value=\"MO\" class=\"state\">Missouri</option>\n        <option value=\"MS\" class=\"state\">Mississippi</option>\n\n        <option value=\"MT\" class=\"state\">Montana</option>\n        <option value=\"NC\" class=\"state\">North Carolina</option>\n        <option value=\"ND\" class=\"state\">North Dakota</option>\n        <option value=\"NE\" class=\"state\">Nebraska</option>\n        <option value=\"NH\" class=\"state\">New Hampshire</option>\n        <option value=\"NJ\" class=\"state\">New Jersey</option>\n\n        <option value=\"NM\" class=\"state\">New Mexico</option>\n        <option value=\"NV\" class=\"state\">Nevada</option>\n        <option value=\"NY\" class=\"state\">New York</option>\n        <option value=\"OH\" class=\"state\">Ohio</option>\n        <option value=\"OK\" class=\"state\">Oklahoma</option>\n        <option value=\"OR\" class=\"state\">Oregon</option>\n\n        <option value=\"PA\" class=\"state\">Pennsylvania</option>\n        <option value=\"PR\" class=\"state\">Puerto Rico</option>\n        <option value=\"RI\" class=\"state\">Rhode Island</option>\n        <option value=\"SC\" class=\"state\">South Carolina</option>\n        <option value=\"SD\" class=\"state\">South Dakota</option>\n        <option value=\"TN\" class=\"state\">Tennessee</option>\n\n        <option value=\"TX\" class=\"state\">Texas</option>\n        <option value=\"UT\" class=\"state\">Utah</option>\n        <option value=\"VA\" class=\"state\">Virginia</option>\n        <option value=\"VT\" class=\"state\">Vermont</option>\n        <option value=\"WA\" class=\"state\">Washington</option>\n        <option value=\"WI\" class=\"state\">Wisconsin</option>\n\n        <option value=\"WV\" class=\"state\">West Virginia</option>\n        <option value=\"WY\" class=\"state\">Wyoming</option>\n</select>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/tabs.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../demo/css/screen.css\" />\n<link rel=\"stylesheet\" href=\"../../../themes/flora/flora.all.css\" type=\"text/css\" media=\"screen\" title=\"Flora (Default)\">\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../../ui/current/ui.tabs.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\" src=\"../lib/jquery.metadata.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.validate.js\"></script>\n<script src=\"firebug/firebug.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\n$().ready(function() {\n\t$(\"#commentForm\").validate({debug:true});\n\t$(\"#example > ul\").tabs();\n});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 470px; }\n</style>\n\n</head>\n<body>\n\n\t<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\n\t\t<div id=\"example\" class=\"flora\">\n\t        <ul>\n\n\t            <li><a href=\"#fragment-1\"><span>One</span></a></li>\n\t            <li><a href=\"#fragment-2\"><span>Two</span></a></li>\n\t            <li><a href=\"#fragment-3\"><span>Three</span></a></li>\n\t        </ul>\n\t        <div id=\"fragment-1\">\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t\t\t\t\t<input id=\"cname\" name=\"name\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t\t\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true,email:true}\" />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t\t\t\t\t<input id=\"curl\" name=\"url\" class=\"{url:true}\" value=\"\" />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t\t\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"{required:true}\"></textarea>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</fieldset>\n\n\t        </div>\n\t        <div id=\"fragment-2\">\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t        </div>\n\t        <div id=\"fragment-3\">\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t        </div>\n\t    </div>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\n\t</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/jquery-validation/test/test.js",
    "content": "window.sessionStorage && sessionStorage.clear();\njQuery.validator.defaults.debug = true;\n$.mockjaxSettings.log = $.noop;\n\n$.mockjax({\n\turl: \"form.php?user=Peter&password=foobar\",\n\tresponseText: 'Hi Peter, welcome back.',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"users.php\",\n\tdata: { username: /Peter2?|asdf/},\n\tresponseText: 'false',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"users2.php\",\n\tdata: { username: \"asdf\"},\n\tresponseText: '\"asdf is already taken, please try something else\"',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"echo.php\",\n\tresponse: function(data) {\n\t\tthis.responseText = JSON.stringify(data.data);\n\t},\n\tresponseTime: 100\n});\n\nmodule(\"validator\");\n\ntest(\"Constructor\", function() {\n\tvar v1 = $(\"#testForm1\").validate();\n\tvar v2 = $(\"#testForm1\").validate();\n\tequal( v1, v2, \"Calling validate() multiple times must return the same validator instance\" );\n\tequal( v1.elements().length, 3, \"validator elements\" );\n});\n\ntest(\"validate() without elements, with non-form elements\", 0, function() {\n\t$(\"#doesn'texist\").validate();\n});\n\ntest(\"valid() plugin method\", function() {\n\tvar form = $(\"#userForm\");\n\tform.validate();\n\tok ( !form.valid(), \"Form isn't valid yet\" );\n\tvar input = $(\"#username\");\n\tok ( !input.valid(), \"Input isn't valid either\" );\n\tinput.val(\"Hello world\");\n\tok ( form.valid(), \"Form is now valid\" );\n\tok ( input.valid(), \"Input is valid, too\" );\n});\n\ntest(\"valid() plugin method\", function() {\n\tvar form = $(\"#testForm1\");\n\tform.validate();\n\tvar inputs = form.find(\"input\");\n\tok( !inputs.valid(), \"all invalid\" );\n\tinputs.not(\":first\").val(\"ok\");\n\tok( !inputs.valid(), \"just one invalid\" );\n\tinputs.val(\"ok\");\n\tok( inputs.valid(), \"all valid\" );\n});\n\ntest(\"valid() plugin method, special handling for checkable groups\", function() {\n\t// rule is defined on first checkbox, must apply to others, too\n\tvar checkable = $(\"#checkable2\");\n\tok( !checkable.valid(), \"must be invalid, not checked yet\" );\n\tcheckable.attr(\"checked\", true);\n\tok( checkable.valid(), \"valid, is now checked\" );\n\tcheckable.attr(\"checked\", false);\n\tok( !checkable.valid(), \"invalid again\" );\n\t$(\"#checkable3\").attr(\"checked\", true);\n\tok( checkable.valid(), \"valid, third box is checked\" );\n});\n\ntest(\"addMethod\", function() {\n\texpect( 3 );\n\t$.validator.addMethod(\"hi\", function(value) {\n\t\treturn value == \"hi\";\n\t}, \"hi me too\");\n\tvar method = $.validator.methods.hi,\n\t\te = $('#text1')[0];\n\tok( !method(e.value, e), \"Invalid\" );\n\te.value = \"hi\";\n\tok( method(e.value, e), \"Invalid\" );\n\tok( jQuery.validator.messages.hi == \"hi me too\", \"Check custom message\" );\n});\n\ntest(\"addMethod2\", function() {\n\texpect( 4 );\n\t$.validator.addMethod(\"complicatedPassword\", function(value, element, param) {\n\t\treturn this.optional(element) || /\\D/.test(value) && /\\d/.test(value)\n\t}, \"Your password must contain at least one number and one letter\");\n\tvar v = jQuery(\"#form\").validate({\n\t\trules: {\n\t\t\taction: { complicatedPassword: true }\n\t\t}\n\t});\n\tvar rule = $.validator.methods.complicatedPassword,\n\t\te = $('#text1')[0];\n\te.value = \"\";\n\tstrictEqual( v.element(e), true, \"Rule is optional, valid\" );\n\tequal( 0, v.size() );\n\te.value = \"ko\";\n\tok( !v.element(e), \"Invalid, doesn't contain one of the required characters\" );\n\te.value = \"ko1\";\n\tok( v.element(e) );\n});\n\ntest(\"form(): simple\", function() {\n\texpect( 2 );\n\tvar form = $('#testForm1')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#firstname').val(\"hi\");\n\t$('#lastname').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): checkboxes: min/required\", function() {\n\texpect( 3 );\n\tvar form = $('#testForm6')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#form6check1').attr(\"checked\", true);\n\tok( !v.form(), 'Invalid form' );\n\t$('#form6check2').attr(\"checked\", true);\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): radio buttons: required\", function () {\n\texpect( 6 );\n\tvar form = $('#testForm10')[0];\n\n\tvar v = $(form).validate({ rules: { testForm10Radio: \"required\"} });\n\tok(!v.form(), 'Invalid Form');\n\tequal($('#testForm10Radio1').attr('class'), 'error');\n\tequal($('#testForm10Radio2').attr('class'), 'error');\n\n\t$('#testForm10Radio2').attr(\"checked\", true);\n\tok(v.form(), 'Valid form');\n\n\tequal($('#testForm10Radio1').attr('class'), 'valid');\n\tequal($('#testForm10Radio2').attr('class'), 'valid');\n});\n\ntest(\"form(): selects: min/required\", function() {\n\texpect( 3 );\n\tvar form = $('#testForm7')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$(\"#optionxa\").attr(\"selected\", true);\n\tok( !v.form(), 'Invalid form' );\n\t$(\"#optionxb\").attr(\"selected\", true);\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): with equalTo\", function() {\n\texpect( 2 );\n\tvar form = $('#testForm5')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#x1, #x2').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): with equalTo and onfocusout=false\", function() {\n\texpect( 4 );\n\tvar form = $('#testForm5')[0];\n\tvar v = $(form).validate({\n\t\tonfocusout: false,\n\t\tshowErrors: function() {\n\t\t\tok(true, 'showErrors should only be called twice');\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\t$('#x1, #x2').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n\t$('#x2').val('not equal').blur();\n\tok( !v.form(), 'Invalid form' );\n});\n\n\ntest(\"check(): simple\", function() {\n\texpect( 3 );\n\tvar element = $('#firstname')[0];\n\tvar v = $('#testForm1').validate();\n\tok( v.size() == 0, 'No errors yet' );\n\tv.check(element);\n\tok( v.size() == 1, 'error exists' );\n\tv.errorList = [];\n\t$('#firstname').val(\"hi\");\n\tv.check(element);\n\tok( !v.size() == 1, 'No more errors' );\n});\n\ntest(\"hide(): input\", function() {\n\texpect( 3 );\n\tvar errorLabel = $('#errorFirstname');\n\tvar element = $('#firstname')[0];\n\telement.value =\"bla\";\n\tvar v = $('#testForm1').validate();\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible before validation\" );\n\tok( v.element(element) );\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after validation\" );\n});\n\ntest(\"hide(): radio\", function() {\n\texpect( 2 );\n\tvar errorLabel = $('#agreeLabel');\n\tvar element = $('#agb')[0];\n\telement.checked = true;\n\tvar v = $('#testForm2').validate({ errorClass: \"xerror\" });\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\tv.element(element);\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"hide(): errorWrapper\", function() {\n\texpect(2);\n\tvar errorLabel = $('#errorWrapper');\n\tvar element = $('#meal')[0];\n\telement.selectedIndex = 1;\n\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\tvar v = $('#testForm3').validate({ wrapper: \"li\", errorLabelContainer: $(\"#errorContainer\") });\n\tv.element(element);\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"hide(): container\", function() {\n\texpect(4);\n\tvar errorLabel = $('#errorContainer');\n\tvar element = $('#testForm3')[0];\n\tvar v = $('#testForm3').validate({ errorWrapper: \"li\", errorContainer: $(\"#errorContainer\") });\n\tv.form();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\t$('#meal')[0].selectedIndex = 1;\n\tv.form();\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n\t$('#meal')[0].selectedIndex = -1;\n\tv.element(\"#meal\");\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\t$('#meal')[0].selectedIndex = 1;\n\tv.element(\"#meal\");\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"valid()\", function() {\n\texpect(4);\n\tvar errorList = [{name:\"meal\",message:\"foo\", element:$(\"#meal\")[0]}];\n\tvar v = $('#testForm3').validate();\n\tok( v.valid(), \"No errors, must be valid\" );\n\tv.errorList = errorList;\n\tok( !v.valid(), \"One error, must be invalid\" );\n\tQUnit.reset();\n\tv = $('#testForm3').validate({ submitHandler: function() {\n\t\tok( false, \"Submit handler was called\" );\n\t}});\n\tok( v.valid(), \"No errors, must be valid and returning true, even with the submit handler\" );\n\tv.errorList = errorList;\n\tok( !v.valid(), \"One error, must be invalid, no call to submit handler\" );\n});\n\ntest(\"submitHandler keeps submitting button\", function() {\n\t$(\"#userForm\").validate({\n\t\tdebug: true,\n\t\tsubmitHandler: function(form) {\n\t\t\t// dunno how to test this better; this tests the implementation that uses a hidden input\n\t\t\tvar hidden = $(form).find(\"input:hidden\")[0];\n\t\t\tdeepEqual(hidden.value, button.value)\n\t\t\tdeepEqual(hidden.name, button.name)\n\t\t}\n\t});\n\t$(\"#username\").val(\"bla\");\n\tvar button = $(\"#userForm :submit\")[0]\n  var event = $.Event(\"click\");\n  event.preventDefault();\n  $.event.trigger(event, null, button);\n\t$(\"#userForm\").submit();\n});\n\ntest(\"showErrors()\", function() {\n\texpect( 4 );\n\tvar errorLabel = $('#errorFirstname').hide();\n\tvar element = $('#firstname')[0];\n\tvar v = $('#testForm1').validate();\n\tok( errorLabel.is(\":hidden\") );\n\tequal( 0, $(\"label.error[for=lastname]\").size() );\n\tv.showErrors({\"firstname\": \"required\", \"lastname\": \"bla\"});\n\tequal( true, errorLabel.is(\":visible\") );\n\tequal( true, $(\"label.error[for=lastname]\").is(\":visible\") );\n});\n\ntest(\"showErrors(), allow empty string and null as default message\", function() {\n\t$(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 3\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"\",\n\t\t\t\tminlength: \"too short\"\n\t\t\t}\n\t\t}\n\t});\n\tok( !$(\"#username\").valid() );\n\tequal( \"\", $(\"label.error[for=username]\").text() );\n\n\t$(\"#username\").val(\"ab\");\n\tok( !$(\"#username\").valid() );\n\tequal( \"too short\", $(\"label.error[for=username]\").text() );\n\n\t$(\"#username\").val(\"abc\");\n\tok( $(\"#username\").valid() );\n\tok( $(\"label.error[for=username]\").is(\":hidden\") );\n});\n\ntest(\"showErrors() - external messages\", function() {\n\texpect( 4 );\n\tvar methods = $.extend({}, $.validator.methods);\n\tvar messages = $.extend({}, $.validator.messages);\n\t$.validator.addMethod(\"foo\", function() { return false; });\n\t$.validator.addMethod(\"bar\", function() { return false; });\n\tequal( 0, $(\"#testForm4 label.error[for=f1]\").size() );\n\tequal( 0, $(\"#testForm4 label.error[for=f2]\").size() );\n\tvar form = $('#testForm4')[0];\n\tvar v = $(form).validate({\n\t\tmessages: {\n\t\t\tf1: \"Please!\",\n\t\t\tf2: \"Wohoo!\"\n\t\t}\n\t});\n\tv.form();\n\tequal( $(\"#testForm4 label.error[for=f1]\").text(), \"Please!\" );\n\tequal( $(\"#testForm4 label.error[for=f2]\").text(), \"Wohoo!\" );\n\n\t$.validator.methods = methods;\n\t$.validator.messages = messages;\n});\n\ntest(\"showErrors() - custom handler\", function() {\n\texpect(5);\n\tvar v = $('#testForm1').validate({\n\t\tshowErrors: function(errorMap, errorList) {\n\t\t\tequal( v, this );\n\t\t\tequal( v.errorList, errorList );\n\t\t\tequal( v.errorMap, errorMap );\n\t\t\tequal( \"buga\", errorMap.firstname );\n\t\t\tequal( \"buga\", errorMap.lastname );\n\t\t}\n\t});\n\tv.form();\n});\n\ntest(\"option: (un)highlight, default\", function() {\n\t$(\"#testForm1\").validate();\n\tvar e = $(\"#firstname\")\n\tok( !e.hasClass(\"error\") );\n\tok( !e.hasClass(\"valid\") );\n\te.valid()\n\tok( e.hasClass(\"error\") );\n\tok( !e.hasClass(\"valid\") );\n\te.val(\"hithere\").valid()\n\tok( !e.hasClass(\"error\") );\n\tok( e.hasClass(\"valid\") );\n});\n\ntest(\"option: (un)highlight, nothing\", function() {\n\texpect(3);\n\t$(\"#testForm1\").validate({\n\t\thighlight: false,\n\t\tunhighlight: false\n\t});\n\tvar e = $(\"#firstname\")\n\tok( !e.hasClass(\"error\") );\n\te.valid()\n\tok( !e.hasClass(\"error\") );\n\te.valid()\n\tok( !e.hasClass(\"error\") );\n});\n\ntest(\"option: (un)highlight, custom\", function() {\n\texpect(5);\n\t$(\"#testForm1clean\").validate({\n\t\thighlight: function(element, errorClass) {\n\t\t\tequal( \"invalid\", errorClass );\n\t\t\t$(element).hide();\n\t\t},\n\t\tunhighlight: function(element, errorClass) {\n\t\t\tequal( \"invalid\", errorClass )\n\t\t\t$(element).show();\n\t\t},\n\t\terrorClass: \"invalid\",\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\tvar e = $(\"#firstnamec\")\n\tok( e.is(\":visible\") );\n\te.valid()\n\tok( !e.is(\":visible\") );\n\te.val(\"hithere\").valid()\n\tok( e.is(\":visible\") );\n});\n\ntest(\"option: (un)highlight, custom2\", function() {\n\texpect(6);\n\t$(\"#testForm1\").validate({\n\t\thighlight: function(element, errorClass) {\n\t\t\t$(element).addClass(errorClass);\n\t\t\t$(element.form).find(\"label[for=\" + element.id + \"]\").addClass(errorClass);\n\t\t},\n\t\tunhighlight: function(element, errorClass) {\n\t\t\t$(element).removeClass(errorClass);\n\t\t\t$(element.form).find(\"label[for=\" + element.id + \"]\").removeClass(errorClass);\n\t\t},\n\t\terrorClass: \"invalid\"\n\t});\n\tvar e = $(\"#firstname\")\n\tvar l = $(\"#errorFirstname\")\n\tok( !e.is(\".invalid\") );\n\tok( !l.is(\".invalid\") );\n\te.valid()\n\tok( e.is(\".invalid\") );\n\tok( l.is(\".invalid\") );\n\te.val(\"hithere\").valid()\n\tok( !e.is(\".invalid\") );\n\tok( !l.is(\".invalid\") );\n});\n\ntest(\"option: focusCleanup default false\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate();\n\tform.valid();\n\tok( form.is(\":has(label.error[for=username]:visible)\"));\n\t$(\"#username\").focus();\n\tok( form.is(\":has(label.error[for=username]:visible)\"));\n});\n\ntest(\"option: focusCleanup true\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true\n\t});\n\tform.valid();\n\tok( form.is(\":has(label.error[for=username]:visible)\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(label.error[for=username]:visible)\") );\n});\n\ntest(\"option: focusCleanup with wrapper\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true,\n\t\twrapper: \"span\"\n\t});\n\tform.valid();\n\tok( form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(span:visible:has(label.error[for=username]))\") );\n});\n\ntest(\"option: errorClass with multiple classes\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true,\n\t\twrapper: \"span\",\n\t\terrorClass: \"error error1\"\n\t});\n\tform.valid();\n\tok( form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\tok( form.is(\":has(span:visible:has(label.error1[for=username]))\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\tok( !form.is(\":has(span:visible:has(label.error1[for=username]))\") );\n});\n\ntest(\"elements() order\", function() {\n\tvar container = $(\"#orderContainer\");\n\tvar v = $(\"#elementsOrder\").validate({\n\t\terrorLabelContainer: container,\n\t\twrap: \"li\"\n\t});\n\tdeepEqual( v.elements().map(function() {\n\t\treturn $(this).attr(\"id\");\n\t}).get(), [\"order1\", \"order2\", \"order3\", \"order4\", \"order5\", \"order6\"], \"elements must be in document order\" );\n\tv.form();\n\tdeepEqual( container.children().map(function() {\n\t\treturn $(this).attr(\"for\");\n\t}).get(), [\"order1\", \"order2\", \"order3\", \"order4\", \"order5\", \"order6\"], \"labels in error container must be in document order\" );\n});\n\ntest(\"defaultMessage(), empty title is ignored\", function() {\n\tvar v = $(\"#userForm\").validate();\n\tequal( \"This field is required.\", v.defaultMessage($(\"#username\")[0], \"required\") );\n});\n\ntest(\"formatAndAdd\", function() {\n\texpect(4);\n\tvar v = $(\"#form\").validate();\n\tvar fakeElement = { form: $(\"#form\")[0], name: \"bar\" };\n\tv.formatAndAdd(fakeElement, {method: \"maxlength\", parameters: 2})\n\tequal( \"Please enter no more than 2 characters.\", v.errorList[0].message );\n\tequal( \"bar\", v.errorList[0].element.name );\n\n\tv.formatAndAdd(fakeElement, {method: \"range\", parameters:[2,4]})\n\tequal( \"Please enter a value between 2 and 4.\", v.errorList[1].message );\n\n\tv.formatAndAdd(fakeElement, {method: \"range\", parameters:[0,4]})\n\tequal( \"Please enter a value between 0 and 4.\", v.errorList[2].message );\n});\n\ntest(\"formatAndAdd2\", function() {\n\texpect(3);\n\tvar v = $(\"#form\").validate();\n\tvar fakeElement = { form: $(\"#form\")[0], name: \"bar\" };\n\tjQuery.validator.messages.test1 = function(param, element) {\n\t\tequal( v, this );\n\t\tequal( 0, param );\n\t\treturn \"element \" + element.name + \" is not valid\";\n\t};\n\tv.formatAndAdd(fakeElement, {method: \"test1\", parameters: 0})\n\tequal( \"element bar is not valid\", v.errorList[0].message );\n});\n\ntest(\"formatAndAdd, auto detect substitution string\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\trequired: true,\n\t\t\t\trangelength: [5, 10]\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: {\n\t\t\t\trangelength: \"at least ${0}, up to {1}\"\n\t\t\t}\n\t\t}\n\t});\n\t$(\"#firstnamec\").val(\"abc\");\n\tv.form();\n\tequal( \"at least 5, up to 10\", v.errorList[0].message );\n})\n\ntest(\"error containers, simple\", function() {\n\texpect(14);\n\tvar container = $(\"#simplecontainer\");\n\tvar v = $(\"#form\").validate({\n\t\terrorLabelContainer: container,\n\t\tshowErrors: function() {\n\t\t\tcontainer.find(\"h3\").html( jQuery.validator.format(\"There are {0} errors in your form.\", this.size()) );\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\n\tv.prepareForm();\n\tok( v.valid(), \"form is valid\" );\n\tequal( 0, container.find(\"label\").length, \"There should be no error labels\" );\n\tequal( \"\", container.find(\"h3\").html() );\n\n\tv.prepareForm();\n\tv.errorList = [{message:\"bar\", element: {name:\"foo\"}}, {message: \"necessary\", element: {name:\"required\"}}];\n\tok( !v.valid(), \"form is not valid after adding errors manually\" );\n\tv.showErrors();\n\tequal( container.find(\"label\").length, 2, \"There should be two error labels\" );\n\tok( container.is(\":visible\"), \"Check that the container is visible\" );\n\tcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":visible\"), \"Check that each label is visible\" );\n\t});\n\tequal( \"There are 2 errors in your form.\", container.find(\"h3\").html() );\n\n\tv.prepareForm();\n\tok( v.valid(), \"form is valid after a reset\" );\n\tv.showErrors();\n\tequal( container.find(\"label\").length, 2, \"There should still be two error labels\" );\n\tok( container.is(\":hidden\"), \"Check that the container is hidden\" );\n\tcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":hidden\"), \"Check that each label is hidden\" );\n\t});\n});\n\ntest(\"error containers, with labelcontainer I\", function() {\n\texpect(16);\n\tvar container = $(\"#container\"),\n\t\tlabelcontainer = $(\"#labelcontainer\");\n\tvar v = $(\"#form\").validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: labelcontainer,\n\t\twrapper: \"li\"\n\t});\n\n\tok( v.valid(), \"form is valid\" );\n\tequal( 0, container.find(\"label\").length, \"There should be no error labels in the container\" );\n\tequal( 0, labelcontainer.find(\"label\").length, \"There should be no error labels in the labelcontainer\" );\n\tequal( 0, labelcontainer.find(\"li\").length, \"There should be no lis labels in the labelcontainer\" );\n\n\tv.errorList = [{message:\"bar\", element: {name:\"foo\"}}, {name: \"required\", message: \"necessary\", element: {name:\"required\"}}];\n\tok( !v.valid(), \"form is not valid after adding errors manually\" );\n\tv.showErrors();\n\tequal( 0, container.find(\"label\").length, \"There should be no error label in the container\" );\n\tequal( 2, labelcontainer.find(\"label\").length, \"There should be two error labels in the labelcontainer\" );\n\tequal( 2, labelcontainer.find(\"li\").length, \"There should be two error lis in the labelcontainer\" );\n\tok( container.is(\":visible\"), \"Check that the container is visible\" );\n\tok( labelcontainer.is(\":visible\"), \"Check that the labelcontainer is visible\" );\n\tvar labels = labelcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":visible\"), \"Check that each label is visible1\" );\n\t\tequal( \"li\", $(this).parent()[0].tagName.toLowerCase(), \"Check that each label is wrapped in an li\" );\n\t\tok( $(this).parent(\"li\").is(\":visible\"), \"Check that each parent li is visible\" );\n\t});\n});\n\ntest(\"errorcontainer, show/hide only on submit\", function() {\n\texpect(14);\n\tvar container = $(\"#container\");\n\tvar labelContainer = $(\"#labelcontainer\");\n\tvar v = $(\"#testForm1\").bind(\"invalid-form.validate\", function() {\n\t\tok( true, \"invalid-form event triggered called\" );\n\t}).validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: labelContainer,\n\t\tshowErrors: function() {\n\t\t\tcontainer.html( jQuery.validator.format(\"There are {0} errors in your form.\", this.numberOfInvalids()) );\n\t\t\tok( true, \"showErrors called\" );\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\tequal( \"\", container.html(), \"must be empty\" );\n\tequal( \"\", labelContainer.html(), \"must be empty\" );\n\t// validate whole form, both showErrors and invalidHandler must be called once\n\t// preferably invalidHandler first, showErrors second\n\tok( !v.form(), \"invalid form\" );\n\tequal( 2, labelContainer.find(\"label\").length );\n\tequal( \"There are 2 errors in your form.\", container.html() );\n\tok( labelContainer.is(\":visible\"), \"must be visible\" );\n\tok( container.is(\":visible\"), \"must be visible\" );\n\n\t$(\"#firstname\").val(\"hix\").keyup();\n\t$(\"#testForm1\").triggerHandler(\"keyup\", [jQuery.event.fix({ type: \"keyup\", target: $(\"#firstname\")[0] })]);\n\tequal( 1, labelContainer.find(\"label:visible\").length );\n\tequal( \"There are 1 errors in your form.\", container.html() );\n\n\t$(\"#lastname\").val(\"abc\");\n\tok( v.form(), \"Form now valid, trigger showErrors but not invalid-form\" );\n});\n\ntest(\"option invalidHandler\", function() {\n\texpect(1);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\tinvalidHandler: function() {\n\t\t\tok( true, \"invalid-form event triggered called\" );\n\t\t\tstart();\n\t\t}\n\t});\n\t$(\"#usernamec\").val(\"asdf\").rules(\"add\", { required: true, minlength: 5 });\n\tstop();\n\t$(\"#testForm1clean\").submit();\n});\n\ntest(\"findByName()\", function() {\n\tdeepEqual( new $.validator({}, document.getElementById(\"form\")).findByName(document.getElementById(\"radio1\").name).get(), $(\"#form\").find(\"[name=radio1]\").get() );\n});\n\ntest(\"focusInvalid()\", function() {\n\t// TODO when using custom focusin, this is triggered just once\n\t// TODO when using 1.4 focusin, triggered twice; fix once not testing against 1.3 anymore\n\t// expect(1);\n\tvar inputs = $(\"#testForm1 input\").focus(function() {\n\t\tequal( inputs[0], this, \"focused first element\" );\n\t});\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\tv.focusInvalid();\n});\n\ntest(\"findLastActive()\", function() {\n\texpect(3);\n\tvar v = $(\"#testForm1\").validate();\n\tok( !v.findLastActive() );\n\tv.form();\n\tv.focusInvalid();\n\tequal( v.findLastActive(), $(\"#firstname\")[0] );\n\tvar lastActive = $(\"#lastname\").trigger(\"focus\").trigger(\"focusin\")[0];\n\tequal( v.lastActive, lastActive );\n});\n\ntest(\"validating multiple checkboxes with 'required'\", function() {\n\texpect(3);\n\tvar checkboxes = $(\"#form input[name=check3]\").attr(\"checked\", false);\n\tequal(checkboxes.size(), 5);\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck3: \"required\"\n\t\t}\n\t});\n\tv.form();\n\tequal(v.size(), 1);\n\tcheckboxes.filter(\":last\").attr(\"checked\", true);\n\tv.form();\n\tequal(v.size(), 0);\n});\n\ntest(\"dynamic form\", function() {\n\tvar counter = 0;\n\tfunction add() {\n\t\t$(\"<input class='{required:true}' name='list\" + counter++ + \"' />\").appendTo(\"#testForm2\");\n\t}\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm2\").validate();\n\tv.form();\n\terrors(1);\n\tadd();\n\tv.form();\n\terrors(2);\n\tadd();\n\tv.form();\n\terrors(3);\n\t$(\"#testForm2 input[name=list1]\").remove();\n\tv.form();\n\terrors(2);\n\tadd();\n\tv.form();\n\terrors(3);\n\t$(\"#testForm2 input[name^=list]\").remove();\n\tv.form();\n\terrors(1);\n\t$(\"#agb\").attr(\"disabled\", true);\n\tv.form();\n\terrors(0);\n\t$(\"#agb\").attr(\"disabled\", false);\n\tv.form();\n\terrors(1);\n});\n\ntest(\"idOrName()\", function() {\n\texpect(4);\n\tvar v = $(\"#testForm1\").validate();\n\tequal( \"form8input\", v.idOrName( $(\"#form8input\")[0] ) );\n\tequal( \"check\", v.idOrName( $(\"#form6check1\")[0] ) );\n\tequal( \"agree\", v.idOrName( $(\"#agb\")[0] ) );\n\tequal( \"button\", v.idOrName( $(\"#form :button\")[0] ) );\n});\n\ntest(\"resetForm()\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\terrors(2);\n\t$(\"#firstname\").val(\"hiy\");\n\tv.resetForm();\n\terrors(0);\n\tequal(\"\", $(\"#firstname\").val(), \"form plugin is included, therefor resetForm must also reset inputs, not only errors\");\n});\n\ntest(\"message from title\", function() {\n\tvar v = $(\"#withTitle\").validate();\n    v.checkForm();\n\tequal(v.errorList[0].message, \"fromtitle\", \"title not used\");\n});\n\ntest(\"ignoreTitle\", function() {\n\tvar v = $(\"#withTitle\").validate({ignoreTitle:true});\n    v.checkForm();\n\tequal(v.errorList[0].message, $.validator.messages[\"required\"], \"title used when it should have been ignored\");\n});\n\ntest(\"ajaxSubmit\", function() {\n\texpect(1);\n\tstop();\n\t$(\"#user\").val(\"Peter\");\n\t$(\"#password\").val(\"foobar\");\n\tjQuery(\"#signupForm\").validate({\n\t\tsubmitHandler: function(form) {\n\t\t\tjQuery(form).ajaxSubmit({\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tequal(\"Hi Peter, welcome back.\", response);\n\t\t\t\t\tstart();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\tjQuery(\"#signupForm\").triggerHandler(\"submit\");\n});\n\n\nmodule(\"misc\");\n\ntest(\"success option\", function() {\n\texpect(7);\n\tequal( \"\", $(\"#firstname\").val() );\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tvar label = $(\"#testForm1 label\");\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( label.is(\".valid\") );\n});\n\ntest(\"success option2\", function() {\n\texpect(5);\n\tequal( \"\", $(\"#firstname\").val() );\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tvar label = $(\"#testForm1 label\");\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( label.is(\".valid\") );\n});\n\ntest(\"success option3\", function() {\n\texpect(5);\n\tequal( \"\", $(\"#firstname\").val() );\n\t$(\"#errorFirstname\").remove();\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tvar labels = $(\"#testForm1 label\");\n\tequal( 3, labels.size() );\n\tok( labels.eq(0).is(\".valid\") );\n\tok( !labels.eq(1).is(\".valid\") );\n});\n\ntest(\"successlist\", function() {\n\tvar v = $(\"#form\").validate({ success: \"xyz\" });\n\tv.form();\n\tequal(0, v.successList.length);\n});\n\ntest(\"success isn't called for optional elements\", function() {\n\texpect(4);\n\tequal( \"\", $(\"#firstname\").removeClass().val() );\n\t$(\"#something\").remove();\n\t$(\"#lastname\").remove();\n\t$(\"#errorFirstname\").remove();\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: function() {\n\t\t\tok( false, \"don't call success for optional elements!\" );\n\t\t},\n\t\trules: {\n\t\t\tfirstname: \"email\"\n\t\t}\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\tv.form();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").valid();\n\tequal( 0, $(\"#testForm1 label\").size() );\n});\n\ntest(\"success callback with element\", function() {\n\texpect(1);\n\tvar v = $(\"#userForm\").validate({\n\t\tsuccess: function( label, element ) {\n\t\t\tequal( element, $('#username').get(0) );\n\t\t}\n\t});\n\t$(\"#username\").val(\"hi\");\n\tv.form();\n});\n\ntest(\"all rules are evaluated even if one returns a dependency-mistmatch\", function() {\n\texpect(6);\n\tequal( \"\", $(\"#firstname\").removeClass().val() );\n\t$(\"#lastname\").remove();\n\t$(\"#errorFirstname\").remove();\n\t$.validator.addMethod(\"custom1\", function() {\n\t\tok( true, \"custom method must be evaluated\" );\n\t\treturn true;\n\t}, \"\");\n\tvar v = $(\"#testForm1\").validate({\n\t\trules: {\n\t\t\tfirstname: {email:true, custom1: true}\n\t\t}\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\tv.form();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").valid();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\n\tdelete $.validator.methods.custom1;\n\tdelete $.validator.messages.custom1;\n});\n\ntest(\"messages\", function() {\n\tvar m = jQuery.validator.messages;\n\tequal( \"Please enter no more than 0 characters.\", m.maxlength(0) );\n\tequal( \"Please enter at least 1 characters.\", m.minlength(1) );\n\tequal( \"Please enter a value between 1 and 2 characters long.\", m.rangelength([1, 2]) );\n\tequal( \"Please enter a value less than or equal to 1.\", m.max(1) );\n\tequal( \"Please enter a value greater than or equal to 0.\", m.min(0) );\n\tequal( \"Please enter a value between 1 and 2.\", m.range([1, 2]) );\n});\n\ntest(\"jQuery.validator.format\", function() {\n\tequal( \"Please enter a value between 0 and 1.\", jQuery.validator.format(\"Please enter a value between {0} and {1}.\", 0, 1) );\n\tequal( \"0 is too fast! Enter a value smaller then 0 and at least -15\", jQuery.validator.format(\"{0} is too fast! Enter a value smaller then {0} and at least {1}\", 0, -15) );\n\tvar template = jQuery.validator.format(\"{0} is too fast! Enter a value smaller then {0} and at least {1}\");\n\tequal( \"0 is too fast! Enter a value smaller then 0 and at least -15\", template(0, -15) );\n\ttemplate = jQuery.validator.format(\"Please enter a value between {0} and {1}.\");\n\tequal( \"Please enter a value between 1 and 2.\", template([1, 2]) );\n});\n\ntest(\"option: ignore\", function() {\n\tvar v = $(\"#testForm1\").validate({\n\t\tignore: \"[name=lastname]\"\n\t});\n\tv.form();\n\tequal( 1, v.size() );\n});\n\ntest(\"option: subformRequired\", function() {\n\tjQuery.validator.addMethod(\"billingRequired\", function(value, element) {\n\t\tif ($(\"#bill_to_co\").is(\":checked\"))\n\t\t\treturn $(element).parents(\"#subform\").length;\n\t\treturn !this.optional(element);\n\t}, \"\");\n\tvar v = $(\"#subformRequired\").validate();\n\tv.form();\n\tequal( 1, v.size() );\n\t$(\"#bill_to_co\").attr(\"checked\", false);\n\tv.form();\n\tequal( 2, v.size() );\n\n\tdelete $.validator.methods.billingRequired;\n\tdelete $.validator.messages.billingRequired;\n});\n\nmodule(\"expressions\");\n\ntest(\"expression: :blank\", function() {\n\tvar e = $(\"#lastname\")[0];\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value = \" \";\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value = \"   \"\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value= \" a \";\n\tequal( 0, $(e).filter(\":blank\").length );\n});\n\ntest(\"expression: :filled\", function() {\n\tvar e = $(\"#lastname\")[0];\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value = \" \";\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value = \"   \"\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value= \" a \";\n\tequal( 1, $(e).filter(\":filled\").length );\n});\n\ntest(\"expression: :unchecked\", function() {\n\tvar e = $(\"#check2\")[0];\n\tequal( 1, $(e).filter(\":unchecked\").length );\n\te.checked = true;\n\tequal( 0, $(e).filter(\":unchecked\").length );\n\te.checked = false;\n\tequal( 1, $(e).filter(\":unchecked\").length );\n});\n\nmodule(\"events\");\n\ntest(\"validate on blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(v.size(), expected, message );\n\t}\n\tfunction labels(expected) {\n\t\tequal(v.errors().filter(\":visible\").size(), expected);\n\t}\n\tfunction blur(target) {\n\t\ttarget.trigger(\"blur\").trigger(\"focusout\");\n\t}\n\t$(\"#errorFirstname\").hide();\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\t$(\"#something\").val(\"\");\n\tblur(e);\n\terrors(0, \"No value yet, required is skipped on blur\");\n\tlabels(0);\n\te.val(\"h\");\n\tblur(e);\n\terrors(1, \"Required was ignored, but as something was entered, check other rules, minlength isn't met\");\n\tlabels(1);\n\te.val(\"hh\");\n\tblur(e);\n\terrors(0, \"All is fine\");\n\tlabels(0);\n\te.val(\"\");\n\tv.form();\n\terrors(3, \"Submit checks all rules, both fields invalid\");\n\tlabels(3);\n\tblur(e);\n\terrors(1, \"Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error\" );\n\tlabels(3);\n\te.val(\"h\");\n\tblur(e);\n\terrors(1, \"Entering a single character fulfills required, but not minlength: 2, still invalid\");\n\tlabels(3);\n\te.val(\"hh\");\n\tblur(e);\n\terrors(0, \"Both required and minlength are met, no errors left\");\n\tlabels(2);\n});\n\ntest(\"validate on keyup\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction keyup(target) {\n\t\ttarget.trigger(\"keyup\");\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\tkeyup(e);\n\terrors(0, \"No value, no errors\");\n\te.val(\"a\");\n\tkeyup(e);\n\terrors(0, \"Value, but not invalid\");\n\te.val(\"\");\n\tv.form();\n\terrors(2, \"Both invalid\");\n\tkeyup(e);\n\terrors(1, \"Only one field validated, still invalid\");\n\te.val(\"hh\");\n\tkeyup(e);\n\terrors(0, \"Not invalid anymore\");\n\te.val(\"h\");\n\tkeyup(e);\n\terrors(1, \"Field didn't loose focus, so validate again, invalid\");\n\te.val(\"hh\");\n\tkeyup(e);\n\terrors(0, \"Valid\");\n});\n\ntest(\"validate on not keyup, only blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate({\n\t\tonkeyup: false\n\t});\n\terrors(0);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\te.keyup();\n\terrors(0);\n\te.trigger(\"blur\").trigger(\"focusout\");\n\terrors(1);\n});\n\ntest(\"validate on keyup and blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\terrors(0);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\terrors(0);\n\te.trigger(\"blur\").trigger(\"focusout\");\n\terrors(1);\n});\n\ntest(\"validate email on keyup and blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\terrors(2);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\terrors(1);\n\te.val(\"aa\");\n\te.trigger(\"keyup\");\n\terrors(0);\n});\n\ntest(\"validate checkbox on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e = $(\"#check2\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck2: \"required\"\n\t\t}\n\t});\n\ttrigger(e);\n\terrors(0);\n\ttrigger(e);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e);\n\terrors(0);\n\ttrigger(e);\n\terrors(1);\n});\n\ntest(\"validate multiple checkbox on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#check1\").attr(\"checked\", false);\n\tvar e2 = $(\"#check1b\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t}\n\t\t}\n\t});\n\ttrigger(e1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e2);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e2);\n\terrors(1);\n});\n\ntest(\"correct checkbox receives the error\", function(){\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#check1\").attr(\"checked\", false);\n\tvar e2 = $(\"#check1b\").attr(\"checked\", false);\n    var v = $(\"#form\").find('[type=checkbox]').attr('checked', false).end().validate({\n        rules:{\n            check: {\n                    required: true,\n                    minlength: 2\n            }\n        }\n    });\n    equal(false, v.form());\n    trigger(e1);\n    equal(false, v.form());\n    ok(v.errorList[0].element.id === v.currentElements[0].id, \"the proper checkbox has the error AND is present in currentElements\");\n});\n\ntest(\"validate radio on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#radio1\");\n\tvar e2 = $(\"#radio1a\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tradio1: \"required\"\n\t\t}\n\t});\n\terrors(0);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e1);\n\terrors(0);\n});\n\ntest(\"validate input with no type attribute, defaulting to text\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm12\").validate();\n\tvar e = $(\"#testForm12text\");\n\terrors(0);\n\te.valid();\n\terrors(1);\n\te.val('test');\n\te.trigger('keyup');\n\terrors(0);\n});\n\ntest(\"ignore hidden elements\", function(){\n    var form = $('#userForm');\n    var validate = form.validate({\n        rules:{\n            \"username\": \"required\"\n        }\n    });\n    form.get(0).reset();\n    ok(! validate.form(), \"form should be initially invalid\");\n    $('#userForm [name=username]').hide();\n    ok(validate.form(), \"hidden elements should be ignored by default\");\n});\n\ntest(\"ignore hidden elements at start\", function(){\n    var form = $('#userForm');\n    var validate = form.validate({\n        rules:{\n            \"username\": \"required\"\n        }\n    });\n    form.get(0).reset();\n    $('#userForm [name=username]').hide();\n    ok(validate.form(), \"hidden elements should be ignored by default\");\n    $('#userForm [name=username]').show();\n    ok(! validate.form(), \"form should be invalid when required element is visible\");\n});\n\ntest(\"Specify error messages through data attributes\", function() {\n\tvar form = $('#dataMessages');\n\tvar name = $('#dataMessagesName');\n\tvar v = form.validate();\n\n\tform.get(0).reset();\n\tname.valid();\n\n\tvar label = $('#dataMessages label');\n\tequal( label.text(), \"You must enter a value here\", \"Correct error label\" );\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/.gitignore",
    "content": ".DS_Store"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/LICENSE.txt",
    "content": "            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                    Version 2, December 2004\n\n Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>\n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. You just DO WHAT THE FUCK YOU WANT TO.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/css/multi-select.css",
    "content": ".ms-container{\n  background: transparent url('../img/switch.png') no-repeat 170px 80px;\n}\n\n.ms-container:after{\n  content: \".\"; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden;\n}\n\n.ms-container .ms-selectable, .ms-container .ms-selection{\n\n  background: #fff;\n  color: #555555;\n  float: left;\n}\n\n.ms-container .ms-list{\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n  transition: border linear 0.2s, box-shadow linear 0.2s;\n  border: 1px solid #ccc;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n\n\n.ms-selected{\n  display:none;\n}\n.ms-container .ms-selectable{\n  margin-right: 40px;\n}\n\n.ms-container .ms-list.ms-focus{\n  border-color: rgba(82, 168, 236, 0.8);\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  outline: 0;\n  outline: thin dotted \\9;\n}\n\n.ms-container ul{\n  margin: 0;\n  list-style-type: none;\n  padding: 0;\n}\n\n.ms-container .ms-optgroup-container{\n  width: 100%;\n}\n\n.ms-container ul.ms-list{\n  width: 160px;\n  height: 200px;\n  padding: 0;\n  overflow-y: auto;\n}\n\n.ms-container .ms-optgroup-label{\n  margin: 0;\n  padding: 5px 0px 0px 5px;\n  cursor: pointer;\n  color: #999;\n}\n\n.ms-container .ms-selectable li.ms-elem-selectable,\n.ms-container .ms-selection li.ms-elem-selection{\n  border-bottom: 1px #eee solid;\n  padding: 2px 10px;\n  color: #555;\n  font-size: 14px;\n}\n\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover{\n  cursor: pointer;\n  color: #fff;\n  text-decoration: none;\n  background-color: #08c;\n}\n\n.ms-container .ms-selectable li.disabled,\n.ms-container .ms-selection li.disabled{\n  background-color: #eee;\n  color: #aaa;\n  cursor: text;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/multiselect/js/jquery.multi-select.js",
    "content": "/*\n* MultiSelect v0.9.5\n* Copyright (c) 2012 Louis Cuny\n*\n* This program is free software. It comes without any warranty, to\n* the extent permitted by applicable law. You can redistribute it\n* and/or modify it under the terms of the Do What The Fuck You Want\n* To Public License, Version 2, as published by Sam Hocevar. See\n* http://sam.zoy.org/wtfpl/COPYING for more details.\n*/\n\n!function ($) {\n\n  \"use strict\";\n\n\n /* MULTISELECT CLASS DEFINITION\n  * ====================== */\n\n  var MultiSelect = function (element, options) {\n    this.options = options;\n    this.$element = $(element);\n\n    var id = this.$element.attr('id');\n\n    this.$container = $('<div/>', { 'id': \"ms-\"+id, 'class': \"ms-container\" });\n    this.$selectableContainer = $('<div/>', { 'class': 'ms-selectable' });\n    this.$selectionContainer = $('<div/>', { 'class': 'ms-selection' });\n    this.$selectableUl = $('<ul/>', { 'class': \"ms-list\" });\n    this.$selectionUl = $('<ul/>', { 'class': \"ms-list\" });\n    this.scrollTo = 0;\n    this.sanitizeRegexp = new RegExp(\"\\\\W+\", 'gi');\n  };\n\n  MultiSelect.prototype = {\n    constructor: MultiSelect,\n\n    init: function(){\n      var that = this,\n          ms = this.$element;\n\n      if (ms.next('.ms-container').length === 0){\n        ms.css({ position: 'absolute', left: '-9999px' });\n        ms.attr('id', ms.attr('id') ? ms.attr('id') : 'ms-'+Math.ceil(Math.random()*1000));\n\n        var optgroupLabel = null,\n            optgroupId = null,\n            optgroupCpt = 0,\n            optgroupContainerTemplate = '<li class=\"ms-optgroup-container\"></li>',\n            optgroupUlTemplate = '<ul class=\"ms-optgroup\"></ul>',\n            optgroupLiTemplate = '<li class=\"ms-optgroup-label\"><span></span></li>';\n\n        ms.find('optgroup, option').each(function(){\n          if ($(this).is('optgroup')){\n            optgroupLabel = '<span>'+$(this).attr('label')+'</span>';\n            optgroupId = 'ms-'+ms.attr('id')+'-optgroup-'+optgroupCpt;\n\n            var optgroup = $(this),\n                optgroupSelectable = $(optgroupContainerTemplate),\n                optgroupSelection = $(optgroupContainerTemplate),\n                optgroupSelectionLi = $(optgroupLiTemplate),\n                optgroupSelectableLi = $(optgroupLiTemplate);\n\n            if (that.options.selectableOptgroup){\n              optgroupSelectableLi.on('click', function(){\n                var values = optgroup.children(':not(:selected)').map(function(){ return $(this).val(); }).get();\n                that.select(values);\n              });\n\n              optgroupSelectionLi.on('click', function(){\n                var values = optgroup.children(':selected').map(function(){ return $(this).val(); }).get();\n                that.deselect(values);\n              });\n            }\n\n            optgroupSelectableLi.html(optgroupLabel);\n\n            optgroupSelectable.attr('id', optgroupId+'-selectable')\n              .append($(optgroupUlTemplate)\n                .append(optgroupSelectableLi));\n\n            that.$selectableUl.append(optgroupSelectable);\n\n            optgroupSelectionLi.html(optgroupLabel);\n\n            optgroupSelection.attr('id', optgroupId+'-selection')\n              .append($(optgroupUlTemplate)\n                .append(optgroupSelectionLi));\n\n            that.$selectionUl.append(optgroupSelection);\n\n            optgroupCpt++;\n\n          } else {\n\n            var attributes = \"\";\n\n            for (var cpt = 0; cpt < this.attributes.length; cpt++){\n              var attr = this.attributes[cpt];\n\n              if(that.isDomNode(attr.name)){\n                attributes += attr.name+'=\"'+attr.value+'\" ';\n              }\n            }\n            var selectableLi = $('<li '+attributes+'><span>'+$(this).text()+'</span></li>'),\n                selectedLi = selectableLi.clone();\n\n            var value = $(this).val(),\n                msId = that.sanitize(value, that.sanitizeRegexp);\n\n            selectableLi\n              .data('ms-value', value)\n              .addClass('ms-elem-selectable')\n              .attr('id', msId+'-selectable');\n\n            selectedLi\n              .data('ms-value', value)\n              .addClass('ms-elem-selection')\n              .attr('id', msId+'-selection')\n              .hide();\n\n            that.$selectionUl.find('.ms-optgroup-label').hide();\n\n            if ($(this).prop('disabled') || ms.prop('disabled')){\n              if (this.selected) {\n                selectedLi.prop('disabled', true);\n                selectedLi.addClass(that.options.disabledClass);\n              } else {\n                selectableLi.prop('disabled', true);\n                selectableLi.addClass(that.options.disabledClass);\n              }\n            }\n\n            if (optgroupId){\n              that.$selectableUl.children('#'+optgroupId+'-selectable').find('ul').first().append(selectableLi);\n              that.$selectionUl.children('#'+optgroupId+'-selection').find('ul').first().append(selectedLi);\n            } else {\n              that.$selectableUl.append(selectableLi);\n              that.$selectionUl.append(selectedLi);\n            }\n          }\n        });\n\n        if (that.options.selectableHeader){\n          that.$selectableContainer.append(that.options.selectableHeader);\n        }\n        that.$selectableContainer.append(that.$selectableUl);\n        if (that.options.selectableFooter){\n          that.$selectableContainer.append(that.options.selectableFooter);\n        }\n\n        if (that.options.selectionHeader){\n          that.$selectionContainer.append(that.options.selectionHeader);\n        }\n        that.$selectionContainer.append(that.$selectionUl);\n        if (that.options.selectionFooter){\n          that.$selectionContainer.append(that.options.selectionFooter);\n        }\n\n        that.$container.append(that.$selectableContainer);\n        that.$container.append(that.$selectionContainer);\n        ms.after(that.$container);\n        that.$selectableUl.on('mouseenter', '.ms-elem-selectable', function(){\n          $('li', that.$container).removeClass('ms-hover');\n          $(this).addClass('ms-hover');\n        }).on('mouseleave', function(){\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        var action = that.options.dblClick ? 'dblclick' : 'click';\n\n        that.$selectableUl.on(action, '.ms-elem-selectable', function(){\n          that.select($(this).data('ms-value'));\n        });\n        that.$selectionUl.on(action, '.ms-elem-selection', function(){\n          that.deselect($(this).data('ms-value'));\n        });\n\n\n        that.$selectionUl.on('mouseenter', '.ms-elem-selection', function(){\n          $('li', that.$selectionUl).removeClass('ms-hover');\n          $(this).addClass('ms-hover');\n        }).on('mouseleave', function(){\n          $('li', that.$selectionUl).removeClass('ms-hover');\n        });\n\n        that.$selectableUl.on('focusin', function(){\n          $(this).addClass('ms-focus');\n          that.$selectionUl.focusout();\n        }).on('focusout', function(){\n          $(this).removeClass('ms-focus');\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        that.$selectionUl.on('focusin', function(){\n          $(this).addClass('ms-focus');\n        }).on('focusout', function(){\n          $(this).removeClass('ms-focus');\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        ms.on('focusin', function(){\n          ms.focusout();\n          that.$selectableUl.focusin();\n        }).on('focusout', function(){\n          that.$selectableUl.removeClass('ms-focus');\n          that.$selectionUl.removeClass('ms-focus');\n        });\n\n        ms.onKeyDown = function(e, keyContainer){\n          var ul = that.$container.find('.'+keyContainer).find('.ms-list'),\n              lis = ul.find('li:visible:not(.ms-optgroup-label, .ms-optgroup-container)'),\n              lisNumber = lis.length,\n              liFocused = ul.find('li.ms-hover'),\n              liFocusedIndex = liFocused.length > 0 ? lis.index(liFocused) : -1,\n              ulHeight = ul.innerHeight(),\n              liHeight = lis.first().outerHeight(true),\n              numberOfLisDisplayed = Math.floor(ulHeight / liHeight),\n              ulPosition = null;\n\n          if (e.keyCode === 32){ // space\n            if (liFocused.length >0){\n              if (keyContainer === 'ms-selectable'){\n                that.select(liFocused.data('ms-value'));\n              } else {\n                that.deselect(liFocused.data('ms-value'));\n              }\n              lis.removeClass('ms-hover');\n              that.scrollTo = 0;\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 40){ // Down\n            if (lis.length > 0){\n              var nextLiIndex = liFocusedIndex+1,\n                  nextLi = (lisNumber !== nextLiIndex) ? lis.eq(nextLiIndex) : lis.first(),\n                  nextLiPosition = nextLi.position().top;\n\n              ulPosition = ul.position().top;\n              lis.removeClass('ms-hover');\n              nextLi.addClass('ms-hover');\n\n              if (lisNumber === nextLiIndex){\n                that.scrollTo = 0;\n              } else if (nextLiPosition >= (ulPosition + (numberOfLisDisplayed * liHeight))){\n                that.scrollTo += liHeight;\n              }\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 38){ // Up\n            if (lis.length > 0){\n              var prevLiIndex = Math.max(liFocusedIndex-1, -1),\n                  prevLi = lis.eq(prevLiIndex),\n                  prevLiPosition = prevLi.position().top;\n\n              ulPosition = ul.position().top;\n              lis.removeClass('ms-hover');\n              prevLi.addClass('ms-hover');\n              if (prevLiPosition <= ulPosition){\n                that.scrollTo -= liHeight;\n              } else if (prevLiIndex < 0){\n                that.scrollTo = (lisNumber - numberOfLisDisplayed) * liHeight;\n              }\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 37 || e.keyCode === 39){\n            if (that.$selectableUl.hasClass('ms-focus')){\n              that.$selectableUl.focusout();\n              that.$selectionUl.focusin();\n            } else {\n              that.$selectableUl.focusin();\n              that.$selectionUl.focusout();\n            }\n          }\n        };\n\n        ms.on('keydown', function(e){\n          if (ms.is(':focus')){\n            var keyContainer = that.$selectableUl.hasClass('ms-focus') ? 'ms-selectable' : 'ms-selection';\n            ms.onKeyDown(e, keyContainer);\n          }\n        });\n      }\n\n      var selectedValues = ms.find('option:selected').map(function(){ return $(this).val(); }).get();\n      that.select(selectedValues, 'init');\n\n      if (typeof that.options.afterInit === 'function') {\n        that.options.afterInit.call(this, this.$container);\n      }\n    },\n\n    'refresh' : function() {\n      this.destroy();\n      this.$element.multiSelect(this.options);\n    },\n\n    'destroy' : function(){\n      $(\"#ms-\"+this.$element.attr(\"id\")).remove();\n      this.$element.removeData('multiselect');\n    },\n\n    'select' : function(value, method){\n      if (typeof value === 'string'){ value = [value]; }\n\n      var that = this,\n          ms = this.$element,\n          msIds = $.map(value, function(val){ return(that.sanitize(val, that.sanitizeRegexp)); }),\n          selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'),\n          selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection'),\n          options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });\n\n      if (selectables.length > 0){\n        selectables.addClass('ms-selected').hide();\n        selections.addClass('ms-selected').show();\n        options.prop('selected', true);\n\n        var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');\n        if (selectableOptgroups.length > 0){\n          selectableOptgroups.each(function(){\n            var selectablesLi = $(this).find('.ms-elem-selectable');\n            if (selectablesLi.length === selectablesLi.filter('.ms-selected').length){\n              $(this).find('.ms-optgroup-label').hide();\n            }\n          });\n\n          var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');\n          selectionOptgroups.each(function(){\n            var selectionsLi = $(this).find('.ms-elem-selection');\n            if (selectionsLi.filter('.ms-selected').length > 0){\n              $(this).find('.ms-optgroup-label').show();\n            }\n          });\n        }\n        if (method !== 'init'){\n          that.$selectionUl.focusout();\n          that.$selectableUl.focusin();\n          ms.trigger('change');\n          if (typeof that.options.afterSelect === 'function') {\n            that.options.afterSelect.call(this, value);\n          }\n        }\n      }\n    },\n\n    'deselect' : function(value){\n      if (typeof value === 'string'){ value = [value]; }\n\n      var that = this,\n          ms = this.$element,\n          msIds = $.map(value, function(val){ return(that.sanitize(val, that.sanitizeRegexp)); }),\n          selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),\n          selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected'),\n          options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });\n\n      if (selections.length > 0){\n        selectables.removeClass('ms-selected').show();\n        selections.removeClass('ms-selected').hide();\n        options.prop('selected', false);\n\n        var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');\n        if (selectableOptgroups.length > 0){\n          selectableOptgroups.each(function(){\n            var selectablesLi = $(this).find('.ms-elem-selectable');\n            if (selectablesLi.filter(':not(.ms-selected)').length > 0){\n              $(this).find('.ms-optgroup-label').show();\n            }\n          });\n\n          var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');\n          selectionOptgroups.each(function(){\n            var selectionsLi = $(this).find('.ms-elem-selection');\n            if (selectionsLi.filter('.ms-selected').length === 0){\n              $(this).find('.ms-optgroup-label').hide();\n            }\n          });\n        }\n        this.$selectableUl.focusout();\n        this.$selectionUl.focusin();\n        ms.trigger('change');\n        if (typeof that.options.afterDeselect === 'function') {\n          that.options.afterDeselect.call(this, value);\n        }\n      }\n    },\n\n    'select_all' : function(){\n      var ms = this.$element,\n          values = ms.val();\n\n      ms.find('option').prop('selected', true);\n      this.$selectableUl.find('.ms-elem-selectable').addClass('ms-selected').hide();\n      this.$selectionUl.find('.ms-optgroup-label').show();\n      this.$selectableUl.find('.ms-optgroup-label').hide();\n      this.$selectionUl.find('.ms-elem-selection').addClass('ms-selected').show();\n      this.$selectionUl.focusin();\n      this.$selectableUl.focusout();\n      ms.trigger('change');\n      if (typeof this.options.afterSelect === 'function') {\n        var selectedValues = $.grep(ms.val(), function(item){\n          return $.inArray(item, values) < 0;\n        });\n        this.options.afterSelect.call(this, selectedValues);\n      }\n    },\n\n    'deselect_all' : function(){\n      var ms = this.$element,\n          values = ms.val();\n\n      ms.find('option').prop('selected', false);\n      this.$selectableUl.find('.ms-elem-selectable').removeClass('ms-selected').show();\n      this.$selectionUl.find('.ms-optgroup-label').hide();\n      this.$selectableUl.find('.ms-optgroup-label').show();\n      this.$selectionUl.find('.ms-elem-selection').removeClass('ms-selected').hide();\n      this.$selectableUl.focusin();\n      this.$selectionUl.focusout();\n      ms.trigger('change');\n      if (typeof this.options.afterDeselect === 'function') {\n        this.options.afterDeselect.call(this, values);\n      }\n    },\n\n    isDomNode: function (attr){\n      return (\n        attr &&\n        typeof attr === \"object\" &&\n        typeof attr.nodeType === \"number\" &&\n        typeof attr.nodeName === \"string\"\n      );\n    },\n\n    sanitize: function(value, reg){\n      return(value.replace(reg, '_'));\n    }\n  };\n\n  /* MULTISELECT PLUGIN DEFINITION\n   * ======================= */\n\n  $.fn.multiSelect = function () {\n    var option = arguments[0],\n        args = arguments;\n\n    return this.each(function () {\n      var $this = $(this),\n          data = $this.data('multiselect'),\n          options = $.extend({}, $.fn.multiSelect.defaults, $this.data(), typeof option === 'object' && option);\n\n      if (!data){ $this.data('multiselect', (data = new MultiSelect(this, options))); }\n\n      if (typeof option === 'string'){\n        data[option](args[1]);\n      } else {\n        data.init();\n      }\n    });\n  };\n\n  $.fn.multiSelect.defaults = {\n    selectableOptgroup: false,\n    disabledClass : 'disabled',\n    dblClick : false\n  };\n\n  $.fn.multiSelect.Constructor = MultiSelect;\n\n}(window.jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/README.textile",
    "content": "h1. Uniform\n\nSexy form elements with jQuery\n\nVersion 1.7.5\n\nRequires jQuery 1.4 or newer. \n\nLicensed under:\nMIT License - http://www.opensource.org/licenses/mit-license.php\n\nh2. Installation\n\nInstallation of Uniform is quite simple. First, make sure you have jQuery 1.4+ installed. Then you’ll want to link to the jquery.uniform.js file and uniform.default.css in the head area of your page:\n\nbc. <script src=\"jquery.uniform.js\" type=\"text/javascript\"></script>\n<link rel=\"stylesheet\" href=\"uniform.default.css\" type=\"text/css\" media=\"screen\" charset=\"utf-8\" />\n\nh2. Basic usage\n\nUsing Uniform can be quite easy as well. Simply call:\n\n$(\"select\").uniform();\n\nTo “uniform” all possible form elements, just do something like this:\n\n$(\"select, input[type=checkbox], input[type=radio], input[type=file], input[type=submit], a.button, button\").uniform();\n\nA complete tag in the HEAD section of your site can therefore look like this:\n\nbc. <script type='text/javascript'>\n  $(function(){\n    $(\"select, input:checkbox, input:radio, input:file\").uniform();\n  });\n</script>\n\nRemember that it is essential to first follow the steps in the Installation section here above.\n\nh2. Extra parameters\n\nYou can pass in extra parameters to control certain aspects of Uniform. To pass in parameters, use syntax like this:\n\nbc. $(\"select\").uniform({\n  param1: value,\n  param2: value,\n  param3: value\n});\n\nh3. _NEW!_ autoHide(boolean)\n\n*Default:* true\nIf this option is set to true, Uniform will hide the new elements if the existing elements are currently hidden using display: none;\n\n*REMEMBER*: If you want to show a select or checkbox you'll need to show the new Uniform div instead of the child element.\n\nh3. selectClass (string)\n\n*Default:* “selector”\nSets the class given to the wrapper div for select elements.\n\n@$(\"select\").uniform({selectClass: 'mySelectClass'});@\n\nh3. radioClass (string)\n\n*Default:* “radio”\nSets the class given to the wrapper div for radio elements.\n\n@$(\":radio\").uniform({radioClass: 'myRadioClass'});@\n\nh3. checkboxClass (string)\n\n*Default:* “checker”\nSets the class given to the wrapper div for checkbox elements.\n\n@$(\":checkbox\").uniform({checkboxClass: 'myCheckClass'});@\n\nh3. fileClass (string)\n\n*Default:* “uploader”\nSets the class given to the wrapper div for file upload elements.\n\n@$(\":file\").uniform({fileClass: 'myFileClass'});@\n\nh3. filenameClass (string)\n\n*Default:* “filename”\nSets the class given to div inside a file upload container that spits out the filename.\n\n@$(\":file\").uniform({filenameClass: 'myFilenameClass'});@\n\nh3. fileBtnClass (string)\n\n*Default:* “action”\nSets the class given to div inside a file upload container that acts as the “Choose file” button.\n\n@$(\":file\").uniform({fileBtnClass: 'myFileBtnClass'});@\n\nh3. fileDefaultText (string)\n\n*Default:* “No file selected”\nSets the text written in the filename div of a file upload input when there is no file selected.\n\n@$(\":file\").uniform({fileDefaultText: 'Select a file please'});@\n\nh3. fileBtnText(string)\n\n*Default:* “Choose File”\nSets the text written on the action button inside a file upload input.\n\n@$(\":file\").uniform({fileBtnText: 'Choose&hellip;'});@\n\nh3. buttonClass(string)\n\n*Default:* \"button\"\nSets the class given to a button that's been uniformed\n\n@$(\"input[type=button]\").uniform({buttonClass: 'myBtnClass'});@\n\nh3. checkedClass (string)\n\n*Default:* “checked”\nSets the class given to elements when they are checked (radios and checkboxes).\n\n@$(\":radio, :checkbox\").uniform({checkedClass: 'myCheckedClass'});@\n\nh3. focusClass (string)\n\n*Default:* “focus”\nSets the class given to elements when they are focused.\n\n@$(\"select\").uniform({focusClass: 'myFocusClass'});@\n\nh3. disabledClass (string)\n\n*Default:* “disabled”\nSets the class given to elements when they are disabled.\n\n@$(\"select\").uniform({disabledClass: 'myDisabledClass'});@\n\nh3. activeClass (string)\n\n*Default:* “active”\nSets the class given to elements when they are active (pressed).\n\n@$(\"select\").uniform({activeClass: 'myActiveClass'});@\n\nh3. hoverClass (string)\n\n*Default:* “hover”\nSets the class given to elements when they are currently hovered.\n\n@$(\"select\").uniform({hoverClass: 'myHoverClass'});@\n\nh3. useID (boolean)\n\n*Default:* true\nIf true, sets an ID on the container div of each form element. The ID is a prefixed version of the same ID of the form element.\n\n@$(\"select\").uniform({useID: false});@\n\nh3. idPrefix (string)\n\n*Default:* “uniform”\nIf useID is set to true, this string is prefixed to element ID’s and attached to the container div of each uniformed element. If you have a checkbox with the ID of “remember-me” the container div would have the ID “uniform-remember-me”.\n\n@$(\"select\").uniform({idPrefix: 'container'});@\n\nh3. resetSelector (boolean/string)\n\n*Default:* false\nThis parameter allows you to use a jQuery-style selector to point to a “reset” button in your form if you have one. Use false if you have no “reset” button, or a selector string that points to the reset button if you have one.\n\n@$(\"select\").uniform({resetSelector: 'input[type=\"reset\"]'});@\n\nh2. Additional functions\n\nIn addition to the parameters, there are a couple of other ways you can interact with Uniform.\n\nh3. $.uniform.update([elem/selector string]);\n\nIf you need to change values on the form dynamically you must tell Uniform to update that element’s style. Fortunately, it’s very simple. Just call this function, and Uniform will do the rest.\n\n@$.uniform.update(\"#myUpdatedCheckbox\");@\n\nIf you are lazy, or just don’t specifically know which element to update, you can just leave out the parameter (see below) and Uniform will update all Uniformed elements on the page:\n\n@$.uniform.update();@\n\nh3. $.uniform.restore([elem/selector string]);\n\nIf you want to \"un-uniform\" something, simply call this function. It will remove the inline styles, extra dom elements, and event handlers, effectively restoring the element to it's previous state.\n\n@$.uniform.restore(\"select\");@\n\nh3. $.uniform.elements[]\n\nYou can get an array of all the elements that have been Uniformed at any time using this public variable. Wouldn’t advise changing the contents though!\n\n@var uniforms = $.uniform.elements;@\n\nh2. Customizing CSS\n\nTo edit the CSS of Uniform it is highly recommended to not edit the theme files, but to override them using CSS. Make sure your CSS file comes after the uniform theme css file in the HEAD section.\n\nIt's common to want to resize the selects or other elements. The best way is to set the width property on the div element, span element and the form element itself. Look through the theme CSS in the _presentation_ section to see where the width property is currently set.\n\nh2. Tips & tricks\n\nUniform is supposed to be pretty simple, but there are a few things that can be tricky. Here are some tips that may make your experience simpler:\n\nRemember to change the CSS classes in the theme if you change the parameters for elements’ classes. This can be tedious work, but if you don’t do it, it’s not going to look correct. Find and Replace is your friend.\n\nUniform cannot automatically sniff out dynamic value changes. If you make changes to elements in Javascript or using a Reset button of some kind remember to call $.uniform.update(); to sync the changes with Uniform.\n\nUniform is disabled in IE6. It’s not possible to fix due to the way IE6 handles form elements. If you care about IE6 users, give it a quick look to make sure your “naked” form elements look alright in there.\n\nYou’re on your own for styling text inputs and more. Fortunately, things that are not handled by Uniform are pretty easy to skin. :)\n\nIf you have ideas, or bugs, please post them in GitHub. We rely on our users for ideas for improvements and bug reports. Otherwise Uniform will stay static."
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css",
    "content": "/*\n\nUniform Theme: Uniform Default\nVersion: 1.6\nBy: Josh Pyles\nLicense: MIT License\n---\nFor use with the Uniform plugin:\nhttp://pixelmatrixdesign.com/uniform/\n---\nGenerated by Uniform Theme Generator:\nhttp://pixelmatrixdesign.com/uniform/themer.html\n\n*/\n\n/* Global Declaration */\n\ndiv.selector, \ndiv.selector span, \ndiv.checker span,\ndiv.radio span, \ndiv.uploader, \ndiv.uploader span.action,\ndiv.button,\ndiv.button span {\n  background-image: url(../images/sprite.png);\n  background-repeat: no-repeat;\n  -webkit-font-smoothing: antialiased;\n}\n\n.selector, \n.radio, \n.checker, \n.uploader,\n.button, \n.selector *, \n.radio *, \n.checker *, \n.uploader *,\n.button *{\n  margin: 0;\n  padding: 0;\n}\n\n/* INPUT & TEXTAREA */\n\ninput.text,\ninput.email, \ninput.password,\ntextarea.uniform {\n  font-size: 12px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-weight: normal;\n  padding: 3px;\n  color: #777;\n  background: url('../images/bg-input-focus.png') repeat-x 0px 0px;\n  background: url('../images/bg-input.png') repeat-x 0px 0px;\n  border-top: solid 1px #aaa;\n  border-left: solid 1px #aaa;\n  border-bottom: solid 1px #ccc;\n  border-right: solid 1px #ccc;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  outline: 0;\n}\n\ninput.text:focus,\ninput.email:focus,\ninput.password:focus,\ntextarea.uniform:focus {\n  -webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  -moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  border-color: #999;\n  background: url('../images/bg-input-focus.png') repeat-x 0px 0px;\n}\n\n/* SPRITES */\n\n/* Select */\n\ndiv.selector {\n  background-position: -483px -130px;\n  line-height: 26px;\n  height: 26px;\n}\n\ndiv.selector span {\n  background-position: right 0px;\n  height: 26px;\n  line-height: 26px;\n}\n\ndiv.selector select {\n  /* change these to adjust positioning of select element */\n  top: 0px;\n  left: 0px;\n}\n\ndiv.selector:active, \ndiv.selector.active {\n  background-position: -483px -156px;\n}\n\ndiv.selector:active span, \ndiv.selector.active span {\n  background-position: right -26px;\n}\n\ndiv.selector.focus, div.selector.hover, div.selector:hover {\n  background-position: -483px -182px;\n}\n\ndiv.selector.focus span, div.selector.hover span, div.selector:hover span {\n  background-position: right -52px;\n}\n\ndiv.selector.focus:active,\ndiv.selector.focus.active,\ndiv.selector:hover:active,\ndiv.selector.active:hover {\n  background-position: -483px -208px;\n}\n\ndiv.selector.focus:active span,\ndiv.selector:hover:active span,\ndiv.selector.active:hover span,\ndiv.selector.focus.active span {\n  background-position: right -78px;\n}\n\ndiv.selector.disabled {\n  background-position: -483px -234px;\n}\n\ndiv.selector.disabled span {\n  background-position: right -104px;\n}\n\n/* Checkbox */\n\ndiv.checker {\n  width: 19px;\n  height: 19px;\n}\n\ndiv.checker input {\n  width: 19px;\n  height: 19px;\n}\n\ndiv.checker span {\n  background-position: 0px -260px;\n  height: 19px;\n  width: 19px;\n}\n\ndiv.checker:active span, \ndiv.checker.active span {\n  background-position: -19px -260px;\n}\n\ndiv.checker.focus span,\ndiv.checker:hover span {\n  background-position: -38px -260px;\n}\n\ndiv.checker.focus:active span,\ndiv.checker:active:hover span,\ndiv.checker.active:hover span,\ndiv.checker.focus.active span {\n  background-position: -57px -260px;\n}\n\ndiv.checker span.checked {\n  background-position: -76px -260px;\n}\n\ndiv.checker:active span.checked, \ndiv.checker.active span.checked {\n  background-position: -95px -260px;\n}\n\ndiv.checker.focus span.checked,\ndiv.checker:hover span.checked {\n  background-position: -114px -260px;\n}\n\ndiv.checker.focus:active span.checked,\ndiv.checker:hover:active span.checked,\ndiv.checker.active:hover span.checked,\ndiv.checker.active.focus span.checked {\n  background-position: -133px -260px;\n}\n\ndiv.checker.disabled span,\ndiv.checker.disabled:active span,\ndiv.checker.disabled.active span {\n  background-position: -152px -260px;\n}\n\ndiv.checker.disabled span.checked,\ndiv.checker.disabled:active span.checked,\ndiv.checker.disabled.active span.checked {\n  background-position: -171px -260px;\n}\n\n/* Radio */\n\ndiv.radio {\n  width: 18px;\n  height: 18px;\n}\n\ndiv.radio input {\n  width: 18px;\n  height: 18px;\n}\n\ndiv.radio span {\n  height: 18px;\n  width: 18px;\n  background-position: 0px -279px;\n}\n\ndiv.radio:active span, \ndiv.radio.active span {\n  background-position: -18px -279px;\n}\n\ndiv.radio.focus span, \ndiv.radio:hover span {\n  background-position: -36px -279px;\n}\n\ndiv.radio.focus:active span,\ndiv.radio:active:hover span,\ndiv.radio.active:hover span,\ndiv.radio.active.focus span {\n  background-position: -54px -279px;\n}\n\ndiv.radio span.checked {\n  background-position: -72px -279px;\n}\n\ndiv.radio:active span.checked,\ndiv.radio.active span.checked {\n  background-position: -90px -279px;\n}\n\ndiv.radio.focus span.checked, div.radio:hover span.checked {\n  background-position: -108px -279px;\n}\n\ndiv.radio.focus:active span.checked, \ndiv.radio:hover:active span.checked,\ndiv.radio.focus.active span.checked,\ndiv.radio.active:hover span.checked {\n  background-position: -126px -279px;\n}\n\ndiv.radio.disabled span,\ndiv.radio.disabled:active span,\ndiv.radio.disabled.active span {\n  background-position: -144px -279px;\n}\n\ndiv.radio.disabled span.checked,\ndiv.radio.disabled:active span.checked,\ndiv.radio.disabled.active span.checked {\n  background-position: -162px -279px;\n}\n\n/* Uploader */\n\ndiv.uploader {\n  background-position: 0px -297px;\n  height: 28px;\n}\n\ndiv.uploader span.action {\n  background-position: right -409px;\n  height: 24px;\n  line-height: 24px;\n}\n\ndiv.uploader span.filename {\n  height: 24px;\n  /* change this line to adjust positioning of filename area */\n  margin: 2px 0px 2px 2px;\n  line-height: 24px;\n}\n\ndiv.uploader.focus,\ndiv.uploader.hover,\ndiv.uploader:hover {\n  background-position: 0px -353px;\n}\n\ndiv.uploader.focus span.action,\ndiv.uploader.hover span.action,\ndiv.uploader:hover span.action {\n  background-position: right -437px;\n}\n\ndiv.uploader.active span.action,\ndiv.uploader:active span.action {\n  background-position: right -465px;\n}\n\ndiv.uploader.focus.active span.action,\ndiv.uploader:focus.active span.action,\ndiv.uploader.focus:active span.action,\ndiv.uploader:focus:active span.action {\n  background-position: right -493px;\n}\n\ndiv.uploader.disabled {\n  background-position: 0px -325px;\n}\n\ndiv.uploader.disabled span.action {\n  background-position: right -381px;\n}\n\ndiv.button {\n  background-position: 0px -523px;\n}\n\ndiv.button span {\n  background-position: right -643px;\n}\n\ndiv.button.focus,\ndiv.button:focus,\ndiv.button:hover,\ndiv.button.hover {\n  background-position: 0px -553px;\n}\n\ndiv.button.focus span,\ndiv.button:focus span,\ndiv.button:hover span,\ndiv.button.hover span {\n  background-position: right -673px; \n}\n\ndiv.button.active,\ndiv.button:active {\n  background-position: 0px -583px;\n}\n\ndiv.button.active span,\ndiv.button:active span {\n  background-position: right -703px;\n  color: #555;\n}\n\ndiv.button.disabled,\ndiv.button:disabled {\n  background-position: 0px -613px;\n}\n\ndiv.button.disabled span,\ndiv.button:disabled span {\n  background-position: right -733px;\n  color: #bbb;\n  cursor: default;\n}\n\n/* PRESENTATION */\n\n/* Button */\n\ndiv.button {\n  height: 30px;\n}\n\ndiv.button span {\n  margin-left: 13px;\n  height: 22px;\n  padding-top: 8px;\n  font-weight: bold;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  padding-left: 2px;\n  padding-right: 15px;\n}\n\n/* Select */\ndiv.selector {\n  width: 190px;\n  font-size: 12px;\n}\n\ndiv.selector select {\n  min-width: 190px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  border: solid 1px #fff;\n}\n\ndiv.selector span {\n  padding: 0px 25px 0px 2px;\n  cursor: pointer;\n}\n\ndiv.selector span {\n  color: #666;\n  width: 158px;\n  text-shadow: 0 1px 0 #fff;\n}\n\ndiv.selector.disabled span {\n  color: #bbb;\n}\n\n/* Checker */\ndiv.checker {\n  margin-right: 5px;\n}\n\n/* Radio */\ndiv.radio {\n  margin-right: 3px;\n}\n\n/* Uploader */\ndiv.uploader {\n  width: 190px;\n  cursor: pointer;\n}\n\ndiv.uploader span.action {\n  width: 85px;\n  text-align: center;\n  text-shadow: #fff 0px 1px 0px;\n  background-color: #fff;\n  font-size: 11px;\n  font-weight: bold;\n}\n\ndiv.uploader span.filename {\n  color: #777;\n  width: 82px;\n  border-right: solid 1px #bbb;\n  font-size: 11px;\n}\n\ndiv.uploader input {\n  width: 190px;\n}\n\ndiv.uploader.disabled span.action {\n  color: #aaa;\n}\n\ndiv.uploader.disabled span.filename {\n  border-color: #ddd;\n  color: #aaa;\n}\n/*\n\nCORE FUNCTIONALITY \n\nNot advised to edit stuff below this line\n-----------------------------------------------------\n*/\n\n.selector, \n.checker, \n.button, \n.radio, \n.uploader {\n  display: -moz-inline-box;\n  display: inline-block;\n  vertical-align: middle;\n  zoom: 1;\n  *display: inline;\n}\n\n.selector select:focus, .radio input:focus, .checker input:focus, .uploader input:focus {\n  outline: 0;\n}\n\n/* Button */\n\ndiv.button a,\ndiv.button button,\ndiv.button input {\n  position: absolute;\n}\n\ndiv.button {\n  cursor: pointer;\n  position: relative;\n}\n\ndiv.button span {\n  display: -moz-inline-box;\n  display: inline-block;\n  line-height: 1;\n  text-align: center;\n}\n\n/* Select */\n\ndiv.selector {\n  position: relative;\n  padding-left: 10px;\n  overflow: hidden;\n}\n\ndiv.selector span {\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\ndiv.selector select {\n  position: absolute;\n  opacity: 0;\n  filter: alpha(opacity:0);\n  height: 25px;\n  border: none;\n  background: none;\n}\n\n/* Checker */\n\ndiv.checker {\n  position: relative;\n}\n\ndiv.checker span {\n  display: -moz-inline-box;\n  display: inline-block;\n  text-align: center;\n}\n\ndiv.checker input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  display: inline-block;\n  background: none;\n}\n\n/* Radio */\n\ndiv.radio {\n  position: relative;\n}\n\ndiv.radio span {\n  display: -moz-inline-box;\n  display: inline-block;\n  text-align: center;\n}\n\ndiv.radio input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  text-align: center;\n  display: inline-block;\n  background: none;\n}\n\n/* Uploader */\n\ndiv.uploader {\n  position: relative;\n  overflow: hidden;\n  cursor: default;\n}\n\ndiv.uploader span.action {\n  float: left;\n  display: inline;\n  padding: 2px 0px;\n  overflow: hidden;\n  cursor: pointer;\n}\n\ndiv.uploader span.filename {\n  padding: 0px 10px;\n  float: left;\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  cursor: default;\n}\n\ndiv.uploader input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  float: right;\n  height: 25px;\n  border: none;\n  cursor: default;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/demo/demo.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n    <script src=\"../jquery.uniform.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n    <script type=\"text/javascript\" charset=\"utf-8\">\n      $(function(){\n        $(\"input, textarea, select, button\").uniform();\n      });\n    </script>\n    <link rel=\"stylesheet\" href=\"../css/uniform.default.css\" type=\"text/css\" media=\"screen\">\n    <style type=\"text/css\" media=\"screen\">\n      body {\n        font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        color: #666;\n        padding: 40px;\n      }\n      h1 {\n        margin-top: 0;\n      }\n      ul {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n      }\n      li {\n        margin-bottom: 20px;\n        clear: both;\n      }\n      label {\n        font-size: 10px;\n        font-weight: bold;\n        text-transform: uppercase;\n        display: block;\n        margin-bottom: 3px;\n        clear: both;\n      }\n    </style>\n  </head>\n  <body>\n    <h1>Uniform Demo</h1>\n    <form>\n      <ul>\n        <li><label>Message:</label><textarea cols=\"40\" rows=\"5\"></textarea></li>\n        <li><label>Your Name:</label><input type=\"text\" size=\"40\"/></li>\n        <li><label>Your Email:</label><input type=\"email\" size=\"40\"/></li>\n        <li>\n          <label>I found your site:</label>\n          <select>\n            <option>Through Google</option>\n            <option>Through Twitter</option>\n            <option>Other&hellip;</option>\n            <option>&lt;Hi&gt;</option>\n          </select>\n        </li>\n        <li>\n          <label><input type=\"radio\" name=\"radio\" /> Saying hi</label>\n          <label><input type=\"radio\" name=\"radio\" /> Sending feedback</label>\n        </li>\n        <li>\n          <label><input type=\"checkbox\" /> Please contact me back</label>\n        </li>\n        <li>\n          <label>Upload a file:</label>\n          <input type=\"file\" />\n        </li>\n        <li>\n          <input type=\"submit\" />\n          <input type=\"reset\" />\n        </li>\n      </ul>\n    </form>\n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.js",
    "content": "/*\n\nUniform v1.7.5\nCopyright © 2009 Josh Pyles / Pixelmatrix Design LLC\nhttp://pixelmatrixdesign.com\n\nRequires jQuery 1.4 or newer\n\nMuch thanks to Thomas Reynolds and Buck Wilson for their help and advice on this\n\nDisabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>\nand his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>\n\nAlso, thanks to David Kaneda and Eugene Bond for their contributions to the plugin\n\nLicense:\nMIT License - http://www.opensource.org/licenses/mit-license.php\n\nEnjoy!\n\n*/\n\n(function($) {\n  $.uniform = {\n    options: {\n      selectClass:   'selector',\n      radioClass: 'radio',\n      checkboxClass: 'checker',\n      fileClass: 'uploader',\n      filenameClass: 'filename',\n      fileBtnClass: 'action',\n      fileDefaultText: 'No file selected',\n      fileBtnText: 'Choose File',\n      checkedClass: 'checked',\n      focusClass: 'focus',\n      disabledClass: 'disabled',\n      buttonClass: 'button',\n      activeClass: 'active',\n      hoverClass: 'hover',\n      useID: true,\n      idPrefix: 'uniform',\n      resetSelector: false,\n      autoHide: true\n    },\n    elements: []\n  };\n\n  if($.browser.msie && $.browser.version < 7){\n    $.support.selectOpacity = false;\n  }else{\n    $.support.selectOpacity = true;\n  }\n\n  $.fn.uniform = function(options) {\n\n    options = $.extend($.uniform.options, options);\n\n    var el = this;\n    //code for specifying a reset button\n    if(options.resetSelector != false){\n      $(options.resetSelector).mouseup(function(){\n        function resetThis(){\n          $.uniform.update(el);\n        }\n        setTimeout(resetThis, 10);\n      });\n    }\n    \n    function doInput(elem){\n      $el = $(elem);\n      $el.addClass($el.attr(\"type\"));\n      storeElement(elem);\n    }\n    \n    function doTextarea(elem){\n      $(elem).addClass(\"uniform\");\n      storeElement(elem);\n    }\n    \n    function doButton(elem){\n      var $el = $(elem);\n      \n      var divTag = $(\"<div>\"),\n          spanTag = $(\"<span>\");\n      \n      divTag.addClass(options.buttonClass);\n      \n      if(options.useID && $el.attr(\"id\") != \"\") divTag.attr(\"id\", options.idPrefix+\"-\"+$el.attr(\"id\"));\n      \n      var btnText;\n      \n      if($el.is(\"a\") || $el.is(\"button\")){\n        btnText = $el.text();\n      }else if($el.is(\":submit\") || $el.is(\":reset\") || $el.is(\"input[type=button]\")){\n        btnText = $el.attr(\"value\");\n      }\n      \n      btnText = btnText == \"\" ? $el.is(\":reset\") ? \"Reset\" : \"Submit\" : btnText;\n      \n      spanTag.html(btnText);\n      \n      $el.css(\"opacity\", 0);\n      $el.wrap(divTag);\n      $el.wrap(spanTag);\n      \n      //redefine variables\n      divTag = $el.closest(\"div\");\n      spanTag = $el.closest(\"span\");\n      \n      if($el.is(\":disabled\")) divTag.addClass(options.disabledClass);\n      \n      divTag.bind({\n        \"mouseenter.uniform\": function(){\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function(){\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"mousedown.uniform touchbegin.uniform\": function(){\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function(){\n          divTag.removeClass(options.activeClass);\n        },\n        \"click.uniform touchend.uniform\": function(e){\n          if($(e.target).is(\"span\") || $(e.target).is(\"div\")){    \n            if(elem[0].dispatchEvent){\n              var ev = document.createEvent('MouseEvents');\n              ev.initEvent( 'click', true, true );\n              elem[0].dispatchEvent(ev);\n            }else{\n              elem[0].click();\n            }\n          }\n        }\n      });\n      \n      elem.bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        }\n      });\n      \n      $.uniform.noSelect(divTag);\n      storeElement(elem);\n      \n    }\n\n    function doSelect(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.selectClass);\n\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n      \n      var selected = elem.find(\":selected:first\");\n      if(selected.length == 0){\n        selected = elem.find(\"option:first\");\n      }\n      spanTag.html(selected.html());\n      \n      elem.css('opacity', 0);\n      elem.wrap(divTag);\n      elem.before(spanTag);\n\n      //redefine variables\n      divTag = elem.parent(\"div\");\n      spanTag = elem.siblings(\"span\");\n\n      elem.bind({\n        \"change.uniform\": function() {\n          spanTag.text(elem.find(\":selected\").html());\n          divTag.removeClass(options.activeClass);\n        },\n        \"focus.uniform\": function() {\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function() {\n          divTag.removeClass(options.focusClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"mousedown.uniform touchbegin.uniform\": function() {\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"keyup.uniform\": function(){\n          spanTag.text(elem.find(\":selected\").html());\n        }\n      });\n      \n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n      $.uniform.noSelect(spanTag);\n      \n      storeElement(elem);\n\n    }\n\n    function doCheckbox(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n      \n      divTag.addClass(options.checkboxClass);\n\n      //assign the id of the element\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $(elem).wrap(divTag);\n      $(elem).wrap(spanTag);\n\n      //redefine variables\n      spanTag = elem.parent();\n      divTag = spanTag.parent();\n\n      //hide normal input and add focus classes\n      $(elem)\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          if(!$(elem).attr(\"checked\")){\n            //box was just unchecked, uncheck span\n            spanTag.removeClass(options.checkedClass);\n          }else{\n            //box was just checked, check span.\n            spanTag.addClass(options.checkedClass);\n          }\n        },\n        \"mousedown.uniform touchbegin.uniform\": function() {\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n      \n      //handle defaults\n      if($(elem).attr(\"checked\")){\n        //box is checked by default, check our box\n        spanTag.addClass(options.checkedClass);\n      }\n\n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n\n      storeElement(elem);\n    }\n\n    function doRadio(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n          \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.radioClass);\n\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $(elem).wrap(divTag);\n      $(elem).wrap(spanTag);\n\n      //redefine variables\n      spanTag = elem.parent();\n      divTag = spanTag.parent();\n\n      //hide normal input and add focus classes\n      $(elem)\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          if(!$(elem).attr(\"checked\")){\n            //box was just unchecked, uncheck span\n            spanTag.removeClass(options.checkedClass);\n          }else{\n            //box was just checked, check span\n            var classes = options.radioClass.split(\" \")[0];\n            $(\".\" + classes + \" span.\" + options.checkedClass + \":has([name='\" + $(elem).attr('name') + \"'])\").removeClass(options.checkedClass);\n            spanTag.addClass(options.checkedClass);\n          }\n        },\n        \"mousedown.uniform touchend.uniform\": function() {\n          if(!$(elem).is(\":disabled\")){\n            divTag.addClass(options.activeClass);\n          }\n        },\n        \"mouseup.uniform touchbegin.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform touchend.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n\n      //handle defaults\n      if($(elem).attr(\"checked\")){\n        //box is checked by default, check span\n        spanTag.addClass(options.checkedClass);\n      }\n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n\n      storeElement(elem);\n\n    }\n\n    function doFile(elem){\n      //sanitize input\n      var $el = $(elem);\n\n      var divTag = $('<div />'),\n          filenameTag = $('<span>'+options.fileDefaultText+'</span>'),\n          btnTag = $('<span>'+options.fileBtnText+'</span>');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.fileClass);\n      filenameTag.addClass(options.filenameClass);\n      btnTag.addClass(options.fileBtnClass);\n\n      if(options.useID && $el.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+$el.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $el.wrap(divTag);\n      $el.after(btnTag);\n      $el.after(filenameTag);\n\n      //redefine variables\n      divTag = $el.closest(\"div\");\n      filenameTag = $el.siblings(\".\"+options.filenameClass);\n      btnTag = $el.siblings(\".\"+options.fileBtnClass);\n\n      //set the size\n      if(!$el.attr(\"size\")){\n        var divWidth = divTag.width();\n        //$el.css(\"width\", divWidth);\n        $el.attr(\"size\", divWidth/10);\n      }\n\n      //actions\n      var setFilename = function()\n      {\n        var filename = $el.val();\n        if (filename === '')\n        {\n          filename = options.fileDefaultText;\n        }\n        else\n        {\n          filename = filename.split(/[\\/\\\\]+/);\n          filename = filename[(filename.length-1)];\n        }\n        filenameTag.text(filename);\n      };\n\n      // Account for input saved across refreshes\n      setFilename();\n\n      $el\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"mousedown.uniform\": function() {\n          if(!$(elem).is(\":disabled\")){\n            divTag.addClass(options.activeClass);\n          }\n        },\n        \"mouseup.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n\n      // IE7 doesn't fire onChange until blur or second fire.\n      if ($.browser.msie){\n        // IE considers browser chrome blocking I/O, so it\n        // suspends tiemouts until after the file has been selected.\n        $el.bind('click.uniform.ie7', function() {\n          setTimeout(setFilename, 0);\n        });\n      }else{\n        // All other browsers behave properly\n        $el.bind('change.uniform', setFilename);\n      }\n\n      //handle defaults\n      if($el.attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n      \n      $.uniform.noSelect(filenameTag);\n      $.uniform.noSelect(btnTag);\n      \n      storeElement(elem);\n\n    }\n    \n    $.uniform.restore = function(elem){\n      if(elem == undefined){\n        elem = $($.uniform.elements);\n      }\n      \n      $(elem).each(function(){\n        if($(this).is(\":checkbox\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }else if($(this).is(\"select\")){\n          //remove sibling span\n          $(this).siblings(\"span\").remove();\n          //unwrap parent div\n          $(this).unwrap();\n        }else if($(this).is(\":radio\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }else if($(this).is(\":file\")){\n          //remove sibling spans\n          $(this).siblings(\"span\").remove();\n          //unwrap parent div\n          $(this).unwrap();\n        }else if($(this).is(\"button, :submit, :reset, a, input[type='button']\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }\n        \n        //unbind events\n        $(this).unbind(\".uniform\");\n        \n        //reset inline style\n        $(this).css(\"opacity\", \"1\");\n        \n        //remove item from list of uniformed elements\n        var index = $.inArray($(elem), $.uniform.elements);\n        $.uniform.elements.splice(index, 1);\n      });\n    };\n\n    function storeElement(elem){\n      //store this element in our global array\n      elem = $(elem).get();\n      if(elem.length > 1){\n        $.each(elem, function(i, val){\n          $.uniform.elements.push(val);\n        });\n      }else{\n        $.uniform.elements.push(elem);\n      }\n    }\n    \n    //noSelect v1.0\n    $.uniform.noSelect = function(elem) {\n      function f() {\n       return false;\n      };\n      $(elem).each(function() {\n       this.onselectstart = this.ondragstart = f; // Webkit & IE\n       $(this)\n        .mousedown(f) // Webkit & Opera\n        .css({ MozUserSelect: 'none' }); // Firefox\n      });\n     };\n\n    $.uniform.update = function(elem){\n      if(elem == undefined){\n        elem = $($.uniform.elements);\n      }\n      //sanitize input\n      elem = $(elem);\n\n      elem.each(function(){\n        //do to each item in the selector\n        //function to reset all classes\n        var $e = $(this);\n\n        if($e.is(\"select\")){\n          //element is a select\n          var spanTag = $e.siblings(\"span\");\n          var divTag = $e.parent(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n\n          //reset current selected text\n          spanTag.html($e.find(\":selected\").html());\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n\n        }else if($e.is(\":checkbox\")){\n          //element is a checkbox\n          var spanTag = $e.closest(\"span\");\n          var divTag = $e.closest(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          spanTag.removeClass(options.checkedClass);\n\n          if($e.is(\":checked\")){\n            spanTag.addClass(options.checkedClass);\n          }\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n\n        }else if($e.is(\":radio\")){\n          //element is a radio\n          var spanTag = $e.closest(\"span\");\n          var divTag = $e.closest(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          spanTag.removeClass(options.checkedClass);\n\n          if($e.is(\":checked\")){\n            spanTag.addClass(options.checkedClass);\n          }\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n        }else if($e.is(\":file\")){\n          var divTag = $e.parent(\"div\");\n          var filenameTag = $e.siblings(options.filenameClass);\n          btnTag = $e.siblings(options.fileBtnClass);\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n\n          filenameTag.text($e.val());\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n        }else if($e.is(\":submit\") || $e.is(\":reset\") || $e.is(\"button\") || $e.is(\"a\") || elem.is(\"input[type=button]\")){\n          var divTag = $e.closest(\"div\");\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          \n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n          \n        }\n        \n      });\n    };\n\n    return this.each(function() {\n      if($.support.selectOpacity){\n        var elem = $(this);\n\n        if(elem.is(\"select\")){\n          //element is a select\n          if(elem.attr(\"multiple\") != true){\n            //element is not a multi-select\n            if(elem.attr(\"size\") == undefined || elem.attr(\"size\") <= 1){\n              doSelect(elem);\n            }\n          }\n        }else if(elem.is(\":checkbox\")){\n          //element is a checkbox\n          doCheckbox(elem);\n        }else if(elem.is(\":radio\")){\n          //element is a radio\n          doRadio(elem);\n        }else if(elem.is(\":file\")){\n          //element is a file upload\n          doFile(elem);\n        }else if(elem.is(\":text, :password, input[type='email']\")){\n          doInput(elem);\n        }else if(elem.is(\"textarea\")){\n          doTextarea(elem);\n        }else if(elem.is(\"a\") || elem.is(\":submit\") || elem.is(\":reset\") || elem.is(\"button\") || elem.is(\"input[type=button]\")){\n          doButton(elem);\n        }\n          \n      }\n    });\n  };\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/changelog.txt",
    "content": "Version 1.5.4 (2012-04-12)\n\tFlash: Disable scripting if swf was loaded from another domain.\nVersion 1.5.3 (2012-04-05)\n\tHTML5: Check if xhr object is initialized, before calling abort() on it.\n\tHTML4: Postpone form removal until uploaders state changes, to avoid error on resuming stopped uploads.\n\tBrowserPlus: Fix mechanical typo, that caused error during mime type check.\n\tBrowserPlus: browserPlus.Uploader.Cancel() has two required parameters, dies with the error if not passed.\n\tFlash: Improve runtime's behaviour during upload cancellation.\n\tFlash: Survive the case when GPSVersionID contains unexpected value.\n\tFlash: Fix random freeze in Chrome's bundled Flash Player.\n\tFlash: Avoid the silent break when URLStream not yet open, but close is called on it.\n\tFlash: Move Destroy handler out of Flash:Init handler, since it might be called not only after Flash:Init but also before it.\n\tFlash: Avoid warning during build with mxmlc.\n\tTry removeEventListener first in IE and only if it fails - detachEvent.\n\tFix plupload.getPos to return proper value in IE8+.\n\tDo not initiate plupload.STARTED state, if file queue is empty.\n\tAdditional language packs: Estonian, Polish, Korean, French-Canadian, Greek, Persian/Farsi.\nVersion 1.5.2 (2012-01-06)\n\tUI Widget: Do not show UI if no runtime can be initialized.\n\tUI Widget: Timely update file size and total size if resize in action.\n\tUI Widget: Constrain renaming feature to queued files only.\n\tUI Widget: Disable Add button properly, if requested, rather then just hide.\n\tHTML4/HTML5/BrowserPlus: Avoid adding mime type twice to dialog trigger.\n\tHTML5: fix regression, when unresized images were failing on FF3.6.\n\tHTML5: Constrain Gecko 2,5,6 workaround to multipart mode only.\n\tHTML5/Flash: Take into account weird possibilities of ExifVersion being a string, rather then standard Undefined.\n\tFlash: Simplify event dispatching in BitmapDataUnlimited class, in order to avoid freezing on resizing in FP11.\n\tAdd ability to disable file dialog trigger on request (uploader.disableBrowse(true/false)).\n\tSupport for immediate abort of upload process, be it chunked upload or regular one.\n\tAbort all activity, before destroying uploader.\n\tRevive temporary file removal logic in upload.php.\n\tFix potential vulnerability in dump.php and upload.php.\n\tAdditional MIME types: application/vnd.openxmlformats-officedocument.*, application/x-javascript, application/json, text/css,css, application/vnd.oasis.opendocument.formula-templat.\n\tAdditional language packs: Hungarian, Croatian, Serbian, Romanian.\nVersion 1.5.1.1 (2011-09-27)\n\tHTML5: Fix mechanical typo, that successfully broke drag and drop, wherever could.\nVersion 1.5.1 (2011-09-26)\n\tHTML4: Add support for server responses in HTML format.\n\tHTML5: Disable multiple file selection in Safari 5.x for Windows (see #363).\n\tHTML5: Gecko 2/5/6 should upload chunks as binary strings when in chunking mode and client side resize is requested.\n\tFlash: Enforce URLStream mode when custom headers are passed.\n\tFlash: Fix embedding problems in IE9 (and all other IEs).\n\tFlash/Gears/BrowserPlus/SilverLight: Expose multi_selection feature, to be used in required_features (mainly to overcome Safari for Windows problem).\n\tSilverLight: Properly handle custom and null headers.\n\tUploadComplete moved to fire after the last StateChanged event.\n\tAdditional language packs: Finnish.\nVersion 1.5b (2011-09-11)\n\tUI Widget: Fix sortable logic.\n\tUI Widget: Fix bug, when message was displayed simultaneously across all Plupload UI instances on the page.\n\tUI Widget: notify() method is now public - users can throw their own messages into the widget header.\n\tHTML4/HTML5: Revise input[type=file] placement logic to support cursor styling on Geko 2+.\n\tHTML5: Revise Drag'n'Drop detection logic.\n\tHTML5: Make Exif and GPS information available to user, introduce two new events: ExifData and GpsData.\n\tHTML5: Add support for File.prototype.slice() method (mozSlice/webkitSlice) in order to be able to upload files in chunks without preloading.\n\tHTML5: Remove any JPEG headers before restoring them, 'cause user agent (like Chrome), might be inserting it's own.\n\tFlash: Remove a limit on the depth of image header check, since it still fails in some cases and performance gain is negligible.\n\tFlash: Fix regression, when runtime hanged when not images where passed in as images.\t\n\tSilverLight: Fix bug, when JSON serializer was failing on null.\n\tSilverLight: Remove cast to integer for chunk boundary, which resulted in a wrong size for last chunks on huge files.\n\tSilverLight: Increase read buffer, add disposal of ImageStream and FileStream, optimize for performance.\n\tUpdated build.xml to include language packs in release package under js/ folder.\n\tGears/BrowserPlus: Add support for * file filter.\n\tBeforeUpload now can cancel upload if required.\n\tAdditional MIME types: text/csv, image/photoshop, video/x-ms-wmv, video/avi, video/webm support\n\tAdditional language packs: Japanese\n\tCleaned examples.\nVersion 1.4.3.2 (2011-04-13)\n\tFixed bug in HTML5 runtime, when was reduced by a factor of 100 after every upload.\nVersion 1.4.3.1 (2011-04-12)\n\tFixed build script, mistakenly populating jquery.plupload.queue directory from jquery.ui.plupload sources.\n\tFixed script urls in all examples, build script now will alter them automatically from dev to release when needed.\n\tFixed isEmptyObj undefined error in HTML4 runtime.\n\tFixed bug in UI Widget preventing UploadComplete from triggering.\nVersion 1.4.3 (2011-04-11)\n\tAdded Latvian language pack and updated French.\n\tFixed bug in Flash runtime when JPEG header was not investigated deep enough to reach SOFn marker in large images.\n\tFixed bug, when PNGs were cropped to width in Flash runtimes, rather then resized. \n\tFixed Flash to allow multiple uploading of the same file, with different settings.\n\tFixed Flash runtime to clean anonymous listeners properly. \n\tFixed HTML5 runtime to resolve to mimeType in case-insensitive way.\n\tFixed HTML5/Flash/SilverLight/Gears runtimes for inconsistency in naming of chunks feature, comparing to other runtimes.\n\tFixed HTML4/HTML5 runtimes for input[type=file] to outsize contaner effectively enough to fill the whole click area.\n\tFixed all runtimes to preserve position (relative/absolute) rule on containers that already have it.\n\tFixed SilverLight runtime to support large files (over 2GB).\n\tRestructured the examples, src and build scripts to make it more clear that jQuery is optional.\n\tAdded support for *.* filter.\n\tAdded support for preserving ICC and IPTC headers when resizing JPEGs.\n\tAdded Image.onerror/onabort handlers to HTML5 in order to gracefully bypass faulty images.\n\tAdded ability to drop image size (by lowering quality), while preserving original dimension (HTML5/Flash/Gears).\n\tPorted EXIF, ICC, IPTC preservation code to Flash runtime. \nVersion 1.4.2 (2011-02-20)\n\tAdded Brazilian Portuguese, German, Russian and Spanish translations.\n\tAdded support for file_data_name option to SilverLight runtime.\n\tAdded support for better quality image resizing to Flash runtime.\n\tAdded support for properly handling images with dimensions up to 8191x8191 pixels to Flash runtime.\n\tAdded 'updatelist' event to UI Widget, which will be triggered every time file list will get redrawn. \n\tAdded support for dynamically changing options to UI Widget.\n\tFixed HTML4 runtime bug, when UploadFile handler was attached twice. \n\tFixed HTML5 to use FileReader.readAsBinaryString() instead of File.getAsBinary() on newer WebKit browsers (like Chrome 9).\n\tFixed Flash runtime from sending duplicate Filename param, when using FileReference.upload(). \n\tUpdated S3 example to illustrate support for a proper progress indication. \nVersion 1.4.1 (2011-02-01)\n\tAdded an example on how to use Plupload with Amazon S3 written in PHP but can easily be ported to other languages.\n\tFixed bug where hidden input elements wasn't created when the multiple_queues option wasn't used.\n\tFixed bug where FF4 would produce an exception about missing BlobBuilder.\nVersion 1.4.0 (2011-01-26)\n\tAdded removeEvent and removeAllEvents methods and modified addEvent accordingly, in order to support dynamic unload.\n\tAdded unbindAll method.\n\tAdded UploadComplete event, which fires when internal iterator reaches the end of the queue.\n\tAdded public destroy method to plupload object, new event - Destroy, and corresponding handlers to all runtimes.\n\tAdded Czech, Italian, French, Dutch translations.\n\tAdded support for translatable error messages.\n\tAdded two new options: browse_button_hover and browse_button_active, in order to support browse_button interactivity.\t\n\tAdded support for 'multi_selection: false' to Silverlight runtime.\n\tAdded support for video/mp4, video/x-m4v and audio/mp4 MIME Types. \n\tAdded artificial sendAsBinary method to XMLHttpRequest.prototype for browsers that have support for BlobBuilder and typed arrays.\n\tAdded version tracking variable into plupload object and version comment to the header of every file.\n\tFixed measurements of browse_button element in order to size and position input[type=file] element to fit it fully.\n\tFixed Flash runtime behavior for multiple_select=false and other simpleUpload usage cases: basically new FileReference has to be created for every select dialog. \n\tFixed browser sniffer to match only Safari, for fakeSafariDragDrop (seems like Safari on Mac doesn't require it either).\n\tFixed so that ExternalInterface escapes strings properly, before passing them to JS. \n\tFixed eventual reinitialization of flash/silverlight runtimes, especially for cases when object wrapper needed to be programmatically hidden and then shown again.\n\tFixed so that Plupload will now ignore files with duplicate names when adding to the queue, in one set. Mainly introduced to work around Safari on Windows bug (https://bugs.webkit.org/show_bug.cgi?id=37957).\n\tFixed bug, when final UploadProgress was firing after FileUploaded for Flash simpleUpload. \n\tFixed bug where upload would fail if an error was produced inside the FilesAdded event.\n\tFixed bug in Flash runtime when it used a wrong size when resizing, but not chunking.\n\tFixed bug in Silverlight runtime that would keep sending 0 byte packages when a picture was chunked before resized.\n\tDisabled blur filter (is going to be replaced with some bilinear resampling in next release).\n\tCompletely revised UI Widget, to be more jQuery UI oriented. Optionally depends on UI Button, UI Sortable, UI ProgressBar.\t\nVersion 1.3.0 (2010-11-24)\n\tAdded new jQuery UI widget that supports jQuery UI themes.\n\tAdded new multiple_queues option that enables you to upload multiple times in the queue widgets.\n\tAdded support for crossdomain loading of the XAP and SWF files and crossdomain upload.\n\tAdded new multiple_queues option that enables you to upload multiple times in the queue widgets.\n\tAdded support for crossdomain loading of the XAP and SWF files and crossdomain upload.\n\tAdded preinit/init options to to ease up the binding of custom events to queueWidget and the Uploader class.\n\tAdded drag/drop support for Safari until they fix the broken drag/drop support on Windows.\n\tAdded events example file that show how to bind all events and display event specific data.\n\tAdded support for retaining Exif data on images when they where resized using the HTML5 runtime.\n\tFixed logic issue with the upload.php example file. Chunking wasn't working correctly.\n\tFixed issue with HTML4 not handling the form encoding correctly on older IE versions. Patch contributed by jinxdone.\n\tFixed so the HTML4 runtime only submits the defined multipart_params arguments.\n\tFixes issue where it wasn't possible to dynamically override url or mutlipart_params for the HTML4 runtime.\n\tFixed so all runtimes pass the name, chunk and chunks parameters as multipart parameters instead of querystring parameters.\n\tFixed so files are read using the newer FileReader class if it's available if not it tries the older getAsXXX on Gecko.\n\tFixed bug where IE 9 beta 1 wouldn't render Silverlight properly.\n\tFixed bug where Flash would do extra empty requests if images below a specific size would be uploaded.\n\tFixed bug where Google Gears would resize and re-encode images even if the it wasn't changed in scale.\n\tFixed bug where the HTML5 runtime wouldn't free memory after each request on Gecko.\nVersion 1.2.4 (2010-09-08)\n\tAdded new BeforeUpload event to make it easier to override settings before a file is uploaded.\n\tAdded new automatic usage of FileReference in Flash if it's possible. Contributed by Marcel Jackwerth.\n\tAdded new chunking support for Chrome 5 and Firefox 3.6 using the HTML 5 runtime.\n\tAdded new multipart upload support for WebKit using the HTML 5 runtime and the FormData object.\n\tAdded new image scaling method for the Flash runtime contributed by rcoopman.\n\tAdded new alert error message if the user selected invalid files.\n\tAdded new automatic unique name generation to the example.php script. Contributed by Brandon Kelly.\n\tChanged so the default upload method is multipart and the default chunk size is 0.\n\tFixed progress issue with the HTML5 runtime running on Gecko.\n\tFixed so longer extensions can be used such as .tar.gz.\n\tFixed so the file extension is retained when using the unique_names option.\nVersion 1.2.3 (2010-05-27)\n\tAdded new drag/drop support for HTML5 running on Chrome beta.\n\tAdded new multipart state for the features object. It's now possible to detect multipart support.\n\tAdded new getFeatures function to all runtime. Basic concept by Javier Martinez Fernandez.\n\tFixed bug where runtimes where initialized even if they didn't match the required_features setting.\nVersion 1.2.2.1 (2010-05-04)\n\tAdded new headers option, enables you to set custom headers for the upload requests.\n\tFixed bug where the file extension checking was case sensitive.\nVersion 1.2.2 (2010-04-26)\n\tAdded new file_data_name option that enables you to set the multipart file data param. Patch contributed by Alex Ganov.\n\tAdded new FILE_SIZE_ERROR type that will be triggered if the user selected a file that is to large or zero bytes.\n\tAdded new FILE_EXTENSION_ERROR type that will be triggered if you add a file with an invalid file extension.\n\tAdded new required_features setting, enables you to specify a list of required features that the runtime must have.\n\tFixed so the plupload.buildUrl function uses the UTF compatible encodeURIComponent method instead of escape.\n\tFixed so that all file types can be selected if you don't specify a filter setting.\n\tFixed so more valid HTTP status codes are accepted as valid responses.\n\tFixed so all runtimes fills the features object with available features.\n\tFixed some issues with the HTML4 runtime if there wasn't any existing forms on the page.\n\tFixed some conflict issues with HTML4 runtime and forms with the input names of action or target.\n\tFixed bug where some Gecko versions would produce exceptions when checking the HTTP status of a XHR.\nVersion 1.2.1 (2010-03-22)\n\tFixed bug with incorrect aspect ratio in Flash image scaling.\n\tFixed bug where chunked uploads could get scrambled in the Flash runtime. Patch contributed by Grady Werner.\n\tFixed bug where a beta version of Chrome wouldn't handle drag/drop correctly because of missing drag effect.\n\tFixed so the HTML 4 runtime displays N/A for file sizes and the progress is based on uploaded files instead of bytes.\n\tFixed so chunking can be disabled properly in Flash but that will affect the progress bar.\n\tFixed so queue widget displays the drag/drop message if file queue is emptied.\n\tFixed small files are uploaded as one single chunk and not forced into 4 chunks in the Flash runtime.\nVersion 1.2 (2010-03-09)\n\tAdded new rename file support for jQuery queue widget, click on a file name to rename it if it's enabled.\n\tAdded official ChunkUploaded event, it similar to FileUploaded but executed for each chunk.\n\tAdded bytes per second support to total queue progress.\n\tAdded better error handling to core API using the new Error event.\n\tAdded better error handling to jQuery queue widget.\n\tFixed so chunking uploads is dispatch from JS not from inside Flash/Silverlight.\nVersion 1.1.1 (2010-02-25)\n\tAdded new setup setting to queue widget. Makes it easier to bind custom events to uploader instance.\n\tFixed so it's possible to disable chunking compleatly. It's now disabled by default.\n\tFixed bug where multipart mode was enabled all the time in the Flash runtime.\n\tFixed bug where chunked uploading in Silverlight would fail.\n\tFixed bug where the delete button was visible while uploading.\n\tFixed bug where unique_names setting wasn't working when the core API was used.\n\tFixed bug where the queue widget wouldn't display the currently uploaded file if the unique_names was enabled.\nVersion 1.1 (2010-02-24)\n\tAdded new multipart and multipart_params support.\n\tAdded new container option, enables you to specify where flash/silverlight objects would be added.\n\tAdded chunking support to BrowserPlus runtime, contributed by Steve Spencer.\n\tAdded FileUploaded event that fires when a file is uploaded.\n\tAdded more easily understandable buttons to queue widget.\n\tAdded html4 runtime, contributed by Ryan Demmer.\n\tFixed issues with i18n support and added a Swedish and Danish language pack.\n\tFixed bug where the Flash runtime could do empty requests if the image was scaled down.\n\tFixed bug where uploading small images in Silverlight would produce an exception.\n\tFixed so the runtime list can include whitespace or missing runtimes. Patch contributed by yvind Sean Kinsey.\n\tFixed so to large files are ignored and never dispatched to the FilesAdded event.\nVersion 1.0 (2010-02-03)\n\tFirst official release of Plupload.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.File.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.File</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.File</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">File</td>\n</tr>\n</table>\n<div class=\"classDescription\">File instance.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#id\">id</a> : String</div>\n<div class=\"summary\">File id this is a globally unique id for the specific file.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#loaded\">loaded</a> : Number</div>\n<div class=\"summary\">Number of bytes uploaded of the files total size.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#name\">name</a> : String</div>\n<div class=\"summary\">File name for example \"myfile.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#percent\">percent</a> : Number</div>\n<div class=\"summary\">Number of percentage uploaded of the file.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#size\">size</a> : Number</div>\n<div class=\"summary\">File size in bytes.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#status\">status</a> : Number</div>\n<div class=\"summary\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#File\">File</a>(id:String, name:String, size:Number)</div>\n<div class=\"summary\">Constructs a new file instance.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"id\">\n<h3>id<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public id : String</code>\n<div class=\"memberDescription\">File id this is a globally unique id for the specific file.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"loaded\">\n<h3>loaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public loaded : Number</code>\n<div class=\"memberDescription\">Number of bytes uploaded of the files total size.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"name\">\n<h3>name<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public name : String</code>\n<div class=\"memberDescription\">File name for example \"myfile.gif\".\n</div>\n</div>\n<div class=\"memberDetails\" id=\"percent\">\n<h3>percent<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public percent : Number</code>\n<div class=\"memberDescription\">Number of percentage uploaded of the file.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"size\">\n<h3>size<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public size : Number</code>\n<div class=\"memberDescription\">File size in bytes.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"status\">\n<h3>status<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public status : Number</code>\n<div class=\"memberDescription\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\n</div>\n<h4>See Also</h4>\n<ul class=\"see\">\n<li>\n<a href=\"class_plupload.html\">plupload</a>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"File\">\n<h3>File<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction File(id:String, name:String, size:Number)</code>\n<div class=\"memberDescription\">Constructs a new file instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">id:String</td>\n<td class=\"last\">Unique file id.</td>\n</tr>\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">File name.</td>\n</tr>\n<tr>\n<td class=\"first\">size:Number</td>\n<td class=\"last\">File size in bytes.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.QueueProgress.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.QueueProgress</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.QueueProgress</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</table>\n<div class=\"classDescription\">Runtime class gets implemented by each upload runtime.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#bytesPerSec\">bytesPerSec</a> : Number</div>\n<div class=\"summary\">Bytes uploaded per second.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#failed\">failed</a> : Number</div>\n<div class=\"summary\">Number of files failed to upload.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#loaded\">loaded</a> : Number</div>\n<div class=\"summary\">Total bytes uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#percent\">percent</a> : Number</div>\n<div class=\"summary\">Total percent of the uploaded bytes.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#queued\">queued</a> : Number</div>\n<div class=\"summary\">Number of files yet to be uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#size\">size</a> : Number</div>\n<div class=\"summary\">Total queue file size.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#uploaded\">uploaded</a> : Number</div>\n<div class=\"summary\">Number of files uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#QueueProgress\">QueueProgress</a>()</div>\n<div class=\"summary\">Constructs a queue progress.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#reset\">reset</a>():void</div>\n<div class=\"summary\">Resets the progress to it's initial values.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"bytesPerSec\">\n<h3>bytesPerSec<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public bytesPerSec : Number</code>\n<div class=\"memberDescription\">Bytes uploaded per second.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"failed\">\n<h3>failed<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public failed : Number</code>\n<div class=\"memberDescription\">Number of files failed to upload.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"loaded\">\n<h3>loaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public loaded : Number</code>\n<div class=\"memberDescription\">Total bytes uploaded.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"percent\">\n<h3>percent<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public percent : Number</code>\n<div class=\"memberDescription\">Total percent of the uploaded bytes.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"queued\">\n<h3>queued<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public queued : Number</code>\n<div class=\"memberDescription\">Number of files yet to be uploaded.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"size\">\n<h3>size<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public size : Number</code>\n<div class=\"memberDescription\">Total queue file size.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"uploaded\">\n<h3>uploaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public uploaded : Number</code>\n<div class=\"memberDescription\">Number of files uploaded.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"QueueProgress\">\n<h3>QueueProgress<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction QueueProgress()</code>\n<div class=\"memberDescription\">Constructs a queue progress.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"reset\">\n<h3>reset<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction reset():void</code>\n<div class=\"memberDescription\">Resets the progress to it's initial values.\n</div>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Runtime.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.Runtime</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.Runtime</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Runtime</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Subclasses</td>\n<td class=\"last subClassList\">\n<a href=\"class_plupload.runtimes.BrowserPlus.html\">BrowserPlus</a>, <a href=\"class_plupload.runtimes.Flash.html\">Flash</a>, <a href=\"class_plupload.runtimes.Gears.html\">Gears</a>, <a href=\"class_plupload.runtimes.Html4.html\">Html4</a>, <a href=\"class_plupload.runtimes.Html5.html\">Html5</a>, <a href=\"class_plupload.runtimes.Silverlight.html\">Silverlight</a>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Runtime class gets implemented by each upload runtime.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Runtime.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Runtime</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Uploader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.Uploader</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.Uploader</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</table>\n<div class=\"classDescription\">Uploader class, an instance of this class will be created for each upload field.\n</div>\n<h4>Example</h4>\n<pre class=\"brush: js;\">var uploader = new plupload.Uploader({\n    runtimes : 'gears,html5,flash',\n    browse_button : 'button_id'\n});\n\nuploader.bind('Init', function(up) {\n    alert('Supports drag/drop: ' + (!!up.features.dragdrop));\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n    alert('Selected files: ' + files.length);\n});\n\nuploader.bind('QueueChanged', function(up) {\n    alert('Queued files: ' + uploader.files.length);\n});\n\nuploader.init();</pre>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#features\">features</a> : Object</div>\n<div class=\"summary\">Map of features that are available for the uploader runtime.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#files\">files</a> : Array</div>\n<div class=\"summary\">Current upload queue, an array of File instances.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#id\">id</a> : String</div>\n<div class=\"summary\">Unique id for the Uploader instance.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#runtime\">runtime</a> : String</div>\n<div class=\"summary\">Current runtime name.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#settings\">settings</a> : Object</div>\n<div class=\"summary\">Object with name/value settings.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#state\">state</a> : Number</div>\n<div class=\"summary\">Current state of the total uploading progress.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#total\">total</a> : <a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</div>\n<div class=\"summary\">Total progess information.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Uploader\">Uploader</a>(settings:Object)</div>\n<div class=\"summary\">Constructs a new uploader instance.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#bind\">bind</a>(name:String, func:function, scope:Object):void</div>\n<div class=\"summary\">Adds an event listener by name.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#destroy\">destroy</a>():void</div>\n<div class=\"summary\">Destroys Plupload instance and cleans after itself.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#getFile\">getFile</a>(id:String):<a href=\"class_plupload.File.html\">File</a>\n</div>\n<div class=\"summary\">Returns the specified file object by id.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#init\">init</a>():void</div>\n<div class=\"summary\">Initializes the Uploader instance and adds internal event listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#refresh\">refresh</a>():void</div>\n<div class=\"summary\">Refreshes the upload instance by dispatching out a refresh event to all runtimes.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#removeFile\">removeFile</a>(file:<a href=\"class_plupload.File.html\">File</a>):void</div>\n<div class=\"summary\">Removes a specific file.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#splice\">splice</a>(start:Number, length:Number):Array</div>\n<div class=\"summary\">Removes part of the queue and returns the files removed.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#start\">start</a>():void</div>\n<div class=\"summary\">Starts uploading the queued files.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#stop\">stop</a>():void</div>\n<div class=\"summary\">Stops the upload of the queued files.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#trigger\">trigger</a>(name:String, Multiple:Object..):void</div>\n<div class=\"summary\">Dispatches the specified event name and it's arguments to all listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#unbind\">unbind</a>(name:String, func:function):void</div>\n<div class=\"summary\">Removes the specified event listener.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#unbindAll\">unbindAll</a>():void</div>\n<div class=\"summary\">Removes all event listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Events</h2>\n<table class=\"Events summary\">\n<thead>\n<tr>\n<th>Event</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#BeforeUpload\">BeforeUpload</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires when just before a file is uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#ChunkUploaded\">ChunkUploaded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</div>\n<div class=\"summary\">Fires when file chunk is uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Destroy\">Destroy</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when destroy method is called.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Error\">Error</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, error:Object)</div>\n<div class=\"summary\">Fires when a error occurs.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FilesAdded\">FilesAdded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires while when the user selects files to upload.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FilesRemoved\">FilesRemoved</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires while a file was removed from queue.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FileUploaded\">FileUploaded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</div>\n<div class=\"summary\">Fires when a file is successfully uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Init\">Init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the current RunTime has been initialized.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#PostInit\">PostInit</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires after the init event incase you need to perform actions there.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#QueueChanged\">QueueChanged</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the file queue is changed.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Refresh\">Refresh</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the silverlight/flash or other shim needs to move.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#StateChanged\">StateChanged</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the overall state is being changed for the upload queue.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadComplete\">UploadComplete</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires when all files in a queue are uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadFile\">UploadFile</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires when a file is to be uploaded by the runtime.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadProgress\">UploadProgress</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires while a file is being uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"features\">\n<h3>features<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public features : Object</code>\n<div class=\"memberDescription\">Map of features that are available for the uploader runtime. Features will be filled\nbefore the init event is called, these features can then be used to alter the UI for the end user.\nSome of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"files\">\n<h3>files<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public files : Array</code>\n<div class=\"memberDescription\">Current upload queue, an array of File instances.\n</div>\n<h4>See Also</h4>\n<ul class=\"see\">\n<li>\n<a href=\"class_plupload.File.html\">File</a>\n</li>\n</ul>\n</div>\n<div class=\"memberDetails\" id=\"id\">\n<h3>id<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public id : String</code>\n<div class=\"memberDescription\">Unique id for the Uploader instance.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"runtime\">\n<h3>runtime<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public runtime : String</code>\n<div class=\"memberDescription\">Current runtime name.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"settings\">\n<h3>settings<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public settings : Object</code>\n<div class=\"memberDescription\">Object with name/value settings.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"state\">\n<h3>state<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public state : Number</code>\n<div class=\"memberDescription\">Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED.\nThese states are controlled by the stop/start methods. The default value is STOPPED.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"total\">\n<h3>total<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public total : <a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</code>\n<div class=\"memberDescription\">Total progess information. How many files has been uploaded, total percent etc.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"Uploader\">\n<h3>Uploader<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction Uploader(settings:Object)</code>\n<div class=\"memberDescription\">Constructs a new uploader instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">settings:Object</td>\n<td class=\"last\">Initialization settings, to be used by the uploader instance and runtimes.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"bind\">\n<h3>bind<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction bind(name:String, func:function, scope:Object):void</code>\n<div class=\"memberDescription\">Adds an event listener by name.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Event name to listen for.</td>\n</tr>\n<tr>\n<td class=\"first\">func:function</td>\n<td class=\"last\">Function to call ones the event gets fired.</td>\n</tr>\n<tr>\n<td class=\"first\">scope:Object</td>\n<td class=\"last\">Optional scope to execute the specified function in.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"destroy\">\n<h3>destroy<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction destroy():void</code>\n<div class=\"memberDescription\">Destroys Plupload instance and cleans after itself.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"getFile\">\n<h3>getFile<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction getFile(id:String):<a href=\"class_plupload.File.html\">File</a>\n</code>\n<div class=\"memberDescription\">Returns the specified file object by id.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">id:String</td>\n<td class=\"last\">File id to look for.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">\n<a href=\"class_plupload.File.html\">File</a> - File object or undefined if it wasn't found;</div>\n</div>\n<div class=\"memberDetails\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction init():void</code>\n<div class=\"memberDescription\">Initializes the Uploader instance and adds internal event listeners.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"refresh\">\n<h3>refresh<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction refresh():void</code>\n<div class=\"memberDescription\">Refreshes the upload instance by dispatching out a refresh event to all runtimes.\nThis would for example reposition flash/silverlight shims on the page.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"removeFile\">\n<h3>removeFile<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction removeFile(file:<a href=\"class_plupload.File.html\">File</a>):void</code>\n<div class=\"memberDescription\">Removes a specific file.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to remove from queue.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"splice\">\n<h3>splice<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction splice(start:Number, length:Number):Array</code>\n<div class=\"memberDescription\">Removes part of the queue and returns the files removed. This will also trigger the FilesRemoved and QueueChanged events.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">start:Number</td>\n<td class=\"last\">(Optional) Start index to remove from.</td>\n</tr>\n<tr>\n<td class=\"first\">length:Number</td>\n<td class=\"last\">(Optional) Lengh of items to remove.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Array - Array of files that was removed.</div>\n</div>\n<div class=\"memberDetails\" id=\"start\">\n<h3>start<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction start():void</code>\n<div class=\"memberDescription\">Starts uploading the queued files.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"stop\">\n<h3>stop<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction stop():void</code>\n<div class=\"memberDescription\">Stops the upload of the queued files.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"trigger\">\n<h3>trigger<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction trigger(name:String, Multiple:Object..):void</code>\n<div class=\"memberDescription\">Dispatches the specified event name and it's arguments to all listeners.\n\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Event name to fire.</td>\n</tr>\n<tr>\n<td class=\"first\">Multiple:Object..</td>\n<td class=\"last\">arguments to pass along to the listener functions.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"unbind\">\n<h3>unbind<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction unbind(name:String, func:function):void</code>\n<div class=\"memberDescription\">Removes the specified event listener.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Name of event to remove.</td>\n</tr>\n<tr>\n<td class=\"first\">func:function</td>\n<td class=\"last\">Function to remove from listener.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails last\" id=\"unbindAll\">\n<h3>unbindAll<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction unbindAll():void</code>\n<div class=\"memberDescription\">Removes all event listeners.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Event details</h2>\n<div class=\"memberDetails\" id=\"BeforeUpload\">\n<h3>BeforeUpload<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent BeforeUpload(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires when just before a file is uploaded. This event enables you to override settings\non the uploader instance before the file is uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to be uploaded.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"ChunkUploaded\">\n<h3>ChunkUploaded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent ChunkUploaded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</code>\n<div class=\"memberDescription\">Fires when file chunk is uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that the chunk was uploaded for.</td>\n</tr>\n<tr>\n<td class=\"first\">response:Object</td>\n<td class=\"last\">Object with response properties.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Destroy\">\n<h3>Destroy<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Destroy(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when destroy method is called.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Error\">\n<h3>Error<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Error(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, error:Object)</code>\n<div class=\"memberDescription\">Fires when a error occurs.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">error:Object</td>\n<td class=\"last\">Contains code, message and sometimes file and other details.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FilesAdded\">\n<h3>FilesAdded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FilesAdded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires while when the user selects files to upload.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of file objects that was added to queue/selected by the user.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FilesRemoved\">\n<h3>FilesRemoved<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FilesRemoved(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires while a file was removed from queue.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of files that got removed.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FileUploaded\">\n<h3>FileUploaded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FileUploaded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</code>\n<div class=\"memberDescription\">Fires when a file is successfully uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that was uploaded.</td>\n</tr>\n<tr>\n<td class=\"first\">response:Object</td>\n<td class=\"last\">Object with response properties.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Init\">\n<h3>Init<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the current RunTime has been initialized.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"PostInit\">\n<h3>PostInit<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent PostInit(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires after the init event incase you need to perform actions there.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"QueueChanged\">\n<h3>QueueChanged<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent QueueChanged(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Refresh\">\n<h3>Refresh<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Refresh(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the silverlight/flash or other shim needs to move.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"StateChanged\">\n<h3>StateChanged<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent StateChanged(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the overall state is being changed for the upload queue.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"UploadComplete\">\n<h3>UploadComplete<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadComplete(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires when all files in a queue are uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of file objects that was added to queue/selected by the user.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"UploadFile\">\n<h3>UploadFile<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadFile(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires when a file is to be uploaded by the runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to be uploaded.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails last\" id=\"UploadProgress\">\n<h3>UploadProgress<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadProgress(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires while a file is being uploaded. Use this event to update the current file upload progress.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that is currently being uploaded.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n</table>\n<div class=\"classDescription\">Plupload class with some global constants and functions.\n</div>\n<h4>Example</h4>\n<pre class=\"brush: js;\">// Encode entities\nconsole.log(plupload.xmlEncode(\"My string &lt;&gt;\"));\n\n// Generate unique id\nconsole.log(plupload.guid());</pre>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#DONE\">DONE</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File has been uploaded successfully</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FAILED\">FAILED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File has failed to be uploaded</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FILE_EXTENSION_ERROR\">FILE_EXTENSION_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File extension error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FILE_SIZE_ERROR\">FILE_SIZE_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File size error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#GENERIC_ERROR\">GENERIC_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic error for example if an exception is thrown inside Silverlight.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#HTTP_ERROR\">HTTP_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>HTTP transport error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#INIT_ERROR\">INIT_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initialization error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#IO_ERROR\">IO_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic I/O error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#mimeTypes\">mimeTypes</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Mime type lookup table.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#QUEUED\">QUEUED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File is queued for upload</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#SECURITY_ERROR\">SECURITY_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic I/O error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#STARTED\">STARTED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Upload process is running</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#STOPPED\">STOPPED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Inital state of the queue and also the state ones it's finished all it's uploads.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#UPLOADING\">UPLOADING</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File is being uploaded</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#addRuntime\">addRuntime</a>(name:String, obj:Object):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Adds a specific upload runtime like for example flash or gears.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#cleanName\">cleanName</a>(s:String):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Cleans the specified name from national characters (diacritics).</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#extend\">extend</a>(target:Object, obj:Object..):Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Extends the specified object with another object.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#formatSize\">formatSize</a>(size:Number):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Formats the specified number as a size string for example 1024 becomes 1 KB.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#getPos\">getPos</a>(node:Element, root:Element):object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Returns the absolute x, y position of an Element.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#guid\">guid</a>():String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generates an unique ID.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#parseSize\">parseSize</a>(size:String/Number):Number</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Parses the specified size string into a byte value.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#toArray\">toArray</a>(obj:Object):Array</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Forces anything into an array.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#xmlEncode\">xmlEncode</a>(s:String):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Encodes the specified string.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"DONE\">\n<h3>DONE<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static DONE : Object</code>\n<div class=\"memberDescription\">File has been uploaded successfully\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FAILED\">\n<h3>FAILED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FAILED : Object</code>\n<div class=\"memberDescription\">File has failed to be uploaded\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FILE_EXTENSION_ERROR\">\n<h3>FILE_EXTENSION_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FILE_EXTENSION_ERROR : Object</code>\n<div class=\"memberDescription\">File extension error. If the user selects a file that isn't valid according to the filters setting.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FILE_SIZE_ERROR\">\n<h3>FILE_SIZE_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FILE_SIZE_ERROR : Object</code>\n<div class=\"memberDescription\">File size error. If the user selects a file that is to large it will be blocked and an error of this type will be triggered.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"GENERIC_ERROR\">\n<h3>GENERIC_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static GENERIC_ERROR : Object</code>\n<div class=\"memberDescription\">Generic error for example if an exception is thrown inside Silverlight.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"HTTP_ERROR\">\n<h3>HTTP_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static HTTP_ERROR : Object</code>\n<div class=\"memberDescription\">HTTP transport error. For example if the server produces a HTTP status other than 200.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"INIT_ERROR\">\n<h3>INIT_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static INIT_ERROR : Object</code>\n<div class=\"memberDescription\">Initialization error. Will be triggered if no runtime was initialized.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"IO_ERROR\">\n<h3>IO_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static IO_ERROR : Object</code>\n<div class=\"memberDescription\">Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"mimeTypes\">\n<h3>mimeTypes<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static mimeTypes : Object</code>\n<div class=\"memberDescription\">Mime type lookup table.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"QUEUED\">\n<h3>QUEUED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static QUEUED : Object</code>\n<div class=\"memberDescription\">File is queued for upload\n</div>\n</div>\n<div class=\"memberDetails\" id=\"SECURITY_ERROR\">\n<h3>SECURITY_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static SECURITY_ERROR : Object</code>\n<div class=\"memberDescription\">Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"STARTED\">\n<h3>STARTED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static STARTED : Object</code>\n<div class=\"memberDescription\">Upload process is running\n</div>\n</div>\n<div class=\"memberDetails\" id=\"STOPPED\">\n<h3>STOPPED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static STOPPED : Object</code>\n<div class=\"memberDescription\">Inital state of the queue and also the state ones it's finished all it's uploads.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"UPLOADING\">\n<h3>UPLOADING<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static UPLOADING : Object</code>\n<div class=\"memberDescription\">File is being uploaded\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"addRuntime\">\n<h3>addRuntime<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction addRuntime(name:String, obj:Object):void</code>\n<div class=\"memberDescription\">Adds a specific upload runtime like for example flash or gears.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Runtime name for example flash.</td>\n</tr>\n<tr>\n<td class=\"first\">obj:Object</td>\n<td class=\"last\">Object containing init/destroy method.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"cleanName\">\n<h3>cleanName<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction cleanName(s:String):String</code>\n<div class=\"memberDescription\">Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">s:String</td>\n<td class=\"last\">String to clean up.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Cleaned string.</div>\n</div>\n<div class=\"memberDetails\" id=\"extend\">\n<h3>extend<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction extend(target:Object, obj:Object..):Object</code>\n<div class=\"memberDescription\">Extends the specified object with another object.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">target:Object</td>\n<td class=\"last\">Object to extend.</td>\n</tr>\n<tr>\n<td class=\"first\">obj:Object..</td>\n<td class=\"last\">Multiple objects to extend with.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Object - Same as target, the extended object.</div>\n</div>\n<div class=\"memberDetails\" id=\"formatSize\">\n<h3>formatSize<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction formatSize(size:Number):String</code>\n<div class=\"memberDescription\">Formats the specified number as a size string for example 1024 becomes 1 KB.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">size:Number</td>\n<td class=\"last\">Size to format as string.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Formatted size string.</div>\n</div>\n<div class=\"memberDetails\" id=\"getPos\">\n<h3>getPos<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction getPos(node:Element, root:Element):object</code>\n<div class=\"memberDescription\">Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">node:Element</td>\n<td class=\"last\">HTML element or element id to get x, y position from.</td>\n</tr>\n<tr>\n<td class=\"first\">root:Element</td>\n<td class=\"last\">Optional root element to stop calculations at.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">object - Absolute position of the specified element object with x, y fields.</div>\n</div>\n<div class=\"memberDetails\" id=\"guid\">\n<h3>guid<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction guid():String</code>\n<div class=\"memberDescription\">Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.\nThe only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages\nto get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.\nIt's more probable for the earth to be hit with an ansteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property\nto an user unique key.\n</div>\n<h4>Returns</h4>\n<div class=\"returns\">String - Virtually unique id.</div>\n</div>\n<div class=\"memberDetails\" id=\"parseSize\">\n<h3>parseSize<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction parseSize(size:String/Number):Number</code>\n<div class=\"memberDescription\">Parses the specified size string into a byte value. For example 10kb becomes 10240.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">size:String/Number</td>\n<td class=\"last\">String to parse or number to just pass through.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Number - Size in bytes.</div>\n</div>\n<div class=\"memberDetails\" id=\"toArray\">\n<h3>toArray<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction toArray(obj:Object):Array</code>\n<div class=\"memberDescription\">Forces anything into an array.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">obj:Object</td>\n<td class=\"last\">Object with length field.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Array - Array object containing all items.</div>\n</div>\n<div class=\"memberDetails last\" id=\"xmlEncode\">\n<h3>xmlEncode<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction xmlEncode(s:String):String</code>\n<div class=\"memberDescription\">Encodes the specified string.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">s:String</td>\n<td class=\"last\">String to encode.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Encoded string.</div>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.BrowserPlus.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.BrowserPlus</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.BrowserPlus</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">BrowserPlus</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>BrowserPlus</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Yahoo BrowserPlus implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.BrowserPlus.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the browserplus runtime.</div>\n</td>\n<td class=\"last\">BrowserPlus</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the browserplus runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Flash.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Flash</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Flash</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Flash</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Flash</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">FlashRuntime implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Flash.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Flash</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Gears.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Gears</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Gears</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Gears</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Gears</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Gears implementation. This runtime supports these features: dragdrop, jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Gears.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Gears</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Html4</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Html4</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Html4</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Html4</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">HTML4 implementation. This runtime has no special features it uses an form that posts files into an hidden iframe.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Html4.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Html4</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Html5</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Html5</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Html5</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Html5</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">HMTL5 implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Html5.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Html5</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Silverlight.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Silverlight</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Silverlight</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Silverlight</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Silverlight</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Silverlight implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Silverlight.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Silverlight</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/general.css",
    "content": "body, html {\n\toverflow: hidden;\n\tbackground-color: #DFE8F6;\n}\n\n#doc3 {\n\tmargin: 0;\n\n\t/* Fix for scrolling issue on Gecko */\n\tposition: fixed; width: 100%; top: 0; left: 0;\n}\n\n#bd, #bd, #yui-main, #detailsView, #classView {\n\theight: 100%;\n}\n\n#hd {\n\tbackground: #1E4176;\n\tborder-bottom: 1px solid #99BBE8;\n}\n\n#hd h1 {\n\tfont-family:Verdana,Arial,Helvetica,sans-serif;\n\tfont-size: 16px;\n\tpadding: 4px 0 4px 8px;\n\tcolor: #fff;\n}\n\n#yui-main #detailsView {\n\toverflow: auto;\n\tmargin: 4px;\n\tmargin-left: 260px;\n\tborder: 1px solid #99BBE8;\n\tbackground: #FFF;\n}\n\n#bd #classView {\n\toverflow: auto;\n\twidth: 250px;\n\tmargin: 4px;\n\tborder: 1px solid #99BBE8;\n\tbackground: #FFF;\n}\n\n.classDetailsContent, .memberDetailsContent {\n\tmargin: 10px;\n\tline-height: 150%;\n}\n\nbody, td, th {\n\tfont-family: \"Trebuchet MS\", \"Bitstream Vera Sans\", Tahoma,Verdana,Arial,Helvetica,sans-serif;\n\tfont-size: 13px;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: \"Trebuchet MS\", \"Bitstream Vera Sans\", verdana, lucida, arial, helvetica, sans-serif;\n\tfont-weight: bold;\n\tletter-spacing: 1px;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\twidth: 90%;\n}\n\nh1 {\n\tfont-size: 20px;\n}\n\nh2 {\n\tfont-size: 16px;\n}\n\nh3 {\n\tfont-size: 16px;\n}\n\nh4 {\n\tfont-size: 13px;\n}\n\na, a:visited, a:active, a:link {\n\tcolor: #0000CC;\n\ttext-decoration: none;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\ntable.summary {\n\tborder: 1px solid #999999;\n\tmargin-bottom: 20px;\n\tmargin-right: 10px;\n\tmargin-top: 10px;\n\twidth: 100%;\n\tborder-collapse: collapse;\n}\n\ntable.summary th {\n\tfont-weight: bold;\n\ttext-align: left;\n\tvertical-align: bottom;\n\tbackground-color: #627C9D;\n\tcolor: #FFFFFF;\n\twhite-space: nowrap;\n\tpadding: 4px;\n}\n\ntable.summary td {\n\tborder: 1px solid #999999;\n\tpadding: 4px;\n}\n\ntable.summary a.memberName {\n\tfont-weight: bold;\n}\n\ntable.summary tr.even {\n\tbackground: #f2f2f2;\n}\n\ntable.summary td.first div {\n\tmargin-left: 30px;\n}\n\ntable.summary td.first {\n\twidth: 95%;\n}\n\ntable.summary td.last {\n\twidth: 5%;\n}\n\ntable.summary .deprecated {\n\tmargin: 0;\n}\n\n.params, .returns, .see {\n\tmargin-left: 20px;\n\tmargin-bottom: 10px;\n}\n\n.params td.last {\n\tpadding-left: 10px;\n}\n\n.classDescription, .memberDescription, .deprecated {\n\tmargin: 10px 0 10px 0;\n}\n\n.inherited td.first {\n\tbackground: url(../img/inherited.gif) no-repeat 10px 5px;\n}\n\n.inheritageList span {\n\tpadding-right: 20px;\n\tmargin-right: 5px;\n\tbackground: url(../img/inherit-arrow.gif) no-repeat center right;\n}\n\n.inheritageList span.last {\n\tbackground: transparent;\n}\n\n.classDetails .first {\n\tfont-weight: bold;\n\tpadding-right: 20px;\n}\n\n.memberDetails {\n\tmargin-bottom: 10px;\n}\n\npre {\n\tbackground-color: #F2F2F2;\n\tfont-family: \"Lucida Console\",\"Courier New\",Courier,monospace;\n\tfont-size: 12px;\n\tmargin-bottom: 10px;\n\tmargin-top: 10px;\n\toverflow: auto;\n\tpadding: 5px 5px 5px 5px;\n}\n\n.memberType {\n\tpadding-left: 10px;\n\tfont-size: 13px;\n\tfont-weight: normal;\n}\n\n.selected {\n\tfont-weight: bold;\n}\n\n.memberDetails {\n\tborder-bottom: 1px solid gray;\n\tmargin-bottom: 10px;\n}\n\n.details {\n\tpadding-bottom: 10px;\n}\n\n.details .last {\n\tborder: 0;\n}\n\n.details h2 {\n\twidth: 100%;\n\tbackground-color: #627C9D;\n\tcolor: #FFF;\n\tpadding: 4px;\n}\n\n.memberDetails {\n\tpadding-left: 15px;\n}\n\ncode.syntax {\n\tbackground-color: #F2F2F2;\n}\n\n.deprecated {\n\tfont-weight: bold;\n}\n\n.static {\n\tcolor: gray;\n}\n\n.version span, .author span {\n\tfont-weight: bold;\n}\n\n#yui-main #detailsView.loading {\n\tbackground: #FFF url('../img/loader.gif') no-repeat center center; \n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/grids.css",
    "content": "/*\nCopyright (c) 2009, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 2.7.0\n*/\n/**\n * YUI Grids\n * @module grids\n * @namespace yui-\n * @requires reset, fonts\n */\n\n/**  \n * Note: Throughout this file, the *property (star-property) filter is used \n * to give a value to IE that other browsers do not see. _property is only seen \n * by IE7, so the combo of *prop and _prop can target between IE6 and IE7.\n * \n * More information on these filters and related validation errors:\n * http://tech.groups.yahoo.com/group/ydn-javascript/message/40059\n */\n\n/**\n * Section: General Rules\n */\n\nbody {\n\ttext-align: center;\n}\n\n/**\n * Section: Page Width Rules (#doc, #doc2, #doc3, #doc4)\n */\n\n#doc,#doc2,#doc3,#doc4,\n.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7 {\n\tmargin: auto;\n\ttext-align: left;\n\twidth: 57.69em;\n\t*width: 56.25em;\n}\n\n/* 950 Centered (doc2) */\n#doc2 {\n\twidth: 73.076em;\n\t*width: 71.25em;\n}\n\n/* 100% (doc3) */\n#doc3 {\n/**\n * Left and Right margins are not a structural part of Grids. Without them \n * Grids works fine, but content bleeds to the very edge of the document, which\n * often impairs readability and usability. They are provided because they \n * prevent the content from \"bleeding\" into the browser's chrome. \n */\n\tmargin: auto 10px;\n\twidth: auto;\n}\n\n/* 974 Centered (doc4) */\n#doc4 {\n\twidth: 74.923em;\n\t*width: 73.05em;\n}\n\n/**\n * Section: Preset Template Rules (.yui-t[1-6])\n */\n\n\n.yui-b {\n\t/* to preserve source-order independence for Gecko */\n\tposition: relative;\n}\n\n.yui-b {\n\t/* to preserve source-order independence for IE */\n\t_position: static;\n}\n\n#yui-main .yui-b {\n\t/* to preserve source-order independence for Gecko */\n\tposition: static;\n}\n\n#yui-main,\n.yui-g .yui-u .yui-g {\n\twidth: 100%;\n}\n\n.yui-t1 #yui-main,\n.yui-t2 #yui-main,\n.yui-t3 #yui-main {\n\tfloat: right;\n\t/* IE: preserve layout at narrow widths */\n\tmargin-left: -25em;\n}\n\n.yui-t4 #yui-main,\n.yui-t5 #yui-main,\n.yui-t6 #yui-main {\n\tfloat: left;\n\t/* IE: preserve layout at narrow widths */\n\tmargin-right: -25em;\n}\n\n/** \n * For Specific Template Presets\n */\n\n.yui-t1 .yui-b {\n\tfloat: left;\n\twidth: 12.30769em;\n\t*width: 12.00em;\n}\n\n.yui-t1 #yui-main .yui-b {\n\tmargin-left: 13.30769em;\n\t*margin-left: 13.05em;\n}\n\n.yui-t2 .yui-b {\n\tfloat: left;\n\twidth: 13.8461em;\n\t*width: 13.50em;\n}\n\n.yui-t2 #yui-main .yui-b {\n\tmargin-left: 14.8461em;\n\t*margin-left: 14.55em;\n}\n\n.yui-t3 .yui-b {\n\tfloat: left;\n\twidth: 23.0769em;\n\t*width: 22.50em;\n}\n\n.yui-t3 #yui-main .yui-b {\n\tmargin-left: 24.0769em;\n\t*margin-left: 23.62em;\n}\n\n.yui-t4 .yui-b {\n\tfloat: right;\n\twidth: 13.8456em;\n\t*width: 13.50em;\n}\n\n.yui-t4 #yui-main .yui-b {\n\tmargin-right: 14.8456em;\n\t*margin-right: 14.55em;\n}\n\n.yui-t5 .yui-b {\n\tfloat: right;\n\twidth: 18.4615em;\n\t*width: 18.00em;\n}\n\n.yui-t5 #yui-main .yui-b {\n\tmargin-right: 19.4615em;\n\t*margin-right: 19.125em;\n}\n\n.yui-t6 .yui-b {\n\tfloat: right;\n\twidth: 23.0769em;\n\t*width: 22.50em;\n}\n\n.yui-t6 #yui-main .yui-b {\n\tmargin-right: 24.0769em;\n\t*margin-right: 23.62em;\n}\n\n.yui-t7 #yui-main .yui-b {\n\tdisplay: block;\n\tmargin: 0 0 1em 0;\n}\n\n#yui-main .yui-b {\n\tfloat: none;\n\twidth: auto;\n}\n\n/**\n * Section: Grids and Nesting Grids\n */\n\n/* Children generally take half the available space */\n.yui-gb .yui-u,\n.yui-g .yui-gb .yui-u,\n.yui-gb .yui-g,\n.yui-gb .yui-gb,\n.yui-gb .yui-gc,\n.yui-gb .yui-gd,\n.yui-gb .yui-ge,\n.yui-gb .yui-gf,\n.yui-gc .yui-u, \n.yui-gc .yui-g,\n.yui-gd .yui-u {\n\tfloat: left;\n}\n\n/* Float units (and sub grids) to the right */\n.yui-g .yui-u,\n.yui-g .yui-g,\n.yui-g .yui-gb, \n.yui-g .yui-gc, \n.yui-g .yui-gd, \n.yui-g .yui-ge, \n.yui-g .yui-gf, \n.yui-gc .yui-u, \n.yui-gd .yui-g,\n.yui-g .yui-gc .yui-u,\n.yui-ge .yui-u, \n.yui-ge .yui-g, \n.yui-gf .yui-g,\n.yui-gf .yui-u {\n\tfloat: right;\n}\n\n/*Float units (and sub grids) to the left */\n.yui-g div.first, \n.yui-gb div.first,\n.yui-gc div.first,\n.yui-gd div.first, \n.yui-ge div.first, \n.yui-gf div.first,\n.yui-g .yui-gc div.first,\n.yui-g .yui-ge div.first,\n.yui-gc div.first div.first {\n\tfloat: left;\n}\n\n.yui-g .yui-u,\n.yui-g .yui-g,\n.yui-g .yui-gb,\n.yui-g .yui-gc,\n.yui-g .yui-gd,\n.yui-g .yui-ge,\n.yui-g .yui-gf {\n\twidth: 49.1%;\n}\n\n.yui-gb .yui-u,\n.yui-g .yui-gb .yui-u,\n.yui-gb .yui-g,\n.yui-gb .yui-gb,\n.yui-gb .yui-gc,\n.yui-gb .yui-gd,\n.yui-gb .yui-ge,\n.yui-gb .yui-gf,\n.yui-gc .yui-u, \n.yui-gc .yui-g,\n.yui-gd .yui-u {\n\twidth: 32%;\n\tmargin-left: 1.99%;\n}\n\n/* Give IE some extra breathing room for 1/3-based rounding issues */\n.yui-gb .yui-u {\n\t*margin-left: 1.9%;\n\t*width: 31.9%;\n}\n\n.yui-gc div.first, \n\t.yui-gd .yui-u {\n\twidth: 66%;\n}\n\n.yui-gd div.first {\n\twidth: 32%;\n}\n\n.yui-ge div.first, \n\t.yui-gf .yui-u {\n\twidth: 74.2%;\n}\n\n.yui-ge .yui-u,\n\t.yui-gf div.first {\n\twidth: 24%;\n}\n\n.yui-g .yui-gb div.first,\n.yui-gb div.first, \n.yui-gc div.first, \n.yui-gd div.first {\n\tmargin-left: 0;\n}\n\n/**\n * Section: Deep Nesting \n */\n\n.yui-g .yui-g .yui-u,\n.yui-gb .yui-g .yui-u,\n.yui-gc .yui-g .yui-u,\n.yui-gd .yui-g .yui-u,\n.yui-ge .yui-g .yui-u,\n.yui-gf .yui-g .yui-u {\n\twidth: 49%;\n\t*width: 48.1%;\n\t*margin-left: 0;\n}\n\n.yui-g .yui-g .yui-u {\n\twidth: 48.1%;\n}\n\n/*SF 1927599 from 1.14 to 2.6.0*/\n.yui-g .yui-gb div.first,\n\t.yui-gb .yui-gb div.first {\n\t*margin-right: 0;\n\t*width: 32%;\n\t_width: 31.7%;\n}\n\n.yui-g .yui-gc div.first, \n\t.yui-gd .yui-g {\n\twidth: 66%;\n}\n\n.yui-gb .yui-g div.first {\n\t*margin-right: 4%;\n\t_margin-right: 1.3%;\n}\n\n.yui-gb .yui-gc div.first, \n\t.yui-gb .yui-gd div.first {\n\t*margin-right: 0;\n}\n\n.yui-gb .yui-gb .yui-u,\n\t.yui-gb .yui-gc .yui-u {\n\t*margin-left: 1.8%;\n\t_margin-left: 4%;\n}\n\n.yui-g .yui-gb .yui-u {\n\t_margin-left: 1.0%;\n}\n\n.yui-gb .yui-gd .yui-u {\n\t*width: 66%;\n\t_width: 61.2%;\n}\n\n.yui-gb .yui-gd div.first {\n\t*width: 31%;\n\t_width: 29.5%;\n}\n\n.yui-g .yui-gc .yui-u, \n\t.yui-gb .yui-gc .yui-u {\n\twidth: 32%;\n\t_float: right;\n\tmargin-right: 0;\n\t_margin-left: 0;\n}\n\n.yui-gb .yui-gc div.first {\n\twidth: 66%;\n\t*float: left;\n\t*margin-left: 0;\n}\n\n.yui-gb .yui-ge .yui-u, \n\t.yui-gb .yui-gf .yui-u {\n\tmargin: 0;\n}\n\n.yui-gb .yui-gb .yui-u {\n\t_margin-left: .7%;\n}\n\n.yui-gb .yui-g div.first, \n\t.yui-gb .yui-gb div.first {\n\t*margin-left: 0;\n}\n\n.yui-gc .yui-g .yui-u,\n\t.yui-gd .yui-g .yui-u {\n\t*width: 48.1%;\n\t*margin-left: 0;\n}\n\n.yui-gb .yui-gd div.first {\n\twidth: 32%;\n}\n\n.yui-g .yui-gd div.first {\n\t_width: 29.9%;\n}\n\n.yui-ge .yui-g {\n\twidth: 24%;\n}\n\n.yui-gf .yui-g {\n\twidth: 74.2%;\n}\n\n.yui-gb .yui-ge div.yui-u,\n\t.yui-gb .yui-gf div.yui-u {\n\tfloat: right;\n}\n\n.yui-gb .yui-ge div.first,\n\t.yui-gb .yui-gf div.first {\n\tfloat: left;\n}\n\n/* Width Accommodation for Nested Contexts */\n.yui-gb .yui-ge .yui-u,\n\t.yui-gb .yui-gf div.first {\n\t*width: 24%;\n\t_width: 20%;\n}\n\n/* Width Accommodation for Nested Contexts */\n.yui-gb .yui-ge div.first, \n\t.yui-gb .yui-gf .yui-u {\n\t*width: 73.5%;\n\t_width: 65.5%;\n}\n\n/* Patch for GD within GE */\n.yui-ge div.first .yui-gd .yui-u {\n\twidth: 65%;\n}\n\n.yui-ge div.first .yui-gd div.first {\n\twidth: 32%;\n}\n\n/* @group Clearing */\n#hd:after,\n#bd:after,\n#ft:after,\n.yui-g:after, \n.yui-gb:after, \n.yui-gc:after, \n.yui-gd:after, \n.yui-ge:after, \n.yui-gf:after {\n\tcontent: \".\";\n\tdisplay: block;\n\theight: 0;\n\tclear: both;\n\tvisibility: hidden;\n}\n\n#hd,\n#bd,\n#ft,\n.yui-g, \n.yui-gb, \n.yui-gc, \n.yui-gd, \n.yui-ge, \n.yui-gf {\n\tzoom: 1;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/jquery.treeview.css",
    "content": ".treeview, .treeview ul { \npadding: 0;\nmargin: 0;\nlist-style: none;\n\n\n}\n\n\n\n.treeview ul {\nbackground-color: white;\nmargin-top: 4px;\n}\n\n.treeview .hitarea {\nbackground: transparent -64px -25px no-repeat;\nheight: 16px;\nwidth: 16px;\nmargin-left: -16px;\nfloat: left;\ncursor: pointer;\n}\n/* fix for IE6 */\n* html .hitarea {\n\tdisplay: inline;\n\tfloat: none;\n\n}\n\n.treeview li { \n\tmargin: 0;\n\tpadding: 3px 0pt 3px 16px;\n}\n\n.treeview a.selected {\n\tbackground-color: #eee;\n}\n\n#treecontrol { margin: 1em 0; display: none; }\n\n.treeview li { background: transparent 0 0 no-repeat; }\n.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }\n\n.treeview .expandable-hitarea { background-position: -80px -3px; }\n\n.treeview li.last { background-position: 0 -1766px }\n\n.treeview li.lastCollapsable { background-position: 0 -111px }\n\n.treeview li.lastExpandable { background-position: -32px -67px }\n\n.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }\n\n.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(../img/treeview-famfamfam.gif); } \n\n.classtree li {\n\tfont-family: arial,tahoma,helvetica,sans-serif;\n\tfont-size: 12px;\n}\n\n.classtree li { padding: 3px 0 2px 16px; }\n\n.classtree span {\n\tpadding: 1px 0 1px 18px;\n\tdisplay: block;\n}\n\n.classtree span.root { background: url(../img/root.gif) 0 3px no-repeat;}\n.classtree span.namespace { background: url(../img/namespace.gif) 0 0 no-repeat;}\n.classtree span.class { background: url(../img/class.gif) 0 0 no-repeat; }\n.classtree span.property { background: url(../img/property.gif) 0 0 no-repeat; }\n.classtree span.method { background: url(../img/method.gif) 0 0 no-repeat; }\n.classtree span.event { background: url(../img/event.gif) 0 0 no-repeat; }\n.classtree span.singleton { background: url(../img/static.gif) 0 0 no-repeat; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/reset.css",
    "content": "/*\nCopyright (c) 2009, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 2.7.0\n*/\n/**\n * YUI Reset\n * @module reset\n * @namespace\n * @requires \n */\nhtml {\n\tcolor: #000;\n\tbackground: #FFF;\n}\n\nbody,\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\npre,\ncode,\nform,\nfieldset,\nlegend,\ninput,\nbutton,\ntextarea,\np,\nblockquote,\nth,\ntd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\nfieldset,\nimg {\n\tborder: 0;\n}\n\naddress,\ncaption,\ncite,\ncode,\ndfn,\nem,\nstrong,\nth,\nvar,\noptgroup {\n\tfont-style: inherit;\n\tfont-weight: inherit;\n}\n\ndel,\nins {\n\ttext-decoration: none;\n}\n\nli {\n\tlist-style: none;\n}\n\ncaption,\nth {\n\ttext-align: left;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-size: 100%;\n\tfont-weight: normal;\n}\n\nq:before,\nq:after {\n\tcontent: '';\n}\n\nabbr,\nacronym {\n\tborder: 0;\n\tfont-variant: normal;\n}\n\nsup {\n\tvertical-align: baseline;\n}\n\nsub {\n\tvertical-align: baseline;\n}\n\n/*because legend doesn't inherit in IE */\nlegend {\n\tcolor: #000;\n}\n\ninput,\nbutton,\ntextarea,\nselect,\noptgroup,\noption {\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tfont-style: inherit;\n\tfont-weight: inherit;\n}\n\n/*@purpose To enable resizing for IE */\n/*@branch For IE6-Win, IE7-Win */\ninput,\nbutton,\ntextarea,\nselect {\n\t*font-size: 100%;\n}\n\n\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\n.syntaxhighlighter,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter span\n{\n\tmargin: 0 !important;\n\tpadding: 0 !important;\n\tborder: 0 !important;\n\toutline: 0 !important;\n\tbackground: none !important;\n\ttext-align: left !important;\n\tfloat: none !important;\n\tvertical-align: baseline !important;\n\tposition: static !important;\n\tleft: auto !important;\n\ttop: auto !important;\n\tright: auto !important;\n\tbottom: auto !important;\n\theight: auto !important;\n\twidth: auto !important;\n\tline-height: 1.1em !important;\n\tfont-family: \"Consolas\", \"Monaco\", \"Bitstream Vera Sans Mono\", \"Courier New\", Courier, monospace !important;\n\tfont-weight: normal !important;\n\tfont-style: normal !important;\n\tfont-size: 1em !important;\n}\n\n.syntaxhighlighter\n{\n\twidth: 100% !important;\n\tmargin: 1em 0 1em 0 !important;\n\tpadding: 1px !important; /* adds a little border on top and bottom */\n\tposition: relative !important;\n}\n\n.syntaxhighlighter code {\n\tdisplay: inline !important;\n}\n\n.syntaxhighlighter .bold {\n\tfont-weight: bold !important;\n}\n\n.syntaxhighlighter .italic {\n\tfont-style: italic !important;\n}\n\n.syntaxhighlighter .line .number\n{\n\tfloat: left !important; \n\twidth: 3em !important; \n\tpadding-right: .3em !important;\n\ttext-align: right !important;\n\tdisplay: block !important;\n}\n\n/* Disable numbers when no gutter option is set */\n.syntaxhighlighter.nogutter .line .number\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .line .content\n{\n\tmargin-left: 3.3em !important; \n\tpadding-left: .5em !important;\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter .line .content .block\n{\n\tdisplay: block !important;\n\tpadding-left: 1.5em !important;\n\ttext-indent: -1.5em !important;\n}\n\n.syntaxhighlighter .line .content .spaces\n{\n\tdisplay: none !important;\n}\n\n/* Disable border and margin on the lines when no gutter option is set */\n.syntaxhighlighter.nogutter .line .content\n{\n\tmargin-left: 0 !important; \n\tborder-left: none !important;\n}\n\n.syntaxhighlighter .bar\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .bar.show \n{\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter.collapsed .bar\n{\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter.nogutter .ruler\n{\n\tmargin-left: 0 !important;\n\tpadding-left: 0 !important;\n}\n\n.syntaxhighlighter .ruler\n{\n\tpadding: 0 0 .5em .5em !important;\n\tmargin-left: 3.3em !important;\n\toverflow: hidden !important;\n}\n\n/* Adjust some properties when collapsed */\n\n.syntaxhighlighter.collapsed .lines,\n.syntaxhighlighter.collapsed .ruler\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .lines.no-wrap\n{\n\toverflow: auto;\n\toverflow-y: hidden;\n}\n\n/* Styles for the toolbar */\n\n.syntaxhighlighter .toolbar\n{\n\tposition: absolute !important;\n\tright: 0px !important;\n\ttop: 0px !important;\n\tfont-size: 1px !important;\n\tpadding: 8px 8px 8px 0 !important; /* in px because images don't scale with ems */\n}\n\n.syntaxhighlighter.collapsed .toolbar\n{\n\tfont-size: 80% !important;\n\tpadding: .2em 0 .5em .5em !important;\n\tposition: static !important;\n}\n\n.syntaxhighlighter .toolbar a.item,\n.syntaxhighlighter .toolbar .item\n{\n\tdisplay: block !important;\n\tfloat: left !important;\n\tmargin-left: 8px !important;\n\tbackground-repeat: no-repeat !important;\n\toverflow: hidden !important;\n\ttext-indent: -5000px !important;\n}\n\n.syntaxhighlighter.collapsed .toolbar .item\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter.collapsed .toolbar .item.expandSource\n{\n\tbackground-image: url(../img/magnifier.png) !important;\n\tdisplay: inline !important;\n\ttext-indent: 0 !important;\n\twidth: auto !important;\n\tfloat: none !important;\n\theight: 16px !important;\n\tpadding-left: 20px !important;\n}\n\n.syntaxhighlighter .toolbar .item.viewSource\n{\n\tbackground-image: url(../img/page_white_code.png) !important;\n}\n\n.syntaxhighlighter .toolbar .item.printSource\n{\n\tbackground-image: url(../img/printer.png) !important;\n}\n\n.syntaxhighlighter .toolbar .item.copyToClipboard\n{\n\ttext-indent: 0 !important;\n\tbackground: none !important;\n\toverflow: visible !important;\n}\n\n.syntaxhighlighter .toolbar .item.about\n{\n\tbackground-image: url(../img/help.png) !important;\n}\n\n/** \n * Print view.\n * Colors are based on the default theme without background.\n */\n\n.syntaxhighlighter.printing,\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content,\n.syntaxhighlighter.printing .line .content .block\n{\n\tbackground: none !important;\n}\n\n.syntaxhighlighter .no-wrap .line .content .block\n{\n\twhite-space: nowrap !important;\n}\n\n/* Gutter line numbers */\n.syntaxhighlighter.printing .line .number\n{\n\tcolor: #bbb !important;\n}\n\n/* Add border to the lines */\n.syntaxhighlighter.printing .line .content\n{\n\tcolor: #000 !important;\n}\n\n/* Toolbar when visible */\n.syntaxhighlighter.printing .toolbar,\n.syntaxhighlighter.printing .ruler\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter.printing a\n{\n\ttext-decoration: none !important;\n}\n\n.syntaxhighlighter.printing .plain,\n.syntaxhighlighter.printing .plain a\n{ \n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter.printing .comments,\n.syntaxhighlighter.printing .comments a\n{ \n\tcolor: #008200 !important;\n}\n\n.syntaxhighlighter.printing .string,\n.syntaxhighlighter.printing .string a\n{\n\tcolor: blue !important; \n}\n\n.syntaxhighlighter.printing .keyword\n{ \n\tcolor: #069 !important; \n\tfont-weight: bold !important; \n}\n\n.syntaxhighlighter.printing .preprocessor \n{ \n\tcolor: gray !important; \n}\n\n.syntaxhighlighter.printing .variable \n{ \n\tcolor: #a70 !important; \n}\n\n.syntaxhighlighter.printing .value\n{ \n\tcolor: #090 !important; \n}\n\n.syntaxhighlighter.printing .functions\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter.printing .constants\n{ \n\tcolor: #0066CC !important; \n}\n\n.syntaxhighlighter.printing .script\n{\n\tfont-weight: bold !important;\n}\n\n.syntaxhighlighter.printing .color1,\n.syntaxhighlighter.printing .color1 a\n{ \n\tcolor: #808080 !important; \n}\n\n.syntaxhighlighter.printing .color2,\n.syntaxhighlighter.printing .color2 a\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter.printing .color3,\n.syntaxhighlighter.printing .color3 a\n{ \n\tcolor: red !important; \n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shThemeMoxieDoc.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\n/************************************\n * Default Syntax Highlighter theme.\n * \n * Interface elements.\n ************************************/\n\n.syntaxhighlighter\n{\n\tbackground-color: #E7E5DC !important;\n}\n\n/* Highlighed line number */\n.syntaxhighlighter .line.highlighted .number\n{\n\tbackground-color: #6CE26C !important;\n\tcolor: black !important;\n}\n\n/* Highlighed line */\n.syntaxhighlighter .line.highlighted.alt1 .content,\n.syntaxhighlighter .line.highlighted.alt2 .content\n{\n\tbackground-color: #6CE26C !important;\n}\n\n/* Gutter line numbers */\n.syntaxhighlighter .line .number\n{\n\tcolor: #5C5C5C !important;\n}\n\n/* Add border to the lines */\n.syntaxhighlighter .line .content\n{\n\tborder-left: 3px solid #99BBE8 !important;\n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter.printing .line .content \n{\n\tborder: 0 !important;\n}\n\n/* First line */\n.syntaxhighlighter .line.alt1 .content\n{\n\tbackground-color: #fff !important;\n}\n\n/* Second line */\n.syntaxhighlighter .line.alt2 .content\n{\n\tbackground-color: #F8F8F8 !important;\n}\n\n.syntaxhighlighter .line .content .block\n{\n\tbackground: url(../img/wrapping.png) 0 1.1em no-repeat !important;\n}\n\n.syntaxhighlighter .ruler\n{\n\tcolor: silver !important;\n\tbackground-color: #F8F8F8 !important;\n\tborder-left: 3px solid #6CE26C !important;\n}\n\n.syntaxhighlighter.nogutter .ruler\n{\n\tborder: 0 !important;\n}\n\n.syntaxhighlighter .toolbar\n{\n\tbackground-color: #F8F8F8 !important;\n\tborder: #E7E5DC solid 1px !important;\n}\n\n.syntaxhighlighter .toolbar a\n{\n\tcolor: #a0a0a0 !important;\n}\n\n.syntaxhighlighter .toolbar a:hover\n{\n\tcolor: red !important;\n}\n\n/************************************\n * Actual syntax highlighter colors.\n ************************************/\n.syntaxhighlighter .plain,\n.syntaxhighlighter .plain a\n{ \n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter .comments,\n.syntaxhighlighter .comments a\n{ \n\tcolor: #008200 !important;\n}\n\n.syntaxhighlighter .string,\n.syntaxhighlighter .string a\n{\n\tcolor: blue !important; \n}\n\n.syntaxhighlighter .keyword\n{ \n\tcolor: #069 !important; \n\tfont-weight: bold !important; \n}\n\n.syntaxhighlighter .preprocessor \n{ \n\tcolor: gray !important; \n}\n\n.syntaxhighlighter .variable \n{ \n\tcolor: #a70 !important; \n}\n\n.syntaxhighlighter .value\n{ \n\tcolor: #090 !important; \n}\n\n.syntaxhighlighter .functions\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter .constants\n{ \n\tcolor: #0066CC !important; \n}\n\n.syntaxhighlighter .script\n{ \n\tbackground-color: yellow !important;\n}\n\n.syntaxhighlighter .color1,\n.syntaxhighlighter .color1 a\n{ \n\tcolor: #808080 !important; \n}\n\n.syntaxhighlighter .color2,\n.syntaxhighlighter .color2 a\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter .color3,\n.syntaxhighlighter .color3 a\n{ \n\tcolor: red !important; \n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Plupload API</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/jquery.treeview.css\" />\n<link type=\"text/css\" rel=\"stylesheet\" href=\"css/shCore.css\" />\n<link type=\"text/css\" rel=\"stylesheet\" href=\"css/shThemeMoxieDoc.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n<script type=\"text/javascript\" src=\"js/shCore.js\"></script>\n<script type=\"text/javascript\" src=\"js/shBrushJScript.js\"></script>\n</head>\n<body>\n<div id=\"doc3\" class=\"yui-t1\" style=\"height:500px\">\n<div id=\"hd\">\n<h1>Plupload API</h1>\n</div>\n<div id=\"bd\">\n<div id=\"yui-main\">\n<div id=\"detailsView\" class=\"yui-b\">\n<!--Gets filled using Ajax-->\n</div>\n</div>\n<div id=\"classView\" class=\"yui-b\">\n<ul id=\"browser\" class=\"classtree treeview-famfamfam\">\n<li>\n<span class=\"root\">API Documentation</span>\n<ul>\n<li class=\"closed\">\n<span class=\"namespace\" title=\"Namespace\">\n<a href=\"#\">plupload</a>\n</span>\n<ul>\n<li class=\"closed\">\n<span class=\"namespace\" title=\"Namespace\">\n<a href=\"#\">runtimes</a>\n</span>\n<ul>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.BrowserPlus.html\">BrowserPlus</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Flash.html\">Flash</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Gears.html\">Gears</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Html4.html\">Html4</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Html5.html\">Html5</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Silverlight.html\">Silverlight</a>\n</span>\n</li>\n</ul>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</span>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.File.html\">File</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</span>\n</li>\n</ul>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.html\">plupload</a>\n</span>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/general.js",
    "content": "(function($){\n\tvar currentPage, currentHash;\n\n\tfunction resizeUI() {\n\t\t$('#doc3').css('height', (window.innerHeight || document.documentElement.clientHeight) - $('#hd').height() - 12);\n\t}\n\n\tfunction scrollToHash(hash) {\n\t\tif (hash) {\n\t\t\t$(hash).each(function() {\n\t\t\t\t$(this)[0].scrollIntoView();\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction loadURL(url) {\n\t\tvar parts, hash;\n\n\t\t// Trim away everything but the file name\n\t\turl = /([^\\/]+)$/.exec(url)[0];\n\n\t\t// Parse out parts\n\t\tparts = /^([^#]+)(#.+)?$/.exec(url);\n\t\thash = parts[2];\n\n\t\t// In page link, no need to load anything\n\t\tif (parts[1] == currentPage) {\n\t\t\tif (hash)\n\t\t\t\tscrollToHash(hash);\n\t\t\telse\n\t\t\t\t $('#detailsView')[0].scrollTop = 0;\n\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentPage = parts[1];\n\n\t\t$(\"#classView a.selected\").removeClass('selected');\n\t\t$(\"#classView a[href='\" + currentPage.replace(/^.*\\/([^\\/]+)$/, '$1') + \"']\").addClass('selected').focus().parents(\"li.expandable\").each(function() {\n\t\t\tvar li = $(this).removeClass(\"expandable\").addClass(\"collapsable\");\n\n\t\t\tli.find(\"> div.expandable-hitarea\").removeClass(\"expandable-hitarea\").addClass(\"collapsable-hitarea\");\n\t\t\tli.find(\"> ul\").show();\n\t\t});\n\n\t\t$('#detailsView').find(\"div.page\").hide();\n\n\t\t// Check if the page has been loaded before\n\t\tif ($(\"#detailsView div[url='\" + currentPage + \"']\").show().length == 0) {\n\t\t\t$('#detailsView').addClass(\"loading\");\n\n\t\t\t// Load page and cache it in a div\n\t\t\t$.get(currentPage, \"\", function(data) {\n\t\t\t\tdata = /<body[^>]*>([\\s\\S]+)<\\/body>/.exec(data);\n\n\t\t\t\tif (data) {\n\t\t\t\t\t$('#detailsView').removeClass(\"loading\").append('<div url=\"' + currentPage + '\" class=\"page\">' + data[1] + '</div>')[0].scrollTop = 0;\n\n\t\t\t\t\tSyntaxHighlighter.config.clipboardSwf = 'js/clipboard.swf';\n\t\t\t\t\tSyntaxHighlighter.highlight({gutter : false});\n\n\t\t\t\t\tscrollToHash(hash);\n\t\t\t\t}\n\t\t\t});\n\t\t} else\n\t\t\tscrollToHash(hash);\n\t}\n\n\t$().ready(function(){\n\t\t$(\"#browser\").treeview();\n\t\t$(window).resize(resizeUI).trigger('resize');\n\n\t\twindow.setInterval(function() {\n\t\t\tvar hash = document.location.hash;\n\n\t\t\tif (hash != currentHash && hash) {\n\t\t\t\tloadURL(hash.replace(/\\-/g, '#').substring(1));\n\t\t\t\tcurrentHash = hash;\n\t\t\t}\n\t\t}, 100);\n\n\t\t$(\"a\").live(\"click\", function(e) {\n\t\t\tvar url = e.target.href;\n\n\t\t\tif (e.button == 0) {\n\t\t\t\tif (url.indexOf('class_') != -1 || url.indexOf('alias_') != -1 || url.indexOf('member_') != -1) {\n\t\t\t\t\tdocument.location.hash = e.target.href.replace(/^.*\\/([^\\/]+)/, '$1').replace(/#/g, '-');\n\n\t\t\t\t\tloadURL(url);\n\t\t\t\t}\n\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t});\n\t});\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\nSyntaxHighlighter.brushes.JScript = function()\n{\n\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t;\n\n\tthis.regexList = [\n\t\t{ regex: SyntaxHighlighter.regexLib.singleLineCComments,\tcss: 'comments' },\t\t\t// one line comments\n\t\t{ regex: SyntaxHighlighter.regexLib.multiLineCComments,\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t{ regex: SyntaxHighlighter.regexLib.singleQuotedString,\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\t\tcss: 'keyword' }\t\t\t// keywords\n\t\t];\n\t\n\tthis.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);\n};\n\nSyntaxHighlighter.brushes.JScript.prototype\t= new SyntaxHighlighter.Highlighter();\nSyntaxHighlighter.brushes.JScript.aliases\t= ['js', 'jscript', 'javascript'];\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('f(!1q.2E){l 2E=h(){l p={77:{\"1e-1f\":\"\",\"79-2P\":1,\"1I\":u,\"6V-70\":U,\"1C-2A\":4,\"5f\":N,\"4Z\":U,\"1z\":U,\"56\":N,\"7G-7F\":U,\"6Z\":N,\"4S-1m\":U},M:{52:u,5P:16,5S:16,8k:N,8l:N,83:\"4R\",1k:{3Y:\"97 1c\",41:\"9b 1c\",5U:\"9O 93 7A\",6t:\"9B I 9E 23 8w 7A 8o\",34:\"34\",6P:\"?\",1v:\"2E\\\\n\\\\n\",6F:\"8p\\'t 8I 87 D: \",7X:\"8V 8v\\'t bD D 2u-2c bf: \",6H:\"<!be 2u aV \\\\\"-//9V//6U bz 1.0 bx//bI\\\\\" \\\\\"2g://6D.6v.6m/bi/7c/6U/7c-a4.aw\\\\\"><2u ay=\\\\\"2g://6D.6v.6m/as/8r\\\\\"><6l><8T 2g-92=\\\\\"8P-8L\\\\\" 5B=\\\\\"2d/2u; 8E=8s-8\\\\\" /><3B>8C 2E</3B></6l><2L 1n=\\\\\"3N-8x:8Z,9y,9H,9I-9Q;9S-4v:#9K;4v:#9J;3N-2A:9L;2d-6k:6i;\\\\\"><A 1n=\\\\\"2d-6k:6i;5D-43:99;\\\\\"><A 1n=\\\\\"3N-2A:9p-9o;\\\\\">2E</A><A 1n=\\\\\"3N-2A:.9m;5D-9l:9k;\\\\\"><A>6f 2.0.9j (9n 9s 6n)</A><A><a 2q=\\\\\"2g://6j.4U\\\\\" 9r=\\\\\"57\\\\\" 1n=\\\\\"4v:#9h;2d-9g:98;\\\\\">2g://6j.4U</a></A></A><A>96 I 94 95.</A><A>9f 9e-6n 9c 9t.</A></A></2L></2u>\"},6T:N},1t:{4D:u,3k:u,3P:u,5K:{}},2B:{},85:{9u:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//4k,9N:/\\\\/\\\\/.*$/4k,9M:/#.*$/4k,9P:/\"(?:\\\\.|(\\\\\\\\\\\\\")|[^\\\\\"\"\\\\n])*\"/g,9T:/\\'(?:\\\\.|(\\\\\\\\\\\\\\')|[^\\\\\\'\\'\\\\n])*\\'/g,9R:/\"(?:\\\\.|(\\\\\\\\\\\\\")|[^\\\\\"\"])*\"/g,9z:/\\'(?:\\\\.|(\\\\\\\\\\\\\\')|[^\\\\\\'\\'])*\\'/g,3p:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=]*/g,9x:{E:/(&1F;|<)\\\\?=?/g,13:/\\\\?(&2o;|>)/g},9v:{E:/(&1F;|<)%=?/g,13:/%(&2o;|>)/g},9w:{E:/(&1F;|<)\\\\s*2c.*?(&2o;|>)/4x,13:/(&1F;|<)\\\\/\\\\s*2c\\\\s*(&2o;|>)/4x}},1z:{12:h(3s){l 3y=L.1s(\"3j\"),4o=p.1z.65;3y.J=\"1z\";D(l 2Y 23 4o){l 6o=4o[2Y],4J=T 6o(3s),28=4J.12();3s.5I[2Y]=4J;f(28==u){1H}f(9G(28)==\"9F\"){28=p.1z.6s(28,3s.1g,2Y)}28.J+=\"5k \"+2Y;3y.1G(28)}q 3y},6s:h(4A,6r,4h){l a=L.1s(\"a\"),4Q=a.1n,4P=p.M,4F=4P.5P,48=4P.5S;a.2q=\"#\"+4h;a.3B=4A;a.5M=6r;a.6q=4h;a.1x=4A;f(55(4F)==N){4Q.1S=4F+\"5x\"}f(55(48)==N){4Q.2t=48+\"5x\"}a.8t=h(e){8D{p.1z.6p(c,e||1q.6w,c.5M,c.6q)}8m(e){p.B.1v(e.6u)}q N};q a},6p:h(69,68,6h,6g,67){l 3U=p.1t.5K[6h],3X;f(3U==u||(3X=3U.5I[6g])==u){q u}q 3X.2h(69,68,67)},65:{3Y:h(4b){c.12=h(){f(4b.V(\"56\")!=U){q}q p.M.1k.3Y};c.2h=h(42,8X,91){l A=4b.A;42.7T.5a(42);A.J=A.J.C(\"51\",\"\")}},41:h(66){c.12=h(){q p.M.1k.41};c.2h=h(8R,8Q,8J){l 3Q=p.B.3G(66.4W).C(/</g,\"&1F;\"),2i=p.B.54(\"\",\"57\",8H,8G,\"8K=0, 8O=1, 8N=0, 6O=1\");3Q=p.B.2D(3Q);2i.L.3h(\"<4R>\"+3Q+\"</4R>\");2i.L.5O()}},5U:h(5e){l 3S,8F,5L=5e.1g;c.12=h(){l 2S=p.M;f(2S.52==u){q u}h 1A(5E){l 5s=\"\";D(l 5y 23 5E){5s+=\"<8S 1f=\\'\"+5y+\"\\' 1U=\\'\"+5E[5y]+\"\\'/>\"}q 5s};h 2v(5t){l 5Q=\"\";D(l 5w 23 5t){5Q+=\" \"+5w+\"=\\'\"+5t[5w]+\"\\'\"}q 5Q};l 5m={1S:2S.5P,2t:2S.5S,1g:5L+\"b8\",6N:\"b7/x-6a-6b\",3B:p.M.1k.5U},5h={b6:\"b4\",b5:\"b9\",ba:\"5M=\"+5L,bd:\"N\"},5g=2S.52,3H;f(/bb/i.1R(5Z.5W)){3H=\"<6e\"+2v({bc:\"b3:b2-aU-aT-aS-aQ\",aR:\"2g://aW.b1.4U/b0/6a/aX/6b/bg.bh#6f=9,0,0,0\"})+2v(5m)+\">\"+1A(5h)+1A({bB:5g})+\"</6e>\"}F{3H=\"<bA\"+2v(5m)+2v(5h)+2v({bC:5g})+\"/>\"}3S=L.1s(\"A\");3S.1x=3H;q 3S};c.2h=h(bH,bG,5T){l 6d=5T.bE;6z(6d){2N\"7u\":l 53=p.B.2D(p.B.3G(5e.4W).C(/&1F;/g,\"<\").C(/&2o;/g,\">\").C(/&bw;/g,\"&\"));f(1q.6c){1q.6c.bm(\"2d\",53)}F{q p.B.2D(53)}2N\"bk\":p.B.1v(p.M.1k.6t);2m;2N\"bj\":p.B.1v(5T.6u);2m}}},bo:h(58){c.12=h(){q p.M.1k.34};c.2h=h(bu,bt,bs){l 1W=L.1s(\"bp\"),1O=u;f(p.1t.3P!=u){L.2L.5a(p.1t.3P)}p.1t.3P=1W;1W.1n.bq=\"aP:aO;1S:6L;2t:6L;E:-6K;43:-6K;\";L.2L.1G(1W);1O=1W.5c.L;6J(1O,1q.L);1O.3h(\"<A 1e=\\\\\"\"+58.A.J.C(\"51\",\"\")+\" ae\\\\\">\"+58.A.1x+\"</A>\");1O.5O();1W.5c.4d();1W.5c.34();h 6J(6M,64){l 2F=64.82(\"4Y\");D(l i=0;i<2F.v;i++){f(2F[i].6R.ac()==\"6Q\"&&/aa\\\\.19$/.1R(2F[i].2q)){6M.3h(\"<4Y 6N=\\\\\"2d/19\\\\\" 6R=\\\\\"6Q\\\\\" 2q=\\\\\"\"+2F[i].2q+\"\\\\\"></4Y>\")}}}}},af:h(ag){c.12=h(){q p.M.1k.6P};c.2h=h(aj,ah){l 2i=p.B.54(\"\",\"57\",ai,a9,\"6O=0\"),1O=2i.L;1O.3h(p.M.1k.6H);1O.5O();2i.4d()}}}},B:{5H:h(6G){q 6G+3J.9Y(3J.9W()*9X).2r()},5o:h(5R,5G){l 3m={},1T;D(1T 23 5R){3m[1T]=5R[1T]}D(1T 23 5G){3m[1T]=5G[1T]}q 3m},8d:h(5z){6z(5z){2N\"U\":q U;2N\"N\":q N}q 5z},54:h(3p,6x,44,4c,2J){l x=(6y.1S-44)/2,y=(6y.2t-4c)/2;2J+=\", E=\"+x+\", 43=\"+y+\", 1S=\"+44+\", 2t=\"+4c;2J=2J.C(/^,/,\"\");l 49=1q.a5(3p,6x,2J);49.4d();q 49},7Q:h(1M,25,24){f(1M.6A){1M[\"e\"+25+24]=24;1M[25+24]=h(){1M[\"e\"+25+24](1q.6w)};1M.6A(\"an\"+25,1M[25+24])}F{1M.aG(25,24,N)}},1v:h(z){1v(p.M.1k.1v+z)},4l:h(4M,6B){l 2k=p.1t.4D,3b=u;f(2k==u){2k={};D(l 4G 23 p.2B){l 37=p.2B[4G].aF;f(37==u){1H}D(l i=0;i<37.v;i++){2k[37[i]]=4G}}p.1t.4D=2k}3b=p.2B[2k[4M]];f(3b==u&&6B!=N){p.B.1v(p.M.1k.6F+4M)}q 3b},4n:h(z,6E){l 2U=z.1P(\"\\\\n\");D(l i=0;i<2U.v;i++){2U[i]=6E(2U[i])}q 2U.5u(\"\\\\n\")},74:h(){l A=L.1s(\"A\"),3e=L.1s(\"A\"),6C=10,i=1;29(i<=aD){f(i%6C===0){A.1x+=i;i+=(i+\"\").v}F{A.1x+=\"&aI;\";i++}}3e.J=\"5f 2P\";3e.1G(A);q 3e},6W:h(z){q z.C(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\")},84:h(z){l 3d,4u={},4p=T R(\"^\\\\\\\\[(?<4q>(.*?))\\\\\\\\]$\"),6S=T R(\"(?<1f>[\\\\\\\\w-]+)\"+\"\\\\\\\\s*:\\\\\\\\s*\"+\"(?<1U>\"+\"[\\\\\\\\w-%#]+|\"+\"\\\\\\\\[.*?\\\\\\\\]|\"+\"\\\\\".*?\\\\\"|\"+\"\\'.*?\\'\"+\")\\\\\\\\s*;?\",\"g\");29((3d=6S.Q(z))!=u){l 2f=3d.1U.C(/^[\\'\"]|[\\'\"]$/g,\"\");f(2f!=u&&4p.1R(2f)){l m=4p.Q(2f);2f=m.4q.v>0?m.4q.1P(/\\\\s*,\\\\s*/):[]}4u[3d.1f]=2f}q 4u},7g:h(z,19){f(z==u||z.v==0||z==\"\\\\n\"){q z}z=z.C(/</g,\"&1F;\");z=z.C(/ {2,}/g,h(m){l 4r=\"\";D(l i=0;i<m.v-1;i++){4r+=\"&1X;\"}q 4r+\" \"});f(19!=u){z=p.B.4n(z,h(2s){f(2s.v==0){q\"\"}l 3c=\"\";2s=2s.C(/^(&1X;| )+/,h(s){3c=s;q\"\"});f(2s.v==0){q 3c}q 3c+\"<I 1e=\\\\\"\"+19+\"\\\\\">\"+2s+\"</I>\"})}q z},7a:h(61,62){l 2I=61.2r();29(2I.v<62){2I=\"0\"+2I}q 2I},5p:h(){l 3x=L.1s(\"A\"),35,3r=0,5i=L.2L,1g=p.B.5H(\"5p\"),2Q=\"<A 1e=\\\\\"\",2V=\"</A>\",4H=\"</1V>\";3x.1x=2Q+\"7P\\\\\">\"+2Q+\"1m\\\\\">\"+2Q+\"2P\\\\\">\"+2Q+\"5B\"+\"\\\\\"><1V 1e=\\\\\"7i\\\\\"><1V 1g=\\\\\"\"+1g+\"\\\\\">&1X;\"+4H+4H+2V+2V+2V+2V;5i.1G(3x);35=L.ar(1g);f(/aq/i.1R(5Z.5W)){l 63=1q.ao(35,u);3r=7b(63.ap(\"1S\"))}F{3r=35.at}5i.5a(3x);q 3r},76:h(5Y,60){l 1C=\"\";D(l i=0;i<60;i++){1C+=\" \"}q 5Y.C(/\\\\t/g,1C)},71:h(2C,4w){l az=2C.1P(\"\\\\n\"),1C=\"\\\\t\",40=\"\";D(l i=0;i<50;i++){40+=\"                    \"}h 6I(3z,18,5X){q 3z.1Q(0,18)+40.1Q(0,5X)+3z.1Q(18+1,3z.v)};2C=p.B.4n(2C,h(2a){f(2a.1i(1C)==-1){q 2a}l 18=0;29((18=2a.1i(1C))!=-1){l 7r=4w-18%4w;2a=6I(2a,18,7r)}q 2a});q 2C},3G:h(z){l br=/<br\\\\s*\\\\/?>|&1F;br\\\\s*\\\\/?&2o;/4x;f(p.M.8k==U){z=z.C(br,\"\\\\n\")}f(p.M.8l==U){z=z.C(br,\"\")}q z},33:h(z){q z.C(/\\\\s*$/g,\"\").C(/^\\\\s*/,\"\")},2D:h(z){l 21=p.B.3G(z).1P(\"\\\\n\"),av=T 5V(),8a=/^\\\\s*/,1Z=ax;D(l i=0;i<21.v&&1Z>0;i++){l 3V=21[i];f(p.B.33(3V).v==0){1H}l 3W=8a.Q(3V);f(3W==u){q z}1Z=3J.1Z(3W[0].v,1Z)}f(1Z>0){D(l i=0;i<21.v;i++){21[i]=21[i].1Q(1Z)}}q 21.5u(\"\\\\n\")},7d:h(2K,2O){f(2K.G<2O.G){q-1}F{f(2K.G>2O.G){q 1}F{f(2K.v<2O.v){q-1}F{f(2K.v>2O.v){q 1}}}}q 0},30:h(7S,2H){h 7R(4V,7Y){q[T p.4i(4V[0],4V.G,7Y.19)]};l au=0,5N=u,39=[],7Z=2H.4L?2H.4L:7R;29((5N=2H.3q.Q(7S))!=u){39=39.31(7Z(5N,2H))}q 39},7C:h(86){q 86.C(p.85.3p,h(m){q\"<a 2q=\\\\\"\"+m+\"\\\\\">\"+m+\"</a>\"})}},1I:h(88,4T){h 81(5j){l 59=[];D(l i=0;i<5j.v;i++){59.K(5j[i])}q 59};l 3g=4T?[4T]:81(L.82(p.M.83)),80=\"1x\",2e=u;f(3g.v===0){q}D(l i=0;i<3g.v;i++){l 2G=3g[i],2l=p.B.84(2G.J),32;2l=p.B.5o(88,2l);32=2l[\"87\"];f(32==u){1H}f(2l[\"2u-2c\"]==\"U\"){2e=T p.4B(32)}F{l 4O=p.B.4l(32);f(4O){2e=T 4O()}F{1H}}2e.1I(2G[80],2l);l 2p=2e.A;f(p.M.6T){2p=L.1s(\"aA\");2p.1U=2e.A.1x;2p.1n.1S=\"aB\";2p.1n.2t=\"aK\"}2G.7T.aJ(2p,2G)}},aL:h(7U){p.B.7Q(1q,\"aM\",h(){p.1I(7U)})}};p.4i=h(4j,7V,19){c.1U=4j;c.G=7V;c.v=4j.v;c.19=19};p.4i.Y.2r=h(){q c.1U};p.4B=h(4y){l 1J=p.B.4l(4y),4z=T p.2B.aN(),aH=u;f(1J==u){q}1J=T 1J();c.4E=4z;f(1J.3O==u){p.B.1v(p.M.1k.7X+4y);q}4z.5n.K({3q:1J.3O.I,4L:89});h 3a(4K,7W){D(l j=0;j<4K.v;j++){4K[j].G+=7W}};h 89(17,aC){l 8f=17.I,1L=[],4N=1J.5n,8e=17.G+17.E.v,2Z=1J.3O,1l;D(l i=0;i<4N.v;i++){1l=p.B.30(8f,4N[i]);3a(1l,8e);1L=1L.31(1l)}f(2Z.E!=u&&17.E!=u){1l=p.B.30(17.E,2Z.E);3a(1l,17.G);1L=1L.31(1l)}f(2Z.13!=u&&17.13!=u){1l=p.B.30(17.13,2Z.13);3a(1l,17.G+17[0].aE(17.13));1L=1L.31(1l)}q 1L}};p.4B.Y.1I=h(8h,8i){c.4E.1I(8h,8i);c.A=c.4E.A};p.8b=h(){};p.8b.Y={V:h(8c,8g){l 3Z=c.1A[8c];q p.B.8d(3Z==u?8g:3Z)},12:h(8j){q L.1s(8j)},72:h(38,7O){l 2w=[];f(38!=u){D(l i=0;i<38.v;i++){2w=2w.31(p.B.30(7O,38[i]))}}2w=2w.am(p.B.7d);q 2w},73:h(){l 26=c.2R;D(l i=0;i<26.v;i++){f(26[i]===u){1H}l 2x=26[i],45=2x.G+2x.v;D(l j=i+1;j<26.v&&26[i]!==u;j++){l 20=26[j];f(20===u){1H}F{f(20.G>45){2m}F{f(20.G==2x.G&&20.v>2x.v){c.2R[i]=u}F{f(20.G>=2x.G&&20.G<45){c.2R[j]=u}}}}}}},7m:h(2M){l 36=2M.1P(/\\\\n/g),3f=7b(c.V(\"79-2P\")),7e=(3f+36.v).2r().v,7f=c.V(\"1I\",[]);2M=\"\";D(l i=0;i<36.v;i++){l 1r=36[i],2y=/^(&1X;|\\\\s)+/.Q(1r),5A=\"2P a3\"+(i%2==0?1:2),7j=p.B.7a(3f+i,7e),7k=7f.1i((3f+i).2r())!=-1,1E=u;f(2y!=u){1E=2y[0].2r();1r=1r.1Q(1E.v);1E=1E.C(/&1X;/g,\" \");2y=p.1t.3k*1E.v}F{2y=0}1r=p.B.33(1r);f(1r.v==0){1r=\"&1X;\"}f(7k){5A+=\" a6\"}2M+=\"<A 1e=\\\\\"\"+5A+\"\\\\\">\"+\"<I 1e=\\\\\"a7\\\\\">\"+7j+\".</I>\"+\"<1V 1e=\\\\\"5B\\\\\">\"+(1E!=u?\"<I 1e=\\\\\"a2\\\\\">\"+1E.C(/\\\\s/g,\"&1X;\")+\"</I>\":\"\")+\"<1V 1e=\\\\\"7i\\\\\" 1n=\\\\\"5D-E: \"+2y+\"5x !78;\\\\\">\"+1r+\"</1V>\"+\"</1V>\"+\"</A>\"}q 2M},7l:h(5v,5r){l 18=0,3o=\"\",3n=p.B.7g;D(l i=0;i<5r.v;i++){l 1N=5r[i];f(1N===u||1N.v===0){1H}3o+=3n(5v.1Q(18,1N.G-18),\"7h\")+3n(1N.1U,1N.19);18=1N.G+1N.v}3o+=3n(5v.1Q(18),\"7h\");q 3o},1I:h(1j,6Y){l a1=p.M,3l=p.1t,A,9Z,3i,a0=\"78\";c.1A={};c.A=u;c.1m=u;c.I=u;c.1h=u;c.5I={};c.1g=p.B.5H(\"a8\");3l.5K[c.1g]=c;f(1j===u){1j=\"\"}f(3l.3k===u){3l.3k=p.B.5p()}c.1A=p.B.5o(p.77,6Y||{});f(c.V(\"6Z\")==U){c.1A.1z=c.1A.4Z=N}c.A=A=c.12(\"3j\");c.1m=c.12(\"3j\");c.1m.J=\"1m\";J=\"7P\";A.1g=c.1g;f(c.V(\"56\")){J+=\" 51\"}f(c.V(\"4Z\")==N){J+=\" ak\"}f(c.V(\"4S-1m\")==N){c.1m.J+=\" al-4S\"}J+=\" \"+c.V(\"1e-1f\");A.J=J;c.4W=1j;c.I=p.B.6W(1j).C(/\\\\r/g,\" \");3i=c.V(\"1C-2A\");c.I=c.V(\"6V-70\")==U?p.B.71(c.I,3i):p.B.76(c.I,3i);c.I=p.B.2D(c.I);f(c.V(\"1z\")){c.1h=c.12(\"3j\");c.1h.J=\"1h\";c.1h.1G(p.1z.12(c));A.1G(c.1h);l 1h=c.1h;h 5d(){1h.J=1h.J.C(\"75\",\"\")};A.ab=h(){5d();1h.J+=\" 75\"};A.ad=h(){5d()}}f(c.V(\"5f\")){A.1G(p.B.74())}A.1G(c.1m);c.2R=c.72(c.5n,c.I);c.73();1j=c.7l(c.I,c.2R);1j=c.7m(p.B.33(1j));f(c.V(\"7G-7F\")){1j=p.B.7C(1j)}c.1m.1x=1j},bn:h(z){z=z.C(/^\\\\s+|\\\\s+$/g,\"\").C(/\\\\s+/g,\"\\\\\\\\b|\\\\\\\\b\");q\"\\\\\\\\b\"+z+\"\\\\\\\\b\"},bl:h(2W){c.3O={E:{3q:2W.E,19:\"2c\"},13:{3q:2W.13,19:\"2c\"},I:T R(\"(?<E>\"+2W.E.1c+\")\"+\"(?<I>.*?)\"+\"(?<13>\"+2W.13.1c+\")\",\"bv\")}}};q p}()}f(!5V.1i){5V.Y.1i=h(7M,3R){3R=3J.bF(3R||0,0);D(l i=3R;i<c.v;i++){f(c[i]==7M){q i}}q-1}}f(!1q.R){(h(){l 2z={Q:11.Y.Q,7K:5b.Y.7K,C:5b.Y.C,1P:5b.Y.1P},1K={W:/(?:[^\\\\\\\\([#\\\\s.]+|\\\\\\\\(?!k<[\\\\w$]+>|[7B]{[^}]+})[\\\\S\\\\s]?|\\\\((?=\\\\?(?!#|<[\\\\w$]+>)))+|(\\\\()(?:\\\\?(?:(#)[^)]*\\\\)|<([$\\\\w]+)>))?|\\\\\\\\(?:k<([\\\\w$]+)>|[7B]{([^}]+)})|(\\\\[\\\\^?)|([\\\\S\\\\s])/g,by:/(?:[^$]+|\\\\$(?![1-9$&`\\']|{[$\\\\w]+}))+|\\\\$(?:([1-9]\\\\d*|[$&`\\'])|{([$\\\\w]+)})/g,3M:/^(?:\\\\s+|#.*)+/,5F:/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})/,7x:/&&\\\\[\\\\^?/g,7v:/]/g},7n=h(5l,5k,4X){D(l i=4X||0;i<5l.v;i++){f(5l[i]===5k){q i}}q-1},7y=/()??/.Q(\"\")[1]!==3K,3w={};R=h(1d,1Y){f(1d 3T 11){f(1Y!==3K){3L 7N(\"4C\\'t 4I bJ 7H aY 7J 11 4X aZ\")}q 1d.3C()}l 1Y=1Y||\"\",7w=1Y.1i(\"s\")>-1,6X=1Y.1i(\"x\")>-1,5q=N,3u=[],14=[],W=1K.W,H,3D,3F,3E,3v;W.O=0;29(H=2z.Q.2n(W,1d)){f(H[2]){f(!1K.5F.1R(1d.15(W.O))){14.K(\"(?:)\")}}F{f(H[1]){3u.K(H[3]||u);f(H[3]){5q=U}14.K(\"(\")}F{f(H[4]){3E=7n(3u,H[4]);14.K(3E>-1?\"\\\\\\\\\"+(3E+1)+(55(1d.5J(W.O))?\"\":\"(?:)\"):H[0])}F{f(H[5]){14.K(3w.7t?3w.7t.7u(H[5],H[0].5J(1)===\"P\"):H[0])}F{f(H[6]){f(1d.5J(W.O)===\"]\"){14.K(H[6]===\"[\"?\"(?!)\":\"[\\\\\\\\S\\\\\\\\s]\");W.O++}F{3D=R.7q(\"&&\"+1d.15(H.G),1K.7x,1K.7v,\"\",{7s:\"\\\\\\\\\"})[0];14.K(H[6]+3D+\"]\");W.O+=3D.v+1}}F{f(H[7]){f(7w&&H[7]===\".\"){14.K(\"[\\\\\\\\S\\\\\\\\s]\")}F{f(6X&&1K.3M.1R(H[7])){3F=2z.Q.2n(1K.3M,1d.15(W.O-1))[0].v;f(!1K.5F.1R(1d.15(W.O-1+3F))){14.K(\"(?:)\")}W.O+=3F-1}F{14.K(H[7])}}}F{14.K(H[0])}}}}}}}3v=11(14.5u(\"\"),2z.C.2n(1Y,/[8y]+/g,\"\"));3v.1u={1c:1d,2j:5q?3u:u};q 3v};R.8B=h(1f,o){3w[1f]=o};11.Y.Q=h(z){l 1b=2z.Q.2n(c,z),1f,i,5C;f(1b){f(7y&&1b.v>1){5C=T 11(\"^\"+c.1c+\"$(?!\\\\\\\\s)\",c.4a());2z.C.2n(1b[0],5C,h(){D(i=1;i<7z.v-2;i++){f(7z[i]===3K){1b[i]=3K}}})}f(c.1u&&c.1u.2j){D(i=1;i<1b.v;i++){1f=c.1u.2j[i-1];f(1f){1b[1f]=1b[i]}}}f(c.3A&&c.O>(1b.G+1b[0].v)){c.O--}}q 1b}})()}11.Y.4a=h(){q(c.3A?\"g\":\"\")+(c.8M?\"i\":\"\")+(c.7D?\"m\":\"\")+(c.3M?\"x\":\"\")+(c.8Y?\"y\":\"\")};11.Y.3C=h(7o){l 4g=T R(c.1c,(7o||\"\")+c.4a());f(c.1u){4g.1u={1c:c.1u.1c,2j:c.1u.2j?c.1u.2j.15(0):u}}q 4g};11.Y.2n=h(90,z){q c.Q(z)};11.Y.8W=h(8U,7p){q c.Q(7p[0])};R.47=h(4f,4e){l 46=\"/\"+4f+\"/\"+(4e||\"\");q R.47[46]||(R.47[46]=T R(4f,4e))};R.3t=h(z){q z.C(/[-[\\\\]{}()*+?.\\\\\\\\^$|,#\\\\s]/g,\"\\\\\\\\$&\")};R.7q=h(z,E,Z,1a,2T){l 2T=2T||{},2X=2T.7s,X=2T.8A,1a=1a||\"\",4s=1a.1i(\"g\")>-1,7E=1a.1i(\"i\")>-1,7L=1a.1i(\"m\")>-1,4t=1a.1i(\"y\")>-1,1a=1a.C(/y/g,\"\"),E=E 3T 11?(E.3A?E:E.3C(\"g\")):T R(E,\"g\"+1a),Z=Z 3T 11?(Z.3A?Z:Z.3C(\"g\")):T R(Z,\"g\"+1a),1D=[],2b=0,1o=0,1p=0,1y=0,27,22,1w,1B,3I,4m;f(2X){f(2X.v>1){3L 8n(\"4C\\'t 4I 8q 8z 7J 3t 7I\")}f(7L){3L 7N(\"4C\\'t 4I 3t 7I 7H 9U 9D 7D 9C\")}3I=R.3t(2X);4m=T 11(\"^(?:\"+3I+\"[\\\\\\\\S\\\\\\\\s]|(?:(?!\"+E.1c+\"|\"+Z.1c+\")[^\"+3I+\"])+)+\",7E?\"i\":\"\")}29(U){E.O=Z.O=1p+(2X?(4m.Q(z.15(1p))||[\"\"])[0].v:0);1w=E.Q(z);1B=Z.Q(z);f(1w&&1B){f(1w.G<=1B.G){1B=u}F{1w=u}}f(1w||1B){1o=(1w||1B).G;1p=(1w?E:Z).O}F{f(!2b){2m}}f(4t&&!2b&&1o>1y){2m}f(1w){f(!2b++){27=1o;22=1p}}F{f(1B&&2b){f(!--2b){f(X){f(X[0]&&27>1y){1D.K([X[0],z.15(1y,27),1y,27])}f(X[1]){1D.K([X[1],z.15(27,22),27,22])}f(X[2]){1D.K([X[2],z.15(22,1o),22,1o])}f(X[3]){1D.K([X[3],z.15(1o,1p),1o,1p])}}F{1D.K(z.15(22,1o))}1y=1p;f(!4s){2m}}}F{E.O=Z.O=0;3L 9q(\"9A 9i 9a 9d 8u\")}}f(1o===1p){1p++}}f(4s&&!4t&&X&&X[0]&&z.v>1y){1D.K([X[0],z.15(1y),1y,z.v])}E.O=Z.O=0;q 1D};',62,728,'||||||||||||this|||if||function||||var||||sh|return||||null|length||||str|div|utils|replace|for|left|else|index|_10f|code|className|push|document|config|false|lastIndex||exec|XRegExp||new|true|getParam|part|vN|prototype|_127||RegExp|create|right|_10d|slice||_c4|pos|css|_128|_117|source|_107|class|name|id|bar|indexOf|_f0|strings|_cb|lines|style|_132|_133|window|_e3|createElement|vars|_x|alert|_137|innerHTML|_134|toolbar|params|_138|tab|_130|_e8|lt|appendChild|continue|highlight|_be|lib|_c7|obj|_ef|doc|split|substr|test|width|_4b|value|span|_3c|nbsp|_108|min|_dc|_98|_136|in|_57|_56|_d7|_135|_8|while|_91|_131|script|text|_b2|_6e|http|execute|wnd|captureNames|_5b|_b5|break|call|gt|_b8|href|toString|_75|height|html|attributes|_d5|_d9|_e4|_fe|size|brushes|_88|unindent|SyntaxHighlighter|_40|_b4|_a2|_7a|_51|m1|body|_dd|case|m2|line|_80|matches|_28|_129|_62|_81|_fa|_12a|_5|_ca|getMatches|concat|_b6|trim|print|_7c|_de|_5e|_d3|_a7|offsetMatches|_5c|_76|_6a|_65|_df|_b0|write|_f6|DIV|spaceWidth|_f3|_4a|_ed|_ec|url|regex|_7d|_2|escape|_10c|_113|_106|_7b|_3|_8e|global|title|addFlags|cc|_112|len|fixInputString|_32|_139|Math|undefined|throw|extended|font|htmlScript|printFrame|_22|_fc|_25|instanceof|_17|_9d|_9e|_18|expandSource|_d1|_8c|viewSource|_1a|top|_4f|_da|key|cache|_10|win|getNativeFlags|_19|_50|focus|_122|_121|_11c|_b|Match|_ba|gm|findBrush|esc|eachLine|_4|_6c|values|_73|_12c|_12f|_6b|color|_89|gi|_bd|_bf|_9|HtmlScript|can|discoveredBrushes|xmlBrush|_f|_5d|_82|supply|_7|_c1|func|_59|_c8|_b7|_e|_d|pre|wrap|_ac|com|_a3|originalCode|from|link|gutter||collapsed|clipboardSwf|_37|popup|isNaN|collapse|_blank|_38|_ae|removeChild|String|contentWindow|hide|_24|ruler|swf|_30|_7e|_ad|item|_101|_2f|regexList|merge|measureSpace|_10b|_ea|_2a|_2c|join|_e9|_2e|px|_2b|_4c|_e5|content|r2|margin|_29|quantifier|_49|guid|toolbarCommands|charAt|highlighters|_27|highlighterId|_a6|close|toolbarItemWidth|_2d|_48|toolbarItemHeight|_35|copyToClipboard|Array|userAgent|_90|_84|navigator|_85|_78|_79|_83|_3f|items|_1e|_16|_13|_12|shockwave|flash|clipboardData|_36|object|version|_15|_14|center|alexgorbatchev|align|head|org|2009|_6|executeCommand|commandName|_a|createButton|copyToClipboardConfirmation|message|w3|event|_4e|screen|switch|attachEvent|_5a|_66|www|_61|noBrush|_47|aboutDialog|insertSpaces|copyStyles|500px|0px|_3e|type|scrollbars|help|stylesheet|rel|_6d|debug|DTD|smart|trimFirstAndLastLines|_10a|_f1|light|tabs|processSmartTabs|findMatches|removeNestedMatches|createRuler|show|processTabs|defaults|important|first|padNumber|parseInt|xhtml1|matchesSortCallback|_e0|_e1|decorate|plain|block|_e6|_e7|processMatches|createDisplayLines|_100|_11b|args|matchRecursive|_93|escapeChar|unicode|get|classRight|_109|classLeft|_105|arguments|clipboard|pP|processUrls|multiline|_12d|links|auto|when|character|one|match|_12e|_fb|TypeError|_d4|syntaxhighlighter|addEvent|defaultAdd|_a1|parentNode|_b9|_bb|_c2|brushNotHtmlScript|_a4|_a8|_b1|toArray|getElementsByTagName|tagName|parseParams|regexLib|_a9|brush|_ab|process|_9a|Highlighter|_cf|toBoolean|_c9|_c6|_d0|_cd|_ce|_d2|bloggerMode|stripBrs|catch|SyntaxError|now|Can|more|xhtml|utf|onclick|delimiters|wasn|your|family|sx|than|valueNames|addPlugin|About|try|charset|_26|400|750|find|_21|location|Type|ignoreCase|menubar|resizable|Content|_20|_1f|param|meta|_11f|Brush|apply|_1b|sticky|Geneva|_11d|_1c|equiv|to|syntax|highlighter|JavaScript|expand|none|3em|contains|view|Alex|unbalanced|2004|Copyright|decoration|0099FF|data|320|4em|bottom|75em|May|large|xx|Error|target|03|Gorbatchev|multiLineCComments|aspScriptTags|scriptScriptTags|phpScriptTags|Arial|multiLineSingleQuotedString|subject|The|flag|the|is|string|typeof|Helvetica|sans|000|fff|1em|singleLinePerlComments|singleLineCComments|copy|doubleQuotedString|serif|multiLineDoubleQuotedString|background|singleQuotedString|using|W3C|random|1000000|round|_f5|_f7|_f2|spaces|alt|transitional|open|highlighted|number|highlighter_|250|shCore|onmouseover|toLowerCase|onmouseout|printing|about|_42|_44|500|_43|nogutter|no|sort|on|getComputedStyle|getPropertyValue|opera|getElementById|1999|offsetWidth|_a5|_99|dtd|1000|xmlns|_8a|textarea|70em|_c5|150|lastIndexOf|aliases|addEventListener|_c0|middot|replaceChild|30em|all|load|Xml|absolute|position|444553540000|codebase|96b8|11cf|ae6d|PUBLIC|download|cabs|constructing|another|pub|macromedia|d27cdb6e|clsid|always|wmode|allowScriptAccess|application|_clipboard|transparent|flashVars|msie|classid|menu|DOCTYPE|option|swflash|cab|TR|error|ok|forHtmlScript|setData|getKeywords|printSource|IFRAME|cssText||_3b|_3a|_39|sgi|amp|Transitional|replaceVar|XHTML|embed|movie|src|configured|command|max|_34|_33|EN|flags'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/model.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<model>\n<namespace fullname=\"plupload\" name=\"plupload\">\n<namespace fullname=\"plupload.runtimes\" name=\"runtimes\">\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.BrowserPlus\" name=\"BrowserPlus\" static=\"true\" summary=\"Yahoo BrowserPlus implementation.\">\n<description>Yahoo BrowserPlus implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the browserplus runtime.\">\n<description>Initializes the browserplus runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Flash\" name=\"Flash\" static=\"true\" summary=\"FlashRuntime implementation.\">\n<description>FlashRuntime implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Gears\" name=\"Gears\" static=\"true\" summary=\"Gears implementation.\">\n<description>Gears implementation. This runtime supports these features: dragdrop, jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Html4\" name=\"Html4\" static=\"true\" summary=\"HTML4 implementation.\">\n<description>HTML4 implementation. This runtime has no special features it uses an form that posts files into an hidden iframe.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Html5\" name=\"Html5\" static=\"true\" summary=\"HMTL5 implementation.\">\n<description>HMTL5 implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Silverlight\" name=\"Silverlight\" static=\"true\" summary=\"Silverlight implementation.\">\n<description>Silverlight implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n</namespace>\n<class fullname=\"plupload.Uploader\" name=\"Uploader\" summary=\"Uploader class, an instance of this class will be created for each upload field.\">\n<description>Uploader class, an instance of this class will be created for each upload field.\n</description>\n<example>\n<example>var uploader = new plupload.Uploader({\n    runtimes : 'gears,html5,flash',\n    browse_button : 'button_id'\n});\n\nuploader.bind('Init', function(up) {\n    alert('Supports drag/drop: ' + (!!up.features.dragdrop));\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n    alert('Selected files: ' + files.length);\n});\n\nuploader.bind('QueueChanged', function(up) {\n    alert('Queued files: ' + uploader.files.length);\n});\n\nuploader.init();</example>\n</example>\n<members>\n<method constructor=\"true\" name=\"Uploader\" summary=\"Constructs a new uploader instance.\">\n<description>Constructs a new uploader instance.\n</description>\n<param name=\"settings\" type=\"Object\">\n<description>Initialization settings, to be used by the uploader instance and runtimes.</description>\n</param>\n</method>\n<property name=\"state\" summary=\"Current state of the total uploading progress.\" type=\"Number\">\n<description>Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED.\nThese states are controlled by the stop/start methods. The default value is STOPPED.\n</description>\n</property>\n<property name=\"runtime\" summary=\"Current runtime name.\" type=\"String\">\n<description>Current runtime name.\n</description>\n</property>\n<property name=\"features\" summary=\"Map of features that are available for the uploader runtime.\" type=\"Object\">\n<description>Map of features that are available for the uploader runtime. Features will be filled\nbefore the init event is called, these features can then be used to alter the UI for the end user.\nSome of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.\n</description>\n</property>\n<property name=\"files\" summary=\"Current upload queue, an array of File instances.\" type=\"Array\">\n<description>Current upload queue, an array of File instances.\n</description>\n<see class=\"plupload.File\"/>\n</property>\n<property name=\"settings\" summary=\"Object with name/value settings.\" type=\"Object\">\n<description>Object with name/value settings.\n</description>\n</property>\n<property name=\"total\" summary=\"Total progess information.\" type=\"plupload.QueueProgress\">\n<description>Total progess information. How many files has been uploaded, total percent etc.\n</description>\n</property>\n<property name=\"id\" summary=\"Unique id for the Uploader instance.\" type=\"String\">\n<description>Unique id for the Uploader instance.\n</description>\n</property>\n<method name=\"init\" summary=\"Initializes the Uploader instance and adds internal event listeners.\">\n<description>Initializes the Uploader instance and adds internal event listeners.\n</description>\n</method>\n<method name=\"refresh\" summary=\"Refreshes the upload instance by dispatching out a refresh event to all runtimes.\">\n<description>Refreshes the upload instance by dispatching out a refresh event to all runtimes.\nThis would for example reposition flash/silverlight shims on the page.\n</description>\n</method>\n<method name=\"start\" summary=\"Starts uploading the queued files.\">\n<description>Starts uploading the queued files.\n</description>\n</method>\n<method name=\"stop\" summary=\"Stops the upload of the queued files.\">\n<description>Stops the upload of the queued files.\n</description>\n</method>\n<method name=\"getFile\" summary=\"Returns the specified file object by id.\">\n<description>Returns the specified file object by id.\n</description>\n<param name=\"id\" type=\"String\">\n<description>File id to look for.</description>\n</param>\n<return type=\"plupload.File\">\n<description>File object or undefined if it wasn't found;</description>\n</return>\n</method>\n<method name=\"removeFile\" summary=\"Removes a specific file.\">\n<description>Removes a specific file.\n</description>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to remove from queue.</description>\n</param>\n</method>\n<method name=\"splice\" summary=\"Removes part of the queue and returns the files removed.\">\n<description>Removes part of the queue and returns the files removed. This will also trigger the FilesRemoved and QueueChanged events.\n</description>\n<param name=\"start\" type=\"Number\">\n<description>(Optional) Start index to remove from.</description>\n</param>\n<param name=\"length\" type=\"Number\">\n<description>(Optional) Lengh of items to remove.</description>\n</param>\n<return type=\"Array\">\n<description>Array of files that was removed.</description>\n</return>\n</method>\n<method name=\"trigger\" summary=\"Dispatches the specified event name and it's arguments to all listeners.\">\n<description>Dispatches the specified event name and it's arguments to all listeners.\n\n</description>\n<param name=\"name\" type=\"String\">\n<description>Event name to fire.</description>\n</param>\n<param name=\"Multiple\" type=\"Object..\">\n<description>arguments to pass along to the listener functions.</description>\n</param>\n</method>\n<method name=\"bind\" summary=\"Adds an event listener by name.\">\n<description>Adds an event listener by name.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Event name to listen for.</description>\n</param>\n<param name=\"func\" type=\"function\">\n<description>Function to call ones the event gets fired.</description>\n</param>\n<param name=\"scope\" type=\"Object\">\n<description>Optional scope to execute the specified function in.</description>\n</param>\n</method>\n<method name=\"unbind\" summary=\"Removes the specified event listener.\">\n<description>Removes the specified event listener.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Name of event to remove.</description>\n</param>\n<param name=\"func\" type=\"function\">\n<description>Function to remove from listener.</description>\n</param>\n</method>\n<method name=\"unbindAll\" summary=\"Removes all event listeners.\">\n<description>Removes all event listeners.\n</description>\n</method>\n<method name=\"destroy\" summary=\"Destroys Plupload instance and cleans after itself.\">\n<description>Destroys Plupload instance and cleans after itself.\n</description>\n</method>\n<event name=\"Init\" summary=\"Fires when the current RunTime has been initialized.\">\n<description>Fires when the current RunTime has been initialized.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"PostInit\" summary=\"Fires after the init event incase you need to perform actions there.\">\n<description>Fires after the init event incase you need to perform actions there.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"Refresh\" summary=\"Fires when the silverlight/flash or other shim needs to move.\">\n<description>Fires when the silverlight/flash or other shim needs to move.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"StateChanged\" summary=\"Fires when the overall state is being changed for the upload queue.\">\n<description>Fires when the overall state is being changed for the upload queue.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"UploadFile\" summary=\"Fires when a file is to be uploaded by the runtime.\">\n<description>Fires when a file is to be uploaded by the runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to be uploaded.</description>\n</param>\n</event>\n<event name=\"BeforeUpload\" summary=\"Fires when just before a file is uploaded.\">\n<description>Fires when just before a file is uploaded. This event enables you to override settings\non the uploader instance before the file is uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to be uploaded.</description>\n</param>\n</event>\n<event name=\"QueueChanged\" summary=\"Fires when the file queue is changed.\">\n<description>Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"UploadProgress\" summary=\"Fires while a file is being uploaded.\">\n<description>Fires while a file is being uploaded. Use this event to update the current file upload progress.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that is currently being uploaded.</description>\n</param>\n</event>\n<event name=\"FilesRemoved\" summary=\"Fires while a file was removed from queue.\">\n<description>Fires while a file was removed from queue.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of files that got removed.</description>\n</param>\n</event>\n<event name=\"FilesAdded\" summary=\"Fires while when the user selects files to upload.\">\n<description>Fires while when the user selects files to upload.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of file objects that was added to queue/selected by the user.</description>\n</param>\n</event>\n<event name=\"FileUploaded\" summary=\"Fires when a file is successfully uploaded.\">\n<description>Fires when a file is successfully uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that was uploaded.</description>\n</param>\n<param name=\"response\" type=\"Object\">\n<description>Object with response properties.</description>\n</param>\n</event>\n<event name=\"ChunkUploaded\" summary=\"Fires when file chunk is uploaded.\">\n<description>Fires when file chunk is uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that the chunk was uploaded for.</description>\n</param>\n<param name=\"response\" type=\"Object\">\n<description>Object with response properties.</description>\n</param>\n</event>\n<event name=\"UploadComplete\" summary=\"Fires when all files in a queue are uploaded.\">\n<description>Fires when all files in a queue are uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of file objects that was added to queue/selected by the user.</description>\n</param>\n</event>\n<event name=\"Error\" summary=\"Fires when a error occurs.\">\n<description>Fires when a error occurs.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"error\" type=\"Object\">\n<description>Contains code, message and sometimes file and other details.</description>\n</param>\n</event>\n<event name=\"Destroy\" summary=\"Fires when destroy method is called.\">\n<description>Fires when destroy method is called.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n</members>\n</class>\n<class fullname=\"plupload.File\" name=\"File\" summary=\"File instance.\">\n<description>File instance.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Name of the file.</description>\n</param>\n<param name=\"size\" type=\"Number\">\n<description>File size.</description>\n</param>\n<members>\n<method constructor=\"true\" name=\"File\" summary=\"Constructs a new file instance.\">\n<description>Constructs a new file instance.\n</description>\n<param name=\"id\" type=\"String\">\n<description>Unique file id.</description>\n</param>\n<param name=\"name\" type=\"String\">\n<description>File name.</description>\n</param>\n<param name=\"size\" type=\"Number\">\n<description>File size in bytes.</description>\n</param>\n</method>\n<property name=\"id\" summary=\"File id this is a globally unique id for the specific file.\" type=\"String\">\n<description>File id this is a globally unique id for the specific file.\n</description>\n</property>\n<property name=\"name\" summary=\"File name for example &quot;myfile.\" type=\"String\">\n<description>File name for example \"myfile.gif\".\n</description>\n</property>\n<property name=\"size\" summary=\"File size in bytes.\" type=\"Number\">\n<description>File size in bytes.\n</description>\n</property>\n<property name=\"loaded\" summary=\"Number of bytes uploaded of the files total size.\" type=\"Number\">\n<description>Number of bytes uploaded of the files total size.\n</description>\n</property>\n<property name=\"percent\" summary=\"Number of percentage uploaded of the file.\" type=\"Number\">\n<description>Number of percentage uploaded of the file.\n</description>\n</property>\n<property name=\"status\" summary=\"Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\" type=\"Number\">\n<description>Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\n</description>\n<see class=\"plupload\"/>\n</property>\n</members>\n</class>\n<class fullname=\"plupload.Runtime\" name=\"Runtime\" static=\"true\" summary=\"Runtime class gets implemented by each upload runtime.\">\n<description>Runtime class gets implemented by each upload runtime.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n</class>\n<class fullname=\"plupload.QueueProgress\" name=\"QueueProgress\" summary=\"Runtime class gets implemented by each upload runtime.\">\n<description>Runtime class gets implemented by each upload runtime.\n</description>\n<members>\n<method constructor=\"true\" name=\"QueueProgress\" summary=\"Constructs a queue progress.\">\n<description>Constructs a queue progress.\n</description>\n</method>\n<property name=\"size\" summary=\"Total queue file size.\" type=\"Number\">\n<description>Total queue file size.\n</description>\n</property>\n<property name=\"loaded\" summary=\"Total bytes uploaded.\" type=\"Number\">\n<description>Total bytes uploaded.\n</description>\n</property>\n<property name=\"uploaded\" summary=\"Number of files uploaded.\" type=\"Number\">\n<description>Number of files uploaded.\n</description>\n</property>\n<property name=\"failed\" summary=\"Number of files failed to upload.\" type=\"Number\">\n<description>Number of files failed to upload.\n</description>\n</property>\n<property name=\"queued\" summary=\"Number of files yet to be uploaded.\" type=\"Number\">\n<description>Number of files yet to be uploaded.\n</description>\n</property>\n<property name=\"percent\" summary=\"Total percent of the uploaded bytes.\" type=\"Number\">\n<description>Total percent of the uploaded bytes.\n</description>\n</property>\n<property name=\"bytesPerSec\" summary=\"Bytes uploaded per second.\" type=\"Number\">\n<description>Bytes uploaded per second.\n</description>\n</property>\n<method name=\"reset\" summary=\"Resets the progress to it's initial values.\">\n<description>Resets the progress to it's initial values.\n</description>\n</method>\n</members>\n</class>\n</namespace>\n<class fullname=\"plupload\" name=\"plupload\" static=\"true\" summary=\"Plupload class with some global constants and functions.\">\n<description>Plupload class with some global constants and functions.\n</description>\n<example>\n<example>// Encode entities\nconsole.log(plupload.xmlEncode(\"My string &amp;lt;&amp;gt;\"));\n\n// Generate unique id\nconsole.log(plupload.guid());</example>\n</example>\n<members>\n<property final=\"true\" name=\"STOPPED\" static=\"true\" summary=\"Inital state of the queue and also the state ones it's finished all it's uploads.\" type=\"Object\">\n<description>Inital state of the queue and also the state ones it's finished all it's uploads.\n</description>\n</property>\n<property final=\"true\" name=\"STARTED\" static=\"true\" summary=\"Upload process is running\" type=\"Object\">\n<description>Upload process is running\n</description>\n</property>\n<property final=\"true\" name=\"QUEUED\" static=\"true\" summary=\"File is queued for upload\" type=\"Object\">\n<description>File is queued for upload\n</description>\n</property>\n<property final=\"true\" name=\"UPLOADING\" static=\"true\" summary=\"File is being uploaded\" type=\"Object\">\n<description>File is being uploaded\n</description>\n</property>\n<property final=\"true\" name=\"FAILED\" static=\"true\" summary=\"File has failed to be uploaded\" type=\"Object\">\n<description>File has failed to be uploaded\n</description>\n</property>\n<property final=\"true\" name=\"DONE\" static=\"true\" summary=\"File has been uploaded successfully\" type=\"Object\">\n<description>File has been uploaded successfully\n</description>\n</property>\n<property final=\"true\" name=\"GENERIC_ERROR\" static=\"true\" summary=\"Generic error for example if an exception is thrown inside Silverlight.\" type=\"Object\">\n<description>Generic error for example if an exception is thrown inside Silverlight.\n</description>\n</property>\n<property final=\"true\" name=\"HTTP_ERROR\" static=\"true\" summary=\"HTTP transport error.\" type=\"Object\">\n<description>HTTP transport error. For example if the server produces a HTTP status other than 200.\n</description>\n</property>\n<property final=\"true\" name=\"IO_ERROR\" static=\"true\" summary=\"Generic I/O error.\" type=\"Object\">\n<description>Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</description>\n</property>\n<property final=\"true\" name=\"SECURITY_ERROR\" static=\"true\" summary=\"Generic I/O error.\" type=\"Object\">\n<description>Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</description>\n</property>\n<property final=\"true\" name=\"INIT_ERROR\" static=\"true\" summary=\"Initialization error.\" type=\"Object\">\n<description>Initialization error. Will be triggered if no runtime was initialized.\n</description>\n</property>\n<property final=\"true\" name=\"FILE_SIZE_ERROR\" static=\"true\" summary=\"File size error.\" type=\"Object\">\n<description>File size error. If the user selects a file that is to large it will be blocked and an error of this type will be triggered.\n</description>\n</property>\n<property final=\"true\" name=\"FILE_EXTENSION_ERROR\" static=\"true\" summary=\"File extension error.\" type=\"Object\">\n<description>File extension error. If the user selects a file that isn't valid according to the filters setting.\n</description>\n</property>\n<property final=\"true\" name=\"mimeTypes\" static=\"true\" summary=\"Mime type lookup table.\" type=\"Object\">\n<description>Mime type lookup table.\n</description>\n</property>\n<method name=\"extend\" static=\"true\" summary=\"Extends the specified object with another object.\">\n<description>Extends the specified object with another object.\n</description>\n<param name=\"target\" type=\"Object\">\n<description>Object to extend.</description>\n</param>\n<param name=\"obj\" type=\"Object..\">\n<description>Multiple objects to extend with.</description>\n</param>\n<return type=\"Object\">\n<description>Same as target, the extended object.</description>\n</return>\n</method>\n<method name=\"cleanName\" static=\"true\" summary=\"Cleans the specified name from national characters (diacritics).\">\n<description>Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _.\n</description>\n<param name=\"s\" type=\"String\">\n<description>String to clean up.</description>\n</param>\n<return type=\"String\">\n<description>Cleaned string.</description>\n</return>\n</method>\n<method name=\"addRuntime\" static=\"true\" summary=\"Adds a specific upload runtime like for example flash or gears.\">\n<description>Adds a specific upload runtime like for example flash or gears.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Runtime name for example flash.</description>\n</param>\n<param name=\"obj\" type=\"Object\">\n<description>Object containing init/destroy method.</description>\n</param>\n</method>\n<method name=\"guid\" static=\"true\" summary=\"Generates an unique ID.\">\n<description>Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.\nThe only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages\nto get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.\nIt's more probable for the earth to be hit with an ansteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property\nto an user unique key.\n</description>\n<return type=\"String\">\n<description>Virtually unique id.</description>\n</return>\n</method>\n<method name=\"formatSize\" static=\"true\" summary=\"Formats the specified number as a size string for example 1024 becomes 1 KB.\">\n<description>Formats the specified number as a size string for example 1024 becomes 1 KB.\n</description>\n<param name=\"size\" type=\"Number\">\n<description>Size to format as string.</description>\n</param>\n<return type=\"String\">\n<description>Formatted size string.</description>\n</return>\n</method>\n<method name=\"getPos\" static=\"true\" summary=\"Returns the absolute x, y position of an Element.\">\n<description>Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.\n</description>\n<param name=\"node\" type=\"Element\">\n<description>HTML element or element id to get x, y position from.</description>\n</param>\n<param name=\"root\" type=\"Element\">\n<description>Optional root element to stop calculations at.</description>\n</param>\n<return type=\"object\">\n<description>Absolute position of the specified element object with x, y fields.</description>\n</return>\n</method>\n<method name=\"parseSize\" static=\"true\" summary=\"Parses the specified size string into a byte value.\">\n<description>Parses the specified size string into a byte value. For example 10kb becomes 10240.\n</description>\n<param name=\"size\">\n<type fullname=\"String\"/>\n<type fullname=\"Number\"/>\n<description>String to parse or number to just pass through.</description>\n</param>\n<return type=\"Number\">\n<description>Size in bytes.</description>\n</return>\n</method>\n<method name=\"xmlEncode\" static=\"true\" summary=\"Encodes the specified string.\">\n<description>Encodes the specified string.\n</description>\n<param name=\"s\" type=\"String\">\n<description>String to encode.</description>\n</param>\n<return type=\"String\">\n<description>Encoded string.</description>\n</return>\n</method>\n<method name=\"toArray\" static=\"true\" summary=\"Forces anything into an array.\">\n<description>Forces anything into an array.\n</description>\n<param name=\"obj\" type=\"Object\">\n<description>Object with length field.</description>\n</param>\n<return type=\"Array\">\n<description>Array object containing all items.</description>\n</return>\n</method>\n</members>\n</class>\n</model>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/docs/api/plupload.vsdoc.js",
    "content": "// Namespaces\nplupload = {}\nplupload.runtimes = {}\n\n// Classes\nplupload.runtimes.BrowserPlus = function() {\n\t/// <summary>Yahoo BrowserPlus implementation.</summary>\n}\n\nplupload.runtimes.BrowserPlus.init = function(uploader, callback) {\n\t/// <summary>Initializes the browserplus runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Flash = function() {\n\t/// <summary>FlashRuntime implementation.</summary>\n}\n\nplupload.runtimes.Flash.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Gears = function() {\n\t/// <summary>Gears implementation.</summary>\n}\n\nplupload.runtimes.Gears.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Html4 = function() {\n\t/// <summary>HTML4 implementation.</summary>\n}\n\nplupload.runtimes.Html4.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Html5 = function() {\n\t/// <summary>HMTL5 implementation.</summary>\n}\n\nplupload.runtimes.Html5.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Silverlight = function() {\n\t/// <summary>Silverlight implementation.</summary>\n}\n\nplupload.runtimes.Silverlight.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.Uploader = function(settings) {\n\t/// <summary>Uploader class, an instance of this class will be created for each upload field.</summary>\n\t/// <param name=\"settings\" type=\"Object\">Initialization settings, to be used by the uploader instance and runtimes.</param>\n\t/// <field name=\"state\" type=\"Number\">Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED. These states are controlled by the stop/start methods. The default value is STOPPED.</field>\n\t/// <field name=\"runtime\" type=\"String\">Current runtime name.</field>\n\t/// <field name=\"features\" type=\"Object\">Map of features that are available for the uploader runtime. Features will be filled before the init event is called, these features can then be used to alter the UI for the end user. Some of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.</field>\n\t/// <field name=\"files\" type=\"Array\">Current upload queue, an array of File instances.</field>\n\t/// <field name=\"settings\" type=\"Object\">Object with name/value settings.</field>\n\t/// <field name=\"total\" type=\"plupload.QueueProgress\">Total progess information. How many files has been uploaded, total percent etc.</field>\n\t/// <field name=\"id\" type=\"String\">Unique id for the Uploader instance.</field>\n}\n\nplupload.Uploader.prototype.init = function() {\n\t/// <summary>Initializes the Uploader instance and adds internal event listeners.</summary>\n}\n\nplupload.Uploader.prototype.refresh = function() {\n\t/// <summary>Refreshes the upload instance by dispatching out a refresh event to all runtimes.</summary>\n}\n\nplupload.Uploader.prototype.start = function() {\n\t/// <summary>Starts uploading the queued files.</summary>\n}\n\nplupload.Uploader.prototype.stop = function() {\n\t/// <summary>Stops the upload of the queued files.</summary>\n}\n\nplupload.Uploader.prototype.getFile = function(id) {\n\t/// <summary>Returns the specified file object by id.</summary>\n\t/// <param name=\"id\" type=\"String\">File id to look for.</param>\n\t/// <returns type=\"plupload.File\">File object or undefined if it wasn't found;</returns>\n}\n\nplupload.Uploader.prototype.removeFile = function(file) {\n\t/// <summary>Removes a specific file.</summary>\n\t/// <param name=\"file\" type=\"plupload.File\">File to remove from queue.</param>\n}\n\nplupload.Uploader.prototype.splice = function(start, length) {\n\t/// <summary>Removes part of the queue and returns the files removed.</summary>\n\t/// <param name=\"start\" type=\"Number\" integer=\"true\">(Optional) Start index to remove from.</param>\n\t/// <param name=\"length\" type=\"Number\" integer=\"true\">(Optional) Lengh of items to remove.</param>\n\t/// <returns type=\"Array\">Array of files that was removed.</returns>\n}\n\nplupload.Uploader.prototype.trigger = function(name, Multiple) {\n\t/// <summary>Dispatches the specified event name and it's arguments to all listeners.</summary>\n\t/// <param name=\"name\" type=\"String\">Event name to fire.</param>\n\t/// <param name=\"Multiple\" type=\"Object..\">arguments to pass along to the listener functions.</param>\n}\n\nplupload.Uploader.prototype.bind = function(name, func, scope) {\n\t/// <summary>Adds an event listener by name.</summary>\n\t/// <param name=\"name\" type=\"String\">Event name to listen for.</param>\n\t/// <param name=\"func\" type=\"function\">Function to call ones the event gets fired.</param>\n\t/// <param name=\"scope\" type=\"Object\">Optional scope to execute the specified function in.</param>\n}\n\nplupload.Uploader.prototype.unbind = function(name, func) {\n\t/// <summary>Removes the specified event listener.</summary>\n\t/// <param name=\"name\" type=\"String\">Name of event to remove.</param>\n\t/// <param name=\"func\" type=\"function\">Function to remove from listener.</param>\n}\n\nplupload.Uploader.prototype.unbindAll = function() {\n\t/// <summary>Removes all event listeners.</summary>\n}\n\nplupload.Uploader.prototype.destroy = function() {\n\t/// <summary>Destroys Plupload instance and cleans after itself.</summary>\n}\n\nplupload.File = function(id, name, size) {\n\t/// <summary>File instance.</summary>\n\t/// <param name=\"id\" type=\"String\">Unique file id.</param>\n\t/// <param name=\"name\" type=\"String\">File name.</param>\n\t/// <param name=\"size\" type=\"Number\" integer=\"true\">File size in bytes.</param>\n\t/// <field name=\"id\" type=\"String\">File id this is a globally unique id for the specific file.</field>\n\t/// <field name=\"name\" type=\"String\">File name for example \"myfile.gif\".</field>\n\t/// <field name=\"size\" type=\"Number\">File size in bytes.</field>\n\t/// <field name=\"loaded\" type=\"Number\">Number of bytes uploaded of the files total size.</field>\n\t/// <field name=\"percent\" type=\"Number\">Number of percentage uploaded of the file.</field>\n\t/// <field name=\"status\" type=\"Number\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.</field>\n}\n\nplupload.Runtime = function() {\n\t/// <summary>Runtime class gets implemented by each upload runtime.</summary>\n}\n\nplupload.Runtime.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.QueueProgress = function() {\n\t/// <summary>Runtime class gets implemented by each upload runtime.</summary>\n\t/// <field name=\"size\" type=\"Number\">Total queue file size.</field>\n\t/// <field name=\"loaded\" type=\"Number\">Total bytes uploaded.</field>\n\t/// <field name=\"uploaded\" type=\"Number\">Number of files uploaded.</field>\n\t/// <field name=\"failed\" type=\"Number\">Number of files failed to upload.</field>\n\t/// <field name=\"queued\" type=\"Number\">Number of files yet to be uploaded.</field>\n\t/// <field name=\"percent\" type=\"Number\">Total percent of the uploaded bytes.</field>\n\t/// <field name=\"bytesPerSec\" type=\"Number\">Bytes uploaded per second.</field>\n}\n\nplupload.QueueProgress.prototype.reset = function() {\n\t/// <summary>Resets the progress to it's initial values.</summary>\n}\n\n// Namespaces\nplupload.STOPPED = new Object();\nplupload.STARTED = new Object();\nplupload.QUEUED = new Object();\nplupload.UPLOADING = new Object();\nplupload.FAILED = new Object();\nplupload.DONE = new Object();\nplupload.GENERIC_ERROR = new Object();\nplupload.HTTP_ERROR = new Object();\nplupload.IO_ERROR = new Object();\nplupload.SECURITY_ERROR = new Object();\nplupload.INIT_ERROR = new Object();\nplupload.FILE_SIZE_ERROR = new Object();\nplupload.FILE_EXTENSION_ERROR = new Object();\nplupload.mimeTypes = new Object();\nplupload.extend = function(target, obj) {\n\t/// <summary>Extends the specified object with another object.</summary>\n\t/// <param name=\"target\" type=\"Object\">Object to extend.</param>\n\t/// <param name=\"obj\" type=\"Object..\">Multiple objects to extend with.</param>\n\t/// <returns type=\"Object\">Same as target, the extended object.</returns>\n}\n\nplupload.cleanName = function(s) {\n\t/// <summary>Cleans the specified name from national characters (diacritics).</summary>\n\t/// <param name=\"s\" type=\"String\">String to clean up.</param>\n\t/// <returns type=\"String\">Cleaned string.</returns>\n}\n\nplupload.addRuntime = function(name, obj) {\n\t/// <summary>Adds a specific upload runtime like for example flash or gears.</summary>\n\t/// <param name=\"name\" type=\"String\">Runtime name for example flash.</param>\n\t/// <param name=\"obj\" type=\"Object\">Object containing init/destroy method.</param>\n}\n\nplupload.guid = function() {\n\t/// <summary>Generates an unique ID.</summary>\n\t/// <returns type=\"String\">Virtually unique id.</returns>\n}\n\nplupload.formatSize = function(size) {\n\t/// <summary>Formats the specified number as a size string for example 1024 becomes 1 KB.</summary>\n\t/// <param name=\"size\" type=\"Number\" integer=\"true\">Size to format as string.</param>\n\t/// <returns type=\"String\">Formatted size string.</returns>\n}\n\nplupload.getPos = function(node, root) {\n\t/// <summary>Returns the absolute x, y position of an Element.</summary>\n\t/// <param name=\"node\" type=\"Element\" domElement=\"true\">HTML element or element id to get x, y position from.</param>\n\t/// <param name=\"root\" type=\"Element\" domElement=\"true\">Optional root element to stop calculations at.</param>\n\t/// <returns type=\"object\">Absolute position of the specified element object with x, y fields.</returns>\n}\n\nplupload.parseSize = function(size) {\n\t/// <summary>Parses the specified size string into a byte value.</summary>\n\t/// <param name=\"size\" type=\"\">String to parse or number to just pass through.</param>\n\t/// <returns type=\"Number\" integer=\"true\">Size in bytes.</returns>\n}\n\nplupload.xmlEncode = function(s) {\n\t/// <summary>Encodes the specified string.</summary>\n\t/// <param name=\"s\" type=\"String\">String to encode.</param>\n\t/// <returns type=\"String\">Encoded string.</returns>\n}\n\nplupload.toArray = function(obj) {\n\t/// <summary>Forces anything into an array.</summary>\n\t/// <param name=\"obj\" type=\"Object\">Object with length field.</param>\n\t/// <returns type=\"Array\">Array object containing all items.</returns>\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/custom.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n\n<title>Plupload - Custom example</title>\n\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(bg.jpg);\n\t}\n</style>\n\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.html5.js\"></script>\n\n<!-- <script type=\"text/javascript\"  src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script> -->\n\n</head>\n<body>\n\n<h1>Custom example</h1>\n\n<p>Shows you how to use the core plupload API.</p>\n\n<div id=\"container\">\n    <div id=\"filelist\">No runtime found.</div>\n    <br />\n    <a id=\"pickfiles\" href=\"javascript:;\">[Select files]</a> \n    <a id=\"uploadfiles\" href=\"javascript:;\">[Upload files]</a>\n</div>\n\n\n<script type=\"text/javascript\">\n// Custom example logic\nfunction $(id) {\n\treturn document.getElementById(id);\t\n}\n\n\nvar uploader = new plupload.Uploader({\n\truntimes : 'gears,html5,flash,silverlight,browserplus',\n\tbrowse_button : 'pickfiles',\n\tcontainer: 'container',\n\tmax_file_size : '10mb',\n\turl : 'upload.php',\n\tresize : {width : 320, height : 240, quality : 90},\n\tflash_swf_url : '../js/plupload.flash.swf',\n\tsilverlight_xap_url : '../js/plupload.silverlight.xap',\n\tfilters : [\n\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t]\n});\n\nuploader.bind('Init', function(up, params) {\n\t$('filelist').innerHTML = \"<div>Current runtime: \" + params.runtime + \"</div>\";\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n\tfor (var i in files) {\n\t\t$('filelist').innerHTML += '<div id=\"' + files[i].id + '\">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';\n\t}\n});\n\nuploader.bind('UploadProgress', function(up, file) {\n\t$(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + \"%</span>\";\n});\n\n$('uploadfiles').onclick = function() {\n\tuploader.start();\n\treturn false;\n};\n\nuploader.init();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/dump.php",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - Form dump</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(bg.jpg);\n\t}\n</style>\n</head>\n<body>\n\n<h1>Post dump</h1>\n\n<p>Shows the form items posted.</p>\n\n<table>\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Value</th>\n\t</tr>\n\t<?php $count = 0; foreach ($_POST as $name => $value) { ?>\n\t<tr class=\"<?php echo $count % 2 == 0 ? 'alt' : ''; ?>\">\n\t\t<td><?php echo htmlentities(stripslashes($name)) ?></td>\n\t\t<td><?php echo nl2br(htmlentities(stripslashes($value))) ?></td>\n\t</tr>\n\t<?php } ?>\n</table>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/events.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<link rel=\"stylesheet\" href=\"../../js/jquery.plupload.queue/css/jquery.plupload.queue.css\" type=\"text/css\" media=\"screen\" />\n<title>Plupload - Events example</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.plupload.queue/jquery.plupload.queue.js\"></script>\n\n</head>\n<body>\n\n<form method=\"post\" action=\"dump.php\">\n\t<h1>Events example</h1>\n\n\t<p>Shows how to bind and use all available events.</p>\n\n\t<h3>Log messages</h3>\n\t<textarea id=\"log\" style=\"width: 100%; height: 150px; font-size: 11px\" spellcheck=\"false\" wrap=\"off\"></textarea>\n\n\t<h3>Queue widget</h3>\n\t<div id=\"uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't support upload.</div>\n\t<a id=\"clear\" href=\"#\">Clear queue</a>\n</form>\n<script type=\"text/javascript\">\n$(function() {\n\tfunction log() {\n\t\tvar str = \"\";\n\n\t\tplupload.each(arguments, function(arg) {\n\t\t\tvar row = \"\";\n\n\t\t\tif (typeof(arg) != \"string\") {\n\t\t\t\tplupload.each(arg, function(value, key) {\n\t\t\t\t\t// Convert items in File objects to human readable form\n\t\t\t\t\tif (arg instanceof plupload.File) {\n\t\t\t\t\t\t// Convert status to human readable\n\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\tcase plupload.QUEUED:\n\t\t\t\t\t\t\t\tvalue = 'QUEUED';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.UPLOADING:\n\t\t\t\t\t\t\t\tvalue = 'UPLOADING';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.FAILED:\n\t\t\t\t\t\t\t\tvalue = 'FAILED';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.DONE:\n\t\t\t\t\t\t\t\tvalue = 'DONE';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof(value) != \"function\") {\n\t\t\t\t\t\trow += (row ? ', ': '') + key + '=' + value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tstr += row + \" \";\n\t\t\t} else { \n\t\t\t\tstr += arg + \" \";\n\t\t\t}\n\t\t});\n\n\t\t$('#log').val($('#log').val() + str + \"\\r\\n\");\n\t}\n\n\t$(\"#uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes: 'html5,gears,browserplus,silverlight,flash,html4',\n\t\turl: '../upload.php',\n\t\tmax_file_size: '10mb',\n\t\tchunk_size: '1mb',\n\t\tunique_names: true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize: {width: 320, height: 240, quality: 90},\n\n\t\t// Specify what files to browse for\n\t\tfilters: [\n\t\t\t{title: \"Image files\", extensions: \"jpg,gif,png\"},\n\t\t\t{title: \"Zip files\", extensions: \"zip\"}\n\t\t],\n\n\t\t// Flash/Silverlight paths\n\t\tflash_swf_url: '../../js/plupload.flash.swf',\n\t\tsilverlight_xap_url: '../../js/plupload.silverlight.xap',\n\n\t\t// PreInit events, bound before any internal events\n\t\tpreinit: {\n\t\t\tInit: function(up, info) {\n\t\t\t\tlog('[Init]', 'Info:', info, 'Features:', up.features);\n\t\t\t},\n\n\t\t\tUploadFile: function(up, file) {\n\t\t\t\tlog('[UploadFile]', file);\n\n\t\t\t\t// You can override settings before the file is uploaded\n\t\t\t\t// up.settings.url = 'upload.php?id=' + file.id;\n\t\t\t\t// up.settings.multipart_params = {param1: 'value1', param2: 'value2'};\n\t\t\t}\n\t\t},\n\n\t\t// Post init events, bound after the internal events\n\t\tinit: {\n\t\t\tRefresh: function(up) {\n\t\t\t\t// Called when upload shim is moved\n\t\t\t\tlog('[Refresh]');\n\t\t\t},\n\n\t\t\tStateChanged: function(up) {\n\t\t\t\t// Called when the state of the queue is changed\n\t\t\t\tlog('[StateChanged]', up.state == plupload.STARTED ? \"STARTED\": \"STOPPED\");\n\t\t\t},\n\n\t\t\tQueueChanged: function(up) {\n\t\t\t\t// Called when the files in queue are changed by adding/removing files\n\t\t\t\tlog('[QueueChanged]');\n\t\t\t},\n\n\t\t\tUploadProgress: function(up, file) {\n\t\t\t\t// Called while a file is being uploaded\n\t\t\t\tlog('[UploadProgress]', 'File:', file, \"Total:\", up.total);\n\t\t\t},\n\n\t\t\tFilesAdded: function(up, files) {\n\t\t\t\t// Callced when files are added to queue\n\t\t\t\tlog('[FilesAdded]');\n\n\t\t\t\tplupload.each(files, function(file) {\n\t\t\t\t\tlog('  File:', file);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tFilesRemoved: function(up, files) {\n\t\t\t\t// Called when files where removed from queue\n\t\t\t\tlog('[FilesRemoved]');\n\n\t\t\t\tplupload.each(files, function(file) {\n\t\t\t\t\tlog('  File:', file);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tFileUploaded: function(up, file, info) {\n\t\t\t\t// Called when a file has finished uploading\n\t\t\t\tlog('[FileUploaded] File:', file, \"Info:\", info);\n\t\t\t},\n\n\t\t\tChunkUploaded: function(up, file, info) {\n\t\t\t\t// Called when a file chunk has finished uploading\n\t\t\t\tlog('[ChunkUploaded] File:', file, \"Info:\", info);\n\t\t\t},\n\n\t\t\tError: function(up, args) {\n\t\t\t\t// Called when a error has occured\n\n\t\t\t\t// Handle file specific error and general error\n\t\t\t\tif (args.file) {\n\t\t\t\t\tlog('[error]', args, \"File:\", args.file);\n\t\t\t\t} else {\n\t\t\t\t\tlog('[error]', args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t$('#log').val('');\n\t$('#clear').click(function(e) {\n\t\te.preventDefault();\n\t\t$(\"#uploader\").pluploadQueue().splice();\n\t});\n});\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/jquery_ui_widget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - jQuery UI Widget</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n<link rel=\"stylesheet\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css\" type=\"text/css\" />\n<link rel=\"stylesheet\" href=\"../../js/jquery.ui.plupload/css/jquery.ui.plupload.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.ui.plupload/jquery.ui.plupload.js\"></script>\n\n<!--<script type=\"text/javascript\" src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script>-->\n</head>\n<body>\n\n<h1>jQuery UI Widget</h1>\n\n<p>You can see this example with different themes on the <a href=\"http://plupload.com/example_jquery_ui.php\">www.plupload.com</a> website.</p>\n\n<form  method=\"post\" action=\"dump.php\">\n\t<div id=\"uploader\">\n\t\t<p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>\n\t</div>\n</form>\n<script type=\"text/javascript\">\n// Convert divs to queue widgets when the DOM is ready\n$(function() {\n\t$(\"#uploader\").plupload({\n\t\t// General settings\n\t\truntimes : 'flash,html5,browserplus,silverlight,gears,html4',\n\t\turl : '../upload.php',\n\t\tmax_file_size : '1000mb',\n\t\tmax_file_count: 20, // user can add no more then 20 files at a time\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tmultiple_queues : true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\t\t\n\t\t// Rename files by clicking on their titles\n\t\trename: true,\n\t\t\n\t\t// Sort files\n\t\tsortable: true,\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip,avi\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n\n\t// Client side form validation\n\t$('form').submit(function(e) {\n        var uploader = $('#uploader').plupload('getUploader');\n\n        // Files in queue upload them first\n        if (uploader.files.length > 0) {\n            // When all files are uploaded submit form\n            uploader.bind('StateChanged', function() {\n                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {\n                    $('form')[0].submit();\n                }\n            });\n                \n            uploader.start();\n        } else\n            alert('You must at least upload one file.');\n\n        return false;\n    });\n\t \n\n});\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/queue_widget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - Queue widget example</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n<link rel=\"stylesheet\" href=\"../../js/jquery.plupload.queue/css/jquery.plupload.queue.css\" type=\"text/css\" media=\"screen\" />\n\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.plupload.queue/jquery.plupload.queue.js\"></script>\n\n<!-- <script type=\"text/javascript\"  src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script> -->\n</head>\n<body>\n\n<form method=\"post\" action=\"dump.php\">\n\t<h1>Queue widget example</h1>\n\n\t<p>Shows the jQuery Plupload Queue widget and under different runtimes.</p>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>Flash runtime</h3>\n\t\t<div id=\"flash_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Flash installed.</div>\n\n\t\t<h3>Gears runtime</h3>\n\t\t<div id=\"gears_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Gears installed.</div>\n\t</div>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>Silverlight runtime</h3>\n\t\t<div id=\"silverlight_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Silverlight installed.</div>\n\n\t\t<h3>HTML 5 runtime</h3>\n\t\t<div id=\"html5_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't support native upload. Try Firefox 3 or Safari 4.</div>\n\t</div>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>BrowserPlus runtime</h3>\n\t\t<div id=\"browserplus_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have BrowserPlus installed.</div>\n\n\t\t<h3>HTML 4 runtime</h3>\n\t\t<div id=\"html4_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have HTML 4 support.</div>\n\t</div>\n\n\t<br style=\"clear: both\" />\n\n\t<input type=\"submit\" value=\"Send\" />\n</form>\n\n<script type=\"text/javascript\">\n$(function() {\n\t// Setup flash version\n\t$(\"#flash_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'flash',\n\t\turl : '../upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf'\n\t});\n\n\t// Setup gears version\n\t$(\"#gears_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'gears',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup silverlight version\n\t$(\"#silverlight_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'silverlight',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n\n\t// Setup html5 version\n\t$(\"#html5_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'html5',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup browserplus version\n\t$(\"#browserplus_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'browserplus',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup html4 version\n\t$(\"#html4_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'html4',\n\t\turl : 'upload.php',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t]\n\t});\n});\n</script>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/s3.php",
    "content": "<?php \n/* \nIn order to upload files to S3 using Flash runtime, one should start by placing crossdomain.xml into the bucket.\ncrossdomain.xml can be as simple as this:\n\n<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">\n<cross-domain-policy>\n<allow-access-from domain=\"*\" secure=\"false\" />\n</cross-domain-policy>\n\nIn our tests SilverLight didn't require anything special and worked with this configuration just fine. It may fail back\nto the same crossdomain.xml as last resort.\n\n!!!Important!!! Plupload UI Widget here, is used only for demo purposes and is not required for uploading to S3.\n*/\n\n// important variables that will be used throughout this example\n$bucket = 'BUCKET';\n\n// these can be found on your Account page, under Security Credentials > Access Keys\n$accessKeyId = 'ACCESS_KEY_ID';\n$secret = 'SECRET_ACCESS_KEY';\n\n\n// hash_hmac — Generate a keyed hash value using the HMAC method \n// (PHP 5 >= 5.1.2, PECL hash >= 1.1)\nif (!function_exists('hash_hmac')) :\n// based on: http://www.php.net/manual/en/function.sha1.php#39492\nfunction hash_hmac($algo, $data, $key, $raw_output = false)\n{\n\t$blocksize = 64;\n    if (strlen($key) > $blocksize)\n        $key = pack('H*', $algo($key));\n    \n\t$key = str_pad($key, $blocksize, chr(0x00));\n    $ipad = str_repeat(chr(0x36), $blocksize);\n    $opad = str_repeat(chr(0x5c), $blocksize);\n    $hmac = pack('H*', $algo(($key^$opad) . pack('H*', $algo(($key^$ipad) . $data))));\n\t\n\treturn $raw_output ? $hmac : bin2hex($hmac);\n}\nendif;\n\n// prepare policy\n$policy = base64_encode(json_encode(array(\n\t// ISO 8601 - date('c'); generates uncompatible date, so better do it manually\n\t'expiration' => date('Y-m-d\\TH:i:s.000\\Z', strtotime('+1 day')),  \n\t'conditions' => array(\n\t\tarray('bucket' => $bucket),\n\t\tarray('acl' => 'public-read'),\n\t\tarray('starts-with', '$key', ''),\n\t\t// for demo purposes we are accepting only images\n\t\tarray('starts-with', '$Content-Type', 'image/'),\n\t\t// \"Some versions of the Adobe Flash Player do not properly handle HTTP responses that have an empty body. \n\t\t// To configure POST to return a response that does not have an empty body, set success_action_status to 201.\n\t\t// When set, Amazon S3 returns an XML document with a 201 status code.\" \n\t\t// http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTFlash.html\n\t\tarray('success_action_status' => '201'),\n\t\t// Plupload internally adds name field, so we need to mention it here\n\t\tarray('starts-with', '$name', ''), \t\n\t\t// One more field to take into account: Filename - gets silently sent by FileReference.upload() in Flash\n\t\t// http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTFlash.html\n\t\tarray('starts-with', '$Filename', ''), \n\t)\n)));\n\n// sign policy\n$signature = base64_encode(hash_hmac('sha1', $policy, $secret, true));\n\n?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload to Amazon S3 Example</title>\n\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n\n<link rel=\"stylesheet\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css\" type=\"text/css\" />\n<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" type=\"text/javascript\"></script>\n<script src=\" https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js\"></script>\n\n<!-- Load plupload and all it's runtimes and finally the UI widget -->\n<link rel=\"stylesheet\" href=\"../../js/jquery.ui.plupload/css/jquery.ui.plupload.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.ui.plupload/jquery.ui.plupload.js\"></script>\n<!--<script type=\"text/javascript\" src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script>-->\n\n</head>\n<body>\n\n<h1>Plupload to Amazon S3 Example</h1>\n\n<div id=\"uploader\">\n    <p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>\n</div>\n\n<script type=\"text/javascript\">\n// Convert divs to queue widgets when the DOM is ready\n$(function() {\n\t$(\"#uploader\").plupload({\n\t\truntimes : 'flash,silverlight',\n\t\turl : 'http://<?php echo $bucket; ?>.s3.amazonaws.com/',\n\t\tmax_file_size : '10mb',\n\t\t\n\t\tmultipart: true,\n\t\tmultipart_params: {\n\t\t\t'key': '${filename}', // use filename as a key\n\t\t\t'Filename': '${filename}', // adding this to keep consistency across the runtimes\n\t\t\t'acl': 'public-read',\n\t\t\t'Content-Type': 'image/jpeg',\n\t\t\t'success_action_status': '201',\n\t\t\t'AWSAccessKeyId' : '<?php echo $accessKeyId; ?>',\t\t\n\t\t\t'policy': '<?php echo $policy; ?>',\n\t\t\t'signature': '<?php echo $signature; ?>'\n\t\t},\n\t\t\n\t\t// !!!Important!!! \n\t\t// this is not recommended with S3, since it will force Flash runtime into the mode, with no progress indication\n\t\t//resize : {width : 800, height : 600, quality : 60},  // Resize images on clientside, if possible \n\t\t\n\t\t// optional, but better be specified directly\n\t\tfile_data_name: 'file',\n\t\t\n\t\t// re-use widget (not related to S3, but to Plupload UI Widget)\n\t\tmultiple_queues: true,\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"JPEG files\", extensions : \"jpg\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n});\n</script>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/examples/upload.php",
    "content": "<?php\n/**\n * upload.php\n *\n * Copyright 2009, Moxiecode Systems AB\n * Released under GPL License.\n *\n * License: http://www.plupload.com/license\n * Contributing: http://www.plupload.com/contributing\n */\n\n// HTTP headers for no cache etc\nheader(\"Expires: Mon, 26 Jul 1997 05:00:00 GMT\");\nheader(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\") . \" GMT\");\nheader(\"Cache-Control: no-store, no-cache, must-revalidate\");\nheader(\"Cache-Control: post-check=0, pre-check=0\", false);\nheader(\"Pragma: no-cache\");\n\n// Settings\n$targetDir = ini_get(\"upload_tmp_dir\") . DIRECTORY_SEPARATOR . \"plupload\";\n//$targetDir = 'uploads';\n\n$cleanupTargetDir = true; // Remove old files\n$maxFileAge = 5 * 3600; // Temp file age in seconds\n\n// 5 minutes execution time\n@set_time_limit(5 * 60);\n\n// Uncomment this one to fake upload time\n// usleep(5000);\n\n// Get parameters\n$chunk = isset($_REQUEST[\"chunk\"]) ? intval($_REQUEST[\"chunk\"]) : 0;\n$chunks = isset($_REQUEST[\"chunks\"]) ? intval($_REQUEST[\"chunks\"]) : 0;\n$fileName = isset($_REQUEST[\"name\"]) ? $_REQUEST[\"name\"] : '';\n\n// Clean the fileName for security reasons\n$fileName = preg_replace('/[^\\w\\._]+/', '_', $fileName);\n\n// Make sure the fileName is unique but only if chunking is disabled\nif ($chunks < 2 && file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {\n\t$ext = strrpos($fileName, '.');\n\t$fileName_a = substr($fileName, 0, $ext);\n\t$fileName_b = substr($fileName, $ext);\n\n\t$count = 1;\n\twhile (file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName_a . '_' . $count . $fileName_b))\n\t\t$count++;\n\n\t$fileName = $fileName_a . '_' . $count . $fileName_b;\n}\n\n$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;\n\n// Create target dir\nif (!file_exists($targetDir))\n\t@mkdir($targetDir);\n\n// Remove old temp files\t\nif ($cleanupTargetDir && is_dir($targetDir) && ($dir = opendir($targetDir))) {\n\twhile (($file = readdir($dir)) !== false) {\n\t\t$tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;\n\n\t\t// Remove temp file if it is older than the max age and is not the current file\n\t\tif (preg_match('/\\.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge) && ($tmpfilePath != \"{$filePath}.part\")) {\n\t\t\t@unlink($tmpfilePath);\n\t\t}\n\t}\n\n\tclosedir($dir);\n} else\n\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 100, \"message\": \"Failed to open temp directory.\"}, \"id\" : \"id\"}');\n\t\n\n// Look for the content type header\nif (isset($_SERVER[\"HTTP_CONTENT_TYPE\"]))\n\t$contentType = $_SERVER[\"HTTP_CONTENT_TYPE\"];\n\nif (isset($_SERVER[\"CONTENT_TYPE\"]))\n\t$contentType = $_SERVER[\"CONTENT_TYPE\"];\n\n// Handle non multipart uploads older WebKit versions didn't support multipart in HTML5\nif (strpos($contentType, \"multipart\") !== false) {\n\tif (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {\n\t\t// Open temp file\n\t\t$out = fopen(\"{$filePath}.part\", $chunk == 0 ? \"wb\" : \"ab\");\n\t\tif ($out) {\n\t\t\t// Read binary input stream and append it to temp file\n\t\t\t$in = fopen($_FILES['file']['tmp_name'], \"rb\");\n\n\t\t\tif ($in) {\n\t\t\t\twhile ($buff = fread($in, 4096))\n\t\t\t\t\tfwrite($out, $buff);\n\t\t\t} else\n\t\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}');\n\t\t\tfclose($in);\n\t\t\tfclose($out);\n\t\t\t@unlink($_FILES['file']['tmp_name']);\n\t\t} else\n\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 102, \"message\": \"Failed to open output stream.\"}, \"id\" : \"id\"}');\n\t} else\n\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 103, \"message\": \"Failed to move uploaded file.\"}, \"id\" : \"id\"}');\n} else {\n\t// Open temp file\n\t$out = fopen(\"{$filePath}.part\", $chunk == 0 ? \"wb\" : \"ab\");\n\tif ($out) {\n\t\t// Read binary input stream and append it to temp file\n\t\t$in = fopen(\"php://input\", \"rb\");\n\n\t\tif ($in) {\n\t\t\twhile ($buff = fread($in, 4096))\n\t\t\t\tfwrite($out, $buff);\n\t\t} else\n\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}');\n\n\t\tfclose($in);\n\t\tfclose($out);\n\t} else\n\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 102, \"message\": \"Failed to open output stream.\"}, \"id\" : \"id\"}');\n}\n\n// Check if file has been uploaded\nif (!$chunks || $chunk == $chunks - 1) {\n\t// Strip the temp .part suffix off \n\trename(\"{$filePath}.part\", $filePath);\n}\n\n\n// Return JSON-RPC response\ndie('{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}');\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/cs.js",
    "content": "// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Vyberte soubory',\n\t'Add files to the upload queue and click the start button.' : 'Přidejte soubory do fronty a pak spusťte nahrávání.',\n\t'Filename' : 'Název souboru',\n\t'Status' : 'Status',\n\t'Size' : 'Velikost',\n\t'Add Files' : 'Přidat soubory',\n\t'Stop current upload' : 'Zastavit nahrávání',\n\t'Start uploading queue' : 'Spustit frontu nahrávání',\n\t'Drag files here.' : 'Sem přetáhněte soubory.',\n\t'Start Upload': 'Spustit nahrávání',\n\t'Uploaded %d/%d files': 'Nahráno %d/%d souborů'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/da.js",
    "content": "// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Vælg filer',\n\t'Add files to the upload queue and click the start button.' : 'Tilføj filer til køen, og tryk på start.',\n\t'Filename' : 'Filnavn',\n\t'Status' : 'Status',\n\t'Size' : 'Størrelse',\n\t'Add files' : 'Tilføj filer',\n\t'Stop current upload' : 'Stop upload',\n\t'Start uploading queue' : 'Start upload',\n\t'Drag files here.' : 'Træk filer her.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/de.js",
    "content": "// German\nplupload.addI18n({\n    'Select files' : 'Dateien hochladen',\n    'Add files to the upload queue and click the start button.' : 'Dateien hinzuf&uuml;gen und auf \\'Hochladen\\' klicken.',\n    'Filename' : 'Dateiname',\n    'Status' : 'Status',\n    'Size' : 'Gr&ouml;&szlig;e',\n    'Add files' : 'Dateien', // hinzuf&uuml;gen',\n    'Stop current upload' : 'Aktuelles Hochladen stoppen',\n    'Start uploading queue' : 'Hochladen starten',\n    'Uploaded %d/%d files': '%d/%d Dateien sind hochgeladen',\n    'N/A' : 'Nicht verf&uuml;gbar',\n    'Drag files here.' : 'Ziehen Sie die Dateien hier hin',\n    'File extension error.': 'Fehler bei Dateiendung',\n    'File size error.': 'Fehler bei Dateigr&ouml;ße',\n    'Init error.': 'Initialisierungsfehler',\n    'HTTP Error.': 'HTTP-Fehler',\n    'Security error.': 'Sicherheitsfehler',\n    'Generic error.': 'Typischer Fehler',\n    'IO error.': 'Ein/Ausgabe-Fehler',\n    'Stop Upload': 'Hochladen stoppen',\n    'Start upload': 'Hochladen',\n    '%d files queued': '%d Dateien in der Warteschlange'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/el.js",
    "content": "// Greek\nplupload.addI18n({\n    'Select files' : 'Επιλέξτε Αρχεία',\n    'Add files to the upload queue and click the start button.' : 'Προσθήκη αρχείων στην ουρά μεταφόρτωσης',\n    'Filename' : 'Όνομα αρχείου',\n    'Status' : 'Κατάσταση',\n    'Size' : 'Μέγεθος',\n    'Add Files' : 'Προσθέστε αρχεία',\n    'Stop current upload' : 'Διακοπή τρέχουσας μεταφόρτωσης',\n    'Start uploading queue' : 'Εκκίνηση μεταφόρτωσης ουράς αρχείων',\n    'Drag files here.' : 'Σύρετε αρχεία εδώ',\n    'Start Upload': 'Εκκίνηση μεταφόρτωσης',\n    'Uploaded %d/%d files': 'Ανέβηκαν %d/%d αρχεία'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/es.js",
    "content": "// Spanish\nplupload.addI18n({\n\t'Select files' : 'Elija archivos:',\n\t'Add files to the upload queue and click the start button.' : 'Agregue archivos a la cola de subida y haga click en el boton de iniciar.',\n\t'Filename' : 'Nombre de archivo',\n\t'Status' : 'Estado',\n\t'Size' : 'Tama&ntilde;o',\n\t'Add files' : 'Agregue archivos',\n\t'Stop current upload' : 'Detener subida actual',\n\t'Start uploading queue' : 'Iniciar subida de cola',\n\t'Uploaded %d/%d files': 'Subidos %d/%d archivos',\n\t'N/A' : 'No disponible',\n\t'Drag files here.' : 'Arrastre archivos aqu&iacute;',\n\t'File extension error.': 'Error de extensi&oacute;n de archivo.',\n\t'File size error.': 'Error de tama&ntilde;o de archivo.',\n\t'Init error.': 'Error de inicializaci&oacute;n.',\n\t'HTTP Error.': 'Error de HTTP.',\n\t'Security error.': 'Error de seguridad.',\n\t'Generic error.': 'Error gen&eacute;rico.',\n\t'IO error.': 'Error de entrada/salida.',\n\t'Stop Upload': 'Detener Subida.',\n\t'Add Files': 'Agregar Archivos',\n\t'Start Upload': 'Comenzar Subida.',\n\t'%d files queued': '%d archivos en cola.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/et.js",
    "content": "// Estonian translation, et.js\nplupload.addI18n({\n\t'Select files' : 'Vali faile',\n\t'Add files to the upload queue and click the start button.' : 'Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.',\n\t'Filename' : 'Failinimi',\n\t'Status' : 'Olek',\n\t'Size' : 'Suurus',\n\t'Add files' : 'Lisa faile',\n\t'Stop current upload' : 'Praeguse üleslaadimise peatamine',\n\t'Start uploading queue' : 'Järjekorras ootavate failide üleslaadimise alustamine',\n\t'Drag files here.' : 'Lohista failid siia.',\n\t'Start upload' : 'Alusta üleslaadimist',\n\t'Uploaded %d/%d files': 'Üles laaditud %d/%d',\n\t'Stop upload': 'Peata üleslaadimine',\n\t'Start upload': 'Alusta üleslaadimist',\n\t'%d files queued': 'Järjekorras on %d faili',\n\t'File: %s': 'Fail: %s',\n\t'Close': 'Sulge',\n\t'Using runtime: ': 'Kasutatakse varianti: ',\n\t'File: %f, size: %s, max file size: %m': 'Fail: %f, suurus: %s, suurim failisuurus: %m',\n\t'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.',\n\t'Upload URL might be wrong or doesn\\'t exist': 'Üleslaadimise URL võib olla vale või seda pole',\n\t'Error: File too large: ': 'Viga: fail on liiga suur: ',\n\t'Error: Invalid file extension: ': 'Viga: sobimatu faililaiend: ',\n\t'File extension error.': 'Faililaiendi viga.',\n\t'File size error.': 'Failisuuruse viga.',\n\t'File count error.': 'Failide arvu viga.',\n\t'Init error.': 'Lähtestamise viga.',\n\t'HTTP Error.': 'HTTP ühenduse viga.',\n\t'Security error.': 'Turvaviga.',\n\t'Generic error.': 'Üldine viga.',\n\t'IO error.': 'S/V (I/O) viga.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fa.js",
    "content": "// Persian\nplupload.addI18n({\n   'Select files' : 'انتخاب فایل',\n   'Add files to the upload queue and click the start button.' : 'اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.',\n   'Filename' : 'نام فایل',\n   'Status' : 'وضعیت',\n   'Size' : 'سایز',\n   'Add Files' : 'افزودن فایل',\n   'Stop Upload' : 'توقف انتقال',\n   'Start Upload' : 'شروع انتقال',\n   'Add files' : 'افزودن فایل',\n   'Add files.' : 'افزودن فایل',\n   'Stop current upload' : 'توقف انتقال جاری',\n   'Start uploading queue' : 'شروع صف انتقال',\n   'Stop upload' : 'توقف  انتقال',\n   'Start upload' : 'شروع انتقال',\n   'Uploaded %d/%d files': 'منتقل شد %d/%d از فایلها',\n   'N/A' : 'N/A',\n   'Drag files here.' : 'بکشید فایل ها رو به اینجا',\n   'File extension error.': 'خطا پیشوند فایل',\n   'File size error.': 'خطای سایز فایل',\n   'File count error.': 'خطای تعداد فایل',\n   'Init error.': 'خطا در استارت اسکریپت',\n   'HTTP Error.': 'HTTP خطای',\n   'Security error.': 'خطای امنیتی',\n   'Generic error.': 'خطای عمومی',\n   'IO error.': 'IO خطای',\n   'File: %s': ' فایل ها : %s',\n   'Close': 'بستن',\n   '%d files queued': '%d فایل در صف',\n   'Using runtime: ': 'استفاده میکنید از : ',\n   'File: %f, size: %s, max file size: %m': فایل: %f, سایز: %s, بزرگترین سایز فایل: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'عنصر بارگذار فقط %d فایل رو در یک زمان  می پذیرد. سایر فایل ها مجرد از این موضوع هستند.',\n   'Upload URL might be wrong or doesn\\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد',\n   'Error: File too large: ': 'خطا: فایل حجیم است :: ',\n   'Error: Invalid file extension: ': 'خطا پسوند فایل معتبر نمی باشد : '\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fi.js",
    "content": "// .fi file like language pack\nplupload.addI18n({\n\t'Select files' : 'Valitse tiedostoja',\n\t'Add files to the upload queue and click the start button.' : 'Lisää tiedostoja latausjonoon ja klikkaa aloita-nappia.',\n\t'Filename' : 'Tiedostonimi',\n\t'Status' : 'Tila',\n\t'Size' : 'Koko',\n\t'Add files' : 'Lisää tiedostoja',\n\t'Stop current upload' : 'Pysäytä nykyinen lataus',\n\t'Start uploading queue' : 'Aloita jonon lataus',\n\t'Drag files here.' : 'Raahaa tiedostot tänne.',\n\t'Start upload' : 'Aloita lataus',\n\t'Uploaded %d/%d files': 'Ladattu %d/%d tiedostoa',\n\t'Stop upload': 'Pysäytä lataus',\n\t'Start upload': 'Aloita lataus',\n\t'%d files queued': '%d tiedostoa jonossa',\n\t'File: %s': 'Tiedosto: %s',\n\t'Close': 'Sulje',\n\t'Using runtime: ': 'Käytetään ajonaikaista: ',\n\t'File: %f, size: %s, max file size: %m': 'Tiedosto: %f, koko: %s, maksimi tiedostokoko: %m',\n\t'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Latauselementti sallii ladata vain %d tiedosto(a) kerrallaan. Ylimääräiset tiedostot ohitettiin.',\n\t'Upload URL might be wrong or doesn\\'t exist': 'Lataus URL saattaa olla väärin tai ei ole olemassa',\n\t'Error: File too large: ': 'Virhe: Tiedosto liian suuri: ',\n\t'Error: Invalid file extension: ': 'Virhe: Kelpaamaton tiedostopääte: ',\n\t'File extension error.': 'Tiedostopäätevirhe.',\n\t'File size error.': 'Tiedostokokovirhe.',\n\t'File count error.': 'Tiedostolaskentavirhe.',\n\t'Init error.': 'Init virhe.',\n\t'HTTP Error.': 'HTTP virhe.',\n\t'Security error.': 'Tietoturvavirhe.',\n\t'Generic error.': 'Yleinen virhe.',\n\t'IO error.': 'I/O virhe.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr-ca.js",
    "content": "// French-Canadian\nplupload.addI18n({\n    'Select files' : 'Sélectionnez les fichiers',\n    'Add files to the upload queue and click the start button.' : 'Ajoutez des fichiers à la file d\\'attente et appuyez sur le bouton démarrer.',\n    'Filename' : 'Nom du fichier',\n    'Status' : 'Statut',\n    'Size' : 'Taille',\n    'Add files' : 'Ajouter Fichiers',\n    'Stop current upload' : 'Arrêter le téléversement actuel',\n    'Start uploading queue' : 'Démarrer le téléversement',\n    'Uploaded %d/%d files': '%d/%d fichiers envoyés',\n    'N/A' : 'Non applicable',\n    'Drag files here.' : 'Glisser-déposer les fichiers ici',\n    'File extension error.': 'Erreur d\\'extension de fichier',\n    'File size error.': 'Erreur de taille de fichier',\n    'Init error.': 'Erreur d\\'initialisation',\n    'HTTP Error.': 'Erreur HTTP',\n    'Security error.': 'Erreur de sécurité',\n    'Generic error.': 'Erreur commune',\n    'IO error.': 'Erreur E/S',\n    'Stop Upload': 'Arrêter le téléversement',\n    'Add Files': 'Ajouter des fichiers',\n    'Start upload': 'Démarrer le téléversement',\n    '%d files queued': '%d fichiers en attente',\n    'File: %s':'Fichier: %s',\n    'Close':'Fermer',\n    'Using runtime:':'Moteur logiciel:',\n    'File: %f, size: %s, max file size: %m':'Fichier: %f, poids: %s, poids maximal: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.':'La file accepte %d fichier(s) à la fois. Les fichiers en trop sont ignorés',\n    'Upload URL might be wrong or doesn\\'t exist':'L\\'URL de téléversement est erroné ou inexistant',\n    'Error: File to large: ':'Fichier trop volumineux: ',\n    'Error: Invalid file extension: ':'Extension de fichier invalide: ',\n    'File size error.':'Erreur de taile de fichier',\n    'File count error.':'Erreur de décompte des fichiers'    \n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr.js",
    "content": "// French\nplupload.addI18n({\n    'Select files' : 'Sélectionnez les fichiers',\n    'Add files to the upload queue and click the start button.' : 'Ajoutez des fichiers à la file et appuyez sur le bouton démarrer.',\n    'Filename' : 'Nom de fichier',\n    'Status' : 'Status',\n    'Size' : 'Taille',\n    'Add files' : 'Ajouter Fichiers',\n    'Stop current upload' : 'Arrêter l\\'envoi en cours',\n    'Start uploading queue' : 'Démarrer l\\'envoi',\n    'Uploaded %d/%d files': '%d/%d fichiers envoyés',\n    'N/A' : 'Non applicable',\n    'Drag files here.' : 'Déposer les fichiers ici.',\n    'File extension error.': 'Erreur extension fichier',\n    'File size error.': 'Erreur taille fichier.',\n    'Init error.': 'Erreur d\\'initialisation.',\n    'HTTP Error.': 'Erreur HTTP.',\n    'Security error.': 'Erreur de sécurité.',\n    'Generic error.': 'Erreur générique.',\n    'IO error.': 'Erreur E/S.',\n    'Stop Upload': 'Arrêter les envois.',\n    'Add Files': 'Ajouter des fichiers',\n    'Start Upload': 'Démarrer les envois.',\n    '%d files queued': '%d fichiers en attente.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hr.js",
    "content": "// Croatian\nplupload.addI18n({\n    'Select files': 'Izaberite datoteke:',\n    'Add files to the upload queue and click the start button.': 'Dodajte datoteke u listu i kliknite Upload.',\n    'Filename': 'Ime datoteke',\n    'Status': 'Status',\n    'Size': 'Veličina',\n    'Add files': 'Dodajte datoteke',\n    'Stop current upload': 'Zaustavi trenutan upload',\n    'Start uploading queue': 'Pokreni Upload',\n    'Uploaded %d/%d files': 'Uploadano %d/%d datoteka',\n    'N/A': 'N/A',\n    'Drag files here.': 'Dovucite datoteke ovdje',\n    'File extension error.': 'Greška ekstenzije datoteke.',\n    'File size error.': 'Greška veličine datoteke.',\n    'Init error.': 'Greška inicijalizacije.',\n    'HTTP Error.': 'HTTP greška.',\n    'Security error.': 'Sigurnosna greška.',\n    'Generic error.': 'Generička greška.',\n    'IO error.': 'I/O greška.',\n    'Stop Upload': 'Zaustavi upload.',\n    'Add Files': 'Dodaj datoteke',\n    'Start Upload': 'Pokreni upload.',\n    '%d files queued': '%d datoteka na čekanju.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hu.js",
    "content": "// Hungarian\nplupload.addI18n({\n    'Select files' : 'Fájlok kiválasztása',\n    'Add files to the upload queue and click the start button.' : 'Válaszd ki a fájlokat, majd kattints az Indítás gombra.',\n    'Filename' : 'Fájlnév',\n    'Status' : 'Állapot',\n    'Size' : 'Méret',\n    'Add files' : 'Hozzáadás',\n    'Stop current upload' : 'Jelenlegi feltöltés megszakítása',\n    'Start uploading queue' : 'Várakozási sor feltöltésének indítása',\n    'Uploaded %d/%d files': 'Feltöltött fájlok: %d/%d',\n    'N/A': 'Nem elérhető',\n    'Drag files here.' : 'Húzd ide a fájlokat.',\n    'Stop upload': 'Feltöltés megszakítása',\n    'Start upload': 'Indítás',\n    '%d files queued': '%d fájl sorbaállítva',\n    'File: %s': 'Fájl: %s',\n    'Close': 'Bezárás',\n    'Using runtime: ': 'Használt runtime: ',\n    'File: %f, size: %s, max file size: %m': 'Fájl: %f, méret: %s, maximális fájlméret: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'A feltöltés egyszerre csak %d fájlt fogad el, a többi fájl nem lesz feltöltve.',\n    'Upload URL might be wrong or doesn\\'t exist': 'A megadott URL hibás vagy nem létezik',\n    'Error: File too large: ': 'Hiba: A fájl túl nagy: ',\n    'Error: Invalid file extension: ': 'Hiba: Érvénytelen fájlkiterjesztés: ',\n    'File extension error.': 'Hibás fájlkiterjesztés.',\n    'File size error.': 'Hibás fájlméret.',\n    'File count error.': 'A fájlok számával kapcsolatos hiba.',\n    'Init error.': 'Init hiba.',\n    'HTTP Error.': 'HTTP hiba.',\n    'Security error.': 'Biztonsági hiba.',\n    'Generic error.': 'Általános hiba.',\n    'IO error.': 'I/O hiba.'\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/it.js",
    "content": "// Italian\nplupload.addI18n({\n    'Select files' : 'Seleziona i files',\n    'Add files to the upload queue and click the start button.' : 'Aggiungi i file alla coda di caricamento e clicca il pulsante di avvio.',\n    'Filename' : 'Nome file',\n    'Status' : 'Stato',\n    'Size' : 'Dimensione',\n    'Add Files' : 'Aggiungi file',\n    'Stop current upload' : 'Interrompi il caricamento',\n    'Start uploading queue' : 'Avvia il caricamento',\n    'Uploaded %d/%d files': 'Caricati %d/%d file',\n    'N/A' : 'N/D',\n    'Drag files here.' : 'Trascina i file qui.',\n    'File extension error.': 'Errore estensione file.',\n    'File size error.': 'Errore dimensione file.',\n    'Init error.': 'Errore inizializzazione.',\n    'HTTP Error.': 'Errore HTTP.',\n    'Security error.': 'Errore sicurezza.',\n    'Generic error.': 'Errore generico.',\n    'IO error.': 'Errore IO.',\n\t'Stop Upload': 'Ferma Upload',\n\t'Start Upload': 'Inizia Upload',\n\t'%d files queued': '%d file in lista'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ja.js",
    "content": "// Japanese\nplupload.addI18n({\n   'Select files' : 'ファイル選択',\n   'Add files to the upload queue and click the start button.' : 'ファイルをアップロードキューに追加してスタートボタンをクリックしてください',\n   'Filename' : 'ファイル名',\n   'Status' : 'ステータス',\n   'Size' : 'サイズ',\n   'Add Files' : 'ファイルを追加',\n   'Stop Upload' : 'アップロード停止',\n   'Start Upload' : 'アップロード',\n   'Add files' : 'ファイルを追加',\n   'Add files.' : 'ファイルを追加',\n   'Stop current upload' : '現在のアップロードを停止',\n   'Start uploading queue' : 'アップロード',\n   'Stop upload' : 'アップロード停止',\n   'Start upload' : 'アップロード',\n   'Uploaded %d/%d files': 'アップロード中 %d/%d ファイル',\n   'N/A' : 'N/A',\n   'Drag files here.' : 'ここにファイルをドラッグ',\n   'File extension error.': 'ファイル拡張子エラー',\n   'File size error.': 'ファイルサイズエラー',\n   'File count error.': 'ファイル数エラー',\n   'Init error.': 'イニシャライズエラー',\n   'HTTP Error.': 'HTTP エラー',\n   'Security error.': 'セキュリティエラー',\n   'Generic error.': 'エラー',\n   'IO error.': 'IO エラー',\n   'File: %s': 'ファイル: %s',\n   'Close': '閉じる',\n   '%d files queued': '%d ファイルが追加されました',\n   'Using runtime: ': 'モード: ',\n   'File: %f, size: %s, max file size: %m': 'ファイル: %f, サイズ: %s, 最大ファイルサイズ: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'アップロード可能なファイル数は %d です。余分なファイルは削除されました',\n   'Upload URL might be wrong or doesn\\'t exist': 'アップロード先の URL が存在しません',\n   'Error: File too large: ': 'エラー: サイズが大きすぎます: ',\n   'Error: Invalid file extension: ': 'エラー: 拡張子が許可されていません: '\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ko.js",
    "content": "// Republic of Korea\nplupload.addI18n({\n   'Select files' : '파일 선택',\n   'Add files to the upload queue and click the start button.' : '파일을 업로드 큐에 추가하여 시작 버튼을 클릭하십시오.',\n   'Filename' : '파일 이름',\n   'Status' : '상태',\n   'Size' : '크기',\n   'Add Files' : '파일 추가',\n   'Stop Upload': '업로드 중지',\n   'Start Upload': '업로드',\n   'Add files': '파일 추가',\n   'Stop current upload': '현재 업로드를 정지',\n   'Start uploading queue': '업로드',\n   'Stop upload': '업로드 중지',\n   'Start upload': '업로드',\n   'Uploaded % d / % d files': '업로드 중 % d / % d 파일',\n   'N / A': 'N / A',\n   'Drag files here': '여기에 파일을 드래그',\n   'File extension error': '파일 확장자 오류',\n   'File size error': '파일 크기 오류',\n   'File count error': '이미지 : 오류',\n   'Init error': '초기화 오류',\n   'HTTP Error': 'HTTP 오류',\n   'Security error': '보안 오류',\n   'Generic error': '오류',\n   'IO error': 'IO 오류',\n   'File : % s': '파일 % s',\n   'Close': '닫기',\n   '% d files queued': '% d 파일이 추가되었습니다',\n   'Using runtime :': '모드',\n   'File : % f, size : % s, max file size : % m': '파일 : % f, 크기 : % s, 최대 파일 크기 : % m',\n   'Upload element accepts only % d file (s) at a time. Extra files were stripped': '업로드 가능한 파일의 수는 % d입니다. 불필요한 파일은 삭제되었습니다 ',\n   'Upload URL might be wrong or doesn \\'t exist ':'업로드할 URL이 존재하지 않습니다 ',\n   'Error : File too large :': '오류 : 크기가 너무 큽니다',\n   'Error : Invalid file extension :': '오류 : 확장자가 허용되지 않습니다 :'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/lv.js",
    "content": "// .lv file like language pack\nplupload.addI18n({\n    'Select files' : 'Izvēlieties failus',\n    'Add files to the upload queue and click the start button.' : 'Pieveinojiet failus rindai un klikšķiniet uz \"Sākt augšupielādi\" pogas.',\n    'Filename' : 'Faila nosaukums',\n    'Status' : 'Statuss',\n    'Size' : 'Izmērs',\n    'Add files' : 'Pievienot failus',\n    'Stop current upload' : 'Apturēt pašreizējo augšupielādi',\n    'Start uploading queue' : 'Sākt augšupielādi',\n    'Drag files here.' : 'Ievelciet failus šeit',\n    'Start upload' : 'Sākt augšupielādi',\n    'Uploaded %d/%d files': 'Augšupielādēti %d/%d faili',\n    'Stop upload': 'Pārtraukt augšupielādi',\n    'Start upload': 'Sākt augšupielādi',\n    '%d files queued': '%d faili pievienoti rindai',\n    'File: %s': 'Fails: %s',\n    'Close': 'Aizvērt',\n    'Using runtime: ': 'Lieto saskarni: ',\n    'File: %f, size: %s, max file size: %m': 'Fails: %f, izmērs: %s, maksimālais faila izmērs: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Iespējams ielādēt tikai %d failus vienā reizē. Atlikušie faili netika pievienoti',\n    'Upload URL might be wrong or doesn\\'t exist': 'Augšupielādes URL varētu būt nepareizs vai neeksistē',\n    'Error: File too large: ': 'Kļūda: Fails pārāk liels: ',\n    'Error: Invalid file extension: ': 'Kļūda: Nekorekts faila paplašinājums:',\n    'File extension error.': 'Faila paplašinājuma kļūda.',\n    'File size error.': 'Faila izmēra kļūda.',\n    'File count error.': 'Failu skaita kļūda',\n    'Init error.': 'Inicializācijas kļūda.',\n    'HTTP Error.': 'HTTP kļūda.',\n    'Security error.': 'Drošības kļūda.',\n    'Generic error.': 'Vispārēja rakstura kļūda.',\n    'IO error.': 'Ievades/Izvades kļūda.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/nl.js",
    "content": "// Dutch\nplupload.addI18n({\n   'Select files' : 'Selecteer bestand(en):',\n   'Add files to the upload queue and click the start button.' : 'Voeg bestanden toe aan de wachtrij en druk op \\'Start\\'.',\n   'Filename' : 'Bestandsnaam',\n   'Status' : 'Status',\n   'Size' : 'Grootte',\n   'Add files' : 'Voeg bestanden toe',\n   'Stop current upload' : 'Stop upload',\n   'Start uploading queue' : 'Start upload',\n   'Uploaded %d/%d files': '%d/%d bestanden ge-upload',\n   'N/A' : 'Niet beschikbaar',\n   'Drag files here.' : 'Sleep bestanden hierheen.',\n   'File extension error.': 'Ongeldig bestandstype.',\n   'File size error.': 'Bestandsgrootte Error.',\n   'Init error.': 'Initialisatie error.',\n   'HTTP Error.': 'HTTP Error.',\n   'Security error.': 'Beveiliging error.',\n   'Generic error.': 'Onbekende error.',\n   'IO error.': 'IO error.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pl.js",
    "content": "plupload.addI18n({\n'Select files' : 'Wybierz pliki:',\n'Add files to the upload queue and click the start button.' : 'Dodaj pliki i kliknij \\'Rozpocznij transfer\\'.',\n'Filename' : 'Nazwa pliku',\n'Status' : 'Status',\n'Size' : 'Rozmiar',\n'Add files' : 'Dodaj pliki',\n'Stop current upload' : 'Przerwij aktualny transfer',\n'Start uploading queue' : 'Rozpocznij wysyłanie',\n'Uploaded %d/%d files': 'Wysłano %d/%d plików',\n'N/A' : 'Nie dostępne',\n'Drag files here.' : 'Przeciągnij tu pliki',\n'File extension error.': 'Nieobsługiwany format pliku.',\n'File size error.': 'Plik jest zbyt duży.',\n'Init error.': 'Błąd inicjalizacji.',\n'HTTP Error.': 'Błąd HTTP.',\n'Security error.': 'Błąd bezpieczeństwa.',\n'Generic error.': 'Błąd ogólny.',\n'IO error.': 'Błąd IO.',\n'Stop Upload': 'Przerwij transfer.',\n'Add Files': 'Dodaj pliki',\n'Start upload': 'Rozpocznij transfer.',\n'%d files queued': '%d plików w kolejce.'\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pt-br.js",
    "content": "// Brazilian Portuguese\nplupload.addI18n({\n   'Select files' : 'Escolha os arquivos',\n   'Add files to the upload queue and click the start button.' : 'Adicione os arquivos abaixo e clique no botão \"Iniciar o envio\".',\n   'Filename' : 'Nome do arquivo',\n   'Status' : 'Status',\n   'Size' : 'Tamanho',\n   'Add Files' : 'Adicionar arquivo(s)',\n   'Stop Upload' : 'Parar o envio',\n   'Start Upload' : 'Iniciar o envio',\n   'Add files' : 'Adicionar arquivo(s)',\n   'Add files.' : 'Adicionar arquivo(s)',\n   'Stop upload' : 'Parar o envio',\n   'Start upload' : 'Iniciar o envio',\n   'Uploaded %d/%d files': 'Enviado(s) %d/%d arquivo(s)',\n   'N/A' : 'N/D',\n   'Drag files here.' : 'Arraste os arquivos pra cá',\n   'File extension error.': 'Tipo de arquivo não permitido.',\n   'File size error.': 'Tamanho de arquivo não permitido.',\n   'File count error.': 'Erro na contagem dos arquivos',\n   'Init error.': 'Erro inicializando.',\n   'HTTP Error.': 'Erro HTTP.',\n   'Security error.': 'Erro de segurança.',\n   'Generic error.': 'Erro genérico.',\n   'IO error.': 'Erro de E/S.',\n   'File: %s': 'Arquivo: %s',\n   'Close': 'Fechar',\n   '%d files queued': '%d arquivo(s)',\n   'Using runtime: ': 'Usando: ',\n   'File: %f, size: %s, max file size: %m': 'Arquivo: %f, tamanho: %s, máximo: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Só são aceitos %d arquivos por vez. O que passou disso foi descartado.',\n   'Upload URL might be wrong or doesn\\'t exist': 'URL de envio está errada ou não existe',\n   'Error: File too large: ': 'Erro: Arquivo muito grande: ',\n   'Error: Invalid file extension: ': 'Erro: Tipo de arquivo não permitido: '\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ro.js",
    "content": "// Romanian\nplupload.addI18n({\n    'Select files' : 'Selectare fişiere',\n    'Add files to the upload queue and click the start button.' : 'Adaugă fişiere în lista apoi apasă butonul \\'Începe încărcare\\'.',\n    'Filename' : 'Nume fişier',\n    'Status' : 'Stare',\n    'Size' : 'Mărime',\n    'Add files' : 'Adăugare fişiere',\n    'Stop current upload' : 'Întrerupe încărcarea curentă',\n    'Start uploading queue' : 'Începe incărcarea',\n    'Uploaded %d/%d files': 'Fişiere încărcate %d/%d',\n    'N/A' : 'N/A',\n    'Drag files here.' : 'Trage aici fişierele',\n    'File extension error.': 'Extensie fişier eronată',\n    'File size error.': 'Eroare dimensiune fişier',\n    'Init error.': 'Eroare iniţializare',\n    'HTTP Error.': 'Eroare HTTP',\n    'Security error.': 'Eroare securitate',\n    'Generic error.': 'Eroare generică',\n    'IO error.': 'Eroare Intrare/Ieşire',\n    'Stop Upload': 'Oprire încărcare',\n    'Start upload': 'Începe încărcare',\n    '%d files queued': '%d fişiere listate'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ru.js",
    "content": "// Russian\nplupload.addI18n({\n    'Select files' : 'Выберите файлы',\n    'Add files to the upload queue and click the start button.' : 'Добавьте файлы в очередь и нажмите кнопку \"Загрузить файлы\".',\n    'Filename' : 'Имя файла',\n    'Status' : 'Статус',\n    'Size' : 'Размер',\n    'Add files' : 'Добавить файлы',\n    'Stop current upload' : 'Остановить загрузку',\n    'Start uploading queue' : 'Загрузить файлы',\n    'Uploaded %d/%d files': 'Загружено %d из %d файлов',\n    'N/A' : 'N/D',\n    'Drag files here.' : 'Перетащите файлы сюда.',\n    'File extension error.': 'Неправильное расширение файла.',\n    'File size error.': 'Неправильный размер файла.',\n    'Init error.': 'Ошибка инициализации.',\n    'HTTP Error.': 'Ошибка HTTP.',\n    'Security error.': 'Ошибка безопасности.',\n    'Generic error.': 'Общая ошибка.',\n    'IO error.': 'Ошибка ввода-вывода.'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sr.js",
    "content": "﻿// Serbian\nplupload.addI18n({\n    'Select files' : 'Izaberite fajlove',\n    'Add files to the upload queue and click the start button.' : 'Dodajte fajlove u listu i kliknite na dugme Start.',\n    'Filename' : 'Naziv fajla',\n    'Status' : 'Status',\n    'Size' : 'Veličina',\n    'Add Files' : 'Dodaj fajlove',\n    'Stop current upload' : 'Zaustavi upload',\n    'Start uploading queue' : 'Počni upload',\n    'Drag files here.' : 'Prevucite fajlove ovde.',\n    'Start Upload': 'Počni upload',\n    'Uploaded %d/%d files': 'Snimljeno %d/%d fajlova'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sv.js",
    "content": "﻿// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Välj filer',\n\t'Add files to the upload queue and click the start button.' : 'Lägg till filer till kön och tryck på start.',\n\t'Filename' : 'Filnamn',\n\t'Status' : 'Status',\n\t'Size' : 'Storlek',\n\t'Add files' : 'Lägg till filer',\n\t'Stop current upload' : 'Stoppa uppladdningen',\n\t'Start uploading queue' : 'Starta uppladdningen',\n\t'Drag files here.' : 'Dra filer hit'\n});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css",
    "content": "/* \n   Plupload\n------------------------------------------------------------------- */\n\n.plupload_button {\n\tdisplay: -moz-inline-box; /* FF < 3*/\n\tdisplay: inline-block;\n\tfont: normal 12px sans-serif;\n\ttext-decoration: none;\n    color: #42454a;\n    border: 1px solid #bababa;\n    padding: 2px 8px 3px 20px;\n\tmargin-right: 4px;\n    background: #f3f3f3 url('../img/buttons.png') no-repeat 0 center;\n\toutline: 0;\n\n    /* Optional rounded corners for browsers that support it */\n    -moz-border-radius: 3px;\n    -khtml-border-radius: 3px;\n    -webkit-border-radius: 3px;\n    border-radius: 3px;\n}\n\n.plupload_button:hover {\n\tcolor: #000;\n\ttext-decoration: none;\n}\n\n.plupload_disabled, a.plupload_disabled:hover {\n    color: #737373;\n    border-color: #c5c5c5;\n    background: #ededed url('../img/buttons-disabled.png') no-repeat 0 center;\n\tcursor: default;\n}\n\n.plupload_add {\n\tbackground-position: -181px center;\n}\n\n.plupload_wrapper {\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 100%;\n}\n\n.plupload_container {\n\tpadding: 8px;\n\tbackground: url('../img/transp50.png');\n\t/*-moz-border-radius: 5px;*/\n}\n\n.plupload_container input {\n\tborder: 1px solid #DDD;\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 98%;\n}\n\n.plupload_header {background: #2A2C2E url('../img/backgrounds.gif') repeat-x;}\n.plupload_header_content {\n\tbackground: url('../img/backgrounds.gif') no-repeat 0 -317px;\n\tmin-height: 56px;\n\tpadding-left: 60px;\n\tcolor: #FFF;\n}\n.plupload_header_title {\n\tfont: normal 18px sans-serif;\n\tpadding: 6px 0 3px;\n}\n.plupload_header_text {\n\tfont: normal 12px sans-serif;\n}\n\n.plupload_filelist {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.plupload_scroll .plupload_filelist {\n\theight: 185px;\n\tbackground: #F5F5F5;\n\toverflow-y: scroll;\n}\n\n.plupload_filelist li {\n\tpadding: 10px 8px;\n\tbackground: #F5F5F5 url('../img/backgrounds.gif') repeat-x 0 -156px;\n\tborder-bottom: 1px solid #DDD;\n}\n\n.plupload_filelist_header, .plupload_filelist_footer {\n\tbackground: #DFDFDF;\n\tpadding: 8px 8px;\n\tcolor: #42454A;\n}\n.plupload_filelist_header {\t\n\tborder-top: 1px solid #EEE;\n\tborder-bottom: 1px solid #CDCDCD;\n}\n\n.plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;}\n.plupload_file_name {float: left; overflow: hidden}\n.plupload_file_status {color: #777;}\n.plupload_file_status span {color: #42454A;}\n.plupload_file_size, .plupload_file_status, .plupload_progress {\n\tfloat: right;\n\twidth: 80px;\n}\n.plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;}\n\n.plupload_filelist .plupload_file_name {width: 205px}\n\n.plupload_file_action {\n\tfloat: right;\n\twidth: 16px;\n\theight: 16px;\n\tmargin-left: 15px;\n}\n\n.plupload_file_action * {\n\tdisplay: none;\n\twidth: 16px;\n\theight: 16px;\n}\n\nli.plupload_uploading {background: #ECF3DC url('../img/backgrounds.gif') repeat-x 0 -238px;}\nli.plupload_done {color:#AAA}\n\nli.plupload_delete a {\n\tbackground: url('../img/delete.gif');\n}\n\nli.plupload_failed a {\n\tbackground: url('../img/error.gif');\n\tcursor: default;\n}\n\nli.plupload_done a {\n\tbackground: url('../img/done.gif');\n\tcursor: default;\n}\n\n.plupload_progress, .plupload_upload_status {\n\tdisplay: none;\n}\n\n.plupload_progress_container {\n\tmargin-top: 3px;\n\tborder: 1px solid #CCC;\n\tbackground: #FFF;\n\tpadding: 1px;\n}\n.plupload_progress_bar {\n\twidth: 0px;\n\theight: 7px;\n\tbackground: #CDEB8B;\n}\n\n.plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action {\n\tmargin-right: 17px;\n}\n\n/* Floats */\n\n.plupload_clear,.plupload_clearer {clear: both;}\n.plupload_clearer, .plupload_progress_bar {\n\tdisplay: block;\n\tfont-size: 0;\n\tline-height: 0;\t\n}\n\nli.plupload_droptext {\n\tbackground: transparent;\n\ttext-align: center;\n\tvertical-align: middle;\n\tborder: 0;\n\tline-height: 165px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js",
    "content": "(function(c){var d={};function a(e){return plupload.translate(e)||e}function b(f,e){e.contents().each(function(g,h){h=c(h);if(!h.is(\".plupload\")){h.remove()}});e.prepend('<div class=\"plupload_wrapper plupload_scroll\"><div id=\"'+f+'_container\" class=\"plupload_container\"><div class=\"plupload\"><div class=\"plupload_header\"><div class=\"plupload_header_content\"><div class=\"plupload_header_title\">'+a(\"Select files\")+'</div><div class=\"plupload_header_text\">'+a(\"Add files to the upload queue and click the start button.\")+'</div></div></div><div class=\"plupload_content\"><div class=\"plupload_filelist_header\"><div class=\"plupload_file_name\">'+a(\"Filename\")+'</div><div class=\"plupload_file_action\">&nbsp;</div><div class=\"plupload_file_status\"><span>'+a(\"Status\")+'</span></div><div class=\"plupload_file_size\">'+a(\"Size\")+'</div><div class=\"plupload_clearer\">&nbsp;</div></div><ul id=\"'+f+'_filelist\" class=\"plupload_filelist\"></ul><div class=\"plupload_filelist_footer\"><div class=\"plupload_file_name\"><div class=\"plupload_buttons\"><a href=\"#\" class=\"plupload_button plupload_add\">'+a(\"Add files\")+'</a><a href=\"#\" class=\"plupload_button plupload_start\">'+a(\"Start upload\")+'</a></div><span class=\"plupload_upload_status\"></span></div><div class=\"plupload_file_action\"></div><div class=\"plupload_file_status\"><span class=\"plupload_total_status\">0%</span></div><div class=\"plupload_file_size\"><span class=\"plupload_total_file_size\">0 b</span></div><div class=\"plupload_progress\"><div class=\"plupload_progress_container\"><div class=\"plupload_progress_bar\"></div></div></div><div class=\"plupload_clearer\">&nbsp;</div></div></div></div></div><input type=\"hidden\" id=\"'+f+'_count\" name=\"'+f+'_count\" value=\"0\" /></div>')}c.fn.pluploadQueue=function(e){if(e){this.each(function(){var j,i,k;i=c(this);k=i.attr(\"id\");if(!k){k=plupload.guid();i.attr(\"id\",k)}j=new plupload.Uploader(c.extend({dragdrop:true,container:k},e));d[k]=j;function h(l){var n;if(l.status==plupload.DONE){n=\"plupload_done\"}if(l.status==plupload.FAILED){n=\"plupload_failed\"}if(l.status==plupload.QUEUED){n=\"plupload_delete\"}if(l.status==plupload.UPLOADING){n=\"plupload_uploading\"}var m=c(\"#\"+l.id).attr(\"class\",n).find(\"a\").css(\"display\",\"block\");if(l.hint){m.attr(\"title\",l.hint)}}function f(){c(\"span.plupload_total_status\",i).html(j.total.percent+\"%\");c(\"div.plupload_progress_bar\",i).css(\"width\",j.total.percent+\"%\");c(\"span.plupload_upload_status\",i).text(a(\"Uploaded %d/%d files\").replace(/%d\\/%d/,j.total.uploaded+\"/\"+j.files.length))}function g(){var m=c(\"ul.plupload_filelist\",i).html(\"\"),n=0,l;c.each(j.files,function(p,o){l=\"\";if(o.status==plupload.DONE){if(o.target_name){l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_tmpname\" value=\"'+plupload.xmlEncode(o.target_name)+'\" />'}l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_name\" value=\"'+plupload.xmlEncode(o.name)+'\" />';l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_status\" value=\"'+(o.status==plupload.DONE?\"done\":\"failed\")+'\" />';n++;c(\"#\"+k+\"_count\").val(n)}m.append('<li id=\"'+o.id+'\"><div class=\"plupload_file_name\"><span>'+o.name+'</span></div><div class=\"plupload_file_action\"><a href=\"#\"></a></div><div class=\"plupload_file_status\">'+o.percent+'%</div><div class=\"plupload_file_size\">'+plupload.formatSize(o.size)+'</div><div class=\"plupload_clearer\">&nbsp;</div>'+l+\"</li>\");h(o);c(\"#\"+o.id+\".plupload_delete a\").click(function(q){c(\"#\"+o.id).remove();j.removeFile(o);q.preventDefault()})});c(\"span.plupload_total_file_size\",i).html(plupload.formatSize(j.total.size));if(j.total.queued===0){c(\"span.plupload_add_text\",i).text(a(\"Add files.\"))}else{c(\"span.plupload_add_text\",i).text(j.total.queued+\" files queued.\")}c(\"a.plupload_start\",i).toggleClass(\"plupload_disabled\",j.files.length==(j.total.uploaded+j.total.failed));m[0].scrollTop=m[0].scrollHeight;f();if(!j.files.length&&j.features.dragdrop&&j.settings.dragdrop){c(\"#\"+k+\"_filelist\").append('<li class=\"plupload_droptext\">'+a(\"Drag files here.\")+\"</li>\")}}j.bind(\"UploadFile\",function(l,m){c(\"#\"+m.id).addClass(\"plupload_current_file\")});j.bind(\"Init\",function(l,m){b(k,i);if(!e.unique_names&&e.rename){c(\"#\"+k+\"_filelist div.plupload_file_name span\",i).live(\"click\",function(s){var q=c(s.target),o,r,n,p=\"\";o=l.getFile(q.parents(\"li\")[0].id);n=o.name;r=/^(.+)(\\.[^.]+)$/.exec(n);if(r){n=r[1];p=r[2]}q.hide().after('<input type=\"text\" />');q.next().val(n).focus().blur(function(){q.show().next().remove()}).keydown(function(u){var t=c(this);if(u.keyCode==13){u.preventDefault();o.name=t.val()+p;q.text(o.name);t.blur()}})})}c(\"a.plupload_add\",i).attr(\"id\",k+\"_browse\");l.settings.browse_button=k+\"_browse\";if(l.features.dragdrop&&l.settings.dragdrop){l.settings.drop_element=k+\"_filelist\";c(\"#\"+k+\"_filelist\").append('<li class=\"plupload_droptext\">'+a(\"Drag files here.\")+\"</li>\")}c(\"#\"+k+\"_container\").attr(\"title\",\"Using runtime: \"+m.runtime);c(\"a.plupload_start\",i).click(function(n){if(!c(this).hasClass(\"plupload_disabled\")){j.start()}n.preventDefault()});c(\"a.plupload_stop\",i).click(function(n){n.preventDefault();j.stop()});c(\"a.plupload_start\",i).addClass(\"plupload_disabled\")});j.init();j.bind(\"Error\",function(l,o){var m=o.file,n;if(m){n=o.message;if(o.details){n+=\" (\"+o.details+\")\"}if(o.code==plupload.FILE_SIZE_ERROR){alert(a(\"Error: File too large: \")+m.name)}if(o.code==plupload.FILE_EXTENSION_ERROR){alert(a(\"Error: Invalid file extension: \")+m.name)}m.hint=n;c(\"#\"+m.id).attr(\"class\",\"plupload_failed\").find(\"a\").css(\"display\",\"block\").attr(\"title\",n)}});j.bind(\"StateChanged\",function(){if(j.state===plupload.STARTED){c(\"li.plupload_delete a,div.plupload_buttons\",i).hide();c(\"span.plupload_upload_status,div.plupload_progress,a.plupload_stop\",i).css(\"display\",\"block\");c(\"span.plupload_upload_status\",i).text(\"Uploaded \"+j.total.uploaded+\"/\"+j.files.length+\" files\");if(e.multiple_queues){c(\"span.plupload_total_status,span.plupload_total_file_size\",i).show()}}else{g();c(\"a.plupload_stop,div.plupload_progress\",i).hide();c(\"a.plupload_delete\",i).css(\"display\",\"block\")}});j.bind(\"QueueChanged\",g);j.bind(\"FileUploaded\",function(l,m){h(m)});j.bind(\"UploadProgress\",function(l,m){c(\"#\"+m.id+\" div.plupload_file_status\",i).html(m.percent+\"%\");h(m);f();if(e.multiple_queues&&j.total.uploaded+j.total.failed==j.files.length){c(\".plupload_buttons,.plupload_upload_status\",i).css(\"display\",\"inline\");c(\".plupload_start\",i).addClass(\"plupload_disabled\");c(\"span.plupload_total_status,span.plupload_total_file_size\",i).hide()}});if(e.setup){e.setup(j)}});return this}else{return d[c(this[0]).attr(\"id\")]}}})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css",
    "content": "/*\n   Plupload\n------------------------------------------------------------------- */\n\n.plupload_button {cursor: pointer;}\n\n.plupload_wrapper {\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 100%;\n}\n\n.plupload .plupload_container input {width: 98%;}\n.plupload .plupload_filelist_footer {border-width: 1px 0 0 0}\n.plupload .plupload_filelist_header {border-width: 0 0 1px 0}\ndiv.plupload .plupload_file {border-width: 0 0 1px 0}\ndiv.plupload div.plupload_header {border-width: 0 0 1px 0; position: relative;}\n\n.plupload_file .ui-icon {\n\tcursor:pointer;\t\n}\n\n.plupload_header_content {\n\tbackground-image: url('../img/plupload.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 8px center;\n\tmin-height: 56px;\n\tpadding-left: 60px;\n\tposition:relative;\n}\n.plupload_header_content_bw {background-image: url('../img/plupload-bw.png');}\n.plupload_header_title {\n\tfont: normal 18px sans-serif;\n\tpadding: 6px 0 3px;\n}\n.plupload_header_text {font: normal 12px sans-serif;}\n\n.plupload_filelist,\n.plupload_filelist_content {\n\tborder-collapse: collapse;\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n}\n\n.plupload_cell {padding: 8px 6px;}\n\n.plupload_file {\n\tborder-left: none;\n\tborder-right: none;\n}\n\n.plupload .ui-sortable-helper,\n.plupload .ui-sortable .plupload_file {\n\tcursor:move;\t\n}\n\n.plupload_scroll {\n\tmax-height: 180px;\n\tmin-height: 168px;\n\t_height: 168px;\n\toverflow-y: auto;\n}\n\n.plupload_file_size, .plupload_file_status {text-align: right;}\n.plupload_file_size, .plupload_file_status {width: 52px;}\n.plupload_file_action {width: 16px;}\n.plupload_file_name {\n\toverflow: hidden;\n\tpadding-left: 10px;\n}\n\n.plupload_file_rename {\n\twidth:95%;\t\n}\n\n.plupload_progress {width: 60px;}\n.plupload_progress_container {padding: 1px;}\n\n\n/* Floats */\n\n.plupload_right {float: right;}\n.plupload_left {float: left;}\n.plupload_clear,.plupload_clearer {clear: both;}\n.plupload_clearer, .plupload_progress_bar {\n\tdisplay: block;\n\tfont-size: 0;\n\tline-height: 0;\n}\n.plupload_clearer {height: 0;}\n\n/* Misc */\n.plupload_hidden {display: none;}\n.plupload_droptext {\n\tbackground: transparent;\n\ttext-align: center;\n\tvertical-align: middle;\n\tborder: 0;\n\tline-height: 165px;\n}\n\n.plupload_buttons, .plupload_upload_status {float: left}\n\n.plupload_message {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\t\n\theight: 100%;\n\twidth: 100%;\n}\n\n.plupload_message p {\n\tpadding:0.7em;\n\tmargin:0;\n}\n\n.plupload_message strong {\n\tfont-weight: bold;\t\n}\n\nplupload_message i {\n\tfont-style: italic;\t\n}\n\n.plupload_message p span.ui-icon {\n\tfloat: left;\n\tmargin-right: 0.3em;\t\n}\n\n.plupload_header_content .ui-state-error,\n.plupload_header_content .ui-state-highlight {\n\tborder:none;\t\n}\n\n.plupload_message_close {\n\tposition:absolute;\n\ttop:5px;\n\tright:5px;\n\tcursor:pointer;\t\n}\n\n.plupload .ui-sortable-placeholder {\n\theight:35px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js",
    "content": "(function(f,a,c,g,e){var h={};function b(i){return c.translate(i)||i}function d(i){i.html('<div class=\"plupload_wrapper\"><div class=\"ui-widget-content plupload_container\"><div class=\"plupload\"><div class=\"ui-state-default ui-widget-header plupload_header\"><div class=\"plupload_header_content\"><div class=\"plupload_header_title\">'+b(\"Select files\")+'</div><div class=\"plupload_header_text\">'+b(\"Add files to the upload queue and click the start button.\")+'</div></div></div><div class=\"plupload_content\"><table class=\"plupload_filelist\"><tr class=\"ui-widget-header plupload_filelist_header\"><td class=\"plupload_cell plupload_file_name\">'+b(\"Filename\")+'</td><td class=\"plupload_cell plupload_file_status\">'+b(\"Status\")+'</td><td class=\"plupload_cell plupload_file_size\">'+b(\"Size\")+'</td><td class=\"plupload_cell plupload_file_action\">&nbsp;</td></tr></table><div class=\"plupload_scroll\"><table class=\"plupload_filelist_content\"></table></div><table class=\"plupload_filelist\"><tr class=\"ui-widget-header ui-widget-content plupload_filelist_footer\"><td class=\"plupload_cell plupload_file_name\"><div class=\"plupload_buttons\"><!-- Visible --><a class=\"plupload_button plupload_add\">'+b(\"Add Files\")+'</a>&nbsp;<a class=\"plupload_button plupload_start\">'+b(\"Start Upload\")+'</a>&nbsp;<a class=\"plupload_button plupload_stop plupload_hidden\">'+b(\"Stop Upload\")+'</a>&nbsp;</div><div class=\"plupload_started plupload_hidden\"><!-- Hidden --><div class=\"plupload_progress plupload_right\"><div class=\"plupload_progress_container\"></div></div><div class=\"plupload_cell plupload_upload_status\"></div><div class=\"plupload_clearer\">&nbsp;</div></div></td><td class=\"plupload_file_status\"><span class=\"plupload_total_status\">0%</span></td><td class=\"plupload_file_size\"><span class=\"plupload_total_file_size\">0 kb</span></td><td class=\"plupload_file_action\"></td></tr></table></div></div></div><input class=\"plupload_count\" value=\"0\" type=\"hidden\"></div>')}g.widget(\"ui.plupload\",{contents_bak:\"\",runtime:null,options:{browse_button_hover:\"ui-state-hover\",browse_button_active:\"ui-state-active\",dragdrop:true,multiple_queues:true,buttons:{browse:true,start:true,stop:true},autostart:false,sortable:false,rename:false,max_file_count:0},FILE_COUNT_ERROR:-9001,_create:function(){var i=this,k,j;k=this.element.attr(\"id\");if(!k){k=c.guid();this.element.attr(\"id\",k)}this.id=k;this.contents_bak=this.element.html();d(this.element);this.container=g(\".plupload_container\",this.element).attr(\"id\",k+\"_container\");this.filelist=g(\".plupload_filelist_content\",this.container).attr({id:k+\"_filelist\",unselectable:\"on\"});this.browse_button=g(\".plupload_add\",this.container).attr(\"id\",k+\"_browse\");this.start_button=g(\".plupload_start\",this.container).attr(\"id\",k+\"_start\");this.stop_button=g(\".plupload_stop\",this.container).attr(\"id\",k+\"_stop\");if(g.ui.button){this.browse_button.button({icons:{primary:\"ui-icon-circle-plus\"}});this.start_button.button({icons:{primary:\"ui-icon-circle-arrow-e\"},disabled:true});this.stop_button.button({icons:{primary:\"ui-icon-circle-close\"}})}this.progressbar=g(\".plupload_progress_container\",this.container);if(g.ui.progressbar){this.progressbar.progressbar()}this.counter=g(\".plupload_count\",this.element).attr({id:k+\"_count\",name:k+\"_count\"});j=this.uploader=h[k]=new c.Uploader(g.extend({container:k,browse_button:k+\"_browse\"},this.options));j.bind(\"Error\",function(l,m){if(m.code===c.INIT_ERROR){i.destroy()}});j.bind(\"Init\",function(l,m){if(!i.options.buttons.browse){i.browse_button.button(\"disable\").hide();l.disableBrowse(true)}if(!i.options.buttons.start){i.start_button.button(\"disable\").hide()}if(!i.options.buttons.stop){i.stop_button.button(\"disable\").hide()}if(!i.options.unique_names&&i.options.rename){i._enableRenaming()}if(j.features.dragdrop&&i.options.dragdrop){i._enableDragAndDrop()}i.container.attr(\"title\",b(\"Using runtime: \")+(i.runtime=m.runtime));i.start_button.click(function(n){if(!g(this).button(\"option\",\"disabled\")){i.start()}n.preventDefault()});i.stop_button.click(function(n){i.stop();n.preventDefault()})});if(i.options.max_file_count){j.bind(\"FilesAdded\",function(l,n){var o=[],m=n.length;var p=l.files.length+m-i.options.max_file_count;if(p>0){o=n.splice(m-p,p);l.trigger(\"Error\",{code:i.FILE_COUNT_ERROR,message:b(\"File count error.\"),file:o})}})}j.init();j.bind(\"FilesAdded\",function(l,m){i._trigger(\"selected\",null,{up:l,files:m});if(i.options.autostart){setTimeout(function(){i.start()},10)}});j.bind(\"FilesRemoved\",function(l,m){i._trigger(\"removed\",null,{up:l,files:m})});j.bind(\"QueueChanged\",function(){i._updateFileList()});j.bind(\"StateChanged\",function(){i._handleState()});j.bind(\"UploadFile\",function(l,m){i._handleFileStatus(m)});j.bind(\"FileUploaded\",function(l,m){i._handleFileStatus(m);i._trigger(\"uploaded\",null,{up:l,file:m})});j.bind(\"UploadProgress\",function(l,m){g(\"#\"+m.id).find(\".plupload_file_status\").html(m.percent+\"%\").end().find(\".plupload_file_size\").html(c.formatSize(m.size));i._handleFileStatus(m);i._updateTotalProgress();i._trigger(\"progress\",null,{up:l,file:m})});j.bind(\"UploadComplete\",function(l,m){i._trigger(\"complete\",null,{up:l,files:m})});j.bind(\"Error\",function(l,p){var n=p.file,o,m;if(n){o=\"<strong>\"+p.message+\"</strong>\";m=p.details;if(m){o+=\" <br /><i>\"+p.details+\"</i>\"}else{switch(p.code){case c.FILE_EXTENSION_ERROR:m=b(\"File: %s\").replace(\"%s\",n.name);break;case c.FILE_SIZE_ERROR:m=b(\"File: %f, size: %s, max file size: %m\").replace(/%([fsm])/g,function(r,q){switch(q){case\"f\":return n.name;case\"s\":return n.size;case\"m\":return c.parseSize(i.options.max_file_size)}});break;case i.FILE_COUNT_ERROR:m=b(\"Upload element accepts only %d file(s) at a time. Extra files were stripped.\").replace(\"%d\",i.options.max_file_count);break;case c.IMAGE_FORMAT_ERROR:m=c.translate(\"Image format either wrong or not supported.\");break;case c.IMAGE_MEMORY_ERROR:m=c.translate(\"Runtime ran out of available memory.\");break;case c.IMAGE_DIMENSIONS_ERROR:m=c.translate(\"Resoultion out of boundaries! <b>%s</b> runtime supports images only up to %wx%hpx.\").replace(/%([swh])/g,function(r,q){switch(q){case\"s\":return l.runtime;case\"w\":return l.features.maxWidth;case\"h\":return l.features.maxHeight}});break;case c.HTTP_ERROR:m=b(\"Upload URL might be wrong or doesn't exist\");break}o+=\" <br /><i>\"+m+\"</i>\"}i.notify(\"error\",o);i._trigger(\"error\",null,{up:l,file:n,error:o})}})},_setOption:function(j,k){var i=this;if(j==\"buttons\"&&typeof(k)==\"object\"){k=g.extend(i.options.buttons,k);if(!k.browse){i.browse_button.button(\"disable\").hide();up.disableBrowse(true)}else{i.browse_button.button(\"enable\").show();up.disableBrowse(false)}if(!k.start){i.start_button.button(\"disable\").hide()}else{i.start_button.button(\"enable\").show()}if(!k.stop){i.stop_button.button(\"disable\").hide()}else{i.start_button.button(\"enable\").show()}}i.uploader.settings[j]=k},start:function(){this.uploader.start();this._trigger(\"start\",null)},stop:function(){this.uploader.stop();this._trigger(\"stop\",null)},getFile:function(j){var i;if(typeof j===\"number\"){i=this.uploader.files[j]}else{i=this.uploader.getFile(j)}return i},removeFile:function(j){var i=this.getFile(j);if(i){this.uploader.removeFile(i)}},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},_handleState:function(){var j=this,i=this.uploader;if(i.state===c.STARTED){g(j.start_button).button(\"disable\");g([]).add(j.stop_button).add(\".plupload_started\").removeClass(\"plupload_hidden\");g(\".plupload_upload_status\",j.element).text(b(\"Uploaded %d/%d files\").replace(\"%d/%d\",i.total.uploaded+\"/\"+i.files.length));g(\".plupload_header_content\",j.element).addClass(\"plupload_header_content_bw\")}else{g([]).add(j.stop_button).add(\".plupload_started\").addClass(\"plupload_hidden\");if(j.options.multiple_queues){g(j.start_button).button(\"enable\");g(\".plupload_header_content\",j.element).removeClass(\"plupload_header_content_bw\")}j._updateFileList()}},_handleFileStatus:function(l){var n,j;if(!g(\"#\"+l.id).length){return}switch(l.status){case c.DONE:n=\"plupload_done\";j=\"ui-icon ui-icon-circle-check\";break;case c.FAILED:n=\"ui-state-error plupload_failed\";j=\"ui-icon ui-icon-alert\";break;case c.QUEUED:n=\"plupload_delete\";j=\"ui-icon ui-icon-circle-minus\";break;case c.UPLOADING:n=\"ui-state-highlight plupload_uploading\";j=\"ui-icon ui-icon-circle-arrow-w\";var i=g(\".plupload_scroll\",this.container),m=i.scrollTop(),o=i.height(),k=g(\"#\"+l.id).position().top+g(\"#\"+l.id).height();if(o<k){i.scrollTop(m+k-o)}break}n+=\" ui-state-default plupload_file\";g(\"#\"+l.id).attr(\"class\",n).find(\".ui-icon\").attr(\"class\",j)},_updateTotalProgress:function(){var i=this.uploader;this.progressbar.progressbar(\"value\",i.total.percent);this.element.find(\".plupload_total_status\").html(i.total.percent+\"%\").end().find(\".plupload_total_file_size\").html(c.formatSize(i.total.size)).end().find(\".plupload_upload_status\").text(b(\"Uploaded %d/%d files\").replace(\"%d/%d\",i.total.uploaded+\"/\"+i.files.length))},_updateFileList:function(){var k=this,j=this.uploader,m=this.filelist,l=0,o,n=this.id+\"_\",i;if(g.ui.sortable&&this.options.sortable){g(\"tbody\",m).sortable(\"destroy\")}m.empty();g.each(j.files,function(q,p){i=\"\";o=n+l;if(p.status===c.DONE){if(p.target_name){i+='<input type=\"hidden\" name=\"'+o+'_tmpname\" value=\"'+c.xmlEncode(p.target_name)+'\" />'}i+='<input type=\"hidden\" name=\"'+o+'_name\" value=\"'+c.xmlEncode(p.name)+'\" />';i+='<input type=\"hidden\" name=\"'+o+'_status\" value=\"'+(p.status===c.DONE?\"done\":\"failed\")+'\" />';l++;k.counter.val(l)}m.append('<tr class=\"ui-state-default plupload_file\" id=\"'+p.id+'\"><td class=\"plupload_cell plupload_file_name\"><span>'+p.name+'</span></td><td class=\"plupload_cell plupload_file_status\">'+p.percent+'%</td><td class=\"plupload_cell plupload_file_size\">'+c.formatSize(p.size)+'</td><td class=\"plupload_cell plupload_file_action\"><div class=\"ui-icon\"></div>'+i+\"</td></tr>\");k._handleFileStatus(p);g(\"#\"+p.id+\".plupload_delete .ui-icon, #\"+p.id+\".plupload_done .ui-icon\").click(function(r){g(\"#\"+p.id).remove();j.removeFile(p);r.preventDefault()});k._trigger(\"updatelist\",null,m)});if(j.total.queued===0){g(\".ui-button-text\",k.browse_button).text(b(\"Add Files\"))}else{g(\".ui-button-text\",k.browse_button).text(b(\"%d files queued\").replace(\"%d\",j.total.queued))}if(j.files.length===(j.total.uploaded+j.total.failed)){k.start_button.button(\"disable\")}else{k.start_button.button(\"enable\")}m[0].scrollTop=m[0].scrollHeight;k._updateTotalProgress();if(!j.files.length&&j.features.dragdrop&&j.settings.dragdrop){g(\"#\"+o+\"_filelist\").append('<tr><td class=\"plupload_droptext\">'+b(\"Drag files here.\")+\"</td></tr>\")}else{if(k.options.sortable&&g.ui.sortable){k._enableSortingList()}}},_enableRenaming:function(){var i=this;g(\".plupload_delete .plupload_file_name span\",this.filelist).live(\"click\",function(o){var m=g(o.target),k,n,j,l=\"\";k=i.uploader.getFile(m.parents(\"tr\")[0].id);j=k.name;n=/^(.+)(\\.[^.]+)$/.exec(j);if(n){j=n[1];l=n[2]}m.hide().after('<input class=\"plupload_file_rename\" type=\"text\" />');m.next().val(j).focus().blur(function(){m.show().next().remove()}).keydown(function(q){var p=g(this);if(g.inArray(q.keyCode,[13,27])!==-1){q.preventDefault();if(q.keyCode===13){k.name=p.val()+l;m.text(k.name)}p.blur()}})})},_enableDragAndDrop:function(){this.filelist.append('<tr><td class=\"plupload_droptext\">'+b(\"Drag files here.\")+\"</td></tr>\");this.filelist.parent().attr(\"id\",this.id+\"_dropbox\");this.uploader.settings.drop_element=this.options.drop_element=this.id+\"_dropbox\"},_enableSortingList:function(){var j,i=this;if(g(\"tbody tr\",this.filelist).length<2){return}g(\"tbody\",this.filelist).sortable({containment:\"parent\",items:\".plupload_delete\",helper:function(l,k){return k.clone(true).find(\"td:not(.plupload_file_name)\").remove().end().css(\"width\",\"100%\")},stop:function(p,o){var l,n,k,m=[];g.each(g(this).sortable(\"toArray\"),function(q,r){m[m.length]=i.uploader.getFile(r)});m.unshift(m.length);m.unshift(0);Array.prototype.splice.apply(i.uploader.files,m)}})},notify:function(j,k){var i=g('<div class=\"plupload_message\"><span class=\"plupload_message_close ui-icon ui-icon-circle-close\" title=\"'+b(\"Close\")+'\"></span><p><span class=\"ui-icon\"></span>'+k+\"</p></div>\");i.addClass(\"ui-state-\"+(j===\"error\"?\"error\":\"highlight\")).find(\"p .ui-icon\").addClass(\"ui-icon-\"+(j===\"error\"?\"alert\":\"info\")).end().find(\".plupload_message_close\").click(function(){i.remove()}).end();g(\".plupload_header_content\",this.container).append(i)},destroy:function(){g(\".plupload_button\",this.element).unbind();if(g.ui.button){g(\".plupload_add, .plupload_start, .plupload_stop\",this.container).button(\"destroy\")}if(g.ui.progressbar){this.progressbar.progressbar(\"destroy\")}if(g.ui.sortable&&this.options.sortable){g(\"tbody\",this.filelist).sortable(\"destroy\")}this.uploader.destroy();this.element.empty().html(this.contents_bak);this.contents_bak=\"\";g.Widget.prototype.destroy.apply(this)}})}(window,document,plupload,jQuery));"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.browserplus.js",
    "content": "(function(a){a.runtimes.BrowserPlus=a.addRuntime(\"browserplus\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,i){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(n){var m,l,j=[],k,o;for(l=0;l<n.length;l++){k=n[l];o=a.guid();h[o]=k;j.push(new a.File(o,k.name,k.size))}if(l){g.trigger(\"FilesAdded\",j)}}function b(){var j=false;g.bind(\"PostInit\",function(){var n,l=d.drop_element,p=g.id+\"_droptarget\",k=document.getElementById(l),m;function q(s,r){e.DragAndDrop.AddDropTarget({id:s},function(t){e.DragAndDrop.AttachCallbacks({id:s,hover:function(u){if(!u&&r){r()}},drop:function(u){if(r){r()}f(u)}},function(){})})}function o(){document.getElementById(p).style.top=\"-1000px\"}if(k){if(document.attachEvent&&(/MSIE/gi).test(navigator.userAgent)){n=document.createElement(\"div\");n.setAttribute(\"id\",p);a.extend(n.style,{position:\"absolute\",top:\"-1000px\",background:\"red\",filter:\"alpha(opacity=0)\",opacity:0});document.body.appendChild(n);a.addEvent(k,\"dragenter\",function(s){var r,t;r=document.getElementById(l);t=a.getPos(r);a.extend(document.getElementById(p).style,{top:t.y+\"px\",left:t.x+\"px\",width:r.offsetWidth+\"px\",height:r.offsetHeight+\"px\"})});q(p,o)}else{q(l)}}a.addEvent(document.getElementById(d.browse_button),\"click\",function(x){var r=[],t,s,w=d.filters,v,u;x.preventDefault();if(j){return}no_type_restriction:for(t=0;t<w.length;t++){v=w[t].extensions.split(\",\");for(s=0;s<v.length;s++){if(v[s]===\"*\"){r=[];break no_type_restriction}u=a.mimeTypes[v[s]];if(u&&a.inArray(u,r)===-1){r.push(a.mimeTypes[v[s]])}}}e.FileBrowse.OpenBrowseDialog({mimeTypes:r},function(y){if(y.success){f(y.value)}})});k=n=null});g.bind(\"CancelUpload\",function(){e.Uploader.cancel({},function(){})});g.bind(\"DisableBrowse\",function(k,l){j=l});g.bind(\"UploadFile\",function(n,k){var m=h[k.id],s={},l=n.settings.chunk_size,o,p=[];function r(t,v){var u;if(k.status==a.FAILED){return}s.name=k.target_name||k.name;if(l){s.chunk=\"\"+t;s.chunks=\"\"+v}u=p.shift();e.Uploader.upload({url:n.settings.url,files:{file:u},cookies:document.cookies,postvars:a.extend(s,n.settings.multipart_params),progressCallback:function(y){var x,w=0;o[t]=parseInt(y.filePercent*u.size/100,10);for(x=0;x<o.length;x++){w+=o[x]}k.loaded=w;n.trigger(\"UploadProgress\",k)}},function(x){var w,y;if(x.success){w=x.value.statusCode;if(l){n.trigger(\"ChunkUploaded\",k,{chunk:t,chunks:v,response:x.value.body,status:w})}if(p.length>0){r(++t,v)}else{k.status=a.DONE;n.trigger(\"FileUploaded\",k,{response:x.value.body,status:w});if(w>=400){n.trigger(\"Error\",{code:a.HTTP_ERROR,message:a.translate(\"HTTP Error.\"),file:k,status:w})}}}else{n.trigger(\"Error\",{code:a.GENERIC_ERROR,message:a.translate(\"Generic Error.\"),file:k,details:x.error})}})}function q(t){k.size=t.size;if(l){e.FileAccess.chunk({file:t,chunkSize:l},function(w){if(w.success){var x=w.value,u=x.length;o=Array(u);for(var v=0;v<u;v++){o[v]=0;p.push(x[v])}r(0,u)}})}else{o=Array(1);p.push(t);r(0,1)}}if(c&&/\\.(png|jpg|jpeg)$/i.test(k.name)){BrowserPlus.ImageAlter.transform({file:m,quality:c.quality||90,actions:[{scale:{maxwidth:c.width,maxheight:c.height}}]},function(t){if(t.success){q(t.value.file)}})}else{q(m)}});i({success:true})}if(e){e.init(function(k){var j=[{service:\"Uploader\",version:\"3\"},{service:\"DragAndDrop\",version:\"1\"},{service:\"FileBrowse\",version:\"1\"},{service:\"FileAccess\",version:\"2\"}];if(c){j.push({service:\"ImageAlter\",version:\"4\"})}if(k.success){e.require({services:j},function(l){if(l.success){b()}else{i()}})}else{i()}})}else{i()}}})})(plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.js",
    "content": "(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins[\"Shockwave Flash\"];h=h.description}catch(j){try{h=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\").GetVariable(\"$version\")}catch(i){h=\"0.0\"}}h=h.match(/\\d+/g);return parseFloat(h[0]+\".\"+h[1])}d.flash={trigger:function(j,h,i){setTimeout(function(){var m=a[j],l,k;if(m){m.trigger(\"Flash:\"+h,i)}},0)}};d.runtimes.Flash=d.addRuntime(\"flash\",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(m,o){var k,l,h=0,i=b.body;if(c()<10){o({success:false});return}g[m.id]=false;a[m.id]=m;k=b.getElementById(m.settings.browse_button);l=b.createElement(\"div\");l.id=m.id+\"_flash_container\";d.extend(l.style,{position:\"absolute\",top:\"0px\",background:m.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100%\",height:\"100%\"});l.className=\"plupload flash\";if(m.settings.container){i=b.getElementById(m.settings.container);if(d.getStyle(i,\"position\")===\"static\"){i.style.position=\"relative\"}}i.appendChild(l);(function(){var p,q;p='<object id=\"'+m.id+'_flash\" type=\"application/x-shockwave-flash\" data=\"'+m.settings.flash_swf_url+'\" ';if(d.ua.ie){p+='classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" '}p+='width=\"100%\" height=\"100%\" style=\"outline:0\"><param name=\"movie\" value=\"'+m.settings.flash_swf_url+'\" /><param name=\"flashvars\" value=\"id='+escape(m.id)+'\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"allowscriptaccess\" value=\"always\" /></object>';if(d.ua.ie){q=b.createElement(\"div\");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+\"_flash\")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind(\"Destroy\",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+\"_flash_container\");if(q){i.removeChild(q)}});m.bind(\"Flash:Init\",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind(\"UploadFile\",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\\.(jpg|jpeg)$/i.test(u.name)?\"jpg\":\"png\",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind(\"CancelUpload\",function(){n().cancelUpload()});m.bind(\"Flash:UploadProcess\",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger(\"UploadProgress\",u)}});m.bind(\"Flash:UploadChunkComplete\",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger(\"ChunkUploaded\",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger(\"FileUploaded\",t,{response:u.text})}});m.bind(\"Flash:SelectFiles\",function(s,v){var u,t,w=[],x;for(t=0;t<v.length;t++){u=v[t];x=d.guid();r[x]=u.id;r[u.id]=x;w.push(new d.File(x,u.name,u.size))}if(w.length){m.trigger(\"FilesAdded\",w)}});m.bind(\"Flash:SecurityError\",function(s,t){m.trigger(\"Error\",{code:d.SECURITY_ERROR,message:d.translate(\"Security error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:GenericError\",function(s,t){m.trigger(\"Error\",{code:d.GENERIC_ERROR,message:d.translate(\"Generic error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:IOError\",function(s,t){m.trigger(\"Error\",{code:d.IO_ERROR,message:d.translate(\"IO error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:ImageError\",function(s,t){m.trigger(\"Error\",{code:parseInt(t.code,10),message:d.translate(\"Image error.\"),file:m.getFile(r[t.id])})});m.bind(\"Flash:StageEvent:rollOver\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});m.bind(\"Flash:StageEvent:rollOut\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});m.bind(\"Flash:StageEvent:mouseDown\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(t,u)},s.id)}});m.bind(\"Flash:StageEvent:mouseUp\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});m.bind(\"Flash:ExifData\",function(s,t){m.trigger(\"ExifData\",m.getFile(r[t.id]),t.data)});m.bind(\"Flash:GpsData\",function(s,t){m.trigger(\"GpsData\",m.getFile(r[t.id]),t.data)});m.bind(\"QueueChanged\",function(s){m.refresh()});m.bind(\"FilesRemoved\",function(s,u){var t;for(t=0;t<u.length;t++){n().removeFile(r[u[t].id])}});m.bind(\"StateChanged\",function(s){m.refresh()});m.bind(\"Refresh\",function(s){var t,u,v;n().setFileFilters(m.settings.filters,m.settings.multi_selection);t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+\"_flash_container\").style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"})}});m.bind(\"DisableBrowse\",function(s,t){n().disableBrowse(t)});o({success:true})})}})})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.full.js",
    "content": "/*1.5.4*/\n(function(){var f=0,l=[],n={},j={},a={\"<\":\"lt\",\">\":\"gt\",\"&\":\"amp\",'\"':\"quot\",\"'\":\"#39\"},m=/[<>&\\\"\\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function k(){this.cancelBubble=true}(function(o){var p=o.split(/,/),q,s,r;for(q=0;q<p.length;q+=2){r=p[q+1].split(/ /);for(s=0;s<r.length;s++){j[r[s]]=p[q]}}})(\"application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe\");var g={VERSION:\"1.5.4\",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:j,ua:(function(){var s=navigator,r=s.userAgent,t=s.vendor,p,o,q;p=/WebKit/.test(r);q=p&&t.indexOf(\"Apple\")!==-1;o=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf(\"Win\")!==-1,ie:!p&&!o&&(/MSIE/gi).test(r)&&(/Explorer/gi).test(s.appName),webkit:p,gecko:!p&&/Gecko/.test(r),safari:q,opera:!!o}}()),typeOf:function(p){return({}).toString.call(p).match(/\\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(o){g.each(arguments,function(p,q){if(q>0){g.each(p,function(s,r){o[r]=s})}});return o},cleanName:function(o){var p,q;q=[/[\\300-\\306]/g,\"A\",/[\\340-\\346]/g,\"a\",/\\307/g,\"C\",/\\347/g,\"c\",/[\\310-\\313]/g,\"E\",/[\\350-\\353]/g,\"e\",/[\\314-\\317]/g,\"I\",/[\\354-\\357]/g,\"i\",/\\321/g,\"N\",/\\361/g,\"n\",/[\\322-\\330]/g,\"O\",/[\\362-\\370]/g,\"o\",/[\\331-\\334]/g,\"U\",/[\\371-\\374]/g,\"u\"];for(p=0;p<q.length;p+=2){o=o.replace(q[p],q[p+1])}o=o.replace(/\\s+/g,\"_\");o=o.replace(/[^a-z0-9_\\-\\.]+/gi,\"\");return o},addRuntime:function(o,p){p.name=o;l[o]=p;l.push(p);return p},guid:function(){var o=new Date().getTime().toString(32),p;for(p=0;p<5;p++){o+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||\"p\")+o+(f++).toString(32)},buildUrl:function(p,o){var q=\"\";g.each(o,function(s,r){q+=(q?\"&\":\"\")+encodeURIComponent(r)+\"=\"+encodeURIComponent(s)});if(q){p+=(p.indexOf(\"?\")>0?\"&\":\"?\")+q}return p},each:function(r,s){var q,p,o;if(r){q=r.length;if(q===b){for(p in r){if(r.hasOwnProperty(p)){if(s(r[p],p)===false){return}}}}else{for(o=0;o<q;o++){if(s(r[o],o)===false){return}}}}},formatSize:function(o){if(o===b||/\\D/.test(o)){return g.translate(\"N/A\")}if(o>1073741824){return Math.round(o/1073741824,1)+\" GB\"}if(o>1048576){return Math.round(o/1048576,1)+\" MB\"}if(o>1024){return Math.round(o/1024,1)+\" KB\"}return o+\" b\"},getPos:function(p,t){var u=0,s=0,w,v=document,q,r;p=p;t=t||v.body;function o(C){var A,B,z=0,D=0;if(C){B=C.getBoundingClientRect();A=v.compatMode===\"CSS1Compat\"?v.documentElement:v.body;z=B.left+A.scrollLeft;D=B.top+A.scrollTop}return{x:z,y:D}}if(p&&p.getBoundingClientRect&&((navigator.userAgent.indexOf(\"MSIE\")>0)&&(v.documentMode<8))){q=o(p);r=o(t);return{x:q.x-r.x,y:q.y-r.y}}w=p;while(w&&w!=t&&w.nodeType){u+=w.offsetLeft||0;s+=w.offsetTop||0;w=w.offsetParent}w=p.parentNode;while(w&&w!=t&&w.nodeType){u-=w.scrollLeft||0;s-=w.scrollTop||0;w=w.parentNode}return{x:u,y:s}},getSize:function(o){return{w:o.offsetWidth||o.clientWidth,h:o.offsetHeight||o.clientHeight}},parseSize:function(o){var p;if(typeof(o)==\"string\"){o=/^([0-9]+)([mgk]?)$/.exec(o.toLowerCase().replace(/[^0-9mkg]/g,\"\"));p=o[2];o=+o[1];if(p==\"g\"){o*=1073741824}if(p==\"m\"){o*=1048576}if(p==\"k\"){o*=1024}}return o},xmlEncode:function(o){return o?(\"\"+o).replace(m,function(p){return a[p]?\"&\"+a[p]+\";\":p}):o},toArray:function(q){var p,o=[];for(p=0;p<q.length;p++){o[p]=q[p]}return o},inArray:function(q,r){if(r){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(r,q)}for(var o=0,p=r.length;o<p;o++){if(r[o]===q){return o}}}return -1},addI18n:function(o){return g.extend(n,o)},translate:function(o){return n[o]||o},isEmptyObj:function(o){if(o===b){return true}for(var p in o){return false}return true},hasClass:function(q,p){var o;if(q.className==\"\"){return false}o=new RegExp(\"(^|\\\\s+)\"+p+\"(\\\\s+|$)\");return o.test(q.className)},addClass:function(p,o){if(!g.hasClass(p,o)){p.className=p.className==\"\"?o:p.className.replace(/\\s+$/,\"\")+\" \"+o}},removeClass:function(q,p){var o=new RegExp(\"(^|\\\\s+)\"+p+\"(\\\\s+|$)\");q.className=q.className.replace(o,function(s,r,t){return r===\" \"&&t===\" \"?\" \":\"\"})},getStyle:function(p,o){if(p.currentStyle){return p.currentStyle[o]}else{if(window.getComputedStyle){return window.getComputedStyle(p,null)[o]}}},addEvent:function(t,o,u){var s,r,q,p;p=arguments[3];o=o.toLowerCase();if(e===b){e=\"Plupload_\"+g.guid()}if(t.addEventListener){s=u;t.addEventListener(o,s,false)}else{if(t.attachEvent){s=function(){var v=window.event;if(!v.target){v.target=v.srcElement}v.preventDefault=h;v.stopPropagation=k;u(v)};t.attachEvent(\"on\"+o,s)}}if(t[e]===b){t[e]=g.guid()}if(!d.hasOwnProperty(t[e])){d[t[e]]={}}r=d[t[e]];if(!r.hasOwnProperty(o)){r[o]=[]}r[o].push({func:s,orig:u,key:p})},removeEvent:function(t,o){var r,u,q;if(typeof(arguments[2])==\"function\"){u=arguments[2]}else{q=arguments[2]}o=o.toLowerCase();if(t[e]&&d[t[e]]&&d[t[e]][o]){r=d[t[e]][o]}else{return}for(var p=r.length-1;p>=0;p--){if(r[p].key===q||r[p].orig===u){if(t.removeEventListener){t.removeEventListener(o,r[p].func,false)}else{if(t.detachEvent){t.detachEvent(\"on\"+o,r[p].func)}}r[p].orig=null;r[p].func=null;r.splice(p,1);if(u!==b){break}}}if(!r.length){delete d[t[e]][o]}if(g.isEmptyObj(d[t[e]])){delete d[t[e]];try{delete t[e]}catch(s){t[e]=b}}},removeAllEvents:function(p){var o=arguments[1];if(p[e]===b||!p[e]){return}g.each(d[p[e]],function(r,q){g.removeEvent(p,q,o)})}};g.Uploader=function(s){var p={},v,u=[],r,q=false;v=new g.QueueProgress();s=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:\"file\",filters:[]},s);function t(){var x,y=0,w;if(this.state==g.STARTED){for(w=0;w<u.length;w++){if(!x&&u[w].status==g.QUEUED){x=u[w];x.status=g.UPLOADING;if(this.trigger(\"BeforeUpload\",x)){this.trigger(\"UploadFile\",x)}}else{y++}}if(y==u.length){this.stop();this.trigger(\"UploadComplete\",u)}}}function o(){var x,w;v.reset();for(x=0;x<u.length;x++){w=u[x];if(w.size!==b){v.size+=w.size;v.loaded+=w.loaded}else{v.size=b}if(w.status==g.DONE){v.uploaded++}else{if(w.status==g.FAILED){v.failed++}else{v.queued++}}}if(v.size===b){v.percent=u.length>0?Math.ceil(v.uploaded/u.length*100):0}else{v.bytesPerSec=Math.ceil(v.loaded/((+new Date()-r||1)/1000));v.percent=v.size>0?Math.ceil(v.loaded/v.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:\"\",features:{},files:u,settings:s,total:v,id:g.guid(),init:function(){var B=this,C,y,x,A=0,z;if(typeof(s.preinit)==\"function\"){s.preinit(B)}else{g.each(s.preinit,function(E,D){B.bind(D,E)})}s.page_url=s.page_url||document.location.pathname.replace(/\\/[^\\/]+$/g,\"/\");if(!/^(\\w+:\\/\\/|\\/)/.test(s.url)){s.url=s.page_url+s.url}s.chunk_size=g.parseSize(s.chunk_size);s.max_file_size=g.parseSize(s.max_file_size);B.bind(\"FilesAdded\",function(D,G){var F,E,I=0,J,H=s.filters;if(H&&H.length){J=[];g.each(H,function(K){g.each(K.extensions.split(/,/),function(L){if(/^\\s*\\*\\s*$/.test(L)){J.push(\"\\\\.*\")}else{J.push(\"\\\\.\"+L.replace(new RegExp(\"[\"+(\"/^$.*+?|()[]{}\\\\\".replace(/./g,\"\\\\$&\"))+\"]\",\"g\"),\"\\\\$&\"))}})});J=new RegExp(J.join(\"|\")+\"$\",\"i\")}for(F=0;F<G.length;F++){E=G[F];E.loaded=0;E.percent=0;E.status=g.QUEUED;if(J&&!J.test(E.name)){D.trigger(\"Error\",{code:g.FILE_EXTENSION_ERROR,message:g.translate(\"File extension error.\"),file:E});continue}if(E.size!==b&&E.size>s.max_file_size){D.trigger(\"Error\",{code:g.FILE_SIZE_ERROR,message:g.translate(\"File size error.\"),file:E});continue}u.push(E);I++}if(I){c(function(){B.trigger(\"QueueChanged\");B.refresh()},1)}else{return false}});if(s.unique_names){B.bind(\"UploadFile\",function(D,E){var G=E.name.match(/\\.([^.]+)$/),F=\"tmp\";if(G){F=G[1]}E.target_name=E.id+\".\"+F})}B.bind(\"UploadProgress\",function(D,E){E.percent=E.size>0?Math.ceil(E.loaded/E.size*100):100;o()});B.bind(\"StateChanged\",function(D){if(D.state==g.STARTED){r=(+new Date())}else{if(D.state==g.STOPPED){for(C=D.files.length-1;C>=0;C--){if(D.files[C].status==g.UPLOADING){D.files[C].status=g.QUEUED;o()}}}}});B.bind(\"QueueChanged\",o);B.bind(\"Error\",function(D,E){if(E.file){E.file.status=g.FAILED;o();if(D.state==g.STARTED){c(function(){t.call(B)},1)}}});B.bind(\"FileUploaded\",function(D,E){E.status=g.DONE;E.loaded=E.size;D.trigger(\"UploadProgress\",E);c(function(){t.call(B)},1)});if(s.runtimes){y=[];z=s.runtimes.split(/\\s?,\\s?/);for(C=0;C<z.length;C++){if(l[z[C]]){y.push(l[z[C]])}}}else{y=l}function w(){var G=y[A++],F,D,E;if(G){F=G.getFeatures();D=B.settings.required_features;if(D){D=D.split(\",\");for(E=0;E<D.length;E++){if(!F[D[E]]){w();return}}}G.init(B,function(H){if(H&&H.success){B.features=F;B.runtime=G.name;B.trigger(\"Init\",{runtime:G.name});B.trigger(\"PostInit\");B.refresh()}else{w()}})}else{B.trigger(\"Error\",{code:g.INIT_ERROR,message:g.translate(\"Init error.\")})}}w();if(typeof(s.init)==\"function\"){s.init(B)}else{g.each(s.init,function(E,D){B.bind(D,E)})}},refresh:function(){this.trigger(\"Refresh\")},start:function(){if(u.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger(\"StateChanged\");t.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger(\"CancelUpload\");this.trigger(\"StateChanged\")}},disableBrowse:function(){q=arguments[0]!==b?arguments[0]:true;this.trigger(\"DisableBrowse\",q)},getFile:function(x){var w;for(w=u.length-1;w>=0;w--){if(u[w].id===x){return u[w]}}},removeFile:function(x){var w;for(w=u.length-1;w>=0;w--){if(u[w].id===x.id){return this.splice(w,1)[0]}}},splice:function(y,w){var x;x=u.splice(y===b?0:y,w===b?u.length:w);this.trigger(\"FilesRemoved\",x);this.trigger(\"QueueChanged\");return x},trigger:function(x){var z=p[x.toLowerCase()],y,w;if(z){w=Array.prototype.slice.call(arguments);w[0]=this;for(y=0;y<z.length;y++){if(z[y].func.apply(z[y].scope,w)===false){return false}}}return true},hasEventListener:function(w){return !!p[w.toLowerCase()]},bind:function(w,y,x){var z;w=w.toLowerCase();z=p[w]||[];z.push({func:y,scope:x||this});p[w]=z},unbind:function(w){w=w.toLowerCase();var z=p[w],x,y=arguments[1];if(z){if(y!==b){for(x=z.length-1;x>=0;x--){if(z[x].func===y){z.splice(x,1);break}}}else{z=[]}if(!z.length){delete p[w]}}},unbindAll:function(){var w=this;g.each(p,function(y,x){w.unbind(x)})},destroy:function(){this.stop();this.trigger(\"Destroy\");this.unbindAll()}})};g.File=function(r,p,q){var o=this;o.id=r;o.name=p;o.size=q;o.loaded=0;o.percent=0;o.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(o,p){}};g.QueueProgress=function(){var o=this;o.size=0;o.loaded=0;o.uploaded=0;o.failed=0;o.queued=0;o.percent=0;o.bytesPerSec=0;o.reset=function(){o.size=o.loaded=o.uploaded=o.failed=o.queued=o.percent=o.bytesPerSec=0}};g.runtimes={};window.plupload=g})();(function(){if(window.google&&google.gears){return}var a=null;if(typeof GearsFactory!=\"undefined\"){a=new GearsFactory()}else{try{a=new ActiveXObject(\"Gears.Factory\");if(a.getBuildInfo().indexOf(\"ie_mobile\")!=-1){a.privateSetGlobalObject(this)}}catch(b){if((typeof navigator.mimeTypes!=\"undefined\")&&navigator.mimeTypes[\"application/x-googlegears\"]){a=document.createElement(\"object\");a.style.display=\"none\";a.width=0;a.height=0;a.type=\"application/x-googlegears\";document.documentElement.appendChild(a)}}}if(!a){return}if(!window.google){window.google={}}if(!google.gears){google.gears={factory:a}}})();(function(e,b,c,d){var f={};function a(h,k,m){var g,j,l,o;j=google.gears.factory.create(\"beta.canvas\");try{j.decode(h);if(!k.width){k.width=j.width}if(!k.height){k.height=j.height}o=Math.min(width/j.width,height/j.height);if(o<1||(o===1&&m===\"image/jpeg\")){j.resize(Math.round(j.width*o),Math.round(j.height*o));if(k.quality){return j.encode(m,{quality:k.quality/100})}return j.encode(m)}}catch(n){}return h}c.runtimes.Gears=c.addRuntime(\"gears\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(l,n){var m,h,g=false;if(!e.google||!google.gears){return n({success:false})}try{m=google.gears.factory.create(\"beta.desktop\")}catch(k){return n({success:false})}function j(q){var p,o,r=[],s;for(o=0;o<q.length;o++){p=q[o];s=c.guid();f[s]=p.blob;r.push(new c.File(s,p.name,p.blob.length))}l.trigger(\"FilesAdded\",r)}l.bind(\"PostInit\",function(){var p=l.settings,o=b.getElementById(p.drop_element);if(o){c.addEvent(o,\"dragover\",function(q){m.setDropEffect(q,\"copy\");q.preventDefault()},l.id);c.addEvent(o,\"drop\",function(r){var q=m.getDragData(r,\"application/x-gears-files\");if(q){j(q.files)}r.preventDefault()},l.id);o=0}c.addEvent(b.getElementById(p.browse_button),\"click\",function(u){var t=[],r,q,s;u.preventDefault();if(g){return}no_type_restriction:for(r=0;r<p.filters.length;r++){s=p.filters[r].extensions.split(\",\");for(q=0;q<s.length;q++){if(s[q]===\"*\"){t=[];break no_type_restriction}t.push(\".\"+s[q])}}m.openFiles(j,{singleFile:!p.multi_selection,filter:t})},l.id)});l.bind(\"CancelUpload\",function(){if(h.abort){h.abort()}});l.bind(\"UploadFile\",function(u,r){var w=0,v,s,t=0,q=u.settings.resize,o;if(q&&/\\.(png|jpg|jpeg)$/i.test(r.name)){f[r.id]=a(f[r.id],q,/\\.png$/i.test(r.name)?\"image/png\":\"image/jpeg\")}r.size=f[r.id].length;s=u.settings.chunk_size;o=s>0;v=Math.ceil(r.size/s);if(!o){s=r.size;v=1}function p(){var C,y=u.settings.multipart,x=0,B={name:r.target_name||r.name},z=u.settings.url;function A(E){var D,J=\"----pluploadboundary\"+c.guid(),G=\"--\",I=\"\\r\\n\",F,H;if(y){h.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+J);D=google.gears.factory.create(\"beta.blobbuilder\");c.each(c.extend(B,u.settings.multipart_params),function(L,K){D.append(G+J+I+'Content-Disposition: form-data; name=\"'+K+'\"'+I+I);D.append(L+I)});H=c.mimeTypes[r.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";D.append(G+J+I+'Content-Disposition: form-data; name=\"'+u.settings.file_data_name+'\"; filename=\"'+r.name+'\"'+I+\"Content-Type: \"+H+I+I);D.append(E);D.append(I+G+J+G+I);F=D.getAsBlob();x=F.length-E.length;E=F}h.send(E)}if(r.status==c.DONE||r.status==c.FAILED||u.state==c.STOPPED){return}if(o){B.chunk=w;B.chunks=v}C=Math.min(s,r.size-(w*s));if(!y){z=c.buildUrl(u.settings.url,B)}h=google.gears.factory.create(\"beta.httprequest\");h.open(\"POST\",z);if(!y){h.setRequestHeader(\"Content-Disposition\",'attachment; filename=\"'+r.name+'\"');h.setRequestHeader(\"Content-Type\",\"application/octet-stream\")}c.each(u.settings.headers,function(E,D){h.setRequestHeader(D,E)});h.upload.onprogress=function(D){r.loaded=t+D.loaded-x;u.trigger(\"UploadProgress\",r)};h.onreadystatechange=function(){var D;if(h.readyState==4&&u.state!==c.STOPPED){if(h.status==200){D={chunk:w,chunks:v,response:h.responseText,status:h.status};u.trigger(\"ChunkUploaded\",r,D);if(D.cancelled){r.status=c.FAILED;return}t+=C;if(++w>=v){r.status=c.DONE;u.trigger(\"FileUploaded\",r,{response:h.responseText,status:h.status})}else{p()}}else{u.trigger(\"Error\",{code:c.HTTP_ERROR,message:c.translate(\"HTTP Error.\"),file:r,chunk:w,chunks:v,status:h.status})}}};if(w<v){A(f[r.id].slice(w*s,C))}}p()});l.bind(\"DisableBrowse\",function(o,p){g=p});l.bind(\"Destroy\",function(o){var p,q,r={browseButton:o.settings.browse_button,dropElm:o.settings.drop_element};for(p in r){q=b.getElementById(r[p]);if(q){c.removeAllEvents(q,o.id)}}});n({success:true})}})})(window,document,plupload);(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return\"null\"}if(m===\"string\"){n=\"\\bb\\tt\\nn\\ff\\rr\\\"\\\"''\\\\\\\\\";return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(r,q){var p=n.indexOf(q);if(p+1){return\"\\\\\"+n.charAt(p+1)}r=q.charCodeAt().toString(16);return\"\\\\u\"+\"0000\".substring(r.length)+r})+'\"'}if(m==\"object\"){j=o.length!==e;n=\"\";if(j){for(l=0;l<o.length;l++){if(n){n+=\",\"}n+=c(o[l])}n=\"[\"+n+\"]\"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=\",\"}n+=c(k)+\":\"+c(o[k])}}n=\"{\"+n+\"}\"}return n}return\"\"+o}function f(s){var v=false,j=null,o=null,k,l,m,u,n,q=0;try{try{o=new ActiveXObject(\"AgControl.AgControl\");if(o.IsVersionSupported(s)){v=true}o=null}catch(r){var p=navigator.plugins[\"Silverlight Plug-In\"];if(p){k=p.description;if(k===\"1.0.30226.2\"){k=\"2.0.30226.2\"}l=k.split(\".\");while(l.length>3){l.pop()}while(l.length<4){l.push(0)}m=s.split(\".\");while(m.length>4){m.pop()}do{u=parseInt(m[q],10);n=parseInt(l[q],10);q++}while(q<m.length&&u===n);if(u<=n&&!isNaN(u)){v=true}}}}catch(t){v=false}return v}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]=\"Silverlight:\"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime(\"silverlight\",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m=\"\",n=p.settings.filters,l,k=b.body;if(!f(\"2.0.31005.0\")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement(\"div\");o.id=p.id+\"_silverlight_container\";d.extend(o.style,{position:\"absolute\",top:\"0px\",background:p.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100px\",height:\"100px\",overflow:\"hidden\",opacity:p.settings.shim_bgcolor||b.documentMode>8?\"\":0.01});o.className=\"plupload silverlight\";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,\"position\")===\"static\"){k.style.position=\"relative\"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=\"\"?\"|\":\"\")+n[l].title+\" | *.\"+n[l].extensions.replace(/,/g,\";*.\")}o.innerHTML='<object id=\"'+p.id+'_silverlight\" data=\"data:application/x-silverlight,\" type=\"application/x-silverlight-2\" style=\"outline:none;\" width=\"1024\" height=\"1024\"><param name=\"source\" value=\"'+p.settings.silverlight_xap_url+'\"/><param name=\"background\" value=\"Transparent\"/><param name=\"windowless\" value=\"true\"/><param name=\"enablehtmlaccess\" value=\"true\"/><param name=\"initParams\" value=\"id='+p.id+\",filter=\"+m+\",multiselect=\"+p.settings.multi_selection+'\"/></object>';function j(){return b.getElementById(p.id+\"_silverlight\").content.Upload}p.bind(\"Silverlight:Init\",function(){var r,s={};if(h[p.id]){return}h[p.id]=true;p.bind(\"Silverlight:StartSelectFiles\",function(t){r=[]});p.bind(\"Silverlight:SelectFile\",function(t,w,u,v){var x;x=d.guid();s[x]=w;s[w]=x;r.push(new d.File(x,u,v))});p.bind(\"Silverlight:SelectSuccessful\",function(){if(r.length){p.trigger(\"FilesAdded\",r)}});p.bind(\"Silverlight:UploadChunkError\",function(t,w,u,x,v){p.trigger(\"Error\",{code:d.IO_ERROR,message:\"IO Error.\",details:v,file:t.getFile(s[w])})});p.bind(\"Silverlight:UploadFileProgress\",function(t,x,u,w){var v=t.getFile(s[x]);if(v.status!=d.FAILED){v.size=w;v.loaded=u;t.trigger(\"UploadProgress\",v)}});p.bind(\"Refresh\",function(t){var u,v,w;u=b.getElementById(t.settings.browse_button);if(u){v=d.getPos(u,b.getElementById(t.settings.container));w=d.getSize(u);d.extend(b.getElementById(t.id+\"_silverlight_container\").style,{top:v.y+\"px\",left:v.x+\"px\",width:w.w+\"px\",height:w.h+\"px\"})}});p.bind(\"Silverlight:UploadChunkSuccessful\",function(t,w,u,z,y){var x,v=t.getFile(s[w]);x={chunk:u,chunks:z,response:y};t.trigger(\"ChunkUploaded\",v,x);if(v.status!=d.FAILED&&t.state!==d.STOPPED){j().UploadNextChunk()}if(u==z-1){v.status=d.DONE;t.trigger(\"FileUploaded\",v,{response:y})}});p.bind(\"Silverlight:UploadSuccessful\",function(t,w,u){var v=t.getFile(s[w]);v.status=d.DONE;t.trigger(\"FileUploaded\",v,{response:u})});p.bind(\"FilesRemoved\",function(t,v){var u;for(u=0;u<v.length;u++){j().RemoveFile(s[v[u].id])}});p.bind(\"UploadFile\",function(t,v){var w=t.settings,u=w.resize||{};j().UploadFile(s[v.id],t.settings.url,c({name:v.target_name||v.name,mime:d.mimeTypes[v.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:w.chunk_size,image_width:u.width,image_height:u.height,image_quality:u.quality||90,multipart:!!w.multipart,multipart_params:w.multipart_params||{},file_data_name:w.file_data_name,headers:w.headers}))});p.bind(\"CancelUpload\",function(){j().CancelUpload()});p.bind(\"Silverlight:MouseEnter\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.addClass(u,v)}});p.bind(\"Silverlight:MouseLeave\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.removeClass(u,v)}});p.bind(\"Silverlight:MouseLeftButtonDown\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.addClass(u,v);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(u,v)})}});p.bind(\"Sliverlight:StartSelectFiles\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.removeClass(u,v)}});p.bind(\"DisableBrowse\",function(t,u){j().DisableBrowse(u)});p.bind(\"Destroy\",function(t){var u;d.removeAllEvents(b.body,t.id);delete h[t.id];delete a[t.id];u=b.getElementById(t.id+\"_silverlight_container\");if(u){k.removeChild(u)}});q({success:true})})}})})(window,document,plupload);(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins[\"Shockwave Flash\"];h=h.description}catch(k){try{h=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\").GetVariable(\"$version\")}catch(j){h=\"0.0\"}}h=h.match(/\\d+/g);return parseFloat(h[0]+\".\"+h[1])}d.flash={trigger:function(k,h,j){setTimeout(function(){var n=a[k],m,l;if(n){n.trigger(\"Flash:\"+h,j)}},0)}};d.runtimes.Flash=d.addRuntime(\"flash\",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(n,p){var l,m,h=0,j=b.body;if(c()<10){p({success:false});return}g[n.id]=false;a[n.id]=n;l=b.getElementById(n.settings.browse_button);m=b.createElement(\"div\");m.id=n.id+\"_flash_container\";d.extend(m.style,{position:\"absolute\",top:\"0px\",background:n.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100%\",height:\"100%\"});m.className=\"plupload flash\";if(n.settings.container){j=b.getElementById(n.settings.container);if(d.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}j.appendChild(m);(function(){var q,r;q='<object id=\"'+n.id+'_flash\" type=\"application/x-shockwave-flash\" data=\"'+n.settings.flash_swf_url+'\" ';if(d.ua.ie){q+='classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" '}q+='width=\"100%\" height=\"100%\" style=\"outline:0\"><param name=\"movie\" value=\"'+n.settings.flash_swf_url+'\" /><param name=\"flashvars\" value=\"id='+escape(n.id)+'\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"allowscriptaccess\" value=\"always\" /></object>';if(d.ua.ie){r=b.createElement(\"div\");m.appendChild(r);r.outerHTML=q;r=null}else{m.innerHTML=q}}());function o(){return b.getElementById(n.id+\"_flash\")}function k(){if(h++>5000){p({success:false});return}if(g[n.id]===false){setTimeout(k,1)}}k();l=m=null;n.bind(\"Destroy\",function(q){var r;d.removeAllEvents(b.body,q.id);delete g[q.id];delete a[q.id];r=b.getElementById(q.id+\"_flash_container\");if(r){j.removeChild(r)}});n.bind(\"Flash:Init\",function(){var s={},r;try{o().setFileFilters(n.settings.filters,n.settings.multi_selection)}catch(q){p({success:false});return}if(g[n.id]){return}g[n.id]=true;n.bind(\"UploadFile\",function(t,v){var w=t.settings,u=n.settings.resize||{};o().uploadFile(s[v.id],w.url,{name:v.target_name||v.name,mime:d.mimeTypes[v.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:w.chunk_size,width:u.width,height:u.height,quality:u.quality,multipart:w.multipart,multipart_params:w.multipart_params||{},file_data_name:w.file_data_name,format:/\\.(jpg|jpeg)$/i.test(v.name)?\"jpg\":\"png\",headers:w.headers,urlstream_upload:w.urlstream_upload})});n.bind(\"CancelUpload\",function(){o().cancelUpload()});n.bind(\"Flash:UploadProcess\",function(u,t){var v=u.getFile(s[t.id]);if(v.status!=d.FAILED){v.loaded=t.loaded;v.size=t.size;u.trigger(\"UploadProgress\",v)}});n.bind(\"Flash:UploadChunkComplete\",function(t,v){var w,u=t.getFile(s[v.id]);w={chunk:v.chunk,chunks:v.chunks,response:v.text};t.trigger(\"ChunkUploaded\",u,w);if(u.status!==d.FAILED&&t.state!==d.STOPPED){o().uploadNextChunk()}if(v.chunk==v.chunks-1){u.status=d.DONE;t.trigger(\"FileUploaded\",u,{response:v.text})}});n.bind(\"Flash:SelectFiles\",function(t,w){var v,u,x=[],y;for(u=0;u<w.length;u++){v=w[u];y=d.guid();s[y]=v.id;s[v.id]=y;x.push(new d.File(y,v.name,v.size))}if(x.length){n.trigger(\"FilesAdded\",x)}});n.bind(\"Flash:SecurityError\",function(t,u){n.trigger(\"Error\",{code:d.SECURITY_ERROR,message:d.translate(\"Security error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:GenericError\",function(t,u){n.trigger(\"Error\",{code:d.GENERIC_ERROR,message:d.translate(\"Generic error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:IOError\",function(t,u){n.trigger(\"Error\",{code:d.IO_ERROR,message:d.translate(\"IO error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:ImageError\",function(t,u){n.trigger(\"Error\",{code:parseInt(u.code,10),message:d.translate(\"Image error.\"),file:n.getFile(s[u.id])})});n.bind(\"Flash:StageEvent:rollOver\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.addClass(u,v)}});n.bind(\"Flash:StageEvent:rollOut\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.removeClass(u,v)}});n.bind(\"Flash:StageEvent:mouseDown\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.addClass(u,v);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(u,v)},t.id)}});n.bind(\"Flash:StageEvent:mouseUp\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.removeClass(u,v)}});n.bind(\"Flash:ExifData\",function(t,u){n.trigger(\"ExifData\",n.getFile(s[u.id]),u.data)});n.bind(\"Flash:GpsData\",function(t,u){n.trigger(\"GpsData\",n.getFile(s[u.id]),u.data)});n.bind(\"QueueChanged\",function(t){n.refresh()});n.bind(\"FilesRemoved\",function(t,v){var u;for(u=0;u<v.length;u++){o().removeFile(s[v[u].id])}});n.bind(\"StateChanged\",function(t){n.refresh()});n.bind(\"Refresh\",function(t){var u,v,w;o().setFileFilters(n.settings.filters,n.settings.multi_selection);u=b.getElementById(t.settings.browse_button);if(u){v=d.getPos(u,b.getElementById(t.settings.container));w=d.getSize(u);d.extend(b.getElementById(t.id+\"_flash_container\").style,{top:v.y+\"px\",left:v.x+\"px\",width:w.w+\"px\",height:w.h+\"px\"})}});n.bind(\"DisableBrowse\",function(t,u){o().disableBrowse(u)});p({success:true})})}})})(window,document,plupload);(function(a){a.runtimes.BrowserPlus=a.addRuntime(\"browserplus\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,j){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(o){var n,m,k=[],l,p;for(m=0;m<o.length;m++){l=o[m];p=a.guid();h[p]=l;k.push(new a.File(p,l.name,l.size))}if(m){g.trigger(\"FilesAdded\",k)}}function b(){var k=false;g.bind(\"PostInit\",function(){var o,m=d.drop_element,q=g.id+\"_droptarget\",l=document.getElementById(m),n;function r(t,s){e.DragAndDrop.AddDropTarget({id:t},function(u){e.DragAndDrop.AttachCallbacks({id:t,hover:function(v){if(!v&&s){s()}},drop:function(v){if(s){s()}f(v)}},function(){})})}function p(){document.getElementById(q).style.top=\"-1000px\"}if(l){if(document.attachEvent&&(/MSIE/gi).test(navigator.userAgent)){o=document.createElement(\"div\");o.setAttribute(\"id\",q);a.extend(o.style,{position:\"absolute\",top:\"-1000px\",background:\"red\",filter:\"alpha(opacity=0)\",opacity:0});document.body.appendChild(o);a.addEvent(l,\"dragenter\",function(t){var s,u;s=document.getElementById(m);u=a.getPos(s);a.extend(document.getElementById(q).style,{top:u.y+\"px\",left:u.x+\"px\",width:s.offsetWidth+\"px\",height:s.offsetHeight+\"px\"})});r(q,p)}else{r(m)}}a.addEvent(document.getElementById(d.browse_button),\"click\",function(y){var s=[],u,t,x=d.filters,w,v;y.preventDefault();if(k){return}no_type_restriction:for(u=0;u<x.length;u++){w=x[u].extensions.split(\",\");for(t=0;t<w.length;t++){if(w[t]===\"*\"){s=[];break no_type_restriction}v=a.mimeTypes[w[t]];if(v&&a.inArray(v,s)===-1){s.push(a.mimeTypes[w[t]])}}}e.FileBrowse.OpenBrowseDialog({mimeTypes:s},function(z){if(z.success){f(z.value)}})});l=o=null});g.bind(\"CancelUpload\",function(){e.Uploader.cancel({},function(){})});g.bind(\"DisableBrowse\",function(l,m){k=m});g.bind(\"UploadFile\",function(o,l){var n=h[l.id],t={},m=o.settings.chunk_size,p,q=[];function s(u,w){var v;if(l.status==a.FAILED){return}t.name=l.target_name||l.name;if(m){t.chunk=\"\"+u;t.chunks=\"\"+w}v=q.shift();e.Uploader.upload({url:o.settings.url,files:{file:v},cookies:document.cookies,postvars:a.extend(t,o.settings.multipart_params),progressCallback:function(z){var y,x=0;p[u]=parseInt(z.filePercent*v.size/100,10);for(y=0;y<p.length;y++){x+=p[y]}l.loaded=x;o.trigger(\"UploadProgress\",l)}},function(y){var x,z;if(y.success){x=y.value.statusCode;if(m){o.trigger(\"ChunkUploaded\",l,{chunk:u,chunks:w,response:y.value.body,status:x})}if(q.length>0){s(++u,w)}else{l.status=a.DONE;o.trigger(\"FileUploaded\",l,{response:y.value.body,status:x});if(x>=400){o.trigger(\"Error\",{code:a.HTTP_ERROR,message:a.translate(\"HTTP Error.\"),file:l,status:x})}}}else{o.trigger(\"Error\",{code:a.GENERIC_ERROR,message:a.translate(\"Generic Error.\"),file:l,details:y.error})}})}function r(u){l.size=u.size;if(m){e.FileAccess.chunk({file:u,chunkSize:m},function(x){if(x.success){var y=x.value,v=y.length;p=Array(v);for(var w=0;w<v;w++){p[w]=0;q.push(y[w])}s(0,v)}})}else{p=Array(1);q.push(u);s(0,1)}}if(c&&/\\.(png|jpg|jpeg)$/i.test(l.name)){BrowserPlus.ImageAlter.transform({file:n,quality:c.quality||90,actions:[{scale:{maxwidth:c.width,maxheight:c.height}}]},function(u){if(u.success){r(u.value.file)}})}else{r(n)}});j({success:true})}if(e){e.init(function(l){var k=[{service:\"Uploader\",version:\"3\"},{service:\"DragAndDrop\",version:\"1\"},{service:\"FileBrowse\",version:\"1\"},{service:\"FileAccess\",version:\"2\"}];if(c){k.push({service:\"ImageAlter\",version:\"4\"})}if(l.success){e.require({services:k},function(m){if(m.success){b()}else{j()}})}else{j()}})}else{j()}}})})(plupload);(function(h,k,j,e){var c={},g;function m(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsDataURL(o);n.onload=function(){p(n.result)}}else{return p(o.getAsDataURL())}}function l(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsBinaryString(o);n.onload=function(){p(n.result)}}else{return p(o.getAsBinary())}}function d(r,p,n,v){var q,o,u,s,t=this;m(c[r.id],function(w){q=k.createElement(\"canvas\");q.style.display=\"none\";k.body.appendChild(q);o=q.getContext(\"2d\");u=new Image();u.onerror=u.onabort=function(){v({success:false})};u.onload=function(){var B,x,z,y,A;if(!p.width){p.width=u.width}if(!p.height){p.height=u.height}s=Math.min(p.width/u.width,p.height/u.height);if(s<1||(s===1&&n===\"image/jpeg\")){B=Math.round(u.width*s);x=Math.round(u.height*s);q.width=B;q.height=x;o.drawImage(u,0,0,B,x);if(n===\"image/jpeg\"){y=new f(atob(w.substring(w.indexOf(\"base64,\")+7)));if(y.headers&&y.headers.length){A=new a();if(A.init(y.get(\"exif\")[0])){A.setExif(\"PixelXDimension\",B);A.setExif(\"PixelYDimension\",x);y.set(\"exif\",A.getBinary());if(t.hasEventListener(\"ExifData\")){t.trigger(\"ExifData\",r,A.EXIF())}if(t.hasEventListener(\"GpsData\")){t.trigger(\"GpsData\",r,A.GPS())}}}if(p.quality){try{w=q.toDataURL(n,p.quality/100)}catch(C){w=q.toDataURL(n)}}}else{w=q.toDataURL(n)}w=w.substring(w.indexOf(\"base64,\")+7);w=atob(w);if(y&&y.headers&&y.headers.length){w=y.restore(w);y.purge()}q.parentNode.removeChild(q);v({success:true,data:w})}else{v({success:false})}};u.src=w})}j.runtimes.Html5=j.addRuntime(\"html5\",{getFeatures:function(){var s,o,r,q,p,n;o=r=p=n=false;if(h.XMLHttpRequest){s=new XMLHttpRequest();r=!!s.upload;o=!!(s.sendAsBinary||s.upload)}if(o){q=!!(s.sendAsBinary||(h.Uint8Array&&h.ArrayBuffer));p=!!(File&&(File.prototype.getAsDataURL||h.FileReader)&&q);n=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}g=j.ua.safari&&j.ua.windows;return{html5:o,dragdrop:(function(){var t=k.createElement(\"div\");return(\"draggable\" in t)||(\"ondragstart\" in t&&\"ondrop\" in t)}()),jpgresize:p,pngresize:p,multipart:p||!!h.FileReader||!!h.FormData,canSendBinary:q,cantSendBlobInFormData:!!(j.ua.gecko&&h.FormData&&h.FileReader&&!FileReader.prototype.readAsArrayBuffer),progress:r,chunks:n,multi_selection:!(j.ua.safari&&j.ua.windows),triggerDialog:(j.ua.gecko&&h.FormData||j.ua.webkit)}},init:function(p,r){var n,q;function o(w){var u,t,v=[],x,s={};for(t=0;t<w.length;t++){u=w[t];if(s[u.name]){continue}s[u.name]=true;x=j.guid();c[x]=u;v.push(new j.File(x,u.fileName||u.name,u.fileSize||u.size))}if(v.length){p.trigger(\"FilesAdded\",v)}}n=this.getFeatures();if(!n.html5){r({success:false});return}p.bind(\"Init\",function(w){var G,F,C=[],v,D,t=w.settings.filters,u,B,s=k.body,E;G=k.createElement(\"div\");G.id=w.id+\"_html5_container\";j.extend(G.style,{position:\"absolute\",background:p.settings.shim_bgcolor||\"transparent\",width:\"100px\",height:\"100px\",overflow:\"hidden\",zIndex:99999,opacity:p.settings.shim_bgcolor?\"\":0});G.className=\"plupload html5\";if(p.settings.container){s=k.getElementById(p.settings.container);if(j.getStyle(s,\"position\")===\"static\"){s.style.position=\"relative\"}}s.appendChild(G);no_type_restriction:for(v=0;v<t.length;v++){u=t[v].extensions.split(/,/);for(D=0;D<u.length;D++){if(u[D]===\"*\"){C=[];break no_type_restriction}B=j.mimeTypes[u[D]];if(B&&j.inArray(B,C)===-1){C.push(B)}}}G.innerHTML='<input id=\"'+p.id+'_html5\"  style=\"font-size:999px\" type=\"file\" accept=\"'+C.join(\",\")+'\" '+(p.settings.multi_selection&&p.features.multi_selection?'multiple=\"multiple\"':\"\")+\" />\";G.scrollTop=100;E=k.getElementById(p.id+\"_html5\");if(w.features.triggerDialog){j.extend(E.style,{position:\"absolute\",width:\"100%\",height:\"100%\"})}else{j.extend(E.style,{cssFloat:\"right\",styleFloat:\"right\"})}E.onchange=function(){o(this.files);this.value=\"\"};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,\"mouseover\",function(){j.addClass(F,z)},w.id);j.addEvent(x,\"mouseout\",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,\"mousedown\",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,\"mouseup\",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,\"click\",function(H){var y=k.getElementById(w.id+\"_html5\");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind(\"PostInit\",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,\"dragenter\",function(w){var v,t,u;v=k.getElementById(p.id+\"_drop\");if(!v){v=k.createElement(\"input\");v.setAttribute(\"type\",\"file\");v.setAttribute(\"id\",p.id+\"_drop\");v.setAttribute(\"multiple\",\"multiple\");j.addEvent(v,\"change\",function(){o(this.files);j.removeEvent(v,\"change\",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,\"position\")===\"static\"){j.extend(s.style,{position:\"relative\"})}j.extend(v.style,{position:\"absolute\",display:\"block\",top:0,left:0,width:u.w+\"px\",height:u.h+\"px\",opacity:0})},p.id);return}j.addEvent(s,\"dragover\",function(t){t.preventDefault()},p.id);j.addEvent(s,\"drop\",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind(\"Refresh\",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+\"_html5_container\");j.extend(x.style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"});if(p.features.triggerDialog){if(j.getStyle(t,\"position\")===\"static\"){j.extend(t.style,{position:\"relative\"})}w=parseInt(j.getStyle(t,\"z-index\"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind(\"DisableBrowse\",function(s,u){var t=k.getElementById(s.id+\"_html5\");if(t){t.disabled=u}});p.bind(\"CancelUpload\",function(){if(q&&q.abort){q.abort()}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=(\"FileReader\" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N=\"----pluploadboundary\"+j.guid(),O,P=\"--\",U=\"\\r\\n\",R=\"\";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger(\"UploadProgress\",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger(\"Error\",{code:j.HTTP_ERROR,message:j.translate(\"HTTP Error.\"),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger(\"ChunkUploaded\",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger(\"UploadProgress\",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger(\"FileUploaded\",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open(\"post\",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!==\"string\"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)===\"string\"){q.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name=\"'+W+'\"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";R+=P+N+U+'Content-Disposition: form-data; name=\"'+s.settings.file_data_name+'\"; filename=\"'+unescape(encodeURIComponent(u.name))+'\"'+U+\"Content-Type: \"+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Q<V.length;Q++){S[Q]=(V.charCodeAt(Q)&255)}q.send(S.buffer)}}return}}E=j.buildUrl(s.settings.url,j.extend(L,s.settings.multipart_params));q.open(\"post\",E,true);q.setRequestHeader(\"Content-Type\",\"application/octet-stream\");j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});q.send(V)}if(u.status==j.DONE||u.status==j.FAILED||s.state==j.STOPPED){return}L={name:u.target_name||u.name};if(v.chunk_size&&u.size>v.chunk_size&&(n.chunks||typeof(A)==\"string\")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)==\"string\"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!==\"string\"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\\.png$/i.test(u.name)?\"image/png\":\"image/jpeg\",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind(\"Destroy\",function(s){var u,v,t=k.body,w={inputContainer:s.id+\"_html5_container\",inputFile:s.id+\"_html5\",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u<v;u++){w|=(o.charCodeAt(t+u)<<Math.abs(s+u*8))}return w}function n(u,s,t){var t=arguments.length===3?t:o.length-s-1;o=o.substr(0,s)+u+o.substr(t+s)}function p(t,u,w){var x=\"\",s=q?0:-8*(w-1),v;for(v=0;v<w;v++){x+=String.fromCharCode((u>>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u=\"\";for(t+=s;s<t;s++){u+=String.fromCharCode(r(s,1))}return u}}}function f(s){var u={65505:{app:\"EXIF\",name:\"APP1\",signature:\"Exif\\0\"},65506:{app:\"ICC\",name:\"APP2\",signature:\"ICC_PROFILE\\0\"},65517:{app:\"IPTC\",name:\"APP13\",signature:\"Photoshop 3.0\\0\"}},t=[],r,n,p=e,q=0,o;r=new b();r.init(s);if(r.SHORT(0)!==65496){return}n=2;o=Math.min(1048576,s.length);while(n<=o){p=r.SHORT(n);if(p>=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,\"\")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x<v;x++){r.SEGMENT(n,0,t[x].segment);n+=t[x].length}return r.SEGMENT()},get:function(x){var y=[];for(var w=0,v=t.length;w<v;w++){if(t[w].app===x.toUpperCase()){y.push(t[w].segment)}}return y},set:function(y,x){var z=[];if(typeof(x)===\"string\"){z.push(x)}else{z=x}for(var w=ii=0,v=t.length;w<v;w++){if(t[w].app===y.toUpperCase()){t[w].segment=z[ii];t[w].length=z[ii].length;ii++}if(ii>=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:\"Orientation\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\"},exif:{36864:\"ExifVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",36867:\"DateTimeOriginal\",33434:\"ExposureTime\",33437:\"FNumber\",34855:\"ISOSpeedRatings\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41990:\"SceneCaptureType\",41988:\"DigitalZoomRatio\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\"},gps:{0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\"}};t={ColorSpace:{1:\"sRGB\",0:\"Uncalibrated\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{1:\"Daylight\",2:\"Fliorescent\",3:\"Tungsten\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 -5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire.\",1:\"Flash fired.\",5:\"Strobe return light not detected.\",7:\"Strobe return light detected.\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},ExposureMode:{0:\"Auto exposure\",1:\"Manual exposure\",2:\"Auto bracket\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},GPSLatitudeRef:{N:\"North latitude\",S:\"South latitude\"},GPSLongitudeRef:{E:\"East longitude\",W:\"West longitude\"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z<w;z++){x=v=u+12*z+2;G=C[q.SHORT(x)];if(G===e){continue}B=q.SHORT(x+=2);A=q.LONG(x+=2);x+=4;E=[];switch(B){case 1:case 7:if(A>4){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.BYTE(x+F)}break;case 2:if(A>4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.SHORT(x+F*2)}break;case 4:if(A>1){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)}break;case 5:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)/q.LONG(x+F*4+4)}break;case 9:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)}break;case 10:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)/q.SLONG(x+F*4+4)}break;default:continue}D=(A==1?E[0]:E);if(t.hasOwnProperty(G)&&typeof D!=\"object\"){y[G]=t[G][D]}else{y[G]=D}}return y}function s(){var v=e,u=o.tiffHeader;q.II(q.SHORT(u)==18761);if(q.SHORT(u+=2)!==42){return false}o.IFD0=o.tiffHeader+q.LONG(u+=2);v=p(o.IFD0,n.tiff);o.exifIFD=(\"ExifIFDPointer\" in v?o.tiffHeader+v.ExifIFDPointer:e);o.gpsIFD=(\"GPSInfoIFDPointer\" in v?o.tiffHeader+v.GPSInfoIFDPointer:e);return true}function r(w,u,z){var B,y,x,A=0;if(typeof(u)===\"string\"){var v=n[w.toLowerCase()];for(hex in v){if(v[hex]===u){u=hex;break}}}B=o[w.toLowerCase()+\"IFD\"];y=q.SHORT(B);for(i=0;i<y;i++){x=B+12*i+2;if(q.SHORT(x)==u){A=x+8;break}}if(!A){return false}q.LONG(A,z);return true}return{init:function(u){o={tiffHeader:10};if(u===e||!u.length){return false}q.init(u);if(q.SHORT(0)===65505&&q.STRING(4,5).toUpperCase()===\"EXIF\\0\"){return s()}return false},EXIF:function(){var v;v=p(o.exifIFD,n.exif);if(v.ExifVersion&&j.typeOf(v.ExifVersion)===\"array\"){for(var w=0,u=\"\";w<v.ExifVersion.length;w++){u+=String.fromCharCode(v.ExifVersion[w])}v.ExifVersion=u}return v},GPS:function(){var u;u=p(o.gpsIFD,n.gps);if(u.GPSVersionID){u.GPSVersionID=u.GPSVersionID.join(\".\")}return u},setExif:function(u,v){if(u!==\"PixelXDimension\"&&u!==\"PixelYDimension\"){return false}return r(\"exif\",u,v)},getBinary:function(){return q.SEGMENT()}}}})(window,document,plupload);(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime(\"html4\",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind(\"Init\",function(p){var j=a.body,n,h=\"javascript\",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]===\"*\"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(\",\");function v(){var C,A,y,B;q=b.guid();z.push(q);C=a.createElement(\"form\");C.setAttribute(\"id\",\"form_\"+q);C.setAttribute(\"method\",\"post\");C.setAttribute(\"enctype\",\"multipart/form-data\");C.setAttribute(\"encoding\",\"multipart/form-data\");C.setAttribute(\"target\",p.id+\"_iframe\");C.style.position=\"absolute\";A=a.createElement(\"input\");A.setAttribute(\"id\",\"input_\"+q);A.setAttribute(\"type\",\"file\");A.setAttribute(\"accept\",t);A.setAttribute(\"size\",1);B=e(p.settings.browse_button);if(p.features.triggerDialog&&B){b.addEvent(e(p.settings.browse_button),\"click\",function(D){if(!A.disabled){A.click()}D.preventDefault()},p.id)}b.extend(A.style,{width:\"100%\",height:\"100%\",opacity:0,fontSize:\"99px\",cursor:\"pointer\"});b.extend(C.style,{overflow:\"hidden\"});y=p.settings.shim_bgcolor;if(y){C.style.background=y}if(r){b.extend(A.style,{filter:\"alpha(opacity=0)\"})}b.addEvent(A,\"change\",function(G){var E=G.target,D,F=[],H;if(E.value){e(\"form_\"+q).style.top=-1048575+\"px\";D=E.value.replace(/\\\\/g,\"/\");D=D.substring(D.length,D.lastIndexOf(\"/\")+1);F.push(new b.File(q,D));if(!p.features.triggerDialog){b.removeAllEvents(C,p.id)}else{b.removeEvent(B,\"click\",p.id)}b.removeEvent(A,\"change\",p.id);v();if(F.length){f.trigger(\"FilesAdded\",F)}}},p.id);C.appendChild(A);j.appendChild(C);p.refresh()}function u(){var y=a.createElement(\"div\");y.innerHTML='<iframe id=\"'+p.id+'_iframe\" name=\"'+p.id+'_iframe\" src=\"'+h+':&quot;&quot;\" style=\"display:none\"></iframe>';n=y.firstChild;j.appendChild(n);b.addEvent(n,\"load\",function(D){var E=D.target,C,A;if(!k){return}try{C=E.contentWindow.document||E.contentDocument||d.frames[E.id].document}catch(B){p.trigger(\"Error\",{code:b.SECURITY_ERROR,message:b.translate(\"Security error.\"),file:k});return}A=C.body.innerHTML;if(A){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger(\"UploadProgress\",k);p.trigger(\"FileUploaded\",k,{response:A})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}p.bind(\"UploadFile\",function(y,B){var C,A;if(B.status==b.DONE||B.status==b.FAILED||y.state==b.STOPPED){return}C=e(\"form_\"+B.id);A=e(\"input_\"+B.id);A.setAttribute(\"name\",y.settings.file_data_name);C.setAttribute(\"action\",y.settings.url);b.each(b.extend({name:B.target_name||B.name},y.settings.multipart_params),function(F,D){var E=a.createElement(\"input\");b.extend(E,{type:\"hidden\",name:D,value:F});C.insertBefore(E,C.firstChild)});k=B;e(\"form_\"+q).style.top=-1048575+\"px\";C.submit()});p.bind(\"FileUploaded\",function(y){y.refresh()});p.bind(\"StateChanged\",function(y){if(y.state==b.STARTED){u()}else{if(y.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,\"load\",y.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(y.files,function(B,A){if(B.status===b.DONE||B.status===b.FAILED){var C=e(\"form_\"+B.id);if(C){C.parentNode.removeChild(C)}}})});p.bind(\"Refresh\",function(A){var G,B,C,D,y,H,I,F,E;G=e(A.settings.browse_button);if(G){y=b.getPos(G,e(A.settings.container));H=b.getSize(G);I=e(\"form_\"+q);F=e(\"input_\"+q);b.extend(I.style,{top:y.y+\"px\",left:y.x+\"px\",width:H.w+\"px\",height:H.h+\"px\"});if(A.features.triggerDialog){if(b.getStyle(G,\"position\")===\"static\"){b.extend(G.style,{position:\"relative\"})}E=parseInt(G.style.zIndex,10);if(isNaN(E)){E=0}b.extend(G.style,{zIndex:E});b.extend(I.style,{zIndex:E-1})}C=A.settings.browse_button_hover;D=A.settings.browse_button_active;B=A.features.triggerDialog?G:I;if(C){b.addEvent(B,\"mouseover\",function(){b.addClass(G,C)},A.id);b.addEvent(B,\"mouseout\",function(){b.removeClass(G,C)},A.id)}if(D){b.addEvent(B,\"mousedown\",function(){b.addClass(G,D)},A.id);b.addEvent(a.body,\"mouseup\",function(){b.removeClass(G,D)},A.id)}}});f.bind(\"FilesRemoved\",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e(\"form_\"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind(\"DisableBrowse\",function(y,B){var A=a.getElementById(\"input_\"+q);if(A){A.disabled=B}});f.bind(\"Destroy\",function(y){var A,B,C,D={inputContainer:\"form_\"+q,inputFile:\"input_\"+q,browseButton:y.settings.browse_button};for(A in D){B=e(D[A]);if(B){b.removeAllEvents(B,y.id)}}b.removeAllEvents(a.body,y.id);b.each(z,function(F,E){C=e(\"form_\"+F);if(C){j.removeChild(C)}})});v()});g({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.gears.js",
    "content": "(function(){if(window.google&&google.gears){return}var a=null;if(typeof GearsFactory!=\"undefined\"){a=new GearsFactory()}else{try{a=new ActiveXObject(\"Gears.Factory\");if(a.getBuildInfo().indexOf(\"ie_mobile\")!=-1){a.privateSetGlobalObject(this)}}catch(b){if((typeof navigator.mimeTypes!=\"undefined\")&&navigator.mimeTypes[\"application/x-googlegears\"]){a=document.createElement(\"object\");a.style.display=\"none\";a.width=0;a.height=0;a.type=\"application/x-googlegears\";document.documentElement.appendChild(a)}}}if(!a){return}if(!window.google){window.google={}}if(!google.gears){google.gears={factory:a}}})();(function(e,b,c,d){var f={};function a(h,j,l){var g,i,k,n;i=google.gears.factory.create(\"beta.canvas\");try{i.decode(h);if(!j.width){j.width=i.width}if(!j.height){j.height=i.height}n=Math.min(width/i.width,height/i.height);if(n<1||(n===1&&l===\"image/jpeg\")){i.resize(Math.round(i.width*n),Math.round(i.height*n));if(j.quality){return i.encode(l,{quality:j.quality/100})}return i.encode(l)}}catch(m){}return h}c.runtimes.Gears=c.addRuntime(\"gears\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(k,m){var l,h,g=false;if(!e.google||!google.gears){return m({success:false})}try{l=google.gears.factory.create(\"beta.desktop\")}catch(j){return m({success:false})}function i(p){var o,n,q=[],r;for(n=0;n<p.length;n++){o=p[n];r=c.guid();f[r]=o.blob;q.push(new c.File(r,o.name,o.blob.length))}k.trigger(\"FilesAdded\",q)}k.bind(\"PostInit\",function(){var o=k.settings,n=b.getElementById(o.drop_element);if(n){c.addEvent(n,\"dragover\",function(p){l.setDropEffect(p,\"copy\");p.preventDefault()},k.id);c.addEvent(n,\"drop\",function(q){var p=l.getDragData(q,\"application/x-gears-files\");if(p){i(p.files)}q.preventDefault()},k.id);n=0}c.addEvent(b.getElementById(o.browse_button),\"click\",function(t){var s=[],q,p,r;t.preventDefault();if(g){return}no_type_restriction:for(q=0;q<o.filters.length;q++){r=o.filters[q].extensions.split(\",\");for(p=0;p<r.length;p++){if(r[p]===\"*\"){s=[];break no_type_restriction}s.push(\".\"+r[p])}}l.openFiles(i,{singleFile:!o.multi_selection,filter:s})},k.id)});k.bind(\"CancelUpload\",function(){if(h.abort){h.abort()}});k.bind(\"UploadFile\",function(t,q){var v=0,u,r,s=0,p=t.settings.resize,n;if(p&&/\\.(png|jpg|jpeg)$/i.test(q.name)){f[q.id]=a(f[q.id],p,/\\.png$/i.test(q.name)?\"image/png\":\"image/jpeg\")}q.size=f[q.id].length;r=t.settings.chunk_size;n=r>0;u=Math.ceil(q.size/r);if(!n){r=q.size;u=1}function o(){var B,x=t.settings.multipart,w=0,A={name:q.target_name||q.name},y=t.settings.url;function z(D){var C,I=\"----pluploadboundary\"+c.guid(),F=\"--\",H=\"\\r\\n\",E,G;if(x){h.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+I);C=google.gears.factory.create(\"beta.blobbuilder\");c.each(c.extend(A,t.settings.multipart_params),function(K,J){C.append(F+I+H+'Content-Disposition: form-data; name=\"'+J+'\"'+H+H);C.append(K+H)});G=c.mimeTypes[q.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";C.append(F+I+H+'Content-Disposition: form-data; name=\"'+t.settings.file_data_name+'\"; filename=\"'+q.name+'\"'+H+\"Content-Type: \"+G+H+H);C.append(D);C.append(H+F+I+F+H);E=C.getAsBlob();w=E.length-D.length;D=E}h.send(D)}if(q.status==c.DONE||q.status==c.FAILED||t.state==c.STOPPED){return}if(n){A.chunk=v;A.chunks=u}B=Math.min(r,q.size-(v*r));if(!x){y=c.buildUrl(t.settings.url,A)}h=google.gears.factory.create(\"beta.httprequest\");h.open(\"POST\",y);if(!x){h.setRequestHeader(\"Content-Disposition\",'attachment; filename=\"'+q.name+'\"');h.setRequestHeader(\"Content-Type\",\"application/octet-stream\")}c.each(t.settings.headers,function(D,C){h.setRequestHeader(C,D)});h.upload.onprogress=function(C){q.loaded=s+C.loaded-w;t.trigger(\"UploadProgress\",q)};h.onreadystatechange=function(){var C;if(h.readyState==4&&t.state!==c.STOPPED){if(h.status==200){C={chunk:v,chunks:u,response:h.responseText,status:h.status};t.trigger(\"ChunkUploaded\",q,C);if(C.cancelled){q.status=c.FAILED;return}s+=B;if(++v>=u){q.status=c.DONE;t.trigger(\"FileUploaded\",q,{response:h.responseText,status:h.status})}else{o()}}else{t.trigger(\"Error\",{code:c.HTTP_ERROR,message:c.translate(\"HTTP Error.\"),file:q,chunk:v,chunks:u,status:h.status})}}};if(v<u){z(f[q.id].slice(v*r,B))}}o()});k.bind(\"DisableBrowse\",function(n,o){g=o});k.bind(\"Destroy\",function(n){var o,p,q={browseButton:n.settings.browse_button,dropElm:n.settings.drop_element};for(o in q){p=b.getElementById(q[o]);if(p){c.removeAllEvents(p,n.id)}}});m({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html4.js",
    "content": "(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime(\"html4\",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind(\"Init\",function(p){var j=a.body,n,h=\"javascript\",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]===\"*\"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(\",\");function v(){var B,y,i,A;q=b.guid();z.push(q);B=a.createElement(\"form\");B.setAttribute(\"id\",\"form_\"+q);B.setAttribute(\"method\",\"post\");B.setAttribute(\"enctype\",\"multipart/form-data\");B.setAttribute(\"encoding\",\"multipart/form-data\");B.setAttribute(\"target\",p.id+\"_iframe\");B.style.position=\"absolute\";y=a.createElement(\"input\");y.setAttribute(\"id\",\"input_\"+q);y.setAttribute(\"type\",\"file\");y.setAttribute(\"accept\",t);y.setAttribute(\"size\",1);A=e(p.settings.browse_button);if(p.features.triggerDialog&&A){b.addEvent(e(p.settings.browse_button),\"click\",function(C){if(!y.disabled){y.click()}C.preventDefault()},p.id)}b.extend(y.style,{width:\"100%\",height:\"100%\",opacity:0,fontSize:\"99px\",cursor:\"pointer\"});b.extend(B.style,{overflow:\"hidden\"});i=p.settings.shim_bgcolor;if(i){B.style.background=i}if(r){b.extend(y.style,{filter:\"alpha(opacity=0)\"})}b.addEvent(y,\"change\",function(F){var D=F.target,C,E=[],G;if(D.value){e(\"form_\"+q).style.top=-1048575+\"px\";C=D.value.replace(/\\\\/g,\"/\");C=C.substring(C.length,C.lastIndexOf(\"/\")+1);E.push(new b.File(q,C));if(!p.features.triggerDialog){b.removeAllEvents(B,p.id)}else{b.removeEvent(A,\"click\",p.id)}b.removeEvent(y,\"change\",p.id);v();if(E.length){f.trigger(\"FilesAdded\",E)}}},p.id);B.appendChild(y);j.appendChild(B);p.refresh()}function u(){var i=a.createElement(\"div\");i.innerHTML='<iframe id=\"'+p.id+'_iframe\" name=\"'+p.id+'_iframe\" src=\"'+h+':&quot;&quot;\" style=\"display:none\"></iframe>';n=i.firstChild;j.appendChild(n);b.addEvent(n,\"load\",function(C){var D=C.target,B,y;if(!k){return}try{B=D.contentWindow.document||D.contentDocument||d.frames[D.id].document}catch(A){p.trigger(\"Error\",{code:b.SECURITY_ERROR,message:b.translate(\"Security error.\"),file:k});return}y=B.body.innerHTML;if(y){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger(\"UploadProgress\",k);p.trigger(\"FileUploaded\",k,{response:y})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}p.bind(\"UploadFile\",function(i,A){var B,y;if(A.status==b.DONE||A.status==b.FAILED||i.state==b.STOPPED){return}B=e(\"form_\"+A.id);y=e(\"input_\"+A.id);y.setAttribute(\"name\",i.settings.file_data_name);B.setAttribute(\"action\",i.settings.url);b.each(b.extend({name:A.target_name||A.name},i.settings.multipart_params),function(E,C){var D=a.createElement(\"input\");b.extend(D,{type:\"hidden\",name:C,value:E});B.insertBefore(D,B.firstChild)});k=A;e(\"form_\"+q).style.top=-1048575+\"px\";B.submit()});p.bind(\"FileUploaded\",function(i){i.refresh()});p.bind(\"StateChanged\",function(i){if(i.state==b.STARTED){u()}else{if(i.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,\"load\",i.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(i.files,function(A,y){if(A.status===b.DONE||A.status===b.FAILED){var B=e(\"form_\"+A.id);if(B){B.parentNode.removeChild(B)}}})});p.bind(\"Refresh\",function(y){var F,A,B,C,i,G,H,E,D;F=e(y.settings.browse_button);if(F){i=b.getPos(F,e(y.settings.container));G=b.getSize(F);H=e(\"form_\"+q);E=e(\"input_\"+q);b.extend(H.style,{top:i.y+\"px\",left:i.x+\"px\",width:G.w+\"px\",height:G.h+\"px\"});if(y.features.triggerDialog){if(b.getStyle(F,\"position\")===\"static\"){b.extend(F.style,{position:\"relative\"})}D=parseInt(F.style.zIndex,10);if(isNaN(D)){D=0}b.extend(F.style,{zIndex:D});b.extend(H.style,{zIndex:D-1})}B=y.settings.browse_button_hover;C=y.settings.browse_button_active;A=y.features.triggerDialog?F:H;if(B){b.addEvent(A,\"mouseover\",function(){b.addClass(F,B)},y.id);b.addEvent(A,\"mouseout\",function(){b.removeClass(F,B)},y.id)}if(C){b.addEvent(A,\"mousedown\",function(){b.addClass(F,C)},y.id);b.addEvent(a.body,\"mouseup\",function(){b.removeClass(F,C)},y.id)}}});f.bind(\"FilesRemoved\",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e(\"form_\"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind(\"DisableBrowse\",function(i,A){var y=a.getElementById(\"input_\"+q);if(y){y.disabled=A}});f.bind(\"Destroy\",function(i){var y,A,B,C={inputContainer:\"form_\"+q,inputFile:\"input_\"+q,browseButton:i.settings.browse_button};for(y in C){A=e(C[y]);if(A){b.removeAllEvents(A,i.id)}}b.removeAllEvents(a.body,i.id);b.each(z,function(E,D){B=e(\"form_\"+E);if(B){j.removeChild(B)}})});v()});g({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html5.js",
    "content": "(function(h,k,j,e){var c={},g;function m(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsDataURL(o);n.onload=function(){p(n.result)}}else{return p(o.getAsDataURL())}}function l(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsBinaryString(o);n.onload=function(){p(n.result)}}else{return p(o.getAsBinary())}}function d(r,p,n,v){var q,o,u,s,t=this;m(c[r.id],function(w){q=k.createElement(\"canvas\");q.style.display=\"none\";k.body.appendChild(q);o=q.getContext(\"2d\");u=new Image();u.onerror=u.onabort=function(){v({success:false})};u.onload=function(){var B,x,z,y,A;if(!p.width){p.width=u.width}if(!p.height){p.height=u.height}s=Math.min(p.width/u.width,p.height/u.height);if(s<1||(s===1&&n===\"image/jpeg\")){B=Math.round(u.width*s);x=Math.round(u.height*s);q.width=B;q.height=x;o.drawImage(u,0,0,B,x);if(n===\"image/jpeg\"){y=new f(atob(w.substring(w.indexOf(\"base64,\")+7)));if(y.headers&&y.headers.length){A=new a();if(A.init(y.get(\"exif\")[0])){A.setExif(\"PixelXDimension\",B);A.setExif(\"PixelYDimension\",x);y.set(\"exif\",A.getBinary());if(t.hasEventListener(\"ExifData\")){t.trigger(\"ExifData\",r,A.EXIF())}if(t.hasEventListener(\"GpsData\")){t.trigger(\"GpsData\",r,A.GPS())}}}if(p.quality){try{w=q.toDataURL(n,p.quality/100)}catch(C){w=q.toDataURL(n)}}}else{w=q.toDataURL(n)}w=w.substring(w.indexOf(\"base64,\")+7);w=atob(w);if(y&&y.headers&&y.headers.length){w=y.restore(w);y.purge()}q.parentNode.removeChild(q);v({success:true,data:w})}else{v({success:false})}};u.src=w})}j.runtimes.Html5=j.addRuntime(\"html5\",{getFeatures:function(){var s,o,r,q,p,n;o=r=p=n=false;if(h.XMLHttpRequest){s=new XMLHttpRequest();r=!!s.upload;o=!!(s.sendAsBinary||s.upload)}if(o){q=!!(s.sendAsBinary||(h.Uint8Array&&h.ArrayBuffer));p=!!(File&&(File.prototype.getAsDataURL||h.FileReader)&&q);n=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}g=j.ua.safari&&j.ua.windows;return{html5:o,dragdrop:(function(){var t=k.createElement(\"div\");return(\"draggable\" in t)||(\"ondragstart\" in t&&\"ondrop\" in t)}()),jpgresize:p,pngresize:p,multipart:p||!!h.FileReader||!!h.FormData,canSendBinary:q,cantSendBlobInFormData:!!(j.ua.gecko&&h.FormData&&h.FileReader&&!FileReader.prototype.readAsArrayBuffer),progress:r,chunks:n,multi_selection:!(j.ua.safari&&j.ua.windows),triggerDialog:(j.ua.gecko&&h.FormData||j.ua.webkit)}},init:function(p,r){var n,q;function o(w){var u,t,v=[],x,s={};for(t=0;t<w.length;t++){u=w[t];if(s[u.name]){continue}s[u.name]=true;x=j.guid();c[x]=u;v.push(new j.File(x,u.fileName||u.name,u.fileSize||u.size))}if(v.length){p.trigger(\"FilesAdded\",v)}}n=this.getFeatures();if(!n.html5){r({success:false});return}p.bind(\"Init\",function(w){var G,F,C=[],v,D,t=w.settings.filters,u,B,s=k.body,E;G=k.createElement(\"div\");G.id=w.id+\"_html5_container\";j.extend(G.style,{position:\"absolute\",background:p.settings.shim_bgcolor||\"transparent\",width:\"100px\",height:\"100px\",overflow:\"hidden\",zIndex:99999,opacity:p.settings.shim_bgcolor?\"\":0});G.className=\"plupload html5\";if(p.settings.container){s=k.getElementById(p.settings.container);if(j.getStyle(s,\"position\")===\"static\"){s.style.position=\"relative\"}}s.appendChild(G);no_type_restriction:for(v=0;v<t.length;v++){u=t[v].extensions.split(/,/);for(D=0;D<u.length;D++){if(u[D]===\"*\"){C=[];break no_type_restriction}B=j.mimeTypes[u[D]];if(B&&j.inArray(B,C)===-1){C.push(B)}}}G.innerHTML='<input id=\"'+p.id+'_html5\"  style=\"font-size:999px\" type=\"file\" accept=\"'+C.join(\",\")+'\" '+(p.settings.multi_selection&&p.features.multi_selection?'multiple=\"multiple\"':\"\")+\" />\";G.scrollTop=100;E=k.getElementById(p.id+\"_html5\");if(w.features.triggerDialog){j.extend(E.style,{position:\"absolute\",width:\"100%\",height:\"100%\"})}else{j.extend(E.style,{cssFloat:\"right\",styleFloat:\"right\"})}E.onchange=function(){o(this.files);this.value=\"\"};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,\"mouseover\",function(){j.addClass(F,z)},w.id);j.addEvent(x,\"mouseout\",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,\"mousedown\",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,\"mouseup\",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,\"click\",function(H){var y=k.getElementById(w.id+\"_html5\");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind(\"PostInit\",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,\"dragenter\",function(w){var v,t,u;v=k.getElementById(p.id+\"_drop\");if(!v){v=k.createElement(\"input\");v.setAttribute(\"type\",\"file\");v.setAttribute(\"id\",p.id+\"_drop\");v.setAttribute(\"multiple\",\"multiple\");j.addEvent(v,\"change\",function(){o(this.files);j.removeEvent(v,\"change\",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,\"position\")===\"static\"){j.extend(s.style,{position:\"relative\"})}j.extend(v.style,{position:\"absolute\",display:\"block\",top:0,left:0,width:u.w+\"px\",height:u.h+\"px\",opacity:0})},p.id);return}j.addEvent(s,\"dragover\",function(t){t.preventDefault()},p.id);j.addEvent(s,\"drop\",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind(\"Refresh\",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+\"_html5_container\");j.extend(x.style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"});if(p.features.triggerDialog){if(j.getStyle(t,\"position\")===\"static\"){j.extend(t.style,{position:\"relative\"})}w=parseInt(j.getStyle(t,\"z-index\"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind(\"DisableBrowse\",function(s,u){var t=k.getElementById(s.id+\"_html5\");if(t){t.disabled=u}});p.bind(\"CancelUpload\",function(){if(q&&q.abort){q.abort()}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=(\"FileReader\" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N=\"----pluploadboundary\"+j.guid(),O,P=\"--\",U=\"\\r\\n\",R=\"\";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger(\"UploadProgress\",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger(\"Error\",{code:j.HTTP_ERROR,message:j.translate(\"HTTP Error.\"),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger(\"ChunkUploaded\",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger(\"UploadProgress\",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger(\"FileUploaded\",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open(\"post\",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!==\"string\"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)===\"string\"){q.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name=\"'+W+'\"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";R+=P+N+U+'Content-Disposition: form-data; name=\"'+s.settings.file_data_name+'\"; filename=\"'+unescape(encodeURIComponent(u.name))+'\"'+U+\"Content-Type: \"+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Q<V.length;Q++){S[Q]=(V.charCodeAt(Q)&255)}q.send(S.buffer)}}return}}E=j.buildUrl(s.settings.url,j.extend(L,s.settings.multipart_params));q.open(\"post\",E,true);q.setRequestHeader(\"Content-Type\",\"application/octet-stream\");j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});q.send(V)}if(u.status==j.DONE||u.status==j.FAILED||s.state==j.STOPPED){return}L={name:u.target_name||u.name};if(v.chunk_size&&u.size>v.chunk_size&&(n.chunks||typeof(A)==\"string\")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)==\"string\"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!==\"string\"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\\.png$/i.test(u.name)?\"image/png\":\"image/jpeg\",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind(\"Destroy\",function(s){var u,v,t=k.body,w={inputContainer:s.id+\"_html5_container\",inputFile:s.id+\"_html5\",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u<v;u++){w|=(o.charCodeAt(t+u)<<Math.abs(s+u*8))}return w}function n(u,s,t){var t=arguments.length===3?t:o.length-s-1;o=o.substr(0,s)+u+o.substr(t+s)}function p(t,u,w){var x=\"\",s=q?0:-8*(w-1),v;for(v=0;v<w;v++){x+=String.fromCharCode((u>>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u=\"\";for(t+=s;s<t;s++){u+=String.fromCharCode(r(s,1))}return u}}}function f(s){var u={65505:{app:\"EXIF\",name:\"APP1\",signature:\"Exif\\0\"},65506:{app:\"ICC\",name:\"APP2\",signature:\"ICC_PROFILE\\0\"},65517:{app:\"IPTC\",name:\"APP13\",signature:\"Photoshop 3.0\\0\"}},t=[],r,n,p=e,q=0,o;r=new b();r.init(s);if(r.SHORT(0)!==65496){return}n=2;o=Math.min(1048576,s.length);while(n<=o){p=r.SHORT(n);if(p>=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,\"\")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x<v;x++){r.SEGMENT(n,0,t[x].segment);n+=t[x].length}return r.SEGMENT()},get:function(x){var y=[];for(var w=0,v=t.length;w<v;w++){if(t[w].app===x.toUpperCase()){y.push(t[w].segment)}}return y},set:function(y,x){var z=[];if(typeof(x)===\"string\"){z.push(x)}else{z=x}for(var w=ii=0,v=t.length;w<v;w++){if(t[w].app===y.toUpperCase()){t[w].segment=z[ii];t[w].length=z[ii].length;ii++}if(ii>=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:\"Orientation\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\"},exif:{36864:\"ExifVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",36867:\"DateTimeOriginal\",33434:\"ExposureTime\",33437:\"FNumber\",34855:\"ISOSpeedRatings\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41990:\"SceneCaptureType\",41988:\"DigitalZoomRatio\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\"},gps:{0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\"}};t={ColorSpace:{1:\"sRGB\",0:\"Uncalibrated\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{1:\"Daylight\",2:\"Fliorescent\",3:\"Tungsten\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 -5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire.\",1:\"Flash fired.\",5:\"Strobe return light not detected.\",7:\"Strobe return light detected.\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},ExposureMode:{0:\"Auto exposure\",1:\"Manual exposure\",2:\"Auto bracket\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},GPSLatitudeRef:{N:\"North latitude\",S:\"South latitude\"},GPSLongitudeRef:{E:\"East longitude\",W:\"West longitude\"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z<w;z++){x=v=u+12*z+2;G=C[q.SHORT(x)];if(G===e){continue}B=q.SHORT(x+=2);A=q.LONG(x+=2);x+=4;E=[];switch(B){case 1:case 7:if(A>4){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.BYTE(x+F)}break;case 2:if(A>4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.SHORT(x+F*2)}break;case 4:if(A>1){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)}break;case 5:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)/q.LONG(x+F*4+4)}break;case 9:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)}break;case 10:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)/q.SLONG(x+F*4+4)}break;default:continue}D=(A==1?E[0]:E);if(t.hasOwnProperty(G)&&typeof D!=\"object\"){y[G]=t[G][D]}else{y[G]=D}}return y}function s(){var v=e,u=o.tiffHeader;q.II(q.SHORT(u)==18761);if(q.SHORT(u+=2)!==42){return false}o.IFD0=o.tiffHeader+q.LONG(u+=2);v=p(o.IFD0,n.tiff);o.exifIFD=(\"ExifIFDPointer\" in v?o.tiffHeader+v.ExifIFDPointer:e);o.gpsIFD=(\"GPSInfoIFDPointer\" in v?o.tiffHeader+v.GPSInfoIFDPointer:e);return true}function r(w,u,z){var B,y,x,A=0;if(typeof(u)===\"string\"){var v=n[w.toLowerCase()];for(hex in v){if(v[hex]===u){u=hex;break}}}B=o[w.toLowerCase()+\"IFD\"];y=q.SHORT(B);for(i=0;i<y;i++){x=B+12*i+2;if(q.SHORT(x)==u){A=x+8;break}}if(!A){return false}q.LONG(A,z);return true}return{init:function(u){o={tiffHeader:10};if(u===e||!u.length){return false}q.init(u);if(q.SHORT(0)===65505&&q.STRING(4,5).toUpperCase()===\"EXIF\\0\"){return s()}return false},EXIF:function(){var v;v=p(o.exifIFD,n.exif);if(v.ExifVersion&&j.typeOf(v.ExifVersion)===\"array\"){for(var w=0,u=\"\";w<v.ExifVersion.length;w++){u+=String.fromCharCode(v.ExifVersion[w])}v.ExifVersion=u}return v},GPS:function(){var u;u=p(o.gpsIFD,n.gps);if(u.GPSVersionID){u.GPSVersionID=u.GPSVersionID.join(\".\")}return u},setExif:function(u,v){if(u!==\"PixelXDimension\"&&u!==\"PixelYDimension\"){return false}return r(\"exif\",u,v)},getBinary:function(){return q.SEGMENT()}}}})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.js",
    "content": "/*1.5.4*/\n(function(){var f=0,k=[],m={},i={},a={\"<\":\"lt\",\">\":\"gt\",\"&\":\"amp\",'\"':\"quot\",\"'\":\"#39\"},l=/[<>&\\\"\\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function j(){this.cancelBubble=true}(function(n){var o=n.split(/,/),p,r,q;for(p=0;p<o.length;p+=2){q=o[p+1].split(/ /);for(r=0;r<q.length;r++){i[q[r]]=o[p]}}})(\"application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe\");var g={VERSION:\"1.5.4\",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:i,ua:(function(){var r=navigator,q=r.userAgent,s=r.vendor,o,n,p;o=/WebKit/.test(q);p=o&&s.indexOf(\"Apple\")!==-1;n=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf(\"Win\")!==-1,ie:!o&&!n&&(/MSIE/gi).test(q)&&(/Explorer/gi).test(r.appName),webkit:o,gecko:!o&&/Gecko/.test(q),safari:p,opera:!!n}}()),typeOf:function(n){return({}).toString.call(n).match(/\\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(n){g.each(arguments,function(o,p){if(p>0){g.each(o,function(r,q){n[q]=r})}});return n},cleanName:function(n){var o,p;p=[/[\\300-\\306]/g,\"A\",/[\\340-\\346]/g,\"a\",/\\307/g,\"C\",/\\347/g,\"c\",/[\\310-\\313]/g,\"E\",/[\\350-\\353]/g,\"e\",/[\\314-\\317]/g,\"I\",/[\\354-\\357]/g,\"i\",/\\321/g,\"N\",/\\361/g,\"n\",/[\\322-\\330]/g,\"O\",/[\\362-\\370]/g,\"o\",/[\\331-\\334]/g,\"U\",/[\\371-\\374]/g,\"u\"];for(o=0;o<p.length;o+=2){n=n.replace(p[o],p[o+1])}n=n.replace(/\\s+/g,\"_\");n=n.replace(/[^a-z0-9_\\-\\.]+/gi,\"\");return n},addRuntime:function(n,o){o.name=n;k[n]=o;k.push(o);return o},guid:function(){var n=new Date().getTime().toString(32),o;for(o=0;o<5;o++){n+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||\"p\")+n+(f++).toString(32)},buildUrl:function(o,n){var p=\"\";g.each(n,function(r,q){p+=(p?\"&\":\"\")+encodeURIComponent(q)+\"=\"+encodeURIComponent(r)});if(p){o+=(o.indexOf(\"?\")>0?\"&\":\"?\")+p}return o},each:function(q,r){var p,o,n;if(q){p=q.length;if(p===b){for(o in q){if(q.hasOwnProperty(o)){if(r(q[o],o)===false){return}}}}else{for(n=0;n<p;n++){if(r(q[n],n)===false){return}}}}},formatSize:function(n){if(n===b||/\\D/.test(n)){return g.translate(\"N/A\")}if(n>1073741824){return Math.round(n/1073741824,1)+\" GB\"}if(n>1048576){return Math.round(n/1048576,1)+\" MB\"}if(n>1024){return Math.round(n/1024,1)+\" KB\"}return n+\" b\"},getPos:function(o,s){var t=0,r=0,v,u=document,p,q;o=o;s=s||u.body;function n(B){var z,A,w=0,C=0;if(B){A=B.getBoundingClientRect();z=u.compatMode===\"CSS1Compat\"?u.documentElement:u.body;w=A.left+z.scrollLeft;C=A.top+z.scrollTop}return{x:w,y:C}}if(o&&o.getBoundingClientRect&&((navigator.userAgent.indexOf(\"MSIE\")>0)&&(u.documentMode<8))){p=n(o);q=n(s);return{x:p.x-q.x,y:p.y-q.y}}v=o;while(v&&v!=s&&v.nodeType){t+=v.offsetLeft||0;r+=v.offsetTop||0;v=v.offsetParent}v=o.parentNode;while(v&&v!=s&&v.nodeType){t-=v.scrollLeft||0;r-=v.scrollTop||0;v=v.parentNode}return{x:t,y:r}},getSize:function(n){return{w:n.offsetWidth||n.clientWidth,h:n.offsetHeight||n.clientHeight}},parseSize:function(n){var o;if(typeof(n)==\"string\"){n=/^([0-9]+)([mgk]?)$/.exec(n.toLowerCase().replace(/[^0-9mkg]/g,\"\"));o=n[2];n=+n[1];if(o==\"g\"){n*=1073741824}if(o==\"m\"){n*=1048576}if(o==\"k\"){n*=1024}}return n},xmlEncode:function(n){return n?(\"\"+n).replace(l,function(o){return a[o]?\"&\"+a[o]+\";\":o}):n},toArray:function(p){var o,n=[];for(o=0;o<p.length;o++){n[o]=p[o]}return n},inArray:function(p,q){if(q){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(q,p)}for(var n=0,o=q.length;n<o;n++){if(q[n]===p){return n}}}return -1},addI18n:function(n){return g.extend(m,n)},translate:function(n){return m[n]||n},isEmptyObj:function(n){if(n===b){return true}for(var o in n){return false}return true},hasClass:function(p,o){var n;if(p.className==\"\"){return false}n=new RegExp(\"(^|\\\\s+)\"+o+\"(\\\\s+|$)\");return n.test(p.className)},addClass:function(o,n){if(!g.hasClass(o,n)){o.className=o.className==\"\"?n:o.className.replace(/\\s+$/,\"\")+\" \"+n}},removeClass:function(p,o){var n=new RegExp(\"(^|\\\\s+)\"+o+\"(\\\\s+|$)\");p.className=p.className.replace(n,function(r,q,s){return q===\" \"&&s===\" \"?\" \":\"\"})},getStyle:function(o,n){if(o.currentStyle){return o.currentStyle[n]}else{if(window.getComputedStyle){return window.getComputedStyle(o,null)[n]}}},addEvent:function(s,n,t){var r,q,p,o;o=arguments[3];n=n.toLowerCase();if(e===b){e=\"Plupload_\"+g.guid()}if(s.addEventListener){r=t;s.addEventListener(n,r,false)}else{if(s.attachEvent){r=function(){var u=window.event;if(!u.target){u.target=u.srcElement}u.preventDefault=h;u.stopPropagation=j;t(u)};s.attachEvent(\"on\"+n,r)}}if(s[e]===b){s[e]=g.guid()}if(!d.hasOwnProperty(s[e])){d[s[e]]={}}q=d[s[e]];if(!q.hasOwnProperty(n)){q[n]=[]}q[n].push({func:r,orig:t,key:o})},removeEvent:function(s,n){var q,t,p;if(typeof(arguments[2])==\"function\"){t=arguments[2]}else{p=arguments[2]}n=n.toLowerCase();if(s[e]&&d[s[e]]&&d[s[e]][n]){q=d[s[e]][n]}else{return}for(var o=q.length-1;o>=0;o--){if(q[o].key===p||q[o].orig===t){if(s.removeEventListener){s.removeEventListener(n,q[o].func,false)}else{if(s.detachEvent){s.detachEvent(\"on\"+n,q[o].func)}}q[o].orig=null;q[o].func=null;q.splice(o,1);if(t!==b){break}}}if(!q.length){delete d[s[e]][n]}if(g.isEmptyObj(d[s[e]])){delete d[s[e]];try{delete s[e]}catch(r){s[e]=b}}},removeAllEvents:function(o){var n=arguments[1];if(o[e]===b||!o[e]){return}g.each(d[o[e]],function(q,p){g.removeEvent(o,p,n)})}};g.Uploader=function(r){var o={},u,t=[],q,p=false;u=new g.QueueProgress();r=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:\"file\",filters:[]},r);function s(){var w,x=0,v;if(this.state==g.STARTED){for(v=0;v<t.length;v++){if(!w&&t[v].status==g.QUEUED){w=t[v];w.status=g.UPLOADING;if(this.trigger(\"BeforeUpload\",w)){this.trigger(\"UploadFile\",w)}}else{x++}}if(x==t.length){this.stop();this.trigger(\"UploadComplete\",t)}}}function n(){var w,v;u.reset();for(w=0;w<t.length;w++){v=t[w];if(v.size!==b){u.size+=v.size;u.loaded+=v.loaded}else{u.size=b}if(v.status==g.DONE){u.uploaded++}else{if(v.status==g.FAILED){u.failed++}else{u.queued++}}}if(u.size===b){u.percent=t.length>0?Math.ceil(u.uploaded/t.length*100):0}else{u.bytesPerSec=Math.ceil(u.loaded/((+new Date()-q||1)/1000));u.percent=u.size>0?Math.ceil(u.loaded/u.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:\"\",features:{},files:t,settings:r,total:u,id:g.guid(),init:function(){var A=this,B,x,w,z=0,y;if(typeof(r.preinit)==\"function\"){r.preinit(A)}else{g.each(r.preinit,function(D,C){A.bind(C,D)})}r.page_url=r.page_url||document.location.pathname.replace(/\\/[^\\/]+$/g,\"/\");if(!/^(\\w+:\\/\\/|\\/)/.test(r.url)){r.url=r.page_url+r.url}r.chunk_size=g.parseSize(r.chunk_size);r.max_file_size=g.parseSize(r.max_file_size);A.bind(\"FilesAdded\",function(C,F){var E,D,H=0,I,G=r.filters;if(G&&G.length){I=[];g.each(G,function(J){g.each(J.extensions.split(/,/),function(K){if(/^\\s*\\*\\s*$/.test(K)){I.push(\"\\\\.*\")}else{I.push(\"\\\\.\"+K.replace(new RegExp(\"[\"+(\"/^$.*+?|()[]{}\\\\\".replace(/./g,\"\\\\$&\"))+\"]\",\"g\"),\"\\\\$&\"))}})});I=new RegExp(I.join(\"|\")+\"$\",\"i\")}for(E=0;E<F.length;E++){D=F[E];D.loaded=0;D.percent=0;D.status=g.QUEUED;if(I&&!I.test(D.name)){C.trigger(\"Error\",{code:g.FILE_EXTENSION_ERROR,message:g.translate(\"File extension error.\"),file:D});continue}if(D.size!==b&&D.size>r.max_file_size){C.trigger(\"Error\",{code:g.FILE_SIZE_ERROR,message:g.translate(\"File size error.\"),file:D});continue}t.push(D);H++}if(H){c(function(){A.trigger(\"QueueChanged\");A.refresh()},1)}else{return false}});if(r.unique_names){A.bind(\"UploadFile\",function(C,D){var F=D.name.match(/\\.([^.]+)$/),E=\"tmp\";if(F){E=F[1]}D.target_name=D.id+\".\"+E})}A.bind(\"UploadProgress\",function(C,D){D.percent=D.size>0?Math.ceil(D.loaded/D.size*100):100;n()});A.bind(\"StateChanged\",function(C){if(C.state==g.STARTED){q=(+new Date())}else{if(C.state==g.STOPPED){for(B=C.files.length-1;B>=0;B--){if(C.files[B].status==g.UPLOADING){C.files[B].status=g.QUEUED;n()}}}}});A.bind(\"QueueChanged\",n);A.bind(\"Error\",function(C,D){if(D.file){D.file.status=g.FAILED;n();if(C.state==g.STARTED){c(function(){s.call(A)},1)}}});A.bind(\"FileUploaded\",function(C,D){D.status=g.DONE;D.loaded=D.size;C.trigger(\"UploadProgress\",D);c(function(){s.call(A)},1)});if(r.runtimes){x=[];y=r.runtimes.split(/\\s?,\\s?/);for(B=0;B<y.length;B++){if(k[y[B]]){x.push(k[y[B]])}}}else{x=k}function v(){var F=x[z++],E,C,D;if(F){E=F.getFeatures();C=A.settings.required_features;if(C){C=C.split(\",\");for(D=0;D<C.length;D++){if(!E[C[D]]){v();return}}}F.init(A,function(G){if(G&&G.success){A.features=E;A.runtime=F.name;A.trigger(\"Init\",{runtime:F.name});A.trigger(\"PostInit\");A.refresh()}else{v()}})}else{A.trigger(\"Error\",{code:g.INIT_ERROR,message:g.translate(\"Init error.\")})}}v();if(typeof(r.init)==\"function\"){r.init(A)}else{g.each(r.init,function(D,C){A.bind(C,D)})}},refresh:function(){this.trigger(\"Refresh\")},start:function(){if(t.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger(\"StateChanged\");s.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger(\"CancelUpload\");this.trigger(\"StateChanged\")}},disableBrowse:function(){p=arguments[0]!==b?arguments[0]:true;this.trigger(\"DisableBrowse\",p)},getFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w){return t[v]}}},removeFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w.id){return this.splice(v,1)[0]}}},splice:function(x,v){var w;w=t.splice(x===b?0:x,v===b?t.length:v);this.trigger(\"FilesRemoved\",w);this.trigger(\"QueueChanged\");return w},trigger:function(w){var y=o[w.toLowerCase()],x,v;if(y){v=Array.prototype.slice.call(arguments);v[0]=this;for(x=0;x<y.length;x++){if(y[x].func.apply(y[x].scope,v)===false){return false}}}return true},hasEventListener:function(v){return !!o[v.toLowerCase()]},bind:function(v,x,w){var y;v=v.toLowerCase();y=o[v]||[];y.push({func:x,scope:w||this});o[v]=y},unbind:function(v){v=v.toLowerCase();var y=o[v],w,x=arguments[1];if(y){if(x!==b){for(w=y.length-1;w>=0;w--){if(y[w].func===x){y.splice(w,1);break}}}else{y=[]}if(!y.length){delete o[v]}}},unbindAll:function(){var v=this;g.each(o,function(x,w){v.unbind(w)})},destroy:function(){this.stop();this.trigger(\"Destroy\");this.unbindAll()}})};g.File=function(q,o,p){var n=this;n.id=q;n.name=o;n.size=p;n.loaded=0;n.percent=0;n.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(n,o){}};g.QueueProgress=function(){var n=this;n.size=0;n.loaded=0;n.uploaded=0;n.failed=0;n.queued=0;n.percent=0;n.bytesPerSec=0;n.reset=function(){n.size=n.loaded=n.uploaded=n.failed=n.queued=n.percent=n.bytesPerSec=0}};g.runtimes={};window.plupload=g})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.js",
    "content": "(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return\"null\"}if(m===\"string\"){n=\"\\bb\\tt\\nn\\ff\\rr\\\"\\\"''\\\\\\\\\";return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(q,p){var i=n.indexOf(p);if(i+1){return\"\\\\\"+n.charAt(i+1)}q=p.charCodeAt().toString(16);return\"\\\\u\"+\"0000\".substring(q.length)+q})+'\"'}if(m==\"object\"){j=o.length!==e;n=\"\";if(j){for(l=0;l<o.length;l++){if(n){n+=\",\"}n+=c(o[l])}n=\"[\"+n+\"]\"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=\",\"}n+=c(k)+\":\"+c(o[k])}}n=\"{\"+n+\"}\"}return n}return\"\"+o}function f(r){var u=false,i=null,n=null,j,k,l,t,m,p=0;try{try{n=new ActiveXObject(\"AgControl.AgControl\");if(n.IsVersionSupported(r)){u=true}n=null}catch(q){var o=navigator.plugins[\"Silverlight Plug-In\"];if(o){j=o.description;if(j===\"1.0.30226.2\"){j=\"2.0.30226.2\"}k=j.split(\".\");while(k.length>3){k.pop()}while(k.length<4){k.push(0)}l=r.split(\".\");while(l.length>4){l.pop()}do{t=parseInt(l[p],10);m=parseInt(k[p],10);p++}while(p<l.length&&t===m);if(t<=m&&!isNaN(t)){u=true}}}}catch(s){u=false}return u}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]=\"Silverlight:\"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime(\"silverlight\",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m=\"\",n=p.settings.filters,l,k=b.body;if(!f(\"2.0.31005.0\")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement(\"div\");o.id=p.id+\"_silverlight_container\";d.extend(o.style,{position:\"absolute\",top:\"0px\",background:p.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100px\",height:\"100px\",overflow:\"hidden\",opacity:p.settings.shim_bgcolor||b.documentMode>8?\"\":0.01});o.className=\"plupload silverlight\";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,\"position\")===\"static\"){k.style.position=\"relative\"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=\"\"?\"|\":\"\")+n[l].title+\" | *.\"+n[l].extensions.replace(/,/g,\";*.\")}o.innerHTML='<object id=\"'+p.id+'_silverlight\" data=\"data:application/x-silverlight,\" type=\"application/x-silverlight-2\" style=\"outline:none;\" width=\"1024\" height=\"1024\"><param name=\"source\" value=\"'+p.settings.silverlight_xap_url+'\"/><param name=\"background\" value=\"Transparent\"/><param name=\"windowless\" value=\"true\"/><param name=\"enablehtmlaccess\" value=\"true\"/><param name=\"initParams\" value=\"id='+p.id+\",filter=\"+m+\",multiselect=\"+p.settings.multi_selection+'\"/></object>';function j(){return b.getElementById(p.id+\"_silverlight\").content.Upload}p.bind(\"Silverlight:Init\",function(){var i,r={};if(h[p.id]){return}h[p.id]=true;p.bind(\"Silverlight:StartSelectFiles\",function(s){i=[]});p.bind(\"Silverlight:SelectFile\",function(s,v,t,u){var w;w=d.guid();r[w]=v;r[v]=w;i.push(new d.File(w,t,u))});p.bind(\"Silverlight:SelectSuccessful\",function(){if(i.length){p.trigger(\"FilesAdded\",i)}});p.bind(\"Silverlight:UploadChunkError\",function(s,v,t,w,u){p.trigger(\"Error\",{code:d.IO_ERROR,message:\"IO Error.\",details:u,file:s.getFile(r[v])})});p.bind(\"Silverlight:UploadFileProgress\",function(s,w,t,v){var u=s.getFile(r[w]);if(u.status!=d.FAILED){u.size=v;u.loaded=t;s.trigger(\"UploadProgress\",u)}});p.bind(\"Refresh\",function(s){var t,u,v;t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+\"_silverlight_container\").style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"})}});p.bind(\"Silverlight:UploadChunkSuccessful\",function(s,v,t,y,x){var w,u=s.getFile(r[v]);w={chunk:t,chunks:y,response:x};s.trigger(\"ChunkUploaded\",u,w);if(u.status!=d.FAILED&&s.state!==d.STOPPED){j().UploadNextChunk()}if(t==y-1){u.status=d.DONE;s.trigger(\"FileUploaded\",u,{response:x})}});p.bind(\"Silverlight:UploadSuccessful\",function(s,v,t){var u=s.getFile(r[v]);u.status=d.DONE;s.trigger(\"FileUploaded\",u,{response:t})});p.bind(\"FilesRemoved\",function(s,u){var t;for(t=0;t<u.length;t++){j().RemoveFile(r[u[t].id])}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,t=v.resize||{};j().UploadFile(r[u.id],s.settings.url,c({name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:v.chunk_size,image_width:t.width,image_height:t.height,image_quality:t.quality||90,multipart:!!v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,headers:v.headers}))});p.bind(\"CancelUpload\",function(){j().CancelUpload()});p.bind(\"Silverlight:MouseEnter\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});p.bind(\"Silverlight:MouseLeave\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});p.bind(\"Silverlight:MouseLeftButtonDown\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(t,u)})}});p.bind(\"Sliverlight:StartSelectFiles\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});p.bind(\"DisableBrowse\",function(s,t){j().DisableBrowse(t)});p.bind(\"Destroy\",function(s){var t;d.removeAllEvents(b.body,s.id);delete h[s.id];delete a[s.id];t=b.getElementById(s.id+\"_silverlight_container\");if(t){k.removeChild(t)}});q({success:true})})}})})(window,document,plupload);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/license.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/plupload/readme.md",
    "content": "Plupload - Cross browser and platform uploader API\n===================================================\n\nWhat is Plupload\n-----------------\nPlupload is a JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering,\nrequest chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight, Flash, Gears and BrowserPlus.\n\nWhat you need to build Plupload\n-------------------------------\n* Install the Java JDK or JRE packages you can find it at: [http://java.sun.com/javase/downloads/index.jsp](http://java.sun.com/javase/downloads/index.jsp)\n* Install Apache Ant you can find it at: [http://ant.apache.org/](http://ant.apache.org/)\n* Add Apache Ant to your systems path environment variable, this is not required but makes it easier to issue commands to Ant without having to type the full path for it.\n\nHow to build Plupload\n----------------------\n\nIn the root directory of Plupload where the build.xml file is you can run ant against different targets.\n\n`ant`\n\nWill combine, preprocess and minify the Plupload classes into the js directory. It will not build the Silverlight and Flash .xap and .swf files.\n\n`ant moxiedoc`\n\nWill generate API Documentation for the project using the Moxiedoc tool. The docs will be generated to the docs/api directory.\n\n`ant release`\n\nWill produce release packages. The release packages will be placed in the tmp directory.\n\nHow to build Flash runtime\n---------------------------\nThe Flash runtime uses a .swf file that can be built using the Flex SDK. This SDK can be downloaded from Adobe. [http://www.adobe.com/products/flex/flexdownloads/](http://www.adobe.com/products/flex/flexdownloads/)\n\nHow to build Silverlight runtime\n---------------------------------\nThe Silverlight runtime uses a .xap file that can be built using the Silverlight SDK or Visual Studio. [http://silverlight.net/getstarted/](http://silverlight.net/getstarted/)\n\nRunning the development version\n--------------------------------\nThe unminified development version of the javascript files can be executed by opening the examples/queue_widget_dev.html file running on a Web Server.\n\nContributing to the Plupload project\n-------------------------------------\nYou can read more about how to contribute to this project at [http://www.plupload.com/contributing](http://www.plupload.com/contributing)\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/LICENSE",
    "content": "Copyright 2012 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License."
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/README.md",
    "content": "Select2\n=================\n\nSelect2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. Look and feel of Select2 is based on the excellent [Chosen](http://harvesthq.github.com/chosen/) library.\n\nTo get started -- checkout http://ivaynberg.github.com/select2!\n\nWhat Does Select2 Support That Chosen Does Not?\n-------------------------------------------------\n\n* Working with large datasets: Chosen requires the entire dataset to be loaded as `option` tags in the DOM, which limits\nit to working with small-ish datasets. Select2 uses a function to find results on-the-fly, which allows it to partially\nload results.\n* Paging of results: Since Select2 works with large datasets and only loads a small amount of matching results at a time\nit has to support paging. Select2 will call the search function when the user scrolls to the bottom of currently loaded\nresult set allowing for the 'infinite scrolling' of results.\n* Custom markup for results: Chosen only supports rendering text results because that is the only markup supported by\n`option` tags. Select2 provides an extension point which can be used to produce any kind of markup to represent results.\n* Ability to add results on the fly: Select2 provides the ability to add results from the search term entered by the user, which allows it to be used for\ntagging.\n\nBrowser Compatibility\n--------------------\n* IE 8+ (7 mostly works except for [issue with z-index](https://github.com/ivaynberg/select2/issues/37))\n* Chrome 8+\n* Firefox 3.5+\n* Safari 3+\n* Opera 10.6+\n\nIntegrations\n------------\n\n* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / Apache Wicket)\n* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)\n* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org))\n* [Django](https://github.com/applegrew/django-select2)\n\nBug tracker\n-----------\n\nHave a bug? Please create an issue here on GitHub!\n\nhttps://github.com/ivaynberg/select2/issues\n\n\nMailing list\n------------\n\nHave a question? Ask on our mailing list!\n\nselect2@googlegroups.com\n\nhttps://groups.google.com/d/forum/select2\n\n\nCopyright and License\n---------------------\n\nCopyright 2012 Igor Vaynberg\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU \nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your \nuse of this software only upon the condition that you accept all of the terms of either the Apache \nLicense or the GPL License. \n\nYou may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License \nor the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, \neither express or implied. See the Apache License and the GPL License for the specific language governing \npermissions and limitations under the Apache License and the GPL License."
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/component.json",
    "content": "{\n    \"name\": \"select2\",\n    \"version\": \"3.3.1\",\n    \"main\": [\"select2.js\", \"select2.css\", \"select2.png\", \"select2x2.png\", \"spinner.gif\"],\n    \"dependencies\": {\n        \"jquery\": \"~1.4.4\"\n    }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/release.sh",
    "content": "#!/bin/bash\nset -e\n\necho -n \"Enter the version for this release: \"\n\nread ver\n\nif [ ! $ver ]; then \n\techo \"Invalid version.\"\n\texit\nfi\n\nname=\"select2\"\njs=\"$name.js\"\nmini=\"$name.min.js\"\ncss=\"$name.css\"\nrelease=\"$name-$ver\"\ntag=\"$ver\"\nbranch=\"build-$ver\"\ncurbranch=`git branch | grep \"*\" | sed \"s/* //\"`\ntimestamp=$(date)\ntokens=\"s/@@ver@@/$ver/g;s/\\@@timestamp@@/$timestamp/g\"\nremote=\"github\"\n\necho \"Updating Version Identifiers\"\n\nsed -E -e \"s/\\\"version\\\": \\\"([0-9\\.]+)\\\",/\\\"version\\\": \\\"$ver\\\",/g\" -i \"\" component.json select2.jquery.json\ngit add component.json\ngit add select2.jquery.json\ngit commit -m \"modified version identifiers in descriptors for release $ver\"\ngit push\n \ngit branch \"$branch\"\ngit checkout \"$branch\"\n\necho \"Tokenizing...\"\n\nfind . -name \"$js\" | xargs -I{} sed -e \"$tokens\" -i \"\" {} \nfind . -name \"$css\" | xargs -I{} sed -e \"$tokens\" -i \"\" {}\nsed -e \"s/latest/$ver/g\" -i \"\" component.json\n\ngit add \"$js\"\ngit add \"$css\"\n\necho \"Minifying...\"\n\necho \"/*\" > \"$mini\"\ncat LICENSE | sed \"$tokens\" >> \"$mini\"\necho \"*/\" >> \"$mini\"\n\ncurl -s \\\n\t-d compilation_level=SIMPLE_OPTIMIZATIONS \\\n\t-d output_format=text \\\n\t-d output_info=compiled_code \\\n\t--data-urlencode \"js_code@$js\" \\\n\thttp://closure-compiler.appspot.com/compile \\\n\t>> \"$mini\"\n\ngit add \"$mini\"\n\t\ngit commit -m \"release $ver\"\n\necho \"Tagging...\"\ngit tag -a \"$tag\" -m \"tagged version $ver\"\ngit push \"$remote\" --tags\n\necho \"Cleaning Up...\"\n\ngit checkout \"$curbranch\"\ngit branch -D \"$branch\"\n\necho \"Done\"\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.css",
    "content": "/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: top;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input{\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n   -khtml-box-sizing: border-box; /* konqueror */\n     -moz-box-sizing: border-box; /* firefox */\n      -ms-box-sizing: border-box; /* ie */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    -webkit-border-radius: 4px;\n       -moz-border-radius: 4px;\n            border-radius: 4px;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    -webkit-border-radius:0 0 4px 4px;\n       -moz-border-radius:0 0 4px 4px;\n            border-radius:0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);\n    background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );\n    background-image: linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n}\n\n.select2-container .select2-choice span {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    -ms-text-overflow: ellipsis;\n     -o-text-overflow: ellipsis;\n        text-overflow: ellipsis;\n}\n\n.select2-container .select2-choice abbr {\n    display: block;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 26px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    position: absolute;\n    left: 0;\n    top: 0;\n    z-index: 9998;\n    background-color: #fff;\n    opacity: 0;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\"; /* works in IE 8 */\n        filter: \"alpha(opacity=0)\"; /* expected to work in IE 8 */\n        filter: alpha(opacity=0); /* IE 4-7 */\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top:-1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    -webkit-border-radius: 0 0 4px 4px;\n       -moz-border-radius: 0 0 4px 4px;\n            border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    -webkit-border-radius: 4px 4px 0 0;\n       -moz-border-radius: 4px 4px 0 0;\n            border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-container .select2-choice div {\n    display: block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    -webkit-border-radius: 0 4px 4px 0;\n       -moz-border-radius: 0 4px 4px 0;\n            border-radius: 0 4px 4px 0;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);\n    background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n}\n\n.select2-container .select2-choice div b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search-hidden {\n    display: block;\n    position: absolute;\n    left: -10000px;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    -webkit-border-radius: 0;\n       -moz-border-radius: 0;\n            border-radius: 0;\n\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n       -moz-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    -webkit-border-bottom-left-radius: 0;\n        -moz-border-radius-bottomleft: 0;\n            border-bottom-left-radius: 0;\n\n    -webkit-border-bottom-right-radius: 0;\n        -moz-border-radius-bottomright: 0;\n            border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));\n    background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );\n    background-image: linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n}\n\n.select2-dropdown-open .select2-choice div {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\n.select2-dropdown-open .select2-choice div b {\n    background-position: -18px 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n}\n\n.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }\n.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: white;\n    color: #000;\n}\n\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice div {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));\n    background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    -webkit-border-radius: 3px;\n       -moz-border-radius: 3px;\n            border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n       -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n            box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0 );\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n}\n.select2-container-multi .select2-choices .select2-search-choice span {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices{\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {\n    display: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen {\n    position: absolute;\n    left: -10000px;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi)  {\n  .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {\n      background-image: url('select2x2.png') !important;\n      background-repeat: no-repeat !important;\n      background-size: 60px 40px !important;\n  }\n  .select2-search input {\n      background-position: 100% -21px !important;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.jquery.json",
    "content": "{\n    \"name\": \"select2\",\n    \"title\": \"Select2\",\n    \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n    \"keywords\": [\n        \"select\",\n        \"autocomplete\",\n        \"typeahead\",\n        \"dropdown\",\n        \"multiselect\",\n        \"tag\",\n        \"tagging\"\n    ],\n    \"version\": \"3.3.1\",\n    \"author\": {\n        \"name\": \"Igor Vaynberg\",\n        \"url\": \"https://github.com/ivaynberg\"\n    },\n    \"licenses\": [\n        {\n            \"type\": \"Apache\",\n            \"url\": \"http://www.apache.org/licenses/LICENSE-2.0\"\n        },\n        {\n            \"type\": \"GPL v2\",\n            \"url\": \"http://www.gnu.org/licenses/gpl-2.0.html\"\n        }\n    ],\n    \"bugs\": \"https://github.com/ivaynberg/select2/issues\",\n    \"homepage\": \"http://ivaynberg.github.com/select2\",\n    \"docs\": \"http://ivaynberg.github.com/select2/\",\n    \"download\": \"https://github.com/ivaynberg/select2/tags\",\n    \"dependencies\": {\n        \"jquery\": \">=1.4.6\"\n    }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n (function ($) {\n \tif(typeof $.fn.each2 == \"undefined\"){\n \t\t$.fn.extend({\n \t\t\t/*\n\t\t\t* 4-10 times faster .each replacement\n\t\t\t* use it carefully, as it overrides jQuery context of element on each iteration\n\t\t\t*/\n\t\t\teach2 : function (c) {\n\t\t\t\tvar j = $([0]), i = -1, l = this.length;\n\t\t\t\twhile (\n\t\t\t\t\t++i < l\n\t\t\t\t\t&& (j.context = j[0] = this[i])\n\t\t\t\t\t&& c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n\t\t\t\t);\n\t\t\t\treturn this;\n\t\t\t}\n \t\t});\n \t}\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition, $document;\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    };\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        if (a.constructor === String) return a+'' === b+''; // IE requires a+'' instead of just a\n        if (b.constructor === String) return b+'' === a+''; // IE requires b+'' instead of just b\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.bind(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.bind(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n    $document.bind(\"mousemove\", function (e) {\n        lastMousePosition = {x: e.pageX, y: e.pageY};\n    });\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n\t    element.bind(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * A simple implementation of a thunk\n     * @param formula function used to lazily initialize the thunk\n     * @return {Function}\n     */\n    function thunk(formula) {\n        var evaluated = false,\n            value;\n        return function() {\n            if (evaluated === false) { value = formula(); evaluated = true; }\n            return value;\n        };\n    };\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.bind(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            if ($el.is(\":visible\") && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n        \tvar style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n        \tsizer = $(document.createElement(\"div\")).css({\n\t            position: \"absolute\",\n\t            left: \"-10000px\",\n\t            top: \"-10000px\",\n\t            display: \"none\",\n\t            fontSize: style.fontSize,\n\t            fontFamily: style.fontFamily,\n\t            fontStyle: style.fontStyle,\n\t            fontWeight: style.fontWeight,\n\t            letterSpacing: style.letterSpacing,\n\t            textTransform: style.textTransform,\n\t            whiteSpace: \"nowrap\"\n\t        });\n            sizer.attr(\"class\",\"select2-sizer\");\n        \t$(\"body\").append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = dest.attr(\"class\");\n        if (typeof classes === \"string\") {\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n        classes = src.attr(\"class\");\n        if (typeof classes === \"string\") {\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n                    if (typeof adapted === \"string\" && adapted.length > 0) {\n                        replacements.push(this);\n                    }\n                }\n            });\n        }\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=text.toUpperCase().indexOf(term.toUpperCase()),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration paramters\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.traditional a boolean flag that should be true if you wish to use the traditional style of param serialization for the ajax request\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            requestSequence = 0, // sequence used to drop out-of-order responses\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                requestSequence += 1; // increment the sequence\n                var requestNumber = requestSequence, // this request's sequence number\n                    data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.ajax,\n                    type = options.type || 'GET', // set type of request (GET or POST)\n                    params = {};\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if( null !== handler) { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    type: type,\n                    cache: false,\n                    success: function (data) {\n                        if (requestNumber < requestSequence) {\n                            return;\n                        }\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        var results = options.results(data, query.page);\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n\t\t if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n\t\t if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = data.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            $(isFunc ? data() : data).each(function () {\n                var isObject = this.text !== undefined,\n                    text = isObject ? this.text : this;\n                if (t === \"\" || query.matcher(t, text)) {\n                    filtered.results.push(isObject ? this : {id: this, text: this});\n                }\n            });\n            query.callback(filtered);\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        throw new Error(\"formatterName must be a function or a falsy value\");\n    }\n\n    function evaluate(val) {\n        return $.isFunction(val) ? val() : val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice(token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\", mask;\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                this.destroy();\n            }\n\n            this.enabled=true;\n            this.container = this.createContainer();\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerSelector=\"#\"+this.containerId.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            // cache the body so future lookups are cheap\n            this.body = thunk(function() { return opts.element.closest(\"body\"); });\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.css(evaluate(opts.containerCss));\n            this.container.addClass(evaluate(opts.containerCssClass));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabIndex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .addClass(\"select2-offscreen\")\n                .bind(\"focus.select2\", function() { $(this).select2(\"focus\"); })\n                .attr(\"tabIndex\", \"-1\")\n                .before(this.container);\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass));\n            this.dropdown.data(\"select2\", this);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            search.attr(\"tabIndex\", this.elementTabIndex);\n\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            installFilteredMouseMove(this.results);\n            this.dropdown.delegate(resultsSelector, \"mousemove-filtered touchstart touchmove touchend\", this.bind(this.highlightUnderEvent));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.delegate(resultsSelector, \"scroll-debounced\", this.bind(this.loadMoreIfNeeded));\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop(), height;\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.bind(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.bind(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.bind(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.delegate(resultsSelector, \"mouseup\", this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            this.dropdown.bind(\"click mouseup mousedown\", function (e) { e.stopPropagation(); });\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.element.is(\":disabled\") || opts.element.is(\"[readonly='readonly']\")) this.disable();\n        },\n\n        // abstract\n        destroy: function () {\n            var select2 = this.opts.element.data(\"select2\");\n\n            if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n\n            if (select2 !== undefined) {\n\n                select2.container.remove();\n                select2.dropdown.remove();\n                select2.opts.element\n                    .removeClass(\"select2-offscreen\")\n                    .removeData(\"select2\")\n                    .unbind(\".select2\")\n                    .attr({\"tabIndex\": this.elementTabIndex})\n                    .show();\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate,  data, result, children, id=this.opts.id, self=this;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                            }\n\n                            node.append(label);\n\n                            if (compound) {\n\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            container.append(node);\n                        }\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.attr(\"data-select2-tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, firstChild, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push({id:element.attr(\"value\"), text:element.text(), element: element.get(), css: element.attr(\"class\"), disabled: equal(element.attr(\"disabled\"), \"disabled\") });\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group={text:element.attr(\"label\"), children:[], element: element.get(), css: element.attr(\"class\")};\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        firstChild = children[0];\n                        if ($(firstChild).text() === \"\") {\n                            children=children.not(firstChild);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and there id is hardcoded\n                opts.id=function(e) { return e.id; };\n                opts.formatResultCssClass = function(data) { return data.css; };\n            } else {\n                if (!(\"query\" in opts)) {\n\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: term, text: term}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator)).each(function () {\n                                    var id = this, text = this, tags=opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, id)) { text = this.text; return false; } });\n                                    data.push({id: id, text: text});\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, sync;\n\n            el.bind(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            sync = this.bind(function () {\n\n                var enabled, readonly, self = this;\n\n                // sync enabled state\n\n                enabled = this.opts.element.attr(\"disabled\") !== \"disabled\";\n                readonly = this.opts.element.attr(\"readonly\") === \"readonly\";\n\n                enabled = enabled && !readonly;\n\n                if (this.enabled !== enabled) {\n                    if (enabled) {\n                        this.enable();\n                    } else {\n                        this.disable();\n                    }\n                }\n\n\n                syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                this.container.addClass(evaluate(this.opts.containerCssClass));\n\n                syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));\n\n            });\n\n            // mozilla and IE\n            el.bind(\"propertychange.select2 DOMAttrModified.select2\", sync);\n            // safari and chrome\n            if (typeof WebKitMutationObserver !== \"undefined\") {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new WebKitMutationObserver(function (mutations) {\n                    mutations.forEach(sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignorea the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        // abstract\n        enable: function() {\n            if (this.enabled) return;\n\n            this.enabled=true;\n            this.container.removeClass(\"select2-container-disabled\");\n            this.opts.element.removeAttr(\"disabled\");\n        },\n\n        // abstract\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.close();\n\n            this.enabled=false;\n            this.container.addClass(\"select2-container-disabled\");\n            this.opts.element.attr(\"disabled\", \"disabled\");\n        },\n\n        // abstract\n        opened: function () {\n            return this.container.hasClass(\"select2-dropdown-open\");\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var offset = this.container.offset(),\n                height = this.container.outerHeight(false),\n                width = this.container.outerWidth(false),\n                dropHeight = this.dropdown.outerHeight(false),\n\t            viewPortRight = $(window).scrollLeft() + $(window).width(),\n                viewportBottom = $(window).scrollTop() + $(window).height(),\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),\n\t            dropWidth = this.dropdown.outerWidth(false),\n\t            enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,\n                aboveNow = this.dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                css;\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body().scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n\n            if (this.body().css('position') !== 'static') {\n                bodyOffset = this.body().offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            // always prefer the current above/below alignment, unless there is not enough room\n\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) above = false;\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) above = true;\n            }\n\n            if (!enoughRoomOnRight) {\n               dropLeft = offset.left + width - dropWidth;\n            }\n\n            if (above) {\n                dropTop = offset.top - dropHeight;\n                this.container.addClass(\"select2-drop-above\");\n                this.dropdown.addClass(\"select2-drop-above\");\n            }\n            else {\n                this.container.removeClass(\"select2-drop-above\");\n                this.dropdown.removeClass(\"select2-drop-above\");\n            }\n\n            css = $.extend({\n                top: dropTop,\n                left: dropLeft,\n                width: width\n            }, evaluate(this.opts.dropdownCss));\n\n            this.dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            event = $.Event(\"opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            window.setTimeout(this.bind(this.opening), 1);\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.clearDropdownAlignmentPreference();\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n\n            if(this.dropdown[0] !== this.body().children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body());\n            }\n\n            this.updateResults(true);\n\n            // create the dropdown mask if doesnt already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length == 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body());\n                mask.bind(\"mousedown touchstart\", function (e) {\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.css(_makeMaskCss());\n            mask.show();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n            this.ensureHighlightVisible();\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).bind(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    $(\"#select2-drop-mask\").css(_makeMaskCss());\n                    that.positionDropdown();\n                });\n            });\n\n            this.focusSearch();\n\n            function _makeMaskCss() {\n                return {\n                    width  : Math.max(document.documentElement.scrollWidth,  $(window).width()),\n                    height : Math.max(document.documentElement.scrollHeight, $(window).height())\n                }\n            }\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).unbind(scroll).unbind(resize).unbind(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\");\n            this.results.empty();\n            this.clearSearch();\n\n            this.opts.element.trigger($.Event(\"close\"));\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices();\n\n            child = $(children[index]);\n\n            hb = child.offset().top + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(true);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = child.offset().top - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            var h=this.results.find(\".select2-result-selectable:not(.select2-selected):not(.select2-disabled)\");\n            return this.results.find(\".select2-result-selectable:not(.select2-selected):not(.select2-disabled)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            this.ensureHighlightVisible();\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n        \t\tvar choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove al highlights\n                this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                offset = -1, // index of first element without data\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n                            \n                    if (data.more===true) {\n                        more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search, results = this.results, opts = this.opts, data, self=this, input;\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            search.addClass(\"select2-active\");\n\n            function postRender() {\n                results.scrollTop(0);\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n            \t    render(\"<li class='select2-selection-limit'>\" + opts.formatSelectionTooBig(maxSelSize) + \"</li>\");\n            \t    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n            else if (opts.formatSearching() && initial===true) {\n                render(\"<li class='select2-searching'>\" + opts.formatSearching() + \"</li>\");\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) return;\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(null, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            data.results.unshift(def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatNoMatches(search.val()) + \"</li>\");\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder;\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (style !== undefined) {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            matches = attrs[i].replace(/\\s/g, '')\n                                .match(/width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n\t\tcreateContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>\",\n                \"   <span></span><abbr class='select2-search-choice-close' style='display:none;'></abbr>\",\n                \"   <div><b></b></div>\" ,\n                \"</a>\",\n                \"<input class='select2-focusser select2-offscreen' type='text'/>\",\n                \"<div class='select2-drop' style='display:none'>\" ,\n                \"   <div class='select2-search'>\" ,\n                \"       <input type='text' autocomplete='off' class='select2-input'/>\" ,\n                \"   </div>\" ,\n                \"   <ul class='select2-results'>\" ,\n                \"   </ul>\" ,\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.parent.disable.apply(this, arguments);\n\n            this.focusser.attr(\"disabled\", \"disabled\");\n        },\n\n        // single\n        enable: function() {\n            if (this.enabled) return;\n\n            this.parent.enable.apply(this, arguments);\n\n            this.focusser.removeAttr(\"disabled\");\n        },\n\n        // single\n        opening: function () {\n            this.parent.opening.apply(this, arguments);\n            this.focusser.attr(\"disabled\", \"disabled\");\n\n            this.opts.element.trigger($.Event(\"open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n            this.focusser.removeAttr(\"disabled\");\n            focus(this.focusser);\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.removeAttr(\"disabled\");\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.removeAttr(\"disabled\");\n            this.focusser.focus();\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                clickingInside = false;\n\n            this.showSearch(this.opts.minimumResultsForSearch >= 0);\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            this.search.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.bind(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body().get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        this.search.focus();\n                    }), 0);\n                }\n            }));\n\n            this.focusser.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.bind(\"keyup-change input\", this.bind(function(e) {\n                if (this.opened()) return;\n                this.open();\n                if (this.showSearchInput !== false) {\n                    this.search.val(this.focusser.val());\n                }\n                this.focusser.val(\"\");\n                killEvent(e);\n            }));\n\n            selection.delegate(\"abbr\", \"mousedown\", this.bind(function (e) {\n                if (!this.enabled) return;\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n                this.selection.focus();\n            }));\n\n            selection.bind(\"mousedown\", this.bind(function (e) {\n                clickingInside = true;\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.enabled) {\n                    this.open();\n                }\n\n                killEvent(e);\n\n                clickingInside = false;\n            }));\n\n            dropdown.bind(\"mousedown\", this.bind(function() { this.search.focus(); }));\n\n            selection.bind(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.bind(\"focus\", this.bind(function(){\n                this.container.addClass(\"select2-container-active\");\n            })).bind(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                }\n            }));\n            this.search.bind(\"focus\", this.bind(function(){\n                this.container.addClass(\"select2-container-active\");\n            }))\n\n            this.initContainerWidth();\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                this.opts.element.val(\"\");\n                this.selection.find(\"span\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                    }\n                });\n            }\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments);\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\":selected\");\n                    // a single select box always has a value, no need to null check 'selected'\n                    if ($.isFunction(callback))\n                        callback({id: selected.attr(\"value\"), text: selected.text(), element:selected});\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without the first empty option ignore it\n            if (this.select) {\n                if (this.select.find(\"option\").first().text() !== \"\") {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.opts.element.val() === \"\" && placeholder !== undefined) {\n\n                // check for a first blank option if attached to a select\n                if (this.select && this.select.find(\"option:first\").text() !== \"\") return;\n\n                this.selection.find(\"span\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.selection.find(\"abbr\").hide();\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                this.highlight(selected);\n            }\n\n            // hide the search box if this is the first we got the results and there are a few of them\n\n            if (initial === true) {\n                var min=this.opts.minimumResultsForSearch;\n                showSearchInput  = min < 0 ? false : countResults(data.results) >= min;\n                this.showSearch(showSearchInput);\n            }\n\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\")[showSearchInput ? \"removeClass\" : \"addClass\"](\"select2-search-hidden\");\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container)[showSearchInput ? \"addClass\" : \"removeClass\"](\"select2-with-searchbox\");\n        },\n\n        // single\n        onSelect: function (data, options) {\n            var old = this.opts.element.val();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            this.close();\n\n            if (!options || !options.noFocus)\n                this.selection.focus();\n\n            if (!equal(old, this.id(data))) { this.triggerChange(); }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\"span\"), formatted;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            formatted=this.opts.formatSelection(data, container);\n            if (formatted !== undefined) {\n                container.append(this.opts.escapeMarkup(formatted));\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.selection.find(\"abbr\").show();\n            }\n        },\n\n        // single\n        val: function () {\n            var val, triggerChange = false, data = null, self = this;\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            if (this.select) {\n                this.select\n                    .val(val)\n                    .find(\":selected\").each2(function (i, elm) {\n                        data = {id: elm.attr(\"value\"), text: elm.text(), element: elm.get(0)};\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    if (triggerChange) {\n                        this.triggerChange();\n                    }\n                    return;\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange();\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (!value || value === \"\") {\n                    this.clear();\n                } else {\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"    <ul class='select2-choices'>\",\n                //\"<li class='select2-search-choice'><span>California</span><a href=\"javascript:void(0)\" class=\"select2-search-choice-close\"></a></li>\" ,\n                \"  <li class='select2-search-field'>\" ,\n                \"    <input type='text' autocomplete='off' class='select2-input'>\" ,\n                \"  </li>\" ,\n                \"</ul>\" ,\n                \"<div class='select2-drop select2-drop-multi' style='display:none;'>\" ,\n                \"   <ul class='select2-results'>\" ,\n                \"   </ul>\" ,\n                \"</div>\"].join(\"\"));\n\t\t\treturn container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments);\n\n            // TODO validate placeholder is a string if specified\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install sthe selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\":selected\").each2(function (i, elm) {\n                        data.push({id: elm.attr(\"value\"), text: elm.text(), element: elm[0]});\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(matches);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            this.search.bind(\"input paste\", this.bind(function() {\n                if (!this.enabled) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.BACKSPACE && this.search.val() === \"\") {\n                    this.close();\n\n                    var choices,\n                        selected = selection.find(\".select2-search-choice-focus\");\n                    if (selected.length > 0) {\n                        this.unselect(selected.first());\n                        this.search.width(10);\n                        killEvent(e);\n                        return;\n                    }\n\n                    choices = selection.find(\".select2-search-choice:not(.select2-locked)\");\n                    if (choices.length > 0) {\n                        choices.last().addClass(\"select2-search-choice-focus\");\n                    }\n                } else {\n                    selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                    case KEY.TAB:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n            }));\n\n            this.search.bind(\"keyup\", this.bind(this.resizeSearch));\n\n            this.search.bind(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n            }));\n\n            this.container.delegate(selector, \"mousedown\", this.bind(function (e) {\n                if (!this.enabled) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.clearPlaceholder();\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.delegate(selector, \"focus\", this.bind(function () {\n                if (!this.enabled) return;\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enable: function() {\n            if (this.enabled) return;\n\n            this.parent.enable.apply(this, arguments);\n\n            this.search.removeAttr(\"disabled\");\n        },\n\n        // multi\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.parent.disable.apply(this, arguments);\n\n            this.search.attr(\"disabled\", true);\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(this.getMaxSearchWidth());\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.parent.opening.apply(this, arguments);\n\n            this.clearPlaceholder();\n\t\t\tthis.resizeSearch();\n            this.focusSearch();\n\n            this.opts.element.trigger($.Event(\"open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n            this.opts.element.triggerHandler(\"focus\");\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = [], filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (indexOf(self.id(this), ids) < 0) {\n                    ids.push(self.id(this));\n                    filtered.push(this);\n                }\n            });\n            data = filtered;\n\n            this.selection.find(\".select2-search-choice\").remove();\n            $(data).each(function () {\n                self.addSelectedChoice(this);\n            });\n            self.postprocessResults();\n        },\n\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer(input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults();\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                val = this.getVal(),\n                formatted;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"));\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith(\"<div>\"+this.opts.escapeMarkup(formatted)+\"</div>\");\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .bind(\"mousedown\", killEvent)\n                  .bind(\"click dblclick\", this.bind(function (e) {\n                  if (!this.enabled) return;\n\n                  $(e.target).closest(\".select2-search-choice\").fadeOut('fast', this.bind(function(){\n                      this.unselect($(e.target));\n                      this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                      this.close();\n                      this.focusSearch();\n                  })).dequeue();\n                  killEvent(e);\n              })).bind(\"focus\", this.bind(function () {\n                  if (!this.enabled) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            val.push(id);\n            this.setVal(val);\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            index = indexOf(this.id(data), val);\n\n            if (index >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n        },\n\n        // multi\n        postprocessResults: function () {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesnt have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1){\n                self.highlight(0);\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n            \tsideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(searchWidth);\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            var unique;\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                unique = [];\n                // filter out duplicates\n                $(val).each(function () {\n                    if (indexOf(this, unique) < 0) unique.push(this);\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        val: function () {\n            var val, triggerChange = false, data = [], self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$(data).map(self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange();\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values) {\n            var self=this, ids;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .find(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            value, multiple, allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"positionDropdown\", \"data\"];\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.attr(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new MultiSelect2() : new SingleSelect2();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n                if (args[0] === \"container\") {\n                    value=select2.container;\n                } else {\n                    value = select2[args[0]].apply(select2, args.slice(1));\n                }\n                if (value !== undefined) {return false;}\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(result.text, query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        formatSelection: function (data, container) {\n            return data ? data.text : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return undefined;},\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" more character\" + (n == 1? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please enter \" + n + \" less character\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results...\"; },\n        formatSearching: function () { return \"Searching...\"; },\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e.id; },\n        matcher: function(term, text) {\n            return text.toUpperCase().indexOf(term.toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: function (markup) {\n            var replace_map = {\n                '\\\\': '&#92;',\n                '&': '&amp;',\n                '<': '&lt;',\n                '>': '&gt;',\n                '\"': '&quot;',\n                \"'\": '&apos;',\n                \"/\": '&#47;'\n            };\n\n            return String(markup).replace(/[&<>\"'/\\\\]/g, function (match) {\n                    return replace_map[match[0]];\n            });\n        },\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_de.js",
    "content": "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Keine Übereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie können nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"äge\") + \" auswählen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse...\"; },\n        formatSearching: function () { return \"Suche...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_es.js",
    "content": "/**\n * Select2 Spanish translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"No se encontraron resultados\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Por favor adicione \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Por favor elimine \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Solo puede seleccionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Cargando más resultados...\"; },\n        formatSearching: function () { return \"Buscando...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_fr.js",
    "content": "/**\n * Select2 French translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Aucun résultat trouvé\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Merci de saisir \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" de plus\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Merci de saisir \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" de moins\"; },\n        formatSelectionTooBig: function (limit) { return \"Vous pouvez seulement sélectionner \" + limit + \" élément\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Chargement de résultats supplémentaires...\"; },\n        formatSearching: function () { return \"Recherche en cours...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_hu.js",
    "content": "/**\n * Select2 Hungarian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nincs találat.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Túl rövid. Még \" + n + \" karakter hiányzik.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Túl hosszú. \" + n + \" kerekterrel több mint kellene.\"; },\n        formatSelectionTooBig: function (limit) { return \"Csak \" + limit + \" elemet lehet kiválasztani.\"; },\n        formatLoadMore: function (pageNumber) { return \"Töltés...\"; },\n        formatSearching: function () { return \"Keresés...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_it.js",
    "content": "/**\n * Select2 Italian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nessuna corrispondenza trovata\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Inserisci ancora \" + n + \" caratter\" + (n == 1? \"e\" : \"i\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Inserisci \" + n + \" caratter\" + (n == 1? \"e\" : \"i\") + \" in meno\"; },\n        formatSelectionTooBig: function (limit) { return \"Puoi selezionare solo \" + limit + \" element\" + (limit == 1 ? \"o\" : \"i\"); },\n        formatLoadMore: function (pageNumber) { return \"Caricamento in corso...\"; },\n        formatSearching: function () { return \"Ricerca...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_nl.js",
    "content": "/**\n * Select2 Dutch translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Geen resultaten gevonden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vul \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" meer in\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vul \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" minder in\"; },\n        formatSelectionTooBig: function (limit) { return \"Maximaal \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\") + \" toegestaan\"; },\n        formatLoadMore: function (pageNumber) { return \"Meer resultaten laden...\"; },\n        formatSearching: function () { return \"Zoeken...\"; },\n    });\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-BR.js",
    "content": "/**\n * Select2 Brazilian Portuguese translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Informe \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Carregando mais resultados...\"; },\n        formatSearching: function () { return \"Buscando...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-PT.js",
    "content": "/**\n * Select2 Portuguese (Portugal) translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduza \" + n + \" caracter\" + (n == 1 ? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1 ? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"A carregar mais resultados...\"; },\n        formatSearching: function () { return \"A pesquisar...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_ru.js",
    "content": "/**\n * Select2 Russian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Совпадений не найдено\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Пожалуйста, введите еще \" + n + \" символ\" + (n == 1 ? \"\" : ((n > 1)&&(n < 5) ? \"а\" : \"ов\")); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Пожалуйста, введите на \" + n + \" символ\" + (n == 1 ? \"\" : ((n > 1)&&(n < 5)? \"а\" : \"ов\")) + \" меньше\"; },\n        formatSelectionTooBig: function (limit) { return \"Вы можете выбрать не более \" + limit + \" элемент\" + (limit == 1 ? \"\" : ((limit > 1)&&(limit < 5)? \"а\" : \"ов\")); },\n        formatLoadMore: function (pageNumber) { return \"Загрузка данных...\"; },\n        formatSearching: function () { return \"Поиск...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/forms/select2/select2_locale_zh-CN.js",
    "content": "/**\n * Select2 Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"没有找到匹配项\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"请再输入\" + n + \"个字符\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"请删掉\" + n + \"个字符\";},\n        formatSelectionTooBig: function (limit) { return \"你只能选择最多\" + limit + \"项\"; },\n        formatLoadMore: function (pageNumber) { return \"加载结果中...\"; },\n        formatSearching: function () { return \"搜索中...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/data/demo.json",
    "content": "{\"markers\":[\n\t{ \"latitude\":57.7973333, \"longitude\":12.0502107, \"title\":\"Angered\", \"content\":\"Representing :)\" },\n\t{ \"latitude\":57.6969943, \"longitude\":11.9865, \"title\":\"Gothenburg\", \"content\":\"Swedens second largest city\" }\n]}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.extensions.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *      jquery.ui.map.js\n */\n( function($) {\n\n\t$.extend($.ui.gmap.prototype, {\n\t\t \n\t\t/**\n\t\t * Gets the current position\n\t\t * @param callback:function(position, status)\n\t\t * @param geoPositionOptions:object, see https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMGeoPositionOptions\n\t\t */\n\t\tgetCurrentPosition: function(callback, geoPositionOptions) {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition ( \n\t\t\t\t\tfunction(result) {\n\t\t\t\t\t\tcallback(result, 'OK');\n\t\t\t\t\t}, \n\t\t\t\t\tfunction(error) {\n\t\t\t\t\t\tcallback(null, error);\n\t\t\t\t\t}, \n\t\t\t\t\tgeoPositionOptions \n\t\t\t\t);\t\n\t\t\t} else {\n\t\t\t\tcallback(null, 'NOT_SUPPORTED');\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Watches current position\n\t\t * To clear watch, call navigator.geolocation.clearWatch(this.get('watch'));\n\t\t * @param callback:function(position, status)\n\t\t * @param geoPositionOptions:object, see https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMGeoPositionOptions\n\t\t */\n\t\twatchPosition: function(callback, geoPositionOptions) {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tthis.set('watch', navigator.geolocation.watchPosition ( \n\t\t\t\t\tfunction(result) {\n\t\t\t\t\t\tcallback(result, \"OK\");\n\t\t\t\t\t}, \n\t\t\t\t\tfunction(error) {\n\t\t\t\t\t\tcallback(null, error);\n\t\t\t\t\t}, \n\t\t\t\t\tgeoPositionOptions \n\t\t\t\t));\t\n\t\t\t} else {\n\t\t\t\tcallback(null, \"NOT_SUPPORTED\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Clears any watches\n\t\t */\n\t\tclearWatch: function() {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tnavigator.geolocation.clearWatch(this.get('watch'));\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Autocomplete using Google Geocoder\n\t\t * @param panel:string/node/jquery\n\t\t * @param callback:function(results, status)\n\t\t */\n\t\tautocomplete: function(panel, callback) {\n\t\t\tvar self = this;\n\t\t\t$(this._unwrap(panel)).autocomplete({\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\tself.search({'address':request.term}, function(results, status) {\n\t\t\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\t\t\tresponse( $.map( results, function(item) {\n\t\t\t\t\t\t\t\treturn { label: item.formatted_address, value: item.formatted_address, position: item.geometry.location }\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} else if ( status === 'OVER_QUERY_LIMIT' ) {\n\t\t\t\t\t\t\talert('Google said it\\'s too much!');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tminLength: 3,\n\t\t\t\tselect: function(event, ui) { \n\t\t\t\t\tself._call(callback, ui);\n\t\t\t\t},\n\t\t\t\topen: function() { $( this ).removeClass( \"ui-corner-all\" ).addClass( \"ui-corner-top\" ); },\n\t\t\t\tclose: function() { $( this ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-all\" ); }\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Retrieves a list of Places in a given area. The PlaceResultss passed to the callback are stripped-down versions of a full PlaceResult. A more detailed PlaceResult for each Place can be obtained by sending a Place Details request with the desired Place's reference value.\n\t\t * @param placeSearchRequest:google.maps.places.PlaceSearchRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceSearchRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\tplacesSearch: function(placeSearchRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).search(placeSearchRequest, callback);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Clears any directions\n\t\t */\n\t\tclearDirections: function() {\n\t\t\tvar directionsRenderer = this.get('services > DirectionsRenderer');\n\t\t\tif (directionsRenderer) {\n\t\t\t\tdirectionsRenderer.setMap(null);\n\t\t\t\tdirectionsRenderer.setPanel(null);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Page through the markers. Very simple version.\n\t\t * @param prop:the marker property to show in display, defaults to title\n\t\t */\n\t\tpagination: function(prop) {\n\t\t\tvar $el = $(\"<div id='pagination' class='pagination shadow gradient rounded clearfix'><div class='lt btn back-btn'></div><div class='lt display'></div><div class='rt btn fwd-btn'></div></div>\");\n\t\t\tvar self = this, i = 0, prop = prop || 'title';\n\t\t\tself.set('p_nav', function(a, b) {\n\t\t\t\tif (a) {\n\t\t\t\t\ti = i + b;\n\t\t\t\t\t$el.find('.display').text(self.get('markers')[i][prop]);\n\t\t\t\t\tself.get('map').panTo(self.get('markers')[i].getPosition());\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.get('p_nav')(true, 0);\n\t\t\t$el.find('.back-btn').click(function() {\n\t\t\t\tself.get('p_nav')((i > 0), -1, this);\n\t\t\t});\n\t\t\t$el.find('.fwd-btn').click(function() {\n\t\t\t\tself.get('p_nav')((i < self.get('markers').length - 1), 1, this);\n\t\t\t});\n\t\t\tself.addControl($el, google.maps.ControlPosition.TOP_LEFT);\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * A layer that displays data from Panoramio.\n\t\t * @param panoramioLayerOptions:google.maps.panoramio.PanoramioLayerOptions, http://code.google.com/apis/maps/documentation/javascript/reference.html#PanoramioLayerOptions\n\t\t */\n\t\t/*loadPanoramio: function(panoramioLayerOptions) {\n\t\t\tif ( !this.get('overlays').PanoramioLayer ) {\n\t\t\t\tthis.get('overlays').PanoramioLayer = new google.maps.panoramio.PanoramioLayer();\n\t\t\t}\n\t\t\tthis.get('overlays').PanoramioLayer.setOptions(jQuery.extend({'map': this.get('map') }, panoramioLayerOptions));\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Makes an elevation request along a path, where the elevation data are returned as distance-based samples along that path.\n\t\t * @param pathElevationRequest:google.maps.PathElevationRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PathElevationRequest\n\t\t * @param callback:function(result:google.maps.ElevationResult, status:google.maps.ElevationStatus), http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ElevationResult\n\t\t */\n\t\t/*elevationPath: function(pathElevationRequest, callback) {\n\t\t\tthis.get('services > ElevationService', new google.maps.ElevationService()).getElevationAlongPath(pathElevationRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Makes an elevation request for a list of discrete locations.\n\t\t * @param pathElevationRequest:google.maps.PathElevationRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PathElevationRequest\n\t\t * @param callback:function(result:google.maps.ElevationResult, status:google.maps.ElevationStatus), http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ElevationResult\n\t\t */\n\t\t/*elevationLocations: function(pathElevationRequest, callback) {\n\t\t\tthis.get('services > ElevationService', new google.maps.ElevationService()).getElevationForLocations(pathElevationRequest, callback);\n\t\t},*/\n\t\t\n\t\t/* PLACES SERVICE */\t\t\n\t\t\n\t\t/**\n\t\t * Retrieves a list of Places in a given area. The PlaceResultss passed to the callback are stripped-down versions of a full PlaceResult. A more detailed PlaceResult for each Place can be obtained by sending a Place Details request with the desired Place's reference value.\n\t\t * @param placeSearchRequest:google.maps.places.PlaceSearchRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceSearchRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\t/*placesSearch: function(placeSearchRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).search(placeSearchRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Retrieves details about the Place identified by the given reference.\n\t\t * @param placeDetailsRequest:google.maps.places.PlaceDetailsRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceDetailsRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\t/*placesDetails: function(placeDetailsRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).getDetails(placeDetailsRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * A service to predict the desired Place based on user input. The service is attached to an <input> field in the form of a drop-down list. The list of predictions is updated dynamically as text is typed into the input field. \n\t\t * @param panel:jquery/node/string\n\t\t * @param autocompleteOptions:google.maps.places.AutocompleteOptions, http://code.google.com/apis/maps/documentation/javascript/reference.html#AutocompleteOptions\n\t\t */\t\t\n\t\t/*placesAutocomplete: function(panel, autocompleteOptions) {\n\t\t\tthis.get('services > Autocomplete', new google.maps.places.Autocomplete(this._unwrap(panel)));\n\t\t},*/\n\t\t\n\t\t/* DISTANCE MATRIX SERVICE */\n\t\t\n\t\t/**\n\t\t * Issues a distance matrix request.\n\t\t * @param distanceMatrixRequest:google.maps.DistanceMatrixRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#DistanceMatrixRequest \n\t\t * @param callback:function(result:google.maps.DistanceMatrixResponse, status: google.maps.DistanceMatrixStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#DistanceMatrixResponse\n\t\t */\n\t\t/*displayDistanceMatrix: function(distanceMatrixRequest, callback) {\n\t\t\tthis.get('services > DistanceMatrixService', new google.maps.DistanceMatrixService()).getDistanceMatrix(distanceMatrixRequest, callback);\n\t\t}*/\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.js",
    "content": " /*!\n * jQuery FN Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n */\n( function($) {\n\t\n\t/**\n\t * @param name:string\n\t * @param prototype:object\n\t */\n\t$.a = function(name, prototype) {\n\t\t\n\t\tvar namespace = name.split('.')[0];\n        name = name.split('.')[1];\n\t\t\n\t\t$[namespace] = $[namespace] || {};\n\t\t$[namespace][name] = function(options, element) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\tthis._setup(options, element);\n\t\t\t}\n\t\t};\n\t\t\n\t\t$[namespace][name].prototype = $.extend({\n\t\t\t'namespace': namespace,\n\t\t\t'pluginName': name\n        }, prototype);\n\t\t\n\t\t$.fn[name] = function(options) {\n\t\t\t\n\t\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\t\targs = Array.prototype.slice.call(arguments, 1),\n\t\t\t\treturnValue = this;\n\t\t\t\n\t\t\tif ( isMethodCall && options.substring(0, 1) === '_' ) { \n\t\t\t\treturn returnValue; \n\t\t\t}\n\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data(this, name);\n\t\t\t\tif (!instance) {\n\t\t\t\t\tinstance = $.data(this, name, new $[namespace][name](options, this));\n\t\t\t\t}\n\t\t\t\tif (isMethodCall) {\n\t\t\t\t\treturnValue = instance[options].apply(instance, args);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\treturn returnValue; \n\t\t\t\n\t\t};\n\t\t\n\t};\n\t\n\t$.a('ui.gmap', {\n\t\t\n\t\t/**\n\t\t * Map options\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MapOptions\n\t\t */\n\t\toptions: {\n\t\t\tmapTypeId: 'roadmap',\n\t\t\tzoom: 5\t\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get or set options\n\t\t * @param key:string\n\t\t * @param options:object\n\t\t * @return object\n\t\t */\n\t\toption: function(key, options) {\n\t\t\tif (options) {\n\t\t\t\tthis.options[key] = options;\n\t\t\t\tthis.get('map').set(key, options);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\treturn this.options[key];\n\t\t},\n\t\t\n\t\t/**\n\t\t * Setup plugin basics, \n\t\t * @param options:object\n\t\t * @param element:node\n\t\t */\n\t\t_setup: function(options, element) {\n\t\t\tthis.el = element;\n\t\t\toptions = options || {};\n\t\t\tjQuery.extend(this.options, options, { 'center': this._latLng(options.center) });\n\t\t\tthis._create();\n\t\t\tif ( this._init ) { this._init(); }\n\t\t},\n\t\t\n\t\t/**\n\t\t * Instanciate the Google Maps object\n\t\t */\n\t\t_create: function() {\n\t\t\tvar self = this;\n\t\t\tthis.instance = { 'map': new google.maps.Map(self.el, self.options), 'markers': [], 'overlays': [], 'services': [] };\n\t\t\tgoogle.maps.event.addListenerOnce(self.instance.map, 'bounds_changed', function() { $(self.el).trigger('init', self.instance.map); });\n\t\t\tself._call(self.options.callback, self.instance.map);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a latitude longitude pair to the bounds.\n\t\t * @param position:google.maps.LatLng/string\n\t\t */\n\t\taddBounds: function(position) {\n\t\t\tvar bounds = this.get('bounds', new google.maps.LatLngBounds());\n\t\t\tbounds.extend(this._latLng(position));\n\t\t\tthis.get('map').fitBounds(bounds);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper function to check if a LatLng is within the viewport\n\t\t * @param marker:google.maps.Marker\n\t\t */\n\t\tinViewport: function(marker) {\n\t\t\tvar bounds = this.get('map').getBounds();\n\t\t\treturn (bounds) ? bounds.contains(marker.getPosition()) : false;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a custom control to the map\n\t\t * @param panel:jquery/node/string\t\n\t\t * @param position:google.maps.ControlPosition\t \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ControlPosition\n\t\t */\n\t\taddControl: function(panel, position) {\n\t\t\tthis.get('map').controls[position].push(this._unwrap(panel));\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a Marker to the map\n\t\t * @param markerOptions:google.maps.MarkerOptions\n\t\t * @param callback:function(map:google.maps.Map, marker:google.maps.Marker) (optional)\n\t\t * @return $(google.maps.Marker)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MarkerOptions\n\t\t */\n\t\taddMarker: function(markerOptions, callback) {\n\t\t\tmarkerOptions.map = this.get('map');\n\t\t\tmarkerOptions.position = this._latLng(markerOptions.position);\n\t\t\tvar marker = new (markerOptions.marker || google.maps.Marker)(markerOptions);\n\t\t\tvar markers = this.get('markers');\n\t\t\tif ( marker.id ) {\n\t\t\t\tmarkers[marker.id] = marker;\n\t\t\t} else {\n\t\t\t\tmarkers.push(marker);\n\t\t\t}\n\t\t\tif ( marker.bounds ) {\n\t\t\t\tthis.addBounds(marker.getPosition());\n\t\t\t}\n\t\t\tthis._call(callback, markerOptions.map, marker);\n\t\t\treturn $(marker);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Clears by type\n\t\t * @param ctx:string\te.g. 'markers', 'overlays', 'services'\n\t\t */\n\t\tclear: function(ctx) {\n\t\t\tthis._c(this.get(ctx));\n\t\t\tthis.set(ctx, []);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t_c: function(obj) {\n\t\t\tfor ( var property in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty(property) ) {\n\t\t\t\t\tif ( obj[property] instanceof google.maps.MVCObject ) {\n\t\t\t\t\t\tgoogle.maps.event.clearInstanceListeners(obj[property]);\n\t\t\t\t\t\tif ( obj[property].setMap ) {\n\t\t\t\t\t\t\tobj[property].setMap(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( obj[property] instanceof Array ) {\n\t\t\t\t\t\tthis._c(obj[property]);\n\t\t\t\t\t}\n\t\t\t\t\tobj[property] = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns the objects with a specific property and value, e.g. 'category', 'tags'\n\t\t * @param ctx:string\tin what context, e.g. 'markers' \n\t\t * @param options:object\tproperty:string\tthe property to search within, value:string, operator:string (optional) (AND/OR)\n\t\t * @param callback:function(marker:google.maps.Marker, isFound:boolean)\n\t\t */\n\t\tfind: function(ctx, options, callback) {\n\t\t\tvar obj = this.get(ctx);\n\t\t\toptions.value = $.isArray(options.value) ? options.value : [options.value];\n\t\t\tfor ( var property in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty(property) ) {\n\t\t\t\t\tvar isFound = false;\n\t\t\t\t\tfor ( var value in options.value ) {\n\t\t\t\t\t\tif ( $.inArray(options.value[value], obj[property][options.property]) > -1 ) {\n\t\t\t\t\t\t\tisFound = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif ( options.operator && options.operator === 'AND' ) {\n\t\t\t\t\t\t\t\tisFound = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(obj[property], isFound);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns an instance property by key. Has the ability to set an object if the property does not exist\n\t\t * @param key:string\n\t\t * @param value:object(optional)\n\t\t */\n\t\tget: function(key, value) {\n\t\t\tvar instance = this.instance;\n\t\t\tif ( !instance[key] ) {\n\t\t\t\tif ( key.indexOf('>') > -1 ) {\n\t\t\t\t\tvar e = key.replace(/ /g, '').split('>');\n\t\t\t\t\tfor ( var i = 0; i < e.length; i++ ) {\n\t\t\t\t\t\tif ( !instance[e[i]] ) {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tinstance[e[i]] = ( (i + 1) < e.length ) ? [] : value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinstance = instance[e[i]];\n\t\t\t\t\t}\n\t\t\t\t\treturn instance;\n\t\t\t\t} else if ( value && !instance[key] ) {\n\t\t\t\t\tthis.set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn instance[key];\n\t\t},\n\t\t\n\t\t/**\n\t\t * Triggers an InfoWindow to open\n\t\t * @param infoWindowOptions:google.maps.InfoWindowOptions\n\t\t * @param marker:google.maps.Marker (optional)\n\t\t * @param callback:function (optional)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#InfoWindowOptions\n\t\t */\n\t\topenInfoWindow: function(infoWindowOptions, marker, callback) {\n\t\t\tvar iw = this.get('iw', infoWindowOptions.infoWindow || new google.maps.InfoWindow);\n\t\t\tiw.setOptions(infoWindowOptions);\n\t\t\tiw.open(this.get('map'), this._unwrap(marker)); \n\t\t\tthis._call(callback, iw);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Triggers an InfoWindow to close\n\t\t */\n\t\tcloseInfoWindow: function() {\n\t\t\tif ( this.get('iw') != null ) {\n\t\t\t\tthis.get('iw').close();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\t\t\n\t\t/**\n\t\t * Sets an instance property\n\t\t * @param key:string\n\t\t * @param value:object\n\t\t */\n\t\tset: function(key, value) {\n\t\t\tthis.instance[key] = value;\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Refreshes the map\n\t\t */\n\t\trefresh: function() {\n\t\t\tvar map = this.get('map');\n\t\t\tvar latLng = map.getCenter();\n\t\t\t$(map).triggerEvent('resize');\n\t\t\tmap.setCenter(latLng);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t */\n\t\tdestroy: function() {\n\t\t\tthis.clear('markers').clear('services').clear('overlays')._c(this.instance);\n\t\t\tjQuery.removeData(this.el, this.name);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for calling a function\n\t\t * @param callback\n\t\t */\n\t\t_call: function(callback) {\n\t\t\tif ( callback && $.isFunction(callback) ) {\n\t\t\t\tcallback.apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for google.maps.Latlng\n\t\t * @param latLng:string/google.maps.LatLng\n\t\t */\n\t\t_latLng: function(latLng) {\n\t\t\tif ( !latLng ) {\n\t\t\t\treturn new google.maps.LatLng(0.0, 0.0);\n\t\t\t}\n\t\t\tif ( latLng instanceof google.maps.LatLng ) {\n\t\t\t\treturn latLng;\n\t\t\t} else {\n\t\t\t\tlatLng = latLng.replace(/ /g,'').split(',');\n\t\t\t\treturn new google.maps.LatLng(latLng[0], latLng[1]);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for unwrapping jQuery/DOM/string elements\n\t\t * @param obj:string/node/jQuery\n\t\t */\n\t\t_unwrap: function(obj) {\n\t\t\treturn (!obj) ? null : ( (obj instanceof jQuery) ? obj[0] : ((obj instanceof Object) ? obj : $('#'+obj)[0]) )\n\t\t}\n\t\t\n\t});\n\t\n\tjQuery.fn.extend( {\n\t\t\n\t\ttriggerEvent: function(eventType) {\n\t\t\tgoogle.maps.event.trigger(this[0], eventType);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\taddEventListener: function(eventType, eventDataOrCallback, eventCallback) {\n\t\t\tif ( google.maps && this[0] instanceof google.maps.MVCObject ) {\n\t\t\t\tgoogle.maps.event.addListener(this[0], eventType, eventDataOrCallback);\n\t\t\t} else {\n\t\t\t\tif (eventCallback) {\n\t\t\t\t\tthis.bind(eventType, eventDataOrCallback, eventCallback);\n\t\t\t\t} else {\n\t\t\t\t\tthis.bind(eventType, eventDataOrCallback);\n\t\t\t\t} \n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t  \n\t\t/*removeEventListener: function(eventType) {\n\t\t\tif ( google.maps && this[0] instanceof google.maps.MVCObject ) {\n\t\t\t\tif (eventType) {\n\t\t\t\t\tgoogle.maps.event.clearListeners(this[0], eventType);\n\t\t\t\t} else {\n\t\t\t\t\tgoogle.maps.event.clearInstanceListeners(this[0]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.unbind(eventType);\n\t\t\t}\n\t\t\treturn this;\n\t\t}*/\n\t\t\n\t});\n\t\n\tjQuery.each(('click rightclick dblclick mouseover mouseout drag dragend').split(' '), function(i, name) {\n\t\tjQuery.fn[name] = function(a, b) {\n\t\t\treturn this.addEventListener(name, a, b);\n\t\t}\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microdata.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-beta\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts microdata from the HTML by specified namespace \n\t\t * @param ns:string\n\t\t * @param callback:function(microdata:object, element:jQuery object, iterator:int)\n\t\t */\n\t\tmicrodata: function(ns, callback) { \n\t\t\tvar self = this;\n\t\t\t$('[itemtype=\"{0}\"]'.replace('{0}', ns)).each(function(i) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': self._resolveType($(this).attr('itemtype'))}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function(node, obj) {\n\t\t\tvar self = this;\n\t\t\tnode.children().each(function() {\n\t\t\t\tvar $this = $(this), itemType = $this.attr('itemtype'), itemProp = $this.attr('itemProp');\n\t\t\t\t// skip check for itemscope since we are only interested in typed items\n\t\t\t\tif ( itemType != undefined && $this.children().length > 0 ) {\n\t\t\t\t\tif ( !obj[itemProp] ) {\n\t\t\t\t\t\tobj[itemProp] = [];\n\t\t\t\t\t}\n\t\t\t\t\tobj[itemProp].push({'@type': self._resolveType(itemType)});\n\t\t\t\t\tself._traverse($this, obj[itemProp][obj[itemProp].length-1]);\t\t\t\t\t\n\t\t\t\t} else if ( itemProp ) {\n\t\t\t\t\tif ( obj[itemProp] ) {\n\t\t\t\t\t\t// In case any property is duplicated\n\t\t\t\t\t\tif ( typeof obj[itemProp] === 'string' ) {\n\t\t\t\t\t\t\tvar temp = obj[itemProp];\n\t\t\t\t\t\t\tobj[itemProp] = [];\n\t\t\t\t\t\t\tobj[itemProp].push(temp);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[itemProp].push(self._extract($this));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj[itemProp] = self._extract($this);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on element attribute\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_extract: function($el) {\n\t\t\tif ( $el.attr('src') ) {\n\t\t\t\treturn $el.attr('src');\n\t\t\t} else if ( $el.attr('href') ) {\n\t\t\t\treturn $el.attr('href');\n\t\t\t} else if ( $el.attr('content') ) {\n\t\t\t\treturn $el.attr('content');\n\t\t\t} else if ( $el.attr('datetime') ) {\n\t\t\t\treturn $el.attr('datetime');\n\t\t\t} else if ( $el.text() ) {\n\t\t\t\treturn $el.text();\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Removes any url or prefix\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_resolveType: function(type) {\n\t\t\tif ( type.indexOf('http') > -1 ) {\n\t\t\t\ttype = type.substr(type.lastIndexOf('/')+1).replace('?','').replace('#','');\n\t\t\t} else if ( type.indexOf(':') > -1 ) {\n\t\t\t\ttype = type.split(':')[1];\n\t\t\t}\n\t\t\treturn type;\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microformat.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-alpha\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts microformat from the HTML by specified root class\n\t\t * @param ns:string - the 'namespace'/root class\n\t\t * @param callback:function(microformat:object, element:jQuery object, iterator:int)\n\t\t */\n\t\tmicroformat: function(ns, callback) {\n\t\t\tvar self = this;\n\t\t\tjQuery.extend(self.get('properties', {}), {\n\t\t\t\t'additional-name': {},\n\t\t\t\t'adr': { 'hasChildren': true },\n\t\t\t\t'affiliation': {},\n\t\t\t\t'author': {},\n\t\t\t\t'bday': {},\n\t\t\t\t'category': { 'isMultivalued': true },\n\t\t\t\t'class': {},\n\t\t\t\t'contact': {},\n\t\t\t\t'country-name': {},\n\t\t\t\t'description': {},\n\t\t\t\t'dtend': {},\n\t\t\t\t'dtreviewed': {},\n\t\t\t\t'dtstart': {}, \n\t\t\t\t'education': {},\n\t\t\t\t'entry-content': {}, \n\t\t\t\t'entry-summary': {},\n\t\t\t\t'entry-title': {}, \n\t\t\t\t'email': { 'hasChildren': true }, \n\t\t\t\t'experience': {}, \t\t\t\t\t  \t\t\n\t\t\t\t'extended-address': {},\n\t\t\t\t'family-name': {}, \n\t\t\t\t'fn': {},\n\t\t\t\t'geo': { 'hasChildren': true }, \n\t\t\t\t'given-name': {}, \n\t\t\t\t'hentry': { 'isRoot': true }, \n\t\t\t\t'hfeed': { 'isRoot': true },\n\t\t\t\t'honorific-prefix': {}, \n\t\t\t\t'honorific-suffix': {},\n\t\t\t\t'hresume': { 'isRoot': true }, \n\t\t\t\t'hreview': { 'isRoot': true },\n\t\t\t\t'item': {},\n\t\t\t\t'key': { 'hasChildren': true },\n\t\t\t\t'label': {},\n\t\t\t\t'latitude': {},\n\t\t\t\t'locality': {},\n\t\t\t\t'location': { 'hasChildren': true },\n\t\t\t\t'logo': {},\n\t\t\t\t'longitude': {},\n\t\t\t\t'mailer': {},\n\t\t\t\t'n': { 'hasChildren': true },\n\t\t\t\t'nickname': { 'isMultivalued': true },\n\t\t\t\t'note': {},\n\t\t\t\t'org': { 'hasChildren': true },\n\t\t\t\t'organization-name': {},\n\t\t\t\t'organization-unit': {},\n\t\t\t\t'permalink': {},\n\t\t\t\t'photo': {},\n\t\t\t\t'post-office-box': {},\n\t\t\t\t'postal-code': {},\n\t\t\t\t'profile': { 'isRoot': true },\n\t\t\t\t'publications': {},\n\t\t\t\t'published': {},\n\t\t\t\t'rating': {},\n\t\t\t\t'region': {},\n\t\t\t\t'rev': {},\n\t\t\t\t'reviewer': {},\n\t\t\t\t'role': {},\n\t\t\t\t'skill': {},\n\t\t\t\t'sort-string': {},\n\t\t\t\t'sound': {},\n\t\t\t\t'street-address': {},\n\t\t\t\t'summary': {},\n\t\t\t\t'tel': { 'isMultivalued': true },\n\t\t\t\t'title': {},\n\t\t\t\t'type': {},\n\t\t\t\t'tz': {},\n\t\t\t\t'uid': {},\n\t\t\t\t'updated': {},\n\t\t\t\t'url': { 'isMultivalued': true },\n\t\t\t\t'value': {},\n\t\t\t\t'value-title': {},\n\t\t\t\t'vcalendar': { 'isRoot': true },\n\t\t\t\t'vcard': { 'isRoot': true },\n\t\t\t\t'vevent': { 'isRoot': true },\n\t\t\t\t'version': {},\n\t\t\t\t'xoxo': { 'isRoot': true }\n\t\t\t});\n\t\t\t$(ns).each(function(i, node) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': ns.replace('.','')}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function($el, obj) {\n\t\t\tvar self = this;\n\t\t\t$el.children().each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tif ($this.attr('class')) {\n\t\t\t\t\tvar temp = $this.attr('class').split(' '), cls = [], type;\n\t\t\t\t\t$.each(temp, function(itr, name) {\n\t\t\t\t\t\tif ( self.get('properties')[name] && self.get('properties')[name].isRoot ) {\n\t\t\t\t\t\t\ttype = name;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcls.push(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t$.each(cls, function(itr, className) {\n\t\t\t\t\t\tif ( self.get('properties')[className] ) {\n\t\t\t\t\t\t\ttype = type || className;\n\t\t\t\t\t\t\tif ( self.get('properties')[className].hasChildren && $this.children().length > 0 ) {\n\t\t\t\t\t\t\t\tif ( !obj[className] ) {\n\t\t\t\t\t\t\t\t\tobj[className] = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tobj[className].push({'@type': type});\n\t\t\t\t\t\t\t\tself._traverse($this, obj[className][obj[className].length-1]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif ( $this.children().length > 0 ) {\n\t\t\t\t\t\t\t\t\tobj[className] = {'@type': type};\n\t\t\t\t\t\t\t\t\tself._traverse($this, obj[className]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif ( self.get('properties')[className].isMultivalued ) {\n\t\t\t\t\t\t\t\t\t\tif ( !obj[className] ) {\n\t\t\t\t\t\t\t\t\t\t\tobj[className] = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tobj[className].push(self._extract($this, className));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tobj[className] = self._extract($this, className);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on class name and element attribute\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_extract: function($el, className) {\n\t\t\tif ( className === 'value-title' ) {\n\t\t\t\treturn $el.attr('title');\n\t\t\t} else if ( className === 'url' ) {\n\t\t\t\treturn $el.attr('href');\n\t\t\t}\n\t\t\tif ( $el.attr('src') ) {\n\t\t\t\treturn $el.attr('src');\n\t\t\t} else if ( $el.attr('content') ) {\n\t\t\t\treturn $el.attr('content');\n\t\t\t} else if ( $el.text() ) {\n\t\t\t\treturn $el.text();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t});\n\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.overlays.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *      jquery.ui.map.js\n */\n( function($) {\n\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Adds a shape to the map\n\t\t * @param shapeType:string Polygon, Polyline, Rectangle, Circle\n\t\t * @param shapeOptions:object\n\t\t * @return object\n\t\t */\n\t\taddShape: function(shapeType, shapeOptions) {\n\t\t\tvar shape = new google.maps[shapeType](jQuery.extend({'map': this.get('map')}, shapeOptions));\n\t\t\tthis.get('overlays > ' + shapeType, []).push(shape);\n\t\t\treturn $(shape);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds fusion data to the map.\n\t\t * @param fusionTableOptions:google.maps.FusionTablesLayerOptions, http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#FusionTablesLayerOptions\n\t\t * @param fusionTableId:int\n\t\t */\n\t\tloadFusion: function(fusionTableOptions, fusionTableId) {\n\t\t\t( (!fusionTableId) ? this.get('overlays > FusionTablesLayer', new google.maps.FusionTablesLayer()) : this.get('overlays > FusionTablesLayer', new google.maps.FusionTablesLayer(fusionTableId, fusionTableOptions)) ).setOptions(jQuery.extend({'map': this.get('map') }, fusionTableOptions));\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds markers from KML file or GeoRSS feed\n\t\t * @param uid:String - an identifier for the RSS e.g. 'rss_dogs'\n\t\t * @param url:String - URL to feed\n\t\t * @param kmlLayerOptions:google.maps.KmlLayerOptions, http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#KmlLayerOptions\n\t\t */\n\t\tloadKML: function(uid, url, kmlLayerOptions) {\n\t\t\tthis.get('overlays > ' + uid, new google.maps.KmlLayer(url, jQuery.extend({'map': this.get('map')}, kmlLayerOptions)));\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.rdfa.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-beta\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts RDFa from the HTML by specified namespace \n\t\t * @param ns:string\n\t\t * @param callback:function(microdata:object, element:jQuery object, iterator:int)\n\t\t */\n\t\trdfa: function(ns, callback) { \n\t\t\tvar self = this;\n\t\t\t$('[typeof=\"{0}\"]'.replace('{0}', ns)).each(function(i) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': self._resolveType($(this).attr('typeof'))}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function(node, obj) {\n\t\t\tvar self = this;\n\t\t\tnode.children().each( function() {\n\t\t\t\tvar $this = $(this), typeOf = self._resolveType($this.attr('typeof')), rel = self._resolveType($this.attr('rel')), property = self._resolveType($this.attr('property'));\n\t\t\t\tif ( typeOf || rel || property ) {\n\t\t\t\t\tif (rel) {\n\t\t\t\t\t\tif ( $this.children().length > 0 ) {\n\t\t\t\t\t\t\tobj[rel] = [];\n\t\t\t\t\t\t\tself._traverse($this, obj[rel]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[rel] = self._extract($this, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (typeOf) {\n\t\t\t\t\t\tobj.push({'@type': typeOf});\n\t\t\t\t\t\tself._traverse($this, obj[obj.length-1]);\n\t\t\t\t\t}\n\t\t\t\t\tif ( property ) {\n\t\t\t\t\t\tif ( obj[property] ) {\n\t\t\t\t\t\t\tobj[property] = [obj[property]];\n\t\t\t\t\t\t\tobj[property].push(self._extract($this, false));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[property] = self._extract($this, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on element attribute\n\t\t * @param $el:jQuery object\n\t\t * @param isLink:bool\n\t\t */\n\t\t_extract: function($el, isLink) {\n\t\t\tif (isLink) {\n\t\t\t\tif ( $el.attr('src') ) { return $el.attr('src'); }  \n\t\t\t\tif ( $el.attr('href') ) { return $el.attr('href'); } \n\t\t\t}\n\t\t\tif ( $el.attr('content') ) { return $el.attr('content'); }\n\t\t\tif ( $el.text() ) { return $el.text(); }\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Removes any url or prefix\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_resolveType: function(type) {\n\t\t\tif (type) {\n\t\t\t\tif ( type.indexOf('http') > -1 ) {\n\t\t\t\t\ttype = type.substr(type.lastIndexOf('/')+1).replace('?','').replace('#','');\n\t\t\t\t} else if ( type.indexOf(':') > -1 ) {\n\t\t\t\t\ttype = type.split(':')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn type;\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.services.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Computes directions between two or more places.\n\t\t * @param directionsRequest:google.maps.DirectionsRequest\n\t\t * @param directionsRendererOptions:google.maps.DirectionsRendererOptions (optional)\n\t\t * @param callback:function(result:google.maps.DirectionsResult, status:google.maps.DirectionsStatus)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsRequest\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsRendererOptions\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsResult\n\t\t */\n\t\tdisplayDirections: function(directionsRequest, directionsRendererOptions, callback) {\n\t\t\tvar self = this;\t\t\n\t\t\tvar directionService = this.get('services > DirectionsService', new google.maps.DirectionsService());\n\t\t\tvar directionRenderer = this.get('services > DirectionsRenderer', new google.maps.DirectionsRenderer());\n\t\t\tif ( directionsRendererOptions ) {\n\t\t\t\tdirectionRenderer.setOptions(directionsRendererOptions);\n\t\t\t}\n\t\t\tdirectionService.route(directionsRequest, function(results, status) {\n\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\tdirectionRenderer.setDirections(results);\n\t\t\t\t\tdirectionRenderer.setMap(self.get('map'));\n\t\t\t\t} else {\n\t\t\t\t\tdirectionRenderer.setMap(null);\n\t\t\t\t}\n\t\t\t\tcallback(results, status);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Displays the panorama for a given LatLng or panorama ID.\n\t\t * @param panel:jQuery/String/Node\n\t\t * @param streetViewPanoramaOptions:google.maps.StreetViewPanoramaOptions (optional) \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#StreetViewPanoramaOptions\n\t\t */\n\t\tdisplayStreetView: function(panel, streetViewPanoramaOptions) {\n\t\t\tthis.get('map').setStreetView(this.get('services > StreetViewPanorama', new google.maps.StreetViewPanorama(this._unwrap(panel), streetViewPanoramaOptions)));\n\t\t},\n\t\t\n\t\t/**\n\t\t * A service for converting between an address and a LatLng.\n\t\t * @param geocoderRequest:google.maps.GeocoderRequest\n\t\t * @param callback:function(result:google.maps.GeocoderResult, status:google.maps.GeocoderStatus), \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#GeocoderResult\n\t\t */\n\t\tsearch: function(geocoderRequest, callback) {\n\t\t\tthis.get('services > Geocoder', new google.maps.Geocoder()).geocode(geocoderRequest, callback);\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/elements.css",
    "content": ".jvm-legend {\n\tline-height: 2em;\n\tmargin-top: 5px;\n}\n\n.jvm-legend span {\n\tvertical-align: middle;\n}\n\n.jvm-legend-item {\n\twidth: 2em;\n\theight: 2em;\n\tdisplay: inline-block;\n}\n.jvm-legend span:not(.jvm-legend-item) { margin-right: 10px; }\n.jvm-legend span:last-child { margin-left: 0; }\n\n.jvm-legend-item-ps {\n\tbackground: #FF69B4;\n}\n\n.jvm-legend-item-ump {\n\tbackground: #4169E1;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.1.1.css",
    "content": ".jvectormap-label {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    position: absolute;\n    left: 10px;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    padding: 3px;\n    color: white;\n    width: 10px;\n    height: 10px;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.2.2.css",
    "content": ".jvectormap-label {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    position: absolute;\n    left: 10px;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    padding: 3px;\n    color: white;\n    width: 10px;\n    height: 10px;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/france-elections.json",
    "content": "{\"year2012\":{\"candidate1\":\"Hollande\",\"candidate2\":\"Sarkozy\",\"results\":{\"FR-J\":1,\"FR-G\":2,\"FR-S\":1,\"FR-Q\":1,\"FR-F\":2,\"FR-P\":1,\"FR-D\":1,\"FR-O\":1,\"FR-M\":2,\"FR-A\":2,\"FR-I\":2,\"FR-R\":1,\"FR-E\":1,\"FR-T\":1,\"FR-B\":1,\"FR-N\":1,\"FR-L\":1,\"FR-V\":2,\"FR-C\":1,\"FR-K\":1,\"FR-U\":2,\"FR-H\":2,\"FR-GP\":1,\"FR-MQ\":1,\"FR-GF\":1,\"FR-YT\":2}},\"year2007\":{\"candidate1\":\"Sarkozy\",\"candidate2\":\"Royal\",\"results\":{\"FR-J\":1,\"FR-G\":1,\"FR-S\":1,\"FR-Q\":1,\"FR-F\":1,\"FR-P\":1,\"FR-D\":1,\"FR-O\":1,\"FR-M\":1,\"FR-A\":1,\"FR-I\":1,\"FR-R\":1,\"FR-E\":2,\"FR-T\":2,\"FR-B\":2,\"FR-N\":2,\"FR-L\":2,\"FR-V\":1,\"FR-C\":2,\"FR-K\":1,\"FR-U\":1,\"FR-H\":1,\"FR-GP\":2,\"FR-MQ\":2,\"FR-GF\":1,\"FR-YT\":2}}}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/gdp-data.js",
    "content": "var gdpData = {\n  \"AF\": 16.63,\n  \"AL\": 11.58,\n  \"DZ\": 158.97,\n  \"AO\": 85.81,\n  \"AG\": 1.1,\n  \"AR\": 351.02,\n  \"AM\": 8.83,\n  \"AU\": 1219.72,\n  \"AT\": 366.26,\n  \"AZ\": 52.17,\n  \"BS\": 7.54,\n  \"BH\": 21.73,\n  \"BD\": 105.4,\n  \"BB\": 3.96,\n  \"BY\": 52.89,\n  \"BE\": 461.33,\n  \"BZ\": 1.43,\n  \"BJ\": 6.49,\n  \"BT\": 1.4,\n  \"BO\": 19.18,\n  \"BA\": 16.2,\n  \"BW\": 12.5,\n  \"BR\": 2023.53,\n  \"BN\": 11.96,\n  \"BG\": 44.84,\n  \"BF\": 8.67,\n  \"BI\": 1.47,\n  \"KH\": 11.36,\n  \"CM\": 21.88,\n  \"CA\": 1563.66,\n  \"CV\": 1.57,\n  \"CF\": 2.11,\n  \"TD\": 7.59,\n  \"CL\": 199.18,\n  \"CN\": 5745.13,\n  \"CO\": 283.11,\n  \"KM\": 0.56,\n  \"CD\": 12.6,\n  \"CG\": 11.88,\n  \"CR\": 35.02,\n  \"CI\": 22.38,\n  \"HR\": 59.92,\n  \"CY\": 22.75,\n  \"CZ\": 195.23,\n  \"DK\": 304.56,\n  \"DJ\": 1.14,\n  \"DM\": 0.38,\n  \"DO\": 50.87,\n  \"EC\": 61.49,\n  \"EG\": 216.83,\n  \"SV\": 21.8,\n  \"GQ\": 14.55,\n  \"ER\": 2.25,\n  \"EE\": 19.22,\n  \"ET\": 30.94,\n  \"FJ\": 3.15,\n  \"FI\": 231.98,\n  \"FR\": 2555.44,\n  \"GA\": 12.56,\n  \"GM\": 1.04,\n  \"GE\": 11.23,\n  \"DE\": 3305.9,\n  \"GH\": 18.06,\n  \"GR\": 305.01,\n  \"GD\": 0.65,\n  \"GT\": 40.77,\n  \"GN\": 4.34,\n  \"GW\": 0.83,\n  \"GY\": 2.2,\n  \"HT\": 6.5,\n  \"HN\": 15.34,\n  \"HK\": 226.49,\n  \"HU\": 132.28,\n  \"IS\": 12.77,\n  \"IN\": 1430.02,\n  \"ID\": 695.06,\n  \"IR\": 337.9,\n  \"IQ\": 84.14,\n  \"IE\": 204.14,\n  \"IL\": 201.25,\n  \"IT\": 2036.69,\n  \"JM\": 13.74,\n  \"JP\": 5390.9,\n  \"JO\": 27.13,\n  \"KZ\": 129.76,\n  \"KE\": 32.42,\n  \"KI\": 0.15,\n  \"KR\": 986.26,\n  \"UNDEFINED\": 5.73,\n  \"KW\": 117.32,\n  \"KG\": 4.44,\n  \"LA\": 6.34,\n  \"LV\": 23.39,\n  \"LB\": 39.15,\n  \"LS\": 1.8,\n  \"LR\": 0.98,\n  \"LY\": 77.91,\n  \"LT\": 35.73,\n  \"LU\": 52.43,\n  \"MK\": 9.58,\n  \"MG\": 8.33,\n  \"MW\": 5.04,\n  \"MY\": 218.95,\n  \"MV\": 1.43,\n  \"ML\": 9.08,\n  \"MT\": 7.8,\n  \"MR\": 3.49,\n  \"MU\": 9.43,\n  \"MX\": 1004.04,\n  \"MD\": 5.36,\n  \"MN\": 5.81,\n  \"ME\": 3.88,\n  \"MA\": 91.7,\n  \"MZ\": 10.21,\n  \"MM\": 35.65,\n  \"NA\": 11.45,\n  \"NP\": 15.11,\n  \"NL\": 770.31,\n  \"NZ\": 138,\n  \"NI\": 6.38,\n  \"NE\": 5.6,\n  \"NG\": 206.66,\n  \"NO\": 413.51,\n  \"OM\": 53.78,\n  \"PK\": 174.79,\n  \"PA\": 27.2,\n  \"PG\": 8.81,\n  \"PY\": 17.17,\n  \"PE\": 153.55,\n  \"PH\": 189.06,\n  \"PL\": 438.88,\n  \"PT\": 223.7,\n  \"QA\": 126.52,\n  \"RO\": 158.39,\n  \"RU\": 1476.91,\n  \"RW\": 5.69,\n  \"WS\": 0.55,\n  \"ST\": 0.19,\n  \"SA\": 434.44,\n  \"SN\": 12.66,\n  \"RS\": 38.92,\n  \"SC\": 0.92,\n  \"SL\": 1.9,\n  \"SG\": 217.38,\n  \"SK\": 86.26,\n  \"SI\": 46.44,\n  \"SB\": 0.67,\n  \"ZA\": 354.41,\n  \"ES\": 1374.78,\n  \"LK\": 48.24,\n  \"KN\": 0.56,\n  \"LC\": 1,\n  \"VC\": 0.58,\n  \"SD\": 65.93,\n  \"SR\": 3.3,\n  \"SZ\": 3.17,\n  \"SE\": 444.59,\n  \"CH\": 522.44,\n  \"SY\": 59.63,\n  \"TW\": 426.98,\n  \"TJ\": 5.58,\n  \"TZ\": 22.43,\n  \"TH\": 312.61,\n  \"TL\": 0.62,\n  \"TG\": 3.07,\n  \"TO\": 0.3,\n  \"TT\": 21.2,\n  \"TN\": 43.86,\n  \"TR\": 729.05,\n  \"TM\": 0,\n  \"UG\": 17.12,\n  \"UA\": 136.56,\n  \"AE\": 239.65,\n  \"GB\": 2258.57,\n  \"US\": 14624.18,\n  \"UY\": 40.71,\n  \"UZ\": 37.72,\n  \"VU\": 0.72,\n  \"VE\": 285.21,\n  \"VN\": 101.99,\n  \"YE\": 30.02,\n  \"ZM\": 15.69,\n  \"ZW\": 5.57\n};"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json",
    "content": "{\"states\":{\"2005\":{\"US-AL\":7.2,\"US-AK\":8.6,\"US-AZ\":6.3,\"US-AR\":6.9,\"US-CA\":7.2,\"US-CO\":6.2,\"US-CT\":6.3,\"US-DE\":5.6,\"US-DC\":9.1,\"US-FL\":6.3,\"US-GA\":7.4,\"US-HI\":4.4,\"US-ID\":5.8,\"US-IL\":7.9,\"US-IN\":6.9,\"US-IA\":5.1,\"US-KS\":5.5,\"US-KY\":7.5,\"US-LA\":9.0,\"US-ME\":5.7,\"US-MD\":5.7,\"US-MA\":6.4,\"US-MI\":8.9,\"US-MN\":5.5,\"US-MS\":9.3,\"US-MO\":6.7,\"US-MT\":5.3,\"US-NE\":4.9,\"US-NV\":5.8,\"US-NH\":4.8,\"US-NJ\":6.3,\"US-NM\":7.3,\"US-NY\":7.0,\"US-NC\":7.1,\"US-ND\":3.8,\"US-OH\":7.4,\"US-OK\":6.6,\"US-OR\":7.5,\"US-PA\":6.7,\"US-RI\":6.1,\"US-SC\":8.0,\"US-SD\":4.9,\"US-TN\":7.1,\"US-TX\":7.6,\"US-UT\":5.3,\"US-VT\":5.3,\"US-VA\":5.2,\"US-WA\":7.2,\"US-WV\":7.2,\"US-WI\":6.2,\"US-WY\":5.3},\"2006\":{\"US-AL\":6.9,\"US-AK\":9.4,\"US-AZ\":4.9,\"US-AR\":7.0,\"US-CA\":6.6,\"US-CO\":5.5,\"US-CT\":6.2,\"US-DE\":5.9,\"US-DC\":8.5,\"US-FL\":5.5,\"US-GA\":6.9,\"US-HI\":4.4,\"US-ID\":5.3,\"US-IL\":7.2,\"US-IN\":6.9,\"US-IA\":4.9,\"US-KS\":5.3,\"US-KY\":6.9,\"US-LA\":7.8,\"US-ME\":5.3,\"US-MD\":5.3,\"US-MA\":5.8,\"US-MI\":9.5,\"US-MN\":5.2,\"US-MS\":8.9,\"US-MO\":6.3,\"US-MT\":4.8,\"US-NE\":4.8,\"US-NV\":5.2,\"US-NH\":4.5,\"US-NJ\":6.3,\"US-NM\":6.4,\"US-NY\":6.5,\"US-NC\":6.6,\"US-ND\":3.3,\"US-OH\":7.1,\"US-OK\":6.0,\"US-OR\":6.3,\"US-PA\":6.2,\"US-RI\":5.9,\"US-SC\":7.4,\"US-SD\":4.3,\"US-TN\":7.4,\"US-TX\":7.0,\"US-UT\":4.4,\"US-VT\":4.8,\"US-VA\":4.7,\"US-WA\":6.4,\"US-WV\":6.8,\"US-WI\":5.5,\"US-WY\":3.5},\"2007\":{\"US-AL\":6.7,\"US-AK\":8.8,\"US-AZ\":5.8,\"US-AR\":7.2,\"US-CA\":6.6,\"US-CO\":5.5,\"US-CT\":6.0,\"US-DE\":5.6,\"US-DC\":8.1,\"US-FL\":6.2,\"US-GA\":7.0,\"US-HI\":4.5,\"US-ID\":5.1,\"US-IL\":7.2,\"US-IN\":6.6,\"US-IA\":4.8,\"US-KS\":5.1,\"US-KY\":6.6,\"US-LA\":6.4,\"US-ME\":6.0,\"US-MD\":5.5,\"US-MA\":6.1,\"US-MI\":9.6,\"US-MN\":5.4,\"US-MS\":9.3,\"US-MO\":6.3,\"US-MT\":5.2,\"US-NE\":4.6,\"US-NV\":5.6,\"US-NH\":5.1,\"US-NJ\":5.9,\"US-NM\":5.6,\"US-NY\":6.2,\"US-NC\":6.9,\"US-ND\":3.5,\"US-OH\":7.2,\"US-OK\":5.4,\"US-OR\":6.5,\"US-PA\":5.9,\"US-RI\":6.3,\"US-SC\":6.9,\"US-SD\":4.1,\"US-TN\":6.9,\"US-TX\":5.9,\"US-UT\":3.8,\"US-VT\":5.1,\"US-VA\":4.8,\"US-WA\":6.0,\"US-WV\":6.2,\"US-WI\":5.7,\"US-WY\":3.7},\"2008\":{\"US-AL\":7.0,\"US-AK\":7.7,\"US-AZ\":6.1,\"US-AR\":6.6,\"US-CA\":7.5,\"US-CO\":4.9,\"US-CT\":6.4,\"US-DE\":6.6,\"US-DC\":7.8,\"US-FL\":7.5,\"US-GA\":7.0,\"US-HI\":4.1,\"US-ID\":5.5,\"US-IL\":6.9,\"US-IN\":6.9,\"US-IA\":3.9,\"US-KS\":4.4,\"US-KY\":6.9,\"US-LA\":6.0,\"US-ME\":5.9,\"US-MD\":5.4,\"US-MA\":6.0,\"US-MI\":9.5,\"US-MN\":4.9,\"US-MS\":7.8,\"US-MO\":6.1,\"US-MT\":4.7,\"US-NE\":4.0,\"US-NV\":7.3,\"US-NH\":4.5,\"US-NJ\":5.9,\"US-NM\":6.0,\"US-NY\":6.3,\"US-NC\":6.8,\"US-ND\":3.2,\"US-OH\":7.0,\"US-OK\":4.6,\"US-OR\":6.7,\"US-PA\":5.7,\"US-RI\":7.5,\"US-SC\":7.7,\"US-SD\":3.7,\"US-TN\":6.9,\"US-TX\":5.2,\"US-UT\":4.0,\"US-VT\":4.9,\"US-VA\":4.9,\"US-WA\":5.6,\"US-WV\":5.7,\"US-WI\":5.1,\"US-WY\":3.3},\"2009\":{\"US-AL\":11.1,\"US-AK\":9.5,\"US-AZ\":10.6,\"US-AR\":9.1,\"US-CA\":11.3,\"US-CO\":8.5,\"US-CT\":9.2,\"US-DE\":8.6,\"US-DC\":11.1,\"US-FL\":12.1,\"US-GA\":11.2,\"US-HI\":7.1,\"US-ID\":9.6,\"US-IL\":10.6,\"US-IN\":11.0,\"US-IA\":6.0,\"US-KS\":7.2,\"US-KY\":10.1,\"US-LA\":8.4,\"US-ME\":7.2,\"US-MD\":8.0,\"US-MA\":9.1,\"US-MI\":14.7,\"US-MN\":8.2,\"US-MS\":10.7,\"US-MO\":9.0,\"US-MT\":7.9,\"US-NE\":6.0,\"US-NV\":12.1,\"US-NH\":7.8,\"US-NJ\":9.8,\"US-NM\":9.0,\"US-NY\":9.0,\"US-NC\":11.0,\"US-ND\":3.8,\"US-OH\":11.1,\"US-OK\":6.8,\"US-OR\":11.8,\"US-PA\":9.1,\"US-RI\":9.6,\"US-SC\":11.7,\"US-SD\":5.2,\"US-TN\":11.1,\"US-TX\":8.2,\"US-UT\":7.8,\"US-VT\":7.6,\"US-VA\":7.4,\"US-WA\":9.5,\"US-WV\":7.7,\"US-WI\":8.2,\"US-WY\":5.9}},\"metro\":{\"codes\":[\"3100000US12060\",\"3100000US12420\",\"3100000US12580\",\"3100000US13820\",\"3100000US14460\",\"3100000US15380\",\"3100000US16740\",\"3100000US16980\",\"3100000US17140\",\"3100000US17460\",\"3100000US18140\",\"3100000US19100\",\"3100000US19740\",\"3100000US19820\",\"3100000US25540\",\"3100000US26420\",\"3100000US26900\",\"3100000US27260\",\"3100000US28140\",\"3100000US29820\",\"3100000US31100\",\"3100000US31140\",\"3100000US32820\",\"3100000US33100\",\"3100000US33340\",\"3100000US33460\",\"3100000US34980\",\"3100000US35380\",\"3100000US35620\",\"3100000US36420\",\"3100000US36740\",\"3100000US37980\",\"3100000US38060\",\"3100000US38300\",\"3100000US38900\",\"3100000US39300\",\"3100000US39580\",\"3100000US40060\",\"3100000US40140\",\"3100000US40380\",\"3100000US40900\",\"3100000US41180\",\"3100000US41620\",\"3100000US41700\",\"3100000US41740\",\"3100000US41860\",\"3100000US41940\",\"3100000US42660\",\"3100000US45300\",\"3100000US46060\",\"3100000US47260\",\"3100000US47900\"],\"coords\":[[33.9783241,-84.4783064],[30.51220349999999,-97.67312530000001],[39.4014955,-76.6019125],[33.37857109999999,-86.80439],[43.1938516,-71.5723953],[43.0026291,-78.8223134],[33.836081,-81.1637245],[41.7435073,-88.0118473],[39.1031182,-84.5120196],[41.6661573,-81.339552],[39.9611755,-82.99879419999999],[32.735687,-97.10806559999999],[39.9205411,-105.0866504],[42.8105356,-83.0790865],[41.754166,-72.624443],[29.7355047,-94.97742740000001],[39.978371,-86.1180435],[30.3321838,-81.65565099999999],[39.0653602,-94.5624426],[36.0849963,-115.1511364],[34.0596149,-118.1122679],[38.3964426,-85.4375574],[35.0387247,-89.8505012],[26.2378597,-80.1247667],[43.0166806,-88.0070315],[44.9389111,-93.1177555],[35.8905359,-86.7618425],[29.984544,-90.2042505],[40.7143528,-74.00597309999999],[35.4675602,-97.5164276],[28.2919557,-81.40757099999999],[39.8373479,-75.1545381],[33.48374,-111.9164779],[40.44062479999999,-79.9958864],[45.5809394,-122.7077056],[41.679407,-71.104972],[35.772096,-78.6386145],[37.5407246,-77.4360481],[34.0633443,-117.6508876],[43.16103,-77.6109219],[38.672006,-121.367741],[38.6105426,-90.3371889],[40.7607793,-111.8910474],[29.4241219,-98.49362819999999],[33.0763386,-117.2205771],[37.6788056,-122.2880726],[37.3666767,-121.958687],[47.610377,-122.2006786],[27.9249117,-82.5943072],[32.2217429,-110.926479],[36.9211118,-76.32017549999999],[38.9897306,-77.41000939999999]],\"names\":[\"Atlanta-Sandy Springs-Marietta, GA\",\"Austin-Round Rock, TX\",\"Baltimore-Towson, MD\",\"Birmingham-Hoover, AL\",\"Boston-Cambridge-Quincy, MA-NH\",\"Buffalo-Niagara Falls, NY\",\"Charlotte-Gastonia-Concord, NC-SC\",\"Chicago-Naperville-Joliet, IL-IN-WI\",\"Cincinnati-Middletown, OH-KY-IN\",\"Cleveland-Elyria-Mentor, OH\",\"Columbus, OH\",\"Dallas-Fort Worth-Arlington, TX\",\"Denver-Aurora-Broomfield, CO\",\"Detroit-Warren-Livonia, MI\",\"Hartford-West Hartford-East Hartford, CT\",\"Houston-Sugar Land-Baytown, TX\",\"Indianapolis-Carmel, IN\",\"Jacksonville, FL\",\"Kansas City, MO-KS\",\"Las Vegas-Paradise, NV\",\"Los Angeles-Long Beach-Santa Ana, CA\",\"Louisville-Jefferson County, KY-IN\",\"Memphis, TN-MS-AR\",\"Miami-Fort Lauderdale-Pompano Beach, FL\",\"Milwaukee-Waukesha-West Allis, WI\",\"Minneapolis-St. Paul-Bloomington, MN-WI\",\"Nashville-Davidson--Murfreesboro--Franklin, TN\",\"New Orleans-Metairie-Kenner, LA\",\"New York-Northern New Jersey-Long Island, NY-NJ-PA\",\"Oklahoma City, OK\",\"Orlando-Kissimmee, FL\",\"Philadelphia-Camden-Wilmington, PA-NJ-DE-MD\",\"Phoenix-Mesa-Scottsdale, AZ\",\"Pittsburgh, PA\",\"Portland-Vancouver-Beaverton, OR-WA\",\"Providence-New Bedford-Fall River, RI-MA\",\"Raleigh-Cary, NC\",\"Richmond, VA\",\"Riverside-San Bernardino-Ontario, CA\",\"Rochester, NY\",\"Sacramento--Arden-Arcade--Roseville, CA\",\"St. Louis, MO-IL\",\"Salt Lake City, UT\",\"San Antonio, TX\",\"San Diego-Carlsbad-San Marcos, CA\",\"San Francisco-Oakland-Fremont, CA\",\"San Jose-Sunnyvale-Santa Clara, CA\",\"Seattle-Tacoma-Bellevue, WA\",\"Tampa-St. Petersburg-Clearwater, FL\",\"Tucson, AZ\",\"Virginia Beach-Norfolk-Newport News, VA-NC\",\"Washington-Arlington-Alexandria, DC-VA-MD-WV\"],\"population\":{\"2005\":[4828838,1406364,2583923,1069498,4270631,1111554,1491330,9272117,2026216,2082379,1665428,5727391,2327901,4428941,1140319,5193448,1608730,1223882,1909666,1691213,12703423,1183916,1236181,5334685,1480517,3076239,1384347,1292774,18351099,1124533,1903273,5644383,3805123,2314937,2063277,1565972,924415,1132036,3827946,996309,2004476,2725336,1017572,1844018,2824259,4071751,1726057,3133715,2596556,902720,1585416,5119490],\"2006\":[5134871,1506425,2658405,1089883,4455217,1137520,1582627,9506859,2105010,2114155,1725570,6006094,2408622,4468966,1188841,5542048,1669370,1276856,1966790,1777539,12950129,1220636,1268328,5463857,1509981,3175041,1455296,1024678,18818536,1173632,1984855,5826742,4039182,2370776,2137599,1612989,995662,1196411,4026135,1035435,2067117,2793988,1067190,1948437,2941454,4180027,1784826,3263497,2697731,946362,1647400,5288670],\"2007\":[5271550,1593400,2668056,1106765,4482857,1128183,1650667,9522879,2134864,2096471,1754337,6144489,2466591,4467592,1189113,5629127,1697964,1296676,1980977,1836333,12875587,1228764,1283579,5413212,1544398,3208212,1521751,1030363,18815988,1193698,2032496,5827962,4179427,2355712,2174631,1600856,1049674,1211608,4081371,1030495,2091120,2802282,1095693,1997969,2974859,4203898,1803549,3309347,2723949,967089,1658215,5306125],\"2008\":[5368070,1650887,2667117,1117348,4522858,1124309,1701600,9568532,2155435,2088291,1773120,6303407,2502881,4425110,1190512,5722952,1715128,1315218,2001074,1865746,12872808,1244363,1288506,5414772,1549308,3229878,1552922,1134029,19006798,1202714,2054574,5838471,4281899,2351192,2209114,1596611,1086404,1230502,4115871,1034090,2109832,2813373,1112866,2032024,3001072,4274531,1819087,3344813,2733761,1012018,1657534,5356474],\"2009\":[5476664,1705075,2690886,1131070,4588680,1123804,1745524,9580609,2170828,2091286,1801848,6447228,2554474,4403437,1195998,5865086,1744680,1327812,2066732,1902834,12874797,1259031,1304905,5547051,1559667,3269814,1581908,1189981,19069796,1227278,2082421,5968252,4364094,2354957,2241913,1600642,1125827,1235458,4143113,1035566,2127355,2825769,1130293,2073092,3053793,4317853,1839883,3407848,2747272,1020200,1675792,5476241]},\"unemployment\":{\"2005\":[7.0,6.7,6.0,6.2,5.9,8.1,7.7,8.0,6.6,8.1,6.8,7.1,6.2,9.8,6.8,8.0,6.8,6.0,6.3,6.2,6.9,7.3,8.5,7.1,7.5,5.5,5.7,10.2,6.8,6.4,6.2,6.9,5.5,6.6,7.6,6.6,5.1,5.6,7.3,6.0,6.7,6.9,5.3,6.5,5.5,7.1,6.8,6.6,5.8,6.8,6.3,5.0],\"2006\":[7.1,6.0,5.3,6.4,5.4,6.1,6.5,7.5,6.4,7.9,6.4,6.7,5.7,10.5,6.3,7.3,6.5,5.8,5.7,5.3,6.1,6.8,9.2,5.6,6.1,5.3,5.9,7.9,6.5,5.6,5.4,6.8,4.2,5.9,6.1,6.1,4.9,5.8,7.4,6.4,6.7,6.6,4.4,6.7,5.0,6.0,6.1,5.5,5.5,6.3,4.7,4.6],\"2007\":[7.2,5.3,5.7,6.7,5.7,6.6,7.1,7.2,5.8,8.0,5.9,5.6,5.4,10.7,5.9,5.9,5.7,6.6,5.9,5.5,6.0,6.5,9.0,5.7,6.3,5.6,5.7,6.2,6.0,5.3,5.8,6.6,5.2,5.5,6.2,6.5,4.5,5.7,7.8,6.3,6.9,6.7,3.9,5.8,6.1,5.5,5.4,5.0,6.5,6.1,5.4,4.7],\"2008\":[7.2,5.4,5.5,6.4,5.6,6.5,6.6,7.1,5.8,7.8,5.5,5.4,4.8,10.4,5.8,5.2,6.3,6.8,5.6,7.3,6.7,6.7,8.5,7.2,5.5,5.1,5.2,6.8,6.1,4.5,7.4,6.5,5.3,5.2,6.7,7.3,5.4,6.0,10.0,5.9,8.0,6.3,3.7,5.5,6.9,6.2,6.0,4.7,7.4,6.9,5.3,4.9],\"2009\":[11.6,8.1,7.9,9.9,8.6,9.4,11.1,11.3,9.7,12.0,8.6,8.8,8.7,16.3,8.4,7.6,9.9,10.3,8.2,12.1,10.5,10.1,11.8,11.7,9.2,8.4,9.4,9.1,9.3,6.4,12.6,9.9,10.3,8.3,11.6,10.3,8.5,8.7,14.4,8.3,11.9,9.5,7.8,7.8,9.6,9.8,10.5,8.6,11.7,10.3,7.9,7.3]}}}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-de-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'de_merc_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 1223.8430164619706, \"bbox\": [{\"y\": -7378324.527735717, \"x\": 651774.9220426602}, {\"y\": -5989544.791406314, \"x\": 1673067.4782643116}], \"left\": 0}], \"paths\": {\"DE-BE\": {\"path\": \"M710.96,440.04l2.46,-4.08l-0.74,-2.47l0.48,-2.76l1.43,-1.17l2.76,-3.42l-0.06,-1.12l-1.49,-2.7l0.73,-8.19l-0.34,-1.59l0.66,-1.8l4.92,1.95l1.12,-0.08l0.34,-0.81l-0.73,-2.2l1.06,-3.37l2.86,-0.48l1.08,-0.61l1.16,-1.09l1.37,-2.69l0.66,0.02l0.24,3.25l0.83,1.09l1.82,0.8l3.7,0.26l1.88,-0.6l0.87,-1.69l2.0,-1.67l1.64,1.09l1.02,-0.05l0.87,-1.44l2.34,-2.09l2.49,2.98l-0.22,3.78l0.49,1.72l6.52,7.61l4.25,2.98l3.32,0.95l0.06,0.82l-2.29,5.42l0.16,2.02l4.03,-0.21l1.09,0.58l1.94,2.43l3.86,1.75l1.27,1.34l-1.08,1.5l-0.47,3.04l-2.57,2.53l-0.43,1.22l-0.05,3.97l-3.1,1.49l-1.67,3.08l-0.45,-0.09l-0.56,-5.11l-1.19,-1.5l-1.77,0.03l-2.39,-0.8l-5.73,-2.61l-1.47,0.22l-1.05,0.87l-1.63,-0.07l-1.5,-2.36l-1.1,-0.55l-2.66,0.73l-0.84,0.62l-0.37,1.03l0.22,3.35l-2.67,-0.02l-1.64,-0.79l-2.96,-3.35l-3.68,0.97l-1.14,-1.98l-0.54,-0.29l-4.05,1.65l-2.27,-1.73l-1.46,-0.24l-4.23,1.95l-1.4,1.29l-3.62,-0.79l-2.35,-1.71Z\", \"name\": \"Berlin\"}, \"DE-ST\": {\"path\": \"M511.79,466.89l-0.19,-2.32l-0.7,-0.44l-1.04,0.15l-2.76,-3.9l1.68,-1.94l0.2,-0.98l-1.16,-2.7l-1.94,-1.17l-0.28,-1.74l1.63,-0.79l4.59,-0.93l0.63,-0.97l0.35,-2.41l-0.71,-1.37l-2.88,-2.43l-2.59,-1.34l-6.93,-9.3l0.21,-2.09l1.0,-2.72l1.58,-0.71l2.7,0.41l0.63,-0.69l-0.79,-1.85l-3.95,-5.86l-0.66,-2.68l0.16,-3.99l2.53,-3.1l0.28,-1.55l-0.56,-0.79l-1.71,-0.55l-2.66,1.4l-4.13,-5.88l-4.69,-9.5l-1.66,-1.12l-1.11,-0.05l-0.75,-0.81l-0.72,-4.15l-1.93,-2.25l-1.65,-3.87l0.2,-7.77l3.27,-1.5l4.54,-0.34l4.3,0.2l5.62,-1.97l1.86,-0.99l2.94,-2.87l0.97,-3.92l1.3,-0.77l3.38,-0.06l5.48,1.9l5.8,-0.42l4.6,0.87l2.33,1.58l0.9,1.52l0.85,0.44l1.18,-0.25l1.82,-1.22l0.82,0.32l2.16,-0.13l5.94,-2.55l3.5,-0.95l6.05,-5.65l2.56,-0.25l0.67,-0.54l-0.49,-4.32l0.54,-3.6l0.7,-1.79l1.22,-0.57l1.34,0.43l1.51,-0.09l1.11,-0.9l1.84,-5.16l3.98,-1.11l0.67,0.45l0.04,1.21l-1.26,2.19l0.1,0.63l1.51,0.74l3.13,0.13l0.93,0.69l0.82,3.56l0.78,1.19l1.92,0.3l4.71,-2.06l2.83,4.33l1.46,1.2l3.21,0.23l0.85,0.5l-0.43,1.53l-1.19,1.86l0.01,1.13l6.37,4.31l2.87,0.62l3.9,2.08l1.8,0.4l1.63,-0.6l9.52,-0.73l1.26,1.82l-0.1,1.76l0.35,0.42l2.54,0.14l3.73,-1.08l2.58,1.01l0.9,1.63l1.95,7.11l-0.38,1.6l-3.4,3.24l0.13,2.03l1.17,2.44l-1.23,1.35l-0.58,1.36l2.01,5.57l1.72,1.93l-0.22,2.66l-1.96,4.88l-1.62,0.75l-1.93,-0.11l-0.74,0.36l-1.09,9.03l-2.71,4.59l0.91,0.85l2.89,-0.06l-1.55,2.53l0.34,2.08l0.89,0.9l1.43,0.36l2.27,-0.7l1.13,-1.26l0.85,-2.62l1.4,0.72l2.74,3.78l3.4,-0.48l-0.53,1.36l-0.13,3.41l-2.01,4.44l-1.84,2.01l0.95,2.91l-0.77,2.88l-1.73,3.62l-0.24,3.01l0.55,2.85l-1.33,2.64l-1.56,5.1l0.37,3.89l1.15,1.45l1.27,0.39l1.31,2.34l-2.49,2.98l-2.25,6.41l1.74,4.46l2.91,3.03l1.02,2.69l2.47,1.5l1.76,1.92l6.04,8.22l0.44,2.9l6.16,4.89l2.58,-0.11l1.13,-1.53l0.66,0.02l2.52,3.08l6.45,4.66l4.89,0.9l1.34,-1.33l2.5,-1.42l0.8,-1.79l0.76,0.01l12.48,7.63l4.91,0.77l1.31,0.93l1.19,3.39l0.65,0.55l5.47,0.32l2.89,0.82l2.89,3.51l5.51,3.88l1.89,0.76l6.62,-0.75l2.64,2.05l0.52,-0.14l1.63,-2.54l3.54,0.15l1.43,0.62l-0.67,1.56l-3.36,3.81l-3.59,6.03l0.11,6.61l2.2,5.14l-0.29,1.69l-2.65,3.63l-6.68,5.45l-1.94,3.5l-1.34,-0.34l-2.04,-2.14l-1.47,-0.84l-3.02,1.36l-1.32,-1.55l-5.97,-2.67l-1.43,-2.45l-2.85,0.28l-1.14,1.48l-5.05,4.22l-1.68,0.79l-2.82,-1.22l-3.88,-0.46l-1.59,0.98l-1.73,3.18l-1.87,1.62l-0.7,0.07l-1.23,-0.89l-9.29,1.63l-1.32,-0.89l-7.92,-0.32l-1.23,0.71l-0.39,3.02l-0.6,1.22l-7.2,0.73l-5.73,2.6l-2.87,-0.32l-3.48,-1.32l-1.13,2.89l-2.81,2.39l-0.15,7.63l-0.4,1.65l-3.26,3.33l-0.18,0.66l0.24,3.33l0.87,1.84l0.25,6.13l1.44,3.78l-0.02,3.0l-0.62,1.26l-1.8,0.22l-1.27,1.06l-0.99,1.85l-0.44,2.31l0.75,2.46l0.13,3.19l1.92,2.71l0.34,1.47l0.33,4.48l-0.42,1.5l-0.98,1.36l-0.04,1.45l2.99,1.22l-0.38,4.14l1.02,1.98l2.07,1.96l0.73,3.2l0.69,0.55l3.84,0.76l0.13,0.8l-1.67,3.02l-0.51,3.28l0.45,0.92l1.87,0.94l0.79,1.77l-2.3,4.57l-3.4,4.33l-0.28,1.47l0.32,1.26l-1.45,1.21l-0.43,-0.04l-0.73,-1.27l-2.49,-2.32l-0.85,-0.35l-2.78,1.41l-5.62,-1.82l-6.67,1.07l-0.46,-1.6l-3.15,-1.71l-1.4,-2.81l-1.47,-1.39l-4.85,-2.22l-2.28,-1.7l-1.31,-0.22l-8.74,0.77l-1.28,0.91l-0.45,-0.19l-1.15,-1.06l-0.5,-2.07l-2.27,-4.35l-0.38,-3.78l-2.77,-2.17l-4.1,0.75l-9.16,-0.71l-2.94,1.71l-5.26,-0.27l-1.77,-0.87l-1.16,-3.59l1.07,-1.09l-0.77,-5.0l-3.16,-4.8l-4.35,-2.3l-0.97,-1.55l1.11,-1.6l4.81,-0.91l2.69,-1.52l2.11,-2.49l0.87,-2.0l-5.66,-8.78l-2.67,-5.06l-5.24,-4.19l-2.67,-0.93l-9.17,-1.37l-4.2,0.08l-15.08,-1.86l-2.43,-1.39l-0.69,-1.32l0.67,-6.12l-2.55,-5.14l0.11,-3.74l-2.01,-2.73l-1.37,-3.94l-0.05,-0.75l0.44,-0.46l2.31,0.61l1.13,-0.89l-0.07,-1.79l-0.89,-2.07l-5.11,-1.88l-1.47,-1.29l-2.79,-0.06l-4.44,-2.33l-8.84,0.21l-1.36,-0.87l-2.71,-4.96l0.01,-3.6l-0.54,-2.39l-1.96,-2.27l-2.46,-5.9l-3.33,-3.09l-0.67,-4.1l0.36,-6.53l2.08,-1.27l1.03,-1.6l1.38,-0.82l1.23,-2.14l0.13,-1.41l-0.6,-3.28l-2.15,-1.94l0.47,-2.82l2.24,-1.44l0.45,-1.05l-0.41,-0.52l-1.39,0.08l-1.35,-1.59l-2.28,-1.14l-0.26,-1.39l-1.71,-3.04l0.64,-0.35l2.89,0.32l1.4,-0.46l2.94,-3.11l0.09,-1.88l0.66,-0.39l5.48,-0.87l13.01,-0.0l4.53,-1.32l5.81,0.09l0.98,-0.4l0.81,-1.67l0.02,-2.13l-0.39,-0.79l-1.7,-1.35l-0.02,-0.58l6.27,-2.92l2.44,-2.09l1.88,-2.91l0.15,-1.55l-0.43,-1.9l-0.96,-0.88l-1.5,-0.38l-0.91,-1.92l0.9,-2.41l0.7,-0.74l3.37,-1.16l1.22,-1.18l0.28,-2.58l-0.3,-1.37l-0.97,-0.82l-0.97,0.96Z\", \"name\": \"Sachsen-Anhalt\"}, \"DE-RP\": {\"path\": \"M24.68,808.29l1.03,-5.97l1.86,-4.29l-0.36,-1.2l-0.91,-0.81l0.6,-2.57l3.41,-1.09l0.77,-1.76l0.05,-1.88l-0.56,-1.74l-1.16,-1.36l2.95,-2.56l1.0,-1.51l6.1,-2.08l1.96,-1.72l-0.12,-3.11l1.51,-2.47l1.15,-0.67l3.37,0.76l2.74,-0.48l1.45,-1.43l0.04,-0.98l2.22,-0.05l2.75,-1.46l-0.04,-1.52l-3.15,-5.07l0.23,-1.07l0.62,0.02l1.45,2.08l2.25,1.42l0.83,2.34l0.84,0.54l2.39,-0.87l4.61,-3.4l5.5,-1.3l3.23,1.56l-0.46,1.94l0.97,0.65l1.26,-0.03l3.22,-1.81l2.78,2.71l1.86,0.47l7.83,-2.21l0.79,-1.6l-0.34,-1.57l-1.61,-3.04l-0.38,-4.8l-0.56,-0.82l-1.87,-1.1l0.81,-2.56l-0.1,-2.33l5.26,-2.24l1.29,2.43l1.3,1.09l1.55,0.41l1.45,-0.24l1.71,-2.59l0.23,-3.13l-0.47,-3.75l2.64,-1.04l2.52,-3.85l5.73,-1.77l6.06,-4.03l3.16,1.03l1.41,-0.64l1.08,-2.11l2.21,0.76l1.32,-0.32l3.31,-2.99l1.11,-2.64l1.36,0.63l1.11,1.88l5.61,0.4l5.8,-1.59l3.39,-2.58l0.19,-2.1l0.88,-1.77l0.09,-3.98l-0.36,-0.68l0.43,-0.48l2.19,-0.65l3.75,0.3l8.22,-2.3l3.88,-2.17l2.83,0.18l1.83,-2.93l4.31,-1.88l1.39,-2.17l1.04,0.64l1.05,-0.59l0.25,-2.65l-1.99,-2.55l3.3,-2.03l2.37,-2.59l2.46,0.86l0.88,-0.68l0.05,-2.73l-1.22,-3.12l-0.36,-3.78l0.29,-1.56l2.9,-2.8l1.07,-0.32l5.25,1.47l-1.36,5.45l0.1,1.17l1.45,1.19l2.59,0.9l3.7,3.96l1.88,1.45l2.66,-0.77l1.21,4.97l-0.23,4.73l1.05,2.01l4.14,5.4l1.6,2.84l0.66,2.66l1.14,0.33l2.95,-1.17l3.43,1.82l-1.37,5.18l2.01,5.01l0.36,2.37l0.67,1.4l1.2,1.11l-2.51,6.58l-2.09,1.83l-1.74,0.15l-2.49,-2.78l-1.65,-0.09l-1.89,0.77l-1.52,2.08l-1.7,1.34l-0.42,1.92l-0.09,6.68l0.69,1.05l1.2,0.73l-1.76,2.0l-1.23,4.28l-1.14,0.96l-0.3,0.97l0.95,1.16l4.35,1.11l0.51,1.64l1.77,0.94l2.92,6.18l2.06,1.74l0.6,1.18l1.42,4.64l-0.09,1.47l-2.09,0.88l-5.1,-0.14l-0.86,0.8l-0.55,1.81l0.97,1.85l-1.72,2.76l-0.79,-0.24l-1.56,-1.55l-0.67,-0.05l-1.3,1.38l-5.75,3.02l-1.25,1.81l-1.42,4.27l0.14,1.31l0.75,1.0l2.49,1.74l-0.81,3.76l-2.11,-1.87l-3.96,0.42l-1.3,1.98l-0.72,3.29l-6.57,4.67l-0.04,0.6l1.41,0.82l6.26,5.68l0.66,1.13l0.35,2.0l2.1,2.78l4.08,-0.16l4.26,-1.41l4.75,-2.5l3.81,-2.9l12.18,-4.15l3.62,0.18l1.38,0.89l10.45,11.9l1.86,4.99l-1.43,5.4l3.95,7.36l0.91,4.12l3.37,7.37l2.19,0.11l1.94,-0.44l0.96,0.38l-0.2,1.13l-3.25,4.48l-3.21,0.66l-2.8,1.96l-1.71,3.14l-0.17,4.01l3.91,8.37l1.6,4.55l-0.76,3.85l1.88,3.14l3.49,9.22l0.0,0.7l-1.85,0.92l-0.22,1.39l1.93,1.04l3.25,0.74l0.81,1.34l-1.29,3.09l0.73,5.13l-3.49,7.91l-0.22,1.37l0.26,0.44l1.99,0.71l-0.27,1.45l-6.66,7.88l-2.44,1.97l-2.95,18.33l-7.19,14.87l-2.03,3.17l-3.09,3.33l-2.57,0.94l-1.24,-1.08l-9.59,-1.99l-15.65,-8.34l-1.86,-0.22l-5.51,0.59l-8.1,-2.35l-4.72,1.84l-4.03,-1.06l-3.62,1.05l-1.17,-0.28l-2.59,-3.6l-2.3,-1.18l-4.21,-0.73l-2.02,-1.28l-4.7,-6.5l1.09,-1.32l-0.91,-2.44l-1.89,-0.67l-3.95,-0.27l-0.71,-1.69l-1.9,-0.17l-1.76,0.5l-2.22,-0.24l-1.72,-1.49l-3.41,-3.78l-0.62,-4.94l0.64,-1.31l1.99,-0.24l1.44,-1.99l0.75,-3.33l1.47,-1.7l0.58,-2.71l1.94,-1.7l0.91,-1.51l-0.32,-1.96l0.66,-1.97l-0.53,-1.35l-1.19,-0.78l-7.86,-2.1l0.28,-0.8l-0.3,-0.78l-3.98,-4.82l-0.54,-2.03l3.11,-3.51l2.62,-1.77l0.42,-1.41l-0.35,-2.04l-1.18,-0.66l-0.25,-4.03l-1.15,-2.32l-0.57,-1.84l-0.01,-2.22l-0.53,-0.54l-0.66,-0.06l-2.8,1.81l-2.7,0.27l-4.62,-3.36l-2.25,-2.16l-7.08,-0.59l-6.52,-3.71l-2.79,1.56l-0.83,-0.68l-2.21,-0.68l-8.2,5.11l-14.4,6.66l-1.71,0.34l-2.5,-0.18l-6.26,2.86l-11.26,-0.54l-13.41,1.23l0.13,-5.79l0.53,-1.56l3.99,-5.42l2.06,-3.93l-0.18,-1.43l-1.24,-1.17l1.36,-1.9l7.15,-4.65l-0.44,-1.89l1.32,0.05l-1.3,-3.54l0.06,-1.15l0.95,-0.99l-0.21,-2.34l0.76,-5.17l-0.8,-0.7l-3.32,-0.9l-4.77,-0.02l-1.59,-0.44l-6.1,-4.78l-1.07,-0.08l-1.93,0.85l-1.67,-3.94l-4.74,-2.41l-1.43,-1.45l-3.23,-7.78l-1.67,-2.74l-0.7,0.03l-0.73,1.44l-1.87,-4.92l-1.71,-2.63l-0.74,-6.02l-0.67,-1.36l-0.89,-0.59l1.07,-1.89l-0.27,-0.63l-0.59,-0.0Z\", \"name\": \"Rheinland-Pfalz\"}, \"DE-BB\": {\"path\": \"M719.86,603.29l-0.83,-2.8l1.63,-1.91l0.76,-2.25l0.17,-4.02l-0.18,-1.36l-0.85,-1.4l1.66,-1.39l0.42,-0.97l-0.75,-4.41l-0.71,-1.73l-2.13,-1.36l-0.84,-1.21l0.6,-3.11l-0.6,-1.42l-2.95,-2.22l-1.63,0.48l-0.58,-0.23l-1.27,-0.87l-2.71,-3.34l-0.87,-0.39l1.78,-3.23l6.61,-5.38l2.81,-3.83l0.37,-2.27l-2.2,-5.1l-0.11,-6.3l3.46,-5.74l3.41,-3.89l0.85,-1.98l-0.21,-0.52l-1.99,-0.84l-3.92,-0.12l-0.87,0.68l-0.99,1.89l-1.64,-1.67l-0.93,-0.3l-6.52,0.76l-1.67,-0.66l-5.44,-3.83l-2.98,-3.58l-3.18,-0.91l-5.19,-0.23l-1.54,-3.67l-1.61,-1.2l-4.91,-0.77l-12.52,-7.65l-1.41,-0.05l-1.04,1.99l-2.41,1.35l-1.28,1.26l-4.25,-0.94l-1.61,-0.94l-4.54,-3.55l-1.95,-2.6l-1.19,-0.83l-1.1,0.32l-0.91,1.39l-2.43,-0.1l-5.31,-4.38l-0.43,-2.88l-6.13,-8.34l-1.83,-1.99l-2.35,-1.37l-1.04,-2.72l-2.57,-2.55l-1.12,-2.2l-0.76,-2.69l2.15,-5.63l2.19,-2.31l0.4,-1.0l-1.55,-2.88l-1.44,-0.54l-0.84,-1.09l-0.22,-4.26l2.8,-6.94l-0.55,-3.0l0.23,-2.85l1.68,-3.43l0.82,-3.09l-0.97,-2.79l1.77,-1.82l2.03,-4.48l0.2,-3.66l0.64,-1.84l-0.69,-0.54l-3.32,0.67l-2.5,-3.63l-2.02,-0.94l-0.91,0.65l-0.56,2.37l-0.66,0.83l-2.1,0.73l-1.07,-0.3l-0.62,-0.89l-0.13,-1.26l1.54,-2.26l-0.04,-0.67l-0.99,-0.63l-2.75,0.1l2.68,-4.3l1.02,-8.8l2.12,0.08l2.09,-1.02l1.13,-2.02l1.01,-3.22l0.2,-3.08l-1.77,-2.05l-0.61,-2.35l-1.28,-2.41l0.04,-0.78l1.76,-2.28l-1.2,-2.72l-0.15,-1.58l3.26,-2.96l0.57,-2.13l-2.59,-8.65l-0.72,-0.83l-2.93,-1.08l-3.82,1.08l-1.97,-0.09l0.06,-1.65l-0.51,-1.18l-1.67,-1.28l-7.01,0.86l-2.42,-0.08l-1.53,0.59l-1.49,-0.31l-4.0,-2.12l-2.71,-0.55l-6.1,-4.13l1.27,-2.2l0.35,-2.34l-1.38,-0.76l-2.94,-0.14l-1.22,-0.99l-2.95,-4.5l-1.94,0.17l-3.45,1.77l-1.42,-0.26l-1.36,-4.57l-1.35,-0.91l-3.16,-0.13l-0.79,-0.41l1.12,-2.31l-0.05,-1.49l-1.17,-0.98l-4.55,1.13l-4.69,-1.87l-4.01,-0.97l-2.86,-2.99l-2.42,-0.83l-2.28,0.47l-3.28,2.27l-1.66,0.46l-2.52,-0.6l-4.47,-4.85l-1.32,-2.56l6.93,0.33l2.21,0.98l1.94,0.28l0.45,-0.37l0.42,-3.83l1.26,-0.63l3.01,0.0l5.25,3.0l3.04,-0.28l2.13,-1.74l0.68,-2.62l-0.99,-5.27l-1.3,-1.83l-0.21,-1.01l0.53,-1.42l4.25,-3.94l1.87,-1.23l5.25,-1.99l3.23,-0.19l1.01,0.36l2.98,2.47l1.18,2.72l0.58,0.18l3.98,-1.98l5.09,0.25l0.43,-0.45l-0.31,-2.3l-1.68,-1.49l1.07,-0.51l2.97,0.51l2.24,-2.74l5.25,-2.2l2.11,0.63l3.54,-3.22l1.43,-0.24l1.23,-2.81l0.16,-2.22l2.44,-1.68l1.43,-2.56l3.01,-1.28l2.5,-0.52l1.86,1.79l0.85,0.24l4.11,-2.4l0.89,0.37l2.34,3.93l6.9,1.91l4.12,2.44l4.62,4.16l2.81,1.61l1.59,2.11l1.7,0.37l3.5,-0.25l2.96,-0.78l10.86,2.69l1.2,0.58l2.78,2.77l7.13,1.67l0.38,4.13l1.26,1.09l1.36,0.13l4.26,-0.94l1.28,0.09l1.22,0.44l1.45,1.22l1.65,0.42l3.88,-0.88l2.71,-0.04l1.73,-0.72l0.25,0.9l-1.37,1.74l0.84,1.24l2.46,1.07l2.74,-0.41l4.7,-5.04l5.1,-3.79l0.83,-1.15l0.64,-2.18l3.07,-2.62l0.65,-0.22l1.08,0.35l2.25,3.33l1.37,0.59l2.75,-0.0l0.39,-0.32l0.59,-3.24l1.23,-2.89l1.53,-1.78l1.46,-0.74l2.44,-0.24l1.96,0.4l3.99,2.13l2.03,0.45l1.85,-0.68l5.11,-4.14l1.11,-0.42l2.52,-2.95l3.17,-7.73l1.25,-4.89l1.27,-1.21l1.7,-0.91l3.65,-0.25l2.3,-2.18l1.8,-3.27l5.81,-5.01l3.35,-0.49l3.31,0.25l3.09,-1.32l0.23,-0.45l-0.5,-2.15l-2.41,-4.54l0.15,-2.51l1.07,0.16l2.54,3.86l4.34,1.7l0.19,3.51l2.81,5.15l0.56,2.32l1.89,2.48l6.84,-0.51l5.75,0.42l4.55,1.36l2.3,-2.85l2.15,-0.45l3.59,1.77l4.07,-0.25l1.93,0.43l0.14,4.01l-0.45,2.99l-1.49,3.51l-3.45,5.53l-8.18,5.54l-0.27,3.54l0.34,0.39l7.85,1.57l6.75,0.55l1.52,-1.24l0.56,-2.12l2.57,-1.31l2.7,-3.52l6.09,-3.78l1.04,8.42l3.66,4.44l-2.41,4.77l-2.71,3.08l-0.75,2.09l-0.29,2.37l1.14,7.25l-3.2,10.55l-1.26,2.84l-2.96,3.09l-5.73,4.6l-5.99,3.15l-4.91,3.86l2.01,10.45l-0.39,2.97l-0.95,1.84l-2.54,2.22l-0.1,0.48l1.12,2.28l1.82,1.48l4.39,0.89l1.82,0.8l3.26,3.83l2.65,1.42l10.37,7.67l1.46,1.71l3.41,6.72l1.14,1.06l1.76,0.83l2.94,3.93l5.79,2.31l6.19,6.98l2.85,2.37l-2.61,5.52l-0.79,3.83l1.86,1.98l0.38,1.48l-1.55,3.63l-2.33,3.7l-5.04,4.46l0.42,6.73l2.35,7.1l2.02,4.59l-0.47,3.14l2.32,2.56l3.32,1.72l5.44,1.8l1.41,2.6l-0.03,3.04l-1.92,2.68l0.06,1.21l1.35,2.1l-1.41,5.06l-0.58,4.36l1.11,2.46l6.06,4.55l-2.35,3.35l-0.93,4.45l-2.66,5.43l-0.37,9.8l-0.8,3.03l-3.24,5.17l-5.62,5.74l-1.4,3.06l0.35,3.55l1.62,2.48l1.82,1.31l1.25,1.68l0.39,4.14l1.1,4.19l2.26,2.66l4.7,3.91l1.21,2.62l0.95,3.93l0.15,4.04l-1.12,3.06l-1.92,3.1l-0.81,3.06l0.13,0.88l-3.66,-0.17l-6.56,-3.17l-2.37,-0.46l-2.15,0.1l-4.25,1.21l-12.99,6.53l-3.58,0.83l-3.26,-2.18l-3.6,-1.33l-4.85,-0.61l-6.21,1.52l-3.95,2.19l-1.29,1.17l-3.89,5.1l-0.66,1.41l-0.17,2.38l-1.47,3.48l-7.15,10.72l-0.62,0.22l-2.28,-0.64l-16.83,2.1l-14.84,-1.15l-5.83,-1.72l-2.12,0.37l-0.96,-0.4l-1.65,-2.44l-2.5,-1.7l-2.15,-2.14l-4.85,-2.37l-2.43,0.29l-2.42,1.8l-10.55,3.53l-1.24,-1.98l-2.09,-0.73l-0.78,0.95l-1.17,0.03l-1.36,1.66ZM712.59,435.76l-0.84,0.95l-1.57,3.47l3.19,2.44l3.89,0.67l1.46,-1.35l3.95,-1.86l0.99,0.15l2.61,1.82l4.07,-1.55l0.77,1.71l0.64,0.4l3.68,-0.95l2.85,3.28l1.97,0.9l3.1,0.02l0.59,-1.53l-0.28,-2.94l0.64,-0.58l2.21,-0.67l0.69,0.35l1.11,2.09l0.76,0.46l2.02,0.06l1.22,-0.93l1.01,-0.13l5.51,2.56l2.56,0.84l1.57,-0.08l0.78,1.06l0.5,4.89l0.6,0.84l1.28,-0.28l1.57,-3.02l2.57,-0.93l0.69,-0.75l0.38,-1.19l-0.21,-3.13l0.68,-1.44l2.21,-1.97l0.53,-3.16l0.96,-0.91l0.17,-1.03l-1.58,-1.83l-3.93,-1.8l-1.78,-2.3l-1.41,-0.79l-3.7,0.36l0.03,-1.24l2.28,-5.36l-0.06,-1.42l-3.7,-1.27l-4.13,-2.89l-6.41,-7.49l-0.32,-1.28l0.19,-3.97l-3.12,-3.55l-0.77,0.15l-2.3,2.2l-0.68,1.26l-2.55,-1.12l-2.28,1.91l-0.89,1.7l-1.29,0.35l-3.57,-0.25l-1.5,-0.67l-0.5,-0.63l-0.26,-3.67l-1.71,-0.14l-0.75,0.58l-1.01,2.43l-1.0,0.91l-4.15,1.34l-1.15,3.72l0.73,2.29l-5.25,-2.09l-0.72,0.21l-1.08,2.54l0.35,1.59l-0.73,8.26l1.54,2.91l0.01,0.72l-4.13,4.39l-0.54,3.1l0.71,2.24Z\", \"name\": \"Brandenburg\"}, \"DE-NI\": {\"path\": \"M81.02,419.89l1.19,-0.14l5.45,-2.77l0.08,-0.66l-3.76,-3.59l0.61,-3.96l-0.71,-1.62l3.13,-2.28l3.17,-0.99l9.2,-0.14l5.14,1.56l4.91,-0.7l4.91,1.7l0.48,-0.2l1.83,-3.59l0.72,-5.73l0.91,-17.47l0.85,-5.39l1.71,-4.85l8.04,-12.69l2.19,-5.6l0.9,-5.26l0.15,-5.89l-0.91,-11.7l-1.21,-3.36l-0.07,-1.86l2.29,-7.71l0.31,-2.62l-0.31,-6.99l1.99,-1.74l1.76,-3.01l0.38,-2.07l-0.68,-1.84l2.31,-3.51l1.15,-0.59l2.13,-0.03l2.01,0.53l3.4,2.15l2.32,0.64l-2.34,-3.97l-4.09,-1.59l-22.38,-0.81l-3.4,-1.7l-1.37,-4.36l-0.02,-12.11l0.41,-2.69l1.88,-4.97l0.43,-2.47l0.67,-1.24l5.56,0.88l0.93,-1.44l0.98,-0.62l0.74,-1.8l-0.16,-2.09l-0.95,-1.39l-2.95,-1.55l-1.13,-1.17l-0.18,-1.87l1.26,-1.66l3.18,-2.24l3.52,-3.97l1.93,-1.35l3.59,-3.75l7.61,-2.98l14.91,-1.69l2.1,2.15l2.5,0.55l14.47,-3.02l29.34,-4.13l7.48,2.18l-0.6,5.76l2.74,6.0l4.1,5.3l3.21,2.27l-0.81,2.76l0.2,0.51l3.61,1.35l0.95,1.48l-0.28,2.75l-0.85,1.37l-3.71,2.4l-3.79,0.35l-1.91,1.14l-0.17,0.46l2.7,7.61l1.88,1.64l2.27,-1.04l1.46,0.05l1.01,0.57l3.29,3.27l1.98,3.21l1.61,0.74l1.63,-0.05l2.52,-1.02l1.27,-1.27l2.08,-3.46l2.23,-5.86l0.53,-5.64l-2.94,-3.63l-4.18,0.88l-1.62,-0.28l1.71,-10.32l0.78,-2.22l1.18,-1.27l1.52,-0.61l3.93,-0.19l1.7,0.79l3.92,5.93l4.08,2.08l8.32,1.65l3.53,1.71l0.0,0.79l-2.26,1.95l-2.16,2.64l-1.67,3.76l-0.62,4.84l0.11,9.31l0.61,4.17l1.32,3.03l0.43,0.23l0.33,-0.37l0.29,-4.15l-1.05,-10.26l0.09,-4.76l1.42,-3.41l3.96,-3.26l1.35,2.45l0.52,0.43l0.99,-0.08l0.92,1.53l0.92,0.06l2.15,-2.01l1.58,-2.46l0.41,-2.76l-0.75,-4.71l-1.46,-4.45l1.03,-2.84l-0.95,-0.46l-3.98,0.17l-2.07,-0.37l-4.6,-1.7l-2.49,-8.07l-0.09,-5.4l0.59,-2.38l3.67,-9.24l2.61,-9.98l1.65,-4.39l1.35,-2.04l1.85,-1.79l2.09,-1.26l2.09,-0.48l2.94,0.58l2.4,2.73l3.48,2.96l3.78,1.99l7.87,1.96l4.29,-0.14l7.07,-1.76l3.86,0.3l2.1,-2.21l7.63,-1.88l7.72,0.08l1.66,-1.11l1.27,0.9l1.61,0.3l3.3,-0.15l2.79,3.24l9.59,17.0l3.94,4.66l2.78,2.3l1.27,1.64l1.38,5.05l6.73,9.96l1.68,1.52l5.33,1.69l5.82,4.0l6.44,1.47l0.51,6.5l2.43,3.28l2.27,5.12l4.03,4.04l1.23,-0.02l1.34,-1.96l1.32,-0.53l0.74,0.98l0.37,3.72l0.44,0.63l1.08,0.09l2.37,-1.13l2.08,1.29l0.96,0.13l3.62,-1.25l1.68,-1.01l0.43,-0.57l0.08,-1.69l4.53,-1.52l2.68,2.7l2.01,0.58l2.16,2.76l1.6,1.16l1.9,0.44l5.4,-0.37l2.65,-3.47l1.68,-0.82l6.25,0.1l3.43,1.31l13.9,8.45l4.11,1.44l3.33,-1.29l7.16,-0.3l3.17,0.83l1.99,2.5l0.29,4.9l0.67,2.44l3.5,1.36l3.11,3.98l3.13,2.55l8.94,5.2l10.75,10.14l4.89,3.67l1.46,-0.71l4.23,-3.9l1.0,-0.16l0.62,0.37l3.17,5.0l1.03,-0.05l1.95,-1.82l1.31,1.64l1.51,0.91l3.41,6.12l3.6,4.26l1.72,1.08l2.25,0.43l2.0,-0.52l3.26,-2.26l1.89,-0.44l2.06,0.66l3.0,3.08l4.12,1.01l4.41,1.76l-1.74,4.88l-0.77,0.56l-2.44,-0.42l-1.15,0.25l-1.05,1.08l-1.1,5.39l0.5,4.08l-2.91,0.41l-5.92,5.58l-3.45,0.93l-5.9,2.54l-3.37,-0.07l-2.31,1.31l-1.31,-1.79l-2.59,-1.71l-4.84,-0.9l-5.71,0.43l-5.4,-1.88l-3.69,0.06l-1.85,1.16l-0.88,3.79l-2.8,2.73l-1.75,0.93l-5.39,1.9l-4.22,-0.21l-4.63,0.35l-3.39,1.32l-0.53,0.69l-0.22,8.19l1.72,4.09l1.9,2.19l0.76,4.24l1.12,1.15l1.15,0.06l1.28,0.8l4.67,9.44l4.32,6.12l0.99,0.3l2.16,-1.52l1.52,0.76l-0.2,0.91l-2.59,3.24l-0.19,4.38l0.76,2.96l4.57,7.21l-2.57,-0.41l-2.04,0.92l-1.21,3.07l-0.25,2.41l7.15,9.76l1.1,0.91l1.63,0.56l2.76,2.33l0.49,1.0l-0.7,2.55l-5.37,1.19l-1.03,0.7l-0.13,0.64l0.4,2.01l1.98,1.22l1.0,2.31l-1.73,2.1l-0.07,1.07l2.97,4.17l1.56,0.09l0.22,2.64l0.95,0.19l0.66,-1.09l0.42,0.88l0.05,1.96l-0.53,1.28l-4.02,1.55l-0.92,0.99l-0.84,2.01l-0.11,1.39l0.82,1.57l2.61,1.39l0.32,2.28l-0.88,1.93l-3.28,3.21l-1.98,1.13l-3.46,1.11l-1.04,0.94l0.04,1.36l1.94,1.64l0.03,2.09l-0.51,1.17l-6.39,0.14l-2.05,0.32l-2.47,0.99l-12.96,0.0l-5.62,0.88l-1.13,0.59l-0.11,1.99l-2.75,2.92l-1.0,0.31l-3.01,-0.31l-1.23,0.89l0.08,1.09l1.68,2.52l0.44,1.67l2.39,1.2l1.4,1.62l1.35,0.02l-2.53,1.76l-0.59,3.21l0.37,0.99l1.86,1.35l0.43,4.07l-1.03,1.82l-1.41,0.85l-0.96,1.53l-2.26,1.49l-0.46,6.94l0.75,4.44l3.41,3.21l2.38,5.77l1.95,2.24l0.48,2.14l0.03,3.83l2.62,4.8l-4.45,2.59l-1.9,2.25l-0.18,1.25l2.42,3.53l-0.3,2.05l-0.6,-0.16l-1.34,-1.48l-0.95,-0.17l-5.99,2.66l-4.01,0.06l-3.45,-2.88l-4.8,-2.57l-1.15,-0.16l-4.61,0.97l-0.31,0.86l0.52,1.3l-0.13,1.18l-1.28,3.67l-2.26,2.1l-0.57,1.16l-3.3,2.22l-0.96,2.45l-5.63,3.27l-1.04,-0.07l-1.02,-1.4l-2.29,0.34l-0.93,1.12l0.04,1.7l-0.9,1.76l-2.46,1.32l0.0,1.24l-4.31,-0.17l-1.57,0.32l-1.41,1.7l-2.7,-1.89l-9.11,7.83l-3.11,-2.29l-0.75,-0.81l-0.23,-2.18l-1.16,-0.43l-1.26,1.23l-1.38,0.03l-0.96,0.62l0.01,1.38l1.22,2.6l-1.1,1.5l-0.76,-0.54l-1.68,-3.39l-2.48,-1.55l-1.41,-0.23l-0.38,0.7l0.48,1.44l-0.68,0.74l-2.41,0.79l-5.52,3.73l0.63,2.28l3.24,3.16l0.84,0.05l1.49,-1.49l0.83,0.09l-1.1,1.64l-0.33,1.74l-4.09,3.63l-1.05,-0.11l-2.86,-3.66l-1.29,-0.72l-1.41,-0.03l-8.41,-3.56l-2.9,-2.79l1.95,0.67l1.03,-0.13l0.4,-0.84l-0.86,-2.97l1.43,-1.97l1.46,0.21l3.54,-0.62l0.93,-1.5l-0.36,-4.1l0.23,-2.09l-0.67,-1.74l0.79,-1.93l-2.19,-2.26l-2.05,-5.17l1.7,-0.8l0.53,-4.24l1.47,0.61l1.18,-0.61l-0.94,-2.11l0.07,-1.08l3.22,2.06l0.81,-0.43l0.85,-1.76l-1.94,-2.45l-1.21,-3.68l-2.36,-1.51l-0.72,-1.89l-0.6,-0.38l-3.37,0.81l-1.83,-0.63l-0.82,-1.2l-0.9,-0.42l-2.27,1.83l-2.49,-0.19l-0.63,-0.77l-0.09,-2.09l-1.07,-1.06l-1.87,0.06l-1.52,1.47l-0.94,-0.62l-4.48,1.4l-1.23,-0.04l-0.35,-0.77l0.15,-2.58l1.11,-1.01l0.41,-1.07l-0.26,-1.91l0.62,-1.75l-0.26,-5.17l0.98,-1.35l0.46,-1.58l2.72,-2.3l1.82,-4.93l0.1,-3.71l0.88,-1.71l-2.11,-1.46l1.53,-2.29l0.42,-1.96l-1.01,-0.55l-2.14,0.89l-2.16,0.34l-4.43,-0.17l-3.7,0.94l1.48,-5.57l-0.8,-3.09l-0.64,-0.92l-2.48,-1.17l-3.9,0.33l1.57,-2.11l1.1,-4.41l-0.0,-1.43l-4.55,-2.02l-1.58,0.51l-0.84,1.61l-4.15,-2.09l0.42,-1.64l1.55,-1.38l0.6,-1.85l-2.17,-6.42l1.27,-2.77l-0.13,-1.79l-1.33,-1.89l-2.65,-1.14l-0.68,-0.73l0.56,-2.66l-0.4,-0.78l-1.01,-0.64l-7.02,-0.98l-6.22,0.75l0.98,-2.04l0.04,-1.2l-1.78,-4.92l2.6,-0.75l2.12,0.18l0.8,-0.41l0.02,-1.89l-0.7,-2.17l0.26,-0.65l3.03,-2.5l-0.37,-0.74l-2.65,-0.72l-5.42,-2.37l-0.33,-1.24l1.2,-8.39l1.11,-2.47l3.86,-0.02l2.71,-1.61l5.35,-9.61l-1.83,-7.02l2.01,-2.0l0.44,-1.92l-0.33,-0.51l-1.9,-0.83l-1.64,-2.28l-1.81,-0.38l-5.65,3.02l-3.19,3.52l-3.04,7.74l-6.45,1.44l-3.47,1.43l-3.09,0.35l-11.03,-1.42l-0.36,-1.93l0.39,-3.2l-0.58,-1.77l0.25,-3.52l-0.36,-2.54l-2.73,-5.09l-1.83,-1.6l-1.79,-0.71l-1.24,0.06l-4.81,2.37l-1.49,0.3l-4.81,-0.16l-2.3,0.39l-3.28,2.8l-1.15,5.1l-0.94,0.96l-1.61,0.77l-5.43,0.72l-1.92,-0.72l-2.27,-0.01l-2.13,-0.81l-0.53,0.49l1.95,6.58l1.29,2.03l6.5,3.13l2.76,2.01l1.2,1.95l1.86,7.84l0.08,14.45l0.41,1.75l3.22,2.41l-0.56,1.69l-1.5,2.22l-4.91,3.34l-1.81,4.09l-0.51,0.36l-0.54,0.14l-12.71,-3.46l-3.2,2.84l-2.29,3.12l-2.84,2.06l-6.76,2.58l-3.59,-1.27l-3.67,0.67l-1.61,0.8l-4.63,4.31l-2.26,-1.35l-3.32,-1.26l-1.97,-5.22l0.11,-0.63l2.68,-2.46l2.37,-1.11l4.44,-0.91l2.73,-8.33l-1.09,-0.94l-1.93,-0.69l-4.15,0.31l-0.59,-0.47l-0.61,-1.89l-2.6,-0.55l-0.5,-0.78l2.41,-3.87l-0.88,-3.26l2.95,-3.9l-1.35,-2.87l-0.29,-1.62l3.37,-0.75l0.94,-0.92l-3.13,-5.85l-3.79,-4.93l-1.34,-0.21l-6.34,2.52l-0.98,-0.3l-1.46,-1.73l-6.64,-4.2l-2.68,-1.19l-1.04,-5.95l-1.0,-2.13l-8.27,-2.62l-1.36,1.45l-1.19,5.14l0.44,1.65l1.54,1.53l-1.11,0.96l-1.38,4.22l-1.33,1.77l-2.52,-0.32l-2.13,0.61l-4.64,3.87l-4.97,5.18l-1.65,0.99l-3.06,0.8l-6.56,4.9l-3.95,0.88l-13.48,0.56l-2.85,2.29l-3.93,1.67l-2.27,-0.1l-1.33,-4.21l0.07,-2.84l2.67,-7.02l0.81,-6.04l-1.42,-4.22l-5.97,-9.76l-1.13,0.15l-1.55,1.95l-2.31,0.68l-2.5,0.16l-2.67,-0.43l-5.13,-1.95l-7.7,-1.09l-2.45,-1.21l-1.82,-2.12l-0.58,-2.28l-0.49,-5.7l-0.99,-2.14ZM267.33,316.2l3.33,0.04l0.42,0.36l1.33,2.69l0.7,4.9l1.58,2.42l4.63,5.15l0.05,5.08l0.57,0.72l1.58,0.27l4.98,-1.09l5.05,3.14l2.1,0.36l2.08,-0.71l0.49,-1.2l4.56,3.26l4.27,-2.96l1.54,-1.68l0.71,-4.91l1.06,-2.17l-0.47,-1.22l-2.35,-2.52l-0.3,-0.81l1.6,-1.8l0.06,-0.83l-3.7,-4.22l-0.78,-0.23l-0.71,0.37l-1.49,3.45l-1.43,0.14l-3.31,-1.67l-3.73,-3.13l-4.34,-0.32l-2.53,-1.73l-0.2,-1.24l-0.64,-0.56l-3.53,-0.03l-1.92,0.54l-6.95,-2.64l-2.68,-1.7l-2.68,0.52l-3.4,-2.1l-1.21,-0.24l-2.22,0.34l-0.3,0.56l1.66,3.98l4.24,1.85l2.28,1.58ZM227.54,225.51l-1.97,1.81l-1.85,-0.65l-0.69,0.34l1.11,-2.22l1.69,-0.75l2.0,0.32l0.99,0.72l-1.29,0.42ZM203.7,215.13l1.2,0.74l-4.56,-0.9l-1.75,0.09l-0.48,1.66l-1.06,-0.77l0.24,-0.59l1.53,-0.58l1.97,-0.22l2.9,0.57ZM191.08,217.06l-5.04,2.57l-2.62,0.16l-2.29,-1.53l-0.55,0.11l-1.56,1.77l-0.92,-0.35l2.17,-2.74l3.92,-0.88l7.88,0.53l0.0,0.36l-1.0,0.0ZM173.83,221.45l-7.48,-0.07l-3.33,0.81l-0.53,2.92l-2.36,0.12l-0.65,-0.58l-0.3,-2.02l0.43,-1.67l0.98,-0.61l11.51,-0.19l1.71,1.3ZM153.99,224.83l0.95,0.77l-0.9,0.6l-3.99,-1.2l2.22,-0.56l1.72,0.38ZM146.3,226.06l-4.68,1.85l-11.86,1.58l-2.98,-0.83l3.62,-2.13l5.18,-0.87l10.71,0.41ZM119.15,232.1l-16.64,1.9l1.54,-0.77l13.21,-1.72l1.89,0.59ZM87.1,250.55l0.68,0.97l-0.99,-1.1l-1.05,-0.35l-2.94,1.09l-1.53,-0.76l-1.24,-1.79l-0.32,-1.61l0.89,-0.69l7.36,-2.27l3.36,-0.27l0.94,1.85l-1.76,0.27l-5.46,2.31l0.25,1.4l1.8,0.94Z\", \"name\": \"Niedersachsen\"}, \"DE-HE\": {\"path\": \"M188.99,810.34l6.35,-4.54l0.82,-3.48l1.04,-1.63l1.7,0.13l1.57,-0.41l1.64,1.66l1.0,0.26l0.41,-0.41l0.82,-4.47l-2.64,-1.98l-0.63,-0.83l-0.07,-0.96l1.34,-3.92l1.07,-1.56l5.64,-2.93l1.17,-1.3l1.94,1.78l1.16,0.02l2.13,-3.32l-0.96,-1.72l0.67,-2.02l5.17,0.05l1.73,-0.47l1.1,-1.26l0.0,-1.59l-1.47,-4.79l-0.75,-1.41l-1.96,-1.59l-2.99,-6.28l-1.77,-0.93l-0.76,-1.84l-4.43,-1.15l-0.42,-0.41l1.34,-1.57l1.24,-4.3l1.87,-2.34l-1.94,-1.91l0.45,-8.08l1.58,-1.2l1.46,-2.02l1.44,-0.58l1.38,0.15l2.34,2.66l1.56,0.2l0.93,-0.4l2.36,-2.11l2.64,-6.91l-1.94,-2.86l-0.35,-2.32l-1.98,-4.89l2.28,-7.19l0.56,-0.61l1.34,-0.45l0.4,-0.63l0.8,-5.69l-0.85,-1.44l-2.36,-1.85l-0.09,-1.03l-0.81,-0.77l0.05,-0.5l5.12,-4.59l0.98,-2.42l1.94,-1.41l6.45,-6.68l1.5,-0.07l0.98,2.19l0.86,0.66l1.76,0.3l2.77,-0.29l3.21,-2.25l0.27,-2.25l2.81,-2.89l1.55,-1.05l2.12,0.08l0.5,-1.2l0.14,-3.46l2.02,-4.46l1.85,-1.14l1.65,-3.7l1.88,-2.85l-0.97,-4.61l0.24,-2.07l-1.63,-3.36l0.28,-0.88l9.71,-0.04l3.43,0.84l4.77,-3.12l0.06,-1.36l-1.08,-2.41l5.25,-6.47l0.3,-1.06l-0.07,-2.06l-1.95,-9.31l-1.15,-0.95l0.34,-1.86l-0.62,-0.71l-0.94,-0.03l-2.72,1.84l-4.53,0.96l-1.41,1.88l-1.39,-0.09l-0.62,-0.55l-0.54,-1.9l-1.7,-1.58l1.71,-3.95l5.31,-6.02l0.6,-1.52l1.89,-1.3l1.01,-1.6l4.7,-1.65l3.75,-0.21l3.54,-0.99l4.62,1.08l3.75,-2.38l4.01,-0.2l0.58,-0.35l1.22,-3.35l-1.02,-1.25l-2.22,-0.4l-0.39,-4.41l-1.42,-2.56l0.64,-1.87l4.99,-2.51l4.01,-1.05l1.5,-0.78l3.14,1.99l2.71,1.09l0.7,2.11l-0.15,2.67l2.47,2.45l3.83,0.82l1.35,-0.1l3.6,-2.81l1.97,-0.17l1.2,-4.78l7.03,-4.78l1.48,-2.89l2.01,-2.19l2.37,-6.99l-0.24,-0.76l-1.68,-1.53l7.8,-2.81l2.16,-3.2l1.01,0.43l1.67,-1.62l1.52,0.16l0.47,2.94l1.75,1.09l2.29,-0.09l1.98,-1.76l1.14,1.4l1.44,0.66l1.69,0.21l2.54,-0.81l0.81,2.0l2.27,1.39l1.17,3.62l1.81,1.98l-0.94,1.48l-2.55,-1.92l-1.05,0.04l-0.49,1.36l1.05,2.21l-1.68,-0.53l-0.72,0.16l-0.7,4.53l-1.23,0.31l-0.52,0.59l0.19,1.39l1.92,4.38l1.2,1.63l0.93,0.51l-0.82,1.77l0.67,1.7l-0.22,2.1l0.37,3.91l-0.39,0.88l-5.26,0.57l-1.69,2.34l0.79,3.37l-3.16,-0.89l-0.46,0.46l0.14,0.6l3.39,3.44l8.6,3.66l1.42,0.04l1.1,0.62l2.78,3.61l1.74,0.29l1.01,-0.51l3.57,-3.44l0.44,-1.95l1.15,-2.05l-0.68,-0.82l-0.8,-0.05l-2.1,1.65l-2.96,-2.91l-0.54,-1.52l5.23,-3.37l2.45,-0.81l0.99,-1.13l-0.46,-1.65l2.89,1.64l1.55,3.24l0.8,0.79l1.35,-0.13l0.91,-1.06l0.27,-1.1l-1.3,-3.54l1.89,-0.23l1.37,-1.23l0.31,2.28l3.92,3.2l-1.56,1.38l-0.73,2.0l0.64,3.32l1.28,2.05l0.61,3.82l1.62,0.55l1.96,2.27l1.91,0.02l4.45,1.42l0.29,0.52l-0.47,2.26l0.55,1.03l1.53,1.27l0.4,2.28l0.5,0.75l3.51,1.51l2.02,0.39l1.52,0.94l2.41,0.15l5.56,3.45l-0.25,1.15l-1.44,1.77l-0.62,1.71l-0.63,4.91l-0.91,-1.25l-0.03,-1.26l-1.43,-1.69l-1.76,-0.02l-2.26,0.62l-1.07,0.97l1.53,2.78l2.65,0.81l-0.34,1.69l-1.76,3.39l-0.6,2.71l0.11,1.55l1.94,0.62l1.24,0.96l1.92,0.26l1.48,2.89l-1.8,4.06l-5.16,0.2l-0.79,-0.53l0.07,-1.23l-0.64,-0.5l-1.54,0.49l-1.14,-0.41l-4.38,0.31l-2.45,1.76l-0.42,2.4l0.29,1.11l1.64,2.25l0.27,1.83l-0.3,0.92l-2.51,0.55l-3.38,-0.36l-1.6,-0.58l-1.0,0.4l-0.43,1.01l-0.06,1.18l0.54,0.96l0.68,0.06l0.71,-0.55l-0.06,1.9l0.43,1.4l0.9,0.09l1.69,-1.98l0.97,-0.18l2.22,1.72l2.06,3.81l-2.78,3.56l-0.22,3.82l-2.8,1.05l-2.02,0.26l-2.44,1.56l-0.77,3.1l0.38,2.83l-1.69,0.43l-0.78,1.71l1.45,2.23l-0.21,2.59l-2.03,4.36l0.06,1.82l-1.92,1.89l-1.2,2.04l-0.39,3.89l0.77,1.8l2.32,-0.53l2.69,1.44l1.53,0.12l0.88,-0.55l0.72,-1.8l-1.29,-2.13l0.24,-1.08l4.95,-2.05l4.55,1.05l0.85,0.82l1.03,2.68l0.22,3.42l-1.6,0.61l-1.35,2.01l0.25,5.57l0.82,2.39l-1.21,5.0l0.35,0.95l0.53,0.2l-0.84,2.47l-4.24,7.42l-1.89,1.65l-6.08,3.6l-5.76,2.25l-1.82,0.13l-0.84,-0.34l-2.77,-2.91l-2.65,0.95l-1.25,1.98l-2.34,8.46l0.55,6.38l-2.44,2.1l-4.04,1.66l-0.82,0.8l-0.86,1.18l-0.72,2.23l0.46,2.74l-4.67,1.51l-1.29,0.02l-1.71,-0.78l-2.14,0.52l-1.62,-1.64l-1.36,0.53l-1.58,-0.47l-0.82,0.3l-0.29,1.49l0.31,3.06l-0.98,4.41l0.53,0.94l2.45,0.76l-1.68,3.65l0.46,4.09l-0.8,0.96l-5.85,2.5l-1.4,0.22l-2.12,-0.35l-2.79,-4.64l-4.87,-2.54l-10.07,-0.73l-3.73,1.27l-0.56,2.58l-1.64,1.95l-1.49,1.06l0.63,-1.11l-0.18,-0.68l-4.52,-2.32l-5.41,2.44l-3.79,1.01l-1.23,1.82l-0.27,4.04l-1.61,0.45l-1.24,1.6l0.12,0.55l1.67,1.13l2.74,-0.42l0.87,3.82l0.93,1.51l-0.1,1.75l1.13,2.5l-1.82,-0.71l-0.54,0.37l-0.2,11.33l3.52,10.99l0.79,1.44l0.78,0.27l1.44,-2.04l-0.17,4.03l0.86,2.37l1.2,1.11l2.27,-0.2l0.59,0.93l-2.08,3.81l0.51,1.57l2.36,1.31l-1.57,3.83l0.21,2.9l-0.99,0.98l-1.87,0.31l-0.63,0.53l0.08,2.12l1.07,4.92l-3.78,4.46l0.46,1.34l1.95,1.88l1.26,2.17l-0.68,1.14l-2.02,-1.31l-0.71,0.46l-0.05,1.04l2.47,3.19l2.67,5.31l-1.77,-1.57l-2.86,-0.16l-1.05,0.19l-3.02,2.46l-2.28,-0.43l-5.79,0.26l-2.86,3.58l1.56,3.07l0.23,0.91l-0.41,0.91l-2.27,1.32l-0.71,-1.31l-0.85,0.12l-1.03,3.28l-3.66,4.03l-3.29,-0.8l-0.03,-2.45l1.59,-1.12l0.36,-0.9l-0.19,-4.92l1.83,-2.2l1.49,1.47l1.16,-0.24l1.59,-2.87l-0.2,-2.15l-0.42,-0.26l-5.91,0.5l-1.95,-3.06l-4.3,-0.11l-4.47,-2.65l-1.1,-1.26l-1.38,-3.38l-0.43,-1.64l0.56,-1.23l-0.1,-1.4l-1.73,-3.31l-8.13,2.04l-0.12,0.9l1.9,8.76l-0.61,0.89l-3.9,1.69l-6.5,-6.79l-2.49,-1.98l-2.6,-0.41l-2.94,1.21l-1.51,-4.29l-3.85,-8.13l0.16,-3.83l1.57,-2.79l2.53,-1.72l3.36,-0.75l3.44,-4.74l0.33,-1.67l-1.63,-0.98l-3.7,0.53l-3.2,-7.03l-0.93,-4.17l-3.9,-7.23l1.43,-5.4l-1.93,-5.19l-10.61,-12.12l-2.9,-1.37l-2.86,0.09l-12.29,4.19l-3.9,2.95l-4.63,2.45l-4.17,1.38l-3.69,0.13l-1.58,-2.35l-0.28,-1.83l-0.86,-1.48l-6.36,-5.77l-1.0,-0.43Z\", \"name\": \"Hessen\"}, \"DE-TH\": {\"path\": \"M401.08,699.37l0.63,0.28l0.51,-0.58l-0.37,-3.21l0.84,-3.02l1.83,-0.94l2.01,-0.26l3.05,-1.19l0.48,-0.9l-0.04,-3.23l2.88,-3.62l-2.26,-4.54l-2.25,-1.83l-1.74,-0.06l-1.87,2.09l-0.27,-3.26l-0.92,-0.31l-0.7,0.68l0.01,-1.63l0.97,-0.42l0.98,0.58l3.62,0.38l3.03,-0.77l0.52,-1.43l-0.29,-2.09l-1.91,-3.16l0.23,-1.87l2.24,-1.61l3.9,-0.21l1.18,0.41l1.45,-0.47l0.01,1.34l1.79,0.98l5.57,-0.58l1.87,-4.69l-1.83,-3.43l-2.06,-0.32l-1.26,-0.97l-1.49,-0.27l0.53,-3.63l1.75,-3.35l0.39,-2.12l-0.66,-0.69l-2.25,-0.56l-1.17,-2.1l2.52,-0.89l1.42,0.0l0.98,1.32l0.0,1.23l0.79,0.77l0.28,1.01l0.71,0.14l0.67,-0.93l1.07,-6.28l1.44,-1.77l0.45,-1.29l-0.51,-1.13l-3.17,-1.58l-2.41,-1.8l-2.49,-0.18l-1.5,-0.94l-2.08,-0.41l-3.24,-1.37l-0.69,-2.79l-2.02,-2.15l0.5,-2.1l-0.53,-1.02l-4.81,-1.62l-1.76,0.03l-1.78,-2.15l-1.65,-0.6l-0.56,-4.14l-1.08,-1.33l-0.57,-2.53l0.57,-2.1l7.91,-7.05l2.04,-1.2l0.84,-1.13l2.62,1.89l0.61,-0.26l1.05,-1.5l6.11,-0.07l0.39,-0.54l-0.28,-1.08l1.45,-0.49l1.03,-0.87l0.97,-1.92l-0.07,-1.64l0.66,-0.78l1.59,-0.22l0.79,1.29l1.76,0.18l5.92,-3.44l1.05,-2.55l3.21,-2.13l0.66,-1.26l2.31,-2.17l1.53,-4.83l-0.52,-1.95l5.04,-0.69l4.6,2.48l3.65,2.97l4.4,-0.06l5.89,-2.64l2.03,1.71l0.76,0.19l0.96,-0.88l0.25,-1.66l-0.33,-1.09l-2.22,-3.1l0.16,-0.69l1.62,-1.89l4.51,-2.63l1.57,0.92l8.77,-0.23l4.34,2.29l2.91,0.11l1.24,1.2l4.85,1.65l0.9,3.0l-0.86,0.51l-1.42,-0.61l-1.05,0.18l-0.61,0.82l0.03,1.08l1.45,4.2l1.97,2.64l-0.13,3.64l2.55,5.16l-0.69,6.04l0.99,1.86l2.75,1.54l15.19,1.87l4.18,-0.09l9.03,1.34l2.45,0.84l5.01,3.97l2.66,5.04l5.51,8.24l-1.59,2.98l-1.09,1.01l-2.38,1.36l-4.99,0.98l-1.54,2.44l1.28,2.05l4.31,2.27l2.97,4.55l0.69,4.53l-0.77,0.44l-0.3,0.8l0.71,2.97l1.15,1.47l1.79,0.76l5.38,0.27l3.05,-1.72l4.44,0.63l4.63,0.09l3.78,-0.8l2.31,1.74l0.38,3.78l2.26,4.32l0.55,2.17l1.51,1.4l1.1,0.25l1.15,-0.9l9.63,-0.57l2.15,1.64l4.75,2.16l1.32,1.24l1.11,2.54l3.52,2.1l0.18,1.15l0.63,0.63l6.79,-1.06l5.72,1.82l2.68,-1.41l2.87,2.45l0.68,1.25l1.12,0.28l2.07,-1.57l-0.06,-2.76l3.38,-4.3l2.37,-4.48l0.0,-1.19l-0.55,-1.2l-2.5,-1.84l0.47,-3.0l1.69,-3.05l-0.1,-0.98l5.82,-0.59l14.87,4.51l0.76,4.53l4.01,7.59l1.49,1.51l5.45,2.87l2.28,3.6l2.03,4.37l-0.02,0.81l-1.5,0.87l-1.78,2.41l-1.15,-1.1l-1.61,0.32l-3.11,-0.43l-2.17,0.26l-1.79,-0.73l-0.56,0.3l-0.54,1.58l-3.79,2.1l-3.72,4.94l-1.54,-0.75l-3.61,0.45l-3.95,3.07l-7.09,2.14l-0.31,2.23l1.2,1.36l1.63,0.72l0.22,0.54l-1.46,1.86l-1.22,0.21l-1.11,0.93l-0.99,2.97l0.44,0.87l1.65,-0.14l0.77,0.57l-0.38,2.54l1.46,3.54l1.18,0.6l2.71,0.14l-1.76,3.07l-4.54,3.74l-4.22,-0.24l-2.44,0.35l-2.79,3.53l0.06,3.31l-0.65,2.25l-0.59,0.69l-2.48,0.82l-1.96,-0.95l-1.76,0.3l-3.29,4.59l-1.32,-0.18l-2.1,-2.14l-1.14,-0.26l-1.4,0.48l-2.03,2.84l-2.36,1.84l-1.74,3.0l-0.16,1.64l1.68,1.65l0.37,0.92l0.04,1.23l-1.01,1.38l-0.22,1.56l-2.18,0.92l-1.15,0.99l-0.35,1.2l0.61,1.12l-2.88,1.73l-4.26,1.71l-0.14,-1.43l-1.85,-0.88l-0.89,-1.11l-1.3,-0.12l-2.38,0.43l-0.59,0.89l-1.51,0.46l-11.48,2.43l-2.89,-1.16l-2.25,-0.02l-1.49,1.92l-2.63,0.47l-3.61,-2.59l-0.43,-3.73l-0.56,-1.0l-0.91,-0.43l-1.58,0.26l-2.98,-2.26l-0.01,-6.1l1.41,-1.06l0.37,-0.83l-1.18,-2.71l-1.96,-0.74l-6.26,-0.34l-2.53,1.94l-0.76,2.2l-1.89,1.24l-4.64,1.76l-0.21,0.47l0.76,2.46l-0.2,1.16l0.79,3.21l-0.33,3.89l0.64,2.62l1.13,1.91l0.29,2.24l-1.12,0.78l0.16,1.81l-1.11,3.11l0.66,2.47l-1.04,2.51l0.09,1.89l-0.74,0.16l-2.11,-0.65l-1.71,-1.14l-0.69,0.43l-0.73,1.35l-4.4,-4.16l-0.59,-0.95l1.78,-2.06l0.17,-1.16l-1.89,-3.35l-1.63,-0.58l-0.95,-1.82l-1.73,0.24l-1.37,1.4l-3.37,0.97l-2.19,-2.01l-2.95,-0.42l-0.57,0.33l-0.35,1.63l-4.21,-5.6l-1.68,-0.1l-3.0,0.87l-1.14,-1.46l-1.02,-0.38l-1.57,0.73l-2.31,-0.24l-2.53,1.36l-1.96,-0.61l-1.31,0.98l-2.05,3.5l-2.4,-0.61l-1.16,0.72l-0.49,1.11l-0.29,4.64l0.89,1.21l2.66,1.57l1.94,2.01l2.97,0.21l1.26,2.14l2.78,1.07l0.51,1.66l-0.14,1.51l-0.39,0.5l-0.84,0.13l-2.92,-1.11l-4.03,0.75l-1.43,-0.69l-0.81,0.14l-0.81,1.03l-0.69,5.02l-3.19,-1.95l-2.42,-0.67l-4.35,0.0l-1.02,-1.45l0.25,-2.17l-1.24,-2.71l0.56,-3.75l-0.94,-5.36l-2.51,-2.14l-1.69,-3.07l-1.63,0.22l-1.04,0.8l-2.39,-0.25l-0.36,-1.63l-2.7,-2.34l-1.63,-2.89l-2.74,0.55l-2.35,-0.59l-0.42,-1.13l0.93,-1.58l-0.26,-0.81l-2.69,-2.23l-3.1,-3.4l-0.31,-2.76l-1.12,-1.99l-9.35,-3.58l-1.02,-3.16l-1.91,-2.1l-1.63,-0.48l-5.16,0.4l-0.38,-0.57l-0.02,-1.5l-0.74,-0.38l-1.69,1.2l-5.23,5.87l-0.35,-0.03l1.09,-5.36l-0.84,-2.5l-0.24,-5.35l1.1,-1.52l1.44,-0.25l0.42,-0.89l-0.25,-3.7l-1.76,-3.66l-4.97,-1.4l-1.26,0.02l-4.98,2.53l-0.2,1.5l1.27,1.93l-0.7,1.47l-1.38,0.0l-2.79,-1.47l-2.1,0.59l-0.34,-1.16l0.32,-3.47l1.08,-1.85l2.01,-2.02l0.01,-1.99l2.03,-4.37l0.22,-2.96l-1.4,-2.02l0.39,-1.06l0.9,-0.39Z\", \"name\": \"Th\\u00fcringen\"}, \"DE-BW\": {\"path\": \"M163.28,1160.54l2.55,-3.63l0.03,-2.48l-1.21,-5.03l1.63,-6.56l1.9,-1.57l0.21,-1.76l-0.51,-4.52l1.96,-3.48l0.07,-3.1l0.5,-1.8l2.54,-2.71l1.04,-2.07l-0.26,-4.76l-4.19,-7.4l-0.29,-5.93l0.59,-2.8l0.65,-2.19l1.87,-3.36l0.83,-3.89l6.17,-8.68l1.07,-2.2l1.5,-8.54l3.37,-2.3l1.41,-2.36l0.11,-2.19l-1.14,-3.85l-0.19,-3.58l1.2,-5.5l1.82,-3.81l0.67,-4.07l3.69,-3.38l-0.02,-1.15l-1.13,-3.07l0.01,-5.06l0.8,-4.73l4.06,-6.36l2.73,-1.32l4.2,-4.55l2.52,-2.09l1.55,-2.69l0.56,-3.98l4.59,-0.69l0.67,-0.69l0.42,-2.19l0.98,-1.34l0.81,-0.08l4.35,-2.6l1.25,-2.12l4.43,-12.27l3.03,-5.76l1.81,-2.1l3.18,-1.21l3.22,-3.48l2.09,-3.26l7.22,-14.92l2.96,-18.35l2.25,-1.7l6.86,-8.21l0.35,-1.89l-0.26,-0.45l-2.0,-0.71l3.64,-8.83l-0.69,-5.31l1.34,-3.3l-1.26,-1.91l-4.78,-1.34l0.0,-0.51l1.85,-0.92l0.22,-1.39l-3.54,-9.43l-1.86,-3.11l0.75,-3.31l2.98,-1.24l2.14,0.35l9.32,8.87l4.31,-1.84l0.9,-1.12l0.02,-1.37l-1.84,-8.27l7.1,-1.78l0.11,0.97l1.33,2.44l-0.6,1.82l0.47,1.87l1.45,3.53l1.27,1.48l4.81,2.83l4.12,0.05l1.16,2.34l1.0,0.79l5.85,-0.47l-0.1,1.87l-1.23,2.01l-2.15,-1.48l-2.21,2.23l-0.53,1.57l0.33,4.28l-1.88,1.68l-0.23,2.05l0.32,1.02l3.71,1.3l1.64,-0.94l2.98,-3.57l0.86,-3.07l0.39,1.08l0.78,0.26l2.83,-1.66l0.55,-1.45l-0.66,-2.08l-1.13,-1.69l2.54,-3.04l5.28,-0.13l2.52,0.41l1.07,-0.46l2.19,-2.11l0.62,-0.06l2.4,0.06l1.27,1.46l1.42,0.09l0.33,-0.77l-0.26,-0.99l-2.55,-4.64l-2.42,-3.38l1.23,1.04l0.91,0.18l1.16,-1.34l1.08,0.44l5.5,-1.21l8.0,-0.01l1.16,-1.37l0.68,-2.12l1.37,-1.47l-0.25,-2.59l0.56,-0.74l2.01,-1.02l3.16,-0.26l2.77,-1.23l1.65,1.49l1.08,0.07l2.03,-1.8l-0.61,-2.22l1.16,-6.64l-0.36,-0.77l-2.35,-1.23l-0.81,0.05l-0.7,0.62l-0.77,2.2l-0.71,0.24l0.2,-2.36l-0.57,-1.1l-4.05,-0.9l-1.04,-0.61l0.65,-2.63l-0.73,-2.26l2.43,-2.35l1.06,-0.35l4.7,0.33l3.68,-1.31l5.12,-0.47l5.34,2.51l1.34,0.1l1.59,-0.57l2.79,1.67l2.76,-0.88l1.61,-1.02l0.31,0.85l-0.7,1.4l0.32,2.33l-0.56,1.54l0.2,1.62l-0.81,0.82l0.07,1.37l-0.88,2.42l0.66,1.1l1.86,0.98l1.51,0.16l1.25,-0.6l0.54,-2.57l1.25,-0.67l0.74,-1.29l0.25,2.23l0.97,2.23l1.08,0.61l3.66,-3.82l2.53,-1.31l3.57,4.68l0.28,6.0l3.9,4.43l0.66,1.26l-0.33,1.13l-1.66,2.16l-0.2,3.08l-1.99,2.43l0.01,0.9l1.24,1.01l1.71,-0.4l1.06,-2.53l1.26,-0.52l1.21,-1.71l0.86,-0.39l0.42,0.73l-0.61,1.62l1.69,1.74l0.42,3.24l-0.21,3.36l0.58,4.0l1.37,0.45l7.07,-0.16l0.99,-0.49l3.9,-4.13l0.03,-1.83l-0.77,-1.08l2.32,-2.08l1.27,0.86l-0.62,1.65l0.29,0.99l1.17,0.82l1.66,0.41l-0.73,2.77l1.09,2.93l-1.89,4.49l0.47,0.7l2.35,1.0l2.95,7.23l-1.61,-0.61l-1.2,0.18l-2.04,2.49l-0.26,4.21l0.27,1.12l1.12,1.55l2.03,1.16l-0.71,2.62l1.27,3.56l-0.05,0.81l-0.41,0.16l-1.89,-1.0l-0.64,0.33l-0.24,0.87l0.36,1.23l1.38,1.52l0.09,3.07l1.53,2.46l-1.25,0.73l-0.04,0.69l3.34,2.83l3.74,4.62l0.82,0.15l1.63,-0.85l1.84,1.72l0.05,2.86l-0.96,2.37l-0.47,0.42l-1.52,0.12l-0.39,0.92l0.68,0.8l2.46,1.04l-0.21,1.82l1.81,1.83l-0.27,2.52l2.7,1.31l1.58,0.03l2.23,1.25l1.58,0.18l1.58,3.9l4.1,3.39l2.32,3.3l0.69,1.77l1.24,1.35l0.87,3.02l-2.25,1.57l1.04,1.45l-0.27,5.51l-0.48,1.73l1.08,2.78l-0.48,2.39l-1.44,2.11l0.02,3.78l-0.71,1.33l-0.08,1.59l0.25,1.27l0.76,1.02l2.05,1.13l0.86,0.04l2.2,4.81l-5.06,4.36l-0.19,-1.17l1.12,-3.27l-0.69,-0.89l-1.2,-0.12l-5.52,5.92l-1.95,-3.54l-3.03,-0.19l-2.05,-1.92l-0.98,0.09l-2.23,3.06l-0.26,2.17l1.83,3.64l4.42,3.4l-0.27,0.99l-1.5,0.75l-0.38,0.72l1.29,4.82l-1.27,4.87l0.28,0.99l-4.34,0.45l-1.5,1.66l-0.38,1.86l-9.25,5.65l-0.73,-0.44l-0.5,-2.11l-1.44,-0.72l-2.81,1.81l-3.46,0.78l-1.4,1.41l-1.0,1.88l0.2,1.98l-6.07,8.1l0.86,2.07l1.4,0.31l1.82,4.05l3.09,5.24l1.54,5.25l3.86,17.8l2.64,6.02l0.29,1.82l-0.17,5.41l-0.72,3.17l-2.84,7.96l-1.56,1.64l0.19,1.63l2.24,3.71l-0.37,5.12l-0.89,3.27l-1.1,1.64l0.44,0.79l1.35,0.17l2.35,5.98l-0.72,0.36l-0.87,1.48l-2.26,0.32l-0.96,1.8l2.04,3.28l1.45,0.42l0.22,0.46l0.54,7.52l0.84,2.92l-0.36,1.74l-1.03,0.19l-2.41,-0.64l-0.56,1.24l-0.13,2.07l-0.51,0.64l-1.23,-3.26l-1.03,-0.79l-1.92,-0.05l-2.52,0.69l-5.43,2.31l-2.26,0.03l-2.29,-0.55l-4.23,-1.69l-3.11,1.49l-7.24,6.48l-4.22,2.16l-3.58,-0.9l-1.54,0.75l-0.96,1.51l-4.01,1.08l-5.8,7.98l-27.27,-16.97l-3.94,-0.94l-3.54,-0.0l-1.55,-2.08l-5.4,0.0l-10.92,-1.24l-2.04,0.78l-1.65,1.73l-3.42,1.09l-3.73,0.36l-2.26,-0.59l-2.76,-2.07l-1.33,-1.33l-0.01,-0.53l1.5,-0.35l0.18,-0.68l-2.61,-2.46l-3.2,-1.88l-2.82,-0.17l-0.4,0.28l-0.89,2.86l0.3,0.63l-3.98,0.06l-0.37,-1.74l-1.16,-2.07l1.83,-3.31l-0.65,-1.8l-3.17,-0.39l-2.37,-4.15l-1.47,-0.59l-1.31,1.04l-0.59,3.21l-0.84,0.55l-0.61,-0.46l-0.8,-4.86l-1.94,-0.85l-2.46,-0.14l-1.78,0.95l-0.17,0.49l0.78,1.96l-1.11,0.57l-6.45,1.06l-0.9,0.58l-1.82,3.09l-0.73,2.87l-3.37,2.21l-1.07,1.19l-0.2,1.3l0.64,2.31l-0.58,1.47l0.23,0.52l2.0,0.65l4.72,3.1l1.92,-0.12l4.22,-2.44l4.63,-0.79l3.38,0.92l-0.36,2.25l-0.53,-1.01l-1.68,0.81l0.13,4.66l-0.63,1.89l-0.91,0.3l-2.11,-3.13l-1.84,-1.52l-3.12,0.37l-3.01,1.99l-1.38,3.16l-2.72,0.46l-6.19,-0.03l-4.43,-1.5l-1.15,-2.67l-0.85,-0.89l-3.61,-0.9l-1.9,-0.0l-5.5,0.96l-1.66,1.73l-1.78,0.54l-2.98,1.81l-2.54,2.92l-4.3,0.97l-12.46,0.0l-0.64,-3.04l-0.71,-0.81l-6.51,-0.5l-1.3,-0.66l-0.52,0.14l-3.29,4.58l-1.72,0.98l-8.05,1.68l-2.02,-0.27l-3.56,-1.89l1.22,-0.1l1.14,-1.17l1.29,-3.65l-0.42,-0.53l-2.3,0.26l-4.31,1.3l0.46,-1.47l-0.28,-1.55l-1.73,-2.04l-3.54,-6.31l-1.8,-1.34l-0.56,-4.51Z\", \"name\": \"Baden-W\\u00fcrttemberg\"}, \"DE-HH\": {\"path\": \"M426.9,236.58l0.36,2.82l1.06,0.95l0.26,0.81l-0.72,3.17l-0.4,4.75l-3.09,1.19l-0.66,0.76l0.99,7.48l0.54,0.9l2.65,1.07l3.34,4.96l2.88,1.8l3.39,3.7l0.78,-0.01l0.55,3.01l-3.71,0.0l-1.13,0.37l-1.08,0.71l-2.35,3.23l-5.11,0.35l-1.5,-0.34l-1.48,-1.07l-2.17,-2.77l-2.1,-0.65l-2.98,-2.83l-5.13,1.68l-0.49,0.8l-0.01,1.47l-4.92,2.12l-2.85,-1.43l-3.07,1.18l-0.52,-3.88l-1.3,-1.56l-1.57,0.32l-1.91,2.36l-3.27,-3.01l-1.86,-2.82l-1.12,-3.13l-2.42,-3.3l-0.37,-5.88l4.87,1.1l1.53,-0.56l0.19,-0.57l-1.36,-2.3l-3.68,-2.16l-3.77,-0.48l1.06,-5.36l1.01,-1.38l0.44,-1.91l1.48,0.3l1.92,1.41l-0.31,3.35l0.53,0.67l0.95,0.26l10.92,-8.69l2.32,-0.72l3.25,0.52l1.08,-0.85l1.0,-2.62l0.8,-0.85l1.74,-0.5l1.8,0.23l1.07,-0.57l0.66,-0.71l1.26,-5.25l0.68,-0.84l5.84,0.95l3.32,-2.33l0.77,0.22l-0.1,0.93l-2.23,3.94l-0.53,1.8l0.58,1.18l3.41,2.56Z\", \"name\": \"Hamburg\"}, \"DE-SH\": {\"path\": \"M521.93,110.37l-3.01,0.19l-2.37,-0.4l-0.92,-1.15l0.17,-3.29l-0.71,-1.72l-1.53,-0.55l-2.58,-0.08l-1.19,0.36l-1.02,0.98l-0.94,-1.94l-1.4,0.43l-0.18,-1.6l2.67,-6.66l3.7,-3.62l4.5,-0.77l8.22,3.56l3.15,3.07l6.9,13.05l-11.55,-1.94l-2.06,1.08l0.14,1.0ZM275.98,29.38l3.09,0.96l3.61,0.15l6.81,-2.52l2.18,-0.34l7.74,1.34l7.72,3.18l20.72,4.91l1.48,1.31l1.44,6.04l2.11,0.97l8.71,-0.25l3.55,-2.38l1.46,-0.33l2.05,1.84l1.68,0.19l3.15,-0.52l5.84,-2.98l1.92,-2.35l2.49,-1.09l1.82,-2.67l0.53,5.71l4.88,1.79l5.95,0.32l3.97,1.76l6.47,3.99l1.03,2.93l1.53,1.75l2.64,-0.46l4.46,-1.73l-0.08,-3.54l1.76,-0.12l3.02,1.88l2.15,2.75l1.96,7.15l2.51,3.07l-0.78,0.6l-3.22,-0.94l-2.62,2.3l-1.56,0.58l-0.35,2.13l0.37,0.41l1.44,0.09l2.65,-0.78l2.3,-0.13l1.36,1.82l2.26,-0.81l0.34,0.65l-0.65,2.23l0.55,5.81l-1.04,9.95l-1.58,4.22l-1.2,1.73l-3.1,2.9l-3.86,2.17l-4.18,1.36l-4.07,0.47l-0.35,1.55l4.72,2.62l23.58,-5.66l1.65,0.6l5.56,4.88l-1.76,1.94l0.01,1.99l1.26,4.63l-0.53,2.11l-1.32,2.0l-1.66,1.43l-1.62,0.49l-0.22,0.61l0.57,0.87l-0.53,1.48l0.98,1.06l0.26,1.22l-1.25,3.45l2.61,-0.68l1.85,-2.22l2.31,-5.24l1.95,-6.9l0.81,-0.54l3.77,-0.44l1.47,-0.91l1.95,-2.64l0.96,-0.31l4.02,0.35l2.05,1.03l5.99,4.81l15.41,6.87l8.7,8.24l4.22,1.11l4.8,-0.88l3.37,-2.11l5.58,-5.23l3.17,-2.06l3.3,-1.39l3.72,-0.49l-0.02,0.64l1.7,0.77l1.8,-0.49l2.56,1.51l6.73,-4.15l2.35,0.9l-4.1,4.98l-1.82,-0.92l-0.54,0.51l1.04,2.72l1.66,9.76l-0.72,2.15l0.74,7.67l-0.41,2.74l-1.81,2.46l-0.47,1.47l-11.27,7.36l-4.01,5.11l-1.62,1.05l-4.81,1.41l-0.61,0.54l-1.28,-1.12l-1.14,-0.02l-0.79,0.51l-5.37,7.83l0.03,1.19l1.34,3.32l1.43,2.4l1.98,1.68l2.81,0.92l3.86,-0.36l0.71,0.29l0.61,1.53l0.47,3.51l1.72,0.72l-0.03,4.88l1.7,1.91l3.41,1.11l-0.9,0.74l-2.95,0.49l-0.35,-0.5l0.09,-1.5l-1.81,-0.81l-0.94,0.04l-2.4,1.59l-4.79,4.5l-4.49,2.59l-1.22,2.33l-0.46,2.34l1.16,3.59l0.8,4.36l-1.14,7.7l0.49,0.41l4.29,0.88l4.98,6.34l0.87,0.5l2.2,-0.28l2.63,0.81l2.19,1.9l0.65,1.11l0.1,1.99l0.97,2.34l-0.26,2.44l-1.37,1.15l0.09,2.96l1.28,5.43l-1.05,1.6l0.99,0.44l-1.91,2.38l-0.86,-2.9l-1.15,-0.94l-5.07,0.63l-1.58,-0.6l-1.42,0.39l-0.28,0.77l0.5,3.19l-0.91,2.64l-0.18,2.46l-5.9,4.43l-5.51,1.74l-1.3,3.28l-1.39,-0.33l-1.4,0.21l-2.22,1.33l-0.61,1.13l-0.94,7.86l-2.28,3.96l-2.87,1.21l-3.85,-1.34l-13.9,-8.45l-3.59,-1.38l-2.01,-0.11l-0.67,-3.51l-1.08,-0.26l-3.25,-3.54l-2.94,-1.85l-3.3,-4.93l-2.68,-1.1l-1.23,-7.56l3.0,-1.13l0.66,-0.61l1.22,-8.27l-0.44,-1.36l-0.93,-0.75l-0.41,-2.94l-3.56,-2.72l-0.34,-0.72l2.72,-5.34l0.21,-1.05l-0.54,-0.95l-1.81,-0.08l-2.77,2.21l-5.89,-0.96l-1.22,1.38l-1.63,5.57l-0.62,0.41l-1.89,-0.21l-2.05,0.61l-1.07,1.12l-0.97,2.57l-0.72,0.57l-3.1,-0.57l-2.64,0.85l-10.7,8.57l-0.54,-0.58l0.27,-3.35l-2.24,-1.68l-2.25,-0.31l-0.75,2.27l-1.07,1.51l-1.09,5.5l-4.34,-0.51l-3.51,-1.39l-7.0,-4.55l-3.12,-3.55l-1.12,-5.15l-0.67,-7.4l-1.19,-1.2l-6.06,-3.12l-2.28,-2.09l-2.25,-4.89l-1.53,-5.3l-0.41,-3.62l-3.5,-1.4l-6.15,-5.34l-3.87,-2.37l-3.76,-0.86l-12.38,-0.29l-6.22,-2.43l-1.46,0.78l-0.99,1.56l-1.91,-0.64l-3.36,-2.58l-3.21,-4.0l-7.93,-16.13l3.34,-1.55l1.71,-0.13l2.22,0.61l3.78,2.57l2.21,0.75l2.45,-1.05l0.95,-2.03l0.82,-3.37l0.53,-6.27l-1.21,-1.94l-3.07,-3.22l0.26,-2.84l-0.28,-0.38l-2.59,-0.75l-3.42,0.64l-3.31,1.58l-2.02,1.95l-4.51,-8.88l0.75,-3.21l2.54,-5.53l-0.68,-3.65l0.99,-0.76l5.71,-1.34l1.24,-0.94l3.15,-4.86l1.0,-2.59l-0.45,-0.54l-2.23,0.44l-3.84,3.28l-1.24,0.55l0.4,-1.43l-0.42,-0.54l-11.06,2.29l-3.67,-0.57l-1.64,0.69l-3.2,3.1l-0.94,0.31l-2.4,-0.88l-2.69,-2.46l-1.95,-3.57l-0.26,-4.14l1.22,-1.54l2.56,-1.16l2.91,-0.59l2.26,0.11l0.42,-0.4l-0.3,-1.54l-1.66,-0.41l-1.27,-1.21l-1.45,-0.51l-1.61,1.72l-0.51,-1.12l0.27,-1.72l1.63,-2.78l2.07,0.82l7.9,-2.18l10.73,0.0l2.71,-0.73l2.12,-1.34l4.1,-3.64l3.75,-1.85l1.7,-1.3l0.82,-3.06l0.01,-4.1l-2.6,-4.15l-8.0,-8.66l-1.08,-1.72l-0.59,-1.94l-1.18,-0.89l-2.02,0.07l-3.01,1.16l-0.29,-0.55l3.06,-2.11l0.15,-0.47l-3.41,-9.22l-1.3,-2.42l-2.93,-1.9l-5.29,-4.65l-3.19,-1.62l0.53,-4.12l-1.29,-3.46l-3.22,-6.32l-0.54,-4.38l0.44,-3.88l1.22,-4.53ZM503.71,116.33l3.02,-0.39l0.0,0.31l-3.02,0.08ZM297.88,101.15l-4.1,0.32l-1.81,-0.65l-0.81,-1.42l0.92,-0.67l0.14,-1.19l-1.04,-1.65l2.76,-2.67l3.33,-1.53l3.73,-0.21l3.48,0.92l-0.15,2.08l-1.72,1.69l-2.61,3.89l-2.13,1.1ZM276.27,95.63l-2.62,1.5l-1.94,-0.04l-1.07,-0.95l-0.93,-2.24l0.55,-2.46l3.02,-2.04l5.78,-2.48l0.14,1.24l-0.75,4.01l-2.18,3.46ZM248.68,29.55l5.02,1.3l5.97,-0.3l-3.74,2.69l-1.36,0.39l-6.61,0.0l-1.41,-1.77l-1.96,-0.41l-4.38,2.93l-0.82,5.6l0.33,9.28l-0.74,5.19l-0.47,-1.75l-0.09,-4.41l1.14,-18.44l0.92,-3.58l7.39,-20.85l1.45,-1.83l0.2,0.52l2.48,0.26l0.66,1.71l-0.77,2.08l-3.99,2.31l-1.91,2.89l-1.01,3.44l0.84,3.3l-0.57,5.99l3.45,3.49ZM250.17,2.5l1.58,-1.99l3.13,1.68l-4.56,0.24l-0.15,0.07ZM262.95,30.38l10.9,-0.55l-1.37,1.09l-9.53,-0.53ZM266.82,63.1l-0.7,1.01l-1.13,0.36l-1.53,-0.17l-2.59,-1.28l-2.42,0.92l-3.01,-0.94l-5.35,-3.34l1.72,-3.18l2.13,-2.06l2.55,-1.01l3.19,-0.28l5.33,0.33l2.06,1.27l1.65,2.86l0.0,0.94l-1.89,4.56ZM245.51,60.5l-2.39,3.08l4.9,9.27l1.52,0.94l-0.86,0.74l-3.05,1.1l-2.07,-1.89l-3.65,-5.83l2.7,-5.11l1.67,-1.83l1.23,-0.46ZM245.76,60.4l0.08,-0.03l0.0,0.01l-0.08,0.02ZM199.96,148.11l0.73,0.4l0.17,0.83l-0.2,-0.06l-0.71,-1.16Z\", \"name\": \"Schleswig-Holstein\"}, \"DE-NW\": {\"path\": \"M0.44,657.65l2.31,-1.22l1.09,0.62l2.48,2.71l2.37,-0.22l1.27,-1.43l1.87,-3.92l1.26,-1.45l9.02,-7.1l5.56,-3.02l1.59,-2.06l-0.05,-0.53l-1.72,-1.61l2.62,-1.97l-0.07,-0.72l-2.6,-0.73l-4.69,3.22l-1.94,-1.08l-0.65,-2.65l0.28,-3.41l0.83,-3.03l3.05,-4.22l5.0,-9.27l3.43,-2.67l1.07,-1.48l1.44,-6.85l-1.44,-2.08l1.22,-9.17l-1.17,-8.13l-4.04,-4.78l-6.47,-8.93l-0.39,-1.77l1.64,-5.67l-0.22,-0.49l-6.55,-2.89l-2.07,-2.64l1.27,-4.29l-1.09,-1.4l-3.41,-2.29l-3.59,-0.24l0.06,-1.26l2.19,-2.32l0.17,-3.21l-1.34,-3.24l-2.15,-1.72l0.24,-1.02l1.43,-1.02l4.01,-0.73l5.32,-3.07l3.86,-1.04l7.4,1.66l-1.35,-2.59l-4.44,-4.46l2.62,-1.42l2.93,1.4l3.22,2.59l3.32,1.36l3.84,-0.57l2.1,3.05l3.93,0.7l1.36,0.8l0.27,2.27l0.51,0.34l3.97,-1.32l0.4,-1.76l-0.65,-2.92l5.64,1.67l2.28,-0.02l1.69,-0.8l4.78,-3.68l9.65,-3.3l8.63,-0.27l2.84,-1.5l2.45,-2.89l2.21,-4.03l2.01,-1.45l-0.04,-3.39l-3.24,-3.73l-9.94,-5.23l-0.17,-2.14l0.59,-1.43l3.1,-1.14l2.11,-3.95l1.6,-1.66l1.45,-0.81l6.49,-0.82l1.33,-1.25l2.14,-4.39l1.81,-1.91l4.24,-1.89l2.03,-1.83l3.28,-4.9l4.32,-2.63l0.44,-1.13l2.17,0.05l4.05,-1.73l2.66,-2.21l13.38,-0.56l4.13,-0.91l6.74,-4.99l2.94,-0.74l1.84,-1.1l5.03,-5.24l4.49,-3.76l1.74,-0.49l2.89,0.24l1.61,-2.0l1.44,-4.36l1.17,-0.95l-0.17,-0.91l-1.46,-1.39l-0.34,-1.13l1.16,-4.99l0.83,-0.93l7.51,2.45l0.75,1.71l1.21,6.28l2.91,1.38l6.56,4.15l1.5,1.76l1.6,0.4l6.36,-2.52l0.72,0.14l3.51,4.64l2.76,4.82l0.08,0.67l-3.29,0.56l-0.78,0.68l0.26,2.24l1.31,2.5l-2.88,3.66l0.84,3.4l-2.37,3.47l-0.04,0.82l0.93,1.29l2.43,0.48l0.45,1.69l0.97,0.77l4.33,-0.27l2.14,0.87l0.17,0.54l-2.52,7.21l-4.05,0.69l-2.53,1.17l-2.97,2.71l-0.25,1.06l2.16,5.75l6.29,2.91l5.06,-4.49l1.4,-0.68l3.4,-0.61l3.7,1.26l6.99,-2.67l3.06,-2.22l2.3,-3.13l2.97,-2.63l12.23,3.51l1.01,-0.22l0.87,-0.69l1.68,-3.92l4.88,-3.31l1.68,-2.47l0.59,-2.32l-3.33,-2.62l-0.26,-1.37l-0.08,-14.42l-1.92,-8.07l-1.35,-2.18l-2.9,-2.13l-6.35,-3.01l-1.13,-1.76l-1.71,-5.76l1.58,0.57l2.18,-0.01l2.1,0.74l5.69,-0.78l2.54,-1.51l0.64,-1.22l0.94,-4.47l3.07,-2.52l6.73,-0.09l1.68,-0.35l4.79,-2.36l0.85,-0.01l1.51,0.62l1.55,1.35l2.62,4.84l0.33,2.35l-0.24,3.6l0.57,1.69l-0.38,3.96l0.52,1.65l1.53,0.62l10.17,1.1l3.27,-0.38l3.47,-1.43l6.69,-1.56l0.87,-1.28l1.46,-4.61l1.41,-2.78l2.54,-2.64l5.35,-2.85l1.1,0.26l1.6,2.24l1.96,0.93l-0.72,1.89l-1.76,1.75l1.86,6.84l-3.14,5.11l-1.73,3.76l-2.64,1.84l-2.94,-0.22l-1.12,0.33l-1.47,2.99l-1.24,8.79l0.45,1.4l0.86,0.8l7.4,2.55l-2.75,2.07l-0.43,0.97l0.8,3.78l-2.42,-0.08l-3.08,0.89l-0.26,0.52l1.89,5.12l-1.08,3.37l0.65,0.62l6.37,-0.77l6.88,0.96l0.59,0.38l-0.2,3.39l0.96,0.97l2.62,1.13l0.97,1.39l0.11,0.85l-1.26,3.57l2.17,6.32l-0.47,1.47l-1.59,1.44l-0.54,2.29l1.44,1.14l3.49,1.47l0.68,-0.19l0.73,-1.61l1.07,-0.33l3.85,1.64l-1.16,5.19l-1.84,2.29l0.05,0.56l1.01,0.29l3.74,-0.34l2.15,1.05l1.1,3.31l-1.58,5.77l0.29,0.52l1.18,0.24l3.22,-1.06l4.43,0.17l4.49,-1.08l-2.02,3.85l0.47,1.05l1.67,0.64l-0.89,1.36l-0.09,3.65l-1.73,4.7l-2.65,2.21l-0.56,1.74l-0.99,1.38l0.2,5.44l-0.62,1.8l0.26,1.82l-1.44,1.82l-0.28,1.54l0.21,2.03l0.79,0.92l1.6,0.04l3.59,-1.12l-1.58,2.44l-6.95,2.31l-1.41,0.98l0.06,0.79l1.98,1.74l-1.83,5.92l-2.42,2.84l-1.38,2.76l-7.1,4.86l-1.12,4.69l-1.78,0.04l-3.76,2.82l-4.2,-0.7l-2.14,-2.02l-0.01,-3.97l-0.7,-1.08l-2.91,-1.26l-1.96,-1.49l-1.8,-0.59l-1.53,0.8l-4.09,1.08l-5.1,2.57l-0.7,0.92l-0.3,1.76l1.43,2.62l0.43,4.54l0.55,0.48l2.08,0.32l0.55,0.6l-1.16,2.82l-4.08,0.22l-3.67,2.36l-4.5,-1.09l-3.65,1.0l-4.4,0.37l-4.63,1.79l-0.91,1.6l-1.86,1.26l-0.61,1.56l-5.38,6.1l-1.84,4.3l0.35,0.85l1.56,1.31l0.72,2.19l1.88,0.7l1.22,-0.33l1.16,-1.71l4.44,-0.91l2.25,-1.64l0.93,-0.06l-0.31,1.99l1.16,0.9l1.93,9.22l0.06,1.87l-5.5,7.27l1.02,3.79l-4.11,2.61l-3.29,-0.84l-10.05,0.04l-0.38,0.28l-0.39,1.6l1.63,3.32l-0.25,1.99l0.96,4.46l-1.65,2.29l-1.7,3.81l-1.23,0.43l-0.7,0.84l-2.09,4.64l-0.31,4.11l-1.84,-0.11l-1.91,1.25l-3.02,3.16l-0.17,2.09l-2.79,1.97l-4.07,-0.01l-1.64,-2.75l-2.29,0.02l-6.68,6.85l-1.94,1.4l-1.01,2.44l-5.32,4.99l0.01,0.93l0.82,0.79l0.14,1.12l2.48,2.0l0.63,1.16l-0.78,5.17l-1.89,1.09l-1.1,2.16l-3.68,-1.84l-3.44,1.17l-0.58,-2.5l-1.66,-2.95l-4.16,-5.44l-0.96,-1.85l0.28,-4.52l-1.38,-5.41l-1.0,-0.26l-1.97,0.82l-5.44,-5.32l-2.69,-0.96l-1.09,-0.8l1.04,-4.31l0.32,-2.22l-0.29,-0.44l-5.7,-1.59l-1.5,0.38l-3.21,3.05l-0.3,0.96l0.22,4.99l1.23,3.18l-0.13,2.43l-2.86,-0.76l-2.5,2.69l-3.62,2.22l-0.08,0.62l2.17,2.64l-0.2,1.96l-0.46,0.17l-0.47,-0.59l-0.83,0.02l-1.51,2.27l-4.36,1.91l-1.46,2.67l-2.86,-0.1l-3.95,2.19l-8.1,2.26l-3.62,-0.31l-2.71,0.84l-0.75,1.13l0.41,0.77l-0.09,3.71l-0.85,1.69l-0.16,2.01l-2.96,2.16l-5.55,1.53l-5.36,-0.39l-0.92,-1.84l-1.95,-0.67l-0.55,0.45l-1.02,2.49l-2.98,2.73l-0.83,0.26l-2.57,-0.74l-1.51,2.39l-0.86,0.35l-1.85,-0.9l-1.44,-0.11l-6.19,4.08l-5.82,1.82l-2.63,3.93l-2.21,0.66l-0.63,0.63l0.4,4.13l-0.22,2.97l-1.23,1.98l-1.7,0.09l-1.1,-0.56l-2.13,-3.25l-0.78,-0.03l-5.4,2.45l-0.11,2.78l-0.83,2.75l0.3,0.62l2.18,1.5l0.36,4.72l1.66,3.19l0.03,2.06l-7.52,2.19l-1.38,-0.28l-1.2,-1.51l-2.03,-1.4l-0.99,0.12l-2.58,1.74l-0.89,0.0l-0.27,-0.05l0.58,-1.57l-0.33,-0.73l-2.4,-1.44l-1.43,-0.38l-5.85,1.39l-4.67,3.44l-1.97,0.73l-1.09,-2.62l-2.26,-1.43l-1.56,-2.18l-1.13,-0.24l-0.87,0.76l-0.08,1.41l3.4,5.79l-2.45,1.28l-2.03,0.01l-0.11,-0.84l-3.36,-5.86l-0.12,-1.66l1.36,-5.66l0.08,-2.63l-0.46,-0.77l-0.77,-0.25l-1.24,-2.7l-0.28,-1.28l0.21,-1.03l1.01,-1.01l-0.26,-0.68l-5.92,-1.06l-1.96,-1.01l-4.72,1.26l-2.05,-2.81l0.62,-1.05l-0.32,-0.6l-1.61,-0.3l0.6,-1.86l-1.47,-1.84l1.62,-2.54l5.19,-3.81l1.96,-3.47l-0.19,-1.2l-0.38,-0.31l-6.69,-0.16l-1.82,-0.96l-0.92,-1.79l1.0,-0.62l0.12,-0.56l-5.98,-9.16l-1.93,-1.96l-2.03,-0.26l-3.8,1.05l-0.97,-0.11l-0.28,-0.94l0.3,-3.12l-1.77,-1.24l0.36,-3.0l-1.64,-1.67l-0.94,-2.47l1.23,0.13l1.52,-1.51l0.53,-2.01l-0.3,-2.63l0.75,-1.36l1.16,-0.66l2.42,0.04l1.16,-1.43l0.65,-2.97l-0.81,-3.22l0.86,-2.38l-0.25,-0.49l-3.15,-1.1l-2.87,-2.11l-0.36,-3.25l0.96,-2.74l-0.64,-1.12l-3.42,0.42l-4.1,-1.02l-4.71,1.81l-0.11,-3.56l-1.5,-4.46l-0.52,-3.35Z\", \"name\": \"Nordrhein-Westfalen\"}, \"DE-SN\": {\"path\": \"M649.01,765.4l-0.3,0.43l-1.35,0.24l-5.18,3.77l-3.09,5.6l-3.02,3.16l-0.31,2.5l-1.87,2.4l-0.6,1.63l-0.31,2.84l0.86,4.64l-1.08,0.78l-1.34,-0.17l-0.86,-1.34l-1.85,-6.9l-2.46,-2.85l1.27,-1.56l-0.3,-1.65l-1.03,-0.57l-4.05,-0.47l-0.96,-0.85l-0.3,-3.6l-0.61,-1.58l-2.03,-1.52l-4.7,-0.4l-0.85,-1.27l-2.79,-0.81l-2.12,0.03l-5.2,-3.25l-0.69,-5.41l-2.12,-1.47l-2.07,-3.22l-1.06,-0.4l-2.34,0.24l-0.59,-0.96l1.12,-1.39l2.37,-1.07l0.38,-1.82l1.03,-1.45l-0.25,-2.33l-1.85,-1.93l0.75,-2.47l0.99,-1.4l2.32,-1.79l2.03,-2.84l1.66,-0.02l2.01,2.1l1.91,0.25l1.3,-1.11l2.11,-3.51l1.27,-0.26l2.19,0.96l2.84,-0.95l0.91,-1.07l0.69,-2.41l-0.13,-3.07l2.59,-3.29l6.43,0.03l3.71,-2.69l1.23,-1.38l1.99,-3.48l-0.18,-0.56l-4.09,-0.79l-1.2,-3.02l0.31,-2.79l-1.33,-1.02l-1.43,0.18l0.78,-2.59l0.79,-0.69l1.43,-0.36l1.74,-2.44l-0.4,-1.08l-1.72,-0.8l-1.03,-1.16l0.09,-1.14l6.97,-2.11l3.87,-3.03l3.31,-0.4l1.13,0.78l0.78,-0.11l3.92,-5.09l3.73,-2.05l0.74,-1.55l1.53,0.58l2.22,-0.25l3.24,0.43l1.4,-0.33l1.41,1.17l2.19,-2.66l1.75,-1.17l-0.01,-1.37l-2.07,-4.47l-2.37,-3.75l-5.64,-3.04l-1.21,-1.22l-3.97,-7.51l-1.03,-4.92l-15.19,-4.61l-6.42,0.62l-3.95,-0.78l-0.56,-0.7l-0.42,-2.69l-2.18,-2.1l-0.84,-1.68l0.44,-4.14l-0.3,-0.43l-2.74,-0.81l-0.03,-0.8l1.42,-2.71l-0.27,-5.11l-0.44,-1.79l-1.81,-2.46l-0.13,-3.11l-0.78,-2.82l0.41,-1.59l1.4,-2.2l2.23,-0.48l0.73,-0.71l0.52,-3.15l-1.6,-5.06l-0.25,-6.12l-0.88,-1.86l-0.23,-3.1l3.37,-3.7l0.47,-1.96l0.0,-7.18l2.8,-2.41l0.81,-2.61l2.91,1.31l3.21,0.36l5.79,-2.61l7.21,-0.74l0.74,-0.48l0.85,-4.22l0.62,-0.26l7.6,0.32l1.46,0.92l9.35,-1.64l0.82,0.81l1.32,-0.04l2.25,-1.9l1.73,-3.17l1.24,-0.71l3.43,0.48l3.16,1.24l1.97,-0.95l5.13,-4.29l0.85,-1.28l2.37,-0.23l0.96,2.06l1.38,1.03l4.83,1.87l1.67,1.7l1.25,-0.23l1.7,-1.16l0.45,0.18l2.71,2.63l2.92,0.94l2.68,3.31l1.44,1.01l1.12,0.35l1.2,-0.53l2.87,2.31l-0.35,4.04l1.08,1.5l1.96,1.19l1.31,4.82l-0.23,1.31l-1.81,1.66l1.02,3.05l-0.17,3.92l-0.65,1.9l-1.73,2.24l0.24,1.76l0.97,1.78l0.88,0.08l1.39,-1.74l0.85,0.13l0.77,-0.94l1.42,0.51l1.68,2.21l10.91,-3.64l2.47,-1.82l1.97,-0.22l4.48,2.21l2.18,2.16l2.41,1.63l1.59,2.39l1.37,0.65l2.23,-0.36l5.8,1.72l14.92,1.15l16.88,-2.09l2.32,0.66l1.02,-0.36l7.38,-10.97l1.55,-3.64l0.21,-2.52l0.52,-1.07l3.79,-4.99l1.16,-1.06l3.86,-2.14l5.98,-1.45l4.59,0.6l3.43,1.27l3.6,2.26l3.88,-0.91l12.92,-6.51l4.17,-1.18l3.99,0.3l6.66,3.21l4.06,0.21l0.35,1.5l2.33,2.38l6.35,2.15l4.3,2.76l6.82,2.44l3.21,2.99l0.91,1.96l-0.79,2.0l1.4,13.84l2.12,4.39l2.23,2.64l1.37,2.92l-0.49,4.44l0.67,1.03l-1.6,3.12l-1.34,4.23l-0.8,4.39l-0.3,5.9l-1.95,2.94l-0.48,6.27l-9.28,22.85l-3.45,3.84l-1.43,2.35l-0.07,3.03l-1.53,4.08l-1.73,2.71l-3.45,0.31l-3.51,-0.8l-5.13,-3.62l-3.31,-0.95l-0.37,-0.88l0.32,-2.62l2.23,-5.98l-0.53,-1.98l-1.72,-0.28l-5.21,2.17l-0.72,-0.57l2.41,-5.84l-0.12,-3.98l-2.02,-2.84l-1.27,-1.01l-2.72,-0.72l-1.1,-0.77l-0.84,-1.17l-1.12,-3.17l-0.74,0.01l-0.8,2.02l-0.88,0.46l-3.46,-0.2l-2.84,1.22l-1.81,-0.53l-2.04,-2.46l-3.65,-1.2l-3.31,0.49l-2.68,2.68l-1.36,4.43l-1.06,1.54l0.11,0.56l1.31,0.82l3.27,0.43l1.42,0.58l-0.74,0.7l-0.09,1.63l2.61,2.79l3.76,1.16l2.33,1.36l-0.53,3.45l-2.63,2.26l-7.54,-0.59l-3.64,0.74l-4.2,4.95l-15.18,6.98l-5.32,-0.34l-2.21,0.49l-3.48,3.37l-3.18,0.06l-0.97,1.26l-0.41,1.5l0.3,3.2l-0.54,0.77l-1.12,0.21l-2.79,1.74l-1.63,0.33l-4.53,-0.5l-2.22,0.24l-5.53,1.73l-8.77,-0.05l-4.66,0.9l-4.02,2.43l-0.15,0.51l1.08,2.26l-0.34,1.87l-2.81,2.79l0.34,2.34l-4.74,4.72l-1.59,0.4l-1.98,-0.97l-2.51,-3.68l-1.72,-0.5l-0.96,1.41l-3.77,2.73l-1.56,4.03l-1.75,0.89l-3.17,-1.8l-2.33,0.08l-3.24,8.73l-1.35,2.46l-2.23,1.67l-5.03,-0.29l-4.64,1.29l-3.43,-1.08l-1.77,0.82l-1.41,9.24l-4.11,4.32l-3.09,-0.17l-9.9,-5.78l-1.24,0.23l-1.8,1.08l-3.3,-0.14l-1.72,0.6l-1.39,1.34l-3.17,4.34l-1.08,0.13l-5.28,-0.96l-7.35,0.55l-4.04,1.19l-3.7,3.2l-0.83,2.25l0.19,1.53Z\", \"name\": \"Sachsen\"}, \"DE-HB\": {\"path\": \"M265.62,310.84l0.8,0.18l2.21,-0.58l2.68,1.7l7.17,2.71l2.14,-0.54l3.22,0.01l0.46,1.58l2.72,1.87l4.48,0.39l3.54,3.03l4.41,1.97l1.4,-0.61l1.22,-3.12l0.71,-0.29l3.36,3.83l-1.42,1.53l-0.27,0.98l0.45,1.13l2.36,2.53l0.29,0.79l-1.03,1.9l-0.6,4.65l-1.38,1.52l-3.93,2.76l-4.56,-3.57l-0.63,0.2l-0.16,1.47l-1.64,0.57l-1.7,-0.26l-5.2,-3.2l-5.28,1.06l-1.19,-0.22l-0.2,-5.36l-4.74,-5.33l-1.51,-2.32l-0.64,-4.79l-1.4,-2.83l-1.0,-0.75l-3.06,0.06l-2.31,-1.59l-3.92,-1.6l-1.38,-3.36l2.55,-0.04l2.99,1.94ZM265.89,246.05l2.3,0.41l4.15,-0.11l-1.05,2.45l2.13,7.99l-0.12,3.08l-1.59,2.74l-1.99,1.87l-0.96,-1.63l-1.38,-0.18l-1.48,-2.56l0.82,-4.82l-4.85,-10.73l4.02,1.48Z\", \"name\": \"Bremen\"}, \"DE-SL\": {\"path\": \"M65.91,909.17l-0.21,-2.27l-0.64,-1.35l-1.75,-1.75l-9.12,-4.58l-1.4,-0.2l-2.68,1.59l-1.32,0.13l-0.3,-5.31l0.58,-4.47l13.56,-1.25l11.46,0.51l6.25,-2.86l2.28,0.21l1.99,-0.4l14.47,-6.69l7.94,-5.02l2.9,1.39l0.9,-0.21l1.77,-1.34l7.03,3.84l6.38,0.37l2.1,2.07l4.93,3.5l3.13,-0.28l2.91,-1.77l0.07,2.19l1.71,4.13l0.25,4.07l0.25,0.54l1.04,0.37l0.18,2.17l-2.75,2.03l-1.93,2.49l-0.92,0.59l-0.52,1.05l0.61,2.29l4.07,4.98l-0.06,1.61l1.1,0.66l4.87,0.83l2.31,0.87l0.81,0.47l0.41,1.05l-0.66,1.86l0.39,1.64l-0.76,1.28l-2.06,1.89l-0.56,2.68l-1.52,1.79l-0.72,3.26l-1.16,1.67l-2.17,0.39l-0.94,2.31l0.89,4.92l5.38,5.51l1.34,0.07l-1.28,0.79l-1.6,3.66l-3.65,0.96l-2.06,3.29l-3.11,-1.31l-8.4,-0.08l-2.94,-1.27l-3.73,-2.72l-0.73,-0.14l-1.33,1.32l0.28,2.08l-2.64,1.67l-1.83,-1.45l-1.08,-3.94l0.05,-5.24l-0.38,-0.4l-2.03,-0.1l-6.04,-3.43l-1.22,-0.22l-2.9,0.28l-4.03,-0.92l-1.17,0.24l-0.85,2.58l1.07,4.71l-1.5,2.0l-0.98,0.23l-3.85,-1.4l-4.29,-0.04l-0.96,-0.41l-1.12,-1.87l0.74,-3.56l-0.61,-2.58l-0.8,-0.29l-1.52,0.89l-1.59,-5.31l-2.22,-1.29l-0.16,-2.82l-8.1,-8.24l-0.55,-1.53l0.39,-1.0l1.84,-0.33l0.42,-1.49l-0.42,-1.04l-5.23,-5.77Z\", \"name\": \"Saarland\"}, \"DE-BY\": {\"path\": \"M307.22,810.29l0.93,-1.11l0.93,-0.0l0.77,-0.57l0.39,-4.33l0.83,-1.29l3.71,-0.97l5.1,-2.38l3.9,2.06l-0.87,1.83l0.88,0.4l2.16,-1.42l1.77,-2.09l0.49,-2.5l3.28,-1.03l9.66,0.69l4.6,2.37l1.46,2.89l1.6,1.93l2.33,0.38l1.64,-0.24l6.19,-2.67l1.1,-1.6l-0.49,-3.9l1.7,-3.83l-0.62,-1.03l-2.08,-0.36l-0.3,-0.45l0.99,-4.18l-0.16,-4.14l1.86,0.47l1.06,-0.54l1.44,1.58l2.46,-0.45l1.71,0.78l1.53,-0.05l4.99,-1.68l0.44,-0.73l-0.68,-1.56l0.04,-0.97l1.4,-3.0l0.6,-0.61l4.05,-1.67l1.68,-1.14l1.07,-1.32l-0.5,-6.57l2.3,-8.32l1.09,-1.7l1.84,-0.72l2.59,2.84l1.17,0.44l2.05,-0.14l5.98,-2.33l6.14,-3.63l2.02,-1.76l1.24,-2.01l3.14,-5.61l1.02,-2.96l5.28,-5.92l1.14,-0.81l0.06,1.49l0.82,0.76l5.42,-0.37l1.14,0.34l1.64,1.79l1.26,3.46l9.38,3.61l0.79,1.53l0.03,2.15l0.42,0.9l3.15,3.46l2.58,2.09l-0.78,1.97l1.0,2.0l2.54,0.51l2.34,-0.63l1.45,2.7l2.62,2.24l0.23,1.41l0.55,0.57l2.85,0.25l1.07,-0.8l1.21,-0.17l1.24,2.72l2.45,2.06l0.84,4.96l-0.62,3.33l1.31,3.27l-0.33,1.79l0.61,1.37l1.09,1.11l4.38,-0.02l2.29,0.64l3.39,2.0l0.66,-0.12l0.41,-0.6l0.49,-4.86l0.53,-0.61l1.76,0.7l3.89,-0.76l3.03,1.12l1.21,-0.2l0.8,-0.98l0.11,-2.29l-0.71,-1.74l-2.78,-1.07l-1.4,-2.24l-2.95,-0.2l-1.82,-1.92l-3.28,-2.34l0.64,-5.11l0.52,-0.38l1.91,0.66l0.95,-0.19l2.95,-4.32l2.07,0.58l2.61,-1.38l2.28,0.25l1.43,-0.71l1.96,1.84l3.27,-0.87l1.2,0.05l3.27,4.78l1.11,0.95l0.8,-0.36l0.4,-1.67l2.5,0.36l1.6,1.75l0.97,0.33l3.7,-1.06l1.28,-1.36l1.1,-0.25l0.79,1.73l1.46,0.39l1.77,3.1l-1.98,2.7l0.8,1.8l4.81,4.56l0.63,-0.1l1.06,-1.78l1.25,1.01l2.31,0.72l1.39,-0.29l0.39,-0.89l-0.17,-1.51l1.04,-2.58l-0.67,-2.41l1.11,-3.08l-0.18,-1.68l0.91,-0.39l0.23,-0.64l-0.33,-2.47l-1.15,-1.96l-0.61,-2.54l0.35,-3.75l-1.29,-6.67l4.37,-1.63l2.01,-1.32l0.93,-2.38l1.23,-0.61l0.79,-0.97l6.0,0.33l1.43,0.46l1.01,2.12l-1.77,1.76l-0.24,5.16l0.32,1.54l3.43,2.62l2.21,0.0l0.9,4.62l3.93,2.85l0.9,0.14l2.4,-0.62l1.34,-1.87l1.9,0.03l3.09,1.18l11.65,-2.47l1.71,-0.52l0.59,-0.89l2.04,-0.35l0.92,0.08l0.71,0.99l1.8,0.86l-0.01,1.31l0.84,0.34l4.48,-1.83l3.19,-1.89l2.41,-0.25l0.64,0.27l2.0,3.16l1.97,1.3l0.39,4.98l0.44,0.58l5.42,3.38l2.28,0.02l2.56,0.75l0.27,0.47l-2.13,0.1l3.04,4.05l0.18,3.84l-1.61,1.33l-1.26,2.27l1.17,1.97l4.81,3.01l3.4,4.24l0.71,1.73l0.27,2.19l-0.67,3.42l0.07,2.51l0.98,2.48l4.32,3.38l0.8,1.38l0.54,3.92l15.15,8.22l1.4,1.39l3.72,0.48l1.45,1.39l0.23,1.99l-0.67,2.07l0.08,2.03l5.35,2.89l0.48,0.86l-0.3,2.79l-0.76,2.26l-2.26,4.16l-0.63,2.04l-1.59,-0.49l-0.5,0.28l-0.61,2.25l-0.34,5.5l-1.42,1.43l-3.99,1.7l-1.38,2.76l1.53,3.62l2.11,3.04l2.96,2.34l4.54,2.24l0.71,1.43l0.07,1.83l-0.8,1.77l0.89,0.95l-0.33,1.62l1.0,1.21l2.39,1.36l0.94,1.04l0.64,1.54l0.88,5.15l2.06,4.39l1.28,1.27l2.6,0.59l0.41,7.39l0.49,2.45l1.15,2.29l2.1,1.78l4.46,2.1l1.88,1.95l3.19,7.16l1.78,1.83l2.02,0.72l5.89,0.85l1.85,-0.25l0.34,-0.48l-0.35,-1.58l0.88,-0.28l3.6,0.99l1.58,0.86l4.11,4.03l1.69,0.74l1.12,4.03l3.16,3.77l1.25,0.73l9.11,12.41l2.86,5.48l2.92,1.76l6.05,0.33l1.85,0.71l1.12,0.96l2.98,4.01l4.12,4.21l1.04,2.46l0.06,4.13l1.47,2.5l6.03,4.99l2.35,1.14l0.55,-0.22l1.86,-4.08l1.12,-0.52l2.05,0.44l5.02,3.3l1.62,-0.11l0.23,2.53l1.04,2.71l1.57,2.41l1.73,1.74l1.97,0.96l3.7,0.6l1.23,0.69l2.2,3.46l4.74,9.46l1.8,1.89l-2.82,5.95l-0.26,1.52l0.71,0.38l0.97,1.86l1.3,0.86l-1.02,1.09l-0.25,1.77l0.51,4.88l-0.37,4.53l-2.67,6.14l-1.39,1.02l-2.62,0.46l-0.86,1.78l-0.74,3.35l-3.7,-1.68l-1.54,-2.32l-3.44,-2.18l-10.33,-2.86l-3.38,0.46l-3.34,1.29l-1.55,2.19l0.76,3.89l0.93,1.51l0.19,1.15l-2.06,5.56l-0.19,7.05l-0.88,1.78l-0.75,3.87l-1.3,2.18l-9.52,8.34l-3.21,1.8l-13.44,2.35l-10.26,4.08l-5.33,4.69l-3.18,1.79l-1.62,1.58l-5.03,0.98l-1.61,0.84l-4.04,5.35l-3.86,2.72l-1.84,2.7l-1.73,0.39l-0.82,1.24l-0.25,2.14l0.51,2.07l1.83,3.33l6.91,7.26l1.42,3.17l0.83,3.34l0.85,1.26l2.44,1.51l4.33,4.02l3.29,7.67l2.45,3.54l-6.18,9.97l-0.57,1.23l-0.39,2.77l-2.43,3.82l0.05,0.5l1.8,1.74l5.48,1.03l4.08,-1.34l1.31,0.21l2.26,2.24l2.63,5.27l0.27,1.8l-0.27,3.34l-1.46,3.59l-1.86,2.16l0.17,3.36l-1.17,2.8l0.08,3.47l0.82,3.45l-2.69,3.19l-1.34,0.53l-2.22,-1.46l-2.64,0.73l-0.89,-0.36l-4.73,-3.59l-5.34,-5.64l-2.52,-0.64l-2.21,-1.8l-0.48,-3.33l1.1,-3.13l2.54,-1.26l0.1,-0.65l-4.5,-3.59l-1.36,-1.67l0.93,-2.32l-0.42,-0.55l-1.6,0.2l-5.54,-1.42l-3.59,0.01l-3.49,0.85l-1.96,0.97l-4.4,3.93l-1.43,0.64l-3.87,0.34l-1.27,-0.63l-3.59,-3.18l-2.27,-5.32l-1.83,-0.3l-5.37,1.71l-5.74,-1.19l-2.14,0.31l-3.08,1.28l-0.75,-0.67l-0.46,-1.38l0.92,-1.78l0.88,-3.32l-0.45,-0.56l-2.66,1.27l-4.1,2.99l0.59,2.19l2.01,2.1l0.37,4.44l-0.41,2.1l-2.67,3.44l-23.18,-0.86l-8.37,1.73l-1.11,0.66l-1.07,2.49l-0.75,0.25l-5.42,-1.11l-8.02,-0.05l-6.13,-0.91l-3.45,3.03l-1.92,6.21l-1.67,1.86l-2.0,0.8l-4.48,0.74l-4.61,-1.02l-2.38,0.54l-4.83,5.46l0.2,0.65l2.04,0.91l0.27,0.78l-0.69,1.17l-1.4,0.6l-4.18,0.1l-1.94,0.6l-4.71,5.08l-1.97,0.91l-1.86,-0.21l0.19,-3.57l-2.59,-1.26l-2.61,0.73l-6.36,4.42l-1.8,0.54l-10.08,-0.14l-1.17,-0.69l-0.76,-1.49l0.63,-1.89l-0.44,-1.89l-4.89,-5.31l-5.07,-2.38l-0.42,-0.72l2.87,-1.95l0.9,-1.08l-0.07,-0.57l-3.34,-2.32l-1.67,-0.13l-5.34,2.21l-2.76,0.33l-0.63,-0.19l-1.31,-1.93l-12.95,-4.91l-2.51,-0.05l-1.69,1.11l-1.96,2.74l-1.12,0.91l-5.04,-0.45l-2.59,-1.72l-0.14,-1.04l0.96,-2.14l-0.59,-1.77l-0.73,-0.33l-2.4,0.6l-1.72,1.0l0.19,1.39l1.44,3.1l-1.1,7.01l2.27,1.97l0.48,1.19l0.42,4.74l-0.87,3.16l-1.4,2.87l-1.56,2.1l-3.99,2.04l-2.78,5.32l-3.58,4.02l-4.33,2.66l-2.07,0.81l-7.61,0.93l1.08,-2.1l1.5,-0.56l0.74,-0.76l-0.0,-2.86l1.74,-5.25l0.09,-2.72l-2.28,-1.39l-4.31,0.79l-1.64,1.61l-1.83,-0.68l-2.6,1.2l-0.76,-0.75l-0.83,-4.3l-0.89,-1.13l2.04,-1.69l0.43,-1.82l-0.85,-1.69l-4.87,-7.14l-0.5,-0.14l-2.64,1.57l-0.75,-0.45l-0.18,-1.65l-0.89,-1.95l-2.23,-2.58l-0.26,-2.29l-0.65,-0.27l-1.13,0.89l-1.32,0.26l-2.81,-0.22l-3.14,-1.08l-2.31,0.95l-1.74,-0.9l-0.56,-5.03l-1.3,-1.36l-1.56,-0.52l-1.63,0.2l-1.53,0.85l-2.13,2.5l-2.62,4.82l-2.48,1.19l-6.16,0.11l-5.06,-1.39l5.43,-7.55l3.94,-1.04l1.04,-1.55l1.34,-0.65l3.54,0.93l4.5,-2.32l7.24,-6.48l2.78,-1.33l3.85,1.66l2.37,0.58l2.46,-0.02l3.51,-1.16l2.12,-1.18l2.35,-0.65l1.66,0.04l0.49,0.39l1.53,3.79l0.66,0.05l1.04,-1.44l0.33,-2.77l2.75,0.84l0.97,-0.74l0.44,-2.16l-0.84,-2.98l-0.56,-7.62l-0.49,-0.88l-1.25,-0.2l-1.94,-2.76l0.75,-1.34l2.32,-0.37l1.82,-2.33l-2.54,-6.4l-0.45,-0.48l-1.23,-0.18l1.01,-1.19l0.94,-3.39l0.4,-5.37l-0.19,-0.85l-1.31,-1.45l-0.95,-2.44l0.17,-0.77l1.31,-1.06l2.91,-8.16l0.74,-3.29l0.16,-5.6l-0.33,-1.99l-2.62,-5.95l-3.86,-17.77l-1.56,-5.32l-3.15,-5.36l-1.91,-4.2l-1.42,-0.37l-0.65,-1.22l5.96,-7.86l-0.13,-2.22l2.1,-2.89l3.32,-0.7l2.86,-1.71l0.6,0.71l0.41,1.92l1.58,0.58l9.54,-5.82l0.52,-2.07l1.17,-1.33l5.1,-0.69l-0.63,-1.34l1.1,-3.19l0.18,-1.82l-1.3,-4.65l1.69,-1.08l0.51,-1.4l-0.6,-1.03l-4.03,-2.99l-1.65,-3.18l0.14,-1.7l2.05,-2.85l2.25,1.94l2.93,0.15l1.55,3.14l0.85,0.51l5.8,-6.01l0.74,0.49l-0.58,0.47l-0.6,3.15l0.87,1.44l1.75,-0.85l4.25,-3.96l-2.32,-5.64l-2.99,-1.26l-0.79,-1.81l0.06,-1.34l0.73,-1.43l-0.03,-3.7l1.4,-1.96l0.54,-2.62l-1.08,-2.87l0.47,-1.61l0.26,-5.81l-0.97,-1.03l1.98,-1.02l0.16,-1.28l-0.91,-2.88l-1.27,-1.39l-0.71,-1.79l-2.41,-3.42l-4.06,-3.34l-1.6,-3.93l-8.0,-2.67l0.39,-2.26l-1.89,-2.01l0.2,-1.83l-3.05,-1.64l1.88,-0.36l1.02,-1.86l0.59,-3.02l-0.33,-1.69l-2.28,-2.05l-2.18,0.84l-3.67,-4.55l-3.12,-2.49l1.02,-0.42l0.3,-0.9l-1.56,-2.51l-0.15,-3.26l-1.4,-1.55l-0.25,-0.85l0.07,-0.29l2.17,0.96l0.89,-0.7l0.09,-1.26l-1.25,-3.43l0.71,-2.7l-0.48,-0.84l-1.84,-0.86l-0.87,-1.2l0.03,-4.9l1.58,-1.91l0.81,-0.12l1.86,0.65l0.63,-0.71l-3.11,-7.81l-2.67,-1.31l1.12,-1.8l0.77,-2.54l-1.1,-3.06l0.79,-1.94l-0.13,-1.15l-0.63,-0.59l-1.45,-0.21l-0.84,-0.56l0.38,-2.61l-2.25,-1.19l-2.36,1.88l-0.47,0.83l0.82,1.5l0.01,1.21l-3.6,3.81l-0.69,0.37l-7.69,-0.02l-0.62,-10.2l-1.67,-1.85l0.61,-1.41l-0.68,-1.3l-1.27,-0.14l-1.73,2.12l-1.45,0.67l-0.95,2.44l-1.04,0.28l-0.7,-0.57l1.99,-2.69l0.03,-2.69l1.78,-2.46l0.42,-1.66l-0.81,-1.61l-3.8,-4.27l-0.25,-5.92l-3.86,-5.09l-0.7,-0.15l-2.79,1.49l-3.36,3.65l-1.09,-2.24l-0.26,-2.3l-1.08,-0.49l-0.95,1.45l-1.42,0.89l-0.45,2.43l-1.98,0.17l-1.88,-1.27l0.86,-2.27l-0.08,-1.31l0.83,-0.89l-0.2,-1.69l0.56,-1.58l-0.32,-2.34l0.7,-1.72l-0.82,-1.33l-4.66,1.84l-2.57,-1.66l-3.01,0.49l-5.38,-2.52l-5.39,0.48l-3.55,1.29l-4.85,-0.31l-2.4,1.17l-1.69,2.05l0.7,2.62l-0.69,1.61l0.06,1.13l0.8,0.91l4.55,1.02l0.29,0.58l-0.41,2.15l0.47,0.79l0.95,0.1l0.9,-0.5l1.16,-2.6l2.24,0.95l-0.99,6.97l0.68,1.74l-1.53,1.43l-2.48,-1.59l-2.99,1.26l-3.2,0.27l-2.21,1.12l-0.9,1.2l0.3,2.46l-1.33,1.41l-0.69,2.16l-0.77,1.01l-7.77,-0.05l-5.5,1.21l-0.79,-0.5l-1.37,-2.35l-1.97,-1.9l-0.3,-0.78l3.16,-3.22l0.6,-1.12l-1.15,-6.97l2.1,-0.43l1.41,-1.58l-0.22,-2.84l1.59,-4.06l-0.47,-0.8l-2.19,-1.08l-0.22,-0.86l1.54,-2.3l0.53,-1.76l-1.03,-1.5l-2.09,0.23l-1.02,-0.79l-0.77,-2.11l-0.02,-4.45l-1.07,-0.11l-1.16,1.84l-0.62,-1.15l-3.47,-10.75l0.19,-10.68l1.53,0.6l0.92,-0.7l-1.22,-2.81l0.12,-1.66l-0.96,-1.64l-0.52,-3.31l-0.61,-0.93l-1.34,-0.31l-1.47,0.64l-1.35,-0.87Z\", \"name\": \"Bayern\"}, \"DE-MV\": {\"path\": \"M495.86,194.66l-0.15,1.45l1.0,0.85l3.25,-0.51l1.79,-1.24l-0.25,-0.83l-4.7,-1.85l-0.55,-0.95l0.03,-4.18l0.07,-0.3l1.57,-0.13l4.13,-3.99l3.43,-1.01l5.17,-2.79l11.75,-1.56l1.23,1.04l1.36,3.55l3.57,1.1l0.38,0.6l-0.43,3.67l0.42,2.12l1.41,0.79l3.86,-0.01l3.9,-3.31l2.08,3.22l3.98,0.1l3.86,5.14l1.06,0.65l1.11,0.0l0.4,-0.37l0.13,-1.7l1.75,-6.01l-0.41,-2.69l0.62,-1.03l1.86,-1.32l-0.56,-3.19l3.2,-3.27l-0.15,-1.79l2.55,0.66l2.35,-1.73l1.71,-4.33l2.09,-1.21l1.2,-1.89l0.52,-2.22l-0.72,-0.81l0.27,-1.34l3.14,-5.35l2.97,-2.07l3.68,-0.53l8.29,1.45l23.39,-5.06l3.27,-2.08l0.42,4.13l-0.37,4.62l0.22,4.0l2.37,2.94l0.52,0.08l-1.73,-8.3l0.9,-1.71l2.9,-1.76l0.84,-2.26l-0.33,-0.54l-1.22,-0.11l-1.95,0.56l0.13,-0.27l3.29,-4.33l2.04,-1.87l2.28,-3.85l9.96,-5.26l3.78,-3.18l1.5,-1.78l3.58,-6.94l5.89,-8.55l4.71,-8.71l1.57,-4.44l1.02,-1.34l0.96,-0.49l-0.23,0.41l2.09,3.39l4.41,1.9l22.41,0.03l3.6,1.75l2.49,-1.23l2.51,0.63l0.98,1.48l-2.1,1.96l-2.34,0.51l-10.39,-0.9l-4.15,-1.57l-2.87,-0.35l-0.94,0.48l-1.41,1.79l-4.33,-0.48l-1.22,0.58l-0.52,1.46l-0.71,-0.46l-2.19,1.65l0.24,1.6l1.01,1.11l-1.49,-0.74l-2.11,0.2l-1.95,1.26l-0.76,1.51l-1.33,-1.62l-2.09,-1.03l-3.56,-0.33l-1.8,0.8l-1.55,2.22l-0.62,2.58l0.42,2.23l-1.91,-0.94l-0.61,0.1l-0.7,1.48l0.61,1.91l-0.43,1.8l-1.09,1.28l-1.48,0.35l-0.29,0.5l1.68,5.33l-1.0,1.19l0.08,0.58l4.29,2.99l2.51,0.68l2.41,-1.37l0.17,-0.46l-2.84,-0.72l-1.77,-1.57l0.54,-1.69l3.27,-3.72l2.2,-1.22l0.58,-3.56l1.53,-1.3l6.33,-3.07l0.06,-0.68l-1.79,-1.14l0.0,-0.56l1.48,-0.55l1.16,0.59l0.65,-0.57l1.53,1.13l3.03,-0.8l5.35,-3.07l-0.4,-2.61l2.92,-1.13l0.84,0.09l0.0,0.59l-1.4,0.45l-1.06,1.47l-0.59,1.99l-0.24,2.11l0.27,0.42l0.47,-0.18l1.81,-3.71l1.42,2.22l1.26,0.65l1.31,-1.09l0.84,0.75l1.33,0.06l1.61,-1.45l1.2,2.81l2.14,2.57l3.59,-0.21l1.16,-0.37l1.16,-1.07l2.72,-5.72l2.43,-2.43l3.83,-2.49l3.73,-1.39l1.7,0.5l-0.88,1.02l-0.05,2.0l0.78,2.29l1.21,1.74l4.34,2.3l0.91,0.89l-1.76,3.3l0.45,2.74l2.76,4.47l0.75,5.29l1.28,0.61l3.99,0.0l0.0,0.46l-1.39,0.37l-1.27,1.2l0.41,0.27l3.08,-0.29l5.02,2.86l3.47,0.84l2.35,1.3l3.19,6.56l2.37,2.15l-2.33,2.05l0.29,0.68l2.64,-0.07l3.49,-1.79l1.39,0.54l-0.61,1.56l-1.15,1.36l0.06,0.64l1.56,0.71l1.27,-0.85l0.53,0.15l3.1,6.99l1.59,2.15l2.02,1.27l2.31,0.03l0.41,-0.4l0.0,-1.14l-2.74,-3.61l0.0,-0.64l11.89,-2.36l2.96,-1.38l4.97,-3.4l2.42,-0.81l0.12,0.89l-1.66,1.02l0.22,1.39l2.95,1.53l7.62,6.41l0.0,0.85l-1.4,2.47l-1.96,5.99l-2.54,1.58l-0.03,0.66l1.15,0.88l3.92,5.41l3.93,2.03l0.97,2.98l0.1,2.22l0.65,0.36l1.31,-0.12l3.52,1.77l0.14,1.29l-0.56,1.74l-1.04,1.47l-7.1,5.92l-1.02,2.47l1.07,2.24l3.66,1.33l0.66,0.49l0.63,1.79l1.44,2.1l1.65,1.49l1.21,-0.09l7.09,5.94l3.27,0.79l1.92,2.3l3.2,0.08l3.78,2.0l7.9,0.59l2.92,-0.86l1.87,-2.76l1.29,0.25l1.24,1.2l0.25,2.4l-0.67,1.06l-4.52,3.24l0.03,0.67l2.74,1.25l2.03,0.2l-0.25,6.92l1.46,3.22l2.05,6.37l-0.01,11.27l0.72,3.48l2.4,3.79l1.05,3.48l2.01,3.41l1.03,8.48l2.01,9.39l-6.39,3.97l-2.8,3.6l-2.51,1.24l-0.78,2.42l-1.14,0.85l-6.28,-0.61l-7.5,-1.52l0.08,-2.63l8.09,-5.49l3.63,-5.75l1.58,-3.74l0.46,-3.15l-0.15,-4.35l-2.6,-0.89l-4.13,0.24l-3.68,-1.78l-2.69,0.67l-1.83,2.6l-4.34,-1.32l-5.9,-0.43l-6.64,0.5l-1.36,-2.05l-0.54,-2.27l-2.79,-5.12l-0.4,-3.86l-4.46,-1.75l-2.37,-3.74l-1.96,-0.44l-0.46,0.37l-0.13,3.28l2.44,4.59l0.37,1.68l-2.51,1.11l-3.35,-0.25l-3.71,0.61l-5.95,5.13l-1.89,3.39l-2.06,1.93l-3.34,0.14l-2.08,1.08l-1.47,1.45l-1.29,4.98l-3.15,7.7l-2.26,2.63l-1.08,0.4l-5.11,4.14l-1.55,0.55l-1.62,-0.42l-4.04,-2.15l-2.18,-0.43l-2.71,0.29l-1.68,0.87l-1.72,2.01l-1.3,3.03l-0.54,3.01l-2.34,0.0l-1.03,-0.47l-2.25,-3.33l-1.51,-0.48l-0.98,0.29l-3.39,2.87l-1.38,3.23l-5.62,4.26l-3.89,4.38l-2.27,0.39l-2.59,-1.31l1.34,-2.08l-0.23,-0.99l-0.71,-0.56l-2.09,0.72l-2.65,0.03l-3.81,0.88l-4.19,-2.07l-6.76,0.74l-0.86,-0.98l-0.41,-4.04l-1.05,-0.62l-2.39,-0.12l-3.97,-1.1l-2.57,-2.64l-1.46,-0.73l-11.01,-2.73l-3.2,0.78l-3.4,0.25l-1.33,-0.29l-1.39,-1.97l-2.86,-1.66l-4.7,-4.22l-4.29,-2.52l-6.71,-1.82l-2.18,-3.79l-1.51,-0.64l-1.37,0.38l-2.88,2.03l-1.64,-1.69l-0.86,-0.34l-2.74,0.54l-3.4,1.45l-1.38,2.56l-2.69,2.04l-0.15,2.24l-0.82,2.28l-1.47,0.29l-3.52,3.16l-1.87,-0.71l-5.54,2.36l-2.26,2.72l-2.68,-0.6l-1.8,0.92l-0.04,0.65l1.85,1.48l0.22,1.64l-4.86,-0.19l-3.81,1.83l-1.15,-2.52l-3.11,-2.57l-1.44,-0.51l-3.49,0.23l-5.42,2.07l-1.98,1.31l-4.34,4.02l-0.71,1.77l0.24,1.46l1.3,1.82l0.94,4.93l-0.61,2.37l-1.79,1.37l-2.35,0.23l-5.24,-2.99l-3.4,-0.05l-1.92,1.1l-0.43,3.68l-3.75,-1.22l-3.16,0.0l-2.38,-0.51l-1.87,0.22l-1.73,-2.85l-1.62,-1.02l-1.49,-1.8l-0.49,-0.04l-2.51,1.94l-2.84,-4.74l-1.22,-0.67l-1.44,0.28l-5.05,4.48l-4.59,-3.46l-10.76,-10.14l-8.97,-5.23l-3.07,-2.49l-3.18,-4.05l-3.43,-1.32l-0.73,-6.94l-2.23,-2.89l-3.69,-1.03l-6.47,0.27l1.99,-3.62l0.96,-7.94l0.43,-0.75l2.54,-1.25l2.22,0.24l0.61,-0.66l0.86,-2.74l5.35,-1.63l6.28,-4.8l0.22,-2.62l0.93,-2.74l-0.41,-3.51l2.39,0.48l5.09,-0.57l0.72,1.15l0.36,1.95l0.99,0.71l1.03,-0.77l1.67,-2.35l-0.59,-0.84l0.57,-1.33l-1.29,-5.55l-0.07,-2.55l1.44,-1.4l0.19,-2.46l-1.0,-2.53l-0.41,-2.67l-2.96,-2.84l-2.84,-0.87l-2.05,0.3l-0.61,-0.35l-5.03,-6.37l-4.58,-1.1l1.28,-7.23l-0.82,-4.56l-1.14,-3.07l1.14,-4.1l4.69,-2.81l4.85,-4.55l2.23,-1.48l1.73,0.55ZM556.71,174.76l-0.08,0.0l0.0,-0.04l0.08,0.04ZM798.2,168.67l2.9,1.83l17.21,18.98l1.5,1.12l-1.51,4.08l-1.55,0.71l-0.19,0.64l1.68,2.05l0.64,2.12l-10.57,1.22l-2.04,-0.29l-1.56,-1.12l-0.53,0.06l-2.25,2.55l-2.76,1.61l-5.53,1.49l-6.1,0.1l-3.26,-0.99l-1.41,-1.94l2.85,-1.86l3.18,-0.72l3.4,-1.97l1.11,-1.27l0.68,-5.07l-3.6,-6.83l0.21,-3.78l4.48,0.28l1.28,0.53l-0.46,0.85l0.18,1.13l-0.77,3.24l-0.13,2.65l0.29,0.4l0.46,-0.19l1.48,-2.64l1.07,-0.58l2.82,0.01l-0.53,0.98l0.12,1.4l3.35,1.03l0.49,-0.52l-0.75,-2.05l1.23,-4.1l-0.17,-4.46l-1.4,-2.94l-0.51,-0.19l-1.87,0.78l-1.76,-4.6l-1.43,-1.9l-1.72,-1.32l-1.94,-0.48l-2.13,0.43l-1.24,1.43l0.8,3.35l-1.64,1.48l-1.47,2.79l-2.8,1.07l0.13,-1.53l1.81,-3.47l-0.52,-2.24l-1.0,-0.51l-4.28,2.03l-2.75,3.2l-1.42,-0.55l0.7,-2.84l2.63,-5.48l0.61,-4.51l-0.98,-2.9l-3.99,-4.2l-1.07,-1.66l0.79,-1.64l1.41,-1.5l1.59,-0.62l1.57,0.66l3.95,9.13l2.67,2.76l6.55,3.86l3.75,1.44ZM716.99,88.76l1.04,-0.51l7.38,-1.09l1.37,0.31l0.64,1.04l2.1,1.2l0.92,3.32l0.64,0.17l0.88,-0.87l0.36,-1.92l-0.75,-2.63l3.02,-3.61l2.62,-1.68l-0.83,2.63l-1.52,2.32l0.31,0.67l0.96,0.06l0.63,0.79l-1.31,3.12l0.35,0.54l1.57,0.07l1.33,-0.53l0.95,-1.19l0.59,-1.88l-0.25,-0.47l2.15,3.51l-0.54,2.74l1.94,2.82l2.78,1.05l5.06,-0.13l0.34,-0.6l-0.63,-1.08l0.85,-2.01l1.17,-1.42l0.0,-1.26l-1.34,-3.71l-0.73,-0.94l0.0,-0.81l2.07,-1.46l0.0,-1.05l-0.43,-0.4l-1.48,0.18l-2.02,2.15l-4.09,-0.02l-1.7,-2.89l-2.38,-0.88l-2.81,-5.27l-0.64,-0.19l-2.11,1.94l-1.58,2.19l-2.23,1.34l-3.3,3.07l-1.54,-0.5l-0.29,-1.69l0.66,-3.0l1.23,-2.75l1.42,-1.36l0.94,-4.2l-0.77,-0.96l-4.39,1.16l-1.56,0.91l0.05,-1.58l0.48,-1.01l2.07,-1.85l13.34,-3.9l2.59,-0.03l2.28,1.24l0.0,0.62l-5.19,3.86l-0.88,2.58l0.3,3.25l0.84,2.4l1.4,2.05l1.79,1.47l4.3,1.41l12.64,-2.43l4.18,0.91l2.8,3.12l0.6,4.09l-2.44,3.9l-4.28,2.87l-2.22,2.15l-1.04,2.81l1.25,5.86l2.17,4.11l2.24,1.23l4.57,1.11l1.92,1.37l2.56,4.72l1.71,2.26l1.9,0.8l-2.08,2.19l-1.03,2.27l-0.61,6.2l-1.2,-0.26l0.78,-0.55l0.4,-1.12l-0.38,-2.03l-0.39,-0.31l-0.96,0.13l-0.95,1.03l-1.36,0.51l-2.3,-0.38l0.0,-0.63l3.4,-1.46l1.6,-1.26l0.94,-2.08l-0.39,-0.56l-5.14,0.35l3.5,-2.15l-0.36,-1.55l-2.63,-0.25l-1.65,0.21l-2.16,2.08l-1.29,-1.35l-1.35,-0.7l-9.78,1.15l-1.97,1.22l-5.26,4.69l-2.19,4.19l-2.31,0.5l-2.37,1.46l-0.18,4.88l1.79,-1.2l0.1,-1.32l4.03,-0.48l0.67,3.57l-0.17,1.49l-1.24,0.6l-2.64,-0.41l-3.03,-1.07l-3.05,-2.02l0.56,-0.7l1.42,-4.96l-0.46,-0.04l-2.16,1.58l-0.64,0.94l0.29,0.8l-2.36,0.11l-1.49,0.99l-2.28,-1.98l-3.16,-1.12l-0.89,-1.22l0.51,-1.95l-0.27,-0.48l-1.72,-0.42l-3.59,1.53l-0.44,-0.86l0.43,-0.82l1.02,-0.39l1.35,0.56l0.55,-0.37l0.0,-1.04l-6.01,-4.84l1.24,-3.3l1.85,-2.85l2.17,-0.99l2.82,1.86l0.57,-0.13l0.41,-0.71l1.13,0.86l1.51,-0.31l3.09,-2.44l-1.76,-0.46l-0.98,-0.96l-0.43,-1.44l0.44,-2.8l-1.54,-0.51l-1.39,-1.72l-1.26,-0.45l-3.51,0.93l1.91,-3.45l2.63,-0.67l2.9,-1.55l1.95,-0.35l0.33,-1.27l1.25,-1.18l-0.17,-0.62l-3.74,-1.75l-0.61,-1.17l0.72,-1.17l-0.07,-1.33l-0.55,-0.34l-2.85,1.13l-1.5,0.16l-1.68,-1.61l-0.34,-2.72l-0.93,-1.31ZM739.94,88.57l-2.32,-1.17l0.0,-0.68l0.82,-0.77l1.5,2.62ZM708.25,95.98l0.04,-0.57l3.07,-11.08l0.65,-4.24l0.59,-0.99l3.55,-0.29l0.46,1.57l-0.55,0.2l0.0,-0.98l-0.65,-0.31l-2.54,2.22l-0.67,6.08l-0.93,3.39l-2.09,2.17l-0.93,2.83ZM558.02,170.24l-0.47,-2.61l0.45,-1.31l5.8,-2.8l-4.53,4.19l-1.25,2.54ZM553.66,176.62l-2.79,8.31l-0.9,1.34l-0.61,0.02l0.61,-3.75l-0.81,-2.26l-1.2,0.24l-0.55,1.63l0.4,2.07l-1.14,0.96l-1.31,-0.07l-2.73,-1.99l1.31,-3.44l3.42,-2.95l3.84,-1.26l2.47,1.15Z\", \"name\": \"Mecklenburg-Vorpommern\"}}, \"height\": 1223.8430164619706, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-es-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'es_merc_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 671.3455904856035, \"bbox\": [{\"y\": -5438155.586258878, \"x\": -1034892.2150401801}, {\"y\": -4304663.079836929, \"x\": 484657.87992932}], \"left\": 0}], \"paths\": {\"ES-GA\": {\"path\": \"M1.5,81.67l-0.52,-1.68l-0.58,-0.88l1.78,-4.6l0.91,-3.31l-0.47,-0.93l-0.95,-0.72l-0.4,-1.76l1.33,-0.48l0.5,-0.91l0.33,-1.54l1.41,-1.2l0.28,-0.67l1.52,0.77l1.1,-0.31l1.15,-0.94l1.29,-1.75l2.04,-0.5l0.35,-0.4l0.0,-0.67l-0.57,-0.36l-2.45,0.85l-0.61,-0.06l0.03,-0.4l-0.58,-0.39l-2.0,1.03l-0.57,-0.07l-0.43,-1.11l2.9,-2.8l1.9,-1.04l2.46,1.04l2.39,-0.26l1.03,-0.46l1.73,-1.84l1.02,-2.44l1.4,1.08l1.91,-0.09l1.84,-0.76l1.14,-0.88l0.13,-0.46l-0.4,-0.26l-1.25,0.08l-0.57,-0.39l-0.94,-1.93l-1.32,-0.68l3.28,-1.27l2.81,-1.89l2.0,-0.54l1.11,-1.12l0.5,-0.14l2.82,2.55l4.9,1.54l1.5,0.19l4.18,-2.04l2.29,-0.7l2.45,0.93l3.57,-1.74l1.31,-2.05l2.04,-0.87l0.7,-0.96l3.11,-0.83l0.22,0.92l0.66,0.95l1.46,1.3l0.57,-0.04l0.92,-1.17l0.25,-0.97l-0.16,-2.04l0.42,-0.81l0.96,0.17l2.73,1.5l1.01,2.66l2.2,2.44l0.44,1.31l0.38,0.27l0.38,-0.27l0.53,-1.59l-0.48,-5.48l0.26,-0.67l1.83,-1.41l-0.06,-0.69l-1.42,-0.66l-3.44,-0.0l-0.99,-0.33l-1.51,-1.64l-0.59,-0.28l0.61,-0.49l7.08,-1.04l1.0,-1.22l-0.07,-0.92l-0.31,-0.33l-0.56,-0.04l-1.48,0.67l-2.78,0.47l0.06,-0.38l-0.97,-0.67l-0.54,0.12l-0.71,1.09l-1.12,0.46l-2.24,0.1l0.78,-3.69l0.81,-0.0l0.86,-1.24l-0.06,-0.53l-0.97,-1.11l-0.27,-1.27l2.97,0.2l2.14,-1.05l9.17,-7.04l0.21,0.6l0.79,0.64l0.94,0.03l0.77,-0.37l0.21,-0.46l-0.84,-0.27l0.69,-0.55l0.03,-0.64l-1.16,-0.94l-0.14,-0.73l0.82,-2.5l3.03,-0.17l2.06,-0.6l1.92,-1.16l1.64,-1.52l1.2,-1.65l1.4,0.22l1.14,2.67l0.74,0.95l-0.59,-0.22l-0.51,0.16l-0.83,1.78l0.25,1.38l-0.2,0.16l-0.41,-0.36l-0.55,0.02l-1.01,0.96l0.0,0.62l0.38,0.4l3.63,0.04l0.6,-0.67l0.04,-0.47l-1.02,-1.68l0.97,-0.29l1.56,0.55l0.43,-0.11l-0.29,-1.48l0.74,-0.83l2.4,-1.69l2.56,-0.68l1.53,-1.03l1.2,-1.37l0.5,-1.41l0.58,1.31l-1.69,2.24l-0.04,1.81l0.72,0.53l0.57,-0.16l0.79,-0.48l0.14,-0.96l1.44,-0.52l0.16,0.83l1.56,3.06l-0.17,1.32l0.55,0.42l0.75,-0.37l1.26,-2.17l0.84,0.11l1.19,-1.16l0.77,-0.29l2.46,0.28l6.09,3.32l2.61,2.06l4.12,5.75l2.88,1.48l-0.78,1.02l0.23,1.05l1.22,0.4l1.73,-1.05l0.82,0.0l3.86,0.85l4.11,-0.15l1.09,-0.63l2.69,1.17l0.08,1.51l-1.13,2.04l-0.35,1.26l0.61,1.81l-0.29,1.46l-2.03,1.87l-0.96,1.49l-1.0,0.84l-2.22,-0.21l-1.13,0.37l-0.59,1.28l-0.09,2.52l0.42,0.7l0.88,0.44l1.42,0.16l0.51,3.69l0.95,1.72l0.89,0.94l1.47,0.9l0.54,3.75l0.83,1.73l2.05,1.79l0.99,0.23l0.76,0.96l1.79,0.85l-0.54,3.14l1.03,1.99l1.23,0.69l1.39,-0.5l2.42,-1.42l0.82,-1.64l0.45,-0.26l2.01,2.92l0.05,1.44l-2.34,2.12l-2.78,1.26l-1.3,-0.03l-0.94,0.44l-1.29,3.14l-1.07,0.57l-0.51,0.76l-0.15,0.98l0.88,2.16l0.77,0.51l0.65,-0.1l0.57,-0.53l0.22,-1.96l2.06,2.57l2.9,0.52l1.97,2.17l0.53,4.04l-0.5,0.71l-0.44,1.5l-1.17,1.49l-0.11,1.26l0.54,2.79l-0.57,1.72l-4.19,5.13l-0.51,0.24l-1.17,-0.2l-0.83,0.29l-1.44,1.47l-2.2,1.12l-1.18,1.92l-0.16,1.05l0.23,1.18l1.32,2.06l0.13,0.78l-1.59,1.32l-0.37,0.89l0.08,3.59l-1.14,2.6l-0.13,2.4l-0.57,1.59l0.36,0.54l2.92,0.13l2.94,0.64l0.94,-0.18l1.2,-1.05l1.89,-0.38l1.79,1.15l4.53,1.27l0.69,1.59l-0.26,2.13l-0.46,1.23l-1.03,1.05l-0.09,0.67l3.29,2.79l2.22,1.45l0.9,1.01l0.24,0.63l-0.29,3.67l-1.87,3.11l-1.94,2.1l-0.44,1.77l-1.3,-0.36l-2.48,0.36l-2.25,1.58l-2.87,3.2l-1.01,2.97l-1.98,1.51l-2.59,3.58l-0.24,0.9l0.65,1.24l0.68,0.47l1.81,0.1l0.96,1.31l-1.35,3.73l0.23,1.73l-0.48,-0.0l-1.51,1.11l-2.13,0.94l-1.86,-0.86l-1.96,-1.71l-2.18,-1.37l-1.36,0.14l-2.21,1.47l-0.64,0.79l0.14,5.42l-1.26,1.84l-2.06,1.29l-4.6,1.59l-4.71,0.36l-0.97,0.68l-1.9,2.1l-0.8,-2.34l-0.89,-1.26l-1.74,-0.54l-1.13,-0.72l-0.78,0.09l-0.49,0.43l-0.59,1.8l-0.88,0.63l-1.26,0.45l-2.35,0.09l-0.8,-0.45l-0.02,-0.53l0.99,-2.71l-0.36,-0.54l-3.47,-0.15l-2.85,-1.82l-1.17,-0.33l-2.09,0.97l-3.98,0.97l-1.88,-0.09l-0.91,0.4l-0.83,1.39l-1.58,-0.0l-0.56,-4.59l-0.54,-0.34l-1.53,0.76l-0.63,2.48l-0.48,0.9l-1.98,-0.14l-1.18,0.47l-3.66,4.19l-2.79,0.81l-5.19,-0.32l0.23,-1.96l-0.18,-1.37l-0.68,-0.84l-2.21,-0.87l-0.63,-1.35l0.09,-1.49l0.59,-1.5l2.5,-3.72l1.87,-1.84l3.05,-2.24l0.76,-1.29l0.15,-1.55l-0.66,-1.65l-1.01,-0.98l-1.39,-0.62l-1.56,0.1l-2.05,0.79l-0.55,-0.44l-0.19,-1.25l0.16,-3.97l-1.22,-2.27l-0.56,-0.1l-1.94,1.4l-1.1,0.45l-1.76,0.23l-3.3,2.47l-10.12,1.65l-1.41,0.54l-2.23,1.55l-1.11,0.45l-3.72,0.38l-1.22,0.95l-1.74,3.64l-1.22,0.82l-3.26,1.34l-0.81,0.7l-1.67,2.73l-1.1,0.93l-2.48,1.05l-1.99,2.11l-0.56,-0.2l0.12,-0.99l-1.31,-17.24l0.18,-1.35l0.5,-0.43l2.47,-0.04l1.55,-0.54l0.51,-1.18l-0.5,-0.9l-1.22,-0.73l1.93,-1.14l0.62,-1.93l0.93,-0.6l1.27,-1.6l3.37,-2.62l1.18,-0.57l2.11,-1.98l2.53,-1.43l0.59,-0.66l0.25,-0.86l-0.08,-3.38l-0.76,-0.41l-0.7,0.27l-1.0,0.97l-1.64,3.23l-2.86,0.97l-3.56,1.66l-0.77,0.79l-3.94,-0.12l-0.75,0.21l0.79,-3.02l0.6,0.91l0.68,-0.02l0.39,-0.67l-0.1,-4.08l0.7,-0.15l2.29,0.54l0.65,-0.28l0.6,-1.29l2.43,-2.88l4.24,-3.4l0.58,-1.44l-0.11,-0.44l-0.95,0.19l-1.85,-0.2l-3.53,2.49l-2.2,0.86l-2.02,0.18l-2.01,-0.25l-1.41,-0.88l-0.46,-0.86l-0.33,-1.76l-0.67,-1.11l-0.98,-0.52l-2.29,-0.46l0.27,-0.48l1.09,-0.69l2.14,-0.74l0.57,0.2l0.39,0.54l-0.01,0.5l-0.69,0.45l-0.0,0.67l1.58,0.8l1.04,0.19l1.14,-0.55l0.27,-1.12l-0.16,-1.77l0.79,-0.98l-0.8,-3.06l0.13,-2.67l0.53,-0.94l1.69,-0.98l0.9,-1.2l2.43,-5.5l0.53,-2.07l-0.39,-0.5l-0.79,0.28l-1.06,2.73l-0.78,0.93l-0.92,0.32l-1.0,-0.38l-2.28,-3.71l-0.7,0.07l-1.02,2.51l-0.16,1.11l0.55,0.85l-1.21,1.76l-0.47,0.31l-0.49,-0.39l0.14,-1.11l-0.45,-0.06l-3.16,2.21l-0.06,0.57l0.68,0.83l-2.95,1.21l-0.68,2.35l-1.7,1.52l-0.59,-0.66l-0.46,-3.05l-1.65,-0.91l-0.79,-0.77l0.3,-1.91l1.79,-3.78l0.55,-4.55l1.44,-2.17l2.81,-1.56l2.69,-3.29l1.71,-0.51l0.94,-2.16l-0.17,-1.62l-1.57,-1.05l-0.59,0.3l-0.26,1.94l-0.89,1.11l-1.37,0.61l-1.62,0.23l-3.29,-0.49l-1.51,0.28l-0.32,0.45l0.19,1.32l-1.34,1.45l-0.65,0.34l-1.01,-0.19l-0.72,-0.63l-1.17,-3.55l1.17,-0.49l0.89,-1.94l-0.66,-1.2l-2.02,-1.08l-0.39,-1.71l0.01,-0.59l0.81,-1.41l-0.12,-1.75l-2.15,-0.81l-0.98,-1.58l-0.99,-0.52l-0.56,0.37l0.33,1.47l-0.17,0.23l-0.37,0.1l-0.55,-1.27l-0.93,-0.05l-1.45,1.15l-1.31,2.88Z\", \"name\": \"Galicia\"}, \"ES-IB\": {\"path\": \"M885.15,331.58l1.28,1.03l-0.14,1.44l0.63,0.6l0.94,-0.34l1.06,-1.43l0.4,0.56l1.78,1.15l1.37,1.72l1.81,0.66l0.6,0.84l0.51,1.29l-0.05,0.92l-0.94,0.39l-0.03,0.73l1.03,0.51l1.69,0.11l0.55,2.47l1.28,2.14l-0.99,-0.62l-0.58,0.34l-0.17,5.32l-2.98,0.39l-4.55,-2.24l-10.67,-7.07l-2.3,-0.92l-2.88,-0.08l-4.64,0.94l-2.1,-0.75l0.45,-2.95l0.65,-0.62l-0.01,-0.59l-0.67,-0.55l-1.27,-0.47l-1.04,-1.32l0.39,-1.63l0.66,-0.86l4.33,-0.97l1.66,0.63l6.33,-0.65l2.7,0.11l1.79,-0.55l1.35,-1.05l0.76,1.34ZM822.57,340.1l0.71,0.93l0.58,0.03l-3.9,1.69l-1.54,1.53l-1.17,-0.32l-0.4,0.38l-0.14,2.77l0.33,0.41l2.52,0.4l4.1,-1.16l-0.25,1.53l-0.47,0.84l-1.31,0.65l-2.05,0.53l-0.71,0.82l-0.14,2.16l0.86,2.05l1.81,1.75l2.12,1.21l2.12,0.51l4.67,-0.03l1.29,-0.56l1.95,-2.0l0.74,-0.37l1.69,0.5l3.69,2.2l1.89,0.2l-0.2,0.57l0.37,1.94l-0.81,1.26l0.35,1.21l-1.47,3.29l-1.84,0.83l-0.92,1.15l-0.28,1.5l0.42,1.29l-2.52,2.34l-2.83,3.43l-2.08,4.11l-0.57,4.28l-0.31,-0.26l-0.66,0.17l-1.05,3.44l-1.97,2.14l-6.06,3.77l-3.85,3.7l-0.37,0.01l-1.89,-2.78l-1.74,-1.03l-0.76,-2.61l-2.25,-1.41l-0.75,-0.21l-2.45,0.58l-5.64,-0.42l-2.4,-0.99l-1.51,-1.91l-0.68,-4.56l-0.93,-0.76l0.14,-1.06l0.99,-2.02l-0.74,-2.11l-1.98,-1.86l-2.28,-1.35l-2.06,-0.55l-1.51,0.5l-4.24,2.37l-1.07,1.21l-0.68,2.22l-1.47,1.55l-1.4,0.17l-1.36,-2.59l0.55,-0.58l0.07,-0.62l-1.76,-1.81l-0.61,0.04l-0.74,0.82l-0.41,-0.74l-0.57,-0.19l-1.96,1.08l-0.39,-0.29l-0.64,-1.59l-1.08,-0.9l-0.29,-1.33l0.4,-2.74l4.54,-2.86l1.45,-0.36l1.18,-0.77l3.29,-3.51l0.85,-0.47l2.59,-0.65l3.21,-3.17l0.87,-1.68l1.37,-0.07l3.78,-4.07l2.5,-1.17l2.39,-2.1l1.27,-0.46l0.54,-0.86l2.07,-0.05l1.98,-0.97l3.92,-2.63l1.94,-0.53l3.73,-0.37l3.65,-0.94l6.62,-2.71ZM823.91,341.04l0.24,-0.25l0.09,0.05l-0.16,0.12l-0.18,0.08ZM709.71,429.64l-0.58,-0.67l-0.66,-0.03l-1.07,1.4l-0.95,1.67l-1.12,3.54l-2.97,-2.38l-2.38,0.23l-0.6,-0.98l-1.11,-0.35l-1.34,0.36l-0.5,0.83l-1.65,-1.11l-0.65,-0.76l-0.25,-1.32l0.99,-3.26l-0.49,-1.02l0.85,-0.63l0.53,-0.07l0.66,0.39l1.37,-0.54l1.53,0.02l0.4,-0.46l-0.57,-3.54l0.04,-1.81l0.6,-0.69l1.88,-1.2l1.52,-1.64l0.58,0.43l0.51,0.02l1.08,-0.84l0.98,0.3l1.28,-1.07l1.73,-0.91l1.72,-0.47l1.29,0.22l1.66,-1.17l0.73,0.05l1.56,1.03l1.9,0.25l0.77,0.69l-0.26,0.78l1.29,4.06l-0.78,0.12l-0.87,0.68l-0.68,1.22l-0.49,1.73l-2.36,1.6l-2.04,3.14l-3.05,2.18ZM705.29,448.74l0.52,-1.86l-0.62,-0.65l0.43,-0.44l0.69,0.22l0.97,-0.84l0.85,-1.65l3.04,4.39l1.4,1.27l3.57,0.03l1.31,0.43l-0.05,1.33l-1.25,0.76l-2.04,-0.59l-3.75,-1.97l-1.25,-0.09l-3.54,1.79l-0.41,-1.27l0.31,-0.48l-0.19,-0.35Z\", \"name\": \"Islas Baleares\"}, \"ES-PV\": {\"path\": \"M419.05,32.69l0.76,-0.45l1.52,-0.16l3.34,0.15l3.17,-0.32l2.52,-0.96l0.64,0.16l2.53,2.22l0.53,0.9l0.74,2.21l0.25,1.87l0.71,0.19l0.27,-0.35l0.59,-1.86l0.08,-1.37l0.7,-0.28l3.48,0.89l3.79,1.64l4.2,1.14l1.36,1.98l6.45,3.07l2.74,0.82l2.8,0.3l5.75,-1.01l1.43,1.54l1.14,0.26l0.87,-0.54l0.38,0.79l0.67,0.39l0.4,-0.06l1.85,-1.47l2.14,-0.47l4.68,-1.71l2.2,-1.31l0.75,0.03l1.14,1.43l0.52,0.45l0.5,0.02l0.93,-0.67l-0.0,-0.65l-0.88,-0.87l2.11,-0.95l2.55,-2.29l2.11,-1.14l0.92,0.67l-0.34,2.34l-0.03,3.03l0.22,0.35l1.8,0.88l0.7,0.96l0.24,1.78l-1.25,0.4l-1.21,1.14l-1.99,3.54l-0.76,0.75l-1.23,0.51l-1.35,-0.34l-0.5,0.49l-0.13,0.86l-1.29,-0.53l-0.58,0.21l-0.73,3.17l0.46,4.38l-0.88,1.76l-0.68,0.73l-5.13,3.59l-1.75,3.63l0.05,2.18l-0.53,1.21l-2.91,1.1l-1.86,2.33l-3.14,0.44l-1.87,-0.67l-1.08,0.29l-1.24,1.42l-1.43,3.42l0.9,3.7l-0.19,1.54l-1.35,2.23l-0.76,2.12l-0.33,3.58l-0.25,0.38l-1.86,0.73l-0.62,1.0l0.56,4.21l1.15,0.71l0.12,0.87l-2.73,1.87l-1.56,0.12l-1.22,-1.58l-1.89,-0.39l-2.03,1.38l-3.76,3.49l-0.04,1.38l0.41,0.66l2.7,1.39l1.0,-0.4l1.21,-1.6l0.81,0.48l0.4,2.14l-0.73,5.62l-3.2,-0.82l-1.8,-1.06l-0.6,-1.45l-0.51,-0.22l-1.28,0.73l-0.72,1.58l-1.63,0.07l-1.32,0.77l-0.2,-0.79l-0.93,-0.57l-0.95,0.15l-0.64,0.64l-0.61,-0.28l-2.3,-1.82l-1.03,-0.45l-0.02,-3.61l-0.34,-0.94l-3.02,-2.41l-1.0,-0.32l-1.21,0.39l-0.65,0.6l-0.68,1.92l-0.78,-0.03l-1.06,0.47l-0.31,-0.18l-0.25,-0.59l0.69,-0.77l0.23,-0.84l-0.24,-0.82l-0.6,-0.23l-0.55,0.35l-0.15,-0.25l-0.09,-2.01l-0.37,-1.2l-5.08,-4.54l-1.68,-0.79l-1.61,-2.03l-2.34,-1.45l-1.93,-1.8l-2.12,-1.13l-3.86,1.42l-0.53,-0.09l0.23,-1.26l-1.24,-1.58l-0.18,-0.96l2.51,-4.46l0.18,-1.15l-0.43,-1.05l-0.78,-0.36l-0.59,0.15l-1.91,2.14l-1.24,-0.04l-1.27,0.48l-0.94,1.22l-0.32,1.43l-0.61,-0.39l-3.08,-3.8l0.56,-1.54l2.88,-3.71l2.18,-0.25l1.33,0.32l0.78,0.6l0.29,1.08l0.56,0.72l1.19,0.5l2.66,0.49l3.8,-0.43l1.41,-1.16l1.51,-0.36l0.82,-1.36l-0.45,-1.37l-2.08,-0.84l-1.58,-1.53l0.01,-0.26l2.19,-0.22l0.51,-0.29l0.57,-1.05l0.01,-1.46l-0.76,-0.83l-1.14,-0.38l-0.29,-0.35l-0.13,-1.16l-1.02,-0.71l-1.73,0.8l-1.14,2.49l-0.48,0.19l-2.33,-0.23l-2.46,-0.86l1.02,-2.07l0.44,-4.83l-0.43,-0.87l-1.24,-0.6l-0.34,-0.97l0.77,-1.92l1.25,-1.19l-0.1,-1.11l-0.69,-0.68l-5.22,-0.56l-1.49,-1.19l-1.31,0.0l-6.31,3.83l-3.52,1.36l-1.08,-3.8l0.04,-1.91l-0.29,-1.3l0.17,-0.63l0.63,-0.81l6.92,-5.01l3.97,0.29l1.69,-0.2l2.08,0.6l3.09,-1.44l0.93,-1.88l-0.08,-4.33l2.1,0.41l1.58,-1.07l1.83,1.16l3.25,2.83l0.66,-0.3l-0.02,-0.81l-1.37,-4.06l1.12,-0.61l0.73,-0.87l2.76,-1.71l1.0,-0.29l0.29,-0.38l0.0,-0.68l-0.38,-0.38ZM425.78,92.02l-2.33,3.23l-0.2,1.02l0.4,0.88l1.62,1.66l1.87,1.42l4.07,1.89l4.54,1.06l3.29,1.38l5.18,0.15l1.36,0.89l0.94,-0.17l0.88,-0.6l0.08,-1.67l-0.83,-2.34l-0.98,-0.02l-1.0,0.98l-0.84,0.25l-2.04,-2.41l0.09,-0.43l1.08,-0.41l0.73,-0.75l0.93,-2.18l0.11,-0.73l-0.29,-0.57l-1.4,-0.23l-1.66,-1.43l-2.43,0.17l-5.8,-1.88l-1.82,-0.17l-4.21,0.27l-0.77,0.21l-0.57,0.52Z\", \"name\": \"Pa\\u00eds Vasco\"}, \"ES-RI\": {\"path\": \"M442.94,162.21l-2.82,-0.2l-3.26,0.19l-1.96,-1.27l-1.88,-0.21l-0.77,-0.4l-0.15,-0.82l0.62,-1.89l1.41,-1.88l0.28,-1.39l-0.34,-2.01l-0.78,-0.56l-0.83,-0.23l-1.77,0.18l-1.05,0.65l-0.79,1.01l-0.68,1.58l-0.24,1.32l0.15,1.27l-0.29,0.64l-0.66,0.73l-3.6,1.95l-2.2,-0.66l-0.45,-2.75l-1.16,-2.44l-1.45,-0.38l-3.83,0.27l-0.85,-0.43l-1.85,-3.23l-1.48,-1.12l-0.62,-1.84l-2.15,-3.44l1.21,-1.52l0.75,-2.78l0.21,-1.94l-0.67,-3.43l-0.1,-2.24l-0.59,-1.13l1.67,-0.46l0.6,-0.43l1.2,-2.18l-0.15,-4.0l0.58,-2.56l-0.78,-1.83l-1.43,-1.56l0.8,-2.53l0.04,-0.94l-0.24,-0.7l-0.64,-0.54l-2.06,0.19l0.05,-0.39l1.91,-2.13l1.57,-2.41l-0.01,-0.97l-0.89,-1.63l0.1,-0.23l0.81,-0.38l2.71,-0.31l4.21,0.5l2.79,0.8l4.25,-1.43l0.09,1.5l0.46,0.86l0.56,0.14l0.45,-0.29l0.05,0.19l-0.91,1.35l0.07,0.76l0.5,0.64l0.85,0.35l1.24,-0.52l0.77,0.1l0.43,-0.28l0.64,-1.97l0.4,-0.39l0.75,-0.29l0.69,0.21l2.78,2.19l0.25,4.48l4.64,3.0l0.48,-0.12l0.61,-0.68l0.46,-0.04l0.39,0.3l0.1,1.19l0.68,0.25l1.53,-1.16l2.18,0.05l0.41,-0.59l-0.33,-0.49l0.2,-0.44l0.91,-0.82l0.67,1.41l2.04,1.19l2.3,0.71l2.83,0.43l2.88,1.05l4.18,-0.6l0.55,0.21l1.85,1.29l2.17,2.3l1.09,0.37l1.43,0.15l4.38,-0.33l1.71,0.21l1.04,0.94l-0.74,1.39l0.92,1.4l1.87,0.73l3.48,-0.01l4.85,5.89l2.46,1.81l0.05,1.62l0.59,0.96l1.82,0.0l2.16,1.84l3.19,1.83l1.37,0.42l1.74,1.23l-0.04,1.68l0.6,1.29l-0.23,1.26l0.4,1.54l-0.34,0.57l-0.94,0.15l-2.18,-0.93l-2.47,0.65l-1.4,-0.58l-1.39,0.03l-0.6,0.56l-0.84,1.66l-3.65,4.19l-0.43,2.07l0.35,1.87l0.54,1.04l2.43,2.06l0.43,1.4l-0.77,2.22l-4.72,2.75l-2.17,0.34l-1.88,-1.3l-1.66,-0.69l-1.2,-0.09l-4.08,-1.23l-0.66,-2.16l0.84,-1.35l-0.17,-0.96l-0.78,-1.31l-1.53,-1.28l-0.5,-1.05l0.01,-0.98l1.67,-1.66l0.09,-0.8l-0.4,-0.77l-0.9,-0.61l-2.38,-0.36l-1.27,0.15l-4.13,1.28l-0.83,-0.89l-0.67,-2.59l-1.23,-0.82l-3.46,-0.39l-4.16,0.32l-1.87,0.61l-2.84,2.07l-1.78,-0.17l-0.54,0.81l-0.26,3.15l-1.35,1.35l-2.32,4.48Z\", \"name\": \"La Rioja\"}, \"ES-AS\": {\"path\": \"M186.77,19.88l2.76,1.17l3.53,-0.67l3.43,-0.01l4.28,-1.41l0.98,-0.95l0.61,-0.1l1.96,1.48l0.96,0.34l5.21,0.58l1.07,-0.51l1.2,0.43l2.93,-1.67l7.57,0.0l0.72,-1.07l-0.63,-1.47l0.66,-0.77l-0.17,-1.1l1.55,0.01l0.96,-0.48l0.78,-1.9l0.71,0.04l2.03,1.01l1.35,1.18l3.59,4.28l1.22,1.89l0.78,0.18l0.39,-0.3l0.18,-0.67l0.99,1.65l3.5,0.57l13.22,-0.56l1.69,0.45l0.14,0.87l-0.74,1.28l-1.1,1.06l-0.05,0.52l0.45,0.62l0.53,0.11l2.72,-1.23l1.07,-1.67l3.44,0.11l0.96,0.35l4.71,3.16l2.33,0.86l5.76,0.3l1.39,0.39l0.62,1.02l0.56,0.13l0.64,-0.41l4.43,1.36l2.35,-1.16l2.14,0.99l4.64,0.98l5.34,2.54l1.46,0.45l14.29,1.27l-0.05,2.87l-1.56,3.22l1.01,2.8l0.09,1.97l-0.52,1.12l-0.63,0.38l-0.48,-1.04l-0.58,-0.52l-1.41,-0.36l-1.46,0.05l-1.14,0.69l-0.84,1.1l-0.76,0.45l-3.21,0.02l-1.65,0.7l-0.72,1.41l0.15,1.32l-0.43,2.65l-0.74,1.14l-1.79,-0.25l-3.7,0.59l-1.72,-2.97l-1.38,-1.17l-1.48,-0.39l-0.92,0.16l-3.5,1.91l-1.08,0.99l-1.97,1.1l-2.43,0.68l-1.29,0.68l-0.69,0.68l-0.68,1.3l-0.87,2.7l-1.32,1.58l-0.55,0.09l-1.45,-0.62l-0.6,0.09l-3.52,1.74l-6.17,0.75l-3.48,-0.54l-0.99,0.17l-0.89,0.69l-0.44,1.85l-0.44,0.51l-1.14,0.35l-3.56,0.07l-0.65,0.59l-0.71,1.46l-1.68,-0.03l-2.07,0.69l-1.75,-0.9l-3.79,-0.61l-1.93,-0.94l-2.82,-0.03l-1.84,0.91l-1.68,2.76l-0.96,2.54l-1.02,0.66l-3.5,0.05l-4.71,-2.37l-2.33,-1.67l-0.56,-0.97l-0.47,-1.99l-0.49,-0.71l-0.75,-0.42l-2.14,0.4l-4.24,-0.66l-0.82,0.49l-0.82,2.29l-1.13,0.54l-0.75,0.06l-2.6,-0.96l-1.76,-0.29l-1.08,0.33l-0.5,0.68l-0.16,1.12l-0.45,0.26l-1.14,-0.3l-2.84,-1.42l-2.12,-0.35l-1.26,-0.95l-1.42,-0.28l-2.02,0.99l-1.38,2.32l-0.27,1.35l-1.66,0.61l-1.84,0.08l-0.6,0.5l-0.16,0.7l0.39,0.77l1.84,0.92l0.18,0.49l-0.19,0.42l-3.28,1.82l-3.88,1.16l-2.89,-0.25l-1.96,-0.71l-4.38,0.26l-2.04,0.89l-1.51,1.62l-0.7,0.28l-0.52,-0.91l-1.19,-0.61l-1.99,-0.34l-0.54,-4.06l-2.21,-2.53l-0.69,-0.32l-1.38,0.02l-0.95,-0.3l-2.25,-2.75l-0.7,0.04l-0.3,0.43l-0.17,2.05l-0.25,0.16l-0.36,-0.21l-0.42,-0.74l-0.3,-0.9l0.12,-0.79l1.47,-1.09l1.15,-2.99l0.56,-0.26l1.41,-0.0l3.03,-1.4l2.47,-2.25l0.25,-1.02l-0.17,-1.13l-1.73,-2.82l-0.96,-0.71l-1.12,0.52l-0.52,1.24l-0.63,0.65l-2.79,1.42l-0.75,-0.42l-0.83,-1.59l0.52,-2.1l-0.14,-1.42l-1.97,-0.99l-0.67,-0.92l-1.09,-0.29l-1.81,-1.56l-0.71,-1.46l-0.66,-4.05l-1.63,-1.07l-0.79,-0.83l-0.8,-1.48l-0.28,-3.17l-0.3,-0.68l-0.82,-0.54l-1.01,0.06l-0.79,-0.58l0.21,-2.65l0.89,-0.5l2.53,0.12l4.2,-4.36l0.49,-1.74l0.4,-0.3l0.92,-4.1l0.92,-0.8l0.53,-1.9l3.52,-0.79l6.36,-0.23l1.09,0.31l3.88,-0.31l2.64,0.78l1.78,0.21l3.76,-1.94l3.19,0.34l3.3,1.19l2.38,1.29l1.68,-0.65l1.62,0.02l0.39,-0.5l-0.25,-1.24Z\", \"name\": \"Principado de Asturias\"}, \"ES-CT\": {\"path\": \"M647.31,291.34l-4.07,-1.73l-0.88,-1.03l-0.28,-1.32l-1.34,-1.27l-2.1,-1.15l-4.65,-1.63l-1.46,-0.78l-0.96,-1.67l0.63,-1.86l0.01,-0.92l-1.52,-1.28l-1.46,-0.47l-0.65,-0.64l-0.85,-1.64l-0.4,-0.15l-1.26,0.28l-1.4,-0.27l-0.21,-0.61l3.79,-2.32l2.97,-4.44l0.04,-1.0l-0.89,-2.2l-0.54,-2.84l0.69,-2.77l1.67,-3.32l0.28,-2.02l-1.17,-3.55l-2.96,-2.04l-1.43,-4.53l0.21,-1.78l0.75,-0.68l1.35,-0.26l1.0,-1.2l1.14,-0.31l1.2,-0.78l0.56,-0.78l0.86,-3.58l3.07,-2.23l-0.43,-4.25l1.6,-3.62l-0.18,-1.76l-0.63,-1.32l-0.96,-0.98l-1.53,-0.72l-0.15,-1.33l0.9,-1.38l0.67,-2.4l0.13,-3.79l0.53,-0.49l2.66,-1.12l2.79,-4.52l-0.7,-2.24l-0.08,-1.47l-0.38,-0.72l-0.84,-0.43l-3.27,-0.25l-0.66,-0.57l-0.54,-2.62l-0.89,-2.12l-0.06,-1.15l0.84,-1.28l1.6,-1.51l2.53,-3.7l2.99,-0.75l0.83,-0.5l2.46,-4.03l2.69,-1.24l1.1,-1.67l1.51,-0.96l0.9,-1.14l0.3,-0.79l-0.3,-3.56l-1.77,-2.07l1.01,-1.34l1.61,-0.77l1.11,-1.76l1.2,-0.69l0.68,-0.99l0.29,-0.97l-0.06,-1.29l0.88,-1.95l1.06,-3.98l0.6,-0.52l0.62,-1.83l0.39,-2.85l-0.34,-1.52l0.12,-0.83l0.91,-4.28l0.9,-1.62l0.69,-2.32l0.08,-3.22l0.44,-2.04l-0.32,-5.55l-0.91,-3.34l-1.2,-1.51l-0.85,-3.49l0.14,-0.53l1.27,-0.4l0.48,-0.51l0.03,-1.71l1.9,-3.94l0.61,-3.81l-0.42,-0.69l-2.15,-0.7l-0.99,-0.65l-2.63,-5.56l-0.69,-0.62l0.1,-1.55l-0.47,-1.51l-0.85,-1.12l-0.71,-0.32l0.84,-1.12l0.08,-0.55l-0.61,-0.84l0.85,-2.32l-0.11,-2.03l0.25,-1.03l1.27,-0.5l1.71,-0.13l1.07,0.11l3.44,1.16l2.36,0.06l2.79,1.65l1.96,0.78l1.54,1.42l0.84,0.39l2.07,-1.0l2.14,1.39l5.58,0.38l1.25,0.39l1.05,0.94l1.79,3.86l1.44,1.04l0.9,0.07l2.14,-0.69l8.02,0.02l1.12,0.31l-0.1,1.26l0.33,0.36l1.18,0.36l2.37,3.76l1.09,3.02l0.86,1.15l-0.67,2.22l0.55,0.64l-1.04,1.81l-0.27,1.13l0.44,0.48l1.3,-0.17l0.91,0.82l0.16,1.03l-2.52,1.36l-0.17,0.58l1.83,2.88l0.16,1.33l0.94,0.64l3.99,0.54l0.79,-0.12l0.88,-0.52l0.96,-1.32l4.0,-0.52l2.22,-0.92l0.98,-2.65l1.03,0.51l0.93,0.02l1.31,-0.82l0.23,0.51l1.22,0.5l4.14,0.59l1.29,0.54l3.81,2.59l2.78,0.43l0.84,0.37l0.81,1.35l0.84,3.28l0.65,1.45l2.41,1.89l1.0,0.14l2.98,-0.54l3.48,-2.91l1.15,-2.31l0.85,-0.4l3.17,0.36l4.05,-1.27l1.9,-0.2l2.55,1.64l3.84,1.82l2.98,0.53l0.45,1.29l1.11,1.46l1.28,1.01l3.55,1.42l0.69,-0.03l0.71,-0.54l0.94,-1.81l1.06,-0.03l4.47,1.31l1.86,-0.09l0.38,-0.43l-0.03,-0.39l-0.86,-1.1l-0.51,-1.45l3.09,-2.69l1.05,-0.54l1.23,-0.09l2.54,0.39l1.5,-0.22l4.17,-3.26l3.24,-0.25l2.17,-1.64l1.92,0.74l1.35,-0.7l2.7,0.24l1.58,2.45l2.32,1.04l3.55,0.13l3.98,-0.69l-0.26,2.59l0.35,1.32l1.58,2.91l0.66,0.63l3.09,-0.21l1.07,1.24l0.73,-0.11l0.56,-0.54l1.8,0.94l-1.43,2.88l-0.45,2.18l-1.38,1.69l-0.87,-0.39l-6.44,-0.26l-1.21,0.9l-0.76,1.99l-0.63,5.54l0.41,1.7l1.25,1.39l3.1,2.07l0.76,1.74l-0.32,3.82l0.85,4.3l1.83,2.21l-0.21,1.53l-1.59,2.78l-0.83,2.26l-0.99,1.05l-4.85,3.08l-3.51,3.72l-8.78,6.51l-2.44,1.05l-2.87,0.71l-1.3,1.53l-1.0,0.41l-1.08,0.99l-0.49,0.98l-2.0,0.26l-8.54,5.47l-13.33,6.16l-1.44,1.49l-3.74,2.57l-4.97,2.14l-2.03,1.55l-1.77,2.44l-3.21,5.66l-1.86,2.59l-2.09,1.96l-4.54,2.5l-2.61,0.74l-4.53,0.47l-4.43,1.15l-1.94,1.0l-2.31,-0.08l-12.47,3.42l-5.68,0.43l-16.54,6.22l-4.61,1.01l-0.77,0.61l-1.42,2.78l-0.65,0.57l-1.95,-1.06l-3.06,0.05l-2.83,0.53l-2.68,1.22l-2.23,1.62l-7.46,7.41l-3.62,4.84l-5.95,5.77l-1.36,2.65l0.16,0.53l3.7,1.81l1.29,-0.17l0.37,-0.81l-0.2,-0.52l0.47,0.25l2.31,2.69l2.63,2.41l1.29,0.68l-0.06,0.65l-0.9,0.72l-0.61,1.15l-0.92,0.58l-4.34,1.32l-1.83,1.63l-1.0,1.29l-1.66,-0.87l-1.99,0.17l-5.63,1.85l-1.37,0.93l-1.14,1.24l-1.01,1.61l-1.86,4.58ZM660.17,284.18l-1.82,2.0l-1.59,1.15l-1.28,0.05l-0.64,-1.18l1.78,0.24l2.15,-0.99l1.4,-1.29Z\", \"name\": \"Catalu\\u00f1a\"}, \"ES-CM\": {\"path\": \"M388.04,228.2l1.28,0.51l3.29,0.18l3.31,-0.63l0.78,-0.46l1.91,-0.05l2.18,-2.4l1.18,-0.61l7.54,1.77l2.35,-0.02l4.4,-0.56l1.52,-0.38l1.17,-0.72l0.98,-1.53l1.11,-0.43l0.67,0.05l0.98,0.51l0.27,0.47l0.78,2.66l1.39,1.02l2.73,0.75l1.79,-0.14l1.86,-1.09l1.26,0.08l1.12,1.63l0.87,0.53l2.86,0.65l0.96,0.47l0.81,0.98l0.67,0.36l1.68,-0.15l0.17,0.25l-0.35,0.71l-0.92,0.65l-0.26,0.54l0.12,0.43l1.86,1.48l-0.55,1.24l0.13,0.8l0.72,0.5l0.88,0.12l2.3,-0.98l0.36,0.24l1.1,2.39l1.61,1.0l0.86,2.32l0.54,0.66l2.64,1.36l1.22,0.03l2.78,-1.31l2.42,1.33l1.03,0.12l1.65,-0.33l1.93,-0.78l1.51,-1.11l3.88,-0.15l2.63,-2.37l2.72,1.97l1.16,1.32l0.99,0.24l0.57,-0.46l0.14,-0.48l-0.28,-2.26l0.58,-2.17l-0.02,-1.11l4.97,-1.59l1.52,0.41l1.9,1.85l1.69,0.72l2.65,2.07l2.23,1.25l3.21,2.74l2.27,3.39l3.54,3.1l1.54,1.83l2.21,1.99l0.69,1.48l-0.25,3.5l0.38,1.48l1.06,1.93l0.99,1.14l1.68,1.14l0.69,1.12l0.16,2.74l-1.07,2.76l-0.13,1.77l1.32,3.62l-0.02,1.74l-1.11,3.27l0.18,2.62l-0.21,0.37l-0.83,0.84l-1.48,0.66l-2.56,-1.23l-2.31,-0.45l-0.79,0.42l-1.52,4.01l-0.08,4.18l-0.74,0.91l-1.92,1.2l-2.71,4.01l-0.9,0.57l-0.81,1.1l0.16,0.6l1.84,0.82l3.74,4.76l0.31,1.07l-0.34,1.64l0.32,1.41l0.36,0.18l1.15,-0.56l0.77,0.1l1.54,0.83l7.89,7.4l0.9,0.21l1.34,-0.46l1.87,0.61l2.43,-0.07l0.06,1.53l-0.69,1.9l-0.18,1.94l0.79,0.93l1.77,1.24l2.27,7.08l0.69,0.67l5.67,0.96l1.74,0.68l1.17,0.09l5.05,-1.15l0.94,2.79l-3.18,1.72l-0.77,1.17l0.62,1.95l-0.39,4.59l-1.47,5.65l-2.76,4.61l-0.24,1.58l0.33,2.68l-0.24,0.48l-0.78,0.78l-1.01,0.38l-1.12,-0.03l-2.25,-1.05l-1.39,0.04l-1.87,1.31l-1.55,1.57l-2.77,5.26l-0.72,0.95l-1.32,0.99l-0.63,1.33l-0.1,0.87l0.3,0.83l-0.22,2.61l0.25,0.61l-0.5,0.74l0.04,1.02l-0.77,2.11l0.05,0.97l1.13,1.76l1.0,0.36l0.36,0.82l1.73,1.33l0.53,2.12l0.31,0.27l1.42,0.01l1.2,-0.32l1.28,0.44l3.7,2.31l1.31,0.08l8.58,2.77l0.35,0.97l-0.51,2.61l-0.01,3.13l-1.48,4.13l-1.67,2.04l-1.86,4.34l-0.5,2.08l0.43,2.32l6.96,8.54l2.13,1.45l5.76,-0.37l1.21,-0.28l1.77,-0.89l1.82,0.82l2.42,4.36l-0.34,2.55l0.89,2.95l-0.4,0.97l-0.1,1.23l-1.87,1.27l-0.33,1.47l0.78,2.74l2.53,3.58l-2.17,1.59l-1.07,0.4l-3.27,0.05l-0.84,0.26l-5.24,-4.28l-0.53,-2.13l-0.46,-0.64l-3.81,-1.33l-4.17,1.05l-1.35,0.91l-1.67,1.7l-3.55,2.02l-0.83,-0.2l-0.91,-1.02l-0.8,-0.08l-0.94,0.49l-3.34,3.66l-1.13,2.48l-0.26,3.16l-0.57,0.96l-1.42,1.21l-1.15,2.45l1.06,4.47l0.51,6.68l-0.18,1.18l-0.8,1.12l-4.71,3.88l-3.8,1.21l-1.6,-0.25l-1.38,-0.9l-0.38,-1.03l0.12,-1.79l-0.68,-0.91l-0.94,-0.35l-1.08,0.17l-1.12,-0.65l-1.03,-0.09l-1.27,0.49l-0.46,0.46l-1.25,0.34l-0.3,1.06l-3.34,2.02l-2.51,1.93l-2.54,1.22l-4.18,0.96l-1.9,-1.57l-1.73,0.05l-1.16,0.75l-1.7,2.04l-2.74,2.52l-2.8,0.94l-2.81,2.39l-2.61,5.09l-4.5,5.61l-1.28,3.48l-0.54,0.16l-7.39,-2.13l-4.93,-2.4l6.48,-8.62l0.2,-0.96l-0.38,-2.01l0.9,-1.4l0.3,-2.39l-0.68,-1.63l-2.08,-1.37l-0.35,-0.68l-0.73,-7.58l-0.28,-0.3l-4.41,-1.29l-0.58,-0.6l-0.34,-0.78l0.26,-2.32l-0.3,-1.75l0.2,-1.44l-0.38,-0.49l-1.68,-0.68l-3.09,0.04l-2.09,0.73l-2.67,-1.11l-2.44,-1.57l-0.5,0.05l-2.24,2.15l-3.58,2.0l-2.06,1.82l-1.39,-0.91l-1.41,-0.38l-1.94,0.15l-1.15,0.53l-1.85,1.5l-0.32,1.57l-3.05,-3.84l-0.8,-0.45l-0.82,0.05l-2.91,2.13l-1.3,0.33l-2.23,-0.68l-5.77,-0.48l-3.13,-1.27l-1.13,-0.07l-1.59,0.22l-1.19,0.59l-0.69,0.79l-0.49,1.84l-1.14,1.36l-1.45,0.91l-2.38,0.82l-1.77,-0.13l-2.09,-0.56l-0.54,-0.63l-0.58,-1.82l-0.61,-0.57l-0.75,-0.12l-0.84,0.09l-0.87,0.54l-0.87,3.07l-0.96,0.38l-5.45,-0.98l-1.73,-0.73l-1.59,0.31l-2.51,-0.75l-1.99,0.37l-1.13,0.71l-1.17,1.92l-1.16,0.49l-2.14,0.35l-18.62,-0.75l-2.52,-0.89l-2.81,-0.13l-0.82,0.26l-0.52,0.68l-0.26,3.49l-0.57,0.1l-7.47,-2.55l-2.87,-1.36l-0.61,-0.37l-1.87,-2.58l-1.86,-1.98l-1.75,-1.5l-1.95,-1.24l-1.56,-0.29l-0.91,-0.47l-1.51,-2.27l-2.33,-1.82l-2.3,-1.16l-0.74,-1.11l-0.93,-0.67l-2.82,-1.29l-2.97,-0.46l-2.17,-1.19l-0.97,-1.49l-0.25,-3.24l-0.44,-0.87l-0.84,-0.44l-4.06,0.13l-2.08,-0.85l-3.23,-2.45l2.01,-0.36l1.2,-1.27l2.29,-7.71l1.28,-2.51l0.87,-0.92l0.97,-0.42l2.4,0.17l0.81,-0.21l0.4,-0.63l0.61,-3.05l-0.25,-1.15l-0.51,-0.69l-1.92,-0.38l-2.96,-1.17l-0.41,-0.97l-0.2,-1.89l-0.89,-0.92l-0.61,-2.71l0.68,-0.39l0.48,0.1l3.55,1.62l1.31,-0.36l1.81,-1.15l0.26,-0.81l-0.17,-0.73l-2.03,-1.7l-0.19,-1.84l1.27,-4.84l2.49,-2.69l2.13,0.35l1.82,-0.33l1.01,0.17l3.8,1.89l0.86,0.04l0.37,-0.59l-0.84,-1.51l-2.92,-3.4l-1.26,-2.47l-1.39,-3.74l-0.03,-0.71l0.35,-0.49l1.87,-0.86l0.77,-1.0l0.97,-2.89l0.96,-1.83l0.25,-1.81l-0.98,-2.75l-0.7,-0.1l-0.66,0.9l-3.18,1.69l-0.99,1.19l-3.0,1.01l-4.22,2.08l-4.0,-2.02l-1.42,-1.19l-3.77,-4.47l-1.06,-1.7l-2.6,-1.24l-2.82,-2.89l-2.41,-3.13l-2.42,-2.0l-0.05,-0.64l2.67,-4.35l1.11,-5.4l-0.07,-0.8l-1.53,-2.27l0.37,-2.2l-0.6,-1.86l-0.84,-0.55l-2.47,0.42l-1.39,1.2l-1.54,2.08l-3.15,-0.38l-0.39,-0.85l0.42,-3.6l0.16,-0.97l1.22,-2.38l-0.04,-0.92l-1.15,-1.61l-1.24,-0.81l-2.51,0.02l-1.57,0.39l-0.19,-2.81l1.11,-6.37l0.25,-6.36l0.6,-2.73l1.87,-1.01l6.26,0.79l2.72,1.48l1.67,0.04l1.86,-0.6l3.37,-2.71l1.32,-1.48l2.3,-0.91l0.73,0.16l0.41,2.31l0.6,0.78l1.15,0.27l1.56,-0.35l1.03,-0.46l1.98,-1.56l1.28,-2.94l5.05,-3.78l0.86,-1.22l0.72,-2.76l4.36,-0.42l1.46,-0.46l0.58,0.24l0.74,4.55l1.01,1.14l2.21,0.86l1.05,-0.03l3.47,-1.19l1.45,0.93l2.02,0.16l0.77,-0.39l1.01,-1.15l3.82,-2.08l2.98,-3.5l1.6,-2.41l0.65,0.66l-0.1,2.4l0.71,1.89l3.26,2.69l0.87,-0.18l1.03,-0.87l1.52,-2.31l0.9,-0.82l1.59,-0.28l1.67,-1.01l0.36,0.02l2.79,2.74l2.53,0.54l2.1,-1.14l0.35,0.05l1.87,0.91l1.91,2.23l4.37,1.54l2.15,1.04l3.07,0.79l1.81,1.62l2.11,-0.11l1.44,1.82l0.91,0.53l1.02,0.26l1.6,-0.26l3.06,0.53l3.71,2.06l0.09,1.79l-1.39,3.14l-2.41,1.35l-3.05,3.26l-0.97,0.83l-1.64,0.68l-1.32,1.46l-4.87,1.37l-1.52,1.04l-0.1,0.47l0.39,0.74l3.09,2.18l1.06,0.16l0.96,-0.22l2.25,-1.77l1.94,-1.98l2.36,-0.59l1.94,-1.16l2.09,-0.76l0.35,-0.65l0.09,-1.38l2.26,-0.73l1.43,-1.02l3.23,-0.94l0.91,-1.53l0.7,-0.62l6.16,0.26l2.23,-0.95l1.05,0.83l1.1,0.19l3.61,-0.76l3.96,-2.11l2.47,-0.84l0.94,0.55l0.27,0.99l0.41,0.34l3.3,-0.16l1.54,-0.49l1.74,-1.65l0.48,-1.44l-1.55,-3.62l-0.04,-0.65l0.39,0.11l0.5,-0.46l-0.65,-3.41l-0.28,-3.71l-1.15,-2.68l-0.89,-0.68l-1.09,0.11l-1.71,1.26l-1.27,1.46l-0.43,-0.37l-0.15,-1.09l0.67,-4.06l1.6,-1.99l0.69,-2.2l0.31,-3.02l-0.27,-1.23l-1.09,-1.79l-2.52,-1.51l-0.22,-4.93l-0.36,-1.14l-3.01,-2.55l-0.91,-0.12l-1.86,0.76l0.4,-1.28l-0.35,-1.47l-1.59,-1.39l-0.56,-1.09l0.5,-4.06l-0.24,-0.45l-0.8,-0.15l-0.65,0.36l-0.91,-0.45l-2.49,-3.28l-0.83,0.23l-0.34,0.55l-1.76,0.16l-1.07,-0.97l0.01,-0.89l1.06,-1.86l-0.48,-3.5l-0.95,-1.6l-2.45,-1.05l1.19,-2.42l0.65,-3.42l1.47,-1.52l-0.23,-2.43l2.59,-7.18l0.17,-2.11l-1.77,-5.8l-3.26,-1.74l-1.29,-1.79l-2.4,-2.41l-0.16,-0.88l1.48,-0.19l5.05,-3.83l2.03,-0.63l0.56,-2.44l-0.07,-0.77l-0.55,-0.93Z\", \"name\": \"Castilla-La Mancha\"}, \"ES-CL\": {\"path\": \"M162.52,126.18l1.16,-1.77l0.51,-3.06l-1.09,-2.34l-4.67,-1.31l-1.95,-1.19l-0.99,-0.0l-1.3,0.43l-1.35,1.12l-0.52,0.06l-2.78,-0.63l-2.48,-0.12l0.44,-1.29l0.1,-2.25l1.16,-2.7l-0.1,-3.5l0.23,-0.61l1.74,-1.61l-0.18,-1.3l-1.28,-1.95l-0.21,-1.06l0.4,-1.33l0.91,-1.17l1.95,-0.89l1.42,-1.45l1.52,0.08l0.99,-0.42l4.33,-5.28l0.72,-2.15l-0.55,-2.95l0.1,-0.93l1.1,-1.32l0.82,-2.04l1.86,0.3l1.01,0.52l0.63,1.0l0.49,0.11l1.1,-0.52l1.47,-1.58l1.73,-0.76l4.18,-0.24l1.8,0.69l3.15,0.26l4.13,-1.22l3.47,-1.93l0.45,-0.78l-0.04,-1.03l-2.11,-1.15l-0.17,-0.53l1.94,-0.23l1.93,-0.73l0.4,-0.52l0.12,-1.13l1.27,-2.15l1.6,-0.72l0.96,0.25l1.2,0.94l2.17,0.37l2.79,1.4l1.51,0.36l0.79,-0.26l0.38,-0.6l0.16,-1.11l0.9,-0.44l4.12,1.24l1.17,-0.1l1.45,-0.76l0.49,-0.76l0.42,-1.64l0.34,-0.15l4.04,0.68l1.88,-0.43l0.77,0.7l0.44,1.91l0.71,1.24l2.49,1.8l2.01,1.21l2.93,1.26l3.86,-0.04l0.93,-0.33l0.58,-0.63l1.03,-2.67l1.6,-2.62l1.42,-0.64l2.45,0.04l1.88,0.93l3.74,0.6l1.21,0.76l1.51,0.12l1.59,-0.65l1.74,0.03l0.6,-0.6l0.7,-1.43l3.41,-0.06l1.48,-0.45l0.72,-0.77l0.52,-1.96l0.39,-0.26l0.71,-0.14l3.57,0.54l6.3,-0.77l3.53,-1.75l1.72,0.54l0.96,-0.11l1.77,-1.97l0.88,-2.73l1.16,-1.71l3.56,-1.26l2.05,-1.15l1.08,-0.99l3.39,-1.85l1.09,-0.01l1.71,1.15l1.72,2.98l-0.27,4.73l0.61,2.7l1.16,1.27l2.68,1.46l0.79,1.46l1.25,1.23l0.73,2.76l0.38,0.31l1.39,0.02l1.14,-0.35l3.27,-0.02l2.52,-0.52l3.23,0.14l2.33,-1.26l1.86,-0.18l1.8,-0.99l1.64,0.23l2.04,1.23l1.97,3.6l1.02,0.77l6.8,2.54l0.77,0.55l0.16,2.97l0.81,5.05l0.65,1.44l1.46,0.37l1.76,-1.31l1.39,-0.4l0.7,0.54l0.08,0.45l-0.42,0.74l-2.33,0.68l-0.48,0.3l-0.36,0.72l0.24,0.92l1.79,1.69l3.24,0.73l1.48,1.9l0.44,0.19l2.82,-0.85l1.82,-4.06l0.54,-0.38l-0.03,4.25l0.29,0.44l2.48,0.66l3.27,-1.02l2.28,-2.12l3.45,-0.27l0.76,-0.49l0.44,-0.73l0.01,-1.31l-0.67,-1.5l-0.11,-2.25l-0.45,-0.93l-0.7,-0.36l-0.9,-0.03l-0.94,0.53l-1.33,1.7l-0.59,-0.22l-0.17,-0.4l-0.28,-1.56l0.61,-1.3l1.79,-0.17l1.99,-1.28l0.49,-0.81l-0.15,-0.97l-0.89,-1.27l-1.2,-0.7l-1.38,0.37l-1.46,2.17l-2.72,1.36l-1.04,-0.21l-1.06,-1.41l0.07,-1.12l2.0,-5.19l2.25,-1.44l1.39,-1.53l2.76,-1.35l0.9,-1.03l0.31,-2.39l1.25,-0.35l1.96,0.15l1.41,-0.49l3.0,-2.25l2.57,-3.21l2.11,-1.93l0.98,0.13l1.58,1.13l3.87,0.82l1.84,0.85l4.54,0.45l1.97,-0.18l4.05,-1.57l5.57,-3.57l1.41,-0.26l1.57,1.23l3.73,0.28l1.33,0.21l0.38,0.36l0.01,0.54l-1.12,0.94l-0.87,2.17l0.09,1.0l0.45,0.71l1.2,0.56l0.25,0.42l-0.43,4.66l-1.06,2.06l0.07,0.44l0.96,0.7l2.09,0.6l2.67,0.25l0.97,-0.5l1.15,-2.5l0.93,-0.45l0.28,0.11l0.31,1.37l0.63,0.66l1.15,0.38l0.46,0.74l-0.56,1.38l-2.43,0.19l-0.42,0.39l0.06,1.05l0.96,1.2l0.94,0.67l1.86,0.67l0.28,0.74l-0.46,0.8l-1.5,0.34l-1.23,1.09l-3.47,0.4l-3.48,-0.86l-0.64,-1.59l-1.16,-0.89l-1.63,-0.36l-2.36,0.27l-0.87,0.66l-2.48,3.4l-0.63,1.39l0.26,1.36l3.04,3.62l1.37,0.58l0.55,-0.45l0.09,-1.02l0.84,-1.31l0.95,-0.36l1.43,-0.01l1.05,-0.86l0.88,-1.29l0.48,0.07l0.05,1.3l-1.87,2.96l-0.69,1.69l0.27,1.45l1.17,1.45l-0.42,1.27l0.38,0.55l1.21,0.09l3.57,-1.42l1.89,1.01l1.86,1.75l2.26,1.39l1.61,2.03l1.77,0.86l4.25,3.57l0.8,1.37l-4.12,1.44l-2.69,-0.78l-4.32,-0.51l-2.91,0.32l-1.13,0.5l-0.4,1.16l0.72,1.04l0.21,0.99l-1.45,2.22l-2.06,2.4l0.01,0.99l0.56,0.5l1.71,-0.29l0.5,0.23l0.07,1.02l-0.81,2.82l0.33,0.82l1.22,1.04l0.67,1.58l-0.59,2.3l0.14,3.98l-0.96,1.71l-2.23,0.83l-0.32,0.77l0.67,1.23l0.08,2.1l0.67,3.3l-0.92,4.49l-1.13,1.3l-0.1,0.8l2.22,3.49l0.73,2.0l1.46,1.09l2.02,3.39l1.18,0.56l4.83,-0.12l0.96,2.06l0.48,2.94l0.28,0.32l2.59,0.77l2.36,-1.0l1.8,-1.12l0.83,-0.89l0.46,-1.05l0.06,-2.42l1.29,-2.29l0.63,-0.41l2.14,0.01l0.37,0.22l0.23,0.92l-0.19,1.71l-1.2,1.4l-0.89,2.53l-0.03,0.96l0.48,0.71l0.96,0.5l1.89,0.21l1.81,1.21l0.76,0.17l2.93,-0.24l3.11,0.19l0.36,-0.28l2.3,-4.52l1.44,-1.5l0.41,-3.53l1.67,0.19l2.94,-2.11l1.65,-0.55l4.07,-0.32l3.27,0.38l0.75,0.52l0.61,2.5l1.39,1.29l0.84,-0.03l3.64,-1.28l1.1,-0.12l2.07,0.32l0.54,0.35l0.2,0.75l-1.6,1.53l-0.13,1.56l0.65,1.41l1.6,1.36l0.6,1.04l0.13,0.43l-0.65,0.73l-0.21,0.87l0.44,1.97l0.53,0.8l0.77,0.43l4.75,1.02l1.54,0.65l1.44,1.19l0.82,0.2l3.11,-0.68l3.77,-2.3l0.37,3.8l0.97,2.84l1.36,1.98l-0.34,1.84l-1.37,2.46l-0.24,1.1l1.81,2.98l0.72,1.85l1.41,1.48l-0.14,0.98l-1.71,3.69l-2.46,0.76l-1.38,1.4l-1.34,0.74l-1.84,2.23l-2.61,-0.53l-0.85,0.38l-1.0,1.07l-0.13,1.42l0.56,1.06l0.37,2.31l-0.18,3.04l0.23,1.54l1.28,2.24l0.62,4.19l-2.01,0.74l-2.26,1.48l-0.77,0.18l-0.39,-0.5l0.09,-2.01l-0.53,-1.39l-1.73,-0.83l-2.32,-0.26l-0.74,0.42l-0.54,0.8l-0.77,4.78l-0.71,1.09l-1.27,0.82l-0.55,0.85l-0.38,1.68l-0.1,2.91l0.94,2.32l0.69,6.67l0.95,1.32l3.52,0.81l1.83,1.69l0.03,1.11l-0.6,2.31l0.22,2.38l-0.33,-0.03l-1.15,-1.31l-2.46,-1.9l-0.72,-0.28l-0.93,0.44l-2.06,2.0l-3.78,0.11l-1.71,1.19l-1.71,0.69l-2.3,0.2l-1.71,-1.11l-1.04,-0.23l-2.91,1.35l-0.69,-0.03l-1.7,-0.76l-1.03,-0.87l-0.9,-2.39l-1.66,-1.06l-1.2,-2.49l-0.97,-0.45l-2.24,0.99l-0.88,-0.23l0.48,-1.1l-0.0,-0.81l-0.5,-0.77l-1.37,-0.84l0.85,-0.6l0.46,-0.75l0.12,-0.85l-0.39,-0.57l-0.82,-0.22l-1.22,0.19l-1.14,-1.15l-1.19,-0.62l-2.81,-0.63l-0.61,-0.33l-1.46,-1.87l-1.64,-0.11l-2.04,1.14l-1.47,0.09l-2.41,-0.67l-1.1,-0.79l-1.05,-3.13l-1.47,-0.8l-0.97,-0.05l-1.4,0.54l-1.08,1.6l-0.89,0.57l-1.38,0.35l-6.58,0.56l-7.54,-1.78l-1.79,0.85l-1.82,2.18l-1.84,0.05l-0.88,0.49l-3.09,0.6l-3.18,-0.17l-1.73,-0.72l-0.47,0.13l-0.22,0.68l0.83,1.42l-0.26,2.29l-1.93,0.58l-5.06,3.85l-1.62,0.01l-3.06,0.67l-2.21,1.34l-4.08,4.82l-3.88,2.93l-2.9,4.79l-1.09,0.74l-5.65,1.95l-0.85,0.67l-2.17,2.84l-0.93,1.68l-0.35,1.27l0.2,1.87l-0.88,2.1l-0.34,2.63l-0.98,2.46l-1.98,0.64l-2.86,-0.37l-2.08,1.37l-4.81,7.31l-0.46,1.71l-0.34,3.76l-1.16,0.69l-2.97,0.88l-1.28,-0.59l-0.87,-1.44l-1.09,0.13l-0.35,0.67l0.42,2.65l-0.28,1.45l-1.45,1.53l-0.57,1.1l0.02,5.33l0.23,1.15l-0.87,3.08l0.28,1.51l-2.92,0.6l-1.85,-0.4l-1.32,0.69l-0.98,1.39l-0.56,3.3l-1.06,1.94l-0.67,0.45l-1.54,0.27l-1.69,-1.85l-1.02,0.08l-0.47,0.64l-0.03,0.78l0.45,2.95l-1.18,2.25l-0.57,2.96l-0.8,1.31l-1.87,0.78l-2.26,0.42l-2.36,-1.1l-0.43,-0.93l-0.59,-4.04l-0.66,-0.71l-5.31,0.89l-1.34,-0.03l-0.76,0.69l-0.57,2.64l-0.71,0.95l-5.02,3.75l-1.3,2.96l-1.8,1.4l-2.23,0.69l-0.72,-0.2l-0.75,-2.88l-0.72,-0.46l-0.83,0.05l-2.6,1.05l-1.37,1.52l-3.31,2.65l-1.52,0.46l-1.39,-0.05l-2.71,-1.47l-6.25,-0.79l-2.06,-3.94l-0.15,-4.38l0.91,-2.48l0.02,-0.48l-0.42,-0.64l-1.63,-0.05l-3.33,0.98l-3.72,3.41l-1.3,0.44l-2.47,0.08l-2.4,-0.85l-1.61,-0.94l-1.54,-2.12l-4.07,-3.32l-2.69,-1.08l-2.49,0.79l-1.18,-0.13l-0.28,-0.42l0.69,-1.6l-0.07,-0.94l-0.94,-1.7l-0.87,-0.26l-4.94,1.89l-0.6,0.53l-0.94,2.32l-0.81,0.63l-0.69,-0.05l-3.96,-1.82l-2.35,-2.13l-4.46,-2.15l1.56,-3.23l-0.05,-0.81l-0.52,-0.5l-2.09,-0.89l-0.38,-0.35l-0.14,-0.97l-0.29,-0.32l-1.74,-0.58l-1.73,-1.69l-2.26,-1.47l-1.4,-0.3l-0.99,0.13l-3.63,2.38l-2.08,0.5l-1.82,1.42l-0.89,1.75l-0.49,0.33l-2.65,0.7l-2.02,1.89l-4.85,2.06l-2.07,1.63l-0.83,1.15l0.26,2.53l-0.98,1.22l-5.49,1.23l-2.13,1.02l-1.91,-0.78l-0.71,0.12l-2.03,1.09l-1.7,-0.32l-1.85,0.37l-1.73,-0.88l-1.89,-1.94l0.22,-1.03l3.78,-3.11l1.22,-2.17l-0.08,-0.48l-2.18,-2.06l-1.46,-2.39l-0.36,-2.64l1.16,-2.9l1.52,-2.16l0.25,-1.21l-0.42,-1.77l-1.95,-2.78l-0.13,-1.34l2.38,-5.68l-0.14,-2.68l-1.5,-6.94l0.37,-3.44l-0.29,-1.56l0.08,-1.89l1.08,-0.55l0.27,-1.3l-0.48,-1.37l-1.7,-0.8l-0.42,-0.56l-1.99,-5.41l-0.98,-1.63l-2.63,-3.07l-0.11,-0.87l0.69,-1.18l0.23,-1.44l1.1,-0.57l3.94,0.36l2.12,-0.31l0.95,-0.96l2.66,-3.99l0.55,-1.59l-0.13,-2.23l0.19,-0.48l3.19,-3.13l0.87,-2.03l2.96,-4.22l5.28,-0.24l4.62,-2.16l2.28,-1.77l2.12,-2.19l2.04,-3.32l0.95,0.13l0.52,-0.34l0.22,-1.84l1.26,-0.68l2.0,-0.15l0.37,-0.39l0.01,-0.64l2.45,-3.96l-0.13,-2.0l0.35,-0.74l1.7,-1.81l3.15,-4.65l-0.01,-0.47l-1.58,-2.16l-2.82,-2.98l-3.11,-2.03l-3.28,-1.21l-5.42,-1.12l-1.18,0.07l-1.74,1.52l-1.45,0.62l-1.61,-0.61l-0.79,-1.24l-0.52,-3.36l-0.9,-2.18l1.1,-2.31l1.61,-7.23l0.74,-1.63l-0.24,-0.54l-2.8,-0.75l-0.31,-0.37l0.51,-3.78l-0.35,-1.66l-1.04,-1.18l-1.6,-0.68l-0.52,0.2l-0.81,1.73l-2.02,0.63l-4.58,0.2l-1.76,-0.54l-2.33,-3.61l-2.29,-0.53l-0.46,0.33l-0.39,2.46l-1.32,0.83l-3.95,0.33l-1.7,-0.35l-2.26,-1.59l-0.22,-1.97l1.37,-3.42l-0.04,-0.71l-0.82,-1.4l-0.58,-0.41l-1.51,-0.05l-0.74,-0.36l-0.41,-0.72l0.17,-0.5l0.87,-0.89l1.57,-2.48l2.06,-1.61l1.04,-3.02l2.7,-2.99l1.98,-1.42l1.35,-0.32l2.65,0.24l0.64,-2.01l1.95,-2.11l1.69,-2.69l0.42,-1.23l0.17,-3.23l-0.4,-1.17l-1.07,-1.18l-2.2,-1.44l-2.81,-2.38ZM438.75,93.85l2.44,-0.16l1.46,1.35l1.25,0.18l-1.12,2.72l-1.61,0.88l-0.13,1.15l1.89,2.42l0.65,0.43l1.13,-0.12l1.44,-1.18l0.53,1.78l0.02,1.12l-1.08,0.39l-0.41,-0.53l-0.94,-0.34l-5.01,-0.12l-3.31,-1.38l-4.45,-1.03l-3.99,-1.86l-1.7,-1.29l-1.79,-2.16l2.36,-3.54l0.82,-0.45l4.13,-0.26l1.7,0.17l5.71,1.86Z\", \"name\": \"Castilla y Le\\u00f3n\"}, \"ES-MD\": {\"path\": \"M311.9,319.04l0.76,-1.29l0.55,-2.88l1.21,-2.32l0.12,-0.77l-0.52,-3.01l0.31,-0.18l1.05,1.37l0.81,0.53l2.15,-0.36l0.89,-0.65l1.16,-2.11l0.61,-3.44l0.73,-0.98l0.9,-0.49l1.75,0.41l2.63,-0.41l1.03,-0.67l-0.24,-1.73l0.87,-3.12l-0.24,-6.45l1.99,-2.51l0.32,-1.67l-0.41,-1.95l0.12,-0.8l1.23,1.64l1.33,0.46l3.35,-0.92l1.5,-0.91l0.95,-5.74l4.63,-7.03l1.78,-1.17l2.7,0.4l1.94,-0.47l0.64,-0.6l1.04,-2.63l0.32,-2.57l0.9,-2.19l-0.18,-1.96l0.3,-1.06l2.94,-4.26l0.59,-0.48l6.36,-2.36l0.69,-0.57l2.86,-4.74l3.83,-2.88l3.99,-4.75l1.99,-1.23l2.59,-0.57l0.31,1.34l2.46,2.46l1.34,1.84l3.09,1.55l1.7,5.49l-0.15,1.81l-2.61,7.26l0.28,2.26l-1.45,1.48l-0.69,3.5l-1.23,2.47l0.35,0.96l2.36,0.9l0.74,1.28l0.43,3.13l-1.01,1.66l-0.22,1.06l0.75,1.15l1.06,0.73l2.08,-0.13l0.86,-0.79l2.2,3.12l1.36,0.62l0.84,-0.32l-0.41,4.03l0.71,1.38l1.49,1.23l0.28,1.08l-0.44,1.16l0.15,0.57l0.33,0.34l0.75,0.08l1.67,-0.8l0.43,0.08l2.68,2.31l0.32,2.75l-0.09,2.43l0.28,0.77l2.66,1.68l0.93,1.57l0.19,0.83l-0.3,1.25l0.08,1.27l-0.7,2.36l-1.66,2.13l-0.66,3.37l0.14,2.22l0.56,0.81l0.83,0.13l3.2,-2.82l0.37,-0.06l0.55,0.38l1.28,3.44l0.03,2.61l0.54,2.86l-0.59,0.24l-0.24,0.57l0.51,2.15l1.11,2.12l-0.34,0.98l-1.52,1.42l-1.17,0.36l-2.9,0.14l-0.52,-1.15l-1.51,-0.72l-2.73,0.93l-3.94,2.1l-3.44,0.71l-2.1,-1.05l-2.19,0.98l-6.23,-0.26l-1.16,0.87l-0.76,1.4l-3.1,0.88l-1.51,1.06l-2.24,0.71l-0.57,0.76l-0.01,1.35l-1.86,0.64l-1.91,1.15l-2.49,0.65l-2.04,2.05l-2.08,1.65l-0.59,0.16l-0.89,-0.14l-1.98,-1.27l-0.85,-0.94l1.05,-0.69l5.0,-1.43l1.42,-1.54l1.58,-0.63l1.06,-0.9l3.06,-3.27l2.45,-1.38l0.96,-1.63l0.71,-2.33l-0.05,-1.55l-1.02,-1.11l-3.45,-1.71l-3.15,-0.54l-1.7,0.26l-0.68,-0.19l-0.7,-0.41l-1.65,-1.95l-0.74,-0.16l-1.47,0.23l-1.75,-1.6l-3.11,-0.8l-2.12,-1.03l-4.25,-1.48l-1.76,-2.13l-2.15,-1.08l-0.99,-0.02l-1.88,1.08l-2.03,-0.48l-2.97,-2.8l-0.85,0.02l-1.57,0.98l-1.77,0.35l-1.16,1.06l-1.03,1.76l-1.46,1.28l-0.83,-0.93l-1.1,-0.49l-0.9,-0.88l-0.62,-1.59l0.04,-2.62l-0.36,-0.63l-0.92,-0.53l-0.8,0.29l-1.54,2.43l-2.0,2.08l-0.93,1.37l-0.85,0.6l-2.84,1.38l-1.49,1.42l-1.62,-0.14l-1.1,-0.73Z\", \"name\": \"Comunidad de Madrid\"}, \"ES-MC\": {\"path\": \"M493.61,553.66l-1.62,-1.21l-10.65,-16.46l-0.22,-4.04l0.61,-2.66l-0.5,-4.32l0.57,-1.79l0.15,-2.54l0.96,-1.47l-0.03,-1.01l-0.68,-0.51l-6.15,-0.85l-3.19,-1.47l-3.08,0.16l-3.83,-2.41l-1.87,-2.2l-2.35,-3.99l-2.59,-2.03l0.84,-2.69l4.82,-6.13l2.54,-4.99l2.6,-2.23l2.93,-1.02l2.79,-2.57l1.71,-2.05l0.95,-0.6l0.99,-0.05l2.15,1.65l4.55,-0.99l2.72,-1.3l2.53,-1.94l3.43,-2.08l0.39,-1.05l0.94,-0.21l1.51,-0.9l0.71,0.06l1.12,0.66l1.77,0.04l0.45,0.8l-0.22,1.24l0.28,1.13l1.04,1.11l1.52,0.67l1.54,0.08l4.05,-1.32l4.79,-3.94l1.04,-1.5l0.21,-1.4l-0.51,-6.74l-1.07,-4.25l1.03,-2.15l1.37,-1.14l0.7,-1.19l0.29,-3.27l1.06,-2.28l1.98,-2.4l1.83,-1.35l1.45,1.27l0.96,0.05l3.88,-2.15l2.91,-2.55l3.77,-0.98l2.85,0.87l0.71,0.54l0.7,2.42l5.4,4.41l1.06,5.24l-0.01,2.07l-0.86,3.61l-0.02,2.54l-0.66,1.0l-3.0,3.0l-0.5,1.11l-0.16,1.35l0.04,3.51l0.5,2.17l0.79,0.46l3.68,1.02l1.0,0.73l0.67,1.08l0.92,3.26l-1.09,6.17l-2.79,5.07l-0.32,1.66l0.47,3.24l2.92,4.5l3.92,7.15l2.3,2.83l3.4,3.43l1.76,0.67l1.75,1.36l1.49,-0.05l0.22,2.88l-1.36,-1.68l-0.69,0.11l-1.58,4.3l-0.72,0.61l-1.64,0.63l-0.58,1.37l0.24,1.56l2.99,5.02l3.81,2.19l1.31,0.16l0.75,-0.86l0.76,0.44l0.34,0.73l-0.2,0.72l-1.82,1.5l-1.28,-0.35l-5.29,2.26l-3.3,0.19l-2.44,1.43l-3.13,-1.61l-2.23,-0.43l-4.2,-0.1l-2.35,0.54l-0.87,0.72l-0.46,0.95l0.17,1.04l-3.32,-0.99l-1.14,-0.97l-2.52,-0.73l-0.88,-0.01l-3.61,0.99l-3.07,0.3l-2.32,1.18l-2.96,2.91l-1.0,0.65l-1.68,0.46l-1.12,0.94l-0.5,0.98l-0.76,3.17l-0.27,0.22l-0.62,-0.36l-0.72,0.02l-1.88,1.5l-4.9,1.87l-1.33,0.92l-5.48,-4.26l-4.2,-1.04l-0.54,0.17l-0.47,0.84ZM563.77,527.63l0.41,0.74l-0.34,1.05l0.02,-0.95l-0.09,-0.83ZM564.04,533.2l0.1,0.35l-0.07,-0.08l-0.03,-0.27Z\", \"name\": \"Regi\\u00f3n de Murcia\"}, \"ES-AN\": {\"path\": \"M116.64,543.93l-0.02,-0.49l0.9,-1.18l0.18,-1.61l2.73,-3.01l0.93,-5.28l0.87,-2.42l1.1,-1.62l6.02,-5.08l1.91,-3.36l2.56,-8.33l-0.25,-2.27l2.96,-1.14l2.35,0.41l1.95,-0.74l1.28,-1.33l1.07,-2.2l0.88,0.09l3.68,1.52l1.87,-0.17l0.34,-0.29l0.53,-1.98l0.64,-1.11l0.56,-2.49l1.21,-2.5l1.43,-4.11l0.62,-2.52l0.68,-0.56l8.6,2.93l0.24,0.84l-1.36,3.32l0.21,0.68l0.71,0.56l3.71,1.33l3.12,0.06l1.61,-0.25l2.08,0.18l1.66,0.54l2.02,2.35l0.42,2.3l0.74,0.67l3.1,0.21l1.58,0.52l1.13,-0.1l2.58,-3.06l1.3,-0.33l3.18,2.03l1.26,2.72l1.65,0.45l8.52,3.53l1.07,1.03l0.56,-0.01l2.86,-2.4l1.56,-0.82l9.06,-1.67l1.71,-0.84l0.89,-1.05l0.66,-1.94l1.34,-2.14l0.01,-0.84l-0.78,-1.58l0.43,-1.49l0.87,-1.01l2.26,-1.49l1.88,-2.39l1.87,-0.7l4.3,-0.59l0.69,0.13l0.8,0.62l1.3,1.83l-2.28,1.43l-0.49,0.64l-0.04,0.6l0.53,2.58l0.63,0.56l0.74,0.13l1.45,-0.29l4.5,-3.74l2.94,0.06l2.83,-2.29l0.47,-0.76l0.22,-2.17l0.68,-1.23l0.13,-2.49l-0.36,-2.88l-1.62,-3.88l-1.28,-1.61l0.47,-2.92l-0.3,-0.99l-0.75,-0.99l0.4,-2.31l1.18,-1.15l4.05,-2.02l1.59,-2.11l3.01,-2.29l0.58,-0.84l0.7,-1.98l1.3,-1.83l1.05,-0.96l3.61,-0.13l1.4,-2.39l2.08,-1.8l2.95,-2.03l2.08,-0.72l0.96,-2.44l-0.28,-1.54l0.5,-0.24l5.16,-0.12l1.17,-0.52l1.57,-0.22l3.65,2.78l2.28,0.95l4.19,-0.1l0.42,0.26l0.45,3.74l1.24,1.88l2.41,1.31l2.21,0.23l3.4,1.43l0.79,0.56l0.79,1.16l2.38,1.21l2.24,1.75l1.52,2.28l1.23,0.64l1.45,0.26l1.78,1.14l1.66,1.42l1.82,1.94l1.91,2.62l0.77,0.5l2.99,1.42l7.71,2.6l1.08,-0.17l0.33,-0.39l0.04,-3.05l0.47,-0.84l0.41,-0.08l2.53,0.12l2.58,0.91l18.81,0.75l2.23,-0.37l1.43,-0.59l1.22,-1.98l0.91,-0.59l1.76,-0.32l2.33,0.75l1.58,-0.32l1.72,0.73l4.72,1.0l1.04,-0.02l1.46,-0.71l0.76,-2.94l1.19,-0.42l0.7,0.36l0.76,2.2l0.62,0.47l2.34,0.64l2.02,0.13l2.61,-0.88l1.58,-0.99l1.4,-1.67l0.24,-1.27l0.64,-1.01l0.93,-0.48l1.41,-0.2l0.92,0.04l3.15,1.27l5.86,0.49l2.32,0.69l1.71,-0.44l1.06,-0.97l2.14,-1.1l2.29,2.93l1.55,1.44l0.5,-0.05l0.35,-0.43l0.28,-1.53l1.55,-1.23l0.95,-0.45l1.65,-0.14l3.14,1.28l2.29,-1.95l3.6,-2.02l2.09,-2.0l2.27,1.45l2.86,1.18l3.39,-0.86l1.72,0.07l1.49,0.6l-0.21,1.28l0.3,1.75l-0.26,2.29l0.23,0.84l1.17,1.27l4.29,1.26l0.72,7.49l0.57,0.99l1.97,1.25l0.52,1.2l-0.26,2.09l-0.94,1.53l0.29,2.67l-6.72,8.95l0.15,0.59l5.44,2.64l6.9,2.1l1.53,-0.12l2.55,1.98l2.28,3.91l1.96,2.31l4.08,2.58l3.22,-0.12l3.2,1.47l6.33,1.05l-1.04,1.83l-0.16,2.6l-0.58,1.83l0.49,4.43l-0.61,2.6l0.01,3.41l0.28,1.01l10.72,16.58l0.84,0.85l1.53,0.76l0.48,-0.22l0.49,-0.86l3.78,0.96l5.15,4.01l-2.19,1.85l-1.29,3.21l-1.91,2.77l-3.85,3.89l-1.78,2.49l-1.16,3.37l-1.65,7.45l-1.93,4.97l-1.43,2.47l0.4,3.69l-0.54,0.39l-1.96,0.33l-3.27,2.53l-1.01,1.29l-0.66,3.31l-2.81,2.84l-0.95,2.86l-1.8,0.74l-0.85,1.69l-0.9,0.7l-2.37,0.67l-2.29,-0.73l-5.23,-6.0l-2.41,-1.5l-2.95,-0.76l-1.36,0.25l-2.2,1.15l-1.19,0.27l-3.27,-1.11l-5.76,0.97l-1.2,0.74l-1.7,2.66l-1.36,3.68l-2.63,2.64l-1.57,0.68l-1.68,0.3l-1.38,-0.4l-1.18,0.5l-3.7,-2.19l-0.87,0.16l-1.05,0.9l-0.47,-0.27l-1.76,-2.35l-1.73,-0.98l-1.37,-0.11l-2.44,0.36l-16.91,-1.12l-6.78,0.82l-3.39,2.6l-2.73,1.03l-2.3,-0.06l-9.7,-2.82l-1.44,-1.04l-4.47,1.16l-2.79,0.22l-5.01,-1.6l-2.94,-0.31l-6.69,1.83l-6.41,-0.77l-1.71,0.15l-7.69,2.54l-1.75,0.24l-11.87,-0.93l-1.28,0.42l-0.94,0.86l-2.2,3.88l-1.61,2.2l-0.7,1.96l-7.88,4.98l-1.39,2.8l-0.95,0.72l-4.06,1.15l-2.65,-0.07l-8.18,-1.53l-1.67,-0.05l-6.06,3.29l-4.46,1.16l-3.13,1.93l-3.18,0.57l-1.99,0.91l-2.79,4.47l-1.29,1.36l-1.66,4.12l-1.2,1.06l-1.04,0.4l-0.25,0.42l0.38,1.82l-2.91,4.49l-0.33,0.95l-0.29,3.5l-0.7,0.0l-0.53,-1.29l-1.14,-0.8l-1.55,-0.56l-1.4,-0.07l-1.22,1.78l-0.29,1.04l0.04,1.29l0.39,1.01l-0.28,0.72l0.72,2.16l-0.17,0.72l-1.04,1.4l-7.59,2.32l-1.56,0.71l-2.23,-1.87l-3.94,-2.49l-1.82,0.48l-2.55,-1.23l-2.7,-0.79l-0.9,-0.83l-1.44,-2.11l-4.3,-4.21l-1.33,-0.88l-1.73,-0.04l-2.83,0.54l-2.5,-0.94l-1.61,-2.13l-2.79,-5.19l-3.22,-2.47l-1.01,-3.94l-3.62,-7.62l-1.81,-2.51l-1.47,-2.84l-1.71,-1.55l0.52,-0.03l1.99,1.83l0.4,0.52l-0.21,0.86l1.53,1.99l0.39,0.13l0.82,-0.19l0.74,-0.63l2.09,-2.67l-0.26,-0.66l-1.9,0.37l-0.84,-0.12l-0.4,-0.94l0.38,-2.6l-0.58,-1.57l-2.83,-2.66l-0.86,-0.41l-5.49,-0.57l-0.84,-0.88l-0.8,-3.23l-1.62,-3.11l-0.38,-1.39l0.26,-1.28l1.12,-1.22l3.56,-1.44l1.11,-0.99l0.71,-2.12l-0.55,-3.37l0.33,-1.75l2.0,-1.74l5.53,0.24l1.88,-2.46l-0.03,-0.52l-0.52,-0.06l-2.82,1.48l-1.45,0.03l-1.51,-1.04l-2.8,1.09l-1.33,1.0l-0.67,2.08l0.37,4.89l-0.25,0.59l-1.88,0.03l-1.71,-2.23l-2.12,-5.43l-1.51,-2.65l-1.93,-2.06l-16.24,-11.76l-1.8,-0.98l-2.63,-0.89l-2.68,-2.23l-2.61,-1.28l-1.09,-1.7l-0.4,-1.96l3.47,-5.04l0.75,-1.47l-0.13,-0.51l-0.52,0.07l-3.32,3.75l-1.69,1.2l-1.95,0.01l-0.4,0.4l0.06,0.73l1.43,2.21l0.72,1.8l-0.36,0.04l-5.68,-2.8l-2.18,-0.72l-5.3,-0.53l-0.42,0.29l0.2,0.47l0.88,0.45l-13.06,0.33l-1.26,0.54l-1.21,1.12l-0.99,0.12l-1.9,-0.92l-1.27,-5.23l0.42,-1.39l-0.65,-2.69l-0.49,-6.56l-1.13,-2.61l0.13,-0.92l-0.6,-3.93l-0.52,-1.67l-2.56,-2.85l-0.53,-2.14l-0.35,-0.25Z\", \"name\": \"Andaluc\\u00eda\"}, \"ES-EX\": {\"path\": \"M115.01,365.36l13.6,0.65l3.27,-0.98l2.58,0.08l1.09,-0.32l1.47,0.85l2.05,0.09l9.78,-1.21l1.07,-0.44l0.98,-2.05l-0.22,-2.09l1.33,-2.99l-0.45,-2.49l0.79,-1.31l2.26,-1.13l1.72,-2.61l0.4,-3.12l-0.23,-1.71l1.03,-1.23l0.63,-2.84l-0.09,-1.02l1.39,-3.05l-2.66,-4.8l-2.44,-3.38l-1.54,-0.99l-2.43,-0.45l-0.65,-0.98l-0.46,-2.86l-0.49,-1.18l1.61,-3.51l3.92,-2.34l3.92,-0.24l1.22,-0.84l0.35,-0.75l2.07,2.06l1.56,0.59l1.9,-0.36l1.98,0.28l2.44,-1.16l1.13,0.63l1.03,0.11l2.16,-1.04l4.66,-0.88l1.01,-0.44l1.05,-0.98l0.31,-1.43l-0.34,-1.7l0.62,-0.87l2.01,-1.58l4.74,-1.99l1.99,-1.88l2.71,-0.72l0.76,-0.57l0.84,-1.7l1.56,-1.23l2.86,-0.85l2.83,-2.01l1.7,0.15l2.15,1.39l1.79,1.73l1.72,0.62l0.22,1.06l0.53,0.5l2.42,1.19l-1.13,2.74l-0.49,0.47l-0.11,0.54l0.36,0.48l4.58,2.22l2.38,2.15l4.13,1.9l0.98,0.09l0.9,-0.43l0.54,-0.59l0.93,-2.31l0.35,-0.29l4.48,-1.76l0.35,0.06l0.72,1.31l-0.07,1.09l-0.59,1.3l0.65,1.04l1.81,0.23l2.15,-0.78l2.51,1.0l3.84,3.16l1.63,2.2l1.79,1.04l2.5,0.89l2.73,-0.06l1.11,-0.29l0.66,-0.33l3.51,-3.28l4.19,-0.99l-0.83,2.81l0.15,4.6l2.04,4.03l-1.72,0.87l-0.54,1.19l-0.36,2.19l-0.24,6.31l-1.11,6.38l0.02,2.38l0.31,1.18l0.54,0.27l1.78,-0.5l2.2,-0.04l0.87,0.59l0.99,1.36l-0.15,0.86l-1.07,1.95l-0.61,4.75l0.25,0.9l0.65,0.69l3.37,0.5l0.88,-0.52l1.33,-1.9l1.26,-1.08l1.55,-0.31l0.6,0.22l0.51,1.59l-0.38,2.2l1.55,2.3l0.06,0.53l-1.08,5.26l-2.6,4.18l-0.19,0.66l0.22,0.75l2.52,2.16l2.42,3.14l2.85,2.92l2.65,1.28l3.62,4.87l2.68,2.52l4.7,2.18l4.32,-2.15l3.11,-1.06l1.01,-1.2l3.19,-1.69l0.4,-0.48l0.69,1.95l-0.2,1.33l-0.96,1.86l-0.96,2.86l-1.08,1.06l-1.43,0.57l-0.56,0.94l0.04,0.88l1.45,3.98l1.27,2.51l3.43,4.31l-3.78,-1.88l-1.31,-0.19l-1.7,0.33l-1.77,-0.36l-0.78,0.12l-2.76,2.96l-1.37,5.14l0.23,2.27l2.02,1.68l-0.02,0.83l-2.45,1.14l-3.95,-1.72l-0.77,0.19l-0.66,0.54l-0.1,0.88l0.62,2.55l0.89,0.98l0.18,1.73l0.54,1.26l0.69,0.57l2.73,0.92l1.6,0.23l0.48,1.1l-0.75,3.17l-2.87,-0.12l-1.21,0.53l-1.1,1.16l-1.36,2.68l-1.6,5.96l-1.16,2.35l-4.59,1.08l-1.1,0.5l-5.16,0.12l-0.89,0.39l-0.37,0.7l0.35,1.37l-0.73,1.99l-1.91,0.61l-3.05,2.11l-2.2,1.91l-0.83,1.15l-0.35,1.04l-2.53,-0.12l-1.13,0.29l-1.2,1.09l-1.35,1.89l-1.24,2.76l-2.98,2.26l-1.46,1.99l-4.03,2.01l-1.44,1.4l-0.55,2.48l1.08,2.24l-0.47,3.02l1.36,1.86l1.58,3.8l0.31,2.67l-0.11,2.21l-0.67,1.22l-0.46,2.57l-2.66,2.16l-2.89,-0.08l-4.57,3.78l-0.98,0.19l-0.77,-0.35l-0.37,-2.51l2.33,-1.41l0.47,-0.89l-0.45,-1.1l-1.15,-1.31l-0.91,-0.7l-1.15,-0.24l-4.41,0.6l-2.06,0.76l-0.78,0.6l-1.34,1.96l-2.21,1.43l-1.06,1.26l-0.53,1.96l0.78,2.13l-1.28,1.96l-0.66,1.94l-0.65,0.76l-1.42,0.7l-9.18,1.71l-1.69,0.9l-2.69,2.21l-0.96,-0.89l-10.15,-3.99l-1.13,-2.6l-3.49,-2.2l-0.93,-0.04l-1.13,0.55l-2.28,2.88l-5.36,-0.64l-0.69,-2.61l-1.25,-1.73l-0.99,-0.85l-1.96,-0.67l-2.23,-0.2l-1.65,0.26l-3.03,-0.06l-3.4,-1.23l-0.49,-0.52l1.34,-3.13l0.0,-0.74l-0.39,-0.82l-9.19,-3.24l-1.25,0.79l-0.95,-0.57l-3.94,0.57l-0.45,0.15l-0.75,1.04l-1.47,0.67l-2.38,0.32l-1.36,-1.29l-2.71,-6.86l-1.9,-1.65l-1.0,-2.14l-6.98,-9.01l-2.43,-1.7l1.33,-1.8l0.0,-1.23l-0.61,-0.89l0.55,-0.87l1.18,-4.18l2.72,-3.96l0.41,-1.28l-0.2,-0.89l-1.15,-1.1l-0.11,-1.38l0.57,-4.73l0.85,-1.91l3.76,-3.09l1.04,-0.44l1.1,-0.92l1.82,-2.34l3.04,-0.68l1.19,-0.61l2.07,-1.78l0.43,-2.77l-0.79,-1.67l1.24,-1.05l1.47,-2.05l3.3,-6.32l-0.11,-0.77l-0.69,-0.69l0.38,-1.41l-0.42,-1.66l-0.97,-1.63l-1.12,-1.11l-1.57,-1.09l-1.84,-0.53l-1.89,0.19l-2.37,1.25l-1.69,-0.59l-0.54,-0.54l-0.06,-0.47l0.85,-2.52l-0.84,-1.87l-5.1,-2.25l-0.83,-1.2l-0.47,-1.58l0.09,-1.62l0.84,-1.48l-0.04,-0.45l-3.28,-4.03l-1.23,-1.0l-0.43,-0.87l-0.33,-3.53l0.85,-2.42l0.35,-2.02l-0.04,-2.02l-0.73,-1.05l-2.74,-0.73l-1.33,-0.64l-0.88,-0.72l-0.59,-1.77l-0.63,-0.85l-2.31,-1.25l-1.04,-1.0l-1.94,-2.6l-1.17,-1.08l-2.46,-6.71Z\", \"name\": \"Extremadura\"}, \"ES-VC\": {\"path\": \"M549.58,507.02l-1.08,-2.21l-2.49,-3.52l-0.66,-2.24l-0.13,-1.58l0.62,-2.31l1.9,-2.87l0.56,-1.31l1.1,-5.37l0.01,-1.2l-0.95,-3.37l-0.85,-1.37l-1.27,-0.91l-4.09,-1.18l-0.4,-1.82l-0.03,-3.4l0.53,-2.05l3.36,-3.42l0.57,-1.41l-0.13,-2.05l0.85,-3.54l0.03,-2.27l-1.04,-5.15l3.96,-0.26l1.25,-0.48l2.07,-1.47l0.48,-0.64l-0.07,-0.53l-2.54,-3.56l-0.7,-2.49l0.2,-0.9l1.84,-1.23l0.66,-2.57l-0.88,-3.19l0.31,-2.72l-2.54,-4.6l-1.65,-0.98l-1.34,-0.11l-1.5,0.87l-1.08,0.25l-1.81,-0.06l-3.55,0.46l-0.75,-0.39l-1.06,-0.85l-6.35,-7.55l-0.78,-1.97l0.1,-1.45l1.86,-4.85l1.94,-2.58l1.38,-3.7l0.33,-1.93l-0.13,-1.96l0.52,-2.65l-0.13,-0.82l-0.63,-0.86l-8.76,-2.83l-1.27,-0.08l-3.55,-2.24l-1.49,-0.52l-2.43,0.34l-0.61,-2.19l-1.73,-1.32l-0.33,-0.81l-1.02,-0.39l-0.96,-1.38l-0.04,-0.7l0.76,-2.07l-0.05,-0.97l0.58,-0.97l-0.3,-0.63l0.22,-2.57l-0.24,-1.44l0.46,-1.03l1.3,-0.98l0.81,-1.06l2.38,-4.74l2.94,-2.9l1.46,-0.21l2.2,1.04l1.35,0.05l1.43,-0.52l1.04,-1.05l0.33,-0.78l-0.33,-2.76l0.21,-1.34l2.73,-4.54l1.52,-5.81l0.41,-4.81l-0.63,-1.72l0.51,-0.74l2.45,-1.11l0.69,-0.58l1.14,0.59l4.92,-1.25l3.48,-0.03l1.7,0.42l3.15,1.5l0.84,1.01l0.2,0.55l-0.47,2.39l0.52,1.13l0.12,2.44l0.44,0.69l1.59,0.8l2.21,-0.31l3.67,-1.91l0.18,-0.53l-0.47,-0.95l-1.71,-1.59l-0.52,-1.02l-0.41,-2.2l0.46,-2.22l0.37,-0.47l3.3,-1.77l0.66,-0.82l0.7,-2.41l1.89,0.05l2.52,-0.39l4.71,-2.39l0.31,-0.79l-0.33,-2.49l2.23,-2.31l0.89,-1.66l0.17,-1.39l0.76,-1.42l0.27,-1.31l0.13,-2.9l0.59,-0.24l2.28,0.87l3.35,-0.5l3.09,-1.34l0.68,-0.63l0.5,-0.8l-0.01,-2.55l2.15,-1.87l1.66,-2.39l2.56,-1.69l0.55,-0.85l-0.23,-1.76l-1.25,-1.69l-1.78,-1.62l-0.24,-1.01l0.87,-0.99l2.99,-1.26l0.59,-0.73l-0.57,-2.18l-1.12,-1.11l0.33,-1.74l-0.37,-3.7l0.27,-2.52l-0.82,-0.69l-1.64,0.41l-2.9,-1.06l-0.2,-2.75l0.51,-0.95l1.26,-0.47l0.92,0.17l1.01,0.7l0.81,0.04l4.82,-2.79l0.53,-0.88l0.36,-3.73l1.76,-2.48l0.56,-0.23l1.02,-0.04l0.78,0.38l2.11,1.88l3.15,2.01l1.73,0.32l3.32,-0.2l0.91,0.25l0.48,0.88l0.1,1.17l0.8,0.57l0.83,-0.02l1.85,-1.44l1.21,-0.54l3.33,-0.26l1.88,-0.71l1.6,0.3l1.25,-0.24l0.66,1.38l0.84,0.85l1.55,0.53l1.19,0.98l-0.65,1.49l-0.08,0.93l0.53,1.44l0.69,0.78l1.71,0.94l4.65,1.63l1.99,1.09l1.03,0.96l0.3,1.33l1.12,1.3l4.23,1.82l-0.93,2.28l-3.21,4.32l-0.46,2.24l-1.69,1.76l-4.58,8.9l-3.38,3.25l-2.27,3.21l-3.11,3.28l-4.83,8.03l-1.75,1.87l-4.22,2.71l-1.73,2.55l-2.84,6.08l-1.67,2.54l-4.16,4.67l-6.81,11.37l-0.98,4.44l-3.18,4.08l-0.81,1.5l-0.78,2.51l-2.07,3.04l-0.73,1.64l-0.46,3.51l0.12,3.84l0.52,3.75l1.69,6.19l4.46,11.36l-0.17,0.7l-0.95,0.94l-0.21,1.08l0.23,1.47l2.05,4.15l1.64,4.2l2.45,3.39l2.45,4.31l1.0,1.29l2.51,2.01l2.46,2.57l1.59,1.22l4.83,0.76l3.07,0.9l2.74,1.55l1.69,1.91l-0.55,0.41l0.07,0.68l0.71,0.32l1.42,1.9l0.74,0.08l0.29,1.76l-0.27,0.38l-2.23,0.35l-1.2,0.64l-1.02,1.02l-0.99,2.07l-1.73,0.33l-2.41,1.89l-0.76,1.46l0.18,0.8l-0.75,-0.14l-2.94,0.84l-2.06,0.05l-1.05,0.38l-0.94,0.76l-0.92,1.69l0.07,2.35l-0.37,1.04l-0.89,0.96l-0.82,0.32l-2.75,0.01l-3.04,0.7l-1.75,0.69l-2.06,1.49l-6.33,2.69l-1.0,0.71l-0.51,1.04l-2.95,3.12l-0.77,1.39l-0.32,2.54l-2.97,0.41l-0.85,0.79l-0.29,1.14l-1.99,-0.12l-0.42,0.33l-0.6,3.42l0.18,7.03l-0.59,0.76l-0.95,0.24l-2.31,-0.17l-1.77,0.47l-1.27,1.06l-1.67,2.76l-0.74,2.59l-0.2,3.6l0.49,6.05l-0.12,1.39l-2.7,2.65l-0.69,1.18l-2.67,6.71l-0.15,1.27l-1.23,0.1l-1.62,-1.3l-1.69,-0.62l-5.07,-5.41l-3.22,-5.53ZM530.4,325.39l0.23,1.1l0.69,0.73l1.42,0.64l4.13,0.49l1.56,0.99l2.91,2.66l0.23,0.92l-0.45,0.88l-3.47,1.88l-6.78,1.59l-0.9,-0.06l-1.8,-0.69l-5.39,-0.84l-0.43,-0.37l-2.29,-7.11l-2.52,-2.12l0.16,-1.06l3.08,0.74l2.15,0.05l2.77,-0.87l0.58,-0.95l-0.06,-2.57l0.96,-1.06l1.51,3.25l1.68,1.76Z\", \"name\": \"Comunidad Valenciana\"}, \"ES-NC\": {\"path\": \"M487.26,54.0l1.46,0.39l0.47,-0.28l0.3,-1.1l0.98,0.39l1.72,-0.65l0.97,-0.96l1.95,-3.49l1.04,-0.99l1.14,-0.34l0.42,0.22l0.71,-0.12l3.53,-1.13l2.04,0.93l-0.19,0.83l0.61,2.41l0.54,0.66l0.92,0.41l1.65,0.0l0.87,-0.47l1.03,-2.42l0.76,-0.46l1.14,0.04l1.97,0.59l2.71,1.43l2.27,-0.34l1.67,1.74l0.24,3.11l-0.69,3.53l-0.98,2.78l-3.52,4.03l-0.58,1.15l0.83,1.96l1.37,1.55l1.56,0.89l1.68,0.44l1.81,0.16l1.28,-0.39l0.83,-1.57l0.15,-2.33l0.42,-1.68l1.01,-1.14l1.27,-0.48l0.63,0.17l-0.91,0.83l-0.54,1.18l0.27,1.47l1.2,1.46l1.34,0.83l3.89,0.73l2.18,1.21l2.12,1.74l2.67,-0.13l2.17,1.33l3.2,0.56l0.79,0.91l2.3,1.73l2.64,0.88l5.34,0.45l5.09,-0.91l1.49,0.52l0.71,1.83l-1.34,0.07l-2.29,1.26l-0.6,0.86l-0.41,1.83l-1.75,2.36l-0.33,0.92l-0.44,4.84l-0.6,1.38l-1.87,1.29l-0.56,1.12l-1.34,0.64l-2.53,2.21l-4.07,1.36l-0.54,0.69l-0.23,1.9l-0.53,1.52l-0.53,0.3l-1.91,-0.15l-4.19,0.63l-0.52,0.64l-0.24,1.4l-0.86,0.35l-0.15,0.67l1.03,0.63l-2.6,2.24l-0.69,1.59l-1.11,0.58l-1.21,-0.34l-1.0,0.11l-1.47,2.02l-0.46,1.63l0.77,2.45l-1.34,2.3l-1.76,1.74l-1.45,2.44l-0.56,2.54l0.08,0.79l1.17,1.84l-3.45,5.0l-2.16,7.24l0.1,1.58l1.22,2.33l0.33,5.21l1.28,1.46l1.5,2.83l2.24,0.88l0.19,0.55l-0.21,1.36l-2.94,4.66l-1.48,3.59l-2.04,2.81l-4.65,-1.18l-2.0,0.84l-2.24,0.15l-2.05,-1.12l-1.61,-1.91l-1.77,-1.02l-1.45,-0.43l-1.83,0.72l-1.04,-0.09l-1.72,-0.79l-2.39,-2.32l-0.76,-0.27l-3.07,-0.16l-1.04,-0.59l-0.79,0.0l-2.33,-1.98l-0.63,-1.62l0.3,-2.43l3.55,-4.05l1.11,-1.98l0.92,-0.0l1.59,0.6l2.42,-0.65l2.15,0.93l1.36,-0.23l0.56,-0.51l0.25,-0.69l-0.41,-1.71l0.24,-1.19l-0.6,-1.37l-0.13,-2.12l-1.97,-1.39l-1.42,-0.45l-3.11,-1.78l-2.22,-1.88l-1.79,-0.0l-0.45,-2.43l-2.46,-1.8l-4.94,-6.0l-3.91,-0.14l-1.34,-0.48l-0.64,-0.97l0.72,-1.08l-0.05,-0.54l-1.4,-1.27l-2.17,-0.33l-5.59,0.2l-0.86,-0.28l-2.12,-2.26l-2.7,-1.64l-4.38,0.57l-3.73,-1.18l0.74,-5.69l-0.51,-2.59l-0.52,-0.62l-1.13,-0.27l-1.95,2.01l-1.87,-0.82l-0.58,-0.62l0.02,-0.91l4.76,-4.17l1.43,-0.07l1.56,1.79l1.43,0.07l1.51,-0.5l2.45,-1.89l-0.15,-1.71l-1.07,-0.54l-0.52,-3.78l0.41,-0.58l1.67,-0.58l0.62,-0.86l0.33,-3.59l0.7,-1.96l1.42,-2.39l0.2,-1.89l-0.88,-3.62l1.33,-3.0l1.01,-1.14l0.64,-0.13l1.86,0.66l3.47,-0.52l1.99,-2.41l2.27,-0.66l0.75,-0.54l0.52,-0.72l0.2,-0.89l-0.06,-2.1l1.62,-3.37l5.0,-3.45l0.85,-0.93l0.94,-1.88l0.13,-1.23l-0.54,-3.42l0.52,-2.47ZM542.15,123.5l-0.25,0.17l-1.98,-0.35l-1.38,-0.68l0.34,-1.44l0.87,-1.19l0.42,-0.01l0.18,1.36l1.8,1.71l0.0,0.42ZM535.17,126.28l-0.52,0.04l-0.25,-0.47l0.13,-0.86l1.61,-1.14l0.02,0.73l-0.43,1.11l-0.55,0.57Z\", \"name\": \"Comunidad Foral de Navarra\"}, \"ES-AR\": {\"path\": \"M499.91,312.07l0.28,-2.34l-0.43,-1.46l-3.9,-4.95l-1.58,-0.74l1.41,-1.27l2.66,-3.95l1.8,-1.09l1.01,-1.25l0.12,-4.37l1.28,-3.53l0.23,-0.18l2.08,0.39l2.03,1.14l0.81,0.12l0.75,-0.12l1.15,-0.68l1.34,-1.59l-0.15,-2.8l1.11,-3.29l-0.15,-2.81l-1.13,-2.67l0.1,-1.48l1.11,-2.97l-0.4,-3.64l-0.76,-0.88l-1.68,-1.14l-1.32,-1.66l-0.81,-2.28l0.22,-3.71l-0.77,-1.66l-3.89,-3.98l-3.51,-3.06l-2.3,-3.43l-3.27,-2.8l-2.25,-1.27l-2.66,-2.09l-1.7,-0.72l-1.98,-1.91l-2.01,-0.48l-5.1,1.63l-1.99,-1.78l-1.24,-0.46l-1.86,-0.2l-0.78,-0.49l-0.88,-7.08l-0.92,-2.24l0.09,-2.78l0.35,-1.49l0.65,-0.78l1.03,-0.61l0.83,-1.27l0.6,-4.24l0.46,-1.04l0.53,-0.3l1.82,0.26l1.38,0.63l0.3,0.93l-0.07,2.14l0.37,0.7l0.66,0.36l1.26,-0.27l2.26,-1.48l1.3,-0.34l1.03,-0.66l-0.33,-4.13l-1.48,-2.93l-0.21,-1.36l0.18,-3.13l-0.4,-2.48l-0.55,-0.97l0.09,-0.95l1.26,-0.96l1.96,0.64l0.81,-0.16l2.1,-2.4l1.27,-0.68l1.34,-1.37l2.47,-0.76l0.75,-0.99l1.26,-3.11l0.11,-1.59l-1.46,-1.53l-0.69,-1.79l-1.72,-2.75l1.55,-3.11l0.41,-1.62l-0.08,-0.88l-1.34,-1.94l-0.94,-2.74l-0.39,-4.19l0.85,-2.57l-0.37,-1.23l1.39,0.62l3.5,0.32l2.27,2.25l2.0,0.93l1.4,0.11l1.78,-0.71l1.03,0.36l1.55,0.87l1.66,1.95l2.3,1.25l2.7,-0.14l1.77,-0.81l4.54,1.19l0.76,-0.29l2.1,-2.94l1.49,-3.61l3.02,-4.86l0.23,-1.52l-0.28,-0.95l-0.62,-0.58l-1.75,-0.48l-1.43,-2.74l-1.22,-1.37l-0.25,-4.98l-1.25,-2.47l-0.05,-1.21l2.1,-7.0l3.22,-4.34l0.3,-0.86l-0.22,-0.91l-0.97,-1.21l0.45,-2.92l1.35,-2.24l1.75,-1.73l1.46,-2.53l-0.06,-0.96l-0.68,-1.79l0.38,-1.23l1.15,-1.66l1.87,0.34l1.68,-0.87l0.7,-1.61l2.7,-2.37l0.16,-0.45l-0.21,-0.47l-0.55,-0.27l0.62,-0.5l0.08,-0.95l0.41,-0.77l3.72,-0.48l1.98,0.14l0.93,-0.46l0.46,-0.76l0.41,-2.51l0.46,-0.86l3.97,-1.29l2.61,-2.27l1.3,-0.6l0.68,-1.23l1.86,-1.28l0.81,-1.78l0.39,-2.67l-0.09,-1.45l0.37,-1.38l1.79,-2.43l0.77,-2.4l2.12,-1.16l1.35,-0.03l-0.16,1.96l1.13,1.6l2.09,0.19l3.28,2.29l2.49,3.35l-0.08,0.91l0.23,0.38l1.72,0.28l0.21,0.3l-0.08,1.02l0.82,0.76l0.8,-0.02l1.75,-0.98l0.27,-0.36l0.09,-1.75l1.21,0.03l3.48,1.64l2.21,-0.12l1.81,-1.05l2.89,-2.29l0.75,0.42l0.52,-0.2l0.82,-1.26l4.54,2.97l1.05,1.8l1.93,0.2l2.52,-0.78l-0.07,1.03l0.43,1.66l0.8,1.33l1.45,1.35l0.27,1.17l1.72,0.79l1.2,1.27l2.6,1.04l2.57,-0.21l5.05,-1.87l4.01,-0.6l1.33,-0.85l0.9,-0.14l4.3,1.34l1.4,2.46l1.39,1.37l1.25,-0.31l1.83,-2.6l1.09,-1.09l0.89,-0.32l1.58,1.36l0.1,0.83l0.44,0.55l1.52,0.36l1.46,-0.08l2.38,-0.63l1.14,0.45l8.19,-0.24l2.31,0.31l1.05,-0.34l0.4,-0.5l1.62,2.62l0.9,2.5l0.57,0.85l0.76,0.62l1.96,0.54l0.69,0.54l-0.59,3.41l-1.93,4.04l-0.02,1.6l-1.57,0.61l-0.34,0.97l0.91,3.91l1.19,1.5l0.86,3.13l0.32,5.44l-0.44,1.92l-0.08,3.22l-0.65,2.16l-0.92,1.67l-0.94,4.37l-0.14,0.96l0.35,1.47l-0.36,2.74l-0.54,1.59l-0.7,0.72l-1.03,3.95l-0.89,1.94l-0.22,2.23l-0.48,0.68l-1.27,0.77l-1.05,1.69l-0.92,0.33l-1.16,0.89l-0.75,1.21l0.15,1.01l1.62,1.55l0.26,3.26l-0.2,0.46l-0.78,0.97l-1.45,0.9l-1.1,1.68l-2.74,1.29l-2.37,3.95l-3.9,1.33l-0.83,1.44l-0.89,0.88l-0.89,1.48l-1.59,1.49l-1.0,1.63l0.06,1.44l0.92,2.23l0.6,2.76l0.49,0.63l0.7,0.33l3.64,0.4l1.0,3.8l-2.71,4.25l-2.27,0.8l-0.92,0.86l-0.19,3.98l-0.65,2.3l-0.96,1.6l0.2,1.76l1.77,0.95l0.79,0.79l0.53,1.08l0.19,1.36l-1.63,3.79l0.5,3.94l-2.38,1.43l-0.6,0.69l-0.96,3.76l-0.36,0.48l-2.29,1.04l-0.96,1.17l-1.89,0.56l-0.67,1.49l-0.08,1.5l1.49,4.71l1.15,1.05l1.95,1.19l0.96,2.98l-0.25,1.86l-1.64,3.22l-0.74,3.02l0.57,3.07l0.9,2.24l-0.03,0.52l-2.39,3.7l-4.0,2.58l-0.45,0.76l0.24,0.71l-1.43,0.56l-2.49,0.09l-1.74,0.46l-2.38,1.73l-0.57,-0.15l-0.29,-1.66l-0.7,-0.77l-1.23,-0.32l-3.24,0.21l-1.6,-0.3l-2.91,-1.89l-2.19,-1.92l-1.09,-0.48l-1.33,0.07l-0.88,0.42l-1.93,2.74l-0.64,4.28l-4.46,2.65l-1.46,-0.72l-1.24,-0.2l-1.61,0.6l-0.68,0.72l-0.11,3.36l0.37,0.89l2.84,1.18l2.27,-0.24l-0.27,2.37l0.37,3.62l-0.32,1.87l0.27,0.78l0.91,0.57l0.5,1.73l-3.26,1.49l-1.2,1.58l0.37,1.49l1.88,1.75l1.13,1.53l0.14,1.2l-2.89,2.13l-1.7,2.43l-2.16,1.85l-0.27,0.79l0.09,2.12l-0.79,0.92l-2.31,1.11l-3.41,0.61l-2.54,-0.86l-0.65,0.03l-0.66,0.57l-0.25,3.24l-0.24,1.18l-0.74,1.37l-0.18,1.41l-0.78,1.45l-1.98,1.8l-0.39,0.8l-0.12,0.83l0.38,2.02l-4.36,2.24l-4.61,0.4l-0.48,0.63l-0.56,2.17l-0.52,0.61l-3.16,1.64l-0.62,0.76l-0.56,2.65l0.44,2.37l0.69,1.33l0.98,0.77l0.91,1.24l-3.29,1.71l-1.85,0.24l-1.28,-0.88l-0.12,-2.42l-0.51,-1.04l0.46,-2.48l-0.33,-0.83l-1.08,-1.23l-3.26,-1.55l-1.94,-0.48l-3.65,0.03l-4.86,1.23l-0.79,-0.53l-0.96,-2.84l1.22,-0.33l3.7,-2.03l0.69,-1.29l-0.29,-1.44l-3.15,-2.94l-1.71,-1.08l-4.32,-0.55l-1.17,-0.55l-0.54,-0.78l-0.19,-1.08l-1.61,-1.47l-1.73,-3.51l-0.78,-0.07l-0.88,0.69l-0.49,0.8l-0.19,0.99l0.24,1.26l-0.28,0.92l-2.37,0.75l-1.98,-0.04l-2.99,-0.72l0.58,-2.25l-0.14,-1.22l-0.42,-0.56l-1.99,0.18l-2.6,-0.7l-0.89,0.05l-0.72,0.41l-0.32,-0.14l-7.82,-7.36l-1.8,-0.94l-0.97,-0.12l-0.94,0.45ZM537.73,122.8l0.99,1.0l2.43,0.6l1.07,0.01l0.72,-0.7l-0.13,-1.11l-1.68,-1.49l-0.06,-0.93l-0.54,-0.94l-1.05,0.0l-0.99,0.93l-0.68,1.61l-0.08,1.0ZM536.95,123.71l-0.5,-0.66l-0.52,-0.03l-2.07,1.53l-0.27,1.32l0.48,1.06l1.31,0.14l0.97,-0.86l0.57,-1.39l0.03,-1.11Z\", \"name\": \"Arag\\u00f3n\"}, \"ES-CB\": {\"path\": \"M315.65,35.72l1.39,1.36l0.56,-0.0l1.29,-1.28l1.65,-0.31l1.64,0.46l1.2,1.14l0.69,0.11l1.39,-1.45l3.04,0.34l8.2,-0.88l1.97,-1.47l4.07,-1.28l4.64,-0.29l0.88,-1.21l1.83,1.2l0.55,-0.08l1.43,-0.8l-0.9,-1.1l2.08,-1.52l0.97,-0.42l1.26,0.22l0.6,-0.37l0.75,0.37l1.86,-1.16l1.83,-0.39l1.8,0.36l1.18,0.79l-2.27,1.04l-1.21,0.8l-0.95,1.06l-0.01,0.52l0.84,0.97l-0.08,0.66l0.38,0.38l0.83,0.03l1.77,-0.71l1.42,-1.8l0.96,1.01l1.06,0.07l0.36,-0.68l-0.15,-0.82l-0.74,-1.31l1.07,0.42l0.61,-0.24l0.43,-0.89l-0.2,-0.28l2.26,-0.29l2.07,-1.46l4.95,-1.56l1.17,0.08l-0.1,1.17l0.37,0.43l1.01,0.06l2.17,1.75l4.75,1.01l0.16,1.28l-0.75,0.03l-1.51,-0.77l-0.45,0.18l-0.5,0.97l-1.44,1.01l-0.19,0.41l0.32,0.32l1.15,0.22l1.39,1.39l0.56,-0.14l0.61,-1.09l0.64,0.7l0.92,0.08l2.03,-0.57l4.02,1.28l4.01,0.56l3.81,1.29l2.05,2.02l1.61,0.57l0.08,4.53l-0.58,1.26l-2.65,1.3l-2.07,-0.6l-1.67,0.21l-4.26,-0.26l-7.17,5.16l-0.79,1.0l-0.29,0.96l0.3,1.44l-0.04,1.96l1.09,3.91l-1.41,0.12l-4.3,-0.42l-1.81,-0.84l-3.78,-0.79l-2.15,-1.37l-0.93,0.05l-1.2,0.75l-3.87,4.62l-2.92,2.17l-1.01,0.33l-2.54,-0.11l-1.22,0.6l-0.4,2.58l-0.7,0.76l-2.67,1.28l-1.41,1.55l-2.43,1.62l-2.11,5.42l-0.1,1.45l0.35,0.89l1.05,1.09l1.53,0.35l1.43,-0.46l1.78,-1.1l1.34,-2.07l0.82,-0.27l0.78,0.48l0.73,1.07l-0.14,0.8l-1.82,1.17l-1.78,0.12l-0.36,0.28l-0.72,1.61l0.28,1.86l0.4,0.85l0.47,0.36l0.8,0.1l0.89,-0.56l0.92,-1.4l0.61,-0.32l0.83,0.26l0.16,2.07l0.8,2.12l-0.0,1.0l-0.72,0.66l-3.41,0.25l-2.42,2.19l-2.9,0.91l-1.89,-0.54l0.03,-3.87l-0.31,-0.9l-0.49,-0.13l-1.26,0.85l-1.78,3.98l-2.07,0.51l-0.92,-1.4l-0.66,-0.51l-3.21,-0.71l-1.61,-1.51l0.01,-0.57l0.33,-0.2l1.79,-0.43l1.1,-0.81l0.28,-0.93l-0.11,-0.66l-0.54,-0.68l-1.0,-0.41l-1.61,0.47l-1.74,1.3l-0.88,-0.49l-0.98,-5.73l-0.06,-2.57l-0.31,-0.84l-1.03,-0.72l-6.7,-2.49l-0.81,-0.59l-1.96,-3.58l-0.74,-0.6l-2.47,-1.16l-1.23,-0.03l-1.93,1.03l-1.95,0.22l-2.14,1.2l-3.19,-0.14l-2.46,0.51l-3.29,0.02l-2.14,0.34l-0.74,-2.67l-1.34,-1.36l-0.78,-1.45l-2.81,-1.58l-0.95,-1.04l-0.5,-2.29l0.25,-4.38l3.64,-0.61l1.88,0.24l0.77,-0.52l0.75,-1.99l0.28,-2.11l-0.16,-1.17l0.39,-0.86l1.29,-0.56l3.4,-0.07l1.02,-0.62l0.76,-1.03l1.39,-0.65l1.73,0.32l1.14,1.61l0.87,-0.05l0.71,-0.56l0.48,-0.69l0.33,-1.81l-0.23,-1.34l-0.98,-2.42l1.53,-3.12l0.06,-2.82Z\", \"name\": \"Cantabria\"}}, \"height\": 671.3455904856035, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-fr-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'fr_merc_en',{\"insets\": [{\"width\": 100, \"top\": 500, \"height\": 124.10158361709644, \"bbox\": [{\"y\": -645244.9842573161, \"x\": -6082899.139819591}, {\"y\": -235151.50568115257, \"x\": -5752449.304593098}], \"left\": 10}, {\"width\": 900.0, \"top\": 0, \"height\": 864.1025840443817, \"bbox\": [{\"y\": -6640157.227291796, \"x\": -571651.210329419}, {\"y\": -5069047.490921886, \"x\": 1064727.1420124765}], \"left\": 0}], \"paths\": {\"FR-C\": {\"path\": \"M499.58,401.44l0.25,1.77l1.24,1.75l3.23,2.13l2.72,0.22l3.5,3.34l1.07,0.0l2.4,-1.21l1.64,-0.11l4.6,1.58l0.78,-0.23l2.13,-2.13l1.59,0.78l1.06,2.21l0.03,1.71l1.1,0.76l1.74,-0.38l4.06,-2.49l0.57,-2.27l1.34,-0.99l0.39,-2.1l1.18,0.22l2.0,4.68l2.46,2.54l1.56,3.05l0.94,0.63l0.18,6.02l4.03,2.38l1.73,0.09l2.67,2.57l3.68,0.82l2.2,1.32l0.74,3.33l-0.64,3.53l0.53,1.51l-0.03,1.67l0.81,2.03l-1.2,1.16l-5.54,3.14l-4.06,1.31l-3.53,3.27l0.09,0.88l1.08,1.38l0.45,3.68l-0.15,4.64l1.66,8.88l-1.07,1.68l-4.81,1.2l-2.37,1.3l-0.48,0.98l0.44,1.63l2.11,1.81l0.83,1.67l-1.18,3.31l-0.01,2.51l-0.9,2.09l0.06,1.2l1.84,3.37l1.55,1.65l3.19,7.38l7.55,6.93l2.44,6.22l0.07,1.18l-0.89,2.45l-2.77,3.33l-0.8,1.67l-0.64,3.34l0.41,1.04l1.22,0.53l1.59,-1.37l1.89,-0.68l2.11,2.09l2.83,-0.07l5.94,-1.17l0.73,-0.61l0.63,-1.74l2.06,-0.01l4.17,1.28l0.8,-0.22l1.63,-1.53l1.02,0.83l1.47,3.09l-0.74,3.15l0.99,2.69l0.56,0.57l2.83,0.37l1.34,0.79l2.81,2.77l-0.24,1.92l-1.71,3.77l-0.73,3.28l-2.57,-1.7l-1.37,0.6l-0.05,0.85l0.88,1.81l-1.88,2.07l-0.3,1.0l1.22,2.35l-3.98,1.43l-0.86,1.88l0.55,2.13l-2.44,1.07l-1.75,-0.27l-0.72,0.49l-1.46,3.96l-2.26,3.21l-5.0,0.96l-2.54,-0.04l-0.62,0.54l-0.58,2.03l-3.93,1.47l-3.33,5.22l-1.09,0.51l-4.45,-2.09l-4.14,-3.9l-4.32,-0.98l0.42,-2.32l-1.41,-1.34l-2.82,0.03l-0.88,0.92l-0.64,2.71l-3.65,0.62l-1.33,0.68l-1.66,-1.54l-3.46,-6.67l-1.02,-3.4l-0.6,-0.44l-1.66,0.08l-4.45,2.53l-2.54,0.37l-4.65,4.34l-0.56,0.11l-1.8,-2.16l-1.57,0.75l-1.11,4.47l-1.64,1.18l-0.58,1.12l-1.76,8.34l-1.84,3.19l-0.71,2.29l-1.58,-1.37l-1.17,-2.07l-1.11,-5.55l1.16,-0.91l0.0,-1.05l-2.99,-1.76l-0.69,-2.24l-2.43,-3.72l-0.8,-0.25l-2.42,0.4l-0.3,-3.06l-1.91,-2.76l-1.04,-0.48l-8.47,8.8l-0.73,2.95l-2.44,4.06l-0.58,2.75l-3.69,4.57l-2.8,0.74l-3.46,-0.11l-1.42,0.7l-1.19,-1.3l-1.51,-0.13l-5.34,1.88l-0.85,2.02l-0.96,-1.16l-0.88,-3.87l-1.72,-1.2l1.56,-6.33l-0.1,-0.93l-4.39,-8.36l-0.86,-6.56l-0.63,-1.37l3.22,-0.76l1.1,-0.82l0.07,-1.34l-1.54,-3.71l3.21,-2.97l2.85,-6.39l0.21,-1.23l-1.07,-2.65l0.12,-1.65l2.6,-2.27l0.51,-2.15l3.08,-1.53l2.04,-3.33l1.09,-0.79l1.4,-3.47l-0.13,-1.18l-0.98,-1.21l1.96,-0.43l3.02,1.81l1.86,0.31l1.58,-0.96l1.85,-7.22l-1.19,-1.25l-0.26,-4.75l-1.82,-3.28l0.88,-3.16l1.65,-0.78l0.82,-1.16l0.29,-4.87l-0.65,-1.6l-1.92,-2.43l-0.96,-0.99l-1.8,-0.75l-0.67,-2.28l-1.74,-2.82l0.67,-1.12l3.13,-2.64l2.41,-0.19l2.48,-2.97l1.63,-3.83l1.7,-2.22l0.2,-3.6l-0.22,-1.65l-1.87,-3.78l0.17,-5.83l-2.17,-4.39l-1.06,-3.64l-3.18,-4.84l-1.31,-0.42l-1.1,0.77l-0.76,-2.04l-0.95,-1.04l-3.49,-1.1l-1.35,-3.75l-3.7,-4.59l2.14,-4.03l1.46,-0.74l1.48,-2.09l3.51,-1.81l7.94,-0.92l5.53,-1.85l-0.01,-2.05l-1.84,-2.79l0.49,-2.39l-1.03,-1.91l0.31,-0.49l2.28,-0.19l0.4,-0.83l-0.08,-1.49l1.64,-0.14l4.05,-3.81l0.8,0.92l2.07,0.87l0.74,-0.09l1.49,-1.42l2.22,0.29l1.77,-2.51l3.83,-2.53l2.57,-0.84l2.86,0.21Z\", \"name\": \"Auvergne\"}, \"FR-B\": {\"path\": \"M238.0,586.42l3.33,-38.18l2.55,-13.79l1.1,-18.35l3.22,-6.65l1.05,-0.09l-0.28,3.12l1.42,2.29l4.23,3.31l3.5,1.76l7.32,8.19l1.66,2.48l3.07,16.64l2.12,5.13l2.12,2.78l4.8,4.01l0.53,1.67l0.17,5.04l0.53,1.48l0.95,0.82l0.64,-0.39l-0.81,-4.67l0.53,-2.45l-0.78,-2.02l-1.56,-1.54l1.81,0.35l2.67,1.79l0.51,0.0l0.09,-0.5l-1.71,-2.89l-5.09,-2.08l-2.05,-1.6l-1.06,-2.14l-0.76,-2.69l-2.26,-16.16l4.59,0.2l1.0,-0.73l0.76,-1.46l0.52,-0.13l1.62,4.07l2.14,0.81l2.33,0.12l3.23,2.52l0.42,1.1l0.01,3.71l1.84,3.29l1.14,0.39l2.3,-0.35l3.65,1.97l2.4,2.26l4.09,1.44l1.97,-0.27l3.32,-1.25l1.92,0.6l1.84,-0.89l1.73,-2.26l0.39,-1.15l-0.71,-1.74l0.61,-1.01l4.84,-2.55l2.4,0.72l1.37,-0.36l1.22,-1.26l0.8,-2.1l2.77,-1.37l1.9,-1.9l0.53,-1.98l-0.02,-4.59l1.44,-4.75l6.52,-4.93l1.97,-0.27l0.88,-0.62l4.4,-7.02l0.72,-5.71l2.82,-1.07l2.26,-3.5l1.86,-1.75l1.08,0.82l4.7,0.53l2.21,3.05l-0.65,3.73l1.7,1.22l2.04,0.56l1.21,-0.12l0.99,-0.55l1.06,-1.4l1.25,0.92l3.25,-0.56l4.28,0.28l3.95,5.6l3.93,1.0l0.61,0.5l-0.18,0.89l-1.67,1.65l0.27,1.57l4.23,2.32l1.94,-0.28l1.78,1.4l1.57,0.26l-0.04,0.95l-1.01,1.92l0.11,1.32l0.83,0.81l2.37,-0.06l-0.42,1.42l-1.53,1.0l-2.42,2.69l-0.63,3.6l2.35,2.36l-2.08,2.28l-0.55,1.74l0.45,0.78l2.6,0.47l0.08,1.06l-0.74,1.8l0.85,1.46l2.82,1.34l3.9,0.13l-0.49,2.77l0.25,0.95l1.6,3.28l2.0,2.5l-1.48,1.1l-0.46,1.65l1.32,4.54l-0.75,2.26l0.17,1.9l-2.73,3.05l-1.66,3.0l-2.23,0.74l-0.86,1.25l-0.28,1.0l0.69,2.34l-1.26,2.06l-4.31,3.04l-2.4,0.64l-0.97,0.93l-3.33,5.91l-3.49,3.25l-2.93,1.47l-0.85,0.92l-0.26,0.82l1.31,2.37l0.06,2.13l0.83,2.42l2.03,2.57l-0.18,3.49l-0.6,0.68l-4.79,0.41l-2.89,-1.35l-1.51,0.72l-0.26,2.8l-0.81,2.69l0.84,1.54l2.45,1.1l0.38,0.63l-2.46,5.88l-2.15,1.91l0.08,0.75l1.15,0.92l-0.04,1.22l-1.23,0.24l-2.23,-0.79l-1.42,0.36l-0.95,2.07l-2.26,1.51l-1.04,3.23l-3.58,2.13l-1.03,0.2l-2.7,-2.43l-1.53,-0.54l-5.15,1.74l-2.71,-0.29l-9.84,5.04l-4.81,-1.84l-0.82,0.1l-3.43,4.1l-0.55,0.02l-0.58,-0.84l-0.77,-0.24l-2.4,0.91l-0.89,1.71l0.25,2.7l-0.73,0.9l-3.55,-0.48l-0.39,-0.91l0.79,-1.42l-0.06,-1.16l-0.89,-0.97l-1.25,-0.4l-2.93,1.7l-1.8,1.95l-4.15,-0.19l-3.47,2.87l-0.12,1.08l1.31,1.55l1.07,2.52l-1.49,4.43l-0.05,2.72l0.82,1.54l-1.5,3.57l-1.99,0.72l0.43,2.32l-1.08,1.83l-0.24,1.37l0.97,0.82l0.99,2.44l2.34,-0.0l5.58,1.17l1.06,0.75l0.67,1.66l1.56,1.31l2.18,5.6l-1.48,0.25l-0.54,0.52l0.04,2.55l0.5,0.74l0.77,0.19l1.45,-1.47l0.73,0.04l-0.11,3.6l1.07,3.69l-2.12,1.17l-0.95,1.18l-0.6,2.95l0.6,2.36l-2.38,3.0l-1.11,3.67l-1.55,0.14l-1.73,3.36l-2.28,1.46l-0.97,1.38l0.14,4.33l-3.39,0.69l-2.69,3.11l0.2,4.62l-1.68,2.61l-0.33,1.36l0.56,4.28l-0.92,-0.12l-0.76,1.34l-0.88,-0.39l-4.3,3.15l-1.67,0.13l-3.21,-1.51l-1.72,-0.08l-0.41,0.38l-0.09,1.71l-1.57,0.84l-0.61,-1.75l-1.58,-0.29l-0.05,-1.02l-2.44,-3.28l-3.23,-2.26l-1.85,-0.13l-0.47,-0.46l0.0,-2.09l-1.39,-3.21l-1.84,-0.59l-4.67,0.85l-4.78,-0.4l-2.24,-0.73l-2.96,-2.51l-3.08,-0.56l-2.03,-1.23l-2.32,0.17l-4.04,-2.74l-3.6,-0.67l-1.04,-0.63l-1.15,-1.98l1.62,-1.94l-0.16,-0.69l-1.63,-0.36l-1.53,0.63l-1.06,1.2l-1.08,4.95l-0.8,0.27l-2.98,-0.51l-2.28,-1.89l-0.66,-1.55l3.72,-4.4l1.61,-6.06l-0.34,-3.43l-2.04,-1.95l-2.03,0.34l-2.5,-1.31l-3.23,-0.63l-1.31,0.83l-0.76,2.02l-1.67,0.28l-0.81,-0.53l-0.5,-3.23l-2.51,-1.13l-3.76,1.12l-0.43,-2.11l-0.91,-1.16l-1.53,-0.75l0.28,-4.19l0.99,0.23l1.37,-0.95l5.45,-0.89l4.04,-2.16l2.26,-4.43l3.76,-3.21l1.47,-4.18l1.91,-7.53l2.51,-13.87l1.46,-4.88l2.15,-11.02l3.96,-24.18l2.1,-17.38l-0.62,-4.32l1.6,-2.34l1.49,-5.51l1.04,-1.3l5.0,0.86l2.31,-0.32l1.41,-0.96l0.18,-1.63l-1.04,-1.26l0.32,-0.51l-0.69,-1.35l-4.62,-4.37l-1.82,-1.02l-0.93,0.42l-3.55,5.96l-0.51,2.64Z\", \"name\": \"Aquitaine\"}, \"FR-A\": {\"path\": \"M752.41,337.93l0.41,-3.1l-1.06,-2.38l-3.49,-3.89l-2.66,-0.5l-0.58,-0.64l0.01,-0.98l1.51,-2.37l0.59,-1.95l-0.54,-4.78l-1.75,-1.94l-8.58,-5.01l-0.64,-0.84l-0.05,-1.09l2.16,-1.02l1.13,-1.27l0.15,-1.2l-0.62,-1.98l1.61,-3.69l0.61,-3.59l3.46,-4.84l3.12,-6.81l1.35,-1.87l0.38,-2.06l-0.77,-1.94l0.5,-1.47l7.74,-12.95l-0.04,-1.31l-1.32,-1.53l-3.47,-0.3l-1.41,-0.91l0.68,-3.6l0.59,-8.92l1.12,-1.22l0.03,-0.65l-3.26,-1.94l5.91,-0.5l0.69,-0.48l0.66,-1.39l3.07,-2.19l2.35,-7.53l-0.51,-0.93l-1.5,-0.92l-0.16,-0.84l2.92,-5.09l0.31,-1.66l-0.55,-1.51l-3.83,-4.49l-1.84,-0.98l-0.15,-1.56l-0.76,-0.88l-0.78,0.1l-0.54,0.66l-0.45,2.07l-2.17,1.03l-1.14,1.86l-1.0,0.08l-0.86,-2.13l-0.78,-0.73l0.28,-1.06l0.96,-1.12l-0.06,-1.08l-5.94,-2.93l-1.18,-1.81l0.16,-1.54l1.14,-1.86l2.61,-2.45l0.3,-2.22l2.14,-3.21l-0.23,-2.0l0.3,-0.56l1.49,0.59l0.82,3.29l0.93,1.19l8.51,3.03l1.51,2.51l2.23,0.73l9.04,-1.44l3.25,1.92l1.42,-0.14l1.81,-2.19l3.27,-6.8l1.56,-0.51l3.31,0.51l2.76,-1.13l5.0,1.45l4.58,-0.24l9.65,5.16l6.36,1.59l-3.0,4.9l-3.49,8.88l-3.19,1.62l-1.17,2.54l-3.06,0.63l-0.65,3.29l-3.81,4.07l-2.71,1.72l-2.59,4.05l-0.57,3.17l-0.02,3.29l0.72,2.4l-2.24,2.03l-2.35,8.53l0.76,5.96l-0.74,1.18l-2.22,1.64l-0.92,5.31l-4.52,6.79l-0.54,2.48l-1.58,3.48l-0.4,1.93l0.19,3.79l2.65,4.77l0.12,2.65l-2.19,2.82l-0.36,3.09l-1.23,2.21l0.2,3.79l-1.18,1.03l-1.06,4.28l0.74,4.61l-1.6,2.38l0.42,3.1l1.23,1.01l3.17,5.04l-0.23,1.72l-3.51,1.55l-2.72,2.24l0.1,0.68l1.13,0.81l0.01,0.47l-1.73,0.72l0.49,1.92l-0.81,0.75l-2.27,-0.92l-0.97,0.21l-0.28,0.94l0.84,1.36l-0.08,1.02l-1.1,1.44l-1.52,0.61l-4.27,-0.17l-4.23,1.41l-0.93,-0.95l-3.04,-1.31l-0.28,-1.18l1.06,-2.45l-0.41,-0.56l-1.81,0.13Z\", \"name\": \"Alsace\"}, \"FR-G\": {\"path\": \"M522.82,222.06l0.15,-1.33l1.67,-2.09l-1.1,-1.74l3.36,-0.44l0.75,-1.17l0.19,-2.04l1.49,-3.08l4.29,-4.5l1.06,-2.43l1.69,-1.31l3.25,-4.02l-0.01,-1.24l-0.99,-0.91l-3.42,0.05l-0.83,-0.59l0.06,-1.42l1.32,-1.02l1.15,-1.94l-0.04,-4.45l1.17,-0.88l3.1,0.4l1.48,-0.3l1.33,-1.19l0.34,-0.98l-0.35,-1.23l-2.25,-2.13l-1.78,-0.7l-0.57,-5.79l-0.92,-2.58l2.98,-1.83l5.1,-1.46l4.31,-0.68l0.5,-0.84l-0.12,-1.65l0.86,-0.66l2.01,0.11l3.05,1.66l2.08,-0.8l2.34,1.0l1.13,-0.9l0.55,-3.93l-0.52,-1.51l-0.71,-0.52l0.41,-0.81l1.55,-0.57l0.3,-0.5l-1.83,-4.4l1.78,-2.38l-0.34,-2.7l0.46,-1.78l-1.61,-5.37l0.78,-0.85l1.85,-0.11l1.55,-0.99l1.47,-2.41l4.92,-4.4l0.93,-1.73l0.02,-1.51l-1.53,-2.55l0.45,-3.23l1.84,-3.83l0.18,-1.64l-2.03,-4.53l-0.04,-3.19l3.3,-0.48l9.74,2.65l1.93,-0.36l8.49,-4.22l2.64,-0.46l0.81,-0.59l1.02,-2.68l0.48,-3.19l-0.43,-1.68l0.44,-1.44l6.44,-6.53l1.12,-0.52l0.18,0.92l0.93,0.59l1.91,-0.33l0.33,0.43l-0.47,4.25l-1.07,0.15l-1.15,2.54l-0.06,2.75l-2.62,7.42l0.87,1.61l2.96,1.3l0.84,1.55l-0.04,1.83l-1.51,3.7l0.88,2.18l0.07,3.75l0.81,0.87l1.72,0.23l5.16,-1.22l3.29,2.82l3.4,1.33l3.26,4.42l2.06,1.75l1.77,0.48l3.82,-0.79l2.26,2.52l0.34,1.14l-0.72,0.69l-0.19,1.34l0.53,1.54l1.89,0.19l0.84,-1.2l2.91,1.37l-0.06,1.09l-6.22,4.55l-1.47,-1.68l-3.83,-0.0l-3.29,-2.25l-1.19,0.24l-1.68,2.0l-0.4,4.05l-1.46,2.2l0.73,2.75l1.03,0.93l0.75,2.9l-0.11,1.57l-1.09,3.0l-3.38,5.28l0.74,4.07l-4.23,4.01l-0.04,2.63l-1.5,3.52l1.8,6.65l0.44,6.21l0.61,0.83l1.6,0.8l0.37,1.09l-0.85,1.36l-0.07,3.38l-0.58,1.74l-1.01,0.8l-2.7,0.84l-1.21,1.87l-0.5,2.98l0.65,2.62l-1.5,3.07l0.04,0.91l0.68,1.1l3.97,3.45l1.3,8.68l1.99,3.6l2.25,1.95l2.79,1.53l4.32,3.65l5.09,2.91l4.4,0.81l0.81,1.82l5.85,5.54l-1.92,3.46l0.6,4.08l0.44,0.7l1.03,0.23l1.85,-1.94l1.59,0.1l1.4,1.4l3.12,4.65l2.71,0.1l1.04,0.61l0.59,3.05l2.43,1.84l1.41,1.66l-1.32,1.83l-0.55,3.0l-1.17,2.31l-0.63,2.86l4.61,4.55l3.34,2.15l0.53,1.12l-0.12,3.17l0.58,1.57l1.06,0.22l0.95,-0.78l0.9,-0.1l2.42,2.97l0.32,1.05l-0.23,0.6l-1.94,0.79l-2.38,3.38l-6.41,4.6l-0.81,1.18l-0.31,1.18l0.58,2.39l-0.54,2.77l0.02,3.56l-0.93,0.94l-6.33,2.11l-4.57,-2.27l-5.09,1.01l-1.05,1.3l-2.46,5.54l-0.35,0.12l-0.67,-1.03l-0.78,-0.26l-2.9,1.81l-0.94,-2.57l-3.73,-2.57l-1.5,-2.77l-1.24,0.11l-1.76,2.21l-1.45,0.16l-2.22,-1.57l-2.43,-3.48l-1.09,-0.04l-1.33,1.51l-0.66,0.01l-0.91,-1.38l-0.6,-4.23l-1.33,-1.89l0.36,-0.79l2.34,-0.44l0.81,-1.06l-0.18,-1.44l-1.17,-2.68l-4.51,-6.32l-1.22,-0.21l-1.08,1.44l-0.48,-0.25l-0.24,-1.21l0.97,-2.74l-1.02,-1.06l-2.66,-1.06l0.43,-1.56l-0.29,-0.78l-0.85,-0.58l-3.67,-0.8l-1.99,-1.43l-2.7,1.15l-2.97,-0.6l-1.78,0.44l-1.45,1.43l-0.21,2.15l-0.83,0.56l-13.16,1.75l-2.4,1.99l-1.57,-0.82l-1.94,-3.09l-0.83,-0.45l-0.53,0.44l-0.26,2.49l-1.39,-1.15l-1.04,-0.16l-2.24,1.93l-3.68,-0.45l-1.85,1.41l-2.22,-0.74l-2.88,0.2l-1.95,-0.41l-0.59,-1.05l0.08,-2.59l-0.51,-1.07l-0.99,-0.23l-1.66,0.41l-1.41,-0.86l1.57,-0.92l0.1,-0.98l-4.65,-8.19l-1.91,-2.22l-0.71,-2.09l-1.87,-1.2l-0.78,0.33l-0.57,1.22l-1.53,0.14l-2.81,-2.27l-2.08,-1.0l1.91,-2.99l-0.39,-3.83l-0.47,-1.07l-5.62,-7.49l-3.0,-1.95l-2.31,-0.03l-0.48,-2.82l-1.28,-1.7l0.56,-2.65l-0.63,-2.12l1.81,-2.22l-0.92,-2.33l2.56,-0.64l0.76,-0.7l2.0,-4.46l2.67,-2.34l0.06,-0.54l-1.98,-2.75l-2.8,0.06l-0.21,-1.56l0.51,-2.24l-0.75,-3.66l-2.01,-2.61l-1.37,-0.05Z\", \"name\": \"Champagne-Ardenne\"}, \"FR-F\": {\"path\": \"M412.4,222.65l-0.38,1.44l-1.34,1.9l0.06,1.9l1.47,1.14l0.54,1.63l1.49,2.01l3.84,2.83l0.72,2.79l2.9,2.67l0.36,4.68l1.37,2.37l1.1,0.93l4.6,2.21l2.45,-0.22l0.24,2.82l2.15,2.83l0.61,3.3l0.6,1.08l1.27,0.89l-1.6,2.47l0.14,1.54l1.31,0.75l8.97,-2.08l2.19,-1.05l1.74,-2.57l1.03,0.49l1.34,2.16l0.9,0.38l1.94,-0.52l1.78,-1.51l2.6,1.55l2.42,-0.28l1.06,1.75l1.05,3.95l3.55,2.44l1.11,1.46l-0.82,2.22l0.47,2.02l-2.35,-0.12l-1.09,1.1l-0.07,1.4l1.16,1.17l2.04,0.31l3.17,-0.76l8.34,0.69l2.32,-1.1l1.66,-1.87l0.81,-0.31l2.0,0.06l-0.39,1.86l1.39,0.61l7.06,-2.3l1.74,0.14l2.26,0.68l1.53,1.2l1.38,5.08l1.04,1.5l2.82,2.56l0.54,2.63l-1.43,3.81l-4.31,4.09l-1.36,0.16l-0.44,0.45l0.1,3.08l0.95,2.44l-0.79,1.64l0.13,1.93l-0.44,1.2l-4.41,2.4l-4.17,0.54l-1.05,0.96l-0.35,2.01l0.54,1.65l2.33,1.05l2.32,2.34l1.14,2.47l-0.54,2.78l2.56,4.28l-3.27,0.35l-3.37,1.99l-0.09,0.99l1.56,1.95l3.01,5.88l-0.52,3.35l-2.88,5.75l-0.08,0.91l0.91,1.88l1.73,1.1l3.62,4.07l0.87,4.27l2.58,8.11l-0.08,4.27l2.22,2.66l0.43,6.29l-1.31,5.46l1.16,3.82l-2.29,4.85l-0.31,1.91l-3.08,-0.2l-2.72,0.89l-4.06,2.67l-1.68,2.41l-2.03,-0.37l-1.56,1.44l-3.61,-1.72l-4.12,3.87l-2.02,0.43l-0.14,2.16l-2.46,0.28l-0.33,1.19l1.01,1.81l-0.6,1.92l2.0,3.46l0.03,1.33l-5.0,1.5l-7.99,0.94l-3.74,1.92l-1.58,2.17l-1.55,0.84l-2.19,4.11l-5.81,-0.33l-3.22,0.68l-2.11,-0.83l-3.44,0.0l-2.43,-0.97l-5.57,-0.17l-1.37,0.34l-1.78,1.22l-0.99,-0.42l-1.84,-2.18l-0.92,-0.16l-1.27,1.03l-0.14,2.59l-0.74,1.18l-3.84,-0.28l-2.59,1.74l-1.17,-0.53l-0.57,-1.75l-2.37,-0.04l-2.32,-0.61l-1.05,0.33l-3.98,4.14l-1.67,1.07l-2.44,-1.68l-0.93,-1.62l-0.85,-0.62l-1.7,0.39l-1.03,1.57l-3.34,0.57l-1.41,-0.09l-2.4,-1.37l0.96,-3.7l-0.72,-1.17l-2.43,-2.02l0.44,-3.04l-0.48,-1.28l-2.14,-1.98l-4.99,-0.43l-0.78,-2.28l-3.4,-1.56l-2.08,-2.1l-0.98,-3.23l0.61,-4.91l-0.92,-2.86l-1.82,-2.47l-2.59,-2.09l-7.17,-10.71l-1.26,-3.84l-1.36,-2.16l-6.26,-3.52l-0.73,0.71l0.89,3.2l-0.41,0.49l-5.41,0.36l-1.22,0.34l-1.77,1.25l-2.65,-0.53l-3.71,0.06l-0.93,-0.96l-0.25,-1.17l0.5,-5.89l-0.34,-1.13l-2.01,-0.45l-1.35,-1.65l-3.42,0.71l-0.27,-3.95l-1.02,-0.43l-1.95,0.48l-0.51,-2.32l-0.76,-0.23l-1.69,0.76l-1.71,-2.82l0.89,-6.75l1.43,-6.15l4.42,-7.19l-0.2,-3.32l0.98,-3.48l1.95,-4.49l-0.45,-4.2l1.53,-4.49l7.58,1.96l1.0,-0.1l0.61,-0.87l-0.49,-2.74l0.72,-0.87l2.91,1.04l2.04,-1.9l2.38,-0.56l3.32,-1.7l2.46,-0.7l0.35,-1.16l-0.65,-1.85l0.61,-1.72l1.3,-1.37l5.17,-2.86l1.55,-1.63l1.63,-5.19l0.07,-4.14l0.47,-1.61l2.92,-2.6l0.65,-1.06l0.2,-1.02l-0.43,-2.06l0.61,-4.14l-0.61,-0.73l-1.3,-0.13l-0.9,-2.56l2.48,-0.54l0.72,-0.55l0.06,-1.03l-1.17,-1.63l4.26,-2.71l0.71,-1.44l-1.2,-1.21l-3.05,-0.44l-2.46,-1.89l1.22,-1.19l0.24,-1.06l-1.87,-4.04l0.04,-3.42l-1.35,-2.01l0.64,-1.67l2.29,-0.47l5.6,-2.71l2.12,-2.29l1.88,-3.97l-0.14,-0.92l-1.76,-2.51l0.09,-4.33l-3.64,-4.38l-2.56,-1.91l-1.62,-3.34l-0.37,-3.89l3.19,-2.91l5.74,-1.65l2.05,-0.09l0.74,-0.42l1.7,-2.38l3.48,-0.41l0.61,-0.59l0.24,-1.84l2.97,1.97l3.5,-0.03l1.94,0.74l4.72,-2.45l1.4,-1.33l1.66,-3.88l3.83,-2.58l1.04,-1.18l0.24,-1.86l-0.39,-2.55l2.2,-1.65l4.54,8.35l0.27,1.94l-0.56,3.32l0.3,1.93l2.17,1.74Z\", \"name\": \"Centre\"}, \"FR-E\": {\"path\": \"M25.58,287.69l1.04,-2.41l0.98,0.55l19.61,-4.42l3.68,1.03l0.91,-0.39l0.49,-0.87l0.61,-2.85l-1.17,-2.23l-0.57,-2.79l-1.02,-0.95l-2.91,-0.8l-1.21,-1.65l-1.35,0.5l-3.1,-1.99l-2.05,0.54l-2.97,5.52l-0.73,0.25l0.61,-1.76l-1.16,-2.68l0.93,-1.65l-0.39,-1.32l-1.1,-0.43l-3.22,-0.13l-0.03,-1.29l2.05,0.17l1.03,-0.57l-0.1,-1.68l1.52,-3.15l0.48,0.22l-0.73,3.09l2.11,1.3l5.35,-0.38l1.35,0.97l1.08,0.22l5.65,-1.06l1.72,0.92l5.01,-1.07l0.32,-1.08l-0.43,-0.4l-1.81,0.13l-0.45,-0.22l-0.21,-0.91l-0.7,-0.16l-1.07,0.79l-1.23,-1.21l-2.15,0.22l2.94,-3.06l-0.3,-0.67l-1.26,0.09l-1.26,0.92l0.0,-0.61l-0.86,-0.4l-0.97,1.21l-0.97,-0.21l-1.86,1.29l-0.47,0.09l-0.42,-0.89l-0.61,-0.05l-2.2,1.04l3.37,-4.1l6.46,-3.99l0.16,-0.51l-0.48,-0.22l-4.21,1.88l-4.19,0.71l-5.77,3.26l-2.93,0.72l-1.85,0.93l-1.06,0.14l-4.34,-1.31l-0.61,0.47l-0.42,1.47l-3.53,-0.26l-0.72,-2.19l1.06,-0.51l-0.1,-1.18l-1.04,-2.54l-0.09,-1.62l0.29,-1.61l0.61,-1.07l1.0,-0.32l0.28,-0.95l-1.51,-1.32l0.55,-2.36l2.34,-4.03l1.49,0.39l-0.21,-0.84l0.61,-0.42l2.84,-0.54l3.06,1.43l1.08,-0.19l0.21,-0.62l-1.71,-2.84l0.4,-0.28l2.74,0.7l1.52,-0.37l-1.52,-0.97l0.12,-0.64l-0.57,-0.65l4.39,-0.01l3.43,-1.22l1.34,-0.04l0.37,-0.3l-0.18,-0.44l-1.03,-0.65l1.54,-0.31l3.22,-1.6l1.34,0.06l0.87,1.05l-0.41,1.86l0.44,0.48l1.59,-0.22l2.32,-1.25l2.95,0.68l0.39,-1.09l-1.07,-0.61l0.16,-0.47l1.92,-1.69l2.43,-0.7l1.25,0.09l1.02,0.6l0.74,-0.43l0.35,0.8l0.76,0.26l1.02,-1.23l-0.06,-1.4l4.47,-1.78l-0.23,1.95l0.63,0.46l-0.33,1.02l1.03,1.22l-0.04,2.24l2.17,-1.74l1.05,-0.29l-0.46,0.48l0.08,0.81l3.35,3.22l0.64,-0.01l0.46,-0.63l-0.29,-0.87l0.32,-0.81l-0.57,-1.79l0.79,0.43l0.23,-0.4l0.01,-3.26l0.25,-0.53l0.94,0.17l0.44,-0.97l1.6,0.67l2.76,-0.14l2.83,1.9l2.57,-0.45l0.27,1.42l1.62,0.5l1.99,-0.06l1.06,-0.94l-0.7,-3.74l3.29,-0.85l-3.02,-3.48l-0.21,-1.24l2.31,-1.52l1.58,-2.96l0.67,0.45l1.84,0.11l2.23,1.26l-0.34,0.77l0.33,0.57l2.26,0.04l1.73,-1.46l5.83,-2.45l1.17,0.01l1.67,-2.09l0.52,0.12l0.28,2.76l-1.23,2.74l0.91,1.6l0.99,-2.24l1.8,-2.24l1.88,-1.78l0.83,0.05l1.54,-1.44l0.86,1.01l-0.39,2.36l0.71,0.78l-1.1,2.93l-1.66,2.4l-0.08,0.93l0.4,0.4l0.82,-0.23l3.04,-5.67l0.73,0.17l1.34,-0.66l0.72,0.34l-0.02,0.95l-1.78,1.21l-0.15,0.89l0.8,0.4l0.26,0.67l1.57,0.61l4.04,0.5l0.01,1.53l-0.81,0.8l0.18,0.91l7.19,6.91l0.89,3.73l-0.05,1.65l2.77,2.02l3.21,1.57l-1.07,1.96l0.25,0.69l1.08,0.29l1.88,1.94l0.65,-0.23l0.26,-2.55l2.14,0.11l1.18,-0.47l3.23,-4.25l5.89,-3.48l0.86,-0.97l0.1,-0.9l-1.02,-0.55l1.66,-0.51l1.02,0.15l0.45,1.06l0.52,0.22l3.52,-1.89l2.07,-2.41l0.64,0.93l1.2,0.28l-2.86,3.72l0.05,0.58l1.56,0.9l3.4,-2.58l0.41,2.3l1.31,1.61l0.32,1.94l0.59,0.3l1.22,-1.16l0.73,0.99l1.4,-0.47l0.2,-0.98l-0.68,-0.65l0.99,-1.11l1.67,0.8l-0.99,-2.6l2.3,-0.82l2.58,-0.26l1.32,2.51l0.43,1.93l1.19,1.07l-0.3,1.23l1.55,2.36l0.33,1.1l-0.23,1.96l0.23,0.41l0.46,-0.1l2.43,-1.83l0.01,-0.66l-1.44,-1.01l0.18,-0.78l-0.94,-2.07l0.89,0.72l0.49,0.0l0.13,-0.47l-1.08,-1.77l-1.86,-0.74l-1.64,-3.71l0.14,-0.55l1.0,-1.3l1.06,-0.4l0.65,-1.74l2.2,0.0l0.23,-0.81l5.04,-1.02l0.56,1.44l-1.39,2.27l-0.04,2.38l1.68,1.96l2.69,0.74l4.54,0.06l4.84,-0.75l2.99,-1.62l3.64,10.01l1.9,3.39l3.27,2.8l2.45,0.25l1.96,-0.73l2.78,-2.25l2.08,-0.9l2.22,-2.82l2.36,0.04l6.13,1.76l2.34,1.48l-0.2,6.73l0.77,9.6l-1.95,4.78l1.11,3.0l0.8,5.55l-0.73,2.04l0.74,5.71l0.56,1.33l1.19,1.29l0.09,5.3l-1.36,0.75l-4.18,0.71l-2.2,2.22l-3.52,11.89l-1.14,2.06l-0.42,2.27l-6.44,-1.27l-1.52,-1.95l-1.3,-0.64l-3.37,-0.01l-1.85,1.44l-6.34,3.01l-1.86,1.53l-1.19,1.81l-2.58,1.8l-7.3,2.35l-3.73,-0.93l-5.63,2.42l-4.45,0.44l-3.34,2.21l-0.46,1.56l0.14,2.34l-1.45,5.84l-0.55,1.03l-2.15,1.57l-1.12,2.38l-0.64,0.17l-0.22,-1.6l-0.55,-0.59l-3.14,1.03l-1.54,-1.0l-0.93,0.05l-0.9,0.59l-1.08,2.16l-1.37,1.47l-3.34,0.34l-1.92,-0.93l-1.37,0.41l-0.46,0.75l-0.62,-0.07l-0.44,-0.28l0.42,-1.44l-0.72,-1.23l0.31,-0.27l7.15,-0.74l0.42,-0.33l-0.29,-0.45l-1.17,-0.28l-2.62,0.27l-5.66,-2.01l-2.93,0.77l-2.11,0.0l1.24,-1.33l0.31,-1.7l-1.35,0.9l-2.72,0.29l-0.31,0.4l1.16,0.84l-2.2,-0.55l-0.63,0.31l-0.09,1.95l-0.48,0.28l-2.02,-0.7l-4.28,1.19l-2.57,-0.32l-2.25,-3.35l-1.35,-0.58l-0.65,-0.82l1.61,-0.24l1.15,1.83l1.16,-0.65l0.65,0.53l0.68,-0.24l0.21,-1.12l0.64,0.67l1.71,0.52l1.67,-0.16l1.49,-0.93l-0.18,-0.96l2.22,-3.1l0.35,-1.86l-1.9,-2.24l-0.27,0.94l0.65,1.08l-0.82,0.4l-0.12,0.71l0.42,0.53l-1.78,-1.11l0.65,-0.06l0.01,-0.47l-0.84,-1.16l-2.77,-0.87l-0.44,0.24l0.4,0.65l-3.66,0.61l-1.42,1.82l-2.11,0.75l-0.47,-1.02l-1.31,0.54l-0.19,-1.46l0.69,-1.29l-1.59,-0.65l-0.49,-1.77l-0.85,-0.34l-0.4,0.45l0.47,4.71l1.98,3.71l-0.39,-0.57l-0.79,0.06l-1.82,-2.04l-0.48,-0.04l-0.17,0.45l0.18,1.13l-0.46,-2.36l-0.53,-0.32l-0.66,0.44l0.0,1.86l-1.27,-0.53l-2.62,1.09l0.11,-1.03l-1.36,-1.05l-0.93,-0.02l-0.59,0.7l-1.73,-2.7l-1.98,-1.38l0.8,-3.38l4.44,-2.07l0.19,-0.54l-0.38,-2.37l-0.62,-0.33l-0.68,0.34l0.01,-1.85l-0.4,-0.42l-0.73,0.22l-0.34,0.67l-1.35,-0.52l-1.29,0.56l1.49,1.25l0.53,1.73l-0.96,0.06l-1.64,1.08l-0.2,0.65l0.59,0.82l-0.65,0.45l-0.65,1.71l-2.04,-2.25l-1.17,-0.4l-0.18,-0.92l-2.14,-1.01l-2.11,-0.23l0.6,-0.53l0.09,-1.29l1.59,-0.24l1.28,-2.99l0.87,-0.89l-0.26,-1.05l-3.4,3.23l-3.3,1.66l1.14,1.45l-4.61,1.16l-0.61,-0.19l-2.02,-2.73l-2.02,-3.65l-2.0,0.27l-4.17,-0.53l-1.4,-1.21l-3.4,-0.28l-0.44,-1.08l-0.73,-0.46l-3.3,1.67l-0.97,-0.78l-3.46,0.23l-2.11,-3.2l0.09,-1.26l-0.37,-0.49l-1.33,-0.52l-0.25,-1.01l-1.16,-1.33l-1.71,-1.17l-1.77,-0.38l-0.46,0.51l0.52,1.75l-0.38,1.18l-0.22,0.25l-0.51,-0.54l-1.37,0.31l-0.79,0.7l-1.41,-1.15l-2.42,-0.78l-1.77,-4.09l-1.11,1.58l0.42,1.49l1.5,1.94l-2.06,1.02l-0.9,-1.56l-0.45,-0.19l-1.15,0.56l-0.17,1.12l0.78,0.83l-0.27,1.07l0.4,0.4l1.27,0.0l-1.83,1.89l-2.25,0.91l-8.52,-0.41l-0.06,-1.86l1.22,-0.21l0.51,-0.87l-0.21,-1.91l-1.53,-4.88l-3.94,-5.59l-6.1,-4.68l-2.5,1.73l-1.83,-1.7l-3.16,-0.08l-3.85,-1.09ZM122.83,329.88l0.13,0.1l-0.09,0.43l-0.04,-0.53ZM122.52,334.12l0.22,1.49l1.8,3.04l-1.07,-0.3l-0.6,0.31l-0.71,-2.96l0.37,-1.57ZM115.62,347.05l4.0,2.08l3.82,3.64l0.93,0.41l1.64,-0.08l0.36,0.42l-0.19,1.25l-1.31,0.39l-4.66,-0.43l-3.89,-1.51l0.15,-1.36l-1.43,-4.0l0.58,-0.8ZM0.9,248.77l2.97,-1.35l1.62,1.16l-2.63,1.4l-0.59,-1.17l-1.37,-0.03Z\", \"name\": \"Bretagne\"}, \"FR-D\": {\"path\": \"M572.77,294.7l2.05,3.2l1.34,0.98l0.94,0.05l2.46,-2.01l13.22,-1.78l1.29,-0.96l0.21,-2.17l1.83,-1.36l3.71,0.55l2.38,-1.14l1.99,1.39l3.67,0.8l0.58,0.63l-0.54,1.25l0.39,0.89l2.84,1.16l0.62,0.65l-1.02,2.34l0.33,1.69l1.28,0.68l1.66,-1.44l3.03,3.95l2.44,4.7l0.04,1.32l-2.61,0.64l-0.81,1.52l1.41,2.24l0.36,3.25l0.81,2.17l1.63,0.72l1.83,-1.7l0.37,0.08l2.15,3.26l2.68,1.82l2.04,-0.29l1.44,-1.93l0.71,-0.32l1.31,2.59l3.65,2.48l0.69,2.45l0.71,0.44l1.03,-0.19l2.07,-1.59l1.54,1.34l1.32,-1.15l2.13,0.75l1.2,-1.39l1.07,-0.54l1.19,1.08l-0.01,2.27l1.13,2.33l-0.08,1.75l-1.9,2.67l-1.76,0.37l-1.03,0.96l-0.57,2.85l0.54,0.87l2.04,0.96l0.58,3.99l2.33,2.66l0.39,5.14l1.09,1.67l-1.66,7.62l-6.1,10.18l-5.32,2.93l-0.44,1.36l0.44,3.01l-2.29,1.36l-1.2,1.37l1.59,3.4l3.44,3.74l2.4,1.47l1.61,0.34l1.67,1.58l2.01,0.74l-1.07,1.88l-4.39,0.71l-1.18,1.3l0.33,1.55l1.87,1.92l-0.91,2.57l1.47,1.6l1.78,7.23l-1.04,4.03l-1.84,1.27l-0.8,1.22l-0.19,2.24l0.6,1.72l2.83,1.93l0.45,1.14l-1.04,1.12l-4.31,1.01l-1.25,0.68l-4.11,-1.13l-1.53,-0.92l-2.16,-2.28l-1.59,-0.6l-2.08,0.21l-4.97,1.58l-4.17,-1.59l-2.25,0.46l-1.84,4.95l-0.85,4.87l-1.46,2.94l-0.16,2.24l-3.53,7.73l-1.32,5.59l0.1,1.05l-2.89,-0.37l-0.98,-0.87l-0.99,-2.98l0.05,-2.06l-1.71,-1.44l-0.19,-2.19l-2.65,-1.28l-1.12,0.71l-0.53,2.23l-1.0,0.29l-2.36,-2.32l-3.36,1.2l-4.53,-1.65l-0.96,0.13l-0.67,1.01l-1.27,5.18l-1.75,2.39l-1.51,1.26l-1.61,0.66l-1.62,0.02l-4.83,-1.44l-3.09,0.75l-4.17,-1.07l-4.26,1.48l-1.39,-0.08l-2.06,-1.7l-2.78,-1.24l0.1,-3.19l-0.63,-2.02l5.31,-3.01l1.5,-1.51l0.08,-1.05l-0.86,-1.49l0.04,-1.61l-0.52,-1.46l0.64,-3.47l-0.8,-3.63l-2.07,-1.53l-4.18,-1.03l-2.7,-2.59l-1.71,-0.08l-3.83,-2.25l0.36,-3.65l-0.37,-2.12l-1.06,-0.81l-1.57,-3.05l-2.42,-2.49l-0.5,-1.91l-1.52,-2.83l-2.0,-0.53l-0.46,0.28l-0.44,2.29l-1.35,0.98l-0.44,2.1l-3.81,2.32l-1.29,0.32l-0.45,-0.25l-0.04,-1.75l-1.67,-2.96l-2.44,-0.35l-2.29,2.21l-2.62,-1.24l-1.84,-0.34l-1.88,0.13l-3.02,1.22l-3.33,-3.26l-1.31,-0.42l-1.58,0.12l-1.81,-1.02l-2.28,-2.7l0.24,-3.61l2.35,-5.12l-1.16,-3.85l1.31,-5.42l-0.44,-6.45l-2.26,-2.8l0.11,-4.17l-2.6,-8.2l-0.9,-4.35l-3.61,-4.15l-1.86,-1.22l-0.73,-1.46l2.92,-6.28l0.56,-3.67l-3.11,-6.23l-1.47,-1.85l0.1,-0.41l2.29,-1.29l2.94,-0.24l1.27,-0.45l0.24,-0.52l-2.69,-4.62l0.57,-2.61l-1.25,-2.8l-2.53,-2.58l-2.27,-1.0l-0.29,-1.05l0.23,-1.59l0.78,-0.71l4.06,-0.49l4.77,-2.67l0.52,-0.96l-0.08,-2.47l0.81,-1.85l-0.97,-2.53l-0.14,-2.65l1.56,-0.3l1.46,-1.72l2.5,-1.78l2.07,-4.87l-0.62,-3.16l-3.85,-4.03l-1.44,-5.19l-1.91,-1.49l-3.84,-0.86l0.77,-3.4l3.72,-2.66l1.67,-3.21l0.11,-0.8l-0.86,-1.74l-0.19,-1.73l1.16,-4.16l0.42,-0.44l3.03,0.07l2.26,-1.04l4.61,0.57l6.24,-1.07l2.53,0.54l0.71,-0.44l2.16,-3.09l0.67,0.56l0.63,3.07l0.74,0.37l1.85,-0.15l2.82,1.83l5.43,7.28l0.77,4.37l-1.84,2.55l0.13,1.19l2.18,1.04l3.08,2.4l2.14,-0.2l0.78,-1.38l1.02,0.28l1.06,2.51l1.93,2.25l4.57,8.03l-1.6,0.91l-0.04,1.08l2.03,1.31l2.23,-0.36l0.17,3.16l0.84,1.54l2.43,0.62l2.82,-0.21l1.98,0.77l0.73,-0.1l1.67,-1.34l1.7,0.51l2.06,-0.09l2.03,-1.88l2.69,1.28l0.64,-0.93l0.02,-1.87Z\", \"name\": \"Bourgogne\"}, \"FR-K\": {\"path\": \"M419.37,770.27l0.81,-3.38l0.96,-0.93l6.34,-1.36l1.61,-0.04l2.88,0.85l1.43,-0.36l1.22,-1.47l0.65,-3.39l1.51,-1.85l6.14,-0.86l3.35,0.61l0.97,-0.51l0.4,-1.04l-0.74,-1.99l-3.09,-1.76l-2.07,-2.72l-1.47,-0.1l-4.96,1.12l-3.17,-1.69l-0.42,-3.14l-1.12,-1.15l-1.49,-0.73l1.48,-2.31l2.2,-0.1l2.99,-1.27l0.65,-0.99l-0.69,-3.62l-1.98,-1.8l0.24,-0.61l2.52,-1.06l0.33,-0.92l-1.18,-4.75l-1.85,-1.91l1.02,-1.65l-0.14,-1.77l-0.8,-1.55l-1.36,-1.19l-2.79,-0.35l-2.43,-1.39l-5.03,-1.89l-2.53,-2.3l-1.03,-4.43l0.54,-3.08l1.15,-1.81l0.26,-1.45l3.81,-0.82l1.18,-1.02l-0.19,-3.15l1.51,-1.9l0.46,-1.37l1.36,0.45l0.19,1.39l0.84,0.62l4.14,-1.82l4.72,-0.67l1.8,1.87l1.22,0.56l1.5,0.11l3.85,-0.74l2.64,1.49l1.45,-0.78l0.35,-1.23l-0.32,-1.54l1.12,-1.39l7.11,1.44l5.76,-0.43l6.53,0.6l2.45,-0.68l3.24,-2.63l0.42,-0.83l-0.68,-2.02l0.6,-2.45l-0.19,-0.92l-2.2,-2.94l0.05,-2.65l1.1,-2.76l2.51,-0.4l4.35,1.9l1.1,-0.1l6.92,-3.03l2.96,-3.42l2.74,-0.58l2.55,0.89l1.37,-0.41l1.0,-2.12l-0.14,-2.03l0.44,-2.24l-0.73,-2.14l0.41,-1.85l1.58,-0.43l6.2,0.82l1.41,-0.5l1.55,-1.89l0.72,-2.75l1.63,-1.2l2.89,-0.31l1.39,-1.17l1.0,-3.03l5.43,-5.55l0.13,-1.14l-0.47,-0.85l-2.93,-2.52l-2.63,-0.6l-1.18,-1.25l-1.68,0.19l-0.95,-0.73l2.17,-1.61l0.27,-2.57l0.86,-1.31l2.1,-1.54l-0.42,-1.84l-2.0,-1.22l-6.02,0.32l-0.56,-1.89l-1.0,-1.3l-4.04,-2.45l-1.32,-0.24l1.45,-3.75l-1.04,-2.33l-0.29,-2.33l0.72,-2.87l0.15,-2.84l-3.33,-5.18l-0.09,-4.17l-1.11,-2.32l-5.19,-6.8l0.8,-2.57l1.89,-3.32l1.74,-8.27l0.48,-0.92l1.74,-1.36l0.66,-3.79l0.74,-0.85l0.49,0.01l1.38,1.98l1.24,-0.05l4.81,-4.41l2.4,-0.31l3.68,-2.32l1.91,-0.26l1.14,3.38l3.5,6.75l1.3,1.46l1.27,0.48l1.32,-0.71l3.38,-0.42l1.06,-1.02l0.57,-2.66l0.88,-0.37l1.67,0.18l0.85,0.78l-0.48,1.79l0.29,0.91l4.51,1.09l4.08,3.87l4.49,2.14l-0.03,3.29l2.5,9.95l2.81,3.84l2.22,7.93l1.76,1.71l1.65,2.99l-0.83,2.37l0.49,3.73l0.65,0.86l4.86,-0.57l1.07,1.18l4.93,2.76l1.53,0.35l0.81,-0.25l1.6,-1.74l3.36,-2.48l2.41,-0.43l0.38,0.55l-0.03,2.43l0.82,0.87l1.0,0.3l1.9,-1.04l0.64,-2.6l3.6,-0.33l1.67,0.76l2.19,2.3l4.31,1.59l0.57,1.92l1.24,1.78l0.1,1.8l1.91,2.08l-0.15,5.55l0.45,3.15l0.64,0.51l1.22,-0.45l1.18,0.24l4.27,5.49l0.24,0.86l-0.09,0.41l-1.63,0.18l-0.07,2.78l-1.07,1.44l-1.67,1.35l-2.8,1.32l-5.36,4.05l0.39,5.72l-1.95,5.45l0.01,2.15l-0.44,1.28l-4.46,-1.42l-2.04,0.64l-1.5,1.19l-1.67,2.39l-1.37,3.3l0.44,1.11l1.6,0.3l-0.54,1.61l-2.32,0.66l-0.61,1.56l-1.54,0.5l-3.46,2.78l-2.01,0.54l-1.44,1.2l-1.18,0.35l-0.94,2.35l-2.28,-0.33l-1.56,-1.02l-1.72,-5.59l-1.8,-1.41l-2.81,-0.29l2.04,-1.54l0.58,-1.28l-0.42,-0.56l-5.32,1.15l-2.81,2.01l-3.83,1.19l-5.69,4.39l-1.42,3.08l-5.07,2.15l-0.24,0.89l0.43,0.4l2.63,-0.39l-7.66,4.38l-2.05,1.74l-4.98,6.14l-1.03,0.45l-2.27,-1.13l-1.83,0.27l-2.27,1.15l-8.45,6.47l-1.13,1.41l-1.41,3.09l-2.19,2.14l-2.0,3.55l-1.44,-1.08l1.64,-1.51l-0.27,-0.83l-2.0,-0.12l-1.09,0.46l-0.33,0.87l0.47,2.32l2.46,2.54l-1.4,2.14l-0.63,4.11l-1.17,2.13l-0.37,-0.45l0.96,-2.03l-0.41,-0.59l-1.63,0.4l-0.56,1.21l0.89,2.7l1.86,1.89l-0.87,0.71l-1.39,-0.56l-0.44,0.2l-0.36,2.7l-3.13,2.98l-0.02,0.53l1.36,2.32l3.28,1.0l0.83,0.76l0.28,4.25l-0.71,4.12l-0.63,-0.95l-0.66,-0.01l-0.72,1.96l0.88,1.48l1.38,0.45l0.69,7.29l0.65,1.74l4.33,4.47l1.9,2.62l-0.01,2.08l-3.87,0.68l-3.04,-0.1l-1.82,-0.78l-1.61,-2.4l-2.87,-0.31l-1.18,0.64l-2.18,-0.63l-1.94,1.51l-3.1,0.27l-3.75,2.98l-4.82,-0.09l-1.23,0.6l-3.22,2.89l1.11,2.67l-6.43,-1.13l-0.84,0.7l-0.47,1.26l-0.65,0.25l-4.01,-2.06l-1.68,-2.74l-2.77,-0.45l-6.18,-3.28l-5.7,1.38l-3.03,-0.32l-1.13,0.6l-1.01,2.09l-2.46,2.19l-3.04,0.8l-2.46,-1.51l-1.32,-4.24l-1.07,-1.66l-3.53,-0.82l-3.45,-2.36l-5.13,-1.08l-0.81,-0.34l-0.32,-0.69ZM436.05,775.98l0.98,-0.26l0.19,-0.57l-1.32,-2.61l-1.13,-1.02l-0.89,0.52l-0.67,1.49l0.08,1.26l0.96,0.9l1.81,0.29ZM550.06,686.86l3.86,-3.8l1.24,-0.42l-5.1,4.22Z\", \"name\": \"Languedoc-Roussillon\"}, \"FR-J\": {\"path\": \"M527.01,213.62l-0.11,1.4l-0.53,0.83l-2.41,0.07l-1.08,0.49l-0.16,0.77l1.11,1.37l-1.57,1.82l-0.26,1.75l0.53,0.71l1.23,-0.03l1.67,2.18l0.71,3.42l-0.51,2.22l0.28,1.92l0.91,0.63l2.19,-0.35l1.55,2.25l-2.51,2.22l-1.05,1.67l-0.92,2.75l-3.44,1.53l-0.08,0.76l0.96,1.73l-1.79,2.18l0.61,2.36l-0.39,3.38l-2.33,3.26l-2.66,-0.42l-6.16,1.07l-4.69,-0.56l-2.32,1.05l-3.28,0.01l-0.78,0.88l-1.15,3.78l0.03,1.96l0.89,2.73l-1.51,2.91l-3.77,2.73l-0.94,3.95l-5.9,2.15l-1.34,-0.09l0.3,-1.95l-1.17,-0.58l-2.71,0.53l-1.78,1.95l-1.86,0.95l-8.31,-0.68l-4.03,0.77l-1.28,-0.56l-0.29,-1.2l0.55,-0.64l2.04,0.32l0.78,-0.49l0.19,-0.9l-0.52,-1.47l0.66,-1.15l0.12,-1.5l-1.38,-1.8l-3.36,-2.25l-0.97,-3.78l-1.31,-2.14l-2.64,0.19l-2.85,-1.6l-0.88,0.19l-1.36,1.44l-1.38,0.4l-0.75,-0.46l-1.13,-1.91l-1.71,-0.66l-2.06,2.74l-1.99,0.93l-8.67,2.01l-0.72,-0.5l-0.01,-0.61l1.67,-2.22l-0.0,-0.79l-1.9,-2.04l-0.62,-3.34l-2.14,-2.83l-0.33,-3.02l-0.85,-0.53l-2.09,0.45l-5.27,-2.88l-1.19,-2.06l0.06,-2.49l-0.48,-2.36l-2.95,-2.75l-0.78,-2.87l-3.88,-2.87l-1.33,-1.79l-0.62,-1.75l-1.41,-1.07l-0.0,-1.22l1.29,-1.78l0.48,-1.88l-2.37,-2.36l0.46,-4.54l-0.3,-2.21l-4.76,-8.82l-0.38,-3.3l-2.13,-1.03l0.25,-2.56l-0.68,-2.4l8.08,-2.22l2.47,-1.34l3.14,-10.33l1.58,-3.22l1.21,2.8l0.97,0.78l3.4,0.35l5.9,1.68l6.32,-0.94l5.0,-3.17l3.64,2.47l2.47,0.31l3.98,1.78l1.85,0.12l2.23,-1.39l1.78,0.0l10.64,5.96l2.03,-0.27l1.08,1.69l1.38,1.16l2.94,-1.13l1.25,0.29l1.79,1.68l2.18,-0.48l1.24,0.97l1.41,0.34l2.4,-1.76l4.02,1.08l5.71,-1.26l1.58,0.97l2.36,-1.31l1.83,-0.04l2.02,-1.23l3.45,1.12l1.87,3.26l-0.52,3.33l0.71,1.6l8.87,7.94l0.88,0.31l1.71,-0.43l0.63,3.55l0.67,1.16l3.29,2.14l2.33,-0.05Z\", \"name\": \"\\u00cele-de-France\"}, \"FR-I\": {\"path\": \"M685.01,434.33l-5.31,6.22l-1.03,1.9l-4.74,4.41l-1.84,0.37l-7.0,-0.5l-1.33,-3.29l-3.08,-2.86l-0.56,-0.07l-2.8,2.69l-0.49,1.27l-1.36,0.34l-1.18,1.41l-2.27,1.53l-1.92,-0.63l-0.3,-1.18l0.31,-2.61l-0.36,-0.62l-1.87,-0.51l-0.9,-1.25l-2.54,-1.12l-1.18,-3.48l-1.25,-1.09l-1.44,-0.48l-0.43,-0.79l-0.02,-2.82l5.46,-1.63l1.12,-0.84l0.37,-0.95l-0.62,-1.68l-2.58,-1.63l-0.69,-1.66l0.41,-2.37l2.38,-1.92l1.09,-4.3l-1.48,-6.56l-0.51,-1.23l-1.3,-1.32l0.94,-2.45l-0.28,-0.73l-1.72,-1.5l-0.2,-0.95l1.27,-0.87l3.9,-0.58l1.01,-1.09l0.45,-1.78l-2.35,-1.13l-1.69,-1.6l-1.75,-0.41l-2.19,-1.35l-3.31,-3.61l-1.36,-2.96l3.33,-2.29l0.28,-0.78l-0.62,-2.65l0.29,-0.85l5.24,-2.85l5.77,-9.4l2.24,-8.96l-1.14,-1.89l-0.56,-5.73l-2.21,-2.22l-0.59,-4.0l-2.49,-1.54l0.45,-2.38l0.71,-0.65l1.96,-0.52l2.03,-2.83l0.29,-1.57l-1.27,-3.19l-0.01,-2.31l-0.98,-1.22l-1.78,-0.21l-1.78,1.81l-1.49,-0.72l1.8,-4.25l1.34,-1.19l3.97,-0.71l3.2,1.92l1.57,0.35l6.71,-2.24l1.18,-1.2l0.28,-1.31l-0.19,-2.57l0.55,-2.88l-0.59,-2.51l0.85,-1.62l6.42,-4.61l2.41,-3.4l2.02,-0.86l0.39,-1.05l-0.27,-1.04l1.7,-1.08l1.57,-2.89l0.31,-0.17l0.19,0.57l-0.13,2.29l0.86,0.64l3.54,-2.51l2.66,-3.33l1.51,-0.34l2.76,0.62l1.12,0.8l0.85,1.22l-0.05,1.55l0.43,0.85l3.76,1.96l2.51,-0.26l2.39,-1.41l2.98,-0.22l2.24,0.93l5.34,3.45l2.52,0.46l2.67,-0.85l2.12,-2.91l1.06,0.46l2.95,3.62l3.4,1.77l6.19,5.01l1.53,0.24l0.12,1.39l0.9,1.15l8.6,5.02l0.93,0.91l0.86,1.81l0.15,3.21l-0.52,1.72l-1.54,2.44l0.0,1.6l0.97,1.04l2.57,0.44l3.26,3.66l0.82,1.49l0.15,1.6l-0.43,1.71l-2.03,-0.62l-3.14,0.52l-2.79,-0.79l-2.26,0.93l-0.13,1.45l0.89,2.21l-1.17,1.27l-2.45,0.87l-0.39,1.86l-1.4,0.82l-1.02,1.29l-1.13,2.71l0.43,0.5l7.28,-0.72l1.03,-0.47l2.07,2.07l-0.33,0.68l-1.74,0.85l-0.94,1.23l-0.92,0.25l-1.15,1.19l-0.5,2.05l0.22,2.14l-4.03,2.97l-2.97,3.79l-3.91,3.63l-1.76,0.61l-0.2,1.68l-3.32,2.26l-0.89,1.51l0.63,1.83l-1.24,1.79l-3.98,3.04l-6.52,2.06l-3.24,1.99l-0.91,3.38l1.07,2.38l0.08,2.0l-1.81,4.99l0.94,1.68l-0.18,1.9l-1.19,1.21l-2.12,1.15l-2.14,2.27l-4.43,2.45l-9.1,8.69l0.2,1.68l1.26,1.41l-4.85,6.99l-0.27,1.15l0.45,2.34l-0.64,1.48Z\", \"name\": \"Franche-Comt\\u00e9\"}, \"FR-H\": {\"path\": \"M839.1,783.31l-0.56,-2.48l1.09,0.04l0.87,-0.73l0.97,0.13l1.09,-2.5l1.84,-0.29l0.76,-0.66l0.23,-1.99l0.9,-1.67l-0.37,-0.73l-0.73,-0.18l0.53,-2.15l0.67,-0.8l2.08,-0.75l0.24,-3.05l1.1,-0.35l1.74,1.11l1.25,-0.32l0.96,-1.02l0.81,-2.7l1.71,-0.13l3.85,-2.01l6.79,-1.46l2.04,-1.04l0.39,-1.79l3.75,-4.0l2.68,-0.24l4.29,1.03l1.55,1.02l1.19,2.72l1.14,0.07l2.19,-3.78l0.93,-2.49l-0.54,-1.96l0.45,-1.48l-0.33,-1.67l-1.72,-2.56l1.58,-2.33l-0.42,-1.61l0.2,-1.25l1.77,-2.0l0.09,-1.87l-1.02,-2.2l0.15,-2.24l0.78,-0.51l3.37,-0.39l2.29,2.03l-0.61,1.92l0.97,1.96l-0.25,1.51l1.15,7.58l-0.1,2.43l-1.97,7.76l-0.01,4.64l-0.45,1.12l0.9,0.88l0.08,2.3l1.16,2.16l2.31,1.3l0.52,-0.73l0.26,0.64l0.31,8.84l0.74,1.74l-0.8,5.15l1.67,6.51l-0.44,10.26l0.43,1.97l-0.77,3.26l-1.67,1.6l-1.61,3.09l-5.49,7.85l-0.57,8.76l0.53,5.67l-0.08,5.91l-1.17,0.97l-0.92,1.62l0.76,0.54l-0.37,1.74l-1.74,0.49l-0.11,1.13l-2.12,-0.35l-1.05,0.57l-0.65,2.56l1.2,0.59l2.92,-0.99l0.13,1.33l-1.26,1.41l-1.71,0.68l-1.08,1.6l-0.91,0.18l-0.29,2.52l0.83,1.06l-0.73,0.98l0.06,0.73l-3.5,1.86l0.75,1.71l-0.75,1.64l0.56,0.37l1.71,-1.23l-1.03,2.83l-1.12,0.98l-2.1,-1.59l-4.12,-1.27l1.3,-2.62l-3.08,-2.01l0.67,-1.09l-0.53,-0.89l-2.18,1.38l-0.31,-0.88l-1.05,0.42l-0.89,-0.9l-1.69,-0.57l-2.48,-0.06l-1.61,-1.37l-1.4,-0.35l-0.77,-1.03l-1.48,-0.22l0.52,-0.56l-0.26,-0.88l-3.47,-1.18l0.23,-1.58l-0.97,-1.0l1.09,-3.13l1.05,0.36l3.39,-1.58l0.89,-1.7l2.21,-1.92l-0.29,-0.66l-8.02,-1.43l-0.52,-0.55l0.46,-1.42l-0.38,-0.52l-1.67,0.01l-3.16,1.01l0.18,-0.48l-0.4,-0.54l-1.72,-0.27l1.54,-0.27l1.43,-1.25l0.24,-1.91l-0.67,-0.6l2.37,-0.45l2.07,-1.24l-0.13,-1.27l-0.83,-0.83l1.45,-0.81l-0.51,-1.62l1.46,-2.52l-1.62,-2.21l-1.32,-0.53l-1.38,0.17l-3.29,1.52l-2.54,0.17l-1.76,0.68l0.47,-1.93l-0.35,-1.28l-1.24,-1.48l3.57,-0.75l1.04,-1.62l-0.6,-0.87l0.3,-0.56l4.54,-2.31l0.48,-1.38l-1.4,-1.58l-1.71,-3.2l-2.34,0.26l-0.71,-1.26l-1.12,-0.67l-2.26,-0.35l0.14,-0.96l-0.76,-0.56l0.72,-0.51l0.17,-0.94l-0.4,-0.4l-1.06,0.0l0.71,-1.14l-0.24,-1.05l-0.56,-0.41l0.23,-1.04l-1.57,-0.93l0.1,-0.3l2.12,-0.07l1.46,-0.91l2.49,-0.49l2.28,-1.06l0.26,-0.98l-1.25,-1.24l-2.16,-1.07l-0.59,-1.15l-1.29,0.59l-0.0,-0.55l1.79,-1.08l0.05,-0.65l-1.35,-1.12l-1.58,0.01l-1.58,0.64Z\", \"name\": \"Corse\"}, \"FR-O\": {\"path\": \"M413.2,69.58l0.11,-1.12l-3.23,-2.56l1.12,-3.7l0.34,-8.25l1.76,-1.34l0.09,-0.54l-1.62,-2.5l-0.31,-1.25l-0.9,-8.63l0.27,-3.58l2.33,-7.12l-1.52,-7.52l1.29,-1.03l3.05,-0.85l4.62,-5.26l11.55,-5.06l1.26,0.15l2.02,-1.2l9.82,-1.25l11.15,-3.8l4.16,0.37l5.0,-1.32l3.12,-1.58l0.7,1.68l1.23,6.2l3.15,3.91l0.18,1.7l-1.64,1.81l-0.46,1.28l1.19,4.19l-0.54,2.33l1.22,1.04l0.85,1.76l1.6,0.59l1.74,-0.13l1.08,0.38l0.85,1.84l2.31,2.23l1.56,3.26l1.23,1.02l6.22,2.61l1.24,-0.81l1.82,-3.17l2.36,-1.96l7.91,-2.49l1.38,0.42l0.93,0.87l2.64,5.22l0.73,0.71l1.47,0.33l0.39,0.72l0.64,2.11l-0.83,1.73l2.11,8.21l0.5,4.36l1.83,1.94l3.89,1.77l4.41,-1.17l2.06,-1.65l0.69,-0.06l0.91,0.48l-0.62,1.53l0.87,1.08l4.16,0.1l2.54,0.89l2.05,2.79l1.06,12.04l2.26,2.27l1.34,-0.87l1.51,-2.93l1.08,-0.71l5.01,0.1l3.54,1.92l1.54,-0.05l4.97,-1.74l5.54,4.56l1.84,3.73l1.58,0.45l0.56,-0.77l-0.05,-0.96l0.39,-0.17l1.81,1.22l0.16,1.19l-2.7,2.81l-1.96,8.18l1.09,0.83l2.33,-0.43l1.75,5.88l-2.73,1.67l-1.64,1.68l-0.64,2.0l0.67,2.58l-2.01,0.63l-6.37,-2.33l-0.35,-3.85l-0.85,-0.71l-2.17,0.3l-2.76,1.75l-2.5,-2.21l-6.23,-0.77l-3.39,-0.85l-1.08,0.12l-3.89,2.1l-2.56,-1.15l-1.27,-0.05l-5.56,3.16l-0.86,0.08l-5.33,-1.62l-2.79,1.34l-3.54,-0.93l-2.0,-0.08l-4.15,0.95l-7.54,-5.05l-2.8,-0.44l-1.31,1.01l0.01,2.03l-0.44,0.67l-3.52,0.35l-2.6,1.51l-0.36,-0.63l-0.0,-2.86l-0.59,-1.17l-0.66,-0.35l-1.01,0.32l-3.34,2.76l-0.71,-0.08l-0.02,-0.83l1.12,-1.87l-0.07,-1.32l-1.29,-2.49l-2.14,-2.0l-0.81,0.27l-0.45,0.81l-0.23,3.73l-3.55,-1.83l-3.28,-0.74l0.21,-1.93l-0.84,-0.85l-1.19,0.0l-1.88,1.03l-2.2,-0.4l-2.49,0.28l-0.82,0.73l-1.02,2.09l-0.67,-0.02l-1.14,-2.28l0.38,-2.2l5.34,-4.6l-0.84,-1.62l-2.96,-1.66l-1.84,-0.13l-1.13,1.09l-1.58,-2.07l-0.97,-0.34l-0.78,0.51l-0.34,1.17l-1.01,0.43l-6.98,1.18l-4.54,0.12l-1.52,-1.23l-0.7,-2.67l-0.8,-1.02l-6.6,-3.77l0.98,-2.17l-0.98,-1.05l-1.5,0.16l-1.76,1.23l-1.45,-1.07l-1.39,-1.87l-1.15,-0.89l-1.2,-0.29l-3.86,0.27l-3.8,1.47l-1.42,-0.03l-1.25,-0.74l-1.38,-1.7Z\", \"name\": \"Nord-Pas-de-Calais\"}, \"FR-N\": {\"path\": \"M408.38,556.2l0.91,0.44l1.92,-0.65l2.61,1.04l4.01,3.23l1.3,2.14l4.09,2.43l1.55,0.03l3.21,-1.12l3.93,-2.11l2.16,0.82l1.99,-1.02l4.2,-0.21l0.62,1.31l0.9,6.69l4.35,8.22l-1.5,7.18l1.83,1.52l1.23,4.55l1.75,0.98l0.44,-0.3l0.5,-1.97l5.01,-1.73l0.98,0.09l1.12,1.27l0.64,0.09l1.37,-0.72l3.34,0.12l1.98,-0.24l1.26,-0.68l3.9,-4.84l0.6,-2.79l2.43,-4.04l0.63,-2.79l8.08,-8.46l1.99,2.79l0.35,3.18l0.87,0.34l2.52,-0.33l2.18,3.4l0.79,2.4l2.88,1.59l-1.23,1.77l1.65,6.84l2.92,2.99l5.23,6.82l1.05,2.18l0.1,4.19l3.32,5.15l-0.9,5.5l0.32,2.52l1.01,2.05l-1.39,3.21l0.08,1.1l1.58,0.44l3.9,2.34l0.8,1.02l0.34,1.84l0.65,0.48l6.26,-0.26l1.46,0.94l0.32,0.86l-1.91,1.4l-1.03,1.54l-0.21,2.47l-2.13,1.43l-0.13,1.0l1.39,1.14l1.67,-0.18l1.14,1.22l2.51,0.52l2.74,2.32l0.25,1.23l-5.31,5.34l-0.99,3.02l-1.08,0.95l-2.91,0.32l-1.88,1.36l-0.56,0.87l-0.32,2.09l-1.24,1.55l-1.49,0.39l-5.76,-0.82l-2.05,0.61l-0.69,2.44l0.73,2.23l-0.44,2.08l0.14,2.08l-0.66,1.51l-1.26,0.21l-2.19,-0.84l-3.04,0.64l-3.09,3.49l-6.65,2.92l-1.2,-0.05l-3.97,-1.76l-2.4,0.13l-0.77,0.45l-1.35,3.2l-0.07,2.89l0.54,1.3l1.7,1.85l-0.46,3.17l0.7,1.73l-3.21,2.95l-2.17,0.61l-6.44,-0.6l-5.8,0.43l-7.23,-1.43l-1.59,1.44l0.09,2.71l-1.0,0.78l-2.57,-1.49l-5.18,0.66l-3.14,-2.48l-5.05,0.72l-3.83,1.77l-0.46,-1.69l-1.87,-0.85l-0.77,0.39l-0.48,1.42l-1.61,2.09l0.3,2.67l-0.42,0.86l-3.57,0.62l-1.0,0.63l-0.37,1.68l-1.15,1.8l-0.58,3.26l1.1,4.84l3.39,3.03l4.59,1.56l2.51,1.42l2.66,0.3l1.08,0.94l0.83,2.56l-1.08,2.0l1.92,2.16l1.07,3.8l-0.07,1.0l-2.39,0.95l-0.61,1.4l2.07,2.02l0.56,3.41l-3.03,1.37l-2.35,0.16l-1.59,2.14l-0.07,1.51l2.06,1.08l0.65,1.08l0.02,2.42l2.73,1.9l2.44,0.34l4.93,-1.06l1.87,2.56l2.44,1.23l1.16,1.53l-0.56,1.17l-3.39,-0.6l-6.48,0.94l-1.84,2.18l-0.71,3.52l-0.94,1.07l-0.93,0.2l-2.88,-0.85l-6.65,0.91l-0.6,-0.72l-2.06,-0.86l0.44,-1.39l-0.34,-0.52l-6.91,-0.69l-4.13,-2.6l-2.77,0.75l-1.85,-0.09l-1.29,3.38l-0.89,0.36l-3.96,-7.32l-1.32,-0.57l-0.07,-1.45l-1.54,-0.41l-7.55,-0.02l-2.57,0.59l-0.9,-0.66l-1.64,-3.55l-1.32,-1.18l-6.5,-0.77l-1.98,-1.3l-1.95,0.91l-1.91,-1.53l-4.5,-2.31l-2.42,-0.13l-4.25,-1.18l-1.86,0.15l-1.65,0.84l-0.17,3.02l-0.83,2.26l0.51,1.0l-0.87,1.46l1.61,1.6l0.37,1.12l-0.06,1.17l-0.98,0.89l-9.69,-0.06l-1.2,-0.42l-3.4,0.67l-1.06,-0.21l-0.39,-1.18l-2.09,-1.52l-1.26,0.49l-2.75,3.45l-0.52,0.08l-2.26,-3.41l-4.48,-1.38l-2.23,0.95l-3.75,0.57l-4.68,1.73l-1.97,0.19l-2.25,-0.9l-1.02,-1.13l-1.36,-0.51l-0.27,-1.09l-1.39,-1.3l-1.0,-2.44l0.13,-1.38l-0.56,-0.4l-2.74,0.92l-1.35,-0.16l-0.79,-1.53l-3.38,-2.05l-0.7,-4.48l0.24,-1.55l1.77,-2.88l-0.27,-4.4l2.4,-2.78l2.78,-0.28l0.84,-0.65l0.31,-0.87l-0.39,-3.59l0.74,-1.06l2.36,-1.54l1.67,-3.29l1.64,-0.23l1.2,-3.81l2.43,-3.14l-0.56,-2.63l0.52,-2.56l0.68,-0.87l2.02,-0.85l0.45,-0.93l-1.08,-3.82l0.01,-3.91l-1.18,-0.63l-1.82,1.65l-0.37,-0.32l-0.06,-2.03l1.22,0.0l0.86,-1.06l-2.34,-6.09l-1.59,-1.35l-0.73,-1.74l-1.23,-0.87l-5.86,-1.26l-1.94,0.14l-0.81,-2.2l-0.88,-0.67l1.33,-2.72l-0.49,-2.13l1.42,-0.27l0.83,-0.81l1.31,-3.57l-0.83,-1.68l0.05,-2.55l1.48,-4.6l-2.35,-4.65l3.03,-2.48l2.13,0.37l2.18,-0.26l1.91,-2.03l2.48,-1.5l1.3,0.8l-0.76,2.29l0.66,1.54l1.48,0.61l2.85,0.05l1.26,-1.47l-0.22,-2.88l0.7,-1.2l1.77,-0.63l0.95,0.98l1.34,-0.02l1.3,-1.08l2.0,-2.97l5.6,1.75l9.95,-5.07l2.49,0.35l5.08,-1.73l1.68,0.84l2.19,2.07l1.59,-0.17l3.93,-2.31l1.14,-3.37l2.18,-1.39l0.77,-1.93l0.98,-0.26l2.21,0.79l1.78,-0.4l0.48,-1.69l-1.38,-1.59l2.07,-1.77l2.56,-6.28l-0.74,-1.29l-2.35,-1.02l-0.61,-1.19l0.82,-2.33l0.19,-2.56l0.59,-0.31l1.66,1.07l1.44,0.3l5.01,-0.43l1.17,-1.3l0.18,-3.79l-1.89,-2.26l-0.97,-2.73l-0.09,-2.23l-1.19,-1.92l0.08,-0.65l3.56,-2.13l3.6,-3.35l3.41,-6.01l0.78,-0.72l2.29,-0.57l4.57,-3.26l1.42,-2.44l-0.01,-1.11l-0.61,-0.94l0.12,-1.02l0.65,-1.0l2.36,-0.86l1.69,-3.04l2.14,-2.05l0.72,-1.26l-0.15,-1.97l0.75,-2.43l-1.32,-4.44l0.25,-1.16l5.43,-3.73l0.59,1.03Z\", \"name\": \"Midi-Pyr\\u00e9n\\u00e9es\"}, \"FR-M\": {\"path\": \"M625.45,152.34l1.44,-2.02l0.37,-3.97l1.35,-1.6l1.34,0.14l2.54,1.97l3.69,-0.04l0.91,1.48l0.89,0.27l1.49,-0.71l3.12,-2.75l2.22,-1.35l0.21,-0.93l2.87,5.21l-0.05,3.39l0.41,1.04l1.59,0.57l4.38,-2.61l2.33,0.98l1.07,-0.11l1.28,-2.15l1.31,-0.67l3.91,1.17l0.99,-0.36l1.36,-1.35l2.41,1.04l3.06,3.58l5.39,1.66l1.0,1.02l0.82,2.6l0.51,0.26l7.2,-1.01l1.58,-1.46l0.35,-1.47l1.93,-0.26l0.16,-0.92l2.92,-0.32l3.22,0.81l4.8,3.21l1.86,0.18l2.8,-1.01l5.52,2.76l0.95,0.93l0.43,2.11l3.52,4.15l-1.3,0.66l-0.34,1.14l0.39,1.09l5.12,5.27l0.01,1.59l1.47,0.96l1.03,3.38l0.67,0.2l0.76,-0.45l0.25,0.98l-0.46,2.28l1.02,1.74l3.53,0.37l2.32,0.86l1.0,-0.16l1.36,-1.86l-0.67,-3.02l0.26,-0.96l2.76,0.49l1.86,-0.17l4.31,2.22l1.12,0.1l-0.03,2.92l0.72,2.68l1.48,1.28l2.35,-1.17l0.33,-1.95l4.33,2.54l5.32,0.07l2.07,0.83l1.68,-2.21l2.37,-0.7l0.98,-2.25l2.22,-0.91l0.83,0.07l0.56,1.07l3.45,0.49l0.27,0.88l-0.54,1.27l3.13,4.24l1.49,0.91l2.62,0.45l1.23,0.64l1.04,1.76l0.87,0.6l-3.16,6.59l-1.38,1.82l-0.9,0.12l-3.41,-1.95l-9.1,1.44l-2.16,-0.91l-1.23,-2.24l-8.43,-2.98l-0.65,-0.85l-0.89,-3.42l-0.57,-0.64l-1.81,-0.27l-0.81,0.77l0.24,2.25l-2.14,3.22l-0.26,2.14l-2.51,2.32l-1.29,2.11l-0.18,2.03l1.04,1.84l1.44,1.09l4.76,2.09l-0.96,1.34l-0.36,1.59l0.92,1.02l0.99,2.29l1.47,0.3l1.72,-2.22l2.22,-1.08l0.96,-2.63l0.48,2.09l1.97,1.12l3.4,3.92l0.74,1.59l-0.23,1.22l-3.0,5.34l0.28,1.37l1.88,1.44l-2.2,7.08l-2.89,1.98l-1.18,1.77l-5.73,0.39l-0.82,0.64l0.08,0.64l3.2,1.8l-1.01,1.48l-0.59,8.92l-0.84,3.14l0.2,0.83l0.62,0.82l1.31,0.61l3.21,0.18l1.06,1.2l-0.02,0.87l-8.16,13.82l0.69,3.66l-1.64,2.58l-3.08,6.74l-3.51,4.93l-0.65,3.69l-1.52,3.18l0.5,2.86l-0.9,1.65l-2.18,0.99l-1.48,-0.18l-6.13,-4.97l-3.36,-1.74l-2.89,-3.57l-1.02,-0.61l-1.42,0.35l-1.82,2.68l-2.15,0.66l-2.2,-0.39l-5.27,-3.42l-2.43,-1.02l-3.41,0.22l-2.47,1.44l-2.12,0.21l-3.32,-1.76l-0.16,-2.1l-1.09,-1.55l-1.37,-0.93l-2.91,-0.65l-2.09,0.49l-2.72,3.38l-3.04,2.27l0.03,-2.71l-0.66,-0.74l-1.08,0.35l-1.68,3.01l-1.42,0.84l-2.43,-2.98l-1.63,-0.01l-1.2,0.75l-0.35,-1.07l0.11,-3.22l-0.65,-1.43l-3.48,-2.3l-4.4,-4.3l1.83,-4.57l0.52,-2.92l1.44,-1.65l-0.57,-1.68l-3.48,-2.83l-0.37,-2.77l-1.66,-1.16l-2.42,0.05l-3.01,-4.54l-1.81,-1.67l-2.08,-0.07l-2.03,1.89l-0.81,-4.14l1.96,-3.42l-0.08,-0.47l-6.02,-5.7l-0.8,-1.84l-1.67,-0.7l-3.06,-0.31l-4.92,-2.83l-4.26,-3.61l-2.86,-1.58l-2.74,-2.55l-1.15,-2.53l-1.36,-8.85l-4.34,-3.86l-0.27,-1.02l1.41,-2.54l-0.55,-3.36l0.45,-2.68l0.87,-1.47l2.6,-0.79l1.38,-1.11l0.59,-1.3l0.16,-4.03l0.86,-1.41l-0.58,-1.81l-2.04,-1.36l-0.4,-6.08l-1.79,-6.45l1.47,-3.31l-0.03,-2.44l4.23,-4.04l0.12,-1.18l-0.79,-3.08l3.34,-5.16l1.36,-4.09l-0.91,-4.02l-1.09,-1.06l-0.6,-2.28Z\", \"name\": \"Lorraine\"}, \"FR-L\": {\"path\": \"M452.25,434.51l3.68,4.56l0.92,3.23l0.57,0.71l3.62,1.22l1.76,3.11l0.81,0.02l0.84,-0.7l1.18,0.87l2.45,3.99l1.02,3.55l2.13,4.27l-0.33,4.79l2.06,4.92l0.01,4.71l-1.63,2.08l-1.57,3.74l-2.19,2.66l-1.81,0.05l-1.3,0.68l-2.66,2.32l-0.9,1.61l0.24,0.99l1.59,2.27l0.72,2.37l1.97,0.94l0.84,0.87l2.38,3.63l-0.25,4.46l-2.68,2.25l-0.72,3.18l1.86,3.48l0.25,4.71l1.12,1.13l-1.15,5.09l-0.89,2.05l-2.13,-0.11l-3.13,-1.84l-1.2,-0.02l-1.52,0.68l-0.21,0.82l0.95,1.06l0.16,1.02l-1.25,3.03l-1.06,0.73l-1.97,3.27l-3.11,1.55l-0.64,2.32l-2.65,2.36l-0.16,2.04l0.95,1.97l-0.03,1.53l-2.77,6.24l-2.8,2.33l-0.53,0.94l-0.04,0.82l1.6,3.29l-0.03,0.75l-4.22,1.35l-4.52,0.23l-1.94,1.0l-2.21,-0.81l-4.07,2.15l-3.11,1.08l-1.22,-0.04l-3.72,-2.26l-1.24,-2.08l-5.27,-3.94l-1.94,-0.58l-2.05,0.64l-0.75,-1.33l-0.72,-0.13l-3.74,2.48l-2.01,-2.52l-1.53,-3.13l0.29,-3.57l-0.38,-0.64l-0.77,-0.33l-4.02,0.02l-2.31,-1.55l0.62,-1.97l-0.11,-1.48l-0.77,-0.75l-2.15,-0.13l-0.09,-0.55l2.44,-2.73l0.22,-0.85l-2.19,-2.14l-0.21,-0.9l0.59,-2.57l2.18,-2.39l1.62,-1.08l0.72,-1.71l-0.66,-1.11l-1.96,0.23l-0.71,-0.44l-0.06,-0.86l1.19,-2.62l-0.38,-0.99l-1.77,-0.41l-1.8,-1.41l-1.98,0.27l-3.97,-2.13l0.03,-0.87l1.79,-1.91l-0.47,-1.61l-4.39,-1.29l-3.26,-4.98l-1.3,-0.95l-4.68,-0.09l-2.57,0.55l-1.38,-0.95l-0.68,0.22l-1.04,1.5l-1.43,0.38l-2.81,-0.95l-0.32,-0.79l0.7,-3.1l-1.58,-2.58l-1.63,-1.35l-2.69,0.03l-1.55,-0.32l-0.88,-0.71l1.27,-3.18l2.25,-2.1l1.25,-2.25l1.79,0.82l1.45,-0.0l1.04,-1.05l1.5,-10.48l3.94,-0.94l2.62,-2.14l0.46,-1.0l-0.02,-0.89l-2.05,-3.93l-0.66,-0.55l-1.48,0.46l-0.59,-0.21l-2.24,-3.39l-0.63,-5.77l1.23,-0.01l0.55,-1.17l-0.6,-3.42l-1.63,-3.47l0.44,-0.62l2.51,-0.93l3.57,-3.29l3.91,-0.02l1.38,-0.55l0.85,-2.21l2.96,-4.1l1.61,-0.81l2.73,-0.14l2.77,-1.81l3.16,1.56l1.71,0.11l3.59,-0.63l1.16,-1.64l1.02,-0.27l1.46,2.08l3.17,1.89l2.0,-1.3l3.93,-4.09l0.66,-0.17l2.16,0.61l2.0,-0.08l0.36,1.56l1.72,0.83l1.05,-0.24l1.87,-1.53l2.97,0.48l0.92,-0.23l1.03,-1.13l0.24,-2.99l0.71,-0.64l2.66,2.59l0.98,0.2l3.15,-1.57l5.4,0.16l2.44,0.97l3.51,0.01l2.24,0.84l3.18,-0.69l5.8,0.33Z\", \"name\": \"Limousin\"}, \"FR-S\": {\"path\": \"M415.52,72.77l1.88,0.07l3.81,-1.47l3.64,-0.26l1.89,0.98l1.93,2.42l1.13,0.67l1.14,-0.05l1.33,-1.23l0.8,-0.1l0.48,0.46l-0.96,1.52l0.22,1.09l6.67,3.79l1.34,3.51l2.04,1.57l8.94,-0.6l3.84,-0.99l1.21,-1.81l1.5,2.06l0.76,0.36l1.54,-1.15l1.25,0.13l2.71,1.5l0.57,0.93l-4.36,3.15l-0.88,1.19l-0.45,2.69l0.38,1.36l1.03,1.4l1.03,0.31l0.75,-0.34l1.56,-2.63l2.12,-0.23l2.39,0.4l1.36,-0.83l1.41,-0.2l-0.14,1.9l0.51,0.77l3.45,0.81l3.93,1.88l0.87,-0.88l-0.13,-2.29l0.49,-1.62l1.64,1.66l1.16,2.21l0.06,0.98l-1.29,2.29l0.29,1.01l0.76,0.43l0.99,-0.09l3.83,-3.01l0.65,0.97l0.19,3.53l0.67,0.49l0.94,-0.1l2.16,-1.41l3.78,-0.48l0.72,-1.13l-0.05,-1.87l0.67,-0.54l2.3,0.33l7.95,5.18l4.17,-0.97l5.56,1.01l2.83,-1.34l5.11,1.61l1.12,-0.08l5.63,-3.17l3.68,1.23l4.87,-2.23l3.31,0.84l6.19,0.77l1.82,2.01l0.8,0.22l3.09,-1.8l1.67,-0.27l0.43,0.68l-0.05,2.91l0.91,1.07l5.31,2.08l1.24,0.18l1.83,-0.57l3.39,1.82l1.5,0.17l0.07,3.34l1.99,4.3l-0.12,1.33l-1.86,3.88l-0.49,3.43l0.29,0.99l0.91,0.89l0.33,2.06l-0.72,1.34l-4.94,4.42l-1.44,2.38l-1.2,0.77l-2.03,0.19l-1.15,1.26l1.57,5.72l-0.46,1.67l0.38,2.48l-1.82,2.61l1.75,4.25l-1.5,0.67l-0.73,1.47l1.29,2.02l-0.49,3.55l-0.56,0.43l-2.26,-1.0l-1.91,0.8l-2.86,-1.62l-2.4,-0.16l-1.47,1.08l-0.06,2.16l-4.1,0.61l-5.16,1.48l-3.4,2.11l-0.04,1.06l0.85,2.14l0.65,6.05l0.52,0.58l1.4,0.31l2.38,2.64l-1.18,1.58l-1.11,0.25l-3.31,-0.39l-1.76,1.34l0.01,4.56l-0.99,1.65l-1.45,1.2l-0.1,1.94l0.32,0.67l1.17,0.53l3.18,-0.12l0.62,0.56l-0.02,0.6l-3.03,3.69l-1.77,1.39l-1.05,2.42l-3.83,3.82l-2.02,3.83l-2.23,0.13l-3.0,-1.96l-1.25,-4.65l-0.76,-0.5l-1.96,0.49l-8.72,-7.79l-0.53,-1.49l0.52,-3.08l-1.0,-2.3l-1.31,-1.55l-3.74,-1.22l-2.3,1.27l-1.87,0.06l-1.84,1.23l-1.7,-0.94l-5.89,1.26l-4.06,-1.07l-2.83,1.75l-2.02,-1.31l-1.93,0.57l-1.65,-1.58l-1.7,-0.47l-2.67,1.16l-2.31,-2.73l-0.85,-0.27l-1.33,0.46l-10.67,-5.96l-1.21,-0.3l-3.22,1.65l-1.51,-0.11l-3.95,-1.77l-2.4,-0.3l-3.87,-2.52l-1.17,0.37l-4.19,2.87l-6.07,0.86l-5.63,-1.65l-2.68,-0.13l-1.23,-0.69l-1.92,-4.26l0.65,-1.73l1.33,-0.11l2.08,2.06l0.83,-0.1l0.64,-0.62l-3.78,-12.52l-0.28,-3.83l1.25,-3.73l1.48,-1.28l0.5,-2.05l-0.82,-1.35l-2.28,0.49l-0.41,-0.4l-0.95,-6.29l-0.19,-4.61l-0.73,-1.65l2.23,-1.68l0.99,-2.35l-0.65,-1.04l-2.51,0.53l-0.22,-0.4l2.39,-4.39l2.12,-1.89l0.01,-1.43l-2.65,-5.54l-0.9,-3.69l-0.99,-1.54l-10.08,-10.68l-8.41,-5.95l5.29,-6.11l1.4,-5.1l1.94,-2.64l1.82,-0.25l5.96,2.93l0.81,-0.01l0.76,-0.64l0.11,-0.93l-1.48,-0.85l1.03,-0.4l0.0,-0.71l-2.62,-0.79l-0.82,-0.64l-1.15,-2.42l-2.98,-1.84l0.59,-6.58l1.1,-2.22l1.45,0.5l1.69,2.07l1.45,0.86Z\", \"name\": \"Picardie\"}, \"FR-R\": {\"path\": \"M159.33,355.12l3.48,1.37l1.63,-0.37l1.05,-1.24l-0.51,-1.64l-2.19,-2.56l-1.31,0.37l-0.76,-1.85l-2.14,-1.46l4.22,-2.53l1.62,0.4l-0.17,0.63l0.46,0.56l0.62,0.01l2.59,-1.78l0.38,-0.83l-0.3,-0.51l-3.0,-0.46l0.4,-0.9l-1.08,-1.12l0.15,-0.29l0.85,-0.24l2.38,0.95l3.24,-0.44l1.69,-1.74l1.09,-2.16l0.9,-0.34l1.85,1.04l2.85,-1.06l0.43,1.96l1.46,0.17l1.57,-2.82l2.06,-1.45l0.7,-1.26l1.51,-6.06l-0.13,-2.35l0.37,-1.27l2.92,-1.86l4.49,-0.45l5.44,-2.36l3.78,0.9l7.4,-2.38l2.88,-1.99l1.19,-1.81l1.73,-1.42l6.3,-2.98l1.59,-1.35l3.54,0.18l1.17,1.69l1.86,1.01l6.14,1.05l0.46,-0.32l0.47,-2.56l1.14,-2.06l3.43,-11.71l1.86,-1.91l4.09,-0.67l1.9,-1.3l-0.07,-5.65l-1.76,-2.64l-0.72,-5.55l0.64,-1.01l0.08,-1.11l-0.82,-5.65l-1.09,-2.82l1.95,-4.7l-0.77,-9.71l0.2,-6.48l4.76,0.43l3.55,-1.28l2.13,0.91l2.3,-0.38l0.81,0.71l1.89,3.57l0.82,0.34l1.19,-0.5l1.19,1.17l1.0,0.24l0.9,-0.42l0.74,-1.58l3.15,-0.92l1.89,1.7l5.52,-1.26l4.33,-3.5l3.73,0.2l4.09,1.12l1.08,-0.16l1.35,-1.81l2.82,-0.48l1.45,-0.85l0.74,-3.06l3.95,1.77l-0.12,3.33l2.77,3.83l1.18,0.97l1.95,0.57l0.37,0.55l0.53,5.25l0.45,0.38l3.6,-0.44l3.37,0.54l0.62,-0.53l0.44,-1.66l2.46,-0.95l2.23,-2.97l2.43,-1.36l5.26,-1.25l1.64,0.21l3.55,1.96l0.36,1.32l-0.32,3.16l0.3,3.88l0.85,2.34l1.63,1.64l1.86,1.11l2.81,-0.09l0.42,2.94l1.13,0.72l5.31,1.49l2.3,0.09l0.95,-0.38l1.62,1.63l1.92,2.99l2.19,1.63l1.57,0.37l1.51,-0.42l2.96,2.24l3.08,0.45l0.65,0.56l-0.44,0.72l-4.23,2.59l-0.24,1.42l1.21,1.45l-2.68,0.61l-0.57,0.55l-0.1,1.17l0.83,1.97l0.51,0.58l1.5,0.41l-0.65,3.82l0.26,2.87l-3.53,3.56l-0.55,1.91l-0.06,4.04l-1.52,4.92l-3.08,2.56l-3.44,1.72l-1.46,1.52l-0.78,2.09l0.65,2.0l-0.17,0.62l-7.92,2.77l-1.92,1.83l-1.92,-0.98l-1.12,0.0l-1.12,1.41l0.38,3.03l-8.44,-1.96l-0.48,0.25l-1.7,4.99l0.46,4.18l-1.91,4.36l-1.02,3.62l0.2,3.31l-4.39,7.09l-1.46,6.25l-0.86,6.51l-2.82,-0.54l-1.49,0.51l-2.07,2.69l-0.9,2.69l-2.38,0.94l-1.52,2.38l-1.07,-0.35l-0.85,-2.37l-0.96,-0.86l-6.24,0.08l-6.53,0.82l-5.82,1.94l-2.05,-0.85l-2.11,0.54l-1.5,1.63l0.82,1.94l-0.15,0.56l-4.92,2.86l-3.83,0.38l-5.21,-0.79l-4.21,0.65l-4.15,-2.2l-0.95,-0.21l-0.85,0.56l-0.14,1.61l2.2,1.59l2.19,3.52l1.67,1.03l0.7,0.99l0.32,2.55l1.02,2.58l4.16,3.03l1.74,1.84l-0.58,3.56l3.83,7.56l0.57,3.61l1.44,2.56l0.8,5.73l-1.47,2.86l0.98,4.89l-0.6,3.34l0.25,1.39l0.84,0.79l1.02,-0.27l1.97,1.6l0.73,1.24l-0.76,0.95l-2.49,0.28l-2.24,2.31l-2.76,0.19l-3.6,1.94l-4.04,-2.58l-1.71,-0.32l-6.66,1.25l-0.47,-0.38l1.06,-2.14l-0.47,-0.96l-0.77,-0.27l-6.99,1.78l-1.16,0.81l-1.1,1.61l-0.75,-0.8l-2.98,-0.13l-2.27,1.38l-0.13,2.61l-1.01,-0.28l-2.41,-3.16l-1.56,-0.38l-4.08,-2.68l-3.46,1.01l-1.22,-0.06l-0.92,-3.81l-1.14,-1.89l-1.56,-1.05l-6.95,-0.9l0.24,-1.15l-0.99,-0.96l-3.37,-0.67l-1.97,-1.74l-2.48,-0.94l-1.08,-2.6l-1.03,-1.14l-0.29,0.39l0.29,3.11l-0.48,-0.67l-1.33,-6.38l0.25,-1.47l-1.08,-0.79l-1.14,-3.19l-2.54,-2.69l-0.73,-2.4l-0.93,-0.73l-1.98,-0.46l-2.24,-4.16l-3.47,-3.63l-4.08,-2.41l-0.4,-1.25l-0.3,-3.15l0.48,-2.6l1.48,-1.09l-0.14,-1.48l3.14,-2.32l2.48,-6.12l1.15,-1.1l-0.83,-3.24l-1.69,-2.12l-3.77,-2.13l-7.13,-1.29l-1.55,-0.86l1.58,-1.27l1.9,-0.27l0.8,-0.62l0.41,-3.39l-0.66,-1.54l-0.09,-2.2l0.59,-2.11l1.76,-1.21l5.58,-0.58l1.08,-0.58l1.01,0.99l3.14,0.84l1.05,-0.01l0.3,-0.59l0.79,0.35l-0.66,0.4l0.16,0.99l2.51,1.85l2.63,0.56l1.97,1.88l1.56,0.67l3.3,0.11l0.39,-0.28l-0.16,-0.45l-1.38,-0.89l-2.42,-0.49l-2.84,-3.02l-4.32,-3.12l-2.79,-0.61l-1.38,-1.08l-2.33,-0.68l-8.78,0.62l-2.05,1.31l-1.5,2.27l-1.74,0.51l-2.55,1.88l-2.02,-0.42l-2.32,-2.48l-1.23,-0.72l-2.19,0.01l-0.77,0.67l-0.33,1.16l-1.37,-0.05l-5.21,-2.75ZM161.53,352.23l0.02,0.22l-0.01,0.03l-0.01,-0.25ZM179.98,384.58l2.69,1.71l0.24,3.45l-2.72,-4.38l-1.55,-1.07l-1.76,0.67l-2.31,-5.31l2.69,-0.15l2.02,0.82l-0.04,3.28l0.73,0.97ZM174.46,408.5l-5.04,-0.12l-0.52,-1.22l0.28,-0.47l1.96,0.03l3.33,1.78Z\", \"name\": \"Pays de la Loire\"}, \"FR-Q\": {\"path\": \"M332.9,158.69l6.89,-1.58l2.91,-1.51l1.24,-1.12l0.98,-1.92l-0.5,-0.06l-4.28,2.71l-4.92,0.71l-4.97,-0.68l-4.35,-1.49l-2.38,-0.1l-2.41,-1.09l-0.64,-1.32l-0.89,-0.7l-0.08,-1.52l3.31,-6.43l2.43,-8.25l3.76,-3.37l9.31,-4.37l0.72,-0.96l12.1,-6.86l4.67,-1.72l5.33,0.05l25.22,-8.17l3.14,-1.84l2.42,-2.69l6.59,-5.33l8.5,6.01l10.86,11.89l0.91,3.72l2.45,4.84l0.22,1.44l-1.52,1.12l-2.69,4.2l-0.4,1.36l0.43,1.11l2.54,-0.51l0.41,0.47l-0.85,1.71l-1.94,1.29l-0.46,0.93l0.75,1.65l0.19,4.64l0.98,6.42l0.79,0.93l2.02,-0.54l0.65,0.67l-0.42,1.66l-1.48,1.3l-1.33,4.06l0.3,4.0l1.76,6.68l2.0,5.43l-0.91,-0.04l-2.02,-2.05l-1.77,0.59l-0.91,1.59l0.39,1.87l-1.79,3.67l-2.91,9.97l-2.18,1.2l-7.74,1.86l-0.76,0.66l-0.16,1.1l0.7,1.83l-0.24,2.67l0.55,0.81l1.69,0.52l0.22,2.8l-2.21,1.38l-0.43,0.69l0.17,4.37l-4.78,3.64l-2.29,4.63l-4.55,2.6l-2.17,-0.61l-3.37,0.05l-2.24,-1.76l-1.28,-0.18l-0.85,2.44l-3.46,0.4l-2.42,2.79l-1.92,0.05l-5.91,1.71l-3.36,3.01l-2.53,-1.09l-1.25,-1.85l-1.03,-0.59l1.3,-2.03l0.53,-1.75l-1.15,-2.68l-5.07,-2.64l-2.77,-3.91l-0.96,-2.7l-0.76,-0.47l-0.91,0.07l-2.14,0.91l-4.67,-1.31l-2.06,0.04l-1.24,-0.93l-0.56,-1.6l1.86,-4.24l0.26,-4.8l-0.84,-1.66l-2.12,-1.82l-0.51,-1.68l0.36,-0.48l1.58,0.07l0.58,-0.6l-0.4,-2.84l0.87,-2.36l-2.39,-6.22l-2.48,-2.67l-0.47,-1.16l0.07,-0.8l2.05,-1.15l0.4,-0.97l-0.8,-1.37l-2.45,-0.66l-1.13,-2.15l-0.07,-7.4l-0.52,-3.66Z\", \"name\": \"Haute-Normandie\"}, \"FR-P\": {\"path\": \"M214.99,137.14l0.18,0.84l0.65,0.44l2.27,-1.3l2.86,0.6l1.15,-0.55l3.33,-3.68l2.72,-0.85l8.57,1.4l2.05,6.3l-1.51,1.19l-0.5,1.9l-1.27,0.05l-1.1,0.8l-0.37,2.64l2.8,6.22l4.64,5.87l0.55,1.32l0.2,1.95l-0.76,2.38l0.17,1.2l0.45,0.31l1.68,-0.58l1.69,1.54l1.8,-0.68l-0.6,-1.64l0.36,-1.02l1.82,-1.43l7.91,0.41l7.31,2.79l10.45,0.64l4.16,0.94l2.33,-1.2l4.07,1.49l4.1,0.0l2.92,1.66l3.02,0.71l5.68,3.46l1.96,-1.4l9.71,-2.31l2.94,-1.39l1.7,-1.49l2.0,-0.88l1.51,-2.34l3.95,-2.86l7.6,-1.61l0.49,3.39l0.1,7.63l1.29,2.43l2.54,0.76l0.49,0.77l-2.28,1.6l-0.21,1.47l0.6,1.45l2.44,2.6l2.28,5.85l-0.86,2.2l0.42,2.72l-1.99,0.13l-0.56,1.1l0.64,2.13l2.17,1.9l0.68,1.29l-0.25,4.48l-1.86,4.23l0.32,1.77l2.0,1.74l2.16,-0.02l4.65,1.31l3.13,-0.95l1.14,2.77l2.9,4.06l4.98,2.53l1.01,2.12l-0.45,1.48l-1.35,1.7l0.09,1.19l1.13,0.68l1.33,1.92l2.72,1.19l0.4,4.01l1.71,3.52l2.68,2.06l3.46,4.11l-0.14,4.2l1.87,3.22l-1.76,3.61l-3.22,2.91l-4.1,1.74l-2.34,0.49l-0.88,1.3l0.01,1.94l1.15,1.42l-0.05,3.37l1.85,3.96l-0.49,1.01l-2.58,1.16l-1.08,-0.28l-1.99,-1.47l-1.87,-2.92l-1.91,-1.87l-3.52,0.23l-5.13,-1.45l-0.73,-0.48l-0.06,-2.04l-0.54,-1.05l-3.09,-0.03l-2.45,-1.69l-1.03,-1.88l-0.5,-2.08l0.27,-5.72l-0.44,-1.65l-1.37,-1.15l-2.61,-1.2l-2.06,-0.26l-5.55,1.36l-3.07,1.89l-1.67,2.5l-2.54,1.01l-0.71,1.97l-2.52,-0.54l-3.9,0.38l-0.6,-5.14l-0.77,-0.94l-1.87,-0.51l-3.03,-3.26l-0.67,-1.98l0.49,-1.72l-0.31,-0.87l-0.73,-0.7l-3.82,-1.5l-1.02,0.53l-0.38,2.76l-1.15,0.67l-1.4,-0.02l-1.64,0.61l-1.19,1.71l-4.76,-1.0l-4.0,-0.19l-1.21,0.52l-3.19,3.0l-5.16,1.23l-1.16,-1.53l-1.0,-0.16l-3.53,1.09l-0.49,1.25l-0.8,0.58l-1.65,-1.34l-1.86,0.27l-1.74,-3.41l-1.09,-0.98l-2.47,0.33l-2.39,-0.93l-3.56,1.29l-1.98,0.01l-3.0,-0.5l-2.56,-1.58l-7.86,-1.97l-1.44,0.27l-2.22,2.84l-1.99,0.84l-2.78,2.25l-1.64,0.62l-2.05,-0.19l-2.56,-2.12l-2.22,-3.7l-3.57,-9.83l4.9,0.6l6.6,-1.46l2.13,0.81l0.48,-0.58l-1.12,-1.75l-1.51,-0.75l-2.35,-0.22l-0.46,0.49l-0.69,-1.54l-2.87,-1.13l-0.87,-2.78l-2.18,-1.95l-0.81,-6.94l-0.74,-1.46l-1.43,-0.51l1.47,-1.47l0.93,-5.59l0.93,-0.14l0.34,-1.06l0.01,-1.15l-1.22,-1.12l0.99,-6.46l0.49,-0.27l1.31,0.63l0.57,-0.36l-0.23,-0.94l-1.35,-0.61l-1.38,-0.0l-1.35,0.72l-0.57,1.39l-0.56,-1.54l0.44,-4.02l-1.17,-1.07l0.74,-3.19l1.49,-1.28l0.02,-0.64l-0.75,-0.59l-0.58,0.07l-1.02,-5.86l0.32,-0.6l0.82,-0.06l2.14,0.64l0.51,-0.96l-3.27,-1.56l-1.31,-0.03l-0.68,1.34l-1.42,-3.88l-0.76,-0.97l0.56,-1.03l-2.39,-2.31l-0.28,-0.89l0.71,0.0l0.4,-0.98l-0.83,-2.08l-1.21,0.04l-0.35,1.13l-3.03,-2.54l0.35,-0.91l-0.45,-0.57l-2.12,0.62l-0.37,-0.41l-0.17,-6.36l-1.53,-4.02l-2.42,-3.36l0.31,-1.05l1.64,-1.52l0.49,-1.1l0.27,-4.81l-1.91,-4.1l-4.51,-1.52l0.31,-3.35l0.15,-0.42l1.31,-0.17l2.44,1.27l1.77,-0.22l0.58,0.41l0.76,1.81l6.68,1.09l5.28,1.54Z\", \"name\": \"Basse-Normandie\"}, \"FR-V\": {\"path\": \"M577.54,558.52l1.13,-1.7l2.95,-0.62l0.73,-0.78l0.01,-0.76l-1.21,-1.89l2.17,-2.86l-0.85,-2.52l1.25,0.25l1.39,1.3l0.95,-0.03l0.44,-0.46l0.63,-3.28l1.73,-3.83l0.14,-2.57l-3.03,-2.98l-1.46,-0.86l-3.05,-0.65l-0.86,-2.34l0.79,-2.28l-0.44,-2.07l-1.27,-2.3l-1.56,-1.14l-2.5,1.77l-4.05,-1.27l-2.37,0.02l-0.65,0.37l-0.27,1.34l-0.61,0.71l-5.69,1.09l-2.45,0.1l-1.61,-1.91l-0.74,-0.24l-2.31,0.78l-1.44,1.29l-0.39,-0.27l0.38,-3.55l0.72,-1.52l2.81,-3.4l0.96,-2.65l-0.08,-1.57l-2.54,-6.44l-7.56,-6.95l-3.14,-7.29l-0.58,-1.04l-1.05,-0.73l-1.72,-3.15l0.87,-2.94l0.0,-2.45l1.19,-3.57l-0.56,-1.55l-2.48,-2.25l-0.15,-1.57l2.19,-1.2l4.84,-1.21l1.42,-1.69l-1.6,-9.69l0.16,-4.56l-0.45,-3.7l-1.16,-2.08l2.64,-2.38l4.09,-1.47l0.57,1.8l0.05,3.57l3.01,1.44l2.23,1.78l1.87,0.08l4.04,-1.44l4.13,1.07l3.0,-0.75l5.98,1.52l2.67,-0.91l1.66,-1.39l1.81,-2.47l1.71,-5.94l5.05,1.65l1.26,-0.14l1.91,-1.07l1.54,1.89l0.95,0.43l1.71,-0.63l0.56,-2.27l0.54,-0.33l1.79,0.79l0.27,2.31l1.62,1.25l-0.07,1.91l1.17,3.41l1.38,1.13l3.59,0.46l0.44,-0.49l-0.22,-1.31l1.29,-5.46l3.52,-7.69l0.17,-2.29l1.46,-2.92l0.86,-4.91l1.47,-4.41l1.74,-0.43l4.3,1.59l6.91,-1.8l1.23,0.45l2.16,2.29l1.64,0.99l4.13,1.15l0.02,2.85l0.6,1.21l2.67,1.52l0.72,2.76l1.08,1.28l2.12,0.75l0.91,1.26l1.74,0.42l-0.07,3.67l0.89,1.08l1.8,0.55l2.96,-1.73l1.13,-1.38l1.49,-0.44l0.55,-1.34l2.37,-2.33l2.81,2.54l0.94,2.91l0.68,0.62l7.35,0.58l2.12,-0.42l5.09,-4.67l1.05,-1.93l5.28,-6.19l2.65,1.63l1.51,2.12l0.07,0.8l-2.16,5.1l-0.59,4.66l-2.7,0.24l-5.44,3.05l-0.18,1.33l1.64,2.48l-1.42,3.32l0.1,0.46l0.47,0.04l1.43,-0.85l2.68,-0.64l2.66,-0.1l2.34,0.88l2.11,-1.12l3.09,-3.63l3.87,-2.57l1.66,-1.74l-0.22,-2.38l-0.68,-0.49l-1.54,0.2l-1.56,-4.29l0.28,-1.03l2.97,-3.98l1.9,-1.65l5.79,-1.18l5.28,-3.61l3.8,-0.75l3.99,0.13l9.83,2.73l0.57,2.22l-0.39,1.33l-1.64,1.97l-0.29,1.35l4.63,6.56l-2.1,4.09l-1.62,6.47l0.82,1.73l4.77,1.06l0.72,0.7l-1.2,2.05l0.09,3.39l1.46,0.83l1.47,-0.98l1.16,0.51l4.33,4.81l1.89,5.56l-1.27,1.15l-1.71,3.64l-1.15,0.98l-2.52,1.03l-3.09,-0.25l-0.82,1.13l-1.53,0.22l-1.23,0.76l-1.18,2.94l0.81,6.86l1.3,2.01l1.74,1.34l2.44,0.65l2.19,1.98l2.65,0.97l0.3,1.05l-0.99,2.84l1.04,2.41l0.82,4.94l5.54,3.72l1.57,3.06l3.74,2.02l-0.56,2.06l-1.24,2.23l-2.31,2.9l0.9,5.66l-1.61,1.39l-1.32,2.28l-1.59,-1.17l-4.51,1.69l-2.67,3.37l-2.44,0.36l-0.53,0.95l0.54,1.29l-1.67,0.81l-4.36,-1.96l-2.4,-0.33l-2.04,1.37l-2.2,0.18l-2.35,1.4l-1.9,0.25l-2.21,1.37l-3.09,0.38l-1.1,2.73l-1.35,1.28l-4.31,-1.37l-0.85,-2.11l-1.43,-1.15l-4.05,-0.47l-2.0,-0.92l-1.73,2.35l-1.05,7.36l0.5,1.15l1.24,0.48l3.7,-0.49l0.92,0.52l0.57,3.86l1.74,2.27l0.33,1.22l-0.61,4.28l-3.5,-0.91l-3.79,1.12l-1.71,-0.17l-1.86,0.4l-2.28,-0.45l-3.93,2.43l-0.96,0.15l-1.73,-0.51l-2.31,1.07l-1.85,1.95l0.22,2.15l-0.7,0.78l-2.31,0.76l-3.67,0.24l-1.04,0.44l-2.06,3.3l0.34,1.16l0.66,0.57l0.03,0.8l-1.64,1.96l-4.51,1.38l-3.09,-0.33l-1.24,0.57l-0.43,2.12l-2.53,4.36l-0.13,1.03l0.82,1.67l2.0,1.59l0.3,1.19l-0.35,0.4l-3.17,2.06l-4.22,-1.45l-3.37,-0.14l-0.62,0.69l0.08,1.88l0.61,1.21l1.24,0.94l0.01,0.76l-0.96,0.2l-2.31,-0.49l-1.08,0.67l-0.06,0.69l1.42,2.05l0.6,2.21l2.38,2.0l4.28,1.63l3.68,-0.03l-0.29,2.16l1.55,1.98l2.11,1.66l-0.14,5.36l-0.66,1.27l0.11,2.2l-0.72,-0.19l-0.64,-1.49l-0.8,-0.61l-1.78,-0.33l-0.98,0.33l-3.26,3.61l-1.72,1.08l-1.92,-0.24l-4.26,-3.15l-0.76,-2.43l-1.0,-1.29l-2.12,-0.29l-4.34,-1.59l-2.82,0.24l-2.59,-0.75l-0.69,-0.91l-0.1,-1.73l0.78,-2.48l-0.27,-0.96l-0.64,-0.32l-2.48,1.62l-4.47,-0.6l-4.29,1.23l-3.5,1.68l-2.77,0.47l-2.97,1.71l-1.0,-0.81l-1.76,-4.71l-2.57,-2.12l-5.4,-0.04l-0.34,0.4l0.02,3.33l-3.84,-1.44l-2.02,-2.17l-1.97,-0.95l-3.59,0.04l-1.21,1.05l-0.35,2.12l-1.28,0.72l-1.21,-1.17l0.27,-1.59l-0.3,-0.9l-1.64,-0.53l-2.48,0.8l-4.93,4.14l-1.15,-0.26l-4.88,-2.73l-1.25,-1.27l-4.77,0.6l-0.67,-3.95l0.83,-1.5l-0.02,-0.94l-1.75,-3.22l-1.71,-1.62l-2.22,-7.91l-0.89,-1.68l-1.34,-0.98l-0.57,-1.14l-2.47,-9.83l0.05,-3.19l1.28,-0.66l3.25,-5.15l3.93,-1.45l1.08,-2.5l2.25,0.14l4.33,-0.77l1.52,-0.72l2.01,-3.11l1.34,-3.78l2.05,0.03l2.96,-1.44l0.14,-1.37l-0.57,-1.17Z\", \"name\": \"Rh\\u00f4ne-Alpes\"}, \"FR-U\": {\"path\": \"M574.87,687.21l0.93,-0.2l1.37,-1.17l2.17,-0.62l3.45,-2.78l1.64,-0.56l0.58,-1.53l2.47,-0.8l0.7,-1.71l-0.08,-0.86l-1.96,-0.76l1.31,-3.14l1.5,-2.17l1.28,-1.04l2.0,-0.58l3.71,1.5l1.05,-0.34l0.63,-1.7l-0.04,-2.04l1.97,-5.56l-0.49,-5.4l5.09,-3.8l2.75,-1.29l1.8,-1.44l1.32,-1.83l0.02,-2.5l1.18,0.08l0.47,-0.47l-0.22,-2.0l-4.15,-5.4l-1.29,-0.64l-1.82,0.34l-0.38,-2.86l0.14,-5.62l-0.49,-1.01l-1.47,-1.27l-0.09,-1.78l-1.29,-1.87l-0.55,-1.92l-0.02,-3.45l3.17,-0.16l2.41,0.71l1.59,1.91l1.69,4.56l1.31,0.73l1.11,-0.23l2.24,-1.53l2.77,-0.47l3.47,-1.66l4.06,-1.19l4.59,0.58l2.3,-1.59l-0.59,4.2l0.31,1.29l0.75,0.74l2.97,0.91l2.82,-0.24l4.21,1.56l1.95,0.22l1.6,3.6l4.52,3.32l2.54,0.25l1.96,-1.25l2.53,-2.91l1.3,-0.83l1.79,0.61l1.16,1.94l1.5,-0.22l0.3,-0.71l-0.24,-1.95l0.64,-1.16l0.14,-5.63l-0.51,-0.94l-1.46,-0.83l-1.76,-2.12l0.47,-1.58l-0.28,-0.73l-1.34,-0.42l-2.8,0.18l-3.97,-1.49l-2.21,-1.82l-0.51,-2.03l-1.35,-2.11l0.84,-0.21l2.34,0.52l1.25,-0.94l-0.17,-1.28l-1.58,-1.43l-0.11,-2.1l2.93,0.17l4.35,1.46l3.77,-2.3l0.59,-0.85l-0.11,-1.12l-2.4,-2.31l-0.62,-1.16l0.35,-1.25l1.84,-2.83l0.75,-2.92l1.26,-0.29l2.5,0.37l4.91,-1.54l1.89,-2.26l-0.01,-1.45l-0.96,-1.2l1.82,-2.93l4.32,-0.49l2.61,-0.88l1.03,-1.28l-0.23,-2.07l1.53,-1.53l1.91,-0.93l1.61,0.51l1.32,-0.2l3.71,-2.38l2.19,0.45l1.92,-0.4l1.7,0.17l3.73,-1.12l2.72,0.87l1.35,-0.15l0.59,-1.09l0.28,-3.9l-0.45,-1.56l-1.68,-2.16l-0.61,-3.95l-1.52,-0.92l-3.62,0.51l-0.92,-0.34l-0.22,-0.7l1.04,-6.98l1.31,-1.74l1.48,0.88l3.89,0.41l1.09,0.86l0.99,2.27l4.35,1.6l1.6,-0.52l0.96,-1.21l0.86,-2.45l2.86,-0.27l2.82,-1.47l-0.7,1.39l2.04,2.5l0.17,1.96l0.79,1.4l0.95,0.75l2.03,0.19l1.39,1.01l0.36,2.28l-0.12,4.81l1.21,2.12l2.07,1.79l4.22,2.47l1.45,0.34l3.9,-0.51l2.94,1.21l1.21,1.46l-0.4,2.94l1.26,4.71l2.05,4.15l-3.89,-0.64l-1.71,0.92l-1.21,1.55l-0.44,1.75l0.6,1.79l-2.78,4.17l-3.06,2.36l-0.81,1.5l0.24,2.84l1.44,2.48l3.05,2.97l-1.55,0.86l-0.58,0.89l-0.72,3.38l0.23,1.34l1.65,2.09l1.59,3.28l2.28,2.06l1.49,3.1l1.17,0.47l2.84,-0.23l6.04,2.82l6.53,4.03l3.45,1.03l0.74,1.29l1.35,0.81l2.67,0.05l10.62,-3.07l1.73,-0.14l2.57,-1.63l1.3,0.23l-0.69,2.63l3.02,4.93l-0.1,1.25l-2.23,2.37l-1.34,3.85l-4.53,4.22l-4.86,6.7l0.27,2.46l1.14,3.82l-1.51,0.75l0.03,1.48l-1.7,-0.1l-0.97,0.71l-1.41,-0.64l-1.19,0.48l-1.06,1.13l-0.22,1.06l-0.98,0.35l-0.58,0.84l-0.31,1.71l-0.5,-0.98l-2.92,0.38l-1.71,-0.36l-2.45,2.86l-3.22,1.11l-1.83,2.68l-0.22,5.57l-0.96,-1.19l-4.58,1.7l-1.67,-0.48l-1.99,1.38l-1.83,2.19l-0.11,1.7l-2.19,3.82l-1.0,0.46l-0.34,1.41l-1.53,-0.68l-0.75,1.23l-2.74,0.13l-1.41,-0.36l-1.12,-0.9l-1.35,0.91l-1.64,5.55l-2.54,1.66l-1.32,2.57l-1.34,0.25l-2.76,1.91l-0.14,0.72l0.63,0.59l5.73,-0.25l-1.35,3.12l0.75,1.48l-2.7,2.29l0.14,1.18l-1.73,0.5l-0.53,-1.56l-0.76,-0.69l-1.81,-0.24l-3.25,2.47l-2.79,-0.02l-2.6,1.15l-2.06,0.22l-1.24,1.79l-0.26,2.05l0.55,1.17l-1.84,-0.07l-0.67,-1.89l-2.37,-0.88l-5.49,-0.09l-1.5,0.92l-0.58,1.36l-0.77,3.19l1.27,1.03l-0.29,0.08l-3.0,-0.04l0.69,-0.55l0.38,-1.5l-0.01,-0.85l-0.72,-0.71l-4.52,-0.32l-1.6,-1.09l-1.79,-0.44l-2.89,0.36l0.22,-0.91l-0.36,-0.55l-2.09,0.25l-1.86,0.94l0.03,0.73l0.94,0.38l1.44,1.54l-1.81,-0.16l-0.75,0.82l-0.27,1.13l-1.58,0.16l-2.87,-1.24l-0.72,-1.17l2.19,-1.47l0.08,-0.66l-2.33,-0.8l-0.34,-1.24l-3.13,-0.79l-1.99,-1.13l0.09,-1.62l-1.18,-0.64l-3.34,-0.18l-1.13,1.08l-1.41,-0.78l-2.55,-2.77l-2.63,1.35l-1.08,-0.86l-1.56,-0.2l-2.45,0.41l-3.13,-0.51l-0.32,-0.6l1.31,-4.17l-1.25,-1.28l0.0,-4.27l-1.9,-1.52l-8.41,1.8l-2.62,-0.39l-4.77,0.42l-1.35,-0.38l-1.46,-1.52l-0.28,-1.66l0.74,-1.48l1.69,-0.96l5.35,0.0l1.81,-0.54l2.62,-2.62l0.88,-2.19l-0.22,-2.0l-0.62,-0.29l-3.33,1.74l-1.32,-0.23l-1.17,-1.37l-0.82,-2.49l-1.53,-0.59l-1.81,-0.01l-1.46,-1.66l-1.01,0.75l-0.82,3.13l0.41,1.77l2.15,1.84l0.66,1.88l-0.59,1.64l-1.18,0.85l-1.36,-0.38l-1.25,0.37l-3.56,-1.87l-4.38,2.16l-0.57,1.68l1.06,1.53l-4.07,-1.87l-1.98,-1.87l-0.88,-2.07l0.15,-4.92l-0.55,-2.79l-1.54,-2.82l-1.19,-0.75l-0.61,0.34l2.09,4.38l0.0,6.0l0.87,2.95l4.7,4.42l-1.55,0.62l-8.87,-0.42l-3.75,-1.35l1.08,-3.49l-0.09,-1.61l-1.93,-1.66l-2.76,-0.56l-17.15,-0.57l0.63,-1.78ZM692.51,728.8l2.08,-0.1l1.79,-1.04l-0.59,1.43l-1.43,0.59l-1.85,-0.88Z\", \"name\": \"Provence-Alpes-C\\u00f4te-d'Azur\"}, \"FR-T\": {\"path\": \"M271.45,530.28l-2.81,-8.67l-2.61,-4.67l-2.87,-3.32l-8.68,-6.35l-0.48,-2.03l-2.47,-1.18l-3.22,-3.23l-4.03,-1.65l-2.77,-2.75l-2.36,0.38l-0.69,-0.28l1.0,-6.7l3.72,-1.14l0.95,0.04l5.24,5.68l4.4,2.08l0.49,-0.12l-1.39,-2.06l-5.53,-4.49l-1.52,-1.83l-1.41,-4.95l2.09,-2.25l2.54,-0.99l0.19,-2.07l-1.02,-2.06l0.95,-0.95l-0.03,-0.64l-0.93,-0.62l-1.13,-2.83l1.87,0.28l0.91,-0.87l0.64,-2.43l-1.09,-1.21l-1.09,-0.42l-0.73,-3.77l-1.94,-1.35l0.62,-0.63l-0.04,-0.6l-1.99,-1.27l-0.3,-1.28l-2.85,-0.24l-0.4,-0.43l0.28,-1.22l1.23,-1.42l-0.3,-1.55l0.55,-0.95l4.29,-2.76l0.47,-2.04l-0.89,-2.74l1.19,-1.81l0.85,-0.59l6.68,-1.71l0.37,0.88l-1.0,1.8l0.98,1.01l6.86,-1.21l1.45,0.24l4.45,2.68l3.79,-1.99l2.86,-0.22l2.34,-2.36l2.77,-0.39l0.84,-1.39l-0.94,-1.89l-2.15,-1.76l-1.5,-0.07l-0.21,-1.11l0.59,-3.44l-0.97,-4.74l1.47,-2.94l-0.66,-5.25l-1.62,-3.29l-0.6,-3.69l-3.79,-7.46l0.75,-3.16l-2.17,-2.63l-3.53,-2.24l-0.99,-1.52l-0.81,-4.19l-0.91,-1.23l-1.53,-0.9l-1.4,-2.56l-2.91,-2.52l0.1,-0.55l0.21,-0.32l1.3,0.36l3.75,2.03l4.31,-0.65l5.13,0.79l4.0,-0.39l5.4,-3.12l0.33,-1.24l-0.82,-1.61l1.02,-1.05l1.7,-0.48l2.15,0.86l5.98,-1.96l6.44,-0.81l5.85,-0.14l0.57,0.49l1.0,2.58l1.72,0.64l1.96,-2.63l2.5,-1.06l1.0,-2.85l1.9,-2.43l0.88,-0.29l2.95,0.57l1.47,2.73l0.63,0.42l2.13,-0.72l0.15,1.85l0.54,0.6l2.69,-0.3l-0.15,3.06l0.72,1.15l1.19,0.08l2.48,-0.71l1.02,1.52l1.83,0.3l-0.33,6.6l0.35,1.46l1.23,1.26l1.42,0.33l2.6,-0.29l2.93,0.52l2.97,-1.6l5.5,-0.39l0.79,-0.5l0.18,-0.78l-0.87,-3.01l5.61,3.22l1.18,1.91l1.3,3.91l7.23,10.81l2.64,2.14l1.68,2.25l0.85,2.58l-0.6,4.95l1.1,3.58l2.32,2.34l3.29,1.47l0.86,2.36l0.9,0.38l3.79,0.0l1.48,0.77l1.11,1.91l-0.35,3.38l3.09,3.07l-0.95,3.2l-3.27,1.89l-2.6,0.1l-2.04,1.05l-3.04,4.21l-0.65,1.99l-1.03,0.41l-4.11,0.08l-4.24,3.77l-2.5,0.99l-0.26,0.92l1.66,3.57l0.57,3.26l-0.22,0.45l-1.22,-0.2l-0.45,0.49l0.66,2.96l0.13,3.44l2.53,3.8l0.66,0.34l1.47,-0.47l0.47,0.3l1.88,4.19l-2.69,2.56l-4.13,1.08l-1.6,10.63l-0.51,0.64l-1.07,0.02l-1.7,-0.88l-1.2,0.57l-0.97,2.02l-2.34,2.24l-1.38,3.44l-2.13,2.02l-2.19,3.42l-2.35,0.63l-0.56,0.54l-0.83,5.92l-4.27,6.78l-2.66,0.72l-6.76,5.16l-1.57,5.07l0.01,4.69l-0.39,1.54l-1.67,1.69l-2.94,1.51l-0.88,2.21l-0.93,0.99l-0.86,0.27l-2.69,-0.71l-5.19,2.71l-0.9,1.67l0.68,2.02l-1.87,2.55l-1.42,0.63l-1.56,-0.59l-1.12,0.12l-4.17,1.4l-3.88,-1.36l-2.34,-2.22l-3.73,-2.02l-3.34,0.02l-1.53,-2.85l0.02,-3.54l-0.59,-1.54l-3.56,-2.77l-2.5,-0.17l-1.78,-0.65l-0.73,-2.81l-0.91,-1.29l-1.48,0.13l-1.55,2.08l-4.47,-0.23ZM235.39,471.39l1.12,0.47l1.32,-0.32l0.65,0.67l0.16,2.78l0.68,0.81l-0.18,1.5l2.75,2.32l-0.4,4.24l-1.29,3.28l-0.6,-0.27l-2.09,-5.44l-4.91,-5.03l-2.18,-3.04l0.35,-1.79l-1.76,-4.48l3.1,1.19l3.28,3.12ZM224.11,449.31l-0.1,0.43l-1.94,-0.57l-0.37,0.6l1.07,1.87l1.97,0.16l1.96,-0.83l0.22,0.89l1.02,0.5l6.19,1.02l1.31,0.85l1.55,2.35l-0.99,0.4l-3.29,-0.85l-5.86,-3.81l-3.61,0.58l-0.75,-0.3l-2.99,-3.22l3.14,-0.84l1.45,0.78Z\", \"name\": \"Poitou-Charentes\"}, \"FR-GF\": {\"path\": \"M10.97,616.5l0.03,-0.01l1.04,0.32l0.16,0.01l0.86,-0.15l0.51,-0.46l0.86,-2.17l2.19,-0.54l1.74,-1.7l0.64,-0.95l2.47,-5.67l2.47,-3.35l0.8,-2.07l0.46,-0.34l0.06,-0.66l-0.55,-0.48l-0.0,-0.31l0.65,-1.16l0.29,-1.23l-0.01,-0.47l-0.64,-0.76l0.44,-0.66l-0.5,-1.65l0.23,-0.35l-0.0,-1.56l-0.44,-0.68l-0.47,-0.14l0.86,-1.73l2.07,-2.82l1.19,-0.89l0.84,-2.29l1.16,-1.21l0.63,-1.48l-0.08,-2.68l0.58,-2.69l-0.24,-0.63l-0.99,-0.81l-0.94,0.15l-0.73,-1.11l-0.67,-2.34l-1.1,-1.52l-2.15,-0.96l-0.85,-1.38l-0.93,-0.69l-0.78,-1.45l-0.91,-0.92l-0.6,-1.53l-1.42,-1.5l-0.04,-0.68l0.68,-2.17l-0.13,-0.85l-0.5,-0.52l-1.21,-0.36l-0.61,-0.56l-0.08,-0.33l0.53,-1.13l-0.01,-1.08l-0.33,-1.55l-1.0,-2.09l-0.56,-3.54l0.08,-0.72l0.82,-1.84l0.01,-1.55l-0.48,-1.52l0.02,-2.19l-0.4,-0.62l-0.93,-0.5l-0.06,-0.26l0.0,-4.13l-0.26,-0.76l1.19,-1.15l-0.22,-1.91l0.25,-0.92l2.4,-2.98l0.33,-0.79l0.74,-0.61l0.47,-1.45l0.64,-0.92l1.37,-1.42l3.33,-2.65l1.1,-0.4l1.1,-0.77l1.58,-1.93l1.86,-4.22l0.22,-3.73l0.39,-1.24l0.71,-0.96l2.31,-1.42l1.79,0.34l0.48,0.18l0.59,0.84l1.69,0.74l1.43,1.2l5.31,2.1l2.31,1.83l3.75,0.97l3.15,-0.21l1.42,1.68l1.12,-0.16l0.56,-0.62l0.3,0.04l4.38,2.03l1.36,0.3l0.42,-0.63l1.85,0.29l0.74,0.42l1.3,1.07l2.72,4.12l3.75,2.79l5.06,4.62l0.02,0.49l0.31,0.28l0.66,-0.01l0.76,0.42l2.53,2.16l0.64,1.06l-0.27,1.23l0.6,0.42l0.73,-0.49l0.79,-1.11l0.49,-0.18l1.21,0.54l0.54,0.96l-2.76,4.28l0.03,1.47l0.4,0.37l0.6,-0.32l0.54,-0.93l0.57,-1.95l1.79,-1.31l0.32,-0.47l0.86,0.63l1.21,1.89l2.17,1.25l2.26,2.11l0.9,1.31l1.5,6.51l-0.33,1.34l-1.91,1.37l-0.89,1.13l-0.01,0.47l0.45,0.15l2.11,-0.67l1.15,-0.61l0.64,-0.84l0.53,-2.05l-0.28,-4.87l0.18,-1.1l0.47,-0.86l1.05,-0.2l1.97,1.64l-0.0,0.75l1.13,1.9l0.28,1.83l0.66,0.89l-0.25,0.37l0.26,0.94l0.51,0.66l1.03,0.2l-0.69,0.86l-0.09,1.41l1.58,2.66l0.57,1.61l-0.06,2.16l-0.64,2.0l-0.29,0.57l-2.42,1.18l-1.04,0.92l-0.79,2.17l-0.92,1.57l-2.1,2.32l-1.35,0.82l-0.13,1.42l-0.89,0.24l-0.67,0.68l-0.88,2.96l-1.99,3.34l-0.78,0.63l0.04,0.74l-4.48,7.35l-0.56,0.42l-1.12,0.12l-0.77,0.72l-0.64,1.51l-1.27,1.01l-0.24,0.8l0.31,2.33l-2.32,4.42l0.33,0.96l-0.82,0.4l-0.56,0.65l-2.67,5.99l-0.28,1.19l-1.09,0.6l-0.07,0.39l0.69,1.25l0.05,0.53l-2.13,3.57l-1.21,1.07l-0.79,1.45l-0.92,0.95l-3.72,2.24l-1.52,0.63l-0.69,0.59l-0.84,1.79l-0.27,0.23l-0.79,0.05l-0.55,0.6l-0.56,0.05l-2.57,-0.42l-0.95,-0.79l-0.97,-0.34l-5.09,0.79l1.4,-1.11l-0.13,-0.66l-2.09,-1.75l-0.88,-1.21l-0.87,-0.45l-0.43,0.08l-1.44,1.65l-1.23,0.47l-1.2,0.89l-2.14,0.34l-1.52,-0.76l-2.22,-0.27l-2.22,-0.96l-0.87,-0.06l0.28,-0.61l-0.05,-0.6l-0.6,-0.69l-0.75,-0.14l-1.33,0.55l-1.04,1.47l-1.27,0.26l-0.97,1.22l-1.24,-0.04l-0.48,1.63l-0.46,0.33l-1.37,0.49l-0.6,0.49l-0.71,-0.33l-1.15,0.23l-0.87,2.01l-0.28,0.3l-0.57,0.09l-0.5,-0.25l-1.22,-1.44l-0.92,-0.01l-1.74,0.44l-1.6,-0.21l-2.03,-1.41l-3.41,-0.59l-1.86,-1.51l0.34,-0.7l-0.6,-0.59l-1.7,-0.92Z\", \"name\": \"French Guiana\"}}, \"height\": 864.1025840443817, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-aea-en.js",
    "content": "$.fn.vectorMap('addMap', 'us_aea_en',{\"insets\": [{\"width\": 220, \"top\": 440, \"height\": 146.9158157558812, \"bbox\": [{\"y\": -8441281.712315228, \"x\": -5263934.893342895}, {\"y\": -6227992.545028123, \"x\": -1949631.2950683108}], \"left\": 0}, {\"width\": 80, \"top\": 460, \"height\": 129.05725678001465, \"bbox\": [{\"y\": -4207380.690946597, \"x\": -5958501.652314129}, {\"y\": -3658201.4570359783, \"x\": -5618076.48127754}], \"left\": 245}, {\"width\": 900.0, \"top\": 0, \"height\": 550.2150229714246, \"bbox\": [{\"y\": -5490839.2352678, \"x\": -2029243.6460439637}, {\"y\": -2690044.485299302, \"x\": 2552083.9617675776}], \"left\": 0}], \"paths\": {\"US-VA\": {\"path\": \"M682.42,290.04l1.61,-0.93l1.65,-0.48l1.12,-0.95l3.57,-1.69l0.74,-2.33l0.82,-0.19l2.32,-1.54l0.05,-1.81l2.04,-1.86l-0.13,-1.58l0.26,-0.42l5.0,-4.09l4.76,-6.0l0.09,0.63l0.96,0.54l0.33,1.37l1.32,0.74l0.71,0.81l1.46,0.09l0.79,0.65l1.3,0.48l1.41,-0.09l0.79,-0.41l0.76,-1.22l1.17,-0.57l0.53,-1.38l2.72,1.49l1.42,-1.1l2.25,-0.99l0.76,0.06l1.08,-0.97l0.33,-0.82l-0.48,-0.96l0.23,-0.42l1.9,0.58l3.26,-2.62l0.3,-0.1l0.51,0.73l0.66,-0.07l2.38,-2.34l0.17,-0.85l-0.49,-0.51l0.99,-1.12l0.1,-0.6l-0.28,-0.51l-1.0,-0.46l0.71,-3.03l2.6,-4.8l0.55,-2.15l-0.01,-1.91l1.61,-2.55l-0.22,-0.94l0.24,-0.84l0.5,-0.48l0.39,-1.7l-0.0,-3.18l1.23,0.19l1.18,1.73l3.8,0.43l0.59,-0.28l1.05,-2.52l0.2,-2.36l0.71,-1.05l-0.04,-1.61l0.76,-2.31l1.78,0.75l0.65,-0.17l1.3,-3.3l0.57,0.05l0.59,-0.39l0.52,-1.2l0.81,-0.68l0.44,-1.8l1.38,-2.43l-0.35,-2.57l0.54,-1.76l-0.3,-2.01l9.18,4.58l0.59,-0.29l0.63,-4.0l2.6,-0.07l0.63,0.57l1.05,0.23l-0.5,1.74l0.6,0.88l1.61,0.85l2.52,-0.04l1.03,1.18l1.64,0.12l1.94,1.52l0.57,2.53l-0.94,0.78l-0.45,0.02l-0.3,0.43l0.13,0.71l-0.61,-0.05l-0.49,0.59l-0.37,2.5l0.07,2.29l-0.43,0.25l0.01,0.6l1.05,0.77l-0.36,0.14l-0.17,0.6l0.44,0.3l1.64,-0.08l1.38,-0.61l1.77,-1.61l0.39,0.58l-0.58,0.35l0.02,0.58l1.9,1.07l0.64,1.08l1.69,0.35l1.37,-0.11l0.95,0.49l0.82,-0.65l1.05,-0.08l0.33,0.56l1.26,0.63l-0.1,0.55l0.36,0.55l0.94,-0.23l0.41,0.56l3.96,0.88l0.25,1.12l-0.85,-0.41l-0.57,0.44l0.89,1.74l-0.35,0.57l0.62,0.78l-0.44,0.89l0.24,0.59l-1.36,-0.36l-0.59,-0.72l-0.67,0.18l-0.1,0.43l-2.44,-2.3l-0.56,0.05l-0.38,-0.56l-0.52,0.32l-1.36,-1.51l-1.23,-0.43l-2.86,-2.72l-1.34,-0.12l-1.11,-0.81l-1.17,0.05l-0.39,0.52l0.47,0.71l1.1,-0.01l0.63,0.68l1.33,0.07l0.6,0.43l0.62,1.4l1.46,1.11l1.13,0.34l1.53,1.8l2.55,0.94l1.4,1.89l2.14,-0.02l0.56,0.41l0.72,0.06l-0.61,0.7l0.3,0.49l2.03,0.34l0.26,0.72l0.55,0.1l0.13,1.67l-1.0,-0.75l-0.39,0.21l-1.13,-1.0l-0.58,0.29l0.1,0.82l-0.31,0.68l0.7,0.7l-0.18,0.6l1.12,0.32l-0.86,0.44l-2.12,-0.73l-1.39,-1.38l-0.83,-0.32l-2.23,-1.87l-0.58,0.11l-0.22,0.53l0.26,0.81l0.64,0.21l3.81,3.15l2.69,1.12l1.28,-0.33l0.45,1.07l1.27,0.26l-0.44,0.67l0.3,0.56l0.93,-0.19l0.0,1.24l-0.92,0.41l-0.57,0.73l-0.71,-0.93l-3.2,-1.58l-0.29,-1.16l-0.59,-0.59l-0.87,-0.11l-1.2,0.67l-1.71,-0.44l-0.36,-1.15l-0.71,-0.05l-0.05,1.32l-0.33,0.41l-1.43,-1.32l-0.51,0.09l-0.48,0.57l-0.65,-0.4l-0.99,0.45l-2.23,-0.1l-0.37,0.94l0.34,0.46l1.9,0.22l1.4,-0.31l0.85,0.24l0.56,-0.69l0.63,0.88l1.34,0.43l1.95,-0.31l1.5,0.71l0.67,-0.63l0.94,2.47l3.16,1.23l0.37,0.91l-0.57,1.03l0.56,0.44l1.72,-1.32l0.88,-0.02l0.83,0.65l0.8,-0.26l-0.61,-0.9l-0.2,-1.17l3.78,0.08l1.13,-0.44l1.89,3.23l-0.46,0.71l0.65,3.09l-1.19,-0.58l-0.02,0.88l-30.95,7.83l-37.19,8.41l-19.52,3.35l-7.08,0.85l-0.46,-0.26l-4.24,0.64l-0.82,0.62l-28.2,5.01ZM781.15,223.32l0.14,0.09l-0.06,0.07l-0.01,-0.03l-0.07,-0.12ZM808.05,244.59l0.53,-1.14l-0.26,-0.54l-0.36,-0.08l0.58,-0.98l-0.39,-0.71l-0.03,-0.49l0.44,-0.35l-0.17,-0.73l0.62,-0.3l0.23,-0.6l0.14,-2.33l1.01,-0.39l-0.12,-0.9l0.48,-0.14l-0.26,-1.53l-0.79,-0.4l0.87,-0.57l0.1,-1.03l2.69,-1.11l0.36,2.48l-1.08,4.2l-0.22,2.38l0.33,1.09l-0.34,0.97l-0.6,-0.79l-0.81,0.15l-0.39,0.95l0.27,0.37l-0.65,0.46l-0.3,0.85l0.17,1.05l-0.31,1.46l0.38,2.47l-0.6,0.6l0.07,1.33l-1.37,-1.9l0.23,-0.94l-0.33,-1.57l0.28,-0.97l-0.38,-0.3Z\", \"name\": \"Virginia\"}, \"US-PA\": {\"path\": \"M716.46,159.99l0.63,-0.19l4.3,-3.73l1.13,5.2l0.48,0.31l34.84,-7.93l34.28,-8.64l1.42,0.58l0.71,1.39l0.64,0.13l0.77,-0.33l1.24,0.59l0.14,0.85l0.81,0.41l-0.16,0.58l0.89,2.69l1.9,2.07l2.12,0.75l2.21,-0.2l0.72,0.79l-0.89,0.87l-0.73,1.49l-0.17,2.25l-1.41,3.35l-1.37,1.58l0.04,0.79l1.79,1.72l-0.31,1.65l-0.84,0.43l-0.22,0.66l0.14,1.48l1.04,2.87l0.52,0.25l1.2,-0.18l1.18,2.39l0.95,0.58l0.66,-0.26l0.6,0.9l4.23,2.75l0.12,0.41l-1.29,0.93l-3.71,4.22l-0.23,0.76l0.17,0.9l-1.36,1.13l-0.84,0.15l-1.33,1.08l-0.33,0.66l-1.72,-0.12l-2.03,0.84l-1.15,1.37l-0.41,1.39l-37.23,9.21l-39.1,8.66l-10.03,-48.21l1.92,-1.22l3.08,-3.04Z\", \"name\": \"Pennsylvania\"}, \"US-TN\": {\"path\": \"M571.72,341.09l0.86,-0.84l0.29,-1.37l1.0,0.04l0.65,-0.79l-0.99,-4.89l1.41,-1.93l0.06,-1.32l1.18,-0.46l0.36,-0.48l-0.63,-1.31l0.53,-0.65l0.05,-0.56l-0.89,-1.33l2.55,-1.57l1.09,-1.13l-0.14,-0.84l-0.85,-0.53l0.14,-0.19l0.34,-0.16l0.85,0.37l0.46,-0.33l-0.27,-1.31l-0.85,-0.9l0.06,-0.71l0.51,-1.43l1.0,-1.11l-1.35,-2.06l1.37,-0.21l0.61,-0.55l-0.13,-0.64l-1.17,-0.82l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.59,-1.38l0.02,-0.36l0.37,0.53l0.47,0.08l0.58,-0.29l0.6,-0.86l23.67,-2.81l0.35,-0.41l-0.1,-1.35l-0.84,-2.39l2.98,-0.08l0.82,0.58l22.79,-3.55l7.64,-0.46l7.5,-0.86l8.82,-1.42l24.01,-3.1l1.11,-0.6l29.3,-5.2l0.73,-0.6l3.56,-0.54l-0.4,1.44l0.43,0.85l-0.4,2.0l0.36,0.82l-1.15,-0.03l-1.71,1.79l-1.21,3.89l-0.55,0.7l-0.56,0.08l-0.63,-0.74l-1.44,-0.02l-2.66,1.73l-1.42,2.73l-0.96,0.89l-0.34,-0.34l-0.13,-1.05l-0.73,-0.54l-0.53,0.15l-2.3,1.81l-0.29,1.32l-0.93,-0.24l-0.9,0.48l-0.16,0.77l0.32,0.73l-0.85,2.18l-1.29,0.06l-1.75,1.14l-1.28,1.24l-0.61,1.06l-0.78,0.27l-2.28,2.46l-4.04,0.78l-2.58,1.7l-0.49,1.09l-0.88,0.55l-0.55,0.81l-0.18,2.88l-0.35,0.6l-1.65,0.52l-0.89,-0.16l-1.06,1.14l0.21,5.24l-20.21,3.32l-21.62,3.04l-25.56,2.95l-0.34,0.31l-7.39,0.9l-28.73,3.17Z\", \"name\": \"Tennessee\"}, \"US-ID\": {\"path\": \"M132.38,121.39l-0.34,-0.44l0.08,-1.99l0.53,-1.74l1.42,-1.22l2.11,-3.59l1.68,-0.92l1.39,-1.53l1.08,-2.15l0.05,-1.22l2.21,-2.41l1.43,-2.7l0.37,-1.37l2.04,-2.26l1.89,-2.81l0.03,-1.01l-0.79,-2.95l-2.13,-1.94l-0.87,-0.36l-0.85,-1.61l-0.41,-3.02l-0.59,-1.19l0.94,-1.19l-0.12,-2.35l-1.04,-2.69l0.46,-0.98l9.67,-54.45l13.39,2.35l-3.54,20.72l1.29,2.89l1.0,1.27l0.27,1.55l1.17,1.76l-0.12,0.83l0.39,1.14l-0.99,0.95l0.83,1.76l-0.83,0.11l-0.28,0.71l1.93,1.68l1.03,2.04l2.24,1.22l0.54,1.58l1.09,1.33l1.49,2.79l0.08,0.68l1.64,1.81l0.01,1.88l1.79,1.71l-0.07,1.35l0.74,0.19l0.9,-0.58l0.36,0.46l-0.36,0.55l0.07,0.54l1.11,0.96l1.61,0.15l1.81,-0.36l-0.63,2.61l-0.99,0.54l0.25,1.14l-1.83,3.73l0.06,1.72l-0.81,0.07l-0.37,0.54l0.6,1.33l-0.62,0.9l-0.03,1.16l0.97,0.93l-0.37,0.81l0.28,1.01l-1.57,0.43l-1.21,1.41l0.1,1.11l0.46,0.77l-0.13,0.74l-0.83,0.77l-0.2,1.52l1.48,0.63l1.38,1.79l0.78,0.27l1.08,-0.35l0.56,-0.8l1.85,-0.41l1.21,-1.28l0.81,-0.29l0.15,-0.76l0.78,0.81l0.23,0.71l1.06,0.64l-0.42,1.23l0.73,0.95l-0.34,1.38l0.57,1.34l-0.21,1.61l1.54,2.64l0.31,1.73l0.82,0.37l0.67,2.08l-0.18,0.98l-0.76,0.64l0.51,1.9l1.24,1.16l0.3,0.79l0.81,0.08l0.86,-0.37l1.04,0.93l1.06,2.79l-0.5,0.81l0.89,1.83l-0.28,0.6l0.11,0.98l2.29,2.41l0.97,-0.14l-0.01,-1.14l1.07,-0.89l0.93,-0.22l4.53,1.62l0.69,-0.32l0.67,-1.35l1.19,-0.39l2.25,0.93l3.3,-0.1l0.96,0.88l2.29,-0.58l3.23,0.78l0.45,-0.49l-0.67,-0.76l0.26,-1.06l0.74,-0.48l-0.07,-0.96l1.23,-0.51l0.48,0.37l1.07,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.27,53.86l-47.48,-6.32l-46.97,-7.73l6.88,-39.17l1.12,-1.18l1.07,-2.67l-0.21,-1.75l0.74,-0.15l0.77,-1.62l-0.9,-1.27l-0.18,-1.2l-1.24,-0.08l-0.64,-0.81l-0.88,0.29Z\", \"name\": \"Idaho\"}, \"US-NV\": {\"path\": \"M139.36,329.2l-12.7,-16.93l-36.59,-51.1l-25.35,-34.52l13.7,-64.19l46.89,9.24l46.99,7.74l-18.72,125.83l-0.9,1.16l-0.99,2.19l-0.44,0.17l-1.34,-0.22l-0.98,-2.24l-0.7,-0.63l-1.41,0.22l-1.95,-1.02l-1.6,0.23l-1.78,0.96l-0.76,2.48l0.88,2.59l-0.6,0.97l-0.24,1.31l0.38,3.12l-0.76,2.54l0.77,3.71l-0.13,3.07l-0.3,1.07l-1.04,0.31l-0.12,0.51l0.32,0.8l-0.52,0.62Z\", \"name\": \"Nevada\"}, \"US-TX\": {\"path\": \"M276.16,412.59l33.07,1.99l32.79,1.35l0.41,-0.39l3.6,-98.71l25.86,0.61l26.29,0.22l0.05,42.09l0.44,0.4l1.02,-0.13l0.78,0.28l3.74,3.82l1.66,0.21l0.88,-0.58l2.49,0.64l0.6,-0.68l0.11,-1.05l0.6,0.76l0.92,0.22l0.38,0.93l0.77,0.78l-0.01,1.64l0.52,0.83l2.85,0.42l1.25,-0.2l1.38,0.89l2.78,0.69l1.82,-0.56l0.63,0.1l1.89,1.8l1.4,-0.11l1.25,-1.43l2.43,0.26l1.67,-0.46l0.1,2.28l0.91,0.67l1.62,0.4l-0.04,2.09l1.56,0.79l1.82,-0.66l1.57,-1.68l1.02,-0.65l0.41,0.19l0.45,1.64l2.01,0.2l0.24,1.05l0.72,0.48l1.47,-0.21l0.88,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.99l0.26,0.41l-0.45,1.23l0.14,0.76l0.67,1.14l0.78,0.42l0.57,-0.04l0.6,-0.5l0.68,-2.36l0.91,-0.65l0.35,-1.54l0.57,-0.14l0.4,0.14l0.29,0.99l0.57,0.64l1.21,0.02l0.83,0.5l1.26,-0.2l0.68,-1.34l0.48,0.15l-0.13,0.7l0.49,0.69l1.21,0.45l0.49,0.72l1.52,-0.05l1.49,1.74l0.52,0.02l0.63,-0.62l0.08,-0.71l1.49,-0.1l0.93,-1.43l1.88,-0.41l1.66,-1.13l1.52,0.83l1.51,-0.22l0.29,-0.83l2.29,-0.73l0.53,-0.55l0.5,0.32l0.38,0.88l1.82,0.42l1.69,-0.06l1.86,-1.14l0.41,-1.05l1.06,0.31l2.24,1.56l1.16,0.17l1.79,2.08l2.14,0.41l1.04,0.92l0.76,-0.11l2.48,0.85l1.04,0.04l0.37,0.79l1.38,0.97l1.45,-0.12l0.39,-0.72l0.8,0.36l0.88,-0.4l0.92,0.35l0.76,-0.15l0.64,0.36l2.23,34.03l1.51,1.67l1.3,0.82l1.25,1.87l0.57,1.63l-0.1,2.64l1.0,1.21l0.85,0.4l-0.12,0.85l0.75,0.54l0.28,0.87l0.65,0.7l-0.19,1.17l1.0,1.02l0.59,1.63l0.5,0.34l0.55,-0.1l-0.16,1.71l0.81,1.22l-0.64,0.25l-0.35,0.68l0.77,1.27l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.74,0.85l-0.36,1.54l-0.79,1.13l0.64,2.0l-0.83,2.28l0.17,1.07l0.83,1.2l-0.19,1.01l0.49,1.6l-0.24,1.41l-1.13,1.67l-1.02,0.2l-1.76,3.37l-0.04,1.06l1.79,2.37l-3.43,0.08l-7.37,3.78l-0.02,-0.43l-2.19,-0.46l-3.24,1.07l1.09,-3.51l-0.3,-1.21l-0.8,-0.76l-0.62,-0.07l-1.52,0.85l-0.99,2.0l-1.56,-0.96l-1.64,0.12l-0.07,0.63l0.89,0.62l0.0,1.06l0.56,0.39l-0.47,0.69l0.07,1.02l1.63,0.64l-0.62,0.71l0.49,0.97l0.91,0.23l0.28,0.37l-0.4,1.25l-0.45,-0.12l-0.97,0.81l-1.72,2.25l-1.18,-0.4l-0.49,0.12l0.32,1.0l0.08,2.55l-1.85,1.49l-1.91,2.11l-0.96,0.37l-4.1,2.9l-3.3,0.45l-2.54,1.06l-0.2,1.12l-0.75,-0.34l-2.04,0.89l-0.33,-0.34l-1.11,0.18l0.43,-0.87l-0.52,-0.6l-1.43,0.22l-1.22,1.08l-0.6,-0.62l-0.11,-1.2l-1.38,-0.81l-0.5,0.44l0.65,1.44l0.01,1.12l-0.71,0.09l-0.54,-0.44l-0.75,-0.0l-0.55,-1.34l-1.46,-0.37l-0.58,0.39l0.04,0.54l0.94,1.7l0.03,1.24l0.58,0.37l0.36,-0.16l1.13,0.78l-0.75,0.37l-0.27,0.54l0.15,0.36l0.7,0.23l1.08,-0.54l0.96,0.6l-4.27,2.42l-0.57,-0.13l-0.37,-1.44l-0.5,-0.18l-1.13,-1.46l-0.49,-0.03l-0.48,0.51l0.1,0.63l-0.62,0.34l-0.05,0.51l1.18,1.61l-0.31,1.04l0.33,0.85l-1.66,1.79l-0.37,0.2l0.37,-0.64l-0.18,-0.72l0.25,-0.73l-0.46,-0.67l-0.52,0.17l-0.71,1.1l0.26,0.72l-0.39,0.95l-0.07,-1.13l-0.52,-0.55l-1.95,1.29l-0.78,-0.33l-0.7,0.52l0.07,0.75l-0.81,0.99l0.02,0.49l1.25,0.64l0.03,0.56l0.78,0.28l0.7,-1.41l0.86,-0.41l0.01,0.62l-2.82,4.36l-1.23,-1.0l-1.36,0.38l-0.32,-0.34l-2.4,0.39l-0.46,-0.31l-0.65,0.16l-0.18,0.58l0.41,0.61l0.55,0.38l1.53,0.03l-0.01,0.91l0.55,0.64l2.07,1.03l-2.7,7.63l-0.2,0.1l-0.38,-0.54l-0.34,0.1l0.18,-0.76l-0.57,-0.43l-2.35,1.95l-1.72,-2.36l-1.19,-0.91l-0.61,0.4l0.09,0.52l1.44,2.0l-0.11,0.82l-0.93,-0.09l-0.33,0.63l0.51,0.56l1.88,0.07l2.14,0.72l2.08,-0.72l-0.43,1.75l0.24,0.77l-0.98,0.7l0.37,1.59l-1.12,0.14l-0.43,0.41l0.4,2.11l-0.33,1.6l0.45,0.64l0.84,0.24l0.87,2.86l0.71,2.81l-0.91,0.82l0.62,0.49l-0.08,1.28l0.72,0.3l0.18,0.61l0.58,0.29l0.4,1.79l0.68,0.31l0.45,3.22l1.46,0.62l-0.52,1.1l0.31,1.07l-0.63,0.77l-0.84,-0.05l-0.53,0.44l0.08,1.31l-0.49,-0.33l-0.49,0.25l-0.39,-0.67l-1.49,-0.45l-2.92,-2.53l-2.2,-0.18l-0.81,-0.51l-4.2,0.09l-0.9,0.42l-0.78,-0.63l-1.06,0.25l-1.25,-0.2l-1.45,-0.7l-0.72,-0.97l-0.6,-0.14l-0.21,-0.72l-1.17,-0.49l-0.99,-0.02l-1.98,-0.87l-1.45,0.39l-0.83,-1.09l-0.6,-0.21l-1.43,-1.38l-1.96,0.01l-1.47,-0.64l-0.86,0.12l-1.62,-0.41l0.28,-1.26l-0.54,-1.01l-0.96,-0.35l-1.65,-6.03l-2.77,-3.02l-0.29,-1.12l-1.08,-0.75l0.35,-0.77l-0.24,-0.76l0.34,-2.18l-0.45,-0.96l-1.04,-1.01l0.65,-1.99l0.05,-1.19l-0.18,-0.7l-0.54,-0.33l-0.15,-1.81l-1.85,-1.44l-0.85,0.21l-0.29,-0.41l-0.81,-0.11l-0.74,-1.31l-2.22,-1.71l0.01,-0.69l-0.51,-0.58l0.12,-0.86l-0.97,-0.92l-0.08,-0.75l-1.12,-0.61l-1.3,-2.88l-2.66,-1.48l-0.38,-0.91l-1.13,-0.59l-0.06,-1.16l-0.82,-1.19l-0.59,-1.95l0.41,-0.22l-0.04,-0.73l-1.03,-0.49l-0.26,-1.29l-0.81,-0.57l-0.94,-1.74l-0.61,-2.38l-1.85,-2.36l-0.87,-4.24l-1.81,-1.34l0.05,-0.7l-0.75,-1.21l-3.96,-2.67l-0.71,-1.86l-1.82,-0.62l-1.44,-0.99l-0.01,-1.63l-0.6,-0.39l-0.88,0.24l-0.12,-0.77l-0.98,-0.33l-0.8,-2.08l-0.57,-0.47l-0.46,0.12l-0.46,-0.44l-0.86,0.27l-0.14,-0.6l-0.44,-0.31l-0.47,0.15l-0.25,0.61l-1.05,0.16l-2.89,-0.47l-0.39,-0.38l-1.48,-0.03l-0.79,0.29l-0.77,-0.44l-2.67,0.27l-3.92,-2.08l-1.35,0.86l-0.64,1.61l-1.98,-0.17l-0.52,0.44l-0.49,-0.17l-1.05,0.49l-1.33,0.14l-3.22,6.4l-0.18,1.77l-0.76,0.67l-0.38,1.8l0.35,0.59l-1.99,1.01l-0.72,1.3l-1.11,0.65l-1.12,2.0l-2.67,-0.46l-1.04,-0.87l-0.55,0.3l-1.69,-1.21l-1.31,-1.63l-2.9,-0.85l-1.15,-0.95l-0.02,-0.67l-0.42,-0.41l-2.75,-0.51l-2.28,-1.03l-1.89,-1.75l-0.91,-1.53l-0.96,-0.91l-1.53,-0.29l-1.77,-1.26l-0.22,-0.56l-1.31,-1.18l-0.65,-2.68l-0.86,-1.01l-0.24,-1.1l-0.76,-1.28l-0.26,-2.34l0.52,-3.05l-3.01,-5.07l-0.06,-1.94l-1.26,-2.51l-0.99,-0.44l-0.43,-1.24l-1.43,-0.81l-2.15,-2.18l-1.02,-0.1l-2.01,-1.25l-3.18,-3.35l-0.59,-1.55l-3.13,-2.55l-1.59,-2.45l-1.19,-0.95l-0.61,-1.05l-4.42,-2.6l-1.19,-2.19l-1.21,-3.23l-1.37,-1.08l-1.12,-0.08l-1.75,-1.67l-0.79,-3.05ZM502.09,468.18l-0.33,0.17l0.18,-0.16l0.15,-0.02ZM498.69,470.85l-0.09,0.12l-0.04,0.02l0.13,-0.14ZM497.79,472.33l0.15,0.05l-0.2,0.18l0.04,-0.11l0.01,-0.12ZM497.02,473.23l-0.13,0.12l0.03,-0.09l0.09,-0.03ZM467.54,489.19l0.03,0.02l-0.02,0.01l-0.0,-0.03ZM453.94,547.19l0.75,-0.5l0.25,-0.68l0.11,1.08l-1.1,0.1ZM460.89,499.8l-0.14,-0.59l1.22,-0.36l-0.28,0.33l-0.79,0.63ZM463.51,497.84l0.1,-0.23l1.27,-0.88l-0.92,0.85l-0.45,0.26ZM465.8,496.12l0.28,-0.24l0.47,-0.04l-0.25,0.13l-0.5,0.15ZM457.96,502.92l0.71,-1.64l0.64,-0.71l-0.02,0.75l-1.33,1.6ZM451.06,515.13l0.06,-0.22l0.07,-0.15l-0.13,0.37ZM451.5,513.91l0.16,-0.35l0.02,-0.02l-0.18,0.37ZM452.44,511.95l-0.01,-0.04l0.05,-0.04l-0.04,0.08Z\", \"name\": \"Texas\"}, \"US-NH\": {\"path\": \"M829.94,105.42l0.2,-1.33l-1.43,-5.38l0.53,-1.45l-0.28,-2.22l1.0,-1.86l-0.13,-2.3l0.64,-2.28l-0.44,-0.62l0.29,-2.31l-0.93,-3.8l0.08,-0.7l0.3,-0.45l1.83,-0.8l0.7,-1.39l1.43,-1.62l0.74,-1.8l-0.25,-1.13l0.52,-0.62l-2.34,-3.49l0.87,-3.26l-0.11,-0.78l-0.81,-1.29l0.27,-0.59l-0.23,-0.7l0.48,-3.2l-0.36,-0.82l0.91,-1.49l2.44,0.33l0.65,-0.88l13.0,34.89l0.84,3.65l2.6,2.21l0.88,0.34l0.36,1.6l1.72,1.31l0.0,0.35l0.77,0.23l-0.06,0.58l-0.46,3.09l-1.57,0.24l-1.32,1.19l-0.51,0.94l-0.96,0.37l-0.5,1.68l-1.1,1.44l-17.61,4.74l-1.7,-1.43l-0.41,-0.89l-0.1,-2.0l0.54,-0.59l0.03,-0.52l-1.02,-5.18Z\", \"name\": \"New Hampshire\"}, \"US-NY\": {\"path\": \"M821.38,166.44l0.69,-2.05l0.62,-0.02l0.55,-0.75l0.76,0.15l0.54,-0.41l-0.04,-0.31l0.57,-0.03l0.28,-0.66l0.66,-0.02l0.2,-0.55l-0.42,-0.83l0.22,-0.53l0.61,-0.37l1.34,0.22l0.54,-0.59l1.45,-0.18l0.21,-0.8l1.85,0.02l1.08,-0.91l0.11,-0.78l0.62,0.24l0.43,-0.61l4.83,-1.29l2.26,-1.3l1.99,-2.91l-0.2,1.16l-0.98,0.86l-1.22,2.31l0.55,0.46l1.6,-0.35l0.28,0.63l-0.43,0.49l-1.37,0.87l-0.51,-0.07l-2.26,0.92l-0.08,0.93l-0.87,-0.0l-2.73,1.72l-1.01,0.15l-0.17,0.8l-1.24,0.09l-2.24,1.91l-4.44,2.17l-0.2,0.71l-0.29,0.08l-0.45,-0.83l-1.41,-0.06l-0.73,0.42l-0.42,0.8l0.23,0.32l-0.92,0.69l-0.76,-0.84l0.32,-1.05ZM828.05,159.06l-0.02,-0.01l0.02,-0.06l-0.01,0.08ZM845.16,149.05l0.06,-0.06l0.18,-0.06l-0.11,0.19l-0.13,-0.07ZM844.3,154.94l0.1,-0.89l0.74,-1.16l1.65,-1.52l1.01,0.31l0.05,-0.82l0.79,0.67l-3.36,3.21l-0.67,0.45l-0.31,-0.25ZM850.39,150.14l0.02,-0.03l0.07,-0.07l-0.09,0.1ZM722.09,155.56l3.76,-3.85l1.27,-2.19l1.76,-1.86l1.16,-0.78l1.28,-3.35l1.56,-1.3l0.53,-0.83l-0.21,-1.83l-1.61,-2.42l0.43,-1.13l-0.17,-0.78l-0.83,-0.53l-2.11,-0.0l0.04,-0.99l-0.57,-2.22l4.99,-2.94l4.49,-1.8l2.38,-0.19l1.84,-0.74l5.64,-0.24l3.13,1.25l3.16,-1.68l5.49,-1.06l0.58,0.45l0.68,-0.2l0.12,-0.98l1.45,-0.72l1.03,-0.93l0.75,-0.2l0.69,-2.05l1.87,-1.76l0.79,-1.26l1.12,0.03l1.13,-0.52l1.07,-1.63l-0.46,-0.7l0.36,-1.2l-0.25,-0.51l-0.64,0.02l-0.17,-1.17l-0.94,-1.59l-1.01,-0.62l0.12,-0.18l0.59,0.39l0.53,-0.27l0.75,-1.44l-0.01,-0.91l0.81,-0.65l-0.01,-0.97l-0.93,-0.19l-0.6,0.7l-0.28,0.12l0.56,-1.3l-0.81,-0.62l-1.26,0.05l-0.87,0.77l-0.92,-0.41l-0.06,-0.29l2.05,-2.5l1.78,-1.47l1.67,-2.64l0.7,-0.56l0.11,-0.59l0.78,-0.95l0.07,-0.56l-0.5,-0.95l0.78,-1.89l4.82,-7.61l4.77,-4.5l2.84,-0.51l19.67,-5.66l0.41,0.88l-0.08,2.01l1.02,1.22l0.43,3.8l2.29,3.25l-0.09,1.89l0.85,2.42l-0.59,1.07l-0.0,3.41l0.71,0.9l1.32,2.76l0.19,1.09l0.62,0.84l0.12,3.92l0.55,0.85l0.54,0.07l0.53,-0.61l0.06,-0.87l0.33,-0.07l1.05,1.12l3.97,15.58l0.74,1.2l0.22,15.32l0.6,0.62l3.57,16.23l1.26,1.34l-2.82,3.18l0.03,0.54l1.52,1.31l0.19,0.6l-0.78,0.88l-0.64,1.8l-0.41,0.39l0.15,0.69l-1.25,0.64l0.04,-4.02l-0.57,-2.28l-0.74,-1.62l-1.46,-1.1l-0.17,-1.13l-0.7,-0.1l-0.42,1.33l0.68,1.27l1.05,0.83l0.97,2.85l-13.75,-4.06l-1.28,-1.47l-2.39,0.24l-0.63,-0.43l-1.06,-0.15l-1.74,-1.91l-0.75,-2.33l0.12,-0.72l-0.36,-0.63l-0.56,-0.21l0.09,-0.46l-0.35,-0.42l-1.64,-0.68l-1.08,0.32l-0.53,-1.22l-1.92,-0.93l-34.6,8.73l-34.44,7.84l-1.11,-5.15ZM818.84,168.69l1.08,-0.48l0.14,0.63l-1.17,1.53l-0.05,-1.68ZM730.07,136.63l0.03,-0.69l0.78,-0.07l-0.38,1.09l-0.43,-0.33Z\", \"name\": \"New York\"}, \"US-HI\": {\"path\": \"M295.5,583.17l0.06,-1.75l4.12,-4.97l1.03,-3.4l-0.33,-0.64l0.94,-2.43l-0.05,-3.52l0.39,-0.78l2.47,-0.7l1.55,0.23l4.45,-1.4l0.51,-0.7l-0.17,-2.69l0.4,-1.66l1.78,-1.16l1.74,2.15l-0.15,0.94l1.88,3.6l0.94,0.35l5.13,7.65l0.86,3.93l-1.52,3.14l0.22,0.58l1.47,0.95l-0.68,2.07l0.35,1.51l1.6,3.0l-1.39,0.86l-2.28,-0.2l-3.27,0.51l-4.56,-1.32l-2.15,-1.34l-6.66,-0.15l-1.59,0.26l-1.56,1.19l-1.63,0.58l-1.14,0.02l-0.7,-2.54l-2.09,-2.18ZM306.33,530.7l1.6,0.08l0.51,2.07l-0.3,2.25l0.37,0.59l2.33,0.88l1.38,0.1l1.55,1.39l0.27,1.55l0.93,0.97l-0.13,1.05l1.83,2.52l-0.13,0.66l-0.61,0.48l-1.82,0.38l-1.84,-0.18l-1.47,-1.19l-2.21,-0.24l-2.69,-1.48l0.01,-1.23l1.15,-1.86l0.41,-2.07l-1.76,-1.28l-1.08,-1.75l-0.1,-2.61l1.79,-1.08ZM297.2,518.01l0.71,0.31l0.38,1.05l2.64,2.0l0.9,1.11l0.92,0.08l0.8,1.67l1.56,1.05l0.72,0.06l1.07,1.11l-1.31,0.41l-2.75,-0.66l-3.23,-3.93l-3.16,-2.01l-1.39,-0.44l-0.05,-0.7l1.58,-0.43l0.62,-0.67ZM301.59,541.55l-2.09,-0.98l-0.28,-0.51l2.92,0.34l-0.56,1.15ZM298.23,532.36l-0.92,-0.29l-0.72,-0.89l0.92,-2.06l-0.49,-1.73l2.6,1.38l0.61,2.08l0.14,1.06l-2.15,0.45ZM281.13,503.64l0.57,-1.85l-0.38,-0.9l-0.16,-2.84l0.75,-0.92l-0.12,-1.22l2.74,1.9l2.9,-0.62l1.56,0.15l0.38,1.01l-0.33,2.17l0.29,1.5l-0.69,0.6l-0.19,1.55l0.38,1.54l0.86,0.51l0.29,1.07l-0.52,1.14l0.53,1.28l-1.18,-0.0l-0.2,-0.48l-2.04,-0.86l-0.77,-2.83l-1.27,-0.38l0.8,-0.11l0.32,-0.46l-0.08,-0.66l-0.63,-0.68l-1.75,-0.32l0.23,1.82l-2.28,-1.1ZM259.66,469.47l-0.24,-2.03l-0.91,-0.69l-0.68,-1.23l0.08,-1.2l0.08,-0.34l2.39,-0.81l4.6,0.53l0.67,1.04l2.51,1.09l0.69,1.25l-0.15,1.9l-2.3,1.32l-0.74,1.3l-0.79,0.34l-2.78,0.09l-0.92,-1.53l-1.52,-1.0ZM245.78,462.61l-0.23,-0.74l1.03,-0.75l4.32,-0.72l0.43,0.3l-0.92,0.4l-0.68,0.94l-1.66,-0.5l-1.36,0.34l-0.94,0.72Z\", \"name\": \"Hawaii\"}, \"US-VT\": {\"path\": \"M805.56,72.69l26.03,-7.97l0.89,1.85l-0.74,2.37l-0.03,1.54l2.22,2.75l-0.51,0.58l0.26,1.13l-0.67,1.6l-1.35,1.49l-0.64,1.32l-1.72,0.7l-0.62,0.92l-0.1,0.98l0.93,3.74l-0.29,2.44l0.4,0.54l-0.6,2.11l0.15,2.19l-1.0,1.87l0.27,2.36l-0.53,1.54l1.43,5.44l-0.22,1.22l1.05,5.3l-0.58,0.85l0.11,2.31l0.6,1.26l1.51,1.1l-11.44,2.89l-0.57,-0.85l-4.02,-15.75l-1.72,-1.59l-0.91,0.25l-0.3,1.19l-0.12,-0.26l-0.11,-3.91l-0.68,-1.0l-0.14,-0.98l-1.37,-2.85l-0.63,-0.68l0.01,-3.15l0.6,-1.15l-0.86,-2.57l0.08,-1.93l-0.39,-0.91l-1.55,-1.63l-0.38,-0.81l-0.41,-3.71l-1.03,-1.27l0.11,-1.87l-0.43,-1.01Z\", \"name\": \"Vermont\"}, \"US-NM\": {\"path\": \"M230.86,422.88l11.82,-123.66l25.67,2.24l26.1,1.86l26.12,1.45l25.74,1.02l-0.31,10.24l-0.74,0.39l-3.59,98.69l-32.38,-1.34l-33.53,-2.02l-0.44,0.76l0.54,2.31l0.44,1.26l0.99,0.76l-30.55,-2.46l-0.43,0.36l-0.82,9.46l-14.63,-1.33Z\", \"name\": \"New Mexico\"}, \"US-NC\": {\"path\": \"M826.87,289.49l0.07,-0.05l-0.02,0.03l-0.04,0.02ZM819.58,272.4l0.2,0.23l-0.05,0.01l-0.16,-0.24ZM821.84,276.68l0.19,0.15l-0.02,0.18l-0.05,-0.08l-0.12,-0.25ZM676.72,321.77l0.92,0.17l1.52,-0.39l0.42,-0.39l0.52,-0.97l0.13,-2.7l1.34,-1.19l0.47,-1.05l2.24,-1.47l2.12,-0.52l0.76,0.18l1.32,-0.52l2.36,-2.52l0.78,-0.25l1.84,-2.29l1.48,-1.0l1.55,-0.19l1.15,-2.65l-0.28,-1.22l1.66,0.06l0.51,-1.65l0.93,-0.77l1.08,-0.77l0.51,1.52l1.07,0.33l1.34,-1.17l1.35,-2.64l2.49,-1.59l0.79,0.08l0.82,0.8l1.06,-0.21l0.84,-1.07l1.47,-4.18l1.08,-1.1l1.47,0.09l0.44,-0.31l-0.69,-1.26l0.4,-2.0l-0.42,-0.9l0.38,-1.25l7.42,-0.86l19.54,-3.36l37.22,-8.42l31.12,-7.87l0.4,1.21l3.54,3.24l1.0,1.53l-1.21,-1.0l-0.16,-0.63l-0.92,-0.4l-0.52,0.05l-0.24,0.65l0.66,0.54l0.59,1.56l-0.53,0.01l-0.91,-0.75l-2.31,-0.8l-0.4,-0.48l-0.55,0.13l-0.31,0.69l0.14,0.64l1.37,0.44l1.69,1.38l-1.11,0.66l-2.48,-1.2l-0.36,0.51l0.14,0.42l1.6,1.18l-1.84,-0.33l-2.23,-0.87l-0.46,0.14l0.01,0.48l0.6,0.7l1.71,0.83l-0.97,0.58l0.0,0.6l-0.43,0.53l-1.48,0.74l-0.89,-0.77l-0.61,0.22l-0.1,0.35l-0.2,-0.13l-1.32,-2.32l0.21,-2.63l-0.42,-0.48l-0.89,-0.22l-0.37,0.64l0.62,0.71l-0.43,0.99l-0.02,1.04l0.49,1.73l1.6,2.2l-0.31,1.28l0.48,0.29l2.97,-0.59l2.1,-1.49l0.27,0.01l0.37,0.79l0.76,-0.34l1.56,0.05l0.16,-0.71l-0.57,-0.32l1.29,-0.76l2.04,-0.46l-0.1,1.19l0.64,0.29l-0.6,0.88l0.89,1.19l-0.84,0.1l-0.19,0.66l1.38,0.46l0.26,0.94l-1.21,0.05l-0.19,0.66l0.66,0.59l1.25,-0.16l0.52,0.26l0.4,-0.38l0.18,-1.95l-0.75,-3.33l0.41,-0.48l0.56,0.43l0.94,0.06l0.28,-0.57l-0.29,-0.44l0.48,-0.57l1.71,1.84l-0.0,1.41l0.62,0.9l-0.53,0.18l-0.25,0.47l0.9,1.14l-0.08,0.37l-0.42,0.55l-0.78,0.09l-0.91,-0.86l-0.32,0.33l0.13,1.26l-1.08,1.61l0.2,0.57l-0.32,0.22l-0.15,0.98l-0.74,0.55l0.1,0.91l-0.9,0.96l-1.06,0.21l-0.59,-0.37l-0.52,0.52l-0.93,-0.81l-0.86,0.1l-0.4,-0.82l-0.59,-0.21l-0.52,0.38l0.08,0.94l-0.52,0.22l-1.42,-1.25l1.31,-0.4l0.23,-0.88l-0.57,-0.42l-2.02,0.31l-1.14,1.01l0.29,0.67l0.44,0.16l0.09,0.82l0.35,0.25l-0.03,0.12l-0.57,-0.34l-1.69,0.83l-1.12,-0.43l-1.45,0.06l-3.32,-0.7l0.42,1.08l0.97,0.45l0.36,0.64l0.63,0.11l0.87,-0.32l1.68,0.63l2.35,0.39l3.51,0.11l0.47,0.42l-0.06,0.52l-0.99,0.05l-0.38,0.5l0.13,0.23l-1.62,1.44l0.32,0.58l1.85,0.01l-2.55,3.5l-1.67,0.04l-1.59,-0.98l-0.9,-0.19l-1.21,-1.02l-1.12,0.07l0.07,0.47l1.04,1.14l2.32,2.09l2.68,0.26l1.31,0.49l1.71,-2.16l0.51,0.47l1.17,0.33l0.4,-0.57l-0.55,-0.9l0.87,0.16l0.19,0.57l0.66,0.24l1.63,-1.2l-0.18,0.61l0.29,0.57l-0.29,0.38l-0.43,-0.2l-0.41,0.37l0.03,0.9l-0.97,1.72l0.01,0.78l-0.71,-0.07l-0.06,-0.74l-1.12,-0.61l-0.42,0.47l0.27,1.45l-0.52,-1.1l-0.65,-0.16l-1.22,1.08l-0.21,0.52l0.25,0.27l-2.03,0.32l-2.75,1.84l-0.67,-1.04l-0.75,-0.29l-0.37,0.49l0.43,1.26l-0.57,-0.01l-0.09,0.82l-0.94,1.73l-0.91,0.85l-0.59,-0.26l0.49,-0.69l-0.02,-0.77l-1.06,-0.93l-0.08,-0.52l-1.69,-0.41l-0.16,0.47l0.43,1.16l0.2,0.33l0.58,0.07l0.3,0.61l-0.88,0.37l-0.08,0.71l0.65,0.64l0.77,0.18l-0.01,0.37l-2.12,1.67l-1.92,2.65l-2.0,4.31l-0.34,2.13l0.12,1.34l-0.15,-1.03l-1.01,-1.59l-0.55,-0.17l-0.3,0.48l1.17,3.95l-0.63,2.27l-3.9,0.19l-1.43,0.65l-0.35,-0.52l-0.58,-0.18l-0.54,1.07l-1.9,1.14l-0.61,-0.02l-23.25,-15.36l-1.05,-0.02l-18.68,3.49l-0.65,-2.77l-3.25,-2.84l-0.47,0.08l-1.23,1.31l-0.01,-1.29l-0.82,-0.54l-22.82,3.35l-0.64,-0.27l-0.62,0.46l-0.25,0.65l-3.98,1.93l-0.89,1.23l-1.01,0.08l-4.78,2.66l-20.95,3.93l-0.34,-4.55l0.7,-0.95ZM817.0,271.48l0.19,0.35l0.24,0.39l-0.45,-0.41l0.02,-0.32ZM807.53,290.29l0.2,0.32l-0.16,-0.09l-0.03,-0.23ZM815.31,299.15l0.16,-0.36l0.16,0.07l-0.13,0.29l-0.19,0.01ZM812.76,299.11l-0.06,-0.28l-0.03,-0.11l0.3,0.26l-0.21,0.13ZM812.97,264.02l0.37,-0.24l0.15,0.42l-0.42,0.07l-0.1,-0.25ZM791.92,329.4l0.04,-0.08l0.22,0.03l-0.0,0.09l-0.26,-0.05Z\", \"name\": \"North Carolina\"}, \"US-ND\": {\"path\": \"M438.54,42.78l2.06,6.9l-0.73,2.53l0.57,2.36l-0.27,1.17l0.47,1.99l0.01,3.26l1.42,3.95l0.45,0.54l-0.08,0.97l0.39,1.52l0.62,0.74l1.48,3.74l-0.06,3.9l0.42,0.7l0.5,8.35l0.51,1.54l0.51,0.25l-0.47,2.64l0.36,1.63l-0.14,1.75l0.69,1.1l0.2,2.16l0.49,1.13l1.8,2.56l0.15,2.2l0.51,1.08l0.17,1.39l-0.24,1.36l0.28,1.74l-27.89,0.73l-28.38,0.19l-28.38,-0.37l-28.49,-0.93l2.75,-65.47l23.08,0.78l25.57,0.42l25.57,-0.06l24.11,-0.49Z\", \"name\": \"North Dakota\"}, \"US-NE\": {\"path\": \"M422.58,174.02l3.92,2.71l3.93,1.9l1.34,-0.22l0.51,-0.47l0.36,-1.08l0.48,-0.2l2.49,0.34l1.32,-0.47l1.58,0.25l3.45,-0.65l2.37,1.98l1.4,0.14l1.55,0.77l1.45,0.08l0.88,1.1l1.49,0.17l-0.06,0.98l1.68,2.08l3.32,0.6l0.19,0.68l-0.22,1.87l1.13,1.94l0.01,2.29l1.15,1.08l0.34,1.72l1.73,1.46l0.07,1.88l1.5,2.11l-0.49,2.33l0.44,3.09l0.52,0.54l0.94,-0.2l-0.04,1.25l1.21,0.5l-0.41,2.36l0.21,0.44l1.12,0.4l-0.6,0.77l-0.09,1.01l0.13,0.59l0.82,0.5l0.16,1.45l-0.26,0.92l0.26,1.27l0.55,0.61l0.3,1.93l-0.22,1.33l0.23,0.72l-0.57,0.92l0.02,0.79l0.45,0.88l1.23,0.63l0.25,2.5l1.1,0.51l0.03,0.79l1.18,2.75l-0.23,0.96l1.16,0.21l0.8,0.99l1.1,0.24l-0.15,0.96l1.31,1.68l-0.21,1.12l0.51,0.91l-26.15,1.05l-27.83,0.63l-27.84,0.14l-27.89,-0.35l0.46,-21.66l-0.39,-0.41l-32.36,-1.04l1.85,-43.24l43.36,1.22l44.67,-0.04Z\", \"name\": \"Nebraska\"}, \"US-LA\": {\"path\": \"M508.97,412.97l-1.33,-21.76l51.44,-4.07l0.34,0.83l1.48,0.66l-0.92,1.35l-0.25,2.13l0.49,0.72l1.18,0.31l-1.21,0.47l-0.45,0.78l0.45,1.36l1.05,0.84l0.08,2.15l0.46,0.54l1.51,0.74l0.45,1.05l1.42,0.44l-0.87,1.22l-0.85,2.34l-0.75,0.04l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.22,1.16l-1.35,0.96l-1.08,1.89l-1.37,0.67l-0.68,0.83l-0.79,2.42l-0.25,3.52l-1.55,1.74l0.13,1.21l0.62,0.96l-0.35,2.38l-1.61,0.29l-0.6,0.57l0.28,0.97l0.64,0.59l-0.26,1.41l0.98,1.51l-1.18,1.18l-0.08,0.45l0.4,0.23l6.18,-0.55l29.23,-2.92l-0.68,3.47l-0.52,1.02l-0.2,2.24l0.69,0.98l-0.09,0.66l0.6,1.0l1.31,0.7l1.22,1.42l0.14,0.88l0.89,1.39l0.14,1.05l1.11,1.84l-1.85,0.39l-0.38,-0.08l-0.01,-0.56l-0.53,-0.57l-1.28,0.28l-1.18,-0.59l-1.51,0.17l-0.61,-0.98l-1.24,-0.86l-2.84,-0.47l-1.24,0.63l-1.39,2.3l-1.3,1.42l-0.42,0.91l0.07,1.2l0.55,0.89l0.82,0.57l4.25,0.82l3.35,-1.0l1.32,-1.19l0.68,-1.19l0.34,0.59l1.08,0.43l0.59,-0.4l0.81,0.03l0.51,-0.46l-0.76,1.21l-1.12,-0.12l-0.57,0.32l-0.38,0.62l0.0,0.83l0.77,1.22l1.48,-0.02l0.65,0.89l1.1,0.48l0.94,-0.21l0.51,-0.45l0.46,-1.11l-0.02,-1.37l0.93,-0.58l0.42,-0.99l0.23,0.05l0.1,1.16l-0.24,0.25l0.18,0.57l0.43,0.15l-0.07,0.75l1.34,1.08l0.34,-0.16l-0.48,0.59l0.18,0.63l-0.35,0.13l-0.52,-0.57l-0.92,-0.19l-1.0,1.89l-0.85,0.14l-0.46,0.53l0.16,1.19l-1.6,-0.61l-0.43,0.19l0.04,0.46l1.14,1.06l-1.17,-0.14l-0.92,0.61l0.68,0.43l1.26,2.04l2.74,0.97l-0.08,1.2l0.34,0.41l2.07,-0.32l0.77,0.17l0.17,0.53l0.73,0.32l1.35,-0.34l0.53,0.78l1.08,-0.46l1.13,0.74l0.14,0.3l-0.4,0.62l1.54,0.86l-0.39,0.65l0.39,0.58l-0.18,0.62l-0.95,1.49l-1.3,-1.56l-0.68,0.34l0.1,0.66l-0.38,0.12l0.41,-1.88l-1.33,-0.76l-0.5,0.5l0.2,1.18l-0.54,0.45l-0.27,-1.02l-0.57,-0.25l-0.89,-1.27l0.03,-0.77l-0.96,-0.14l-0.47,0.5l-1.41,-0.17l-0.41,-0.61l0.14,-0.63l-0.39,-0.46l-0.45,-0.02l-0.81,0.73l-1.18,0.02l0.12,-1.23l-0.46,-0.88l-0.91,0.04l0.09,-0.96l-0.37,-0.36l-0.91,-0.03l-0.22,0.58l-0.85,-0.38l-0.48,0.27l-2.61,-1.26l-1.24,-0.03l-0.67,-0.64l-0.61,0.19l-0.3,0.56l-0.05,1.25l1.72,0.94l1.67,0.35l-0.16,0.92l0.28,0.39l-0.34,0.35l0.23,0.68l-0.76,0.95l-0.02,0.66l0.81,0.97l-0.95,1.43l-1.33,0.94l-0.76,-1.15l0.22,-1.5l-0.35,-0.92l-0.49,-0.18l-0.4,0.36l-1.15,-1.08l-0.59,0.42l-0.76,-1.05l-0.62,-0.2l-0.64,1.33l-0.85,0.26l-0.88,-0.53l-0.86,0.53l-0.1,0.62l0.48,0.41l-0.68,0.56l-0.13,1.44l-0.46,0.13l-0.39,0.83l-0.92,0.08l-0.11,-0.68l-1.6,-0.4l-0.77,0.97l-1.92,-0.93l-0.3,-0.54l-0.99,0.01l-0.35,0.6l-1.16,-0.51l0.42,-0.4l0.01,-1.46l-0.38,-0.57l-1.9,-1.19l-0.08,-0.54l-0.83,-0.72l-0.09,-0.91l0.73,-1.15l-0.34,-1.14l-0.87,-0.19l-0.34,0.57l0.16,0.43l-0.59,0.81l0.04,0.91l-1.8,-0.4l0.07,-0.39l-0.47,-0.54l-1.97,0.76l-0.7,-2.22l-1.32,0.23l-0.18,-2.12l-1.31,-0.35l-1.89,0.3l-1.09,0.65l-0.21,-0.71l0.84,-0.26l-0.05,-0.8l-0.6,-0.58l-1.03,-0.1l-0.85,0.42l-0.95,-0.15l-0.4,0.8l-2.0,1.11l-0.63,-0.31l-1.29,0.71l0.54,1.37l0.8,0.31l0.97,1.51l-1.39,0.19l-1.83,1.03l-3.69,-0.4l-1.24,0.21l-3.09,-0.45l-1.99,-0.68l-1.81,-1.07l-3.7,-1.1l-3.19,-0.48l-2.53,0.58l-5.62,0.45l-1.0,0.26l-1.82,1.25l-0.59,-0.63l-0.26,-1.08l1.59,-0.47l0.7,-1.76l-0.02,-1.55l-0.39,-0.56l1.11,-1.54l0.23,-1.59l-0.5,-1.83l0.07,-1.46l-0.66,-0.7l-0.21,-1.04l0.83,-2.22l-0.64,-1.95l0.76,-0.84l0.3,-1.49l0.78,-0.94l0.79,-2.83l-0.18,-1.42l0.58,-0.97l-0.75,-1.33l0.84,-0.39l0.2,-0.44l-0.89,-1.36l0.03,-2.13l-1.07,-0.23l-0.57,-1.57l-0.92,-0.84l0.28,-1.27l-0.81,-0.76l-0.33,-0.95l-0.64,-0.34l0.22,-0.98l-1.16,-0.58l-0.81,-0.93l0.16,-2.46l-0.68,-1.93l-1.33,-1.98l-2.63,-2.21ZM607.49,467.45l-0.03,-0.03l-0.07,-0.04l0.13,-0.01l-0.03,0.08ZM607.51,465.85l-0.02,-0.01l0.03,-0.01l-0.02,0.02ZM567.04,468.98l-2.0,-0.42l-0.66,-0.5l0.73,-0.43l0.35,-0.76l0.39,0.49l0.83,0.21l-0.15,0.61l0.5,0.81ZM550.39,463.0l1.73,-1.05l3.34,1.07l-0.69,0.56l-0.17,0.81l-0.68,0.17l-3.53,-1.57Z\", \"name\": \"Louisiana\"}, \"US-SD\": {\"path\": \"M336.37,128.84l0.3,-0.53l0.75,-19.93l28.5,0.93l28.4,0.37l28.4,-0.19l27.78,-0.73l-0.18,1.71l-0.73,1.71l-2.9,2.46l-0.42,1.27l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.01,0.84l0.57,1.02l1.45,38.83l-1.84,0.09l-0.42,0.56l0.24,1.44l0.88,1.14l0.01,1.45l-0.65,0.36l0.17,1.48l0.48,0.43l1.09,0.04l0.34,1.68l-0.16,0.91l-0.62,0.83l0.02,1.73l-0.68,2.45l-0.49,0.44l-0.67,1.88l0.5,1.1l1.33,1.08l-0.16,0.62l0.64,0.66l0.35,1.15l-1.65,-0.28l-0.34,-0.94l-0.85,-0.73l0.19,-0.61l-0.28,-0.59l-1.58,-0.23l-1.03,-1.18l-1.57,-0.11l-1.51,-0.75l-1.34,-0.12l-2.38,-1.99l-3.78,0.6l-1.65,-0.25l-1.19,0.46l-2.62,-0.33l-0.98,0.48l-0.76,1.45l-0.72,0.05l-3.67,-1.82l-4.13,-2.8l-44.83,0.05l-43.33,-1.22l1.79,-43.2Z\", \"name\": \"South Dakota\"}, \"US-DC\": {\"path\": \"M781.25,216.97l0.45,-0.77l2.04,1.26l-0.66,1.14l-0.55,-1.05l-1.28,-0.58Z\", \"name\": \"District of Columbia\"}, \"US-DE\": {\"path\": \"M798.52,195.11l0.42,-1.51l0.92,-1.11l1.72,-0.71l1.12,0.06l-0.33,0.56l-0.08,1.38l-1.13,1.92l0.1,1.09l1.11,1.1l-0.07,1.52l2.29,2.48l1.25,0.6l0.93,1.52l0.99,3.35l1.72,1.57l0.57,1.32l3.06,1.99l1.44,-0.09l0.45,1.25l-1.06,0.56l0.16,1.32l0.36,0.19l-0.83,0.57l-0.08,1.21l0.66,0.21l0.85,-0.73l0.71,0.34l0.3,-0.21l0.75,1.55l-10.19,2.82l-8.12,-26.12Z\", \"name\": \"Delaware\"}, \"US-FL\": {\"path\": \"M630.28,423.69l47.19,-6.86l1.53,1.91l0.87,2.72l1.47,1.0l48.79,-5.11l1.03,1.38l0.03,1.09l0.55,1.05l1.04,0.48l1.64,-0.28l0.85,-0.75l-0.14,-4.57l-0.98,-1.49l-0.22,-1.77l0.28,-0.74l0.62,-0.3l0.12,-0.7l5.6,0.96l4.03,-0.16l0.14,1.24l-0.75,-0.12l-0.33,0.43l0.25,1.54l2.11,1.81l0.22,1.01l0.42,0.38l0.29,1.92l1.87,3.29l1.7,4.87l0.73,0.84l0.51,1.5l1.64,2.46l0.64,1.57l2.79,3.71l1.93,3.18l2.29,2.77l0.16,0.6l0.63,0.36l6.82,7.53l-0.48,-0.03l-0.27,0.61l-1.35,-0.02l-0.34,-0.65l0.38,-1.38l-0.16,-0.56l-2.3,-0.92l-0.46,0.53l1.0,2.8l0.78,0.97l2.14,4.77l9.92,13.71l1.37,3.11l3.66,5.34l-1.38,-0.35l-0.43,0.74l0.8,0.65l0.85,0.24l0.56,-0.22l1.46,0.94l2.05,3.05l-0.5,0.34l-0.12,0.53l1.16,0.53l0.89,1.83l-0.08,1.06l0.59,0.95l0.61,2.64l-0.27,0.75l0.93,8.98l-0.31,1.07l0.46,0.67l0.5,3.1l-0.81,1.46l0.07,2.23l-0.84,0.74l-0.22,1.8l-0.48,0.85l0.21,1.47l-0.3,1.75l0.54,1.74l0.45,0.23l-1.15,1.8l-0.39,1.28l-0.94,0.24l-0.53,-0.22l-1.37,0.45l-0.35,1.06l-0.89,0.3l-0.18,0.58l-0.85,0.67l-1.44,0.14l-0.27,-0.32l-1.23,-0.1l-0.9,1.05l-3.17,1.13l-1.06,-0.59l-0.7,-1.04l0.06,-1.79l1.0,0.84l1.64,0.47l0.26,0.63l0.52,0.07l1.35,-0.72l0.2,-0.69l-0.26,-0.64l-1.58,-1.11l-2.4,-0.26l-0.91,-0.46l-0.85,-1.67l-0.89,-0.72l0.22,-0.98l-0.48,-0.28l-0.53,0.15l-1.38,-2.51l-0.44,-0.3l-0.64,0.07l-0.44,-0.61l0.22,-0.89l-0.7,-0.65l-1.21,-0.6l-1.06,-0.08l-0.75,-0.54l-0.57,0.18l-2.8,-0.59l-0.5,0.64l0.25,-0.91l-0.46,-0.42l-0.87,0.12l-0.26,-0.72l-0.88,-0.65l-0.61,-1.41l-0.55,-0.11l-0.72,-2.94l-0.77,-1.0l-0.16,-1.52l-0.44,-0.83l-0.71,-0.89l-0.49,-0.15l-0.12,0.93l-1.29,-0.26l1.06,-1.3l0.3,-0.75l-0.12,-0.63l0.86,-1.46l0.65,-0.34l0.28,-0.83l-0.61,-0.38l-1.42,0.93l-0.89,1.29l-0.42,2.17l-1.37,0.35l-0.21,-1.33l-0.79,-1.33l-0.27,-4.04l-0.86,-0.6l1.63,-1.33l0.22,-0.97l-0.58,-0.42l-3.06,1.92l-0.75,-0.66l-0.4,0.26l-1.27,-0.89l-0.37,0.74l1.13,1.09l0.52,0.1l1.26,2.0l-1.04,0.23l-1.42,-0.38l-0.84,-1.6l-1.13,-0.6l-1.94,-2.55l-1.04,-2.28l-1.28,-0.87l0.1,-0.87l-0.97,-1.8l-1.77,-0.98l0.09,-0.67l0.99,-0.41l-0.35,-0.49l0.44,-0.73l-0.39,-0.35l0.4,-1.21l2.47,-4.47l-1.05,-2.41l-0.68,-0.46l-0.92,0.42l-0.28,0.93l0.29,1.2l-0.24,0.03l-0.73,-2.44l-0.99,-0.28l-1.19,-0.87l-1.52,-0.31l0.29,1.95l-0.48,0.61l0.27,0.59l2.21,0.56l0.25,0.97l-0.37,2.46l-0.31,-0.58l-0.8,-0.22l-2.13,-1.53l-0.41,0.2l-0.29,-0.63l0.59,-2.11l0.07,-2.97l-0.66,-1.97l0.42,-0.51l0.48,-1.91l-0.24,-0.54l0.66,-3.04l-0.35,-5.26l-0.71,-1.7l0.35,-0.47l-0.47,-2.18l-2.1,-1.33l-0.05,-0.52l-0.55,-0.43l-0.1,-1.01l-0.92,-0.73l-0.55,-1.51l-0.64,-0.25l-1.44,0.32l-1.03,-0.2l-1.57,0.54l-1.14,-1.74l-1.51,-0.48l-0.19,-0.6l-1.35,-1.51l-0.87,-0.59l-0.62,0.07l-1.52,-1.16l-0.8,-0.21l-0.51,-2.75l-3.06,-1.13l-0.65,-0.59l-0.52,-1.23l-2.15,-1.93l-2.19,-1.09l-1.45,-0.12l-3.44,-1.68l-2.85,0.98l-1.0,-0.4l-1.05,0.42l-0.35,0.68l-1.33,0.68l-0.5,0.7l0.03,0.64l-0.73,-0.22l-0.59,0.6l0.67,0.94l1.51,0.08l0.41,0.21l-3.03,0.23l-1.58,1.51l-0.91,0.45l-1.3,1.56l-1.56,1.03l-0.32,0.13l0.2,-0.48l-0.26,-0.54l-0.66,-0.04l-0.96,0.75l-1.12,1.5l-2.2,0.23l-2.11,1.06l-0.78,0.03l-0.27,-2.03l-1.71,-2.23l-2.21,-1.0l-0.18,-0.41l-2.51,-1.5l2.79,1.33l1.21,-0.74l0.0,-0.74l-1.32,-0.34l-0.36,0.55l-0.21,-1.01l-0.34,-0.1l0.13,-0.52l-0.49,-0.33l-1.39,0.61l-2.3,-0.76l0.65,-1.08l0.83,-0.1l1.03,-1.45l-0.91,-0.95l-0.46,0.12l-0.49,1.02l-0.44,-0.04l-0.81,0.56l-0.72,-0.9l-0.7,0.09l-0.17,0.38l-1.34,0.73l-0.14,0.68l0.29,0.46l-3.95,-1.35l-5.05,-0.71l0.12,-0.24l1.27,0.29l0.61,-0.53l2.1,0.39l0.23,-0.78l-0.94,-1.02l0.09,-0.7l-0.63,-0.28l-0.5,0.32l-0.28,-0.47l-1.9,0.19l-2.25,1.1l0.3,-0.63l-0.41,-0.58l-0.96,0.35l-0.58,-0.25l-0.23,0.44l0.2,0.71l-1.45,0.8l-0.4,0.63l-5.18,0.97l0.32,-0.52l-0.4,-0.52l-1.35,-0.28l-0.72,-0.53l0.69,-0.53l0.01,-0.78l-0.68,-0.13l-0.81,-0.66l-0.46,0.11l0.14,0.76l-0.42,1.77l-1.05,-1.39l-0.69,-0.45l-0.55,0.07l-0.3,0.71l0.82,1.77l-0.25,0.79l-1.39,0.99l-0.05,1.04l-0.6,0.22l-0.17,0.57l-1.48,0.56l0.28,-0.65l-0.21,-0.46l1.14,-1.03l0.07,-0.74l-0.4,-0.58l-1.19,-0.24l-0.41,-0.84l0.3,-1.7l-0.18,-1.61l-2.17,-1.12l-2.39,-2.46l0.32,-1.44l-0.15,-1.04ZM767.29,490.44l0.48,1.07l0.9,0.39l0.78,-0.15l1.41,1.67l0.91,0.58l1.86,0.69l1.61,0.07l0.55,-0.44l-0.08,-0.87l0.55,-0.65l-0.16,-1.21l0.76,-1.36l0.09,-1.81l-0.64,-1.62l-1.46,-2.01l-1.74,-1.32l-1.19,-0.13l-1.12,0.83l-1.83,3.16l-2.12,1.94l-0.13,0.77l0.57,0.41ZM644.36,434.13l-0.94,0.26l0.41,-0.44l0.53,0.18ZM665.13,435.7l0.98,-0.28l0.35,0.32l0.09,0.72l-1.42,-0.75ZM770.56,455.01l0.42,0.56l-0.43,0.75l0.0,-1.31ZM788.88,525.23l0.01,-0.07l0.01,0.03l-0.03,0.04ZM789.47,522.87l-0.22,-0.23l0.49,-0.32l-0.27,0.55ZM768.83,453.61l0.21,0.76l-0.31,2.33l0.28,1.79l-1.38,-3.23l1.19,-1.65ZM679.81,445.61l0.22,-0.2l0.36,0.02l-0.11,0.42l-0.47,-0.25Z\", \"name\": \"Florida\"}, \"US-WA\": {\"path\": \"M38.52,55.26l0.46,-1.32l0.18,0.45l0.65,0.3l1.04,-0.74l0.43,0.59l0.7,-0.03l0.17,-0.77l-0.92,-1.56l0.79,-0.74l-0.09,-1.36l0.49,-0.39l-0.1,-1.03l0.81,-0.27l0.05,0.5l0.48,0.41l0.95,-0.31l-0.09,-0.68l-1.35,-1.65l-0.9,0.15l-1.88,-0.56l0.17,-1.98l0.66,0.53l0.52,-0.07l0.29,-0.56l-0.16,-0.67l3.3,-0.52l0.26,-0.69l-1.7,-0.96l-0.86,-0.14l-0.37,-1.51l-0.7,-0.42l-0.81,-0.02l0.32,-4.73l-0.49,-1.28l0.1,-0.69l-0.4,-0.34l0.76,-5.74l-0.13,-2.46l-0.45,-0.62l-0.16,-1.36l-0.65,-1.33l-0.73,-0.57l-0.32,-2.45l0.35,-2.27l-0.15,-1.11l1.74,-3.3l-0.52,-1.23l4.59,3.9l1.19,0.38l0.92,0.75l0.81,1.3l1.86,1.08l3.24,0.91l0.84,0.77l1.42,0.11l1.73,1.02l2.33,0.73l1.46,-0.47l0.52,0.29l0.55,0.69l-0.03,1.09l0.55,0.74l0.31,0.11l0.49,-0.35l0.07,-0.75l0.45,0.03l0.63,1.39l-0.4,0.58l0.34,0.49l0.56,-0.04l0.72,-0.84l-0.38,-1.7l1.03,-0.24l-0.44,0.23l-0.21,0.69l1.27,4.41l-0.46,0.1l-1.67,1.73l0.22,-1.29l-0.22,-0.41l-1.31,0.31l-0.38,0.81l0.09,0.95l-1.37,1.7l-1.98,1.38l-1.06,1.41l-0.96,0.69l-1.1,1.67l-0.06,0.71l0.62,0.6l0.96,0.12l2.77,-0.48l1.22,-0.58l-0.03,-0.7l-0.64,-0.23l-2.94,0.79l-0.35,-0.3l3.23,-3.42l3.06,-0.88l0.89,-1.51l1.73,-1.54l0.53,0.57l0.54,-0.19l0.22,-1.81l-0.06,2.25l0.26,0.91l-0.99,-0.21l-0.64,0.77l-0.41,-0.73l-0.52,-0.19l-0.39,0.64l0.3,0.71l0.02,1.63l-0.21,-1.07l-0.67,-0.21l-0.47,0.69l-0.07,0.75l0.46,0.66l-0.63,0.58l-0.0,0.45l0.42,0.17l1.68,-0.57l0.25,1.09l-1.08,1.79l-0.08,1.05l-0.83,0.7l0.13,1.0l-0.85,-0.68l1.12,-1.44l-0.23,-0.96l-1.96,1.08l-0.38,0.64l-0.05,-2.11l-0.52,0.02l-1.03,1.59l-1.26,0.53l-1.14,1.87l-1.51,0.3l-0.46,0.43l-0.21,1.18l1.11,-0.03l-0.25,0.36l0.27,0.37l0.93,0.02l0.06,0.68l0.53,0.47l0.52,-0.27l0.35,-1.76l0.14,0.42l0.83,-0.15l1.11,1.48l1.31,-0.61l1.65,-1.48l0.98,-1.56l0.63,0.78l0.73,0.14l0.44,-0.23l-0.06,-0.86l1.56,-0.55l0.35,-0.94l-0.33,-1.27l0.22,-1.19l-0.18,-1.36l0.83,0.2l0.3,-0.92l-0.19,-0.75l-0.72,-0.63l0.89,-1.13l0.07,-1.75l1.24,-1.24l0.61,-1.37l1.61,-0.49l0.78,-1.16l-0.45,-0.66l-0.51,-0.02l-0.86,-1.3l0.16,-2.09l-0.26,-0.87l0.49,-0.79l0.06,-0.84l-1.15,-1.73l-0.63,-0.4l-0.17,-0.64l0.18,-0.5l0.59,0.23l0.53,-0.33l0.24,-1.8l0.79,-0.24l0.3,-1.0l-0.61,-2.32l0.44,-0.53l-0.03,-0.86l-0.96,-0.88l-0.95,0.3l-1.09,-2.66l0.93,-1.83l41.31,9.4l38.96,7.65l-9.66,54.39l-0.47,1.02l1.04,3.0l0.13,2.0l-1.0,1.3l0.73,1.88l-31.18,-5.92l-1.67,0.79l-7.24,-1.02l-1.68,0.92l-4.19,-0.12l-3.18,0.45l-1.64,0.75l-0.88,-0.26l-1.2,0.3l-1.51,-0.23l-2.43,-0.94l-0.91,0.46l-3.45,0.51l-2.11,-0.71l-1.65,0.3l-0.31,-1.36l-1.09,-0.88l-4.34,-1.46l-2.32,-0.11l-1.15,-0.51l-1.27,0.21l-1.89,0.86l-4.5,0.58l-1.11,-0.71l-1.15,-0.3l-1.61,-1.15l-1.84,-0.51l-0.63,-0.81l0.64,-6.82l-0.47,-0.95l-0.22,-1.9l-0.98,-1.35l-1.96,-1.67l-2.82,-0.11l-1.03,-1.31l-0.15,-1.05l-0.56,-0.63l-2.36,-0.31l-0.56,-0.3l-0.24,-0.79l-0.5,-0.18l-0.97,0.35l-0.84,-0.26l-1.1,0.4l-0.97,-1.47l-0.89,-0.22ZM61.85,39.78l0.16,0.74l-0.42,0.49l0.0,-0.91l0.26,-0.31ZM71.27,20.38l-0.61,0.87l-0.15,0.52l0.11,-1.01l0.65,-0.38ZM71.14,15.62l-0.09,-0.05l0.05,-0.04l0.04,0.1ZM70.37,15.48l-0.77,0.39l0.37,-0.68l-0.07,-0.6l0.22,-0.07l0.25,0.97ZM57.56,42.45l0.05,-0.02l-0.01,0.01l-0.04,0.02ZM67.75,19.23l1.73,-2.1l0.47,-0.02l0.53,1.71l-0.35,-0.55l-0.51,-0.12l-0.55,0.44l-0.35,-0.09l-0.35,0.73l-0.63,-0.01ZM67.87,20.4l0.44,0.0l0.61,0.5l0.08,0.35l-0.79,-0.2l-0.33,-0.65ZM68.84,23.16l-0.1,0.51l-0.0,0.0l-0.02,-0.24l0.12,-0.28ZM69.15,25.42l0.08,0.04l0.12,-0.04l-0.16,0.11l-0.05,-0.1ZM69.52,25.33l0.48,-0.93l1.02,1.21l0.11,1.12l-0.34,0.36l-0.34,-0.09l-0.27,-1.55l-0.67,-0.12ZM66.34,9.97l0.48,-0.34l0.18,1.51l-0.22,-0.05l-0.44,-1.12ZM68.04,9.66l0.83,0.8l-0.65,0.31l-0.18,-1.11ZM66.69,38.03l0.34,-1.07l0.21,-0.25l-0.03,1.07l-0.52,0.26ZM66.99,33.31l0.1,-1.04l0.35,-0.34l-0.23,1.56l-0.22,-0.18ZM66.51,14.27l-0.41,-0.4l0.6,-0.75l-0.18,0.61l-0.01,0.55ZM66.68,14.62l0.4,0.2l-0.08,0.12l-0.29,-0.12l-0.03,-0.2ZM66.74,12.96l-0.01,-0.1l0.05,-0.12l-0.04,0.23ZM64.36,13.12l-1.06,-0.82l0.19,-1.81l1.33,1.92l-0.35,0.18l-0.11,0.54ZM62.18,42.55l0.23,-0.25l0.02,0.01l-0.13,0.31l-0.12,-0.07ZM60.04,40.3l-0.09,-0.19l0.04,-0.07l0.0,0.13l0.05,0.14Z\", \"name\": \"Washington\"}, \"US-KS\": {\"path\": \"M477.9,239.67l0.44,0.63l0.76,0.18l1.04,0.8l2.19,-1.08l-0.0,0.75l1.08,0.79l0.23,1.44l-0.95,-0.15l-0.6,0.31l-0.17,0.97l-1.14,1.37l-0.06,1.14l-0.79,0.5l0.04,0.64l1.56,2.1l2.0,1.49l0.2,1.13l0.42,0.86l0.74,0.56l0.32,1.11l1.89,0.91l1.54,0.26l2.67,46.82l-31.55,1.48l-31.97,0.88l-31.98,0.26l-32.05,-0.37l1.21,-65.47l27.9,0.35l27.86,-0.14l27.85,-0.64l27.68,-1.12l1.65,1.23Z\", \"name\": \"Kansas\"}, \"US-WI\": {\"path\": \"M598.7,107.43l0.83,-0.15l-0.13,0.81l-0.56,0.01l-0.14,-0.68ZM594.22,116.05l0.47,-0.41l0.26,-2.36l0.95,-0.25l0.64,-0.69l0.22,-1.4l0.41,-0.63l0.63,-0.03l0.06,0.38l-0.76,0.06l-0.18,0.51l0.17,1.27l-0.38,0.17l-0.11,0.58l0.56,0.57l-0.24,0.65l-0.5,0.33l-0.69,1.91l0.07,1.23l-1.05,2.28l-0.41,0.15l-0.86,-0.97l-0.19,-0.72l0.31,-1.57l0.62,-1.05ZM510.06,124.08l0.41,-0.27l0.28,-0.9l-0.45,-1.48l0.04,-1.91l0.7,-1.16l0.53,-2.25l-1.61,-2.91l-0.83,-0.36l-1.28,-0.01l-0.21,-2.31l1.67,-2.26l-0.05,-0.77l0.77,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.75l1.16,-0.14l1.04,-1.56l-0.97,-12.11l1.03,-0.35l0.22,-1.1l0.73,-0.97l0.78,0.69l1.68,0.64l2.61,-0.56l3.28,-1.57l2.65,-0.82l2.21,-2.12l0.31,0.29l1.39,-0.11l1.25,-1.48l0.79,-0.58l1.04,-0.1l0.4,-0.52l1.07,0.99l-0.48,1.68l-0.67,1.01l0.23,1.61l-1.21,2.21l0.64,0.66l2.5,-1.09l0.72,-0.86l2.16,1.22l2.34,0.47l0.44,0.54l0.86,-0.13l1.6,0.7l2.23,3.54l15.48,2.52l4.65,1.96l1.68,-0.17l1.63,0.42l1.33,-0.59l3.17,0.71l2.18,0.09l0.85,0.41l0.56,0.89l-0.42,1.09l0.41,0.77l3.4,0.63l1.41,1.13l-0.16,0.71l0.59,1.11l-0.36,0.81l0.43,1.25l-0.78,1.25l-0.03,1.76l0.91,0.63l1.38,-0.26l1.02,-0.72l0.2,0.26l-0.79,2.44l0.04,1.31l1.32,1.46l0.84,0.35l-0.24,2.02l-2.42,1.2l-0.51,0.79l0.04,1.26l-1.61,3.49l-0.4,3.5l1.11,0.82l0.92,-0.04l0.5,-0.36l0.49,-1.37l1.82,-1.47l0.66,-2.53l1.06,-1.7l0.14,0.25l0.45,-0.07l0.57,-0.7l0.88,-0.4l1.12,1.12l0.59,0.19l-0.29,2.21l-1.18,2.82l-0.56,5.58l0.23,1.11l0.8,0.93l0.07,0.52l-0.51,0.98l-1.3,1.34l-0.86,3.89l0.15,2.57l0.72,1.2l0.06,1.24l-1.07,3.22l0.12,2.12l-0.73,2.11l-0.28,2.47l0.59,2.02l-0.04,1.32l0.49,0.54l-0.21,1.7l0.92,0.78l0.54,2.43l1.2,1.54l0.08,1.69l-0.33,1.45l0.47,2.95l-44.2,4.6l-0.19,-0.79l-1.56,-2.19l-4.94,-0.84l-1.06,-1.35l-0.36,-1.69l-0.9,-1.21l-0.86,-4.9l1.04,-2.62l-0.09,-0.99l-0.71,-0.79l-1.44,-0.48l-0.71,-1.76l-0.47,-6.02l-0.7,-1.4l-0.52,-2.56l-1.15,-0.6l-1.1,-1.56l-0.93,-0.11l-1.17,-0.75l-1.71,0.09l-2.67,-1.79l-2.3,-3.5l-2.64,-2.1l-2.94,-0.53l-0.73,-1.24l-1.12,-1.0l-3.12,-0.45l-3.53,-2.74l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.88,-3.11ZM541.58,78.25l0.05,-0.28l0.03,0.16l-0.08,0.12ZM537.91,83.72l0.28,-0.21l0.05,0.08l-0.33,0.12Z\", \"name\": \"Wisconsin\"}, \"US-OR\": {\"path\": \"M10.69,140.12l0.01,-1.77l0.5,-0.84l0.32,-1.95l1.12,-1.91l0.24,-1.9l-0.72,-2.57l-0.33,-0.15l-0.12,-1.81l3.04,-3.82l2.5,-5.98l0.01,0.77l0.52,0.52l0.49,-0.28l0.6,-1.6l0.47,-0.48l0.31,0.98l1.12,0.41l0.33,-0.54l-0.45,-1.76l0.27,-0.87l-0.45,-0.14l-0.79,0.32l1.74,-3.16l1.13,-0.96l0.89,0.3l0.49,-0.29l-0.47,-1.08l-0.81,-0.4l1.77,-4.63l0.47,-0.57l0.02,-0.99l1.08,-2.67l0.62,-2.6l1.04,-1.92l0.33,0.28l0.66,-0.33l-0.04,-0.6l-0.76,-0.62l1.06,-2.6l0.32,0.22l0.59,-0.19l0.13,-0.35l-0.04,-0.51l-0.57,-0.32l0.85,-3.84l1.23,-1.8l0.83,-3.04l1.14,-1.76l0.83,-2.45l0.26,-1.21l-0.18,-0.5l1.19,-1.08l-0.32,-1.64l0.96,0.57l0.78,-0.63l-0.39,-0.75l0.2,-0.65l-0.77,-0.77l0.51,-1.07l1.3,-0.86l0.06,-0.46l-0.93,-0.34l-0.33,-1.25l0.97,-2.14l-0.04,-1.48l0.86,-0.53l0.58,-1.33l0.18,-1.96l-0.21,-1.45l0.83,1.17l0.6,0.18l-0.11,0.89l0.55,0.53l0.83,-0.96l-0.27,-0.99l0.21,-0.07l0.24,0.56l0.69,0.32l1.51,0.04l0.37,-0.36l1.37,-0.19l0.99,2.08l2.43,0.92l1.25,-0.64l0.78,0.04l1.72,1.51l0.77,1.04l0.21,1.9l0.43,0.78l-0.03,2.05l-0.39,1.24l0.19,0.93l-0.43,1.74l0.26,1.45l0.79,0.85l1.94,0.56l1.44,1.05l1.36,0.41l1.04,0.69l4.98,-0.53l2.9,-1.06l1.14,0.51l2.23,0.09l4.24,1.43l0.69,0.54l0.19,1.15l0.57,0.58l1.86,-0.27l2.11,0.71l3.79,-0.55l0.69,-0.42l2.19,0.93l1.64,0.24l1.2,-0.3l0.88,0.26l1.89,-0.78l3.07,-0.43l4.16,0.13l1.61,-0.91l7.17,1.02l0.96,-0.19l0.79,-0.58l31.27,5.93l0.23,1.81l0.93,1.82l1.16,0.63l1.96,1.86l0.57,2.45l-0.16,1.0l-3.69,4.55l-0.4,1.41l-1.39,2.63l-2.21,2.42l-0.65,2.68l-1.49,1.84l-2.23,1.5l-1.92,3.35l-1.49,1.27l-0.62,2.02l-0.12,1.87l0.28,0.92l0.56,0.61l0.54,0.04l0.39,-0.35l0.63,0.76l0.89,-0.05l0.07,0.88l0.81,0.95l-0.46,1.0l-0.65,0.06l-0.33,0.4l0.21,1.8l-1.03,2.56l-1.22,1.41l-6.86,39.16l-26.21,-4.99l-28.9,-6.05l-28.8,-6.61l-28.95,-7.24l-1.48,-2.59l0.2,-2.36l-0.23,-0.89Z\", \"name\": \"Oregon\"}, \"US-KY\": {\"path\": \"M583.02,306.59l0.35,-2.18l1.13,0.96l0.72,0.2l0.75,-0.36l0.46,-0.88l0.87,-3.55l-0.54,-1.75l0.38,-0.86l-0.1,-1.88l-1.27,-2.04l1.79,-3.21l1.24,-0.51l0.73,0.06l7.03,2.56l0.81,-0.2l0.65,-0.72l0.24,-1.93l-1.49,-2.14l-0.24,-1.44l0.2,-0.87l0.4,-0.52l1.1,-0.18l1.24,-0.83l3.0,-0.95l0.64,-0.51l0.15,-1.13l-1.53,-2.05l-0.08,-0.68l1.33,-1.97l0.14,-1.16l1.25,0.42l1.12,-1.33l-0.68,-2.0l1.92,0.9l1.72,-0.84l0.03,1.18l1.0,0.46l0.99,-0.94l0.02,-1.36l0.51,0.16l1.9,-0.96l4.41,1.52l0.64,0.94l0.86,0.18l0.59,-0.59l0.73,-2.53l1.38,-0.55l1.39,-1.34l0.86,1.29l0.77,0.42l1.16,-0.13l0.11,0.75l0.95,0.19l0.67,-0.62l0.03,-1.01l0.84,-0.38l0.26,-0.48l-0.25,-2.09l0.84,-0.4l0.34,-0.56l-0.06,-0.69l1.25,-0.56l0.34,-0.72l0.38,1.47l0.61,0.6l1.46,0.64l1.25,-0.0l1.11,0.81l0.53,-0.11l0.26,-0.55l1.1,-0.46l0.53,-0.69l0.04,-3.48l0.85,-2.18l1.02,0.18l1.55,-1.19l0.75,-3.46l1.04,-0.37l1.65,-2.23l0.0,-0.81l-1.18,-2.88l2.78,-0.59l1.54,0.81l3.85,-2.82l2.23,-0.46l-0.18,-1.07l0.36,-1.47l-0.32,-0.36l-1.22,-0.04l0.58,-1.39l-1.09,-1.54l1.65,-1.83l1.81,1.18l0.92,-0.11l1.93,-1.01l0.78,0.88l1.76,0.54l0.57,1.28l0.94,0.92l0.79,1.84l2.6,0.67l1.87,-0.57l1.63,0.27l2.18,1.85l0.96,0.43l1.28,-0.18l0.61,-1.31l0.99,-0.54l1.35,0.5l1.34,0.04l1.33,1.09l1.26,-0.69l1.41,-0.15l1.81,-2.55l1.72,-1.03l0.92,2.35l0.7,0.83l2.45,0.81l1.35,0.97l0.75,1.05l0.93,3.35l-0.37,0.45l0.09,0.72l-0.44,0.61l0.02,0.53l2.24,2.62l1.35,0.92l-0.08,0.89l1.34,0.97l0.58,1.36l1.55,1.2l0.98,1.62l2.14,0.84l1.09,1.12l2.14,0.25l-4.86,6.13l-5.06,4.16l-0.42,0.86l0.22,1.25l-2.07,1.93l0.04,1.64l-3.06,1.63l-0.8,2.38l-1.71,0.6l-2.7,1.83l-1.66,0.48l-3.39,2.42l-23.95,3.09l-8.8,1.42l-7.47,0.86l-7.68,0.46l-22.71,3.52l-0.64,-0.56l-3.63,0.09l-0.41,0.6l1.03,3.57l-23.0,2.73ZM580.9,306.78l-0.59,0.08l-0.06,-0.55l0.47,-0.01l0.18,0.49Z\", \"name\": \"Kentucky\"}, \"US-CO\": {\"path\": \"M364.18,239.57l-1.22,65.87l-29.29,-0.9l-29.38,-1.43l-29.35,-1.95l-32.17,-2.75l8.33,-87.15l27.79,2.4l28.23,1.92l29.58,1.46l27.95,0.87l-0.46,21.66Z\", \"name\": \"Colorado\"}, \"US-OH\": {\"path\": \"M664.99,178.81l1.67,0.47l1.04,-0.3l1.74,1.07l2.07,0.26l1.47,1.18l1.71,0.23l-2.19,1.18l-0.12,0.47l0.42,0.24l2.46,0.19l1.39,-1.1l1.77,-0.25l3.39,0.96l0.92,-0.08l1.48,-1.29l1.74,-0.6l1.15,-0.96l1.91,-0.97l2.62,-0.03l1.09,-0.62l1.24,-0.06l1.07,-0.8l4.24,-5.46l4.53,-3.47l6.92,-4.36l5.83,28.05l-0.51,0.54l-1.28,0.43l-0.41,0.95l1.65,2.24l0.02,2.11l0.41,0.26l0.31,0.94l-0.04,0.76l-0.54,0.83l-0.5,4.08l0.18,3.21l-0.58,0.41l0.34,1.11l-0.35,1.74l-0.39,0.54l0.76,1.23l-0.25,1.87l-2.41,2.65l-0.82,1.86l-1.37,1.5l-1.24,0.67l-0.6,0.7l-0.87,-0.92l-1.18,0.14l-1.32,1.74l-0.09,1.32l-1.78,0.85l-0.78,2.25l0.28,1.58l-0.94,0.85l0.3,0.67l0.63,0.41l0.27,1.3l-0.8,0.17l-0.5,1.6l0.06,-0.93l-0.91,-1.26l-1.53,-0.55l-1.07,0.71l-0.82,1.98l-0.34,2.69l-0.53,0.82l1.22,3.58l-1.27,0.39l-0.28,0.42l-0.25,3.12l-2.66,1.2l-1.0,0.05l-0.76,-1.06l-1.51,-1.1l-2.34,-0.73l-1.17,-1.92l-0.31,-1.14l-0.42,-0.33l-0.73,0.13l-1.84,1.17l-1.1,1.29l-0.4,1.05l-1.43,0.15l-0.87,0.61l-1.11,-1.0l-3.14,-0.59l-1.37,0.72l-0.53,1.25l-0.71,0.05l-3.04,-2.26l-1.93,-0.29l-1.77,0.56l-2.14,-0.52l-0.55,-1.54l-0.96,-0.97l-0.63,-1.38l-2.03,-0.76l-1.14,-1.01l-0.97,0.26l-1.31,0.89l-0.46,0.03l-1.79,-1.23l-0.61,0.2l-0.6,0.71l-8.53,-55.69l20.43,-4.26ZM675.61,181.34l0.53,-0.79l0.67,0.41l-0.48,0.35l-0.72,0.03ZM677.31,180.77l0.01,-0.0l0.01,-0.0l-0.02,0.0Z\", \"name\": \"Ohio\"}, \"US-OK\": {\"path\": \"M399.06,359.31l-0.05,-42.03l-0.39,-0.4l-26.69,-0.22l-25.13,-0.6l0.31,-10.23l36.7,0.74l36.0,-0.07l35.99,-0.86l35.56,-1.62l0.6,10.68l4.55,24.34l1.41,37.88l-1.2,-0.22l-0.29,-0.36l-2.13,-0.21l-0.82,-0.79l-2.11,-0.39l-1.77,-2.05l-1.23,-0.22l-2.25,-1.57l-1.5,-0.4l-0.8,0.46l-0.23,0.88l-0.82,0.24l-0.46,0.62l-2.47,-0.14l-0.47,-0.19l-0.27,-0.68l-1.05,-0.61l-2.3,1.29l-1.17,0.2l-0.19,0.56l-0.63,0.28l-2.12,-0.77l-1.7,1.18l-1.17,0.08l-0.89,0.42l-0.83,1.37l-1.48,0.06l-0.57,1.25l-1.26,-1.55l-1.7,-0.1l-0.32,-0.58l-1.21,-0.46l-0.02,-0.96l-0.44,-0.5l-1.24,-0.18l-0.73,1.38l-0.66,0.11l-0.84,-0.5l-0.97,0.07l-0.71,-1.51l-1.09,-0.35l-1.17,0.57l-0.45,1.7l-0.7,-0.08l-0.49,0.43l0.29,0.73l-0.51,1.68l-0.43,0.19l-0.55,-0.55l-0.3,-0.91l0.39,-1.65l-0.75,-0.86l-0.8,0.18l-0.49,0.76l-0.84,-0.18l-0.92,0.98l-1.07,0.13l-0.53,-1.36l-1.99,-0.19l-0.3,-1.48l-1.19,-0.53l-0.82,0.33l-2.12,2.15l-1.21,0.51l-0.97,-0.38l0.19,-1.25l-0.28,-1.13l-2.33,-0.68l-0.07,-2.18l-0.43,-0.55l-2.11,0.39l-2.52,-0.25l-0.64,0.26l-0.81,1.21l-0.95,0.06l-1.77,-1.77l-0.97,-0.12l-1.5,0.56l-2.68,-0.63l-1.86,-1.0l-1.05,0.25l-2.46,-0.3l-0.17,-2.12l-0.85,-0.87l-0.44,-1.02l-1.16,-0.41l-0.7,-0.83l-0.83,0.08l-0.44,1.64l-2.22,-0.68l-1.07,0.6l-0.96,-0.09l-3.79,-3.78l-1.12,-0.43l-0.8,0.08Z\", \"name\": \"Oklahoma\"}, \"US-WV\": {\"path\": \"M693.03,248.42l3.95,-1.54l0.35,-0.71l0.12,-2.77l1.15,-0.22l0.4,-0.61l-0.57,-2.49l-0.61,-1.24l0.49,-0.64l0.36,-2.77l0.68,-1.66l0.45,-0.39l1.24,0.55l0.41,0.71l-0.14,1.13l0.71,0.46l0.78,-0.44l0.48,-1.42l0.49,0.21l0.57,-0.2l0.2,-0.44l-0.63,-2.09l-0.75,-0.55l0.81,-0.79l-0.26,-1.71l0.74,-2.0l1.65,-0.51l0.17,-1.6l1.02,-1.42l0.43,-0.08l0.65,0.79l0.67,0.19l2.28,-1.59l1.5,-1.64l0.79,-1.83l2.45,-2.67l0.37,-2.41l-0.73,-1.0l0.71,-2.33l-0.25,-0.76l0.59,-0.58l-0.27,-3.43l0.47,-3.93l0.53,-0.8l0.08,-1.11l-0.38,-1.21l-0.39,-0.33l-0.04,-2.01l-1.57,-1.91l0.44,-0.54l0.85,-0.1l0.3,-0.33l4.03,19.34l0.47,0.31l16.6,-3.55l2.17,10.68l0.5,0.37l2.06,-2.5l0.97,-0.56l0.34,-1.03l1.63,-1.99l0.25,-1.05l0.52,-0.4l1.19,0.45l0.74,-0.32l1.32,-2.6l0.6,-0.46l-0.04,-0.85l0.42,0.59l1.81,0.52l3.2,-0.57l0.78,-0.86l0.07,-1.46l2.0,-0.74l1.02,-1.69l0.67,-0.1l3.16,1.5l1.81,-0.71l-0.45,1.02l0.56,0.92l1.27,0.42l0.09,0.96l1.13,0.43l0.09,1.2l0.33,0.42l-0.58,3.64l-9.0,-4.48l-0.64,0.24l-0.31,1.14l0.38,1.61l-0.52,1.62l0.41,2.28l-1.36,2.4l-0.42,1.76l-0.72,0.53l-0.42,1.11l-0.27,0.21l-0.61,-0.23l-0.37,0.33l-1.25,3.28l-1.84,-0.78l-0.64,0.25l-0.94,2.77l0.08,1.47l-0.73,1.14l-0.19,2.33l-0.89,2.2l-3.25,-0.36l-1.44,-1.76l-1.71,-0.24l-0.5,0.41l-0.26,2.17l0.19,1.3l-0.32,1.45l-0.49,0.45l-0.31,1.04l0.23,0.92l-1.58,2.44l-0.04,2.1l-0.52,2.0l-2.58,4.73l-0.75,3.16l0.14,0.76l1.14,0.55l-1.08,1.38l0.06,0.6l0.45,0.4l-2.16,2.13l-0.55,-0.7l-0.84,0.15l-3.12,2.53l-1.03,-0.56l-1.32,0.26l-0.44,0.91l0.45,1.17l-0.91,0.91l-0.73,-0.05l-2.27,1.0l-1.21,0.96l-2.18,-1.36l-0.73,-0.01l-0.82,1.58l-1.1,0.49l-1.22,1.46l-1.08,0.08l-1.98,-1.09l-1.31,-0.01l-0.61,-0.74l-1.19,-0.6l-0.31,-1.33l-0.89,-0.55l0.36,-0.67l-0.3,-0.81l-0.85,-0.37l-0.84,0.25l-1.33,-0.17l-1.26,-1.19l-2.06,-0.79l-0.76,-1.43l-1.58,-1.24l-0.7,-1.49l-1.0,-0.6l-0.12,-1.09l-1.38,-0.95l-2.0,-2.27l0.71,-2.03l-0.25,-1.62l-0.66,-1.46Z\", \"name\": \"West Virginia\"}, \"US-WY\": {\"path\": \"M218.53,207.02l10.1,-86.6l25.46,2.74l26.8,2.4l26.83,1.91l27.85,1.46l-3.67,87.11l-27.32,-1.41l-28.21,-1.97l-29.69,-2.63l-28.14,-3.02Z\", \"name\": \"Wyoming\"}, \"US-UT\": {\"path\": \"M178.67,180.38l41.53,5.44l-2.51,21.5l0.35,0.45l32.24,3.43l-8.33,87.15l-42.54,-4.67l-42.41,-5.77l16.08,-108.34l5.58,0.82ZM187.74,191.46l-0.3,0.04l-0.25,0.62l0.74,3.68l-0.81,0.19l-0.5,1.31l1.15,0.59l0.35,-0.84l0.37,-0.18l0.92,1.14l0.83,1.68l-0.25,1.0l0.16,1.45l-0.4,0.77l0.4,0.52l-0.05,0.56l1.58,1.84l0.02,0.59l1.13,1.92l0.71,-0.1l0.83,-1.74l0.08,2.28l0.53,0.94l0.06,1.8l0.99,0.47l1.65,-0.67l2.48,-1.77l0.37,-1.25l3.32,-1.44l0.17,-0.54l-0.52,-1.02l-0.68,-0.84l-1.36,-0.7l-1.87,-4.59l-0.87,-0.46l0.87,-0.92l1.3,0.6l1.33,-0.15l0.92,-0.83l-0.06,-1.12l-1.55,-0.5l-0.81,0.42l-1.17,-0.12l0.27,-0.76l-0.58,-0.79l-1.86,-0.22l-0.56,1.13l0.28,0.78l-0.35,0.69l0.55,2.44l-0.91,0.32l-0.34,-0.42l0.22,-1.8l-0.42,-0.69l-0.06,-1.74l-0.68,-0.6l-1.32,-0.11l-1.07,-1.55l-0.19,-0.69l0.64,-0.55l0.36,-1.29l-0.83,-1.38l-1.23,-0.28l-0.99,0.81l-2.73,0.2l-0.35,0.63l0.62,0.83l-0.28,0.43ZM199.13,204.0l0.03,0.02l0.04,0.11l-0.07,-0.13ZM199.17,204.81l0.31,0.91l-0.18,0.9l-0.39,-0.93l0.25,-0.88Z\", \"name\": \"Utah\"}, \"US-IN\": {\"path\": \"M600.86,189.63l1.43,0.87l2.1,0.14l1.52,-0.38l2.63,-1.39l2.73,-2.1l32.3,-4.83l8.81,57.45l-0.66,1.15l0.3,0.92l0.81,0.79l-0.66,1.14l0.49,0.8l1.12,0.04l-0.36,1.14l0.18,0.51l-1.81,0.29l-3.18,2.55l-0.43,0.17l-1.4,-0.81l-3.46,0.91l-0.09,0.78l1.19,3.1l-1.4,1.88l-1.18,0.49l-0.45,0.89l-0.31,2.6l-1.11,0.88l-1.06,-0.24l-0.47,0.47l-0.85,1.95l0.05,3.14l-0.39,1.0l-1.38,0.85l-0.93,-0.68l-1.24,0.01l-1.48,-0.69l-0.62,-1.84l-1.89,-0.73l-0.44,0.3l-0.04,0.5l0.83,0.68l-0.62,0.31l-0.89,-0.35l-0.36,0.29l-0.04,0.48l0.54,0.93l-1.08,0.68l0.14,2.37l-1.06,0.65l-0.0,0.83l-0.16,0.37l0.08,-0.5l-0.33,-0.51l-1.6,0.18l-1.4,-1.69l-0.5,-0.08l-1.67,1.5l-1.57,0.69l-1.07,2.89l-0.81,-1.07l-2.79,-0.77l-1.11,-0.61l-1.08,-0.18l-1.76,0.92l-0.64,-1.02l-0.58,-0.18l-0.53,0.56l0.64,1.86l-0.34,0.84l-0.28,0.09l-0.02,-1.18l-0.42,-0.4l-0.58,0.01l-1.46,0.79l-1.41,-0.84l-0.85,0.0l-0.48,0.95l0.71,1.55l-0.49,0.74l-1.15,-0.39l-0.07,-0.54l-0.53,-0.44l0.55,-0.63l-0.35,-3.09l0.96,-0.78l-0.07,-0.58l-0.44,-0.23l0.69,-0.46l0.25,-0.61l-1.17,-1.47l0.46,-1.16l0.32,0.19l1.39,-0.55l0.33,-1.8l0.55,-0.4l0.44,-0.92l-0.06,-0.83l1.52,-1.07l0.06,-0.69l-0.41,-0.93l0.57,-0.86l0.14,-1.29l0.87,-0.51l0.4,-1.91l-1.08,-2.54l0.22,-0.8l-0.16,-1.11l-0.93,-0.91l-0.61,-1.5l-1.05,-0.78l-0.04,-0.59l0.92,-1.39l-0.63,-2.25l1.27,-1.31l-6.5,-50.68Z\", \"name\": \"Indiana\"}, \"US-IL\": {\"path\": \"M540.07,225.55l0.86,-0.35l0.37,-0.67l-0.23,-2.33l-0.73,-0.93l0.15,-0.41l0.72,-0.69l2.42,-0.98l0.71,-0.65l0.63,-1.68l0.17,-2.11l1.65,-2.47l0.27,-0.94l-0.03,-1.22l-0.59,-1.95l-2.23,-1.88l-0.11,-1.77l0.67,-2.38l0.45,-0.37l4.6,-0.85l0.81,-0.41l0.82,-1.12l2.55,-1.0l1.43,-1.56l-0.01,-1.57l0.4,-1.71l1.42,-1.46l0.29,-0.74l0.33,-4.37l-0.76,-2.14l-4.02,-2.47l-0.28,-1.5l-0.48,-0.82l-3.64,-2.48l44.58,-4.64l-0.01,2.66l0.57,2.59l1.37,2.49l1.31,0.95l0.76,2.6l1.26,2.71l1.42,1.84l6.6,51.49l-1.22,1.13l-0.1,0.69l0.67,1.76l-0.84,1.09l-0.03,1.11l1.19,1.09l0.56,1.41l0.89,0.82l-0.1,1.8l1.06,2.31l-0.28,1.49l-0.87,0.56l-0.21,1.47l-0.59,0.93l0.34,1.2l-1.48,1.13l-0.23,0.41l0.28,0.7l-0.93,1.17l-0.31,1.19l-1.64,0.67l-0.63,1.67l0.15,0.8l0.97,0.83l-1.27,1.15l0.42,0.76l-0.49,0.23l-0.13,0.54l0.43,2.94l-1.15,0.19l0.08,0.45l0.92,0.78l-0.48,0.17l-0.03,0.64l0.83,0.29l0.04,0.42l-1.31,1.97l-0.25,1.19l0.59,1.22l0.7,0.64l0.37,1.08l-3.31,1.22l-1.19,0.82l-1.24,0.24l-0.77,1.01l-0.18,2.04l0.3,0.88l1.4,1.93l0.07,0.54l-0.53,1.19l-0.96,0.03l-6.3,-2.43l-1.08,-0.08l-1.57,0.64l-0.68,0.72l-1.44,2.95l0.06,0.66l-1.18,-1.2l-0.79,0.14l-0.35,0.47l0.59,1.13l-1.24,-0.79l-0.01,-0.68l-1.6,-2.21l-0.4,-1.12l-0.76,-0.37l-0.05,-0.49l0.94,-1.35l0.2,-1.03l-0.32,-1.01l-1.44,-2.02l-0.47,-3.18l-2.26,-0.99l-1.55,-2.14l-1.95,-0.82l-1.72,-1.34l-1.56,-0.14l-1.82,-0.96l-2.32,-1.78l-2.34,-2.44l-0.36,-1.95l2.37,-6.85l-0.25,-2.32l0.98,-2.06l-0.38,-0.84l-2.66,-1.45l-2.59,-0.67l-1.29,0.45l-0.86,1.45l-0.46,0.28l-0.44,-0.13l-1.3,-1.9l-0.43,-1.52l0.16,-0.87l-0.54,-0.91l-0.29,-1.65l-0.83,-1.36l-0.94,-0.9l-4.11,-2.52l-1.01,-1.64l-4.53,-3.53l-0.73,-1.9l-1.04,-1.21l-0.04,-1.6l-0.96,-1.48l-0.75,-3.54l0.1,-2.94l0.6,-1.28ZM585.52,295.52l0.05,0.05l0.04,0.04l-0.05,-0.0l-0.04,-0.09Z\", \"name\": \"Illinois\"}, \"US-AK\": {\"path\": \"M89.36,517.03l0.84,0.08l0.09,0.36l-0.3,0.32l-0.64,0.3l-0.15,-0.15l0.25,-0.4l-0.12,-0.31l0.04,-0.2ZM91.79,517.2l0.42,-0.02l0.19,-0.11l0.26,-0.56l1.74,-0.37l2.26,0.07l1.57,0.63l0.84,0.69l0.02,1.85l0.32,0.18l0.0,0.34l0.25,0.27l-0.35,0.09l-0.25,-0.16l-0.23,0.08l-0.41,-0.33l-0.29,-0.04l-0.69,0.23l-0.91,-0.21l-0.07,-0.26l-0.24,-0.17l0.27,-0.21l0.74,0.72l0.46,-0.02l0.2,-0.48l-0.28,-0.44l-0.03,-0.3l-0.31,-0.67l-0.96,-0.52l-1.05,0.27l-0.57,0.69l-1.04,0.3l-0.44,-0.3l-0.48,0.12l-0.06,0.12l-0.63,-0.14l-0.26,0.06l-0.22,0.24l0.2,-0.3l-0.1,-0.55l0.12,-0.79ZM99.83,520.19l0.3,-0.07l0.29,-0.28l-0.03,-0.55l0.31,0.2l-0.06,0.45l0.83,0.92l-0.93,-0.51l-0.44,0.41l-0.13,-0.54l-0.13,-0.04ZM100.07,520.81l0.0,0.04l-0.03,0.0l0.02,-0.04ZM102.01,520.78l0.05,-0.34l0.33,-0.2l0.01,-0.12l-0.58,-1.24l0.1,-0.2l0.59,-0.24l0.29,-0.3l0.65,-0.34l0.62,-0.01l0.41,-0.13l0.81,0.1l1.42,-0.06l0.64,0.15l0.49,0.27l0.88,0.11l0.27,0.15l0.23,-0.22l0.27,-0.05l0.39,0.09l0.2,0.21l0.26,-0.05l0.2,0.38l0.44,0.31l0.1,0.23l0.7,-0.06l0.3,-0.77l0.44,-0.61l0.47,-0.21l1.78,-0.45l0.5,0.04l0.37,0.23l1.13,-0.38l0.66,0.04l-0.11,0.41l0.43,0.51l0.42,0.26l0.62,0.06l0.42,-0.43l0.14,-0.42l-0.34,-0.29l-0.31,-0.03l0.15,-0.44l-0.15,-0.38l1.04,-1.0l0.83,-0.99l0.12,-0.08l0.34,0.17l0.38,-0.02l0.32,0.3l0.19,0.37l0.66,-0.29l-0.1,-0.57l-0.43,-0.58l-0.46,-0.24l0.15,-0.44l0.77,-0.47l0.36,0.04l0.68,-0.2l0.8,-0.08l0.58,0.18l0.45,-0.16l-0.12,-0.52l0.66,-0.6l0.4,0.06l0.26,-0.11l0.43,-0.52l0.34,-0.12l0.23,-0.46l-0.42,-0.3l-0.38,0.03l-0.33,0.15l-0.36,0.39l-0.51,-0.09l-0.5,0.27l-2.19,-0.52l-1.69,-0.24l-0.71,-0.26l-0.12,-0.2l0.17,-0.32l0.04,-0.44l-0.28,-0.56l0.45,-0.35l0.43,-0.13l0.36,0.38l0.04,0.25l-0.15,0.44l0.07,0.39l0.56,0.12l0.32,-0.15l-0.03,-0.3l0.16,-0.35l-0.05,-0.75l-0.84,-1.05l0.01,-0.7l-0.67,-0.19l-0.19,0.24l-0.06,0.48l-0.41,0.22l-0.09,0.03l-0.26,-0.56l-0.34,-0.09l-0.51,0.41l-0.02,0.26l-0.15,0.15l-0.38,-0.02l-0.48,0.27l-0.24,0.54l-0.22,1.13l-0.13,0.32l-0.19,0.05l-0.31,-0.31l0.1,-2.67l-0.23,-0.99l0.19,-0.33l0.02,-0.27l-0.16,-0.29l-0.53,-0.27l-0.46,0.26l-0.1,-0.07l-0.35,0.13l-0.01,-0.54l-0.54,-0.61l0.19,-0.22l0.08,-0.65l-0.16,-0.37l-0.55,-0.26l-1.89,-0.01l-0.58,-0.34l-1.01,-0.12l-0.16,-0.12l-0.07,-0.22l-0.23,-0.07l-1.06,0.53l-0.75,-0.16l-0.12,-0.44l0.3,0.09l0.48,-0.08l0.31,-0.44l-0.21,-0.49l0.37,-0.49l0.83,0.04l0.43,-0.16l0.12,-0.35l-0.14,-0.42l-1.11,-0.64l0.09,-0.27l0.34,-0.17l0.38,-0.44l1.12,-0.0l0.23,-0.09l0.19,-0.32l0.03,-0.95l0.22,-0.54l0.07,-1.42l0.25,-0.45l-0.08,-0.58l0.07,-0.2l0.88,-0.74l0.02,-0.1l-0.09,-0.02l0.19,-0.16l-0.31,-0.35l-0.27,0.05l-0.04,-0.25l-0.09,-0.04l0.57,-0.22l0.33,-0.25l0.51,-0.1l0.24,-0.25l0.42,-0.0l0.19,0.18l0.41,0.08l0.29,-0.08l0.44,-0.55l-0.3,-0.34l-0.39,-0.07l-0.05,-0.33l-0.27,-0.31l-0.6,0.4l-0.43,-0.07l-1.12,0.62l-1.04,0.06l-0.34,0.18l-0.48,-0.03l-0.12,0.5l0.4,0.64l-0.26,0.19l-0.29,0.45l-0.19,-0.09l-0.17,-0.27l-0.76,-0.04l-1.16,-0.25l-0.81,-0.4l-1.05,-0.59l-0.78,-0.61l-0.52,-0.69l0.01,-0.21l0.6,-0.1l-0.06,-0.4l0.1,-0.24l-0.51,-1.06l0.1,-0.78l-0.18,-0.52l0.33,-0.54l-0.4,-0.34l-0.23,0.0l-0.44,-0.69l-0.01,-0.2l0.59,-0.14l0.3,-0.37l-0.05,-0.44l-0.36,-0.26l0.72,0.04l0.29,-0.13l0.18,-0.25l0.63,0.01l0.08,0.51l0.56,0.51l0.32,0.49l-0.03,0.09l-0.79,0.11l-0.53,0.51l0.31,0.45l0.94,-0.08l0.4,0.24l0.26,-0.01l0.39,-0.22l0.29,0.03l0.08,0.07l-0.51,0.6l-0.05,0.38l0.22,0.43l0.46,0.24l1.42,0.07l0.28,-0.17l0.16,-0.35l0.19,-0.08l-0.2,-0.74l0.35,-0.35l-0.02,-0.33l-0.18,-0.25l0.15,-0.43l-0.08,-0.13l-0.52,-0.26l-0.77,-0.01l-0.34,0.1l-1.51,-1.2l-0.01,-0.53l-0.35,-0.39l-0.26,-0.12l-0.15,-0.38l0.55,0.15l0.53,-0.4l-0.17,-0.41l-0.7,-0.51l0.4,-0.45l-0.14,-0.5l0.31,-0.15l0.27,0.08l0.44,-0.1l0.45,0.27l0.75,-0.04l0.67,-0.44l-0.08,-0.48l-0.18,-0.19l-0.48,-0.03l-0.51,0.16l-0.43,-0.19l-1.02,-0.02l-0.26,0.14l-0.44,0.04l-0.36,0.29l-0.62,0.09l-0.15,0.12l-0.15,0.42l-0.13,-0.19l0.27,-0.52l0.36,-0.24l-0.1,-0.44l-0.48,-0.6l0.03,-0.1l0.37,0.1l0.4,-0.18l0.16,-0.22l0.07,-0.36l-0.22,-0.6l0.55,0.23l0.42,-0.5l-0.44,-0.59l0.38,0.32l0.94,0.37l0.2,-0.44l0.14,0.01l-0.04,-0.54l0.12,-0.36l0.48,-0.28l0.49,0.01l1.96,-0.47l0.8,-0.03l0.3,0.25l-0.01,0.44l0.19,0.27l-0.27,0.16l0.13,0.47l0.35,0.15l0.74,0.01l0.29,-0.39l-0.13,-0.45l0.08,-0.34l1.21,-0.11l0.29,-0.63l-0.31,-0.24l-0.93,-0.04l0.03,-0.08l0.41,-0.03l0.15,-0.63l0.72,-0.27l0.86,0.88l0.32,0.11l0.38,-0.28l0.08,-0.27l-0.04,-0.41l-0.18,-0.26l0.34,0.0l0.69,0.32l0.35,0.31l0.54,0.81l-0.06,0.29l-0.38,-0.09l-0.52,0.21l-0.13,0.47l0.43,0.24l1.07,0.06l0.05,0.52l0.31,0.3l0.91,0.49l1.02,0.09l0.53,-0.18l0.41,0.17l0.49,-0.0l1.61,-0.32l0.1,0.49l1.67,0.97l0.28,0.31l0.53,0.32l1.06,0.37l1.81,-0.2l0.56,-0.21l0.47,-0.49l0.2,-0.57l0.15,-0.95l0.61,-1.1l0.01,-0.29l-0.24,-0.88l0.14,-0.05l-0.03,-0.19l0.58,0.25l0.2,-0.1l0.86,0.0l0.36,-0.17l0.41,-0.47l0.07,-0.93l-0.19,-0.43l0.22,-0.03l0.11,-0.44l-0.23,-0.32l-0.73,-0.39l-0.29,0.12l-0.43,-0.04l-0.52,0.2l-0.21,-0.12l-0.29,-0.6l-0.31,-0.29l-0.51,0.0l-0.02,0.1l-0.52,-0.04l-0.43,-0.31l-0.56,-0.02l-0.32,0.1l-1.04,-0.24l-0.48,0.03l-0.33,0.16l0.04,-0.42l-0.29,-0.71l-0.21,-0.97l-0.49,-0.23l-0.55,-0.08l-0.29,0.09l-0.47,-0.64l-0.48,-0.4l-0.5,-0.25l-1.14,-1.02l-0.95,-0.24l-0.2,-0.27l-0.49,-0.27l-0.11,-0.23l-0.63,-0.01l-0.04,0.13l-0.9,-1.22l-1.86,-2.14l-0.25,-0.55l-0.0,-0.32l0.07,-0.19l0.27,0.06l0.27,-0.13l0.35,-0.76l-0.41,-1.02l0.05,-0.11l0.4,0.19l0.51,-0.05l0.41,-0.17l0.51,0.66l0.43,0.23l0.48,-0.4l-0.02,-0.33l-0.32,-0.66l-0.48,-0.41l-0.46,-0.78l-0.84,-0.88l-0.12,-0.02l-0.98,-1.16l-0.33,-0.52l-0.04,-0.3l-0.46,-0.96l0.41,0.03l0.54,0.45l0.34,0.15l0.44,-0.1l0.12,-0.17l0.2,0.03l0.06,-0.15l0.18,0.03l0.17,0.41l0.2,0.18l1.09,0.35l1.08,-0.18l1.53,0.45l0.14,0.13l-0.06,0.06l0.19,0.45l0.88,0.89l1.03,0.47l0.56,-0.36l-0.06,-0.35l-0.37,-0.64l1.48,0.48l0.36,0.26l0.11,0.4l0.61,0.16l1.2,0.07l0.48,0.24l1.49,0.99l0.18,0.45l-0.34,0.04l-0.1,0.06l-0.4,0.34l-0.16,0.3l-0.6,-0.28l-0.52,-0.06l-0.12,0.69l0.62,0.52l0.02,0.52l0.16,0.37l0.28,0.32l0.91,0.59l0.18,0.29l0.46,0.4l0.69,0.3l0.39,0.29l-0.14,0.25l0.02,0.32l0.38,0.24l0.2,-0.05l0.26,0.12l0.44,0.49l0.56,0.16l0.39,0.46l-0.08,0.39l0.24,0.31l0.41,0.19l0.41,-0.15l0.03,-0.15l1.39,-0.46l0.24,0.52l0.24,0.25l-0.25,0.06l0.01,0.5l0.38,0.29l0.43,0.02l0.5,-0.24l0.36,-0.41l-0.05,-0.98l-0.45,-0.65l0.19,0.01l0.65,1.54l0.23,0.25l1.6,0.95l0.53,-0.01l0.29,-0.27l0.34,-0.59l-0.02,-0.44l0.3,-0.38l-0.16,-0.23l-0.72,-0.38l-0.44,-0.04l-0.49,-0.92l-0.89,-0.53l-0.42,-0.12l-0.61,0.21l-0.32,-0.28l-0.0,-0.43l-0.16,-0.19l-0.23,-0.71l0.64,-0.39l0.29,-0.02l0.35,0.29l0.32,0.05l0.37,-0.41l-0.0,-0.15l-0.75,-1.21l-1.13,-0.68l-0.06,-0.29l0.18,-0.28l-0.15,-0.48l-0.43,-0.23l-0.43,0.29l-0.42,0.07l-0.25,-0.44l-0.53,-0.4l-0.31,-0.1l-0.25,-0.41l-1.35,-1.4l0.59,-1.11l0.15,-1.07l-0.1,-1.05l-0.51,-1.13l-0.29,-1.11l-0.36,-0.48l-0.85,-2.25l-1.06,-1.45l-0.08,-0.73l-0.38,-0.89l0.17,-0.17l0.91,-0.32l1.04,-1.04l1.08,1.08l1.75,1.29l0.84,0.44l1.33,0.95l1.37,0.54l1.36,0.24l1.49,-0.09l0.3,0.11l0.42,-0.05l0.4,-0.16l0.23,-0.26l0.3,-0.14l0.42,-0.5l0.56,-0.03l0.17,-0.31l1.66,0.14l0.96,-0.29l0.5,0.12l0.03,0.15l0.87,0.52l0.35,0.13l0.52,-0.01l0.77,0.56l0.91,0.33l0.1,0.2l0.28,-0.04l0.42,0.16l1.99,0.27l-0.05,0.31l0.11,0.18l-0.18,0.06l-0.15,0.66l0.44,0.21l0.04,0.83l0.28,0.36l0.44,-0.14l0.1,-0.13l0.05,-0.46l0.22,-0.51l1.1,0.62l0.73,0.1l0.29,-0.35l-0.22,-0.39l-0.74,-0.5l-0.43,-0.14l-0.07,-0.18l0.03,-0.25l0.76,-0.07l0.26,0.1l0.01,0.3l0.27,0.62l0.54,0.33l0.14,-0.17l0.45,0.24l0.16,-0.08l0.63,0.55l1.13,0.63l0.13,-0.03l0.81,0.55l0.59,0.22l1.21,0.25l1.27,0.12l1.06,-0.17l1.19,0.0l0.01,0.22l0.26,0.49l0.68,0.48l0.08,0.62l0.56,0.17l0.57,0.45l-0.61,-0.02l-0.77,-0.42l-0.42,0.03l-0.44,0.21l0.1,0.48l0.23,0.26l-0.19,0.32l0.18,0.59l0.33,0.11l0.33,-0.12l0.64,0.36l0.3,0.06l0.31,-0.08l0.23,-0.23l0.33,-0.02l0.39,0.36l0.26,0.01l0.25,0.18l0.33,0.02l0.27,-0.16l0.13,0.09l0.16,0.38l-0.54,-0.04l-0.29,0.34l0.21,0.4l0.2,0.11l0.07,0.35l0.89,0.58l-0.04,0.13l0.18,0.3l0.49,0.21l0.94,-0.04l0.96,0.68l0.58,0.26l0.32,0.03l0.37,0.42l0.23,0.1l0.1,0.31l0.34,0.26l0.21,0.38l0.34,0.08l0.26,-0.12l0.25,0.23l-0.55,0.05l-0.29,0.34l-0.41,0.04l-0.18,0.63l0.35,0.33l1.4,0.72l-0.08,0.69l1.48,0.96l0.49,0.67l0.27,0.15l0.49,-0.16l1.05,0.48l0.24,-0.05l0.38,0.32l0.16,0.58l1.1,0.42l0.72,0.06l0.21,0.19l0.85,0.38l0.32,0.34l0.31,0.09l0.59,0.53l0.2,0.37l0.73,0.47l0.25,0.29l0.1,0.53l0.48,0.29l0.55,0.03l0.31,0.44l0.56,0.33l-0.11,0.34l0.39,0.41l1.66,1.19l0.76,0.36l0.16,-0.03l1.78,1.0l0.42,0.4l0.69,0.34l0.47,0.65l0.08,-0.08l-0.02,0.25l0.22,0.06l0.5,0.55l0.02,0.21l0.5,0.23l0.54,0.42l1.19,0.58l0.8,0.03l0.63,0.31l0.03,0.31l0.43,0.12l0.33,-0.2l0.19,-0.0l0.43,0.12l1.02,0.51l0.05,0.25l0.41,0.27l0.22,-0.19l0.58,0.53l0.31,0.09l0.53,0.55l-0.01,0.24l0.49,0.42l0.02,0.24l0.27,0.43l0.55,0.34l0.18,0.4l0.42,0.15l0.58,0.51l0.56,0.96l0.35,0.26l0.53,0.01l0.15,0.11l-23.69,51.51l0.09,0.46l1.53,1.4l0.52,0.02l0.19,-0.15l1.17,1.29l0.41,0.12l1.37,-0.4l1.79,0.68l-0.86,0.96l-0.08,0.38l0.35,1.01l0.91,0.92l-0.08,0.65l0.1,0.44l2.43,4.76l-0.2,1.48l-0.29,0.38l0.19,0.62l0.58,0.12l0.83,-0.25l0.54,-0.07l0.07,0.08l0.03,0.1l-0.66,0.3l-0.33,0.34l0.29,0.54l0.35,-0.0l0.37,-0.18l0.25,0.12l0.02,0.21l0.44,0.11l0.09,0.11l0.26,1.19l-0.17,0.03l-0.1,0.51l0.24,0.32l0.94,0.22l0.04,0.16l-0.27,0.18l0.01,0.12l0.21,0.32l0.21,0.09l-0.05,0.37l-0.24,-0.02l-0.1,-0.46l-0.35,-0.31l-0.11,0.06l-0.28,-0.47l-0.47,-0.03l-0.26,0.35l-0.45,0.01l-0.08,0.13l-0.26,-0.63l-0.14,0.01l-0.35,-0.41l-0.47,-0.12l-0.89,-1.43l0.11,-0.01l0.32,-0.49l-0.08,-0.26l-0.34,-0.28l-0.51,0.01l-0.47,-0.93l-0.05,-0.15l0.12,-0.53l-0.08,-0.41l-0.52,-1.06l-0.46,-0.7l-0.19,-0.07l0.1,-0.61l-0.29,-0.28l-0.72,-0.14l-1.24,-1.44l-0.27,-0.47l-0.01,-0.21l-0.32,-0.23l-0.24,-0.34l-0.28,-0.11l-0.49,-0.63l0.39,-0.11l0.12,-0.23l0.05,0.05l0.59,-0.3l-0.02,0.13l-0.16,0.06l-0.16,0.55l0.3,0.41l0.38,0.07l0.43,-0.3l0.25,-1.03l0.15,-0.22l0.42,0.2l0.36,0.46l0.36,0.04l0.35,-0.35l-0.47,-0.83l-0.69,-0.39l-0.27,-0.91l-0.35,-0.63l-0.4,-0.17l-0.67,0.44l-0.39,0.06l-0.79,0.37l-1.9,-0.05l-1.0,-0.5l-0.45,-0.34l-1.46,-1.5l0.23,-0.14l0.21,-0.32l0.16,-0.74l-0.43,-0.94l-0.52,-0.09l-0.33,0.19l-0.12,0.52l-0.6,-0.04l-0.85,-0.89l-2.81,-1.97l-1.68,-0.48l-1.62,-0.65l-1.13,-0.19l-0.1,-0.53l-0.27,-0.5l0.13,-0.25l-0.02,-0.26l-0.22,-0.25l-0.8,-0.28l-0.36,-0.35l-0.17,-0.01l-0.13,-0.55l-0.2,-0.34l-0.2,-0.12l0.7,-0.5l0.09,-0.27l-0.09,-0.08l0.21,-0.27l0.23,-0.09l0.38,0.08l0.38,-0.17l0.18,-0.32l-0.03,-0.34l-0.35,-0.22l-0.55,-0.07l-0.81,0.27l-0.24,0.2l-0.57,0.02l-0.56,0.35l-0.61,0.15l-0.2,-0.13l-0.19,-0.59l-0.58,-0.63l0.77,-0.37l0.19,-0.38l-0.32,-0.45l-0.53,-0.01l-0.15,-0.48l-0.19,-0.17l0.09,-0.49l-0.16,-0.25l0.04,-0.22l-0.31,-0.55l-0.43,-0.22l-0.53,0.17l-0.07,-0.2l-0.27,-0.03l-0.09,-0.14l0.22,-0.56l0.26,0.03l0.08,-0.09l0.65,0.37l0.38,0.07l0.42,-0.49l-0.14,-0.42l-0.27,-0.26l-1.05,-0.52l-1.54,0.27l-0.1,-0.21l-0.41,-0.3l-0.42,-0.01l-0.08,-0.23l-0.47,0.02l-0.21,-0.16l0.21,-0.26l-0.05,-0.39l0.14,-0.4l-0.28,-0.27l-0.25,-0.05l0.21,-0.77l-0.33,-0.28l-0.29,0.02l-1.36,0.57l0.02,-0.11l-0.34,-0.35l-1.19,-0.19l-0.14,0.25l-0.55,0.26l0.08,0.49l0.21,0.14l-0.01,0.1l-0.83,-0.27l-0.63,-0.03l-0.23,0.49l-0.51,0.38l0.12,0.52l0.31,0.16l0.46,-0.02l-0.05,0.11l-0.98,0.16l-0.3,0.14l-0.16,0.16l-0.05,0.46l0.37,0.28l0.83,-0.12l0.12,0.14l-0.04,0.25l0.31,0.21l-0.27,0.12l-0.15,0.24l-0.51,-0.02l-0.23,0.34l-0.3,0.12l0.05,0.54l-0.3,0.32l-0.12,-0.14l-0.66,0.24l-0.32,-0.27l-0.44,-0.13l-0.32,-0.39l0.11,-0.5l-0.38,-0.29l-0.64,0.04l0.13,-0.4l-0.05,-0.34l-0.23,-0.26l-0.26,-0.07l-0.4,0.16l-0.47,0.73l-0.25,-0.01l-0.23,-0.49l-0.46,-0.07l-0.37,0.4l-0.4,-0.06l-0.16,0.33l-0.29,-0.31l-0.42,-0.03l-0.26,0.25l-0.01,0.21l-0.31,-0.08l-0.11,-0.32l-0.12,-0.03l-0.37,0.06l-0.72,0.4l-0.01,-0.27l-0.13,-0.08l-0.8,-0.04l-0.38,0.2l-0.0,0.45l-0.09,0.05l-1.16,0.08l-0.3,0.13l-0.87,-0.77l-0.22,-0.05l-0.29,0.29l-0.4,-0.28l-1.02,-0.03l0.03,-0.13l-0.35,-0.39l-0.01,-0.13l0.45,0.02l0.16,-0.37l0.53,0.01l0.43,0.3l0.3,0.45l0.49,-0.04l0.2,-0.43l0.23,0.09l0.44,-0.04l0.48,-0.17l0.06,-0.15l0.45,-0.23l0.46,-0.08l0.32,-0.52l-0.21,-0.37l-0.49,-0.19l-1.84,0.04l-0.57,-0.71l-0.07,-0.28l1.28,-0.98l1.62,-0.44l0.37,-0.26l0.33,-0.45l0.46,-0.1l0.65,-0.89l0.14,-1.04l0.36,-0.03l0.74,0.3l1.54,-0.17l1.4,0.03l0.01,0.5l0.23,0.42l0.56,0.48l1.06,0.16l0.14,0.1l0.28,0.41l0.4,0.26l1.19,1.07l0.2,0.34l0.25,0.13l0.5,-0.37l0.0,-0.44l-0.13,-0.39l-0.42,-0.46l-0.43,-0.13l-0.32,-0.52l-0.43,-0.35l-0.69,-1.19l0.45,-0.11l0.44,-0.3l0.35,0.02l0.33,-0.17l1.56,0.33l0.37,-0.06l0.15,-0.62l-0.09,-0.11l-0.67,-0.46l-0.84,-0.3l-0.61,-0.04l-0.74,0.14l-0.37,0.19l-0.29,0.35l-0.76,-0.52l-0.11,-0.24l-0.42,-0.02l-0.16,-0.12l0.14,-0.2l-0.17,-0.67l-0.09,-0.02l-1.07,0.27l-0.85,-0.19l-0.49,0.0l-0.85,0.41l-0.65,-0.15l-0.6,-0.29l-1.18,0.04l-0.71,0.35l-0.19,0.5l-0.35,-0.15l-0.65,0.04l-0.5,0.24l-0.62,0.03l-0.54,0.15l-0.41,0.33l-0.12,0.36l-0.49,0.22l-0.59,-0.02l-0.4,-0.27l-0.26,-0.68l-0.43,-0.32l-0.3,-0.11l-0.42,0.02l-0.3,0.28l0.16,0.51l0.31,0.08l0.01,0.37l0.37,0.61l0.21,0.72l-0.38,0.08l-0.35,0.26l-0.33,-0.06l-0.56,-0.39l-0.98,-0.37l-0.58,0.21l0.02,0.44l-0.07,-0.38l-0.32,-0.34l-0.42,0.19l-0.23,0.4l-0.2,-0.38l-0.81,0.14l-0.08,0.05l-0.02,0.41l-0.37,-0.32l-0.33,-0.04l-0.36,0.28l0.13,0.39l-1.49,-0.27l-0.16,0.49l-0.25,0.14l-0.28,0.36l-0.51,0.04l-0.02,0.17l-0.2,0.09l0.03,0.42l-0.16,0.27l-0.01,0.39l0.33,0.34l0.59,-0.05l0.39,0.38l0.56,0.31l0.08,0.49l0.23,0.34l0.3,0.19l0.03,0.3l-0.64,0.54l-0.5,-0.05l-0.44,0.18l-0.88,-0.46l-0.37,0.02l-0.48,0.41l-0.2,-0.12l-0.45,-0.01l-0.34,0.59l-0.75,-0.12l-0.4,0.05l-0.27,0.3l-0.1,-0.02l0.07,0.06l-0.11,0.01l0.0,0.1l-0.42,-0.28l-0.36,0.33l-0.19,-0.1l-0.32,0.19l-0.3,-0.11l-0.37,0.07l-0.53,-0.44l-0.45,-0.15l-0.9,0.53l-0.18,-0.15l-0.71,-0.02l-0.45,0.28l-0.15,-0.37l-0.41,-0.28l-0.42,0.1l-0.43,0.49l-0.37,-0.15l-0.28,0.31l-0.47,-0.08l-0.4,-0.43l-0.4,0.07l-0.3,0.24l-0.14,-0.11l-0.43,-0.05l-0.14,0.08l-1.45,-0.04l-0.31,0.12l-0.22,0.28l0.24,0.95l-0.31,-0.03l-0.15,0.18l-0.69,-0.24l-0.41,-0.28l-0.26,0.05l-0.26,0.26l-0.2,-0.24l-0.49,0.22l-0.65,0.09l-0.32,-0.22l-0.27,0.2l-0.19,-0.65l-0.39,-0.22l-0.43,0.08l-0.28,0.31l-0.44,0.09l-0.26,-0.07l-0.14,0.34l-0.06,-0.31l-0.26,-0.25l-0.54,-0.14l-1.29,-0.05l-0.62,0.31l-0.42,-0.34l-0.51,-0.04l-0.84,0.27l-0.73,0.11l-0.16,0.12l-0.11,0.56l-0.26,-0.07l-0.44,0.3l-0.03,0.21l-0.23,0.15l-0.26,-0.25l-0.37,-0.03l-0.36,0.17l-0.6,-0.33l-0.87,-0.22l-0.41,-0.18l-0.09,-0.37l-0.55,-0.15l-0.25,0.15l-0.71,-0.67l-0.41,0.02l-0.78,-0.24l-0.4,0.21ZM111.25,502.71l-0.44,0.21l-0.03,-0.02l0.24,-0.26l0.23,0.07ZM128.45,468.26l-0.1,0.14l-0.06,0.02l0.02,-0.15l0.14,-0.02ZM191.55,470.09l-0.0,0.04l-0.02,-0.04l0.03,-0.01ZM191.85,541.2l-0.08,-0.21l0.06,-0.51l0.25,-0.06l0.08,0.39l-0.31,0.39ZM165.84,518.29l-0.19,0.37l-0.34,0.04l-0.07,0.31l-0.27,-0.07l-0.45,0.06l-0.04,-0.09l0.46,-0.29l0.06,-0.15l0.84,-0.19ZM162.12,521.34l0.09,0.0l-0.06,0.02l-0.02,-0.03ZM162.26,521.34l0.08,-0.02l0.01,0.04l-0.04,0.04l-0.05,-0.05ZM141.64,514.73l0.19,0.06l0.26,0.22l-0.46,0.03l-0.07,-0.12l0.08,-0.19ZM132.07,521.13l-0.0,0.0l0.0,-0.0l0.0,0.0ZM132.06,520.84l-0.02,-0.07l0.06,-0.01l-0.03,0.08ZM109.91,522.38l0.07,-0.02l0.05,0.12l-0.03,0.01l-0.09,-0.11ZM107.83,523.67l0.01,0.02l-0.02,0.0l0.0,-0.02l0.01,-0.01ZM136.02,515.64l-0.01,-0.04l0.07,0.01l-0.06,0.03ZM199.71,549.76l0.43,-0.06l0.87,0.3l0.36,-0.05l0.76,-0.54l0.39,-0.87l0.67,-0.03l0.47,-0.34l0.17,-0.49l0.96,0.19l1.89,-0.14l0.49,0.7l0.06,0.43l0.38,0.59l-0.1,0.26l-0.29,0.17l-0.1,0.55l0.11,0.16l-0.11,0.33l0.13,0.53l0.17,0.24l0.69,0.46l0.02,0.37l0.3,0.56l0.35,0.24l0.08,0.34l-0.15,0.26l0.26,1.28l1.33,1.5l0.24,0.78l-0.64,-0.19l-0.38,0.04l-0.33,0.37l-0.51,0.26l-0.01,0.29l-0.38,0.15l-0.21,0.29l-0.52,-0.98l-0.84,-0.64l0.11,-0.44l-0.27,-1.06l0.14,-0.11l0.26,-1.09l-0.26,-0.26l0.04,-0.09l-0.12,-0.01l0.04,-0.06l-0.09,0.05l-0.1,-0.1l-0.04,0.1l-0.12,-0.01l-0.03,-0.07l0.24,-0.92l0.1,-1.07l-0.15,-1.05l0.51,-0.94l0.02,-0.37l-0.66,-0.25l-0.5,0.69l-0.24,-0.13l-0.45,0.11l0.01,0.55l-0.32,0.35l0.3,1.04l-0.34,0.85l0.13,1.32l-0.11,0.36l0.04,0.39l-0.27,0.34l0.03,1.86l-0.28,0.29l-0.27,-0.31l0.02,-1.36l-0.28,-0.43l-0.53,0.1l-0.08,0.1l-0.88,-0.14l0.22,-0.05l0.2,-0.25l0.2,-0.91l-0.12,-0.1l-0.13,-1.06l0.88,0.13l0.45,-0.45l-0.11,-0.33l-0.74,-0.45l-0.23,0.1l0.0,-0.84l-0.33,-0.34l-0.31,-0.01l-0.29,0.56l-0.24,0.06l-0.27,0.41l0.12,0.13l-0.5,-0.23l0.24,-0.5l-0.28,-0.54l-0.29,-0.02l-0.18,-0.5l-0.47,-0.15l-0.19,0.31l-0.22,-0.47ZM201.64,551.89l0.21,0.2l-0.19,0.19l-0.03,-0.38ZM210.83,558.1l0.42,0.83l-0.23,0.38l0.09,0.66l0.47,1.27l0.06,1.07l0.15,0.48l-0.33,-0.38l-1.31,-0.73l-0.26,-0.05l0.19,-0.2l-0.17,-0.39l0.14,-0.1l0.31,-0.63l-0.47,-0.31l-0.27,0.01l-0.75,0.68l-0.11,-0.36l0.09,-0.18l-0.03,-0.41l0.26,-0.33l0.36,-0.19l0.16,-0.56l0.43,-0.42l0.36,0.09l0.44,-0.23ZM211.88,563.05l1.25,5.46l-0.54,0.45l0.03,0.64l0.81,0.55l-0.47,0.67l0.05,0.52l0.58,0.54l-0.08,0.3l0.06,0.48l-0.14,0.55l0.15,0.3l0.2,0.13l0.9,0.26l1.46,1.84l1.18,0.8l0.34,0.76l0.55,0.42l-0.01,0.53l0.1,0.24l0.78,0.58l0.49,0.11l0.03,0.16l-0.16,0.69l-0.68,0.46l-0.31,0.4l-0.04,0.78l-0.31,0.67l0.11,0.99l-0.15,0.54l0.03,0.33l-0.4,0.17l-1.34,1.4l-0.41,0.31l-0.48,0.16l-0.2,-0.13l-0.28,0.01l0.12,-0.5l-0.16,-0.42l-0.64,0.07l-0.08,0.17l-0.1,-0.51l0.24,-0.03l0.12,0.14l0.5,0.14l1.27,-0.81l0.75,-0.65l-0.23,-0.63l-0.48,0.07l0.01,-0.13l-0.37,-0.36l-0.54,0.12l0.59,-1.72l0.0,-0.38l0.15,-0.3l-0.06,-0.43l0.09,-0.51l-0.36,-0.24l-0.06,-0.35l-0.27,-0.49l0.49,-0.15l0.35,-0.35l0.18,-0.48l-0.43,-0.27l-0.43,0.08l-0.61,0.31l-0.45,0.04l-0.55,-0.29l-1.43,0.28l-0.59,-0.05l0.17,-0.09l0.2,-0.36l0.21,-0.85l0.32,0.02l0.81,0.41l0.31,0.03l0.71,-0.34l-0.07,-0.49l-0.33,-0.19l-0.4,0.02l-0.88,-0.43l0.03,-0.84l-0.23,-0.29l-0.46,-0.26l0.02,-0.43l-0.43,-0.61l0.27,-0.3l-0.16,-0.68l-0.35,-0.03l0.1,-0.07l0.01,-0.21l0.42,-0.17l0.22,-0.62l-0.38,-0.26l-0.67,0.18l-0.27,-0.29l-0.2,-0.32l-0.06,-0.35l0.33,-0.21l0.18,-1.04l-0.39,-0.3l-0.47,0.16l-0.17,-0.08l-0.29,-0.36l0.13,-0.2l-0.14,-0.35l-0.45,-0.27l1.08,-0.08l0.35,-0.42l-0.28,-0.52l-0.49,0.08l-0.44,-0.14l0.18,-0.32l-0.03,-0.32l-0.51,-0.26l0.04,-0.13l0.64,0.01l0.41,0.72l0.28,0.23l0.31,0.02l0.28,-0.15l0.04,-0.52l-0.24,-0.23l-0.1,-0.4l-0.37,-0.63l-0.78,-0.91l0.12,-0.39l1.23,0.83l0.52,-0.45ZM214.19,585.45l-0.17,0.68l-0.05,-0.01l0.09,-0.42l0.13,-0.25ZM215.44,583.76l-0.46,0.24l-0.25,-0.22l-0.63,0.14l0.05,-0.14l0.52,-0.28l0.76,0.25ZM211.63,577.78l-0.08,0.43l0.26,0.27l-0.46,0.4l-0.51,-0.23l-0.26,0.45l0.06,0.32l-0.15,-0.2l0.08,-0.67l0.25,-0.15l0.49,-0.04l0.32,-0.57ZM209.08,567.17l-0.25,-0.24l0.08,-0.14l0.49,0.2l-0.32,0.18ZM138.39,458.34l-0.47,-0.44l0.06,-0.45l0.41,0.27l0.0,0.62ZM108.63,500.59l-0.13,0.01l0.09,-0.03l0.04,0.02ZM211.75,580.86l0.58,-0.24l-0.2,0.44l0.02,0.52l-0.22,-0.23l-0.18,-0.5ZM212.61,580.43l0.18,-0.49l-0.1,-0.18l0.52,-0.05l0.31,-0.26l0.18,-0.36l0.14,-0.03l0.14,-0.52l0.57,-0.03l0.29,1.05l0.12,1.09l-0.15,0.19l0.03,0.12l-0.16,0.04l-0.27,0.73l-0.28,0.21l-0.2,-0.36l0.13,-1.47l-0.39,-0.42l-0.41,0.19l-0.18,0.46l-0.46,0.07ZM211.52,574.36l0.23,0.31l0.37,0.12l0.01,0.48l-0.14,0.07l-0.12,-0.08l-0.4,-0.44l-0.11,-0.22l0.15,-0.24ZM209.53,575.0l0.17,-0.21l0.28,-0.04l-0.06,0.38l0.09,0.09l0.27,0.14l0.34,0.0l0.41,0.28l0.04,0.12l-0.35,0.14l0.09,0.38l-0.06,0.17l-0.28,0.08l0.14,-0.47l-0.34,-0.41l-0.06,-0.25l-0.69,-0.39ZM210.36,574.41l0.1,-0.07l0.07,0.06l-0.0,0.01l-0.16,-0.0ZM209.54,571.91l0.03,-0.1l0.32,-0.15l0.14,-0.29l-0.04,-0.37l0.05,-0.1l0.34,1.01l-0.09,-0.09l-0.52,-0.06l-0.15,0.21l-0.08,-0.04ZM206.97,580.16l0.1,-0.52l-0.42,-0.36l0.1,-0.03l-0.05,-0.5l-0.28,-0.2l0.14,-0.17l0.28,-0.1l0.36,0.03l0.21,-0.67l-0.39,-0.23l-1.18,-0.03l-0.2,-0.17l0.19,-0.17l0.46,-0.05l0.67,-0.52l0.19,-0.54l-0.08,-0.32l-0.26,-0.01l0.23,-0.63l0.14,0.22l0.53,0.22l0.24,0.31l0.4,0.27l0.42,1.0l0.12,0.56l-0.14,0.62l-0.17,-0.03l-0.11,0.19l-0.32,0.19l0.02,0.34l-0.75,0.25l-0.08,0.43l0.07,0.45l0.56,-0.01l-0.02,0.13l0.38,0.45l0.22,-0.01l0.23,0.23l0.25,-0.06l0.21,0.38l-0.39,-0.07l-0.32,0.43l-0.06,0.32l0.22,0.37l0.41,0.04l0.21,0.09l-0.2,-0.03l-0.41,0.47l-0.47,0.15l0.11,0.7l0.38,0.27l-0.13,0.2l0.18,0.53l-0.2,0.06l-0.06,0.23l-0.22,-0.08l0.18,-0.35l-0.4,-1.09l0.11,-0.08l0.05,-0.73l-0.28,-0.13l-0.15,-0.32l0.01,-0.81l-0.21,-0.78l-0.46,-0.01l-0.11,0.08l-0.05,-0.39ZM207.26,574.01l-0.02,-0.27l-0.21,-0.27l0.29,-0.14l0.03,0.3l0.15,0.15l-0.04,0.21l-0.2,0.0ZM206.9,573.41l-0.43,-0.14l-0.38,-0.35l0.21,-0.11l0.28,0.14l0.04,0.28l0.27,0.18ZM208.72,573.09l0.26,-0.17l0.43,0.23l0.25,-0.0l-0.15,0.15l-0.09,0.37l-0.14,0.04l-0.23,-0.02l-0.33,-0.6ZM206.49,567.38l1.0,0.59l0.81,0.7l0.06,0.4l-0.46,0.04l-0.19,0.76l0.03,0.31l0.19,0.26l-0.17,0.31l0.43,0.76l-0.15,0.1l-0.85,-0.57l-0.44,0.12l-0.01,0.16l-0.22,-0.06l0.24,-0.51l-0.06,-0.27l0.08,0.03l0.08,-0.27l-0.06,-0.29l0.42,-0.7l0.08,-0.44l-0.28,-0.43l0.06,-0.22l-0.32,-0.31l-0.25,-0.5ZM208.6,569.24l0.34,0.07l0.2,-0.33l0.2,0.07l0.2,0.44l-0.0,0.19l-0.3,0.2l-0.13,0.86l-0.14,-0.44l-0.01,-0.6l-0.07,-0.17l-0.2,-0.03l-0.09,-0.25ZM209.57,569.66l0.0,-0.0l0.03,-0.02l-0.04,0.02ZM204.29,565.52l0.44,-0.15l-0.03,-0.36l0.29,-0.2l0.29,0.26l0.51,-0.3l-0.08,0.47l-0.15,0.23l-0.33,-0.04l-0.36,0.3l-0.27,-0.06l-0.16,0.09l0.02,0.12l-0.36,0.07l0.19,-0.44ZM206.36,564.27l-0.49,0.31l-0.02,-0.59l-0.46,-0.14l-0.02,-0.1l0.53,-0.05l0.24,-0.65l-0.35,-0.23l-0.51,-0.03l-0.1,-0.28l0.09,-0.84l0.2,-0.34l0.16,-0.72l0.07,-1.03l0.34,-0.33l0.69,0.17l0.26,0.31l-0.04,0.27l-0.16,0.12l0.03,0.24l-0.13,0.05l-0.05,0.65l-0.22,0.57l0.02,0.09l0.33,0.11l0.23,1.01l-0.15,0.27l0.43,0.45l-0.08,0.23l-0.57,-0.12l-0.09,0.19l-0.15,0.04l-0.01,0.39ZM206.15,574.28l-0.13,-0.03l0.0,-0.02l0.15,-0.04l-0.02,0.09ZM205.18,574.32l-0.02,0.0l0.01,-0.01l0.01,0.0ZM204.96,570.25l-0.05,-0.24l0.09,0.22l-0.04,0.01ZM205.25,569.02l-0.25,0.19l-0.3,-0.19l-0.18,-0.37l-0.42,-0.07l0.04,-0.08l0.41,0.09l0.15,-0.2l0.31,0.17l0.28,-0.13l0.03,0.52l-0.07,0.07ZM198.99,558.2l0.09,-0.07l0.23,0.49l-0.21,-0.07l-0.11,-0.35ZM199.36,558.71l0.38,0.44l0.56,-0.45l-0.44,-1.09l0.59,0.02l0.03,-0.77l0.24,0.32l0.51,0.01l0.2,-0.29l0.29,-0.06l0.19,0.34l0.24,0.12l0.18,0.27l-0.28,0.14l-0.69,-0.17l-0.13,0.26l-0.17,-0.1l-0.57,0.26l0.08,0.42l0.27,0.54l0.56,0.48l0.25,0.5l0.39,0.36l-0.12,0.15l0.09,0.44l-0.94,-1.32l-0.28,-0.2l-0.61,0.35l0.06,0.34l-0.2,0.14l0.2,0.7l0.21,0.07l-0.14,0.51l0.2,0.13l0.05,0.18l-0.28,0.06l-0.12,-0.56l-0.37,-0.57l0.25,-0.15l-0.16,-0.49l-0.21,-0.17l-0.02,-0.33l-0.28,-0.49l-0.01,-0.31ZM202.27,558.92l0.38,-0.28l0.43,-0.1l0.76,0.39l0.05,0.17l0.43,0.38l-0.11,0.18l-0.41,-0.45l-0.58,-0.11l-0.2,0.41l0.19,0.59l-0.97,-1.19ZM202.11,560.96l0.33,0.1l0.14,0.21l0.26,0.09l0.85,-0.01l-0.23,1.25l-0.31,-0.14l-1.03,-1.5ZM201.29,562.69l0.18,0.07l0.33,-0.09l0.0,0.25l0.48,0.21l0.22,0.28l-0.11,0.08l0.12,0.52l-0.05,0.29l0.23,0.34l-0.06,0.8l0.13,0.32l-0.1,0.03l-0.14,0.56l-0.14,0.99l0.02,0.73l-0.25,0.74l-0.22,-0.02l-0.19,0.34l-0.01,0.5l-0.44,1.06l-0.2,-0.86l-0.08,-0.92l0.3,-0.02l0.63,-0.49l-0.06,-0.73l-0.22,-0.05l0.02,-0.45l-0.19,-0.26l-0.25,-0.01l-0.16,-0.59l-0.47,-0.03l0.24,-0.17l0.01,-0.27l0.65,-0.05l0.22,-0.32l-0.13,-0.51l-0.53,-0.24l0.57,-0.27l-0.34,-1.16l-0.33,-0.12l0.28,-0.19l0.04,-0.3ZM199.27,560.14l0.0,0.0l-0.01,0.0l0.0,-0.0ZM199.1,564.31l0.25,-0.07l0.1,-0.06l-0.12,0.15l-0.23,-0.02ZM199.63,563.32l0.06,-0.2l-0.05,-0.13l0.09,0.13l-0.1,0.2ZM162.15,525.49l0.25,-0.21l0.11,-0.0l-0.2,0.31l-0.16,-0.1ZM136.7,524.68l0.22,0.25l0.59,-0.1l0.04,-0.44l0.61,0.38l0.29,-0.23l0.18,-0.67l0.1,-0.05l0.25,0.13l0.16,-0.06l-0.14,0.5l0.39,0.72l-0.5,0.38l-0.19,-0.72l-0.36,-0.02l-0.69,0.57l-0.12,-0.24l-0.46,0.06l-0.15,0.16l-0.22,-0.52l-0.13,-0.04l0.04,-0.14l0.07,0.07ZM139.88,525.13l-0.03,-0.01l0.02,-0.02l0.01,0.03ZM127.78,528.13l0.49,-0.13l0.09,0.05l-0.34,0.29l-0.18,0.01l-0.06,-0.22ZM128.01,526.82l0.09,-0.93l-0.34,-0.41l0.27,-0.06l0.19,-0.29l0.22,-0.02l0.24,-0.25l0.44,0.22l0.16,-0.11l0.5,0.1l0.1,-0.23l0.15,-0.03l0.38,0.09l0.25,0.25l-0.43,0.12l0.02,0.5l0.44,0.31l-0.25,0.64l0.13,1.11l0.36,0.59l0.43,0.15l-0.37,0.07l-0.19,0.39l-0.11,-0.05l0.03,-0.41l-0.23,-0.36l-0.69,-0.05l-0.43,-0.59l-0.47,-0.4l-0.65,-0.34l-0.26,-0.01ZM131.4,528.57l0.28,-0.39l-0.19,-0.6l0.07,-0.55l0.15,-0.28l0.3,0.13l0.31,-0.27l0.44,0.14l0.52,-0.02l0.3,-0.22l0.26,0.17l0.23,-0.03l0.19,0.33l0.66,-0.29l0.18,-0.29l0.28,0.22l-0.13,0.25l-0.0,0.39l0.26,0.35l0.46,-0.02l0.28,-0.39l0.28,0.18l0.44,-0.16l0.31,0.17l0.08,-0.05l-0.05,0.23l-0.73,0.21l-0.21,0.41l0.22,0.27l-0.07,0.65l0.3,0.23l0.29,0.05l-0.5,0.18l-0.19,-0.24l-0.3,-0.08l-0.09,-0.22l-0.26,-0.17l-0.13,-0.32l-0.96,-0.67l-0.23,0.18l-0.65,0.18l-0.19,0.27l0.12,0.28l-0.38,-0.39l-0.44,0.12l-0.19,0.46l-0.91,-0.26l-0.07,0.08l-0.35,-0.23ZM134.19,529.01l0.07,-0.02l0.09,0.03l-0.15,-0.01l-0.01,0.0ZM134.4,529.04l0.27,0.1l0.23,0.58l-0.25,-0.11l0.04,-0.1l-0.29,-0.47ZM135.83,526.14l0.09,-0.06l0.01,0.01l-0.11,0.04ZM132.89,525.47l-0.57,-0.58l0.11,-0.17l0.27,-0.08l0.34,0.07l0.08,0.37l-0.22,0.39ZM98.14,450.76l0.34,-0.44l0.56,-0.16l0.06,0.49l-0.13,0.02l0.1,0.29l0.7,0.54l0.29,0.6l0.36,0.4l-0.66,-0.36l-1.21,-0.26l-0.45,-0.8l0.04,-0.32ZM100.81,452.78l1.01,0.2l0.26,0.2l0.38,0.11l0.3,0.33l0.23,0.8l-0.26,0.19l-0.26,0.4l0.43,0.51l0.28,0.71l0.39,0.33l-0.09,0.31l0.05,0.32l0.21,0.31l0.5,0.32l0.0,0.35l-0.82,-0.26l-0.09,0.09l-0.51,-0.1l-0.33,0.07l-0.08,-0.93l-0.57,-1.1l0.12,-0.48l-0.3,-0.98l-0.39,-0.84l-0.28,-0.35l-0.01,-0.23l-0.17,-0.28ZM104.84,458.76l0.28,0.01l0.41,0.53l-0.25,0.05l-0.44,-0.59ZM96.98,478.79l0.06,-0.22l1.37,1.26l0.38,-0.0l0.32,-0.21l0.21,0.06l0.2,0.25l0.72,-0.01l-0.01,0.32l0.69,0.19l0.2,0.27l-0.05,0.32l0.09,0.16l0.27,0.29l0.49,0.19l0.07,0.2l-0.23,0.33l-0.32,0.22l-0.42,1.13l-0.7,-0.22l-0.36,-0.42l-0.19,0.11l-0.26,-0.08l-0.29,-0.35l-0.42,-0.13l-0.26,-0.41l-0.51,-0.41l-0.61,-1.56l0.07,-0.19l-0.47,-0.5l0.04,-0.31l-0.09,-0.3ZM97.68,522.17l0.05,-0.07l0.04,-0.11l0.07,0.18l-0.15,-0.01ZM98.03,522.39l0.04,0.02l-0.0,0.03l-0.03,-0.05ZM80.23,514.88l0.08,-0.15l0.69,0.24l0.38,-0.02l1.55,-0.69l0.18,0.0l0.16,0.37l0.44,0.39l0.27,0.08l0.4,-0.16l0.54,0.24l0.6,-0.01l0.53,0.26l0.44,0.41l0.03,0.72l-0.26,0.4l-0.13,0.44l-0.31,0.06l-0.22,0.21l-0.27,0.01l-0.3,-0.08l-0.46,-0.58l-1.38,-0.93l-0.45,-0.11l-0.76,0.03l-0.42,0.3l-0.21,0.03l-0.91,-0.42l-0.33,-0.34l0.14,-0.67ZM74.26,514.0l0.03,-0.25l0.32,0.05l0.02,0.35l-0.37,-0.15ZM64.81,513.23l0.09,-0.01l0.13,0.09l-0.17,0.0l-0.05,-0.08ZM70.29,514.35l-0.12,-0.05l-0.16,0.39l-0.25,-0.27l-0.36,0.08l0.24,-0.12l0.32,0.02l0.41,-0.61l-0.31,-0.35l-0.31,-0.63l-0.3,-0.24l0.05,-0.29l0.13,-0.06l0.67,0.13l0.43,0.28l0.16,0.24l-0.29,0.4l0.11,0.51l-0.06,0.17l-0.33,0.11l-0.04,0.31ZM68.8,514.2l-0.28,0.32l-0.09,-0.1l0.24,-0.29l-0.1,-0.27l0.19,-0.02l0.04,0.36ZM59.97,511.71l0.2,-0.13l0.18,-0.38l0.48,-0.06l0.27,0.03l0.13,0.21l0.36,0.14l0.1,0.15l-0.09,0.12l-0.23,-0.03l-0.61,0.18l-0.41,-0.22l-0.36,0.0ZM62.67,511.56l0.07,-0.35l0.28,-0.32l0.75,-0.02l0.67,0.35l0.17,0.49l-0.28,0.29l-1.25,-0.24l-0.41,-0.2ZM37.79,498.38l0.07,-0.23l-0.1,-0.23l0.32,0.03l0.09,0.49l-0.29,0.05l-0.1,-0.11ZM36.41,498.87l-0.02,0.01l0.01,-0.02l0.01,0.01ZM36.85,498.71l-0.0,-0.07l-0.0,-0.01l0.02,0.01l-0.01,0.07ZM30.2,493.17l-0.02,-0.03l0.04,-0.04l0.0,0.08l-0.02,-0.0ZM26.76,492.74l0.41,-0.33l0.12,0.35l-0.02,0.08l-0.25,0.01l-0.26,-0.12ZM25.01,490.83l0.02,0.0l-0.01,0.01l-0.02,-0.01ZM23.18,488.38l-0.09,0.01l0.05,-0.17l0.04,0.08l0.01,0.08ZM23.19,487.9l-0.06,0.1l-0.14,-0.54l0.19,0.18l0.0,0.26ZM15.95,478.85l0.25,0.07l-0.02,0.19l-0.14,-0.01l-0.09,-0.25ZM1.23,449.67l0.23,0.17l0.21,0.66l0.47,0.45l-0.25,0.16l0.12,0.39l-0.24,-0.38l-0.54,-0.19l-0.11,-0.3l0.19,-0.08l0.2,-0.42l-0.28,-0.47Z\", \"name\": \"Alaska\"}, \"US-NJ\": {\"path\": \"M801.67,165.24l1.31,-1.55l0.48,-1.57l0.5,-0.62l0.54,-1.45l0.11,-2.05l0.68,-1.35l0.92,-0.71l14.12,4.17l-0.3,5.66l-0.51,0.83l-0.13,-0.3l-0.65,-0.07l-0.34,0.44l-0.56,1.46l-0.46,2.72l0.26,1.55l0.63,0.61l1.06,0.15l1.23,-0.43l2.46,0.29l0.66,1.87l-0.2,4.55l0.29,0.47l-0.54,0.44l0.27,0.81l-0.72,0.74l0.03,0.35l0.43,0.22l-0.21,0.6l0.48,0.6l-0.17,3.8l0.59,0.52l-0.36,1.36l-1.14,1.82l-0.11,0.94l-1.36,0.07l0.09,1.21l0.64,0.83l-0.82,0.56l-0.18,1.15l1.05,0.77l-0.31,0.29l-0.17,-0.44l-0.53,-0.18l-0.5,0.22l-0.44,1.51l-1.28,0.61l-0.2,0.45l0.46,0.55l0.8,0.06l-0.66,1.26l-0.26,1.5l-0.68,0.65l0.19,0.48l0.4,0.04l-0.89,1.57l0.07,0.95l-1.56,1.66l-0.17,-1.65l0.33,-2.07l-0.11,-0.87l-0.58,-0.82l-0.89,-0.28l-1.11,0.34l-0.81,-0.35l-1.51,0.88l-0.31,-0.71l-1.62,-0.96l-1.0,0.04l-0.65,-0.71l-0.7,0.07l-3.24,-2.03l-0.06,-1.72l-1.02,-0.94l0.48,-0.68l0.0,-0.88l0.43,-0.83l-0.12,-0.73l0.51,-1.19l1.2,-1.16l2.6,-1.49l0.54,-0.86l-0.38,-0.85l0.5,-0.37l0.47,-1.44l1.24,-1.7l2.52,-2.22l0.18,-0.67l-0.47,-0.82l-4.26,-2.78l-0.75,-1.05l-0.9,0.24l-0.48,-0.33l-1.24,-2.46l-1.62,-0.02l-1.0,-3.45l1.02,-1.03l0.36,-2.23l-1.87,-1.91Z\", \"name\": \"New Jersey\"}, \"US-ME\": {\"path\": \"M837.04,56.27l0.86,-1.15l1.42,1.7l0.84,0.04l0.39,-2.12l-0.46,-2.19l1.7,0.36l0.73,-0.42l0.21,-0.52l-0.32,-0.7l-1.18,-0.47l-0.44,-0.62l0.19,-1.43l0.86,-2.02l2.08,-2.25l0.01,-0.98l-0.52,-0.93l1.02,-1.64l0.39,-1.51l-0.22,-0.91l-1.02,-0.35l-0.07,-1.42l-0.4,-0.43l0.55,-0.96l-0.04,-0.63l-1.0,-1.26l0.13,-1.73l0.37,-0.63l-0.15,-0.97l1.22,-1.93l-0.96,-6.17l5.58,-18.88l2.25,-0.23l1.15,3.18l0.55,0.43l2.54,0.56l1.83,-1.73l1.68,-0.83l1.24,-1.72l1.25,-0.12l0.64,-0.47l0.25,-1.43l0.42,-0.3l1.36,0.04l3.68,1.41l1.14,0.96l2.36,1.05l8.38,22.7l0.64,0.65l-0.25,0.95l0.72,1.02l-0.1,1.41l0.54,1.3l0.67,0.47l1.05,-0.12l1.12,0.58l0.97,0.1l2.47,-0.53l0.4,0.95l-0.59,1.42l1.69,1.86l0.28,2.69l2.72,1.68l0.98,-0.1l0.47,-0.74l-0.06,-0.5l1.21,0.25l2.95,2.8l0.04,0.47l-0.52,-0.14l-0.38,0.41l0.18,0.77l-0.76,-0.15l-0.35,0.4l0.15,0.63l1.84,1.62l0.16,-0.88l0.39,-0.17l0.8,0.32l0.27,-0.83l0.33,0.41l-0.31,0.85l-0.53,0.19l-1.21,3.24l-0.62,-0.04l-0.31,0.44l-0.55,-1.05l-0.72,0.03l-0.3,0.5l-0.56,0.06l-0.02,0.49l0.58,0.85l-0.91,-0.45l-0.32,0.63l0.26,0.52l-1.2,-0.28l-0.37,0.3l-0.37,0.78l0.08,0.45l0.44,0.08l0.07,1.21l-0.37,-0.57l-0.54,-0.06l-0.39,0.45l-0.2,1.09l-0.48,-1.53l-1.14,0.01l-0.68,0.75l-0.36,1.48l0.59,0.63l-0.83,0.63l-0.7,-0.46l-0.73,1.04l0.1,0.64l0.99,0.63l-0.35,0.21l-0.1,0.82l-0.45,-0.2l-0.85,-1.82l-1.03,-0.46l-0.39,0.22l-0.45,-0.41l-0.57,0.63l-1.25,-0.19l-0.26,0.86l0.78,0.4l0.01,0.37l-0.51,-0.06l-0.56,0.4l-0.09,0.69l-0.49,-1.02l-1.17,-0.02l-0.16,0.64l0.52,0.87l-1.44,0.96l0.84,1.11l0.08,1.06l0.53,0.65l-0.96,-0.41l-0.96,0.22l-1.2,-0.42l-0.17,-0.91l0.74,-0.28l-0.08,-0.55l-0.43,-0.5l-0.67,-0.12l-0.3,0.33l-0.23,-2.37l-0.37,-0.22l-1.1,0.26l0.04,1.96l-1.85,1.92l0.02,0.49l1.25,1.47l-0.64,0.96l-0.19,3.87l0.77,1.41l-0.57,0.53l0.0,0.63l-0.51,0.55l-0.8,-0.19l-0.45,0.93l-0.62,-0.06l-0.41,-1.15l-0.73,-0.21l-0.52,1.03l0.11,0.69l-0.45,0.59l0.12,2.41l-0.95,-1.01l0.14,-1.28l-0.24,-0.59l-0.81,0.29l-0.08,2.01l-0.44,-0.25l0.15,-1.55l-0.48,-0.4l-0.68,0.49l-0.76,3.04l-0.75,-1.84l0.07,-1.51l-0.77,0.05l-1.06,2.76l0.51,0.55l0.73,-0.25l0.91,2.04l-0.28,-0.59l-0.52,-0.23l-0.66,0.3l-0.07,0.64l-1.38,-0.1l-2.16,3.18l-0.53,1.86l0.29,0.6l-0.68,0.65l0.51,0.43l0.91,-0.21l0.37,0.92l-0.77,0.3l-0.2,0.39l-0.4,-0.04l-0.51,0.57l-0.14,1.03l0.67,1.37l-0.08,0.68l-0.79,1.29l-0.94,0.61l-0.41,1.07l-0.1,1.28l0.44,0.9l-0.4,2.81l-0.8,-0.33l-0.41,0.6l-1.02,-0.76l-0.57,-1.86l-0.93,-0.37l-2.36,-1.99l-0.76,-3.45l-13.25,-35.55ZM863.92,80.85l0.09,0.26l-0.08,0.23l0.03,-0.29l-0.04,-0.2ZM865.33,81.07l0.47,0.7l-0.04,0.47l-0.32,-0.25l-0.1,-0.93ZM867.67,77.93l0.43,0.83l-0.16,0.14l-0.42,-0.19l0.16,-0.77ZM877.04,64.5l-0.14,0.2l-0.03,-0.24l0.17,0.04ZM873.08,74.84l0.01,0.02l-0.03,0.03l0.01,-0.06ZM882.73,63.41l0.04,-1.17l0.41,-0.66l-0.18,-0.44l0.4,-0.5l0.62,-0.11l1.54,1.36l-0.49,0.65l-1.08,0.04l-0.27,0.43l0.57,1.3l-0.99,-0.18l-0.14,-0.57l-0.44,-0.16ZM879.31,65.98l0.61,0.41l-0.35,0.29l0.15,0.96l-0.39,-0.63l0.19,-0.53l-0.21,-0.5ZM878.07,70.51l0.09,-0.01l0.48,-0.08l-0.25,0.46l-0.32,-0.37Z\", \"name\": \"Maine\"}, \"US-MD\": {\"path\": \"M740.69,219.66l-2.04,-10.06l19.85,-4.49l-0.66,1.29l-0.94,0.08l-1.55,0.81l0.16,0.7l-0.42,0.49l0.23,0.78l-1.04,0.09l-0.72,0.41l-1.48,0.03l-1.14,-0.39l0.21,-0.36l-0.3,-0.49l-1.11,-0.31l-0.47,1.8l-1.63,2.85l-1.37,-0.39l-1.03,0.62l-0.41,1.26l-1.6,1.93l-0.36,1.04l-0.88,0.45l-1.3,1.87ZM760.76,204.58l37.02,-9.15l8.22,26.4l0.48,0.26l8.48,-2.22l0.24,0.71l0.6,0.03l0.38,0.95l0.52,-0.05l-0.38,1.96l-0.12,-0.26l-0.47,0.06l-0.73,0.86l-0.17,2.7l-0.6,0.19l-0.36,0.71l-0.02,1.47l-3.64,1.51l-0.37,0.76l-2.25,0.43l-0.56,0.65l-0.3,-1.09l0.5,-0.31l0.87,-1.85l-0.4,-0.51l-0.45,0.12l0.08,-0.5l-0.44,-0.42l-2.29,0.63l0.3,-0.6l1.15,-0.83l-0.17,-0.69l-1.36,-0.18l0.38,-2.24l-0.18,-1.02l-0.91,0.16l-0.53,1.76l-0.34,-0.69l-0.62,-0.07l-0.44,0.47l-0.5,1.39l0.53,1.02l-2.87,-2.14l-0.43,-0.19l-0.61,0.36l-0.73,-0.76l0.37,-0.84l-0.04,-0.84l0.76,-0.6l-0.08,-1.35l2.08,0.1l0.89,-0.45l0.36,-0.9l-0.32,-1.42l-0.43,-0.05l-0.54,1.31l-0.39,0.09l-1.05,-0.72l0.06,-0.4l-0.52,-0.28l-0.55,0.23l-0.22,-0.68l-0.73,0.1l-0.12,0.28l0.07,-0.74l0.65,-0.01l0.49,-0.37l0.22,-1.04l-0.54,-0.55l-0.57,0.71l-0.2,-0.53l0.88,-0.87l-0.25,-0.65l-0.54,-0.08l-0.09,-0.48l-0.42,-0.27l-0.35,0.15l-0.66,-0.53l0.89,-0.8l-0.24,-1.03l0.94,-2.38l-0.17,-0.43l-0.46,0.02l-0.66,0.66l-0.56,-0.16l-0.61,0.95l-0.74,-0.6l0.49,-3.59l0.6,-0.52l0.06,-0.61l4.22,-1.21l0.12,-0.7l-0.51,-0.3l-2.38,0.43l0.76,-1.27l1.42,-0.05l0.35,-0.5l-0.99,-0.67l0.44,-1.9l-0.63,-0.32l-1.2,1.82l0.05,-1.5l-0.59,-0.34l-0.68,1.1l-1.62,0.67l-0.31,1.65l0.39,0.54l0.65,0.12l-1.45,1.92l-0.2,-1.64l-0.64,-0.42l-0.61,0.73l0.07,1.45l-0.85,-0.29l-1.16,0.64l0.02,0.71l1.01,0.27l-0.37,0.54l-0.83,0.22l-0.05,0.34l-0.44,-0.04l-0.35,0.64l1.15,1.2l-1.88,-0.67l-1.21,0.59l0.16,0.69l1.56,0.58l0.91,0.93l0.72,-0.12l0.56,0.75l-0.98,-0.07l-1.15,1.36l0.32,0.77l1.57,0.92l-0.67,0.12l-0.21,0.41l0.8,1.08l-0.32,0.56l0.32,0.97l0.58,0.45l-0.52,1.09l0.99,1.25l0.96,3.54l0.61,0.84l2.07,1.63l0.42,0.81l-0.58,0.17l-0.64,-0.75l-1.45,-0.31l-1.64,-1.26l-1.33,-3.16l-0.73,-0.68l-0.3,0.37l0.11,0.7l1.28,3.54l1.14,1.31l2.05,0.74l1.03,1.11l0.64,0.14l0.91,-0.36l-0.03,1.11l1.66,1.54l0.1,1.1l-0.89,-0.35l-0.51,-1.29l-0.63,-0.45l-0.45,0.04l-0.13,0.44l0.27,0.79l-0.67,0.09l-0.65,-0.82l-1.41,-0.67l-2.39,0.63l-0.7,-0.67l-0.71,-1.49l-1.26,-0.71l-0.46,0.14l0.01,0.48l1.13,1.84l-0.22,-0.08l-1.62,-1.2l-1.66,-2.28l-0.45,-0.02l-0.37,1.44l-0.32,-0.79l-0.74,0.2l-0.21,0.27l0.33,0.72l-0.11,0.56l-0.76,0.53l-0.94,-1.5l0.07,-1.68l0.76,-0.6l-0.19,-0.74l0.78,-0.47l0.21,-1.61l1.07,-1.03l-0.0,-1.03l-0.46,-0.86l1.27,-2.19l-0.14,-0.54l-2.72,-1.68l-0.56,0.14l-0.63,1.08l-1.87,-0.26l-0.52,-0.83l-1.11,-0.51l-2.41,0.07l-1.25,-0.91l0.61,-1.35l-0.4,-0.97l-1.19,-0.3l-0.89,-0.66l-2.69,0.07l-0.36,-0.23l-0.11,-1.26l-1.04,-0.6l0.09,-1.2l-0.51,-0.29l-0.49,0.19l-0.23,-0.64l-0.52,-0.13l0.26,-0.83l-0.45,-0.58l-0.69,-0.12l-1.81,0.67l-2.24,-1.27ZM790.04,212.1l1.14,0.18l0.3,0.17l-0.52,0.29l-0.93,-0.63ZM803.05,225.67l-0.02,0.33l-0.21,-0.15l0.23,-0.19ZM807.02,229.13l-0.16,0.3l-0.13,0.07l0.02,-0.24l0.26,-0.12ZM797.57,220.61l-0.06,0.01l-0.09,0.03l0.12,-0.07l0.03,0.02ZM797.24,220.74l-0.26,0.56l-0.18,0.12l0.15,-0.61l0.29,-0.07ZM795.94,216.76l-0.29,0.29l-0.72,-0.27l0.02,-0.33l0.26,-0.36l0.72,0.67ZM794.58,212.85l-0.34,0.78l-0.59,0.23l0.02,-1.48l0.92,0.47ZM802.18,228.89l0.1,-0.11l0.12,0.08l-0.22,0.03Z\", \"name\": \"Maryland\"}, \"US-AR\": {\"path\": \"M498.73,376.99l-1.42,-38.01l-4.48,-23.98l37.68,-2.58l39.02,-3.58l0.8,1.6l1.01,0.7l0.11,1.77l-0.77,0.57l-0.22,0.94l-1.42,0.93l-0.29,1.04l-0.83,0.54l-1.19,2.59l0.02,0.7l0.53,0.26l10.94,-1.46l0.86,0.93l-1.18,0.37l-0.52,0.96l0.25,0.49l0.84,0.41l-3.6,2.7l0.02,0.84l0.83,1.04l-0.6,1.15l0.62,0.97l-1.42,0.74l-0.11,1.44l-1.45,2.09l0.12,1.64l0.91,3.1l-0.15,0.27l-1.08,-0.01l-0.33,0.26l-0.51,1.73l-1.52,0.95l-0.04,0.51l0.79,0.91l0.05,0.65l-1.11,1.21l-2.02,1.13l-0.21,0.62l0.43,1.0l-0.19,0.27l-1.23,0.03l-0.42,0.67l-0.32,1.89l0.47,1.57l0.02,3.08l-1.27,1.09l-1.54,0.13l0.23,1.49l-0.21,0.48l-0.93,0.25l-0.59,1.77l-1.49,1.19l-0.02,0.93l1.39,0.76l-0.03,0.7l-1.23,0.3l-2.24,1.23l0.03,0.67l0.99,0.82l-0.45,1.14l0.53,1.38l-1.09,0.62l-1.9,2.57l0.52,0.7l1.0,0.49l0.01,0.58l-0.98,0.29l-0.42,0.64l0.51,0.84l1.63,1.01l0.06,1.77l-0.59,0.98l-0.09,0.84l0.29,0.4l1.05,0.39l0.5,2.17l-1.09,1.01l0.06,2.11l-51.46,4.07l-0.83,-11.53l-1.18,-0.85l-0.9,0.16l-0.83,-0.35l-0.93,0.39l-1.22,-0.33l-0.57,0.72l-0.47,0.01l-0.49,-0.48l-0.82,-0.15l-0.63,-1.0Z\", \"name\": \"Arkansas\"}, \"US-MA\": {\"path\": \"M877.65,135.84l1.07,-0.19l0.85,-1.13l0.45,0.58l-1.06,0.64l-1.31,0.1ZM831.87,132.65l-0.46,-0.28l-10.4,2.53l-0.25,-0.18l-0.27,-14.8l29.99,-7.86l1.53,-1.8l0.34,-1.48l0.95,-0.35l0.61,-1.04l1.3,-1.08l1.23,-0.08l-0.44,1.05l1.36,0.55l-0.16,0.61l0.44,0.83l1.0,0.36l-0.06,0.32l0.39,0.28l1.31,0.19l-0.16,0.56l-2.52,1.87l-0.05,1.07l0.45,0.16l-1.11,1.41l0.23,1.08l-1.01,0.96l0.58,1.41l1.4,0.45l0.5,0.63l1.36,-0.57l0.33,-0.59l1.2,0.09l0.79,0.47l0.23,0.68l1.78,1.37l-0.07,1.25l-0.36,0.29l0.11,0.61l1.58,0.82l1.19,-0.14l0.68,1.2l0.22,1.14l0.89,0.68l1.33,0.41l1.48,-0.12l0.43,0.38l1.05,-0.23l3.35,-2.76l0.39,-0.69l0.54,0.02l0.56,1.86l-3.32,1.52l-0.94,0.82l-2.75,0.98l-0.49,1.65l-1.94,1.27l-0.81,-2.53l0.11,-1.35l-0.55,-0.31l-0.5,0.39l-0.93,-0.11l-0.3,0.51l0.25,0.92l-0.26,0.79l-0.4,0.06l-0.63,1.1l-0.6,-0.2l-0.5,0.48l0.22,1.86l-0.9,0.87l-0.63,-0.8l-0.47,0.01l-0.11,0.55l-0.26,0.03l-0.7,-2.02l-1.02,-0.35l0.44,-2.5l-0.21,-0.4l-0.77,0.4l-0.29,1.47l-0.69,0.2l-1.4,-0.64l-0.78,-2.12l-0.8,-0.22l-0.78,-2.15l-0.49,-0.24l-6.13,2.0l-0.3,-0.15l-14.84,4.19l-0.28,0.5ZM860.89,110.08l-0.02,-0.37l-0.14,-0.48l0.51,0.23l-0.35,0.62ZM876.37,122.8l-0.42,-0.66l0.06,-0.05l0.44,0.67l-0.09,0.05ZM875.46,121.25l-0.86,-0.11l-0.94,-1.42l1.44,1.0l0.36,0.54ZM871.54,119.46l-0.06,0.25l-0.35,-0.2l0.13,0.02l0.29,-0.07ZM871.87,135.18l0.01,-0.02l0.01,0.04l-0.02,-0.02ZM867.18,137.63l0.78,-0.56l0.28,-1.17l0.84,-1.19l0.17,0.26l0.46,-0.11l0.34,0.52l0.71,-0.01l0.19,0.38l-2.11,0.73l-1.34,1.31l-0.33,-0.17Z\", \"name\": \"Massachusetts\"}, \"US-AL\": {\"path\": \"M608.66,337.47l25.17,-2.91l19.4,-2.75l14.04,43.3l0.79,1.4l0.22,1.05l1.17,1.59l0.59,1.87l2.24,2.5l0.92,1.8l-0.11,2.13l1.8,1.13l-0.17,0.74l-0.63,0.1l-0.16,0.7l-0.98,0.84l-0.22,2.29l0.25,1.48l-0.77,2.3l-0.14,1.84l1.1,2.94l1.21,1.52l0.53,1.6l-0.08,5.02l-0.25,0.81l0.48,2.03l1.35,1.16l1.14,2.07l-47.65,6.92l-0.42,0.61l-0.08,2.99l2.64,2.75l2.0,0.97l-0.34,2.7l0.56,1.6l0.43,0.39l-0.94,1.69l-1.24,1.0l-1.13,-0.75l-0.34,0.49l0.66,1.46l-2.82,1.05l0.29,-0.64l-0.45,-0.86l-0.99,-0.77l-0.1,-1.11l-0.57,-0.22l-0.53,0.61l-0.32,-0.1l-0.89,-1.53l0.41,-1.67l-0.97,-2.21l-0.46,-0.45l-0.86,-0.2l-0.3,-0.89l-0.56,-0.17l-0.37,0.61l0.14,0.35l-0.77,3.1l-0.01,5.08l-0.59,0.0l-0.24,-0.71l-2.22,-0.44l-1.65,0.31l-5.46,-31.99l-0.99,-66.49l-0.02,-0.37l-1.07,-0.63l-0.69,-1.02Z\", \"name\": \"Alabama\"}, \"US-MO\": {\"path\": \"M468.68,225.54l24.71,-0.73l18.94,-1.43l22.11,-2.58l0.42,0.35l0.39,0.91l2.43,1.65l0.29,0.74l1.21,0.87l-0.51,1.37l-0.1,3.21l0.78,3.65l0.95,1.44l0.03,1.59l1.11,1.37l0.46,1.55l4.96,4.1l1.06,1.69l4.93,3.31l0.7,1.15l0.27,1.62l0.5,0.82l-0.18,0.69l0.47,1.8l0.97,1.63l0.77,0.73l1.04,0.16l0.83,-0.56l0.84,-1.4l0.57,-0.19l2.41,0.61l1.68,0.76l0.84,0.77l-0.97,1.95l0.26,2.28l-2.37,6.86l0.01,1.02l0.7,1.92l4.67,4.05l1.99,1.05l1.46,0.09l1.66,1.31l1.91,0.8l1.51,2.11l2.04,0.83l0.42,2.96l1.72,2.9l-1.1,1.94l0.18,1.38l0.75,0.33l2.31,4.25l1.94,0.92l0.55,-0.32l0.0,-0.65l0.87,1.1l1.07,-0.08l0.14,1.85l-0.37,1.07l0.53,1.6l-1.07,3.86l-0.51,0.07l-1.37,-1.13l-0.65,0.13l-0.78,3.34l-0.52,0.74l0.13,-1.06l-0.56,-1.09l-0.97,-0.2l-0.74,0.63l0.02,1.05l0.53,0.66l-0.04,0.7l0.58,1.34l-0.2,0.4l-1.2,0.39l-0.17,0.41l0.15,0.55l0.86,0.84l-1.71,0.37l-0.14,0.62l1.53,1.97l-0.89,0.75l-0.63,2.13l-10.61,1.42l1.06,-2.28l0.87,-0.61l0.18,-0.87l1.44,-0.96l0.25,-0.96l0.63,-0.37l0.29,-0.59l-0.22,-2.28l-1.05,-0.75l-0.2,-0.77l-1.09,-1.18l-39.24,3.61l-37.72,2.58l-3.21,-58.2l-1.03,-0.63l-1.2,-0.02l-1.52,-0.73l-0.19,-0.93l-0.76,-0.59l-0.34,-0.71l-0.36,-1.55l-0.55,-0.09l-0.3,-0.56l-1.13,-0.66l-1.4,-1.84l0.73,-0.51l0.09,-1.24l1.12,-1.27l0.09,-0.79l1.01,0.16l0.56,-0.43l-0.2,-2.24l-1.02,-0.74l-0.32,-1.1l-1.17,-0.01l-1.31,0.96l-0.81,-0.7l-0.73,-0.17l-2.67,-2.35l-1.05,-0.28l0.13,-1.6l-1.32,-1.72l0.1,-1.02l-0.37,-0.36l-1.01,-0.18l-0.59,-0.85l-0.84,-0.26l0.07,-0.53l-1.24,-2.88l-0.0,-0.74l-0.4,-0.49l-0.85,-0.29l-0.05,-0.54ZM583.77,294.59l-0.1,-0.1l-0.08,-0.15l0.11,-0.01l0.07,0.26Z\", \"name\": \"Missouri\"}, \"US-MN\": {\"path\": \"M439.34,42.76l26.81,-1.05l0.34,1.46l1.28,0.84l1.79,-0.5l1.05,-1.43l0.78,-0.31l2.13,2.19l1.71,0.28l0.31,1.2l1.83,1.4l1.79,0.48l2.64,-0.41l0.39,0.85l0.67,0.4l5.12,0.01l0.37,0.23l0.54,1.59l0.71,0.61l4.27,-0.78l0.77,-0.65l0.07,-0.69l2.43,-0.79l3.97,-0.02l1.42,0.7l3.39,0.66l-1.01,0.79l0.0,0.82l1.18,0.54l2.23,-0.16l0.52,2.08l1.58,2.29l0.71,0.05l1.03,-0.78l-0.04,-1.73l2.67,-0.46l1.43,2.17l2.01,0.79l1.54,0.18l0.54,0.57l-0.03,0.83l0.58,0.35l1.32,0.06l0.38,0.83l1.43,-0.19l1.12,0.22l2.22,-0.85l2.78,-2.55l2.49,-1.54l1.24,2.52l0.96,0.51l2.23,-0.66l0.87,0.36l5.98,-1.3l0.56,0.18l1.32,1.64l1.24,0.59l0.62,-0.01l1.61,-0.83l1.35,0.08l-0.93,1.03l-4.69,3.07l-6.35,2.82l-3.68,2.48l-2.15,2.49l-0.95,0.58l-6.63,8.66l-0.95,0.61l-1.08,1.56l-1.96,1.96l-4.17,3.55l-0.86,1.79l-0.55,0.44l-0.14,0.96l-0.78,-0.01l-0.46,0.51l0.98,12.22l-0.79,1.2l-1.05,0.08l-0.52,0.82l-0.83,0.15l-0.61,0.83l-2.06,1.19l-0.94,1.86l0.06,0.72l-1.69,2.39l-0.01,2.06l0.38,0.91l2.15,0.39l1.42,2.49l-0.52,1.92l-0.71,1.25l-0.05,2.12l0.45,1.32l-0.71,1.23l0.91,3.14l-0.51,4.08l3.95,3.03l3.02,0.4l1.89,2.25l2.87,0.5l2.45,1.93l2.39,3.59l2.64,1.8l2.09,0.09l1.07,0.71l0.88,0.1l0.82,1.36l1.03,0.45l0.23,0.39l0.28,2.03l0.68,1.3l0.39,4.82l-40.63,3.2l-40.63,2.09l-1.46,-38.98l-0.7,-1.27l-0.83,-0.78l-2.57,-0.79l-0.94,-1.91l-1.46,-1.79l0.21,-0.68l2.83,-2.34l0.97,-2.12l0.4,-2.44l-0.35,-1.58l0.23,-1.58l-0.18,-1.79l-0.5,-1.03l-0.18,-2.33l-1.81,-2.59l-0.47,-1.13l-0.21,-2.16l-0.66,-0.98l0.15,-1.66l-0.35,-1.52l0.53,-2.69l-1.08,-1.85l-0.49,-8.33l-0.42,-0.79l0.06,-3.92l-1.58,-3.96l-0.53,-0.65l-0.4,-1.37l0.05,-1.19l-0.48,-0.53l-1.36,-3.77l0.0,-3.22l-0.47,-1.97l0.27,-1.12l-0.57,-2.32l0.73,-2.56l-2.06,-6.9ZM468.97,33.61l1.22,0.46l0.99,-0.2l0.33,0.45l-0.05,1.72l-1.78,1.12l-0.15,-0.47l-0.4,-0.14l-0.16,-2.95Z\", \"name\": \"Minnesota\"}, \"US-CA\": {\"path\": \"M2.95,175.4l0.78,-1.24l0.46,0.46l0.59,-0.08l0.52,-1.18l0.8,-0.86l1.3,-0.26l0.56,-0.53l-0.15,-0.71l-0.93,-0.32l1.53,-2.79l-0.3,-1.58l0.14,-0.87l2.04,-3.3l1.31,-3.03l0.36,-2.12l-0.28,-1.0l0.16,-3.11l-1.36,-2.16l1.18,-1.38l0.67,-2.53l32.73,8.13l32.58,7.34l-13.67,64.68l25.45,34.66l36.6,51.1l13.3,17.72l-0.19,2.73l0.73,0.94l0.21,1.71l0.85,0.63l0.81,2.56l-0.07,0.91l0.63,1.46l-0.16,1.36l3.8,3.82l0.01,0.5l-1.95,1.53l-3.11,1.26l-1.2,1.99l-1.72,1.14l-0.33,0.81l0.38,1.03l-0.51,0.51l-0.1,0.9l0.08,2.29l-0.6,0.72l-0.64,2.44l-2.02,2.47l-1.6,0.14l-0.42,0.51l0.33,0.89l-0.59,1.34l0.54,1.12l-0.01,1.19l-0.78,2.68l0.57,1.02l2.74,1.13l0.34,0.83l-0.19,2.4l-1.18,0.78l-0.42,1.37l-2.27,-0.62l-1.25,0.6l-43.38,-3.34l0.17,-1.15l0.67,-0.51l-0.17,-1.06l-1.17,-1.38l-1.04,-0.15l0.23,-1.2l-0.28,-1.07l0.78,-1.33l-0.3,-4.25l-0.6,-2.3l-1.92,-4.07l-3.56,-4.07l-1.29,-1.98l-2.42,-2.11l-2.04,-3.01l-2.22,-0.89l-0.94,0.3l-0.39,0.96l-0.62,-0.73l-0.88,-0.22l-0.15,-0.31l0.61,-0.76l0.17,-1.57l-0.44,-2.06l-1.01,-1.95l-1.0,-0.74l-4.44,-0.19l-3.33,-1.81l-1.36,-1.26l-0.7,-0.12l-1.02,-1.19l-0.44,-2.6l-0.97,-0.47l-1.68,-2.31l-2.19,-1.73l-1.24,-0.41l-1.66,0.37l-1.15,-1.01l-1.25,0.03l-2.48,-1.83l-1.06,0.01l-1.49,-0.69l-4.91,-0.52l-1.12,-2.35l-1.43,-0.76l1.34,-2.45l-0.25,-1.36l0.74,-1.99l-0.63,-1.35l1.27,-2.45l0.33,-2.44l-0.99,-1.24l-1.26,-0.23l-1.4,-1.28l0.41,-1.62l0.79,-0.09l0.25,-0.45l-0.47,-2.2l-0.65,-0.77l-1.47,-0.84l-1.78,-3.97l-1.82,-1.25l-0.36,-2.75l-1.61,-2.58l0.07,-1.39l-0.33,-1.26l-1.16,-0.94l-0.74,-2.95l-2.41,-2.69l-0.55,-1.25l-0.02,-4.63l0.59,-0.57l-0.59,-1.14l0.51,-0.59l0.53,0.61l0.78,-0.02l0.84,-0.81l0.56,-1.33l0.8,0.04l0.21,-0.88l-0.43,-0.27l0.47,-1.19l-1.22,-3.68l-0.62,-0.48l-1.05,0.08l-1.93,-0.51l-1.04,-1.06l-1.89,-3.21l-0.8,-2.28l0.86,-2.39l0.09,-1.11l-0.27,-2.38l-0.32,-0.64l-0.54,-0.24l0.25,-1.19l0.69,-1.07l0.24,-2.71l0.47,-0.64l0.88,0.13l0.18,0.94l-0.7,2.13l0.05,1.15l1.18,1.32l0.55,0.1l0.58,1.28l1.16,0.78l0.4,1.01l0.89,0.41l0.83,-0.21l-0.21,-1.45l-0.65,-0.43l-0.18,-0.58l-0.24,-3.57l-0.56,-0.71l0.26,-0.69l-1.48,-1.06l0.5,-1.07l0.09,-1.06l-1.2,-1.58l0.78,-0.74l0.79,0.06l1.24,-0.73l1.25,1.02l1.87,-0.32l5.55,2.41l0.61,-0.09l0.64,-1.38l0.69,-0.04l1.92,2.53l0.25,0.18l0.63,-0.24l0.02,-0.38l-0.39,-0.93l-1.57,-1.89l-1.66,-0.32l0.27,-0.62l-0.28,-0.54l-0.48,0.09l-1.05,1.01l-1.84,-0.22l-0.43,0.28l-0.15,-0.51l-1.05,-0.4l0.24,-1.05l-0.85,-0.47l-1.0,0.28l-0.6,0.84l-1.09,0.4l-1.35,-0.9l-0.39,-0.88l-1.51,-1.44l-0.58,0.03l-0.64,0.61l-0.92,-0.12l-0.48,0.36l-0.33,1.88l0.21,0.78l-0.76,1.36l0.36,0.65l-0.47,0.59l-0.04,0.69l-2.16,-2.89l-0.44,-0.15l-0.25,0.32l-0.73,-1.0l-0.21,-1.03l-1.2,-1.17l-0.4,-1.05l-0.61,-0.18l0.65,-1.48l0.11,0.95l0.76,1.49l0.44,0.25l0.33,-0.38l-1.45,-5.21l-1.08,-1.42l-0.31,-2.68l-2.5,-2.87l-1.8,-4.48l-3.05,-5.54l1.09,-1.7l0.25,-1.97l-0.46,-2.11l-0.14,-3.61l1.34,-2.92l0.7,-0.74l-0.07,-1.54l0.42,-1.53l-0.41,-1.63l0.11,-1.96l-1.41,-4.06l-0.97,-1.15l0.06,-0.8l-0.42,-1.19l-2.91,-4.03l0.51,-1.35l-0.21,-2.69l2.23,-3.44ZM31.5,240.45l-0.06,0.1l-0.34,0.04l0.21,-0.05l0.19,-0.09ZM64.32,351.64l0.27,0.13l0.19,0.18l-0.31,-0.18l-0.15,-0.13ZM65.92,352.88l1.32,0.84l0.76,1.73l-0.89,-0.66l-1.14,0.03l-0.05,-1.94ZM62.72,363.08l1.36,2.08l0.57,0.53l-0.46,0.06l-0.83,-0.79l-0.65,-1.88ZM43.54,333.81l0.88,0.73l1.37,0.36l1.36,1.0l-2.82,-0.18l-0.71,-0.58l0.24,-0.66l-0.32,-0.67ZM47.89,335.89l0.94,-0.5l0.32,0.36l-0.37,0.14l-0.88,-0.0ZM46.05,352.4l0.29,-0.06l0.95,0.92l-0.61,-0.17l-0.64,-0.69ZM37.57,334.04l2.57,0.16l0.2,0.74l0.6,0.45l-1.21,0.64l-1.17,-0.1l-0.49,-0.44l-0.5,-1.44ZM34.94,332.37l0.06,-0.02l0.05,0.06l-0.01,-0.0l-0.1,-0.04Z\", \"name\": \"California\"}, \"US-IA\": {\"path\": \"M452.9,162.25l42.83,-2.19l40.56,-3.19l0.96,2.52l2.0,1.0l0.08,0.59l-0.9,1.8l-0.16,1.04l0.9,5.09l0.92,1.26l0.39,1.75l1.46,1.72l4.95,0.85l1.27,2.03l-0.3,1.03l0.29,0.66l3.61,2.37l0.85,2.41l3.84,2.31l0.62,1.68l-0.31,4.21l-1.64,1.98l-0.5,1.94l0.13,1.28l-1.26,1.36l-2.51,0.97l-0.89,1.18l-0.55,0.25l-4.56,0.83l-0.89,0.73l-0.61,1.71l-0.15,2.56l0.4,1.08l2.01,1.47l0.54,2.65l-1.87,3.25l-0.22,2.24l-0.53,1.42l-2.88,1.39l-1.02,1.02l-0.2,0.99l0.72,0.87l0.2,2.15l-0.58,0.23l-1.34,-0.82l-0.31,-0.76l-1.29,-0.82l-0.29,-0.51l-0.88,-0.36l-0.3,-0.82l-0.95,-0.68l-22.3,2.61l-15.13,1.17l-7.59,0.51l-20.78,0.47l-0.22,-1.06l-1.3,-0.73l-0.33,-0.67l0.58,-1.16l-0.21,-0.95l0.22,-1.39l-0.36,-2.19l-0.6,-0.73l0.07,-3.65l-1.05,-0.5l0.05,-0.91l0.71,-1.02l-0.05,-0.44l-1.31,-0.56l0.33,-2.54l-0.41,-0.45l-0.89,-0.16l0.23,-0.8l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.81l0.5,-2.36l-0.2,-0.67l-1.36,-1.71l-0.08,-1.92l-1.78,-1.54l-0.36,-1.74l-1.09,-0.94l0.03,-2.18l-1.1,-1.87l0.21,-1.7l-0.27,-1.08l-1.38,-0.67l-0.42,-1.58l-0.45,-0.59l0.05,-0.63l-1.81,-1.82l0.56,-1.61l0.54,-0.47l0.73,-2.68l0.0,-1.68l0.55,-0.69l0.21,-1.19l-0.51,-2.24l-1.33,-0.29l-0.05,-0.73l0.45,-0.56l-0.0,-1.71l-0.95,-1.42l-0.05,-0.87Z\", \"name\": \"Iowa\"}, \"US-MI\": {\"path\": \"M612.24,185.84l1.83,-2.17l0.7,-1.59l1.18,-4.4l1.43,-3.04l1.01,-5.05l0.09,-5.37l-0.86,-5.54l-2.4,-5.18l0.61,-0.51l0.3,-0.79l-0.57,-0.42l-1.08,0.55l-3.82,-7.04l-0.21,-1.11l1.13,-2.69l-0.01,-0.97l-0.74,-3.13l-1.28,-1.65l-0.05,-0.62l1.73,-2.73l1.22,-4.14l-0.21,-5.34l-0.77,-1.6l1.09,-1.15l0.81,-0.02l0.56,-0.47l-0.27,-3.49l1.08,-0.11l0.67,-1.43l1.19,0.48l0.65,-0.33l0.76,-2.59l0.82,-1.2l0.56,-1.68l0.55,-0.18l-0.58,0.87l0.6,1.65l-0.71,1.8l0.71,0.42l-0.48,2.61l0.88,1.42l0.73,-0.06l0.52,0.56l0.65,-0.24l0.89,-2.26l0.66,-3.52l-0.08,-2.07l-0.76,-3.42l0.58,-1.02l2.13,-1.64l2.74,-0.54l0.98,-0.63l0.28,-0.64l-0.25,-0.54l-1.76,-0.1l-0.96,-0.86l-0.52,-1.99l1.85,-2.98l-0.11,-0.73l1.72,-0.23l0.74,-0.94l4.16,2.0l0.83,0.13l1.98,-0.4l1.37,0.39l1.19,1.04l0.53,1.14l0.77,0.49l2.41,-0.29l1.7,1.02l1.92,0.09l0.8,0.64l3.27,0.45l1.1,0.78l-0.01,1.12l1.04,1.31l0.64,0.21l0.38,0.92l-0.16,0.54l-0.66,-0.25l-0.94,0.57l-0.23,1.83l0.81,1.29l1.6,0.99l0.69,1.37l0.65,2.26l-0.12,1.73l0.77,5.57l-0.14,0.6l-0.57,0.2l-0.48,0.96l-0.75,0.08l-0.79,0.81l-0.17,4.47l-1.12,0.49l-0.18,0.82l-1.86,0.43l-0.73,0.6l-0.58,2.61l0.26,0.45l-0.21,0.52l0.25,2.58l1.38,1.31l2.9,0.84l0.91,-0.07l1.08,-1.23l0.6,-1.44l0.62,0.19l0.38,-0.24l1.01,-3.59l0.6,-1.06l-0.08,-0.52l0.97,-1.45l1.39,-0.39l1.07,-0.69l0.83,-1.1l0.87,-0.44l2.06,0.59l1.13,0.7l1.0,1.09l1.21,2.16l2.0,5.91l0.82,1.6l1.03,3.71l1.49,3.63l1.27,1.73l-0.33,3.93l0.45,2.49l-0.48,2.79l-0.34,0.44l-0.24,-0.33l-0.31,-1.71l-1.46,-0.52l-0.47,0.08l-1.48,1.36l-0.06,0.83l0.55,0.67l-0.83,0.57l-0.29,0.79l0.28,2.94l-0.49,0.75l-1.62,0.92l-1.06,1.85l-0.43,3.73l0.27,1.55l-0.33,0.93l-0.42,0.19l0.02,0.91l-0.64,0.3l-0.37,1.08l-0.52,0.52l-0.5,1.28l-0.02,1.05l-0.52,0.78l-20.37,4.25l-0.14,-0.86l-0.46,-0.33l-31.6,4.74ZM621.47,115.87l0.0,-0.07l0.12,-0.12l-0.01,0.03l-0.11,0.16ZM621.73,114.95l-0.07,-0.16l0.07,-0.14l-0.0,0.3ZM543.48,88.04l4.87,-2.38l3.55,-3.62l5.77,-1.36l1.39,-0.84l2.36,-2.71l0.97,0.04l1.52,-0.73l1.0,-2.25l2.82,-2.84l0.23,1.72l1.85,0.59l0.05,1.45l0.66,0.14l0.51,0.6l-0.17,3.14l0.44,0.95l-0.34,0.47l0.2,0.47l0.74,-0.02l1.08,-2.21l1.08,-0.9l-0.42,1.15l0.59,0.45l0.82,-0.67l0.52,-1.22l1.0,-0.43l3.09,-0.25l1.51,0.21l1.18,0.93l1.54,0.44l0.47,1.05l2.31,2.58l1.17,0.55l0.53,1.55l0.73,0.34l1.87,0.07l0.73,-0.4l1.07,-0.06l0.52,-0.65l0.88,-0.43l1.0,1.11l1.1,0.64l1.02,-0.25l0.68,-0.82l1.87,1.06l0.64,-0.34l1.65,-2.59l2.81,-1.89l1.7,-1.65l0.91,0.11l3.27,-1.21l5.17,-0.25l4.49,-2.72l2.56,-0.37l-0.01,3.24l0.29,0.71l-0.36,1.1l0.67,0.85l0.66,0.11l0.71,-0.39l2.2,0.7l1.14,-0.43l1.03,-0.87l0.66,0.48l0.21,0.71l0.85,0.22l1.27,-0.8l0.95,-1.55l0.66,-0.02l0.84,0.75l1.98,3.78l-0.86,1.04l0.48,0.89l0.47,0.36l1.37,-0.42l0.58,0.46l0.64,0.04l0.18,1.2l0.98,0.87l1.53,0.52l-1.17,0.68l-4.96,-0.14l-0.53,0.29l-1.35,-0.17l-0.88,0.41l-0.66,-0.76l-1.63,-0.07l-0.59,0.47l-0.07,1.22l-0.49,0.75l0.38,2.05l-0.92,-0.22l-0.89,-0.92l-0.77,-0.13l-1.96,-1.65l-2.41,-0.6l-1.6,0.04l-1.04,-0.5l-2.89,0.47l-0.61,0.45l-1.18,2.52l-3.48,0.73l-0.58,0.77l-2.06,-0.34l-2.82,0.93l-0.68,0.83l-0.56,2.51l-0.78,0.28l-0.81,0.87l-0.65,0.28l0.16,-1.96l-0.75,-0.91l-1.02,0.34l-0.76,0.92l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.1,0.83l-0.73,2.01l-1.2,0.59l-0.11,-1.38l-0.46,-1.06l0.34,-1.69l-0.17,-0.37l-0.66,-0.17l-0.45,0.58l-0.6,2.12l-0.22,2.57l-1.12,0.91l-1.26,3.02l-0.62,2.66l-2.56,5.33l-0.69,0.74l0.12,0.91l-1.4,-1.28l0.18,-1.75l0.63,-1.69l-0.41,-0.81l-0.62,-0.31l-1.36,0.85l-1.16,0.09l0.04,-1.29l0.81,-1.45l-0.41,-1.34l0.3,-1.09l-0.58,-0.98l0.15,-0.83l-1.9,-1.55l-1.1,-0.06l-0.59,-0.44l-0.86,0.2l-0.62,-0.2l0.3,-1.36l-0.94,-1.45l-1.13,-0.51l-2.23,-0.1l-3.2,-0.71l-1.55,0.59l-1.43,-0.42l-1.62,0.17l-4.56,-1.94l-15.37,-2.5l-2.0,-3.4l-1.88,-0.96l-0.76,0.26l-0.1,-0.3ZM603.38,98.65l-0.01,0.52l-0.46,0.32l-0.7,1.39l0.08,0.57l-0.65,-0.58l0.91,-2.16l0.83,-0.06ZM643.87,87.47l1.99,-1.52l0.17,-0.57l-0.27,-0.64l1.05,0.16l0.8,1.24l0.81,0.19l-0.27,1.08l-0.36,0.19l-1.5,-0.34l-0.77,0.45l-1.63,-0.24ZM635.6,77.64l0.56,-0.83l0.52,0.05l-0.37,1.32l0.11,0.71l-0.35,-0.9l-0.46,-0.35ZM636.53,79.17l0.09,0.14l0.01,0.01l-0.02,-0.01l-0.08,-0.14ZM637.39,81.25l0.4,0.45l0.22,0.61l-0.63,-0.71l0.01,-0.34ZM633.73,93.13l1.41,0.25l0.36,-0.18l0.4,0.21l-0.17,0.52l-0.75,0.11l-1.24,-0.9ZM618.85,96.77l0.62,2.25l-0.8,0.78l-0.39,-0.27l0.56,-2.76ZM613.26,110.83l0.47,0.3l-0.09,0.57l-0.45,-0.69l0.06,-0.17ZM612.23,113.57l0.0,-0.03l0.02,-0.04l-0.03,0.07ZM599.41,82.64l-0.23,-0.37l0.03,-0.4l0.37,0.32l-0.17,0.45ZM570.51,72.75l-0.51,-0.27l-1.16,0.06l-0.04,-1.56l1.0,-1.03l1.17,-2.09l1.84,-1.49l0.63,-0.0l0.53,-0.58l2.08,-0.89l3.34,-0.42l1.1,0.66l-0.54,0.38l-1.31,-0.12l-2.27,0.78l-0.15,0.29l0.3,0.59l0.71,0.13l-1.19,0.98l-1.4,1.89l-0.7,0.29l-0.36,1.45l-1.15,1.37l-0.66,2.04l-0.67,-0.87l0.75,-0.97l0.14,-1.95l-0.63,-0.37l-0.21,0.15l-0.6,0.92l-0.05,0.67ZM558.28,58.21l0.75,-0.98l-0.39,-0.33l0.56,-0.53l4.62,-2.98l1.97,-1.72l0.62,-0.18l-0.45,0.65l0.1,0.79l-0.43,0.49l-4.25,2.56l-0.86,0.99l0.24,0.36l-1.87,1.17l-0.61,-0.28Z\", \"name\": \"Michigan\"}, \"US-GA\": {\"path\": \"M654.05,331.71l22.02,-3.57l20.65,-3.86l-1.48,1.42l-0.51,1.68l-0.66,0.82l-0.41,1.73l0.11,1.23l0.82,0.78l1.84,0.8l1.03,0.12l2.7,2.03l0.84,0.24l1.9,-0.37l0.6,0.25l0.8,1.64l1.51,1.6l1.04,2.5l1.33,0.82l0.84,1.16l0.56,0.26l1.0,1.77l1.07,0.3l1.17,0.99l3.81,1.85l2.41,3.16l2.25,0.58l2.53,1.67l0.5,2.34l1.25,1.02l0.47,-0.16l0.31,0.49l-0.1,0.62l0.79,0.73l0.79,0.09l0.56,1.21l4.99,1.89l0.4,1.78l1.54,1.73l1.02,2.01l-0.07,0.81l0.49,0.69l0.11,1.24l1.04,0.79l1.17,0.17l1.25,0.62l0.28,0.53l0.57,0.23l1.12,2.56l0.76,0.57l0.08,2.68l0.77,1.48l1.38,0.9l1.52,-0.27l1.44,0.76l1.45,0.11l-0.59,0.78l-0.56,-0.35l-0.47,0.28l-0.4,0.99l0.62,0.91l-0.38,0.48l-1.38,-0.16l-0.77,-0.55l-0.65,0.44l0.26,0.71l-0.49,0.52l0.36,0.61l0.94,-0.04l0.5,0.29l-0.58,1.35l-1.43,0.27l-1.33,-0.44l-0.44,0.39l0.34,0.85l1.23,0.35l-0.5,0.87l0.23,0.35l-0.2,0.64l0.83,0.64l-0.33,0.44l-0.72,-0.13l-0.96,0.51l-0.1,0.62l1.09,0.45l0.05,0.95l0.48,-0.07l1.2,-1.17l-0.92,2.31l-0.31,-0.58l-0.59,-0.08l-0.44,0.72l0.29,0.7l0.98,0.83l-2.32,0.04l-0.92,-0.28l-0.63,0.3l0.06,0.63l0.55,0.34l2.76,0.24l1.07,0.66l-0.02,0.34l-0.56,0.22l-0.88,1.95l-0.5,-1.41l-0.45,-0.13l-0.6,0.33l-0.15,0.84l0.34,0.96l-0.6,0.11l-0.03,0.84l-0.3,0.16l0.07,0.46l1.33,1.15l-1.09,1.03l0.32,0.47l0.77,0.07l-0.39,0.92l0.06,0.88l-0.46,0.51l1.1,1.66l0.03,0.76l-0.79,0.33l-2.64,-0.17l-4.06,-0.96l-1.31,0.35l-0.18,0.74l-0.68,0.26l-0.35,1.25l0.28,2.08l0.95,1.36l0.13,4.25l-1.97,0.4l-0.54,-0.92l-0.12,-1.3l-1.33,-1.82l-49.22,5.14l-0.72,-0.56l-0.86,-2.7l-0.94,-1.51l-0.56,-0.38l0.16,-0.68l-0.73,-1.51l-1.82,-1.81l-0.43,-1.75l0.25,-0.8l0.06,-5.18l-0.6,-1.81l-1.19,-1.47l-1.03,-2.65l0.12,-1.65l0.78,-2.36l-0.25,-1.53l0.19,-2.11l1.62,-1.33l0.46,-1.47l-0.55,-0.61l-1.42,-0.69l0.09,-2.15l-0.97,-1.87l-2.18,-2.42l-1.03,-2.81l-0.75,-0.68l-0.17,-0.96l-0.77,-1.37l-13.99,-43.12ZM745.21,389.83l0.7,-0.26l-0.07,0.82l-0.29,-0.33l-0.34,-0.24ZM743.75,406.73l0.05,0.87l-0.01,0.46l-0.34,-0.56l0.3,-0.76Z\", \"name\": \"Georgia\"}, \"US-AZ\": {\"path\": \"M128.39,384.21l0.44,-1.81l1.29,-1.29l0.54,-1.11l0.48,-0.25l1.66,0.62l0.96,-0.03l0.52,-0.46l0.28,-1.17l1.31,-1.0l0.24,-2.73l-0.46,-1.24l-0.84,-0.66l-2.07,-0.67l-0.3,-0.61l0.8,-2.4l0.0,-1.39l-0.52,-1.2l0.57,-0.86l-0.2,-0.87l1.57,-0.27l2.29,-2.81l0.65,-2.43l0.65,-0.81l0.02,-3.17l0.55,-0.62l-0.29,-1.43l1.71,-1.14l1.03,-1.85l3.16,-1.29l2.03,-1.58l0.26,-0.53l-0.13,-1.04l-3.25,-3.49l-0.51,-0.22l0.22,-1.26l-0.66,-1.46l0.07,-0.91l-0.88,-2.76l-0.84,-0.56l-0.19,-1.65l-0.69,-0.8l0.19,-3.54l0.58,-0.87l-0.3,-0.86l1.04,-0.4l0.4,-1.42l0.14,-3.2l-0.76,-3.66l0.47,-0.88l0.29,-1.67l-0.4,-3.0l0.85,-2.56l-0.8,-1.87l-0.03,-0.92l0.43,-0.52l0.34,-1.35l2.54,-0.63l1.75,0.99l1.43,-0.19l0.96,2.24l0.79,0.71l1.54,0.14l1.01,-0.5l1.02,-2.27l0.94,-1.19l2.57,-16.95l42.43,5.78l42.56,4.67l-11.82,123.66l-36.89,-4.05l-36.34,-18.98l-28.44,-15.56Z\", \"name\": \"Arizona\"}, \"US-MT\": {\"path\": \"M166.3,57.31l0.69,-0.1l0.33,-0.38l-0.9,-1.99l0.83,-0.96l-0.39,-1.3l0.09,-0.96l-1.24,-1.93l-0.24,-1.49l-1.03,-1.33l-1.19,-2.44l3.53,-20.65l43.66,6.71l43.06,5.23l42.75,3.84l43.15,2.53l-3.53,86.06l-28.11,-1.47l-26.82,-1.91l-26.78,-2.4l-25.84,-2.79l-0.44,0.35l-1.22,10.41l-1.51,-2.01l-0.03,-0.91l-1.19,-2.35l-1.25,-0.74l-1.8,0.92l0.03,1.05l-0.72,0.42l-0.34,1.56l-2.42,-0.41l-1.91,0.57l-0.92,-0.85l-3.36,0.09l-2.38,-0.96l-1.68,0.58l-0.84,1.49l-4.66,-1.6l-1.3,0.37l-1.12,0.9l-0.31,0.67l-1.65,-1.4l0.22,-1.43l-0.9,-1.71l0.4,-0.36l0.07,-0.62l-1.17,-3.08l-1.45,-1.25l-1.44,0.36l-0.21,-0.64l-1.08,-0.9l-0.41,-1.37l0.68,-0.61l0.2,-1.41l-0.77,-2.38l-0.77,-0.35l-0.31,-1.58l-1.51,-2.54l0.23,-1.51l-0.56,-1.26l0.34,-1.4l-0.73,-0.86l0.48,-0.98l-0.21,-0.74l-1.14,-0.75l-0.13,-0.59l-0.85,-0.91l-0.8,-0.4l-0.51,0.37l-0.07,0.74l-0.7,0.27l-1.13,1.22l-1.75,0.37l-1.21,1.07l-1.08,-0.85l-0.64,-1.01l-1.06,-0.44l0.02,-0.86l0.74,-0.63l0.24,-1.06l-0.61,-1.6l0.9,-1.09l1.07,-0.08l0.83,-0.8l-0.26,-1.14l0.38,-1.07l-0.95,-0.81l-0.04,-0.81l0.66,-1.28l-0.59,-1.07l0.74,-0.07l0.38,-0.42l-0.04,-1.77l1.83,-3.73l-0.14,-1.05l0.89,-0.62l0.6,-3.17l-0.78,-0.5l-1.8,0.37l-1.33,-0.11l-0.64,-0.55l0.37,-0.83l-0.62,-0.97l-0.66,-0.23l-0.72,0.35l-0.07,-0.95l-1.74,-1.63l0.04,-1.84l-1.68,-1.82l-0.08,-0.69l-1.55,-2.88l-1.07,-1.29l-0.57,-1.63l-2.35,-1.34l-0.95,-1.95l-1.44,-1.19Z\", \"name\": \"Montana\"}, \"US-MS\": {\"path\": \"M555.49,431.1l0.67,-0.97l-1.05,-1.76l0.18,-1.63l-0.81,-0.87l1.69,-0.25l0.47,-0.54l0.4,-2.74l-0.77,-1.82l1.56,-1.79l0.25,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.63,-0.96l1.14,-0.28l0.96,-2.59l0.91,-1.31l-0.16,-0.86l-1.54,-0.43l-0.35,-0.96l-1.83,-1.04l-0.07,-2.14l-0.93,-0.74l-0.45,-0.84l-0.02,-0.37l1.14,-0.29l0.47,-0.69l-0.26,-0.89l-1.41,-0.49l0.23,-1.77l0.98,-1.54l-0.77,-1.06l-1.08,-0.31l-0.15,-2.82l0.9,-0.54l0.23,-0.8l-0.62,-2.52l-1.25,-0.66l0.7,-1.33l-0.07,-2.22l-2.02,-1.52l1.14,-0.47l0.12,-1.41l-1.34,-0.89l1.58,-2.04l0.93,-0.31l0.36,-0.69l-0.52,-1.56l0.42,-1.35l-0.9,-0.89l1.6,-0.83l1.24,-0.27l0.59,-0.77l-0.09,-1.07l-1.41,-0.95l1.39,-1.08l0.62,-1.77l0.5,0.11l0.45,-0.28l0.34,-0.98l-0.2,-0.77l1.48,-0.43l1.22,-1.21l0.07,-3.53l-0.46,-1.53l0.36,-1.78l0.73,0.09l0.68,-0.33l0.42,-0.87l-0.41,-1.06l2.72,-1.71l0.58,-1.06l-0.29,-1.28l36.45,-4.1l0.86,1.26l0.85,0.45l0.99,66.5l5.52,32.95l-0.73,0.69l-1.53,-0.3l-0.91,-0.94l-1.32,1.06l-1.23,0.17l-2.17,-1.26l-1.85,-0.19l-0.83,0.36l-0.34,0.44l0.32,0.41l-0.56,0.36l-3.96,1.66l-0.05,-0.5l-0.96,-0.52l-1.0,0.04l-0.59,1.0l0.76,0.61l-1.59,1.21l-0.32,1.28l-0.69,0.3l-1.34,-0.06l-1.16,-1.86l-0.08,-0.89l-0.92,-1.47l-0.21,-1.01l-1.4,-1.63l-1.16,-0.54l-0.47,-0.78l0.1,-0.62l-0.69,-0.92l0.21,-1.99l0.5,-0.93l0.66,-2.98l-0.06,-1.23l-0.43,-0.29l-34.66,3.41Z\", \"name\": \"Mississippi\"}, \"US-SC\": {\"path\": \"M697.56,324.11l4.86,-2.69l1.02,-0.05l1.11,-1.38l3.93,-1.9l0.45,-0.88l0.63,0.22l22.71,-3.36l0.07,1.22l0.42,0.57l0.71,0.01l1.21,-1.3l2.82,2.54l0.46,2.48l0.55,0.52l19.74,-3.49l22.74,15.07l0.02,0.55l-2.48,2.18l-2.44,3.67l-2.41,5.72l-0.09,2.74l-1.08,-0.21l0.85,-2.73l-0.64,-0.23l-0.76,0.87l-0.56,1.38l-0.11,1.55l0.84,0.95l1.05,0.23l0.44,0.91l-0.75,0.08l-0.41,0.56l-0.87,0.02l-0.24,0.68l0.94,0.45l-1.1,1.13l-0.07,1.02l-1.34,0.63l-0.5,-0.61l-0.5,-0.08l-1.07,0.87l-0.56,1.76l0.43,0.87l-1.2,1.23l-0.61,1.44l-1.2,1.01l-0.9,-0.4l0.27,-0.6l-0.53,-0.74l-1.38,0.31l-0.11,0.43l0.36,0.77l-0.52,0.03l0.05,0.76l0.72,0.58l1.3,0.43l-0.12,0.39l-0.88,0.94l-1.22,0.23l-0.25,0.51l0.33,0.45l-2.3,1.34l-1.42,-0.85l-0.56,0.11l-0.11,0.67l1.19,0.78l-1.54,1.57l-0.72,-0.75l-0.5,0.52l-0.0,0.74l-0.69,-0.37l-0.85,-0.0l-1.34,-0.84l-0.45,0.5l0.16,0.53l-1.73,0.17l-0.44,0.37l-0.06,0.77l0.65,0.23l1.43,-0.17l-0.26,0.55l0.42,0.25l1.91,-0.15l0.11,0.22l-0.97,0.86l-0.32,0.78l0.57,0.49l0.94,-0.53l0.03,0.21l-1.12,1.09l-0.99,0.43l-0.21,-2.04l-0.69,-0.27l-0.22,-1.55l-0.88,-0.15l-0.31,0.58l0.86,2.7l-1.12,-0.66l-0.63,-1.0l-0.4,-1.76l-0.65,-0.2l-0.52,-0.63l-0.69,0.0l-0.27,0.6l0.84,1.02l0.01,0.68l1.11,1.83l-0.02,0.86l1.22,1.17l-0.62,0.35l0.03,0.98l-1.2,3.56l-1.52,-0.78l-1.52,0.26l-0.97,-0.68l-0.54,-1.03l-0.17,-2.93l-0.86,-0.75l-1.06,-2.47l-1.04,-0.95l-3.23,-1.33l-0.49,-2.65l-1.12,-2.17l-1.43,-1.58l-0.06,-1.07l-0.76,-1.21l-4.82,-1.69l-0.58,-1.27l-1.21,-0.37l0.02,-0.7l-0.53,-0.87l-0.87,0.0l-0.73,-0.61l0.03,-1.21l-0.66,-1.26l-2.7,-1.78l-2.16,-0.52l-2.36,-3.12l-3.93,-1.93l-1.22,-1.03l-0.83,-0.12l-1.05,-1.81l-0.51,-0.22l-0.91,-1.21l-1.18,-0.68l-0.99,-2.42l-1.54,-1.65l-1.02,-1.87l-1.06,-0.37l-1.93,0.37l-0.46,-0.16l-2.75,-2.19l-1.06,0.02l-1.7,-0.74l-0.52,-0.53l0.36,-2.22l0.64,-0.78l0.34,-1.39l1.36,-1.23l0.4,-0.98ZM750.38,375.27l0.73,-0.08l0.51,0.45l-1.23,1.9l0.28,-1.22l-0.3,-1.06Z\", \"name\": \"South Carolina\"}, \"US-RI\": {\"path\": \"M859.15,133.1l0.33,0.01l1.02,2.65l-0.31,0.56l-1.04,-3.22ZM858.41,136.77l-0.28,-0.34l0.24,-1.5l0.41,1.53l-0.37,0.31ZM851.13,141.49l0.22,-0.46l-0.53,-2.22l-3.14,-10.0l5.61,-1.84l0.76,2.06l0.8,0.25l0.19,0.73l0.08,0.41l-0.77,0.25l0.03,0.29l0.51,1.45l0.59,0.5l-0.6,0.15l-0.46,0.73l0.87,0.97l-0.14,1.22l0.94,2.18l-0.32,2.08l-1.33,0.23l-3.15,2.19l-0.16,-1.21ZM855.93,131.57l0.26,0.1l0.01,0.09l-0.17,-0.08l-0.1,-0.11ZM857.32,132.24l0.23,0.48l-0.2,0.31l-0.04,-0.39l0.01,-0.4ZM855.92,145.03l0.11,0.11l-0.18,0.1l-0.03,-0.14l0.11,-0.07Z\", \"name\": \"Rhode Island\"}, \"US-CT\": {\"path\": \"M823.44,156.54l2.83,-3.23l-0.07,-0.54l-1.31,-1.25l-3.5,-15.89l9.81,-2.41l0.6,0.46l0.65,-0.26l0.23,-0.58l14.16,-4.0l3.2,10.18l0.47,1.96l-0.04,1.69l-1.65,0.32l-0.91,0.81l-0.69,-0.36l-0.5,0.11l-0.18,0.91l-1.15,0.07l-1.27,1.27l-0.62,-0.14l-0.56,-1.02l-0.89,-0.09l-0.21,0.67l0.75,0.64l0.08,0.54l-0.89,-0.02l-1.02,0.87l-1.65,0.07l-1.15,0.94l-0.86,-0.09l-2.05,0.82l-0.4,-0.68l-0.61,0.11l-0.89,2.12l-0.59,0.29l-0.83,1.29l-0.79,-0.05l-0.94,0.74l-0.2,0.63l-0.53,0.05l-0.88,0.75l-2.77,3.07l-0.96,0.27l-1.24,-1.04Z\", \"name\": \"Connecticut\"}}, \"height\": 589.0572567800147, \"projection\": {\"type\": \"aea\", \"centralMeridian\": -100.0}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-lcc-en.js",
    "content": "$.fn.vectorMap('addMap', 'us_lcc_en',{\"insets\": [{\"width\": 220, \"top\": 440, \"height\": 166.21110208955304, \"bbox\": [{\"y\": -9267552.531674266, \"x\": -5155290.453049837}, {\"y\": -6764289.41437011, \"x\": -1841926.4305298943}], \"left\": 0}, {\"width\": 80, \"top\": 460, \"height\": 143.83286142212137, \"bbox\": [{\"y\": -4795881.348142953, \"x\": -6003393.3393215705}, {\"y\": -4216840.972769757, \"x\": -5681330.4284412395}], \"left\": 245}, {\"width\": 900.0, \"top\": 0, \"height\": 551.9026719088881, \"bbox\": [{\"y\": -5998757.84041658, \"x\": -2034551.3272073334}, {\"y\": -3186864.9120395407, \"x\": 2550865.204273278}], \"left\": 0}], \"paths\": {\"US-VA\": {\"path\": \"M684.15,290.12l1.59,-0.92l1.65,-0.49l1.11,-0.95l3.57,-1.7l0.73,-2.31l0.83,-0.2l2.32,-1.54l0.04,-1.79l2.04,-1.86l-0.13,-1.56l0.25,-0.41l5.0,-4.09l4.74,-5.97l0.1,0.61l0.97,0.52l0.34,1.35l1.33,0.71l0.71,0.79l1.47,0.07l2.1,1.08l1.41,-0.11l0.79,-0.41l0.76,-1.22l1.18,-0.57l0.53,-1.36l2.74,1.43l1.42,-1.1l2.25,-1.01l0.77,0.05l1.07,-0.96l0.33,-0.82l-0.49,-0.94l0.23,-0.41l1.91,0.55l3.25,-2.63l0.3,-0.1l0.51,0.71l0.66,-0.08l2.37,-2.33l0.17,-0.85l-0.5,-0.49l0.98,-1.12l0.1,-0.6l-0.29,-0.5l-1.01,-0.43l0.69,-2.99l2.58,-4.76l0.54,-2.12l-0.02,-1.88l1.6,-2.53l-0.22,-0.92l0.24,-0.83l0.5,-0.48l0.38,-1.68l-0.02,-3.13l1.24,0.17l1.19,1.69l3.81,0.37l0.58,-0.28l1.03,-2.5l0.18,-2.33l0.7,-1.04l-0.05,-1.59l0.75,-2.28l1.8,0.72l0.65,-0.18l1.29,-3.27l0.57,0.04l0.59,-0.39l0.51,-1.19l0.81,-0.68l0.43,-1.78l1.36,-2.42l-0.37,-2.53l0.53,-1.74l-0.32,-1.97l9.23,4.37l0.58,-0.3l0.61,-3.95l2.61,-0.11l0.63,0.55l1.06,0.21l-0.5,1.72l0.62,0.87l1.62,0.81l2.53,-0.08l1.04,1.14l1.64,0.09l1.95,1.46l0.58,2.48l-0.94,0.78l-0.45,0.03l-0.3,0.43l0.12,0.7l-0.61,-0.05l-0.48,0.59l-0.35,2.47l0.08,2.25l-0.43,0.25l0.01,0.6l1.04,0.73l-0.35,0.14l-0.17,0.6l0.45,0.3l1.64,-0.1l1.38,-0.62l1.77,-1.62l0.4,0.56l-0.58,0.35l0.03,0.59l1.91,1.03l0.65,1.06l1.7,0.31l1.38,-0.13l0.95,0.47l0.82,-0.66l1.06,-0.1l0.33,0.55l1.26,0.59l-0.09,0.54l0.37,0.54l0.94,-0.24l0.42,0.54l3.97,0.8l0.26,1.1l-0.87,-0.4l-0.56,0.45l0.9,1.7l-0.35,0.57l0.62,0.77l-0.42,0.88l0.23,0.58l-1.36,-0.33l-0.59,-0.7l-0.66,0.19l-0.1,0.43l-2.47,-2.24l-0.55,0.06l-0.38,-0.54l-0.52,0.32l-1.37,-1.46l-1.24,-0.4l-2.88,-2.64l-1.34,-0.1l-1.12,-0.78l-1.17,0.07l-0.39,0.52l0.48,0.71l1.1,-0.03l0.64,0.66l1.33,0.05l0.6,0.41l0.63,1.37l1.47,1.07l1.14,0.32l1.54,1.75l2.56,0.89l1.41,1.84l2.15,-0.05l1.26,0.45l-0.58,0.69l0.31,0.48l2.03,0.31l0.27,0.7l0.56,0.09l0.14,1.64l-1.01,-0.73l-0.39,0.21l-1.14,-0.97l-0.58,0.3l0.11,0.81l-0.3,0.68l0.7,0.69l-0.16,0.59l1.12,0.3l-0.86,0.45l-2.14,-0.68l-1.4,-1.34l-0.84,-0.3l-2.25,-1.81l-0.57,0.12l-0.21,0.53l0.27,0.8l0.64,0.2l3.84,3.04l2.7,1.06l1.28,-0.35l0.46,1.05l1.27,0.23l-0.43,0.66l0.3,0.56l0.93,-0.2l0.01,1.21l-0.92,0.42l-0.57,0.74l-0.72,-0.91l-3.22,-1.51l-0.3,-1.14l-0.6,-0.57l-0.86,-0.1l-1.2,0.68l-1.72,-0.41l-0.37,-1.13l-0.71,-0.04l-0.05,1.3l-0.33,0.41l-1.44,-1.28l-0.51,0.1l-0.49,0.57l-0.66,-0.38l-0.98,0.46l-2.23,-0.07l-0.37,0.94l0.35,0.45l1.91,0.18l1.4,-0.33l0.85,0.23l0.56,-0.69l0.64,0.86l1.35,0.4l1.96,-0.34l1.51,0.68l0.67,-0.64l0.96,2.43l3.18,1.16l0.38,0.88l-0.57,1.02l0.56,0.43l1.72,-1.32l0.89,-0.03l0.84,0.63l0.79,-0.28l-0.62,-0.88l-0.2,-1.14l3.79,0.02l1.13,-0.45l1.91,3.14l-0.45,0.71l0.68,3.04l-1.2,-0.55l-0.01,0.87l-33.61,8.85l-34.62,8.17l-19.56,3.56l-11.81,1.37l-0.82,0.62l-28.25,5.27ZM782.77,223.09l0.13,0.08l-0.05,0.06l-0.01,-0.03l-0.07,-0.12ZM809.86,243.6l0.52,-1.12l-0.27,-0.54l-0.36,-0.07l0.57,-0.97l-0.39,-0.71l-0.03,-0.47l0.43,-0.35l-0.18,-0.72l0.63,-0.31l0.22,-0.6l0.12,-2.29l1.01,-0.4l-0.13,-0.88l0.48,-0.14l-0.27,-1.51l-0.77,-0.39l0.85,-0.56l0.09,-1.02l2.68,-1.14l0.39,2.43l-1.05,4.15l-0.21,2.35l0.34,1.06l-0.33,0.97l-0.61,-0.77l-0.8,0.16l-0.38,0.95l0.26,0.36l-0.64,0.46l-0.3,0.85l0.17,1.04l-0.3,1.44l0.4,2.43l-0.6,0.59l0.07,1.31l-1.39,-1.86l0.22,-0.92l-0.34,-1.54l0.28,-0.97l-0.38,-0.29Z\", \"name\": \"Virginia\"}, \"US-PA\": {\"path\": \"M717.56,161.53l0.63,-0.19l4.28,-3.74l1.16,5.12l0.48,0.3l34.83,-8.31l34.25,-9.05l1.43,0.55l0.73,1.36l0.63,0.12l0.77,-0.34l1.24,0.56l0.16,0.84l0.81,0.39l-0.15,0.58l0.92,2.65l1.92,2.02l2.12,0.71l2.21,-0.24l0.72,0.77l-0.89,0.87l-0.71,1.48l-0.16,2.23l-1.39,3.33l-1.36,1.59l0.04,0.79l1.8,1.66l-0.29,1.63l-0.84,0.44l-0.22,0.65l0.15,1.46l1.06,2.82l0.53,0.24l1.2,-0.2l1.2,2.33l0.96,0.56l0.66,-0.27l0.61,0.88l4.26,2.64l0.12,0.39l-1.28,0.94l-3.69,4.22l-0.22,0.75l0.18,0.88l-1.35,1.14l-0.84,0.16l-1.32,1.09l-0.32,0.65l-1.72,-0.09l-2.03,0.86l-1.14,1.36l-0.4,1.38l-37.24,9.65l-39.13,9.08l-10.34,-47.42l1.91,-1.23l3.06,-3.05Z\", \"name\": \"Pennsylvania\"}, \"US-TN\": {\"path\": \"M573.2,341.46l0.85,-0.82l0.29,-1.35l1.01,0.04l0.65,-0.79l-1.01,-4.82l1.41,-1.91l0.06,-1.31l1.19,-0.47l0.36,-0.48l-0.64,-1.29l0.52,-0.64l0.05,-0.56l-0.9,-1.3l2.56,-1.56l1.09,-1.12l-0.14,-0.84l-0.85,-0.52l0.13,-0.18l0.34,-0.16l0.85,0.36l0.45,-0.33l-0.27,-1.3l-0.85,-0.88l0.05,-0.69l0.5,-1.41l1.01,-1.1l-1.35,-2.02l1.37,-0.22l0.61,-0.55l-0.14,-0.64l-1.18,-0.79l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.59,-1.35l0.02,-0.36l0.38,0.53l0.47,0.07l1.18,-1.14l23.75,-2.95l0.35,-0.41l-0.1,-1.33l-0.84,-2.34l2.99,-0.1l0.82,0.57l22.86,-3.69l7.67,-0.52l7.52,-0.92l32.92,-4.79l1.11,-0.6l29.37,-5.47l0.73,-0.6l3.56,-0.57l-0.39,1.41l0.44,0.84l-0.39,1.97l0.36,0.8l-1.15,-0.02l-1.71,1.79l-1.19,3.85l-0.55,0.7l-0.57,0.08l-0.64,-0.72l-1.44,-0.0l-2.67,1.74l-1.41,2.71l-0.96,0.89l-0.34,-0.33l-0.14,-1.04l-0.73,-0.52l-0.53,0.15l-2.3,1.81l-0.29,1.31l-0.94,-0.23l-0.89,0.48l-0.16,0.76l0.33,0.71l-0.84,2.15l-1.29,0.07l-1.75,1.14l-1.28,1.24l-0.61,1.05l-0.78,0.28l-2.28,2.45l-4.05,0.81l-2.58,1.7l-0.49,1.08l-0.88,0.55l-0.55,0.8l-0.17,2.85l-0.35,0.6l-1.66,0.53l-0.89,-0.15l-1.06,1.14l0.23,5.18l-20.28,3.48l-21.69,3.21l-25.86,3.15l-0.13,0.28l-7.43,0.94l-28.83,3.33Z\", \"name\": \"Tennessee\"}, \"US-ID\": {\"path\": \"M132.97,123.81l-0.34,-0.44l0.1,-1.98l0.55,-1.73l1.43,-1.2l2.14,-3.56l1.69,-0.91l1.4,-1.51l1.09,-2.13l0.06,-1.21l2.23,-2.39l1.45,-2.68l0.38,-1.36l2.06,-2.24l1.91,-2.8l0.04,-1.01l-0.76,-2.96l-2.11,-1.96l-0.86,-0.37l-0.84,-1.62l-0.39,-3.03l-0.58,-1.2l0.95,-1.18l-0.1,-2.36l-1.01,-2.71l0.47,-0.99l10.25,-55.09l13.33,2.45l-3.77,21.08l1.25,2.93l0.98,1.29l0.25,1.57l1.15,1.79l-0.13,0.84l0.38,1.16l-1.0,0.96l0.82,1.79l-0.84,0.11l-0.28,0.71l1.91,1.71l1.01,2.06l2.23,1.25l0.47,1.49l1.14,1.46l1.46,2.82l0.08,0.69l1.62,1.83l-0.01,1.89l1.78,1.73l-0.08,1.36l0.74,0.19l0.9,-0.58l0.35,0.47l-0.36,0.55l0.06,0.54l1.1,0.97l1.61,0.16l1.82,-0.35l-0.65,2.62l-0.99,0.53l0.25,1.14l-1.86,3.74l0.05,1.72l-0.81,0.07l-0.37,0.54l0.59,1.33l-0.62,0.9l-0.04,1.17l0.96,0.94l-0.37,0.81l0.27,1.02l-1.57,0.42l-1.22,1.41l0.09,1.11l0.45,0.78l-0.14,0.74l-0.83,0.77l-0.21,1.52l1.48,0.64l1.37,1.8l0.78,0.28l1.08,-0.34l0.56,-0.79l1.85,-0.4l1.22,-1.27l0.82,-0.29l0.16,-0.76l0.78,0.82l0.22,0.71l1.05,0.65l-0.43,1.23l0.72,0.95l-0.35,1.37l0.56,1.35l-0.22,1.61l1.53,2.65l0.3,1.73l0.82,0.37l0.65,2.08l-0.19,0.98l-0.77,0.63l0.5,1.9l1.23,1.16l0.3,0.79l0.81,0.09l0.87,-0.36l1.04,0.93l1.04,2.79l-0.51,0.81l0.88,1.83l-0.28,0.59l0.11,0.98l2.28,2.42l0.97,-0.13l-0.0,-1.13l1.08,-0.88l0.93,-0.21l4.53,1.64l0.69,-0.31l0.68,-1.34l1.2,-0.39l2.25,0.94l3.3,-0.08l0.95,0.88l2.29,-0.56l3.23,0.8l0.46,-0.49l-0.67,-0.77l0.26,-1.05l0.74,-0.47l-0.06,-0.96l1.23,-0.5l0.48,0.37l1.06,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.5,53.36l-47.53,-6.62l-47.01,-8.09l7.13,-38.73l1.13,-1.16l1.09,-2.65l-0.2,-1.74l0.74,-0.14l0.78,-1.6l-0.89,-1.27l-0.17,-1.2l-1.24,-0.09l-0.63,-0.82l-0.89,0.28Z\", \"name\": \"Idaho\"}, \"US-NV\": {\"path\": \"M138.94,329.03l-12.68,-16.85l-36.47,-50.78l-25.23,-34.32l14.11,-63.12l46.9,9.68l47.03,8.11l-19.28,123.81l-0.91,1.13l-1.0,2.15l-0.44,0.17l-1.35,-0.23l-0.97,-2.22l-0.7,-0.63l-1.42,0.2l-1.95,-1.03l-1.61,0.21l-1.8,0.93l-0.78,2.44l0.87,2.57l-0.61,0.95l-0.25,1.29l0.37,3.09l-0.77,2.5l0.76,3.67l-0.15,3.03l-0.31,1.05l-1.05,0.3l-0.12,0.51l0.32,0.79l-0.53,0.61Z\", \"name\": \"Nevada\"}, \"US-TX\": {\"path\": \"M276.14,412.63l33.26,2.09l32.98,1.42l0.41,-0.38l3.72,-97.69l25.97,0.65l26.4,0.23l0.05,41.52l0.44,0.4l1.03,-0.13l0.79,0.27l3.76,3.78l1.67,0.2l0.88,-0.57l2.5,0.64l0.6,-0.67l0.11,-1.04l0.61,0.75l0.93,0.22l0.38,0.92l0.77,0.77l-0.01,1.62l0.53,0.83l2.86,0.42l1.26,-0.2l1.39,0.88l2.8,0.68l1.83,-0.56l0.63,0.1l1.9,1.78l1.41,-0.11l1.26,-1.42l2.44,0.26l1.68,-0.45l0.32,2.59l2.31,0.73l-0.04,2.07l1.56,0.78l1.82,-0.65l1.58,-1.66l1.03,-0.64l0.41,0.19l0.45,1.62l2.02,0.2l0.25,1.04l0.72,0.47l1.47,-0.21l0.89,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.98l0.26,0.4l-0.45,1.22l0.14,0.76l0.68,1.13l0.78,0.41l0.57,-0.04l0.6,-0.5l0.69,-2.34l0.91,-0.65l0.35,-1.53l0.57,-0.14l0.41,0.14l0.29,0.98l0.58,0.63l1.21,0.01l0.83,0.49l1.26,-0.2l0.69,-1.33l0.49,0.15l-0.13,0.69l0.49,0.69l1.21,0.44l0.49,0.71l1.53,-0.05l1.5,1.72l0.51,0.02l0.63,-0.62l0.08,-0.71l1.5,-0.1l0.93,-1.42l1.89,-0.41l1.67,-1.13l1.53,0.83l1.51,-0.22l0.29,-0.83l2.3,-0.73l0.53,-0.55l0.51,0.32l0.38,0.87l1.83,0.41l1.7,-0.06l1.87,-1.14l0.42,-1.04l1.07,0.3l2.25,1.54l1.16,0.17l1.8,2.05l2.15,0.39l1.05,0.91l0.76,-0.11l2.5,0.84l1.05,0.03l0.37,0.78l1.39,0.96l1.45,-0.12l0.39,-0.71l0.81,0.36l0.88,-0.4l0.93,0.34l0.76,-0.16l0.64,0.36l2.31,33.8l1.53,1.66l1.31,0.82l1.26,1.86l0.58,1.63l-0.09,2.64l1.01,1.2l0.85,0.39l-0.11,0.85l0.75,0.54l0.29,0.87l0.66,0.69l-0.19,1.17l1.01,1.02l0.6,1.63l0.51,0.34l0.55,-0.11l-0.16,1.71l0.82,1.21l-0.64,0.25l-0.35,0.68l0.78,1.26l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.75,0.85l-0.36,1.55l-0.8,1.13l0.65,2.0l-0.83,2.29l0.17,1.08l0.84,1.2l-0.18,1.01l0.5,1.61l-0.24,1.41l-1.13,1.68l-1.03,0.21l-1.76,3.39l-0.04,1.07l1.81,2.38l-3.45,0.09l-7.41,3.83l-0.02,-0.44l-2.2,-0.46l-3.27,1.09l1.09,-3.54l-0.3,-1.22l-0.81,-0.76l-0.62,-0.07l-1.53,0.86l-0.99,2.02l-1.57,-0.96l-1.65,0.13l-0.07,0.63l0.9,0.62l0.01,1.06l0.56,0.39l-0.47,0.7l0.07,1.02l1.65,0.64l-0.63,0.72l0.49,0.98l0.91,0.23l0.28,0.38l-0.41,1.27l-0.46,-0.12l-0.98,0.82l-1.73,2.27l-1.19,-0.41l-0.49,0.13l0.33,1.01l0.08,2.57l-1.86,1.51l-1.92,2.13l-0.97,0.37l-4.13,2.94l-3.32,0.46l-2.56,1.08l-0.2,1.14l-0.76,-0.35l-2.05,0.9l-0.34,-0.35l-1.12,0.18l0.43,-0.88l-0.53,-0.6l-1.44,0.23l-1.22,1.1l-0.61,-0.63l-0.11,-1.21l-1.39,-0.82l-0.5,0.44l0.66,1.45l0.02,1.14l-0.72,0.09l-0.54,-0.44l-0.76,-0.0l-0.56,-1.35l-1.47,-0.38l-0.58,0.39l0.04,0.55l0.95,1.72l0.03,1.25l0.58,0.37l0.37,-0.16l1.15,0.79l-0.76,0.38l-0.27,0.54l0.15,0.37l0.7,0.23l1.09,-0.55l0.97,0.61l-4.3,2.46l-0.58,-0.13l-0.38,-1.46l-0.51,-0.19l-1.14,-1.48l-0.49,-0.03l-0.48,0.51l0.12,0.64l-0.64,0.35l-0.05,0.51l1.2,1.64l-0.31,1.06l0.34,0.86l-1.67,1.82l-0.38,0.2l0.38,-0.66l-0.19,-0.72l0.25,-0.74l-0.46,-0.68l-0.52,0.17l-0.72,1.11l0.26,0.73l-0.4,0.97l-0.07,-1.15l-0.52,-0.55l-1.96,1.31l-0.78,-0.33l-0.7,0.52l0.07,0.76l-0.82,1.01l0.02,0.49l1.26,0.64l0.03,0.58l0.79,0.28l0.7,-1.43l0.87,-0.42l0.01,0.64l-2.84,4.43l-1.24,-1.01l-1.37,0.39l-0.33,-0.35l-2.42,0.4l-0.47,-0.32l-0.65,0.17l-0.18,0.58l0.41,0.62l0.56,0.38l1.55,0.02l-0.01,0.93l0.56,0.65l2.09,1.05l-2.71,7.78l-0.22,0.11l-0.38,-0.56l-0.34,0.1l0.18,-0.78l-0.57,-0.43l-2.37,1.99l-1.74,-2.41l-1.2,-0.93l-0.61,0.4l0.09,0.53l1.46,2.04l-0.1,0.84l-0.95,-0.09l-0.33,0.63l0.51,0.57l1.9,0.07l2.16,0.73l2.11,-0.74l-0.44,1.79l0.24,0.79l-0.98,0.71l0.38,1.63l-1.13,0.15l-0.43,0.41l0.41,2.15l-0.33,1.63l0.45,0.64l0.85,0.24l0.89,2.93l0.72,2.88l-0.92,0.84l0.63,0.49l-0.08,1.31l0.73,0.3l0.18,0.63l0.59,0.29l0.4,1.84l0.7,0.31l0.44,3.31l0.81,0.56l0.7,0.08l-0.32,0.2l-0.23,0.95l0.32,1.11l-0.65,0.8l-0.85,-0.05l-0.54,0.45l0.09,1.35l-0.49,-0.34l-0.5,0.26l-0.39,-0.68l-1.5,-0.47l-2.95,-2.6l-2.23,-0.18l-0.81,-0.52l-4.24,0.1l-0.9,0.44l-0.79,-0.64l-1.07,0.26l-1.26,-0.21l-1.47,-0.72l-0.73,-1.0l-0.62,-0.14l-0.2,-0.74l-1.18,-0.5l-1.0,-0.02l-2.0,-0.89l-1.47,0.4l-0.84,-1.12l-0.61,-0.21l-1.44,-1.42l-1.98,0.01l-1.48,-0.66l-0.86,0.12l-1.64,-0.43l0.29,-1.29l-0.54,-1.03l-0.96,-0.36l-1.67,-6.18l-2.79,-3.08l-0.29,-1.14l-1.09,-0.77l0.35,-0.79l-0.24,-0.77l0.34,-2.23l-0.45,-0.97l-1.06,-1.03l0.66,-2.04l0.05,-1.21l-0.18,-0.71l-0.55,-0.33l-0.15,-1.85l-1.86,-1.46l-0.86,0.22l-0.3,-0.42l-0.81,-0.11l-0.75,-1.33l-2.25,-1.75l0.01,-0.7l-0.51,-0.59l0.12,-0.88l-0.98,-0.93l-0.08,-0.76l-1.13,-0.62l-1.31,-2.92l-2.68,-1.5l-0.38,-0.93l-1.14,-0.6l-0.06,-1.18l-0.83,-1.2l-0.23,-1.46l-0.36,-0.52l0.42,-0.22l-0.04,-0.73l-1.04,-0.5l-0.26,-1.31l-0.82,-0.58l-0.95,-1.76l-0.61,-2.41l-1.86,-2.38l-0.87,-4.28l-1.82,-1.35l0.05,-0.71l-0.76,-1.22l-1.32,-0.76l-0.92,-0.99l-1.75,-0.95l-0.71,-1.87l-1.83,-0.62l-1.45,-1.0l-0.01,-1.64l-0.6,-0.39l-0.89,0.24l-0.12,-0.78l-0.99,-0.33l-0.8,-2.09l-0.56,-0.47l-0.47,0.12l-0.46,-0.44l-0.86,0.27l-0.14,-0.61l-0.44,-0.31l-0.47,0.15l-0.26,0.61l-1.06,0.16l-2.91,-0.47l-0.39,-0.38l-1.49,-0.03l-0.79,0.29l-0.77,-0.44l-2.68,0.27l-3.95,-2.1l-1.36,0.86l-0.65,1.62l-2.0,-0.18l-0.52,0.45l-0.49,-0.17l-1.05,0.49l-1.34,0.14l-3.25,6.44l-0.19,1.78l-0.77,0.67l-0.39,1.81l0.35,0.6l-2.01,1.01l-0.73,1.31l-1.12,0.66l-1.13,2.02l-2.69,-0.47l-1.04,-0.88l-0.55,0.3l-1.71,-1.22l-1.31,-1.64l-2.92,-0.86l-1.16,-0.96l-0.02,-0.67l-0.42,-0.41l-2.77,-0.52l-2.29,-1.05l-1.9,-1.77l-0.91,-1.54l-0.97,-0.92l-1.54,-0.29l-1.78,-1.27l-0.22,-0.56l-1.32,-1.19l-0.65,-2.7l-0.87,-1.02l-0.24,-1.11l-0.76,-1.28l-0.26,-2.35l0.53,-3.06l-3.01,-5.09l-0.05,-1.94l-1.26,-2.52l-0.99,-0.44l-0.43,-1.24l-1.44,-0.81l-2.16,-2.18l-1.03,-0.1l-2.02,-1.26l-3.2,-3.36l-0.59,-1.56l-3.14,-2.56l-1.59,-2.45l-1.2,-0.95l-0.61,-1.05l-4.44,-2.62l-1.19,-2.19l-1.21,-3.23l-1.38,-1.09l-1.13,-0.08l-1.76,-1.68l-0.78,-3.04ZM503.52,468.36l-0.35,0.19l0.19,-0.17l0.16,-0.02ZM500.13,471.02l-0.12,0.17l-0.05,0.03l0.18,-0.2ZM499.19,472.55l0.16,0.05l-0.21,0.2l0.04,-0.13l0.01,-0.12ZM498.43,473.45l-0.15,0.14l0.04,-0.1l0.11,-0.04ZM468.75,489.63l0.04,0.02l-0.03,0.02l-0.0,-0.04ZM455.12,548.8l0.78,-0.53l0.25,-0.72l0.12,1.15l-1.14,0.1ZM462.07,500.4l-0.15,-0.61l1.24,-0.37l-0.3,0.35l-0.8,0.64ZM464.7,498.41l0.11,-0.25l1.31,-0.91l-0.95,0.88l-0.47,0.27ZM466.99,496.67l0.29,-0.26l0.49,-0.04l-0.27,0.14l-0.52,0.16ZM459.12,503.58l0.71,-1.67l0.64,-0.73l-0.01,0.78l-1.34,1.62ZM452.17,516.05l0.07,-0.29l0.1,-0.22l-0.17,0.5ZM452.62,514.77l0.17,-0.39l0.04,-0.06l-0.21,0.45ZM453.57,512.77l-0.01,-0.06l0.06,-0.05l-0.05,0.11Z\", \"name\": \"Texas\"}, \"US-NH\": {\"path\": \"M830.68,105.86l0.18,-1.32l-1.48,-5.32l0.52,-1.45l-0.31,-2.2l0.98,-1.86l-0.16,-2.28l0.61,-2.28l-0.45,-0.61l0.27,-2.29l-0.98,-3.77l0.08,-0.7l0.3,-0.46l1.83,-0.83l0.68,-1.39l1.42,-1.64l0.72,-1.8l-0.26,-1.12l0.51,-0.63l-2.38,-3.45l0.83,-3.26l-0.12,-0.78l-0.82,-1.28l0.26,-0.6l-0.24,-0.7l0.44,-3.2l-0.37,-0.82l0.89,-1.5l2.44,0.3l0.64,-0.89l13.44,34.54l0.88,3.61l2.62,2.16l0.88,0.32l0.38,1.58l1.73,1.27l0.01,0.34l0.78,0.22l-0.05,0.57l-0.43,3.08l-1.57,0.26l-1.31,1.21l-0.5,0.94l-0.96,0.38l-0.49,1.67l-1.08,1.44l-17.58,5.0l-1.71,-1.39l-0.42,-0.87l-0.12,-1.98l0.53,-0.59l0.03,-0.52l-1.08,-5.12Z\", \"name\": \"New Hampshire\"}, \"US-NY\": {\"path\": \"M822.66,166.36l0.68,-2.03l0.63,-0.03l0.54,-0.75l0.77,0.13l0.53,-0.42l-0.04,-0.3l0.57,-0.04l0.27,-0.66l0.66,-0.03l0.19,-0.55l-0.43,-0.81l0.22,-0.53l0.61,-0.38l1.34,0.19l0.53,-0.6l1.46,-0.2l0.21,-0.8l1.86,-0.01l1.08,-0.91l0.11,-0.79l0.62,0.24l0.43,-0.61l4.82,-1.35l2.25,-1.32l1.97,-2.91l-0.19,1.14l-0.97,0.86l-1.21,2.3l0.55,0.46l1.59,-0.37l0.28,0.61l-0.42,0.49l-1.37,0.88l-0.51,-0.06l-2.25,0.95l-0.07,0.92l-0.87,0.01l-2.72,1.74l-1.01,0.16l-0.17,0.79l-1.24,0.11l-2.23,1.92l-4.43,2.22l-0.2,0.71l-0.28,0.08l-0.46,-0.81l-1.41,-0.04l-0.73,0.42l-0.41,0.81l0.22,0.3l-0.91,0.7l-0.76,-0.81l0.32,-1.04ZM829.28,158.96l-0.01,-0.01l0.02,-0.06l-0.01,0.07ZM846.33,148.77l0.14,-0.09l0.08,-0.01l-0.11,0.18l-0.12,-0.07ZM845.51,154.6l0.09,-0.87l0.73,-1.16l1.63,-1.53l1.01,0.29l0.04,-0.81l0.79,0.65l-3.33,3.22l-0.67,0.46l-0.31,-0.24ZM723.17,157.08l3.74,-3.86l1.26,-2.18l1.74,-1.87l1.16,-0.79l1.26,-3.33l1.55,-1.31l0.53,-0.83l-0.22,-1.82l-1.63,-2.37l0.42,-1.12l-0.18,-0.78l-0.84,-0.52l-2.11,0.02l0.04,-0.98l-0.59,-2.19l4.97,-2.98l4.48,-1.84l2.38,-0.22l1.83,-0.76l5.64,-0.31l3.14,1.2l3.15,-1.71l5.49,-1.13l0.58,0.44l0.68,-0.2l0.11,-0.98l1.45,-0.74l1.02,-0.94l0.74,-0.21l0.67,-2.04l1.86,-1.77l0.77,-1.27l1.12,0.02l1.12,-0.54l1.05,-1.63l-0.47,-0.69l0.35,-1.19l-0.26,-0.51l-0.64,0.03l-0.18,-1.16l-0.95,-1.56l-1.01,-0.6l0.12,-0.18l0.6,0.38l0.53,-0.27l0.73,-1.44l-0.02,-0.9l0.8,-0.65l-0.02,-0.97l-0.93,-0.18l-0.59,0.7l-0.27,0.12l0.54,-1.29l-0.81,-0.61l-1.26,0.06l-0.86,0.78l-0.99,-0.68l2.02,-2.52l1.76,-1.49l1.64,-2.65l0.7,-0.57l0.11,-0.59l0.77,-0.96l0.07,-0.56l-0.51,-0.94l0.76,-1.9l4.74,-7.65l4.72,-4.55l2.83,-0.55l19.6,-5.91l0.42,0.87l-0.06,2.0l1.03,1.2l0.48,3.78l2.33,3.2l-0.07,1.88l0.88,2.39l-0.58,1.07l0.04,3.4l0.72,0.88l1.35,2.72l0.2,1.08l0.62,0.83l0.16,3.9l0.56,0.83l0.54,0.07l0.53,-0.61l0.05,-0.86l0.33,-0.08l1.06,1.09l4.12,15.39l0.75,1.17l0.37,15.15l0.61,0.61l3.72,15.98l1.27,1.3l-2.79,3.18l0.03,0.55l1.53,1.27l0.19,0.58l-0.77,0.88l-0.63,1.79l-0.41,0.39l0.15,0.67l-1.24,0.65l0.0,-3.96l-0.58,-2.25l-0.76,-1.59l-1.47,-1.06l-0.18,-1.11l-0.7,-0.09l-0.41,1.33l0.69,1.25l1.06,0.8l0.99,2.79l-13.8,-3.78l-1.29,-1.43l-2.39,0.27l-0.63,-0.41l-1.06,-0.13l-1.76,-1.86l-0.76,-2.29l0.11,-0.72l-0.36,-0.62l-0.55,-0.2l0.08,-0.45l-0.36,-0.42l-1.65,-0.64l-1.08,0.33l-0.76,-1.38l-1.71,-0.71l-34.57,9.14l-34.42,8.22l-1.15,-5.07ZM820.13,168.63l1.08,-0.49l0.15,0.61l-1.16,1.52l-0.07,-1.64ZM731.02,138.24l0.02,-0.68l0.78,-0.08l-0.37,1.08l-0.44,-0.32Z\", \"name\": \"New York\"}, \"US-HI\": {\"path\": \"M295.6,602.68l-0.09,-1.67l-0.5,-1.2l-1.36,-1.92l-0.81,-0.52l0.28,-0.81l-0.26,-0.81l1.55,-2.32l3.47,-3.7l1.36,-3.84l-0.34,-0.67l1.34,-3.38l0.03,-3.33l0.97,-1.19l2.6,-0.55l1.38,0.28l3.13,-1.26l1.83,-0.31l0.55,-0.72l-0.02,-3.0l0.55,-1.89l2.08,-1.33l1.79,2.42l-0.22,1.06l1.84,4.02l1.0,0.39l5.15,8.57l0.71,4.42l-1.86,3.54l0.21,0.61l1.56,1.09l-0.87,2.31l0.29,1.69l1.58,3.4l-1.65,1.04l-2.5,-0.21l-3.62,0.59l-4.92,-1.47l-2.28,-1.5l-7.29,-0.13l-1.75,0.29l-1.79,1.35l-1.85,0.68l-1.27,0.03ZM308.01,538.5l1.75,0.1l0.45,2.33l-0.48,2.26l0.38,0.88l2.49,0.98l1.51,0.11l1.61,1.55l0.21,1.73l0.97,1.09l-0.2,1.18l1.85,2.81l-0.19,0.78l-0.73,0.55l-2.03,0.42l-2.01,-0.21l-1.54,-1.33l-2.4,-0.27l-2.86,-1.65l0.09,-1.41l1.37,-2.06l0.56,-2.29l-0.39,-0.61l-1.46,-0.79l-1.08,-1.95l0.04,-2.96l2.08,-1.24ZM298.76,524.37l0.78,0.38l0.35,1.16l2.76,2.23l0.91,1.23l1.01,0.08l0.77,1.87l1.64,1.17l0.79,0.07l1.14,1.28l-1.54,0.5l-2.97,-0.75l-3.3,-4.38l-3.34,-2.24l-1.49,-0.49l-0.0,-0.85l1.78,-0.49l0.7,-0.77ZM302.19,550.7l-2.27,-1.11l-0.3,-0.63l3.27,0.35l-0.7,1.39ZM299.02,540.44l-1.0,-0.33l-0.74,-1.02l1.13,-2.28l-0.43,-2.01l2.82,1.55l0.54,2.32l0.07,1.24l-2.41,0.51ZM282.01,508.46l0.73,-2.05l-0.37,-0.99l-0.01,-3.16l0.89,-1.06l-0.09,-1.35l2.95,2.09l3.17,-0.67l1.72,0.17l0.36,1.13l-0.49,2.4l0.23,1.66l-0.79,0.68l-0.29,1.71l0.32,1.7l0.94,0.57l0.23,1.2l-0.63,1.26l0.55,1.49l-1.41,-0.01l-0.19,-0.54l-2.19,-0.97l-0.68,-3.14l-1.37,-0.44l0.91,-0.17l0.35,-0.47l-0.05,-0.71l-0.64,-0.76l-0.41,-0.26l-0.38,0.43l-1.05,-0.53l0.12,2.05l-2.44,-1.27ZM260.53,470.55l-0.14,-2.24l-0.95,-0.77l-0.68,-1.38l0.16,-1.33l0.12,-0.42l2.67,-0.89l5.01,0.62l0.67,1.16l2.67,1.22l0.69,1.39l-0.28,2.14l-2.6,1.45l-0.88,1.44l-0.85,0.35l-3.09,0.08l-0.91,-1.7l-1.61,-1.12ZM245.8,462.89l-0.21,-0.88l1.2,-0.84l4.77,-0.76l0.54,0.41l-1.11,0.42l-0.79,1.06l-1.81,-0.57l-1.49,0.36l-1.09,0.8Z\", \"name\": \"Hawaii\"}, \"US-VT\": {\"path\": \"M805.92,73.67l25.93,-8.31l0.92,1.83l-0.71,2.38l-0.01,1.54l2.25,2.7l-0.5,0.59l0.28,1.12l-0.65,1.6l-1.33,1.51l-0.63,1.32l-1.72,0.73l-0.61,0.93l-0.09,0.98l0.97,3.7l-0.26,2.43l0.41,0.53l-0.58,2.1l0.18,2.17l-0.98,1.87l0.29,2.34l-0.52,1.54l1.49,5.38l-0.2,1.22l1.1,5.24l-0.57,0.85l0.14,2.29l0.61,1.24l1.51,1.06l-11.42,3.05l-0.57,-0.83l-4.18,-15.56l-1.73,-1.55l-0.9,0.26l-0.29,1.19l-0.12,-0.25l-0.15,-3.88l-0.69,-0.99l-0.15,-0.97l-1.4,-2.82l-0.63,-0.67l-0.02,-3.13l0.58,-1.15l-0.89,-2.54l0.06,-1.92l-0.4,-0.91l-1.57,-1.6l-0.39,-0.8l-0.45,-3.69l-1.04,-1.25l0.09,-1.87l-0.44,-1.0Z\", \"name\": \"Vermont\"}, \"US-NM\": {\"path\": \"M230.53,422.69l12.24,-122.4l25.76,2.35l26.19,1.96l26.22,1.52l25.84,1.07l-0.32,10.07l-0.75,0.39l-3.71,97.67l-32.57,-1.41l-33.72,-2.12l-0.44,0.75l0.53,2.31l0.44,1.25l0.99,0.76l-30.72,-2.59l-0.44,0.36l-0.85,9.43l-14.71,-1.4Z\", \"name\": \"New Mexico\"}, \"US-NC\": {\"path\": \"M829.09,287.59l0.01,-0.01l-0.0,0.0l-0.01,0.0ZM821.62,270.85l0.21,0.22l-0.05,0.01l-0.16,-0.24ZM823.91,275.04l0.2,0.15l-0.02,0.18l-0.06,-0.08l-0.12,-0.24ZM678.55,321.5l0.92,0.16l1.52,-0.4l0.42,-0.39l0.52,-0.97l0.11,-2.67l1.34,-1.19l0.47,-1.04l2.25,-1.47l2.13,-0.54l0.76,0.17l1.32,-0.53l2.36,-2.52l0.78,-0.25l1.84,-2.28l1.49,-1.0l1.55,-0.2l1.14,-2.63l-0.29,-1.2l1.66,0.04l0.5,-1.63l0.93,-0.77l1.08,-0.77l0.52,1.49l1.07,0.32l1.34,-1.17l1.34,-2.62l2.49,-1.6l0.79,0.07l0.83,0.78l1.05,-0.21l0.84,-1.07l1.46,-4.14l1.08,-1.1l1.48,0.07l0.43,-0.31l-0.7,-1.24l0.39,-1.97l-0.43,-0.89l0.38,-1.24l7.44,-0.94l19.59,-3.57l37.28,-8.83l31.16,-8.25l0.41,1.18l3.57,3.14l1.01,1.48l-1.21,-0.97l-0.17,-0.62l-0.93,-0.38l-0.52,0.06l-0.23,0.65l0.66,0.52l0.6,1.52l-0.54,0.02l-0.92,-0.73l-2.32,-0.75l-0.41,-0.47l-0.55,0.14l-0.31,0.69l0.15,0.64l1.38,0.42l1.69,1.33l-1.1,0.66l-2.49,-1.14l-0.35,0.51l0.15,0.42l1.6,1.13l-1.85,-0.3l-2.24,-0.82l-0.46,0.15l0.02,0.48l0.61,0.68l1.7,0.78l-0.96,0.58l0.0,0.6l-0.43,0.53l-1.48,0.76l-0.9,-0.75l-0.6,0.23l-0.1,0.35l-0.2,-0.13l-1.33,-2.26l0.19,-2.6l-0.43,-0.47l-0.9,-0.2l-0.35,0.65l0.62,0.68l-0.43,0.98l-0.01,1.03l0.5,1.7l1.61,2.14l-0.3,1.26l0.49,0.29l2.97,-0.63l2.09,-1.51l0.27,0.01l0.38,0.78l0.76,-0.34l1.57,0.03l0.15,-0.72l-0.56,-0.3l1.28,-0.77l2.04,-0.49l-0.08,1.17l0.64,0.28l-0.59,0.87l0.9,1.16l-0.84,0.12l-0.18,0.67l1.39,0.43l0.26,0.92l-1.21,0.07l-0.18,0.66l0.67,0.57l1.25,-0.18l0.52,0.25l0.4,-0.38l0.16,-1.93l-0.77,-3.27l0.41,-0.49l0.57,0.42l0.93,0.04l0.28,-0.57l-0.29,-0.43l0.46,-0.58l1.74,1.8l0.01,1.39l0.62,0.87l-0.53,0.19l-0.24,0.47l0.91,1.11l-0.08,0.36l-0.41,0.55l-0.78,0.09l-0.91,-0.83l-0.31,0.34l0.14,1.24l-1.07,1.61l0.2,0.56l-0.32,0.22l-0.15,0.98l-0.73,0.55l0.1,0.9l-0.89,0.97l-1.06,0.23l-0.59,-0.36l-0.52,0.52l-0.95,-0.79l-0.86,0.12l-0.4,-0.81l-0.59,-0.2l-0.51,0.38l0.09,0.93l-0.53,0.23l-1.42,-1.21l1.3,-0.41l0.23,-0.87l-0.57,-0.42l-2.03,0.34l-1.13,1.02l0.3,0.67l0.44,0.15l0.1,0.81l0.35,0.24l-0.03,0.12l-0.57,-0.33l-1.69,0.85l-1.13,-0.41l-1.46,0.09l-3.33,-0.64l0.44,1.07l0.98,0.43l0.36,0.63l0.63,0.1l0.88,-0.33l1.69,0.6l2.36,0.35l3.52,0.06l0.47,0.41l-0.05,0.51l-1.0,0.07l-0.24,0.72l-1.61,1.45l0.32,0.58l1.86,-0.03l-2.54,3.5l-1.68,0.07l-1.61,-0.94l-0.91,-0.18l-1.22,-0.99l-1.12,0.09l0.08,0.47l1.05,1.11l2.35,2.03l2.69,0.22l1.31,0.46l1.7,-2.16l0.52,0.45l1.18,0.31l0.39,-0.58l-0.55,-0.87l0.87,0.14l0.2,0.56l0.66,0.23l1.62,-1.21l-0.17,0.59l0.29,0.57l-0.29,0.38l-0.43,-0.2l-0.4,0.37l0.04,0.89l-0.96,1.71l0.02,0.78l-0.72,-0.06l-0.07,-0.73l-1.13,-0.58l-0.41,0.48l0.29,1.46l-0.35,-0.91l-0.84,-0.35l-1.22,1.08l-0.21,0.52l0.25,0.26l-2.03,0.35l-2.75,1.86l-0.68,-1.01l-0.75,-0.28l-0.36,0.49l0.44,1.24l-0.57,-0.01l-0.09,0.82l-0.93,1.72l-0.92,0.85l-0.59,-0.25l0.48,-0.69l-0.03,-0.77l-1.07,-0.9l-0.09,-0.52l-1.69,-0.38l-0.15,0.47l0.44,1.14l0.2,0.32l0.59,0.07l0.3,0.59l-0.88,0.38l-0.08,0.71l0.66,0.62l0.77,0.16l-0.0,0.36l-2.12,1.68l-1.9,2.65l-1.98,4.29l-0.33,2.11l0.13,1.34l-0.16,-1.04l-1.02,-1.56l-0.55,-0.16l-0.29,0.48l1.21,3.9l-0.62,2.26l-3.92,0.24l-1.43,0.66l-0.36,-0.51l-0.58,-0.17l-0.53,1.07l-1.9,1.16l-0.61,-0.01l-23.45,-14.89l-1.05,-0.01l-18.73,3.7l-0.67,-2.73l-3.28,-2.77l-0.46,0.08l-1.23,1.32l-0.02,-1.27l-0.82,-0.52l-22.89,3.59l-0.64,-0.26l-0.62,0.46l-0.25,0.65l-3.99,1.95l-0.89,1.23l-1.02,0.09l-4.79,2.68l-21.02,4.11l-0.36,-4.48l0.71,-0.95ZM819.02,269.97l0.19,0.35l0.25,0.37l-0.46,-0.4l0.02,-0.32ZM809.66,288.69l0.21,0.33l-0.17,-0.08l-0.04,-0.24ZM817.54,297.34l0.15,-0.36l0.16,0.07l-0.13,0.28l-0.18,0.02ZM814.96,297.34l-0.06,-0.28l-0.04,-0.11l0.31,0.26l-0.21,0.13ZM814.94,262.69l0.37,-0.24l0.15,0.4l-0.42,0.08l-0.1,-0.23ZM794.27,327.63l0.04,-0.07l0.22,0.03l-0.0,0.09l-0.26,-0.04Z\", \"name\": \"North Carolina\"}, \"US-ND\": {\"path\": \"M439.1,45.59l2.07,7.05l-0.73,2.58l0.57,2.4l-0.27,1.19l0.48,2.03l0.02,3.32l1.42,4.01l0.45,0.55l-0.08,0.99l0.39,1.54l0.62,0.75l1.49,3.79l-0.05,3.94l0.42,0.71l0.51,8.43l0.51,1.54l0.51,0.25l-0.47,2.66l0.36,1.64l-0.14,1.76l0.69,1.11l0.2,2.17l0.49,1.14l1.81,2.57l0.16,2.21l0.51,1.08l0.17,1.4l-0.24,1.36l0.29,1.75l-27.89,0.76l-28.38,0.2l-28.37,-0.38l-28.48,-0.97l2.91,-66.22l23.01,0.82l25.49,0.43l25.49,-0.06l24.04,-0.51Z\", \"name\": \"North Dakota\"}, \"US-NE\": {\"path\": \"M423.3,177.34l3.93,2.68l3.94,1.88l1.33,-0.22l0.51,-0.47l0.36,-1.07l0.48,-0.2l2.5,0.33l1.32,-0.47l1.59,0.24l3.45,-0.65l2.38,1.96l1.41,0.14l1.55,0.76l1.45,0.08l0.89,1.09l1.48,0.17l-0.06,0.97l1.69,2.06l3.32,0.59l0.19,0.67l-0.21,1.85l1.14,1.92l0.01,2.27l1.16,1.06l0.34,1.69l1.74,1.44l0.07,1.85l1.51,2.07l-0.49,2.3l0.44,3.05l0.52,0.54l0.93,-0.2l-0.03,1.23l1.21,0.49l-0.4,2.32l0.21,0.45l1.12,0.39l-0.59,0.75l-0.09,1.0l0.13,0.59l0.82,0.49l0.16,1.42l-0.26,0.91l0.26,1.26l0.55,0.6l0.3,1.89l-0.22,1.31l0.23,0.71l-0.57,0.9l0.03,0.78l0.45,0.87l1.23,0.62l0.26,2.47l1.1,0.5l0.03,0.78l1.19,2.7l-0.23,0.95l1.16,0.21l0.8,0.98l1.1,0.23l-0.15,0.95l1.31,1.64l-0.21,1.1l0.49,0.89l-26.2,1.1l-27.91,0.67l-27.92,0.15l-27.97,-0.37l0.47,-21.33l-0.39,-0.41l-32.44,-1.09l1.91,-42.71l43.42,1.28l44.74,-0.05Z\", \"name\": \"Nebraska\"}, \"US-LA\": {\"path\": \"M510.29,413.05l-1.38,-21.63l25.76,-1.93l25.96,-2.35l0.35,0.82l1.49,0.64l-0.92,1.34l-0.25,2.12l0.5,0.72l1.18,0.3l-1.22,0.47l-0.45,0.78l0.46,1.35l1.05,0.83l0.08,2.13l0.47,0.54l1.52,0.73l0.45,1.04l1.43,0.42l-0.87,1.22l-0.85,2.34l-0.76,0.05l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.21,1.16l-1.35,0.96l-1.08,1.89l-1.38,0.68l-0.68,0.83l-0.79,2.41l-0.24,3.51l-1.55,1.75l0.13,1.2l0.63,0.95l-0.35,2.37l-1.62,0.3l-0.59,0.57l0.29,0.97l0.65,0.59l-0.25,1.41l0.99,1.51l-1.18,1.19l-0.08,0.45l0.4,0.23l6.22,-0.58l29.41,-3.07l-0.67,3.48l-0.52,1.02l-0.19,2.25l0.7,0.98l-0.09,0.66l0.61,1.0l1.32,0.7l1.23,1.42l0.15,0.88l0.9,1.38l0.14,1.05l1.13,1.84l-1.86,0.4l-0.39,-0.08l-0.02,-0.56l-0.54,-0.57l-1.29,0.28l-1.19,-0.59l-1.52,0.18l-0.62,-0.98l-1.25,-0.86l-2.86,-0.46l-1.25,0.64l-1.39,2.31l-1.3,1.43l-0.41,0.92l0.07,1.2l0.56,0.89l0.83,0.57l4.28,0.81l3.37,-1.02l1.32,-1.2l0.68,-1.2l0.35,0.59l1.09,0.42l0.59,-0.41l0.81,0.02l0.51,-0.47l-0.76,1.23l-1.13,-0.11l-0.57,0.32l-0.38,0.62l0.0,0.83l0.78,1.22l1.49,-0.03l0.66,0.9l1.11,0.48l0.94,-0.22l0.51,-0.45l0.46,-1.11l-0.02,-1.37l0.93,-0.58l0.42,-1.0l0.24,0.05l0.11,1.17l-0.24,0.25l0.19,0.57l0.43,0.15l-0.07,0.75l1.36,1.08l0.35,-0.17l-0.48,0.6l0.19,0.63l-0.36,0.14l-0.53,-0.57l-0.92,-0.18l-1.0,1.91l-0.85,0.15l-0.46,0.53l0.17,1.2l-1.03,-0.49l-1.01,0.07l0.04,0.46l1.16,1.07l-1.18,-0.14l-0.92,0.61l0.69,0.42l1.28,2.05l1.85,0.44l0.92,0.53l-0.08,1.21l0.34,0.41l2.08,-0.33l0.78,0.17l0.18,0.53l0.74,0.32l1.36,-0.35l0.54,0.78l1.08,-0.47l1.15,0.74l0.14,0.3l-0.41,0.63l1.55,0.86l-0.39,0.66l0.39,0.58l-0.18,0.63l-0.95,1.52l-1.33,-1.57l-0.68,0.34l0.1,0.67l-0.39,0.13l0.4,-1.91l-1.34,-0.76l-0.5,0.5l0.2,1.19l-0.55,0.46l-0.27,-1.03l-0.58,-0.25l-0.91,-1.28l0.03,-0.77l-0.97,-0.13l-0.47,0.51l-1.42,-0.16l-0.42,-0.61l0.14,-0.64l-0.39,-0.46l-0.45,-0.01l-0.81,0.74l-1.2,0.03l0.26,-0.57l-0.13,-0.67l-0.47,-0.88l-0.92,0.05l0.09,-0.97l-0.37,-0.36l-0.92,-0.02l-0.22,0.59l-0.86,-0.38l-0.48,0.27l-2.64,-1.26l-1.25,-0.02l-0.68,-0.64l-0.61,0.19l-0.3,0.56l-0.05,1.26l1.74,0.94l1.69,0.34l-0.15,0.93l0.28,0.4l-0.34,0.35l0.23,0.69l-0.76,0.96l-0.02,0.67l0.82,0.97l-0.96,1.45l-1.34,0.95l-0.78,-1.16l0.21,-1.51l-0.36,-0.93l-0.49,-0.17l-0.4,0.36l-1.17,-1.08l-0.6,0.43l-0.77,-1.06l-0.63,-0.2l-0.64,1.34l-0.86,0.27l-0.89,-0.53l-0.86,0.54l-0.1,0.62l0.49,0.41l-0.68,0.57l-0.13,1.46l-0.46,0.13l-0.39,0.84l-0.93,0.09l-0.12,-0.69l-1.61,-0.4l-0.77,0.99l-1.25,-0.82l-0.69,-0.11l-0.31,-0.54l-1.0,0.01l-0.35,0.61l-1.18,-0.51l0.43,-0.41l-0.0,-1.47l-0.38,-0.58l-1.92,-1.19l-0.08,-0.54l-0.84,-0.72l-0.1,-0.91l0.73,-1.16l-0.35,-1.14l-0.88,-0.19l-0.34,0.57l0.16,0.43l-0.59,0.81l0.04,0.92l-1.82,-0.4l0.07,-0.39l-0.47,-0.54l-1.98,0.77l-0.71,-2.23l-0.47,-0.12l-0.87,0.35l-0.18,-2.14l-1.31,-0.35l-1.9,0.3l-1.09,0.66l-0.22,-0.71l0.85,-0.27l-0.06,-0.8l-0.61,-0.58l-1.04,-0.1l-0.86,0.43l-0.95,-0.14l-0.4,0.81l-2.01,1.12l-0.64,-0.31l-1.29,0.72l0.54,1.37l0.81,0.3l0.99,1.52l-1.41,0.2l-1.83,1.05l-3.71,-0.39l-1.24,0.21l-3.11,-0.44l-2.0,-0.68l-1.82,-1.07l-3.73,-1.09l-3.21,-0.48l-2.55,0.6l-5.66,0.47l-1.0,0.27l-1.83,1.27l-0.6,-0.63l-0.27,-1.09l1.6,-0.48l0.7,-1.78l-0.03,-1.56l-0.39,-0.56l1.12,-1.55l0.23,-1.6l-0.5,-1.84l0.07,-1.46l-0.67,-0.7l-0.22,-1.05l0.83,-2.22l-0.64,-1.95l0.77,-0.85l0.29,-1.5l0.79,-0.94l0.78,-2.84l-0.19,-1.42l0.58,-0.98l-0.76,-1.33l0.84,-0.39l0.19,-0.44l-0.9,-1.35l0.02,-2.13l-1.08,-0.23l-0.58,-1.57l-0.92,-0.84l0.28,-1.27l-0.82,-0.75l-0.33,-0.95l-0.65,-0.34l0.22,-0.98l-1.17,-0.58l-0.81,-0.93l0.15,-2.45l-0.69,-1.93l-1.34,-1.97l-2.65,-2.19ZM550.67,462.74l0.02,-0.01l0.0,0.0l-0.02,0.0ZM609.66,467.22l-0.03,-0.03l-0.09,-0.04l0.15,-0.02l-0.03,0.09ZM609.67,465.6l-0.02,-0.02l0.04,-0.01l-0.02,0.03ZM568.93,468.95l-2.03,-0.42l-0.68,-0.51l0.74,-0.44l0.35,-0.77l0.4,0.49l0.84,0.2l-0.14,0.62l0.51,0.81ZM552.13,462.99l1.74,-1.07l3.38,1.07l-0.7,0.57l-0.17,0.82l-0.69,0.18l-3.56,-1.57Z\", \"name\": \"Louisiana\"}, \"US-SD\": {\"path\": \"M337.03,132.38l0.3,-0.53l0.79,-19.92l28.49,0.97l28.39,0.38l28.39,-0.2l27.77,-0.76l-0.17,1.71l-0.72,1.71l-2.9,2.47l-0.41,1.28l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.02,0.84l0.58,1.02l1.51,38.65l-1.84,0.09l-0.42,0.56l0.24,1.42l0.88,1.12l0.01,1.44l-0.65,0.36l0.17,1.47l0.48,0.43l1.09,0.04l0.34,1.66l-0.16,0.9l-0.62,0.82l0.02,1.72l-0.68,2.42l-0.49,0.44l-0.67,1.87l0.5,1.1l1.33,1.06l-0.16,0.61l0.64,0.65l0.36,1.13l-1.66,-0.28l-0.34,-0.92l-0.85,-0.72l0.19,-0.6l-0.29,-0.59l-1.58,-0.22l-1.03,-1.16l-1.57,-0.11l-1.51,-0.74l-1.34,-0.12l-2.39,-1.97l-3.79,0.6l-1.65,-0.24l-1.19,0.46l-2.62,-0.32l-0.98,0.48l-0.76,1.43l-0.72,0.05l-3.67,-1.8l-4.13,-2.77l-44.9,0.05l-43.4,-1.27l1.86,-42.93Z\", \"name\": \"South Dakota\"}, \"US-DC\": {\"path\": \"M782.83,216.82l0.44,-0.76l2.05,1.2l-0.65,1.13l-0.56,-1.03l-1.27,-0.55Z\", \"name\": \"District of Columbia\"}, \"US-DE\": {\"path\": \"M799.98,195.01l0.4,-1.49l0.91,-1.11l1.73,-0.73l1.11,0.04l-0.31,0.54l-0.07,1.36l-1.12,1.92l0.11,1.08l1.11,1.06l-0.06,1.5l2.31,2.41l1.25,0.57l0.94,1.47l1.01,3.29l1.74,1.52l0.58,1.29l3.08,1.91l1.44,-0.12l0.46,1.21l-1.05,0.57l0.17,1.31l0.35,0.18l-0.81,0.57l-0.07,1.2l0.67,0.2l0.85,-0.73l0.71,0.33l0.3,-0.21l0.76,1.5l-10.19,2.94l-8.32,-25.59Z\", \"name\": \"Delaware\"}, \"US-FL\": {\"path\": \"M632.37,423.12l47.45,-7.21l1.55,1.89l0.89,2.71l1.48,0.99l49.06,-5.55l1.04,1.38l0.04,1.09l0.56,1.05l0.87,0.49l1.83,-0.32l0.85,-0.76l-0.18,-4.58l-1.0,-1.48l-0.24,-1.77l0.27,-0.74l0.62,-0.31l0.11,-0.7l5.64,0.91l4.06,-0.2l0.16,1.25l-0.75,-0.12l-0.32,0.44l0.27,1.54l2.14,1.8l0.23,1.01l0.43,0.38l0.31,1.93l1.91,3.28l1.75,4.88l0.74,0.84l0.53,1.5l1.68,2.46l0.66,1.58l2.84,3.71l1.98,3.19l2.33,2.77l0.16,0.6l0.64,0.36l6.96,7.57l-0.5,-0.03l-0.27,0.62l-1.37,-0.01l-0.35,-0.66l0.37,-1.4l-0.16,-0.56l-2.33,-0.91l-0.46,0.53l1.04,2.82l0.79,0.98l2.21,4.81l10.15,13.83l1.42,3.15l3.77,5.42l-1.41,-0.35l-0.42,0.74l0.81,0.66l0.85,0.24l0.56,-0.22l1.49,0.95l2.1,3.1l-0.5,0.37l-0.11,0.53l1.17,0.53l0.92,1.87l-0.07,1.08l0.61,0.97l0.65,2.7l-0.26,0.77l1.06,9.2l-0.3,1.1l0.47,0.69l0.55,3.19l-0.8,1.49l0.1,2.3l-0.84,0.77l-0.19,1.86l-0.47,0.87l0.24,1.51l-0.28,1.8l0.48,0.84l0.09,0.93l0.48,0.24l-1.15,1.89l-0.37,1.32l-0.95,0.25l-0.54,-0.23l-1.38,0.47l-0.34,1.1l-0.9,0.32l-0.16,0.6l-0.86,0.7l-1.45,0.15l-0.28,-0.33l-1.25,-0.09l-0.9,1.09l-3.19,1.18l-1.08,-0.61l-0.73,-1.08l0.04,-1.87l1.02,0.86l1.68,0.48l0.26,0.65l0.52,0.07l1.36,-0.75l0.19,-0.7l-0.27,-0.64l-1.61,-1.13l-2.43,-0.26l-0.92,-0.47l-0.89,-1.72l-0.92,-0.75l0.22,-1.01l-0.49,-0.28l-0.53,0.16l-1.43,-2.59l-0.44,-0.29l-0.65,0.08l-0.46,-0.63l0.28,-0.33l-0.06,-0.58l-0.72,-0.66l-1.23,-0.61l-1.08,-0.08l-0.77,-0.55l-0.58,0.19l-2.84,-0.59l-0.51,0.66l0.25,-0.95l-0.47,-0.42l-0.88,0.13l-0.27,-0.74l-0.9,-0.67l-0.63,-1.45l-0.56,-0.1l-0.77,-3.02l-0.79,-1.02l-0.18,-1.56l-0.45,-0.85l-0.72,-0.91l-0.49,-0.15l-0.1,0.95l-1.33,-0.26l1.07,-1.35l0.29,-0.76l-0.13,-0.64l0.86,-1.51l0.65,-0.35l0.27,-0.85l-0.62,-0.38l-1.42,0.96l-0.88,1.32l-0.4,2.23l-1.38,0.37l-0.23,-1.36l-0.81,-1.35l-0.32,-4.13l-0.88,-0.61l1.64,-1.37l0.21,-0.99l-0.59,-0.41l-0.72,0.68l-1.57,0.56l-0.77,0.74l-0.76,-0.67l-0.4,0.27l-1.3,-0.9l-0.37,0.75l1.15,1.1l0.53,0.1l1.3,2.05l-1.05,0.25l-1.44,-0.38l-0.87,-1.63l-1.14,-0.61l-1.99,-2.59l-1.07,-2.32l-1.3,-0.89l0.09,-0.89l-1.0,-1.82l-1.8,-0.98l0.08,-0.69l0.99,-0.41l-0.36,-0.5l0.44,-0.75l-0.4,-0.35l0.4,-1.23l2.45,-4.56l-1.08,-2.44l-0.69,-0.46l-0.92,0.43l-0.27,0.94l0.31,1.22l-0.25,0.04l-0.76,-2.47l-1.0,-0.27l-1.2,-0.88l-1.53,-0.31l0.32,1.97l-0.48,0.63l0.27,0.59l2.24,0.56l0.26,0.99l-0.35,2.51l-0.32,-0.59l-0.8,-0.21l-2.17,-1.54l-0.42,0.21l-0.3,-0.64l0.58,-2.14l0.04,-3.02l-0.69,-1.99l0.42,-0.52l0.47,-1.94l-0.25,-0.54l0.63,-3.08l-0.4,-5.32l-0.38,-1.38l-0.37,-0.34l0.36,-0.47l-0.49,-2.2l-2.13,-1.32l-0.05,-0.53l-0.56,-0.42l-0.11,-1.03l-0.93,-0.73l-0.56,-1.52l-0.64,-0.24l-1.45,0.33l-1.03,-0.19l-1.58,0.56l-1.17,-1.75l-1.52,-0.47l-0.19,-0.6l-1.37,-1.51l-0.88,-0.58l-0.62,0.08l-1.54,-1.16l-0.81,-0.21l-0.53,-2.76l-3.09,-1.12l-0.66,-0.59l-0.53,-1.23l-2.18,-1.92l-2.21,-1.07l-1.46,-0.11l-3.47,-1.66l-2.86,1.01l-1.01,-0.4l-1.05,0.43l-0.35,0.69l-1.34,0.69l-0.5,0.71l0.03,0.65l-0.75,-0.22l-0.59,0.6l0.68,0.94l1.51,0.06l0.42,0.21l-3.05,0.26l-1.58,1.53l-0.91,0.46l-1.29,1.58l-1.56,1.05l-0.33,0.14l0.2,-0.5l-0.26,-0.53l-0.67,-0.04l-0.96,0.76l-1.11,1.52l-2.21,0.25l-2.12,1.09l-0.79,0.04l-0.29,-2.04l-1.74,-2.23l-2.23,-0.99l-0.18,-0.41l-2.54,-1.49l2.83,1.31l1.21,-0.75l-0.01,-0.74l-1.33,-0.33l-0.36,0.57l-0.22,-1.03l-0.35,-0.1l0.12,-0.52l-0.49,-0.33l-1.4,0.62l-2.33,-0.74l0.65,-1.09l0.83,-0.11l1.03,-1.47l-0.92,-0.95l-0.46,0.13l-0.49,1.03l-0.45,-0.03l-0.81,0.57l-0.73,-0.9l-0.7,0.1l-0.17,0.38l-1.35,0.74l-0.14,0.68l0.3,0.46l-3.99,-1.33l-5.09,-0.68l0.12,-0.24l1.28,0.29l0.61,-0.53l2.12,0.37l0.22,-0.78l-0.95,-1.02l0.08,-0.7l-0.63,-0.28l-0.5,0.32l-0.29,-0.47l-1.91,0.2l-2.27,1.12l0.3,-0.64l-0.41,-0.58l-0.96,0.36l-0.59,-0.25l-0.22,0.44l0.2,0.71l-1.46,0.81l-0.39,0.64l-5.21,1.01l0.31,-0.53l-0.4,-0.52l-1.36,-0.27l-0.73,-0.53l0.69,-0.54l0.0,-0.78l-0.68,-0.12l-0.82,-0.66l-0.46,0.11l0.14,0.76l-0.41,1.78l-1.06,-1.39l-0.7,-0.45l-0.55,0.07l-0.3,0.72l0.83,1.77l-0.25,0.8l-1.39,1.0l-0.05,1.04l-0.6,0.23l-0.17,0.57l-1.5,0.57l0.28,-0.66l-0.22,-0.46l1.14,-1.04l0.07,-0.74l-0.4,-0.58l-1.2,-0.23l-0.42,-0.84l0.3,-1.71l-0.19,-1.61l-2.19,-1.1l-2.42,-2.45l0.31,-1.45l-0.16,-1.04ZM770.96,489.55l0.5,1.09l0.91,0.4l0.78,-0.16l1.45,1.7l0.92,0.58l1.88,0.69l1.63,0.06l0.55,-0.45l-0.09,-0.89l0.55,-0.66l-0.17,-1.24l0.75,-1.4l0.07,-1.84l-0.66,-1.65l-1.49,-2.04l-1.77,-1.33l-1.2,-0.12l-1.12,0.86l-1.81,3.23l-2.12,2.0l-0.12,0.77l0.57,0.41ZM646.6,433.48l-0.95,0.27l0.41,-0.45l0.54,0.18ZM667.51,434.9l0.99,-0.29l0.36,0.31l0.1,0.73l-1.45,-0.75ZM773.86,453.5l0.44,0.57l-0.43,0.77l-0.01,-1.35ZM793.21,525.19l0.02,-0.12l0.03,0.05l-0.05,0.07ZM793.79,522.73l-0.25,-0.25l0.54,-0.38l-0.29,0.63ZM772.1,452.11l0.22,0.77l-0.28,2.36l0.31,1.82l-1.43,-3.27l1.19,-1.69ZM682.35,444.75l0.22,-0.2l0.37,0.02l-0.11,0.43l-0.48,-0.25Z\", \"name\": \"Florida\"}, \"US-WA\": {\"path\": \"M39.75,56.79l0.48,-1.33l0.18,0.46l0.65,0.31l1.05,-0.73l0.42,0.6l0.7,-0.02l0.18,-0.77l-0.9,-1.57l0.8,-0.74l-0.07,-1.37l0.49,-0.38l-0.09,-1.04l0.81,-0.26l0.04,0.51l0.47,0.42l0.96,-0.3l-0.08,-0.68l-1.33,-1.67l-0.91,0.14l-1.87,-0.58l0.2,-2.0l0.65,0.54l0.52,-0.07l0.3,-0.56l-0.16,-0.69l3.32,-0.49l0.27,-0.69l-1.68,-0.98l-0.86,-0.15l-0.35,-1.52l-0.7,-0.43l-0.81,-0.03l0.39,-4.77l-0.47,-1.3l0.11,-0.69l-0.4,-0.35l0.85,-5.8l-0.09,-2.49l-0.44,-0.63l-0.14,-1.38l-0.63,-1.35l-0.72,-0.58l-0.28,-2.49l0.39,-2.3l-0.14,-1.13l1.8,-3.33l-0.51,-1.26l4.52,3.99l1.18,0.4l0.91,0.77l0.78,1.33l1.84,1.11l3.22,0.94l0.82,0.78l1.42,0.12l1.72,1.05l2.32,0.76l1.47,-0.47l0.52,0.3l0.54,0.71l-0.05,1.1l0.54,0.75l0.31,0.12l0.49,-0.35l0.08,-0.77l0.44,0.04l0.61,1.42l-0.41,0.59l0.34,0.5l0.56,-0.03l0.73,-0.84l-0.35,-1.73l1.05,-0.23l-0.46,0.23l-0.22,0.69l1.21,4.49l-0.47,0.1l-1.69,1.73l0.24,-1.3l-0.22,-0.41l-1.32,0.3l-0.39,0.81l0.08,0.96l-1.4,1.71l-2.0,1.38l-1.08,1.42l-0.97,0.69l-1.12,1.67l-0.07,0.71l0.61,0.61l0.95,0.13l2.78,-0.46l1.23,-0.58l-0.02,-0.7l-0.64,-0.24l-2.95,0.77l-0.34,-0.31l3.28,-3.44l3.07,-0.87l0.91,-1.52l1.75,-1.54l0.52,0.57l0.54,-0.18l0.25,-1.83l-0.1,2.29l0.25,0.92l-0.98,-0.22l-0.65,0.77l-0.4,-0.74l-0.52,-0.2l-0.4,0.64l0.29,0.72l0.0,1.65l-0.19,-1.08l-0.67,-0.22l-0.47,0.69l-0.08,0.76l0.46,0.68l-0.64,0.59l-0.0,0.45l0.41,0.17l1.68,-0.56l0.23,1.11l-1.11,1.8l-0.1,1.06l-0.84,0.7l0.12,1.02l-0.84,-0.69l1.14,-1.45l-0.22,-0.97l-1.98,1.07l-0.39,0.64l-0.03,-2.13l-0.52,0.01l-1.05,1.6l-1.27,0.53l-1.16,1.87l-1.52,0.29l-0.47,0.43l-0.22,1.18l1.11,-0.03l-0.26,0.36l0.26,0.38l0.92,0.03l0.05,0.68l0.52,0.48l0.53,-0.27l0.37,-1.77l0.14,0.42l0.83,-0.14l1.09,1.5l1.32,-0.61l1.66,-1.47l1.0,-1.57l0.62,0.8l0.73,0.14l0.45,-0.23l-0.05,-0.87l1.56,-0.54l0.36,-0.94l-0.32,-1.28l0.24,-1.2l-0.16,-1.38l0.83,0.21l0.31,-0.92l-0.18,-0.76l-0.71,-0.65l0.91,-1.14l0.1,-1.77l1.26,-1.25l0.63,-1.38l1.62,-0.49l0.79,-1.16l-0.44,-0.67l-0.51,-0.02l-0.84,-1.32l0.19,-2.12l-0.25,-0.88l0.5,-0.81l0.07,-0.84l-1.13,-1.76l-0.62,-0.41l-0.16,-0.67l0.19,-0.51l0.59,0.24l0.53,-0.33l0.27,-1.83l0.8,-0.24l0.31,-1.01l-0.57,-2.36l0.45,-0.55l-0.02,-0.86l-0.95,-0.9l-0.95,0.3l-1.05,-2.71l0.96,-1.88l41.1,9.79l38.78,7.97l-10.24,55.02l-0.48,1.02l1.01,3.02l0.12,2.01l-1.02,1.3l0.71,1.89l-31.12,-6.19l-1.67,0.78l-7.23,-1.08l-1.69,0.9l-4.19,-0.16l-3.18,0.42l-1.65,0.73l-0.88,-0.27l-1.2,0.29l-1.5,-0.24l-2.42,-0.97l-0.91,0.45l-3.45,0.47l-2.1,-0.73l-1.65,0.28l-0.3,-1.37l-1.08,-0.89l-4.33,-1.51l-2.32,-0.14l-1.14,-0.52l-1.27,0.2l-1.9,0.84l-4.5,0.53l-1.1,-0.72l-1.15,-0.31l-1.6,-1.17l-1.84,-0.53l-0.62,-0.82l0.72,-6.83l-0.45,-0.95l-0.19,-1.91l-0.96,-1.36l-1.94,-1.7l-2.82,-0.14l-1.02,-1.32l-0.14,-1.05l-0.55,-0.64l-2.36,-0.34l-0.56,-0.31l-0.23,-0.79l-0.5,-0.18l-0.97,0.34l-0.83,-0.27l-1.1,0.39l-0.95,-1.49l-0.88,-0.24ZM63.27,41.42l0.15,0.75l-0.42,0.48l0.02,-0.91l0.26,-0.31ZM72.98,21.85l-0.63,0.89l-0.16,0.52l0.12,-1.02l0.67,-0.39ZM72.91,17.04l-0.1,-0.06l0.06,-0.05l0.05,0.11ZM72.14,16.87l-0.78,0.39l0.38,-0.7l-0.07,-0.62l0.23,-0.07l0.23,1.0ZM58.87,44.11l0.14,-0.06l-0.03,0.02l-0.12,0.04ZM69.46,20.67l1.77,-2.13l0.46,-0.02l0.5,1.75l-0.34,-0.56l-0.51,-0.12l-0.55,0.45l-0.35,-0.1l-0.36,0.74l-0.63,-0.01ZM69.54,21.84l0.46,0.01l0.6,0.51l0.08,0.36l-0.79,-0.21l-0.35,-0.68ZM70.49,24.67l-0.1,0.51l-0.0,0.0l-0.02,-0.24l0.12,-0.27ZM70.76,26.94l0.1,0.05l0.14,-0.05l-0.18,0.12l-0.06,-0.12ZM71.13,26.88l0.51,-0.96l1.09,1.49l0.01,0.89l-0.35,0.36l-0.33,-0.1l-0.25,-1.57l-0.68,-0.13ZM68.2,11.24l0.5,-0.34l0.16,1.55l-0.22,-0.05l-0.44,-1.16ZM69.91,10.93l0.82,0.83l-0.66,0.31l-0.16,-1.14ZM68.13,39.7l0.35,-1.09l0.22,-0.25l-0.05,1.08l-0.52,0.25ZM68.31,15.63l-0.41,-0.42l0.61,-0.75l-0.18,0.6l-0.02,0.57ZM68.47,15.97l0.4,0.2l-0.09,0.14l-0.28,-0.12l-0.03,-0.22ZM68.56,14.29l-0.01,-0.1l0.05,-0.13l-0.04,0.23ZM68.5,34.94l0.11,-1.05l0.35,-0.34l-0.25,1.58l-0.21,-0.18ZM66.18,14.44l-1.04,-0.84l0.22,-1.86l1.3,1.97l-0.36,0.18l-0.12,0.55ZM63.56,44.22l0.23,-0.25l0.02,0.01l-0.13,0.32l-0.12,-0.07ZM61.46,41.94l-0.1,-0.21l0.04,-0.08l0.0,0.12l0.06,0.16Z\", \"name\": \"Washington\"}, \"US-KS\": {\"path\": \"M478.81,242.03l0.44,0.62l0.76,0.17l1.05,0.79l2.2,-1.07l-0.0,0.74l1.08,0.77l0.23,1.42l-0.95,-0.15l-0.59,0.31l-0.17,0.95l-1.15,1.36l-0.06,1.12l-0.79,0.5l0.04,0.63l1.57,2.07l2.01,1.46l0.2,1.12l0.42,0.85l0.75,0.55l0.33,1.09l1.9,0.89l1.54,0.25l2.74,46.06l-31.67,1.55l-32.1,0.92l-32.11,0.27l-32.18,-0.39l1.25,-64.43l27.98,0.37l27.94,-0.15l27.93,-0.67l27.75,-1.17l1.65,1.2Z\", \"name\": \"Kansas\"}, \"US-WI\": {\"path\": \"M599.36,110.41l0.82,-0.15l-0.13,0.81l-0.56,0.02l-0.14,-0.67ZM594.93,119.05l0.47,-0.41l0.24,-2.36l0.95,-0.25l0.64,-0.7l0.21,-1.4l0.41,-0.64l0.63,-0.04l0.07,0.38l-0.76,0.07l-0.18,0.52l0.18,1.26l-0.38,0.17l-0.11,0.58l0.57,0.57l-0.24,0.65l-0.5,0.34l-0.68,1.91l0.07,1.23l-1.04,2.28l-0.41,0.15l-0.87,-0.96l-0.19,-0.71l0.3,-1.57l0.61,-1.05ZM510.78,127.49l0.4,-0.27l0.27,-0.9l-0.45,-1.48l0.03,-1.91l0.69,-1.16l0.52,-2.25l-1.63,-2.9l-0.83,-0.35l-1.28,-0.0l-0.22,-2.32l1.66,-2.27l-0.05,-0.78l0.76,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.76l1.16,-0.14l1.03,-1.57l-1.02,-12.16l1.03,-0.35l0.22,-1.1l0.73,-0.98l0.78,0.69l1.69,0.64l2.61,-0.58l3.27,-1.59l2.64,-0.84l2.2,-2.15l0.31,0.29l1.39,-0.11l1.25,-1.49l0.78,-0.59l1.04,-0.1l0.4,-0.52l1.08,0.99l-0.47,1.7l-0.67,1.02l0.24,1.62l-1.19,2.22l0.64,0.65l2.49,-1.1l0.72,-0.87l2.16,1.22l2.34,0.47l0.44,0.54l0.86,-0.13l1.6,0.69l2.25,3.55l15.49,2.46l4.66,1.94l1.67,-0.17l1.63,0.41l1.33,-0.6l3.17,0.69l2.18,0.08l0.86,0.4l0.56,0.89l-0.41,1.1l0.41,0.77l3.4,0.61l1.41,1.12l-0.15,0.71l0.6,1.11l-0.35,0.81l0.44,1.25l-0.77,1.25l-0.02,1.76l0.91,0.63l1.38,-0.26l1.02,-0.73l0.2,0.25l-0.78,2.45l0.05,1.31l1.32,1.45l0.84,0.34l-0.23,2.01l-2.41,1.21l-0.51,0.79l0.05,1.25l-1.59,3.49l-0.38,3.49l1.11,0.81l0.92,-0.04l0.49,-0.36l0.49,-1.36l1.81,-1.48l0.65,-2.53l1.06,-1.7l0.59,0.17l0.57,-0.71l0.88,-0.4l1.13,1.11l0.59,0.19l-0.27,2.2l-1.16,2.82l-0.54,5.56l0.23,1.11l0.8,0.92l0.07,0.52l-0.5,0.98l-1.29,1.34l-0.85,3.87l0.16,2.56l0.72,1.19l0.07,1.23l-1.05,3.21l0.13,2.1l-0.72,2.1l-0.27,2.45l0.6,2.0l-0.03,1.31l0.49,0.53l-0.2,1.68l0.92,0.77l0.55,2.41l1.21,1.51l0.09,1.67l-0.32,1.44l0.49,2.91l-44.26,4.85l-0.2,-0.78l-1.57,-2.16l-4.95,-0.8l-1.06,-1.33l-0.37,-1.67l-0.91,-1.19l-0.88,-4.84l1.03,-2.6l-0.09,-0.98l-0.72,-0.78l-1.44,-0.47l-0.72,-1.74l-0.49,-5.97l-0.71,-1.39l-0.53,-2.54l-1.16,-0.6l-1.1,-1.55l-0.93,-0.11l-1.17,-0.74l-1.71,0.09l-2.68,-1.77l-2.31,-3.47l-2.65,-2.08l-2.94,-0.52l-0.73,-1.23l-1.13,-0.99l-3.12,-0.43l-3.54,-2.72l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.89,-3.1ZM542.09,81.41l0.05,-0.28l0.03,0.16l-0.08,0.12ZM538.44,86.94l0.29,-0.22l0.05,0.09l-0.34,0.13Z\", \"name\": \"Wisconsin\"}, \"US-OR\": {\"path\": \"M11.03,140.91l0.03,-1.74l0.5,-0.82l0.34,-1.92l1.14,-1.87l0.26,-1.88l-0.69,-2.56l-0.33,-0.16l-0.1,-1.79l3.07,-3.74l2.56,-5.89l0.01,0.76l0.52,0.52l0.49,-0.28l0.61,-1.58l0.47,-0.47l0.3,0.98l1.12,0.42l0.33,-0.54l-0.43,-1.75l0.28,-0.86l-0.45,-0.14l-0.8,0.31l1.77,-3.11l1.14,-0.94l0.89,0.31l0.49,-0.28l-0.46,-1.08l-0.8,-0.4l1.81,-4.57l0.48,-0.56l0.03,-0.99l1.11,-2.64l0.65,-2.58l1.06,-1.89l0.33,0.28l0.66,-0.33l-0.03,-0.6l-0.75,-0.63l1.09,-2.58l0.32,0.22l0.6,-0.19l0.13,-0.34l-0.03,-0.51l-0.57,-0.33l0.89,-3.82l1.25,-1.78l0.86,-3.02l1.16,-1.74l0.86,-2.43l0.27,-1.21l-0.17,-0.5l1.2,-1.07l-0.3,-1.64l0.95,0.58l0.79,-0.62l-0.38,-0.76l0.21,-0.65l-0.76,-0.78l0.53,-1.07l1.31,-0.85l0.06,-0.45l-0.92,-0.35l-0.31,-1.26l1.0,-2.13l-0.03,-1.48l0.87,-0.52l0.59,-1.33l0.2,-1.96l-0.19,-1.45l0.81,1.18l0.6,0.18l-0.13,0.9l0.55,0.54l0.84,-0.95l-0.26,-1.0l0.22,-0.07l0.23,0.56l0.69,0.33l1.51,0.06l0.38,-0.35l1.37,-0.17l0.96,2.09l2.41,0.95l1.25,-0.63l0.78,0.05l1.7,1.53l0.76,1.05l0.19,1.9l0.42,0.78l-0.05,2.05l-0.4,1.24l0.18,0.93l-0.45,1.74l0.24,1.45l0.78,0.86l1.94,0.58l1.43,1.07l1.36,0.42l1.03,0.7l4.99,-0.48l2.91,-1.03l1.14,0.52l2.23,0.11l4.23,1.47l0.69,0.55l0.18,1.15l0.57,0.59l1.86,-0.25l2.1,0.73l3.79,-0.51l0.69,-0.42l2.18,0.95l1.64,0.26l1.2,-0.29l0.87,0.27l1.89,-0.76l3.07,-0.4l4.16,0.17l1.62,-0.9l7.15,1.08l0.96,-0.18l0.8,-0.58l31.21,6.2l0.22,1.81l0.91,1.83l1.15,0.64l1.95,1.88l0.55,2.46l-0.16,1.0l-3.72,4.51l-0.41,1.41l-1.41,2.61l-2.23,2.39l-0.67,2.67l-1.5,1.82l-2.24,1.48l-1.94,3.32l-1.5,1.26l-0.63,2.01l-0.13,1.86l0.28,0.92l0.56,0.62l0.54,0.04l0.39,-0.34l0.63,0.76l0.89,-0.04l0.06,0.87l0.8,0.95l-0.46,0.99l-0.65,0.05l-0.34,0.4l0.2,1.79l-1.04,2.53l-1.23,1.4l-7.11,38.72l-26.22,-5.22l-28.9,-6.33l-28.79,-6.92l-28.92,-7.58l-1.46,-2.58l0.22,-2.33l-0.22,-0.89Z\", \"name\": \"Oregon\"}, \"US-KY\": {\"path\": \"M584.42,307.35l0.34,-2.14l1.15,0.94l0.72,0.19l0.75,-0.36l0.46,-0.87l0.87,-3.5l-0.55,-1.72l0.38,-0.85l-0.11,-1.85l-1.28,-2.0l1.78,-3.17l1.25,-0.51l0.74,0.05l7.06,2.47l0.81,-0.2l0.65,-0.71l0.23,-1.91l-1.5,-2.1l-0.24,-1.4l0.19,-0.86l0.4,-0.52l1.1,-0.19l1.24,-0.83l3.01,-0.96l0.64,-0.51l0.14,-1.13l-1.54,-2.01l-0.08,-0.66l1.33,-1.95l0.14,-1.15l1.26,0.41l1.12,-1.32l-0.68,-1.97l1.93,0.87l1.72,-0.84l0.03,1.15l1.01,0.45l0.99,-0.94l0.02,-1.34l0.51,0.16l1.9,-0.97l4.43,1.46l0.64,0.92l0.86,0.17l0.59,-0.59l0.73,-2.49l1.39,-0.55l1.4,-1.34l0.87,1.26l0.77,0.41l1.16,-0.14l0.12,0.74l0.95,0.18l0.66,-0.62l0.02,-0.99l0.84,-0.38l0.27,-0.48l-0.25,-2.06l0.84,-0.4l0.34,-0.56l-0.06,-0.67l1.25,-0.57l0.34,-0.72l0.39,1.45l0.62,0.59l1.47,0.61l1.25,-0.01l1.12,0.79l0.52,-0.11l0.26,-0.54l1.1,-0.46l0.53,-0.69l0.03,-3.42l0.85,-2.15l1.03,0.17l1.55,-1.19l0.74,-3.41l1.04,-0.37l1.65,-2.21l-0.0,-0.81l-1.19,-2.81l2.79,-0.61l1.54,0.78l3.85,-2.82l2.24,-0.47l-0.19,-1.06l0.35,-1.45l-0.32,-0.36l-1.22,-0.02l0.57,-1.38l-1.09,-1.5l1.65,-1.82l1.82,1.15l0.92,-0.12l1.94,-1.02l0.78,0.86l1.76,0.51l0.57,1.26l0.94,0.9l0.8,1.81l2.61,0.63l1.88,-0.58l1.64,0.25l2.2,1.8l0.96,0.41l1.27,-0.19l0.6,-1.3l0.99,-0.54l1.36,0.48l1.35,0.02l1.34,1.06l1.26,-0.69l1.42,-0.16l1.8,-2.53l1.72,-1.04l0.94,2.3l0.7,0.81l2.46,0.77l1.36,0.94l0.75,1.02l0.95,3.28l-0.37,0.45l0.1,0.71l-0.44,0.61l0.02,0.53l2.26,2.56l1.36,0.89l-0.07,0.87l1.35,0.94l0.59,1.33l1.56,1.17l0.99,1.58l2.15,0.8l1.1,1.09l2.13,0.23l-4.83,6.08l-5.06,4.15l-0.42,0.86l0.23,1.22l-2.07,1.93l0.05,1.61l-3.06,1.65l-0.8,2.36l-1.71,0.61l-2.7,1.83l-1.66,0.49l-3.39,2.42l-32.85,4.78l-7.5,0.92l-7.71,0.53l-22.79,3.67l-0.64,-0.55l-3.64,0.12l-0.41,0.6l1.05,3.51l-23.08,2.87ZM582.3,307.55l-0.6,0.08l-0.06,-0.53l0.48,-0.02l0.18,0.47Z\", \"name\": \"Kentucky\"}, \"US-CO\": {\"path\": \"M364.77,242.03l-1.26,64.83l-29.41,-0.94l-29.5,-1.5l-29.46,-2.05l-32.29,-2.88l8.57,-85.75l27.85,2.51l28.29,2.01l29.65,1.53l28.02,0.91l-0.47,21.33Z\", \"name\": \"Colorado\"}, \"US-OH\": {\"path\": \"M666.13,180.72l1.67,0.44l1.04,-0.31l1.75,1.04l2.08,0.23l1.48,1.15l1.61,0.23l-2.08,1.16l-0.11,0.47l0.42,0.24l2.46,0.16l1.39,-1.1l1.77,-0.27l3.41,0.91l0.92,-0.09l1.47,-1.29l1.74,-0.61l1.14,-0.96l1.91,-0.98l2.62,-0.06l1.09,-0.62l1.24,-0.07l1.06,-0.8l4.22,-5.44l4.52,-3.48l6.9,-4.4l6.01,27.6l-0.51,0.54l-1.28,0.43l-0.41,0.94l1.67,2.19l0.03,2.07l0.41,0.26l0.32,0.92l-0.04,0.75l-0.54,0.82l-0.48,4.03l0.19,3.16l-0.57,0.41l0.34,1.09l-0.34,1.72l-0.39,0.54l0.77,1.21l-0.24,1.84l-2.4,2.64l-0.82,1.85l-1.36,1.49l-1.24,0.68l-0.6,0.7l-0.88,-0.89l-1.18,0.15l-1.31,1.73l-0.08,1.3l-1.78,0.86l-0.77,2.22l0.28,1.55l-0.93,0.85l0.31,0.66l0.63,0.4l0.27,1.27l-0.8,0.18l-0.5,1.59l0.05,-0.91l-0.92,-1.23l-1.53,-0.52l-1.13,0.8l-0.75,1.87l-0.33,2.65l-0.53,0.82l1.24,3.51l-1.46,0.64l-0.43,3.33l-2.54,1.14l-1.01,0.06l-0.77,-1.04l-1.52,-1.07l-2.35,-0.69l-1.17,-1.87l-0.32,-1.12l-0.74,-0.34l-2.26,1.33l-1.09,1.28l-0.4,1.04l-1.43,0.17l-0.87,0.61l-1.12,-0.98l-3.15,-0.55l-1.37,0.72l-0.53,1.24l-0.72,0.06l-3.06,-2.19l-1.94,-0.26l-1.78,0.58l-2.15,-0.49l-0.55,-1.51l-0.97,-0.95l-0.64,-1.35l-2.04,-0.73l-1.15,-0.98l-0.97,0.27l-1.31,0.89l-0.46,0.03l-1.8,-1.19l-0.61,0.21l-0.6,0.7l-8.79,-54.8l20.44,-4.42ZM676.8,183.09l0.5,-0.77l0.64,0.41l-0.44,0.34l-0.7,0.03Z\", \"name\": \"Ohio\"}, \"US-OK\": {\"path\": \"M399.74,360.02l-0.05,-41.47l-0.39,-0.4l-26.8,-0.23l-25.23,-0.63l0.32,-10.07l36.84,0.78l36.14,-0.07l36.13,-0.9l35.7,-1.7l0.62,10.51l4.61,23.98l1.48,37.44l-1.21,-0.21l-0.29,-0.36l-2.14,-0.2l-0.83,-0.78l-2.13,-0.38l-1.78,-2.03l-1.24,-0.21l-2.27,-1.54l-1.5,-0.39l-0.8,0.45l-0.23,0.87l-0.83,0.24l-0.46,0.62l-2.49,-0.13l-0.48,-0.19l-0.28,-0.67l-1.05,-0.6l-2.31,1.28l-1.17,0.2l-0.19,0.56l-0.63,0.27l-2.13,-0.76l-1.71,1.17l-2.07,0.51l-0.83,1.36l-1.49,0.07l-0.57,1.24l-1.27,-1.53l-1.71,-0.09l-0.32,-0.57l-1.21,-0.45l-0.2,-0.23l0.18,-0.72l-0.44,-0.5l-1.24,-0.17l-0.74,1.37l-0.67,0.11l-0.84,-0.49l-0.98,0.07l-0.71,-1.5l-1.09,-0.34l-1.17,0.57l-0.45,1.69l-0.71,-0.08l-0.49,0.43l0.29,0.72l-0.5,1.66l-0.44,0.19l-0.56,-0.54l-0.31,-0.89l0.39,-1.64l-0.76,-0.85l-0.8,0.18l-0.49,0.76l-0.85,-0.18l-0.93,0.97l-1.08,0.13l-0.53,-1.35l-2.0,-0.18l-0.3,-1.46l-1.19,-0.53l-0.83,0.33l-2.13,2.14l-1.22,0.51l-0.98,-0.37l0.19,-1.23l-0.29,-1.12l-2.34,-0.66l-0.08,-2.15l-0.44,-0.55l-2.11,0.39l-2.53,-0.25l-0.64,0.26l-0.81,1.2l-0.96,0.06l-1.77,-1.75l-0.97,-0.12l-1.51,0.55l-2.7,-0.63l-1.86,-0.99l-1.05,0.25l-2.48,-0.3l-0.18,-2.1l-0.86,-0.86l-0.44,-1.01l-1.17,-0.41l-0.7,-0.82l-0.82,0.08l-0.44,1.63l-2.23,-0.67l-1.08,0.59l-0.97,-0.09l-3.81,-3.74l-1.13,-0.43l-0.81,0.08Z\", \"name\": \"Oklahoma\"}, \"US-WV\": {\"path\": \"M694.57,249.01l3.95,-1.56l0.35,-0.7l0.11,-2.72l1.15,-0.23l0.4,-0.61l-0.59,-2.46l-0.62,-1.21l0.48,-0.64l0.34,-2.74l0.67,-1.65l0.46,-0.39l1.25,0.52l0.41,0.68l-0.13,1.12l0.71,0.44l0.77,-0.44l0.47,-1.41l0.5,0.21l0.57,-0.2l0.2,-0.45l-0.65,-2.06l-0.75,-0.53l0.8,-0.78l-0.27,-1.69l0.73,-1.98l1.65,-0.53l0.16,-1.58l1.01,-1.41l0.44,-0.09l0.65,0.77l0.67,0.18l2.27,-1.59l1.49,-1.63l0.78,-1.81l2.44,-2.66l0.36,-2.38l-0.74,-0.98l0.7,-2.31l-0.25,-0.75l0.58,-0.58l-0.29,-3.38l0.45,-3.87l0.53,-0.79l0.07,-1.1l-0.39,-1.18l-0.4,-0.32l-0.05,-1.97l-1.58,-1.86l0.44,-0.53l0.85,-0.11l0.3,-0.33l4.15,19.01l0.48,0.31l16.61,-3.72l2.23,10.49l0.51,0.37l2.05,-2.49l0.97,-0.57l0.34,-1.02l1.62,-1.98l0.25,-1.03l0.52,-0.41l1.2,0.42l0.73,-0.32l1.31,-2.58l0.6,-0.46l-0.04,-0.85l0.42,0.58l1.81,0.49l3.2,-0.61l0.77,-0.86l0.07,-1.44l1.99,-0.76l1.02,-1.69l0.67,-0.11l3.17,1.44l1.8,-0.73l-0.44,1.01l0.56,0.9l1.28,0.4l0.09,0.95l1.13,0.4l0.1,1.18l0.34,0.41l-0.56,3.59l-9.05,-4.28l-0.64,0.25l-0.3,1.14l0.39,1.58l-0.51,1.61l0.42,2.24l-1.35,2.39l-0.41,1.74l-0.72,0.53l-0.41,1.09l-0.28,0.22l-0.61,-0.22l-0.37,0.33l-1.23,3.26l-1.86,-0.74l-0.64,0.26l-0.93,2.75l0.09,1.44l-0.73,1.14l-0.18,2.3l-0.88,2.18l-3.26,-0.31l-1.45,-1.71l-1.71,-0.22l-0.5,0.42l-0.25,2.14l0.2,1.28l-0.31,1.43l-0.49,0.45l-0.31,1.03l0.23,0.91l-1.57,2.42l-0.03,2.07l-0.51,1.98l-2.56,4.69l-0.74,3.13l0.15,0.76l1.14,0.52l-1.08,1.37l0.06,0.6l0.44,0.39l-2.15,2.12l-0.55,-0.69l-0.84,0.16l-3.12,2.54l-1.04,-0.54l-1.31,0.27l-0.43,0.9l0.46,1.14l-0.91,0.91l-0.74,-0.04l-2.27,1.02l-1.21,0.97l-2.2,-1.31l-0.73,0.0l-0.81,1.57l-1.1,0.5l-1.22,1.46l-1.09,0.1l-1.99,-1.05l-1.31,0.0l-0.62,-0.73l-1.2,-0.58l-0.31,-1.31l-0.88,-0.53l0.35,-0.66l-0.31,-0.81l-0.85,-0.36l-0.84,0.25l-1.34,-0.15l-1.27,-1.16l-2.07,-0.75l-0.77,-1.4l-1.59,-1.21l-0.71,-1.46l-1.0,-0.57l-0.13,-1.07l-1.39,-0.92l-2.01,-2.21l0.7,-2.0l-0.26,-1.59l-0.67,-1.43Z\", \"name\": \"West Virginia\"}, \"US-WY\": {\"path\": \"M218.82,209.32l10.47,-85.76l25.45,2.87l26.8,2.51l26.84,2.0l27.86,1.53l-3.81,86.31l-27.38,-1.48l-28.27,-2.06l-29.76,-2.75l-28.2,-3.17Z\", \"name\": \"Wyoming\"}, \"US-UT\": {\"path\": \"M178.98,182.72l41.58,5.7l-2.59,21.2l0.35,0.45l32.3,3.59l-8.57,85.75l-42.69,-4.9l-42.54,-6.06l16.56,-106.59l5.59,0.86ZM188.02,193.73l-0.3,0.03l-0.25,0.61l0.72,3.63l-0.81,0.18l-0.5,1.3l1.14,0.59l0.36,-0.83l0.37,-0.17l0.92,1.13l0.82,1.66l-0.26,0.99l0.15,1.43l-0.41,0.76l0.39,0.51l-0.05,0.55l1.57,1.82l0.02,0.59l1.12,1.91l0.71,-0.09l0.85,-1.72l0.07,2.25l0.53,0.94l0.06,1.77l0.99,0.47l1.66,-0.65l2.5,-1.73l0.38,-1.23l3.33,-1.39l0.18,-0.54l-0.52,-1.01l-0.68,-0.84l-1.36,-0.7l-1.85,-4.54l-0.87,-0.47l0.87,-0.89l1.3,0.6l1.33,-0.14l0.92,-0.82l-0.06,-1.11l-1.55,-0.51l-0.81,0.41l-1.18,-0.12l0.28,-0.75l-0.58,-0.78l-1.86,-0.23l-0.57,1.12l0.28,0.78l-0.35,0.67l0.54,2.41l-0.91,0.31l-0.34,-0.41l0.22,-1.78l-0.42,-0.69l-0.06,-1.72l-0.68,-0.6l-1.33,-0.12l-1.07,-1.54l-0.18,-0.67l0.64,-0.54l0.36,-1.28l-0.82,-1.37l-1.22,-0.29l-0.99,0.79l-2.74,0.17l-0.36,0.62l0.61,0.83l-0.28,0.42ZM199.39,206.21l0.03,0.02l0.03,0.09l-0.06,-0.11ZM199.42,207.0l0.31,0.91l-0.18,0.88l-0.39,-0.92l0.26,-0.87Z\", \"name\": \"Utah\"}, \"US-IN\": {\"path\": \"M601.93,192.0l1.44,0.85l2.1,0.13l1.52,-0.39l2.63,-1.39l2.73,-2.1l32.34,-5.07l9.08,56.53l-0.66,1.15l0.31,0.91l0.81,0.76l-0.65,1.12l0.5,0.79l1.12,0.03l-0.36,1.11l0.18,0.5l-1.81,0.3l-3.18,2.54l-0.44,0.18l-1.41,-0.78l-3.46,0.93l-0.09,0.77l1.21,3.04l-1.4,1.87l-1.18,0.5l-0.45,0.88l-0.3,2.56l-1.12,0.88l-0.89,-0.25l-0.63,0.49l-0.85,1.93l0.06,3.09l-0.39,0.98l-1.39,0.85l-0.94,-0.66l-1.24,0.02l-1.48,-0.66l-0.63,-1.81l-1.89,-0.7l-0.44,0.3l-0.03,0.51l0.82,0.66l-0.62,0.3l-0.89,-0.34l-0.35,0.29l-0.04,0.48l0.55,0.9l-1.08,0.68l0.15,2.34l-1.06,0.65l0.0,0.82l-0.16,0.36l0.08,-0.48l-0.34,-0.51l-1.61,0.19l-1.42,-1.65l-0.49,-0.07l-1.67,1.49l-1.57,0.69l-1.07,2.86l-0.82,-1.05l-2.8,-0.74l-1.12,-0.59l-1.08,-0.17l-1.76,0.92l-0.64,-1.0l-0.58,-0.18l-0.53,0.56l0.65,1.83l-0.33,0.82l-0.29,0.09l-0.03,-1.15l-0.43,-0.39l-2.04,0.81l-1.42,-0.81l-0.84,0.01l-0.48,0.95l0.72,1.52l-0.49,0.73l-1.16,-0.38l-0.08,-0.53l-0.52,-0.42l0.54,-0.62l-0.35,-3.04l0.95,-0.78l-0.08,-0.59l-0.43,-0.22l0.68,-0.45l0.25,-0.61l-1.18,-1.43l0.45,-1.15l0.33,0.19l0.59,-0.44l0.8,-0.1l0.33,-1.77l0.55,-0.39l0.44,-0.91l-0.06,-0.82l1.52,-1.06l0.06,-0.69l-0.42,-0.9l0.57,-0.85l0.13,-1.27l0.87,-0.51l0.39,-1.89l-1.1,-2.5l0.22,-0.78l-0.17,-1.1l-0.94,-0.89l-0.62,-1.47l-1.06,-0.76l-0.04,-0.57l0.92,-1.38l-0.64,-2.21l1.27,-1.31l-6.7,-49.9Z\", \"name\": \"Indiana\"}, \"US-IL\": {\"path\": \"M541.12,227.85l0.87,-0.35l0.37,-0.67l-0.24,-2.29l-0.74,-0.92l0.15,-0.4l0.71,-0.69l2.42,-0.98l0.71,-0.64l0.63,-1.67l0.17,-2.08l1.64,-2.45l0.27,-0.94l-0.04,-1.21l-0.59,-1.92l-2.24,-1.84l-0.12,-1.74l0.66,-2.35l0.45,-0.37l4.61,-0.86l0.81,-0.41l0.82,-1.11l2.55,-1.0l1.43,-1.55l-0.01,-1.56l0.4,-1.69l1.42,-1.45l0.29,-0.74l0.32,-4.32l-0.77,-2.12l-4.03,-2.42l-0.28,-1.47l-0.49,-0.81l-3.66,-2.42l44.64,-4.88l0.0,2.62l0.58,2.56l1.39,2.45l1.31,0.93l0.77,2.56l1.27,2.67l1.43,1.81l6.81,50.69l-1.22,1.12l-0.1,0.69l0.68,1.72l-0.83,1.07l-0.03,1.1l1.2,1.07l0.57,1.38l0.9,0.8l-0.09,1.78l1.07,2.26l-0.27,1.46l-0.87,0.56l-0.21,1.45l-0.59,0.92l0.33,1.18l-1.48,1.12l-0.22,0.42l0.29,0.68l-0.93,1.16l-0.3,1.18l-1.65,0.68l-0.62,1.65l0.16,0.8l0.97,0.8l-1.27,1.14l0.4,0.75l-0.47,0.23l-0.12,0.55l0.43,2.88l-1.15,0.2l0.08,0.45l0.9,0.75l-0.47,0.17l-0.02,0.64l0.83,0.28l0.04,0.41l-1.3,1.95l-0.24,1.17l0.6,1.21l0.7,0.63l0.37,1.05l-3.32,1.23l-1.19,0.81l-1.25,0.25l-0.77,1.0l-0.17,2.02l0.31,0.87l1.41,1.89l0.07,0.52l-0.53,1.17l-0.97,0.03l-6.33,-2.35l-1.08,-0.07l-1.58,0.64l-0.68,0.71l-1.43,2.91l0.06,0.66l-1.19,-1.18l-0.79,0.14l-0.35,0.47l0.57,1.11l-1.23,-0.76l-0.02,-0.67l-1.61,-2.16l-0.4,-1.1l-0.76,-0.36l-0.05,-0.47l0.94,-1.33l0.2,-1.02l-0.33,-1.0l-1.45,-1.98l-0.48,-3.13l-2.27,-0.96l-1.56,-2.09l-1.96,-0.79l-1.73,-1.31l-1.57,-0.13l-1.83,-0.93l-2.33,-1.73l-2.36,-2.39l-0.37,-1.91l2.36,-6.76l-0.25,-2.28l0.98,-2.03l-0.39,-0.84l-2.68,-1.41l-2.6,-0.64l-1.28,0.45l-0.86,1.43l-0.46,0.28l-0.45,-0.12l-1.3,-1.86l-0.43,-1.49l0.15,-0.86l-0.54,-0.9l-0.29,-1.62l-0.83,-1.33l-0.94,-0.88l-4.13,-2.46l-1.01,-1.61l-4.55,-3.45l-0.74,-1.87l-1.05,-1.19l-0.04,-1.57l-0.97,-1.45l-0.76,-3.48l0.09,-2.89l0.6,-1.26ZM586.9,296.43l0.05,0.06l0.03,0.03l-0.05,-0.0l-0.04,-0.09Z\", \"name\": \"Illinois\"}, \"US-AK\": {\"path\": \"M87.36,534.18l0.47,0.12l0.39,-0.03l0.07,0.37l-0.38,0.38l-0.69,0.33l-0.12,-0.13l0.29,-0.43l-0.1,-0.33l0.07,-0.29ZM89.85,534.33l0.63,-0.13l0.31,-0.6l1.87,-0.44l2.32,0.02l1.55,0.61l0.8,0.71l-0.15,1.95l0.18,0.42l0.1,-0.0l0.29,0.45l0.44,-0.08l0.29,-0.27l0.0,-0.67l0.34,0.23l-0.11,0.47l0.79,0.97l-0.04,0.07l-0.3,-0.1l-0.32,-0.32l-0.32,-0.11l-0.45,0.39l-0.16,-0.54l-0.38,-0.04l-0.24,0.12l-0.25,-0.16l-0.24,0.07l-0.39,-0.32l-0.3,-0.04l-0.73,0.26l-0.89,-0.2l-0.06,-0.27l-0.23,-0.18l0.36,-0.29l0.69,0.74l0.47,-0.03l0.21,-0.45l-0.25,-0.46l-0.0,-0.32l-0.26,-0.72l-0.96,-0.54l-1.1,0.3l-0.64,0.75l-0.83,0.25l-0.29,0.09l-0.42,-0.31l-0.48,0.11l-0.1,0.17l-0.65,-0.16l-0.28,0.07l-0.24,0.25l0.25,-0.28l-0.05,-0.59l0.21,-0.89ZM99.7,537.94l0.33,-0.34l0.43,-0.24l-0.01,-0.35l-0.47,-1.08l0.15,-0.27l0.65,-0.28l0.32,-0.33l0.72,-0.38l0.65,-0.03l0.43,-0.15l0.83,0.08l1.47,-0.11l0.63,0.14l0.1,0.14l0.38,0.14l0.9,0.09l0.27,0.15l0.28,-0.24l0.27,-0.06l0.37,0.08l0.18,0.21l0.27,-0.04l0.21,0.43l0.39,0.27l0.08,0.22l0.71,-0.02l0.39,-0.85l0.55,-0.71l0.52,-0.25l1.89,-0.56l0.5,0.02l0.35,0.22l1.22,-0.45l0.64,0.02l-0.15,0.41l0.4,0.58l0.61,0.29l0.46,-0.01l0.45,-0.47l0.13,-0.43l-0.35,-0.28l-0.25,-0.06l0.17,-0.42l-0.14,-0.42l1.23,-1.18l0.98,-1.13l0.16,-0.1l0.35,0.16l0.38,-0.03l0.26,0.28l0.17,0.41l0.67,-0.24l-0.05,-0.61l-0.38,-0.61l-0.45,-0.26l0.25,-0.55l0.9,-0.58l0.37,0.02l0.73,-0.26l0.84,-0.13l0.57,0.16l0.44,-0.15l-0.12,-0.56l0.24,-0.11l0.62,-0.65l0.43,0.04l0.24,-0.11l0.52,-0.62l0.38,-0.16l0.2,-0.48l-0.44,-0.28l-0.55,0.11l-0.59,0.59l-0.54,-0.07l-0.54,0.34l-2.21,-0.44l-1.73,-0.17l-0.68,-0.22l-0.09,-0.2l0.22,-0.4l0.08,-0.44l-0.26,-0.66l0.69,-0.45l0.24,-0.34l0.47,0.57l-0.21,0.72l0.03,0.41l0.61,0.14l0.29,-0.14l-0.01,-0.29l0.21,-0.39l0.04,-0.79l-0.74,-1.1l0.09,-0.77l-0.68,-0.24l-0.21,0.25l-0.12,0.58l-0.54,0.27l-0.27,-0.56l-0.34,-0.08l-0.49,0.37l-0.07,0.34l-0.24,0.24l-0.4,-0.01l-0.48,0.27l-0.29,0.57l-0.53,1.69l-0.27,0.06l-0.23,-0.38l0.4,-2.82l0.01,-0.54l-0.15,-0.55l0.18,-0.2l0.14,-0.44l-0.15,-0.33l-0.51,-0.26l-0.94,0.36l0.02,-0.53l-0.5,-0.64l0.24,-0.28l0.16,-0.7l-0.14,-0.41l-0.58,-0.27l-1.94,0.1l-0.58,-0.32l-1.04,-0.07l-0.2,-0.36l-0.24,-0.06l-1.16,0.65l-0.73,-0.13l-0.06,-0.42l-0.15,-0.03l0.18,-0.12l0.34,0.1l0.5,-0.11l0.29,-0.39l-0.16,-0.57l0.5,-0.64l0.9,-0.0l0.43,-0.18l0.13,-0.3l-0.1,-0.46l-1.07,-0.66l0.16,-0.38l0.4,-0.21l0.45,-0.53l1.21,-0.08l0.23,-0.1l0.17,-0.27l0.17,-1.07l0.3,-0.59l0.27,-1.56l0.33,-0.54l-0.01,-0.63l0.14,-0.31l1.0,-0.81l-0.03,-0.14l0.2,-0.15l-0.2,-0.34l-0.24,-0.11l-0.14,0.07l-0.09,-0.34l0.71,-0.3l0.4,-0.32l0.52,-0.13l0.31,-0.33l0.46,-0.04l0.15,0.15l0.45,0.08l0.33,-0.12l0.44,-0.51l-0.32,-0.4l-0.34,-0.04l-0.01,-0.32l-0.27,-0.36l-0.62,0.35l0.01,0.16l-0.56,-0.06l-1.27,0.79l-0.19,-0.04l-0.58,0.22l-0.38,-0.03l-0.25,0.1l-0.05,0.15l-0.48,-0.06l-0.17,0.47l0.35,0.75l-0.37,0.25l-0.22,0.4l-0.2,0.15l-0.15,-0.07l-0.13,-0.26l-2.03,-0.22l-1.8,-0.94l-0.73,-0.6l-0.44,-0.69l0.09,-0.39l0.11,0.06l0.53,-0.13l-0.05,-0.33l0.13,-0.31l-0.38,-1.12l0.22,-0.87l-0.11,-0.58l0.42,-0.68l-0.42,-0.31l-0.21,0.02l-0.35,-0.67l0.0,-0.37l0.37,-0.01l0.39,-0.17l0.32,-0.43l-0.03,-0.35l-0.26,-0.27l-0.54,-0.17l1.35,0.03l0.28,-0.15l0.21,-0.32l0.67,-0.05l0.02,0.53l0.51,0.51l0.27,0.51l-0.09,0.24l-0.29,-0.02l-0.62,0.18l-0.55,0.48l0.0,0.14l0.31,0.38l1.01,-0.16l0.4,0.22l0.27,-0.03l0.46,-0.28l0.28,-0.0l0.09,0.08l-0.64,0.61l-0.16,0.47l0.03,0.25l0.17,0.24l0.48,0.24l1.49,-0.04l0.27,-0.18l0.18,-0.34l0.2,-0.07l-0.14,-0.9l0.27,-0.1l0.2,-0.27l0.02,-0.32l-0.13,-0.24l0.2,-0.53l-0.06,-0.13l-0.55,-0.28l-0.84,0.04l-0.35,0.16l-0.97,-0.93l-0.42,-0.26l0.07,-0.57l-0.33,-0.44l-0.24,-0.13l-0.19,-0.48l0.19,0.03l0.07,-0.09l0.52,0.15l0.51,-0.35l-0.15,-0.47l-0.73,-0.52l0.2,-0.06l0.41,-0.42l-0.11,-0.55l0.12,-0.15l0.41,-0.21l0.27,0.07l0.5,-0.15l0.43,0.25l0.8,-0.11l0.67,-0.43l-0.02,-0.53l-0.18,-0.22l-0.45,-0.06l-0.66,0.28l-0.44,-0.17l-1.09,0.08l-0.76,0.26l-0.36,0.37l-0.7,0.11l-0.18,0.15l-0.15,0.39l-0.12,0.12l-0.06,-0.08l0.08,-0.32l0.35,-0.45l-0.07,-0.08l0.19,0.01l0.12,-0.14l-0.1,-0.06l0.17,-0.46l-0.4,-0.6l0.11,-0.27l0.4,0.09l0.24,-0.06l0.45,-0.5l0.04,-0.34l-0.13,-0.54l-0.39,-0.37l1.09,0.44l0.4,-0.45l-0.38,-0.63l-0.06,-0.33l0.52,0.48l0.98,0.33l0.18,-0.4l0.12,0.03l0.05,-0.61l0.22,-0.48l0.63,-0.43l0.57,-0.07l2.22,-0.76l0.81,-0.13l0.27,0.19l-0.08,0.5l0.2,0.34l-0.41,0.26l0.13,0.45l0.3,0.14l0.85,-0.04l0.29,-0.37l0.05,-0.95l-0.19,-0.11l0.35,0.03l1.35,-0.27l0.27,-0.58l-0.05,-0.09l-0.31,-0.21l-0.9,0.06l0.08,-0.22l0.5,-0.05l0.12,-0.59l0.14,-0.14l0.89,-0.42l0.73,0.88l0.38,0.11l0.32,-0.23l0.16,-0.44l-0.01,-0.27l-0.25,-0.44l0.64,-0.07l0.65,0.27l0.28,0.29l0.41,0.85l-0.04,0.22l-0.15,0.1l0.04,0.18l-0.54,-0.04l-0.54,0.27l-0.1,0.49l0.46,0.2l1.1,-0.05l-0.07,0.5l0.35,0.37l0.69,0.38l0.34,0.09l0.95,-0.04l0.57,-0.28l0.44,0.15l0.53,-0.06l1.67,-0.57l0.1,0.54l1.59,0.9l0.27,0.34l0.54,0.31l1.07,0.28l2.13,-0.53l0.42,-0.22l0.47,-0.45l0.41,-0.77l0.37,-1.17l0.9,-1.39l0.06,-0.37l-0.1,-0.54l0.04,-0.33l0.22,-0.25l-0.06,-0.5l0.46,0.37l0.31,0.02l0.23,-0.16l1.15,-0.23l0.62,-0.63l0.26,-1.05l-0.15,-0.65l0.51,-0.43l-0.22,-0.39l-0.76,-0.38l-0.4,0.19l-0.4,0.02l-0.6,0.33l-0.26,-0.29l-0.05,-0.41l-0.3,-0.35l-0.49,-0.04l-0.07,0.23l-0.62,0.0l-0.43,-0.28l-0.08,0.09l-0.54,-0.03l-0.36,0.17l-0.95,-0.12l-0.9,0.24l0.06,-0.3l-0.16,-0.8l0.04,-0.58l-0.1,-0.59l-0.54,-0.21l-0.87,0.1l-0.29,-0.51l-0.43,-0.43l-0.59,-0.28l-1.06,-1.04l-0.92,-0.12l-0.2,-0.28l-0.43,-0.23l-0.07,-0.22l-0.65,-0.06l-0.17,0.22l-0.7,-1.25l-0.93,-1.21l-0.6,-0.94l-0.15,-0.58l0.22,-0.72l0.16,-0.13l0.26,0.05l0.25,-0.13l0.49,-0.79l-0.01,-0.48l-0.21,-0.69l0.21,-0.4l0.5,0.21l0.56,-0.14l0.47,-0.29l0.4,0.66l0.5,0.23l0.42,-0.32l0.06,-0.37l-0.2,-0.74l-0.43,-0.44l-0.33,-0.84l-0.73,-0.89l-0.16,-0.04l-0.77,-1.14l-0.22,-0.53l0.03,-0.34l-0.38,-1.37l0.77,0.03l0.48,0.42l0.39,0.13l0.39,-0.13l0.19,-0.28l0.19,0.05l0.18,-0.27l0.19,-0.0l0.22,0.55l0.54,0.22l1.01,0.04l0.19,-0.16l0.17,0.07l0.66,-0.29l1.57,0.23l0.08,0.66l0.76,0.9l1.11,0.4l0.5,-0.28l0.03,-0.12l-0.01,-0.26l-0.38,-0.97l0.25,-0.04l1.04,0.11l0.61,0.18l0.24,0.17l0.02,0.44l0.76,0.16l0.33,-0.12l1.02,-0.04l0.42,0.17l1.32,0.83l0.03,0.42l0.15,0.18l-0.14,0.16l-0.52,0.11l-0.41,0.31l-0.48,0.71l-0.5,-0.17l-0.63,-0.09l-0.12,0.06l-0.08,0.66l0.52,0.44l-0.12,0.64l0.09,0.45l0.28,0.39l0.8,0.5l0.15,0.33l0.4,0.4l0.72,0.27l0.32,0.25l-0.29,0.37l-0.04,0.29l0.48,0.32l0.22,-0.09l0.18,0.07l0.07,0.23l0.35,0.3l0.54,0.08l0.24,0.37l-0.17,0.51l0.21,0.38l0.49,0.2l0.35,-0.15l0.07,-0.28l0.31,-0.03l0.3,-0.25l1.17,-0.57l0.04,0.5l0.32,0.37l-0.13,0.11l-0.33,0.02l-0.08,0.49l0.34,0.34l0.57,-0.02l0.77,-0.55l0.23,-0.37l0.13,-0.95l-0.53,-1.05l0.53,0.03l0.16,0.37l-0.04,0.42l0.21,0.94l0.5,0.48l1.23,0.64l0.3,0.05l0.27,-0.1l0.29,-0.29l0.49,-0.7l0.1,-0.53l0.43,-0.51l-0.16,-0.31l-0.71,-0.34l-0.49,-0.01l-0.06,-0.56l-0.18,-0.38l-0.88,-0.51l-0.51,-0.09l-0.69,0.4l-0.2,-0.22l0.09,-0.54l-0.1,-0.15l-0.06,-0.94l0.33,-0.37l0.4,-0.14l0.27,-0.3l0.38,-0.08l0.3,0.24l0.3,0.04l0.39,-0.33l0.04,-0.19l-0.5,-1.34l-0.57,-0.43l-0.49,-0.19l-0.05,-0.43l0.37,-0.35l0.03,-0.29l-0.11,-0.24l-0.51,-0.23l-0.39,0.26l0.03,0.11l-0.6,0.24l-0.2,-0.44l-0.8,-0.5l-0.12,-0.35l-1.08,-1.4l1.04,-1.59l0.48,-1.31l0.21,-1.26l-0.22,-1.28l0.02,-1.32l-0.25,-0.51l-0.08,-1.73l-0.15,-0.88l-0.74,-1.55l0.16,-0.91l-0.24,-1.2l0.25,-0.0l1.0,-0.81l0.49,-0.22l1.3,-1.27l0.3,-0.44l0.16,0.26l0.43,0.32l0.33,0.49l1.57,1.15l0.85,0.35l1.25,0.85l0.65,0.21l0.78,0.09l1.5,-0.09l1.75,-0.56l0.32,0.05l0.52,-0.2l1.22,-0.98l0.43,-0.54l0.4,-0.31l0.55,-0.18l0.17,-0.45l2.11,-0.42l0.63,-0.43l0.54,-0.09l0.2,-0.19l0.25,-0.04l0.1,0.18l0.69,0.39l0.89,0.14l0.09,-0.15l0.19,-0.05l0.66,0.47l0.8,0.14l0.38,0.39l0.41,-0.26l2.49,-0.32l-0.46,0.31l0.23,0.44l-0.72,0.37l-0.11,0.57l0.36,0.2l-0.26,1.06l0.21,0.46l0.49,-0.11l0.8,-1.61l0.24,-0.23l0.25,0.17l0.55,0.07l0.28,0.23l0.49,0.02l0.31,-0.11l-0.07,-0.72l-0.28,-0.1l-0.33,-0.32l-0.36,-0.04l-0.0,-0.14l0.16,-0.3l0.05,-0.61l0.41,0.07l0.82,-0.35l-0.0,1.13l0.16,0.42l0.45,0.0l0.24,-0.34l0.43,0.18l0.24,-0.1l0.46,0.48l1.04,0.48l0.2,-0.05l0.71,0.47l0.58,0.1l1.34,-0.08l1.42,-0.31l1.29,-0.65l1.13,-0.41l0.06,0.74l0.64,0.58l-0.31,0.27l0.14,0.59l0.58,0.09l0.25,0.14l0.16,0.27l-0.16,0.38l-0.53,0.08l-0.22,0.14l-0.83,-0.31l-0.6,0.19l-0.28,0.66l0.17,0.37l-0.54,0.69l0.23,0.62l0.39,0.04l0.35,-0.31l0.64,0.31l0.32,-0.03l0.36,-0.22l0.3,-0.41l0.4,-0.13l0.35,0.33l0.27,-0.05l0.33,0.15l0.24,-0.07l0.35,-0.34l0.08,0.63l-0.43,0.35l-0.58,0.09l0.1,0.73l-0.05,0.46l0.2,0.27l0.55,0.25l-0.11,0.23l0.12,0.4l0.22,0.16l0.4,0.05l1.03,-0.36l0.71,0.57l0.62,0.22l0.32,-0.04l0.14,0.36l0.2,0.09l0.02,0.43l0.24,0.25l0.17,0.54l0.45,0.04l0.29,-0.21l0.23,0.34l-1.14,0.49l-0.31,0.63l-0.62,0.16l-0.15,0.49l0.34,0.45l1.51,0.71l-0.37,0.08l-0.25,0.18l-0.03,0.62l0.55,0.49l0.67,0.4l0.14,0.2l0.13,0.59l0.36,0.22l0.46,-0.17l0.1,-0.24l1.06,0.38l0.2,-0.18l0.27,0.35l-0.2,0.22l0.18,0.58l1.13,0.28l0.65,-0.12l0.18,0.18l0.66,0.24l0.02,0.15l0.23,0.24l0.36,0.11l0.34,0.46l0.11,0.53l0.19,0.07l0.56,0.71l-0.11,0.23l0.06,0.57l0.51,0.33l0.5,-0.08l0.1,0.41l0.41,0.37l-0.19,0.45l0.29,0.52l0.7,0.54l0.72,0.78l0.67,0.31l0.22,-0.06l1.43,0.88l0.33,0.49l0.45,0.21l0.37,0.84l0.07,-0.04l0.02,0.34l0.12,0.03l0.31,0.59l-0.03,0.31l0.51,0.28l0.38,0.42l0.36,0.11l0.29,0.27l0.49,0.2l0.84,-0.17l0.4,0.22l0.04,0.55l0.49,0.04l0.4,-0.4l0.51,0.02l0.21,0.18l0.6,0.22l-0.03,0.31l0.54,0.37l0.22,-0.21l0.16,0.11l0.21,0.36l0.27,0.08l0.28,0.52l-0.06,0.4l0.39,0.53l-0.08,0.29l0.11,0.51l0.48,0.47l0.03,0.45l0.13,0.18l0.35,0.13l0.38,0.48l0.3,1.3l0.27,0.3l0.68,0.03l-33.88,69.97l0.07,0.44l1.39,1.52l0.56,0.03l0.2,-0.18l1.0,1.36l0.47,0.14l1.42,-0.55l1.71,0.67l-1.05,1.27l-0.09,0.32l0.25,1.15l0.83,1.01l-0.14,0.64l0.04,0.6l1.99,5.34l-0.34,1.76l-0.34,0.47l0.19,0.61l0.33,0.11l0.27,-0.0l0.86,-0.33l0.55,-0.04l0.04,0.26l-0.76,0.37l-0.33,0.35l0.29,0.55l0.37,-0.02l0.38,-0.21l0.2,0.1l0.0,0.24l0.53,0.24l0.14,1.31l0.1,0.14l-0.31,0.03l-0.1,0.46l0.22,0.36l0.92,0.24l0.05,0.19l-0.31,0.19l-0.0,0.13l0.19,0.34l0.19,0.11l-0.13,0.52l-0.19,-0.01l-0.06,-0.5l-0.34,-0.34l-0.12,0.06l-0.23,-0.49l-0.51,-0.04l-0.29,0.41l-0.27,-0.02l-0.23,0.12l-0.19,-0.6l-0.14,0.01l-0.33,-0.45l-0.45,-0.12l-0.86,-1.68l0.26,-0.0l0.3,-0.44l-0.05,-0.28l-0.36,-0.33l-0.47,0.03l-0.39,-1.0l-0.06,-0.2l0.18,-0.61l-0.05,-0.42l-0.43,-1.17l-0.42,-0.8l-0.15,-0.06l-0.03,-0.2l0.19,-0.5l-0.3,-0.32l-0.68,-0.12l-0.76,-1.2l-0.34,-0.36l-0.22,-0.51l0.0,-0.25l-0.29,-0.25l-0.22,-0.37l-0.28,-0.12l-0.53,-0.85l0.33,0.03l0.26,-0.14l0.12,-0.23l0.61,-0.3l-0.02,0.19l-0.22,0.1l-0.15,0.49l0.27,0.46l0.43,0.08l0.44,-0.35l0.31,-1.17l0.22,-0.31l0.35,0.19l0.12,0.32l0.22,0.2l0.41,0.04l0.32,-0.36l-0.39,-0.84l-0.65,-0.42l-0.17,-1.03l-0.29,-0.7l-0.44,-0.21l-0.49,0.29l-0.22,0.26l-0.42,0.09l-0.83,0.47l-1.88,0.06l-0.94,-0.51l-0.42,-0.36l-1.39,-1.72l0.31,-0.13l0.2,-0.25l0.32,-0.95l-0.37,-1.07l-0.54,-0.07l-0.36,0.29l-0.08,0.55l-0.66,0.01l-0.74,-0.96l-2.63,-2.07l-1.67,-0.45l-1.59,-0.64l-1.09,-0.13l-0.02,-0.58l-0.25,-0.63l0.18,-0.21l0.03,-0.3l-0.23,-0.29l-0.25,-0.01l-0.99,-0.65l-0.07,-0.58l-0.17,-0.38l-0.2,-0.13l0.07,-0.18l0.3,-0.08l0.43,-0.41l0.11,-0.29l-0.11,-0.09l0.31,-0.43l0.29,-0.14l0.38,0.06l0.37,-0.2l0.18,-0.32l-0.0,-0.32l-0.35,-0.26l-0.61,-0.04l-0.84,0.36l-0.28,0.27l-0.59,0.06l-0.62,0.45l-0.63,0.21l-0.13,-0.1l-0.12,-0.65l-0.6,-0.75l0.99,-0.56l0.18,-0.35l-0.33,-0.49l-0.45,0.03l-0.19,-0.61l-0.13,-0.1l0.18,-0.56l-0.13,-0.28l0.08,-0.24l-0.24,-0.61l-0.47,-0.26l-0.52,0.22l-0.09,-0.21l-0.21,-0.01l-0.07,-0.12l0.32,-0.71l-0.08,-0.14l0.37,0.06l0.11,-0.13l0.59,0.36l0.42,0.06l0.4,-0.44l-0.08,-0.47l-0.28,-0.31l-1.03,-0.53l-1.57,0.42l-0.08,-0.19l-0.39,-0.32l-0.41,0.01l-0.1,-0.25l-0.41,0.05l-0.2,-0.13l0.26,-0.39l0.18,-0.83l-0.15,-0.23l-0.36,-0.13l0.14,-0.17l0.2,-0.7l-0.37,-0.34l-0.3,0.04l-1.38,0.7l-0.36,-0.43l-1.21,-0.12l-0.18,0.31l-0.52,0.28l0.05,0.48l0.19,0.14l-0.11,0.28l-0.81,-0.24l-0.66,0.02l-0.27,0.57l-0.52,0.43l0.1,0.52l0.33,0.17l0.42,-0.05l-0.12,0.24l-1.26,0.35l-0.28,0.24l-0.07,0.41l0.41,0.33l0.83,-0.19l0.01,0.38l0.35,0.34l-0.41,0.17l-0.14,0.35l-0.59,-0.04l-0.24,0.4l-0.35,0.16l0.06,0.54l-0.29,0.33l-0.13,0.11l-0.09,-0.11l-0.67,0.18l-0.02,0.15l-0.31,-0.3l-0.43,-0.14l-0.12,-0.28l-0.17,-0.11l0.18,-0.58l-0.07,-0.12l-0.48,-0.24l-0.46,0.09l0.2,-0.46l-0.01,-0.33l-0.23,-0.3l-0.3,-0.08l-0.43,0.22l-0.36,0.71l-0.2,0.15l-0.2,-0.02l-0.18,-0.5l-0.51,-0.08l-0.42,0.5l-0.43,-0.05l-0.19,0.37l-0.23,-0.3l-0.45,-0.03l-0.25,0.25l-0.04,0.31l-0.3,-0.08l-0.14,-0.37l-0.12,-0.02l-0.39,0.09l-0.72,0.47l-0.01,-0.27l-0.12,-0.09l-0.86,-0.01l-0.38,0.23l0.01,0.46l-1.69,0.41l-0.81,-0.77l-0.25,-0.04l-0.32,0.3l-0.39,-0.25l-0.96,-0.01l-0.3,-0.5l-0.07,-0.37l0.11,0.09l0.66,-0.33l-0.01,-0.1l0.26,0.09l0.34,-0.07l0.37,0.28l0.07,0.27l0.21,0.23l0.51,-0.04l0.19,-0.29l0.01,-0.28l0.31,0.14l0.44,-0.07l0.47,-0.16l0.09,-0.22l0.53,-0.29l0.5,-0.13l0.3,-0.47l-0.19,-0.43l-0.51,-0.19l-1.87,0.16l-0.47,-0.71l-0.04,-0.34l1.51,-1.29l1.74,-0.62l0.37,-0.29l0.42,-0.58l0.21,0.02l0.26,-0.13l0.8,-1.1l0.24,-1.21l0.46,-0.04l0.73,0.28l1.61,-0.32l1.36,-0.08l-0.05,0.52l0.19,0.48l0.52,0.51l1.2,0.2l0.23,0.45l1.45,1.39l0.16,0.38l0.29,0.16l0.48,-0.33l0.06,-0.48l-0.08,-0.44l-0.39,-0.52l-0.41,-0.12l-0.25,-0.55l-0.39,-0.37l-0.6,-1.46l0.49,-0.09l0.64,-0.47l0.37,-0.01l0.36,-0.23l1.56,0.25l0.38,-0.1l0.15,-0.57l-0.75,-0.62l-0.83,-0.27l-0.64,0.0l-0.98,0.33l-0.55,0.58l-0.65,-0.49l-0.11,-0.29l-0.55,-0.08l0.23,-0.38l-0.2,-0.67l-0.3,-0.01l-0.45,0.3l-0.18,-0.09l-0.33,0.19l-0.85,-0.15l-0.51,0.05l-0.93,0.54l-0.63,-0.12l-0.41,-0.23l-0.48,-0.05l-0.65,0.18l-0.29,-0.03l-0.61,0.32l-0.26,0.3l-0.09,0.42l-0.43,-0.13l-0.68,0.1l-0.55,0.31l-0.65,0.08l-0.57,0.21l-0.42,0.37l-0.15,0.46l-0.6,0.29l-0.6,0.01l-0.33,-0.24l-0.19,-0.75l-0.42,-0.34l-0.33,-0.12l-0.44,0.05l-0.26,0.26l0.14,0.52l0.28,0.07l0.02,0.63l0.32,0.65l0.02,0.67l-0.46,0.14l-0.39,0.32l-0.32,-0.05l-0.53,-0.39l-0.76,-0.31l-0.3,-0.03l-0.52,0.26l0.04,0.67l-0.07,-0.54l-0.29,-0.38l-0.45,0.17l-0.3,0.49l-0.19,-0.37l-0.85,0.2l-0.09,0.06l-0.03,0.5l-0.4,-0.36l-0.35,-0.02l-0.21,0.71l0.08,0.2l-0.35,-0.21l-0.38,0.06l-0.47,-0.19l-0.65,0.34l0.01,0.17l-0.32,0.17l-0.34,0.45l-0.5,0.02l-0.04,0.18l-0.21,0.08l0.0,0.48l-0.21,0.29l-0.05,0.39l0.34,0.39l0.59,-0.1l0.36,0.39l0.52,0.29l-0.03,0.37l0.15,0.4l0.38,0.33l0.0,0.52l-0.33,0.14l-0.48,0.42l-0.52,-0.03l-0.47,0.23l-0.85,-0.45l-0.39,0.03l-0.33,0.34l-0.15,-0.02l-0.08,0.15l-0.17,-0.11l-0.49,0.0l-0.37,0.68l-0.8,-0.11l-0.42,0.08l-0.37,0.3l-0.02,0.34l-0.05,-0.14l-0.37,-0.26l-0.38,0.26l-0.05,0.14l-0.21,-0.12l-0.38,0.21l-0.29,-0.09l-0.37,0.09l-0.5,-0.44l-0.48,-0.15l-1.0,0.59l-0.12,-0.1l-0.35,0.16l-0.42,-0.16l-0.48,0.3l-0.09,-0.34l-0.3,-0.29l-0.39,-0.0l-0.43,0.31l-0.22,0.36l-0.4,-0.17l-0.35,0.36l-0.42,-0.07l-0.41,-0.46l-0.41,0.09l-0.34,0.26l-0.55,-0.13l-0.15,0.1l-0.32,-0.07l-0.78,0.14l-0.41,-0.05l-0.31,0.14l-0.22,0.28l0.03,0.47l0.12,0.1l0.0,0.5l-0.36,-0.03l-0.17,0.19l-0.67,-0.23l-0.41,-0.28l-0.36,0.12l-0.17,0.24l-0.19,-0.25l-0.66,0.27l-0.57,0.09l-0.31,-0.22l-0.27,0.18l-0.14,-0.63l-0.41,-0.25l-0.44,0.09l-0.29,0.36l-0.49,0.09l-0.19,-0.09l-0.2,0.35l-0.03,-0.25l-0.28,-0.29l-0.53,-0.13l-1.34,-0.02l-0.66,0.34l-0.42,-0.34l-0.53,-0.02l-0.88,0.31l-0.74,0.12l-0.17,0.14l-0.15,0.37l0.04,0.2l-0.34,-0.03l-0.42,0.3l-0.09,0.27l-0.29,0.16l-0.22,-0.25l-0.39,-0.03l-0.39,0.2l-0.58,-0.33l-0.87,-0.21l-0.37,-0.18l-0.09,-0.39l-0.39,-0.15l-0.28,0.02l-0.17,0.13l-0.67,-0.68l-0.42,0.02l-0.8,-0.23l-0.32,0.23l-0.41,0.02ZM106.4,539.35l-0.02,0.01l-0.0,0.03l0.02,-0.04ZM106.43,539.32l0.01,-0.01l-0.01,0.0l-0.0,0.01ZM111.57,518.06l-0.28,0.1l-0.37,0.21l0.38,-0.38l0.27,0.08ZM135.54,477.36l-0.14,0.2l-0.03,0.01l0.06,-0.2l0.11,-0.01ZM165.25,532.53l-0.7,0.04l-0.06,-0.16l0.39,-0.18l0.33,-0.39l0.85,-0.3l-0.33,0.55l-0.37,0.09l-0.1,0.36ZM161.82,535.36l0.25,0.0l0.0,0.01l-0.28,0.13l0.03,-0.14ZM158.22,525.53l0.0,-0.0l-0.0,0.0l-0.0,-0.0ZM157.41,525.32l-0.03,-0.01l0.01,-0.01l0.02,0.02ZM141.51,529.3l0.28,0.11l0.27,0.23l-0.18,0.15l-0.38,0.01l-0.06,-0.1l0.11,-0.12l-0.03,-0.28ZM130.96,537.03l0.02,0.01l-0.03,0.02l0.0,-0.03ZM107.99,539.38l0.13,-0.03l0.06,0.1l-0.11,0.04l-0.07,-0.1ZM105.8,540.76l0.01,0.03l-0.02,0.0l0.0,-0.03l0.01,-0.0ZM98.05,537.96l0.0,0.06l-0.04,0.0l0.04,-0.07ZM189.71,556.2l0.09,-0.87l0.26,-0.09l0.03,0.48l-0.38,0.49ZM196.77,565.5l0.54,-0.11l0.83,0.29l0.38,-0.07l0.81,-0.66l0.46,-1.03l0.4,0.03l0.29,-0.09l0.5,-0.42l0.14,-0.26l0.0,-0.34l1.03,0.18l1.86,-0.26l0.42,0.76l-0.02,0.36l0.38,0.82l-0.16,0.4l-0.33,0.23l-0.1,0.5l0.11,0.21l-0.15,0.37l0.08,0.6l0.16,0.27l0.65,0.49l-0.02,0.41l0.25,0.63l0.33,0.27l0.06,0.43l-0.19,0.35l0.18,1.36l1.21,1.64l0.21,1.03l-0.69,-0.21l-0.4,0.06l-0.33,0.42l-0.51,0.26l-0.04,0.35l-0.41,0.21l-0.2,0.31l-0.42,-1.04l-0.8,-0.71l0.15,-0.53l-0.14,-0.43l-0.05,-0.8l0.15,-0.11l0.35,-1.25l-0.24,-0.23l0.05,-0.09l-0.14,-0.02l0.05,-0.08l-0.1,0.06l-0.13,-0.13l-0.11,0.1l-0.03,-0.1l0.14,-0.2l0.38,-2.06l-0.06,-1.21l0.61,-1.16l0.04,-0.36l-0.68,-0.27l-0.56,0.83l-0.22,-0.13l-0.44,0.09l-0.08,0.44l0.07,0.14l-0.37,0.38l0.23,1.2l-0.43,0.98l0.02,1.52l-0.15,0.39l0.01,0.5l-0.3,0.34l-0.12,2.12l-0.33,0.4l-0.18,-0.2l-0.05,-0.31l0.12,-1.48l-0.25,-0.33l-0.54,0.11l-0.1,0.15l-0.79,-0.08l-0.02,-0.13l0.29,-0.11l0.15,-0.25l0.25,-0.95l-0.11,-0.11l-0.07,-1.31l0.94,0.09l0.44,-0.41l-0.08,-0.36l-0.7,-0.48l-0.22,0.08l0.04,-0.97l-0.25,-0.3l-0.34,-0.05l-0.39,0.67l-0.26,0.08l-0.24,0.42l0.35,0.35l-0.2,0.26l-0.04,-0.39l-0.49,-0.25l0.3,-0.64l-0.28,-0.55l-0.26,-0.02l-0.13,-0.53l-0.45,-0.19l-0.25,0.33l-0.21,-0.55ZM207.28,574.49l0.35,0.91l-0.28,0.4l0.04,0.74l0.38,1.41l-0.0,1.31l0.27,1.06l0.37,3.3l0.33,1.42l0.09,1.05l-0.6,0.55l0.03,0.61l0.79,0.61l-0.55,0.81l0.04,0.5l0.56,0.6l-0.11,0.33l0.03,0.54l-0.18,0.59l0.14,0.3l0.2,0.15l0.87,0.27l1.35,1.98l1.13,0.85l0.3,0.83l0.53,0.45l0.04,0.84l0.76,0.62l0.47,0.11l0.02,0.18l-0.21,0.82l-0.71,0.53l-0.36,0.55l-0.03,0.7l-0.35,0.74l0.06,1.04l-0.18,0.6l0.03,0.38l-0.44,0.21l-1.4,1.54l-0.43,0.34l-0.48,0.17l-0.19,-0.14l-0.26,0.0l0.14,-0.54l-0.14,-0.44l-0.65,0.05l-0.07,0.14l-0.09,-0.51l0.26,-0.08l0.11,0.14l0.51,0.15l1.31,-0.89l0.77,-0.71l-0.23,-0.63l-0.45,0.06l0.0,-0.13l-0.38,-0.38l-0.52,0.14l0.69,-1.91l0.27,-1.72l-0.35,-0.25l-0.04,-0.39l-0.25,-0.6l0.53,-0.19l0.37,-0.39l0.16,-0.48l-0.44,-0.25l-0.44,0.1l-0.63,0.36l-0.42,0.05l-0.56,-0.3l-0.16,0.11l-0.21,-0.09l-1.07,0.31l-0.64,-0.05l0.28,-0.15l0.18,-0.31l0.3,-1.03l0.32,0.01l0.78,0.43l0.33,0.02l0.69,-0.35l-0.04,-0.49l-0.35,-0.21l-0.38,0.04l-0.84,-0.44l0.07,-0.93l-0.22,-0.31l-0.44,-0.27l0.05,-0.48l-0.4,-0.66l0.33,-0.41l-0.17,-0.67l-0.35,-0.02l0.13,-0.08l-0.03,-0.23l0.53,-0.28l0.22,-0.59l-0.39,-0.29l-0.68,0.21l-0.41,-0.64l-0.06,-0.43l0.37,-0.24l0.24,-1.12l-0.41,-0.33l-0.48,0.19l-0.14,-0.07l-0.27,-0.39l0.15,-0.23l-0.22,-0.49l-0.49,-0.26l-0.25,0.04l-0.19,0.17l-0.21,-0.25l0.13,-0.23l0.53,0.23l1.01,-0.02l0.4,-0.16l0.16,-0.2l0.05,-0.15l-0.28,-0.52l-0.5,0.1l-0.44,-0.15l0.25,-0.38l-0.01,-0.29l-0.5,-0.27l0.09,-0.26l0.62,-0.0l0.34,0.77l0.29,0.26l0.33,0.01l0.28,-0.17l0.05,-0.48l-0.23,-0.25l-0.4,-1.14l-0.72,-1.0l0.18,-0.54l0.96,0.79l0.3,0.11l0.45,-0.45l-0.05,-0.21l-0.35,-0.47l-1.25,-0.77l-0.25,-0.05l0.21,-0.28l-0.18,-0.43l0.22,-0.16l0.32,-0.62l-0.5,-0.34l-0.27,0.02l-0.35,0.25l-0.02,0.14l-0.39,0.35l-0.1,-0.38l0.12,-0.22l0.01,-0.49l0.28,-0.4l0.39,-0.23l0.18,-0.64l0.25,-0.15l0.25,-0.35l0.34,0.08l0.45,-0.24ZM208.9,604.79l-0.14,0.6l-0.04,-0.01l0.1,-0.48l0.08,-0.11ZM210.37,602.77l-0.57,0.31l-0.25,-0.22l-0.61,0.16l0.07,-0.21l0.55,-0.32l0.81,0.28ZM206.97,596.06l-0.04,0.0l0.0,-0.01l0.04,0.01ZM206.76,596.37l-0.08,0.41l0.26,0.3l-0.54,0.46l-0.46,-0.21l-0.29,0.43l0.05,0.44l-0.14,-0.23l0.12,-0.78l0.24,-0.06l0.03,-0.15l0.5,-0.05l0.3,-0.58ZM205.35,581.23l-0.08,-0.02l-0.02,-0.09l0.1,0.11ZM174.62,442.02l0.16,-0.03l0.01,0.02l-0.12,0.04l-0.05,-0.03ZM149.15,463.88l-0.48,-0.68l0.17,-0.34l0.08,-0.53l0.46,0.23l-0.22,1.31ZM139.58,480.85l-0.2,-0.16l-0.1,-0.17l0.02,-0.02l0.29,0.35ZM110.4,493.59l-0.04,0.0l-0.0,-0.01l0.04,-0.0l0.0,0.0ZM207.1,600.51l-0.19,-0.22l-0.19,-0.6l0.65,-0.29l-0.24,0.42l-0.04,0.69ZM206.1,600.7l-0.0,0.01l0.0,-0.01l0.0,0.0ZM207.6,599.25l0.23,-0.53l-0.13,-0.23l0.59,-0.1l0.3,-0.26l-0.01,-0.13l0.38,-0.35l0.16,-0.57l0.54,-0.04l0.23,1.16l0.07,1.2l-0.18,0.24l0.03,0.13l-0.16,0.03l-0.32,0.84l-0.28,0.19l-0.18,-0.34l0.21,-1.61l-0.4,-0.43l-0.4,0.19l-0.2,0.53l-0.47,0.08ZM206.69,592.9l0.19,-0.29l0.19,0.3l0.37,0.14l-0.02,0.58l-0.25,0.02l-0.48,-0.74ZM204.84,593.41l0.21,-0.32l0.24,-0.03l-0.06,0.39l0.08,0.1l0.28,0.16l0.34,0.0l0.38,0.28l0.05,0.19l-0.37,0.12l0.06,0.4l-0.09,0.26l-0.26,0.09l0.16,-0.53l-0.3,-0.42l-0.07,-0.28l-0.66,-0.41ZM205.68,592.74l0.12,-0.12l0.05,0.06l-0.04,0.06l-0.14,0.0ZM205.02,590.02l0.06,-0.2l0.28,-0.11l0.2,-0.33l-0.02,-0.41l0.06,-0.13l0.29,1.13l-0.65,-0.16l-0.2,0.2ZM202.23,585.03l0.13,-0.03l0.27,0.18l0.93,0.73l0.44,0.47l0.07,0.52l0.45,0.21l0.13,-0.03l0.22,-0.36l0.14,0.05l0.18,0.49l-0.02,0.28l-0.32,0.23l-0.18,0.94l-0.13,-1.28l-0.2,-0.03l-0.21,-0.45l-0.58,0.05l-0.22,0.89l0.07,0.36l0.17,0.15l-0.24,0.37l0.23,0.32l0.16,0.47l-0.2,0.16l-0.8,-0.56l-0.44,0.1l-0.03,0.21l-0.22,-0.05l0.18,-0.54l0.13,-0.1l-0.06,-0.28l0.1,0.01l0.05,-0.14l-0.04,-0.41l0.48,-0.79l0.11,-0.48l-0.25,-0.42l0.07,-0.26l-0.3,-0.33l-0.26,-0.63ZM204.11,591.3l0.32,-0.24l0.41,0.24l0.3,-0.01l-0.25,0.23l-0.09,0.42l-0.18,0.06l-0.19,-0.01l-0.32,-0.68ZM201.15,595.61l0.39,-0.04l0.71,-0.6l0.17,-0.41l-0.02,-0.35l-0.29,-0.08l0.28,-0.75l0.11,0.2l0.52,0.24l0.23,0.34l0.37,0.27l0.43,1.44l-0.06,0.78l-0.11,0.23l-0.18,-0.04l-0.49,0.47l0.07,0.29l-0.79,0.31l-0.07,0.49l0.07,0.41l0.53,0.0l-0.02,0.12l0.39,0.47l0.21,-0.01l0.23,0.24l0.23,-0.06l0.16,0.27l0.04,0.2l-0.39,-0.09l-0.34,0.45l-0.07,0.31l0.2,0.39l0.69,0.17l-0.31,0.02l-0.39,0.51l-0.49,0.15l0.01,-0.38l-0.25,-0.1l-0.13,-0.29l0.03,-0.93l-0.19,-0.86l-0.55,0.06l-0.09,-0.43l0.17,-0.51l-0.46,-0.42l0.16,-0.04l-0.02,-0.49l-0.3,-0.24l0.21,-0.25l0.29,-0.11l0.37,0.02l0.22,-0.65l-0.53,-0.28l-1.08,0.01l-0.17,-0.19l0.34,-0.25ZM203.12,602.04l0.1,0.62l0.38,0.29l-0.14,0.15l-0.01,0.33l0.19,0.34l-0.25,0.06l-0.09,0.28l-0.22,-0.12l0.22,-0.36l-0.34,-1.17l0.11,-0.07l-0.04,-0.22l0.1,-0.14ZM203.35,597.92l0.0,0.0l-0.0,-0.0l0.0,-0.0ZM202.64,592.33l-0.02,-0.23l-0.18,-0.27l-0.57,-0.24l-0.38,-0.33l0.04,-0.12l0.23,-0.13l0.24,0.13l0.03,0.3l0.41,0.29l0.13,-0.01l0.16,-0.25l0.01,0.41l0.15,0.18l-0.07,0.32l-0.19,-0.05ZM199.97,583.58l0.25,-0.55l0.45,-0.17l-0.03,-0.41l0.33,-0.19l0.26,0.24l0.53,-0.27l-0.12,0.49l-0.21,0.32l-0.34,-0.04l-0.38,0.34l-0.32,-0.04l-0.11,0.23l-0.31,0.06ZM202.63,581.99l-0.01,-0.02l0.01,0.0l0.0,0.02ZM202.51,581.14l-0.13,0.03l-0.03,0.48l-0.5,0.27l-0.01,-0.56l-0.44,-0.14l-0.03,-0.19l0.6,-0.09l0.24,-0.62l-0.38,-0.27l-0.47,-0.02l-0.09,-0.31l0.16,-1.0l0.22,-0.37l0.21,-0.81l0.17,-0.88l-0.05,-0.32l0.42,-0.42l0.65,0.16l0.25,0.34l-0.08,0.37l-0.18,0.13l0.02,0.26l-0.13,0.04l-0.1,0.73l-0.26,0.61l0.01,0.1l0.33,0.12l0.15,1.13l-0.17,0.29l0.4,0.49l-0.13,0.37l-0.51,-0.18l-0.16,0.25ZM203.26,574.86l0.1,0.02l0.05,0.13l-0.14,-0.13l-0.0,-0.02ZM200.56,588.29l-0.08,-0.33l-0.15,-0.02l0.1,-0.05l0.11,0.08l0.09,0.31l-0.07,0.02ZM200.12,587.92l-0.07,-0.01l-0.0,-0.01l0.01,-0.0l0.07,0.02ZM200.37,586.97l-0.16,-0.4l-0.43,-0.09l0.1,-0.17l0.4,0.09l0.16,-0.21l0.28,0.17l0.27,-0.12l0.0,0.58l-0.09,0.12l-0.26,0.22l-0.28,-0.19ZM201.49,592.7l-0.1,-0.02l0.02,-0.11l0.12,-0.03l-0.04,0.17ZM200.65,592.73l-0.02,0.02l-0.16,0.03l0.09,-0.08l0.09,0.04ZM195.39,575.1l0.13,-0.1l0.32,0.81l0.27,0.26l0.58,-0.41l-0.42,-1.39l0.16,0.12l0.49,-0.01l0.11,-0.88l0.2,0.31l0.55,0.02l0.21,-0.32l0.27,-0.08l0.58,0.85l-0.37,0.18l-0.69,-0.15l-0.15,0.28l-0.14,-0.08l-0.56,0.2l0.03,0.46l0.24,0.6l0.52,0.51l0.21,0.54l0.4,0.42l-0.17,0.22l0.09,0.51l0.4,0.15l0.12,0.22l0.3,0.1l0.81,-0.05l-0.16,0.99l-0.21,0.51l-0.26,-0.12l-1.86,-3.21l-0.28,-0.23l-0.62,0.31l0.06,0.43l-0.27,0.19l0.22,0.69l0.2,0.1l-0.12,0.12l-0.06,0.45l0.16,0.09l0.06,0.25l-0.29,0.13l-0.08,-0.6l-0.36,-0.69l0.31,-0.17l-0.14,-0.48l-0.2,-0.19l0.01,-0.36l-0.25,-0.56l0.02,-0.34l-0.25,-0.15l-0.11,-0.46ZM198.57,575.78l0.52,-0.38l0.44,-0.12l0.69,0.39l0.05,0.19l0.37,0.31l0.02,0.18l-0.14,0.22l-0.34,-0.45l-0.61,-0.13l-0.19,0.37l0.01,0.19l0.26,0.64l-0.2,-0.12l-0.87,-1.29ZM197.4,579.96l0.2,0.09l0.33,-0.11l-0.02,0.3l0.46,0.2l0.23,0.33l-0.16,0.05l-0.02,0.25l0.08,0.33l-0.06,0.32l0.21,0.36l-0.12,0.88l0.11,0.42l-0.12,0.06l-0.17,0.59l-0.23,1.9l-0.31,0.87l-0.21,-0.03l-0.2,0.38l-0.03,0.54l-0.52,1.19l-0.15,-0.9l-0.02,-1.09l0.35,-0.03l0.67,-0.56l-0.07,-0.72l-0.19,-0.05l0.01,-0.57l-0.14,-0.2l-0.2,-0.01l-0.2,-0.65l-0.51,-0.01l0.33,-0.22l0.02,-0.34l0.7,-0.09l0.2,-0.29l-0.1,-0.53l-0.52,-0.27l-0.0,-0.1l0.61,-0.26l-0.29,-1.24l-0.54,-0.23l0.25,0.04l0.27,-0.16l0.1,-0.43ZM195.81,580.52l-0.11,0.19l0.0,-0.37l0.11,0.18ZM195.45,581.71l-0.18,0.24l-0.21,-0.02l0.06,-0.09l0.33,-0.12ZM166.9,538.83l0.06,-0.04l0.0,0.06l-0.06,-0.02ZM167.11,538.95l0.14,0.08l0.02,0.11l-0.16,-0.18ZM161.05,540.17l0.02,-0.05l0.3,0.02l0.37,-0.3l0.19,-0.01l-0.35,0.19l-0.13,0.29l-0.39,-0.13ZM135.33,540.66l0.22,0.31l0.6,-0.08l0.07,-0.42l-0.07,-0.17l0.71,0.45l0.28,-0.22l0.24,-0.69l0.19,-0.18l0.34,0.1l-0.17,0.51l0.11,0.35l-0.07,0.25l0.28,0.22l-0.63,0.48l0.06,-0.1l-0.16,-0.67l-0.37,-0.01l-0.74,0.65l-0.1,-0.23l-0.47,0.05l-0.18,0.2l-0.16,-0.35l0.03,-0.21l-0.1,-0.04l0.11,-0.21ZM138.62,541.16l-0.18,-0.04l0.14,-0.08l0.05,0.11ZM125.8,544.87l0.6,-0.15l0.09,0.05l-0.61,0.5l-0.08,-0.39ZM126.2,543.5l0.18,-0.98l-0.32,-0.49l0.3,-0.05l0.26,-0.39l0.25,-0.03l0.28,-0.29l0.43,0.23l0.18,-0.14l0.44,0.12l0.16,-0.28l0.18,-0.04l0.36,0.08l0.39,0.35l-0.66,0.08l-0.0,0.49l0.42,0.33l-0.32,0.72l0.07,0.46l-0.06,0.52l0.34,0.82l0.44,0.2l0.31,-0.36l-0.14,-0.65l0.13,-0.61l0.23,-0.4l0.3,0.14l0.35,-0.29l0.43,0.11l0.52,-0.04l0.21,-0.24l0.14,-0.02l0.24,0.16l0.21,-0.03l0.17,0.33l0.67,-0.25l0.26,-0.42l0.27,0.22l-0.19,0.28l-0.04,0.41l0.26,0.39l0.48,-0.04l0.32,-0.45l0.28,0.19l0.45,-0.19l0.37,0.14l-0.13,0.29l-0.77,0.26l-0.2,0.37l0.19,0.45l-0.09,0.59l0.3,0.21l0.31,0.07l-0.64,0.25l-0.16,-0.22l-0.29,-0.1l-0.07,-0.2l-0.24,-0.18l-0.12,-0.34l-0.95,-0.71l-0.26,0.2l-0.66,0.22l-0.18,0.25l0.16,0.4l-0.16,-0.05l-0.3,-0.39l-0.43,0.12l-0.28,0.54l-0.86,-0.26l-0.1,0.11l-0.26,-0.21l-0.24,-0.04l-0.25,0.09l-0.22,0.45l-0.12,-0.06l0.11,-0.41l-0.2,-0.39l-0.49,-0.11l-0.3,0.07l0.05,-0.16l-0.49,-0.6l-0.82,-0.56l-0.36,-0.07ZM134.27,542.42l-0.01,-0.05l0.17,-0.06l0.0,0.05l-0.16,0.07ZM132.2,545.58l0.25,-0.03l0.37,0.14l0.22,0.62l-0.1,0.08l-0.21,-0.1l0.05,-0.11l-0.29,-0.51l-0.28,-0.08ZM126.26,546.94l-0.15,0.05l-0.01,-0.01l0.06,-0.03l0.11,-0.0ZM131.32,541.84l-0.53,-0.58l0.32,-0.33l0.47,-0.02l0.05,0.41l-0.32,0.53ZM105.81,462.39l-0.11,-0.32l0.35,-0.73l0.36,-0.32l0.68,-0.25l-0.18,0.17l0.11,0.32l-0.14,-0.01l0.06,0.34l0.69,0.55l0.17,0.58l0.33,0.45l0.3,0.27l1.18,0.11l0.29,0.2l0.33,0.06l0.24,0.31l-0.01,0.58l0.1,0.26l-0.21,0.31l-0.27,0.11l-0.22,0.43l0.38,0.42l0.17,0.76l0.36,0.34l-0.18,0.36l-0.0,0.32l0.2,0.38l0.45,0.25l-0.07,0.47l0.15,0.3l-0.4,-0.26l-0.47,-0.12l-1.23,0.14l0.06,-0.93l-0.25,-0.52l-0.02,-0.5l-0.15,-0.17l0.25,-0.53l-0.13,-0.43l-0.01,-0.64l-0.26,-0.89l-0.24,-0.37l-0.03,-0.47l-0.8,-0.64l-0.94,-0.23l-0.15,-0.01l-0.0,0.09l-0.53,-0.08l-0.18,-0.48ZM111.34,469.47l0.34,0.23l0.34,-0.0l0.32,0.49l-0.46,0.25l-0.33,-0.58l-0.24,-0.19l0.02,-0.19ZM99.58,492.96l0.13,-0.45l0.36,0.29l0.67,0.85l0.32,0.21l0.39,-0.01l0.4,-0.28l0.18,0.05l0.18,0.25l0.48,0.04l0.28,-0.1l-0.04,0.35l0.68,0.15l0.17,0.26l-0.1,0.36l0.08,0.18l0.27,0.32l0.48,0.17l0.05,0.26l-0.71,0.6l-0.06,0.37l-0.25,0.08l-0.34,0.96l-0.72,-0.21l-0.37,-0.45l-0.21,0.14l-0.22,-0.05l-0.29,-0.37l-0.41,-0.11l-0.21,-0.4l-0.47,-0.4l-0.43,-1.65l0.1,-0.21l-0.16,-0.32l-0.27,-0.19l0.1,-0.37l-0.07,-0.3ZM95.47,539.48l0.12,-0.24l0.1,0.3l0.17,0.12l-0.0,0.16l-0.2,-0.34l-0.19,-0.01ZM88.44,537.17l0.0,-0.02l0.03,0.0l-0.03,0.01ZM77.94,532.86l0.31,-0.91l0.71,0.25l0.4,-0.03l1.64,-0.75l0.19,0.0l0.11,0.36l0.43,0.42l0.29,0.09l0.42,-0.18l0.53,0.24l0.62,-0.02l0.51,0.26l0.41,0.41l0.02,0.57l-0.53,1.12l-0.34,0.06l-0.25,0.24l-0.3,0.0l-0.28,-0.08l-0.42,-0.6l-1.35,-0.96l-0.46,-0.11l-0.79,0.04l-0.43,0.31l-0.25,0.05l-0.89,-0.43l-0.29,-0.34ZM72.06,531.33l0.05,-0.29l0.35,0.02l0.04,0.43l-0.33,-0.2l-0.06,0.1l-0.05,-0.06ZM62.39,530.55l0.16,-0.01l0.12,0.09l-0.08,0.09l-0.2,-0.16ZM62.89,530.86l0.03,0.06l0.02,0.04l-0.11,-0.1l0.06,0.01ZM67.63,532.06l-0.22,-0.27l-0.39,0.07l0.31,-0.15l0.34,0.02l0.42,-0.6l-0.29,-0.36l-0.27,-0.66l-0.29,-0.25l0.08,-0.32l0.43,-0.1l0.43,0.15l0.4,0.29l0.15,0.23l-0.34,0.42l0.08,0.55l-0.1,0.18l-0.36,0.12l-0.04,0.3l-0.13,-0.03l-0.21,0.41ZM66.48,531.55l-0.31,0.29l-0.03,0.08l-0.08,-0.11l0.27,-0.3l-0.12,-0.26l0.07,-0.05l0.18,-0.01l0.03,0.37ZM68.16,529.58l-0.03,-0.02l-0.0,-0.01l0.04,0.03ZM57.55,529.02l0.25,-0.15l0.2,-0.38l0.16,-0.08l0.64,0.01l0.12,0.21l0.37,0.15l0.09,0.15l-0.15,0.14l-0.22,-0.04l-0.65,0.2l-0.42,-0.23l-0.38,0.0ZM60.36,528.86l0.09,-0.37l0.33,-0.35l0.69,-0.04l0.67,0.28l0.23,0.6l-0.17,0.06l-0.19,0.26l-1.26,-0.24l-0.38,-0.2ZM34.78,515.5l0.04,0.03l-0.03,0.13l-0.02,-0.17l0.01,0.0ZM35.78,515.3l0.08,-0.23l-0.1,-0.29l0.37,0.05l0.06,0.52l-0.34,0.04l-0.08,-0.09ZM28.34,509.91l0.02,-0.07l0.04,-0.02l-0.01,0.1l-0.05,-0.01ZM24.83,509.43l0.48,-0.33l0.11,0.34l-0.02,0.11l-0.3,0.01l-0.27,-0.13ZM23.14,507.45l0.08,0.02l-0.03,0.03l-0.05,-0.05ZM21.49,504.95l-0.1,0.01l0.06,-0.23l0.04,0.13l0.0,0.1ZM21.53,504.44l-0.09,0.14l-0.13,-0.33l0.02,-0.27l0.21,0.2l-0.01,0.26ZM14.7,495.17l0.26,0.08l-0.03,0.22l-0.17,-0.02l-0.07,-0.27ZM1.42,466.35l0.24,-0.09l0.22,-0.4l-0.29,-0.43l0.05,-0.12l0.24,0.2l0.16,0.67l0.46,0.46l-0.28,0.18l0.12,0.42l-0.13,-0.01l-0.15,-0.38l-0.53,-0.19l-0.1,-0.31Z\", \"name\": \"Alaska\"}, \"US-NJ\": {\"path\": \"M802.92,165.5l1.3,-1.54l0.47,-1.56l0.49,-0.62l0.53,-1.44l0.1,-2.03l0.67,-1.34l0.92,-0.72l14.17,3.88l-0.26,5.58l-0.5,0.83l-0.13,-0.29l-0.65,-0.06l-0.34,0.44l-0.55,1.45l-0.44,2.7l0.27,1.53l0.64,0.6l1.06,0.13l1.23,-0.45l2.47,0.24l0.67,1.83l-0.16,4.48l0.29,0.46l-0.54,0.44l0.27,0.8l-0.72,0.75l0.46,0.57l-0.2,0.58l0.48,0.6l-0.14,3.74l0.59,0.51l-0.35,1.34l-1.13,1.82l-0.1,0.93l-1.37,0.1l0.11,1.19l0.64,0.8l-0.82,0.56l-0.17,1.14l1.05,0.74l-0.31,0.29l-0.18,-0.44l-0.54,-0.17l-0.49,0.23l-0.43,1.49l-1.27,0.62l-0.2,0.44l0.46,0.55l0.8,0.05l-0.64,1.25l-0.25,1.48l-0.67,0.65l0.19,0.48l0.4,0.04l-0.88,1.56l0.08,0.93l-1.55,1.66l-0.19,-1.61l0.32,-2.04l-0.12,-0.85l-0.59,-0.8l-0.9,-0.26l-1.11,0.36l-0.82,-0.33l-1.51,0.9l-0.31,-0.69l-1.63,-0.92l-1.0,0.06l-0.66,-0.68l-0.7,0.08l-3.26,-1.95l-0.07,-1.7l-1.02,-0.91l0.47,-0.67l-0.0,-0.87l0.42,-0.83l-0.13,-0.72l0.5,-1.17l1.19,-1.16l2.59,-1.51l0.54,-0.86l-0.38,-0.83l0.49,-0.38l0.46,-1.43l1.23,-1.7l2.51,-2.23l0.18,-0.66l-0.48,-0.81l-4.29,-2.67l-0.76,-1.02l-0.9,0.25l-0.48,-0.32l-1.26,-2.41l-1.62,0.01l-1.03,-3.38l1.01,-1.02l0.35,-2.21l-1.88,-1.86Z\", \"name\": \"New Jersey\"}, \"US-ME\": {\"path\": \"M837.19,56.84l0.85,-1.16l1.45,1.68l0.84,0.03l0.36,-2.12l-0.49,-2.18l1.71,0.33l0.72,-0.43l0.21,-0.53l-0.33,-0.69l-1.18,-0.45l-0.45,-0.61l0.17,-1.43l0.83,-2.04l2.05,-2.28l-0.01,-0.99l-0.53,-0.93l1.0,-1.66l0.36,-1.52l-0.23,-0.91l-1.02,-0.34l-0.09,-1.42l-0.41,-0.43l0.54,-0.97l-0.05,-0.63l-1.02,-1.25l0.1,-1.74l0.36,-0.64l-0.17,-0.98l1.19,-1.95l-1.06,-6.19l5.24,-19.09l2.24,-0.25l1.2,3.2l0.56,0.42l2.56,0.53l1.8,-1.76l1.66,-0.85l1.21,-1.74l1.25,-0.13l0.64,-0.48l0.22,-1.45l0.42,-0.3l1.36,0.03l3.71,1.38l1.16,0.96l2.39,1.03l8.78,22.69l0.65,0.64l-0.24,0.96l0.73,1.01l-0.08,1.41l0.56,1.29l0.68,0.46l1.05,-0.13l1.13,0.56l0.98,0.09l2.46,-0.57l0.41,0.94l-0.57,1.43l1.72,1.84l0.32,2.68l2.75,1.63l0.98,-0.12l0.46,-0.75l-0.07,-0.5l1.22,0.23l3.0,2.75l0.04,0.47l-0.52,-0.13l-0.38,0.41l0.19,0.77l-0.77,-0.14l-0.34,0.4l0.16,0.63l1.87,1.58l0.15,-0.88l0.38,-0.17l0.81,0.31l0.26,-0.83l0.33,0.4l-0.3,0.85l-0.52,0.19l-1.16,3.25l-0.63,-0.03l-0.31,0.44l-0.57,-1.04l-0.72,0.04l-0.3,0.51l-0.56,0.07l-0.02,0.49l0.59,0.84l-0.91,-0.44l-0.31,0.63l0.27,0.51l-1.2,-0.26l-0.36,0.3l-0.36,0.78l0.08,0.45l0.44,0.08l0.09,1.2l-0.38,-0.57l-0.54,-0.05l-0.39,0.46l-0.19,1.09l-0.5,-1.52l-1.13,0.03l-0.67,0.76l-0.34,1.48l0.6,0.61l-0.82,0.64l-0.7,-0.45l-0.71,1.05l0.11,0.64l0.99,0.6l-0.35,0.22l-0.09,0.82l-0.46,-0.2l-0.87,-1.8l-1.04,-0.44l-0.38,0.22l-0.45,-0.41l-0.56,0.64l-1.25,-0.17l-0.25,0.86l0.78,0.38l0.01,0.36l-0.52,-0.05l-0.55,0.41l-0.08,0.69l-0.51,-1.01l-1.17,-0.0l-0.15,0.64l0.53,0.86l-1.42,0.98l0.85,1.09l0.1,1.05l0.54,0.64l-0.97,-0.39l-0.96,0.23l-1.2,-0.4l-0.19,-0.9l0.74,-0.29l-0.09,-0.55l-0.43,-0.49l-0.67,-0.11l-0.3,0.33l-0.27,-2.35l-0.38,-0.21l-1.1,0.28l0.07,1.95l-1.82,1.94l0.03,0.5l1.27,1.44l-0.63,0.96l-0.14,3.85l0.79,1.39l-0.56,0.54l0.01,0.63l-0.5,0.56l-0.8,-0.18l-0.44,0.93l-0.62,-0.05l-0.42,-1.14l-0.73,-0.2l-0.5,1.03l0.12,0.68l-0.44,0.6l0.15,2.4l-0.97,-0.99l0.12,-1.27l-0.25,-0.59l-0.81,0.3l-0.06,2.0l-0.44,-0.24l0.13,-1.54l-0.48,-0.39l-0.67,0.49l-0.73,3.04l-0.77,-1.81l0.05,-1.5l-0.76,0.06l-1.03,2.77l0.52,0.54l0.72,-0.27l0.94,2.01l-0.29,-0.58l-0.52,-0.22l-0.65,0.31l-0.06,0.64l-1.38,-0.08l-2.12,3.19l-0.51,1.87l0.3,0.59l-0.67,0.66l0.51,0.42l0.91,-0.23l0.37,0.91l-0.76,0.31l-0.2,0.4l-0.41,-0.04l-0.5,0.57l-0.13,1.03l0.68,1.35l-0.07,0.67l-0.77,1.3l-0.93,0.62l-0.39,1.07l-0.09,1.28l0.44,0.88l-0.37,2.8l-0.8,-0.32l-0.4,0.6l-1.03,-0.74l-0.59,-1.83l-0.94,-0.36l-2.38,-1.94l-0.8,-3.42l-13.69,-35.19ZM864.39,80.9l0.09,0.26l-0.08,0.23l0.03,-0.28l-0.04,-0.2ZM865.81,81.1l0.47,0.69l-0.04,0.47l-0.32,-0.24l-0.11,-0.92ZM868.11,77.94l0.43,0.81l-0.16,0.14l-0.42,-0.18l0.15,-0.77ZM877.3,64.42l-0.14,0.2l-0.03,-0.23l0.17,0.03ZM873.48,74.78l0.01,0.02l-0.02,0.03l0.01,-0.05ZM882.98,63.24l0.02,-1.16l0.4,-0.66l-0.18,-0.44l0.4,-0.5l0.62,-0.12l1.56,1.32l-0.48,0.65l-1.08,0.06l-0.26,0.44l0.59,1.29l-0.99,-0.16l-0.15,-0.56l-0.44,-0.16ZM879.6,65.86l0.62,0.39l-0.35,0.3l0.16,0.95l-0.4,-0.62l0.18,-0.53l-0.21,-0.49ZM878.42,70.38l0.09,-0.01l0.47,-0.09l-0.24,0.45l-0.32,-0.36Z\", \"name\": \"Maine\"}, \"US-MD\": {\"path\": \"M742.19,220.07l-2.1,-9.88l19.86,-4.71l-0.65,1.27l-0.95,0.09l-1.54,0.82l0.16,0.69l-0.41,0.49l0.23,0.76l-1.76,0.52l-1.48,0.05l-1.12,-0.36l0.2,-0.35l-0.3,-0.49l-1.11,-0.29l-0.46,1.78l-1.61,2.82l-1.38,-0.37l-1.03,0.63l-0.4,1.24l-1.59,1.92l-0.36,1.03l-0.88,0.46l-1.3,1.86ZM762.24,204.93l37.01,-9.59l8.42,25.88l0.48,0.25l8.46,-2.33l0.26,0.69l0.6,0.02l0.39,0.93l0.52,-0.06l-0.37,1.93l-0.13,-0.26l-0.47,0.07l-0.72,0.86l-0.15,2.66l-0.6,0.19l-0.35,0.7l-0.01,1.45l-3.64,1.55l-0.36,0.75l-2.25,0.46l-0.56,0.65l-0.31,-1.05l0.5,-0.31l0.86,-1.83l-0.41,-0.5l-0.43,0.12l0.06,-0.48l-0.44,-0.41l-2.29,0.66l0.3,-0.59l1.15,-0.84l-0.18,-0.69l-1.36,-0.15l0.37,-2.2l-0.19,-1.01l-0.91,0.17l-0.52,1.75l-0.35,-0.67l-0.61,-0.06l-0.44,0.47l-0.49,1.38l0.54,1.0l-2.89,-2.07l-0.43,-0.18l-0.6,0.37l-0.74,-0.74l0.36,-0.82l-0.04,-0.83l0.76,-0.6l-0.08,-1.33l2.08,0.06l0.88,-0.46l0.36,-0.9l-0.33,-1.4l-0.43,-0.04l-0.52,1.3l-0.39,0.1l-1.05,-0.69l0.05,-0.39l-0.52,-0.27l-0.55,0.23l-0.23,-0.66l-0.73,0.1l-0.12,0.29l0.07,-0.72l1.14,-0.39l0.21,-1.04l-0.54,-0.54l-0.57,0.71l-0.2,-0.51l0.87,-0.87l-0.26,-0.65l-0.54,-0.07l-0.09,-0.47l-0.42,-0.26l-0.35,0.16l-0.65,-0.51l0.87,-0.8l-0.24,-1.01l0.92,-2.36l-0.18,-0.43l-0.46,0.02l-0.66,0.67l-0.56,-0.16l-0.6,0.96l-0.75,-0.59l0.46,-3.53l0.59,-0.52l0.06,-0.6l4.22,-1.26l0.11,-0.71l-0.51,-0.28l-2.37,0.46l0.75,-1.25l1.43,-0.07l0.35,-0.5l-0.99,-0.65l0.42,-1.88l-0.63,-0.32l-1.18,1.81l0.04,-1.46l-0.6,-0.34l-0.67,1.1l-1.62,0.68l-0.3,1.63l0.39,0.53l0.64,0.11l-1.44,1.91l-0.21,-1.61l-0.64,-0.41l-0.61,0.72l0.08,1.44l-0.85,-0.28l-1.15,0.65l0.03,0.71l1.01,0.24l-0.36,0.53l-0.83,0.23l-0.05,0.34l-0.45,-0.03l-0.34,0.65l1.15,1.16l-1.88,-0.63l-1.21,0.6l0.17,0.69l1.57,0.55l0.92,0.9l0.72,-0.13l0.56,0.72l-0.98,-0.05l-1.14,1.36l0.33,0.77l1.57,0.87l-0.67,0.13l-0.21,0.42l0.79,1.06l-0.3,0.56l0.33,0.94l0.57,0.45l-0.5,1.07l1.0,1.22l0.99,3.47l0.62,0.82l2.08,1.57l0.42,0.78l-0.58,0.18l-0.65,-0.73l-1.46,-0.28l-1.65,-1.22l-1.35,-3.09l-0.74,-0.66l-0.3,0.37l0.12,0.7l1.3,3.47l1.16,1.27l2.06,0.69l1.04,1.08l0.63,0.13l0.91,-0.36l-0.02,1.09l1.67,1.5l0.11,1.08l-0.9,-0.33l-0.52,-1.26l-0.64,-0.44l-0.45,0.05l-0.12,0.44l0.27,0.77l-0.68,0.1l-0.66,-0.8l-1.41,-0.64l-2.39,0.66l-0.7,-0.65l-0.72,-1.46l-1.27,-0.68l-0.46,0.15l0.01,0.48l1.15,1.78l-0.23,-0.07l-1.63,-1.15l-1.68,-2.23l-0.45,-0.01l-0.37,1.42l-0.33,-0.78l-0.74,0.2l-0.21,0.27l0.33,0.72l-0.1,0.54l-0.76,0.54l-0.95,-1.45l0.06,-1.65l0.76,-0.6l-0.13,-0.81l0.71,-0.39l0.2,-1.59l1.07,-1.03l-0.01,-1.02l-0.47,-0.84l1.25,-2.17l-0.14,-0.54l-2.73,-1.61l-0.55,0.14l-0.63,1.08l-1.87,-0.23l-0.53,-0.81l-1.12,-0.49l-2.42,0.1l-1.25,-0.87l0.6,-1.34l-0.41,-0.96l-1.19,-0.28l-0.89,-0.63l-2.7,0.11l-0.36,-0.22l-0.12,-1.24l-1.04,-0.58l0.09,-1.18l-0.51,-0.28l-0.48,0.2l-0.24,-0.62l-0.5,-0.13l0.24,-0.81l-0.46,-0.57l-0.69,-0.11l-1.81,0.69l-2.23,-1.21ZM791.61,211.89l1.15,0.15l0.29,0.15l-0.51,0.29l-0.92,-0.6ZM804.73,225.05l-0.02,0.32l-0.21,-0.13l0.23,-0.19ZM808.72,228.4l-0.14,0.28l-0.13,0.07l0.01,-0.23l0.25,-0.12ZM799.19,220.15l-0.05,0.01l-0.02,0.01l0.05,-0.03l0.02,0.01ZM798.85,220.3l-0.23,0.54l-0.17,0.12l0.14,-0.59l0.27,-0.07ZM797.54,216.38l-0.28,0.3l-0.72,-0.26l0.02,-0.31l0.26,-0.36l0.72,0.64ZM796.15,212.56l-0.33,0.77l-0.6,0.24l0.01,-1.45l0.92,0.45ZM803.88,228.23l0.1,-0.1l0.11,0.06l-0.21,0.03Z\", \"name\": \"Maryland\"}, \"US-AR\": {\"path\": \"M499.92,377.33l-1.49,-37.58l-4.53,-23.63l37.83,-2.71l39.17,-3.76l0.8,1.57l1.02,0.69l0.11,1.73l-0.77,0.56l-0.22,0.92l-1.42,0.93l-0.29,1.03l-0.83,0.54l-1.19,2.56l0.02,0.7l0.53,0.25l10.98,-1.52l0.87,0.91l-1.18,0.36l-0.52,0.95l0.25,0.49l0.84,0.39l-3.61,2.69l0.02,0.84l0.83,1.01l-0.59,1.14l0.62,0.95l-1.42,0.74l-0.11,1.43l-1.45,2.07l0.12,1.62l0.92,3.05l-0.14,0.27l-1.09,-0.01l-0.32,0.26l-0.5,1.71l-1.52,0.95l-0.04,0.51l0.8,0.89l0.05,0.63l-1.11,1.2l-2.03,1.13l-0.21,0.62l0.43,0.98l-0.19,0.26l-1.24,0.04l-0.42,0.67l-0.32,1.87l0.47,1.55l0.03,3.04l-1.28,1.09l-1.55,0.14l0.23,1.47l-0.21,0.48l-0.93,0.25l-0.59,1.75l-1.49,1.19l-0.02,0.93l1.4,0.75l-0.02,0.68l-1.24,0.3l-2.24,1.23l0.04,0.67l0.99,0.8l-0.45,1.13l0.54,1.36l-1.09,0.61l-1.9,2.56l0.52,0.7l1.01,0.48l0.01,0.56l-0.99,0.29l-0.42,0.64l0.51,0.83l1.64,0.99l0.07,1.75l-0.59,0.98l-0.09,0.84l0.29,0.4l1.06,0.38l0.51,2.15l-1.09,1.01l0.07,2.1l-25.98,2.35l-25.74,1.93l-0.86,-11.44l-1.19,-0.85l-0.9,0.17l-0.83,-0.35l-0.93,0.39l-1.23,-0.33l-0.56,0.72l-0.47,0.01l-0.49,-0.48l-0.83,-0.14l-0.63,-0.99Z\", \"name\": \"Arkansas\"}, \"US-MA\": {\"path\": \"M878.75,135.13l1.03,-0.2l0.84,-1.14l0.45,0.55l-1.05,0.65l-1.28,0.13ZM832.87,132.8l-0.47,-0.28l-10.39,2.68l-0.25,-0.17l-0.41,-14.64l29.93,-8.29l1.51,-1.81l0.33,-1.48l0.94,-0.36l0.6,-1.04l1.29,-1.09l1.23,-0.1l-0.43,1.05l1.36,0.52l-0.16,0.61l0.45,0.81l1.0,0.34l-0.06,0.32l0.4,0.27l1.31,0.16l-0.15,0.55l-2.5,1.89l-0.03,1.07l0.45,0.15l-1.09,1.41l0.24,1.07l-1.0,0.97l0.6,1.39l1.4,0.42l0.51,0.61l1.36,-0.59l0.32,-0.6l1.2,0.07l0.8,0.45l0.24,0.67l1.8,1.32l-0.06,1.23l-0.36,0.3l0.12,0.61l1.59,0.78l1.19,-0.16l0.69,1.17l0.23,1.13l0.9,0.66l1.33,0.38l1.48,-0.15l0.43,0.36l1.05,-0.25l3.32,-2.79l0.38,-0.7l0.54,0.01l0.58,1.82l-3.31,1.56l-0.93,0.83l-1.89,0.89l-0.51,-0.11l-0.44,0.45l-0.37,1.42l-1.93,1.29l-0.84,-2.48l0.1,-1.34l-0.55,-0.29l-0.49,0.4l-0.93,-0.09l-0.3,0.51l0.25,0.9l-0.25,0.79l-0.4,0.07l-0.62,1.1l-0.61,-0.19l-0.49,0.49l0.23,1.83l-0.89,0.88l-0.64,-0.78l-0.47,0.02l-0.1,0.55l-0.26,0.04l-0.72,-1.98l-1.02,-0.34l0.42,-2.47l-0.21,-0.39l-0.77,0.41l-0.28,1.46l-0.7,0.21l-1.41,-0.61l-0.8,-2.08l-0.8,-0.21l-0.8,-2.11l-0.49,-0.23l-6.12,2.09l-0.3,-0.14l-14.81,4.4l-0.27,0.51ZM861.69,109.95l-0.02,-0.36l-0.15,-0.47l0.51,0.21l-0.35,0.62ZM877.31,122.26l-0.42,-0.64l0.06,-0.05l0.45,0.65l-0.09,0.05ZM876.38,120.74l-0.87,-0.1l-0.95,-1.38l1.45,0.96l0.36,0.52ZM872.43,119.06l-0.05,0.24l-0.32,-0.18l0.1,0.01l0.28,-0.07ZM872.93,134.59l0.01,-0.02l0.01,0.03l-0.02,-0.01ZM868.26,137.09l0.76,-0.56l0.27,-1.16l0.84,-1.19l0.17,0.25l0.46,-0.12l0.35,0.51l0.71,-0.02l0.18,0.36l-2.1,0.76l-1.33,1.32l-0.32,-0.15Z\", \"name\": \"Massachusetts\"}, \"US-AL\": {\"path\": \"M610.27,337.63l25.27,-3.08l19.48,-2.89l14.31,42.76l0.8,1.38l0.22,1.04l1.18,1.57l0.61,1.86l2.26,2.46l0.94,1.78l-0.1,2.12l1.81,1.11l-0.17,0.73l-0.64,0.11l-0.15,0.7l-0.98,0.85l-0.21,2.28l0.26,1.47l-0.76,2.29l-0.13,1.83l1.13,2.92l1.22,1.5l0.54,1.59l-0.05,5.02l-0.25,0.81l0.5,2.03l1.36,1.15l1.16,2.06l-47.9,7.28l-0.41,0.61l-0.06,3.0l2.67,2.74l2.02,0.95l-0.33,2.71l0.57,1.6l0.44,0.39l-0.94,1.7l-1.24,1.01l-1.14,-0.75l-0.33,0.49l0.67,1.46l-2.84,1.07l0.29,-0.64l-0.45,-0.86l-1.0,-0.76l-0.1,-1.11l-0.57,-0.22l-0.53,0.61l-0.32,-0.1l-0.9,-1.53l0.4,-1.68l-0.99,-2.21l-0.47,-0.44l-0.86,-0.2l-0.31,-0.89l-0.56,-0.17l-0.36,0.61l0.15,0.35l-0.76,3.11l0.01,5.1l-0.6,0.0l-0.25,-0.71l-2.24,-0.43l-1.66,0.33l-5.65,-31.94l-1.25,-65.96l-0.02,-0.37l-1.08,-0.62l-0.69,-1.0Z\", \"name\": \"Alabama\"}, \"US-MO\": {\"path\": \"M469.55,228.14l24.77,-0.8l18.99,-1.48l22.16,-2.65l0.42,0.34l0.4,0.89l2.44,1.61l0.29,0.73l1.21,0.85l-0.5,1.34l-0.09,3.17l0.79,3.59l0.96,1.41l0.03,1.56l1.11,1.35l0.47,1.53l4.99,4.01l1.07,1.66l4.95,3.23l0.7,1.12l0.28,1.59l0.51,0.8l-0.17,0.68l0.48,1.78l0.98,1.6l0.77,0.72l1.03,0.15l0.83,-0.56l0.83,-1.39l0.58,-0.19l2.42,0.59l1.69,0.74l0.84,0.75l-0.96,1.92l0.27,2.24l-2.36,6.77l0.02,1.01l0.71,1.89l4.7,3.96l2.0,1.02l1.46,0.08l1.67,1.27l1.92,0.77l1.52,2.07l2.05,0.8l0.43,2.91l1.74,2.84l-1.09,1.92l0.19,1.37l0.75,0.32l2.34,4.17l1.94,0.89l0.54,-0.32l0.0,-0.64l0.89,1.08l1.08,-0.08l0.15,1.81l-0.37,1.06l0.54,1.56l-1.06,3.81l-0.52,0.08l-1.38,-1.11l-0.65,0.13l-0.78,3.3l-0.52,0.73l0.13,-1.04l-0.56,-1.07l-0.96,-0.19l-0.74,0.63l0.02,1.04l0.53,0.64l-0.04,0.69l0.59,1.31l-0.2,0.39l-1.2,0.39l-0.17,0.42l0.16,0.55l0.84,0.81l-1.69,0.37l-0.13,0.62l1.54,1.93l-0.89,0.74l-0.63,2.1l-10.65,1.47l1.05,-2.24l0.87,-0.61l0.18,-0.86l1.44,-0.95l0.25,-0.95l0.63,-0.36l0.29,-0.59l-0.23,-2.25l-1.06,-0.74l-0.2,-0.75l-1.09,-1.16l-39.39,3.79l-37.87,2.71l-3.31,-57.27l-1.04,-0.62l-1.2,-0.02l-1.52,-0.71l-0.2,-0.92l-0.77,-0.58l-0.34,-0.69l-0.37,-1.52l-0.56,-0.09l-0.3,-0.55l-1.13,-0.65l-1.41,-1.8l0.73,-0.5l0.09,-1.22l1.12,-1.25l0.09,-0.78l1.02,0.16l0.56,-0.42l-0.21,-2.21l-1.02,-0.72l-0.33,-1.09l-1.17,-0.0l-1.31,0.95l-0.82,-0.69l-0.73,-0.16l-2.69,-2.31l-1.05,-0.27l0.13,-1.58l-1.32,-1.69l0.09,-1.0l-0.37,-0.36l-1.02,-0.17l-0.59,-0.84l-0.83,-0.26l0.07,-0.52l-1.24,-2.84l-0.0,-0.72l-0.4,-0.49l-0.85,-0.28l-0.05,-0.52ZM585.14,295.52l-0.11,-0.1l-0.07,-0.14l0.11,-0.01l0.06,0.25Z\", \"name\": \"Missouri\"}, \"US-MN\": {\"path\": \"M439.91,45.57l26.73,-1.1l0.34,1.49l1.28,0.86l1.79,-0.51l1.04,-1.46l0.77,-0.32l2.13,2.24l1.71,0.28l0.31,1.23l1.83,1.42l1.79,0.49l2.63,-0.42l0.39,0.87l0.67,0.4l5.1,0.01l0.38,0.24l0.55,1.61l0.72,0.62l4.26,-0.8l0.77,-0.66l0.07,-0.71l2.42,-0.81l3.96,-0.03l1.42,0.71l3.38,0.67l-1.0,0.81l0.0,0.83l0.51,0.45l0.67,0.09l2.23,-0.16l0.53,2.12l1.59,2.33l0.72,0.05l1.02,-0.8l-0.05,-1.76l2.65,-0.48l1.44,2.2l2.01,0.8l1.53,0.18l0.55,0.58l-0.03,0.84l0.59,0.36l1.32,0.06l-0.05,0.37l0.43,0.47l1.43,-0.2l1.12,0.22l2.21,-0.86l2.76,-2.6l2.47,-1.57l1.26,2.56l0.96,0.52l2.22,-0.68l0.87,0.36l5.96,-1.34l0.56,0.18l1.33,1.66l1.24,0.6l0.62,-0.01l1.6,-0.84l1.38,0.06l-0.96,1.07l-4.66,3.12l-6.32,2.87l-3.66,2.52l-2.13,2.52l-0.95,0.59l-6.57,8.77l-0.94,0.62l-1.07,1.58l-1.95,1.99l-4.15,3.59l-0.85,1.8l-0.55,0.44l-0.14,0.96l-0.77,-0.01l-0.46,0.51l1.03,12.27l-0.79,1.21l-1.04,0.08l-0.52,0.82l-0.83,0.16l-0.61,0.83l-2.06,1.2l-0.93,1.87l0.07,0.72l-1.69,2.4l-0.0,2.07l0.38,0.91l2.15,0.38l1.43,2.48l-0.51,1.92l-0.71,1.26l-0.04,2.12l0.46,1.32l-0.71,1.23l0.92,3.13l-0.49,4.07l3.96,3.01l3.02,0.38l1.9,2.23l2.88,0.48l2.46,1.91l2.4,3.56l2.64,1.78l2.09,0.08l1.07,0.7l0.88,0.09l0.82,1.35l1.27,0.83l0.28,2.01l0.68,1.29l0.41,4.78l-40.67,3.35l-40.68,2.18l-1.52,-38.8l-0.7,-1.27l-0.83,-0.78l-2.57,-0.78l-0.95,-1.91l-1.46,-1.79l0.21,-0.68l2.82,-2.35l0.96,-2.13l0.39,-2.45l-0.36,-1.59l0.23,-1.59l-0.19,-1.8l-0.51,-1.03l-0.19,-2.34l-1.82,-2.6l-0.47,-1.14l-0.22,-2.18l-0.66,-0.98l0.15,-1.67l-0.36,-1.54l0.52,-2.71l-1.08,-1.86l-0.51,-8.4l-0.42,-0.8l0.05,-3.96l-1.58,-4.0l-0.53,-0.66l-0.41,-1.38l0.05,-1.2l-0.48,-0.54l-1.37,-3.82l-0.01,-3.27l-0.47,-2.0l0.27,-1.14l-0.57,-2.36l0.73,-2.61l-2.07,-7.05ZM469.41,36.19l1.21,0.47l0.98,-0.2l0.34,0.47l-0.04,1.77l-1.77,1.15l-0.15,-0.48l-0.41,-0.14l-0.17,-3.04Z\", \"name\": \"Minnesota\"}, \"US-CA\": {\"path\": \"M3.0,175.65l0.8,-1.21l0.46,0.47l0.59,-0.07l0.53,-1.15l0.8,-0.83l1.3,-0.23l0.57,-0.51l-0.15,-0.72l-0.92,-0.33l1.55,-2.72l-0.29,-1.56l0.15,-0.86l2.07,-3.22l1.34,-2.97l0.37,-2.09l-0.27,-1.0l0.19,-3.07l-1.34,-2.15l1.19,-1.34l0.7,-2.48l32.71,8.51l32.57,7.68l-14.08,63.61l25.33,34.47l36.48,50.79l13.27,17.63l-0.21,2.7l0.73,0.93l0.21,1.7l0.86,0.63l0.8,2.54l-0.08,0.9l0.63,1.44l-0.17,1.35l3.8,3.82l0.01,0.49l-1.96,1.49l-3.13,1.22l-1.21,1.96l-1.73,1.11l-0.34,0.81l0.37,1.02l-0.52,0.51l-0.1,0.89l0.07,2.27l-0.61,0.7l-0.66,2.41l-2.04,2.43l-1.61,0.12l-0.43,0.51l0.33,0.88l-0.6,1.33l0.53,1.11l-0.02,1.18l-0.79,2.66l0.57,1.01l2.75,1.15l0.33,0.83l-0.2,2.38l-1.19,0.76l-0.43,1.36l-2.29,-0.63l-1.26,0.59l-43.59,-3.74l0.18,-1.14l0.67,-0.5l-0.17,-1.06l-1.16,-1.39l-1.04,-0.16l0.24,-1.19l-0.27,-1.07l0.79,-1.32l-0.28,-4.22l-0.59,-2.29l-1.91,-4.06l-3.55,-4.08l-1.29,-1.97l-2.41,-2.12l-2.03,-3.0l-2.22,-0.91l-0.94,0.29l-0.4,0.95l-0.62,-0.74l-0.88,-0.23l-0.14,-0.3l0.62,-0.74l0.18,-1.56l-0.43,-2.04l-1.0,-1.95l-0.99,-0.74l-4.45,-0.24l-3.33,-1.83l-1.36,-1.26l-0.7,-0.13l-1.02,-1.19l-0.43,-2.58l-0.97,-0.48l-1.67,-2.31l-2.19,-1.74l-1.24,-0.42l-1.67,0.34l-1.14,-1.02l-1.25,0.01l-2.48,-1.85l-1.06,-0.0l-1.49,-0.7l-4.93,-0.58l-1.11,-2.34l-1.35,-0.65l1.28,-2.52l-0.24,-1.36l0.76,-1.95l-0.63,-1.34l1.29,-2.4l0.34,-2.41l-0.99,-1.24l-1.26,-0.24l-1.4,-1.29l0.42,-1.58l0.8,-0.07l0.26,-0.45l-0.46,-2.18l-0.65,-0.77l-1.47,-0.85l-1.76,-3.95l-1.82,-1.26l-0.34,-2.72l-1.6,-2.57l0.07,-1.37l-0.33,-1.25l-1.15,-0.95l-0.73,-2.92l-2.4,-2.69l-0.54,-1.25l0.01,-4.55l0.6,-0.57l-0.58,-1.13l0.51,-0.57l0.53,0.61l0.77,-0.01l0.85,-0.79l0.57,-1.3l0.8,0.05l0.21,-0.88l-0.42,-0.27l0.48,-1.17l-1.2,-3.64l-0.62,-0.48l-1.06,0.07l-1.93,-0.53l-1.04,-1.06l-1.87,-3.2l-0.78,-2.26l0.87,-2.34l0.1,-1.1l-0.26,-2.36l-0.31,-0.64l-0.54,-0.25l0.25,-1.16l0.7,-1.05l0.26,-2.66l0.47,-0.62l0.88,0.14l0.18,0.92l-0.72,2.09l0.05,1.14l1.18,1.32l0.55,0.11l0.58,1.27l1.16,0.79l0.4,1.0l0.89,0.41l0.83,-0.19l-0.2,-1.44l-0.64,-0.43l-0.17,-0.58l-0.22,-3.52l-0.54,-0.7l0.24,-0.68l-1.48,-1.06l0.51,-1.05l0.1,-1.05l-1.19,-1.57l0.78,-0.71l0.79,0.07l1.25,-0.7l1.25,1.02l1.87,-0.29l5.55,2.45l0.61,-0.08l0.65,-1.35l0.69,-0.03l1.91,2.53l0.25,0.18l0.63,-0.23l0.03,-0.38l-0.39,-0.93l-1.56,-1.88l-1.65,-0.34l0.27,-0.6l-0.28,-0.54l-0.48,0.08l-1.06,0.97l-1.84,-0.25l-0.44,0.27l-0.14,-0.5l-1.04,-0.41l0.24,-1.03l-0.84,-0.47l-1.0,0.26l-0.61,0.82l-1.1,0.37l-1.35,-0.9l-0.39,-0.87l-1.51,-1.44l-0.58,0.03l-0.64,0.59l-0.92,-0.14l-0.49,0.36l-0.35,1.85l0.2,0.76l-0.77,1.34l0.35,0.63l-0.46,0.58l-0.04,0.67l-2.15,-2.88l-0.44,-0.15l-0.25,0.32l-0.73,-1.0l-0.21,-1.02l-1.19,-1.17l-0.39,-1.04l-0.61,-0.19l0.66,-1.45l0.11,0.95l0.76,1.48l0.44,0.25l0.34,-0.38l-1.43,-5.16l-1.08,-1.41l-0.3,-2.65l-2.49,-2.87l-1.77,-4.45l-3.02,-5.5l1.11,-1.65l0.27,-1.94l-0.45,-2.09l-0.12,-3.56l1.36,-2.85l0.7,-0.72l-0.06,-1.52l0.43,-1.51l-0.4,-1.62l0.13,-1.93l-1.39,-4.03l-0.97,-1.15l0.06,-0.78l-0.41,-1.18l-2.88,-4.02l0.52,-1.32l-0.19,-2.65l2.25,-3.36ZM31.19,240.19l-0.05,0.09l-0.27,0.04l-0.01,-0.0l0.33,-0.12ZM63.48,350.44l0.26,0.12l0.17,0.16l-0.29,-0.17l-0.13,-0.11ZM65.06,351.68l1.33,0.85l0.74,1.72l-0.89,-0.66l-1.14,0.01l-0.04,-1.92ZM61.77,361.76l1.36,2.09l0.57,0.53l-0.46,0.06l-0.83,-0.8l-0.64,-1.88ZM42.7,332.51l0.87,0.73l1.38,0.37l1.33,1.0l-2.81,-0.22l-0.71,-0.58l0.24,-0.65l-0.31,-0.66ZM47.07,334.62l0.93,-0.47l0.32,0.35l-0.37,0.13l-0.87,-0.01ZM45.1,350.98l0.29,-0.06l0.95,0.92l-0.61,-0.17l-0.63,-0.69ZM36.71,332.66l2.58,0.19l0.2,0.74l0.59,0.45l-1.22,0.61l-1.17,-0.11l-0.5,-0.44l-0.48,-1.42ZM34.08,330.97l0.05,-0.02l0.05,0.06l-0.01,-0.0l-0.09,-0.04Z\", \"name\": \"California\"}, \"US-IA\": {\"path\": \"M453.66,165.63l42.88,-2.29l40.6,-3.34l0.97,2.5l2.0,0.98l0.08,0.59l-0.89,1.79l-0.15,1.04l0.92,5.04l0.93,1.24l0.39,1.73l1.47,1.7l4.96,0.81l1.27,2.0l-0.3,1.02l0.29,0.66l3.63,2.32l0.86,2.38l3.86,2.26l0.62,1.65l-0.3,4.16l-1.64,1.97l-0.49,1.92l0.14,1.27l-1.25,1.35l-2.52,0.97l-0.89,1.17l-0.55,0.25l-4.57,0.84l-0.89,0.72l-0.6,1.69l-0.15,2.53l0.4,1.06l2.02,1.44l0.55,2.61l-1.86,3.22l-0.21,2.21l-0.52,1.4l-2.89,1.39l-1.02,1.02l-0.2,0.99l0.72,0.85l0.21,2.11l-0.58,0.24l-1.35,-0.81l-0.31,-0.75l-1.29,-0.8l-0.29,-0.5l-0.89,-0.35l-0.3,-0.8l-0.95,-0.67l-22.35,2.69l-15.16,1.21l-7.61,0.53l-20.83,0.54l-0.22,-1.04l-1.3,-0.72l-0.33,-0.66l0.57,-1.13l-0.21,-0.95l0.21,-1.37l-0.36,-2.16l-0.6,-0.71l0.06,-3.6l-1.05,-0.49l0.05,-0.88l0.71,-1.01l-0.05,-0.44l-1.31,-0.55l0.33,-2.51l-0.41,-0.45l-0.89,-0.16l0.23,-0.78l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.77l0.5,-2.33l-0.2,-0.67l-1.37,-1.69l-0.08,-1.89l-1.79,-1.52l-0.36,-1.72l-1.09,-0.93l0.03,-2.15l-1.11,-1.85l0.21,-1.67l-0.27,-1.08l-1.38,-0.66l-0.88,-2.14l0.04,-0.63l-1.81,-1.79l0.56,-1.58l0.54,-0.47l0.72,-2.66l0.0,-1.67l0.54,-0.68l0.21,-1.18l-0.51,-2.22l-1.33,-0.28l-0.05,-0.72l0.45,-0.56l-0.0,-1.7l-0.96,-1.41l-0.05,-0.86Z\", \"name\": \"Iowa\"}, \"US-MI\": {\"path\": \"M613.3,123.04l1.01,-0.11l0.46,-0.67l-0.39,-3.2l1.08,-0.12l0.66,-1.43l1.19,0.47l0.65,-0.34l0.74,-2.59l0.82,-1.21l0.55,-1.68l0.55,-0.18l-0.57,0.88l0.61,1.64l-0.7,1.8l0.71,0.42l-0.46,2.61l0.89,1.41l0.73,-0.06l0.52,0.55l0.65,-0.25l0.87,-2.26l0.64,-3.51l-0.09,-2.06l-0.78,-3.41l0.58,-1.02l2.12,-1.66l2.74,-0.56l0.98,-0.64l0.28,-0.64l-0.26,-0.54l-1.76,-0.09l-0.97,-0.85l-0.53,-1.98l1.83,-2.99l-0.11,-0.73l1.72,-0.24l0.74,-0.95l4.18,1.97l0.83,0.12l1.98,-0.42l1.38,0.38l0.99,0.79l1.19,1.76l2.74,-0.21l1.71,1.0l1.92,0.07l0.81,0.63l1.16,0.23l1.44,-0.07l1.77,1.03l0.0,1.12l1.05,1.3l0.64,0.2l0.39,0.92l-0.15,0.54l-0.67,-0.25l-0.94,0.58l-0.22,1.83l0.82,1.28l1.61,0.97l0.7,1.36l0.67,2.25l-0.1,1.73l0.8,5.79l-0.77,0.64l-0.4,0.87l-0.75,0.08l-0.78,0.82l-0.14,4.45l-1.12,0.49l-0.17,0.81l-1.86,0.44l-0.72,0.6l-0.56,2.6l0.26,0.45l-0.2,0.52l0.27,2.56l1.39,1.29l2.9,0.8l0.91,-0.08l1.07,-1.23l0.59,-1.44l0.63,0.18l0.38,-0.24l0.99,-3.57l0.59,-1.06l-0.08,-0.51l0.92,-1.41l1.43,-0.44l1.06,-0.69l0.82,-1.1l0.87,-0.44l2.07,0.57l2.14,1.75l1.23,2.13l2.05,5.84l0.83,1.58l1.05,3.67l1.52,3.58l1.41,2.21l-0.43,3.38l0.46,2.46l-0.46,2.76l-0.34,0.44l-0.24,-0.32l-0.32,-1.69l-1.46,-0.5l-0.47,0.09l-1.47,1.36l-0.05,0.83l0.55,0.66l-0.82,0.57l-0.29,0.78l0.3,2.91l-0.48,0.75l-1.61,0.93l-1.05,1.85l-0.41,3.7l0.28,1.53l-0.32,0.92l-0.43,0.19l0.03,0.9l-0.63,0.3l-0.37,1.07l-0.52,0.52l-0.49,1.28l-0.02,1.04l-0.51,0.78l-20.38,4.41l-0.15,-0.84l-0.46,-0.33l-31.63,4.97l1.86,-2.22l1.82,-5.87l1.42,-3.02l0.98,-4.96l0.08,-5.29l-1.11,-6.42l-2.21,-4.24l0.6,-0.51l0.3,-0.78l-0.57,-0.42l-1.08,0.56l-4.01,-7.31l0.08,-1.35l0.97,-2.05l-0.02,-0.96l-0.76,-3.11l-1.29,-1.63l-0.05,-0.61l1.71,-2.72l1.2,-4.13l-0.25,-5.32l-0.78,-1.58l1.09,-1.15ZM622.19,118.68l0.0,-0.07l0.11,-0.12l-0.01,0.03l-0.11,0.16ZM622.44,117.76l-0.07,-0.16l0.07,-0.14l0.0,0.3ZM544.04,91.26l4.86,-2.42l3.53,-3.65l5.76,-1.4l1.38,-0.85l2.34,-2.74l0.97,0.04l1.52,-0.74l0.99,-2.27l2.79,-2.88l0.24,1.73l1.85,0.59l0.06,1.46l0.67,0.14l0.51,0.6l-0.14,3.17l0.44,0.95l-0.33,0.48l0.2,0.47l0.74,-0.02l1.07,-2.23l1.07,-0.91l-0.41,1.17l0.59,0.44l0.82,-0.68l0.52,-1.23l1.0,-0.44l3.09,-0.27l1.5,0.2l1.19,0.93l1.54,0.44l0.48,1.05l2.32,2.59l1.17,0.54l0.54,1.56l0.73,0.34l1.87,0.06l0.72,-0.41l1.07,-0.06l0.51,-0.66l0.88,-0.44l1.0,1.11l1.11,0.64l1.02,-0.26l0.67,-0.83l1.88,1.05l0.64,-0.35l1.63,-2.61l2.79,-1.92l1.69,-1.67l0.92,0.1l3.26,-1.23l5.17,-0.28l4.46,-2.76l2.56,-0.39l0.01,3.27l0.3,0.72l-0.35,1.11l0.68,0.85l0.66,0.11l0.71,-0.4l2.2,0.69l1.14,-0.44l1.02,-0.88l0.66,0.48l0.21,0.71l0.85,0.21l1.26,-0.82l0.94,-1.56l0.65,-0.02l0.85,0.75l2.01,3.79l-0.86,1.05l0.49,0.88l0.47,0.36l1.36,-0.43l0.58,0.46l0.64,0.04l0.18,1.2l0.99,0.87l1.53,0.51l-1.17,0.69l-4.96,-0.11l-0.53,0.3l-1.36,-0.16l-0.88,0.41l-0.67,-0.75l-1.63,-0.06l-0.58,0.47l-0.06,1.22l-0.49,0.76l0.4,2.05l-0.92,-0.22l-0.9,-0.92l-0.77,-0.13l-1.97,-1.64l-2.41,-0.58l-1.6,0.05l-1.04,-0.5l-2.88,0.49l-0.61,0.45l-1.16,2.53l-3.47,0.76l-0.57,0.78l-2.06,-0.32l-2.81,0.95l-0.68,0.84l-0.54,2.52l-0.78,0.29l-0.81,0.88l-0.65,0.29l0.15,-1.96l-0.75,-0.91l-1.02,0.35l-0.76,0.93l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.11,0.83l-0.72,2.02l-1.2,0.6l-0.12,-1.38l-0.47,-1.06l0.33,-1.69l-0.17,-0.37l-0.66,-0.16l-0.45,0.58l-0.59,2.13l-0.2,2.57l-1.11,0.92l-1.25,3.03l-0.6,2.66l-2.53,5.34l-0.69,0.74l0.13,0.91l-1.41,-1.27l0.17,-1.74l0.62,-1.69l-0.42,-0.81l-0.62,-0.3l-1.35,0.86l-1.16,0.1l0.03,-1.29l0.8,-1.45l-0.42,-1.34l0.29,-1.09l-0.58,-0.98l0.14,-0.83l-1.91,-1.54l-1.1,-0.05l-0.59,-0.43l-0.86,0.2l-0.62,-0.19l0.29,-1.37l-0.95,-1.45l-1.13,-0.51l-2.23,-0.09l-3.2,-0.69l-1.55,0.6l-1.43,-0.42l-1.62,0.17l-4.57,-1.93l-15.38,-2.44l-2.01,-3.4l-1.89,-0.96l-0.76,0.26l-0.1,-0.3ZM603.98,101.59l-0.0,0.52l-0.46,0.32l-0.69,1.39l0.08,0.57l-0.65,-0.58l0.9,-2.17l0.83,-0.07ZM644.38,90.12l1.97,-1.54l0.16,-0.57l-0.28,-0.64l1.05,0.15l0.81,1.23l0.82,0.19l-0.26,1.09l-0.36,0.19l-1.51,-0.33l-0.77,0.46l-1.63,-0.23ZM636.04,80.32l0.55,-0.84l0.52,0.05l-0.36,1.33l0.11,0.71l-0.35,-0.9l-0.47,-0.35ZM636.97,81.84l0.09,0.14l0.01,0.02l-0.02,-0.01l-0.08,-0.14ZM637.86,83.93l0.4,0.45l0.23,0.61l-0.63,-0.71l0.0,-0.34ZM634.29,95.87l1.41,0.24l0.35,-0.19l0.4,0.21l-0.17,0.52l-0.75,0.11l-1.24,-0.89ZM619.44,99.61l0.64,2.25l-0.79,0.78l-0.39,-0.26l0.54,-2.77ZM613.94,113.71l0.48,0.3l-0.08,0.57l-0.45,-0.69l0.06,-0.17ZM612.93,116.45l0.0,-0.03l0.02,-0.04l-0.03,0.07ZM599.9,85.56l-0.23,-0.37l0.02,-0.4l0.37,0.33l-0.16,0.45ZM570.96,75.75l-0.51,-0.27l-1.15,0.07l-0.06,-1.58l0.99,-1.04l1.16,-2.12l1.82,-1.52l0.63,-0.0l0.52,-0.59l2.07,-0.9l3.33,-0.44l1.11,0.67l-0.54,0.38l-1.31,-0.12l-2.26,0.79l-0.15,0.29l0.31,0.58l0.72,0.13l-1.19,1.0l-1.39,1.91l-0.69,0.29l-0.34,1.46l-1.14,1.38l-0.64,2.06l-0.67,-0.88l0.74,-0.98l0.12,-1.97l-0.63,-0.37l-0.2,0.15l-0.59,0.93l-0.04,0.68ZM558.64,61.09l0.75,-1.0l-0.4,-0.34l0.56,-0.55l4.59,-3.04l1.96,-1.75l0.62,-0.18l-0.45,0.67l0.11,0.8l-0.43,0.5l-4.22,2.61l-0.85,1.0l0.24,0.37l-1.86,1.19l-0.61,-0.29Z\", \"name\": \"Michigan\"}, \"US-GA\": {\"path\": \"M655.83,331.54l22.1,-3.74l20.71,-4.04l-1.47,1.41l-0.51,1.67l-0.66,0.82l-0.4,1.72l0.12,1.22l0.83,0.77l1.85,0.77l1.04,0.1l2.72,1.98l0.84,0.22l1.91,-0.39l0.6,0.24l0.81,1.62l1.52,1.57l1.06,2.46l1.34,0.8l0.85,1.14l0.56,0.26l1.01,1.74l1.08,0.28l1.19,0.97l3.84,1.79l2.44,3.1l2.27,0.55l2.56,1.63l0.51,2.31l1.26,0.99l0.48,-0.17l0.31,0.48l-0.09,0.62l0.79,0.71l0.79,0.08l0.57,1.19l5.03,1.81l0.41,1.76l1.56,1.7l1.04,1.98l-0.07,0.8l0.49,0.68l0.12,1.23l1.05,0.78l1.17,0.16l1.26,0.6l0.28,0.53l0.58,0.23l1.14,2.53l0.77,0.56l0.1,2.67l0.78,1.47l1.39,0.88l1.53,-0.28l1.46,0.74l1.46,0.09l-0.59,0.78l-0.56,-0.35l-0.47,0.28l-0.4,0.99l0.63,0.9l-0.37,0.48l-1.39,-0.14l-0.78,-0.54l-0.64,0.45l0.26,0.71l-0.48,0.53l0.36,0.6l0.95,-0.05l0.5,0.28l-0.57,1.35l-1.44,0.29l-1.34,-0.43l-0.44,0.39l0.35,0.84l1.24,0.33l-0.5,0.87l0.23,0.35l-0.2,0.64l0.84,0.63l-0.33,0.44l-0.72,-0.13l-0.96,0.52l-0.09,0.63l1.09,0.44l0.06,0.94l0.48,-0.08l1.2,-1.18l-0.91,2.33l-0.32,-0.58l-0.59,-0.07l-0.44,0.73l0.3,0.7l0.99,0.82l-2.34,0.07l-0.92,-0.27l-0.63,0.3l0.07,0.63l0.55,0.33l2.78,0.21l1.08,0.65l-0.01,0.34l-0.56,0.22l-0.87,1.96l-0.52,-1.41l-0.45,-0.12l-0.6,0.34l-0.14,0.84l0.35,0.96l-0.6,0.12l-0.02,0.84l-0.3,0.16l0.07,0.46l1.35,1.13l-1.09,1.04l0.33,0.47l0.78,0.07l-0.38,0.92l0.06,0.88l-0.46,0.52l1.12,1.65l0.04,0.76l-0.8,0.34l-2.66,-0.14l-4.1,-0.92l-1.31,0.36l-0.17,0.74l-0.68,0.26l-0.34,1.25l0.29,2.08l0.96,1.35l0.17,4.26l-1.99,0.42l-0.55,-0.92l-0.13,-1.31l-1.35,-1.81l-49.49,5.58l-0.73,-0.55l-0.89,-2.7l-0.96,-1.5l-0.57,-0.37l0.15,-0.68l-0.74,-1.5l-1.84,-1.8l-0.44,-1.74l0.25,-0.8l0.03,-5.18l-0.62,-1.8l-1.2,-1.45l-1.05,-2.63l0.11,-1.65l0.77,-2.36l-0.26,-1.52l0.18,-2.1l1.62,-1.34l0.45,-1.47l-0.56,-0.6l-1.43,-0.67l0.08,-2.14l-0.99,-1.85l-2.2,-2.38l-1.05,-2.78l-0.76,-0.67l-0.17,-0.95l-0.78,-1.35l-14.26,-42.58ZM747.77,388.29l0.7,-0.27l-0.07,0.83l-0.3,-0.33l-0.34,-0.23ZM746.43,405.18l0.06,0.87l-0.01,0.47l-0.35,-0.57l0.3,-0.77Z\", \"name\": \"Georgia\"}, \"US-AZ\": {\"path\": \"M127.66,383.44l0.45,-1.79l1.3,-1.26l0.55,-1.1l0.48,-0.25l1.67,0.63l0.97,-0.03l0.52,-0.45l0.29,-1.16l1.32,-0.98l0.26,-2.71l-0.45,-1.24l-0.84,-0.66l-2.08,-0.68l-0.3,-0.61l0.81,-2.37l0.01,-1.38l-0.51,-1.19l0.57,-0.84l-0.2,-0.86l1.58,-0.25l2.32,-2.77l0.66,-2.41l0.66,-0.79l0.04,-3.14l0.56,-0.61l-0.28,-1.41l1.73,-1.11l1.05,-1.82l3.18,-1.25l2.05,-1.54l0.27,-0.53l-0.12,-1.03l-3.25,-3.48l-0.51,-0.22l0.23,-1.24l-0.65,-1.44l0.08,-0.9l-0.87,-2.74l-0.84,-0.56l-0.18,-1.63l-0.68,-0.79l0.21,-3.49l0.59,-0.85l-0.29,-0.84l1.03,-0.39l0.41,-1.4l0.15,-3.16l-0.75,-3.61l0.47,-0.86l0.3,-1.65l-0.38,-2.96l0.86,-2.52l-0.8,-1.85l-0.03,-0.9l0.44,-0.51l0.35,-1.33l2.55,-0.6l1.75,1.0l1.43,-0.18l0.96,2.22l0.78,0.71l1.54,0.15l1.02,-0.48l1.04,-2.23l0.95,-1.17l2.64,-16.67l42.56,6.06l42.71,4.9l-12.24,122.4l-37.11,-4.26l-36.46,-19.18l-28.51,-15.73Z\", \"name\": \"Arizona\"}, \"US-MT\": {\"path\": \"M167.4,59.85l0.72,-0.1l0.33,-0.38l-0.88,-2.02l0.85,-0.96l-0.38,-1.32l0.1,-0.97l-1.22,-1.96l-0.22,-1.51l-1.02,-1.36l-1.16,-2.48l3.76,-21.01l43.48,7.0l42.9,5.45l42.6,4.01l43.01,2.64l-3.73,86.82l-28.12,-1.54l-26.83,-2.0l-26.78,-2.51l-25.84,-2.91l-0.45,0.35l-1.28,10.37l-1.51,-2.01l-0.02,-0.91l-1.17,-2.35l-1.24,-0.75l-1.81,0.9l0.02,1.05l-0.72,0.42l-0.35,1.55l-2.42,-0.42l-1.92,0.55l-0.92,-0.85l-3.36,0.07l-2.38,-0.98l-1.68,0.56l-0.85,1.47l-4.66,-1.63l-1.3,0.36l-1.13,0.89l-0.31,0.66l-1.65,-1.41l0.22,-1.42l-0.89,-1.71l0.4,-0.36l0.07,-0.62l-1.16,-3.08l-1.44,-1.26l-1.45,0.34l-0.21,-0.64l-1.07,-0.9l-0.4,-1.37l0.68,-0.6l0.21,-1.41l-0.75,-2.38l-0.77,-0.36l-0.3,-1.58l-1.49,-2.55l0.24,-1.51l-0.55,-1.27l0.35,-1.4l-0.72,-0.86l0.49,-0.97l-0.21,-0.75l-1.14,-0.76l-0.13,-0.59l-0.84,-0.92l-0.8,-0.4l-0.51,0.37l-0.08,0.75l-0.7,0.26l-1.14,1.21l-1.75,0.35l-1.22,1.06l-1.08,-0.86l-0.63,-1.01l-1.05,-0.45l0.02,-0.86l0.74,-0.63l0.25,-1.06l-0.6,-1.61l0.91,-1.09l1.07,-0.08l0.83,-0.8l-0.25,-1.14l0.39,-1.07l-0.94,-0.81l-0.04,-0.81l0.67,-1.28l-0.58,-1.08l0.74,-0.06l0.39,-0.42l-0.03,-1.78l1.85,-3.73l-0.13,-1.06l0.89,-0.62l0.63,-3.18l-0.78,-0.51l-1.8,0.36l-1.33,-0.12l-0.64,-0.56l0.37,-0.84l-0.61,-0.98l-0.66,-0.23l-0.73,0.35l-0.06,-0.95l-1.73,-1.65l0.06,-1.86l-1.66,-1.85l-0.08,-0.69l-1.52,-2.92l-1.06,-1.31l-0.55,-1.65l-2.34,-1.37l-0.93,-1.98l-1.44,-1.22Z\", \"name\": \"Montana\"}, \"US-MS\": {\"path\": \"M557.14,430.96l0.67,-0.97l-1.06,-1.76l0.18,-1.63l-0.82,-0.87l1.7,-0.26l0.47,-0.54l0.39,-2.74l-0.79,-1.82l1.57,-1.8l0.24,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.64,-0.95l1.15,-0.28l0.96,-2.58l0.91,-1.31l-0.16,-0.86l-1.55,-0.42l-0.35,-0.95l-1.84,-1.03l-0.08,-2.13l-0.94,-0.73l-0.45,-0.83l-0.02,-0.37l1.14,-0.29l0.46,-0.68l-0.26,-0.89l-1.41,-0.48l0.23,-1.76l0.98,-1.53l-0.78,-1.06l-1.08,-0.3l-0.16,-2.8l0.9,-0.54l0.22,-0.8l-0.63,-2.5l-1.26,-0.65l0.7,-1.32l-0.08,-2.2l-2.03,-1.49l1.13,-0.47l0.12,-1.4l-1.35,-0.87l1.57,-2.02l0.93,-0.31l0.36,-0.68l-0.52,-1.55l0.42,-1.35l-0.89,-0.87l1.59,-0.83l1.25,-0.27l0.59,-0.76l-0.09,-1.06l-1.42,-0.93l1.39,-1.07l0.62,-1.76l0.95,-0.17l0.34,-0.97l-0.2,-0.76l1.48,-0.44l1.22,-1.21l0.06,-3.49l-0.47,-1.51l0.36,-1.76l0.74,0.08l0.68,-0.33l0.42,-0.87l-0.41,-1.04l2.73,-1.71l0.58,-1.05l-0.29,-1.26l36.59,-4.31l0.87,1.23l0.85,0.44l1.25,65.96l5.71,32.91l-0.73,0.7l-1.55,-0.29l-0.91,-0.94l-1.32,1.07l-1.24,0.18l-2.05,-1.2l-2.01,-0.23l-0.84,0.37l-0.34,0.44l0.32,0.41l-0.56,0.37l-3.98,1.69l-0.05,-0.5l-0.97,-0.51l-1.0,0.05l-0.58,1.0l0.76,0.61l-1.6,1.22l-0.32,1.29l-0.69,0.31l-1.35,-0.05l-1.18,-1.87l-0.09,-0.9l-0.93,-1.47l-0.21,-1.01l-1.42,-1.63l-1.17,-0.53l-0.47,-0.77l0.1,-0.63l-0.7,-0.92l0.2,-1.99l0.5,-0.94l0.65,-2.99l-0.07,-1.23l-0.43,-0.28l-34.87,3.59Z\", \"name\": \"Mississippi\"}, \"US-SC\": {\"path\": \"M699.48,323.59l4.87,-2.71l1.03,-0.06l1.11,-1.38l3.94,-1.92l0.45,-0.88l0.63,0.21l22.62,-3.59l0.31,0.13l-0.1,0.97l0.46,0.66l0.71,0.0l1.21,-1.3l2.85,2.48l0.48,2.44l0.56,0.51l19.55,-3.73l23.18,14.64l0.02,0.54l-2.47,2.19l-2.42,3.67l-2.38,5.71l-0.07,2.72l-1.09,-0.21l0.84,-2.71l-0.64,-0.22l-0.76,0.87l-0.55,1.38l-0.1,1.55l0.85,0.94l1.06,0.22l0.45,0.89l-0.75,0.09l-0.4,0.56l-0.88,0.03l-0.23,0.69l0.95,0.43l-1.1,1.13l-0.07,1.01l-1.35,0.65l-0.5,-0.6l-0.5,-0.07l-1.06,0.87l-0.55,1.76l0.43,0.86l-1.19,1.23l-0.6,1.44l-1.2,1.02l-0.91,-0.38l0.27,-0.59l-0.54,-0.73l-1.38,0.33l-0.11,0.43l0.37,0.76l-0.52,0.03l0.06,0.75l0.73,0.57l1.31,0.41l-0.12,0.38l-0.88,0.95l-1.22,0.24l-0.25,0.51l0.33,0.44l-2.29,1.36l-1.44,-0.83l-0.56,0.11l-0.1,0.68l1.2,0.76l-1.54,1.58l-0.73,-0.74l-0.49,0.53l-0.0,0.73l-0.7,-0.36l-0.85,0.01l-1.35,-0.82l-0.44,0.5l0.17,0.52l-1.74,0.19l-0.44,0.37l-0.06,0.77l0.65,0.22l1.43,-0.18l-0.25,0.55l0.43,0.25l1.92,-0.17l0.11,0.21l-0.97,0.87l-0.32,0.78l0.57,0.49l0.94,-0.54l0.03,0.21l-1.12,1.1l-1.0,0.45l-0.22,-2.03l-0.7,-0.26l-0.24,-1.54l-0.89,-0.14l-0.3,0.58l0.89,2.68l-1.14,-0.65l-0.64,-0.99l-0.41,-1.75l-0.66,-0.2l-0.53,-0.62l-0.69,0.01l-0.26,0.6l0.86,1.01l0.01,0.67l1.13,1.81l-0.01,0.85l1.24,1.16l-0.62,0.34l0.04,0.98l-1.18,3.56l-1.53,-0.76l-1.53,0.27l-0.98,-0.66l-0.55,-1.02l-0.19,-2.92l-0.87,-0.74l-1.08,-2.45l-1.05,-0.93l-3.25,-1.29l-0.51,-2.63l-1.14,-2.15l-1.45,-1.55l-0.07,-1.06l-0.78,-1.2l-4.85,-1.62l-0.6,-1.26l-1.21,-0.35l0.01,-0.7l-0.54,-0.86l-0.87,0.01l-0.74,-0.59l0.02,-1.21l-0.67,-1.25l-2.72,-1.73l-2.17,-0.49l-2.39,-3.07l-3.96,-1.86l-1.23,-1.01l-0.83,-0.11l-1.06,-1.78l-0.51,-0.21l-0.92,-1.19l-1.19,-0.66l-1.01,-2.38l-1.55,-1.62l-1.04,-1.84l-1.06,-0.36l-1.94,0.39l-0.46,-0.16l-2.77,-2.14l-1.07,0.03l-1.71,-0.71l-0.53,-0.51l0.35,-2.19l0.64,-0.78l0.34,-1.37l1.36,-1.23l0.4,-0.98ZM752.86,373.71l0.73,-0.09l0.52,0.44l-1.22,1.91l0.28,-1.22l-0.3,-1.05Z\", \"name\": \"South Carolina\"}, \"US-RI\": {\"path\": \"M860.17,132.77l0.34,0.0l1.04,2.6l-0.31,0.56l-1.07,-3.15ZM859.46,136.41l-0.28,-0.32l0.23,-1.5l0.42,1.5l-0.37,0.32ZM852.23,141.2l0.22,-0.46l-0.55,-2.18l-3.23,-9.82l5.59,-1.92l0.78,2.02l0.81,0.24l0.19,0.72l0.09,0.41l-0.76,0.26l0.03,0.29l0.53,1.43l0.59,0.48l-0.6,0.16l-0.45,0.73l0.88,0.95l-0.13,1.21l0.96,2.14l-0.3,2.06l-1.33,0.25l-3.14,2.22l-0.17,-1.18ZM856.95,131.31l0.26,0.09l0.01,0.09l-0.17,-0.08l-0.09,-0.1ZM858.34,131.95l0.24,0.47l-0.2,0.31l-0.04,-0.37l0.0,-0.4ZM857.06,144.61l0.1,0.1l-0.18,0.1l-0.03,-0.13l0.11,-0.07Z\", \"name\": \"Rhode Island\"}, \"US-CT\": {\"path\": \"M824.64,156.55l2.8,-3.23l-0.07,-0.55l-1.32,-1.21l-3.64,-15.64l9.8,-2.55l0.6,0.44l0.65,-0.27l0.22,-0.58l14.14,-4.2l3.29,10.01l0.48,1.92l-0.03,1.67l-1.65,0.34l-0.91,0.82l-0.7,-0.35l-0.49,0.11l-0.17,0.9l-1.15,0.09l-1.26,1.27l-0.62,-0.12l-0.57,-0.99l-0.89,-0.07l-0.2,0.68l0.76,0.62l0.09,0.53l-0.89,-0.0l-1.01,0.88l-1.65,0.1l-1.14,0.95l-0.86,-0.08l-2.05,0.85l-0.4,-0.66l-0.6,0.12l-0.87,2.11l-0.59,0.3l-0.82,1.29l-0.79,-0.04l-0.94,0.74l-0.19,0.63l-0.53,0.06l-0.88,0.75l-2.75,3.08l-0.96,0.28l-1.25,-1.01Z\", \"name\": \"Connecticut\"}}, \"height\": 606.211102089553, \"projection\": {\"type\": \"lcc\", \"centralMeridian\": -100.0}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-world-mill-en.js",
    "content": "$.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 440.7063107441331, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.02513512, \"x\": 20026572.394749384}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z\", \"name\": \"Bosnia and Herzegovina\"}, \"BN\": {\"path\": \"M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z\", \"name\": \"The Bahamas\"}, \"BY\": {\"path\": \"M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z\", \"name\": \"Republic of Serbia\"}, \"LT\": {\"path\": \"M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z\", \"name\": \"Guinea Bissau\"}, \"GT\": {\"path\": \"M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z\", \"name\": \"Equatorial Guinea\"}, \"GY\": {\"path\": \"M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z\", \"name\": \"Oman\"}, \"_3\": {\"path\": \"M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z\", \"name\": \"Somaliland\"}, \"_2\": {\"path\": \"M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z\", \"name\": \"Western Sahara\"}, \"_1\": {\"path\": \"M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z\", \"name\": \"Northern Cyprus\"}, \"JO\": {\"path\": \"M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z\", \"name\": \"West Bank\"}, \"PT\": {\"path\": \"M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z\", \"name\": \"Zambia\"}, \"EE\": {\"path\": \"M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z\", \"name\": \"Falkland Islands\"}, \"NI\": {\"path\": \"M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z\", \"name\": \"Ivory Coast\"}, \"CH\": {\"path\": \"M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z\", \"name\": \"Republic of the Congo\"}, \"CF\": {\"path\": \"M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z\", \"name\": \"Central African Republic\"}, \"CD\": {\"path\": \"M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z\", \"name\": \"Democratic Republic of the Congo\"}, \"CZ\": {\"path\": \"M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z\", \"name\": \"Czech Republic\"}, \"CY\": {\"path\": \"M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z\", \"name\": \"South Sudan\"}, \"SR\": {\"path\": \"M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z\", \"name\": \"South Korea\"}, \"SI\": {\"path\": \"M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z\", \"name\": \"North Korea\"}, \"SO\": {\"path\": \"M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z\", \"name\": \"Solomon Islands\"}, \"SA\": {\"path\": \"M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z\", \"name\": \"Dominican Republic\"}, \"DJ\": {\"path\": \"M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z\", \"name\": \"United States of America\"}, \"LV\": {\"path\": \"M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z\", \"name\": \"Laos\"}, \"TW\": {\"path\": \"M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z\", \"name\": \"East Timor\"}, \"TM\": {\"path\": \"M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z\", \"name\": \"French Southern and Antarctic Lands\"}, \"TG\": {\"path\": \"M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z\", \"name\": \"Mozambique\"}}, \"height\": 440.7063107441331, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/maps/jvectormap/maps/mall-map.js",
    "content": "jQuery.fn.vectorMap('addMap', 'mall', {\"width\":694,\"height\":213,\"paths\":{\"F102\":{\"name\":\"Nike\",\"path\":\"M13.74 162.23L30.83 160.72L36.51 151.85L31.53 65.98L23.53 59.28L7.96 60.36\"},\"F103\":{\"name\":\"La Maison\",\"path\":\"M40.51 57.55L41.81 84.48L52.62 94.54L74.14 93.02L71.98 55.50\"},\"F105\":{\"name\":\"\",\"path\":\"M72.73 55.60L89.17 54.74L91.44 91.61L74.68 92.91\"},\"F106\":{\"name\":\"\",\"path\":\"M90.04 54.52L120.21 52.47L122.81 89.35L91.98 91.51\"},\"F108\":{\"name\":\"Hairsmiths Unisex Hair Salon\",\"path\":\"M121.08 52.47L137.08 51.50L139.35 88.37L123.45 89.24\"},\"F109\":{\"name\":\"Terra Plana\",\"path\":\"M137.84 51.49L152.87 50.52L154.71 87.18L140.11 88.26\"},\"F110\":{\"name\":\"Mariella Nails\",\"path\":\"M153.95 50.52L169.74 49.55L172.01 86.21L155.79 87.18\"},\"F111\":{\"name\":\"Goveci\",\"path\":\"M170.93 49.55L204.91 47.59L207.27 83.94L173.09 86.21\"},\"F114\":{\"name\":\"SoEasy\",\"path\":\"M205.68 47.42L225.02 46.44L227.22 82.86L208.13 83.98\"},\"F166\":{\"name\":\"Espressamente Illy\",\"path\":\"M225.98 46.22L260.40 44.25L251.39 64.09L252.72 81.12L228.38 82.86\"},\"F167\":{\"name\":\"An’ge Paris\",\"path\":\"M308.57 71.34c-2.03 3.49 -2.68 6.70 -2.68 6.70l-52.24 3.08l-0.95 -16.84l9.16 -20.03l46.71 27.01\"},\"F169V\":{\"name\":\"Veranda\",\"path\":\"M283.35 44.43l-9.68 -8.62c0.00 0.00 21.95 -26.06 58.17 -30.98c7.14 -0.97 6.54 10.85 6.71 11.84C338.71 17.66 309.52 17.29 283.35 44.43z\"},\"F169\":{\"name\":\"Ocean Basket\",\"path\":\"M310.27 68.09c0.00 0.00 9.24 -16.87 30.50 -20.28c0.23 -0.04 -2.27 -31.79 -2.27 -31.79s-33.42 3.24 -55.16 28.39L310.27 68.09z\"},\"F172V\":{\"name\":\"Veranda\",\"path\":\"M411.35 45.06l9.50 -8.60c0.00 0.00 -23.48 -27.41 -57.86 -31.15c-7.10 -0.77 -6.64 11.36 -6.80 12.33S385.39 18.46 411.35 45.06z\"},\"F172\":{\"name\":\"T.G.I Friday’s\",\"path\":\"M384.25 68.99c0.00 0.00 -8.84 -17.27 -30.17 -21.01c-0.23 -0.04 2.12 -31.31 2.12 -31.31s33.42 3.24 55.15 28.39L384.25 68.99z\"},\"F170\":{\"name\":\"Video Arcade &  Gaming Zone\",\"path\":\"M344.18 47.33l-1.30 -17.52h9.90 0.00l-1.30 17.68C351.48 47.49 348.07 47.17 344.18 47.33z\"},\"F174\":{\"name\":\"Taco Bell\",\"path\":\"M388.79 80.67l68.38 2.03l2.97 -36.50L434.50 44.25l-48.18 29.20C386.32 73.45 387.65 76.29 388.79 80.67z\"},\"F115\":{\"name\":\"Early Learning Centre\",\"path\":\"M460.97 46.36L492.28 48.47L489.52 84.96L458.22 82.69\"},\"F117\":{\"name\":\"\",\"path\":\"M490.50 84.96L505.42 85.94L507.74 49.62L493.06 48.80\"},\"F118\":{\"name\":\"Hart\",\"path\":\"M506.41 85.98L521.38 87.02L524.08 50.74L508.99 49.76\"},\"F119\":{\"name\":\"\",\"path\":\"M522.13 87.03L541.70 88.44L544.19 52.33L525.05 50.90\"},\"F120\":{\"name\":\"\",\"path\":\"M542.39 88.38L545.11 52.27L572.20 54.06L570.00 90.19\"},\"F122\":{\"name\":\"Mavros\",\"path\":\"M570.77 90.19L573.08 54.13L601.62 56.09L598.67 92.05\"},\"F124\":{\"name\":\"\",\"path\":\"M599.75 92.05L602.58 56.19L622.37 57.48L619.75 93.34\"},\"F125\":{\"name\":\"Energiers\",\"path\":\"M620.49 93.46L623.19 57.74L655.39 59.82L653.20 86.10L643.28 95.41\"},\"F126\":{\"name\":\"\",\"path\":\"M662.77 67.61L671.37 61.12L686.29 62.09L678.99 158.29L663.75 157.48L656.77 149.20\"},\"F128\":{\"name\":\"Pablosky\",\"path\":\"M627.57 160.48L646.57 161.73L649.63 125.68L630.65 124.38\"},\"F129\":{\"name\":\"\",\"path\":\"M605.83 159.10L626.46 160.48L629.68 124.22L609.08 122.76\"},\"F130\":{\"name\":\"\",\"path\":\"M584.42 157.71L604.86 159.10L608.43 122.60L587.67 121.30\"},\"F132\":{\"name\":\"Cinnabon\",\"path\":\"M558.95 155.93L583.61 157.71L587.02 121.14L561.87 119.52\"},\"F133\":{\"name\":\"\",\"path\":\"M542.89 154.88L558.33 155.93L560.90 119.52L545.81 118.38\"},\"F134\":{\"name\":\"Crocodilino\",\"path\":\"M517.75 153.42L541.79 154.80L544.84 118.38L520.67 116.60\"},\"F135\":{\"name\":\"Krystalo - Fanelaki\",\"path\":\"M501.69 152.28L516.78 153.26L519.70 116.76L504.29 115.62\"},\"F136\":{\"name\":\"Lepus\",\"path\":\"M454.00 149.04L500.72 152.28L503.31 115.62L455.46 112.54\"},\"F139\":{\"name\":\"Engino\",\"path\":\"M410.80 131.47L414.37 134.71L441.29 136.33L449.24 112.33L417.77 109.73\"},\"FR01\":{\"name\":\"Rest Rooms\",\"path\":\"M429.13 135.93l11.92 0.89c0.00 0.00 -5.84 15.17 -13.87 26.36l-8.76 -6.57C418.42 156.61 426.49 145.28 429.13 135.93z\"},\"F153\":{\"name\":\"Al Rifai\",\"path\":\"M283.19 130.87L279.58 134.12L253.17 135.90L244.41 111.08L276.21 109.38\"},\"FR02\":{\"name\":\"Rest Rooms\",\"path\":\"M265.09 135.56l-11.68 0.91c0.00 0.00 5.24 15.60 13.63 26.52l9.65 -7.14C276.69 155.85 268.03 144.82 265.09 135.56z\"},\"FFC\":{\"name\":\"Food Court\",\"path\":\"M280.37 109.08l26.93 -2.92c0.00 0.00 8.16 25.94 39.88 26.98c19.71 0.65 34.63 -14.85 39.42 -26.93c0.12 -0.30 26.15 3.35 26.15 3.35s-4.54 18.49 -15.57 30.98c-0.11 0.12 29.66 22.84 29.66 22.84c-0.00 0.00 -12.98 18.33 -36.01 29.69c-32.08 15.81 -86.95 17.77 -123.58 -29.50c-0.40 -0.51 28.88 -20.77 28.88 -20.77S278.21 110.65 280.37 109.08z\"},\"F155\":{\"name\":\"155 Fashion\",\"path\":\"M239.87 148.15L224.95 148.39L221.87 112.38L243.12 111.08L245.88 136.71L243.93 133.31L239.55 133.63\"},\"F156\":{\"name\":\"Giacomo de Luca\",\"path\":\"M201.43 113.52L220.89 112.22L223.81 148.55L204.35 150.01\"},\"F157\":{\"name\":\"G+ Collections\",\"path\":\"M179.85 115.30L200.62 113.67L203.54 150.01L182.93 151.47\"},\"F158\":{\"name\":\"Femme Femme\",\"path\":\"M157.14 116.76L178.80 115.30L181.79 151.56L160.12 153.19\"},\"F159\":{\"name\":\"\",\"path\":\"M134.92 154.72L159.01 153.26L156.33 116.76L132.00 118.22\"},\"F160\":{\"name\":\"Le Rouge\",\"path\":\"M110.10 156.50L133.78 154.88L131.03 118.22L107.50 120.00\"},\"F162\":{\"name\":\"\",\"path\":\"M91.77 157.64L109.29 156.50L106.53 120.08L89.33 121.14\"},\"F164\":{\"name\":\"\",\"path\":\"M67.27 159.42L90.96 157.64L88.52 121.30L64.76 122.68\"},\"F165\":{\"name\":\"Ose\",\"path\":\"M47.97 160.72L66.30 159.42L63.95 122.68L45.62 123.82\"},\"FR03\":{\"name\":\"Rest Rooms\",\"path\":\"M239.93 133.90L243.82 133.69L245.79 136.96L245.79 140.93L240.03 141.01\"},\"FR04\":{\"name\":\"Rest Rooms\",\"path\":\"M245.77 148.04L240.20 148.07L240.03 141.25L245.77 141.19\"}}});"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/AUTHORS",
    "content": "ExplorerCanvas\n\nGoogle Open Source:\n\t<http://code.google.com>\n\t<opensource@google.com> \n\nDevelopers:\n\tEmil A Eklund <emil@eae.net>\n\tErik Arvidsson <erik@eae.net>\n\tGlen Murphy <glen@glenmurphy.com>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/COPYING",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/README",
    "content": "ExplorerCanvas\nCopyright 2006 Google Inc.\n\n-------------------------------------------------------------------------------\nDESCRIPTION\n\nFirefox, Safari and Opera 9 support the canvas tag to allow 2D command-based \ndrawing operations. ExplorerCanvas brings the same functionality to Internet \nExplorer; web developers only need to include a single script tag in their \nexisting canvas webpages to enable this support.\n\n\n-------------------------------------------------------------------------------\nINSTALLATION\n\nInclude the ExplorerCanvas tag in the same directory as your HTML files, and \nadd the following code to your page, preferably in the <head> tag.\n\n<!--[if IE]><script type=\"text/javascript\" src=\"excanvas.js\"></script><![endif]-->\n\nIf you run into trouble, please look at the included example code to see how\nto best implement this"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example1.html",
    "content": "<!--\n\tCopyright 2006 Google Inc.\n\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\n\t  http://www.apache.org/licenses/LICENSE-2.0\n\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n-->\n<html>\n<head>\n\t<title>ExplorerCanvas Example 1</title>\n\t<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n\t<script type=\"text/javascript\">\n\t\tvar canvas, ctx;\n\t\tvar particles = [];\n\t\tvar NUM_PARTICLES = 20;\n\n\t\tfunction Particle() {\n\t\t\tthis.x = Math.random() * canvas.width;\n\t\t\tthis.y = Math.random() * canvas.height;\n\n\t\t\tthis.xvel = Math.random() * 5 - 2.5;\n\t\t\tthis.yvel = Math.random() * 5 - 2.5;\n\t\t}\n\n\t\tParticle.prototype.update = function() {\n\t\t\tthis.x += this.xvel;\n\t\t\tthis.y += this.yvel;\n\n\t\t\tthis.yvel += 0.1;\n\n\t\t\tif (this.x > canvas.width || this.x < 0) {\n\t\t\t\tthis.xvel = -this.xvel;\n\t\t\t}\n\n\t\t\tif (this.y > canvas.height || this.y < 0) {\n\t\t\t\tthis.yvel = -this.yvel;\n\t\t\t}\n\t\t}\n\n\t\tfunction loop() {\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t\t\tfor(var i = 0; i < NUM_PARTICLES; i++) {\n\t\t\t\tparticles[i].update();\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(particles[i].x, particles[i].y);\n\t\t\t\tctx.lineTo(particles[i].x - particles[i].xvel,\n\t\t\t\t\t\t\t\t\t particles[i].y - particles[i].yvel);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tsetTimeout(loop, 10);\n\t\t}\n\n\t\tfunction load() {\n\t\t\tcanvas = document.getElementById(\"cv\");\n\t\t\tctx = canvas.getContext(\"2d\");\n\n\t\t\tfor(var i = 0; i < NUM_PARTICLES; i++) {\n\t\t\t\tparticles[i] = new Particle();\n\t\t\t}\n\n\t\t\tctx.lineWidth = \"2\";\n\t\t\tctx.strokeStyle = \"rgb(255, 255, 255)\";\n\t\t\tloop();\n\t\t}\n\t</script>\n\t<style>\n\t\tbody {\n\t\t\tbackground-color:black;\n\t\t\tmargin:50px;\n\t\t\ttext-align:center;\n\t\t}\n\n\t\tcanvas {\n\t\t\tborder:1px solid #444;\n\t\t}\n\t</style>\n</head>\n<body onload=\"load();\">\n\t<canvas id=\"cv\" width=\"400\" height=\"300\"></canvas>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example2.html",
    "content": "<!--\n\tCopyright 2006 Google Inc.\n\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\n\t  http://www.apache.org/licenses/LICENSE-2.0\n\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n-->\n<html>\n<head>\n\t<title>ExplorerCanvas Example 1</title>\n\t<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n\t<script type=\"text/javascript\">\n\t\t/* -------------------------------------------------------------------- */\n\n\t\tvar canvas, ctx;\n\t\tvar canvasWidth, halfCanvasWidth;\n\t\tvar canvasHeight, halfCanvasHeight;\n\n\t\tvar space;  // 3D Engine\n\t\tvar scene;  // 3D Scene\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * Space is a simple 3D system.\n\t\t *\n\t\t * Y+ = up\n\t\t * Z+ = into screen\n\t\t * X+ = right\n\t\t */\n\t\tfunction Space() {\n\t\t\tthis.m = this.createMatrixIdentity();\n\t\t\tthis.mStack = [];\n\t\t}\n\n\t\tSpace.prototype.createMatrixIdentity = function() {\n\t\t\treturn [\n\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t[0, 0, 0, 1]\n\t\t\t];\n\t\t}\n\n\t\t/**\n\t\t * Multiplies two 4x4 matricies together.\n\t\t */\n\t\tSpace.prototype.matrixMultiply = function(m1, m2) {\n\t\t\tvar result = this.createMatrixIdentity();\n\n\t\t\tvar width = m1[0].length;\n\t\t\tvar height = m1.length;\n\n\t\t\tif (width != m2.length) {\n\t\t\t\t// error\n\t\t\t}\n\n\t\t\tfor (var x = 0; x < width; x++) {\n\t\t\t\tfor (var y = 0; y < height; y++) {\n\t\t\t\t\tvar sum = 0;\n\n\t\t\t\t\tfor (var z = 0; z < width; z++) {\n\t\t\t\t\t\tsum += m1[y][z] * m2[z][x];\n\t\t\t\t\t}\n\n\t\t\t\t\tresult[y][x] = sum;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\n\t\t * Transforms a coordinate using the current transformation\n\t\t * matrix, then flattens it using the projection matrix.\n\t\t */\n\t\tSpace.prototype.flatten = function(point) {\n\t\t\tvar p = [[point.x, point.y, point.z, 1]];\n\t\t\tvar pm = this.matrixMultiply(p, this.m);\n\n\t\t\tpoint.tx = pm[0][0];\n\t\t\tpoint.ty = pm[0][1];\n\t\t\tpoint.tz = pm[0][2];\n\n\t\t\t// lazy projection\n\t\t\tpoint.fx = halfCanvasWidth + (canvasWidth * point.tx / point.tz);\n\t\t\tpoint.fy = halfCanvasHeight -(canvasWidth * point.ty / point.tz);\n\t\t}\n\n\t\t/**\n\t\t * Translate (move) the current transformation matrix\n\t\t */\n\t\tSpace.prototype.translate = function(x, y, z) {\n\t\t\tvar m = [\n\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t[x, y, z, 1]\n\t\t\t];\n\n\t\t\tthis.m = this.matrixMultiply(m, this.m);\n\t\t}\n\n\t\t/**\n\t\t * Rotate the current transformation matrix. Rotations are\n\t\t * world-oriented, and occur in y,x,z order.\n\t\t */\n\t\tSpace.prototype.rotate = function(x, y, z) {\n\t\t\tif (y) {\n\t\t\t\tvar cosY = Math.cos(y);\n\t\t\t\tvar sinY = Math.sin(y);\n\t\t\t\tvar rotY = [\n\t\t\t\t\t[cosY, 0, sinY, 0],\n\t\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t\t[-sinY, 0, cosY, 0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotY);\n\t\t\t}\n\n\t\t\tif (x) {\n\t\t\t\tvar cosX = Math.cos(x);\n\t\t\t\tvar sinX = Math.sin(x);\n\t\t\t\tvar rotX = [\n\t\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t\t[0, cosX, -sinX, 0],\n\t\t\t\t\t[0, sinX, cosX,0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotX);\n\t\t\t}\n\n\t\t\tif (z) {\n\t\t\t\tvar cosZ = Math.cos(z);\n\t\t\t\tvar sinZ = Math.sin(z);\n\t\t\t\tvar rotZ = [\n\t\t\t\t\t[cosZ, -sinZ, 0, 0],\n\t\t\t\t\t[sinZ, cosZ, 0, 0],\n\t\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotZ);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Pushes the current transformation onto the stack\n\t\t */\n\t\tSpace.prototype.push = function() {\n\t\t\tthis.mStack.push(this.m);\n\t\t\tthis.m = [\n\t\t\t\t[this.m[0][0], this.m[0][1], this.m[0][2], this.m[0][3]],\n\t\t\t\t[this.m[1][0], this.m[1][1], this.m[1][2], this.m[1][3]],\n\t\t\t\t[this.m[2][0], this.m[2][1], this.m[2][2], this.m[2][3]],\n\t\t\t\t[this.m[3][0], this.m[3][1], this.m[3][2], this.m[3][3]]\n\t\t\t];\n\t\t}\n\n\t\t/**\n\t\t * Pops the end off the transformation stack\n\t\t */\n\t\tSpace.prototype.pop = function() {\n\t\t\tthis.m = this.mStack.pop();\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * A 3d coordinate\n\t\t */\n\t\tfunction Point(x, y, z) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\n\t\t\t// Relative to camera coordinates\n\t\t\tthis.tx;\n\t\t\tthis.ty;\n\t\t\tthis.tz;\n\n\t\t\t// Flattened coordinates\n\t\t\tthis.fx;\n\t\t\tthis.fy;\n\t\t}\n\n\t\t/**\n\t\t * A Shape is made up of polygons\n\t\t */\n\t\tfunction Shape() {\n\t\t\tthis.points = [];\n\t\t\tthis.polygons = [];\n\t\t}\n\n\t\t/**\n\t\t * Draws the shape\n\t\t */\n\t\tShape.prototype.draw = function(drawlist) {\n\t\t\tfor (var i = 0; i< this.points.length; i++) {\n\t\t\t\tspace.flatten(this.points[i]);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i< this.polygons.length; i++) {\n\t\t\t\tvar poly = this.polygons[i]; // convenience\n\n\t\t\t\tspace.flatten(poly.origin);\n\n\t\t\t\t// lazy backface culling\n\t\t\t\tif (poly.normal && this.backface) {\n\t\t\t\t\tspace.flatten(poly.normal);\n\n\t\t\t\t\tvar originDist = Math.pow(poly.origin.tx, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.origin.ty, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.origin.tz, 2);\n\n\t\t\t\t\tvar normalDist = Math.pow(poly.normal.tx, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.normal.ty, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.normal.tz, 2);\n\n\t\t\t\t\tif(originDist > normalDist) {\n\t\t\t\t\t\tdrawlist.push(poly);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdrawlist.push(poly);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * A polygon is a connection of points in the shape object. You\n\t\t * should probably try to make them coplanar.\n\t\t */\n\t\tfunction Polygon(points, normal, backface, type, color) {\n\t\t\tthis.points = points;\n\n\t\t\tthis.origin = new Point(0, 0, 0);\n\t\t\tfor(var i = 0; i < this.points.length; i++) {\n\t\t\t\tthis.origin.x += this.points[i].x;\n\t\t\t\tthis.origin.y += this.points[i].y;\n\t\t\t\tthis.origin.z += this.points[i].z;\n\t\t\t}\n\n\t\t\tthis.origin.x /= this.points.length;\n\t\t\tthis.origin.y /= this.points.length;\n\t\t\tthis.origin.z /= this.points.length;\n\n\t\t\tif (normal) {\n\t\t\t\tthis.normal = new Point(this.origin.x + normal.x,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.origin.y + normal.y,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.origin.z + normal.z);\n\t\t\t} else {\n\t\t\t\tthis.normal = null;\n\t\t\t}\n\n\t\t\tthis.backface = backface;\n\t\t\tthis.type = type;\n\t\t\tthis.color = color;\n\t\t}\n\n\t\tPolygon.SOLID = 0;\n\t\tPolygon.WIRE = 1;\n\n\t\t/**\n\t\t * Draws the polygon. Assumes that the points have already been\n\t\t * flattened.\n\t\t */\n\t\tPolygon.prototype.draw = function() {\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(this.points[0].fx, this.points[0].fy);\n\n\t\t\tfor(var i = 0; i < this.points.length; i++) {\n\t\t\t\tctx.lineTo(this.points[i].fx, this.points[i].fy);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\n\t\t\tvar color = this.color;\n\n\t\t\t/*\n\t\t\t// Do lighting here\n\t\t\tlightvector = Math.abs(this.normal.x + this.normal.y);\n\t\t\tif(lightvector > 1) {\n\t\t\t\tlightvector = 1;\n\t\t\t}\n\n\t\t\tcolor[0] = (color[0] * lightvector).toString();\n\t\t\tcolor[1] = (color[1] * lightvector).toString();\n\t\t\tcolor[2] = (color[2] * lightvector).toString();\n\t\t\t*/\n\n\t\t\tif (color.length > 3) {\n\t\t\t\tvar style = [\"rgba(\",\n\t\t\t\t             color[0], \",\",\n\t\t\t\t             color[1], \",\",\n\t\t\t\t             color[2], \",\",\n\t\t\t\t             color[3], \")\"].join(\"\");\n\t\t\t} else {\n\t\t\t\tvar style = [\"rgb(\",\n\t\t\t\t             color[0], \",\",\n\t\t\t\t             color[1], \",\",\n\t\t\t\t             color[2], \")\"].join(\"\");\n\t\t\t}\n\n\t\t\tif (this.type == Polygon.SOLID) {\n\t\t\t\tctx.fillStyle = style;\n\t\t\t\tctx.fill();\n\t\t\t} else if (this.type == Polygon.WIRE) {\n\t\t\t\tctx.strokeStyle = style;\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * Scene describes the 3D environment\n\t\t */\n\t\tfunction Scene() {\n\t\t\tthis.shapes = {};\n\t\t\tthis.camera = new Point(0, 0, 0);\n\t\t\tthis.cameraTarget = new Point(0, 0, 0);\n\t\t\tthis.cameraRotation = 0;\n\n\t\t\tthis.drawlist = [];\n\t\t}\n\n\t\t/**\n\t\t * Draw the world\n\t\t */\n\t\tScene.prototype.draw = function() {\n\t\t\tspace.push();\n\n\t\t\t// Camera transformation\n\t\t\tspace.translate(\n\t\t\t\t-this.camera.x,\n\t\t\t\t-this.camera.y,\n\t\t\t\t-this.camera.z\n\t\t\t);\n\n\t\t\t// Camera rotation\n\t\t\tvar xdiff = this.cameraTarget.x - this.camera.x;\n\t\t\tvar ydiff = this.cameraTarget.y - this.camera.y;\n\t\t\tvar zdiff = this.cameraTarget.z - this.camera.z;\n\n\t\t\tvar xzdist = Math.sqrt(Math.pow(xdiff, 2) + Math.pow(zdiff, 2));\n\n\t\t\tvar xrot = -Math.atan2(ydiff, xzdist); // up/down rotation\n\t\t\tvar yrot =  Math.atan2(xdiff, zdiff);  // left/right rotation\n\n\t\t\tspace.rotate(xrot, yrot, this.cameraRotation);\n\n\t\t\t// Drawing\n\t\t\tthis.drawlist = [];\n\n\t\t\tfor(var i in this.shapes) {\n\t\t\t\tthis.shapes[i].draw(this.drawlist);\n\t\t\t}\n\n\t\t\t// Depth sorting (warning: this is only enough to drive this demo - feel\n\t\t\t// free to contribute a better system).\n\t\t\tthis.drawlist.sort(function (poly1, poly2) {\n\t\t\t\treturn poly2.origin.tz - poly1.origin.tz;\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < this.drawlist.length; i++) {\n\t\t\t\tthis.drawlist[i].draw();\n\t\t\t}\n\n\t\t\tspace.pop();\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\tvar count = 0;\n\n\t\tfunction loop() {\n\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n\t\t\tscene.camera.x = 70*Math.sin(count);\n\t\t\tscene.camera.y = 70;\n\t\t\tscene.camera.z = 70*Math.cos(count);\n\t\t\tscene.cameraRotation = count / 10;\n\n\t\t\tcount += 0.01;\n\t\t\tscene.draw();\n\t\t}\n\n\t\tfunction load() {\n\t\t\t// Init drawing system\n\t\t\tcanvas = document.getElementById(\"cv\");\n\t\t\tctx = canvas.getContext(\"2d\");\n\n\t\t\tcanvasWidth = canvas.width;\n\t\t\tcanvasHeight = canvas.height;\n\t\t\thalfCanvasWidth = canvasWidth * 0.5;\n\t\t\thalfCanvasHeight = canvasHeight * 0.5;\n\n\t\t\t// Init 3D components\n\t\t\tspace = new Space();\n\t\t\tscene = new Scene();\n\n\t\t\t// Create a box shape and add it to the scene\n\t\t\tscene.shapes['box'] = new Shape();\n\t\t\tvar p = scene.shapes['box'].points; // for convenience\n\n\t\t\tp[0] = new Point(-10, -10, -10); // left  bottom front\n\t\t\tp[1] = new Point(10, -10, -10);  // right bottom front\n\t\t\tp[2] = new Point(10, 10, -10);   // right top    front\n\t\t\tp[3] = new Point(-10, 10, -10);  // left  top    front\n\n\t\t\tp[4] = new Point(-10, -10, 10);  // left  bottom back\n\t\t\tp[5] = new Point(10, -10, 10);   // right bottom back\n\t\t\tp[6] = new Point(10, 10, 10);    // right top    back\n\t\t\tp[7] = new Point(-10, 10, 10);   // left  top    back\n\n\t\t\t// Back\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[1], p[2], p[3] ],\n\t\t\t\tnew Point(0, 0, -1),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[255, 0, 0]\n\t\t\t));\n\n\t\t\t// Front\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[4], p[5], p[6], p[7] ],\n\t\t\t\tnew Point(0, 0, 1),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 0, 255]\n\t\t\t));\n\n\t\t\t// Top\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[2], p[3], p[7], p[6] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.WIRE,\n\t\t\t\t[0, 255, 0]\n\t\t\t));\n\n\t\t\t// Transparent Top\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[2], p[3], p[7], p[6] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 255, 0, 0.4]\n\t\t\t));\n\n\t\t\t// Left\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[4], p[7], p[3] ],\n\t\t\t\tnew Point(-1, 0, 0),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[255, 255, 0]\n\t\t\t));\n\n\t\t\t// Right\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[1], p[5], p[6], p[2] ],\n\t\t\t\tnew Point(1, 0, 0),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 255, 255]\n\t\t\t));\n\n\t\t\t// Create a floor shape and add it to the scene\n\t\t\tscene.shapes['floor'] = new Shape();\n\t\t\tvar p = scene.shapes['floor'].points; // for convenience\n\n\t\t\tp[0]  = new Point(-40, -10, -40);\n\t\t\tp[1]  = new Point(-40, -10,  40);\n\t\t\tp[2] = new Point( 40, -10,  40);\n\t\t\tp[3] = new Point( 40, -10, -40);\n\n\t\t\t// Floor\n\t\t\tscene.shapes['floor'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[1], p[2], p[3] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[45, 45, 45]\n\t\t\t));\n\n\t\t\tsetInterval('loop()', 20);\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\t</script>\n\t<style>\n\tbody {\n\t\tbackground-color:black;\n\t\tmargin:50px;\n\t\ttext-align:center;\n\t}\n\t</style>\n</head>\n<body onload=\"load();\">\n  <canvas id=\"cv\" width=\"400\" height=\"300\"></canvas>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/examples/example3.html",
    "content": "<!DOCTYPE html>\n\n<!--\n\nCopyright 2006 Google Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-->\n\n<html>\n<head>\n<title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<style type=\"text/css\">\n\nbody {\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n}\n\n#image-rotator {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n}\n\n#image-rotator .tool-bar {\n  text-align: center;\n}\n\n.tool-bar button {\n  margin: 0.5em 0.5em 0 0;\n}\n\n#image-rotator img,\n#image-rotator canvas {\n  position: absolute;\n}\n\n</style>\n<script type=\"text/javascript\">\n\nfunction sawFunc(a) {\n  var PI = Math.PI;\n  var PI2 = PI / 2;\n  // make sure a is within 0 to PI\n  a = a % PI;\n  if (a < 0) {\n    a += PI;\n  }\n  if (a < PI2) {\n    return a / PI2;\n  } else {\n    return (PI - a) / PI2;\n  }\n}\n\nfunction easeInEaseOut(t) {\n  var t2 = t * t;\n  return 3 * t2 - 2 * t * t2;\n}\n\nfunction ImageRotator(el, src, w, h) {\n  this.element = el;\n  this.toolBar = el.getElementsByTagName(\"div\")[0];\n  this.canvas = el.getElementsByTagName(\"canvas\")[0];\n  var images = el.getElementsByTagName(\"img\");\n  this.image = images[images.length - 1];\n  var btns = el.getElementsByTagName(\"button\");\n  this.btnCw = btns[0];\n  this.btnCcw = btns[1];\n  var self = this;\n  this.btnCcw.onclick = function () {\n    self.rotateCcw();\n  };\n  this.btnCw.onclick = function () {\n    self.rotateCw();\n  };\n  this.image.onload = function (e) {\n    self.onImageLoad(e);\n  };\n  this.image.onerror = function (e) {\n    self.onImageError(e);\n  };\n  this.image.onabort = function (e) {\n    self.onImageAbort(e);\n  };\n  this.setImage(src, w, h);\n  this.layout();\n\n  var onResize = function () {\n    self.layout();\n  };\n  var onLoad = function () {\n    self.onWindowLoad();\n  };\n  if (window.addEventListener) {\n    window.addEventListener(\"resize\", onResize, false);\n    window.addEventListener(\"load\", onLoad, false);\n  } else if (window.attachEvent) {\n    window.attachEvent(\"onresize\", onResize);\n    window.attachEvent(\"onload\", onLoad);\n  }\n}\n\nImageRotator.prototype = {\n  getLoaded: function () {\n    return this.imageLoaded && this.windowLoaded;\n  },\n  setImage: function (src, w, h) {\n    this.imageLoaded = false;\n    this.image.src = src;\n    this.imageWidth = w;\n    this.imageHeight = h;\n  },\n\n  layout: function () {\n    var PI2 = Math.PI / 2;\n    var h = this.element.clientHeight;\n    var w = this.element.clientWidth;\n    var th = this.toolBar.offsetHeight;\n    h -= this.toolBar.offsetHeight;\n    if (!this.ctx || !this.getLoaded()) {\n      this.btnCw.disabled = true;\n      this.btnCcw.disabled = true;\n      this.canvas.style.display = \"none\";\n      this.image.style.display = \"block\";\n      var ratio = Math.min(w / this.imageWidth, h / this.imageHeight, 1);\n      var imgW = this.imageWidth * ratio;\n      var imgH = this.imageHeight * ratio;\n      var y = th + (h - imgH) / 2;\n      var x = (w - imgW) / 2;\n      this.image.style.left = Math.round(x) + \"px\";\n      this.image.style.top = Math.round(y) + \"px\";\n      this.image.style.width = Math.round(imgW) + \"px\";\n      this.image.style.height = Math.round(imgH) + \"px\";\n    } else {\n      this.btnCw.disabled = this.isAnimating_;\n      this.btnCcw.disabled = this.isAnimating_;\n      this.canvas.style.display = \"block\";\n      this.image.style.display = \"none\";\n\n      this.canvas.style.left = 0 + \"px\";\n      this.canvas.style.top = th + \"px\";\n      this.canvas.style.width = w + \"px\";\n      this.canvas.width = w;\n      this.canvas.style.height = h + \"px\";\n      this.canvas.height = h;\n\n      this.ctx.save();\n      this.ctx.clearRect(0, 0, w, h);\n      this.ctx.translate(w / 2, h / 2);\n      this.ctx.rotate(this.rotation);\n      // 0 -> 1, sin(0) = 0\n      // PI / 2 -> H / W, sin(PI/2) = 1\n\n      // sin(PI/2) = 1 -> limit factor is w and imgH\n\n      var iw = this.imageWidth;\n      var ih = this.imageHeight;\n      var scale;\n      if (iw <= w && iw <= h && ih <= h && ih <= w) {\n        scale = 1;\n      } else {\n        var sinr = sawFunc(this.rotation);\n        var cosr = sawFunc(this.rotation + PI2);\n        var ratio1 = sinr * Math.min(w / ih, h / iw);\n        var ratio2 = cosr * Math.min(w / iw, h / ih);\n        var ratio = Math.min(1, ratio1 + ratio2);\n        scale = ratio;\n      }\n      this.ctx.scale(scale, scale);\n      this.ctx.translate(-iw / 2, -ih / 2);\n      this.ctx.drawImage(this.image, 0, 0, iw, ih);\n      this.ctx.restore();\n    }\n  },\n\n  rotation: 0,\n  animationDuration: 500,\n\n  rotateCcw: function () {\n    if (!this.isAnimating_) {\n      this.startTime_ = (new Date).valueOf();\n      this.currentAngle_ = this.rotation;\n      this.deltaAngle_ = Math.PI / 2;\n      this.isAnimating_ = true;\n      this.animCounter_ = 0;\n      this.rotate_();\n    }\n  },\n\n  rotateCw: function () {\n    if (!this.isAnimating_) {\n      this.startTime_ = (new Date).valueOf();\n      this.currentAngle_ = this.rotation;\n      this.deltaAngle_ = -Math.PI / 2;\n      this.isAnimating_ = true;\n      this.animCounter_ = 0;\n      this.rotate_();\n    }\n  },\n\n  rotate_: function () {\n    if (this.isAnimating_) {\n      var t = easeInEaseOut(Math.min(1, (new Date - this.startTime_) /\n                            this.animationDuration));\n      this.rotation = t * this.deltaAngle_ + this.currentAngle_;\n      if (t < 1) {\n        var self = this;\n        window.setTimeout(function () {\n          self.rotate_();\n        }, 10);\n      } else {\n        this.isAnimating_ = false;\n      }\n      this.layout();\n    }\n  },\n\n  onImageLoad: function (e) {\n    this.imageLoaded = true;\n    this.initCanvas();\n  },\n  onImageError: function (e) {\n    this.imageLoaded = false;\n  },\n  onImageAbort: function (e) {\n    this.imageLoaded = false;\n  },\n  onWindowLoad: function (e) {\n    this.windowLoaded = true;\n    this.initCanvas();\n  },\n\n  initCanvas: function () {\n    if (!this.ctx && this.getLoaded()) {\n      // IE recreates the element?\n      this.canvas = this.element.getElementsByTagName(\"canvas\")[0];\n      this.ctx = this.canvas.getContext(\"2d\");\n\n      if (!this.ctx) {\n        return;\n      }\n      this.layout();\n    }\n  }\n};\n\n</script>\n</head>\n<body>\n\n<div id=\"image-rotator\">\n  <div class=\"tool-bar\">\n    <button>Rotate Left</button><button>Rotate Right</button>\n  </div>\n  <canvas id=\"c\"></canvas>\n  <img src=\"\" alt=\"\">\n</div>\n<script type=\"text/javascript\">\n  new ImageRotator(document.getElementById(\"image-rotator\"),\n                   \"ff.jpg\", 608, 380);\n</script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/excanvas.compiled.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\ndocument.createElement(\"canvas\").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement(\"canvas\");a.attachEvent(\"onreadystatechange\",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||\nb.namespaces.add(\"g_vml_\",\"urn:schemas-microsoft-com:vml\",\"#default#VML\");b.namespaces.g_o_||b.namespaces.add(\"g_o_\",\"urn:schemas-microsoft-com:office:office\",\"#default#VML\");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id=\"ex_canvas_\";a.cssText=\"canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:*{behavior:url(#default#VML)}g_o_\\\\:*{behavior:url(#default#VML)}\"}var c=b.getElementsByTagName(\"canvas\"),d=0;for(;d<c.length;d++)this.initElement(c[d])},\ninitElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML=\"\";b.attachEvent(\"onpropertychange\",Z);b.attachEvent(\"onresize\",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+\"px\";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+\"px\";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case \"width\":a.style.width=a.attributes.width.nodeValue+\"px\";a.getContext().clearRect();\nbreak;case \"height\":a.style.height=a.attributes.height.nodeValue+\"px\";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+\"px\";a.firstChild.style.height=a.clientHeight+\"px\"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=\nh}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)==\"rgb\"){var d=b.indexOf(\"(\",3),f=b.indexOf(\")\",d+\n1),h=b.substring(d+1,f).split(\",\");a=\"#\";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)==\"a\")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case \"butt\":return\"flat\";case \"round\":return\"round\";case \"square\":default:return\"square\"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;\nvar a=b.ownerDocument.createElement(\"div\");a.style.width=b.clientWidth+\"px\";a.style.height=b.clientHeight+\"px\";a.style.overflow=\"hidden\";a.style.position=\"absolute\";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=\"\"};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"moveTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};\ni.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"lineTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:\"bezierCurveTo\",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+\n0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?\"at\":\"wa\",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,\na);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,\na,c,d){var f=new D(\"gradient\");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D(\"gradientradial\");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width=\"auto\";b.runtimeStyle.height=\"auto\";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==\n5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error(\"Invalid number of arguments\");var q=this.getCoords_(a,c),t=[];t.push(\" <g_vml_:group\",' coordsize=\"',k*10,\",\",k*10,'\"',' coordorigin=\"0,0\"',' style=\"width:',10,\"px;height:\",10,\"px;position:absolute;\");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push(\"M11=\",\nthis.m_[0][0],\",\",\"M12=\",this.m_[1][0],\",\",\"M21=\",this.m_[0][1],\",\",\"M22=\",this.m_[1][1],\",\",\"Dx=\",j(q.x/k),\",\",\"Dy=\",j(q.y/k),\"\");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push(\"padding:0 \",j(p.x/k),\"px \",j(p.y/k),\"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(\",E.join(\"\"),\", sizingmethod='clip');\")}else t.push(\"top:\",j(q.y/k),\"px;left:\",j(q.x/k),\"px;\");t.push(' \">','<g_vml_:image src=\"',b.src,\n'\"',' style=\"width:',k*d,\"px;\",\" height:\",k*f,'px;\"',' cropleft=\"',h/n,'\"',' croptop=\"',g/o,'\"',' cropright=\"',(n-h-l)/n,'\"',' cropbottom=\"',(o-g-e)/o,'\"',\" />\",\"</g_vml_:group>\");this.element_.insertAdjacentHTML(\"BeforeEnd\",t.join(\"\"))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push(\"<g_vml_:shape\",' filled=\"',!!b,'\"',' style=\"position:absolute;width:',10,\"px;height:\",10,'px;\"',' coordorigin=\"0 0\" coordsize=\"',k*10,\" \",k*10,'\"',' stroked=\"',\n!b,'\"',' path=\"');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case \"moveTo\":a.push(\" m \",j(e.x),\",\",j(e.y));break;case \"lineTo\":a.push(\" l \",j(e.x),\",\",j(e.y));break;case \"close\":a.push(\" x \");e=null;break;case \"bezierCurveTo\":a.push(\" c \",j(e.cp1x),\",\",j(e.cp1y),\",\",j(e.cp2x),\",\",j(e.cp2y),\",\",j(e.x),\",\",j(e.y));break;case \"at\":case \"wa\":a.push(\" \",e.type,\" \",j(e.x-this.arcScaleX_*e.radius),\",\",j(e.y-this.arcScaleY_*e.radius),\n\" \",j(e.x+this.arcScaleX_*e.radius),\",\",j(e.y+this.arcScaleY_*e.radius),\" \",j(e.xStart),\",\",j(e.yStart),\" \",j(e.xEnd),\",\",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' \">');if(b)if(typeof this.fillStyle==\"object\"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_==\"gradient\"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),\nz=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+\no+\" \"+T.color)}a.push('<g_vml_:fill type=\"',m.type_,'\"',' method=\"none\" focus=\"100%\"',' color=\"',da,'\"',' color2=\"',ea,'\"',' colors=\"',S.join(\",\"),'\"',' opacity=\"',ga,'\"',' g_o_:opacity2=\"',fa,'\"',' angle=\"',r,'\"',' focusposition=\"',n.x,\",\",n.y,'\" />')}else a.push('<g_vml_:fill color=\"',d,'\" opacity=\"',f,'\" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push(\"<g_vml_:stroke\",' opacity=\"',f,'\"',' joinstyle=\"',this.lineJoin,'\"',' miterlimit=\"',this.miterLimit,'\"',' endcap=\"',aa(this.lineCap),\n'\"',' weight=\"',K,'px\"',' color=\"',d,'\" />')}a.push(\"</g_vml_:shape>\");this.element_.insertAdjacentHTML(\"beforeEnd\",a.join(\"\"))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:\"close\"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),\nthis);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,\n0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=\nM;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns are not implemented.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // create xmlns\n      if (!doc.namespaces['g_vml_']) {\n        doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                           '#default#VML');\n\n      }\n      if (!doc.namespaces['g_o_']) {\n        doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                           '#default#VML');\n      }\n\n      // Setup default CSS.  Only add one style sheet per document\n      if (!doc.styleSheets['ex_canvas_']) {\n        var ss = doc.createStyleSheet();\n        ss.owningElement.id = 'ex_canvas_';\n        ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n            // default size is 300x150 in Gecko and Opera\n            'text-align:left;width:300px;height:150px}' +\n            'g_vml_\\\\:*{behavior:url(#default#VML)}' +\n            'g_o_\\\\:*{behavior:url(#default#VML)}';\n\n      }\n\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n\n        el.getContext = getContext;\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n      case 'height':\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var dec2hex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.substring(0, 3) == 'rgb') {\n      var start = styleString.indexOf('(', 3);\n      var end = styleString.indexOf(')', start + 1);\n      var guts = styleString.substring(start + 1, end).split(',');\n\n      str = '#';\n      for (var i = 0; i < 3; i++) {\n        str += dec2hex[Number(guts[i])];\n      }\n\n      if (guts.length == 4 && styleString.substr(3, 1) == 'a') {\n        alpha = guts[3];\n      }\n    } else {\n      str = styleString;\n    }\n\n    return {color: str, alpha: alpha};\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\")\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px;\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd',\n                                    vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var lineStr = [];\n    var lineOpen = false;\n    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * this.globalAlpha;\n\n    var W = 10;\n    var H = 10;\n\n    lineStr.push('<g_vml_:shape',\n                 ' filled=\"', !!aFill, '\"',\n                 ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                 ' coordorigin=\"0 0\" coordsize=\"', Z * W, ' ', Z * H, '\"',\n                 ' stroked=\"', !aFill, '\"',\n                 ' path=\"');\n\n    var newSeq = false;\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var i = 0; i < this.currentPath_.length; i++) {\n      var p = this.currentPath_[i];\n      var c;\n\n      switch (p.type) {\n        case 'moveTo':\n          c = p;\n          lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'lineTo':\n          lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'close':\n          lineStr.push(' x ');\n          p = null;\n          break;\n        case 'bezierCurveTo':\n          lineStr.push(' c ',\n                       mr(p.cp1x), ',', mr(p.cp1y), ',',\n                       mr(p.cp2x), ',', mr(p.cp2y), ',',\n                       mr(p.x), ',', mr(p.y));\n          break;\n        case 'at':\n        case 'wa':\n          lineStr.push(' ', p.type, ' ',\n                       mr(p.x - this.arcScaleX_ * p.radius), ',',\n                       mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                       mr(p.x + this.arcScaleX_ * p.radius), ',',\n                       mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                       mr(p.xStart), ',', mr(p.yStart), ' ',\n                       mr(p.xEnd), ',', mr(p.yEnd));\n          break;\n      }\n\n\n      // TODO: Following is broken for curves due to\n      //       move to proper paths.\n\n      // Figure out dimensions so we can do gradient fills\n      // properly\n      if (p) {\n        if (min.x == null || p.x < min.x) {\n          min.x = p.x;\n        }\n        if (max.x == null || p.x > max.x) {\n          max.x = p.x;\n        }\n        if (min.y == null || p.y < min.y) {\n          min.y = p.y;\n        }\n        if (max.y == null || p.y > max.y) {\n          max.y = p.y;\n        }\n      }\n    }\n    lineStr.push(' \">');\n\n    if (!aFill) {\n      var lineWidth = this.lineScale_ * this.lineWidth;\n\n      // VML cannot correctly render a line if the width is less than 1px.\n      // In that case, we dilute the color to make the line look thinner.\n      if (lineWidth < 1) {\n        opacity *= lineWidth;\n      }\n\n      lineStr.push(\n        '<g_vml_:stroke',\n        ' opacity=\"', opacity, '\"',\n        ' joinstyle=\"', this.lineJoin, '\"',\n        ' miterlimit=\"', this.miterLimit, '\"',\n        ' endcap=\"', processLineCap(this.lineCap), '\"',\n        ' weight=\"', lineWidth, 'px\"',\n        ' color=\"', color, '\" />'\n      );\n    } else if (typeof this.fillStyle == 'object') {\n      var fillStyle = this.fillStyle;\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / this.arcScaleX_;\n        var y0 = fillStyle.y0_ / this.arcScaleY_;\n        var x1 = fillStyle.x1_ / this.arcScaleX_;\n        var y1 = fillStyle.y1_ / this.arcScaleY_;\n        var p0 = this.getCoords_(x0, y0);\n        var p1 = this.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        var width  = max.x - min.x;\n        var height = max.y - min.y;\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= this.arcScaleX_ * Z;\n        height /= this.arcScaleY_ * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * this.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * this.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else {\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n\n    lineStr.push('</g_vml_:shape>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  }\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    }\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    copyState(this.aStack_.pop(), this);\n    this.m_ = this.mStack_.pop();\n  };\n\n  function matrixIsFinite(m) {\n    for (var j = 0; j < 3; j++) {\n      for (var k = 0; k < 2; k++) {\n        if (!isFinite(m[j][k]) || isNaN(m[j][k])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function() {\n    return new CanvasPattern_;\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_() {}\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n\n})();\n\n} // if\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/arc.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Arc Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.beginPath();\n  ctx.arc(25, 25, 20, 0, Math.PI, false);\n  ctx.stroke();\n\n  ctx.save();\n  ctx.scale(0.5, 0.5);\n  ctx.beginPath();\n  ctx.arc(75, 25, 20, 0, Math.PI * 2, false);\n  ctx.stroke();\n  ctx.restore();\n\n  ctx.beginPath();\n  ctx.arc(25, 75, 20, 0, Math.PI, true);\n  ctx.stroke();\n\n  ctx.beginPath();\n  ctx.arc(75, 75, 20, 0, Math.PI * 2, true);\n  ctx.stroke();\n\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=100></canvas>\n\n<p>This tests that drawing arches work in the same way in different\nbrowsers.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/clearpath.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Clear path Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  // Need to test  clearRect, strokeRect, fillRect\n  ctx.beginPath();\n  ctx.moveTo(0, 50);\n  ctx.lineTo(50, 100);\n\n  ctx.strokeRect(100.5, 125.5, 49, 49);\n\n  ctx.lineTo(100, 50);\n\n  ctx.fillRect(50, 125, 50, 50);\n\n  ctx.lineTo(50, 0);\n\n  // clearRect is not correctly implmented in ExCanvas but for this test its\n  // current behavior is enough.\n  ctx.clearRect(50, 125, 100, 50);\n\n  ctx.lineTo(0, 50);\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests the clearing of the path. You should only see a diamond shape\nabove.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/drawimage.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Overflow Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  var img = document.images[0];\n\n  ctx.rotate(Math.PI / 8);\n  ctx.drawImage(img, 50, 50);\n\n  img.style.display = 'none';\n\n};\n\n</script>\n</head>\n<body>\n\n<img src=\"../examples/ff.jpg\">\n\n<canvas id=c width=200 height=200></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Gradient Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n  var g = ctx.createLinearGradient(0, 0, 300, 0);\n  g.addColorStop(0, '#000');\n  g.addColorStop(1 / 7, '#00f');\n  g.addColorStop(2 / 7, '#0f0');\n  g.addColorStop(3 / 7, '#0ff');\n  g.addColorStop(4 / 7, '#f00');\n  g.addColorStop(5 / 7, '#f0f');\n  g.addColorStop(6 / 7, '#ff0');\n  g.addColorStop(1, '#fff');\n  ctx.fillStyle = g;\n  ctx.fillRect(0, 0, 300, 200);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=300 height=200></canvas>\n\n<p>This tests gradients</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient2.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Gradient Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  var g1 = ctx.createLinearGradient(0, 0, 300, 200);\n  g1.addColorStop(0.0, 'rgba(0, 255, 0, 0.0)');\n  g1.addColorStop(1.0, 'rgba(0, 255, 0, 1.0)');\n\n  var g2 = ctx.createLinearGradient(0, 0, 300, 200);\n  g2.addColorStop(0.0, 'rgba(0, 255, 0, 1.0)');\n  // VML Bug\n  g2.addColorStop(1.0, 'rgba(0, 0, 0, 0.0)');\n  ctx.fillStyle = g1;\n  ctx.fillRect(0, 0, 300, 100);\n  ctx.fillStyle = g2;\n  ctx.fillRect(0, 100, 300, 100);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=300 height=200></canvas>\n\n<p>This tests gradients</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/linewidth.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Line Width Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.strokeStyle = 'black';\n  ctx.lineWidth = 1;\n  for (var i = 0; i < 100; i++) {\n    ctx.beginPath();\n    ctx.moveTo(49 + i / 100, i);\n    ctx.lineTo(49 + i / 100, i + 1);\n    ctx.closePath();\n    ctx.stroke();\n  }\n\n  for (var i = 0; i < 100; i++) {\n    ctx.beginPath();\n    ctx.moveTo(i, 49 + i / 100);\n    ctx.lineTo(i + 1, 49 + i / 100);\n    ctx.closePath();\n    ctx.stroke();\n  }\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=100 height=100></canvas>\n\n<p>This tests that lines work in the same way in different browsers when you are\nusing sub pixel coordinates.</p>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/overflow.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Overflow Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\t\n  ctx.fillStyle = 'blue';\n  ctx.fillRect(-50, -50, 100, 100);\n  \n  ctx.fillStyle = 'green';\n  ctx.fillRect(50, 50, 100, 100);\n  \n  ctx.strokeStyle = 'black';\n  ctx.strokeRect(0, 0, 100, 100);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=100 height=100></canvas>\n\n<p>This tests if content gets cropped if painting outside the canvas.</p>\n\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/quadraticcurve.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Quadratic Curve Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.save();\n\n  ctx.strokeStyle = 'black';\n  ctx.lineWidth = 1;\n  ctx.beginPath();\n  ctx.moveTo(50, 50);\n  ctx.quadraticCurveTo(0, 0, 25, 75);\n  ctx.quadraticCurveTo(50, 0, 50, 50);\n  ctx.stroke();\n\n  ctx.restore();\n\n  // Same with some scaling\n  ctx.save();\n\n  ctx.translate(-56, -24);\n  ctx.scale(3.5, 1.5);\n  ctx.strokeStyle = '#ddd';\n  ctx.lineWidth = 1;\n  ctx.beginPath();\n  ctx.moveTo(50, 50);\n  ctx.quadraticCurveTo(0, 0, 25, 75);\n  ctx.quadraticCurveTo(50, 0, 50, 50);\n  ctx.stroke();\n\n  ctx.restore();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests that drawing quadratic curves work in the same way in different\nbrowsers.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/resizing.html",
    "content": "<html>\n<head>\n  <title>ExplorerCanvas Text Case</title>\n  <!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n  <script>\n    // Safari is known not to handle resizing well, expect this to\n    // compare to Firefox\n\n    var cv, ctx, size = 80;\n    var img = new Image();\n    img.src = \"../examples/ff.jpg\";\n\n    function a() {\n      cv = document.getElementById(\"aa\");\n      ctx = cv.getContext(\"2d\");\n\n      l();\n    }\n\n    function l() {\n      size = (size + 1) % 800;\n      cv.width = Number(size + 200);\n      cv.height = Number((size + 200) / 2);\n\n      // Firefox autoclears the canvas at this point\n\n      ctx.save();\n      ctx.translate(50, 50);\n      ctx.scale(0.1, 0.1);\n      ctx.rotate(size/800 * Math.PI*8);\n      ctx.drawImage(img, 0, -75);\n      ctx.restore();\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.moveTo(0, 0);\n      ctx.lineTo(cv.width, cv.height);\n      ctx.moveTo(20, 20);\n      ctx.lineTo(80, 20);\n      ctx.lineTo(80, 80);\n      ctx.lineTo(20, 80);\n      ctx.stroke();\n      ctx.closePath();\n      ctx.restore();\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.scale(size / 200, size / 200);\n      ctx.arc(100, 50, 20, 0, Math.PI, true);\n      ctx.fill();\n      ctx.restore();\n\n      setTimeout(l, 50);\n    }\n  </script>\n  <style>\n    canvas {\n      background-color:#eee;\n    }\n  </style>\n</head>\n<body onload=\"a();\">\n<canvas id=\"aa\" width=\"200\" height=\"200\">Fallback <b>content</b> markup</canvas>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/saverestorepath.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Save/restore path Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  // Need to test  clearRect, strokeRect, fillRect\n  ctx.beginPath();\n  ctx.moveTo(0, 50);\n  ctx.lineTo(50, 100);\n\n  ctx.save();\n  ctx.lineTo(100, 50);\n  ctx.restore();\n\n  ctx.save();\n  ctx.lineTo(50, 0);\n  ctx.restore();\n\n  ctx.save();\n  ctx.lineTo(0, 50);\n  ctx.restore();\n\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests ensures that save/restore does not do anything to the current\npath. You should see a diamond shape above.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-scale-rotate.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Stroke Scale</title>\n<style>\n\nbody {\n  text-align: center\n}\n\ncanvas {\n  background: #eee;\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\n// draw a star\nfunction drawStar (ctx, r){\n  ctx.save();\n\n  ctx.beginPath();\n  ctx.rotate(-Math.PI / 10);\n  ctx.scale(r, r);\n  ctx.moveTo(1, 0);\n  ctx.lineWidth = ctx.lineWidth / r;\n\n  for (var i = 0; i < 9; i++) {\n    ctx.rotate(Math.PI / 5);\n    if (i % 2 == 0) {\n      ctx.lineTo(0.3819653016466596, 0);\n    } else {\n      ctx.lineTo(1, 0);\n    }\n  }\n  ctx.closePath();\n  ctx.fill();\n  ctx.stroke();\n\n  ctx.restore();\n}\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.save();\n\n  ctx.translate(100.5, 100);\n  ctx.lineWidth = 1;\n\n  ctx.beginPath();\n  ctx.moveTo(0, 0);\n  ctx.lineTo(50, 0);\n  ctx.scale(1, 2);\n  ctx.rotate(Math.PI / 2);\n  ctx.lineTo(25, -50)\n  ctx.rotate(Math.PI / 2);\n  ctx.lineTo(0, -25)\n  ctx.scale(1, 2);\n  ctx.closePath();\n  ctx.stroke();\n\n  ctx.restore();\n\n  ctx.translate(50, 50);\n\n  ctx.fillStyle = 'white';\n  ctx.strokeStyle = 'blue';\n  drawStar(ctx, 20);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=500 height=500></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-should-not-close-path.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title></title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n\n  var canvas = document.getElementById(\"c\");\n  var ctx = canvas.getContext(\"2d\");\n\n  ctx.fillStyle = \"#ccc\";\n  ctx.strokeStyle = \"#000\";\n\n  ctx.beginPath();\n  ctx.moveTo(30, 30);\n  ctx.lineTo(150, 150);\n  ctx.bezierCurveTo(60, 70, 60, 70, 70, 150);\n  ctx.fill();\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-apollo.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\n\\r]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[!-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-clj.js",
    "content": "/*\n Copyright (C) 2011 Google Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^[([{]+/,a,\"([{\"],[\"clo\",/^[)\\]}]+/,a,\")]}\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\\b/,a],\n[\"typ\",/^:[\\dA-Za-z-]+/]]),[\"clj\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-css.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\f\\r ]+/,null,\" \\t\\r\\n\f\"]],[[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*\"/,null],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*'/,null],[\"lang-css-str\",/^url\\(([^\"')]*)\\)/i],[\"kwd\",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\\w-]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*)\\s*:/i],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],[\"com\",\n/^(?:<\\!--|--\\>)/],[\"lit\",/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[\"lit\",/^#[\\da-f]{3,6}/i],[\"pln\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i],[\"pun\",/^[^\\s\\w\"']+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"kwd\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"str\",/^[^\"')]+/]]),[\"css-str\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-go.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"pln\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])+(?:'|$)|`[^`]*(?:`|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\/\\*[\\S\\s]*?\\*\\/)/],[\"pln\",/^(?:[^\"'/`]|\\/(?![*/]))+/]]),[\"go\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-hs.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\u000b\f\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])'?/,null,\"'\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^(?:--+[^\\n\\f\\r]*|{-(?:[^-]|-+[^}-])*-})/],[\"kwd\",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\\d'A-Za-z]|$)/,\nnull],[\"pln\",/^(?:[A-Z][\\w']*\\.)*[A-Za-z][\\w']*/],[\"pun\",/^[^\\d\\t-\\r \"'A-Za-z]+/]]),[\"hs\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lisp.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,a,\"(\"],[\"clo\",/^\\)+/,a,\")\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,a],\n[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"cl\",\"el\",\"lisp\",\"scm\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lua.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^--(?:\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)|[^\\n\\r]*)/],[\"str\",/^\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)/],[\"kwd\",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,null],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],\n[\"pln\",/^[_a-z]\\w*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xa0][^\\w\\t\\n\\r \"'+=\\xa0-]*/]]),[\"lua\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-ml.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xa0]+(?:[$_a-z][\\w']*|``[^\\t\\n\\r`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\(\\*[\\S\\s]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^(?:[_a-z][\\w']*[!#?]?|``[^\\t\\n\\r`]*(?:``|$))/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0]+/]]),[\"fs\",\"ml\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-n.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*'|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,a,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\xa0\"]],[[\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,a],[\"str\",/^<#[^#>]*(?:#>|$)/,a],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,a],[\"com\",/^\\/\\/[^\\n\\r]*/,a],[\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,\na],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\na],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,a],[\"lit\",/^@[$_a-z][\\w$@]*/i,a],[\"typ\",/^@[A-Z]+[a-z][\\w$@]*/,a],[\"pln\",/^'?[$_a-z][\\w$@]*/i,a],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w\"-$'./@`]*/,a]]),[\"n\",\"nemerle\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-proto.js",
    "content": "PR.registerLangHandler(PR.sourceDecorator({keywords:\"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true\",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\\b/,cStyleComments:!0}),[\"proto\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-scala.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:\"\"(?:\"\"?(?!\")|[^\"\\\\]|\\\\.)*\"{0,3}|(?:[^\\n\\r\"\\\\]|\\\\.)*\"?)/,null,'\"'],[\"lit\",/^`(?:[^\\n\\r\\\\`]|\\\\.)*`?/,null,\"`\"],[\"pun\",/^[!#%&(--:-@[-^{-~]+/,null,\"!#%&()*+,-:;<=>?@[\\\\]^{|}~\"]],[[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\(?:'|[^\\n\\r']+))'/],[\"lit\",/^'[$A-Z_a-z][\\w$]*(?![\\w$'])/],[\"kwd\",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\\b/],\n[\"lit\",/^(?:true|false|null|this)\\b/],[\"lit\",/^(?:0(?:[0-7]+|x[\\da-f]+)l?|(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:e[+-]?\\d+)?f?|l?)|\\\\.\\d+(?:e[+-]?\\d+)?f?)/i],[\"typ\",/^[$_]*[A-Z][\\d$A-Z_]*[a-z][\\w$]*/],[\"pln\",/^[$A-Z_a-z][\\w$]*/],[\"com\",/^\\/(?:\\/.*|\\*(?:\\/|\\**[^*/])*(?:\\*+\\/?)?)/],[\"pun\",/^(?:\\.+|\\/)/]]),[\"scala\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-sql.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,null,\"\\\"'\"]],[[\"com\",/^(?:--[^\\n\\r]*|\\/\\*[\\S\\s]*?(?:\\*\\/|$))/],[\"kwd\",/^(?:add|all|alter|and|any|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|merge|national|nocheck|nonclustered|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|percent|plan|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rule|save|schema|select|session_user|set|setuser|shutdown|some|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|union|unique|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|writetext)(?=[^\\w-]|$)/i,\nnull],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^[_a-z][\\w-]*/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'+\\xa0-]*/]]),[\"sql\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-tex.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[()=[\\]{}]+/]]),[\"latex\",\"tex\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vb.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\xa0  \"],[\"str\",/^(?:[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})(?:[\"\\u201c\\u201d]c|$)|[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})*(?:[\"\\u201c\\u201d]|$))/i,null,'\"“”'],[\"com\",/^['\\u2018\\u2019].*/,null,\"'‘’\"]],[[\"kwd\",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\\b/i,\nnull],[\"com\",/^rem.*/i],[\"lit\",/^(?:true\\b|false\\b|nothing\\b|\\d+(?:e[+-]?\\d+[dfr]?|[dfilrs])?|(?:&h[\\da-f]+|&o[0-7]+)[ils]?|\\d*\\.\\d+(?:e[+-]?\\d+)?[dfr]?|#\\s+(?:\\d+[/-]\\d+[/-]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*|\\[(?:[a-z]|_\\w)\\w*])/i],[\"pun\",/^[^\\w\\t\\n\\r \"'[\\]\\xa0\\u2018\\u2019\\u201c\\u201d\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|])/]]),[\"vb\",\"vbs\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vhdl.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"]],[[\"str\",/^(?:[box]?\"(?:[^\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\n\\r]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\nnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w.\\\\]+#(?:[+-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:e[+-]?\\d+(?:_\\d+)*)?)/i],\n[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'\\xa0-]*/]]),[\"vhdl\",\"vhd\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-wiki.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\d\\t a-gi-z\\xa0]+/,null,\"\\t \\xa0abcdefgijklmnopqrstuvwxyz0123456789\"],[\"pun\",/^[*=[\\]^~]+/,null,\"=*~^[]\"]],[[\"lang-wiki.meta\",/(?:^^|\\r\\n?|\\n)(#[a-z]+)\\b/],[\"lit\",/^[A-Z][a-z][\\da-z]+[A-Z][a-z][^\\W_]+\\b/],[\"lang-\",/^{{{([\\S\\s]+?)}}}/],[\"lang-\",/^`([^\\n\\r`]+)`/],[\"str\",/^https?:\\/\\/[^\\s#/?]*(?:\\/[^\\s#?]*)?(?:\\?[^\\s#]*)?(?:#\\S*)?/i],[\"pln\",/^(?:\\r\\n|[\\S\\s])[^\\n\\r#*=A-[^`h{~]*/]]),[\"wiki\"]);\nPR.registerLangHandler(PR.createSimpleLexer([[\"kwd\",/^#[a-z]+/i,null,\"#\"]],[]),[\"wiki.meta\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-xq.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"var pln\",/^\\$[\\w-]+/,null,\"$\"]],[[\"pln\",/^[\\s=][<>][\\s=]/],[\"lit\",/^@[\\w-]+/],[\"tag\",/^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"com\",/^\\(:[\\S\\s]*?:\\)/],[\"pln\",/^[(),/;[\\]{}]$/],[\"str\",/^(?:\"(?:[^\"\\\\{]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\{]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"],[\"kwd\",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\\b/],\n[\"typ\",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\\b/,null],[\"fun pln\",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\\b/],\n[\"pln\",/^[\\w:-]+/],[\"pln\",/^[\\t\\n\\r \\xa0]+/]]),[\"xq\",\"xquery\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-yaml.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:>?|]+/,a,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^\\n\\r#]+/,a,\"%\"],[\"typ\",/^&\\S+/,a,\"&\"],[\"typ\",/^!\\S*/,a,\"!\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,a,\"'\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\n\\r]|$)/],[\"pun\",/^-/],[\"kwd\",/^\\w+:[\\n\\r ]/],[\"pln\",/^\\w+/]]),[\"yaml\",\"yml\"]);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.css",
    "content": ".pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.js",
    "content": "var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;\n(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:\"0\"<=b&&b<=\"7\"?parseInt(a.substring(1),8):b===\"u\"||b===\"x\"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?\"\\\\x0\":\"\\\\x\")+a.toString(16);a=String.fromCharCode(a);if(a===\"\\\\\"||a===\"-\"||a===\"[\"||a===\"]\")a=\"\\\\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\S\\s]|[^\\\\]/g),a=\n[],b=[],o=f[0]===\"^\",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&\"-\"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=[\"[\"];o&&b.push(\"^\");b.push.apply(b,a);for(c=0;c<\nf.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push(\"-\"),b.push(e(i[1])));b.push(\"]\");return b.join(\"\")}function y(a){for(var f=a.source.match(/\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*]|\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\\\d+|\\\\[^\\dux]|\\(\\?[!:=]|[()^]|[^()[\\\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j===\"(\"?++i:\"\\\\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j===\"(\"?(++i,d[i]===void 0&&(f[c]=\"(?:\")):\"\\\\\"===j.charAt(0)&&\n(j=+j.substring(1))&&j<=i&&(f[c]=\"\\\\\"+d[i]);for(i=c=0;c<b;++c)\"^\"===f[c]&&\"^\"!==f[c+1]&&(f[c]=\"\");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a===\"[\"?f[c]=h(j):a!==\"\\\\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return f.join(\"\")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\\\u[\\da-f]{4}|\\\\x[\\da-f]{2}|\\\\[^UXux]/gi,\"\"))){s=!0;l=!1;break}}for(var r=\n{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(\"\"+g);n.push(\"(?:\"+y(g)+\")\")}return RegExp(n.join(\"|\"),l?\"gi\":\"g\")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if(\"BR\"===g||\"LI\"===g)h[s]=\"\\n\",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\\r\\n?/g,\"\\n\"):g.replace(/[\\t\\n\\r ]+/g,\" \"),h[s]=g,t[s<<1]=y,y+=g.length,\nt[s++<<1|1]=a)}}var e=/(?:^|\\s)nocode(?:\\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue(\"white-space\"));var p=l&&\"pre\"===l.substring(0,3);m(a);return{a:h.join(\"\").replace(/\\n$/,\"\"),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,\"pln\"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===\n\"string\")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b=\"pln\")}if((c=b.length>=5&&\"lang-\"===b.substring(0,5))&&!(o&&typeof o[1]===\"string\"))c=!1,b=\"src\";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),\nl=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=\"\"+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\\S\\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push([\"str\",/^(?:'''(?:[^'\\\\]|\\\\[\\S\\s]|''?(?=[^']))*(?:'''|$)|\"\"\"(?:[^\"\\\\]|\\\\[\\S\\s]|\"\"?(?=[^\"]))*(?:\"\"\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$))/,q,\"'\\\"\"]):a.multiLineStrings?m.push([\"str\",/^(?:'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|`(?:[^\\\\`]|\\\\[\\S\\s])*(?:`|$))/,\nq,\"'\\\"`\"]):m.push([\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,q,\"\\\"'\"]);a.verbatimStrings&&e.push([\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,\"#\"]):m.push([\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,q,\"#\"]),e.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,q])):m.push([\"com\",/^#[^\\n\\r]*/,\nq,\"#\"]));a.cStyleComments&&(e.push([\"com\",/^\\/\\/[^\\n\\r]*/,q]),e.push([\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,q]));a.regexLiterals&&e.push([\"lang-regex\",/^(?:^^\\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|,|-=|->|\\/|\\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\\^=|\\^\\^|\\^\\^=|{|\\||\\|=|\\|\\||\\|\\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*(\\/(?=[^*/])(?:[^/[\\\\]|\\\\[\\S\\s]|\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*(?:]|$))+\\/)/]);(h=a.types)&&e.push([\"typ\",h]);a=(\"\"+a.keywords).replace(/^ | $/g,\n\"\");a.length&&e.push([\"kwd\",RegExp(\"^(?:\"+a.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),q]);m.push([\"pln\",/^\\s+/,q,\" \\r\\n\\t\\xa0\"]);e.push([\"lit\",/^@[$_a-z][\\w$@]*/i,q],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][\\w$@]*|\\w+_t\\b)/,q],[\"pln\",/^[$_a-z][\\w$@]*/i,q],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,q,\"0123456789\"],[\"pln\",/^\\\\[\\S\\s]?/,q],[\"pun\",/^.[^\\s\\w\"-$'./@\\\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if(\"BR\"===a.nodeName)h(a),\na.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}\nfor(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\\s)nocode(?:\\s|$)/,t=/\\r\\n?|\\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue(\"white-space\"));var p=l&&\"pre\"===l.substring(0,3);for(l=s.createElement(\"LI\");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute(\"value\",\nm);var r=s.createElement(\"OL\");r.className=\"linenums\";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className=\"L\"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode(\"\\xa0\")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn(\"cannot override language handler %s\",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\\s*</.test(m)?\"default-markup\":\"default-code\";return A[a]}function E(a){var m=\na.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\\bMSIE\\b/.test(navigator.userAgent),m=/\\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,\"\\r\"));i.nodeValue=\nj;var u=i.ownerDocument,v=u.createElement(\"SPAN\");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){\"console\"in window&&console.log(w&&w.stack?w.stack:w)}}var v=[\"break,continue,do,else,for,if,return,while\"],w=[[v,\"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\n\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],F=[w,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],G=[w,\"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient\"],\nH=[G,\"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var\"],w=[w,\"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN\"],I=[v,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],\nJ=[v,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],v=[v,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)/,N=/\\S/,O=u({keywords:[F,H,w,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\"+\nI,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,[\"default-code\"]);k(x([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\S\\s]*?(?:--\\>|$)/],[\"lang-\",/^<\\?([\\S\\s]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\S\\s]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",/^<xmp\\b[^>]*>([\\S\\s]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\S\\s]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\S\\s]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),\n[\"default-markup\",\"htm\",\"html\",\"mxml\",\"xhtml\",\"xml\",\"xsl\"]);k(x([[\"pln\",/^\\s+/,q,\" \\t\\r\\n\"],[\"atv\",/^(?:\"[^\"]*\"?|'[^']*'?)/,q,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^\\s\"'>]*(?:[^\\s\"'/>]|\\/(?=\\s)))/],[\"pun\",/^[/<->]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\"([^\"]+)\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*'([^']+)'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\s\"'>]+)/i],[\"lang-css\",/^style\\s*=\\s*\"([^\"]+)\"/i],[\"lang-css\",/^style\\s*=\\s*'([^']+)'/i],[\"lang-css\",\n/^style\\s*=\\s*([^\\s\"'>]+)/i]]),[\"in.tag\"]);k(x([],[[\"atv\",/^[\\S\\s]+/]]),[\"uq.val\"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),[\"c\",\"cc\",\"cpp\",\"cxx\",\"cyc\",\"m\"]);k(u({keywords:\"null,true,false\"}),[\"json\"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),[\"cs\"]);k(u({keywords:G,cStyleComments:!0}),[\"java\"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),[\"bsh\",\"csh\",\"sh\"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),\n[\"cv\",\"py\"]);k(u({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"perl\",\"pl\",\"pm\"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),[\"js\"]);k(u({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes\",\nhashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);k(x([],[[\"str\",/^[\\S\\s]+/]]),[\"regex\"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement(\"PRE\");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf(\"prettyprint\")>=0){var k=k.match(g),f,b;if(b=\n!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&\"CODE\"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName===\"pre\"||o.tagName===\"code\"||o.tagName===\"xmp\")&&o.className&&o.className.indexOf(\"prettyprint\")>=0){b=!0;break}b||((b=(b=n.className.match(/\\blinenums\\b(?::(\\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,\n250):a&&a()}for(var e=[document.getElementsByTagName(\"pre\"),document.getElementsByTagName(\"code\"),document.getElementsByTagName(\"xmp\")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",\nPR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\"}})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/holder/README.md",
    "content": "Holder\n======\n\nHolder uses the `canvas` element and the data URI scheme to render image placeholders entirely in browser.\n\n[Bootstrap](http://twitter.github.com/bootstrap/) uses Holder for thumbnails.\n\nHow to use it\n-------------\n\nInclude ``holder.js`` in your HTML:\n\n```html\n<script src=\"holder.js\"></script>\n```\n\nHolder will then process all images with a specific ``src`` attribute, like this one:\n\n```html\n<img src=\"holder.js/200x300\">\n```\n\nThe above tag will render as a placeholder 200 pixels wide and 300 pixels tall.\n\nTo avoid console 404 errors, you can use ``data-src`` instead of ``src``.\n\nHolder also includes support for themes, to help placeholders blend in with your layout. There are 3 default themes: ``gray``, ``industrial``, and ``social``. You can use them like this:\n\n```html\n<img src=\"holder.js/200x300/industrial\">\n```\n\nCustomizing themes\n------------------\n\nThemes have 4 properties: ``foreground``, ``background``, ``size``, and ``font``. The ``size`` property specifies the minimum font size for the theme. You can create a sample theme like this:\n\n```js\nHolder.add_theme(\"dark\", {background:\"#000\", foreground:\"#aaa\", size:11, font: \"Monaco\"})\n```\n\nUsing custom themes\n-------------------\n\nThere are two ways to use custom themes with Holder:\n\n* Include theme at runtime to render placeholders already using the theme name\n* Include theme at any point and re-render placeholders that are using the theme name\n\nThe first approach is the easiest. After you include ``holder.js``, add a ``script`` tag that adds the theme you want:\n\n```html\n<script src=\"holder.js\"></script>\n<script> Holder.add_theme(\"bright\", { background: \"white\", foreground: \"gray\", size: 12 })</script>\n```\n\nThe second approach requires that you call ``run`` after you add the theme, like this:\n\n```js\nHolder.add_theme(\"bright\", { background: \"white\", foreground: \"gray\", size: 12}).run()\n```\n\nUsing custom themes and domain on specific images\n-------------------------------------------------\n\nYou can use Holder in different areas on different images with custom themes:\n\n```html\n<img data-src=\"example.com/100x100/simple\" id=\"new\">\n```\n\n```js\nHolder.run({\n    domain: \"example.com\",\n    themes: {\n        \"simple\":{\n            background:\"#fff\",\n            foreground:\"#000\",\n            size:12\n            }\n    },\n    images: \"#new\"\n    })\n```\n\nUsing custom colors on specific images\n--------------------------------------\n\nCustom colors on a specific image can be specified in the ``background:foreground`` format using hex notation, like this:\n\n```html\n<img data-src=\"holder.js/100x200/#000:#fff\">\n```\n\nThe above will render a placeholder with a black background and white text.\n\nCustom text\n-----------\n\nYou can specify custom text using the ``text:`` operator:\n\n```html\n<img data-src=\"holder.js/200x200/text:hello world\">\n```\n\nIf you have a group of placeholders where you'd like to use particular text, you can do so by adding a ``text`` property to the theme:\n\n```js\nHolder.add_theme(\"thumbnail\", { background: \"#fff\", text: \"Thumbnail\" })\n```\n\nFluid placeholders\n------------------\n\nSpecifying a dimension in percentages creates a fluid placeholder that responds to media queries.\n\n```html\n<img data-src=\"holder.js/100%x75/social\">\n```\n\nBy default, the fluid placeholder will show its current size in pixels.\n\nAutomatically sized placeholders\n--------------------------------\n\nIf you'd like to avoid Holder enforcing an image size, use the ``auto`` flag like so:\n\n```html\n<img data-src=\"holder.js/200x200/auto\">\n```\n\nThe above will render a placeholder without any embedded CSS for height or width.\n\nBackground placeholders\n-----------------------\n\nHolder can render placeholders as background images for elements with the `holderjs` class, like this:\n\n```css\n#sample {background:url(?holder.js/200x200/social) no-repeat}\n```\n\n```html\n<div id=\"sample\" class=\"holderjs\"></div>\n```\n\nThe Holder URL in CSS should have a `?` in front. You can change the default class by specifying a selector as the `bgnodes` property when calling `Holder.run`.\n\nCustomizing only the settings you need\n--------------------------------------\n\nHolder extends its default settings with the settings you provide, so you only have to include those settings you want changed. For example, you can run Holder on a specific domain like this:\n\n```js\nHolder.run({domain:\"example.com\"})\n```\n\nUsing custom settings on load\n-----------------------------\n\nYou can prevent Holder from running its default configuration by executing ``Holder.run`` with your custom settings right after including ``holder.js``. However, you'll have to execute ``Holder.run`` again to render any placeholders that use the default configuration.\n\nInserting an image with optional custom theme\n---------------------------------------------\n\nYou can add a placeholder programmatically by chaining Holder calls:\n\n```js\nHolder.add_theme(\"new\",{foreground:\"#ccc\", background:\"#000\", size:10}).add_image(\"holder.js/200x100/new\", \"body\").run()\n```\n\nThe first argument in ``add_image`` is the ``src`` attribute, and the second is a CSS selector of the parent element.\n\nUsing with ``lazyload.js``\n--------------------------\n\nHolder is compatible with ``lazyload.js`` and works with both fluid and fixed-width images. For best results, run `.lazyload({skip_invisible:false})`.\n\nBrowser support\n---------------\n\n* Chrome 1+\n* Firefox 3+\n* Safari 4+\n* Internet Explorer 9+, with fallback for IE6-8\n* Android 1+\n\nLicense\n-------\n\nHolder is provided under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0). Commercial use requires attribution.\n\nCredits\n-------\n\nHolder is a project by [Ivan Malopinsky](http://imsky.co).\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/holder/component.json",
    "content": "{\n  \"name\": \"holderjs\",\n  \"version\": \"v1.7\",\n  \"main\": \"holder.js\",\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/holder/holder.js",
    "content": "/*\n\nHolder - 1.9 - client side image placeholders\n(c) 2012-2013 Ivan Malopinsky / http://imsky.co\n\nProvided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0\nCommercial use requires attribution.\n\n*/\n\nvar Holder = Holder || {};\n(function (app, win) {\n\nvar preempted = false,\nfallback = false,\ncanvas = document.createElement('canvas');\n\n//getElementsByClassName polyfill\ndocument.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll(\".\"+e);if(t.evaluate){r=\".//*[contains(concat(' ', @class, ' '), ' \"+e+\" ')]\",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName(\"*\"),r=new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})\n\n//getComputedStyle polyfill\nwindow.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\\-([a-z]){1})/g;return t==\"float\"&&(t=\"styleFloat\"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})\n\n//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications\nfunction contentLoaded(n,t){var l=\"complete\",s=\"readystatechange\",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?\"addEventListener\":\"attachEvent\",v=i.addEventListener?\"removeEventListener\":\"detachEvent\",f=i.addEventListener?\"\":\"on\",r=function(e){(e.type!=s||i.readyState==l)&&((e.type==\"load\"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll(\"left\")}catch(n){setTimeout(o,50);return}r(\"poll\")};if(i.readyState==l)t.call(n,\"lazy\");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+\"DOMContentLoaded\",r,u),i[e](f+s,r,u),n[e](f+\"load\",r,u)}};\n\n//https://gist.github.com/991057 by Jed Schmidt with modifications\nfunction selector(a){\n\ta=a.match(/^(\\W)?(.*)/);var b=document[\"getElement\"+(a[1]?a[1]==\"#\"?\"ById\":\"sByClassName\":\"sByTagName\")](a[2]);\n\tvar ret=[];\tb!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]);\treturn ret;\n}\n\n//shallow object property extend\nfunction extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}\n\n//hasOwnProperty polyfill\nif (!Object.prototype.hasOwnProperty)\n\tObject.prototype.hasOwnProperty = function(prop) {\n\t\tvar proto = this.__proto__ || this.constructor.prototype;\n\t\treturn (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);\n\t}\n\nfunction text_size(width, height, template) {\n\tvar dimension_arr = [height, width].sort();\n\tvar maxFactor = Math.round(dimension_arr[1] / 16),\n\t\tminFactor = Math.round(dimension_arr[0] / 16);\n\tvar text_height = Math.max(template.size, maxFactor);\n\treturn {\n\t\theight: text_height\n\t}\n}\n\nfunction draw(ctx, dimensions, template, ratio) {\n\tvar ts = text_size(dimensions.width, dimensions.height, template);\n\tvar text_height = ts.height;\n\tvar width = dimensions.width * ratio,\n\t\theight = dimensions.height * ratio;\n\tvar font = template.font ? template.font : \"sans-serif\";\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tctx.textAlign = \"center\";\n\tctx.textBaseline = \"middle\";\n\tctx.fillStyle = template.background;\n\tctx.fillRect(0, 0, width, height);\n\tctx.fillStyle = template.foreground;\n\tctx.font = \"bold \" + text_height + \"px \" + font;\n\tvar text = template.text ? template.text : (dimensions.width + \"x\" + dimensions.height);\n\tif (ctx.measureText(text).width / width > 1) {\n\t\ttext_height = template.size / (ctx.measureText(text).width / width);\n\t}\n\t//Resetting font size if necessary\n\tctx.font = \"bold \" + (text_height * ratio) + \"px \" + font;\n\tctx.fillText(text, (width / 2), (height / 2), width);\n\treturn canvas.toDataURL(\"image/png\");\n}\n\nfunction render(mode, el, holder, src) {\n\tvar dimensions = holder.dimensions,\n\t\ttheme = holder.theme,\n\t\ttext = holder.text ? decodeURIComponent(holder.text) : holder.text;\n\tvar dimensions_caption = dimensions.width + \"x\" + dimensions.height;\n\t\t\n\ttheme = (text ? extend(theme, {\n\t\ttext: text\n\t}) : theme);\n\ttheme = (holder.font ? extend(theme, {\n\t\tfont: holder.font\n\t}) : theme);\n\n\tif (mode == \"image\") {\n\t\tel.setAttribute(\"data-src\", src);\n\t\tel.setAttribute(\"alt\", text ? text : theme.text ? theme.text + \" [\" + dimensions_caption + \"]\" : dimensions_caption);\n\n\t\tif (fallback || !holder.auto) {\n\t\t\tel.style.width = dimensions.width + \"px\";\n\t\t\tel.style.height = dimensions.height + \"px\";\n\t\t}\n\n\t\tif (fallback) {\n\t\t\tel.style.backgroundColor = theme.background;\n\n\t\t} else {\n\t\t\tel.setAttribute(\"src\", draw(ctx, dimensions, theme, ratio));\n\t\t}\n\t} else {\n\t\tif (!fallback) {\n\t\t\tel.style.backgroundImage = \"url(\" + draw(ctx, dimensions, theme, ratio) + \")\";\n\t\t\tel.style.backgroundSize = dimensions.width + \"px \" + dimensions.height + \"px\";\n\t\t}\n\t}\n};\n\nfunction fluid(el, holder, src) {\n\tvar dimensions = holder.dimensions,\n\t\ttheme = holder.theme,\n\t\ttext = holder.text;\n\tvar dimensions_caption = dimensions.width + \"x\" + dimensions.height;\n\ttheme = (text ? extend(theme, {\n\t\ttext: text\n\t}) : theme);\n\n\tvar fluid = document.createElement(\"div\");\n\n\tif (el.fluidRef) {\n\t\tfluid = el.fluidRef;\n\t}\n\n\tfluid.style.backgroundColor = theme.background;\n\tfluid.style.color = theme.foreground;\n\tfluid.className = el.className + \" holderjs-fluid\";\n\tfluid.style.width = holder.dimensions.width + (holder.dimensions.width.indexOf(\"%\") > 0 ? \"\" : \"px\");\n\tfluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf(\"%\") > 0 ? \"\" : \"px\");\n\tfluid.id = el.id;\n\n\tel.style.width = 0;\n\tel.style.height = 0;\n\n\tif (!el.fluidRef) {\n\n\t\tif (theme.text) {\n\t\t\tfluid.appendChild(document.createTextNode(theme.text))\n\t\t} else {\n\t\t\tfluid.appendChild(document.createTextNode(dimensions_caption))\n\t\t\tfluid_images.push(fluid);\n\t\t\tsetTimeout(fluid_update, 0);\n\t\t}\n\n\t}\n\n\tel.fluidRef = fluid;\n\tel.parentNode.insertBefore(fluid, el.nextSibling)\n\n\tif (window.jQuery) {\n\t\tjQuery(function ($) {\n\t\t\t$(el).on(\"load\", function () {\n\t\t\t\tel.style.width = fluid.style.width;\n\t\t\t\tel.style.height = fluid.style.height;\n\t\t\t\t$(el).show();\n\t\t\t\t$(fluid).remove();\n\t\t\t});\n\t\t})\n\t}\n}\n\nfunction fluid_update() {\n\tfor (i in fluid_images) {\n\t\tif (!fluid_images.hasOwnProperty(i)) continue;\n\t\tvar el = fluid_images[i],\n\t\t\tlabel = el.firstChild;\n\n\t\tel.style.lineHeight = el.offsetHeight + \"px\";\n\t\tlabel.data = el.offsetWidth + \"x\" + el.offsetHeight;\n\t}\n}\n\nfunction parse_flags(flags, options) {\n\n\tvar ret = {\n\t\ttheme: settings.themes.gray\n\t}, render = false;\n\n\tfor (sl = flags.length, j = 0; j < sl; j++) {\n\t\tvar flag = flags[j];\n\t\tif (app.flags.dimensions.match(flag)) {\n\t\t\trender = true;\n\t\t\tret.dimensions = app.flags.dimensions.output(flag);\n\t\t} else if (app.flags.fluid.match(flag)) {\n\t\t\trender = true;\n\t\t\tret.dimensions = app.flags.fluid.output(flag);\n\t\t\tret.fluid = true;\n\t\t} else if (app.flags.colors.match(flag)) {\n\t\t\tret.theme = app.flags.colors.output(flag);\n\t\t} else if (options.themes[flag]) {\n\t\t\t//If a theme is specified, it will override custom colors\n\t\t\tret.theme = options.themes[flag];\n\t\t} else if (app.flags.text.match(flag)) {\n\t\t\tret.text = app.flags.text.output(flag);\n\t\t} else if (app.flags.font.match(flag)) {\n\t\t\tret.font = app.flags.font.output(flag);\n\t\t} else if (app.flags.auto.match(flag)) {\n\t\t\tret.auto = true;\n\t\t}\n\t}\n\n\treturn render ? ret : false;\n\n};\n\n\n\nif (!canvas.getContext) {\n\tfallback = true;\n} else {\n\tif (canvas.toDataURL(\"image/png\")\n\t\t.indexOf(\"data:image/png\") < 0) {\n\t\t//Android doesn't support data URI\n\t\tfallback = true;\n\t} else {\n\t\tvar ctx = canvas.getContext(\"2d\");\n\t}\n}\n\nvar dpr = 1, bsr = 1;\n\t\nif(!fallback){\n    dpr = window.devicePixelRatio || 1,\n    bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n}\n\nvar ratio = dpr / bsr;\n\nvar fluid_images = [];\n\nvar settings = {\n\tdomain: \"holder.js\",\n\timages: \"img\",\n\tbgnodes: \".holderjs\",\n\tthemes: {\n\t\t\"gray\": {\n\t\t\tbackground: \"#eee\",\n\t\t\tforeground: \"#aaa\",\n\t\t\tsize: 12\n\t\t},\n\t\t\"social\": {\n\t\t\tbackground: \"#3a5a97\",\n\t\t\tforeground: \"#fff\",\n\t\t\tsize: 12\n\t\t},\n\t\t\"industrial\": {\n\t\t\tbackground: \"#434A52\",\n\t\t\tforeground: \"#C2F200\",\n\t\t\tsize: 12\n\t\t}\n\t},\n\tstylesheet: \".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}\"\n};\n\n\napp.flags = {\n\tdimensions: {\n\t\tregex: /^(\\d+)x(\\d+)$/,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\twidth: +exec[1],\n\t\t\t\theight: +exec[2]\n\t\t\t}\n\t\t}\n\t},\n\tfluid: {\n\t\tregex: /^([0-9%]+)x([0-9%]+)$/,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\twidth: exec[1],\n\t\t\t\theight: exec[2]\n\t\t\t}\n\t\t}\n\t},\n\tcolors: {\n\t\tregex: /#([0-9a-f]{3,})\\:#([0-9a-f]{3,})/i,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\tsize: settings.themes.gray.size,\n\t\t\t\tforeground: \"#\" + exec[2],\n\t\t\t\tbackground: \"#\" + exec[1]\n\t\t\t}\n\t\t}\n\t},\n\ttext: {\n\t\tregex: /text\\:(.*)/,\n\t\toutput: function (val) {\n\t\t\treturn this.regex.exec(val)[1];\n\t\t}\n\t},\n\tfont: {\n\t\tregex: /font\\:(.*)/,\n\t\toutput: function (val) {\n\t\t\treturn this.regex.exec(val)[1];\n\t\t}\n\t},\n\tauto: {\n\t\tregex: /^auto$/\n\t}\n}\n\nfor (var flag in app.flags) {\n\tif (!app.flags.hasOwnProperty(flag)) continue;\n\tapp.flags[flag].match = function (val) {\n\t\treturn val.match(this.regex)\n\t}\n}\n\napp.add_theme = function (name, theme) {\n\tname != null && theme != null && (settings.themes[name] = theme);\n\treturn app;\n};\n\napp.add_image = function (src, el) {\n\tvar node = selector(el);\n\tif (node.length) {\n\t\tfor (var i = 0, l = node.length; i < l; i++) {\n\t\t\tvar img = document.createElement(\"img\")\n\t\t\timg.setAttribute(\"data-src\", src);\n\t\t\tnode[i].appendChild(img);\n\t\t}\n\t}\n\treturn app;\n};\n\napp.run = function (o) {\n\tvar options = extend(settings, o),\n\t    images = [], imageNodes = [], bgnodes = [];\n\t    \n\tif(typeof(options.images) == \"string\"){\n\t    imageNodes = selector(options.images);\n\t}\n\telse if (window.NodeList && options.images instanceof window.NodeList) {\n\t\timageNodes = options.images;\n\t} else if (window.Node && options.images instanceof window.Node) {\n\t\timageNodes = [options.images];\n\t}\n\n\tif(typeof(options.bgnodes) == \"string\"){\n\t    bgnodes = selector(options.bgnodes);\n\t} else if (window.NodeList && options.elements instanceof window.NodeList) {\n\t\tbgnodes = options.bgnodes;\n\t} else if (window.Node && options.bgnodes instanceof window.Node) {\n\t\tbgnodes = [options.bgnodes];\n\t}\n\n\tpreempted = true;\n\n\tfor (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]);\n\n\tvar holdercss = document.getElementById(\"holderjs-style\");\n\tif (!holdercss) {\n\t\tholdercss = document.createElement(\"style\");\n\t\tholdercss.setAttribute(\"id\", \"holderjs-style\");\n\t\tholdercss.type = \"text/css\";\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(holdercss);\n\t}\n\t\n\tif (!options.nocss) {\n\t    if (holdercss.styleSheet) {\n\t\t    holdercss.styleSheet.cssText += options.stylesheet;\n\t    } else {\n\t\t    holdercss.appendChild(document.createTextNode(options.stylesheet));\n\t    }\n\t}\n\n\t\n\n\tvar cssregex = new RegExp(options.domain + \"\\/(.*?)\\\"?\\\\)\");\n\n\tfor (var l = bgnodes.length, i = 0; i < l; i++) {\n\t\tvar src = window.getComputedStyle(bgnodes[i], null)\n\t\t\t.getPropertyValue(\"background-image\");\n\t\tvar flags = src.match(cssregex);\n\t\tvar bgsrc = bgnodes[i].getAttribute(\"data-background-src\");\n\n\t\tif (flags) {\n\t\t\tvar holder = parse_flags(flags[1].split(\"/\"), options);\n\t\t\tif (holder) {\n\t\t\t\trender(\"background\", bgnodes[i], holder, src);\n\t\t\t}\n\t\t}\n\t\telse if(bgsrc != null){\n\t\t    var holder = parse_flags(bgsrc.substr(bgsrc.lastIndexOf(options.domain) + options.domain.length + 1)\n\t\t\t\t.split(\"/\"), options);\n\t\t    if(holder){\n\t\t\trender(\"background\", bgnodes[i], holder, src);\n\t\t    }\n\t\t}\n\t}\n\n\tfor (l = images.length, i = 0; i < l; i++) {\n\t    \n\t\tvar attr_src = attr_data_src = src = null;\n\t\t\n\t\ttry{\n\t\t    attr_src = images[i].getAttribute(\"src\");\n\t\t    attr_datasrc = images[i].getAttribute(\"data-src\");\n\t\t}catch(e){}\n\t\t\t\t\n\t\tif (attr_datasrc == null && !! attr_src && attr_src.indexOf(options.domain) >= 0) {\n\t\t\tsrc = attr_src;\n\t\t} else if ( !! attr_datasrc && attr_datasrc.indexOf(options.domain) >= 0) {\n\t\t\tsrc = attr_datasrc;\n\t\t}\n\t\t\n\t\tif (src) {\n\t\t\tvar holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)\n\t\t\t\t.split(\"/\"), options);\n\t\t\tif (holder) {\n\t\t\t\tif (holder.fluid) {\n\t\t\t\t\tfluid(images[i], holder, src);\n\t\t\t\t} else {\n\t\t\t\t\trender(\"image\", images[i], holder, src);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn app;\n};\n\ncontentLoaded(win, function () {\n\tif (window.addEventListener) {\n\t\twindow.addEventListener(\"resize\", fluid_update, false);\n\t\twindow.addEventListener(\"orientationchange\", fluid_update, false);\n\t} else {\n\t\twindow.attachEvent(\"onresize\", fluid_update)\n\t}\n\tpreempted || app.run();\n});\n\nif (typeof define === \"function\" && define.amd) {\n\tdefine(\"Holder\", [], function () {\n\t\treturn app;\n\t});\n}\n\n})(Holder, window);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/holder/package.json",
    "content": "{\n  \"name\": \"Holder\",\n  \"version\": \"1.7.0\",\n  \"description\": \"Holder uses the canvas element and the data URI scheme to render image placeholders entirely in browser.\",\n  \"keywords\": [ \"images\", \"placeholders\", \"client-side\", \"canvas\", \"generation\", \"development\" ],\n  \"main\": \"holder.js\",\n  \"homepage\": \"https://github.com/imsky/holder\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/imsky/holder.git\"\n  },\n  \"bugs\": {\n    \"url\" : \"https://github.com/imsky/holder/issues\"\n  },\n  \"license\": \"Apache\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/ChangeLog.markdown",
    "content": "# Mouse Wheel ChangeLog\n\n# 3.0.6\n\n* Fix issue with delta being 0 in Firefox\n\n# 3.0.5\n\n* jQuery 1.7 compatibility\n\n# 3.0.4\n\n* Fix IE issue\n\n\n# 3.0.3\n\n* Added deltaX and deltaY for horizontal scrolling support (Thanks to Seamus Leahy)\n\n\n# 3.0.2\n\n* Fixed delta being opposite value in latest Opera\n* No longer fix pageX, pageY for older mozilla browsers\n* Removed browser detection\n* Cleaned up the code\n\n\n# 3.0.1\n\n* Bad release... creating a new release due to plugins.jquery.com issue :(\n\n\n# 3.0\n\n* Uses new special events API in jQuery 1.2.2+\n* You can now treat \"mousewheel\" as a normal event and use .bind, .unbind and .trigger\n* Using jQuery.data API for expandos\n\n\n# 2.2\n\n* Fixed pageX, pageY, clientX and clientY event properties for Mozilla based browsers\n\n\n# 2.1.1\n\n* Updated to work with jQuery 1.1.3\n* Used one instead of bind to do unload event for clean up.\n\n\n# 2.1\n\n* Fixed an issue with the unload handler\n\n\n# 2.0\n\n* Major reduction in code size and complexity (internals have change a whole lot)\n\n\n# 1.0\n\n* Fixed Opera issue\n* Fixed an issue with children elements that also have a mousewheel handler\n* Added ability to handle multiple handlers\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/LICENSE.txt",
    "content": "Copyright 2011, Brandon Aaron (http://brandonaaron.net/)\n \nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n \nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/README.markdown",
    "content": "# jQuery Mouse Wheel Plugin\n\nA jQuery plugin that adds cross-browser mouse wheel support.\n\nIn order to use the plugin, simply bind the \"mousewheel\" event to an element. It also provides two helper methods called `mousewheel` and `unmousewheel` that act just like other event helper methods in jQuery. The event callback receives three extra arguments which are the normalized \"deltas\" of the mouse wheel. \n\nHere is an example of using both the bind and helper method syntax.\n\n    // using bind\n    $('#my_elem').bind('mousewheel', function(event, delta, deltaX, deltaY) {\n        console.log(delta, deltaX, deltaY);\n    });\n    \n    // using the event helper\n    $('#my_elem').mousewheel(function(event, delta, deltaX, deltaY) {\n        console.log(delta, deltaX, deltaY);\n    });\n\n\n## License\n\nThis plugin is licensed under the MIT License (LICENSE.txt).\n\nCopyright (c) 2011 [Brandon Aaron](http://brandonaaron.net)\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.js",
    "content": "/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n * Thanks to: Seamus Leahy for adding deltaX and deltaY\n *\n * Version: 3.0.6\n * \n * Requires: 1.2.2+\n */\n\n(function($) {\n\nvar types = ['DOMMouseScroll', 'mousewheel'];\n\nif ($.event.fixHooks) {\n    for ( var i=types.length; i; ) {\n        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;\n    }\n}\n\n$.event.special.mousewheel = {\n    setup: function() {\n        if ( this.addEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.addEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = handler;\n        }\n    },\n    \n    teardown: function() {\n        if ( this.removeEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.removeEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = null;\n        }\n    }\n};\n\n$.fn.extend({\n    mousewheel: function(fn) {\n        return fn ? this.bind(\"mousewheel\", fn) : this.trigger(\"mousewheel\");\n    },\n    \n    unmousewheel: function(fn) {\n        return this.unbind(\"mousewheel\", fn);\n    }\n});\n\n\nfunction handler(event) {\n    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;\n    event = $.event.fix(orgEvent);\n    event.type = \"mousewheel\";\n    \n    // Old school scrollwheel delta\n    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }\n    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }\n    \n    // New school multidimensional scroll (touchpads) deltas\n    deltaY = delta;\n    \n    // Gecko\n    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n        deltaY = 0;\n        deltaX = -1*delta;\n    }\n    \n    // Webkit\n    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }\n    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }\n    \n    // Add event and delta to the front of the arguments\n    args.unshift(event, delta, deltaX, deltaY);\n    \n    return ($.event.dispatch || $.event.handle).apply(this, args);\n}\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-mousewheel/test/index.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<title>Testing mousewheel plugin</title>\n\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-git.js\"></script>-->\n\t\t<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.7.js\"></script>\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.6.4.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.5.2.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.4.4.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.3.2.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.2.6.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.2.2.js\"></script>-->\n\t\t<script type=\"text/javascript\" src=\"../jquery.mousewheel.js\"></script>\n\t\t\n\t\t<style>\n\t\t\t#test1 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test2 {\n\t\t\t\tbackground-color: #333;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test3 {\n\t\t\t\tbackground-color: #666;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test4 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test5 {\n\t\t\t\tbackground-color: #333;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 400px;\n\t\t\t\theight: 400px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test6 {\n\t\t\t\tbackground-color: #666;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 250px;\n\t\t\t\theight: 250px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\n\t\t\t#test7 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 100px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#forceScroll {\n\t\t\t\tclear: both;\n\t\t\t\theight: 1000px;\n\t\t\t}\n\t\t\t\n\t\t\t#logger {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 395px;\n\t\t\t\tleft: 12px;\n\t\t\t\twidth: 460px;\n\t\t\t\theight: 290px;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p {\n\t\t\t\tfont-family: Arial, sans-serif;\n\t\t\t\tfont-size: 13px;\n\t\t\t\tpadding: 2px;\n\t\t\t\tborder-bottom: 1px solid #ccc;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p:nth-child(even) {\n\t\t\t\tbackground-color: #FFFFE8;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p:nth-child(10n) {\n\t\t\t\tborder-bottom-color: #000;\n\t\t\t}\n\t\t</style>\n\t\t<script type=\"text/javascript\">\n\t\t\t$(function() {\n\t\t\t\t$('#userAgent').html(navigator.userAgent);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t$('#test1')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test1: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test1: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tlog('pageX: ' + event.pageX + ' pageY: ' + event.pageY );\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test2')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test2: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test2: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\treturn false; // prevent default\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test3')\n\t\t\t\t\t.hover(function() { log('#test3: mouseover'); }, function() { log('#test3: mouseout'); })\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tlog('#test3: I should not have been logged');\n\t\t\t\t\t})\n\t\t\t\t\t.unmousewheel();\n\t\t\t\t\n\t\t\t\tvar testRemoval = function(event, delta, deltaX, deltaY) {\n\t\t\t\t\tlog('#test4: I should not have been logged');\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t$('#test4')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test4: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test4: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t})\n\t\t\t\t\t.mousewheel(testRemoval)\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test4: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test4: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o + ' from 2nd handler' );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t})\n\t\t\t\t\t.unmousewheel(testRemoval);\n\t\t\t\t\n\t\t\t\t$('#test5')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test5: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test5: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test6')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test6: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test6: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\n\t\t\t\t$('#test7')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test7: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test7: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\tfunction log(msg) {\n\t\t\t\t\t$('#logger').append('<p>'+msg+'</p>').scrollTop(999999);\n\t\t\t\t};\n\t\t\t});\n\t\t</script>\n\t</head>\n\t<body>\n\t\t<h1 id=\"banner\">jQuery mousewheel.js - Test</h1>\n\t\t<h2 id=\"userAgent\"></h2>\n\t\t\n\t\t<ul>\n\t\t\t<li><strong>Test1</strong> is just using the plain on mousewheel() with a function passed in and does not prevent default. (Also logs the value of pageX and pageY event properties.)</li>\n\t\t\t<li><strong>Test2</strong> should prevent the default action.</li>\n\t\t\t<li><strong>Test3</strong> should only log a mouseover and mouseout event. Testing unmousewheel().</li>\n\t\t\t<li><strong>Test4</strong> has two handlers.</li>\n\t\t\t<li><strong>Test5</strong> is like Test2 but has children. The children should not scroll until mousing over them.</li>\n\t\t\t<li><strong>Test6</strong> is like Test5 but should not scroll children or parents.</li>\n\t\t\t<li><strong>Test7</strong> is like Test6 but has no children. It will propagate the event and scroll test 6 as well.</li>\n\t\t</ul>\n\t\t\n\t\t\n\t\t<div id=\"test1\"><p>Test1</p></div>\n\t\t<div id=\"test2\"><p>Test2</p></div>\n\t\t<div id=\"test3\"><p>Test3</p></div>\n\t\t<div id=\"test4\"><p>Test4</p></div>\n\t\t<div id=\"test5\">\n\t\t\t<p>Test5</p>\n\t\t\t<div id=\"test6\">\n\t\t\t\t<p>Test6</p>\n\t\t\t\t<div id=\"test7\"><p>Test7</p></div>\n\t\t\t</div>\n\t\t</div>\n\t\t\n\t\t<div id=\"logger\"></div>\n\t\t\n\t\t<div id=\"forceScroll\"></div>\n\t</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/README.md",
    "content": "# What is slimScroll?\n\nslimScroll is a small jQuery plugin that transforms any div into a scrollable area with a nice scrollbar - similar to the one Facebook and Google started using in their products recently. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over. User can drag the scrollbar or use mouse-wheel to change the scroll value.\n\nDemo and more: http://rocha.la/jQuery-slimScroll\n\nCopyright (c) 2011 Piotr Rochala (http://rocha.la)\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/allow-page-scroll.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - allow page scroll</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll();\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p><span class=\"helloDiv\" style=\"background:green;font-weigh:bold;\">Hello!</span>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      allowPageScroll: true\n  });\n</pre>\n\n<div style=\"height:500px;\">...adding height...</div>\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll();\n\n      $('#testDiv2').slimScroll({\n          allowPageScroll: true\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/chaining.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - chaining</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: '250px'\n}).parent().css({\n  background: '#237FAD',\n  border: '2px dashed #184055'\n});\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        height: '250px'\n      }).parent().css({\n        background: '#237FAD',\n        border: '2px dashed #184055'\n      });\n\n      $('#testDiv2').slimScroll({\n          height: '100px',\n          width: '300px'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/disable-fade-out.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - disable fade out</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll();\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  disableFadeOut: true\n});\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll();\n\n      $('#testDiv2').slimscroll({\n        disableFadeOut: true\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/dynamic-content.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - dynamic content</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n\n\n  <div id=\"testDiv\">\n  </div>\n\n  <pre class=\"prettyprint\">\n  // update content every second\n  setInterval(function(){\n    var el = $('&lt;div&gt;&lt;/div&gt;').html('#' + $('#testDiv').children().length)\n            .css({ padding: '3px', border: '1px solid #ccc', margin: '5px' });\n    $('#testDiv').append(el);\n\n    // update slimscroll every time content changes\n    $('#testDiv').slimscroll();\n  }, 1000);\n\n  $('#testDiv').slimscroll({\n    alwaysVisible: true,\n    height: 150\n  });\n  </pre>\n\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      // update content every second\n      setInterval(function(){\n        var el = $('<div></div>').html('#' + $('#testDiv').children().length)\n                .css({ padding: '3px', border: '1px solid #ccc', margin: '5px' });\n        $('#testDiv').append(el);\n\n        // update slimscroll every time content changes\n        $('#testDiv').slimscroll();\n      }, 1000);\n\n      $('#testDiv').slimscroll({\n        alwaysVisible: true,\n        height: 150\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/height-width.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - height / width</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n    <div style=\"height:300px;\">\n      <div id=\"testDiv\">\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      </div>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: 'auto'\n});\n</pre>\n\n    <div id=\"testDiv2\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  height: '100px',\n  width: '300px'\n});\n</pre>\n\n    <div id=\"testDiv3\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv3').slimscroll();\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimScroll({\n          height: 'auto'\n      });\n\n      $('#testDiv2').slimScroll({\n          height: '100px',\n          width: '300px'\n      });\n\n      $('#testDiv3').slimScroll();\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n<html>\n    <head>\n    </head>\n    <frameset framespacing=\"0\" cols=\"250,*\" frameborder=\"0\" noresize>\n        <frame name=\"nav\" src=\"navigation.html\" target=\"top\">\n        <frame name=\"main\" src=\"height-width.html\" target=\"main\">\n    </frameset>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.css",
    "content": "/* Pretty printing styles. Used with prettify.js. */\n\n/* SPAN elements with the classes below are added by prettyprint. */\n.pln { color: #000 }  /* plain text */\n\n@media screen {\n  .str { color: #080 }  /* string content */\n  .kwd { color: #008 }  /* a keyword */\n  .com { color: #800 }  /* a comment */\n  .typ { color: #606 }  /* a type name */\n  .lit { color: #066 }  /* a literal value */\n  /* punctuation, lisp open bracket, lisp close bracket */\n  .pun, .opn, .clo { color: #660 }\n  .tag { color: #008 }  /* a markup tag name */\n  .atn { color: #606 }  /* a markup attribute name */\n  .atv { color: #080 }  /* a markup attribute value */\n  .dec, .var { color: #606 }  /* a declaration; a variable name */\n  .fun { color: red }  /* a function name */\n}\n\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str { color: #060 }\n  .kwd { color: #006; font-weight: bold }\n  .com { color: #600; font-style: italic }\n  .typ { color: #404; font-weight: bold }\n  .lit { color: #044 }\n  .pun, .opn, .clo { color: #440 }\n  .tag { color: #006; font-weight: bold }\n  .atn { color: #404 }\n  .atv { color: #060 }\n}\n\n/* Put a border around prettyprinted code snippets. */\npre.prettyprint { padding: 2px; border: 1px solid #888 }\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L5,\nli.L6,\nli.L7,\nli.L8 { list-style-type: none }\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 { background: #eee }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.js",
    "content": "// Copyright (C) 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n/**\n * @fileoverview\n * some functions for browser-side pretty printing of code contained in html.\n *\n * <p>\n * For a fairly comprehensive set of languages see the\n * <a href=\"http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs\">README</a>\n * file that came with this source.  At a minimum, the lexer should work on a\n * number of languages including C and friends, Java, Python, Bash, SQL, HTML,\n * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk\n * and a subset of Perl, but, because of commenting conventions, doesn't work on\n * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.\n * <p>\n * Usage: <ol>\n * <li> include this source file in an html page via\n *   {@code <script type=\"text/javascript\" src=\"/path/to/prettify.js\"></script>}\n * <li> define style rules.  See the example page for examples.\n * <li> mark the {@code <pre>} and {@code <code>} tags in your source with\n *    {@code class=prettyprint.}\n *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty\n *    printer needs to do more substantial DOM manipulations to support that, so\n *    some css styles may not be preserved.\n * </ol>\n * That's it.  I wanted to keep the API as simple as possible, so there's no\n * need to specify which language the code is in, but if you wish, you can add\n * another class to the {@code <pre>} or {@code <code>} element to specify the\n * language, as in {@code <pre class=\"prettyprint lang-java\">}.  Any class that\n * starts with \"lang-\" followed by a file extension, specifies the file type.\n * See the \"lang-*.js\" files in this directory for code that implements\n * per-language file handlers.\n * <p>\n * Change log:<br>\n * cbeust, 2006/08/22\n * <blockquote>\n *   Java annotations (start with \"@\") are now captured as literals (\"lit\")\n * </blockquote>\n * @requires console\n */\n\n// JSLint declarations\n/*global console, document, navigator, setTimeout, window */\n\n/**\n * Split {@code prettyPrint} into multiple timeouts so as not to interfere with\n * UI events.\n * If set to {@code false}, {@code prettyPrint()} is synchronous.\n */\nwindow['PR_SHOULD_USE_CONTINUATION'] = true;\n\n(function () {\n  // Keyword lists for various languages.\n  // We use things that coerce to strings to make them compact when minified\n  // and to defeat aggressive optimizers that fold large string constants.\n  var FLOW_CONTROL_KEYWORDS = [\"break,continue,do,else,for,if,return,while\"];\n  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,\"auto,case,char,const,default,\" + \n      \"double,enum,extern,float,goto,int,long,register,short,signed,sizeof,\" +\n      \"static,struct,switch,typedef,union,unsigned,void,volatile\"];\n  var COMMON_KEYWORDS = [C_KEYWORDS,\"catch,class,delete,false,import,\" +\n      \"new,operator,private,protected,public,this,throw,true,try,typeof\"];\n  var CPP_KEYWORDS = [COMMON_KEYWORDS,\"alignof,align_union,asm,axiom,bool,\" +\n      \"concept,concept_map,const_cast,constexpr,decltype,\" +\n      \"dynamic_cast,explicit,export,friend,inline,late_check,\" +\n      \"mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,\" +\n      \"template,typeid,typename,using,virtual,where\"];\n  var JAVA_KEYWORDS = [COMMON_KEYWORDS,\n      \"abstract,boolean,byte,extends,final,finally,implements,import,\" +\n      \"instanceof,null,native,package,strictfp,super,synchronized,throws,\" +\n      \"transient\"];\n  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,\n      \"as,base,by,checked,decimal,delegate,descending,dynamic,event,\" +\n      \"fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,\" +\n      \"object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,\" +\n      \"stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var\"];\n  var COFFEE_KEYWORDS = \"all,and,by,catch,class,else,extends,false,finally,\" +\n      \"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,\" +\n      \"true,try,unless,until,when,while,yes\";\n  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,\n      \"debugger,eval,export,function,get,null,set,undefined,var,with,\" +\n      \"Infinity,NaN\"];\n  var PERL_KEYWORDS = \"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,\" +\n      \"goto,if,import,last,local,my,next,no,our,print,package,redo,require,\" +\n      \"sub,undef,unless,until,use,wantarray,while,BEGIN,END\";\n  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"and,as,assert,class,def,del,\" +\n      \"elif,except,exec,finally,from,global,import,in,is,lambda,\" +\n      \"nonlocal,not,or,pass,print,raise,try,with,yield,\" +\n      \"False,True,None\"];\n  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"alias,and,begin,case,class,\" +\n      \"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,\" +\n      \"rescue,retry,self,super,then,true,undef,unless,until,when,yield,\" +\n      \"BEGIN,END\"];\n  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"case,done,elif,esac,eval,fi,\" +\n      \"function,in,local,set,then,until\"];\n  var ALL_KEYWORDS = [\n      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +\n      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];\n  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)/;\n\n  // token style names.  correspond to css classes\n  /**\n   * token style for a string literal\n   * @const\n   */\n  var PR_STRING = 'str';\n  /**\n   * token style for a keyword\n   * @const\n   */\n  var PR_KEYWORD = 'kwd';\n  /**\n   * token style for a comment\n   * @const\n   */\n  var PR_COMMENT = 'com';\n  /**\n   * token style for a type\n   * @const\n   */\n  var PR_TYPE = 'typ';\n  /**\n   * token style for a literal value.  e.g. 1, null, true.\n   * @const\n   */\n  var PR_LITERAL = 'lit';\n  /**\n   * token style for a punctuation string.\n   * @const\n   */\n  var PR_PUNCTUATION = 'pun';\n  /**\n   * token style for a punctuation string.\n   * @const\n   */\n  var PR_PLAIN = 'pln';\n\n  /**\n   * token style for an sgml tag.\n   * @const\n   */\n  var PR_TAG = 'tag';\n  /**\n   * token style for a markup declaration such as a DOCTYPE.\n   * @const\n   */\n  var PR_DECLARATION = 'dec';\n  /**\n   * token style for embedded source.\n   * @const\n   */\n  var PR_SOURCE = 'src';\n  /**\n   * token style for an sgml attribute name.\n   * @const\n   */\n  var PR_ATTRIB_NAME = 'atn';\n  /**\n   * token style for an sgml attribute value.\n   * @const\n   */\n  var PR_ATTRIB_VALUE = 'atv';\n\n  /**\n   * A class that indicates a section of markup that is not code, e.g. to allow\n   * embedding of line numbers within code listings.\n   * @const\n   */\n  var PR_NOCODE = 'nocode';\n\n\n\n/**\n * A set of tokens that can precede a regular expression literal in\n * javascript\n * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html\n * has the full list, but I've removed ones that might be problematic when\n * seen in languages that don't support regular expression literals.\n *\n * <p>Specifically, I've removed any keywords that can't precede a regexp\n * literal in a syntactically legal javascript program, and I've removed the\n * \"in\" keyword since it's not a keyword in many languages, and might be used\n * as a count of inches.\n *\n * <p>The link a above does not accurately describe EcmaScript rules since\n * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works\n * very well in practice.\n *\n * @private\n * @const\n */\nvar REGEXP_PRECEDER_PATTERN = '(?:^^\\\\.?|[+-]|\\\\!|\\\\!=|\\\\!==|\\\\#|\\\\%|\\\\%=|&|&&|&&=|&=|\\\\(|\\\\*|\\\\*=|\\\\+=|\\\\,|\\\\-=|\\\\->|\\\\/|\\\\/=|:|::|\\\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\\\?|\\\\@|\\\\[|\\\\^|\\\\^=|\\\\^\\\\^|\\\\^\\\\^=|\\\\{|\\\\||\\\\|=|\\\\|\\\\||\\\\|\\\\|=|\\\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*';\n\n// CAVEAT: this does not properly handle the case where a regular\n// expression immediately follows another since a regular expression may\n// have flags for case-sensitivity and the like.  Having regexp tokens\n// adjacent is not valid in any language I'm aware of, so I'm punting.\n// TODO: maybe style special characters inside a regexp as punctuation.\n\n\n  /**\n   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally\n   * matches the union of the sets of strings matched by the input RegExp.\n   * Since it matches globally, if the input strings have a start-of-input\n   * anchor (/^.../), it is ignored for the purposes of unioning.\n   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.\n   * @return {RegExp} a global regex.\n   */\n  function combinePrefixPatterns(regexs) {\n    var capturedGroupIndex = 0;\n  \n    var needToFoldCase = false;\n    var ignoreCase = false;\n    for (var i = 0, n = regexs.length; i < n; ++i) {\n      var regex = regexs[i];\n      if (regex.ignoreCase) {\n        ignoreCase = true;\n      } else if (/[a-z]/i.test(regex.source.replace(\n                     /\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi, ''))) {\n        needToFoldCase = true;\n        ignoreCase = false;\n        break;\n      }\n    }\n  \n    var escapeCharToCodeUnit = {\n      'b': 8,\n      't': 9,\n      'n': 0xa,\n      'v': 0xb,\n      'f': 0xc,\n      'r': 0xd\n    };\n  \n    function decodeEscape(charsetPart) {\n      var cc0 = charsetPart.charCodeAt(0);\n      if (cc0 !== 92 /* \\\\ */) {\n        return cc0;\n      }\n      var c1 = charsetPart.charAt(1);\n      cc0 = escapeCharToCodeUnit[c1];\n      if (cc0) {\n        return cc0;\n      } else if ('0' <= c1 && c1 <= '7') {\n        return parseInt(charsetPart.substring(1), 8);\n      } else if (c1 === 'u' || c1 === 'x') {\n        return parseInt(charsetPart.substring(2), 16);\n      } else {\n        return charsetPart.charCodeAt(1);\n      }\n    }\n  \n    function encodeEscape(charCode) {\n      if (charCode < 0x20) {\n        return (charCode < 0x10 ? '\\\\x0' : '\\\\x') + charCode.toString(16);\n      }\n      var ch = String.fromCharCode(charCode);\n      if (ch === '\\\\' || ch === '-' || ch === '[' || ch === ']') {\n        ch = '\\\\' + ch;\n      }\n      return ch;\n    }\n  \n    function caseFoldCharset(charSet) {\n      var charsetParts = charSet.substring(1, charSet.length - 1).match(\n          new RegExp(\n              '\\\\\\\\u[0-9A-Fa-f]{4}'\n              + '|\\\\\\\\x[0-9A-Fa-f]{2}'\n              + '|\\\\\\\\[0-3][0-7]{0,2}'\n              + '|\\\\\\\\[0-7]{1,2}'\n              + '|\\\\\\\\[\\\\s\\\\S]'\n              + '|-'\n              + '|[^-\\\\\\\\]',\n              'g'));\n      var groups = [];\n      var ranges = [];\n      var inverse = charsetParts[0] === '^';\n      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {\n        var p = charsetParts[i];\n        if (/\\\\[bdsw]/i.test(p)) {  // Don't muck with named groups.\n          groups.push(p);\n        } else {\n          var start = decodeEscape(p);\n          var end;\n          if (i + 2 < n && '-' === charsetParts[i + 1]) {\n            end = decodeEscape(charsetParts[i + 2]);\n            i += 2;\n          } else {\n            end = start;\n          }\n          ranges.push([start, end]);\n          // If the range might intersect letters, then expand it.\n          // This case handling is too simplistic.\n          // It does not deal with non-latin case folding.\n          // It works for latin source code identifiers though.\n          if (!(end < 65 || start > 122)) {\n            if (!(end < 65 || start > 90)) {\n              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);\n            }\n            if (!(end < 97 || start > 122)) {\n              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);\n            }\n          }\n        }\n      }\n  \n      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]\n      // -> [[1, 12], [14, 14], [16, 17]]\n      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });\n      var consolidatedRanges = [];\n      var lastRange = [NaN, NaN];\n      for (var i = 0; i < ranges.length; ++i) {\n        var range = ranges[i];\n        if (range[0] <= lastRange[1] + 1) {\n          lastRange[1] = Math.max(lastRange[1], range[1]);\n        } else {\n          consolidatedRanges.push(lastRange = range);\n        }\n      }\n  \n      var out = ['['];\n      if (inverse) { out.push('^'); }\n      out.push.apply(out, groups);\n      for (var i = 0; i < consolidatedRanges.length; ++i) {\n        var range = consolidatedRanges[i];\n        out.push(encodeEscape(range[0]));\n        if (range[1] > range[0]) {\n          if (range[1] + 1 > range[0]) { out.push('-'); }\n          out.push(encodeEscape(range[1]));\n        }\n      }\n      out.push(']');\n      return out.join('');\n    }\n  \n    function allowAnywhereFoldCaseAndRenumberGroups(regex) {\n      // Split into character sets, escape sequences, punctuation strings\n      // like ('(', '(?:', ')', '^'), and runs of characters that do not\n      // include any of the above.\n      var parts = regex.source.match(\n          new RegExp(\n              '(?:'\n              + '\\\\[(?:[^\\\\x5C\\\\x5D]|\\\\\\\\[\\\\s\\\\S])*\\\\]'  // a character set\n              + '|\\\\\\\\u[A-Fa-f0-9]{4}'  // a unicode escape\n              + '|\\\\\\\\x[A-Fa-f0-9]{2}'  // a hex escape\n              + '|\\\\\\\\[0-9]+'  // a back-reference or octal escape\n              + '|\\\\\\\\[^ux0-9]'  // other escape sequence\n              + '|\\\\(\\\\?[:!=]'  // start of a non-capturing group\n              + '|[\\\\(\\\\)\\\\^]'  // start/emd of a group, or line start\n              + '|[^\\\\x5B\\\\x5C\\\\(\\\\)\\\\^]+'  // run of other characters\n              + ')',\n              'g'));\n      var n = parts.length;\n  \n      // Maps captured group numbers to the number they will occupy in\n      // the output or to -1 if that has not been determined, or to\n      // undefined if they need not be capturing in the output.\n      var capturedGroups = [];\n  \n      // Walk over and identify back references to build the capturedGroups\n      // mapping.\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        var p = parts[i];\n        if (p === '(') {\n          // groups are 1-indexed, so max group index is count of '('\n          ++groupIndex;\n        } else if ('\\\\' === p.charAt(0)) {\n          var decimalValue = +p.substring(1);\n          if (decimalValue && decimalValue <= groupIndex) {\n            capturedGroups[decimalValue] = -1;\n          }\n        }\n      }\n  \n      // Renumber groups and reduce capturing groups to non-capturing groups\n      // where possible.\n      for (var i = 1; i < capturedGroups.length; ++i) {\n        if (-1 === capturedGroups[i]) {\n          capturedGroups[i] = ++capturedGroupIndex;\n        }\n      }\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        var p = parts[i];\n        if (p === '(') {\n          ++groupIndex;\n          if (capturedGroups[groupIndex] === undefined) {\n            parts[i] = '(?:';\n          }\n        } else if ('\\\\' === p.charAt(0)) {\n          var decimalValue = +p.substring(1);\n          if (decimalValue && decimalValue <= groupIndex) {\n            parts[i] = '\\\\' + capturedGroups[groupIndex];\n          }\n        }\n      }\n  \n      // Remove any prefix anchors so that the output will match anywhere.\n      // ^^ really does mean an anchored match though.\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }\n      }\n  \n      // Expand letters to groups to handle mixing of case-sensitive and\n      // case-insensitive patterns if necessary.\n      if (regex.ignoreCase && needToFoldCase) {\n        for (var i = 0; i < n; ++i) {\n          var p = parts[i];\n          var ch0 = p.charAt(0);\n          if (p.length >= 2 && ch0 === '[') {\n            parts[i] = caseFoldCharset(p);\n          } else if (ch0 !== '\\\\') {\n            // TODO: handle letters in numeric escapes.\n            parts[i] = p.replace(\n                /[a-zA-Z]/g,\n                function (ch) {\n                  var cc = ch.charCodeAt(0);\n                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';\n                });\n          }\n        }\n      }\n  \n      return parts.join('');\n    }\n  \n    var rewritten = [];\n    for (var i = 0, n = regexs.length; i < n; ++i) {\n      var regex = regexs[i];\n      if (regex.global || regex.multiline) { throw new Error('' + regex); }\n      rewritten.push(\n          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');\n    }\n  \n    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');\n  }\n\n\n  /**\n   * Split markup into a string of source code and an array mapping ranges in\n   * that string to the text nodes in which they appear.\n   *\n   * <p>\n   * The HTML DOM structure:</p>\n   * <pre>\n   * (Element   \"p\"\n   *   (Element \"b\"\n   *     (Text  \"print \"))       ; #1\n   *   (Text    \"'Hello '\")      ; #2\n   *   (Element \"br\")            ; #3\n   *   (Text    \"  + 'World';\")) ; #4\n   * </pre>\n   * <p>\n   * corresponds to the HTML\n   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>\n   *\n   * <p>\n   * It will produce the output:</p>\n   * <pre>\n   * {\n   *   sourceCode: \"print 'Hello '\\n  + 'World';\",\n   *   //                 1         2\n   *   //       012345678901234 5678901234567\n   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]\n   * }\n   * </pre>\n   * <p>\n   * where #1 is a reference to the {@code \"print \"} text node above, and so\n   * on for the other text nodes.\n   * </p>\n   *\n   * <p>\n   * The {@code} spans array is an array of pairs.  Even elements are the start\n   * indices of substrings, and odd elements are the text nodes (or BR elements)\n   * that contain the text for those substrings.\n   * Substrings continue until the next index or the end of the source.\n   * </p>\n   *\n   * @param {Node} node an HTML DOM subtree containing source-code.\n   * @return {Object} source code and the text nodes in which they occur.\n   */\n  function extractSourceSpans(node) {\n    var nocode = /(?:^|\\s)nocode(?:\\s|$)/;\n  \n    var chunks = [];\n    var length = 0;\n    var spans = [];\n    var k = 0;\n  \n    var whitespace;\n    if (node.currentStyle) {\n      whitespace = node.currentStyle.whiteSpace;\n    } else if (window.getComputedStyle) {\n      whitespace = document.defaultView.getComputedStyle(node, null)\n          .getPropertyValue('white-space');\n    }\n    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);\n  \n    function walk(node) {\n      switch (node.nodeType) {\n        case 1:  // Element\n          if (nocode.test(node.className)) { return; }\n          for (var child = node.firstChild; child; child = child.nextSibling) {\n            walk(child);\n          }\n          var nodeName = node.nodeName;\n          if ('BR' === nodeName || 'LI' === nodeName) {\n            chunks[k] = '\\n';\n            spans[k << 1] = length++;\n            spans[(k++ << 1) | 1] = node;\n          }\n          break;\n        case 3: case 4:  // Text\n          var text = node.nodeValue;\n          if (text.length) {\n            if (!isPreformatted) {\n              text = text.replace(/[ \\t\\r\\n]+/g, ' ');\n            } else {\n              text = text.replace(/\\r\\n?/g, '\\n');  // Normalize newlines.\n            }\n            // TODO: handle tabs here?\n            chunks[k] = text;\n            spans[k << 1] = length;\n            length += text.length;\n            spans[(k++ << 1) | 1] = node;\n          }\n          break;\n      }\n    }\n  \n    walk(node);\n  \n    return {\n      sourceCode: chunks.join('').replace(/\\n$/, ''),\n      spans: spans\n    };\n  }\n\n\n  /**\n   * Apply the given language handler to sourceCode and add the resulting\n   * decorations to out.\n   * @param {number} basePos the index of sourceCode within the chunk of source\n   *    whose decorations are already present on out.\n   */\n  function appendDecorations(basePos, sourceCode, langHandler, out) {\n    if (!sourceCode) { return; }\n    var job = {\n      sourceCode: sourceCode,\n      basePos: basePos\n    };\n    langHandler(job);\n    out.push.apply(out, job.decorations);\n  }\n\n  var notWs = /\\S/;\n\n  /**\n   * Given an element, if it contains only one child element and any text nodes\n   * it contains contain only space characters, return the sole child element.\n   * Otherwise returns undefined.\n   * <p>\n   * This is meant to return the CODE element in {@code <pre><code ...>} when\n   * there is a single child element that contains all the non-space textual\n   * content, but not to return anything where there are multiple child elements\n   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there\n   * is textual content.\n   */\n  function childContentWrapper(element) {\n    var wrapper = undefined;\n    for (var c = element.firstChild; c; c = c.nextSibling) {\n      var type = c.nodeType;\n      wrapper = (type === 1)  // Element Node\n          ? (wrapper ? element : c)\n          : (type === 3)  // Text Node\n          ? (notWs.test(c.nodeValue) ? element : wrapper)\n          : wrapper;\n    }\n    return wrapper === element ? undefined : wrapper;\n  }\n\n  /** Given triples of [style, pattern, context] returns a lexing function,\n    * The lexing function interprets the patterns to find token boundaries and\n    * returns a decoration list of the form\n    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]\n    * where index_n is an index into the sourceCode, and style_n is a style\n    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to\n    * all characters in sourceCode[index_n-1:index_n].\n    *\n    * The stylePatterns is a list whose elements have the form\n    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].\n    *\n    * Style is a style constant like PR_PLAIN, or can be a string of the\n    * form 'lang-FOO', where FOO is a language extension describing the\n    * language of the portion of the token in $1 after pattern executes.\n    * E.g., if style is 'lang-lisp', and group 1 contains the text\n    * '(hello (world))', then that portion of the token will be passed to the\n    * registered lisp handler for formatting.\n    * The text before and after group 1 will be restyled using this decorator\n    * so decorators should take care that this doesn't result in infinite\n    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks\n    * something like ['lang-js', /<[s]cript>(.+?)<\\/script>/].  This may match\n    * '<script>foo()<\\/script>', which would cause the current decorator to\n    * be called with '<script>' which would not match the same rule since\n    * group 1 must not be empty, so it would be instead styled as PR_TAG by\n    * the generic tag rule.  The handler registered for the 'js' extension would\n    * then be called with 'foo()', and finally, the current decorator would\n    * be called with '<\\/script>' which would not match the original rule and\n    * so the generic tag rule would identify it as a tag.\n    *\n    * Pattern must only match prefixes, and if it matches a prefix, then that\n    * match is considered a token with the same style.\n    *\n    * Context is applied to the last non-whitespace, non-comment token\n    * recognized.\n    *\n    * Shortcut is an optional string of characters, any of which, if the first\n    * character, gurantee that this pattern and only this pattern matches.\n    *\n    * @param {Array} shortcutStylePatterns patterns that always start with\n    *   a known character.  Must have a shortcut string.\n    * @param {Array} fallthroughStylePatterns patterns that will be tried in\n    *   order if the shortcut ones fail.  May have shortcuts.\n    *\n    * @return {function (Object)} a\n    *   function that takes source code and returns a list of decorations.\n    */\n  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {\n    var shortcuts = {};\n    var tokenizer;\n    (function () {\n      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);\n      var allRegexs = [];\n      var regexKeys = {};\n      for (var i = 0, n = allPatterns.length; i < n; ++i) {\n        var patternParts = allPatterns[i];\n        var shortcutChars = patternParts[3];\n        if (shortcutChars) {\n          for (var c = shortcutChars.length; --c >= 0;) {\n            shortcuts[shortcutChars.charAt(c)] = patternParts;\n          }\n        }\n        var regex = patternParts[1];\n        var k = '' + regex;\n        if (!regexKeys.hasOwnProperty(k)) {\n          allRegexs.push(regex);\n          regexKeys[k] = null;\n        }\n      }\n      allRegexs.push(/[\\0-\\uffff]/);\n      tokenizer = combinePrefixPatterns(allRegexs);\n    })();\n\n    var nPatterns = fallthroughStylePatterns.length;\n\n    /**\n     * Lexes job.sourceCode and produces an output array job.decorations of\n     * style classes preceded by the position at which they start in\n     * job.sourceCode in order.\n     *\n     * @param {Object} job an object like <pre>{\n     *    sourceCode: {string} sourceText plain text,\n     *    basePos: {int} position of job.sourceCode in the larger chunk of\n     *        sourceCode.\n     * }</pre>\n     */\n    var decorate = function (job) {\n      var sourceCode = job.sourceCode, basePos = job.basePos;\n      /** Even entries are positions in source in ascending order.  Odd enties\n        * are style markers (e.g., PR_COMMENT) that run from that position until\n        * the end.\n        * @type {Array.<number|string>}\n        */\n      var decorations = [basePos, PR_PLAIN];\n      var pos = 0;  // index into sourceCode\n      var tokens = sourceCode.match(tokenizer) || [];\n      var styleCache = {};\n\n      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {\n        var token = tokens[ti];\n        var style = styleCache[token];\n        var match = void 0;\n\n        var isEmbedded;\n        if (typeof style === 'string') {\n          isEmbedded = false;\n        } else {\n          var patternParts = shortcuts[token.charAt(0)];\n          if (patternParts) {\n            match = token.match(patternParts[1]);\n            style = patternParts[0];\n          } else {\n            for (var i = 0; i < nPatterns; ++i) {\n              patternParts = fallthroughStylePatterns[i];\n              match = token.match(patternParts[1]);\n              if (match) {\n                style = patternParts[0];\n                break;\n              }\n            }\n\n            if (!match) {  // make sure that we make progress\n              style = PR_PLAIN;\n            }\n          }\n\n          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);\n          if (isEmbedded && !(match && typeof match[1] === 'string')) {\n            isEmbedded = false;\n            style = PR_SOURCE;\n          }\n\n          if (!isEmbedded) { styleCache[token] = style; }\n        }\n\n        var tokenStart = pos;\n        pos += token.length;\n\n        if (!isEmbedded) {\n          decorations.push(basePos + tokenStart, style);\n        } else {  // Treat group 1 as an embedded block of source code.\n          var embeddedSource = match[1];\n          var embeddedSourceStart = token.indexOf(embeddedSource);\n          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;\n          if (match[2]) {\n            // If embeddedSource can be blank, then it would match at the\n            // beginning which would cause us to infinitely recurse on the\n            // entire token, so we catch the right context in match[2].\n            embeddedSourceEnd = token.length - match[2].length;\n            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;\n          }\n          var lang = style.substring(5);\n          // Decorate the left of the embedded source\n          appendDecorations(\n              basePos + tokenStart,\n              token.substring(0, embeddedSourceStart),\n              decorate, decorations);\n          // Decorate the embedded source\n          appendDecorations(\n              basePos + tokenStart + embeddedSourceStart,\n              embeddedSource,\n              langHandlerForExtension(lang, embeddedSource),\n              decorations);\n          // Decorate the right of the embedded section\n          appendDecorations(\n              basePos + tokenStart + embeddedSourceEnd,\n              token.substring(embeddedSourceEnd),\n              decorate, decorations);\n        }\n      }\n      job.decorations = decorations;\n    };\n    return decorate;\n  }\n\n  /** returns a function that produces a list of decorations from source text.\n    *\n    * This code treats \", ', and ` as string delimiters, and \\ as a string\n    * escape.  It does not recognize perl's qq() style strings.\n    * It has no special handling for double delimiter escapes as in basic, or\n    * the tripled delimiters used in python, but should work on those regardless\n    * although in those cases a single string literal may be broken up into\n    * multiple adjacent string literals.\n    *\n    * It recognizes C, C++, and shell style comments.\n    *\n    * @param {Object} options a set of optional parameters.\n    * @return {function (Object)} a function that examines the source code\n    *     in the input job and builds the decoration list.\n    */\n  function sourceDecorator(options) {\n    var shortcutStylePatterns = [], fallthroughStylePatterns = [];\n    if (options['tripleQuotedStrings']) {\n      // '''multi-line-string''', 'single-line-string', and double-quoted\n      shortcutStylePatterns.push(\n          [PR_STRING,  /^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,\n           null, '\\'\"']);\n    } else if (options['multiLineStrings']) {\n      // 'multi-line-string', \"multi-line-string\"\n      shortcutStylePatterns.push(\n          [PR_STRING,  /^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,\n           null, '\\'\"`']);\n    } else {\n      // 'single-line-string', \"single-line-string\"\n      shortcutStylePatterns.push(\n          [PR_STRING,\n           /^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,\n           null, '\"\\'']);\n    }\n    if (options['verbatimStrings']) {\n      // verbatim-string-literal production from the C# grammar.  See issue 93.\n      fallthroughStylePatterns.push(\n          [PR_STRING, /^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/, null]);\n    }\n    var hc = options['hashComments'];\n    if (hc) {\n      if (options['cStyleComments']) {\n        if (hc > 1) {  // multiline hash comments\n          shortcutStylePatterns.push(\n              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);\n        } else {\n          // Stop C preprocessor declarations at an unclosed open comment\n          shortcutStylePatterns.push(\n              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,\n               null, '#']);\n        }\n        fallthroughStylePatterns.push(\n            [PR_STRING,\n             /^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,\n             null]);\n      } else {\n        shortcutStylePatterns.push([PR_COMMENT, /^#[^\\r\\n]*/, null, '#']);\n      }\n    }\n    if (options['cStyleComments']) {\n      fallthroughStylePatterns.push([PR_COMMENT, /^\\/\\/[^\\r\\n]*/, null]);\n      fallthroughStylePatterns.push(\n          [PR_COMMENT, /^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/, null]);\n    }\n    if (options['regexLiterals']) {\n      /**\n       * @const\n       */\n      var REGEX_LITERAL = (\n          // A regular expression literal starts with a slash that is\n          // not followed by * or / so that it is not confused with\n          // comments.\n          '/(?=[^/*])'\n          // and then contains any number of raw characters,\n          + '(?:[^/\\\\x5B\\\\x5C]'\n          // escape sequences (\\x5C),\n          +    '|\\\\x5C[\\\\s\\\\S]'\n          // or non-nesting character sets (\\x5B\\x5D);\n          +    '|\\\\x5B(?:[^\\\\x5C\\\\x5D]|\\\\x5C[\\\\s\\\\S])*(?:\\\\x5D|$))+'\n          // finally closed by a /.\n          + '/');\n      fallthroughStylePatterns.push(\n          ['lang-regex',\n           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')\n           ]);\n    }\n\n    var types = options['types'];\n    if (types) {\n      fallthroughStylePatterns.push([PR_TYPE, types]);\n    }\n\n    var keywords = (\"\" + options['keywords']).replace(/^ | $/g, '');\n    if (keywords.length) {\n      fallthroughStylePatterns.push(\n          [PR_KEYWORD,\n           new RegExp('^(?:' + keywords.replace(/[\\s,]+/g, '|') + ')\\\\b'),\n           null]);\n    }\n\n    shortcutStylePatterns.push([PR_PLAIN,       /^\\s+/, null, ' \\r\\n\\t\\xA0']);\n    fallthroughStylePatterns.push(\n        // TODO(mikesamuel): recognize non-latin letters and numerals in idents\n        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],\n        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/, null],\n        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],\n        [PR_LITERAL,\n         new RegExp(\n             '^(?:'\n             // A hex number\n             + '0x[a-f0-9]+'\n             // or an octal or decimal number,\n             + '|(?:\\\\d(?:_\\\\d+)*\\\\d*(?:\\\\.\\\\d*)?|\\\\.\\\\d\\\\+)'\n             // possibly in scientific notation\n             + '(?:e[+\\\\-]?\\\\d+)?'\n             + ')'\n             // with an optional modifier like UL for unsigned long\n             + '[a-z]*', 'i'),\n         null, '0123456789'],\n        // Don't treat escaped quotes in bash as starting strings.  See issue 144.\n        [PR_PLAIN,       /^\\\\[\\s\\S]?/, null],\n        [PR_PUNCTUATION, /^.[^\\s\\w\\.$@\\'\\\"\\`\\/\\#\\\\]*/, null]);\n\n    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);\n  }\n\n  var decorateSource = sourceDecorator({\n        'keywords': ALL_KEYWORDS,\n        'hashComments': true,\n        'cStyleComments': true,\n        'multiLineStrings': true,\n        'regexLiterals': true\n      });\n\n  /**\n   * Given a DOM subtree, wraps it in a list, and puts each line into its own\n   * list item.\n   *\n   * @param {Node} node modified in place.  Its content is pulled into an\n   *     HTMLOListElement, and each line is moved into a separate list item.\n   *     This requires cloning elements, so the input might not have unique\n   *     IDs after numbering.\n   */\n  function numberLines(node, opt_startLineNum) {\n    var nocode = /(?:^|\\s)nocode(?:\\s|$)/;\n    var lineBreak = /\\r\\n?|\\n/;\n  \n    var document = node.ownerDocument;\n  \n    var whitespace;\n    if (node.currentStyle) {\n      whitespace = node.currentStyle.whiteSpace;\n    } else if (window.getComputedStyle) {\n      whitespace = document.defaultView.getComputedStyle(node, null)\n          .getPropertyValue('white-space');\n    }\n    // If it's preformatted, then we need to split lines on line breaks\n    // in addition to <BR>s.\n    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);\n  \n    var li = document.createElement('LI');\n    while (node.firstChild) {\n      li.appendChild(node.firstChild);\n    }\n    // An array of lines.  We split below, so this is initialized to one\n    // un-split line.\n    var listItems = [li];\n  \n    function walk(node) {\n      switch (node.nodeType) {\n        case 1:  // Element\n          if (nocode.test(node.className)) { break; }\n          if ('BR' === node.nodeName) {\n            breakAfter(node);\n            // Discard the <BR> since it is now flush against a </LI>.\n            if (node.parentNode) {\n              node.parentNode.removeChild(node);\n            }\n          } else {\n            for (var child = node.firstChild; child; child = child.nextSibling) {\n              walk(child);\n            }\n          }\n          break;\n        case 3: case 4:  // Text\n          if (isPreformatted) {\n            var text = node.nodeValue;\n            var match = text.match(lineBreak);\n            if (match) {\n              var firstLine = text.substring(0, match.index);\n              node.nodeValue = firstLine;\n              var tail = text.substring(match.index + match[0].length);\n              if (tail) {\n                var parent = node.parentNode;\n                parent.insertBefore(\n                    document.createTextNode(tail), node.nextSibling);\n              }\n              breakAfter(node);\n              if (!firstLine) {\n                // Don't leave blank text nodes in the DOM.\n                node.parentNode.removeChild(node);\n              }\n            }\n          }\n          break;\n      }\n    }\n  \n    // Split a line after the given node.\n    function breakAfter(lineEndNode) {\n      // If there's nothing to the right, then we can skip ending the line\n      // here, and move root-wards since splitting just before an end-tag\n      // would require us to create a bunch of empty copies.\n      while (!lineEndNode.nextSibling) {\n        lineEndNode = lineEndNode.parentNode;\n        if (!lineEndNode) { return; }\n      }\n  \n      function breakLeftOf(limit, copy) {\n        // Clone shallowly if this node needs to be on both sides of the break.\n        var rightSide = copy ? limit.cloneNode(false) : limit;\n        var parent = limit.parentNode;\n        if (parent) {\n          // We clone the parent chain.\n          // This helps us resurrect important styling elements that cross lines.\n          // E.g. in <i>Foo<br>Bar</i>\n          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.\n          var parentClone = breakLeftOf(parent, 1);\n          // Move the clone and everything to the right of the original\n          // onto the cloned parent.\n          var next = limit.nextSibling;\n          parentClone.appendChild(rightSide);\n          for (var sibling = next; sibling; sibling = next) {\n            next = sibling.nextSibling;\n            parentClone.appendChild(sibling);\n          }\n        }\n        return rightSide;\n      }\n  \n      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);\n  \n      // Walk the parent chain until we reach an unattached LI.\n      for (var parent;\n           // Check nodeType since IE invents document fragments.\n           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {\n        copiedListItem = parent;\n      }\n      // Put it on the list of lines for later processing.\n      listItems.push(copiedListItem);\n    }\n  \n    // Split lines while there are lines left to split.\n    for (var i = 0;  // Number of lines that have been split so far.\n         i < listItems.length;  // length updated by breakAfter calls.\n         ++i) {\n      walk(listItems[i]);\n    }\n  \n    // Make sure numeric indices show correctly.\n    if (opt_startLineNum === (opt_startLineNum|0)) {\n      listItems[0].setAttribute('value', opt_startLineNum);\n    }\n  \n    var ol = document.createElement('OL');\n    ol.className = 'linenums';\n    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;\n    for (var i = 0, n = listItems.length; i < n; ++i) {\n      li = listItems[i];\n      // Stick a class on the LIs so that stylesheets can\n      // color odd/even rows, or any other row pattern that\n      // is co-prime with 10.\n      li.className = 'L' + ((i + offset) % 10);\n      if (!li.firstChild) {\n        li.appendChild(document.createTextNode('\\xA0'));\n      }\n      ol.appendChild(li);\n    }\n  \n    node.appendChild(ol);\n  }\n\n  /**\n   * Breaks {@code job.sourceCode} around style boundaries in\n   * {@code job.decorations} and modifies {@code job.sourceNode} in place.\n   * @param {Object} job like <pre>{\n   *    sourceCode: {string} source as plain text,\n   *    spans: {Array.<number|Node>} alternating span start indices into source\n   *       and the text node or element (e.g. {@code <BR>}) corresponding to that\n   *       span.\n   *    decorations: {Array.<number|string} an array of style classes preceded\n   *       by the position at which they start in job.sourceCode in order\n   * }</pre>\n   * @private\n   */\n  function recombineTagsAndDecorations(job) {\n    var isIE = /\\bMSIE\\b/.test(navigator.userAgent);\n    var newlineRe = /\\n/g;\n  \n    var source = job.sourceCode;\n    var sourceLength = source.length;\n    // Index into source after the last code-unit recombined.\n    var sourceIndex = 0;\n  \n    var spans = job.spans;\n    var nSpans = spans.length;\n    // Index into spans after the last span which ends at or before sourceIndex.\n    var spanIndex = 0;\n  \n    var decorations = job.decorations;\n    var nDecorations = decorations.length;\n    // Index into decorations after the last decoration which ends at or before\n    // sourceIndex.\n    var decorationIndex = 0;\n  \n    // Remove all zero-length decorations.\n    decorations[nDecorations] = sourceLength;\n    var decPos, i;\n    for (i = decPos = 0; i < nDecorations;) {\n      if (decorations[i] !== decorations[i + 2]) {\n        decorations[decPos++] = decorations[i++];\n        decorations[decPos++] = decorations[i++];\n      } else {\n        i += 2;\n      }\n    }\n    nDecorations = decPos;\n  \n    // Simplify decorations.\n    for (i = decPos = 0; i < nDecorations;) {\n      var startPos = decorations[i];\n      // Conflate all adjacent decorations that use the same style.\n      var startDec = decorations[i + 1];\n      var end = i + 2;\n      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {\n        end += 2;\n      }\n      decorations[decPos++] = startPos;\n      decorations[decPos++] = startDec;\n      i = end;\n    }\n  \n    nDecorations = decorations.length = decPos;\n  \n    var decoration = null;\n    while (spanIndex < nSpans) {\n      var spanStart = spans[spanIndex];\n      var spanEnd = spans[spanIndex + 2] || sourceLength;\n  \n      var decStart = decorations[decorationIndex];\n      var decEnd = decorations[decorationIndex + 2] || sourceLength;\n  \n      var end = Math.min(spanEnd, decEnd);\n  \n      var textNode = spans[spanIndex + 1];\n      var styledText;\n      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s\n          // Don't introduce spans around empty text nodes.\n          && (styledText = source.substring(sourceIndex, end))) {\n        // This may seem bizarre, and it is.  Emitting LF on IE causes the\n        // code to display with spaces instead of line breaks.\n        // Emitting Windows standard issue linebreaks (CRLF) causes a blank\n        // space to appear at the beginning of every line but the first.\n        // Emitting an old Mac OS 9 line separator makes everything spiffy.\n        if (isIE) { styledText = styledText.replace(newlineRe, '\\r'); }\n        textNode.nodeValue = styledText;\n        var document = textNode.ownerDocument;\n        var span = document.createElement('SPAN');\n        span.className = decorations[decorationIndex + 1];\n        var parentNode = textNode.parentNode;\n        parentNode.replaceChild(span, textNode);\n        span.appendChild(textNode);\n        if (sourceIndex < spanEnd) {  // Split off a text node.\n          spans[spanIndex + 1] = textNode\n              // TODO: Possibly optimize by using '' if there's no flicker.\n              = document.createTextNode(source.substring(end, spanEnd));\n          parentNode.insertBefore(textNode, span.nextSibling);\n        }\n      }\n  \n      sourceIndex = end;\n  \n      if (sourceIndex >= spanEnd) {\n        spanIndex += 2;\n      }\n      if (sourceIndex >= decEnd) {\n        decorationIndex += 2;\n      }\n    }\n  }\n\n\n  /** Maps language-specific file extensions to handlers. */\n  var langHandlerRegistry = {};\n  /** Register a language handler for the given file extensions.\n    * @param {function (Object)} handler a function from source code to a list\n    *      of decorations.  Takes a single argument job which describes the\n    *      state of the computation.   The single parameter has the form\n    *      {@code {\n    *        sourceCode: {string} as plain text.\n    *        decorations: {Array.<number|string>} an array of style classes\n    *                     preceded by the position at which they start in\n    *                     job.sourceCode in order.\n    *                     The language handler should assigned this field.\n    *        basePos: {int} the position of source in the larger source chunk.\n    *                 All positions in the output decorations array are relative\n    *                 to the larger source chunk.\n    *      } }\n    * @param {Array.<string>} fileExtensions\n    */\n  function registerLangHandler(handler, fileExtensions) {\n    for (var i = fileExtensions.length; --i >= 0;) {\n      var ext = fileExtensions[i];\n      if (!langHandlerRegistry.hasOwnProperty(ext)) {\n        langHandlerRegistry[ext] = handler;\n      } else if (window['console']) {\n        console['warn']('cannot override language handler %s', ext);\n      }\n    }\n  }\n  function langHandlerForExtension(extension, source) {\n    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {\n      // Treat it as markup if the first non whitespace character is a < and\n      // the last non-whitespace character is a >.\n      extension = /^\\s*</.test(source)\n          ? 'default-markup'\n          : 'default-code';\n    }\n    return langHandlerRegistry[extension];\n  }\n  registerLangHandler(decorateSource, ['default-code']);\n  registerLangHandler(\n      createSimpleLexer(\n          [],\n          [\n           [PR_PLAIN,       /^[^<?]+/],\n           [PR_DECLARATION, /^<!\\w[^>]*(?:>|$)/],\n           [PR_COMMENT,     /^<\\!--[\\s\\S]*?(?:-\\->|$)/],\n           // Unescaped content in an unknown language\n           ['lang-',        /^<\\?([\\s\\S]+?)(?:\\?>|$)/],\n           ['lang-',        /^<%([\\s\\S]+?)(?:%>|$)/],\n           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],\n           ['lang-',        /^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],\n           // Unescaped content in javascript.  (Or possibly vbscript).\n           ['lang-js',      /^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],\n           // Contains unescaped stylesheet content\n           ['lang-css',     /^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],\n           ['lang-in.tag',  /^(<\\/?[a-z][^<>]*>)/i]\n          ]),\n      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);\n  registerLangHandler(\n      createSimpleLexer(\n          [\n           [PR_PLAIN,        /^[\\s]+/, null, ' \\t\\r\\n'],\n           [PR_ATTRIB_VALUE, /^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/, null, '\\\"\\'']\n           ],\n          [\n           [PR_TAG,          /^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],\n           [PR_ATTRIB_NAME,  /^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],\n           ['lang-uq.val',   /^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],\n           [PR_PUNCTUATION,  /^[=<>\\/]+/],\n           ['lang-js',       /^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],\n           ['lang-js',       /^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],\n           ['lang-js',       /^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],\n           ['lang-css',      /^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],\n           ['lang-css',      /^style\\s*=\\s*\\'([^\\']+)\\'/i],\n           ['lang-css',      /^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]\n           ]),\n      ['in.tag']);\n  registerLangHandler(\n      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\\s\\S]+/]]), ['uq.val']);\n  registerLangHandler(sourceDecorator({\n          'keywords': CPP_KEYWORDS,\n          'hashComments': true,\n          'cStyleComments': true,\n          'types': C_TYPES\n        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);\n  registerLangHandler(sourceDecorator({\n          'keywords': 'null,true,false'\n        }), ['json']);\n  registerLangHandler(sourceDecorator({\n          'keywords': CSHARP_KEYWORDS,\n          'hashComments': true,\n          'cStyleComments': true,\n          'verbatimStrings': true,\n          'types': C_TYPES\n        }), ['cs']);\n  registerLangHandler(sourceDecorator({\n          'keywords': JAVA_KEYWORDS,\n          'cStyleComments': true\n        }), ['java']);\n  registerLangHandler(sourceDecorator({\n          'keywords': SH_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true\n        }), ['bsh', 'csh', 'sh']);\n  registerLangHandler(sourceDecorator({\n          'keywords': PYTHON_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'tripleQuotedStrings': true\n        }), ['cv', 'py']);\n  registerLangHandler(sourceDecorator({\n          'keywords': PERL_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'regexLiterals': true\n        }), ['perl', 'pl', 'pm']);\n  registerLangHandler(sourceDecorator({\n          'keywords': RUBY_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'regexLiterals': true\n        }), ['rb']);\n  registerLangHandler(sourceDecorator({\n          'keywords': JSCRIPT_KEYWORDS,\n          'cStyleComments': true,\n          'regexLiterals': true\n        }), ['js']);\n  registerLangHandler(sourceDecorator({\n          'keywords': COFFEE_KEYWORDS,\n          'hashComments': 3,  // ### style block comments\n          'cStyleComments': true,\n          'multilineStrings': true,\n          'tripleQuotedStrings': true,\n          'regexLiterals': true\n        }), ['coffee']);\n  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\\s\\S]+/]]), ['regex']);\n\n  function applyDecorator(job) {\n    var opt_langExtension = job.langExtension;\n\n    try {\n      // Extract tags, and convert the source code to plain text.\n      var sourceAndSpans = extractSourceSpans(job.sourceNode);\n      /** Plain text. @type {string} */\n      var source = sourceAndSpans.sourceCode;\n      job.sourceCode = source;\n      job.spans = sourceAndSpans.spans;\n      job.basePos = 0;\n\n      // Apply the appropriate language handler\n      langHandlerForExtension(opt_langExtension, source)(job);\n\n      // Integrate the decorations and tags back into the source code,\n      // modifying the sourceNode in place.\n      recombineTagsAndDecorations(job);\n    } catch (e) {\n      if ('console' in window) {\n        console['log'](e && e['stack'] ? e['stack'] : e);\n      }\n    }\n  }\n\n  /**\n   * @param sourceCodeHtml {string} The HTML to pretty print.\n   * @param opt_langExtension {string} The language name to use.\n   *     Typically, a filename extension like 'cpp' or 'java'.\n   * @param opt_numberLines {number|boolean} True to number lines,\n   *     or the 1-indexed number of the first line in sourceCodeHtml.\n   */\n  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {\n    var container = document.createElement('PRE');\n    // This could cause images to load and onload listeners to fire.\n    // E.g. <img onerror=\"alert(1337)\" src=\"nosuchimage.png\">.\n    // We assume that the inner HTML is from a trusted source.\n    container.innerHTML = sourceCodeHtml;\n    if (opt_numberLines) {\n      numberLines(container, opt_numberLines);\n    }\n\n    var job = {\n      langExtension: opt_langExtension,\n      numberLines: opt_numberLines,\n      sourceNode: container\n    };\n    applyDecorator(job);\n    return container.innerHTML;\n  }\n\n  function prettyPrint(opt_whenDone) {\n    function byTagName(tn) { return document.getElementsByTagName(tn); }\n    // fetch a list of nodes to rewrite\n    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];\n    var elements = [];\n    for (var i = 0; i < codeSegments.length; ++i) {\n      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {\n        elements.push(codeSegments[i][j]);\n      }\n    }\n    codeSegments = null;\n\n    var clock = Date;\n    if (!clock['now']) {\n      clock = { 'now': function () { return +(new Date); } };\n    }\n\n    // The loop is broken into a series of continuations to make sure that we\n    // don't make the browser unresponsive when rewriting a large page.\n    var k = 0;\n    var prettyPrintingJob;\n\n    var langExtensionRe = /\\blang(?:uage)?-([\\w.]+)(?!\\S)/;\n    var prettyPrintRe = /\\bprettyprint\\b/;\n\n    function doWork() {\n      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?\n                     clock['now']() + 250 /* ms */ :\n                     Infinity);\n      for (; k < elements.length && clock['now']() < endTime; k++) {\n        var cs = elements[k];\n        var className = cs.className;\n        if (className.indexOf('prettyprint') >= 0) {\n          // If the classes includes a language extensions, use it.\n          // Language extensions can be specified like\n          //     <pre class=\"prettyprint lang-cpp\">\n          // the language extension \"cpp\" is used to find a language handler as\n          // passed to PR.registerLangHandler.\n          // HTML5 recommends that a language be specified using \"language-\"\n          // as the prefix instead.  Google Code Prettify supports both.\n          // http://dev.w3.org/html5/spec-author-view/the-code-element.html\n          var langExtension = className.match(langExtensionRe);\n          // Support <pre class=\"prettyprint\"><code class=\"language-c\">\n          var wrapper;\n          if (!langExtension && (wrapper = childContentWrapper(cs))\n              && \"CODE\" === wrapper.tagName) {\n            langExtension = wrapper.className.match(langExtensionRe);\n          }\n\n          if (langExtension) {\n            langExtension = langExtension[1];\n          }\n\n          // make sure this is not nested in an already prettified element\n          var nested = false;\n          for (var p = cs.parentNode; p; p = p.parentNode) {\n            if ((p.tagName === 'pre' || p.tagName === 'code' ||\n                 p.tagName === 'xmp') &&\n                p.className && p.className.indexOf('prettyprint') >= 0) {\n              nested = true;\n              break;\n            }\n          }\n          if (!nested) {\n            // Look for a class like linenums or linenums:<n> where <n> is the\n            // 1-indexed number of the first line.\n            var lineNums = cs.className.match(/\\blinenums\\b(?::(\\d+))?/);\n            lineNums = lineNums\n                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true\n                  : false;\n            if (lineNums) { numberLines(cs, lineNums); }\n\n            // do the pretty printing\n            prettyPrintingJob = {\n              langExtension: langExtension,\n              sourceNode: cs,\n              numberLines: lineNums\n            };\n            applyDecorator(prettyPrintingJob);\n          }\n        }\n      }\n      if (k < elements.length) {\n        // finish up in a continuation\n        setTimeout(doWork, 250);\n      } else if (opt_whenDone) {\n        opt_whenDone();\n      }\n    }\n\n    doWork();\n  }\n\n   /**\n    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with\n    * {@code class=prettyprint} and prettify them.\n    *\n    * @param {Function?} opt_whenDone if specified, called when the last entry\n    *     has been finished.\n    */\n  window['prettyPrintOne'] = prettyPrintOne;\n   /**\n    * Pretty print a chunk of code.\n    *\n    * @param {string} sourceCodeHtml code as html\n    * @return {string} code as html, but prettier\n    */\n  window['prettyPrint'] = prettyPrint;\n   /**\n    * Contains functions for creating and registering new language handlers.\n    * @type {Object}\n    */\n  window['PR'] = {\n        'createSimpleLexer': createSimpleLexer,\n        'registerLangHandler': registerLangHandler,\n        'sourceDecorator': sourceDecorator,\n        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,\n        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,\n        'PR_COMMENT': PR_COMMENT,\n        'PR_DECLARATION': PR_DECLARATION,\n        'PR_KEYWORD': PR_KEYWORD,\n        'PR_LITERAL': PR_LITERAL,\n        'PR_NOCODE': PR_NOCODE,\n        'PR_PLAIN': PR_PLAIN,\n        'PR_PUNCTUATION': PR_PUNCTUATION,\n        'PR_SOURCE': PR_SOURCE,\n        'PR_STRING': PR_STRING,\n        'PR_TAG': PR_TAG,\n        'PR_TYPE': PR_TYPE\n      };\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/mouse-wheel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - mouse wheel</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      wheelStep: 20\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      wheelStep: 100\n  });\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          wheelStep: 20\n      });\n\n      $('#testDiv2').slimScroll({\n          wheelStep: 100\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/multiple-elements.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - multiple elements</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<div style=\"clear:both\"></div>\n<pre class=\"prettyprint\">\n  $('.area').slimscroll({\n    width: '200px'\n  }).parent().css({\n    'float': 'left',\n    'margin-right': '30px'\n  });\n</pre>\n\n<div style=\"clear:both\"></div>\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('.area').slimscroll({\n        width: '200px'\n      }).parent().css({\n        'float': 'left',\n        'margin-right': '30px'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/navigation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - navigation</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<div id=\"nav\">\n  <h1>jQuery slimScroll</h1>\n  <h2>Facebook-style jQuery Scrollbar</h1>\n  <hr />\n  <ul>\n    <li><a target=\"main\" href=\"height-width.html\">Height / Width options</a></li>\n    <li><a target=\"main\" href=\"scrollbar.html\">Scrollbar options</a></li>\n    <li><a target=\"main\" href=\"rail.html\">Rail options</a></li>\n    <li><a target=\"main\" href=\"start-position.html\">Start position</a></li>\n    <li><a target=\"main\" href=\"chaining.html\">Chaining</a></li>\n    <li><a target=\"main\" href=\"multiple-elements.html\">Mulitple bindings</a></li>\n    <li><a target=\"main\" href=\"programmatic-scrolling.html\">Programmatic Scrolling</a></li>\n    <li><a target=\"main\" href=\"scroll-events.html\">Scroll Events</a></li>\n    <li><a target=\"main\" href=\"allow-page-scroll.html\">allowPageScroll option</a></li>\n    <li><a target=\"main\" href=\"disable-fade-out.html\">disableFadeOut option</a></li>\n    <li><a target=\"main\" href=\"mouse-wheel.html\">wheelStep option</a></li>\n    <li><a target=\"main\" href=\"nested.html\">nested elements</a></li>\n    <li><a target=\"main\" href=\"dynamic-content.html\">dynamic content</a></li>\n  </ul>\n</div>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/nested.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - nested elements</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <div id=\"testDivNested\">\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      </div>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    height: '500px'\n  });\n  $('#testDivNested').slimscroll({\n    width: '300px',\n    height: '200px'\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll({\n        height: '500px'\n      });\n      $('#testDivNested').slimscroll({\n        width: '300px',\n        height: '200px'\n      }).parent().css({\n        'float': 'left',\n        'margin': '0 10px 10px 0'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/programmatic-scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - programmatic scrolling</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <input type=\"button\" id=\"scrollDown\" value=\"scroll down by 50 px\" />\n  <input type=\"button\" id=\"scrollUp\" value=\"scroll up by 50 px\" />\n\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: '250px'\n});\n\n$('#scrollDown').click(function(){\n  $('#testDiv').slimScroll({ scrollBy: '50px' });\n});\n\n$('#scrollUp').click(function(){\n  $('#testDiv').slimScroll({ scrollBy: '-50px' });\n});\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <input type=\"button\" id=\"scrollDownTo\" value=\"Scroll to 300px from the top\" />\n  <input type=\"button\" id=\"scrollUpTo\" value=\"Scroll to 20px from the top\" />\n\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  height: '250px'\n});\n\n$('#scrollDownTo').click(function(){\n  $('#testDiv2').slimScroll({ scrollTo: '300px' });\n});\n\n$('#scrollUpTo').click(function(){\n  $('#testDiv2').slimScroll({ scrollTo: '20px' });\n});\n</pre>\n\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        height: '250px'\n      });\n\n      $('#scrollDown').click(function(){\n        $('#testDiv').slimScroll({ scrollBy: '50px' });\n      });\n\n      $('#scrollUp').click(function(){\n        $('#testDiv').slimScroll({ scrollBy: '-50px' });\n      });\n\n      $('#testDiv2').slimscroll({\n        height: '250px'\n      });\n\n      $('#scrollDownTo').click(function(){\n        $('#testDiv2').slimScroll({ scrollTo: '300px' });\n      });\n\n      $('#scrollUpTo').click(function(){\n        $('#testDiv2').slimScroll({ scrollTo: '20px' });\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/rail.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - rail options</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      alwaysVisible: true,\n      railVisible: true\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      railVisible: true,\n      railColor: '#f00'\n  });\n</pre>\n\n  <div id=\"testDiv3\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv3').slimScroll({\n      railVisible: true,\n      railOpacity: 0.8\n  });\n</pre>\n\n  <div id=\"testDiv4\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv4').slimscroll({\n    railVisible: true\n  });\n</pre>\n\n  <div id=\"testDiv5\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  // This also removes dependency on jQuery UI\n  $('#testDiv5').slimscroll({\n    railDraggable: false\n  });\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          alwaysVisible: true,\n          railVisible: true\n      });\n\n      $('#testDiv2').slimScroll({\n          railVisible: true,\n          railColor: '#f00'\n      });\n\n      $('#testDiv3').slimScroll({\n          railVisible: true,\n          railOpacity: 0.8\n      });\n\n      $('#testDiv4').slimscroll({\n        railVisible: true\n      });\n\n      $('#testDiv5').slimscroll({\n        railDraggable: false\n      });\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scroll-events.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - top/bottom events</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n  <div style=\"padding:2px;border:1px dashed #333;margin:2px;\" id=\"testDivOut\"></div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    alwaysVisible: true\n  }).bind('slimscroll', function(e, pos) {\n    $('#testDivOut').append(\"Reached \" + pos + \", \");\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n  <div style=\"padding:2px;border:1px dashed #333;margin:2px;\" id=\"testDivOut2\"></div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {\n    $('#testDivOut2').append(\"Scroll value: \" + pos + \"px\");\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll({\n        alwaysVisible: true\n      }).bind('slimscroll', function(e, pos) {\n        $('#testDivOut').append(\"Reached \" + pos + \", \");\n      });\n\n      $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {\n        $('#testDivOut2').append(\"Scroll: \" + pos + \"px, \");\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scrollbar.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - scrollbar options</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    size: '15px'\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      position: 'left'\n  });\n</pre>\n\n  <div id=\"testDiv3\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv3').slimScroll({\n      color: '#00f'\n  });\n</pre>\n\n\n\n  <div id=\"testDiv4\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv4').slimScroll({\n      alwaysVisible: true\n  });\n</pre>\n\n\n\n  <div id=\"testDiv5\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv5').slimScroll({\n      distance: '20px',\n      opacity: 1\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        size: '15px'\n      });\n\n      $('#testDiv2').slimScroll({\n          position: 'left'\n      });\n\n      $('#testDiv3').slimScroll({\n          color: '#00f'\n      });\n\n      $('#testDiv4').slimScroll({\n          alwaysVisible: true\n      });\n\n      $('#testDiv5').slimScroll({\n          distance: '20px',\n          opacity: 1\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/start-position.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - start position</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      start: 'bottom'\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p><span class=\"helloDiv\" style=\"background:green;font-weigh:bold;\">Hello!</span>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      start: $('.helloDiv')\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          start: 'bottom'\n      });\n\n      $('#testDiv2').slimScroll({\n          start: $('.helloDiv')\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/style.css",
    "content": "body { font-family:Verdana,sans-serif; font-size:12px; color:#000; background:#111; }\nh1 { font-size:20px; margin:0 }\nh2 { font-size:10px; margin:0 }\np { margin:5px 0; font-size:12px; }\npre.prettyprint { padding:15px; border:1px solid #eee; border-radius:5px; background:#eee; border-bottom:3px solid; }\n.examples { border-radius:20px; background:#fff; padding:15px;\n  margin:0 150px 0 0; border-collapse: collapse; border:1px solid #000; }\n.slimScrollDiv { border:1px solid #eee; }\n#nav { position:fixed; top:0 left:0; background:#fff; padding:15px; border-radius:20px; width:200px; }\n#nav ul { list-style-type:square; list-style-position:inside; margin:20px 0 0 0; padding:0; }\n#nav a { text-decoration:none; color:#000; }\n#nav a:hover { text-decoration: underline }\n#git-fork img { position:fixed; top:0; right:0; border:0; z-index:999; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.js",
    "content": "/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 1.1.1\n *\n */\n(function($) {\n\n  jQuery.fn.extend({\n    slimScroll: function(options) {\n\n      var defaults = {\n\n        // width in pixels of the visible scroll area\n        width : 'auto',\n\n        // height in pixels of the visible scroll area\n        height : '250px',\n\n        // width in pixels of the scrollbar and rail\n        size : '7px',\n\n        // scrollbar color, accepts any hex/color value\n        color: '#000',\n\n        // scrollbar position - left/right\n        position : 'right',\n\n        // distance in pixels between the side edge and the scrollbar\n        distance : '1px',\n\n        // default scroll position on load - top / bottom / $('selector')\n        start : 'top',\n\n        // sets scrollbar opacity\n        opacity : .4,\n\n        // enables always-on mode for the scrollbar\n        alwaysVisible : false,\n\n        // check if we should hide the scrollbar when user is hovering over\n        disableFadeOut: false,\n\n        // sets visibility of the rail\n        railVisible : false,\n\n        // sets rail color\n        railColor : '#333',\n\n        // sets rail opacity\n        railOpacity : .2,\n\n        // whether  we should use jQuery UI Draggable to enable bar dragging\n        railDraggable : true,\n\n        // defautlt CSS class of the slimscroll rail\n        railClass : 'slimScrollRail',\n\n        // defautlt CSS class of the slimscroll bar\n        barClass : 'slimScrollBar',\n\n        // defautlt CSS class of the slimscroll wrapper\n        wrapperClass : 'slimScrollDiv',\n\n        // check if mousewheel should scroll the window if we reach top/bottom\n        allowPageScroll : false,\n\n        // scroll amount applied to each mouse wheel step\n        wheelStep : 20,\n\n        // scroll amount applied when user is using gestures\n        touchScrollStep : 200\n      };\n\n      var o = $.extend(defaults, options);\n\n      // do it for every element that matches selector\n      this.each(function(){\n\n      var isOverPanel, isOverBar, isDragg, queueHide, touchDif,\n        barHeight, percentScroll, lastScroll,\n        divS = '<div></div>',\n        minBarHeight = 30,\n        releaseScroll = false;\n\n        // used in event handlers and for better minification\n        var me = $(this);\n\n        // ensure we are not binding it again\n        if (me.parent().hasClass(o.wrapperClass))\n        {\n            // start from last bar position\n            var offset = me.scrollTop();\n\n            // find bar and rail\n            bar = me.parent().find('.' + o.barClass);\n            rail = me.parent().find('.' + o.railClass);\n\n            getBarHeight();\n\n            // check if we should scroll existing instance\n            if ($.isPlainObject(options))\n            {\n              // Pass height: auto to an existing slimscroll object to force a resize after contents have changed\n              if ( 'height' in options && options.height == 'auto' ) {\n                me.parent().css('height', 'auto');\n                me.css('height', 'auto');\n                var height = me.parent().parent().innerHeight();\n                me.parent().css('height', height);\n                me.css('height', height);\n              }\n\n              if ('scrollTo' in options)\n              {\n                // jump to a static point\n                offset = parseInt(o.scrollTo);\n              }\n              else if ('scrollBy' in options)\n              {\n                // jump by value pixels\n                offset += parseInt(o.scrollBy);\n              }\n              else if ('destroy' in options)\n              {\n                // remove slimscroll elements\n                bar.remove();\n                rail.remove();\n                me.unwrap();\n                return;\n              }\n\n              // scroll content by the given offset\n              scrollContent(offset, false, true);\n            }\n\n            return;\n        }\n\n        // optionally set height to the parent's height\n        o.height = (o.height == 'auto') ? me.parent().innerHeight() : o.height;\n\n        // wrap content\n        var wrapper = $(divS)\n          .addClass(o.wrapperClass)\n          .css({\n            position: 'relative',\n            overflow: 'hidden',\n            width: o.width,\n            height: o.height\n          });\n\n        // update style for the div\n        me.css({\n          overflow: 'hidden',\n          width: o.width,\n          height: o.height\n        });\n\n        // create scrollbar rail\n        var rail = $(divS)\n          .addClass(o.railClass)\n          .css({\n            width: o.size,\n            height: '100%',\n            position: 'absolute',\n            top: 0,\n            display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',\n            'border-radius': o.size,\n            background: o.railColor,\n            opacity: o.railOpacity,\n            zIndex: 90\n          });\n\n        // create scrollbar\n        var bar = $(divS)\n          .addClass(o.barClass)\n          .css({\n            background: o.color,\n            width: o.size,\n            position: 'absolute',\n            top: 0,\n            opacity: o.opacity,\n            display: o.alwaysVisible ? 'block' : 'none',\n            'border-radius' : o.size,\n            BorderRadius: o.size,\n            MozBorderRadius: o.size,\n            WebkitBorderRadius: o.size,\n            zIndex: 99\n          });\n\n        // set position\n        var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };\n        rail.css(posCss);\n        bar.css(posCss);\n\n        // wrap it\n        me.wrap(wrapper);\n\n        // append to parent div\n        me.parent().append(bar);\n        me.parent().append(rail);\n\n        // make it draggable\n        if (o.railDraggable)\n        {\n          bar.draggable({\n            axis: 'y',\n            containment: 'parent',\n            start: function() { isDragg = true; },\n            stop: function() { isDragg = false; hideBar(); },\n            drag: function(e)\n            {\n              // scroll content\n              scrollContent(0, $(this).position().top, false);\n            }\n          });\n        }\n\n        // on rail over\n        rail.hover(function(){\n          showBar();\n        }, function(){\n          hideBar();\n        });\n\n        // on bar over\n        bar.hover(function(){\n          isOverBar = true;\n        }, function(){\n          isOverBar = false;\n        });\n\n        // show on parent mouseover\n        me.hover(function(){\n          isOverPanel = true;\n          showBar();\n          hideBar();\n        }, function(){\n          isOverPanel = false;\n          hideBar();\n        });\n\n        // support for mobile\n        me.bind('touchstart', function(e,b){\n          if (e.originalEvent.touches.length)\n          {\n            // record where touch started\n            touchDif = e.originalEvent.touches[0].pageY;\n          }\n        });\n\n        me.bind('touchmove', function(e){\n          // prevent scrolling the page\n          e.originalEvent.preventDefault();\n          if (e.originalEvent.touches.length)\n          {\n            // see how far user swiped\n            var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;\n            // scroll content\n            scrollContent(diff, true);\n          }\n        });\n\n        // check start position\n        if (o.start === 'bottom')\n        {\n          // scroll content to bottom\n          bar.css({ top: me.outerHeight() - bar.outerHeight() });\n          scrollContent(0, true);\n        }\n        else if (o.start !== 'top')\n        {\n          // assume jQuery selector\n          scrollContent($(o.start).position().top, null, true);\n\n          // make sure bar stays hidden\n          if (!o.alwaysVisible) { bar.hide(); }\n        }\n\n        // attach scroll events\n        attachWheel();\n\n        // set up initial height\n        getBarHeight();\n\n        function _onWheel(e)\n        {\n          // use mouse wheel only when mouse is over\n          if (!isOverPanel) { return; }\n\n          var e = e || window.event;\n\n          var delta = 0;\n          if (e.wheelDelta) { delta = -e.wheelDelta/120; }\n          if (e.detail) { delta = e.detail / 3; }\n\n          var target = e.target || e.srcTarget;\n          if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {\n            // scroll content\n            scrollContent(delta, true);\n          }\n\n          // stop window scroll\n          if (e.preventDefault && !releaseScroll) { e.preventDefault(); }\n          if (!releaseScroll) { e.returnValue = false; }\n        }\n\n        function scrollContent(y, isWheel, isJump)\n        {\n          var delta = y;\n          var maxTop = me.outerHeight() - bar.outerHeight();\n\n          if (isWheel)\n          {\n            // move bar with mouse wheel\n            delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();\n\n            // move bar, make sure it doesn't go out\n            delta = Math.min(Math.max(delta, 0), maxTop);\n\n            // if scrolling down, make sure a fractional change to the\n            // scroll position isn't rounded away when the scrollbar's CSS is set\n            // this flooring of delta would happened automatically when\n            // bar.css is set below, but we floor here for clarity\n            delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);\n\n            // scroll the scrollbar\n            bar.css({ top: delta + 'px' });\n          }\n\n          // calculate actual scroll amount\n          percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\n          delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\n\n          if (isJump)\n          {\n            delta = y;\n            var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\n            offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);\n            bar.css({ top: offsetTop + 'px' });\n          }\n\n          // scroll content\n          me.scrollTop(delta);\n\n          // fire scrolling event\n          me.trigger('slimscrolling', ~~delta);\n\n          // ensure bar is visible\n          showBar();\n\n          // trigger hide when scroll is stopped\n          hideBar();\n        }\n\n        function attachWheel()\n        {\n          if (window.addEventListener)\n          {\n            this.addEventListener('DOMMouseScroll', _onWheel, false );\n            this.addEventListener('mousewheel', _onWheel, false );\n          }\n          else\n          {\n            document.attachEvent(\"onmousewheel\", _onWheel)\n          }\n        }\n\n        function getBarHeight()\n        {\n          // calculate scrollbar height and make sure it is not too small\n          barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\n          bar.css({ height: barHeight + 'px' });\n\n          // hide scrollbar if content is not long enough\n          var display = barHeight == me.outerHeight() ? 'none' : 'block';\n          bar.css({ display: display });\n        }\n\n        function showBar()\n        {\n          // recalculate bar height\n          getBarHeight();\n          clearTimeout(queueHide);\n\n          // when bar reached top or bottom\n          if (percentScroll == ~~percentScroll)\n          {\n            //release wheel\n            releaseScroll = o.allowPageScroll;\n\n            // publish approporiate event\n            if (lastScroll != percentScroll)\n            {\n                var msg = (~~percentScroll == 0) ? 'top' : 'bottom';\n                me.trigger('slimscroll', msg);\n            }\n          }\n          lastScroll = percentScroll;\n\n          // show only when required\n          if(barHeight >= me.outerHeight()) {\n            //allow window scroll\n            releaseScroll = true;\n            return;\n          }\n          bar.stop(true,true).fadeIn('fast');\n          if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\n        }\n\n        function hideBar()\n        {\n          // only hide when options allow it\n          if (!o.alwaysVisible)\n          {\n            queueHide = setTimeout(function(){\n              if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\n              {\n                bar.fadeOut('slow');\n                rail.fadeOut('slow');\n              }\n            }, 1000);\n          }\n        }\n\n      });\n\n      // maintain chainability\n      return this;\n    }\n  });\n\n  jQuery.fn.extend({\n    slimscroll: jQuery.fn.slimScroll\n  });\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery-slimScroll/slimScroll.jquery.json",
    "content": "{\n  \"name\"        : \"slimScroll\",\n  \"version\"     : \"1.1.1\",\n  \"title\"       : \"jQuery slimScroll scrollbar\",\n  \"description\" : \"slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.\",\n  \"keywords\"    : [\"scrollbar\", \"scroll\", \"slimscroll\", \"scrollable\", \"scrolling\", \"scroller\", \"ui\"],\n  \"demo\"        : \"http://rocha.la/jQuery-slimScroll/\",\n  \"homepage\"    : \"http://rocha.la/jQuery-slimScroll/\",\n  \"download\"    : \"http://rocha.la/jQuery-slimScroll/\",\n\n  \"author\" : {\n    \"name\"  : \"Piotr Rochala\",\n    \"url\"   : \"http://rocha.la/\"\n  },\n\n  \"dependencies\" : {\n    \"jquery\" : \">= 1.7\"\n  },\n\n  \"licenses\" : [\n    {\n      \"type\": \"MIT\",\n      \"url\": \"http://www.opensource.org/licenses/mit-license.php\"\n    },\n    {\n      \"type\": \"GPL\",\n      \"url\": \"http://www.opensource.org/licenses/gpl-license.php\"\n    }\n  ]\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/jquery.ba-resize.js",
    "content": "/*!\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery resize event\n//\n// *Version: 1.1, Last updated: 3/14/2010*\n// \n// Project Home - http://benalman.com/projects/jquery-resize-plugin/\n// GitHub       - http://github.com/cowboy/jquery-resize/\n// Source       - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js\n// (Minified)   - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb)\n// \n// About: License\n// \n// Copyright (c) 2010 \"Cowboy\" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n// \n// About: Examples\n// \n// This working example, complete with fully commented code, illustrates a few\n// ways in which this plugin can be used.\n// \n// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/\n// \n// About: Support and Testing\n// \n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n// \n// jQuery Versions - 1.3.2, 1.4.1, 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1.\n// Unit Tests      - http://benalman.com/code/projects/jquery-resize/unit/\n// \n// About: Release History\n// \n// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger\n//       immediately after bind in some circumstances. Also changed $.fn.data\n//       to $.data to improve performance.\n// 1.0 - (2/10/2010) Initial release\n\n(function($,window,undefined){\n  '$:nomunge'; // Used by YUI compressor.\n  \n  // A jQuery object containing all non-window elements to which the resize\n  // event is bound.\n  var elems = $([]),\n    \n    // Extend $.resize if it already exists, otherwise create it.\n    jq_resize = $.resize = $.extend( $.resize, {} ),\n    \n    timeout_id,\n    \n    // Reused strings.\n    str_setTimeout = 'setTimeout',\n    str_resize = 'resize',\n    str_data = str_resize + '-special-event',\n    str_delay = 'delay',\n    str_throttle = 'throttleWindow';\n  \n  // Property: jQuery.resize.delay\n  // \n  // The numeric interval (in milliseconds) at which the resize event polling\n  // loop executes. Defaults to 250.\n  \n  jq_resize[ str_delay ] = 250;\n  \n  // Property: jQuery.resize.throttleWindow\n  // \n  // Throttle the native window object resize event to fire no more than once\n  // every <jQuery.resize.delay> milliseconds. Defaults to true.\n  // \n  // Because the window object has its own resize event, it doesn't need to be\n  // provided by this plugin, and its execution can be left entirely up to the\n  // browser. However, since certain browsers fire the resize event continuously\n  // while others do not, enabling this will throttle the window resize event,\n  // making event behavior consistent across all elements in all browsers.\n  // \n  // While setting this property to false will disable window object resize\n  // event throttling, please note that this property must be changed before any\n  // window object resize event callbacks are bound.\n  \n  jq_resize[ str_throttle ] = true;\n  \n  // Event: resize event\n  // \n  // Fired when an element's width or height changes. Because browsers only\n  // provide this event for the window element, for other elements a polling\n  // loop is initialized, running every <jQuery.resize.delay> milliseconds\n  // to see if elements' dimensions have changed. You may bind with either\n  // .resize( fn ) or .bind( \"resize\", fn ), and unbind with .unbind( \"resize\" ).\n  // \n  // Usage:\n  // \n  // > jQuery('selector').bind( 'resize', function(e) {\n  // >   // element's width or height has changed!\n  // >   ...\n  // > });\n  // \n  // Additional Notes:\n  // \n  // * The polling loop is not created until at least one callback is actually\n  //   bound to the 'resize' event, and this single polling loop is shared\n  //   across all elements.\n  // \n  // Double firing issue in jQuery 1.3.2:\n  // \n  // While this plugin works in jQuery 1.3.2, if an element's event callbacks\n  // are manually triggered via .trigger( 'resize' ) or .resize() those\n  // callbacks may double-fire, due to limitations in the jQuery 1.3.2 special\n  // events system. This is not an issue when using jQuery 1.4+.\n  // \n  // > // While this works in jQuery 1.4+\n  // > $(elem).css({ width: new_w, height: new_h }).resize();\n  // > \n  // > // In jQuery 1.3.2, you need to do this:\n  // > var elem = $(elem);\n  // > elem.css({ width: new_w, height: new_h });\n  // > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } );\n  // > elem.resize();\n      \n  $.event.special[ str_resize ] = {\n    \n    // Called only when the first 'resize' event callback is bound per element.\n    setup: function() {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery will bind the event using DOM methods. Since only 'window'\n      // objects have a .setTimeout method, this should be a sufficient test.\n      // Unless, of course, we're throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var elem = $(this);\n      \n      // Add this element to the list of internal elements to monitor.\n      elems = elems.add( elem );\n      \n      // Initialize data store on the element.\n      $.data( this, str_data, { w: elem.width(), h: elem.height() } );\n      \n      // If this is the first element added, start the polling loop.\n      if ( elems.length === 1 ) {\n        loopy();\n      }\n    },\n    \n    // Called only when the last 'resize' event callback is unbound per element.\n    teardown: function() {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery will unbind the event using DOM methods. Since only 'window'\n      // objects have a .setTimeout method, this should be a sufficient test.\n      // Unless, of course, we're throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var elem = $(this);\n      \n      // Remove this element from the list of internal elements to monitor.\n      elems = elems.not( elem );\n      \n      // Remove any data stored on the element.\n      elem.removeData( str_data );\n      \n      // If this is the last element removed, stop the polling loop.\n      if ( !elems.length ) {\n        clearTimeout( timeout_id );\n      }\n    },\n    \n    // Called every time a 'resize' event callback is bound per element (new in\n    // jQuery 1.4).\n    add: function( handleObj ) {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery doesn't modify the event object. Unless, of course, we're\n      // throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var old_handler;\n      \n      // The new_handler function is executed every time the event is triggered.\n      // This is used to update the internal element data store with the width\n      // and height when the event is triggered manually, to avoid double-firing\n      // of the event callback. See the \"Double firing issue in jQuery 1.3.2\"\n      // comments above for more information.\n      \n      function new_handler( e, w, h ) {\n        var elem = $(this),\n          data = $.data( this, str_data );\n        \n        // If called from the polling loop, w and h will be passed in as\n        // arguments. If called manually, via .trigger( 'resize' ) or .resize(),\n        // those values will need to be computed.\n        data.w = w !== undefined ? w : elem.width();\n        data.h = h !== undefined ? h : elem.height();\n        \n        old_handler.apply( this, arguments );\n      };\n      \n      // This may seem a little complicated, but it normalizes the special event\n      // .add method between jQuery 1.4/1.4.1 and 1.4.2+\n      if ( $.isFunction( handleObj ) ) {\n        // 1.4, 1.4.1\n        old_handler = handleObj;\n        return new_handler;\n      } else {\n        // 1.4.2+\n        old_handler = handleObj.handler;\n        handleObj.handler = new_handler;\n      }\n    }\n    \n  };\n  \n  function loopy() {\n    \n    // Start the polling loop, asynchronously.\n    timeout_id = window[ str_setTimeout ](function(){\n      \n      // Iterate over all elements to which the 'resize' event is bound.\n      elems.each(function(){\n        var elem = $(this),\n          width = elem.width(),\n          height = elem.height(),\n          data = $.data( this, str_data );\n        \n        // If element size has changed since the last time, update the element\n        // data store and trigger the 'resize' event.\n        if ( width !== data.w || height !== data.h ) {\n          elem.trigger( str_resize, [ data.w = width, data.h = height ] );\n        }\n        \n      });\n      \n      // Loop.\n      loopy();\n      \n    }, jq_resize[ str_delay ] );\n    \n  };\n  \n})(jQuery,this);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/js-beautify/beautify-html.js",
    "content": "/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n  The MIT License (MIT)\n\n  Copyright (c) 2007-2013 Einar Lielmanis and contributors.\n\n  Permission is hereby granted, free of charge, to any person\n  obtaining a copy of this software and associated documentation files\n  (the \"Software\"), to deal in the Software without restriction,\n  including without limitation the rights to use, copy, modify, merge,\n  publish, distribute, sublicense, and/or sell copies of the Software,\n  and to permit persons to whom the Software is furnished to do so,\n  subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be\n  included in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n  SOFTWARE.\n\n\n Style HTML\n---------------\n\n  Written by Nochum Sossonko, (nsossonko@hotmail.com)\n\n  Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>\n    http://jsbeautifier.org/\n\n  Usage:\n    style_html(html_source);\n\n    style_html(html_source, options);\n\n  The options are:\n    indent_size (default 4)          — indentation size,\n    indent_char (default space)      — character to indent with,\n    wrap_line_length (default 250)            -  maximum amount of characters per line (0 = disable)\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\n            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.\n    unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n    indent_scripts (default normal)  - \"keep\"|\"separate\"|\"normal\"\n    preserve_newlines (default true) - whether existing line breaks before elements should be preserved\n                                        Only works before elements, not inside tags or for text.\n    max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk\n\n    e.g.\n\n    style_html(html_source, {\n      'indent_size': 2,\n      'indent_char': ' ',\n      'wrap_line_length': 78,\n      'brace_style': 'expand',\n      'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u'],\n      'preserve_newlines': true,\n      'max_preserve_newlines': 5\n    });\n*/\n\n(function() {\n\n    function trim(s) {\n        return s.replace(/^\\s+|\\s+$/g, '');\n    }\n\n    function style_html(html_source, options, js_beautify, css_beautify) {\n    //Wrapper function to invoke all the necessary constructors and deal with the output.\n\n      var multi_parser,\n          indent_size,\n          indent_character,\n          wrap_line_length,\n          brace_style,\n          unformatted,\n          preserve_newlines,\n          max_preserve_newlines;\n\n      options = options || {};\n\n      // backwards compatibility to 1.3.4\n      if(options.wrap_line_length == undefined && options.max_char != undefined) {\n        options.wrap_line_length = options.max_char;\n      }\n\n      indent_size = parseInt(options.indent_size || 4);\n      indent_character = options.indent_char || ' ';\n      brace_style = options.brace_style || 'collapse';\n      wrap_line_length = options.wrap_line_length === 0 ? 32786 : parseInt(options.wrap_line_length || 250);\n      unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n      preserve_newlines = options.preserve_newlines || true;\n      max_preserve_newlines = preserve_newlines ? parseInt(options.max_preserve_newlines || 32786) : 0;\n\n      function Parser() {\n\n        this.pos = 0; //Parser position\n        this.token = '';\n        this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT\n        this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values\n          parent: 'parent1',\n          parentcount: 1,\n          parent1: ''\n        };\n        this.tag_type = '';\n        this.token_text = this.last_token = this.last_text = this.token_type = '';\n        this.newlines = 0;\n\n        this.Utils = { //Uilities made available to the various functions\n          whitespace: \"\\n\\r\\t \".split(''),\n          single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML\n          extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them\n          in_array: function (what, arr) {\n            for (var i=0; i<arr.length; i++) {\n              if (what === arr[i]) {\n                return true;\n              }\n            }\n            return false;\n          }\n        };\n\n        this.traverse_whitespace = function() {\n          var input_char = '';\n\n          input_char = this.input.charAt(this.pos);\n          if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n            this.newlines = 0;\n            while (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n              if(preserve_newlines && input_char === '\\n' && this.newlines <= max_preserve_newlines) {\n                this.newlines += 1;\n              }\n\n              this.pos++;\n              input_char = this.input.charAt(this.pos);\n            }\n            return true;\n          }\n          return false;\n        }\n\n        this.get_content = function () { //function to capture regular content between tags\n\n          var input_char = '',\n              content = [],\n              space = false; //if a space is needed\n\n          while (this.input.charAt(this.pos) !== '<') {\n            if (this.pos >= this.input.length) {\n              return content.length?content.join(''):['', 'TK_EOF'];\n            }\n\n            if (this.traverse_whitespace()) {\n              if (content.length) {\n                space = true;\n              }\n              continue; //don't want to insert unnecessary space\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (space) {\n              if (this.line_char_count >= this.wrap_line_length) { //insert a line when the wrap_line_length is reached\n                this.print_newline(false, content);\n                this.print_indentation(content);\n              }\n              else {\n                this.line_char_count++;\n                content.push(' ');\n              }\n              space = false;\n            }\n            this.line_char_count++;\n            content.push(input_char); //letter at-a-time (or string) inserted to an array\n          }\n          return content.length?content.join(''):'';\n        };\n\n        this.get_contents_to = function (name) { //get the full content of a script or style to pass to js_beautify\n          if (this.pos === this.input.length) {\n            return ['', 'TK_EOF'];\n          }\n          var input_char = '';\n          var content = '';\n          var reg_match = new RegExp('</' + name + '\\\\s*>', 'igm');\n          reg_match.lastIndex = this.pos;\n          var reg_array = reg_match.exec(this.input);\n          var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script\n          if(this.pos < end_script) { //get everything in between the script tags\n            content = this.input.substring(this.pos, end_script);\n            this.pos = end_script;\n          }\n          return content;\n        };\n\n        this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object\n          if (this.tags[tag + 'count']) { //check for the existence of this tag type\n            this.tags[tag + 'count']++;\n            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n          }\n          else { //otherwise initialize this tag type\n            this.tags[tag + 'count'] = 1;\n            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n          }\n          this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)\n          this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')\n        };\n\n        this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer\n          if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it\n            var temp_parent = this.tags.parent; //check to see if it's a closable tag.\n            while (temp_parent) { //till we reach '' (the initial value);\n              if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it\n                break;\n              }\n              temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree\n            }\n            if (temp_parent) { //if we caught something\n              this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly\n              this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent\n            }\n            delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...\n            delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself\n            if (this.tags[tag + 'count'] === 1) {\n              delete this.tags[tag + 'count'];\n            }\n            else {\n              this.tags[tag + 'count']--;\n            }\n          }\n        };\n\n        this.get_tag = function (peek) { //function to get a full tag and parse its type\n          var input_char = '',\n              content = [],\n              comment = '',\n              space = false,\n              tag_start, tag_end,\n              orig_pos = this.pos,\n              orig_line_char_count = this.line_char_count;\n\n          peek = peek !== undefined ? peek : false;\n\n          do {\n            if (this.pos >= this.input.length) {\n              if (peek) {\n                this.pos = orig_pos;\n                this.line_char_count = orig_line_char_count;\n              }\n              return content.length?content.join(''):['', 'TK_EOF'];\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space\n              space = true;\n              continue;\n            }\n\n            if (input_char === \"'\" || input_char === '\"') {\n              input_char += this.get_unformatted(input_char);\n              space = true;\n\n            }\n\n            if (input_char === '=') { //no space before =\n              space = false;\n            }\n\n            if (content.length && content[content.length-1] !== '=' && input_char !== '>' && space) {\n                //no space after = or before >\n              if (this.line_char_count >= this.wrap_line_length) {\n                this.print_newline(false, content);\n                this.print_indentation(content);\n              }\n              else {\n                content.push(' ');\n                this.line_char_count++;\n              }\n              space = false;\n            }\n\n            if (input_char === '<' && !tag_start) {\n              tag_start = this.pos - 1;\n            }\n\n            this.line_char_count++;\n            content.push(input_char); //inserts character at-a-time (or string)\n\n            if (content[1] && content[1] === '!') { //if we're in a comment, do something special\n              // We treat all comments as literals, even more than preformatted tags\n              // we just look for the appropriate close tag\n              content = [this.get_comment(tag_start)];\n              break;\n            }\n\n          } while (input_char !== '>');\n\n          var tag_complete = content.join('');\n          var tag_index;\n          if (tag_complete.indexOf(' ') !== -1) { //if there's whitespace, thats where the tag name ends\n            tag_index = tag_complete.indexOf(' ');\n          }\n          else { //otherwise go with the tag ending\n            tag_index = tag_complete.indexOf('>');\n          }\n          var tag_check = tag_complete.substring(1, tag_index).toLowerCase();\n          if (tag_complete.charAt(tag_complete.length-2) === '/' ||\n            this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)\n            if ( ! peek) {\n              this.tag_type = 'SINGLE';\n            }\n          }\n          else if (tag_check === 'script') { //for later script handling\n            if ( ! peek) {\n              this.record_tag(tag_check);\n              this.tag_type = 'SCRIPT';\n            }\n          }\n          else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)\n            if ( ! peek) {\n              this.record_tag(tag_check);\n              this.tag_type = 'STYLE';\n            }\n          }\n          else if (this.is_unformatted(tag_check, unformatted)) { // do not reformat the \"unformatted\" tags\n            comment = this.get_unformatted('</'+tag_check+'>', tag_complete); //...delegate to get_unformatted function\n            content.push(comment);\n            // Preserve collapsed whitespace either before or after this tag.\n            if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){\n                content.splice(0, 0, this.input.charAt(tag_start - 1));\n            }\n            tag_end = this.pos - 1;\n            if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){\n                content.push(this.input.charAt(tag_end + 1));\n            }\n            this.tag_type = 'SINGLE';\n          }\n          else if (tag_check.charAt(0) === '!' ) { //peek for <! comment\n            // for comments content is already correct.\n            if (! peek) {\n              this.tag_type = 'SINGLE';\n            }\n          }\n          else if ( ! peek) {\n            if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending\n              this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors\n              this.tag_type = 'END';\n            }\n            else { //otherwise it's a start-tag\n              this.record_tag(tag_check); //push it on the tag stack\n              this.tag_type = 'START';\n            }\n            if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line\n              this.print_newline(false, this.output);\n              if(this.output.length && this.output[this.output.length - 2] !== '\\n') {\n                this.print_newline(true, this.output);\n              }\n            }\n          }\n\n          if (peek) {\n            this.pos = orig_pos;\n            this.line_char_count = orig_line_char_count;\n          }\n\n          return content.join(''); //returns fully formatted tag\n        };\n\n        this.get_comment = function (start_pos) { //function to return comment content in its entirety\n            // this is will have very poor perf, but will work for now.\n            var comment = '',\n                delimiter = '>',\n                matched = false;\n\n            this.pos = start_pos;\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            while(this.pos <= this.input.length) {\n              comment += input_char;\n\n              // only need to check for the delimiter if the last chars match\n              if(comment[comment.length - 1] === delimiter[delimiter.length - 1] &&\n                  comment.indexOf(delimiter) !== -1) {\n                break;\n              }\n\n              // only need to search for custom delimiter for the first few characters\n              if (!matched && comment.length < 10) {\n                if (comment.indexOf('<![if') === 0) { //peek for <![if conditional comment\n                  delimiter = '<![endif]>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<![cdata[') === 0) { //if it's a <[cdata[ comment...\n                  delimiter = ']]>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<![') === 0) { // some other ![ comment? ...\n                  delimiter = ']>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<!--') === 0) { // <!-- comment ...\n                  delimiter = '-->';\n                  matched = true;\n                }\n              }\n\n              input_char = this.input.charAt(this.pos);\n              this.pos++;\n            }\n\n            this.traverse_whitespace();\n            return comment;\n        };\n\n        this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety\n\n          if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) !== -1) {\n            return '';\n          }\n          var input_char = '';\n          var content = '';\n          var space = true;\n          do {\n\n            if (this.pos >= this.input.length) {\n              return content;\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n              if (!space) {\n                this.line_char_count--;\n                continue;\n              }\n              if (input_char === '\\n' || input_char === '\\r') {\n                content += '\\n';\n                /*  Don't change tab indention for unformatted blocks.  If using code for html editing, this will greatly affect <pre> tags if they are specified in the 'unformatted array'\n                for (var i=0; i<this.indent_level; i++) {\n                  content += this.indent_string;\n                }\n                space = false; //...and make sure other indentation is erased\n                */\n                this.line_char_count = 0;\n                continue;\n              }\n            }\n            content += input_char;\n            this.line_char_count++;\n            space = true;\n\n\n          } while (content.toLowerCase().indexOf(delimiter) === -1);\n          return content;\n        };\n\n        this.get_token = function () { //initial handler for token-retrieval\n          var token;\n\n          if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript\n           var type = this.last_token.substr(7);\n           token = this.get_contents_to(type);\n            if (typeof token !== 'string') {\n              return token;\n            }\n            return [token, 'TK_' + type];\n          }\n          if (this.current_mode === 'CONTENT') {\n            token = this.get_content();\n            if (typeof token !== 'string') {\n              return token;\n            }\n            else {\n              return [token, 'TK_CONTENT'];\n            }\n          }\n\n          if (this.current_mode === 'TAG') {\n            token = this.get_tag();\n            if (typeof token !== 'string') {\n              return token;\n            }\n            else {\n              var tag_name_type = 'TK_TAG_' + this.tag_type;\n              return [token, tag_name_type];\n            }\n          }\n        };\n\n        this.get_full_indent = function (level) {\n          level = this.indent_level + level || 0;\n          if (level < 1) {\n            return '';\n          }\n\n          return Array(level + 1).join(this.indent_string);\n        };\n\n        this.is_unformatted = function(tag_check, unformatted) {\n            //is this an HTML5 block-level link?\n            if (!this.Utils.in_array(tag_check, unformatted)){\n                return false;\n            }\n\n            if (tag_check.toLowerCase() !== 'a' || !this.Utils.in_array('a', unformatted)){\n                return true;\n            }\n\n            //at this point we have an  tag; is its first child something we want to remain\n            //unformatted?\n            var next_tag = this.get_tag(true /* peek. */);\n\n            // tets next_tag to see if it is just html tag (no external content)\n            var tag = (next_tag || \"\").match(/^\\s*<\\s*\\/?([a-z]*)\\s*[^>]*>\\s*$/);\n\n            // if next_tag comes back but is not an isolated tag, then\n            // let's treat the 'a' tag as having content\n            // and respect the unformatted option\n            if (!tag || this.Utils.in_array(tag, unformatted)){\n                return true;\n            } else {\n                return false;\n            }\n        };\n\n        this.printer = function (js_source, indent_character, indent_size, wrap_line_length, brace_style) { //handles input/output and some other printing functions\n\n          this.input = js_source || ''; //gets the input for the Parser\n          this.output = [];\n          this.indent_character = indent_character;\n          this.indent_string = '';\n          this.indent_size = indent_size;\n          this.brace_style = brace_style;\n          this.indent_level = 0;\n          this.wrap_line_length = wrap_line_length;\n          this.line_char_count = 0; //count to see if wrap_line_length was exceeded\n\n          for (var i=0; i<this.indent_size; i++) {\n            this.indent_string += this.indent_character;\n          }\n\n          this.print_newline = function (force, arr) {\n            this.line_char_count = 0;\n            if (!arr || !arr.length) {\n              return;\n            }\n            if (force || (arr[arr.length-1] !== '\\n')) { //we might want the extra line\n              arr.push('\\n');\n            }\n          };\n\n          this.print_indentation = function (arr) {\n            for (var i=0; i<this.indent_level; i++) {\n              arr.push(this.indent_string);\n              this.line_char_count += this.indent_string.length;\n            }\n          };\n\n          this.print_token = function (text) {\n            if (text || text !== '') {\n              if (this.output.length && this.output[this.output.length-1] === '\\n') {\n                this.print_indentation(this.output);\n              }\n            }\n            this.print_token_raw(text);\n          };\n\n          this.print_token_raw = function (text) {\n            if (text && text !== '') {\n              if(text.length > 1 && text[text.length - 1] === '\\n') {\n                // unformatted tags can grab newlines as their last character\n                this.output.push(text.slice(0, -1));\n                this.print_newline(false, this.output);\n              } else {\n                this.output.push(text);\n              }\n            }\n\n            for(var n=0; n < this.newlines; n++) {\n              this.print_newline(n > 0, this.output);\n            }\n            this.newlines = 0;\n          };\n\n          this.indent = function () {\n            this.indent_level++;\n          };\n\n          this.unindent = function () {\n            if (this.indent_level > 0) {\n              this.indent_level--;\n            }\n          };\n        };\n        return this;\n      }\n\n      /*_____________________--------------------_____________________*/\n\n      multi_parser = new Parser(); //wrapping functions Parser\n      multi_parser.printer(html_source, indent_character, indent_size, wrap_line_length, brace_style); //initialize starting values\n\n      while (true) {\n          var t = multi_parser.get_token();\n          multi_parser.token_text = t[0];\n          multi_parser.token_type = t[1];\n\n        if (multi_parser.token_type === 'TK_EOF') {\n          break;\n        }\n\n        switch (multi_parser.token_type) {\n          case 'TK_TAG_START':\n            multi_parser.print_newline(false, multi_parser.output);\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.indent();\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_STYLE':\n          case 'TK_TAG_SCRIPT':\n            multi_parser.print_newline(false, multi_parser.output);\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_END':\n            //Print new line only if the tag has no content and has child\n            if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {\n                var tag_name = multi_parser.token_text.match(/\\w+/)[0];\n                var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\\s*(\\w+)/);\n                if (tag_extracted_from_last_output === null ||\n                    tag_extracted_from_last_output[1] !== tag_name) {\n                    multi_parser.print_newline(false, multi_parser.output);\n                }\n            }\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_SINGLE':\n            // Don't add a newline before elements that should remain unformatted.\n            var tag_check = multi_parser.token_text.match(/^\\s*<([a-z]+)/i);\n            if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){\n                multi_parser.print_newline(false, multi_parser.output);\n            }\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_CONTENT':\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'TAG';\n            break;\n          case 'TK_STYLE':\n          case 'TK_SCRIPT':\n            if (multi_parser.token_text !== '') {\n              multi_parser.print_newline(false, multi_parser.output);\n              var text = multi_parser.token_text,\n                  _beautifier,\n                  script_indent_level = 1;\n              if (multi_parser.token_type === 'TK_SCRIPT') {\n                _beautifier = typeof js_beautify === 'function' && js_beautify;\n              } else if (multi_parser.token_type === 'TK_STYLE') {\n                _beautifier = typeof css_beautify === 'function' && css_beautify;\n              }\n\n              if (options.indent_scripts === \"keep\") {\n                script_indent_level = 0;\n              } else if (options.indent_scripts === \"separate\") {\n                script_indent_level = -multi_parser.indent_level;\n              }\n\n              var indentation = multi_parser.get_full_indent(script_indent_level);\n              if (_beautifier) {\n                // call the Beautifier if avaliable\n                text = _beautifier(text.replace(/^\\s*/, indentation), options);\n              } else {\n                // simply indent the string otherwise\n                var white = text.match(/^\\s*/)[0];\n                var _level = white.match(/[^\\n\\r]*$/)[0].split(multi_parser.indent_string).length - 1;\n                var reindent = multi_parser.get_full_indent(script_indent_level -_level);\n                text = text.replace(/^\\s*/, indentation)\n                       .replace(/\\r\\n|\\r|\\n/g, '\\n' + reindent)\n                       .replace(/\\s+$/, '');\n              }\n              if (text) {\n                multi_parser.print_token_raw(indentation + trim(text));\n                multi_parser.print_newline(false, multi_parser.output);\n              }\n            }\n            multi_parser.current_mode = 'TAG';\n            break;\n        }\n        multi_parser.last_token = multi_parser.token_type;\n        multi_parser.last_text = multi_parser.token_text;\n      }\n      return multi_parser.output.join('');\n    }\n\n    if (typeof define === \"function\") {\n        // Add support for require.js\n        define(function(require, exports, module) {\n            var js_beautify  = require('./beautify.js').js_beautify;\n            var css_beautify = require('./beautify-css.js').css_beautify;\n\n            exports.html_beautify = function(html_source, options) {\n                return style_html(html_source, options, js_beautify, css_beautify);\n            };\n        });\n    } else if (typeof exports !== \"undefined\") {\n        // Add support for CommonJS. Just put this file somewhere on your require.paths\n        // and you will be able to `var html_beautify = require(\"beautify\").html_beautify`.\n        var js_beautify  = require('./beautify.js').js_beautify;\n        var css_beautify = require('./beautify-css.js').css_beautify;\n\n        exports.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, js_beautify, css_beautify);\n        };\n    } else if (typeof window !== \"undefined\") {\n        // If we're running a web page and don't have either of the above, add our one global\n        window.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, window.js_beautify, window.css_beautify);\n        };\n    } else if (typeof global !== \"undefined\") {\n        // If we don't even have window, try global.\n        global.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, global.js_beautify, global.css_beautify);\n        };\n    }\n\n}());\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/js-beautify/beautify.js",
    "content": "/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n  The MIT License (MIT)\n\n  Copyright (c) 2007-2013 Einar Lielmanis and contributors.\n\n  Permission is hereby granted, free of charge, to any person\n  obtaining a copy of this software and associated documentation files\n  (the \"Software\"), to deal in the Software without restriction,\n  including without limitation the rights to use, copy, modify, merge,\n  publish, distribute, sublicense, and/or sell copies of the Software,\n  and to permit persons to whom the Software is furnished to do so,\n  subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be\n  included in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n  SOFTWARE.\n\n JS Beautifier\n---------------\n\n\n  Written by Einar Lielmanis, <einar@jsbeautifier.org>\n      http://jsbeautifier.org/\n\n  Originally converted to javascript by Vital, <vital76@gmail.com>\n  \"End braces on own line\" added by Chris J. Shull, <chrisjshull@gmail.com>\n  Parsing improvements for brace-less statements by Liam Newman <bitwiseman@gmail.com>\n\n\n  Usage:\n    js_beautify(js_source_text);\n    js_beautify(js_source_text, options);\n\n  The options are:\n    indent_size (default 4)          - indentation size,\n    indent_char (default space)      - character to indent with,\n    preserve_newlines (default true) - whether existing line breaks should be preserved,\n    max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk,\n\n    jslint_happy (default false) - if true, then jslint-stricter mode is enforced.\n\n            jslint_happy   !jslint_happy\n            ---------------------------------\n             function ()      function()\n\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\n            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.\n\n    space_before_conditional (default true) - should the space before conditional statement be added, \"if(true)\" vs \"if (true)\",\n\n    unescape_strings (default false) - should printable characters in strings encoded in \\xNN notation be unescaped, \"example\" vs \"\\x65\\x78\\x61\\x6d\\x70\\x6c\\x65\"\n\n    wrap_line_length (default unlimited) - lines should wrap at next opportunity after this number of characters.\n          NOTE: This is not a hard limit. Lines will continue until a point where a newline would\n                be preserved if it were present.\n\n    e.g\n\n    js_beautify(js_source_text, {\n      'indent_size': 1,\n      'indent_char': '\\t'\n    });\n\n*/\n\n\n(function() {\n    function js_beautify(js_source_text, options) {\n        \"use strict\";\n        var beautifier = new Beautifier(js_source_text, options);\n        return beautifier.beautify();\n    }\n\n    function Beautifier(js_source_text, options) {\n        \"use strict\";\n        var input, output, token_text, token_type, last_type, last_last_text, indent_string;\n        var flags, previous_flags, flag_store;\n        var whitespace, wordchar, punct, parser_pos, line_starters, digits;\n        var prefix;\n        var input_wanted_newline;\n        var line_indent_level;\n        var output_wrapped, output_space_before_token;\n        var input_length, n_newlines, whitespace_before_token;\n        var handlers, MODE, opt;\n        var preindent_string = '';\n\n        whitespace = \"\\n\\r\\t \".split('');\n        wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split('');\n        digits = '0123456789'.split('');\n\n        punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |= ::';\n        punct += ' <%= <% %> <?= <? ?>'; // try to be a good boy and try not to break the markup language identifiers\n        punct = punct.split(' ');\n\n        // words which should always start on new line.\n        line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(',');\n\n        MODE = {\n            BlockStatement: 'BlockStatement', // 'BLOCK'\n            Statement: 'Statement', // 'STATEMENT'\n            ObjectLiteral: 'ObjectLiteral', // 'OBJECT',\n            ArrayLiteral: 'ArrayLiteral', //'[EXPRESSION]',\n            ForInitializer: 'ForInitializer', //'(FOR-EXPRESSION)',\n            Conditional: 'Conditional', //'(COND-EXPRESSION)',\n            Expression: 'Expression' //'(EXPRESSION)'\n        };\n\n        handlers = {\n            'TK_START_EXPR': handle_start_expr,\n            'TK_END_EXPR': handle_end_expr,\n            'TK_START_BLOCK': handle_start_block,\n            'TK_END_BLOCK': handle_end_block,\n            'TK_WORD': handle_word,\n            'TK_SEMICOLON': handle_semicolon,\n            'TK_STRING': handle_string,\n            'TK_EQUALS': handle_equals,\n            'TK_OPERATOR': handle_operator,\n            'TK_COMMA': handle_comma,\n            'TK_BLOCK_COMMENT': handle_block_comment,\n            'TK_INLINE_COMMENT': handle_inline_comment,\n            'TK_COMMENT': handle_comment,\n            'TK_DOT': handle_dot,\n            'TK_UNKNOWN': handle_unknown\n        };\n\n        function create_flags(flags_base, mode) {\n            var next_indent_level =  (flags_base ? flags_base.indentation_level + ((flags_base.var_line && flags_base.var_line_reindented) ? 1 : 0) : 0);\n            var next_flags = {\n                mode: mode,\n                parent: flags_base,\n                last_text: flags_base ? flags_base.last_text : '', // last token text\n                last_word: flags_base ? flags_base.last_word : '', // last 'TK_WORD' passed\n                var_line: false,\n                var_line_tainted: false,\n                var_line_reindented: false,\n                in_html_comment: false,\n                multiline_array: false,\n                if_block: false,\n                do_block: false,\n                do_while: false,\n                in_case_statement: false, // switch(..){ INSIDE HERE }\n                in_case: false, // we're on the exact line with \"case 0:\"\n                case_body: false, // the indented case-action block\n                indentation_level: next_indent_level,\n                ternary_depth: 0\n            }\n            return next_flags;\n        }\n\n        // Some interpreters have unexpected results with foo = baz || bar;\n        options = options ? options : {};\n        opt = {};\n\n        // compatibility\n        if (options.space_after_anon_function !== undefined && options.jslint_happy === undefined) {\n            options.jslint_happy = options.space_after_anon_function;\n        }\n        if (options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n            opt.brace_style = options.braces_on_own_line ? \"expand\" : \"collapse\";\n        }\n        opt.brace_style = options.brace_style ? options.brace_style : (opt.brace_style ? opt.brace_style : \"collapse\");\n\n        // graceful handling of deprecated option\n        if (opt.brace_style === \"expand-strict\") {\n            opt.brace_style = \"expand\";\n        }\n\n\n        opt.indent_size = options.indent_size ? parseInt(options.indent_size, 10) : 4;\n        opt.indent_char = options.indent_char ? options.indent_char : ' ';\n        opt.preserve_newlines = (options.preserve_newlines === undefined) ? true : options.preserve_newlines;\n        opt.break_chained_methods = (options.break_chained_methods === undefined) ? false : options.break_chained_methods;\n        opt.max_preserve_newlines = (options.max_preserve_newlines === undefined) ? 0 : parseInt(options.max_preserve_newlines, 10);\n        opt.space_in_paren = (options.space_in_paren === undefined) ? false : options.space_in_paren;\n        opt.jslint_happy = (options.jslint_happy === undefined) ? false : options.jslint_happy;\n        opt.keep_array_indentation = (options.keep_array_indentation === undefined) ? false : options.keep_array_indentation;\n        opt.space_before_conditional= (options.space_before_conditional === undefined) ? true : options.space_before_conditional;\n        opt.unescape_strings = (options.unescape_strings === undefined) ? false : options.unescape_strings;\n        opt.wrap_line_length = (options.wrap_line_length === undefined) ? 0 : parseInt(options.wrap_line_length, 10);\n        opt.e4x = (options.e4x === undefined) ? false : options.e4x;\n\n\n        //----------------------------------\n        indent_string = '';\n        while (opt.indent_size > 0) {\n            indent_string += opt.indent_char;\n            opt.indent_size -= 1;\n        }\n\n        while (js_source_text && (js_source_text.charAt(0) === ' ' || js_source_text.charAt(0) === '\\t')) {\n            preindent_string += js_source_text.charAt(0);\n            js_source_text = js_source_text.substring(1);\n        }\n        input = js_source_text;\n        // cache the source's length.\n        input_length = js_source_text.length;\n\n        last_type = 'TK_START_BLOCK'; // last token type\n        last_last_text = ''; // pre-last token text\n        line_indent_level = 0;\n        output = [];\n        output_wrapped = false;\n        output_space_before_token = false;\n        whitespace_before_token = [];\n\n        // Stack of parsing/formatting states, including MODE.\n        // We tokenize, parse, and output in an almost purely a forward-only stream of token input\n        // and formatted output.  This makes the beautifier less accurate than full parsers\n        // but also far more tolerant of syntax errors.\n        //\n        // For example, the default mode is MODE.BlockStatement. If we see a '{' we push a new frame of type\n        // MODE.BlockStatement on the the stack, even though it could be object literal.  If we later\n        // encounter a \":\", we'll switch to to MODE.ObjectLiteral.  If we then see a \";\",\n        // most full parsers would die, but the beautifier gracefully falls back to\n        // MODE.BlockStatement and continues on.\n        flag_store = [];\n        set_mode(MODE.BlockStatement);\n\n        parser_pos = 0;\n\n        this.beautify = function () {\n            /*jshint onevar:true */\n            var t, i, keep_whitespace, sweet_code;\n\n            while (true) {\n                t = get_next_token();\n                token_text = t[0];\n                token_type = t[1];\n\n                if (token_type === 'TK_EOF') {\n                    break;\n                }\n\n                keep_whitespace = opt.keep_array_indentation && is_array(flags.mode);\n                input_wanted_newline = n_newlines > 0;\n\n                if (keep_whitespace) {\n                    for (i = 0; i < n_newlines; i += 1) {\n                        print_newline(i > 0);\n                    }\n                } else {\n                    if (opt.max_preserve_newlines && n_newlines > opt.max_preserve_newlines) {\n                        n_newlines = opt.max_preserve_newlines;\n                    }\n\n                    if (opt.preserve_newlines) {\n                        if (n_newlines > 1) {\n                            print_newline();\n                            for (i = 1; i < n_newlines; i += 1) {\n                                print_newline(true);\n                            }\n                        }\n                    }\n                }\n\n                handlers[token_type]();\n\n                // The cleanest handling of inline comments is to treat them as though they aren't there.\n                // Just continue formatting and the behavior should be logical.\n                // Also ignore unknown tokens.  Again, this should result in better behavior.\n                if (token_type !== 'TK_INLINE_COMMENT' && token_type !== 'TK_COMMENT' &&\n                    token_type !== 'TK_UNKNOWN') {\n                    last_last_text = flags.last_text;\n                    last_type = token_type;\n                    flags.last_text = token_text;\n                }\n            }\n\n            sweet_code = preindent_string + output.join('').replace(/[\\r\\n ]+$/, '');\n            return sweet_code;\n        };\n\n        function trim_output(eat_newlines) {\n            eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n            while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string || output[output.length - 1] === preindent_string || (eat_newlines && (output[output.length - 1] === '\\n' || output[output.length - 1] === '\\r')))) {\n                output.pop();\n            }\n        }\n\n        function trim(s) {\n            return s.replace(/^\\s+|\\s+$/g, '');\n        }\n\n        // we could use just string.split, but\n        // IE doesn't like returning empty strings\n\n        function split_newlines(s) {\n            //return s.split(/\\x0d\\x0a|\\x0a/);\n\n            s = s.replace(/\\x0d/g, '');\n            var out = [],\n                idx = s.indexOf(\"\\n\");\n            while (idx !== -1) {\n                out.push(s.substring(0, idx));\n                s = s.substring(idx + 1);\n                idx = s.indexOf(\"\\n\");\n            }\n            if (s.length) {\n                out.push(s);\n            }\n            return out;\n        }\n\n        function just_added_newline() {\n            return output.length && output[output.length - 1] === \"\\n\";\n        }\n\n        function just_added_blankline() {\n            return just_added_newline() && output.length - 1 > 0 && output[output.length - 2] === \"\\n\";\n        }\n\n        function _last_index_of(arr, find) {\n            var i = arr.length - 1;\n            if (i < 0) {\n                i += arr.length;\n            }\n            if (i > arr.length - 1) {\n                i = arr.length - 1;\n            }\n            for (i++; i-- > 0;) {\n                if (i in arr && arr[i] === find) {\n                    return i;\n                }\n            }\n            return -1;\n        }\n\n        function allow_wrap_or_preserved_newline(force_linewrap) {\n            force_linewrap = (force_linewrap === undefined) ? false : force_linewrap;\n            if (opt.wrap_line_length && !force_linewrap) {\n                var current_line = '';\n                var proposed_line_length = 0;\n                var start_line = _last_index_of(output, '\\n') + 1;\n                // never wrap the first token of a line.\n                if (start_line < output.length) {\n                    current_line = output.slice(start_line).join('');\n                    proposed_line_length = current_line.length + token_text.length +\n                        (output_space_before_token ? 1 : 0);\n                    if (proposed_line_length >= opt.wrap_line_length) {\n                        force_linewrap = true;\n                    }\n                }\n            }\n            if (((opt.preserve_newlines && input_wanted_newline) || force_linewrap) && !just_added_newline()) {\n                print_newline(false, true);\n\n                // Expressions and array literals already indent their contents.\n                if(! (is_array(flags.mode) || is_expression(flags.mode))) {\n                    output_wrapped = true;\n                }\n            }\n        }\n\n        function print_newline(force_newline, preserve_statement_flags) {\n            output_wrapped = false;\n            output_space_before_token = false;\n\n            if (!preserve_statement_flags) {\n                if  (flags.last_text !== ';') {\n                    while (flags.mode === MODE.Statement && !flags.if_block && !flags.do_block) {\n                        restore_mode();\n                    }\n                }\n            }\n\n            if (flags.mode === MODE.ArrayLiteral) {\n                flags.multiline_array = true;\n            }\n\n\n            if (!output.length) {\n                return; // no newline on start of file\n            }\n\n            if (force_newline || !just_added_newline()) {\n                output.push(\"\\n\");\n            }\n        }\n\n        function print_token_line_indentation() {\n            if (just_added_newline()) {\n                if (opt.keep_array_indentation && is_array(flags.mode) && input_wanted_newline) {\n                    for (var i = 0; i < whitespace_before_token.length; i += 1) {\n                        output.push(whitespace_before_token[i]);\n                    }\n                } else {\n                    if (preindent_string) {\n                        output.push(preindent_string);\n                    }\n\n                    print_indent_string(flags.indentation_level +\n                        (flags.var_line && flags.var_line_reindented ? 1 : 0) +\n                        (output_wrapped ? 1 : 0));\n                }\n            }\n        }\n\n        function print_indent_string(level) {\n            // Never indent your first output indent at the start of the file\n            if (flags.last_text !== '') {\n                line_indent_level = level;\n                for (var i = 0; i < level; i += 1) {\n                    output.push(indent_string);\n                }\n            }\n        }\n\n        function print_token_space_before() {\n            if (output_space_before_token && output.length) {\n                var last_output = output[output.length - 1];\n                if (!just_added_newline() && last_output !== ' ' && last_output !== indent_string) { // prevent occassional duplicate space\n                    output.push(' ');\n                }\n            }\n        }\n\n        function print_token(printable_token) {\n            printable_token = printable_token || token_text;\n            print_token_line_indentation();\n            output_wrapped = false;\n            print_token_space_before();\n            output_space_before_token = false;\n            output.push(printable_token);\n        }\n\n        function indent() {\n            flags.indentation_level += 1;\n        }\n\n        function deindent() {\n            if (flags.indentation_level > 0 &&\n                ((!flags.parent) || flags.indentation_level > flags.parent.indentation_level))\n                flags.indentation_level -= 1;\n        }\n\n        function set_mode(mode) {\n            if (flags) {\n                flag_store.push(flags);\n                previous_flags = flags;\n            } else {\n                previous_flags = create_flags(null, mode);\n            }\n\n            flags = create_flags(previous_flags, mode);\n        }\n\n        function is_array(mode) {\n            return mode === MODE.ArrayLiteral;\n        }\n\n        function is_expression(mode) {\n            return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]);\n        }\n\n        function restore_mode() {\n            if (flag_store.length > 0) {\n                previous_flags = flags;\n                flags = flag_store.pop();\n            }\n        }\n\n        function start_of_statement() {\n            if (\n             (flags.last_text === 'do' ||\n                 (flags.last_text === 'else' && token_text !== 'if') ||\n                (last_type === 'TK_END_EXPR' && (previous_flags.mode === MODE.ForInitializer || previous_flags.mode === MODE.Conditional)))) {\n                // Issue #276:\n                // If starting a new statement with [if, for, while, do], push to a new line.\n                // if (a) if (b) if(c) d(); else e(); else f();\n                allow_wrap_or_preserved_newline(\n                    in_array(token_text, ['do', 'for', 'if', 'while']));\n\n                set_mode(MODE.Statement);\n                // Issue #275:\n                // If starting on a newline, all of a statement should be indented.\n                // if not, use line wrapping logic for indent.\n                if(just_added_newline()) {\n                    indent();\n                    output_wrapped = false;\n                }\n                return true;\n            }\n            return false;\n        }\n\n        function all_lines_start_with(lines, c) {\n            for (var i = 0; i < lines.length; i++) {\n                var line = trim(lines[i]);\n                if (line.charAt(0) !== c) {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        function is_special_word(word) {\n            return in_array(word, ['case', 'return', 'do', 'if', 'throw', 'else']);\n        }\n\n        function in_array(what, arr) {\n            for (var i = 0; i < arr.length; i += 1) {\n                if (arr[i] === what) {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        function unescape_string(s) {\n            var esc = false,\n                out = '',\n                pos = 0,\n                s_hex = '',\n                escaped = 0,\n                c;\n\n            while (esc || pos < s.length) {\n\n                c = s.charAt(pos);\n                pos++;\n\n                if (esc) {\n                    esc = false;\n                    if (c === 'x') {\n                        // simple hex-escape \\x24\n                        s_hex = s.substr(pos, 2);\n                        pos += 2;\n                    } else if (c === 'u') {\n                        // unicode-escape, \\u2134\n                        s_hex = s.substr(pos, 4);\n                        pos += 4;\n                    } else {\n                        // some common escape, e.g \\n\n                        out += '\\\\' + c;\n                        continue;\n                    }\n                    if (!s_hex.match(/^[0123456789abcdefABCDEF]+$/)) {\n                        // some weird escaping, bail out,\n                        // leaving whole string intact\n                        return s;\n                    }\n\n                    escaped = parseInt(s_hex, 16);\n\n                    if (escaped >= 0x00 && escaped < 0x20) {\n                        // leave 0x00...0x1f escaped\n                        if (c === 'x') {\n                            out += '\\\\x' + s_hex;\n                        } else {\n                            out += '\\\\u' + s_hex;\n                        }\n                        continue;\n                    } else if (escaped === 0x22 || escaped === 0x27 || escaped === 0x5c) {\n                        // single-quote, apostrophe, backslash - escape these\n                        out += '\\\\' + String.fromCharCode(escaped);\n                    } else if (c === 'x' && escaped > 0x7e && escaped <= 0xff) {\n                        // we bail out on \\x7f..\\xff,\n                        // leaving whole string escaped,\n                        // as it's probably completely binary\n                        return s;\n                    } else {\n                        out += String.fromCharCode(escaped);\n                    }\n                } else if (c === '\\\\') {\n                    esc = true;\n                } else {\n                    out += c;\n                }\n            }\n            return out;\n        }\n\n        function is_next(find) {\n            var local_pos = parser_pos;\n            var c = input.charAt(local_pos);\n            while (in_array(c, whitespace) && c !== find) {\n                local_pos++;\n                if (local_pos >= input_length) {\n                    return false;\n                }\n                c = input.charAt(local_pos);\n            }\n            return c === find;\n        }\n\n        function get_next_token() {\n            var i, resulting_string;\n\n            n_newlines = 0;\n\n            if (parser_pos >= input_length) {\n                return ['', 'TK_EOF'];\n            }\n\n            input_wanted_newline = false;\n            whitespace_before_token = [];\n\n            var c = input.charAt(parser_pos);\n            parser_pos += 1;\n\n            while (in_array(c, whitespace)) {\n\n                if (c === '\\n') {\n                    n_newlines += 1;\n                    whitespace_before_token = [];\n                } else if (n_newlines) {\n                    if (c === indent_string) {\n                        whitespace_before_token.push(indent_string);\n                    } else if (c !== '\\r') {\n                        whitespace_before_token.push(' ');\n                    }\n                }\n\n                if (parser_pos >= input_length) {\n                    return ['', 'TK_EOF'];\n                }\n\n                c = input.charAt(parser_pos);\n                parser_pos += 1;\n            }\n\n            if (in_array(c, wordchar)) {\n                if (parser_pos < input_length) {\n                    while (in_array(input.charAt(parser_pos), wordchar)) {\n                        c += input.charAt(parser_pos);\n                        parser_pos += 1;\n                        if (parser_pos === input_length) {\n                            break;\n                        }\n                    }\n                }\n\n                // small and surprisingly unugly hack for 1E-10 representation\n                if (parser_pos !== input_length && c.match(/^[0-9]+[Ee]$/) && (input.charAt(parser_pos) === '-' || input.charAt(parser_pos) === '+')) {\n\n                    var sign = input.charAt(parser_pos);\n                    parser_pos += 1;\n\n                    var t = get_next_token();\n                    c += sign + t[0];\n                    return [c, 'TK_WORD'];\n                }\n\n                if (c === 'in') { // hack for 'in' operator\n                    return [c, 'TK_OPERATOR'];\n                }\n                return [c, 'TK_WORD'];\n            }\n\n            if (c === '(' || c === '[') {\n                return [c, 'TK_START_EXPR'];\n            }\n\n            if (c === ')' || c === ']') {\n                return [c, 'TK_END_EXPR'];\n            }\n\n            if (c === '{') {\n                return [c, 'TK_START_BLOCK'];\n            }\n\n            if (c === '}') {\n                return [c, 'TK_END_BLOCK'];\n            }\n\n            if (c === ';') {\n                return [c, 'TK_SEMICOLON'];\n            }\n\n            if (c === '/') {\n                var comment = '';\n                // peek for comment /* ... */\n                var inline_comment = true;\n                if (input.charAt(parser_pos) === '*') {\n                    parser_pos += 1;\n                    if (parser_pos < input_length) {\n                        while (parser_pos < input_length && !(input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/')) {\n                            c = input.charAt(parser_pos);\n                            comment += c;\n                            if (c === \"\\n\" || c === \"\\r\") {\n                                inline_comment = false;\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                break;\n                            }\n                        }\n                    }\n                    parser_pos += 2;\n                    if (inline_comment && n_newlines === 0) {\n                        return ['/*' + comment + '*/', 'TK_INLINE_COMMENT'];\n                    } else {\n                        return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT'];\n                    }\n                }\n                // peek for comment // ...\n                if (input.charAt(parser_pos) === '/') {\n                    comment = c;\n                    while (input.charAt(parser_pos) !== '\\r' && input.charAt(parser_pos) !== '\\n') {\n                        comment += input.charAt(parser_pos);\n                        parser_pos += 1;\n                        if (parser_pos >= input_length) {\n                            break;\n                        }\n                    }\n                    return [comment, 'TK_COMMENT'];\n                }\n\n            }\n\n\n            if (c === \"'\" || c === '\"' || // string\n                (\n                    (c === '/') || // regexp\n                    (opt.e4x && c ===\"<\" && input.slice(parser_pos - 1).match(/^<([a-zA-Z:0-9]+|{[^{}]*}|!\\[CDATA\\[[\\s\\S]*?\\]\\])\\s*([a-zA-Z:0-9]+=('[^']*'|\"[^\"]*\"|{[^{}]*})\\s*)*\\/?\\s*>/)) // xml\n                ) && ( // regex and xml can only appear in specific locations during parsing\n                    (last_type === 'TK_WORD' && is_special_word (flags.last_text)) ||\n                    (last_type === 'TK_END_EXPR' && in_array(previous_flags.mode, [MODE.Conditional, MODE.ForInitializer])) ||\n                    (in_array(last_type, ['TK_COMMENT', 'TK_START_EXPR', 'TK_START_BLOCK',\n                    'TK_END_BLOCK', 'TK_OPERATOR', 'TK_EQUALS', 'TK_EOF', 'TK_SEMICOLON', 'TK_COMMA']))\n                )) {\n\n                var sep = c,\n                    esc = false,\n                    has_char_escapes = false;\n\n                resulting_string = c;\n\n                if (parser_pos < input_length) {\n                    if (sep === '/') {\n                        //\n                        // handle regexp\n                        //\n                        var in_char_class = false;\n                        while (esc || in_char_class || input.charAt(parser_pos) !== sep) {\n                            resulting_string += input.charAt(parser_pos);\n                            if (!esc) {\n                                esc = input.charAt(parser_pos) === '\\\\';\n                                if (input.charAt(parser_pos) === '[') {\n                                    in_char_class = true;\n                                } else if (input.charAt(parser_pos) === ']') {\n                                    in_char_class = false;\n                                }\n                            } else {\n                                esc = false;\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                // incomplete string/rexp when end-of-file reached.\n                                // bail out with what had been received so far.\n                                return [resulting_string, 'TK_STRING'];\n                            }\n                        }\n                    } else if (opt.e4x && sep === '<') {\n                        //\n                        // handle e4x xml literals\n                        //\n                        var xmlRegExp = /<(\\/?)([a-zA-Z:0-9]+|{[^{}]*}|!\\[CDATA\\[[\\s\\S]*?\\]\\])\\s*([a-zA-Z:0-9]+=('[^']*'|\"[^\"]*\"|{[^{}]*})\\s*)*(\\/?)\\s*>/g;\n                        var xmlStr = input.slice(parser_pos - 1);\n                        var match = xmlRegExp.exec(xmlStr);\n                        if (match && match.index === 0) {\n                            var rootTag = match[2];\n                            var depth = 0;\n                            while (match) {\n                                var isEndTag = !! match[1];\n                                var tagName = match[2];\n                                var isSingletonTag = (!! match[match.length - 1]) || (tagName.slice(0, 8) === \"![CDATA[\");\n                                if (tagName === rootTag && !isSingletonTag) {\n                                    if (isEndTag) {\n                                        --depth;\n                                    } else {\n                                        ++depth;\n                                    }\n                                }\n                                if (depth <= 0) {\n                                    break;\n                                }\n                                match = xmlRegExp.exec(xmlStr);\n                            }\n                            var xmlLength = match ? match.index + match[0].length : xmlStr.length;\n                            parser_pos += xmlLength - 1;\n                            return [xmlStr.slice(0, xmlLength), \"TK_STRING\"];\n                        }\n                    } else {\n                        //\n                        // handle string\n                        //\n                        while (esc || input.charAt(parser_pos) !== sep) {\n                            resulting_string += input.charAt(parser_pos);\n                            if (esc) {\n                                if (input.charAt(parser_pos) === 'x' || input.charAt(parser_pos) === 'u') {\n                                    has_char_escapes = true;\n                                }\n                                esc = false;\n                            } else {\n                                esc = input.charAt(parser_pos) === '\\\\';\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                // incomplete string/rexp when end-of-file reached.\n                                // bail out with what had been received so far.\n                                return [resulting_string, 'TK_STRING'];\n                            }\n                        }\n\n                    }\n                }\n\n                parser_pos += 1;\n                resulting_string += sep;\n\n                if (has_char_escapes && opt.unescape_strings) {\n                    resulting_string = unescape_string(resulting_string);\n                }\n\n                if (sep === '/') {\n                    // regexps may have modifiers /regexp/MOD , so fetch those, too\n                    while (parser_pos < input_length && in_array(input.charAt(parser_pos), wordchar)) {\n                        resulting_string += input.charAt(parser_pos);\n                        parser_pos += 1;\n                    }\n                }\n                return [resulting_string, 'TK_STRING'];\n            }\n\n            if (c === '#') {\n\n\n                if (output.length === 0 && input.charAt(parser_pos) === '!') {\n                    // shebang\n                    resulting_string = c;\n                    while (parser_pos < input_length && c !== '\\n') {\n                        c = input.charAt(parser_pos);\n                        resulting_string += c;\n                        parser_pos += 1;\n                    }\n                    return [trim(resulting_string) + '\\n', 'TK_UNKNOWN'];\n                }\n\n\n\n                // Spidermonkey-specific sharp variables for circular references\n                // https://developer.mozilla.org/En/Sharp_variables_in_JavaScript\n                // http://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp around line 1935\n                var sharp = '#';\n                if (parser_pos < input_length && in_array(input.charAt(parser_pos), digits)) {\n                    do {\n                        c = input.charAt(parser_pos);\n                        sharp += c;\n                        parser_pos += 1;\n                    } while (parser_pos < input_length && c !== '#' && c !== '=');\n                    if (c === '#') {\n                        //\n                    } else if (input.charAt(parser_pos) === '[' && input.charAt(parser_pos + 1) === ']') {\n                        sharp += '[]';\n                        parser_pos += 2;\n                    } else if (input.charAt(parser_pos) === '{' && input.charAt(parser_pos + 1) === '}') {\n                        sharp += '{}';\n                        parser_pos += 2;\n                    }\n                    return [sharp, 'TK_WORD'];\n                }\n            }\n\n            if (c === '<' && input.substring(parser_pos - 1, parser_pos + 3) === '<!--') {\n                parser_pos += 3;\n                c = '<!--';\n                while (input.charAt(parser_pos) !== '\\n' && parser_pos < input_length) {\n                    c += input.charAt(parser_pos);\n                    parser_pos++;\n                }\n                flags.in_html_comment = true;\n                return [c, 'TK_COMMENT'];\n            }\n\n            if (c === '-' && flags.in_html_comment && input.substring(parser_pos - 1, parser_pos + 2) === '-->') {\n                flags.in_html_comment = false;\n                parser_pos += 2;\n                return ['-->', 'TK_COMMENT'];\n            }\n\n            if (c === '.') {\n                return [c, 'TK_DOT'];\n            }\n\n            if (in_array(c, punct)) {\n                while (parser_pos < input_length && in_array(c + input.charAt(parser_pos), punct)) {\n                    c += input.charAt(parser_pos);\n                    parser_pos += 1;\n                    if (parser_pos >= input_length) {\n                        break;\n                    }\n                }\n\n                if (c === ',') {\n                    return [c, 'TK_COMMA'];\n                } else if (c === '=') {\n                    return [c, 'TK_EQUALS'];\n                } else {\n                    return [c, 'TK_OPERATOR'];\n                }\n            }\n\n            return [c, 'TK_UNKNOWN'];\n        }\n\n        function handle_start_expr() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n            }\n\n            if (token_text === '[') {\n\n                if (last_type === 'TK_WORD' || flags.last_text === ')') {\n                    // this is array index specifier, break immediately\n                    // a[x], fn()[x]\n                    if (in_array (flags.last_text, line_starters)) {\n                        output_space_before_token = true;\n                    }\n                    set_mode(MODE.Expression);\n                    print_token();\n                    if (opt.space_in_paren) {\n                        output_space_before_token = true;\n                    }\n                    return;\n                }\n\n                if (is_array(flags.mode)) {\n                    if (flags.last_text === '[' ||\n                        (flags.last_text === ',' && (last_last_text === ']' || last_last_text === '}'))) {\n                        // ], [ goes to new line\n                        // }, [ goes to new line\n                        if (!opt.keep_array_indentation) {\n                            print_newline();\n                        }\n                    }\n                }\n\n            } else {\n                if  (flags.last_text === 'for') {\n                    set_mode(MODE.ForInitializer);\n                } else if (in_array (flags.last_text, ['if', 'while'])) {\n                    set_mode(MODE.Conditional);\n                } else {\n                    set_mode(MODE.Expression);\n                }\n            }\n\n            if  (flags.last_text === ';' || last_type === 'TK_START_BLOCK') {\n                print_newline();\n            } else if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || flags.last_text === '.') {\n                if (input_wanted_newline) {\n                    print_newline();\n                }\n                // do nothing on (( and )( and ][ and ]( and .(\n            } else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') {\n                output_space_before_token = true;\n            } else if (flags.last_word === 'function' || flags.last_word === 'typeof') {\n                // function() vs function ()\n                if (opt.jslint_happy) {\n                    output_space_before_token = true;\n                }\n            } else if (in_array (flags.last_text, line_starters) || flags.last_text === 'catch') {\n                if (opt.space_before_conditional) {\n                    output_space_before_token = true;\n                }\n            }\n\n            // Support of this kind of newline preservation.\n            // a = (b &&\n            //     (c || d));\n            if (token_text === '(') {\n                if (last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                    if (flags.mode !== MODE.ObjectLiteral) {\n                        allow_wrap_or_preserved_newline();\n                    }\n                }\n            }\n            if (token_text === '[') {\n                set_mode(MODE.ArrayLiteral);\n            }\n\n            print_token();\n            if (opt.space_in_paren) {\n                    output_space_before_token = true;\n            }\n\n            // In all cases, if we newline while inside an expression it should be indented.\n            indent();\n        }\n\n        function handle_end_expr() {\n            // statements inside expressions are not valid syntax, but...\n            // statements must all be closed when their container closes\n            while (flags.mode === MODE.Statement) {\n                restore_mode();\n            }\n\n            if (token_text === ']' && is_array(flags.mode) && flags.multiline_array && !opt.keep_array_indentation) {\n                print_newline();\n            }\n            if (opt.space_in_paren) {\n                    output_space_before_token = true;\n            }\n            if (token_text === ']' && opt.keep_array_indentation) {\n                print_token();\n                restore_mode();\n            } else {\n                restore_mode();\n                print_token();\n            }\n\n            // do {} while () // no statement required after\n            if (flags.do_while && previous_flags.mode === MODE.Conditional) {\n                previous_flags.mode = MODE.Expression;\n                flags.do_block = false;\n                flags.do_while = false;\n\n            }\n        }\n\n        function handle_start_block() {\n            set_mode(MODE.BlockStatement);\n\n            var empty_braces = is_next('}');\n            var empty_anonymous_function = empty_braces && flags.last_word === 'function' &&\n                last_type === 'TK_END_EXPR';\n\n            if (opt.brace_style === \"expand\") {\n                if (last_type !== 'TK_OPERATOR' &&\n                    (empty_anonymous_function ||\n                        last_type === 'TK_EQUALS' ||\n                        (is_special_word (flags.last_text) && flags.last_text !== 'else'))) {\n                        output_space_before_token = true;\n                } else {\n                    print_newline();\n                }\n            } else { // collapse\n                if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') {\n                    if (last_type === 'TK_START_BLOCK') {\n                        print_newline();\n                    } else {\n                        output_space_before_token = true;\n                    }\n                } else {\n                    // if TK_OPERATOR or TK_START_EXPR\n                    if (is_array(previous_flags.mode) && flags.last_text === ',') {\n                        if (last_last_text === '}') {\n                            // }, { in array context\n                            output_space_before_token = true;\n                        } else {\n                            print_newline(); // [a, b, c, {\n                        }\n                    }\n                }\n            }\n            print_token();\n            indent();\n        }\n\n        function handle_end_block() {\n            // statements must all be closed when their container closes\n            while (flags.mode === MODE.Statement) {\n                restore_mode();\n            }\n            restore_mode();\n            var empty_braces = last_type === 'TK_START_BLOCK';\n\n            if (opt.brace_style === \"expand\") {\n                if  (!empty_braces) {\n                    print_newline();\n                }\n            } else {\n                // skip {}\n                if (!empty_braces) {\n                    if (is_array(flags.mode) && opt.keep_array_indentation) {\n                        // we REALLY need a newline here, but newliner would skip that\n                        opt.keep_array_indentation = false;\n                        print_newline();\n                        opt.keep_array_indentation = true;\n\n                    } else {\n                        print_newline();\n                    }\n                }\n            }\n            print_token();\n        }\n\n        function handle_word() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n            } else if (input_wanted_newline && !is_expression(flags.mode) &&\n                (last_type !== 'TK_OPERATOR' || (flags.last_text === '--' || flags.last_text === '++')) &&\n                last_type !== 'TK_EQUALS' &&\n                (opt.preserve_newlines || flags.last_text !== 'var')) {\n\n                print_newline();\n            }\n\n            if (flags.do_block && !flags.do_while) {\n                if (token_text === 'while') {\n                    // do {} ## while ()\n                    output_space_before_token = true;\n                    print_token();\n                    output_space_before_token = true;\n                    flags.do_while = true;\n                    return;\n                } else {\n                    // do {} should always have while as the next word.\n                    // if we don't see the expected while, recover\n                    print_newline();\n                    flags.do_block = false;\n                }\n            }\n\n            // if may be followed by else, or not\n            // Bare/inline ifs are tricky\n            // Need to unwind the modes correctly: if (a) if (b) c(); else d(); else e();\n            if (flags.if_block) {\n                if (token_text !== 'else') {\n                    while (flags.mode === MODE.Statement) {\n                        restore_mode();\n                    }\n                    flags.if_block = false;\n                }\n            }\n\n            if (token_text === 'function') {\n                if (flags.var_line && last_type !== 'TK_EQUALS') {\n                    flags.var_line_reindented = true;\n                }\n                if ((just_added_newline() || flags.last_text === ';' || flags.last_text === '}') &&\n                    flags.last_text !== '{' && !is_array(flags.mode)) {\n                    // make sure there is a nice clean space of at least one blank line\n                    // before a new function definition, except in arrays\n                    if(!just_added_newline()) {\n                        print_newline(true);\n                    }\n\n                    if(!just_added_blankline()) {\n                        print_newline(true);\n                    }\n                }\n                if (last_type === 'TK_WORD') {\n                    if  (flags.last_text === 'get' || flags.last_text === 'set' || flags.last_text === 'new' || flags.last_text === 'return') {\n                        output_space_before_token = true;\n                    } else {\n                        print_newline();\n                    }\n                } else if (last_type === 'TK_OPERATOR' || flags.last_text === '=') {\n                    // foo = function\n                    output_space_before_token = true;\n                } else if (is_expression(flags.mode)) {\n                    // (function\n                } else {\n                    print_newline();\n                }\n\n                if (is_expression(flags.mode)) {\n                    // Issue #274\n                    // (function inside expression that is not nested.\n                    if(!(is_expression(flags.parent.mode) || is_array(flags.parent.mode)) &&\n                        line_indent_level < flags.indentation_level) {\n                        deindent();\n                    }\n                }\n\n                print_token();\n                flags.last_word = token_text;\n                return;\n            }\n\n            if (token_text === 'case' || (token_text === 'default' && flags.in_case_statement)) {\n                print_newline();\n                if (flags.case_body || opt.jslint_happy) {\n                    // switch cases following one another\n                    deindent();\n                    flags.case_body = false;\n                }\n                print_token();\n                flags.in_case = true;\n                flags.in_case_statement = true;\n                return;\n            }\n\n            prefix = 'NONE';\n\n            if (last_type === 'TK_END_BLOCK') {\n                if (!in_array(token_text, ['else', 'catch', 'finally'])) {\n                    prefix = 'NEWLINE';\n                } else {\n                    if (opt.brace_style === \"expand\" || opt.brace_style === \"end-expand\") {\n                        prefix = 'NEWLINE';\n                    } else {\n                        prefix = 'SPACE';\n                        output_space_before_token = true;\n                    }\n                }\n            } else if (last_type === 'TK_SEMICOLON' && flags.mode === MODE.BlockStatement) {\n                // TODO: Should this be for STATEMENT as well?\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_SEMICOLON' && is_expression(flags.mode)) {\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_STRING') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_WORD') {\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_START_BLOCK') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_END_EXPR') {\n                output_space_before_token = true;\n                prefix = 'NEWLINE';\n            }\n\n            if (in_array(token_text, line_starters) && flags.last_text !== ')') {\n                if  (flags.last_text === 'else') {\n                    prefix = 'SPACE';\n                } else {\n                    prefix = 'NEWLINE';\n                }\n\n            }\n\n            if (last_type === 'TK_COMMA' || last_type === 'TK_START_EXPR' || last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                if (flags.mode !== MODE.ObjectLiteral) {\n                    allow_wrap_or_preserved_newline();\n                }\n            }\n\n            if (in_array(token_text, ['else', 'catch', 'finally'])) {\n                if (last_type !== 'TK_END_BLOCK' || opt.brace_style === \"expand\" || opt.brace_style === \"end-expand\") {\n                    print_newline();\n                } else {\n                    trim_output(true);\n                    // If we trimmed and there's something other than a close block before us\n                    // put a newline back in.  Handles '} // comment' scenario.\n                    if (output[output.length - 1] !== '}') {\n                        print_newline();\n                    }\n                    output_space_before_token = true;\n                }\n            } else if (prefix === 'NEWLINE') {\n                if (is_special_word (flags.last_text)) {\n                    // no newline between 'return nnn'\n                    output_space_before_token = true;\n                } else if (last_type !== 'TK_END_EXPR') {\n                    if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && flags.last_text !== ':') {\n                        // no need to force newline on 'var': for (var x = 0...)\n                        if (token_text === 'if' && flags.last_word === 'else' && flags.last_text !== '{') {\n                            // no newline for } else if {\n                            output_space_before_token = true;\n                        } else {\n                            flags.var_line = false;\n                            flags.var_line_reindented = false;\n                            print_newline();\n                        }\n                    }\n                } else if (in_array(token_text, line_starters) && flags.last_text !== ')') {\n                    flags.var_line = false;\n                    flags.var_line_reindented = false;\n                    print_newline();\n                }\n            } else if (is_array(flags.mode) && flags.last_text === ',' && last_last_text === '}') {\n                print_newline(); // }, in lists get a newline treatment\n            } else if (prefix === 'SPACE') {\n                output_space_before_token = true;\n            }\n            print_token();\n            flags.last_word = token_text;\n\n            if (token_text === 'var') {\n                flags.var_line = true;\n                flags.var_line_reindented = false;\n                flags.var_line_tainted = false;\n            }\n\n            if (token_text === 'do') {\n                flags.do_block = true;\n            }\n\n            if (token_text === 'if') {\n                flags.if_block = true;\n            }\n        }\n\n        function handle_semicolon() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n                // Semicolon can be the start (and end) of a statement\n                output_space_before_token = false;\n            }\n            while (flags.mode === MODE.Statement && !flags.if_block && !flags.do_block) {\n                restore_mode();\n            }\n            print_token();\n            flags.var_line = false;\n            flags.var_line_reindented = false;\n            if (flags.mode === MODE.ObjectLiteral) {\n                // if we're in OBJECT mode and see a semicolon, its invalid syntax\n                // recover back to treating this as a BLOCK\n                flags.mode = MODE.BlockStatement;\n            }\n        }\n\n        function handle_string() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n                // One difference - strings want at least a space before\n                output_space_before_token = true;\n            } else if (last_type === 'TK_WORD') {\n                output_space_before_token = true;\n            } else if (last_type === 'TK_COMMA' || last_type === 'TK_START_EXPR' || last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                if (flags.mode !== MODE.ObjectLiteral) {\n                    allow_wrap_or_preserved_newline();\n                }\n            } else {\n                print_newline();\n            }\n            print_token();\n        }\n\n        function handle_equals() {\n            if (flags.var_line) {\n                // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n                flags.var_line_tainted = true;\n            }\n            output_space_before_token = true;\n            print_token();\n            output_space_before_token = true;\n        }\n\n        function handle_comma() {\n            if (flags.var_line) {\n                if (is_expression(flags.mode) || last_type === 'TK_END_BLOCK') {\n                    // do not break on comma, for(var a = 1, b = 2)\n                    flags.var_line_tainted = false;\n                }\n\n                if (flags.var_line) {\n                    flags.var_line_reindented = true;\n                }\n\n                print_token();\n\n                if (flags.var_line_tainted) {\n                    flags.var_line_tainted = false;\n                    print_newline();\n                } else {\n                    output_space_before_token = true;\n                }\n                return;\n            }\n\n            if (last_type === 'TK_END_BLOCK' && flags.mode !== MODE.Expression) {\n                print_token();\n                if (flags.mode === MODE.ObjectLiteral && flags.last_text === '}') {\n                    print_newline();\n                } else {\n                    output_space_before_token = true;\n                }\n            } else {\n                if (flags.mode === MODE.ObjectLiteral) {\n                    print_token();\n                    print_newline();\n                } else {\n                    // EXPR or DO_BLOCK\n                    print_token();\n                    output_space_before_token = true;\n                }\n            }\n        }\n\n        function handle_operator() {\n            var space_before = true;\n            var space_after = true;\n            if (is_special_word (flags.last_text)) {\n                // \"return\" had a special handling in TK_WORD. Now we need to return the favor\n                output_space_before_token = true;\n                print_token();\n                return;\n            }\n\n            // hack for actionscript's import .*;\n            if (token_text === '*' && last_type === 'TK_DOT' && !last_last_text.match(/^\\d+$/)) {\n                print_token();\n                return;\n            }\n\n            if (token_text === ':' && flags.in_case) {\n                flags.case_body = true;\n                indent();\n                print_token();\n                print_newline();\n                flags.in_case = false;\n                return;\n            }\n\n            if (token_text === '::') {\n                // no spaces around exotic namespacing syntax operator\n                print_token();\n                return;\n            }\n\n            // http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1\n            // if there is a newline between -- or ++ and anything else we should preserve it.\n            if (input_wanted_newline && (token_text === '--' || token_text === '++')) {\n                print_newline();\n            }\n\n            if (in_array(token_text, ['--', '++', '!']) || (in_array(token_text, ['-', '+']) && (in_array(last_type, ['TK_START_BLOCK', 'TK_START_EXPR', 'TK_EQUALS', 'TK_OPERATOR']) || in_array (flags.last_text, line_starters) || flags.last_text === ','))) {\n                // unary operators (and binary +/- pretending to be unary) special cases\n\n                space_before = false;\n                space_after = false;\n\n                if  (flags.last_text === ';' && is_expression(flags.mode)) {\n                    // for (;; ++i)\n                    //        ^^^\n                    space_before = true;\n                }\n\n                if (last_type === 'TK_WORD' && in_array (flags.last_text, line_starters)) {\n                    space_before = true;\n                }\n\n                if ((flags.mode === MODE.BlockStatement || flags.mode === MODE.Statement) &&  (flags.last_text === '{' || flags.last_text === ';')) {\n                    // { foo; --i }\n                    // foo(); --bar;\n                    print_newline();\n                }\n            } else if (token_text === ':') {\n                if (flags.ternary_depth === 0) {\n                    if (flags.mode === MODE.BlockStatement) {\n                        flags.mode = MODE.ObjectLiteral;\n                    }\n                    space_before = false;\n                } else {\n                    flags.ternary_depth -= 1;\n                }\n            } else if (token_text === '?') {\n                flags.ternary_depth += 1;\n            }\n            output_space_before_token = output_space_before_token || space_before;\n            print_token();\n            output_space_before_token = space_after;\n        }\n\n        function handle_block_comment() {\n            var lines = split_newlines(token_text);\n            var j; // iterator for this case\n            var javadoc = false;\n\n            // block comment starts with a new line\n            print_newline(false, true);\n            if (lines.length > 1) {\n                if (all_lines_start_with(lines.slice(1), '*')) {\n                    javadoc = true;\n                }\n            }\n\n            // first line always indented\n            print_token(lines[0]);\n            for (j = 1; j < lines.length; j++) {\n                print_newline(false, true);\n                if (javadoc) {\n                    // javadoc: reformat and re-indent\n                    print_token(' ' + trim(lines[j]));\n                } else {\n                    // normal comments output raw\n                    output.push(lines[j]);\n                }\n            }\n\n            // for comments of more than one line, make sure there's a new line after\n            print_newline(false, true);\n        }\n\n        function handle_inline_comment() {\n            output_space_before_token = true;\n            print_token();\n            output_space_before_token = true;\n        }\n\n        function handle_comment() {\n            if (input_wanted_newline) {\n                print_newline(false, true);\n            } else {\n                trim_output(true);\n            }\n\n            output_space_before_token = true;\n            print_token();\n            print_newline(false, true);\n        }\n\n        function handle_dot() {\n            if (is_special_word (flags.last_text)) {\n                output_space_before_token = true;\n            } else {\n                // allow preserved newlines before dots in general\n                // force newlines on dots after close paren when break_chained - for bar().baz()\n                allow_wrap_or_preserved_newline (flags.last_text === ')' && opt.break_chained_methods);\n            }\n\n            print_token();\n        }\n\n        function handle_unknown() {\n            print_token();\n            if (token_text[token_text.length - 1] === '\\n') {\n                print_newline();\n            }\n        }\n    }\n\n\n    if (typeof define === \"function\") {\n        // Add support for require.js\n        define(function(require, exports, module) {\n            exports.js_beautify = js_beautify;\n        });\n    } else if (typeof exports !== \"undefined\") {\n        // Add support for CommonJS. Just put this file somewhere on your require.paths\n        // and you will be able to `var js_beautify = require(\"beautify\").js_beautify`.\n        exports.js_beautify = js_beautify;\n    } else if (typeof window !== \"undefined\") {\n        // If we're running a web page and don't have either of the above, add our one global\n        window.js_beautify = js_beautify;\n    } else if (typeof global !== \"undefined\") {\n        // If we don't even have window, try global.\n        global.js_beautify = js_beautify;\n    }\n\n}());\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/json2.js",
    "content": "/*\n    json2.js\n    2012-10-08\n\n    Public Domain.\n\n    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    See http://www.JSON.org/js.html\n\n\n    This code should be minified before deployment.\n    See http://javascript.crockford.com/jsmin.html\n\n    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    NOT CONTROL.\n\n\n    This file creates a global JSON object containing two methods: stringify\n    and parse.\n\n        JSON.stringify(value, replacer, space)\n            value       any JavaScript value, usually an object or array.\n\n            replacer    an optional parameter that determines how object\n                        values are stringified for objects. It can be a\n                        function or an array of strings.\n\n            space       an optional parameter that specifies the indentation\n                        of nested structures. If it is omitted, the text will\n                        be packed without extra whitespace. If it is a number,\n                        it will specify the number of spaces to indent at each\n                        level. If it is a string (such as '\\t' or '&nbsp;'),\n                        it contains the characters used to indent at each level.\n\n            This method produces a JSON text from a JavaScript value.\n\n            When an object value is found, if the object contains a toJSON\n            method, its toJSON method will be called and the result will be\n            stringified. A toJSON method does not serialize: it returns the\n            value represented by the name/value pair that should be serialized,\n            or undefined if nothing should be serialized. The toJSON method\n            will be passed the key associated with the value, and this will be\n            bound to the value\n\n            For example, this would serialize Dates as ISO strings.\n\n                Date.prototype.toJSON = function (key) {\n                    function f(n) {\n                        // Format integers to have at least two digits.\n                        return n < 10 ? '0' + n : n;\n                    }\n\n                    return this.getUTCFullYear()   + '-' +\n                         f(this.getUTCMonth() + 1) + '-' +\n                         f(this.getUTCDate())      + 'T' +\n                         f(this.getUTCHours())     + ':' +\n                         f(this.getUTCMinutes())   + ':' +\n                         f(this.getUTCSeconds())   + 'Z';\n                };\n\n            You can provide an optional replacer method. It will be passed the\n            key and value of each member, with this bound to the containing\n            object. The value that is returned from your method will be\n            serialized. If your method returns undefined, then the member will\n            be excluded from the serialization.\n\n            If the replacer parameter is an array of strings, then it will be\n            used to select the members to be serialized. It filters the results\n            such that only members with keys listed in the replacer array are\n            stringified.\n\n            Values that do not have JSON representations, such as undefined or\n            functions, will not be serialized. Such values in objects will be\n            dropped; in arrays they will be replaced with null. You can use\n            a replacer function to replace those with JSON values.\n            JSON.stringify(undefined) returns undefined.\n\n            The optional space parameter produces a stringification of the\n            value that is filled with line breaks and indentation to make it\n            easier to read.\n\n            If the space parameter is a non-empty string, then that string will\n            be used for indentation. If the space parameter is a number, then\n            the indentation will be that many spaces.\n\n            Example:\n\n            text = JSON.stringify(['e', {pluribus: 'unum'}]);\n            // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n\n            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\\t');\n            // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n            text = JSON.stringify([new Date()], function (key, value) {\n                return this[key] instanceof Date ?\n                    'Date(' + this[key] + ')' : value;\n            });\n            // text is '[\"Date(---current time---)\"]'\n\n\n        JSON.parse(text, reviver)\n            This method parses a JSON text to produce an object or array.\n            It can throw a SyntaxError exception.\n\n            The optional reviver parameter is a function that can filter and\n            transform the results. It receives each of the keys and values,\n            and its return value is used instead of the original value.\n            If it returns what it received, then the structure is not modified.\n            If it returns undefined then the member is deleted.\n\n            Example:\n\n            // Parse the text. Values that look like ISO date strings will\n            // be converted to Date objects.\n\n            myData = JSON.parse(text, function (key, value) {\n                var a;\n                if (typeof value === 'string') {\n                    a =\n/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n                    if (a) {\n                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n                            +a[5], +a[6]));\n                    }\n                }\n                return value;\n            });\n\n            myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n                var d;\n                if (typeof value === 'string' &&\n                        value.slice(0, 5) === 'Date(' &&\n                        value.slice(-1) === ')') {\n                    d = new Date(value.slice(5, -1));\n                    if (d) {\n                        return d;\n                    }\n                }\n                return value;\n            });\n\n\n    This is a reference implementation. You are free to copy, modify, or\n    redistribute.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n    lastIndex, length, parse, prototype, push, replace, slice, stringify,\n    test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== 'object') {\n    JSON = {};\n}\n\n(function () {\n    'use strict';\n\n    function f(n) {\n        // Format integers to have at least two digits.\n        return n < 10 ? '0' + n : n;\n    }\n\n    if (typeof Date.prototype.toJSON !== 'function') {\n\n        Date.prototype.toJSON = function (key) {\n\n            return isFinite(this.valueOf())\n                ? this.getUTCFullYear()     + '-' +\n                    f(this.getUTCMonth() + 1) + '-' +\n                    f(this.getUTCDate())      + 'T' +\n                    f(this.getUTCHours())     + ':' +\n                    f(this.getUTCMinutes())   + ':' +\n                    f(this.getUTCSeconds())   + 'Z'\n                : null;\n        };\n\n        String.prototype.toJSON      =\n            Number.prototype.toJSON  =\n            Boolean.prototype.toJSON = function (key) {\n                return this.valueOf();\n            };\n    }\n\n    var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        gap,\n        indent,\n        meta = {    // table of character substitutions\n            '\\b': '\\\\b',\n            '\\t': '\\\\t',\n            '\\n': '\\\\n',\n            '\\f': '\\\\f',\n            '\\r': '\\\\r',\n            '\"' : '\\\\\"',\n            '\\\\': '\\\\\\\\'\n        },\n        rep;\n\n\n    function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n        escapable.lastIndex = 0;\n        return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n            var c = meta[a];\n            return typeof c === 'string'\n                ? c\n                : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n        }) + '\"' : '\"' + string + '\"';\n    }\n\n\n    function str(key, holder) {\n\n// Produce a string from holder[key].\n\n        var i,          // The loop counter.\n            k,          // The member key.\n            v,          // The member value.\n            length,\n            mind = gap,\n            partial,\n            value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n        if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n            value = value.toJSON(key);\n        }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n        if (typeof rep === 'function') {\n            value = rep.call(holder, key, value);\n        }\n\n// What happens next depends on the value's type.\n\n        switch (typeof value) {\n        case 'string':\n            return quote(value);\n\n        case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n            return isFinite(value) ? String(value) : 'null';\n\n        case 'boolean':\n        case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n            return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n        case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n            if (!value) {\n                return 'null';\n            }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n            gap += indent;\n            partial = [];\n\n// Is the value an array?\n\n            if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n                length = value.length;\n                for (i = 0; i < length; i += 1) {\n                    partial[i] = str(i, value) || 'null';\n                }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n                v = partial.length === 0\n                    ? '[]'\n                    : gap\n                    ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n                    : '[' + partial.join(',') + ']';\n                gap = mind;\n                return v;\n            }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n            if (rep && typeof rep === 'object') {\n                length = rep.length;\n                for (i = 0; i < length; i += 1) {\n                    if (typeof rep[i] === 'string') {\n                        k = rep[i];\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n                for (k in value) {\n                    if (Object.prototype.hasOwnProperty.call(value, k)) {\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n            v = partial.length === 0\n                ? '{}'\n                : gap\n                ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n                : '{' + partial.join(',') + '}';\n            gap = mind;\n            return v;\n        }\n    }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n    if (typeof JSON.stringify !== 'function') {\n        JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n            var i;\n            gap = '';\n            indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n            if (typeof space === 'number') {\n                for (i = 0; i < space; i += 1) {\n                    indent += ' ';\n                }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n            } else if (typeof space === 'string') {\n                indent = space;\n            }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n            rep = replacer;\n            if (replacer && typeof replacer !== 'function' &&\n                    (typeof replacer !== 'object' ||\n                    typeof replacer.length !== 'number')) {\n                throw new Error('JSON.stringify');\n            }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n            return str('', {'': value});\n        };\n    }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n    if (typeof JSON.parse !== 'function') {\n        JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n            var j;\n\n            function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n                var k, v, value = holder[key];\n                if (value && typeof value === 'object') {\n                    for (k in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, k)) {\n                            v = walk(value, k);\n                            if (v !== undefined) {\n                                value[k] = v;\n                            } else {\n                                delete value[k];\n                            }\n                        }\n                    }\n                }\n                return reviver.call(holder, key, value);\n            }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n            text = String(text);\n            cx.lastIndex = 0;\n            if (cx.test(text)) {\n                text = text.replace(cx, function (a) {\n                    return '\\\\u' +\n                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                });\n            }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n            if (/^[\\],:{}\\s]*$/\n                    .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n                        .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n                        .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n                j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n                return typeof reviver === 'function'\n                    ? walk({'': j}, '')\n                    : j;\n            }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n            throw new SyntaxError('JSON.parse');\n        };\n    }\n}());\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/LICENSE.txt",
    "content": " Copyright (c) 2012 Tracelytics\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/README.md",
    "content": "pageguide.js\n============\n\nAn interactive guide for web page elements using jQuery and CSS3.\n\n## How-to:\n1. Add references in your code to pageguide.js, jQuery & pageguide.css\n2. Add a document ready callback to setup the page guide\n3. Add a simple `<ul>` to the bottom of the pages you want the pageguide to appear on.\n4. Customize the page guide tour title.\n\n## An example:\n\n### Step 1 - Add pageguide.js \n\nAdd `<script src=\"pageguide.js\"></script>` to the bottom of your html document, right before your closing `</body>` tag.\n\nWe provide both the standard js as well as a minified version.\n\n### Step 2 - Add pageguide.css\n\nAdd `<link rel=\"stylesheet\" href=\"stylesheets/pageguide.css\">` to the header of your html document.\n\nWe provide a css file as well as a minified version. Alternatively, we use <a href=\"http://lesscss.org/\" target=\"_blank\">LESS CSS</a> at Tracelytics, so we provide that as well. \n\n### Step 3 - Add setup code\n\nAdd the following block of JavaScript to your html document:\n\n```$(document).ready(function() {\n    tl.pg.init({ /* optional preferences go here */ });\n});```\n\n### Step 4 - Choose the elements that you want included in the page guide.\npageguide.js matches the first occurrence of the selector you specify in the `<ul>` you put on your pages in the next step.\n\n### Step 5 - Add the pageguide.js `<ul>` near the bottom of your pages.\n\n    <ul id=\"tlyPageGuide\" data-tourtitle=\"REPLACE THIS WITH A TITLE\">\n      <li class=\"tlypageguide_left\" data-tourtarget=\".first_element_to_target\">\n        <div>\n          Here is the first item description. The number will appear to the left of the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_right\" data-tourtarget=\"#second_element_to_target\">\n        <div>\n          Here is the second item description. The number will appear to the right of the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_top\" data-tourtarget=\".third_element_to_target > div.is_here\">\n        <div>\n          Here is the third item description. The number will appear above the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_bottom\" data-tourtarget=\"#fourth_element_to_target\">\n        <div>\n          Here is the fourth item description. The number will appear below the element.\n        </div>\n      </li>\n    </ul>\n\n\n## See it IRL:\n* http://tracelytics.github.com/pageguide\n\n## Contribute\nBugfix?  Cool new feature?  Alternate style?  Send us a pull request!\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.css",
    "content": "#tlyPageGuideWrapper {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  color: #000;\n  font-size: 12px;\n  font-family: Helvetica, Arial, sans serif;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  background: rgba(0, 0, 0, 0.1);\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  -o-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  clear: both;\n  color: #000000;\n  cursor: pointer;\n  display: block;\n  float: right;\n  font-size: 11px;\n  height: 50px;\n  line-height: 25px;\n  padding: 22px 6px 6px;\n  position: fixed;\n  right: -190px;\n  text-align: left;\n  text-decoration: none;\n  top: 84px;\n  width: 184px;\n  -webkit-transition: all 0.2s ease-in;\n  -moz-transition: all 0.2s ease-in;\n  -o-transition: all 0.2s ease-in;\n  -ms-transition: all 0.2s ease-in;\n  transition: all 0.2s ease-in;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:before {\n  background: transparent url(\"../img/tlyguide/tlyguide_icon.png\") 0 0 no-repeat;\n  display: block;\n  height: 16px;\n  overflow: hidden;\n  text-indent: -999px;\n  width: 16px;\n  content: \" \";\n  left: 25px;\n  position: absolute;\n  top: 8px;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle div {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  border-left: 1px solid #fff;\n  display: block;\n  height: 33px;\n  line-height: 16px;\n  overflow: hidden;\n  padding: 2px 0 0 5px;\n  position: absolute;\n  right: -4px;\n  top: 6px;\n  width: 124px;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle div span {\n  display: block;\n  margin: 0 0 0 -118px;\n  width: 115px;\n  -webkit-transition: all 0.2s ease-in;\n  -moz-transition: all 0.2s ease-in;\n  -o-transition: all 0.2s ease-in;\n  -ms-transition: all 0.2s ease-in;\n  transition: all 0.2s ease-in;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle a {\n  bottom: -26px;\n  color: #000;\n  opacity: 0;\n  position: absolute;\n  right: 10px;\n  text-decoration: none;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:hover {\n  background: rgba(0, 0, 0, 0.2);\n  right: 0 !important;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:hover div span {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide {\n  list-style: none;\n  margin: 0 0 0 0;\n  padding: 0 0 0 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(247, 0, 119, 0.3);\n  -webkit-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -webkit-transition: min-height, max-height 0.1s ease-in-out;\n  -moz-transition: min-height, max-height 0.1s ease-in-out;\n  -o-transition: min-height, max-height 0.1s ease-in-out;\n  -ms-transition: min-height, max-height 0.1s ease-in-out;\n  transition: min-height, max-height 0.1s ease-in-out;\n  filter: alpha(opacity=0);\n  -moz-opacity: 0;\n  -khtml-opacity: 0;\n  opacity: 0;\n  cursor: pointer;\n  display: block;\n  height: 46px;\n  line-height: 50px;\n  min-height: 0px;\n  max-height: 0px;\n  position: absolute;\n  text-align: center;\n  width: 50px;\n  z-index: 5000;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.expanded {\n  filter: alpha(opacity=0);\n  -moz-opacity: 1;\n  -khtml-opacity: 1;\n  opacity: 1;\n  height: 46px;\n  min-height: 15px;\n  max-height: 46px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.expanded:after {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuide li ins {\n  background: none;\n  color: #fff;\n  display: block;\n  font-size: 32px;\n  overflow: hidden;\n  text-decoration: none;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li div {\n  display: none;\n}\n#tlyPageGuideWrapper #tlyPageGuide li:after {\n  content: \" \";\n  display: none;\n  height: 0;\n  left: 0;\n  position: absolute;\n  top: -15px;\n  width: 0;\n  border-top: none;\n  border-right: none;\n  border-bottom: none;\n  border-left: none;\n  top: auto;\n  left: auto;\n  right: auto;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  left: 0;\n  top: -15px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin-top: -5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-left: 15px solid transparent;\n  left: -15px;\n  top: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover {\n  margin-left: -5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  right: -15px;\n  top: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover {\n  margin-left: 5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  bottom: -15px;\n  left: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin-top: 5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  -webkit-border-radius: 3px 3px 0 0;\n  -moz-border-radius: 3px 3px 0 0;\n  -o-border-radius: 3px 3px 0 0;\n  border-radius: 3px 3px 0 0;\n  background: rgba(0, 0, 0, 0.85);\n  -webkit-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  bottom: 0;\n  display: none;\n  font-size: 16px;\n  height: 0;\n  margin: 0 5% 0 5%;\n  padding: 10px;\n  position: fixed;\n  width: 90%;\n  z-index: 1000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  background: rgba(247, 0, 119, 0.95);\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  color: #fff;\n  display: block;\n  font-size: 32px;\n  height: 46px;\n  left: 40px;\n  line-height: 50px;\n  overflow: hidden;\n  position: absolute;\n  text-align: center;\n  top: 25px;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  color: #fff;\n  line-height: 22px;\n  margin: 10px 90px 0 120px;\n  position: relative;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div a {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div a:hover {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #f70077;\n  -webkit-border-radius: 0 0 3px 3px;\n  -moz-border-radius: 0 0 3px 3px;\n  -o-border-radius: 0 0 3px 3px;\n  border-radius: 0 0 3px 3px;\n  color: #fff;\n  display: block;\n  font-size: 11px;\n  height: 24px;\n  line-height: 26px;\n  overflow: hidden;\n  position: absolute;\n  right: 50px;\n  text-align: center;\n  text-decoration: none;\n  top: 0;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  background: transparent url(\"../img/tlyguide/tlyguide_arrow.png\") 10px 4px no-repeat;\n  display: block;\n  height: 30px;\n  overflow: hidden;\n  text-indent: -999px;\n  width: 30px;\n  position: absolute;\n  top: 34px;\n  left: 10px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back {\n  -webkit-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -moz-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -o-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -ms-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  left: 90px;\n}\n.tlypageguide_shadow {\n  position: relative;\n}\n.tlypageguide_shadow:after {\n  background-color: rgba(247, 0, 119, 0.1);\n  -webkit-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  -moz-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  -o-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  content: \" \";\n  display: none;\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle {\n  -webkit-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  background: rgba(247, 0, 119, 0.9);\n  color: #fff;\n  right: 0 !important;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle a {\n  opacity: 1.0;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle div span {\n  margin: 0;\n}\n.tlypageguide-open .tlypageguide_shadow:after {\n  display: block;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.js",
    "content": "/*\n * Tracelytics PageGuide\n *\n * Copyright 2013 Tracelytics\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Contributing Author: Tracelytics Team\n */\n\n/*\n * PageGuide usage:\n *\n *   Preferences:\n *     auto_show_first - Whether or not to focus on the first visible item\n *                       immediately on PG open (default true)\n *     loading_selector - The CSS selector for the loading element. pageguide\n *                        will wait until this element is no longer visible\n *                        starting up.\n *     track_events_cb - Optional callback for tracking user interactions\n *                       with pageguide.  Should be a method taking a single\n *                       parameter indicating the name of the interaction.\n *                       (default none)\n *     handle_doc_switch - Optional callback to enlight or adapt interface\n *                         depending on current documented element. Should be a\n *                         function taking 2 parameters, current and previous\n *                         data-tourtarget selectors. (default null)\n *     custom_open_button - Optional id for toggling pageguide. Default null.\n *                          If not specified then the default button is used.\n *     pg_caption - Optional - Sets the visible caption\n */\ntl = window.tl || {};\ntl.pg = tl.pg || {};\n\ntl.pg.default_prefs = {\n    'auto_show_first': true,\n    'loading_selector' : '#loading',\n    'track_events_cb': function() { return; },\n    'handle_doc_switch': null,\n    'custom_open_button': null,\n    'pg_caption' : 'page guide'\n};\n\ntl.pg.init = function(preferences) {\n    if (typeof(preferences) === 'undefined') {\n        preferences = tl.pg.default_prefs;\n    }\n    \n    /* page guide object, for pages that have one */\n    if (jQuery(\"#tlyPageGuide\").length === 0) {\n        return;\n    }\n\n    var guide   = jQuery(\"#tlyPageGuide\"),\n        wrapper = jQuery('<div>', { id: 'tlyPageGuideWrapper' }),\n        message = jQuery('<div>', { id: 'tlyPageGuideMessages'});\n\n    message.append('<a href=\"#\" class=\"tlypageguide_close\" title=\"Close Guide\">close</a>')\n      .append('<span></span>')\n      .append('<div></div>')\n      .append('<a href=\"#\" class=\"tlypageguide_back\" title=\"Previous\">Previous</a>')\n      .append('<a href=\"#\" class=\"tlypageguide_fwd\" title=\"Next\">Next</a>');\n\n    if (preferences.custom_open_button == null) {\n        jQuery('<div/>', {\n            'title': 'Launch Page Guide',\n            'class': 'tlypageguide_toggle'\n        }).append(preferences.pg_caption)\n          .append('<div><span>' + guide.data('tourtitle') + '</span></div>')\n          .append('<a href=\"#\" class=\"tlypageguide_close\" title=\"close guide\">close guide &raquo;</a>').appendTo(wrapper);\n    }\n\n    wrapper.append(guide);\n    wrapper.append(message);\n    jQuery('body').append(wrapper);\n\n    var pg = new tl.pg.PageGuide(jQuery('#tlyPageGuideWrapper'), preferences);\n    pg.ready(function() {\n        pg.setup_handlers();\n        pg.$base.children(\".tlypageguide_toggle\").animate({ \"right\": \"-120px\" }, 250);\n    });\n    return pg;\n};\n\ntl.pg.PageGuide = function (pg_elem, preferences) {\n    this.preferences = jQuery.extend({}, tl.pg.default_prefs, preferences);\n    this.$base = pg_elem;\n    this.$all_items = jQuery('#tlyPageGuide > li', this.$base);\n    this.$items = jQuery([]); /* fill me with visible elements on pg expand */\n    this.$message = jQuery('#tlyPageGuideMessages');\n    this.$fwd = jQuery('a.tlypageguide_fwd', this.$base);\n    this.$back = jQuery('a.tlypageguide_back', this.$base);\n    this.cur_idx = 0;\n    this.track_event = this.preferences.track_events_cb;\n    this.handle_doc_switch = this.preferences.handle_doc_switch;\n    this.custom_open_button = this.preferences.custom_open_button;\n    this.is_open = false;\n};\n\ntl.pg.isScrolledIntoView = function(elem) {\n    var dvtop = jQuery(window).scrollTop(),\n        dvbtm = dvtop + jQuery(window).height(),\n        eltop = jQuery(elem).offset().top,\n        elbtm = eltop + jQuery(elem).height();\n\n    return (elbtm >= dvtop) && (eltop <= dvbtm - 100);\n};\n\ntl.pg.PageGuide.prototype.ready = function(callback) {\n    var that = this,\n        interval = window.setInterval(function() {\n            if (!jQuery(that.preferences.loading_selector).is(':visible')) {\n                callback();\n                clearInterval(interval);\n            }\n        }, 250);\n    return this;\n};\n\n/* to be executed on pg expand */\ntl.pg.PageGuide.prototype._on_expand = function () {\n    var that = this,\n        $d = document,\n        $w = window;\n\n    /* set up initial state */\n    this.position_tour();\n    this.cur_idx = 0;\n\n    // create a new stylesheet:\n    var ns = $d.createElement('style');\n    $d.getElementsByTagName('head')[0].appendChild(ns);\n\n    // keep Safari happy\n    if (!$w.createPopup) {\n        ns.appendChild($d.createTextNode(''));\n        ns.setAttribute(\"type\", \"text/css\");\n    }\n\n    // get a pointer to the stylesheet you just created\n    var sh = $d.styleSheets[$d.styleSheets.length - 1];\n\n    // space for IE rule set\n    var ie = \"\";\n\n    /* add number tags and PG shading elements */\n    this.$items.each(function(i) {\n        var $p = jQuery(jQuery(this).data('tourtarget') + \":visible:first\");\n        $p.addClass(\"tlypageguide_shadow tlypageguide_shadow\" + i);\n\n        var node_text = '.tlypageguide_shadow' + i + ':after { height: ' +\n                            $p.outerHeight() + 'px; width: ' + $p.outerWidth(false) + 'px; }';\n\n        if (!$w.createPopup) {\n            // modern browsers\n            var k = $d.createTextNode(node_text, 0);\n            ns.appendChild(k);\n        } else {\n            // for IE\n            ie += node_text;\n        }\n\n        jQuery(this).prepend('<ins>' + (i + 1) + '</ins>');\n        jQuery(this).data('idx', i);\n    });\n\n    // is IE? slam styles in all at once:\n    if ($w.createPopup) {\n        sh.cssText = ie;\n    }\n\n    /* decide to show first? */\n    if (this.preferences.auto_show_first && this.$items.length > 0) {\n        this.show_message(0);\n    }\n};\n\ntl.pg.PageGuide.prototype.open = function() {\n    if (this.is_open) {\n        return;\n    } else {\n        this.is_open = true;\n    }\n    \n    this.track_event('PG.open');\n\n    this._on_expand();\n    this.$items.toggleClass('expanded');\n    jQuery('body').addClass('tlypageguide-open');\n};\n\ntl.pg.PageGuide.prototype.close = function() {\n    if (!this.is_open) {\n        return;\n    } else {\n        this.is_open = false;\n    }\n    \n    this.track_event('PG.close');\n\n    this.$items.toggleClass('expanded');\n    this.$message.slideUp();\n    /*\n    this.$message.animate({ height: \"0\" }, 500, function() {\n        jQuery(this).hide();\n    });\n    */\n    /* clear number tags and shading elements */\n    jQuery('ins').remove();\n    jQuery('body').removeClass('tlypageguide-open');\n};\n\ntl.pg.PageGuide.prototype.setup_handlers = function () {\n    var that = this;\n\n    /* interaction: open/close PG interface */\n    var interactor = (that.custom_open_button == null) ? \n                    jQuery('.tlypageguide_toggle', this.$base) : \n                    jQuery(that.custom_open_button);\n    interactor.live('click', function() {\n        if (this.is_open) {\n            that.close();\n        } else {\n            that.open();\n        }\n        return false;\n    });\n\n    jQuery('.tlypageguide_close', this.$message.add($('.tlypageguide_toggle')))\n        .live('click', function() {\n            that.close();\n            return false;\n    });\n\n    /* interaction: item click */\n    this.$all_items.live('click', function() {\n        var new_index = jQuery(this).data('idx');\n\n        that.track_event('PG.specific_elt');\n        that.show_message(new_index);\n    });\n\n    /* interaction: fwd/back click */\n    this.$fwd.live('click', function() {\n        var new_index = (that.cur_idx + 1) % that.$items.length;\n\n        that.track_event('PG.fwd');\n        that.show_message(new_index);\n        return false;\n    });\n\n    this.$back.live('click', function() {\n        /*\n         * If -n < x < 0, then the result of x % n will be x, which is\n         * negative. To get a positive remainder, compute (x + n) % n.\n         */\n        var new_index = (that.cur_idx + that.$items.length - 1) % that.$items.length;\n\n        that.track_event('PG.back');\n        that.show_message(new_index, true);\n        return false;\n    });\n\n    /* register resize callback */\n    jQuery(window).resize(function() { that.position_tour(); });\n};\n\ntl.pg.PageGuide.prototype.show_message = function (new_index, left) {\n    var old_idx = this.cur_idx,\n        old_item = this.$items[old_idx],\n        new_item = this.$items[new_index];\n\n    this.cur_idx = new_index;\n    if(this.handle_doc_switch){\n        this.handle_doc_switch(jQuery(new_item).data('tourtarget'),\n                               jQuery(old_item).data('tourtarget'));\n    }\n\n    // modified to slide the message up/down on each step\n    var m = this.$message;\n    this.$message.slideUp(function(){\n    \tjQuery('div', m).html(jQuery(new_item).children('div').html());\n        m.slideDown();\n    });\n    \n    // original\n    //jQuery('div', this.$message).html(jQuery(new_item).children('div').html());\n    \n    this.$items.removeClass(\"tlypageguide-active\");\n    jQuery(new_item).addClass(\"tlypageguide-active\");\n\n    if (!tl.pg.isScrolledIntoView(jQuery(new_item))) {\n        jQuery('html,body').animate({scrollTop: jQuery(new_item).offset().top - 50}, 500);\n    }\n\n    //this.$message.not(':visible').show().animate({ 'height': '50px'}, 500);\n    this.$message.not(':visible').slideDown();\n    this.roll_number(jQuery('span', this.$message), jQuery(new_item).children('ins').html(), left);\n};\n\ntl.pg.PageGuide.prototype.roll_number = function (num_wrapper, new_text, left) {\n    num_wrapper.animate({ 'text-indent': (left ? '' : '-') + '50px' }, 'fast', function() {\n        num_wrapper.html(new_text);\n        num_wrapper.css({ 'text-indent': (left ? '-' : '') + '50px' }, 'fast').animate({ 'text-indent': \"0\" }, 'fast');\n    });\n};\n\ntl.pg.PageGuide.prototype.position_tour = function () {\n    /* set PG element positions for visible tourtargets */\n    this.$items = this.$all_items.filter(function () {\n        return jQuery(jQuery(this).data('tourtarget')).is(':visible');\n    });\n\n    this.$items.each(function() {\n        var arrow   = jQuery(this),\n            target  = jQuery(arrow.data('tourtarget')).filter(':visible:first'),\n            setLeft = target.offset().left,\n            setTop  = target.offset().top;\n\n        if (arrow.hasClass(\"tlypageguide_top\")) {\n            setTop -= 60;\n        } else if (arrow.hasClass(\"tlypageguide_bottom\")) {\n            setTop += target.outerHeight() + 15;\n        } else {\n            setTop += 5;\n        }\n\n        if (arrow.hasClass(\"tlypageguide_right\")) {\n            setLeft += target.outerWidth(false) + 15;\n        } else if (arrow.hasClass(\"tlypageguide_left\")) {\n            setLeft -= 65;\n        } else {\n            setLeft += 5;\n        }\n\n        arrow.css({ \"left\": setLeft + \"px\", \"top\": setTop + \"px\" });\n    });\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/other/pageguide/less/pageguide.less",
    "content": "/* Variables\n================================================== */\n\n    @pg-highlight-color: #f70077;\n\n/* Mixins\n================================================== */\n\n    .pg-rounded-corners (@radius: 5px) {\n        -webkit-border-radius: @radius;\n        -moz-border-radius: @radius;\n        -o-border-radius: @radius;\n        border-radius: @radius;\n    }\n\n    .pg-transition-animation (@prop: all, @time: 1s, @ease: linear) {\n        -webkit-transition: @prop @time @ease;\n        -moz-transition: @prop @time @ease;\n        -o-transition: @prop @time @ease;\n        -ms-transition: @prop @time @ease;\n        transition: @prop @time @ease;\n    }\n\n    .pg-icon-replacement (@imgtouse: \"pageguide.png\", @height: 20px, @width: 20px, @bgposition: 0 0) {\n        background: transparent url(@imgtouse) @bgposition no-repeat;\n        display: block;\n        height: @height;\n        overflow: hidden;\n        text-indent: -999px;\n        width: @width;\n    }\n\n    .pg-box-shadow (@x: 0, @y: 0, @blur: 5px, @spread: 0, @color: rgba(0, 0, 0, 0.5)) {\n        -webkit-box-shadow: @arguments;\n        -moz-box-shadow: @arguments;\n        -o-box-shadow: @arguments;\n        box-shadow: @arguments;\n    }\n\n    .pg-opacity(@op:100) {\n        filter:alpha(opacity=@op);\n        -moz-opacity:@op/100;\n        -khtml-opacity:@op/100;\n        opacity:@op/100;\n    }\n\n    .pg-transform (@rotate: 0deg, @scale: 1, @skewX: 0deg, @skewY: 0deg, @translate: 0px) {\n        -webkit-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -moz-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -o-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -ms-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n    }\n\n    .pg-border-box (){\n        -moz-box-sizing: border-box;\n        -webkit-box-sizing: border-box;\n        box-sizing: border-box;\n    }\n\n/* Page Guide\n================================================== */\n    #tlyPageGuideWrapper {\n        .pg-border-box;\n        color: #000;\n        font-size:12px;\n        font-family: Helvetica, Arial, sans serif;\n\n        .tlypageguide_toggle {\n            .pg-border-box;\n            background: rgba(0, 0, 0, 0.1);\n            .pg-rounded-corners(3px 0 0 3px);\n            clear: both;\n            color: #000000;\n            cursor: pointer;\n            display: block;\n            float: right;\n            font-size: 11px;\n            height: 50px;\n            line-height: 25px;\n            padding: 22px 6px 6px;\n            position: fixed;\n            right: -190px;\n            text-align: left;\n            text-decoration: none;\n            top: 84px;\n            width: 184px;\n            .pg-transition-animation(all, 0.2s, ease-in);\n\n            &:before {\n                .pg-icon-replacement(\"/img/tlyguide/tlyguide_icon.png\", 16px, 16px, 0 0);\n                content: \" \";\n                left: 25px;\n                position: absolute;\n                top: 8px;\n            }\n\n            div {\n                .pg-border-box;\n                border-left: 1px solid #fff;\n                display: block;\n                height: 33px;\n                line-height: 16px;\n                overflow: hidden;\n                padding: 2px 0 0 5px;\n                position: absolute;\n                right: -4px;\n                top: 6px;\n                width: 124px;\n\n                span {\n                    display: block;\n                    margin: 0 0 0 -118px;\n                    width: 115px;\n                    .pg-transition-animation(all, 0.2s, ease-in);\n                }\n            }\n\n            a {\n                bottom: -26px;\n                color: #000;\n                opacity: 0;\n                position: absolute;\n                right: 10px;\n                text-decoration: none;\n            }\n\n            &:hover {\n                background: rgba(0, 0, 0, 0.2);\n                right: 0 !important;\n\n                div span {\n                    margin: 0;\n                }\n            }\n        }\n\n        #tlyPageGuide {\n            list-style: none;\n            margin: 0 0 0 0;\n            padding: 0 0 0 0;\n\n            li {\n                background: fade(@pg-highlight-color, 30%);\n                .pg-box-shadow(0, 2px, 10px, 1px, rgba(0, 0, 0, 0.4));\n                .pg-transition-animation(~\"min-height, max-height\", 0.1s, ease-in-out);\n                .pg-opacity(0);\n                cursor: pointer;\n                display: block;\n                height: 46px;\n                line-height: 50px;\n                min-height: 0px;\n                max-height: 0px;\n                position: absolute;\n                text-align: center;\n                width: 50px;\n                z-index: 5000;\n\n                &.expanded {\n                    .pg-opacity(100);\n                    height:46px;\n                    min-height: 15px;\n                    max-height: 46px;\n\n                    &:after {\n                        display: block;\n                    }\n                }\n\n\n                ins {\n                    background: none;\n                    color: #fff;\n                    display: block;\n                    font-size: 32px;\n                    overflow: hidden;\n                    text-decoration: none;\n                    width: 50px;\n                }\n\n                div {\n                    display: none;\n                }\n\n                &:after {\n                    content: \" \";\n                    display: none;\n                    height: 0;\n                    left: 0;\n                    position: absolute;\n                    top: -15px;\n                    width: 0;\n                    border-top: none;\n                    border-right: none;\n                    border-bottom: none;\n                    border-left: none;\n                    top: auto;\n                    left: auto;\n                    right: auto;\n                }\n\n                &.tlypageguide-active {\n                    background: fade(@pg-highlight-color, 95%);\n\n                    &.tlypageguide_bottom:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 95%);\n                    }\n\n                    &.tlypageguide_right,\n                    &.tlypageguide_left,\n                    &.tlypageguide_top {\n                        &:after {\n                            border-top: 15px solid fade(@pg-highlight-color, 95%);\n                        }\n                    }\n                }\n\n                &.tlypageguide_bottom {\n                    &:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        left: 0;\n                        top: -15px;\n                    }\n                    &:hover { margin-top: -5px; }\n                }\n\n                &.tlypageguide_right {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-left: 15px solid transparent;\n                        left: -15px;\n                        top: 0;\n                    }\n                    &:hover { margin-left: -5px; }\n                }\n\n                &.tlypageguide_left {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        right: -15px;\n                        top: 0;\n                    }\n                    &:hover { margin-left: 5px; }\n                }\n\n                &.tlypageguide_top {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        bottom: -15px;\n                        left: 0;\n                    }\n                    &:hover { margin-top: 5px; }\n                }\n\n                &:hover {\n                    background: fade(@pg-highlight-color, 95%);\n\n                    &.tlypageguide_bottom:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 95%);\n                    }\n\n                    &.tlypageguide_right,\n                    &.tlypageguide_left,\n                    &.tlypageguide_top {\n                        &:after {\n                            border-top: 15px solid fade(@pg-highlight-color, 95%);\n                        }\n                    }\n                }\n            }\n        }\n\n        #tlyPageGuideMessages {\n            .pg-rounded-corners(3px 3px 0 0);\n            background: rgba(0, 0, 0, 0.85);\n            .pg-box-shadow(0, 0, 9px, 4px, rgba(0, 0, 0, 0.4));\n            bottom: 0;\n            display: none;\n            font-size: 16px;\n            height: 0;\n            margin: 0 5% 0 5%;\n            padding: 10px;\n            position: fixed;\n            width: 90%;\n            z-index: 1000;\n\n            span {\n                background: fade(@pg-highlight-color, 95%);\n                .pg-rounded-corners(3px);\n                color: #fff;\n                display: block;\n                font-size: 32px;\n                height: 46px;\n                left: 40px;\n                line-height: 50px;\n                overflow: hidden;\n                position: absolute;\n                text-align: center;\n                top: 25px;\n                width: 50px;\n            }\n\n            div {\n                color: #fff;\n                line-height: 22px;\n                margin: 10px 90px 0 120px;\n                position: relative;\n\n                a {\n                    color: #fff;\n\n                    &:hover {\n                        color: #fff;\n                    }\n                }\n            }\n\n            .tlypageguide_close {\n                background: @pg-highlight-color;\n                .pg-rounded-corners(0 0 3px 3px);\n                color: #fff;\n                display: block;\n                font-size: 11px;\n                height: 24px;\n                line-height: 26px;\n                overflow: hidden;\n                position: absolute;\n                right: 50px;\n                text-align: center;\n                text-decoration: none;\n                top: 0;\n                width: 50px;\n            }\n\n            .tlypageguide_back,\n            .tlypageguide_fwd {\n                .pg-icon-replacement (\"/img/tlyguide/tlyguide_arrow.png\", 30px, 30px, 10px 4px);\n                position: absolute;\n                top: 34px;\n                left: 10px;\n            }\n\n            .tlypageguide_back {\n                .pg-transform(-180deg, 1, 0, 0, 0);\n            }\n\n            .tlypageguide_fwd {\n                left: 90px;\n            }\n        }\n    }\n\n    .tlypageguide_shadow {\n        position: relative;\n\n        &:after {\n            background-color: fade(@pg-highlight-color, 10%);\n            .pg-box-shadow(0, 0, 1px, 1px, rgba(147, 0, 119, 0.25));\n            content: \" \";\n            display: none;\n            position: absolute;\n            top: 0;\n            left: 0;\n        }\n    }\n\n    .tlypageguide-open {\n\n        #tlyPageGuideWrapper {\n\n            .tlypageguide_toggle {\n                .pg-box-shadow(6px, 4px, 5px, 0, rgba(0, 0, 0, 0.4));\n                background: fade(@pg-highlight-color, 90%);\n                color: #fff;\n                right: 0 !important;\n\n                a {\n                    opacity: 1.0;\n                }\n\n                div span {\n                    margin: 0;\n                }\n            }\n        }\n\n        .tlypageguide_shadow:after {\n            display: block;\n        }\n    }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-12\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }\n.ui-widget-content a { color: #222222; }\n.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }\n.ui-widget-header a { color: #222222; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }\n.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/AUTHORS.txt",
    "content": "Authors ordered by first contribution\nA list of current team members is available at http://jqueryui.com/about\n\nPaul Bakaus <paul.bakaus@googlemail.com>\nRichard Worth <rdworth@gmail.com>\nYehuda Katz <wycats@gmail.com>\nSean Catchpole <sean@sunsean.com>\nJohn Resig <jeresig@gmail.com>\nTane Piper <piper.tane@gmail.com>\nDmitri Gaskin <dmitrig01@gmail.com>\nKlaus Hartl <klaus.hartl@googlemail.com>\nStefan Petre <stefan.petre@gmail.com>\nGilles van den Hoven <gilles@webunity.nl>\nMicheil Bryan Smith <micheil@brandedcode.com>\nJörn Zaefferer <joern.zaefferer@gmail.com>\nMarc Grabanski <m@marcgrabanski.com>\nKeith Wood <kbwood.au@gmail.com>\nBrandon Aaron <brandon.aaron@gmail.com>\nScott González <scott.gonzalez@gmail.com>\nEduardo Lundgren <eduardolundgren@gmail.com>\nAaron Eisenberger <aaronchi@gmail.com>\nJoan Piedra <theneojp@gmail.com>\nBruno Basto <b.basto@gmail.com>\nRemy Sharp <remy@leftlogic.com>\nBohdan Ganicky <bohdan.ganicky@gmail.com>\nDavid Bolter <david.bolter@gmail.com>\nChi Cheng <cloudream@gmail.com>\nCa-Phun Ung <pazu2k@gmail.com>\nAriel Flesler <aflesler@gmail.com>\nMaggie Costello Wachs <fg.maggie@gmail.com>\nScott Jehl <scott@scottjehl.com>\nTodd Parker <fg.todd@gmail.com>\nAndrew Powell <powella@gmail.com>\nBrant Burnett <btburnett3@gmail.com>\nDouglas Neiner <doug@pixelgraphics.us>\nPaul Irish <paul.irish@gmail.com>\nRalph Whitbeck <ralph.whitbeck@gmail.com>\nThibault Duplessis <thibault.duplessis@gmail.com>\nDominique Vincent <dominique.vincent@toitl.com>\nJack Hsu <jack.hsu@gmail.com>\nAdam Sontag <ajpiano@ajpiano.com>\nCarl Fürstenberg <carl@excito.com>\nKevin Dalman <development@allpro.net>\nAlberto Fernández Capel <afcapel@gmail.com>\nJacek Jędrzejewski (http://jacek.jedrzejewski.name)\nTing Kuei <ting@kuei.com>\nSamuel Cormier-Iijima <sam@chide.it>\nJon Palmer <jonspalmer@gmail.com>\nBen Hollis <bhollis@amazon.com>\nJustin MacCarthy <Justin@Rubystars.biz>\nEyal Kobrigo <kobrigo@hotmail.com>\nTiago Freire <tiago.freire@gmail.com>\nDiego Tres <diegotres@gmail.com>\nHolger Rüprich <holger@rueprich.de>\nZiling Zhao <zizhao@cisco.com>\nMike Alsup <malsup@gmail.com>\nRobson Braga Araujo <robsonbraga@gmail.com>\nPierre-Henri Ausseil <ph.ausseil@gmail.com>\nChristopher McCulloh <cmcculloh@gmail.com>\nAndrew Newcomb <ext.github@preceptsoftware.co.uk>\nLim Chee Aun <cheeaun@gmail.com>\nJorge Barreiro <yortx.barry@gmail.com>\nDaniel Steigerwald <daniel@steigerwald.cz>\nJohn Firebaugh <john_firebaugh@bigfix.com>\nJohn Enters <github@darkdark.net>\nAndrey Kapitcyn <ru.m157y@gmail.com>\nDmitry Petrov <dpetroff@gmail.com>\nEric Hynds <eric@hynds.net>\nChairat Sunthornwiphat <pipo@sixhead.com>\nJosh Varner <josh.varner@gmail.com>\nStéphane Raimbault <stephane.raimbault@gmail.com>\nJay Merrifield <fracmak@gmail.com>\nJ. Ryan Stinnett <jryans@gmail.com>\nPeter Heiberg <peter@heiberg.se>\nAlex Dovenmuehle <adovenmuehle@gmail.com>\nJamie Gegerson <git@jamiegegerson.com>\nRaymond Schwartz <skeetergraphics@gmail.com>\nPhillip Barnes <philbar@gmail.com>\nKyle Wilkinson <kai@wikyd.org>\nKhaled AlHourani <me@khaledalhourani.com>\nMarian Rudzynski <mr@impaled.org>\nJean-Francois Remy <jfremy@virtuoz.com>\nDoug Blood <dougblood@gmail.com>\nFilippo Cavallarin <filippo.cavallarin@codseq.it>\nHeiko Henning <h.henning@educa.ch>\nAliaksandr Rahalevich <saksmlz@gmail.com>\nMario Visic <mario@mariovisic.com>\nXavi Ramirez <xavi.rmz@gmail.com>\nMax Schnur <max.schnur@gmail.com>\nSaji Nediyanchath <saji89@gmail.com>\nCorey Frang <gnarf@gnarf.net>\nAaron Peterson <aaronp123@yahoo.com>\nIvan Peters <ivan@ivanpeters.com>\nMohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>\nMarcos Sousa <falecomigo@marcossousa.com>\nMichael DellaNoce <mdellanoce@mailtrust.com>\nGeorge Marshall <echosx@gmail.com>\nTobias Brunner <tobias@strongswan.org>\nMartin Solli <msolli@gmail.com>\nDavid Petersen <public@petersendidit.com>\nDan Heberden <danheberden@gmail.com>\nWilliam Kevin Manire <williamkmanire@gmail.com>\nGilmore Davidson <gilmoreorless@gmail.com>\nMichael Wu <michaelmwu@gmail.com>\nAdam Parod <mystic414@gmail.com>\nGuillaume Gautreau <guillaume+github@ghusse.com>\nMarcel Toele <EleotleCram@gmail.com>\nDan Streetman <ddstreet@ieee.org>\nMatt Hoskins <furlined@cat-basket.org>\nGiovanni Giacobbi <giovanni@giacobbi.net>\nKyle Florence <kyle.florence@gmail.com>\nPavol Hluchý <lopo@losys.sk>\nHans Hillen <hans.hillen@gmail.com>\nMark Johnson <virgofx@live.com>\nTrey Hunner <treyhunner@gmail.com>\nShane Whittet <whittet@gmail.com>\nEdward A Faulkner <ef@alum.mit.edu>\nAdam Baratz <adam@adambaratz.com>\nKato Kazuyoshi <kato.kazuyoshi@gmail.com>\nEike Send <eike.send@gmail.com>\nKris Borchers <kris.borchers@gmail.com>\nEddie Monge <eddie@eddiemonge.com>\nIsrael Tsadok <itsadok@gmail.com>\nCarson McDonald <carson@ioncannon.net>\nJason Davies <jason@jasondavies.com>\nGarrison Locke <gplocke@gmail.com>\nDavid Murdoch <musicisair@yahoo.com>\nBenjamin Scott Boyle <benjamins.boyle@gmail.com>\nJesse Baird <jebaird@gmail.com>\nJonathan Vingiano <jvingiano@gmail.com>\nDylan Just <dev@ephox.com>\nHiroshi Tomita <tomykaira@gmail.com>\nGlenn Goodrich <glenn.goodrich@gmail.com>\nTarafder Ashek-E-Elahi <mail.ashek@gmail.com>\nRyan Neufeld <ryan@neufeldmail.com>\nMarc Neuwirth <marc.neuwirth@gmail.com>\nPhilip Graham <philip.robert.graham@gmail.com>\nBenjamin Sterling <benjamin.sterling@kenzomedia.com>\nWesley Walser <waw325@gmail.com>\nKouhei Sutou <kou@clear-code.com>\nKarl Kirch <karlkrch@gmail.com>\nChris Kelly <ckdake@ckdake.com>\nJay Oster <jay@loyalize.com>\nAlexander Polomoshnov <alex.polomoshnov@gmail.com>\nDavid Leal <dgleal@gmail.com>\nIgor Milla <igor.fsp.milla@gmail.com>\nDave Methvin <dave.methvin@gmail.com>\nFlorian Gutmann <f.gutmann@chronimo.com>\nMarwan Al Jubeh <marwan.aljubeh@gmail.com>\nMilan Broum <midlis@googlemail.com>\nSebastian Sauer <info@dynpages.de>\nGaëtan Muller <m.gaetan89@gmail.com>\nMichel Weimerskirch <michel@weimerskirch.net>\nWilliam Griffiths <william@ycymro.com>\nStojce Slavkovski <stojce@gmail.com>\nDavid Soms <david.soms@gmail.com>\nDavid De Sloovere <david.desloovere@hotmail.com>\nMichael P. Jung <michael.jung@terreon.de>\nShannon Pekary <spekary@gmail.com>\nMatthew Edward Hutton <meh@corefiling.co.uk>\nJames Khoury <james@jameskhoury.com>\nRob Loach <robloach@gmail.com>\nAlberto Monteiro <betimbrasil@gmail.com>\nAlex Rhea <alex.rhea@gmail.com>\nKrzysztof Rosiński <rozwell69@gmail.com>\nRyan Olton <oltonr@gmail.com>\nGenie <386@mail.com>\nRick Waldron <waldron.rick@gmail.com>\nIan Simpson <spoonlikesham@gmail.com>\nLev Kitsis <spam4lev@gmail.com>\nTed VanToll <tj.vantoll@gmail.com>\nJustin Domnitz <jdomnitz@gmail.com>\nDouglas Cerna <douglascerna@yahoo.com>\nBert ter Heide <bertjh@hotmail.com>\nJasvir Nagra <jasvir@gmail.com>\nPetr Hromadko <yuriy@tokyoscale.com>\nHarri Kilpiö <harri.kilpio@gmail.com>\nLado Lomidze <lado.lomidze@gmail.com>\nAmir E. Aharoni <amir.aharoni@mail.huji.ac.il>\nSimon Sattes <simon.sattes@gmail.com>\nJo Liss <joliss42@gmail.com>\nGuntupalli Karunakar <karunakarg@yahoo.com>\nShahyar Ghobadpour <shahyar@gmail.com>\nLukasz Lipinski <uzza17@gmail.com>\nTimo Tijhof <krinklemail@gmail.com>\nJason Moon <jmoon@socialcast.com>\nMartin Frost <martinf55@hotmail.com>\nEneko Illarramendi <eneko@illarra.com>\nEungJun Yi <semtlenori@gmail.com>\nCourtland Allen <courtlandallen@gmail.com>\nViktar Varvanovich <non4eg@gmail.com>\nDanny Trunk <dtrunk90@gmail.com>\nPavel Stetina <pavel.stetina@nangu.tv>\nMichael Stay <metaweta@gmail.com>\nSteven Roussey <sroussey@gmail.com>\nMichael Hollis <hollis21@gmail.com>\nLee Rowlands <lee.rowlands@previousnext.com.au>\nTimmy Willison <timmywillisn@gmail.com>\nKarl Swedberg <kswedberg@gmail.com>\nBaoju Yuan <the_guy_1987@hotmail.com>\nMaciej Mroziński <mrozik87@gmail.com>\nLuis Dalmolin <luis.nh@gmail.com>\nMark Aaron Shirley <maspwr@gmail.com>\nMartin Hoch <martin@fidion.de>\nJiayi Yang <tr870829@gmail.com>\nPhilipp Benjamin Köppchen <xgxtpbk@gws.ms>\nSindre Sorhus <sindresorhus@gmail.com>\nBernhard Sirlinger <bernhard.sirlinger@tele2.de>\nJared A. Scheel <jared@jaredscheel.com>\nRafael Xavier de Souza <rxaviers@gmail.com>\nJohn Chen <zhang.z.chen@intel.com>\nDale Kocian <dale.kocian@gmail.com>\nMike Sherov <mike.sherov@gmail.com>\nAndrew Couch <andy@couchand.com>\nMarc-Andre Lafortune <github@marc-andre.ca>\nAvinash R <nashpapa@gmail.com>\nCory Gackenheimer <cory.gack@gmail.com>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/MIT-LICENSE.txt",
    "content": "Copyright 2012 jQuery Foundation and other contributors,\nhttp://jqueryui.com/\n\nThis software consists of voluntary contributions made by many\nindividuals (AUTHORS.txt, http://jqueryui.com/about) For exact\ncontribution history, see the revision history and logs, available\nat http://jquery-ui.googlecode.com/svn/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/README.md",
    "content": "[jQuery UI](http://jqueryui.com/) - Interactions and Widgets for the web\n================================\n\njQuery UI provides interactions like Drag and Drop and widgets like Autocomplete, Tabs and Slider and makes these as easy to use as jQuery itself.\n\nIf you want to use jQuery UI, go to [jqueryui.com](http://jqueryui.com) to get started. Or visit the [Using jQuery UI Forum](http://forum.jquery.com/using-jquery-ui) for discussions and questions.\n\nIf you are interested in helping develop jQuery UI, you are in the right place.\nTo discuss development with team members and the community, visit the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui) or in #jquery on irc.freednode.net.\n\n\nFor contributors\n---\n\nIf you want to help and provide a patch for a bugfix or new feature, please take\na few minutes and look at [our Getting Involved guide](http://wiki.jqueryui.com/w/page/35263114/Getting-Involved).\nIn particular check out the [Coding standards](http://wiki.jqueryui.com/w/page/12137737/Coding-standards)\nand [Commit Message Style Guide](http://wiki.jqueryui.com/w/page/25941597/Commit-Message-Style-Guide).\n\nIn general, fork the project, create a branch for a specific change and send a\npull request for that branch. Don't mix unrelated changes. You can use the commit\nmessage as the description for the pull request.\n\n\nRunning the Unit Tests\n---\n\nRun the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:\n\n- Windows: [WAMP download](http://www.wampserver.com/en/)\n- Mac: [MAMP download](http://www.mamp.info/en/index.html)\n- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)\n- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)\n\n\nBuilding jQuery UI\n---\n\njQuery UI uses the [grunt](http://github.com/cowboy/grunt) build system. Building jQuery UI requires node.js and a command line zip program.\n\nInstall grunt.\n\n`npm install grunt -g`\n\nClone the jQuery UI git repo.\n\n`git clone git://github.com/jquery/jquery-ui.git`\n\n`cd jquery-ui`\n\nInstall node modules.\n\n`npm install`\n\nRun grunt.\n\n`grunt build`\n\nThere are many other tasks that can be run through grunt. For a list of all tasks:\n\n`grunt --help`\n\n\nFor committers\n---\n\nWhen looking at pull requests, first check for [proper commit messages](http://wiki.jqueryui.com/w/page/12137724/Bug-Fixing-Guide).\n\nDo not merge pull requests directly through GitHub's interface.\nMost pull requests are a single commit; cherry-picking will avoid creating a merge commit.\nIt's also common for contributors to make minor fixes in an additional one or two commits.\nThese should be squashed before landing in master.\n\n**Make sure the author has a valid name and email address associated with the commit.**\n\nFetch the remote first:\n\n    git fetch [their-fork.git] [their-branch]\n\nThen cherry-pick the commit(s):\n\n\tgit cherry-pick [sha-of-commit]\n\nIf you need to edit the commit message:\n\n    git cherry-pick -e [sha-of-commit]\n\nIf you need to edit the changes:\n\n\tgit cherry-pick -n [sha-of-commit]\n\t# make changes\n\tgit commit --author=\"[author-name-and-email]\"\n\nIf it should go to the stable brach, cherry-pick it to stable:\n\n    git checkout 1-8-stable\n    git cherry-pick -x [sha-of-commit-from-master]\n\n*NOTE: Do not cherry-pick into 1-8-stable until you have pushed the commit from master upstream.*\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/collapsible.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Collapse content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\tcollapsible: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>By default, accordions always keep one section open. To allow for all sections to be be collapsible, set the <code>collapsible</code> option to true. Click on the currently open section to collapse its content pane.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/custom-icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Customize icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar icons = {\n\t\t\theader: \"ui-icon-circle-arrow-e\",\n\t\t\tactiveHeader: \"ui-icon-circle-arrow-s\"\n\t\t};\n\t\t$( \"#accordion\" ).accordion({\n\t\t\ticons: icons\n\t\t});\n\t\t$( \"#toggle\" ).button().click(function() {\n\t\t\tif ( $( \"#accordion\" ).accordion( \"option\", \"icons\" ) ) {\n\t\t\t\t$( \"#accordion\" ).accordion( \"option\", \"icons\", null );\n\t\t\t} else {\n\t\t\t\t$( \"#accordion\" ).accordion( \"option\", \"icons\", icons );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t</div>\n</div>\n\n<button id=\"toggle\">Toggle icons</button>\n\n<div class=\"demo-description\">\n<p>Customize the header icons with the <code>icons</code> option, which accepts classes for the header's default and active (open) state.  Use any class from the UI CSS framework, or create custom classes with background images.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>\n\t\tMauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer\n\t\tut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit\n\t\tamet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut\n\t\todio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.\n\t\t</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>\n\t\tSed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet\n\t\tpurus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor\n\t\tvelit, faucibus interdum tellus libero ac justo. Vivamus non quam. In\n\t\tsuscipit faucibus urna.\n\t\t</p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>\n\t\tNam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.\n\t\tPhasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero\n\t\tac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis\n\t\tlacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.\n\t\t</p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>\n\t\tCras dictum. Pellentesque habitant morbi tristique senectus et netus\n\t\tet malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in\n\t\tfaucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia\n\t\tmauris vel est.\n\t\t</p>\n\t\t<p>\n\t\tSuspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.\n\t\tClass aptent taciti sociosqu ad litora torquent per conubia nostra, per\n\t\tinceptos himenaeos.\n\t\t</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>\nClick headers to expand/collapse content that is broken into logical sections, much like tabs.\nOptionally, toggle sections open/closed on mouseover.\n</p>\n<p>\nThe underlying HTML markup is a series of headers (H3 tags) and content divs so the content is\nusable without JavaScript.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/fillspace.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Fill space</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#accordion-resizer {\n\t\tpadding: 10px;\n\t\twidth: 350px;\n\t\theight: 220px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\theightStyle: \"fill\"\n\t\t});\n\t});\n\t$(function() {\n\t\t$( \"#accordion-resizer\" ).resizable({\n\t\t\tminHeight: 140,\n\t\t\tminWidth: 200,\n\t\t\tresize: function() {\n\t\t\t\t$( \"#accordion\" ).accordion( \"refresh\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Resize the outer container:</h3>\n\n<div id=\"accordion-resizer\" class=\"ui-widget-content\">\n\t<div id=\"accordion\">\n\t\t<h3>Section 1</h3>\n\t\t<div>\n\t\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t\t</div>\n\t\t<h3>Section 2</h3>\n\t\t<div>\n\t\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t\t</div>\n\t\t<h3>Section 3</h3>\n\t\t<div>\n\t\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t\t<ul>\n\t\t\t\t<li>List item one</li>\n\t\t\t\t<li>List item two</li>\n\t\t\t\t<li>List item three</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h3>Section 4</h3>\n\t\t<div>\n\t\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Because the accordion is comprised of block-level elements, by default its width fills the available horizontal space. To fill the vertical space allocated by its container, set the <code>heightStyle</code> option to <code>\"fill\"</code>, and the script will automatically set the dimensions of the accordion to the height of its parent container.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/hoverintent.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Open on hoverintent</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\tevent: \"click hoverintent\"\n\t\t});\n\t});\n\n\tvar cfg = ($.hoverintent = {\n\t\tsensitivity: 7,\n\t\tinterval: 100\n\t});\n\n\t$.event.special.hoverintent = {\n\t\tsetup: function() {\n\t\t\t$( this ).bind( \"mouseover\", jQuery.event.special.hoverintent.handler );\n\t\t},\n\t\tteardown: function() {\n\t\t\t$( this ).unbind( \"mouseover\", jQuery.event.special.hoverintent.handler );\n\t\t},\n\t\thandler: function( event ) {\n\t\t\tvar that = this,\n\t\t\t\targs = arguments,\n\t\t\t\ttarget = $( event.target ),\n\t\t\t\tcX, cY, pX, pY;\n\n\t\t\tfunction track( event ) {\n\t\t\t\tcX = event.pageX;\n\t\t\t\tcY = event.pageY;\n\t\t\t};\n\t\t\tpX = event.pageX;\n\t\t\tpY = event.pageY;\n\t\t\tfunction clear() {\n\t\t\t\ttarget\n\t\t\t\t\t.unbind( \"mousemove\", track )\n\t\t\t\t\t.unbind( \"mouseout\", arguments.callee );\n\t\t\t\tclearTimeout( timeout );\n\t\t\t}\n\t\t\tfunction handler() {\n\t\t\t\tif ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.sensitivity ) {\n\t\t\t\t\tclear();\n\t\t\t\t\tevent.type = \"hoverintent\";\n\t\t\t\t\t// prevent accessing the original event since the new event\n\t\t\t\t\t// is fired asynchronously and the old event is no longer\n\t\t\t\t\t// usable (#6028)\n\t\t\t\t\tevent.originalEvent = {};\n\t\t\t\t\tjQuery.event.handle.apply( that, args );\n\t\t\t\t} else {\n\t\t\t\t\tpX = cX;\n\t\t\t\t\tpY = cY;\n\t\t\t\t\ttimeout = setTimeout( handler, cfg.interval );\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar timeout = setTimeout( handler, cfg.interval );\n\t\t\ttarget.mousemove( track ).mouseout( clear );\n\t\t\treturn true;\n\t\t}\n\t};\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>\n\t\tMauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer\n\t\tut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit\n\t\tamet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut\n\t\todio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.\n\t\t</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>\n\t\tSed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet\n\t\tpurus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor\n\t\tvelit, faucibus interdum tellus libero ac justo. Vivamus non quam. In\n\t\tsuscipit faucibus urna.\n\t\t</p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>\n\t\tNam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.\n\t\tPhasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero\n\t\tac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis\n\t\tlacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.\n\t\t</p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>\n\t\tCras dictum. Pellentesque habitant morbi tristique senectus et netus\n\t\tet malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in\n\t\tfaucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia\n\t\tmauris vel est.\n\t\t</p>\n\t\t<p>\n\t\tSuspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.\n\t\tClass aptent taciti sociosqu ad litora torquent per conubia nostra, per\n\t\tinceptos himenaeos.\n\t\t</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>\nClick headers to expand/collapse content that is broken into logical sections, much like tabs.\nOptionally, toggle sections open/closed on mouseover.\n</p>\n<p>\nThe underlying HTML markup is a series of headers (H3 tags) and content divs so the content is\nusable without JavaScript.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"fillspace.html\">Fill space</a></li>\n\t<li><a href=\"no-auto-height.html\">No auto height</a></li>\n\t<li><a href=\"collapsible.html\">Collapse content</a></li>\n\t<li><a href=\"hoverintent.html\">Open on hoverintent</a></li>\n\t<li><a href=\"custom-icons.html\">Customize icons</a></li>\n\t<li><a href=\"sortable.html\">Sortable</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/no-auto-height.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - No auto height</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\theightStyle: \"content\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, susceros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t</ul>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Setting <code>heightStyle: \"content\"</code> allows the accordion panels to keep their native height.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t/* IE has layout issues when sorting (see #5413) */\n\t.group { zoom: 1 }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" )\n\t\t\t.accordion({\n\t\t\t\theader: \"> div > h3\"\n\t\t\t})\n\t\t\t.sortable({\n\t\t\t\taxis: \"y\",\n\t\t\t\thandle: \"h3\",\n\t\t\t\tstop: function( event, ui ) {\n\t\t\t\t\t// IE doesn't register the blur when sorting\n\t\t\t\t\t// so trigger focusout handlers to remove .ui-state-focus\n\t\t\t\t\tui.item.children( \"h3\" ).triggerHandler( \"focusout\" );\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<div class=\"group\">\n\t\t<h3>Section 1</h3>\n\t\t<div>\n\t\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 2</h3>\n\t\t<div>\n\t\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 3</h3>\n\t\t<div>\n\t\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t\t<ul>\n\t\t\t\t<li>List item one</li>\n\t\t\t\t<li>List item two</li>\n\t\t\t\t<li>List item three</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 4</h3>\n\t\t<div>\n\t\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Drag the header to re-order panels.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/categories.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Categories</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-category {\n\t\tfont-weight: bold;\n\t\tpadding: .2em .4em;\n\t\tmargin: .8em 0 .2em;\n\t\tline-height: 1.5;\n\t}\n\t</style>\n\t<script>\n\t$.widget( \"custom.catcomplete\", $.ui.autocomplete, {\n\t\t_renderMenu: function( ul, items ) {\n\t\t\tvar that = this,\n\t\t\t\tcurrentCategory = \"\";\n\t\t\t$.each( items, function( index, item ) {\n\t\t\t\tif ( item.category != currentCategory ) {\n\t\t\t\t\tul.append( \"<li class='ui-autocomplete-category'>\" + item.category + \"</li>\" );\n\t\t\t\t\tcurrentCategory = item.category;\n\t\t\t\t}\n\t\t\t\tthat._renderItemData( ul, item );\n\t\t\t});\n\t\t}\n\t});\n\t</script>\n\t<script>\n\t$(function() {\n\t\tvar data = [\n\t\t\t{ label: \"anders\", category: \"\" },\n\t\t\t{ label: \"andreas\", category: \"\" },\n\t\t\t{ label: \"antal\", category: \"\" },\n\t\t\t{ label: \"annhhx10\", category: \"Products\" },\n\t\t\t{ label: \"annk K12\", category: \"Products\" },\n\t\t\t{ label: \"annttop C13\", category: \"Products\" },\n\t\t\t{ label: \"anders andersson\", category: \"People\" },\n\t\t\t{ label: \"andreas andersson\", category: \"People\" },\n\t\t\t{ label: \"andreas johnson\", category: \"People\" }\n\t\t];\n\n\t\t$( \"#search\" ).catcomplete({\n\t\t\tdelay: 0,\n\t\t\tsource: data\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<label for=\"search\">Search: </label>\n<input id=\"search\">\n\n<div class=\"demo-description\">\n<p>A categorized search result. Try typing \"a\" or \"n\".</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/combobox.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Combobox</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-combobox {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\t.ui-combobox-toggle {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tmargin-left: -1px;\n\t\tpadding: 0;\n\t\t/* adjust styles for IE 6/7 */\n\t\t*height: 1.7em;\n\t\t*top: 0.1em;\n\t}\n\t.ui-combobox-input {\n\t\tmargin: 0;\n\t\tpadding: 0.3em;\n\t}\n\t</style>\n\t<script>\n\t(function( $ ) {\n\t\t$.widget( \"ui.combobox\", {\n\t\t\t_create: function() {\n\t\t\t\tvar input,\n\t\t\t\t\tthat = this,\n\t\t\t\t\tselect = this.element.hide(),\n\t\t\t\t\tselected = select.children( \":selected\" ),\n\t\t\t\t\tvalue = selected.val() ? selected.text() : \"\",\n\t\t\t\t\twrapper = this.wrapper = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-combobox\" )\n\t\t\t\t\t\t.insertAfter( select );\n\n\t\t\t\tfunction removeIfInvalid(element) {\n\t\t\t\t\tvar value = $( element ).val(),\n\t\t\t\t\t\tmatcher = new RegExp( \"^\" + $.ui.autocomplete.escapeRegex( value ) + \"$\", \"i\" ),\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\tselect.children( \"option\" ).each(function() {\n\t\t\t\t\t\tif ( $( this ).text().match( matcher ) ) {\n\t\t\t\t\t\t\tthis.selected = valid = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif ( !valid ) {\n\t\t\t\t\t\t// remove invalid value, as it didn't match anything\n\t\t\t\t\t\t$( element )\n\t\t\t\t\t\t\t.val( \"\" )\n\t\t\t\t\t\t\t.attr( \"title\", value + \" didn't match any item\" )\n\t\t\t\t\t\t\t.tooltip( \"open\" );\n\t\t\t\t\t\tselect.val( \"\" );\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tinput.tooltip( \"close\" ).attr( \"title\", \"\" );\n\t\t\t\t\t\t}, 2500 );\n\t\t\t\t\t\tinput.data( \"autocomplete\" ).term = \"\";\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinput = $( \"<input>\" )\n\t\t\t\t\t.appendTo( wrapper )\n\t\t\t\t\t.val( value )\n\t\t\t\t\t.attr( \"title\", \"\" )\n\t\t\t\t\t.addClass( \"ui-state-default ui-combobox-input\" )\n\t\t\t\t\t.autocomplete({\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t\tminLength: 0,\n\t\t\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), \"i\" );\n\t\t\t\t\t\t\tresponse( select.children( \"option\" ).map(function() {\n\t\t\t\t\t\t\t\tvar text = $( this ).text();\n\t\t\t\t\t\t\t\tif ( this.value && ( !request.term || matcher.test(text) ) )\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: text.replace(\n\t\t\t\t\t\t\t\t\t\t\tnew RegExp(\n\t\t\t\t\t\t\t\t\t\t\t\t\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\t\t\t\t\t\t\t\t\t\t\t$.ui.autocomplete.escapeRegex(request.term) +\n\t\t\t\t\t\t\t\t\t\t\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\"\n\t\t\t\t\t\t\t\t\t\t\t), \"<strong>$1</strong>\" ),\n\t\t\t\t\t\t\t\t\t\tvalue: text,\n\t\t\t\t\t\t\t\t\t\toption: this\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}) );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\t\tui.item.option.selected = true;\n\t\t\t\t\t\t\tthat._trigger( \"selected\", event, {\n\t\t\t\t\t\t\t\titem: ui.item.option\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchange: function( event, ui ) {\n\t\t\t\t\t\t\tif ( !ui.item )\n\t\t\t\t\t\t\t\treturn removeIfInvalid( this );\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.addClass( \"ui-widget ui-widget-content ui-corner-left\" );\n\n\t\t\t\tinput.data( \"autocomplete\" )._renderItem = function( ul, item ) {\n\t\t\t\t\treturn $( \"<li>\" )\n\t\t\t\t\t\t.data( \"item.autocomplete\", item )\n\t\t\t\t\t\t.append( \"<a>\" + item.label + \"</a>\" )\n\t\t\t\t\t\t.appendTo( ul );\n\t\t\t\t};\n\n\t\t\t\t$( \"<a>\" )\n\t\t\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t\t\t.attr( \"title\", \"Show All Items\" )\n\t\t\t\t\t.tooltip()\n\t\t\t\t\t.appendTo( wrapper )\n\t\t\t\t\t.button({\n\t\t\t\t\t\ticons: {\n\t\t\t\t\t\t\tprimary: \"ui-icon-triangle-1-s\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttext: false\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t\t.addClass( \"ui-corner-right ui-combobox-toggle\" )\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t// close if already visible\n\t\t\t\t\t\tif ( input.autocomplete( \"widget\" ).is( \":visible\" ) ) {\n\t\t\t\t\t\t\tinput.autocomplete( \"close\" );\n\t\t\t\t\t\t\tremoveIfInvalid( input );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// work around a bug (likely same cause as #5265)\n\t\t\t\t\t\t$( this ).blur();\n\n\t\t\t\t\t\t// pass empty string as value to search for, displaying all results\n\t\t\t\t\t\tinput.autocomplete( \"search\", \"\" );\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t});\n\n\t\t\t\t\tinput\n\t\t\t\t\t\t.tooltip({\n\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\tof: this.button\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttooltipClass: \"ui-state-highlight\"\n\t\t\t\t\t\t});\n\t\t\t},\n\n\t\t\tdestroy: function() {\n\t\t\t\tthis.wrapper.remove();\n\t\t\t\tthis.element.show();\n\t\t\t\t$.Widget.prototype.destroy.call( this );\n\t\t\t}\n\t\t});\n\t})( jQuery );\n\n\t$(function() {\n\t\t$( \"#combobox\" ).combobox();\n\t\t$( \"#toggle\" ).click(function() {\n\t\t\t$( \"#combobox\" ).toggle();\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label>Your preferred programming language: </label>\n\t<select id=\"combobox\">\n\t\t<option value=\"\">Select one...</option>\n\t\t<option value=\"ActionScript\">ActionScript</option>\n\t\t<option value=\"AppleScript\">AppleScript</option>\n\t\t<option value=\"Asp\">Asp</option>\n\t\t<option value=\"BASIC\">BASIC</option>\n\t\t<option value=\"C\">C</option>\n\t\t<option value=\"C++\">C++</option>\n\t\t<option value=\"Clojure\">Clojure</option>\n\t\t<option value=\"COBOL\">COBOL</option>\n\t\t<option value=\"ColdFusion\">ColdFusion</option>\n\t\t<option value=\"Erlang\">Erlang</option>\n\t\t<option value=\"Fortran\">Fortran</option>\n\t\t<option value=\"Groovy\">Groovy</option>\n\t\t<option value=\"Haskell\">Haskell</option>\n\t\t<option value=\"Java\">Java</option>\n\t\t<option value=\"JavaScript\">JavaScript</option>\n\t\t<option value=\"Lisp\">Lisp</option>\n\t\t<option value=\"Perl\">Perl</option>\n\t\t<option value=\"PHP\">PHP</option>\n\t\t<option value=\"Python\">Python</option>\n\t\t<option value=\"Ruby\">Ruby</option>\n\t\t<option value=\"Scala\">Scala</option>\n\t\t<option value=\"Scheme\">Scheme</option>\n\t</select>\n</div>\n<button id=\"toggle\">Show underlying select</button>\n\n<div class=\"demo-description\">\n<p>A custom widget built by composition of Autocomplete and Button. You can either type something into the field to get filtered suggestions based on your input, or use the button to get the full list of selections.</p>\n<p>The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.</p>\n<p>This is not a supported or even complete widget. Its purely for demoing what autocomplete can do with a bit of customization. <a href=\"http://www.learningjquery.com/2010/06/a-jquery-ui-combobox-under-the-hood\">For a detailed explanation of how the widget works, check out this Learning jQuery article.</a></p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/custom-data.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Custom data and display</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#project-label {\n\t\tdisplay: block;\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1em;\n\t}\n\t#project-icon {\n\t\tfloat: left;\n\t\theight: 32px;\n\t\twidth: 32px;\n\t}\n\t#project-description {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar projects = [\n\t\t\t{\n\t\t\t\tvalue: \"jquery\",\n\t\t\t\tlabel: \"jQuery\",\n\t\t\t\tdesc: \"the write less, do more, JavaScript library\",\n\t\t\t\ticon: \"jquery_32x32.png\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"jquery-ui\",\n\t\t\t\tlabel: \"jQuery UI\",\n\t\t\t\tdesc: \"the official user interface library for jQuery\",\n\t\t\t\ticon: \"jqueryui_32x32.png\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sizzlejs\",\n\t\t\t\tlabel: \"Sizzle JS\",\n\t\t\t\tdesc: \"a pure-JavaScript CSS selector engine\",\n\t\t\t\ticon: \"sizzlejs_32x32.png\"\n\t\t\t}\n\t\t];\n\n\t\t$( \"#project\" ).autocomplete({\n\t\t\tminLength: 0,\n\t\t\tsource: projects,\n\t\t\tfocus: function( event, ui ) {\n\t\t\t\t$( \"#project\" ).val( ui.item.label );\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tselect: function( event, ui ) {\n\t\t\t\t$( \"#project\" ).val( ui.item.label );\n\t\t\t\t$( \"#project-id\" ).val( ui.item.value );\n\t\t\t\t$( \"#project-description\" ).html( ui.item.desc );\n\t\t\t\t$( \"#project-icon\" ).attr( \"src\", \"images/\" + ui.item.icon );\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t})\n\t\t.data( \"autocomplete\" )._renderItem = function( ul, item ) {\n\t\t\treturn $( \"<li>\" )\n\t\t\t\t.data( \"item.autocomplete\", item )\n\t\t\t\t.append( \"<a>\" + item.label + \"<br>\" + item.desc + \"</a>\" )\n\t\t\t\t.appendTo( ul );\n\t\t};\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"project-label\">Select a project (type \"j\" for a start):</div>\n<img id=\"project-icon\" src=\"images/transparent_1x1.png\" class=\"ui-state-default\" alt=\"\">\n<input id=\"project\">\n<input type=\"hidden\" id=\"project-id\">\n<p id=\"project-description\"></p>\n\n<div class=\"demo-description\">\n<p>You can use your own custom data formats and displays by simply overriding the default focus and select actions.</p>\n<p>Try typing \"j\" to get a list of projects or just press the down arrow.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#tags\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tags: </label>\n\t<input id=\"tags\">\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are tags for programming languages, give \"ja\" (for Java or JavaScript) a try.</p>\n<p>The datasource is a simple JavaScript array, provided to the widget using the source-option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/folding.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Accent folding</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar names = [ \"Jörn Zaefferer\", \"Scott González\", \"John Resig\" ];\n\n\t\tvar accentMap = {\n\t\t\t\"á\": \"a\",\n\t\t\t\"ö\": \"o\"\n\t\t};\n\t\tvar normalize = function( term ) {\n\t\t\tvar ret = \"\";\n\t\t\tfor ( var i = 0; i < term.length; i++ ) {\n\t\t\t\tret += accentMap[ term.charAt(i) ] || term.charAt(i);\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\n\t\t$( \"#developer\" ).autocomplete({\n\t\t\tsource: function( request, response ) {\n\t\t\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), \"i\" );\n\t\t\t\tresponse( $.grep( names, function( value ) {\n\t\t\t\t\tvalue = value.label || value.value || value;\n\t\t\t\t\treturn matcher.test( value ) || matcher.test( normalize( value ) );\n\t\t\t\t}) );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<form>\n\t<label for=\"developer\">Developer: </label>\n\t<input id=\"developer\">\n\t</form>\n</div>\n\n<div class=\"demo-description\">\n<p>The autocomplete field uses a custom source option which will match results that have accented characters even when the text field doesn't contain accented characters. However if the you type in accented characters in the text field it is smart enough not to show results that aren't accented.</p>\n<p>Try typing \"Jo\" to see \"John\" and \"Jörn\", then type \"Jö\" to see only \"Jörn\".</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"remote.html\">Remote datasource</a></li>\n\t<li><a href=\"remote-with-cache.html\">Remote with caching</a></li>\n\t<li><a href=\"remote-jsonp.html\">Remote JSONP datasource</a></li>\n\t<li><a href=\"maxheight.html\">Scrollable results</a></li>\n\t<li><a href=\"combobox.html\">Combobox</a></li>\n\t<li><a href=\"custom-data.html\">Custom data and display</a></li>\n\t<li><a href=\"xml.html\">XML data parsed once</a></li>\n\t<li><a href=\"categories.html\">Categories</a></li>\n\t<li><a href=\"folding.html\">Accent folding</a></li>\n\t<li><a href=\"multiple.html\">Multiple values</a></li>\n\t<li><a href=\"multiple-remote.html\">Multiple, remote</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/london.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<geonames style=\"MEDIUM\">\n<totalResultsCount>6987</totalResultsCount>\n<geoname>\n<name>London</name>\n<lat>51.5084152563931</lat>\n<lng>-0.125532746315002</lng>\n<geonameId>2643743</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>P</fcl>\n<fcode>PPLC</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>42.983389283</lat>\n<lng>-81.233042387</lng>\n<geonameId>6058560</geonameId>\n<countryCode>CA</countryCode>\n<countryName>Canada</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>East London</name>\n<lat>-33.0152850934643</lat>\n<lng>27.9116249084473</lng>\n<geonameId>1006984</geonameId>\n<countryCode>ZA</countryCode>\n<countryName>South Africa</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>City</name>\n<lat>51.5133363996235</lat>\n<lng>-0.0890064239501953</lng>\n<geonameId>2643744</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>37.1289771</lat>\n<lng>-84.0832646</lng>\n<geonameId>4298960</geonameId>\n<countryCode>US</countryCode>\n<countryName>United States</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>The Tower of London</name>\n<lat>51.5082349601834</lat>\n<lng>-0.0763034820556641</lng>\n<geonameId>6286786</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>S</fcl>\n<fcode>CSTL</fcode>\n</geoname>\n<geoname>\n<name>London Reefs</name>\n<lat>8.85</lat>\n<lng>112.5333333</lng>\n<geonameId>1879967</geonameId>\n<countryCode>  </countryCode>\n<countryName>  </countryName>\n\n<fcl>U</fcl>\n<fcode>RFSU</fcode>\n</geoname>\n<geoname>\n<name>Greater London</name>\n<lat>51.5</lat>\n<lng>-0.1666667</lng>\n<geonameId>2648110</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>46.1666667</lat>\n<lng>6.0166667</lng>\n<geonameId>2661811</geonameId>\n<countryCode>CH</countryCode>\n<countryName>Switzerland</countryName>\n\n<fcl>H</fcl>\n<fcode>STM</fcode>\n</geoname>\n<geoname>\n<name>London Borough of Islington</name>\n<lat>51.5333333</lat>\n<lng>-0.1333333</lng>\n<geonameId>3333156</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n</geonames>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/maxheight.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Scrollable results</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete {\n\t\tmax-height: 100px;\n\t\toverflow-y: auto;\n\t\t/* prevent horizontal scrollbar */\n\t\toverflow-x: hidden;\n\t}\n\t/* IE 6 doesn't support max-height\n\t * we use height instead, but this forces the menu to always be this tall\n\t */\n\t* html .ui-autocomplete {\n\t\theight: 100px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#tags\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tags: </label>\n\t<input id=\"tags\">\n</div>\n\n<div class=\"demo-description\">\n<p>When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large. Try typing \"a\" or \"s\" above to get a long list of results that you can scroll through.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple-remote.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Multiple, remote</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction split( val ) {\n\t\t\treturn val.split( /,\\s*/ );\n\t\t}\n\t\tfunction extractLast( term ) {\n\t\t\treturn split( term ).pop();\n\t\t}\n\n\t\t$( \"#birds\" )\n\t\t\t// don't navigate away from the field on tab when selecting an item\n\t\t\t.bind( \"keydown\", function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.TAB &&\n\t\t\t\t\t\t$( this ).data( \"autocomplete\" ).menu.active ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.autocomplete({\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t$.getJSON( \"search.php\", {\n\t\t\t\t\t\tterm: extractLast( request.term )\n\t\t\t\t\t}, response );\n\t\t\t\t},\n\t\t\t\tsearch: function() {\n\t\t\t\t\t// custom minLength\n\t\t\t\t\tvar term = extractLast( this.value );\n\t\t\t\t\tif ( term.length < 2 ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocus: function() {\n\t\t\t\t\t// prevent value inserted on focus\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tvar terms = split( this.value );\n\t\t\t\t\t// remove the current input\n\t\t\t\t\tterms.pop();\n\t\t\t\t\t// add the selected item\n\t\t\t\t\tterms.push( ui.item.value );\n\t\t\t\t\t// add placeholder to get the comma-and-space at the end\n\t\t\t\t\tterms.push( \"\" );\n\t\t\t\t\tthis.value = terms.join( \", \" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\" size=\"50\">\n</div>\n\n<div class=\"demo-description\">\n<p>Usage: Enter at least two characters to get bird name suggestions. Select a value to continue adding more names.</p>\n<p>This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Multiple values</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\tfunction split( val ) {\n\t\t\treturn val.split( /,\\s*/ );\n\t\t}\n\t\tfunction extractLast( term ) {\n\t\t\treturn split( term ).pop();\n\t\t}\n\n\t\t$( \"#tags\" )\n\t\t\t// don't navigate away from the field on tab when selecting an item\n\t\t\t.bind( \"keydown\", function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.TAB &&\n\t\t\t\t\t\t$( this ).data( \"autocomplete\" ).menu.active ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.autocomplete({\n\t\t\t\tminLength: 0,\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t// delegate back to autocomplete, but extract the last term\n\t\t\t\t\tresponse( $.ui.autocomplete.filter(\n\t\t\t\t\t\tavailableTags, extractLast( request.term ) ) );\n\t\t\t\t},\n\t\t\t\tfocus: function() {\n\t\t\t\t\t// prevent value inserted on focus\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tvar terms = split( this.value );\n\t\t\t\t\t// remove the current input\n\t\t\t\t\tterms.pop();\n\t\t\t\t\t// add the selected item\n\t\t\t\t\tterms.push( ui.item.value );\n\t\t\t\t\t// add placeholder to get the comma-and-space at the end\n\t\t\t\t\tterms.push( \"\" );\n\t\t\t\t\tthis.value = terms.join( \", \" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tag programming languages: </label>\n\t<input id=\"tags\" size=\"50\">\n</div>\n\n<div class=\"demo-description\">\n<p>Usage: Type something, eg. \"j\" to see suggestions for tagging with programming languages. Select a value, then continue typing to add more.</p>\n<p>This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-jsonp.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote JSONP datasource</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t#city { width: 25em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).scrollTop( 0 );\n\t\t}\n\n\t\t$( \"#city\" ).autocomplete({\n\t\t\tsource: function( request, response ) {\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: \"http://ws.geonames.org/searchJSON\",\n\t\t\t\t\tdataType: \"jsonp\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfeatureClass: \"P\",\n\t\t\t\t\t\tstyle: \"full\",\n\t\t\t\t\t\tmaxRows: 12,\n\t\t\t\t\t\tname_startsWith: request.term\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( $.map( data.geonames, function( item ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tlabel: item.name + (item.adminName1 ? \", \" + item.adminName1 : \"\") + \", \" + item.countryName,\n\t\t\t\t\t\t\t\tvalue: item.name\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tminLength: 2,\n\t\t\tselect: function( event, ui ) {\n\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\"Selected: \" + ui.item.label :\n\t\t\t\t\t\"Nothing selected, input was \" + this.value);\n\t\t\t},\n\t\t\topen: function() {\n\t\t\t\t$( this ).removeClass( \"ui-corner-all\" ).addClass( \"ui-corner-top\" );\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\t$( this ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-all\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"city\">Your city: </label>\n\t<input id=\"city\">\n\tPowered by <a href=\"http://geonames.org\">geonames.org</a>\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are cities, displayed when at least two characters are entered into the field.</p>\n<p>In this case, the datasource is the <a href=\"http://geonames.org\">geonames.org webservice</a>. While only the city name itself ends up in the input after selecting an element, more info is displayed in the suggestions to help find the right entry. That data is also available in callbacks, as illustrated by the Result area below the input.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-with-cache.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote with caching</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar cache = {};\n\t\t$( \"#birds\" ).autocomplete({\n\t\t\tminLength: 2,\n\t\t\tsource: function( request, response ) {\n\t\t\t\tvar term = request.term;\n\t\t\t\tif ( term in cache ) {\n\t\t\t\t\tresponse( cache[ term ] );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$.getJSON( \"search.php\", request, function( data, status, xhr ) {\n\t\t\t\t\tcache[ term ] = data;\n\t\t\t\t\tresponse( data );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\">\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.</p>\n<p>Similar to the remote datasource demo, though this adds some local caching to improve performance. The cache here saves just one query, and could be extended to cache multiple values, one for each term.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote datasource</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).scrollTop( 0 );\n\t\t}\n\n\t\t$( \"#birds\" ).autocomplete({\n\t\t\tsource: \"search.php\",\n\t\t\tminLength: 2,\n\t\t\tselect: function( event, ui ) {\n\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\"Selected: \" + ui.item.value + \" aka \" + ui.item.id :\n\t\t\t\t\t\"Nothing selected, input was \" + this.value );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\">\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.</p>\n<p>The datasource is a server-side script which returns JSON data, specified via a simple URL for the source-option. In addition, the minLength-option is set to 2 to avoid queries that would return too many results and the select-event is used to display some feedback.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/search.php",
    "content": "<?php\n\nsleep( 3 );\n// no term passed - just exit early with no response\nif (empty($_GET['term'])) exit ;\n$q = strtolower($_GET[\"term\"]);\n// remove slashes if they were magically added\nif (get_magic_quotes_gpc()) $q = stripslashes($q);\n\n$items = array(\n\"Great Bittern\"=>\"Botaurus stellaris\",\n\"Little Grebe\"=>\"Tachybaptus ruficollis\",\n\"Black-necked Grebe\"=>\"Podiceps nigricollis\",\n\"Little Bittern\"=>\"Ixobrychus minutus\",\n\"Black-crowned Night Heron\"=>\"Nycticorax nycticorax\",\n\"Purple Heron\"=>\"Ardea purpurea\",\n\"White Stork\"=>\"Ciconia ciconia\",\n\"Spoonbill\"=>\"Platalea leucorodia\",\n\"Red-crested Pochard\"=>\"Netta rufina\",\n\"Common Eider\"=>\"Somateria mollissima\",\n\"Red Kite\"=>\"Milvus milvus\",\n\"Hen Harrier\"=>\"Circus cyaneus\",\n\"Montagu`s Harrier\"=>\"Circus pygargus\",\n\"Black Grouse\"=>\"Tetrao tetrix\",\n\"Grey Partridge\"=>\"Perdix perdix\",\n\"Spotted Crake\"=>\"Porzana porzana\",\n\"Corncrake\"=>\"Crex crex\",\n\"Common Crane\"=>\"Grus grus\",\n\"Avocet\"=>\"Recurvirostra avosetta\",\n\"Stone Curlew\"=>\"Burhinus oedicnemus\",\n\"Common Ringed Plover\"=>\"Charadrius hiaticula\",\n\"Kentish Plover\"=>\"Charadrius alexandrinus\",\n\"Ruff\"=>\"Philomachus pugnax\",\n\"Common Snipe\"=>\"Gallinago gallinago\",\n\"Black-tailed Godwit\"=>\"Limosa limosa\",\n\"Common Redshank\"=>\"Tringa totanus\",\n\"Sandwich Tern\"=>\"Sterna sandvicensis\",\n\"Common Tern\"=>\"Sterna hirundo\",\n\"Arctic Tern\"=>\"Sterna paradisaea\",\n\"Little Tern\"=>\"Sternula albifrons\",\n\"Black Tern\"=>\"Chlidonias niger\",\n\"Barn Owl\"=>\"Tyto alba\",\n\"Little Owl\"=>\"Athene noctua\",\n\"Short-eared Owl\"=>\"Asio flammeus\",\n\"European Nightjar\"=>\"Caprimulgus europaeus\",\n\"Common Kingfisher\"=>\"Alcedo atthis\",\n\"Eurasian Hoopoe\"=>\"Upupa epops\",\n\"Eurasian Wryneck\"=>\"Jynx torquilla\",\n\"European Green Woodpecker\"=>\"Picus viridis\",\n\"Crested Lark\"=>\"Galerida cristata\",\n\"White-headed Duck\"=>\"Oxyura leucocephala\",\n\"Pale-bellied Brent Goose\"=>\"Branta hrota\",\n\"Tawny Pipit\"=>\"Anthus campestris\",\n\"Whinchat\"=>\"Saxicola rubetra\",\n\"European Stonechat\"=>\"Saxicola rubicola\",\n\"Northern Wheatear\"=>\"Oenanthe oenanthe\",\n\"Savi`s Warbler\"=>\"Locustella luscinioides\",\n\"Sedge Warbler\"=>\"Acrocephalus schoenobaenus\",\n\"Great Reed Warbler\"=>\"Acrocephalus arundinaceus\",\n\"Bearded Reedling\"=>\"Panurus biarmicus\",\n\"Red-backed Shrike\"=>\"Lanius collurio\",\n\"Great Grey Shrike\"=>\"Lanius excubitor\",\n\"Woodchat Shrike\"=>\"Lanius senator\",\n\"Common Raven\"=>\"Corvus corax\",\n\"Yellowhammer\"=>\"Emberiza citrinella\",\n\"Ortolan Bunting\"=>\"Emberiza hortulana\",\n\"Corn Bunting\"=>\"Emberiza calandra\",\n\"Great Cormorant\"=>\"Phalacrocorax carbo\",\n\"Hawfinch\"=>\"Coccothraustes coccothraustes\",\n\"Common Shelduck\"=>\"Tadorna tadorna\",\n\"Bluethroat\"=>\"Luscinia svecica\",\n\"Grey Heron\"=>\"Ardea cinerea\",\n\"Barn Swallow\"=>\"Hirundo rustica\",\n\"Hooded Crow\"=>\"Corvus cornix\",\n\"Dunlin\"=>\"Calidris alpina\",\n\"Eurasian Pied Flycatcher\"=>\"Ficedula hypoleuca\",\n\"Eurasian Nuthatch\"=>\"Sitta europaea\",\n\"Short-toed Tree Creeper\"=>\"Certhia brachydactyla\",\n\"Wood Lark\"=>\"Lullula arborea\",\n\"Tree Pipit\"=>\"Anthus trivialis\",\n\"Eurasian Hobby\"=>\"Falco subbuteo\",\n\"Marsh Warbler\"=>\"Acrocephalus palustris\",\n\"Wood Sandpiper\"=>\"Tringa glareola\",\n\"Tawny Owl\"=>\"Strix aluco\",\n\"Lesser Whitethroat\"=>\"Sylvia curruca\",\n\"Barnacle Goose\"=>\"Branta leucopsis\",\n\"Common Goldeneye\"=>\"Bucephala clangula\",\n\"Western Marsh Harrier\"=>\"Circus aeruginosus\",\n\"Common Buzzard\"=>\"Buteo buteo\",\n\"Sanderling\"=>\"Calidris alba\",\n\"Little Gull\"=>\"Larus minutus\",\n\"Eurasian Magpie\"=>\"Pica pica\",\n\"Willow Warbler\"=>\"Phylloscopus trochilus\",\n\"Wood Warbler\"=>\"Phylloscopus sibilatrix\",\n\"Great Crested Grebe\"=>\"Podiceps cristatus\",\n\"Eurasian Jay\"=>\"Garrulus glandarius\",\n\"Common Redstart\"=>\"Phoenicurus phoenicurus\",\n\"Blue-headed Wagtail\"=>\"Motacilla flava\",\n\"Common Swift\"=>\"Apus apus\",\n\"Marsh Tit\"=>\"Poecile palustris\",\n\"Goldcrest\"=>\"Regulus regulus\",\n\"European Golden Plover\"=>\"Pluvialis apricaria\",\n\"Eurasian Bullfinch\"=>\"Pyrrhula pyrrhula\",\n\"Common Whitethroat\"=>\"Sylvia communis\",\n\"Meadow Pipit\"=>\"Anthus pratensis\",\n\"Greylag Goose\"=>\"Anser anser\",\n\"Spotted Flycatcher\"=>\"Muscicapa striata\",\n\"European Greenfinch\"=>\"Carduelis chloris\",\n\"Common Greenshank\"=>\"Tringa nebularia\",\n\"Great Spotted Woodpecker\"=>\"Dendrocopos major\",\n\"Greater Canada Goose\"=>\"Branta canadensis\",\n\"Mistle Thrush\"=>\"Turdus viscivorus\",\n\"Great Black-backed Gull\"=>\"Larus marinus\",\n\"Goosander\"=>\"Mergus merganser\",\n\"Great Egret\"=>\"Casmerodius albus\",\n\"Northern Goshawk\"=>\"Accipiter gentilis\",\n\"Dunnock\"=>\"Prunella modularis\",\n\"Stock Dove\"=>\"Columba oenas\",\n\"Common Wood Pigeon\"=>\"Columba palumbus\",\n\"Eurasian Woodcock\"=>\"Scolopax rusticola\",\n\"House Sparrow\"=>\"Passer domesticus\",\n\"Common House Martin\"=>\"Delichon urbicum\",\n\"Red Knot\"=>\"Calidris canutus\",\n\"Western Jackdaw\"=>\"Corvus monedula\",\n\"Brambling\"=>\"Fringilla montifringilla\",\n\"Northern Lapwing\"=>\"Vanellus vanellus\",\n\"European Reed Warbler\"=>\"Acrocephalus scirpaceus\",\n\"Lesser Black-backed Gull\"=>\"Larus fuscus\",\n\"Little Egret\"=>\"Egretta garzetta\",\n\"Little Stint\"=>\"Calidris minuta\",\n\"Common Linnet\"=>\"Carduelis cannabina\",\n\"Mute Swan\"=>\"Cygnus olor\",\n\"Common Cuckoo\"=>\"Cuculus canorus\",\n\"Black-headed Gull\"=>\"Larus ridibundus\",\n\"Greater White-fronted Goose\"=>\"Anser albifrons\",\n\"Great Tit\"=>\"Parus major\",\n\"Redwing\"=>\"Turdus iliacus\",\n\"Gadwall\"=>\"Anas strepera\",\n\"Fieldfare\"=>\"Turdus pilaris\",\n\"Tufted Duck\"=>\"Aythya fuligula\",\n\"Crested Tit\"=>\"Lophophanes cristatus\",\n\"Willow Tit\"=>\"Poecile montanus\",\n\"Eurasian Coot\"=>\"Fulica atra\",\n\"Common Blackbird\"=>\"Turdus merula\",\n\"Smew\"=>\"Mergus albellus\",\n\"Common Sandpiper\"=>\"Actitis hypoleucos\",\n\"Sand Martin\"=>\"Riparia riparia\",\n\"Purple Sandpiper\"=>\"Calidris maritima\",\n\"Northern Pintail\"=>\"Anas acuta\",\n\"Blue Tit\"=>\"Cyanistes caeruleus\",\n\"European Goldfinch\"=>\"Carduelis carduelis\",\n\"Eurasian Whimbrel\"=>\"Numenius phaeopus\",\n\"Common Reed Bunting\"=>\"Emberiza schoeniclus\",\n\"Eurasian Tree Sparrow\"=>\"Passer montanus\",\n\"Rook\"=>\"Corvus frugilegus\",\n\"European Robin\"=>\"Erithacus rubecula\",\n\"Bar-tailed Godwit\"=>\"Limosa lapponica\",\n\"Dark-bellied Brent Goose\"=>\"Branta bernicla\",\n\"Eurasian Oystercatcher\"=>\"Haematopus ostralegus\",\n\"Eurasian Siskin\"=>\"Carduelis spinus\",\n\"Northern Shoveler\"=>\"Anas clypeata\",\n\"Eurasian Wigeon\"=>\"Anas penelope\",\n\"Eurasian Sparrow Hawk\"=>\"Accipiter nisus\",\n\"Icterine Warbler\"=>\"Hippolais icterina\",\n\"Common Starling\"=>\"Sturnus vulgaris\",\n\"Long-tailed Tit\"=>\"Aegithalos caudatus\",\n\"Ruddy Turnstone\"=>\"Arenaria interpres\",\n\"Mew Gull\"=>\"Larus canus\",\n\"Common Pochard\"=>\"Aythya ferina\",\n\"Common Chiffchaff\"=>\"Phylloscopus collybita\",\n\"Greater Scaup\"=>\"Aythya marila\",\n\"Common Kestrel\"=>\"Falco tinnunculus\",\n\"Garden Warbler\"=>\"Sylvia borin\",\n\"Eurasian Collared Dove\"=>\"Streptopelia decaocto\",\n\"Eurasian Skylark\"=>\"Alauda arvensis\",\n\"Common Chaffinch\"=>\"Fringilla coelebs\",\n\"Common Moorhen\"=>\"Gallinula chloropus\",\n\"Water Pipit\"=>\"Anthus spinoletta\",\n\"Mallard\"=>\"Anas platyrhynchos\",\n\"Winter Wren\"=>\"Troglodytes troglodytes\",\n\"Common Teal\"=>\"Anas crecca\",\n\"Green Sandpiper\"=>\"Tringa ochropus\",\n\"White Wagtail\"=>\"Motacilla alba\",\n\"Eurasian Curlew\"=>\"Numenius arquata\",\n\"Song Thrush\"=>\"Turdus philomelos\",\n\"European Herring Gull\"=>\"Larus argentatus\",\n\"Grey Plover\"=>\"Pluvialis squatarola\",\n\"Carrion Crow\"=>\"Corvus corone\",\n\"Coal Tit\"=>\"Periparus ater\",\n\"Spotted Redshank\"=>\"Tringa erythropus\",\n\"Blackcap\"=>\"Sylvia atricapilla\",\n\"Egyptian Vulture\"=>\"Neophron percnopterus\",\n\"Razorbill\"=>\"Alca torda\",\n\"Alpine Swift\"=>\"Apus melba\",\n\"Long-legged Buzzard\"=>\"Buteo rufinus\",\n\"Audouin`s Gull\"=>\"Larus audouinii\",\n\"Balearic Shearwater\"=>\"Puffinus mauretanicus\",\n\"Upland Sandpiper\"=>\"Bartramia longicauda\",\n\"Greater Spotted Eagle\"=>\"Aquila clanga\",\n\"Ring Ouzel\"=>\"Turdus torquatus\",\n\"Yellow-browed Warbler\"=>\"Phylloscopus inornatus\",\n\"Blue Rock Thrush\"=>\"Monticola solitarius\",\n\"Buff-breasted Sandpiper\"=>\"Tryngites subruficollis\",\n\"Jack Snipe\"=>\"Lymnocryptes minimus\",\n\"White-rumped Sandpiper\"=>\"Calidris fuscicollis\",\n\"Ruddy Shelduck\"=>\"Tadorna ferruginea\",\n\"Cetti's Warbler\"=>\"Cettia cetti\",\n\"Citrine Wagtail\"=>\"Motacilla citreola\",\n\"Roseate Tern\"=>\"Sterna dougallii\",\n\"Black-legged Kittiwake\"=>\"Rissa tridactyla\",\n\"Pygmy Cormorant\"=>\"Phalacrocorax pygmeus\",\n\"Booted Eagle\"=>\"Aquila pennata\",\n\"Lesser White-fronted Goose\"=>\"Anser erythropus\",\n\"Little Bunting\"=>\"Emberiza pusilla\",\n\"Eleonora's Falcon\"=>\"Falco eleonorae\",\n\"European Serin\"=>\"Serinus serinus\",\n\"Twite\"=>\"Carduelis flavirostris\",\n\"Yellow-legged Gull\"=>\"Larus michahellis\",\n\"Gyr Falcon\"=>\"Falco rusticolus\",\n\"Greenish Warbler\"=>\"Phylloscopus trochiloides\",\n\"Red-necked Phalarope\"=>\"Phalaropus lobatus\",\n\"Mealy Redpoll\"=>\"Carduelis flammea\",\n\"Glaucous Gull\"=>\"Larus hyperboreus\",\n\"Great Skua\"=>\"Stercorarius skua\",\n\"Great Bustard\"=>\"Otis tarda\",\n\"Velvet Scoter\"=>\"Melanitta fusca\",\n\"Pine Grosbeak\"=>\"Pinicola enucleator\",\n\"House Crow\"=>\"Corvus splendens\",\n\"Hume`s Leaf Warbler\"=>\"Phylloscopus humei\",\n\"Great Northern Loon\"=>\"Gavia immer\",\n\"Long-tailed Duck\"=>\"Clangula hyemalis\",\n\"Lapland Longspur\"=>\"Calcarius lapponicus\",\n\"Northern Gannet\"=>\"Morus bassanus\",\n\"Eastern Imperial Eagle\"=>\"Aquila heliaca\",\n\"Little Auk\"=>\"Alle alle\",\n\"Lesser Spotted Woodpecker\"=>\"Dendrocopos minor\",\n\"Iceland Gull\"=>\"Larus glaucoides\",\n\"Parasitic Jaeger\"=>\"Stercorarius parasiticus\",\n\"Bewick`s Swan\"=>\"Cygnus bewickii\",\n\"Little Bustard\"=>\"Tetrax tetrax\",\n\"Little Crake\"=>\"Porzana parva\",\n\"Baillon`s Crake\"=>\"Porzana pusilla\",\n\"Long-tailed Jaeger\"=>\"Stercorarius longicaudus\",\n\"King Eider\"=>\"Somateria spectabilis\",\n\"Greater Short-toed Lark\"=>\"Calandrella brachydactyla\",\n\"Houbara Bustard\"=>\"Chlamydotis undulata\",\n\"Curlew Sandpiper\"=>\"Calidris ferruginea\",\n\"Common Crossbill\"=>\"Loxia curvirostra\",\n\"European Shag\"=>\"Phalacrocorax aristotelis\",\n\"Horned Grebe\"=>\"Podiceps auritus\",\n\"Common Quail\"=>\"Coturnix coturnix\",\n\"Bearded Vulture\"=>\"Gypaetus barbatus\",\n\"Lanner Falcon\"=>\"Falco biarmicus\",\n\"Middle Spotted Woodpecker\"=>\"Dendrocopos medius\",\n\"Pomarine Jaeger\"=>\"Stercorarius pomarinus\",\n\"Red-breasted Merganser\"=>\"Mergus serrator\",\n\"Eurasian Black Vulture\"=>\"Aegypius monachus\",\n\"Eurasian Dotterel\"=>\"Charadrius morinellus\",\n\"Common Nightingale\"=>\"Luscinia megarhynchos\",\n\"Northern willow warbler\"=>\"Phylloscopus trochilus acredula\",\n\"Manx Shearwater\"=>\"Puffinus puffinus\",\n\"Northern Fulmar\"=>\"Fulmarus glacialis\",\n\"Eurasian Eagle Owl\"=>\"Bubo bubo\",\n\"Orphean Warbler\"=>\"Sylvia hortensis\",\n\"Melodious Warbler\"=>\"Hippolais polyglotta\",\n\"Pallas's Leaf Warbler\"=>\"Phylloscopus proregulus\",\n\"Atlantic Puffin\"=>\"Fratercula arctica\",\n\"Black-throated Loon\"=>\"Gavia arctica\",\n\"Bohemian Waxwing\"=>\"Bombycilla garrulus\",\n\"Marsh Sandpiper\"=>\"Tringa stagnatilis\",\n\"Great Snipe\"=>\"Gallinago media\",\n\"Squacco Heron\"=>\"Ardeola ralloides\",\n\"Long-eared Owl\"=>\"Asio otus\",\n\"Caspian Tern\"=>\"Hydroprogne caspia\",\n\"Red-breasted Goose\"=>\"Branta ruficollis\",\n\"Red-throated Loon\"=>\"Gavia stellata\",\n\"Common Rosefinch\"=>\"Carpodacus erythrinus\",\n\"Red-footed Falcon\"=>\"Falco vespertinus\",\n\"Ross's Goose\"=>\"Anser rossii\",\n\"Red Phalarope\"=>\"Phalaropus fulicarius\",\n\"Pied Wagtail\"=>\"Motacilla yarrellii\",\n\"Rose-coloured Starling\"=>\"Sturnus roseus\",\n\"Rough-legged Buzzard\"=>\"Buteo lagopus\",\n\"Saker Falcon\"=>\"Falco cherrug\",\n\"European Roller\"=>\"Coracias garrulus\",\n\"Short-toed Eagle\"=>\"Circaetus gallicus\",\n\"Peregrine Falcon\"=>\"Falco peregrinus\",\n\"Merlin\"=>\"Falco columbarius\",\n\"Snow Goose\"=>\"Anser caerulescens\",\n\"Snowy Owl\"=>\"Bubo scandiacus\",\n\"Snow Bunting\"=>\"Plectrophenax nivalis\",\n\"Common Grasshopper Warbler\"=>\"Locustella naevia\",\n\"Golden Eagle\"=>\"Aquila chrysaetos\",\n\"Black-winged Stilt\"=>\"Himantopus himantopus\",\n\"Steppe Eagle\"=>\"Aquila nipalensis\",\n\"Pallid Harrier\"=>\"Circus macrourus\",\n\"European Storm-petrel\"=>\"Hydrobates pelagicus\",\n\"Horned Lark\"=>\"Eremophila alpestris\",\n\"Eurasian Treecreeper\"=>\"Certhia familiaris\",\n\"Taiga Bean Goose\"=>\"Anser fabalis\",\n\"Temminck`s Stint\"=>\"Calidris temminckii\",\n\"Terek Sandpiper\"=>\"Xenus cinereus\",\n\"Tundra Bean Goose\"=>\"Anser serrirostris\",\n\"European Turtle Dove\"=>\"Streptopelia turtur\",\n\"Leach`s Storm-petrel\"=>\"Oceanodroma leucorhoa\",\n\"Eurasian Griffon Vulture\"=>\"Gyps fulvus\",\n\"Paddyfield Warbler\"=>\"Acrocephalus agricola\",\n\"Osprey\"=>\"Pandion haliaetus\",\n\"Firecrest\"=>\"Regulus ignicapilla\",\n\"Water Rail\"=>\"Rallus aquaticus\",\n\"European Honey Buzzard\"=>\"Pernis apivorus\",\n\"Eurasian Golden Oriole\"=>\"Oriolus oriolus\",\n\"Whooper Swan\"=>\"Cygnus cygnus\",\n\"Two-barred Crossbill\"=>\"Loxia leucoptera\",\n\"White-tailed Eagle\"=>\"Haliaeetus albicilla\",\n\"Atlantic Murre\"=>\"Uria aalge\",\n\"Garganey\"=>\"Anas querquedula\",\n\"Black Redstart\"=>\"Phoenicurus ochruros\",\n\"Common Scoter\"=>\"Melanitta nigra\",\n\"Rock Pipit\"=>\"Anthus petrosus\",\n\"Lesser Spotted Eagle\"=>\"Aquila pomarina\",\n\"Cattle Egret\"=>\"Bubulcus ibis\",\n\"White-winged Black Tern\"=>\"Chlidonias leucopterus\",\n\"Black Stork\"=>\"Ciconia nigra\",\n\"Mediterranean Gull\"=>\"Larus melanocephalus\",\n\"Black Kite\"=>\"Milvus migrans\",\n\"Yellow Wagtail\"=>\"Motacilla flavissima\",\n\"Red-necked Grebe\"=>\"Podiceps grisegena\",\n\"Gull-billed Tern\"=>\"Gelochelidon nilotica\",\n\"Pectoral Sandpiper\"=>\"Calidris melanotos\",\n\"Barred Warbler\"=>\"Sylvia nisoria\",\n\"Red-throated Pipit\"=>\"Anthus cervinus\",\n\"Grey Wagtail\"=>\"Motacilla cinerea\",\n\"Richard`s Pipit\"=>\"Anthus richardi\",\n\"Black Woodpecker\"=>\"Dryocopus martius\",\n\"Little Ringed Plover\"=>\"Charadrius dubius\",\n\"Whiskered Tern\"=>\"Chlidonias hybrida\",\n\"Lesser Redpoll\"=>\"Carduelis cabaret\",\n\"Pallas' Bunting\"=>\"Emberiza pallasi\",\n\"Ferruginous Duck\"=>\"Aythya nyroca\",\n\"Whistling Swan\"=>\"Cygnus columbianus\",\n\"Black Brant\"=>\"Branta nigricans\",\n\"Marbled Teal\"=>\"Marmaronetta angustirostris\",\n\"Canvasback\"=>\"Aythya valisineria\",\n\"Redhead\"=>\"Aythya americana\",\n\"Lesser Scaup\"=>\"Aythya affinis\",\n\"Steller`s Eider\"=>\"Polysticta stelleri\",\n\"Spectacled Eider\"=>\"Somateria fischeri\",\n\"Harlequin Duck\"=>\"Histronicus histrionicus\",\n\"Black Scoter\"=>\"Melanitta americana\",\n\"Surf Scoter\"=>\"Melanitta perspicillata\",\n\"Barrow`s Goldeneye\"=>\"Bucephala islandica\",\n\"Falcated Duck\"=>\"Anas falcata\",\n\"American Wigeon\"=>\"Anas americana\",\n\"Blue-winged Teal\"=>\"Anas discors\",\n\"American Black Duck\"=>\"Anas rubripes\",\n\"Baikal Teal\"=>\"Anas formosa\",\n\"Green-Winged Teal\"=>\"Anas carolinensis\",\n\"Hazel Grouse\"=>\"Bonasa bonasia\",\n\"Rock Partridge\"=>\"Alectoris graeca\",\n\"Red-legged Partridge\"=>\"Alectoris rufa\",\n\"Yellow-billed Loon\"=>\"Gavia adamsii\",\n\"Cory`s Shearwater\"=>\"Calonectris borealis\",\n\"Madeiran Storm-Petrel\"=>\"Oceanodroma castro\",\n\"Great White Pelican\"=>\"Pelecanus onocrotalus\",\n\"Dalmatian Pelican\"=>\"Pelecanus crispus\",\n\"American Bittern\"=>\"Botaurus lentiginosus\",\n\"Glossy Ibis\"=>\"Plegadis falcinellus\",\n\"Spanish Imperial Eagle\"=>\"Aquila adalberti\",\n\"Lesser Kestrel\"=>\"Falco naumanni\",\n\"Houbara Bustard\"=>\"Chlamydotis undulata\",\n\"Crab-Plover\"=>\"Dromas ardeola\",\n\"Cream-coloured Courser\"=>\"Cursorius cursor\",\n\"Collared Pratincole\"=>\"Glareola pratincola\",\n\"Black-winged Pratincole\"=>\"Glareola nordmanni\",\n\"Killdeer\"=>\"Charadrius vociferus\",\n\"Lesser Sand Plover\"=>\"Charadrius mongolus\",\n\"Greater Sand Plover\"=>\"Charadrius leschenaultii\",\n\"Caspian Plover\"=>\"Charadrius asiaticus\",\n\"American Golden Plover\"=>\"Pluvialis dominica\",\n\"Pacific Golden Plover\"=>\"Pluvialis fulva\",\n\"Sharp-tailed Sandpiper\"=>\"Calidris acuminata\",\n\"Broad-billed Sandpiper\"=>\"Limicola falcinellus\",\n\"Spoon-Billed Sandpiper\"=>\"Eurynorhynchus pygmaeus\",\n\"Short-Billed Dowitcher\"=>\"Limnodromus griseus\",\n\"Long-billed Dowitcher\"=>\"Limnodromus scolopaceus\",\n\"Hudsonian Godwit\"=>\"Limosa haemastica\",\n\"Little Curlew\"=>\"Numenius minutus\",\n\"Lesser Yellowlegs\"=>\"Tringa flavipes\",\n\"Wilson`s Phalarope\"=>\"Phalaropus tricolor\",\n\"Pallas`s Gull\"=>\"Larus ichthyaetus\",\n\"Laughing Gull\"=>\"Larus atricilla\",\n\"Franklin`s Gull\"=>\"Larus pipixcan\",\n\"Bonaparte`s Gull\"=>\"Larus philadelphia\",\n\"Ring-billed Gull\"=>\"Larus delawarensis\",\n\"American Herring Gull\"=>\"Larus smithsonianus\",\n\"Caspian Gull\"=>\"Larus cachinnans\",\n\"Ivory Gull\"=>\"Pagophila eburnea\",\n\"Royal Tern\"=>\"Sterna maxima\",\n\"Brünnich`s Murre\"=>\"Uria lomvia\",\n\"Crested Auklet\"=>\"Aethia cristatella\",\n\"Parakeet Auklet\"=>\"Cyclorrhynchus psittacula\",\n\"Tufted Puffin\"=>\"Lunda cirrhata\",\n\"Laughing Dove\"=>\"Streptopelia senegalensis\",\n\"Great Spotted Cuckoo\"=>\"Clamator glandarius\",\n\"Great Grey Owl\"=>\"Strix nebulosa\",\n\"Tengmalm`s Owl\"=>\"Aegolius funereus\",\n\"Red-Necked Nightjar\"=>\"Caprimulgus ruficollis\",\n\"Chimney Swift\"=>\"Chaetura pelagica\",\n\"Green Bea-Eater\"=>\"Merops orientalis\",\n\"Grey-headed Woodpecker\"=>\"Picus canus\",\n\"Lesser Short-Toed Lark\"=>\"Calandrella rufescens\",\n\"Eurasian Crag Martin\"=>\"Hirundo rupestris\",\n\"Red-rumped Swallow\"=>\"Cecropis daurica\",\n\"Blyth`s Pipit\"=>\"Anthus godlewskii\",\n\"Pechora Pipit\"=>\"Anthus gustavi\",\n\"Grey-headed Wagtail\"=>\"Motacilla thunbergi\",\n\"Yellow-Headed Wagtail\"=>\"Motacilla lutea\",\n\"White-throated Dipper\"=>\"Cinclus cinclus\",\n\"Rufous-Tailed Scrub Robin\"=>\"Cercotrichas galactotes\",\n\"Thrush Nightingale\"=>\"Luscinia luscinia\",\n\"White-throated Robin\"=>\"Irania gutturalis\",\n\"Caspian Stonechat\"=>\"Saxicola maura variegata\",\n\"Western Black-eared Wheatear\"=>\"Oenanthe hispanica\",\n\"Rufous-tailed Rock Thrush\"=>\"Monticola saxatilis\",\n\"Red-throated Thrush/Black-throated\"=>\"Turdus ruficollis\",\n\"American Robin\"=>\"Turdus migratorius\",\n\"Zitting Cisticola\"=>\"Cisticola juncidis\",\n\"Lanceolated Warbler\"=>\"Locustella lanceolata\",\n\"River Warbler\"=>\"Locustella fluviatilis\",\n\"Blyth`s Reed Warbler\"=>\"Acrocephalus dumetorum\",\n\"Caspian Reed Warbler\"=>\"Acrocephalus fuscus\",\n\"Aquatic Warbler\"=>\"Acrocephalus paludicola\",\n\"Booted Warbler\"=>\"Acrocephalus caligatus\",\n\"Marmora's Warbler\"=>\"Sylvia sarda\",\n\"Dartford Warbler\"=>\"Sylvia undata\",\n\"Subalpine Warbler\"=>\"Sylvia cantillans\",\n\"Ménétries's Warbler\"=>\"Sylvia mystacea\",\n\"Rüppel's Warbler\"=>\"Sylvia rueppelli\",\n\"Asian Desert Warbler\"=>\"Sylvia nana\",\n\"Western Orphean Warbler\"=>\"Sylvia hortensis hortensis\",\n\"Arctic Warbler\"=>\"Phylloscopus borealis\",\n\"Radde`s Warbler\"=>\"Phylloscopus schwarzi\",\n\"Western Bonelli`s Warbler\"=>\"Phylloscopus bonelli\",\n\"Red-breasted Flycatcher\"=>\"Ficedula parva\",\n\"Eurasian Penduline Tit\"=>\"Remiz pendulinus\",\n\"Daurian Shrike\"=>\"Lanius isabellinus\",\n\"Long-Tailed Shrike\"=>\"Lanius schach\",\n\"Lesser Grey Shrike\"=>\"Lanius minor\",\n\"Southern Grey Shrike\"=>\"Lanius meridionalis\",\n\"Masked Shrike\"=>\"Lanius nubicus\",\n\"Spotted Nutcracker\"=>\"Nucifraga caryocatactes\",\n\"Daurian Jackdaw\"=>\"Corvus dauuricus\",\n\"Purple-Backed Starling\"=>\"Sturnus sturninus\",\n\"Red-Fronted Serin\"=>\"Serinus pusillus\",\n\"Arctic Redpoll\"=>\"Carduelis hornemanni\",\n\"Scottish Crossbill\"=>\"Loxia scotica\",\n\"Parrot Crossbill\"=>\"Loxia pytyopsittacus\",\n\"Black-faced Bunting\"=>\"Emberiza spodocephala\",\n\"Pink-footed Goose\"=>\"Anser brachyrhynchus\",\n\"Black-winged Kite\"=>\"Elanus caeruleus\",\n\"European Bee-eater\"=>\"Merops apiaster\",\n\"Sabine`s Gull\"=>\"Larus sabini\",\n\"Sooty Shearwater\"=>\"Puffinus griseus\",\n\"Lesser Canada Goose\"=>\"Branta hutchinsii\",\n\"Ring-necked Duck\"=>\"Aythya collaris\",\n\"Greater Flamingo\"=>\"Phoenicopterus roseus\",\n\"Iberian Chiffchaff\"=>\"Phylloscopus ibericus\",\n\"Ashy-headed Wagtail\"=>\"Motacilla cinereocapilla\",\n\"Stilt Sandpiper\"=>\"Calidris himantopus\",\n\"Siberian Stonechat\"=>\"Saxicola maurus\",\n\"Greater Yellowlegs\"=>\"Tringa melanoleuca\",\n\"Forster`s Tern\"=>\"Sterna forsteri\",\n\"Dusky Warbler\"=>\"Phylloscopus fuscatus\",\n\"Cirl Bunting\"=>\"Emberiza cirlus\",\n\"Olive-backed Pipit\"=>\"Anthus hodgsoni\",\n\"Sociable Lapwing\"=>\"Vanellus gregarius\",\n\"Spotted Sandpiper\"=>\"Actitis macularius\",\n\"Baird`s Sandpiper\"=>\"Calidris bairdii\",\n\"Rustic Bunting\"=>\"Emberiza rustica\",\n\"Yellow-browed Bunting\"=>\"Emberiza chrysophrys\",\n\"Great Shearwater\"=>\"Puffinus gravis\",\n\"Bonelli`s Eagle\"=>\"Aquila fasciata\",\n\"Calandra Lark\"=>\"Melanocorypha calandra\",\n\"Sardinian Warbler\"=>\"Sylvia melanocephala\",\n\"Ross's Gull\"=>\"Larus roseus\",\n\"Yellow-Breasted Bunting\"=>\"Emberiza aureola\",\n\"Pine Bunting\"=>\"Emberiza leucocephalos\",\n\"Black Guillemot\"=>\"Cepphus grylle\",\n\"Pied-billed Grebe\"=>\"Podilymbus podiceps\",\n\"Soft-plumaged Petrel\"=>\"Pterodroma mollis\",\n\"Bulwer's Petrel\"=>\"Bulweria bulwerii\",\n\"White-Faced Storm-Petrel\"=>\"Pelagodroma marina\",\n\"Pallas’s Fish Eagle\"=>\"Haliaeetus leucoryphus\",\n\"Sandhill Crane\"=>\"Grus canadensis\",\n\"Macqueen’s Bustard\"=>\"Chlamydotis macqueenii\",\n\"White-tailed Lapwing\"=>\"Vanellus leucurus\",\n\"Great Knot\"=>\"Calidris tenuirostris\",\n\"Semipalmated Sandpiper\"=>\"Calidris pusilla\",\n\"Red-necked Stint\"=>\"Calidris ruficollis\",\n\"Slender-billed Curlew\"=>\"Numenius tenuirostris\",\n\"Bridled Tern\"=>\"Onychoprion anaethetus\",\n\"Pallas’s Sandgrouse\"=>\"Syrrhaptes paradoxus\",\n\"European Scops Owl\"=>\"Otus scops\",\n\"Northern Hawk Owl\"=>\"Surnia ulula\",\n\"White-Throated Needletail\"=>\"Hirundapus caudacutus\",\n\"Belted Kingfisher\"=>\"Ceryle alcyon\",\n\"Blue-cheeked Bee-eater\"=>\"Merops persicus\",\n\"Black-headed Wagtail\"=>\"Motacilla feldegg\",\n\"Northern Mockingbird\"=>\"Mimus polyglottos\",\n\"Alpine Accentor\"=>\"Prunella collaris\",\n\"Red-flanked Bluetail\"=>\"Tarsiger cyanurus\",\n\"Isabelline Wheatear\"=>\"Oenanthe isabellina\",\n\"Pied Wheatear\"=>\"Oenanthe pleschanka\",\n\"Eastern Black-eared Wheatear\"=>\"Oenanthe melanoleuca\",\n\"Desert Wheatear\"=>\"Oenanthe deserti\",\n\"White`s Thrush\"=>\"Zoothera aurea\",\n\"Siberian Thrush\"=>\"Zoothera sibirica\",\n\"Eyebrowed Thrush\"=>\"Turdus obscurus\",\n\"Dusky Thrush\"=>\"Turdus eunomus\",\n\"Black-throated Thrush\"=>\"Turdus atrogularis\",\n\"Pallas`s Grasshopper Warbler\"=>\"Locustella certhiola\",\n\"Spectacled Warbler\"=>\"Sylvia conspicillata\",\n\"Two-barred Warbler\"=>\"Phylloscopus plumbeitarsus\",\n\"Eastern Bonelli’s Warbler\"=>\"Phylloscopus orientalis\",\n\"Collared Flycatcher\"=>\"Ficedula albicollis\",\n\"Wallcreeper\"=>\"Tichodroma muraria\",\n\"Turkestan Shrike\"=>\"Lanius phoenicuroides\",\n\"Steppe Grey Shrike\"=>\"Lanius pallidirostris\",\n\"Spanish Sparrow\"=>\"Passer hispaniolensis\",\n\"Red-eyed Vireo\"=>\"Vireo olivaceus\",\n\"Myrtle Warbler\"=>\"Dendroica coronata\",\n\"White-crowned Sparrow\"=>\"Zonotrichia leucophrys\",\n\"White-throated Sparrow\"=>\"Zonotrichia albicollis\",\n\"Cretzschmar`s Bunting\"=>\"Emberiza caesia\",\n\"Chestnut Bunting\"=>\"Emberiza rutila\",\n\"Red-headed Bunting\"=>\"Emberiza bruniceps\",\n\"Black-headed Bunting\"=>\"Emberiza melanocephala\",\n\"Indigo Bunting\"=>\"Passerina cyanea\",\n\"Balearic Woodchat Shrike\"=>\"Lanius senator badius\",\n\"Demoiselle Crane\"=>\"Grus virgo\",\n\"Chough\"=>\"Pyrrhocorax pyrrhocorax\",\n\"Red-Billed Chough\"=>\"Pyrrhocorax graculus\",\n\"Elegant Tern\"=>\"Sterna elegans\",\n\"Chukar\"=>\"Alectoris chukar\",\n\"Yellow-Billed Cuckoo\"=>\"Coccyzus americanus\",\n\"American Sandwich Tern\"=>\"Sterna sandvicensis acuflavida\",\n\"Olive-Tree Warbler\"=>\"Hippolais olivetorum\",\n\"Eastern Olivaceous Warbler\"=>\"Acrocephalus pallidus\",\n\"Indian Cormorant\"=>\"Phalacrocorax fuscicollis\",\n\"Spur-Winged Lapwing\"=>\"Vanellus spinosus\",\n\"Yelkouan Shearwater\"=>\"Puffinus yelkouan\",\n\"Trumpeter Finch\"=>\"Bucanetes githagineus\",\n\"Red Grouse\"=>\"Lagopus scoticus\",\n\"Rock Ptarmigan\"=>\"Lagopus mutus\",\n\"Long-Tailed Cormorant\"=>\"Phalacrocorax africanus\",\n\"Double-crested Cormorant\"=>\"Phalacrocorax auritus\",\n\"Magnificent Frigatebird\"=>\"Fregata magnificens\",\n\"Naumann's Thrush\"=>\"Turdus naumanni\",\n\"Oriental Pratincole\"=>\"Glareola maldivarum\",\n\"Bufflehead\"=>\"Bucephala albeola\",\n\"Snowfinch\"=>\"Montifrigilla nivalis\",\n\"Ural owl\"=>\"Strix uralensis\",\n\"Spanish Wagtail\"=>\"Motacilla iberiae\",\n\"Song Sparrow\"=>\"Melospiza melodia\",\n\"Rock Bunting\"=>\"Emberiza cia\",\n\"Siberian Rubythroat\"=>\"Luscinia calliope\",\n\"Pallid Swift\"=>\"Apus pallidus\",\n\"Eurasian Pygmy Owl\"=>\"Glaucidium passerinum\",\n\"Madeira Little Shearwater\"=>\"Puffinus baroli\",\n\"House Finch\"=>\"Carpodacus mexicanus\",\n\"Green Heron\"=>\"Butorides virescens\",\n\"Solitary Sandpiper\"=>\"Tringa solitaria\",\n\"Heuglin's Gull\"=>\"Larus heuglini\"\n);\n\n\n$result = array();\nforeach ($items as $key=>$value) {\n\tif (strpos(strtolower($key), $q) !== false) {\n\t\tarray_push($result, array(\"id\"=>$value, \"label\"=>$key, \"value\" => strip_tags($key)));\n\t}\n\tif (count($result) > 11)\n\t\tbreak;\n}\n\n// json_encode is available in PHP 5.2 and above, or you can install a PECL module in earlier versions\necho json_encode($result);\n\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/xml.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - XML data parsed once</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div/>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).attr( \"scrollTop\", 0 );\n\t\t}\n\n\t\t$.ajax({\n\t\t\turl: \"london.xml\",\n\t\t\tdataType: \"xml\",\n\t\t\tsuccess: function( xmlResponse ) {\n\t\t\t\tvar data = $( \"geoname\", xmlResponse ).map(function() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: $( \"name\", this ).text() + \", \" +\n\t\t\t\t\t\t\t( $.trim( $( \"countryName\", this ).text() ) || \"(unknown country)\" ),\n\t\t\t\t\t\tid: $( \"geonameId\", this ).text()\n\t\t\t\t\t};\n\t\t\t\t}).get();\n\t\t\t\t$( \"#birds\" ).autocomplete({\n\t\t\t\t\tsource: data,\n\t\t\t\t\tminLength: 0,\n\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\t\t\"Selected: \" + ui.item.value + \", geonameId: \" + ui.item.id :\n\t\t\t\t\t\t\t\"Nothing selected, input was \" + this.value );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">London matches: </label>\n\t<input id=\"birds\" />\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>This demo shows how to retrieve some XML data, parse it using jQuery's methods, then provide it to the autocomplete as the datasource.</p>\n<p>This should also serve as a reference on how to parse a remote XML datasource - the parsing would just happen for each request within the source-callback.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/checkbox.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Checkboxes</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#check\" ).button();\n\t\t$( \"#format\" ).buttonset();\n\t});\n\t</script>\n\t<style>\n\t#format { margin-top: 2em; }\n\t</style>\n</head>\n<body>\n\n<input type=\"checkbox\" id=\"check\" /><label for=\"check\">Toggle</label>\n\n<div id=\"format\">\n\t<input type=\"checkbox\" id=\"check1\" /><label for=\"check1\">B</label>\n\t<input type=\"checkbox\" id=\"check2\" /><label for=\"check2\">I</label>\n\t<input type=\"checkbox\" id=\"check3\" /><label for=\"check3\">U</label>\n</div>\n\n<div class=\"demo-description\">\n<p>A checkbox is styled as a toggle button with the button widget. The label element associated with the checkbox is used for the button text.</p>\n<p>This demo also demonstrates three checkboxes styled as a button set by calling <code>.buttonset()</code> on a common container.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"input[type=submit], a, button\" )\n\t\t\t.button()\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<button>A button element</button>\n\n<input type=\"submit\" value=\"A submit button\">\n\n<a href=\"#\">An anchor</a>\n\n<div class=\"demo-description\">\n<p>Examples of the markup that can be used for buttons: A button element, an input of type submit and an anchor.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"button:first\" ).button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-locked\"\n\t\t\t},\n\t\t\ttext: false\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-locked\"\n\t\t\t}\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-gear\",\n\t\t\t\tsecondary: \"ui-icon-triangle-1-s\"\n\t\t\t}\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-gear\",\n\t\t\t\tsecondary: \"ui-icon-triangle-1-s\"\n\t\t\t},\n\t\t\ttext: false\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<button>Button with icon only</button>\n<button>Button with icon on the left</button>\n<button>Button with two icons</button>\n<button>Button with two icons and no text</button>\n\n<div class=\"demo-description\">\n<p>Some buttons with various combinations of text and icons, here specified via metadata.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"radio.html\">Radios</a></li>\n\t<li><a href=\"checkbox.html\">Checkboxes</a></li>\n\t<li><a href=\"icons.html\">Icons</a></li>\n\t<li><a href=\"toolbar.html\">Toolbar</a></li>\n\t<li><a href=\"splitbutton.html\">Split Button</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/radio.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Radios</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#radio\" ).buttonset();\n\t});\n\t</script>\n</head>\n<body>\n\n<form>\n\t<div id=\"radio\">\n\t\t<input type=\"radio\" id=\"radio1\" name=\"radio\" /><label for=\"radio1\">Choice 1</label>\n\t\t<input type=\"radio\" id=\"radio2\" name=\"radio\" checked=\"checked\" /><label for=\"radio2\">Choice 2</label>\n\t\t<input type=\"radio\" id=\"radio3\" name=\"radio\" /><label for=\"radio3\">Choice 3</label>\n\t</div>\n</form>\n\n<div class=\"demo-description\">\n<p>A set of three radio buttons transformed into a button set.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/splitbutton.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Split button</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\t.ui-menu { position: absolute; width: 100px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#rerun\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\talert( \"Running the last action\" );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.button({\n\t\t\t\t\ttext: false,\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-triangle-1-s\"\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.click(function() {\n\t\t\t\t\tvar menu = $( this ).parent().next().show().position({\n\t\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\t\tat: \"left bottom\",\n\t\t\t\t\t\tof: this\n\t\t\t\t\t});\n\t\t\t\t\t$( document ).one( \"click\", function() {\n\t\t\t\t\t\tmenu.hide();\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t\t.parent()\n\t\t\t\t\t.buttonset()\n\t\t\t\t\t.next()\n\t\t\t\t\t\t.hide()\n\t\t\t\t\t\t.menu();\n\t});\n\t</script>\n</head>\n<body>\n\n<div>\n\t<div>\n\t\t<button id=\"rerun\">Run last action</button>\n\t\t<button id=\"select\">Select an action</button>\n\t</div>\n\t<ul>\n\t\t<li><a href=\"#\">Open...</a></li>\n\t\t<li><a href=\"#\">Save</a></li>\n\t\t<li><a href=\"#\">Delete</a></li>\n\t</ul>\n</div>\n\n<div class=\"demo-description\">\n<p>An example of a split button built with two buttons: A plain button with just text, one with only a primary icon\nand no text. Both are grouped together in a set.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/toolbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Toolbar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#toolbar {\n\t\tpadding: 10px 4px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#beginning\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-start\"\n\t\t\t}\n\t\t});\n\t\t$( \"#rewind\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-prev\"\n\t\t\t}\n\t\t});\n\t\t$( \"#play\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t}\n\t\t})\n\t\t.click(function() {\n\t\t\tvar options;\n\t\t\tif ( $( this ).text() === \"play\" ) {\n\t\t\t\toptions = {\n\t\t\t\t\tlabel: \"pause\",\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-pause\"\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\toptions = {\n\t\t\t\t\tlabel: \"play\",\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\t$( this ).button( \"option\", options );\n\t\t});\n\t\t$( \"#stop\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-stop\"\n\t\t\t}\n\t\t})\n\t\t.click(function() {\n\t\t\t$( \"#play\" ).button( \"option\", {\n\t\t\t\tlabel: \"play\",\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t$( \"#forward\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-next\"\n\t\t\t}\n\t\t});\n\t\t$( \"#end\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-end\"\n\t\t\t}\n\t\t});\n\t\t$( \"#shuffle\" ).button();\n\t\t$( \"#repeat\" ).buttonset();\n\t});\n\t</script>\n</head>\n<body>\n\n<span id=\"toolbar\" class=\"ui-widget-header ui-corner-all\">\n\t<button id=\"beginning\">go to beginning</button>\n\t<button id=\"rewind\">rewind</button>\n\t<button id=\"play\">play</button>\n\t<button id=\"stop\">stop</button>\n\t<button id=\"forward\">fast forward</button>\n\t<button id=\"end\">go to end</button>\n\n\t<input type=\"checkbox\" id=\"shuffle\" /><label for=\"shuffle\">Shuffle</label>\n\n\t<span id=\"repeat\">\n\t\t<input type=\"radio\" id=\"repeat0\" name=\"repeat\" checked=\"checked\" /><label for=\"repeat0\">No Repeat</label>\n\t\t<input type=\"radio\" id=\"repeat1\" name=\"repeat\" /><label for=\"repeat1\">Once</label>\n\t\t<input type=\"radio\" id=\"repeatall\" name=\"repeat\" /><label for=\"repeatall\">All</label>\n\t</span>\n</span>\n\n<div class=\"demo-description\">\n<p>\n\tA mediaplayer toolbar. Take a look at the underlying markup: A few button elements,\n\tan input of type checkbox for the Shuffle button, and three inputs of type radio for the Repeat options. \n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/alt-field.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Populate alternate field</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\taltField: \"#alternate\",\n\t\t\taltFormat: \"DD, d MM, yy\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\">&nbsp;<input type=\"text\" id=\"alternate\" size=\"30\"/></p>\n\n<div class=\"demo-description\">\n<p>Populate an alternate field with its own date format whenever a date is selected using the <code>altField</code> and <code>altFormat</code> options.  This feature could be used to present a human-friendly date for user selection, while passing a more computer-friendly date through for further processing.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/animation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Animations</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-bounce.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-clip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-drop.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fold.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-slide.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t\t$( \"#anim\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\", \"showAnim\", $( this ).val() );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\" size=\"30\"/></p>\n\n<p>Animations:<br />\n\t<select id=\"anim\">\n\t\t<option value=\"show\">Show (default)</option>\n\t\t<option value=\"slideDown\">Slide down</option>\n\t\t<option value=\"fadeIn\">Fade in</option>\n\t\t<option value=\"blind\">Blind (UI Effect)</option>\n\t\t<option value=\"bounce\">Bounce (UI Effect)</option>\n\t\t<option value=\"clip\">Clip (UI Effect)</option>\n\t\t<option value=\"drop\">Drop (UI Effect)</option>\n\t\t<option value=\"fold\">Fold (UI Effect)</option>\n\t\t<option value=\"slide\">Slide (UI Effect)</option>\n\t\t<option value=\"\">None</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>Use different animations when opening or closing the datepicker.  Choose an animation from the dropdown, then click on the input to see its effect.  You can use one of the three standard animations or any of the UI Effects.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/buttonbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display button bar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowButtonPanel: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Display a button for selecting Today's date and a Done button for closing the calendar with the boolean <code>showButtonPanel</code> option.  Each button is enabled by default when the bar is displayed, but can be turned off with additional options.  Button text is customizable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-formats.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Format date</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t\t$( \"#format\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\", \"dateFormat\", $( this ).val() );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\" size=\"30\"/></p>\n\n<p>Format options:<br />\n\t<select id=\"format\">\n\t\t<option value=\"mm/dd/yy\">Default - mm/dd/yy</option>\n\t\t<option value=\"yy-mm-dd\">ISO 8601 - yy-mm-dd</option>\n\t\t<option value=\"d M, y\">Short - d M, y</option>\n\t\t<option value=\"d MM, y\">Medium - d MM, y</option>\n\t\t<option value=\"DD, d MM, yy\">Full - DD, d MM, yy</option>\n\t\t<option value=\"'day' d 'of' MM 'in the year' yy\">With text - 'day' d 'of' MM 'in the year' yy</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>Display date feedback in a variety of ways.  Choose a date format from the dropdown, then click on the input and select a date to see it in that format.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-range.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Select a Date Range</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#from\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: true,\n\t\t\tnumberOfMonths: 3,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#to\" ).datepicker( \"option\", \"minDate\", selectedDate );\n\t\t\t}\n\t\t});\n\t\t$( \"#to\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: true,\n\t\t\tnumberOfMonths: 3,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#from\" ).datepicker( \"option\", \"maxDate\", selectedDate );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<label for=\"from\">From</label>\n<input type=\"text\" id=\"from\" name=\"from\"/>\n<label for=\"to\">to</label>\n<input type=\"text\" id=\"to\" name=\"to\"/>\n\n<div class=\"demo-description\">\n<p>Select the date range to search for.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker is tied to a standard form input field.  Focus on the input (click, or use the tab key) to open an interactive calendar in a small overlay.  Choose a date, click elsewhere on the page (blur the input), or hit the Esc key to close. If a date is chosen, feedback is shown as the input's value.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/dropdown-month-year.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display month &amp; year menus</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tchangeMonth: true,\n\t\t\tchangeYear: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Show month and year dropdowns in place of the static month/year header to facilitate navigation through large timeframes.  Add the boolean <code>changeMonth</code> and <code>changeYear</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/icon-trigger.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Icon trigger</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowOn: \"button\",\n\t\t\tbuttonImage: \"images/calendar.gif\",\n\t\t\tbuttonImageOnly: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Click the icon next to the input field to show the datepicker.  Set the datepicker to open on focus (default behavior), on icon click, or both.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"date-formats.html\">Format date</a></li>\n\t<li><a href=\"min-max.html\">Restrict date range</a></li>\n\t<li><a href=\"localization.html\">Localize calendar</a></li>\n\t<li><a href=\"alt-field.html\">Populate alternate field</a></li>\n\t<li><a href=\"inline.html\">Display inline</a></li>\n\t<li><a href=\"buttonbar.html\">Display button bar</a></li>\n\t<li><a href=\"dropdown-month-year.html\">Display month &amp; year menus</a></li>\t\t\n\t<li><a href=\"other-months.html\">Dates in other months</a></li>\t\t\n\t<li><a href=\"show-week.html\">Show week of the year</a></li>\t\t\n\t<li><a href=\"multiple-calendars.html\">Display multiple months</a></li>\t\t\n\t<li><a href=\"icon-trigger.html\">Icon trigger</a></li>\n\t<li><a href=\"animation.html\">Animations</a></li>\n\t<li><a href=\"date-range.html\">Date Range</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/inline.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display inline</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t});\n\t</script>\n</head>\n<body>\n\nDate: <div id=\"datepicker\"></div>\n\n<div class=\"demo-description\">\n<p>Display the datepicker embedded in the page instead of in an overlay.  Simply call .datepicker() on a div instead of an input.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/localization.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Localize calendar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-af.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ar.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ar-DZ.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-az.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-bg.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-bs.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ca.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-cs.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-cy-GB.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-da.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-de.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-el.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-AU.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-GB.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-NZ.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-eo.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-es.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-et.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-eu.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fa.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fo.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fr-CH.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-gl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-he.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hu.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hy.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-id.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-is.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-it.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ja.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ka.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-kk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-km.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ko.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lb.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lt.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lv.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-mk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ml.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ms.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-nl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-nl-BE.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-no.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pt.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pt-BR.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-rm.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ro.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ru.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sq.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sr-SR.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sv.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ta.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-th.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-tj.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-tr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-uk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-vi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-CN.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-HK.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-TW.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$.datepicker.setDefaults( $.datepicker.regional[ \"\" ] );\n\t\t$( \"#datepicker\" ).datepicker( $.datepicker.regional[ \"fr\" ] );\n\t\t$( \"#locale\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\",\n\t\t\t\t$.datepicker.regional[ $( this ).val() ] );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"/>&nbsp;\n\t<select id=\"locale\">\n\t\t<option value=\"af\">Afrikaans</option>\n\t\t<option value=\"sq\">Albanian (Gjuha shqipe)</option>\n\t\t<option value=\"ar-DZ\">Algerian Arabic</option>\n\t\t<option value=\"ar\">Arabic (&#8235;(&#1604;&#1593;&#1585;&#1576;&#1610;</option>\n\t\t<option value=\"hy\">Armenian (&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;)</option>\n\t\t<option value=\"az\">Azerbaijani (Az&#601;rbaycan dili)</option>\n\t\t<option value=\"eu\">Basque (Euskara)</option>\n\t\t<option value=\"bs\">Bosnian (Bosanski)</option>\n\t\t<option value=\"bg\">Bulgarian (&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;)</option>\n\t\t<option value=\"ca\">Catalan (Catal&agrave;)</option>\n\t\t<option value=\"zh-HK\">Chinese Hong Kong (&#32321;&#39636;&#20013;&#25991;)</option>\n\t\t<option value=\"zh-CN\">Chinese Simplified (&#31616;&#20307;&#20013;&#25991;)</option>\n\t\t<option value=\"zh-TW\">Chinese Traditional (&#32321;&#39636;&#20013;&#25991;)</option>\n\t\t<option value=\"hr\">Croatian (Hrvatski jezik)</option>\n\t\t<option value=\"cs\">Czech (&#269;e&#353;tina)</option>\n\t\t<option value=\"da\">Danish (Dansk)</option>\n\t\t<option value=\"nl-BE\">Dutch (Belgium)</option>\n\t\t<option value=\"nl\">Dutch (Nederlands)</option>\n\t\t<option value=\"en-AU\">English/Australia</option>\n\t\t<option value=\"en-NZ\">English/New Zealand</option>\n\t\t<option value=\"en-GB\">English/UK</option>\n\t\t<option value=\"eo\">Esperanto</option>\n\t\t<option value=\"et\">Estonian (eesti keel)</option>\n\t\t<option value=\"fo\">Faroese (f&oslash;royskt)</option>\n\t\t<option value=\"fa\">Farsi/Persian (&#8235;(&#1601;&#1575;&#1585;&#1587;&#1740;</option>\n\t\t<option value=\"fi\">Finnish (suomi)</option>\n\t\t<option value=\"fr\" selected=\"selected\">French (Fran&ccedil;ais)</option>\n\t\t<option value=\"fr-CH\">French/Swiss (Fran&ccedil;ais de Suisse)</option>\n\t\t<option value=\"gl\">Galician</option>\n\t\t<option value=\"ge\">Georgian</option>\n\t\t<option value=\"de\">German (Deutsch)</option>\n\t\t<option value=\"el\">Greek (&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;)</option>\n\t\t<option value=\"he\">Hebrew (&#8235;(&#1506;&#1489;&#1512;&#1497;&#1514;</option>\n\t\t<option value=\"hi\">Hindi (&#2361;&#2367;&#2306;&#2342;&#2368;)</option>\n\t\t<option value=\"hu\">Hungarian (Magyar)</option>\n\t\t<option value=\"is\">Icelandic (&Otilde;slenska)</option>\n\t\t<option value=\"id\">Indonesian (Bahasa Indonesia)</option>\n\t\t<option value=\"it\">Italian (Italiano)</option>\n\t\t<option value=\"ja\">Japanese (&#26085;&#26412;&#35486;)</option>\n\t\t<option value=\"kk\">Kazakhstan (Kazakh)</option>\n\t\t<option value=\"km\">Khmer</option>\n\t\t<option value=\"ko\">Korean (&#54620;&#44397;&#50612;)</option>\n\t\t<option value=\"lv\">Latvian (Latvie&ouml;u Valoda)</option>\n\t\t<option value=\"lt\">Lithuanian (lietuviu kalba)</option>\n\t\t<option value=\"lb\">Luxembourgish</option>\n\t\t<option value=\"mk\">Macedonian</option>\n\t\t<option value=\"ml\">Malayalam</option>\n\t\t<option value=\"ms\">Malaysian (Bahasa Malaysia)</option>\n\t\t<option value=\"no\">Norwegian (Norsk)</option>\n\t\t<option value=\"pl\">Polish (Polski)</option>\n\t\t<option value=\"pt\">Portuguese (Portugu&ecirc;s)</option>\n\t\t<option value=\"pt-BR\">Portuguese/Brazilian (Portugu&ecirc;s)</option>\n\t\t<option value=\"rm\">Rhaeto-Romanic (Romansh)</option>\n\t\t<option value=\"ro\">Romanian (Rom&acirc;n&#259;)</option>\n\t\t<option value=\"ru\">Russian (&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;)</option>\n\t\t<option value=\"sr\">Serbian (&#1089;&#1088;&#1087;&#1089;&#1082;&#1080; &#1112;&#1077;&#1079;&#1080;&#1082;)</option>\n\t\t<option value=\"sr-SR\">Serbian (srpski jezik)</option>\n\t\t<option value=\"sk\">Slovak (Slovencina)</option>\n\t\t<option value=\"sl\">Slovenian (Slovenski Jezik)</option>\n\t\t<option value=\"es\">Spanish (Espa&ntilde;ol)</option>\n\t\t<option value=\"sv\">Swedish (Svenska)</option>\n\t\t<option value=\"ta\">Tamil (&#2980;&#2990;&#3007;&#2996;&#3021;)</option>\n\t\t<option value=\"th\">Thai (&#3616;&#3634;&#3625;&#3634;&#3652;&#3607;&#3618;)</option>\n\t\t<option value=\"tj\">Tajikistan</option>\n\t\t<option value=\"tr\">Turkish (T&uuml;rk&ccedil;e)</option>\n\t\t<option value=\"uk\">Ukranian (&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072;)</option>\n\t\t<option value=\"vi\">Vietnamese (Ti&#7871;ng Vi&#7879;t)</option>\n\t\t<option value=\"cy-GB\">Welsh/UK (Cymraeg)</option>\n\t</select></p>\n\n<div class=\"demo-description\">\n<p>Localize the datepicker calendar language and format (English / Western formatting is the default).  The datepicker includes built-in support for languages that read right-to-left, such as Arabic and Hebrew.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/min-max.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Restrict date range</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({ minDate: -20, maxDate: \"+1M +10D\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Restrict the range of selectable dates with the <code>minDate</code> and <code>maxDate</code> options.  Set the beginning and end dates as actual dates (new Date(2009, 1 - 1, 26)), as a numeric offset from today (-20), or as a string of periods and units ('+1M +10D').  For the last, use 'D' for days, 'W' for weeks, 'M' for months, or 'Y' for years.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/multiple-calendars.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display multiple months</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tnumberOfMonths: 3,\n\t\t\tshowButtonPanel: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Set the <code>numberOfMonths</code> option to an integer of 2 or more to show multiple months in a single datepicker.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/other-months.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Dates in other months</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowOtherMonths: true,\n\t\t\tselectOtherMonths: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker can show dates that come from other than the main month\n\tbeing displayed. These other dates can also be made selectable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/show-week.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Show week of the year</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowWeek: true,\n\t\t\tfirstDay: 1\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker can show the week of the year. The default calculation follows\n\tthe ISO 8601 definition: the week starts on Monday, the first week of the year\n\tcontains the first Thursday of the year. This means that some days from one\n\tyear may be placed into weeks 'belonging' to another year.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/demos.css",
    "content": "body {\n\tfont-size: 62.5%;\n\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\";\n}\n\ntable {\n\tfont-size: 1em;\n}\n\n.demo-description {\n\tclear: both;\n\tpadding: 12px;\n\tfont-size: 1.3em;\n\tline-height: 1.4em;\n}\n\n.ui-draggable, .ui-droppable {\n\tbackground-position: top;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/animated.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Animation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t// increase the default animation speed to exaggerate the effect\n\t$.fx.speeds._default = 1000;\n\t$(function() {\n\t\t$( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\tshow: \"blind\",\n\t\t\thide: \"explode\"\n\t\t});\n\n\t\t$( \"#opener\" ).click(function() {\n\t\t\t$( \"#dialog\" ).dialog( \"open\" );\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Basic dialog\">\n\t<p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>\n</div>\n\n<button id=\"opener\">Open Dialog</button>\n\n<div class=\"demo-description\">\n<p>Dialogs may be animated by specifying an effect for the show and/or hide properties.  You must include the individual effects file for any effects you would like to use.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog\" ).dialog();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Basic dialog\">\n\t<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>\n</div>\n\n<div class=\"demo-description\">\n<p>The basic dialog window is an overlay positioned within the viewport and is protected from page content (like select elements) shining through with an iframe.  It has a title bar and a content area, and can be moved, resized and closed with the 'x' icon by default.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"animated.html\">Animated dialog</a></li>\n\t<li><a href=\"modal.html\">Modal dialog</a></li>\n\t<li><a href=\"modal-message.html\">Modal message</a></li>\n\t<li><a href=\"modal-confirmation.html\">Modal confirmation</a></li>\n\t<li><a href=\"modal-form.html\">Modal form</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-confirmation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal confirmation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-confirm\" ).dialog({\n\t\t\tresizable: false,\n\t\t\theight:140,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\t\"Delete all items\": function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-confirm\" title=\"Empty the recycle bin?\">\n\t<p><span class=\"ui-icon ui-icon-alert\" style=\"float:left; margin:0 7px 20px 0;\"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>Confirm an action that may be destructive or important.  Set the <code>modal</code> option to true, and specify primary and secondary user actions with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-form.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal form</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\tbody { font-size: 62.5%; }\n\t\tlabel, input { display:block; }\n\t\tinput.text { margin-bottom:12px; width:95%; padding: .4em; }\n\t\tfieldset { padding:0; border:0; margin-top:25px; }\n\t\th1 { font-size: 1.2em; margin: .6em 0; }\n\t\tdiv#users-contain { width: 350px; margin: 20px 0; }\n\t\tdiv#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }\n\t\tdiv#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }\n\t\t.ui-dialog .ui-state-error { padding: .3em; }\n\t\t.validateTips { border: 1px solid transparent; padding: 0.3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar name = $( \"#name\" ),\n\t\t\temail = $( \"#email\" ),\n\t\t\tpassword = $( \"#password\" ),\n\t\t\tallFields = $( [] ).add( name ).add( email ).add( password ),\n\t\t\ttips = $( \".validateTips\" );\n\n\t\tfunction updateTips( t ) {\n\t\t\ttips\n\t\t\t\t.text( t )\n\t\t\t\t.addClass( \"ui-state-highlight\" );\n\t\t\tsetTimeout(function() {\n\t\t\t\ttips.removeClass( \"ui-state-highlight\", 1500 );\n\t\t\t}, 500 );\n\t\t}\n\n\t\tfunction checkLength( o, n, min, max ) {\n\t\t\tif ( o.val().length > max || o.val().length < min ) {\n\t\t\t\to.addClass( \"ui-state-error\" );\n\t\t\t\tupdateTips( \"Length of \" + n + \" must be between \" +\n\t\t\t\t\tmin + \" and \" + max + \".\" );\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkRegexp( o, regexp, n ) {\n\t\t\tif ( !( regexp.test( o.val() ) ) ) {\n\t\t\t\to.addClass( \"ui-state-error\" );\n\t\t\t\tupdateTips( n );\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t$( \"#dialog-form\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\theight: 300,\n\t\t\twidth: 350,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\t\"Create an account\": function() {\n\t\t\t\t\tvar bValid = true;\n\t\t\t\t\tallFields.removeClass( \"ui-state-error\" );\n\n\t\t\t\t\tbValid = bValid && checkLength( name, \"username\", 3, 16 );\n\t\t\t\t\tbValid = bValid && checkLength( email, \"email\", 6, 80 );\n\t\t\t\t\tbValid = bValid && checkLength( password, \"password\", 5, 16 );\n\n\t\t\t\t\tbValid = bValid && checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, \"Username may consist of a-z, 0-9, underscores, begin with a letter.\" );\n\t\t\t\t\t// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\t\t\tbValid = bValid && checkRegexp( email, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i, \"eg. ui@jquery.com\" );\n\t\t\t\t\tbValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, \"Password field only allow : a-z 0-9\" );\n\n\t\t\t\t\tif ( bValid ) {\n\t\t\t\t\t\t$( \"#users tbody\" ).append( \"<tr>\" +\n\t\t\t\t\t\t\t\"<td>\" + name.val() + \"</td>\" + \n\t\t\t\t\t\t\t\"<td>\" + email.val() + \"</td>\" + \n\t\t\t\t\t\t\t\"<td>\" + password.val() + \"</td>\" +\n\t\t\t\t\t\t\"</tr>\" ); \n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tallFields.val( \"\" ).removeClass( \"ui-state-error\" );\n\t\t\t}\n\t\t});\n\n\t\t$( \"#create-user\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\t$( \"#dialog-form\" ).dialog( \"open\" );\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-form\" title=\"Create new user\">\n\t<p class=\"validateTips\">All form fields are required.</p>\n\n\t<form>\n\t<fieldset>\n\t\t<label for=\"name\">Name</label>\n\t\t<input type=\"text\" name=\"name\" id=\"name\" class=\"text ui-widget-content ui-corner-all\" />\n\t\t<label for=\"email\">Email</label>\n\t\t<input type=\"text\" name=\"email\" id=\"email\" value=\"\" class=\"text ui-widget-content ui-corner-all\" />\n\t\t<label for=\"password\">Password</label>\n\t\t<input type=\"password\" name=\"password\" id=\"password\" value=\"\" class=\"text ui-widget-content ui-corner-all\" />\n\t</fieldset>\n\t</form>\n</div>\n\n\n<div id=\"users-contain\" class=\"ui-widget\">\n\t<h1>Existing Users:</h1>\n\t<table id=\"users\" class=\"ui-widget ui-widget-content\">\n\t\t<thead>\n\t\t\t<tr class=\"ui-widget-header \">\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Email</th>\n\t\t\t\t<th>Password</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td>John Doe</td>\n\t\t\t\t<td>john.doe@example.com</td>\n\t\t\t\t<td>johndoe1</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n<button id=\"create-user\">Create new user</button>\n\n<div class=\"demo-description\">\n<p>Use a modal dialog to require that the user enter data during a multi-step process.  Embed form markup in the content area, set the <code>modal</code> option to true, and specify primary and secondary user actions with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-message.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal message</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-message\" ).dialog({\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\tOk: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-message\" title=\"Download complete\">\n\t<p>\n\t\t<span class=\"ui-icon ui-icon-circle-check\" style=\"float:left; margin:0 7px 50px 0;\"></span>\n\t\tYour files have downloaded successfully into the My Downloads folder.\n\t</p>\n\t<p>\n\t\tCurrently using <b>36% of your storage space</b>.\n\t</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>Use a modal dialog to explicitly acknowledge information or an action before continuing their work.  Set the <code>modal</code> option to true, and specify a primary action (Ok) with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Basic modal</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-modal\" ).dialog({\n\t\t\theight: 140,\n\t\t\tmodal: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-modal\" title=\"Basic modal dialog\">\n\t<p>Adding the modal overlay screen makes the dialog look more prominent because it dims out the page content.</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>A modal dialog prevents the user from interacting with the rest of the page until it is closed.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/constrain-movement.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Constrain movement</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.draggable { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable, #draggable2 { margin-bottom:20px; }\n\t#draggable { cursor: n-resize; }\n\t#draggable2 { cursor: e-resize; }\n\t#containment-wrapper { width: 95%; height:150px; border:2px solid #ccc; padding: 10px; }\n\th3 { clear: left; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ axis: \"y\" });\n\t\t$( \"#draggable2\" ).draggable({ axis: \"x\" });\n\n\t\t$( \"#draggable3\" ).draggable({ containment: \"#containment-wrapper\", scroll: false });\n\t\t$( \"#draggable5\" ).draggable({ containment: \"parent\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<h3>Constrain movement along an axis:</h3>\n\n<div id=\"draggable\" class=\"draggable ui-widget-content\">\n\t<p>I can be dragged only vertically</p>\n</div>\n\n<div id=\"draggable2\" class=\"draggable ui-widget-content\">\n\t<p>I can be dragged only horizontally</p>\n</div>\n\n<h3>Or to within another DOM element:</h3>\n<div id=\"containment-wrapper\">\n\t<div id=\"draggable3\" class=\"draggable ui-widget-content\">\n\t\t<p>I'm contained within the box</p>\n\t</div>\n\n\t<div class=\"draggable ui-widget-content\">\n\t\t<p id=\"draggable5\" class=\"ui-widget-header\">I'm contained within my parent</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Constrain the movement of each draggable by defining the boundaries of the draggable area. Set the <code>axis</code> option to limit the draggable's path to the x- or y-axis, or use the <code>containment</code> option to specify a parent DOM element or a jQuery selector, like 'document.'</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/cursor-style.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Cursor style</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ cursor: \"move\", cursorAt: { top: 56, left: 56 } });\n\t\t$( \"#draggable2\" ).draggable({ cursor: \"crosshair\", cursorAt: { top: -5, left: -5 } });\n\t\t$( \"#draggable3\" ).draggable({ cursorAt: { bottom: 0 } });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>I will always stick to the center (relative to the mouse)</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>My cursor is at left -5 and top -5</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>My cursor position is only controlled for the 'bottom' value</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Position the cursor while dragging the object. By default the cursor appears in the center of the dragged object; use the <code>cursorAt</code> option to specify another location relative to the draggable (specify a pixel value from the top, right, bottom, and/or left).  Customize the cursor's appearance by supplying the <code>cursor</code> option with a valid CSS cursor value: default, move, pointer, crosshair, etc.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 150px; height: 150px; padding: 0.5em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me around</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable draggable functionality on any DOM element. Move the draggable object by clicking on it with the mouse and dragging it anywhere within the viewport.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 120px; height: 120px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ distance: 20 });\n\t\t$( \"#draggable2\" ).draggable({ delay: 1000 });\n\t\t$( \".ui-draggable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Only if you drag me by 20 pixels, the dragging will start</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Regardless of the distance, you have to drag and wait for 1000ms before dragging starts</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Delay the start of dragging for a number of milliseconds with the <code>delay</code> option; prevent dragging until the cursor is held down and dragged a specifed number of pixels with the <code>distance</code> option. </p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/events.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Events</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 16em; padding: 0 1em; }\n\t#draggable ul li { margin: 1em 0; padding: 0.5em 0; } * html #draggable ul li { height: 1%; }\n\t#draggable ul li span.ui-icon { float: left; }\n\t#draggable ul li span.count { font-weight: bold; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar $start_counter = $( \"#event-start\" ),\n\t\t\t$drag_counter = $( \"#event-drag\" ),\n\t\t\t$stop_counter = $( \"#event-stop\" ),\n\t\t\tcounts = [ 0, 0, 0 ];\n\n\t\t$( \"#draggable\" ).draggable({\n\t\t\tstart: function() {\n\t\t\t\tcounts[ 0 ]++;\n\t\t\t\tupdateCounterStatus( $start_counter, counts[ 0 ] );\n\t\t\t},\n\t\t\tdrag: function() {\n\t\t\t\tcounts[ 1 ]++;\n\t\t\t\tupdateCounterStatus( $drag_counter, counts[ 1 ] );\n\t\t\t},\n\t\t\tstop: function() {\n\t\t\t\tcounts[ 2 ]++;\n\t\t\t\tupdateCounterStatus( $stop_counter, counts[ 2 ] );\n\t\t\t}\n\t\t});\n\n\t\tfunction updateCounterStatus( $event_counter, new_count ) {\n\t\t\t// first update the status visually...\n\t\t\tif ( !$event_counter.hasClass( \"ui-state-hover\" ) ) {\n\t\t\t\t$event_counter.addClass( \"ui-state-hover\" )\n\t\t\t\t\t.siblings().removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t\t// ...then update the numbers\n\t\t\t$( \"span.count\", $event_counter ).text( new_count );\n\t\t}\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget ui-widget-content\">\n\n\t<p>Drag me to trigger the chain of events.</p>\n\n\t<ul class=\"ui-helper-reset\">\n\t\t<li id=\"event-start\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-play\"></span>\"start\" invoked <span class=\"count\">0</span>x</li>\n\t\t<li id=\"event-drag\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-arrow-4\"></span>\"drag\" invoked <span class=\"count\">0</span>x</li>\n\t\t<li id=\"event-stop\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-stop\"></span>\"stop\" invoked <span class=\"count\">0</span>x</li>\n\t</ul>\n</div>\n\n<div class=\"demo-description\">\n<p>Layer functionality onto the draggable using the <code>start</code>, <code>drag</code>, and <code>stop</code> events.  Start is fired at the start of the drag; drag during the drag; and stop when dragging stops.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/handle.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Handles</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable p { cursor: move; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ handle: \"p\" });\n\t\t$( \"#draggable2\" ).draggable({ cancel: \"p.ui-widget-header\" });\n\t\t$( \"div, p\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p class=\"ui-widget-header\">I can be dragged only by this handle</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>You can drag me around&hellip;</p>\n\t<p class=\"ui-widget-header\">&hellip;but you can't drag me by this handle.</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Allow dragging only when the cursor is over a specific part of the draggable.  Use the <code>handle</code> option to specify the jQuery selector of an element (or group of elements) used to drag the object.</p>\n<p>Or prevent dragging when the cursor is over a specific element (or group of elements) within the draggable.  Use the <code>cancel</code> option to specify a jQuery selector over which to \"cancel\" draggable functionality.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"events.html\">Events</a></li>\n\t<li><a href=\"constrain-movement.html\">Constrain movement</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"snap-to.html\">Snap to element or grid</a></li>\n\t<li><a href=\"scroll.html\">Auto-scroll</a></li>\n\t<li><a href=\"revert.html\">Revert position</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"handle.html\">Drag handle</a></li>\n\t<li><a href=\"cursor-style.html\">Cursor style</a></li>\n\t<li><a href=\"sortable.html\">Draggable + Sortable</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/revert.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Revert position</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ revert: true });\n\t\t$( \"#draggable2\" ).draggable({ revert: true, helper: \"clone\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Revert the original</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Revert the helper</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Return the draggable (or it's helper) to its original location when dragging stops with the boolean <code>revert</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/scroll.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Auto-scroll</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ scroll: true });\n\t\t$( \"#draggable2\" ).draggable({ scroll: true, scrollSensitivity: 100 });\n\t\t$( \"#draggable3\" ).draggable({ scroll: true, scrollSpeed: 100 });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Scroll set to true, default settings</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>scrollSensitivity set to 100</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>scrollSpeed set to 100</p>\n</div>\n\n<div style='height: 5000px; width: 1px;'></div>\n\n<div class=\"demo-description\">\n<p>Automatically scroll the document when the draggable is moved beyond the viewport. Set the <code>scroll</code> option to true to enable auto-scrolling, and fine-tune when scrolling is triggered and its speed with the <code>scrollSensitivity</code> and <code>scrollSpeed</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/snap-to.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Snap to element or grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.draggable { width: 90px; height: 80px; padding: 5px; float: left; margin: 0 10px 10px 0; font-size: .9em; }\n\t.ui-widget-header p, .ui-widget-content p { margin: 0; }\n\t#snaptarget { height: 140px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ snap: true });\n\t\t$( \"#draggable2\" ).draggable({ snap: \".ui-widget-header\" });\n\t\t$( \"#draggable3\" ).draggable({ snap: \".ui-widget-header\", snapMode: \"outer\" });\n\t\t$( \"#draggable4\" ).draggable({ grid: [ 20,20 ] });\n\t\t$( \"#draggable5\" ).draggable({ grid: [ 80, 80 ] });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"snaptarget\" class=\"ui-widget-header\">\n\t<p>I'm a snap target</p>\n</div>\n\n<br style=\"clear:both\" />\n\n<div id=\"draggable\" class=\"draggable ui-widget-content\">\n\t<p>Default (snap: true), snaps to all other draggable elements</p>\n</div>\n\n<div id=\"draggable2\" class=\"draggable ui-widget-content\">\n\t<p>I only snap to the big box</p>\n</div>\n\n<div id=\"draggable3\" class=\"draggable ui-widget-content\">\n\t<p>I only snap to the outer edges of the big box</p>\n</div>\n\n<div id=\"draggable4\" class=\"draggable ui-widget-content\">\n\t<p>I snap to a 20 x 20 grid</p>\n</div>\n\n<div id=\"draggable5\" class=\"draggable ui-widget-content\">\n\t<p>I snap to a 80 x 80 grid</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Snap the draggable to the inner or outer boundaries of a DOM element.  Use the <code>snap</code>, <code>snapMode</code> (inner, outer, both), and <code>snapTolerance</code> (distance in pixels the draggable must be from the element when snapping is invoked) options. </p>\n<p>Or snap the draggable to a grid.  Set the dimensions of grid cells (height and width in pixels) with the <code>grid</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable + Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tul { list-style-type: none; margin: 0; padding: 0; margin-bottom: 10px; }\n\tli { margin: 5px; padding: 5px; width: 150px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable({\n\t\t\trevert: true\n\t\t});\n\t\t$( \"#draggable\" ).draggable({\n\t\t\tconnectToSortable: \"#sortable\",\n\t\t\thelper: \"clone\",\n\t\t\trevert: \"invalid\"\n\t\t});\n\t\t$( \"ul, li\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul>\n\t<li id=\"draggable\" class=\"ui-state-highlight\">Drag me down</li>\n</ul>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>Draggables are built to interact seamlessly with <a href=\"http://jqueryui.com/sortable\">sortables</a>.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3, #set div { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable, #draggable2, #draggable3 { margin-bottom:20px; }\n\t#set { clear:both; float:left; width: 368px; height: 120px; }\n\tp { clear:both; margin:0; padding:1em 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ helper: \"original\" });\n\t\t$( \"#draggable2\" ).draggable({ opacity: 0.7, helper: \"clone\" });\n\t\t$( \"#draggable3\" ).draggable({\n\t\t\tcursor: \"move\",\n\t\t\tcursorAt: { top: -12, left: -20 },\n\t\t\thelper: function( event ) {\n\t\t\t\treturn $( \"<div class='ui-widget-header'>I'm a custom helper</div>\" );\n\t\t\t}\n\t\t});\n\t\t$( \"#set div\" ).draggable({ stack: \"#set div\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">With helpers:</h3>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Original</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Semi-transparent clone</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>Custom helper (in combination with cursorAt)</p>\n</div>\n\n<h3 class=\"docs\">Stacked:</h3>\n<div id=\"set\">\n\t<div class=\"ui-widget-content\">\n\t\t<p>We are draggables..</p>\n\t</div>\n\n\t<div class=\"ui-widget-content\">\n\t\t<p>..whose z-indexes are controlled automatically..</p>\n\t</div>\n\n\t<div class=\"ui-widget-content\">\n\t\t<p>..with the stack option.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Provide feedback to users as they drag an object in the form of a helper. The <code>helper</code> option accepts the values 'original' (the draggable object moves with the cursor), 'clone' (a duplicate of the draggable moves with the cursor), or a function that returns a DOM element (that element is shown near the cursor during drag). Control the helper's transparency with the <code>opacity</code> option.</p>\n<p>To clarify which draggable is in play, bring the draggable in motion to front. Use the <code>zIndex</code> option to set a higher z-index for the helper, if in play, or use the <code>stack</code> option to ensure that the last item dragged will appear on top of others in the same group on drag stop.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/accepted-elements.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Accept</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t#draggable, #draggable-nonvalid { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable, #draggable-nonvalid\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\taccept: \"#draggable\",\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable-nonvalid\" class=\"ui-widget-content\">\n\t<p>I'm draggable but can't be dropped</p>\n</div>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>accept: '#draggable'</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Specify using the <code>accept</code> option which element (or group of elements) is accepted by the target droppable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable any DOM element to be droppable, a target for draggable elements.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"accepted-elements.html\">Accepted elements</a></li>\n\t<li><a href=\"propagation.html\">Prevent propagation</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"revert.html\">Revert draggable position</a></li>\n\t<li><a href=\"shopping-cart.html\">Shopping Cart</a></li>\n\t<li><a href=\"photo-manager.html\">Simple photo manager</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/photo-manager.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Simple photo manager</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#gallery { float: left; width: 65%; min-height: 12em; } * html #gallery { height: 12em; } /* IE6 */\n\t.gallery.custom-state-active { background: #eee; }\n\t.gallery li { float: left; width: 96px; padding: 0.4em; margin: 0 0.4em 0.4em 0; text-align: center; }\n\t.gallery li h5 { margin: 0 0 0.4em; cursor: move; }\n\t.gallery li a { float: right; }\n\t.gallery li a.ui-icon-zoomin { float: left; }\n\t.gallery li img { width: 100%; cursor: move; }\n\n\t#trash { float: right; width: 32%; min-height: 18em; padding: 1%;} * html #trash { height: 18em; } /* IE6 */\n\t#trash h4 { line-height: 16px; margin: 0 0 0.4em; }\n\t#trash h4 .ui-icon { float: left; }\n\t#trash .gallery h5 { display: none; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// there's the gallery and the trash\n\t\tvar $gallery = $( \"#gallery\" ),\n\t\t\t$trash = $( \"#trash\" );\n\n\t\t// let the gallery items be draggable\n\t\t$( \"li\", $gallery ).draggable({\n\t\t\tcancel: \"a.ui-icon\", // clicking an icon won't initiate dragging\n\t\t\trevert: \"invalid\", // when not dropped, the item will revert back to its initial position\n\t\t\tcontainment: \"document\",\n\t\t\thelper: \"clone\",\n\t\t\tcursor: \"move\"\n\t\t});\n\n\t\t// let the trash be droppable, accepting the gallery items\n\t\t$trash.droppable({\n\t\t\taccept: \"#gallery > li\",\n\t\t\tactiveClass: \"ui-state-highlight\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\tdeleteImage( ui.draggable );\n\t\t\t}\n\t\t});\n\n\t\t// let the gallery be droppable as well, accepting items from the trash\n\t\t$gallery.droppable({\n\t\t\taccept: \"#trash li\",\n\t\t\tactiveClass: \"custom-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\trecycleImage( ui.draggable );\n\t\t\t}\n\t\t});\n\n\t\t// image deletion function\n\t\tvar recycle_icon = \"<a href='link/to/recycle/script/when/we/have/js/off' title='Recycle this image' class='ui-icon ui-icon-refresh'>Recycle image</a>\";\n\t\tfunction deleteImage( $item ) {\n\t\t\t$item.fadeOut(function() {\n\t\t\t\tvar $list = $( \"ul\", $trash ).length ?\n\t\t\t\t\t$( \"ul\", $trash ) :\n\t\t\t\t\t$( \"<ul class='gallery ui-helper-reset'/>\" ).appendTo( $trash );\n\n\t\t\t\t$item.find( \"a.ui-icon-trash\" ).remove();\n\t\t\t\t$item.append( recycle_icon ).appendTo( $list ).fadeIn(function() {\n\t\t\t\t\t$item\n\t\t\t\t\t\t.animate({ width: \"48px\" })\n\t\t\t\t\t\t.find( \"img\" )\n\t\t\t\t\t\t\t.animate({ height: \"36px\" });\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t// image recycle function\n\t\tvar trash_icon = \"<a href='link/to/trash/script/when/we/have/js/off' title='Delete this image' class='ui-icon ui-icon-trash'>Delete image</a>\";\n\t\tfunction recycleImage( $item ) {\n\t\t\t$item.fadeOut(function() {\n\t\t\t\t$item\n\t\t\t\t\t.find( \"a.ui-icon-refresh\" )\n\t\t\t\t\t\t.remove()\n\t\t\t\t\t.end()\n\t\t\t\t\t.css( \"width\", \"96px\")\n\t\t\t\t\t.append( trash_icon )\n\t\t\t\t\t.find( \"img\" )\n\t\t\t\t\t\t.css( \"height\", \"72px\" )\n\t\t\t\t\t.end()\n\t\t\t\t\t.appendTo( $gallery )\n\t\t\t\t\t.fadeIn();\n\t\t\t});\n\t\t}\n\n\t\t// image preview function, demonstrating the ui.dialog used as a modal window\n\t\tfunction viewLargerImage( $link ) {\n\t\t\tvar src = $link.attr( \"href\" ),\n\t\t\t\ttitle = $link.siblings( \"img\" ).attr( \"alt\" ),\n\t\t\t\t$modal = $( \"img[src$='\" + src + \"']\" );\n\n\t\t\tif ( $modal.length ) {\n\t\t\t\t$modal.dialog( \"open\" );\n\t\t\t} else {\n\t\t\t\tvar img = $( \"<img alt='\" + title + \"' width='384' height='288' style='display: none; padding: 8px;' />\" )\n\t\t\t\t\t.attr( \"src\", src ).appendTo( \"body\" );\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\timg.dialog({\n\t\t\t\t\t\ttitle: title,\n\t\t\t\t\t\twidth: 400,\n\t\t\t\t\t\tmodal: true\n\t\t\t\t\t});\n\t\t\t\t}, 1 );\n\t\t\t}\n\t\t}\n\n\t\t// resolve the icons behavior with event delegation\n\t\t$( \"ul.gallery > li\" ).click(function( event ) {\n\t\t\tvar $item = $( this ),\n\t\t\t\t$target = $( event.target );\n\n\t\t\tif ( $target.is( \"a.ui-icon-trash\" ) ) {\n\t\t\t\tdeleteImage( $item );\n\t\t\t} else if ( $target.is( \"a.ui-icon-zoomin\" ) ) {\n\t\t\t\tviewLargerImage( $target );\n\t\t\t} else if ( $target.is( \"a.ui-icon-refresh\" ) ) {\n\t\t\t\trecycleImage( $item );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget ui-helper-clearfix\">\n\n<ul id=\"gallery\" class=\"gallery ui-helper-reset ui-helper-clearfix\">\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras</h5>\n\t\t<img src=\"images/high_tatras_min.jpg\" alt=\"The peaks of High Tatras\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 2</h5>\n\t\t<img src=\"images/high_tatras2_min.jpg\" alt=\"The chalet at the Green mountain lake\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras2.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 3</h5>\n\t\t<img src=\"images/high_tatras3_min.jpg\" alt=\"Planning the ascent\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras3.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 4</h5>\n\t\t<img src=\"images/high_tatras4_min.jpg\" alt=\"On top of Kozi kopka\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras4.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n</ul>\n\n<div id=\"trash\" class=\"ui-widget-content ui-state-default\">\n\t<h4 class=\"ui-widget-header\"><span class=\"ui-icon ui-icon-trash\">Trash</span> Trash</h4>\n</div>\n\n</div>\n\n<div class=\"demo-description\">\n<p>You can delete an image either by dragging it to the Trash or by clicking the trash icon.</p>\n<p>You can \"recycle\" an image by dragging it back to the gallery or by clicking the recycle icon.</p>\n<p>You can view larger image by clicking the zoom icon. jQuery UI dialog widget is used for the modal window.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/propagation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Prevent propagation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 100px; height: 40px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable, #droppable2 { width: 230px; height: 120px; padding: 0.5em; float: left; margin: 10px; }\n\t#droppable-inner, #droppable2-inner { width: 170px; height: 60px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\n\t\t$( \"#droppable, #droppable-inner\" ).droppable({\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"> p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\t$( \"#droppable2, #droppable2-inner\" ).droppable({\n\t\t\tgreedy: true,\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"> p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Outer droppable</p>\n\t<div id=\"droppable-inner\" class=\"ui-widget-header\">\n\t\t<p>Inner droppable (not greedy)</p>\n\t</div>\n</div>\n\n<div id=\"droppable2\" class=\"ui-widget-header\">\n\t<p>Outer droppable</p>\n\t<div id=\"droppable2-inner\" class=\"ui-widget-header\">\n\t\t<p>Inner droppable (greedy)</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>When working with nested droppables &#8212; for example, you may have an editable directory structure displayed as a tree, with folder and document nodes &#8212; the <code>greedy</code> option set to true prevents event propagation when a draggable is dropped on a child node (droppable).</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/revert.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Revert draggable position</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ revert: \"valid\" });\n\t\t$( \"#draggable2\" ).draggable({ revert: \"invalid\" });\n\n\t\t$( \"#droppable\" ).droppable({\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>I revert when I'm dropped</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>I revert when I'm not dropped</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop me here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Return the draggable (or it's helper) to its original location when dragging stops with the boolean <code>revert</code> option set on the draggable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/shopping-cart.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Shopping Cart Demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\th1 { padding: .2em; margin: 0; }\n\t#products { float:left; width: 500px; margin-right: 2em; }\n\t#cart { width: 200px; float: left; margin-top: 1em; }\n\t/* style the list to maximize the droppable hitarea */\n\t#cart ol { margin: 0; padding: 1em 0 1em 3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#catalog\" ).accordion();\n\t\t$( \"#catalog li\" ).draggable({\n\t\t\tappendTo: \"body\",\n\t\t\thelper: \"clone\"\n\t\t});\n\t\t$( \"#cart ol\" ).droppable({\n\t\t\tactiveClass: \"ui-state-default\",\n\t\t\thoverClass: \"ui-state-hover\",\n\t\t\taccept: \":not(.ui-sortable-helper)\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this ).find( \".placeholder\" ).remove();\n\t\t\t\t$( \"<li></li>\" ).text( ui.draggable.text() ).appendTo( this );\n\t\t\t}\n\t\t}).sortable({\n\t\t\titems: \"li:not(.placeholder)\",\n\t\t\tsort: function() {\n\t\t\t\t// gets added unintentionally by droppable interacting with sortable\n\t\t\t\t// using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options\n\t\t\t\t$( this ).removeClass( \"ui-state-default\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"products\">\n\t<h1 class=\"ui-widget-header\">Products</h1>\n\t<div id=\"catalog\">\n\t\t<h2><a href=\"#\">T-Shirts</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>Lolcat Shirt</li>\n\t\t\t\t<li>Cheezeburger Shirt</li>\n\t\t\t\t<li>Buckit Shirt</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h2><a href=\"#\">Bags</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>Zebra Striped</li>\n\t\t\t\t<li>Black Leather</li>\n\t\t\t\t<li>Alligator Leather</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h2><a href=\"#\">Gadgets</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>iPhone</li>\n\t\t\t\t<li>iPod</li>\n\t\t\t\t<li>iPad</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</div>\n\n<div id=\"cart\">\n\t<h1 class=\"ui-widget-header\">Shopping Cart</h1>\n\t<div class=\"ui-widget-content\">\n\t\t<ol>\n\t\t\t<li class=\"placeholder\">Add your items here</li>\n\t\t</ol>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Demonstrate how to use an accordion to structure products into a catalog and make use of drag and drop for adding them to a shopping cart, where they are sortable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable, #droppable2 { width: 120px; height: 120px; padding: 0.5em; float: left; margin: 10px; }\n\th3 { clear: left; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\n\t\t$( \"#draggable2\" ).draggable();\n\t\t$( \"#droppable2\" ).droppable({\n\t\t\taccept: \"#draggable2\",\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3>Feedback on hover:</h3>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<h3>Feedback on activating draggable:</h3>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable2\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Change the droppable's appearance on hover, or when the droppable is active (an acceptable draggable is dropped on it).  Use the <code>hoverClass</code> or <code>activeClass</code> options to specify respective classes.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects - Effect demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-bounce.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-clip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-drop.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fade.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fold.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-highlight.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-pulsate.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-scale.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-shake.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-slide.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-transfer.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\t.toggler { width: 500px; height: 200px; position: relative; }\n\t\t#button { padding: .5em 1em; text-decoration: none; }\n\t\t#effect { width: 240px; height: 135px; padding: 0.4em; position: relative; }\n\t\t#effect h3 { margin: 0; padding: 0.4em; text-align: center; }\n\t\t.ui-effects-transfer { border: 2px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// run the currently selected effect\n\t\tfunction runEffect() {\n\t\t\t// get effect type from\n\t\t\tvar selectedEffect = $( \"#effectTypes\" ).val();\n\n\t\t\t// most effect types need no options passed by default\n\t\t\tvar options = {};\n\t\t\t// some effects have required parameters\n\t\t\tif ( selectedEffect === \"scale\" ) {\n\t\t\t\toptions = { percent: 0 };\n\t\t\t} else if ( selectedEffect === \"transfer\" ) {\n\t\t\t\toptions = { to: \"#button\", className: \"ui-effects-transfer\" };\n\t\t\t} else if ( selectedEffect === \"size\" ) {\n\t\t\t\toptions = { to: { width: 200, height: 60 } };\n\t\t\t}\n\n\t\t\t// run the effect\n\t\t\t$( \"#effect\" ).effect( selectedEffect, options, 500, callback );\n\t\t};\n\n\t\t// callback function to bring a hidden box back\n\t\tfunction callback() {\n\t\t\tsetTimeout(function() {\n\t\t\t\t$( \"#effect\" ).removeAttr( \"style\" ).hide().fadeIn();\n\t\t\t}, 1000 );\n\t\t};\n\n\t\t// set effect from select menu value\n\t\t$( \"#button\" ).click(function() {\n\t\t\trunEffect();\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"toggler\">\n\t<div id=\"effect\" class=\"ui-widget-content ui-corner-all\">\n\t\t<h3 class=\"ui-widget-header ui-corner-all\">Effect</h3>\n\t\t<p>\n\t\t\tEtiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.\n\t\t</p>\n\t</div>\n</div>\n\n<select name=\"effects\" id=\"effectTypes\">\n\t<option value=\"blind\">Blind</option>\n\t<option value=\"bounce\">Bounce</option>\n\t<option value=\"clip\">Clip</option>\n\t<option value=\"drop\">Drop</option>\n\t<option value=\"explode\">Explode</option>\n\t<option value=\"fade\">Fade</option>\n\t<option value=\"fold\">Fold</option>\n\t<option value=\"highlight\">Highlight</option>\n\t<option value=\"puff\">Puff</option>\n\t<option value=\"pulsate\">Pulsate</option>\n\t<option value=\"scale\">Scale</option>\n\t<option value=\"shake\">Shake</option>\n\t<option value=\"size\">Size</option>\n\t<option value=\"slide\">Slide</option>\n\t<option value=\"transfer\">Transfer</option>\n</select>\n\n<a href=\"#\" id=\"button\" class=\"ui-state-default ui-corner-all\">Run Effect</a>\n\n<div class=\"demo-description\">\n<p>Click the button above to show the effect.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/easing.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects - Easing demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.graph {\n\t\tfloat: left;\n\t\tmargin-left: 10px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tif ( !$( \"<canvas>\" )[0].getContext ) {\n\t\t\t$( \"<div>\" ).text(\n\t\t\t\t\"Your browser doesn't support canvas, which is required for this demo.\"\n\t\t\t).appendTo( \"#graphs\" );\n\t\t\treturn;\n\t\t}\n\n\t\tvar i = 0,\n\t\t\twidth = 100,\n\t\t\theight = 100;\n\n\t\t$.each( $.easing, function( name, impl ) {\n\t\t\tvar graph = $( \"<div>\" ).addClass( \"graph\" ).appendTo( \"#graphs\" ),\n\t\t\t\ttext = $( \"<div>\" ).text( ++i + \". \" + name ).appendTo( graph ),\n\t\t\t\twrap = $( \"<div>\" ).appendTo( graph ).css( 'overflow', 'hidden' ),\n\t\t\t\tcanvas = $( \"<canvas>\" ).appendTo( wrap )[ 0 ];\n\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t\tvar drawHeight = height * 0.8,\n\t\t\t\tcradius = 10;\n\t\t\t\tctx = canvas.getContext( \"2d\" );\n\t\t\tctx.fillStyle = \"black\";\n\n\t\t\t// draw background\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( cradius, 0 );\n\t\t\tctx.quadraticCurveTo( 0, 0, 0, cradius );\n\t\t\tctx.lineTo( 0, height - cradius );\n\t\t\tctx.quadraticCurveTo( 0, height, cradius, height );\n\t\t\tctx.lineTo( width - cradius, height );\n\t\t\tctx.quadraticCurveTo( width, height, width, height - cradius );\n\t\t\tctx.lineTo( width, 0 );\n\t\t\tctx.lineTo( cradius, 0 );\n\t\t\tctx.fill();\n\n\t\t\t// draw bottom line\n\t\t\tctx.strokeStyle = \"#555\";\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( width * 0.1, drawHeight + .5 );\n\t\t\tctx.lineTo( width * 0.9, drawHeight + .5 );\n\t\t\tctx.stroke();\n\n\t\t\t// draw top line\n\t\t\tctx.strokeStyle = \"#555\";\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( width * 0.1, drawHeight * .3 - .5 );\n\t\t\tctx.lineTo( width * 0.9, drawHeight * .3 - .5 );\n\t\t\tctx.stroke();\n\n\t\t\t// plot easing\n\t\t\tctx.strokeStyle = \"white\";\n\t\t\tctx.beginPath();\n\t\t\tctx.lineWidth = 2;\n\t\t\tctx.moveTo( width * 0.1, drawHeight );\n\t\t\t$.each( new Array( width ), function( position ) {\n\t\t\t\tvar state = position / width,\n\t\t\t\t\tval = impl( state, position, 0, 1, width );\n\t\t\t\tctx.lineTo( position * 0.8 + width * 0.1,\n\t\t\t\t\tdrawHeight - drawHeight * val * 0.7 );\n\t\t\t});\n\t\t\tctx.stroke();\n\n\t\t\t// animate on click\n\t\t\tgraph.click(function() {\n\t\t\t\twrap\n\t\t\t\t\t.animate( { height: \"hide\" }, 2000, name )\n\t\t\t\t\t.delay( 800 )\n\t\t\t\t\t.animate( { height: \"show\" }, 2000, name );\n\t\t\t});\n\n\t\t\tgraph.width( width ).height( height + text.height() + 10 );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"graphs\"></div>\n\n<div class=\"demo-description\">\n<p><strong>All easings provided by jQuery UI are drawn above, using a HTML canvas element</strong>. Click a diagram to see the easing in action.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Effect showcase</a></li>\n\t<li><a href=\"easing.html\">Easing showcase</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#menu\" ).menu();\n\t});\n\t</script>\n\t<style>\n\t.ui-menu { width: 150px; }\n\t</style>\n</head>\n<body>\n\n<ul id=\"menu\">\n\t<li class=\"ui-state-disabled\"><a href=\"#\">Aberdeen</a></li>\n\t<li><a href=\"#\">Ada</a></li>\n\t<li><a href=\"#\">Adamsville</a></li>\n\t<li><a href=\"#\">Addyston</a></li>\n\t<li>\n\t\t<a href=\"#\">Delphi</a>\n\t\t<ul>\n\t\t\t<li class=\"ui-state-disabled\"><a href=\"#\">Ada</a></li>\n\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t</ul>\n\t</li>\n\t<li><a href=\"#\">Saarland</a></li>\n\t<li>\n\t\t<a href=\"#\">Salzburg</a>\n\t\t<ul>\n\t\t\t<li>\n\t\t\t\t<a href=\"#\">Delphi</a>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">Ada</a></li>\n\t\t\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#\">Delphi</a>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">Ada</a></li>\n\t\t\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li><a href=\"#\">Perch</a></li>\n\t\t</ul>\n\t</li>\n\t<li class=\"ui-state-disabled\"><a href=\"#\">Amesville</a></li>\n</ul>\n\n<div class=\"demo-description\">\n<p>A menu with the default configuration, disabled items and nested menus. A list is transformed, adding theming, mouse and keyboard navigation support. Try to tab to the menu then use the cursor keys to navigate.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu - Icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#menu\" ).menu();\n\t});\n\t</script>\n\t<style>\n\t.ui-menu { width: 150px; }\n\t</style>\n</head>\n<body>\n\n<ul id=\"menu\">\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-disk\"></span>Save</a></li>\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-zoomin\"></span>Zoom In</a></li>\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-zoomout\"></span>Zoom Out</a></li>\n\t<li class=\"ui-state-disabled\"><a href=\"#\"><span class=\"ui-icon ui-icon-print\"></span>Print...</a></li>\n\t<li>\n\t\t<a href=\"#\">Playback</a>\n\t\t<ul>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-seek-start\"></span>Prev</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-stop\"></span>Stop</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-play\"></span>Play</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-seek-end\"></span>Next</a></li>\n\t\t</ul>\n\t</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>A menu with the default configuration, showing how to use a menu with icons.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"icons.html\">Icons</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/cycler.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position - Image Cycler</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tbody {\n\t\tmargin: 0;\n\t}\n\t#container {\n\t\toverflow: hidden;\n\t\tposition: relative;\n\t\theight: 400px;\n\t}\n\n\timg {\n\t\tposition: absolute;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// TODO refactor into a widget and get rid of these plugin methods\n\t\t$.fn.left = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"right middle\",\n\t\t\t\tat: \"left+25 middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tcollision: \"none\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\t\t$.fn.right = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"left middle\",\n\t\t\t\tat: \"right-25 middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tcollision: \"none\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\t\t$.fn.center = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"center middle\",\n\t\t\t\tat: \"center middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\n\t\t$( \"img:eq(0)\" ).left();\n\t\t$( \"img:eq(1)\" ).center();\n\t\t$( \"img:eq(2)\" ).right();\n\n\t\tfunction animate( to ) {\n\t\t\t$( this ).stop( true, false ).animate( to );\n\t\t}\n\t\tfunction next( event ) {\n\t\t\tevent.preventDefault();\n\t\t\t$( \"img:eq(2)\" ).center( animate );\n\t\t\t$( \"img:eq(1)\" ).left( animate )\n\t\t\t$( \"img:eq(0)\" ).right().appendTo( \"#container\" );\n\t\t}\n\t\tfunction previous( event ) {\n\t\t\tevent.preventDefault();\n\t\t\t$( \"img:eq(0)\" ).center( animate );\n\t\t\t$( \"img:eq(1)\" ).right( animate );\n\t\t\t$( \"img:eq(2)\" ).left().prependTo( \"#container\" );\n\t\t}\n\t\t$( \"#previous\" ).click( previous );\n\t\t$( \"#next\" ).click( next );\n\n\t\t$( \"img\" ).click(function( event ) {\n\t\t\t$( \"img\" ).index( this ) === 0 ? previous( event ) : next( event );\n\t\t});\n\n\t\t$( window ).resize(function() {\n\t\t\t$( \"img:eq(0)\" ).left( animate );\n\t\t\t$( \"img:eq(1)\" ).center( animate );\n\t\t\t$( \"img:eq(2)\" ).right( animate );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"container\">\n\t<img src=\"images/earth.jpg\" width=\"458\" height=\"308\" alt=\"earth\">\n\t<img src=\"images/flight.jpg\" width=\"512\" height=\"307\" alt=\"flight\">\n\t<img src=\"images/rocket.jpg\" width=\"300\" height=\"353\" alt=\"rocket\">\n\n\t<a id=\"previous\" href=\"#\">Previous</a>\n\t<a id=\"next\" href=\"#\">Next</a>\n</div>\n\n<div class=\"demo-description\">\n<p>A photoviewer prototype using Position to place images at the center, left and right and cycle them.\n<br>Use the links at the top to cycle, or click on the images on the left and right.\n<br>Note how the images are repositioned when resizing the window.\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#parent {\n\t\twidth: 60%;\n\t\theight: 40px;\n\t\tmargin: 10px auto;\n\t\tpadding: 5px;\n\t\tborder: 1px solid #777;\n\t\tbackground-color: #fbca93;\n\t\ttext-align: center;\n\t}\n\t.positionable {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tbackground-color: #bcd5e6;\n\t\ttext-align: center;\n\t}\n\t#positionable1 {\n\t\twidth: 75px;\n\t\theight: 75px;\n\t}\n\t#positionable2 {\n\t\twidth: 120px;\n\t\theight: 40px;\n\t}\n\tselect, input {\n\t\tmargin-left: 15px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction position() {\n\t\t\t$( \".positionable\" ).position({\n\t\t\t\tof: $( \"#parent\" ),\n\t\t\t\tmy: $( \"#my_horizontal\" ).val() + \" \" + $( \"#my_vertical\" ).val(),\n\t\t\t\tat: $( \"#at_horizontal\" ).val() + \" \" + $( \"#at_vertical\" ).val(),\n\t\t\t\toffset: $( \"#offset\" ).val(),\n\t\t\t\tcollision: $( \"#collision_horizontal\" ).val() + \" \" + $( \"#collision_vertical\" ).val()\n\t\t\t});\n\t\t}\n\n\t\t$( \".positionable\" ).css( \"opacity\", 0.5 );\n\n\t\t$( \"select, input\" ).bind( \"click keyup change\", position );\n\n\t\t$( \"#parent\" ).draggable({\n\t\t\tdrag: position\n\t\t});\n\n\t\tposition();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"parent\">\n\t<p>\n\tThis is the position parent element.\n\t</p>\n</div>\n\n<div class=\"positionable\" id=\"positionable1\">\n\t<p>\n\tto position\n\t</p>\n</div>\n\n<div class=\"positionable\" id=\"positionable2\">\n\t<p>\n\tto position 2\n\t</p>\n</div>\n\n<div style=\"padding: 20px; margin-top: 75px;\">\n\tposition...\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>my:</b>\n\t\t<select id=\"my_horizontal\">\n\t\t\t<option value=\"left\">left</option>\n\t\t\t<option value=\"center\">center</option>\n\t\t\t<option value=\"right\">right</option>\n\t\t</select>\n\t\t<select id=\"my_vertical\">\n\t\t\t<option value=\"top\">top</option>\n\t\t\t<option value=\"middle\">center</option>\n\t\t\t<option value=\"bottom\">bottom</option>\n\t\t</select>\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>at:</b>\n\t\t<select id=\"at_horizontal\">\n\t\t\t<option value=\"left\">left</option>\n\t\t\t<option value=\"center\">center</option>\n\t\t\t<option value=\"right\">right</option>\n\t\t</select>\n\t\t<select id=\"at_vertical\">\n\t\t\t<option value=\"top\">top</option>\n\t\t\t<option value=\"middle\">center</option>\n\t\t\t<option value=\"bottom\">bottom</option>\n\t\t</select>\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>offset:</b>\n\t\t<input id=\"offset\">\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>collision:</b>\n\t\t<select id=\"collision_horizontal\">\n\t\t\t<option value=\"flip\">flip</option>\n\t\t\t<option value=\"fit\">fit</option>\n\t\t\t<option value=\"flipfit\">flipfit</option>\n\t\t\t<option value=\"none\">none</option>\n\t\t</select>\n\t\t<select id=\"collision_vertical\">\n\t\t\t<option value=\"flip\">flip</option>\n\t\t\t<option value=\"fit\">fit</option>\n\t\t\t<option value=\"flipfit\">flipfit</option>\n\t\t\t<option value=\"none\">none</option>\n\t\t</select>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Use the form controls to configure the positioning, or drag the positioned element to modify its offset.\n<br>Drag around the parent element to see collision detection in action.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position Demo</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"cycler.html\">Cycling images</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/animated.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Animated</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-progressbar .ui-progressbar-value { background-image: url(images/pbar-ani.gif); }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 59\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbar\"></div>\n\n<div class=\"demo-description\">\n<p>\nThis progressbar has an animated fill by setting the\n<code>background-image</code>\non the\n<code>.ui-progressbar-value</code>\nelement, using css.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 37\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbar\"></div>\n\n<div class=\"demo-description\">\n<p>Default determinate progress bar.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"animated.html\">Animated</a></li>\n\t<li><a href=\"resize.html\">Resizable progressbar</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/resize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Resizable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 37\n\t\t});\n\t\t$( \"#progressbarWrapper\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbarWrapper\" style=\"height:30px; \" class=\"ui-widget-default\">\n\t<div id=\"progressbar\" style=\"height:100%;\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The progress bar's widths are specified in percentages for flexible sizing so it will resize to fit its container. Try resizing the height and width of this bar to see how it maintains the correct proportions. (This is not necessarily a real-world example, but it's a good illustration of how flexibly all the plugins are coded.)</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/animate.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Animate</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-helper { border: 1px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tanimate: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Animate</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Animate the resize action using the <code>animate</code> option (boolean). When this option is set to true, drag the outline to the desired location; the element animates to that size on drag stop.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/aspect-ratio.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Preserve aspect ratio</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 160px; height: 90px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\taspectRatio: 16 / 9\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Preserve aspect ratio</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Maintain the existing aspect ratio or set a new one to constrain the proportions on resize. Set the <code>aspectRatio</code> option to true, and optionally pass in a new ratio (i.e., 4/3)</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/constrain-area.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Constrain resize area</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#container { width: 300px; height: 300px; }\n\t#container h3 { text-align: center; margin: 0; margin-bottom: 10px; }\n\t#resizable { background-position: top left; width: 150px; height: 150px; }\n\t#resizable, #container { padding: 0.5em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tcontainment: \"#container\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"container\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Containment</h3>\n\t<div id=\"resizable\" class=\"ui-state-active\">\n\t\t<h3 class=\"ui-widget-header\">Resizable</h3>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Define the boundaries of the resizable area. Use the <code>containment</code> option to specify a parent DOM element or a jQuery selector, like 'document.'</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Resizable</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable any DOM element to be resizable.  With the cursor grab the right or bottom border and drag to the desired width or height.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable, #resizable2 { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3, #resizable2 h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tdelay: 1000\n\t\t});\n\n\t\t$( \"#resizable2\" ).resizable({\n\t\t\tdistance: 40\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Time delay (ms):</h3>\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Time</h3>\n</div>\n\n<h3 class=\"docs\">Distance delay (px):</h3>\n<div id=\"resizable2\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Distance</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Delay the start of resizng for a number of milliseconds with the <code>delay</code> option; prevent resizing until the cursor is held down and dragged a specifed number of pixels with the <code>distance</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/helper.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Helper</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-helper { border: 2px dotted #00F; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\thelper: \"ui-resizable-helper\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Helper</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Display only an outline of the element while resizing by setting the <code>helper</code> option to a CSS class.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"aspect-ratio.html\">Preserve aspect ratio</a></li>\n\t<li><a href=\"max-min.html\">Maximum / minimum size</a></li>\n\t<li><a href=\"constrain-area.html\">Constrain resize area</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"snap-to-grid.html\">Snap to grid</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"synchronous-resize.html\">Synchronous resize</a></li>\n\t<li><a href=\"animate.html\">Animate</a></li>\n\t<li><a href=\"helper.html\">Resize Helper</a></li>\n\t<li><a href=\"textarea.html\">Textarea</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/max-min.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Maximum / minimum size</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 200px; height: 150px; padding: 5px; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tmaxHeight: 250,\n\t\t\tmaxWidth: 350,\n\t\t\tminHeight: 150,\n\t\t\tminWidth: 200\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Resize larger / smaller</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Limit the resizable element to a maximum or minimum height or width using the <code>maxHeight</code>, <code>maxWidth</code>, <code>minHeight</code>, and <code>minWidth</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/snap-to-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Snap to grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tgrid: 50\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Grid</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Snap the resizable element to a grid.  Set the dimensions of grid cells (height and width in pixels) with the <code>grid</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/synchronous-resize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Synchronous resize</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { background-position: top left; }\n\t#resizable, #also { width: 150px; height: 120px; padding: 0.5em; }\n\t#resizable h3, #also h3 { text-align: center; margin: 0; }\n\t#also { margin-top: 1em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\talsoResize: \"#also\"\n\t\t});\n\t\t$( \"#also\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-header\">\n\t<h3 class=\"ui-state-active\">Resize</h3>\n</div>\n\n<div id=\"also\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">will also resize</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Resize multiple elements simultaneously by clicking and dragging the sides of one.  Pass a shared selector into the <code>alsoResize</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/textarea.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Textarea</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-resizable-se {\n\t\tbottom: 17px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\thandles: \"se\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<textarea id=\"resizable\" rows=\"5\" cols=\"20\"></textarea>\n\n<div class=\"demo-description\">\n<p>Display only an outline of the element while resizing by setting the <code>helper</code> option to a CSS class.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-ghost { border: 1px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tghost: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Ghost</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Instead of showing the actual element during resize, set the <code>ghost</code> option to true to show a semi-transparent part of the element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable();\n\t});\n\t</script>\n</head>\n<body>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-widget-content\">Item 1</li>\n\t<li class=\"ui-widget-content\">Item 2</li>\n\t<li class=\"ui-widget-content\">Item 3</li>\n\t<li class=\"ui-widget-content\">Item 4</li>\n\t<li class=\"ui-widget-content\">Item 5</li>\n\t<li class=\"ui-widget-content\">Item 6</li>\n\t<li class=\"ui-widget-content\">Item 7</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>Enable a DOM element (or group of elements) to be selectable. Draw a box with your cursor to select items. Hold down the Ctrl key to make multiple non-adjacent selections. </p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/display-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Display as grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 450px; }\n\t#selectable li { margin: 3px; padding: 1px; float: left; width: 100px; height: 80px; font-size: 4em; text-align: center; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable();\n\t});\n\t</script>\n</head>\n<body>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-state-default\">1</li>\n\t<li class=\"ui-state-default\">2</li>\n\t<li class=\"ui-state-default\">3</li>\n\t<li class=\"ui-state-default\">4</li>\n\t<li class=\"ui-state-default\">5</li>\n\t<li class=\"ui-state-default\">6</li>\n\t<li class=\"ui-state-default\">7</li>\n\t<li class=\"ui-state-default\">8</li>\n\t<li class=\"ui-state-default\">9</li>\n\t<li class=\"ui-state-default\">10</li>\n\t<li class=\"ui-state-default\">11</li>\n\t<li class=\"ui-state-default\">12</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>To arrange selectable items as a grid, give them identical dimensions and float them using CSS.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"serialize.html\">Serialize</a></li>\n\t<li><a href=\"display-grid.html\">Display as grid</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/serialize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Serialize</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable({\n\t\t\tstop: function() {\n\t\t\t\tvar result = $( \"#select-result\" ).empty();\n\t\t\t\t$( \".ui-selected\", this ).each(function() {\n\t\t\t\t\tvar index = $( \"#selectable li\" ).index( this );\n\t\t\t\t\tresult.append( \" #\" + ( index + 1 ) );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p id=\"feedback\">\n<span>You've selected:</span> <span id=\"select-result\">none</span>.\n</p>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-widget-content\">Item 1</li>\n\t<li class=\"ui-widget-content\">Item 2</li>\n\t<li class=\"ui-widget-content\">Item 3</li>\n\t<li class=\"ui-widget-content\">Item 4</li>\n\t<li class=\"ui-widget-content\">Item 5</li>\n\t<li class=\"ui-widget-content\">Item 6</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>Write a function that fires on the <code>stop</code> event to collect the index values of selected items.  Present values as feedback, or pass as a data string.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/colorpicker.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Colorpicker</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#red, #green, #blue {\n\t\tfloat: left;\n\t\tclear: left;\n\t\twidth: 300px;\n\t\tmargin: 15px;\n\t}\n\t#swatch {\n\t\twidth: 120px;\n\t\theight: 100px;\n\t\tmargin-top: 18px;\n\t\tmargin-left: 350px;\n\t\tbackground-image: none;\n\t}\n\t#red .ui-slider-range { background: #ef2929; }\n\t#red .ui-slider-handle { border-color: #ef2929; }\n\t#green .ui-slider-range { background: #8ae234; }\n\t#green .ui-slider-handle { border-color: #8ae234; }\n\t#blue .ui-slider-range { background: #729fcf; }\n\t#blue .ui-slider-handle { border-color: #729fcf; }\n\t</style>\n\t<script>\n\tfunction hexFromRGB(r, g, b) {\n\t\tvar hex = [\n\t\t\tr.toString( 16 ),\n\t\t\tg.toString( 16 ),\n\t\t\tb.toString( 16 )\n\t\t];\n\t\t$.each( hex, function( nr, val ) {\n\t\t\tif ( val.length === 1 ) {\n\t\t\t\thex[ nr ] = \"0\" + val;\n\t\t\t}\n\t\t});\n\t\treturn hex.join( \"\" ).toUpperCase();\n\t}\n\tfunction refreshSwatch() {\n\t\tvar red = $( \"#red\" ).slider( \"value\" ),\n\t\t\tgreen = $( \"#green\" ).slider( \"value\" ),\n\t\t\tblue = $( \"#blue\" ).slider( \"value\" ),\n\t\t\thex = hexFromRGB( red, green, blue );\n\t\t$( \"#swatch\" ).css( \"background-color\", \"#\" + hex );\n\t}\n\t$(function() {\n\t\t$( \"#red, #green, #blue\" ).slider({\n\t\t\torientation: \"horizontal\",\n\t\t\trange: \"min\",\n\t\t\tmax: 255,\n\t\t\tvalue: 127,\n\t\t\tslide: refreshSwatch,\n\t\t\tchange: refreshSwatch\n\t\t});\n\t\t$( \"#red\" ).slider( \"value\", 255 );\n\t\t$( \"#green\" ).slider( \"value\", 140 );\n\t\t$( \"#blue\" ).slider( \"value\", 60 );\n\t});\n\t</script>\n</head>\n<body class=\"ui-widget-content\" style=\"border:0;\">\n\n<p class=\"ui-state-default ui-corner-all ui-helper-clearfix\" style=\"padding:4px;\">\n\t<span class=\"ui-icon ui-icon-pencil\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tSimple Colorpicker\n</p>\n\n<div id=\"red\"></div>\n<div id=\"green\"></div>\n<div id=\"blue\"></div>\n\n<div id=\"swatch\" class=\"ui-widget-content ui-corner-all\"></div>\n\n<div class=\"demo-description\">\n<p>Combine three sliders to create a simple RGB colorpicker.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\" >\n\t<title>jQuery UI Slider - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider\" ).slider();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"slider\"></div>\n\n<div class=\"demo-description\">\n<p>The basic slider is horizontal and has a single handle that can be moved with the mouse or by using the arrow keys.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/hotelrooms.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Slider bound to select</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar select = $( \"#minbeds\" );\n\t\tvar slider = $( \"<div id='slider'></div>\" ).insertAfter( select ).slider({\n\t\t\tmin: 1,\n\t\t\tmax: 6,\n\t\t\trange: \"min\",\n\t\t\tvalue: select[ 0 ].selectedIndex + 1,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\tselect[ 0 ].selectedIndex = ui.value - 1;\n\t\t\t}\n\t\t});\n\t\t$( \"#minbeds\" ).change(function() {\n\t\t\tslider.slider( \"value\", this.selectedIndex + 1 );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<form id=\"reservation\">\n\t<label for=\"minbeds\">Minimum number of beds</label>\n\t<select name=\"minbeds\" id=\"minbeds\">\n\t\t<option>1</option>\n\t\t<option>2</option>\n\t\t<option>3</option>\n\t\t<option>4</option>\n\t\t<option>5</option>\n\t\t<option>6</option>\n\t</select>\n</form>\n\n<div class=\"demo-description\">\n<p>How to bind a slider to an existing select element. The select stays visible to display the change. When the select is changed, the slider is updated, too.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"steps.html\">Snap to increments</a></li>\n\t<li><a href=\"range.html\">Range slider</a></li>\n\t<li><a href=\"rangemin.html\">Range with fixed minimum</a></li>\n\t<li><a href=\"hotelrooms.html\">Room reservation</a></li>\n\t<li><a href=\"rangemax.html\">Range with fixed maximum</a></li>\n\t<li><a href=\"slider-vertical.html\">Vertical slider</a></li>\n\t<li><a href=\"range-vertical.html\">Vertical range slider</a></li>\n\t<li><a href=\"multiple-vertical.html\">Multiple sliders</a></li>\n\t<li><a href=\"colorpicker.html\">Simple colorpicker</a></li>\n\t<li><a href=\"side-scroll.html\">Simple scrollbar</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/multiple-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Multiple sliders</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#eq span {\n\t\theight:120px; float:left; margin:15px\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// setup master volume\n\t\t$( \"#master\" ).slider({\n\t\t\tvalue: 60,\n\t\t\torientation: \"horizontal\",\n\t\t\trange: \"min\",\n\t\t\tanimate: true\n\t\t});\n\t\t// setup graphic EQ\n\t\t$( \"#eq > span\" ).each(function() {\n\t\t\t// read initial values from markup and remove that\n\t\t\tvar value = parseInt( $( this ).text(), 10 );\n\t\t\t$( this ).empty().slider({\n\t\t\t\tvalue: value,\n\t\t\t\trange: \"min\",\n\t\t\t\tanimate: true,\n\t\t\t\torientation: \"vertical\"\n\t\t\t});\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p class=\"ui-state-default ui-corner-all ui-helper-clearfix\" style=\"padding:4px;\">\n\t<span class=\"ui-icon ui-icon-volume-on\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tMaster volume\n</p>\n\n<div id=\"master\" style=\"width:260px; margin:15px;\"></div>\n\n<p class=\"ui-state-default ui-corner-all\" style=\"padding:4px;margin-top:4em;\">\n\t<span class=\"ui-icon ui-icon-signal\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tGraphic EQ\n</p>\n\n<div id=\"eq\">\n\t<span>88</span>\n\t<span>77</span>\n\t<span>55</span>\n\t<span>33</span>\n\t<span>40</span>\n\t<span>45</span>\n\t<span>70</span>\n</div>\n\n<div class=\"demo-description\">\n<p>Combine horizontal and vertical sliders, each with their own options, to create the UI for a music player.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Vertical range slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range\" ).slider({\n\t\t\torientation: \"vertical\",\n\t\t\trange: true,\n\t\t\tvalues: [ 17, 67 ],\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range\" ).slider( \"values\", 0 ) +\n\t\t\t\" - $\" + $( \"#slider-range\" ).slider( \"values\", 1 ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Target sales goal (Millions):</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range\" style=\"height:250px;\"></div>\n\n<div class=\"demo-description\">\n<p>Change the orientation of the range slider to vertical.  Assign a height value via <code>.height()</code> or by setting the height through CSS, and set the <code>orientation</code> option to \"vertical.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range\" ).slider({\n\t\t\trange: true,\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t\tvalues: [ 75, 300 ],\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range\" ).slider( \"values\", 0 ) +\n\t\t\t\" - $\" + $( \"#slider-range\" ).slider( \"values\", 1 ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Price range:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range\"></div>\n\n<div class=\"demo-description\">\n<p>Set the <code>range</code> option to true to capture a range of values with two drag handles.  The space between the handles is filled with a different background color to indicate those values are selected.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemax.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range with fixed maximum</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range-max\" ).slider({\n\t\t\trange: \"max\",\n\t\t\tmin: 1,\n\t\t\tmax: 10,\n\t\t\tvalue: 2,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( $( \"#slider-range-max\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Minimum number of bedrooms:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n<div id=\"slider-range-max\"></div>\n\n<div class=\"demo-description\">\n<p>Fix the maximum value of the range slider so that the user can only select a minimum.  Set the <code>range</code> option to \"max.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemin.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range with fixed minimum</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range-min\" ).slider({\n\t\t\trange: \"min\",\n\t\t\tvalue: 37,\n\t\t\tmin: 1,\n\t\t\tmax: 700,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range-min\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Maximum price:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range-min\"></div>\n\n<div class=\"demo-description\">\n<p>Fix the minimum value of the range slider so that the user can only select a maximum.  Set the <code>range</code> option to \"min.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/side-scroll.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Slider scrollbar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.scroll-pane { overflow: auto; width: 99%; float:left; }\n\t.scroll-content { width: 2440px; float: left; }\n\t.scroll-content-item { width: 100px; height: 100px; float: left; margin: 10px; font-size: 3em; line-height: 96px; text-align: center; }\n\t* html .scroll-content-item { display: inline; } /* IE6 float double margin bug */\n\t.scroll-bar-wrap { clear: left; padding: 0 4px 0 2px; margin: 0 -1px -1px -1px; }\n\t.scroll-bar-wrap .ui-slider { background: none; border:0; height: 2em; margin: 0 auto;  }\n\t.scroll-bar-wrap .ui-handle-helper-parent { position: relative; width: 100%; height: 100%; margin: 0 auto; }\n\t.scroll-bar-wrap .ui-slider-handle { top:.2em; height: 1.5em; }\n\t.scroll-bar-wrap .ui-slider-handle .ui-icon { margin: -8px auto 0; position: relative; top: 50%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t//scrollpane parts\n\t\tvar scrollPane = $( \".scroll-pane\" ),\n\t\t\tscrollContent = $( \".scroll-content\" );\n\t\t\n\t\t//build slider\n\t\tvar scrollbar = $( \".scroll-bar\" ).slider({\n\t\t\tslide: function( event, ui ) {\n\t\t\t\tif ( scrollContent.width() > scrollPane.width() ) {\n\t\t\t\t\tscrollContent.css( \"margin-left\", Math.round(\n\t\t\t\t\t\tui.value / 100 * ( scrollPane.width() - scrollContent.width() )\n\t\t\t\t\t) + \"px\" );\n\t\t\t\t} else {\n\t\t\t\t\tscrollContent.css( \"margin-left\", 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t//append icon to handle\n\t\tvar handleHelper = scrollbar.find( \".ui-slider-handle\" )\n\t\t.mousedown(function() {\n\t\t\tscrollbar.width( handleHelper.width() );\n\t\t})\n\t\t.mouseup(function() {\n\t\t\tscrollbar.width( \"100%\" );\n\t\t})\n\t\t.append( \"<span class='ui-icon ui-icon-grip-dotted-vertical'></span>\" )\n\t\t.wrap( \"<div class='ui-handle-helper-parent'></div>\" ).parent();\n\t\t\n\t\t//change overflow to hidden now that slider handles the scrolling\n\t\tscrollPane.css( \"overflow\", \"hidden\" );\n\t\t\n\t\t//size scrollbar and handle proportionally to scroll distance\n\t\tfunction sizeScrollbar() {\n\t\t\tvar remainder = scrollContent.width() - scrollPane.width();\n\t\t\tvar proportion = remainder / scrollContent.width();\n\t\t\tvar handleSize = scrollPane.width() - ( proportion * scrollPane.width() );\n\t\t\tscrollbar.find( \".ui-slider-handle\" ).css({\n\t\t\t\twidth: handleSize,\n\t\t\t\t\"margin-left\": -handleSize / 2\n\t\t\t});\n\t\t\thandleHelper.width( \"\" ).width( scrollbar.width() - handleSize );\n\t\t}\n\t\t\n\t\t//reset slider value based on scroll content position\n\t\tfunction resetValue() {\n\t\t\tvar remainder = scrollPane.width() - scrollContent.width();\n\t\t\tvar leftVal = scrollContent.css( \"margin-left\" ) === \"auto\" ? 0 :\n\t\t\t\tparseInt( scrollContent.css( \"margin-left\" ) );\n\t\t\tvar percentage = Math.round( leftVal / remainder * 100 );\n\t\t\tscrollbar.slider( \"value\", percentage );\n\t\t}\n\t\t\n\t\t//if the slider is 100% and window gets larger, reveal content\n\t\tfunction reflowContent() {\n\t\t\t\tvar showing = scrollContent.width() + parseInt( scrollContent.css( \"margin-left\" ), 10 );\n\t\t\t\tvar gap = scrollPane.width() - showing;\n\t\t\t\tif ( gap > 0 ) {\n\t\t\t\t\tscrollContent.css( \"margin-left\", parseInt( scrollContent.css( \"margin-left\" ), 10 ) + gap );\n\t\t\t\t}\n\t\t}\n\t\t\n\t\t//change handle position on window resize\n\t\t$( window ).resize(function() {\n\t\t\tresetValue();\n\t\t\tsizeScrollbar();\n\t\t\treflowContent();\n\t\t});\n\t\t//init scrollbar size\n\t\tsetTimeout( sizeScrollbar, 10 );//safari wants a timeout\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"scroll-pane ui-widget ui-widget-header ui-corner-all\">\n\t<div class=\"scroll-content\">\n\t\t<div class=\"scroll-content-item ui-widget-header\">1</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">2</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">3</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">4</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">5</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">6</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">7</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">8</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">9</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">10</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">11</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">12</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">13</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">14</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">15</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">16</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">17</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">18</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">19</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">20</div>\n\t</div>\n\t<div class=\"scroll-bar-wrap ui-widget-content ui-corner-bottom\">\n\t\t<div class=\"scroll-bar\"></div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Use a slider to manipulate the positioning of content on the page. In this case, it acts as a scrollbar with the potential to capture values if needed.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/slider-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Vertical slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-vertical\" ).slider({\n\t\t\torientation: \"vertical\",\n\t\t\trange: \"min\",\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t\tvalue: 60,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( $( \"#slider-vertical\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Volume:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-vertical\" style=\"height:200px;\"></div>\n\n<div class=\"demo-description\">\n<p>Change the orientation of the slider to vertical.  Assign a height value via <code>.height()</code> or by setting the height through CSS, and set the <code>orientation</code> option to \"vertical.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/steps.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Snap to increments</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider\" ).slider({\n\t\t\tvalue:100,\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t\tstep: 50,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Donation amount ($50 increments):</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider\"></div>\n\n<div class=\"demo-description\">\n<p>Increment slider values with the <code>step</code> option set to an integer, commonly a dividend of the slider's maximum value.  The default increment is 1.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists-through-tabs.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Connect lists with Tabs</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1, #sortable2\" ).sortable().disableSelection();\n\n\t\tvar $tabs = $( \"#tabs\" ).tabs();\n\n\t\tvar $tab_items = $( \"ul:first li\", $tabs ).droppable({\n\t\t\taccept: \".connectedSortable li\",\n\t\t\thoverClass: \"ui-state-hover\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\tvar $item = $( this );\n\t\t\t\tvar $list = $( $item.find( \"a\" ).attr( \"href\" ) )\n\t\t\t\t\t.find( \".connectedSortable\" );\n\n\t\t\t\tui.draggable.hide( \"slow\", function() {\n\t\t\t\t\t$tabs.tabs( \"select\", $tab_items.index( $item ) );\n\t\t\t\t\t$( this ).appendTo( $list ).show( \"slow\" );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<ul id=\"sortable1\" class=\"connectedSortable ui-helper-reset\">\n\t\t\t<li class=\"ui-state-default\">Item 1</li>\n\t\t\t<li class=\"ui-state-default\">Item 2</li>\n\t\t\t<li class=\"ui-state-default\">Item 3</li>\n\t\t\t<li class=\"ui-state-default\">Item 4</li>\n\t\t\t<li class=\"ui-state-default\">Item 5</li>\n\t\t</ul>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<ul id=\"sortable2\" class=\"connectedSortable ui-helper-reset\">\n\t\t\t<li class=\"ui-state-highlight\">Item 1</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 2</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 3</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 4</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 5</li>\n\t\t</ul>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Sort items from one list into another and vice versa, by dropping the list item on the appropriate tab above.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Connect lists</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0 0 2.5em; float: left; margin-right: 10px; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1, #sortable2\" ).sortable({\n\t\t\tconnectWith: \".connectedSortable\"\n\t\t}).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable1\" class=\"connectedSortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<ul id=\"sortable2\" class=\"connectedSortable\">\n\t<li class=\"ui-state-highlight\">Item 1</li>\n\t<li class=\"ui-state-highlight\">Item 2</li>\n\t<li class=\"ui-state-highlight\">Item 3</li>\n\t<li class=\"ui-state-highlight\">Item 4</li>\n\t<li class=\"ui-state-highlight\">Item 5</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tSort items from one list into another and vice versa, by passing a selector into\n\tthe <code>connectWith</code> option. The simplest way to do this is to\n\tgroup all related lists with a CSS class, and then pass that class into the\n\tsortable function (i.e., <code>connectWith: '.myclass'</code>).\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }\n\t#sortable li span { position: absolute; margin-left: -1.3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable();\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 1</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 2</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 3</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 4</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 5</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 6</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 7</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tEnable a group of DOM elements to be sortable. Click on and drag an\n\telement to a new spot within the list, and the other items will adjust to\n\tfit. By default, sortable items share <code>draggable</code> properties.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; margin-bottom: 15px;zoom: 1; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 95%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1\" ).sortable({\n\t\t\tdelay: 300\n\t\t});\n\n\t\t$( \"#sortable2\" ).sortable({\n\t\t\tdistance: 15\n\t\t});\n\n\t\t$( \"li\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Time delay of 300ms:</h3>\n\n<ul id=\"sortable1\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<h3 class=\"docs\">Distance delay of 15px:</h3>\n\n<ul id=\"sortable2\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tPrevent accidental sorting either by delay (time) or distance. Set a number of\n\tmilliseconds the element needs to be dragged before sorting starts\n\twith the <code>delay</code> option. Set a distance in pixels the element\n\tneeds to be dragged before sorting starts with the <code>distance</code>\n\toption.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/display-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Display as grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 450px; }\n\t#sortable li { margin: 3px 3px 3px 0; padding: 1px; float: left; width: 100px; height: 90px; font-size: 4em; text-align: center; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable();\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">1</li>\n\t<li class=\"ui-state-default\">2</li>\n\t<li class=\"ui-state-default\">3</li>\n\t<li class=\"ui-state-default\">4</li>\n\t<li class=\"ui-state-default\">5</li>\n\t<li class=\"ui-state-default\">6</li>\n\t<li class=\"ui-state-default\">7</li>\n\t<li class=\"ui-state-default\">8</li>\n\t<li class=\"ui-state-default\">9</li>\n\t<li class=\"ui-state-default\">10</li>\n\t<li class=\"ui-state-default\">11</li>\n\t<li class=\"ui-state-default\">12</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tTo arrange sortable items as a grid, give them identical dimensions and\n\tfloat them using CSS.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/empty-lists.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Handle empty lists</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2, #sortable3 { list-style-type: none; margin: 0; padding: 0; float: left; margin-right: 10px; background: #eee; padding: 5px; width: 143px;}\n\t#sortable1 li, #sortable2 li, #sortable3 li { margin: 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"ul.droptrue\" ).sortable({\n\t\t\tconnectWith: \"ul\"\n\t\t});\n\n\t\t$( \"ul.dropfalse\" ).sortable({\n\t\t\tconnectWith: \"ul\",\n\t\t\tdropOnEmpty: false\n\t\t});\n\n\t\t$( \"#sortable1, #sortable2, #sortable3\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable1\" class='droptrue'>\n\t<li class=\"ui-state-default\">Can be dropped..</li>\n\t<li class=\"ui-state-default\">..on an empty list</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<ul id=\"sortable2\" class='dropfalse'>\n\t<li class=\"ui-state-highlight\">Cannot be dropped..</li>\n\t<li class=\"ui-state-highlight\">..on an empty list</li>\n\t<li class=\"ui-state-highlight\">Item 3</li>\n\t<li class=\"ui-state-highlight\">Item 4</li>\n\t<li class=\"ui-state-highlight\">Item 5</li>\n</ul>\n\n<ul id=\"sortable3\" class='droptrue'>\n</ul>\n\n<br style=\"clear:both\">\n\n<div class=\"demo-description\">\n<p>\n\tPrevent all items in a list from being dropped into a separate, empty list\n\tusing the <code>dropOnEmpty</code> option set to <code>false</code>.  By default,\n\tsortable items can be dropped on empty lists.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"placeholder.html\">Drop placeholder</a></li>\n\t<li><a href=\"connect-lists.html\">Connect lists</a></li>\n\t<li><a href=\"connect-lists-through-tabs.html\">Connect lists through tabs</a></li>\n\t<li><a href=\"empty-lists.html\">Handle empty lists</a></li>\n\t<li><a href=\"items.html\">Include / exclude items</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"display-grid.html\">Display as grid</a></li>\n\t<li><a href=\"portlets.html\">Portlets</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/items.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Include / exclude items</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; zoom: 1; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 3px; width: 90%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1\" ).sortable({\n\t\t\titems: \"li:not(.ui-state-disabled)\"\n\t\t});\n\n\t\t$( \"#sortable2\" ).sortable({\n\t\t\tcancel: \".ui-state-disabled\"\n\t\t});\n\n\t\t$( \"#sortable1 li, #sortable2 li\" ).disableSelection();\t\t\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Specify which items are sortable:</h3>\n\n<ul id=\"sortable1\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable or a drop target)</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable or a drop target)</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<h3 class=\"docs\">Cancel sorting (but keep as drop targets):</h3>\n\n<ul id=\"sortable2\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable)</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable)</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tSpecify which items are eligible to sort by passing a jQuery selector into\n\tthe <code>items</code> option. Items excluded from this option are not\n\tsortable, nor are they valid targets for sortable items.\n</p>\n<p>\n\tTo only prevent sorting on certain items, pass a jQuery selector into the\n\t<code>cancel</code> option. Cancelled items remain valid sort targets for\n\tothers.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/placeholder.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Drop placeholder</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }\n\thtml>body #sortable li { height: 1.5em; line-height: 1.2em; }\n\t.ui-state-highlight { height: 1.5em; line-height: 1.2em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable({\n\t\t\tplaceholder: \"ui-state-highlight\"\n\t\t});\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n\t<li class=\"ui-state-default\">Item 6</li>\n\t<li class=\"ui-state-default\">Item 7</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tWhen dragging a sortable item to a new location, other items will make room\n\tfor the that item by shifting to allow white space between them. Pass a\n\tclass into the <code>placeholder</code> option to style that space to\n\tbe visible.  Use the boolean <code>forcePlaceholderSize</code> option\n\tto set dimensions on the placeholder.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/portlets.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Portlets</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.column { width: 170px; float: left; padding-bottom: 100px; }\n\t.portlet { margin: 0 1em 1em 0; }\n\t.portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; }\n\t.portlet-header .ui-icon { float: right; }\n\t.portlet-content { padding: 0.4em; }\n\t.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }\n\t.ui-sortable-placeholder * { visibility: hidden; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \".column\" ).sortable({\n\t\t\tconnectWith: \".column\"\n\t\t});\n\n\t\t$( \".portlet\" ).addClass( \"ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\" )\n\t\t\t.find( \".portlet-header\" )\n\t\t\t\t.addClass( \"ui-widget-header ui-corner-all\" )\n\t\t\t\t.prepend( \"<span class='ui-icon ui-icon-minusthick'></span>\")\n\t\t\t\t.end()\n\t\t\t.find( \".portlet-content\" );\n\n\t\t$( \".portlet-header .ui-icon\" ).click(function() {\n\t\t\t$( this ).toggleClass( \"ui-icon-minusthick\" ).toggleClass( \"ui-icon-plusthick\" );\n\t\t\t$( this ).parents( \".portlet:first\" ).find( \".portlet-content\" ).toggle();\n\t\t});\n\n\t\t$( \".column\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Feeds</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">News</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Shopping</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Links</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Images</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"demo-description\">\n<p>\n\tEnable portlets (styled divs) as sortables and use the <code>connectWith</code>\n\toption to allow sorting between columns.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/currency.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Currency</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../external/globalize.culture.ja-JP.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#currency\" ).change(function() {\n\t\t\t$( \"#spinner\" ).spinner( \"option\", \"culture\", $( this ).val() );\n\t\t});\n\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tmin: 5,\n\t\t\tmax: 2500,\n\t\t\tstep: 25,\n\t\t\tstart: 1000,\n\t\t\tnumberFormat: \"C\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"currency\">Currency to donate</label>\n\t<select id=\"currency\" name=\"currency\">\n\t\t<option value=\"en-US\">US $</option>\n\t\t<option value=\"de-DE\">EUR €</option>\n\t\t<option value=\"ja-JP\">YEN ¥</option>\n\t</select>\n</p>\n<p>\n\t<label for=\"spinner\">Amount to donate:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"5\">\n</p>\n\n<div class=\"demo-description\">\n<p>Example of a donation form, with currency selection and amount spinner.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/decimal.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Decimal</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../external/globalize.culture.ja-JP.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tstep: 0.01,\n\t\t\tnumberFormat: \"n\"\n\t\t});\n\n\t\t$( \"#culture\" ).change(function() {\n\t\t\tvar current = $( \"#spinner\" ).spinner( \"value\" );\n\t\t\tGlobalize.culture( $(this).val() );\n\t\t\t$( \"#spinner\" ).spinner( \"value\", current );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Decimal spinner:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"5.06\">\n</p>\n<p>\n\t<label for=\"culture\">Select a culture to use for formatting:</label>\n\t<select id=\"culture\">\n\t\t<option value=\"en-EN\" selected=\"selected\">English</option>\n\t\t<option value=\"de-DE\">German</option>\n\t\t<option value=\"ja-JP\">Japanese</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>\n\tExample of a decimal spinner. Step is set to 0.01.\n\t<br>The code handling the culture change reads the current spinner value,\n\tthen changes the culture, then sets the value again, resulting in an updated\n\tformatting, based on the new culture.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar spinner = $( \"#spinner\" ).spinner();\n\n\t\t$( \"#disable\" ).click(function() {\n\t\t\tif ( spinner.spinner( \"option\", \"disabled\" ) ) {\n\t\t\t\tspinner.spinner( \"enable\" );\n\t\t\t} else {\n\t\t\t\tspinner.spinner( \"disable\" );\n\t\t\t}\n\t\t});\n\t\t$( \"#destroy\" ).click(function() {\n\t\t\tif ( spinner.data( \"ui-spinner\" ) ) {\n\t\t\t\tspinner.spinner( \"destroy\" );\n\t\t\t} else {\n\t\t\t\tspinner.spinner();\n\t\t\t}\n\t\t});\n\t\t$( \"#getvalue\" ).click(function() {\n\t\t\talert( spinner.spinner( \"value\" ) );\n\t\t});\n\t\t$( \"#setvalue\" ).click(function() {\n\t\t\tspinner.spinner( \"value\", 5 );\n\t\t});\n\n\t\t$( \"button\" ).button();\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Select a value:</label>\n\t<input id=\"spinner\" name=\"value\">\n</p>\n\n<p>\n\t<button id=\"disable\">Toggle disable/enable</button>\n\t<button id=\"destroy\">Toggle widget</button>\n</p>\n\n<p>\n\t<button id=\"getvalue\">Get value</button>\n\t<button id=\"setvalue\">Set value to 5</button>\n</p>\n\n<div class=\"demo-description\">\n<p>Default spinner.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"decimal.html\">Decimal</a></li>\n\t<li><a href=\"currency.html\">Currency</a></li>\n\t<li><a href=\"latlong.html\">Map</a></li>\n\t<li><a href=\"time.html\">Time</a></li>\n\t<li><a href=\"overflow.html\">Overflow</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/latlong.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Map</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tfunction latlong() {\n\t\t\treturn new google.maps.LatLng( $(\"#lat\").val(), $(\"#lng\").val() );\n\t\t}\n\t\tfunction position() {\n\t\t\tmap.setCenter( latlong() );\n\t\t}\n\t\t$( \"#lat, #lng\" ).spinner({\n\t\t\tstep: .001,\n\t\t\tchange: position,\n\t\t\tstop: position\n\t\t});\n\n\t\tvar map = new google.maps.Map( $(\"#map\")[0], {\n\t\t\tzoom: 8,\n\t\t\tcenter: latlong(),\n\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t\t});\n\t});\n\t</script>\n\t<style>\n\t#map {\n\t\twidth:500px;\n\t\theight:500px;\n\t}\n\t</style>\n</head>\n<body>\n\n<label for=\"lat\">Latitude</label>\n<input id=\"lat\" name=\"lat\" value=\"44.797\">\n<br>\n<label for=\"lng\">Longitude</label>\n<input id=\"lng\" name=\"lng\" value=\"-93.278\">\n\n<div id=\"map\"></div>\n\n<div class=\"demo-description\">\n<p>Google Maps integration, using spinners to change latidude and longitude.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/overflow.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Overflow</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tspin: function( event, ui ) {\n\t\t\t\tif ( ui.value > 10 ) {\n\t\t\t\t\t$( this ).spinner( \"value\", -10 );\n\t\t\t\t\treturn false;\n\t\t\t\t} else if ( ui.value < -10 ) {\n\t\t\t\t\t$( this ).spinner( \"value\", 10 );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Select a value:</label>\n\t<input id=\"spinner\" name=\"value\" />\n</p>\n\n<div class=\"demo-description\">\n<p>\nOverflowing spinner restricted to a range of -10 to 10.\nFor anything above 10, it'll overflow to -10, and the other way round.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/time.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Time</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$.widget( \"ui.timespinner\", $.ui.spinner, {\n\t\toptions: {\n\t\t\t// seconds\n\t\t\tstep: 60 * 1000,\n\t\t\t// hours\n\t\t\tpage: 60\n\t\t},\n\n\t\t_parse: function( value ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t// already a timestamp\n\t\t\t\tif ( Number( value ) == value ) {\n\t\t\t\t\treturn Number( value );\n\t\t\t\t}\n\t\t\t\treturn +Globalize.parseDate( value );\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t_format: function( value ) {\n\t\t\treturn Globalize.format( new Date(value), \"t\" );\n\t\t}\n\t});\n\n\t$(function() {\n\t\t$( \"#spinner\" ).timespinner();\n\n\t\t$( \"#culture\" ).change(function() {\n\t\t\tvar current = $( \"#spinner\" ).timespinner( \"value\" );\n\t\t\tGlobalize.culture( $(this).val() );\n\t\t\t$( \"#spinner\" ).timespinner( \"value\", current );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Time spinner:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"08:30 PM\">\n</p>\n<p>\n\t<label for=\"culture\">Select a culture to use for formatting:</label>\n\t<select id=\"culture\">\n\t\t<option value=\"en-EN\" selected=\"selected\">English</option>\n\t\t<option value=\"de-DE\">German</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>\n\tA custom widget extending spinner. Use the Globalization plugin to parse and output\n\ta timestamp, with custom step and page options. Cursor up/down spins minutes, page up/down\n\tspins hours.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content1.html",
    "content": "<p><strong>This content was loaded via ajax.</strong></p>\n<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n<p>Mauris vitae ante. Curabitur augue. Nulla purus nibh, lobortis ut, feugiat at, aliquam id, purus. Sed venenatis, lorem venenatis volutpat commodo, purus quam lacinia justo, mattis interdum pede pede a odio. Fusce nibh. Morbi nisl mauris, dapibus in, tristique eget, accumsan et, pede. Donec mauris risus, pulvinar ut, faucibus eu, mollis in, nunc. In augue massa, commodo a, cursus vehicula, varius eu, dui. Suspendisse sodales suscipit lorem. Morbi malesuada, eros quis condimentum dignissim, lectus nibh tristique urna, non bibendum diam massa vel risus. Morbi suscipit. Proin egestas, eros at scelerisque scelerisque, dolor lacus fringilla lacus, ut ullamcorper mi magna at quam. Aliquam sed elit. Aliquam turpis purus, congue quis, iaculis id, ullamcorper sit amet, justo. Maecenas sed mauris. Proin magna justo, interdum in, tincidunt eu, viverra eu, turpis. Suspendisse mollis. In magna. Phasellus pellentesque, urna pellentesque convallis pellentesque, augue sem blandit pede, at rhoncus libero nisl a odio.</p>\n<p>Sed vitae nibh non magna semper tempor. Duis dolor. Nam congue laoreet arcu. Fusce lobortis enim quis ligula. Maecenas commodo odio id mi. Maecenas scelerisque tellus eu odio. Etiam dolor purus, lacinia a, imperdiet in, aliquam et, eros. In pellentesque. Nullam ac massa. Integer et turpis. Ut quam augue, congue non, imperdiet id, eleifend ac, nisi. Etiam ac arcu. Cras iaculis accumsan erat. Nullam vulputate sapien nec nisi pretium rhoncus. Aliquam a nibh. Vivamus est ante, fermentum a, tincidunt ut, imperdiet nec, velit. Aenean non tortor. Sed nec mauris eget tellus condimentum rutrum.</p>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content2.html",
    "content": "<p><strong>This other content was loaded via ajax.</strong></p>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.</p>\n<p>Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.</p>\n<p>Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.</p>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content3-slow.php",
    "content": "<?php\nsleep(1);\n?>\n<p><strong>This content was loaded via ajax, though it took a second.</strong></p>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.</p>\n<p>Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.</p>\n<p>Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.</p>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content4-broken.php",
    "content": "<?php \nheader(\"HTTP/1.0 404 Not Found\");\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Content via Ajax</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tbeforeLoad: function( event, ui ) {\n\t\t\t\tui.jqXHR.error(function() {\n\t\t\t\t\tui.panel.html(\n\t\t\t\t\t\t\"Couldn't load this tab. We'll try to fix this as soon as possible. \" +\n\t\t\t\t\t\t\"If this wouldn't be a demo.\" );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Preloaded</a></li>\n\t\t<li><a href=\"ajax/content1.html\">Tab 1</a></li>\n\t\t<li><a href=\"ajax/content2.html\">Tab 2</a></li>\n\t\t<li><a href=\"ajax/content3-slow.php\">Tab 3 (slow)</a></li>\n\t\t<li><a href=\"ajax/content4-broken.php\">Tab 4 (broken)</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Fetch external content via Ajax for the tabs by setting an href value in the tab links.  While the Ajax request is waiting for a response, the tab label changes to say \"Loading...\", then returns to the normal label once loaded.</p>\n<p>Tabs 3 and 4 demonstrate slow-loading and broken AJAX tabs, and how to handle serverside errors in those cases. Note: These two require a webserver to interpret PHP. They won't work from the filesystem.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/bottom.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Tabs at bottom</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs();\n\n\t\t// fix the classes\n\t\t$( \".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *\" )\n\t\t\t.removeClass( \"ui-corner-all ui-corner-top\" )\n\t\t\t.addClass( \"ui-corner-bottom\" );\n\n\t\t// move the nav to the bottom\n\t\t$( \".tabs-bottom .ui-tabs-nav\" ).appendTo( \".tabs-bottom\" );\n\t});\n\t</script>\n\t<style>\n\t/* force a height so the tabs don't jump as content height changes */\n\t#tabs .tabs-spacer { float: left; height: 200px; }\n\t.tabs-bottom .ui-tabs-nav { clear: left; padding: 0 .2em .2em .2em; }\n\t.tabs-bottom .ui-tabs-nav li { top: auto; bottom: 0; margin: 0 .2em 1px 0; border-bottom: auto; border-top: 0; }\n\t.tabs-bottom .ui-tabs-nav li.ui-tabs-active { margin-top: -1px; padding-top: 1px; }\n\t</style>\n</head>\n<body>\n\n<div id=\"tabs\" class=\"tabs-bottom\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div class=\"tabs-spacer\"></div>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>With some additional CSS (for positioning) and JS (to put the right classes on elements) the tabs can be placed below their content.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/collapsible.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Collapse content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tcollapsible: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click the selected tab to toggle its content closed/open.  To enable this functionality, set the <code>collapsible</code> option to true.</p>\n<pre><code>collapsible: true\n</code></pre>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click tabs to swap between content that is broken into logical sections.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"ajax.html\">Content via Ajax</a></li>\n\t<li><a href=\"mouseover.html\">Open on mouseover</a></li>\n\t<li><a href=\"collapsible.html\">Collapse content</a></li>\n\t<li><a href=\"sortable.html\">Sortable</a></li>\n\t<li><a href=\"manipulation.html\">Simple manipulation</a></li>\n\t<li><a href=\"bottom.html\">Tabs below content</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/manipulation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Simple manipulation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#dialog label, #dialog input { display:block; }\n\t#dialog label { margin-top: 0.5em; }\n\t#dialog input, #dialog textarea { width: 95%; }\n\t#tabs { margin-top: 1em; }\n\t#tabs li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }\n\t#add_tab { cursor: pointer; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar tabTitle = $( \"#tab_title\" ),\n\t\t\ttabContent = $( \"#tab_content\" ),\n\t\t\ttabTemplate = \"<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>\",\n\t\t\ttabCounter = 2;\n\n\t\tvar tabs = $( \"#tabs\" ).tabs();\n\n\t\t// modal dialog init: custom buttons and a \"close\" callback reseting the form inside\n\t\tvar dialog = $( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\tAdd: function() {\n\t\t\t\t\taddTab();\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tform[ 0 ].reset();\n\t\t\t}\n\t\t});\n\n\t\t// addTab form: calls addTab function on submit and closes the dialog\n\t\tvar form = dialog.find( \"form\" ).submit(function( event ) {\n\t\t\taddTab();\n\t\t\tdialog.dialog( \"close\" );\n\t\t\tevent.preventDefault();\n\t\t});\n\n\t\t// actual addTab function: adds new tab using the input from the form above\n\t\tfunction addTab() {\n\t\t\tvar label = tabTitle.val() || \"Tab \" + tabCounter,\n\t\t\t\tid = \"tabs-\" + tabCounter,\n\t\t\t\tli = $( tabTemplate.replace( /#\\{href\\}/g, \"#\" + id ).replace( /#\\{label\\}/g, label ) ),\n\t\t\t\ttabContentHtml = tabContent.val() || \"Tab \" + tabCounter + \" content.\";\n\n\t\t\ttabs.find( \".ui-tabs-nav\" ).append( li );\n\t\t\ttabs.append( \"<div id='\" + id + \"'><p>\" + tabContentHtml + \"</p></div>\" );\n\t\t\ttabs.tabs( \"refresh\" );\n\t\t\ttabCounter++;\n\t\t}\n\n\t\t// addTab button: just opens the dialog\n\t\t$( \"#add_tab\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\tdialog.dialog( \"open\" );\n\t\t\t});\n\n\t\t// close icon: removing the tab on click\n\t\t$( \"#tabs span.ui-icon-close\" ).live( \"click\", function() {\n\t\t\tvar panelId = $( this ).closest( \"li\" ).remove().attr( \"aria-controls\" );\n\t\t\t$( \"#\" + panelId ).remove();\n\t\t\ttabs.tabs( \"refresh\" );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Tab data\">\n\t<form>\n\t\t<fieldset class=\"ui-helper-reset\">\n\t\t\t<label for=\"tab_title\">Title</label>\n\t\t\t<input type=\"text\" name=\"tab_title\" id=\"tab_title\" value=\"\" class=\"ui-widget-content ui-corner-all\" />\n\t\t\t<label for=\"tab_content\">Content</label>\n\t\t\t<textarea name=\"tab_content\" id=\"tab_content\" class=\"ui-widget-content ui-corner-all\"></textarea>\n\t\t</fieldset>\n\t</form>\n</div>\n\n<button id=\"add_tab\">Add Tab</button>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a> <span class=\"ui-icon ui-icon-close\">Remove Tab</span></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Simple tabs adding and removing.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/mouseover.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Open on mouseover</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tevent: \"mouseover\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Toggle sections open/closed on mouseover with the <code>event</code> option. The default value for event is \"click.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar tabs = $( \"#tabs\" ).tabs();\n\t\ttabs.find( \".ui-tabs-nav\" ).sortable({\n\t\t\taxis: \"x\",\n\t\t\tstop: function() {\n\t\t\t\ttabs.tabs( \"refresh\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Drag the tabs above to re-order them.</p>\n<p>Making tabs sortable is as simple as calling <code>.sortable()</code> on the <code>.ui-tabs-nav</code> element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Vertical Tabs functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs().addClass( \"ui-tabs-vertical ui-helper-clearfix\" );\n\t\t$( \"#tabs li\" ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-left\" );\n\t});\n\t</script>\n\t<style>\n\t.ui-tabs-vertical { width: 55em; }\n\t.ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 12em; }\n\t.ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }\n\t.ui-tabs-vertical .ui-tabs-nav li a { display:block; }\n\t.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }\n\t.ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}\n\t</style>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<h2>Content heading 1</h2>\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<h2>Content heading 2</h2>\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<h2>Content heading 3</h2>\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click tabs to swap between content that is broken into logical sections.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content1.html",
    "content": "<p><strong>This content was loaded via ajax.</strong></p>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content2.html",
    "content": "<p><strong>This other content was loaded via ajax.</strong></p>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-animation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom animation demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#show-option\" ).tooltip({\n\t\t\tshow: {\n\t\t\t\teffect: \"slideDown\",\n\t\t\t\tdelay: 250\n\t\t\t}\n\t\t});\n\t\t$( \"#hide-option\" ).tooltip({\n\t\t\thide: {\n\t\t\t\teffect: \"explode\",\n\t\t\t\tdelay: 250\n\t\t\t}\n\t\t});\n\t\t$( \"#open-event\" ).tooltip({\n\t\t\tshow: null,\n\t\t\tposition: {\n\t\t\t\tmy: \"left top\",\n\t\t\t\tat: \"left bottom\"\n\t\t\t},\n\t\t\topen: function( event, ui ) {\n\t\t\t\tui.tooltip.animate({ top: ui.tooltip.position().top + 10 }, \"fast\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>There are various ways to customize the animation of a tooltip.</p>\n<p>You can use the <a id=\"show-option\" href=\"http://jqueryui.com/demos/tooltip/#option-show\" title=\"slide down on show\">show</a> and\n<a id=\"hide-option\" href=\"http://jqueryui.com/demos/tooltip/#option-hide\" title=\"explode on hide\">hide</a> options.</p>\n<p>You can also use the <a id=\"open-event\" href=\"http://jqueryui.com/demos/tooltip/#event-open\" title=\"move down on show\">open event</a>.</p>\n\n<div class=\"demo-description\">\n<p>This demo shows how to customize animations using the show and hide options,\nas well as the open event.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-content.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.photo {\n\t\twidth: 300px;\n\t\ttext-align: center;\n\t}\n\t.photo .ui-widget-header {\n\t\tmargin: 1em 0;\n\t}\n\t.map {\n\t\twidth: 350px;\n\t\theight: 350px;\n\t}\n\t.ui-tooltip {\n\t\tmax-width: 350px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\titems: \"img, [data-geo], [title]\",\n\t\t\tcontent: function() {\n\t\t\t\tvar element = $( this );\n\t\t\t\tif ( element.is( \"[data-geo]\" ) ) {\n\t\t\t\t\tvar text = element.text();\n\t\t\t\t\treturn \"<img class='map' alt='\" + text +\n\t\t\t\t\t\t\"' src='http://maps.google.com/maps/api/staticmap?\" +\n\t\t\t\t\t\t\"zoom=11&size=350x350&maptype=terrain&sensor=false&center=\" +\n\t\t\t\t\t\ttext + \"'>\";\n\t\t\t\t}\n\t\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\t\treturn element.attr( \"title\" );\n\t\t\t\t}\n\t\t\t\tif ( element.is( \"img\" ) ) {\n\t\t\t\t\treturn element.attr( \"alt\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget photo\">\n\t<div class=\"ui-widget-header ui-corner-all\">\n\t\t<h2>St. Stephen's Cathedral</h2>\n\t\t<h3><a href=\"http://maps.google.com/maps?q=vienna,+austria&amp;z=11\" data-geo>Vienna, Austria</a></h3>\n\t</div>\n\t<a href=\"http://en.wikipedia.org/wiki/File:Wien_Stefansdom_DSC02656.JPG\">\n\t\t<img src=\"images/st-stephens.jpg\" alt=\"St. Stephen's Cathedral\" class=\"ui-corner-all\">\n\t</a>\n</div>\n\n<div class=\"ui-widget photo\">\n\t<div class=\"ui-widget-header ui-corner-all\">\n\t\t<h2>Tower Bridge</h2>\n\t\t<h3><a href=\"http://maps.google.com/maps?q=london,+england&amp;z=11\" data-geo>London, England</a></h3>\n\t</div>\n\t<a href=\"http://en.wikipedia.org/wiki/File:Tower_bridge_London_Twilight_-_November_2006.jpg\">\n\t\t<img src=\"images/tower-bridge.jpg\" alt=\"Tower Bridge\" class=\"ui-corner-all\">\n\t</a>\n</div>\n\n<p>All images are part of <a href=\"http://commons.wikimedia.org/wiki/Main_Page\">Wikimedia Commons</a>\nand are licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.en\" title=\"Creative Commons Attribution-ShareAlike 3.0\">CC BY-SA 3.0</a> by the copyright holder.</p>\n\n<div class=\"demo-description\">\n<p>Shows how to combine different event delegated tooltips into a single instance, by customizing the items and content options.</p>\n<p>We realize you may want to interact with the map tooltips. This is a planned feature for a future version.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-style.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom Styling</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.tooltip.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\tposition: {\n\t\t\t\tmy: \"center bottom-20\",\n\t\t\t\tat: \"center top\",\n\t\t\t\tusing: function( position, feedback ) {\n\t\t\t\t\t$( this ).css( position );\n\t\t\t\t\t$( \"<div>\" )\n\t\t\t\t\t\t.addClass( \"arrow\" )\n\t\t\t\t\t\t.addClass( feedback.vertical )\n\t\t\t\t\t\t.addClass( feedback.horizontal )\n\t\t\t\t\t\t.appendTo( this );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n\t<style>\n\t.ui-tooltip, .arrow:after {\n\t\tbackground: black;\n\t\tborder: 2px solid white;\n\t}\n\t.ui-tooltip {\n\t\tpadding: 10px 20px;\n\t\tcolor: white;\n\t\tborder-radius: 20px;\n\t\tfont: bold 14px \"Helvetica Neue\", Sans-Serif;\n\t\ttext-transform: uppercase;\n\t\tbox-shadow: 0 0 7px black;\n\t}\n\t.arrow {\n\t\twidth: 70px;\n\t\theight: 16px;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\tmargin-left: -35px;\n\t\tbottom: -16px;\n\t}\n\t.arrow.top {\n\t\ttop: -16px;\n\t\tbottom: auto;\n\t}\n\t.arrow.left {\n\t\tleft: 20%;\n\t}\n\t.arrow:after {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tleft: 20px;\n\t\ttop: -20px;\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tbox-shadow: 6px 5px 9px -9px black;\n\t\t-webkit-transform: rotate(45deg);\n\t\t-moz-transform: rotate(45deg);\n\t\t-ms-transform: rotate(45deg);\n\t\t-o-transform: rotate(45deg);\n\t\ttranform: rotate(45deg);\n\t}\n\t.arrow.top:after {\n\t\tbottom: -20px;\n\t\ttop: auto;\n\t}\n\t</style>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label> <input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Hover the links above or use the tab key to cycle the focus on each element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip();\n\t});\n\t</script>\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block;\n\t\twidth: 5em;\n\t}\n\t</style>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label><input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Hover the links above or use the tab key to cycle the focus on each element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/forms.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Forms</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block; width: 5em;\n\t}\n\tfieldset div {\n\t\tmargin-bottom: 2em;\n\t}\n\tfieldset .help {\n\t\tdisplay: inline-block;\n\t}\n\t.ui-tooltip {\n\t\twidth: 210px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar tooltips = $( \"[title]\" ).tooltip();\n\t\t$( \"<button>\" )\n\t\t\t.text( \"Show help\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\ttooltips.tooltip( \"open\" );\n\t\t\t})\n\t\t\t.insertAfter( \"form\" );\n\t});\n\t</script>\n</head>\n<body>\n\n<form>\n\t<fieldset>\n\t\t<div>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" title=\"Please provide your firstname.\">\n\t\t</div>\n\t\t<div>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" title=\"Please provide also your lastname.\">\n\t\t</div>\n\t\t<div>\n\t\t\t<label for=\"address\">Address</label>\n\t\t\t<input id=\"address\" name=\"address\" title=\"Your home or work address.\">\n\t\t</div>\n\t</fieldset>\n</form>\n\n<div class=\"demo-description\">\n<p>Use the button below to display the help texts, or just focus or mouseover the indivdual inputs.</p>\n<p>A fixed width is defined in CSS to make the tooltips look consistent when displayed all at once.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"custom-style.html\">Custom style with arrow</a></li>\n\t<li><a href=\"forms.html\">Forms with tooltips</a></li>\n\t<li><a href=\"tracking.html\">Track the mouse</a></li>\n\t<li><a href=\"custom-animation.html\">Custom animation</a></li>\n\t<li><a href=\"custom-content.html\">Custom content</a></li>\n\t<li><a href=\"video-player.html\">Video Player</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/tracking.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Track the mouse</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block;\n\t\twidth: 5em;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\ttrack: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label><input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Here the tooltips are positioned relative to the mouse, and follow the mouse while it moves above the element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/video-player.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Video Player demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.player {\n\t\twidth: 500px;\n\t\theight: 300px;\n\t\tborder: 2px groove gray;\n\t\tbackground: rgb(200, 200, 200);\n\t\ttext-align: center;\n\t\tline-height: 300px;\n\t}\n\t.ui-tooltip {\n\t\tborder: 1px solid white;\n\t\tbackground: rgba(20, 20, 20, 1);\n\t\tcolor: white;\n\t}\n\t.set {\n\t\tdisplay: inline-block;\n\t}\n\t.notification {\n\t\tposition: absolute;\n\t\tdisplay: inline-block;\n\t\tfont-size: 2em;\n\t\tpadding: .5em;\n\t\tbox-shadow: 2px 2px 5px -2px rgba(0,0,0,0.5);\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction notify( input ) {\n\t\t\tvar msg = \"Selected \" + $.trim( input.data( \"tooltip-title\" ) || input.text() );\n\t\t\t$( \"<div>\" )\n\t\t\t\t.appendTo( document.body )\n\t\t\t\t.text( msg )\n\t\t\t\t.addClass( \"notification ui-state-default ui-corner-bottom\" )\n\t\t\t\t.position({\n\t\t\t\t\tmy: \"center top\",\n\t\t\t\t\tat: \"center top\",\n\t\t\t\t\tof: window\n\t\t\t\t})\n\t\t\t\t.show({\n\t\t\t\t\teffect: \"blind\"\n\t\t\t\t})\n\t\t\t\t.delay( 1000 )\n\t\t\t\t.hide({\n\t\t\t\t\teffect: \"blind\",\n\t\t\t\t\tduration: \"slow\"\n\t\t\t\t}, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t});\n\t\t}\n\n\t\t$( \"button\" ).each(function() {\n\t\t\tvar button = $( this ).button({\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: $( this ).data( \"icon\" )\n\t\t\t\t},\n\t\t\t\ttext: !!$( this ).attr( \"title\" )\n\t\t\t});\n\t\t\tbutton.click(function() {\n\t\t\t\tnotify( button );\n\t\t\t});\n\t\t});\n\t\t$( \".set\" ).buttonset({\n\t\t\titems: \"button\"\n\t\t});\n\n\t\t$( document ).tooltip({\n\t\t\tposition: {\n\t\t\t\tmy: \"center top\",\n\t\t\t\tat: \"center bottom+5\",\n\t\t\t},\n\t\t\tshow: {\n\t\t\t\tduration: \"fast\"\n\t\t\t},\n\t\t\thide: {\n\t\t\t\teffect: \"hide\"\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"player\">Here Be Video (HTML5?)</div>\n<div class=\"tools\">\n\t<span class=\"set\">\n\t\t<button data-icon=\"ui-icon-circle-arrow-n\" title=\"I like this\">Like</button>\n\t\t<button data-icon=\"ui-icon-circle-arrow-s\">I dislike this</button>\n\t</span>\n\t<div class=\"set\">\n\t\t<button data-icon=\"ui-icon-circle-plus\" title=\"Add to Watch Later\">Add to</button>\n\t\t<button class=\"menu\" data-icon=\"ui-icon-triangle-1-s\">Add to favorites or playlist</button>\n\t</div>\n\t<button title=\"Share this video\">Share</button>\n\t<button data-icon=\"ui-icon-alert\">Flag as inappropiate</button>\n</div>\n\n<div class=\"demo-description\">\n<p>A fake video player with like/share/stats button, each with a custom-styled tooltip.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Widget - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.custom-colorize {\n\t\tfont-size: 20px;\n\t\tposition: relative;\n\t\twidth: 75px;\n\t\theight: 75px;\n\t}\n\t.custom-colorize-changer {\n\t\tfont-size: 10px;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// the widget definition, where \"custom\" is the namespace,\n\t\t// \"colorize\" the widget name\n\t\t$.widget( \"custom.colorize\", {\n\t\t\t// default options\n\t\t\toptions: {\n\t\t\t\tred: 255,\n\t\t\t\tgreen: 0,\n\t\t\t\tblue: 0,\n\n\t\t\t\t// callbacks\n\t\t\t\tchange: null,\n\t\t\t\trandom: null\n\t\t\t},\n\n\t\t\t// the constructor\n\t\t\t_create: function() {\n\t\t\t\tthis.element\n\t\t\t\t\t// add a class for theming\n\t\t\t\t\t.addClass( \"custom-colorize\" )\n\t\t\t\t\t// prevent double click to select text\n\t\t\t\t\t.disableSelection();\n\n\t\t\t\tthis.changer = $( \"<button>\", {\n\t\t\t\t\ttext: \"change\",\n\t\t\t\t\t\"class\": \"custom-colorize-changer\"\n\t\t\t\t})\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.button();\n\n\t\t\t\t// bind click events on the changer button to the random method\n\t\t\t\tthis._on( this.changer, {\n\t\t\t\t\t// _on won't call random when widget is disabled\n\t\t\t\t\tclick: \"random\"\n\t\t\t\t});\n\t\t\t\tthis._refresh();\n\t\t\t},\n\n\t\t\t// called when created, and later when changing options\n\t\t\t_refresh: function() {\n\t\t\t\tthis.element.css( \"background-color\", \"rgb(\" +\n\t\t\t\t\tthis.options.red +\",\" +\n\t\t\t\t\tthis.options.green + \",\" +\n\t\t\t\t\tthis.options.blue + \")\"\n\t\t\t\t);\n\n\t\t\t\t// trigger a callback/event\n\t\t\t\tthis._trigger( \"change\" );\n\t\t\t},\n\n\t\t\t// a public method to change the color to a random value\n\t\t\t// can be called directly via .colorize( \"random\" )\n\t\t\trandom: function( event ) {\n\t\t\t\tvar colors = {\n\t\t\t\t\tred: Math.floor( Math.random() * 256 ),\n\t\t\t\t\tgreen: Math.floor( Math.random() * 256 ),\n\t\t\t\t\tblue: Math.floor( Math.random() * 256 )\n\t\t\t\t};\n\n\t\t\t\t// trigger an event, check if it's canceled\n\t\t\t\tif ( this._trigger( \"random\", event, colors ) !== false ) {\n\t\t\t\t\tthis.option( colors );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// events bound via _on are removed automatically\n\t\t\t// revert other modifications here\n\t\t\t_destroy: function() {\n\t\t\t\t// remove generated elements\n\t\t\t\tthis.changer.remove();\n\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"custom-colorize\" )\n\t\t\t\t\t.enableSelection()\n\t\t\t\t\t.css( \"background-color\", \"transparent\" );\n\t\t\t},\n\n\t\t\t// _setOptions is called with a hash of all options that are changing\n\t\t\t// always refresh when changing options\n\t\t\t_setOptions: function() {\n\t\t\t\t// _super and _superApply handle keeping the right this-context\n\t\t\t\tthis._superApply( arguments );\n\t\t\t\tthis._refresh();\n\t\t\t},\n\n\t\t\t// _setOption is called for each individual option that is changing\n\t\t\t_setOption: function( key, value ) {\n\t\t\t\t// prevent invalid color values\n\t\t\t\tif ( /red|green|blue/.test(key) && (value < 0 || value > 255) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._super( key, value );\n\t\t\t}\n\t\t});\n\n\t\t// initialize with default options\n\t\t$( \"#my-widget1\" ).colorize();\n\n\t\t// initialize with two customized options\n\t\t$( \"#my-widget2\" ).colorize({\n\t\t\tred: 60,\n\t\t\tblue: 60\n\t\t});\n\n\t\t// initialize with custom green value\n\t\t// and a random callback to allow only colors with enough green\n\t\t$( \"#my-widget3\" ).colorize( {\n\t\t\tgreen: 128,\n\t\t\trandom: function( event, ui ) {\n\t\t\t\treturn ui.green > 128;\n\t\t\t}\n\t\t});\n\n\t\t// click to toggle enabled/disabled\n\t\t$( \"#disable\" ).click(function() {\n\t\t\t// use the custom selector created for each widget to find all instances\n\t\t\t// all instances are toggled together, so we can check the state from the first\n\t\t\tif ( $( \":custom-colorize\" ).colorize( \"option\", \"disabled\" ) ) {\n\t\t\t\t$( \":custom-colorize\" ).colorize( \"enable\" );\n\t\t\t} else {\n\t\t\t\t$( \":custom-colorize\" ).colorize( \"disable\" );\n\t\t\t}\n\t\t});\n\n\t\t// click to set options after initalization\n\t\t$( \"#black\" ).click( function() {\n\t\t\t$( \":custom-colorize\" ).colorize( \"option\", {\n\t\t\t\tred: 0,\n\t\t\t\tgreen: 0,\n\t\t\t\tblue: 0\n\t\t\t});\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div>\n\t<div id=\"my-widget1\">color me</div>\n\t<div id=\"my-widget2\">color me</div>\n\t<div id=\"my-widget3\">color me</div>\n\t<button id=\"disable\">Toggle disabled option</button>\n\t<button id=\"black\">Go black</button>\n</div>\n\n<div class=\"demo-description\">\n<p>This demo shows a simple custom widget built using the widget factory (jquery.ui.widget.js).</p>\n<p>The three boxes are initialized in different ways. Clicking them changes their background color. View source to see how it works, its heavily commented</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Widget Demo</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/accordion.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI accordion documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Accordion Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Convert a pair of headers and content panels into an accordion.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-active\">active</a></div>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-collapsible\">collapsible</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-event\">event</a></div>\n<div><a href=\"#option-header\">header</a></div>\n<div><a href=\"#option-heightStyle\">heightStyle</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-beforeActivate\">beforeActivate</a></div>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"accordion1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Accordion Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Convert a pair of headers and content panels into an accordion.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-active\" class=\"api-item first-item\">\n<h3>active<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>\n\t\t\t\tWhich panel is currently open.\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Setting <code>active</code> to <code>false</code> will collapse all panels. This requires the <a href=\"#option-collapsible\"><code>collapsible</code></a> option to be <code>true</code>.</li>\n<li>\n<strong>Integer</strong>: The zero-based index of the panel that is active (open). A negative value selects panels going backward from the last panel.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the accordion with the active option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ active: 2 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the active option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">active = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code><code class=\"plain\">, 2 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animate\" class=\"api-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>If and how to animate changing panels.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: A value of <code>false</code> will disable animations.</li>\n<li>\n<strong>Number</strong>: Duration in milliseconds with default easing.</li>\n<li>\n<strong>String</strong>: Name of <a href=\"/easings/\">easing</a> to use with default duration.</li>\n<li>\n<strong>Object</strong>: Animation settings with <code>easing</code> and <code>duration</code> properties.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Can also contain a <code>down</code> property with any of the above options.</li>\n\t\t\t\t\t\t<li>\"Down\" animations occur when the panel being activated has a lower index than the currently active panel.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the accordion with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ animate: </code><code class=\"string\">\"bounceslide\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"string\">\"bounceslide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-collapsible\" class=\"api-item\">\n<h3>collapsible<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether all the sections can be closed at once. Allows collapsing the active section.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the collapsible option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ collapsible: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the collapsible option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">collapsible = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the accordion if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-event\" class=\"api-item\">\n<h3>event<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"click\"</code>\n</div>\n<div>The event that accordion headers will react to in order to activate the associated panel. Multiple events can be specificed, separated by a space.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the event option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ event: </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the event option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">event = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code><code class=\"plain\">, </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-header\" class=\"api-item\">\n<h3>header<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"&gt; li &gt; :first-child,&gt; :not(li):even\"</code>\n</div>\n<div>\n\t\t\t\t<p>Selector for the header element, applied via <code>.find()</code> on the main accordion element. Content panels must be the sibling immedately after their associated headers.</p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the header option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ header: </code><code class=\"string\">\"h3\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the header option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">header = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"header\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"header\"</code><code class=\"plain\">, </code><code class=\"string\">\"h3\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-heightStyle\" class=\"api-item\">\n<h3>heightStyle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>\n\t\t\t\t<p>Controls the height of the accordion and each panel. Possible values:</p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"auto\"</code>: All panels will be set to the height of the tallest panel.</li>\n\t\t\t\t\t<li>\n<code>\"fill\"</code>: Expand to the available height based on the accordion's parent height.</li>\n\t\t\t\t\t<li>\n<code>\"content\"</code>: Each panel will be only as tall as its content.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the heightStyle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ heightStyle: </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the heightStyle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">heightStyle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code><code class=\"plain\">, </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ \"header\": \"ui-icon-triangle-1-e\", \"activeHeader\": \"ui-icon-triangle-1-s\" }</code>\n</div>\n<div>\n\t\t\t\t<p>Icons to use for headers, matching an icon defined by the jQuery UI CSS Framework. Set to <code>false</code> to have no icons displayed.</p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>header (string, default: \"ui-icon-triangle-1-e\")</li>\n\t\t\t\t\t<li>activeHeader (string, default: \"ui-icon-triangle-1-s\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ icons: { </code><code class=\"string\">\"header\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-plus\"</code><code class=\"plain\">, </code><code class=\"string\">\"headerSelected\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-minus\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { </code><code class=\"string\">\"header\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-plus\"</code><code class=\"plain\">, </code><code class=\"string\">\"headerSelected\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-minus\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the accordion functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current accordion options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the accordion option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the accordion.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Recompute the height of the accordion panels. Results depend on the content and the <a href=\"#option-heightStyle\"><code>heightStyle</code></a> option.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>accordionactivate</code></span>\n</h3>\n<div>Triggered after a panel has been activated (after animation completes). If the accordion was previously collapsed, <code>ui.oldHeader</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the accordion is collapsing, <code>ui.newHeader</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that was just activated.</div>\n</li>\n<li>\n<div><strong>oldHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that was just deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordionactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordionactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeActivate\" class=\"api-item\">\n<h3>beforeActivate( event, ui )<span class=\"returns\">Type: <code>accordionbeforeactivate</code></span>\n</h3>\n<div>Triggered directly before a panel is activated. Can be canceled to prevent the panel from activating. If the accordion is currently collapsed, <code>ui.oldHeader</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the accordion is collapsing, <code>ui.newHeader</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that is about to be deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the beforeActivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeActivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordionbeforeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordionbeforeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>accordioncreate</code></span>\n</h3>\n<div>Triggered when the accordion is created. If the accordion is collapsed, <code>ui.header</code> and <code>ui.panel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>header</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active header.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active panel.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordioncreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordioncreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The markup of your accordion container needs pairs of headers and content panels:</p>\n\n\t\t<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"accordion\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;First header&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;First content panel&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Second header&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;Second content panel&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n\n\t\t<p>Accordions support arbitrary markup, but each content panel must always be the next sibling after its associated header. See the <a href=\"#option-header\"><code>header</code></a> option for information on how to use custom markup structures.</p>\n\t\t<p>The panels can be activated programmatically by setting the <a href=\"#option-active\"><code>active</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When focus is on a header, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/LEFT - Move focus to the previous header. If on first header, moves focus to last header.</li>\n\t\t\t<li>DOWN/RIGHT - Move focus to the next header. If on last header, moves focus to first header.</li>\n\t\t\t<li>HOME - Move focus to the first header.</li>\n\t\t\t<li>END - Move focus to the last header.</li>\n\t\t\t<li>SPACE/ENTER - Activate panel associated with focused header.</li>\n\t\t</ul>\n\n\t\t<p>When focus is in a panel:</p>\n\t\t<ul>\n\t\t\t<li>CTRL+UP: Move focus to associated header.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Accordion</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;accordion demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"accordion\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 1&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Mauris mauris ante, blandit et, ultrices a, suscipit eget.</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Integer ut neque. Vivamus nisi metus, molestie vel, gravida in,</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros.</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Nam mi. Proin viverra leo ut odio.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 2&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Sed non urna. Phasellus eu ligula. Vestibulum sit amet purus.</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Vivamus hendrerit, dolor aliquet laoreet, mauris turpis velit,</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">faucibus interdum tellus libero ac justo.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 3&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Nam enim risus, molestie et, porta ac, aliquam ac, risus.</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Quisque lobortis.Phasellus pellentesque purus in massa.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item one&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item two&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item three&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number37 index36 alt2\">&nbsp;</div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">$( \"#accordion\" ).accordion();</code></div><div class=\"line number40 index39 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number41 index40 alt2\">&nbsp;</div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number43 index42 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"350\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/autocomplete.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI autocomplete documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Autocomplete Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Autocomplete enables users to quickly find and select from a pre-populated list of values as they type, leveraging searching and filtering.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-autoFocus\">autoFocus</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-minLength\">minLength</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-source\">source</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-search\">search</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-close\">close</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-response\">response</a></div>\n<div><a href=\"#event-search\">search</a></div>\n<div><a href=\"#event-select\">select</a></div>\n</div></section><article id=\"autocomplete1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Autocomplete Widget</span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Autocomplete enables users to quickly find and select from a pre-populated list of values as they type, leveraging searching and filtering.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"body\"</code>\n</div>\n<div>Which element the menu should be appended to. Override this when the autocomplete is inside a <code>position: fixed</code> element. Otherwise the popup menu would still scroll with the page.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ appendTo: </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoFocus\" class=\"api-item\">\n<h3>autoFocus<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code> the first item will automatically be focused when the menu is shown.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the autoFocus option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ autoFocus: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoFocus option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoFocus = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoFocus\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoFocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>300</code>\n</div>\n<div>The delay in milliseconds between when a keystroke occurs and when a search is performed. A zero-delay makes sense for local data (more responsive), but can produce a lot of load for remote data, while being less responsive.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ delay: 500 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 500 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the autocomplete if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minLength\" class=\"api-item\">\n<h3>minLength<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The minimum number of characters a user must type before a search is performed. Zero is useful for local data with just a few items, but a higher value should be used when a single character search could match a few thousand items.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the minLength option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ minLength: 0 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minLength option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minLength = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minLength\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minLength\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top\", at: \"left bottom\", collision: \"none\" }</code>\n</div>\n<div>Identifies the position of the suggestions menu in relation to the associated input element. The <code>of</code> option defaults to the input element, but you can specify another element to position against. You can refer to the <a href=\"/position\">jQuery UI Position</a> utility for more details about the various options.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ position: { my : </code><code class=\"string\">\"right top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right bottom\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my : </code><code class=\"string\">\"right top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right bottom\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-source\" class=\"api-item\">\n<h3>source<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Object\">Object</a> request, <a href=\"http://api.jquery.com/Types#Function\">Function</a> response( <a href=\"http://api.jquery.com/Types#Object\">Object</a> data ) )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>none; must be specified</code>\n</div>\n<div>\n\t\t\t\tDefines the data to use, must be specified.\n\t\t\t\t<p>Independent of the variant you use, the label is always treated as text. If you want the label to be treated as html you can use <a href=\"https://github.com/scottgonzalez/jquery-ui-extensions/blob/master/autocomplete/jquery.ui.autocomplete.html.js\">Scott González' html extension</a>. The demos all focus on different variations of the <code>source</code> option - look for one that matches your use case, and check out the code.</p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Array</strong>: \n\t\t\t\t\tAn array can be used for local data. There are two supported formats:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>An array of strings: <code>[ \"Choice1\", \"Choice2\" ]</code>\n</li>\n\t\t\t\t\t\t<li>An array of objects with <code>label</code> and <code>value</code> properties: <code>[ { label: \"Choice1\", value: \"value1\" }, ... ]</code>\n</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\tThe label property is displayed in the suggestion menu. The value will be inserted into the input element when a user selects an item. If just one property is specified, it will be used for both, e.g., if you provide only <code>value</code> properties, the value will also be used as the label.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: When a string is used, the Autocomplete plugin expects that string to point to a URL resource that will return JSON data. It can be on the same host or on a different one (must provide JSONP). The Autocomplete plugin does not filter the results, instead a query string is added with a <code>term</code> field, which the server-side script should use for filtering the results. For example, if the <code>source</code> option is set to <code>\"http://example.com\"</code> and the user types <code>foo</code>, a GET request would be made to <code>http://example.com?term=foo</code>. The data itself can be in the same format as the local data described above.</li>\n<li>\n<strong>Function</strong>: \n\t\t\t\t\tThe third variation, a callback, provides the most flexibility and can be used to connect any data source to Autocomplete. The callback gets two arguments:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>A <code>request</code> object, with a single <code>term</code> property, which refers to the value currently in the text input. For example, if the user enters <code>\"new yo\"</code> in a city field, the Autocomplete term will equal <code>\"new yo\"</code>.</li>\n\t\t\t\t\t\t<li>A <code>response</code> callback, which expects a single argument: the data to suggest to the user. This data should be filtered based on the provided term, and can be in any of the formats described above for simple local data. It's important when providing a custom source callback to handle errors during the request. You must always call the <code>response</code> callback even if you encounter an error. This ensures that the widget always has the correct state.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<p>When filtering data locally, you can make use of the built-in <code>$.ui.autocomplete.escapeRegex</code> function. It'll take a single string argument and escape all regex characters, making the result safe to pass to <code>new RegExp()</code>.</p>\n\t\t\t\t</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the source option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ source: [ </code><code class=\"string\">\"c++\"</code><code class=\"plain\">, </code><code class=\"string\">\"java\"</code><code class=\"plain\">, </code><code class=\"string\">\"php\"</code><code class=\"plain\">, </code><code class=\"string\">\"coldfusion\"</code><code class=\"plain\">, </code><code class=\"string\">\"javascript\"</code><code class=\"plain\">, </code><code class=\"string\">\"asp\"</code><code class=\"plain\">, </code><code class=\"string\">\"ruby\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the source option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">source = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"source\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"source\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"c++\"</code><code class=\"plain\">, </code><code class=\"string\">\"java\"</code><code class=\"plain\">, </code><code class=\"string\">\"php\"</code><code class=\"plain\">, </code><code class=\"string\">\"coldfusion\"</code><code class=\"plain\">, </code><code class=\"string\">\"javascript\"</code><code class=\"plain\">, </code><code class=\"string\">\"asp\"</code><code class=\"plain\">, </code><code class=\"string\">\"ruby\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>Closes the Autocomplete menu. Useful in combination with the <a href=\"#method-search\"><code>search</code></a> method, to close the open menu.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the autocomplete functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the autocomplete.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the autocomplete.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current autocomplete options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the autocomplete option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the autocomplete.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-search\">\n<div class=\"api-item\">\n<h3>search(  [value ] )</h3>\n<div>Triggers a <a href=\"#event-search\"><code>search</code></a> event and invokes the data source if the event is not canceled. Can be used by a selectbox-like button to open the suggestions when clicked. When invoked with no parameters, the current input's value is used. Can be called with an empty string and <code>minLength: 0</code> to display all items.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div></div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the search method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"search\"</code><code class=\"plain\">, </code><code class=\"string\">\"\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget()</h3>\n<div>Returns a <code>jQuery</code> object containing the menu element. Although the menu items are constantly created and destroyed, the menu element itself is created during initialization and is constantly reused.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>autocompletechange</code></span>\n</h3>\n<div>Triggered when the field is blurred, if the value has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The item selected from the menu, if any. Otherwise the property is <code>null</code>.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletechange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletechange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-close\" class=\"api-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>autocompleteclose</code></span>\n</h3>\n<div>Triggered when the menu is hidden. Not every <code>close</code> event will be accompanied by a <code>change</code> event.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>autocompletecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the autocomplete is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>autocompletefocus</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when focus is moved to an item (not selecting). The default action is to replace the text field's value with the value of the focused item, though only if the event was triggered by a keyboard interaction.\n\t\t\t\t<p>Canceling this event prevents the value from being updated, but does not prevent the menu item from being focused.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The focused item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletefocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletefocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>autocompleteopen</code></span>\n</h3>\n<div>Triggered when the suggestion menu is opened or updated.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-response\" class=\"api-item\">\n<h3>response( event, ui )<span class=\"returns\">Type: <code>autocompleteresponse</code></span>\n</h3>\n<div>Triggered after a search completes, before the menu is shown. Useful for local manipulation of suggestion data, where a custom <a href=\"#option-source\"><code>source</code></a> option callback is not required. This event is always triggered when a search completes, even if the menu will not be shown because there are no results or the Autocomplete is disabled.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>content</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>Contains the response data and can be modified to change the results that will be shown. This data is already normalized, so if you modify the data, make sure to include both <code>value</code> and <code>label</code> properties for each item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the response callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">response: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteresponse event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteresponse\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-search\" class=\"api-item\">\n<h3>search( event, ui )<span class=\"returns\">Type: <code>autocompletesearch</code></span>\n</h3>\n<div>Triggered before a search is performed, after <a href=\"#option-minLength\"><code>minLength</code></a> and <a href=\"#option-delay\"><code>delay</code></a> are met. If canceled, then no request will be started and no items suggested.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the search callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">search: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletesearch event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletesearch\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-select\" class=\"api-item\">\n<h3>select( event, ui )<span class=\"returns\">Type: <code>autocompleteselect</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when an item is selected from the menu. The default action is to replace the text field's value with the value of the selected item.\n\t\t\t\t<p>Canceling this event prevents the value from being updated, but does not prevent the menu from closing.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The selected item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the select callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">select: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteselect event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteselect\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>By giving an Autocomplete field focus or entering something into it, the plugin starts searching for entries that match and displays a list of values to choose from. By entering more characters, the user can filter down the list to better matches.</p>\n\n\t\t<p>This can be used to choose previously selected values, such as entering tags for articles or entering email addresses from an address book. Autocomplete can also be used to populate associated information, such as entering a city name and getting the zip code.</p>\n\n\t\t<p>You can pull data in from a local or remote source: Local is good for small data sets, e.g., an address book with 50 entries; remote is necessary for big data sets, such as a database with hundreds or millions of entries to select from. To find out more about customizing the data soure, see the documentation for the <a href=\"#option-source\"><code>source</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When the menu is open, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP - Move focus to the previous item. If on first item, move focus to the input. If on the input, move focus to last item.</li>\n\t\t\t<li>DOWN - Move focus to the next item. If on last item, move focus to the input. If on the input, move focus to the first item.</li>\n\t\t\t<li>ESCAPE - Close the menu.</li>\n\t\t\t<li>ENTER - Select the currently focused item and close the menu.</li>\n\t\t\t<li>TAB - Select the currently focused item, close the menu, and move focus to the next focusable element.</li>\n\t\t\t<li>PAGE UP/DOWN - Scroll through a page of items (based on height of menu). <em>It's generally a bad idea to display so many items that users need to page.</em>.</li>\n\t\t</ul>\n\n\t\t<p>When the menu is closed, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/DOWN - Open the menu, if the <a href=\"#option-minLength\"><code>minLength</code></a> has been met.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Autocomplete</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;autocomplete demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;Select a programming language: &lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#autocomplete\" ).autocomplete({</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">source: [ \"c++\", \"java\", \"php\", \"coldfusion\", \"javascript\", \"asp\", \"ruby\" ]</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">});</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\">&nbsp;</div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">Using a custom source callback to match only the beginning of terms</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;autocomplete demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;Select a programming language: &lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">var tags = [ \"c++\", \"java\", \"php\", \"coldfusion\", \"javascript\", \"asp\", \"ruby\" ];</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">$( \"#autocomplete\" ).autocomplete({</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">source: function( request, response ) {</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">var matcher = new RegExp( \"^\" + $.ui.autocomplete.escapeRegex( request.term ), \"i\" );</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">response( $.grep( tags, function( item ){</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">return matcher.test( item );</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}) );</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number24 index23 alt1\"><code class=\"plain\">});</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\">&nbsp;</div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/blind-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI blind-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Blind Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe blind effect hides or shows an element by wrapping the element in a container, and \\\"pulling the blinds\\\"\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"blind1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Blind Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe blind effect hides or shows an element by wrapping the element in a container, and \"pulling the blinds\"\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">blind</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"up\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The direction the blind will be pulled to hide the element, or the direction from which the element will be revealed.</p>\n\t\t\t\t<p>Possible Values: <code>up</code>, <code>down</code>, <code>left</code>, <code>right</code>, <code>vertical</code>, <code>horizontal</code>.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>The container has <code>overflow: hidden</code> applied, so height changes affect what's visible.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the blind effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;blind demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"blind\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/bounce-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI bounce-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Bounce Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe bounce effect bounces an element.  When used with hide or show, the last or first bounce will also fade in/out.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"bounce1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Bounce Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe bounce effect bounces an element.  When used with hide or show, the last or first bounce will also fade in/out.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">bounce</h4>\n<ul>\n<li>\n<div>\n<strong>distance</strong> (default: <code>20</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The distance of the largest \"bounce\" in pixels.</div>\n</li>\n<li>\n<div>\n<strong>times</strong> (default: <code>5</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of times the element will bounce. When used with hide or show, there is an extra \"half\" bounce for the fade in/out.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the bounce effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;bounce demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"bounce\", { times: 3 }, \"slow\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/button.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI button documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Button Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Themable buttons and button sets.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-label\">label</a></div>\n<div><a href=\"#option-text\">text</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"button1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Button Widget</span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Themable buttons and button sets.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the button if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the button with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ primary: null, secondary: null }</code>\n</div>\n<div>Icons to display, with or without text (see <a href=\"#option-text\"><code>text</code></a> option). By default, the primary icon is displayed on the left of the label text and the secondary is displayed on the right. The positioning can be controlled via CSS. The value for the <code>primary</code> and <code>secondary</code> properties must be a class name, e.g., <code>\"ui-icon-gear\"</code>. For using only one icon: <code>icons: { primary: \"ui-icon-locked\" }</code>. For using two icons: <code>icons: { primary: \"ui-icon-gear\", secondary: \"ui-icon-triangle-1-s\" }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the button with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ icons: { primary: </code><code class=\"string\">\"ui-icon-gear\"</code><code class=\"plain\">, secondary: </code><code class=\"string\">\"ui-icon-triangle-1-s\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { primary: </code><code class=\"string\">\"ui-icon-gear\"</code><code class=\"plain\">, secondary: </code><code class=\"string\">\"ui-icon-triangle-1-s\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-label\" class=\"api-item\">\n<h3>label<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Text to show in the button. When not specified (<code>null</code>), the element's HTML content is used, or its <code>value</code> attribute if the element is an input element of type submit or reset, or the HTML content of the associated label element if the element is an input of type radio or checkbox.</div>\n<strong>Code examples:</strong><p>Initialize the button with the label option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ label: </code><code class=\"string\">\"custom label\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the label option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">label = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"label\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"label\"</code><code class=\"plain\">, </code><code class=\"string\">\"custom label\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-text\" class=\"api-item\">\n<h3>text<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Whether to show the label. When set to <code>false</code> no text will be displayed, but the <a href=\"#options-icons\"><code>icons</code></a> option must be enabled, otherwise the <code>text</code> option will be ignored.</div>\n<strong>Code examples:</strong><p>Initialize the button with the text option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ text: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the text option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">text = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"text\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"text\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the button functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current button options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the button option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the button.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refreshes the visual state of the button. Useful for updating button state after the native element's checked or disabled state is changed programmatically.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the element visually representing the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>buttoncreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the button is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the button with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the buttoncreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"buttoncreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Button enhances standard form elements like buttons, inputs and anchors to themable buttons with appropiate hover and active styles.</p>\n\n\t\t<p>In addition to basic push buttons, radio buttons and checkboxes (inputs of type radio and checkbox) can be converted to buttons. Their associated label is styled to appear as the button, while the underlying input is updated on click. For the association to work properly, give the input an <code>id</code> attribute, and refer to that in the label's <code>for</code> attribute. Don't nest the input inside the label, as that <a href=\"http://www.paciellogroup.com/blog/2011/07/html5-accessibility-chops-form-control-labeling/\">causes accessbility problems</a>.</p>\n\n\t\t<p>In order to group radio buttons, Button also provides an additional widget, called Buttonset. Buttonset is used by selecting a container element (which contains the radio buttons) and calling <code>.buttonset()</code>. Buttonset will also provide visual grouping, and therefore should be used whenever you have a group of buttons. It works by selecting all descendants and applying <code>.button()</code> to them. You can enable and disable a button set, which will enable and disable all contained buttons. Destroying a button set also calls each button's <code>destroy</code> method.</p>\n\n\t\t<p>When using an input of type button, submit or reset, support is limited to plain text labels with no icons.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Button</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;button demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;Button label&lt;/</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"button\" ).button();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"100\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Buttonset</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;button demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio1\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio1\"</code><code class=\"plain\">&gt;Choice 1&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio2\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">checked</code><code class=\"plain\">=</code><code class=\"string\">\"checked\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio2\"</code><code class=\"plain\">&gt;Choice 2&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio3\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio3\"</code><code class=\"plain\">&gt;Choice 3&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">$( \"#radio\" ).buttonset();</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"100\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/clip-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI clip-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Clip Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe clip effect will hide or show an element by clipping the element vertically or horizontally.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"clip1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Clip Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe clip effect will hide or show an element by clipping the element vertically or horizontally.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">clip</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"up\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The plane in which the clip effect will hide or show its element.</p>\n\t\t\t\t<p><code>vertical</code> clips the top and bottom edges, while <code>horizontal</code> clips the right and left edges.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the clip effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;clip demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"clip\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/datepicker.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI datepicker documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Datepicker Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Select a date from a popup or inline calendar\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-altField\">altField</a></div>\n<div><a href=\"#option-altFormat\">altFormat</a></div>\n<div><a href=\"#option-appendText\">appendText</a></div>\n<div><a href=\"#option-autoSize\">autoSize</a></div>\n<div><a href=\"#option-buttonImage\">buttonImage</a></div>\n<div><a href=\"#option-buttonImageOnly\">buttonImageOnly</a></div>\n<div><a href=\"#option-buttonText\">buttonText</a></div>\n<div><a href=\"#option-calculateWeek\">calculateWeek</a></div>\n<div><a href=\"#option-changeMonth\">changeMonth</a></div>\n<div><a href=\"#option-changeYear\">changeYear</a></div>\n<div><a href=\"#option-closeText\">closeText</a></div>\n<div><a href=\"#option-constrainInput\">constrainInput</a></div>\n<div><a href=\"#option-currentText\">currentText</a></div>\n<div><a href=\"#option-dateFormat\">dateFormat</a></div>\n<div><a href=\"#option-dayNames\">dayNames</a></div>\n<div><a href=\"#option-dayNamesMin\">dayNamesMin</a></div>\n<div><a href=\"#option-dayNamesShort\">dayNamesShort</a></div>\n<div><a href=\"#option-defaultDate\">defaultDate</a></div>\n<div><a href=\"#option-duration\">duration</a></div>\n<div><a href=\"#option-firstDay\">firstDay</a></div>\n<div><a href=\"#option-gotoCurrent\">gotoCurrent</a></div>\n<div><a href=\"#option-hideIfNoPrevNext\">hideIfNoPrevNext</a></div>\n<div><a href=\"#option-isRTL\">isRTL</a></div>\n<div><a href=\"#option-maxDate\">maxDate</a></div>\n<div><a href=\"#option-minDate\">minDate</a></div>\n<div><a href=\"#option-monthNames\">monthNames</a></div>\n<div><a href=\"#option-monthNamesShort\">monthNamesShort</a></div>\n<div><a href=\"#option-navigationAsDateFormat\">navigationAsDateFormat</a></div>\n<div><a href=\"#option-nextText\">nextText</a></div>\n<div><a href=\"#option-numberOfMonths\">numberOfMonths</a></div>\n<div><a href=\"#option-prevText\">prevText</a></div>\n<div><a href=\"#option-selectOtherMonths\">selectOtherMonths</a></div>\n<div><a href=\"#option-shortYearCutoff\">shortYearCutoff</a></div>\n<div><a href=\"#option-showAnim\">showAnim</a></div>\n<div><a href=\"#option-showButtonPanel\">showButtonPanel</a></div>\n<div><a href=\"#option-showCurrentAtPos\">showCurrentAtPos</a></div>\n<div><a href=\"#option-showMonthAfterYear\">showMonthAfterYear</a></div>\n<div><a href=\"#option-showOn\">showOn</a></div>\n<div><a href=\"#option-showOptions\">showOptions</a></div>\n<div><a href=\"#option-showOtherMonths\">showOtherMonths</a></div>\n<div><a href=\"#option-showWeek\">showWeek</a></div>\n<div><a href=\"#option-stepMonths\">stepMonths</a></div>\n<div><a href=\"#option-weekHeader\">weekHeader</a></div>\n<div><a href=\"#option-yearRange\">yearRange</a></div>\n<div><a href=\"#option-yearSuffix\">yearSuffix</a></div>\n<div><a href=\"#option-beforeShow\">beforeShow</a></div>\n<div><a href=\"#option-beforeShowDay\">beforeShowDay</a></div>\n<div><a href=\"#option-onChangeMonthYear\">onChangeMonthYear</a></div>\n<div><a href=\"#option-onClose\">onClose</a></div>\n<div><a href=\"#option-onSelect\">onSelect</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-dialog\">dialog</a></div>\n<div><a href=\"#method-isDisabled\">isDisabled</a></div>\n<div><a href=\"#method-hide\">hide</a></div>\n<div><a href=\"#method-show\">show</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-getDate\">getDate</a></div>\n<div><a href=\"#method-setDate\">setDate</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\"><h3>Events</h3></div></section><article id=\"datepicker1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Datepicker Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Select a date from a popup or inline calendar</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-altField\" class=\"api-item first-item\">\n<h3>altField<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>An input element that is to be updated with the selected date from the datepicker. Use the <a href=\"#option-altFormat\"><code>altFormat</code></a> option to change the format of the date within this field. Leave as blank for no alternate field.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the altField option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ altField: </code><code class=\"string\">\"#actualDate\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the altField option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">altField = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altField\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altField\"</code><code class=\"plain\">, </code><code class=\"string\">\"#actualDate\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-altFormat\" class=\"api-item\">\n<h3>altFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The <a href=\"#option-dateFormat\"><code>dateFormat</code></a> to be used for the <a href=\"#option-altField\"><code>altField</code></a> option. This allows one date format to be shown to the user for selection purposes, while a different format is actually sent behind the scenes. For a full list of the possible formats see the [[UI/Datepicker/formatDate|formatDate]] function</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the altFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ altFormat: </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the altFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">altFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-appendText\" class=\"api-item\">\n<h3>appendText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The text to display after each date field, e.g., to show the required format.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the appendText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ appendText: </code><code class=\"string\">\"(yyyy-mm-dd)\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendText\"</code><code class=\"plain\">, </code><code class=\"string\">\"(yyyy-mm-dd)\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoSize\" class=\"api-item\">\n<h3>autoSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Set to <code>true</code> to automatically resize the input field to accommodate dates in the current <a href=\"#option-dateFormat\"><code>dateFormat</code></a>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the autoSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ autoSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-beforeShow\" class=\"api-item\">\n<h3>beforeShow<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Element\">Element</a> input, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>A function that takes an input field and current datepicker instance and returns an options object to update the datepicker with. It is called just before the datepicker is displayed.</div>\n</div>\n<div id=\"option-beforeShowDay\" class=\"api-item\">\n<h3>beforeShowDay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Date\">Date</a> date )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>A function takes a date as a parameter and must return an array with <code>[0]</code> equal to <code>true</code>/<code>false</code> indicating whether or not this date is selectable, <code>[1]</code> equal to a CSS class name or <code>\"\"</code> for the default presentation, and <code>[2]</code> an optional popup tooltip for this date. It is called for each day in the datepicker before it is displayed.</div>\n</div>\n<div id=\"option-buttonImage\" class=\"api-item\">\n<h3>buttonImage<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The URL for the popup button image. If set, the <a href=\"#option-buttonText\"><code>buttonText</code></a> option becomes the <code>alt</code> value and is not directly displayed.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonImage option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonImage: </code><code class=\"string\">\"/images/datepicker.gif\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonImage option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonImage = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImage\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImage\"</code><code class=\"plain\">, </code><code class=\"string\">\"/images/datepicker.gif\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttonImageOnly\" class=\"api-item\">\n<h3>buttonImageOnly<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the button image should be rendered by itself instead of inside a button element.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonImageOnly option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonImageOnly: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonImageOnly option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonImageOnly = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImageOnly\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImageOnly\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttonText\" class=\"api-item\">\n<h3>buttonText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"...\"</code>\n</div>\n<div>The text to display on the trigger button. Use in conjunction with the <a href=\"#option-showOn\"><code>showOn</code></a> option set to <code>\"button\"</code> or <code>\"both\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonText: </code><code class=\"string\">\"Choose\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Choose\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-calculateWeek\" class=\"api-item\">\n<h3>calculateWeek<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>jQuery.datepicker.iso8601Week</code>\n</div>\n<div>A function to calculate the week of the year for a given date. The default implementation uses the ISO 8601 definition: weeks start on a Monday; the first week of the year contains the first Thursday of the year.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the calculateWeek option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ calculateWeek: myWeekCalc });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the calculateWeek option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">calculateWeek = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"calculateWeek\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"calculateWeek\"</code><code class=\"plain\">, myWeekCalc );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-changeMonth\" class=\"api-item\">\n<h3>changeMonth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the month should be rendered as a dropdown instead of text.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the changeMonth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ changeMonth: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the changeMonth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">changeMonth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeMonth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeMonth\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-changeYear\" class=\"api-item\">\n<h3>changeYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the year should be rendered as a dropdown instead of text. Use the <a href=\"#option-yearRange\"><code>yearRange</code></a> option to control which years are made available for selection.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the changeYear option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ changeYear: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the changeYear option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">changeYear = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeYear\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeYear\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeText\" class=\"api-item\">\n<h3>closeText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Done\"</code>\n</div>\n<div>The text to display for the close link. Use the <a href=\"#option-showButtonPanel\"><code>showButtonPanel</code></a> option to display this button.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the closeText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ closeText: </code><code class=\"string\">\"Close\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-constrainInput\" class=\"api-item\">\n<h3>constrainInput<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>When <code>true</code>, entry in the input field is constrained to those characters allowed by the current <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the constrainInput option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ constrainInput: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the constrainInput option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">constrainInput = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"constrainInput\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"constrainInput\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-currentText\" class=\"api-item\">\n<h3>currentText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Today\"</code>\n</div>\n<div>The text to display for the current day link. Use the <a href=\"#option-showButtonPanel\"><code>showButtonPanel</code></a> option to display this button.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the currentText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ currentText: </code><code class=\"string\">\"Now\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the currentText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">currentText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"currentText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"currentText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Now\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dateFormat\" class=\"api-item\">\n<h3>dateFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"mm/dd/yy\"</code>\n</div>\n<div>The format for parsed and displayed dates. For a full list of the possible formats see the <code>[[UI/Datepicker/formatDate|formatDate]]</code> function.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dateFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dateFormat: </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dateFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dateFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dateFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dateFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNames\" class=\"api-item\">\n<h3>dayNames<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ]</code>\n</div>\n<div>The list of long day names, starting from Sunday, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNames option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNames: [ </code><code class=\"string\">\"Dimanche\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lundi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mardi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mercredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeudi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Vendredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Samedi\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNames option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNames = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNames\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNames\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Dimanche\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lundi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mardi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mercredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeudi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Vendredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Samedi\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNamesMin\" class=\"api-item\">\n<h3>dayNamesMin<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]</code>\n</div>\n<div>The list of minimised day names, starting from Sunday, for use as column headers within the datepicker.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNamesMin option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNamesMin: [ </code><code class=\"string\">\"Di\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ma\"</code><code class=\"plain\">, </code><code class=\"string\">\"Me\"</code><code class=\"plain\">, </code><code class=\"string\">\"Je\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ve\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sa\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNamesMin option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNamesMin = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesMin\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesMin\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Di\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ma\"</code><code class=\"plain\">, </code><code class=\"string\">\"Me\"</code><code class=\"plain\">, </code><code class=\"string\">\"Je\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ve\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sa\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNamesShort\" class=\"api-item\">\n<h3>dayNamesShort<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ]</code>\n</div>\n<div>The list of abbreviated day names, starting from Sunday, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNamesShort option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNamesShort: [ </code><code class=\"string\">\"Dim\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mer\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ven\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sam\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNamesShort option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNamesShort = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesShort\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesShort\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Dim\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mer\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ven\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sam\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-defaultDate\" class=\"api-item\">\n<h3>defaultDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Set the date to highlight on first opening if the field is blank. Specify either an actual date via a Date object or as a string in the current <code>[[UI/Datepicker#option-dateFormat|dateFormat]]</code>, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +7d'), or null for today.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the default date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the defaultDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ defaultDate: +7 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the defaultDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">defaultDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"defaultDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"defaultDate\"</code><code class=\"plain\">, +7 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-duration\" class=\"api-item\">\n<h3>duration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#\"></a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"normal\"</code>\n</div>\n<div>Control the speed at which the datepicker appears, it may be a time in milliseconds or a string representing one of the three predefined speeds (\"slow\", \"normal\", \"fast\").</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the duration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ duration: </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the duration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">duration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"duration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"duration\"</code><code class=\"plain\">, </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-firstDay\" class=\"api-item\">\n<h3>firstDay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Set the first day of the week: Sunday is <code>0</code>, Monday is <code>1</code>, etc.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the firstDay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ firstDay: 1 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the firstDay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">firstDay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"firstDay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"firstDay\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-gotoCurrent\" class=\"api-item\">\n<h3>gotoCurrent<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When <code>true</code>, the current day link moves to the currently selected date instead of today.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the gotoCurrent option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ gotoCurrent: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the gotoCurrent option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">gotoCurrent = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"gotoCurrent\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"gotoCurrent\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hideIfNoPrevNext\" class=\"api-item\">\n<h3>hideIfNoPrevNext<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Normally the previous and next links are disabled when not applicable (see the <a href=\"#option-minDate\"><code>minDate</code></a> and <a href=\"#option-maxDate\"><code>maxDate</code></a> options). You can hide them altogether by setting this attribute to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the hideIfNoPrevNext option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ hideIfNoPrevNext: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hideIfNoPrevNext option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hideIfNoPrevNext = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hideIfNoPrevNext\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hideIfNoPrevNext\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-isRTL\" class=\"api-item\">\n<h3>isRTL<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the current language is drawn from right to left.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the isRTL option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ isRTL: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the isRTL option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">isRTL = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"isRTL\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"isRTL\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxDate\" class=\"api-item\">\n<h3>maxDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum selectable date. When set to <code>null</code>, there is no maximum.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the maximum date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the maxDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ maxDate: </code><code class=\"string\">\"+1m +1w\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxDate\"</code><code class=\"plain\">, </code><code class=\"string\">\"+1m +1w\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minDate\" class=\"api-item\">\n<h3>minDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The minimum selectable date. When set to <code>null</code>, there is no minimum.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the minimum date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the minDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ minDate: </code><code class=\"keyword\">new</code> <code class=\"plain\">Date(2007, 1 - 1, 1) });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minDate\"</code><code class=\"plain\">, </code><code class=\"keyword\">new</code> <code class=\"plain\">Date(2007, 1 - 1, 1) );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-monthNames\" class=\"api-item\">\n<h3>monthNames<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ]</code>\n</div>\n<div>The list of full month names, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the monthNames option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ monthNames: [ </code><code class=\"string\">\"Januar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Februar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Marts\"</code><code class=\"plain\">, </code><code class=\"string\">\"April\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juni\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juli\"</code><code class=\"plain\">, </code><code class=\"string\">\"August\"</code><code class=\"plain\">, </code><code class=\"string\">\"September\"</code><code class=\"plain\">, </code><code class=\"string\">\"Oktober\"</code><code class=\"plain\">, </code><code class=\"string\">\"November\"</code><code class=\"plain\">, </code><code class=\"string\">\"December\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the monthNames option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">monthNames = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNames\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNames\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Januar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Februar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Marts\"</code><code class=\"plain\">, </code><code class=\"string\">\"April\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juni\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juli\"</code><code class=\"plain\">, </code><code class=\"string\">\"August\"</code><code class=\"plain\">, </code><code class=\"string\">\"September\"</code><code class=\"plain\">, </code><code class=\"string\">\"Oktober\"</code><code class=\"plain\">, </code><code class=\"string\">\"November\"</code><code class=\"plain\">, </code><code class=\"string\">\"December\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-monthNamesShort\" class=\"api-item\">\n<h3>monthNamesShort<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]</code>\n</div>\n<div>The list of abbreviated month names, as used in the month header on each datepicker and as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the monthNamesShort option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ monthNamesShort: [ </code><code class=\"string\">\"Jan\"</code><code class=\"plain\">, </code><code class=\"string\">\"Feb\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Apr\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jul\"</code><code class=\"plain\">, </code><code class=\"string\">\"Aug\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sep\"</code><code class=\"plain\">, </code><code class=\"string\">\"Okt\"</code><code class=\"plain\">, </code><code class=\"string\">\"Nov\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dec\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the monthNamesShort option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">monthNamesShort = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNamesShort\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNamesShort\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Jan\"</code><code class=\"plain\">, </code><code class=\"string\">\"Feb\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Apr\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jul\"</code><code class=\"plain\">, </code><code class=\"string\">\"Aug\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sep\"</code><code class=\"plain\">, </code><code class=\"string\">\"Okt\"</code><code class=\"plain\">, </code><code class=\"string\">\"Nov\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dec\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-navigationAsDateFormat\" class=\"api-item\">\n<h3>navigationAsDateFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the <a href=\"#option-prevText\"><code>prevText</code></a> and <a href=\"#option-nextText\"><code>nextText</code></a> options should be parsed as dates by the <code>[[UI/Datepicker/formatDate|formatDate]]</code> function, allowing them to display the target month names for example.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the navigationAsDateFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ navigationAsDateFormat: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the navigationAsDateFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">navigationAsDateFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"navigationAsDateFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"navigationAsDateFormat\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-nextText\" class=\"api-item\">\n<h3>nextText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Next\"</code>\n</div>\n<div>The text to display for the next month link. With the standard ThemeRoller styling, this value is replaced by an icon.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the nextText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ nextText: </code><code class=\"string\">\"Later\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the nextText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">nextText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"nextText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"nextText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Later\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-numberOfMonths\" class=\"api-item\">\n<h3>numberOfMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The number of months to show at once.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The number of months to display in a single row.</li>\n<li>\n<strong>Array</strong>: An array defining the number of rows and columns to display.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the numberOfMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ numberOfMonths: [ 2, 3 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the numberOfMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">numberOfMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberOfMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberOfMonths\"</code><code class=\"plain\">, [ 2, 3 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-onChangeMonthYear\" class=\"api-item\">\n<h3>onChangeMonthYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Integer\">Integer</a> year, <a href=\"http://api.jquery.com/Types#Integer\">Integer</a> month, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker moves to a new month and/or year. The function receives the selected year, month (1-12), and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-onClose\" class=\"api-item\">\n<h3>onClose<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#String\">String</a> dateText, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker is closed, whether or not a date is selected. The function receives the selected date as text (<code>\"\"</code> if none) and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-onSelect\" class=\"api-item\">\n<h3>onSelect<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#String\">String</a> dateText, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker is selected. The function receives the selected date as text and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-prevText\" class=\"api-item\">\n<h3>prevText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Prev\"</code>\n</div>\n<div>The text to display for the previous month link. With the standard ThemeRoller styling, this value is replaced by an icon.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the prevText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ prevText: </code><code class=\"string\">\"Earlier\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the prevText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">prevText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"prevText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"prevText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Earlier\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-selectOtherMonths\" class=\"api-item\">\n<h3>selectOtherMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether days in other months shown before or after the current month are selectable. This only applies if the <a href=\"#option-showOtherMonths\"><code>showOtherMonths</code></a> option is set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the selectOtherMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ selectOtherMonths: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the selectOtherMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">selectOtherMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"selectOtherMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"selectOtherMonths\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-shortYearCutoff\" class=\"api-item\">\n<h3>shortYearCutoff<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"+10\"</code>\n</div>\n<div>The cutoff year for determining the century for a date (used in conjunction with <code>[[UI/Datepicker#option-dateFormat|dateFormat]]</code> 'y'). Any dates entered with a year value less than or equal to the cutoff year are considered to be in the current century, while those greater than it are deemed to be in the previous century.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: A value between <code>0</code> and <code>99</code> indicating the cutoff year.</li>\n<li>\n<strong>String</strong>: A relative number of years from the current year, e.g., <code>\"+3\"</code> or <code>\"-5\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the shortYearCutoff option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ shortYearCutoff: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the shortYearCutoff option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">shortYearCutoff = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"shortYearCutoff\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"shortYearCutoff\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showAnim\" class=\"api-item\">\n<h3>showAnim<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"show\"</code>\n</div>\n<div>The name of the animation used to show and hide the datepicker. Use <code>\"show\"</code> (the default), <code>\"slideDown\"</code>, <code>\"fadeIn\"</code>, any of the <a href=\"/category/effects/\">jQuery UI effects</a>. Set to an empty string to disable animation.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showAnim option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showAnim: </code><code class=\"string\">\"fold\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showAnim option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showAnim = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showAnim\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showAnim\"</code><code class=\"plain\">, </code><code class=\"string\">\"fold\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showButtonPanel\" class=\"api-item\">\n<h3>showButtonPanel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to show the button panel.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showButtonPanel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showButtonPanel: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showButtonPanel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showButtonPanel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showButtonPanel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showButtonPanel\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showCurrentAtPos\" class=\"api-item\">\n<h3>showCurrentAtPos<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>When displaying multiple months via the <a href=\"#option-numberOfMonths\"><code>numberOfMonths</code></a> option, the <code>showCurrentAtPos</code> option defines which position to display the current month in.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showCurrentAtPos option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showCurrentAtPos: 3 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showCurrentAtPos option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showCurrentAtPos = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showCurrentAtPos\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showCurrentAtPos\"</code><code class=\"plain\">, 3 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showMonthAfterYear\" class=\"api-item\">\n<h3>showMonthAfterYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to show the month after the year in the header.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showMonthAfterYear option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showMonthAfterYear: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showMonthAfterYear option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showMonthAfterYear = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showMonthAfterYear\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showMonthAfterYear\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOn\" class=\"api-item\">\n<h3>showOn<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"focus\"</code>\n</div>\n<div>When the datepicker should appear. The datepicker can appear when the field receives focus (<code>\"focus\"</code>), when a button is clicked (<code>\"button\"</code>), or when either event occurs (<code>\"both\"</code>).</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOn option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOn: </code><code class=\"string\">\"both\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOn option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOn = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOn\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOn\"</code><code class=\"plain\">, </code><code class=\"string\">\"both\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOptions\" class=\"api-item\">\n<h3>showOptions<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>If using one of the jQuery UI effects for the <a href=\"#option-showAnim\"><code>showAnim</code></a> option, you can provide additional settings for that animation via this option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOptions option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOptions: { direction: </code><code class=\"string\">\"up\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOptions option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOptions = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOptions\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOptions\"</code><code class=\"plain\">, { direction: </code><code class=\"string\">\"up\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOtherMonths\" class=\"api-item\">\n<h3>showOtherMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to display dates in other months (non-selectable) at the start or end of the current month. To make these days selectable use the <a href=\"#option-selectOtherMonths\"><code>selectOtherMonths</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOtherMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOtherMonths: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOtherMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOtherMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOtherMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOtherMonths\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showWeek\" class=\"api-item\">\n<h3>showWeek<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When <code>true</code>, a column is added to show the week of the year. The <a href=\"#option-calculateWeek\"><code>calculateWeek</code></a> option determines how the week of the year is calculated. You may also want to change the <a href=\"#option-firstDay\"><code>firstDay</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showWeek option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showWeek: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showWeek option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showWeek = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showWeek\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showWeek\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stepMonths\" class=\"api-item\">\n<h3>stepMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Set how many months to move when clicking the previous/next links.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the stepMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ stepMonths: 3 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stepMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stepMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stepMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stepMonths\"</code><code class=\"plain\">, 3 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-weekHeader\" class=\"api-item\">\n<h3>weekHeader<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Wk\"</code>\n</div>\n<div>The text to display for the week of the year column heading. Use the <a href=\"#option-showWeek\"><code>showWeek</code></a> option to display this column.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the weekHeader option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ weekHeader: </code><code class=\"string\">\"W\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the weekHeader option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">weekHeader = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"weekHeader\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"weekHeader\"</code><code class=\"plain\">, </code><code class=\"string\">\"W\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-yearRange\" class=\"api-item\">\n<h3>yearRange<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"c-10:c+10\"</code>\n</div>\n<div>The range of years displayed in the year drop-down: either relative to today's year (<code>\"-nn:+nn\"</code>), relative to the currently selected year (<code>\"c-nn:c+nn\"</code>), absolute (<code>\"nnnn:nnnn\"</code>), or combinations of these formats (<code>\"nnnn:-nn\"</code>). Note that this option only affects what appears in the drop-down, to restrict which dates may be selected use the <a href=\"#option-minDate\"><code>minDate</code></a> and/or <a href=\"#option-maxDate\"><code>maxDate</code></a> options.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the yearRange option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ yearRange: </code><code class=\"string\">\"2002:2012\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the yearRange option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">yearRange = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearRange\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearRange\"</code><code class=\"plain\">, </code><code class=\"string\">\"2002:2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-yearSuffix\" class=\"api-item\">\n<h3>yearSuffix<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>Additional text to display after the year in the month headers.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the yearSuffix option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ yearSuffix: </code><code class=\"string\">\"CE\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the yearSuffix option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">yearSuffix = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearSuffix\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearSuffix\"</code><code class=\"plain\">, </code><code class=\"string\">\"CE\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the datepicker functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-dialog\">\n<div class=\"api-item\">\n<h3>dialog( date [, onSelect ] [, settings ] [, pos ] )</h3>\n<div>Opens the datepicker in a dialog box.</div>\n<ul>\n<li>\n<div><strong>date</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Date\">Date</a>\n</div>\n<div>The initial date.</div>\n</li>\n<li>\n<div><strong>onSelect</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>A callback function when a date is selected. The function receives the date text and date picker instance as parameters.</div>\n</li>\n<li>\n<div><strong>settings</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Options\">Options</a>\n</div>\n<div>The new settings for the date picker.</div>\n</li>\n<li>\n<div><strong>pos</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number%5B2%5D%20or%20MouseEvent\">Number[2] or MouseEvent</a>\n</div>\n<div>The position of the top/left of the dialog as <code>[x, y]</code> or a <code>MouseEvent</code> that contains the coordinates. If not specified the dialog is centered on the screen.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the dialog method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"dialog\"</code><code class=\"plain\">, </code><code class=\"string\">\"10/12/2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-getDate\">\n<div class=\"api-item\">\n<h3>getDate() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Date\">Date</a></span>\n</h3>\n<div>Returns the current date for the datepicker or <code>null</code> if no date has been selected.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the getDate method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">currentDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"getDate\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-hide\">\n<div class=\"api-item\">\n<h3>hide()</h3>\n<div>Close a previously opened date picker.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the hide method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isDisabled\">\n<div class=\"api-item\">\n<h3>isDisabled() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>Determine whether a date picker has been disabled.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isDisabled method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"isDisabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current datepicker options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the datepicker option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the datepicker.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Redraw the date picker, after having made some external modifications.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-setDate\">\n<div class=\"api-item\">\n<h3>setDate( date )</h3>\n<div>Sets the date for the datepicker. The new date may be a <code>Date</code> object or a string in the current <a href=\"#option-dateFormat\">date format</a> (e.g., <code>\"01/26/2009\"</code>), a number of days from today (e.g., <code>+7</code>) or a string of values and periods (<code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, <code>\"d\"</code> for days, e.g., <code>\"+1m +7d\"</code>), or <code>null</code> to clear the selected date.</div>\n<ul><li>\n<div><strong>date</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Date\">Date</a>\n</div>\n<div>The new date.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the setDate method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"setDate\"</code><code class=\"plain\">, </code><code class=\"string\">\"10/12/2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-show\">\n<div class=\"api-item\">\n<h3>show()</h3>\n<div>Open the date picker. If the datepicker is attached to an input, the input must be visible for the datepicker to be shown.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the show method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the datepicker.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Datepicker is a highly configurable plugin that adds datepicker functionality to your pages. You can customize the date format and language, restrict the selectable date ranges and add in buttons and other navigation options easily.</p>\n\n\t\t<p>By default, the datepicker calendar opens in a small overlay when the associated text field gains focus. For an inline calendar, simply attach the datepicker to a div or span.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\t\t<p>While the datepicker is open, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>PAGE UP: Move to the previous month.</li>\n\t\t\t<li>PAGE DOWN: Move to the next month.</li>\n\t\t\t<li>CTRL+PAGE UP: Move to the previous year.</li>\n\t\t\t<li>CTRL+PAGE DOWN: Move to the next year.</li>\n\t\t\t<li>CTRL+HOME: Move to the current month. Open the datepicker if closed.</li>\n\t\t\t<li>CTRL+LEFT: Move to the previous day.</li>\n\t\t\t<li>CTRL+RIGHT: Move to the next day.</li>\n\t\t\t<li>CTRL+UP: Move to the previous week.</li>\n\t\t\t<li>CTRL+DOWN: Move the next week.</li>\n\t\t\t<li>ENTER: Select the focused date.</li>\n\t\t\t<li>CTRL+END: Close the datepicker and erase the date.</li>\n\t\t\t<li>ESCAPE: Close the datepicker without selection.</li>\n\t\t</ul>\n\n\t\t<h3 id=\"utility-functions\">Utility functions</h3>\n\t\t<ul>\n\t\t\t<li>$.datepicker.setDefaults( settings ) - Set settings for all datepicker instances.</li>\n\t\t\t<li>$.datepicker.formatDate( format, date, settings ) - Format a date into a string value with a specified format.</li>\n\t\t\t<li>$.datepicker.parseDate( format, value, settings )  - Extract a date from a string value with a specified format.</li>\n\t\t\t<li>$.datepicker.iso8601Week( date ) - Determine the week of the year for a given date: 1 to 53.</li>\n\t\t\t<li>$.datepicker.noWeekends - Set as beforeShowDay function to prevent selection of weekends.</li>\n\t\t</ul>\n\n\t\t<h3>Localization</h3>\n\t\t<p>Datepicker provides support for localizing its content to cater for different languages and date formats. Each localization is contained within its own file with the language code appended to the name, e.g., <code>jquery.ui.datepicker-fr.js</code> for French. The desired localization file should be included after the main datepicker code. Each localization file adds its settings to the set of available localizations and automatically applies them as defaults for all instances.</p>\n\t\t<p>The <code>$.datepicker.regional</code> attribute holds an array of localizations, indexed by language code, with <code>\"\"</code> referring to the default (English). Each entry is an object with the following attributes: <code>closeText</code>, <code>prevText</code>, <code>nextText</code>, <code>currentText</code>, <code>monthNames</code>, <code>monthNamesShort</code>, <code>dayNames</code>, <code>dayNamesShort</code>, <code>dayNamesMin</code>, <code>weekHeader</code>, <code>dateFormat</code>, <code>firstDay</code>, <code>isRTL</code>, <code>showMonthAfterYear</code>, and <code>yearSuffix</code>.</p>\n\t\t<p>You can restore the default localizations with:</p>\n\t\t<code>$.datepicker.setDefaults( $.datepicker.regional[ \"\" ] );</code>\n\t\t<p>And can then override an individual datepicker for a specific locale:</p>\n\t\t<code>$( selector ).datepicker( $.datepicker.regional[ \"fr\" ] );</code>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Datepicker.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;datepicker demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"datepicker\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#datepicker\" ).datepicker();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"300\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/dialog.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI dialog documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Dialog Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Open content in an interactive overlay.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-autoOpen\">autoOpen</a></div>\n<div><a href=\"#option-buttons\">buttons</a></div>\n<div><a href=\"#option-closeOnEscape\">closeOnEscape</a></div>\n<div><a href=\"#option-closeText\">closeText</a></div>\n<div><a href=\"#option-dialogClass\">dialogClass</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-draggable\">draggable</a></div>\n<div><a href=\"#option-height\">height</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-maxHeight\">maxHeight</a></div>\n<div><a href=\"#option-maxWidth\">maxWidth</a></div>\n<div><a href=\"#option-minHeight\">minHeight</a></div>\n<div><a href=\"#option-minWidth\">minWidth</a></div>\n<div><a href=\"#option-modal\">modal</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-resizable\">resizable</a></div>\n<div><a href=\"#option-show\">show</a></div>\n<div><a href=\"#option-stack\">stack</a></div>\n<div><a href=\"#option-title\">title</a></div>\n<div><a href=\"#option-width\">width</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-isOpen\">isOpen</a></div>\n<div><a href=\"#method-moveToTop\">moveToTop</a></div>\n<div><a href=\"#method-open\">open</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-beforeClose\">beforeClose</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-dragStart\">dragStart</a></div>\n<div><a href=\"#event-drag\">drag</a></div>\n<div><a href=\"#event-dragStop\">dragStop</a></div>\n<div><a href=\"#event-resizeStart\">resizeStart</a></div>\n<div><a href=\"#event-resize\">resize</a></div>\n<div><a href=\"#event-resizeStop\">resizeStop</a></div>\n<div><a href=\"#event-close\">close</a></div>\n</div></section><article id=\"dialog1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Dialog Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Open content in an interactive overlay.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-autoOpen\" class=\"api-item first-item\">\n<h3>autoOpen<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will automatically open upon initialization. If <code>false</code>, the dialog will stay hidden until the <a href=\"#method-open\"><code>open()</code></a> method is called.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the autoOpen option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ autoOpen: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoOpen option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoOpen = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoOpen\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoOpen\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttons\" class=\"api-item\">\n<h3>buttons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>Specifies which buttons should be displayed on the dialog. The context of the callback is the dialog element; if you need access to the button, it is available as the target of the event object.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Object</strong>: The keys are the button labels and the values are the callbacks for when the associated button is clicked.</li>\n<li>\n<strong>Array</strong>: Each element of the array must be an object defining the attributes, properties, and event handlers to set on the button.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the buttons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ buttons: [ { text: </code><code class=\"string\">\"Ok\"</code><code class=\"plain\">, click: </code><code class=\"keyword\">function</code><code class=\"plain\">() { $( </code><code class=\"keyword\">this</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">); } ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttons\"</code><code class=\"plain\">, [ { text: </code><code class=\"string\">\"Ok\"</code><code class=\"plain\">, click: </code><code class=\"keyword\">function</code><code class=\"plain\">() { $( </code><code class=\"keyword\">this</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">); } ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeOnEscape\" class=\"api-item\">\n<h3>closeOnEscape<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Specifies whether the dialog should close when it has focus and the user presses the esacpe (ESC) key.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the closeOnEscape option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ closeOnEscape: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeOnEscape option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeOnEscape = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeOnEscape\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeOnEscape\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeText\" class=\"api-item\">\n<h3>closeText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"close\"</code>\n</div>\n<div>Specifies the text for the close button. Note that the close text is visibly hidden when using a standard theme.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the closeText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ closeText: </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dialogClass\" class=\"api-item\">\n<h3>dialogClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The specified class name(s) will be added to the dialog, for additional theming.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dialogClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ dialogClass: </code><code class=\"string\">\"alert\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dialogClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dialogClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dialogClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dialogClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"alert\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the dialog if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-draggable\" class=\"api-item\">\n<h3>draggable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will be draggable by the title bar. Requires the <a href=\"/draggable/\">jQuery UI Draggable wiget</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the draggable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ draggable: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the draggable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">draggable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"draggable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"draggable\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-height\" class=\"api-item\">\n<h3>height<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>The height of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The height in pixels.</li>\n<li>\n<strong>String</strong>: The only supported string value is <code>\"auto\"</code> which will allow the dialog height to adjust based on its content.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the height option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ height: 400 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the height option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">height = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"height\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"height\"</code><code class=\"plain\">, 400 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: \n\t\t\t\t\tThe dialog will fade out while animating the height and width for the specified duration.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\t\t\tThe dialog will be hidden using the specified jQuery UI effect. See the <a href=\"/category/effects/\">list of effects</a> for possible values.\n\t\t\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. The <code>effect</code> property must be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ hide: </code><code class=\"string\">\"explode\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, </code><code class=\"string\">\"explode\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxHeight\" class=\"api-item\">\n<h3>maxHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>The maximum height to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the maxHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ maxHeight: 600 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code><code class=\"plain\">, 600 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxWidth\" class=\"api-item\">\n<h3>maxWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>The maximum width to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the maxWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ maxWidth: 600 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code><code class=\"plain\">, 600 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minHeight\" class=\"api-item\">\n<h3>minHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>150</code>\n</div>\n<div>The minimum height to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the minHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ minHeight: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minWidth\" class=\"api-item\">\n<h3>minWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>150</code>\n</div>\n<div>The minimum width to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the minWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ minWidth: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-modal\" class=\"api-item\">\n<h3>modal<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code>, the dialog will have modal behavior; other items on the page will be disabled, i.e., cannot be interacted with. Modal dialogs create an overlay below the dialog but above other page elements.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the modal option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ modal: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the modal option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">modal = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"modal\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"modal\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"center\", at: \"center\", of: window }</code>\n</div>\n<div>Specifies where the dialog should be displayed. The dialog will handle collisions such that as much of the dialog is visible as possible.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Object</strong>: Identifies the position of the dialog when opened. The <code>of</code> option defaults to the window, but you can specify another element to position against. You can refer to the <a href=\"/position\">jQuery UI Position</a> utility for more details about the various options.</li>\n<li>\n<strong>String</strong>: A string representing the position within the viewport. Possible values: <code>\"center\"</code>, <code>\"left\"</code>, <code>\"right\"</code>, <code>\"top\"</code>, <code>\"bottom\"</code>.</li>\n<li>\n<strong>Array</strong>: An array containing an <em>x, y</em> coordinate pair in pixel offset from the top left corner of the viewport or the name of a possible string value.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ position: { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"left bottom\"</code><code class=\"plain\">, of: button } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"left bottom\"</code><code class=\"plain\">, of: button } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-resizable\" class=\"api-item\">\n<h3>resizable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will be resizable. Requires the <a href=\"/resizable/\">jQuery UI Resizable widget</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ resizable: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the resizable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">resizable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: \n\t\t\t\t\tThe dialog will fade in while animating the height and width for the specified duration.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\t\t\tThe dialog will be shown using the specified jQuery UI effect. See the <a href=\"/category/effects/\">list of effects</a> for possible values.\n\t\t\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. The <code>effect</code> property must be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ show: </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stack\" class=\"api-item\">\n<h3>stack<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Specifies whether the dialog will stack on top of other dialogs. This will cause the dialog to move to the front of other dialogs when it gains focus.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the stack option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ stack: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stack option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stack = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-title\" class=\"api-item\">\n<h3>title<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>Specifies the title of the dialog. Any valid HTML may be set as the title. The title can also be specified by the <code>title</code> attribute on the dialog source element.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the title option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ title: </code><code class=\"string\">\"Dialog Title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the title option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">title = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"title\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"title\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dialog Title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-width\" class=\"api-item\">\n<h3>width<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>300</code>\n</div>\n<div>The width of the dialog, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the width option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ width: 500 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the width option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">width = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"width\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"width\"</code><code class=\"plain\">, 500 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1000</code>\n</div>\n<div>The starting z-index for the dialog.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ zIndex: 20 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 20 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>Closes the dialog.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the dialog functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the dialog.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the dialog.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isOpen\">\n<div class=\"api-item\">\n<h3>isOpen() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>Whether the dialog is currently open.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isOpen method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isOpen = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"isOpen\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-moveToTop\">\n<div class=\"api-item\">\n<h3>moveToTop()</h3>\n<div>Moves the dialog to the top of the dialog stack.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the moveToTop method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"moveToTop\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-open\">\n<div class=\"api-item\">\n<h3>open()</h3>\n<div>Opens the dialog.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the open method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"open\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current dialog options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the dialog option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the dialog.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the generated wrapper.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-beforeClose\" class=\"api-item first-item\">\n<h3>beforeClose( event, ui )<span class=\"returns\">Type: <code>dialogbeforeclose</code></span>\n</h3>\n<div>Triggered when a dialog is about to close. If canceled, the dialog will not close.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the beforeClose callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeClose: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogbeforeclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogbeforeclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-close\" class=\"api-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>dialogclose</code></span>\n</h3>\n<div>Triggered when the dialog is closed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dialogcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the dialog is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drag\" class=\"api-item\">\n<h3>drag( event, ui )<span class=\"returns\">Type: <code>dialogdrag</code></span>\n</h3>\n<div>Triggered while the dialog is being dragged.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the drag callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drag: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdrag event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdrag\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-dragStart\" class=\"api-item\">\n<h3>dragStart( event, ui )<span class=\"returns\">Type: <code>dialogdragstart</code></span>\n</h3>\n<div>Triggered when the user starts dragging the dialog.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dragStart callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">dragStart: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdragstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdragstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-dragStop\" class=\"api-item\">\n<h3>dragStop( event, ui )<span class=\"returns\">Type: <code>dialogdragstop</code></span>\n</h3>\n<div>Triggered after the dialog has been dragged.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dragStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">dragStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdragstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdragstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>dialogfocus</code></span>\n</h3>\n<div>Triggered when the dialog gains focus.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogfocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogfocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>dialogopen</code></span>\n</h3>\n<div>Triggered when the dialog is opened.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resize\" class=\"api-item\">\n<h3>resize( event, ui )<span class=\"returns\">Type: <code>dialogresize</code></span>\n</h3>\n<div>Triggered while the dialog is being resized.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resize callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resize: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresize event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresize\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resizeStart\" class=\"api-item\">\n<h3>resizeStart( event, ui )<span class=\"returns\">Type: <code>dialogresizestart</code></span>\n</h3>\n<div>Triggered when the user starts resizing the dialog.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizeStart callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resizeStart: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresizestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresizestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resizeStop\" class=\"api-item\">\n<h3>resizeStop( event, ui )<span class=\"returns\">Type: <code>dialogresizestop</code></span>\n</h3>\n<div>Triggered after the dialog has been resized.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizeStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resizeStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresizestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresizestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>A dialog is a floating window that contains a title bar and a content area. The dialog window can be moved, resized and closed with the 'x' icon by default.</p>\n\n\t\t<p>If the content length exceeds the maximum height, a scrollbar will automatically appear.</p>\n\n\t\t<p>A bottom button bar and semi-transparent modal overlay layer are common options that can be added.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Dialog</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;dialog demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">button</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"opener\"</code><code class=\"plain\">&gt;open the dialog&lt;/</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"dialog\"</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Dialog Title\"</code><code class=\"plain\">&gt;I'm a dialog&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#dialog\" ).dialog({ autoOpen: false });</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">$( \"#opener\" ).click(function() {</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#dialog\" ).dialog( \"open\" );</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">});</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/draggable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI draggable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Draggable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Allow elements to be moved using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-addClasses\">addClasses</a></div>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-axis\">axis</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-connectToSortable\">connectToSortable</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-cursor\">cursor</a></div>\n<div><a href=\"#option-cursorAt\">cursorAt</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handle\">handle</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-iframeFix\">iframeFix</a></div>\n<div><a href=\"#option-opacity\">opacity</a></div>\n<div><a href=\"#option-refreshPositions\">refreshPositions</a></div>\n<div><a href=\"#option-revert\">revert</a></div>\n<div><a href=\"#option-revertDuration\">revertDuration</a></div>\n<div><a href=\"#option-scope\">scope</a></div>\n<div><a href=\"#option-scroll\">scroll</a></div>\n<div><a href=\"#option-scrollSensitivity\">scrollSensitivity</a></div>\n<div><a href=\"#option-scrollSpeed\">scrollSpeed</a></div>\n<div><a href=\"#option-snap\">snap</a></div>\n<div><a href=\"#option-snapMode\">snapMode</a></div>\n<div><a href=\"#option-snapTolerance\">snapTolerance</a></div>\n<div><a href=\"#option-stack\">stack</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-drag\">drag</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"draggable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Draggable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Allow elements to be moved using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-addClasses\" class=\"api-item first-item\">\n<h3>addClasses<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>false</code>, will prevent the <code>ui-draggable</code> class from being added. This may be desired as a performance optimization when calling <code>.draggable()</code> on hundreds of elements.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the addClasses option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ addClasses: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the addClasses option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">addClasses = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-appendTo\" class=\"api-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"parent\"</code>\n</div>\n<div>Which element the draggable helper should be appended to while dragging.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>jQuery</strong>: A jQuery object containing the element to append the helper to.</li>\n<li>\n<strong>Element</strong>: The element to append the helper to.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which element to append the helper to.</li>\n<li>\n<strong>String</strong>: The string <code>\"parent\"</code> will cause the helper to be a sibling of the draggable.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ appendTo: </code><code class=\"string\">\"body\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"body\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-axis\" class=\"api-item\">\n<h3>axis<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains dragging to either the horizontal (x) or vertical (y) axis. Possible values: <code>\"x\"</code>, <code>\"y\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the axis option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ axis: </code><code class=\"string\">\"x\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the axis option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">axis = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code><code class=\"plain\">, </code><code class=\"string\">\"x\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents dragging from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cancel: </code><code class=\"string\">\".title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-connectToSortable\" class=\"api-item\">\n<h3>connectToSortable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Allows the draggable to be dropped onto the specified sortables. If this option is used, a draggable can be dropped onto a sortable list and then becomes part of it. Note: The <a href=\"#option-helper\"><code>helper</code></a> option must be set to <code>\"clone\"</code> in order to work flawlessly. Requires the <a href=\"/sortable/\">jQuery UI Sortable plugin</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the connectToSortable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ connectToSortable: </code><code class=\"string\">\"#my-sortable\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the connectToSortable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">connectToSortable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectToSortable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectToSortable\"</code><code class=\"plain\">, </code><code class=\"string\">\"#my-sortable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains dragging to within the bounds of the specified element or region.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: The draggable element will be contained to the bounding box of the first element found by the selector. If no element is found, no containment will be set.</li>\n<li>\n<strong>Element</strong>: The draggable element will be contained to the bounding box of this element.</li>\n<li>\n<strong>String</strong>: Possible values: <code>\"parent\"</code>, <code>\"document\"</code>, <code>\"window\"</code>.</li>\n<li>\n<strong>Array</strong>: An array defining a bounding box in the form <code>[ x1, y1, x2, y2 ]</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursor\" class=\"api-item\">\n<h3>cursor<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>The CSS cursor during the drag operation.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cursor option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cursor: </code><code class=\"string\">\"crosshair\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursor option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursor = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code><code class=\"plain\">, </code><code class=\"string\">\"crosshair\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursorAt\" class=\"api-item\">\n<h3>cursorAt<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Sets the offset of the dragging helper relative to the mouse cursor. Coordinates can be given as a hash using a combination of one or two keys: <code>{ top, left, right, bottom }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cursorAt option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cursorAt: { left: 5 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursorAt option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursorAt = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code><code class=\"plain\">, { left: 5 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds after mousedown until dragging should start. This option can be used to prevent unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ delay: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the draggable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Distance in pixels after mousedown the mouse must move before dragging should start. This option can be used to prevent unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ distance: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the dragging helper to a grid, every x and y pixels. The array must be of the form <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ grid: [ 50, 20 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 50, 20 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handle\" class=\"api-item\">\n<h3>handle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, restricts dragging from starting unless the mousedown occurs on the specified element(s).</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the handle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ handle: </code><code class=\"string\">\"h2\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code><code class=\"plain\">, </code><code class=\"string\">\"h2\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"original\"</code>\n</div>\n<div>Allows for a helper element to be used for dragging display.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: If set to <code>\"clone\"</code>, then the element will be cloned and the clone will be dragged.</li>\n<li>\n<strong>Function</strong>: A function that will return a DOMElement to use while dragging.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ helper: </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-iframeFix\" class=\"api-item\">\n<h3>iframeFix<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Prevent iframes from capturing the mousemove events during a drag. Useful in combination with the <a href=\"#option-cursorAt\"><code>cursorAt</code></a> option, or in any case where the mouse cursor may not be over the helper.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, transparent overlays will be placed over all iframes on the page.</li>\n<li>\n<strong>Selector</strong>: Any iframes matching the selector will be covered by transparent overlays.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the iframeFix option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ iframeFix: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the iframeFix option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">iframeFix = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"iframeFix\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"iframeFix\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-opacity\" class=\"api-item\">\n<h3>opacity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Opacity for the helper while being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the opacity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ opacity: 0.35 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the opacity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">opacity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code><code class=\"plain\">, 0.35 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-refreshPositions\" class=\"api-item\">\n<h3>refreshPositions<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\tIf set to <code>true</code>, all droppable positions are calculated on every mousemove.\n\t\t\t\t<em>Caution: This solves issues on highly dynamic pages, but dramatically decreases performance.</em>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the refreshPositions option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ refreshPositions: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the refreshPositions option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">refreshPositions = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"refreshPositions\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"refreshPositions\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revert\" class=\"api-item\">\n<h3>revert<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should revert to its start position when dragging stops.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: If set to <code>true</code> the element will always revert.</li>\n<li>\n<strong>String</strong>: If set to <code>\"invalid\"</code>, revert will only occur if the draggable has not been dropped on a droppable. For <code>\"valid\"</code>, it's the other way around.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the revert option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ revert: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revert option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revert = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revertDuration\" class=\"api-item\">\n<h3>revertDuration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>500</code>\n</div>\n<div>The duration of the revert animation, in milliseconds. Ignored if the <a href=\"#option-revert\"><code>revert</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the revertDuration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ revertDuration: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revertDuration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revertDuration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revertDuration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revertDuration\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scope\" class=\"api-item\">\n<h3>scope<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"default\"</code>\n</div>\n<div>Used to group sets of draggable and droppable items, in addition to droppable's <a href=\"/droppable#option-accept\"><code>accept</code></a> option. A draggable with the same <code>scope</code> value as a droppable will be accepted by the droppable.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scope option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scope: </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scope option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scope = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code><code class=\"plain\">, </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scroll\" class=\"api-item\">\n<h3>scroll<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, container auto-scrolls while dragging.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scroll option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scroll: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scroll option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scroll = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSensitivity\" class=\"api-item\">\n<h3>scrollSensitivity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>Distance in pixels from the edge of the viewport after which the viewport should scroll. Distance is relative to pointer, not the draggable. Ignored if the <a href=\"#option-scroll\"><code>scroll</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scrollSensitivity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scrollSensitivity: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSensitivity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSensitivity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSpeed\" class=\"api-item\">\n<h3>scrollSpeed<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The speed at which the window should scroll once the mouse pointer gets within the <a href=\"#option-scrollSensitivity\"><code>scrollSensitivity</code></a> distance. Ignored if the <a href=\"#option-scroll\"><code>scroll</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scrollSpeed option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scrollSpeed: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSpeed option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSpeed = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snap\" class=\"api-item\">\n<h3>snap<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should snap to other elements.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the element will snap to all other draggable elements.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which elements to snap to.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the snap option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snap: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snap option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snap = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snap\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snap\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snapMode\" class=\"api-item\">\n<h3>snapMode<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"both\"</code>\n</div>\n<div>Determines which edges of snap elements the draggable will snap to. Ignored if the <a href=\"#option-snap\"><code>snap</code></a> option is <code>false</code>. Possible values: <code>\"inner\"</code>, <code>\"outer\"</code>, <code>\"both\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the snapMode option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snapMode: </code><code class=\"string\">\"inner\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snapMode option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snapMode = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapMode\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapMode\"</code><code class=\"plain\">, </code><code class=\"string\">\"inner\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snapTolerance\" class=\"api-item\">\n<h3>snapTolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The distance in pixels from the snap element edges at which snapping should occur. Ignored if the <a href=\"#option-snap\"><code>snap</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the snapTolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snapTolerance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snapTolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snapTolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapTolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapTolerance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stack\" class=\"api-item\">\n<h3>stack<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Controls the z-index of the set of elements that match the selector, always brings the currently dragged item to the front. Very useful in things like window managers.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the stack option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ stack: </code><code class=\"string\">\".products\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stack option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stack = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code><code class=\"plain\">, </code><code class=\"string\">\".products\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Z-index for the helper while being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ zIndex: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the draggable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the draggable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the draggable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current draggable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the draggable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the draggable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the draggable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dragcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the draggable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drag\" class=\"api-item\">\n<h3>drag( event, ui )<span class=\"returns\">Type: <code>drag</code></span>\n</h3>\n<div>Triggered while the mouse is moved during the dragging.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the drag callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drag: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the drag event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"drag\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>dragstart</code></span>\n</h3>\n<div>Triggered when dragging starts.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>dragstop</code></span>\n</h3>\n<div>Triggered when dragging stops.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Make the selected elements draggable by mouse. If you want not just drag, but drag &amp; drop, see the <a href=\"/droppable/\">jQuery UI Droppable plugin</a>, which provides a drop target for draggables.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Draggable</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;draggable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#draggable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"draggable\"</code><code class=\"plain\">&gt;Drag me&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\">&nbsp;</div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">$( \"#draggable\" ).draggable();</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\">&nbsp;</div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/drop-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI drop-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Drop Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe drop effect hides or shows an element fading in/out and sliding in a direction.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"drop1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Drop Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe drop effect hides or shows an element fading in/out and sliding in a direction.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">drop</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"left\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The direction the element will fall to hide the element, or the direction from which the element will be revealed.</p>\n\t\t\t\t<p>Possible Values: <code>up</code>, <code>down</code>, <code>left</code>, <code>right</code>.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the drop effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;drop demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"drop\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/droppable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI droppable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Droppable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Create targets for draggable elements.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-accept\">accept</a></div>\n<div><a href=\"#option-activeClass\">activeClass</a></div>\n<div><a href=\"#option-addClasses\">addClasses</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-greedy\">greedy</a></div>\n<div><a href=\"#option-hoverClass\">hoverClass</a></div>\n<div><a href=\"#option-scope\">scope</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-deactivate\">deactivate</a></div>\n<div><a href=\"#event-over\">over</a></div>\n<div><a href=\"#event-out\">out</a></div>\n<div><a href=\"#event-drop\">drop</a></div>\n</div></section><article id=\"droppable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Droppable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Create targets for draggable elements.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-accept\" class=\"api-item first-item\">\n<h3>accept<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"*\"</code>\n</div>\n<div>Controls which draggable elements are accepted by the droppable.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: A selector indicating which draggable elements are accepted.</li>\n<li>\n<strong>Function</strong>: A function that will be called for each draggable on the page (passed as the first argument to the function). The function must return <code>true</code> if the draggable should be accepted.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the droppable with the accept option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ accept: </code><code class=\"string\">\".special\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the accept option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">accept = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"accept\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"accept\"</code><code class=\"plain\">, </code><code class=\"string\">\".special\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-activeClass\" class=\"api-item\">\n<h3>activeClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, the class will be added to the droppable while an acceptable draggable is being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the activeClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ activeClass: </code><code class=\"string\">\"ui-state-highlight\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the activeClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">activeClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"activeClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"activeClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"ui-state-highlight\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-addClasses\" class=\"api-item\">\n<h3>addClasses<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>false</code>, will prevent the <code>ui-droppable</code> class from being added. This may be desired as a performance optimization when calling <code>.droppable()</code> init on hundreds of elements.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the addClasses option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ addClasses: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the addClasses option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">addClasses = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the droppable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-greedy\" class=\"api-item\">\n<h3>greedy<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>By default, when an element is dropped on nested droppables, each droppable will receive the element. However, by setting this option to <code>true</code>, any parent droppables will not receive the element.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the greedy option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ greedy: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the greedy option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">greedy = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"greedy\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"greedy\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hoverClass\" class=\"api-item\">\n<h3>hoverClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, the class will be added to the droppable while an acceptable draggable is being hovered over the droppable.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the hoverClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ hoverClass: </code><code class=\"string\">\"drop-hover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hoverClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hoverClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hoverClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hoverClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"drop-hover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scope\" class=\"api-item\">\n<h3>scope<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"default\"</code>\n</div>\n<div>Used to group sets of draggable and droppable items, in addition to the <a href=\"#option-accept\"><code>accept</code></a> option. A draggable with the same scope value as a droppable will be accepted.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the scope option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ scope: </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scope option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scope = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code><code class=\"plain\">, </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"intersect\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether a draggable is hovering over a droppable. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"fit\"</code>: Draggable overlaps the droppable entirely.</li>\n\t\t\t\t\t<li>\n<code>\"intersect\"</code>: Draggable overlaps the droppable at least 50% in both directions.</li>\n\t\t\t\t\t<li>\n<code>\"pointer\"</code>: Mouse pointer overlaps the droppable.</li>\n\t\t\t\t\t<li>\n<code>\"touch\"</code>: Draggable overlaps the droppable any amount.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ tolerance: </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the droppable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the droppable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the droppable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current droppable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the droppable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the droppable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the droppable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>dropactivate</code></span>\n</h3>\n<div>Triggered when an accepted draggable starts dragging. This can be useful if you want to make the droppable \"light up\" when it can be dropped on.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dropcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the droppable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-deactivate\" class=\"api-item\">\n<h3>deactivate( event, ui )<span class=\"returns\">Type: <code>dropdeactivate</code></span>\n</h3>\n<div>Triggered when an accepted draggable stops dragging.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the deactivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">deactivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropdeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropdeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drop\" class=\"api-item\">\n<h3>drop( event, ui )<span class=\"returns\">Type: <code>drop</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dropped on the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the drop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the drop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"drop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-out\" class=\"api-item\">\n<h3>out( event, ui )<span class=\"returns\">Type: <code>dropout</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dragged out of the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the out callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">out: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropout event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropout\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-over\" class=\"api-item\">\n<h3>over( event, ui )<span class=\"returns\">Type: <code>dropover</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dragged over the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the over callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">over: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropover event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropover\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Droppable plugin makes selected elements droppable (meaning they accept being dropped on by <a href=\"/draggable/\">draggables</a>). You can specify which draggables each will accept.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A pair of draggable and droppable elements.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;droppable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#draggable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#droppable {</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: absolute;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">left: 250px;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">top: 0;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 125px;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 125px;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #999;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">color: #fff;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">padding: 10px;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\">&nbsp;</div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"droppable\"</code><code class=\"plain\">&gt;Drop here&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"draggable\"</code><code class=\"plain\">&gt;Drag me&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">$( \"#draggable\" ).draggable();</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#droppable\" ).droppable({</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drop: function() {</code></div><div class=\"line number36 index35 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( \"dropped\" );</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">});</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number40 index39 alt1\">&nbsp;</div><div class=\"line number41 index40 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/explode-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI explode-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Explode Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe explode effect hides or shows an element by splitting it into pieces.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"explode1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Explode Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe explode effect hides or shows an element by splitting it into pieces.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">explode</h4>\n<ul><li>\n<div>\n<strong>pieces</strong> (default: <code>9</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of pieces to explode, should be a perfect square, any other values are rounded to the nearest square.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the explode effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;explode demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"explode\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fade-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI fade-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Fade Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe fade effect hides or shows an element by fading it.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"fade1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Fade Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe fade effect hides or shows an element by fading it.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\"><h4 class=\"name\">fade</h4></li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the fade effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;fade demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"fade\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fold-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI fold-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Fold Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe fold effect hides or shows an element by folding it.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"fold1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Fold Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe fold effect hides or shows an element by folding it.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">fold</h4>\n<ul>\n<li>\n<div>\n<strong>size</strong> (default: <code>15</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The size of the \"folded\" element.</div>\n</li>\n<li>\n<div>\n<strong>horizFirst</strong> (default: <code>false</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a>\n</div>\n<div>Whether the horizontal direction happens first when hiding. Remember, showing inverts hiding.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the fold effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;fold demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"fold\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/highlight-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI highlight-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Highlight Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe highlight effect hides or shows an element by animating its background color first.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"highlight1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Highlight Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe highlight effect hides or shows an element by animating its background color first.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">highlight</h4>\n<ul><li>\n<div>\n<strong>color</strong> (default: <code>\"#ffff99\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The background color used during the animation.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the highlight effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;highlight demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"highlight\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/jQuery.widget.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI jQuery documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Widget Factory\",\n\t\t\"excerpt\":\n\t\t\t\"Create stateful jQuery plugins using the same abstraction as all jQuery UI widgets.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"utilities\",\"utilities\",\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><div class=\"toc\">\n<h4><span>Contents:</span></h4>\n<ul class=\"toc-list\">\n<li>\n<a href=\"#jQuery-widget1\">jQuery.widget( name [, base ], prototype )</a><ul><li>jQuery.widget( name [, base ], prototype )</li></ul>\n</li>\n<li><a href=\"#jQuery-Widget2\">jQuery.Widget</a></li>\n</ul>\n</div><article id=\"jQuery-widget1\" class=\"entry method\"><h2 class=\"section-title\"><span class=\"name\">jQuery.widget( name [, base ], prototype )</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Create stateful jQuery plugins using the same abstraction as all jQuery UI widgets.</p>\n<ul class=\"signatures\"><li class=\"signature\" id=\"jQuery-widget-name-base-prototype\">\n<h4 class=\"name\">jQuery.widget( name [, base ], prototype )</h4>\n<ul>\n<li>\n<div><strong>name</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the widget to create, including the namespace.</div>\n</li>\n<li>\n<div><strong>base</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>The base widget to inherit from. This must be a constructor that can be instantiated with the `new` keyword. Defaults to <code>jQuery.Widget</code>.</div>\n</li>\n<li>\n<div><strong>prototype</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#PlainObject\">PlainObject</a>\n</div>\n<div>The object to use as a prototype for the widget.</div>\n</li>\n</ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t\t<p>You can create new widgets from scratch, using just the <code>$.Widget</code> object as a base to inherit from, or you can explicitly inherit from existing jQuery UI or third-party widgets. Defining a widget with the same name as you inherit from even allows you to extend widgets in place.</p>\n\n\t\t\t<p>jQuery UI contains many widgets that maintain state and therefore have a slightly different usage pattern than typical jQuery plugins. All of jQuery UI's widgets use the same patterns, which is defined by the widget factory. So if you learn how to use one widget, then you'll know how to use all of them.</p>\n\n\t\t\t<p><em>Note: This documentation shows examples using the <a href=\"/progressbar\">progressbar widget</a> but the syntax is the same for every widget.</em></p>\n\n\t\t\t<h3>Initialization</h3>\n\n\t\t\t<p>In order to track the state of the widget, we must introduce a full life cycle for the widget. The life cycle starts when the widget is initalized. To initialize a widget, we simply call the plugin on one or more elements.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar();</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>This will initialize each element in the jQuery object, in this case the element with an id of <code>\"elem\"</code>. Because we called the <code>progressbar()</code> method with no parameters, the widget is initialized with its default options. We can pass a set of options during initialization in order to override the default options.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar({ value: 20 });</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>We can pass as many or as few options as we want during initialization. Any options that we don't pass will just use their default values.</p>\n\n\t\t\t<p>The options are part of the widget's state, so we can set options after initialization as well. We'll see this later with the option method.</p>\n\n\t\t\t<h3>Methods</h3>\n\n\t\t\t<p>Now that the widget is initialized, we can query its state or perform actions on the widget. All actions after initialization take the form of a method call. To call a method on a widget, we pass the name of the method to the jQuery plugin. For example, to call the <code>value()</code> method on our progressbar widget, we would use:</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>If the method accepts parameters, we can pass them after the method name. For example, to pass the parameter <code>40</code> to the <code>value()</code> method, we can use:</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 40 );</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Just like other methods in jQuery, most widget methods return the jQuery object for chaining.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">)</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 90 )</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.addClass( </code><code class=\"string\">\"almost-done\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Each widget will have its own set of methods based on the functionality that the widget provides. However, there are a few methods that exist on all widgets, which are documented below.</p>\n\n\t\t\t<h3>Events</h3>\n\n\t\t\t<p>All widgets have events associated with their various behaviors to notify you when the state is changing. For most widgets, when the events are triggered, the names are prefixed with the widget name. For example, we can bind to progressbar's <code>change</code> event which is triggered whenever the value changes.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).bind( </code><code class=\"string\">\"progressbarchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">() {</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( </code><code class=\"string\">\"The value has changed!\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Each event has a corresponding callback, which is exposed as an option. We can hook into progressbar's <code>change</code> callback instead of binding to the <code>progressbarchange</code> event, if we want to.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">() {</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( </code><code class=\"string\">\"The value has changed!\"</code> <code class=\"plain\">);</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>All widgets have a <code>create</code> event which is triggered upon instantiation.</p>\n\t\t</div>\n</div></article><section class=\"quick-nav\"><header><h2>QuickNav</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-show\">show</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n<div><a href=\"#method-_create\">_create</a></div>\n<div><a href=\"#method-_destroy\">_destroy</a></div>\n<div><a href=\"#method-_getCreateEventData\">_getCreateEventData</a></div>\n<div><a href=\"#method-_getCreateOptions\">_getCreateOptions</a></div>\n<div><a href=\"#method-_init\">_init</a></div>\n<div><a href=\"#method-_setOptions\">_setOptions</a></div>\n<div><a href=\"#method-_setOption\">_setOption</a></div>\n<div><a href=\"#method-_on\">_on</a></div>\n<div><a href=\"#method-_off\">_off</a></div>\n<div><a href=\"#method-_super\">_super</a></div>\n<div><a href=\"#method-_superApply\">_superApply</a></div>\n<div><a href=\"#method-_delay\">_delay</a></div>\n<div><a href=\"#method-_hoverable\">_hoverable</a></div>\n<div><a href=\"#method-_focusable\">_focusable</a></div>\n<div><a href=\"#method-_trigger\">_trigger</a></div>\n<div><a href=\"#method-_show\">_show</a></div>\n<div><a href=\"#method-_hide\">_hide</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"jQuery-Widget2\" class=\"entry widget\"><h2 class=\"section-title\"><span>Base Widget</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>The base widget used by the widget factory.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the jQuery.Widget if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the element.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the element will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the element will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe element will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe element will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the element.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the element will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the element will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe element will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe element will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-_create\"><div class=\"api-item first-item\">\n<h3>_create()</h3>\n<div>\n\t\t\t\t\tThe <code>_create()</code> method is the widget's constructor.\n\t\t\t\t\tThere are no parameters, but <code>this.element</code> and <code>this.options</code> are already set.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_delay\"><div class=\"api-item\">\n<h3>_delay( fn [, delay ] ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>\n\t\t\t\t\tInvokes the provided function after a specified delay. Keeps <code>this</code> context correct. Essentially <code>setTimeout()</code>.\n\t\t\t\t\t<p>Returns the timeout ID for use with <code>clearTimeout()</code>.</p>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>fn</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>() or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The function to invoke. Can also be the name of a method on the widget.</div>\n</li>\n<li>\n<div><strong>delay</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The number of milliseconds to wait before invoking the function. Deafults to <code>0</code>.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_destroy\"><div class=\"api-item\">\n<h3>_destroy()</h3>\n<div>\n\t\t\t\t\tThe public <a href=\"#method-destroy\"><code>destroy()</code></a> method cleans up all common data, events, etc. and then delegates out to <code>_destroy()</code> for custom, widget-specific, cleanup.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_focusable\"><div class=\"api-item\">\n<h3>_focusable( element )</h3>\n<div>\n\t\t\t\t\tSets up <code>element</code> to apply the <code>ui-state-focus</code> class on focus.\n\t\t\t\t\t<p>The event handlers are automatically cleaned up on destroy.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to apply the focusable behavior to.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_getCreateEventData\"><div class=\"api-item\">\n<h3>_getCreateEventData() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>\n\t\t\t\t\tAll widgets trigger the <a href=\"#event-create\"><code>create</code></a> event. By default, no data is provided in the event, but this method can return an object which will be passed as the <code>create</code> event's data.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_getCreateOptions\"><div class=\"api-item\">\n<h3>_getCreateOptions() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>\n\t\t\t\t\tThis method allows the widget to define a custom method for defining options during instantiation. This user-provided options override the options returned by this method which override the default options.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_hide\"><div class=\"api-item\">\n<h3>_hide( element, option [, callback ] )</h3>\n<div>\n\t\t\t\t\tHides an element immediately, using built-in animation methods, or using custom effects.\n\t\t\t\t\tSee the <a href=\"#option-hide\">hide</a> option for possible <code>option</code> values.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to hide.</div>\n</li>\n<li>\n<div><strong>option</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings defining how to hide the element.</div>\n</li>\n<li>\n<div><strong>callback</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>Callback to invoke after the element has been fully hidden.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_hoverable\"><div class=\"api-item\">\n<h3>_hoverable( element )</h3>\n<div>\n\t\t\t\t\tSets up <code>element</code> to apply the <code>ui-state-hover</code> class on hover.\n\t\t\t\t\t<p>The event handlers are automatically cleaned up on destroy.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to apply the hoverable behavior to.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_init\"><div class=\"api-item\">\n<h3>_init()</h3>\n<div>\n\t\t\t\t\tWidgets have the concept of initialization that is distinct from creation. Any time the plugin is called with no arguments or with only an option hash, the widget is initialized; this includes when the widget is created.\n\n\t\t\t\t\t<p><em>Note: Initialization should only be handled if there is a logical action to perform on successive calls to the widget with no arguments.</em></p>\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_off\"><div class=\"api-item\">\n<h3>_off( element, eventName )</h3>\n<div>\n\t\t\t\t\tUnbinds event handlers from the specified element(s).\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe element(s) to unbind the event handlers from. Unlike the <code>_on()</code> method, the elements are required for <code>_off()</code>.\n\t\t\t\t\t</div>\n</li>\n<li>\n<div><strong>eventName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>One or more space-separated event types.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_on\"><div class=\"api-item\">\n<h3>_on(  [element ], handlers )</h3>\n<div>\n\t\t\t\t\tBinds event handlers to the specified element(s). Delegation is supported via selectors inside the event names, e.g., \"<code>click .foo</code>\". The <code>_on()</code> method provides several benefits of direct event binding:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Maintains proper <code>this</code> context inside the handlers.</li>\n\t\t\t\t\t\t<li>Automatically handles disabled widgets: If the widget is disabled or the event occurs on an element with the <code>ui-state-disabled</code> class, the event handler is not invoked.</li>\n\t\t\t\t\t\t<li>Event handlers are automatically namespaced and cleaned up on destroy.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>Which element(s) to bind the event handlers to. If no element is provided, <code>this.element</code> is used.</div>\n</li>\n<li>\n<div><strong>handlers</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>\n\t\t\t\t\t\tA map in which the string keys represent the event type and optional selector for delegation, and the values represent a handler function to be called for the event.\n\t\t\t\t\t</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_setOption\"><div class=\"api-item\">\n<h3>_setOption( key, value )</h3>\n<div>\n\t\t\t\t\tCalled from the <a href=\"#method-_setOptions\"><code>_setOptions()</code></a> method for each individual option. Widget state should be updated based on changes.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>key</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_setOptions\"><div class=\"api-item\">\n<h3>_setOptions( options )</h3>\n<div>\n\t\t\t\t\tCalled whenever the <a href=\"#method-option\"><code>option()</code></a> method is called, regardless of the form in which the <code>option()</code> method was called.\n\t\t\t\t\t<p>Overriding this is useful if you can defer processor-intensive changes for multiple option changes.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_show\"><div class=\"api-item\">\n<h3>_show( element, option [, callback ] )</h3>\n<div>\n\t\t\t\t\tShows an element immediately, using built-in animation methods, or using custom effects.\n\t\t\t\t\tSee the <a href=\"#option-show\">show</a> option for possible <code>option</code> values.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to show.</div>\n</li>\n<li>\n<div><strong>option</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings defining how to show the element.</div>\n</li>\n<li>\n<div><strong>callback</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>Callback to invoke after the element has been fully shown.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_super\"><div class=\"api-item\">\n<h3>_super()</h3>\n<div>\n\t\t\t\t\tInvokes the method of the same name from the parent widget, with any specified arguments. Essentially <code>.call()</code>.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_superApply\"><div class=\"api-item\">\n<h3>_superApply( arguments )</h3>\n<div>\n\t\t\t\t\tInvokes the method of the same name from the parent widget, with the array of arguments. Essentially <code>.apply()</code>.\n\t\t\t\t</div>\n<ul><li>\n<div><strong>arguments</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>Array of arguments to pass to the parent method.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_trigger\"><div class=\"api-item\">\n<h3>_trigger( type [, event ] [, data ] )</h3>\n<div>\n\t\t\t\t\tTriggers an event and its associated callback.\n\t\t\t\t\t<p>The option with the name equal to type is invoked as the callback.</p>\n\t\t\t\t\t<p>The event name is the widget name + type.</p>\n\t\t\t\t\t<p><em>Note: When providing data, you must provide all three parameters. If there is no event to pass along, just pass <code>null</code>.</em></p>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>type</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The <code>type</code> should match the name of a callback option. The full event type will be generated automatically.</div>\n</li>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>The original event that caused this event to occur; useful for providing context to the listener.</div>\n</li>\n<li>\n<div><strong>data</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A hash of data associated with the event.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-destroy\"><div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the jQuery.Widget functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-disable\"><div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the jQuery.Widget.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-enable\"><div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the jQuery.Widget.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current jQuery.Widget options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the jQuery.Widget option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the jQuery.Widget.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\"><div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the original element or other relevant generated element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>jQuery.Widgetcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the jQuery.Widget is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the jQuery.Widgetcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"jQuery.Widgetcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/menu.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI menu documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Menu Widget\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThemeable menu with mouse and keyboard interactions for navigation.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-menus\">menus</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-role\">role</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-blur\">blur</a></div>\n<div><a href=\"#method-collapse\">collapse</a></div>\n<div><a href=\"#method-collapseAll\">collapseAll</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-expand\">expand</a></div>\n<div><a href=\"#method-focus\">focus</a></div>\n<div><a href=\"#method-isFirstItem\">isFirstItem</a></div>\n<div><a href=\"#method-isLastItem\">isLastItem</a></div>\n<div><a href=\"#method-next\">next</a></div>\n<div><a href=\"#method-nextPage\">nextPage</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-previous\">previous</a></div>\n<div><a href=\"#method-previousPage\">previousPage</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-select\">select</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-blur\">blur</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-select\">select</a></div>\n</div></section><article id=\"menu1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Menu Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThemeable menu with mouse and keyboard interactions for navigation.\n\t</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the menu if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ submenu: \"ui-icon-carat-1-e\" }</code>\n</div>\n<div>\n\t\t\t\tIcons to use for submenus, matching an icon defined by the jQuery UI CSS Framework.\n\t\t\t\t<ul>\n\t\t\t\t\t<li>submenu (string, default: \"ui-icon-carat-1-e\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the menu with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ icons: { submenu: </code><code class=\"string\">\"ui-icon-circle-triangle-e\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { submenu: </code><code class=\"string\">\"ui-icon-circle-triangle-e\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-menus\" class=\"api-item\">\n<h3>menus<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"ul\"</code>\n</div>\n<div>Selector for the elements that serve as the menu container, including sub-menus.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the menus option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ menus: </code><code class=\"string\">\"div\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the menus option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">menus = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"menus\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"menus\"</code><code class=\"plain\">, </code><code class=\"string\">\"div\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top\", at: \"right top\" }</code>\n</div>\n<div>Identifies the position of submenus in relation to the associated parent menu item. The <code>of</code> option defaults to the parent menu item, but you can specify another element to position against. You can refer to the <a href=\"/position/\">jQuery UI Position</a> utility for more details about the various options.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ position: { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right-5 top+5\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right-5 top+5\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-role\" class=\"api-item\">\n<h3>role<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"menu\"</code>\n</div>\n<div>Customize the ARIA roles used for the menu and menu items. The default uses <code>\"menuitem\"</code> for items. Setting the <code>role</code> option to <code>\"listbox\"</code> will use <code>\"option\"</code> for items. If set to <code>null</code>, no roles will be set, which is useful if the menu is being controlled by another element that is maintaining focus.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the role option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ role: </code><code class=\"keyword\">null</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the role option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">role = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"role\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"role\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-blur\">\n<div class=\"api-item first-item\">\n<h3>blur(  [event ] )</h3>\n<div>\n\t\t\t\tRemoves focus from a menu, resets any active element styles and triggers the menu's <a href=\"event-blur\"><code>blur</code></a> event.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to blur.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the blur method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"blur\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-collapse\">\n<div class=\"api-item\">\n<h3>collapse(  [event ] )</h3>\n<div>\n\t\t\t\tCloses the currently active sub-menu.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to collapse.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the collapse method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"collapse\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-collapseAll\">\n<div class=\"api-item\">\n<h3>collapseAll(  [event ] [, all ] )</h3>\n<div>\n\t\t\t\tCloses all open sub-menus.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to collapse.</div>\n</li>\n<li>\n<div><strong>all</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a>\n</div>\n<div>Indicates whether all sub-menus should be closed or only sub-menus below and including the menu that is or contains the target of the triggering event.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the collapseAll method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"collapseAll\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the menu functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-expand\">\n<div class=\"api-item\">\n<h3>expand(  [event ] )</h3>\n<div>\n\t\t\t\tOpens the sub-menu below the currently active item, if one exists.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to expand.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the expand method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"expand\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-focus\">\n<div class=\"api-item\">\n<h3>focus(  [event ], item )</h3>\n<div>\n\t\t\t\tActivates a particular menu item, begins opening any sub-menu if present and triggers the menu's <a href=\"#event-focus\"><code>focus</code></a> event.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu item to gain focus.</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The menu item to focus/activate.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the focus method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"focus\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code><code class=\"plain\">, menu.find( </code><code class=\"string\">\".ui-menu-item:last\"</code> <code class=\"plain\">) );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isFirstItem\">\n<div class=\"api-item\">\n<h3>isFirstItem()</h3>\n<div>\n\t\t\t\tReturns a boolean value stating whether or not the currently active item is the first item in the menu.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isFirstItem method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">firstItem = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"isFirstItem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isLastItem\">\n<div class=\"api-item\">\n<h3>isLastItem()</h3>\n<div>\n\t\t\t\tReturns a boolean value stating whether or not the currently active item is the last item in the menu.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isLastItem method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">lastItem = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"isLastItem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-next\">\n<div class=\"api-item\">\n<h3>next(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to next menu item.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the next method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"next\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-nextPage\">\n<div class=\"api-item\">\n<h3>nextPage(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to first menu item below the bottom of a scrollable menu or the last item if not scrollable.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the nextPage method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"nextPage\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current menu options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the menu option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the menu.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-previous\">\n<div class=\"api-item\">\n<h3>previous(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to previous menu item.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the previous method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"previous\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-previousPage\">\n<div class=\"api-item\">\n<h3>previousPage(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to first menu item above the top of a scrollable menu or the first item if not scrollable.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the previousPage method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"previousPage\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>\n\t\t\t\tInitializes sub-menus and menu items that have not already been initialized. New menu items, including sub-menus can be added to the menu or all of the contents of the menu can be replaced and then initialized with the <code>refresh()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-select\">\n<div class=\"api-item\">\n<h3>select(  [event ] )</h3>\n<div>\n\t\t\t\tSelects the currently active menu item, collapses all sub-menus and triggers the menu's <a href=\"#event-select\"><code>select</code></a> event.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the selection.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the select method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"select\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-blur\" class=\"api-item first-item\">\n<h3>blur( event, ui )<span class=\"returns\">Type: <code>menublur</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when the menu loses focus.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the blur callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">blur: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menublur event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menublur\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>menucreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the menu is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menucreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menucreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>menufocus</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a menu gains focus or when any menu item is activated.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menufocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menufocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-select\" class=\"api-item\">\n<h3>select( event, ui )<span class=\"returns\">Type: <code>menuselect</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a menu item is selected.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the select callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">select: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menuselect event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menuselect\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>A menu can be created from any valid markup as long as the elements have a strict parent/child relationship and each menu item has an anchor. The most commonly used element is the unordered list (<code>&lt;ul&gt;</code>):</p>\n\n\t\t<pre>\n&lt;ul id=\"menu\"&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 1&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 2&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3&lt;/a&gt;\n\t\t&lt;ul&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-1&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-2&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-3&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-4&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-5&lt;/a&gt;&lt;/li&gt;\n\t\t&lt;/ul&gt;\n\t&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 4&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 5&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n\n\t\t<p>If you use a structure other than <code>&lt;ul&gt;</code>/<code>&lt;li&gt;</code>, including using the same element for the menu and the menu items, use the <a href=\"#option-menus\"><code>menus</code></a> option to specify a way to differentiate the two elements, e.g., <code>menus: \"div.menuElement\"</code>.</p>\n\n\t\t<p>Any menu item can be disabled by adding the <code>ui-state-disabled</code> class to that element.</p>\n\n\t\t<p>To add icons to the menu, include them in the markup:</p>\n\n\t\t<pre>\n&lt;ul id=\"menu\"&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;&lt;span class=\"ui-icon ui-icon-disk\"&gt;&lt;/span&gt;Save&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n\t\t<p>Menu automatically adds the necessary padding to items without icons.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<ul>\n\t\t\t<li>ENTER/SPACE: Invoke the focused menu item's action, which may be opening a submenu.</li>\n\t\t\t<li>UP: Move focus to the previous menu item.</li>\n\t\t\t<li>DOWN: Move focus to the next menu item.</li>\n\t\t\t<li>RIGHT: Open the submenu, if available.</li>\n\t\t\t<li>LEFT: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.</li>\n\t\t\t<li>ESCAPE: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.</li>\n\t\t</ul>\n\n\t\t<p>Typing a letter moves focus to the first item whose title starts with that character. Repeating the same character cycles through matching items. Typing more characters within the one second timer matches those characters.</p>\n\n\t\t<p>Disabled items can receive keyboard focus, but do not allow any other interaction.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Menu</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;menu demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.ui-menu {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 200px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\">&nbsp;</div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"menu\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-1&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-2&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-3&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-4&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-5&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\">&nbsp;</div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#menu\" ).menu();</code></div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\">&nbsp;</div><div class=\"line number37 index36 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/mouse.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI mouse documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Mouse Interaction\",\n\t\t\"excerpt\":\n\t\t\t\"The base interaction layer.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"utilities\",\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-_mouseInit\">_mouseInit</a></div>\n<div><a href=\"#method-_mouseDestroy\">_mouseDestroy</a></div>\n<div><a href=\"#method-_mouseDown\">_mouseDown</a></div>\n<div><a href=\"#method-_mouseMove\">_mouseMove</a></div>\n<div><a href=\"#method-_mouseUp\">_mouseUp</a></div>\n<div><a href=\"#method-_mouseDistanceMet\">_mouseDistanceMet</a></div>\n<div><a href=\"#method-_mouseDelayMet\">_mouseDelayMet</a></div>\n<div><a href=\"#method-_mouseStart\">_mouseStart</a></div>\n<div><a href=\"#method-_mouseDrag\">_mouseDrag</a></div>\n<div><a href=\"#method-_mouseStop\">_mouseStop</a></div>\n<div><a href=\"#method-_mouseCapture\">_mouseCapture</a></div>\n</div>\n<div class=\"quick-nav-section\"><h3>Events</h3></div></section><article id=\"jQuery-ui-mouse1\" class=\"entry widget\"><h2 class=\"section-title\"><span>Mouse Interaction</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>The base interaction layer.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-cancel\" class=\"api-item first-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents interactions from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ cancel: </code><code class=\"string\">\".title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds after mousedown until the interaction should start. This option can be used to prevent unwanted interactions when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ delay: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Distance in pixels after mousedown the mouse must move before the interaction should start. This option can be used to prevent unwanted interactions when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ distance: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-_mouseCapture\">\n<div class=\"api-item first-item\">\n<h3>_mouseCapture() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether an interaction should start based on event target of the interaction. The default implementation always returns <code>true</code>.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseCapture method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseCapture\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDelayMet\">\n<div class=\"api-item\">\n<h3>_mouseDelayMet() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether the <a href=\"#option-delay\"><code>delay</code></a> option has been met for the current interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDelayMet method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDelayMet\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDestroy\">\n<div class=\"api-item\">\n<h3>_mouseDestroy()</h3>\n<div>\n\t\t\t\tDestroys the interaction event handlers. This must be called from the extending widget's <code>_destroy()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDestroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDestroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDistanceMet\">\n<div class=\"api-item\">\n<h3>_mouseDistanceMet() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether the <a href=\"#option-distance\"><code>distance</code></a> option has been met for the current interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDistanceMet method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDistanceMet\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDown\">\n<div class=\"api-item\">\n<h3>_mouseDown()</h3>\n<div>\n\t\t\t\tHandles the beginning of an interaction. Verifies that the event is associated with the primary mouse button and ensures that the <a href=\"#option-delay\"><code>delay</code></a> and <a href=\"#option-distance\"><code>distance</code></a> options are met prior to starting the interaction. When the interaction is ready to start, invokes the <a href=\"#method-_mouseStart\"><code>_mouseStart()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDrag\">\n<div class=\"api-item\">\n<h3>_mouseDrag()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseDrag()</code> method to handle each movement of an interaction. This method will receive the mouse event associated with the movement.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDrag method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDrag\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseInit\">\n<div class=\"api-item\">\n<h3>_mouseInit()</h3>\n<div>\n\t\t\t\tInitializes the interaction event handlers. This must be called from the extending widget's <code>_create()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseInit method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseInit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseMove\">\n<div class=\"api-item\">\n<h3>_mouseMove()</h3>\n<div>\n\t\t\t\tHandles each movement of the interaction. Invokes the <a href=\"#method-_mouseDrag\"><code>mouseDrag()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseMove method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseMove\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseStart\">\n<div class=\"api-item\">\n<h3>_mouseStart()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseStart()</code> method to handle the beginning of an interaction. This method will receive the mouse event associated with the start of the interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseStart method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseStart\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseStop\">\n<div class=\"api-item\">\n<h3>_mouseStop()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseStop()</code> method to handle the end of an interaction. This method will receive the mouse event associated with the end of the interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseStop method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseStop\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseUp\">\n<div class=\"api-item\">\n<h3>_mouseUp()</h3>\n<div>\n\t\t\t\tHandles the end of the interaction. Invokes the <a href=\"#method-_mouseStop\"><code>mouseStop()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseUp\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Similar to <a href=\"/jQuery.Widget#jQuery-Widget2\"><code>jQuery.Widget</code></a>, the mouse interaction is not intended to be used directly. It is purely a base layer for other widgets to inherit from. This page only documents what is added to <code>jQuery.Widget</code>, but it does include internal methods that are not intended to be overwritten. The intended public API is <a href=\"#method-_mouseStart\"><code>_mouseStart()</code></a>, <a href=\"#method-_mouseDrag\"><code>_mouseDrag()</code></a>, <a href=\"#method-_mouseStop\"><code>_mouseStop()</code></a>, and <a href=\"#method-_mouseCapture\"><code>_mouseCapture()</code></a>.</p>\n\t</div>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/position.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI position documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\".position()\",\n\t\t\"excerpt\":\n\t\t\t\"Position an element relative to another.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"methods\",\"overrides\",\"utilities\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"position1\" class=\"entry method\"><h2 class=\"section-title\">\n<span class=\"name\">.position( options )</span> <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Position an element relative to another.</p>\n<ul class=\"signatures\"><li class=\"signature\" id=\"position-options\">\n<h4 class=\"name\">.position( options )</h4>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div>\n<strong>my</strong> (default: <code>\"center\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Defines which position <strong>on the element being positioned</strong> to align with the target element: \"horizontal vertical\" alignment. A single value such as <code>\"right\"</code> will be normalized to <code>\"right center\"</code>, <code>\"top\"</code> will be normalized to <code>\"center top\"</code> (following CSS convention). Acceptable horizontal values: <code>\"left\"</code>, <code>\"center\"</code>, <code>\"right\"</code>. Acceptable vertical values: <code>\"top\"</code>, <code>\"center\"</code>, <code>\"bottom\"</code>. Example: <code>\"left top\"</code> or <code>\"center center\"</code>. Each dimension can also contain offsets, in pixels or percent, e.g., <code>\"right+10 top-25%\"</code>. Percentage offsets are relative to the element being positioned.</div>\n</li>\n<li>\n<div>\n<strong>at</strong> (default: <code>\"center\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Defines which position <strong>on the target element</strong> to align the positioned element against: \"horizontal vertical\" alignment. See the <a href=\"#option-my\"><code>my</code></a> option for full details on possible values. Perecentage offsets are relative to the target element.</div>\n</li>\n<li>\n<div>\n<strong>of</strong> (default: <code>null</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>Which element to position against. If you provide a selector or jQuery object, the first matching element will be used. If you provide an event object, the <code>pageX</code> and <code>pageY</code> properties will be used. Example: <code>\"#top-menu\"</code>\n</div>\n</li>\n<li>\n<div>\n<strong>collision</strong> (default: <code>\"flip\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t\t<p>When the positioned element overflows the window in some direction, move it to an alternative position. Similar to <a href=\"#option-my\"><code>my</code></a> and <a href=\"#option-at\"><code>at</code></a>, this accepts a single value or a pair for horizontal/vertical, e.g., <code>\"flip\"</code>, <code>\"fit\"</code>, <code>\"fit flip\"</code>, <code>\"fit none\"</code>.</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>\n<code>\"flip\"</code>: Flips the element to the opposite side of the target and the collision detection is run again to see if it will fit. Whichever side allows more of the element to be visible will be used.</li>\n\t\t\t\t\t\t<li>\n<code>\"fit\"</code>: Shift the element away from the edge of the window.</li>\n\t\t\t\t\t\t<li>\n<code>\"flipfit\"</code>: First applies the flip logic, placing the element on whichever side allows more of the element to be visible. Then the fit logic is applied to ensure as much of the element is visible as possible.</li>\n\t\t\t\t\t\t<li>\n<code>\"none\"</code>: Does not apply any collision detection.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n</li>\n<li>\n<div>\n<strong>using</strong> (default: <code>null</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>\n\t\t\t\t\tWhen specified, the actual property setting is delegated to this callback. Receives two parameters: The first is a hash of <code>top</code> and <code>left</code> values for the position that should be set and can be forwarded to <code>.css()</code> or <code>.animate()</code>.\n\t\t\t\t\t<p>The second provides feedback about the position and dimensions of both elements, as well as calculations to their relative position. Both <code>target</code> and <code>element</code> have these properties: <code>element</code>, <code>left</code>, <code>top</code>, <code>width</code>, <code>height</code>. In addition, there's <code>horizontal</code>, <code>vertical</code> and <code>important</code>, giving you twelve potential directions like <code>{ horizontal: \"center\", vertical: \"left\", important: \"horizontal\" }</code>.</p>\n\t\t\t\t</div>\n</li>\n<li>\n<div>\n<strong>within</strong> (default: <code>window</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>Element to position within, affecting collision detection. If you provide a selector or jQuery object, the first matching element will be used.</div>\n</li>\n</ul>\n</li></ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>The jQuery UI <code>.position()</code> method allows you to position an element relative to the window, document, another element, or the cursor/mouse, without worrying about offset parents.</p>\n\t\t<p><em>Note: jQuery UI does not support positioning hidden elements.</em></p>\n\t\t<p>This is a standalone jQuery plugin and has no dependencies on other jQuery UI components.</p>\n\t\t<p>This plugin extends jQuery's built-in <a href=\"http://api.jquery.com/position\"><code>.position()</code></a> method. If jQuery UI is not loaded, calling the <code>.position()</code> method may not fail directly, as the method still exists. However, the expected behavior will not occur.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Position example.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div><div class=\"line number44 index43 alt1\">44</div><div class=\"line number45 index44 alt2\">45</div><div class=\"line number46 index45 alt1\">46</div><div class=\"line number47 index46 alt2\">47</div><div class=\"line number48 index47 alt1\">48</div><div class=\"line number49 index48 alt2\">49</div><div class=\"line number50 index49 alt1\">50</div><div class=\"line number51 index50 alt2\">51</div><div class=\"line number52 index51 alt1\">52</div><div class=\"line number53 index52 alt2\">53</div><div class=\"line number54 index53 alt1\">54</div><div class=\"line number55 index54 alt2\">55</div><div class=\"line number56 index55 alt1\">56</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;position demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.positionDiv {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: absolute;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 75px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 75px;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: green;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"targetElement\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position1\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position2\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position3\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position4\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\">&nbsp;</div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">$( \"#position1\" ).position({</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"center\",</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"center\",</code></div><div class=\"line number31 index30 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number32 index31 alt1\"><code class=\"plain\">});</code></div><div class=\"line number33 index32 alt2\">&nbsp;</div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#position2\" ).position({</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"left top\",</code></div><div class=\"line number36 index35 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"left top\",</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">});</code></div><div class=\"line number39 index38 alt2\">&nbsp;</div><div class=\"line number40 index39 alt1\"><code class=\"plain\">$( \"#position3\" ).position({</code></div><div class=\"line number41 index40 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"right center\",</code></div><div class=\"line number42 index41 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"right bottom\",</code></div><div class=\"line number43 index42 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number44 index43 alt1\"><code class=\"plain\">});</code></div><div class=\"line number45 index44 alt2\">&nbsp;</div><div class=\"line number46 index45 alt1\"><code class=\"plain\">$( document ).mousemove(function( event ) {</code></div><div class=\"line number47 index46 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#position4\" ).position({</code></div><div class=\"line number48 index47 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"left+3 bottom-3\",</code></div><div class=\"line number49 index48 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: event,</code></div><div class=\"line number50 index49 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">collision: \"fit\"</code></div><div class=\"line number51 index50 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">});</code></div><div class=\"line number52 index51 alt1\"><code class=\"plain\">});</code></div><div class=\"line number53 index52 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number54 index53 alt1\">&nbsp;</div><div class=\"line number55 index54 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number56 index55 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/progressbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI progressbar documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Progressbar Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Display status of a determinate process.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-value\">value</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-complete\">complete</a></div>\n</div></section><article id=\"progressbar1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Progressbar Widget</span><span class=\"version-details\">version added: 1.6</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Display status of a determinate process.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the progressbar if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The maximum value of the progressbar.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ max: 1024 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 1024 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-value\" class=\"api-item\">\n<h3>value<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The value of the progressbar.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the value option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ value: 25 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the value option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 25 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the progressbar functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current progressbar options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the progressbar option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the progressbar.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Gets the current value of the progressbar.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">progressSoFar = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div>Sets the current value of the progressbar.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>progressbarchange</code></span>\n</h3>\n<div>Triggered when the value of the progressbar changes.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-complete\" class=\"api-item\">\n<h3>complete( event, ui )<span class=\"returns\">Type: <code>progressbarcomplete</code></span>\n</h3>\n<div>Triggered when the value of the progressbar reaches the maximum value.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the complete callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">complete: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarcomplete event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarcomplete\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>progressbarcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the progressbar is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>\n\t\t\tThe progress bar is designed to display the current percent complete for a process. The bar is coded to be flexibly sized through CSS and will scale to fit inside its parent container by default.\n\t\t</p>\n\t\t<p>\n\t\t\tThis is a determinate progress bar, meaning that it should only be used in situations where the system can accurately update the current status. A determinate progress bar should never fill from left to right, then loop back to empty for a single process — if the actual status cannot be calculated, an indeterminate progress bar or spinner animation is a better way to provide user feedback.\n\t\t</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Progressbar</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;progressbar demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"progressbar\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#progressbar\" ).progressbar({</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">value: 37</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">});</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/puff-effect.html",
    "content": "<script>{\n\t\t\"title\":\n\t\t\t\"Puff Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tCreates a puff effect by scaling the element up and hiding it at the same time.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"puff1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Puff Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tCreates a puff effect by scaling the element up and hiding it at the same time.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">puff</h4>\n<ul><li>\n<div>\n<strong>percent</strong> (default: <code>150</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The percentage to scale to.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the puff effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;puff demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"puff\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/pulsate-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI pulsate-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Pulsate Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe pulsate effect hides or shows an element by pulsing it in or out.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"pulsate1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Pulsate Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe pulsate effect hides or shows an element by pulsing it in or out.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">pulsate</h4>\n<ul><li>\n<div>\n<strong>times</strong> (default: <code>5</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of times the element should pulse. An extra half pulse is added for hide/show.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the pulsate effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;pulsate demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"pulsate\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/resizable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI resizable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Resizable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Change the size of an element using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-alsoResize\">alsoResize</a></div>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-animateDuration\">animateDuration</a></div>\n<div><a href=\"#option-animateEasing\">animateEasing</a></div>\n<div><a href=\"#option-aspectRatio\">aspectRatio</a></div>\n<div><a href=\"#option-autoHide\">autoHide</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-ghost\">ghost</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handles\">handles</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-maxHeight\">maxHeight</a></div>\n<div><a href=\"#option-maxWidth\">maxWidth</a></div>\n<div><a href=\"#option-minHeight\">minHeight</a></div>\n<div><a href=\"#option-minWidth\">minWidth</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-resize\">resize</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"resizable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Resizable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Change the size of an element using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-alsoResize\" class=\"api-item first-item\">\n<h3>alsoResize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>One or more elements to resize synchronously with the resizable element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the alsoResize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ alsoResize: </code><code class=\"string\">\"#mirror\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the alsoResize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">alsoResize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"alsoResize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"alsoResize\"</code><code class=\"plain\">, </code><code class=\"string\">\"#mirror\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animate\" class=\"api-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Animates to the final size after resizing.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animate: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animateDuration\" class=\"api-item\">\n<h3>animateDuration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"slow\"</code>\n</div>\n<div>How long to animate when using the <a href=\"#option-animate\"><code>animate</code></a> option.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: Duration in milliseconds.</li>\n<li>\n<strong>String</strong>: A named duration, such as <code>\"slow\"</code> or <code>\"fast\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the animateDuration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animateDuration: </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animateDuration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animateDuration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateDuration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateDuration\"</code><code class=\"plain\">, </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animateEasing\" class=\"api-item\">\n<h3>animateEasing<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"swing\"</code>\n</div>\n<div>Which <a href=\"/easings/\">easing</a> to apply when using the <a href=\"#option-animate\"><code>animate</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the animateEasing option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animateEasing: </code><code class=\"string\">\"easeOutBounce\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animateEasing option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animateEasing = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateEasing\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateEasing\"</code><code class=\"plain\">, </code><code class=\"string\">\"easeOutBounce\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-aspectRatio\" class=\"api-item\">\n<h3>aspectRatio<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should be constrained to a specific aspect ratio.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the element will maintain its original aspect ratio.</li>\n<li>\n<strong>Number</strong>: Force the element to maintain a specific aspect ratio during resizing.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the aspectRatio option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ aspectRatio: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the aspectRatio option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">aspectRatio = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"aspectRatio\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"aspectRatio\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoHide\" class=\"api-item\">\n<h3>autoHide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the handles should hide when the user is not hovering over the element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the autoHide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ autoHide: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoHide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoHide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoHide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoHide\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents resizing from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ cancel: </code><code class=\"string\">\".cancel\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".cancel\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains resizing to within the bounds of the specified element or region.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: The resizable element will be contained to the bounding box of the first element found by the selector. If no element is found, no containment will be set.</li>\n<li>\n<strong>Element</strong>: The resizable element will be contained to the bounding box of this element.</li>\n<li>\n<strong>String</strong>: Possible values: <code>\"parent\"</code> and <code>\"document\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Tolerance, in milliseconds, for when resizing should start. If specified, resizing will not start until after mouse is moved beyond duration. This can help prevent unintended resizing when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the resizable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Tolerance, in pixels, for when resizing should start. If specified, resizing will not start until after mouse is moved beyond distance. This can help prevent unintended resizing when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ distance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-ghost\" class=\"api-item\">\n<h3>ghost<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code>, a semi-transparent helper element is shown for resizing.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the ghost option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ ghost: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the ghost option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">ghost = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"ghost\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"ghost\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the resizing element to a grid, every x and y pixels. Array values: <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ grid: [ 20, 10 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 20, 10 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handles\" class=\"api-item\">\n<h3>handles<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"e, s, se\"</code>\n</div>\n<div>Which handles can be used for resizing.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: A comma delimited list of any of the following: n, e, s, w, ne, se, sw, nw, all. The necessary handles will be auto-generated by the plugin.</li>\n<li>\n<strong>Object</strong>: The following keys are supported: { n, e, s, w, ne, se, sw, nw }. The value of any specified should be a jQuery selector matching the child element of the resizable to use as that handle. If the handle is not a child of the resizable, you can pass in the DOMElement or a valid jQuery object directly.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the handles option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ handles: </code><code class=\"string\">\"n, e, s, w\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handles option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handles = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handles\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handles\"</code><code class=\"plain\">, </code><code class=\"string\">\"n, e, s, w\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A class name that will be added to a proxy element to outline the resize during the drag of the resize handle. Once the resize is complete, the original element is sized.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ helper: </code><code class=\"string\">\"resizable-helper\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable-helper\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxHeight\" class=\"api-item\">\n<h3>maxHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum height the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the maxHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ maxHeight: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxWidth\" class=\"api-item\">\n<h3>maxWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum width the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the maxWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ maxWidth: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minHeight\" class=\"api-item\">\n<h3>minHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The minimum height the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the minHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ minHeight: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minWidth\" class=\"api-item\">\n<h3>minWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The minimum width the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the minWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ minWidth: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the resizable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the resizable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the resizable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current resizable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the resizable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the resizable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the resizable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>resizecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the resizable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resize\" class=\"api-item\">\n<h3>resize( event, ui )<span class=\"returns\">Type: <code>resize</code></span>\n</h3>\n<div>This event is triggered during the resize, on the drag of the resize handler.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the resize callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resize: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resize event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resize\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>resizestart</code></span>\n</h3>\n<div>This event is triggered at the start of a resize operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>resizestop</code></span>\n</h3>\n<div>This event is triggered at the end of a resize operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Resizable plugin makes selected elements resizable (meaning they have draggable resize handles). You can specify one or more handles as well as min and max width and height.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Resizable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;resizable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#resizable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"plain\">}&nbsp;&nbsp; &lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"resizable\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">$( \"#resizable\" ).resizable();</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\">&nbsp;</div><div class=\"line number24 index23 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/scale-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI scale-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Scale Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tShrink or grow an element by a percentage factor.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"scale1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Scale Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tShrink or grow an element by a percentage factor.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">scale</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"both\"</code>, <code>\"vertical\"</code> or <code>\"horizontal\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>origin</strong> (default: <code>[ \"middle\", \"center\" ]</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The vanishing point.</div>\n</li>\n<li>\n<div><strong>percent</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The percentage to scale to.</div>\n</li>\n<li>\n<div>\n<strong>scale</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which areas of the element will be resized: <code>\"both\"</code>, <code>\"box\"</code>, <code>\"content\"</code>. Box resizes the border and padding of the element; content resizes any content inside of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">Toggle a div using the scale effect.</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;scale demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"scale\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">Toggle a div using the scale effect in just one direction.</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;scale demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle({ effect: \"scale\", direction: \"horizontal\" });</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/selectable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI selectable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Selectable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Use the mouse to select elements, individually or in a group.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-autoRefresh\">autoRefresh</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-filter\">filter</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-selected\">selected</a></div>\n<div><a href=\"#event-selecting\">selecting</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-unselected\">unselected</a></div>\n<div><a href=\"#event-unselecting\">unselecting</a></div>\n</div></section><article id=\"selectable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Selectable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Use the mouse to select elements, individually or in a group.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"body\"</code>\n</div>\n<div>Which element the selection helper (the lasso) should be appended to.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ appendTo: </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoRefresh\" class=\"api-item\">\n<h3>autoRefresh<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>This determines whether to refresh (recalculate) the position and size of each selectee at the beginning of each select operation. If you have many items, you may want to set this to false and call the <a href=\"#method-refresh\"><code>refresh()</code></a> method manually.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the autoRefresh option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ autoRefresh: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoRefresh option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoRefresh = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoRefresh\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoRefresh\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents selecting if you start on elements matching the selector.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ cancel: a,.cancel });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, a,.cancel );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds to define when the selecting should start. This helps prevent unwanted selections when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the selectable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Tolerance, in pixels, for when selecting should start. If specified, selecting will not start until the mouse has been dragged beyond the specified distance.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ distance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-filter\" class=\"api-item\">\n<h3>filter<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"*\"</code>\n</div>\n<div>The matching child elements will be made selectees (able to be selected).</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the filter option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ filter: li });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the filter option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">filter = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"filter\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"filter\"</code><code class=\"plain\">, li );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"touch\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether the lasso should select an item. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"fit\"</code>: Lasso overlaps the item entirely.</li>\n\t\t\t\t\t<li>\n<code>\"touch\"</code>: Lasso overlaps the item by any amount.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ tolerance: </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the selectable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the selectable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the selectable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current selectable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the selectable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the selectable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refresh the position and size of each selectee element. This method can be used to manually recalculate the position and size of each selectee when the <a href=\"#option-autoRefresh\"><code>autoRefresh</code></a> option is set to <code>false</code>.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the selectable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>selectablecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the selectable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-selected\" class=\"api-item\">\n<h3>selected( event, ui )<span class=\"returns\">Type: <code>selectableselected</code></span>\n</h3>\n<div>Triggered at the end of the select operation, on each element added to the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>selected</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The selectable item that has been selected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the selected callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">selected: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableselected event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableselected\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-selecting\" class=\"api-item\">\n<h3>selecting( event, ui )<span class=\"returns\">Type: <code>selectableselecting</code></span>\n</h3>\n<div>Triggered during the select operation, on each element added to the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>selecting</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The current selectable item being selected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the selecting callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">selecting: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableselecting event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableselecting\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>selectablestart</code></span>\n</h3>\n<div>Triggered at the beginning of the select operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>selectablestop</code></span>\n</h3>\n<div>Triggered at the end of the select operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-unselected\" class=\"api-item\">\n<h3>unselected( event, ui )<span class=\"returns\">Type: <code>selectableunselected</code></span>\n</h3>\n<div>Triggered at the end of the select operation, on each element removed from the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>unselected</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The selectable item that has been unselected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the unselected callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">unselected: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableunselected event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableunselected\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-unselecting\" class=\"api-item\">\n<h3>unselecting( event, ui )<span class=\"returns\">Type: <code>selectableunselecting</code></span>\n</h3>\n<div>Triggered during the select operation, on each element removed from the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>unselecting</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The current selectable item being unselected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the unselecting callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">unselecting: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableunselecting event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableunselecting\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Selectable plugin allows for elements to be selected by dragging a box (sometimes called a lasso) with the mouse over the elements. Elements can also be selected via click or drag while holding the ctrl/meta key, allowing for multiple (non-contiguous) selections.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Selectable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;selectable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#selectable .ui-selecting {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#selectable .ui-selected {</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #999;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"selectable\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">$( \"#selectable\" ).selectable();</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/shake-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI shake-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Shake Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Shakes the element multiple times, vertically or horizontally.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"shake1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Shake Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Shakes the element multiple times, vertically or horizontally.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">shake</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"left\"</code>, <code>\"right\"</code>, <code>\"up\"</code>, <code>\"down\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>distance</strong> (default: <code>20</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Distance to shake.</div>\n</li>\n<li>\n<div>\n<strong>times</strong> (default: <code>3</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>Times to shake.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Shake a div.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;shake demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to shake the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).effect( \"shake\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/size-effect.html",
    "content": "<script>{\n\t\t\"title\":\n\t\t\t\"Size Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Resize an element to a specified width and height.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"size1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Size Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Resize an element to a specified width and height.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">size</h4>\n<ul>\n<li>\n<div><strong>to</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Height and width to resize to.</div>\n</li>\n<li>\n<div>\n<strong>origin</strong> (default: <code>[ \"top\", \"left\" ]</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The vanishing point.</div>\n</li>\n<li>\n<div>\n<strong>scale</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which areas of the element will be resized: <code>\"both\"</code>, <code>\"box\"</code>, <code>\"content\"</code>. Box resizes the border and padding of the element; content resizes any content inside of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Resize the element using the size effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;size demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to resize the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).effect( \"size\", {</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">to: { width: 200, height: 60 }</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}, 1000 );</code></div><div class=\"line number27 index26 alt2\"><code class=\"plain\">});</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\">&nbsp;</div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slide-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI slide-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Slide Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Slides the element out of the viewport.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"slide1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Slide Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Slides the element out of the viewport.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">slide</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"left\"</code>, <code>\"right\"</code>, <code>\"up\"</code>, <code>\"down\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>distance</strong> (default: <code>element's outerWidth</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The distance of the effect. Defaults to either the height or width of the elemenet depending on the <code>direction</code> argument. Can be set to any integer less than the width/height of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the slide effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;slide demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"slide\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slider.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI slider documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Slider Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Drag a handle to select a numeric value.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-min\">min</a></div>\n<div><a href=\"#option-orientation\">orientation</a></div>\n<div><a href=\"#option-range\">range</a></div>\n<div><a href=\"#option-step\">step</a></div>\n<div><a href=\"#option-value\">value</a></div>\n<div><a href=\"#option-values\">values</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-values\">values</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-slide\">slide</a></div>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"slider1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Slider Widget</span><span class=\"version-details\">version added: 1.5</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Drag a handle to select a numeric value.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-animate\" class=\"api-item first-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to slide the handle smoothly when the user clicks on the slider track. Also accepts any valid <a href=\"//api.jquery.com/animate/#duration\">animation duration</a>.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the handle will animate with the default duration.</li>\n<li>\n<strong>String</strong>: The name of a speed, such as <code>\"fast\"</code> or <code>\"slow\"</code>.</li>\n<li>\n<strong>Number</strong>: The duration of the animation, in milliseconds.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the slider with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ animate: </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the slider if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>100</code>\n</div>\n<div>The maximum value of the slider.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ max: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-min\" class=\"api-item\">\n<h3>min<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The minimum value of the slider.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the min option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ min: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the min option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">min = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-orientation\" class=\"api-item\">\n<h3>orientation<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"horizontal\"</code>\n</div>\n<div>Determines whether the slider handles move horizontally (min on left, max on right) or vertically (min on bottom, max on top). Possible values: <code>\"horizontal\"</code>, <code>\"vertical\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the orientation option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ orientation: </code><code class=\"string\">\"vertical\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the orientation option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">orientation = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"orientation\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"orientation\"</code><code class=\"plain\">, </code><code class=\"string\">\"vertical\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-range\" class=\"api-item\">\n<h3>range<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the slider represents a range.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: If set to <code>true</code>, the slider will detect if you have two handles and create a stylable range element between these two.</li>\n<li>\n<strong>String</strong>: Either <code>\"min\"</code> or <code>\"max\"</code>. A min range goes from the slider min to one handle. A max range goes from one handle to the slider max.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the slider with the range option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ range: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the range option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">range = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"range\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"range\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-step\" class=\"api-item\">\n<h3>step<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Determines the size or amount of each interval or step the slider takes between the min and max. The full specified value range of the slider (max - min) should be evenly divisible by the step.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the step option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ step: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the step option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">step = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-value\" class=\"api-item\">\n<h3>value<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Determines the value of the slider, if there's only one handle. If there is more than one handle, determines the value of the first handle.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the value option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ value: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the value option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-values\" class=\"api-item\">\n<h3>values<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>This option can be used to specify multiple handles. If the <a href=\"#option-range\"><code>range</code></a> option is set to <code>true</code>, the length of <code>values</code> should be 2.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the values option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ values: [ 10, 25 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the values option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">values = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"values\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"values\"</code><code class=\"plain\">, [ 10, 25 ] );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the slider functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current slider options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the slider option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the slider.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Get the value of the slider.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">selection = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div>Set the value of the slider.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 55 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-values\">\n<div class=\"api-item\">\n<h3>values() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Array\">Array</a></span>\n</h3>\n<div>Get the value for all handles.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">values = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( index ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Get the value for the specified handle.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The zero-based index of the handle.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( index, value )</h3>\n<div>Set the value for the specified handle.</div>\n<ul>\n<li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The zero-based index of the handle.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, 0, 55 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( values )</h3>\n<div>Set the value for all handles.</div>\n<ul><li>\n<div><strong>values</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The values to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, [ 55, 105 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>slidechange</code></span>\n</h3>\n<div>Triggered after the user slides a handle, if the value has changed; or if the value is changed programmatically via the <a href=\"#method-value\"><code>value</code></a> method.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle that was changed.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidechange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidechange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>slidecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the slider is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-slide\" class=\"api-item\">\n<h3>slide( event, ui )<span class=\"returns\">Type: <code>slide</code></span>\n</h3>\n<div>Triggered on every mouse move during slide. The value provided in the event as <code>ui.value</code> represents the value that the handle will have as a result of the current movement. Canceling the event will prevent the handle from moving and the handle will continue to have its previous value.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle being moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value that the handle will move to if the event is not canceled.</div>\n</li>\n<li>\n<div><strong>values</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>An array of the current values of a multi-handled slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the slide callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">slide: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slide event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slide\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>slidestart</code></span>\n</h3>\n<div>Triggered when the user starts sliding.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle being moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>slidestop</code></span>\n</h3>\n<div>Triggered after the user slides a handle.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle that was moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Slider plugin makes selected elements into sliders. There are various options such as multiple handles and ranges. The handle can be moved with the mouse or the arrow keys.</p>\n\n\t\t<p>The slider widget will create handle elements with the class <code>ui-slider-handle</code> on initialization. You can specify custom handle elements by creating and appending the elements and adding the <code>ui-slider-handle</code> class before initialization. It will only create the number of handles needed to match the length of <a href=\"#option-value\"><code>value</code></a>/<a href=\"#option-values\"><code>values</code></a>. For example, if you specify <code>values: [ 1, 5, 18 ]</code> and create one custom handle, the plugin will create the other two.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Slider.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;slider demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;#slider { margin: 10px; }&nbsp; &lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number12 index11 alt1\">&nbsp;</div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"slider\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#slider\" ).slider();</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI sortable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Sortable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Reorder elements in a list or grid using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-axis\">axis</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-connectWith\">connectWith</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-cursor\">cursor</a></div>\n<div><a href=\"#option-cursorAt\">cursorAt</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-dropOnEmpty\">dropOnEmpty</a></div>\n<div><a href=\"#option-forceHelperSize\">forceHelperSize</a></div>\n<div><a href=\"#option-forcePlaceholderSize\">forcePlaceholderSize</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handle\">handle</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-items\">items</a></div>\n<div><a href=\"#option-opacity\">opacity</a></div>\n<div><a href=\"#option-placeholder\">placeholder</a></div>\n<div><a href=\"#option-revert\">revert</a></div>\n<div><a href=\"#option-scroll\">scroll</a></div>\n<div><a href=\"#option-scrollSensitivity\">scrollSensitivity</a></div>\n<div><a href=\"#option-scrollSpeed\">scrollSpeed</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-cancel\">cancel</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-refreshPositions\">refreshPositions</a></div>\n<div><a href=\"#method-serialize\">serialize</a></div>\n<div><a href=\"#method-toArray\">toArray</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-sort\">sort</a></div>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-beforeStop\">beforeStop</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-update\">update</a></div>\n<div><a href=\"#event-receive\">receive</a></div>\n<div><a href=\"#event-remove\">remove</a></div>\n<div><a href=\"#event-over\">over</a></div>\n<div><a href=\"#event-out\">out</a></div>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-deactivate\">deactivate</a></div>\n</div></section><article id=\"sortable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Sortable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Reorder elements in a list or grid using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"parent\"</code>\n</div>\n<div>Defines where the helper that moves with the mouse is being appended to during the drag (for example, to resolve overlap/zIndex issues).</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>jQuery</strong>: A jQuery object containing the element to append the helper to.</li>\n<li>\n<strong>Element</strong>: The element to append the helper to.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which element to append the helper to.</li>\n<li>\n<strong>String</strong>: The string <code>\"parent\"</code> will cause the helper to be a sibling of the sortable item.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ appendTo: document.body });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, document.body );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-axis\" class=\"api-item\">\n<h3>axis<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If defined, the items can be dragged only horizontally or vertically. Possible values: <code>\"x\"</code>, <code>\"y\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the axis option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ axis: </code><code class=\"string\">\"x\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the axis option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">axis = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code><code class=\"plain\">, </code><code class=\"string\">\"x\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\":input,button\"</code>\n</div>\n<div>Prevents sorting if you start on elements matching the selector.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cancel: </code><code class=\"string\">\"a,button\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\"a,button\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-connectWith\" class=\"api-item\">\n<h3>connectWith<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A selector of other sortable elements that the items from this list should be connected to. This is a one-way relationship, if you want the items to be connected in both directions, the <code>connectWith</code> option must be set on both sortable elements.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the connectWith option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ connectWith: </code><code class=\"string\">\"#shopping-cart\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the connectWith option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">connectWith = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectWith\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectWith\"</code><code class=\"plain\">, </code><code class=\"string\">\"#shopping-cart\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\t<p>Defines a bounding box that the sortable items are contrained to while dragging.</p>\n\n\t\t\t\t<p>Note: The element specified for containment must have a calculated width and height (though it need not be explicit). For example, if you have <code>float: left</code> sortable children and specify <code>containment: \"parent\"</code> be sure to have <code>float: left</code> on the sortable/parent container as well or it will have <code>height: 0</code>, causing undefined behavior.</p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Element</strong>: An element to use as the container.</li>\n<li>\n<strong>Selector</strong>: A selector specifying an element to use as the container.</li>\n<li>\n<strong>String</strong>: A string identifying an element to use as the container. Possible values: <code>\"parent\"</code>, <code>\"document\"</code>, <code>\"window\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursor\" class=\"api-item\">\n<h3>cursor<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>Defines the cursor that is being shown while sorting.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cursor option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cursor: </code><code class=\"string\">\"move\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursor option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursor = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code><code class=\"plain\">, </code><code class=\"string\">\"move\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursorAt\" class=\"api-item\">\n<h3>cursorAt<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Moves the sorting element or helper so the cursor always appears to drag from the same position. Coordinates can be given as a hash using a combination of one or two keys: <code>{ top, left, right, bottom }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cursorAt option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cursorAt: { left: 5 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursorAt option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursorAt = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code><code class=\"plain\">, { left: 5 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds to define when the sorting should start. Adding a delay helps preventing unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the sortable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Tolerance, in pixels, for when sorting should start. If specified, sorting will not start until after mouse is dragged beyond distance. Can be used to allow for clicks on elements within a handle.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ distance: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dropOnEmpty\" class=\"api-item\">\n<h3>dropOnEmpty<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If <code>false</code>, items from this sortable can't be dropped on an empty connect sortable (see the <a href=\"#option-connectWith\"><code>connectWith</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the dropOnEmpty option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ dropOnEmpty: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dropOnEmpty option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dropOnEmpty = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dropOnEmpty\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dropOnEmpty\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-forceHelperSize\" class=\"api-item\">\n<h3>forceHelperSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If <code>true</code>, forces the helper to have a size.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the forceHelperSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ forceHelperSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the forceHelperSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">forceHelperSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forceHelperSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forceHelperSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-forcePlaceholderSize\" class=\"api-item\">\n<h3>forcePlaceholderSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If true, forces the placeholder to have a size.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the forcePlaceholderSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ forcePlaceholderSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the forcePlaceholderSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">forcePlaceholderSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forcePlaceholderSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forcePlaceholderSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the sorting element or helper to a grid, every x and y pixels. Array values: <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ grid: [ 20, 10 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 20, 10 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handle\" class=\"api-item\">\n<h3>handle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Restricts sort start click to the specified element.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the handle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ handle: </code><code class=\"string\">\".handle\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code><code class=\"plain\">, </code><code class=\"string\">\".handle\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"original\"</code>\n</div>\n<div>Allows for a helper element to be used for dragging display.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: If set to <code>\"clone\"</code>, then the element will be cloned and the clone will be dragged.</li>\n<li>\n<strong>Function</strong>: A function that will return a DOMElement to use while dragging. The function receives the event and the element being sorted.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ helper: </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-items\" class=\"api-item\">\n<h3>items<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"&gt; *\"</code>\n</div>\n<div>Specifies which items inside the element should be sortable.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the items option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ items: </code><code class=\"string\">\"&gt; li\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the items option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">items = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code><code class=\"plain\">, </code><code class=\"string\">\"&gt; li\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-opacity\" class=\"api-item\">\n<h3>opacity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Defines the opacity of the helper while sorting. From <code>0.01</code> to <code>1</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the opacity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ opacity: 0.5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the opacity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">opacity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code><code class=\"plain\">, 0.5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-placeholder\" class=\"api-item\">\n<h3>placeholder<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A class name that gets applied to the otherwise white space.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the placeholder option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ placeholder: </code><code class=\"string\">\"sortable-placeholder\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the placeholder option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">placeholder = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"placeholder\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"placeholder\"</code><code class=\"plain\">, </code><code class=\"string\">\"sortable-placeholder\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revert\" class=\"api-item\">\n<h3>revert<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the sortable items should revert to their new positions using a smooth animation.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the items will animate with the default duration.</li>\n<li>\n<strong>Number</strong>: The duration for the animation, in milliseconds.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the revert option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ revert: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revert option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revert = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scroll\" class=\"api-item\">\n<h3>scroll<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to true, the page scrolls when coming to an edge.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scroll option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scroll: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scroll option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scroll = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSensitivity\" class=\"api-item\">\n<h3>scrollSensitivity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>Defines how near the mouse must be to an edge to start scrolling.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scrollSensitivity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scrollSensitivity: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSensitivity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSensitivity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSpeed\" class=\"api-item\">\n<h3>scrollSpeed<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The speed at which the window should scroll once the mouse pointer gets within the <a href=\"#option-scrollSensitivity\"><code>scrollSensitivity</code></a> distance.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scrollSpeed option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scrollSpeed: 40 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSpeed option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSpeed = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code><code class=\"plain\">, 40 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"intersect\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether the item being moved is hovering over another item. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"intersect\"</code>: The item overlaps the other item by at least 50%.</li>\n\t\t\t\t\t<li>\n<code>\"pointer\"</code>: The mouse pointer overlaps the other item.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ tolerance: </code><code class=\"string\">\"pointer\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"pointer\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1000</code>\n</div>\n<div>Z-index for element/helper while being sorted.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ zIndex: 9999 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 9999 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-cancel\">\n<div class=\"api-item first-item\">\n<h3>cancel()</h3>\n<div>Cancels a change in the current sortable and reverts it to the state prior to when the current sort was started. Useful in the stop and receive callback functions.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the cancel method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the sortable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the sortable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the sortable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current sortable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the sortable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the sortable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refresh the sortable items. Triggers the reloading of all sortable items, causing new items to be recognized.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refreshPositions\">\n<div class=\"api-item\">\n<h3>refreshPositions()</h3>\n<div>Refresh the cached positions of the sortable items. Calling this method refreshes the cached item positions of all sortables.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refreshPositions method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"refreshPositions\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-serialize\">\n<div class=\"api-item\">\n<h3>serialize( options ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#String\">String</a></span>\n</h3>\n<div>\n\t\t\t\t<p>Serializes the sortable's item <code>id</code>s into a form/ajax submittable string. Calling this method produces a hash that can be appended to any url to easily submit a new item order back to the server.</p>\n\n\t\t\t\t<p>It works by default by looking at the <code>id</code> of each item in the format <code>\"setname_number\"</code>, and it spits out a hash like <code>\"setname[]=number&amp;setname[]=number\"</code>.</p>\n\n\t\t\t\t<p><em>Note: If serialize returns an empty string, make sure the <code>id</code> attributes include an underscore.  They must be in the form: <code>\"set_number\"</code> For example, a 3 element list with <code>id</code> attributes <code>\"foo_1\"</code>, <code>\"foo_5\"</code>, <code>\"foo_2\"</code> will serialize to <code>\"foo[]=1&amp;foo[]=5&amp;foo[]=2\"</code>. You can use an underscore, equal sign or hyphen to separate the set and number. For example <code>\"foo=1\"</code>, <code>\"foo-1\"</code>, and <code>\"foo_1\"</code> all serialize to <code>\"foo[]=1\"</code>.</em></p>\n\t\t\t</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Options to customize the serialization.</div>\n<ul>\n<li>\n<div>\n<strong>key</strong> (default: <code>the part of the attribute in front of the separator</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Replaces <code>part1[]</code> with the specified value.</div>\n</li>\n<li>\n<div>\n<strong>attribute</strong> (default: <code>\"id\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the attribute to use for the values.</div>\n</li>\n<li>\n<div>\n<strong>expression</strong> (default: <code>/(.+)[-=_](.+)/</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#RegExp\">RegExp</a>\n</div>\n<div>A regular expression used to split the attribute value into key and value parts.</div>\n</li>\n</ul>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the serialize method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">sorted = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"serialize\"</code><code class=\"plain\">, { key: </code><code class=\"string\">\"sort\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-toArray\">\n<div class=\"api-item\">\n<h3>toArray() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Array\">Array</a></span>\n</h3>\n<div>Serializes the sortable's item id's into an array of string.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the toArray method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">sortedIDs = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"toArray\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the sortable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>sortactivate</code></span>\n</h3>\n<div>This event is triggered when using connected lists, every connected list on drag start receives it.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeStop\" class=\"api-item\">\n<h3>beforeStop( event, ui )<span class=\"returns\">Type: <code>sortbeforestop</code></span>\n</h3>\n<div>This event is triggered when sorting stops, but when the placeholder/helper is still available.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the beforeStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortbeforestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortbeforestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-change\" class=\"api-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>sortchange</code></span>\n</h3>\n<div>This event is triggered during sorting, but only when the DOM position has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>sortcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the sortable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-deactivate\" class=\"api-item\">\n<h3>deactivate( event, ui )<span class=\"returns\">Type: <code>sortdeactivate</code></span>\n</h3>\n<div>This event is triggered when sorting was stopped, is propagated to all possible connected lists.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the deactivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">deactivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortdeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortdeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-out\" class=\"api-item\">\n<h3>out( event, ui )<span class=\"returns\">Type: <code>sortout</code></span>\n</h3>\n<div>This event is triggered when a sortable item is moved away from a connected list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the out callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">out: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortout event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortout\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-over\" class=\"api-item\">\n<h3>over( event, ui )<span class=\"returns\">Type: <code>sortover</code></span>\n</h3>\n<div>This event is triggered when a sortable item is moved into a connected list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the over callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">over: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortover event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortover\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-receive\" class=\"api-item\">\n<h3>receive( event, ui )<span class=\"returns\">Type: <code>sortreceive</code></span>\n</h3>\n<div>This event is triggered when a connected sortable list has received an item from another list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the receive callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">receive: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortreceive event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortreceive\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-remove\" class=\"api-item\">\n<h3>remove( event, ui )<span class=\"returns\">Type: <code>sortremove</code></span>\n</h3>\n<div>This event is triggered when a sortable item has been dragged out from the list and into another.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the remove callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">remove: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortremove event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortremove\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-sort\" class=\"api-item\">\n<h3>sort( event, ui )<span class=\"returns\">Type: <code>sort</code></span>\n</h3>\n<div>This event is triggered during sorting.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the sort callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">sort: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sort event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sort\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>sortstart</code></span>\n</h3>\n<div>This event is triggered when sorting starts.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>sortstop</code></span>\n</h3>\n<div>This event is triggered when sorting has stopped.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-update\" class=\"api-item\">\n<h3>update( event, ui )<span class=\"returns\">Type: <code>sortupdate</code></span>\n</h3>\n<div>This event is triggered when the user stopped sorting and the DOM position has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the update callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">update: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortupdate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortupdate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Sortable plugin makes selected elements sortable by dragging with the mouse.</p>\n\t\t<p><em>Note: In order to sort table rows, the <code>tbody</code> must be made sortable, not the <code>table</code>.</em></p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Sortable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;sortable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"sortable\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;$(\"#sortable\").sortable();&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/spinner.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI spinner documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Spinner Widget\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tEnhance a text input for entering numeric values, with up/down buttons and arrow key handling.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-culture\">culture</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-incremental\">incremental</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-min\">min</a></div>\n<div><a href=\"#option-numberFormat\">numberFormat</a></div>\n<div><a href=\"#option-page\">page</a></div>\n<div><a href=\"#option-step\">step</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-pageDown\">pageDown</a></div>\n<div><a href=\"#method-pageUp\">pageUp</a></div>\n<div><a href=\"#method-stepDown\">stepDown</a></div>\n<div><a href=\"#method-stepUp\">stepUp</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-spin\">spin</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-change\">change</a></div>\n</div></section><article id=\"spinner1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Spinner Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tEnhance a text input for entering numeric values, with up/down buttons and arrow key handling.\n\t</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-culture\" class=\"api-item first-item\">\n<h3>culture<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Sets the culture to use for parsing and formatting the value. If <code>null</code>, the currently set culture in <code>Globalize</code> is used, see <a href=\"https://github.com/jquery/globalize\">Globalize docs</a> for available cultures. Only relevant if the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> option is set. Requires <a href=\"https://github.com/jquery/globalize\">Globalize</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the culture option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ culture: </code><code class=\"string\">\"fr\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the culture option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">culture = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"culture\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"culture\"</code><code class=\"plain\">, </code><code class=\"string\">\"fr\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the spinner if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ down: \"ui-icon-triangle-1-s\", up: \"ui-icon-triangle-1-n\" }</code>\n</div>\n<div>\n\t\t\t\tIcons to use for buttons, matching an icon defined by the jQuery UI CSS Framework.\n\t\t\t\t<ul>\n\t\t\t\t\t<li>up (string, default: \"ui-icon-triangle-1-n\")</li>\n\t\t\t\t\t<li>down (string, default: \"ui-icon-triangle-1-s\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ icons: { down: </code><code class=\"string\">\"custom-down-icon\"</code><code class=\"plain\">, up: </code><code class=\"string\">\"custom-up-icon\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { down: </code><code class=\"string\">\"custom-down-icon\"</code><code class=\"plain\">, up: </code><code class=\"string\">\"custom-up-icon\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-incremental\" class=\"api-item\">\n<h3>incremental<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Controls the number of steps taken when holding down a spin button.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the stepping delta will increase when spun incessantly. When set to <code>false</code>, all steps are equal (as defined by the <a href=\"#option-step\"><code>step</code></a> option).</li>\n<li>\n<strong>Function</strong>: Receives one parameter: the number of spins that have occurred. Must return the number of steps that should occur for the current spin.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the incremental option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ incremental: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the incremental option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">incremental = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"incremental\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"incremental\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum allowed value. The element's <code>max</code> attribute is used if it exists and the option is not explicitly set. If <code>null</code>, there is no maximum enforced.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The maximum value.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>max</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options; otherwise it will fall back to the native <code>parseFloat()</code> method.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ max: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-min\" class=\"api-item\">\n<h3>min<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The minimum allowed value. The element's <code>min</code> attribute is used if it exists and the option is not explicitly set. If <code>null</code>, there is no minimum enforced.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The minimum value.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>min</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options; otherwise it will fall back to the native <code>parseFloat()</code> method.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the min option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ min: 0 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the min option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">min = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-numberFormat\" class=\"api-item\">\n<h3>numberFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Format of numbers passed to  <a href=\"https://github.com/jquery/globalize\"><code>Globalize</code></a>, if available. Most common are <code>\"n\"</code> for a decimal number and <code>\"C\"</code> for a currency value. Also see the <a href=\"#option-culture\"><code>culture</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the numberFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ numberFormat: </code><code class=\"string\">\"n\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the numberFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">numberFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"n\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-page\" class=\"api-item\">\n<h3>page<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The number of steps to take when paging via the <a href=\"#method-pageUp\"><code>pageUp</code></a>/<a href=\"#method-pageDown\"><code>pageDown</code></a> methods.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the page option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ page: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the page option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">page = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"page\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"page\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-step\" class=\"api-item\">\n<h3>step<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The size of the step to take when spinning via buttons or via the <a href=\"#method-stepUp\"><code>stepUp()</code></a>/<a href=\"#method-stepDown\"><code>stepDown()</code></a> methods. The element's <code>step</code> attribute is used if it exists and the option is not explicitly set.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The size of the step.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>step</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options, otherwise it will fall back to the native <code>parseFloat</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the step option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ step: 2 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the step option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">step = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code><code class=\"plain\">, 2 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the spinner functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the spinner.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the spinner.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current spinner options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the spinner option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the spinner.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-pageDown\">\n<div class=\"api-item\">\n<h3>pageDown(  [pages ] )</h3>\n<div>\n\t\t\t\tDecrements the value by the specified number of pages, as defined by the <a href=\"#option-page\"><code>page</code></a> option. Without the parameter, a single page is decremented.\n\t\t\t</div>\n<ul><li>\n<div><strong>pages</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of pages to decrement, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the pageDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"pageDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-pageUp\">\n<div class=\"api-item\">\n<h3>pageUp(  [pages ] )</h3>\n<div>\n\t\t\t\tIncrements the value by the specified number of pages, as defined by the <a href=\"#option-page\"><code>page</code></a> option. Without the parameter, a single page is incremented.\n\t\t\t</div>\n<ul><li>\n<div><strong>pages</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of pages to increment, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the pageUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"pageUp\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-stepDown\">\n<div class=\"api-item\">\n<h3>stepDown(  [steps ] )</h3>\n<div>\n\t\t\t\tDecrements the value by the specified number of steps. Without the parameter, a single step is decremented.\n\t\t\t\t<p>If the resulting value is above the max, below the min, or reuslts in a step mismatch, the value will be adjusted to the closest valid value.</p>\n\t\t\t</div>\n<ul><li>\n<div><strong>steps</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of steps to decrement, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the stepDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"stepDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-stepUp\">\n<div class=\"api-item\">\n<h3>stepUp(  [steps ] )</h3>\n<div>\n\t\t\t\tIncrements the value by the specified number of steps. Without the parameter, a single step is incremented.\n\t\t\t\t<p>If the resulting value is above the max, below the min, or reuslts in a step mismatch, the value will be adjusted to the closest valid value.</p>\n\t\t\t</div>\n<ul><li>\n<div><strong>steps</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of steps to increment, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the stepUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"stepUp\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Gets the current value as a number. The value is parsed based on the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div></div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The value to set. If passed as a string, the value is parsed based on the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the generated wrapper.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>spinchange</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when the value of the spinner has changed and the input is no longer focused.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>spincreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the spinner is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spincreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spincreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-spin\" class=\"api-item\">\n<h3>spin( event, ui )<span class=\"returns\">Type: <code>spin</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered during increment/decrement (to determine direction of spin compare current value with <code>ui.value</code>).\n\t\t\t\t<p>Can be canceled, preventing the value from being updated.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The new value to be set, unless the event is cancelled.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the spin callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">spin: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spin event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spin\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>spinstart</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered before a spin. Can be canceled, preventing the spin from occurring.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>spinstop</code></span>\n</h3>\n<div>Triggered after a spin.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Spinner, or number stepper, widget is perfect for handling all kinds of numeric input. It allow users to type a value directly or modify an existing value by spinning with the keyboard, mouse or scrollwheel. When combined with Globalize, you can even spin currencies and dates in a variety of locales.</p>\n\n\t\t<p>Spinner wraps a text input, adds two buttons to increment and decrement the current value, along with handling key events for the same purpose. It delegates to <a href=\"https://github.com/jquery/globalize\">Globalize</a> for number formatting and parsing.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<ul>\n\t\t\t<li>UP: Increment the value by one step.</li>\n\t\t\t<li>DOWN: Decrement the value by one step.</li>\n\t\t\t<li>PAGE UP: Increment the value by one page.</li>\n\t\t\t<li>PAGE DOWN: Decrement the value by one page.</li>\n\t\t</ul>\n\n\t\t<p>Focus stays in the text field, even after using the mouse to click one of the spin buttons.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Plain number spinner</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;spinner demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"spinner\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#spinner\" ).spinner();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tabs.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI tabs documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Tabs Widget\",\n\t\t\"excerpt\":\n\t\t\t\"A single content area with multiple panels, each associated with a header in a list.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-active\">active</a></div>\n<div><a href=\"#option-collapsible\">collapsible</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-event\">event</a></div>\n<div><a href=\"#option-heightStyle\">heightStyle</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-show\">show</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-load\">load</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-beforeActivate\">beforeActivate</a></div>\n<div><a href=\"#event-beforeLoad\">beforeLoad</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-load\">load</a></div>\n</div></section><article id=\"tabs1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Tabs Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>A single content area with multiple panels, each associated with a header in a list.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-active\" class=\"api-item first-item\">\n<h3>active<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>\n\t\t\t\tWhich panel is currently open.\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Setting <code>active</code> to <code>false</code> will collapse all panels. This requires the <a href=\"#option-collapsible\"><code>collapsible</code></a> option to be <code>true</code>.</li>\n<li>\n<strong>Integer</strong>: The zero-based index of the panel that is active (open). A negative value selects panels going backward from the last panel.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the active option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ active: 1 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the active option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">active = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-collapsible\" class=\"api-item\">\n<h3>collapsible<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When set to <code>true</code>, the active panel can be closed.</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the collapsible option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ collapsible: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the collapsible option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">collapsible = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Which tabs are disabled.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Enable or disable all tabs.</li>\n<li>\n<strong>Array</strong>: An array containing the zero-based indexes of the tabs that should be disabled, e.g., <code>[ 0, 2 ]</code> would disable the first and third tab.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ disabled: [ 0, 2 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, [ 0, 2 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-event\" class=\"api-item\">\n<h3>event<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"click\"</code>\n</div>\n<div>The type of event that the tabs should react to in order to activate the tab. To activate on hover, use <code>\"mouseover\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the event option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ event: </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the event option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">event = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code><code class=\"plain\">, </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-heightStyle\" class=\"api-item\">\n<h3>heightStyle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"content\"</code>\n</div>\n<div>\n\t\t\t\tControls the height of the tabs widget and each panel. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"auto\"</code>: All panels will be set to the height of the tallest panel.</li>\n\t\t\t\t\t<li>\n<code>\"fill\"</code>: Expand to the available height based on the tabs' parent height.</li>\n\t\t\t\t\t<li>\n<code>\"content\"</code>: Each panel will be only as tall as its content.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the heightStyle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ heightStyle: </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the heightStyle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">heightStyle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code><code class=\"plain\">, </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the panel.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the panel will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the panel will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe panel will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe panel will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the panel.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the panel will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the panel will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe panel will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe panel will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the tabs functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>Disables all tabs.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>disable( index )</h3>\n<div>\n\t\t\t\t\tDisables a tab. The selected tab cannot be disabled. To disable more than one tab at once, set the <a href=\"#option-disabled\"><code>disabled</code></a> option: <code>$( \"#tabs\" ).tabs( \"option\", \"disabled\", [ 1, 2, 3 ] )</code>.\n\t\t\t\t</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to disable.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"disable\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>Enables all tabs.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>enable( index )</h3>\n<div>Enables a tab. To enable more than one tab at once reset the disabled property like: <code>$( \"#example\" ).tabs( \"option\", \"disabled\", [] );</code>.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to enable.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"enable\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-load\">\n<div class=\"api-item\">\n<h3>load( index )</h3>\n<div>Loads the panel content of a remote tab.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to load.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the load method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"load\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current tabs options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the tabs option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the tabs.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Process any tabs that were added or removed directly in the DOM and recompute the height of the tab panels. Results depend on the content and the <a href=\"#option-heightStyle\"><code>heightStyle</code></a> option.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the tabs container.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>tabsactivate</code></span>\n</h3>\n<div>Triggered after a tab has been activated (after animation completes). If the tabs were previously collapsed, <code>ui.oldTab</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the tabs are collapsing, <code>ui.newTab</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just activated.</div>\n</li>\n<li>\n<div><strong>oldTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeActivate\" class=\"api-item\">\n<h3>beforeActivate( event, ui )<span class=\"returns\">Type: <code>tabsbeforeactivate</code></span>\n</h3>\n<div>Triggered directly after a tab is activated. Can be canceled to prevent the tab from activating. If the tabs are currently collapsed, <code>ui.oldTab</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the tabs are collapsing, <code>ui.newTab</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is about to be deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the beforeActivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeActivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsbeforeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsbeforeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeLoad\" class=\"api-item\">\n<h3>beforeLoad( event, ui )<span class=\"returns\">Type: <code>tabsbeforeload</code></span>\n</h3>\n<div>Triggered when a remote tab is about to be loaded, after the <a href=\"#event-beforeActivate\"><code>beforeActivate</code></a> event. Can be canceled to prevent the tab panel from loading content; though the panel will still be activated. This event is triggered just before the Ajax request is made, so modifications can be made to <code>ui.jqXHR</code> and <code>ui.ajaxSettings</code>.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is being loaded.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel which will be populated by the Ajax response.</div>\n</li>\n<li>\n<div><strong>jqXHR</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jqXHR\">jqXHR</a>\n</div>\n<div>The <code>jqXHR</code> object that is requesting the content.</div>\n</li>\n<li>\n<div><strong>ajaxSettings</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings that will be used by <a href=\"//api.jquery.com/jQuery.ajax\"><code>jQuery.ajax</code></a> to request the content.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the beforeLoad callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeLoad: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsbeforeload event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsbeforeload\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>tabscreate</code></span>\n</h3>\n<div>Triggered when the tabs are created. If the tabs are collapsed, <code>ui.tab</code> and <code>ui.panel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active tab.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active panel.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabscreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabscreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-load\" class=\"api-item\">\n<h3>load( event, ui )<span class=\"returns\">Type: <code>tabsload</code></span>\n</h3>\n<div>Triggered after a remote tab has been loaded.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just loaded.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel which was just populated by the Ajax response.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the load callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">load: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsload event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsload\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Tabs are generally used to break content into multiple sections that can be swapped to save space, much like an accordion.</p>\n\n\t\t<p>The content for each tab panel can be defined in-page or can be loaded via Ajax; both are handled automatically based on the <code>href</code> of the anchor associated with the tab. By default tabs are activated on click, but the events can be changed to hover via the <a href=\"#option-event\"><code>event</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When focus is on a tab, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/LEFT: Move focus to the previous tab. If on first tab, moves focus to last tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>DOWN/RIGHT: Move focus to the next tab. If on last tab, moves focus to first tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>HOME: Move focus to the first tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>END: Move focus to the last tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>SPACE: Activate panel associated with focused tab.</li>\n\t\t\t<li>ENTER: Activate or toggle panel associated with focused tab.</li>\n\t\t\t<li>ALT+PAGE UP: Move focus to the previous tab and immediately activate.</li>\n\t\t\t<li>ALT+PAGE DOWN: Move focus to the next tab and immediately activate.</li>\n\t\t</ul>\n\n\t\t<p>When focus is in a panel, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>CTRL+UP: Move focus to associated tab.</li>\n\t\t\t<li>ALT+PAGE UP: Move focus to the previous tab and immediately activate.</li>\n\t\t\t<li>ALT+PAGE DOWN: Move focus to the next tab and immediately activate.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Tabs</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;tabs demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"tabs\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-1\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;One&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-2\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;Two&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-3\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;Three&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-1\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;First tab is active by default:&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">pre</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">code</code><code class=\"plain\">&gt;$( \"#tabs\" ).tabs(); &lt;/</code><code class=\"keyword\">code</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">pre</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-2\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-3\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\">&nbsp;</div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#tabs\" ).tabs();</code></div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\">&nbsp;</div><div class=\"line number37 index36 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tooltip.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI tooltip documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Tooltip Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Customizable, themeable tooltips, replacing native tooltips.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-content\">content</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-items\">items</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-show\">show</a></div>\n<div><a href=\"#option-tooltipClass\">tooltipClass</a></div>\n<div><a href=\"#option-track\">track</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-open\">open</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-close\">close</a></div>\n</div></section><article id=\"tooltip1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Tooltip Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Customizable, themeable tooltips, replacing native tooltips.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-content\" class=\"api-item first-item\">\n<h3>content<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>() or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>function returning the title attribute</code>\n</div>\n<div>\n\t\t\t\t<p>The content of the tooltip.</p>\n\n\t\t\t\t<p><em>When changing this option, you likely need to also change the <a href=\"#option-items\"><code>items</code></a> option.</em></p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Function</strong>: A callback which can either return the content directly, or call the first argument, passing in the content, e.g., for Ajax content.</li>\n<li>\n<strong>String</strong>: A string of HTML to use for the tooltip content.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the content option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ content: </code><code class=\"string\">\"Awesome title!\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the content option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">content = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"content\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"content\"</code><code class=\"plain\">, </code><code class=\"string\">\"Awesome title!\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the tooltip if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the tooltip.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the tooltip will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the tooltip will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe tooltip will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe tooltip will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-items\" class=\"api-item\">\n<h3>items<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[title]</code>\n</div>\n<div>\n\t\t\t\t<p>A selector indicating which items should show tooltips. Customize if you're using something other then the title attribute for the tooltip content, or if you need a different selector for event delegation.</p>\n\n\t\t\t\t<p><em>When changing this option, you likely need to also change the <a href=\"#option-content\"><code>content</code></a> option.</em></p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the items option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ items: </code><code class=\"string\">\"img[alt]\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the items option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">items = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code><code class=\"plain\">, </code><code class=\"string\">\"img[alt]\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top+15\", at: \"left bottom\", collision: \"flipfit\" }</code>\n</div>\n<div>\n\t\t\t\t<p>Configuration for the Position utility. The <code>of</code> property defaults to the target element, but can also be overriden.</p>\n\n\t\t\t\t<p><em>Note: In 1.9.0, the default value was <code>{ my: \"left+15 center\", at: \"right center\", collision: \"flipfit\" }</code>, but this was changed to more closely match native tooltip positioning.</em></p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ position: { my: </code><code class=\"string\">\"left+15 center\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right center\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left+15 center\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right center\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the tooltip.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the tooltip will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the tooltip will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe tooltip will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe tooltip will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tooltipClass\" class=\"api-item\">\n<h3>tooltipClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>\n\t\t\t\tA class to add to the widget, can be used to display various tooltip types, like warnings or errors.\n\t\t\t\t<p>This may get replaced by the <a href=\"http://bugs.jqueryui.com/ticket/7053\">classes option</a>.</p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the tooltipClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ tooltipClass: </code><code class=\"string\">\"custom-tooltip-styling\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tooltipClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tooltipClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tooltipClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tooltipClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"custom-tooltip-styling\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-track\" class=\"api-item\">\n<h3>track<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\tWhether the tooltip should track (follow) the mouse.\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the track option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ track: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the track option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">track = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"track\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"track\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>\n\t\t\t\tCloses a tooltip. This is only intended to be called for non-delegated tooltips.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the tooltip functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the tooltip.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the tooltip.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-open\">\n<div class=\"api-item\">\n<h3>open()</h3>\n<div>\n\t\t\t\tProgrammatically open a tooltip. This is only intended to be called for non-delegated tooltips.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the open method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"open\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current tooltip options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the tooltip option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the tooltip.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the original element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-close\" class=\"api-item first-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>tooltipclose</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a tooltip is closed, triggered on <code>focusout</code> or <code>mouseleave</code>.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>tooltip</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The generated tooltip element.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>tooltipcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the tooltip is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>tooltipopen</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a tooltip is shown, triggered on <code>focusin</code> or <code>mouseover</code>.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>tooltip</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The generated tooltip element.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Tooltip replaces native tooltips, making them themable as well as allowing various customizations:</p>\n\n\t\t<ul>\n\t\t\t<li>Display other content than just the title, like inline footnotes or extra content retrieved via Ajax.</li>\n\t\t\t<li>Customize the positioning, e.g., to center the tooltip above elements.</li>\n\t\t\t<li>Add extra styling to customize the appearance, for warning or error fields.</li>\n\t\t</ul>\n\n\t\t<p>A fade animation is used by default to show and hide the tooltip, making the appearance a bit more organic, compared to just toggling the visiblity. This can be customized with the <a href=\"#option-show\"><code>show</code></a> and <a href=\"#option-hide\"><code>hide</code></a> options.</p>\n\n\t\t<p>The <a href=\"#option-items\"><code>items</code></a> and <a href=\"#option-content\"><code>content</code></a> options need to stay in-sync. If you change one of them, you need to change the other.</p>\n\n\t\t<p>In general, disabled elements do not trigger any DOM events. Therefore, it is not possible to properly control tooltips for disabled elements, since we need to listen to events to determine when to show and hide the tooltip. As a result, jQuery UI does not guarantee any level of support for tooltips attached to disabled elements. Unfortunately, this means that if you require tooltips on disabled elements, you may end up with a mixture of native tooltips and jQuery UI tooltips.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Create a tooltip on the document, using event delegation for all elements with a title attribute.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;tooltip demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Anchor description\"</code><code class=\"plain\">&gt;Anchor text&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Input help\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( document ).tooltip();</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"80\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/transfer-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI transfer-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Transfer Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Transfers the outline of an element to another element\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"transfer1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Transfer Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Transfers the outline of an element to another element</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">transfer</h4>\n<ul>\n<li>\n<div><strong>className</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>argumental class name the transfer element will receive.</div>\n</li>\n<li>\n<div><strong>to</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>jQuery selector, the element to transfer to.</div>\n</li>\n</ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>Very useful when trying to visualize interaction between two elements.</p>\n\t\t<p>The transfer element iself has the class <code>ui-effects-transfer</code>, and needs to be styled by you, for example by adding a background or border.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Clicking on the green element transfers to the other.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;transfer demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">div.green {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 80px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: green;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px solid black;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: relative;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">div.red {</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">margin-top: 10px;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 50px;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 30px;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: red;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px solid black;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: relative;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.ui-effects-transfer {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px dotted black;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"green\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"red\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\">&nbsp;</div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\"><code class=\"plain\">$( \"div\" ).click(function() {</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">var i = 1 - $( \"div\" ).index( this );</code></div><div class=\"line number38 index37 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( this ).effect( \"transfer\", { to: $( \"div\" ).eq( i ) }, 1000 );</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">});</code></div><div class=\"line number40 index39 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number41 index40 alt2\">&nbsp;</div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number43 index42 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.de-DE.js",
    "content": "/*\n * Globalize Culture de-DE\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * This file was generated by the Globalize Culture Generator\n * Translation: bugs found in this file need to be fixed in the generator\n */\n\n(function( window, undefined ) {\n\nvar Globalize;\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tGlobalize = require( \"globalize\" );\n} else {\n\t// Global variable\n\tGlobalize = window.Globalize;\n}\n\nGlobalize.addCultureInfo( \"de-DE\", \"default\", {\n\tname: \"de-DE\",\n\tenglishName: \"German (Germany)\",\n\tnativeName: \"Deutsch (Deutschland)\",\n\tlanguage: \"de\",\n\tnumberFormat: {\n\t\t\",\": \".\",\n\t\t\".\": \",\",\n\t\tNaN: \"n. def.\",\n\t\tnegativeInfinity: \"-unendlich\",\n\t\tpositiveInfinity: \"+unendlich\",\n\t\tpercent: {\n\t\t\tpattern: [\"-n%\",\"n%\"],\n\t\t\t\",\": \".\",\n\t\t\t\".\": \",\"\n\t\t},\n\t\tcurrency: {\n\t\t\tpattern: [\"-n $\",\"n $\"],\n\t\t\t\",\": \".\",\n\t\t\t\".\": \",\",\n\t\t\tsymbol: \"€\"\n\t\t}\n\t},\n\tcalendars: {\n\t\tstandard: {\n\t\t\t\"/\": \".\",\n\t\t\tfirstDay: 1,\n\t\t\tdays: {\n\t\t\t\tnames: [\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],\n\t\t\t\tnamesAbbr: [\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],\n\t\t\t\tnamesShort: [\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\",\"\"],\n\t\t\t\tnamesAbbr: [\"Jan\",\"Feb\",\"Mrz\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\",\"\"]\n\t\t\t},\n\t\t\tAM: null,\n\t\t\tPM: null,\n\t\t\teras: [{\"name\":\"n. Chr.\",\"start\":null,\"offset\":0}],\n\t\t\tpatterns: {\n\t\t\t\td: \"dd.MM.yyyy\",\n\t\t\t\tD: \"dddd, d. MMMM yyyy\",\n\t\t\t\tt: \"HH:mm\",\n\t\t\t\tT: \"HH:mm:ss\",\n\t\t\t\tf: \"dddd, d. MMMM yyyy HH:mm\",\n\t\t\t\tF: \"dddd, d. MMMM yyyy HH:mm:ss\",\n\t\t\t\tM: \"dd MMMM\",\n\t\t\t\tY: \"MMMM yyyy\"\n\t\t\t}\n\t\t}\n\t}\n});\n\n}( this ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.ja-JP.js",
    "content": "/*\n * Globalize Culture ja-JP\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * This file was generated by the Globalize Culture Generator\n * Translation: bugs found in this file need to be fixed in the generator\n */\n\n(function( window, undefined ) {\n\nvar Globalize;\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tGlobalize = require( \"globalize\" );\n} else {\n\t// Global variable\n\tGlobalize = window.Globalize;\n}\n\nGlobalize.addCultureInfo( \"ja-JP\", \"default\", {\n\tname: \"ja-JP\",\n\tenglishName: \"Japanese (Japan)\",\n\tnativeName: \"日本語 (日本)\",\n\tlanguage: \"ja\",\n\tnumberFormat: {\n\t\tNaN: \"NaN (非数値)\",\n\t\tnegativeInfinity: \"-∞\",\n\t\tpositiveInfinity: \"+∞\",\n\t\tpercent: {\n\t\t\tpattern: [\"-n%\",\"n%\"]\n\t\t},\n\t\tcurrency: {\n\t\t\tpattern: [\"-$n\",\"$n\"],\n\t\t\tdecimals: 0,\n\t\t\tsymbol: \"¥\"\n\t\t}\n\t},\n\tcalendars: {\n\t\tstandard: {\n\t\t\tdays: {\n\t\t\t\tnames: [\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],\n\t\t\t\tnamesAbbr: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],\n\t\t\t\tnamesShort: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\",\"\"],\n\t\t\t\tnamesAbbr: [\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"\"]\n\t\t\t},\n\t\t\tAM: [\"午前\",\"午前\",\"午前\"],\n\t\t\tPM: [\"午後\",\"午後\",\"午後\"],\n\t\t\teras: [{\"name\":\"西暦\",\"start\":null,\"offset\":0}],\n\t\t\tpatterns: {\n\t\t\t\td: \"yyyy/MM/dd\",\n\t\t\t\tD: \"yyyy'年'M'月'd'日'\",\n\t\t\t\tt: \"H:mm\",\n\t\t\t\tT: \"H:mm:ss\",\n\t\t\t\tf: \"yyyy'年'M'月'd'日' H:mm\",\n\t\t\t\tF: \"yyyy'年'M'月'd'日' H:mm:ss\",\n\t\t\t\tM: \"M'月'd'日'\",\n\t\t\t\tY: \"yyyy'年'M'月'\"\n\t\t\t}\n\t\t},\n\t\tJapanese: {\n\t\t\tname: \"Japanese\",\n\t\t\tdays: {\n\t\t\t\tnames: [\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],\n\t\t\t\tnamesAbbr: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],\n\t\t\t\tnamesShort: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\",\"\"],\n\t\t\t\tnamesAbbr: [\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"\"]\n\t\t\t},\n\t\t\tAM: [\"午前\",\"午前\",\"午前\"],\n\t\t\tPM: [\"午後\",\"午後\",\"午後\"],\n\t\t\teras: [{\"name\":\"平成\",\"start\":null,\"offset\":1867},{\"name\":\"昭和\",\"start\":-1812153600000,\"offset\":1911},{\"name\":\"大正\",\"start\":-1357603200000,\"offset\":1925},{\"name\":\"明治\",\"start\":60022080000,\"offset\":1988}],\n\t\t\ttwoDigitYearMax: 99,\n\t\t\tpatterns: {\n\t\t\t\td: \"gg y/M/d\",\n\t\t\t\tD: \"gg y'年'M'月'd'日'\",\n\t\t\t\tt: \"H:mm\",\n\t\t\t\tT: \"H:mm:ss\",\n\t\t\t\tf: \"gg y'年'M'月'd'日' H:mm\",\n\t\t\t\tF: \"gg y'年'M'月'd'日' H:mm:ss\",\n\t\t\t\tM: \"M'月'd'日'\",\n\t\t\t\tY: \"gg y'年'M'月'\"\n\t\t\t}\n\t\t}\n\t}\n});\n\n}( this ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.js",
    "content": "/*!\n * Globalize\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n */\n\n(function( window, undefined ) {\n\nvar Globalize,\n\t// private variables\n\tregexHex,\n\tregexInfinity,\n\tregexParseFloat,\n\tregexTrim,\n\t// private JavaScript utility functions\n\tarrayIndexOf,\n\tendsWith,\n\textend,\n\tisArray,\n\tisFunction,\n\tisObject,\n\tstartsWith,\n\ttrim,\n\ttruncate,\n\tzeroPad,\n\t// private Globalization utility functions\n\tappendPreOrPostMatch,\n\texpandFormat,\n\tformatDate,\n\tformatNumber,\n\tgetTokenRegExp,\n\tgetEra,\n\tgetEraYear,\n\tparseExact,\n\tparseNegativePattern;\n\n// Global variable (Globalize) or CommonJS module (globalize)\nGlobalize = function( cultureSelector ) {\n\treturn new Globalize.prototype.init( cultureSelector );\n};\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tmodule.exports = Globalize;\n} else {\n\t// Export as global variable\n\twindow.Globalize = Globalize;\n}\n\nGlobalize.cultures = {};\n\nGlobalize.prototype = {\n\tconstructor: Globalize,\n\tinit: function( cultureSelector ) {\n\t\tthis.cultures = Globalize.cultures;\n\t\tthis.cultureSelector = cultureSelector;\n\n\t\treturn this;\n\t}\n};\nGlobalize.prototype.init.prototype = Globalize.prototype;\n\n// 1.\t When defining a culture, all fields are required except the ones stated as optional.\n// 2.\t Each culture should have a \".calendars\" object with at least one calendar named \"standard\"\n//\t\t which serves as the default calendar in use by that culture.\n// 3.\t Each culture should have a \".calendar\" object which is the current calendar being used,\n//\t\t it may be dynamically changed at any time to one of the calendars in \".calendars\".\nGlobalize.cultures[ \"default\" ] = {\n\t// A unique name for the culture in the form <language code>-<country/region code>\n\tname: \"en\",\n\t// the name of the culture in the english language\n\tenglishName: \"English\",\n\t// the name of the culture in its own language\n\tnativeName: \"English\",\n\t// whether the culture uses right-to-left text\n\tisRTL: false,\n\t// \"language\" is used for so-called \"specific\" cultures.\n\t// For example, the culture \"es-CL\" means \"Spanish, in Chili\".\n\t// It represents the Spanish-speaking culture as it is in Chili,\n\t// which might have different formatting rules or even translations\n\t// than Spanish in Spain. A \"neutral\" culture is one that is not\n\t// specific to a region. For example, the culture \"es\" is the generic\n\t// Spanish culture, which may be a more generalized version of the language\n\t// that may or may not be what a specific culture expects.\n\t// For a specific culture like \"es-CL\", the \"language\" field refers to the\n\t// neutral, generic culture information for the language it is using.\n\t// This is not always a simple matter of the string before the dash.\n\t// For example, the \"zh-Hans\" culture is netural (Simplified Chinese).\n\t// And the \"zh-SG\" culture is Simplified Chinese in Singapore, whose lanugage\n\t// field is \"zh-CHS\", not \"zh\".\n\t// This field should be used to navigate from a specific culture to it's\n\t// more general, neutral culture. If a culture is already as general as it\n\t// can get, the language may refer to itself.\n\tlanguage: \"en\",\n\t// numberFormat defines general number formatting rules, like the digits in\n\t// each grouping, the group separator, and how negative numbers are displayed.\n\tnumberFormat: {\n\t\t// [negativePattern]\n\t\t// Note, numberFormat.pattern has no \"positivePattern\" unlike percent and currency,\n\t\t// but is still defined as an array for consistency with them.\n\t\t//   negativePattern: one of \"(n)|-n|- n|n-|n -\"\n\t\tpattern: [ \"-n\" ],\n\t\t// number of decimal places normally shown\n\t\tdecimals: 2,\n\t\t// string that separates number groups, as in 1,000,000\n\t\t\",\": \",\",\n\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\".\": \".\",\n\t\t// array of numbers indicating the size of each number group.\n\t\t// TODO: more detailed description and example\n\t\tgroupSizes: [ 3 ],\n\t\t// symbol used for positive numbers\n\t\t\"+\": \"+\",\n\t\t// symbol used for negative numbers\n\t\t\"-\": \"-\",\n\t\t// symbol used for NaN (Not-A-Number)\n\t\tNaN: \"NaN\",\n\t\t// symbol used for Negative Infinity\n\t\tnegativeInfinity: \"-Infinity\",\n\t\t// symbol used for Positive Infinity\n\t\tpositiveInfinity: \"Infinity\",\n\t\tpercent: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t//   negativePattern: one of \"-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %\"\n\t\t\t//   positivePattern: one of \"n %|n%|%n|% n\"\n\t\t\tpattern: [ \"-n %\", \"n %\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent a percentage\n\t\t\tsymbol: \"%\"\n\t\t},\n\t\tcurrency: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t//   negativePattern: one of \"($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)\"\n\t\t\t//   positivePattern: one of \"$n|n$|$ n|n $\"\n\t\t\tpattern: [ \"($n)\", \"$n\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent currency\n\t\t\tsymbol: \"$\"\n\t\t}\n\t},\n\t// calendars defines all the possible calendars used by this culture.\n\t// There should be at least one defined with name \"standard\", and is the default\n\t// calendar used by the culture.\n\t// A calendar contains information about how dates are formatted, information about\n\t// the calendar's eras, a standard set of the date formats,\n\t// translations for day and month names, and if the calendar is not based on the Gregorian\n\t// calendar, conversion functions to and from the Gregorian calendar.\n\tcalendars: {\n\t\tstandard: {\n\t\t\t// name that identifies the type of calendar this is\n\t\t\tname: \"Gregorian_USEnglish\",\n\t\t\t// separator of parts of a date (e.g. \"/\" in 11/05/1955)\n\t\t\t\"/\": \"/\",\n\t\t\t// separator of parts of a time (e.g. \":\" in 05:44 PM)\n\t\t\t\":\": \":\",\n\t\t\t// the first day of the week (0 = Sunday, 1 = Monday, etc)\n\t\t\tfirstDay: 0,\n\t\t\tdays: {\n\t\t\t\t// full day names\n\t\t\t\tnames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t\t\t\t// abbreviated day names\n\t\t\t\tnamesAbbr: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t\t\t\t// shortest day names\n\t\t\t\tnamesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\t// full month names (13 months for lunar calendards -- 13th month should be \"\" if not lunar)\n\t\t\t\tnames: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\", \"\" ],\n\t\t\t\t// abbreviated month names\n\t\t\t\tnamesAbbr: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"\" ]\n\t\t\t},\n\t\t\t// AM and PM designators in one of these forms:\n\t\t\t// The usual view, and the upper and lower case versions\n\t\t\t//   [ standard, lowercase, uppercase ]\n\t\t\t// The culture does not use AM or PM (likely all standard date formats use 24 hour time)\n\t\t\t//   null\n\t\t\tAM: [ \"AM\", \"am\", \"AM\" ],\n\t\t\tPM: [ \"PM\", \"pm\", \"PM\" ],\n\t\t\teras: [\n\t\t\t\t// eras in reverse chronological order.\n\t\t\t\t// name: the name of the era in this culture (e.g. A.D., C.E.)\n\t\t\t\t// start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era.\n\t\t\t\t// offset: offset in years from gregorian calendar\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"A.D.\",\n\t\t\t\t\t\"start\": null,\n\t\t\t\t\t\"offset\": 0\n\t\t\t\t}\n\t\t\t],\n\t\t\t// when a two digit year is given, it will never be parsed as a four digit\n\t\t\t// year greater than this year (in the appropriate era for the culture)\n\t\t\t// Set it as a full year (e.g. 2029) or use an offset format starting from\n\t\t\t// the current year: \"+19\" would correspond to 2029 if the current year 2010.\n\t\t\ttwoDigitYearMax: 2029,\n\t\t\t// set of predefined date and time patterns used by the culture\n\t\t\t// these represent the format someone in this culture would expect\n\t\t\t// to see given the portions of the date that are shown.\n\t\t\tpatterns: {\n\t\t\t\t// short date pattern\n\t\t\t\td: \"M/d/yyyy\",\n\t\t\t\t// long date pattern\n\t\t\t\tD: \"dddd, MMMM dd, yyyy\",\n\t\t\t\t// short time pattern\n\t\t\t\tt: \"h:mm tt\",\n\t\t\t\t// long time pattern\n\t\t\t\tT: \"h:mm:ss tt\",\n\t\t\t\t// long date, short time pattern\n\t\t\t\tf: \"dddd, MMMM dd, yyyy h:mm tt\",\n\t\t\t\t// long date, long time pattern\n\t\t\t\tF: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n\t\t\t\t// month/day pattern\n\t\t\t\tM: \"MMMM dd\",\n\t\t\t\t// month/year pattern\n\t\t\t\tY: \"yyyy MMMM\",\n\t\t\t\t// S is a sortable format that does not vary by culture\n\t\t\t\tS: \"yyyy\\u0027-\\u0027MM\\u0027-\\u0027dd\\u0027T\\u0027HH\\u0027:\\u0027mm\\u0027:\\u0027ss\"\n\t\t\t}\n\t\t\t// optional fields for each calendar:\n\t\t\t/*\n\t\t\tmonthsGenitive:\n\t\t\t\tSame as months but used when the day preceeds the month.\n\t\t\t\tOmit if the culture has no genitive distinction in month names.\n\t\t\t\tFor an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx\n\t\t\tconvert:\n\t\t\t\tAllows for the support of non-gregorian based calendars. This convert object is used to\n\t\t\t\tto convert a date to and from a gregorian calendar date to handle parsing and formatting.\n\t\t\t\tThe two functions:\n\t\t\t\t\tfromGregorian( date )\n\t\t\t\t\t\tGiven the date as a parameter, return an array with parts [ year, month, day ]\n\t\t\t\t\t\tcorresponding to the non-gregorian based year, month, and day for the calendar.\n\t\t\t\t\ttoGregorian( year, month, day )\n\t\t\t\t\t\tGiven the non-gregorian year, month, and day, return a new Date() object\n\t\t\t\t\t\tset to the corresponding date in the gregorian calendar.\n\t\t\t*/\n\t\t}\n\t},\n\t// For localized strings\n\tmessages: {}\n};\n\nGlobalize.cultures[ \"default\" ].calendar = Globalize.cultures[ \"default\" ].calendars.standard;\n\nGlobalize.cultures[ \"en\" ] = Globalize.cultures[ \"default\" ];\n\nGlobalize.cultureSelector = \"en\";\n\n//\n// private variables\n//\n\nregexHex = /^0x[a-f0-9]+$/i;\nregexInfinity = /^[+-]?infinity$/i;\nregexParseFloat = /^[+-]?\\d*\\.?\\d*(e[+-]?\\d+)?$/;\nregexTrim = /^\\s+|\\s+$/g;\n\n//\n// private JavaScript utility functions\n//\n\narrayIndexOf = function( array, item ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( item );\n\t}\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[i] === item ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nendsWith = function( value, pattern ) {\n\treturn value.substr( value.length - pattern.length ) === pattern;\n};\n\nextend = function( deep ) {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && isObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nisArray = Array.isArray || function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Array]\";\n};\n\nisFunction = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Function]\"\n}\n\nisObject = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Object]\";\n};\n\nstartsWith = function( value, pattern ) {\n\treturn value.indexOf( pattern ) === 0;\n};\n\ntrim = function( value ) {\n\treturn ( value + \"\" ).replace( regexTrim, \"\" );\n};\n\ntruncate = function( value ) {\n\treturn value | 0;\n};\n\nzeroPad = function( str, count, left ) {\n\tvar l;\n\tfor ( l = str.length; l < count; l += 1 ) {\n\t\tstr = ( left ? (\"0\" + str) : (str + \"0\") );\n\t}\n\treturn str;\n};\n\n//\n// private Globalization utility functions\n//\n\nappendPreOrPostMatch = function( preMatch, strings ) {\n\t// appends pre- and post- token match strings while removing escaped characters.\n\t// Returns a single quote count which is used to determine if the token occurs\n\t// in a string literal.\n\tvar quoteCount = 0,\n\t\tescaped = false;\n\tfor ( var i = 0, il = preMatch.length; i < il; i++ ) {\n\t\tvar c = preMatch.charAt( i );\n\t\tswitch ( c ) {\n\t\t\tcase \"\\'\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\'\" );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tquoteCount++;\n\t\t\t\t}\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t\tcase \"\\\\\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\\\\" );\n\t\t\t\t}\n\t\t\t\tescaped = !escaped;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstrings.push( c );\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn quoteCount;\n};\n\nexpandFormat = function( cal, format ) {\n\t// expands unspecified or single character date formats into the full pattern.\n\tformat = format || \"F\";\n\tvar pattern,\n\t\tpatterns = cal.patterns,\n\t\tlen = format.length;\n\tif ( len === 1 ) {\n\t\tpattern = patterns[ format ];\n\t\tif ( !pattern ) {\n\t\t\tthrow \"Invalid date format string \\'\" + format + \"\\'.\";\n\t\t}\n\t\tformat = pattern;\n\t}\n\telse if ( len === 2 && format.charAt(0) === \"%\" ) {\n\t\t// %X escape format -- intended as a custom format string that is only one character, not a built-in format.\n\t\tformat = format.charAt( 1 );\n\t}\n\treturn format;\n};\n\nformatDate = function( value, format, culture ) {\n\tvar cal = culture.calendar,\n\t\tconvert = cal.convert;\n\n\tif ( !format || !format.length || format === \"i\" ) {\n\t\tvar ret;\n\t\tif ( culture && culture.name.length ) {\n\t\t\tif ( convert ) {\n\t\t\t\t// non-gregorian calendar, so we cannot use built-in toLocaleString()\n\t\t\t\tret = formatDate( value, cal.patterns.F, culture );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar eraDate = new Date( value.getTime() ),\n\t\t\t\t\tera = getEra( value, cal.eras );\n\t\t\t\teraDate.setFullYear( getEraYear(value, cal, era) );\n\t\t\t\tret = eraDate.toLocaleString();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = value.toString();\n\t\t}\n\t\treturn ret;\n\t}\n\n\tvar eras = cal.eras,\n\t\tsortable = format === \"s\";\n\tformat = expandFormat( cal, format );\n\n\t// Start with an empty string\n\tret = [];\n\tvar hour,\n\t\tzeros = [ \"0\", \"00\", \"000\" ],\n\t\tfoundDay,\n\t\tcheckedDay,\n\t\tdayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g,\n\t\tquoteCount = 0,\n\t\ttokenRegExp = getTokenRegExp(),\n\t\tconverted;\n\n\tfunction padZeros( num, c ) {\n\t\tvar r, s = num + \"\";\n\t\tif ( c > 1 && s.length < c ) {\n\t\t\tr = ( zeros[c - 2] + s);\n\t\t\treturn r.substr( r.length - c, c );\n\t\t}\n\t\telse {\n\t\t\tr = s;\n\t\t}\n\t\treturn r;\n\t}\n\n\tfunction hasDay() {\n\t\tif ( foundDay || checkedDay ) {\n\t\t\treturn foundDay;\n\t\t}\n\t\tfoundDay = dayPartRegExp.test( format );\n\t\tcheckedDay = true;\n\t\treturn foundDay;\n\t}\n\n\tfunction getPart( date, part ) {\n\t\tif ( converted ) {\n\t\t\treturn converted[ part ];\n\t\t}\n\t\tswitch ( part ) {\n\t\t\tcase 0: return date.getFullYear();\n\t\t\tcase 1: return date.getMonth();\n\t\t\tcase 2: return date.getDate();\n\t\t}\n\t}\n\n\tif ( !sortable && convert ) {\n\t\tconverted = convert.fromGregorian( value );\n\t}\n\n\tfor ( ; ; ) {\n\t\t// Save the current index\n\t\tvar index = tokenRegExp.lastIndex,\n\t\t\t// Look for the next pattern\n\t\t\tar = tokenRegExp.exec( format );\n\n\t\t// Append the text before the pattern (or the end of the string if not found)\n\t\tvar preMatch = format.slice( index, ar ? ar.index : format.length );\n\t\tquoteCount += appendPreOrPostMatch( preMatch, ret );\n\n\t\tif ( !ar ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// do not replace any matches that occur inside a string literal.\n\t\tif ( quoteCount % 2 ) {\n\t\t\tret.push( ar[0] );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar current = ar[ 0 ],\n\t\t\tclength = current.length;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"ddd\":\n\t\t\t\t//Day of the week, as a three-letter abbreviation\n\t\t\tcase \"dddd\":\n\t\t\t\t// Day of the week, using the full name\n\t\t\t\tvar names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names;\n\t\t\t\tret.push( names[value.getDay()] );\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\t// Day of month, without leading zero for single-digit days\n\t\t\tcase \"dd\":\n\t\t\t\t// Day of month, with leading zero for single-digit days\n\t\t\t\tfoundDay = true;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 2), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"MMM\":\n\t\t\t\t// Month, as a three-letter abbreviation\n\t\t\tcase \"MMMM\":\n\t\t\t\t// Month, using the full name\n\t\t\t\tvar part = getPart( value, 1 );\n\t\t\t\tret.push(\n\t\t\t\t\t( cal.monthsGenitive && hasDay() )\n\t\t\t\t\t?\n\t\t\t\t\tcal.monthsGenitive[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ]\n\t\t\t\t\t:\n\t\t\t\t\tcal.months[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ]\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"M\":\n\t\t\t\t// Month, as digits, with no leading zero for single-digit months\n\t\t\tcase \"MM\":\n\t\t\t\t// Month, as digits, with leading zero for single-digit months\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 1) + 1, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\t// Year, as two digits, but with no leading zero for years less than 10\n\t\t\tcase \"yy\":\n\t\t\t\t// Year, as two digits, with leading zero for years less than 10\n\t\t\tcase \"yyyy\":\n\t\t\t\t// Year represented by four full digits\n\t\t\t\tpart = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable );\n\t\t\t\tif ( clength < 4 ) {\n\t\t\t\t\tpart = part % 100;\n\t\t\t\t}\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( part, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"h\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 12-hour clock\n\t\t\tcase \"hh\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 12-hour clock\n\t\t\t\thour = value.getHours() % 12;\n\t\t\t\tif ( hour === 0 ) hour = 12;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( hour, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"H\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 24-hour clock\n\t\t\tcase \"HH\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 24-hour clock\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getHours(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"m\":\n\t\t\t\t// Minutes with no leading zero for single-digit minutes\n\t\t\tcase \"mm\":\n\t\t\t\t// Minutes with leading zero for single-digit minutes\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMinutes(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"s\":\n\t\t\t\t// Seconds with no leading zero for single-digit seconds\n\t\t\tcase \"ss\":\n\t\t\t\t// Seconds with leading zero for single-digit seconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getSeconds(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"t\":\n\t\t\t\t// One character am/pm indicator (\"a\" or \"p\")\n\t\t\tcase \"tt\":\n\t\t\t\t// Multicharacter am/pm indicator\n\t\t\t\tpart = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : \" \" ) : ( cal.PM ? cal.PM[0] : \" \" );\n\t\t\t\tret.push( clength === 1 ? part.charAt(0) : part );\n\t\t\t\tbreak;\n\t\t\tcase \"f\":\n\t\t\t\t// Deciseconds\n\t\t\tcase \"ff\":\n\t\t\t\t// Centiseconds\n\t\t\tcase \"fff\":\n\t\t\t\t// Milliseconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMilliseconds(), 3 ).substr( 0, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"z\":\n\t\t\t\t// Time zone offset, no leading zero\n\t\t\tcase \"zz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"zzz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), 2 )\n\t\t\t\t\t// Hard coded \":\" separator, rather than using cal.TimeSeparator\n\t\t\t\t\t// Repeated here for consistency, plus \":\" was already assumed in date parsing.\n\t\t\t\t\t+ \":\" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"g\":\n\t\t\tcase \"gg\":\n\t\t\t\tif ( cal.eras ) {\n\t\t\t\t\tret.push(\n\t\t\t\t\t\tcal.eras[ getEra(value, eras) ].name\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\tcase \"/\":\n\t\t\tret.push( cal[\"/\"] );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow \"Invalid date format pattern \\'\" + current + \"\\'.\";\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn ret.join( \"\" );\n};\n\n// formatNumber\n(function() {\n\tvar expandNumber;\n\n\texpandNumber = function( number, precision, formatInfo ) {\n\t\tvar groupSizes = formatInfo.groupSizes,\n\t\t\tcurSize = groupSizes[ 0 ],\n\t\t\tcurGroupIndex = 1,\n\t\t\tfactor = Math.pow( 10, precision ),\n\t\t\trounded = Math.round( number * factor ) / factor;\n\n\t\tif ( !isFinite(rounded) ) {\n\t\t\trounded = number;\n\t\t}\n\t\tnumber = rounded;\n\n\t\tvar numberString = number+\"\",\n\t\t\tright = \"\",\n\t\t\tsplit = numberString.split( /e/i ),\n\t\t\texponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;\n\t\tnumberString = split[ 0 ];\n\t\tsplit = numberString.split( \".\" );\n\t\tnumberString = split[ 0 ];\n\t\tright = split.length > 1 ? split[ 1 ] : \"\";\n\n\t\tvar l;\n\t\tif ( exponent > 0 ) {\n\t\t\tright = zeroPad( right, exponent, false );\n\t\t\tnumberString += right.slice( 0, exponent );\n\t\t\tright = right.substr( exponent );\n\t\t}\n\t\telse if ( exponent < 0 ) {\n\t\t\texponent = -exponent;\n\t\t\tnumberString = zeroPad( numberString, exponent + 1 );\n\t\t\tright = numberString.slice( -exponent, numberString.length ) + right;\n\t\t\tnumberString = numberString.slice( 0, -exponent );\n\t\t}\n\n\t\tif ( precision > 0 ) {\n\t\t\tright = formatInfo[ \".\" ] +\n\t\t\t\t( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) );\n\t\t}\n\t\telse {\n\t\t\tright = \"\";\n\t\t}\n\n\t\tvar stringIndex = numberString.length - 1,\n\t\t\tsep = formatInfo[ \",\" ],\n\t\t\tret = \"\";\n\n\t\twhile ( stringIndex >= 0 ) {\n\t\t\tif ( curSize === 0 || curSize > stringIndex ) {\n\t\t\t\treturn numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );\n\t\t\t}\n\t\t\tret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : \"\" );\n\n\t\t\tstringIndex -= curSize;\n\n\t\t\tif ( curGroupIndex < groupSizes.length ) {\n\t\t\t\tcurSize = groupSizes[ curGroupIndex ];\n\t\t\t\tcurGroupIndex++;\n\t\t\t}\n\t\t}\n\n\t\treturn numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;\n\t};\n\n\tformatNumber = function( value, format, culture ) {\n\t\tif ( !isFinite(value) ) {\n\t\t\tif ( value === Infinity ) {\n\t\t\t\treturn culture.numberFormat.positiveInfinity;\n\t\t\t}\n\t\t\tif ( value === -Infinity ) {\n\t\t\t\treturn culture.numberFormat.negativeInfinity;\n\t\t\t}\n\t\t\treturn culture.numberFormat.NaN;\n\t\t}\n\t\tif ( !format || format === \"i\" ) {\n\t\t\treturn culture.name.length ? value.toLocaleString() : value.toString();\n\t\t}\n\t\tformat = format || \"D\";\n\n\t\tvar nf = culture.numberFormat,\n\t\t\tnumber = Math.abs( value ),\n\t\t\tprecision = -1,\n\t\t\tpattern;\n\t\tif ( format.length > 1 ) precision = parseInt( format.slice(1), 10 );\n\n\t\tvar current = format.charAt( 0 ).toUpperCase(),\n\t\t\tformatInfo;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"D\":\n\t\t\t\tpattern = \"n\";\n\t\t\t\tnumber = truncate( number );\n\t\t\t\tif ( precision !== -1 ) {\n\t\t\t\t\tnumber = zeroPad( \"\" + number, precision, true );\n\t\t\t\t}\n\t\t\t\tif ( value < 0 ) number = \"-\" + number;\n\t\t\t\tbreak;\n\t\t\tcase \"N\":\n\t\t\t\tformatInfo = nf;\n\t\t\t\t// fall through\n\t\t\tcase \"C\":\n\t\t\t\tformatInfo = formatInfo || nf.currency;\n\t\t\t\t// fall through\n\t\t\tcase \"P\":\n\t\t\t\tformatInfo = formatInfo || nf.percent;\n\t\t\t\tpattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || \"n\" );\n\t\t\t\tif ( precision === -1 ) precision = formatInfo.decimals;\n\t\t\t\tnumber = expandNumber( number * (current === \"P\" ? 100 : 1), precision, formatInfo );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Bad number format specifier: \" + current;\n\t\t}\n\n\t\tvar patternParts = /n|\\$|-|%/g,\n\t\t\tret = \"\";\n\t\tfor ( ; ; ) {\n\t\t\tvar index = patternParts.lastIndex,\n\t\t\t\tar = patternParts.exec( pattern );\n\n\t\t\tret += pattern.slice( index, ar ? ar.index : pattern.length );\n\n\t\t\tif ( !ar ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch ( ar[0] ) {\n\t\t\t\tcase \"n\":\n\t\t\t\t\tret += number;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"$\":\n\t\t\t\t\tret += nf.currency.symbol;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"-\":\n\t\t\t\t\t// don't make 0 negative\n\t\t\t\t\tif ( /[1-9]/.test(number) ) {\n\t\t\t\t\t\tret += nf[ \"-\" ];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%\":\n\t\t\t\t\tret += nf.percent.symbol;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n\n}());\n\ngetTokenRegExp = function() {\n\t// regular expression for matching date and time tokens in format strings.\n\treturn /\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g;\n};\n\ngetEra = function( date, eras ) {\n\tif ( !eras ) return 0;\n\tvar start, ticks = date.getTime();\n\tfor ( var i = 0, l = eras.length; i < l; i++ ) {\n\t\tstart = eras[ i ].start;\n\t\tif ( start === null || ticks >= start ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn 0;\n};\n\ngetEraYear = function( date, cal, era, sortable ) {\n\tvar year = date.getFullYear();\n\tif ( !sortable && cal.eras ) {\n\t\t// convert normal gregorian year to era-shifted gregorian\n\t\t// year by subtracting the era offset\n\t\tyear -= cal.eras[ era ].offset;\n\t}\n\treturn year;\n};\n\n// parseExact\n(function() {\n\tvar expandYear,\n\t\tgetDayIndex,\n\t\tgetMonthIndex,\n\t\tgetParseRegExp,\n\t\toutOfRange,\n\t\ttoUpper,\n\t\ttoUpperArray;\n\n\texpandYear = function( cal, year ) {\n\t\t// expands 2-digit year into 4 digits.\n\t\tvar now = new Date(),\n\t\t\tera = getEra( now );\n\t\tif ( year < 100 ) {\n\t\t\tvar twoDigitYearMax = cal.twoDigitYearMax;\n\t\t\ttwoDigitYearMax = typeof twoDigitYearMax === \"string\" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax;\n\t\t\tvar curr = getEraYear( now, cal, era );\n\t\t\tyear += curr - ( curr % 100 );\n\t\t\tif ( year > twoDigitYearMax ) {\n\t\t\t\tyear -= 100;\n\t\t\t}\n\t\t}\n\t\treturn year;\n\t};\n\n\tgetDayIndex = function\t( cal, value, abbr ) {\n\t\tvar ret,\n\t\t\tdays = cal.days,\n\t\t\tupperDays = cal._upperDays;\n\t\tif ( !upperDays ) {\n\t\t\tcal._upperDays = upperDays = [\n\t\t\t\ttoUpperArray( days.names ),\n\t\t\t\ttoUpperArray( days.namesAbbr ),\n\t\t\t\ttoUpperArray( days.namesShort )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tif ( abbr ) {\n\t\t\tret = arrayIndexOf( upperDays[1], value );\n\t\t\tif ( ret === -1 ) {\n\t\t\t\tret = arrayIndexOf( upperDays[2], value );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = arrayIndexOf( upperDays[0], value );\n\t\t}\n\t\treturn ret;\n\t};\n\n\tgetMonthIndex = function( cal, value, abbr ) {\n\t\tvar months = cal.months,\n\t\t\tmonthsGen = cal.monthsGenitive || cal.months,\n\t\t\tupperMonths = cal._upperMonths,\n\t\t\tupperMonthsGen = cal._upperMonthsGen;\n\t\tif ( !upperMonths ) {\n\t\t\tcal._upperMonths = upperMonths = [\n\t\t\t\ttoUpperArray( months.names ),\n\t\t\t\ttoUpperArray( months.namesAbbr )\n\t\t\t];\n\t\t\tcal._upperMonthsGen = upperMonthsGen = [\n\t\t\t\ttoUpperArray( monthsGen.names ),\n\t\t\t\ttoUpperArray( monthsGen.namesAbbr )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tvar i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value );\n\t\tif ( i < 0 ) {\n\t\t\ti = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value );\n\t\t}\n\t\treturn i;\n\t};\n\n\tgetParseRegExp = function( cal, format ) {\n\t\t// converts a format string into a regular expression with groups that\n\t\t// can be used to extract date fields from a date string.\n\t\t// check for a cached parse regex.\n\t\tvar re = cal._parseRegExp;\n\t\tif ( !re ) {\n\t\t\tcal._parseRegExp = re = {};\n\t\t}\n\t\telse {\n\t\t\tvar reFormat = re[ format ];\n\t\t\tif ( reFormat ) {\n\t\t\t\treturn reFormat;\n\t\t\t}\n\t\t}\n\n\t\t// expand single digit formats, then escape regular expression characters.\n\t\tvar expFormat = expandFormat( cal, format ).replace( /([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g, \"\\\\\\\\$1\" ),\n\t\t\tregexp = [ \"^\" ],\n\t\t\tgroups = [],\n\t\t\tindex = 0,\n\t\t\tquoteCount = 0,\n\t\t\ttokenRegExp = getTokenRegExp(),\n\t\t\tmatch;\n\n\t\t// iterate through each date token found.\n\t\twhile ( (match = tokenRegExp.exec(expFormat)) !== null ) {\n\t\t\tvar preMatch = expFormat.slice( index, match.index );\n\t\t\tindex = tokenRegExp.lastIndex;\n\n\t\t\t// don't replace any matches that occur inside a string literal.\n\t\t\tquoteCount += appendPreOrPostMatch( preMatch, regexp );\n\t\t\tif ( quoteCount % 2 ) {\n\t\t\t\tregexp.push( match[0] );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// add a regex group for the token.\n\t\t\tvar m = match[ 0 ],\n\t\t\t\tlen = m.length,\n\t\t\t\tadd;\n\t\t\tswitch ( m ) {\n\t\t\t\tcase \"dddd\": case \"ddd\":\n\t\t\t\tcase \"MMMM\": case \"MMM\":\n\t\t\t\tcase \"gg\": case \"g\":\n\t\t\t\t\tadd = \"(\\\\D+)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\tadd = \"(\\\\D*)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"yyyy\":\n\t\t\t\tcase \"fff\":\n\t\t\t\tcase \"ff\":\n\t\t\t\tcase \"f\":\n\t\t\t\t\tadd = \"(\\\\d{\" + len + \"})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\tcase \"MM\": case \"M\":\n\t\t\t\tcase \"yy\": case \"y\":\n\t\t\t\tcase \"HH\": case \"H\":\n\t\t\t\tcase \"hh\": case \"h\":\n\t\t\t\tcase \"mm\": case \"m\":\n\t\t\t\tcase \"ss\": case \"s\":\n\t\t\t\t\tadd = \"(\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zzz\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?:\\\\d{2})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zz\": case \"z\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\":\n\t\t\t\t\tadd = \"(\\\\\" + cal[ \"/\" ] + \")\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Invalid date format pattern \\'\" + m + \"\\'.\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( add ) {\n\t\t\t\tregexp.push( add );\n\t\t\t}\n\t\t\tgroups.push( match[0] );\n\t\t}\n\t\tappendPreOrPostMatch( expFormat.slice(index), regexp );\n\t\tregexp.push( \"$\" );\n\n\t\t// allow whitespace to differ when matching formats.\n\t\tvar regexpStr = regexp.join( \"\" ).replace( /\\s+/g, \"\\\\s+\" ),\n\t\t\tparseRegExp = { \"regExp\": regexpStr, \"groups\": groups };\n\n\t\t// cache the regex for this format.\n\t\treturn re[ format ] = parseRegExp;\n\t};\n\n\toutOfRange = function( value, low, high ) {\n\t\treturn value < low || value > high;\n\t};\n\n\ttoUpper = function( value ) {\n\t\t// \"he-IL\" has non-breaking space in weekday names.\n\t\treturn value.split( \"\\u00A0\" ).join( \" \" ).toUpperCase();\n\t};\n\n\ttoUpperArray = function( arr ) {\n\t\tvar results = [];\n\t\tfor ( var i = 0, l = arr.length; i < l; i++ ) {\n\t\t\tresults[ i ] = toUpper( arr[i] );\n\t\t}\n\t\treturn results;\n\t};\n\n\tparseExact = function( value, format, culture ) {\n\t\t// try to parse the date string by matching against the format string\n\t\t// while using the specified culture for date field names.\n\t\tvalue = trim( value );\n\t\tvar cal = culture.calendar,\n\t\t\t// convert date formats into regular expressions with groupings.\n\t\t\t// use the regexp to determine the input format and extract the date fields.\n\t\t\tparseInfo = getParseRegExp( cal, format ),\n\t\t\tmatch = new RegExp( parseInfo.regExp ).exec( value );\n\t\tif ( match === null ) {\n\t\t\treturn null;\n\t\t}\n\t\t// found a date format that matches the input.\n\t\tvar groups = parseInfo.groups,\n\t\t\tera = null, year = null, month = null, date = null, weekDay = null,\n\t\t\thour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,\n\t\t\tpmHour = false;\n\t\t// iterate the format groups to extract and set the date fields.\n\t\tfor ( var j = 0, jl = groups.length; j < jl; j++ ) {\n\t\t\tvar matchGroup = match[ j + 1 ];\n\t\t\tif ( matchGroup ) {\n\t\t\t\tvar current = groups[ j ],\n\t\t\t\t\tclength = current.length,\n\t\t\t\t\tmatchInt = parseInt( matchGroup, 10 );\n\t\t\t\tswitch ( current ) {\n\t\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\t\t\t// Day of month.\n\t\t\t\t\t\tdate = matchInt;\n\t\t\t\t\t\t// check that date is generally in valid range, also checking overflow below.\n\t\t\t\t\t\tif ( outOfRange(date, 1, 31) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MMM\": case \"MMMM\":\n\t\t\t\t\t\tmonth = getMonthIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\": case \"MM\":\n\t\t\t\t\t\t// Month.\n\t\t\t\t\t\tmonth = matchInt - 1;\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\": case \"yy\":\n\t\t\t\t\tcase \"yyyy\":\n\t\t\t\t\t\tyear = clength < 4 ? expandYear( cal, matchInt ) : matchInt;\n\t\t\t\t\t\tif ( outOfRange(year, 0, 9999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"h\": case \"hh\":\n\t\t\t\t\t\t// Hours (12-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( hour === 12 ) hour = 0;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"H\": case \"HH\":\n\t\t\t\t\t\t// Hours (24-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 23) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\": case \"mm\":\n\t\t\t\t\t\t// Minutes.\n\t\t\t\t\t\tmin = matchInt;\n\t\t\t\t\t\tif ( outOfRange(min, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t// Seconds.\n\t\t\t\t\t\tsec = matchInt;\n\t\t\t\t\t\tif ( outOfRange(sec, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\t\t// AM/PM designator.\n\t\t\t\t\t\t// see if it is standard, upper, or lower case PM. If not, ensure it is at least one of\n\t\t\t\t\t\t// the AM tokens. If not, fail the parse for this format.\n\t\t\t\t\t\tpmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!pmHour && (\n\t\t\t\t\t\t\t\t!cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t// Deciseconds.\n\t\t\t\t\tcase \"ff\":\n\t\t\t\t\t\t// Centiseconds.\n\t\t\t\t\tcase \"fff\":\n\t\t\t\t\t\t// Milliseconds.\n\t\t\t\t\t\tmsec = matchInt * Math.pow( 10, 3 - clength );\n\t\t\t\t\t\tif ( outOfRange(msec, 0, 999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\tcase \"dddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\t\tweekDay = getDayIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(weekDay, 0, 6) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"zzz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours:min.\n\t\t\t\t\t\tvar offsets = matchGroup.split( /:/ );\n\t\t\t\t\t\tif ( offsets.length !== 2 ) return null;\n\t\t\t\t\t\thourOffset = parseInt( offsets[0], 10 );\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\tvar minOffset = parseInt( offsets[1], 10 );\n\t\t\t\t\t\tif ( outOfRange(minOffset, 0, 59) ) return null;\n\t\t\t\t\t\ttzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, \"-\") ? -minOffset : minOffset );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"z\": case \"zz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours.\n\t\t\t\t\t\thourOffset = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\ttzMinOffset = hourOffset * 60;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"g\": case \"gg\":\n\t\t\t\t\t\tvar eraName = matchGroup;\n\t\t\t\t\t\tif ( !eraName || !cal.eras ) return null;\n\t\t\t\t\t\teraName = trim( eraName.toLowerCase() );\n\t\t\t\t\t\tfor ( var i = 0, l = cal.eras.length; i < l; i++ ) {\n\t\t\t\t\t\t\tif ( eraName === cal.eras[i].name.toLowerCase() ) {\n\t\t\t\t\t\t\t\tera = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// could not find an era with that name\n\t\t\t\t\t\tif ( era === null ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar result = new Date(), defaultYear, convert = cal.convert;\n\t\tdefaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear();\n\t\tif ( year === null ) {\n\t\t\tyear = defaultYear;\n\t\t}\n\t\telse if ( cal.eras ) {\n\t\t\t// year must be shifted to normal gregorian year\n\t\t\t// but not if year was not specified, its already normal gregorian\n\t\t\t// per the main if clause above.\n\t\t\tyear += cal.eras[( era || 0 )].offset;\n\t\t}\n\t\t// set default day and month to 1 and January, so if unspecified, these are the defaults\n\t\t// instead of the current day/month.\n\t\tif ( month === null ) {\n\t\t\tmonth = 0;\n\t\t}\n\t\tif ( date === null ) {\n\t\t\tdate = 1;\n\t\t}\n\t\t// now have year, month, and date, but in the culture's calendar.\n\t\t// convert to gregorian if necessary\n\t\tif ( convert ) {\n\t\t\tresult = convert.toGregorian( year, month, date );\n\t\t\t// conversion failed, must be an invalid match\n\t\t\tif ( result === null ) return null;\n\t\t}\n\t\telse {\n\t\t\t// have to set year, month and date together to avoid overflow based on current date.\n\t\t\tresult.setFullYear( year, month, date );\n\t\t\t// check to see if date overflowed for specified month (only checked 1-31 above).\n\t\t\tif ( result.getDate() !== date ) return null;\n\t\t\t// invalid day of week.\n\t\t\tif ( weekDay !== null && result.getDay() !== weekDay ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t// if pm designator token was found make sure the hours fit the 24-hour clock.\n\t\tif ( pmHour && hour < 12 ) {\n\t\t\thour += 12;\n\t\t}\n\t\tresult.setHours( hour, min, sec, msec );\n\t\tif ( tzMinOffset !== null ) {\n\t\t\t// adjust timezone to utc before applying local offset.\n\t\t\tvar adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() );\n\t\t\t// Safari limits hours and minutes to the range of -127 to 127.\t We need to use setHours\n\t\t\t// to ensure both these fields will not exceed this range.\tadjustedMin will range\n\t\t\t// somewhere between -1440 and 1500, so we only need to split this into hours.\n\t\t\tresult.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 );\n\t\t}\n\t\treturn result;\n\t};\n}());\n\nparseNegativePattern = function( value, nf, negativePattern ) {\n\tvar neg = nf[ \"-\" ],\n\t\tpos = nf[ \"+\" ],\n\t\tret;\n\tswitch ( negativePattern ) {\n\t\tcase \"n -\":\n\t\t\tneg = \" \" + neg;\n\t\t\tpos = \" \" + pos;\n\t\t\t// fall through\n\t\tcase \"n-\":\n\t\t\tif ( endsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(0, value.length - neg.length) ];\n\t\t\t}\n\t\t\telse if ( endsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(0, value.length - pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"- n\":\n\t\t\tneg += \" \";\n\t\t\tpos += \" \";\n\t\t\t// fall through\n\t\tcase \"-n\":\n\t\t\tif ( startsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(neg.length) ];\n\t\t\t}\n\t\t\telse if ( startsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"(n)\":\n\t\t\tif ( startsWith(value, \"(\") && endsWith(value, \")\") ) {\n\t\t\t\tret = [ \"-\", value.substr(1, value.length - 2) ];\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn ret || [ \"\", value ];\n};\n\n//\n// public instance functions\n//\n\nGlobalize.prototype.findClosestCulture = function( cultureSelector ) {\n\treturn Globalize.findClosestCulture.call( this, cultureSelector );\n};\n\nGlobalize.prototype.format = function( value, format, cultureSelector ) {\n\treturn Globalize.format.call( this, value, format, cultureSelector );\n};\n\nGlobalize.prototype.localize = function( key, cultureSelector ) {\n\treturn Globalize.localize.call( this, key, cultureSelector );\n};\n\nGlobalize.prototype.parseInt = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseInt.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.parseFloat = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseFloat.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.culture = function( cultureSelector ) {\n\treturn Globalize.culture.call( this, cultureSelector );\n};\n\n//\n// public singleton functions\n//\n\nGlobalize.addCultureInfo = function( cultureName, baseCultureName, info ) {\n\n\tvar base = {},\n\t\tisNew = false;\n\n\tif ( typeof cultureName !== \"string\" ) {\n\t\t// cultureName argument is optional string. If not specified, assume info is first\n\t\t// and only argument. Specified info deep-extends current culture.\n\t\tinfo = cultureName;\n\t\tcultureName = this.culture().name;\n\t\tbase = this.cultures[ cultureName ];\n\t} else if ( typeof baseCultureName !== \"string\" ) {\n\t\t// baseCultureName argument is optional string. If not specified, assume info is second\n\t\t// argument. Specified info deep-extends specified culture.\n\t\t// If specified culture does not exist, create by deep-extending default\n\t\tinfo = baseCultureName;\n\t\tisNew = ( this.cultures[ cultureName ] == null );\n\t\tbase = this.cultures[ cultureName ] || this.cultures[ \"default\" ];\n\t} else {\n\t\t// cultureName and baseCultureName specified. Assume a new culture is being created\n\t\t// by deep-extending an specified base culture\n\t\tisNew = true;\n\t\tbase = this.cultures[ baseCultureName ];\n\t}\n\n\tthis.cultures[ cultureName ] = extend(true, {},\n\t\tbase,\n\t\tinfo\n\t);\n\t// Make the standard calendar the current culture if it's a new culture\n\tif ( isNew ) {\n\t\tthis.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard;\n\t}\n};\n\nGlobalize.findClosestCulture = function( name ) {\n\tvar match;\n\tif ( !name ) {\n\t\treturn this.cultures[ this.cultureSelector ] || this.cultures[ \"default\" ];\n\t}\n\tif ( typeof name === \"string\" ) {\n\t\tname = name.split( \",\" );\n\t}\n\tif ( isArray(name) ) {\n\t\tvar lang,\n\t\t\tcultures = this.cultures,\n\t\t\tlist = name,\n\t\t\ti, l = list.length,\n\t\t\tprioritized = [];\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tname = trim( list[i] );\n\t\t\tvar pri, parts = name.split( \";\" );\n\t\t\tlang = trim( parts[0] );\n\t\t\tif ( parts.length === 1 ) {\n\t\t\t\tpri = 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tname = trim( parts[1] );\n\t\t\t\tif ( name.indexOf(\"q=\") === 0 ) {\n\t\t\t\t\tname = name.substr( 2 );\n\t\t\t\t\tpri = parseFloat( name );\n\t\t\t\t\tpri = isNaN( pri ) ? 0 : pri;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpri = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprioritized.push({ lang: lang, pri: pri });\n\t\t}\n\t\tprioritized.sort(function( a, b ) {\n\t\t\treturn a.pri < b.pri ? 1 : -1;\n\t\t});\n\n\t\t// exact match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tmatch = cultures[ lang ];\n\t\t\tif ( match ) {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t}\n\n\t\t// neutral language match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tdo {\n\t\t\t\tvar index = lang.lastIndexOf( \"-\" );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// strip off the last part. e.g. en-US => en\n\t\t\t\tlang = lang.substr( 0, index );\n\t\t\t\tmatch = cultures[ lang ];\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( 1 );\n\t\t}\n\n\t\t// last resort: match first culture using that language\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tfor ( var cultureKey in cultures ) {\n\t\t\t\tvar culture = cultures[ cultureKey ];\n\t\t\t\tif ( culture.language == lang ) {\n\t\t\t\t\treturn culture;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if ( typeof name === \"object\" ) {\n\t\treturn name;\n\t}\n\treturn match || null;\n};\n\nGlobalize.format = function( value, format, cultureSelector ) {\n\tculture = this.findClosestCulture( cultureSelector );\n\tif ( value instanceof Date ) {\n\t\tvalue = formatDate( value, format, culture );\n\t}\n\telse if ( typeof value === \"number\" ) {\n\t\tvalue = formatNumber( value, format, culture );\n\t}\n\treturn value;\n};\n\nGlobalize.localize = function( key, cultureSelector ) {\n\treturn this.findClosestCulture( cultureSelector ).messages[ key ] ||\n\t\tthis.cultures[ \"default\" ].messages[ key ];\n};\n\nGlobalize.parseDate = function( value, formats, culture ) {\n\tculture = this.findClosestCulture( culture );\n\n\tvar date, prop, patterns;\n\tif ( formats ) {\n\t\tif ( typeof formats === \"string\" ) {\n\t\t\tformats = [ formats ];\n\t\t}\n\t\tif ( formats.length ) {\n\t\t\tfor ( var i = 0, l = formats.length; i < l; i++ ) {\n\t\t\t\tvar format = formats[ i ];\n\t\t\t\tif ( format ) {\n\t\t\t\t\tdate = parseExact( value, format, culture );\n\t\t\t\t\tif ( date ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tpatterns = culture.calendar.patterns;\n\t\tfor ( prop in patterns ) {\n\t\t\tdate = parseExact( value, patterns[prop], culture );\n\t\t\tif ( date ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn date || null;\n};\n\nGlobalize.parseInt = function( value, radix, cultureSelector ) {\n\treturn truncate( Globalize.parseFloat(value, radix, cultureSelector) );\n};\n\nGlobalize.parseFloat = function( value, radix, cultureSelector ) {\n\t// radix argument is optional\n\tif ( typeof radix !== \"number\" ) {\n\t\tcultureSelector = radix;\n\t\tradix = 10;\n\t}\n\n\tvar culture = this.findClosestCulture( cultureSelector );\n\tvar ret = NaN,\n\t\tnf = culture.numberFormat;\n\n\tif ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) {\n\t\t// remove currency symbol\n\t\tvalue = value.replace( culture.numberFormat.currency.symbol, \"\" );\n\t\t// replace decimal seperator\n\t\tvalue = value.replace( culture.numberFormat.currency[\".\"], culture.numberFormat[\".\"] );\n\t}\n\n\t// trim leading and trailing whitespace\n\tvalue = trim( value );\n\n\t// allow infinity or hexidecimal\n\tif ( regexInfinity.test(value) ) {\n\t\tret = parseFloat( value );\n\t}\n\telse if ( !radix && regexHex.test(value) ) {\n\t\tret = parseInt( value, 16 );\n\t}\n\telse {\n\n\t\t// determine sign and number\n\t\tvar signInfo = parseNegativePattern( value, nf, nf.pattern[0] ),\n\t\t\tsign = signInfo[ 0 ],\n\t\t\tnum = signInfo[ 1 ];\n\n\t\t// #44 - try parsing as \"(n)\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"(n)\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"(n)\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\t// try parsing as \"-n\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"-n\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"-n\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\tsign = sign || \"+\";\n\n\t\t// determine exponent and number\n\t\tvar exponent,\n\t\t\tintAndFraction,\n\t\t\texponentPos = num.indexOf( \"e\" );\n\t\tif ( exponentPos < 0 ) exponentPos = num.indexOf( \"E\" );\n\t\tif ( exponentPos < 0 ) {\n\t\t\tintAndFraction = num;\n\t\t\texponent = null;\n\t\t}\n\t\telse {\n\t\t\tintAndFraction = num.substr( 0, exponentPos );\n\t\t\texponent = num.substr( exponentPos + 1 );\n\t\t}\n\t\t// determine decimal position\n\t\tvar integer,\n\t\t\tfraction,\n\t\t\tdecSep = nf[ \".\" ],\n\t\t\tdecimalPos = intAndFraction.indexOf( decSep );\n\t\tif ( decimalPos < 0 ) {\n\t\t\tinteger = intAndFraction;\n\t\t\tfraction = null;\n\t\t}\n\t\telse {\n\t\t\tinteger = intAndFraction.substr( 0, decimalPos );\n\t\t\tfraction = intAndFraction.substr( decimalPos + decSep.length );\n\t\t}\n\t\t// handle groups (e.g. 1,000,000)\n\t\tvar groupSep = nf[ \",\" ];\n\t\tinteger = integer.split( groupSep ).join( \"\" );\n\t\tvar altGroupSep = groupSep.replace( /\\u00A0/g, \" \" );\n\t\tif ( groupSep !== altGroupSep ) {\n\t\t\tinteger = integer.split( altGroupSep ).join( \"\" );\n\t\t}\n\t\t// build a natively parsable number string\n\t\tvar p = sign + integer;\n\t\tif ( fraction !== null ) {\n\t\t\tp += \".\" + fraction;\n\t\t}\n\t\tif ( exponent !== null ) {\n\t\t\t// exponent itself may have a number patternd\n\t\t\tvar expSignInfo = parseNegativePattern( exponent, nf, \"-n\" );\n\t\t\tp += \"e\" + ( expSignInfo[0] || \"+\" ) + expSignInfo[ 1 ];\n\t\t}\n\t\tif ( regexParseFloat.test(p) ) {\n\t\t\tret = parseFloat( p );\n\t\t}\n\t}\n\treturn ret;\n};\n\nGlobalize.culture = function( cultureSelector ) {\n\t// setter\n\tif ( typeof cultureSelector !== \"undefined\" ) {\n\t\tthis.cultureSelector = cultureSelector;\n\t}\n\t// getter\n\treturn this.findClosestCulture( cultureSelector ) || this.culture[ \"default\" ];\n};\n\n}( this ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.bgiframe-2.1.2.js",
    "content": "/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version 2.1.2\n */\n\n(function($){\n\n$.fn.bgiframe = ($.browser.msie && /msie 6\\.0/i.test(navigator.userAgent) ? function(s) {\n    s = $.extend({\n        top     : 'auto', // auto == .currentStyle.borderTopWidth\n        left    : 'auto', // auto == .currentStyle.borderLeftWidth\n        width   : 'auto', // auto == offsetWidth\n        height  : 'auto', // auto == offsetHeight\n        opacity : true,\n        src     : 'javascript:false;'\n    }, s);\n    var html = '<iframe class=\"bgiframe\"frameborder=\"0\"tabindex=\"-1\"src=\"'+s.src+'\"'+\n                   'style=\"display:block;position:absolute;z-index:-1;'+\n                       (s.opacity !== false?'filter:Alpha(Opacity=\\'0\\');':'')+\n                       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\\'px\\')':prop(s.top))+';'+\n                       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\\'px\\')':prop(s.left))+';'+\n                       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\\'px\\')':prop(s.width))+';'+\n                       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\\'px\\')':prop(s.height))+';'+\n                '\"/>';\n    return this.each(function() {\n        if ( $(this).children('iframe.bgiframe').length === 0 )\n            this.insertBefore( document.createElement(html), this.firstChild );\n    });\n} : function() { return this; });\n\n// old alias\n$.fn.bgIframe = $.fn.bgiframe;\n\nfunction prop(n) {\n    return n && n.constructor === Number ? n + 'px' : n;\n}\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.cookie.js",
    "content": "/*jslint browser: true */ /*global jQuery: true */\n\n/**\n * jQuery Cookie plugin\n *\n * Copyright (c) 2010 Klaus Hartl (stilbuero.de)\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n */\n\n// TODO JsDoc\n\n/**\n * Create a cookie with the given key and value and other optional parameters.\n *\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Set the value of a cookie.\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\n * @desc Create a cookie with all available options.\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Create a session cookie.\n * @example $.cookie('the_cookie', null);\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain\n *       used when the cookie was set.\n *\n * @param String key The key of the cookie.\n * @param String value The value of the cookie.\n * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.\n *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.\n *                             If set to null or omitted, the cookie will be a session cookie and will not be retained\n *                             when the the browser exits.\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will\n *                        require a secure protocol (like HTTPS).\n * @type undefined\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\n\n/**\n * Get the value of a cookie with the given key.\n *\n * @example $.cookie('the_cookie');\n * @desc Get the value of a cookie.\n *\n * @param String key The key of the cookie.\n * @return The value of the cookie.\n * @type String\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\njQuery.cookie = function (key, value, options) {\n\n    // key and value given, set cookie...\n    if (arguments.length > 1 && (value === null || typeof value !== \"object\")) {\n        options = jQuery.extend({}, options);\n\n        if (value === null) {\n            options.expires = -1;\n        }\n\n        if (typeof options.expires === 'number') {\n            var days = options.expires, t = options.expires = new Date();\n            t.setDate(t.getDate() + days);\n        }\n\n        return (document.cookie = [\n            encodeURIComponent(key), '=',\n            options.raw ? String(value) : encodeURIComponent(String(value)),\n            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n            options.path ? '; path=' + options.path : '',\n            options.domain ? '; domain=' + options.domain : '',\n            options.secure ? '; secure' : ''\n        ].join(''));\n    }\n\n    // key and possibly options given, get cookie...\n    options = value || {};\n    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;\n    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.metadata.js",
    "content": "/*\n * Metadata - jQuery plugin for parsing metadata from elements\n *\n * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n *\n * Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $\n *\n */\n\n/**\n * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\n * in the JSON will become a property of the element itself.\n *\n * There are three supported types of metadata storage:\n *\n *   attr:  Inside an attribute. The name parameter indicates *which* attribute.\n *          \n *   class: Inside the class attribute, wrapped in curly braces: { }\n *   \n *   elem:  Inside a child element (e.g. a script tag). The\n *          name parameter indicates *which* element.\n *          \n * The metadata for an element is loaded the first time the element is accessed via jQuery.\n *\n * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\n * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\n * \n * @name $.metadata.setType\n *\n * @example <p id=\"one\" class=\"some_class {item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"class\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from the class attribute\n * \n * @example <p id=\"one\" class=\"some_class\" data=\"{item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"attr\", \"data\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a \"data\" attribute\n * \n * @example <p id=\"one\" class=\"some_class\"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>\n * @before $.metadata.setType(\"elem\", \"script\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a nested script element\n * \n * @param String type The encoding type\n * @param String name The name of the attribute to be used to get metadata (optional)\n * @cat Plugins/Metadata\n * @descr Sets the type of encoding to be used when loading metadata for the first time\n * @type undefined\n * @see metadata()\n */\n\n(function($) {\n\n$.extend({\n\tmetadata : {\n\t\tdefaults : {\n\t\t\ttype: 'class',\n\t\t\tname: 'metadata',\n\t\t\tcre: /({.*})/,\n\t\t\tsingle: 'metadata'\n\t\t},\n\t\tsetType: function( type, name ){\n\t\t\tthis.defaults.type = type;\n\t\t\tthis.defaults.name = name;\n\t\t},\n\t\tget: function( elem, opts ){\n\t\t\tvar settings = $.extend({},this.defaults,opts);\n\t\t\t// check for empty string in single property\n\t\t\tif ( !settings.single.length ) settings.single = 'metadata';\n\t\t\t\n\t\t\tvar data = $.data(elem, settings.single);\n\t\t\t// returned cached data if it already exists\n\t\t\tif ( data ) return data;\n\t\t\t\n\t\t\tdata = \"{}\";\n\t\t\t\n\t\t\tif ( settings.type == \"class\" ) {\n\t\t\t\tvar m = settings.cre.exec( elem.className );\n\t\t\t\tif ( m )\n\t\t\t\t\tdata = m[1];\n\t\t\t} else if ( settings.type == \"elem\" ) {\n\t\t\t\tif( !elem.getElementsByTagName )\n\t\t\t\t\treturn undefined;\n\t\t\t\tvar e = elem.getElementsByTagName(settings.name);\n\t\t\t\tif ( e.length )\n\t\t\t\t\tdata = $.trim(e[0].innerHTML);\n\t\t\t} else if ( elem.getAttribute != undefined ) {\n\t\t\t\tvar attr = elem.getAttribute( settings.name );\n\t\t\t\tif ( attr )\n\t\t\t\t\tdata = attr;\n\t\t\t}\n\t\t\t\n\t\t\tif ( data.indexOf( '{' ) <0 )\n\t\t\tdata = \"{\" + data + \"}\";\n\t\t\t\n\t\t\tdata = eval(\"(\" + data + \")\");\n\t\t\t\n\t\t\t$.data( elem, settings.single, data );\n\t\t\treturn data;\n\t\t}\n\t}\n});\n\n/**\n * Returns the metadata object for the first member of the jQuery object.\n *\n * @name metadata\n * @descr Returns element's metadata object\n * @param Object opts An object contianing settings to override the defaults\n * @type jQuery\n * @cat Plugins/Metadata\n */\n$.fn.metadata = function( opts ){\n\treturn $.metadata.get( this[0], opts );\n};\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.mousewheel.js",
    "content": "/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n * Thanks to: Seamus Leahy for adding deltaX and deltaY\n *\n * Version: 3.0.6\n *\n * Requires: 1.2.2+\n */\n\n(function($) {\n\nvar types = ['DOMMouseScroll', 'mousewheel'];\n\nif ($.event.fixHooks) {\n    for ( var i=types.length; i; ) {\n        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;\n    }\n}\n\n$.event.special.mousewheel = {\n    setup: function() {\n        if ( this.addEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.addEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = handler;\n        }\n    },\n\n    teardown: function() {\n        if ( this.removeEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.removeEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = null;\n        }\n    }\n};\n\n$.fn.extend({\n    mousewheel: function(fn) {\n        return fn ? this.bind(\"mousewheel\", fn) : this.trigger(\"mousewheel\");\n    },\n\n    unmousewheel: function(fn) {\n        return this.unbind(\"mousewheel\", fn);\n    }\n});\n\n\nfunction handler(event) {\n    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;\n    event = $.event.fix(orgEvent);\n    event.type = \"mousewheel\";\n\n    // Old school scrollwheel delta\n    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }\n    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }\n\n    // New school multidimensional scroll (touchpads) deltas\n    deltaY = delta;\n\n    // Gecko\n    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n        deltaY = 0;\n        deltaX = -1*delta;\n    }\n\n    // Webkit\n    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }\n    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }\n\n    // Add event and delta to the front of the arguments\n    args.unshift(event, delta, deltaX, deltaY);\n\n    return ($.event.dispatch || $.event.handle).apply(this, args);\n}\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jshint.js",
    "content": "/*!\n * JSHint, by JSHint Community.\n *\n * This file (and this file only) is licensed under the same slightly modified\n * MIT license that JSLint is. It stops evil-doers everywhere.\n *\n * JSHint is a derivative work of JSLint:\n *\n *   Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)\n *\n *   Permission is hereby granted, free of charge, to any person obtaining\n *   a copy of this software and associated documentation files (the \"Software\"),\n *   to deal in the Software without restriction, including without limitation\n *   the rights to use, copy, modify, merge, publish, distribute, sublicense,\n *   and/or sell copies of the Software, and to permit persons to whom\n *   the Software is furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included\n *   in all copies or substantial portions of the Software.\n *\n *   The Software shall be used for Good, not Evil.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n *   DEALINGS IN THE SOFTWARE.\n *\n */\n\n/*\n JSHINT is a global function. It takes two parameters.\n\n     var myResult = JSHINT(source, option);\n\n The first parameter is either a string or an array of strings. If it is a\n string, it will be split on '\\n' or '\\r'. If it is an array of strings, it\n is assumed that each string represents one line. The source can be a\n JavaScript text or a JSON text.\n\n The second parameter is an optional object of options which control the\n operation of JSHINT. Most of the options are booleans: They are all\n optional and have a default value of false. One of the options, predef,\n can be an array of names, which will be used to declare global variables,\n or an object whose keys are used as global names, with a boolean value\n that determines if they are assignable.\n\n If it checks out, JSHINT returns true. Otherwise, it returns false.\n\n If false, you can inspect JSHINT.errors to find out the problems.\n JSHINT.errors is an array of objects containing these members:\n\n {\n     line      : The line (relative to 1) at which the lint was found\n     character : The character (relative to 1) at which the lint was found\n     reason    : The problem\n     evidence  : The text line in which the problem occurred\n     raw       : The raw message before the details were inserted\n     a         : The first detail\n     b         : The second detail\n     c         : The third detail\n     d         : The fourth detail\n }\n\n If a fatal error was found, a null will be the last element of the\n JSHINT.errors array.\n\n You can request a data structure which contains JSHint's results.\n\n     var myData = JSHINT.data();\n\n It returns a structure with this form:\n\n {\n     errors: [\n         {\n             line: NUMBER,\n             character: NUMBER,\n             reason: STRING,\n             evidence: STRING\n         }\n     ],\n     functions: [\n         name: STRING,\n         line: NUMBER,\n         character: NUMBER,\n         last: NUMBER,\n         lastcharacter: NUMBER,\n         param: [\n             STRING\n         ],\n         closure: [\n             STRING\n         ],\n         var: [\n             STRING\n         ],\n         exception: [\n             STRING\n         ],\n         outer: [\n             STRING\n         ],\n         unused: [\n             STRING\n         ],\n         global: [\n             STRING\n         ],\n         label: [\n             STRING\n         ]\n     ],\n     globals: [\n         STRING\n     ],\n     member: {\n         STRING: NUMBER\n     },\n     unused: [\n         {\n             name: STRING,\n             line: NUMBER\n         }\n     ],\n     implieds: [\n         {\n             name: STRING,\n             line: NUMBER\n         }\n     ],\n     urls: [\n         STRING\n     ],\n     json: BOOLEAN\n }\n\n Empty arrays will not be included.\n\n*/\n\n/*jshint\n evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true,\n undef: true, maxlen: 100, indent: 4, quotmark: double, unused: true\n*/\n\n/*members \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"!=\", \"!==\", \"\\\"\", \"%\", \"(begin)\",\n \"(breakage)\", \"(character)\", \"(context)\", \"(error)\", \"(explicitNewcap)\", \"(global)\",\n \"(identifier)\", \"(last)\", \"(lastcharacter)\", \"(line)\", \"(loopage)\", \"(metrics)\",\n \"(name)\", \"(onevar)\", \"(params)\", \"(scope)\", \"(statement)\", \"(verb)\", \"(tokens)\", \"(catch)\",\n \"*\", \"+\", \"++\", \"-\", \"--\", \"\\/\", \"<\", \"<=\", \"==\",\n \"===\", \">\", \">=\", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax,\n __filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio,\n Autocompleter, Asset, Boolean, Builder, Buffer, Browser, Blob, COM, CScript, Canvas,\n CustomAnimation, Class, Control, ComplexityCount, Chain, Color, Cookie, Core, DataView, Date,\n Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMEvent, DOMReady, DOMParser,\n Drag, E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event,\n Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form,\n FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey,\n HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement,\n HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLCanvasElement, HTMLDirectoryElement,\n HTMLDivElement, HTMLDListElement, HTMLFieldSetElement,\n HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement,\n HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement,\n HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement,\n HTMLLabelElement, HTMLLayerElement, HTMLLegendElement, HTMLLIElement,\n HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement,\n HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement,\n HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement,\n HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement,\n HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement,\n HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement,\n HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement,\n Iframe, IframeShim, Image, importScripts, Int16Array, Int32Array, Int8Array,\n Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E,\n MAX_VALUE, MIN_VALUE, Map, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort,\n MoveAnimation, MooTools, MutationObserver, NaN, Native, NEGATIVE_INFINITY, Node, NodeFilter,\n Number, Object, ObjectRange,\n Option, Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype,\n RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation, Set,\n SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion,\n ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller,\n Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables,\n SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template,\n Timer, Tips, Type, TypeError, Toggle, Try, \"use strict\", unescape, URI, URIError, URL,\n VBArray, WeakMap, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer,\n XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult,\n \"\\\\\", a, abs, addEventListener, address, alert, apply, applicationCache, arguments, arity,\n asi, atob, b, basic, basicToken, bitwise, blacklist, block, blur, boolOptions, boss,\n browser, btoa, c, call, callee, caller, camelcase, cases, charAt, charCodeAt, character,\n clearInterval, clearTimeout, close, closed, closure, comment, complexityCount, condition,\n confirm, console, constructor, content, couch, create, css, curly, d, data, datalist, dd, debug,\n decodeURI, decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document,\n dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent, elem,\n eqeq, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil,\n ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus, forEach,\n forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions,\n g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict,\n hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include,\n indent, indexOf, init, ins, internals, instanceOf, isAlpha, isApplicationRunning, isArray,\n isDigit, isFinite, isNaN, iterator, java, join, jshint,\n JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastcharacter, lastsemic, laxbreak,\n laxcomma, latedef, lbp, led, left, length, line, load, loadClass, localStorage, location,\n log, loopfunc, m, match, max, maxcomplexity, maxdepth, maxerr, maxlen, maxstatements, maxparams,\n member, message, meta, module, moveBy, moveTo, mootools, multistr, name, navigator, new, newcap,\n nestedBlockDepth, noarg, node, noempty, nomen, nonew, nonstandard, nud, onbeforeunload, onblur,\n onerror, onevar, onecase, onfocus, onload, onresize, onunload, open, openDatabase, openURL,\n opener, opera, options, outer, param, parent, parseFloat, parseInt, passfail, plusplus,\n postMessage, pop, predef, print, process, prompt, proto, prototype, prototypejs, provides, push,\n quit, quotmark, range, raw, reach, reason, regexp, readFile, readUrl, regexdash,\n removeEventListener, replace, report, require, reserved, resizeBy, resizeTo, resolvePath,\n resumeUpdates, respond, rhino, right, runCommand, scroll, scope, screen, scripturl, scrollBy,\n scrollTo, scrollbar, search, seal, self, send, serialize, sessionStorage, setInterval, setTimeout,\n setter, setterToken, shift, slice, smarttabs, sort, spawn, split, statement, statementCount, stack,\n status, start, strict, sub, substr, supernew, shadow, supplant, sum, sync, test, toLowerCase,\n toString, toUpperCase, toint32, token, tokens, top, trailing, type, typeOf, Uint16Array,\n Uint32Array, Uint8Array, undef, undefs, unused, urls, validthis, value, valueOf, var, vars,\n version, verifyMaxParametersPerFunction, verifyMaxStatementsPerFunction,\n verifyMaxComplexityPerFunction, verifyMaxNestedBlockDepthPerFunction, WebSocket, withstmt, white,\n window, windows, Worker, worker, wsh, yui, YUI, Y, YUI_config*/\n\n/*global exports: false */\n\n// We build the application inside a function so that we produce only a single\n// global variable. That function will be invoked immediately, and its return\n// value is the JSHINT function itself.\n\nvar JSHINT = (function () {\n    \"use strict\";\n\n    var anonname,       // The guessed name for anonymous functions.\n\n// These are operators that should not be used with the ! operator.\n\n        bang = {\n            \"<\"  : true,\n            \"<=\" : true,\n            \"==\" : true,\n            \"===\": true,\n            \"!==\": true,\n            \"!=\" : true,\n            \">\"  : true,\n            \">=\" : true,\n            \"+\"  : true,\n            \"-\"  : true,\n            \"*\"  : true,\n            \"/\"  : true,\n            \"%\"  : true\n        },\n\n        // These are the JSHint boolean options.\n        boolOptions = {\n            asi         : true, // if automatic semicolon insertion should be tolerated\n            bitwise     : true, // if bitwise operators should not be allowed\n            boss        : true, // if advanced usage of assignments should be allowed\n            browser     : true, // if the standard browser globals should be predefined\n            camelcase   : true, // if identifiers should be required in camel case\n            couch       : true, // if CouchDB globals should be predefined\n            curly       : true, // if curly braces around all blocks should be required\n            debug       : true, // if debugger statements should be allowed\n            devel       : true, // if logging globals should be predefined (console,\n                                // alert, etc.)\n            dojo        : true, // if Dojo Toolkit globals should be predefined\n            eqeqeq      : true, // if === should be required\n            eqnull      : true, // if == null comparisons should be tolerated\n            es5         : true, // if ES5 syntax should be allowed\n            esnext      : true, // if es.next specific syntax should be allowed\n            evil        : true, // if eval should be allowed\n            expr        : true, // if ExpressionStatement should be allowed as Programs\n            forin       : true, // if for in statements must filter\n            funcscope   : true, // if only function scope should be used for scope tests\n            globalstrict: true, // if global \"use strict\"; should be allowed (also\n                                // enables 'strict')\n            immed       : true, // if immediate invocations must be wrapped in parens\n            iterator    : true, // if the `__iterator__` property should be allowed\n            jquery      : true, // if jQuery globals should be predefined\n            lastsemic   : true, // if semicolons may be ommitted for the trailing\n                                // statements inside of a one-line blocks.\n            latedef     : true, // if the use before definition should not be tolerated\n            laxbreak    : true, // if line breaks should not be checked\n            laxcomma    : true, // if line breaks should not be checked around commas\n            loopfunc    : true, // if functions should be allowed to be defined within\n                                // loops\n            mootools    : true, // if MooTools globals should be predefined\n            multistr    : true, // allow multiline strings\n            newcap      : true, // if constructor names must be capitalized\n            noarg       : true, // if arguments.caller and arguments.callee should be\n                                // disallowed\n            node        : true, // if the Node.js environment globals should be\n                                // predefined\n            noempty     : true, // if empty blocks should be disallowed\n            nonew       : true, // if using `new` for side-effects should be disallowed\n            nonstandard : true, // if non-standard (but widely adopted) globals should\n                                // be predefined\n            nomen       : true, // if names should be checked\n            onevar      : true, // if only one var statement per function should be\n                                // allowed\n            onecase     : true, // if one case switch statements should be allowed\n            passfail    : true, // if the scan should stop on first error\n            plusplus    : true, // if increment/decrement should not be allowed\n            proto       : true, // if the `__proto__` property should be allowed\n            prototypejs : true, // if Prototype and Scriptaculous globals should be\n                                // predefined\n            regexdash   : true, // if unescaped first/last dash (-) inside brackets\n                                // should be tolerated\n            regexp      : true, // if the . should not be allowed in regexp literals\n            rhino       : true, // if the Rhino environment globals should be predefined\n            undef       : true, // if variables should be declared before used\n            unused      : true, // if variables should be always used\n            scripturl   : true, // if script-targeted URLs should be tolerated\n            shadow      : true, // if variable shadowing should be tolerated\n            smarttabs   : true, // if smarttabs should be tolerated\n                                // (http://www.emacswiki.org/emacs/SmartTabs)\n            strict      : true, // require the \"use strict\"; pragma\n            sub         : true, // if all forms of subscript notation are tolerated\n            supernew    : true, // if `new function () { ... };` and `new Object;`\n                                // should be tolerated\n            trailing    : true, // if trailing whitespace rules apply\n            validthis   : true, // if 'this' inside a non-constructor function is valid.\n                                // This is a function scoped option only.\n            withstmt    : true, // if with statements should be allowed\n            white       : true, // if strict whitespace rules apply\n            worker      : true, // if Web Worker script symbols should be allowed\n            wsh         : true, // if the Windows Scripting Host environment globals\n                                // should be predefined\n            yui         : true  // YUI variables should be predefined\n        },\n\n        // These are the JSHint options that can take any value\n        // (we use this object to detect invalid options)\n        valOptions = {\n            maxlen       : false,\n            indent       : false,\n            maxerr       : false,\n            predef       : false,\n            quotmark     : false, //'single'|'double'|true\n            scope        : false,\n            maxstatements: false, // {int} max statements per function\n            maxdepth     : false, // {int} max nested block depth per function\n            maxparams    : false, // {int} max params per function\n            maxcomplexity: false  // {int} max cyclomatic complexity per function\n        },\n\n        // These are JSHint boolean options which are shared with JSLint\n        // where the definition in JSHint is opposite JSLint\n        invertedOptions = {\n            bitwise     : true,\n            forin       : true,\n            newcap      : true,\n            nomen       : true,\n            plusplus    : true,\n            regexp      : true,\n            undef       : true,\n            white       : true,\n\n            // Inverted and renamed, use JSHint name here\n            eqeqeq      : true,\n            onevar      : true\n        },\n\n        // These are JSHint boolean options which are shared with JSLint\n        // where the name has been changed but the effect is unchanged\n        renamedOptions = {\n            eqeq        : \"eqeqeq\",\n            vars        : \"onevar\",\n            windows     : \"wsh\"\n        },\n\n\n        // browser contains a set of global names which are commonly provided by a\n        // web browser environment.\n        browser = {\n            ArrayBuffer              :  false,\n            ArrayBufferView          :  false,\n            Audio                    :  false,\n            Blob                     :  false,\n            addEventListener         :  false,\n            applicationCache         :  false,\n            atob                     :  false,\n            blur                     :  false,\n            btoa                     :  false,\n            clearInterval            :  false,\n            clearTimeout             :  false,\n            close                    :  false,\n            closed                   :  false,\n            DataView                 :  false,\n            DOMParser                :  false,\n            defaultStatus            :  false,\n            document                 :  false,\n            event                    :  false,\n            FileReader               :  false,\n            Float32Array             :  false,\n            Float64Array             :  false,\n            FormData                 :  false,\n            focus                    :  false,\n            frames                   :  false,\n            getComputedStyle         :  false,\n            HTMLElement              :  false,\n            HTMLAnchorElement        :  false,\n            HTMLBaseElement          :  false,\n            HTMLBlockquoteElement    :  false,\n            HTMLBodyElement          :  false,\n            HTMLBRElement            :  false,\n            HTMLButtonElement        :  false,\n            HTMLCanvasElement        :  false,\n            HTMLDirectoryElement     :  false,\n            HTMLDivElement           :  false,\n            HTMLDListElement         :  false,\n            HTMLFieldSetElement      :  false,\n            HTMLFontElement          :  false,\n            HTMLFormElement          :  false,\n            HTMLFrameElement         :  false,\n            HTMLFrameSetElement      :  false,\n            HTMLHeadElement          :  false,\n            HTMLHeadingElement       :  false,\n            HTMLHRElement            :  false,\n            HTMLHtmlElement          :  false,\n            HTMLIFrameElement        :  false,\n            HTMLImageElement         :  false,\n            HTMLInputElement         :  false,\n            HTMLIsIndexElement       :  false,\n            HTMLLabelElement         :  false,\n            HTMLLayerElement         :  false,\n            HTMLLegendElement        :  false,\n            HTMLLIElement            :  false,\n            HTMLLinkElement          :  false,\n            HTMLMapElement           :  false,\n            HTMLMenuElement          :  false,\n            HTMLMetaElement          :  false,\n            HTMLModElement           :  false,\n            HTMLObjectElement        :  false,\n            HTMLOListElement         :  false,\n            HTMLOptGroupElement      :  false,\n            HTMLOptionElement        :  false,\n            HTMLParagraphElement     :  false,\n            HTMLParamElement         :  false,\n            HTMLPreElement           :  false,\n            HTMLQuoteElement         :  false,\n            HTMLScriptElement        :  false,\n            HTMLSelectElement        :  false,\n            HTMLStyleElement         :  false,\n            HTMLTableCaptionElement  :  false,\n            HTMLTableCellElement     :  false,\n            HTMLTableColElement      :  false,\n            HTMLTableElement         :  false,\n            HTMLTableRowElement      :  false,\n            HTMLTableSectionElement  :  false,\n            HTMLTextAreaElement      :  false,\n            HTMLTitleElement         :  false,\n            HTMLUListElement         :  false,\n            HTMLVideoElement         :  false,\n            history                  :  false,\n            Int16Array               :  false,\n            Int32Array               :  false,\n            Int8Array                :  false,\n            Image                    :  false,\n            length                   :  false,\n            localStorage             :  false,\n            location                 :  false,\n            MessageChannel           :  false,\n            MessageEvent             :  false,\n            MessagePort              :  false,\n            moveBy                   :  false,\n            moveTo                   :  false,\n            MutationObserver         :  false,\n            name                     :  false,\n            Node                     :  false,\n            NodeFilter               :  false,\n            navigator                :  false,\n            onbeforeunload           :  true,\n            onblur                   :  true,\n            onerror                  :  true,\n            onfocus                  :  true,\n            onload                   :  true,\n            onresize                 :  true,\n            onunload                 :  true,\n            open                     :  false,\n            openDatabase             :  false,\n            opener                   :  false,\n            Option                   :  false,\n            parent                   :  false,\n            print                    :  false,\n            removeEventListener      :  false,\n            resizeBy                 :  false,\n            resizeTo                 :  false,\n            screen                   :  false,\n            scroll                   :  false,\n            scrollBy                 :  false,\n            scrollTo                 :  false,\n            sessionStorage           :  false,\n            setInterval              :  false,\n            setTimeout               :  false,\n            SharedWorker             :  false,\n            status                   :  false,\n            top                      :  false,\n            Uint16Array              :  false,\n            Uint32Array              :  false,\n            Uint8Array               :  false,\n            WebSocket                :  false,\n            window                   :  false,\n            Worker                   :  false,\n            XMLHttpRequest           :  false,\n            XMLSerializer            :  false,\n            XPathEvaluator           :  false,\n            XPathException           :  false,\n            XPathExpression          :  false,\n            XPathNamespace           :  false,\n            XPathNSResolver          :  false,\n            XPathResult              :  false\n        },\n\n        couch = {\n            \"require\" : false,\n            respond   : false,\n            getRow    : false,\n            emit      : false,\n            send      : false,\n            start     : false,\n            sum       : false,\n            log       : false,\n            exports   : false,\n            module    : false,\n            provides  : false\n        },\n\n        declared, // Globals that were declared using /*global ... */ syntax.\n\n        devel = {\n            alert   : false,\n            confirm : false,\n            console : false,\n            Debug   : false,\n            opera   : false,\n            prompt  : false\n        },\n\n        dojo = {\n            dojo      : false,\n            dijit     : false,\n            dojox     : false,\n            define    : false,\n            \"require\" : false\n        },\n\n        funct,          // The current function\n\n        functionicity = [\n            \"closure\", \"exception\", \"global\", \"label\",\n            \"outer\", \"unused\", \"var\"\n        ],\n\n        functions,      // All of the functions\n\n        global,         // The global scope\n        implied,        // Implied globals\n        inblock,\n        indent,\n        jsonmode,\n\n        jquery = {\n            \"$\"    : false,\n            jQuery : false\n        },\n\n        lines,\n        lookahead,\n        member,\n        membersOnly,\n\n        mootools = {\n            \"$\"             : false,\n            \"$$\"            : false,\n            Asset           : false,\n            Browser         : false,\n            Chain           : false,\n            Class           : false,\n            Color           : false,\n            Cookie          : false,\n            Core            : false,\n            Document        : false,\n            DomReady        : false,\n            DOMEvent        : false,\n            DOMReady        : false,\n            Drag            : false,\n            Element         : false,\n            Elements        : false,\n            Event           : false,\n            Events          : false,\n            Fx              : false,\n            Group           : false,\n            Hash            : false,\n            HtmlTable       : false,\n            Iframe          : false,\n            IframeShim      : false,\n            InputValidator  : false,\n            instanceOf      : false,\n            Keyboard        : false,\n            Locale          : false,\n            Mask            : false,\n            MooTools        : false,\n            Native          : false,\n            Options         : false,\n            OverText        : false,\n            Request         : false,\n            Scroller        : false,\n            Slick           : false,\n            Slider          : false,\n            Sortables       : false,\n            Spinner         : false,\n            Swiff           : false,\n            Tips            : false,\n            Type            : false,\n            typeOf          : false,\n            URI             : false,\n            Window          : false\n        },\n\n        nexttoken,\n\n        node = {\n            __filename    : false,\n            __dirname     : false,\n            Buffer        : false,\n            console       : false,\n            exports       : true,  // In Node it is ok to exports = module.exports = foo();\n            GLOBAL        : false,\n            global        : false,\n            module        : false,\n            process       : false,\n            require       : false,\n            setTimeout    : false,\n            clearTimeout  : false,\n            setInterval   : false,\n            clearInterval : false\n        },\n\n        noreach,\n        option,\n        predefined,     // Global variables defined by option\n        prereg,\n        prevtoken,\n\n        prototypejs = {\n            \"$\"               : false,\n            \"$$\"              : false,\n            \"$A\"              : false,\n            \"$F\"              : false,\n            \"$H\"              : false,\n            \"$R\"              : false,\n            \"$break\"          : false,\n            \"$continue\"       : false,\n            \"$w\"              : false,\n            Abstract          : false,\n            Ajax              : false,\n            Class             : false,\n            Enumerable        : false,\n            Element           : false,\n            Event             : false,\n            Field             : false,\n            Form              : false,\n            Hash              : false,\n            Insertion         : false,\n            ObjectRange       : false,\n            PeriodicalExecuter: false,\n            Position          : false,\n            Prototype         : false,\n            Selector          : false,\n            Template          : false,\n            Toggle            : false,\n            Try               : false,\n            Autocompleter     : false,\n            Builder           : false,\n            Control           : false,\n            Draggable         : false,\n            Draggables        : false,\n            Droppables        : false,\n            Effect            : false,\n            Sortable          : false,\n            SortableObserver  : false,\n            Sound             : false,\n            Scriptaculous     : false\n        },\n\n        quotmark,\n\n        rhino = {\n            defineClass  : false,\n            deserialize  : false,\n            gc           : false,\n            help         : false,\n            importPackage: false,\n            \"java\"       : false,\n            load         : false,\n            loadClass    : false,\n            print        : false,\n            quit         : false,\n            readFile     : false,\n            readUrl      : false,\n            runCommand   : false,\n            seal         : false,\n            serialize    : false,\n            spawn        : false,\n            sync         : false,\n            toint32      : false,\n            version      : false\n        },\n\n        scope,      // The current scope\n        stack,\n\n        // standard contains the global names that are provided by the\n        // ECMAScript standard.\n        standard = {\n            Array               : false,\n            Boolean             : false,\n            Date                : false,\n            decodeURI           : false,\n            decodeURIComponent  : false,\n            encodeURI           : false,\n            encodeURIComponent  : false,\n            Error               : false,\n            \"eval\"              : false,\n            EvalError           : false,\n            Function            : false,\n            hasOwnProperty      : false,\n            isFinite            : false,\n            isNaN               : false,\n            JSON                : false,\n            Map                 : false,\n            Math                : false,\n            NaN                 : false,\n            Number              : false,\n            Object              : false,\n            parseInt            : false,\n            parseFloat          : false,\n            RangeError          : false,\n            ReferenceError      : false,\n            RegExp              : false,\n            Set                 : false,\n            String              : false,\n            SyntaxError         : false,\n            TypeError           : false,\n            URIError            : false,\n            WeakMap             : false\n        },\n\n        // widely adopted global names that are not part of ECMAScript standard\n        nonstandard = {\n            escape              : false,\n            unescape            : false\n        },\n\n        directive,\n        syntax = {},\n        tab,\n        token,\n        unuseds,\n        urls,\n        useESNextSyntax,\n        warnings,\n\n        worker = {\n            importScripts       : true,\n            postMessage         : true,\n            self                : true\n        },\n\n        wsh = {\n            ActiveXObject             : true,\n            Enumerator                : true,\n            GetObject                 : true,\n            ScriptEngine              : true,\n            ScriptEngineBuildVersion  : true,\n            ScriptEngineMajorVersion  : true,\n            ScriptEngineMinorVersion  : true,\n            VBArray                   : true,\n            WSH                       : true,\n            WScript                   : true,\n            XDomainRequest            : true\n        },\n\n        yui = {\n            YUI             : false,\n            Y               : false,\n            YUI_config      : false\n        };\n    // Regular expressions. Some of these are stupidly long.\n    var ax, cx, tx, nx, nxg, lx, ix, jx, ft;\n    (function () {\n        /*jshint maxlen:300 */\n\n        // unsafe comment or string\n        ax = /@cc|<\\/?|script|\\]\\s*\\]|<\\s*!|&lt/i;\n\n        // unsafe characters that are silently deleted by one or more browsers\n        cx = /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/;\n\n        // token\n        tx = /^\\s*([(){}\\[.,:;'\"~\\?\\]#@]|==?=?|\\/=(?!(\\S*\\/[gim]?))|\\/(\\*(jshint|jslint|members?|global)?|\\/)?|\\*[\\/=]?|\\+(?:=|\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\|[|=]?|>>?>?=?|<([\\/=!]|\\!(\\[|--)?|<=?)?|\\^=?|\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\.[0-9]*)?([eE][+\\-]?[0-9]+)?)/;\n\n        // characters in strings that need escapement\n        nx = /[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/;\n        nxg = /[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n        // star slash\n        lx = /\\*\\//;\n\n        // identifier\n        ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;\n\n        // javascript url\n        jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\s*:/i;\n\n        // catches /* falls through */ comments\n        ft = /^\\s*\\/\\*\\s*falls\\sthrough\\s*\\*\\/\\s*$/;\n    }());\n\n    function F() {}     // Used by Object.create\n\n    function is_own(object, name) {\n        // The object.hasOwnProperty method fails when the property under consideration\n        // is named 'hasOwnProperty'. So we have to use this more convoluted form.\n        return Object.prototype.hasOwnProperty.call(object, name);\n    }\n\n    function checkOption(name, t) {\n        if (valOptions[name] === undefined && boolOptions[name] === undefined) {\n            warning(\"Bad option: '\" + name + \"'.\", t);\n        }\n    }\n\n    function isString(obj) {\n        return Object.prototype.toString.call(obj) === \"[object String]\";\n    }\n\n    // Provide critical ES5 functions to ES3.\n\n    if (typeof Array.isArray !== \"function\") {\n        Array.isArray = function (o) {\n            return Object.prototype.toString.apply(o) === \"[object Array]\";\n        };\n    }\n\n    if (!Array.prototype.forEach) {\n        Array.prototype.forEach = function (fn, scope) {\n            var len = this.length;\n\n            for (var i = 0; i < len; i++) {\n                fn.call(scope || this, this[i], i, this);\n            }\n        };\n    }\n\n    if (!Array.prototype.indexOf) {\n        Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {\n            if (this === null || this === undefined) {\n                throw new TypeError();\n            }\n\n            var t = new Object(this);\n            var len = t.length >>> 0;\n\n            if (len === 0) {\n                return -1;\n            }\n\n            var n = 0;\n            if (arguments.length > 0) {\n                n = Number(arguments[1]);\n                if (n != n) { // shortcut for verifying if it's NaN\n                    n = 0;\n                } else if (n !== 0 && n != Infinity && n != -Infinity) {\n                    n = (n > 0 || -1) * Math.floor(Math.abs(n));\n                }\n            }\n\n            if (n >= len) {\n                return -1;\n            }\n\n            var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n            for (; k < len; k++) {\n                if (k in t && t[k] === searchElement) {\n                    return k;\n                }\n            }\n\n            return -1;\n        };\n    }\n\n    if (typeof Object.create !== \"function\") {\n        Object.create = function (o) {\n            F.prototype = o;\n            return new F();\n        };\n    }\n\n    if (typeof Object.keys !== \"function\") {\n        Object.keys = function (o) {\n            var a = [], k;\n            for (k in o) {\n                if (is_own(o, k)) {\n                    a.push(k);\n                }\n            }\n            return a;\n        };\n    }\n\n    // Non standard methods\n\n    function isAlpha(str) {\n        return (str >= \"a\" && str <= \"z\\uffff\") ||\n            (str >= \"A\" && str <= \"Z\\uffff\");\n    }\n\n    function isDigit(str) {\n        return (str >= \"0\" && str <= \"9\");\n    }\n\n    function isIdentifier(token, value) {\n        if (!token)\n            return false;\n\n        if (!token.identifier || token.value !== value)\n            return false;\n\n        return true;\n    }\n\n    function supplant(str, data) {\n        return str.replace(/\\{([^{}]*)\\}/g, function (a, b) {\n            var r = data[b];\n            return typeof r === \"string\" || typeof r === \"number\" ? r : a;\n        });\n    }\n\n    function combine(t, o) {\n        var n;\n        for (n in o) {\n            if (is_own(o, n) && !is_own(JSHINT.blacklist, n)) {\n                t[n] = o[n];\n            }\n        }\n    }\n\n    function updatePredefined() {\n        Object.keys(JSHINT.blacklist).forEach(function (key) {\n            delete predefined[key];\n        });\n    }\n\n    function assume() {\n        if (option.couch) {\n            combine(predefined, couch);\n        }\n\n        if (option.rhino) {\n            combine(predefined, rhino);\n        }\n\n        if (option.prototypejs) {\n            combine(predefined, prototypejs);\n        }\n\n        if (option.node) {\n            combine(predefined, node);\n            option.globalstrict = true;\n        }\n\n        if (option.devel) {\n            combine(predefined, devel);\n        }\n\n        if (option.dojo) {\n            combine(predefined, dojo);\n        }\n\n        if (option.browser) {\n            combine(predefined, browser);\n        }\n\n        if (option.nonstandard) {\n            combine(predefined, nonstandard);\n        }\n\n        if (option.jquery) {\n            combine(predefined, jquery);\n        }\n\n        if (option.mootools) {\n            combine(predefined, mootools);\n        }\n\n        if (option.worker) {\n            combine(predefined, worker);\n        }\n\n        if (option.wsh) {\n            combine(predefined, wsh);\n        }\n\n        if (option.esnext) {\n            useESNextSyntax();\n        }\n\n        if (option.globalstrict && option.strict !== false) {\n            option.strict = true;\n        }\n\n        if (option.yui) {\n            combine(predefined, yui);\n        }\n    }\n\n\n    // Produce an error warning.\n    function quit(message, line, chr) {\n        var percentage = Math.floor((line / lines.length) * 100);\n\n        throw {\n            name: \"JSHintError\",\n            line: line,\n            character: chr,\n            message: message + \" (\" + percentage + \"% scanned).\",\n            raw: message\n        };\n    }\n\n    function isundef(scope, m, t, a) {\n        return JSHINT.undefs.push([scope, m, t, a]);\n    }\n\n    function warning(m, t, a, b, c, d) {\n        var ch, l, w;\n        t = t || nexttoken;\n        if (t.id === \"(end)\") {  // `~\n            t = token;\n        }\n        l = t.line || 0;\n        ch = t.from || 0;\n        w = {\n            id: \"(error)\",\n            raw: m,\n            evidence: lines[l - 1] || \"\",\n            line: l,\n            character: ch,\n            scope: JSHINT.scope,\n            a: a,\n            b: b,\n            c: c,\n            d: d\n        };\n        w.reason = supplant(m, w);\n        JSHINT.errors.push(w);\n        if (option.passfail) {\n            quit(\"Stopping. \", l, ch);\n        }\n        warnings += 1;\n        if (warnings >= option.maxerr) {\n            quit(\"Too many errors.\", l, ch);\n        }\n        return w;\n    }\n\n    function warningAt(m, l, ch, a, b, c, d) {\n        return warning(m, {\n            line: l,\n            from: ch\n        }, a, b, c, d);\n    }\n\n    function error(m, t, a, b, c, d) {\n        warning(m, t, a, b, c, d);\n    }\n\n    function errorAt(m, l, ch, a, b, c, d) {\n        return error(m, {\n            line: l,\n            from: ch\n        }, a, b, c, d);\n    }\n\n    // Tracking of \"internal\" scripts, like eval containing a static string\n    function addInternalSrc(elem, src) {\n        var i;\n        i = {\n            id: \"(internal)\",\n            elem: elem,\n            value: src\n        };\n        JSHINT.internals.push(i);\n        return i;\n    }\n\n\n// lexical analysis and token construction\n\n    var lex = (function lex() {\n        var character, from, line, s;\n\n// Private lex methods\n\n        function nextLine() {\n            var at,\n                match,\n                tw; // trailing whitespace check\n\n            if (line >= lines.length)\n                return false;\n\n            character = 1;\n            s = lines[line];\n            line += 1;\n\n            // If smarttabs option is used check for spaces followed by tabs only.\n            // Otherwise check for any occurence of mixed tabs and spaces.\n            // Tabs and one space followed by block comment is allowed.\n            if (option.smarttabs) {\n                // negative look-behind for \"//\"\n                match = s.match(/(\\/\\/)? \\t/);\n                at = match && !match[1] ? 0 : -1;\n            } else {\n                at = s.search(/ \\t|\\t [^\\*]/);\n            }\n\n            if (at >= 0)\n                warningAt(\"Mixed spaces and tabs.\", line, at + 1);\n\n            s = s.replace(/\\t/g, tab);\n            at = s.search(cx);\n\n            if (at >= 0)\n                warningAt(\"Unsafe character.\", line, at);\n\n            if (option.maxlen && option.maxlen < s.length)\n                warningAt(\"Line too long.\", line, s.length);\n\n            // Check for trailing whitespaces\n            tw = option.trailing && s.match(/^(.*?)\\s+$/);\n            if (tw && !/^\\s+$/.test(s)) {\n                warningAt(\"Trailing whitespace.\", line, tw[1].length + 1);\n            }\n            return true;\n        }\n\n// Produce a token object.  The token inherits from a syntax symbol.\n\n        function it(type, value) {\n            var i, t;\n\n            function checkName(name) {\n                if (!option.proto && name === \"__proto__\") {\n                    warningAt(\"The '{a}' property is deprecated.\", line, from, name);\n                    return;\n                }\n\n                if (!option.iterator && name === \"__iterator__\") {\n                    warningAt(\"'{a}' is only available in JavaScript 1.7.\", line, from, name);\n                    return;\n                }\n\n                // Check for dangling underscores unless we're in Node\n                // environment and this identifier represents built-in\n                // Node globals with underscores.\n\n                var hasDangling = /^(_+.*|.*_+)$/.test(name);\n\n                if (option.nomen && hasDangling && name !== \"_\") {\n                    if (option.node && token.id !== \".\" && /^(__dirname|__filename)$/.test(name))\n                        return;\n\n                    warningAt(\"Unexpected {a} in '{b}'.\", line, from, \"dangling '_'\", name);\n                    return;\n                }\n\n                // Check for non-camelcase names. Names like MY_VAR and\n                // _myVar are okay though.\n\n                if (option.camelcase) {\n                    if (name.replace(/^_+/, \"\").indexOf(\"_\") > -1 && !name.match(/^[A-Z0-9_]*$/)) {\n                        warningAt(\"Identifier '{a}' is not in camel case.\", line, from, value);\n                    }\n                }\n            }\n\n            if (type === \"(color)\" || type === \"(range)\") {\n                t = {type: type};\n            } else if (type === \"(punctuator)\" ||\n                    (type === \"(identifier)\" && is_own(syntax, value))) {\n                t = syntax[value] || syntax[\"(error)\"];\n            } else {\n                t = syntax[type];\n            }\n\n            t = Object.create(t);\n\n            if (type === \"(string)\" || type === \"(range)\") {\n                if (!option.scripturl && jx.test(value)) {\n                    warningAt(\"Script URL.\", line, from);\n                }\n            }\n\n            if (type === \"(identifier)\") {\n                t.identifier = true;\n                checkName(value);\n            }\n\n            t.value = value;\n            t.line = line;\n            t.character = character;\n            t.from = from;\n            i = t.id;\n            if (i !== \"(endline)\") {\n                prereg = i &&\n                    ((\"(,=:[!&|?{};\".indexOf(i.charAt(i.length - 1)) >= 0) ||\n                    i === \"return\" ||\n                    i === \"case\");\n            }\n            return t;\n        }\n\n        // Public lex methods\n        return {\n            init: function (source) {\n                if (typeof source === \"string\") {\n                    lines = source\n                        .replace(/\\r\\n/g, \"\\n\")\n                        .replace(/\\r/g, \"\\n\")\n                        .split(\"\\n\");\n                } else {\n                    lines = source;\n                }\n\n                // If the first line is a shebang (#!), make it a blank and move on.\n                // Shebangs are used by Node scripts.\n                if (lines[0] && lines[0].substr(0, 2) === \"#!\")\n                    lines[0] = \"\";\n\n                line = 0;\n                nextLine();\n                from = 1;\n            },\n\n            range: function (begin, end) {\n                var c, value = \"\";\n                from = character;\n                if (s.charAt(0) !== begin) {\n                    errorAt(\"Expected '{a}' and instead saw '{b}'.\",\n                            line, character, begin, s.charAt(0));\n                }\n                for (;;) {\n                    s = s.slice(1);\n                    character += 1;\n                    c = s.charAt(0);\n                    switch (c) {\n                    case \"\":\n                        errorAt(\"Missing '{a}'.\", line, character, c);\n                        break;\n                    case end:\n                        s = s.slice(1);\n                        character += 1;\n                        return it(\"(range)\", value);\n                    case \"\\\\\":\n                        warningAt(\"Unexpected '{a}'.\", line, character, c);\n                    }\n                    value += c;\n                }\n\n            },\n\n\n            // token -- this is called by advance to get the next token\n            token: function () {\n                var b, c, captures, d, depth, high, i, l, low, q, t, isLiteral, isInRange, n;\n\n                function match(x) {\n                    var r = x.exec(s), r1;\n\n                    if (r) {\n                        l = r[0].length;\n                        r1 = r[1];\n                        c = r1.charAt(0);\n                        s = s.substr(l);\n                        from = character + l - r1.length;\n                        character += l;\n                        return r1;\n                    }\n                }\n\n                function string(x) {\n                    var c, j, r = \"\", allowNewLine = false;\n\n                    if (jsonmode && x !== \"\\\"\") {\n                        warningAt(\"Strings must use doublequote.\",\n                                line, character);\n                    }\n\n                    if (option.quotmark) {\n                        if (option.quotmark === \"single\" && x !== \"'\") {\n                            warningAt(\"Strings must use singlequote.\",\n                                    line, character);\n                        } else if (option.quotmark === \"double\" && x !== \"\\\"\") {\n                            warningAt(\"Strings must use doublequote.\",\n                                    line, character);\n                        } else if (option.quotmark === true) {\n                            quotmark = quotmark || x;\n                            if (quotmark !== x) {\n                                warningAt(\"Mixed double and single quotes.\",\n                                        line, character);\n                            }\n                        }\n                    }\n\n                    function esc(n) {\n                        var i = parseInt(s.substr(j + 1, n), 16);\n                        j += n;\n                        if (i >= 32 && i <= 126 &&\n                                i !== 34 && i !== 92 && i !== 39) {\n                            warningAt(\"Unnecessary escapement.\", line, character);\n                        }\n                        character += n;\n                        c = String.fromCharCode(i);\n                    }\n\n                    j = 0;\n\nunclosedString:\n                    for (;;) {\n                        while (j >= s.length) {\n                            j = 0;\n\n                            var cl = line, cf = from;\n                            if (!nextLine()) {\n                                errorAt(\"Unclosed string.\", cl, cf);\n                                break unclosedString;\n                            }\n\n                            if (allowNewLine) {\n                                allowNewLine = false;\n                            } else {\n                                warningAt(\"Unclosed string.\", cl, cf);\n                            }\n                        }\n\n                        c = s.charAt(j);\n                        if (c === x) {\n                            character += 1;\n                            s = s.substr(j + 1);\n                            return it(\"(string)\", r, x);\n                        }\n\n                        if (c < \" \") {\n                            if (c === \"\\n\" || c === \"\\r\") {\n                                break;\n                            }\n                            warningAt(\"Control character in string: {a}.\",\n                                    line, character + j, s.slice(0, j));\n                        } else if (c === \"\\\\\") {\n                            j += 1;\n                            character += 1;\n                            c = s.charAt(j);\n                            n = s.charAt(j + 1);\n                            switch (c) {\n                            case \"\\\\\":\n                            case \"\\\"\":\n                            case \"/\":\n                                break;\n                            case \"\\'\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\'.\", line, character);\n                                }\n                                break;\n                            case \"b\":\n                                c = \"\\b\";\n                                break;\n                            case \"f\":\n                                c = \"\\f\";\n                                break;\n                            case \"n\":\n                                c = \"\\n\";\n                                break;\n                            case \"r\":\n                                c = \"\\r\";\n                                break;\n                            case \"t\":\n                                c = \"\\t\";\n                                break;\n                            case \"0\":\n                                c = \"\\0\";\n                                // Octal literals fail in strict mode\n                                // check if the number is between 00 and 07\n                                // where 'n' is the token next to 'c'\n                                if (n >= 0 && n <= 7 && directive[\"use strict\"]) {\n                                    warningAt(\n                                    \"Octal literals are not allowed in strict mode.\",\n                                    line, character);\n                                }\n                                break;\n                            case \"u\":\n                                esc(4);\n                                break;\n                            case \"v\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\v.\", line, character);\n                                }\n                                c = \"\\v\";\n                                break;\n                            case \"x\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\x-.\", line, character);\n                                }\n                                esc(2);\n                                break;\n                            case \"\":\n                                // last character is escape character\n                                // always allow new line if escaped, but show\n                                // warning if option is not set\n                                allowNewLine = true;\n                                if (option.multistr) {\n                                    if (jsonmode) {\n                                        warningAt(\"Avoid EOL escapement.\", line, character);\n                                    }\n                                    c = \"\";\n                                    character -= 1;\n                                    break;\n                                }\n                                warningAt(\"Bad escapement of EOL. Use option multistr if needed.\",\n                                    line, character);\n                                break;\n                            case \"!\":\n                                if (s.charAt(j - 2) === \"<\")\n                                    break;\n                                /*falls through*/\n                            default:\n                                warningAt(\"Bad escapement.\", line, character);\n                            }\n                        }\n                        r += c;\n                        character += 1;\n                        j += 1;\n                    }\n                }\n\n                for (;;) {\n                    if (!s) {\n                        return it(nextLine() ? \"(endline)\" : \"(end)\", \"\");\n                    }\n\n                    t = match(tx);\n\n                    if (!t) {\n                        t = \"\";\n                        c = \"\";\n                        while (s && s < \"!\") {\n                            s = s.substr(1);\n                        }\n                        if (s) {\n                            errorAt(\"Unexpected '{a}'.\", line, character, s.substr(0, 1));\n                            s = \"\";\n                        }\n                    } else {\n\n    //      identifier\n\n                        if (isAlpha(c) || c === \"_\" || c === \"$\") {\n                            return it(\"(identifier)\", t);\n                        }\n\n    //      number\n\n                        if (isDigit(c)) {\n                            if (!isFinite(Number(t))) {\n                                warningAt(\"Bad number '{a}'.\",\n                                    line, character, t);\n                            }\n                            if (isAlpha(s.substr(0, 1))) {\n                                warningAt(\"Missing space after '{a}'.\",\n                                        line, character, t);\n                            }\n                            if (c === \"0\") {\n                                d = t.substr(1, 1);\n                                if (isDigit(d)) {\n                                    if (token.id !== \".\") {\n                                        warningAt(\"Don't use extra leading zeros '{a}'.\",\n                                            line, character, t);\n                                    }\n                                } else if (jsonmode && (d === \"x\" || d === \"X\")) {\n                                    warningAt(\"Avoid 0x-. '{a}'.\",\n                                            line, character, t);\n                                }\n                            }\n                            if (t.substr(t.length - 1) === \".\") {\n                                warningAt(\n\"A trailing decimal point can be confused with a dot '{a}'.\", line, character, t);\n                            }\n                            return it(\"(number)\", t);\n                        }\n                        switch (t) {\n\n    //      string\n\n                        case \"\\\"\":\n                        case \"'\":\n                            return string(t);\n\n    //      // comment\n\n                        case \"//\":\n                            s = \"\";\n                            token.comment = true;\n                            break;\n\n    //      /* comment\n\n                        case \"/*\":\n                            for (;;) {\n                                i = s.search(lx);\n                                if (i >= 0) {\n                                    break;\n                                }\n                                if (!nextLine()) {\n                                    errorAt(\"Unclosed comment.\", line, character);\n                                }\n                            }\n                            s = s.substr(i + 2);\n                            token.comment = true;\n                            break;\n\n    //      /*members /*jshint /*global\n\n                        case \"/*members\":\n                        case \"/*member\":\n                        case \"/*jshint\":\n                        case \"/*jslint\":\n                        case \"/*global\":\n                        case \"*/\":\n                            return {\n                                value: t,\n                                type: \"special\",\n                                line: line,\n                                character: character,\n                                from: from\n                            };\n\n                        case \"\":\n                            break;\n    //      /\n                        case \"/\":\n                            if (s.charAt(0) === \"=\") {\n                                errorAt(\"A regular expression literal can be confused with '/='.\",\n                                    line, from);\n                            }\n\n                            if (prereg) {\n                                depth = 0;\n                                captures = 0;\n                                l = 0;\n                                for (;;) {\n                                    b = true;\n                                    c = s.charAt(l);\n                                    l += 1;\n                                    switch (c) {\n                                    case \"\":\n                                        errorAt(\"Unclosed regular expression.\", line, from);\n                                        return quit(\"Stopping.\", line, from);\n                                    case \"/\":\n                                        if (depth > 0) {\n                                            warningAt(\"{a} unterminated regular expression \" +\n                                                \"group(s).\", line, from + l, depth);\n                                        }\n                                        c = s.substr(0, l - 1);\n                                        q = {\n                                            g: true,\n                                            i: true,\n                                            m: true\n                                        };\n                                        while (q[s.charAt(l)] === true) {\n                                            q[s.charAt(l)] = false;\n                                            l += 1;\n                                        }\n                                        character += l;\n                                        s = s.substr(l);\n                                        q = s.charAt(0);\n                                        if (q === \"/\" || q === \"*\") {\n                                            errorAt(\"Confusing regular expression.\",\n                                                    line, from);\n                                        }\n                                        return it(\"(regexp)\", c);\n                                    case \"\\\\\":\n                                        c = s.charAt(l);\n                                        if (c < \" \") {\n                                            warningAt(\n\"Unexpected control character in regular expression.\", line, from + l);\n                                        } else if (c === \"<\") {\n                                            warningAt(\n\"Unexpected escaped character '{a}' in regular expression.\", line, from + l, c);\n                                        }\n                                        l += 1;\n                                        break;\n                                    case \"(\":\n                                        depth += 1;\n                                        b = false;\n                                        if (s.charAt(l) === \"?\") {\n                                            l += 1;\n                                            switch (s.charAt(l)) {\n                                            case \":\":\n                                            case \"=\":\n                                            case \"!\":\n                                                l += 1;\n                                                break;\n                                            default:\n                                                warningAt(\n\"Expected '{a}' and instead saw '{b}'.\", line, from + l, \":\", s.charAt(l));\n                                            }\n                                        } else {\n                                            captures += 1;\n                                        }\n                                        break;\n                                    case \"|\":\n                                        b = false;\n                                        break;\n                                    case \")\":\n                                        if (depth === 0) {\n                                            warningAt(\"Unescaped '{a}'.\",\n                                                    line, from + l, \")\");\n                                        } else {\n                                            depth -= 1;\n                                        }\n                                        break;\n                                    case \" \":\n                                        q = 1;\n                                        while (s.charAt(l) === \" \") {\n                                            l += 1;\n                                            q += 1;\n                                        }\n                                        if (q > 1) {\n                                            warningAt(\n\"Spaces are hard to count. Use {{a}}.\", line, from + l, q);\n                                        }\n                                        break;\n                                    case \"[\":\n                                        c = s.charAt(l);\n                                        if (c === \"^\") {\n                                            l += 1;\n                                            if (s.charAt(l) === \"]\") {\n                                                errorAt(\"Unescaped '{a}'.\",\n                                                    line, from + l, \"^\");\n                                            }\n                                        }\n                                        if (c === \"]\") {\n                                            warningAt(\"Empty class.\", line,\n                                                    from + l - 1);\n                                        }\n                                        isLiteral = false;\n                                        isInRange = false;\nklass:\n                                        do {\n                                            c = s.charAt(l);\n                                            l += 1;\n                                            switch (c) {\n                                            case \"[\":\n                                            case \"^\":\n                                                warningAt(\"Unescaped '{a}'.\",\n                                                        line, from + l, c);\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"-\":\n                                                if (isLiteral && !isInRange) {\n                                                    isLiteral = false;\n                                                    isInRange = true;\n                                                } else if (isInRange) {\n                                                    isInRange = false;\n                                                } else if (s.charAt(l) === \"]\") {\n                                                    isInRange = true;\n                                                } else {\n                                                    if (option.regexdash !== (l === 2 || (l === 3 &&\n                                                        s.charAt(1) === \"^\"))) {\n                                                        warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l - 1, \"-\");\n                                                    }\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"]\":\n                                                if (isInRange && !option.regexdash) {\n                                                    warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l - 1, \"-\");\n                                                }\n                                                break klass;\n                                            case \"\\\\\":\n                                                c = s.charAt(l);\n                                                if (c < \" \") {\n                                                    warningAt(\n\"Unexpected control character in regular expression.\", line, from + l);\n                                                } else if (c === \"<\") {\n                                                    warningAt(\n\"Unexpected escaped character '{a}' in regular expression.\", line, from + l, c);\n                                                }\n                                                l += 1;\n\n                                                // \\w, \\s and \\d are never part of a character range\n                                                if (/[wsd]/i.test(c)) {\n                                                    if (isInRange) {\n                                                        warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l, \"-\");\n                                                        isInRange = false;\n                                                    }\n                                                    isLiteral = false;\n                                                } else if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"/\":\n                                                warningAt(\"Unescaped '{a}'.\",\n                                                        line, from + l - 1, \"/\");\n\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"<\":\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            default:\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                            }\n                                        } while (c);\n                                        break;\n                                    case \".\":\n                                        if (option.regexp) {\n                                            warningAt(\"Insecure '{a}'.\", line,\n                                                    from + l, c);\n                                        }\n                                        break;\n                                    case \"]\":\n                                    case \"?\":\n                                    case \"{\":\n                                    case \"}\":\n                                    case \"+\":\n                                    case \"*\":\n                                        warningAt(\"Unescaped '{a}'.\", line,\n                                                from + l, c);\n                                    }\n                                    if (b) {\n                                        switch (s.charAt(l)) {\n                                        case \"?\":\n                                        case \"+\":\n                                        case \"*\":\n                                            l += 1;\n                                            if (s.charAt(l) === \"?\") {\n                                                l += 1;\n                                            }\n                                            break;\n                                        case \"{\":\n                                            l += 1;\n                                            c = s.charAt(l);\n                                            if (c < \"0\" || c > \"9\") {\n                                                warningAt(\n\"Expected a number and instead saw '{a}'.\", line, from + l, c);\n                                                break; // No reason to continue checking numbers.\n                                            }\n                                            l += 1;\n                                            low = +c;\n                                            for (;;) {\n                                                c = s.charAt(l);\n                                                if (c < \"0\" || c > \"9\") {\n                                                    break;\n                                                }\n                                                l += 1;\n                                                low = +c + (low * 10);\n                                            }\n                                            high = low;\n                                            if (c === \",\") {\n                                                l += 1;\n                                                high = Infinity;\n                                                c = s.charAt(l);\n                                                if (c >= \"0\" && c <= \"9\") {\n                                                    l += 1;\n                                                    high = +c;\n                                                    for (;;) {\n                                                        c = s.charAt(l);\n                                                        if (c < \"0\" || c > \"9\") {\n                                                            break;\n                                                        }\n                                                        l += 1;\n                                                        high = +c + (high * 10);\n                                                    }\n                                                }\n                                            }\n                                            if (s.charAt(l) !== \"}\") {\n                                                warningAt(\n\"Expected '{a}' and instead saw '{b}'.\", line, from + l, \"}\", c);\n                                            } else {\n                                                l += 1;\n                                            }\n                                            if (s.charAt(l) === \"?\") {\n                                                l += 1;\n                                            }\n                                            if (low > high) {\n                                                warningAt(\n\"'{a}' should not be greater than '{b}'.\", line, from + l, low, high);\n                                            }\n                                        }\n                                    }\n                                }\n                                c = s.substr(0, l - 1);\n                                character += l;\n                                s = s.substr(l);\n                                return it(\"(regexp)\", c);\n                            }\n                            return it(\"(punctuator)\", t);\n\n    //      punctuator\n\n                        case \"#\":\n                            return it(\"(punctuator)\", t);\n                        default:\n                            return it(\"(punctuator)\", t);\n                        }\n                    }\n                }\n            }\n        };\n    }());\n\n\n    function addlabel(t, type, token) {\n        if (t === \"hasOwnProperty\") {\n            warning(\"'hasOwnProperty' is a really bad name.\");\n        }\n\n        // Define t in the current function in the current scope.\n        if (type === \"exception\") {\n            if (is_own(funct[\"(context)\"], t)) {\n                if (funct[t] !== true && !option.node) {\n                    warning(\"Value of '{a}' may be overwritten in IE.\", nexttoken, t);\n                }\n            }\n        }\n\n        if (is_own(funct, t) && !funct[\"(global)\"]) {\n            if (funct[t] === true) {\n                if (option.latedef)\n                    warning(\"'{a}' was used before it was defined.\", nexttoken, t);\n            } else {\n                if (!option.shadow && type !== \"exception\") {\n                    warning(\"'{a}' is already defined.\", nexttoken, t);\n                }\n            }\n        }\n\n        funct[t] = type;\n\n        if (token) {\n            funct[\"(tokens)\"][t] = token;\n        }\n\n        if (funct[\"(global)\"]) {\n            global[t] = funct;\n            if (is_own(implied, t)) {\n                if (option.latedef)\n                    warning(\"'{a}' was used before it was defined.\", nexttoken, t);\n                delete implied[t];\n            }\n        } else {\n            scope[t] = funct;\n        }\n    }\n\n\n    function doOption() {\n        var nt = nexttoken;\n        var o  = nt.value;\n        var quotmarkValue = option.quotmark;\n        var predef = {};\n        var b, obj, filter, t, tn, v, minus;\n\n        switch (o) {\n        case \"*/\":\n            error(\"Unbegun comment.\");\n            break;\n        case \"/*members\":\n        case \"/*member\":\n            o = \"/*members\";\n            if (!membersOnly) {\n                membersOnly = {};\n            }\n            obj = membersOnly;\n            option.quotmark = false;\n            break;\n        case \"/*jshint\":\n        case \"/*jslint\":\n            obj = option;\n            filter = boolOptions;\n            break;\n        case \"/*global\":\n            obj = predef;\n            break;\n        default:\n            error(\"What?\");\n        }\n\n        t = lex.token();\n\nloop:\n        for (;;) {\n            minus = false;\n            for (;;) {\n                if (t.type === \"special\" && t.value === \"*/\") {\n                    break loop;\n                }\n                if (t.id !== \"(endline)\" && t.id !== \",\") {\n                    break;\n                }\n                t = lex.token();\n            }\n\n            if (o === \"/*global\" && t.value === \"-\") {\n                minus = true;\n                t = lex.token();\n            }\n\n            if (t.type !== \"(string)\" && t.type !== \"(identifier)\" && o !== \"/*members\") {\n                error(\"Bad option.\", t);\n            }\n\n            v = lex.token();\n            if (v.id === \":\") {\n                v = lex.token();\n\n                if (obj === membersOnly) {\n                    error(\"Expected '{a}' and instead saw '{b}'.\", t, \"*/\", \":\");\n                }\n\n                if (o === \"/*jshint\") {\n                    checkOption(t.value, t);\n                }\n\n                var numericVals = [\n                    \"maxstatements\",\n                    \"maxparams\",\n                    \"maxdepth\",\n                    \"maxcomplexity\",\n                    \"maxerr\",\n                    \"maxlen\",\n                    \"indent\"\n                ];\n\n                if (numericVals.indexOf(t.value) > -1 && (o === \"/*jshint\" || o === \"/*jslint\")) {\n                    b = +v.value;\n\n                    if (typeof b !== \"number\" || !isFinite(b) || b <= 0 || Math.floor(b) !== b) {\n                        error(\"Expected a small integer and instead saw '{a}'.\", v, v.value);\n                    }\n\n                    if (t.value === \"indent\")\n                        obj.white = true;\n\n                    obj[t.value] = b;\n                } else if (t.value === \"validthis\") {\n                    if (funct[\"(global)\"]) {\n                        error(\"Option 'validthis' can't be used in a global scope.\");\n                    } else {\n                        if (v.value === \"true\" || v.value === \"false\")\n                            obj[t.value] = v.value === \"true\";\n                        else\n                            error(\"Bad option value.\", v);\n                    }\n                } else if (t.value === \"quotmark\" && (o === \"/*jshint\")) {\n                    switch (v.value) {\n                    case \"true\":\n                        obj.quotmark = true;\n                        break;\n                    case \"false\":\n                        obj.quotmark = false;\n                        break;\n                    case \"double\":\n                    case \"single\":\n                        obj.quotmark = v.value;\n                        break;\n                    default:\n                        error(\"Bad option value.\", v);\n                    }\n                } else if (v.value === \"true\" || v.value === \"false\") {\n                    if (o === \"/*jslint\") {\n                        tn = renamedOptions[t.value] || t.value;\n                        obj[tn] = v.value === \"true\";\n                        if (invertedOptions[tn] !== undefined) {\n                            obj[tn] = !obj[tn];\n                        }\n                    } else {\n                        obj[t.value] = v.value === \"true\";\n                    }\n\n                    if (t.value === \"newcap\")\n                        obj[\"(explicitNewcap)\"] = true;\n                } else {\n                    error(\"Bad option value.\", v);\n                }\n                t = lex.token();\n            } else {\n                if (o === \"/*jshint\" || o === \"/*jslint\") {\n                    error(\"Missing option value.\", t);\n                }\n\n                obj[t.value] = false;\n\n                if (o === \"/*global\" && minus === true) {\n                    JSHINT.blacklist[t.value] = t.value;\n                    updatePredefined();\n                }\n\n                t = v;\n            }\n        }\n\n        if (o === \"/*members\") {\n            option.quotmark = quotmarkValue;\n        }\n\n        combine(predefined, predef);\n\n        for (var key in predef) {\n            if (is_own(predef, key)) {\n                declared[key] = nt;\n            }\n        }\n\n        if (filter) {\n            assume();\n        }\n    }\n\n\n// We need a peek function. If it has an argument, it peeks that much farther\n// ahead. It is used to distinguish\n//     for ( var i in ...\n// from\n//     for ( var i = ...\n\n    function peek(p) {\n        var i = p || 0, j = 0, t;\n\n        while (j <= i) {\n            t = lookahead[j];\n            if (!t) {\n                t = lookahead[j] = lex.token();\n            }\n            j += 1;\n        }\n        return t;\n    }\n\n\n\n// Produce the next token. It looks for programming errors.\n\n    function advance(id, t) {\n        switch (token.id) {\n        case \"(number)\":\n            if (nexttoken.id === \".\") {\n                warning(\"A dot following a number can be confused with a decimal point.\", token);\n            }\n            break;\n        case \"-\":\n            if (nexttoken.id === \"-\" || nexttoken.id === \"--\") {\n                warning(\"Confusing minusses.\");\n            }\n            break;\n        case \"+\":\n            if (nexttoken.id === \"+\" || nexttoken.id === \"++\") {\n                warning(\"Confusing plusses.\");\n            }\n            break;\n        }\n\n        if (token.type === \"(string)\" || token.identifier) {\n            anonname = token.value;\n        }\n\n        if (id && nexttoken.id !== id) {\n            if (t) {\n                if (nexttoken.id === \"(end)\") {\n                    warning(\"Unmatched '{a}'.\", t, t.id);\n                } else {\n                    warning(\"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.\",\n                            nexttoken, id, t.id, t.line, nexttoken.value);\n                }\n            } else if (nexttoken.type !== \"(identifier)\" ||\n                            nexttoken.value !== id) {\n                warning(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, id, nexttoken.value);\n            }\n        }\n\n        prevtoken = token;\n        token = nexttoken;\n        for (;;) {\n            nexttoken = lookahead.shift() || lex.token();\n            if (nexttoken.id === \"(end)\" || nexttoken.id === \"(error)\") {\n                return;\n            }\n            if (nexttoken.type === \"special\") {\n                doOption();\n            } else {\n                if (nexttoken.id !== \"(endline)\") {\n                    break;\n                }\n            }\n        }\n    }\n\n\n// This is the heart of JSHINT, the Pratt parser. In addition to parsing, it\n// is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is\n// like .nud except that it is only used on the first token of a statement.\n// Having .fud makes it much easier to define statement-oriented languages like\n// JavaScript. I retained Pratt's nomenclature.\n\n// .nud     Null denotation\n// .fud     First null denotation\n// .led     Left denotation\n//  lbp     Left binding power\n//  rbp     Right binding power\n\n// They are elements of the parsing method called Top Down Operator Precedence.\n\n    function expression(rbp, initial) {\n        var left, isArray = false, isObject = false;\n\n        if (nexttoken.id === \"(end)\")\n            error(\"Unexpected early end of program.\", token);\n\n        advance();\n        if (initial) {\n            anonname = \"anonymous\";\n            funct[\"(verb)\"] = token.value;\n        }\n        if (initial === true && token.fud) {\n            left = token.fud();\n        } else {\n            if (token.nud) {\n                left = token.nud();\n            } else {\n                if (nexttoken.type === \"(number)\" && token.id === \".\") {\n                    warning(\"A leading decimal point can be confused with a dot: '.{a}'.\",\n                            token, nexttoken.value);\n                    advance();\n                    return token;\n                } else {\n                    error(\"Expected an identifier and instead saw '{a}'.\",\n                            token, token.id);\n                }\n            }\n            while (rbp < nexttoken.lbp) {\n                isArray = token.value === \"Array\";\n                isObject = token.value === \"Object\";\n\n                // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object()\n                // Line breaks in IfStatement heads exist to satisfy the checkJSHint\n                // \"Line too long.\" error.\n                if (left && (left.value || (left.first && left.first.value))) {\n                    // If the left.value is not \"new\", or the left.first.value is a \".\"\n                    // then safely assume that this is not \"new Array()\" and possibly\n                    // not \"new Object()\"...\n                    if (left.value !== \"new\" ||\n                      (left.first && left.first.value && left.first.value === \".\")) {\n                        isArray = false;\n                        // ...In the case of Object, if the left.value and token.value\n                        // are not equal, then safely assume that this not \"new Object()\"\n                        if (left.value !== token.value) {\n                            isObject = false;\n                        }\n                    }\n                }\n\n                advance();\n                if (isArray && token.id === \"(\" && nexttoken.id === \")\")\n                    warning(\"Use the array literal notation [].\", token);\n                if (isObject && token.id === \"(\" && nexttoken.id === \")\")\n                    warning(\"Use the object literal notation {}.\", token);\n                if (token.led) {\n                    left = token.led(left);\n                } else {\n                    error(\"Expected an operator and instead saw '{a}'.\",\n                        token, token.id);\n                }\n            }\n        }\n        return left;\n    }\n\n\n// Functions for conformance of style.\n\n    function adjacent(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white) {\n            if (left.character !== right.from && left.line === right.line) {\n                left.from += (left.character - left.from);\n                warning(\"Unexpected space after '{a}'.\", left, left.value);\n            }\n        }\n    }\n\n    function nobreak(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white && (left.character !== right.from || left.line !== right.line)) {\n            warning(\"Unexpected space before '{a}'.\", right, right.value);\n        }\n    }\n\n    function nospace(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white && !left.comment) {\n            if (left.line === right.line) {\n                adjacent(left, right);\n            }\n        }\n    }\n\n    function nonadjacent(left, right) {\n        if (option.white) {\n            left = left || token;\n            right = right || nexttoken;\n            if (left.value === \";\" && right.value === \";\") {\n                return;\n            }\n            if (left.line === right.line && left.character === right.from) {\n                left.from += (left.character - left.from);\n                warning(\"Missing space after '{a}'.\",\n                        left, left.value);\n            }\n        }\n    }\n\n    function nobreaknonadjacent(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (!option.laxbreak && left.line !== right.line) {\n            warning(\"Bad line breaking before '{a}'.\", right, right.id);\n        } else if (option.white) {\n            left = left || token;\n            right = right || nexttoken;\n            if (left.character === right.from) {\n                left.from += (left.character - left.from);\n                warning(\"Missing space after '{a}'.\",\n                        left, left.value);\n            }\n        }\n    }\n\n    function indentation(bias) {\n        var i;\n        if (option.white && nexttoken.id !== \"(end)\") {\n            i = indent + (bias || 0);\n            if (nexttoken.from !== i) {\n                warning(\n\"Expected '{a}' to have an indentation at {b} instead at {c}.\",\n                        nexttoken, nexttoken.value, i, nexttoken.from);\n            }\n        }\n    }\n\n    function nolinebreak(t) {\n        t = t || token;\n        if (t.line !== nexttoken.line) {\n            warning(\"Line breaking error '{a}'.\", t, t.value);\n        }\n    }\n\n\n    function comma() {\n        if (token.line !== nexttoken.line) {\n            if (!option.laxcomma) {\n                if (comma.first) {\n                    warning(\"Comma warnings can be turned off with 'laxcomma'\");\n                    comma.first = false;\n                }\n                warning(\"Bad line breaking before '{a}'.\", token, nexttoken.id);\n            }\n        } else if (!token.comment && token.character !== nexttoken.from && option.white) {\n            token.from += (token.character - token.from);\n            warning(\"Unexpected space after '{a}'.\", token, token.value);\n        }\n        advance(\",\");\n        nonadjacent(token, nexttoken);\n    }\n\n\n// Functional constructors for making the symbols that will be inherited by\n// tokens.\n\n    function symbol(s, p) {\n        var x = syntax[s];\n        if (!x || typeof x !== \"object\") {\n            syntax[s] = x = {\n                id: s,\n                lbp: p,\n                value: s\n            };\n        }\n        return x;\n    }\n\n\n    function delim(s) {\n        return symbol(s, 0);\n    }\n\n\n    function stmt(s, f) {\n        var x = delim(s);\n        x.identifier = x.reserved = true;\n        x.fud = f;\n        return x;\n    }\n\n\n    function blockstmt(s, f) {\n        var x = stmt(s, f);\n        x.block = true;\n        return x;\n    }\n\n\n    function reserveName(x) {\n        var c = x.id.charAt(0);\n        if ((c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\")) {\n            x.identifier = x.reserved = true;\n        }\n        return x;\n    }\n\n\n    function prefix(s, f) {\n        var x = symbol(s, 150);\n        reserveName(x);\n        x.nud = (typeof f === \"function\") ? f : function () {\n            this.right = expression(150);\n            this.arity = \"unary\";\n            if (this.id === \"++\" || this.id === \"--\") {\n                if (option.plusplus) {\n                    warning(\"Unexpected use of '{a}'.\", this, this.id);\n                } else if ((!this.right.identifier || this.right.reserved) &&\n                        this.right.id !== \".\" && this.right.id !== \"[\") {\n                    warning(\"Bad operand.\", this);\n                }\n            }\n            return this;\n        };\n        return x;\n    }\n\n\n    function type(s, f) {\n        var x = delim(s);\n        x.type = s;\n        x.nud = f;\n        return x;\n    }\n\n\n    function reserve(s, f) {\n        var x = type(s, f);\n        x.identifier = x.reserved = true;\n        return x;\n    }\n\n\n    function reservevar(s, v) {\n        return reserve(s, function () {\n            if (typeof v === \"function\") {\n                v(this);\n            }\n            return this;\n        });\n    }\n\n\n    function infix(s, f, p, w) {\n        var x = symbol(s, p);\n        reserveName(x);\n        x.led = function (left) {\n            if (!w) {\n                nobreaknonadjacent(prevtoken, token);\n                nonadjacent(token, nexttoken);\n            }\n            if (s === \"in\" && left.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", left, \"!\");\n            }\n            if (typeof f === \"function\") {\n                return f(left, this);\n            } else {\n                this.left = left;\n                this.right = expression(p);\n                return this;\n            }\n        };\n        return x;\n    }\n\n\n    function relation(s, f) {\n        var x = symbol(s, 100);\n        x.led = function (left) {\n            nobreaknonadjacent(prevtoken, token);\n            nonadjacent(token, nexttoken);\n            var right = expression(100);\n\n            if (isIdentifier(left, \"NaN\") || isIdentifier(right, \"NaN\")) {\n                warning(\"Use the isNaN function to compare with NaN.\", this);\n            } else if (f) {\n                f.apply(this, [left, right]);\n            }\n            if (left.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", left, \"!\");\n            }\n            if (right.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", right, \"!\");\n            }\n            this.left = left;\n            this.right = right;\n            return this;\n        };\n        return x;\n    }\n\n\n    function isPoorRelation(node) {\n        return node &&\n              ((node.type === \"(number)\" && +node.value === 0) ||\n               (node.type === \"(string)\" && node.value === \"\") ||\n               (node.type === \"null\" && !option.eqnull) ||\n                node.type === \"true\" ||\n                node.type === \"false\" ||\n                node.type === \"undefined\");\n    }\n\n\n    function assignop(s) {\n        symbol(s, 20).exps = true;\n\n        return infix(s, function (left, that) {\n            that.left = left;\n\n            if (predefined[left.value] === false &&\n                    scope[left.value][\"(global)\"] === true) {\n                warning(\"Read only.\", left);\n            } else if (left[\"function\"]) {\n                warning(\"'{a}' is a function.\", left, left.value);\n            }\n\n            if (left) {\n                if (option.esnext && funct[left.value] === \"const\") {\n                    warning(\"Attempting to override '{a}' which is a constant\", left, left.value);\n                }\n\n                if (left.id === \".\" || left.id === \"[\") {\n                    if (!left.left || left.left.value === \"arguments\") {\n                        warning(\"Bad assignment.\", that);\n                    }\n                    that.right = expression(19);\n                    return that;\n                } else if (left.identifier && !left.reserved) {\n                    if (funct[left.value] === \"exception\") {\n                        warning(\"Do not assign to the exception parameter.\", left);\n                    }\n                    that.right = expression(19);\n                    return that;\n                }\n\n                if (left === syntax[\"function\"]) {\n                    warning(\n\"Expected an identifier in an assignment and instead saw a function invocation.\",\n                                token);\n                }\n            }\n\n            error(\"Bad assignment.\", that);\n        }, 20);\n    }\n\n\n    function bitwise(s, f, p) {\n        var x = symbol(s, p);\n        reserveName(x);\n        x.led = (typeof f === \"function\") ? f : function (left) {\n            if (option.bitwise) {\n                warning(\"Unexpected use of '{a}'.\", this, this.id);\n            }\n            this.left = left;\n            this.right = expression(p);\n            return this;\n        };\n        return x;\n    }\n\n\n    function bitwiseassignop(s) {\n        symbol(s, 20).exps = true;\n        return infix(s, function (left, that) {\n            if (option.bitwise) {\n                warning(\"Unexpected use of '{a}'.\", that, that.id);\n            }\n            nonadjacent(prevtoken, token);\n            nonadjacent(token, nexttoken);\n            if (left) {\n                if (left.id === \".\" || left.id === \"[\" ||\n                        (left.identifier && !left.reserved)) {\n                    expression(19);\n                    return that;\n                }\n                if (left === syntax[\"function\"]) {\n                    warning(\n\"Expected an identifier in an assignment, and instead saw a function invocation.\",\n                                token);\n                }\n                return that;\n            }\n            error(\"Bad assignment.\", that);\n        }, 20);\n    }\n\n\n    function suffix(s) {\n        var x = symbol(s, 150);\n        x.led = function (left) {\n            if (option.plusplus) {\n                warning(\"Unexpected use of '{a}'.\", this, this.id);\n            } else if ((!left.identifier || left.reserved) &&\n                    left.id !== \".\" && left.id !== \"[\") {\n                warning(\"Bad operand.\", this);\n            }\n            this.left = left;\n            return this;\n        };\n        return x;\n    }\n\n\n    // fnparam means that this identifier is being defined as a function\n    // argument (see identifier())\n    function optionalidentifier(fnparam) {\n        if (nexttoken.identifier) {\n            advance();\n            if (token.reserved && !option.es5) {\n                // `undefined` as a function param is a common pattern to protect\n                // against the case when somebody does `undefined = true` and\n                // help with minification. More info: https://gist.github.com/315916\n                if (!fnparam || token.value !== \"undefined\") {\n                    warning(\"Expected an identifier and instead saw '{a}' (a reserved word).\",\n                            token, token.id);\n                }\n            }\n            return token.value;\n        }\n    }\n\n    // fnparam means that this identifier is being defined as a function\n    // argument\n    function identifier(fnparam) {\n        var i = optionalidentifier(fnparam);\n        if (i) {\n            return i;\n        }\n        if (token.id === \"function\" && nexttoken.id === \"(\") {\n            warning(\"Missing name in function declaration.\");\n        } else {\n            error(\"Expected an identifier and instead saw '{a}'.\",\n                    nexttoken, nexttoken.value);\n        }\n    }\n\n\n    function reachable(s) {\n        var i = 0, t;\n        if (nexttoken.id !== \";\" || noreach) {\n            return;\n        }\n        for (;;) {\n            t = peek(i);\n            if (t.reach) {\n                return;\n            }\n            if (t.id !== \"(endline)\") {\n                if (t.id === \"function\") {\n                    if (!option.latedef) {\n                        break;\n                    }\n                    warning(\n\"Inner functions should be listed at the top of the outer function.\", t);\n                    break;\n                }\n                warning(\"Unreachable '{a}' after '{b}'.\", t, t.value, s);\n                break;\n            }\n            i += 1;\n        }\n    }\n\n\n    function statement(noindent) {\n        var i = indent, r, s = scope, t = nexttoken;\n\n        if (t.id === \";\") {\n            advance(\";\");\n            return;\n        }\n\n        // Is this a labelled statement?\n\n        if (t.identifier && !t.reserved && peek().id === \":\") {\n            advance();\n            advance(\":\");\n            scope = Object.create(s);\n            addlabel(t.value, \"label\");\n\n            if (!nexttoken.labelled && nexttoken.value !== \"{\") {\n                warning(\"Label '{a}' on {b} statement.\", nexttoken, t.value, nexttoken.value);\n            }\n\n            if (jx.test(t.value + \":\")) {\n                warning(\"Label '{a}' looks like a javascript url.\", t, t.value);\n            }\n\n            nexttoken.label = t.value;\n            t = nexttoken;\n        }\n\n        // Is it a lonely block?\n\n        if (t.id === \"{\") {\n            block(true, true);\n            return;\n        }\n\n        // Parse the statement.\n\n        if (!noindent) {\n            indentation();\n        }\n        r = expression(0, true);\n\n        // Look for the final semicolon.\n\n        if (!t.block) {\n            if (!option.expr && (!r || !r.exps)) {\n                warning(\"Expected an assignment or function call and instead saw an expression.\",\n                    token);\n            } else if (option.nonew && r.id === \"(\" && r.left.id === \"new\") {\n                warning(\"Do not use 'new' for side effects.\", t);\n            }\n\n            if (nexttoken.id === \",\") {\n                return comma();\n            }\n\n            if (nexttoken.id !== \";\") {\n                if (!option.asi) {\n                    // If this is the last statement in a block that ends on\n                    // the same line *and* option lastsemic is on, ignore the warning.\n                    // Otherwise, complain about missing semicolon.\n                    if (!option.lastsemic || nexttoken.id !== \"}\" ||\n                            nexttoken.line !== token.line) {\n                        warningAt(\"Missing semicolon.\", token.line, token.character);\n                    }\n                }\n            } else {\n                adjacent(token, nexttoken);\n                advance(\";\");\n                nonadjacent(token, nexttoken);\n            }\n        }\n\n// Restore the indentation.\n\n        indent = i;\n        scope = s;\n        return r;\n    }\n\n\n    function statements(startLine) {\n        var a = [], p;\n\n        while (!nexttoken.reach && nexttoken.id !== \"(end)\") {\n            if (nexttoken.id === \";\") {\n                p = peek();\n                if (!p || p.id !== \"(\") {\n                    warning(\"Unnecessary semicolon.\");\n                }\n                advance(\";\");\n            } else {\n                a.push(statement(startLine === nexttoken.line));\n            }\n        }\n        return a;\n    }\n\n\n    /*\n     * read all directives\n     * recognizes a simple form of asi, but always\n     * warns, if it is used\n     */\n    function directives() {\n        var i, p, pn;\n\n        for (;;) {\n            if (nexttoken.id === \"(string)\") {\n                p = peek(0);\n                if (p.id === \"(endline)\") {\n                    i = 1;\n                    do {\n                        pn = peek(i);\n                        i = i + 1;\n                    } while (pn.id === \"(endline)\");\n\n                    if (pn.id !== \";\") {\n                        if (pn.id !== \"(string)\" && pn.id !== \"(number)\" &&\n                            pn.id !== \"(regexp)\" && pn.identifier !== true &&\n                            pn.id !== \"}\") {\n                            break;\n                        }\n                        warning(\"Missing semicolon.\", nexttoken);\n                    } else {\n                        p = pn;\n                    }\n                } else if (p.id === \"}\") {\n                    // directive with no other statements, warn about missing semicolon\n                    warning(\"Missing semicolon.\", p);\n                } else if (p.id !== \";\") {\n                    break;\n                }\n\n                indentation();\n                advance();\n                if (directive[token.value]) {\n                    warning(\"Unnecessary directive \\\"{a}\\\".\", token, token.value);\n                }\n\n                if (token.value === \"use strict\") {\n                    if (!option[\"(explicitNewcap)\"])\n                        option.newcap = true;\n                    option.undef = true;\n                }\n\n                // there's no directive negation, so always set to true\n                directive[token.value] = true;\n\n                if (p.id === \";\") {\n                    advance(\";\");\n                }\n                continue;\n            }\n            break;\n        }\n    }\n\n\n    /*\n     * Parses a single block. A block is a sequence of statements wrapped in\n     * braces.\n     *\n     * ordinary - true for everything but function bodies and try blocks.\n     * stmt     - true if block can be a single statement (e.g. in if/for/while).\n     * isfunc   - true if block is a function body\n     */\n    function block(ordinary, stmt, isfunc) {\n        var a,\n            b = inblock,\n            old_indent = indent,\n            m,\n            s = scope,\n            t,\n            line,\n            d;\n\n        inblock = ordinary;\n\n        if (!ordinary || !option.funcscope)\n            scope = Object.create(scope);\n\n        nonadjacent(token, nexttoken);\n        t = nexttoken;\n\n        var metrics = funct[\"(metrics)\"];\n        metrics.nestedBlockDepth += 1;\n        metrics.verifyMaxNestedBlockDepthPerFunction();\n\n        if (nexttoken.id === \"{\") {\n            advance(\"{\");\n            line = token.line;\n            if (nexttoken.id !== \"}\") {\n                indent += option.indent;\n                while (!ordinary && nexttoken.from > indent) {\n                    indent += option.indent;\n                }\n\n                if (isfunc) {\n                    m = {};\n                    for (d in directive) {\n                        if (is_own(directive, d)) {\n                            m[d] = directive[d];\n                        }\n                    }\n                    directives();\n\n                    if (option.strict && funct[\"(context)\"][\"(global)\"]) {\n                        if (!m[\"use strict\"] && !directive[\"use strict\"]) {\n                            warning(\"Missing \\\"use strict\\\" statement.\");\n                        }\n                    }\n                }\n\n                a = statements(line);\n\n                metrics.statementCount += a.length;\n\n                if (isfunc) {\n                    directive = m;\n                }\n\n                indent -= option.indent;\n                if (line !== nexttoken.line) {\n                    indentation();\n                }\n            } else if (line !== nexttoken.line) {\n                indentation();\n            }\n            advance(\"}\", t);\n            indent = old_indent;\n        } else if (!ordinary) {\n            error(\"Expected '{a}' and instead saw '{b}'.\",\n                  nexttoken, \"{\", nexttoken.value);\n        } else {\n            if (!stmt || option.curly)\n                warning(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, \"{\", nexttoken.value);\n\n            noreach = true;\n            indent += option.indent;\n            // test indentation only if statement is in new line\n            a = [statement(nexttoken.line === token.line)];\n            indent -= option.indent;\n            noreach = false;\n        }\n        funct[\"(verb)\"] = null;\n        if (!ordinary || !option.funcscope) scope = s;\n        inblock = b;\n        if (ordinary && option.noempty && (!a || a.length === 0)) {\n            warning(\"Empty block.\");\n        }\n        metrics.nestedBlockDepth -= 1;\n        return a;\n    }\n\n\n    function countMember(m) {\n        if (membersOnly && typeof membersOnly[m] !== \"boolean\") {\n            warning(\"Unexpected /*member '{a}'.\", token, m);\n        }\n        if (typeof member[m] === \"number\") {\n            member[m] += 1;\n        } else {\n            member[m] = 1;\n        }\n    }\n\n\n    function note_implied(token) {\n        var name = token.value, line = token.line, a = implied[name];\n        if (typeof a === \"function\") {\n            a = false;\n        }\n\n        if (!a) {\n            a = [line];\n            implied[name] = a;\n        } else if (a[a.length - 1] !== line) {\n            a.push(line);\n        }\n    }\n\n\n    // Build the syntax table by declaring the syntactic elements of the language.\n\n    type(\"(number)\", function () {\n        return this;\n    });\n\n    type(\"(string)\", function () {\n        return this;\n    });\n\n    syntax[\"(identifier)\"] = {\n        type: \"(identifier)\",\n        lbp: 0,\n        identifier: true,\n        nud: function () {\n            var v = this.value,\n                s = scope[v],\n                f;\n\n            if (typeof s === \"function\") {\n                // Protection against accidental inheritance.\n                s = undefined;\n            } else if (typeof s === \"boolean\") {\n                f = funct;\n                funct = functions[0];\n                addlabel(v, \"var\");\n                s = funct;\n                funct = f;\n            }\n\n            // The name is in scope and defined in the current function.\n            if (funct === s) {\n                // Change 'unused' to 'var', and reject labels.\n                switch (funct[v]) {\n                case \"unused\":\n                    funct[v] = \"var\";\n                    break;\n                case \"unction\":\n                    funct[v] = \"function\";\n                    this[\"function\"] = true;\n                    break;\n                case \"function\":\n                    this[\"function\"] = true;\n                    break;\n                case \"label\":\n                    warning(\"'{a}' is a statement label.\", token, v);\n                    break;\n                }\n            } else if (funct[\"(global)\"]) {\n                // The name is not defined in the function.  If we are in the global\n                // scope, then we have an undefined variable.\n                //\n                // Operators typeof and delete do not raise runtime errors even if\n                // the base object of a reference is null so no need to display warning\n                // if we're inside of typeof or delete.\n\n                if (option.undef && typeof predefined[v] !== \"boolean\") {\n                    // Attempting to subscript a null reference will throw an\n                    // error, even within the typeof and delete operators\n                    if (!(anonname === \"typeof\" || anonname === \"delete\") ||\n                        (nexttoken && (nexttoken.value === \".\" || nexttoken.value === \"[\"))) {\n\n                        isundef(funct, \"'{a}' is not defined.\", token, v);\n                    }\n                }\n\n                note_implied(token);\n            } else {\n                // If the name is already defined in the current\n                // function, but not as outer, then there is a scope error.\n\n                switch (funct[v]) {\n                case \"closure\":\n                case \"function\":\n                case \"var\":\n                case \"unused\":\n                    warning(\"'{a}' used out of scope.\", token, v);\n                    break;\n                case \"label\":\n                    warning(\"'{a}' is a statement label.\", token, v);\n                    break;\n                case \"outer\":\n                case \"global\":\n                    break;\n                default:\n                    // If the name is defined in an outer function, make an outer entry,\n                    // and if it was unused, make it var.\n                    if (s === true) {\n                        funct[v] = true;\n                    } else if (s === null) {\n                        warning(\"'{a}' is not allowed.\", token, v);\n                        note_implied(token);\n                    } else if (typeof s !== \"object\") {\n                        // Operators typeof and delete do not raise runtime errors even\n                        // if the base object of a reference is null so no need to\n                        // display warning if we're inside of typeof or delete.\n                        if (option.undef) {\n                            // Attempting to subscript a null reference will throw an\n                            // error, even within the typeof and delete operators\n                            if (!(anonname === \"typeof\" || anonname === \"delete\") ||\n                                (nexttoken &&\n                                    (nexttoken.value === \".\" || nexttoken.value === \"[\"))) {\n\n                                isundef(funct, \"'{a}' is not defined.\", token, v);\n                            }\n                        }\n                        funct[v] = true;\n                        note_implied(token);\n                    } else {\n                        switch (s[v]) {\n                        case \"function\":\n                        case \"unction\":\n                            this[\"function\"] = true;\n                            s[v] = \"closure\";\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"var\":\n                        case \"unused\":\n                            s[v] = \"closure\";\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"closure\":\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"label\":\n                            warning(\"'{a}' is a statement label.\", token, v);\n                        }\n                    }\n                }\n            }\n            return this;\n        },\n        led: function () {\n            error(\"Expected an operator and instead saw '{a}'.\",\n                nexttoken, nexttoken.value);\n        }\n    };\n\n    type(\"(regexp)\", function () {\n        return this;\n    });\n\n\n// ECMAScript parser\n\n    delim(\"(endline)\");\n    delim(\"(begin)\");\n    delim(\"(end)\").reach = true;\n    delim(\"</\").reach = true;\n    delim(\"<!\");\n    delim(\"<!--\");\n    delim(\"-->\");\n    delim(\"(error)\").reach = true;\n    delim(\"}\").reach = true;\n    delim(\")\");\n    delim(\"]\");\n    delim(\"\\\"\").reach = true;\n    delim(\"'\").reach = true;\n    delim(\";\");\n    delim(\":\").reach = true;\n    delim(\",\");\n    delim(\"#\");\n    delim(\"@\");\n    reserve(\"else\");\n    reserve(\"case\").reach = true;\n    reserve(\"catch\");\n    reserve(\"default\").reach = true;\n    reserve(\"finally\");\n    reservevar(\"arguments\", function (x) {\n        if (directive[\"use strict\"] && funct[\"(global)\"]) {\n            warning(\"Strict violation.\", x);\n        }\n    });\n    reservevar(\"eval\");\n    reservevar(\"false\");\n    reservevar(\"Infinity\");\n    reservevar(\"null\");\n    reservevar(\"this\", function (x) {\n        if (directive[\"use strict\"] && !option.validthis && ((funct[\"(statement)\"] &&\n                funct[\"(name)\"].charAt(0) > \"Z\") || funct[\"(global)\"])) {\n            warning(\"Possible strict violation.\", x);\n        }\n    });\n    reservevar(\"true\");\n    reservevar(\"undefined\");\n    assignop(\"=\", \"assign\", 20);\n    assignop(\"+=\", \"assignadd\", 20);\n    assignop(\"-=\", \"assignsub\", 20);\n    assignop(\"*=\", \"assignmult\", 20);\n    assignop(\"/=\", \"assigndiv\", 20).nud = function () {\n        error(\"A regular expression literal can be confused with '/='.\");\n    };\n    assignop(\"%=\", \"assignmod\", 20);\n    bitwiseassignop(\"&=\", \"assignbitand\", 20);\n    bitwiseassignop(\"|=\", \"assignbitor\", 20);\n    bitwiseassignop(\"^=\", \"assignbitxor\", 20);\n    bitwiseassignop(\"<<=\", \"assignshiftleft\", 20);\n    bitwiseassignop(\">>=\", \"assignshiftright\", 20);\n    bitwiseassignop(\">>>=\", \"assignshiftrightunsigned\", 20);\n    infix(\"?\", function (left, that) {\n        that.left = left;\n        that.right = expression(10);\n        advance(\":\");\n        that[\"else\"] = expression(10);\n        return that;\n    }, 30);\n\n    infix(\"||\", \"or\", 40);\n    infix(\"&&\", \"and\", 50);\n    bitwise(\"|\", \"bitor\", 70);\n    bitwise(\"^\", \"bitxor\", 80);\n    bitwise(\"&\", \"bitand\", 90);\n    relation(\"==\", function (left, right) {\n        var eqnull = option.eqnull && (left.value === \"null\" || right.value === \"null\");\n\n        if (!eqnull && option.eqeqeq)\n            warning(\"Expected '{a}' and instead saw '{b}'.\", this, \"===\", \"==\");\n        else if (isPoorRelation(left))\n            warning(\"Use '{a}' to compare with '{b}'.\", this, \"===\", left.value);\n        else if (isPoorRelation(right))\n            warning(\"Use '{a}' to compare with '{b}'.\", this, \"===\", right.value);\n\n        return this;\n    });\n    relation(\"===\");\n    relation(\"!=\", function (left, right) {\n        var eqnull = option.eqnull &&\n                (left.value === \"null\" || right.value === \"null\");\n\n        if (!eqnull && option.eqeqeq) {\n            warning(\"Expected '{a}' and instead saw '{b}'.\",\n                    this, \"!==\", \"!=\");\n        } else if (isPoorRelation(left)) {\n            warning(\"Use '{a}' to compare with '{b}'.\",\n                    this, \"!==\", left.value);\n        } else if (isPoorRelation(right)) {\n            warning(\"Use '{a}' to compare with '{b}'.\",\n                    this, \"!==\", right.value);\n        }\n        return this;\n    });\n    relation(\"!==\");\n    relation(\"<\");\n    relation(\">\");\n    relation(\"<=\");\n    relation(\">=\");\n    bitwise(\"<<\", \"shiftleft\", 120);\n    bitwise(\">>\", \"shiftright\", 120);\n    bitwise(\">>>\", \"shiftrightunsigned\", 120);\n    infix(\"in\", \"in\", 120);\n    infix(\"instanceof\", \"instanceof\", 120);\n    infix(\"+\", function (left, that) {\n        var right = expression(130);\n        if (left && right && left.id === \"(string)\" && right.id === \"(string)\") {\n            left.value += right.value;\n            left.character = right.character;\n            if (!option.scripturl && jx.test(left.value)) {\n                warning(\"JavaScript URL.\", left);\n            }\n            return left;\n        }\n        that.left = left;\n        that.right = right;\n        return that;\n    }, 130);\n    prefix(\"+\", \"num\");\n    prefix(\"+++\", function () {\n        warning(\"Confusing pluses.\");\n        this.right = expression(150);\n        this.arity = \"unary\";\n        return this;\n    });\n    infix(\"+++\", function (left) {\n        warning(\"Confusing pluses.\");\n        this.left = left;\n        this.right = expression(130);\n        return this;\n    }, 130);\n    infix(\"-\", \"sub\", 130);\n    prefix(\"-\", \"neg\");\n    prefix(\"---\", function () {\n        warning(\"Confusing minuses.\");\n        this.right = expression(150);\n        this.arity = \"unary\";\n        return this;\n    });\n    infix(\"---\", function (left) {\n        warning(\"Confusing minuses.\");\n        this.left = left;\n        this.right = expression(130);\n        return this;\n    }, 130);\n    infix(\"*\", \"mult\", 140);\n    infix(\"/\", \"div\", 140);\n    infix(\"%\", \"mod\", 140);\n\n    suffix(\"++\", \"postinc\");\n    prefix(\"++\", \"preinc\");\n    syntax[\"++\"].exps = true;\n\n    suffix(\"--\", \"postdec\");\n    prefix(\"--\", \"predec\");\n    syntax[\"--\"].exps = true;\n    prefix(\"delete\", function () {\n        var p = expression(0);\n        if (!p || (p.id !== \".\" && p.id !== \"[\")) {\n            warning(\"Variables should not be deleted.\");\n        }\n        this.first = p;\n        return this;\n    }).exps = true;\n\n    prefix(\"~\", function () {\n        if (option.bitwise) {\n            warning(\"Unexpected '{a}'.\", this, \"~\");\n        }\n        expression(150);\n        return this;\n    });\n\n    prefix(\"!\", function () {\n        this.right = expression(150);\n        this.arity = \"unary\";\n        if (bang[this.right.id] === true) {\n            warning(\"Confusing use of '{a}'.\", this, \"!\");\n        }\n        return this;\n    });\n    prefix(\"typeof\", \"typeof\");\n    prefix(\"new\", function () {\n        var c = expression(155), i;\n        if (c && c.id !== \"function\") {\n            if (c.identifier) {\n                c[\"new\"] = true;\n                switch (c.value) {\n                case \"Number\":\n                case \"String\":\n                case \"Boolean\":\n                case \"Math\":\n                case \"JSON\":\n                    warning(\"Do not use {a} as a constructor.\", prevtoken, c.value);\n                    break;\n                case \"Function\":\n                    if (!option.evil) {\n                        warning(\"The Function constructor is eval.\");\n                    }\n                    break;\n                case \"Date\":\n                case \"RegExp\":\n                    break;\n                default:\n                    if (c.id !== \"function\") {\n                        i = c.value.substr(0, 1);\n                        if (option.newcap && (i < \"A\" || i > \"Z\") && !is_own(global, c.value)) {\n                            warning(\"A constructor name should start with an uppercase letter.\",\n                                token);\n                        }\n                    }\n                }\n            } else {\n                if (c.id !== \".\" && c.id !== \"[\" && c.id !== \"(\") {\n                    warning(\"Bad constructor.\", token);\n                }\n            }\n        } else {\n            if (!option.supernew)\n                warning(\"Weird construction. Delete 'new'.\", this);\n        }\n        adjacent(token, nexttoken);\n        if (nexttoken.id !== \"(\" && !option.supernew) {\n            warning(\"Missing '()' invoking a constructor.\",\n                token, token.value);\n        }\n        this.first = c;\n        return this;\n    });\n    syntax[\"new\"].exps = true;\n\n    prefix(\"void\").exps = true;\n\n    infix(\".\", function (left, that) {\n        adjacent(prevtoken, token);\n        nobreak();\n        var m = identifier();\n        if (typeof m === \"string\") {\n            countMember(m);\n        }\n        that.left = left;\n        that.right = m;\n        if (left && left.value === \"arguments\" && (m === \"callee\" || m === \"caller\")) {\n            if (option.noarg)\n                warning(\"Avoid arguments.{a}.\", left, m);\n            else if (directive[\"use strict\"])\n                error(\"Strict violation.\");\n        } else if (!option.evil && left && left.value === \"document\" &&\n                (m === \"write\" || m === \"writeln\")) {\n            warning(\"document.write can be a form of eval.\", left);\n        }\n        if (!option.evil && (m === \"eval\" || m === \"execScript\")) {\n            warning(\"eval is evil.\");\n        }\n        return that;\n    }, 160, true);\n\n    infix(\"(\", function (left, that) {\n        if (prevtoken.id !== \"}\" && prevtoken.id !== \")\") {\n            nobreak(prevtoken, token);\n        }\n        nospace();\n        if (option.immed && !left.immed && left.id === \"function\") {\n            warning(\"Wrap an immediate function invocation in parentheses \" +\n                \"to assist the reader in understanding that the expression \" +\n                \"is the result of a function, and not the function itself.\");\n        }\n        var n = 0,\n            p = [];\n        if (left) {\n            if (left.type === \"(identifier)\") {\n                if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {\n                    if (\"Number String Boolean Date Object\".indexOf(left.value) === -1) {\n                        if (left.value === \"Math\") {\n                            warning(\"Math is not a function.\", left);\n                        } else if (option.newcap) {\n                            warning(\"Missing 'new' prefix when invoking a constructor.\", left);\n                        }\n                    }\n                }\n            }\n        }\n        if (nexttoken.id !== \")\") {\n            for (;;) {\n                p[p.length] = expression(10);\n                n += 1;\n                if (nexttoken.id !== \",\") {\n                    break;\n                }\n                comma();\n            }\n        }\n        advance(\")\");\n        nospace(prevtoken, token);\n        if (typeof left === \"object\") {\n            if (left.value === \"parseInt\" && n === 1) {\n                warning(\"Missing radix parameter.\", token);\n            }\n            if (!option.evil) {\n                if (left.value === \"eval\" || left.value === \"Function\" ||\n                        left.value === \"execScript\") {\n                    warning(\"eval is evil.\", left);\n\n                    if (p[0] && [0].id === \"(string)\") {\n                        addInternalSrc(left, p[0].value);\n                    }\n                } else if (p[0] && p[0].id === \"(string)\" &&\n                       (left.value === \"setTimeout\" ||\n                        left.value === \"setInterval\")) {\n                    warning(\n    \"Implied eval is evil. Pass a function instead of a string.\", left);\n                    addInternalSrc(left, p[0].value);\n\n                // window.setTimeout/setInterval\n                } else if (p[0] && p[0].id === \"(string)\" &&\n                       left.value === \".\" &&\n                       left.left.value === \"window\" &&\n                       (left.right === \"setTimeout\" ||\n                        left.right === \"setInterval\")) {\n                    warning(\n    \"Implied eval is evil. Pass a function instead of a string.\", left);\n                    addInternalSrc(left, p[0].value);\n                }\n            }\n            if (!left.identifier && left.id !== \".\" && left.id !== \"[\" &&\n                    left.id !== \"(\" && left.id !== \"&&\" && left.id !== \"||\" &&\n                    left.id !== \"?\") {\n                warning(\"Bad invocation.\", left);\n            }\n        }\n        that.left = left;\n        return that;\n    }, 155, true).exps = true;\n\n    prefix(\"(\", function () {\n        nospace();\n        if (nexttoken.id === \"function\") {\n            nexttoken.immed = true;\n        }\n        var v = expression(0);\n        advance(\")\", this);\n        nospace(prevtoken, token);\n        if (option.immed && v.id === \"function\") {\n            if (nexttoken.id !== \"(\" &&\n              (nexttoken.id !== \".\" || (peek().value !== \"call\" && peek().value !== \"apply\"))) {\n                warning(\n\"Do not wrap function literals in parens unless they are to be immediately invoked.\",\n                        this);\n            }\n        }\n\n        return v;\n    });\n\n    infix(\"[\", function (left, that) {\n        nobreak(prevtoken, token);\n        nospace();\n        var e = expression(0), s;\n        if (e && e.type === \"(string)\") {\n            if (!option.evil && (e.value === \"eval\" || e.value === \"execScript\")) {\n                warning(\"eval is evil.\", that);\n            }\n            countMember(e.value);\n            if (!option.sub && ix.test(e.value)) {\n                s = syntax[e.value];\n                if (!s || !s.reserved) {\n                    warning(\"['{a}'] is better written in dot notation.\",\n                            prevtoken, e.value);\n                }\n            }\n        }\n        advance(\"]\", that);\n        nospace(prevtoken, token);\n        that.left = left;\n        that.right = e;\n        return that;\n    }, 160, true);\n\n    prefix(\"[\", function () {\n        var b = token.line !== nexttoken.line;\n        this.first = [];\n        if (b) {\n            indent += option.indent;\n            if (nexttoken.from === indent + option.indent) {\n                indent += option.indent;\n            }\n        }\n        while (nexttoken.id !== \"(end)\") {\n            while (nexttoken.id === \",\") {\n                if (!option.es5)\n                    warning(\"Extra comma.\");\n                advance(\",\");\n            }\n            if (nexttoken.id === \"]\") {\n                break;\n            }\n            if (b && token.line !== nexttoken.line) {\n                indentation();\n            }\n            this.first.push(expression(10));\n            if (nexttoken.id === \",\") {\n                comma();\n                if (nexttoken.id === \"]\" && !option.es5) {\n                    warning(\"Extra comma.\", token);\n                    break;\n                }\n            } else {\n                break;\n            }\n        }\n        if (b) {\n            indent -= option.indent;\n            indentation();\n        }\n        advance(\"]\", this);\n        return this;\n    }, 160);\n\n\n    function property_name() {\n        var id = optionalidentifier(true);\n        if (!id) {\n            if (nexttoken.id === \"(string)\") {\n                id = nexttoken.value;\n                advance();\n            } else if (nexttoken.id === \"(number)\") {\n                id = nexttoken.value.toString();\n                advance();\n            }\n        }\n        return id;\n    }\n\n\n    function functionparams() {\n        var next   = nexttoken;\n        var params = [];\n        var ident;\n\n        advance(\"(\");\n        nospace();\n\n        if (nexttoken.id === \")\") {\n            advance(\")\");\n            return;\n        }\n\n        for (;;) {\n            ident = identifier(true);\n            params.push(ident);\n            addlabel(ident, \"unused\", token);\n            if (nexttoken.id === \",\") {\n                comma();\n            } else {\n                advance(\")\", next);\n                nospace(prevtoken, token);\n                return params;\n            }\n        }\n    }\n\n\n    function doFunction(name, statement) {\n        var f;\n        var oldOption = option;\n        var oldScope  = scope;\n\n        option = Object.create(option);\n        scope  = Object.create(scope);\n\n        funct = {\n            \"(name)\"     : name || \"\\\"\" + anonname + \"\\\"\",\n            \"(line)\"     : nexttoken.line,\n            \"(character)\": nexttoken.character,\n            \"(context)\"  : funct,\n            \"(breakage)\" : 0,\n            \"(loopage)\"  : 0,\n            \"(metrics)\"  : createMetrics(nexttoken),\n            \"(scope)\"    : scope,\n            \"(statement)\": statement,\n            \"(tokens)\"   : {}\n        };\n\n        f = funct;\n        token.funct = funct;\n\n        functions.push(funct);\n\n        if (name) {\n            addlabel(name, \"function\");\n        }\n\n        funct[\"(params)\"] = functionparams();\n        funct[\"(metrics)\"].verifyMaxParametersPerFunction(funct[\"(params)\"]);\n\n        block(false, false, true);\n\n        funct[\"(metrics)\"].verifyMaxStatementsPerFunction();\n        funct[\"(metrics)\"].verifyMaxComplexityPerFunction();\n\n        scope = oldScope;\n        option = oldOption;\n        funct[\"(last)\"] = token.line;\n        funct[\"(lastcharacter)\"] = token.character;\n        funct = funct[\"(context)\"];\n\n        return f;\n    }\n\n    function createMetrics(functionStartToken) {\n        return {\n            statementCount: 0,\n            nestedBlockDepth: -1,\n            ComplexityCount: 1,\n            verifyMaxStatementsPerFunction: function () {\n                if (option.maxstatements &&\n                    this.statementCount > option.maxstatements) {\n                    var message = \"Too many statements per function (\" + this.statementCount + \").\";\n                    warning(message, functionStartToken);\n                }\n            },\n\n            verifyMaxParametersPerFunction: function (params) {\n                params = params || [];\n\n                if (option.maxparams && params.length > option.maxparams) {\n                    var message = \"Too many parameters per function (\" + params.length + \").\";\n                    warning(message, functionStartToken);\n                }\n            },\n\n            verifyMaxNestedBlockDepthPerFunction: function () {\n                if (option.maxdepth &&\n                    this.nestedBlockDepth > 0 &&\n                    this.nestedBlockDepth === option.maxdepth + 1) {\n                    var message = \"Blocks are nested too deeply (\" + this.nestedBlockDepth + \").\";\n                    warning(message);\n                }\n            },\n\n            verifyMaxComplexityPerFunction: function () {\n                var max = option.maxcomplexity;\n                var cc = this.ComplexityCount;\n                if (max && cc > max) {\n                    var message = \"Cyclomatic complexity is too high per function (\" + cc + \").\";\n                    warning(message, functionStartToken);\n                }\n            }\n        };\n    }\n\n    function increaseComplexityCount() {\n        funct[\"(metrics)\"].ComplexityCount += 1;\n    }\n\n\n    (function (x) {\n        x.nud = function () {\n            var b, f, i, p, t;\n            var props = {}; // All properties, including accessors\n\n            function saveProperty(name, token) {\n                if (props[name] && is_own(props, name))\n                    warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                else\n                    props[name] = {};\n\n                props[name].basic = true;\n                props[name].basicToken = token;\n            }\n\n            function saveSetter(name, token) {\n                if (props[name] && is_own(props, name)) {\n                    if (props[name].basic || props[name].setter)\n                        warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                } else {\n                    props[name] = {};\n                }\n\n                props[name].setter = true;\n                props[name].setterToken = token;\n            }\n\n            function saveGetter(name) {\n                if (props[name] && is_own(props, name)) {\n                    if (props[name].basic || props[name].getter)\n                        warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                } else {\n                    props[name] = {};\n                }\n\n                props[name].getter = true;\n                props[name].getterToken = token;\n            }\n\n            b = token.line !== nexttoken.line;\n            if (b) {\n                indent += option.indent;\n                if (nexttoken.from === indent + option.indent) {\n                    indent += option.indent;\n                }\n            }\n            for (;;) {\n                if (nexttoken.id === \"}\") {\n                    break;\n                }\n                if (b) {\n                    indentation();\n                }\n                if (nexttoken.value === \"get\" && peek().id !== \":\") {\n                    advance(\"get\");\n                    if (!option.es5) {\n                        error(\"get/set are ES5 features.\");\n                    }\n                    i = property_name();\n                    if (!i) {\n                        error(\"Missing property name.\");\n                    }\n                    saveGetter(i);\n                    t = nexttoken;\n                    adjacent(token, nexttoken);\n                    f = doFunction();\n                    p = f[\"(params)\"];\n                    if (p) {\n                        warning(\"Unexpected parameter '{a}' in get {b} function.\", t, p[0], i);\n                    }\n                    adjacent(token, nexttoken);\n                } else if (nexttoken.value === \"set\" && peek().id !== \":\") {\n                    advance(\"set\");\n                    if (!option.es5) {\n                        error(\"get/set are ES5 features.\");\n                    }\n                    i = property_name();\n                    if (!i) {\n                        error(\"Missing property name.\");\n                    }\n                    saveSetter(i, nexttoken);\n                    t = nexttoken;\n                    adjacent(token, nexttoken);\n                    f = doFunction();\n                    p = f[\"(params)\"];\n                    if (!p || p.length !== 1) {\n                        warning(\"Expected a single parameter in set {a} function.\", t, i);\n                    }\n                } else {\n                    i = property_name();\n                    saveProperty(i, nexttoken);\n                    if (typeof i !== \"string\") {\n                        break;\n                    }\n                    advance(\":\");\n                    nonadjacent(token, nexttoken);\n                    expression(10);\n                }\n\n                countMember(i);\n                if (nexttoken.id === \",\") {\n                    comma();\n                    if (nexttoken.id === \",\") {\n                        warning(\"Extra comma.\", token);\n                    } else if (nexttoken.id === \"}\" && !option.es5) {\n                        warning(\"Extra comma.\", token);\n                    }\n                } else {\n                    break;\n                }\n            }\n            if (b) {\n                indent -= option.indent;\n                indentation();\n            }\n            advance(\"}\", this);\n\n            // Check for lonely setters if in the ES5 mode.\n            if (option.es5) {\n                for (var name in props) {\n                    if (is_own(props, name) && props[name].setter && !props[name].getter) {\n                        warning(\"Setter is defined without getter.\", props[name].setterToken);\n                    }\n                }\n            }\n            return this;\n        };\n        x.fud = function () {\n            error(\"Expected to see a statement and instead saw a block.\", token);\n        };\n    }(delim(\"{\")));\n\n// This Function is called when esnext option is set to true\n// it adds the `const` statement to JSHINT\n\n    useESNextSyntax = function () {\n        var conststatement = stmt(\"const\", function (prefix) {\n            var id, name, value;\n\n            this.first = [];\n            for (;;) {\n                nonadjacent(token, nexttoken);\n                id = identifier();\n                if (funct[id] === \"const\") {\n                    warning(\"const '\" + id + \"' has already been declared\");\n                }\n                if (funct[\"(global)\"] && predefined[id] === false) {\n                    warning(\"Redefinition of '{a}'.\", token, id);\n                }\n                addlabel(id, \"const\");\n                if (prefix) {\n                    break;\n                }\n                name = token;\n                this.first.push(token);\n\n                if (nexttoken.id !== \"=\") {\n                    warning(\"const \" +\n                      \"'{a}' is initialized to 'undefined'.\", token, id);\n                }\n\n                if (nexttoken.id === \"=\") {\n                    nonadjacent(token, nexttoken);\n                    advance(\"=\");\n                    nonadjacent(token, nexttoken);\n                    if (nexttoken.id === \"undefined\") {\n                        warning(\"It is not necessary to initialize \" +\n                          \"'{a}' to 'undefined'.\", token, id);\n                    }\n                    if (peek(0).id === \"=\" && nexttoken.identifier) {\n                        error(\"Constant {a} was not declared correctly.\",\n                                nexttoken, nexttoken.value);\n                    }\n                    value = expression(0);\n                    name.first = value;\n                }\n\n                if (nexttoken.id !== \",\") {\n                    break;\n                }\n                comma();\n            }\n            return this;\n        });\n        conststatement.exps = true;\n    };\n\n    var varstatement = stmt(\"var\", function (prefix) {\n        // JavaScript does not have block scope. It only has function scope. So,\n        // declaring a variable in a block can have unexpected consequences.\n        var id, name, value;\n\n        if (funct[\"(onevar)\"] && option.onevar) {\n            warning(\"Too many var statements.\");\n        } else if (!funct[\"(global)\"]) {\n            funct[\"(onevar)\"] = true;\n        }\n\n        this.first = [];\n\n        for (;;) {\n            nonadjacent(token, nexttoken);\n            id = identifier();\n\n            if (option.esnext && funct[id] === \"const\") {\n                warning(\"const '\" + id + \"' has already been declared\");\n            }\n\n            if (funct[\"(global)\"] && predefined[id] === false) {\n                warning(\"Redefinition of '{a}'.\", token, id);\n            }\n\n            addlabel(id, \"unused\", token);\n\n            if (prefix) {\n                break;\n            }\n\n            name = token;\n            this.first.push(token);\n\n            if (nexttoken.id === \"=\") {\n                nonadjacent(token, nexttoken);\n                advance(\"=\");\n                nonadjacent(token, nexttoken);\n                if (nexttoken.id === \"undefined\") {\n                    warning(\"It is not necessary to initialize '{a}' to 'undefined'.\", token, id);\n                }\n                if (peek(0).id === \"=\" && nexttoken.identifier) {\n                    error(\"Variable {a} was not declared correctly.\",\n                            nexttoken, nexttoken.value);\n                }\n                value = expression(0);\n                name.first = value;\n            }\n            if (nexttoken.id !== \",\") {\n                break;\n            }\n            comma();\n        }\n        return this;\n    });\n    varstatement.exps = true;\n\n    blockstmt(\"function\", function () {\n        if (inblock) {\n            warning(\"Function declarations should not be placed in blocks. \" +\n                \"Use a function expression or move the statement to the top of \" +\n                \"the outer function.\", token);\n\n        }\n        var i = identifier();\n        if (option.esnext && funct[i] === \"const\") {\n            warning(\"const '\" + i + \"' has already been declared\");\n        }\n        adjacent(token, nexttoken);\n        addlabel(i, \"unction\", token);\n\n        doFunction(i, { statement: true });\n        if (nexttoken.id === \"(\" && nexttoken.line === token.line) {\n            error(\n\"Function declarations are not invocable. Wrap the whole function invocation in parens.\");\n        }\n        return this;\n    });\n\n    prefix(\"function\", function () {\n        var i = optionalidentifier();\n        if (i) {\n            adjacent(token, nexttoken);\n        } else {\n            nonadjacent(token, nexttoken);\n        }\n        doFunction(i);\n        if (!option.loopfunc && funct[\"(loopage)\"]) {\n            warning(\"Don't make functions within a loop.\");\n        }\n        return this;\n    });\n\n    blockstmt(\"if\", function () {\n        var t = nexttoken;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(20);\n        if (nexttoken.id === \"=\") {\n            if (!option.boss)\n                warning(\"Expected a conditional expression and instead saw an assignment.\");\n            advance(\"=\");\n            expression(20);\n        }\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n        if (nexttoken.id === \"else\") {\n            nonadjacent(token, nexttoken);\n            advance(\"else\");\n            if (nexttoken.id === \"if\" || nexttoken.id === \"switch\") {\n                statement(true);\n            } else {\n                block(true, true);\n            }\n        }\n        return this;\n    });\n\n    blockstmt(\"try\", function () {\n        var b;\n\n        function doCatch() {\n            var oldScope = scope;\n            var e;\n\n            advance(\"catch\");\n            nonadjacent(token, nexttoken);\n            advance(\"(\");\n\n            scope = Object.create(oldScope);\n\n            e = nexttoken.value;\n            if (nexttoken.type !== \"(identifier)\") {\n                e = null;\n                warning(\"Expected an identifier and instead saw '{a}'.\", nexttoken, e);\n            }\n\n            advance();\n            advance(\")\");\n\n            funct = {\n                \"(name)\"     : \"(catch)\",\n                \"(line)\"     : nexttoken.line,\n                \"(character)\": nexttoken.character,\n                \"(context)\"  : funct,\n                \"(breakage)\" : funct[\"(breakage)\"],\n                \"(loopage)\"  : funct[\"(loopage)\"],\n                \"(scope)\"    : scope,\n                \"(statement)\": false,\n                \"(metrics)\"  : createMetrics(nexttoken),\n                \"(catch)\"    : true,\n                \"(tokens)\"   : {}\n            };\n\n            if (e) {\n                addlabel(e, \"exception\");\n            }\n\n            token.funct = funct;\n            functions.push(funct);\n\n            block(false);\n\n            scope = oldScope;\n\n            funct[\"(last)\"] = token.line;\n            funct[\"(lastcharacter)\"] = token.character;\n            funct = funct[\"(context)\"];\n        }\n\n        block(false);\n\n        if (nexttoken.id === \"catch\") {\n            increaseComplexityCount();\n            doCatch();\n            b = true;\n        }\n\n        if (nexttoken.id === \"finally\") {\n            advance(\"finally\");\n            block(false);\n            return;\n        } else if (!b) {\n            error(\"Expected '{a}' and instead saw '{b}'.\",\n                    nexttoken, \"catch\", nexttoken.value);\n        }\n\n        return this;\n    });\n\n    blockstmt(\"while\", function () {\n        var t = nexttoken;\n        funct[\"(breakage)\"] += 1;\n        funct[\"(loopage)\"] += 1;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(20);\n        if (nexttoken.id === \"=\") {\n            if (!option.boss)\n                warning(\"Expected a conditional expression and instead saw an assignment.\");\n            advance(\"=\");\n            expression(20);\n        }\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n        funct[\"(breakage)\"] -= 1;\n        funct[\"(loopage)\"] -= 1;\n        return this;\n    }).labelled = true;\n\n    blockstmt(\"with\", function () {\n        var t = nexttoken;\n        if (directive[\"use strict\"]) {\n            error(\"'with' is not allowed in strict mode.\", token);\n        } else if (!option.withstmt) {\n            warning(\"Don't use 'with'.\", token);\n        }\n\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(0);\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n\n        return this;\n    });\n\n    blockstmt(\"switch\", function () {\n        var t = nexttoken,\n            g = false;\n        funct[\"(breakage)\"] += 1;\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        this.condition = expression(20);\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        nonadjacent(token, nexttoken);\n        t = nexttoken;\n        advance(\"{\");\n        nonadjacent(token, nexttoken);\n        indent += option.indent;\n        this.cases = [];\n        for (;;) {\n            switch (nexttoken.id) {\n            case \"case\":\n                switch (funct[\"(verb)\"]) {\n                case \"break\":\n                case \"case\":\n                case \"continue\":\n                case \"return\":\n                case \"switch\":\n                case \"throw\":\n                    break;\n                default:\n                    // You can tell JSHint that you don't use break intentionally by\n                    // adding a comment /* falls through */ on a line just before\n                    // the next `case`.\n                    if (!ft.test(lines[nexttoken.line - 2])) {\n                        warning(\n                            \"Expected a 'break' statement before 'case'.\",\n                            token);\n                    }\n                }\n                indentation(-option.indent);\n                advance(\"case\");\n                this.cases.push(expression(20));\n                increaseComplexityCount();\n                g = true;\n                advance(\":\");\n                funct[\"(verb)\"] = \"case\";\n                break;\n            case \"default\":\n                switch (funct[\"(verb)\"]) {\n                case \"break\":\n                case \"continue\":\n                case \"return\":\n                case \"throw\":\n                    break;\n                default:\n                    if (!ft.test(lines[nexttoken.line - 2])) {\n                        warning(\n                            \"Expected a 'break' statement before 'default'.\",\n                            token);\n                    }\n                }\n                indentation(-option.indent);\n                advance(\"default\");\n                g = true;\n                advance(\":\");\n                break;\n            case \"}\":\n                indent -= option.indent;\n                indentation();\n                advance(\"}\", t);\n                if (this.cases.length === 1 || this.condition.id === \"true\" ||\n                        this.condition.id === \"false\") {\n                    if (!option.onecase)\n                        warning(\"This 'switch' should be an 'if'.\", this);\n                }\n                funct[\"(breakage)\"] -= 1;\n                funct[\"(verb)\"] = undefined;\n                return;\n            case \"(end)\":\n                error(\"Missing '{a}'.\", nexttoken, \"}\");\n                return;\n            default:\n                if (g) {\n                    switch (token.id) {\n                    case \",\":\n                        error(\"Each value should have its own case label.\");\n                        return;\n                    case \":\":\n                        g = false;\n                        statements();\n                        break;\n                    default:\n                        error(\"Missing ':' on a case clause.\", token);\n                        return;\n                    }\n                } else {\n                    if (token.id === \":\") {\n                        advance(\":\");\n                        error(\"Unexpected '{a}'.\", token, \":\");\n                        statements();\n                    } else {\n                        error(\"Expected '{a}' and instead saw '{b}'.\",\n                            nexttoken, \"case\", nexttoken.value);\n                        return;\n                    }\n                }\n            }\n        }\n    }).labelled = true;\n\n    stmt(\"debugger\", function () {\n        if (!option.debug) {\n            warning(\"All 'debugger' statements should be removed.\");\n        }\n        return this;\n    }).exps = true;\n\n    (function () {\n        var x = stmt(\"do\", function () {\n            funct[\"(breakage)\"] += 1;\n            funct[\"(loopage)\"] += 1;\n            increaseComplexityCount();\n\n            this.first = block(true);\n            advance(\"while\");\n            var t = nexttoken;\n            nonadjacent(token, t);\n            advance(\"(\");\n            nospace();\n            expression(20);\n            if (nexttoken.id === \"=\") {\n                if (!option.boss)\n                    warning(\"Expected a conditional expression and instead saw an assignment.\");\n                advance(\"=\");\n                expression(20);\n            }\n            advance(\")\", t);\n            nospace(prevtoken, token);\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        });\n        x.labelled = true;\n        x.exps = true;\n    }());\n\n    blockstmt(\"for\", function () {\n        var s, t = nexttoken;\n        funct[\"(breakage)\"] += 1;\n        funct[\"(loopage)\"] += 1;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        if (peek(nexttoken.id === \"var\" ? 1 : 0).id === \"in\") {\n            if (nexttoken.id === \"var\") {\n                advance(\"var\");\n                varstatement.fud.call(varstatement, true);\n            } else {\n                switch (funct[nexttoken.value]) {\n                case \"unused\":\n                    funct[nexttoken.value] = \"var\";\n                    break;\n                case \"var\":\n                    break;\n                default:\n                    warning(\"Bad for in variable '{a}'.\",\n                            nexttoken, nexttoken.value);\n                }\n                advance();\n            }\n            advance(\"in\");\n            expression(20);\n            advance(\")\", t);\n            s = block(true, true);\n            if (option.forin && s && (s.length > 1 || typeof s[0] !== \"object\" ||\n                    s[0].value !== \"if\")) {\n                warning(\"The body of a for in should be wrapped in an if statement to filter \" +\n                        \"unwanted properties from the prototype.\", this);\n            }\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        } else {\n            if (nexttoken.id !== \";\") {\n                if (nexttoken.id === \"var\") {\n                    advance(\"var\");\n                    varstatement.fud.call(varstatement);\n                } else {\n                    for (;;) {\n                        expression(0, \"for\");\n                        if (nexttoken.id !== \",\") {\n                            break;\n                        }\n                        comma();\n                    }\n                }\n            }\n            nolinebreak(token);\n            advance(\";\");\n            if (nexttoken.id !== \";\") {\n                expression(20);\n                if (nexttoken.id === \"=\") {\n                    if (!option.boss)\n                        warning(\"Expected a conditional expression and instead saw an assignment.\");\n                    advance(\"=\");\n                    expression(20);\n                }\n            }\n            nolinebreak(token);\n            advance(\";\");\n            if (nexttoken.id === \";\") {\n                error(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, \")\", \";\");\n            }\n            if (nexttoken.id !== \")\") {\n                for (;;) {\n                    expression(0, \"for\");\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    comma();\n                }\n            }\n            advance(\")\", t);\n            nospace(prevtoken, token);\n            block(true, true);\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        }\n    }).labelled = true;\n\n\n    stmt(\"break\", function () {\n        var v = nexttoken.value;\n\n        if (funct[\"(breakage)\"] === 0)\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n\n        if (!option.asi)\n            nolinebreak(this);\n\n        if (nexttoken.id !== \";\") {\n            if (token.line === nexttoken.line) {\n                if (funct[v] !== \"label\") {\n                    warning(\"'{a}' is not a statement label.\", nexttoken, v);\n                } else if (scope[v] !== funct) {\n                    warning(\"'{a}' is out of scope.\", nexttoken, v);\n                }\n                this.first = nexttoken;\n                advance();\n            }\n        }\n        reachable(\"break\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"continue\", function () {\n        var v = nexttoken.value;\n\n        if (funct[\"(breakage)\"] === 0)\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n\n        if (!option.asi)\n            nolinebreak(this);\n\n        if (nexttoken.id !== \";\") {\n            if (token.line === nexttoken.line) {\n                if (funct[v] !== \"label\") {\n                    warning(\"'{a}' is not a statement label.\", nexttoken, v);\n                } else if (scope[v] !== funct) {\n                    warning(\"'{a}' is out of scope.\", nexttoken, v);\n                }\n                this.first = nexttoken;\n                advance();\n            }\n        } else if (!funct[\"(loopage)\"]) {\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n        }\n        reachable(\"continue\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"return\", function () {\n        if (this.line === nexttoken.line) {\n            if (nexttoken.id === \"(regexp)\")\n                warning(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\");\n\n            if (nexttoken.id !== \";\" && !nexttoken.reach) {\n                nonadjacent(token, nexttoken);\n                if (peek().value === \"=\" && !option.boss) {\n                    warningAt(\"Did you mean to return a conditional instead of an assignment?\",\n                              token.line, token.character + 1);\n                }\n                this.first = expression(0);\n            }\n        } else if (!option.asi) {\n            nolinebreak(this); // always warn (Line breaking error)\n        }\n        reachable(\"return\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"throw\", function () {\n        nolinebreak(this);\n        nonadjacent(token, nexttoken);\n        this.first = expression(20);\n        reachable(\"throw\");\n        return this;\n    }).exps = true;\n\n//  Superfluous reserved words\n\n    reserve(\"class\");\n    reserve(\"const\");\n    reserve(\"enum\");\n    reserve(\"export\");\n    reserve(\"extends\");\n    reserve(\"import\");\n    reserve(\"super\");\n\n    reserve(\"let\");\n    reserve(\"yield\");\n    reserve(\"implements\");\n    reserve(\"interface\");\n    reserve(\"package\");\n    reserve(\"private\");\n    reserve(\"protected\");\n    reserve(\"public\");\n    reserve(\"static\");\n\n\n// Parse JSON\n\n    function jsonValue() {\n\n        function jsonObject() {\n            var o = {}, t = nexttoken;\n            advance(\"{\");\n            if (nexttoken.id !== \"}\") {\n                for (;;) {\n                    if (nexttoken.id === \"(end)\") {\n                        error(\"Missing '}' to match '{' from line {a}.\",\n                                nexttoken, t.line);\n                    } else if (nexttoken.id === \"}\") {\n                        warning(\"Unexpected comma.\", token);\n                        break;\n                    } else if (nexttoken.id === \",\") {\n                        error(\"Unexpected comma.\", nexttoken);\n                    } else if (nexttoken.id !== \"(string)\") {\n                        warning(\"Expected a string and instead saw {a}.\",\n                                nexttoken, nexttoken.value);\n                    }\n                    if (o[nexttoken.value] === true) {\n                        warning(\"Duplicate key '{a}'.\",\n                                nexttoken, nexttoken.value);\n                    } else if ((nexttoken.value === \"__proto__\" &&\n                        !option.proto) || (nexttoken.value === \"__iterator__\" &&\n                        !option.iterator)) {\n                        warning(\"The '{a}' key may produce unexpected results.\",\n                            nexttoken, nexttoken.value);\n                    } else {\n                        o[nexttoken.value] = true;\n                    }\n                    advance();\n                    advance(\":\");\n                    jsonValue();\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    advance(\",\");\n                }\n            }\n            advance(\"}\");\n        }\n\n        function jsonArray() {\n            var t = nexttoken;\n            advance(\"[\");\n            if (nexttoken.id !== \"]\") {\n                for (;;) {\n                    if (nexttoken.id === \"(end)\") {\n                        error(\"Missing ']' to match '[' from line {a}.\",\n                                nexttoken, t.line);\n                    } else if (nexttoken.id === \"]\") {\n                        warning(\"Unexpected comma.\", token);\n                        break;\n                    } else if (nexttoken.id === \",\") {\n                        error(\"Unexpected comma.\", nexttoken);\n                    }\n                    jsonValue();\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    advance(\",\");\n                }\n            }\n            advance(\"]\");\n        }\n\n        switch (nexttoken.id) {\n        case \"{\":\n            jsonObject();\n            break;\n        case \"[\":\n            jsonArray();\n            break;\n        case \"true\":\n        case \"false\":\n        case \"null\":\n        case \"(number)\":\n        case \"(string)\":\n            advance();\n            break;\n        case \"-\":\n            advance(\"-\");\n            if (token.character !== nexttoken.from) {\n                warning(\"Unexpected space after '-'.\", token);\n            }\n            adjacent(token, nexttoken);\n            advance(\"(number)\");\n            break;\n        default:\n            error(\"Expected a JSON value.\", nexttoken);\n        }\n    }\n\n\n    // The actual JSHINT function itself.\n    var itself = function (s, o, g) {\n        var a, i, k, x;\n        var optionKeys;\n        var newOptionObj = {};\n\n        if (o && o.scope) {\n            JSHINT.scope = o.scope;\n        } else {\n            JSHINT.errors = [];\n            JSHINT.undefs = [];\n            JSHINT.internals = [];\n            JSHINT.blacklist = {};\n            JSHINT.scope = \"(main)\";\n        }\n\n        predefined = Object.create(standard);\n        declared = Object.create(null);\n        combine(predefined, g || {});\n\n        if (o) {\n            a = o.predef;\n            if (a) {\n                if (!Array.isArray(a) && typeof a === \"object\") {\n                    a = Object.keys(a);\n                }\n                a.forEach(function (item) {\n                    var slice;\n                    if (item[0] === \"-\") {\n                        slice = item.slice(1);\n                        JSHINT.blacklist[slice] = slice;\n                    } else {\n                        predefined[item] = true;\n                    }\n                });\n            }\n\n            optionKeys = Object.keys(o);\n            for (x = 0; x < optionKeys.length; x++) {\n                newOptionObj[optionKeys[x]] = o[optionKeys[x]];\n\n                if (optionKeys[x] === \"newcap\" && o[optionKeys[x]] === false)\n                    newOptionObj[\"(explicitNewcap)\"] = true;\n\n                if (optionKeys[x] === \"indent\")\n                    newOptionObj.white = true;\n            }\n        }\n\n        option = newOptionObj;\n\n        option.indent = option.indent || 4;\n        option.maxerr = option.maxerr || 50;\n\n        tab = \"\";\n        for (i = 0; i < option.indent; i += 1) {\n            tab += \" \";\n        }\n        indent = 1;\n        global = Object.create(predefined);\n        scope = global;\n        funct = {\n            \"(global)\":   true,\n            \"(name)\":     \"(global)\",\n            \"(scope)\":    scope,\n            \"(breakage)\": 0,\n            \"(loopage)\":  0,\n            \"(tokens)\":   {},\n            \"(metrics)\":   createMetrics(nexttoken)\n        };\n        functions = [funct];\n        urls = [];\n        stack = null;\n        member = {};\n        membersOnly = null;\n        implied = {};\n        inblock = false;\n        lookahead = [];\n        jsonmode = false;\n        warnings = 0;\n        lines = [];\n        unuseds = [];\n\n        if (!isString(s) && !Array.isArray(s)) {\n            errorAt(\"Input is neither a string nor an array of strings.\", 0);\n            return false;\n        }\n\n        if (isString(s) && /^\\s*$/g.test(s)) {\n            errorAt(\"Input is an empty string.\", 0);\n            return false;\n        }\n\n        if (s.length === 0) {\n            errorAt(\"Input is an empty array.\", 0);\n            return false;\n        }\n\n        lex.init(s);\n\n        prereg = true;\n        directive = {};\n\n        prevtoken = token = nexttoken = syntax[\"(begin)\"];\n\n        // Check options\n        for (var name in o) {\n            if (is_own(o, name)) {\n                checkOption(name, token);\n            }\n        }\n\n        assume();\n\n        // combine the passed globals after we've assumed all our options\n        combine(predefined, g || {});\n\n        //reset values\n        comma.first = true;\n        quotmark = undefined;\n\n        try {\n            advance();\n            switch (nexttoken.id) {\n            case \"{\":\n            case \"[\":\n                option.laxbreak = true;\n                jsonmode = true;\n                jsonValue();\n                break;\n            default:\n                directives();\n                if (directive[\"use strict\"] && !option.globalstrict) {\n                    warning(\"Use the function form of \\\"use strict\\\".\", prevtoken);\n                }\n\n                statements();\n            }\n            advance((nexttoken && nexttoken.value !== \".\")  ? \"(end)\" : undefined);\n\n            var markDefined = function (name, context) {\n                do {\n                    if (typeof context[name] === \"string\") {\n                        // JSHINT marks unused variables as 'unused' and\n                        // unused function declaration as 'unction'. This\n                        // code changes such instances back 'var' and\n                        // 'closure' so that the code in JSHINT.data()\n                        // doesn't think they're unused.\n\n                        if (context[name] === \"unused\")\n                            context[name] = \"var\";\n                        else if (context[name] === \"unction\")\n                            context[name] = \"closure\";\n\n                        return true;\n                    }\n\n                    context = context[\"(context)\"];\n                } while (context);\n\n                return false;\n            };\n\n            var clearImplied = function (name, line) {\n                if (!implied[name])\n                    return;\n\n                var newImplied = [];\n                for (var i = 0; i < implied[name].length; i += 1) {\n                    if (implied[name][i] !== line)\n                        newImplied.push(implied[name][i]);\n                }\n\n                if (newImplied.length === 0)\n                    delete implied[name];\n                else\n                    implied[name] = newImplied;\n            };\n\n            var warnUnused = function (name, token) {\n                var line = token.line;\n                var chr  = token.character;\n\n                if (option.unused)\n                    warningAt(\"'{a}' is defined but never used.\", line, chr, name);\n\n                unuseds.push({\n                    name: name,\n                    line: line,\n                    character: chr\n                });\n            };\n\n            var checkUnused = function (func, key) {\n                var type = func[key];\n                var token = func[\"(tokens)\"][key];\n\n                if (key.charAt(0) === \"(\")\n                    return;\n\n                if (type !== \"unused\" && type !== \"unction\")\n                    return;\n\n                // Params are checked separately from other variables.\n                if (func[\"(params)\"] && func[\"(params)\"].indexOf(key) !== -1)\n                    return;\n\n                warnUnused(key, token);\n            };\n\n            // Check queued 'x is not defined' instances to see if they're still undefined.\n            for (i = 0; i < JSHINT.undefs.length; i += 1) {\n                k = JSHINT.undefs[i].slice(0);\n\n                if (markDefined(k[2].value, k[0])) {\n                    clearImplied(k[2].value, k[2].line);\n                } else {\n                    warning.apply(warning, k.slice(1));\n                }\n            }\n\n            functions.forEach(function (func) {\n                for (var key in func) {\n                    if (is_own(func, key)) {\n                        checkUnused(func, key);\n                    }\n                }\n\n                if (!func[\"(params)\"])\n                    return;\n\n                var params = func[\"(params)\"].slice();\n                var param  = params.pop();\n                var type;\n\n                while (param) {\n                    type = func[param];\n\n                    // 'undefined' is a special case for (function (window, undefined) { ... })();\n                    // patterns.\n\n                    if (param === \"undefined\")\n                        return;\n\n                    if (type !== \"unused\" && type !== \"unction\")\n                        return;\n\n                    warnUnused(param, func[\"(tokens)\"][param]);\n                    param = params.pop();\n                }\n            });\n\n            for (var key in declared) {\n                if (is_own(declared, key) && !is_own(global, key)) {\n                    warnUnused(key, declared[key]);\n                }\n            }\n        } catch (e) {\n            if (e) {\n                var nt = nexttoken || {};\n                JSHINT.errors.push({\n                    raw       : e.raw,\n                    reason    : e.message,\n                    line      : e.line || nt.line,\n                    character : e.character || nt.from\n                }, null);\n            }\n        }\n\n        // Loop over the listed \"internals\", and check them as well.\n\n        if (JSHINT.scope === \"(main)\") {\n            o = o || {};\n\n            for (i = 0; i < JSHINT.internals.length; i += 1) {\n                k = JSHINT.internals[i];\n                o.scope = k.elem;\n                itself(k.value, o, g);\n            }\n        }\n\n        return JSHINT.errors.length === 0;\n    };\n\n    // Data summary.\n    itself.data = function () {\n        var data = {\n            functions: [],\n            options: option\n        };\n        var implieds = [];\n        var members = [];\n        var fu, f, i, j, n, globals;\n\n        if (itself.errors.length) {\n            data.errors = itself.errors;\n        }\n\n        if (jsonmode) {\n            data.json = true;\n        }\n\n        for (n in implied) {\n            if (is_own(implied, n)) {\n                implieds.push({\n                    name: n,\n                    line: implied[n]\n                });\n            }\n        }\n\n        if (implieds.length > 0) {\n            data.implieds = implieds;\n        }\n\n        if (urls.length > 0) {\n            data.urls = urls;\n        }\n\n        globals = Object.keys(scope);\n        if (globals.length > 0) {\n            data.globals = globals;\n        }\n\n        for (i = 1; i < functions.length; i += 1) {\n            f = functions[i];\n            fu = {};\n\n            for (j = 0; j < functionicity.length; j += 1) {\n                fu[functionicity[j]] = [];\n            }\n\n            for (j = 0; j < functionicity.length; j += 1) {\n                if (fu[functionicity[j]].length === 0) {\n                    delete fu[functionicity[j]];\n                }\n            }\n\n            fu.name = f[\"(name)\"];\n            fu.param = f[\"(params)\"];\n            fu.line = f[\"(line)\"];\n            fu.character = f[\"(character)\"];\n            fu.last = f[\"(last)\"];\n            fu.lastcharacter = f[\"(lastcharacter)\"];\n            data.functions.push(fu);\n        }\n\n        if (unuseds.length > 0) {\n            data.unused = unuseds;\n        }\n\n        members = [];\n        for (n in member) {\n            if (typeof member[n] === \"number\") {\n                data.member = member;\n                break;\n            }\n        }\n\n        return data;\n    };\n\n    itself.jshint = itself;\n\n    return itself;\n}());\n\n// Make JSHINT a Node module, if possible.\nif (typeof exports === \"object\" && exports) {\n    exports.JSHINT = JSHINT;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.css",
    "content": "/**\n * QUnit v1.10.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n/** Font Family and Sizes */\n\n#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {\n\tfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n}\n\n#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }\n#qunit-tests { font-size: smaller; }\n\n\n/** Resets */\n\n#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n\n/** Header */\n\n#qunit-header {\n\tpadding: 0.5em 0 0.5em 1em;\n\n\tcolor: #8699a4;\n\tbackground-color: #0d3349;\n\n\tfont-size: 1.5em;\n\tline-height: 1em;\n\tfont-weight: normal;\n\n\tborder-radius: 5px 5px 0 0;\n\t-moz-border-radius: 5px 5px 0 0;\n\t-webkit-border-top-right-radius: 5px;\n\t-webkit-border-top-left-radius: 5px;\n}\n\n#qunit-header a {\n\ttext-decoration: none;\n\tcolor: #c2ccd1;\n}\n\n#qunit-header a:hover,\n#qunit-header a:focus {\n\tcolor: #fff;\n}\n\n#qunit-testrunner-toolbar label {\n\tdisplay: inline-block;\n\tpadding: 0 .5em 0 .1em;\n}\n\n#qunit-banner {\n\theight: 5px;\n}\n\n#qunit-testrunner-toolbar {\n\tpadding: 0.5em 0 0.5em 2em;\n\tcolor: #5E740B;\n\tbackground-color: #eee;\n\toverflow: hidden;\n}\n\n#qunit-userAgent {\n\tpadding: 0.5em 0 0.5em 2.5em;\n\tbackground-color: #2b81af;\n\tcolor: #fff;\n\ttext-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;\n}\n\n#qunit-modulefilter-container {\n\tfloat: right;\n}\n\n/** Tests: Pass/Fail */\n\n#qunit-tests {\n\tlist-style-position: inside;\n}\n\n#qunit-tests li {\n\tpadding: 0.4em 0.5em 0.4em 2.5em;\n\tborder-bottom: 1px solid #fff;\n\tlist-style-position: inside;\n}\n\n#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {\n\tdisplay: none;\n}\n\n#qunit-tests li strong {\n\tcursor: pointer;\n}\n\n#qunit-tests li a {\n\tpadding: 0.5em;\n\tcolor: #c2ccd1;\n\ttext-decoration: none;\n}\n#qunit-tests li a:hover,\n#qunit-tests li a:focus {\n\tcolor: #000;\n}\n\n#qunit-tests ol {\n\tmargin-top: 0.5em;\n\tpadding: 0.5em;\n\n\tbackground-color: #fff;\n\n\tborder-radius: 5px;\n\t-moz-border-radius: 5px;\n\t-webkit-border-radius: 5px;\n}\n\n#qunit-tests table {\n\tborder-collapse: collapse;\n\tmargin-top: .2em;\n}\n\n#qunit-tests th {\n\ttext-align: right;\n\tvertical-align: top;\n\tpadding: 0 .5em 0 0;\n}\n\n#qunit-tests td {\n\tvertical-align: top;\n}\n\n#qunit-tests pre {\n\tmargin: 0;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n#qunit-tests del {\n\tbackground-color: #e0f2be;\n\tcolor: #374e0c;\n\ttext-decoration: none;\n}\n\n#qunit-tests ins {\n\tbackground-color: #ffcaca;\n\tcolor: #500;\n\ttext-decoration: none;\n}\n\n/*** Test Counts */\n\n#qunit-tests b.counts                       { color: black; }\n#qunit-tests b.passed                       { color: #5E740B; }\n#qunit-tests b.failed                       { color: #710909; }\n\n#qunit-tests li li {\n\tpadding: 5px;\n\tbackground-color: #fff;\n\tborder-bottom: none;\n\tlist-style-position: inside;\n}\n\n/*** Passing Styles */\n\n#qunit-tests li li.pass {\n\tcolor: #3c510c;\n\tbackground-color: #fff;\n\tborder-left: 10px solid #C6E746;\n}\n\n#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }\n#qunit-tests .pass .test-name               { color: #366097; }\n\n#qunit-tests .pass .test-actual,\n#qunit-tests .pass .test-expected           { color: #999999; }\n\n#qunit-banner.qunit-pass                    { background-color: #C6E746; }\n\n/*** Failing Styles */\n\n#qunit-tests li li.fail {\n\tcolor: #710909;\n\tbackground-color: #fff;\n\tborder-left: 10px solid #EE5757;\n\twhite-space: pre;\n}\n\n#qunit-tests > li:last-child {\n\tborder-radius: 0 0 5px 5px;\n\t-moz-border-radius: 0 0 5px 5px;\n\t-webkit-border-bottom-right-radius: 5px;\n\t-webkit-border-bottom-left-radius: 5px;\n}\n\n#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }\n#qunit-tests .fail .test-name,\n#qunit-tests .fail .module-name             { color: #000000; }\n\n#qunit-tests .fail .test-actual             { color: #EE5757; }\n#qunit-tests .fail .test-expected           { color: green;   }\n\n#qunit-banner.qunit-fail                    { background-color: #EE5757; }\n\n\n/** Result */\n\n#qunit-testresult {\n\tpadding: 0.5em 0.5em 0.5em 2.5em;\n\n\tcolor: #2b81af;\n\tbackground-color: #D2E0E6;\n\n\tborder-bottom: 1px solid white;\n}\n#qunit-testresult .module-name {\n\tfont-weight: bold;\n}\n\n/** Fixture */\n\n#qunit-fixture {\n\tposition: absolute;\n\ttop: -10000px;\n\tleft: -10000px;\n\twidth: 1000px;\n\theight: 1000px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.js",
    "content": "/**\n * QUnit v1.10.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n(function( window ) {\n\nvar QUnit,\n\tconfig,\n\tonErrorFnPrev,\n\ttestId = 0,\n\tfileName = (sourceFromStacktrace( 0 ) || \"\" ).replace(/(:\\d+)+\\)?/, \"\").replace(/.+\\//, \"\"),\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\t// Keep a local reference to Date (GH-283)\n\tDate = window.Date,\n\tdefined = {\n\tsetTimeout: typeof window.setTimeout !== \"undefined\",\n\tsessionStorage: (function() {\n\t\tvar x = \"qunit-test-string\";\n\t\ttry {\n\t\t\tsessionStorage.setItem( x, x );\n\t\t\tsessionStorage.removeItem( x );\n\t\t\treturn true;\n\t\t} catch( e ) {\n\t\t\treturn false;\n\t\t}\n\t}())\n};\n\nfunction Test( settings ) {\n\textend( this, settings );\n\tthis.assertions = [];\n\tthis.testNumber = ++Test.count;\n}\n\nTest.count = 0;\n\nTest.prototype = {\n\tinit: function() {\n\t\tvar a, b, li,\n        tests = id( \"qunit-tests\" );\n\n\t\tif ( tests ) {\n\t\t\tb = document.createElement( \"strong\" );\n\t\t\tb.innerHTML = this.name;\n\n\t\t\t// `a` initialized at top of scope\n\t\t\ta = document.createElement( \"a\" );\n\t\t\ta.innerHTML = \"Rerun\";\n\t\t\ta.href = QUnit.url({ testNumber: this.testNumber });\n\n\t\t\tli = document.createElement( \"li\" );\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild( a );\n\t\t\tli.className = \"running\";\n\t\t\tli.id = this.id = \"qunit-test-output\" + testId++;\n\n\t\t\ttests.appendChild( li );\n\t\t}\n\t},\n\tsetup: function() {\n\t\tif ( this.module !== config.previousModule ) {\n\t\t\tif ( config.previousModule ) {\n\t\t\t\trunLoggingCallbacks( \"moduleDone\", QUnit, {\n\t\t\t\t\tname: config.previousModule,\n\t\t\t\t\tfailed: config.moduleStats.bad,\n\t\t\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\t\t\ttotal: config.moduleStats.all\n\t\t\t\t});\n\t\t\t}\n\t\t\tconfig.previousModule = this.module;\n\t\t\tconfig.moduleStats = { all: 0, bad: 0 };\n\t\t\trunLoggingCallbacks( \"moduleStart\", QUnit, {\n\t\t\t\tname: this.module\n\t\t\t});\n\t\t} else if ( config.autorun ) {\n\t\t\trunLoggingCallbacks( \"moduleStart\", QUnit, {\n\t\t\t\tname: this.module\n\t\t\t});\n\t\t}\n\n\t\tconfig.current = this;\n\n\t\tthis.testEnvironment = extend({\n\t\t\tsetup: function() {},\n\t\t\tteardown: function() {}\n\t\t}, this.moduleTestEnvironment );\n\n\t\trunLoggingCallbacks( \"testStart\", QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module\n\t\t});\n\n\t\t// allow utility functions to access the current test environment\n\t\t// TODO why??\n\t\tQUnit.current_testEnvironment = this.testEnvironment;\n\n\t\tif ( !config.pollution ) {\n\t\t\tsaveGlobal();\n\t\t}\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.setup.call( this.testEnvironment );\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.testEnvironment.setup.call( this.testEnvironment );\n\t\t} catch( e ) {\n\t\t\tQUnit.pushFailure( \"Setup failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t}\n\t},\n\trun: function() {\n\t\tconfig.current = this;\n\n\t\tvar running = id( \"qunit-testresult\" );\n\n\t\tif ( running ) {\n\t\t\trunning.innerHTML = \"Running: <br/>\" + this.name;\n\t\t}\n\n\t\tif ( this.async ) {\n\t\t\tQUnit.stop();\n\t\t}\n\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.callback.call( this.testEnvironment, QUnit.assert );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.callback.call( this.testEnvironment, QUnit.assert );\n\t\t} catch( e ) {\n\t\t\tQUnit.pushFailure( \"Died on test #\" + (this.assertions.length + 1) + \" \" + this.stack + \": \" + e.message, extractStacktrace( e, 0 ) );\n\t\t\t// else next test will carry the responsibility\n\t\t\tsaveGlobal();\n\n\t\t\t// Restart the tests if they're blocking\n\t\t\tif ( config.blocking ) {\n\t\t\t\tQUnit.start();\n\t\t\t}\n\t\t}\n\t},\n\tteardown: function() {\n\t\tconfig.current = this;\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.teardown.call( this.testEnvironment );\n\t\t\treturn;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.testEnvironment.teardown.call( this.testEnvironment );\n\t\t\t} catch( e ) {\n\t\t\t\tQUnit.pushFailure( \"Teardown failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t}\n\t\t}\n\t\tcheckPollution();\n\t},\n\tfinish: function() {\n\t\tconfig.current = this;\n\t\tif ( config.requireExpects && this.expected == null ) {\n\t\t\tQUnit.pushFailure( \"Expected number of assertions to be defined, but expect() was not called.\", this.stack );\n\t\t} else if ( this.expected != null && this.expected != this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected \" + this.expected + \" assertions, but \" + this.assertions.length + \" were run\", this.stack );\n\t\t} else if ( this.expected == null && !this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.\", this.stack );\n\t\t}\n\n\t\tvar assertion, a, b, i, li, ol,\n\t\t\ttest = this,\n\t\t\tgood = 0,\n\t\t\tbad = 0,\n\t\t\ttests = id( \"qunit-tests\" );\n\n\t\tconfig.stats.all += this.assertions.length;\n\t\tconfig.moduleStats.all += this.assertions.length;\n\n\t\tif ( tests ) {\n\t\t\tol = document.createElement( \"ol\" );\n\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tassertion = this.assertions[i];\n\n\t\t\t\tli = document.createElement( \"li\" );\n\t\t\t\tli.className = assertion.result ? \"pass\" : \"fail\";\n\t\t\t\tli.innerHTML = assertion.message || ( assertion.result ? \"okay\" : \"failed\" );\n\t\t\t\tol.appendChild( li );\n\n\t\t\t\tif ( assertion.result ) {\n\t\t\t\t\tgood++;\n\t\t\t\t} else {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// store result when possible\n\t\t\tif ( QUnit.config.reorder && defined.sessionStorage ) {\n\t\t\t\tif ( bad ) {\n\t\t\t\t\tsessionStorage.setItem( \"qunit-test-\" + this.module + \"-\" + this.testName, bad );\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem( \"qunit-test-\" + this.module + \"-\" + this.testName );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( bad === 0 ) {\n\t\t\t\tol.style.display = \"none\";\n\t\t\t}\n\n\t\t\t// `b` initialized at top of scope\n\t\t\tb = document.createElement( \"strong\" );\n\t\t\tb.innerHTML = this.name + \" <b class='counts'>(<b class='failed'>\" + bad + \"</b>, <b class='passed'>\" + good + \"</b>, \" + this.assertions.length + \")</b>\";\n\n\t\t\taddEvent(b, \"click\", function() {\n\t\t\t\tvar next = b.nextSibling.nextSibling,\n\t\t\t\t\tdisplay = next.style.display;\n\t\t\t\tnext.style.display = display === \"none\" ? \"block\" : \"none\";\n\t\t\t});\n\n\t\t\taddEvent(b, \"dblclick\", function( e ) {\n\t\t\t\tvar target = e && e.target ? e.target : window.event.srcElement;\n\t\t\t\tif ( target.nodeName.toLowerCase() == \"span\" || target.nodeName.toLowerCase() == \"b\" ) {\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\t\t\t\tif ( window.location && target.nodeName.toLowerCase() === \"strong\" ) {\n\t\t\t\t\twindow.location = QUnit.url({ testNumber: test.testNumber });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// `li` initialized at top of scope\n\t\t\tli = id( this.id );\n\t\t\tli.className = bad ? \"fail\" : \"pass\";\n\t\t\tli.removeChild( li.firstChild );\n\t\t\ta = li.firstChild;\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild ( a );\n\t\t\tli.appendChild( ol );\n\n\t\t} else {\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tif ( !this.assertions[i].result ) {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trunLoggingCallbacks( \"testDone\", QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module,\n\t\t\tfailed: bad,\n\t\t\tpassed: this.assertions.length - bad,\n\t\t\ttotal: this.assertions.length\n\t\t});\n\n\t\tQUnit.reset();\n\n\t\tconfig.current = undefined;\n\t},\n\n\tqueue: function() {\n\t\tvar bad,\n\t\t\ttest = this;\n\n\t\tsynchronize(function() {\n\t\t\ttest.init();\n\t\t});\n\t\tfunction run() {\n\t\t\t// each of these can by async\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.setup();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.run();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.teardown();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.finish();\n\t\t\t});\n\t\t}\n\n\t\t// `bad` initialized at top of scope\n\t\t// defer when previous test run passed, if storage is available\n\t\tbad = QUnit.config.reorder && defined.sessionStorage &&\n\t\t\t\t\t\t+sessionStorage.getItem( \"qunit-test-\" + this.module + \"-\" + this.testName );\n\n\t\tif ( bad ) {\n\t\t\trun();\n\t\t} else {\n\t\t\tsynchronize( run, true );\n\t\t}\n\t}\n};\n\n// Root QUnit object.\n// `QUnit` initialized at top of scope\nQUnit = {\n\n\t// call on start of module test to prepend name to all tests\n\tmodule: function( name, testEnvironment ) {\n\t\tconfig.currentModule = name;\n\t\tconfig.currentModuleTestEnvironment = testEnvironment;\n\t\tconfig.modules[name] = true;\n\t},\n\n\tasyncTest: function( testName, expected, callback ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tQUnit.test( testName, expected, callback, true );\n\t},\n\n\ttest: function( testName, expected, callback, async ) {\n\t\tvar test,\n\t\t\tname = \"<span class='test-name'>\" + escapeInnerText( testName ) + \"</span>\";\n\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tif ( config.currentModule ) {\n\t\t\tname = \"<span class='module-name'>\" + config.currentModule + \"</span>: \" + name;\n\t\t}\n\n\t\ttest = new Test({\n\t\t\tname: name,\n\t\t\ttestName: testName,\n\t\t\texpected: expected,\n\t\t\tasync: async,\n\t\t\tcallback: callback,\n\t\t\tmodule: config.currentModule,\n\t\t\tmoduleTestEnvironment: config.currentModuleTestEnvironment,\n\t\t\tstack: sourceFromStacktrace( 2 )\n\t\t});\n\n\t\tif ( !validTest( test ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttest.queue();\n\t},\n\n\t// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.\n\texpect: function( asserts ) {\n\t\tif (arguments.length === 1) {\n\t\t\tconfig.current.expected = asserts;\n\t\t} else {\n\t\t\treturn config.current.expected;\n\t\t}\n\t},\n\n\tstart: function( count ) {\n\t\tconfig.semaphore -= count || 1;\n\t\t// don't start until equal number of stop-calls\n\t\tif ( config.semaphore > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t// ignore if start is called more often then stop\n\t\tif ( config.semaphore < 0 ) {\n\t\t\tconfig.semaphore = 0;\n\t\t}\n\t\t// A slight delay, to avoid any current callbacks\n\t\tif ( defined.setTimeout ) {\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tif ( config.semaphore > 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( config.timeout ) {\n\t\t\t\t\tclearTimeout( config.timeout );\n\t\t\t\t}\n\n\t\t\t\tconfig.blocking = false;\n\t\t\t\tprocess( true );\n\t\t\t}, 13);\n\t\t} else {\n\t\t\tconfig.blocking = false;\n\t\t\tprocess( true );\n\t\t}\n\t},\n\n\tstop: function( count ) {\n\t\tconfig.semaphore += count || 1;\n\t\tconfig.blocking = true;\n\n\t\tif ( config.testTimeout && defined.setTimeout ) {\n\t\t\tclearTimeout( config.timeout );\n\t\t\tconfig.timeout = window.setTimeout(function() {\n\t\t\t\tQUnit.ok( false, \"Test timed out\" );\n\t\t\t\tconfig.semaphore = 1;\n\t\t\t\tQUnit.start();\n\t\t\t}, config.testTimeout );\n\t\t}\n\t}\n};\n\n// Asssert helpers\n// All of these must call either QUnit.push() or manually do:\n// - runLoggingCallbacks( \"log\", .. );\n// - config.current.assertions.push({ .. });\nQUnit.assert = {\n\t/**\n\t * Asserts rough true-ish result.\n\t * @name ok\n\t * @function\n\t * @example ok( \"asdfasdf\".length > 5, \"There must be at least 5 chars\" );\n\t */\n\tok: function( result, msg ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"ok() assertion outside test context, was \" + sourceFromStacktrace(2) );\n\t\t}\n\t\tresult = !!result;\n\n\t\tvar source,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: result,\n\t\t\t\tmessage: msg\n\t\t\t};\n\n\t\tmsg = escapeInnerText( msg || (result ? \"okay\" : \"failed\" ) );\n\t\tmsg = \"<span class='test-message'>\" + msg + \"</span>\";\n\n\t\tif ( !result ) {\n\t\t\tsource = sourceFromStacktrace( 2 );\n\t\t\tif ( source ) {\n\t\t\t\tdetails.source = source;\n\t\t\t\tmsg += \"<table><tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr></table>\";\n\t\t\t}\n\t\t}\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t});\n\t},\n\n\t/**\n\t * Assert that the first two arguments are equal, with an optional message.\n\t * Prints out both actual and expected values.\n\t * @name equal\n\t * @function\n\t * @example equal( format( \"Received {0} bytes.\", 2), \"Received 2 bytes.\", \"format() replaces {0} with next argument\" );\n\t */\n\tequal: function( actual, expected, message ) {\n\t\tQUnit.push( expected == actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name notEqual\n\t * @function\n\t */\n\tnotEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected != actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name deepEqual\n\t * @function\n\t */\n\tdeepEqual: function( actual, expected, message ) {\n\t\tQUnit.push( QUnit.equiv(actual, expected), actual, expected, message );\n\t},\n\n\t/**\n\t * @name notDeepEqual\n\t * @function\n\t */\n\tnotDeepEqual: function( actual, expected, message ) {\n\t\tQUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );\n\t},\n\n\t/**\n\t * @name strictEqual\n\t * @function\n\t */\n\tstrictEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected === actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name notStrictEqual\n\t * @function\n\t */\n\tnotStrictEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected !== actual, actual, expected, message );\n\t},\n\n\tthrows: function( block, expected, message ) {\n\t\tvar actual,\n\t\t\tok = false;\n\n\t\t// 'expected' is optional\n\t\tif ( typeof expected === \"string\" ) {\n\t\t\tmessage = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tconfig.current.ignoreGlobalErrors = true;\n\t\ttry {\n\t\t\tblock.call( config.current.testEnvironment );\n\t\t} catch (e) {\n\t\t\tactual = e;\n\t\t}\n\t\tconfig.current.ignoreGlobalErrors = false;\n\n\t\tif ( actual ) {\n\t\t\t// we don't want to validate thrown error\n\t\t\tif ( !expected ) {\n\t\t\t\tok = true;\n\t\t\t// expected is a regexp\n\t\t\t} else if ( QUnit.objectType( expected ) === \"regexp\" ) {\n\t\t\t\tok = expected.test( actual );\n\t\t\t// expected is a constructor\n\t\t\t} else if ( actual instanceof expected ) {\n\t\t\t\tok = true;\n\t\t\t// expected is a validation function which returns true is validation passed\n\t\t\t} else if ( expected.call( {}, actual ) === true ) {\n\t\t\t\tok = true;\n\t\t\t}\n\n\t\t\tQUnit.push( ok, actual, null, message );\n\t\t} else {\n\t\t\tQUnit.pushFailure( message, null, 'No exception was thrown.' );\n\t\t}\n\t}\n};\n\n/**\n * @deprecate since 1.8.0\n * Kept assertion helpers in root for backwards compatibility\n */\nextend( QUnit, QUnit.assert );\n\n/**\n * @deprecated since 1.9.0\n * Kept global \"raises()\" for backwards compatibility\n */\nQUnit.raises = QUnit.assert.throws;\n\n/**\n * @deprecated since 1.0.0, replaced with error pushes since 1.3.0\n * Kept to avoid TypeErrors for undefined methods.\n */\nQUnit.equals = function() {\n\tQUnit.push( false, false, false, \"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead\" );\n};\nQUnit.same = function() {\n\tQUnit.push( false, false, false, \"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead\" );\n};\n\n// We want access to the constructor's prototype\n(function() {\n\tfunction F() {}\n\tF.prototype = QUnit;\n\tQUnit = new F();\n\t// Make F QUnit's constructor so that we can add to the prototype later\n\tQUnit.constructor = F;\n}());\n\n/**\n * Config object: Maintain internal state\n * Later exposed as QUnit.config\n * `config` initialized at top of scope\n */\nconfig = {\n\t// The queue of tests to run\n\tqueue: [],\n\n\t// block until document ready\n\tblocking: true,\n\n\t// when enabled, show only failing tests\n\t// gets persisted through sessionStorage and can be changed in UI via checkbox\n\thidepassed: false,\n\n\t// by default, run previously failed tests first\n\t// very useful in combination with \"Hide passed tests\" checked\n\treorder: true,\n\n\t// by default, modify document.title when suite is done\n\taltertitle: true,\n\n\t// when enabled, all tests must call expect()\n\trequireExpects: false,\n\n\t// add checkboxes that are persisted in the query-string\n\t// when enabled, the id is set to `true` as a `QUnit.config` property\n\turlConfig: [\n\t\t{\n\t\t\tid: \"noglobals\",\n\t\t\tlabel: \"Check for Globals\",\n\t\t\ttooltip: \"Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings.\"\n\t\t},\n\t\t{\n\t\t\tid: \"notrycatch\",\n\t\t\tlabel: \"No try-catch\",\n\t\t\ttooltip: \"Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings.\"\n\t\t}\n\t],\n\n\t// Set of all modules.\n\tmodules: {},\n\n\t// logging callback queues\n\tbegin: [],\n\tdone: [],\n\tlog: [],\n\ttestStart: [],\n\ttestDone: [],\n\tmoduleStart: [],\n\tmoduleDone: []\n};\n\n// Initialize more QUnit.config and QUnit.urlParams\n(function() {\n\tvar i,\n\t\tlocation = window.location || { search: \"\", protocol: \"file:\" },\n\t\tparams = location.search.slice( 1 ).split( \"&\" ),\n\t\tlength = params.length,\n\t\turlParams = {},\n\t\tcurrent;\n\n\tif ( params[ 0 ] ) {\n\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\tcurrent = params[ i ].split( \"=\" );\n\t\t\tcurrent[ 0 ] = decodeURIComponent( current[ 0 ] );\n\t\t\t// allow just a key to turn on a flag, e.g., test.html?noglobals\n\t\t\tcurrent[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;\n\t\t\turlParams[ current[ 0 ] ] = current[ 1 ];\n\t\t}\n\t}\n\n\tQUnit.urlParams = urlParams;\n\n\t// String search anywhere in moduleName+testName\n\tconfig.filter = urlParams.filter;\n\n\t// Exact match of the module name\n\tconfig.module = urlParams.module;\n\n\tconfig.testNumber = parseInt( urlParams.testNumber, 10 ) || null;\n\n\t// Figure out if we're running the tests from a server or not\n\tQUnit.isLocal = location.protocol === \"file:\";\n}());\n\n// Export global variables, unless an 'exports' object exists,\n// in that case we assume we're in CommonJS (dealt with on the bottom of the script)\nif ( typeof exports === \"undefined\" ) {\n\textend( window, QUnit );\n\n\t// Expose QUnit object\n\twindow.QUnit = QUnit;\n}\n\n// Extend QUnit object,\n// these after set here because they should not be exposed as global functions\nextend( QUnit, {\n\tconfig: config,\n\n\t// Initialize the configuration options\n\tinit: function() {\n\t\textend( config, {\n\t\t\tstats: { all: 0, bad: 0 },\n\t\t\tmoduleStats: { all: 0, bad: 0 },\n\t\t\tstarted: +new Date(),\n\t\t\tupdateRate: 1000,\n\t\t\tblocking: false,\n\t\t\tautostart: true,\n\t\t\tautorun: false,\n\t\t\tfilter: \"\",\n\t\t\tqueue: [],\n\t\t\tsemaphore: 0\n\t\t});\n\n\t\tvar tests, banner, result,\n\t\t\tqunit = id( \"qunit\" );\n\n\t\tif ( qunit ) {\n\t\t\tqunit.innerHTML =\n\t\t\t\t\"<h1 id='qunit-header'>\" + escapeInnerText( document.title ) + \"</h1>\" +\n\t\t\t\t\"<h2 id='qunit-banner'></h2>\" +\n\t\t\t\t\"<div id='qunit-testrunner-toolbar'></div>\" +\n\t\t\t\t\"<h2 id='qunit-userAgent'></h2>\" +\n\t\t\t\t\"<ol id='qunit-tests'></ol>\";\n\t\t}\n\n\t\ttests = id( \"qunit-tests\" );\n\t\tbanner = id( \"qunit-banner\" );\n\t\tresult = id( \"qunit-testresult\" );\n\n\t\tif ( tests ) {\n\t\t\ttests.innerHTML = \"\";\n\t\t}\n\n\t\tif ( banner ) {\n\t\t\tbanner.className = \"\";\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult.parentNode.removeChild( result );\n\t\t}\n\n\t\tif ( tests ) {\n\t\t\tresult = document.createElement( \"p\" );\n\t\t\tresult.id = \"qunit-testresult\";\n\t\t\tresult.className = \"result\";\n\t\t\ttests.parentNode.insertBefore( result, tests );\n\t\t\tresult.innerHTML = \"Running...<br/>&nbsp;\";\n\t\t}\n\t},\n\n\t// Resets the test setup. Useful for tests that modify the DOM.\n\treset: function() {\n\t\tvar fixture = id( \"qunit-fixture\" );\n\t\tif ( fixture ) {\n\t\t\tfixture.innerHTML = config.fixture;\n\t\t}\n\t},\n\n\t// Trigger an event on an element.\n\t// @example triggerEvent( document.body, \"click\" );\n\ttriggerEvent: function( elem, type, event ) {\n\t\tif ( document.createEvent ) {\n\t\t\tevent = document.createEvent( \"MouseEvents\" );\n\t\t\tevent.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,\n\t\t\t\t0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n\t\t\telem.dispatchEvent( event );\n\t\t} else if ( elem.fireEvent ) {\n\t\t\telem.fireEvent( \"on\" + type );\n\t\t}\n\t},\n\n\t// Safe object type checking\n\tis: function( type, obj ) {\n\t\treturn QUnit.objectType( obj ) == type;\n\t},\n\n\tobjectType: function( obj ) {\n\t\tif ( typeof obj === \"undefined\" ) {\n\t\t\t\treturn \"undefined\";\n\t\t// consider: typeof null === object\n\t\t}\n\t\tif ( obj === null ) {\n\t\t\t\treturn \"null\";\n\t\t}\n\n\t\tvar type = toString.call( obj ).match(/^\\[object\\s(.*)\\]$/)[1] || \"\";\n\n\t\tswitch ( type ) {\n\t\t\tcase \"Number\":\n\t\t\t\tif ( isNaN(obj) ) {\n\t\t\t\t\treturn \"nan\";\n\t\t\t\t}\n\t\t\t\treturn \"number\";\n\t\t\tcase \"String\":\n\t\t\tcase \"Boolean\":\n\t\t\tcase \"Array\":\n\t\t\tcase \"Date\":\n\t\t\tcase \"RegExp\":\n\t\t\tcase \"Function\":\n\t\t\t\treturn type.toLowerCase();\n\t\t}\n\t\tif ( typeof obj === \"object\" ) {\n\t\t\treturn \"object\";\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tpush: function( result, actual, expected, message ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"assertion outside test context, was \" + sourceFromStacktrace() );\n\t\t}\n\n\t\tvar output, source,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: result,\n\t\t\t\tmessage: message,\n\t\t\t\tactual: actual,\n\t\t\t\texpected: expected\n\t\t\t};\n\n\t\tmessage = escapeInnerText( message ) || ( result ? \"okay\" : \"failed\" );\n\t\tmessage = \"<span class='test-message'>\" + message + \"</span>\";\n\t\toutput = message;\n\n\t\tif ( !result ) {\n\t\t\texpected = escapeInnerText( QUnit.jsDump.parse(expected) );\n\t\t\tactual = escapeInnerText( QUnit.jsDump.parse(actual) );\n\t\t\toutput += \"<table><tr class='test-expected'><th>Expected: </th><td><pre>\" + expected + \"</pre></td></tr>\";\n\n\t\t\tif ( actual != expected ) {\n\t\t\t\toutput += \"<tr class='test-actual'><th>Result: </th><td><pre>\" + actual + \"</pre></td></tr>\";\n\t\t\t\toutput += \"<tr class='test-diff'><th>Diff: </th><td><pre>\" + QUnit.diff( expected, actual ) + \"</pre></td></tr>\";\n\t\t\t}\n\n\t\t\tsource = sourceFromStacktrace();\n\n\t\t\tif ( source ) {\n\t\t\t\tdetails.source = source;\n\t\t\t\toutput += \"<tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr>\";\n\t\t\t}\n\n\t\t\toutput += \"</table>\";\n\t\t}\n\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: !!result,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\tpushFailure: function( message, source, actual ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"pushFailure() assertion outside test context, was \" + sourceFromStacktrace(2) );\n\t\t}\n\n\t\tvar output,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: false,\n\t\t\t\tmessage: message\n\t\t\t};\n\n\t\tmessage = escapeInnerText( message ) || \"error\";\n\t\tmessage = \"<span class='test-message'>\" + message + \"</span>\";\n\t\toutput = message;\n\n\t\toutput += \"<table>\";\n\n\t\tif ( actual ) {\n\t\t\toutput += \"<tr class='test-actual'><th>Result: </th><td><pre>\" + escapeInnerText( actual ) + \"</pre></td></tr>\";\n\t\t}\n\n\t\tif ( source ) {\n\t\t\tdetails.source = source;\n\t\t\toutput += \"<tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr>\";\n\t\t}\n\n\t\toutput += \"</table>\";\n\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: false,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\turl: function( params ) {\n\t\tparams = extend( extend( {}, QUnit.urlParams ), params );\n\t\tvar key,\n\t\t\tquerystring = \"?\";\n\n\t\tfor ( key in params ) {\n\t\t\tif ( !hasOwn.call( params, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tquerystring += encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( params[ key ] ) + \"&\";\n\t\t}\n\t\treturn window.location.pathname + querystring.slice( 0, -1 );\n\t},\n\n\textend: extend,\n\tid: id,\n\taddEvent: addEvent\n\t// load, equiv, jsDump, diff: Attached later\n});\n\n/**\n * @deprecated: Created for backwards compatibility with test runner that set the hook function\n * into QUnit.{hook}, instead of invoking it and passing the hook function.\n * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.\n * Doing this allows us to tell if the following methods have been overwritten on the actual\n * QUnit object.\n */\nextend( QUnit.constructor.prototype, {\n\n\t// Logging callbacks; all receive a single argument with the listed properties\n\t// run test/logs.html for any related changes\n\tbegin: registerLoggingCallback( \"begin\" ),\n\n\t// done: { failed, passed, total, runtime }\n\tdone: registerLoggingCallback( \"done\" ),\n\n\t// log: { result, actual, expected, message }\n\tlog: registerLoggingCallback( \"log\" ),\n\n\t// testStart: { name }\n\ttestStart: registerLoggingCallback( \"testStart\" ),\n\n\t// testDone: { name, failed, passed, total }\n\ttestDone: registerLoggingCallback( \"testDone\" ),\n\n\t// moduleStart: { name }\n\tmoduleStart: registerLoggingCallback( \"moduleStart\" ),\n\n\t// moduleDone: { name, failed, passed, total }\n\tmoduleDone: registerLoggingCallback( \"moduleDone\" )\n});\n\nif ( typeof document === \"undefined\" || document.readyState === \"complete\" ) {\n\tconfig.autorun = true;\n}\n\nQUnit.load = function() {\n\trunLoggingCallbacks( \"begin\", QUnit, {} );\n\n\t// Initialize the config, saving the execution queue\n\tvar banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, moduleFilter,\n\t    numModules = 0,\n\t    moduleFilterHtml = \"\",\n\t\turlConfigHtml = \"\",\n\t\toldconfig = extend( {}, config );\n\n\tQUnit.init();\n\textend(config, oldconfig);\n\n\tconfig.blocking = false;\n\n\tlen = config.urlConfig.length;\n\n\tfor ( i = 0; i < len; i++ ) {\n\t\tval = config.urlConfig[i];\n\t\tif ( typeof val === \"string\" ) {\n\t\t\tval = {\n\t\t\t\tid: val,\n\t\t\t\tlabel: val,\n\t\t\t\ttooltip: \"[no tooltip available]\"\n\t\t\t};\n\t\t}\n\t\tconfig[ val.id ] = QUnit.urlParams[ val.id ];\n\t\turlConfigHtml += \"<input id='qunit-urlconfig-\" + val.id + \"' name='\" + val.id + \"' type='checkbox'\" + ( config[ val.id ] ? \" checked='checked'\" : \"\" ) + \" title='\" + val.tooltip + \"'><label for='qunit-urlconfig-\" + val.id + \"' title='\" + val.tooltip + \"'>\" + val.label + \"</label>\";\n\t}\n\n\tmoduleFilterHtml += \"<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' \" + ( config.module === undefined  ? \"selected\" : \"\" ) + \">< All Modules ></option>\";\n\tfor ( i in config.modules ) {\n\t\tif ( config.modules.hasOwnProperty( i ) ) {\n\t\t\tnumModules += 1;\n\t\t\tmoduleFilterHtml += \"<option value='\" + encodeURIComponent(i) + \"' \" + ( config.module === i ? \"selected\" : \"\" ) + \">\" + i + \"</option>\";\n\t\t}\n\t}\n\tmoduleFilterHtml += \"</select>\";\n\n\t// `userAgent` initialized at top of scope\n\tuserAgent = id( \"qunit-userAgent\" );\n\tif ( userAgent ) {\n\t\tuserAgent.innerHTML = navigator.userAgent;\n\t}\n\n\t// `banner` initialized at top of scope\n\tbanner = id( \"qunit-header\" );\n\tif ( banner ) {\n\t\tbanner.innerHTML = \"<a href='\" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + \"'>\" + banner.innerHTML + \"</a> \";\n\t}\n\n\t// `toolbar` initialized at top of scope\n\ttoolbar = id( \"qunit-testrunner-toolbar\" );\n\tif ( toolbar ) {\n\t\t// `filter` initialized at top of scope\n\t\tfilter = document.createElement( \"input\" );\n\t\tfilter.type = \"checkbox\";\n\t\tfilter.id = \"qunit-filter-pass\";\n\n\t\taddEvent( filter, \"click\", function() {\n\t\t\tvar tmp,\n\t\t\t\tol = document.getElementById( \"qunit-tests\" );\n\n\t\t\tif ( filter.checked ) {\n\t\t\t\tol.className = ol.className + \" hidepass\";\n\t\t\t} else {\n\t\t\t\ttmp = \" \" + ol.className.replace( /[\\n\\t\\r]/g, \" \" ) + \" \";\n\t\t\t\tol.className = tmp.replace( / hidepass /, \" \" );\n\t\t\t}\n\t\t\tif ( defined.sessionStorage ) {\n\t\t\t\tif (filter.checked) {\n\t\t\t\t\tsessionStorage.setItem( \"qunit-filter-passed-tests\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem( \"qunit-filter-passed-tests\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( \"qunit-filter-passed-tests\" ) ) {\n\t\t\tfilter.checked = true;\n\t\t\t// `ol` initialized at top of scope\n\t\t\tol = document.getElementById( \"qunit-tests\" );\n\t\t\tol.className = ol.className + \" hidepass\";\n\t\t}\n\t\ttoolbar.appendChild( filter );\n\n\t\t// `label` initialized at top of scope\n\t\tlabel = document.createElement( \"label\" );\n\t\tlabel.setAttribute( \"for\", \"qunit-filter-pass\" );\n\t\tlabel.setAttribute( \"title\", \"Only show tests and assertons that fail. Stored in sessionStorage.\" );\n\t\tlabel.innerHTML = \"Hide passed tests\";\n\t\ttoolbar.appendChild( label );\n\n\t\turlConfigCheckboxes = document.createElement( 'span' );\n\t\turlConfigCheckboxes.innerHTML = urlConfigHtml;\n\t\taddEvent( urlConfigCheckboxes, \"change\", function( event ) {\n\t\t\tvar params = {};\n\t\t\tparams[ event.target.name ] = event.target.checked ? true : undefined;\n\t\t\twindow.location = QUnit.url( params );\n\t\t});\n\t\ttoolbar.appendChild( urlConfigCheckboxes );\n\n\t\tif (numModules > 1) {\n\t\t\tmoduleFilter = document.createElement( 'span' );\n\t\t\tmoduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' );\n\t\t\tmoduleFilter.innerHTML = moduleFilterHtml;\n\t\t\taddEvent( moduleFilter, \"change\", function() {\n\t\t\t\tvar selectBox = moduleFilter.getElementsByTagName(\"select\")[0],\n\t\t\t\t    selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);\n\n\t\t\t\twindow.location = QUnit.url( { module: ( selectedModule === \"\" ) ? undefined : selectedModule } );\n\t\t\t});\n\t\t\ttoolbar.appendChild(moduleFilter);\n\t\t}\n\t}\n\n\t// `main` initialized at top of scope\n\tmain = id( \"qunit-fixture\" );\n\tif ( main ) {\n\t\tconfig.fixture = main.innerHTML;\n\t}\n\n\tif ( config.autostart ) {\n\t\tQUnit.start();\n\t}\n};\n\naddEvent( window, \"load\", QUnit.load );\n\n// `onErrorFnPrev` initialized at top of scope\n// Preserve other handlers\nonErrorFnPrev = window.onerror;\n\n// Cover uncaught exceptions\n// Returning true will surpress the default browser handler,\n// returning false will let it run.\nwindow.onerror = function ( error, filePath, linerNr ) {\n\tvar ret = false;\n\tif ( onErrorFnPrev ) {\n\t\tret = onErrorFnPrev( error, filePath, linerNr );\n\t}\n\n\t// Treat return value as window.onerror itself does,\n\t// Only do our handling if not surpressed.\n\tif ( ret !== true ) {\n\t\tif ( QUnit.config.current ) {\n\t\t\tif ( QUnit.config.current.ignoreGlobalErrors ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tQUnit.pushFailure( error, filePath + \":\" + linerNr );\n\t\t} else {\n\t\t\tQUnit.test( \"global failure\", extend( function() {\n\t\t\t\tQUnit.pushFailure( error, filePath + \":\" + linerNr );\n\t\t\t}, { validTest: validTest } ) );\n\t\t}\n\t\treturn false;\n\t}\n\n\treturn ret;\n};\n\nfunction done() {\n\tconfig.autorun = true;\n\n\t// Log the last module results\n\tif ( config.currentModule ) {\n\t\trunLoggingCallbacks( \"moduleDone\", QUnit, {\n\t\t\tname: config.currentModule,\n\t\t\tfailed: config.moduleStats.bad,\n\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\ttotal: config.moduleStats.all\n\t\t});\n\t}\n\n\tvar i, key,\n\t\tbanner = id( \"qunit-banner\" ),\n\t\ttests = id( \"qunit-tests\" ),\n\t\truntime = +new Date() - config.started,\n\t\tpassed = config.stats.all - config.stats.bad,\n\t\thtml = [\n\t\t\t\"Tests completed in \",\n\t\t\truntime,\n\t\t\t\" milliseconds.<br/>\",\n\t\t\t\"<span class='passed'>\",\n\t\t\tpassed,\n\t\t\t\"</span> tests of <span class='total'>\",\n\t\t\tconfig.stats.all,\n\t\t\t\"</span> passed, <span class='failed'>\",\n\t\t\tconfig.stats.bad,\n\t\t\t\"</span> failed.\"\n\t\t].join( \"\" );\n\n\tif ( banner ) {\n\t\tbanner.className = ( config.stats.bad ? \"qunit-fail\" : \"qunit-pass\" );\n\t}\n\n\tif ( tests ) {\n\t\tid( \"qunit-testresult\" ).innerHTML = html;\n\t}\n\n\tif ( config.altertitle && typeof document !== \"undefined\" && document.title ) {\n\t\t// show ✖ for good, ✔ for bad suite result in title\n\t\t// use escape sequences in case file gets loaded with non-utf-8-charset\n\t\tdocument.title = [\n\t\t\t( config.stats.bad ? \"\\u2716\" : \"\\u2714\" ),\n\t\t\tdocument.title.replace( /^[\\u2714\\u2716] /i, \"\" )\n\t\t].join( \" \" );\n\t}\n\n\t// clear own sessionStorage items if all tests passed\n\tif ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {\n\t\t// `key` & `i` initialized at top of scope\n\t\tfor ( i = 0; i < sessionStorage.length; i++ ) {\n\t\t\tkey = sessionStorage.key( i++ );\n\t\t\tif ( key.indexOf( \"qunit-test-\" ) === 0 ) {\n\t\t\t\tsessionStorage.removeItem( key );\n\t\t\t}\n\t\t}\n\t}\n\n\t// scroll back to top to show results\n\tif ( window.scrollTo ) {\n\t\twindow.scrollTo(0, 0);\n\t}\n\n\trunLoggingCallbacks( \"done\", QUnit, {\n\t\tfailed: config.stats.bad,\n\t\tpassed: passed,\n\t\ttotal: config.stats.all,\n\t\truntime: runtime\n\t});\n}\n\n/** @return Boolean: true if this test should be ran */\nfunction validTest( test ) {\n\tvar include,\n\t\tfilter = config.filter && config.filter.toLowerCase(),\n\t\tmodule = config.module && config.module.toLowerCase(),\n\t\tfullName = (test.module + \": \" + test.testName).toLowerCase();\n\n\t// Internally-generated tests are always valid\n\tif ( test.callback && test.callback.validTest === validTest ) {\n\t\tdelete test.callback.validTest;\n\t\treturn true;\n\t}\n\n\tif ( config.testNumber ) {\n\t\treturn test.testNumber === config.testNumber;\n\t}\n\n\tif ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {\n\t\treturn false;\n\t}\n\n\tif ( !filter ) {\n\t\treturn true;\n\t}\n\n\tinclude = filter.charAt( 0 ) !== \"!\";\n\tif ( !include ) {\n\t\tfilter = filter.slice( 1 );\n\t}\n\n\t// If the filter matches, we need to honour include\n\tif ( fullName.indexOf( filter ) !== -1 ) {\n\t\treturn include;\n\t}\n\n\t// Otherwise, do the opposite\n\treturn !include;\n}\n\n// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)\n// Later Safari and IE10 are supposed to support error.stack as well\n// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack\nfunction extractStacktrace( e, offset ) {\n\toffset = offset === undefined ? 3 : offset;\n\n\tvar stack, include, i, regex;\n\n\tif ( e.stacktrace ) {\n\t\t// Opera\n\t\treturn e.stacktrace.split( \"\\n\" )[ offset + 3 ];\n\t} else if ( e.stack ) {\n\t\t// Firefox, Chrome\n\t\tstack = e.stack.split( \"\\n\" );\n\t\tif (/^error$/i.test( stack[0] ) ) {\n\t\t\tstack.shift();\n\t\t}\n\t\tif ( fileName ) {\n\t\t\tinclude = [];\n\t\t\tfor ( i = offset; i < stack.length; i++ ) {\n\t\t\t\tif ( stack[ i ].indexOf( fileName ) != -1 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tinclude.push( stack[ i ] );\n\t\t\t}\n\t\t\tif ( include.length ) {\n\t\t\t\treturn include.join( \"\\n\" );\n\t\t\t}\n\t\t}\n\t\treturn stack[ offset ];\n\t} else if ( e.sourceURL ) {\n\t\t// Safari, PhantomJS\n\t\t// hopefully one day Safari provides actual stacktraces\n\t\t// exclude useless self-reference for generated Error objects\n\t\tif ( /qunit.js$/.test( e.sourceURL ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// for actual exceptions, this is useful\n\t\treturn e.sourceURL + \":\" + e.line;\n\t}\n}\nfunction sourceFromStacktrace( offset ) {\n\ttry {\n\t\tthrow new Error();\n\t} catch ( e ) {\n\t\treturn extractStacktrace( e, offset );\n\t}\n}\n\nfunction escapeInnerText( s ) {\n\tif ( !s ) {\n\t\treturn \"\";\n\t}\n\ts = s + \"\";\n\treturn s.replace( /[\\&<>]/g, function( s ) {\n\t\tswitch( s ) {\n\t\t\tcase \"&\": return \"&amp;\";\n\t\t\tcase \"<\": return \"&lt;\";\n\t\t\tcase \">\": return \"&gt;\";\n\t\t\tdefault: return s;\n\t\t}\n\t});\n}\n\nfunction synchronize( callback, last ) {\n\tconfig.queue.push( callback );\n\n\tif ( config.autorun && !config.blocking ) {\n\t\tprocess( last );\n\t}\n}\n\nfunction process( last ) {\n\tfunction next() {\n\t\tprocess( last );\n\t}\n\tvar start = new Date().getTime();\n\tconfig.depth = config.depth ? config.depth + 1 : 1;\n\n\twhile ( config.queue.length && !config.blocking ) {\n\t\tif ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {\n\t\t\tconfig.queue.shift()();\n\t\t} else {\n\t\t\twindow.setTimeout( next, 13 );\n\t\t\tbreak;\n\t\t}\n\t}\n\tconfig.depth--;\n\tif ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {\n\t\tdone();\n\t}\n}\n\nfunction saveGlobal() {\n\tconfig.pollution = [];\n\n\tif ( config.noglobals ) {\n\t\tfor ( var key in window ) {\n\t\t\t// in Opera sometimes DOM element ids show up here, ignore them\n\t\t\tif ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconfig.pollution.push( key );\n\t\t}\n\t}\n}\n\nfunction checkPollution( name ) {\n\tvar newGlobals,\n\t\tdeletedGlobals,\n\t\told = config.pollution;\n\n\tsaveGlobal();\n\n\tnewGlobals = diff( config.pollution, old );\n\tif ( newGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Introduced global variable(s): \" + newGlobals.join(\", \") );\n\t}\n\n\tdeletedGlobals = diff( old, config.pollution );\n\tif ( deletedGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Deleted global variable(s): \" + deletedGlobals.join(\", \") );\n\t}\n}\n\n// returns a new Array with the elements that are in a but not in b\nfunction diff( a, b ) {\n\tvar i, j,\n\t\tresult = a.slice();\n\n\tfor ( i = 0; i < result.length; i++ ) {\n\t\tfor ( j = 0; j < b.length; j++ ) {\n\t\t\tif ( result[i] === b[j] ) {\n\t\t\t\tresult.splice( i, 1 );\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction extend( a, b ) {\n\tfor ( var prop in b ) {\n\t\tif ( b[ prop ] === undefined ) {\n\t\t\tdelete a[ prop ];\n\n\t\t// Avoid \"Member not found\" error in IE8 caused by setting window.constructor\n\t\t} else if ( prop !== \"constructor\" || a !== window ) {\n\t\t\ta[ prop ] = b[ prop ];\n\t\t}\n\t}\n\n\treturn a;\n}\n\nfunction addEvent( elem, type, fn ) {\n\tif ( elem.addEventListener ) {\n\t\telem.addEventListener( type, fn, false );\n\t} else if ( elem.attachEvent ) {\n\t\telem.attachEvent( \"on\" + type, fn );\n\t} else {\n\t\tfn();\n\t}\n}\n\nfunction id( name ) {\n\treturn !!( typeof document !== \"undefined\" && document && document.getElementById ) &&\n\t\tdocument.getElementById( name );\n}\n\nfunction registerLoggingCallback( key ) {\n\treturn function( callback ) {\n\t\tconfig[key].push( callback );\n\t};\n}\n\n// Supports deprecated method of completely overwriting logging callbacks\nfunction runLoggingCallbacks( key, scope, args ) {\n\t//debugger;\n\tvar i, callbacks;\n\tif ( QUnit.hasOwnProperty( key ) ) {\n\t\tQUnit[ key ].call(scope, args );\n\t} else {\n\t\tcallbacks = config[ key ];\n\t\tfor ( i = 0; i < callbacks.length; i++ ) {\n\t\t\tcallbacks[ i ].call( scope, args );\n\t\t}\n\t}\n}\n\n// Test for equality any JavaScript type.\n// Author: Philippe Rathé <prathe@gmail.com>\nQUnit.equiv = (function() {\n\n\t// Call the o related callback with the given arguments.\n\tfunction bindCallbacks( o, callbacks, args ) {\n\t\tvar prop = QUnit.objectType( o );\n\t\tif ( prop ) {\n\t\t\tif ( QUnit.objectType( callbacks[ prop ] ) === \"function\" ) {\n\t\t\t\treturn callbacks[ prop ].apply( callbacks, args );\n\t\t\t} else {\n\t\t\t\treturn callbacks[ prop ]; // or undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t// the real equiv function\n\tvar innerEquiv,\n\t\t// stack to decide between skip/abort functions\n\t\tcallers = [],\n\t\t// stack to avoiding loops from circular referencing\n\t\tparents = [],\n\n\t\tgetProto = Object.getPrototypeOf || function ( obj ) {\n\t\t\treturn obj.__proto__;\n\t\t},\n\t\tcallbacks = (function () {\n\n\t\t\t// for string, boolean, number and null\n\t\t\tfunction useStrictEquality( b, a ) {\n\t\t\t\tif ( b instanceof a.constructor || a instanceof b.constructor ) {\n\t\t\t\t\t// to catch short annotaion VS 'new' annotation of a\n\t\t\t\t\t// declaration\n\t\t\t\t\t// e.g. var i = 1;\n\t\t\t\t\t// var j = new Number(1);\n\t\t\t\t\treturn a == b;\n\t\t\t\t} else {\n\t\t\t\t\treturn a === b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t\"string\": useStrictEquality,\n\t\t\t\t\"boolean\": useStrictEquality,\n\t\t\t\t\"number\": useStrictEquality,\n\t\t\t\t\"null\": useStrictEquality,\n\t\t\t\t\"undefined\": useStrictEquality,\n\n\t\t\t\t\"nan\": function( b ) {\n\t\t\t\t\treturn isNaN( b );\n\t\t\t\t},\n\n\t\t\t\t\"date\": function( b, a ) {\n\t\t\t\t\treturn QUnit.objectType( b ) === \"date\" && a.valueOf() === b.valueOf();\n\t\t\t\t},\n\n\t\t\t\t\"regexp\": function( b, a ) {\n\t\t\t\t\treturn QUnit.objectType( b ) === \"regexp\" &&\n\t\t\t\t\t\t// the regex itself\n\t\t\t\t\t\ta.source === b.source &&\n\t\t\t\t\t\t// and its modifers\n\t\t\t\t\t\ta.global === b.global &&\n\t\t\t\t\t\t// (gmi) ...\n\t\t\t\t\t\ta.ignoreCase === b.ignoreCase &&\n\t\t\t\t\t\ta.multiline === b.multiline &&\n\t\t\t\t\t\ta.sticky === b.sticky;\n\t\t\t\t},\n\n\t\t\t\t// - skip when the property is a method of an instance (OOP)\n\t\t\t\t// - abort otherwise,\n\t\t\t\t// initial === would have catch identical references anyway\n\t\t\t\t\"function\": function() {\n\t\t\t\t\tvar caller = callers[callers.length - 1];\n\t\t\t\t\treturn caller !== Object && typeof caller !== \"undefined\";\n\t\t\t\t},\n\n\t\t\t\t\"array\": function( b, a ) {\n\t\t\t\t\tvar i, j, len, loop;\n\n\t\t\t\t\t// b could be an object literal here\n\t\t\t\t\tif ( QUnit.objectType( b ) !== \"array\" ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlen = a.length;\n\t\t\t\t\tif ( len !== b.length ) {\n\t\t\t\t\t\t// safe and faster\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// track reference to avoid circular references\n\t\t\t\t\tparents.push( a );\n\t\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\t\tloop = false;\n\t\t\t\t\t\tfor ( j = 0; j < parents.length; j++ ) {\n\t\t\t\t\t\t\tif ( parents[j] === a[i] ) {\n\t\t\t\t\t\t\t\tloop = true;// dont rewalk array\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( !loop && !innerEquiv(a[i], b[i]) ) {\n\t\t\t\t\t\t\tparents.pop();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparents.pop();\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\n\t\t\t\t\"object\": function( b, a ) {\n\t\t\t\t\tvar i, j, loop,\n\t\t\t\t\t\t// Default to true\n\t\t\t\t\t\teq = true,\n\t\t\t\t\t\taProperties = [],\n\t\t\t\t\t\tbProperties = [];\n\n\t\t\t\t\t// comparing constructors is more strict than using\n\t\t\t\t\t// instanceof\n\t\t\t\t\tif ( a.constructor !== b.constructor ) {\n\t\t\t\t\t\t// Allow objects with no prototype to be equivalent to\n\t\t\t\t\t\t// objects with Object as their constructor.\n\t\t\t\t\t\tif ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||\n\t\t\t\t\t\t\t( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// stack constructor before traversing properties\n\t\t\t\t\tcallers.push( a.constructor );\n\t\t\t\t\t// track reference to avoid circular references\n\t\t\t\t\tparents.push( a );\n\n\t\t\t\t\tfor ( i in a ) { // be strict: don't ensures hasOwnProperty\n\t\t\t\t\t\t\t\t\t// and go deep\n\t\t\t\t\t\tloop = false;\n\t\t\t\t\t\tfor ( j = 0; j < parents.length; j++ ) {\n\t\t\t\t\t\t\tif ( parents[j] === a[i] ) {\n\t\t\t\t\t\t\t\t// don't go down the same path twice\n\t\t\t\t\t\t\t\tloop = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\taProperties.push(i); // collect a's properties\n\n\t\t\t\t\t\tif (!loop && !innerEquiv( a[i], b[i] ) ) {\n\t\t\t\t\t\t\teq = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallers.pop(); // unstack, we are done\n\t\t\t\t\tparents.pop();\n\n\t\t\t\t\tfor ( i in b ) {\n\t\t\t\t\t\tbProperties.push( i ); // collect b's properties\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ensures identical properties name\n\t\t\t\t\treturn eq && innerEquiv( aProperties.sort(), bProperties.sort() );\n\t\t\t\t}\n\t\t\t};\n\t\t}());\n\n\tinnerEquiv = function() { // can take multiple arguments\n\t\tvar args = [].slice.apply( arguments );\n\t\tif ( args.length < 2 ) {\n\t\t\treturn true; // end transition\n\t\t}\n\n\t\treturn (function( a, b ) {\n\t\t\tif ( a === b ) {\n\t\t\t\treturn true; // catch the most you can\n\t\t\t} else if ( a === null || b === null || typeof a === \"undefined\" ||\n\t\t\t\t\ttypeof b === \"undefined\" ||\n\t\t\t\t\tQUnit.objectType(a) !== QUnit.objectType(b) ) {\n\t\t\t\treturn false; // don't lose time with error prone cases\n\t\t\t} else {\n\t\t\t\treturn bindCallbacks(a, callbacks, [ b, a ]);\n\t\t\t}\n\n\t\t\t// apply transition with (1..n) arguments\n\t\t}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );\n\t};\n\n\treturn innerEquiv;\n}());\n\n/**\n * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |\n * http://flesler.blogspot.com Licensed under BSD\n * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008\n *\n * @projectDescription Advanced and extensible data dumping for Javascript.\n * @version 1.0.0\n * @author Ariel Flesler\n * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}\n */\nQUnit.jsDump = (function() {\n\tfunction quote( str ) {\n\t\treturn '\"' + str.toString().replace( /\"/g, '\\\\\"' ) + '\"';\n\t}\n\tfunction literal( o ) {\n\t\treturn o + \"\";\n\t}\n\tfunction join( pre, arr, post ) {\n\t\tvar s = jsDump.separator(),\n\t\t\tbase = jsDump.indent(),\n\t\t\tinner = jsDump.indent(1);\n\t\tif ( arr.join ) {\n\t\t\tarr = arr.join( \",\" + s + inner );\n\t\t}\n\t\tif ( !arr ) {\n\t\t\treturn pre + post;\n\t\t}\n\t\treturn [ pre, inner + arr, base + post ].join(s);\n\t}\n\tfunction array( arr, stack ) {\n\t\tvar i = arr.length, ret = new Array(i);\n\t\tthis.up();\n\t\twhile ( i-- ) {\n\t\t\tret[i] = this.parse( arr[i] , undefined , stack);\n\t\t}\n\t\tthis.down();\n\t\treturn join( \"[\", ret, \"]\" );\n\t}\n\n\tvar reName = /^function (\\w+)/,\n\t\tjsDump = {\n\t\t\tparse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance\n\t\t\t\tstack = stack || [ ];\n\t\t\t\tvar inStack, res,\n\t\t\t\t\tparser = this.parsers[ type || this.typeOf(obj) ];\n\n\t\t\t\ttype = typeof parser;\n\t\t\t\tinStack = inArray( obj, stack );\n\n\t\t\t\tif ( inStack != -1 ) {\n\t\t\t\t\treturn \"recursion(\" + (inStack - stack.length) + \")\";\n\t\t\t\t}\n\t\t\t\t//else\n\t\t\t\tif ( type == \"function\" )  {\n\t\t\t\t\tstack.push( obj );\n\t\t\t\t\tres = parser.call( this, obj, stack );\n\t\t\t\t\tstack.pop();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\t// else\n\t\t\t\treturn ( type == \"string\" ) ? parser : this.parsers.error;\n\t\t\t},\n\t\t\ttypeOf: function( obj ) {\n\t\t\t\tvar type;\n\t\t\t\tif ( obj === null ) {\n\t\t\t\t\ttype = \"null\";\n\t\t\t\t} else if ( typeof obj === \"undefined\" ) {\n\t\t\t\t\ttype = \"undefined\";\n\t\t\t\t} else if ( QUnit.is( \"regexp\", obj) ) {\n\t\t\t\t\ttype = \"regexp\";\n\t\t\t\t} else if ( QUnit.is( \"date\", obj) ) {\n\t\t\t\t\ttype = \"date\";\n\t\t\t\t} else if ( QUnit.is( \"function\", obj) ) {\n\t\t\t\t\ttype = \"function\";\n\t\t\t\t} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== \"undefined\" && typeof obj.nodeType === \"undefined\" ) {\n\t\t\t\t\ttype = \"window\";\n\t\t\t\t} else if ( obj.nodeType === 9 ) {\n\t\t\t\t\ttype = \"document\";\n\t\t\t\t} else if ( obj.nodeType ) {\n\t\t\t\t\ttype = \"node\";\n\t\t\t\t} else if (\n\t\t\t\t\t// native arrays\n\t\t\t\t\ttoString.call( obj ) === \"[object Array]\" ||\n\t\t\t\t\t// NodeList objects\n\t\t\t\t\t( typeof obj.length === \"number\" && typeof obj.item !== \"undefined\" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === \"undefined\" ) ) )\n\t\t\t\t) {\n\t\t\t\t\ttype = \"array\";\n\t\t\t\t} else {\n\t\t\t\t\ttype = typeof obj;\n\t\t\t\t}\n\t\t\t\treturn type;\n\t\t\t},\n\t\t\tseparator: function() {\n\t\t\t\treturn this.multiline ?\tthis.HTML ? \"<br />\" : \"\\n\" : this.HTML ? \"&nbsp;\" : \" \";\n\t\t\t},\n\t\t\tindent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing\n\t\t\t\tif ( !this.multiline ) {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t\tvar chr = this.indentChar;\n\t\t\t\tif ( this.HTML ) {\n\t\t\t\t\tchr = chr.replace( /\\t/g, \"   \" ).replace( / /g, \"&nbsp;\" );\n\t\t\t\t}\n\t\t\t\treturn new Array( this._depth_ + (extra||0) ).join(chr);\n\t\t\t},\n\t\t\tup: function( a ) {\n\t\t\t\tthis._depth_ += a || 1;\n\t\t\t},\n\t\t\tdown: function( a ) {\n\t\t\t\tthis._depth_ -= a || 1;\n\t\t\t},\n\t\t\tsetParser: function( name, parser ) {\n\t\t\t\tthis.parsers[name] = parser;\n\t\t\t},\n\t\t\t// The next 3 are exposed so you can use them\n\t\t\tquote: quote,\n\t\t\tliteral: literal,\n\t\t\tjoin: join,\n\t\t\t//\n\t\t\t_depth_: 1,\n\t\t\t// This is the list of parsers, to modify them, use jsDump.setParser\n\t\t\tparsers: {\n\t\t\t\twindow: \"[Window]\",\n\t\t\t\tdocument: \"[Document]\",\n\t\t\t\terror: \"[ERROR]\", //when no parser is found, shouldn\"t happen\n\t\t\t\tunknown: \"[Unknown]\",\n\t\t\t\t\"null\": \"null\",\n\t\t\t\t\"undefined\": \"undefined\",\n\t\t\t\t\"function\": function( fn ) {\n\t\t\t\t\tvar ret = \"function\",\n\t\t\t\t\t\tname = \"name\" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE\n\n\t\t\t\t\tif ( name ) {\n\t\t\t\t\t\tret += \" \" + name;\n\t\t\t\t\t}\n\t\t\t\t\tret += \"( \";\n\n\t\t\t\t\tret = [ ret, QUnit.jsDump.parse( fn, \"functionArgs\" ), \"){\" ].join( \"\" );\n\t\t\t\t\treturn join( ret, QUnit.jsDump.parse(fn,\"functionCode\" ), \"}\" );\n\t\t\t\t},\n\t\t\t\tarray: array,\n\t\t\t\tnodelist: array,\n\t\t\t\t\"arguments\": array,\n\t\t\t\tobject: function( map, stack ) {\n\t\t\t\t\tvar ret = [ ], keys, key, val, i;\n\t\t\t\t\tQUnit.jsDump.up();\n\t\t\t\t\tif ( Object.keys ) {\n\t\t\t\t\t\tkeys = Object.keys( map );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tkeys = [];\n\t\t\t\t\t\tfor ( key in map ) {\n\t\t\t\t\t\t\tkeys.push( key );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tkeys.sort();\n\t\t\t\t\tfor ( i = 0; i < keys.length; i++ ) {\n\t\t\t\t\t\tkey = keys[ i ];\n\t\t\t\t\t\tval = map[ key ];\n\t\t\t\t\t\tret.push( QUnit.jsDump.parse( key, \"key\" ) + \": \" + QUnit.jsDump.parse( val, undefined, stack ) );\n\t\t\t\t\t}\n\t\t\t\t\tQUnit.jsDump.down();\n\t\t\t\t\treturn join( \"{\", ret, \"}\" );\n\t\t\t\t},\n\t\t\t\tnode: function( node ) {\n\t\t\t\t\tvar a, val,\n\t\t\t\t\t\topen = QUnit.jsDump.HTML ? \"&lt;\" : \"<\",\n\t\t\t\t\t\tclose = QUnit.jsDump.HTML ? \"&gt;\" : \">\",\n\t\t\t\t\t\ttag = node.nodeName.toLowerCase(),\n\t\t\t\t\t\tret = open + tag;\n\n\t\t\t\t\tfor ( a in QUnit.jsDump.DOMAttrs ) {\n\t\t\t\t\t\tval = node[ QUnit.jsDump.DOMAttrs[a] ];\n\t\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\t\tret += \" \" + a + \"=\" + QUnit.jsDump.parse( val, \"attribute\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn ret + close + open + \"/\" + tag + close;\n\t\t\t\t},\n\t\t\t\tfunctionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function\n\t\t\t\t\tvar args,\n\t\t\t\t\t\tl = fn.length;\n\n\t\t\t\t\tif ( !l ) {\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\targs = new Array(l);\n\t\t\t\t\twhile ( l-- ) {\n\t\t\t\t\t\targs[l] = String.fromCharCode(97+l);//97 is 'a'\n\t\t\t\t\t}\n\t\t\t\t\treturn \" \" + args.join( \", \" ) + \" \";\n\t\t\t\t},\n\t\t\t\tkey: quote, //object calls it internally, the key part of an item in a map\n\t\t\t\tfunctionCode: \"[code]\", //function calls it internally, it's the content of the function\n\t\t\t\tattribute: quote, //node calls it internally, it's an html attribute value\n\t\t\t\tstring: quote,\n\t\t\t\tdate: quote,\n\t\t\t\tregexp: literal, //regex\n\t\t\t\tnumber: literal,\n\t\t\t\t\"boolean\": literal\n\t\t\t},\n\t\t\tDOMAttrs: {\n\t\t\t\t//attributes to dump from nodes, name=>realName\n\t\t\t\tid: \"id\",\n\t\t\t\tname: \"name\",\n\t\t\t\t\"class\": \"className\"\n\t\t\t},\n\t\t\tHTML: false,//if true, entities are escaped ( <, >, \\t, space and \\n )\n\t\t\tindentChar: \"  \",//indentation unit\n\t\t\tmultiline: true //if true, items in a collection, are separated by a \\n, else just a space.\n\t\t};\n\n\treturn jsDump;\n}());\n\n// from Sizzle.js\nfunction getText( elems ) {\n\tvar i, elem,\n\t\tret = \"\";\n\n\tfor ( i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// from jquery.js\nfunction inArray( elem, array ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( elem );\n\t}\n\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[ i ] === elem ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/*\n * Javascript Diff Algorithm\n *  By John Resig (http://ejohn.org/)\n *  Modified by Chu Alan \"sprite\"\n *\n * Released under the MIT license.\n *\n * More Info:\n *  http://ejohn.org/projects/javascript-diff-algorithm/\n *\n * Usage: QUnit.diff(expected, actual)\n *\n * QUnit.diff( \"the quick brown fox jumped over\", \"the quick fox jumps over\" ) == \"the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over\"\n */\nQUnit.diff = (function() {\n\tfunction diff( o, n ) {\n\t\tvar i,\n\t\t\tns = {},\n\t\t\tos = {};\n\n\t\tfor ( i = 0; i < n.length; i++ ) {\n\t\t\tif ( ns[ n[i] ] == null ) {\n\t\t\t\tns[ n[i] ] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\to: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tns[ n[i] ].rows.push( i );\n\t\t}\n\n\t\tfor ( i = 0; i < o.length; i++ ) {\n\t\t\tif ( os[ o[i] ] == null ) {\n\t\t\t\tos[ o[i] ] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\tn: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tos[ o[i] ].rows.push( i );\n\t\t}\n\n\t\tfor ( i in ns ) {\n\t\t\tif ( !hasOwn.call( ns, i ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ( ns[i].rows.length == 1 && typeof os[i] != \"undefined\" && os[i].rows.length == 1 ) {\n\t\t\t\tn[ ns[i].rows[0] ] = {\n\t\t\t\t\ttext: n[ ns[i].rows[0] ],\n\t\t\t\t\trow: os[i].rows[0]\n\t\t\t\t};\n\t\t\t\to[ os[i].rows[0] ] = {\n\t\t\t\t\ttext: o[ os[i].rows[0] ],\n\t\t\t\t\trow: ns[i].rows[0]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = 0; i < n.length - 1; i++ ) {\n\t\t\tif ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&\n\t\t\t\t\t\tn[ i + 1 ] == o[ n[i].row + 1 ] ) {\n\n\t\t\t\tn[ i + 1 ] = {\n\t\t\t\t\ttext: n[ i + 1 ],\n\t\t\t\t\trow: n[i].row + 1\n\t\t\t\t};\n\t\t\t\to[ n[i].row + 1 ] = {\n\t\t\t\t\ttext: o[ n[i].row + 1 ],\n\t\t\t\t\trow: i + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = n.length - 1; i > 0; i-- ) {\n\t\t\tif ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&\n\t\t\t\t\t\tn[ i - 1 ] == o[ n[i].row - 1 ]) {\n\n\t\t\t\tn[ i - 1 ] = {\n\t\t\t\t\ttext: n[ i - 1 ],\n\t\t\t\t\trow: n[i].row - 1\n\t\t\t\t};\n\t\t\t\to[ n[i].row - 1 ] = {\n\t\t\t\t\ttext: o[ n[i].row - 1 ],\n\t\t\t\t\trow: i - 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\to: o,\n\t\t\tn: n\n\t\t};\n\t}\n\n\treturn function( o, n ) {\n\t\to = o.replace( /\\s+$/, \"\" );\n\t\tn = n.replace( /\\s+$/, \"\" );\n\n\t\tvar i, pre,\n\t\t\tstr = \"\",\n\t\t\tout = diff( o === \"\" ? [] : o.split(/\\s+/), n === \"\" ? [] : n.split(/\\s+/) ),\n\t\t\toSpace = o.match(/\\s+/g),\n\t\t\tnSpace = n.match(/\\s+/g);\n\n\t\tif ( oSpace == null ) {\n\t\t\toSpace = [ \" \" ];\n\t\t}\n\t\telse {\n\t\t\toSpace.push( \" \" );\n\t\t}\n\n\t\tif ( nSpace == null ) {\n\t\t\tnSpace = [ \" \" ];\n\t\t}\n\t\telse {\n\t\t\tnSpace.push( \" \" );\n\t\t}\n\n\t\tif ( out.n.length === 0 ) {\n\t\t\tfor ( i = 0; i < out.o.length; i++ ) {\n\t\t\t\tstr += \"<del>\" + out.o[i] + oSpace[i] + \"</del>\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif ( out.n[0].text == null ) {\n\t\t\t\tfor ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {\n\t\t\t\t\tstr += \"<del>\" + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < out.n.length; i++ ) {\n\t\t\t\tif (out.n[i].text == null) {\n\t\t\t\t\tstr += \"<ins>\" + out.n[i] + nSpace[i] + \"</ins>\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// `pre` initialized at top of scope\n\t\t\t\t\tpre = \"\";\n\n\t\t\t\t\tfor ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {\n\t\t\t\t\t\tpre += \"<del>\" + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += \" \" + out.n[i].text + nSpace[i] + pre;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n}());\n\n// for CommonJS enviroments, export everything\nif ( typeof exports !== \"undefined\" ) {\n\textend(exports, QUnit);\n}\n\n// get at whatever the global object is, like window in browsers\n}( (function() {return this;}.call()) ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/grunt.js",
    "content": "module.exports = function( grunt ) {\n\n\"use strict\";\n\nvar\n\t// files\n\tcoreFiles = [\n\t\t\"jquery.ui.core.js\",\n\t\t\"jquery.ui.widget.js\",\n\t\t\"jquery.ui.mouse.js\",\n\t\t\"jquery.ui.draggable.js\",\n\t\t\"jquery.ui.droppable.js\",\n\t\t\"jquery.ui.resizable.js\",\n\t\t\"jquery.ui.selectable.js\",\n\t\t\"jquery.ui.sortable.js\",\n\t\t\"jquery.ui.effect.js\"\n\t],\n\n\tuiFiles = coreFiles.map(function( file ) {\n\t\treturn \"ui/\" + file;\n\t}).concat( grunt.file.expandFiles( \"ui/*.js\" ).filter(function( file ) {\n\t\treturn coreFiles.indexOf( file.substring(3) ) === -1;\n\t})),\n\n\tallI18nFiles = grunt.file.expandFiles( \"ui/i18n/*.js\" ),\n\n\tcssFiles = [\n\t\t\"core\",\n\t\t\"accordion\",\n\t\t\"autocomplete\",\n\t\t\"button\",\n\t\t\"datepicker\",\n\t\t\"dialog\",\n\t\t\"menu\",\n\t\t\"progressbar\",\n\t\t\"resizable\",\n\t\t\"selectable\",\n\t\t\"slider\",\n\t\t\"spinner\",\n\t\t\"tabs\",\n\t\t\"tooltip\",\n\t\t\"theme\"\n\t].map(function( component ) {\n\t\treturn \"themes/base/jquery.ui.\" + component + \".css\";\n\t}),\n\n\t// minified files\n\tminify = {\n\t\t\"dist/jquery-ui.min.js\": [ \"<banner:meta.bannerAll>\", \"dist/jquery-ui.js\" ],\n\t\t\"dist/i18n/jquery-ui-i18n.min.js\": [ \"<banner:meta.bannerI18n>\", \"dist/i18n/jquery-ui-i18n.js\" ]\n\t},\n\n\tminifyCSS = {\n\t\t\"dist/jquery-ui.min.css\": \"dist/jquery-ui.css\"\n\t},\n\n\tcompareFiles = {\n\t\tall: [\n\t\t\t\"dist/jquery-ui.js\",\n\t\t\t\"dist/jquery-ui.min.js\"\n\t\t]\n\t};\n\nfunction mapMinFile( file ) {\n\treturn \"dist/\" + file.replace( /\\.js$/, \".min.js\" ).replace( /ui\\//, \"minified/\" );\n}\n\nuiFiles.concat( allI18nFiles ).forEach(function( file ) {\n\tminify[ mapMinFile( file ) ] = [ \"<banner>\", file ];\n});\n\ncssFiles.forEach(function( file ) {\n\tminifyCSS[ \"dist/\" + file.replace( /\\.css$/, \".min.css\" ).replace( /themes\\/base\\//, \"themes/base/minified/\" ) ] = [ \"<banner>\", \"<strip_all_banners:\" + file + \">\" ];\n});\n\nuiFiles.forEach(function( file ) {\n\tcompareFiles[ file ] = [ file,  mapMinFile( file ) ];\n});\n\n// grunt plugins\ngrunt.loadNpmTasks( \"grunt-css\" );\ngrunt.loadNpmTasks( \"grunt-html\" );\ngrunt.loadNpmTasks( \"grunt-compare-size\" );\ngrunt.loadNpmTasks( \"grunt-junit\" );\ngrunt.loadNpmTasks( \"grunt-git-authors\" );\n// local testswarm and build tasks\ngrunt.loadTasks( \"build/tasks\" );\n\ngrunt.registerHelper( \"strip_all_banners\", function( filepath ) {\n\treturn grunt.file.read( filepath ).replace( /^\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*/g, \"\" );\n});\n\nfunction stripBanner( files ) {\n\treturn files.map(function( file ) {\n\t\treturn \"<strip_all_banners:\" + file + \">\";\n\t});\n}\n\nfunction stripDirectory( file ) {\n\t// TODO: we're receiving the directive, so we need to strip the trailing >\n\t// we should be receving a clean path without the directive\n\treturn file.replace( /.+\\/(.+?)>?$/, \"$1\" );\n}\n// allow access from banner template\nglobal.stripDirectory = stripDirectory;\n\nfunction createBanner( files ) {\n\t// strip folders\n\tvar fileNames = files && files.map( stripDirectory );\n\treturn \"/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - \" +\n\t\t\"<%= grunt.template.today('isoDate') %>\\n\" +\n\t\t\"<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>\" +\n\t\t\"* Includes: \" + (files ? fileNames.join(\", \") : \"<%= stripDirectory(grunt.task.current.file.src[1]) %>\") + \"\\n\" +\n\t\t\"* Copyright <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;\" +\n\t\t\" Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\";\n}\n\ngrunt.initConfig({\n\tpkg: \"<json:package.json>\",\n\tfiles: {\n\t\tdist: \"<%= pkg.name %>-<%= pkg.version %>\",\n\t\tcdn: \"<%= pkg.name %>-<%= pkg.version %>-cdn\",\n\t\tthemes: \"<%= pkg.name %>-themes-<%= pkg.version %>\"\n\t},\n\tmeta: {\n\t\tbanner: createBanner(),\n\t\tbannerAll: createBanner( uiFiles ),\n\t\tbannerI18n: createBanner( allI18nFiles ),\n\t\tbannerCSS: createBanner( cssFiles )\n\t},\n\tcompare_size: compareFiles,\n\tconcat: {\n\t\tui: {\n\t\t\tsrc: [ \"<banner:meta.bannerAll>\", stripBanner( uiFiles ) ],\n\t\t\tdest: \"dist/jquery-ui.js\"\n\t\t},\n\t\ti18n: {\n\t\t\tsrc: [ \"<banner:meta.bannerI18n>\", allI18nFiles ],\n\t\t\tdest: \"dist/i18n/jquery-ui-i18n.js\"\n\t\t},\n\t\tcss: {\n\t\t\tsrc: [ \"<banner:meta.bannerCSS>\", stripBanner( cssFiles ) ],\n\t\t\tdest: \"dist/jquery-ui.css\"\n\t\t}\n\t},\n\tmin: minify,\n\tcssmin: minifyCSS,\n\thtmllint: {\n\t\t// ignore files that contain invalid html, used only for ajax content testing\n\t\tall: grunt.file.expand( [ \"demos/**/*.html\", \"tests/**/*.html\" ] ).filter(function( file ) {\n\t\t\treturn !/(?:ajax\\/content\\d\\.html|tabs\\/data\\/test\\.html|tests\\/unit\\/core\\/core\\.html)/.test( file );\n\t\t})\n\t},\n\tcopy: {\n\t\tdist: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"jquery-*.js\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"README.md\",\n\t\t\t\t\"grunt.js\",\n\t\t\t\t\"package.json\",\n\t\t\t\t\"*.jquery.json\",\n\t\t\t\t\"ui/**/*\",\n\t\t\t\t\"ui/.jshintrc\",\n\t\t\t\t\"demos/**/*\",\n\t\t\t\t\"themes/**/*\",\n\t\t\t\t\"external/**/*\",\n\t\t\t\t\"tests/**/*\"\n\t\t\t],\n\t\t\trenames: {\n\t\t\t\t\"dist/jquery-ui.js\": \"ui/jquery-ui.js\",\n\t\t\t\t\"dist/jquery-ui.min.js\": \"ui/minified/jquery-ui.min.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.js\": \"ui/i18n/jquery-ui-i18n.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.min.js\": \"ui/minified/i18n/jquery-ui-i18n.min.js\",\n\t\t\t\t\"dist/jquery-ui.css\": \"themes/base/jquery-ui.css\",\n\t\t\t\t\"dist/jquery-ui.min.css\": \"themes/base/minified/jquery-ui.min.css\"\n\t\t\t},\n\t\t\tdest: \"dist/<%= files.dist %>\"\n\t\t},\n\t\tdist_min: {\n\t\t\tsrc: \"dist/minified/**/*\",\n\t\t\tstrip: /^dist/,\n\t\t\tdest: \"dist/<%= files.dist %>/ui\"\n\t\t},\n\t\tdist_css_min: {\n\t\t\tsrc: \"dist/themes/base/minified/*.css\",\n\t\t\tstrip: /^dist/,\n\t\t\tdest: \"dist/<%= files.dist %>\"\n\t\t},\n\t\tdist_units_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/\"\n\t\t},\n\t\tdist_min_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/<%= files.dist %>/themes/base/minified\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"ui/*.js\",\n\t\t\t\t\"package.json\"\n\t\t\t],\n\t\t\trenames: {\n\t\t\t\t\"dist/jquery-ui.js\": \"jquery-ui.js\",\n\t\t\t\t\"dist/jquery-ui.min.js\": \"jquery-ui.min.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.js\": \"i18n/jquery-ui-i18n.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.min.js\": \"i18n/jquery-ui-i18n.min.js\",\n\t\t\t\t\"dist/jquery-ui.css\": \"themes/base/jquery-ui.css\",\n\t\t\t\t\"dist/jquery-ui.min.css\": \"themes/base/minified/jquery-ui.min.css\"\n\t\t\t},\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_i18n: {\n\t\t\tsrc: \"ui/i18n/jquery.ui.datepicker-*.js\",\n\t\t\tstrip: \"ui/\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_i18n_min: {\n\t\t\tsrc: \"dist/minified/i18n/jquery.ui.datepicker-*.js\",\n\t\t\tstrip: \"dist/minified\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_min: {\n\t\t\tsrc: \"dist/minified/*.js\",\n\t\t\tstrip: /^dist\\/minified/,\n\t\t\tdest: \"dist/<%= files.cdn %>/ui\"\n\t\t},\n\t\tcdn_min_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/<%= files.cdn %>/themes/base/minified\"\n\t\t},\n\t\tcdn_themes: {\n\t\t\tsrc: \"dist/<%= files.themes %>/themes/**/*\",\n\t\t\tstrip: \"dist/<%= files.themes %>\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"package.json\"\n\t\t\t],\n\t\t\tdest: \"dist/<%= files.themes %>\"\n\t\t}\n\t},\n\tzip: {\n\t\tdist: {\n\t\t\tsrc: \"<%= files.dist %>\",\n\t\t\tdest: \"<%= files.dist %>.zip\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: \"<%= files.cdn %>\",\n\t\t\tdest: \"<%= files.cdn %>.zip\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: \"<%= files.themes %>\",\n\t\t\tdest: \"<%= files.themes %>.zip\"\n\t\t}\n\t},\n\tmd5: {\n\t\tdist: {\n\t\t\tsrc: \"dist/<%= files.dist %>\",\n\t\t\tdest: \"dist/<%= files.dist %>/MANIFEST\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: \"dist/<%= files.cdn %>\",\n\t\t\tdest: \"dist/<%= files.cdn %>/MANIFEST\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: \"dist/<%= files.themes %>\",\n\t\t\tdest: \"dist/<%= files.themes %>/MANIFEST\"\n\t\t}\n\t},\n\tqunit: {\n\t\tfiles: grunt.file.expandFiles( \"tests/unit/**/*.html\" ).filter(function( file ) {\n\t\t\t// disabling everything that doesn't (quite) work with PhantomJS for now\n\t\t\t// TODO except for all|index|test, try to include more as we go\n\t\t\treturn !( /(all|all-active|index|test|draggable|droppable|selectable|resizable|sortable|dialog|slider|datepicker|tabs|tabs_deprecated|tooltip)\\.html$/ ).test( file );\n\t\t})\n\t},\n\tlint: {\n\t\tui: grunt.file.expandFiles( \"ui/*.js\" ).filter(function( file ) {\n\t\t\t// TODO remove items from this list once rewritten\n\t\t\treturn !( /(mouse|datepicker|draggable|droppable|resizable|selectable|sortable)\\.js$/ ).test( file );\n\t\t}),\n\t\tgrunt: [ \"grunt.js\", \"build/**/*.js\" ],\n\t\ttests: \"tests/unit/**/*.js\"\n\t},\n\tcsslint: {\n\t\t// nothing: []\n\t\t// TODO figure out what to check for, then fix and enable\n\t\tbase_theme: {\n\t\t\tsrc: grunt.file.expandFiles( \"themes/base/*.css\" ).filter(function( file ) {\n\t\t\t\t// TODO remove items from this list once rewritten\n\t\t\t\treturn !( /(button|datepicker|core|dialog|theme)\\.css$/ ).test( file );\n\t\t\t}),\n\t\t\t// TODO consider reenabling some of these rules\n\t\t\trules: {\n\t\t\t\t\"import\": false,\n\t\t\t\t\"important\": false,\n\t\t\t\t\"outline-none\": false,\n\t\t\t\t// especially this one\n\t\t\t\t\"overqualified-elements\": false,\n\t\t\t\t\"compatible-vendor-prefixes\": false\n\t\t\t}\n\t\t}\n\t},\n\tjshint: (function() {\n\t\tfunction parserc( path ) {\n\t\t\tvar rc = grunt.file.readJSON( (path || \"\") + \".jshintrc\" ),\n\t\t\t\tsettings = {\n\t\t\t\t\toptions: rc,\n\t\t\t\t\tglobals: {}\n\t\t\t\t};\n\n\t\t\t(rc.predef || []).forEach(function( prop ) {\n\t\t\t\tsettings.globals[ prop ] = true;\n\t\t\t});\n\t\t\tdelete rc.predef;\n\n\t\t\treturn settings;\n\t\t}\n\n\t\treturn {\n\t\t\tgrunt: parserc(),\n\t\t\tui: parserc( \"ui/\" ),\n\t\t\t// TODO: `evil: true` is only for document.write() https://github.com/jshint/jshint/issues/519\n\t\t\t// TODO: don't create so many globals in tests\n\t\t\ttests: parserc( \"tests/\" )\n\t\t};\n\t})()\n});\n\ngrunt.registerTask( \"default\", \"lint csslint htmllint qunit\" );\ngrunt.registerTask( \"sizer\", \"concat:ui min:dist/jquery-ui.min.js compare_size:all\" );\ngrunt.registerTask( \"sizer_all\", \"concat:ui min compare_size\" );\ngrunt.registerTask( \"build\", \"concat min cssmin copy:dist_units_images\" );\ngrunt.registerTask( \"release\", \"clean build copy:dist copy:dist_min copy:dist_min_images copy:dist_css_min md5:dist zip:dist\" );\ngrunt.registerTask( \"release_themes\", \"release generate_themes copy:themes md5:themes zip:themes\" );\ngrunt.registerTask( \"release_cdn\", \"release_themes copy:cdn copy:cdn_min copy:cdn_i18n copy:cdn_i18n_min copy:cdn_min_images copy:cdn_themes md5:cdn zip:cdn\" );\n\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/package.json",
    "content": "{\n\t\"name\": \"jquery-ui\",\n\t\"title\": \"jQuery UI\",\n\t\"description\": \"A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.\",\n\t\"version\": \"1.9.2\",\n\t\"homepage\": \"http://jqueryui.com\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"git://github.com/jquery/jquery-ui.git\"\n\t},\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"dependencies\": {},\n\t\"devDependencies\": {\n\t\t\"grunt\": \"~0.3.17\",\n\t\t\"grunt-css\": \"0.2.0\",\n\t\t\"grunt-compare-size\": \"0.1.4\",\n\t\t\"grunt-html\": \"0.1.1\",\n\t\t\"grunt-junit\": \"0.1.4\",\n\t\t\"grunt-git-authors\": \"1.0.0\",\n\t\t\"rimraf\": \"2.0.1\",\n\t\t\"testswarm\": \"0.2.3\"\n\t},\n\t\"keywords\": []\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery-ui.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }\n.ui-widget-content a { color: #222222/*{fcContent}*/; }\n.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }\n.ui-widget-header a { color: #222222/*{fcHeader}*/; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121/*{fcHover}*/; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }\n.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.accordion.css",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Accordion#theming\n */\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.all.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import \"jquery.ui.base.css\";\n@import \"jquery.ui.theme.css\";\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.autocomplete.css",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Autocomplete#theming\n */\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.base.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import url(\"jquery.ui.core.css\");\n\n@import url(\"jquery.ui.accordion.css\");\n@import url(\"jquery.ui.autocomplete.css\");\n@import url(\"jquery.ui.button.css\");\n@import url(\"jquery.ui.datepicker.css\");\n@import url(\"jquery.ui.dialog.css\");\n@import url(\"jquery.ui.menu.css\");\n@import url(\"jquery.ui.progressbar.css\");\n@import url(\"jquery.ui.resizable.css\");\n@import url(\"jquery.ui.selectable.css\");\n@import url(\"jquery.ui.slider.css\");\n@import url(\"jquery.ui.spinner.css\");\n@import url(\"jquery.ui.tabs.css\");\n@import url(\"jquery.ui.tooltip.css\");\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.button.css",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Button#theming\n */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.core.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.datepicker.css",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Datepicker#theming\n */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.dialog.css",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Dialog#theming\n */\n.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.menu.css",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu#theming\n */\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.progressbar.css",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Progressbar#theming\n */\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.resizable.css",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Resizable#theming\n */\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.selectable.css",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Selectable#theming\n */\n.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.slider.css",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Slider#theming\n */\n.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.spinner.css",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Spinner#theming\n */\n.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tabs.css",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Tabs#theming\n */\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.theme.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }\n.ui-widget-content a { color: #222222/*{fcContent}*/; }\n.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }\n.ui-widget-header a { color: #222222/*{fcHeader}*/; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121/*{fcHover}*/; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }\n.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tooltip.css",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery-ui.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.accordion.css",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Accordion#theming\n */\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.all.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import \"jquery.ui.base.css\";\n@import \"jquery.ui.theme.css\";\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Autocomplete#theming\n */\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.base.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import url(\"jquery.ui.core.css\");\n\n@import url(\"jquery.ui.accordion.css\");\n@import url(\"jquery.ui.autocomplete.css\");\n@import url(\"jquery.ui.button.css\");\n@import url(\"jquery.ui.datepicker.css\");\n@import url(\"jquery.ui.dialog.css\");\n@import url(\"jquery.ui.menu.css\");\n@import url(\"jquery.ui.progressbar.css\");\n@import url(\"jquery.ui.resizable.css\");\n@import url(\"jquery.ui.selectable.css\");\n@import url(\"jquery.ui.slider.css\");\n@import url(\"jquery.ui.spinner.css\");\n@import url(\"jquery.ui.tabs.css\");\n@import url(\"jquery.ui.tooltip.css\");\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.button.css",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Button#theming\n */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.core.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Datepicker#theming\n */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.dialog.css",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Dialog#theming\n */\n.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.menu.css",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu#theming\n */\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Progressbar#theming\n */\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.resizable.css",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Resizable#theming\n */\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.selectable.css",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Selectable#theming\n */\n.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.slider.css",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Slider#theming\n */\n.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.spinner.css",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Spinner#theming\n */\n.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tabs.css",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Tabs#theming\n */\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.theme.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tooltip.css",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery-ui-i18n.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-11-23\n* http://jqueryui.com\n* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js\n* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */\n\n/* Afrikaans initialisation for the jQuery UI date picker plugin. */\n/* Written by Renier Pretorius. */\njQuery(function($){\n\t$.datepicker.regional['af'] = {\n\t\tcloseText: 'Selekteer',\n\t\tprevText: 'Vorige',\n\t\tnextText: 'Volgende',\n\t\tcurrentText: 'Vandag',\n\t\tmonthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',\n\t\t'Julie','Augustus','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n\t\tdayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],\n\t\tdayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],\n\t\tdayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['af']);\n});\n\n/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/\n/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */\n\njQuery(function($){\n\t$.datepicker.regional['ar-DZ'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',\n\t\t'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);\n});\n\n/* Arabic Translation for jQuery UI date picker plugin. */\n/* Khaled Alhourani -- me@khaledalhourani.com */\n/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */\njQuery(function($){\n\t$.datepicker.regional['ar'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',\n\t\t'تموز', 'آب', 'أيلول',\t'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar']);\n});\n\n/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Jamil Najafov (necefov33@gmail.com). */\njQuery(function($) {\n\t$.datepicker.regional['az'] = {\n\t\tcloseText: 'Bağla',\n\t\tprevText: '&#x3C;Geri',\n\t\tnextText: 'İrəli&#x3E;',\n\t\tcurrentText: 'Bugün',\n\t\tmonthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',\n\t\t'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],\n\t\tmonthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',\n\t\t'İyul','Avq','Sen','Okt','Noy','Dek'],\n\t\tdayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],\n\t\tdayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],\n\t\tdayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['az']);\n});\n\n/* Bulgarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Stoyan Kyosev (http://svest.org). */\njQuery(function($){\n\t$.datepicker.regional['bg'] = {\n\t\tcloseText: 'затвори',\n\t\tprevText: '&#x3C;назад',\n\t\tnextText: 'напред&#x3E;',\n\t\tnextBigText: '&#x3E;&#x3E;',\n\t\tcurrentText: 'днес',\n\t\tmonthNames: ['Януари','Февруари','Март','Април','Май','Юни',\n\t\t'Юли','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',\n\t\t'Юли','Авг','Сеп','Окт','Нов','Дек'],\n\t\tdayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bg']);\n});\n\n/* Bosnian i18n for the jQuery UI date picker plugin. */\n/* Written by Kenan Konjo. */\njQuery(function($){\n\t$.datepicker.regional['bs'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Juni',\n\t\t'Juli','August','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bs']);\n});\n\n/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */\n/* Writers: (joan.leon@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ca'] = {\n\t\tcloseText: 'Tanca',\n\t\tprevText: 'Anterior',\n\t\tnextText: 'Següent',\n\t\tcurrentText: 'Avui',\n\t\tmonthNames: ['gener','febrer','març','abril','maig','juny',\n\t\t'juliol','agost','setembre','octubre','novembre','desembre'],\n\t\tmonthNamesShort: ['gen','feb','març','abr','maig','juny',\n\t\t'jul','ag','set','oct','nov','des'],\n\t\tdayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],\n\t\tdayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tdayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tweekHeader: 'Set',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ca']);\n});\n\n/* Czech initialisation for the jQuery UI date picker plugin. */\n/* Written by Tomas Muller (tomas@tomas-muller.net). */\njQuery(function($){\n\t$.datepicker.regional['cs'] = {\n\t\tcloseText: 'Zavřít',\n\t\tprevText: '&#x3C;Dříve',\n\t\tnextText: 'Později&#x3E;',\n\t\tcurrentText: 'Nyní',\n\t\tmonthNames: ['leden','únor','březen','duben','květen','červen',\n\t\t'červenec','srpen','září','říjen','listopad','prosinec'],\n\t\tmonthNamesShort: ['led','úno','bře','dub','kvě','čer',\n\t\t'čvc','srp','zář','říj','lis','pro'],\n\t\tdayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],\n\t\tdayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n\t\tdayNamesMin: ['ne','po','út','st','čt','pá','so'],\n\t\tweekHeader: 'Týd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cs']);\n});\n\n/* Welsh/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by William Griffiths. */\njQuery(function($){\n\t$.datepicker.regional['cy-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',\n\t\t'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],\n\t\tmonthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',\n\t\t'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],\n\t\tdayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],\n\t\tdayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],\n\t\tdayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],\n\t\tweekHeader: 'Wy',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cy-GB']);\n});\n\n/* Danish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jan Christensen ( deletestuff@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['da'] = {\n\t\tcloseText: 'Luk',\n\t\tprevText: '&#x3C;Forrige',\n\t\tnextText: 'Næste&#x3E;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januar','Februar','Marts','April','Maj','Juni',\n\t\t'Juli','August','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],\n\t\tdayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],\n\t\tdayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],\n\t\tweekHeader: 'Uge',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['da']);\n});\n\n/* German initialisation for the jQuery UI date picker plugin. */\n/* Written by Milian Wolff (mail@milianw.de). */\njQuery(function($){\n\t$.datepicker.regional['de'] = {\n\t\tcloseText: 'schließen',\n\t\tprevText: '&#x3C;zurück',\n\t\tnextText: 'Vor&#x3E;',\n\t\tcurrentText: 'heute',\n\t\tmonthNames: ['Januar','Februar','März','April','Mai','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dez'],\n\t\tdayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],\n\t\tdayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tdayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tweekHeader: 'KW',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['de']);\n});\n\n/* Greek (el) initialisation for the jQuery UI date picker plugin. */\n/* Written by Alex Cicovic (http://www.alexcicovic.com) */\njQuery(function($){\n\t$.datepicker.regional['el'] = {\n\t\tcloseText: 'Κλείσιμο',\n\t\tprevText: 'Προηγούμενος',\n\t\tnextText: 'Επόμενος',\n\t\tcurrentText: 'Τρέχων Μήνας',\n\t\tmonthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',\n\t\t'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],\n\t\tmonthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',\n\t\t'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],\n\t\tdayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],\n\t\tdayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],\n\t\tdayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],\n\t\tweekHeader: 'Εβδ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['el']);\n});\n\n/* English/Australia initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-AU'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-AU']);\n});\n\n/* English/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by Stuart. */\njQuery(function($){\n\t$.datepicker.regional['en-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-GB']);\n});\n\n/* English/New Zealand initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-NZ'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-NZ']);\n});\n\n/* Esperanto initialisation for the jQuery UI date picker plugin. */\n/* Written by Olivier M. (olivierweb@ifrance.com). */\njQuery(function($){\n\t$.datepicker.regional['eo'] = {\n\t\tcloseText: 'Fermi',\n\t\tprevText: '&#x3C;Anta',\n\t\tnextText: 'Sekv&#x3E;',\n\t\tcurrentText: 'Nuna',\n\t\tmonthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',\n\t\t'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aŭg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],\n\t\tweekHeader: 'Sb',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eo']);\n});\n\n/* Inicialización en español para la extensión 'UI date picker' para jQuery. */\n/* Traducido por Vester (xvester@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['es'] = {\n\t\tcloseText: 'Cerrar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Sig&#x3E;',\n\t\tcurrentText: 'Hoy',\n\t\tmonthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',\n\t\t'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],\n\t\tmonthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',\n\t\t'Jul','Ago','Sep','Oct','Nov','Dic'],\n\t\tdayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['es']);\n});\n\n/* Estonian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */\njQuery(function($){\n\t$.datepicker.regional['et'] = {\n\t\tcloseText: 'Sulge',\n\t\tprevText: 'Eelnev',\n\t\tnextText: 'Järgnev',\n\t\tcurrentText: 'Täna',\n\t\tmonthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',\n\t\t'Juuli','August','September','Oktoober','November','Detsember'],\n\t\tmonthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',\n\t\t'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],\n\t\tdayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],\n\t\tdayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],\n\t\tdayNamesMin: ['P','E','T','K','N','R','L'],\n\t\tweekHeader: 'näd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['et']);\n});\n\n/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */\n/* Karrikas-ek itzulia (karrikas@karrikas.com) */\njQuery(function($){\n\t$.datepicker.regional['eu'] = {\n\t\tcloseText: 'Egina',\n\t\tprevText: '&#x3C;Aur',\n\t\tnextText: 'Hur&#x3E;',\n\t\tcurrentText: 'Gaur',\n\t\tmonthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',\n\t\t\t'uztaila','abuztua','iraila','urria','azaroa','abendua'],\n\t\tmonthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',\n\t\t\t'uzt.','abu.','ira.','urr.','aza.','abe.'],\n\t\tdayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],\n\t\tdayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],\n\t\tdayNamesMin: ['ig','al','ar','az','og','ol','lr'],\n\t\tweekHeader: 'As',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eu']);\n});\n\n/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */\n/* Javad Mowlanezhad -- jmowla@gmail.com */\n/* Jalali calendar should supported soon! (Its implemented but I have to test it) */\njQuery(function($) {\n\t$.datepicker.regional['fa'] = {\n\t\tcloseText: 'بستن',\n\t\tprevText: '&#x3C;قبلی',\n\t\tnextText: 'بعدی&#x3E;',\n\t\tcurrentText: 'امروز',\n\t\tmonthNames: [\n\t\t\t'فروردين',\n\t\t\t'ارديبهشت',\n\t\t\t'خرداد',\n\t\t\t'تير',\n\t\t\t'مرداد',\n\t\t\t'شهريور',\n\t\t\t'مهر',\n\t\t\t'آبان',\n\t\t\t'آذر',\n\t\t\t'دی',\n\t\t\t'بهمن',\n\t\t\t'اسفند'\n\t\t],\n\t\tmonthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],\n\t\tdayNames: [\n\t\t\t'يکشنبه',\n\t\t\t'دوشنبه',\n\t\t\t'سه‌شنبه',\n\t\t\t'چهارشنبه',\n\t\t\t'پنجشنبه',\n\t\t\t'جمعه',\n\t\t\t'شنبه'\n\t\t],\n\t\tdayNamesShort: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tdayNamesMin: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tweekHeader: 'هف',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 6,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fa']);\n});\n\n/* Finnish initialisation for the jQuery UI date picker plugin. */\n/* Written by Harri Kilpiö (harrikilpio@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['fi'] = {\n\t\tcloseText: 'Sulje',\n\t\tprevText: '&#xAB;Edellinen',\n\t\tnextText: 'Seuraava&#xBB;',\n\t\tcurrentText: 'Tänään',\n\t\tmonthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',\n\t\t'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],\n\t\tmonthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',\n\t\t'Heinä','Elo','Syys','Loka','Marras','Joulu'],\n\t\tdayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tdayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],\n\t\tdayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fi']);\n});\n\n/* Faroese initialisation for the jQuery UI date picker plugin */\n/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */\njQuery(function($){\n\t$.datepicker.regional['fo'] = {\n\t\tcloseText: 'Lat aftur',\n\t\tprevText: '&#x3C;Fyrra',\n\t\tnextText: 'Næsta&#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',\n\t\t'Juli','August','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Des'],\n\t\tdayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],\n\t\tdayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fo']);\n});\n\n/* Swiss-French initialisation for the jQuery UI date picker plugin. */\n/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */\njQuery(function($){\n\t$.datepicker.regional['fr-CH'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: '&#x3C;Préc',\n\t\tnextText: 'Suiv&#x3E;',\n\t\tcurrentText: 'Courant',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',\n\t\t'Jul','Aoû','Sep','Oct','Nov','Déc'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr-CH']);\n});\n\n/* French initialisation for the jQuery UI date picker plugin. */\n/* Written by Keith Wood (kbwood{at}iinet.com.au),\n\t\t\t  Stéphane Nahmani (sholby@sholby.net),\n\t\t\t  Stéphane Raimbault <stephane.raimbault@gmail.com> */\njQuery(function($){\n\t$.datepicker.regional['fr'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: 'Précédent',\n\t\tnextText: 'Suivant',\n\t\tcurrentText: 'Aujourd\\'hui',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',\n\t\t'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],\n\t\tdayNamesMin: ['D','L','M','M','J','V','S'],\n\t\tweekHeader: 'Sem.',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr']);\n});\n\n/* Galician localization for 'UI date picker' jQuery extension. */\n/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */\njQuery(function($){\n\t$.datepicker.regional['gl'] = {\n\t\tcloseText: 'Pechar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Seg&#x3E;',\n\t\tcurrentText: 'Hoxe',\n\t\tmonthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',\n\t\t'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',\n\t\t'Xul','Ago','Set','Out','Nov','Dec'],\n\t\tdayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['gl']);\n});\n\n/* Hebrew initialisation for the UI Datepicker extension. */\n/* Written by Amir Hardon (ahardon at gmail dot com). */\njQuery(function($){\n\t$.datepicker.regional['he'] = {\n\t\tcloseText: 'סגור',\n\t\tprevText: '&#x3C;הקודם',\n\t\tnextText: 'הבא&#x3E;',\n\t\tcurrentText: 'היום',\n\t\tmonthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',\n\t\t'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],\n\t\tmonthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',\n\t\t'יולי','אוג','ספט','אוק','נוב','דצמ'],\n\t\tdayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],\n\t\tdayNamesShort: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tdayNamesMin: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['he']);\n});\n\n/* Hindi initialisation for the jQuery UI date picker plugin. */\n/* Written by Michael Dawart. */\njQuery(function($){\n\t$.datepicker.regional['hi'] = {\n\t\tcloseText: 'बंद',\n\t\tprevText: 'पिछला',\n\t\tnextText: 'अगला',\n\t\tcurrentText: 'आज',\n\t\tmonthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',\n\t\t'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],\n\t\tmonthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',\n\t\t'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],\n\t\tdayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],\n\t\tdayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tdayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tweekHeader: 'हफ्ता',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hi']);\n});\n\n/* Croatian i18n for the jQuery UI date picker plugin. */\n/* Written by Vjekoslav Nesek. */\njQuery(function($){\n\t$.datepicker.regional['hr'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',\n\t\t'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],\n\t\tmonthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',\n\t\t'Srp','Kol','Ruj','Lis','Stu','Pro'],\n\t\tdayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Tje',\n\t\tdateFormat: 'dd.mm.yy.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hr']);\n});\n\n/* Hungarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */\njQuery(function($){\n\t$.datepicker.regional['hu'] = {\n\t\tcloseText: 'bezár',\n\t\tprevText: 'vissza',\n\t\tnextText: 'előre',\n\t\tcurrentText: 'ma',\n\t\tmonthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',\n\t\t'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',\n\t\t'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],\n\t\tdayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],\n\t\tdayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],\n\t\tdayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n\t\tweekHeader: 'Hét',\n\t\tdateFormat: 'yy.mm.dd.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hu']);\n});\n\n/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/\njQuery(function($){\n\t$.datepicker.regional['hy'] = {\n\t\tcloseText: 'Փակել',\n\t\tprevText: '&#x3C;Նախ.',\n\t\tnextText: 'Հաջ.&#x3E;',\n\t\tcurrentText: 'Այսօր',\n\t\tmonthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',\n\t\t'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],\n\t\tmonthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',\n\t\t'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],\n\t\tdayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],\n\t\tdayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tdayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tweekHeader: 'ՇԲՏ',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hy']);\n});\n\n/* Indonesian initialisation for the jQuery UI date picker plugin. */\n/* Written by Deden Fathurahman (dedenf@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['id'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;mundur',\n\t\tnextText: 'maju&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Maret','April','Mei','Juni',\n\t\t'Juli','Agustus','September','Oktober','Nopember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Agus','Sep','Okt','Nop','Des'],\n\t\tdayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],\n\t\tdayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],\n\t\tdayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['id']);\n});\n\n/* Icelandic initialisation for the jQuery UI date picker plugin. */\n/* Written by Haukur H. Thorsson (haukur@eskill.is). */\njQuery(function($){\n\t$.datepicker.regional['is'] = {\n\t\tcloseText: 'Loka',\n\t\tprevText: '&#x3C; Fyrri',\n\t\tnextText: 'Næsti &#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',\n\t\t'Júlí','Ágúst','September','Október','Nóvember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',\n\t\t'Júl','Ágú','Sep','Okt','Nóv','Des'],\n\t\tdayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],\n\t\tdayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],\n\t\tweekHeader: 'Vika',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['is']);\n});\n\n/* Italian initialisation for the jQuery UI date picker plugin. */\n/* Written by Antonello Pasella (antonello.pasella@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['it'] = {\n\t\tcloseText: 'Chiudi',\n\t\tprevText: '&#x3C;Prec',\n\t\tnextText: 'Succ&#x3E;',\n\t\tcurrentText: 'Oggi',\n\t\tmonthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',\n\t\t\t'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],\n\t\tmonthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',\n\t\t\t'Lug','Ago','Set','Ott','Nov','Dic'],\n\t\tdayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['it']);\n});\n\n/* Japanese initialisation for the jQuery UI date picker plugin. */\n/* Written by Kentaro SATO (kentaro@ranvis.com). */\njQuery(function($){\n\t$.datepicker.regional['ja'] = {\n\t\tcloseText: '閉じる',\n\t\tprevText: '&#x3C;前',\n\t\tnextText: '次&#x3E;',\n\t\tcurrentText: '今日',\n\t\tmonthNames: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tmonthNamesShort: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tdayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],\n\t\tdayNamesShort: ['日','月','火','水','木','金','土'],\n\t\tdayNamesMin: ['日','月','火','水','木','金','土'],\n\t\tweekHeader: '週',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['ja']);\n});\n\n/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Lado Lomidze (lado.lomidze@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ka'] = {\n\t\tcloseText: 'დახურვა',\n\t\tprevText: '&#x3c; წინა',\n\t\tnextText: 'შემდეგი &#x3e;',\n\t\tcurrentText: 'დღეს',\n\t\tmonthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],\n\t\tmonthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],\n\t\tdayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],\n\t\tdayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tdayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tweekHeader: 'კვირა',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ka']);\n});\n\n/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['kk'] = {\n\t\tcloseText: 'Жабу',\n\t\tprevText: '&#x3C;Алдыңғы',\n\t\tnextText: 'Келесі&#x3E;',\n\t\tcurrentText: 'Бүгін',\n\t\tmonthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',\n\t\t'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],\n\t\tmonthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',\n\t\t'Шіл','Там','Қыр','Қаз','Қар','Жел'],\n\t\tdayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],\n\t\tdayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],\n\t\tdayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['kk']);\n});\n\n/* Khmer initialisation for the jQuery calendar extension. */\n/* Written by Chandara Om (chandara.teacher@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['km'] = {\n\t\tcloseText: 'ធ្វើ​រួច',\n\t\tprevText: 'មុន',\n\t\tnextText: 'បន្ទាប់',\n\t\tcurrentText: 'ថ្ងៃ​នេះ',\n\t\tmonthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tmonthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tdayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],\n\t\tdayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tdayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tweekHeader: 'សប្ដាហ៍',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['km']);\n});\n\n/* Korean initialisation for the jQuery calendar extension. */\n/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */\njQuery(function($){\n\t$.datepicker.regional['ko'] = {\n\t\tcloseText: '닫기',\n\t\tprevText: '이전달',\n\t\tnextText: '다음달',\n\t\tcurrentText: '오늘',\n\t\tmonthNames: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tmonthNamesShort: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tdayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],\n\t\tdayNamesShort: ['일','월','화','수','목','금','토'],\n\t\tdayNamesMin: ['일','월','화','수','목','금','토'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '년'};\n\t$.datepicker.setDefaults($.datepicker.regional['ko']);\n});\n\n/* Luxembourgish initialisation for the jQuery UI date picker plugin. */\n/* Written by Michel Weimerskirch <michel@weimerskirch.net> */\njQuery(function($){\n\t$.datepicker.regional['lb'] = {\n\t\tcloseText: 'Fäerdeg',\n\t\tprevText: 'Zréck',\n\t\tnextText: 'Weider',\n\t\tcurrentText: 'Haut',\n\t\tmonthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n\t\tdayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],\n\t\tdayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],\n\t\tdayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],\n\t\tweekHeader: 'W',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lb']);\n});\n\n/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas@avalon.lt> */\njQuery(function($){\n\t$.datepicker.regional['lt'] = {\n\t\tcloseText: 'Uždaryti',\n\t\tprevText: '&#x3C;Atgal',\n\t\tnextText: 'Pirmyn&#x3E;',\n\t\tcurrentText: 'Šiandien',\n\t\tmonthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',\n\t\t'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],\n\t\tmonthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',\n\t\t'Lie','Rugp','Rugs','Spa','Lap','Gru'],\n\t\tdayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],\n\t\tdayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],\n\t\tdayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lt']);\n});\n\n/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */\njQuery(function($){\n\t$.datepicker.regional['lv'] = {\n\t\tcloseText: 'Aizvērt',\n\t\tprevText: 'Iepr',\n\t\tnextText: 'Nāka',\n\t\tcurrentText: 'Šodien',\n\t\tmonthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',\n\t\t'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',\n\t\t'Jūl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],\n\t\tdayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],\n\t\tdayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],\n\t\tweekHeader: 'Nav',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lv']);\n});\n\n/* Macedonian i18n for the jQuery UI date picker plugin. */\n/* Written by Stojce Slavkovski. */\njQuery(function($){\n\t$.datepicker.regional['mk'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Денес',\n\t\tmonthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',\n\t\t'Јули','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Ное','Дек'],\n\t\tdayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['mk']);\n});\n\n/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Saji Nediyanchath (saji89@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ml'] = {\n\t\tcloseText: 'ശരി',\n\t\tprevText: 'മുന്നത്തെ',\n\t\tnextText: 'അടുത്തത് ',\n\t\tcurrentText: 'ഇന്ന്',\n\t\tmonthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',\n\t\t'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],\n\t\tmonthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',\n\t\t'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],\n\t\tdayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],\n\t\tweekHeader: 'ആ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ml']);\n});\n\n/* Malaysian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */\njQuery(function($){\n\t$.datepicker.regional['ms'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;Sebelum',\n\t\tnextText: 'Selepas&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Mac','April','Mei','Jun',\n\t\t'Julai','Ogos','September','Oktober','November','Disember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',\n\t\t'Jul','Ogo','Sep','Okt','Nov','Dis'],\n\t\tdayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],\n\t\tdayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],\n\t\tdayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ms']);\n});\n\n/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */\n/* David De Sloovere @DavidDeSloovere */\njQuery(function($){\n\t$.datepicker.regional['nl-BE'] = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['nl-BE']);\n});\n\n/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Mathias Bynens <http://mathiasbynens.be/> */\njQuery(function($){\n\t$.datepicker.regional.nl = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional.nl);\n});\n\n/* Norwegian initialisation for the jQuery UI date picker plugin. */\n/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */\n\njQuery(function($){\n\t$.datepicker.regional['no'] = {\n\t\tcloseText: 'Lukk',\n\t\tprevText: '&#xAB;Forrige',\n\t\tnextText: 'Neste&#xBB;',\n\t\tcurrentText: 'I dag',\n\t\tmonthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],\n\t\tmonthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],\n\t\tdayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],\n\t\tdayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],\n\t\tdayNamesMin: ['sø','ma','ti','on','to','fr','lø'],\n\t\tweekHeader: 'Uke',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''\n\t};\n\t$.datepicker.setDefaults($.datepicker.regional['no']);\n});\n\n/* Polish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pl'] = {\n\t\tcloseText: 'Zamknij',\n\t\tprevText: '&#x3C;Poprzedni',\n\t\tnextText: 'Następny&#x3E;',\n\t\tcurrentText: 'Dziś',\n\t\tmonthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',\n\t\t'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],\n\t\tmonthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',\n\t\t'Lip','Sie','Wrz','Pa','Lis','Gru'],\n\t\tdayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],\n\t\tdayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],\n\t\tdayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],\n\t\tweekHeader: 'Tydz',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pl']);\n});\n\n/* Brazilian initialisation for the jQuery UI date picker plugin. */\n/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pt-BR'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Próximo&#x3E;',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt-BR']);\n});\n\n/* Portuguese initialisation for the jQuery UI date picker plugin. */\njQuery(function($){\n\t$.datepicker.regional['pt'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Seguinte',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sem',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt']);\n});\n\n/* Romansh initialisation for the jQuery UI date picker plugin. */\n/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */\njQuery(function($){\n\t$.datepicker.regional['rm'] = {\n\t\tcloseText: 'Serrar',\n\t\tprevText: '&#x3C;Suandant',\n\t\tnextText: 'Precedent&#x3E;',\n\t\tcurrentText: 'Actual',\n\t\tmonthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],\n\t\tmonthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],\n\t\tdayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],\n\t\tdayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],\n\t\tdayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],\n\t\tweekHeader: 'emna',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['rm']);\n});\n\n/* Romanian initialisation for the jQuery UI date picker plugin.\n *\n * Written by Edmond L. (ll_edmond@walla.com)\n * and Ionut G. Stan (ionut.g.stan@gmail.com)\n */\njQuery(function($){\n\t$.datepicker.regional['ro'] = {\n\t\tcloseText: 'Închide',\n\t\tprevText: '&#xAB; Luna precedentă',\n\t\tnextText: 'Luna următoare &#xBB;',\n\t\tcurrentText: 'Azi',\n\t\tmonthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',\n\t\t'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],\n\t\tmonthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',\n\t\t'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],\n\t\tdayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],\n\t\tdayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],\n\t\tweekHeader: 'Săpt',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ro']);\n});\n\n/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Andrew Stromnov (stromnov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ru'] = {\n\t\tcloseText: 'Закрыть',\n\t\tprevText: '&#x3C;Пред',\n\t\tnextText: 'След&#x3E;',\n\t\tcurrentText: 'Сегодня',\n\t\tmonthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',\n\t\t'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],\n\t\tdayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Нед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ru']);\n});\n\n/* Slovak initialisation for the jQuery UI date picker plugin. */\n/* Written by Vojtech Rinik (vojto@hmm.sk). */\njQuery(function($){\n\t$.datepicker.regional['sk'] = {\n\t\tcloseText: 'Zavrieť',\n\t\tprevText: '&#x3C;Predchádzajúci',\n\t\tnextText: 'Nasledujúci&#x3E;',\n\t\tcurrentText: 'Dnes',\n\t\tmonthNames: ['Január','Február','Marec','Apríl','Máj','Jún',\n\t\t'Júl','August','September','Október','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',\n\t\t'Júl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],\n\t\tdayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],\n\t\tweekHeader: 'Ty',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sk']);\n});\n\n/* Slovenian initialisation for the jQuery UI date picker plugin. */\n/* Written by Jaka Jancar (jaka@kubje.org). */\n/* c = č, s = š z = ž C = Č S = Š Z = Ž */\njQuery(function($){\n\t$.datepicker.regional['sl'] = {\n\t\tcloseText: 'Zapri',\n\t\tprevText: '&#x3C;Prejšnji',\n\t\tnextText: 'Naslednji&#x3E;',\n\t\tcurrentText: 'Trenutni',\n\t\tmonthNames: ['Januar','Februar','Marec','April','Maj','Junij',\n\t\t'Julij','Avgust','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],\n\t\tdayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],\n\t\tweekHeader: 'Teden',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sl']);\n});\n\n/* Albanian initialisation for the jQuery UI date picker plugin. */\n/* Written by Flakron Bytyqi (flakron@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['sq'] = {\n\t\tcloseText: 'mbylle',\n\t\tprevText: '&#x3C;mbrapa',\n\t\tnextText: 'Përpara&#x3E;',\n\t\tcurrentText: 'sot',\n\t\tmonthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',\n\t\t'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],\n\t\tmonthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',\n\t\t'Kor','Gus','Sht','Tet','Nën','Dhj'],\n\t\tdayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],\n\t\tdayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tdayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tweekHeader: 'Ja',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sq']);\n});\n\n/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr-SR'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Jun',\n\t\t'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Sed',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr-SR']);\n});\n\n/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Данас',\n\t\tmonthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',\n\t\t'Јул','Август','Септембар','Октобар','Новембар','Децембар'],\n\t\tmonthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Нов','Дец'],\n\t\tdayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],\n\t\tdayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],\n\t\tdayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr']);\n});\n\n/* Swedish initialisation for the jQuery UI date picker plugin. */\n/* Written by Anders Ekdahl ( anders@nomadiz.se). */\njQuery(function($){\n\t$.datepicker.regional['sv'] = {\n\t\tcloseText: 'Stäng',\n\t\tprevText: '&#xAB;Förra',\n\t\tnextText: 'Nästa&#xBB;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januari','Februari','Mars','April','Maj','Juni',\n\t\t'Juli','Augusti','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],\n\t\tdayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],\n\t\tdayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],\n\t\tweekHeader: 'Ve',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sv']);\n});\n\n/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by S A Sureshkumar (saskumar@live.com). */\njQuery(function($){\n\t$.datepicker.regional['ta'] = {\n\t\tcloseText: 'மூடு',\n\t\tprevText: 'முன்னையது',\n\t\tnextText: 'அடுத்தது',\n\t\tcurrentText: 'இன்று',\n\t\tmonthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',\n\t\t'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],\n\t\tmonthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',\n\t\t'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],\n\t\tdayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],\n\t\tdayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],\n\t\tdayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ta']);\n});\n\n/* Thai initialisation for the jQuery UI date picker plugin. */\n/* Written by pipo (pipo@sixhead.com). */\njQuery(function($){\n\t$.datepicker.regional['th'] = {\n\t\tcloseText: 'ปิด',\n\t\tprevText: '&#xAB;&#xA0;ย้อน',\n\t\tnextText: 'ถัดไป&#xA0;&#xBB;',\n\t\tcurrentText: 'วันนี้',\n\t\tmonthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',\n\t\t'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],\n\t\tmonthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',\n\t\t'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],\n\t\tdayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],\n\t\tdayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tdayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['th']);\n});\n\n/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Abdurahmon Saidov (saidovab@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['tj'] = {\n\t\tcloseText: 'Идома',\n\t\tprevText: '&#x3c;Қафо',\n\t\tnextText: 'Пеш&#x3e;',\n\t\tcurrentText: 'Имрӯз',\n\t\tmonthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',\n\t\t'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],\n\t\tdayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],\n\t\tdayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],\n\t\tweekHeader: 'Хф',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tj']);\n});\n\n/* Turkish initialisation for the jQuery UI date picker plugin. */\n/* Written by Izzet Emre Erkan (kara@karalamalar.net). */\njQuery(function($){\n\t$.datepicker.regional['tr'] = {\n\t\tcloseText: 'kapat',\n\t\tprevText: '&#x3C;geri',\n\t\tnextText: 'ileri&#x3e',\n\t\tcurrentText: 'bugün',\n\t\tmonthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',\n\t\t'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],\n\t\tmonthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',\n\t\t'Tem','Ağu','Eyl','Eki','Kas','Ara'],\n\t\tdayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],\n\t\tdayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tdayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tr']);\n});\n\n/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */\n/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['uk'] = {\n\t\tcloseText: 'Закрити',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Сьогодні',\n\t\tmonthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',\n\t\t'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],\n\t\tmonthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',\n\t\t'Лип','Сер','Вер','Жов','Лис','Гру'],\n\t\tdayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],\n\t\tdayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Тиж',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['uk']);\n});\n\n/* Vietnamese initialisation for the jQuery UI date picker plugin. */\n/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */\njQuery(function($){\n\t$.datepicker.regional['vi'] = {\n\t\tcloseText: 'Đóng',\n\t\tprevText: '&#x3C;Trước',\n\t\tnextText: 'Tiếp&#x3E;',\n\t\tcurrentText: 'Hôm nay',\n\t\tmonthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',\n\t\t'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],\n\t\tmonthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',\n\t\t'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n\t\tdayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n\t\tdayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tdayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tweekHeader: 'Tu',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['vi']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Cloudream (cloudream@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-CN'] = {\n\t\tcloseText: '关闭',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-CN']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by SCCY (samuelcychan@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-HK'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-HK']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Ressol (ressol@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-TW'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-TW']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-af.js",
    "content": "/* Afrikaans initialisation for the jQuery UI date picker plugin. */\n/* Written by Renier Pretorius. */\njQuery(function($){\n\t$.datepicker.regional['af'] = {\n\t\tcloseText: 'Selekteer',\n\t\tprevText: 'Vorige',\n\t\tnextText: 'Volgende',\n\t\tcurrentText: 'Vandag',\n\t\tmonthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',\n\t\t'Julie','Augustus','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n\t\tdayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],\n\t\tdayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],\n\t\tdayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['af']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar-DZ.js",
    "content": "/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/\n/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */\n\njQuery(function($){\n\t$.datepicker.regional['ar-DZ'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',\n\t\t'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js",
    "content": "/* Arabic Translation for jQuery UI date picker plugin. */\n/* Khaled Alhourani -- me@khaledalhourani.com */\n/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */\njQuery(function($){\n\t$.datepicker.regional['ar'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',\n\t\t'تموز', 'آب', 'أيلول',\t'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-az.js",
    "content": "/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Jamil Najafov (necefov33@gmail.com). */\njQuery(function($) {\n\t$.datepicker.regional['az'] = {\n\t\tcloseText: 'Bağla',\n\t\tprevText: '&#x3C;Geri',\n\t\tnextText: 'İrəli&#x3E;',\n\t\tcurrentText: 'Bugün',\n\t\tmonthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',\n\t\t'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],\n\t\tmonthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',\n\t\t'İyul','Avq','Sen','Okt','Noy','Dek'],\n\t\tdayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],\n\t\tdayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],\n\t\tdayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['az']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js",
    "content": "/* Bulgarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Stoyan Kyosev (http://svest.org). */\njQuery(function($){\n\t$.datepicker.regional['bg'] = {\n\t\tcloseText: 'затвори',\n\t\tprevText: '&#x3C;назад',\n\t\tnextText: 'напред&#x3E;',\n\t\tnextBigText: '&#x3E;&#x3E;',\n\t\tcurrentText: 'днес',\n\t\tmonthNames: ['Януари','Февруари','Март','Април','Май','Юни',\n\t\t'Юли','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',\n\t\t'Юли','Авг','Сеп','Окт','Нов','Дек'],\n\t\tdayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bg']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js",
    "content": "/* Bosnian i18n for the jQuery UI date picker plugin. */\n/* Written by Kenan Konjo. */\njQuery(function($){\n\t$.datepicker.regional['bs'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Juni',\n\t\t'Juli','August','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bs']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js",
    "content": "/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */\n/* Writers: (joan.leon@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ca'] = {\n\t\tcloseText: 'Tanca',\n\t\tprevText: 'Anterior',\n\t\tnextText: 'Següent',\n\t\tcurrentText: 'Avui',\n\t\tmonthNames: ['gener','febrer','març','abril','maig','juny',\n\t\t'juliol','agost','setembre','octubre','novembre','desembre'],\n\t\tmonthNamesShort: ['gen','feb','març','abr','maig','juny',\n\t\t'jul','ag','set','oct','nov','des'],\n\t\tdayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],\n\t\tdayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tdayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tweekHeader: 'Set',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ca']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js",
    "content": "/* Czech initialisation for the jQuery UI date picker plugin. */\n/* Written by Tomas Muller (tomas@tomas-muller.net). */\njQuery(function($){\n\t$.datepicker.regional['cs'] = {\n\t\tcloseText: 'Zavřít',\n\t\tprevText: '&#x3C;Dříve',\n\t\tnextText: 'Později&#x3E;',\n\t\tcurrentText: 'Nyní',\n\t\tmonthNames: ['leden','únor','březen','duben','květen','červen',\n\t\t'červenec','srpen','září','říjen','listopad','prosinec'],\n\t\tmonthNamesShort: ['led','úno','bře','dub','kvě','čer',\n\t\t'čvc','srp','zář','říj','lis','pro'],\n\t\tdayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],\n\t\tdayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n\t\tdayNamesMin: ['ne','po','út','st','čt','pá','so'],\n\t\tweekHeader: 'Týd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cs']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cy-GB.js",
    "content": "/* Welsh/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by William Griffiths. */\njQuery(function($){\n\t$.datepicker.regional['cy-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',\n\t\t'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],\n\t\tmonthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',\n\t\t'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],\n\t\tdayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],\n\t\tdayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],\n\t\tdayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],\n\t\tweekHeader: 'Wy',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cy-GB']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-da.js",
    "content": "/* Danish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jan Christensen ( deletestuff@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['da'] = {\n\t\tcloseText: 'Luk',\n\t\tprevText: '&#x3C;Forrige',\n\t\tnextText: 'Næste&#x3E;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januar','Februar','Marts','April','Maj','Juni',\n\t\t'Juli','August','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],\n\t\tdayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],\n\t\tdayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],\n\t\tweekHeader: 'Uge',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['da']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-de.js",
    "content": "/* German initialisation for the jQuery UI date picker plugin. */\n/* Written by Milian Wolff (mail@milianw.de). */\njQuery(function($){\n\t$.datepicker.regional['de'] = {\n\t\tcloseText: 'schließen',\n\t\tprevText: '&#x3C;zurück',\n\t\tnextText: 'Vor&#x3E;',\n\t\tcurrentText: 'heute',\n\t\tmonthNames: ['Januar','Februar','März','April','Mai','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dez'],\n\t\tdayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],\n\t\tdayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tdayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tweekHeader: 'KW',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['de']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-el.js",
    "content": "/* Greek (el) initialisation for the jQuery UI date picker plugin. */\n/* Written by Alex Cicovic (http://www.alexcicovic.com) */\njQuery(function($){\n\t$.datepicker.regional['el'] = {\n\t\tcloseText: 'Κλείσιμο',\n\t\tprevText: 'Προηγούμενος',\n\t\tnextText: 'Επόμενος',\n\t\tcurrentText: 'Τρέχων Μήνας',\n\t\tmonthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',\n\t\t'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],\n\t\tmonthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',\n\t\t'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],\n\t\tdayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],\n\t\tdayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],\n\t\tdayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],\n\t\tweekHeader: 'Εβδ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['el']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-AU.js",
    "content": "/* English/Australia initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-AU'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-AU']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js",
    "content": "/* English/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by Stuart. */\njQuery(function($){\n\t$.datepicker.regional['en-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-GB']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-NZ.js",
    "content": "/* English/New Zealand initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-NZ'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-NZ']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js",
    "content": "/* Esperanto initialisation for the jQuery UI date picker plugin. */\n/* Written by Olivier M. (olivierweb@ifrance.com). */\njQuery(function($){\n\t$.datepicker.regional['eo'] = {\n\t\tcloseText: 'Fermi',\n\t\tprevText: '&#x3C;Anta',\n\t\tnextText: 'Sekv&#x3E;',\n\t\tcurrentText: 'Nuna',\n\t\tmonthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',\n\t\t'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aŭg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],\n\t\tweekHeader: 'Sb',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eo']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-es.js",
    "content": "/* Inicialización en español para la extensión 'UI date picker' para jQuery. */\n/* Traducido por Vester (xvester@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['es'] = {\n\t\tcloseText: 'Cerrar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Sig&#x3E;',\n\t\tcurrentText: 'Hoy',\n\t\tmonthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',\n\t\t'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],\n\t\tmonthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',\n\t\t'Jul','Ago','Sep','Oct','Nov','Dic'],\n\t\tdayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['es']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-et.js",
    "content": "/* Estonian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */\njQuery(function($){\n\t$.datepicker.regional['et'] = {\n\t\tcloseText: 'Sulge',\n\t\tprevText: 'Eelnev',\n\t\tnextText: 'Järgnev',\n\t\tcurrentText: 'Täna',\n\t\tmonthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',\n\t\t'Juuli','August','September','Oktoober','November','Detsember'],\n\t\tmonthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',\n\t\t'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],\n\t\tdayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],\n\t\tdayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],\n\t\tdayNamesMin: ['P','E','T','K','N','R','L'],\n\t\tweekHeader: 'näd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['et']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js",
    "content": "/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */\n/* Karrikas-ek itzulia (karrikas@karrikas.com) */\njQuery(function($){\n\t$.datepicker.regional['eu'] = {\n\t\tcloseText: 'Egina',\n\t\tprevText: '&#x3C;Aur',\n\t\tnextText: 'Hur&#x3E;',\n\t\tcurrentText: 'Gaur',\n\t\tmonthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',\n\t\t\t'uztaila','abuztua','iraila','urria','azaroa','abendua'],\n\t\tmonthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',\n\t\t\t'uzt.','abu.','ira.','urr.','aza.','abe.'],\n\t\tdayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],\n\t\tdayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],\n\t\tdayNamesMin: ['ig','al','ar','az','og','ol','lr'],\n\t\tweekHeader: 'As',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eu']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js",
    "content": "/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */\n/* Javad Mowlanezhad -- jmowla@gmail.com */\n/* Jalali calendar should supported soon! (Its implemented but I have to test it) */\njQuery(function($) {\n\t$.datepicker.regional['fa'] = {\n\t\tcloseText: 'بستن',\n\t\tprevText: '&#x3C;قبلی',\n\t\tnextText: 'بعدی&#x3E;',\n\t\tcurrentText: 'امروز',\n\t\tmonthNames: [\n\t\t\t'فروردين',\n\t\t\t'ارديبهشت',\n\t\t\t'خرداد',\n\t\t\t'تير',\n\t\t\t'مرداد',\n\t\t\t'شهريور',\n\t\t\t'مهر',\n\t\t\t'آبان',\n\t\t\t'آذر',\n\t\t\t'دی',\n\t\t\t'بهمن',\n\t\t\t'اسفند'\n\t\t],\n\t\tmonthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],\n\t\tdayNames: [\n\t\t\t'يکشنبه',\n\t\t\t'دوشنبه',\n\t\t\t'سه‌شنبه',\n\t\t\t'چهارشنبه',\n\t\t\t'پنجشنبه',\n\t\t\t'جمعه',\n\t\t\t'شنبه'\n\t\t],\n\t\tdayNamesShort: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tdayNamesMin: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tweekHeader: 'هف',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 6,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fa']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js",
    "content": "/* Finnish initialisation for the jQuery UI date picker plugin. */\n/* Written by Harri Kilpiö (harrikilpio@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['fi'] = {\n\t\tcloseText: 'Sulje',\n\t\tprevText: '&#xAB;Edellinen',\n\t\tnextText: 'Seuraava&#xBB;',\n\t\tcurrentText: 'Tänään',\n\t\tmonthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',\n\t\t'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],\n\t\tmonthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',\n\t\t'Heinä','Elo','Syys','Loka','Marras','Joulu'],\n\t\tdayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tdayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],\n\t\tdayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fi']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js",
    "content": "/* Faroese initialisation for the jQuery UI date picker plugin */\n/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */\njQuery(function($){\n\t$.datepicker.regional['fo'] = {\n\t\tcloseText: 'Lat aftur',\n\t\tprevText: '&#x3C;Fyrra',\n\t\tnextText: 'Næsta&#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',\n\t\t'Juli','August','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Des'],\n\t\tdayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],\n\t\tdayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fo']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js",
    "content": "/* Swiss-French initialisation for the jQuery UI date picker plugin. */\n/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */\njQuery(function($){\n\t$.datepicker.regional['fr-CH'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: '&#x3C;Préc',\n\t\tnextText: 'Suiv&#x3E;',\n\t\tcurrentText: 'Courant',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',\n\t\t'Jul','Aoû','Sep','Oct','Nov','Déc'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr-CH']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js",
    "content": "/* French initialisation for the jQuery UI date picker plugin. */\n/* Written by Keith Wood (kbwood{at}iinet.com.au),\n\t\t\t  Stéphane Nahmani (sholby@sholby.net),\n\t\t\t  Stéphane Raimbault <stephane.raimbault@gmail.com> */\njQuery(function($){\n\t$.datepicker.regional['fr'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: 'Précédent',\n\t\tnextText: 'Suivant',\n\t\tcurrentText: 'Aujourd\\'hui',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',\n\t\t'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],\n\t\tdayNamesMin: ['D','L','M','M','J','V','S'],\n\t\tweekHeader: 'Sem.',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-gl.js",
    "content": "/* Galician localization for 'UI date picker' jQuery extension. */\n/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */\njQuery(function($){\n\t$.datepicker.regional['gl'] = {\n\t\tcloseText: 'Pechar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Seg&#x3E;',\n\t\tcurrentText: 'Hoxe',\n\t\tmonthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',\n\t\t'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',\n\t\t'Xul','Ago','Set','Out','Nov','Dec'],\n\t\tdayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['gl']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-he.js",
    "content": "/* Hebrew initialisation for the UI Datepicker extension. */\n/* Written by Amir Hardon (ahardon at gmail dot com). */\njQuery(function($){\n\t$.datepicker.regional['he'] = {\n\t\tcloseText: 'סגור',\n\t\tprevText: '&#x3C;הקודם',\n\t\tnextText: 'הבא&#x3E;',\n\t\tcurrentText: 'היום',\n\t\tmonthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',\n\t\t'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],\n\t\tmonthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',\n\t\t'יולי','אוג','ספט','אוק','נוב','דצמ'],\n\t\tdayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],\n\t\tdayNamesShort: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tdayNamesMin: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['he']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hi.js",
    "content": "/* Hindi initialisation for the jQuery UI date picker plugin. */\n/* Written by Michael Dawart. */\njQuery(function($){\n\t$.datepicker.regional['hi'] = {\n\t\tcloseText: 'बंद',\n\t\tprevText: 'पिछला',\n\t\tnextText: 'अगला',\n\t\tcurrentText: 'आज',\n\t\tmonthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',\n\t\t'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],\n\t\tmonthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',\n\t\t'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],\n\t\tdayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],\n\t\tdayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tdayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tweekHeader: 'हफ्ता',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hi']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js",
    "content": "/* Croatian i18n for the jQuery UI date picker plugin. */\n/* Written by Vjekoslav Nesek. */\njQuery(function($){\n\t$.datepicker.regional['hr'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',\n\t\t'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],\n\t\tmonthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',\n\t\t'Srp','Kol','Ruj','Lis','Stu','Pro'],\n\t\tdayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Tje',\n\t\tdateFormat: 'dd.mm.yy.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hr']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js",
    "content": "/* Hungarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */\njQuery(function($){\n\t$.datepicker.regional['hu'] = {\n\t\tcloseText: 'bezár',\n\t\tprevText: 'vissza',\n\t\tnextText: 'előre',\n\t\tcurrentText: 'ma',\n\t\tmonthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',\n\t\t'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',\n\t\t'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],\n\t\tdayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],\n\t\tdayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],\n\t\tdayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n\t\tweekHeader: 'Hét',\n\t\tdateFormat: 'yy.mm.dd.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hu']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js",
    "content": "/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/\njQuery(function($){\n\t$.datepicker.regional['hy'] = {\n\t\tcloseText: 'Փակել',\n\t\tprevText: '&#x3C;Նախ.',\n\t\tnextText: 'Հաջ.&#x3E;',\n\t\tcurrentText: 'Այսօր',\n\t\tmonthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',\n\t\t'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],\n\t\tmonthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',\n\t\t'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],\n\t\tdayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],\n\t\tdayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tdayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tweekHeader: 'ՇԲՏ',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hy']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-id.js",
    "content": "/* Indonesian initialisation for the jQuery UI date picker plugin. */\n/* Written by Deden Fathurahman (dedenf@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['id'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;mundur',\n\t\tnextText: 'maju&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Maret','April','Mei','Juni',\n\t\t'Juli','Agustus','September','Oktober','Nopember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Agus','Sep','Okt','Nop','Des'],\n\t\tdayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],\n\t\tdayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],\n\t\tdayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['id']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-is.js",
    "content": "/* Icelandic initialisation for the jQuery UI date picker plugin. */\n/* Written by Haukur H. Thorsson (haukur@eskill.is). */\njQuery(function($){\n\t$.datepicker.regional['is'] = {\n\t\tcloseText: 'Loka',\n\t\tprevText: '&#x3C; Fyrri',\n\t\tnextText: 'Næsti &#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',\n\t\t'Júlí','Ágúst','September','Október','Nóvember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',\n\t\t'Júl','Ágú','Sep','Okt','Nóv','Des'],\n\t\tdayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],\n\t\tdayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],\n\t\tweekHeader: 'Vika',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['is']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-it.js",
    "content": "/* Italian initialisation for the jQuery UI date picker plugin. */\n/* Written by Antonello Pasella (antonello.pasella@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['it'] = {\n\t\tcloseText: 'Chiudi',\n\t\tprevText: '&#x3C;Prec',\n\t\tnextText: 'Succ&#x3E;',\n\t\tcurrentText: 'Oggi',\n\t\tmonthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',\n\t\t\t'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],\n\t\tmonthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',\n\t\t\t'Lug','Ago','Set','Ott','Nov','Dic'],\n\t\tdayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['it']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js",
    "content": "/* Japanese initialisation for the jQuery UI date picker plugin. */\n/* Written by Kentaro SATO (kentaro@ranvis.com). */\njQuery(function($){\n\t$.datepicker.regional['ja'] = {\n\t\tcloseText: '閉じる',\n\t\tprevText: '&#x3C;前',\n\t\tnextText: '次&#x3E;',\n\t\tcurrentText: '今日',\n\t\tmonthNames: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tmonthNamesShort: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tdayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],\n\t\tdayNamesShort: ['日','月','火','水','木','金','土'],\n\t\tdayNamesMin: ['日','月','火','水','木','金','土'],\n\t\tweekHeader: '週',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['ja']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ka.js",
    "content": "/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Lado Lomidze (lado.lomidze@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ka'] = {\n\t\tcloseText: 'დახურვა',\n\t\tprevText: '&#x3c; წინა',\n\t\tnextText: 'შემდეგი &#x3e;',\n\t\tcurrentText: 'დღეს',\n\t\tmonthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],\n\t\tmonthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],\n\t\tdayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],\n\t\tdayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tdayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tweekHeader: 'კვირა',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ka']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-kk.js",
    "content": "/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['kk'] = {\n\t\tcloseText: 'Жабу',\n\t\tprevText: '&#x3C;Алдыңғы',\n\t\tnextText: 'Келесі&#x3E;',\n\t\tcurrentText: 'Бүгін',\n\t\tmonthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',\n\t\t'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],\n\t\tmonthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',\n\t\t'Шіл','Там','Қыр','Қаз','Қар','Жел'],\n\t\tdayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],\n\t\tdayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],\n\t\tdayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['kk']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-km.js",
    "content": "/* Khmer initialisation for the jQuery calendar extension. */\n/* Written by Chandara Om (chandara.teacher@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['km'] = {\n\t\tcloseText: 'ធ្វើ​រួច',\n\t\tprevText: 'មុន',\n\t\tnextText: 'បន្ទាប់',\n\t\tcurrentText: 'ថ្ងៃ​នេះ',\n\t\tmonthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tmonthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tdayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],\n\t\tdayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tdayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tweekHeader: 'សប្ដាហ៍',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['km']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js",
    "content": "/* Korean initialisation for the jQuery calendar extension. */\n/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */\njQuery(function($){\n\t$.datepicker.regional['ko'] = {\n\t\tcloseText: '닫기',\n\t\tprevText: '이전달',\n\t\tnextText: '다음달',\n\t\tcurrentText: '오늘',\n\t\tmonthNames: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tmonthNamesShort: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tdayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],\n\t\tdayNamesShort: ['일','월','화','수','목','금','토'],\n\t\tdayNamesMin: ['일','월','화','수','목','금','토'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '년'};\n\t$.datepicker.setDefaults($.datepicker.regional['ko']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lb.js",
    "content": "/* Luxembourgish initialisation for the jQuery UI date picker plugin. */\n/* Written by Michel Weimerskirch <michel@weimerskirch.net> */\njQuery(function($){\n\t$.datepicker.regional['lb'] = {\n\t\tcloseText: 'Fäerdeg',\n\t\tprevText: 'Zréck',\n\t\tnextText: 'Weider',\n\t\tcurrentText: 'Haut',\n\t\tmonthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n\t\tdayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],\n\t\tdayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],\n\t\tdayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],\n\t\tweekHeader: 'W',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lb']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js",
    "content": "/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas@avalon.lt> */\njQuery(function($){\n\t$.datepicker.regional['lt'] = {\n\t\tcloseText: 'Uždaryti',\n\t\tprevText: '&#x3C;Atgal',\n\t\tnextText: 'Pirmyn&#x3E;',\n\t\tcurrentText: 'Šiandien',\n\t\tmonthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',\n\t\t'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],\n\t\tmonthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',\n\t\t'Lie','Rugp','Rugs','Spa','Lap','Gru'],\n\t\tdayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],\n\t\tdayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],\n\t\tdayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lt']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js",
    "content": "/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */\njQuery(function($){\n\t$.datepicker.regional['lv'] = {\n\t\tcloseText: 'Aizvērt',\n\t\tprevText: 'Iepr',\n\t\tnextText: 'Nāka',\n\t\tcurrentText: 'Šodien',\n\t\tmonthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',\n\t\t'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',\n\t\t'Jūl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],\n\t\tdayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],\n\t\tdayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],\n\t\tweekHeader: 'Nav',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lv']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-mk.js",
    "content": "/* Macedonian i18n for the jQuery UI date picker plugin. */\n/* Written by Stojce Slavkovski. */\njQuery(function($){\n\t$.datepicker.regional['mk'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Денес',\n\t\tmonthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',\n\t\t'Јули','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Ное','Дек'],\n\t\tdayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['mk']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ml.js",
    "content": "/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Saji Nediyanchath (saji89@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ml'] = {\n\t\tcloseText: 'ശരി',\n\t\tprevText: 'മുന്നത്തെ',\n\t\tnextText: 'അടുത്തത് ',\n\t\tcurrentText: 'ഇന്ന്',\n\t\tmonthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',\n\t\t'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],\n\t\tmonthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',\n\t\t'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],\n\t\tdayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],\n\t\tweekHeader: 'ആ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ml']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js",
    "content": "/* Malaysian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */\njQuery(function($){\n\t$.datepicker.regional['ms'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;Sebelum',\n\t\tnextText: 'Selepas&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Mac','April','Mei','Jun',\n\t\t'Julai','Ogos','September','Oktober','November','Disember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',\n\t\t'Jul','Ogo','Sep','Okt','Nov','Dis'],\n\t\tdayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],\n\t\tdayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],\n\t\tdayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ms']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl-BE.js",
    "content": "/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */\n/* David De Sloovere @DavidDeSloovere */\njQuery(function($){\n\t$.datepicker.regional['nl-BE'] = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['nl-BE']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js",
    "content": "/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Mathias Bynens <http://mathiasbynens.be/> */\njQuery(function($){\n\t$.datepicker.regional.nl = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional.nl);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-no.js",
    "content": "/* Norwegian initialisation for the jQuery UI date picker plugin. */\n/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */\n\njQuery(function($){\n\t$.datepicker.regional['no'] = {\n\t\tcloseText: 'Lukk',\n\t\tprevText: '&#xAB;Forrige',\n\t\tnextText: 'Neste&#xBB;',\n\t\tcurrentText: 'I dag',\n\t\tmonthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],\n\t\tmonthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],\n\t\tdayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],\n\t\tdayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],\n\t\tdayNamesMin: ['sø','ma','ti','on','to','fr','lø'],\n\t\tweekHeader: 'Uke',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''\n\t};\n\t$.datepicker.setDefaults($.datepicker.regional['no']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js",
    "content": "/* Polish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pl'] = {\n\t\tcloseText: 'Zamknij',\n\t\tprevText: '&#x3C;Poprzedni',\n\t\tnextText: 'Następny&#x3E;',\n\t\tcurrentText: 'Dziś',\n\t\tmonthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',\n\t\t'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],\n\t\tmonthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',\n\t\t'Lip','Sie','Wrz','Pa','Lis','Gru'],\n\t\tdayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],\n\t\tdayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],\n\t\tdayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],\n\t\tweekHeader: 'Tydz',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pl']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js",
    "content": "/* Brazilian initialisation for the jQuery UI date picker plugin. */\n/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pt-BR'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Próximo&#x3E;',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt-BR']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt.js",
    "content": "/* Portuguese initialisation for the jQuery UI date picker plugin. */\njQuery(function($){\n\t$.datepicker.regional['pt'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Seguinte',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sem',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-rm.js",
    "content": "/* Romansh initialisation for the jQuery UI date picker plugin. */\n/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */\njQuery(function($){\n\t$.datepicker.regional['rm'] = {\n\t\tcloseText: 'Serrar',\n\t\tprevText: '&#x3C;Suandant',\n\t\tnextText: 'Precedent&#x3E;',\n\t\tcurrentText: 'Actual',\n\t\tmonthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],\n\t\tmonthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],\n\t\tdayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],\n\t\tdayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],\n\t\tdayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],\n\t\tweekHeader: 'emna',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['rm']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js",
    "content": "/* Romanian initialisation for the jQuery UI date picker plugin.\n *\n * Written by Edmond L. (ll_edmond@walla.com)\n * and Ionut G. Stan (ionut.g.stan@gmail.com)\n */\njQuery(function($){\n\t$.datepicker.regional['ro'] = {\n\t\tcloseText: 'Închide',\n\t\tprevText: '&#xAB; Luna precedentă',\n\t\tnextText: 'Luna următoare &#xBB;',\n\t\tcurrentText: 'Azi',\n\t\tmonthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',\n\t\t'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],\n\t\tmonthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',\n\t\t'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],\n\t\tdayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],\n\t\tdayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],\n\t\tweekHeader: 'Săpt',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ro']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js",
    "content": "/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Andrew Stromnov (stromnov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ru'] = {\n\t\tcloseText: 'Закрыть',\n\t\tprevText: '&#x3C;Пред',\n\t\tnextText: 'След&#x3E;',\n\t\tcurrentText: 'Сегодня',\n\t\tmonthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',\n\t\t'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],\n\t\tdayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Нед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ru']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js",
    "content": "/* Slovak initialisation for the jQuery UI date picker plugin. */\n/* Written by Vojtech Rinik (vojto@hmm.sk). */\njQuery(function($){\n\t$.datepicker.regional['sk'] = {\n\t\tcloseText: 'Zavrieť',\n\t\tprevText: '&#x3C;Predchádzajúci',\n\t\tnextText: 'Nasledujúci&#x3E;',\n\t\tcurrentText: 'Dnes',\n\t\tmonthNames: ['Január','Február','Marec','Apríl','Máj','Jún',\n\t\t'Júl','August','September','Október','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',\n\t\t'Júl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],\n\t\tdayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],\n\t\tweekHeader: 'Ty',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sk']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js",
    "content": "/* Slovenian initialisation for the jQuery UI date picker plugin. */\n/* Written by Jaka Jancar (jaka@kubje.org). */\n/* c = č, s = š z = ž C = Č S = Š Z = Ž */\njQuery(function($){\n\t$.datepicker.regional['sl'] = {\n\t\tcloseText: 'Zapri',\n\t\tprevText: '&#x3C;Prejšnji',\n\t\tnextText: 'Naslednji&#x3E;',\n\t\tcurrentText: 'Trenutni',\n\t\tmonthNames: ['Januar','Februar','Marec','April','Maj','Junij',\n\t\t'Julij','Avgust','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],\n\t\tdayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],\n\t\tweekHeader: 'Teden',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sl']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js",
    "content": "/* Albanian initialisation for the jQuery UI date picker plugin. */\n/* Written by Flakron Bytyqi (flakron@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['sq'] = {\n\t\tcloseText: 'mbylle',\n\t\tprevText: '&#x3C;mbrapa',\n\t\tnextText: 'Përpara&#x3E;',\n\t\tcurrentText: 'sot',\n\t\tmonthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',\n\t\t'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],\n\t\tmonthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',\n\t\t'Kor','Gus','Sht','Tet','Nën','Dhj'],\n\t\tdayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],\n\t\tdayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tdayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tweekHeader: 'Ja',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sq']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js",
    "content": "/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr-SR'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Jun',\n\t\t'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Sed',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr-SR']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js",
    "content": "/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Данас',\n\t\tmonthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',\n\t\t'Јул','Август','Септембар','Октобар','Новембар','Децембар'],\n\t\tmonthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Нов','Дец'],\n\t\tdayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],\n\t\tdayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],\n\t\tdayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js",
    "content": "/* Swedish initialisation for the jQuery UI date picker plugin. */\n/* Written by Anders Ekdahl ( anders@nomadiz.se). */\njQuery(function($){\n\t$.datepicker.regional['sv'] = {\n\t\tcloseText: 'Stäng',\n\t\tprevText: '&#xAB;Förra',\n\t\tnextText: 'Nästa&#xBB;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januari','Februari','Mars','April','Maj','Juni',\n\t\t'Juli','Augusti','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],\n\t\tdayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],\n\t\tdayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],\n\t\tweekHeader: 'Ve',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sv']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js",
    "content": "/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by S A Sureshkumar (saskumar@live.com). */\njQuery(function($){\n\t$.datepicker.regional['ta'] = {\n\t\tcloseText: 'மூடு',\n\t\tprevText: 'முன்னையது',\n\t\tnextText: 'அடுத்தது',\n\t\tcurrentText: 'இன்று',\n\t\tmonthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',\n\t\t'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],\n\t\tmonthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',\n\t\t'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],\n\t\tdayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],\n\t\tdayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],\n\t\tdayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ta']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-th.js",
    "content": "/* Thai initialisation for the jQuery UI date picker plugin. */\n/* Written by pipo (pipo@sixhead.com). */\njQuery(function($){\n\t$.datepicker.regional['th'] = {\n\t\tcloseText: 'ปิด',\n\t\tprevText: '&#xAB;&#xA0;ย้อน',\n\t\tnextText: 'ถัดไป&#xA0;&#xBB;',\n\t\tcurrentText: 'วันนี้',\n\t\tmonthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',\n\t\t'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],\n\t\tmonthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',\n\t\t'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],\n\t\tdayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],\n\t\tdayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tdayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['th']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tj.js",
    "content": "/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Abdurahmon Saidov (saidovab@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['tj'] = {\n\t\tcloseText: 'Идома',\n\t\tprevText: '&#x3c;Қафо',\n\t\tnextText: 'Пеш&#x3e;',\n\t\tcurrentText: 'Имрӯз',\n\t\tmonthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',\n\t\t'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],\n\t\tdayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],\n\t\tdayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],\n\t\tweekHeader: 'Хф',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tj']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js",
    "content": "/* Turkish initialisation for the jQuery UI date picker plugin. */\n/* Written by Izzet Emre Erkan (kara@karalamalar.net). */\njQuery(function($){\n\t$.datepicker.regional['tr'] = {\n\t\tcloseText: 'kapat',\n\t\tprevText: '&#x3C;geri',\n\t\tnextText: 'ileri&#x3e',\n\t\tcurrentText: 'bugün',\n\t\tmonthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',\n\t\t'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],\n\t\tmonthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',\n\t\t'Tem','Ağu','Eyl','Eki','Kas','Ara'],\n\t\tdayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],\n\t\tdayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tdayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tr']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js",
    "content": "/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */\n/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['uk'] = {\n\t\tcloseText: 'Закрити',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Сьогодні',\n\t\tmonthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',\n\t\t'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],\n\t\tmonthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',\n\t\t'Лип','Сер','Вер','Жов','Лис','Гру'],\n\t\tdayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],\n\t\tdayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Тиж',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['uk']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js",
    "content": "/* Vietnamese initialisation for the jQuery UI date picker plugin. */\n/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */\njQuery(function($){\n\t$.datepicker.regional['vi'] = {\n\t\tcloseText: 'Đóng',\n\t\tprevText: '&#x3C;Trước',\n\t\tnextText: 'Tiếp&#x3E;',\n\t\tcurrentText: 'Hôm nay',\n\t\tmonthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',\n\t\t'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],\n\t\tmonthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',\n\t\t'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n\t\tdayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n\t\tdayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tdayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tweekHeader: 'Tu',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['vi']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Cloudream (cloudream@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-CN'] = {\n\t\tcloseText: '关闭',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-CN']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by SCCY (samuelcychan@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-HK'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-HK']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Ressol (ressol@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-TW'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-TW']);\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery-ui.custom.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.accordion.js",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/accordion/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.autocomplete.js",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/autocomplete/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n *\tjquery.ui.menu.js\n */\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.button.js",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/button/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.core.js",
    "content": "/*!\n * jQuery UI Core 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.datepicker.js",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/datepicker/\n *\n * Depends:\n *\tjquery.ui.core.js\n */\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.dialog.js",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/dialog/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *  jquery.ui.button.js\n *\tjquery.ui.draggable.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.position.js\n *\tjquery.ui.resizable.js\n */\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.draggable.js",
    "content": "/*!\n * jQuery UI Draggable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/draggable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.droppable.js",
    "content": "/*!\n * jQuery UI Droppable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/droppable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.draggable.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-blind.js",
    "content": "/*!\n * jQuery UI Effects Blind 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/blind-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-bounce.js",
    "content": "/*!\n * jQuery UI Effects Bounce 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/bounce-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-clip.js",
    "content": "/*!\n * jQuery UI Effects Clip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/clip-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-drop.js",
    "content": "/*!\n * jQuery UI Effects Drop 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/drop-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-explode.js",
    "content": "/*!\n * jQuery UI Effects Explode 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/explode-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fade.js",
    "content": "/*!\n * jQuery UI Effects Fade 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fade-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fold.js",
    "content": "/*!\n * jQuery UI Effects Fold 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fold-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-highlight.js",
    "content": "/*!\n * jQuery UI Effects Highlight 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/highlight-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-pulsate.js",
    "content": "/*!\n * jQuery UI Effects Pulsate 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/pulsate-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-scale.js",
    "content": "/*!\n * jQuery UI Effects Scale 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/scale-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-shake.js",
    "content": "/*!\n * jQuery UI Effects Shake 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/shake-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-slide.js",
    "content": "/*!\n * jQuery UI Effects Slide 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slide-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-transfer.js",
    "content": "/*!\n * jQuery UI Effects Transfer 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/transfer-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect.js",
    "content": "/*!\n * jQuery UI Effects 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/effects-core/\n */\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.menu.js",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.mouse.js",
    "content": "/*!\n * jQuery UI Mouse 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/mouse/\n *\n * Depends:\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.position.js",
    "content": "/*!\n * jQuery UI Position 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.progressbar.js",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/progressbar/\n *\n * Depends:\n *   jquery.ui.core.js\n *   jquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.resizable.js",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/resizable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.selectable.js",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.slider.js",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.sortable.js",
    "content": "/*!\n * jQuery UI Sortable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/sortable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.spinner.js",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/spinner/\n *\n * Depends:\n *  jquery.ui.core.js\n *  jquery.ui.widget.js\n *  jquery.ui.button.js\n */\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tabs.js",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tabs/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tooltip.js",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tooltip/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.widget.js",
    "content": "/*!\n * jQuery UI Widget 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/jQuery.widget/\n */\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.accordion.jquery.json",
    "content": "{\n\t\"name\": \"ui.accordion\",\n\t\"title\": \"jQuery UI Accordion\",\n\t\"description\": \"Displays collapsible content panels for presenting information in a limited amount of space.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"accordion\",\n\t\t\"navigation\",\n\t\t\"panel\",\n\t\t\"collapse\",\n\t\t\"expand\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/accordion/\",\n\t\"demo\": \"http://jqueryui.com/accordion/\",\n\t\"docs\": \"http://api.jqueryui.com/accordion/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.autocomplete.jquery.json",
    "content": "{\n\t\"name\": \"ui.autocomplete\",\n\t\"title\": \"jQuery UI Autocomplete\",\n\t\"description\": \"Lists suggested words as the user is typing.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"autocomplete\",\n\t\t\"form\",\n\t\t\"word\",\n\t\t\"predict\",\n\t\t\"suggest\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/autocomplete/\",\n\t\"demo\": \"http://jqueryui.com/autocomplete/\",\n\t\"docs\": \"http://api.jqueryui.com/autocomplete/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.menu\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.button.jquery.json",
    "content": "{\n\t\"name\": \"ui.button\",\n\t\"title\": \"jQuery UI Button\",\n\t\"description\": \"Enhances a form with themable buttons.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"button\",\n\t\t\"form\",\n\t\t\"radio\",\n\t\t\"checkbox\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/button/\",\n\t\"demo\": \"http://jqueryui.com/button/\",\n\t\"docs\": \"http://api.jqueryui.com/button/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.core.jquery.json",
    "content": "{\n\t\"name\": \"ui.core\",\n\t\"title\": \"jQuery UI Core\",\n\t\"description\": \"The core of jQuery UI, required for all interactions and widgets.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"core\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/\",\n\t\"demo\": \"http://jqueryui.com/\",\n\t\"docs\": \"http://api.jqueryui.com/category/ui-core/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.datepicker.jquery.json",
    "content": "{\n\t\"name\": \"ui.datepicker\",\n\t\"title\": \"jQuery UI Datepicker\",\n\t\"description\": \"Displays a calendar from an input or inline for selecting dates.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"datepicker\",\n\t\t\"form\",\n\t\t\"calendar\",\n\t\t\"date\",\n\t\t\"i18n\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/datepicker/\",\n\t\"demo\": \"http://jqueryui.com/datepicker/\",\n\t\"docs\": \"http://api.jqueryui.com/datepicker/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.dialog.jquery.json",
    "content": "{\n\t\"name\": \"ui.dialog\",\n\t\"title\": \"jQuery UI Dialog\",\n\t\"description\": \"Displays customizable dialog windows.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"dialog\",\n\t\t\"modal\",\n\t\t\"alert\",\n\t\t\"popup\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/dialog/\",\n\t\"demo\": \"http://jqueryui.com/dialog/\",\n\t\"docs\": \"http://api.jqueryui.com/dialog/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.button\": \"1.9.2\",\n\t\t\"ui.draggable\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\",\n\t\t\"ui.resizable\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.draggable.jquery.json",
    "content": "{\n\t\"name\": \"ui.draggable\",\n\t\"title\": \"jQuery UI Draggable\",\n\t\"description\": \"Enables dragging functionality for any element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"draggable\",\n\t\t\"drag\",\n\t\t\"drop\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/draggable/\",\n\t\"demo\": \"http://jqueryui.com/draggable/\",\n\t\"docs\": \"http://api.jqueryui.com/draggable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.droppable.jquery.json",
    "content": "{\n\t\"name\": \"ui.droppable\",\n\t\"title\": \"jQuery UI Droppable\",\n\t\"description\": \"Enables drop targets for draggable elements.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"droppable\",\n\t\t\"drag\",\n\t\t\"drop\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/droppable/\",\n\t\"demo\": \"http://jqueryui.com/droppable/\",\n\t\"docs\": \"http://api.jqueryui.com/droppable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\",\n\t\t\"ui.draggable\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-blind.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-blind\",\n\t\"title\": \"jQuery UI Blind Effect\",\n\t\"description\": \"Blinds the element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"blind\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/blind-effect/\",\n\t\"demo\": \"http://jqueryui.com/blind-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/blind-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-bounce.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-bounce\",\n\t\"title\": \"jQuery UI Bounce Effect\",\n\t\"description\": \"Bounces an element horizontally or vertically n times.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"bounce\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/bounce-effect/\",\n\t\"demo\": \"http://jqueryui.com/bounce-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/bounce-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-clip.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-clip\",\n\t\"title\": \"jQuery UI Clip Effect\",\n\t\"description\": \"Clips the element on and off like an old TV.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"clip\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/clip-effect/\",\n\t\"demo\": \"http://jqueryui.com/clip-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/clip-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-drop.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-drop\",\n\t\"title\": \"jQuery UI Drop Effect\",\n\t\"description\": \"Moves an element in one direction and hides it at the same time.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"drop\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/drop-effect/\",\n\t\"demo\": \"http://jqueryui.com/drop-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/drop-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-explode.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-explode\",\n\t\"title\": \"jQuery UI Explode Effect\",\n\t\"description\": \"Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"explode\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/explode-effect/\",\n\t\"demo\": \"http://jqueryui.com/explode-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/explode-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fade.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-fade\",\n\t\"title\": \"jQuery UI Fade Effect\",\n\t\"description\": \"Fades an element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"fade\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/fade-effect/\",\n\t\"demo\": \"http://jqueryui.com/fade-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/fade-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fold.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-fold\",\n\t\"title\": \"jQuery UI Fold Effect\",\n\t\"description\": \"Folds an element first horizontally and then vertically.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"fold\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/fold-effect/\",\n\t\"demo\": \"http://jqueryui.com/fold-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/fold-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-highlight.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-highlight\",\n\t\"title\": \"jQuery UI Highlight Effect\",\n\t\"description\": \"Highlights the background of an element in a defined color for a custom duration.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"highlight\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/highlight-effect/\",\n\t\"demo\": \"http://jqueryui.com/highlight-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/highlight-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-pulsate.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-pulsate\",\n\t\"title\": \"jQuery UI Pulsate Effect\",\n\t\"description\": \"Pulsates an element n times by changing the opacity to zero and back.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"pulsate\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/pulsate-effect/\",\n\t\"demo\": \"http://jqueryui.com/pulsate-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/pulsate-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-scale.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-scale\",\n\t\"title\": \"jQuery UI Scale Effect\",\n\t\"description\": \"Grows or shrinks an element and its content. Restores an elemnt to its original size.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"scale\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/scale-effect/\",\n\t\"demo\": \"http://jqueryui.com/scale-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/scale-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-shake.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-shake\",\n\t\"title\": \"jQuery UI Shake Effect\",\n\t\"description\": \"Shakes an element horizontally or vertically n times.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"shake\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/shake-effect/\",\n\t\"demo\": \"http://jqueryui.com/shake-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/shake-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-slide.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-slide\",\n\t\"title\": \"jQuery UI Slide Effect\",\n\t\"description\": \"Slides an element in and out of the viewport.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"slide\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/slide-effect/\",\n\t\"demo\": \"http://jqueryui.com/slide-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/slide-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-transfer.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-transfer\",\n\t\"title\": \"jQuery UI Transfer Effect\",\n\t\"description\": \"Displays a transfer effect from one element to another.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"transfer\",\n\t\t\"effect\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/transfer-effect/\",\n\t\"demo\": \"http://jqueryui.com/transfer-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/transfer-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect\",\n\t\"title\": \"jQuery UI Effects Core\",\n\t\"description\": \"Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"effect\",\n\t\t\"animation\",\n\t\t\"show\",\n\t\t\"hide\",\n\t\t\"color\",\n\t\t\"class\",\n\t\t\"transition\",\n\t\t\"easing\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/\",\n\t\"demo\": \"http://jqueryui.com/effects/\",\n\t\"docs\": \"http://api.jqueryui.com/category/effects-core/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.menu.jquery.json",
    "content": "{\n\t\"name\": \"ui.menu\",\n\t\"title\": \"jQuery UI Menu\",\n\t\"description\": \"Creates nestable menus.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"menu\",\n\t\t\"dropdown\",\n\t\t\"flyout\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/menu/\",\n\t\"demo\": \"http://jqueryui.com/menu/\",\n\t\"docs\": \"http://api.jqueryui.com/menu/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.mouse.jquery.json",
    "content": "{\n\t\"name\": \"ui.mouse\",\n\t\"title\": \"jQuery UI Mouse\",\n\t\"description\": \"Abstracts mouse-based interactions to assist in creating certain widgets.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"mouse\",\n\t\t\"abstraction\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/mouse/\",\n\t\"demo\": \"http://jqueryui.com/mouse/\",\n\t\"docs\": \"http://api.jqueryui.com/mouse/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.position.jquery.json",
    "content": "{\n\t\"name\": \"ui.position\",\n\t\"title\": \"jQuery UI Position\",\n\t\"description\": \"Positions elements relative to other elements.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"position\",\n\t\t\"offset\",\n\t\t\"relative\",\n\t\t\"absolute\",\n\t\t\"fixed\",\n\t\t\"collision\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/position/\",\n\t\"demo\": \"http://jqueryui.com/position/\",\n\t\"docs\": \"http://api.jqueryui.com/position/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.progressbar.jquery.json",
    "content": "{\n\t\"name\": \"ui.progressbar\",\n\t\"title\": \"jQuery UI Progressbar\",\n\t\"description\": \"Displays a status indicator for loading state, standard percentage, and other progress indicators.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"progressbar\",\n\t\t\"determinate\",\n\t\t\"status\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/progressbar/\",\n\t\"demo\": \"http://jqueryui.com/progressbar/\",\n\t\"docs\": \"http://api.jqueryui.com/progressbar/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.resizable.jquery.json",
    "content": "{\n\t\"name\": \"ui.resizable\",\n\t\"title\": \"jQuery UI Resizable\",\n\t\"description\": \"Enables resize functionality for any element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"resizable\",\n\t\t\"resize\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/resizable/\",\n\t\"demo\": \"http://jqueryui.com/resizable/\",\n\t\"docs\": \"http://api.jqueryui.com/resizable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.selectable.jquery.json",
    "content": "{\n\t\"name\": \"ui.selectable\",\n\t\"title\": \"jQuery UI Selectable\",\n\t\"description\": \"Allows groups of elements to be selected with the mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"selectable\",\n\t\t\"selection\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/selectable/\",\n\t\"demo\": \"http://jqueryui.com/selectable/\",\n\t\"docs\": \"http://api.jqueryui.com/selectable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.slider.jquery.json",
    "content": "{\n\t\"name\": \"ui.slider\",\n\t\"title\": \"jQuery UI Slider\",\n\t\"description\": \"Displays a flexible slider with ranges and accessibility via keyboard.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"slider\",\n\t\t\"form\",\n\t\t\"number\",\n\t\t\"range\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/slider/\",\n\t\"demo\": \"http://jqueryui.com/slider/\",\n\t\"docs\": \"http://api.jqueryui.com/slider/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.sortable.jquery.json",
    "content": "{\n\t\"name\": \"ui.sortable\",\n\t\"title\": \"jQuery UI Sortable\",\n\t\"description\": \"Enables items in a list to be sorted using the mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"sortable\",\n\t\t\"sort\",\n\t\t\"list\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/sortable/\",\n\t\"demo\": \"http://jqueryui.com/sortable/\",\n\t\"docs\": \"http://api.jqueryui.com/sortable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.spinner.jquery.json",
    "content": "{\n\t\"name\": \"ui.spinner\",\n\t\"title\": \"jQuery UI Spinner\",\n\t\"description\": \"Displays buttons to easily input numbers via the keyboard or mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"spinner\",\n\t\t\"form\",\n\t\t\"number\",\n\t\t\"spinbutton\",\n\t\t\"stepper\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/spinner/\",\n\t\"demo\": \"http://jqueryui.com/spinner/\",\n\t\"docs\": \"http://api.jqueryui.com/spinner/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.button\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tabs.jquery.json",
    "content": "{\n\t\"name\": \"ui.tabs\",\n\t\"title\": \"jQuery UI Tabs\",\n\t\"description\": \"Transforms a set of container elements into a tab structure.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"tabs\",\n\t\t\"navigation\",\n\t\t\"panel\",\n\t\t\"collapse\",\n\t\t\"expand\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/tabs/\",\n\t\"demo\": \"http://jqueryui.com/tabs/\",\n\t\"docs\": \"http://api.jqueryui.com/tabs/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tooltip.jquery.json",
    "content": "{\n\t\"name\": \"ui.tooltip\",\n\t\"title\": \"jQuery UI Tooltip\",\n\t\"description\": \"Shows additional information for any element on hover or focus.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"tooltip\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/tooltip/\",\n\t\"demo\": \"http://jqueryui.com/tooltip/\",\n\t\"docs\": \"http://api.jqueryui.com/tooltip/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.widget.jquery.json",
    "content": "{\n\t\"name\": \"ui.widget\",\n\t\"title\": \"jQuery UI Widget\",\n\t\"description\": \"Provides a factory for creating stateful widgets with a common API.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"widget\",\n\t\t\"abstraction\",\n\t\t\"state\",\n\t\t\"factory\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/widget/\",\n\t\"demo\": \"http://jqueryui.com/widget/\",\n\t\"docs\": \"http://api.jqueryui.com/jQuery.widget/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/index.html",
    "content": "<!doctype html>\n<html lang=\"us\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Example Page</title>\n\t<link href=\"css/ui-lightness/jquery-ui-1.9.2.custom.css\" rel=\"stylesheet\">\n\t<script src=\"js/jquery-1.8.3.js\"></script>\n\t<script src=\"js/jquery-ui-1.9.2.custom.js\"></script>\n\t<script>\n\t$(function() {\n\t\t\n\t\t$( \"#accordion\" ).accordion();\n\t\t\n\n\t\t\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#autocomplete\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#button\" ).button();\n\t\t$( \"#radioset\" ).buttonset();\n\t\t\n\n\t\t\n\t\t$( \"#tabs\" ).tabs();\n\t\t\n\n\t\t\n\t\t$( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\twidth: 400,\n\t\t\tbuttons: [\n\t\t\t\t{\n\t\t\t\t\ttext: \"Ok\",\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: \"Cancel\",\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\n\t\t// Link to open the dialog\n\t\t$( \"#dialog-link\" ).click(function( event ) {\n\t\t\t$( \"#dialog\" ).dialog( \"open\" );\n\t\t\tevent.preventDefault();\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tinline: true\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#slider\" ).slider({\n\t\t\trange: true,\n\t\t\tvalues: [ 17, 67 ]\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 20\n\t\t});\n\t\t\n\n\t\t// Hover states on the static widgets\n\t\t$( \"#dialog-link, #icons li\" ).hover(\n\t\t\tfunction() {\n\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tfunction() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t);\n\t});\n\t</script>\n\t<style>\n\tbody{\n\t\tfont: 62.5% \"Trebuchet MS\", sans-serif;\n\t\tmargin: 50px;\n\t}\n\t.demoHeaders {\n\t\tmargin-top: 2em;\n\t}\n\t#dialog-link {\n\t\tpadding: .4em 1em .4em 20px;\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t}\n\t#dialog-link span.ui-icon {\n\t\tmargin: 0 5px 0 0;\n\t\tposition: absolute;\n\t\tleft: .2em;\n\t\ttop: 50%;\n\t\tmargin-top: -8px;\n\t}\n\t#icons {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t#icons li {\n\t\tmargin: 2px;\n\t\tposition: relative;\n\t\tpadding: 4px 0;\n\t\tcursor: pointer;\n\t\tfloat: left;\n\t\tlist-style: none;\n\t}\n\t#icons span.ui-icon {\n\t\tfloat: left;\n\t\tmargin: 0 4px;\n\t}\n\t</style>\n</head>\n<body>\n\n<h1>Welcome to jQuery UI!</h1>\n\n<div class=\"ui-widget\">\n\t<p>This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of <a href=\"js/jquery-1.8.3.js\">jQuery</a>, your personalized copy of <a href=\"js/jquery-ui-1.9.2.custom.min.js\">jQuery UI (js/jquery-ui-1.9.2.custom.min.js)</a>, and <a href=\"css/ui-lightness/jquery-ui-1.9.2.custom.min.css\">css/ui-lightness/jquery-ui-1.9.2.custom.min.css</a> which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs. </p>\n\t<p>You've downloaded components and a theme that are compatible with jQuery 1.6+. Please make sure you are using jQuery 1.6+ in your production environment.</p>\n</div>\n\n<h1>YOUR COMPONENTS:</h1>\n\n\n<!-- Accordion -->\n<h2 class=\"demoHeaders\">Accordion</h2>\n<div id=\"accordion\">\n\t<h3>First</h3>\n\t<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>\n\t<h3>Second</h3>\n\t<div>Phasellus mattis tincidunt nibh.</div>\n\t<h3>Third</h3>\n\t<div>Nam dui erat, auctor a, dignissim quis.</div>\n</div>\n\n\n\n<!-- Autocomplete -->\n<h2 class=\"demoHeaders\">Autocomplete</h2>\n<div>\n\t<input id=\"autocomplete\" title=\"type &quot;a&quot;\">\n</div>\n\n\n\n<!-- Button -->\n<h2 class=\"demoHeaders\">Button</h2>\n<button id=\"button\">A button element</button>\n<form style=\"margin-top: 1em;\">\n\t<div id=\"radioset\">\n\t\t<input type=\"radio\" id=\"radio1\" name=\"radio\"><label for=\"radio1\">Choice 1</label>\n\t\t<input type=\"radio\" id=\"radio2\" name=\"radio\" checked=\"checked\"><label for=\"radio2\">Choice 2</label>\n\t\t<input type=\"radio\" id=\"radio3\" name=\"radio\"><label for=\"radio3\">Choice 3</label>\n\t</div>\n</form>\n\n\n\n<!-- Tabs -->\n<h2 class=\"demoHeaders\">Tabs</h2>\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">First</a></li>\n\t\t<li><a href=\"#tabs-2\">Second</a></li>\n\t\t<li><a href=\"#tabs-3\">Third</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>\n\t<div id=\"tabs-2\">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>\n\t<div id=\"tabs-3\">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>\n</div>\n\n\n\n<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->\n<h2 class=\"demoHeaders\">Dialog</h2>\n<p><a href=\"#\" id=\"dialog-link\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-newwin\"></span>Open Dialog</a></p>\n\n<h2 class=\"demoHeaders\">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>\n<div style=\"position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;\" class=\"fakewindowcontain\">\n\t<p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>\n\n\t<!-- ui-dialog -->\n\t<div class=\"ui-overlay\"><div class=\"ui-widget-overlay\"></div><div class=\"ui-widget-shadow ui-corner-all\" style=\"width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;\"></div></div>\n\t<div style=\"position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;\" class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<div class=\"ui-dialog-content ui-widget-content\" style=\"background: none; border: 0;\">\n\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n\t\t</div>\n\t</div>\n\n</div>\n\n<!-- ui-dialog -->\n<div id=\"dialog\" title=\"Dialog Title\">\n\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n</div>\n\n\n\n<h2 class=\"demoHeaders\">Framework Icons (content color preview)</h2>\n<ul id=\"icons\" class=\"ui-widget ui-helper-clearfix\">\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-n\"><span class=\"ui-icon ui-icon-carat-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-ne\"><span class=\"ui-icon ui-icon-carat-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-e\"><span class=\"ui-icon ui-icon-carat-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-se\"><span class=\"ui-icon ui-icon-carat-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-s\"><span class=\"ui-icon ui-icon-carat-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-sw\"><span class=\"ui-icon ui-icon-carat-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-w\"><span class=\"ui-icon ui-icon-carat-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-nw\"><span class=\"ui-icon ui-icon-carat-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-n-s\"><span class=\"ui-icon ui-icon-carat-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-e-w\"><span class=\"ui-icon ui-icon-carat-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-n\"><span class=\"ui-icon ui-icon-triangle-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-ne\"><span class=\"ui-icon ui-icon-triangle-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-e\"><span class=\"ui-icon ui-icon-triangle-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-se\"><span class=\"ui-icon ui-icon-triangle-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-s\"><span class=\"ui-icon ui-icon-triangle-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-sw\"><span class=\"ui-icon ui-icon-triangle-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-w\"><span class=\"ui-icon ui-icon-triangle-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-nw\"><span class=\"ui-icon ui-icon-triangle-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-n-s\"><span class=\"ui-icon ui-icon-triangle-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-e-w\"><span class=\"ui-icon ui-icon-triangle-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-n\"><span class=\"ui-icon ui-icon-arrow-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-ne\"><span class=\"ui-icon ui-icon-arrow-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-e\"><span class=\"ui-icon ui-icon-arrow-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-se\"><span class=\"ui-icon ui-icon-arrow-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-s\"><span class=\"ui-icon ui-icon-arrow-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-sw\"><span class=\"ui-icon ui-icon-arrow-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-w\"><span class=\"ui-icon ui-icon-arrow-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-nw\"><span class=\"ui-icon ui-icon-arrow-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-n-s\"><span class=\"ui-icon ui-icon-arrow-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-ne-sw\"><span class=\"ui-icon ui-icon-arrow-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-e-w\"><span class=\"ui-icon ui-icon-arrow-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-se-nw\"><span class=\"ui-icon ui-icon-arrow-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-n\"><span class=\"ui-icon ui-icon-arrowstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-e\"><span class=\"ui-icon ui-icon-arrowstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-s\"><span class=\"ui-icon ui-icon-arrowstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-w\"><span class=\"ui-icon ui-icon-arrowstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-n\"><span class=\"ui-icon ui-icon-arrowthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-ne\"><span class=\"ui-icon ui-icon-arrowthick-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-e\"><span class=\"ui-icon ui-icon-arrowthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-se\"><span class=\"ui-icon ui-icon-arrowthick-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-s\"><span class=\"ui-icon ui-icon-arrowthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-sw\"><span class=\"ui-icon ui-icon-arrowthick-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-w\"><span class=\"ui-icon ui-icon-arrowthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-nw\"><span class=\"ui-icon ui-icon-arrowthick-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-n-s\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-ne-sw\"><span class=\"ui-icon ui-icon-arrowthick-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-e-w\"><span class=\"ui-icon ui-icon-arrowthick-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-se-nw\"><span class=\"ui-icon ui-icon-arrowthick-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-n\"><span class=\"ui-icon ui-icon-arrowthickstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-e\"><span class=\"ui-icon ui-icon-arrowthickstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-s\"><span class=\"ui-icon ui-icon-arrowthickstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-w\"><span class=\"ui-icon ui-icon-arrowthickstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-w\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-n\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-e\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-s\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-w\"><span class=\"ui-icon ui-icon-arrowreturn-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-n\"><span class=\"ui-icon ui-icon-arrowreturn-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-e\"><span class=\"ui-icon ui-icon-arrowreturn-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-s\"><span class=\"ui-icon ui-icon-arrowreturn-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-w\"><span class=\"ui-icon ui-icon-arrowrefresh-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-n\"><span class=\"ui-icon ui-icon-arrowrefresh-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-e\"><span class=\"ui-icon ui-icon-arrowrefresh-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-s\"><span class=\"ui-icon ui-icon-arrowrefresh-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4\"><span class=\"ui-icon ui-icon-arrow-4\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4-diag\"><span class=\"ui-icon ui-icon-arrow-4-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-extlink\"><span class=\"ui-icon ui-icon-extlink\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-newwin\"><span class=\"ui-icon ui-icon-newwin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-refresh\"><span class=\"ui-icon ui-icon-refresh\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-shuffle\"><span class=\"ui-icon ui-icon-shuffle\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transfer-e-w\"><span class=\"ui-icon ui-icon-transfer-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transferthick-e-w\"><span class=\"ui-icon ui-icon-transferthick-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-collapsed\"><span class=\"ui-icon ui-icon-folder-collapsed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-open\"><span class=\"ui-icon ui-icon-folder-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document\"><span class=\"ui-icon ui-icon-document\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document-b\"><span class=\"ui-icon ui-icon-document-b\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-note\"><span class=\"ui-icon ui-icon-note\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-closed\"><span class=\"ui-icon ui-icon-mail-closed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-open\"><span class=\"ui-icon ui-icon-mail-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-suitcase\"><span class=\"ui-icon ui-icon-suitcase\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-comment\"><span class=\"ui-icon ui-icon-comment\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-person\"><span class=\"ui-icon ui-icon-person\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-print\"><span class=\"ui-icon ui-icon-print\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-trash\"><span class=\"ui-icon ui-icon-trash\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-locked\"><span class=\"ui-icon ui-icon-locked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-unlocked\"><span class=\"ui-icon ui-icon-unlocked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bookmark\"><span class=\"ui-icon ui-icon-bookmark\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-tag\"><span class=\"ui-icon ui-icon-tag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-home\"><span class=\"ui-icon ui-icon-home\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-flag\"><span class=\"ui-icon ui-icon-flag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calculator\"><span class=\"ui-icon ui-icon-calculator\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cart\"><span class=\"ui-icon ui-icon-cart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pencil\"><span class=\"ui-icon ui-icon-pencil\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clock\"><span class=\"ui-icon ui-icon-clock\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-disk\"><span class=\"ui-icon ui-icon-disk\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calendar\"><span class=\"ui-icon ui-icon-calendar\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomin\"><span class=\"ui-icon ui-icon-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomout\"><span class=\"ui-icon ui-icon-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-search\"><span class=\"ui-icon ui-icon-search\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-wrench\"><span class=\"ui-icon ui-icon-wrench\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gear\"><span class=\"ui-icon ui-icon-gear\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-heart\"><span class=\"ui-icon ui-icon-heart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-star\"><span class=\"ui-icon ui-icon-star\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-link\"><span class=\"ui-icon ui-icon-link\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cancel\"><span class=\"ui-icon ui-icon-cancel\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plus\"><span class=\"ui-icon ui-icon-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plusthick\"><span class=\"ui-icon ui-icon-plusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minus\"><span class=\"ui-icon ui-icon-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minusthick\"><span class=\"ui-icon ui-icon-minusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-close\"><span class=\"ui-icon ui-icon-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-closethick\"><span class=\"ui-icon ui-icon-closethick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-key\"><span class=\"ui-icon ui-icon-key\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-lightbulb\"><span class=\"ui-icon ui-icon-lightbulb\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-scissors\"><span class=\"ui-icon ui-icon-scissors\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clipboard\"><span class=\"ui-icon ui-icon-clipboard\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-copy\"><span class=\"ui-icon ui-icon-copy\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-contact\"><span class=\"ui-icon ui-icon-contact\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-image\"><span class=\"ui-icon ui-icon-image\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-video\"><span class=\"ui-icon ui-icon-video\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-script\"><span class=\"ui-icon ui-icon-script\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-alert\"><span class=\"ui-icon ui-icon-alert\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-info\"><span class=\"ui-icon ui-icon-info\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-notice\"><span class=\"ui-icon ui-icon-notice\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-help\"><span class=\"ui-icon ui-icon-help\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-check\"><span class=\"ui-icon ui-icon-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bullet\"><span class=\"ui-icon ui-icon-bullet\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-off\"><span class=\"ui-icon ui-icon-radio-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-on\"><span class=\"ui-icon ui-icon-radio-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-w\"><span class=\"ui-icon ui-icon-pin-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-s\"><span class=\"ui-icon ui-icon-pin-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-play\"><span class=\"ui-icon ui-icon-play\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pause\"><span class=\"ui-icon ui-icon-pause\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-next\"><span class=\"ui-icon ui-icon-seek-next\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-prev\"><span class=\"ui-icon ui-icon-seek-prev\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-end\"><span class=\"ui-icon ui-icon-seek-end\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-first\"><span class=\"ui-icon ui-icon-seek-first\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-stop\"><span class=\"ui-icon ui-icon-stop\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-eject\"><span class=\"ui-icon ui-icon-eject\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-off\"><span class=\"ui-icon ui-icon-volume-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-on\"><span class=\"ui-icon ui-icon-volume-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-power\"><span class=\"ui-icon ui-icon-power\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal-diag\"><span class=\"ui-icon ui-icon-signal-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal\"><span class=\"ui-icon ui-icon-signal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-0\"><span class=\"ui-icon ui-icon-battery-0\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-1\"><span class=\"ui-icon ui-icon-battery-1\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-2\"><span class=\"ui-icon ui-icon-battery-2\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-3\"><span class=\"ui-icon ui-icon-battery-3\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-plus\"><span class=\"ui-icon ui-icon-circle-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-minus\"><span class=\"ui-icon ui-icon-circle-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-close\"><span class=\"ui-icon ui-icon-circle-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-e\"><span class=\"ui-icon ui-icon-circle-triangle-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-s\"><span class=\"ui-icon ui-icon-circle-triangle-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-w\"><span class=\"ui-icon ui-icon-circle-triangle-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-n\"><span class=\"ui-icon ui-icon-circle-triangle-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-e\"><span class=\"ui-icon ui-icon-circle-arrow-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-s\"><span class=\"ui-icon ui-icon-circle-arrow-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-w\"><span class=\"ui-icon ui-icon-circle-arrow-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-n\"><span class=\"ui-icon ui-icon-circle-arrow-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomin\"><span class=\"ui-icon ui-icon-circle-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomout\"><span class=\"ui-icon ui-icon-circle-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-check\"><span class=\"ui-icon ui-icon-circle-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-plus\"><span class=\"ui-icon ui-icon-circlesmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-minus\"><span class=\"ui-icon ui-icon-circlesmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-close\"><span class=\"ui-icon ui-icon-circlesmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-plus\"><span class=\"ui-icon ui-icon-squaresmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-minus\"><span class=\"ui-icon ui-icon-squaresmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-close\"><span class=\"ui-icon ui-icon-squaresmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-vertical\"><span class=\"ui-icon ui-icon-grip-dotted-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-horizontal\"><span class=\"ui-icon ui-icon-grip-dotted-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-vertical\"><span class=\"ui-icon ui-icon-grip-solid-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-horizontal\"><span class=\"ui-icon ui-icon-grip-solid-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gripsmall-diagonal-se\"><span class=\"ui-icon ui-icon-gripsmall-diagonal-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-diagonal-se\"><span class=\"ui-icon ui-icon-grip-diagonal-se\"></span></li>\n</ul>\n\n\n<!-- Slider -->\n<h2 class=\"demoHeaders\">Slider</h2>\n<div id=\"slider\"></div>\n\n\n\n<!-- Datepicker -->\n<h2 class=\"demoHeaders\">Datepicker</h2>\n<div id=\"datepicker\"></div>\n\n\n\n<!-- Progressbar -->\n<h2 class=\"demoHeaders\">Progressbar</h2>\n<div id=\"progressbar\"></div>\n\n\n<!-- Highlight / Error -->\n<h2 class=\"demoHeaders\">Highlight / Error</h2>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-highlight ui-corner-all\" style=\"margin-top: 20px; padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-info\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Hey!</strong> Sample ui-state-highlight style.</p>\n\t</div>\n</div>\n<br>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-error ui-corner-all\" style=\"padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Alert:</strong> Sample ui-state-error style.</p>\n\t</div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/README.md",
    "content": "# jQuery UI Touch Punch\n## Touch Event Support for jQuery UI\n\n> **jQuery UI Touch Punch is a small hack that enables the use of touch events on sites using the jQuery UI user interface library.**\n\n_[Visit the official Touch Punch website](http://touchpunch.furf.com)._\n\nCurrently, [jQuery UI](http://jqueryui.com/) user interface library does not support the use of touch events in their widgets and interactions. This means that the slick UI you designed and tested in your desktop browser will fail on most, if not all, touch-enabled mobile devices, becuase jQuery UI listens to mouse events—mouseover, mousemove and mouseout—not touch events—touchstart, touchmove and touchend.\n\nThat's where jQuery UI Touch Punch comes in. Touch Punch works by using [simulated events](https://developer.mozilla.org/en/DOM/document.createEvent) to map [touch events](http://www.html5rocks.com/en/mobile/touch/) to their mouse event analogs. Simply include the script on your page and your touch events will be turned into their corresponding mouse events to which jQuery UI will respond as expected.\n\nAs I said, Touch Punch is a hack. It [duck punches](http://en.wikipedia.org/wiki/Monkey_patch) some of jQuery UI's core functionality to handle the mapping of touch events. Touch Punch works with all basic implementations of jQuery UI's interactions and widgets. However, you may find more complex cases where Touch Punch fails. If so, scroll down to learn how you can file and/or fix issues.\n\nThis code is dual licensed under the MIT or GPL Version 2 licenses and is therefore free to use, modify and/or distribute, but if you include Touch Punch in other software packages or plugins, please include an attribution to the original software and a link to [this Touch Punch website](http://touchpunch.furf.com/).\n\n## Using Touch Punch is as easy as 1, 2…\n\nJust follow these simple steps to enable touch events in your jQuery UI app:\n\n1. Include jQuery and jQuery UI on your page.\n\n    ```html\n    <script src=\"http://code.jquery.com/jquery.min.js\"></script>\n    <script src=\"http://code.jquery.com/ui/1.8.17/jquery-ui.min.js\"></script>\n    ```\n\n2. Include Touch Punch after jQuery UI and before its first use.\n\n    Please note that if you are using jQuery UI's components, Touch Punch must be included after jquery.ui.mouse.js, as Touch Punch modifies its behavior.\n\n    ```html\n    <script src=\"jquery.ui.touch-punch.min.js\"></script>\n    ```\n\n3. There is no 3. Just use jQuery UI as expected and watch it work at the touch of a finger.\n\n    ```html\n    <script>$('#widget').draggable();</script>\n    ```\n\n_Tested on iPad, iPhone, Android and other touch-enabled mobile devices._\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.js",
    "content": "/*!\n * jQuery UI Touch Punch 0.2.2\n *\n * Copyright 2011, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n(function ($) {\n\n  // Detect touch support\n  $.support.touch = 'ontouchend' in document;\n\n  // Ignore browsers without touch support\n  if (!$.support.touch) {\n    return;\n  }\n\n  var mouseProto = $.ui.mouse.prototype,\n      _mouseInit = mouseProto._mouseInit,\n      touchHandled;\n\n  /**\n   * Simulate a mouse event based on a corresponding touch event\n   * @param {Object} event A touch event\n   * @param {String} simulatedType The corresponding mouse event\n   */\n  function simulateMouseEvent (event, simulatedType) {\n\n    // Ignore multi-touch events\n    if (event.originalEvent.touches.length > 1) {\n      return;\n    }\n\n    event.preventDefault();\n\n    var touch = event.originalEvent.changedTouches[0],\n        simulatedEvent = document.createEvent('MouseEvents');\n    \n    // Initialize the simulated mouse event using the touch event's coordinates\n    simulatedEvent.initMouseEvent(\n      simulatedType,    // type\n      true,             // bubbles                    \n      true,             // cancelable                 \n      window,           // view                       \n      1,                // detail                     \n      touch.screenX,    // screenX                    \n      touch.screenY,    // screenY                    \n      touch.clientX,    // clientX                    \n      touch.clientY,    // clientY                    \n      false,            // ctrlKey                    \n      false,            // altKey                     \n      false,            // shiftKey                   \n      false,            // metaKey                    \n      0,                // button                     \n      null              // relatedTarget              \n    );\n\n    // Dispatch the simulated event to the target element\n    event.target.dispatchEvent(simulatedEvent);\n  }\n\n  /**\n   * Handle the jQuery UI widget's touchstart events\n   * @param {Object} event The widget element's touchstart event\n   */\n  mouseProto._touchStart = function (event) {\n\n    var self = this;\n\n    // Ignore the event if another widget is already being handled\n    if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {\n      return;\n    }\n\n    // Set the flag to prevent other widgets from inheriting the touch event\n    touchHandled = true;\n\n    // Track movement to determine if interaction was a click\n    self._touchMoved = false;\n\n    // Simulate the mouseover event\n    simulateMouseEvent(event, 'mouseover');\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n\n    // Simulate the mousedown event\n    simulateMouseEvent(event, 'mousedown');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchmove events\n   * @param {Object} event The document's touchmove event\n   */\n  mouseProto._touchMove = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Interaction was not a click\n    this._touchMoved = true;\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchend events\n   * @param {Object} event The document's touchend event\n   */\n  mouseProto._touchEnd = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Simulate the mouseup event\n    simulateMouseEvent(event, 'mouseup');\n\n    // Simulate the mouseout event\n    simulateMouseEvent(event, 'mouseout');\n\n    // If the touch interaction did not move, it should trigger a click\n    if (!this._touchMoved) {\n\n      // Simulate the click event\n      simulateMouseEvent(event, 'click');\n    }\n\n    // Unset the flag to allow other widgets to inherit the touch event\n    touchHandled = false;\n  };\n\n  /**\n   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n   * This method extends the widget with bound touch event handlers that\n   * translate touch events to mouse events and pass them to the widget's\n   * original mouse event handling methods.\n   */\n  mouseProto._mouseInit = function () {\n    \n    var self = this;\n\n    // Delegate the touch handlers to the widget's element\n    self.element\n      .bind('touchstart', $.proxy(self, '_touchStart'))\n      .bind('touchmove', $.proxy(self, '_touchMove'))\n      .bind('touchend', $.proxy(self, '_touchEnd'));\n\n    // Call the original $.ui.mouse init method\n    _mouseInit.call(self);\n  };\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/jquery.cookie.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.3\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2011, Klaus Hartl\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.opensource.org/licenses/GPL-2.0\n */\n(function ($, document, undefined) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction raw(s) {\n\t\treturn s;\n\t}\n\n\tfunction decoded(s) {\n\t\treturn decodeURIComponent(s.replace(pluses, ' '));\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// write\n\t\tif (value !== undefined) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (value === null) {\n\t\t\t\toptions.expires = -1;\n\t\t\t}\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setDate(t.getDate() + days);\n\t\t\t}\n\n\t\t\tvalue = config.json ? JSON.stringify(value) : String(value);\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// read\n\t\tvar decode = config.raw ? raw : decoded;\n\t\tvar cookies = document.cookie.split('; ');\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tif (decode(parts.shift()) === key) {\n\t\t\t\tvar cookie = decode(parts.join('='));\n\t\t\t\treturn config.json ? JSON.parse(cookie) : cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) !== null) {\n\t\t\t$.cookie(key, null, options);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n})(jQuery, document);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/system/modernizr.js",
    "content": "/* Modernizr 2.6.2 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-csstransforms3d-csstransitions-touch-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load\n */\n;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+\";\")+(b||\"\"))}function B(a,b){return typeof a===b}function C(a,b){return!!~(\"\"+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,\"-\")&&j[e]!==c)return b==\"pfx\"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,\"function\")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+o.join(d+\" \")+d).split(\" \");return B(b,\"string\")||B(b,\"undefined\")?D(e,b):(e=(a+\" \"+p.join(d+\" \")+d).split(\" \"),E(e,b,c))}var d=\"2.6.2\",e={},f=!0,g=b.documentElement,h=\"modernizr\",i=b.createElement(h),j=i.style,k,l={}.toString,m=\" -webkit- -moz- -o- -ms- \".split(\" \"),n=\"Webkit Moz O ms\",o=n.split(\" \"),p=n.toLowerCase().split(\" \"),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement(\"div\"),m=b.body,n=m||b.createElement(\"body\");if(parseInt(d,10))while(d--)j=b.createElement(\"div\"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=[\"&#173;\",'<style id=\"s',h,'\">',a,\"</style>\"].join(\"\"),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background=\"\",n.style.overflow=\"hidden\",k=g.style.overflow,g.style.overflow=\"hidden\",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,\"undefined\")&&!B(x.call,\"undefined\")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],\"undefined\")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!=\"function\")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return\"ontouchstart\"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w([\"@media (\",m.join(\"touch-enabled),(\"),h,\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\"),function(a){c=a.offsetTop===9}),c},q.csstransforms3d=function(){var a=!!F(\"perspective\");return a&&\"webkitPerspective\"in g.style&&w(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F(\"transition\")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?\"\":\"no-\")+v));return e.addTest=function(a,b){if(typeof a==\"object\")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b==\"function\"?b():b,typeof f!=\"undefined\"&&f&&(g.className+=\" \"+(b?\"\":\"no-\")+a),e[a]=b}return e},z(\"\"),i=k=null,function(a,b){function k(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a==\"string\"?a.split(\" \"):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+l().join().replace(/\\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,\"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}\")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g=\"_html5shiv\",h=0,i={},j;(function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",f=\"hidden\"in a,j=a.childNodes.length==1||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return typeof a.cloneNode==\"undefined\"||typeof a.createDocumentFragment==\"undefined\"||typeof a.createElement==\"undefined\"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||\"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video\",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:\"default\",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,g.className=g.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(f?\" js \"+t.join(\" \"):\"\"),e}(this,this.document),function(a,b,c){function d(a){return\"[object Function]\"==o.call(a)}function e(a){return\"string\"==typeof a}function f(){}function g(a){return!a||\"loaded\"==a||\"complete\"==a||\"uninitialized\"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){(\"c\"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){\"img\"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),\"object\"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height=\"0\",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),\"img\"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||\"j\",e(a)?i(\"c\"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName(\"script\")[0],o={}.toString,p=[],q=0,r=\"MozAppearance\"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&\"[object Opera]\"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?\"object\":l?\"script\":\"img\",v=l?\"script\":u,w=Array.isArray||function(a){return\"[object Array]\"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split(\"!\"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(\"=\"),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(\".\").pop().split(\"?\").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(\"/\").pop().split(\"?\")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&\"css\"==i.url.split(\".\").pop().split(\"?\").shift()?\"c\":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState=\"loading\",b.addEventListener(\"DOMContentLoaded\",A=function(){b.removeEventListener(\"DOMContentLoaded\",A,0),b.readyState=\"complete\"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement(\"script\"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement(\"link\"),j,c=i?h:c||f;e.href=a,e.rel=\"stylesheet\",e.type=\"text/css\";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/34cdb56b2c.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oApi - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oApi</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>#</span> » oApi</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (85)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (85)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Reference to internal functions for use by plug-in developers. Note that these\nmethods are references to internal functions and are considered to be private.\nIf you use these methods, be aware that they are liable to change between versions\n(check the upgrade notes).</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnJsonString\">_fnJsonString</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\nlibrary, then we use that as it is fast, safe and accurate. If the function isn't \navailable then we need to built it ourselves - the inspiration for this function comes\nfrom Craig Buckler ( <a href='http://www.sitepoint.com/javascript-json-serialization/'>http://www.sitepoint.com/javascript-json-serialization/</a> ). It is\nnot perfect and absolutely should not be used as a replacement to json2.js - but it does\ndo what we need, without requiring a dependency for DataTables.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddColumn\">_fnAddColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nTh)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add a column to the list used for the table with default values</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddData\">_fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Add a data array to the table, creating DOM node etc. This is the parallel to \n_fnGatherData, but for adding rows from a Javascript source, rather than a\nDOM source.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddOptionsHtml\">_fnAddOptionsHtml</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add the options to the page HTML for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAdjustColumnSizing\">_fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Adjust the table column widths for new data. Note: you would probably want to \ndo a redraw after calling this function!</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxParameters\">_fnAjaxParameters</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></dt><dd class=\"  even\"><p>Build up the parameters in an object needed for a server-side processing request</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxUpdate\">_fnAjaxUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Update the table using an Ajax call</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxUpdateDraw\">_fnAjaxUpdateDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, json)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Data the data from the server (nuking the old) and redraw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnApplyColumnDefs\">_fnApplyColumnDefs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aoColDefs, aoCols, fn)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Take the column definitions and static columns arrays and calculate how\nthey relate to column indexes. The callback function will then apply the\ndefinition found for a column to a suitable configuration object.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnApplyToChildren\">_fnApplyToChildren</a></span><span class=\"type-sig\"><span class=\"signature\">(fn, array, array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply a given function to the display child nodes of an element array (typically\nTD children of TR rows</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBindAction\">_fnBindAction</a></span><span class=\"type-sig\"><span class=\"signature\">(n, oData, fn)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Bind an event handers to allow a click or return key to activate the callback.\nThis is good for accessibility since a return on the keyboard will have the\nsame effect as a click, if the element has focus.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBrowserDetect\">_fnBrowserDetect</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>From some browsers (specifically IE6/7) we need special handling to work around browser\nbugs - this function is used to detect when these workarounds are needed.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildHead\">_fnBuildHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create the HTML header for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildSearchArray\">_fnBuildSearchArray</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMaster)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Create an array which can be quickly search through</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildSearchRow\">_fnBuildSearchRow</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create a searchable string from a single data row</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCalculateColumnWidths\">_fnCalculateColumnWidths</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Calculate the width of columns for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCalculateEnd\">_fnCalculateEnd</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Recalculate the end point based on the start point</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCallbackFire\">_fnCallbackFire</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, sTrigger, aArgs)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Fire callback functions and trigger events. Note that the loop over the callback\narray store is done backwards! Further note that you do not want to fire off triggers\nin time sensitive applications (for example cell creation) as its slow.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCallbackReg\">_fnCallbackReg</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, fn, sName)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Register a callback function. Easily allows a callback function to be added to\nan array store of callback functions that can then all be called together.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnClearTable\">_fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Nuke the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnIndexToVisible\">_fnColumnIndexToVisible</a></span><span class=\"type-sig\"><span class=\"signature\">(iMatch, oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Covert the index of an index in the data array and convert it to the visible\n  column index (take account of hidden columns)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnOptions\">_fnColumnOptions</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol, oOptions)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply options for a column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnOrdering\">_fnColumnOrdering</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Get the column ordering that DataTables expects</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnConvertToWidth\">_fnConvertToWidth</a></span><span class=\"type-sig\"><span class=\"signature\">(sWidth, nParent)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Convert a CSS unit width to pixels (e.g. 2em)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCreateCookie\">_fnCreateCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName, sValue, iSecs, sBaseName, fnCallback)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create a new cookie with a value to store the state of a table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCreateTr\">_fnCreateTr</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Create a new TR element (and it's TD children) for a row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDataToSearch\">_fnDataToSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sData, sType)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Convert raw data into something that the user can search on</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDeleteIndex\">_fnDeleteIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(a, iTarget)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Take an array of integers (index array) and remove a target integer (value - not \nthe key!)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDetectHeader\">_fnDetectHeader</a></span><span class=\"type-sig\"><span class=\"signature\">(array, nThead)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Use the DOM source to create up an array of header cells. The idea here is to\ncreate a layout grid (array) of rows x columns, which contains a reference\nto the cell that that point in the grid (regardless of col/rowspan), such that\nany column / row could be removed and the new grid constructed</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDetectType\">_fnDetectType</a></span><span class=\"type-sig\"><span class=\"signature\">(sData)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  even\"><p>Get the sort type based on an input string</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDraw\">_fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Insert the required TR nodes into the table for display</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDrawHead\">_fnDrawHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array, <span class=\"optional\">bIncludeHidden</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Draw the header (or footer) element based on the column visibility states. The\nmethodology here is to use the layout array from _fnDetectHeader, modified for\nthe instantaneous column visibility, to construct the new layout. The grid is\ntraversed over cell at a time in a rows x columns grid fashion, although each \ncell insert can cover multiple elements in the grid - which is tracks using the\naApplied array. Cell inserts in the grid will only occur where there isn't\nalready a cell in that position.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnEscapeRegex\">_fnEscapeRegex</a></span><span class=\"type-sig\"><span class=\"signature\">(sVal)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>scape a string such that it can be used in a regular expression</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnExtend\">_fnExtend</a></span><span class=\"type-sig\"><span class=\"signature\">(oOut, oExtender)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\ncopy arrays. The reason we need to do this, is that we don't want to deep copy array\ninit values (such as aaSorting) since the dev wouldn't be able to override them, but\nwe do want to deep copy arrays.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnExternApiFunc\">_fnExternApiFunc</a></span><span class=\"type-sig\"><span class=\"signature\">(sFunc)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  odd\"><p>Create a wrapper function for exporting an internal functions to an external API.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlFilter\">_fnFeatureHtmlFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for filtering text</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlInfo\">_fnFeatureHtmlInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Generate the node required for the info display</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlLength\">_fnFeatureHtmlLength</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for user display length changing</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlPaginate\">_fnFeatureHtmlPaginate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Generate the node required for default pagination</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlProcessing\">_fnFeatureHtmlProcessing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for the processing node</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlTable\">_fnFeatureHtmlTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Add any control elements for the table - specifically scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilter\">_fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Filter the data table based on user input and draw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterColumn\">_fnFilterColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Filter the table on a per-column basis</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterComplete\">_fnFilterComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oSearch, <span class=\"optional\">iForce</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Filter the table using both the global filter and column based filtering</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterCreateSearch\">_fnFilterCreateSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sSearch, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"> &rarr; {RegExp}</span></span></dt><dd class=\"  odd\"><p>Build a regular expression object suitable for searching a table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterCustom\">_fnFilterCustom</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply custom filtering functions</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGatherData\">_fnGatherData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Read in the data from the target table from the DOM</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetCellData\">_fnGetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, sSpecific)</span><span class=\"type-signature\"> &rarr; {*}</span></span></dt><dd class=\"  even\"><p>Get the data for a given cell from the internal cache, taking into account data mapping</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetColumns\">_fnGetColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sParam)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get an array of column indexes that match a given property</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetDataMaster\">_fnGetDataMaster</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Return an array with the full table data</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetMaxLenString\">_fnGetMaxLenString</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Get the maximum strlen for each data column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetObjectDataFn\">_fnGetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  even\"><p>Return a function that can be used to get data from a source object, taking\ninto account the ability to use nested objects as a source</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetRowData\">_fnGetRowData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, sSpecific, aiColumns)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get an array of data for a given row from the internal data cache</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetTdNodes\">_fnGetTdNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">iIndividualRow</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Return an flat array with all TD nodes for the table, or row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetTrNodes\">_fnGetTrNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Return an array with the TR nodes for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetUniqueThs\">_fnGetUniqueThs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nHeader, aLayout)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Get an array of unique th elements, one for each column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetWidestNode\">_fnGetWidestNode</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Get the widest node</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnInitComplete\">_fnInitComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">json</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Draw the table for the first time, adding all required features</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnInitialise\">_fnInitialise</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Draw the table for the first time, adding all required features</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLanguageCompat\">_fnLanguageCompat</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Language compatibility - when certain options are given, and others aren't, we\nneed to duplicate the values over, in order to provide backwards compatibility\nwith older language files.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLoadState\">_fnLoadState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oInit)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attempt to load a saved table state from a cookie</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLog\">_fnLog</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iLevel, sMesg)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Log an error message</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnMap\">_fnMap</a></span><span class=\"type-sig\"><span class=\"signature\">(oRet, oSrc, sName, <span class=\"optional\">sMappedName</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>See if a property is defined on one object, if so assign it to the other object</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnNodeToColumnIndex\">_fnNodeToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Take a TD element and convert it into a column data index (not the visible index)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnNodeToDataIndex\">_fnNodeToDataIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Take a TR element and convert it to an index in aoData</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnPageChange\">_fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, mAction)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></dt><dd class=\"  even\"><p>Alter the display settings to change the page</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnProcessingDisplay\">_fnProcessingDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bShow)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display or hide the processing indicator</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReadCookie\">_fnReadCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  even\"><p>Read an old cookie to get a cookie with an old table state</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReDraw\">_fnReDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Redraw the table - taking account of the various features which are enabled</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnRender\">_fnRender</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol)</span><span class=\"type-signature\"> &rarr; {*}</span></span></dt><dd class=\"  even\"><p>Call the developer defined fnRender function for a given cell (row/column) with\nthe required parameters and return the result.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReOrderIndex\">_fnReOrderIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Figure out how to reorder a display list</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSaveState\">_fnSaveState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Save the state of a table in a cookie such that the page can be reloaded</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollBarWidth\">_fnScrollBarWidth</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Get the width of a scroll bar in this browser being used</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollDraw\">_fnScrollDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(o)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Update the various tables for resizing. It's a bit of a pig this function, but\nbasically the idea to:\n  1. Re-create the table inside the scrolling div\n  2. Take live measurements from the DOM\n  3. Apply the measurements\n  4. Clean up</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollingWidthAdjust\">_fnScrollingWidthAdjust</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Adjust a table's width to take account of scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnServerParams\">_fnServerParams</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add Ajax parameters from plug-ins</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSetCellData\">_fnSetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, val)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Set the value for a specific cell, into the internal data cache</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSetObjectDataFn\">_fnSetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  even\"><p>Return a function that can be used to set data from a source object, taking\ninto account the ability to use nested objects as a source</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSettingsFromNode\">_fnSettingsFromNode</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  odd\"><p>Return the settings object for a particular table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSort\">_fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bApplyClasses)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Change the order of the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSortAttachListener\">_fnSortAttachListener</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nNode, iDataIndex, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attach a sort handler (click) to a node</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSortingClasses\">_fnSortingClasses</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Set the sorting classes on the header, Note: it is safe to call this function \nwhen bSort and bSortClasses are false</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnStringToCss\">_fnStringToCss</a></span><span class=\"type-sig\"><span class=\"signature\">(aArray1, aArray2)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Append a CSS unit (only if required) to a string</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnUpdateInfo\">_fnUpdateInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Update the information elements in the display</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnVisbleColumns\">_fnVisbleColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Get the number of visible columns</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnVisibleToColumnIndex\">_fnVisibleToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMatch)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Covert the index of a visible column to the index in the data array (take account\nof hidden columns)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"_fnJsonString\"></a><a name=\"_fnJsonString_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnJsonString\">_fnJsonString</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\nlibrary, then we use that as it is fast, safe and accurate. If the function isn't \navailable then we need to built it ourselves - the inspiration for this function comes\nfrom Craig Buckler ( <a href='http://www.sitepoint.com/javascript-json-serialization/'>http://www.sitepoint.com/javascript-json-serialization/</a> ). It is\nnot perfect and absolutely should not be used as a replacement to json2.js - but it does\ndo what we need, without requiring a dependency for DataTables.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable#oApi._fnAddColumn\" class=\"  even\"><a name=\"_fnAddColumn\"></a><a name=\"_fnAddColumn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nTh)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add a column to the list used for the table with default values</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nTh</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The th element for this column</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAddData\" class=\"  odd\"><a name=\"_fnAddData\"></a><a name=\"_fnAddData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Add a data array to the table, creating DOM node etc. This is the parallel to \n_fnGatherData, but for adding rows from a Javascript source, rather than a\nDOM source.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data array to be added</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><blockquote>\n  <p>=0 if successful (index of new aoData entry), -1 if failed</p>\n</blockquote></p></div>\n<dt id=\"DataTable#oApi._fnAddOptionsHtml\" class=\"  even\"><a name=\"_fnAddOptionsHtml\"></a><a name=\"_fnAddOptionsHtml_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddOptionsHtml</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add the options to the page HTML for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAdjustColumnSizing\" class=\"  odd\"><a name=\"_fnAdjustColumnSizing\"></a><a name=\"_fnAdjustColumnSizing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Adjust the table column widths for new data. Note: you would probably want to \ndo a redraw after calling this function!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAjaxParameters\" class=\"  even\"><a name=\"_fnAjaxParameters\"></a><a name=\"_fnAjaxParameters_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxParameters</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></span></dt><dd class=\"  even\"><p>Build up the parameters in an object needed for a server-side processing request</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>block the table drawing or not</p></p></div>\n<dt id=\"DataTable#oApi._fnAjaxUpdate\" class=\"  odd\"><a name=\"_fnAjaxUpdate\"></a><a name=\"_fnAjaxUpdate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Update the table using an Ajax call</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Block the table drawing or not</p></p></div>\n<dt id=\"DataTable#oApi._fnAjaxUpdateDraw\" class=\"  even\"><a name=\"_fnAjaxUpdateDraw\"></a><a name=\"_fnAjaxUpdateDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxUpdateDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, json)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Data the data from the server (nuking the old) and redraw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>json data return from the server.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.sEcho</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Tracking flag for DataTables to match requests</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.iTotalRecords</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Number of records in the data set, not accounting for filtering</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.iTotalDisplayRecords</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Number of records in the data set, accounting for filtering</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.aaData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data to display on this page</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.sColumns</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\"></td><td class=\"description last\"><p>Column ordering (sName, comma separated)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnApplyColumnDefs\" class=\"  odd\"><a name=\"_fnApplyColumnDefs\"></a><a name=\"_fnApplyColumnDefs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnApplyColumnDefs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aoColDefs, aoCols, fn)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Take the column definitions and static columns arrays and calculate how\nthey relate to column indexes. The callback function will then apply the\ndefinition found for a column to a suitable configuration object.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aoColDefs</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The aoColumnDefs array that is to be applied</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">aoCols</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The aoColumns array that defines columns individually</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Callback function - takes two parameters, the calculated\n   column index and the definition for that column.</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnApplyToChildren\" class=\"  even\"><a name=\"_fnApplyToChildren\"></a><a name=\"_fnApplyToChildren_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnApplyToChildren</a></span><span class=\"type-sig\"><span class=\"signature\">(fn, array, array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply a given function to the display child nodes of an element array (typically\nTD children of TR rows</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Method to apply to the objects</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{nodes} an1 List of elements to look through for display children</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{nodes} an2 Another list (identical structure to the first) - optional</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBindAction\" class=\"  odd\"><a name=\"_fnBindAction\"></a><a name=\"_fnBindAction_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBindAction</a></span><span class=\"type-sig\"><span class=\"signature\">(n, oData, fn)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Bind an event handers to allow a click or return key to activate the callback.\nThis is good for accessibility since a return on the keyboard will have the\nsame effect as a click, if the element has focus.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">n</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Element to bind the action to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data object to pass to the triggered function</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Callback function for when the event is triggered</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBrowserDetect\" class=\"  even\"><a name=\"_fnBrowserDetect\"></a><a name=\"_fnBrowserDetect_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBrowserDetect</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>From some browsers (specifically IE6/7) we need special handling to work around browser\nbugs - this function is used to detect when these workarounds are needed.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildHead\" class=\"  odd\"><a name=\"_fnBuildHead\"></a><a name=\"_fnBuildHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create the HTML header for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildSearchArray\" class=\"  even\"><a name=\"_fnBuildSearchArray\"></a><a name=\"_fnBuildSearchArray_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildSearchArray</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMaster)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Create an array which can be quickly search through</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iMaster</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>use the master data array - optional</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildSearchRow\" class=\"  odd\"><a name=\"_fnBuildSearchRow\"></a><a name=\"_fnBuildSearchRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildSearchRow</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create a searchable string from a single data row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row data array to use for the data to search</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCalculateColumnWidths\" class=\"  even\"><a name=\"_fnCalculateColumnWidths\"></a><a name=\"_fnCalculateColumnWidths_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCalculateColumnWidths</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Calculate the width of columns for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCalculateEnd\" class=\"  odd\"><a name=\"_fnCalculateEnd\"></a><a name=\"_fnCalculateEnd_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCalculateEnd</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Recalculate the end point based on the start point</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCallbackFire\" class=\"  even\"><a name=\"_fnCallbackFire\"></a><a name=\"_fnCallbackFire_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCallbackFire</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, sTrigger, aArgs)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Fire callback functions and trigger events. Note that the loop over the callback\narray store is done backwards! Further note that you do not want to fire off triggers\nin time sensitive applications (for example cell creation) as its slow.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sStore</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the array storage for the callbacks in oSettings</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sTrigger</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the jQuery custom event to trigger. If null no trigger\n   is fired</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">aArgs</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Array of arguments to pass to the callback function / trigger</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCallbackReg\" class=\"  odd\"><a name=\"_fnCallbackReg\"></a><a name=\"_fnCallbackReg_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCallbackReg</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, fn, sName)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Register a callback function. Easily allows a callback function to be added to\nan array store of callback functions that can then all be called together.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sStore</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the array storage for the callbacks in oSettings</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Function to be called back</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Identifying name for the callback (i.e. a label)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnClearTable\" class=\"  even\"><a name=\"_fnClearTable\"></a><a name=\"_fnClearTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Nuke the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnColumnIndexToVisible\" class=\"  odd\"><a name=\"_fnColumnIndexToVisible\"></a><a name=\"_fnColumnIndexToVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnIndexToVisible</a></span><span class=\"type-sig\"><span class=\"signature\">(iMatch, oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Covert the index of an index in the data array and convert it to the visible\n  column index (take account of hidden columns)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iMatch</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index to lookup</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the data index</p></p></div>\n<dt id=\"DataTable#oApi._fnColumnOptions\" class=\"  even\"><a name=\"_fnColumnOptions\"></a><a name=\"_fnColumnOptions_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnOptions</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol, oOptions)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply options for a column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column index to consider</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oOptions</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>object with sType, bVisible and bSearchable etc</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnColumnOrdering\" class=\"  odd\"><a name=\"_fnColumnOrdering\"></a><a name=\"_fnColumnOrdering_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnOrdering</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Get the column ordering that DataTables expects</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>comma separated list of names</p></p></div>\n<dt id=\"DataTable#oApi._fnConvertToWidth\" class=\"  even\"><a name=\"_fnConvertToWidth\"></a><a name=\"_fnConvertToWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnConvertToWidth</a></span><span class=\"type-sig\"><span class=\"signature\">(sWidth, nParent)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Convert a CSS unit width to pixels (e.g. 2em)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sWidth</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>width to be converted</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nParent</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>parent to get the with for (required for relative widths) - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>iWidth width in pixels</p></p></div>\n<dt id=\"DataTable#oApi._fnCreateCookie\" class=\"  odd\"><a name=\"_fnCreateCookie\"></a><a name=\"_fnCreateCookie_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCreateCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName, sValue, iSecs, sBaseName, fnCallback)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create a new cookie with a value to store the state of a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>name of the cookie to create</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sValue</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the value the cookie should take</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iSecs</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>duration of the cookie</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sBaseName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>sName is made up of the base + file name - this is the base</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>User definable function to modify the cookie</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCreateTr\" class=\"  even\"><a name=\"_fnCreateTr\"></a><a name=\"_fnCreateTr_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCreateTr</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Create a new TR element (and it's TD children) for a row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row to consider</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDataToSearch\" class=\"  odd\"><a name=\"_fnDataToSearch\"></a><a name=\"_fnDataToSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDataToSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sData, sType)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Convert raw data into something that the user can search on</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sData</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data to be modified</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sType</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data type</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>search string</p></p></div>\n<dt id=\"DataTable#oApi._fnDeleteIndex\" class=\"  even\"><a name=\"_fnDeleteIndex\"></a><a name=\"_fnDeleteIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDeleteIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(a, iTarget)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Take an array of integers (index array) and remove a target integer (value - not \nthe key!)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">a</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to target</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iTarget</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>value to find</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDetectHeader\" class=\"  odd\"><a name=\"_fnDetectHeader\"></a><a name=\"_fnDetectHeader_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDetectHeader</a></span><span class=\"type-sig\"><span class=\"signature\">(array, nThead)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Use the DOM source to create up an array of header cells. The idea here is to\ncreate a layout grid (array) of rows x columns, which contains a reference\nto the cell that that point in the grid (regardless of col/rowspan), such that\nany column / row could be removed and the new grid constructed</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{object} aLayout Array to store the calculated layout in</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nThead</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The header/footer element for the table</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDetectType\" class=\"  even\"><a name=\"_fnDetectType\"></a><a name=\"_fnDetectType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDetectType</a></span><span class=\"type-sig\"><span class=\"signature\">(sData)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  even\"><p>Get the sort type based on an input string</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sData</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data we wish to know the type of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>type (defaults to 'string' if no type can be detected)</p></p></div>\n<dt id=\"DataTable#oApi._fnDraw\" class=\"  odd\"><a name=\"_fnDraw\"></a><a name=\"_fnDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Insert the required TR nodes into the table for display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDrawHead\" class=\"  even\"><a name=\"_fnDrawHead\"></a><a name=\"_fnDrawHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDrawHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array, <span class=\"optional\">bIncludeHidden</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Draw the header (or footer) element based on the column visibility states. The\nmethodology here is to use the layout array from _fnDetectHeader, modified for\nthe instantaneous column visibility, to construct the new layout. The grid is\ntraversed over cell at a time in a rows x columns grid fashion, although each \ncell insert can cover multiple elements in the grid - which is tracks using the\naApplied array. Cell inserts in the grid will only occur where there isn't\nalready a cell in that position.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{objects} aoSource Layout array from _fnDetectHeader</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bIncludeHidden</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>If true then include the hidden columns in the calc,</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnEscapeRegex\" class=\"  odd\"><a name=\"_fnEscapeRegex\"></a><a name=\"_fnEscapeRegex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnEscapeRegex</a></span><span class=\"type-sig\"><span class=\"signature\">(sVal)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>scape a string such that it can be used in a regular expression</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVal</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to escape</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>escaped string</p></p></div>\n<dt id=\"DataTable#oApi._fnExtend\" class=\"  even\"><a name=\"_fnExtend\"></a><a name=\"_fnExtend_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnExtend</a></span><span class=\"type-sig\"><span class=\"signature\">(oOut, oExtender)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\ncopy arrays. The reason we need to do this, is that we don't want to deep copy array\ninit values (such as aaSorting) since the dev wouldn't be able to override them, but\nwe do want to deep copy arrays.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oOut</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object to extend</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oExtender</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object from which the properties will be applied to oOut</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>oOut Reference, just for convenience - oOut === the return.</p></p></div>\n<dt id=\"DataTable#oApi._fnExternApiFunc\" class=\"  odd\"><a name=\"_fnExternApiFunc\"></a><a name=\"_fnExternApiFunc_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnExternApiFunc</a></span><span class=\"type-sig\"><span class=\"signature\">(sFunc)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  odd\"><p>Create a wrapper function for exporting an internal functions to an external API.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sFunc</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>API function name</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>wrapped function</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlFilter\" class=\"  even\"><a name=\"_fnFeatureHtmlFilter\"></a><a name=\"_fnFeatureHtmlFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for filtering text</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Filter control element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlInfo\" class=\"  odd\"><a name=\"_fnFeatureHtmlInfo\"></a><a name=\"_fnFeatureHtmlInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Generate the node required for the info display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Information element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlLength\" class=\"  even\"><a name=\"_fnFeatureHtmlLength\"></a><a name=\"_fnFeatureHtmlLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlLength</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for user display length changing</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Display length feature node</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlPaginate\" class=\"  odd\"><a name=\"_fnFeatureHtmlPaginate\"></a><a name=\"_fnFeatureHtmlPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlPaginate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Generate the node required for default pagination</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Pagination feature node</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlProcessing\" class=\"  even\"><a name=\"_fnFeatureHtmlProcessing\"></a><a name=\"_fnFeatureHtmlProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlProcessing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for the processing node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Processing element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlTable\" class=\"  odd\"><a name=\"_fnFeatureHtmlTable\"></a><a name=\"_fnFeatureHtmlTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Add any control elements for the table - specifically scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Node to add to the DOM</p></p></div>\n<dt id=\"DataTable#oApi._fnFilter\" class=\"  even\"><a name=\"_fnFilter\"></a><a name=\"_fnFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Filter the data table based on user input and draw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to filter on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iForce</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>optional - force a research of the master array (1) or not (undefined or 0)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>perform smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insenstive matching or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterColumn\" class=\"  odd\"><a name=\"_fnFilterColumn\"></a><a name=\"_fnFilterColumn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Filter the table on a per-column basis</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to filter on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column to filter</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat search string as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>use smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insenstive matching or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterComplete\" class=\"  even\"><a name=\"_fnFilterComplete\"></a><a name=\"_fnFilterComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oSearch, <span class=\"optional\">iForce</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Filter the table using both the global filter and column based filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSearch</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>search information</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iForce</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>force a research of the master array (1) or not (undefined or 0)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterCreateSearch\" class=\"  odd\"><a name=\"_fnFilterCreateSearch\"></a><a name=\"_fnFilterCreateSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterCreateSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sSearch, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"> &rarr; {RegExp}</span></span></span></dt><dd class=\"  odd\"><p>Build a regular expression object suitable for searching a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSearch</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to search for</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>perform smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insensitive matching or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>constructed object</p></p></div>\n<dt id=\"DataTable#oApi._fnFilterCustom\" class=\"  even\"><a name=\"_fnFilterCustom\"></a><a name=\"_fnFilterCustom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterCustom</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply custom filtering functions</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnGatherData\" class=\"  odd\"><a name=\"_fnGatherData\"></a><a name=\"_fnGatherData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGatherData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Read in the data from the target table from the DOM</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnGetCellData\" class=\"  even\"><a name=\"_fnGetCellData\"></a><a name=\"_fnGetCellData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, sSpecific)</span><span class=\"type-signature\"> &rarr; {*}</span></span></span></dt><dd class=\"  even\"><p>Get the data for a given cell from the internal cache, taking into account data mapping</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data get type ('display', 'type' 'filter' 'sort')</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Cell data</p></p></div>\n<dt id=\"DataTable#oApi._fnGetColumns\" class=\"  odd\"><a name=\"_fnGetColumns\"></a><a name=\"_fnGetColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sParam)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of column indexes that match a given property</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sParam</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Parameter in aoColumns to look for - typically \n   bVisible or bSearchable</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Array of indexes with matched properties</p></p></div>\n<dt id=\"DataTable#oApi._fnGetDataMaster\" class=\"  even\"><a name=\"_fnGetDataMaster\"></a><a name=\"_fnGetDataMaster_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetDataMaster</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Return an array with the full table data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {array} aData Master data array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetMaxLenString\" class=\"  odd\"><a name=\"_fnGetMaxLenString\"></a><a name=\"_fnGetMaxLenString_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetMaxLenString</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Get the maximum strlen for each data column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column of interest</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>max string length for each column</p></p></div>\n<dt id=\"DataTable#oApi._fnGetObjectDataFn\" class=\"  even\"><a name=\"_fnGetObjectDataFn\"></a><a name=\"_fnGetObjectDataFn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  even\"><p>Return a function that can be used to get data from a source object, taking\ninto account the ability to use nested objects as a source</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mSource</td><td class=\"type type-param\">string | int | function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data source for the object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data get function</p></p></div>\n<dt id=\"DataTable#oApi._fnGetRowData\" class=\"  odd\"><a name=\"_fnGetRowData\"></a><a name=\"_fnGetRowData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetRowData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, sSpecific, aiColumns)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of data for a given row from the internal data cache</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data get type ('type' 'filter' 'sort')</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">aiColumns</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Array of column indexes to get data from</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetTdNodes\" class=\"  even\"><a name=\"_fnGetTdNodes\"></a><a name=\"_fnGetTdNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetTdNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">iIndividualRow</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Return an flat array with all TD nodes for the table, or row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iIndividualRow</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>aoData index to get the nodes for - optional \n   if not given then the return array will contain all nodes for the table</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>TD array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetTrNodes\" class=\"  odd\"><a name=\"_fnGetTrNodes\"></a><a name=\"_fnGetTrNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetTrNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Return an array with the TR nodes for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>TR array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetUniqueThs\" class=\"  even\"><a name=\"_fnGetUniqueThs\"></a><a name=\"_fnGetUniqueThs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetUniqueThs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nHeader, aLayout)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Get an array of unique th elements, one for each column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nHeader</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>automatically detect the layout from this node - optional</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">aLayout</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>thead/tfoot layout from _fnDetectHeader - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {node} aReturn list of unique th's</p></p></div>\n<dt id=\"DataTable#oApi._fnGetWidestNode\" class=\"  odd\"><a name=\"_fnGetWidestNode\"></a><a name=\"_fnGetWidestNode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetWidestNode</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Get the widest node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column of interest</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>widest table node</p></p></div>\n<dt id=\"DataTable#oApi._fnInitComplete\" class=\"  even\"><a name=\"_fnInitComplete\"></a><a name=\"_fnInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnInitComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">json</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Draw the table for the first time, adding all required features</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>JSON from the server that completed the table, if using Ajax source\n   with client-side processing (optional)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnInitialise\" class=\"  odd\"><a name=\"_fnInitialise\"></a><a name=\"_fnInitialise_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnInitialise</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Draw the table for the first time, adding all required features</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLanguageCompat\" class=\"  even\"><a name=\"_fnLanguageCompat\"></a><a name=\"_fnLanguageCompat_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLanguageCompat</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Language compatibility - when certain options are given, and others aren't, we\nneed to duplicate the values over, in order to provide backwards compatibility\nwith older language files.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLoadState\" class=\"  odd\"><a name=\"_fnLoadState\"></a><a name=\"_fnLoadState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLoadState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oInit)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attempt to load a saved table state from a cookie</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oInit</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables init object so we can override settings</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLog\" class=\"  even\"><a name=\"_fnLog\"></a><a name=\"_fnLog_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLog</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iLevel, sMesg)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Log an error message</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iLevel</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>log error messages, or display them to the user</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sMesg</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>error message</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnMap\" class=\"  odd\"><a name=\"_fnMap\"></a><a name=\"_fnMap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnMap</a></span><span class=\"type-sig\"><span class=\"signature\">(oRet, oSrc, sName, <span class=\"optional\">sMappedName</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>See if a property is defined on one object, if so assign it to the other object</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oRet</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>target object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSrc</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>source object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>property</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sMappedName</td><td class=\"type type-param\">string</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>name to map too - optional, sName used if not given</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnNodeToColumnIndex\" class=\"  even\"><a name=\"_fnNodeToColumnIndex\"></a><a name=\"_fnNodeToColumnIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnNodeToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Take a TD element and convert it into a column data index (not the visible index)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row number the TD/TH can be found in</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD/TH element to find</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>index if the node is found, -1 if not</p></p></div>\n<dt id=\"DataTable#oApi._fnNodeToDataIndex\" class=\"  odd\"><a name=\"_fnNodeToDataIndex\"></a><a name=\"_fnNodeToDataIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnNodeToDataIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Take a TR element and convert it to an index in aoData</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the TR element to find</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>index if the node is found, null if not</p></p></div>\n<dt id=\"DataTable#oApi._fnPageChange\" class=\"  even\"><a name=\"_fnPageChange\"></a><a name=\"_fnPageChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, mAction)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></span></dt><dd class=\"  even\"><p>Alter the display settings to change the page</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mAction</td><td class=\"type type-param\">string | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n   or page number to jump to (integer)</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true page has changed, false - no change (no effect) eg 'first' on page 1</p></p></div>\n<dt id=\"DataTable#oApi._fnProcessingDisplay\" class=\"  odd\"><a name=\"_fnProcessingDisplay\"></a><a name=\"_fnProcessingDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnProcessingDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bShow)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display or hide the processing indicator</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Show the processing indicator (true) or not (false)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnReadCookie\" class=\"  even\"><a name=\"_fnReadCookie\"></a><a name=\"_fnReadCookie_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReadCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  even\"><p>Read an old cookie to get a cookie with an old table state</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>name of the cookie to read</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>contents of the cookie - or null if no cookie with that name found</p></p></div>\n<dt id=\"DataTable#oApi._fnReDraw\" class=\"  odd\"><a name=\"_fnReDraw\"></a><a name=\"_fnReDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Redraw the table - taking account of the various features which are enabled</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnRender\" class=\"  even\"><a name=\"_fnRender\"></a><a name=\"_fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnRender</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol)</span><span class=\"type-signature\"> &rarr; {*}</span></span></span></dt><dd class=\"  even\"><p>Call the developer defined fnRender function for a given cell (row/column) with\nthe required parameters and return the result.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData index for the row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoColumns index for the column</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Return of the developer's fnRender function</p></p></div>\n<dt id=\"DataTable#oApi._fnReOrderIndex\" class=\"  odd\"><a name=\"_fnReOrderIndex\"></a><a name=\"_fnReOrderIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReOrderIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Figure out how to reorder a display list</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {int} aiReturn index list for reordering</p></p></div>\n<dt id=\"DataTable#oApi._fnSaveState\" class=\"  even\"><a name=\"_fnSaveState\"></a><a name=\"_fnSaveState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSaveState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Save the state of a table in a cookie such that the page can be reloaded</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnScrollBarWidth\" class=\"  odd\"><a name=\"_fnScrollBarWidth\"></a><a name=\"_fnScrollBarWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollBarWidth</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Get the width of a scroll bar in this browser being used</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>width in pixels</p></p></div>\n<dt id=\"DataTable#oApi._fnScrollDraw\" class=\"  even\"><a name=\"_fnScrollDraw\"></a><a name=\"_fnScrollDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(o)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Update the various tables for resizing. It's a bit of a pig this function, but\nbasically the idea to:\n  1. Re-create the table inside the scrolling div\n  2. Take live measurements from the DOM\n  3. Apply the measurements\n  4. Clean up</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Node to add to the DOM</p></p></div>\n<dt id=\"DataTable#oApi._fnScrollingWidthAdjust\" class=\"  odd\"><a name=\"_fnScrollingWidthAdjust\"></a><a name=\"_fnScrollingWidthAdjust_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollingWidthAdjust</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Adjust a table's width to take account of scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>table node</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnServerParams\" class=\"  even\"><a name=\"_fnServerParams\"></a><a name=\"_fnServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnServerParams</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add Ajax parameters from plug-ins</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{objects} aoData name/value pairs to send to the server</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSetCellData\" class=\"  odd\"><a name=\"_fnSetCellData\"></a><a name=\"_fnSetCellData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, val)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Set the value for a specific cell, into the internal data cache</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">val</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to set</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSetObjectDataFn\" class=\"  even\"><a name=\"_fnSetObjectDataFn\"></a><a name=\"_fnSetObjectDataFn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  even\"><p>Return a function that can be used to set data from a source object, taking\ninto account the ability to use nested objects as a source</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mSource</td><td class=\"type type-param\">string | int | function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data source for the object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data set function</p></p></div>\n<dt id=\"DataTable#oApi._fnSettingsFromNode\" class=\"  odd\"><a name=\"_fnSettingsFromNode\"></a><a name=\"_fnSettingsFromNode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSettingsFromNode</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  odd\"><p>Return the settings object for a particular table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTable</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>table we are using as a dataTable</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Settings object - or null if not found</p></p></div>\n<dt id=\"DataTable#oApi._fnSort\" class=\"  even\"><a name=\"_fnSort\"></a><a name=\"_fnSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bApplyClasses)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Change the order of the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bApplyClasses</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>optional - should we apply classes or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSortAttachListener\" class=\"  odd\"><a name=\"_fnSortAttachListener\"></a><a name=\"_fnSortAttachListener_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSortAttachListener</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nNode, iDataIndex, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attach a sort handler (click) to a node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>node to attach the handler to</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDataIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column sorting index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>callback function</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSortingClasses\" class=\"  even\"><a name=\"_fnSortingClasses\"></a><a name=\"_fnSortingClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSortingClasses</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Set the sorting classes on the header, Note: it is safe to call this function \nwhen bSort and bSortClasses are false</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnStringToCss\" class=\"  odd\"><a name=\"_fnStringToCss\"></a><a name=\"_fnStringToCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnStringToCss</a></span><span class=\"type-sig\"><span class=\"signature\">(aArray1, aArray2)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Append a CSS unit (only if required) to a string</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">aArray1</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>first array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aArray2</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>second array</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 if match, 1 if length is different, 2 if no match</p></p></div>\n<dt id=\"DataTable#oApi._fnUpdateInfo\" class=\"  even\"><a name=\"_fnUpdateInfo\"></a><a name=\"_fnUpdateInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnUpdateInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Update the information elements in the display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnVisbleColumns\" class=\"  odd\"><a name=\"_fnVisbleColumns\"></a><a name=\"_fnVisbleColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnVisbleColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Get the number of visible columns</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the number of visible columns</p></p></div>\n<dt id=\"DataTable#oApi._fnVisibleToColumnIndex\" class=\"  even\"><a name=\"_fnVisibleToColumnIndex\"></a><a name=\"_fnVisibleToColumnIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnVisibleToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMatch)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Covert the index of a visible column to the index in the data array (take account\nof hidden columns)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iMatch</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Visible column index to lookup</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the data index</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: columns - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: columns</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » columns</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (21)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (21)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Column options that can be given to DataTables at initialisation time.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Allows a column's sorting to take multiple columns into account when \ndoing a sort. For example first name / last name columns make sense to \ndo a multi-column sort over the two columns.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>You can control the default sorting direction, and even alter the behaviour\nof the sort handler (i.e. only allow ascending sorting etc) using this\nparameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable filtering on the data in this column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable sorting on this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender() for a column, you may wish \nto use the original data (before rendering) for sorting and filtering \n(the default is to used the rendered data that the user can see). This \nmay be useful for dates etc. [<a href-\"#bUseRendered\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable the display of this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedCell\">fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRender\">fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column. [<a href-\"#fnRender\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDataSort\">iDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The column index (starting from 0!) that you wish a sort to be performed\nupon when this column is selected for sorting. This can be used for sorting\non hidden columns for example.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property can be used to read data from any JSON data source property,\nincluding deeply nested objects / properties. mData can be given in a\nnumber of different ways which effect its behaviour:\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source.</li>\n    <li>null - the sDefaultContent option will be used for the cell (null\n      by default, so you will need to specify the default content you want -\n      typically an empty string). This can be useful on generated columns such \n      as edit / delete action columns.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row</li>\n        <li>{string} The type call data requested - this will be 'set' when\n          setting data or 'filter', 'display', 'type', 'sort' or undefined when \n          gathering data. Note that when <i>undefined</i> is given for the type\n          DataTables expects to get the raw data for the object back</li>\n        <li>{*} Data to set when the second parameter is 'set'.</li>\n      </ul>\n      The return value from the function is not required when 'set' is the type\n      of call, but otherwise the return is what will be used for the data\n      requested.</li>\n   </ul> [<a href-\"#mData\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mDataProp\">mDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>This parameter has been replaced by mData in DataTables to ensure naming\nconsistency. mDataProp can still be used, as there is backwards compatibility\nin DataTables for this option, but it is strongly recommended that you use\nmData in preference to mDataProp.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property is the rendering partner to mData and it is suggested that\nwhen you want to manipulate data for display (including filtering, sorting etc)\nbut not altering the underlying data for the table, use this property. mData\ncan actually do everything this property can and more, but this parameter is\neasier to use since there is no 'set' option. Like mData is can be given\nin a number of different ways to effect its behaviour, with the addition of \nsupporting array syntax for easy outputting of arrays (including arrays of\nobjects):\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source and also array brackets to indicate that the data reader should\n      loop over the data source array. When characters are given between the array\n      brackets, these characters are used to join the data source array together.\n      For example: \"accounts[, ].name\" would result in a comma separated list with\n      the 'name' value from the 'accounts' array of objects.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row (based on mData)</li>\n        <li>{string} The type call data requested - this will be 'filter', 'display', \n          'type' or 'sort'.</li>\n        <li>{array|object} The full data source for the row (not based on mData)</li>\n      </ul>\n      The return value from the function is what will be used for the data\n      requested.</li>\n   </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCellType\">sCellType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Change the cell type created for the column - either TD cells or TH cells. This\ncan be useful as TH cells have semantic meaning in the table body, allowing them\nto act as a header for a row (you may wish to add scope='row' to the TH elements).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to give to each cell in this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.\nGenerally you shouldn't need this, and it is not documented on the \ngeneral DataTables.net documentation</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This parameter is only used in DataTables' server-side processing. It can\nbe exceptionally useful to know what columns are being displayed on the\nclient side, and to map these to database fields. When defined, the names\nalso allow DataTables to reorder information from the server if it comes\nback in an unexpected order (i.e. if you switch your columns around on the\nclient-side, your server-side code does not also need updating).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Defines a data source type for the sorting which can be used to read\nreal-time information from the table (updating the internally cached\nversion) prior to sorting. This allows sorting to occur on user editable\nelements such as form inputs.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The title of this column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>The type allows you to specify how the data for this column will be sorted.\nFour types (string, numeric, date and html (which will strip HTML tags\nbefore sorting)) are currently available. Note that only date formats\nunderstood by Javascript's Date() object will be accepted as type date. For\nexample: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n'date' or 'html' (by default). Further types can be adding through\nplug-ins.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Defining the width of the column, this parameter may take any CSS value\n(3em, 20px etc). DataTables apples 'smart' widths to columns which have not\nbeen given a specific width through this interface ensuring that the table\nremains readable.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aDataSort\"></a><a name=\"aDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Allows a column's sorting to take multiple columns into account when \ndoing a sort. For example first name / last name columns make sense to \ndo a multi-column sort over the two columns.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n         { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n         { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         { \"aDataSort\": [ 0, 1 ] },\n         { \"aDataSort\": [ 1, 0 ] },\n         { \"aDataSort\": [ 2, 3, 4 ] },\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"asSorting\"></a><a name=\"asSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>You can control the default sorting direction, and even alter the behaviour\nof the sort handler (i.e. only allow ascending sorting etc) using this\nparameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n         { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n         { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         null,\n         { \"asSorting\": [ \"asc\" ] },\n         { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n         { \"asSorting\": [ \"desc\" ] },\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSearchable\"></a><a name=\"bSearchable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable filtering on the data in this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bSearchable\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bSortable\"></a><a name=\"bSortable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable sorting on this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bSortable\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bSortable\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bUseRendered\"></a><a name=\"bUseRendered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender() for a column, you may wish \nto use the original data (before rendering) for sorting and filtering \n(the default is to used the rendered data that the user can see). This \nmay be useful for dates etc.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bVisible\"></a><a name=\"bVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable the display of this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bVisible\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bVisible\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.defaults.columns.fnCreatedCell\" class=\"  even\"><a name=\"fnCreatedCell\"></a><a name=\"fnCreatedCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD node that has been created</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sData</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The Data for the cell</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the whole row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row index for the aoData data store</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column index for aoColumns</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [3],\n         \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n           if ( sData == \"1.7\" ) {\n             $(nTd).css('color', 'blue')\n           }\n         }\n       } ]\n     });\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.columns.fnRender\" class=\"  odd\"><a name=\"fnRender\"></a><a name=\"fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object with the following parameters:</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row in aoData</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the row in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The settings object for this DataTables instance</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.mDataProp</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data property used for this column</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>7</div></td><td class=\"name\">val</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The current cell value</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string you which to use in the display</p></p></div>\n<dt class=\"  even\"><a name=\"iDataSort\"></a><a name=\"iDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDataSort\">iDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The column index (starting from 0!) that you wish a sort to be performed\nupon when this column is selected for sorting. This can be used for sorting\non hidden columns for example.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"iDataSort\": 1 },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"mData\"></a><a name=\"mData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property can be used to read data from any JSON data source property,\nincluding deeply nested objects / properties. mData can be given in a\nnumber of different ways which effect its behaviour:\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source.</li>\n    <li>null - the sDefaultContent option will be used for the cell (null\n      by default, so you will need to specify the default content you want -\n      typically an empty string). This can be useful on generated columns such \n      as edit / delete action columns.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row</li>\n        <li>{string} The type call data requested - this will be 'set' when\n          setting data or 'filter', 'display', 'type', 'sort' or undefined when \n          gathering data. Note that when <i>undefined</i> is given for the type\n          DataTables expects to get the raw data for the object back</li>\n        <li>{*} Data to set when the second parameter is 'set'.</li>\n      </ul>\n      The return value from the function is not required when 'set' is the type\n      of call, but otherwise the return is what will be used for the data\n      requested.</li>\n   </ul></p>\n\n<p>Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\nreflects the flexibility of this property and is consistent with the naming of\nmRender. If 'mDataProp' is given, then it will still be used by DataTables, as\nit automatically maps the old name to the new if required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Read table data from objects\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/deep.txt\",\n       \"aoColumns\": [\n         { \"mData\": \"engine\" },\n         { \"mData\": \"browser\" },\n         { \"mData\": \"platform.inner\" },\n         { \"mData\": \"platform.details.0\" },\n         { \"mData\": \"platform.details.1\" }\n       ]\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using mData as a function to provide different information for\n   // sorting, filtering and display. In this case, currency (price)\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [ 0 ],\n         \"mData\": function ( source, type, val ) {\n           if (type === 'set') {\n             source.price = val;\n             // Store the computed dislay and filter values for efficiency\n             source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n             source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n             return;\n           }\n           else if (type === 'display') {\n             return source.price_display;\n           }\n           else if (type === 'filter') {\n             return source.price_filter;\n           }\n           // 'sort', 'type' and undefined all just use the integer\n           return source.price;\n         }\n       } ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"mDataProp\"></a><a name=\"mDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mDataProp\">mDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>This parameter has been replaced by mData in DataTables to ensure naming\nconsistency. mDataProp can still be used, as there is backwards compatibility\nin DataTables for this option, but it is strongly recommended that you use\nmData in preference to mDataProp.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"mRender\"></a><a name=\"mRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property is the rendering partner to mData and it is suggested that\nwhen you want to manipulate data for display (including filtering, sorting etc)\nbut not altering the underlying data for the table, use this property. mData\ncan actually do everything this property can and more, but this parameter is\neasier to use since there is no 'set' option. Like mData is can be given\nin a number of different ways to effect its behaviour, with the addition of \nsupporting array syntax for easy outputting of arrays (including arrays of\nobjects):\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source and also array brackets to indicate that the data reader should\n      loop over the data source array. When characters are given between the array\n      brackets, these characters are used to join the data source array together.\n      For example: \"accounts[, ].name\" would result in a comma separated list with\n      the 'name' value from the 'accounts' array of objects.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row (based on mData)</li>\n        <li>{string} The type call data requested - this will be 'filter', 'display', \n          'type' or 'sort'.</li>\n        <li>{array|object} The full data source for the row (not based on mData)</li>\n      </ul>\n      The return value from the function is what will be used for the data\n      requested.</li>\n   </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Create a comma separated list from an array of objects\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/deep.txt\",\n       \"aoColumns\": [\n         { \"mData\": \"engine\" },\n         { \"mData\": \"browser\" },\n         {\n           \"mData\": \"platform\",\n           \"mRender\": \"[, ].name\"\n         }\n       ]\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Use as a function to create a link from the data source\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [\n       {\n         \"aTargets\": [ 0 ],\n         \"mData\": \"download_link\",\n         \"mRender\": function ( data, type, full ) {\n           return '<a href=\"'+data+'\">Download</a>';\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sCellType\"></a><a name=\"sCellType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCellType\">sCellType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Change the cell type created for the column - either TD cells or TH cells. This\ncan be useful as TH cells have semantic meaning in the table body, allowing them\nto act as a header for a row (you may wish to add scope='row' to the TH elements).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Make the first column use TH cells\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [ 0 ],\n         \"sCellType\": \"th\"\n       } ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sClass\"></a><a name=\"sClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to give to each cell in this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sClass\": \"my_class\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sContentPadding\"></a><a name=\"sContentPadding_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.\nGenerally you shouldn't need this, and it is not documented on the \ngeneral DataTables.net documentation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         null,\n         null,\n         null,\n         {\n           \"sContentPadding\": \"mmm\"\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sDefaultContent\"></a><a name=\"sDefaultContent_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         {\n           \"mData\": null,\n           \"sDefaultContent\": \"Edit\",\n           \"aTargets\": [ -1 ]\n         }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         null,\n         null,\n         null,\n         {\n           \"mData\": null,\n           \"sDefaultContent\": \"Edit\"\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sName\"></a><a name=\"sName_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This parameter is only used in DataTables' server-side processing. It can\nbe exceptionally useful to know what columns are being displayed on the\nclient side, and to map these to database fields. When defined, the names\nalso allow DataTables to reorder information from the server if it comes\nback in an unexpected order (i.e. if you switch your columns around on the\nclient-side, your server-side code does not also need updating).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n         { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n         { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n         { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n         { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sName\": \"engine\" },\n         { \"sName\": \"browser\" },\n         { \"sName\": \"platform\" },\n         { \"sName\": \"version\" },\n         { \"sName\": \"grade\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSortDataType\"></a><a name=\"sSortDataType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Defines a data source type for the sorting which can be used to read\nreal-time information from the table (updating the internally cached\nversion) prior to sorting. This allows sorting to occur on user editable\nelements such as form inputs.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n         { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n         { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n         { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         null,\n         null,\n         { \"sSortDataType\": \"dom-text\" },\n         { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n         { \"sSortDataType\": \"dom-select\" },\n         { \"sSortDataType\": \"dom-checkbox\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sTitle\"></a><a name=\"sTitle_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The title of this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sTitle\": \"My column title\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sType\"></a><a name=\"sType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>The type allows you to specify how the data for this column will be sorted.\nFour types (string, numeric, date and html (which will strip HTML tags\nbefore sorting)) are currently available. Note that only date formats\nunderstood by Javascript's Date() object will be accepted as type date. For\nexample: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n'date' or 'html' (by default). Further types can be adding through\nplug-ins.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sType\": \"html\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sWidth\"></a><a name=\"sWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Defining the width of the column, this parameter may take any CSS value\n(3em, 20px etc). DataTables apples 'smart' widths to columns which have not\nbeen given a specific width through this interface ensuring that the table\nremains readable.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sWidth\": \"20%\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: defaults - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: defaults</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » defaults</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (3)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (58)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (58)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Initialisation options that can be given to DataTables at initialisation \ntime.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.columns.html\">columns</a></span></dt><dd class=\"even\"><p>Column options that can be given to DataTables at initialisation time.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.html\">oLanguage</a></span></dt><dd class=\"odd\"><p>All strings that DataTables uses in the user interface that it creates\nare defined in this object, allowing you to modified them individually or\ncompletely replace them all as required.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.oSearch.html\">oSearch</a></span></dt><dd class=\"even\"><p>This parameter allows you to have define the global filtering state at\ninitialisation time. As an object the \"sSearch\" parameter must be\ndefined, but all other parameters are optional. When \"bRegex\" is true,\nthe search string will be treated as a regular expression, when false\n(default) it will be treated as a straight string. When \"bSmart\"\nDataTables will use it's smart filtering methods (to word match at\nany point in the data), when false this will not be done.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaData\">aaData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>An array of data to use for the table, passed in at initialisation which \nwill be used in preference to any data which is already in the DOM. This is\nparticularly useful for constructing tables purely in Javascript, for\nexample with a custom Ajax call.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If sorting is enabled, then DataTables will perform a first pass sort on \ninitialisation. You can define which column(s) the sort is performed upon, \nand the sorting direction, with this variable. The aaSorting array should \ncontain an array for each column to be sorted initially containing the \ncolumn's index and a direction string ('asc' or 'desc').</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>This parameter is basically identical to the aaSorting parameter, but \ncannot be overridden by user interaction with the table. What this means \nis that you could have a column (visible or hidden) which the sorting will \nalways be forced on first - any sorting after that (from the user) will \nthen be performed as required. This can be useful for grouping rows \ntogether.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>This parameter allows you to readily specify the entries in the length drop\ndown menu that DataTables shows when pagination is enabled. It can be \neither a 1D array of options which will be used for both the displayed \noption and the value, or a 2D array which will use the array in the first \nposition as the value, and the array in the second position as the \ndisplayed options (useful for language strings such as 'All').</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumnDefs\">aoColumnDefs</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Very similar to aoColumns, aoColumnDefs allows you to target a specific \ncolumn, multiple columns, or all columns, using the aTargets property of \neach object in the array. This allows great flexibility when creating \ntables, as the aoColumnDefs arrays can be of any length, targeting the \ncolumns you specifically want. aoColumnDefs may use any of the column \noptions available: <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>, but it <em>must</em>\nhave aTargets defined in each object in the array. Values in the aTargets\narray may be:\n  <ul>\n    <li>a string - class name will be matched on the TH for the column</li>\n    <li>0 or a positive integer - column index counting from the left</li>\n    <li>a negative integer - column index counting from the right</li>\n    <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>The aoColumns option in the initialisation parameter allows you to define\ndetails about the way individual columns behave. For a full list of\ncolumn options that can be set, please see \n<a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>. Note that if you use aoColumns to\ndefine your columns, you must have an entry in the array for every single\ncolumn that you have in your table (these can be null if you don't which\nto specify any options).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoSearchCols\">aoSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Basically the same as oSearch, this parameter defines the individual column\nfiltering state at initialisation time. The array must be of the same size \nas the number of columns, and each element be an object with the parameters\n\"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\naccepted and the default will be used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>An array of CSS classes that should be applied to displayed rows. This \narray may be of any length, and DataTables will apply each class \nsequentially, looping when required.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable automatic column width calculation. This can be disabled\nas an optimisation (it takes some time to calculate the widths) if the\ntables widths are passed in using aoColumns.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Deferred rendering can provide DataTables with a huge speed boost when you\nare using an Ajax or JS data source for the table. This option, when set to\ntrue, will cause DataTables to defer the creation of the table elements for\neach row until they are needed for a draw - saving a significant amount of\ntime.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDestroy\">bDestroy</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Replace a DataTable which matches the given selector and replace it with \none which has the properties of the new initialisation object passed. If no\ntable matches the selector, then the new DataTable will be constructed as\nper normal.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\nthat it allows the end user to input multiple words (space separated) and\nwill match a row containing those words, even if not in the order that was\nspecified (this allow matching across multiple columns). Note that if you\nwish to use filtering in DataTables this must remain 'true' - to remove the\ndefault filtering input box and retain filtering abilities, please use\n<a href=\"DataTable.defaults.html#sDom\">DataTable.defaults.sDom</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the table information display. This shows information \nabout the data that is currently visible on the page, including information\nabout filtered data if that action is being performed.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJQueryUI\">bJQueryUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\nslightly different and additional mark-up from what DataTables has\ntraditionally used).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Allows the end user to select the size of a formatted page from a select\nmenu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable pagination.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the display of a 'processing' indicator when the table is\nbeing processed (e.g. a sort). This is particularly useful for tables with\nlarge amounts of data where it can take a noticeable amount of time to sort\nthe entries.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRetrieve\">bRetrieve</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Retrieve the DataTables object for the given selector. Note that if the\ntable has already been initialised, this parameter will cause DataTables\nto simply return the object that has already been set up - it will not take\naccount of any changes you might have made to the initialisation object\npassed to DataTables (setting this parameter to true is an acknowledgement\nthat you understand this). bDestroy can be used to reinitialise a table if\nyou need.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollAutoCss\">bScrollAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollCollapse\">bScrollCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When vertical (y) scrolling is enabled, DataTables will force the height of\nthe table's viewport to the given height at all times (useful for layout).\nHowever, this can look odd when filtering data down to a small data set,\nand the footer is left \"floating\" further down. This parameter (when\nenabled) will cause DataTables to collapse the table's viewport down when\nthe result set will fit within the given Y height.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollInfinite\">bScrollInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable infinite scrolling for DataTables (to be used in combination with\nsScrollY). Infinite scrolling means that DataTables will continually load\ndata as a user scrolls through a table, which is very useful for large\ndataset. This cannot be used with pagination, which is automatically\ndisabled. Note - the Scroller extra for DataTables is recommended in\nin preference to this option.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Configure DataTables to use server-side processing. Note that the\nsAjaxSource parameter must also be given in order to give DataTables a\nsource to obtain the required data for each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable sorting of columns. Sorting of individual columns can be\ndisabled by the \"bSortable\" option for each column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Allows control over whether DataTables should use the top (true) unique\ncell that is found for a single column, or the bottom (false - default).\nThis is useful when using complex headers.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n'sorting_3' to the columns which are currently being sorted on. This is\npresented as a feature switch as it can increase processing time (while\nclasses are removed and added) so for large data sets you might want to\nturn this off.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable state saving. When enabled a cookie will be used to save\ntable display information such as pagination information, display length,\nfiltering and sorting. As such when the end user reloads the page the\ndisplay display will match what thy had previously set up.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCookieCallback\">fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Customise the cookie and / or the parameters being stored when using\nDataTables with state saving enabled. This function is called whenever\nthe cookie is modified, and it expects a fully formed cookie string to be\nreturned. Note that the data object passed in is a Javascript object which\nmust be converted to a string (JSON.stringify for example).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedRow\">fnCreatedRow</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function is called when a TR element is created (and all TD child\nelements have been inserted), or registered if using a DOM source, allowing\nmanipulation of the TR element (adding classes etc).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnDrawCallback\">fnDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify any aspect you want about the created DOM.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFooterCallback\">fnFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Identical to fnHeaderCallback() but for the table footer this function\nallows you to modify the table footer on every 'draw' even.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFormatNumber\">fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>When rendering large numbers in the information element for the table\n(i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\nto have a comma separator for the 'thousands' units (e.g. 1 million is\nrendered as \"1,000,000\") to help readability for the end user. This\nfunction will override the default method DataTables uses.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnHeaderCallback\">fnHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify the header row. This can be used to calculate and\ndisplay useful information about the table.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInfoCallback\">fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>The information element can be used to convey information about the current\nstate of the table. Although the internationalisation options presented by\nDataTables are quite capable of dealing with most customisations, there may\nbe times where you wish to customise the string further. This callback\nallows you to do exactly that.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInitComplete\">fnInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Called when the table has been initialised. Normally DataTables will\ninitialise sequentially and there will be no need for this function,\nhowever, this does not hold true when using external language information\nsince that is obtained using an async XHR call.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnPreDrawCallback\">fnPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Called at the very start of each table draw and can be used to cancel the\ndraw by returning false, any other return (including undefined) results in\nthe full draw occurring).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRowCallback\">fnRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function allows you to 'post process' each row after it have been\ngenerated for each table draw, but before it is rendered on screen. This\nfunction might be used for setting the row class name etc.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerData\">fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>This parameter allows you to override the default function which obtains\nthe data from the server ($.getJSON) so something more suitable for your\napplication. For example you could use POST data, or pull information from\na Gears or AIR database.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerParams\">fnServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>It is often useful to send extra data to the server when making an Ajax\nrequest - for example custom filtering information, and this callback\nfunction makes it trivial to send extra information to the server. The\npassed in parameter is the data set that has been constructed by\nDataTables, and you can add to this or modify it as you require.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoad\">fnStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Load the table state. With this function you can define from where, and how, the\nstate of a table is loaded. By default DataTables will load from its state saving\ncookie, but you might wish to use local storage (HTML5) or a server-side database.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoaded\">fnStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Callback that is called when the state has been loaded from the state saving method\nand the DataTables settings object has been modified as a result of the loaded state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoadParams\">fnStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the saved state prior to loading that state.\nThis callback is called when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state. Note that for \nplug-in authors, you should use the 'stateLoadParams' event to load parameters for \na plug-in.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateSave\">fnStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Save the table state. This function allows you to define where and how the state\ninformation for the table is stored - by default it will use a cookie, but you\nmight want to use local storage (HTML5) or a server-side database.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateSaveParams\">fnStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the state to be saved. Called when the table \nhas changed state a new state save is required. This method allows modification of\nthe state saving object prior to actually doing the save, including addition or \nother state properties or modification. Note that for plug-in authors, you should \nuse the 'stateSaveParams' event to save parameters for a plug-in.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Duration of the cookie which is used for storing session information. This\nvalue is given in seconds.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDeferLoading\">iDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|array</span></span></dt><dd class=\"  even\"><p>When enabled DataTables will not make a request to the server for the first\npage draw - rather it will use the data already on the page (no sorting etc\nwill be applied to it), thus saving on an XHR at load time. iDeferLoading\nis used to indicate that deferred loading is required, but it is also used\nto tell DataTables how many records there are in the full table (allowing\nthe information element and pagination to be displayed correctly). In the case\nwhere a filtering is applied to the table on initial load, this can be\nindicated by giving the parameter as an array, where the first element is\nthe number of records available after filtering and the second element is the\nnumber of records without filtering (allowing the table information element\nto be shown correctly).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayLength\">iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Number of rows to display on a single page when using pagination. If\nfeature enabled (bLengthChange) then the end user will be able to override\nthis to a custom setting using a pop-up menu.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayStart\">iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Define the starting point for data display when using DataTables with\npagination. Note that this parameter is the number of records, rather than\nthe page number, so if you have 10 records per page and want to start on\nthe third page, it should be \"20\".</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iScrollLoadGap\">iScrollLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The scroll gap is the amount of scrolling that is left to go before\nDataTables will load the next 'page' of data automatically. You typically\nwant a gap which is big enough that the scrolling will be smooth for the\nuser, while not so large that it will load more data than need.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>By default DataTables allows keyboard navigation of the table (sorting, paging,\nand filtering) by adding a tabindex attribute to the required elements. This\nallows you to tab through the controls and press the enter key to activate them.\nThe tabindex is default 0, meaning that the tab follows the flow of the document.\nYou can overrule this using this parameter if you wish. Use a value of -1 to\ndisable built-in keyboard navigation.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>By default DataTables will look for the property 'aaData' when obtaining\ndata from an Ajax source or for server-side processing - this parameter\nallows that property to be changed. You can use Javascript dotted object\nnotation to get a data source for multiple levels of nesting.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>You can instruct DataTables to load data from an external source using this\nparameter (use aData if you want to pass data in you already have). Simply\nprovide a url a JSON object can be obtained from. This object must include\nthe parameter 'aaData' which is the data source for the table.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This parameter can be used to override the default prefix that DataTables\nassigns to a cookie when state saving is enabled.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This initialisation variable allows you to specify exactly where in the\nDOM you want DataTables to inject the various controls it adds to the page\n(for example you might want the pagination controls at the top of the\ntable). DIV elements (with or without a custom class) can also be added to\naid styling. The follow syntax is used:\n  <ul>\n    <li>The following options are allowed: <br />\n      <ul>\n        <li>'l' - Length changing</li\n        <li>'f' - Filtering input</li>\n        <li>'t' - The table!</li>\n        <li>'i' - Information</li>\n        <li>'p' - Pagination</li>\n        <li>'r' - pRocessing</li>\n      </ul>\n    </li>\n    <li>The following constants are allowed:\n      <ul>\n        <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n        <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n      </ul>\n    </li>\n    <li>The following syntax is expected:\n      <ul>\n        <li>'&lt;' and '&gt;' - div elements</li>\n        <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n        <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n      </ul>\n    </li>\n    <li>Examples:\n      <ul>\n        <li>'&lt;\"wrapper\"flipt&gt;'</li>\n        <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n      </ul>\n    </li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables features two different built-in pagination interaction methods\n('two_button' or 'full_numbers') which present different page controls to\nthe end user. Further methods can be added using the API (see below).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollX\">sScrollX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable horizontal scrolling. When a table is too wide to fit into a certain\nlayout, or you have a large number of columns in the table, you can enable\nx-scrolling to show the table in a viewport, which can be scrolled. This\nproperty can be any CSS unit, or a number (in which case it will be treated\nas a pixel measurement).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollXInner\">sScrollXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This property can be used to force a DataTable to use more width than it\nmight otherwise do when x-scrolling is enabled. For example if you have a\ntable which requires to be well spaced, this parameter is useful for\n\"over-sizing\" the table, and thus forcing scrolling. This property can by\nany CSS unit, or a number (in which case it will be treated as a pixel\nmeasurement).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollY\">sScrollY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable vertical scrolling. Vertical scrolling will constrain the DataTable\nto the given height, and enable scrolling for any data which overflows the\ncurrent viewport. This can be used as an alternative to paging to display\na lot of data in a small area (although paging and scrolling can both be\nenabled at the same time). This property can be any CSS unit, or a number\n(in which case it will be treated as a pixel measurement).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Set the HTTP method that is used to make the Ajax call for server-side\nprocessing or Ajax sourced data.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aaData\"></a><a name=\"aaData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaData\">aaData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>An array of data to use for the table, passed in at initialisation which \nwill be used in preference to any data which is already in the DOM. This is\nparticularly useful for constructing tables purely in Javascript, for\nexample with a custom Ajax call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using a 2D array data source\n   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"aaData\": [\n         ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n         ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n       ],\n       \"aoColumns\": [\n         { \"sTitle\": \"Engine\" },\n         { \"sTitle\": \"Browser\" },\n         { \"sTitle\": \"Platform\" },\n         { \"sTitle\": \"Version\" },\n         { \"sTitle\": \"Grade\" }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using an array of objects as a data source (mData)\n   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"aaData\": [\n         {\n           \"engine\":   \"Trident\",\n           \"browser\":  \"Internet Explorer 4.0\",\n           \"platform\": \"Win 95+\",\n           \"version\":  4,\n           \"grade\":    \"X\"\n         },\n         {\n           \"engine\":   \"Trident\",\n           \"browser\":  \"Internet Explorer 5.0\",\n           \"platform\": \"Win 95+\",\n           \"version\":  5,\n           \"grade\":    \"C\"\n         }\n       ],\n       \"aoColumns\": [\n         { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n         { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n         { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n         { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n         { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aaSorting\"></a><a name=\"aaSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If sorting is enabled, then DataTables will perform a first pass sort on \ninitialisation. You can define which column(s) the sort is performed upon, \nand the sorting direction, with this variable. The aaSorting array should \ncontain an array for each column to be sorted initially containing the \ncolumn's index and a direction string ('asc' or 'desc').</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Sort by 3rd column first, and then 4th column\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSorting\": [[2,'asc'], [3,'desc']]\n     } );\n   } );\n   \n   // No initial sorting\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSorting\": []\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aaSortingFixed\"></a><a name=\"aaSortingFixed_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>This parameter is basically identical to the aaSorting parameter, but \ncannot be overridden by user interaction with the table. What this means \nis that you could have a column (visible or hidden) which the sorting will \nalways be forced on first - any sorting after that (from the user) will \nthen be performed as required. This can be useful for grouping rows \ntogether.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSortingFixed\": [[0,'asc']]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aLengthMenu\"></a><a name=\"aLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>This parameter allows you to readily specify the entries in the length drop\ndown menu that DataTables shows when pagination is enabled. It can be \neither a 1D array of options which will be used for both the displayed \noption and the value, or a 2D array which will use the array in the first \nposition as the value, and the array in the second position as the \ndisplayed options (useful for language strings such as 'All').</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n     } );\n   } );\n \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Setting the default display length as well as length menu\n   // This is likely to be wanted if you remove the '10' option which\n   // is the iDisplayLength default.\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayLength\": 25,\n       \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aoColumnDefs\"></a><a name=\"aoColumnDefs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumnDefs\">aoColumnDefs</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Very similar to aoColumns, aoColumnDefs allows you to target a specific \ncolumn, multiple columns, or all columns, using the aTargets property of \neach object in the array. This allows great flexibility when creating \ntables, as the aoColumnDefs arrays can be of any length, targeting the \ncolumns you specifically want. aoColumnDefs may use any of the column \noptions available: <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>, but it <em>must</em>\nhave aTargets defined in each object in the array. Values in the aTargets\narray may be:\n  <ul>\n    <li>a string - class name will be matched on the TH for the column</li>\n    <li>0 or a positive integer - column index counting from the left</li>\n    <li>a negative integer - column index counting from the right</li>\n    <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoColumns\"></a><a name=\"aoColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>The aoColumns option in the initialisation parameter allows you to define\ndetails about the way individual columns behave. For a full list of\ncolumn options that can be set, please see \n<a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>. Note that if you use aoColumns to\ndefine your columns, you must have an entry in the array for every single\ncolumn that you have in your table (these can be null if you don't which\nto specify any options).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoSearchCols\"></a><a name=\"aoSearchCols_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoSearchCols\">aoSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Basically the same as oSearch, this parameter defines the individual column\nfiltering state at initialisation time. The array must be of the same size \nas the number of columns, and each element be an object with the parameters\n\"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\naccepted and the default will be used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoSearchCols\": [\n         null,\n         { \"sSearch\": \"My filter\" },\n         null,\n         { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n       ]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"asStripeClasses\"></a><a name=\"asStripeClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>An array of CSS classes that should be applied to displayed rows. This \narray may be of any length, and DataTables will apply each class \nsequentially, looping when required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bAutoWidth\"></a><a name=\"bAutoWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable automatic column width calculation. This can be disabled\nas an optimisation (it takes some time to calculate the widths) if the\ntables widths are passed in using aoColumns.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bAutoWidth\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bDeferRender\"></a><a name=\"bDeferRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Deferred rendering can provide DataTables with a huge speed boost when you\nare using an Ajax or JS data source for the table. This option, when set to\ntrue, will cause DataTables to defer the creation of the table elements for\neach row until they are needed for a draw - saving a significant amount of\ntime.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/arrays.txt\",\n       \"bDeferRender\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bDestroy\"></a><a name=\"bDestroy_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDestroy\">bDestroy</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Replace a DataTable which matches the given selector and replace it with \none which has the properties of the new initialisation object passed. If no\ntable matches the selector, then the new DataTable will be constructed as\nper normal.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n     \n     // Some time later....\n     $('#example').dataTable( {\n       \"bFilter\": false,\n       \"bDestroy\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bFilter\"></a><a name=\"bFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\nthat it allows the end user to input multiple words (space separated) and\nwill match a row containing those words, even if not in the order that was\nspecified (this allow matching across multiple columns). Note that if you\nwish to use filtering in DataTables this must remain 'true' - to remove the\ndefault filtering input box and retain filtering abilities, please use\n<a href=\"DataTable.defaults.html#sDom\">DataTable.defaults.sDom</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bFilter\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bInfo\"></a><a name=\"bInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the table information display. This shows information \nabout the data that is currently visible on the page, including information\nabout filtered data if that action is being performed.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bInfo\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bJQueryUI\"></a><a name=\"bJQueryUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJQueryUI\">bJQueryUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\nslightly different and additional mark-up from what DataTables has\ntraditionally used).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bJQueryUI\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bLengthChange\"></a><a name=\"bLengthChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Allows the end user to select the size of a formatted page from a select\nmenu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bLengthChange\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bPaginate\"></a><a name=\"bPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable pagination.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bPaginate\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bProcessing\"></a><a name=\"bProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the display of a 'processing' indicator when the table is\nbeing processed (e.g. a sort). This is particularly useful for tables with\nlarge amounts of data where it can take a noticeable amount of time to sort\nthe entries.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bProcessing\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bRetrieve\"></a><a name=\"bRetrieve_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRetrieve\">bRetrieve</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Retrieve the DataTables object for the given selector. Note that if the\ntable has already been initialised, this parameter will cause DataTables\nto simply return the object that has already been set up - it will not take\naccount of any changes you might have made to the initialisation object\npassed to DataTables (setting this parameter to true is an acknowledgement\nthat you understand this). bDestroy can be used to reinitialise a table if\nyou need.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     initTable();\n     tableActions();\n   } );\n   \n   function initTable ()\n   {\n     return $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false,\n       \"bRetrieve\": true\n     } );\n   }\n   \n   function tableActions ()\n   {\n     var oTable = initTable();\n     // perform API operations with oTable \n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bScrollAutoCss\"></a><a name=\"bScrollAutoCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollAutoCss\">bScrollAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollAutoCss\": false,\n       \"sScrollY\": \"200px\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bScrollCollapse\"></a><a name=\"bScrollCollapse_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollCollapse\">bScrollCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When vertical (y) scrolling is enabled, DataTables will force the height of\nthe table's viewport to the given height at all times (useful for layout).\nHowever, this can look odd when filtering data down to a small data set,\nand the footer is left \"floating\" further down. This parameter (when\nenabled) will cause DataTables to collapse the table's viewport down when\nthe result set will fit within the given Y height.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200\",\n       \"bScrollCollapse\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bScrollInfinite\"></a><a name=\"bScrollInfinite_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollInfinite\">bScrollInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable infinite scrolling for DataTables (to be used in combination with\nsScrollY). Infinite scrolling means that DataTables will continually load\ndata as a user scrolls through a table, which is very useful for large\ndataset. This cannot be used with pagination, which is automatically\ndisabled. Note - the Scroller extra for DataTables is recommended in\nin preference to this option.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollInfinite\": true,\n       \"bScrollCollapse\": true,\n       \"sScrollY\": \"200px\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bServerSide\"></a><a name=\"bServerSide_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Configure DataTables to use server-side processing. Note that the\nsAjaxSource parameter must also be given in order to give DataTables a\nsource to obtain the required data for each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"xhr.php\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSort\"></a><a name=\"bSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable sorting of columns. Sorting of individual columns can be\ndisabled by the \"bSortable\" option for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bSort\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bSortCellsTop\"></a><a name=\"bSortCellsTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Allows control over whether DataTables should use the top (true) unique\ncell that is found for a single column, or the bottom (false - default).\nThis is useful when using complex headers.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bSortCellsTop\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSortClasses\"></a><a name=\"bSortClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n'sorting_3' to the columns which are currently being sorted on. This is\npresented as a feature switch as it can increase processing time (while\nclasses are removed and added) so for large data sets you might want to\nturn this off.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bSortClasses\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bStateSave\"></a><a name=\"bStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable state saving. When enabled a cookie will be used to save\ntable display information such as pagination information, display length,\nfiltering and sorting. As such when the end user reloads the page the\ndisplay display will match what thy had previously set up.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bStateSave\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.defaults.fnCookieCallback\" class=\"  even\"><a name=\"fnCookieCallback\"></a><a name=\"fnCookieCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Customise the cookie and / or the parameters being stored when using\nDataTables with state saving enabled. This function is called whenever\nthe cookie is modified, and it expects a fully formed cookie string to be\nreturned. Note that the data object passed in is a Javascript object which\nmust be converted to a string (JSON.stringify for example).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the cookie defined by DataTables</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data to be stored in the cookie</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sExpires</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cookie expires string</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sPath</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Path of the cookie to set</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Cookie formatted string (which should be encoded by\n   using encodeURIComponent())</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n         // Customise oData or sName or whatever else here\n         return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnCreatedRow\" class=\"  odd\"><a name=\"fnCreatedRow\"></a><a name=\"fnCreatedRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedRow</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function is called when a TR element is created (and all TD child\nelements have been inserted), or registered if using a DOM source, allowing\nmanipulation of the TR element (adding classes etc).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nRow</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the current row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Raw data array for this row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDataIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of this row in aoData</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n         // Bold the grade for all 'A' grade browsers\n         if ( aData[4] == \"A\" )\n         {\n           $('td:eq(4)', nRow).html( '<b>A</b>' );\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnDrawCallback\" class=\"  even\"><a name=\"fnDrawCallback\"></a><a name=\"fnDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify any aspect you want about the created DOM.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnDrawCallback\": function( oSettings ) {\n         alert( 'DataTables has redrawn the table' );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnFooterCallback\" class=\"  odd\"><a name=\"fnFooterCallback\"></a><a name=\"fnFooterCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Identical to fnHeaderCallback() but for the table footer this function\nallows you to modify the table footer on every 'draw' even.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nFoot</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the footer</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Full table data (as derived from the original HTML)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display starting point in the \n   display array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display ending point in the \n   display array</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">aiDisplay</td><td class=\"type type-param\">array int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to translate the visual position\n   to the full data array</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n         nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnFormatNumber\" class=\"  even\"><a name=\"fnFormatNumber\"></a><a name=\"fnFormatNumber_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>When rendering large numbers in the information element for the table\n(i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\nto have a comma separator for the 'thousands' units (e.g. 1 million is\nrendered as \"1,000,000\") to help readability for the end user. This\nfunction will override the default method DataTables uses.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iIn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>number to be formatted</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>formatted string for DataTables to show the number</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnFormatNumber\": function ( iIn ) {\n         if ( iIn &lt; 1000 ) {\n           return iIn;\n         } else {\n           var \n             s=(iIn+\"\"), \n             a=s.split(\"\"), out=\"\", \n             iLen=s.length;\n           \n           for ( var i=0 ; i&lt;iLen ; i++ ) {\n             if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n               out = \"'\"+out;\n             }\n             out = a[iLen-i-1]+out;\n           }\n         }\n         return out;\n       };\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnHeaderCallback\" class=\"  odd\"><a name=\"fnHeaderCallback\"></a><a name=\"fnHeaderCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify the header row. This can be used to calculate and\ndisplay useful information about the table.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nHead</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the header</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Full table data (as derived from the original HTML)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display starting point in the\n   display array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display ending point in the\n   display array</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">aiDisplay</td><td class=\"type type-param\">array int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to translate the visual position\n   to the full data array</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n         nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnInfoCallback\" class=\"  even\"><a name=\"fnInfoCallback\"></a><a name=\"fnInfoCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>The information element can be used to convey information about the current\nstate of the table. Although the internationalisation options presented by\nDataTables are quite capable of dealing with most customisations, there may\nbe times where you wish to customise the string further. This callback\nallows you to do exactly that.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Starting position in data for the draw</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>End position in data for the draw</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iMax</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Total number of rows in the table (regardless of\n   filtering)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">iTotal</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Total number of rows in the data set, after filtering</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">sPre</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The string that DataTables has formatted using it's\n   own rules</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string to be displayed in the information element.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $('#example').dataTable( {\n     \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n       return iStart +\" to \"+ iEnd;\n     }\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnInitComplete\" class=\"  odd\"><a name=\"fnInitComplete\"></a><a name=\"fnInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Called when the table has been initialised. Normally DataTables will\ninitialise sequentially and there will be no need for this function,\nhowever, this does not hold true when using external language information\nsince that is obtained using an async XHR call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The JSON object request from the server - only\n   present if client-side Ajax sourced data is used</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnInitComplete\": function(oSettings, json) {\n         alert( 'DataTables has finished its initialisation.' );\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnPreDrawCallback\" class=\"  even\"><a name=\"fnPreDrawCallback\"></a><a name=\"fnPreDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Called at the very start of each table draw and can be used to cancel the\ndraw by returning false, any other return (including undefined) results in\nthe full draw occurring).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>False will cancel the draw, anything else (including no\n   return) will allow it to complete.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnPreDrawCallback\": function( oSettings ) {\n         if ( $('#test').val() == 1 ) {\n           return false;\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnRowCallback\" class=\"  odd\"><a name=\"fnRowCallback\"></a><a name=\"fnRowCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function allows you to 'post process' each row after it have been\ngenerated for each table draw, but before it is rendered on screen. This\nfunction might be used for setting the row class name etc.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nRow</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the current row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Raw data array for this row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDisplayIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The display index for the current table draw</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iDisplayIndexFull</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of the data in the full list of\n   rows (after filtering)</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n         // Bold the grade for all 'A' grade browsers\n         if ( aData[4] == \"A\" )\n         {\n           $('td:eq(4)', nRow).html( '<b>A</b>' );\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnServerData\" class=\"  even\"><a name=\"fnServerData\"></a><a name=\"fnServerData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>This parameter allows you to override the default function which obtains\nthe data from the server ($.getJSON) so something more suitable for your\napplication. For example you could use POST data, or pull information from\na Gears or AIR database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSource</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>HTTP source to obtain the data from (sAjaxSource)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aoData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>A key/value pair object containing the data to send\n   to the server</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>to be called on completion of the data get\n   process that will draw the data on the page.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // POST data to server\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bProcessing\": true,\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"xhr.php\",\n       \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n         oSettings.jqXHR = $.ajax( {\n           \"dataType\": 'json', \n           \"type\": \"POST\", \n           \"url\": sSource, \n           \"data\": aoData, \n           \"success\": fnCallback\n         } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnServerParams\" class=\"  odd\"><a name=\"fnServerParams\"></a><a name=\"fnServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>It is often useful to send extra data to the server when making an Ajax\nrequest - for example custom filtering information, and this callback\nfunction makes it trivial to send extra information to the server. The\npassed in parameter is the data set that has been constructed by\nDataTables, and you can add to this or modify it as you require.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">aoData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data array (array of objects which are name/value\n   pairs) that has been constructed by DataTables and will be sent to the\n   server. In the case of Ajax sourced data with server-side processing\n   this will be an empty array, for server-side processing there will be a\n   significant number of parameters!</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Ensure that you modify the aoData array passed in,\n   as this is passed by reference.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bProcessing\": true,\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"fnServerParams\": function ( aoData ) {\n         aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoad\" class=\"  even\"><a name=\"fnStateLoad\"></a><a name=\"fnStateLoad_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Load the table state. With this function you can define from where, and how, the\nstate of a table is loaded. By default DataTables will load from its state saving\ncookie, but you might wish to use local storage (HTML5) or a server-side database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The DataTables state object to be loaded</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoad\": function (oSettings) {\n         var o;\n         \n         // Send an Ajax request to the server to get the data. Note that\n         // this is a synchronous request.\n         $.ajax( {\n           \"url\": \"/state_load\",\n           \"async\": false,\n           \"dataType\": \"json\",\n           \"success\": function (json) {\n             o = json;\n           }\n         } );\n         \n         return o;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoaded\" class=\"  odd\"><a name=\"fnStateLoaded\"></a><a name=\"fnStateLoaded_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Callback that is called when the state has been loaded from the state saving method\nand the DataTables settings object has been modified as a result of the loaded state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object that was loaded</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Show an alert with the filtering value that was saved\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoaded\": function (oSettings, oData) {\n         alert( 'Saved filter was: '+oData.oSearch.sSearch );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoadParams\" class=\"  even\"><a name=\"fnStateLoadParams\"></a><a name=\"fnStateLoadParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the saved state prior to loading that state.\nThis callback is called when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state. Note that for \nplug-in authors, you should use the 'stateLoadParams' event to load parameters for \na plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object that is to be loaded</p></td></tr>\n\t</tbody>\n</table><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Remove a saved filter, so filtering is never loaded\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoadParams\": function (oSettings, oData) {\n         oData.oSearch.sSearch = \"\";\n       }\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Disallow state loading by returning false\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoadParams\": function (oSettings, oData) {\n         return false;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateSave\" class=\"  odd\"><a name=\"fnStateSave\"></a><a name=\"fnStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Save the table state. This function allows you to define where and how the state\ninformation for the table is stored - by default it will use a cookie, but you\nmight want to use local storage (HTML5) or a server-side database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object to be saved</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateSave\": function (oSettings, oData) {\n         // Send an Ajax request to the server with the state object\n         $.ajax( {\n           \"url\": \"/state_save\",\n           \"data\": oData,\n           \"dataType\": \"json\",\n           \"method\": \"POST\"\n           \"success\": function () {}\n         } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateSaveParams\" class=\"  even\"><a name=\"fnStateSaveParams\"></a><a name=\"fnStateSaveParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the state to be saved. Called when the table \nhas changed state a new state save is required. This method allows modification of\nthe state saving object prior to actually doing the save, including addition or \nother state properties or modification. Note that for plug-in authors, you should \nuse the 'stateSaveParams' event to save parameters for a plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object to be saved</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Remove a saved filter, so filtering is never saved\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateSaveParams\": function (oSettings, oData) {\n         oData.oSearch.sSearch = \"\";\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt class=\"  odd\"><a name=\"iCookieDuration\"></a><a name=\"iCookieDuration_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Duration of the cookie which is used for storing session information. This\nvalue is given in seconds.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iCookieDuration\": 60*60*24; // 1 day\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iDeferLoading\"></a><a name=\"iDeferLoading_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDeferLoading\">iDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|array</span></span></dt><dd class=\"  even\"><p>When enabled DataTables will not make a request to the server for the first\npage draw - rather it will use the data already on the page (no sorting etc\nwill be applied to it), thus saving on an XHR at load time. iDeferLoading\nis used to indicate that deferred loading is required, but it is also used\nto tell DataTables how many records there are in the full table (allowing\nthe information element and pagination to be displayed correctly). In the case\nwhere a filtering is applied to the table on initial load, this can be\nindicated by giving the parameter as an array, where the first element is\nthe number of records available after filtering and the second element is the\nnumber of records without filtering (allowing the table information element\nto be shown correctly).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // 57 records available in the table, no filtering applied\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"iDeferLoading\": 57\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // 57 records after filtering, 100 without filtering (an initial filter applied)\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"iDeferLoading\": [ 57, 100 ],\n       \"oSearch\": {\n         \"sSearch\": \"my_filter\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"iDisplayLength\"></a><a name=\"iDisplayLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayLength\">iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Number of rows to display on a single page when using pagination. If\nfeature enabled (bLengthChange) then the end user will be able to override\nthis to a custom setting using a pop-up menu.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayLength\": 50\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iDisplayStart\"></a><a name=\"iDisplayStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayStart\">iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Define the starting point for data display when using DataTables with\npagination. Note that this parameter is the number of records, rather than\nthe page number, so if you have 10 records per page and want to start on\nthe third page, it should be \"20\".</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayStart\": 20\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"iScrollLoadGap\"></a><a name=\"iScrollLoadGap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iScrollLoadGap\">iScrollLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The scroll gap is the amount of scrolling that is left to go before\nDataTables will load the next 'page' of data automatically. You typically\nwant a gap which is big enough that the scrolling will be smooth for the\nuser, while not so large that it will load more data than need.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollInfinite\": true,\n       \"bScrollCollapse\": true,\n       \"sScrollY\": \"200px\",\n       \"iScrollLoadGap\": 50\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iTabIndex\"></a><a name=\"iTabIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>By default DataTables allows keyboard navigation of the table (sorting, paging,\nand filtering) by adding a tabindex attribute to the required elements. This\nallows you to tab through the controls and press the enter key to activate them.\nThe tabindex is default 0, meaning that the tab follows the flow of the document.\nYou can overrule this using this parameter if you wish. Use a value of -1 to\ndisable built-in keyboard navigation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iTabIndex\": 1\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sAjaxDataProp\"></a><a name=\"sAjaxDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>By default DataTables will look for the property 'aaData' when obtaining\ndata from an Ajax source or for server-side processing - this parameter\nallows that property to be changed. You can use Javascript dotted object\nnotation to get a data source for multiple levels of nesting.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Get data from { \"data\": [...] }\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/data.txt\",\n       \"sAjaxDataProp\": \"data\"\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Get data from { \"data\": { \"inner\": [...] } }\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/data.txt\",\n       \"sAjaxDataProp\": \"data.inner\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sAjaxSource\"></a><a name=\"sAjaxSource_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>You can instruct DataTables to load data from an external source using this\nparameter (use aData if you want to pass data in you already have). Simply\nprovide a url a JSON object can be obtained from. This object must include\nthe parameter 'aaData' which is the data source for the table.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sCookiePrefix\"></a><a name=\"sCookiePrefix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This parameter can be used to override the default prefix that DataTables\nassigns to a cookie when state saving is enabled.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sCookiePrefix\": \"my_datatable_\",\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sDom\"></a><a name=\"sDom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This initialisation variable allows you to specify exactly where in the\nDOM you want DataTables to inject the various controls it adds to the page\n(for example you might want the pagination controls at the top of the\ntable). DIV elements (with or without a custom class) can also be added to\naid styling. The follow syntax is used:\n  <ul>\n    <li>The following options are allowed: <br />\n      <ul>\n        <li>'l' - Length changing</li\n        <li>'f' - Filtering input</li>\n        <li>'t' - The table!</li>\n        <li>'i' - Information</li>\n        <li>'p' - Pagination</li>\n        <li>'r' - pRocessing</li>\n      </ul>\n    </li>\n    <li>The following constants are allowed:\n      <ul>\n        <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n        <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n      </ul>\n    </li>\n    <li>The following syntax is expected:\n      <ul>\n        <li>'&lt;' and '&gt;' - div elements</li>\n        <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n        <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n      </ul>\n    </li>\n    <li>Examples:\n      <ul>\n        <li>'&lt;\"wrapper\"flipt&gt;'</li>\n        <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n      </ul>\n    </li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sPaginationType\"></a><a name=\"sPaginationType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables features two different built-in pagination interaction methods\n('two_button' or 'full_numbers') which present different page controls to\nthe end user. Further methods can be added using the API (see below).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sPaginationType\": \"full_numbers\"\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sScrollX\"></a><a name=\"sScrollX_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollX\">sScrollX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable horizontal scrolling. When a table is too wide to fit into a certain\nlayout, or you have a large number of columns in the table, you can enable\nx-scrolling to show the table in a viewport, which can be scrolled. This\nproperty can be any CSS unit, or a number (in which case it will be treated\nas a pixel measurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollX\": \"100%\",\n       \"bScrollCollapse\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sScrollXInner\"></a><a name=\"sScrollXInner_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollXInner\">sScrollXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This property can be used to force a DataTable to use more width than it\nmight otherwise do when x-scrolling is enabled. For example if you have a\ntable which requires to be well spaced, this parameter is useful for\n\"over-sizing\" the table, and thus forcing scrolling. This property can by\nany CSS unit, or a number (in which case it will be treated as a pixel\nmeasurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollX\": \"100%\",\n       \"sScrollXInner\": \"110%\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sScrollY\"></a><a name=\"sScrollY_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollY\">sScrollY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable vertical scrolling. Vertical scrolling will constrain the DataTable\nto the given height, and enable scrolling for any data which overflows the\ncurrent viewport. This can be used as an alternative to paging to display\na lot of data in a small area (although paging and scrolling can both be\nenabled at the same time). This property can be any CSS unit, or a number\n(in which case it will be treated as a pixel measurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sServerMethod\"></a><a name=\"sServerMethod_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Set the HTTP method that is used to make the Ajax call for server-side\nprocessing or Ajax sourced data.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/post.php\",\n       \"sServerMethod\": \"POST\"\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oLanguage - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oLanguage</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » oLanguage</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (2)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (12)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (12)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>All strings that DataTables uses in the user interface that it creates\nare defined in this object, allowing you to modified them individually or\ncompletely replace them all as required.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.oAria.html\">oAria</a></span></dt><dd class=\"even\"><p>Strings that are used for WAI-ARIA labels and controls only (these are not\nactually visible on the page, but will be read by screenreaders, and thus\nmust be internationalised as well).</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.oPaginate.html\">oPaginate</a></span></dt><dd class=\"odd\"><p>Pagination string used by DataTables for the two built-in pagination\ncontrol types (\"two_button\" and \"full_numbers\")</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sEmptyTable\">sEmptyTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This string is shown in preference to sZeroRecords when the table is\nempty of data (regardless of filtering). Note that this is an optional\nparameter - if it is not given, the value of sZeroRecords will be used\ninstead (either the default or given value).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfo\">sInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This string gives information to the end user about the information that \nis current on display on the page. The <em>START</em>, <em>END</em> and <em>TOTAL</em> \nvariables are all dynamically replaced as the table display updates, and \ncan be freely moved or removed as the language requirements change.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoEmpty\">sInfoEmpty</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Display information string for when the table is empty. Typically the \nformat of this string should match sInfo.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoFiltered\">sInfoFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When a user filters the information in a table, this string is appended \nto the information (sInfo) to give an idea of how strong the filtering \nis. The variable <em>MAX</em> is dynamically updated.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoPostFix\">sInfoPostFix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>If can be useful to append extra information to the info string at times,\nand this variable does exactly that. This information will be appended to\nthe sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\nbeing used) at all times.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoThousands\">sInfoThousands</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables has a build in number formatter (fnFormatNumber) which is used\nto format large numbers that are used in the table information. By\ndefault a comma is used, but this can be trivially changed to any\ncharacter you wish with this parameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLengthMenu\">sLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Detail the action that will be taken when the drop down menu for the\npagination length option is changed. The '<em>MENU</em>' variable is replaced\nwith a default select list of 10, 25, 50 and 100, and can be replaced\nwith a custom select box if required.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLoadingRecords\">sLoadingRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When using Ajax sourced data and during the first draw when DataTables is\ngathering the data, this message is shown in an empty row in the table to\nindicate to the end user the the data is being loaded. Note that this\nparameter is not used when loading data by server-side processing, just\nAjax sourced data with client-side processing.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sProcessing\">sProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text which is displayed when the table is processing a user action\n(usually a sort command or similar).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Details the actions that will be taken when the user types into the\nfiltering input text box. The variable \"<em>INPUT</em>\", if used in the string,\nis replaced with the HTML text box for the filtering input allowing\ncontrol over where it appears in the string. If \"<em>INPUT</em>\" is not given\nthen the input box is appended to the string automatically.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sUrl\">sUrl</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>All of the language information can be stored in a file on the\nserver-side, which DataTables will look up if this parameter is passed.\nIt must store the URL of the language file, which is in a JSON format,\nand the object has the same properties as the oLanguage object in the\ninitialiser object (i.e. the above parameters). Please refer to one of\nthe example language files to see how this works in action.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sZeroRecords\">sZeroRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text shown inside the table records when the is no information to be\ndisplayed after filtering. sEmptyTable is shown when there is simply no\ninformation in the table at all (regardless of filtering).</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sEmptyTable\"></a><a name=\"sEmptyTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sEmptyTable\">sEmptyTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This string is shown in preference to sZeroRecords when the table is\nempty of data (regardless of filtering). Note that this is an optional\nparameter - if it is not given, the value of sZeroRecords will be used\ninstead (either the default or given value).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sEmptyTable\": \"No data available in table\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfo\"></a><a name=\"sInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfo\">sInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This string gives information to the end user about the information that \nis current on display on the page. The <em>START</em>, <em>END</em> and <em>TOTAL</em> \nvariables are all dynamically replaced as the table display updates, and \ncan be freely moved or removed as the language requirements change.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sInfoEmpty\"></a><a name=\"sInfoEmpty_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoEmpty\">sInfoEmpty</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Display information string for when the table is empty. Typically the \nformat of this string should match sInfo.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoEmpty\": \"No entries to show\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfoFiltered\"></a><a name=\"sInfoFiltered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoFiltered\">sInfoFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When a user filters the information in a table, this string is appended \nto the information (sInfo) to give an idea of how strong the filtering \nis. The variable <em>MAX</em> is dynamically updated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sInfoPostFix\"></a><a name=\"sInfoPostFix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoPostFix\">sInfoPostFix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>If can be useful to append extra information to the info string at times,\nand this variable does exactly that. This information will be appended to\nthe sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\nbeing used) at all times.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoPostFix\": \"All records shown are derived from real information.\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfoThousands\"></a><a name=\"sInfoThousands_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoThousands\">sInfoThousands</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables has a build in number formatter (fnFormatNumber) which is used\nto format large numbers that are used in the table information. By\ndefault a comma is used, but this can be trivially changed to any\ncharacter you wish with this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoThousands\": \"'\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sLengthMenu\"></a><a name=\"sLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLengthMenu\">sLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Detail the action that will be taken when the drop down menu for the\npagination length option is changed. The '<em>MENU</em>' variable is replaced\nwith a default select list of 10, 25, 50 and 100, and can be replaced\nwith a custom select box if required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Language change only\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLengthMenu\": \"Display _MENU_ records\"\n       }\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Language and options change\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLengthMenu\": 'Display <select>'+\n           '<option value=\"10\">10</option>'+\n           '<option value=\"20\">20</option>'+\n           '<option value=\"30\">30</option>'+\n           '<option value=\"40\">40</option>'+\n           '<option value=\"50\">50</option>'+\n           '<option value=\"-1\">All</option>'+\n           '</select> records'\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sLoadingRecords\"></a><a name=\"sLoadingRecords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLoadingRecords\">sLoadingRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When using Ajax sourced data and during the first draw when DataTables is\ngathering the data, this message is shown in an empty row in the table to\nindicate to the end user the the data is being loaded. Note that this\nparameter is not used when loading data by server-side processing, just\nAjax sourced data with client-side processing.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLoadingRecords\": \"Please wait - loading...\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sProcessing\"></a><a name=\"sProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sProcessing\">sProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text which is displayed when the table is processing a user action\n(usually a sort command or similar).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sProcessing\": \"DataTables is currently busy\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSearch\"></a><a name=\"sSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Details the actions that will be taken when the user types into the\nfiltering input text box. The variable \"<em>INPUT</em>\", if used in the string,\nis replaced with the HTML text box for the filtering input allowing\ncontrol over where it appears in the string. If \"<em>INPUT</em>\" is not given\nthen the input box is appended to the string automatically.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Input text box will be appended at the end automatically\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sSearch\": \"Filter records:\"\n       }\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Specify where the filter should appear\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sSearch\": \"Apply filter _INPUT_ to table\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sUrl\"></a><a name=\"sUrl_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sUrl\">sUrl</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>All of the language information can be stored in a file on the\nserver-side, which DataTables will look up if this parameter is passed.\nIt must store the URL of the language file, which is in a JSON format,\nand the object has the same properties as the oLanguage object in the\ninitialiser object (i.e. the above parameters). Please refer to one of\nthe example language files to see how this works in action.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sZeroRecords\"></a><a name=\"sZeroRecords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sZeroRecords\">sZeroRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text shown inside the table records when the is no information to be\ndisplayed after filtering. sEmptyTable is shown when there is simply no\ninformation in the table at all (regardless of filtering).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sZeroRecords\": \"No records to display\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oAria.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oAria - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oAria</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a> » <a href=\"DataTable.defaults.oLanguage.html\">.oLanguage</a>.</span> » oAria</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Strings that are used for WAI-ARIA labels and controls only (these are not\nactually visible on the page, but will be read by screenreaders, and thus\nmust be internationalised as well).</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortAscending\">sSortAscending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>ARIA label that is added to the table headers when the column may be\nsorted ascending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDescending\">sSortDescending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>ARIA label that is added to the table headers when the column may be\nsorted descending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sSortAscending\"></a><a name=\"sSortAscending_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortAscending\">sSortAscending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>ARIA label that is added to the table headers when the column may be\nsorted ascending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oAria\": {\n           \"sSortAscending\": \" - click/return to sort ascending\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSortDescending\"></a><a name=\"sSortDescending_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDescending\">sSortDescending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>ARIA label that is added to the table headers when the column may be\nsorted descending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oAria\": {\n           \"sSortDescending\": \" - click/return to sort descending\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oPaginate.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oPaginate - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oPaginate</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a> » <a href=\"DataTable.defaults.oLanguage.html\">.oLanguage</a>.</span> » oPaginate</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Pagination string used by DataTables for the two built-in pagination\ncontrol types (\"two_button\" and \"full_numbers\")</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sFirst\">sFirst</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the first page.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLast\">sLast</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the last page.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sNext\">sNext</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use for the 'next' pagination button (to take the user to the \nnext page).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPrevious\">sPrevious</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use for the 'previous' pagination button (to take the user to <br />\nthe previous page).</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sFirst\"></a><a name=\"sFirst_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sFirst\">sFirst</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the first page.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sFirst\": \"First page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sLast\"></a><a name=\"sLast_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLast\">sLast</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the last page.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sLast\": \"Last page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sNext\"></a><a name=\"sNext_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sNext\">sNext</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use for the 'next' pagination button (to take the user to the \nnext page).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sNext\": \"Next page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sPrevious\"></a><a name=\"sPrevious_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPrevious\">sPrevious</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use for the 'previous' pagination button (to take the user to <br />\nthe previous page).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sPrevious\": \"Previous page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » oSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>This parameter allows you to have define the global filtering state at\ninitialisation time. As an object the \"sSearch\" parameter must be\ndefined, but all other parameters are optional. When \"bRegex\" is true,\nthe search string will be treated as a regular expression, when false\n(default) it will be treated as a straight string. When \"bSmart\"\nDataTables will use it's smart filtering methods (to word match at\nany point in the data), when false this will not be done.</p><dl class=\"details\">\n\t\n</dl>\n<h3>Example</h3>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oSearch\": {\"sSearch\": \"Initial search\"}\n     } );\n   } )</pre>\n    </div>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.ext.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: ext - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: ext</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » ext</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Extension object for DataTables that is used to provide all extension options.</p>\n\n<p>Note that the <i>DataTable.ext</i> object is available through\n<i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\nalso aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.ext.html\">DataTable.models.ext</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: DataTable - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: DataTable</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (4)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (22)</a></td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td><a href=\"#summary_events\">Events (11)</a></td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (22)</a></td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td><a href=\"#summary_events\">Events (11)</a></td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"DataTable\" class=\"  even\"><a name=\"DataTable\"></a><a name=\"DataTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new DataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">oInit</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>DataTables is a plug-in for the jQuery Javascript library. It is a \nhighly flexible tool, based upon the foundations of progressive \nenhancement, which will add advanced interaction controls to any \nHTML table. For a full list of features please refer to\n<a href=\"http://datatables.net\">DataTables.net</a>.</p>\n\n<p>Note that the <i>DataTable</i> object is not a global variable but is\naliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \nit may be  accessed.</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oInit</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\">{}</td><td class=\"description last\"><p>Configuration object for DataTables. Options\n   are defined by <a href=\"DataTable.defaults.html\">DataTable.defaults</a></p></td></tr>\n\t</tbody>\n</table><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Basic initialisation\n   $(document).ready( function {\n     $('#example').dataTable();\n   } );\n \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Initialisation with configuration options - in this case, disable\n   // pagination and sorting.\n   $(document).ready( function {\n     $('#example').dataTable( {\n       \"bPaginate\": false,\n       \"bSort\": false \n     } );\n   } );</pre>\n    </div>\n</div>\n</dl><h3 class=\"subsection-title\">Requires</h3>\n<ul>\n\t<li>module:jQuery</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.html\">defaults</a></span></dt><dd class=\"even\"><p>Initialisation options that can be given to DataTables at initialisation \ntime.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.ext.html\">ext</a></span></dt><dd class=\"odd\"><p>Extension object for DataTables that is used to provide all extension options. [<a href=\"DataTable.ext.html\">...</a>] </p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.html\">models</a></span></dt><dd class=\"even\"><p>Object models container, for the various models that DataTables has available\nto it. These models define the objects that are used to hold the active state \nand configuration of the table.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"34cdb56b2c.html\">oApi</a></span></dt><dd class=\"odd\"><p>Reference to internal functions for use by plug-in developers. Note that these\nmethods are references to internal functions and are considered to be private.\nIf you use these methods, be aware that they are liable to change between versions\n(check the upgrade notes).</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#version\">version</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#$\">$</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Perform a jQuery selector action on the table's TR elements (from the tbody) and\nreturn the resulting jQuery object.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_\">_</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Almost identical to $ in operation, but in this case returns the data for the matched\nrows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\nrather than any descendants, so the data can be obtained for the row/cell. If matching\nrows are found, the data returned is the original data array/object that was used to <br />\ncreate the row (or a generated array if from a DOM source). [<a href-\"#_\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnAddData\">fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Add a single new row or multiple rows of data to the table. Please note\nthat this is suitable for client-side processing only - if you are using \nserver-side processing (i.e. \"bServerSide\": true), then to add data, you\nmust add it to the data source, i.e. the server-side, through an Ajax call.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnAdjustColumnSizing\">fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>This function will make DataTables recalculate the column sizes, based on the data \ncontained in the table and the sizes applied to the columns (in the DOM, CSS or \nthrough the sWidth parameter). This can be useful when the width of the table's \nparent element changes (for example a window resize).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnClearTable\">fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Quickly and simply clear a table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnClose\">fnClose</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>The exact opposite of 'opening' a row, this function will close any rows which \nare currently 'open'.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDeleteRow\">fnDeleteRow</a></span><span class=\"type-sig\"><span class=\"signature\">(mTarget, <span class=\"optional\">fnCallBack</span>, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Remove a row for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDestroy\">fnDestroy</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRemove</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Restore the table to it's original state in the DOM by removing all of DataTables \nenhancements, alterations to the DOM structure of the table and event listeners.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDraw\">fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bComplete</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Redraw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnFilter\">fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(sInput, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRegex</span>, <span class=\"optional\">bSmart</span>, <span class=\"optional\">bShowGlobal</span>, <span class=\"optional\">bCaseInsensitive</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Filter the input based on data</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetData\">fnGetData</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">mRow</span>, <span class=\"optional\">iCol</span>)</span><span class=\"type-signature\"> &rarr; {array|object|string}</span></span></dt><dd class=\"  even\"><p>Get the data for the whole table, an individual row or an individual cell based on the \nprovided parameters.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetNodes\">fnGetNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">iRow</span>)</span><span class=\"type-signature\"> &rarr; {array|node}</span></span></dt><dd class=\"  odd\"><p>Get an array of the TR nodes that are used in the table's body. Note that you will \ntypically want to use the '$' API method in preference to this as it is more \nflexible.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetPosition\">fnGetPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Get the array indexes of a particular cell from it's DOM element\nand column index including hidden columns</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnIsOpen\">fnIsOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Check to see if a row is 'open' or not.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnOpen\">fnOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr, mHtml, sClass)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>This function will place a new row directly after a row which is currently \non display on the page, with the HTML contents that is passed into the \nfunction. This can be used, for example, to ask for confirmation that a \nparticular record should be deleted.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnPageChange\">fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(mAction, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Change the pagination - provides the internal logic for pagination in a simple API \nfunction. With this function you can have a DataTables table go to the next, \nprevious, first or last pages.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSetColumnVis\">fnSetColumnVis</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol, bShow, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Show a particular column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSettings\">fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  odd\"><p>Get the settings for a particular table for external manipulation</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSort\">fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Sort the table by a particular column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSortListener\">fnSortListener</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode, iColumn, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attach a sort listener to an element for a given column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnUpdate\">fnUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, mRow, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRedraw</span>, <span class=\"optional\">bAction</span>)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Update a table cell or row - this method will accept either a single value to\nupdate the cell with, an array of values with one element for each column or\nan object in the same format as the original data source. The function is\nself-referencing in order to make the multi column updates easier.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnIsDataTable\">fnIsDataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  even\"><p>Check if a TABLE node is a DataTable table already or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnTables\">fnTables</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bVisible</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get all DataTable tables that have been initialised - optionally you can select to\nget only currently visible tables.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_events\"></a><h3 class=\"subsection-title\">Events</h3>\n<dl>\n    <dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#destroy\">destroy</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\nthe bDestroy:true parameter in the initialisation object. This can be used to remove\nbound events, added DOM nodes, etc.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#draw\">draw</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>Draw event, fired whenever the table is redrawn on the page, at the same point as\nfnDrawCallback. This may be useful for binding events or performing calculations when\nthe table is altered at all.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#filter\">filter</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Filter event, fired when the filtering applied to the table (using the build in global\nglobal filter, or column filters) is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#init\">init</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>DataTables initialisation complete event, fired when the table is fully drawn,\nincluding Ajax data loaded, if Ajax data is required.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#page\">page</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Page change event, fired when the paging of the table is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#processing\">processing</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>Processing event, fired when DataTables is doing some kind of processing (be it,\nsort, filter or anything else). Can be used to indicate to the end user that\nthere is something happening, or that something has finished.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#sort\">sort</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Sort event, fired when the sorting applied to the table is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateLoaded\">stateLoaded</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>State loaded event, fired when state has been loaded from stored data and the settings\nobject has been modified by the loaded data.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateLoadParams\">stateLoadParams</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>State load event, fired when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state - allowing modification\nof the saved state is required or loading of state for a plug-in.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateSaveParams\">stateSaveParams</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>State save event, fired when the table has changed state a new state save is required.\nThis method allows modification of the state saving object prior to actually doing the\nsave, including addition or other state properties (for plug-ins) or modification\nof a DataTables core property.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#xhr\">xhr</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \nmade to the server for new data (note that this trigger is called in fnServerData,\nif you override fnServerData and which to use this event, you need to trigger it in\nyou success function).</p></dd>\n</dd>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"version\"></a><a name=\"version_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#version\">version</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"DataTable#$\" class=\"  even\"><a name=\"$\"></a><a name=\"$_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>$</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Perform a jQuery selector action on the table's TR elements (from the tbody) and\nreturn the resulting jQuery object.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSelector</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery selector or node collection to act on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional parameters for modifying the rows to be included</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.filter</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">none</td><td class=\"description last\"><p>Select TR elements that meet the current filter\n   criterion (\"applied\") or all TR elements (i.e. no filter).</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.order</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">current</td><td class=\"description last\"><p>Order of the TR elements in the processed array.\n   Can be either 'current', whereby the current sorting of the table is used, or\n   'original' whereby the original order the data was read into the table is used.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.page</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">all</td><td class=\"description last\"><p>Limit the selection to the currently displayed page\n   (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n   'current' and filter is 'applied', regardless of what they might be given as.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>jQuery object, filtered by the given selector.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Highlight every second row\n     oTable.$('tr:odd').css('backgroundColor', 'blue');\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Filter to rows with 'Webkit' in them, add a background colour and then\n     // remove the filter, thus highlighting the 'Webkit' rows only.\n     oTable.fnFilter('Webkit');\n     oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n     oTable.fnFilter('');\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#_\" class=\"  odd\"><a name=\"_\"></a><a name=\"__details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Almost identical to $ in operation, but in this case returns the data for the matched\nrows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\nrather than any descendants, so the data can be obtained for the row/cell. If matching\nrows are found, the data returned is the original data array/object that was used to <br />\ncreate the row (or a generated array if from a DOM source).</p>\n\n<p>This method is often useful in-combination with $ where both functions are given the\nsame parameters and the array indexes will match identically.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSelector</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery selector or node collection to act on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional parameters for modifying the rows to be included</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.filter</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">none</td><td class=\"description last\"><p>Select elements that meet the current filter\n   criterion (\"applied\") or all elements (i.e. no filter).</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.order</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">current</td><td class=\"description last\"><p>Order of the data in the processed array.\n   Can be either 'current', whereby the current sorting of the table is used, or\n   'original' whereby the original order the data was read into the table is used.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.page</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">all</td><td class=\"description last\"><p>Limit the selection to the currently displayed page\n   (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n   'current' and filter is 'applied', regardless of what they might be given as.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data for the matched elements. If any elements, as a result of the\n   selector, were not TR, TD or TH elements in the DataTable, they will have a null \n   entry in the array.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Get the data from the first row in the table\n     var data = oTable._('tr:first');\n\n     // Do something useful with the data\n     alert( \"First cell is: \"+data[0] );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Filter to 'Webkit' and get all data for \n     oTable.fnFilter('Webkit');\n     var data = oTable._('tr', {\"filter\": \"applied\"});\n     \n     // Do something with the data\n     alert( data.length+\" rows matched the filter\" );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnAddData\" class=\"  even\"><a name=\"fnAddData\"></a><a name=\"fnAddData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Add a single new row or multiple rows of data to the table. Please note\nthat this is suitable for client-side processing only - if you are using \nserver-side processing (i.e. \"bServerSide\": true), then to add data, you\nmust add it to the data source, i.e. the server-side, through an Ajax call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data to be added to the table. This can be:\n   <ul>\n     <li>1D array of data - add a single row with the data provided</li>\n     <li>2D array of arrays - add multiple rows in a single call</li>\n     <li>object - data object when using <i>mData</i></li>\n     <li>array of objects - multiple data objects when using <i>mData</i></li>\n   </ul></p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>An array of integers, representing the list of indexes in \n   <i>aoData</i> (<a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>) that have been added to \n   the table.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Global var for counter\n   var giCount = 2;\n   \n   $(document).ready(function() {\n     $('#example').dataTable();\n   } );\n   \n   function fnClickAddRow() {\n     $('#example').dataTable().fnAddData( [\n       giCount+\".1\",\n       giCount+\".2\",\n       giCount+\".3\",\n       giCount+\".4\" ]\n     );\n       \n     giCount++;\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnAdjustColumnSizing\" class=\"  odd\"><a name=\"fnAdjustColumnSizing\"></a><a name=\"fnAdjustColumnSizing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>This function will make DataTables recalculate the column sizes, based on the data \ncontained in the table and the sizes applied to the columns (in the DOM, CSS or \nthrough the sWidth parameter). This can be useful when the width of the table's \nparent element changes (for example a window resize).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not, you will typically want to</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n     \n     $(window).bind('resize', function () {\n       oTable.fnAdjustColumnSizing();\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnClearTable\" class=\"  even\"><a name=\"fnClearTable\"></a><a name=\"fnClearTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Quickly and simply clear a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n     oTable.fnClearTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnClose\" class=\"  odd\"><a name=\"fnClose\"></a><a name=\"fnClose_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnClose</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>The exact opposite of 'opening' a row, this function will close any rows which \nare currently 'open'.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the table row to 'close'</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 on success, or 1 if failed (can't find the row)</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDeleteRow\" class=\"  even\"><a name=\"fnDeleteRow\"></a><a name=\"fnDeleteRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDeleteRow</a></span><span class=\"type-sig\"><span class=\"signature\">(mTarget, <span class=\"optional\">fnCallBack</span>, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Remove a row for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mTarget</td><td class=\"type type-param\">mixed</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of the row from aoData to be deleted, or\n   the TR element you want to delete</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">fnCallBack</td><td class=\"type type-param\">function | null</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Callback function</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The row that was deleted</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Immediately remove the first row\n     oTable.fnDeleteRow( 0 );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDestroy\" class=\"  odd\"><a name=\"fnDestroy\"></a><a name=\"fnDestroy_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDestroy</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRemove</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Restore the table to it's original state in the DOM by removing all of DataTables \nenhancements, alterations to the DOM structure of the table and event listeners.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRemove</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Completely remove the table from the DOM</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     // This example is fairly pointless in reality, but shows how fnDestroy can be used\n     var oTable = $('#example').dataTable();\n     oTable.fnDestroy();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDraw\" class=\"  even\"><a name=\"fnDraw\"></a><a name=\"fnDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bComplete</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Redraw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bComplete</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Re-filter and resort (if enabled) the table before the draw.</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n     oTable.fnDraw();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnFilter\" class=\"  odd\"><a name=\"fnFilter\"></a><a name=\"fnFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(sInput, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRegex</span>, <span class=\"optional\">bSmart</span>, <span class=\"optional\">bShowGlobal</span>, <span class=\"optional\">bCaseInsensitive</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Filter the input based on data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>String to filter the table on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int | null</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Column to limit filtering to</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Treat as regular expression or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Perform smart filtering or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bShowGlobal</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Show the input global filter in it's input box(es)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Do case-insensitive matching (true) or not (false)</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sometime later - filter...\n     oTable.fnFilter( 'test string' );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetData\" class=\"  even\"><a name=\"fnGetData\"></a><a name=\"fnGetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetData</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">mRow</span>, <span class=\"optional\">iCol</span>)</span><span class=\"type-signature\"> &rarr; {array|object|string}</span></span></span></dt><dd class=\"  even\"><p>Get the data for the whole table, an individual row or an individual cell based on the \nprovided parameters.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mRow</td><td class=\"type type-param\">int | node</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>A TR row node, TD/TH cell node or an integer. If given as\n   a TR node then the data source for the whole row will be returned. If given as a\n   TD/TH cell node then iCol will be automatically calculated and the data for the\n   cell returned. If given as an integer, then this is treated as the aoData internal\n   data index for the row (see fnGetPosition) and the data for that row used.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional column index that you want the data of.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If mRow is undefined, then the data for all rows is\n   returned. If mRow is defined, just data for that row, and is iCol is\n   defined, only data for the designated cell is returned.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Row data\n   $(document).ready(function() {\n     oTable = $('#example').dataTable();\n\n     oTable.$('tr').click( function () {\n       var data = oTable.fnGetData( this );\n       // ... do something with the array / object of data for the row\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Individual cell data\n   $(document).ready(function() {\n     oTable = $('#example').dataTable();\n\n     oTable.$('td').click( function () {\n       var sData = oTable.fnGetData( this );\n       alert( 'The cell clicked on had the value of '+sData );\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetNodes\" class=\"  odd\"><a name=\"fnGetNodes\"></a><a name=\"fnGetNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">iRow</span>)</span><span class=\"type-signature\"> &rarr; {array|node}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of the TR nodes that are used in the table's body. Note that you will \ntypically want to use the '$' API method in preference to this as it is more \nflexible.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional row index for the TR element you want</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If iRow is undefined, returns an array of all TR elements\n   in the table's body, or iRow is defined, just the TR element requested.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Get the nodes from the table\n     var nNodes = oTable.fnGetNodes( );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetPosition\" class=\"  even\"><a name=\"fnGetPosition\"></a><a name=\"fnGetPosition_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Get the array indexes of a particular cell from it's DOM element\nand column index including hidden columns</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>this can either be a TR, TD or TH in the table's body</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If nNode is given as a TR, then a single index is returned, or\n   if given as a cell, an array of [row index, column index (visible), \n   column index (all)] is given.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example tbody td').click( function () {\n       // Get the position of the current data from the node\n       var aPos = oTable.fnGetPosition( this );\n       \n       // Get the data array for this row\n       var aData = oTable.fnGetData( aPos[0] );\n       \n       // Update the data array and return the value\n       aData[ aPos[1] ] = 'clicked';\n       this.innerHTML = 'clicked';\n     } );\n     \n     // Init DataTables\n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnIsOpen\" class=\"  odd\"><a name=\"fnIsOpen\"></a><a name=\"fnIsOpen_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnIsOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Check to see if a row is 'open' or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the table row to check</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if the row is currently open, false otherwise</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnOpen\" class=\"  even\"><a name=\"fnOpen\"></a><a name=\"fnOpen_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr, mHtml, sClass)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>This function will place a new row directly after a row which is currently \non display on the page, with the HTML contents that is passed into the \nfunction. This can be used, for example, to ask for confirmation that a \nparticular record should be deleted.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The table row to 'open'</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mHtml</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The HTML to put into the row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sClass</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Class to give the new TD cell</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The row opened. Note that if the table row passed in as the\n   first parameter, is not found in the table, this method will silently\n   return.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnPageChange\" class=\"  odd\"><a name=\"fnPageChange\"></a><a name=\"fnPageChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(mAction, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Change the pagination - provides the internal logic for pagination in a simple API \nfunction. With this function you can have a DataTables table go to the next, \nprevious, first or last pages.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mAction</td><td class=\"type type-param\">string | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n   or page number to jump to (integer), note that page 0 is the first page.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     oTable.fnPageChange( 'next' );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSetColumnVis\" class=\"  even\"><a name=\"fnSetColumnVis\"></a><a name=\"fnSetColumnVis_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSetColumnVis</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol, bShow, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Show a particular column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column whose display should be changed</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Show (true) or hide (false) the column</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Hide the second column after initialisation\n     oTable.fnSetColumnVis( 1, false );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSettings\" class=\"  odd\"><a name=\"fnSettings\"></a><a name=\"fnSettings_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  odd\"><p>Get the settings for a particular table for external manipulation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>DataTables settings object. See \n   <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     var oSettings = oTable.fnSettings();\n     \n     // Show an example parameter from the settings\n     alert( oSettings._iDisplayStart );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSort\" class=\"  even\"><a name=\"fnSort\"></a><a name=\"fnSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Sort the table by a particular column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the data index to sort on. Note that this will not match the \n   'display index' if you have hidden data entries</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sort immediately with columns 0 and 1\n     oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSortListener\" class=\"  odd\"><a name=\"fnSortListener\"></a><a name=\"fnSortListener_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSortListener</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode, iColumn, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attach a sort listener to an element for a given column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the element to attach the sort listener to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the column that a click on this node will sort on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>callback function when sort is run</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sort on column 1, when 'sorter' is clicked on\n     oTable.fnSortListener( document.getElementById('sorter'), 1 );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnUpdate\" class=\"  even\"><a name=\"fnUpdate\"></a><a name=\"fnUpdate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, mRow, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRedraw</span>, <span class=\"optional\">bAction</span>)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Update a table cell or row - this method will accept either a single value to\nupdate the cell with, an array of values with one element for each column or\nan object in the same format as the original data source. The function is\nself-referencing in order to make the multi column updates easier.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mData</td><td class=\"type type-param\">object | array | string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data to update the cell/row with</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mRow</td><td class=\"type type-param\">node | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>TR element you want to update or the aoData index</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>The column to update (not used of mData is an array or object)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bAction</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Perform pre-draw actions or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 on success, 1 on error</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n     oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnVersionCheck\" class=\"  odd\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note that the\n   formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the required\n   version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     alert( oTable.fnVersionCheck( '1.9.0' ) );\n   } );</pre>\n    </div>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable.fnIsDataTable\" class=\"  even\"><a name=\"fnIsDataTable\"></a><a name=\"fnIsDataTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnIsDataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  even\"><p>Check if a TABLE node is a DataTable table already or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTable</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TABLE node to check if it is a DataTable or not (note that other\n   node types can be passed in, but will always return false).</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true the table given is a DataTable, or false otherwise</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var ex = document.getElementById('example');\n   if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n     $(ex).dataTable();\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable.fnTables\" class=\"  odd\"><a name=\"fnTables\"></a><a name=\"fnTables_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnTables</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bVisible</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get all DataTable tables that have been initialised - optionally you can select to\nget only currently visible tables.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bVisible</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Flag to indicate if you want all (default) or \n   visible tables only.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Array of TABLE nodes (not DataTable instances) which are DataTables</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var table = $.fn.dataTable.fnTables(true);\n   if ( table.length > 0 ) {\n     $(table).dataTable().fnAdjustColumnSizing();\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable.fnVersionCheck\" class=\"  even\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note that the\n   formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the required\n   version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );</pre>\n    </div>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_events\"></a><h3 class=\"subsection-title\">Events</h3>\n<dl>\n    <dt id=\"DataTable#event:destroy\" class=\"  even\"><a name=\"destroy\"></a><a name=\"destroy_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>destroy</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\nthe bDestroy:true parameter in the initialisation object. This can be used to remove\nbound events, added DOM nodes, etc.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:draw\" class=\"  odd\"><a name=\"draw\"></a><a name=\"draw_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>draw</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>Draw event, fired whenever the table is redrawn on the page, at the same point as\nfnDrawCallback. This may be useful for binding events or performing calculations when\nthe table is altered at all.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:filter\" class=\"  even\"><a name=\"filter\"></a><a name=\"filter_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>filter</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Filter event, fired when the filtering applied to the table (using the build in global\nglobal filter, or column filters) is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:init\" class=\"  odd\"><a name=\"init\"></a><a name=\"init_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>init</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>DataTables initialisation complete event, fired when the table is fully drawn,\nincluding Ajax data loaded, if Ajax data is required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The JSON object request from the server - only\n   present if client-side Ajax sourced data is used</li></ol></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:page\" class=\"  even\"><a name=\"page\"></a><a name=\"page_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>page</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Page change event, fired when the paging of the table is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:processing\" class=\"  odd\"><a name=\"processing\"></a><a name=\"processing_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>processing</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>Processing event, fired when DataTables is doing some kind of processing (be it,\nsort, filter or anything else). Can be used to indicate to the end user that\nthere is something happening, or that something has finished.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Flag for if DataTables is doing processing or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:sort\" class=\"  even\"><a name=\"sort\"></a><a name=\"sort_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>sort</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Sort event, fired when the sorting applied to the table is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateLoaded\" class=\"  odd\"><a name=\"stateLoaded\"></a><a name=\"stateLoaded_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateLoaded</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>State loaded event, fired when state has been loaded from stored data and the settings\nobject has been modified by the loaded data.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The saved state information</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateLoadParams\" class=\"  even\"><a name=\"stateLoadParams\"></a><a name=\"stateLoadParams_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateLoadParams</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>State load event, fired when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state - allowing modification\nof the saved state is required or loading of state for a plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The saved state information</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateSaveParams\" class=\"  odd\"><a name=\"stateSaveParams\"></a><a name=\"stateSaveParams_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateSaveParams</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>State save event, fired when the table has changed state a new state save is required.\nThis method allows modification of the state saving object prior to actually doing the\nsave, including addition or other state properties (for plug-ins) or modification\nof a DataTables core property.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state information to be saved</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:xhr\" class=\"  even\"><a name=\"xhr\"></a><a name=\"xhr_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>xhr</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \nmade to the server for new data (note that this trigger is called in fnServerData,\nif you override fnServerData and which to use this event, you need to trigger it in\nyou success function).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>JSON returned from the server</p></td></tr>\n\t</tbody>\n</table></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.ext.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: ext - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: ext</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » ext</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\nfor plug-ins that can be used to extend the default DataTables behaviour - indeed many\nof the build in methods use this method to provide their own capabilities (sorting methods\nfor example).</p>\n\n<p>Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\nand modified by plug-ins.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnFiltering\">afnFiltering</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Plug-in filtering functions - this method of filtering is complimentary to the default\ntype based filtering, and a lot more comprehensive as it allows you complete control\nover the filtering logic. Each element in this array is a function (parameters\ndescribed below) that is called for every row in the table, and your logic decides if\nit should be included in the filtered data set or not.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{array|object} Data for the row to be processed (same as the original format\n          that was passed in as the data source, or an array from a DOM data source</li>\n        <li>{int} Row index in aoData (<a href=\"DataTable.models.oSettings.html#aoData\">DataTable.models.oSettings.aoData</a>), which can\n          be useful to retrieve the TR element if you need DOM interaction.</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnSortData\">afnSortData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type\nbased sorting that DataTables does automatically, allowing much greater control over the\nthe data that is being used to sort a column. This is useful if you want to do sorting\nbased on live data (for example the contents of an 'input' element) rather than just the\nstatic string that DataTables knows of. The way these plug-ins work is that you create\nan array of the values you wish to be sorted for the column in question and then return\nthat array. Which pre-sorting function is run here depends on the sSortDataType parameter\nthat is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \ndata.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{int} Target column index</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{array} Data for the column to be sorted upon</li>\n      </ul>\n    </il>\n  </ul> [<a href-\"#afnSortData\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFeatures\">aoFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\navailable to DataTables. These feature plug-ins are accessible through the sDom initialisation\noption. As such, each feature plug-in must describe a function that is used to initialise\nitself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\nof the feature (sFeature). Thus the objects attached to this method must provide:\n  <ul>\n    <li>{function} fnInit Initialisation of the plug-in\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>{node|null} The element which contains your feature. Note that the return\n               may also be void if your plug-in does not require to inject any DOM elements \n               into DataTables control (sDom) - for example this might be useful when \n               developing a plug-in which allows table control via keyboard entry.</li>\n          </ul>\n        </il>\n      </ul>\n    </li>\n    <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n    <li>{string} sFeature Feature name</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aTypes\">aTypes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and\nfiltering behave, and types can be either  be defined by the developer (sType for the\ncolumn) or they can be automatically detected by the methods in this array. The functions\ndefined in the array are quite simple, taking a single parameter (the data to analyse) \nand returning the type if it is a known type, or null otherwise.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be analysed</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Data type detected, or null if unknown (and thus pass it\n          on to the other type detection functions.</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, \nin order to ensure compatibility.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iApiIndex\">iApiIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Index for what 'this' index API functions should use</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oApi\">oApi</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Container for all private functions in DataTables so they can be exposed externally</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#ofnSearch\">ofnSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column\n(or have it automatically detected for you by DataTables or a type detection plug-in), \nyou will typically be using this for custom sorting, but it can also be used to provide \ncustom filtering by allowing you to pre-processing the data and returning the data in\nthe format that should be filtered upon. This is done by adding functions this object \nwith a parameter name which matches the sType for that target column. This is the\ncorollary of <i>afnSortData</i> for filtering data.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be prepared for filtering</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Formatted string that will be used for the filtering.</li>\n      </ul>\n    </il>\n  </ul> [<a href-\"#ofnSearch\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oJUIClasses\">oJUIClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oPagination\">oPagination</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pagination plug-in methods - The style and controls of the pagination can significantly \nimpact on how the end user interacts with the data in your table, and DataTables allows \nthe addition of pagination controls by extending this object, which can then be enabled\nthrough the <i>sPaginationType</i> initialisation parameter. Each pagination type that\nis added is an object (the property name of which is what <i>sPaginationType</i> refers\nto) that has two properties, both methods that are used by DataTables to update the\ncontrol's state.\n  <ul>\n    <li>\n      fnInit -  Initialisation of the paging controls. Called only during initialisation \n        of the table. It is expected that this function will add the required DOM elements \n        to the page for the paging controls to work. The element pointer \n        'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n        controls (note that this is a 2D array to allow for multiple instances of each \n        DataTables DOM element). It is suggested that you add the controls to this element \n        as children\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{node} Container into which the pagination controls must be inserted</li>\n            <li>{function} Draw callback function - whenever the controls cause a page\n              change, this method must be called to redraw the table.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n    <li>\n      fnInit -  This function is called whenever the paging status of the table changes and is\n        typically used to update classes and/or text of the paging controls to reflex the new \n        status.\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{function} Draw callback function - in case you need to redraw the table again\n              or attach new event listeners</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oSort\">oSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\ndata column (you can add your own type detection functions, or override automatic \ndetection using sType). With this specific type given to the column, DataTables will \napply the required sort from the functions in the object. Each sort type must provide\ntwo mandatory methods, one each for ascending and descending sorting, and can optionally\nprovide a pre-formatting method that will help speed up sorting by allowing DataTables\nto pre-format the sort data only once (rather than every time the actual sort functions\nare run). The two sorting functions are typical Javascript sort methods:\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{<em>} Data to compare to the second parameter</li>\n        <li>{</em>} Data to compare to the first parameter</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than\n          the second parameter, ===0 if the two parameters are equal and >0 if\n          the first parameter should be sorted height than the second parameter.</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oStdClasses\">oStdClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Storage for the various classes that DataTables uses</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sErrMode\">sErrMode</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sVersion\">sVersion</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"afnFiltering\"></a><a name=\"afnFiltering_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnFiltering\">afnFiltering</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Plug-in filtering functions - this method of filtering is complimentary to the default\ntype based filtering, and a lot more comprehensive as it allows you complete control\nover the filtering logic. Each element in this array is a function (parameters\ndescribed below) that is called for every row in the table, and your logic decides if\nit should be included in the filtered data set or not.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{array|object} Data for the row to be processed (same as the original format\n          that was passed in as the data source, or an array from a DOM data source</li>\n        <li>{int} Row index in aoData (<a href=\"DataTable.models.oSettings.html#aoData\">DataTable.models.oSettings.aoData</a>), which can\n          be useful to retrieve the TR element if you need DOM interaction.</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // The following example shows custom filtering being applied to the fourth column (i.e.\n   // the aData[3] index) based on two input values from the end-user, matching the data in \n   // a certain range.\n   $.fn.dataTableExt.afnFiltering.push(\n     function( oSettings, aData, iDataIndex ) {\n       var iMin = document.getElementById('min').value * 1;\n       var iMax = document.getElementById('max').value * 1;\n       var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n       if ( iMin == \"\" && iMax == \"\" ) {\n         return true;\n       }\n       else if ( iMin == \"\" && iVersion < iMax ) {\n         return true;\n       }\n       else if ( iMin < iVersion && \"\" == iMax ) {\n         return true;\n       }\n       else if ( iMin < iVersion && iVersion < iMax ) {\n         return true;\n       }\n       return false;\n     }\n   );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"afnSortData\"></a><a name=\"afnSortData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnSortData\">afnSortData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type\nbased sorting that DataTables does automatically, allowing much greater control over the\nthe data that is being used to sort a column. This is useful if you want to do sorting\nbased on live data (for example the contents of an 'input' element) rather than just the\nstatic string that DataTables knows of. The way these plug-ins work is that you create\nan array of the values you wish to be sorted for the column in question and then return\nthat array. Which pre-sorting function is run here depends on the sSortDataType parameter\nthat is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \ndata.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{int} Target column index</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{array} Data for the column to be sorted upon</li>\n      </ul>\n    </il>\n  </ul></p>\n\n<p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\nthe different uses that DataTables can put the data to. Specifically <i>mData</i> when\nused as a function will give you a 'type' (sorting, filtering etc) that you can use to \nprepare the data as required for the different types. As such, this method is deprecated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Updating the cached sorting information with user entered values in HTML input elements\n   jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n   {\n     var aData = [];\n     $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n       aData.push( this.value );\n     } );\n     return aData;\n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aoFeatures\"></a><a name=\"aoFeatures_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFeatures\">aoFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\navailable to DataTables. These feature plug-ins are accessible through the sDom initialisation\noption. As such, each feature plug-in must describe a function that is used to initialise\nitself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\nof the feature (sFeature). Thus the objects attached to this method must provide:\n  <ul>\n    <li>{function} fnInit Initialisation of the plug-in\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>{node|null} The element which contains your feature. Note that the return\n               may also be void if your plug-in does not require to inject any DOM elements \n               into DataTables control (sDom) - for example this might be useful when \n               developing a plug-in which allows table control via keyboard entry.</li>\n          </ul>\n        </il>\n      </ul>\n    </li>\n    <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n    <li>{string} sFeature Feature name</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // How TableTools initialises itself.\n   $.fn.dataTableExt.aoFeatures.push( {\n     \"fnInit\": function( oSettings ) {\n       return new TableTools( { \"oDTSettings\": oSettings } );\n     },\n     \"cFeature\": \"T\",\n     \"sFeature\": \"TableTools\"\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aTypes\"></a><a name=\"aTypes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aTypes\">aTypes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and\nfiltering behave, and types can be either  be defined by the developer (sType for the\ncolumn) or they can be automatically detected by the methods in this array. The functions\ndefined in the array are quite simple, taking a single parameter (the data to analyse) \nand returning the type if it is a known type, or null otherwise.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be analysed</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Data type detected, or null if unknown (and thus pass it\n          on to the other type detection functions.</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Currency type detection plug-in:\n   jQuery.fn.dataTableExt.aTypes.push(\n     function ( sData ) {\n       var sValidChars = \"0123456789.-\";\n       var Char;\n       \n       // Check the numeric part\n       for ( i=1 ; i<sData.length ; i++ ) {\n         Char = sData.charAt(i); \n         if (sValidChars.indexOf(Char) == -1) {\n           return null;\n         }\n       }\n       \n       // Check prefixed by currency\n       if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n         return 'currency';\n       }\n       return null;\n     }\n   );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.models.ext.fnVersionCheck\" class=\"  even\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, \nin order to ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note \n   that the formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the \n   required version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     alert( oTable.fnVersionCheck( '1.9.0' ) );\n   } );</pre>\n    </div>\n</div>\n<dt class=\"  odd\"><a name=\"iApiIndex\"></a><a name=\"iApiIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iApiIndex\">iApiIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Index for what 'this' index API functions should use</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oApi\"></a><a name=\"oApi_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oApi\">oApi</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Container for all private functions in DataTables so they can be exposed externally</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"ofnSearch\"></a><a name=\"ofnSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#ofnSearch\">ofnSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column\n(or have it automatically detected for you by DataTables or a type detection plug-in), \nyou will typically be using this for custom sorting, but it can also be used to provide \ncustom filtering by allowing you to pre-processing the data and returning the data in\nthe format that should be filtered upon. This is done by adding functions this object \nwith a parameter name which matches the sType for that target column. This is the\ncorollary of <i>afnSortData</i> for filtering data.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be prepared for filtering</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Formatted string that will be used for the filtering.</li>\n      </ul>\n    </il>\n  </ul></p>\n\n<p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\nthe different uses that DataTables can put the data to. Specifically <i>mData</i> when\nused as a function will give you a 'type' (sorting, filtering etc) that you can use to \nprepare the data as required for the different types. As such, this method is deprecated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n     return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"oJUIClasses\"></a><a name=\"oJUIClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oJUIClasses\">oJUIClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oPagination\"></a><a name=\"oPagination_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oPagination\">oPagination</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pagination plug-in methods - The style and controls of the pagination can significantly \nimpact on how the end user interacts with the data in your table, and DataTables allows \nthe addition of pagination controls by extending this object, which can then be enabled\nthrough the <i>sPaginationType</i> initialisation parameter. Each pagination type that\nis added is an object (the property name of which is what <i>sPaginationType</i> refers\nto) that has two properties, both methods that are used by DataTables to update the\ncontrol's state.\n  <ul>\n    <li>\n      fnInit -  Initialisation of the paging controls. Called only during initialisation \n        of the table. It is expected that this function will add the required DOM elements \n        to the page for the paging controls to work. The element pointer \n        'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n        controls (note that this is a 2D array to allow for multiple instances of each \n        DataTables DOM element). It is suggested that you add the controls to this element \n        as children\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{node} Container into which the pagination controls must be inserted</li>\n            <li>{function} Draw callback function - whenever the controls cause a page\n              change, this method must be called to redraw the table.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n    <li>\n      fnInit -  This function is called whenever the paging status of the table changes and is\n        typically used to update classes and/or text of the paging controls to reflex the new \n        status.\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{function} Draw callback function - in case you need to redraw the table again\n              or attach new event listeners</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $.fn.dataTableExt.oPagination.four_button = {\n     \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n       nFirst = document.createElement( 'span' );\n       nPrevious = document.createElement( 'span' );\n       nNext = document.createElement( 'span' );\n       nLast = document.createElement( 'span' );\n       \n       nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n       nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n       nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n       nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n       \n       nFirst.className = \"paginate_button first\";\n       nPrevious.className = \"paginate_button previous\";\n       nNext.className=\"paginate_button next\";\n       nLast.className = \"paginate_button last\";\n       \n       nPaging.appendChild( nFirst );\n       nPaging.appendChild( nPrevious );\n       nPaging.appendChild( nNext );\n       nPaging.appendChild( nLast );\n       \n       $(nFirst).click( function () {\n         oSettings.oApi._fnPageChange( oSettings, \"first\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nPrevious).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nNext).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"next\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nLast).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"last\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nFirst).bind( 'selectstart', function () { return false; } );\n       $(nPrevious).bind( 'selectstart', function () { return false; } );\n       $(nNext).bind( 'selectstart', function () { return false; } );\n       $(nLast).bind( 'selectstart', function () { return false; } );\n     },\n     \n     \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n       if ( !oSettings.aanFeatures.p ) {\n         return;\n       }\n       \n       // Loop over each instance of the pager\n       var an = oSettings.aanFeatures.p;\n       for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n         var buttons = an[i].getElementsByTagName('span');\n         if ( oSettings._iDisplayStart === 0 ) {\n           buttons[0].className = \"paginate_disabled_previous\";\n           buttons[1].className = \"paginate_disabled_previous\";\n         }\n         else {\n           buttons[0].className = \"paginate_enabled_previous\";\n           buttons[1].className = \"paginate_enabled_previous\";\n         }\n         \n         if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n           buttons[2].className = \"paginate_disabled_next\";\n           buttons[3].className = \"paginate_disabled_next\";\n         }\n         else {\n           buttons[2].className = \"paginate_enabled_next\";\n           buttons[3].className = \"paginate_enabled_next\";\n         }\n       }\n     }\n   };</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"oSort\"></a><a name=\"oSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oSort\">oSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\ndata column (you can add your own type detection functions, or override automatic \ndetection using sType). With this specific type given to the column, DataTables will \napply the required sort from the functions in the object. Each sort type must provide\ntwo mandatory methods, one each for ascending and descending sorting, and can optionally\nprovide a pre-formatting method that will help speed up sorting by allowing DataTables\nto pre-format the sort data only once (rather than every time the actual sort functions\nare run). The two sorting functions are typical Javascript sort methods:\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{<em>} Data to compare to the second parameter</li>\n        <li>{</em>} Data to compare to the first parameter</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than\n          the second parameter, ===0 if the two parameters are equal and >0 if\n          the first parameter should be sorted height than the second parameter.</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Case-sensitive string sorting, with no pre-formatting method\n   $.extend( $.fn.dataTableExt.oSort, {\n     \"string-case-asc\": function(x,y) {\n       return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n     },\n     \"string-case-desc\": function(x,y) {\n       return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n     }\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Case-insensitive string sorting, with pre-formatting\n   $.extend( $.fn.dataTableExt.oSort, {\n     \"string-pre\": function(x) {\n       return x.toLowerCase();\n     },\n     \"string-asc\": function(x,y) {\n       return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n     },\n     \"string-desc\": function(x,y) {\n       return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n     }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"oStdClasses\"></a><a name=\"oStdClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oStdClasses\">oStdClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Storage for the various classes that DataTables uses</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sErrMode\"></a><a name=\"sErrMode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sErrMode\">sErrMode</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sVersion\"></a><a name=\"sVersion_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sVersion\">sVersion</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: models - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: models</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » models</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (5)</a></td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Object models container, for the various models that DataTables has available\nto it. These models define the objects that are used to hold the active state \nand configuration of the table.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.ext.html\">ext</a></span></dt><dd class=\"even\"><p>DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\nfor plug-ins that can be used to extend the default DataTables behaviour - indeed many\nof the build in methods use this method to provide their own capabilities (sorting methods\nfor example). [<a href=\"DataTable.models.ext.html\">...</a>] </p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oColumn.html\">oColumn</a></span></dt><dd class=\"odd\"><p>Template object for the column information object in DataTables. This object\nis held in the settings aoColumns array and contains all the information that\nDataTables needs about each individual column. [<a href=\"DataTable.models.oColumn.html\">...</a>] </p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oRow.html\">oRow</a></span></dt><dd class=\"even\"><p>Template object for the way in which DataTables holds information about\neach individual row. This is the object format used for the settings \naoData array.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSearch.html\">oSearch</a></span></dt><dd class=\"odd\"><p>Template object for the way in which DataTables holds information about\nsearch information for the global filter and individual column filters.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.html\">oSettings</a></span></dt><dd class=\"even\"><p>DataTables settings object - this holds all the information needed for a\ngiven table, including configuration, data and current application of the\ntable options. DataTables does not have a single instance for each DataTable\nwith the settings attached to that instance, but rather instances of the\nDataTable \"class\" are created on-the-fly as needed (typically by a \n$().dataTable() call) and the settings object is then applied to that\ninstance. [<a href=\"DataTable.models.oSettings.html\">...</a>] </p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oColumn.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oColumn - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oColumn</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oColumn</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (25)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (25)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the column information object in DataTables. This object\nis held in the settings aoColumns array and contains all the information that\nDataTables needs about each individual column.</p>\n\n<p>Note that this object is related to <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a> \nbut this one is the internal data store for DataTables's cache of columns.\nIt should NOT be manipulated outside of DataTables. Any configuration should\nbe done through the initialisation options.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>A list of the columns that sorting should occur on when this column\nis sorted. That this property is an array allows multi-column sorting\nto be defined for a column (for example first name / last name columns\nwould benefit from this). The values are integers pointing to the\ncolumns to be sorted on (typically it will be a single integer pointing\nat itself, but that doesn't need to be the case).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Define the sorting directions that are applied to the column, in sequence\nas the column is repeatedly sorted upon - i.e. the first value is used\nas the sorting direction when the column if first sorted (clicked on).\nSort it again (click again) and it will move on to the next index.\nRepeat until loop.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the column is searchable, and thus should be included\nin the filtering or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is sortable or not.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender, you have two options for what \nto do with the data, and this property serves as the switch. Firstly, you \ncan have the sorting and filtering use the rendered value (true - default), \nor you can have the sorting and filtering us the original value (false). [<a href-\"#bUseRendered\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is currently visible in the table or not</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedCell\">fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnGetData\">fnGetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to get data from a cell in a column. You should <b>never</b>\naccess data directly through _aData internally in DataTables - always use\nthe method attached to this property. It allows mData to function as\nrequired. This function is automatically assigned by the column \ninitialisation method</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRender\">fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column. [<a href-\"#fnRender\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnSetData\">fnSetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to set data for a cell in the column. You should <b>never</b> \nset the data directly to _aData internally in DataTables - always use\nthis method. It allows mData to function as required. This function\nis automatically assigned by the column initialisation method</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  even\"><p>Property to read the value for the cells in the column from the data \nsource array / object. If null, then the default content is used, if a\nfunction is given then the return from the function is used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  odd\"><p>Partner property to mData which is used (only when defined) to get\nthe data - i.e. it is basically the same as mData, but without the\n'set' option, and also the data fed to it is the result from mData.\nThis is the rendering method to match the data method of mData.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTf\">nTf</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Unique footer TH/TD element for this column (if there is one). Not used \nin DataTables as such, but can be used for plug-ins to reference the \nfooter for each column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTh\">nTh</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Unique header TH/TD element for this column - this is what the sorting\nlistener is attached to (if sorting is enabled.)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The class to apply to all TD elements in the table's TBODY for the column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Name for the column, allowing reference to the column by name as well as\nby index (needs a lookup to work by name).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Custom sorting data type - defines which of the available plug-ins in\nafnSortData the custom sorting will use - if any is defined.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClass\">sSortingClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to be applied to the header element when sorting on this column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClassJUI\">sSortingClassJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Class to be applied to the header element when sorting on this column -\nwhen jQuery UI theming is used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Title of the column - what is seen in the TH element (nTh).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Column sorting and filtering type</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Width of the column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidthOrig\">sWidthOrig</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width of the column when it was first \"encountered\"</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aDataSort\"></a><a name=\"aDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>A list of the columns that sorting should occur on when this column\nis sorted. That this property is an array allows multi-column sorting\nto be defined for a column (for example first name / last name columns\nwould benefit from this). The values are integers pointing to the\ncolumns to be sorted on (typically it will be a single integer pointing\nat itself, but that doesn't need to be the case).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"asSorting\"></a><a name=\"asSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Define the sorting directions that are applied to the column, in sequence\nas the column is repeatedly sorted upon - i.e. the first value is used\nas the sorting direction when the column if first sorted (clicked on).\nSort it again (click again) and it will move on to the next index.\nRepeat until loop.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSearchable\"></a><a name=\"bSearchable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the column is searchable, and thus should be included\nin the filtering or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortable\"></a><a name=\"bSortable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is sortable or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bUseRendered\"></a><a name=\"bUseRendered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender, you have two options for what \nto do with the data, and this property serves as the switch. Firstly, you \ncan have the sorting and filtering use the rendered value (true - default), \nor you can have the sorting and filtering us the original value (false).</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bVisible\"></a><a name=\"bVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is currently visible in the table or not</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt id=\"DataTable.models.oColumn.fnCreatedCell\" class=\"  even\"><a name=\"fnCreatedCell\"></a><a name=\"fnCreatedCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD node that has been created</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sData</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The Data for the cell</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the whole row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row index for the aoData data store</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable.models.oColumn.fnGetData\" class=\"  odd\"><a name=\"fnGetData\"></a><a name=\"fnGetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnGetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to get data from a cell in a column. You should <b>never</b>\naccess data directly through _aData internally in DataTables - always use\nthe method attached to this property. It allows mData to function as\nrequired. This function is automatically assigned by the column \ninitialisation method</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data array/object for the array \n   (i.e. aoData[]._aData)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The specific data type you want to get - \n   'display', 'type' 'filter' 'sort'</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The data for the cell from the given row's data</p></p></div>\n<dt id=\"DataTable.models.oColumn.fnRender\" class=\"  even\"><a name=\"fnRender\"></a><a name=\"fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object with the following parameters:</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row in aoData</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the row in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The settings object for this DataTables instance</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string you which to use in the display</p></p></div>\n<dt id=\"DataTable.models.oColumn.fnSetData\" class=\"  odd\"><a name=\"fnSetData\"></a><a name=\"fnSetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnSetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to set data for a cell in the column. You should <b>never</b> \nset the data directly to _aData internally in DataTables - always use\nthis method. It allows mData to function as required. This function\nis automatically assigned by the column initialisation method</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data array/object for the array \n   (i.e. aoData[]._aData)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sValue</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to set</p></td></tr>\n\t</tbody>\n</table></div>\n<dt class=\"  even\"><a name=\"mData\"></a><a name=\"mData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  even\"><p>Property to read the value for the cells in the column from the data \nsource array / object. If null, then the default content is used, if a\nfunction is given then the return from the function is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"mRender\"></a><a name=\"mRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  odd\"><p>Partner property to mData which is used (only when defined) to get\nthe data - i.e. it is basically the same as mData, but without the\n'set' option, and also the data fed to it is the result from mData.\nThis is the rendering method to match the data method of mData.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTf\"></a><a name=\"nTf_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTf\">nTf</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Unique footer TH/TD element for this column (if there is one). Not used \nin DataTables as such, but can be used for plug-ins to reference the \nfooter for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTh\"></a><a name=\"nTh_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTh\">nTh</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Unique header TH/TD element for this column - this is what the sorting\nlistener is attached to (if sorting is enabled.)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sClass\"></a><a name=\"sClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The class to apply to all TD elements in the table's TBODY for the column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sContentPadding\"></a><a name=\"sContentPadding_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sDefaultContent\"></a><a name=\"sDefaultContent_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sName\"></a><a name=\"sName_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Name for the column, allowing reference to the column by name as well as\nby index (needs a lookup to work by name).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sSortDataType\"></a><a name=\"sSortDataType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Custom sorting data type - defines which of the available plug-ins in\nafnSortData the custom sorting will use - if any is defined.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sSortingClass\"></a><a name=\"sSortingClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClass\">sSortingClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to be applied to the header element when sorting on this column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sSortingClassJUI\"></a><a name=\"sSortingClassJUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClassJUI\">sSortingClassJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Class to be applied to the header element when sorting on this column -\nwhen jQuery UI theming is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sTitle\"></a><a name=\"sTitle_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Title of the column - what is seen in the TH element (nTh).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sType\"></a><a name=\"sType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Column sorting and filtering type</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sWidth\"></a><a name=\"sWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Width of the column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sWidthOrig\"></a><a name=\"sWidthOrig_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidthOrig\">sWidthOrig</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width of the column when it was first \"encountered\"</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oRow.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oRow - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oRow</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oRow</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the way in which DataTables holds information about\neach individual row. This is the object format used for the settings \naoData array.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTr\">nTr</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>TR element for the row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_aData\">_aData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|object</span></span></dt><dd class=\"  odd\"><p>Data object from the original data source for the row. This is either\nan array if using the traditional form of DataTables, or an object if\nusing mData options. The exact type will depend on the passed in\ndata from the data source, or will be an array if using DOM a data \nsource.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"nTr\"></a><a name=\"nTr_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTr\">nTr</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>TR element for the row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"_aData\"></a><a name=\"_aData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_aData\">_aData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|object</span></span></dt><dd class=\"  odd\"><p>Data object from the original data source for the row. This is either\nan array if using the traditional form of DataTables, or an object if\nusing mData options. The exact type will depend on the passed in\ndata from the data source, or will be an array if using DOM a data \nsource.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the way in which DataTables holds information about\nsearch information for the global filter and individual column filters.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCaseInsensitive\">bCaseInsensitive</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the filtering should be case insensitive or not</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRegex\">bRegex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the search term should be interpreted as a\nregular expression (true) or not (false) and therefore and special\nregex characters escaped.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSmart\">bSmart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if DataTables is to use its smart filtering or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Applied search term</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bCaseInsensitive\"></a><a name=\"bCaseInsensitive_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCaseInsensitive\">bCaseInsensitive</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the filtering should be case insensitive or not</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bRegex\"></a><a name=\"bRegex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRegex\">bRegex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the search term should be interpreted as a\nregular expression (true) or not (false) and therefore and special\nregex characters escaped.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSmart\"></a><a name=\"bSmart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSmart\">bSmart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if DataTables is to use its smart filtering or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sSearch\"></a><a name=\"sSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Applied search term</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSettings - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSettings</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oSettings</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (5)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (67)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (67)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DataTables settings object - this holds all the information needed for a\ngiven table, including configuration, data and current application of the\ntable options. DataTables does not have a single instance for each DataTable\nwith the settings attached to that instance, but rather instances of the\nDataTable \"class\" are created on-the-fly as needed (typically by a \n$().dataTable() call) and the settings object is then applied to that\ninstance.</p>\n\n<p>Note that this object is related to <a href=\"DataTable.defaults.html\">DataTable.defaults</a> but this \none is the internal data store for DataTables's cache of columns. It should\nNOT be manipulated outside of DataTables. Any configuration should be done\nthrough the initialisation options.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oBrowser.html\">oBrowser</a></span></dt><dd class=\"even\"><p>Browser support parameters</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oFeatures.html\">oFeatures</a></span></dt><dd class=\"odd\"><p>Primary features of DataTables and their enablement state.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oLanguage.html\">oLanguage</a></span></dt><dd class=\"even\"><p>Language information for the table.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oPreviousSearch.html\">oPreviousSearch</a></span></dt><dd class=\"odd\"><p>Store the applied global search information in case we want to force a \nresearch or compare the old search to a new one.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oScroll.html\">oScroll</a></span></dt><dd class=\"even\"><p>Scrolling settings for a table.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aanFeatures\">aanFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array referencing the nodes which are used for the features. The \nparameters of this object match what is allowed by sDom - i.e.\n  <ul>\n    <li>'l' - Length changing</li>\n    <li>'f' - Filtering input</li>\n    <li>'t' - The table!</li>\n    <li>'i' - Information</li>\n    <li>'p' - Pagination</li>\n    <li>'r' - pRocessing</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Sorting that is applied to the table. Note that the inner arrays are\nused in the following manner: [<a href-\"#aaSorting\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|null</span></span></dt><dd class=\"  even\"><p>Sorting that is always applied to the table (i.e. prefixed in front of\naaSorting).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplay\">aiDisplay</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of indexes which are in the current display (after filtering etc)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplayMaster\">aiDisplayMaster</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of indexes for display - no filtering</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>List of options that can be used for the user selectable length menu.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about each column that is in use</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoData\">aoData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store data information - see <a href=\"DataTable.models.oRow.html\">DataTable.models.oRow</a> for detailed\ninformation.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDestroyCallback\">aoDestroyCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Destroy callback functions - for plug-ins to attach themselves to the\ndestroy so they can clean up markup and events.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDrawCallback\">aoDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for draw callback functions</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooter\">aoFooter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's footer</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooterCallback\">aoFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback function for the footer on each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeader\">aoHeader</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's header</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeaderCallback\">aoHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback functions for the header on each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInitComplete\">aoInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for when the table has been initialised.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoOpenRows\">aoOpenRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Information about open rows. Each object in the array has the parameters\n'nTr' and 'nParent'</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreDrawCallback\">aoPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for just before the table is redrawn. A return of \nfalse will be used to cancel the draw.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreSearchCols\">aoPreSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store the applied search for each column - see \n<a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a> for the format that is used for the\nfiltering information for each column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCallback\">aoRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions array for every time a row is inserted (i.e. on a draw).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCreatedCallback\">aoRowCreatedCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for row created function</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoServerParams\">aoServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Functions which are called prior to sending an Ajax request so extra \nparameters can easily be sent to the server</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoad\">aoStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for state loading. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings \n      and the object stored. May return false to cancel state loading</li>\n    <li>string:sName - name of callback</li>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoaded\">aoStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callbacks for operating on the settings object once the saved state has been\nloaded</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoadParams\">aoStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings that have been stored for state saving\nprior to using the stored values to restore the state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSave\">aoStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of callback functions for state saving. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings\n      and the JSON string to save that has been thus far created. Returns\n      a JSON string to be inserted into a json object \n      (i.e. '\"param\": [ 0, 1, 2]')</li>\n    <li>string:sName - name of callback</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSaveParams\">aoStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings to be stored for state saving, prior to\nsaving state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDataSearch\">asDataSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Search data array for regular expression searching</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDestroyStripes\">asDestroyStripes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its striping classes as well</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Classes to use for the striping of a table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAjaxDataGet\">bAjaxDataGet</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Note if draw should be blocked while getting data</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferLoading\">bDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if when using server-side processing the loading of data \nshould be deferred until the second draw.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDrawing\">bDrawing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if a redraw is being done - useful for Ajax</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFiltered\">bFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if filtering has been done in the draw. Deprecated in favour of\nevents.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInitialised\">bInitialised</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if all required information has been read in</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJUI\">bJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if jQuery UI marking and classes should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate that if multiple rows are in the header and there is more than \none unique cell per column, if the top one (true) or bottom one (false) \nshould be used for sorting / title by DataTables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSorted\">bSorted</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if sorting has been done in the draw. Deprecated in favour of\nevents.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCookieCallback\">fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Callback function for cookie creation.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFormatNumber\">fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Format numbers for display.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerData\">fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to get the server-side data.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The cookie duration (for bStateSave) in seconds.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDraw\">iDraw</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Counter for the draws that the table does. Also used as a tracker for\nserver-side processing</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDrawError\">iDrawError</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Draw index (iDraw) of the last error when parsing the returned data</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>tabindex attribute value that is added to DataTables control elements, allowing\nkeyboard navigation of the table and its controls.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#jqXHR\">jqXHR</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The last jQuery XHR object that was used for server-side data gathering. \nThis can be used for working with the XHR information in one of the \ncallbacks</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollFoot\">nScrollFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>DIV container for the footer scrolling table if scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollHead\">nScrollHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>DIV container for the footer scrolling table if scrolling</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTable\">nTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>The TABLE node for the main table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTableWrapper\">nTableWrapper</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Cache the wrapper node (contains all DataTables controlled elements)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTBody\">nTBody</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the tbody element</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTFoot\">nTFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Permanent ref to the tfoot element - if it exists</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTHead\">nTHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the thead element</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oClasses\">oClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The classes to use for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInit\">oInit</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Initialisation object that is used for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInstance\">oInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The DataTables object for this table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oLoadedState\">oLoadedState</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>State that was loaded from the cookie. Useful for back reference</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Property from a given object from which to read the table data from. This\ncan be an empty string (when not server-side processing), in which case \nit is  assumed an an array is given directly.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Source url for AJAX data for the table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The cookie name prefix.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDestroyWidth\">sDestroyWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its width</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Dictate the positioning of DataTables' control elements - see\nDataTable.model.oInit.sDom.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInstance\">sInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Unique identifier for each instance of the DataTables object. If there\nis an ID on the table node, then it takes that value, otherwise an\nincrementing internal counter is used.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Which type of pagination should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \nrequired).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTableId\">sTableId</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Cache the table ID for quick access</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayLength\">_iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Paging display length</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayStart\">_iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Paging start point - aiDisplay index</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnDisplayEnd\">fnDisplayEnd</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Set the display end point - aiDisplay index</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRecordsDisplay\">fnRecordsDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Get the number of records in the current record set, after filtering</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRecordsTotal\">fnRecordsTotal</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Get the number of records in the current record set, before filtering</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aanFeatures\"></a><a name=\"aanFeatures_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aanFeatures\">aanFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array referencing the nodes which are used for the features. The \nparameters of this object match what is allowed by sDom - i.e.\n  <ul>\n    <li>'l' - Length changing</li>\n    <li>'f' - Filtering input</li>\n    <li>'t' - The table!</li>\n    <li>'i' - Information</li>\n    <li>'p' - Pagination</li>\n    <li>'r' - pRocessing</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aaSorting\"></a><a name=\"aaSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Sorting that is applied to the table. Note that the inner arrays are\nused in the following manner:</p>\n\n<ul>\n  <li>Index 0 - column number</li>\n  <li>Index 1 - current sorting direction</li>\n  <li>Index 2 - index of asSorting for this column</li>\n</ul>\n\n<p>Note that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aaSortingFixed\"></a><a name=\"aaSortingFixed_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|null</span></span></dt><dd class=\"  even\"><p>Sorting that is always applied to the table (i.e. prefixed in front of\naaSorting).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aiDisplay\"></a><a name=\"aiDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplay\">aiDisplay</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of indexes which are in the current display (after filtering etc)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aiDisplayMaster\"></a><a name=\"aiDisplayMaster_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplayMaster\">aiDisplayMaster</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of indexes for display - no filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aLengthMenu\"></a><a name=\"aLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>List of options that can be used for the user selectable length menu.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoColumns\"></a><a name=\"aoColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about each column that is in use</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoData\"></a><a name=\"aoData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoData\">aoData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store data information - see <a href=\"DataTable.models.oRow.html\">DataTable.models.oRow</a> for detailed\ninformation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoDestroyCallback\"></a><a name=\"aoDestroyCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDestroyCallback\">aoDestroyCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Destroy callback functions - for plug-ins to attach themselves to the\ndestroy so they can clean up markup and events.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoDrawCallback\"></a><a name=\"aoDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDrawCallback\">aoDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for draw callback functions</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoFooter\"></a><a name=\"aoFooter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooter\">aoFooter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's footer</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoFooterCallback\"></a><a name=\"aoFooterCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooterCallback\">aoFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback function for the footer on each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoHeader\"></a><a name=\"aoHeader_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeader\">aoHeader</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's header</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoHeaderCallback\"></a><a name=\"aoHeaderCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeaderCallback\">aoHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback functions for the header on each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoInitComplete\"></a><a name=\"aoInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInitComplete\">aoInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for when the table has been initialised.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoOpenRows\"></a><a name=\"aoOpenRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoOpenRows\">aoOpenRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Information about open rows. Each object in the array has the parameters\n'nTr' and 'nParent'</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoPreDrawCallback\"></a><a name=\"aoPreDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreDrawCallback\">aoPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for just before the table is redrawn. A return of \nfalse will be used to cancel the draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoPreSearchCols\"></a><a name=\"aoPreSearchCols_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreSearchCols\">aoPreSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store the applied search for each column - see \n<a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a> for the format that is used for the\nfiltering information for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoRowCallback\"></a><a name=\"aoRowCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCallback\">aoRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions array for every time a row is inserted (i.e. on a draw).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoRowCreatedCallback\"></a><a name=\"aoRowCreatedCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCreatedCallback\">aoRowCreatedCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for row created function</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoServerParams\"></a><a name=\"aoServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoServerParams\">aoServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Functions which are called prior to sending an Ajax request so extra \nparameters can easily be sent to the server</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateLoad\"></a><a name=\"aoStateLoad_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoad\">aoStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for state loading. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings \n      and the object stored. May return false to cancel state loading</li>\n    <li>string:sName - name of callback</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoStateLoaded\"></a><a name=\"aoStateLoaded_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoaded\">aoStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callbacks for operating on the settings object once the saved state has been\nloaded</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateLoadParams\"></a><a name=\"aoStateLoadParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoadParams\">aoStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings that have been stored for state saving\nprior to using the stored values to restore the state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoStateSave\"></a><a name=\"aoStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSave\">aoStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of callback functions for state saving. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings\n      and the JSON string to save that has been thus far created. Returns\n      a JSON string to be inserted into a json object \n      (i.e. '\"param\": [ 0, 1, 2]')</li>\n    <li>string:sName - name of callback</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateSaveParams\"></a><a name=\"aoStateSaveParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSaveParams\">aoStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings to be stored for state saving, prior to\nsaving state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"asDataSearch\"></a><a name=\"asDataSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDataSearch\">asDataSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Search data array for regular expression searching</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"asDestroyStripes\"></a><a name=\"asDestroyStripes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDestroyStripes\">asDestroyStripes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its striping classes as well</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"asStripeClasses\"></a><a name=\"asStripeClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Classes to use for the striping of a table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bAjaxDataGet\"></a><a name=\"bAjaxDataGet_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAjaxDataGet\">bAjaxDataGet</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Note if draw should be blocked while getting data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bDeferLoading\"></a><a name=\"bDeferLoading_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferLoading\">bDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if when using server-side processing the loading of data \nshould be deferred until the second draw.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bDrawing\"></a><a name=\"bDrawing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDrawing\">bDrawing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if a redraw is being done - useful for Ajax</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bFiltered\"></a><a name=\"bFiltered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFiltered\">bFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if filtering has been done in the draw. Deprecated in favour of\nevents.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bInitialised\"></a><a name=\"bInitialised_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInitialised\">bInitialised</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if all required information has been read in</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bJUI\"></a><a name=\"bJUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJUI\">bJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if jQuery UI marking and classes should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortCellsTop\"></a><a name=\"bSortCellsTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate that if multiple rows are in the header and there is more than \none unique cell per column, if the top one (true) or bottom one (false) \nshould be used for sorting / title by DataTables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSorted\"></a><a name=\"bSorted_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSorted\">bSorted</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if sorting has been done in the draw. Deprecated in favour of\nevents.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt id=\"DataTable.models.oSettings.fnCookieCallback\" class=\"  odd\"><a name=\"fnCookieCallback\"></a><a name=\"fnCookieCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Callback function for cookie creation.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnFormatNumber\" class=\"  even\"><a name=\"fnFormatNumber\"></a><a name=\"fnFormatNumber_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Format numbers for display.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnServerData\" class=\"  odd\"><a name=\"fnServerData\"></a><a name=\"fnServerData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to get the server-side data.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt class=\"  even\"><a name=\"iCookieDuration\"></a><a name=\"iCookieDuration_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The cookie duration (for bStateSave) in seconds.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iDraw\"></a><a name=\"iDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDraw\">iDraw</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Counter for the draws that the table does. Also used as a tracker for\nserver-side processing</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"iDrawError\"></a><a name=\"iDrawError_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDrawError\">iDrawError</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Draw index (iDraw) of the last error when parsing the returned data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iTabIndex\"></a><a name=\"iTabIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>tabindex attribute value that is added to DataTables control elements, allowing\nkeyboard navigation of the table and its controls.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"jqXHR\"></a><a name=\"jqXHR_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#jqXHR\">jqXHR</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The last jQuery XHR object that was used for server-side data gathering. \nThis can be used for working with the XHR information in one of the \ncallbacks</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nScrollFoot\"></a><a name=\"nScrollFoot_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollFoot\">nScrollFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>DIV container for the footer scrolling table if scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nScrollHead\"></a><a name=\"nScrollHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollHead\">nScrollHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>DIV container for the footer scrolling table if scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTable\"></a><a name=\"nTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTable\">nTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>The TABLE node for the main table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTableWrapper\"></a><a name=\"nTableWrapper_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTableWrapper\">nTableWrapper</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Cache the wrapper node (contains all DataTables controlled elements)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTBody\"></a><a name=\"nTBody_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTBody\">nTBody</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the tbody element</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTFoot\"></a><a name=\"nTFoot_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTFoot\">nTFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Permanent ref to the tfoot element - if it exists</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTHead\"></a><a name=\"nTHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTHead\">nTHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the thead element</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oClasses\"></a><a name=\"oClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oClasses\">oClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The classes to use for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oInit\"></a><a name=\"oInit_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInit\">oInit</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Initialisation object that is used for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oInstance\"></a><a name=\"oInstance_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInstance\">oInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The DataTables object for this table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oLoadedState\"></a><a name=\"oLoadedState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oLoadedState\">oLoadedState</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>State that was loaded from the cookie. Useful for back reference</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sAjaxDataProp\"></a><a name=\"sAjaxDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Property from a given object from which to read the table data from. This\ncan be an empty string (when not server-side processing), in which case \nit is  assumed an an array is given directly.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sAjaxSource\"></a><a name=\"sAjaxSource_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Source url for AJAX data for the table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sCookiePrefix\"></a><a name=\"sCookiePrefix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The cookie name prefix.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sDestroyWidth\"></a><a name=\"sDestroyWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDestroyWidth\">sDestroyWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its width</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sDom\"></a><a name=\"sDom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Dictate the positioning of DataTables' control elements - see\nDataTable.model.oInit.sDom.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sInstance\"></a><a name=\"sInstance_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInstance\">sInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Unique identifier for each instance of the DataTables object. If there\nis an ID on the table node, then it takes that value, otherwise an\nincrementing internal counter is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sPaginationType\"></a><a name=\"sPaginationType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Which type of pagination should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sServerMethod\"></a><a name=\"sServerMethod_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \nrequired).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sTableId\"></a><a name=\"sTableId_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTableId\">sTableId</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Cache the table ID for quick access</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"_iDisplayLength\"></a><a name=\"_iDisplayLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayLength\">_iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Paging display length</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"_iDisplayStart\"></a><a name=\"_iDisplayStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayStart\">_iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Paging start point - aiDisplay index</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable.models.oSettings.fnDisplayEnd\" class=\"  even\"><a name=\"fnDisplayEnd\"></a><a name=\"fnDisplayEnd_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnDisplayEnd</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Set the display end point - aiDisplay index</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnRecordsDisplay\" class=\"  odd\"><a name=\"fnRecordsDisplay\"></a><a name=\"fnRecordsDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRecordsDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Get the number of records in the current record set, after filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnRecordsTotal\" class=\"  even\"><a name=\"fnRecordsTotal\"></a><a name=\"fnRecordsTotal_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRecordsTotal</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Get the number of records in the current record set, before filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oBrowser.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oBrowser - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oBrowser</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oBrowser</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Browser support parameters</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollOversize\">bScrollOversize</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if the browser incorrectly calculates width:100% inside a\nscrolling element (IE6/7)</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bScrollOversize\"></a><a name=\"bScrollOversize_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollOversize\">bScrollOversize</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if the browser incorrectly calculates width:100% inside a\nscrolling element (IE6/7)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oFeatures.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oFeatures - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oFeatures</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oFeatures</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (11)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (11)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Primary features of DataTables and their enablement state.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to say if DataTables should automatically try to calculate the\noptimum table and columns widths (true) or not (false).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Delay the creation of TR and TD elements until they are actually\nneeded by a driven page draw. This can give a significant speed\nincrease for Ajax source and Javascript source data, but makes no\ndifference at all fro DOM and server-side processing tables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable filtering on the table or not. Note that if this is disabled\nthen there is no filtering at all on the table, including fnFilter.\nTo just remove the filtering input use sDom and remove the 'f' option.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Table information element (the 'Showing x of y records' div) enable\nflag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Present a user control allowing the end user to change the page size\nwhen pagination is enabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Pagination enabled or not. Note that if this is disabled then length\nchanging must also be disabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Processing indicator enable flag whenever DataTables is enacting a\nuser request - typically an Ajax request for server-side processing.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Server-side processing enabled flag - when enabled DataTables will\nget all data from the server for every draw - there is no filtering,\nsorting or paging done on the client-side.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Sorting enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Apply a class to the columns which are being sorted to provide a\nvisual highlight or not. This can slow things down when enabled since\nthere is a lot of DOM interaction.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>State saving enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bAutoWidth\"></a><a name=\"bAutoWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to say if DataTables should automatically try to calculate the\noptimum table and columns widths (true) or not (false).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bDeferRender\"></a><a name=\"bDeferRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Delay the creation of TR and TD elements until they are actually\nneeded by a driven page draw. This can give a significant speed\nincrease for Ajax source and Javascript source data, but makes no\ndifference at all fro DOM and server-side processing tables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bFilter\"></a><a name=\"bFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable filtering on the table or not. Note that if this is disabled\nthen there is no filtering at all on the table, including fnFilter.\nTo just remove the filtering input use sDom and remove the 'f' option.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bInfo\"></a><a name=\"bInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Table information element (the 'Showing x of y records' div) enable\nflag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bLengthChange\"></a><a name=\"bLengthChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Present a user control allowing the end user to change the page size\nwhen pagination is enabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bPaginate\"></a><a name=\"bPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Pagination enabled or not. Note that if this is disabled then length\nchanging must also be disabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bProcessing\"></a><a name=\"bProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Processing indicator enable flag whenever DataTables is enacting a\nuser request - typically an Ajax request for server-side processing.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bServerSide\"></a><a name=\"bServerSide_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Server-side processing enabled flag - when enabled DataTables will\nget all data from the server for every draw - there is no filtering,\nsorting or paging done on the client-side.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSort\"></a><a name=\"bSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Sorting enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortClasses\"></a><a name=\"bSortClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Apply a class to the columns which are being sorted to provide a\nvisual highlight or not. This can slow things down when enabled since\nthere is a lot of DOM interaction.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bStateSave\"></a><a name=\"bStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>State saving enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oLanguage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oLanguage - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oLanguage</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oLanguage</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Language information for the table.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.defaults.oLanguage.html\">DataTable.defaults.oLanguage</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInfoCallback\">fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Information callback function. See \n<a href=\"DataTable.defaults.html#fnInfoCallback\">DataTable.defaults.fnInfoCallback</a></p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt id=\"DataTable.models.oSettings.oLanguage.fnInfoCallback\" class=\"  even\"><a name=\"fnInfoCallback\"></a><a name=\"fnInfoCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Information callback function. See \n<a href=\"DataTable.defaults.html#fnInfoCallback\">DataTable.defaults.fnInfoCallback</a></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oPreviousSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oPreviousSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oPreviousSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oPreviousSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Store the applied global search information in case we want to force a \nresearch or compare the old search to a new one.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oScroll.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oScroll - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oScroll</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oScroll</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (8)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (8)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Scrolling settings for a table.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoCss\">bAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCollapse\">bCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When the table is shorter in height than sScrollY, collapse the\ntable container down to the height of the table (when true).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfinite\">bInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Infinite scrolling enablement flag. Now deprecated in favour of\nusing the Scroller plug-in.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iBarWidth\">iBarWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Width of the scrollbar for the web-browser's platform. Calculated\nduring table initialisation.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iLoadGap\">iLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Space (in pixels) between the bottom of the scrolling container and \nthe bottom of the scrolling viewport before the next page is loaded\nwhen using infinite scrolling.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sX\">sX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport width for horizontal scrolling. Horizontal scrolling is \ndisabled if an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sXInner\">sXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width to expand the table to when using x-scrolling. Typically you\nshould not need to use this.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sY\">sY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport height for vertical scrolling. Vertical scrolling is disabled\nif an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bAutoCss\"></a><a name=\"bAutoCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoCss\">bAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bCollapse\"></a><a name=\"bCollapse_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCollapse\">bCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When the table is shorter in height than sScrollY, collapse the\ntable container down to the height of the table (when true).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bInfinite\"></a><a name=\"bInfinite_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfinite\">bInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Infinite scrolling enablement flag. Now deprecated in favour of\nusing the Scroller plug-in.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iBarWidth\"></a><a name=\"iBarWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iBarWidth\">iBarWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Width of the scrollbar for the web-browser's platform. Calculated\nduring table initialisation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"iLoadGap\"></a><a name=\"iLoadGap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iLoadGap\">iLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Space (in pixels) between the bottom of the scrolling container and \nthe bottom of the scrolling viewport before the next page is loaded\nwhen using infinite scrolling.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sX\"></a><a name=\"sX_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sX\">sX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport width for horizontal scrolling. Horizontal scrolling is \ndisabled if an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sXInner\"></a><a name=\"sXInner_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sXInner\">sXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width to expand the table to when using x-scrolling. Typically you\nshould not need to use this.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sY\"></a><a name=\"sY_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sY\">sY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport height for vertical scrolling. Vertical scrolling is disabled\nif an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"DataTable.html\">DataTable</a></dt><dd><p>DataTables is a plug-in for the jQuery Javascript library. It is a \nhighly flexible tool, based upon the foundations of progressive \nenhancement, which will add advanced interaction controls to any \nHTML table. For a full list of features please refer to\n<a href=\"http://datatables.net\">DataTables.net</a>.</p>\n\n<p>Note that the <i>DataTable</i> object is not a global variable but is\naliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \nit may be  accessed.</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/callbacks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable, {\n\t\t\t\t\t\"aoColumnDefs\": [ {\n\t\t\t\t\t\t\"fnCallback\": function ( ao ) {\n\t\t\t\t\t\t\tvar n = document.getElementById('output');\n\t\t\t\t\t\t\tfor ( var i=0, iLen=ao.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t\tn.innerHTML += \"Update: old value: {\"+\n\t\t\t\t\t\t\t\t\tao[i].oldValue+\"} - new value: {\"+ao[i].newValue+\"}<br>\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"aTargets\": [ \"_all\" ]\n\t\t\t\t\t} ]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill provides a number of customisable callback functions so you can tailor it's\n\t\t\t\tactions to exactly what you need. This specific example shows fnCallback, which is fired when the mouse is released. Further documentation is below.\n\t\t\t</p>\n\t\t\t\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnRead</b> - Called when a cell is read for it's value. This allows you to override the default of reading the HTML value (or 'input' elements value if there is one present). For example reading the value from a select list.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be read from</li>\n\t\t\t\t\t\t<li>Returns: String - read value</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnWrite</b> - Called when a cell is to read to. This allows you to write in a specific format, or perhaps to an element within the cell.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be written to</li>\n\t\t\t\t\t\t<li>Parameter 2: String - Value to write</li>\n\t\t\t\t\t\t<li>Parameter 3: Boolean - Last cell to be written (useful for speeding up DataTables' fnUpdate)</li>\n\t\t\t\t\t\t<li>Returns: void</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnStep</b> - Called to calculate the new value to give to a cell\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be written to</li>\n\t\t\t\t\t\t<li>Parameter 2: String - Statement with a token to be replace with the calculated value</li>\n\t\t\t\t\t\t<li>Parameter 3: Int - Step counter</li>\n\t\t\t\t\t\t<li>Parameter 4: Boolean - increment (true), or decrement (false)</li>\n\t\t\t\t\t\t<li>Parameter 5: String - Token to replace</li>\n\t\t\t\t\t\t<li>Returns: String - string to write into the cell</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnCallback</b> - Called when the AutoFill is complete, with information about the fill. This can be useful for updating a server database for example.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Array - An array of objects with information about each cell that was written to. Object parameters are: \"td\", \"newValue\" and \"oldValue\".</li>\n\t\t\t\t\t\t<li>Returns: void</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t\t<div id=\"output\" style=\"height: 100px; overflow: scroll;\"> \n\t\t\t\t\tInformation about each update will appear here.<br><br>\n\t\t\t\t</div>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable, {\n\t\t\"aoColumnDefs\": [ {\n\t\t\t\"fnCallback\": function ( ao ) {\n\t\t\t\tvar n = document.getElementById('output');\n\t\t\t\tfor ( var i=0, iLen=ao.length ; i&lt;iLen ; i++ ) {\n\t\t\t\t\tn.innerHTML += \"Update: old value: {\"+\n\t\t\t\t\t\tao[i].oldValue+\"} - new value: {\"+ao[i].newValue+\"}&lt;br&gt;\";\n\t\t\t\t}\n\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t},\n\t\t\t\"aTargets\": [ \"_all\" ]\n\t\t} ]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable, {\n\t\t\t\t\t\"aoColumnDefs\": [ {\n\t\t\t\t\t\t\"bEnable\": false,\n\t\t\t\t\t\t\"aTargets\": [ -1, -2, -3 ]\n\t\t\t\t\t} ]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with column selection options\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tColumns can be enabled (default) and disabled from providing the end user the AutoFill option\n\t\t\t\tby using either aoColumns or aoColumnDefs and the bEnable option. These two arrays work in\n\t\t\t\t<a href=\"http://datatables.net/usage/columns\">exactly the same way has for DataTables</a>.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tThis example shows how disabling columns counting from the right hand side of the table \n\t\t\t\tcan be achieved. In this case, the last three columns.\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable, {\n\t\t\"aoColumnDefs\": [ {\n\t\t\t\"bEnable\": false,\n\t\t\t\"aTargets\": [ -1, -2, -3 ]\n\t\t} ]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill gives an Excel like option to a DataTable to click and drag over multiple\n\t\t\t\tcells, filling in information over the selected cells and incrementing numbers as needed.\n\t\t\t</p>\n\t\t\t<p>Thanks to <a href=\"http://www.phoniax.no/\">Phoniax AS</a> for their sponsorship of this plug-in for DataTables.</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/inputs.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t\ttd input { width: 90% }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$.fn.dataTableExt.afnSortData['dom-text'] = function  ( oSettings, iColumn )\n\t\t\t{\n\t\t\t\tvar aData = [];\n\t\t\t\t$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t\t\t\taData.push( this.value );\n\t\t\t\t} );\n\t\t\t\treturn aData;\n\t\t\t}\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"sSortDataType\": \"dom-text\", \"aTargets\": [ \"_all\" ] },\n\t\t\t\t\t\t{ \"sType\": \"numeric\", \"aTargets\": [ -2 ] }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with input elements\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill works with Input elements and Select elements, as well as plain HTML cells. This\n\t\t\t\texample shows all inputs cells, combined with DataTables' DOM sorting plug-in. You can \n\t\t\t\teven combine input and plain HTML cells if you wanted (useful from something like jEditable).\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 4.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ (Entity: &amp;)\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"4\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"5.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 6\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 7\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win XP SP2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"AOL browser (AOL desktop)\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win XP\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko (UTF-8: $¢€)\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 2.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 3.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 2k+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Camino 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Camino 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape 7.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / Mac OS 8.6-9.2\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape Browser 8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98SE+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape Navigator 9\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.2\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.4\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.4\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.6\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.7\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Seamonkey 1.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Epiphany 2.20\"></td>\n\t\t\t<td><input type=\"text\" value=\"Gnome\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 1.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"125.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 1.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"312.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 2.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"419.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 3.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"522.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"OmniWeb 5.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"420\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"iPod Touch / iPhone\"></td>\n\t\t\t<td><input type=\"text\" value=\"iPod\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"420.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"S60\"></td>\n\t\t\t<td><input type=\"text\" value=\"S60\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"413\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 7.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 7.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 8.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 8.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 88+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 88+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera for Wii\"></td>\n\t\t\t<td><input type=\"text\" value=\"Wii\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nokia N800\"></td>\n\t\t\t<td><input type=\"text\" value=\"N800\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nintendo DS browser\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nintendo DS\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"8.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C/A<sup>1</sup>\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 4.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 8-9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 7.6-9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 8-X\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"NetFront 3.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"NetFront 3.4\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Dillo 0.8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Links\"></td>\n\t\t\t<td><input type=\"text\" value=\"Text only\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Lynx\"></td>\n\t\t\t<td><input type=\"text\" value=\"Text only\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"IE Mobile\"></td>\n\t\t\t<td><input type=\"text\" value=\"Windows Mobile 6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"PSP browser\"></td>\n\t\t\t<td><input type=\"text\" value=\"PSP\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td><input type=\"text\" value=\"Other browsers\"></td>\n\t\t\t<td><input type=\"text\" value=\"All others\"></td>\n\t\t\t<td><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"U\"></td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n{\n\tvar aData = [];\n\t$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\taData.push( this.value );\n\t} );\n\treturn aData;\n}\n\n$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"sSortDataType\": \"dom-text\", \"aTargets\": [ \"_all\" ] },\n\t\t\t{ \"sType\": \"numeric\", \"aTargets\": [ -2 ] }\n\t\t]\n\t} );\n\tnew AutoFill( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/css/AutoFill.css",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * AutoFill styles\n */\n\ndiv.AutoFill_filler {\n\tdisplay: none;\n\tposition: absolute;\n\theight: 14px;\n\twidth: 14px;\n\tbackground: url(../images/filler.png) no-repeat center center;\n\tz-index: 1002;\n}\n\ndiv.AutoFill_border {\n\tdisplay: none;\n\tposition: absolute;\n\tbackground-color: #0063dc;\n\tz-index: 1001;\n\t\n\tbox-shadow: 0px 0px 5px #76b4ff;\n\t-moz-box-shadow: 0px 0px 5px #76b4ff;\n\t-webkit-box-shadow: 0px 0px 5px #76b4ff;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/02ff627f40.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Store for live information for the current drag - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Store for live information for the current drag</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/36456bf45f.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for AutoFill instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for AutoFill instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/47cac4f141.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Cached information about the border display - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Cached information about the border display</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/5a72546831.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Data cache for the position of the DataTables scrolling element (when scrolling\n  is enabled) - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Data cache for the position of the DataTables scrolling element (when scrolling\n  is enabled)</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/8ee4007a12.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Data cache for information that we need for scrolling the screen when we near\n  the edges - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Data cache for information that we need for scrolling the screen when we near\n  the edges</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/AutoFill.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: AutoFill - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: AutoFill</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>AutoFill</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"AutoFill\" class=\"  even\"><a name=\"AutoFill\"></a><a name=\"AutoFill_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new AutoFill</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables, Configuration)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>AutoFill provides Excel like auto fill features for a DataTable</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">Configuration</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>object for AutoFill</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/b44bd4821a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace:  An array of objects - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace:  An array of objects</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/c6945fdb4a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Cached information about the little dragging icon  - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Cached information about the little dragging icon </h1>\n\t\t\t\t\t<sup>the filler</sup>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (13)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (13)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"AutoFill.html\">AutoFill</a></span></dt><dd class=\"even\"><p>AutoFill provides Excel like auto fill features for a DataTable</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>AutoFill version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSettings\">fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Retreieve the settings object from an instance</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDisplay\">_fnFillerDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display the drag handle on mouse over cell</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDragMove\">_fnFillerDragMove</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Mouse move event handler for during a move. See if we want to update the display based on the\nnew cursor position</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDragStart\">_fnFillerDragStart</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Mouse down event handler for starting a drag</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerFinish\">_fnFillerFinish</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Mouse release handler - end the drag and take action to update the cells with the needed values</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerPosition\">_fnFillerPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Position the filler icon over a cell</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnInit\">_fnInit</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, oConfig)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Initialisation</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnPrep\">_fnPrep</a></span><span class=\"type-sig\"><span class=\"signature\">(sStr)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></dt><dd class=\"  odd\"><p>Chunk a string such that it can be filled in by the stepper function</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnReadCell\">_fnReadCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {String}</span></span></dt><dd class=\"  even\"><p>Read informaiton from a cell, possibly using live DOM elements if suitable</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnStep\">_fnStep</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, oPrepped, iDiff, bIncrement, sToken)</span><span class=\"type-signature\"> &rarr; {String}</span></span></dt><dd class=\"  odd\"><p>Render a string for it's position in the table after the drag (incrememt numbers)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnTargetCoords\">_fnTargetCoords</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></dt><dd class=\"  even\"><p>Find out the coordinates of a given TD cell in a table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnUpdateBorder\">_fnUpdateBorder</a></span><span class=\"type-sig\"><span class=\"signature\">(nStart, nEnd)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display the border around one or more cells (from start to end)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnWriteCell\">_fnWriteCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, sVal, bLast)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Write informaiton to a cell, possibly using live DOM elements if suitable</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>AutoFill version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnSettings\" class=\"  even\"><a name=\"fnSettings\"></a><a name=\"fnSettings_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Retreieve the settings object from an instance</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>AutoFill settings object</p></p></div>\n<dt id=\"_fnFillerDisplay\" class=\"  odd\"><a name=\"_fnFillerDisplay\"></a><a name=\"_fnFillerDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display the drag handle on mouse over cell</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerDragMove\" class=\"  even\"><a name=\"_fnFillerDragMove\"></a><a name=\"_fnFillerDragMove_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDragMove</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Mouse move event handler for during a move. See if we want to update the display based on the\nnew cursor position</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerDragStart\" class=\"  odd\"><a name=\"_fnFillerDragStart\"></a><a name=\"_fnFillerDragStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDragStart</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Mouse down event handler for starting a drag</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerFinish\" class=\"  even\"><a name=\"_fnFillerFinish\"></a><a name=\"_fnFillerFinish_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerFinish</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Mouse release handler - end the drag and take action to update the cells with the needed values</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerPosition\" class=\"  odd\"><a name=\"_fnFillerPosition\"></a><a name=\"_fnFillerPosition_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Position the filler icon over a cell</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to position filler icon over</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnInit\" class=\"  even\"><a name=\"_fnInit\"></a><a name=\"_fnInit_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnInit</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, oConfig)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Initialisation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oDT</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oConfig</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Configuration object for AutoFill</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnPrep\" class=\"  odd\"><a name=\"_fnPrep\"></a><a name=\"_fnPrep_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnPrep</a></span><span class=\"type-sig\"><span class=\"signature\">(sStr)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></span></dt><dd class=\"  odd\"><p>Chunk a string such that it can be filled in by the stepper function</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sStr</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>String to prep</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>with parameters, iStart, sStr and sPostFix</p></p></div>\n<dt id=\"_fnReadCell\" class=\"  even\"><a name=\"_fnReadCell\"></a><a name=\"_fnReadCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnReadCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {String}</span></span></span></dt><dd class=\"  even\"><p>Read informaiton from a cell, possibly using live DOM elements if suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to read</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Read value</p></p></div>\n<dt id=\"_fnStep\" class=\"  odd\"><a name=\"_fnStep\"></a><a name=\"_fnStep_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnStep</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, oPrepped, iDiff, bIncrement, sToken)</span><span class=\"type-signature\"> &rarr; {String}</span></span></span></dt><dd class=\"  odd\"><p>Render a string for it's position in the table after the drag (incrememt numbers)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell being written to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oPrepped</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Prepared object for the stepper (from _fnPrep)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDiff</td><td class=\"type type-param\">Int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Step difference</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bIncrement</td><td class=\"type type-param\">Boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Increment (true) or decriment (false)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">sToken</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Token to replace</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Rendered information</p></p></div>\n<dt id=\"_fnTargetCoords\" class=\"  even\"><a name=\"_fnTargetCoords\"></a><a name=\"_fnTargetCoords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnTargetCoords</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></span></dt><dd class=\"  even\"><p>Find out the coordinates of a given TD cell in a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\">undefined</td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>x and y properties, for the position of the cell in the tables DOM</p></p></div>\n<dt id=\"_fnUpdateBorder\" class=\"  odd\"><a name=\"_fnUpdateBorder\"></a><a name=\"_fnUpdateBorder_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnUpdateBorder</a></span><span class=\"type-sig\"><span class=\"signature\">(nStart, nEnd)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display the border around one or more cells (from start to end)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nStart</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Starting cell</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nEnd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Ending cell</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnWriteCell\" class=\"  even\"><a name=\"_fnWriteCell\"></a><a name=\"_fnWriteCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnWriteCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, sVal, bLast)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Write informaiton to a cell, possibly using live DOM elements if suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to write</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sVal</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to write</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bLast</td><td class=\"type type-param\">Boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Flag to show if this is that last update</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"AutoFill.html\">AutoFill</a></dt><dd><p>AutoFill provides Excel like auto fill features for a DataTable</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.js",
    "content": "/*\n * File:        AutoFill.js\n * Version:     1.1.2\n * CVS:         $Id$\n * Description: AutoFill for DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Mon  6 Sep 2010 16:54:41 BST\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point\n * Project:     DataTables\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n *\n */\n\n/* Global scope for AutoFill */\nvar AutoFill;\n\n(function($) {\n\n/** \n * AutoFill provides Excel like auto fill features for a DataTable\n * @class AutoFill\n * @constructor\n * @param {object} DataTables settings object\n * @param {object} Configuration object for AutoFill\n */\nAutoFill = function( oDT, oConfig )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"AutoFill\" )\n\t{\n\t\talert( \"Warning: AutoFill must be initialised with the keyword 'new'\" );\n\t\treturn;\n\t}\n\n\tif ( !$.fn.dataTableExt.fnVersionCheck('1.7.0') )\n\t{\n\t\talert( \"Warning: AutoFill requires DataTables 1.7 or greater - www.datatables.net/download\");\n\t\treturn;\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for AutoFill instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * @namespace Cached information about the little dragging icon (the filler)\n\t\t */\n\t\t\"filler\": {\n\t\t\t\"height\": 0,\n\t\t\t\"width\": 0\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Cached information about the border display\n\t\t */\n\t\t\"border\": {\n\t\t\t\"width\": 2\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Store for live information for the current drag\n\t\t */\n\t\t\"drag\": {\n\t\t\t\"startX\": -1,\n\t\t\t\"startY\": -1,\n\t\t\t\"startTd\": null,\n\t\t\t\"endTd\": null,\n\t\t\t\"dragging\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Data cache for information that we need for scrolling the screen when we near\n\t\t *   the edges\n\t\t */\n\t\t\"screen\": {\n\t\t\t\"interval\": null,\n\t\t\t\"y\": 0,\n\t\t\t\"height\": 0,\n\t\t\t\"scrollTop\": 0\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Data cache for the position of the DataTables scrolling element (when scrolling\n\t\t *   is enabled)\n\t\t */\n\t\t\"scroller\": {\n\t\t\t\"top\": 0,\n\t\t\t\"bottom\": 0\n\t\t},\n\t\t\n\t\t\n\t\t/**\n\t\t * @namespace Information stored for each column. An array of objects\n\t\t */\n\t\t\"columns\": []\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t\"table\": null,\n\t\t\"filler\": null,\n\t\t\"borderTop\": null,\n\t\t\"borderRight\": null,\n\t\t\"borderBottom\": null,\n\t\t\"borderLeft\": null,\n\t\t\"currentTarget\": null\n\t};\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @method fnSettings\n\t *  @returns {object} AutoFill settings object\n\t */\n\tthis.fnSettings = function () {\n\t\treturn this.s;\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tthis._fnInit( oDT, oConfig );\n\treturn this;\n};\n\n\n\nAutoFill.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Initialisation\n\t *  @method _fnInit\n \t *  @param {object} oDT DataTables settings object\n \t *  @param {object} oConfig Configuration object for AutoFill\n\t *  @returns void\n\t */\n\t\"_fnInit\": function ( oDT, oConfig )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\ti, iLen;\n\t\t\n\t\t/*\n\t\t * Settings\n\t\t */\n\t\tthis.s.dt = oDT.fnSettings();\n\t\t\n\t\tthis.dom.table = this.s.dt.nTable;\n\t\t\n\t\t/* Add and configure the columns */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis._fnAddColumn( i );\n\t\t}\n\t\t\n\t\tif ( typeof oConfig != 'undefined' && typeof oConfig.aoColumnDefs != 'undefined' )\n\t\t{\n\t\t\tthis._fnColumnDefs( oConfig.aoColumnDefs );\n\t\t}\n\t\t\n\t\tif ( typeof oConfig != 'undefined' && typeof oConfig.aoColumns != 'undefined' )\n\t\t{\n\t\t\tthis._fnColumnsAll( oConfig.aoColumns );\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * DOM\n\t\t */\n\t\t\n\t\t/* Auto Fill click and drag icon */\n\t\tvar filler = document.createElement('div');\n\t\tfiller.className = \"AutoFill_filler\";\n\t\tdocument.body.appendChild( filler );\n\t\tthis.dom.filler = filler;\n\t\t\n\t\tfiller.style.display = \"block\";\n\t\tthis.s.filler.height = $(filler).height();\n\t\tthis.s.filler.width = $(filler).width();\n\t\tfiller.style.display = \"none\";\n\t\t\n\t\t/* Border display - one div for each side. We can't just use a single one with a border, as\n\t\t * we want the events to effectively pass through the transparent bit of the box\n\t\t */\n\t\tvar border;\n\t\tvar appender = document.body;\n\t\tif ( that.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthat.s.dt.nTable.parentNode.style.position = \"relative\";\n\t\t\tappender = that.s.dt.nTable.parentNode;\n\t\t}\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderTop = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderRight = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderBottom = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderLeft = border;\n\t\t\n\t\t/*\n\t\t * Events\n\t\t */\n\t\t\n\t\t$(filler).mousedown( function (e) {\n\t\t\tthis.onselectstart = function() { return false; };\n\t\t\tthat._fnFillerDragStart.call( that, e );\n\t\t\treturn false;\n\t\t} );\n\t\t\n\t\t$('tbody>tr>td', this.dom.table).live( 'mouseover mouseout', function (e) {\n\t\t\tthat._fnFillerDisplay.call( that, e );\n\t\t} );\n\t},\n\t\n\t\n\t\"_fnColumnDefs\": function ( aoColumnDefs )\n\t{\n\t\tvar\n\t\t\ti, j, k, iLen, jLen, kLen,\n\t\t\taTargets;\n\t\t\n\t\t/* Loop over the column defs array - loop in reverse so first instace has priority */\n\t\tfor ( i=aoColumnDefs.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\t/* Each column def can target multiple columns, as it is an array */\n\t\t\taTargets = aoColumnDefs[i].aTargets;\n\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( typeof aTargets[j] == 'number' && aTargets[j] >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* 0+ integer, left to right column counting. */\n\t\t\t\t\tthis._fnColumnOptions( aTargets[j], aoColumnDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] == 'number' && aTargets[j] < 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\tthis._fnColumnOptions( this.s.dt.aoColumns.length+aTargets[j], aoColumnDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] == 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\tfor ( k=0, kLen=this.s.dt.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t     this.s.dt.aoColumns[k].nTh.className.indexOf( aTargets[j] ) != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._fnColumnOptions( k, aoColumnDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\t\n\t\t\n\t\"_fnColumnsAll\": function ( aoColumns )\n\t{\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis._fnColumnOptions( i, aoColumns[i] );\n\t\t}\n\t},\n\t\n\t\n\t\"_fnAddColumn\": function ( i )\n\t{\n\t\tthis.s.columns[i] = {\n\t\t\t\"enable\": true,\n\t\t\t\"read\": this._fnReadCell,\n\t\t\t\"write\": this._fnWriteCell,\n\t\t\t\"step\": this._fnStep,\n\t\t\t\"complete\": null\n\t\t};\n\t},\n\t\n\t\"_fnColumnOptions\": function ( i, opts )\n\t{\n\t\tif ( typeof opts.bEnable != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].enable = opts.bEnable;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnRead != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].read = opts.fnRead;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnWrite != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].write = opts.fnWrite;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnStep != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].step = opts.fnStep;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnCallback != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].complete = opts.fnCallback;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Find out the coordinates of a given TD cell in a table\n\t *  @method  _fnTargetCoords\n\t *  @param   {Node} nTd\n\t *  @returns {Object} x and y properties, for the position of the cell in the tables DOM\n\t */\n\t\"_fnTargetCoords\": function ( nTd )\n\t{\n\t\tvar nTr = $(nTd).parents('tr')[0];\n\t\t\n\t\treturn {\n\t\t\t\"x\": $('td', nTr).index(nTd),\n\t\t\t\"y\": $('tr', nTr.parentNode).index(nTr)\n\t\t};\n\t},\n\t\n\t\n\t/**\n\t * Display the border around one or more cells (from start to end)\n\t *  @method  _fnUpdateBorder\n\t *  @param   {Node} nStart Starting cell\n\t *  @param   {Node} nEnd Ending cell\n\t *  @returns void\n\t */\n\t\"_fnUpdateBorder\": function ( nStart, nEnd )\n\t{\n\t\tvar\n\t\t\tborder = this.s.border.width,\n\t\t\toffsetStart = $(nStart).offset(),\n\t\t\toffsetEnd = $(nEnd).offset(),\n\t\t\tx1 = offsetStart.left - border,\n\t\t\tx2 = offsetEnd.left + $(nEnd).outerWidth(),\n\t\t\ty1 = offsetStart.top - border,\n\t\t\ty2 = offsetEnd.top + $(nEnd).outerHeight(),\n\t\t\twidth = offsetEnd.left + $(nEnd).outerWidth() - offsetStart.left + (2*border),\n\t\t\theight = offsetEnd.top + $(nEnd).outerHeight() - offsetStart.top + (2*border),\n\t\t\toStyle;\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\t/* The border elements are inside the DT scroller - so position relative to that */\n\t\t\tvar\n\t\t\t\toffsetScroll = $(this.s.dt.nTable.parentNode).offset(),\n\t\t\t\tscrollTop = $(this.s.dt.nTable.parentNode).scrollTop(),\n\t\t\t\tscrollLeft = $(this.s.dt.nTable.parentNode).scrollLeft();\n\t\t\t\n\t\t\tx1 -= offsetScroll.left - scrollLeft;\n\t\t\tx2 -= offsetScroll.left - scrollLeft;\n\t\t\ty1 -= offsetScroll.top - scrollTop;\n\t\t\ty2 -= offsetScroll.top - scrollTop;\n\t\t}\n\t\t\n\t\t/* Top */\n\t\toStyle = this.dom.borderTop.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = this.s.border.width+\"px\";\n\t\toStyle.width = width+\"px\";\n\t\t\n\t\t/* Bottom */\n\t\toStyle = this.dom.borderBottom.style;\n\t\toStyle.top = y2+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = this.s.border.width+\"px\";\n\t\toStyle.width = width+\"px\";\n\t\t\n\t\t/* Left */\n\t\toStyle = this.dom.borderLeft.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = height+\"px\";\n\t\toStyle.width = this.s.border.width+\"px\";\n\t\t\n\t\t/* Right */\n\t\toStyle = this.dom.borderRight.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x2+\"px\";\n\t\toStyle.height = height+\"px\";\n\t\toStyle.width = this.s.border.width+\"px\";\n\t},\n\t\n\t\n\t/**\n\t * Mouse down event handler for starting a drag\n\t *  @method  _fnFillerDragStart\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDragStart\": function (e)\n\t{\n\t\tvar that = this;\n\t\tvar startingTd = this.dom.currentTarget;\n\t\t\n\t\tthis.s.drag.dragging = true;\n\t\t\n\t\tthat.dom.borderTop.style.display = \"block\";\n\t\tthat.dom.borderRight.style.display = \"block\";\n\t\tthat.dom.borderBottom.style.display = \"block\";\n\t\tthat.dom.borderLeft.style.display = \"block\";\n\t\t\n\t\tvar coords = this._fnTargetCoords( startingTd );\n\t\tthis.s.drag.startX = coords.x;\n\t\tthis.s.drag.startY = coords.y;\n\t\t\n\t\tthis.s.drag.startTd = startingTd;\n\t\tthis.s.drag.endTd = startingTd;\n\t\t\n\t\tthis._fnUpdateBorder( startingTd, startingTd );\n\t\t\n\t\t$(document).bind('mousemove.AutoFill', function (e) {\n\t\t\tthat._fnFillerDragMove.call( that, e );\n\t\t} );\n\t\t\n\t\t$(document).bind('mouseup.AutoFill', function (e) {\n\t\t\tthat._fnFillerFinish.call( that, e );\n\t\t} );\n\t\t\n\t\t/* Scrolling information cache */\n\t\tthis.s.screen.y = e.pageY;\n\t\tthis.s.screen.height = $(window).height();\n\t\tthis.s.screen.scrollTop = $(document).scrollTop();\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;\n\t\t\tthis.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();\n\t\t}\n\t\t\n\t\t/* Scrolling handler - we set an interval (which is cancelled on mouse up) which will fire\n\t\t * regularly and see if we need to do any scrolling\n\t\t */\n\t\tthis.s.screen.interval = setInterval( function () {\n\t\t\tvar iScrollTop = $(document).scrollTop();\n\t\t\tvar iScrollDelta = iScrollTop - that.s.screen.scrollTop;\n\t\t\tthat.s.screen.y += iScrollDelta;\n\t\t\t\n\t\t\tif ( that.s.screen.height - that.s.screen.y + iScrollTop < 50 )\n\t\t\t{\n\t\t\t\t$('html, body').animate( {\n\t\t\t\t\t\"scrollTop\": iScrollTop + 50\n\t\t\t\t}, 240, 'linear' );\n\t\t\t}\n\t\t\telse if ( that.s.screen.y - iScrollTop < 50 )\n\t\t\t{\n\t\t\t\t$('html, body').animate( {\n\t\t\t\t\t\"scrollTop\": iScrollTop - 50\n\t\t\t\t}, 240, 'linear' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( that.s.dt.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tif ( that.s.screen.y > that.s.scroller.bottom - 50 )\n\t\t\t\t{\n\t\t\t\t\t$(that.s.dt.nTable.parentNode).animate( {\n\t\t\t\t\t\t\"scrollTop\": $(that.s.dt.nTable.parentNode).scrollTop() + 50\n\t\t\t\t\t}, 240, 'linear' );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.screen.y < that.s.scroller.top + 50 )\n\t\t\t\t{\n\t\t\t\t\t$(that.s.dt.nTable.parentNode).animate( {\n\t\t\t\t\t\t\"scrollTop\": $(that.s.dt.nTable.parentNode).scrollTop() - 50\n\t\t\t\t\t}, 240, 'linear' );\n\t\t\t\t}\n\t\t\t}\n\t\t}, 250 );\n\t},\n\t\n\t\n\t/**\n\t * Mouse move event handler for during a move. See if we want to update the display based on the\n\t * new cursor position\n\t *  @method  _fnFillerDragMove\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDragMove\": function (e)\n\t{\n\t\tif ( e.target && e.target.nodeName.toUpperCase() == \"TD\" &&\n\t\t \te.target != this.s.drag.endTd )\n\t\t{\n\t\t\tvar coords = this._fnTargetCoords( e.target );\n\t\t\t\n\t\t\tif ( coords.x != this.s.drag.startX )\n\t\t\t{\n\t\t\t\te.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0];\n\t\t\t \tcoords = this._fnTargetCoords( e.target );\n\t\t\t}\n\t\t\t\n\t\t\tif ( coords.x == this.s.drag.startX )\n\t\t\t{\n\t\t\t\tvar drag = this.s.drag;\n\t\t\t\tdrag.endTd = e.target;\n\t\t\t\t\n\t\t\t\tif ( coords.y >= this.s.drag.startY )\n\t\t\t\t{\n\t\t\t\t\tthis._fnUpdateBorder( drag.startTd, drag.endTd );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._fnUpdateBorder( drag.endTd, drag.startTd );\n\t\t\t\t}\n\t\t\t\tthis._fnFillerPosition( e.target );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Update the screen information so we can perform scrolling */\n\t\tthis.s.screen.y = e.pageY;\n\t\tthis.s.screen.scrollTop = $(document).scrollTop();\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.scroller.scrollTop = $(this.s.dt.nTable.parentNode).scrollTop();\n\t\t\tthis.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;\n\t\t\tthis.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Mouse release handler - end the drag and take action to update the cells with the needed values\n\t *  @method  _fnFillerFinish\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerFinish\": function (e)\n\t{\n\t\tvar that = this;\n\t\t\n\t\t$(document).unbind('mousemove.AutoFill');\n\t\t$(document).unbind('mouseup.AutoFill');\n\t\t\n\t\tthis.dom.borderTop.style.display = \"none\";\n\t\tthis.dom.borderRight.style.display = \"none\";\n\t\tthis.dom.borderBottom.style.display = \"none\";\n\t\tthis.dom.borderLeft.style.display = \"none\";\n\t\t\n\t\tthis.s.drag.dragging = false;\n\t\t\n\t\tclearInterval( this.s.screen.interval );\n\t\t\n\t\tvar coordsStart = this._fnTargetCoords( this.s.drag.startTd );\n\t\tvar coordsEnd = this._fnTargetCoords( this.s.drag.endTd );\n\t\tvar aTds = [];\n\t\tvar bIncrement;\n\t\t\n\t\tif ( coordsStart.y <= coordsEnd.y )\n\t\t{\n\t\t\tbIncrement = true;\n\t\t\tfor ( i=coordsStart.y ; i<=coordsEnd.y ; i++ )\n\t\t\t{\n\t\t\t\taTds.push( $('tbody>tr:eq('+i+')>td:eq('+coordsStart.x+')', this.dom.table)[0] );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbIncrement = false;\n\t\t\tfor ( i=coordsStart.y ; i>=coordsEnd.y ; i-- )\n\t\t\t{\n\t\t\t\taTds.push( $('tbody>tr:eq('+i+')>td:eq('+coordsStart.x+')', this.dom.table)[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar iColumn = coordsStart.x;\n\t\tvar bLast = false;\n\t\tvar aoEdited = [];\n\t\tvar sStart = this.s.columns[iColumn].read.call( this, this.s.drag.startTd );\n\t\tvar oPrepped = this._fnPrep( sStart );\n\t\t\n\t\tfor ( i=0, iLen=aTds.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i==iLen-1 )\n\t\t\t{\n\t\t\t\tbLast = true;\n\t\t\t}\n\t\t\t\n\t\t\tvar original = this.s.columns[iColumn].read.call( this, aTds[i] );\n\t\t\tvar step = this.s.columns[iColumn].step.call( this, aTds[i], oPrepped, i, bIncrement, \n\t\t\t\t'SPRYMEDIA_AUTOFILL_STEPPER' );\n\t\t\tthis.s.columns[iColumn].write.call( this, aTds[i], step, bLast );\n\t\t\t\n\t\t\taoEdited.push( {\n\t\t\t\t\"td\": aTds[i],\n\t\t\t\t\"newValue\": step,\n\t\t\t\t\"oldValue\": original\n\t\t\t} );\n\t\t}\n\t\t\n\t\tif ( this.s.columns[iColumn].complete !== null )\n\t\t{\n\t\t\tthis.s.columns[iColumn].complete.call( this, aoEdited );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Chunk a string such that it can be filled in by the stepper function\n\t *  @method  _fnPrep\n\t *  @param   {String} sStr String to prep\n\t *  @returns {Object} with parameters, iStart, sStr and sPostFix\n\t */\n\t\"_fnPrep\": function ( sStr )\n\t{\n\t\tvar aMatch = sStr.match(/[\\d\\.]+/g);\n\t\tif ( !aMatch || aMatch.length === 0 )\n\t\t{\n\t\t\treturn {\n\t\t\t\t\"iStart\": 0,\n\t\t\t\t\"sStr\": sStr,\n\t\t\t\t\"sPostFix\": \"\"\n\t\t\t};\n\t\t}\n\t\t\n\t\tvar sLast = aMatch[ aMatch.length-1 ];\n\t\tvar num = parseInt(sLast, 10);\n\t\tvar regex = new RegExp( '^(.*)'+sLast+'(.*?)$' );\n\t\tvar decimal = sLast.match(/\\./) ? \".\"+sLast.split('.')[1] : \"\";\n\t\t\n\t\treturn {\n\t\t\t\"iStart\": num,\n\t\t\t\"sStr\": sStr.replace(regex, \"$1SPRYMEDIA_AUTOFILL_STEPPER$2\"),\n\t\t\t\"sPostFix\": decimal\n\t\t};\n\t},\n\t\n\t\n\t/**\n\t * Render a string for it's position in the table after the drag (incrememt numbers)\n\t *  @method  _fnStep\n\t *  @param   {Node} nTd Cell being written to\n\t *  @param   {Object} oPrepped Prepared object for the stepper (from _fnPrep)\n\t *  @param   {Int} iDiff Step difference\n\t *  @param   {Boolean} bIncrement Increment (true) or decriment (false)\n\t *  @param   {String} sToken Token to replace\n\t *  @returns {String} Rendered information\n\t */\n\t\"_fnStep\": function ( nTd, oPrepped, iDiff, bIncrement, sToken )\n\t{\n\t\tvar iReplace = bIncrement ? (oPrepped.iStart+iDiff) : (oPrepped.iStart-iDiff);\n\t\tif ( isNaN(iReplace) )\n\t\t{\n\t\t\tiReplace = \"\";\n\t\t}\n\t\treturn oPrepped.sStr.replace( sToken, iReplace+oPrepped.sPostFix );\n\t},\n\t\n\t\n\t/**\n\t * Read informaiton from a cell, possibly using live DOM elements if suitable\n\t *  @method  _fnReadCell\n\t *  @param   {Node} nTd Cell to read\n\t *  @returns {String} Read value\n\t */\n\t\"_fnReadCell\": function ( nTd )\n\t{\n\t\tvar jq = $('input', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\treturn $(jq).val();\n\t\t}\n\t\t\n\t\tjq = $('select', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\treturn $(jq).val();\n\t\t}\n\t\t\n\t\treturn nTd.innerHTML;\n\t},\n\t\n\t\n\t/**\n\t * Write informaiton to a cell, possibly using live DOM elements if suitable\n\t *  @method  _fnWriteCell\n\t *  @param   {Node} nTd Cell to write\n\t *  @param   {String} sVal Value to write\n\t *  @param   {Boolean} bLast Flag to show if this is that last update\n\t *  @returns void\n\t */\n\t\"_fnWriteCell\": function ( nTd, sVal, bLast )\n\t{\n\t\tvar jq = $('input', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\t$(jq).val( sVal );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tjq = $('select', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\t$(jq).val( sVal );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar pos = this.s.dt.oInstance.fnGetPosition( nTd );\n\t\tthis.s.dt.oInstance.fnUpdate( sVal, pos[0], pos[2], bLast );\n\t},\n\t\n\t\n\t/**\n\t * Display the drag handle on mouse over cell\n\t *  @method  _fnFillerDisplay\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDisplay\": function (e)\n\t{\n\t\t/* Don't display automatically when dragging */\n\t\tif ( this.s.drag.dragging)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t/* Check that we are allowed to AutoFill this column or not */\n\t\tvar nTd = (e.target.nodeName.toLowerCase() == 'td') ? e.target : $(e.target).parents('td')[0];\n\t\tvar iX = this._fnTargetCoords(nTd).x;\n\t\tif ( !this.s.columns[iX].enable )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar filler = this.dom.filler;\n\t\tif (e.type == 'mouseover')\n\t\t{\n\t\t\tthis.dom.currentTarget = nTd;\n\t\t\tthis._fnFillerPosition( nTd );\n\t\t\t\n\t\t\tfiller.style.display = \"block\";\n\t\t}\n\t\telse if ( !e.relatedTarget || !e.relatedTarget.className.match(/AutoFill/) )\n\t\t{\n\t\t\tfiller.style.display = \"none\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Position the filler icon over a cell\n\t *  @method  _fnFillerPosition\n\t *  @param   {Node} nTd Cell to position filler icon over\n\t *  @returns void\n\t */\n\t\"_fnFillerPosition\": function ( nTd )\n\t{\n\t\tvar offset = $(nTd).offset();\n\t\tvar filler = this.dom.filler;\n\t\tfiller.style.top = (offset.top - (this.s.filler.height / 2)-1 + $(nTd).outerHeight())+\"px\";\n\t\tfiller.style.left = (offset.left - (this.s.filler.width / 2)-1 + $(nTd).outerWidth())+\"px\";\n\t}\n};\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  AutoFill\n */\nAutoFill.prototype.CLASS = \"AutoFill\";\n\n\n/**\n * AutoFill version\n *  @constant  VERSION\n *  @type      String\n *  @default   1.1.2\n */\nAutoFill.VERSION = \"1.1.2\";\nAutoFill.prototype.VERSION = AutoFill.VERSION;\n\n\n})(jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable({\n\t\t\t\t\t\"sScrollY\": 200,\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"bPaginate\": false\n\t\t\t\t});\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with scrolling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tWhen dragging an AutoFill handle, the table (if DataTables scrolling is enabled) or the window will be automatically scrolled, as you approach the edge of the scrolling component. The example below shows the effect with DataTables scrolling (and also window if needed).\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable({\n\t\t\"sScrollY\": 200,\n\t\t\"bScrollCollapse\": true,\n\t\t\"bPaginate\": false\n\t});\n\tnew AutoFill( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/alt_insert.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\" class=\"alt\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with alternative insert styling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Using CSS it is relatively easy to modify the insert bar to suit your web-site. This\n\t\t\t\texample shows how an arrow can be used to show the insert point rather than the straight\n\t\t\t\tbar used in the other examples.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/col_filter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t@import \"../ColVis/media/css/ColVis.css\";\n\t\t\tthead input { width: 100% }\n\t\t\tinput.search_init { color: #999 }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../ColVis/media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable;\n\t\t\t\t\n\t\t\t\t/* Add the events etc before DataTables hides a column */\n\t\t\t\t$(\"thead input\").keyup( function () {\n\t\t\t\t\t/* Filter on the column (the index) of this element */\n\t\t\t\t\toTable.fnFilter( this.value, oTable.oApi._fnVisibleToColumnIndex( \n\t\t\t\t\t\toTable.fnSettings(), $(\"thead input\").index(this) ) );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * Support functions to provide a little bit of 'user friendlyness' to the textboxes\n\t\t\t\t */\n\t\t\t\t$(\"thead input\").each( function (i) {\n\t\t\t\t\tthis.initVal = this.value;\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$(\"thead input\").focus( function () {\n\t\t\t\t\tif ( this.className == \"search_init\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.className = \"\";\n\t\t\t\t\t\tthis.value = \"\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$(\"thead input\").blur( function (i) {\n\t\t\t\t\tif ( this.value == \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.className = \"search_init\";\n\t\t\t\t\t\tthis.value = this.initVal;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\toTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'RC<\"clear\">lfrtip',\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sSearch\": \"Search all columns:\"\n\t\t\t\t\t},\n\t\t\t\t\t\"bSortCellsTop\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with individual column filtering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example of how to use ColReorder shows quite a number of different interesting \n\t\t\t\tproperties. Firstly, there is integration with ColVis, then there is the fact that there\n\t\t\t\tis more than one row in the table header with the second being used for the input\n\t\t\t\telements, and finally of course the filtering itself. Note that it is important to use\n\t\t\t\tthe _fnVisibleToColumnIndex() internal function to calculate which column index should\n\t\t\t\tbe given to fnFilter (or you could employ your own methods).</p>\n\t\t\t<p>Please note that this demo requires DataTables 1.8 or later.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td><input type=\"text\" name=\"search_engine\" value=\"Search engines\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_browser\" value=\"Search browsers\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_platform\" value=\"Search platforms\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_version\" value=\"Search versions\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_grade\" value=\"Search grades\" class=\"search_init\" /></td>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable;\n\t\n\t/* Add the events etc before DataTables hides a column */\n\t$(\"thead input\").keyup( function () {\n\t\t/* Filter on the column (the index) of this element */\n\t\toTable.fnFilter( this.value, oTable.oApi._fnVisibleToColumnIndex( \n\t\t\toTable.fnSettings(), $(\"thead input\").index(this) ) );\n\t} );\n\t\n\t/*\n\t * Support functions to provide a little bit of 'user friendlyness' to the textboxes\n\t */\n\t$(\"thead input\").each( function (i) {\n\t\tthis.initVal = this.value;\n\t} );\n\t\n\t$(\"thead input\").focus( function () {\n\t\tif ( this.className == \"search_init\" )\n\t\t{\n\t\t\tthis.className = \"\";\n\t\t\tthis.value = \"\";\n\t\t}\n\t} );\n\t\n\t$(\"thead input\").blur( function (i) {\n\t\tif ( this.value == \"\" )\n\t\t{\n\t\t\tthis.className = \"search_init\";\n\t\t\tthis.value = this.initVal;\n\t\t}\n\t} );\n\t\n\toTable = $('#example').dataTable( {\n\t\t\"sDom\": 'RC&lt;\"clear\"&gt;lfrtip',\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t],\n\t\t\"oLanguage\": {\n\t\t\t\"sSearch\": \"Search all columns:\"\n\t\t},\n\t\t\"bSortCellsTop\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/colvis.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t@import \"../ColVis/media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../ColVis/media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'RC<\"clear\">lfrtip',\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 1 ] }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with ColVis\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>The ColReorder plug-in interacts with the ColVis plug-in for DataTables by updating the\n\t\t\t\torder of the list of columns whenever a reorder is done. This is shown in the example\n\t\t\t\tbelow, where one column has been hidden by default to add extra emphasis to ColVis.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'RC&lt;\"clear\"&gt;lfrtip',\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 1 ] }\n\t\t]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedcolumns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t.FixedColumns_Cloned th { background-color: white; }\n\t\t\ttd.index { background-color: white; border-right: 1px solid black; }\n\t\t\ttable.display th.sorting_disabled { border-bottom: 1px solid white; }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../FixedColumns/media/js/FixedColumns.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"sScrollX\": \"100%\",\n\t\t\t\t\t\"sScrollXInner\": \"150%\",\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"fnDrawCallback\": function ( oSettings ) {\n\t\t\t\t\t\t/* Need to redo the counters if filtered or sorted */\n\t\t\t\t\t\tif ( oSettings.bSorted || oSettings.bFiltered ) {\n\t\t\t\t\t\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t\t$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bSortable\": false, \"sClass\": \"index\", \"aTargets\": [ 0 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"aaSorting\": [[ 1, 'asc' ]],\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"iFixedColumns\": 1\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnew FixedColumns( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with FixedColumns\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>While ColReorder works great with scrolling in DataTables (and thus FixedColumns), \n\t\t\t\tit also presents an additional option called 'iFixedColumns' which allows you to not\n\t\t\t\tlet the user reorder certain columns (specific the number given, counting left to\n\t\t\t\tright). So in the case of FixedColumns this is useful because you typically won't want\n\t\t\t\tto let your fixed column be reordered. This is shown below in the FixedColumns index column\n\t\t\t\texample.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"3%\">&nbsp;</th>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">2</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">3</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">8</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">9</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">10</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">11</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">12</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">13</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">14</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">15</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">16</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">17</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">18</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">19</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">20</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">21</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">22</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">23</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">24</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">25</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">26</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">27</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">28</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">29</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">30</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">31</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">32</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">33</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">34</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">35</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">36</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">37</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">38</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">39</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">40</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">41</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">42</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">43</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">44</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">45</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">46</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">47</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">48</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">49</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">50</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">51</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">52</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">53</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">54</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">55</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">56</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td class=\"center\">57</td>\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>&nbsp;</th>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"sScrollX\": \"100%\",\n\t\t\"sScrollXInner\": \"150%\",\n\t\t\"bScrollCollapse\": true,\n\t\t\"fnDrawCallback\": function ( oSettings ) {\n\t\t\t/* Need to redo the counters if filtered or sorted */\n\t\t\tif ( oSettings.bSorted || oSettings.bFiltered ) {\n\t\t\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i&lt;iLen ; i++ ) {\n\t\t\t\t\t$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bSortable\": false, \"sClass\": \"index\", \"aTargets\": [ 0 ] }\n\t\t],\n\t\t\"aaSorting\": [[ 1, 'asc' ]],\n\t\t\"oColReorder\": {\n\t\t\t\"iFixedColumns\": 1\n\t\t}\n\t} );\n\tnew FixedColumns( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedheader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t.FixedHeader_Cloned th { background-color: white; }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../FixedHeader/js/FixedHeader.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t \"sDom\": 'RC<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t\tnew FixedHeader( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with FixedHeader\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>FixedHeader is a particularly useful plug-in for DataTables, allowing a table header\n\t\t\t\tto float at the top of a scrolling window. ColReorder works well with FixedHeader, allowing\n\t\t\t\tyou to reorder columns even using the floating header, as shown in the example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t \"sDom\": 'RC&lt;\"clear\"&gt;lfrtip'\n\t} );\n\tnew FixedHeader( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows the basic use case of the ColReorder plug-in. With ColReorder enabled\n\t\t\t\tfor a table, the user has the ability to click and drag any table header cell, and drop \n\t\t\t\tit where they wish the column to be inserted. The insert point is shown visually, and\n\t\t\t\tthe column reordering is done as soon as the mouse button is released.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/css/ColReorder.css",
    "content": "/*\n * Namespace DTCR - \"DataTables ColReorder\" plug-in\n */\n\ntable.DTCR_clonedTable {\n\tbackground-color: white;\n\tz-index: 202;\n}\n\ndiv.DTCR_pointer {\n\twidth: 1px;\n\tbackground-color: #0259C4;\n\tz-index: 201;\n}\n\nbody.alt div.DTCR_pointer {\n\tmargin-top: -15px;\n\tmargin-left: -9px;\n\twidth: 18px;\n\tbackground: url('../images/insert.png') no-repeat top left;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/46848f6f3b.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for ColReorder instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for ColReorder instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/4f1246032c.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Information used for the mouse drag - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Information used for the mouse drag</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/ColReorder.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: ColReorder - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: ColReorder</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>ColReorder</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"ColReorder\" class=\"  even\"><a name=\"ColReorder\"></a><a name=\"ColReorder_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new ColReorder</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables, ColReorder)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>ColReorder provides column visiblity control for DataTables</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">ColReorder</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>options</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInstances\">aoInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of all ColReorder instances for later reference</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnReset\">fnReset</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Reset the column ordering for a DataTables instance</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aoInstances\"></a><a name=\"aoInstances_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInstances\">aoInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of all ColReorder instances for later reference</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Properties:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">ColReorder.aoInstances</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"></td></tr>\n\t</tbody>\n</table></div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"ColReorder.fnReset\" class=\"  even\"><a name=\"fnReset\"></a><a name=\"fnReset_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnReset</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Reset the column ordering for a DataTables instance</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">object</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>oTable DataTables instance to consider</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (3)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (3)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"ColReorder.html\">ColReorder</a></span></dt><dd class=\"even\"><p>ColReorder provides column visiblity control for DataTables</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColReorder version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnArraySwitch\">fnArraySwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(array, int, int)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Modify an array by switching the position of two elements</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDomSwitch\">fnDomSwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(string, int, int)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Switch the positions of nodes in a parent node (note this is specifically designed for \ntable rows). Note this function considers all element nodes under the parent!</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnInvertKeyValues\">fnInvertKeyValues</a></span><span class=\"type-sig\"><span class=\"signature\">(array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Switch the key value pairing of an index array to be value key (i.e. the old value is now the\nkey). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColReorder version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnArraySwitch\" class=\"  even\"><a name=\"fnArraySwitch\"></a><a name=\"fnArraySwitch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnArraySwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(array, int, int)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Modify an array by switching the position of two elements</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aArray Array to consider, will be modified by reference (i.e. no return)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iFrom From point</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iTo Insert point</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"fnDomSwitch\" class=\"  odd\"><a name=\"fnDomSwitch\"></a><a name=\"fnDomSwitch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDomSwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(string, int, int)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Switch the positions of nodes in a parent node (note this is specifically designed for \ntable rows). Note this function considers all element nodes under the parent!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">string</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>sTag Tag to consider</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iFrom Element to move</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Point to element the element to (before this point), can be null for append</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"fnInvertKeyValues\" class=\"  even\"><a name=\"fnInvertKeyValues\"></a><a name=\"fnInvertKeyValues_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnInvertKeyValues</a></span><span class=\"type-sig\"><span class=\"signature\">(array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Switch the key value pairing of an index array to be value key (i.e. the old value is now the\nkey). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aIn Array to switch around</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"ColReorder.html\">ColReorder</a></dt><dd><p>ColReorder provides column visiblity control for DataTables</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.js",
    "content": "/*\n * File:        ColReorder.js\n * Version:     1.0.8\n * CVS:         $Id$\n * Description: Allow columns to be reordered in a DataTable\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Wed Sep 15 18:23:29 BST 2010\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     DataTables\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n *\n */\n\n\n(function($, window, document) {\n\n\n/**\n * Switch the key value pairing of an index array to be value key (i.e. the old value is now the\n * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].\n *  @method  fnInvertKeyValues\n *  @param   array aIn Array to switch around\n *  @returns array\n */\nfunction fnInvertKeyValues( aIn )\n{\n\tvar aRet=[];\n\tfor ( var i=0, iLen=aIn.length ; i<iLen ; i++ )\n\t{\n\t\taRet[ aIn[i] ] = i;\n\t}\n\treturn aRet;\n}\n\n\n/**\n * Modify an array by switching the position of two elements\n *  @method  fnArraySwitch\n *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)\n *  @param   int iFrom From point\n *  @param   int iTo Insert point\n *  @returns void\n */\nfunction fnArraySwitch( aArray, iFrom, iTo )\n{\n\tvar mStore = aArray.splice( iFrom, 1 )[0];\n\taArray.splice( iTo, 0, mStore );\n}\n\n\n/**\n * Switch the positions of nodes in a parent node (note this is specifically designed for \n * table rows). Note this function considers all element nodes under the parent!\n *  @method  fnDomSwitch\n *  @param   string sTag Tag to consider\n *  @param   int iFrom Element to move\n *  @param   int Point to element the element to (before this point), can be null for append\n *  @returns void\n */\nfunction fnDomSwitch( nParent, iFrom, iTo )\n{\n\tvar anTags = [];\n\tfor ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )\n\t{\n\t\tif ( nParent.childNodes[i].nodeType == 1 )\n\t\t{\n\t\t\tanTags.push( nParent.childNodes[i] );\n\t\t}\n\t}\n\tvar nStore = anTags[ iFrom ];\n\t\n\tif ( iTo !== null )\n\t{\n\t\tnParent.insertBefore( nStore, anTags[iTo] );\n\t}\n\telse\n\t{\n\t\tnParent.appendChild( nStore );\n\t}\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables plug-in API functions\n *\n * This are required by ColReorder in order to perform the tasks required, and also keep this\n * code portable, to be used for other column reordering projects with DataTables, if needed.\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Plug-in for DataTables which will reorder the internal column structure by taking the column\n * from one position (iFrom) and insert it into a given point (iTo).\n *  @method  $.fn.dataTableExt.oApi.fnColReorder\n *  @param   object oSettings DataTables settings object - automatically added by DataTables! \n *  @param   int iFrom Take the column to be repositioned from this point\n *  @param   int iTo and insert it into this point\n *  @returns void\n */\n$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )\n{\n\tvar i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;\n\t\n\t/* Sanity check in the input */\n\tif ( iFrom == iTo )\n\t{\n\t\t/* Pointless reorder */\n\t\treturn;\n\t}\n\t\n\tif ( iFrom < 0 || iFrom >= iCols )\n\t{\n\t\tthis.oApi._fnLog( oSettings, 1, \"ColReorder 'from' index is out of bounds: \"+iFrom );\n\t\treturn;\n\t}\n\t\n\tif ( iTo < 0 || iTo >= iCols )\n\t{\n\t\tthis.oApi._fnLog( oSettings, 1, \"ColReorder 'to' index is out of bounds: \"+iTo );\n\t\treturn;\n\t}\n\t\n\t/*\n\t * Calculate the new column array index, so we have a mapping between the old and new\n\t */\n\tvar aiMapping = [];\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\taiMapping[i] = i;\n\t}\n\tfnArraySwitch( aiMapping, iFrom, iTo );\n\tvar aiInvertMapping = fnInvertKeyValues( aiMapping );\n\t\n\t\n\t/*\n\t * Convert all internal indexing to the new column order indexes\n\t */\n\t/* Sorting */\n\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];\n\t}\n\t\n\t/* Fixed sorting */\n\tif ( oSettings.aaSortingFixed !== null )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];\n\t\t}\n\t}\n\t\n\t/* Data column sorting (the column which the sort for a given column should take place on) */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\t\tfor ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )\n\t\t{\n\t\t\toCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];\n\t\t}\n\t}\n\t\n\t/* Update the Get and Set functions for each column */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\t\tif ( typeof oCol.mData == 'number' ) {\n\t\t\toCol.mData = aiInvertMapping[ oCol.mData ];\n\t\t\toCol.fnGetData = oSettings.oApi._fnGetObjectDataFn( oCol.mData );\n\t\t\toCol.fnSetData = oSettings.oApi._fnSetObjectDataFn( oCol.mData );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Move the DOM elements\n\t */\n\tif ( oSettings.aoColumns[iFrom].bVisible )\n\t{\n\t\t/* Calculate the current visible index and the point to insert the node before. The insert\n\t\t * before needs to take into account that there might not be an element to insert before,\n\t\t * in which case it will be null, and an appendChild should be used\n\t\t */\n\t\tvar iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );\n\t\tvar iInsertBeforeIndex = null;\n\t\t\n\t\ti = iTo < iFrom ? iTo : iTo + 1;\n\t\twhile ( iInsertBeforeIndex === null && i < iCols )\n\t\t{\n\t\t\tiInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );\n\t\t\ti++;\n\t\t}\n\t\t\n\t\t/* Header */\n\t\tnTrs = oSettings.nTHead.getElementsByTagName('tr');\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );\n\t\t}\n\t\t\n\t\t/* Footer */\n\t\tif ( oSettings.nTFoot !== null )\n\t\t{\n\t\t\tnTrs = oSettings.nTFoot.getElementsByTagName('tr');\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Body */\n\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tfnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/* \n\t * Move the internal array elements\n\t */\n\t/* Columns */\n\tfnArraySwitch( oSettings.aoColumns, iFrom, iTo );\n\t\n\t/* Search columns */\n\tfnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );\n\t\n\t/* Array array - internal data anodes cache */\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( $.isArray( oSettings.aoData[i]._aData ) ) {\n\t\t  fnArraySwitch( oSettings.aoData[i]._aData, iFrom, iTo );\n\t\t}\n\t\tfnArraySwitch( oSettings.aoData[i]._anHidden, iFrom, iTo );\n\t}\n\t\n\t/* Reposition the header elements in the header layout array */\n\tfor ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )\n\t{\n\t\tfnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );\n\t}\n\t\n\tif ( oSettings.aoFooter !== null )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Update DataTables' event handlers\n\t */\n\t\n\t/* Sort listener */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\t$(oSettings.aoColumns[i].nTh).unbind('click');\n\t\tthis.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t}\n\t\n\t\n\t/* Fire an event so other plug-ins can update */\n\t$(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {\n\t\t\"iFrom\": iFrom,\n\t\t\"iTo\": iTo,\n\t\t\"aiInvertMapping\": aiInvertMapping\n\t} ] );\n\t\n\tif ( typeof oSettings.oInstance._oPluginFixedHeader != 'undefined' )\n\t{\n\t\toSettings.oInstance._oPluginFixedHeader.fnUpdate();\n\t}\n};\n\n\n\n\n/** \n * ColReorder provides column visiblity control for DataTables\n * @class ColReorder\n * @constructor\n * @param {object} DataTables settings object\n * @param {object} ColReorder options\n */\nColReorder = function( oDTSettings, oOpts )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"ColReorder\" )\n\t{\n\t\talert( \"Warning: ColReorder must be initialised with the keyword 'new'\" );\n\t}\n\t\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for ColReorder instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * DataTables settings object\n\t\t *  @property dt\n\t\t *  @type     Object\n\t\t *  @default  null\n\t\t */\n\t\t\"dt\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object used for this instance\n\t\t *  @property init\n\t\t *  @type     object\n\t\t *  @default  {}\n\t\t */\n\t\t\"init\": oOpts,\n\t\t\n\t\t/**\n\t\t * Number of columns to fix (not allow to be reordered)\n\t\t *  @property fixed\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"fixed\": 0,\n\t\t\n\t\t/**\n\t\t * Callback function for once the reorder has been done\n\t\t *  @property dropcallback\n\t\t *  @type     function\n\t\t *  @default  null\n\t\t */\n\t\t\"dropCallback\": null,\n\t\t\n\t\t/**\n\t\t * @namespace Information used for the mouse drag\n\t\t */\n\t\t\"mouse\": {\n\t\t\t\"startX\": -1,\n\t\t\t\"startY\": -1,\n\t\t\t\"offsetX\": -1,\n\t\t\t\"offsetY\": -1,\n\t\t\t\"target\": -1,\n\t\t\t\"targetIndex\": -1,\n\t\t\t\"fromIndex\": -1\n\t\t},\n\t\t\n\t\t/**\n\t\t * Information which is used for positioning the insert cusor and knowing where to do the\n\t\t * insert. Array of objects with the properties:\n\t\t *   x: x-axis position\n\t\t *   to: insert point\n\t\t *  @property aoTargets\n\t\t *  @type     array\n\t\t *  @default  []\n\t\t */\n\t\t\"aoTargets\": []\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * Dragging element (the one the mouse is moving)\n\t\t *  @property drag\n\t\t *  @type     element\n\t\t *  @default  null\n\t\t */\n\t\t\"drag\": null,\n\t\t\n\t\t/**\n\t\t * The insert cursor\n\t\t *  @property pointer\n\t\t *  @type     element\n\t\t *  @default  null\n\t\t */\n\t\t\"pointer\": null\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tthis.s.dt = oDTSettings.oInstance.fnSettings();\n\tthis._fnConstruct();\n\n\t/* Add destroy callback */\n\toDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', jQuery.proxy(this._fnDestroy, this), 'ColReorder');\n\n\t/* Store the instance for later use */\n\tColReorder.aoInstances.push( this );\n\treturn this;\n};\n\n\n\nColReorder.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t\"fnReset\": function ()\n\t{\n\t\tvar a = [];\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ta.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );\n\t\t}\n\t\t\n\t\tthis._fnOrderColumns( a );\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tvar that = this;\n\t\tvar i, iLen;\n\t\t\n\t\t/* Columns discounted from reordering - counting left to right */\n\t\tif ( typeof this.s.init.iFixedColumns != 'undefined' )\n\t\t{\n\t\t\tthis.s.fixed = this.s.init.iFixedColumns;\n\t\t}\n\t\t\n\t\t/* Drop callback initialisation option */\n\t\tif ( typeof this.s.init.fnReorderCallback != 'undefined' )\n\t\t{\n\t\t\tthis.s.dropCallback = this.s.init.fnReorderCallback;\n\t\t}\n\t\t\n\t\t/* Add event handlers for the drag and drop, and also mark the original column order */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i > this.s.fixed-1 )\n\t\t\t{\n\t\t\t\tthis._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );\n\t\t\t}\n\t\t\t\n\t\t\t/* Mark the original column order for later reference */\n\t\t\tthis.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;\n\t\t}\n\t\t\n\t\t/* State saving */\n\t\tthis.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {\n\t\t\tthat._fnStateSave.call( that, oData );\n\t\t}, \"ColReorder_State\" );\n\t\t\n\t\t/* An initial column order has been specified */\n\t\tvar aiOrder = null;\n\t\tif ( typeof this.s.init.aiOrder != 'undefined' )\n\t\t{\n\t\t\taiOrder = this.s.init.aiOrder.slice();\n\t\t}\n\t\t\n\t\t/* State loading, overrides the column order given */\n\t\tif ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&\n\t\t  this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )\n\t\t{\n\t\t\taiOrder = this.s.dt.oLoadedState.ColReorder;\n\t\t}\n\t\t\n\t\t/* If we have an order to apply - do so */\n\t\tif ( aiOrder )\n\t\t{\n\t\t\t/* We might be called during or after the DataTables initialisation. If before, then we need\n\t\t\t * to wait until the draw is done, if after, then do what we need to do right away\n\t\t\t */\n\t\t\tif ( !that.s.dt._bInitComplete )\n\t\t\t{\n\t\t\t\tvar bDone = false;\n\t\t\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function () {\n\t\t\t\t\t\tif ( !that.s.dt._bInitComplete && !bDone )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbDone = true;\n\t\t\t\t\t\t\tvar resort = fnInvertKeyValues( aiOrder );\n\t\t\t\t\t\t\tthat._fnOrderColumns.call( that, resort );\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"ColReorder_Pre\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar resort = fnInvertKeyValues( aiOrder );\n\t\t\t\tthat._fnOrderColumns.call( that, resort );\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Set the column order from an array\n\t *  @method  _fnOrderColumns\n\t *  @param   array a An array of integers which dictate the column order that should be applied\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnOrderColumns\": function ( a )\n\t{\n\t\tif ( a.length != this.s.dt.aoColumns.length )\n\t\t{\n\t\t\tthis.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, \"ColReorder - array reorder does not \"+\n\t\t\t \t\"match known number of columns. Skipping.\" );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar currIndex = $.inArray( i, a );\n\t\t\tif ( i != currIndex )\n\t\t\t{\n\t\t\t\t/* Reorder our switching array */\n\t\t\t\tfnArraySwitch( a, currIndex, i );\n\t\t\t\t\n\t\t\t\t/* Do the column reorder in the table */\n\t\t\t\tthis.s.dt.oInstance.fnColReorder( currIndex, i );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* When scrolling we need to recalculate the column sizes to allow for the shift */\n\t\tif ( this.s.dt.oScroll.sX !== \"\" || this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.dt.oInstance.fnAdjustColumnSizing();\n\t\t}\n\t\t\t\n\t\t/* Save the state */\n\t\tthis.s.dt.oInstance.oApi._fnSaveState( this.s.dt );\n\t},\n\t\n\t\n\t/**\n\t * Because we change the indexes of columns in the table, relative to their starting point\n\t * we need to reorder the state columns to what they are at the starting point so we can\n\t * then rearrange them again on state load!\n\t *  @method  _fnStateSave\n\t *  @param   object oState DataTables state \n\t *  @returns string JSON encoded cookie string for DataTables\n\t *  @private \n\t */\n\t\"_fnStateSave\": function ( oState )\n\t{\n\t\tvar i, iLen, aCopy, iOrigColumn;\n\t\tvar oSettings = this.s.dt;\n\n\t\t/* Sorting */\n\t\tfor ( i=0 ; i<oState.aaSorting.length ; i++ )\n\t\t{\n\t\t\toState.aaSorting[i][0] = oSettings.aoColumns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;\n\t\t}\n\n\t\taSearchCopy = $.extend( true, [], oState.aoSearchCols );\n\t\toState.ColReorder = [];\n\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tiOrigColumn = oSettings.aoColumns[i]._ColReorder_iOrigCol;\n\n\t\t\t/* Column filter */\n\t\t\toState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];\n\n\t\t\t/* Visibility */\n\t\t\toState.abVisCols[ iOrigColumn ] = oSettings.aoColumns[i].bVisible;\n\t\t\n\t\t\t/* Column reordering */\n\t\t\toState.ColReorder.push( iOrigColumn );\n\t\t}\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Mouse drop and drag\n\t */\n\t\n\t/**\n\t * Add a mouse down listener to a particluar TH element\n\t *  @method  _fnMouseListener\n\t *  @param   int i Column index\n\t *  @param   element nTh TH element clicked on\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseListener\": function ( i, nTh )\n\t{\n\t\tvar that = this;\n\t\t$(nTh).bind( 'mousedown.ColReorder', function (e) {\n\t\t\te.preventDefault();\n\t\t\tthat._fnMouseDown.call( that, e, nTh );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Mouse down on a TH element in the table header\n\t *  @method  _fnMouseDown\n\t *  @param   event e Mouse event\n\t *  @param   element nTh TH element to be dragged\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseDown\": function ( e, nTh )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\taoColumns = this.s.dt.aoColumns;\n\t\t\n\t\t/* Store information about the mouse position */\n\t\tvar nThTarget = e.target.nodeName == \"TH\" ? e.target : $(e.target).parents('TH')[0];\n\t\tvar offset = $(nThTarget).offset();\n\t\tthis.s.mouse.startX = e.pageX;\n\t\tthis.s.mouse.startY = e.pageY;\n\t\tthis.s.mouse.offsetX = e.pageX - offset.left;\n\t\tthis.s.mouse.offsetY = e.pageY - offset.top;\n\t\tthis.s.mouse.target = nTh;\n\t\tthis.s.mouse.targetIndex = $('th', nTh.parentNode).index( nTh );\n\t\tthis.s.mouse.fromIndex = this.s.dt.oInstance.oApi._fnVisibleToColumnIndex( this.s.dt, \n\t\t\tthis.s.mouse.targetIndex );\n\t\t\n\t\t/* Calculate a cached array with the points of the column inserts, and the 'to' points */\n\t\tthis.s.aoTargets.splice( 0, this.s.aoTargets.length );\n\t\t\n\t\tthis.s.aoTargets.push( {\n\t\t\t\"x\":  $(this.s.dt.nTable).offset().left,\n\t\t\t\"to\": 0\n\t\t} );\n\t\t\n\t\tvar iToPoint = 0;\n\t\tfor ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\t/* For the column / header in question, we want it's position to remain the same if the \n\t\t\t * position is just to it's immediate left or right, so we only incremement the counter for\n\t\t\t * other columns\n\t\t\t */\n\t\t\tif ( i != this.s.mouse.fromIndex )\n\t\t\t{\n\t\t\t\tiToPoint++;\n\t\t\t}\n\t\t\t\n\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tthis.s.aoTargets.push( {\n\t\t\t\t\t\"x\":  $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),\n\t\t\t\t\t\"to\": iToPoint\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Disallow columns for being reordered by drag and drop, counting left to right */\n\t\tif ( this.s.fixed !== 0 )\n\t\t{\n\t\t\tthis.s.aoTargets.splice( 0, this.s.fixed );\n\t\t}\n\t\t\n\t\t/* Add event handlers to the document */\n\t\t$(document).bind( 'mousemove.ColReorder', function (e) {\n\t\t\tthat._fnMouseMove.call( that, e );\n\t\t} );\n\t\t\n\t\t$(document).bind( 'mouseup.ColReorder', function (e) {\n\t\t\tthat._fnMouseUp.call( that, e );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Deal with a mouse move event while dragging a node\n\t *  @method  _fnMouseMove\n\t *  @param   event e Mouse event\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseMove\": function ( e )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( this.dom.drag === null )\n\t\t{\n\t\t\t/* Only create the drag element if the mouse has moved a specific distance from the start\n\t\t\t * point - this allows the user to make small mouse movements when sorting and not have a\n\t\t\t * possibly confusing drag element showing up\n\t\t\t */\n\t\t\tif ( Math.pow(\n\t\t\t\tMath.pow(e.pageX - this.s.mouse.startX, 2) + \n\t\t\t\tMath.pow(e.pageY - this.s.mouse.startY, 2), 0.5 ) < 5 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._fnCreateDragNode();\n\t\t}\n\t\t\n\t\t/* Position the element - we respect where in the element the click occured */\n\t\tthis.dom.drag.style.left = (e.pageX - this.s.mouse.offsetX) + \"px\";\n\t\tthis.dom.drag.style.top = (e.pageY - this.s.mouse.offsetY) + \"px\";\n\t\t\n\t\t/* Based on the current mouse position, calculate where the insert should go */\n\t\tvar bSet = false;\n\t\tfor ( var i=1, iLen=this.s.aoTargets.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( e.pageX < this.s.aoTargets[i-1].x + ((this.s.aoTargets[i].x-this.s.aoTargets[i-1].x)/2) )\n\t\t\t{\n\t\t\t\tthis.dom.pointer.style.left = this.s.aoTargets[i-1].x +\"px\";\n\t\t\t\tthis.s.mouse.toIndex = this.s.aoTargets[i-1].to;\n\t\t\t\tbSet = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* The insert element wasn't positioned in the array (less than operator), so we put it at \n\t\t * the end\n\t\t */\n\t\tif ( !bSet )\n\t\t{\n\t\t\tthis.dom.pointer.style.left = this.s.aoTargets[this.s.aoTargets.length-1].x +\"px\";\n\t\t\tthis.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length-1].to;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Finish off the mouse drag and insert the column where needed\n\t *  @method  _fnMouseUp\n\t *  @param   event e Mouse event\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseUp\": function ( e )\n\t{\n\t\tvar that = this;\n\t\t\n\t\t$(document).unbind( 'mousemove.ColReorder' );\n\t\t$(document).unbind( 'mouseup.ColReorder' );\n\t\t\n\t\tif ( this.dom.drag !== null )\n\t\t{\n\t\t\t/* Remove the guide elements */\n\t\t\tdocument.body.removeChild( this.dom.drag );\n\t\t\tdocument.body.removeChild( this.dom.pointer );\n\t\t\tthis.dom.drag = null;\n\t\t\tthis.dom.pointer = null;\n\t\t\t\n\t\t\t/* Actually do the reorder */\n\t\t\tthis.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );\n\t\t\t\n\t\t\t/* When scrolling we need to recalculate the column sizes to allow for the shift */\n\t\t\tif ( this.s.dt.oScroll.sX !== \"\" || this.s.dt.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tthis.s.dt.oInstance.fnAdjustColumnSizing();\n\t\t\t}\n\t\t\t\n\t\t\tif ( this.s.dropCallback !== null )\n\t\t\t{\n\t\t\t\tthis.s.dropCallback.call( this );\n\t\t\t}\n\t\t\t\n\t\t\t/* Save the state */\n\t\t\tthis.s.dt.oInstance.oApi._fnSaveState( this.s.dt );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Copy the TH element that is being drags so the user has the idea that they are actually \n\t * moving it around the page.\n\t *  @method  _fnCreateDragNode\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCreateDragNode\": function ()\n\t{\n\t\tvar that = this;\n\t\t\n\t\tthis.dom.drag = $(this.s.dt.nTHead.parentNode).clone(true)[0];\n\t\tthis.dom.drag.className += \" DTCR_clonedTable\";\n\t\twhile ( this.dom.drag.getElementsByTagName('caption').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('caption')[0] );\n\t\t}\n\t\twhile ( this.dom.drag.getElementsByTagName('tbody').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('tbody')[0] );\n\t\t}\n\t\twhile ( this.dom.drag.getElementsByTagName('tfoot').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('tfoot')[0] );\n\t\t}\n\t\t\n\t\t$('thead tr:eq(0)', this.dom.drag).each( function () {\n\t\t\t$('th', this).eq(that.s.mouse.targetIndex).siblings().remove();\n\t\t} );\n\t\t$('tr', this.dom.drag).height( $('tr:eq(0)', that.s.dt.nTHead).height() );\n\t\t\n\t\t$('thead tr:gt(0)', this.dom.drag).remove();\n\t\t\n\t\t$('thead th:eq(0)', this.dom.drag).each( function (i) {\n\t\t\tthis.style.width = $('th:eq('+that.s.mouse.targetIndex+')', that.s.dt.nTHead).width()+\"px\";\n\t\t} );\n\t\t\n\t\tthis.dom.drag.style.position = \"absolute\";\n\t\tthis.dom.drag.style.top = \"0px\";\n\t\tthis.dom.drag.style.left = \"0px\";\n\t\tthis.dom.drag.style.width = $('th:eq('+that.s.mouse.targetIndex+')', that.s.dt.nTHead).outerWidth()+\"px\";\n\t\t\n\t\t\n\t\tthis.dom.pointer = document.createElement( 'div' );\n\t\tthis.dom.pointer.className = \"DTCR_pointer\";\n\t\tthis.dom.pointer.style.position = \"absolute\";\n\t\t\n\t\tif ( this.s.dt.oScroll.sX === \"\" && this.s.dt.oScroll.sY === \"\" )\n\t\t{\n\t\t\tthis.dom.pointer.style.top = $(this.s.dt.nTable).offset().top+\"px\";\n\t\t\tthis.dom.pointer.style.height = $(this.s.dt.nTable).height()+\"px\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.dom.pointer.style.top = $('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top+\"px\";\n\t\t\tthis.dom.pointer.style.height = $('div.dataTables_scroll', this.s.dt.nTableWrapper).height()+\"px\";\n\t\t}\n\t\n\t\tdocument.body.appendChild( this.dom.pointer );\n\t\tdocument.body.appendChild( this.dom.drag );\n\t},\n\n\t/**\n\t * Clean up ColReorder memory references and event handlers\n\t *  @method  _fnDestroy\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnDestroy\": function ()\n\t{\n\t\tfor ( var i=0, iLen=ColReorder.aoInstances.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( ColReorder.aoInstances[i] === this )\n\t\t\t{\n\t\t\t\tColReorder.aoInstances.splice( i, 1 );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t$(this.s.dt.nTHead).find( '*' ).unbind( '.ColReorder' );\n\n\t\tthis.s.dt.oInstance._oPluginColReorder = null;\n\t\tthis.s = null;\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static parameters\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Array of all ColReorder instances for later reference\n *  @property ColReorder.aoInstances\n *  @type     array\n *  @default  []\n *  @static\n */\nColReorder.aoInstances = [];\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static functions\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Reset the column ordering for a DataTables instance\n *  @method  ColReorder.fnReset\n *  @param   object oTable DataTables instance to consider\n *  @returns void\n *  @static\n */\nColReorder.fnReset = function ( oTable )\n{\n\tfor ( var i=0, iLen=ColReorder.aoInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( ColReorder.aoInstances[i].s.dt.oInstance == oTable )\n\t\t{\n\t\t\tColReorder.aoInstances[i].fnReset();\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  ColReorder\n */\nColReorder.prototype.CLASS = \"ColReorder\";\n\n\n/**\n * ColReorder version\n *  @constant  VERSION\n *  @type      String\n *  @default   As code\n */\nColReorder.VERSION = \"1.0.8\";\nColReorder.prototype.VERSION = ColReorder.VERSION;\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.9.3') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar oTable = oDTSettings.oInstance;\n\t\t\tif ( typeof oTable._oPluginColReorder == 'undefined' ) {\n\t\t\t\tvar opts = typeof oDTSettings.oInit.oColReorder != 'undefined' ? \n\t\t\t\t\toDTSettings.oInit.oColReorder : {};\n\t\t\t\toTable._oPluginColReorder = new ColReorder( oDTSettings, opts );\n\t\t\t} else {\n\t\t\t\toTable.oApi._fnLog( oDTSettings, 1, \"ColReorder attempted to initialise twice. Ignoring second\" );\n\t\t\t}\n\t\t\t\n\t\t\treturn null; /* No node to insert */\n\t\t},\n\t\t\"cFeature\": \"R\",\n\t\t\"sFeature\": \"ColReorder\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download\");\n}\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/predefined.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with predefined column ordering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColReorder provides the ability to specify a column ordering which is not that of the\n\t\t\t\tHTML (which typically you will want) through the parameter oColReorder.aiOrder. This is\n\t\t\t\tan array of integers with the column ordering you want.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"oColReorder\": {\n\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/reset.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$('#reset').click( function () {\n\t\t\t\t\tColReorder.fnReset( oTable );\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\t\n\t\t\t/*\n\t\t\t * Alternative intialisation using 'new'\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tvar colreorder = new ColReorder( oTable, {\n\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$('#reset').click( function () {\n\t\t\t\t\tcolreorder.fnReset();\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\t\n\t\t\t *\n\t\t\t */\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with the ability to reset the ordering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>One useful control option to present the end user when using ColReorder is the ability\n\t\t\t\tto reset the column ordering to that which was found in the HTML. This can be done by\n\t\t\t\tcalling the fnReset API function. While ColReorder does not provide a visual element for\n\t\t\t\tthis itself (in order to provide maximum flexibility) it is easy to hook to an event\n\t\t\t\thandler, as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<button id=\"reset\">Reset to original HTML order</button><br><br>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"oColReorder\": {\n\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t}\n\t} );\n\t\n\t$('#reset').click( function () {\n\t\tColReorder.fnReset( oTable );\n\t\treturn false;\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"bPaginate\": false\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with scrolling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This is a simple example to show ColReorder working with DataTables scrolling.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"sScrollY\": \"200px\",\n\t\t\"bPaginate\": false\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/server_side.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"bProcessing\": true,\n\t\t\t\t\t\"bServerSide\": true,\n\t\t\t\t\t\"sAjaxSource\": \"../../examples/server_side/scripts/objects.php\",\n\t\t\t\t\t\"aoColumns\": [\n\t\t\t\t\t\t{ \"mDataProp\": \"engine\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"browser\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"platform\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"version\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"grade\" }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with server-side processing\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Server-side processing can be exceptionally useful in DataTables when dealing with \n\t\t\t\tmassive data sets, and ColReorder works with this as would be expected. There must be\n\t\t\t\tspecial consideration for the column ordering on the server-side script since the \n\t\t\t\tcolumns can be in an unexpected order. For this you can either choose to use the \n\t\t\t\t<i>sName</i> parameter for each column and take this into account in the server-side\n\t\t\t\tscript (the parameter 'sColumns' is a comma separated string of these sName parameters).</p>\n\t\t\t\n\t\t\t</p>Alternatively use the more flexible <a href=\"http://datatables.net/usage/columns#mDataProp\">mDataProp</a>\n\t\t\t\toption for each column. This allows you to use JSON objects which DataTables, so order doesn't\n\t\t\t\tmatter like it would do in an array. Again the server-side script must take this into account\n\t\t\t\tthrough the <i>mDataProp_{i}</i> which is sent for each column (so the server knows which\n\t\t\t\tcolumn is to be sorted on).</p>\n\t\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"bProcessing\": true,\n\t\t\"bServerSide\": true,\n\t\t\"sAjaxSource\": \"../../examples/server_side/scripts/objects.php\",\n\t\t\"aoColumns\": [\n\t\t\t{ \"mDataProp\": \"engine\" },\n\t\t\t{ \"mDataProp\": \"browser\" },\n\t\t\t{ \"mDataProp\": \"platform\" },\n\t\t\t{ \"mDataProp\": \"version\" },\n\t\t\t{ \"mDataProp\": \"grade\" }\n\t\t]\n\t} );\n} );</pre>\n\n      <h1>Example JSON return from the server</h1>\n      <pre>{\n\"sEcho\": 1,\n\"iTotalRecords\": \"57\",\n\"iTotalDisplayRecords\": \"57\",\n\"aaData\": [\n    {\n        \"engine\": \"Gecko\",\n        \"browser\": \"Firefox 1.0\",\n        \"platform\": \"Win 98+ / OSX.2+\",\n        \"version\": \"1.7\",\n        \"grade\": \"A\"\n    },\n    {\n        \"engine\": \"Gecko\",\n        \"browser\": \"Firefox 1.5\",\n        \"platform\": \"Win 98+ / OSX.2+\",\n        \"version\": \"1.8\",\n        \"grade\": \"A\"\n    },\n    ...\n  ]\n}</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/state_save.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"bStateSave\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with state saving\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>A useful interaction pattern to use in DataTables is state saving, so when the end user\n\t\t\t\treloads or revisits a page its previous state is retained. ColReorder works seamlessly\n\t\t\t\twith state saving in DataTables, remembering and restoring the column positions, as well\n\t\t\t\tas everything else such as sorting and filtering.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"bStateSave\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/theme.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'R<\"H\"lfr>t<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true,\n\t\t\t\t\t\"sPaginationType\": \"full_numbers\"\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with jQuery UI theming\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used \n\t\t\t\twith ColReorder. The important thing to node here is how sDom is set up in order to \n\t\t\t\tinclude the required classes and elements.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'R&lt;\"H\"lfr&gt;t&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true,\n\t\t\"sPaginationType\": \"full_numbers\"\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/exclude_columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"aiExclude\": [ 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - exclude columns from list\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>It can at times be useful to exclude columns from being in the 'show / hide' list (for\n\t\t\t\texample if you have hidden information that the end user shouldn't be able to make\n\t\t\t\tvisible. This can be done by the oColVis.aiExclude initialisation parameter when creating\n\t\t\t\tthe DataTable. This is simply an array of integers, indicating which columns should\n\t\t\t\tbe excluded. This example shows the first column being excluded.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"aiExclude\": [ 0 ]\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColVis is a plug-in for DataTables which presents a list of all columns to a user and allows them to select which ones they wish to be visible. Click the 'Show / hide columns' button to be presented with a list of columns in the table, and click the buttons to show and hide them as you wish.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVis.css",
    "content": "\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * ColVis styles\n */\n.ColVis {\n\tfloat: right;\n\tmargin-bottom: 1em;\n}\n\n.ColVis_Button {\n\tposition: relative;\n\tfloat: left;\n\tmargin-right: 3px;\n\tpadding: 3px 5px;\n\theight: 30px;\n\tbackground-color: #fff;\n\tborder: 1px solid #d0d0d0;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\nbutton.ColVis_Button::-moz-focus-inner { \n\tborder: none !important;\n\tpadding: 0;\n}\n\n.ColVis_text_hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_collectionBackground {\n\tbackground-color: black;\n\tz-index: 1100;\n}\n\ndiv.ColVis_collection {\n\tposition: relative;\n\twidth: 150px;\n\tbackground-color: #f3f3f3;\n\tpadding: 3px;\n\tborder: 1px solid #ccc;\n\tz-index: 1102;\n}\n\ndiv.ColVis_collection button.ColVis_Button {\n\tbackground-color: white;\n\twidth: 100%;\n\tfloat: none;\n\tmargin-bottom: 2px;\n}\n\ndiv.ColVis_catcher {\n\tposition: absolute;\n\tz-index: 1101;\n}\n\n.disabled {\n\tcolor: #999;\n}\n\n\n\nbutton.ColVis_Button {\n\ttext-align: left;\n}\n\ndiv.ColVis_collection button.ColVis_Button:hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\nspan.ColVis_radio {\n\tdisplay: inline-block;\n\twidth: 20px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVisAlt.css",
    "content": "/*\n * An alternative styling for ColVis\n * Note you will likely have to change the path for the background image used by jQuery UI theming:\n *   ../../../../examples/examples_support/themes/smoothness\n */\n\n.ColVis {\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\twidth: 15px;\n\theight: 30px;\n}\n\n.ColVis_MasterButton {\n\theight: 100%;\n\twidth: 100%;\n\tborder-left-width: 0;\n\tcursor: pointer;\n\t*cursor: hand;\n\tbackground: url('../images/button.png') no-repeat top left;\n}\n\nbutton.ColVis_Button::-moz-focus-inner { \n\tborder: none !important;\n\tpadding: 0;\n}\n\n.ColVis_text_hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_collectionBackground {\n\tbackground-color: black;\n\tz-index: 1100;\n}\n\ndiv.ColVis_collection {\n\tposition: relative;\n\twidth: 150px;\n\tbackground-color: #f9f9f9;\n\tpadding: 3px;\n\tborder: 1px solid #ccc;\n\tz-index: 1102;\n}\n\ndiv.ColVis_collection button.ColVis_Button {\n\theight: 30px;\n\twidth: 100%;\n\tmargin-right: 3px;\n\tmargin-bottom: 2px;\n\tpadding: 3px 5px;\n\tcursor: pointer;\n\t*cursor: hand;\n\ttext-align: left;\n}\n\ndiv.ColVis_collection button.ColVis_Button:hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_catcher {\n\tposition: absolute;\n\tz-index: 1101;\n}\n\nspan.ColVis_radio {\n\tdisplay: inline-block;\n\twidth: 20px;\n}\n\nbutton.ColVis_Restore {\n\tmargin-top: 15px;\n}\n\nbutton.ColVis_Restore span {\n\tdisplay: inline-block;\n\tpadding-left: 10px;\n\ttext-align: left;\n}\n\n.disabled {\n\tcolor: #999;\n}\n\n\n\n/*\n * Styles needed for DataTables scrolling\n */\ndiv.dataTables_scrollHead {\n\tposition: relative;\n\toverflow: hidden;\n}\n\ndiv.dataTables_scrollBody {\n\toverflow-y: scroll;\n}\n\ndiv.dataTables_scrollFoot {\n\toverflow: hidden;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ColVis.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: ColVis - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: ColVis</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>ColVis</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"ColVis\" class=\"  even\"><a name=\"ColVis\"></a><a name=\"ColVis_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new ColVis</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>ColVis provides column visiblity control for DataTables</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aInstances\">aInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :Array</span></span></dt><dd class=\"  even\"><p>Collection of all ColVis instances</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnAdjustOpenRows\">_fnAdjustOpenRows</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Alter the colspan on any fnOpen rows</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRebuild\">fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Rebuild the collection for a given table, or all tables if no parameter given</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aInstances\"></a><a name=\"aInstances_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aInstances\">aInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :Array</span></span></dt><dd class=\"  even\"><p>Collection of all ColVis instances</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Properties:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">ColVis.aInstances</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"></td></tr>\n\t</tbody>\n</table></div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"ColVis#_fnAdjustOpenRows\" class=\"  even\"><a name=\"_fnAdjustOpenRows\"></a><a name=\"_fnAdjustOpenRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnAdjustOpenRows</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Alter the colspan on any fnOpen rows</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"ColVis.fnRebuild\" class=\"  even\"><a name=\"fnRebuild\"></a><a name=\"fnRebuild_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Rebuild the collection for a given table, or all tables if no parameter given</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">object</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>oTable DataTable instance to consider - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ccb5a49865.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for ColVis instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for ColVis instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"ColVis.html\">ColVis</a></span></dt><dd class=\"even\"><p>ColVis provides column visiblity control for DataTables</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColVis version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnRebuild\">fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Rebuild the list of buttons for this instance (i.e. if there is a column header update)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColVis version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnRebuild\" class=\"  even\"><a name=\"fnRebuild\"></a><a name=\"fnRebuild_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Rebuild the list of buttons for this instance (i.e. if there is a column header update)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"ColVis.html\">ColVis</a></dt><dd><p>ColVis provides column visiblity control for DataTables</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.js",
    "content": "/*\n * File:        ColVis.js\n * Version:     1.0.8\n * CVS:         $Id$\n * Description: Controls for column visiblity in DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Wed Sep 15 18:23:29 BST 2010\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     Just a little bit of fun :-)\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n(function($) {\n\n/** \n * ColVis provides column visiblity control for DataTables\n * @class ColVis\n * @constructor\n * @param {object} DataTables settings object\n */\nColVis = function( oDTSettings, oInit )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"ColVis\" )\n\t{\n\t\talert( \"Warning: ColVis must be initialised with the keyword 'new'\" );\n\t}\n\t\n\tif ( typeof oInit == 'undefined' )\n\t{\n\t\toInit = {};\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for ColVis instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * DataTables settings object\n\t\t *  @property dt\n\t\t *  @type     Object\n\t\t *  @default  null\n\t\t */\n\t\t\"dt\": null,\n\t\t\n\t\t/**\n\t\t * Customisation object\n\t\t *  @property oInit\n\t\t *  @type     Object\n\t\t *  @default  passed in\n\t\t */\n\t\t\"oInit\": oInit,\n\t\t\n\t\t/**\n\t\t * Callback function to tell the user when the state has changed\n\t\t *  @property fnStateChange\n\t\t *  @type     function\n\t\t *  @default  null\n\t\t */\n\t\t\"fnStateChange\": null,\n\t\t\n\t\t/**\n\t\t * Mode of activation. Can be 'click' or 'mouseover'\n\t\t *  @property activate\n\t\t *  @type     String\n\t\t *  @default  click\n\t\t */\n\t\t\"activate\": \"click\",\n\t\t\n\t\t/**\n\t\t * Position of the collection menu when shown - align \"left\" or \"right\"\n\t\t *  @property sAlign\n\t\t *  @type     String\n\t\t *  @default  right\n\t\t */\n\t\t\"sAlign\": \"left\",\n\t\t\n\t\t/**\n\t\t * Text used for the button\n\t\t *  @property buttonText\n\t\t *  @type     String\n\t\t *  @default  Show / hide columns\n\t\t */\n\t\t\"buttonText\": \"Show / hide columns\",\n\t\t\n\t\t/**\n\t\t * Flag to say if the collection is hidden\n\t\t *  @property hidden\n\t\t *  @type     boolean\n\t\t *  @default  true\n\t\t */\n\t\t\"hidden\": true,\n\t\t\n\t\t/**\n\t\t * List of columns (integers) which should be excluded from the list\n\t\t *  @property aiExclude\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"aiExclude\": [],\n\t\t\n\t\t/**\n\t\t * Store the original viisbility settings so they could be restored\n\t\t *  @property abOriginal\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"abOriginal\": [],\n\t\t\n\t\t/**\n\t\t * Show Show-All button\n\t\t *  @property bShowAll\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"bShowAll\": false,\n\t\t\n\t\t/**\n\t\t * Show All button text\n\t\t *  @property sShowAll\n\t\t *  @type     String\n\t\t *  @default  Restore original\n\t\t */\n\t\t\"sShowAll\": \"Show All\",\n\t\t\n\t\t/**\n\t\t * Show restore button\n\t\t *  @property bRestore\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"bRestore\": false,\n\t\t\n\t\t/**\n\t\t * Restore button text\n\t\t *  @property sRestore\n\t\t *  @type     String\n\t\t *  @default  Restore original\n\t\t */\n\t\t\"sRestore\": \"Restore original\",\n\t\t\n\t\t/**\n\t\t * Overlay animation duration in mS\n\t\t *  @property iOverlayFade\n\t\t *  @type     Integer\n\t\t *  @default  500\n\t\t */\n\t\t\"iOverlayFade\": 500,\n\t\t\n\t\t/**\n\t\t * Label callback for column names. Takes three parameters: 1. the column index, 2. the column\n\t\t * title detected by DataTables and 3. the TH node for the column\n\t\t *  @property fnLabel\n\t\t *  @type     Function\n\t\t *  @default  null\n\t\t */\n\t\t\"fnLabel\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if ColVis should automatically calculate the size of buttons or not. The default\n\t\t * is for it to do so. Set to \"css\" to disable the automatic sizing\n\t\t *  @property sSize\n\t\t *  @type     String\n\t\t *  @default  auto\n\t\t */\n\t\t\"sSize\": \"auto\",\n\t\t\n\t\t/**\n\t\t * Indicate if the column list should be positioned by Javascript, visually below the button\n\t\t * or allow CSS to do the positioning\n\t\t *  @property bCssPosition\n\t\t *  @type     boolean\n\t\t *  @default  false\n\t\t */\n\t\t\"bCssPosition\": false\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * Wrapper for the button - given back to DataTables as the node to insert\n\t\t *  @property wrapper\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"wrapper\": null,\n\t\t\n\t\t/**\n\t\t * Activation button\n\t\t *  @property button\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"button\": null,\n\t\t\n\t\t/**\n\t\t * Collection list node\n\t\t *  @property collection\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"collection\": null,\n\t\t\n\t\t/**\n\t\t * Background node used for shading the display and event capturing\n\t\t *  @property background\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"background\": null,\n\t\t\n\t\t/**\n\t\t * Element to position over the activation button to catch mouse events when using mouseover\n\t\t *  @property catcher\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"catcher\": null,\n\t\t\n\t\t/**\n\t\t * List of button elements\n\t\t *  @property buttons\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"buttons\": [],\n\t\t\n\t\t/**\n\t\t * Restore button\n\t\t *  @property restore\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"restore\": null\n\t};\n\t\n\t/* Store global reference */\n\tColVis.aInstances.push( this );\n\t\n\t/* Constructor logic */\n\tthis.s.dt = oDTSettings;\n\tthis._fnConstruct();\n\treturn this;\n};\n\n\n\nColVis.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Rebuild the list of buttons for this instance (i.e. if there is a column header update)\n\t *  @method  fnRebuild\n\t *  @returns void\n\t */\n\t\"fnRebuild\": function ()\n\t{\n\t\t/* Remove the old buttons */\n\t\tfor ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t{\n\t\t\t\tthis.dom.collection.removeChild( this.dom.buttons[i] );\n\t\t\t}\n\t\t}\n\t\tthis.dom.buttons.splice( 0, this.dom.buttons.length );\n\t\t\n\t\tif ( this.dom.restore )\n\t\t{\n\t\t\tthis.dom.restore.parentNode( this.dom.restore );\n\t\t}\n\t\t\n\t\t/* Re-add them (this is not the optimal way of doing this, it is fast and effective) */\n\t\tthis._fnAddButtons();\n\t\t\n\t\t/* Update the checkboxes */\n\t\tthis._fnDrawCallback();\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tthis._fnApplyCustomisation();\n\t\t\n\t\tvar that = this;\n\t\tvar i, iLen;\n\t\tthis.dom.wrapper = document.createElement('div');\n\t\tthis.dom.wrapper.className = \"ColVis TableTools\";\n\t\t\n\t\tthis.dom.button = this._fnDomBaseButton( this.s.buttonText );\n\t\tthis.dom.button.className += \" ColVis_MasterButton\";\n\t\tthis.dom.wrapper.appendChild( this.dom.button );\n\t\t\n\t\tthis.dom.catcher = this._fnDomCatcher();\n\t\tthis.dom.collection = this._fnDomCollection();\n\t\tthis.dom.background = this._fnDomBackground();\n\t\t\n\t\tthis._fnAddButtons();\n\t\t\n\t\t/* Store the original visbility information */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible );\n\t\t}\n\t\t\n\t\t/* Update on each draw */\n\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\"fn\": function () {\n\t\t\t\tthat._fnDrawCallback.call( that );\n\t\t\t},\n\t\t\t\"sName\": \"ColVis\"\n\t\t} );\n\n\t\t/* If columns are reordered, then we need to update our exclude list and\n\t\t * rebuild the displayed list\n\t\t */\n\t\t$(this.s.dt.oInstance).bind( 'column-reorder', function ( e, oSettings, oReorder ) {\n\t\t\tfor ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) {\n\t\t\t\tthat.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];\n\t\t\t}\n\n\t\t\tvar mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0];\n\t\t\tthat.s.abOriginal.splice( oReorder.iTo, 0, mStore );\n\t\t\t\n\t\t\tthat.fnRebuild();\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Apply any customisation to the settings from the DataTables initialisation\n\t *  @method  _fnApplyCustomisation\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnApplyCustomisation\": function ()\n\t{\n\t\tvar oConfig = this.s.oInit;\n\t\t\n\t\tif ( typeof oConfig.activate != 'undefined' )\n\t\t{\n\t\t\tthis.s.activate = oConfig.activate;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.buttonText != 'undefined' )\n\t\t{\n\t\t\tthis.s.buttonText = oConfig.buttonText;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.aiExclude != 'undefined' )\n\t\t{\n\t\t\tthis.s.aiExclude = oConfig.aiExclude;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.bRestore != 'undefined' )\n\t\t{\n\t\t\tthis.s.bRestore = oConfig.bRestore;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sRestore != 'undefined' )\n\t\t{\n\t\t\tthis.s.sRestore = oConfig.sRestore;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.bShowAll != 'undefined' )\n\t\t{\n\t\t\tthis.s.bShowAll = oConfig.bShowAll;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sShowAll != 'undefined' )\n\t\t{\n\t\t\tthis.s.sShowAll = oConfig.sShowAll;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sAlign != 'undefined' )\n\t\t{\n\t\t\tthis.s.sAlign = oConfig.sAlign;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.fnStateChange != 'undefined' )\n\t\t{\n\t\t\tthis.s.fnStateChange = oConfig.fnStateChange;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.iOverlayFade != 'undefined' )\n\t\t{\n\t\t\tthis.s.iOverlayFade = oConfig.iOverlayFade;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.fnLabel != 'undefined' )\n\t\t{\n\t\t\tthis.s.fnLabel = oConfig.fnLabel;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sSize != 'undefined' )\n\t\t{\n\t\t\tthis.s.sSize = oConfig.sSize;\n\t\t}\n\n\t\tif ( typeof oConfig.bCssPosition != 'undefined' )\n\t\t{\n\t\t\tthis.s.bCssPosition = oConfig.bCssPosition;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * On each table draw, check the visibility checkboxes as needed. This allows any process to\n\t * update the table's column visibility and ColVis will still be accurate.\n\t *  @method  _fnDrawCallback\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnDrawCallback\": function ()\n\t{\n\t\tvar aoColumns = this.s.dt.aoColumns;\n\t\t\n\t\tfor ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t{\n\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\t$('input', this.dom.buttons[i]).attr('checked','checked');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$('input', this.dom.buttons[i]).removeAttr('checked');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Loop through the columns in the table and as a new button for each one.\n\t *  @method  _fnAddButtons\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnAddButtons\": function ()\n\t{\n\t\tvar\n\t\t\tnButton,\n\t\t\tsExclude = \",\"+this.s.aiExclude.join(',')+\",\";\n\t\t\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( sExclude.indexOf( \",\"+i+\",\" ) == -1 )\n\t\t\t{\n\t\t\t\tnButton = this._fnDomColumnButton( i );\n\t\t\t\tthis.dom.buttons.push( nButton );\n\t\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.dom.buttons.push( null );\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( this.s.bRestore )\n\t\t{\n\t\t\tnButton = this._fnDomRestoreButton();\n\t\t\tnButton.className += \" ColVis_Restore\";\n\t\t\tthis.dom.buttons.push( nButton );\n\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t}\n\t\t\n\t\tif ( this.s.bShowAll )\n\t\t{\n\t\t\tnButton = this._fnDomShowAllButton();\n\t\t\tnButton.className += \" ColVis_ShowAll\";\n\t\t\tthis.dom.buttons.push( nButton );\n\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Create a button which allows a \"restore\" action\n\t *  @method  _fnDomRestoreButton\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomRestoreButton\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span');\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\t$(nSpan).html( '<span class=\"ColVis_title\">'+this.s.sRestore+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tfor ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false );\n\t\t\t}\n\t\t\tthat._fnAdjustOpenRows();\n\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\tthat.s.dt.oInstance.fnDraw( false );\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create a button which allows a \"show all\" action\n\t *  @method  _fnDomShowAllButton\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomShowAllButton\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span');\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\t$(nSpan).html( '<span class=\"ColVis_title\">'+this.s.sShowAll+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tfor ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif (that.s.aiExclude.indexOf(i) === -1)\n\t\t\t\t{\n\t\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, true, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthat._fnAdjustOpenRows();\n\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\tthat.s.dt.oInstance.fnDraw( false );\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM for a show / hide button\n\t *  @method  _fnDomColumnButton\n\t *  @param {int} i Column in question\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomColumnButton\": function ( i )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\toColumn = this.s.dt.aoColumns[i],\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span'),\n\t\t\tdt = this.s.dt;\n\t\t\n\t\tnButton.className = !dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\tvar sTitle = this.s.fnLabel===null ? oColumn.sTitle : this.s.fnLabel( i, oColumn.sTitle, oColumn.nTh );\n\t\t$(nSpan).html(\n\t\t\t'<span class=\"ColVis_radio\"><input type=\"checkbox\"/></span>'+\n\t\t\t'<span class=\"ColVis_title\">'+sTitle+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tvar showHide = !$('input', this).is(\":checked\");\n\t\t\tif ( e.target.nodeName.toLowerCase() == \"input\" )\n\t\t\t{\n\t\t\t\tshowHide = $('input', this).is(\":checked\");\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to consider the case where the initialiser created more than one table - change the\n\t\t\t * API index that DataTables is using\n\t\t\t */\n\t\t\tvar oldIndex = $.fn.dataTableExt.iApiIndex;\n\t\t\t$.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);\n\n\t\t\t// Optimisation for server-side processing when scrolling - don't do a full redraw\n\t\t\tif ( dt.oFeatures.bServerSide && (dt.oScroll.sX !== \"\" || dt.oScroll.sY !== \"\" ) )\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, showHide, false );\n\t\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\t\tthat.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt );\n\t\t\t\tthat._fnDrawCallback();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, showHide );\n\t\t\t}\n\n\t\t\t$.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */\n\t\t\t\n\t\t\tif ( that.s.fnStateChange !== null )\n\t\t\t{\n\t\t\t\tthat.s.fnStateChange.call( that, i, showHide );\n\t\t\t}\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Get the position in the DataTables instance array of the table for this instance of ColVis\n\t *  @method  _fnDataTablesApiIndex\n\t *  @returns {int} Index\n\t *  @private \n\t */\n\t\"_fnDataTablesApiIndex\": function ()\n\t{\n\t\tfor ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( this.s.dt.oInstance[i] == this.s.dt.nTable )\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM needed for the button and apply some base properties. All buttons start here\n\t *  @method  _fnDomBaseButton\n\t *  @param   {String} text Button text\n\t *  @returns {Node} DIV element for the button\n\t *  @private \n\t */\n\t\"_fnDomBaseButton\": function ( text )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span'),\n\t\t\tsEvent = this.s.activate==\"mouseover\" ? \"mouseover\" : \"click\";\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\tnSpan.innerHTML = text;\n\t\t\n\t\t$(nButton).bind( sEvent, function (e) {\n\t\t\tthat._fnCollectionShow();\n\t\t\te.preventDefault();\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the element used to contain list the columns (it is shown and hidden as needed)\n\t *  @method  _fnDomCollection\n\t *  @returns {Node} div container for the collection\n\t *  @private \n\t */\n\t\"_fnDomCollection\": function ()\n\t{\n\t\tvar that = this;\n\t\tvar nHidden = document.createElement('div');\n\t\tnHidden.style.display = \"none\";\n\t\tnHidden.className = !this.s.dt.bJUI ? \"ColVis_collection TableTools_collection\" :\n\t\t\t\"ColVis_collection TableTools_collection ui-buttonset ui-buttonset-multi\";\n\t\t\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.position = \"absolute\";\n\t\t}\n\t\t$(nHidden).css('opacity', 0);\n\t\t\n\t\treturn nHidden;\n\t},\n\t\n\t\n\t/**\n\t * An element to be placed on top of the activate button to catch events\n\t *  @method  _fnDomCatcher\n\t *  @returns {Node} div container for the collection\n\t *  @private \n\t */\n\t\"_fnDomCatcher\": function ()\n\t{\n\t\tvar \n\t\t\tthat = this,\n\t\t\tnCatcher = document.createElement('div');\n\t\tnCatcher.className = \"ColVis_catcher TableTools_catcher\";\n\t\t\n\t\t$(nCatcher).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t\t\n\t\treturn nCatcher;\n\t},\n\t\n\t\n\t/**\n\t * Create the element used to shade the background, and capture hide events (it is shown and \n\t * hidden as needed)\n\t *  @method  _fnDomBackground\n\t *  @returns {Node} div container for the background\n\t *  @private \n\t */\n\t\"_fnDomBackground\": function ()\n\t{\n\t\tvar that = this;\n\t\t\n\t\tvar nBackground = document.createElement('div');\n\t\tnBackground.style.position = \"absolute\";\n\t\tnBackground.style.left = \"0px\";\n\t\tnBackground.style.top = \"0px\";\n\t\tnBackground.className = \"ColVis_collectionBackground TableTools_collectionBackground\";\n\t\t$(nBackground).css('opacity', 0);\n\t\t\n\t\t$(nBackground).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t\t\n\t\t/* When considering a mouse over action for the activation, we also consider a mouse out\n\t\t * which is the same as a mouse over the background - without all the messing around of\n\t\t * bubbling events. Use the catcher element to avoid messing around with bubbling\n\t\t */\n\t\tif ( this.s.activate == \"mouseover\" )\n\t\t{\n\t\t\t$(nBackground).mouseover( function () {\n\t\t\t\tthat.s.overcollection = false;\n\t\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t\t} );\n\t\t}\n\t\t\n\t\treturn nBackground;\n\t},\n\t\n\t\n\t/**\n\t * Show the show / hide list and the background\n\t *  @method  _fnCollectionShow\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCollectionShow\": function ()\n\t{\n\t\tvar that = this, i, iLen;\n\t\tvar oPos = $(this.dom.button).offset();\n\t\tvar nHidden = this.dom.collection;\n\t\tvar nBackground = this.dom.background;\n\t\tvar iDivX = parseInt(oPos.left, 10);\n\t\tvar iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);\n\t\t\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.top = iDivY+\"px\";\n\t\t\tnHidden.style.left = iDivX+\"px\";\n\t\t}\n\t\tnHidden.style.display = \"block\";\n\t\t$(nHidden).css('opacity',0);\n\t\t\n\t\tvar iWinHeight = $(window).height(), iDocHeight = $(document).height(),\n\t\t \tiWinWidth = $(window).width(), iDocWidth = $(document).width();\n\t\t\n\t\tnBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +\"px\";\n\t\tnBackground.style.width = ((iWinWidth<iDocWidth)? iWinWidth : iDocWidth) +\"px\";\n\t\t\n\t\tvar oStyle = this.dom.catcher.style;\n\t\toStyle.height = $(this.dom.button).outerHeight()+\"px\";\n\t\toStyle.width = $(this.dom.button).outerWidth()+\"px\";\n\t\toStyle.top = oPos.top+\"px\";\n\t\toStyle.left = iDivX+\"px\";\n\t\t\n\t\tdocument.body.appendChild( nBackground );\n\t\tdocument.body.appendChild( nHidden );\n\t\tdocument.body.appendChild( this.dom.catcher );\n\t\t\n\t\t/* Resize the buttons */\n\t\tif ( this.s.sSize == \"auto\" )\n\t\t{\n\t\t\tvar aiSizes = [];\n\t\t\tthis.dom.collection.style.width = \"auto\";\n\t\t\tfor ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.buttons[i].style.width = \"auto\";\n\t\t\t\t\taiSizes.push( $(this.dom.buttons[i]).outerWidth() );\n\t\t\t\t}\n\t\t\t}\n\t\t\tiMax = Math.max.apply(window, aiSizes);\n\t\t\tfor ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.buttons[i].style.width = iMax+\"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.dom.collection.style.width = iMax+\"px\";\n\t\t}\n\t\t\n\t\t/* Visual corrections to try and keep the collection visible */\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.left = this.s.sAlign==\"left\" ?\n\t\t\t\tiDivX+\"px\" : (iDivX-$(nHidden).outerWidth()+$(this.dom.button).outerWidth())+\"px\";\n\n\t\t\tvar iDivWidth = $(nHidden).outerWidth();\n\t\t\tvar iDivHeight = $(nHidden).outerHeight();\n\t\t\t\n\t\t\tif ( iDivX + iDivWidth > iDocWidth )\n\t\t\t{\n\t\t\t\tnHidden.style.left = (iDocWidth-iDivWidth)+\"px\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* This results in a very small delay for the end user but it allows the animation to be\n\t\t * much smoother. If you don't want the animation, then the setTimeout can be removed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\t$(nHidden).animate({\"opacity\": 1}, that.s.iOverlayFade);\n\t\t\t$(nBackground).animate({\"opacity\": 0.1}, that.s.iOverlayFade, 'linear', function () {\n\t\t\t\t/* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually\n\t\t\t\t * reflected. As such, we need to do it here, once it is visible. Unbelievable.\n\t\t\t\t */\n\t\t\t\tif ( jQuery.browser.msie && jQuery.browser.version == \"6.0\" )\n\t\t\t\t{\n\t\t\t\t\tthat._fnDrawCallback();\n\t\t\t\t}\n\t\t\t});\n\t\t}, 10 );\n\t\t\n\t\tthis.s.hidden = false;\n\t},\n\t\n\t\n\t/**\n\t * Hide the show / hide list and the background\n\t *  @method  _fnCollectionHide\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCollectionHide\": function (  )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( !this.s.hidden && this.dom.collection !== null )\n\t\t{\n\t\t\tthis.s.hidden = true;\n\t\t\t\n\t\t\t$(this.dom.collection).animate({\"opacity\": 0}, that.s.iOverlayFade, function (e) {\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t} );\n\t\t\t\n\t\t\t$(this.dom.background).animate({\"opacity\": 0}, that.s.iOverlayFade, function (e) {\n\t\t\t\tdocument.body.removeChild( that.dom.background );\n\t\t\t\tdocument.body.removeChild( that.dom.catcher );\n\t\t\t} );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Alter the colspan on any fnOpen rows\n\t */\n\t\"_fnAdjustOpenRows\": function ()\n\t{\n\t\tvar aoOpen = this.s.dt.aoOpenRows;\n\t\tvar iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt );\n\t\t\n\t\tfor ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) {\n\t\t\taoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static object methods\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Rebuild the collection for a given table, or all tables if no parameter given\n *  @method  ColVis.fnRebuild\n *  @static\n *  @param   object oTable DataTable instance to consider - optional\n *  @returns void\n */\nColVis.fnRebuild = function ( oTable )\n{\n\tvar nTable = null;\n\tif ( typeof oTable != 'undefined' )\n\t{\n\t\tnTable = oTable.fnSettings().nTable;\n\t}\n\t\n\tfor ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable )\n\t\t{\n\t\t\tColVis.aInstances[i].fnRebuild();\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static object properties\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Collection of all ColVis instances\n *  @property ColVis.aInstances\n *  @static\n *  @type     Array\n *  @default  []\n */\nColVis.aInstances = [];\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  ColVis\n */\nColVis.prototype.CLASS = \"ColVis\";\n\n\n/**\n * ColVis version\n *  @constant  VERSION\n *  @type      String\n *  @default   See code\n */\nColVis.VERSION = \"1.0.8\";\nColVis.prototype.VERSION = ColVis.VERSION;\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.7.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar init = (typeof oDTSettings.oInit.oColVis == 'undefined') ?\n\t\t\t\t{} : oDTSettings.oInit.oColVis;\n\t\t\tvar oColvis = new ColVis( oDTSettings, init );\n\t\t\treturn oColvis.dom.wrapper;\n\t\t},\n\t\t\"cFeature\": \"C\",\n\t\t\"sFeature\": \"ColVis\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download\");\n}\n\n})(jQuery);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/mouseover.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"activate\": \"mouseover\"\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - mouse over activation\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>The default activation (showing the columns list) for ColVis is for the user to click\n\t\t\t\tthe button. This can be altered to a 'mouseover' activation by making use of the\n\t\t\t\toColVis.activate DataTables initialisation value and setting it to \"mouseover\". This is\n\t\t\t\tshown in the example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"activate\": \"mouseover\"\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/style.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColVisAlt.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": '<\"H\"fr>tC<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true,\n\t\t\t\t\t\"bPaginate\": false,\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"bScrollAutoCss\": false,\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"buttonText\": \"&nbsp;\",\n\t\t\t\t\t\t\"bRestore\": true,\n\t\t\t\t\t\t\"sAlign\": \"right\"\n\t\t\t\t\t},\n\t\t\t\t\t\"fnDrawCallback\": function (o) {\n\t\t\t\t\t\t/* Position the ColVis button as needed */\n\t\t\t\t\t\tvar nColVis = $('div.ColVis', o.nTableWrapper)[0];\n\t\t\t\t\t\tnColVis.style.width = o.oScroll.iBarWidth+\"px\";\n\t\t\t\t\t\tnColVis.style.top = ($('div.dataTables_scroll', o.nTableWrapper).position().top)+\"px\";\n\t\t\t\t\t\tnColVis.style.height = ($('div.dataTables_scrollHead table', o.nTableWrapper).height())+\"px\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example with alternative styling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This demo of ColVis shows a number of different features of the plug-in. Firstly, it shows alternative styling of the plug-in with the button nested just above the scrollbar in the DataTable. Secondly there is a \"Restore\" button in the ColVis drop down, which will restore the original visibility settings when the table was initialised (this is controlled by using the \"bRestore\" option). Finally it shows that the drop down can be set to align on the right of the button, rather than the left.</p>\n\t\t\t<p>Note that this demo requires DataTables 1.7.5 or later.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": '&lt;\"H\"fr&gt;tC&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true,\n\t\t\"bPaginate\": false,\n\t\t\"sScrollY\": \"200px\",\n\t\t\"bScrollCollapse\": true,\n\t\t\"bScrollAutoCss\": false,\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t],\n\t\t\"oColVis\": {\n\t\t\t\"buttonText\": \"&amp;nbsp;\",\n\t\t\t\"bRestore\": true,\n\t\t\t\"sAlign\": \"left\"\n\t\t},\n\t\t\"fnDrawCallback\": function (o) {\n\t\t\t/* Position the ColVis button as needed */\n\t\t\tvar nColVis = $('div.ColVis', o.nTableWrapper)[0];\n\t\t\tnColVis.style.width = o.oScroll.iBarWidth+\"px\";\n\t\t\tnColVis.style.top = ($('div.dataTables_scroll', o.nTableWrapper).position().top)+\"px\";\n\t\t\tnColVis.style.height = ($('div.dataTables_scrollHead table', o.nTableWrapper).height())+\"px\";\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/text.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"buttonText\": \"Change columns\"\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - custom text\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>You may wish to use your own text in the ColVis button - this is done by making use of\n\t\t\t\tthe oColVis.buttonText DataTables initialisation parameter, as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"buttonText\": \"Change columns\"\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/theme.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t\t.ColVis {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-bottom: 0\n\t\t\t}\n\t\t\t.dataTables_length {\n\t\t\t\twidth: auto;\n\t\t\t}\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": '<\"H\"Cfr>t<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example with jQuery theming\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColVis will automatically add the classes required for theming with jQuery UI ThemeRoller\n\t\t\t\twhen enabled in DataTables. This example also shows a slightly altered position for the\n\t\t\t\tColVis button from the other example, in that it is included in the table toolbar. This\n\t\t\t\tis achieved by simply moving the 'C' character in sDom.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": '&lt;\"H\"Cfr&gt;t&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/title_callback.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t  \"fnLabel\": function ( index, title, th ) {\n\t\t\t\t\t    return (index+1) +'. '+ title;\n\t\t\t\t\t  }\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>By default ColVis will use the information in the TH cell for each column as the button name to use in ColVis, which might not always be what you want (for example you might has HTML in the cell that you don't want in the button). The <i>fnLabel</i> callback provides the ability to customise the label used for the button. In this example the column index is prefixed to the column title.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t  \"fnLabel\": function ( index, title, th ) {\n\t\t    return (index+1) +'. '+ title;\n\t\t  }\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('table').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - two tables with individual controls\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>It can be useful to have DataTables initialise more than one table with a single call can for them to each have individual ColVis controllers. All this requires is a suitable jQuery selector to be used, and DataTables and ColVis will take care of the rest - as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example2\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('table').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables_identical.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTables = $('table').dataTable( {\n\t\t\t\t\t\"sDom\": 'lfrtip'\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tvar oColVis = new ColVis( oTables.fnSettings(), {\n\t\t\t\t\t\"fnStateChange\": function ( iColumn, bVisible ) {\n\t\t\t\t\t\tvar jqTables = $('table:not(#example)'); // ColVis will do #example\n\t\t\t\t\t\tfor ( var i=0, iLen=jqTables.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t$(jqTables[i]).dataTable().fnSetColumnVis( iColumn, bVisible );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tdocument.getElementById('buttonInsert').appendChild(oColVis.dom.wrapper);\n\t\t\t\toColVis.fnRebuild();\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - two tables with shared control\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows how the API that ColVis presents can be used to control the column visibility of two tables with a single instance of ColVis. The result is that changing a button state will effect all tables on the page. This can be useful when looking at multiple tables which have the same column structure.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<div id=\"buttonInsert\">\n\t\n</div>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example2\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTables = $('table').dataTable( {\n\t\t\"sDom\": 'lfrtip'\n\t} );\n\t\n\tvar oColVis = new ColVis( oTables.fnSettings() );\n\t$(oColVis).bind('stateChange', function (e, data) {\n\t\tvar jqTables = $('table:not(#example)');\n\t\tfor ( var i=0, iLen=jqTables.length ; i&lt;iLen ; i++ ) {\n\t\t\t$(jqTables[i]).dataTable().fnSetColumnVis( data.iColumn, data.bVisible );\n\t\t}\n\t} );\n\t\n\tdocument.getElementById('buttonInsert').appendChild(oColVis.dom.wrapper);\n\toColVis.fnRebuild();\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTable / DataTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\t\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example'),\n\t\t\t\t\t\"datatable\": oTable\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable with DataTables integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>KeyTable will work great with any plain HTML table, but it also integrates with <a href=\"http://www.datatables.net/\">DataTables</a> plug-in for jQuery. This allows the navigation to take account of paging, sorting etc. This is shown in an example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\t\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example'),\n\t\t\"datatable\": oTable\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable_scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTable / DataTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": 200,\n\t\t\t\t\t\"sScrollX\": \"100%\",\n\t\t\t\t\t\"sScrollXInner\": \"110%\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example'),\n\t\t\t\t\t\"datatable\": oTable\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable with DataTables (when using scrolling) integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>A new feature in DataTables 1.7 is the ability to have the table body scroll in the x and y dimensions. KeyTable supports this capability of DataTables \"out of the box\" (no extra initialisation is needed), as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": 200,\n\t\t\"sScrollX\": \"100%\",\n\t\t\"sScrollXInner\": \"110%\"\n\t} );\n\t\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example'),\n\t\t\"datatable\": oTable\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/editing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTables editing example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../examples/examples_support/jquery.jeditable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example')\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Apply a return key event to each cell in the table */\n\t\t\t\tkeys.event.action( null, null, function (nCell) {\n\t\t\t\t\t/* Block KeyTable from performing any events while jEditable is in edit mode */\n\t\t\t\t\tkeys.block = true;\n\t\t\t\t\t\n\t\t\t\t\t/* Initialise the Editable instance for this table */\n\t\t\t\t\t$(nCell).editable( function (sVal) {\n\t\t\t\t\t\t/* Submit function (local only) - unblock KeyTable */\n\t\t\t\t\t\tkeys.block = false;\n\t\t\t\t\t\t$(nCell).editable('destroy');\n\t\t\t\t\t\treturn sVal;\n\t\t\t\t\t}, { \n\t\t\t\t\t\t\"onblur\": 'submit', \n\t\t\t\t\t\t\"onreset\": function(){ \n\t\t\t\t\t\t\t/* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise\n\t\t\t\t\t\t\t * it will 'esc' KeyTable as well\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t$(nCell).editable('destroy');\n\t\t\t\t\t\t\tsetTimeout( function () {keys.block = false;}, 0); \n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\t\n\t\t\t\t\t/* Dispatch click event to go into edit mode - Saf 4 needs a timeout... */\n\t\t\t\t\tsetTimeout( function () { $(nCell).click(); }, 0 );\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable editing example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Possibly one of the most obvious applications of KeyTable is using it to navigate around a table, allowing a user to edit data as they go. This is an example of how that might be done through integration with the excellent <a href=\"http://www.appelsiini.net/projects/jeditable\">jEditable</a> plug-in for jQuery.</p>\n\t\t\t<p>To edit data in the table, simply navigate to where you want to edit using the arrow keys, hit return and they make your edit. Hit return again to complete and submit the edit (note this example doesn't actually send the data to the server!) and then continue navigating.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example')\n\t} );\n\t\n\t/* Apply a return key event to each cell in the table */\n\tkeys.event.action( null, null, function (nCell) {\n\t\t/* Block KeyTable from performing any events while jEditable is in edit mode */\n\t\tkeys.block = true;\n\t\t\n\t\t/* Initialise the Editable instance for this table */\n\t\t$(nCell).editable( function (sVal) {\n\t\t\t/* Submit function (local only) - unblock KeyTable */\n\t\t\tkeys.block = false;\n\t\t\treturn sVal;\n\t\t}, { \n\t\t\t\"onblur\": 'submit', \n\t\t\t\"onreset\": function(){ \n\t\t\t\t/* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise\n\t\t\t\t * it will 'esc' KeyTable as well\n\t\t\t\t */\n\t\t\t\tsetTimeout( function () {keys.block = false;}, 0); \n\t\t\t}\n\t\t} );\n\t\t\n\t\t/* Dispatch click event to go into edit mode - Saf 4 needs a timeout... */\n\t\tsetTimeout( function () { $(nCell).click(); }, 0 );\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/form.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>KeyTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"form\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable form integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>One of possible use of KeyTable is to use a table as a form element (for example a calendar date selector). For this you want to be table to tab into and out of the table, as you would do with any other form element on the page.</p>\n\t\t\t<p>The example shown below as a small table as it's third input element, and you can tab between input fields. When the 'focus' reaches the end of the table, hitting tab will take you into the next field.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t\n\t\t\t<!-- bad use of a table! quick example of form though -->\n\t\t\t<table cellspacing=\"10\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 1:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input1\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 2:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input2\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 3:</td>\n\t\t\t\t\t<td>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 4:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input4\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 5:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input5\"></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar keys = new KeyTable( {\n\t\t\"form\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>KeyTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\tfunction fnMessage ( sMesg )\n\t\t\t{\n\t\t\t\tvar n = document.getElementById('info');\n\t\t\t\tn.innerHTML += sMesg+\"<br>\";\n\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t}\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable();\n\t\t\t\t\n\t\t\t\t/* Focus handler for all cells in last column */\n\t\t\t\tkeys.event.focus( 4, null, function( nNode, x, y ) {\n\t\t\t\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - column)\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Focus handler for all cells in 8th row */\n\t\t\t\tkeys.event.focus( null, 7, function( nNode, x, y ) {\n\t\t\t\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - row)\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Focus using coords. */\n\t\t\t\tkeys.event.focus( 1, 0, function( nNode ) {\n\t\t\t\t\tkeys.event.remove.focus( nNode );\n\t\t\t\t\tfnMessage( \"Cell 1,0 focus - this event has now been removed\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tkeys.event.focus( 1, 3, function() {\n\t\t\t\t\tfnMessage( \"Cell 1,3 focus\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* focus with a node */\n\t\t\t\tkeys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {\n\t\t\t\t\tfnMessage( \"Cell 0,2 focus\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Blur using a node */\n\t\t\t\tkeys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {\n\t\t\t\t\tfnMessage( \"Cell 1,2 blur\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Blur using coords */\n\t\t\t\tkeys.event.blur( 2, 4, function() {\n\t\t\t\t\tfnMessage( \"Cell 2,4 blur\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Action */\n\t\t\t\tkeys.event.action( 2, 2, function( nNode ) {\n\t\t\t\t\tfnMessage( \"Cell 2,2 action\" );\n\t\t\t\t\tif ( nNode.style.fontWeight == \"\" || nNode.style.fontWeight == \"normal\" ) {\n\t\t\t\t\t\tnNode.style.fontWeight = \"bold\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnNode.style.fontWeight = \"normal\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tkeys.event.action( 2, 5, function( nNode ) {\n\t\t\t\t\tfnMessage( \"Cell 2,5 action\" );\n\t\t\t\t\tif ( nNode.style.fontStyle == \"\" ) {\n\t\t\t\t\t\tnNode.style.fontStyle = \"italic\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnNode.style.fontStyle = \"\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>KeyTable allows you to use keyboard navigation on an HTML table. The focused cell is shown through the CSS class ('focus') which in the case below is simply a blue border. Events such as 'focus', 'blur', 'esc' (the escape key) and 'return' (the return key) can be assigned event handling functions thought the API presented.</p>\n\t\t\t<p>The example shown below has a few cells (selected at random, but near the top) with blur and focus events assigned to them. You can also see the navigation around the table using arrow keys.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"info\" class=\"box\">\n\t\t\t\tEvent information:<br>\n\t\t\t</div>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0 (focus once)</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+ (blur)</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident (focus)</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+ (action/bold)</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6 (focus)</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+ (blur)</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP (action/italic)</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko (focus - row)</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>function fnMessage ( sMesg )\n{\n\tvar n = document.getElementById('info');\n\tn.innerHTML += sMesg+\"&lt;br&gt;\";\n\tn.scrollTop = n.scrollHeight;\n}\n\n$(document).ready( function () {\n\tvar keys = new KeyTable();\n\t\n\t/* Focus handler for all cells in last column */\n\tkeys.event.focus( 4, null, function( nNode, x, y ) {\n\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - column)\" );\n\t} );\n\t\n\t/* Focus handler for all cells in 8th row */\n\tkeys.event.focus( null, 7, function( nNode, x, y ) {\n\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - row)\" );\n\t} );\n\t\n\t/* Focus using coords. */\n\tkeys.event.focus( 1, 0, function( nNode ) {\n\t\tkeys.event.remove.focus( nNode );\n\t\tfnMessage( \"Cell 1,0 focus - this event has now been removed\" );\n\t} );\n\t\n\tkeys.event.focus( 1, 3, function() {\n\t\tfnMessage( \"Cell 1,3 focus\" );\n\t} );\n\t\n\t/* focus with a node */\n\tkeys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {\n\t\tfnMessage( \"Cell 0,2 focus\" );\n\t} );\n\t\n\t/* Blur using a node */\n\tkeys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {\n\t\tfnMessage( \"Cell 1,2 blur\" );\n\t} );\n\t\n\t/* Blur using coords */\n\tkeys.event.blur( 2, 4, function() {\n\t\tfnMessage( \"Cell 2,4 blur\" );\n\t} );\n\t\n\t/* Action */\n\tkeys.event.action( 2, 2, function( nNode ) {\n\t\tfnMessage( \"Cell 2,2 action\" );\n\t\tif ( nNode.style.fontWeight == \"\" || nNode.style.fontWeight == \"normal\" ) {\n\t\t\tnNode.style.fontWeight = \"bold\";\n\t\t} else {\n\t\t\tnNode.style.fontWeight = \"normal\";\n\t\t}\n\t} );\n\t\n\tkeys.event.action( 2, 5, function( nNode ) {\n\t\tfnMessage( \"Cell 2,5 action\" );\n\t\tif ( nNode.style.fontStyle == \"\" ) {\n\t\t\tnNode.style.fontStyle = \"italic\";\n\t\t} else {\n\t\t\tnNode.style.fontStyle = \"\";\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.js",
    "content": "/*\n * File:        KeyTable.js\n * Version:     1.1.7\n * CVS:         $Idj$\n * Description: Keyboard navigation for HTML tables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Fri Mar 13 21:24:02 GMT 2009\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     Just a little bit of fun :-)\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2009-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n\nfunction KeyTable ( oInit )\n{\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * API parameters\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Variable: block\n\t * Purpose:  Flag whether or not KeyTable events should be processed\n\t * Scope:    KeyTable - public\n\t */\n\tthis.block = false;\n\t\n\t/*\n\t * Variable: event\n\t * Purpose:  Container for all event application methods\n\t * Scope:    KeyTable - public\n\t * Notes:    This object contains all the public methods for adding and removing events - these\n\t *           are dynamically added later on\n\t */\n\tthis.event = {\n\t\t\"remove\": {}\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * API methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Function: fnGetCurrentPosition\n\t * Purpose:  Get the currently focused cell's position\n\t * Returns:  array int: [ x, y ]\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentPosition = function ()\n\t{\n\t\treturn [ _iOldX, _iOldY ];\n\t};\n\t\n\t\n\t/*\n\t * Function: fnGetCurrentData\n\t * Purpose:  Get the currently focused cell's data (innerHTML)\n\t * Returns:  string: - data requested\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentData = function ()\n\t{\n\t\treturn _nOldFocus.innerHTML;\n\t};\n\t\n\t\n\t/*\n\t * Function: fnGetCurrentTD\n\t * Purpose:  Get the currently focused cell\n\t * Returns:  node: - focused element\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentTD = function ()\n\t{\n\t\treturn _nOldFocus;\n\t};\n\t\n\t\n\t/*\n\t * Function: fnSetPosition\n\t * Purpose:  Set the position of the focused cell\n\t * Returns:  -\n\t * Inputs:   int:x - x coordinate\n\t *           int:y - y coordinate\n\t * Notes:    Thanks to Rohan Daxini for the basis of this function\n\t */\n\tthis.fnSetPosition = function( x, y )\n\t{\n\t\tif ( typeof x == 'object' && x.nodeName )\n\t\t{\n\t\t\t_fnSetFocus( x );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnSetFocus( _fnCellFromCoords(x, y) );\n\t\t}\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private parameters\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Variable: _nBody\n\t * Purpose:  Body node of the table - cached for renference\n\t * Scope:    KeyTable - private\n\t */\n\tvar _nBody = null;\n\t\n\t/*\n\t * Variable: \n\t * Purpose:  \n\t * Scope:    KeyTable - private\n\t */\n\tvar _nOldFocus = null;\n\t\n\t/*\n\t * Variable: _iOldX and _iOldY\n\t * Purpose:  X and Y coords of the old elemet that was focused on\n\t * Scope:    KeyTable - private\n\t */\n\tvar _iOldX = null;\n\tvar _iOldY = null;\n\t\n\t/*\n\t * Variable: _that\n\t * Purpose:  Scope saving for 'this' after a jQuery event\n\t * Scope:    KeyTable - private\n\t */\n\tvar _that = null;\n\t\n\t/*\n\t * Variable: sFocusClass\n\t * Purpose:  Class that should be used for focusing on a cell\n\t * Scope:    KeyTable - private\n\t */\n\tvar _sFocusClass = \"focus\";\n\t\n\t/*\n\t * Variable: _bKeyCapture\n\t * Purpose:  Flag for should KeyTable capture key events or not\n\t * Scope:    KeyTable - private\n\t */\n\tvar _bKeyCapture = false;\n\t\n\t/*\n\t * Variable: _oaoEvents\n\t * Purpose:  Event cache object, one array for each supported event for speed of searching\n\t * Scope:    KeyTable - private\n\t */\n\tvar _oaoEvents = {\n\t\t\"action\": [],\n\t\t\"esc\": [],\n\t\t\"focus\": [],\n\t\t\"blur\": []\n\t};\n\t\n\t/*\n\t * Variable: _oDatatable\n\t * Purpose:  DataTables object for if we are actually using a DataTables table\n\t * Scope:    KeyTable - private\n\t */\n\tvar _oDatatable = null;\n\t\n\tvar _bForm;\n\tvar _nInput;\n\tvar _bInputFocused = false;\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Key table events\n\t */\n\t\n\t/*\n\t * Function: _fnEventAddTemplate\n\t * Purpose:  Create a function (with closure for sKey) event addition API\n\t * Returns:  function: - template function\n\t * Inputs:   string:sKey - type of event to detect\n\t */\n\tfunction _fnEventAddTemplate( sKey )\n\t{\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  API function for adding event to cache\n\t\t * Returns:  -\n\t\t * Inputs:   1. node:x - target node to add event for\n\t\t *           2. function:y - callback function to apply\n\t\t *         or\n\t\t *           1. int:x - x coord. of target cell (can be null for live events)\n\t\t *           2. int:y - y coord. of target cell (can be null for live events)\n\t\t *           3. function:z - callback function to apply\n\t\t * Notes:    This function is (interally) overloaded (in as much as javascript allows for\n\t\t *           that) - the target cell can be given by either node or coords.\n\t\t */\n\t\treturn function ( x, y, z ) {\n\t\t\tif ( (x===null || typeof x == \"number\") && \n\t\t\t     (y===null || typeof y == \"number\") && \n\t\t\t     typeof z == \"function\" )\n\t\t\t{\n\t\t\t\t_fnEventAdd( sKey, x, y, z );\n\t\t\t}\n\t\t\telse if ( typeof x == \"object\" && typeof y == \"function\" )\n\t\t\t{\n\t\t\t\tvar aCoords = _fnCoordsFromCell( x );\n\t\t\t\t_fnEventAdd( sKey, aCoords[0], aCoords[1], y );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talert( \"Unhandable event type was added: x\" +x+ \"  y:\" +y+ \"  z:\" +z );\n\t\t\t}\n\t\t};\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventRemoveTemplate\n\t * Purpose:  Create a function (with closure for sKey) event removal API\n\t * Returns:  function: - template function\n\t * Inputs:   string:sKey - type of event to detect\n\t */\n\tfunction _fnEventRemoveTemplate( sKey )\n\t{\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  API function for removing event from cache\n\t\t * Returns:  int: - number of events removed\n\t\t * Inputs:   1. node:x - target node to remove event from\n\t\t *           2. function:y - callback function to apply\n\t\t *         or\n\t\t *           1. int:x - x coord. of target cell (can be null for live events)\n\t\t *           2. int:y - y coord. of target cell (can be null for live events)\n\t\t *           3. function:z - callback function to remove - optional\n\t\t * Notes:    This function is (interally) overloaded (in as much as javascript allows for\n\t\t *           that) - the target cell can be given by either node or coords and the function\n\t\t *           to remove is optional\n\t\t */\n\t\treturn function ( x, y, z ) {\n\t\t\tif ( (x===null || typeof arguments[0] == \"number\") && \n\t\t\t     (y===null || typeof arguments[1] == \"number\" ) )\n\t\t\t{\n\t\t\t\tif ( typeof arguments[2] == \"function\" )\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, x, y, z );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, x, y );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( typeof arguments[0] == \"object\" )\n\t\t\t{\n\t\t\t\tvar aCoords = _fnCoordsFromCell( x );\n\t\t\t\tif ( typeof arguments[1] == \"function\" )\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, aCoords[0], aCoords[1], y );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, aCoords[0], aCoords[1] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talert( \"Unhandable event type was removed: x\" +x+ \"  y:\" +y+ \"  z:\" +z );\n\t\t\t}\n\t\t};\n\t}\n\t\n\t/* Use the template functions to add the event API functions */\n\tfor ( var sKey in _oaoEvents )\n\t{\n\t\tif ( sKey )\n\t\t{\n\t\t\tthis.event[sKey] = _fnEventAddTemplate( sKey );\n\t\t\tthis.event.remove[sKey] = _fnEventRemoveTemplate( sKey );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventAdd\n\t * Purpose:  Add an event to the internal cache\n\t * Returns:  -\n\t * Inputs:   string:sType - type of event to add, given by the available elements in _oaoEvents\n\t *           int:x - x-coords to add event to - can be null for \"blanket\" event\n\t *           int:y - y-coords to add event to - can be null for \"blanket\" event\n\t *           function:fn - callback function for when triggered\n\t */\n\tfunction _fnEventAdd( sType, x, y, fn )\n\t{\n\t\t_oaoEvents[sType].push( {\n\t\t\t\"x\": x,\n\t\t\t\"y\": y,\n\t\t\t\"fn\": fn\n\t\t} );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventRemove\n\t * Purpose:  Remove an event from the event cache\n\t * Returns:  int: - number of matching events removed\n\t * Inputs:   string:sType - type of event to look for\n\t *           node:nTarget - target table cell\n\t *           function:fn - optional - remove this function. If not given all handlers of this\n\t *             type will be removed\n\t */\n\tfunction _fnEventRemove( sType, x, y, fn )\n\t{\n\t\tvar iCorrector = 0;\n\t\t\n\t\tfor ( var i=0, iLen=_oaoEvents[sType].length ; i<iLen-iCorrector ; i++ )\n\t\t{\n\t\t\tif ( typeof fn != 'undefined' )\n\t\t\t{\n\t\t\t\tif ( _oaoEvents[sType][i-iCorrector].x == x &&\n\t\t\t\t     _oaoEvents[sType][i-iCorrector].y == y &&\n\t\t\t\t\t   _oaoEvents[sType][i-iCorrector].fn == fn )\n\t\t\t\t{\n\t\t\t\t\t_oaoEvents[sType].splice( i-iCorrector, 1 );\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( _oaoEvents[sType][i-iCorrector].x == x &&\n\t\t\t\t     _oaoEvents[sType][i-iCorrector].y == y )\n\t\t\t\t{\n\t\t\t\t\t_oaoEvents[sType].splice( i, 1 );\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn iCorrector;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventFire\n\t * Purpose:  Look thought the events cache and fire off the event of interest\n\t * Returns:  int:iFired - number of events fired\n\t * Inputs:   string:sType - type of event to look for\n\t *           int:x - x coord of cell\n\t *           int:y - y coord of  ell\n\t * Notes:    It might be more efficient to return after the first event has been tirggered,\n\t *           but that would mean that only one function of a particular type can be\n\t *           subscribed to a particular node.\n\t */\n\tfunction _fnEventFire ( sType, x, y )\n\t{\n\t\tvar iFired = 0;\n\t\tvar aEvents = _oaoEvents[sType];\n\t\tfor ( var i=0 ; i<aEvents.length ; i++ )\n\t\t{\n\t\t\tif ( (aEvents[i].x == x     && aEvents[i].y == y    ) ||\n\t\t\t     (aEvents[i].x === null && aEvents[i].y == y    ) ||\n\t\t\t     (aEvents[i].x == x     && aEvents[i].y === null ) ||\n\t\t\t     (aEvents[i].x === null && aEvents[i].y === null )\n\t\t\t)\n\t\t\t{\n\t\t\t\taEvents[i].fn( _fnCellFromCoords(x,y), x, y );\n\t\t\t\tiFired++;\n\t\t\t}\n\t\t}\n\t\treturn iFired;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Focus functions\n\t */\n\t\n\t/*\n\t * Function: _fnSetFocus\n\t * Purpose:  Set focus on a node, and remove from an old node if needed\n\t * Returns:  -\n\t * Inputs:   node:nTarget - node we want to focus on\n\t *           bool:bAutoScroll - optional - should we scroll the view port to the display\n\t */\n\tfunction _fnSetFocus( nTarget, bAutoScroll )\n\t{\n\t\t/* If node already has focus, just ignore this call */\n\t\tif ( _nOldFocus == nTarget )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( typeof bAutoScroll == 'undefined' )\n\t\t{\n\t\t\tbAutoScroll = true;\n\t\t}\n\t\t\n\t\t/* Remove old focus (with blur event if needed) */\n\t\tif ( _nOldFocus !== null )\n\t\t{\n\t\t\t_fnRemoveFocus( _nOldFocus );\n\t\t}\n\t\t\n\t\t/* Add the new class to highlight the focused cell */\n\t\tjQuery(nTarget).addClass( _sFocusClass );\n\t\tjQuery(nTarget).parent().addClass( _sFocusClass );\n\t\t\n\t\t/* If it's a DataTable then we need to jump the paging to the relevant page */\n\t\tvar oSettings;\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\toSettings = _oDatatable.fnSettings();\n\t\t\tvar iRow = _fnFindDtCell( nTarget )[1];\n\t\t\tvar bKeyCaptureCache = _bKeyCapture;\n\t\t\t\n\t\t\t/* Page forwards */\n\t\t\twhile ( iRow >= oSettings.fnDisplayEnd() )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t_oDatatable.oApi._fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Page backwards */\n\t\t\twhile ( iRow < oSettings._iDisplayStart )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t_oDatatable.oApi._fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Re-draw the table */\n\t\t\t_oDatatable.oApi._fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Restore the key capture */\n\t\t\t_bKeyCapture = bKeyCaptureCache;\n\t\t}\n\t\t\n\t\t/* Cache the information that we are interested in */\n\t\tvar aNewPos = _fnCoordsFromCell( nTarget );\n\t\t_nOldFocus = nTarget;\n\t\t_iOldX = aNewPos[0];\n\t\t_iOldY = aNewPos[1];\n\t\t\n\t\tvar iViewportHeight, iViewportWidth, iScrollTop, iScrollLeft, iHeight, iWidth, aiPos;\n\t\tif ( bAutoScroll )\n\t\t{\n\t\t\t/* Scroll the viewport such that the new cell is fully visible in the rendered window */\n\t\t\tiViewportHeight = document.documentElement.clientHeight;\n\t\t\tiViewportWidth = document.documentElement.clientWidth;\n\t\t\tiScrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tiScrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n\t\t\tiHeight = nTarget.offsetHeight;\n\t\t\tiWidth = nTarget.offsetWidth;\n\t\t\taiPos = _fnGetPos( nTarget );\n\t\t\t\n\t\t\t/* Take account of scrolling in DataTables 1.7 - remove scrolling since that would add to\n\t\t\t * the positioning calculation\n\t\t\t */\n\t\t\tif ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&\n\t\t\t  (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\taiPos[1] -= $(oSettings.nTable.parentNode).scrollTop();\n\t\t\t\taiPos[0] -= $(oSettings.nTable.parentNode).scrollLeft();\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct viewport positioning for vertical scrolling */\n\t\t\tif ( aiPos[1]+iHeight > iScrollTop+iViewportHeight )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the bottom of the viewport */\n\t\t\t\t_fnSetScrollTop( aiPos[1]+iHeight - iViewportHeight );\n\t\t\t}\n\t\t\telse if ( aiPos[1] < iScrollTop )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the top of the viewport */\n\t\t\t\t_fnSetScrollTop( aiPos[1] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct viewport positioning for horizontal scrolling */\n\t\t\tif ( aiPos[0]+iWidth > iScrollLeft+iViewportWidth )\n\t\t\t{\n\t\t\t\t/* Displayed element is off the bottom of the viewport */\n\t\t\t\t_fnSetScrollLeft( aiPos[0]+iWidth - iViewportWidth );\n\t\t\t}\n\t\t\telse if ( aiPos[0] < iScrollLeft )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the Left of the viewport */\n\t\t\t\t_fnSetScrollLeft( aiPos[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Take account of scrolling in DataTables 1.7 */\n\t\tif ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&\n\t\t  (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t{\n\t\t\tvar dtScrollBody = oSettings.nTable.parentNode;\n\t\t\tiViewportHeight = dtScrollBody.clientHeight;\n\t\t\tiViewportWidth = dtScrollBody.clientWidth;\n\t\t\tiScrollTop = dtScrollBody.scrollTop;\n\t\t\tiScrollLeft = dtScrollBody.scrollLeft;\n\t\t\tiHeight = nTarget.offsetHeight;\n\t\t\tiWidth = nTarget.offsetWidth;\n\t\t\t\n\t\t\t/* Correct for vertical scrolling */\n\t\t\tif ( nTarget.offsetTop + iHeight > iViewportHeight+iScrollTop )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollTop = (nTarget.offsetTop + iHeight) - iViewportHeight;\n\t\t\t}\n\t\t\telse if ( nTarget.offsetTop < iScrollTop )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollTop = nTarget.offsetTop;\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct for horizontal scrolling */\n\t\t\tif ( nTarget.offsetLeft + iWidth > iViewportWidth+iScrollLeft )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollLeft = (nTarget.offsetLeft + iWidth) - iViewportWidth;\n\t\t\t}\n\t\t\telse if ( nTarget.offsetLeft < iScrollLeft )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollLeft = nTarget.offsetLeft;\n\t\t\t}\n\t\t}\n\n\t\t/* Focused - so we want to capture the keys */\n\t\t_fnCaptureKeys();\n\t\t\n\t\t/* Fire of the focus event if there is one */\n\t\t_fnEventFire( \"focus\", _iOldX, _iOldY );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnBlur\n\t * Purpose:  Blur focus from the whole table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnBlur()\n\t{\n\t\t_fnRemoveFocus( _nOldFocus );\n\t\t_iOldX = null;\n\t\t_iOldY = null;\n\t\t_nOldFocus = null;\n\t\t_fnReleaseKeys();\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnRemoveFocus\n\t * Purpose:  Remove focus from a cell and fire any blur events which are attached\n\t * Returns:  -\n\t * Inputs:   node:nTarget - cell of interest\n\t */\n\tfunction _fnRemoveFocus( nTarget )\n\t{\n\t\tjQuery(nTarget).removeClass( _sFocusClass );\n\t\tjQuery(nTarget).parent().removeClass( _sFocusClass );\n\t\t_fnEventFire( \"blur\", _iOldX, _iOldY );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnClick\n\t * Purpose:  Focus on the element that has been clicked on by the user\n\t * Returns:  -\n\t * Inputs:   event:e - click event\n\t */\n\tfunction _fnClick ( e )\n\t{\n\t\tvar nTarget = this;\n\t\twhile ( nTarget.nodeName != \"TD\" )\n\t\t{\n\t\t\tnTarget = nTarget.parentNode;\n\t\t}\n\t\t\n\t\t_fnSetFocus( nTarget );\n\t\t_fnCaptureKeys();\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Key events\n\t */\n\t\n\t/*\n\t * Function: _fnKey\n\t * Purpose:  Deal with a key events, be it moving the focus or return etc.\n\t * Returns:  bool: - allow browser default action\n\t * Inputs:   event:e - key event\n\t */\n\tfunction _fnKey ( e )\n\t{\n\t\t/* If user or system has blocked KeyTable from doing anything, just ignore this event */\n\t\tif ( _that.block || !_bKeyCapture )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t/* If a modifier key is pressed (exapct shift), ignore the event */\n\t\tif ( e.metaKey || e.altKey || e.ctrlKey )\n\t\t{\n\t\t    return true;\n\t\t}\n\t\tvar\n\t\t\tx, y,\n\t\t\tiTableWidth = _nBody.getElementsByTagName('tr')[0].getElementsByTagName('td').length, \n\t\t\tiTableHeight;\n\t\t\n\t\t/* Get table height and width - done here so as to be dynamic (if table is updated) */\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\t/* \n\t\t\t * Locate the current node in the DataTable overriding the old positions - the reason for\n\t\t\t * is is that there might have been some DataTables interaction between the last focus and\n\t\t\t * now\n\t\t\t */\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\tiTableHeight = oSettings.aiDisplay.length;\n\t\t\t\n\t\t\tvar aDtPos = _fnFindDtCell( _nOldFocus );\n\t\t\tif ( aDtPos === null )\n\t\t\t{\n\t\t\t\t/* If the table has been updated such that the focused cell can't be seen - do nothing */\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_iOldX = aDtPos[ 0 ];\n\t\t\t_iOldY = aDtPos[ 1 ];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tiTableHeight = _nBody.getElementsByTagName('tr').length;\n\t\t}\n\t\t\n\t\t/* Capture shift+tab to match the left arrow key */\n\t\tvar iKey = (e.keyCode == 9 && e.shiftKey) ? -1 : e.keyCode;\n\t\t\n\t\tswitch( iKey )\n\t\t{\n\t\t\tcase 13: /* return */\n\t\t\t \te.preventDefault();\n \t\t\t\te.stopPropagation();\n\t\t\t\t_fnEventFire( \"action\", _iOldX, _iOldY );\n\t\t\t\treturn true;\n\t\t\t\t\n\t\t\tcase 27: /* esc */\n\t\t\t\tif ( !_fnEventFire( \"esc\", _iOldX, _iOldY ) )\n\t\t\t\t{\n\t\t\t\t\t/* Only lose focus if there isn't an escape handler on the cell */\n\t\t\t\t\t_fnBlur();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tx = _iOldX;\n\t\t\t\ty = _iOldY;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase -1:\n\t\t\tcase 37: /* left arrow */\n\t\t\t\tif ( _iOldX > 0 ) {\n\t\t\t\t\tx = _iOldX - 1;\n\t\t\t\t\ty = _iOldY;\n\t\t\t\t} else if ( _iOldY > 0 ) {\n\t\t\t\t\tx = iTableWidth-1;\n\t\t\t\t\ty = _iOldY - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* at start of table */\n\t\t\t\t\tif ( iKey == -1 && _bForm )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If we are in a form, return focus to the 'input' element such that tabbing will\n\t\t\t\t\t\t * follow correctly in the browser\n\t\t\t\t\t\t */\n\t\t\t\t\t\t_bInputFocused = true;\n\t\t\t\t\t\t_nInput.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for \n\t\t\t\t\t\t * focus\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsetTimeout( function(){ _bInputFocused = false; }, 0 );\n\t\t\t\t\t\t_bKeyCapture = false;\n\t\t\t\t\t\t_fnBlur();\n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: /* up arrow */\n\t\t\t\tif ( _iOldY > 0 ) {\n\t\t\t\t\tx = _iOldX;\n\t\t\t\t\ty = _iOldY - 1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: /* tab */\n\t\t\tcase 39: /* right arrow */\n\t\t\t\tif ( _iOldX < iTableWidth-1 ) {\n\t\t\t\t\tx = _iOldX + 1;\n\t\t\t\t\ty = _iOldY;\n\t\t\t\t} else if ( _iOldY < iTableHeight-1 ) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = _iOldY + 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* at end of table */\n\t\t\t\t\tif ( iKey == 9 && _bForm )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If we are in a form, return focus to the 'input' element such that tabbing will\n\t\t\t\t\t\t * follow correctly in the browser\n\t\t\t\t\t\t */\n\t\t\t\t\t\t_bInputFocused = true;\n\t\t\t\t\t\t_nInput.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for \n\t\t\t\t\t\t * focus\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsetTimeout( function(){ _bInputFocused = false; }, 0 );\n\t\t\t\t\t\t_bKeyCapture = false;\n\t\t\t\t\t\t_fnBlur();\n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: /* down arrow */\n\t\t\t\tif ( _iOldY < iTableHeight-1 ) {\n\t\t\t\t\tx = _iOldX;\n\t\t\t\t\ty = _iOldY + 1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault: /* Nothing we are interested in */\n\t\t\t\treturn true;\n\t\t}\n\t\t\n\t\t_fnSetFocus( _fnCellFromCoords(x, y) );\n\t\treturn false;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnCaptureKeys\n\t * Purpose:  Start capturing key events for this table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnCaptureKeys( )\n\t{\n\t\tif ( !_bKeyCapture )\n\t\t{\n\t\t\t_bKeyCapture = true;\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnReleaseKeys\n\t * Purpose:  Stop capturing key events for this table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnReleaseKeys( )\n\t{\n\t\t_bKeyCapture = false;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Support functions\n\t */\n\t\n\t/*\n\t * Function: _fnCellFromCoords\n\t * Purpose:  Calulate the target TD cell from x and y coordinates\n\t * Returns:  node: - TD target\n\t * Inputs:   int:x - x coordinate\n\t *           int:y - y coordinate\n\t */\n\tfunction _fnCellFromCoords( x, y )\n\t{\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\tif ( typeof oSettings.aoData[ oSettings.aiDisplay[ y ] ] != 'undefined' )\n\t\t\t{\n\t\t\t\treturn oSettings.aoData[ oSettings.aiDisplay[ y ] ].nTr.getElementsByTagName('td')[x];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn jQuery('tr:eq('+y+')>td:eq('+x+')', _nBody )[0];\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnCoordsFromCell\n\t * Purpose:  Calculate the x and y position in a table from a TD cell\n\t * Returns:  array[2] int: [x, y]\n\t * Inputs:   node:n - TD cell of interest\n\t * Notes:    Not actually interested in this for DataTables since it might go out of date\n\t */\n\tfunction _fnCoordsFromCell( n )\n\t{\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\treturn [\n\t\t\t\tjQuery('td', n.parentNode).index(n),\n\t\t\t\tjQuery('tr', n.parentNode.parentNode).index(n.parentNode) + oSettings._iDisplayStart\n\t\t\t];\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn [\n\t\t\t\tjQuery('td', n.parentNode).index(n),\n\t\t\t\tjQuery('tr', n.parentNode.parentNode).index(n.parentNode)\n\t\t\t];\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnSetScrollTop\n\t * Purpose:  Set the vertical scrolling position\n\t * Returns:  -\n\t * Inputs:   int:iPos - scrolltop\n\t * Notes:    This is so nasty, but without browser detection you can't tell which you should set\n\t *           So on browsers that support both, the scroll top will be set twice. I can live with\n\t *           that :-)\n\t */\n\tfunction _fnSetScrollTop( iPos )\n\t{\n\t\tdocument.documentElement.scrollTop = iPos;\n\t\tdocument.body.scrollTop = iPos;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnSetScrollLeft\n\t * Purpose:  Set the horizontal scrolling position\n\t * Returns:  -\n\t * Inputs:   int:iPos - scrollleft\n\t */\n\tfunction _fnSetScrollLeft( iPos )\n\t{\n\t\tdocument.documentElement.scrollLeft = iPos;\n\t\tdocument.body.scrollLeft = iPos;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnGetPos\n\t * Purpose:  Get the position of an object on the rendered page\n\t * Returns:  array[2] int: [left, right]\n\t * Inputs:   node:obj - element of interest\n\t */\n\tfunction _fnGetPos ( obj )\n\t{\n\t\tvar iLeft = 0;\n\t\tvar iTop = 0;\n\t\t\n\t\tif (obj.offsetParent) \n\t\t{\n\t\t\tiLeft = obj.offsetLeft;\n\t\t\tiTop = obj.offsetTop;\n\t\t\tobj = obj.offsetParent;\n\t\t\twhile (obj) \n\t\t\t{\n\t\t\t\tiLeft += obj.offsetLeft;\n\t\t\t\tiTop += obj.offsetTop;\n\t\t\t\tobj = obj.offsetParent;\n\t\t\t}\n\t\t}\n\t\treturn [iLeft,iTop];\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnFindDtCell\n\t * Purpose:  Get the coords. of a cell from the DataTables internal information\n\t * Returns:  array[2] int: [x, y] coords. or null if not found\n\t * Inputs:   node:nTarget - the node of interest\n\t */\n\tfunction _fnFindDtCell( nTarget )\n\t{\n\t\tvar oSettings = _oDatatable.fnSettings();\n\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar nTr = oSettings.aoData[ oSettings.aiDisplay[i] ].nTr;\n\t\t\tvar nTds = nTr.getElementsByTagName('td');\n\t\t\tfor ( var j=0, jLen=nTds.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( nTds[j] == nTarget )\n\t\t\t\t{\n\t\t\t\t\treturn [ j, i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Initialisation\n\t */\n\t\n\t/*\n\t * Function: _fnInit\n\t * Purpose:  Initialise the KeyTable\n\t * Returns:  -\n\t * Inputs:   object:oInit - optional - Initalisation object with the following parameters:\n\t *   array[2] int:focus - x and y coordinates of the initial target\n\t *     or\n\t *     node:focus - the node to set initial focus on\n\t *   node:table - the table to use, if not given, first table with class 'KeyTable' will be used\n\t *   string:focusClass - focusing class to give to table elements\n\t *           object:that - focus\n\t *   bool:initScroll - scroll the view port on load, default true\n\t *   int:tabIndex - the tab index to give the hidden input element\n\t */\n\tfunction _fnInit( oInit, that )\n\t{\n\t\t/* Save scope */\n\t\t_that = that;\n\t\t\n\t\t/* Capture undefined initialisation and apply the defaults */\n\t\tif ( typeof oInit == 'undefined' ) {\n\t\t\toInit = {};\n\t\t}\n\t\t\n\t\tif ( typeof oInit.focus == 'undefined' ) {\n\t\t\toInit.focus = [0,0];\n\t\t}\n\t\t\n\t\tif ( typeof oInit.table == 'undefined' ) {\n\t\t\toInit.table = jQuery('table.KeyTable')[0];\n\t\t} else {\n\t\t\t$(oInit.table).addClass('KeyTable');\n\t\t}\n\t\t\n\t\tif ( typeof oInit.focusClass != 'undefined' ) {\n\t\t\t_sFocusClass = oInit.focusClass;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.datatable != 'undefined' ) {\n\t\t\t_oDatatable = oInit.datatable;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.initScroll == 'undefined' ) {\n\t\t\toInit.initScroll = true;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.form == 'undefined' ) {\n\t\t\toInit.form = false;\n\t\t}\n\t\t_bForm = oInit.form;\n\t\t\n\t\t/* Cache the tbody node of interest */\n\t\t_nBody = oInit.table.getElementsByTagName('tbody')[0];\n\t\t\n\t\t/* If the table is inside a form, then we need a hidden input box which can be used by the\n\t\t * browser to catch the browser tabbing for our table\n\t\t */\n\t\tif ( _bForm )\n\t\t{\n\t\t\tvar nDiv = document.createElement('div');\n\t\t\t_nInput = document.createElement('input');\n\t\t\tnDiv.style.height = \"1px\"; /* Opera requires a little something */\n\t\t\tnDiv.style.width = \"0px\";\n\t\t\tnDiv.style.overflow = \"hidden\";\n\t\t\tif ( typeof oInit.tabIndex != 'undefined' )\n\t\t\t{\n\t\t\t\t_nInput.tabIndex = oInit.tabIndex;\n\t\t\t}\n\t\t\tnDiv.appendChild(_nInput);\n\t\t\toInit.table.parentNode.insertBefore( nDiv, oInit.table.nextSibling );\n\t\t\t\n\t\t\tjQuery(_nInput).focus( function () {\n\t\t\t\t/* See if we want to 'tab into' the table or out */\n\t\t\t\tif ( !_bInputFocused )\n\t\t\t\t{\n\t\t\t\t\t_bKeyCapture = true;\n\t\t\t\t\t_bInputFocused = false;\n\t\t\t\t\tif ( typeof oInit.focus.nodeName != \"undefined\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetFocus( oInit.focus, oInit.initScroll );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Need to interup the thread for this to work */\n\t\t\t\t\tsetTimeout( function() { _nInput.blur(); }, 0 );\n\t\t\t\t}\n\t\t\t} );\n\t\t\t_bKeyCapture = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Set the initial focus on the table */\n\t\t\tif ( typeof oInit.focus.nodeName != \"undefined\" )\n\t\t\t{\n\t\t\t\t_fnSetFocus( oInit.focus, oInit.initScroll );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );\n\t\t\t}\n\t\t\t_fnCaptureKeys();\n\t\t}\n\t\t\n\t\t/*\n\t\t * Add event listeners\n\t\t * Well - I hate myself for doing this, but it would appear that key events in browsers are\n\t\t * a complete mess, particulay when you consider arrow keys, which of course are one of the\n\t\t * main areas of interest here. So basically for arrow keys, there is no keypress event in\n\t\t * Safari and IE, while there is in Firefox and Opera. But Firefox and Opera don't repeat the\n\t\t * keydown event for an arrow key. OUCH. See the following two articles for more:\n\t\t *   http://www.quirksmode.org/dom/events/keys.html\n\t\t *   https://lists.webkit.org/pipermail/webkit-dev/2007-December/002992.html\n\t\t *   http://unixpapa.com/js/key.html\n\t\t * PPK considers the IE / Safari method correct (good enough for me!) so we (urgh) detect\n\t\t * Mozilla and Opera and apply keypress for them, while everything else gets keydown. If\n\t\t * Mozilla or Opera change their implemention in future, this will need to be updated... \n\t\t * although at the time of writing (14th March 2009) Minefield still uses the 3.0 behaviour.\n\t\t */\n\t\tif ( jQuery.browser.mozilla || jQuery.browser.opera )\n\t\t{\n\t\t\tjQuery(document).bind( \"keypress\", _fnKey );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tjQuery(document).bind( \"keydown\", _fnKey );\n\t\t}\n\t\t\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tjQuery('tbody td', _oDatatable.fnSettings().nTable).live( 'click', _fnClick );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tjQuery('td', _nBody).live( 'click', _fnClick );\n\t\t}\n\t\t\n\t\t/* Loose table focus when click outside the table */\n\t\tjQuery(document).click( function(e) {\n\t\t\tvar nTarget = e.target;\n\t\t\tvar bTableClick = false;\n\t\t\twhile ( nTarget )\n\t\t\t{\n\t\t\t\tif ( nTarget == oInit.table )\n\t\t\t\t{\n\t\t\t\t\tbTableClick = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tnTarget = nTarget.parentNode;\n\t\t\t}\n\t\t\tif ( !bTableClick )\n\t\t\t{\n\t\t\t\t_fnBlur();\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t/* Initialise our new object */\n\t_fnInit( oInit, this );\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/api_scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true,\n\t\t\t\t\t\"fnInitComplete\": function () {\n\t\t\t\t\t\tthis.fnSettings().oScroller.fnScrollToRow( 1000 );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller API example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows a trivial use of the Scroller API to scroll the table to row 1000 once the table has been loaded. Any number could be used here, and a small animated effect is used to provide visual feedback to the user (this can be disabled by passed false as a second parameter to fnScrollToRow).</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\t$('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true,\n\t\t\"fnInitComplete\": function () {\n\t\t\tthis.fnSettings().oScroller.fnScrollToRow( 1000 );\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"192px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller basic initialisation example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Scroller is a plug-in for DataTables which enhances the \"infinite scrolling\" feature that DataTables has built-in to make the scrolling feel more natural. The scrolling box shown on the page is the full height of the drawn table, but a virtual rendering technique is used to only render the part of the table that is actually viewable in the scrolling viewport in order to increase the speed of drawing.</p>\n\t\t\t<p>Note that Scroller assumes that all rows are of the same height (in order to preform the required calculations. You can use 'td { white-space: nowrap; }' in your CSS to ensure that text in rows does not wrap.</p>\n\t\t\t<p>This example shows how Scroller for DataTables can be initialised by simply including the character 'S' in sDom (note that the 'S' must come after the 't' in sDom). Deferred rendering an and Ajax data source are also used in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/large_js_source.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar aaData = [];\n\t\t\t\tfor ( var i=0 ; i<50000 ; i++ ) {\n\t\t\t\t\taaData.push( [ i, i, i, i, i ] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"aaData\": aaData,\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller example - 50'000 rows\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example is completely artificial in that the data generated is created on the client-side by just looping around a Javascript array and then passing that to DataTables. However, it does show quite nicely that DataTables and Scroller can cope with large amounts of data on the client-side quite nicely. Typically data such as this would be Ajax sourced and server-side processing should be considered. Please be aware that the performance of this page will depend on your browser - for example IE6 will crawl!</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Column 1</th>\n\t\t\t<th>Column 2</th>\n\t\t\t<th>Column 3</th>\n\t\t\t<th>Column 4</th>\n\t\t\t<th>Column 5</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar aaData = [];\n\tfor ( var i=1 ; i&lt;50000 ; i++ ) {\n\t\taaData.push( [ i, i, i, i, i ] );\n\t}\n\t\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"aaData\": aaData,\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/css/dataTables.scroller.css",
    "content": "\n/*\n * Namespace: DTS (DataTables Scroller)\n */\n\ndiv.DTS tbody th,\ndiv.DTS tbody td {\n\twhite-space: nowrap;\n}\n\ndiv.DTS tbody tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTS div.DTS_Loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 200px;\n\theight: 20px;\n\tmargin-top: -20px;\n\tmargin-left: -100px;\n\tz-index: 1;\n\n\tborder: 1px solid #999;\n\tpadding: 20px 0;\n\ttext-align: center;\n\tbackground-color: white;\n\tbackground-color: rgba(255, 255, 255, 0.5);\n}\n\ndiv.DTS div.dataTables_scrollHead {\n\tbackground-color: white;\n}\n\ndiv.DTS div.dataTables_scrollBody {\n\tz-index: 2;\n}\n\ndiv.DTS div.dataTables_scroll {\n\tbackground: url('../images/loading-background.png') repeat 0 0;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/2500.txt",
    "content": "{ \"aaData\": [\n\t[ \"1\", \"Armand\", \"Warren\", \"56045\", \"Taiwan, Province of China\" ],\n\t[ \"2\", \"Xenos\", \"Salas\", \"71090\", \"Liberia\" ],\n\t[ \"3\", \"Virginia\", \"Whitaker\", \"62723\", \"Nicaragua\" ],\n\t[ \"4\", \"Kato\", \"Patrick\", \"97662\", \"Palau\" ],\n\t[ \"5\", \"Penelope\", \"Hensley\", \"76634\", \"Greenland\" ],\n\t[ \"6\", \"Georgia\", \"Erickson\", \"81358\", \"Bolivia\" ],\n\t[ \"7\", \"Shad\", \"Pena\", \"20600\", \"Palestinian Territory, Occupied\" ],\n\t[ \"8\", \"Tanisha\", \"Humphrey\", \"93371\", \"Kenya\" ],\n\t[ \"9\", \"Claire\", \"Espinoza\", \"I8S 2S8\", \"Panama\" ],\n\t[ \"10\", \"Raya\", \"Tucker\", \"O8D 8W7\", \"Botswana\" ],\n\t[ \"11\", \"Otto\", \"Briggs\", \"57590\", \"Anguilla\" ],\n\t[ \"12\", \"Logan\", \"Burt\", \"53041\", \"Venezuela\" ],\n\t[ \"13\", \"Cooper\", \"Pennington\", \"36994\", \"France\" ],\n\t[ \"14\", \"Kristen\", \"Peterson\", \"52917\", \"Sao Tome and Principe\" ],\n\t[ \"15\", \"Jordan\", \"Velasquez\", \"08884\", \"Switzerland\" ],\n\t[ \"16\", \"Zelda\", \"Freeman\", \"F9H 1J9\", \"Holy See (Vatican City State)\" ],\n\t[ \"17\", \"Mary\", \"Pacheco\", \"A7Y 6X9\", \"Niger\" ],\n\t[ \"18\", \"Tiger\", \"Robles\", \"44533\", \"Malaysia\" ],\n\t[ \"19\", \"Zelenia\", \"Buckner\", \"Q8N 6E5\", \"Malawi\" ],\n\t[ \"20\", \"Coby\", \"Johnston\", \"N6I 2O9\", \"Rwanda\" ],\n\t[ \"21\", \"Gillian\", \"Strickland\", \"12258\", \"Cook Islands\" ],\n\t[ \"22\", \"Alfreda\", \"Mcbride\", \"K5A 3B6\", \"Nigeria\" ],\n\t[ \"23\", \"Laith\", \"Ford\", \"19072\", \"Czech Republic\" ],\n\t[ \"24\", \"Autumn\", \"Barton\", \"U9D 9F4\", \"Angola\" ],\n\t[ \"25\", \"Nadine\", \"Britt\", \"G4U 8L0\", \"Liechtenstein\" ],\n\t[ \"26\", \"Xaviera\", \"Hart\", \"T1N 7D2\", \"Mali\" ],\n\t[ \"27\", \"Neil\", \"Page\", \"T3E 9F4\", \"Korea\" ],\n\t[ \"28\", \"Rose\", \"French\", \"B7T 8M2\", \"French Polynesia\" ],\n\t[ \"29\", \"Alyssa\", \"Poole\", \"S1L 2T5\", \"Yemen\" ],\n\t[ \"30\", \"Chantale\", \"Lynch\", \"97316\", \"United States\" ],\n\t[ \"31\", \"Jermaine\", \"Dawson\", \"A3H 7A1\", \"American Samoa\" ],\n\t[ \"32\", \"Ann\", \"Giles\", \"54258\", \"Korea\" ],\n\t[ \"33\", \"Jerry\", \"Carr\", \"04901\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"34\", \"Lionel\", \"Hooper\", \"67970\", \"Bahrain\" ],\n\t[ \"35\", \"Alyssa\", \"Hewitt\", \"R3K 2V8\", \"Paraguay\" ],\n\t[ \"36\", \"Lisandra\", \"Sheppard\", \"71886\", \"Seychelles\" ],\n\t[ \"37\", \"Kylan\", \"Harrison\", \"96763\", \"Italy\" ],\n\t[ \"38\", \"Kaitlin\", \"Montgomery\", \"V5K 5U8\", \"Niger\" ],\n\t[ \"39\", \"Heidi\", \"Boyd\", \"B3C 8M9\", \"Papua New Guinea\" ],\n\t[ \"40\", \"Rinah\", \"Case\", \"W7M 5K1\", \"Mali\" ],\n\t[ \"41\", \"Thaddeus\", \"Maynard\", \"E4V 6W6\", \"Egypt\" ],\n\t[ \"42\", \"Lacota\", \"Ray\", \"T3J 8D8\", \"United Kingdom\" ],\n\t[ \"43\", \"Olympia\", \"Cortez\", \"F8C 7I5\", \"Palau\" ],\n\t[ \"44\", \"Wendy\", \"Rojas\", \"N8T 4K6\", \"Cook Islands\" ],\n\t[ \"45\", \"Arden\", \"Kelley\", \"V9N 2T6\", \"India\" ],\n\t[ \"46\", \"Colorado\", \"Lindsey\", \"96703\", \"Chad\" ],\n\t[ \"47\", \"Alika\", \"Weaver\", \"F6V 1I1\", \"Bulgaria\" ],\n\t[ \"48\", \"Phoebe\", \"Mack\", \"E4B 1X2\", \"El Salvador\" ],\n\t[ \"49\", \"Sybill\", \"Bridges\", \"Z2G 6A2\", \"Somalia\" ],\n\t[ \"50\", \"Trevor\", \"Larsen\", \"K1R 3B9\", \"United Arab Emirates\" ],\n\t[ \"51\", \"Maya\", \"Battle\", \"70881\", \"Australia\" ],\n\t[ \"52\", \"Charity\", \"Walton\", \"I4I 5R9\", \"Swaziland\" ],\n\t[ \"53\", \"Lane\", \"Sloan\", \"79076\", \"Nauru\" ],\n\t[ \"54\", \"Christopher\", \"Watson\", \"35116\", \"Suriname\" ],\n\t[ \"55\", \"Clementine\", \"Shelton\", \"98232\", \"Venezuela\" ],\n\t[ \"56\", \"Basil\", \"Hood\", \"J9I 1R2\", \"Tonga\" ],\n\t[ \"57\", \"Meghan\", \"Pacheco\", \"H5Z 6B1\", \"Dominican Republic\" ],\n\t[ \"58\", \"Brennan\", \"Potts\", \"51743\", \"Turkey\" ],\n\t[ \"59\", \"Lawrence\", \"Duran\", \"63266\", \"Uruguay\" ],\n\t[ \"60\", \"Ina\", \"Head\", \"S8P 9J5\", \"Romania\" ],\n\t[ \"61\", \"Castor\", \"Jacobson\", \"C9F 6C9\", \"Albania\" ],\n\t[ \"62\", \"Daquan\", \"Holden\", \"38571\", \"Ireland\" ],\n\t[ \"63\", \"Donna\", \"Valencia\", \"J7B 3I0\", \"Portugal\" ],\n\t[ \"64\", \"Kessie\", \"Phelps\", \"61063\", \"Georgia\" ],\n\t[ \"65\", \"Dillon\", \"Garcia\", \"13652\", \"Holy See (Vatican City State)\" ],\n\t[ \"66\", \"Russell\", \"Sweeney\", \"T8P 2O6\", \"Saint Kitts and Nevis\" ],\n\t[ \"67\", \"Zelda\", \"Berg\", \"84946\", \"Afghanistan\" ],\n\t[ \"68\", \"Dexter\", \"Mann\", \"73596\", \"Thailand\" ],\n\t[ \"69\", \"Maisie\", \"Miller\", \"X3M 6C1\", \"Seychelles\" ],\n\t[ \"70\", \"Lynn\", \"Mitchell\", \"N5B 3Z9\", \"Wallis and Futuna\" ],\n\t[ \"71\", \"Gay\", \"Medina\", \"66692\", \"Germany\" ],\n\t[ \"72\", \"Olga\", \"Clark\", \"M6B 7B6\", \"Kuwait\" ],\n\t[ \"73\", \"Brianna\", \"Obrien\", \"Z6Z 5R3\", \"Bahrain\" ],\n\t[ \"74\", \"Daria\", \"Byers\", \"R9T 4N7\", \"Ghana\" ],\n\t[ \"75\", \"Chiquita\", \"Barker\", \"28435\", \"Ireland\" ],\n\t[ \"76\", \"Gray\", \"Salazar\", \"58618\", \"Chile\" ],\n\t[ \"77\", \"Delilah\", \"Kirby\", \"42811\", \"Oman\" ],\n\t[ \"78\", \"Xanthus\", \"Holland\", \"B8Q 9C4\", \"Antigua and Barbuda\" ],\n\t[ \"79\", \"Reuben\", \"Brennan\", \"44693\", \"Czech Republic\" ],\n\t[ \"80\", \"Alden\", \"Long\", \"94236\", \"Slovakia\" ],\n\t[ \"81\", \"Blythe\", \"Bender\", \"04812\", \"Guam\" ],\n\t[ \"82\", \"Aileen\", \"Burgess\", \"47942\", \"Djibouti\" ],\n\t[ \"83\", \"Zeus\", \"Craig\", \"43002\", \"Nicaragua\" ],\n\t[ \"84\", \"Jade\", \"Garza\", \"F2X 8F3\", \"New Zealand\" ],\n\t[ \"85\", \"Noah\", \"Barrera\", \"K9C 8U0\", \"Malawi\" ],\n\t[ \"86\", \"Quyn\", \"Robertson\", \"H3X 6J9\", \"Bosnia and Herzegovina\" ],\n\t[ \"87\", \"Serena\", \"Cabrera\", \"83671\", \"Slovenia\" ],\n\t[ \"88\", \"Charity\", \"Chase\", \"T9Q 7C4\", \"Solomon Islands\" ],\n\t[ \"89\", \"Athena\", \"Grimes\", \"62801\", \"Aruba\" ],\n\t[ \"90\", \"Mallory\", \"Middleton\", \"D2V 1M5\", \"Italy\" ],\n\t[ \"91\", \"Xenos\", \"Jones\", \"46642\", \"Singapore\" ],\n\t[ \"92\", \"Tate\", \"Gregory\", \"66538\", \"Zimbabwe\" ],\n\t[ \"93\", \"Blaze\", \"Taylor\", \"70282\", \"Paraguay\" ],\n\t[ \"94\", \"Jena\", \"Duncan\", \"63057\", \"Cambodia\" ],\n\t[ \"95\", \"Thaddeus\", \"Chase\", \"66762\", \"Netherlands Antilles\" ],\n\t[ \"96\", \"Guinevere\", \"Mcgee\", \"O9G 4S2\", \"Lebanon\" ],\n\t[ \"97\", \"Kermit\", \"Ramsey\", \"41214\", \"Dominican Republic\" ],\n\t[ \"98\", \"Josephine\", \"Gallagher\", \"04960\", \"French Southern Territories\" ],\n\t[ \"99\", \"Amela\", \"Morales\", \"M9I 1X5\", \"Sudan\" ],\n\t[ \"100\", \"Rina\", \"Yates\", \"G3T 7M9\", \"Dominica\" ],\n\t[ \"101\", \"Orson\", \"Norris\", \"21660\", \"Sierra Leone\" ],\n\t[ \"102\", \"Graiden\", \"Silva\", \"98191\", \"Saint Lucia\" ],\n\t[ \"103\", \"Amaya\", \"Hood\", \"45779\", \"India\" ],\n\t[ \"104\", \"Fatima\", \"Fitzpatrick\", \"I4R 9Q8\", \"Viet Nam\" ],\n\t[ \"105\", \"Judith\", \"Stokes\", \"97596\", \"Sudan\" ],\n\t[ \"106\", \"Jared\", \"Vaughn\", \"75521\", \"Benin\" ],\n\t[ \"107\", \"Mira\", \"Morgan\", \"35169\", \"Martinique\" ],\n\t[ \"108\", \"Walter\", \"Perkins\", \"28618\", \"San Marino\" ],\n\t[ \"109\", \"Megan\", \"Maxwell\", \"K6X 3J4\", \"Oman\" ],\n\t[ \"110\", \"Christine\", \"Christensen\", \"M7S 8G8\", \"Netherlands Antilles\" ],\n\t[ \"111\", \"Tanner\", \"Guerra\", \"S3K 6Y5\", \"Finland\" ],\n\t[ \"112\", \"Meghan\", \"Rowland\", \"K7U 3A1\", \"Rwanda\" ],\n\t[ \"113\", \"Patrick\", \"Mitchell\", \"V3F 5C4\", \"Oman\" ],\n\t[ \"114\", \"Jackson\", \"Sanders\", \"83229\", \"Greenland\" ],\n\t[ \"115\", \"Omar\", \"Savage\", \"14082\", \"Korea\" ],\n\t[ \"116\", \"Ulla\", \"Larsen\", \"Q2P 4L8\", \"French Southern Territories\" ],\n\t[ \"117\", \"Hop\", \"Gates\", \"D9G 9J4\", \"Poland\" ],\n\t[ \"118\", \"Astra\", \"Mendoza\", \"R3D 2H9\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"119\", \"Denise\", \"Cardenas\", \"73138\", \"Sao Tome and Principe\" ],\n\t[ \"120\", \"Melodie\", \"Roberts\", \"L1G 4H2\", \"India\" ],\n\t[ \"121\", \"Cedric\", \"Joseph\", \"M4V 8O9\", \"Korea, Republic of\" ],\n\t[ \"122\", \"Linda\", \"Horn\", \"24465\", \"Bosnia and Herzegovina\" ],\n\t[ \"123\", \"Mary\", \"Lyons\", \"22324\", \"Norfolk Island\" ],\n\t[ \"124\", \"Ciara\", \"Mcknight\", \"30784\", \"Anguilla\" ],\n\t[ \"125\", \"Vaughan\", \"Santiago\", \"65037\", \"Guyana\" ],\n\t[ \"126\", \"Lamar\", \"Shepherd\", \"58040\", \"France\" ],\n\t[ \"127\", \"Xavier\", \"Webster\", \"68321\", \"Afghanistan\" ],\n\t[ \"128\", \"Ainsley\", \"Banks\", \"46902\", \"Pakistan\" ],\n\t[ \"129\", \"Alika\", \"Love\", \"L5O 4B3\", \"Iran, Islamic Republic of\" ],\n\t[ \"130\", \"Maite\", \"Dickson\", \"37405\", \"Saint Kitts and Nevis\" ],\n\t[ \"131\", \"Kimberley\", \"Morrow\", \"F7C 7J0\", \"Lebanon\" ],\n\t[ \"132\", \"Eugenia\", \"Stafford\", \"36282\", \"Nicaragua\" ],\n\t[ \"133\", \"Mira\", \"Gill\", \"K1T 8U1\", \"Uruguay\" ],\n\t[ \"134\", \"Herman\", \"Francis\", \"C2G 8G9\", \"Northern Mariana Islands\" ],\n\t[ \"135\", \"Veronica\", \"Peters\", \"74146\", \"Cook Islands\" ],\n\t[ \"136\", \"Axel\", \"Cochran\", \"32240\", \"Central African Republic\" ],\n\t[ \"137\", \"Edan\", \"Howe\", \"51862\", \"Mali\" ],\n\t[ \"138\", \"Ignacia\", \"Bruce\", \"Q8T 5Q1\", \"Sao Tome and Principe\" ],\n\t[ \"139\", \"Jana\", \"Mcguire\", \"89412\", \"Czech Republic\" ],\n\t[ \"140\", \"Alice\", \"Underwood\", \"74535\", \"Slovakia\" ],\n\t[ \"141\", \"Tobias\", \"Kent\", \"33601\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"142\", \"Nasim\", \"Coleman\", \"19377\", \"United States Minor Outlying Islands\" ],\n\t[ \"143\", \"Geoffrey\", \"Byers\", \"85753\", \"Netherlands Antilles\" ],\n\t[ \"144\", \"Odette\", \"Sawyer\", \"55418\", \"Tunisia\" ],\n\t[ \"145\", \"Chaney\", \"Flowers\", \"F4W 7O7\", \"Maldives\" ],\n\t[ \"146\", \"Shelly\", \"Glover\", \"M5Y 4A6\", \"Taiwan, Province of China\" ],\n\t[ \"147\", \"Uriel\", \"Thornton\", \"Z6Q 5B7\", \"Myanmar\" ],\n\t[ \"148\", \"Clio\", \"Nicholson\", \"Y8S 7P2\", \"Martinique\" ],\n\t[ \"149\", \"Jana\", \"Foley\", \"B1O 9J5\", \"United Arab Emirates\" ],\n\t[ \"150\", \"Fulton\", \"Rasmussen\", \"39194\", \"Solomon Islands\" ],\n\t[ \"151\", \"Lisandra\", \"Boyd\", \"J2Z 2V7\", \"French Guiana\" ],\n\t[ \"152\", \"Brennan\", \"Lopez\", \"Q4M 7Y4\", \"Burkina Faso\" ],\n\t[ \"153\", \"Martha\", \"Washington\", \"M7S 4U6\", \"Iran, Islamic Republic of\" ],\n\t[ \"154\", \"Dara\", \"Ramos\", \"07799\", \"Portugal\" ],\n\t[ \"155\", \"Virginia\", \"Harris\", \"01246\", \"Bermuda\" ],\n\t[ \"156\", \"Maryam\", \"Patrick\", \"Y3J 4Y0\", \"Rwanda\" ],\n\t[ \"157\", \"Shana\", \"Mullen\", \"61169\", \"Togo\" ],\n\t[ \"158\", \"Rowan\", \"Hahn\", \"K6D 5T4\", \"Guinea-bissau\" ],\n\t[ \"159\", \"Hermione\", \"Shepherd\", \"M4F 7T6\", \"Ireland\" ],\n\t[ \"160\", \"Jada\", \"Bright\", \"P1Z 7E6\", \"French Southern Territories\" ],\n\t[ \"161\", \"Scarlet\", \"Bray\", \"57161\", \"Austria\" ],\n\t[ \"162\", \"Haviva\", \"Conner\", \"M4T 8O4\", \"Bermuda\" ],\n\t[ \"163\", \"Myra\", \"Briggs\", \"Q4B 6L7\", \"Kenya\" ],\n\t[ \"164\", \"Hall\", \"Floyd\", \"40411\", \"Bangladesh\" ],\n\t[ \"165\", \"Kyle\", \"Marquez\", \"J4T 7C6\", \"Djibouti\" ],\n\t[ \"166\", \"Claudia\", \"Long\", \"R7B 1T6\", \"Macedonia\" ],\n\t[ \"167\", \"Hasad\", \"Clemons\", \"94009\", \"Bosnia and Herzegovina\" ],\n\t[ \"168\", \"Kameko\", \"Reeves\", \"G4V 6D5\", \"Singapore\" ],\n\t[ \"169\", \"Angelica\", \"Bailey\", \"Z3Y 7I0\", \"Micronesia\" ],\n\t[ \"170\", \"Shelley\", \"Jennings\", \"O3A 9H0\", \"Christmas Island\" ],\n\t[ \"171\", \"Rafael\", \"Randolph\", \"Y4L 8B5\", \"Germany\" ],\n\t[ \"172\", \"Winter\", \"Kinney\", \"A3K 9A7\", \"Saint Lucia\" ],\n\t[ \"173\", \"Brian\", \"Larsen\", \"53752\", \"Comoros\" ],\n\t[ \"174\", \"Melvin\", \"Cooper\", \"72416\", \"Czech Republic\" ],\n\t[ \"175\", \"Gil\", \"Valencia\", \"95798\", \"Uganda\" ],\n\t[ \"176\", \"Uma\", \"Cummings\", \"84649\", \"Jordan\" ],\n\t[ \"177\", \"Micah\", \"Shannon\", \"H9L 8R6\", \"Ghana\" ],\n\t[ \"178\", \"Ahmed\", \"Weiss\", \"05291\", \"American Samoa\" ],\n\t[ \"179\", \"Hop\", \"Foster\", \"W9C 7J7\", \"Panama\" ],\n\t[ \"180\", \"Todd\", \"Barnett\", \"T9R 7J4\", \"Seychelles\" ],\n\t[ \"181\", \"Byron\", \"Meyers\", \"J4G 9P2\", \"Congo\" ],\n\t[ \"182\", \"Hadassah\", \"Barnett\", \"U1A 8V3\", \"Paraguay\" ],\n\t[ \"183\", \"Hermione\", \"Luna\", \"L4G 2E5\", \"New Zealand\" ],\n\t[ \"184\", \"Marsden\", \"Alvarado\", \"U1V 1Y4\", \"Aruba\" ],\n\t[ \"185\", \"Britanni\", \"Gregory\", \"C8O 2T4\", \"Kazakhstan\" ],\n\t[ \"186\", \"Brenda\", \"Oneil\", \"R9Q 9B7\", \"Gibraltar\" ],\n\t[ \"187\", \"Reuben\", \"Hopkins\", \"C2D 9D0\", \"Bhutan\" ],\n\t[ \"188\", \"Sonia\", \"Sandoval\", \"Y2G 5I0\", \"Guatemala\" ],\n\t[ \"189\", \"Yasir\", \"Holcomb\", \"A1H 6Y3\", \"Angola\" ],\n\t[ \"190\", \"Aristotle\", \"Rosa\", \"51870\", \"Indonesia\" ],\n\t[ \"191\", \"Uriah\", \"Blair\", \"X8K 1B9\", \"Suriname\" ],\n\t[ \"192\", \"Vaughan\", \"Sharp\", \"L2F 5N8\", \"Faroe Islands\" ],\n\t[ \"193\", \"Cooper\", \"Beard\", \"80399\", \"United States Minor Outlying Islands\" ],\n\t[ \"194\", \"Riley\", \"Greene\", \"44728\", \"Russian Federation\" ],\n\t[ \"195\", \"Rashad\", \"Flowers\", \"L6N 8U7\", \"Mongolia\" ],\n\t[ \"196\", \"Yvonne\", \"Wilson\", \"18599\", \"Svalbard and Jan Mayen\" ],\n\t[ \"197\", \"Martena\", \"Ayers\", \"A8Z 5F7\", \"Oman\" ],\n\t[ \"198\", \"Eagan\", \"Cline\", \"T9P 4L4\", \"Solomon Islands\" ],\n\t[ \"199\", \"Dawn\", \"Carrillo\", \"T6O 6E5\", \"Malawi\" ],\n\t[ \"200\", \"Ali\", \"Singleton\", \"G6F 3B4\", \"Italy\" ],\n\t[ \"201\", \"Christopher\", \"Beach\", \"01655\", \"Palau\" ],\n\t[ \"202\", \"Emma\", \"Cummings\", \"W1B 4R6\", \"Dominica\" ],\n\t[ \"203\", \"Ishmael\", \"Gray\", \"76928\", \"Egypt\" ],\n\t[ \"204\", \"Megan\", \"Hines\", \"F7X 2X5\", \"New Zealand\" ],\n\t[ \"205\", \"Emmanuel\", \"Steele\", \"09729\", \"Netherlands\" ],\n\t[ \"206\", \"Alea\", \"Burris\", \"08485\", \"Guatemala\" ],\n\t[ \"207\", \"Martina\", \"Todd\", \"46863\", \"Christmas Island\" ],\n\t[ \"208\", \"Len\", \"Valentine\", \"S6Z 5S8\", \"Slovenia\" ],\n\t[ \"209\", \"Jorden\", \"Salazar\", \"U4D 8H6\", \"Austria\" ],\n\t[ \"210\", \"Yvette\", \"Bradford\", \"17275\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"211\", \"Elvis\", \"Mcmahon\", \"27586\", \"Marshall Islands\" ],\n\t[ \"212\", \"Gray\", \"Bonner\", \"N4V 3U9\", \"Moldova\" ],\n\t[ \"213\", \"Yoshi\", \"Singleton\", \"86603\", \"United Kingdom\" ],\n\t[ \"214\", \"Amena\", \"Burks\", \"93820\", \"Reunion\" ],\n\t[ \"215\", \"Ocean\", \"Maldonado\", \"72026\", \"Ireland\" ],\n\t[ \"216\", \"Allen\", \"Foley\", \"75363\", \"Kiribati\" ],\n\t[ \"217\", \"Duncan\", \"Jimenez\", \"H3H 3G6\", \"Oman\" ],\n\t[ \"218\", \"Ira\", \"Maxwell\", \"53136\", \"French Polynesia\" ],\n\t[ \"219\", \"Astra\", \"Moon\", \"D7W 8G2\", \"Dominican Republic\" ],\n\t[ \"220\", \"Orson\", \"Myers\", \"06049\", \"Mali\" ],\n\t[ \"221\", \"Brandon\", \"Estes\", \"D2B 7P2\", \"Kenya\" ],\n\t[ \"222\", \"Halee\", \"Luna\", \"54733\", \"Moldova\" ],\n\t[ \"223\", \"Jillian\", \"Gonzalez\", \"E8W 3L9\", \"Ecuador\" ],\n\t[ \"224\", \"Julie\", \"Acosta\", \"X7M 1T2\", \"Equatorial Guinea\" ],\n\t[ \"225\", \"Quemby\", \"Foster\", \"48596\", \"Eritrea\" ],\n\t[ \"226\", \"Erich\", \"Chavez\", \"W4P 7G8\", \"Mayotte\" ],\n\t[ \"227\", \"Roary\", \"Mcknight\", \"K9K 2K4\", \"Chile\" ],\n\t[ \"228\", \"Mufutau\", \"Henderson\", \"81377\", \"Mayotte\" ],\n\t[ \"229\", \"Herman\", \"Ferguson\", \"69405\", \"Japan\" ],\n\t[ \"230\", \"Abdul\", \"Franks\", \"L1V 8X2\", \"Portugal\" ],\n\t[ \"231\", \"Dominic\", \"Logan\", \"98770\", \"Saint Lucia\" ],\n\t[ \"232\", \"Isadora\", \"Solis\", \"Y3A 6H5\", \"Portugal\" ],\n\t[ \"233\", \"Lester\", \"Davis\", \"30339\", \"British Indian Ocean Territory\" ],\n\t[ \"234\", \"Joel\", \"Rojas\", \"N8E 5T9\", \"Bahrain\" ],\n\t[ \"235\", \"Quinlan\", \"Carroll\", \"55785\", \"Australia\" ],\n\t[ \"236\", \"Guinevere\", \"Pickett\", \"A7Y 3V3\", \"Netherlands Antilles\" ],\n\t[ \"237\", \"Nita\", \"Hopkins\", \"88370\", \"Albania\" ],\n\t[ \"238\", \"Hayley\", \"Buckley\", \"F1V 7P5\", \"Togo\" ],\n\t[ \"239\", \"Colorado\", \"Reyes\", \"18798\", \"Congo\" ],\n\t[ \"240\", \"Tashya\", \"Bartlett\", \"48537\", \"Sierra Leone\" ],\n\t[ \"241\", \"Isabella\", \"Keith\", \"48878\", \"Kiribati\" ],\n\t[ \"242\", \"Jessica\", \"Noble\", \"D6C 9T9\", \"Svalbard and Jan Mayen\" ],\n\t[ \"243\", \"Cairo\", \"Edwards\", \"40598\", \"Nepal\" ],\n\t[ \"244\", \"Camille\", \"Bradley\", \"I4U 8F6\", \"Fiji\" ],\n\t[ \"245\", \"Quin\", \"Mcgee\", \"O5D 2P0\", \"Poland\" ],\n\t[ \"246\", \"Rina\", \"Guzman\", \"44940\", \"Bahrain\" ],\n\t[ \"247\", \"Glenna\", \"Kirkland\", \"Z1L 4W2\", \"San Marino\" ],\n\t[ \"248\", \"Tarik\", \"Todd\", \"77228\", \"Turks and Caicos Islands\" ],\n\t[ \"249\", \"Yardley\", \"Burris\", \"M6U 9D7\", \"New Caledonia\" ],\n\t[ \"250\", \"Hashim\", \"Casey\", \"17722\", \"Lesotho\" ],\n\t[ \"251\", \"Maggie\", \"Raymond\", \"62540\", \"Uganda\" ],\n\t[ \"252\", \"Christian\", \"Mcdonald\", \"R8K 2M1\", \"United Arab Emirates\" ],\n\t[ \"253\", \"Colt\", \"Cobb\", \"75393\", \"Moldova\" ],\n\t[ \"254\", \"Aline\", \"Graves\", \"I1C 9I6\", \"Holy See (Vatican City State)\" ],\n\t[ \"255\", \"Farrah\", \"Cannon\", \"H5W 2Y0\", \"Bhutan\" ],\n\t[ \"256\", \"Wynne\", \"Ayers\", \"B6X 6Y8\", \"Western Sahara\" ],\n\t[ \"257\", \"Teegan\", \"Avery\", \"33643\", \"San Marino\" ],\n\t[ \"258\", \"Shana\", \"Sloan\", \"K9P 9V7\", \"Gabon\" ],\n\t[ \"259\", \"Britanney\", \"Cook\", \"Y5D 6K7\", \"Romania\" ],\n\t[ \"260\", \"Kuame\", \"Schroeder\", \"12859\", \"Syrian Arab Republic\" ],\n\t[ \"261\", \"Valentine\", \"Joseph\", \"P2S 6T6\", \"Mayotte\" ],\n\t[ \"262\", \"Joelle\", \"Keller\", \"U6F 3T7\", \"Fiji\" ],\n\t[ \"263\", \"Elaine\", \"Hickman\", \"28056\", \"Tuvalu\" ],\n\t[ \"264\", \"Ivor\", \"Malone\", \"H2Z 5X5\", \"Virgin Islands, British\" ],\n\t[ \"265\", \"Maris\", \"Jefferson\", \"12474\", \"Czech Republic\" ],\n\t[ \"266\", \"Josephine\", \"Zimmerman\", \"Z5J 2I4\", \"Angola\" ],\n\t[ \"267\", \"Baker\", \"Wooten\", \"X4K 2L8\", \"Austria\" ],\n\t[ \"268\", \"Alyssa\", \"Mitchell\", \"97712\", \"Antarctica\" ],\n\t[ \"269\", \"Carlos\", \"Pearson\", \"85838\", \"Gambia\" ],\n\t[ \"270\", \"Luke\", \"Richardson\", \"73867\", \"Christmas Island\" ],\n\t[ \"271\", \"Davis\", \"Gardner\", \"U2E 4D9\", \"Chile\" ],\n\t[ \"272\", \"Thomas\", \"Conner\", \"92487\", \"Mozambique\" ],\n\t[ \"273\", \"Kieran\", \"Baird\", \"X9G 6G1\", \"Iceland\" ],\n\t[ \"274\", \"Cheyenne\", \"Morris\", \"F5V 4S2\", \"Greece\" ],\n\t[ \"275\", \"Hillary\", \"Reeves\", \"89804\", \"Slovakia\" ],\n\t[ \"276\", \"Ryder\", \"Long\", \"32725\", \"New Caledonia\" ],\n\t[ \"277\", \"Ariel\", \"Colon\", \"50675\", \"Estonia\" ],\n\t[ \"278\", \"Vanna\", \"Hess\", \"79057\", \"Saudi Arabia\" ],\n\t[ \"279\", \"Hayley\", \"Cherry\", \"B5E 9X4\", \"United States Minor Outlying Islands\" ],\n\t[ \"280\", \"Knox\", \"Blair\", \"75626\", \"Central African Republic\" ],\n\t[ \"281\", \"Astra\", \"Mcdaniel\", \"24493\", \"Bermuda\" ],\n\t[ \"282\", \"Teegan\", \"Ford\", \"A8U 1K9\", \"Iran, Islamic Republic of\" ],\n\t[ \"283\", \"Harrison\", \"Jackson\", \"43519\", \"Marshall Islands\" ],\n\t[ \"284\", \"Melyssa\", \"Lawson\", \"O7E 8E6\", \"Belize\" ],\n\t[ \"285\", \"Shaine\", \"Francis\", \"Q5K 5I4\", \"India\" ],\n\t[ \"286\", \"August\", \"Reed\", \"S9R 1O8\", \"Ghana\" ],\n\t[ \"287\", \"Aphrodite\", \"Zimmerman\", \"28336\", \"Lesotho\" ],\n\t[ \"288\", \"Declan\", \"Walters\", \"08662\", \"Rwanda\" ],\n\t[ \"289\", \"Brody\", \"Pate\", \"G2G 9D9\", \"Serbia and Montenegro\" ],\n\t[ \"290\", \"Bradley\", \"Odom\", \"L2R 6Z9\", \"Jordan\" ],\n\t[ \"291\", \"Phillip\", \"Cleveland\", \"E4D 1B7\", \"Paraguay\" ],\n\t[ \"292\", \"Silas\", \"Wiggins\", \"F9F 5X3\", \"Bahrain\" ],\n\t[ \"293\", \"Keely\", \"Donaldson\", \"B5H 7F2\", \"Vanuatu\" ],\n\t[ \"294\", \"Hammett\", \"Lancaster\", \"H2P 4E6\", \"Svalbard and Jan Mayen\" ],\n\t[ \"295\", \"Kiara\", \"Clarke\", \"50885\", \"Thailand\" ],\n\t[ \"296\", \"Ayanna\", \"Wiley\", \"20773\", \"Morocco\" ],\n\t[ \"297\", \"Tashya\", \"Stanley\", \"F5J 5R9\", \"New Caledonia\" ],\n\t[ \"298\", \"Margaret\", \"Barker\", \"J5A 9N8\", \"Marshall Islands\" ],\n\t[ \"299\", \"Xandra\", \"English\", \"92299\", \"Korea, Republic of\" ],\n\t[ \"300\", \"Jane\", \"Brock\", \"86140\", \"Yemen\" ],\n\t[ \"301\", \"Lunea\", \"Garrett\", \"96730\", \"New Caledonia\" ],\n\t[ \"302\", \"Slade\", \"Everett\", \"16105\", \"Malawi\" ],\n\t[ \"303\", \"Scott\", \"Booker\", \"G8V 2R4\", \"Macedonia\" ],\n\t[ \"304\", \"Candice\", \"Decker\", \"E5R 2D4\", \"China\" ],\n\t[ \"305\", \"Armando\", \"Bridges\", \"87959\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"306\", \"Clayton\", \"Whitley\", \"Q6O 4M7\", \"British Indian Ocean Territory\" ],\n\t[ \"307\", \"Driscoll\", \"Duncan\", \"M2J 9V5\", \"Argentina\" ],\n\t[ \"308\", \"Devin\", \"Stafford\", \"L8F 2V7\", \"Svalbard and Jan Mayen\" ],\n\t[ \"309\", \"Bell\", \"York\", \"E5B 7X5\", \"Lebanon\" ],\n\t[ \"310\", \"Haley\", \"Becker\", \"19759\", \"Bhutan\" ],\n\t[ \"311\", \"Chava\", \"Santiago\", \"04396\", \"Israel\" ],\n\t[ \"312\", \"David\", \"Mccall\", \"62087\", \"Norfolk Island\" ],\n\t[ \"313\", \"Clinton\", \"Jacobson\", \"06168\", \"Guam\" ],\n\t[ \"314\", \"Melvin\", \"Kaufman\", \"C4E 9N6\", \"Gambia\" ],\n\t[ \"315\", \"Dai\", \"Shepherd\", \"37490\", \"Saudi Arabia\" ],\n\t[ \"316\", \"Zahir\", \"Chase\", \"44340\", \"Turkey\" ],\n\t[ \"317\", \"Leilani\", \"Parrish\", \"62576\", \"Cocos (Keeling) Islands\" ],\n\t[ \"318\", \"Oleg\", \"Wilkins\", \"Z7S 8Z4\", \"Latvia\" ],\n\t[ \"319\", \"Pearl\", \"Pena\", \"82526\", \"Saudi Arabia\" ],\n\t[ \"320\", \"Kelly\", \"Moody\", \"W7U 5Y3\", \"Burundi\" ],\n\t[ \"321\", \"Marcia\", \"Kennedy\", \"85952\", \"Panama\" ],\n\t[ \"322\", \"Cailin\", \"Burnett\", \"M2Z 3L5\", \"Guyana\" ],\n\t[ \"323\", \"Ciara\", \"Small\", \"X6C 6M6\", \"Tanzania, United Republic of\" ],\n\t[ \"324\", \"Lillian\", \"Massey\", \"Z8A 5U5\", \"Algeria\" ],\n\t[ \"325\", \"Garrett\", \"Elliott\", \"R5P 6T0\", \"Canada\" ],\n\t[ \"326\", \"Inga\", \"Daniels\", \"40156\", \"Cocos (Keeling) Islands\" ],\n\t[ \"327\", \"Barry\", \"Pena\", \"03593\", \"Tonga\" ],\n\t[ \"328\", \"Penelope\", \"Mcintyre\", \"29293\", \"Burkina Faso\" ],\n\t[ \"329\", \"Dante\", \"Kirk\", \"74038\", \"Lesotho\" ],\n\t[ \"330\", \"Owen\", \"Cole\", \"17968\", \"Rwanda\" ],\n\t[ \"331\", \"Brittany\", \"Edwards\", \"24507\", \"Paraguay\" ],\n\t[ \"332\", \"Zeph\", \"Bentley\", \"12000\", \"Guam\" ],\n\t[ \"333\", \"Ruth\", \"Palmer\", \"E8V 9A5\", \"Ghana\" ],\n\t[ \"334\", \"Driscoll\", \"Ellis\", \"X1X 2N5\", \"Angola\" ],\n\t[ \"335\", \"Mohammad\", \"Guerra\", \"Y9N 3Y5\", \"Mongolia\" ],\n\t[ \"336\", \"Clio\", \"Baldwin\", \"67557\", \"Morocco\" ],\n\t[ \"337\", \"Virginia\", \"Duncan\", \"J8D 4T2\", \"Haiti\" ],\n\t[ \"338\", \"Dieter\", \"Sanchez\", \"H7E 2H4\", \"Romania\" ],\n\t[ \"339\", \"Quinn\", \"Hurst\", \"K4E 2X6\", \"Reunion\" ],\n\t[ \"340\", \"Coby\", \"Kelly\", \"S1H 8N0\", \"Equatorial Guinea\" ],\n\t[ \"341\", \"Raja\", \"Solis\", \"S5G 9T5\", \"Grenada\" ],\n\t[ \"342\", \"Jordan\", \"Riddle\", \"J7M 5X3\", \"Svalbard and Jan Mayen\" ],\n\t[ \"343\", \"Dora\", \"Knox\", \"25054\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"344\", \"Brendan\", \"Reilly\", \"U9U 3F7\", \"Armenia\" ],\n\t[ \"345\", \"Melyssa\", \"Reyes\", \"11285\", \"Viet Nam\" ],\n\t[ \"346\", \"Knox\", \"Rivera\", \"N8Z 7J0\", \"Nepal\" ],\n\t[ \"347\", \"Quynn\", \"Irwin\", \"26524\", \"Chile\" ],\n\t[ \"348\", \"Colin\", \"Coleman\", \"22833\", \"United Arab Emirates\" ],\n\t[ \"349\", \"Sybil\", \"Delgado\", \"99947\", \"Belize\" ],\n\t[ \"350\", \"Macaulay\", \"Salinas\", \"48521\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"351\", \"Garrison\", \"Hogan\", \"68950\", \"India\" ],\n\t[ \"352\", \"Ronan\", \"Guerra\", \"55445\", \"Angola\" ],\n\t[ \"353\", \"Regina\", \"Andrews\", \"H3E 3T0\", \"Central African Republic\" ],\n\t[ \"354\", \"Colorado\", \"Joyce\", \"V6X 5K8\", \"Anguilla\" ],\n\t[ \"355\", \"Basia\", \"Banks\", \"85049\", \"Grenada\" ],\n\t[ \"356\", \"Adena\", \"Berg\", \"04135\", \"New Caledonia\" ],\n\t[ \"357\", \"Wade\", \"Richardson\", \"C8M 9J3\", \"Dominican Republic\" ],\n\t[ \"358\", \"Cody\", \"Montoya\", \"22018\", \"Solomon Islands\" ],\n\t[ \"359\", \"Faith\", \"Barnett\", \"61475\", \"China\" ],\n\t[ \"360\", \"Cody\", \"Witt\", \"C8I 2Q8\", \"Congo\" ],\n\t[ \"361\", \"Brenden\", \"Carlson\", \"74007\", \"Marshall Islands\" ],\n\t[ \"362\", \"Gil\", \"Brooks\", \"U4S 5N1\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"363\", \"Kirestin\", \"Watts\", \"H8I 1D5\", \"Myanmar\" ],\n\t[ \"364\", \"Amelia\", \"Gilliam\", \"11461\", \"Chile\" ],\n\t[ \"365\", \"Noelani\", \"Rhodes\", \"83320\", \"Cuba\" ],\n\t[ \"366\", \"Len\", \"Trevino\", \"W9F 2U5\", \"Armenia\" ],\n\t[ \"367\", \"Galvin\", \"Middleton\", \"86707\", \"Thailand\" ],\n\t[ \"368\", \"Germaine\", \"Bridges\", \"90283\", \"Japan\" ],\n\t[ \"369\", \"Rose\", \"Hines\", \"W7L 7Q6\", \"Congo\" ],\n\t[ \"370\", \"Hop\", \"Mueller\", \"I3E 2X8\", \"Angola\" ],\n\t[ \"371\", \"Iliana\", \"Williamson\", \"56758\", \"Lebanon\" ],\n\t[ \"372\", \"Raja\", \"Price\", \"49603\", \"Armenia\" ],\n\t[ \"373\", \"Jeanette\", \"Hatfield\", \"E3K 5N5\", \"India\" ],\n\t[ \"374\", \"Brittany\", \"Christensen\", \"04750\", \"Uruguay\" ],\n\t[ \"375\", \"Inga\", \"Prince\", \"D4X 6J5\", \"Switzerland\" ],\n\t[ \"376\", \"Cherokee\", \"Ballard\", \"U1O 1M0\", \"Rwanda\" ],\n\t[ \"377\", \"Deirdre\", \"Watson\", \"46983\", \"Sri Lanka\" ],\n\t[ \"378\", \"Amanda\", \"Parrish\", \"99838\", \"Hong Kong\" ],\n\t[ \"379\", \"Leo\", \"Shannon\", \"L3N 3J0\", \"Brunei Darussalam\" ],\n\t[ \"380\", \"Kimberly\", \"Clemons\", \"88734\", \"South Africa\" ],\n\t[ \"381\", \"Seth\", \"Langley\", \"D6A 1Q9\", \"Guyana\" ],\n\t[ \"382\", \"Carol\", \"Blankenship\", \"X5N 2A7\", \"Angola\" ],\n\t[ \"383\", \"Dora\", \"Flores\", \"F8F 1O5\", \"Poland\" ],\n\t[ \"384\", \"Chava\", \"Dickson\", \"P8B 6W6\", \"Comoros\" ],\n\t[ \"385\", \"Trevor\", \"Mcdowell\", \"31382\", \"Solomon Islands\" ],\n\t[ \"386\", \"Alec\", \"Valentine\", \"P2R 4K7\", \"Greenland\" ],\n\t[ \"387\", \"Philip\", \"Jenkins\", \"Q7X 5U5\", \"Aruba\" ],\n\t[ \"388\", \"Kim\", \"Bowen\", \"69873\", \"Saint Kitts and Nevis\" ],\n\t[ \"389\", \"Allegra\", \"Oconnor\", \"X3Y 1X3\", \"Holy See (Vatican City State)\" ],\n\t[ \"390\", \"Daria\", \"Briggs\", \"A7Z 7P4\", \"Serbia and Montenegro\" ],\n\t[ \"391\", \"Amelia\", \"Wiley\", \"D4S 1G5\", \"Montserrat\" ],\n\t[ \"392\", \"Erica\", \"Aguirre\", \"H5L 2O3\", \"Andorra\" ],\n\t[ \"393\", \"Kibo\", \"Sawyer\", \"30638\", \"Guyana\" ],\n\t[ \"394\", \"Jackson\", \"Meyers\", \"P4N 9D6\", \"Bangladesh\" ],\n\t[ \"395\", \"Kirk\", \"Baxter\", \"F3M 7S6\", \"Estonia\" ],\n\t[ \"396\", \"Sybil\", \"Christian\", \"B3Q 2X0\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"397\", \"Ina\", \"Mercer\", \"N4S 1K8\", \"Korea\" ],\n\t[ \"398\", \"Kiara\", \"Whitehead\", \"86023\", \"Nicaragua\" ],\n\t[ \"399\", \"Vielka\", \"Hays\", \"29845\", \"Malta\" ],\n\t[ \"400\", \"Stacey\", \"Carlson\", \"53218\", \"Cook Islands\" ],\n\t[ \"401\", \"Selma\", \"Lloyd\", \"78256\", \"Turkey\" ],\n\t[ \"402\", \"Rhoda\", \"Mcintosh\", \"G8X 1C8\", \"Guatemala\" ],\n\t[ \"403\", \"Teagan\", \"Ochoa\", \"99752\", \"Barbados\" ],\n\t[ \"404\", \"Rebecca\", \"Carver\", \"82661\", \"Saint Kitts and Nevis\" ],\n\t[ \"405\", \"Yael\", \"Woodward\", \"66095\", \"Niger\" ],\n\t[ \"406\", \"Calvin\", \"Huffman\", \"82172\", \"Somalia\" ],\n\t[ \"407\", \"Sopoline\", \"Walters\", \"K5L 3I7\", \"Spain\" ],\n\t[ \"408\", \"Hollee\", \"Powell\", \"05572\", \"Samoa\" ],\n\t[ \"409\", \"Fiona\", \"Frank\", \"74456\", \"Timor-leste\" ],\n\t[ \"410\", \"Alana\", \"Hubbard\", \"76011\", \"Lithuania\" ],\n\t[ \"411\", \"Lillian\", \"Garcia\", \"J5Z 2O5\", \"Sierra Leone\" ],\n\t[ \"412\", \"Tad\", \"Mcleod\", \"B6A 8Z4\", \"Australia\" ],\n\t[ \"413\", \"Hadassah\", \"Hall\", \"47417\", \"China\" ],\n\t[ \"414\", \"Regan\", \"Summers\", \"X4L 4I6\", \"Honduras\" ],\n\t[ \"415\", \"Herrod\", \"Erickson\", \"R8G 3V0\", \"Israel\" ],\n\t[ \"416\", \"Autumn\", \"Rojas\", \"31205\", \"Cocos (Keeling) Islands\" ],\n\t[ \"417\", \"Castor\", \"Mooney\", \"92737\", \"Grenada\" ],\n\t[ \"418\", \"Wesley\", \"Holman\", \"57125\", \"Greenland\" ],\n\t[ \"419\", \"Kitra\", \"Wooten\", \"Q6X 4Y0\", \"Mongolia\" ],\n\t[ \"420\", \"Buckminster\", \"Rice\", \"U8B 7B8\", \"Tokelau\" ],\n\t[ \"421\", \"Xavier\", \"Hardin\", \"18280\", \"Iran, Islamic Republic of\" ],\n\t[ \"422\", \"Sopoline\", \"Fleming\", \"78437\", \"Singapore\" ],\n\t[ \"423\", \"Sydney\", \"Salinas\", \"23801\", \"Cook Islands\" ],\n\t[ \"424\", \"Bethany\", \"Rosales\", \"89650\", \"United States\" ],\n\t[ \"425\", \"Deirdre\", \"Hensley\", \"F3X 1B7\", \"Micronesia\" ],\n\t[ \"426\", \"Bernard\", \"Vargas\", \"S4D 9T0\", \"Uzbekistan\" ],\n\t[ \"427\", \"Merrill\", \"Compton\", \"17713\", \"Suriname\" ],\n\t[ \"428\", \"Carly\", \"Baird\", \"D3H 5G3\", \"United States Minor Outlying Islands\" ],\n\t[ \"429\", \"Grace\", \"Phelps\", \"64695\", \"Nauru\" ],\n\t[ \"430\", \"Kareem\", \"Stone\", \"65572\", \"Netherlands\" ],\n\t[ \"431\", \"Susan\", \"Newton\", \"04627\", \"Anguilla\" ],\n\t[ \"432\", \"Laura\", \"Miranda\", \"E1G 2R7\", \"Finland\" ],\n\t[ \"433\", \"Madaline\", \"Pugh\", \"J9A 9M5\", \"Senegal\" ],\n\t[ \"434\", \"Sophia\", \"Mendez\", \"33789\", \"Timor-leste\" ],\n\t[ \"435\", \"Roary\", \"Greene\", \"61774\", \"Canada\" ],\n\t[ \"436\", \"Amos\", \"Gilliam\", \"94933\", \"Sri Lanka\" ],\n\t[ \"437\", \"Ivory\", \"Joyner\", \"15379\", \"San Marino\" ],\n\t[ \"438\", \"Jorden\", \"Robbins\", \"43400\", \"Russian Federation\" ],\n\t[ \"439\", \"Merritt\", \"Holcomb\", \"R1I 3C7\", \"Brazil\" ],\n\t[ \"440\", \"Iliana\", \"Johnston\", \"U9W 8N2\", \"Trinidad and Tobago\" ],\n\t[ \"441\", \"Ivana\", \"Patterson\", \"G5O 6A5\", \"Georgia\" ],\n\t[ \"442\", \"Sydney\", \"Mccullough\", \"W9M 2H5\", \"American Samoa\" ],\n\t[ \"443\", \"Alvin\", \"Fulton\", \"X8A 8R5\", \"Antigua and Barbuda\" ],\n\t[ \"444\", \"Alfreda\", \"Lopez\", \"42499\", \"Montserrat\" ],\n\t[ \"445\", \"Ethan\", \"Bird\", \"W9A 8M1\", \"British Indian Ocean Territory\" ],\n\t[ \"446\", \"Zeus\", \"Logan\", \"01682\", \"San Marino\" ],\n\t[ \"447\", \"Nehru\", \"Andrews\", \"W8J 3C8\", \"Dominican Republic\" ],\n\t[ \"448\", \"Donna\", \"Booth\", \"64754\", \"Nepal\" ],\n\t[ \"449\", \"Cruz\", \"Bruce\", \"17429\", \"Burundi\" ],\n\t[ \"450\", \"Ronan\", \"Saunders\", \"69957\", \"South Africa\" ],\n\t[ \"451\", \"Jordan\", \"Barnes\", \"D8K 9L8\", \"Dominica\" ],\n\t[ \"452\", \"Carly\", \"Love\", \"D8Z 3P4\", \"Mauritania\" ],\n\t[ \"453\", \"Mari\", \"George\", \"60260\", \"Japan\" ],\n\t[ \"454\", \"Karly\", \"Hodges\", \"15790\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"455\", \"Rana\", \"Logan\", \"M1R 6Y6\", \"Bosnia and Herzegovina\" ],\n\t[ \"456\", \"Theodore\", \"Sims\", \"C7A 8T2\", \"Barbados\" ],\n\t[ \"457\", \"Quin\", \"Thompson\", \"26884\", \"Bouvet Island\" ],\n\t[ \"458\", \"Kimberley\", \"Sloan\", \"S5T 8E3\", \"Costa Rica\" ],\n\t[ \"459\", \"Upton\", \"Valenzuela\", \"Z6J 6Q1\", \"Macao\" ],\n\t[ \"460\", \"Clinton\", \"Williams\", \"Z3O 7C4\", \"Germany\" ],\n\t[ \"461\", \"Samson\", \"Mathis\", \"G1T 1V9\", \"Senegal\" ],\n\t[ \"462\", \"Michelle\", \"Frost\", \"87113\", \"Serbia and Montenegro\" ],\n\t[ \"463\", \"Tyrone\", \"Coffey\", \"80705\", \"Albania\" ],\n\t[ \"464\", \"Alea\", \"Delaney\", \"E4S 4K4\", \"Guyana\" ],\n\t[ \"465\", \"Dominique\", \"Schwartz\", \"81368\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"466\", \"Benedict\", \"Norton\", \"D1C 9C8\", \"Cyprus\" ],\n\t[ \"467\", \"Vaughan\", \"Stein\", \"R7K 1L8\", \"Egypt\" ],\n\t[ \"468\", \"Charles\", \"Foley\", \"20434\", \"Anguilla\" ],\n\t[ \"469\", \"Arden\", \"Ramos\", \"54065\", \"Gibraltar\" ],\n\t[ \"470\", \"Dillon\", \"Patel\", \"L6H 1H6\", \"Liberia\" ],\n\t[ \"471\", \"Gretchen\", \"Davenport\", \"57188\", \"Equatorial Guinea\" ],\n\t[ \"472\", \"Ivy\", \"Randall\", \"52617\", \"Costa Rica\" ],\n\t[ \"473\", \"Brett\", \"Baird\", \"45791\", \"Hungary\" ],\n\t[ \"474\", \"Wyoming\", \"Sparks\", \"11266\", \"Luxembourg\" ],\n\t[ \"475\", \"Rashad\", \"Roy\", \"47012\", \"Guam\" ],\n\t[ \"476\", \"Sopoline\", \"Le\", \"M1G 2P8\", \"United Arab Emirates\" ],\n\t[ \"477\", \"Ursa\", \"Haynes\", \"53774\", \"British Indian Ocean Territory\" ],\n\t[ \"478\", \"Maia\", \"Vincent\", \"26773\", \"New Caledonia\" ],\n\t[ \"479\", \"Salvador\", \"Pace\", \"S9E 2C4\", \"Egypt\" ],\n\t[ \"480\", \"Bethany\", \"Wilcox\", \"F2H 7N0\", \"Uzbekistan\" ],\n\t[ \"481\", \"Sara\", \"Brooks\", \"08176\", \"Holy See (Vatican City State)\" ],\n\t[ \"482\", \"Lillith\", \"Sampson\", \"75576\", \"British Indian Ocean Territory\" ],\n\t[ \"483\", \"Brynne\", \"Browning\", \"N4K 7P6\", \"Peru\" ],\n\t[ \"484\", \"Beck\", \"Tran\", \"06815\", \"Cambodia\" ],\n\t[ \"485\", \"Peter\", \"Hurley\", \"05770\", \"Rwanda\" ],\n\t[ \"486\", \"Buffy\", \"Sharpe\", \"H8F 8G6\", \"Georgia\" ],\n\t[ \"487\", \"Harrison\", \"Cross\", \"Y1A 1R8\", \"United Kingdom\" ],\n\t[ \"488\", \"Ursa\", \"Wolf\", \"J8C 9Q8\", \"French Polynesia\" ],\n\t[ \"489\", \"Nayda\", \"Vasquez\", \"05523\", \"Taiwan, Province of China\" ],\n\t[ \"490\", \"Gretchen\", \"Walters\", \"28628\", \"Seychelles\" ],\n\t[ \"491\", \"Adrian\", \"Hickman\", \"17956\", \"El Salvador\" ],\n\t[ \"492\", \"Laura\", \"Moon\", \"32103\", \"Myanmar\" ],\n\t[ \"493\", \"Kellie\", \"Barnett\", \"L5Z 2U8\", \"Saint Helena\" ],\n\t[ \"494\", \"Illana\", \"Stanton\", \"Z5D 2G0\", \"Australia\" ],\n\t[ \"495\", \"Jescie\", \"Santiago\", \"D9L 4B5\", \"Cambodia\" ],\n\t[ \"496\", \"Laura\", \"Hopkins\", \"X6V 9S5\", \"Netherlands Antilles\" ],\n\t[ \"497\", \"Vielka\", \"Harding\", \"U6A 9T2\", \"Cambodia\" ],\n\t[ \"498\", \"Walter\", \"Gentry\", \"L3X 9Q9\", \"Slovenia\" ],\n\t[ \"499\", \"Sara\", \"Atkinson\", \"67146\", \"Guinea\" ],\n\t[ \"500\", \"Yolanda\", \"Chambers\", \"Q8D 3W0\", \"Zimbabwe\" ],\n\t[ \"501\", \"Josiah\", \"Villarreal\", \"I1V 6Y7\", \"Burkina Faso\" ],\n\t[ \"502\", \"Hayfa\", \"Bowman\", \"77148\", \"Saudi Arabia\" ],\n\t[ \"503\", \"Colette\", \"Conley\", \"41232\", \"Estonia\" ],\n\t[ \"504\", \"Lana\", \"Doyle\", \"32962\", \"Cuba\" ],\n\t[ \"505\", \"Keegan\", \"Goodwin\", \"M2P 1X3\", \"Cocos (Keeling) Islands\" ],\n\t[ \"506\", \"Nina\", \"Cross\", \"49580\", \"Germany\" ],\n\t[ \"507\", \"Xenos\", \"Cervantes\", \"K6X 7W8\", \"Mauritius\" ],\n\t[ \"508\", \"Jared\", \"Hester\", \"30156\", \"Uzbekistan\" ],\n\t[ \"509\", \"Damon\", \"Curry\", \"U2J 2D8\", \"Pitcairn\" ],\n\t[ \"510\", \"Amery\", \"Savage\", \"O1S 2Z4\", \"Turkmenistan\" ],\n\t[ \"511\", \"Brian\", \"Wilkinson\", \"J6O 4T0\", \"Luxembourg\" ],\n\t[ \"512\", \"Ivory\", \"Mckinney\", \"L3E 8M2\", \"Lithuania\" ],\n\t[ \"513\", \"Eric\", \"Dalton\", \"Y1L 6F4\", \"Ethiopia\" ],\n\t[ \"514\", \"Brandon\", \"Callahan\", \"K6Q 9B4\", \"Haiti\" ],\n\t[ \"515\", \"Phillip\", \"Mclean\", \"18836\", \"Ethiopia\" ],\n\t[ \"516\", \"Carly\", \"Greer\", \"16811\", \"Mayotte\" ],\n\t[ \"517\", \"Stone\", \"Ware\", \"58795\", \"Moldova\" ],\n\t[ \"518\", \"Xena\", \"Hayden\", \"97158\", \"Chad\" ],\n\t[ \"519\", \"Catherine\", \"Leonard\", \"77868\", \"Azerbaijan\" ],\n\t[ \"520\", \"Bernard\", \"Horton\", \"04270\", \"Yemen\" ],\n\t[ \"521\", \"Olga\", \"Richmond\", \"89169\", \"Lebanon\" ],\n\t[ \"522\", \"Iris\", \"Cummings\", \"78836\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"523\", \"Beau\", \"Mccall\", \"78638\", \"Monaco\" ],\n\t[ \"524\", \"Michael\", \"Humphrey\", \"Q1A 2W9\", \"Tokelau\" ],\n\t[ \"525\", \"Oren\", \"Stevens\", \"F4V 9G7\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"526\", \"Ima\", \"Shelton\", \"19295\", \"Mozambique\" ],\n\t[ \"527\", \"Merritt\", \"Morrison\", \"K6W 5R0\", \"Georgia\" ],\n\t[ \"528\", \"Vera\", \"Cherry\", \"54993\", \"Angola\" ],\n\t[ \"529\", \"Grant\", \"Turner\", \"B4V 2J0\", \"Saint Helena\" ],\n\t[ \"530\", \"Odette\", \"Snyder\", \"N9L 2V8\", \"Chad\" ],\n\t[ \"531\", \"Uma\", \"Stewart\", \"E9A 6X9\", \"Bhutan\" ],\n\t[ \"532\", \"Kylee\", \"Best\", \"11393\", \"Malaysia\" ],\n\t[ \"533\", \"Nicholas\", \"Mercado\", \"85179\", \"Switzerland\" ],\n\t[ \"534\", \"Nathaniel\", \"Stuart\", \"M1Q 6Z6\", \"Mongolia\" ],\n\t[ \"535\", \"Ruth\", \"Conrad\", \"T7G 9V6\", \"Guadeloupe\" ],\n\t[ \"536\", \"Deanna\", \"Dudley\", \"79721\", \"Kiribati\" ],\n\t[ \"537\", \"David\", \"Thornton\", \"C6R 2G3\", \"Netherlands Antilles\" ],\n\t[ \"538\", \"Jane\", \"Ashley\", \"48711\", \"Rwanda\" ],\n\t[ \"539\", \"Nero\", \"Curry\", \"20590\", \"Denmark\" ],\n\t[ \"540\", \"Kellie\", \"Poole\", \"46053\", \"Martinique\" ],\n\t[ \"541\", \"Freya\", \"Burch\", \"W5R 8Y5\", \"Northern Mariana Islands\" ],\n\t[ \"542\", \"Maxwell\", \"Mcbride\", \"D4W 4M3\", \"Paraguay\" ],\n\t[ \"543\", \"Dawn\", \"Sargent\", \"85956\", \"Gibraltar\" ],\n\t[ \"544\", \"Lilah\", \"Matthews\", \"J4D 8A9\", \"Montserrat\" ],\n\t[ \"545\", \"Salvador\", \"Burns\", \"28067\", \"Bhutan\" ],\n\t[ \"546\", \"Ezekiel\", \"Ayala\", \"67153\", \"Wallis and Futuna\" ],\n\t[ \"547\", \"Evan\", \"Barker\", \"83026\", \"Puerto Rico\" ],\n\t[ \"548\", \"Jemima\", \"Case\", \"U3S 7N6\", \"Georgia\" ],\n\t[ \"549\", \"Belle\", \"Mcconnell\", \"H4S 9F8\", \"Angola\" ],\n\t[ \"550\", \"Doris\", \"Mays\", \"57387\", \"Tonga\" ],\n\t[ \"551\", \"Carson\", \"Buchanan\", \"20457\", \"Guatemala\" ],\n\t[ \"552\", \"Calista\", \"Lamb\", \"26851\", \"Gibraltar\" ],\n\t[ \"553\", \"Remedios\", \"Haley\", \"A9K 5M1\", \"Tokelau\" ],\n\t[ \"554\", \"Odette\", \"Mccarty\", \"Y8B 3V4\", \"Marshall Islands\" ],\n\t[ \"555\", \"Libby\", \"Pugh\", \"93261\", \"Netherlands\" ],\n\t[ \"556\", \"Bo\", \"Maldonado\", \"C1H 1K7\", \"Oman\" ],\n\t[ \"557\", \"Cameron\", \"Beasley\", \"41821\", \"Northern Mariana Islands\" ],\n\t[ \"558\", \"Chadwick\", \"Crosby\", \"62855\", \"New Caledonia\" ],\n\t[ \"559\", \"Steven\", \"Barrett\", \"92102\", \"Pakistan\" ],\n\t[ \"560\", \"Jonas\", \"Valdez\", \"N3V 4R9\", \"Bulgaria\" ],\n\t[ \"561\", \"Harlan\", \"Larsen\", \"Z8F 6A0\", \"Cayman Islands\" ],\n\t[ \"562\", \"Iola\", \"Joyner\", \"D1J 4C3\", \"Italy\" ],\n\t[ \"563\", \"Abra\", \"Medina\", \"Q9O 5J2\", \"Cambodia\" ],\n\t[ \"564\", \"Solomon\", \"Davidson\", \"91317\", \"Turkmenistan\" ],\n\t[ \"565\", \"Alisa\", \"Kim\", \"33036\", \"Austria\" ],\n\t[ \"566\", \"Deacon\", \"Silva\", \"Z5L 6M0\", \"Djibouti\" ],\n\t[ \"567\", \"Bree\", \"Landry\", \"43135\", \"Czech Republic\" ],\n\t[ \"568\", \"Molly\", \"Leach\", \"71714\", \"Botswana\" ],\n\t[ \"569\", \"Idona\", \"Cain\", \"A2J 1R8\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"570\", \"Aileen\", \"Salinas\", \"90344\", \"Uzbekistan\" ],\n\t[ \"571\", \"Dominique\", \"Cooper\", \"31803\", \"Sao Tome and Principe\" ],\n\t[ \"572\", \"Lunea\", \"Pollard\", \"S9R 7B0\", \"Sweden\" ],\n\t[ \"573\", \"Leo\", \"Combs\", \"W7E 8T4\", \"Ukraine\" ],\n\t[ \"574\", \"Illiana\", \"Donovan\", \"D8K 3R4\", \"Palau\" ],\n\t[ \"575\", \"Orlando\", \"Vaughan\", \"Q4I 3E3\", \"Bosnia and Herzegovina\" ],\n\t[ \"576\", \"Yuri\", \"Blake\", \"I9W 5U5\", \"Seychelles\" ],\n\t[ \"577\", \"Amanda\", \"Baldwin\", \"19752\", \"Turkmenistan\" ],\n\t[ \"578\", \"Hanna\", \"Emerson\", \"73316\", \"Antigua and Barbuda\" ],\n\t[ \"579\", \"Xyla\", \"Atkins\", \"11151\", \"Uganda\" ],\n\t[ \"580\", \"Nathaniel\", \"Patterson\", \"00391\", \"Portugal\" ],\n\t[ \"581\", \"Naida\", \"Cote\", \"17484\", \"Mauritius\" ],\n\t[ \"582\", \"Scarlett\", \"Little\", \"V8N 8A6\", \"Sao Tome and Principe\" ],\n\t[ \"583\", \"Odessa\", \"Kerr\", \"56456\", \"Sweden\" ],\n\t[ \"584\", \"Kamal\", \"Richardson\", \"F6S 4I1\", \"Algeria\" ],\n\t[ \"585\", \"Griffith\", \"Morton\", \"I5H 2Z0\", \"Vanuatu\" ],\n\t[ \"586\", \"Orli\", \"Santana\", \"48213\", \"Burundi\" ],\n\t[ \"587\", \"Courtney\", \"Cook\", \"R3O 3A9\", \"Cape Verde\" ],\n\t[ \"588\", \"Jolene\", \"Wallace\", \"F6Q 7W8\", \"Zambia\" ],\n\t[ \"589\", \"Bert\", \"Sharp\", \"X7T 7Z8\", \"Paraguay\" ],\n\t[ \"590\", \"Ila\", \"Carver\", \"E4M 7P4\", \"Paraguay\" ],\n\t[ \"591\", \"Merrill\", \"Wall\", \"49416\", \"Fiji\" ],\n\t[ \"592\", \"Hanae\", \"Espinoza\", \"Y6D 6K8\", \"Turkey\" ],\n\t[ \"593\", \"Stephanie\", \"Bond\", \"Z1Q 3P3\", \"Algeria\" ],\n\t[ \"594\", \"Lionel\", \"Leonard\", \"U8O 7G6\", \"Nauru\" ],\n\t[ \"595\", \"Faith\", \"Ramirez\", \"75181\", \"Slovakia\" ],\n\t[ \"596\", \"Fritz\", \"Glass\", \"62878\", \"El Salvador\" ],\n\t[ \"597\", \"Raya\", \"Gardner\", \"L3E 2C7\", \"India\" ],\n\t[ \"598\", \"Brynne\", \"Price\", \"W1S 6O9\", \"Lithuania\" ],\n\t[ \"599\", \"Karen\", \"Gray\", \"O4X 8F6\", \"Albania\" ],\n\t[ \"600\", \"Perry\", \"Goodwin\", \"44266\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"601\", \"Dylan\", \"Glover\", \"76573\", \"Estonia\" ],\n\t[ \"602\", \"Melinda\", \"Holloway\", \"07861\", \"Grenada\" ],\n\t[ \"603\", \"Rahim\", \"Robinson\", \"D7M 1E8\", \"Madagascar\" ],\n\t[ \"604\", \"Ori\", \"Oconnor\", \"10386\", \"Antarctica\" ],\n\t[ \"605\", \"Candace\", \"Preston\", \"03610\", \"Denmark\" ],\n\t[ \"606\", \"Wing\", \"Howe\", \"E6U 3H2\", \"Burundi\" ],\n\t[ \"607\", \"Lucy\", \"Eaton\", \"26436\", \"Guinea\" ],\n\t[ \"608\", \"Ignatius\", \"Blevins\", \"93597\", \"Serbia and Montenegro\" ],\n\t[ \"609\", \"Nadine\", \"Franco\", \"80096\", \"Tonga\" ],\n\t[ \"610\", \"Shoshana\", \"Walters\", \"S4F 5O8\", \"Micronesia\" ],\n\t[ \"611\", \"Remedios\", \"Buckner\", \"29213\", \"Antigua and Barbuda\" ],\n\t[ \"612\", \"Adam\", \"Horne\", \"F8V 1V8\", \"Oman\" ],\n\t[ \"613\", \"Kieran\", \"Saunders\", \"I7A 7Y5\", \"Japan\" ],\n\t[ \"614\", \"Isabelle\", \"Fletcher\", \"K2K 3K5\", \"Norway\" ],\n\t[ \"615\", \"Ryder\", \"Ballard\", \"38518\", \"Tanzania, United Republic of\" ],\n\t[ \"616\", \"Nina\", \"Guerrero\", \"61142\", \"Saint Kitts and Nevis\" ],\n\t[ \"617\", \"Sheila\", \"Poole\", \"E2H 6I6\", \"Denmark\" ],\n\t[ \"618\", \"Melyssa\", \"Mcdaniel\", \"08247\", \"Netherlands Antilles\" ],\n\t[ \"619\", \"Leila\", \"Vang\", \"Q5Z 3S1\", \"United States Minor Outlying Islands\" ],\n\t[ \"620\", \"Grady\", \"Aguilar\", \"R1I 8I8\", \"Slovenia\" ],\n\t[ \"621\", \"Plato\", \"Terrell\", \"23916\", \"Kuwait\" ],\n\t[ \"622\", \"Rama\", \"Perkins\", \"56506\", \"Russian Federation\" ],\n\t[ \"623\", \"Boris\", \"Chaney\", \"66737\", \"Antigua and Barbuda\" ],\n\t[ \"624\", \"Edward\", \"Clarke\", \"30722\", \"Iraq\" ],\n\t[ \"625\", \"Skyler\", \"Wise\", \"53248\", \"Taiwan, Province of China\" ],\n\t[ \"626\", \"Uta\", \"Cox\", \"85242\", \"Malawi\" ],\n\t[ \"627\", \"Lesley\", \"Watkins\", \"26710\", \"Estonia\" ],\n\t[ \"628\", \"Gray\", \"Harrison\", \"C5L 9Y7\", \"Nepal\" ],\n\t[ \"629\", \"Joan\", \"Flores\", \"J5Q 2B9\", \"Tajikistan\" ],\n\t[ \"630\", \"Reece\", \"Lott\", \"85152\", \"Algeria\" ],\n\t[ \"631\", \"Jerome\", \"Faulkner\", \"V1K 3N2\", \"Kiribati\" ],\n\t[ \"632\", \"Jackson\", \"Hudson\", \"85932\", \"Botswana\" ],\n\t[ \"633\", \"Uma\", \"Booker\", \"79755\", \"Senegal\" ],\n\t[ \"634\", \"Katelyn\", \"Gillespie\", \"Q8P 4V9\", \"Eritrea\" ],\n\t[ \"635\", \"Clio\", \"Tillman\", \"67552\", \"Liberia\" ],\n\t[ \"636\", \"Anjolie\", \"Nixon\", \"36615\", \"Botswana\" ],\n\t[ \"637\", \"Nell\", \"Lee\", \"T9S 4R3\", \"French Southern Territories\" ],\n\t[ \"638\", \"Anthony\", \"Aguirre\", \"85443\", \"Morocco\" ],\n\t[ \"639\", \"Aaron\", \"Green\", \"90326\", \"Faroe Islands\" ],\n\t[ \"640\", \"Galvin\", \"Yang\", \"A4X 8H6\", \"Ukraine\" ],\n\t[ \"641\", \"Yoshi\", \"Strickland\", \"52538\", \"Brazil\" ],\n\t[ \"642\", \"Brenden\", \"Kirkland\", \"X7P 8V9\", \"Turks and Caicos Islands\" ],\n\t[ \"643\", \"Bree\", \"Stone\", \"U4L 2H2\", \"Hong Kong\" ],\n\t[ \"644\", \"Quin\", \"Tanner\", \"U4A 1X4\", \"Faroe Islands\" ],\n\t[ \"645\", \"Camilla\", \"Heath\", \"91749\", \"Andorra\" ],\n\t[ \"646\", \"Xaviera\", \"Bullock\", \"I4U 7W0\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"647\", \"Kay\", \"Rowe\", \"59689\", \"Iceland\" ],\n\t[ \"648\", \"Lance\", \"Bond\", \"66558\", \"Spain\" ],\n\t[ \"649\", \"Fredericka\", \"Langley\", \"48782\", \"Cayman Islands\" ],\n\t[ \"650\", \"Charles\", \"Avila\", \"42037\", \"Papua New Guinea\" ],\n\t[ \"651\", \"Ramona\", \"Rios\", \"T5M 3E1\", \"Argentina\" ],\n\t[ \"652\", \"Ezekiel\", \"Young\", \"W8X 4S7\", \"French Polynesia\" ],\n\t[ \"653\", \"Celeste\", \"Dodson\", \"19140\", \"Benin\" ],\n\t[ \"654\", \"Frances\", \"Mcintosh\", \"91246\", \"Swaziland\" ],\n\t[ \"655\", \"Deanna\", \"Hyde\", \"J8P 3T5\", \"Croatia\" ],\n\t[ \"656\", \"Dahlia\", \"Blair\", \"45364\", \"Kazakhstan\" ],\n\t[ \"657\", \"Jade\", \"Hayes\", \"I5Q 3S9\", \"Malawi\" ],\n\t[ \"658\", \"Robin\", \"Bullock\", \"G9Q 2P8\", \"Ireland\" ],\n\t[ \"659\", \"Nasim\", \"Bond\", \"I2V 8N4\", \"Macedonia\" ],\n\t[ \"660\", \"Axel\", \"Pickett\", \"18370\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"661\", \"Pearl\", \"Lee\", \"G1R 3R8\", \"Poland\" ],\n\t[ \"662\", \"Garth\", \"Meyers\", \"90308\", \"Georgia\" ],\n\t[ \"663\", \"Ivory\", \"Rios\", \"S8F 8R5\", \"Mexico\" ],\n\t[ \"664\", \"Jerome\", \"Lambert\", \"N1Q 6R8\", \"Saint Lucia\" ],\n\t[ \"665\", \"Meredith\", \"Clark\", \"27720\", \"Cocos (Keeling) Islands\" ],\n\t[ \"666\", \"Armando\", \"Holcomb\", \"M6D 4X0\", \"Oman\" ],\n\t[ \"667\", \"Rowan\", \"Page\", \"00307\", \"Nauru\" ],\n\t[ \"668\", \"Kyla\", \"Brown\", \"F4W 4C5\", \"Holy See (Vatican City State)\" ],\n\t[ \"669\", \"Leigh\", \"Sosa\", \"28499\", \"Uruguay\" ],\n\t[ \"670\", \"Shafira\", \"Forbes\", \"26526\", \"Honduras\" ],\n\t[ \"671\", \"Maxine\", \"Mueller\", \"90923\", \"Kazakhstan\" ],\n\t[ \"672\", \"Joy\", \"Sargent\", \"K6T 3W5\", \"Malawi\" ],\n\t[ \"673\", \"Lamar\", \"Roberts\", \"R5F 9C8\", \"Poland\" ],\n\t[ \"674\", \"Madonna\", \"Love\", \"15514\", \"Cyprus\" ],\n\t[ \"675\", \"Uriel\", \"Ware\", \"Z6V 5J1\", \"Singapore\" ],\n\t[ \"676\", \"Bevis\", \"Erickson\", \"M3X 9M8\", \"Brunei Darussalam\" ],\n\t[ \"677\", \"Grant\", \"Velasquez\", \"96942\", \"Antarctica\" ],\n\t[ \"678\", \"Lars\", \"Bullock\", \"14772\", \"Guyana\" ],\n\t[ \"679\", \"Maryam\", \"Jones\", \"01854\", \"Togo\" ],\n\t[ \"680\", \"Blythe\", \"Goodwin\", \"51731\", \"New Caledonia\" ],\n\t[ \"681\", \"Kane\", \"Wiggins\", \"55727\", \"Kiribati\" ],\n\t[ \"682\", \"Brian\", \"Rosales\", \"25896\", \"Cape Verde\" ],\n\t[ \"683\", \"Blaze\", \"Leach\", \"P6J 3E5\", \"Northern Mariana Islands\" ],\n\t[ \"684\", \"Cameron\", \"Neal\", \"82248\", \"Marshall Islands\" ],\n\t[ \"685\", \"Lydia\", \"Cunningham\", \"Q1V 8P7\", \"San Marino\" ],\n\t[ \"686\", \"Troy\", \"Cook\", \"32106\", \"British Indian Ocean Territory\" ],\n\t[ \"687\", \"Alexander\", \"Valenzuela\", \"S8Z 6B2\", \"Guadeloupe\" ],\n\t[ \"688\", \"Garth\", \"Beck\", \"46344\", \"Cook Islands\" ],\n\t[ \"689\", \"Hillary\", \"Nunez\", \"29462\", \"Sri Lanka\" ],\n\t[ \"690\", \"Hunter\", \"Sawyer\", \"W9M 6T4\", \"Saint Lucia\" ],\n\t[ \"691\", \"Jaquelyn\", \"Everett\", \"T1X 2U2\", \"Guinea-bissau\" ],\n\t[ \"692\", \"Indira\", \"Ortega\", \"43047\", \"Italy\" ],\n\t[ \"693\", \"Josiah\", \"Hinton\", \"N5F 5Y8\", \"Andorra\" ],\n\t[ \"694\", \"Bruno\", \"Gay\", \"E3U 3D9\", \"Palau\" ],\n\t[ \"695\", \"Melissa\", \"Blackburn\", \"S4V 1K2\", \"Virgin Islands, U.S.\" ],\n\t[ \"696\", \"Zeus\", \"Dawson\", \"K5S 6Z6\", \"Belgium\" ],\n\t[ \"697\", \"Castor\", \"Mcmahon\", \"H3R 1O8\", \"Cambodia\" ],\n\t[ \"698\", \"Elizabeth\", \"Beasley\", \"98178\", \"Northern Mariana Islands\" ],\n\t[ \"699\", \"Jescie\", \"Lee\", \"08056\", \"Eritrea\" ],\n\t[ \"700\", \"Dennis\", \"Chapman\", \"T4O 1Q2\", \"Bangladesh\" ],\n\t[ \"701\", \"Basia\", \"Wallace\", \"U3Y 7C1\", \"Pitcairn\" ],\n\t[ \"702\", \"Dante\", \"Brewer\", \"53544\", \"Bosnia and Herzegovina\" ],\n\t[ \"703\", \"Adrienne\", \"Glenn\", \"32378\", \"Austria\" ],\n\t[ \"704\", \"Kellie\", \"Acevedo\", \"51723\", \"Italy\" ],\n\t[ \"705\", \"Scarlet\", \"Mclaughlin\", \"43509\", \"Kiribati\" ],\n\t[ \"706\", \"Lillith\", \"Mullins\", \"S6L 4Y6\", \"Kyrgyzstan\" ],\n\t[ \"707\", \"Maxine\", \"Atkins\", \"Z5T 5R5\", \"Denmark\" ],\n\t[ \"708\", \"Nicholas\", \"Rose\", \"40286\", \"Macedonia\" ],\n\t[ \"709\", \"Zenia\", \"Pugh\", \"28682\", \"Venezuela\" ],\n\t[ \"710\", \"Keely\", \"Turner\", \"34939\", \"New Zealand\" ],\n\t[ \"711\", \"Maisie\", \"Walton\", \"S6M 5C5\", \"Cameroon\" ],\n\t[ \"712\", \"Michelle\", \"Salinas\", \"T7A 9N6\", \"Nicaragua\" ],\n\t[ \"713\", \"Reece\", \"Clements\", \"73923\", \"Austria\" ],\n\t[ \"714\", \"Eliana\", \"Fox\", \"V3Y 5T4\", \"Denmark\" ],\n\t[ \"715\", \"Kennedy\", \"Mullins\", \"43213\", \"Virgin Islands, British\" ],\n\t[ \"716\", \"Alea\", \"Glover\", \"M6P 3Z5\", \"Turkmenistan\" ],\n\t[ \"717\", \"Scarlett\", \"Hunt\", \"41461\", \"Montserrat\" ],\n\t[ \"718\", \"Rooney\", \"Kane\", \"T8A 3E2\", \"Madagascar\" ],\n\t[ \"719\", \"Cairo\", \"Ray\", \"L6M 1E7\", \"Canada\" ],\n\t[ \"720\", \"Wendy\", \"Burks\", \"R8V 8F5\", \"Virgin Islands, U.S.\" ],\n\t[ \"721\", \"Christine\", \"Suarez\", \"67369\", \"Georgia\" ],\n\t[ \"722\", \"Graiden\", \"Le\", \"K4M 9V5\", \"New Caledonia\" ],\n\t[ \"723\", \"Zane\", \"Nunez\", \"60548\", \"Haiti\" ],\n\t[ \"724\", \"Ali\", \"Bell\", \"U4Y 4C3\", \"Togo\" ],\n\t[ \"725\", \"Marsden\", \"Leon\", \"39374\", \"Venezuela\" ],\n\t[ \"726\", \"Holmes\", \"Kidd\", \"B6K 7Q9\", \"Iraq\" ],\n\t[ \"727\", \"Cameron\", \"Gardner\", \"88627\", \"Brazil\" ],\n\t[ \"728\", \"Ava\", \"George\", \"K1Z 7Y2\", \"Monaco\" ],\n\t[ \"729\", \"Chantale\", \"Holland\", \"H1B 9L8\", \"Afghanistan\" ],\n\t[ \"730\", \"Alika\", \"Middleton\", \"W8X 7O1\", \"Korea\" ],\n\t[ \"731\", \"Cameran\", \"Zimmerman\", \"78576\", \"Benin\" ],\n\t[ \"732\", \"Barrett\", \"Blair\", \"51161\", \"Virgin Islands, U.S.\" ],\n\t[ \"733\", \"Brielle\", \"Ballard\", \"59538\", \"Iceland\" ],\n\t[ \"734\", \"Teagan\", \"Morales\", \"40107\", \"Kenya\" ],\n\t[ \"735\", \"Lunea\", \"Cantu\", \"14690\", \"Oman\" ],\n\t[ \"736\", \"Robin\", \"Gilmore\", \"17972\", \"Nauru\" ],\n\t[ \"737\", \"Hall\", \"Mccarty\", \"86141\", \"China\" ],\n\t[ \"738\", \"Olga\", \"Rasmussen\", \"58309\", \"Virgin Islands, British\" ],\n\t[ \"739\", \"Mark\", \"Griffin\", \"51542\", \"Argentina\" ],\n\t[ \"740\", \"Medge\", \"Carrillo\", \"23192\", \"Pitcairn\" ],\n\t[ \"741\", \"Susan\", \"Mosley\", \"32128\", \"Turkmenistan\" ],\n\t[ \"742\", \"Zelda\", \"Valdez\", \"46831\", \"New Caledonia\" ],\n\t[ \"743\", \"Ruth\", \"Donaldson\", \"F9I 7G7\", \"Ukraine\" ],\n\t[ \"744\", \"Kirby\", \"Workman\", \"36679\", \"Rwanda\" ],\n\t[ \"745\", \"Alexa\", \"King\", \"66513\", \"Liberia\" ],\n\t[ \"746\", \"Ronan\", \"Gross\", \"K2S 6D0\", \"Saint Lucia\" ],\n\t[ \"747\", \"Kylee\", \"Dillon\", \"P7Y 1I5\", \"Faroe Islands\" ],\n\t[ \"748\", \"Brenda\", \"Weaver\", \"99365\", \"Uzbekistan\" ],\n\t[ \"749\", \"Aristotle\", \"Orr\", \"43451\", \"Canada\" ],\n\t[ \"750\", \"Jaquelyn\", \"Tyler\", \"B9Q 7P5\", \"Brunei Darussalam\" ],\n\t[ \"751\", \"Madeline\", \"Stewart\", \"D4D 2J4\", \"Zimbabwe\" ],\n\t[ \"752\", \"Lacota\", \"Glass\", \"89124\", \"Israel\" ],\n\t[ \"753\", \"Adrian\", \"Ashley\", \"N8M 4L1\", \"Sri Lanka\" ],\n\t[ \"754\", \"Ignatius\", \"Waller\", \"12053\", \"Thailand\" ],\n\t[ \"755\", \"Raven\", \"Stevens\", \"88768\", \"Estonia\" ],\n\t[ \"756\", \"Carly\", \"Camacho\", \"27075\", \"Vanuatu\" ],\n\t[ \"757\", \"Lee\", \"Calderon\", \"19501\", \"Pitcairn\" ],\n\t[ \"758\", \"Amos\", \"Briggs\", \"I6A 3L8\", \"Saint Kitts and Nevis\" ],\n\t[ \"759\", \"Cheryl\", \"Valencia\", \"90517\", \"Denmark\" ],\n\t[ \"760\", \"Kenyon\", \"Franco\", \"B2S 2E2\", \"Western Sahara\" ],\n\t[ \"761\", \"Damian\", \"Acosta\", \"A2S 6D0\", \"Bahamas\" ],\n\t[ \"762\", \"Brenda\", \"Zamora\", \"T9E 7L3\", \"Finland\" ],\n\t[ \"763\", \"Connor\", \"Atkinson\", \"03975\", \"Sierra Leone\" ],\n\t[ \"764\", \"Kaseem\", \"Waters\", \"A2K 2X0\", \"China\" ],\n\t[ \"765\", \"Zephania\", \"Whitfield\", \"A4Z 9P7\", \"Eritrea\" ],\n\t[ \"766\", \"Emmanuel\", \"Ballard\", \"G1M 6Y2\", \"Finland\" ],\n\t[ \"767\", \"Amos\", \"Walters\", \"43184\", \"Oman\" ],\n\t[ \"768\", \"Urielle\", \"Browning\", \"19959\", \"Panama\" ],\n\t[ \"769\", \"TaShya\", \"Summers\", \"B9V 3Y3\", \"Micronesia\" ],\n\t[ \"770\", \"Jermaine\", \"Mcgee\", \"X8A 4E1\", \"Cape Verde\" ],\n\t[ \"771\", \"Chaney\", \"Berry\", \"G2H 2C8\", \"Uganda\" ],\n\t[ \"772\", \"Jaime\", \"May\", \"49723\", \"Eritrea\" ],\n\t[ \"773\", \"Olga\", \"Cohen\", \"13403\", \"Macao\" ],\n\t[ \"774\", \"Jacob\", \"Vaughn\", \"U7G 1V5\", \"Greece\" ],\n\t[ \"775\", \"Kelly\", \"Mcdonald\", \"Z3B 5G7\", \"Kiribati\" ],\n\t[ \"776\", \"Emi\", \"Gilbert\", \"W1L 2M4\", \"Nicaragua\" ],\n\t[ \"777\", \"Francis\", \"Nunez\", \"K4U 6M5\", \"Lithuania\" ],\n\t[ \"778\", \"Noel\", \"Nelson\", \"Z5T 1Y0\", \"Nauru\" ],\n\t[ \"779\", \"Ora\", \"Ellison\", \"Y5I 4R8\", \"Burundi\" ],\n\t[ \"780\", \"Kirby\", \"Glass\", \"J5X 2E3\", \"Argentina\" ],\n\t[ \"781\", \"Hayley\", \"Tate\", \"V1T 6B6\", \"Greece\" ],\n\t[ \"782\", \"Mohammad\", \"Leblanc\", \"E3S 5R3\", \"Oman\" ],\n\t[ \"783\", \"Lionel\", \"Todd\", \"A1Z 9E1\", \"Macedonia\" ],\n\t[ \"784\", \"Courtney\", \"Mckay\", \"D4I 8Z3\", \"Fiji\" ],\n\t[ \"785\", \"Reagan\", \"West\", \"84159\", \"Equatorial Guinea\" ],\n\t[ \"786\", \"Noel\", \"Strickland\", \"Q7K 6S3\", \"Mozambique\" ],\n\t[ \"787\", \"Lara\", \"Porter\", \"49872\", \"Nigeria\" ],\n\t[ \"788\", \"Kyra\", \"Haley\", \"I9E 2K3\", \"Dominican Republic\" ],\n\t[ \"789\", \"Wynter\", \"Beasley\", \"66330\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"790\", \"Vladimir\", \"Briggs\", \"99538\", \"Burkina Faso\" ],\n\t[ \"791\", \"Rafael\", \"Campbell\", \"V8L 2S6\", \"Algeria\" ],\n\t[ \"792\", \"Buffy\", \"Wilder\", \"N3U 2X0\", \"Bahrain\" ],\n\t[ \"793\", \"Nyssa\", \"Dawson\", \"38434\", \"Spain\" ],\n\t[ \"794\", \"Sylvia\", \"Swanson\", \"39714\", \"Azerbaijan\" ],\n\t[ \"795\", \"Jolie\", \"Diaz\", \"A1J 5I1\", \"Cuba\" ],\n\t[ \"796\", \"Rosalyn\", \"Mcdaniel\", \"F3T 6E2\", \"Benin\" ],\n\t[ \"797\", \"Nelle\", \"Prince\", \"K1M 4U6\", \"Maldives\" ],\n\t[ \"798\", \"Luke\", \"Knight\", \"05930\", \"Seychelles\" ],\n\t[ \"799\", \"Macaulay\", \"Conway\", \"79707\", \"American Samoa\" ],\n\t[ \"800\", \"Freya\", \"Webb\", \"U2H 2D7\", \"Ireland\" ],\n\t[ \"801\", \"Clinton\", \"Meyers\", \"S9I 7N2\", \"Malta\" ],\n\t[ \"802\", \"Rudyard\", \"Chandler\", \"40347\", \"Bahrain\" ],\n\t[ \"803\", \"Courtney\", \"Hoover\", \"12325\", \"French Polynesia\" ],\n\t[ \"804\", \"Melissa\", \"Davenport\", \"K7P 1S8\", \"Canada\" ],\n\t[ \"805\", \"Noelle\", \"Nieves\", \"87427\", \"Martinique\" ],\n\t[ \"806\", \"Myles\", \"Hart\", \"V6T 1W0\", \"Niue\" ],\n\t[ \"807\", \"Jasper\", \"Campos\", \"78143\", \"Faroe Islands\" ],\n\t[ \"808\", \"Ariana\", \"Valentine\", \"J4X 2D4\", \"Ecuador\" ],\n\t[ \"809\", \"Vanna\", \"Fletcher\", \"M4Z 1F9\", \"Faroe Islands\" ],\n\t[ \"810\", \"Elijah\", \"Harper\", \"Y1B 7E4\", \"New Zealand\" ],\n\t[ \"811\", \"Leilani\", \"Nunez\", \"K9W 4F0\", \"United Arab Emirates\" ],\n\t[ \"812\", \"Maia\", \"Huber\", \"V4L 8M6\", \"United Kingdom\" ],\n\t[ \"813\", \"Richard\", \"Riddle\", \"U8C 8Q2\", \"Niue\" ],\n\t[ \"814\", \"Harper\", \"Blanchard\", \"10904\", \"Cameroon\" ],\n\t[ \"815\", \"Aurelia\", \"Trujillo\", \"01646\", \"Dominican Republic\" ],\n\t[ \"816\", \"Anthony\", \"Owen\", \"J2I 2B4\", \"Palestinian Territory, Occupied\" ],\n\t[ \"817\", \"Kelsie\", \"Roy\", \"M3J 6K3\", \"Maldives\" ],\n\t[ \"818\", \"James\", \"Pearson\", \"94810\", \"Mexico\" ],\n\t[ \"819\", \"Igor\", \"Marshall\", \"Y8M 2D6\", \"Palau\" ],\n\t[ \"820\", \"Aquila\", \"Willis\", \"20354\", \"Samoa\" ],\n\t[ \"821\", \"Randall\", \"Sheppard\", \"73577\", \"Sierra Leone\" ],\n\t[ \"822\", \"Gray\", \"Myers\", \"53651\", \"Gibraltar\" ],\n\t[ \"823\", \"Dana\", \"Camacho\", \"89571\", \"Reunion\" ],\n\t[ \"824\", \"Berk\", \"Hopper\", \"17794\", \"Cook Islands\" ],\n\t[ \"825\", \"Shannon\", \"Barry\", \"70536\", \"Bouvet Island\" ],\n\t[ \"826\", \"Dahlia\", \"Herman\", \"F8L 1Q3\", \"Lesotho\" ],\n\t[ \"827\", \"Gillian\", \"Hayes\", \"O2C 7X8\", \"Tajikistan\" ],\n\t[ \"828\", \"Leo\", \"Bolton\", \"P6V 6E1\", \"Dominica\" ],\n\t[ \"829\", \"Vivien\", \"Best\", \"E5E 6N8\", \"Cuba\" ],\n\t[ \"830\", \"Clayton\", \"Bradley\", \"E7R 3M5\", \"Zimbabwe\" ],\n\t[ \"831\", \"Lesley\", \"Collins\", \"16592\", \"Mali\" ],\n\t[ \"832\", \"Holly\", \"Hensley\", \"49080\", \"Tunisia\" ],\n\t[ \"833\", \"Larissa\", \"Velazquez\", \"41068\", \"Haiti\" ],\n\t[ \"834\", \"Delilah\", \"Mejia\", \"A5I 9Q9\", \"Croatia\" ],\n\t[ \"835\", \"Drew\", \"Roberson\", \"U7E 3R1\", \"Somalia\" ],\n\t[ \"836\", \"Jenette\", \"Patel\", \"64084\", \"Denmark\" ],\n\t[ \"837\", \"Gillian\", \"Cleveland\", \"05659\", \"Syrian Arab Republic\" ],\n\t[ \"838\", \"Noelle\", \"Lara\", \"U1N 6V6\", \"Sri Lanka\" ],\n\t[ \"839\", \"Celeste\", \"Rollins\", \"26590\", \"Mayotte\" ],\n\t[ \"840\", \"Elvis\", \"Fletcher\", \"M8V 6J4\", \"Bahamas\" ],\n\t[ \"841\", \"Caesar\", \"Hays\", \"E3D 3T7\", \"Malta\" ],\n\t[ \"842\", \"Rama\", \"Weber\", \"25880\", \"Malta\" ],\n\t[ \"843\", \"Lael\", \"Page\", \"57135\", \"Anguilla\" ],\n\t[ \"844\", \"Omar\", \"Hammond\", \"90213\", \"Belarus\" ],\n\t[ \"845\", \"Simone\", \"Mcintosh\", \"L5P 1S0\", \"Bhutan\" ],\n\t[ \"846\", \"Gay\", \"Harper\", \"56404\", \"Virgin Islands, U.S.\" ],\n\t[ \"847\", \"Joel\", \"Holman\", \"C1F 1C4\", \"Saint Lucia\" ],\n\t[ \"848\", \"Clayton\", \"Pennington\", \"57003\", \"Kazakhstan\" ],\n\t[ \"849\", \"Susan\", \"Mckee\", \"I5U 8F2\", \"Taiwan, Province of China\" ],\n\t[ \"850\", \"Jenna\", \"Stein\", \"P2K 6L4\", \"Reunion\" ],\n\t[ \"851\", \"Madonna\", \"Joyner\", \"Q4Q 4K6\", \"Guadeloupe\" ],\n\t[ \"852\", \"Deirdre\", \"Ingram\", \"N7U 3N9\", \"Monaco\" ],\n\t[ \"853\", \"Juliet\", \"Hodges\", \"U2Q 2T0\", \"Uzbekistan\" ],\n\t[ \"854\", \"Naomi\", \"Rice\", \"O6T 2Z1\", \"Nicaragua\" ],\n\t[ \"855\", \"Leila\", \"Alvarado\", \"Z2V 7L3\", \"Suriname\" ],\n\t[ \"856\", \"George\", \"Leon\", \"L6M 1V2\", \"Norway\" ],\n\t[ \"857\", \"Rama\", \"Cruz\", \"Y2S 7K6\", \"Kenya\" ],\n\t[ \"858\", \"Clarke\", \"Mckinney\", \"34622\", \"Viet Nam\" ],\n\t[ \"859\", \"Savannah\", \"Bailey\", \"L3O 1U6\", \"Solomon Islands\" ],\n\t[ \"860\", \"Maxwell\", \"Gibson\", \"R9K 9Q1\", \"Virgin Islands, British\" ],\n\t[ \"861\", \"Devin\", \"Humphrey\", \"74821\", \"Costa Rica\" ],\n\t[ \"862\", \"Kadeem\", \"Larsen\", \"43178\", \"Luxembourg\" ],\n\t[ \"863\", \"Elvis\", \"Todd\", \"O3O 3G9\", \"Azerbaijan\" ],\n\t[ \"864\", \"Levi\", \"Montoya\", \"G1Y 1N8\", \"Venezuela\" ],\n\t[ \"865\", \"Risa\", \"Barnes\", \"86118\", \"Benin\" ],\n\t[ \"866\", \"Dillon\", \"Riggs\", \"O3Y 8V2\", \"Greenland\" ],\n\t[ \"867\", \"Stewart\", \"Marshall\", \"V8G 8S2\", \"Mexico\" ],\n\t[ \"868\", \"Camden\", \"Goff\", \"N3W 2L0\", \"Bahrain\" ],\n\t[ \"869\", \"Sheila\", \"Meadows\", \"T6K 7M2\", \"Yemen\" ],\n\t[ \"870\", \"Hop\", \"Berger\", \"Q8B 9R7\", \"Germany\" ],\n\t[ \"871\", \"Charissa\", \"Wilkerson\", \"08090\", \"Burundi\" ],\n\t[ \"872\", \"Raphael\", \"Carey\", \"03667\", \"United Kingdom\" ],\n\t[ \"873\", \"Micah\", \"Hood\", \"T9N 4T5\", \"Georgia\" ],\n\t[ \"874\", \"Cathleen\", \"Mccall\", \"N6H 6N3\", \"Tanzania, United Republic of\" ],\n\t[ \"875\", \"Lisandra\", \"Poole\", \"S7O 1J1\", \"Greece\" ],\n\t[ \"876\", \"Stone\", \"Blackwell\", \"90654\", \"Serbia and Montenegro\" ],\n\t[ \"877\", \"Serena\", \"Mann\", \"32305\", \"Trinidad and Tobago\" ],\n\t[ \"878\", \"Scarlet\", \"Turner\", \"D7Y 8N4\", \"Oman\" ],\n\t[ \"879\", \"Zenaida\", \"Carrillo\", \"60361\", \"Montserrat\" ],\n\t[ \"880\", \"Jaime\", \"Dalton\", \"F4E 6R5\", \"Iraq\" ],\n\t[ \"881\", \"Wesley\", \"Drake\", \"D8J 9U2\", \"Bulgaria\" ],\n\t[ \"882\", \"Armand\", \"Chandler\", \"X8Z 9E6\", \"Saint Kitts and Nevis\" ],\n\t[ \"883\", \"Inez\", \"Dillard\", \"59975\", \"Eritrea\" ],\n\t[ \"884\", \"Roanna\", \"Floyd\", \"65958\", \"Bolivia\" ],\n\t[ \"885\", \"Timon\", \"Dalton\", \"O3Q 5B5\", \"Colombia\" ],\n\t[ \"886\", \"Ifeoma\", \"Lamb\", \"J9A 9X0\", \"Papua New Guinea\" ],\n\t[ \"887\", \"Brody\", \"Cash\", \"75525\", \"Kazakhstan\" ],\n\t[ \"888\", \"Dawn\", \"Wise\", \"G7X 5J3\", \"Samoa\" ],\n\t[ \"889\", \"Chaney\", \"Bartlett\", \"11112\", \"Ecuador\" ],\n\t[ \"890\", \"Galvin\", \"Merritt\", \"59635\", \"Bahrain\" ],\n\t[ \"891\", \"Cynthia\", \"Nash\", \"U5P 1H4\", \"Switzerland\" ],\n\t[ \"892\", \"Tara\", \"Austin\", \"Q6X 8U0\", \"Burundi\" ],\n\t[ \"893\", \"Roanna\", \"Petty\", \"28524\", \"Northern Mariana Islands\" ],\n\t[ \"894\", \"Palmer\", \"Mcdowell\", \"78234\", \"United States Minor Outlying Islands\" ],\n\t[ \"895\", \"Sade\", \"Patton\", \"28984\", \"Czech Republic\" ],\n\t[ \"896\", \"Yoko\", \"Compton\", \"62165\", \"Saint Kitts and Nevis\" ],\n\t[ \"897\", \"Regan\", \"Mccarthy\", \"C5D 6G0\", \"Lebanon\" ],\n\t[ \"898\", \"Norman\", \"Nixon\", \"E4C 4G0\", \"Virgin Islands, U.S.\" ],\n\t[ \"899\", \"Jocelyn\", \"Baldwin\", \"X9R 2B3\", \"Macedonia\" ],\n\t[ \"900\", \"Jaquelyn\", \"Berg\", \"N6X 6E1\", \"Saint Lucia\" ],\n\t[ \"901\", \"Zane\", \"Nelson\", \"G9P 4J8\", \"Macao\" ],\n\t[ \"902\", \"Judith\", \"Elliott\", \"R4I 4O3\", \"Iraq\" ],\n\t[ \"903\", \"Maia\", \"Ellis\", \"S9V 6P0\", \"Bahrain\" ],\n\t[ \"904\", \"Mechelle\", \"Stevens\", \"43406\", \"Bouvet Island\" ],\n\t[ \"905\", \"Sylvester\", \"Duran\", \"K5D 8W5\", \"Costa Rica\" ],\n\t[ \"906\", \"Unity\", \"Cooke\", \"64362\", \"Ecuador\" ],\n\t[ \"907\", \"Karly\", \"Velazquez\", \"43286\", \"Guam\" ],\n\t[ \"908\", \"Damian\", \"Yates\", \"84910\", \"Thailand\" ],\n\t[ \"909\", \"Linus\", \"Gross\", \"31808\", \"Israel\" ],\n\t[ \"910\", \"Cooper\", \"Franco\", \"36700\", \"Yemen\" ],\n\t[ \"911\", \"Gail\", \"Jones\", \"09157\", \"Turkey\" ],\n\t[ \"912\", \"Hayfa\", \"Bennett\", \"59422\", \"France\" ],\n\t[ \"913\", \"Hermione\", \"Barber\", \"I6W 8Z5\", \"Mozambique\" ],\n\t[ \"914\", \"Hedy\", \"Stevens\", \"35535\", \"Cuba\" ],\n\t[ \"915\", \"Galvin\", \"Frederick\", \"J2W 9A3\", \"Virgin Islands, British\" ],\n\t[ \"916\", \"Lamar\", \"Rush\", \"P4O 3H4\", \"Austria\" ],\n\t[ \"917\", \"Brenda\", \"Walter\", \"K8Q 9H9\", \"Tajikistan\" ],\n\t[ \"918\", \"Ria\", \"Guy\", \"12801\", \"Gibraltar\" ],\n\t[ \"919\", \"Bruno\", \"Lynch\", \"I6U 7D0\", \"Greenland\" ],\n\t[ \"920\", \"Kirk\", \"Pearson\", \"66242\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"921\", \"Owen\", \"Sosa\", \"61483\", \"Martinique\" ],\n\t[ \"922\", \"Rajah\", \"Mccarty\", \"G9K 6L2\", \"Faroe Islands\" ],\n\t[ \"923\", \"Erasmus\", \"Malone\", \"D6H 7H5\", \"Sierra Leone\" ],\n\t[ \"924\", \"Raja\", \"Hale\", \"85590\", \"Guadeloupe\" ],\n\t[ \"925\", \"Logan\", \"Christensen\", \"Y6L 8Z0\", \"Guatemala\" ],\n\t[ \"926\", \"Kirestin\", \"Griffith\", \"47900\", \"Micronesia\" ],\n\t[ \"927\", \"Kato\", \"Reeves\", \"93779\", \"Uruguay\" ],\n\t[ \"928\", \"Jonah\", \"Suarez\", \"13708\", \"Spain\" ],\n\t[ \"929\", \"Adam\", \"Lynn\", \"E1P 1L3\", \"Indonesia\" ],\n\t[ \"930\", \"Quinn\", \"Mckinney\", \"99683\", \"Faroe Islands\" ],\n\t[ \"931\", \"Whilemina\", \"Macias\", \"32145\", \"Iceland\" ],\n\t[ \"932\", \"Gillian\", \"Osborne\", \"L3L 6G0\", \"Italy\" ],\n\t[ \"933\", \"Venus\", \"Zamora\", \"28318\", \"Comoros\" ],\n\t[ \"934\", \"Allegra\", \"Eaton\", \"P5X 9S0\", \"Antarctica\" ],\n\t[ \"935\", \"Driscoll\", \"Preston\", \"R3L 9R0\", \"Niue\" ],\n\t[ \"936\", \"Joel\", \"Spencer\", \"12006\", \"Monaco\" ],\n\t[ \"937\", \"Lucius\", \"Sharp\", \"B8V 6U7\", \"Dominica\" ],\n\t[ \"938\", \"Curran\", \"Robinson\", \"82216\", \"Romania\" ],\n\t[ \"939\", \"Kerry\", \"Espinoza\", \"N4B 7Q1\", \"Guatemala\" ],\n\t[ \"940\", \"Isaac\", \"Kline\", \"85674\", \"Costa Rica\" ],\n\t[ \"941\", \"Neil\", \"Harrison\", \"I5A 2S2\", \"Greenland\" ],\n\t[ \"942\", \"Ezra\", \"Rodriguez\", \"D6P 5Q3\", \"Angola\" ],\n\t[ \"943\", \"Galvin\", \"Jefferson\", \"D6H 7G0\", \"Macedonia\" ],\n\t[ \"944\", \"Joseph\", \"Hahn\", \"Z8V 9B5\", \"Uganda\" ],\n\t[ \"945\", \"Naida\", \"Hammond\", \"40105\", \"Philippines\" ],\n\t[ \"946\", \"Brenna\", \"Everett\", \"41704\", \"Indonesia\" ],\n\t[ \"947\", \"Rae\", \"Parks\", \"79077\", \"Sweden\" ],\n\t[ \"948\", \"Jessica\", \"Richard\", \"Y3I 5R3\", \"Uganda\" ],\n\t[ \"949\", \"Rachel\", \"Marks\", \"16157\", \"Cameroon\" ],\n\t[ \"950\", \"Maxwell\", \"Ferguson\", \"V6A 6M0\", \"Ukraine\" ],\n\t[ \"951\", \"Alyssa\", \"Beard\", \"13936\", \"Antarctica\" ],\n\t[ \"952\", \"Camille\", \"Gill\", \"V9Q 9P7\", \"New Caledonia\" ],\n\t[ \"953\", \"Cora\", \"Bond\", \"M9X 1A4\", \"Seychelles\" ],\n\t[ \"954\", \"Peter\", \"Acosta\", \"07937\", \"Chile\" ],\n\t[ \"955\", \"Ella\", \"Poole\", \"A3F 9Z1\", \"Panama\" ],\n\t[ \"956\", \"Ashely\", \"Guerrero\", \"37436\", \"Central African Republic\" ],\n\t[ \"957\", \"Mikayla\", \"Johnston\", \"L9W 5T8\", \"Cameroon\" ],\n\t[ \"958\", \"Ora\", \"Weaver\", \"65897\", \"Turks and Caicos Islands\" ],\n\t[ \"959\", \"Timon\", \"Barnes\", \"R6J 1J7\", \"Djibouti\" ],\n\t[ \"960\", \"Jamalia\", \"Wade\", \"22211\", \"United States\" ],\n\t[ \"961\", \"Bradley\", \"Haney\", \"K1H 1Q1\", \"Western Sahara\" ],\n\t[ \"962\", \"Lance\", \"Le\", \"H4R 9T7\", \"Botswana\" ],\n\t[ \"963\", \"Ethan\", \"Rich\", \"T8N 1C6\", \"Netherlands\" ],\n\t[ \"964\", \"Jeanette\", \"Carver\", \"G1E 5C8\", \"Cook Islands\" ],\n\t[ \"965\", \"Ocean\", \"Marquez\", \"15084\", \"Pakistan\" ],\n\t[ \"966\", \"Ifeoma\", \"Cleveland\", \"R9D 6M1\", \"French Guiana\" ],\n\t[ \"967\", \"Sylvia\", \"Herring\", \"U4R 8P1\", \"Thailand\" ],\n\t[ \"968\", \"Clare\", \"Huffman\", \"Q5G 2Q0\", \"Niger\" ],\n\t[ \"969\", \"Colton\", \"Leach\", \"V3F 9W6\", \"Syrian Arab Republic\" ],\n\t[ \"970\", \"Maryam\", \"Hoover\", \"Y7U 6N3\", \"Slovakia\" ],\n\t[ \"971\", \"Nola\", \"Snider\", \"54275\", \"Bosnia and Herzegovina\" ],\n\t[ \"972\", \"Kameko\", \"Cote\", \"M3C 8N0\", \"Cambodia\" ],\n\t[ \"973\", \"Julian\", \"Pugh\", \"B6E 7J7\", \"Mauritania\" ],\n\t[ \"974\", \"Xena\", \"Lott\", \"52294\", \"Estonia\" ],\n\t[ \"975\", \"Fuller\", \"Kirk\", \"65396\", \"Qatar\" ],\n\t[ \"976\", \"Lance\", \"Knox\", \"78074\", \"Serbia and Montenegro\" ],\n\t[ \"977\", \"Hedwig\", \"Beck\", \"T5P 4C8\", \"Dominican Republic\" ],\n\t[ \"978\", \"Martena\", \"Diaz\", \"65420\", \"Saint Pierre and Miquelon\" ],\n\t[ \"979\", \"Shafira\", \"David\", \"74843\", \"Senegal\" ],\n\t[ \"980\", \"Shafira\", \"Clark\", \"T6F 5C7\", \"Mongolia\" ],\n\t[ \"981\", \"Georgia\", \"Booth\", \"28183\", \"Japan\" ],\n\t[ \"982\", \"Cameron\", \"Austin\", \"I2J 1R1\", \"Bahrain\" ],\n\t[ \"983\", \"Vanna\", \"Hyde\", \"82434\", \"Croatia\" ],\n\t[ \"984\", \"Deanna\", \"Park\", \"68486\", \"Zimbabwe\" ],\n\t[ \"985\", \"Grady\", \"Freeman\", \"U4O 1Q9\", \"Belarus\" ],\n\t[ \"986\", \"Sandra\", \"Knapp\", \"31413\", \"Sudan\" ],\n\t[ \"987\", \"Dorian\", \"Joseph\", \"90768\", \"Lithuania\" ],\n\t[ \"988\", \"Adria\", \"Bonner\", \"15899\", \"Mongolia\" ],\n\t[ \"989\", \"Sebastian\", \"Guzman\", \"G9L 9G5\", \"Yemen\" ],\n\t[ \"990\", \"Angelica\", \"Puckett\", \"W8D 8W8\", \"Virgin Islands, U.S.\" ],\n\t[ \"991\", \"Connor\", \"Parks\", \"26175\", \"Virgin Islands, U.S.\" ],\n\t[ \"992\", \"Yardley\", \"Griffith\", \"H3L 2U3\", \"Saint Pierre and Miquelon\" ],\n\t[ \"993\", \"Charissa\", \"Beck\", \"30611\", \"Zambia\" ],\n\t[ \"994\", \"Calvin\", \"Russo\", \"79906\", \"Chile\" ],\n\t[ \"995\", \"Yoshi\", \"Durham\", \"N2J 8M8\", \"China\" ],\n\t[ \"996\", \"Finn\", \"Buck\", \"Q9F 9Z8\", \"Iraq\" ],\n\t[ \"997\", \"Kessie\", \"Holden\", \"C4A 1J0\", \"Syrian Arab Republic\" ],\n\t[ \"998\", \"Chloe\", \"Richards\", \"63091\", \"Canada\" ],\n\t[ \"999\", \"Uriel\", \"Snyder\", \"95487\", \"Pakistan\" ],\n\t[ \"1000\", \"Maite\", \"Cash\", \"90705\", \"Syrian Arab Republic\" ],\n\t[ \"1001\", \"Cameron\", \"Schwartz\", \"82778\", \"Taiwan, Province of China\" ],\n\t[ \"1002\", \"Faith\", \"Jimenez\", \"J6K 2P9\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1003\", \"Otto\", \"Hancock\", \"34535\", \"Andorra\" ],\n\t[ \"1004\", \"Harlan\", \"Blackwell\", \"N8Y 4E6\", \"Qatar\" ],\n\t[ \"1005\", \"Fitzgerald\", \"Gilliam\", \"Y9J 6J5\", \"Burkina Faso\" ],\n\t[ \"1006\", \"Lev\", \"Ballard\", \"01956\", \"American Samoa\" ],\n\t[ \"1007\", \"Freya\", \"Brown\", \"01190\", \"Portugal\" ],\n\t[ \"1008\", \"Harding\", \"Osborn\", \"14814\", \"San Marino\" ],\n\t[ \"1009\", \"Alexander\", \"Howard\", \"81842\", \"Reunion\" ],\n\t[ \"1010\", \"Ori\", \"Marsh\", \"77738\", \"Saint Helena\" ],\n\t[ \"1011\", \"Brennan\", \"Rich\", \"18690\", \"Cambodia\" ],\n\t[ \"1012\", \"Dawn\", \"Christensen\", \"Y8F 7R3\", \"Mali\" ],\n\t[ \"1013\", \"Ahmed\", \"Pearson\", \"62230\", \"Sudan\" ],\n\t[ \"1014\", \"Tanek\", \"Head\", \"25744\", \"Kiribati\" ],\n\t[ \"1015\", \"Meredith\", \"Cantu\", \"E6X 2L1\", \"Kenya\" ],\n\t[ \"1016\", \"Levi\", \"Fisher\", \"I9Y 9G2\", \"Djibouti\" ],\n\t[ \"1017\", \"Katell\", \"Cameron\", \"10278\", \"Denmark\" ],\n\t[ \"1018\", \"Ina\", \"Orr\", \"P7H 2O3\", \"Congo\" ],\n\t[ \"1019\", \"Beck\", \"Hayden\", \"15115\", \"Saint Lucia\" ],\n\t[ \"1020\", \"Cassady\", \"Wagner\", \"R9H 8C5\", \"Estonia\" ],\n\t[ \"1021\", \"Amena\", \"Herrera\", \"13286\", \"Bahrain\" ],\n\t[ \"1022\", \"Tarik\", \"Gross\", \"C3X 3W0\", \"Azerbaijan\" ],\n\t[ \"1023\", \"Marshall\", \"Collier\", \"13416\", \"Dominica\" ],\n\t[ \"1024\", \"Kirestin\", \"Callahan\", \"15429\", \"Micronesia\" ],\n\t[ \"1025\", \"Sasha\", \"Rice\", \"O6H 6X2\", \"Denmark\" ],\n\t[ \"1026\", \"Ross\", \"Gonzalez\", \"D3B 3R5\", \"Sudan\" ],\n\t[ \"1027\", \"Veda\", \"Arnold\", \"56611\", \"Swaziland\" ],\n\t[ \"1028\", \"Ferdinand\", \"Macias\", \"P1Q 3I2\", \"Colombia\" ],\n\t[ \"1029\", \"Mohammad\", \"Reed\", \"74005\", \"Bhutan\" ],\n\t[ \"1030\", \"Reagan\", \"Sandoval\", \"19275\", \"Pitcairn\" ],\n\t[ \"1031\", \"Debra\", \"Nelson\", \"85945\", \"Ukraine\" ],\n\t[ \"1032\", \"Cleo\", \"Robertson\", \"84072\", \"Guadeloupe\" ],\n\t[ \"1033\", \"Tanya\", \"Vance\", \"C1F 7F1\", \"Romania\" ],\n\t[ \"1034\", \"Desirae\", \"Wooten\", \"74659\", \"Mongolia\" ],\n\t[ \"1035\", \"Hiram\", \"Estes\", \"Q5Z 5A0\", \"Namibia\" ],\n\t[ \"1036\", \"Medge\", \"Weiss\", \"67079\", \"Azerbaijan\" ],\n\t[ \"1037\", \"Hu\", \"Chase\", \"87562\", \"Cuba\" ],\n\t[ \"1038\", \"Shafira\", \"Everett\", \"18983\", \"Georgia\" ],\n\t[ \"1039\", \"Mannix\", \"Lamb\", \"45542\", \"Venezuela\" ],\n\t[ \"1040\", \"Germaine\", \"Harvey\", \"I9G 1U0\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1041\", \"Brenna\", \"Leonard\", \"55573\", \"New Zealand\" ],\n\t[ \"1042\", \"Kylie\", \"Rivas\", \"U9J 3O9\", \"Djibouti\" ],\n\t[ \"1043\", \"Alexandra\", \"Rich\", \"T4O 6S6\", \"Cuba\" ],\n\t[ \"1044\", \"Dorian\", \"Spears\", \"00456\", \"Brazil\" ],\n\t[ \"1045\", \"Laurel\", \"Abbott\", \"45449\", \"Switzerland\" ],\n\t[ \"1046\", \"Gabriel\", \"Drake\", \"U1S 5O2\", \"Trinidad and Tobago\" ],\n\t[ \"1047\", \"Priscilla\", \"Mercer\", \"01401\", \"Serbia and Montenegro\" ],\n\t[ \"1048\", \"Darius\", \"Hoffman\", \"49694\", \"Greece\" ],\n\t[ \"1049\", \"Caesar\", \"Patton\", \"42322\", \"Suriname\" ],\n\t[ \"1050\", \"Susan\", \"Clayton\", \"W1G 5C3\", \"Maldives\" ],\n\t[ \"1051\", \"Zane\", \"Dunlap\", \"73722\", \"Oman\" ],\n\t[ \"1052\", \"Leah\", \"Fuentes\", \"60412\", \"Luxembourg\" ],\n\t[ \"1053\", \"Yardley\", \"Hansen\", \"03194\", \"Mauritius\" ],\n\t[ \"1054\", \"Ingrid\", \"Talley\", \"37315\", \"Solomon Islands\" ],\n\t[ \"1055\", \"Demetria\", \"Evans\", \"30587\", \"Tajikistan\" ],\n\t[ \"1056\", \"Ignacia\", \"Alford\", \"01282\", \"Bouvet Island\" ],\n\t[ \"1057\", \"Destiny\", \"Wade\", \"L5R 3V3\", \"Uganda\" ],\n\t[ \"1058\", \"Alden\", \"Mason\", \"V7D 2V6\", \"Dominican Republic\" ],\n\t[ \"1059\", \"Pamela\", \"Wilcox\", \"L1I 6I1\", \"Canada\" ],\n\t[ \"1060\", \"Melvin\", \"Buckley\", \"05478\", \"Hungary\" ],\n\t[ \"1061\", \"Eve\", \"Holcomb\", \"B6B 8T1\", \"Cook Islands\" ],\n\t[ \"1062\", \"Arthur\", \"Weeks\", \"R5P 7U2\", \"Bangladesh\" ],\n\t[ \"1063\", \"Marah\", \"Levine\", \"10075\", \"Somalia\" ],\n\t[ \"1064\", \"Keiko\", \"Freeman\", \"90950\", \"Faroe Islands\" ],\n\t[ \"1065\", \"Dorian\", \"Rose\", \"T5M 4Z0\", \"Fiji\" ],\n\t[ \"1066\", \"Desirae\", \"Velez\", \"T4E 8K2\", \"Afghanistan\" ],\n\t[ \"1067\", \"Rebekah\", \"Lucas\", \"T9A 8V5\", \"Tunisia\" ],\n\t[ \"1068\", \"Sylvester\", \"Copeland\", \"W6R 3B6\", \"Jamaica\" ],\n\t[ \"1069\", \"Alea\", \"Preston\", \"31050\", \"Netherlands Antilles\" ],\n\t[ \"1070\", \"Aphrodite\", \"Gordon\", \"T7C 6T8\", \"Sao Tome and Principe\" ],\n\t[ \"1071\", \"Yael\", \"Delaney\", \"G9W 9P1\", \"Mexico\" ],\n\t[ \"1072\", \"Sierra\", \"Perez\", \"R3O 8H0\", \"Slovenia\" ],\n\t[ \"1073\", \"Avram\", \"Briggs\", \"05221\", \"Norfolk Island\" ],\n\t[ \"1074\", \"Troy\", \"Poole\", \"W7Q 8O5\", \"Malta\" ],\n\t[ \"1075\", \"Gavin\", \"Sandoval\", \"37352\", \"Greece\" ],\n\t[ \"1076\", \"Nerea\", \"Stokes\", \"N2Q 6S9\", \"United States\" ],\n\t[ \"1077\", \"Genevieve\", \"Ramirez\", \"53829\", \"Mali\" ],\n\t[ \"1078\", \"Oliver\", \"Boone\", \"M1Q 8V9\", \"Bolivia\" ],\n\t[ \"1079\", \"Lars\", \"Ramirez\", \"L2R 6V2\", \"Bosnia and Herzegovina\" ],\n\t[ \"1080\", \"Abbot\", \"Horton\", \"R1R 1V8\", \"Netherlands Antilles\" ],\n\t[ \"1081\", \"Abra\", \"Avila\", \"41608\", \"Congo\" ],\n\t[ \"1082\", \"Candice\", \"Christian\", \"13930\", \"Faroe Islands\" ],\n\t[ \"1083\", \"Flavia\", \"Miranda\", \"93964\", \"Estonia\" ],\n\t[ \"1084\", \"Medge\", \"Drake\", \"Q7C 2E2\", \"Belize\" ],\n\t[ \"1085\", \"Lee\", \"Montgomery\", \"H3T 4Q6\", \"Costa Rica\" ],\n\t[ \"1086\", \"Aline\", \"Ratliff\", \"99839\", \"Macao\" ],\n\t[ \"1087\", \"Shafira\", \"Fox\", \"A9S 7C8\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1088\", \"Orson\", \"Greene\", \"K9L 7R8\", \"Myanmar\" ],\n\t[ \"1089\", \"Henry\", \"Joyner\", \"55853\", \"South Africa\" ],\n\t[ \"1090\", \"Keely\", \"Boyer\", \"08996\", \"Liberia\" ],\n\t[ \"1091\", \"Jerome\", \"Jones\", \"31770\", \"Saint Lucia\" ],\n\t[ \"1092\", \"Hermione\", \"Dunlap\", \"U2R 7R2\", \"Moldova\" ],\n\t[ \"1093\", \"Lenore\", \"Powers\", \"73772\", \"Tunisia\" ],\n\t[ \"1094\", \"Alden\", \"Newman\", \"V4C 3O8\", \"Bhutan\" ],\n\t[ \"1095\", \"Jasper\", \"Blevins\", \"K2H 5W0\", \"Paraguay\" ],\n\t[ \"1096\", \"Robert\", \"Bender\", \"R5F 1H9\", \"Philippines\" ],\n\t[ \"1097\", \"Bo\", \"Richard\", \"N5R 6T2\", \"Trinidad and Tobago\" ],\n\t[ \"1098\", \"Iliana\", \"Mcpherson\", \"23758\", \"Bangladesh\" ],\n\t[ \"1099\", \"Alfreda\", \"Camacho\", \"35387\", \"Saint Helena\" ],\n\t[ \"1100\", \"Kirsten\", \"Giles\", \"14079\", \"Romania\" ],\n\t[ \"1101\", \"Harlan\", \"Crawford\", \"84847\", \"French Polynesia\" ],\n\t[ \"1102\", \"Wynne\", \"Bauer\", \"W9D 6F6\", \"Kazakhstan\" ],\n\t[ \"1103\", \"Connor\", \"Melton\", \"E2F 4Q2\", \"Angola\" ],\n\t[ \"1104\", \"Evelyn\", \"Barry\", \"I9H 8W7\", \"Turkmenistan\" ],\n\t[ \"1105\", \"Barry\", \"Stephens\", \"07823\", \"Gibraltar\" ],\n\t[ \"1106\", \"Ferris\", \"Farrell\", \"I7H 5Z6\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1107\", \"Ursa\", \"Carr\", \"31124\", \"Chad\" ],\n\t[ \"1108\", \"Laith\", \"Johnson\", \"10428\", \"Cyprus\" ],\n\t[ \"1109\", \"Harlan\", \"Frank\", \"J6K 7I6\", \"Gambia\" ],\n\t[ \"1110\", \"Gregory\", \"Ratliff\", \"P1C 8H2\", \"Chile\" ],\n\t[ \"1111\", \"Rina\", \"Holloway\", \"Y7N 1E7\", \"Estonia\" ],\n\t[ \"1112\", \"Maris\", \"Joyner\", \"T6R 2H9\", \"France\" ],\n\t[ \"1113\", \"Galvin\", \"Webster\", \"V8E 9U4\", \"Croatia\" ],\n\t[ \"1114\", \"Farrah\", \"Bean\", \"H2B 8E2\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1115\", \"Martha\", \"Schroeder\", \"14485\", \"Georgia\" ],\n\t[ \"1116\", \"Mari\", \"Boone\", \"D4C 1Q0\", \"Comoros\" ],\n\t[ \"1117\", \"Nadine\", \"Mercado\", \"35046\", \"Syrian Arab Republic\" ],\n\t[ \"1118\", \"Isadora\", \"Keith\", \"R5H 8Y7\", \"Mayotte\" ],\n\t[ \"1119\", \"Quinn\", \"William\", \"V8Q 3Y6\", \"India\" ],\n\t[ \"1120\", \"Justina\", \"Gilbert\", \"11271\", \"Yemen\" ],\n\t[ \"1121\", \"Jordan\", \"Hull\", \"F4Z 7R8\", \"Lesotho\" ],\n\t[ \"1122\", \"Mechelle\", \"Davenport\", \"A9Z 8P2\", \"Bermuda\" ],\n\t[ \"1123\", \"Isabelle\", \"Webster\", \"60972\", \"Zimbabwe\" ],\n\t[ \"1124\", \"Armand\", \"Butler\", \"Y3F 4H9\", \"Nicaragua\" ],\n\t[ \"1125\", \"Herman\", \"Beach\", \"Q8N 6V3\", \"Cape Verde\" ],\n\t[ \"1126\", \"Brianna\", \"Love\", \"D9B 2W8\", \"Sierra Leone\" ],\n\t[ \"1127\", \"Joy\", \"Brown\", \"O7V 7C1\", \"Djibouti\" ],\n\t[ \"1128\", \"Amena\", \"Moss\", \"P8D 1L9\", \"Andorra\" ],\n\t[ \"1129\", \"Zeph\", \"Whitehead\", \"01513\", \"Tanzania, United Republic of\" ],\n\t[ \"1130\", \"Logan\", \"Matthews\", \"73541\", \"Finland\" ],\n\t[ \"1131\", \"Amela\", \"Gregory\", \"65323\", \"Swaziland\" ],\n\t[ \"1132\", \"Zoe\", \"Owen\", \"V5L 5O6\", \"Zambia\" ],\n\t[ \"1133\", \"September\", \"Hewitt\", \"R8K 4G9\", \"Congo\" ],\n\t[ \"1134\", \"Holly\", \"Walter\", \"S2E 3M4\", \"Serbia and Montenegro\" ],\n\t[ \"1135\", \"Zeph\", \"Beach\", \"J6Z 8B5\", \"Ecuador\" ],\n\t[ \"1136\", \"Morgan\", \"Decker\", \"M9H 8I5\", \"Uruguay\" ],\n\t[ \"1137\", \"Malcolm\", \"Maldonado\", \"S6F 8X6\", \"Netherlands\" ],\n\t[ \"1138\", \"Fay\", \"Day\", \"B9R 1U7\", \"Seychelles\" ],\n\t[ \"1139\", \"Charles\", \"Juarez\", \"62791\", \"Virgin Islands, U.S.\" ],\n\t[ \"1140\", \"Amery\", \"Stout\", \"L9A 1F8\", \"Central African Republic\" ],\n\t[ \"1141\", \"Irene\", \"Ferrell\", \"52649\", \"Norway\" ],\n\t[ \"1142\", \"Dean\", \"Stout\", \"N5C 2S8\", \"Uruguay\" ],\n\t[ \"1143\", \"Eric\", \"Baxter\", \"82082\", \"Chile\" ],\n\t[ \"1144\", \"Shelley\", \"Larsen\", \"Y4T 4P3\", \"Antarctica\" ],\n\t[ \"1145\", \"Rigel\", \"Ellis\", \"E3S 6K8\", \"Zimbabwe\" ],\n\t[ \"1146\", \"Maite\", \"Rosa\", \"F6C 5Q9\", \"Zambia\" ],\n\t[ \"1147\", \"Serena\", \"Blanchard\", \"99373\", \"Estonia\" ],\n\t[ \"1148\", \"Melanie\", \"Berger\", \"C5P 4E2\", \"Mozambique\" ],\n\t[ \"1149\", \"Noah\", \"Spence\", \"B8H 7X7\", \"Martinique\" ],\n\t[ \"1150\", \"Elliott\", \"Pierce\", \"W5B 8V7\", \"Swaziland\" ],\n\t[ \"1151\", \"Ahmed\", \"Chang\", \"E9X 7J0\", \"Bulgaria\" ],\n\t[ \"1152\", \"Ross\", \"Figueroa\", \"22458\", \"China\" ],\n\t[ \"1153\", \"Gary\", \"Calderon\", \"V3C 4J8\", \"Algeria\" ],\n\t[ \"1154\", \"Montana\", \"Franklin\", \"94093\", \"Haiti\" ],\n\t[ \"1155\", \"Rae\", \"Curry\", \"45477\", \"Morocco\" ],\n\t[ \"1156\", \"Jillian\", \"Hogan\", \"N8L 4B5\", \"Iceland\" ],\n\t[ \"1157\", \"Mia\", \"Kaufman\", \"54758\", \"Burkina Faso\" ],\n\t[ \"1158\", \"Remedios\", \"Wilkerson\", \"75420\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1159\", \"Xanthus\", \"Baldwin\", \"13961\", \"Congo\" ],\n\t[ \"1160\", \"Madeline\", \"Gates\", \"76351\", \"Saint Helena\" ],\n\t[ \"1161\", \"Leroy\", \"Craig\", \"12770\", \"Finland\" ],\n\t[ \"1162\", \"Melanie\", \"Carpenter\", \"C3B 8L4\", \"Mayotte\" ],\n\t[ \"1163\", \"Ashely\", \"Mcneil\", \"E7E 9K5\", \"French Southern Territories\" ],\n\t[ \"1164\", \"Karina\", \"Mcneil\", \"39956\", \"United Arab Emirates\" ],\n\t[ \"1165\", \"Nina\", \"Mills\", \"92913\", \"Saint Kitts and Nevis\" ],\n\t[ \"1166\", \"Ashton\", \"Singleton\", \"73890\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1167\", \"Meghan\", \"Black\", \"31814\", \"Armenia\" ],\n\t[ \"1168\", \"Jolene\", \"Pope\", \"U6K 7O6\", \"Venezuela\" ],\n\t[ \"1169\", \"Abel\", \"Boyd\", \"37110\", \"Botswana\" ],\n\t[ \"1170\", \"Tiger\", \"Coffey\", \"Y6P 3S4\", \"Faroe Islands\" ],\n\t[ \"1171\", \"Aileen\", \"Rowe\", \"F7G 8D9\", \"Netherlands Antilles\" ],\n\t[ \"1172\", \"Bryar\", \"Forbes\", \"T2N 5H6\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1173\", \"Vera\", \"Hoffman\", \"36299\", \"Guadeloupe\" ],\n\t[ \"1174\", \"Hadassah\", \"Wright\", \"S8J 5B2\", \"Peru\" ],\n\t[ \"1175\", \"Bruce\", \"Blair\", \"Q8E 7K6\", \"Cape Verde\" ],\n\t[ \"1176\", \"Brianna\", \"Wolf\", \"V8S 5A6\", \"Bahamas\" ],\n\t[ \"1177\", \"Kimberley\", \"Reed\", \"17652\", \"Tajikistan\" ],\n\t[ \"1178\", \"Colin\", \"Phelps\", \"42334\", \"Brunei Darussalam\" ],\n\t[ \"1179\", \"Gil\", \"Britt\", \"U3N 6C2\", \"Swaziland\" ],\n\t[ \"1180\", \"Hasad\", \"Pena\", \"09526\", \"United States\" ],\n\t[ \"1181\", \"Violet\", \"Dixon\", \"48691\", \"Micronesia\" ],\n\t[ \"1182\", \"Uriel\", \"Bowen\", \"Z7F 7A7\", \"Uzbekistan\" ],\n\t[ \"1183\", \"Madeline\", \"Keller\", \"18227\", \"Iran, Islamic Republic of\" ],\n\t[ \"1184\", \"Buffy\", \"Mckee\", \"23861\", \"Ethiopia\" ],\n\t[ \"1185\", \"Doris\", \"Martin\", \"V8N 8O7\", \"Liberia\" ],\n\t[ \"1186\", \"Mia\", \"Burke\", \"64582\", \"Virgin Islands, British\" ],\n\t[ \"1187\", \"William\", \"Kemp\", \"63587\", \"Tuvalu\" ],\n\t[ \"1188\", \"Stacy\", \"Quinn\", \"01390\", \"Nauru\" ],\n\t[ \"1189\", \"Halla\", \"Solomon\", \"31138\", \"Pakistan\" ],\n\t[ \"1190\", \"Kasimir\", \"Rodriguez\", \"67823\", \"Costa Rica\" ],\n\t[ \"1191\", \"Davis\", \"Lawrence\", \"27918\", \"Rwanda\" ],\n\t[ \"1192\", \"Nigel\", \"Bryan\", \"L5U 2U9\", \"Seychelles\" ],\n\t[ \"1193\", \"Ivana\", \"Stone\", \"94862\", \"Niue\" ],\n\t[ \"1194\", \"Naomi\", \"Yang\", \"68985\", \"Haiti\" ],\n\t[ \"1195\", \"Roanna\", \"Brown\", \"51196\", \"India\" ],\n\t[ \"1196\", \"Colorado\", \"Chavez\", \"45634\", \"Brazil\" ],\n\t[ \"1197\", \"Illana\", \"Levy\", \"V1A 7R8\", \"Jordan\" ],\n\t[ \"1198\", \"Ali\", \"Lowe\", \"N8K 1Y5\", \"Hungary\" ],\n\t[ \"1199\", \"Virginia\", \"Witt\", \"Y3O 5W8\", \"Azerbaijan\" ],\n\t[ \"1200\", \"Howard\", \"Flores\", \"I9C 3Q7\", \"Fiji\" ],\n\t[ \"1201\", \"Walter\", \"Odom\", \"78418\", \"Thailand\" ],\n\t[ \"1202\", \"Thor\", \"Craig\", \"00935\", \"Jamaica\" ],\n\t[ \"1203\", \"Petra\", \"Barry\", \"E5L 5K5\", \"Finland\" ],\n\t[ \"1204\", \"Lev\", \"Ellison\", \"I6S 1K1\", \"Mongolia\" ],\n\t[ \"1205\", \"Roth\", \"Osborne\", \"15014\", \"Swaziland\" ],\n\t[ \"1206\", \"Lucius\", \"Baldwin\", \"12766\", \"China\" ],\n\t[ \"1207\", \"Candice\", \"Hyde\", \"B5E 4B8\", \"Bahamas\" ],\n\t[ \"1208\", \"Maggy\", \"Bailey\", \"76781\", \"Northern Mariana Islands\" ],\n\t[ \"1209\", \"Beatrice\", \"Gregory\", \"S5S 8S4\", \"Rwanda\" ],\n\t[ \"1210\", \"Adrian\", \"Bowman\", \"58500\", \"Vanuatu\" ],\n\t[ \"1211\", \"Brenden\", \"Chandler\", \"50326\", \"Thailand\" ],\n\t[ \"1212\", \"Jada\", \"Richmond\", \"15990\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1213\", \"Sawyer\", \"Page\", \"G2W 7R7\", \"Somalia\" ],\n\t[ \"1214\", \"Haley\", \"Jordan\", \"U7X 4U2\", \"Equatorial Guinea\" ],\n\t[ \"1215\", \"Ruby\", \"Watson\", \"30990\", \"Romania\" ],\n\t[ \"1216\", \"Jocelyn\", \"Knowles\", \"78987\", \"Lebanon\" ],\n\t[ \"1217\", \"Preston\", \"Stevenson\", \"F3L 9B3\", \"Mali\" ],\n\t[ \"1218\", \"Kimberly\", \"Merritt\", \"38779\", \"Venezuela\" ],\n\t[ \"1219\", \"Herrod\", \"Burke\", \"56225\", \"French Guiana\" ],\n\t[ \"1220\", \"Solomon\", \"Shannon\", \"67980\", \"Cape Verde\" ],\n\t[ \"1221\", \"Bradley\", \"Stokes\", \"10213\", \"Botswana\" ],\n\t[ \"1222\", \"Grace\", \"Kinney\", \"67923\", \"Montserrat\" ],\n\t[ \"1223\", \"Celeste\", \"Clark\", \"S7M 6I2\", \"Guatemala\" ],\n\t[ \"1224\", \"Patricia\", \"Frank\", \"05615\", \"Venezuela\" ],\n\t[ \"1225\", \"Madonna\", \"Alford\", \"10878\", \"Brunei Darussalam\" ],\n\t[ \"1226\", \"May\", \"Rios\", \"N7O 2L0\", \"Georgia\" ],\n\t[ \"1227\", \"Driscoll\", \"Roach\", \"Y7F 9F8\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1228\", \"Idona\", \"Cruz\", \"T6Q 8L4\", \"Iraq\" ],\n\t[ \"1229\", \"Sydney\", \"Delacruz\", \"69511\", \"United Arab Emirates\" ],\n\t[ \"1230\", \"Gillian\", \"Huff\", \"52624\", \"French Southern Territories\" ],\n\t[ \"1231\", \"Minerva\", \"Rosario\", \"29195\", \"Andorra\" ],\n\t[ \"1232\", \"Kerry\", \"Alvarado\", \"L3Q 2V5\", \"Portugal\" ],\n\t[ \"1233\", \"Amos\", \"Bass\", \"26389\", \"Holy See (Vatican City State)\" ],\n\t[ \"1234\", \"Deanna\", \"Parks\", \"57376\", \"Estonia\" ],\n\t[ \"1235\", \"Fitzgerald\", \"Green\", \"M3P 9N2\", \"Slovenia\" ],\n\t[ \"1236\", \"Sade\", \"Hinton\", \"35561\", \"Barbados\" ],\n\t[ \"1237\", \"Suki\", \"Parsons\", \"44591\", \"Syrian Arab Republic\" ],\n\t[ \"1238\", \"Orli\", \"Weeks\", \"K2W 9L4\", \"Peru\" ],\n\t[ \"1239\", \"Nicholas\", \"Copeland\", \"I5W 7A4\", \"French Guiana\" ],\n\t[ \"1240\", \"Guy\", \"Vang\", \"22277\", \"Pitcairn\" ],\n\t[ \"1241\", \"Hunter\", \"Goodman\", \"72290\", \"Malaysia\" ],\n\t[ \"1242\", \"Noble\", \"Rich\", \"I3B 6T9\", \"Gibraltar\" ],\n\t[ \"1243\", \"Delilah\", \"Zamora\", \"96328\", \"New Zealand\" ],\n\t[ \"1244\", \"Sybil\", \"Mercer\", \"93665\", \"Namibia\" ],\n\t[ \"1245\", \"Scarlett\", \"Brock\", \"Z2E 3J2\", \"Central African Republic\" ],\n\t[ \"1246\", \"Channing\", \"Alexander\", \"W5V 8D2\", \"San Marino\" ],\n\t[ \"1247\", \"Carolyn\", \"Boyle\", \"Q5Z 9E6\", \"Gabon\" ],\n\t[ \"1248\", \"Irene\", \"Jennings\", \"F3H 4O6\", \"Saint Helena\" ],\n\t[ \"1249\", \"Bianca\", \"Pratt\", \"66354\", \"Malaysia\" ],\n\t[ \"1250\", \"Dexter\", \"Cole\", \"56106\", \"French Southern Territories\" ],\n\t[ \"1251\", \"Berk\", \"Velez\", \"26759\", \"Lesotho\" ],\n\t[ \"1252\", \"Barrett\", \"Richardson\", \"59446\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1253\", \"Scarlet\", \"Jacobs\", \"G9A 7L6\", \"Dominica\" ],\n\t[ \"1254\", \"Aiko\", \"Brooks\", \"R6R 9E4\", \"Liberia\" ],\n\t[ \"1255\", \"Jacob\", \"Moore\", \"P2Y 6P3\", \"Cambodia\" ],\n\t[ \"1256\", \"Madeline\", \"Bishop\", \"D4I 2E7\", \"Dominican Republic\" ],\n\t[ \"1257\", \"Jarrod\", \"Evans\", \"C9O 7V7\", \"Taiwan, Province of China\" ],\n\t[ \"1258\", \"Beverly\", \"Witt\", \"64850\", \"Denmark\" ],\n\t[ \"1259\", \"Karyn\", \"Rhodes\", \"D6G 5Z3\", \"Cape Verde\" ],\n\t[ \"1260\", \"Imani\", \"Quinn\", \"01897\", \"Macao\" ],\n\t[ \"1261\", \"Athena\", \"Eaton\", \"03568\", \"Syrian Arab Republic\" ],\n\t[ \"1262\", \"Raymond\", \"Valdez\", \"21037\", \"Romania\" ],\n\t[ \"1263\", \"Christopher\", \"Ferguson\", \"64945\", \"Indonesia\" ],\n\t[ \"1264\", \"Latifah\", \"Harris\", \"91381\", \"Suriname\" ],\n\t[ \"1265\", \"Dacey\", \"Wagner\", \"81483\", \"Qatar\" ],\n\t[ \"1266\", \"Summer\", \"Myers\", \"H6A 1G5\", \"Angola\" ],\n\t[ \"1267\", \"Jasmine\", \"Rivera\", \"Y4W 8P2\", \"Virgin Islands, British\" ],\n\t[ \"1268\", \"Cairo\", \"Massey\", \"Q6Y 7A7\", \"Poland\" ],\n\t[ \"1269\", \"Jena\", \"Hill\", \"89480\", \"United States Minor Outlying Islands\" ],\n\t[ \"1270\", \"Ava\", \"Benson\", \"L9H 8V1\", \"Sri Lanka\" ],\n\t[ \"1271\", \"Gillian\", \"Mercado\", \"A9W 6V5\", \"Norway\" ],\n\t[ \"1272\", \"Peter\", \"Marquez\", \"I5B 3W9\", \"Guyana\" ],\n\t[ \"1273\", \"Price\", \"Coleman\", \"X8G 2S0\", \"Burkina Faso\" ],\n\t[ \"1274\", \"Shana\", \"Harper\", \"L2B 3U9\", \"Malaysia\" ],\n\t[ \"1275\", \"Serina\", \"Matthews\", \"58061\", \"Lithuania\" ],\n\t[ \"1276\", \"Aretha\", \"Bryant\", \"Y8J 7A5\", \"Tonga\" ],\n\t[ \"1277\", \"Wesley\", \"Craig\", \"20141\", \"Australia\" ],\n\t[ \"1278\", \"Martena\", \"Mercer\", \"P6X 2L9\", \"Sudan\" ],\n\t[ \"1279\", \"Tamara\", \"Dennis\", \"D3H 9R0\", \"Mali\" ],\n\t[ \"1280\", \"Phelan\", \"Pena\", \"D2H 2H7\", \"United States Minor Outlying Islands\" ],\n\t[ \"1281\", \"Rebecca\", \"Kinney\", \"B5Z 9S4\", \"Antarctica\" ],\n\t[ \"1282\", \"Josephine\", \"Delgado\", \"81010\", \"Algeria\" ],\n\t[ \"1283\", \"Kieran\", \"Estes\", \"70093\", \"Bermuda\" ],\n\t[ \"1284\", \"Tamara\", \"Williamson\", \"90905\", \"French Guiana\" ],\n\t[ \"1285\", \"Dora\", \"Serrano\", \"W8K 6R5\", \"Nauru\" ],\n\t[ \"1286\", \"Morgan\", \"Bass\", \"B6F 8R2\", \"Madagascar\" ],\n\t[ \"1287\", \"Margaret\", \"Austin\", \"D2C 2C1\", \"Belgium\" ],\n\t[ \"1288\", \"Nasim\", \"Berry\", \"J9X 7M5\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1289\", \"Jelani\", \"Rutledge\", \"34552\", \"Bolivia\" ],\n\t[ \"1290\", \"Cassady\", \"Hardin\", \"I2K 4H6\", \"Hong Kong\" ],\n\t[ \"1291\", \"Jenette\", \"Thornton\", \"44943\", \"Uganda\" ],\n\t[ \"1292\", \"Alexandra\", \"Sims\", \"93937\", \"Australia\" ],\n\t[ \"1293\", \"Ross\", \"Higgins\", \"61993\", \"Nicaragua\" ],\n\t[ \"1294\", \"Penelope\", \"Henson\", \"90344\", \"Trinidad and Tobago\" ],\n\t[ \"1295\", \"Yoshi\", \"Blackwell\", \"C8D 1T4\", \"Costa Rica\" ],\n\t[ \"1296\", \"Daria\", \"Rodriquez\", \"X3C 6L0\", \"Iceland\" ],\n\t[ \"1297\", \"Wesley\", \"Waller\", \"43947\", \"Myanmar\" ],\n\t[ \"1298\", \"Adam\", \"Hayden\", \"88969\", \"Italy\" ],\n\t[ \"1299\", \"Charity\", \"William\", \"46439\", \"Greece\" ],\n\t[ \"1300\", \"Ronan\", \"Hopper\", \"51955\", \"Zambia\" ],\n\t[ \"1301\", \"Geraldine\", \"Hatfield\", \"W9S 7T5\", \"Luxembourg\" ],\n\t[ \"1302\", \"Barry\", \"Nicholson\", \"79625\", \"Liechtenstein\" ],\n\t[ \"1303\", \"Donovan\", \"Ortiz\", \"68119\", \"Macao\" ],\n\t[ \"1304\", \"Jeanette\", \"Cooper\", \"D5P 9L2\", \"Sri Lanka\" ],\n\t[ \"1305\", \"Isadora\", \"Stephenson\", \"P4X 4H5\", \"Mauritania\" ],\n\t[ \"1306\", \"Hall\", \"Hays\", \"J2Z 2H1\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1307\", \"Idola\", \"Roberson\", \"89249\", \"Niue\" ],\n\t[ \"1308\", \"Olympia\", \"Dennis\", \"69498\", \"Guinea\" ],\n\t[ \"1309\", \"Naida\", \"Palmer\", \"19840\", \"Gambia\" ],\n\t[ \"1310\", \"Maxine\", \"Rollins\", \"87856\", \"Belize\" ],\n\t[ \"1311\", \"Rooney\", \"Phelps\", \"48424\", \"Italy\" ],\n\t[ \"1312\", \"Shelly\", \"Edwards\", \"O7O 1U4\", \"Mali\" ],\n\t[ \"1313\", \"Cassidy\", \"Holcomb\", \"98785\", \"Colombia\" ],\n\t[ \"1314\", \"Sybil\", \"Moran\", \"F3C 6E4\", \"Switzerland\" ],\n\t[ \"1315\", \"Mufutau\", \"Larson\", \"00276\", \"British Indian Ocean Territory\" ],\n\t[ \"1316\", \"Fiona\", \"Bryant\", \"U7Y 7N6\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1317\", \"Lenore\", \"Boyle\", \"H5G 6P9\", \"Sudan\" ],\n\t[ \"1318\", \"Ignacia\", \"Avila\", \"Y5M 1S2\", \"Romania\" ],\n\t[ \"1319\", \"Wendy\", \"Stein\", \"25422\", \"Taiwan, Province of China\" ],\n\t[ \"1320\", \"Garrison\", \"Bass\", \"B9J 6D9\", \"Romania\" ],\n\t[ \"1321\", \"Curran\", \"Roy\", \"X2F 4P2\", \"Taiwan, Province of China\" ],\n\t[ \"1322\", \"Oliver\", \"Beach\", \"N6J 1C5\", \"Kazakhstan\" ],\n\t[ \"1323\", \"Bo\", \"Duran\", \"D5C 5C2\", \"Eritrea\" ],\n\t[ \"1324\", \"Tashya\", \"Morrow\", \"N2J 7O9\", \"Rwanda\" ],\n\t[ \"1325\", \"Cheryl\", \"Powell\", \"72413\", \"Niger\" ],\n\t[ \"1326\", \"Justin\", \"Roth\", \"18779\", \"Brunei Darussalam\" ],\n\t[ \"1327\", \"Nathaniel\", \"Foster\", \"04955\", \"Bermuda\" ],\n\t[ \"1328\", \"Candace\", \"Nunez\", \"G7Z 1N2\", \"Moldova\" ],\n\t[ \"1329\", \"Nero\", \"West\", \"K3Q 6B3\", \"Myanmar\" ],\n\t[ \"1330\", \"Brendan\", \"Mcintyre\", \"C4E 5H7\", \"Argentina\" ],\n\t[ \"1331\", \"Chaney\", \"Stafford\", \"V3X 8J4\", \"Benin\" ],\n\t[ \"1332\", \"Sylvia\", \"Velez\", \"95851\", \"Iraq\" ],\n\t[ \"1333\", \"Azalia\", \"Castro\", \"55986\", \"Israel\" ],\n\t[ \"1334\", \"Emily\", \"Hogan\", \"74667\", \"Botswana\" ],\n\t[ \"1335\", \"Buckminster\", \"Hurst\", \"N9C 2X6\", \"Reunion\" ],\n\t[ \"1336\", \"Rinah\", \"Rodriquez\", \"31896\", \"Guinea-bissau\" ],\n\t[ \"1337\", \"Nash\", \"Barnett\", \"Y8X 7H5\", \"China\" ],\n\t[ \"1338\", \"Xanthus\", \"Barker\", \"11212\", \"Trinidad and Tobago\" ],\n\t[ \"1339\", \"Minerva\", \"Huber\", \"M6M 9U3\", \"Equatorial Guinea\" ],\n\t[ \"1340\", \"Kaseem\", \"Tillman\", \"86565\", \"Bulgaria\" ],\n\t[ \"1341\", \"Cassidy\", \"Dejesus\", \"93205\", \"Sierra Leone\" ],\n\t[ \"1342\", \"Sheila\", \"Munoz\", \"26473\", \"Benin\" ],\n\t[ \"1343\", \"Florence\", \"Yates\", \"M5O 1J1\", \"Russian Federation\" ],\n\t[ \"1344\", \"Isadora\", \"Wagner\", \"88381\", \"Philippines\" ],\n\t[ \"1345\", \"Hilel\", \"Kramer\", \"E5D 4F5\", \"Lebanon\" ],\n\t[ \"1346\", \"Stewart\", \"Lawson\", \"67313\", \"Malaysia\" ],\n\t[ \"1347\", \"Ira\", \"Duffy\", \"52841\", \"Greece\" ],\n\t[ \"1348\", \"Ignatius\", \"Robinson\", \"10035\", \"Russian Federation\" ],\n\t[ \"1349\", \"Baxter\", \"Carroll\", \"92288\", \"Albania\" ],\n\t[ \"1350\", \"Palmer\", \"James\", \"N5X 5B1\", \"Germany\" ],\n\t[ \"1351\", \"Ava\", \"Eaton\", \"76497\", \"Egypt\" ],\n\t[ \"1352\", \"Kiona\", \"Smith\", \"09402\", \"Belize\" ],\n\t[ \"1353\", \"Brian\", \"Barlow\", \"00156\", \"Panama\" ],\n\t[ \"1354\", \"Nolan\", \"Rosa\", \"J2O 9W2\", \"Uruguay\" ],\n\t[ \"1355\", \"Teegan\", \"Burnett\", \"02401\", \"Italy\" ],\n\t[ \"1356\", \"Erin\", \"Knox\", \"95496\", \"Egypt\" ],\n\t[ \"1357\", \"Amela\", \"Sanford\", \"59890\", \"Virgin Islands, U.S.\" ],\n\t[ \"1358\", \"Quemby\", \"Hensley\", \"17698\", \"Tuvalu\" ],\n\t[ \"1359\", \"Ava\", \"York\", \"J1M 1A0\", \"Nigeria\" ],\n\t[ \"1360\", \"Vivien\", \"Ware\", \"N9S 1W6\", \"Bahamas\" ],\n\t[ \"1361\", \"Nyssa\", \"Lamb\", \"97964\", \"Estonia\" ],\n\t[ \"1362\", \"Brenna\", \"Slater\", \"L4P 5V6\", \"British Indian Ocean Territory\" ],\n\t[ \"1363\", \"Kennan\", \"Larsen\", \"M2A 4X0\", \"Angola\" ],\n\t[ \"1364\", \"Linda\", \"Luna\", \"P8C 4S8\", \"Gambia\" ],\n\t[ \"1365\", \"Boris\", \"Poole\", \"U7J 4G1\", \"Aruba\" ],\n\t[ \"1366\", \"Lyle\", \"Cote\", \"F5J 3Y2\", \"Somalia\" ],\n\t[ \"1367\", \"Oleg\", \"Knapp\", \"K4C 5T8\", \"Guinea\" ],\n\t[ \"1368\", \"Hanae\", \"Brown\", \"51395\", \"Nepal\" ],\n\t[ \"1369\", \"India\", \"Hyde\", \"E8P 7E8\", \"Belize\" ],\n\t[ \"1370\", \"Madeson\", \"Hodge\", \"23265\", \"Gambia\" ],\n\t[ \"1371\", \"Thaddeus\", \"Hester\", \"Y7S 5W1\", \"Saint Helena\" ],\n\t[ \"1372\", \"Aaron\", \"Kemp\", \"A1Q 8R3\", \"Albania\" ],\n\t[ \"1373\", \"Aurelia\", \"Thornton\", \"P8T 9D4\", \"Swaziland\" ],\n\t[ \"1374\", \"Preston\", \"Sharpe\", \"97472\", \"Niue\" ],\n\t[ \"1375\", \"Grace\", \"Gregory\", \"51767\", \"Burkina Faso\" ],\n\t[ \"1376\", \"Nicole\", \"Hicks\", \"81040\", \"Burkina Faso\" ],\n\t[ \"1377\", \"Hall\", \"Randall\", \"X1C 7A8\", \"Cambodia\" ],\n\t[ \"1378\", \"Burke\", \"Silva\", \"57219\", \"Romania\" ],\n\t[ \"1379\", \"Talon\", \"Kline\", \"28200\", \"Argentina\" ],\n\t[ \"1380\", \"Cassady\", \"Duncan\", \"Y2M 8F5\", \"Kenya\" ],\n\t[ \"1381\", \"Brielle\", \"Reed\", \"06254\", \"Greece\" ],\n\t[ \"1382\", \"Claire\", \"Stein\", \"50289\", \"Viet Nam\" ],\n\t[ \"1383\", \"Fleur\", \"Cabrera\", \"30131\", \"Indonesia\" ],\n\t[ \"1384\", \"Ella\", \"Ellison\", \"Q7Q 4R2\", \"Netherlands Antilles\" ],\n\t[ \"1385\", \"Zachery\", \"Wolf\", \"A9Q 6A8\", \"Jamaica\" ],\n\t[ \"1386\", \"Emerson\", \"Brewer\", \"Y4R 9M9\", \"Bosnia and Herzegovina\" ],\n\t[ \"1387\", \"Sarah\", \"Brooks\", \"27281\", \"Pitcairn\" ],\n\t[ \"1388\", \"Kylan\", \"Garrison\", \"S8E 7L8\", \"Djibouti\" ],\n\t[ \"1389\", \"Guinevere\", \"Mills\", \"75612\", \"Comoros\" ],\n\t[ \"1390\", \"Claudia\", \"Stevenson\", \"73390\", \"Colombia\" ],\n\t[ \"1391\", \"Valentine\", \"Burton\", \"Z9P 7R8\", \"Nauru\" ],\n\t[ \"1392\", \"Raymond\", \"Mclean\", \"L8W 2K5\", \"Brunei Darussalam\" ],\n\t[ \"1393\", \"Juliet\", \"Combs\", \"88712\", \"Samoa\" ],\n\t[ \"1394\", \"Lawrence\", \"Williamson\", \"32528\", \"Netherlands Antilles\" ],\n\t[ \"1395\", \"Inga\", \"Rivers\", \"12850\", \"Kuwait\" ],\n\t[ \"1396\", \"Mira\", \"Zimmerman\", \"D1I 1W2\", \"Ireland\" ],\n\t[ \"1397\", \"Hilda\", \"Stafford\", \"11054\", \"Cuba\" ],\n\t[ \"1398\", \"Tanek\", \"Kim\", \"88590\", \"Cayman Islands\" ],\n\t[ \"1399\", \"Bryar\", \"Mcintyre\", \"H6F 4S5\", \"Russian Federation\" ],\n\t[ \"1400\", \"Sean\", \"Reed\", \"P2V 8J9\", \"Malta\" ],\n\t[ \"1401\", \"Serena\", \"Henderson\", \"Z5C 8A0\", \"Madagascar\" ],\n\t[ \"1402\", \"Hedley\", \"Parks\", \"L8S 6F4\", \"Angola\" ],\n\t[ \"1403\", \"Alice\", \"Quinn\", \"06084\", \"Senegal\" ],\n\t[ \"1404\", \"Linda\", \"Burgess\", \"H1E 7C0\", \"Turkmenistan\" ],\n\t[ \"1405\", \"Hilda\", \"Burns\", \"Q9Q 4S2\", \"Kyrgyzstan\" ],\n\t[ \"1406\", \"Griffith\", \"Watts\", \"D4J 7N2\", \"United States Minor Outlying Islands\" ],\n\t[ \"1407\", \"Camden\", \"Glenn\", \"12939\", \"Russian Federation\" ],\n\t[ \"1408\", \"Tallulah\", \"Rush\", \"G9V 3N2\", \"Turkey\" ],\n\t[ \"1409\", \"Hasad\", \"Salinas\", \"H3F 7P9\", \"Cameroon\" ],\n\t[ \"1410\", \"Violet\", \"Chavez\", \"T2H 9C6\", \"Virgin Islands, U.S.\" ],\n\t[ \"1411\", \"Declan\", \"Hurley\", \"32614\", \"Iran, Islamic Republic of\" ],\n\t[ \"1412\", \"Robin\", \"Dean\", \"34266\", \"Northern Mariana Islands\" ],\n\t[ \"1413\", \"Mariko\", \"Avila\", \"B8F 8Y5\", \"Burundi\" ],\n\t[ \"1414\", \"Bradley\", \"Pugh\", \"11453\", \"Sri Lanka\" ],\n\t[ \"1415\", \"Herman\", \"Hernandez\", \"F3C 6S2\", \"Chile\" ],\n\t[ \"1416\", \"Montana\", \"Wynn\", \"B3M 8M2\", \"Aruba\" ],\n\t[ \"1417\", \"Erin\", \"Melton\", \"17022\", \"France\" ],\n\t[ \"1418\", \"Zachery\", \"Small\", \"L5O 7O1\", \"French Southern Territories\" ],\n\t[ \"1419\", \"Melanie\", \"Rivera\", \"07922\", \"Korea\" ],\n\t[ \"1420\", \"Blossom\", \"Chase\", \"75493\", \"Mauritius\" ],\n\t[ \"1421\", \"Stephanie\", \"Taylor\", \"U8K 3I9\", \"Bahamas\" ],\n\t[ \"1422\", \"Carter\", \"Fulton\", \"T4F 8D1\", \"Turks and Caicos Islands\" ],\n\t[ \"1423\", \"Celeste\", \"Medina\", \"75629\", \"Lebanon\" ],\n\t[ \"1424\", \"Katell\", \"Guzman\", \"15409\", \"United Arab Emirates\" ],\n\t[ \"1425\", \"Howard\", \"Rowland\", \"29003\", \"Liberia\" ],\n\t[ \"1426\", \"Reece\", \"Taylor\", \"W8G 7P7\", \"Samoa\" ],\n\t[ \"1427\", \"Bradley\", \"Peterson\", \"52568\", \"Singapore\" ],\n\t[ \"1428\", \"Ulric\", \"Hancock\", \"07437\", \"Bolivia\" ],\n\t[ \"1429\", \"Francis\", \"Rogers\", \"15904\", \"Albania\" ],\n\t[ \"1430\", \"Tatiana\", \"Mccray\", \"19604\", \"Belize\" ],\n\t[ \"1431\", \"Merrill\", \"Rowe\", \"68539\", \"Ethiopia\" ],\n\t[ \"1432\", \"Kiara\", \"Taylor\", \"F6D 8V7\", \"Burkina Faso\" ],\n\t[ \"1433\", \"Buffy\", \"Shannon\", \"61880\", \"Kiribati\" ],\n\t[ \"1434\", \"Amber\", \"Farmer\", \"K5F 1J7\", \"Barbados\" ],\n\t[ \"1435\", \"Blake\", \"Wilkins\", \"O1L 2G2\", \"Virgin Islands, U.S.\" ],\n\t[ \"1436\", \"Aimee\", \"Fulton\", \"18626\", \"Chad\" ],\n\t[ \"1437\", \"Kai\", \"Montgomery\", \"U6S 4W7\", \"Costa Rica\" ],\n\t[ \"1438\", \"Latifah\", \"Bell\", \"74589\", \"Chad\" ],\n\t[ \"1439\", \"Ronan\", \"Herring\", \"01710\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1440\", \"Macy\", \"Skinner\", \"78054\", \"Gibraltar\" ],\n\t[ \"1441\", \"Ignatius\", \"Berg\", \"59756\", \"Liechtenstein\" ],\n\t[ \"1442\", \"Prescott\", \"Pratt\", \"V6H 6P4\", \"Kuwait\" ],\n\t[ \"1443\", \"Deborah\", \"Hebert\", \"11480\", \"Liberia\" ],\n\t[ \"1444\", \"Quentin\", \"Jones\", \"G8W 8U6\", \"Slovenia\" ],\n\t[ \"1445\", \"Duncan\", \"Parsons\", \"Z9F 5G8\", \"Cambodia\" ],\n\t[ \"1446\", \"Sheila\", \"George\", \"18033\", \"Trinidad and Tobago\" ],\n\t[ \"1447\", \"Alyssa\", \"Padilla\", \"V3O 6C3\", \"Qatar\" ],\n\t[ \"1448\", \"Amelia\", \"Orr\", \"51943\", \"Canada\" ],\n\t[ \"1449\", \"Bethany\", \"Thomas\", \"33451\", \"Liberia\" ],\n\t[ \"1450\", \"Kellie\", \"Pitts\", \"G4S 1Q3\", \"Panama\" ],\n\t[ \"1451\", \"Stone\", \"Stout\", \"L4C 9N0\", \"Latvia\" ],\n\t[ \"1452\", \"Brynne\", \"Bailey\", \"B1M 4O0\", \"Ukraine\" ],\n\t[ \"1453\", \"Aquila\", \"Hurley\", \"41312\", \"United Kingdom\" ],\n\t[ \"1454\", \"David\", \"Bradshaw\", \"11152\", \"Denmark\" ],\n\t[ \"1455\", \"Ryan\", \"Gates\", \"Z7O 1U0\", \"Austria\" ],\n\t[ \"1456\", \"Kyle\", \"Weber\", \"39871\", \"Guyana\" ],\n\t[ \"1457\", \"Declan\", \"Moore\", \"K3B 6L2\", \"Gibraltar\" ],\n\t[ \"1458\", \"Theodore\", \"Hickman\", \"W8E 6K1\", \"Mauritius\" ],\n\t[ \"1459\", \"Rebekah\", \"Merritt\", \"44042\", \"Mauritania\" ],\n\t[ \"1460\", \"Meredith\", \"Powell\", \"98238\", \"Bhutan\" ],\n\t[ \"1461\", \"Paki\", \"Simmons\", \"34122\", \"Norway\" ],\n\t[ \"1462\", \"Carissa\", \"Ballard\", \"20095\", \"Antarctica\" ],\n\t[ \"1463\", \"James\", \"Wilson\", \"96376\", \"Venezuela\" ],\n\t[ \"1464\", \"Pamela\", \"Gamble\", \"U7F 7B6\", \"Turkmenistan\" ],\n\t[ \"1465\", \"Rogan\", \"Davenport\", \"E6S 4R7\", \"French Polynesia\" ],\n\t[ \"1466\", \"Daphne\", \"Pearson\", \"G2H 9M0\", \"American Samoa\" ],\n\t[ \"1467\", \"Maxwell\", \"Nash\", \"87205\", \"Guadeloupe\" ],\n\t[ \"1468\", \"Hayes\", \"Salazar\", \"55712\", \"American Samoa\" ],\n\t[ \"1469\", \"Justin\", \"Conner\", \"03924\", \"United Kingdom\" ],\n\t[ \"1470\", \"Blythe\", \"Joyner\", \"T6H 3M0\", \"Montserrat\" ],\n\t[ \"1471\", \"Herrod\", \"Spears\", \"19474\", \"Philippines\" ],\n\t[ \"1472\", \"Yvette\", \"Joyce\", \"R7Y 7B8\", \"Botswana\" ],\n\t[ \"1473\", \"Chloe\", \"Reid\", \"K4Y 1R2\", \"Philippines\" ],\n\t[ \"1474\", \"MacKensie\", \"Branch\", \"J5E 3X8\", \"Saint Kitts and Nevis\" ],\n\t[ \"1475\", \"Nasim\", \"Buchanan\", \"M4E 4D2\", \"Portugal\" ],\n\t[ \"1476\", \"Aileen\", \"Rasmussen\", \"H2V 3F4\", \"Dominica\" ],\n\t[ \"1477\", \"Nicole\", \"Mullins\", \"U6Q 9X5\", \"New Caledonia\" ],\n\t[ \"1478\", \"David\", \"Luna\", \"11935\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1479\", \"Germaine\", \"Massey\", \"G3N 4C7\", \"Colombia\" ],\n\t[ \"1480\", \"Matthew\", \"Knowles\", \"V4D 4Z0\", \"Turkey\" ],\n\t[ \"1481\", \"Timon\", \"Rowe\", \"14024\", \"Morocco\" ],\n\t[ \"1482\", \"Gail\", \"Young\", \"68293\", \"Bhutan\" ],\n\t[ \"1483\", \"Mariam\", \"Mejia\", \"O3P 4Q7\", \"Singapore\" ],\n\t[ \"1484\", \"Carla\", \"Norris\", \"D7A 3F1\", \"Liberia\" ],\n\t[ \"1485\", \"Ainsley\", \"Donaldson\", \"H4Z 1Q8\", \"Tanzania, United Republic of\" ],\n\t[ \"1486\", \"Avye\", \"Raymond\", \"44808\", \"Namibia\" ],\n\t[ \"1487\", \"Amanda\", \"Sargent\", \"O7F 3S4\", \"Afghanistan\" ],\n\t[ \"1488\", \"Tiger\", \"Chambers\", \"I3K 7H4\", \"United States\" ],\n\t[ \"1489\", \"Dylan\", \"Ford\", \"04043\", \"Solomon Islands\" ],\n\t[ \"1490\", \"Kaitlin\", \"Franklin\", \"99451\", \"Namibia\" ],\n\t[ \"1491\", \"Hayes\", \"Craft\", \"D6H 4Y6\", \"Christmas Island\" ],\n\t[ \"1492\", \"Nolan\", \"Sullivan\", \"31246\", \"United States Minor Outlying Islands\" ],\n\t[ \"1493\", \"Jennifer\", \"Romero\", \"E7I 1R7\", \"Latvia\" ],\n\t[ \"1494\", \"Deanna\", \"Wall\", \"36109\", \"Nepal\" ],\n\t[ \"1495\", \"Dara\", \"Valenzuela\", \"18359\", \"Martinique\" ],\n\t[ \"1496\", \"Iris\", \"Blanchard\", \"84392\", \"Turks and Caicos Islands\" ],\n\t[ \"1497\", \"Rhea\", \"Burgess\", \"T7Y 7C5\", \"Liberia\" ],\n\t[ \"1498\", \"Karina\", \"Small\", \"B2F 2X5\", \"Bermuda\" ],\n\t[ \"1499\", \"Victor\", \"Case\", \"49492\", \"Vanuatu\" ],\n\t[ \"1500\", \"Rose\", \"Terry\", \"B4G 8I0\", \"Timor-leste\" ],\n\t[ \"1501\", \"Wyatt\", \"Berg\", \"K3B 5N2\", \"Vanuatu\" ],\n\t[ \"1502\", \"Zephania\", \"Herrera\", \"E6R 2A5\", \"Romania\" ],\n\t[ \"1503\", \"Felix\", \"Johns\", \"X8U 2P1\", \"Angola\" ],\n\t[ \"1504\", \"Melyssa\", \"George\", \"M4J 5X8\", \"Uzbekistan\" ],\n\t[ \"1505\", \"Robert\", \"Spears\", \"61322\", \"Papua New Guinea\" ],\n\t[ \"1506\", \"Myra\", \"Wood\", \"50638\", \"Afghanistan\" ],\n\t[ \"1507\", \"Sean\", \"Kerr\", \"40094\", \"Guadeloupe\" ],\n\t[ \"1508\", \"Wesley\", \"Mcclain\", \"H7F 1H3\", \"Mongolia\" ],\n\t[ \"1509\", \"Ishmael\", \"Hoover\", \"42503\", \"Czech Republic\" ],\n\t[ \"1510\", \"Ocean\", \"Parker\", \"L3Z 8G0\", \"Guyana\" ],\n\t[ \"1511\", \"Berk\", \"Clay\", \"B6Q 7V7\", \"Botswana\" ],\n\t[ \"1512\", \"Daquan\", \"Harrison\", \"78004\", \"Niger\" ],\n\t[ \"1513\", \"Ramona\", \"Burris\", \"66986\", \"Palau\" ],\n\t[ \"1514\", \"Jaden\", \"Miranda\", \"80086\", \"Madagascar\" ],\n\t[ \"1515\", \"Solomon\", \"Kirk\", \"R7M 3M3\", \"Slovenia\" ],\n\t[ \"1516\", \"Tanek\", \"Rosales\", \"X5B 5D0\", \"Tonga\" ],\n\t[ \"1517\", \"Jack\", \"Cooke\", \"46356\", \"French Southern Territories\" ],\n\t[ \"1518\", \"Naomi\", \"Sykes\", \"76541\", \"Marshall Islands\" ],\n\t[ \"1519\", \"Moana\", \"Vinson\", \"K4R 3U7\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1520\", \"Kaye\", \"Sweet\", \"S6S 2G0\", \"Dominican Republic\" ],\n\t[ \"1521\", \"Bruno\", \"Beard\", \"20686\", \"Israel\" ],\n\t[ \"1522\", \"Helen\", \"Richards\", \"66393\", \"Argentina\" ],\n\t[ \"1523\", \"Gisela\", \"Owens\", \"S8Q 4L3\", \"Haiti\" ],\n\t[ \"1524\", \"Ivy\", \"Garrett\", \"P6G 8S8\", \"United Arab Emirates\" ],\n\t[ \"1525\", \"Malik\", \"Osborne\", \"78332\", \"Tajikistan\" ],\n\t[ \"1526\", \"Whoopi\", \"Franco\", \"T3T 5Y1\", \"Serbia and Montenegro\" ],\n\t[ \"1527\", \"Basil\", \"Baker\", \"61233\", \"Cuba\" ],\n\t[ \"1528\", \"Linda\", \"King\", \"31410\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1529\", \"Allegra\", \"Hobbs\", \"F2C 9M8\", \"Andorra\" ],\n\t[ \"1530\", \"Kirsten\", \"Elliott\", \"T8C 4X3\", \"Haiti\" ],\n\t[ \"1531\", \"Joseph\", \"Ortiz\", \"40165\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1532\", \"Pearl\", \"Mccormick\", \"93914\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1533\", \"Fritz\", \"Austin\", \"A3S 7C8\", \"Canada\" ],\n\t[ \"1534\", \"Lunea\", \"Hickman\", \"25676\", \"Cameroon\" ],\n\t[ \"1535\", \"Inga\", \"Cortez\", \"14707\", \"Comoros\" ],\n\t[ \"1536\", \"Claudia\", \"Long\", \"74877\", \"Tokelau\" ],\n\t[ \"1537\", \"Judah\", \"Williamson\", \"S9N 6F0\", \"Paraguay\" ],\n\t[ \"1538\", \"Eve\", \"Beasley\", \"K8Z 5H7\", \"Honduras\" ],\n\t[ \"1539\", \"Tad\", \"Lang\", \"29577\", \"Equatorial Guinea\" ],\n\t[ \"1540\", \"Jack\", \"Lawson\", \"46631\", \"Costa Rica\" ],\n\t[ \"1541\", \"Vaughan\", \"Barron\", \"N9L 9T4\", \"Chile\" ],\n\t[ \"1542\", \"Solomon\", \"Bowman\", \"05734\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1543\", \"Nash\", \"Giles\", \"64600\", \"Denmark\" ],\n\t[ \"1544\", \"Xander\", \"Eaton\", \"84933\", \"Bosnia and Herzegovina\" ],\n\t[ \"1545\", \"Hanna\", \"Hull\", \"61062\", \"Namibia\" ],\n\t[ \"1546\", \"Lee\", \"Gaines\", \"V7H 6H7\", \"Suriname\" ],\n\t[ \"1547\", \"Brian\", \"Sutton\", \"60055\", \"Timor-leste\" ],\n\t[ \"1548\", \"Azalia\", \"Henson\", \"D9J 8E4\", \"Antarctica\" ],\n\t[ \"1549\", \"Russell\", \"Avila\", \"01774\", \"China\" ],\n\t[ \"1550\", \"Marsden\", \"Leblanc\", \"30201\", \"New Caledonia\" ],\n\t[ \"1551\", \"Tad\", \"Nichols\", \"K5V 6N1\", \"Monaco\" ],\n\t[ \"1552\", \"Eliana\", \"Savage\", \"06807\", \"Central African Republic\" ],\n\t[ \"1553\", \"Madeline\", \"Conway\", \"83513\", \"Latvia\" ],\n\t[ \"1554\", \"Kai\", \"Caldwell\", \"S1K 2Q2\", \"Indonesia\" ],\n\t[ \"1555\", \"Wynne\", \"Goodman\", \"U9Y 8P7\", \"Gibraltar\" ],\n\t[ \"1556\", \"Nora\", \"Dudley\", \"52688\", \"Netherlands Antilles\" ],\n\t[ \"1557\", \"Anastasia\", \"Gates\", \"T7T 8C8\", \"Morocco\" ],\n\t[ \"1558\", \"Lester\", \"Good\", \"76376\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1559\", \"Craig\", \"Skinner\", \"S7B 3Z6\", \"Madagascar\" ],\n\t[ \"1560\", \"Kibo\", \"Craft\", \"M5C 2I9\", \"Hong Kong\" ],\n\t[ \"1561\", \"Carlos\", \"Buck\", \"89343\", \"Northern Mariana Islands\" ],\n\t[ \"1562\", \"Ivor\", \"Mooney\", \"M9D 2Y3\", \"Korea\" ],\n\t[ \"1563\", \"Armand\", \"Shields\", \"E8O 7X6\", \"Uzbekistan\" ],\n\t[ \"1564\", \"Grace\", \"Weeks\", \"G5B 3W5\", \"Nicaragua\" ],\n\t[ \"1565\", \"Reagan\", \"Mann\", \"J2E 5I1\", \"San Marino\" ],\n\t[ \"1566\", \"Quin\", \"Nolan\", \"Q9E 2Q0\", \"Turkey\" ],\n\t[ \"1567\", \"Kareem\", \"Jefferson\", \"91393\", \"Zambia\" ],\n\t[ \"1568\", \"Erica\", \"Mccoy\", \"C3P 3L0\", \"Viet Nam\" ],\n\t[ \"1569\", \"Sybill\", \"Larsen\", \"J3U 3L9\", \"Sierra Leone\" ],\n\t[ \"1570\", \"Angela\", \"Weber\", \"46559\", \"Croatia\" ],\n\t[ \"1571\", \"Mannix\", \"Noel\", \"94029\", \"Belgium\" ],\n\t[ \"1572\", \"Martina\", \"Travis\", \"20063\", \"Solomon Islands\" ],\n\t[ \"1573\", \"Dominic\", \"Whitehead\", \"83547\", \"Gibraltar\" ],\n\t[ \"1574\", \"Vladimir\", \"Hunter\", \"L3I 4G7\", \"Reunion\" ],\n\t[ \"1575\", \"Farrah\", \"Alexander\", \"18538\", \"Croatia\" ],\n\t[ \"1576\", \"Hop\", \"Burns\", \"X1C 7J6\", \"Saint Lucia\" ],\n\t[ \"1577\", \"Zelda\", \"Trevino\", \"L8P 7E9\", \"Guinea\" ],\n\t[ \"1578\", \"Nehru\", \"Decker\", \"Q1P 4Q9\", \"Western Sahara\" ],\n\t[ \"1579\", \"Shay\", \"Goff\", \"68576\", \"Sweden\" ],\n\t[ \"1580\", \"Dominic\", \"Martin\", \"C1M 9P2\", \"Denmark\" ],\n\t[ \"1581\", \"Heather\", \"Doyle\", \"Y7R 9H1\", \"Iran, Islamic Republic of\" ],\n\t[ \"1582\", \"Honorato\", \"Rojas\", \"29414\", \"India\" ],\n\t[ \"1583\", \"Florence\", \"England\", \"64669\", \"China\" ],\n\t[ \"1584\", \"Zane\", \"Reyes\", \"84771\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1585\", \"Scarlett\", \"Poole\", \"36928\", \"Algeria\" ],\n\t[ \"1586\", \"Dieter\", \"Brennan\", \"Y8V 5L2\", \"Colombia\" ],\n\t[ \"1587\", \"Jamal\", \"Whitney\", \"33428\", \"Turkey\" ],\n\t[ \"1588\", \"Evan\", \"Guy\", \"72119\", \"Slovakia\" ],\n\t[ \"1589\", \"Candace\", \"Bauer\", \"C8L 1P2\", \"Macedonia\" ],\n\t[ \"1590\", \"Naomi\", \"Pennington\", \"17350\", \"Tonga\" ],\n\t[ \"1591\", \"Celeste\", \"Banks\", \"R8R 4C8\", \"Anguilla\" ],\n\t[ \"1592\", \"Basil\", \"Elliott\", \"80065\", \"Singapore\" ],\n\t[ \"1593\", \"Darryl\", \"Wise\", \"33140\", \"Brunei Darussalam\" ],\n\t[ \"1594\", \"Marny\", \"Walls\", \"S1K 4V1\", \"Western Sahara\" ],\n\t[ \"1595\", \"Anastasia\", \"Meyer\", \"Z1F 8C2\", \"El Salvador\" ],\n\t[ \"1596\", \"Brynne\", \"Rivera\", \"48070\", \"Mexico\" ],\n\t[ \"1597\", \"Macey\", \"Johnston\", \"X9E 9J5\", \"Guadeloupe\" ],\n\t[ \"1598\", \"Bethany\", \"Marks\", \"46648\", \"Bhutan\" ],\n\t[ \"1599\", \"Kiayada\", \"Glass\", \"13661\", \"Christmas Island\" ],\n\t[ \"1600\", \"Veda\", \"Bowers\", \"D7S 1S9\", \"Korea\" ],\n\t[ \"1601\", \"Dante\", \"Kirk\", \"58404\", \"Guinea\" ],\n\t[ \"1602\", \"Judah\", \"Sloan\", \"04528\", \"Andorra\" ],\n\t[ \"1603\", \"Serena\", \"Giles\", \"12139\", \"Papua New Guinea\" ],\n\t[ \"1604\", \"Chase\", \"Hull\", \"27203\", \"Guinea-bissau\" ],\n\t[ \"1605\", \"Wallace\", \"Poole\", \"58919\", \"Christmas Island\" ],\n\t[ \"1606\", \"Deacon\", \"Lynn\", \"Z1H 9G4\", \"Kenya\" ],\n\t[ \"1607\", \"Igor\", \"Duncan\", \"X2V 2X1\", \"Christmas Island\" ],\n\t[ \"1608\", \"Walker\", \"Hopkins\", \"67256\", \"Bosnia and Herzegovina\" ],\n\t[ \"1609\", \"Serena\", \"Burnett\", \"Q4C 7Q0\", \"Canada\" ],\n\t[ \"1610\", \"Hedwig\", \"Burgess\", \"O2J 7A5\", \"Rwanda\" ],\n\t[ \"1611\", \"Amal\", \"Richmond\", \"34506\", \"Australia\" ],\n\t[ \"1612\", \"Rhona\", \"Gomez\", \"W2C 3I7\", \"Oman\" ],\n\t[ \"1613\", \"Kai\", \"Acosta\", \"N2O 7M2\", \"Uganda\" ],\n\t[ \"1614\", \"Henry\", \"Roman\", \"78113\", \"Guadeloupe\" ],\n\t[ \"1615\", \"Chester\", \"Good\", \"88809\", \"Norway\" ],\n\t[ \"1616\", \"Cleo\", \"Tanner\", \"73924\", \"Uganda\" ],\n\t[ \"1617\", \"Emi\", \"Lloyd\", \"59746\", \"South Africa\" ],\n\t[ \"1618\", \"Christopher\", \"Lopez\", \"76264\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1619\", \"Yvonne\", \"Mathews\", \"68655\", \"Saint Lucia\" ],\n\t[ \"1620\", \"Kimberly\", \"Mullen\", \"D6J 9G3\", \"Virgin Islands, British\" ],\n\t[ \"1621\", \"Hanna\", \"Slater\", \"F8F 9K5\", \"Montserrat\" ],\n\t[ \"1622\", \"Laura\", \"Dennis\", \"J6U 2G3\", \"Viet Nam\" ],\n\t[ \"1623\", \"Rogan\", \"Richards\", \"R1D 1B3\", \"Argentina\" ],\n\t[ \"1624\", \"Mira\", \"Rodriquez\", \"C3D 3E5\", \"Guinea\" ],\n\t[ \"1625\", \"Ezra\", \"Myers\", \"Y7Z 7X2\", \"Kuwait\" ],\n\t[ \"1626\", \"Jocelyn\", \"Martin\", \"E2F 3F2\", \"Algeria\" ],\n\t[ \"1627\", \"Denton\", \"Lee\", \"80903\", \"Congo\" ],\n\t[ \"1628\", \"Grace\", \"Leach\", \"86865\", \"Spain\" ],\n\t[ \"1629\", \"Clark\", \"Morrow\", \"12834\", \"Northern Mariana Islands\" ],\n\t[ \"1630\", \"Armando\", \"Calhoun\", \"I3I 1D4\", \"Spain\" ],\n\t[ \"1631\", \"George\", \"Decker\", \"R1B 6Q9\", \"Mali\" ],\n\t[ \"1632\", \"Jerome\", \"Salazar\", \"03831\", \"Faroe Islands\" ],\n\t[ \"1633\", \"Logan\", \"Santiago\", \"46269\", \"Hungary\" ],\n\t[ \"1634\", \"Gavin\", \"Tate\", \"Y3L 6G5\", \"Italy\" ],\n\t[ \"1635\", \"Chloe\", \"Jennings\", \"D9B 2H9\", \"Cambodia\" ],\n\t[ \"1636\", \"Rashad\", \"Knox\", \"T1V 4G5\", \"Germany\" ],\n\t[ \"1637\", \"Jin\", \"Roberts\", \"82928\", \"Azerbaijan\" ],\n\t[ \"1638\", \"Amity\", \"Guerrero\", \"F4G 2L4\", \"Viet Nam\" ],\n\t[ \"1639\", \"Carter\", \"Roberson\", \"53651\", \"Niue\" ],\n\t[ \"1640\", \"Slade\", \"Carson\", \"H9E 1G1\", \"Guyana\" ],\n\t[ \"1641\", \"Buckminster\", \"Christensen\", \"F5J 6T5\", \"Algeria\" ],\n\t[ \"1642\", \"Fallon\", \"Peters\", \"D9Y 5Q4\", \"Ethiopia\" ],\n\t[ \"1643\", \"Amy\", \"Barry\", \"D6F 3R4\", \"New Caledonia\" ],\n\t[ \"1644\", \"Calvin\", \"Buck\", \"18354\", \"Macedonia\" ],\n\t[ \"1645\", \"Kaye\", \"Haynes\", \"D9K 1X8\", \"Italy\" ],\n\t[ \"1646\", \"Shea\", \"Hammond\", \"R7P 3X8\", \"Guam\" ],\n\t[ \"1647\", \"Kiara\", \"Franks\", \"01185\", \"Mozambique\" ],\n\t[ \"1648\", \"Armando\", \"Oneil\", \"88972\", \"Bahrain\" ],\n\t[ \"1649\", \"Lesley\", \"Allen\", \"05171\", \"Belgium\" ],\n\t[ \"1650\", \"Ignatius\", \"Barrett\", \"94084\", \"Georgia\" ],\n\t[ \"1651\", \"Graham\", \"Maldonado\", \"76354\", \"Dominican Republic\" ],\n\t[ \"1652\", \"Briar\", \"Roman\", \"P9M 3A9\", \"Cayman Islands\" ],\n\t[ \"1653\", \"Germane\", \"Colon\", \"U3X 7S9\", \"Brazil\" ],\n\t[ \"1654\", \"Alvin\", \"Mcpherson\", \"58411\", \"Guinea\" ],\n\t[ \"1655\", \"Belle\", \"Sandoval\", \"87172\", \"Cyprus\" ],\n\t[ \"1656\", \"Eric\", \"Caldwell\", \"63246\", \"Guinea\" ],\n\t[ \"1657\", \"Nadine\", \"Dale\", \"T6E 4B0\", \"Denmark\" ],\n\t[ \"1658\", \"Dora\", \"Jimenez\", \"85463\", \"Nauru\" ],\n\t[ \"1659\", \"Mohammad\", \"Strickland\", \"H8B 9G2\", \"Japan\" ],\n\t[ \"1660\", \"Reagan\", \"Preston\", \"G5E 8S5\", \"Honduras\" ],\n\t[ \"1661\", \"Tamekah\", \"Daniel\", \"Z3X 6Q6\", \"Belarus\" ],\n\t[ \"1662\", \"Halee\", \"Mills\", \"23332\", \"Mayotte\" ],\n\t[ \"1663\", \"Courtney\", \"England\", \"09751\", \"Saint Kitts and Nevis\" ],\n\t[ \"1664\", \"Dai\", \"Arnold\", \"A2N 9J4\", \"Argentina\" ],\n\t[ \"1665\", \"Priscilla\", \"Reyes\", \"G2B 5M4\", \"Azerbaijan\" ],\n\t[ \"1666\", \"Brenda\", \"Stanley\", \"I6O 3I1\", \"Hungary\" ],\n\t[ \"1667\", \"Kasper\", \"Washington\", \"H4K 8K7\", \"Serbia and Montenegro\" ],\n\t[ \"1668\", \"Suki\", \"Hendricks\", \"L1K 5O9\", \"Norway\" ],\n\t[ \"1669\", \"Rebekah\", \"Mccormick\", \"89543\", \"Slovenia\" ],\n\t[ \"1670\", \"Oprah\", \"Rodriquez\", \"90034\", \"Costa Rica\" ],\n\t[ \"1671\", \"Ivory\", \"Matthews\", \"T9J 2A7\", \"Panama\" ],\n\t[ \"1672\", \"Ferris\", \"Garner\", \"93583\", \"Niue\" ],\n\t[ \"1673\", \"Melvin\", \"White\", \"X5U 9N8\", \"Nigeria\" ],\n\t[ \"1674\", \"Henry\", \"Swanson\", \"E7V 2C9\", \"Northern Mariana Islands\" ],\n\t[ \"1675\", \"Hadassah\", \"Eaton\", \"52798\", \"Albania\" ],\n\t[ \"1676\", \"Lisandra\", \"Sykes\", \"90838\", \"Namibia\" ],\n\t[ \"1677\", \"Honorato\", \"Bradshaw\", \"W3D 1Z9\", \"United States\" ],\n\t[ \"1678\", \"Aurelia\", \"Paul\", \"Z6E 6W9\", \"Malaysia\" ],\n\t[ \"1679\", \"Arthur\", \"Mann\", \"74673\", \"Bhutan\" ],\n\t[ \"1680\", \"Melissa\", \"Hernandez\", \"11742\", \"Dominican Republic\" ],\n\t[ \"1681\", \"Bert\", \"Mosley\", \"N2K 5U5\", \"Kuwait\" ],\n\t[ \"1682\", \"Sigourney\", \"Sharpe\", \"30204\", \"South Africa\" ],\n\t[ \"1683\", \"Ifeoma\", \"Woods\", \"39850\", \"Haiti\" ],\n\t[ \"1684\", \"Tyler\", \"Medina\", \"K6L 9V8\", \"Indonesia\" ],\n\t[ \"1685\", \"Karleigh\", \"Griffin\", \"G8Z 6W2\", \"Canada\" ],\n\t[ \"1686\", \"Brianna\", \"Collins\", \"11919\", \"New Caledonia\" ],\n\t[ \"1687\", \"Allistair\", \"Hampton\", \"O1X 2N7\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1688\", \"Carla\", \"Manning\", \"76866\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1689\", \"Jakeem\", \"Brewer\", \"Y1T 1D7\", \"Comoros\" ],\n\t[ \"1690\", \"Price\", \"Guerrero\", \"S7Z 8O1\", \"Christmas Island\" ],\n\t[ \"1691\", \"Harlan\", \"Sandoval\", \"58527\", \"Czech Republic\" ],\n\t[ \"1692\", \"Marcia\", \"Robinson\", \"64662\", \"Uganda\" ],\n\t[ \"1693\", \"Sylvester\", \"Hewitt\", \"81468\", \"Honduras\" ],\n\t[ \"1694\", \"Dawn\", \"Wood\", \"77743\", \"Malawi\" ],\n\t[ \"1695\", \"Farrah\", \"Nielsen\", \"E4N 9A9\", \"Christmas Island\" ],\n\t[ \"1696\", \"Tanisha\", \"Benjamin\", \"L2J 3G7\", \"Cape Verde\" ],\n\t[ \"1697\", \"Cherokee\", \"Atkins\", \"L7D 2L5\", \"Moldova\" ],\n\t[ \"1698\", \"Madaline\", \"Elliott\", \"H7K 8R4\", \"Barbados\" ],\n\t[ \"1699\", \"Odysseus\", \"Roy\", \"65008\", \"Slovakia\" ],\n\t[ \"1700\", \"Eaton\", \"Stein\", \"Z2V 7H0\", \"Moldova\" ],\n\t[ \"1701\", \"Rachel\", \"Hurley\", \"L6L 2B2\", \"Antigua and Barbuda\" ],\n\t[ \"1702\", \"Stacey\", \"Hardin\", \"O9U 1B7\", \"Montserrat\" ],\n\t[ \"1703\", \"Grady\", \"Montgomery\", \"75852\", \"Guinea-bissau\" ],\n\t[ \"1704\", \"Serena\", \"Douglas\", \"F5M 8Z6\", \"Mauritius\" ],\n\t[ \"1705\", \"Ralph\", \"Duke\", \"H7X 3M9\", \"Tunisia\" ],\n\t[ \"1706\", \"Charles\", \"Moody\", \"86445\", \"Pitcairn\" ],\n\t[ \"1707\", \"Mariam\", \"Lara\", \"07952\", \"United Kingdom\" ],\n\t[ \"1708\", \"Whitney\", \"Garza\", \"74001\", \"Norfolk Island\" ],\n\t[ \"1709\", \"Beverly\", \"Thornton\", \"69847\", \"Canada\" ],\n\t[ \"1710\", \"Helen\", \"Gentry\", \"Z8S 7U4\", \"Reunion\" ],\n\t[ \"1711\", \"Janna\", \"Gould\", \"W6C 6E1\", \"Burundi\" ],\n\t[ \"1712\", \"Jana\", \"Hooper\", \"A1R 9Y0\", \"Yemen\" ],\n\t[ \"1713\", \"Zachary\", \"Nicholson\", \"49616\", \"Gabon\" ],\n\t[ \"1714\", \"Julian\", \"Davis\", \"37608\", \"Anguilla\" ],\n\t[ \"1715\", \"Gay\", \"Knox\", \"51952\", \"Croatia\" ],\n\t[ \"1716\", \"Iola\", \"Moses\", \"16601\", \"French Polynesia\" ],\n\t[ \"1717\", \"Allegra\", \"Holder\", \"C9R 8J3\", \"Dominican Republic\" ],\n\t[ \"1718\", \"Cecilia\", \"Shannon\", \"62624\", \"Reunion\" ],\n\t[ \"1719\", \"Cora\", \"Peterson\", \"I9V 5P5\", \"Chad\" ],\n\t[ \"1720\", \"Stewart\", \"Mathews\", \"A5H 1E1\", \"Mexico\" ],\n\t[ \"1721\", \"Kathleen\", \"Lynn\", \"82408\", \"Honduras\" ],\n\t[ \"1722\", \"William\", \"Schneider\", \"25823\", \"Tajikistan\" ],\n\t[ \"1723\", \"Alice\", \"Mcconnell\", \"50155\", \"Russian Federation\" ],\n\t[ \"1724\", \"Timon\", \"Dillon\", \"93171\", \"Croatia\" ],\n\t[ \"1725\", \"Tanek\", \"Ellison\", \"Y7Q 5B1\", \"Malawi\" ],\n\t[ \"1726\", \"Tamekah\", \"Cummings\", \"03764\", \"Afghanistan\" ],\n\t[ \"1727\", \"Charlotte\", \"Chaney\", \"U7Y 7B0\", \"Kyrgyzstan\" ],\n\t[ \"1728\", \"Jason\", \"Conway\", \"37713\", \"Martinique\" ],\n\t[ \"1729\", \"Graiden\", \"Combs\", \"40454\", \"Turkmenistan\" ],\n\t[ \"1730\", \"Virginia\", \"Ortiz\", \"K9N 2Q4\", \"Malta\" ],\n\t[ \"1731\", \"Thomas\", \"Cannon\", \"W1H 3T9\", \"Cuba\" ],\n\t[ \"1732\", \"Galena\", \"Dominguez\", \"68072\", \"India\" ],\n\t[ \"1733\", \"Vaughan\", \"Petty\", \"15200\", \"Lesotho\" ],\n\t[ \"1734\", \"Buffy\", \"Saunders\", \"K1W 3B1\", \"Burkina Faso\" ],\n\t[ \"1735\", \"Chava\", \"Hill\", \"93461\", \"Iran, Islamic Republic of\" ],\n\t[ \"1736\", \"Sage\", \"Hampton\", \"R8Y 8J1\", \"Malta\" ],\n\t[ \"1737\", \"Nathaniel\", \"Whitney\", \"89097\", \"Ukraine\" ],\n\t[ \"1738\", \"Hector\", \"Hayden\", \"70774\", \"Netherlands\" ],\n\t[ \"1739\", \"Mercedes\", \"Freeman\", \"80848\", \"Croatia\" ],\n\t[ \"1740\", \"Vance\", \"Spencer\", \"25484\", \"Guyana\" ],\n\t[ \"1741\", \"Josephine\", \"Stevens\", \"E4D 9D1\", \"Netherlands Antilles\" ],\n\t[ \"1742\", \"Barbara\", \"Mcclure\", \"22602\", \"Cambodia\" ],\n\t[ \"1743\", \"Sydney\", \"Holder\", \"X4G 1Z7\", \"British Indian Ocean Territory\" ],\n\t[ \"1744\", \"Velma\", \"Evans\", \"83914\", \"New Zealand\" ],\n\t[ \"1745\", \"Francis\", \"Lane\", \"12545\", \"Serbia and Montenegro\" ],\n\t[ \"1746\", \"Garrison\", \"Brock\", \"19993\", \"Eritrea\" ],\n\t[ \"1747\", \"Quentin\", \"Santiago\", \"07085\", \"Norfolk Island\" ],\n\t[ \"1748\", \"Ivory\", \"Wilkerson\", \"79440\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1749\", \"Karyn\", \"Buckner\", \"D1Y 7D8\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1750\", \"Mari\", \"Bright\", \"24721\", \"Pakistan\" ],\n\t[ \"1751\", \"Dexter\", \"Garrison\", \"X3X 7G3\", \"Western Sahara\" ],\n\t[ \"1752\", \"Venus\", \"Acevedo\", \"V2F 8C0\", \"Poland\" ],\n\t[ \"1753\", \"Nayda\", \"Camacho\", \"F6H 6J5\", \"Northern Mariana Islands\" ],\n\t[ \"1754\", \"Avye\", \"Hartman\", \"G6V 2H0\", \"Hong Kong\" ],\n\t[ \"1755\", \"Kerry\", \"Baird\", \"M3Q 7B7\", \"Russian Federation\" ],\n\t[ \"1756\", \"Uma\", \"Herman\", \"C9A 4P3\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1757\", \"Amaya\", \"Roman\", \"97179\", \"Iceland\" ],\n\t[ \"1758\", \"Bruce\", \"Joyce\", \"18344\", \"Denmark\" ],\n\t[ \"1759\", \"Jarrod\", \"Alvarez\", \"59269\", \"Liberia\" ],\n\t[ \"1760\", \"Olivia\", \"Reilly\", \"99058\", \"Malaysia\" ],\n\t[ \"1761\", \"Benedict\", \"Hensley\", \"23105\", \"Uganda\" ],\n\t[ \"1762\", \"Lavinia\", \"Hunter\", \"44729\", \"Maldives\" ],\n\t[ \"1763\", \"Bradley\", \"Gomez\", \"65125\", \"Belize\" ],\n\t[ \"1764\", \"Keely\", \"Burris\", \"18390\", \"Brunei Darussalam\" ],\n\t[ \"1765\", \"Autumn\", \"England\", \"E5D 7A5\", \"Kyrgyzstan\" ],\n\t[ \"1766\", \"Jane\", \"Blair\", \"S1W 4O0\", \"Bangladesh\" ],\n\t[ \"1767\", \"Chancellor\", \"Barrett\", \"E9F 1I1\", \"Fiji\" ],\n\t[ \"1768\", \"Whitney\", \"Morin\", \"G5T 4E7\", \"Aruba\" ],\n\t[ \"1769\", \"Madeline\", \"Sparks\", \"W7L 7E0\", \"Belize\" ],\n\t[ \"1770\", \"Dale\", \"Estes\", \"82712\", \"Guam\" ],\n\t[ \"1771\", \"Hakeem\", \"Buck\", \"O6K 1I8\", \"Singapore\" ],\n\t[ \"1772\", \"Alexandra\", \"Burns\", \"12697\", \"Portugal\" ],\n\t[ \"1773\", \"Winifred\", \"Gill\", \"Z8B 8B8\", \"Uruguay\" ],\n\t[ \"1774\", \"Gail\", \"Gomez\", \"S1V 3N8\", \"American Samoa\" ],\n\t[ \"1775\", \"Moana\", \"Brady\", \"18835\", \"Wallis and Futuna\" ],\n\t[ \"1776\", \"Martha\", \"Oliver\", \"81962\", \"Bolivia\" ],\n\t[ \"1777\", \"Nayda\", \"Wooten\", \"00071\", \"Palau\" ],\n\t[ \"1778\", \"Bryar\", \"Collier\", \"50631\", \"Mexico\" ],\n\t[ \"1779\", \"Penelope\", \"Bradshaw\", \"A6A 9M2\", \"Lebanon\" ],\n\t[ \"1780\", \"Wyatt\", \"Lara\", \"75486\", \"Slovenia\" ],\n\t[ \"1781\", \"Wang\", \"Odonnell\", \"N5X 1N5\", \"Bahamas\" ],\n\t[ \"1782\", \"Chiquita\", \"Harrell\", \"21691\", \"Guadeloupe\" ],\n\t[ \"1783\", \"Byron\", \"Blankenship\", \"M8A 3L4\", \"Syrian Arab Republic\" ],\n\t[ \"1784\", \"Holmes\", \"Stokes\", \"81039\", \"Mauritania\" ],\n\t[ \"1785\", \"Naomi\", \"Phillips\", \"56287\", \"Switzerland\" ],\n\t[ \"1786\", \"Quyn\", \"Johnson\", \"D2T 6B7\", \"Czech Republic\" ],\n\t[ \"1787\", \"Gillian\", \"Sanders\", \"50542\", \"Colombia\" ],\n\t[ \"1788\", \"Hope\", \"Benjamin\", \"67423\", \"Bolivia\" ],\n\t[ \"1789\", \"Bryar\", \"Dean\", \"U9V 9E5\", \"Guatemala\" ],\n\t[ \"1790\", \"Karyn\", \"Swanson\", \"S6H 3R8\", \"Israel\" ],\n\t[ \"1791\", \"Amena\", \"David\", \"02286\", \"French Polynesia\" ],\n\t[ \"1792\", \"Ira\", \"Joyner\", \"37335\", \"Cayman Islands\" ],\n\t[ \"1793\", \"Tanek\", \"Oneil\", \"75041\", \"Slovenia\" ],\n\t[ \"1794\", \"Dolan\", \"Miles\", \"K7Q 9U8\", \"Maldives\" ],\n\t[ \"1795\", \"Wang\", \"Keith\", \"88116\", \"Congo\" ],\n\t[ \"1796\", \"Wylie\", \"Bryant\", \"93369\", \"Andorra\" ],\n\t[ \"1797\", \"Heather\", \"Bryant\", \"78015\", \"French Polynesia\" ],\n\t[ \"1798\", \"Regina\", \"Wagner\", \"29087\", \"Virgin Islands, British\" ],\n\t[ \"1799\", \"Nathan\", \"Bush\", \"J5S 9L0\", \"Viet Nam\" ],\n\t[ \"1800\", \"Charity\", \"Dawson\", \"29508\", \"Greece\" ],\n\t[ \"1801\", \"Ulric\", \"Guzman\", \"I6R 6P6\", \"Micronesia\" ],\n\t[ \"1802\", \"Keefe\", \"Scott\", \"J1R 8T6\", \"Uzbekistan\" ],\n\t[ \"1803\", \"Florence\", \"Price\", \"U7P 8F6\", \"Taiwan, Province of China\" ],\n\t[ \"1804\", \"Griffith\", \"England\", \"92557\", \"China\" ],\n\t[ \"1805\", \"Kay\", \"Nielsen\", \"85991\", \"Suriname\" ],\n\t[ \"1806\", \"Tamekah\", \"Blackburn\", \"47324\", \"Panama\" ],\n\t[ \"1807\", \"Indira\", \"Crosby\", \"64463\", \"Trinidad and Tobago\" ],\n\t[ \"1808\", \"Pamela\", \"Vasquez\", \"K2Q 9A1\", \"Ghana\" ],\n\t[ \"1809\", \"Patricia\", \"Haley\", \"51509\", \"Jordan\" ],\n\t[ \"1810\", \"Nevada\", \"Prince\", \"41315\", \"Tokelau\" ],\n\t[ \"1811\", \"Martin\", \"Wilkerson\", \"Y8X 4Y5\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1812\", \"Deirdre\", \"Castaneda\", \"X1S 5E2\", \"Bahrain\" ],\n\t[ \"1813\", \"Cara\", \"Flynn\", \"68372\", \"Azerbaijan\" ],\n\t[ \"1814\", \"Sylvia\", \"Alexander\", \"E5F 9M5\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1815\", \"Macon\", \"Suarez\", \"69866\", \"Tunisia\" ],\n\t[ \"1816\", \"Hammett\", \"Haney\", \"09768\", \"Bangladesh\" ],\n\t[ \"1817\", \"Geoffrey\", \"Simmons\", \"61986\", \"Burundi\" ],\n\t[ \"1818\", \"Danielle\", \"Kelly\", \"71568\", \"Mali\" ],\n\t[ \"1819\", \"Wing\", \"Brown\", \"U4D 6L1\", \"Uzbekistan\" ],\n\t[ \"1820\", \"Len\", \"Barber\", \"40311\", \"Suriname\" ],\n\t[ \"1821\", \"Richard\", \"Wilson\", \"W9E 6D7\", \"Finland\" ],\n\t[ \"1822\", \"Keaton\", \"Hayes\", \"55696\", \"Slovakia\" ],\n\t[ \"1823\", \"Dora\", \"Chaney\", \"57297\", \"United States Minor Outlying Islands\" ],\n\t[ \"1824\", \"Alexandra\", \"Pruitt\", \"17207\", \"Turkmenistan\" ],\n\t[ \"1825\", \"Deanna\", \"Gomez\", \"C9M 9K0\", \"Paraguay\" ],\n\t[ \"1826\", \"Laura\", \"Downs\", \"74422\", \"Antigua and Barbuda\" ],\n\t[ \"1827\", \"Jolene\", \"Lucas\", \"K9E 6U4\", \"Tokelau\" ],\n\t[ \"1828\", \"Lucy\", \"Marquez\", \"L1N 4O4\", \"Argentina\" ],\n\t[ \"1829\", \"Abbot\", \"Bishop\", \"G8W 7I1\", \"Guinea-bissau\" ],\n\t[ \"1830\", \"Aaron\", \"Bowman\", \"K8A 5K7\", \"Greece\" ],\n\t[ \"1831\", \"Candace\", \"Lee\", \"58901\", \"Turks and Caicos Islands\" ],\n\t[ \"1832\", \"Larissa\", \"Allen\", \"O1I 4X0\", \"Belgium\" ],\n\t[ \"1833\", \"Linda\", \"Malone\", \"31211\", \"United Arab Emirates\" ],\n\t[ \"1834\", \"Grace\", \"Daugherty\", \"62610\", \"Cyprus\" ],\n\t[ \"1835\", \"Kyra\", \"Berry\", \"T2F 3E5\", \"Netherlands Antilles\" ],\n\t[ \"1836\", \"Hadassah\", \"Willis\", \"C7H 5V4\", \"El Salvador\" ],\n\t[ \"1837\", \"Kyle\", \"Fitzgerald\", \"X1V 2R9\", \"Croatia\" ],\n\t[ \"1838\", \"Graiden\", \"Atkinson\", \"L9Q 6H8\", \"Thailand\" ],\n\t[ \"1839\", \"Raymond\", \"Fletcher\", \"59574\", \"Argentina\" ],\n\t[ \"1840\", \"Keaton\", \"Barnett\", \"O2G 6B4\", \"Papua New Guinea\" ],\n\t[ \"1841\", \"Farrah\", \"Kramer\", \"21928\", \"Netherlands Antilles\" ],\n\t[ \"1842\", \"Christian\", \"Sellers\", \"55504\", \"Timor-leste\" ],\n\t[ \"1843\", \"Keith\", \"Cohen\", \"D9T 7D0\", \"Italy\" ],\n\t[ \"1844\", \"Karleigh\", \"Bruce\", \"F2A 5H9\", \"Montserrat\" ],\n\t[ \"1845\", \"Julie\", \"Avery\", \"T4T 3Y7\", \"Nepal\" ],\n\t[ \"1846\", \"Hollee\", \"Deleon\", \"47524\", \"Oman\" ],\n\t[ \"1847\", \"Charity\", \"Booker\", \"61071\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1848\", \"Flynn\", \"Bond\", \"E8L 9D2\", \"Afghanistan\" ],\n\t[ \"1849\", \"Sybill\", \"Roth\", \"16453\", \"Saudi Arabia\" ],\n\t[ \"1850\", \"Alyssa\", \"Juarez\", \"04466\", \"Singapore\" ],\n\t[ \"1851\", \"Jennifer\", \"Odonnell\", \"59277\", \"Tuvalu\" ],\n\t[ \"1852\", \"Carissa\", \"Byrd\", \"80861\", \"Palau\" ],\n\t[ \"1853\", \"Coby\", \"Barrett\", \"04665\", \"Congo\" ],\n\t[ \"1854\", \"Bertha\", \"Paul\", \"46442\", \"Andorra\" ],\n\t[ \"1855\", \"Hayden\", \"Dennis\", \"K7E 3O1\", \"France\" ],\n\t[ \"1856\", \"Kadeem\", \"Berry\", \"39544\", \"Vanuatu\" ],\n\t[ \"1857\", \"Clayton\", \"Burns\", \"C2A 6W5\", \"Andorra\" ],\n\t[ \"1858\", \"Breanna\", \"Hardy\", \"12284\", \"Norway\" ],\n\t[ \"1859\", \"Yael\", \"Hester\", \"69399\", \"Hong Kong\" ],\n\t[ \"1860\", \"Hunter\", \"Harding\", \"M4O 6N5\", \"Bosnia and Herzegovina\" ],\n\t[ \"1861\", \"Breanna\", \"Sutton\", \"N2C 6K3\", \"Singapore\" ],\n\t[ \"1862\", \"Bo\", \"Huffman\", \"54558\", \"Taiwan, Province of China\" ],\n\t[ \"1863\", \"Zena\", \"Potts\", \"80326\", \"Czech Republic\" ],\n\t[ \"1864\", \"Lucian\", \"Sykes\", \"D4M 6M5\", \"Trinidad and Tobago\" ],\n\t[ \"1865\", \"Gabriel\", \"Shepherd\", \"77631\", \"Bahrain\" ],\n\t[ \"1866\", \"Vivian\", \"Gould\", \"29510\", \"Norway\" ],\n\t[ \"1867\", \"Ina\", \"Sherman\", \"08122\", \"Portugal\" ],\n\t[ \"1868\", \"Constance\", \"Parsons\", \"D6E 9J8\", \"Armenia\" ],\n\t[ \"1869\", \"Tallulah\", \"Woodard\", \"51380\", \"Bahamas\" ],\n\t[ \"1870\", \"Amos\", \"Morris\", \"37846\", \"Switzerland\" ],\n\t[ \"1871\", \"Charles\", \"Kinney\", \"45961\", \"Marshall Islands\" ],\n\t[ \"1872\", \"Colby\", \"Camacho\", \"02978\", \"Niger\" ],\n\t[ \"1873\", \"Ora\", \"Hays\", \"B6F 9Z9\", \"Martinique\" ],\n\t[ \"1874\", \"Ariel\", \"Cannon\", \"04559\", \"Burundi\" ],\n\t[ \"1875\", \"Beatrice\", \"Hull\", \"66569\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1876\", \"Stacey\", \"Morrow\", \"53760\", \"Zimbabwe\" ],\n\t[ \"1877\", \"Naida\", \"Thomas\", \"43434\", \"Virgin Islands, U.S.\" ],\n\t[ \"1878\", \"Holly\", \"Holcomb\", \"31997\", \"Kazakhstan\" ],\n\t[ \"1879\", \"Lee\", \"Davenport\", \"99355\", \"Central African Republic\" ],\n\t[ \"1880\", \"Gary\", \"Higgins\", \"18703\", \"Norway\" ],\n\t[ \"1881\", \"Kay\", \"Wolf\", \"25509\", \"Switzerland\" ],\n\t[ \"1882\", \"Destiny\", \"Patel\", \"Q3X 2F8\", \"Ghana\" ],\n\t[ \"1883\", \"Clayton\", \"Middleton\", \"Y5C 1I8\", \"Antigua and Barbuda\" ],\n\t[ \"1884\", \"May\", \"Rivers\", \"26782\", \"Uzbekistan\" ],\n\t[ \"1885\", \"Hadassah\", \"Caldwell\", \"64493\", \"Chile\" ],\n\t[ \"1886\", \"Penelope\", \"Gentry\", \"V5N 7A6\", \"Kyrgyzstan\" ],\n\t[ \"1887\", \"James\", \"Boyle\", \"95421\", \"Indonesia\" ],\n\t[ \"1888\", \"Yuli\", \"Cardenas\", \"W4U 5U1\", \"Solomon Islands\" ],\n\t[ \"1889\", \"George\", \"Simpson\", \"30385\", \"Brazil\" ],\n\t[ \"1890\", \"Thaddeus\", \"Ferrell\", \"E6Z 2D4\", \"Norfolk Island\" ],\n\t[ \"1891\", \"Piper\", \"Morrow\", \"S6I 1L8\", \"Estonia\" ],\n\t[ \"1892\", \"Xaviera\", \"Heath\", \"L8I 5G1\", \"Afghanistan\" ],\n\t[ \"1893\", \"Odette\", \"Patton\", \"L2S 4I8\", \"Bosnia and Herzegovina\" ],\n\t[ \"1894\", \"Stewart\", \"Phillips\", \"E8E 5W6\", \"El Salvador\" ],\n\t[ \"1895\", \"Kellie\", \"Cooper\", \"77401\", \"Cape Verde\" ],\n\t[ \"1896\", \"Kathleen\", \"Salinas\", \"F3O 4Z9\", \"Sierra Leone\" ],\n\t[ \"1897\", \"Fallon\", \"Bennett\", \"X3P 7L1\", \"Macedonia\" ],\n\t[ \"1898\", \"Jesse\", \"Guerrero\", \"I2B 1Q0\", \"Finland\" ],\n\t[ \"1899\", \"Zenaida\", \"Mcguire\", \"M5R 1X6\", \"Kenya\" ],\n\t[ \"1900\", \"Carolyn\", \"Richards\", \"03060\", \"Paraguay\" ],\n\t[ \"1901\", \"Ulla\", \"Bruce\", \"20940\", \"Cambodia\" ],\n\t[ \"1902\", \"Adrian\", \"Shaffer\", \"M5O 9Y2\", \"Thailand\" ],\n\t[ \"1903\", \"Callum\", \"Russo\", \"L3U 5S8\", \"Holy See (Vatican City State)\" ],\n\t[ \"1904\", \"Echo\", \"Mathews\", \"49158\", \"Spain\" ],\n\t[ \"1905\", \"Driscoll\", \"Buckner\", \"70115\", \"Solomon Islands\" ],\n\t[ \"1906\", \"Nayda\", \"Phillips\", \"Y7D 4A9\", \"Singapore\" ],\n\t[ \"1907\", \"Piper\", \"Livingston\", \"51701\", \"Anguilla\" ],\n\t[ \"1908\", \"Zoe\", \"Hoover\", \"C8D 8W2\", \"Iraq\" ],\n\t[ \"1909\", \"Veronica\", \"Montoya\", \"G6B 9S4\", \"Egypt\" ],\n\t[ \"1910\", \"Kato\", \"Richmond\", \"41268\", \"Saint Helena\" ],\n\t[ \"1911\", \"Kevyn\", \"Lancaster\", \"71863\", \"Montserrat\" ],\n\t[ \"1912\", \"Rowan\", \"Carr\", \"90825\", \"Ethiopia\" ],\n\t[ \"1913\", \"Alec\", \"Wells\", \"C9P 8I7\", \"Netherlands\" ],\n\t[ \"1914\", \"Graham\", \"Shields\", \"S4B 5O9\", \"Norfolk Island\" ],\n\t[ \"1915\", \"Pearl\", \"Austin\", \"43642\", \"Bermuda\" ],\n\t[ \"1916\", \"Dana\", \"Pugh\", \"H4C 2A9\", \"Tuvalu\" ],\n\t[ \"1917\", \"Lucy\", \"Ellis\", \"31272\", \"Cameroon\" ],\n\t[ \"1918\", \"Logan\", \"Wright\", \"18651\", \"Honduras\" ],\n\t[ \"1919\", \"Chantale\", \"Velasquez\", \"A5D 3X2\", \"Burundi\" ],\n\t[ \"1920\", \"Linda\", \"Ingram\", \"R1P 1G8\", \"Myanmar\" ],\n\t[ \"1921\", \"Ginger\", \"Howell\", \"Q5D 4E6\", \"Pakistan\" ],\n\t[ \"1922\", \"Unity\", \"Lester\", \"P7M 7A4\", \"Gibraltar\" ],\n\t[ \"1923\", \"Brett\", \"Rutledge\", \"Q1E 2B4\", \"Thailand\" ],\n\t[ \"1924\", \"Stewart\", \"Morrow\", \"84299\", \"Mali\" ],\n\t[ \"1925\", \"Declan\", \"Aguilar\", \"35400\", \"Kenya\" ],\n\t[ \"1926\", \"Shad\", \"Simpson\", \"N8E 2U3\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1927\", \"Alma\", \"Benton\", \"Q6C 5D2\", \"Pakistan\" ],\n\t[ \"1928\", \"Herman\", \"Bailey\", \"P5K 2X4\", \"Ireland\" ],\n\t[ \"1929\", \"Keegan\", \"Mendez\", \"19421\", \"Lesotho\" ],\n\t[ \"1930\", \"Erasmus\", \"Foreman\", \"J9T 1A2\", \"Panama\" ],\n\t[ \"1931\", \"Tarik\", \"Meyers\", \"Z8V 5F9\", \"Cape Verde\" ],\n\t[ \"1932\", \"Donovan\", \"Knox\", \"B8N 1G7\", \"Iceland\" ],\n\t[ \"1933\", \"Chloe\", \"Mccray\", \"67537\", \"United Arab Emirates\" ],\n\t[ \"1934\", \"Marvin\", \"Edwards\", \"21809\", \"Ukraine\" ],\n\t[ \"1935\", \"Freya\", \"Watkins\", \"80099\", \"Central African Republic\" ],\n\t[ \"1936\", \"Jerry\", \"Morgan\", \"C7U 7H5\", \"Guinea\" ],\n\t[ \"1937\", \"Yardley\", \"Marsh\", \"23654\", \"India\" ],\n\t[ \"1938\", \"Ava\", \"Mueller\", \"83374\", \"Greece\" ],\n\t[ \"1939\", \"Silas\", \"Joseph\", \"P5M 7F2\", \"Sweden\" ],\n\t[ \"1940\", \"Winifred\", \"Solis\", \"12335\", \"Viet Nam\" ],\n\t[ \"1941\", \"Virginia\", \"Cantu\", \"K4C 3S5\", \"Yemen\" ],\n\t[ \"1942\", \"Sade\", \"Cole\", \"40295\", \"Spain\" ],\n\t[ \"1943\", \"Ethan\", \"Hodges\", \"R7W 8X2\", \"Congo\" ],\n\t[ \"1944\", \"Barbara\", \"Day\", \"K6L 7S6\", \"Nigeria\" ],\n\t[ \"1945\", \"Conan\", \"Simon\", \"22124\", \"Guyana\" ],\n\t[ \"1946\", \"Lars\", \"Puckett\", \"R6Y 4N7\", \"Trinidad and Tobago\" ],\n\t[ \"1947\", \"Quin\", \"Ewing\", \"99053\", \"American Samoa\" ],\n\t[ \"1948\", \"Ali\", \"Haynes\", \"N6Z 7X0\", \"China\" ],\n\t[ \"1949\", \"Sara\", \"Wagner\", \"74544\", \"Chad\" ],\n\t[ \"1950\", \"Griffith\", \"Fuentes\", \"R1W 6Z9\", \"Slovenia\" ],\n\t[ \"1951\", \"Sharon\", \"Crane\", \"I2Z 9D6\", \"Philippines\" ],\n\t[ \"1952\", \"Marsden\", \"Acosta\", \"K6C 8C5\", \"Jordan\" ],\n\t[ \"1953\", \"Whoopi\", \"Villarreal\", \"E2O 1T5\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1954\", \"Bruno\", \"Ball\", \"31931\", \"Barbados\" ],\n\t[ \"1955\", \"Ulric\", \"Young\", \"T4R 3M5\", \"Solomon Islands\" ],\n\t[ \"1956\", \"Noah\", \"Gonzalez\", \"L3O 6V5\", \"Mayotte\" ],\n\t[ \"1957\", \"Cheryl\", \"Gilliam\", \"F4Q 4H9\", \"Albania\" ],\n\t[ \"1958\", \"Bo\", \"Rowe\", \"67020\", \"Jamaica\" ],\n\t[ \"1959\", \"Kelly\", \"Alexander\", \"P8Y 9K5\", \"Somalia\" ],\n\t[ \"1960\", \"Hop\", \"Navarro\", \"O1G 9R6\", \"Cayman Islands\" ],\n\t[ \"1961\", \"Zachery\", \"Howard\", \"67147\", \"Fiji\" ],\n\t[ \"1962\", \"Elvis\", \"Daugherty\", \"X8V 7S7\", \"Jordan\" ],\n\t[ \"1963\", \"Mallory\", \"Hensley\", \"A5S 1U6\", \"Swaziland\" ],\n\t[ \"1964\", \"Fulton\", \"Williams\", \"P4C 4O5\", \"Viet Nam\" ],\n\t[ \"1965\", \"Madison\", \"Pittman\", \"F8G 1P9\", \"Chile\" ],\n\t[ \"1966\", \"Kermit\", \"Bradford\", \"W2T 6I5\", \"Uganda\" ],\n\t[ \"1967\", \"Gabriel\", \"Ballard\", \"N5M 6W0\", \"Andorra\" ],\n\t[ \"1968\", \"Jasmine\", \"Barber\", \"M2Z 7G5\", \"French Guiana\" ],\n\t[ \"1969\", \"Thane\", \"Koch\", \"21097\", \"Armenia\" ],\n\t[ \"1970\", \"Montana\", \"Oneal\", \"L2A 9Q6\", \"South Africa\" ],\n\t[ \"1971\", \"Brett\", \"Coleman\", \"79399\", \"Luxembourg\" ],\n\t[ \"1972\", \"Ivy\", \"Jimenez\", \"28549\", \"Senegal\" ],\n\t[ \"1973\", \"Shad\", \"Melton\", \"Z8N 4Z5\", \"Cook Islands\" ],\n\t[ \"1974\", \"Suki\", \"Vance\", \"H1A 1Z3\", \"Ireland\" ],\n\t[ \"1975\", \"Jin\", \"Hodges\", \"L2I 3T8\", \"France\" ],\n\t[ \"1976\", \"Diana\", \"Booth\", \"M3V 1S8\", \"Iran, Islamic Republic of\" ],\n\t[ \"1977\", \"Martha\", \"Nunez\", \"27837\", \"Northern Mariana Islands\" ],\n\t[ \"1978\", \"Silas\", \"Ayers\", \"17121\", \"United States\" ],\n\t[ \"1979\", \"Ainsley\", \"Whitaker\", \"42695\", \"Dominica\" ],\n\t[ \"1980\", \"Dillon\", \"Tucker\", \"N3R 3P3\", \"Botswana\" ],\n\t[ \"1981\", \"Lillian\", \"West\", \"57665\", \"Palau\" ],\n\t[ \"1982\", \"Talon\", \"Hart\", \"Z6T 4W3\", \"Serbia and Montenegro\" ],\n\t[ \"1983\", \"Desiree\", \"Booth\", \"Q1W 9S1\", \"Gambia\" ],\n\t[ \"1984\", \"Chastity\", \"Merrill\", \"F3B 9W7\", \"Puerto Rico\" ],\n\t[ \"1985\", \"Nichole\", \"Leon\", \"T7V 5D6\", \"Belize\" ],\n\t[ \"1986\", \"Rafael\", \"Washington\", \"87676\", \"Eritrea\" ],\n\t[ \"1987\", \"Samson\", \"Mathews\", \"G7Q 5V6\", \"Burkina Faso\" ],\n\t[ \"1988\", \"Jasper\", \"Campbell\", \"23791\", \"Thailand\" ],\n\t[ \"1989\", \"Mason\", \"Harrington\", \"R9R 5S3\", \"Nigeria\" ],\n\t[ \"1990\", \"Jameson\", \"Frederick\", \"R1N 4S0\", \"Guyana\" ],\n\t[ \"1991\", \"Cadman\", \"Woodard\", \"43080\", \"Gambia\" ],\n\t[ \"1992\", \"Catherine\", \"Gill\", \"W4W 8A4\", \"Philippines\" ],\n\t[ \"1993\", \"Yael\", \"Richards\", \"99504\", \"Kenya\" ],\n\t[ \"1994\", \"Porter\", \"Finley\", \"C8Z 5E0\", \"Brunei Darussalam\" ],\n\t[ \"1995\", \"Alden\", \"Merritt\", \"P4E 9F0\", \"Mali\" ],\n\t[ \"1996\", \"Kaye\", \"Andrews\", \"I5I 3A4\", \"Cayman Islands\" ],\n\t[ \"1997\", \"Luke\", \"Bryant\", \"F3Z 2U1\", \"Kuwait\" ],\n\t[ \"1998\", \"Heather\", \"Blackburn\", \"L1T 6B9\", \"Mongolia\" ],\n\t[ \"1999\", \"Gage\", \"Sykes\", \"L9Q 7E6\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2000\", \"Kaseem\", \"Harris\", \"B9O 1C3\", \"Korea\" ],\n\t[ \"2001\", \"Quail\", \"Leonard\", \"88755\", \"Burkina Faso\" ],\n\t[ \"2002\", \"Dennis\", \"Craft\", \"13309\", \"Namibia\" ],\n\t[ \"2003\", \"Ivor\", \"Forbes\", \"C3P 2E1\", \"Malta\" ],\n\t[ \"2004\", \"Cade\", \"Herman\", \"R1E 5X9\", \"Sri Lanka\" ],\n\t[ \"2005\", \"Larissa\", \"Santiago\", \"57781\", \"Dominica\" ],\n\t[ \"2006\", \"Hyatt\", \"Tillman\", \"45071\", \"Ghana\" ],\n\t[ \"2007\", \"Timothy\", \"Rodgers\", \"F8W 9W0\", \"Andorra\" ],\n\t[ \"2008\", \"Hanae\", \"Powell\", \"F8B 7P7\", \"Luxembourg\" ],\n\t[ \"2009\", \"Ima\", \"Pennington\", \"Z5W 5N5\", \"Latvia\" ],\n\t[ \"2010\", \"Laurel\", \"Bell\", \"16805\", \"Venezuela\" ],\n\t[ \"2011\", \"Avye\", \"Long\", \"04794\", \"Dominica\" ],\n\t[ \"2012\", \"Lysandra\", \"Pierce\", \"H7O 3F4\", \"Zimbabwe\" ],\n\t[ \"2013\", \"Eve\", \"Pollard\", \"L5K 6E2\", \"Algeria\" ],\n\t[ \"2014\", \"Ina\", \"Mcdowell\", \"65712\", \"Saint Lucia\" ],\n\t[ \"2015\", \"Meredith\", \"Serrano\", \"V8M 6K7\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2016\", \"Daphne\", \"Irwin\", \"89933\", \"Mongolia\" ],\n\t[ \"2017\", \"Adam\", \"Henson\", \"F6U 9D5\", \"Chile\" ],\n\t[ \"2018\", \"Amery\", \"Hoover\", \"13408\", \"Mongolia\" ],\n\t[ \"2019\", \"Quamar\", \"Hendricks\", \"20310\", \"Gambia\" ],\n\t[ \"2020\", \"Ori\", \"Wheeler\", \"89005\", \"Nigeria\" ],\n\t[ \"2021\", \"Zena\", \"Douglas\", \"Z1O 6F9\", \"Serbia and Montenegro\" ],\n\t[ \"2022\", \"Buckminster\", \"Huffman\", \"R4V 9L2\", \"Mali\" ],\n\t[ \"2023\", \"Harlan\", \"Gamble\", \"U4I 7M4\", \"Guyana\" ],\n\t[ \"2024\", \"Dalton\", \"Cline\", \"63829\", \"Tonga\" ],\n\t[ \"2025\", \"Martha\", \"Weber\", \"Z9B 4T0\", \"Bangladesh\" ],\n\t[ \"2026\", \"Vernon\", \"Francis\", \"M5A 9X7\", \"Tokelau\" ],\n\t[ \"2027\", \"Janna\", \"Velazquez\", \"67406\", \"Qatar\" ],\n\t[ \"2028\", \"Fuller\", \"Keller\", \"80871\", \"Burkina Faso\" ],\n\t[ \"2029\", \"Jamal\", \"Spears\", \"42197\", \"Norfolk Island\" ],\n\t[ \"2030\", \"Christen\", \"Holcomb\", \"29806\", \"Norway\" ],\n\t[ \"2031\", \"Mary\", \"Carter\", \"C6W 9K9\", \"Belgium\" ],\n\t[ \"2032\", \"Colorado\", \"Austin\", \"62904\", \"Cook Islands\" ],\n\t[ \"2033\", \"Fritz\", \"Hunt\", \"X8G 2V0\", \"Morocco\" ],\n\t[ \"2034\", \"Isabella\", \"Bush\", \"17676\", \"Monaco\" ],\n\t[ \"2035\", \"Adam\", \"Gilliam\", \"H7K 9X3\", \"Indonesia\" ],\n\t[ \"2036\", \"John\", \"Austin\", \"O7X 4Z0\", \"Czech Republic\" ],\n\t[ \"2037\", \"Cassady\", \"Yates\", \"68835\", \"Christmas Island\" ],\n\t[ \"2038\", \"Ori\", \"Cantrell\", \"56920\", \"Guinea\" ],\n\t[ \"2039\", \"May\", \"Horn\", \"47805\", \"Kuwait\" ],\n\t[ \"2040\", \"Skyler\", \"Clarke\", \"64131\", \"Lebanon\" ],\n\t[ \"2041\", \"Levi\", \"Foster\", \"S5Q 4B2\", \"Germany\" ],\n\t[ \"2042\", \"Veda\", \"Wilkinson\", \"L7Z 9M8\", \"Niger\" ],\n\t[ \"2043\", \"Brendan\", \"Levine\", \"L5B 9P4\", \"Nepal\" ],\n\t[ \"2044\", \"Carson\", \"Sullivan\", \"93066\", \"United Arab Emirates\" ],\n\t[ \"2045\", \"Steven\", \"Spencer\", \"F1V 9A7\", \"Pitcairn\" ],\n\t[ \"2046\", \"Halla\", \"Michael\", \"N1U 1E7\", \"Seychelles\" ],\n\t[ \"2047\", \"Jamal\", \"Hobbs\", \"G3D 6J7\", \"New Caledonia\" ],\n\t[ \"2048\", \"Steel\", \"Bush\", \"U8F 6T2\", \"Belize\" ],\n\t[ \"2049\", \"Ahmed\", \"Dennis\", \"M6E 3P3\", \"Afghanistan\" ],\n\t[ \"2050\", \"Aspen\", \"Estes\", \"32157\", \"American Samoa\" ],\n\t[ \"2051\", \"Peter\", \"Kelly\", \"91773\", \"Morocco\" ],\n\t[ \"2052\", \"Xandra\", \"Grimes\", \"66702\", \"Tokelau\" ],\n\t[ \"2053\", \"Michael\", \"Battle\", \"J2J 2N5\", \"Honduras\" ],\n\t[ \"2054\", \"Steel\", \"Wiggins\", \"34625\", \"United States Minor Outlying Islands\" ],\n\t[ \"2055\", \"Holmes\", \"Christian\", \"45402\", \"Liechtenstein\" ],\n\t[ \"2056\", \"Charles\", \"Barrett\", \"O4N 9N8\", \"Lebanon\" ],\n\t[ \"2057\", \"Hermione\", \"Soto\", \"C8E 4H8\", \"Congo\" ],\n\t[ \"2058\", \"Elton\", \"Maxwell\", \"89033\", \"Madagascar\" ],\n\t[ \"2059\", \"Zelda\", \"Burks\", \"B7W 5G7\", \"Sweden\" ],\n\t[ \"2060\", \"Lynn\", \"David\", \"P3D 5K5\", \"Chad\" ],\n\t[ \"2061\", \"Margaret\", \"Neal\", \"47438\", \"Western Sahara\" ],\n\t[ \"2062\", \"David\", \"Vaughan\", \"E3L 8D9\", \"Tokelau\" ],\n\t[ \"2063\", \"Vladimir\", \"Mcfarland\", \"U9V 1B3\", \"Belgium\" ],\n\t[ \"2064\", \"Uriah\", \"Harrington\", \"77051\", \"United Arab Emirates\" ],\n\t[ \"2065\", \"Noel\", \"Merritt\", \"J3G 7S1\", \"Dominican Republic\" ],\n\t[ \"2066\", \"Christine\", \"Key\", \"54543\", \"Niger\" ],\n\t[ \"2067\", \"Illana\", \"Hendricks\", \"07584\", \"Montserrat\" ],\n\t[ \"2068\", \"Pearl\", \"Lewis\", \"U5D 2V3\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2069\", \"Victoria\", \"Bullock\", \"17462\", \"Mauritania\" ],\n\t[ \"2070\", \"Benedict\", \"Marsh\", \"61479\", \"Guyana\" ],\n\t[ \"2071\", \"Quemby\", \"Washington\", \"99774\", \"French Polynesia\" ],\n\t[ \"2072\", \"Shelley\", \"Noble\", \"U8S 5Z4\", \"Philippines\" ],\n\t[ \"2073\", \"Olivia\", \"Britt\", \"72344\", \"Holy See (Vatican City State)\" ],\n\t[ \"2074\", \"Oleg\", \"Hendrix\", \"67567\", \"Cuba\" ],\n\t[ \"2075\", \"Hermione\", \"Gutierrez\", \"J5K 2J1\", \"Mozambique\" ],\n\t[ \"2076\", \"Myra\", \"Dean\", \"03485\", \"Andorra\" ],\n\t[ \"2077\", \"Deacon\", \"Moore\", \"34501\", \"Tunisia\" ],\n\t[ \"2078\", \"Dai\", \"Baird\", \"B2P 4R0\", \"Cambodia\" ],\n\t[ \"2079\", \"Levi\", \"Melton\", \"K7T 4B1\", \"Zimbabwe\" ],\n\t[ \"2080\", \"Ocean\", \"Dalton\", \"66801\", \"Gabon\" ],\n\t[ \"2081\", \"Selma\", \"Harding\", \"D7N 3J9\", \"Kyrgyzstan\" ],\n\t[ \"2082\", \"Maisie\", \"Gill\", \"56324\", \"Morocco\" ],\n\t[ \"2083\", \"Hillary\", \"Horne\", \"Y6O 6G3\", \"Cyprus\" ],\n\t[ \"2084\", \"Joel\", \"Stokes\", \"77952\", \"Burundi\" ],\n\t[ \"2085\", \"Channing\", \"Patterson\", \"G6B 8H4\", \"China\" ],\n\t[ \"2086\", \"Elliott\", \"Cleveland\", \"H3J 9U9\", \"Namibia\" ],\n\t[ \"2087\", \"Petra\", \"Gay\", \"44314\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2088\", \"May\", \"Hatfield\", \"48918\", \"Faroe Islands\" ],\n\t[ \"2089\", \"Jemima\", \"Francis\", \"14347\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2090\", \"Kyla\", \"Hale\", \"46200\", \"Cocos (Keeling) Islands\" ],\n\t[ \"2091\", \"Veda\", \"Bruce\", \"F5W 9A6\", \"Mauritania\" ],\n\t[ \"2092\", \"Sybill\", \"Avila\", \"58663\", \"Angola\" ],\n\t[ \"2093\", \"Charissa\", \"Salazar\", \"35271\", \"Faroe Islands\" ],\n\t[ \"2094\", \"Steven\", \"Allison\", \"E5L 4A3\", \"Wallis and Futuna\" ],\n\t[ \"2095\", \"Kane\", \"Parks\", \"D5C 6K7\", \"Norfolk Island\" ],\n\t[ \"2096\", \"Alika\", \"Bishop\", \"S3P 3O3\", \"China\" ],\n\t[ \"2097\", \"James\", \"Bonner\", \"33277\", \"Canada\" ],\n\t[ \"2098\", \"Yoko\", \"Foster\", \"B5J 6P9\", \"Croatia\" ],\n\t[ \"2099\", \"Ivy\", \"Riggs\", \"94420\", \"Kiribati\" ],\n\t[ \"2100\", \"Urielle\", \"Rosa\", \"V6W 2A0\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"2101\", \"Armando\", \"Shepherd\", \"Y5C 5W6\", \"Panama\" ],\n\t[ \"2102\", \"Haley\", \"Ingram\", \"B4H 5U5\", \"Fiji\" ],\n\t[ \"2103\", \"Brielle\", \"Dyer\", \"P2S 4H7\", \"Malawi\" ],\n\t[ \"2104\", \"Francis\", \"Brady\", \"24239\", \"Uruguay\" ],\n\t[ \"2105\", \"Fiona\", \"Webster\", \"72015\", \"Belize\" ],\n\t[ \"2106\", \"Aiko\", \"Santos\", \"K4H 1N0\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2107\", \"Amir\", \"Rivas\", \"02737\", \"Papua New Guinea\" ],\n\t[ \"2108\", \"Mira\", \"Kerr\", \"W6E 6Y2\", \"Sri Lanka\" ],\n\t[ \"2109\", \"Harrison\", \"Jensen\", \"50193\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"2110\", \"Merrill\", \"Randall\", \"21534\", \"Colombia\" ],\n\t[ \"2111\", \"Benjamin\", \"Howe\", \"N8M 4N6\", \"Turkmenistan\" ],\n\t[ \"2112\", \"Melyssa\", \"Kidd\", \"97657\", \"Cameroon\" ],\n\t[ \"2113\", \"Henry\", \"Moore\", \"95626\", \"Botswana\" ],\n\t[ \"2114\", \"Nash\", \"Peters\", \"K3V 9F3\", \"Wallis and Futuna\" ],\n\t[ \"2115\", \"Iliana\", \"Holt\", \"E9F 2Q8\", \"Netherlands Antilles\" ],\n\t[ \"2116\", \"Naomi\", \"Hood\", \"P6D 2G3\", \"Anguilla\" ],\n\t[ \"2117\", \"Ainsley\", \"Barron\", \"94273\", \"New Caledonia\" ],\n\t[ \"2118\", \"Daphne\", \"Acevedo\", \"A9I 9E4\", \"Bermuda\" ],\n\t[ \"2119\", \"Kiona\", \"Keith\", \"62523\", \"Saint Lucia\" ],\n\t[ \"2120\", \"Kirsten\", \"Mcgee\", \"97481\", \"Macedonia\" ],\n\t[ \"2121\", \"Emerald\", \"Franklin\", \"Q2I 6D6\", \"Botswana\" ],\n\t[ \"2122\", \"Hall\", \"Schroeder\", \"I2D 9L7\", \"Kenya\" ],\n\t[ \"2123\", \"Amaya\", \"Lynch\", \"50534\", \"Costa Rica\" ],\n\t[ \"2124\", \"Randall\", \"Hanson\", \"B4R 2S3\", \"United Arab Emirates\" ],\n\t[ \"2125\", \"Sasha\", \"Clarke\", \"50972\", \"United States Minor Outlying Islands\" ],\n\t[ \"2126\", \"Susan\", \"Sutton\", \"Z4T 6K3\", \"Solomon Islands\" ],\n\t[ \"2127\", \"Hiram\", \"Torres\", \"C8O 5O7\", \"Botswana\" ],\n\t[ \"2128\", \"Melanie\", \"Calhoun\", \"87097\", \"New Zealand\" ],\n\t[ \"2129\", \"Courtney\", \"Sutton\", \"07944\", \"Spain\" ],\n\t[ \"2130\", \"Reuben\", \"Beard\", \"U6Z 8N5\", \"Faroe Islands\" ],\n\t[ \"2131\", \"Jarrod\", \"Payne\", \"94171\", \"Turkey\" ],\n\t[ \"2132\", \"Vincent\", \"Potts\", \"V5Z 9G9\", \"Madagascar\" ],\n\t[ \"2133\", \"Kaye\", \"Kent\", \"O1B 2Z9\", \"Fiji\" ],\n\t[ \"2134\", \"Carol\", \"Green\", \"78719\", \"Comoros\" ],\n\t[ \"2135\", \"Cairo\", \"Combs\", \"G3C 8F0\", \"Indonesia\" ],\n\t[ \"2136\", \"Ebony\", \"Parker\", \"77377\", \"Portugal\" ],\n\t[ \"2137\", \"Gary\", \"Shaffer\", \"F1B 9W7\", \"French Guiana\" ],\n\t[ \"2138\", \"Gay\", \"Jimenez\", \"05726\", \"Nepal\" ],\n\t[ \"2139\", \"Patience\", \"Bryan\", \"60437\", \"Macao\" ],\n\t[ \"2140\", \"Zenaida\", \"Bowen\", \"V3S 1G7\", \"Mauritania\" ],\n\t[ \"2141\", \"Isaac\", \"Aguirre\", \"X8S 9K4\", \"Bermuda\" ],\n\t[ \"2142\", \"Lacy\", \"Harrell\", \"67362\", \"Bhutan\" ],\n\t[ \"2143\", \"Jael\", \"Grimes\", \"95612\", \"Anguilla\" ],\n\t[ \"2144\", \"Catherine\", \"Galloway\", \"45834\", \"Suriname\" ],\n\t[ \"2145\", \"Donna\", \"Burt\", \"N8C 2M8\", \"Burkina Faso\" ],\n\t[ \"2146\", \"Colleen\", \"Ball\", \"N3E 4U8\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2147\", \"Lael\", \"Brady\", \"01369\", \"Macedonia\" ],\n\t[ \"2148\", \"Kermit\", \"Logan\", \"Y5P 8Q8\", \"Honduras\" ],\n\t[ \"2149\", \"Katelyn\", \"Orr\", \"R7X 9W3\", \"Switzerland\" ],\n\t[ \"2150\", \"Alisa\", \"Glenn\", \"17831\", \"Timor-leste\" ],\n\t[ \"2151\", \"Lee\", \"Bean\", \"89445\", \"Guam\" ],\n\t[ \"2152\", \"Maryam\", \"Cotton\", \"57924\", \"Gambia\" ],\n\t[ \"2153\", \"Amena\", \"Love\", \"X1Z 6F7\", \"Thailand\" ],\n\t[ \"2154\", \"Tallulah\", \"Case\", \"87477\", \"Ecuador\" ],\n\t[ \"2155\", \"Carlos\", \"Sanford\", \"F6S 8J6\", \"Iraq\" ],\n\t[ \"2156\", \"Quamar\", \"David\", \"D5F 2M8\", \"Gabon\" ],\n\t[ \"2157\", \"Cassady\", \"Mays\", \"12786\", \"Netherlands\" ],\n\t[ \"2158\", \"Jenna\", \"Rowland\", \"88845\", \"China\" ],\n\t[ \"2159\", \"Justin\", \"Tanner\", \"66071\", \"Nepal\" ],\n\t[ \"2160\", \"Riley\", \"Santiago\", \"F8K 2Y6\", \"Gabon\" ],\n\t[ \"2161\", \"Iris\", \"Gallegos\", \"K9C 3T9\", \"Niue\" ],\n\t[ \"2162\", \"Kato\", \"Osborn\", \"N4C 2L8\", \"Puerto Rico\" ],\n\t[ \"2163\", \"Imogene\", \"Schroeder\", \"79710\", \"United States Minor Outlying Islands\" ],\n\t[ \"2164\", \"Olympia\", \"Hebert\", \"D4W 1L0\", \"Saint Lucia\" ],\n\t[ \"2165\", \"Skyler\", \"Burnett\", \"B2R 5H7\", \"Antarctica\" ],\n\t[ \"2166\", \"Faith\", \"Sims\", \"88476\", \"Egypt\" ],\n\t[ \"2167\", \"Emily\", \"Odom\", \"U7O 2P6\", \"Kuwait\" ],\n\t[ \"2168\", \"Carly\", \"Washington\", \"46063\", \"Benin\" ],\n\t[ \"2169\", \"Jolene\", \"Meyer\", \"B2B 9A4\", \"Australia\" ],\n\t[ \"2170\", \"Ayanna\", \"Conrad\", \"84360\", \"Northern Mariana Islands\" ],\n\t[ \"2171\", \"Violet\", \"Blankenship\", \"W2B 3U1\", \"New Caledonia\" ],\n\t[ \"2172\", \"Rhona\", \"Gallegos\", \"10931\", \"Montserrat\" ],\n\t[ \"2173\", \"Alice\", \"Hodges\", \"96181\", \"Burkina Faso\" ],\n\t[ \"2174\", \"Brody\", \"Sandoval\", \"68959\", \"Pitcairn\" ],\n\t[ \"2175\", \"Isabella\", \"Dunlap\", \"U8U 7Y8\", \"Afghanistan\" ],\n\t[ \"2176\", \"Jordan\", \"Golden\", \"55152\", \"Guam\" ],\n\t[ \"2177\", \"Gillian\", \"Thomas\", \"75633\", \"Djibouti\" ],\n\t[ \"2178\", \"Hollee\", \"Clay\", \"79847\", \"Panama\" ],\n\t[ \"2179\", \"Dane\", \"Knapp\", \"89535\", \"Armenia\" ],\n\t[ \"2180\", \"Avram\", \"Martin\", \"T4S 4E2\", \"Madagascar\" ],\n\t[ \"2181\", \"Fuller\", \"Newman\", \"47317\", \"Jamaica\" ],\n\t[ \"2182\", \"Nina\", \"Berry\", \"81360\", \"Mongolia\" ],\n\t[ \"2183\", \"Akeem\", \"Pratt\", \"56230\", \"Colombia\" ],\n\t[ \"2184\", \"Lacy\", \"Hayes\", \"U7T 4F5\", \"Cyprus\" ],\n\t[ \"2185\", \"Alfonso\", \"Mcclure\", \"06797\", \"Swaziland\" ],\n\t[ \"2186\", \"Cedric\", \"Love\", \"64720\", \"Bermuda\" ],\n\t[ \"2187\", \"Astra\", \"Fernandez\", \"H3I 1B0\", \"Mongolia\" ],\n\t[ \"2188\", \"Iliana\", \"Durham\", \"R8C 7M8\", \"Spain\" ],\n\t[ \"2189\", \"Gwendolyn\", \"Livingston\", \"C7X 5L1\", \"Northern Mariana Islands\" ],\n\t[ \"2190\", \"Caldwell\", \"Anderson\", \"69099\", \"Kuwait\" ],\n\t[ \"2191\", \"Risa\", \"Mejia\", \"P7A 4U7\", \"Israel\" ],\n\t[ \"2192\", \"Dora\", \"Navarro\", \"L6G 2O8\", \"Ireland\" ],\n\t[ \"2193\", \"Kirk\", \"Dean\", \"I2T 3E6\", \"Pitcairn\" ],\n\t[ \"2194\", \"Jackson\", \"Harvey\", \"53467\", \"Myanmar\" ],\n\t[ \"2195\", \"Thane\", \"Ballard\", \"87240\", \"Solomon Islands\" ],\n\t[ \"2196\", \"Nadine\", \"Estes\", \"62003\", \"Malta\" ],\n\t[ \"2197\", \"Candace\", \"Nunez\", \"57223\", \"Virgin Islands, British\" ],\n\t[ \"2198\", \"Zelda\", \"Odom\", \"X4V 7F5\", \"Mongolia\" ],\n\t[ \"2199\", \"Wylie\", \"Ayala\", \"S4I 4Q4\", \"Djibouti\" ],\n\t[ \"2200\", \"Azalia\", \"Page\", \"57239\", \"Korea, Republic of\" ],\n\t[ \"2201\", \"Joshua\", \"Burch\", \"R7B 1N7\", \"Samoa\" ],\n\t[ \"2202\", \"Basil\", \"Ramos\", \"71614\", \"Tunisia\" ],\n\t[ \"2203\", \"Jessica\", \"Shields\", \"U2D 4X3\", \"Syrian Arab Republic\" ],\n\t[ \"2204\", \"Clio\", \"Singleton\", \"I1B 1B0\", \"Ghana\" ],\n\t[ \"2205\", \"Astra\", \"Dotson\", \"62378\", \"Turks and Caicos Islands\" ],\n\t[ \"2206\", \"Hamish\", \"Tucker\", \"E4Z 3N3\", \"Anguilla\" ],\n\t[ \"2207\", \"Rachel\", \"Matthews\", \"U4I 8M3\", \"Trinidad and Tobago\" ],\n\t[ \"2208\", \"Clayton\", \"Ball\", \"95319\", \"India\" ],\n\t[ \"2209\", \"Quinn\", \"Wilkinson\", \"Y6M 3Q7\", \"Virgin Islands, U.S.\" ],\n\t[ \"2210\", \"Phelan\", \"Talley\", \"00543\", \"Philippines\" ],\n\t[ \"2211\", \"Carol\", \"Brock\", \"M6X 4E2\", \"Gibraltar\" ],\n\t[ \"2212\", \"Nomlanga\", \"Robles\", \"56511\", \"Viet Nam\" ],\n\t[ \"2213\", \"Adrian\", \"Clay\", \"79479\", \"France\" ],\n\t[ \"2214\", \"Sara\", \"Riley\", \"B9N 5P4\", \"Peru\" ],\n\t[ \"2215\", \"Christine\", \"Sweeney\", \"W1Z 4S4\", \"French Polynesia\" ],\n\t[ \"2216\", \"Leilani\", \"Johnston\", \"W1C 8M8\", \"American Samoa\" ],\n\t[ \"2217\", \"Melyssa\", \"Lambert\", \"V1B 4P6\", \"Iraq\" ],\n\t[ \"2218\", \"Talon\", \"Delacruz\", \"Y3N 9R2\", \"Bulgaria\" ],\n\t[ \"2219\", \"Garth\", \"Jennings\", \"59667\", \"Malta\" ],\n\t[ \"2220\", \"Naida\", \"Coleman\", \"45456\", \"Finland\" ],\n\t[ \"2221\", \"Indigo\", \"Lopez\", \"77160\", \"Pitcairn\" ],\n\t[ \"2222\", \"Asher\", \"French\", \"99064\", \"British Indian Ocean Territory\" ],\n\t[ \"2223\", \"Vivian\", \"Mcgowan\", \"46310\", \"Oman\" ],\n\t[ \"2224\", \"Gwendolyn\", \"Cervantes\", \"48905\", \"Cocos (Keeling) Islands\" ],\n\t[ \"2225\", \"Logan\", \"Reid\", \"87376\", \"Ethiopia\" ],\n\t[ \"2226\", \"Bryar\", \"Wolfe\", \"75860\", \"Comoros\" ],\n\t[ \"2227\", \"Demetrius\", \"Hutchinson\", \"97252\", \"Dominican Republic\" ],\n\t[ \"2228\", \"Freya\", \"Becker\", \"04872\", \"United States\" ],\n\t[ \"2229\", \"Abel\", \"Brooks\", \"I7O 1M1\", \"Comoros\" ],\n\t[ \"2230\", \"Silas\", \"Mcguire\", \"04101\", \"Indonesia\" ],\n\t[ \"2231\", \"Quinn\", \"Fletcher\", \"B6E 2B0\", \"Niger\" ],\n\t[ \"2232\", \"Rooney\", \"Holden\", \"29294\", \"Micronesia\" ],\n\t[ \"2233\", \"Iris\", \"Hale\", \"N7W 6E9\", \"Greenland\" ],\n\t[ \"2234\", \"Candace\", \"Barry\", \"U8I 5A4\", \"Germany\" ],\n\t[ \"2235\", \"Yetta\", \"Ball\", \"62055\", \"Switzerland\" ],\n\t[ \"2236\", \"Dai\", \"Bentley\", \"P2Y 4C5\", \"Dominica\" ],\n\t[ \"2237\", \"Gannon\", \"Dunlap\", \"45728\", \"Fiji\" ],\n\t[ \"2238\", \"Chelsea\", \"Mays\", \"36498\", \"Guinea\" ],\n\t[ \"2239\", \"Ruth\", \"Mcguire\", \"62924\", \"Maldives\" ],\n\t[ \"2240\", \"Melissa\", \"Durham\", \"D6S 1A2\", \"Armenia\" ],\n\t[ \"2241\", \"Eaton\", \"Salinas\", \"53689\", \"Somalia\" ],\n\t[ \"2242\", \"Driscoll\", \"Cunningham\", \"31194\", \"Sweden\" ],\n\t[ \"2243\", \"Bevis\", \"Acosta\", \"V4M 9Z2\", \"Jamaica\" ],\n\t[ \"2244\", \"Anastasia\", \"Mcknight\", \"24878\", \"Sao Tome and Principe\" ],\n\t[ \"2245\", \"Anika\", \"Rowland\", \"45287\", \"Chile\" ],\n\t[ \"2246\", \"Dexter\", \"Rollins\", \"00684\", \"Iran, Islamic Republic of\" ],\n\t[ \"2247\", \"Brielle\", \"Irwin\", \"V4U 7R2\", \"Belgium\" ],\n\t[ \"2248\", \"Ocean\", \"Fields\", \"08544\", \"Croatia\" ],\n\t[ \"2249\", \"Sonia\", \"Solis\", \"C4X 1L5\", \"Niue\" ],\n\t[ \"2250\", \"Joseph\", \"Haney\", \"29567\", \"Argentina\" ],\n\t[ \"2251\", \"Lamar\", \"Heath\", \"81699\", \"Italy\" ],\n\t[ \"2252\", \"Raya\", \"Jordan\", \"R6K 7B3\", \"Spain\" ],\n\t[ \"2253\", \"Brody\", \"Frost\", \"34564\", \"Dominican Republic\" ],\n\t[ \"2254\", \"Ann\", \"Hawkins\", \"S3A 5K7\", \"Yemen\" ],\n\t[ \"2255\", \"Phillip\", \"Lindsay\", \"80544\", \"Sierra Leone\" ],\n\t[ \"2256\", \"Willa\", \"Maynard\", \"A6A 4C5\", \"Mexico\" ],\n\t[ \"2257\", \"Carolyn\", \"Mercer\", \"V8Z 1X5\", \"Zimbabwe\" ],\n\t[ \"2258\", \"Justin\", \"Cole\", \"68764\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2259\", \"Emmanuel\", \"Parks\", \"99769\", \"Latvia\" ],\n\t[ \"2260\", \"Isaiah\", \"Salazar\", \"H1K 1X3\", \"Turks and Caicos Islands\" ],\n\t[ \"2261\", \"Vance\", \"Porter\", \"49607\", \"Costa Rica\" ],\n\t[ \"2262\", \"Igor\", \"Kim\", \"99489\", \"Turkmenistan\" ],\n\t[ \"2263\", \"Emi\", \"Graves\", \"F4M 5L8\", \"El Salvador\" ],\n\t[ \"2264\", \"Griffith\", \"Monroe\", \"11550\", \"Tanzania, United Republic of\" ],\n\t[ \"2265\", \"Iliana\", \"Coffey\", \"30220\", \"Albania\" ],\n\t[ \"2266\", \"Jemima\", \"Guthrie\", \"69283\", \"Saint Pierre and Miquelon\" ],\n\t[ \"2267\", \"Zenia\", \"Farrell\", \"91872\", \"Tanzania, United Republic of\" ],\n\t[ \"2268\", \"Lucas\", \"Chambers\", \"L5Z 1W0\", \"Bouvet Island\" ],\n\t[ \"2269\", \"Zenaida\", \"Valenzuela\", \"31700\", \"Guam\" ],\n\t[ \"2270\", \"Bradley\", \"Wynn\", \"21222\", \"Lithuania\" ],\n\t[ \"2271\", \"Maite\", \"Richard\", \"H4D 7X0\", \"Cameroon\" ],\n\t[ \"2272\", \"Moses\", \"House\", \"Y3Z 3K7\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2273\", \"Erich\", \"Petersen\", \"U4N 9R7\", \"Rwanda\" ],\n\t[ \"2274\", \"Stephanie\", \"Zimmerman\", \"70097\", \"Malawi\" ],\n\t[ \"2275\", \"Rylee\", \"Schneider\", \"15645\", \"Gibraltar\" ],\n\t[ \"2276\", \"Zia\", \"Craig\", \"H1K 1N9\", \"Norway\" ],\n\t[ \"2277\", \"Fiona\", \"Chaney\", \"Y4U 7K8\", \"San Marino\" ],\n\t[ \"2278\", \"Gil\", \"Sherman\", \"64720\", \"Wallis and Futuna\" ],\n\t[ \"2279\", \"Raja\", \"Sandoval\", \"11225\", \"Lithuania\" ],\n\t[ \"2280\", \"Illana\", \"Wyatt\", \"A2M 9O2\", \"Brazil\" ],\n\t[ \"2281\", \"Declan\", \"Howell\", \"E9V 8J5\", \"San Marino\" ],\n\t[ \"2282\", \"Warren\", \"Cooper\", \"47160\", \"Guyana\" ],\n\t[ \"2283\", \"Alyssa\", \"Juarez\", \"S7G 8F2\", \"Sweden\" ],\n\t[ \"2284\", \"Quynn\", \"Long\", \"P1P 5Y4\", \"Mexico\" ],\n\t[ \"2285\", \"Dalton\", \"Booker\", \"I5T 1R3\", \"Mauritius\" ],\n\t[ \"2286\", \"Lunea\", \"Mclaughlin\", \"I3F 6D4\", \"Togo\" ],\n\t[ \"2287\", \"Irene\", \"Brock\", \"04760\", \"Tajikistan\" ],\n\t[ \"2288\", \"Raven\", \"Floyd\", \"R2N 2Y5\", \"Philippines\" ],\n\t[ \"2289\", \"Nichole\", \"Farmer\", \"81213\", \"Seychelles\" ],\n\t[ \"2290\", \"Sophia\", \"Mcdonald\", \"86291\", \"Chile\" ],\n\t[ \"2291\", \"Nehru\", \"Matthews\", \"60732\", \"Central African Republic\" ],\n\t[ \"2292\", \"Marah\", \"Nelson\", \"44533\", \"Kenya\" ],\n\t[ \"2293\", \"Marvin\", \"Lyons\", \"M7Y 1Q6\", \"Somalia\" ],\n\t[ \"2294\", \"Ian\", \"Fernandez\", \"D9U 8B6\", \"Turkey\" ],\n\t[ \"2295\", \"Gretchen\", \"Dotson\", \"48294\", \"China\" ],\n\t[ \"2296\", \"Brady\", \"Weaver\", \"S4U 4I8\", \"Burundi\" ],\n\t[ \"2297\", \"Ella\", \"Salas\", \"73771\", \"Sao Tome and Principe\" ],\n\t[ \"2298\", \"Martha\", \"Irwin\", \"06554\", \"Timor-leste\" ],\n\t[ \"2299\", \"Penelope\", \"Pratt\", \"S1R 4L4\", \"Gabon\" ],\n\t[ \"2300\", \"Kenyon\", \"Dale\", \"64548\", \"Zimbabwe\" ],\n\t[ \"2301\", \"Henry\", \"Myers\", \"07614\", \"United Arab Emirates\" ],\n\t[ \"2302\", \"Chaney\", \"Dunlap\", \"18388\", \"French Southern Territories\" ],\n\t[ \"2303\", \"Palmer\", \"Le\", \"10807\", \"Colombia\" ],\n\t[ \"2304\", \"Kaseem\", \"Madden\", \"U4E 6L9\", \"Guyana\" ],\n\t[ \"2305\", \"Grant\", \"Anthony\", \"F3K 4D8\", \"Trinidad and Tobago\" ],\n\t[ \"2306\", \"Denton\", \"Moore\", \"I5O 4I5\", \"Belize\" ],\n\t[ \"2307\", \"Regan\", \"Pittman\", \"U8T 9M1\", \"Romania\" ],\n\t[ \"2308\", \"Valentine\", \"Hunt\", \"E9O 6H6\", \"Poland\" ],\n\t[ \"2309\", \"Abraham\", \"Love\", \"X1T 4K0\", \"Philippines\" ],\n\t[ \"2310\", \"Maggie\", \"Gaines\", \"W5Z 6L4\", \"Chad\" ],\n\t[ \"2311\", \"Kylynn\", \"Sears\", \"53419\", \"Ghana\" ],\n\t[ \"2312\", \"Abel\", \"Hudson\", \"O6C 6K5\", \"Malaysia\" ],\n\t[ \"2313\", \"Aladdin\", \"Brady\", \"16465\", \"Antarctica\" ],\n\t[ \"2314\", \"Laurel\", \"Bush\", \"42295\", \"Kyrgyzstan\" ],\n\t[ \"2315\", \"Cameron\", \"Shepherd\", \"Y8R 5L7\", \"Finland\" ],\n\t[ \"2316\", \"Colin\", \"Barker\", \"H8Q 5L0\", \"Aruba\" ],\n\t[ \"2317\", \"Nichole\", \"Stephens\", \"B8P 3D5\", \"Qatar\" ],\n\t[ \"2318\", \"Mary\", \"Dorsey\", \"J7D 1E5\", \"Iceland\" ],\n\t[ \"2319\", \"Yetta\", \"Dillon\", \"I7X 9D3\", \"Hong Kong\" ],\n\t[ \"2320\", \"Hope\", \"May\", \"L5W 1T9\", \"Taiwan, Province of China\" ],\n\t[ \"2321\", \"Daphne\", \"Barr\", \"W2B 9G2\", \"Korea, Republic of\" ],\n\t[ \"2322\", \"Melissa\", \"Hartman\", \"17607\", \"Reunion\" ],\n\t[ \"2323\", \"Acton\", \"Merritt\", \"U7M 3Q5\", \"Cape Verde\" ],\n\t[ \"2324\", \"Alika\", \"Weeks\", \"45475\", \"Singapore\" ],\n\t[ \"2325\", \"Fitzgerald\", \"Rowe\", \"Z3Z 2B6\", \"Israel\" ],\n\t[ \"2326\", \"Frances\", \"Valentine\", \"54329\", \"Kyrgyzstan\" ],\n\t[ \"2327\", \"Hollee\", \"Poole\", \"56101\", \"Saint Kitts and Nevis\" ],\n\t[ \"2328\", \"Melissa\", \"Stafford\", \"R5C 7V0\", \"Philippines\" ],\n\t[ \"2329\", \"Patience\", \"Jones\", \"61516\", \"Mauritius\" ],\n\t[ \"2330\", \"Uta\", \"Sloan\", \"K1B 9R2\", \"Timor-leste\" ],\n\t[ \"2331\", \"Brent\", \"West\", \"69310\", \"Burundi\" ],\n\t[ \"2332\", \"Otto\", \"Olsen\", \"88849\", \"Monaco\" ],\n\t[ \"2333\", \"Blossom\", \"Soto\", \"E2Q 6E6\", \"Ukraine\" ],\n\t[ \"2334\", \"Anastasia\", \"Stanton\", \"S8D 3U5\", \"Mexico\" ],\n\t[ \"2335\", \"Nyssa\", \"Massey\", \"A4G 8G7\", \"Ireland\" ],\n\t[ \"2336\", \"Brian\", \"Moreno\", \"T6O 4D7\", \"Myanmar\" ],\n\t[ \"2337\", \"Fiona\", \"Price\", \"03826\", \"Benin\" ],\n\t[ \"2338\", \"Wyoming\", \"Knowles\", \"I5M 7T3\", \"Chad\" ],\n\t[ \"2339\", \"Iola\", \"Noble\", \"95251\", \"Tunisia\" ],\n\t[ \"2340\", \"Cameran\", \"Montgomery\", \"35748\", \"Korea\" ],\n\t[ \"2341\", \"Wesley\", \"Sims\", \"J6O 7C0\", \"Hungary\" ],\n\t[ \"2342\", \"Mona\", \"Gates\", \"J6Y 3E2\", \"Tokelau\" ],\n\t[ \"2343\", \"Dominique\", \"Sellers\", \"G6U 7I2\", \"Sudan\" ],\n\t[ \"2344\", \"Destiny\", \"Frazier\", \"Y2P 5X6\", \"Madagascar\" ],\n\t[ \"2345\", \"Kelsie\", \"Stokes\", \"78561\", \"Yemen\" ],\n\t[ \"2346\", \"Julie\", \"Jordan\", \"U5H 4H0\", \"Myanmar\" ],\n\t[ \"2347\", \"Xaviera\", \"Hodge\", \"36452\", \"Turkey\" ],\n\t[ \"2348\", \"Cain\", \"Boyd\", \"74543\", \"Lebanon\" ],\n\t[ \"2349\", \"Devin\", \"Burch\", \"94879\", \"Cyprus\" ],\n\t[ \"2350\", \"Michelle\", \"Manning\", \"V7T 4A3\", \"New Zealand\" ],\n\t[ \"2351\", \"Quintessa\", \"Chapman\", \"95379\", \"Faroe Islands\" ],\n\t[ \"2352\", \"Danielle\", \"Wells\", \"27722\", \"Colombia\" ],\n\t[ \"2353\", \"Faith\", \"Decker\", \"04881\", \"Canada\" ],\n\t[ \"2354\", \"Gannon\", \"Chapman\", \"07687\", \"Israel\" ],\n\t[ \"2355\", \"Jayme\", \"Black\", \"A6L 9W1\", \"Jordan\" ],\n\t[ \"2356\", \"Zenia\", \"Cooley\", \"A6X 1B7\", \"Greenland\" ],\n\t[ \"2357\", \"Maris\", \"Burton\", \"J4G 1Y0\", \"Ecuador\" ],\n\t[ \"2358\", \"Rina\", \"Vazquez\", \"G3V 7G6\", \"Russian Federation\" ],\n\t[ \"2359\", \"Nina\", \"Stanton\", \"E7Z 1W0\", \"Dominica\" ],\n\t[ \"2360\", \"Alexandra\", \"Jenkins\", \"C6N 4R4\", \"Morocco\" ],\n\t[ \"2361\", \"Jerome\", \"Chen\", \"68955\", \"Israel\" ],\n\t[ \"2362\", \"Clementine\", \"Robbins\", \"X7I 7T3\", \"Croatia\" ],\n\t[ \"2363\", \"Nigel\", \"Guthrie\", \"A4N 6X8\", \"French Southern Territories\" ],\n\t[ \"2364\", \"Xaviera\", \"Griffith\", \"90489\", \"Cuba\" ],\n\t[ \"2365\", \"Marsden\", \"Best\", \"U4B 5R7\", \"Estonia\" ],\n\t[ \"2366\", \"Ebony\", \"Benson\", \"H7C 7F7\", \"Anguilla\" ],\n\t[ \"2367\", \"Kylie\", \"Hansen\", \"38932\", \"Eritrea\" ],\n\t[ \"2368\", \"Iola\", \"Copeland\", \"P4X 9M4\", \"Rwanda\" ],\n\t[ \"2369\", \"Jorden\", \"Green\", \"48018\", \"Namibia\" ],\n\t[ \"2370\", \"Hamish\", \"Porter\", \"L6F 8L1\", \"Taiwan, Province of China\" ],\n\t[ \"2371\", \"Ezra\", \"Taylor\", \"09148\", \"French Southern Territories\" ],\n\t[ \"2372\", \"Dara\", \"Pratt\", \"00558\", \"Saint Kitts and Nevis\" ],\n\t[ \"2373\", \"Oliver\", \"Holt\", \"C4N 5Z7\", \"Thailand\" ],\n\t[ \"2374\", \"Kato\", \"Mcgee\", \"17017\", \"Micronesia\" ],\n\t[ \"2375\", \"Fuller\", \"Rogers\", \"M8F 6Y7\", \"French Polynesia\" ],\n\t[ \"2376\", \"Carol\", \"Stuart\", \"55980\", \"Sudan\" ],\n\t[ \"2377\", \"Wayne\", \"Nichols\", \"37344\", \"Chile\" ],\n\t[ \"2378\", \"Lars\", \"Gilbert\", \"27076\", \"Micronesia\" ],\n\t[ \"2379\", \"Todd\", \"Rollins\", \"M4I 4X8\", \"Virgin Islands, U.S.\" ],\n\t[ \"2380\", \"Colorado\", \"Justice\", \"68795\", \"Yemen\" ],\n\t[ \"2381\", \"Jordan\", \"Chang\", \"11149\", \"Mayotte\" ],\n\t[ \"2382\", \"Troy\", \"Haynes\", \"N2N 1N8\", \"Reunion\" ],\n\t[ \"2383\", \"Amity\", \"Snyder\", \"17785\", \"Argentina\" ],\n\t[ \"2384\", \"Kennan\", \"Turner\", \"30041\", \"Brazil\" ],\n\t[ \"2385\", \"Dorothy\", \"Gates\", \"B7Z 6V4\", \"Ghana\" ],\n\t[ \"2386\", \"Ariana\", \"Rojas\", \"70797\", \"Eritrea\" ],\n\t[ \"2387\", \"Desirae\", \"Joyner\", \"63493\", \"Maldives\" ],\n\t[ \"2388\", \"Marsden\", \"Barton\", \"36343\", \"Chile\" ],\n\t[ \"2389\", \"Graham\", \"Greer\", \"65152\", \"Cayman Islands\" ],\n\t[ \"2390\", \"Cameron\", \"Edwards\", \"89276\", \"Montserrat\" ],\n\t[ \"2391\", \"Bradley\", \"White\", \"80364\", \"United Kingdom\" ],\n\t[ \"2392\", \"Finn\", \"Cote\", \"G9P 1P0\", \"Ghana\" ],\n\t[ \"2393\", \"Geoffrey\", \"Becker\", \"O5G 4L4\", \"Wallis and Futuna\" ],\n\t[ \"2394\", \"Hayden\", \"Estes\", \"Q8G 7F9\", \"Togo\" ],\n\t[ \"2395\", \"Quinlan\", \"Garrett\", \"R2C 3E7\", \"Uganda\" ],\n\t[ \"2396\", \"Haviva\", \"Harrington\", \"64198\", \"Bahamas\" ],\n\t[ \"2397\", \"Brennan\", \"Hodge\", \"35327\", \"Paraguay\" ],\n\t[ \"2398\", \"Halee\", \"Sykes\", \"S6J 4S4\", \"Costa Rica\" ],\n\t[ \"2399\", \"Mikayla\", \"Ruiz\", \"21686\", \"Malaysia\" ],\n\t[ \"2400\", \"Macy\", \"Stanley\", \"F6D 6C4\", \"Luxembourg\" ],\n\t[ \"2401\", \"Petra\", \"Miles\", \"O7X 2D2\", \"Tokelau\" ],\n\t[ \"2402\", \"Oprah\", \"Mendez\", \"88994\", \"France\" ],\n\t[ \"2403\", \"Upton\", \"Silva\", \"17878\", \"French Southern Territories\" ],\n\t[ \"2404\", \"Wade\", \"Pennington\", \"S8J 3P2\", \"Malaysia\" ],\n\t[ \"2405\", \"Gannon\", \"Riddle\", \"I4A 2H9\", \"Somalia\" ],\n\t[ \"2406\", \"Jana\", \"Myers\", \"04982\", \"Philippines\" ],\n\t[ \"2407\", \"Brooke\", \"Hale\", \"98272\", \"Lithuania\" ],\n\t[ \"2408\", \"Hashim\", \"Mendez\", \"00144\", \"Saint Helena\" ],\n\t[ \"2409\", \"Blythe\", \"Hanson\", \"U5Z 6P4\", \"Saint Helena\" ],\n\t[ \"2410\", \"Michelle\", \"Madden\", \"B4R 1I9\", \"Ireland\" ],\n\t[ \"2411\", \"Deirdre\", \"Patton\", \"B4H 1N7\", \"Georgia\" ],\n\t[ \"2412\", \"Nathaniel\", \"Chandler\", \"W1V 8R4\", \"Sierra Leone\" ],\n\t[ \"2413\", \"Tamekah\", \"Murray\", \"I8M 1W8\", \"Guatemala\" ],\n\t[ \"2414\", \"Naida\", \"Boyle\", \"V4S 2N2\", \"United Arab Emirates\" ],\n\t[ \"2415\", \"Hiroko\", \"Winters\", \"K8G 3R9\", \"Barbados\" ],\n\t[ \"2416\", \"Palmer\", \"Guy\", \"A4H 5L1\", \"Saudi Arabia\" ],\n\t[ \"2417\", \"Hermione\", \"Nicholson\", \"76147\", \"Marshall Islands\" ],\n\t[ \"2418\", \"Russell\", \"Boyd\", \"66149\", \"Switzerland\" ],\n\t[ \"2419\", \"Gretchen\", \"Robles\", \"B9L 1J7\", \"Spain\" ],\n\t[ \"2420\", \"Leah\", \"Gibbs\", \"16682\", \"Vanuatu\" ],\n\t[ \"2421\", \"Amir\", \"Carlson\", \"A5C 6F2\", \"Myanmar\" ],\n\t[ \"2422\", \"Merrill\", \"Ratliff\", \"A6E 9B2\", \"Tonga\" ],\n\t[ \"2423\", \"Wyatt\", \"David\", \"P8G 2M1\", \"Kiribati\" ],\n\t[ \"2424\", \"Violet\", \"Boyle\", \"P5X 7B0\", \"Denmark\" ],\n\t[ \"2425\", \"Jared\", \"Myers\", \"22131\", \"Kyrgyzstan\" ],\n\t[ \"2426\", \"Lavinia\", \"Stephenson\", \"55537\", \"Turks and Caicos Islands\" ],\n\t[ \"2427\", \"Zachary\", \"Tyson\", \"C4O 7V4\", \"Macedonia\" ],\n\t[ \"2428\", \"Emma\", \"Clark\", \"A7Z 2Z1\", \"Guam\" ],\n\t[ \"2429\", \"Aaron\", \"Montoya\", \"Q3U 2X1\", \"Bahrain\" ],\n\t[ \"2430\", \"Dylan\", \"Roach\", \"81238\", \"French Guiana\" ],\n\t[ \"2431\", \"Baxter\", \"Rosario\", \"H7B 1R2\", \"Suriname\" ],\n\t[ \"2432\", \"Shad\", \"Bolton\", \"D1W 5X0\", \"Barbados\" ],\n\t[ \"2433\", \"Hasad\", \"Hines\", \"D9U 3H1\", \"Ukraine\" ],\n\t[ \"2434\", \"Maggy\", \"French\", \"M3E 5H8\", \"Nicaragua\" ],\n\t[ \"2435\", \"Evangeline\", \"Jenkins\", \"57732\", \"Nigeria\" ],\n\t[ \"2436\", \"Eaton\", \"Shannon\", \"56854\", \"Namibia\" ],\n\t[ \"2437\", \"Keaton\", \"Barber\", \"G5V 7T0\", \"Svalbard and Jan Mayen\" ],\n\t[ \"2438\", \"Lester\", \"Love\", \"J5Q 8H3\", \"United Kingdom\" ],\n\t[ \"2439\", \"Olivia\", \"Foley\", \"16284\", \"Mayotte\" ],\n\t[ \"2440\", \"Inez\", \"Craig\", \"98947\", \"Poland\" ],\n\t[ \"2441\", \"Desirae\", \"Jacobson\", \"25950\", \"French Polynesia\" ],\n\t[ \"2442\", \"Amethyst\", \"Robertson\", \"78840\", \"Timor-leste\" ],\n\t[ \"2443\", \"Rahim\", \"Day\", \"61420\", \"Maldives\" ],\n\t[ \"2444\", \"Kevyn\", \"Mccarty\", \"X7T 8Z3\", \"Guam\" ],\n\t[ \"2445\", \"Logan\", \"Malone\", \"B6F 8N0\", \"Madagascar\" ],\n\t[ \"2446\", \"Kathleen\", \"Cote\", \"L4R 6W9\", \"Congo\" ],\n\t[ \"2447\", \"Porter\", \"Mclean\", \"G1Z 1W9\", \"Mauritius\" ],\n\t[ \"2448\", \"Reagan\", \"Chapman\", \"86314\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2449\", \"Veda\", \"Harrington\", \"R7W 1K4\", \"Congo\" ],\n\t[ \"2450\", \"Dominique\", \"Hewitt\", \"P5K 7L4\", \"San Marino\" ],\n\t[ \"2451\", \"Zelda\", \"Orr\", \"Z5B 6V1\", \"Greenland\" ],\n\t[ \"2452\", \"Natalie\", \"Kane\", \"10491\", \"Belgium\" ],\n\t[ \"2453\", \"Elizabeth\", \"Bright\", \"R3V 2R4\", \"Bangladesh\" ],\n\t[ \"2454\", \"Evan\", \"Knapp\", \"W3Z 3I5\", \"Mauritius\" ],\n\t[ \"2455\", \"Unity\", \"Armstrong\", \"82986\", \"Kiribati\" ],\n\t[ \"2456\", \"Arden\", \"Winters\", \"C7D 4M2\", \"Sweden\" ],\n\t[ \"2457\", \"Hayfa\", \"Henderson\", \"B8Z 3V3\", \"Latvia\" ],\n\t[ \"2458\", \"Ocean\", \"Delacruz\", \"Z3Z 2H8\", \"Tonga\" ],\n\t[ \"2459\", \"Carter\", \"Harding\", \"R1Z 8J4\", \"Ireland\" ],\n\t[ \"2460\", \"Harriet\", \"Simmons\", \"54757\", \"Indonesia\" ],\n\t[ \"2461\", \"Sopoline\", \"Hicks\", \"I5A 6O2\", \"Argentina\" ],\n\t[ \"2462\", \"Jenette\", \"Ramos\", \"I4V 3H6\", \"Portugal\" ],\n\t[ \"2463\", \"Abigail\", \"Berg\", \"E6P 6L0\", \"United States\" ],\n\t[ \"2464\", \"Sybill\", \"Fox\", \"02319\", \"Svalbard and Jan Mayen\" ],\n\t[ \"2465\", \"Wyoming\", \"Jarvis\", \"I1R 7V9\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2466\", \"Cynthia\", \"English\", \"17983\", \"Israel\" ],\n\t[ \"2467\", \"Jerry\", \"Little\", \"33846\", \"Mauritius\" ],\n\t[ \"2468\", \"Quintessa\", \"Donaldson\", \"V4N 2K1\", \"China\" ],\n\t[ \"2469\", \"Anne\", \"Potter\", \"78596\", \"United States Minor Outlying Islands\" ],\n\t[ \"2470\", \"Madonna\", \"Hart\", \"A4A 4T8\", \"Bahrain\" ],\n\t[ \"2471\", \"Madeline\", \"Walls\", \"Y3D 4T3\", \"Comoros\" ],\n\t[ \"2472\", \"Fleur\", \"Blevins\", \"D1T 9P6\", \"Guinea-bissau\" ],\n\t[ \"2473\", \"Jaden\", \"Webb\", \"13917\", \"Lesotho\" ],\n\t[ \"2474\", \"Abdul\", \"Fleming\", \"A8A 3Y3\", \"Canada\" ],\n\t[ \"2475\", \"Blaze\", \"Carroll\", \"41059\", \"Marshall Islands\" ],\n\t[ \"2476\", \"David\", \"Hoover\", \"29132\", \"Algeria\" ],\n\t[ \"2477\", \"Renee\", \"Nieves\", \"35843\", \"Egypt\" ],\n\t[ \"2478\", \"Jaime\", \"Mcclure\", \"R5K 6B5\", \"Liechtenstein\" ],\n\t[ \"2479\", \"Deborah\", \"Fletcher\", \"70399\", \"Equatorial Guinea\" ],\n\t[ \"2480\", \"Otto\", \"Lopez\", \"72417\", \"Belarus\" ],\n\t[ \"2481\", \"Bo\", \"Walls\", \"F4M 8X8\", \"Latvia\" ],\n\t[ \"2482\", \"Jamal\", \"Adams\", \"N9X 3A2\", \"Spain\" ],\n\t[ \"2483\", \"Silas\", \"Gardner\", \"25259\", \"French Guiana\" ],\n\t[ \"2484\", \"Aladdin\", \"Morin\", \"45179\", \"Sweden\" ],\n\t[ \"2485\", \"Dawn\", \"Grant\", \"53613\", \"Grenada\" ],\n\t[ \"2486\", \"Forrest\", \"Gay\", \"53606\", \"Cayman Islands\" ],\n\t[ \"2487\", \"Lavinia\", \"Murphy\", \"S5L 6X9\", \"Turkey\" ],\n\t[ \"2488\", \"Sylvia\", \"Wolfe\", \"37280\", \"Indonesia\" ],\n\t[ \"2489\", \"Wynter\", \"Adkins\", \"37391\", \"Russian Federation\" ],\n\t[ \"2490\", \"Iola\", \"Frank\", \"I9H 1K7\", \"Nigeria\" ],\n\t[ \"2491\", \"Emmanuel\", \"Hester\", \"Z6E 3I4\", \"Guinea\" ],\n\t[ \"2492\", \"Karina\", \"Christian\", \"V8M 6F3\", \"Honduras\" ],\n\t[ \"2493\", \"Malcolm\", \"Holden\", \"I7J 6U7\", \"Austria\" ],\n\t[ \"2494\", \"Moana\", \"Holmes\", \"80402\", \"Israel\" ],\n\t[ \"2495\", \"Ramona\", \"Hewitt\", \"U6B 7A6\", \"Guadeloupe\" ],\n\t[ \"2496\", \"Nicholas\", \"Terry\", \"V8J 5D9\", \"Costa Rica\" ],\n\t[ \"2497\", \"Erica\", \"Dunlap\", \"91596\", \"Kazakhstan\" ],\n\t[ \"2498\", \"Logan\", \"Harper\", \"R7V 3T5\", \"Guinea-bissau\" ],\n\t[ \"2499\", \"Bert\", \"Ortega\", \"74557\", \"Paraguay\" ],\n\t[ \"2500\", \"Cameron\", \"Ortiz\", \"P9C 5B6\", \"Eritrea\" ]\n] }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/server_processing.php",
    "content": "<?php\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Easy set variables\n\t */\n\t\n\t/* Array of database columns which should be read and sent back to DataTables. Use a space where\n\t * you want to insert a non-database field (for example a counter or static image)\n\t */\n\t$aColumns = array( 'id', 'firstname', 'surname', 'zip', 'country' );\n\t\n\t/* Indexed column (used for fast and accurate table cardinality) */\n\t$sIndexColumn = \"id\";\n\t\n\t/* DB table to use */\n\t$sTable = \"massive\";\n\t\n\t/* Database connection information */\n\t$gaSql['user']       = \"\";\n\t$gaSql['password']   = \"\";\n\t$gaSql['db']         = \"\";\n\t$gaSql['server']     = \"localhost\";\n\t\n\t/* REMOVE THIS LINE (it just includes my SQL connection user/pass) */\n\tinclude( $_SERVER['DOCUMENT_ROOT'].\"/datatables/mysql.php\" );\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * If you just want to use the basic configuration for DataTables with PHP server-side, there is\n\t * no need to edit below this line\n\t */\n\t\n\t/* \n\t * MySQL connection\n\t */\n\t$gaSql['link'] =  mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password']  ) or\n\t\tdie( 'Could not open connection to server' );\n\t\n\tmysql_select_db( $gaSql['db'], $gaSql['link'] ) or \n\t\tdie( 'Could not select database '. $gaSql['db'] );\n\t\n\t\n\t/* \n\t * Paging\n\t */\n\t$sLimit = \"\";\n\tif ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )\n\t{\n\t\t$sLimit = \"LIMIT \".mysql_real_escape_string( $_GET['iDisplayStart'] ).\", \".\n\t\t\tmysql_real_escape_string( $_GET['iDisplayLength'] );\n\t}\n\t\n\t\n\t/*\n\t * Ordering\n\t */\n\t$sOrder = \"\";\n\tif ( isset( $_GET['iSortCol_0'] ) )\n\t{\n\t\t$sOrder = \"ORDER BY  \";\n\t\tfor ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ )\n\t\t{\n\t\t\tif ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == \"true\" )\n\t\t\t{\n\t\t\t\t$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ].\"\n\t\t\t\t \t\".mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .\", \";\n\t\t\t}\n\t\t}\n\t\t\n\t\t$sOrder = substr_replace( $sOrder, \"\", -2 );\n\t\tif ( $sOrder == \"ORDER BY\" )\n\t\t{\n\t\t\t$sOrder = \"\";\n\t\t}\n\t}\n\t\n\t\n\t/* \n\t * Filtering\n\t * NOTE this does not match the built-in DataTables filtering which does it\n\t * word by word on any field. It's possible to do here, but concerned about efficiency\n\t * on very large tables, and MySQL's regex functionality is very limited\n\t */\n\t$sWhere = \"\";\n\tif ( isset($_GET['sSearch']) && $_GET['sSearch'] != \"\" )\n\t{\n\t\t$sWhere = \"WHERE (\";\n\t\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t\t{\n\t\t\t$sWhere .= $aColumns[$i].\" LIKE '%\".mysql_real_escape_string( $_GET['sSearch'] ).\"%' OR \";\n\t\t}\n\t\t$sWhere = substr_replace( $sWhere, \"\", -3 );\n\t\t$sWhere .= ')';\n\t}\n\t\n\t/* Individual column filtering */\n\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t{\n\t\tif ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == \"true\" && $_GET['sSearch_'.$i] != '' )\n\t\t{\n\t\t\tif ( $sWhere == \"\" )\n\t\t\t{\n\t\t\t\t$sWhere = \"WHERE \";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$sWhere .= \" AND \";\n\t\t\t}\n\t\t\t$sWhere .= $aColumns[$i].\" LIKE '%\".mysql_real_escape_string($_GET['sSearch_'.$i]).\"%' \";\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * SQL queries\n\t * Get data to display\n\t */\n\t$sQuery = \"\n\t\tSELECT SQL_CALC_FOUND_ROWS \".str_replace(\" , \", \" \", implode(\", \", $aColumns)).\"\n\t\tFROM   $sTable\n\t\t$sWhere\n\t\t$sOrder\n\t\t$sLimit\n\t\";\n\t$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t\n\t/* Data set length after filtering */\n\t$sQuery = \"\n\t\tSELECT FOUND_ROWS()\n\t\";\n\t$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);\n\t$iFilteredTotal = $aResultFilterTotal[0];\n\t\n\t/* Total data set length */\n\t$sQuery = \"\n\t\tSELECT COUNT(\".$sIndexColumn.\")\n\t\tFROM   $sTable\n\t\";\n\t$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t$aResultTotal = mysql_fetch_array($rResultTotal);\n\t$iTotal = $aResultTotal[0];\n\t\n\t\n\t/*\n\t * Output\n\t */\n\t$output = array(\n\t\t\"sEcho\" => intval($_GET['sEcho']),\n\t\t\"iTotalRecords\" => $iTotal,\n\t\t\"iTotalDisplayRecords\" => $iFilteredTotal,\n\t\t\"aaData\" => array()\n\t);\n\t\n\twhile ( $aRow = mysql_fetch_array( $rResult ) )\n\t{\n\t\t$row = array();\n\t\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t\t{\n\t\t\tif ( $aColumns[$i] == \"version\" )\n\t\t\t{\n\t\t\t\t/* Special output formatting for 'version' column */\n\t\t\t\t$row[] = ($aRow[ $aColumns[$i] ]==\"0\") ? '-' : $aRow[ $aColumns[$i] ];\n\t\t\t}\n\t\t\telse if ( $aColumns[$i] != ' ' )\n\t\t\t{\n\t\t\t\t/* General output */\n\t\t\t\t$row[] = $aRow[ $aColumns[$i] ];\n\t\t\t}\n\t\t}\n\t\t$output['aaData'][] = $row;\n\t}\n\t\n\techo json_encode( $output );\n?>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: Scroller - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: Scroller</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (3)</a></td></tr><tr><td><a href=\"#summary_properties\">Properties (1)</a></td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (4)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (1)</a></td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (4)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"Scroller\" class=\"  even\"><a name=\"Scroller\"></a><a name=\"Scroller_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new Scroller</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Scroller is a virtual rendering plug-in for DataTables which allows large\ndatasets to be drawn on screen every quickly. What the virtual rendering means\nis that only the visible portion of the table (and a bit to either side to make\nthe scrolling smooth) is drawn, while the scrolling container gives the \nvisual impression that the whole table is visible. This is done by making use\nof the pagination abilities of DataTables and moving the table around in the\nscrolling container DataTables adds to the page. The scrolling container is\nforced to the height it would be for the full table display using an extra \nelement. </p>\n\n<p>Note that rows in the table MUST all be the same height. Information in a cell\nwhich expands on to multiple lines will cause some odd behaviour in the scrolling.</p>\n\n<p>Scroller is initialised by simply including the letter 'S' in the sDom for the\ntable you want to have this feature enabled on. Note that the 'S' must come\nAFTER the 't' parameter in sDom.</p>\n\n<p>Key features include:\n  <ul class=\"limit_length\">\n    <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n    <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n    <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n    <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n    <li>Easy to use</li>\n  </ul></p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oDT</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\">{}</td><td class=\"description last\"><p>Configuration object for FixedColumns. Options are defined by <a href=\"Scroller.oDefaults.html\">Scroller.oDefaults</a></p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">\t\t$(document).ready(function() {\n\t\t\t$('#example').dataTable( {\n\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\"sAjaxSource\": \"media/dataset/large.txt\",\n\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\"bDeferRender\": true\n\t\t\t} );\n\t\t} );</pre>\n    </div>\n</div>\n</dl><h3 class=\"subsection-title\">Requires</h3>\n<ul>\n\t<li>module:jQuery</li><li>module:DataTables</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"c6053fac6b.html\">dom</a></span></dt><dd class=\"even\"><p>DOM elements used by the class instance</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"Scroller.oDefaults.html\">oDefaults</a></span></dt><dd class=\"odd\"><p>Scroller default settings for initialisation</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"baed189d4a.html\">s</a></span></dt><dd class=\"even\"><p>Settings object which contains customisable information for the Scroller instance</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Scroller version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnMeasure\">fnMeasure</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></dt><dd class=\"  even\"><p>Calculate and store information about how many rows are to be displayed in the scrolling\nviewport, based on current dimensions in the browser's rendering. This can be particularly\nuseful if the table is initially drawn in a hidden element - for example in a tab.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnPixelsToRow\">fnPixelsToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iPixels)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnRowToPixels\">fnRowToPixels</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Calculate the pixel position from the top of the scrolling container for a given row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnScrollToRow\">fnScrollToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow, <span class=\"optional\">bAnimate</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Scroller version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"Scroller#fnMeasure\" class=\"  even\"><a name=\"fnMeasure\"></a><a name=\"fnMeasure_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnMeasure</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></span></dt><dd class=\"  even\"><p>Calculate and store information about how many rows are to be displayed in the scrolling\nviewport, based on current dimensions in the browser's rendering. This can be particularly\nuseful if the table is initially drawn in a hidden element - for example in a tab.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table automatically after the recalculation, with\n   the new dimentions forming the basis for the draw.</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     // Make the example container hidden to throw off the browser's sizing\n     document.getElementById('container').style.display = \"none\";\n     var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Immediately scroll to row 1000\n         o.oScroller.fnScrollToRow( 1000 );\n       }\n     } );\n     \n     setTimeout( function () {\n       // Make the example container visible and recalculate the scroller sizes\n       document.getElementById('container').style.display = \"block\";\n       oTable.fnSettings().oScroller.fnMeasure();\n     }, 3000 );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnPixelsToRow\" class=\"  odd\"><a name=\"fnPixelsToRow\"></a><a name=\"fnPixelsToRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnPixelsToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iPixels)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iPixels</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Offset from top to caluclate the row number of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Row index</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Find what row number is at 500px\n         alert( o.oScroller.fnPixelsToRow( 500 ) );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnRowToPixels\" class=\"  even\"><a name=\"fnRowToPixels\"></a><a name=\"fnRowToPixels_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnRowToPixels</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Calculate the pixel position from the top of the scrolling container for a given row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row number to calculate the position of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Pixels</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Find where row 25 is\n         alert( o.oScroller.fnRowToPixels( 25 ) );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnScrollToRow\" class=\"  odd\"><a name=\"fnScrollToRow\"></a><a name=\"fnScrollToRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnScrollToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow, <span class=\"optional\">bAnimate</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row index to scroll to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bAnimate</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Animate the transision or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Immediately scroll to row 1000\n         o.oScroller.fnScrollToRow( 1000 );\n       }\n     } );\n     \n     // Sometime later on use the following to scroll to row 500...\n         var oSettings = $('#example').dataTable().fnSettings();\n     oSettings.oScroller.fnScrollToRow( 500 );\n   } );</pre>\n    </div>\n</div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.oDefaults.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oDefaults - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oDefaults</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>.</span> » oDefaults</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (6)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (6)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Scroller default settings for initialisation</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#boundaryScale\">boundaryScale</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :float</span></span></dt><dd class=\"  even\"><p>Scroller uses the boundary scaling factor to decide when to redraw the table - which it\ntypically does before you reach the end of the currently loaded data set (in order to\nallow the data to look continuous to a user scrolling through the data). If given as 0\nthen the table will be redrawn whenever the viewport is scrolled, while 1 would not\nredraw the table until the currently loaded data has all been shown. You will want \nsomething in the middle - the default factor of 0.5 is usually suitable.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#displayBuffer\">displayBuffer</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\nfor scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\nrows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\nThe value is based upon the number of rows that can be displayed in the viewport (i.e. \na value of 1), and will apply the display range to records before before and after the\ncurrent viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\nof rows before the current viewport, the current viewport's rows and 1 viewport's worth\nof rows after the current viewport. Adjusting this value can be useful for ensuring \nsmooth scrolling based on your data set.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#loadingIndicator\">loadingIndicator</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Show (or not) the loading element in the background of the table. Note that you should\ninclude the dataTables.scroller.css file for this to be displayed correctly.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|string</span></span></dt><dd class=\"  odd\"><p>Scroller will attempt to automatically calculate the height of rows for it's internal\ncalculations. However the height that is used can be overridden using this parameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#serverWait\">serverWait</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>When using server-side processing, Scroller will wait a small amount of time to allow\nthe scrolling to finish before requesting more data from the server. This prevents\nyou from DoSing your own server! The wait time can be configured by this parameter.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#trace\">trace</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  odd\"><p>Indicate if Scroller show show trace information on the console or not. This can be \nuseful when debugging Scroller or if just curious as to what it is doing, but should\nbe turned off for production.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"boundaryScale\"></a><a name=\"boundaryScale_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#boundaryScale\">boundaryScale</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :float</span></span></dt><dd class=\"  even\"><p>Scroller uses the boundary scaling factor to decide when to redraw the table - which it\ntypically does before you reach the end of the currently loaded data set (in order to\nallow the data to look continuous to a user scrolling through the data). If given as 0\nthen the table will be redrawn whenever the viewport is scrolled, while 1 would not\nredraw the table until the currently loaded data has all been shown. You will want \nsomething in the middle - the default factor of 0.5 is usually suitable.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"boundaryScale\": 0.75\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"displayBuffer\"></a><a name=\"displayBuffer_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#displayBuffer\">displayBuffer</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\nfor scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\nrows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\nThe value is based upon the number of rows that can be displayed in the viewport (i.e. \na value of 1), and will apply the display range to records before before and after the\ncurrent viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\nof rows before the current viewport, the current viewport's rows and 1 viewport's worth\nof rows after the current viewport. Adjusting this value can be useful for ensuring \nsmooth scrolling based on your data set.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"displayBuffer\": 10\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"loadingIndicator\"></a><a name=\"loadingIndicator_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#loadingIndicator\">loadingIndicator</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Show (or not) the loading element in the background of the table. Note that you should\ninclude the dataTables.scroller.css file for this to be displayed correctly.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"loadingIndicator\": true\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"rowHeight\"></a><a name=\"rowHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|string</span></span></dt><dd class=\"  odd\"><p>Scroller will attempt to automatically calculate the height of rows for it's internal\ncalculations. However the height that is used can be overridden using this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"rowHeight\": 30\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"serverWait\"></a><a name=\"serverWait_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#serverWait\">serverWait</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>When using server-side processing, Scroller will wait a small amount of time to allow\nthe scrolling to finish before requesting more data from the server. This prevents\nyou from DoSing your own server! The wait time can be configured by this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"serverWait\": 100\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"trace\"></a><a name=\"trace_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#trace\">trace</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  odd\"><p>Indicate if Scroller show show trace information on the console or not. This can be \nuseful when debugging Scroller or if just curious as to what it is doing, but should\nbe turned off for production.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"trace\": true\n       }\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/baed189d4a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: s - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: s</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>#</span> » s</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (9)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (9)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Settings object which contains customisable information for the Scroller instance</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li>Scroller.DEFAULTS</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#autoHeight\">autoHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  even\"><p>Auto row height or not indicator</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#drawTO\">drawTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>setTimeout reference for the redraw, used when server-side processing is enabled in the\nDataTables in order to prevent DoSing the server</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#dt\">dt</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>DataTables settings object</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Height of rows in the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#stateTO\">stateTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>setTimeout reference for state saving, used when state saving is enabled in the DataTable\nand when the user scrolls the viewport in order to stop the cookie set taking too much\nCPU!</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableBottom\">tableBottom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel location of the bottom of the drawn table in the viewport</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableTop\">tableTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Pixel location of the top of the drawn table in the viewport</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportHeight\">viewportHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel height of the viewport</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportRows\">viewportRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Number of rows calculated as visible in the visible viewport</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"autoHeight\"></a><a name=\"autoHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#autoHeight\">autoHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  even\"><p>Auto row height or not indicator</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"drawTO\"></a><a name=\"drawTO_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#drawTO\">drawTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>setTimeout reference for the redraw, used when server-side processing is enabled in the\nDataTables in order to prevent DoSing the server</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"dt\"></a><a name=\"dt_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#dt\">dt</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>DataTables settings object</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"rowHeight\"></a><a name=\"rowHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Height of rows in the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"stateTO\"></a><a name=\"stateTO_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#stateTO\">stateTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>setTimeout reference for state saving, used when state saving is enabled in the DataTable\nand when the user scrolls the viewport in order to stop the cookie set taking too much\nCPU!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"tableBottom\"></a><a name=\"tableBottom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableBottom\">tableBottom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel location of the bottom of the drawn table in the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"tableTop\"></a><a name=\"tableTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableTop\">tableTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Pixel location of the top of the drawn table in the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"viewportHeight\"></a><a name=\"viewportHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportHeight\">viewportHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel height of the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"viewportRows\"></a><a name=\"viewportRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportRows\">viewportRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Number of rows calculated as visible in the visible viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/c6053fac6b.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: dom - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: dom</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>#</span> » dom</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DOM elements used by the class instance</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"Scroller.html\">Scroller</a></dt><dd><p>Scroller is a virtual rendering plug-in for DataTables which allows large\ndatasets to be drawn on screen every quickly. What the virtual rendering means\nis that only the visible portion of the table (and a bit to either side to make\nthe scrolling smooth) is drawn, while the scrolling container gives the \nvisual impression that the whole table is visible. This is done by making use\nof the pagination abilities of DataTables and moving the table around in the\nscrolling container DataTables adds to the page. The scrolling container is\nforced to the height it would be for the full table display using an extra \nelement. </p>\n\n<p>Note that rows in the table MUST all be the same height. Information in a cell\nwhich expands on to multiple lines will cause some odd behaviour in the scrolling.</p>\n\n<p>Scroller is initialised by simply including the letter 'S' in the sDom for the\ntable you want to have this feature enabled on. Note that the 'S' must come\nAFTER the 't' parameter in sDom.</p>\n\n<p>Key features include:\n  <ul class=\"limit_length\">\n    <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n    <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n    <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n    <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n    <li>Easy to use</li>\n  </ul></p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.js",
    "content": "/**\n * @summary     Scroller\n * @description Virtual rendering for DataTables\n * @file        Scroller.js\n * @version     1.1.0\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @license     GPL v2 or BSD 3 point style\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2011-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n(/** @lends <global> */function($, window, document) {\n\n\n/** \n * Scroller is a virtual rendering plug-in for DataTables which allows large\n * datasets to be drawn on screen every quickly. What the virtual rendering means\n * is that only the visible portion of the table (and a bit to either side to make\n * the scrolling smooth) is drawn, while the scrolling container gives the \n * visual impression that the whole table is visible. This is done by making use\n * of the pagination abilities of DataTables and moving the table around in the\n * scrolling container DataTables adds to the page. The scrolling container is\n * forced to the height it would be for the full table display using an extra \n * element. \n * \n * Note that rows in the table MUST all be the same height. Information in a cell\n * which expands on to multiple lines will cause some odd behaviour in the scrolling.\n *\n * Scroller is initialised by simply including the letter 'S' in the sDom for the\n * table you want to have this feature enabled on. Note that the 'S' must come\n * AFTER the 't' parameter in sDom.\n * \n * Key features include:\n *   <ul class=\"limit_length\">\n *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n *     <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n *     <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n *     <li>Easy to use</li>\n *   </ul>\n *\n *  @class\n *  @constructor\n *  @param {object} oDT DataTables settings object\n *  @param {object} [oOpts={}] Configuration object for FixedColumns. Options are defined by {@link Scroller.oDefaults}\n * \n *  @requires jQuery 1.4+\n *  @requires DataTables 1.9.0+\n * \n *  @example\n * \t\t$(document).ready(function() {\n * \t\t\t$('#example').dataTable( {\n * \t\t\t\t\"sScrollY\": \"200px\",\n * \t\t\t\t\"sAjaxSource\": \"media/dataset/large.txt\",\n * \t\t\t\t\"sDom\": \"frtiS\",\n * \t\t\t\t\"bDeferRender\": true\n * \t\t\t} );\n * \t\t} );\n */\nvar Scroller = function ( oDTSettings, oOpts ) {\n\t/* Sanity check - you just know it will happen */\n\tif ( ! this instanceof Scroller )\n\t{\n\t\talert( \"Scroller warning: Scroller must be initialised with the 'new' keyword.\" );\n\t\treturn;\n\t}\n\t\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\t/**\n\t * Settings object which contains customisable information for the Scroller instance\n\t * @namespace\n\t * @extends Scroller.DEFAULTS\n\t */\n\tthis.s = {\n\t\t/** \n\t\t * DataTables settings object\n\t\t *  @type     object\n\t\t *  @default  Passed in as first parameter to constructor\n\t\t */\n\t\t\"dt\": oDTSettings,\n\t\t\n\t\t/** \n\t\t * Pixel location of the top of the drawn table in the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"tableTop\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the bottom of the drawn table in the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"tableBottom\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the boundary for when the next data set should be loaded and drawn\n\t\t * when scrolling up the way.\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t *  @private\n\t\t */\n\t\t\"redrawTop\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the boundary for when the next data set should be loaded and drawn\n\t\t * when scrolling down the way. Note that this is actually caluated as the offset from\n\t\t * the top.\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t *  @private\n\t\t */\n\t\t\"redrawBottom\": 0,\n\t\t\n\t\t/** \n\t\t * Height of rows in the table\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"rowHeight\": null,\n\t\t\n\t\t/** \n\t\t * Auto row height or not indicator\n\t\t *  @type     bool\n\t\t *  @default  0\n\t\t */\n\t\t\"autoHeight\": true,\n\t\t\n\t\t/** \n\t\t * Pixel height of the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"viewportHeight\": 0,\n\t\t\n\t\t/** \n\t\t * Number of rows calculated as visible in the visible viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"viewportRows\": 0,\n\t\t\n\t\t/** \n\t\t * setTimeout reference for state saving, used when state saving is enabled in the DataTable\n\t\t * and when the user scrolls the viewport in order to stop the cookie set taking too much\n\t\t * CPU!\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"stateTO\": null,\n\t\t\n\t\t/** \n\t\t * setTimeout reference for the redraw, used when server-side processing is enabled in the\n\t\t * DataTables in order to prevent DoSing the server\n\t\t *  @type     int\n\t\t *  @default  null\n\t\t */\n\t\t\"drawTO\": null\n\t};\n\tthis.s = $.extend( this.s, Scroller.oDefaults, oOpts );\n\t\n\t/**\n\t * DOM elements used by the class instance\n\t * @namespace\n\t * \n\t */\n\tthis.dom = {\n\t\t\"force\": document.createElement('div'),\n\t\t\"scroller\": null,\n\t\t\"table\": null\n\t};\n\n\t/* Attach the instance to the DataTables instance so it can be accessed */\n\tthis.s.dt.oScroller = this;\n\t\n\t/* Let's do it */\n\tthis._fnConstruct();\n};\n\n\n\nScroller.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Calculate the pixel position from the top of the scrolling container for a given row\n\t *  @param {int} iRow Row number to calculate the position of\n\t *  @returns {int} Pixels\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Find where row 25 is\n\t *          alert( o.oScroller.fnRowToPixels( 25 ) );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnRowToPixels\": function ( iRow )\n\t{\n\t\treturn iRow * this.s.rowHeight;\n\t},\n\n\n\t/**\n\t * Calculate the row number that will be found at the given pixel position (y-scroll)\n\t *  @param {int} iPixels Offset from top to caluclate the row number of\n\t *  @returns {int} Row index\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Find what row number is at 500px\n\t *          alert( o.oScroller.fnPixelsToRow( 500 ) );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnPixelsToRow\": function ( iPixels )\n\t{\n\t\treturn parseInt( iPixels / this.s.rowHeight, 10 );\n\t},\n\n\n\t/**\n\t * Calculate the row number that will be found at the given pixel position (y-scroll)\n\t *  @param {int} iRow Row index to scroll to\n\t *  @param {bool} [bAnimate=true] Animate the transision or not \n\t *  @returns {void}\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Immediately scroll to row 1000\n\t *          o.oScroller.fnScrollToRow( 1000 );\n\t *        }\n\t *      } );\n\t *      \n\t *      // Sometime later on use the following to scroll to row 500...\n\t *          var oSettings = $('#example').dataTable().fnSettings();\n\t *      oSettings.oScroller.fnScrollToRow( 500 );\n\t *    } );\n\t */\n\t\"fnScrollToRow\": function ( iRow, bAnimate )\n\t{\n\t\tvar px = this.fnRowToPixels( iRow );\n\t\tif ( typeof bAnimate == 'undefined' || bAnimate )\n\t\t{\n\t\t\t$(this.dom.scroller).animate( {\n\t\t\t\t\"scrollTop\": px\n\t\t\t} );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$(this.dom.scroller).scrollTop( px );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Calculate and store information about how many rows are to be displayed in the scrolling\n\t * viewport, based on current dimensions in the browser's rendering. This can be particularly\n\t * useful if the table is initially drawn in a hidden element - for example in a tab.\n\t *  @param {bool} [bRedraw=true] Redraw the table automatically after the recalculation, with\n\t *    the new dimentions forming the basis for the draw. \n\t *  @returns {void}\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      // Make the example container hidden to throw off the browser's sizing\n\t *      document.getElementById('container').style.display = \"none\";\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Immediately scroll to row 1000\n\t *          o.oScroller.fnScrollToRow( 1000 );\n\t *        }\n\t *      } );\n\t *      \n\t *      setTimeout( function () {\n\t *        // Make the example container visible and recalculate the scroller sizes\n\t *        document.getElementById('container').style.display = \"block\";\n\t *        oTable.fnSettings().oScroller.fnMeasure();\n\t *      }, 3000 );\n\t */\n\t\"fnMeasure\": function ( bRedraw )\n\t{\n\t\tif ( this.s.autoHeight )\n\t\t{\n\t\t\tthis._fnCalcRowHeight();\n\t\t}\n\n\t\tthis.s.viewportHeight = $(this.dom.scroller).height();\n\t\tthis.s.viewportRows = parseInt( this.s.viewportHeight/this.s.rowHeight, 10 )+1;\n\t\tthis.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;\n\t\t\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Row height: '+this.s.rowHeight +' '+\n\t\t\t\t\t'Viewport height: '+this.s.viewportHeight +' '+\n\t\t\t\t\t'Viewport rows: '+ this.s.viewportRows +' '+\n\t\t\t\t\t'Display rows: '+ this.s.dt._iDisplayLength\n\t\t\t\t);\n\t\t}\n\t\t\n\t\tif ( typeof bRedraw == 'undefined' || bRedraw )\n\t\t{\n\t\t\tthis.s.dt.oInstance.fnDraw();\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Initialisation for Scroller\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tvar that = this;\n\n\t\t/* Insert a div element that we can use to force the DT scrolling container to\n\t\t * the height that would be required if the whole table was being displayed\n\t\t */\n\t\tthis.dom.force.style.position = \"absolute\";\n\t\tthis.dom.force.style.top = \"0px\";\n\t\tthis.dom.force.style.left = \"0px\";\n\t\tthis.dom.force.style.width = \"1px\";\n\n\t\tthis.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];\n\t\tthis.dom.scroller.appendChild( this.dom.force );\n\t\tthis.dom.scroller.style.position = \"relative\";\n\n\t\tthis.dom.table = $('>table', this.dom.scroller)[0];\n\t\tthis.dom.table.style.position = \"absolute\";\n\t\tthis.dom.table.style.top = \"0px\";\n\t\tthis.dom.table.style.left = \"0px\";\n\n\t\t// Add class to 'announce' that we are a Scroller table\n\t\t$(this.s.dt.nTableWrapper).addClass('DTS');\n\n\t\t// Add a 'loading' indicator\n\t\tif ( this.s.loadingIndicator )\n\t\t{\n\t\t\t$(this.dom.scroller.parentNode)\n\t\t\t\t.css('position', 'relative')\n\t\t\t\t.append('<div class=\"DTS_Loading\">'+this.s.dt.oLanguage.sLoadingRecords+'</div>');\n\t\t}\n\n\t\t/* Initial size calculations */\n\t\tif ( this.s.rowHeight && this.s.rowHeight != 'auto' )\n\t\t{\n\t\t\tthis.s.autoHeight = false;\n\t\t}\n\t\tthis.fnMeasure( false );\n\n\t\t/* Scrolling callback to see if a page change is needed */\n\t\t$(this.dom.scroller).scroll( function () {\n\t\t\tthat._fnScroll.call( that );\n\t\t} );\n\n\t\t/* In iOS we catch the touchstart event incase the user tries to scroll\n\t\t * while the display is already scrolling\n\t\t */\n\t\t$(this.dom.scroller).bind('touchstart', function () {\n\t\t\tthat._fnScroll.call( that );\n\t\t} );\n\t\t\n\t\t/* Update the scroller when the DataTable is redrawn */\n\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\"fn\": function () {\n\t\t\t\tif ( that.s.dt.bInitialised ) {\n\t\t\t\t\tthat._fnDrawCallback.call( that );\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"sName\": \"Scroller\"\n\t\t} );\n\t\t\n\t\t/* Add a state saving parameter to the DT state saving so we can restore the exact\n\t\t * position of the scrolling\n\t\t */\n\t\tthis.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {\n\t\t\toData.iScroller = that.dom.scroller.scrollTop;\n\t\t}, \"Scroller_State\" );\n\t},\n\n\n\t/**\n\t * Scrolling function - fired whenever the scrolling position is changed. This method needs\n\t * to use the stored values to see if the table should be redrawn as we are moving towards\n\t * the end of the information that is currently drawn or not. If needed, then it will redraw\n\t * the table based on the new position.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnScroll\": function ()\n\t{\n\t\tvar \n\t\t\tthat = this,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiTopRow;\n\n\t\t/* If the table has been sorted or filtered, then we use the redraw that\n\t\t * DataTables as done, rather than performing our own\n\t\t */\n\t\tif ( this.s.dt.bFiltered || this.s.dt.bSorted )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\tconsole.log(\n\t\t\t\t'Scroll: '+iScrollTop+'px - boundaries: '+this.s.redrawTop+' / '+this.s.redrawBottom+'. '+\n\t\t\t\t' Showing rows '+this.fnPixelsToRow(iScrollTop)+\n\t\t\t\t' to '+this.fnPixelsToRow(iScrollTop+$(this.dom.scroller).height())+\n\t\t\t\t' in the viewport, with rows '+this.s.dt._iDisplayStart+\n\t\t\t\t' to '+(this.s.dt._iDisplayEnd)+' rendered by the DataTable'\n\t\t\t);\n\t\t}\n\n\t\t/* Update the table's information display for what is now in the viewport */\n\t\tthis._fnInfo();\n\n\t\t/* We dont' want to state save on every scroll event - that's heavy handed, so\n\t\t * use a timeout to update the state saving only when the scrolling has finished\n\t\t */\n\t\tclearTimeout( this.s.stateTO );\n\t\tthis.s.stateTO = setTimeout( function () {\n\t\t\tthat.s.dt.oApi._fnSaveState( that.s.dt );\n\t\t}, 250 );\n\n\t\t/* Check if the scroll point is outside the trigger boundary which would required\n\t\t * a DataTables redraw\n\t\t */\n\t\tif ( iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom )\n\t\t{\n\t\t\tvar preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows;\n\t\t\tiTopRow = parseInt( iScrollTop / this.s.rowHeight, 10 ) - preRows;\n\t\t\tif ( iTopRow < 0 )\n\t\t\t{\n\t\t\t\t/* At the start of the table */\n\t\t\t\tiTopRow = 0;\n\t\t\t}\n\t\t\telse if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\t/* At the end of the table */\n\t\t\t\tiTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;\n\t\t\t\tif ( iTopRow < 0 )\n\t\t\t\t{\n\t\t\t\t\tiTopRow = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( iTopRow % 2 !== 0 )\n\t\t\t{\n\t\t\t\t/* For the row-striping classes (odd/even) we want only to start on evens\n\t\t\t\t * otherwise the stripes will change between draws and look rubbish\n\t\t\t\t */\n\t\t\t\tiTopRow++;\n\t\t\t}\n\n\t\t\tif ( iTopRow != this.s.dt._iDisplayStart )\n\t\t\t{\n\t\t\t\t/* Cache the new table position for quick lookups */\n\t\t\t\tthis.s.tableTop = $(this.s.dt.nTable).offset().top;\n\t\t\t\tthis.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;\n\t\t\t\t\n\t\t\t\t/* Do the DataTables redraw based on the calculated start point - note that when\n\t\t\t\t * using server-side processing we introduce a small delay to not DoS the server...\n\t\t\t\t */\n\t\t\t\tif ( this.s.dt.oFeatures.bServerSide ) {\n\t\t\t\t\tclearTimeout( this.s.drawTO );\n\t\t\t\t\tthis.s.drawTO = setTimeout( function () {\n\t\t\t\t\t\tthat.s.dt._iDisplayStart = iTopRow;\n\t\t\t\t\t\tthat.s.dt.oApi._fnCalculateEnd( that.s.dt );\n\t\t\t\t\t\tthat.s.dt.oApi._fnDraw( that.s.dt );\n\t\t\t\t\t}, this.s.serverWait );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.s.dt._iDisplayStart = iTopRow;\n\t\t\t\t\tthis.s.dt.oApi._fnCalculateEnd( this.s.dt );\n\t\t\t\t\tthis.s.dt.oApi._fnDraw( this.s.dt );\n\t\t\t\t}\n\n\t\t\t\tif ( this.s.trace )\n\t\t\t\t{\n\t\t\t\t\tconsole.log( 'Scroll forcing redraw - top DT render row: '+ iTopRow );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/**\n\t * Draw callback function which is fired when the DataTable is redrawn. The main function of\n\t * this method is to position the drawn table correctly the scrolling container for the rows\n\t * that is displays as a result of the scrolling position.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnDrawCallback\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiScrollBottom = iScrollTop + this.s.viewportHeight;\n\t\t\n\t\t/* Set the height of the scrolling forcer to be suitable for the number of rows\n\t\t * in this draw\n\t\t */\n\t\tthis.dom.force.style.height = (this.s.rowHeight * this.s.dt.fnRecordsDisplay())+\"px\";\n\t\t\n\t\t/* Calculate the position that the top of the table should be at */\n\t\tvar iTableTop = (this.s.rowHeight*this.s.dt._iDisplayStart);\n\t\tif ( this.s.dt._iDisplayStart === 0 )\n\t\t{\n\t\t\tiTableTop = 0;\n\t\t}\n\t\telse if ( this.s.dt._iDisplayStart === this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength )\n\t\t{\n\t\t\tiTableTop = this.s.rowHeight * this.s.dt._iDisplayStart;\n\t\t}\n\n\t\tthis.dom.table.style.top = iTableTop+\"px\";\n\n\t\t/* Cache some information for the scroller */\n\t\tthis.s.tableTop = iTableTop;\n\t\tthis.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;\n\n\t\tthis.s.redrawTop = iScrollTop - ( (iScrollTop - this.s.tableTop) * this.s.boundaryScale );\n\t\tthis.s.redrawBottom = iScrollTop + ( (this.s.tableBottom - iScrollBottom) * this.s.boundaryScale );\n\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\tconsole.log(\n\t\t\t\t\"Table redraw. Table top: \"+iTableTop+\"px \"+\n\t\t\t\t\"Table bottom: \"+this.s.tableBottom+\" \"+\n\t\t\t\t\"Scroll boundary top: \"+this.s.redrawTop+\" \"+\n\t\t\t\t\"Scroll boundary bottom: \"+this.s.redrawBottom+\" \"+\n\t\t\t\t\"Rows drawn: \"+this.s.dt._iDisplayLength);\n\t\t}\n\n\t\t/* Because of the order of the DT callbacks, the info update will\n\t\t * take precidence over the one we want here. So a 'thread' break is\n\t\t * needed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\tthat._fnInfo.call( that );\n\t\t}, 0 );\n\n\t\t/* Restore the scrolling position that was saved by DataTable's state saving\n\t\t * Note that this is done on the second draw when data is Ajax sourced, and the\n\t\t * first draw when DOM soured\n\t\t */\n\t\tif ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&\n\t\t\t typeof this.s.dt.oLoadedState.iScroller != 'undefined' )\n\t\t{\n\t\t\tif ( (this.s.dt.sAjaxSource !== null && this.s.dt.iDraw == 2) ||\n\t\t\t     (this.s.dt.sAjaxSource === null && this.s.dt.iDraw == 1) )\n\t\t\t{\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\t$(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller );\n\t\t\t\t\tthat.s.redrawTop = that.s.dt.oLoadedState.iScroller - (that.s.viewportHeight/2);\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/**\n\t * Automatic calculation of table row height. This is just a little tricky here as using\n\t * initialisation DataTables has tale the table out of the document, so we need to create\n\t * a new table and insert it into the document, calculate the row height and then whip the\n\t * table out.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnCalcRowHeight\": function ()\n\t{\n\t\tvar nTable = this.s.dt.nTable.cloneNode( false );\n\t\tvar nContainer = $(\n\t\t\t'<div class=\"'+this.s.dt.oClasses.sWrapper+' DTS\">'+\n\t\t\t\t'<div class=\"'+this.s.dt.oClasses.sScrollWrapper+'\">'+\n\t\t\t\t\t'<div class=\"'+this.s.dt.oClasses.sScrollBody+'\"></div>'+\n\t\t\t\t'</div>'+\n\t\t\t'</div>'\n\t\t)[0];\n\n\t\t$(nTable).append(\n\t\t\t'<tbody>'+\n\t\t\t\t'<tr>'+\n\t\t\t\t\t'<td>&nbsp;</td>'+\n\t\t\t\t'</tr>'+\n\t\t\t'</tbody>'\n\t\t);\n\n\t\t$('div.'+this.s.dt.oClasses.sScrollBody, nContainer).append( nTable );\n\n\t\tdocument.body.appendChild( nContainer );\n\t\tthis.s.rowHeight = $('tbody tr', nTable).outerHeight();\n\t\tdocument.body.removeChild( nContainer );\n\t},\n\n\n\t/**\n\t * Update any information elements that are controlled by the DataTable based on the scrolling\n\t * viewport and what rows are visible in it. This function basically acts in the same way as\n\t * _fnUpdateInfo in DataTables, and effectively replaces that function.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnInfo\": function ()\n\t{\n\t\tif ( !this.s.dt.oFeatures.bInfo )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar\n\t\t\tdt = this.s.dt,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiStart = this.fnPixelsToRow(iScrollTop)+1, \n\t\t\tiMax = dt.fnRecordsTotal(),\n\t\t\tiTotal = dt.fnRecordsDisplay(),\n\t\t\tiPossibleEnd = this.fnPixelsToRow(iScrollTop+$(this.dom.scroller).height()),\n\t\t\tiEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,\n\t\t\tsStart = dt.fnFormatNumber( iStart ),\n\t\t\tsEnd = dt.fnFormatNumber( iEnd ),\n\t\t\tsMax = dt.fnFormatNumber( iMax ),\n\t\t\tsTotal = dt.fnFormatNumber( iTotal ),\n\t\t\tsOut;\n\t\t\n\t\tif ( dt.fnRecordsDisplay() === 0 && \n\t\t\t   dt.fnRecordsDisplay() == dt.fnRecordsTotal() )\n\t\t{\n\t\t\t/* Empty record set */\n\t\t\tsOut = dt.oLanguage.sInfoEmpty+ dt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse if ( dt.fnRecordsDisplay() === 0 )\n\t\t{\n\t\t\t/* Rmpty record set after filtering */\n\t\t\tsOut = dt.oLanguage.sInfoEmpty +' '+ \n\t\t\t\tdt.oLanguage.sInfoFiltered.replace('_MAX_', sMax)+\n\t\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() )\n\t\t{\n\t\t\t/* Normal record set */\n\t\t\tsOut = dt.oLanguage.sInfo.\n\t\t\t\t\treplace('_START_', sStart).\n\t\t\t\t\treplace('_END_',   sEnd).\n\t\t\t\t\treplace('_TOTAL_', sTotal)+ \n\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Record set after filtering */\n\t\t\tsOut = dt.oLanguage.sInfo.\n\t\t\t\t\treplace('_START_', sStart).\n\t\t\t\t\treplace('_END_',   sEnd).\n\t\t\t\t\treplace('_TOTAL_', sTotal) +' '+ \n\t\t\t\tdt.oLanguage.sInfoFiltered.replace('_MAX_', \n\t\t\t\t\tdt.fnFormatNumber(dt.fnRecordsTotal()))+ \n\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\t\n\t\tvar n = dt.aanFeatures.i;\n\t\tif ( typeof n != 'undefined' )\n\t\t{\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Statics\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Scroller default settings for initialisation\n *  @namespace\n *  @static\n */\nScroller.oDefaults = {\n\t/** \n\t * Indicate if Scroller show show trace information on the console or not. This can be \n\t * useful when debugging Scroller or if just curious as to what it is doing, but should\n\t * be turned off for production.\n\t *  @type     bool\n\t *  @default  false\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"trace\": true\n\t *        }\n\t *    } );\n\t */\n\t\"trace\": false,\n\n\t/** \n\t * Scroller will attempt to automatically calculate the height of rows for it's internal\n\t * calculations. However the height that is used can be overridden using this parameter.\n\t *  @type     int|string\n\t *  @default  auto\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"rowHeight\": 30\n\t *        }\n\t *    } );\n\t */\n\t\"rowHeight\": \"auto\",\n\n\t/** \n\t * When using server-side processing, Scroller will wait a small amount of time to allow\n\t * the scrolling to finish before requesting more data from the server. This prevents\n\t * you from DoSing your own server! The wait time can be configured by this parameter.\n\t *  @type     int\n\t *  @default  200\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"serverWait\": 100\n\t *        }\n\t *    } );\n\t */\n\t\"serverWait\": 200,\n\n\t/** \n\t * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\n\t * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\n\t * rows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\n\t * The value is based upon the number of rows that can be displayed in the viewport (i.e. \n\t * a value of 1), and will apply the display range to records before before and after the\n\t * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\n\t * of rows before the current viewport, the current viewport's rows and 1 viewport's worth\n\t * of rows after the current viewport. Adjusting this value can be useful for ensuring \n\t * smooth scrolling based on your data set.\n\t *  @type     int\n\t *  @default  7\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"displayBuffer\": 10\n\t *        }\n\t *    } );\n\t */\n\t\"displayBuffer\": 9,\n\n\t/** \n\t * Scroller uses the boundary scaling factor to decide when to redraw the table - which it\n\t * typically does before you reach the end of the currently loaded data set (in order to\n\t * allow the data to look continuous to a user scrolling through the data). If given as 0\n\t * then the table will be redrawn whenever the viewport is scrolled, while 1 would not\n\t * redraw the table until the currently loaded data has all been shown. You will want \n\t * something in the middle - the default factor of 0.5 is usually suitable.\n\t *  @type     float\n\t *  @default  0.5\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"boundaryScale\": 0.75\n\t *        }\n\t *    } );\n\t */\n\t\"boundaryScale\": 0.5,\n\n\t/** \n\t * Show (or not) the loading element in the background of the table. Note that you should\n\t * include the dataTables.scroller.css file for this to be displayed correctly.\n\t *  @type     boolean\n\t *  @default  false\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"loadingIndicator\": true\n\t *        }\n\t *    } );\n\t */\n\t\"loadingIndicator\": false\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Name of this class\n *  @type     String\n *  @default  Scroller\n *  @static\n */\nScroller.prototype.CLASS = \"Scroller\";\n\n\n/**\n * Scroller version\n *  @type      String\n *  @default   See code\n *  @static\n */\nScroller.VERSION = \"1.1.0\";\nScroller.prototype.VERSION = Scroller.VERSION;\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.9.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar init = (typeof oDTSettings.oInit.oScroller == 'undefined') ?\n\t\t\t\t{} : oDTSettings.oInit.oScroller;\n\t\t\tvar oScroller = new Scroller( oDTSettings, init );\n\t\t\treturn oScroller.dom.wrapper;\n\t\t},\n\t\t\"cFeature\": \"S\",\n\t\t\"sFeature\": \"Scroller\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download\");\n}\n\n\n// Attach Scroller to DataTables so it can be accessed as an 'extra'\n$.fn.dataTable.Scroller = Scroller;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/server-side_processing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/server_processing.php\",\n\t\t\t\t\t\"bServerSide\": true,\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"oScroller\": {\n\t\t\t\t\t\t\"loadingIndicator\": true\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller example - server-side processing\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>When using server-side processing, Scroller will wait a small amount of time to allow the scrolling to finish before requesting more data from the server (200mS by default). This prevents you from DoSing your own server! This example shows Scroller in action with a database of 10'000 records, although of course server-side processing can scale much larger if you require. In this example we also enable the <i>loadingIndicator</i> option of Scroller to show the end user what is happening when they scroll passed the currently loaded data.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/server_processing.php\",\n\t\t\"bServerSide\": true,\n\t\t\"sDom\": \"frtiS\",\n\t\t\"oScroller\": {\n\t\t\t\"loadingIndicator\": true\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/state_saving.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true,\n\t\t\t\t\t\"bStateSave\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller with state saving\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Scroller will automatically integrate with DataTables in order to save the scrolling position of the table, if state saving is enabled in the DataTable (bStateSave). This example shows that in practice - to demonstrate, scroll the table and then reload the page.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true,\n\t\t\"bStateSave\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/ZeroClipboard.as",
    "content": "﻿/* Compile using: mxmlc --target-player=10.0.0 ZeroClipboard.as */\npackage {\n\timport flash.display.Stage;\n\timport flash.display.Sprite;\n\timport flash.display.LoaderInfo;\n\timport flash.display.StageScaleMode;\n\timport flash.events.*;\n\timport flash.display.StageAlign;\n\timport flash.display.StageScaleMode;\n\timport flash.external.ExternalInterface;\n\timport flash.system.Security;\n\timport flash.utils.*;\n\timport flash.system.System;\n\timport flash.net.FileReference;\n\timport flash.net.FileFilter;\n \n\tpublic class ZeroClipboard extends Sprite {\n\t\t\n\t\tprivate var domId:String = '';\n\t\tprivate var button:Sprite;\n\t\tprivate var clipText:String = 'blank';\n\t\tprivate var fileName:String = '';\n\t\tprivate var action:String = 'copy';\n\t\tprivate var incBom:Boolean = true;\n\t\tprivate var charSet:String = 'utf8';\n\t\t\n\t\t\n\t\tpublic function ZeroClipboard() {\n\t\t\t// constructor, setup event listeners and external interfaces\n\t\t\tstage.scaleMode = StageScaleMode.EXACT_FIT;\n\t\t\tflash.system.Security.allowDomain(\"*\");\n\t\t\t\n\t\t\t// import flashvars\n\t\t\tvar flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters;\n\t\t\tdomId = flashvars.id;\n\t\t\t\n\t\t\t// invisible button covers entire stage\n\t\t\tbutton = new Sprite();\n\t\t\tbutton.buttonMode = true;\n\t\t\tbutton.useHandCursor = true;\n\t\t\tbutton.graphics.beginFill(0x00FF00);\n\t\t\tbutton.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);\n\t\t\tbutton.alpha = 0.0;\n\t\t\taddChild(button);\n\t\t\t\n\t\t\tbutton.addEventListener(MouseEvent.CLICK, clickHandler);\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOver', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOut', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseDown', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_UP, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseUp', null );\n\t\t\t} );\n\t\t\t\n\t\t\t// External functions - readd whenever the stage is made active for IE\n\t\t\taddCallbacks();\n\t\t\tstage.addEventListener(Event.ACTIVATE, addCallbacks);\n\t\t\t\n\t\t\t// signal to the browser that we are ready\n\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'load', null );\n\t\t}\n\t\t\n\t\tpublic function addCallbacks (evt:Event = null):void {\n\t\t\tExternalInterface.addCallback(\"setHandCursor\", setHandCursor);\n\t\t\tExternalInterface.addCallback(\"clearText\", clearText);\n\t\t\tExternalInterface.addCallback(\"setText\", setText);\n\t\t\tExternalInterface.addCallback(\"appendText\", appendText);\n\t\t\tExternalInterface.addCallback(\"setFileName\", setFileName);\n\t\t\tExternalInterface.addCallback(\"setAction\", setAction);\n\t\t\tExternalInterface.addCallback(\"setCharSet\", setCharSet);\n\t\t\tExternalInterface.addCallback(\"setBomInc\", setBomInc);\n\t\t}\n\t\t\n\t\t\n\t\tpublic function setCharSet(newCharSet:String):void {\n\t\t\tif ( newCharSet == 'UTF16LE' ) {\n\t\t\t\tcharSet = newCharSet;\n\t\t\t} else {\n\t\t\t\tcharSet = 'UTF8';\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic function setBomInc(newBomInc:Boolean):void {\n\t\t\tincBom = newBomInc;\n\t\t}\n\t\t\n\t\tpublic function clearText():void {\n\t\t\tclipText = '';\n\t\t}\n\t\t\n\t\tpublic function appendText(newText:String):void {\n\t\t\tclipText += newText;\n\t\t}\n\t\t\n\t\tpublic function setText(newText:String):void {\n\t\t\tclipText = newText;\n\t\t}\n\t\t\n\t\tpublic function setFileName(newFileName:String):void {\n\t\t\tfileName = newFileName;\n\t\t}\n\t\t\n\t\tpublic function setAction(newAction:String):void {\n\t\t\taction = newAction;\n\t\t}\n\t\t\n\t\tpublic function setHandCursor(enabled:Boolean):void {\n\t\t\t// control whether the hand cursor is shown on rollover (true)\n\t\t\t// or the default arrow cursor (false)\n\t\t\tbutton.useHandCursor = enabled;\n\t\t}\n\t\t\n\t\t\n\t\tprivate function clickHandler(event:Event):void {\n\t\t\tvar fileRef:FileReference = new FileReference();\n\t\t\tfileRef.addEventListener(Event.COMPLETE, saveComplete);\n\t\t\t\n\t\t\tif ( action == \"save\" ) {\n\t\t\t\t/* Save as a file */\n\t\t\t\tif ( charSet == 'UTF16LE' ) {\n\t\t\t\t\tfileRef.save( strToUTF16LE(clipText), fileName );\n\t\t\t\t} else {\n\t\t\t\t\tfileRef.save( strToUTF8(clipText), fileName );\n\t\t\t\t}\n\t\t\t} else if ( action == \"pdf\" ) {\n\t\t\t\t\tfileRef.save( \"This instance of ZeroClipboard is not configured for PDF export. \"+\n\t\t\t\t\t\t\"Please use the PDF export version.\", fileName+\".txt\" );\n\t\t\t} else {\n\t\t\t\t/* Copy the text to the clipboard. Note charset and BOM have no effect here */\n\t\t\t\tSystem.setClipboard( clipText );\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tprivate function saveComplete(event:Event):void {\n\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );\n\t\t}\n\t\t\n\t\t\n\t\tprivate function getProp( prop:String, opts:Array ):String\n\t\t{\n\t\t\tvar i:int, iLen:int;\n\t\t\tfor ( i=0, iLen=opts.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( opts[i].indexOf( prop+\":\" ) != -1 )\n\t\t\t\t{\n\t\t\t\t\treturn opts[i].replace( prop+\":\", \"\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * Function: strToUTF8\n\t\t * Purpose:  Convert a string to the output utf-8\n\t\t * Returns:  ByteArray\n\t\t * Inputs:   String\n\t\t */\n\t\tprivate function strToUTF8( str:String ):ByteArray {\n\t\t\tvar utf8:ByteArray = new ByteArray();\n\t\t\t\n\t\t\t/* BOM first */\n\t\t\tif ( incBom ) {\n\t\t\t\tutf8.writeByte( 0xEF );\n\t\t\t\tutf8.writeByte( 0xBB );\n\t\t\t\tutf8.writeByte( 0xBF );\n\t\t\t}\n\t\t\tutf8.writeUTFBytes( str );\n\t\t\t\n\t\t\treturn utf8;\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * Function: strToUTF16LE\n\t\t * Purpose:  Convert a string to the output utf-16\n\t\t * Returns:  ByteArray\n\t\t * Inputs:   String\n\t\t * Notes:    The fact that this function is needed is a little annoying. Basically, strings in\n\t\t *   AS3 are UTF-16 (with surrogate pairs and everything), but characters which take up less\n\t\t *   than 8 bytes appear to be stored as only 8 bytes. This function effective adds the \n\t\t *   padding required, and the BOM\n\t\t */\n\t\tprivate function strToUTF16LE( str:String ):ByteArray {\n\t\t\tvar utf16:ByteArray = new ByteArray();\n\t\t\tvar iChar:uint;\n\t\t\tvar i:uint=0, iLen:uint = str.length;\n\t\t\t\n\t\t\t/* BOM first */\n\t\t\tif ( incBom ) {\n\t\t\t\tutf16.writeByte( 0xFF );\n\t\t\t\tutf16.writeByte( 0xFE );\n\t\t\t}\n\t\t\t\n\t\t\twhile ( i < iLen ) {\n\t\t\t\tiChar = str.charCodeAt(i);\n\t\t\t\t\n\t\t\t\tif ( iChar < 0xFF ) {\n\t\t\t\t\t/* one byte char */\n\t\t\t\t\tutf16.writeByte( iChar );\n\t\t\t\t\tutf16.writeByte( 0 );\n\t\t\t\t} else {\n\t\t\t\t\t/* two byte char */\n\t\t\t\t\tutf16.writeByte( iChar & 0x00FF );\n\t\t\t\t\tutf16.writeByte( iChar >> 8 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ti++;\n\t\t\t}\n\t\t\t\n\t\t\treturn utf16;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.js",
    "content": "/*\n * File:        TableTools.js\n * Version:     2.1.4\n * Description: Tools and buttons for DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Language:    Javascript\n * License:\t    GPL v2 or BSD 3 point style\n * Project:\t    DataTables\n * \n * Copyright 2009-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n/* Global scope for TableTools */\nvar TableTools;\n\n(function($, window, document) {\n\n/** \n * TableTools provides flexible buttons and other tools for a DataTables enhanced table\n * @class TableTools\n * @constructor\n * @param {Object} oDT DataTables instance\n * @param {Object} oOpts TableTools options\n * @param {String} oOpts.sSwfPath ZeroClipboard SWF path\n * @param {String} oOpts.sRowSelect Row selection options - 'none', 'single' or 'multi'\n * @param {Function} oOpts.fnPreRowSelect Callback function just prior to row selection\n * @param {Function} oOpts.fnRowSelected Callback function just after row selection\n * @param {Function} oOpts.fnRowDeselected Callback function when row is deselected\n * @param {Array} oOpts.aButtons List of buttons to be used\n */\nTableTools = function( oDT, oOpts )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( ! this instanceof TableTools )\n\t{\n\t\talert( \"Warning: TableTools must be initialised with the keyword 'new'\" );\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for TableTools instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * Store 'this' so the instance can be retrieved from the settings object\n\t\t * @property that\n\t\t * @type\t object\n\t\t * @default  this\n\t\t */\n\t\t\"that\": this,\n\t\t\n\t\t/** \n\t\t * DataTables settings objects\n\t\t * @property dt\n\t\t * @type\t object\n\t\t * @default  <i>From the oDT init option</i>\n\t\t */\n\t\t\"dt\": oDT.fnSettings(),\n\t\t\n\t\t/**\n\t\t * @namespace Print specific information\n\t\t */\n\t\t\"print\": {\n\t\t\t/** \n\t\t\t * DataTables draw 'start' point before the printing display was shown\n\t\t\t *  @property saveStart\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveStart\": -1,\n\t\t\t\n\t\t\t/** \n\t\t\t * DataTables draw 'length' point before the printing display was shown\n\t\t\t *  @property saveLength\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveLength\": -1,\n\t\t\n\t\t\t/** \n\t\t\t * Page scrolling point before the printing display was shown so it can be restored\n\t\t\t *  @property saveScroll\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveScroll\": -1,\n\t\t\n\t\t\t/** \n\t\t\t * Wrapped function to end the print display (to maintain scope)\n\t\t\t *  @property funcEnd\n\t\t \t *  @type\t Function\n\t\t\t *  @default  function () {}\n\t\t \t */\n\t\t  \"funcEnd\": function () {}\n\t  },\n\t\n\t\t/**\n\t\t * A unique ID is assigned to each button in each instance\n\t\t * @property buttonCounter\n\t\t *  @type\t int\n\t\t * @default  0\n\t\t */\n\t  \"buttonCounter\": 0,\n\t\t\n\t\t/**\n\t\t * @namespace Select rows specific information\n\t\t */\n\t\t\"select\": {\n\t\t\t/**\n\t\t\t * Select type - can be 'none', 'single' or 'multi'\n\t\t\t * @property type\n\t\t\t *  @type\t string\n\t\t\t * @default  \"\"\n\t\t\t */\n\t\t\t\"type\": \"\",\n\t\t\t\n\t\t\t/**\n\t\t\t * Array of nodes which are currently selected\n\t\t\t *  @property selected\n\t\t\t *  @type\t array\n\t\t\t *  @default  []\n\t\t\t */\n\t\t\t\"selected\": [],\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run before the selection can take place. Will cancel the select if the\n\t\t\t * function returns false\n\t\t\t *  @property preRowSelect\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"preRowSelect\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run when a row is selected\n\t\t\t *  @property postSelected\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"postSelected\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run when a row is deselected\n\t\t\t *  @property postDeselected\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"postDeselected\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Indicate if all rows are selected (needed for server-side processing)\n\t\t\t *  @property all\n\t\t\t *  @type\t boolean\n\t\t\t *  @default  false\n\t\t\t */\n\t\t\t\"all\": false,\n\t\t\t\n\t\t\t/**\n\t\t\t * Class name to add to selected TR nodes\n\t\t\t *  @property selectedClass\n\t\t\t *  @type\t String\n\t\t\t *  @default  \"\"\n\t\t\t */\n\t\t\t\"selectedClass\": \"\"\n\t\t},\n\t\t\n\t\t/**\n\t\t * Store of the user input customisation object\n\t\t *  @property custom\n\t\t *  @type\t object\n\t\t *  @default  {}\n\t\t */\n\t\t\"custom\": {},\n\t\t\n\t\t/**\n\t\t * SWF movie path\n\t\t *  @property swfPath\n\t\t *  @type\t string\n\t\t *  @default  \"\"\n\t\t */\n\t\t\"swfPath\": \"\",\n\t\t\n\t\t/**\n\t\t * Default button set\n\t\t *  @property buttonSet\n\t\t *  @type\t array\n\t\t *  @default  []\n\t\t */\n\t\t\"buttonSet\": [],\n\t\t\n\t\t/**\n\t\t * When there is more than one TableTools instance for a DataTable, there must be a \n\t\t * master which controls events (row selection etc)\n\t\t *  @property master\n\t\t *  @type\t boolean\n\t\t *  @default  false\n\t\t */\n\t\t\"master\": false,\n\t\t\n\t\t/**\n\t\t * Tag names that are used for creating collections and buttons\n\t\t *  @namesapce\n\t\t */\n\t\t\"tags\": {}\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * DIV element that is create and all TableTools buttons (and their children) put into\n\t\t *  @property container\n\t\t *  @type\t node\n\t\t *  @default  null\n\t\t */\n\t\t\"container\": null,\n\t\t\n\t\t/**\n\t\t * The table node to which TableTools will be applied\n\t\t *  @property table\n\t\t *  @type\t node\n\t\t *  @default  null\n\t\t */\n\t\t\"table\": null,\n\t\t\n\t\t/**\n\t\t * @namespace Nodes used for the print display\n\t\t */\n\t\t\"print\": {\n\t\t\t/**\n\t\t\t * Nodes which have been removed from the display by setting them to display none\n\t\t\t *  @property hidden\n\t\t\t *  @type\t array\n\t\t \t *  @default  []\n\t\t\t */\n\t\t  \"hidden\": [],\n\t\t\t\n\t\t\t/**\n\t\t\t * The information display saying telling the user about the print display\n\t\t\t *  @property message\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t  \"message\": null\n\t  },\n\t\t\n\t\t/**\n\t\t * @namespace Nodes used for a collection display. This contains the currently used collection\n\t\t */\n\t\t\"collection\": {\n\t\t\t/**\n\t\t\t * The div wrapper containing the buttons in the collection (i.e. the menu)\n\t\t\t *  @property collection\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t\t\"collection\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Background display to provide focus and capture events\n\t\t\t *  @property background\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t\t\"background\": null\n\t\t}\n\t};\n\n\t/**\n\t * @namespace Name space for the classes that this TableTools instance will use\n\t * @extends TableTools.classes\n\t */\n\tthis.classes = $.extend( true, {}, TableTools.classes );\n\tif ( this.s.dt.bJUI )\n\t{\n\t\t$.extend( true, this.classes, TableTools.classes_themeroller );\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @method fnSettings\n\t *  @returns {object} TableTools settings object\n\t */\n\tthis.fnSettings = function () {\n\t\treturn this.s;\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\tthis._fnConstruct( oOpts );\n\t\n\treturn this;\n};\n\n\n\nTableTools.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @returns {array} List of TR nodes which are currently selected\n\t *  @param {boolean} [filtered=false] Get only selected rows which are  \n\t *    available given the filtering applied to the table. By default\n\t *    this is false -  i.e. all rows, regardless of filtering are \n\t      selected.\n\t */\n\t\"fnGetSelected\": function ( filtered )\n\t{\n\t\tvar\n\t\t\tout = [],\n\t\t\tdata = this.s.dt.aoData,\n\t\t\tdisplayed = this.s.dt.aiDisplay,\n\t\t\ti, iLen;\n\n\t\tif ( filtered )\n\t\t{\n\t\t\t// Only consider filtered rows\n\t\t\tfor ( i=0, iLen=displayed.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( data[ displayed[i] ]._DTTT_selected )\n\t\t\t\t{\n\t\t\t\t\tout.push( data[ displayed[i] ].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Use all rows\n\t\t\tfor ( i=0, iLen=data.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( data[i]._DTTT_selected )\n\t\t\t\t{\n\t\t\t\t\tout.push( data[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t},\n\n\n\t/**\n\t * Get the data source objects/arrays from DataTables for the selected rows (same as\n\t * fnGetSelected followed by fnGetData on each row from the table)\n\t *  @returns {array} Data from the TR nodes which are currently selected\n\t */\n\t\"fnGetSelectedData\": function ()\n\t{\n\t\tvar out = [];\n\t\tvar data=this.s.dt.aoData;\n\t\tvar i, iLen;\n\n\t\tfor ( i=0, iLen=data.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( data[i]._DTTT_selected )\n\t\t\t{\n\t\t\t\tout.push( this.s.dt.oInstance.fnGetData(i) );\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t},\n\t\n\t\n\t/**\n\t * Check to see if a current row is selected or not\n\t *  @param {Node} n TR node to check if it is currently selected or not\n\t *  @returns {Boolean} true if select, false otherwise\n\t */\n\t\"fnIsSelected\": function ( n )\n\t{\n\t\tvar pos = this.s.dt.oInstance.fnGetPosition( n );\n\t\treturn (this.s.dt.aoData[pos]._DTTT_selected===true) ? true : false;\n\t},\n\n\t\n\t/**\n\t * Select all rows in the table\n\t *  @param {boolean} [filtered=false] Select only rows which are available \n\t *    given the filtering applied to the table. By default this is false - \n\t *    i.e. all rows, regardless of filtering are selected.\n\t */\n\t\"fnSelectAll\": function ( filtered )\n\t{\n\t\tvar s = this._fnGetMasterSettings();\n\t\t\n\t\tthis._fnRowSelect( (filtered === true) ?\n\t\t\ts.dt.aiDisplay :\n\t\t\ts.dt.aoData\n\t\t);\n\t},\n\n\t\n\t/**\n\t * Deselect all rows in the table\n\t *  @param {boolean} [filtered=false] Deselect only rows which are available \n\t *    given the filtering applied to the table. By default this is false - \n\t *    i.e. all rows, regardless of filtering are deselected.\n\t */\n\t\"fnSelectNone\": function ( filtered )\n\t{\n\t\tvar s = this._fnGetMasterSettings();\n\n\t\tthis._fnRowDeselect( this.fnGetSelected(filtered) );\n\t},\n\n\t\n\t/**\n\t * Select row(s)\n\t *  @param {node|object|array} n The row(s) to select. Can be a single DOM\n\t *    TR node, an array of TR nodes or a jQuery object.\n\t */\n\t\"fnSelect\": function ( n )\n\t{\n\t\tif ( this.s.select.type == \"single\" )\n\t\t{\n\t\t\tthis.fnSelectNone();\n\t\t\tthis._fnRowSelect( n );\n\t\t}\n\t\telse if ( this.s.select.type == \"multi\" )\n\t\t{\n\t\t\tthis._fnRowSelect( n );\n\t\t}\n\t},\n\n\t\n\t/**\n\t * Deselect row(s)\n\t *  @param {node|object|array} n The row(s) to deselect. Can be a single DOM\n\t *    TR node, an array of TR nodes or a jQuery object.\n\t */\n\t\"fnDeselect\": function ( n )\n\t{\n\t\tthis._fnRowDeselect( n );\n\t},\n\t\n\t\n\t/**\n\t * Get the title of the document - useful for file names. The title is retrieved from either\n\t * the configuration object's 'title' parameter, or the HTML document title\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {String} Button title\n\t */\n\t\"fnGetTitle\": function( oConfig )\n\t{\n\t\tvar sTitle = \"\";\n\t\tif ( typeof oConfig.sTitle != 'undefined' && oConfig.sTitle !== \"\" ) {\n\t\t\tsTitle = oConfig.sTitle;\n\t\t} else {\n\t\t\tvar anTitle = document.getElementsByTagName('title');\n\t\t\tif ( anTitle.length > 0 )\n\t\t\t{\n\t\t\t\tsTitle = anTitle[0].innerHTML;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Strip characters which the OS will object to - checking for UTF8 support in the scripting\n\t\t * engine\n\t\t */\n\t\tif ( \"\\u00A1\".toString().length < 4 ) {\n\t\t\treturn sTitle.replace(/[^a-zA-Z0-9_\\u00A1-\\uFFFF\\.,\\-_ !\\(\\)]/g, \"\");\n\t\t} else {\n\t\t\treturn sTitle.replace(/[^a-zA-Z0-9_\\.,\\-_ !\\(\\)]/g, \"\");\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Calculate a unity array with the column width by proportion for a set of columns to be\n\t * included for a button. This is particularly useful for PDF creation, where we can use the\n\t * column widths calculated by the browser to size the columns in the PDF.\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {Array} Unity array of column ratios\n\t */\n\t\"fnCalcColRatios\": function ( oConfig )\n\t{\n\t\tvar\n\t\t\taoCols = this.s.dt.aoColumns,\n\t\t\taColumnsInc = this._fnColumnTargets( oConfig.mColumns ),\n\t\t\taColWidths = [],\n\t\t\tiWidth = 0, iTotal = 0, i, iLen;\n\t\t\n\t\tfor ( i=0, iLen=aColumnsInc.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aColumnsInc[i] )\n\t\t\t{\n\t\t\t\tiWidth = aoCols[i].nTh.offsetWidth;\n\t\t\t\tiTotal += iWidth;\n\t\t\t\taColWidths.push( iWidth );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor ( i=0, iLen=aColWidths.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taColWidths[i] = aColWidths[i] / iTotal;\n\t\t}\n\t\t\n\t\treturn aColWidths.join('\\t');\n\t},\n\t\n\t\n\t/**\n\t * Get the information contained in a table as a string\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {String} Table data as a string\n\t */\n\t\"fnGetTableData\": function ( oConfig )\n\t{\n\t\t/* In future this could be used to get data from a plain HTML source as well as DataTables */\n\t\tif ( this.s.dt )\n\t\t{\n\t\t\treturn this._fnGetDataTablesData( oConfig );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Pass text to a flash button instance, which will be used on the button's click handler\n\t *  @param   {Object} clip Flash button object\n\t *  @param   {String} text Text to set\n\t */\n\t\"fnSetText\": function ( clip, text )\n\t{\n\t\tthis._fnFlashSetText( clip, text );\n\t},\n\t\n\t\n\t/**\n\t * Resize the flash elements of the buttons attached to this TableTools instance - this is\n\t * useful for when initialising TableTools when it is hidden (display:none) since sizes can't\n\t * be calculated at that time.\n\t */\n\t\"fnResizeButtons\": function ()\n\t{\n\t\tfor ( var cli in ZeroClipboard_TableTools.clients )\n\t\t{\n\t\t\tif ( cli )\n\t\t\t{\n\t\t\t\tvar client = ZeroClipboard_TableTools.clients[cli];\n\t\t\t\tif ( typeof client.domElement != 'undefined' &&\n\t\t\t\t\t client.domElement.parentNode )\n\t\t\t\t{\n\t\t\t\t\tclient.positionElement();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Check to see if any of the ZeroClipboard client's attached need to be resized\n\t */\n\t\"fnResizeRequired\": function ()\n\t{\n\t\tfor ( var cli in ZeroClipboard_TableTools.clients )\n\t\t{\n\t\t\tif ( cli )\n\t\t\t{\n\t\t\t\tvar client = ZeroClipboard_TableTools.clients[cli];\n\t\t\t\tif ( typeof client.domElement != 'undefined' &&\n\t\t\t\t\t client.domElement.parentNode == this.dom.container &&\n\t\t\t\t\t client.sized === false )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t\n\t\n\t/**\n\t * Programmatically enable or disable the print view\n\t *  @param {boolean} [bView=true] Show the print view if true or not given. If false, then\n\t *    terminate the print view and return to normal.\n\t *  @param {object} [oConfig={}] Configuration for the print view\n\t *  @param {boolean} [oConfig.bShowAll=false] Show all rows in the table if true\n\t *  @param {string} [oConfig.sInfo] Information message, displayed as an overlay to the\n\t *    user to let them know what the print view is.\n\t *  @param {string} [oConfig.sMessage] HTML string to show at the top of the document - will\n\t *    be included in the printed document.\n\t */\n\t\"fnPrint\": function ( bView, oConfig )\n\t{\n\t\tif ( oConfig === undefined )\n\t\t{\n\t\t\toConfig = {};\n\t\t}\n\n\t\tif ( bView === undefined || bView )\n\t\t{\n\t\t\tthis._fnPrintStart( oConfig );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._fnPrintEnd();\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Show a message to the end user which is nicely styled\n\t *  @param {string} message The HTML string to show to the user\n\t *  @param {int} time The duration the message is to be shown on screen for (mS)\n\t */\n\t\"fnInfo\": function ( message, time ) {\n\t\tvar nInfo = document.createElement( \"div\" );\n\t\tnInfo.className = this.classes.print.info;\n\t\tnInfo.innerHTML = message;\n\n\t\tdocument.body.appendChild( nInfo );\n\t\t\n\t\tsetTimeout( function() {\n\t\t\t$(nInfo).fadeOut( \"normal\", function() {\n\t\t\t\tdocument.body.removeChild( nInfo );\n\t\t\t} );\n\t\t}, time );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @param   {Object} oOpts Same as TableTools constructor\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ( oOpts )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tthis._fnCustomiseSettings( oOpts );\n\t\t\n\t\t/* Container element */\n\t\tthis.dom.container = document.createElement( this.s.tags.container );\n\t\tthis.dom.container.className = this.classes.container;\n\t\t\n\t\t/* Row selection config */\n\t\tif ( this.s.select.type != 'none' )\n\t\t{\n\t\t\tthis._fnRowSelectConfig();\n\t\t}\n\t\t\n\t\t/* Buttons */\n\t\tthis._fnButtonDefinations( this.s.buttonSet, this.dom.container );\n\t\t\n\t\t/* Destructor - need to wipe the DOM for IE's garbage collector */\n\t\tthis.s.dt.aoDestroyCallback.push( {\n\t\t\t\"sName\": \"TableTools\",\n\t\t\t\"fn\": function () {\n\t\t\t\tthat.dom.container.innerHTML = \"\";\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Take the user defined settings and the default settings and combine them.\n\t *  @method  _fnCustomiseSettings\n\t *  @param   {Object} oOpts Same as TableTools constructor\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCustomiseSettings\": function ( oOpts )\n\t{\n\t\t/* Is this the master control instance or not? */\n\t\tif ( typeof this.s.dt._TableToolsInit == 'undefined' )\n\t\t{\n\t\t\tthis.s.master = true;\n\t\t\tthis.s.dt._TableToolsInit = true;\n\t\t}\n\t\t\n\t\t/* We can use the table node from comparisons to group controls */\n\t\tthis.dom.table = this.s.dt.nTable;\n\t\t\n\t\t/* Clone the defaults and then the user options */\n\t\tthis.s.custom = $.extend( {}, TableTools.DEFAULTS, oOpts );\n\t\t\n\t\t/* Flash file location */\n\t\tthis.s.swfPath = this.s.custom.sSwfPath;\n\t\tif ( typeof ZeroClipboard_TableTools != 'undefined' )\n\t\t{\n\t\t\tZeroClipboard_TableTools.moviePath = this.s.swfPath;\n\t\t}\n\t\t\n\t\t/* Table row selecting */\n\t\tthis.s.select.type = this.s.custom.sRowSelect;\n\t\tthis.s.select.preRowSelect = this.s.custom.fnPreRowSelect;\n\t\tthis.s.select.postSelected = this.s.custom.fnRowSelected;\n\t\tthis.s.select.postDeselected = this.s.custom.fnRowDeselected;\n\n\t\t// Backwards compatibility - allow the user to specify a custom class in the initialiser\n\t\tif ( this.s.custom.sSelectedClass )\n\t\t{\n\t\t\tthis.classes.select.row = this.s.custom.sSelectedClass;\n\t\t}\n\n\t\tthis.s.tags = this.s.custom.oTags;\n\n\t\t/* Button set */\n\t\tthis.s.buttonSet = this.s.custom.aButtons;\n\t},\n\t\n\t\n\t/**\n\t * Take the user input arrays and expand them to be fully defined, and then add them to a given\n\t * DOM element\n\t *  @method  _fnButtonDefinations\n\t *  @param {array} buttonSet Set of user defined buttons\n\t *  @param {node} wrapper Node to add the created buttons to\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnButtonDefinations\": function ( buttonSet, wrapper )\n\t{\n\t\tvar buttonDef;\n\t\t\n\t\tfor ( var i=0, iLen=buttonSet.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( typeof buttonSet[i] == \"string\" )\n\t\t\t{\n\t\t\t\tif ( typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined' )\n\t\t\t\t{\n\t\t\t\t\talert( \"TableTools: Warning - unknown button type: \"+buttonSet[i] );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbuttonDef = $.extend( {}, TableTools.BUTTONS[ buttonSet[i] ], true );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( typeof TableTools.BUTTONS[ buttonSet[i].sExtends ] == 'undefined' )\n\t\t\t\t{\n\t\t\t\t\talert( \"TableTools: Warning - unknown button type: \"+buttonSet[i].sExtends );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar o = $.extend( {}, TableTools.BUTTONS[ buttonSet[i].sExtends ], true );\n\t\t\t\tbuttonDef = $.extend( o, buttonSet[i], true );\n\t\t\t}\n\t\t\t\n\t\t\twrapper.appendChild( this._fnCreateButton( \n\t\t\t\tbuttonDef, \n\t\t\t\t$(wrapper).hasClass(this.classes.collection.container)\n\t\t\t) );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Create and configure a TableTools button\n\t *  @method  _fnCreateButton\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {Node} Button element\n\t *  @private \n\t */\n\t\"_fnCreateButton\": function ( oConfig, bCollectionButton )\n\t{\n\t  var nButton = this._fnButtonBase( oConfig, bCollectionButton );\n\t\t\n\t\tif ( oConfig.sAction.match(/flash/) )\n\t\t{\n\t\t\tthis._fnFlashConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"text\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"div\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"collection\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t\tthis._fnCollectionConfig( nButton, oConfig );\n\t\t}\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM needed for the button and apply some base properties. All buttons start here\n\t *  @method  _fnButtonBase\n\t *  @param   {o} oConfig Button configuration object\n\t *  @returns {Node} DIV element for the button\n\t *  @private \n\t */\n\t\"_fnButtonBase\": function ( o, bCollectionButton )\n\t{\n\t\tvar sTag, sLiner, sClass;\n\n\t\tif ( bCollectionButton )\n\t\t{\n\t\t\tsTag = o.sTag !== \"default\" ? o.sTag : this.s.tags.collection.button;\n\t\t\tsLiner = o.sLinerTag !== \"default\" ? o.sLiner : this.s.tags.collection.liner;\n\t\t\tsClass = this.classes.collection.buttons.normal;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsTag = o.sTag !== \"default\" ? o.sTag : this.s.tags.button;\n\t\t\tsLiner = o.sLinerTag !== \"default\" ? o.sLiner : this.s.tags.liner;\n\t\t\tsClass = this.classes.buttons.normal;\n\t\t}\n\n\t\tvar\n\t\t  nButton = document.createElement( sTag ),\n\t\t  nSpan = document.createElement( sLiner ),\n\t\t  masterS = this._fnGetMasterSettings();\n\t\t\n\t\tnButton.className = sClass+\" \"+o.sButtonClass;\n\t\tnButton.setAttribute('id', \"ToolTables_\"+this.s.dt.sInstance+\"_\"+masterS.buttonCounter );\n\t\tnButton.appendChild( nSpan );\n\t\tnSpan.innerHTML = o.sButtonText;\n\t\t\n\t\tmasterS.buttonCounter++;\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Get the settings object for the master instance. When more than one TableTools instance is\n\t * assigned to a DataTable, only one of them can be the 'master' (for the select rows). As such,\n\t * we will typically want to interact with that master for global properties.\n\t *  @method  _fnGetMasterSettings\n\t *  @returns {Object} TableTools settings object\n\t *  @private \n\t */\n\t\"_fnGetMasterSettings\": function ()\n\t{\n\t\tif ( this.s.master )\n\t\t{\n\t\t\treturn this.s;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Look for the master which has the same DT as this one */\n\t\t\tvar instances = TableTools._aInstances;\n\t\t\tfor ( var i=0, iLen=instances.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.table == instances[i].s.dt.nTable )\n\t\t\t\t{\n\t\t\t\t\treturn instances[i].s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Button collection functions\n\t */\n\t\n\t/**\n\t * Create a collection button, when activated will present a drop down list of other buttons\n\t *  @param   {Node} nButton Button to use for the collection activation\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar nHidden = document.createElement( this.s.tags.collection.container );\n\t\tnHidden.style.display = \"none\";\n\t\tnHidden.className = this.classes.collection.container;\n\t\toConfig._collection = nHidden;\n\t\tdocument.body.appendChild( nHidden );\n\t\t\n\t\tthis._fnButtonDefinations( oConfig.aButtons, nHidden );\n\t},\n\t\n\t\n\t/**\n\t * Show a button collection\n\t *  @param   {Node} nButton Button to use for the collection\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionShow\": function ( nButton, oConfig )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\toPos = $(nButton).offset(),\n\t\t\tnHidden = oConfig._collection,\n\t\t\tiDivX = oPos.left,\n\t\t\tiDivY = oPos.top + $(nButton).outerHeight(),\n\t\t\tiWinHeight = $(window).height(), iDocHeight = $(document).height(),\n\t\t \tiWinWidth = $(window).width(), iDocWidth = $(document).width();\n\t\t\n\t\tnHidden.style.position = \"absolute\";\n\t\tnHidden.style.left = iDivX+\"px\";\n\t\tnHidden.style.top = iDivY+\"px\";\n\t\tnHidden.style.display = \"block\";\n\t\t$(nHidden).css('opacity',0);\n\t\t\n\t\tvar nBackground = document.createElement('div');\n\t\tnBackground.style.position = \"absolute\";\n\t\tnBackground.style.left = \"0px\";\n\t\tnBackground.style.top = \"0px\";\n\t\tnBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +\"px\";\n\t\tnBackground.style.width = ((iWinWidth>iDocWidth)? iWinWidth : iDocWidth) +\"px\";\n\t\tnBackground.className = this.classes.collection.background;\n\t\t$(nBackground).css('opacity',0);\n\t\t\n\t\tdocument.body.appendChild( nBackground );\n\t\tdocument.body.appendChild( nHidden );\n\t\t\n\t\t/* Visual corrections to try and keep the collection visible */\n\t\tvar iDivWidth = $(nHidden).outerWidth();\n\t\tvar iDivHeight = $(nHidden).outerHeight();\n\t\t\n\t\tif ( iDivX + iDivWidth > iDocWidth )\n\t\t{\n\t\t\tnHidden.style.left = (iDocWidth-iDivWidth)+\"px\";\n\t\t}\n\t\t\n\t\tif ( iDivY + iDivHeight > iDocHeight )\n\t\t{\n\t\t\tnHidden.style.top = (iDivY-iDivHeight-$(nButton).outerHeight())+\"px\";\n\t\t}\n\t\n\t\tthis.dom.collection.collection = nHidden;\n\t\tthis.dom.collection.background = nBackground;\n\t\t\n\t\t/* This results in a very small delay for the end user but it allows the animation to be\n\t\t * much smoother. If you don't want the animation, then the setTimeout can be removed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\t$(nHidden).animate({\"opacity\": 1}, 500);\n\t\t\t$(nBackground).animate({\"opacity\": 0.25}, 500);\n\t\t}, 10 );\n\n\t\t/* Resize the buttons to the Flash contents fit */\n\t\tthis.fnResizeButtons();\n\t\t\n\t\t/* Event handler to remove the collection display */\n\t\t$(nBackground).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Hide a button collection\n\t *  @param   {Node} nButton Button to use for the collection\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionHide\": function ( nButton, oConfig )\n\t{\n\t\tif ( oConfig !== null && oConfig.sExtends == 'collection' )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( this.dom.collection.collection !== null )\n\t\t{\n\t\t\t$(this.dom.collection.collection).animate({\"opacity\": 0}, 500, function (e) {\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t} );\n\t\t\t\n\t\t\t$(this.dom.collection.background).animate({\"opacity\": 0}, 500, function (e) {\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t\t} );\n\t\t\t\n\t\t\tthis.dom.collection.collection = null;\n\t\t\tthis.dom.collection.background = null;\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Row selection functions\n\t */\n\t\n\t/**\n\t * Add event handlers to a table to allow for row selection\n\t *  @method  _fnRowSelectConfig\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnRowSelectConfig\": function ()\n\t{\n\t\tif ( this.s.master )\n\t\t{\n\t\t\tvar\n\t\t\t\tthat = this, \n\t\t\t\ti, iLen, \n\t\t\t\tdt = this.s.dt,\n\t\t\t\taoOpenRows = this.s.dt.aoOpenRows;\n\t\t\t\n\t\t\t$(dt.nTable).addClass( this.classes.select.table );\n\t\t\t\n\t\t\t$('tr', dt.nTBody).live( 'click', function(e) {\n\t\t\t\t/* Sub-table must be ignored (odd that the selector won't do this with >) */\n\t\t\t\tif ( this.parentNode != dt.nTBody )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Check that we are actually working with a DataTables controlled row */\n\t\t\t\tif ( dt.oInstance.fnGetData(this) === null )\n\t\t\t\t{\n\t\t\t\t    return;\n\t\t\t\t}\n\n\t\t\t\tif ( that.fnIsSelected( this ) )\n\t\t\t\t{\n\t\t\t\t\tthat._fnRowDeselect( this, e );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.select.type == \"single\" )\n\t\t\t\t{\n\t\t\t\t\tthat.fnSelectNone();\n\t\t\t\t\tthat._fnRowSelect( this, e );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.select.type == \"multi\" )\n\t\t\t\t{\n\t\t\t\t\tthat._fnRowSelect( this, e );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Bind a listener to the DataTable for when new rows are created.\n\t\t\t// This allows rows to be visually selected when they should be and\n\t\t\t// deferred rendering is used.\n\t\t\tdt.oApi._fnCallbackReg( dt, 'aoRowCreatedCallback', function (tr, data, index) {\n\t\t\t\tif ( dt.aoData[index]._DTTT_selected ) {\n\t\t\t\t\t$(tr).addClass( that.classes.select.row );\n\t\t\t\t}\n\t\t\t}, 'TableTools-SelectAll' );\n\t\t}\n\t},\n\n\t/**\n\t * Select rows\n\t *  @param   {*} src Rows to select - see _fnSelectData for a description of valid inputs\n\t *  @private \n\t */\n\t\"_fnRowSelect\": function ( src, e )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tdata = this._fnSelectData( src ),\n\t\t\tfirstTr = data.length===0 ? null : data[0].nTr,\n\t\t\tanSelected = [],\n\t\t\ti, len;\n\n\t\t// Get all the rows that will be selected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\tanSelected.push( data[i].nTr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t// User defined pre-selection function\n\t\tif ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anSelected, true) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark them as selected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tdata[i]._DTTT_selected = true;\n\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\t$(data[i].nTr).addClass( that.classes.select.row );\n\t\t\t}\n\t\t}\n\n\t\t// Post-selection function\n\t\tif ( this.s.select.postSelected !== null )\n\t\t{\n\t\t\tthis.s.select.postSelected.call( this, anSelected );\n\t\t}\n\n\t\tTableTools._fnEventDispatch( this, 'select', anSelected, true );\n\t},\n\n\t/**\n\t * Deselect rows\n\t *  @param   {*} src Rows to deselect - see _fnSelectData for a description of valid inputs\n\t *  @private \n\t */\n\t\"_fnRowDeselect\": function ( src, e )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tdata = this._fnSelectData( src ),\n\t\t\tfirstTr = data.length===0 ? null : data[0].nTr,\n\t\t\tanDeselectedTrs = [],\n\t\t\ti, len;\n\n\t\t// Get all the rows that will be deselected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\tanDeselectedTrs.push( data[i].nTr );\n\t\t\t}\n\t\t}\n\n\t\t// User defined pre-selection function\n\t\tif ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anDeselectedTrs, false) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark them as deselected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tdata[i]._DTTT_selected = false;\n\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\t$(data[i].nTr).removeClass( that.classes.select.row );\n\t\t\t}\n\t\t}\n\n\t\t// Post-deselection function\n\t\tif ( this.s.select.postDeselected !== null )\n\t\t{\n\t\t\tthis.s.select.postDeselected.call( this, anDeselectedTrs );\n\t\t}\n\n\t\tTableTools._fnEventDispatch( this, 'select', anDeselectedTrs, false );\n\t},\n\t\n\t/**\n\t * Take a data source for row selection and convert it into aoData points for the DT\n\t *   @param {*} src Can be a single DOM TR node, an array of TR nodes (including a\n\t *     a jQuery object), a single aoData point from DataTables, an array of aoData\n\t *     points or an array of aoData indexes\n\t *   @returns {array} An array of aoData points\n\t */\n\t\"_fnSelectData\": function ( src )\n\t{\n\t\tvar out = [], pos, i, iLen;\n\n\t\tif ( src.nodeName )\n\t\t{\n\t\t\t// Single node\n\t\t\tpos = this.s.dt.oInstance.fnGetPosition( src );\n\t\t\tout.push( this.s.dt.aoData[pos] );\n\t\t}\n\t\telse if ( typeof src.length !== 'undefined' )\n\t\t{\n\t\t\t// jQuery object or an array of nodes, or aoData points\n\t\t\tfor ( i=0, iLen=src.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( src[i].nodeName )\n\t\t\t\t{\n\t\t\t\t\tpos = this.s.dt.oInstance.fnGetPosition( src[i] );\n\t\t\t\t\tout.push( this.s.dt.aoData[pos] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof src[i] === 'number' )\n\t\t\t\t{\n\t\t\t\t\tout.push( this.s.dt.aoData[ src[i] ] );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tout.push( src[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn out;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// A single aoData point\n\t\t\tout.push( src );\n\t\t}\n\n\t\treturn out;\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Text button functions\n\t */\n\t\n\t/**\n\t * Configure a text based button for interaction events\n\t *  @method  _fnTextConfig\n\t *  @param   {Node} nButton Button element which is being considered\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnTextConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( oConfig.fnInit !== null )\n\t\t{\n\t\t\toConfig.fnInit.call( this, nButton, oConfig );\n\t\t}\n\t\t\n\t\tif ( oConfig.sToolTip !== \"\" )\n\t\t{\n\t\t\tnButton.title = oConfig.sToolTip;\n\t\t}\n\t\t\n\t\t$(nButton).hover( function () {\n\t\t\tif ( oConfig.fnMouseover !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseover.call( this, nButton, oConfig, null );\n\t\t\t}\n\t\t}, function () {\n\t\t\tif ( oConfig.fnMouseout !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseout.call( this, nButton, oConfig, null );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tif ( oConfig.fnSelect !== null )\n\t\t{\n\t\t\tTableTools._fnEventListen( this, 'select', function (n) {\n\t\t\t\toConfig.fnSelect.call( that, nButton, oConfig, n );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\t//e.preventDefault();\n\t\t\t\n\t\t\tif ( oConfig.fnClick !== null )\n\t\t\t{\n\t\t\t\toConfig.fnClick.call( that, nButton, oConfig, null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Provide a complete function to match the behaviour of the flash elements */\n\t\t\tif ( oConfig.fnComplete !== null )\n\t\t\t{\n\t\t\t\toConfig.fnComplete.call( that, nButton, oConfig, null, null );\n\t\t\t}\n\t\t\t\n\t\t\tthat._fnCollectionHide( nButton, oConfig );\n\t\t} );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Flash button functions\n\t */\n\t\n\t/**\n\t * Configure a flash based button for interaction events\n\t *  @method  _fnFlashConfig\n\t *  @param   {Node} nButton Button element which is being considered\n\t *  @param   {o} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar that = this;\n\t\tvar flash = new ZeroClipboard_TableTools.Client();\n\t\t\n\t\tif ( oConfig.fnInit !== null )\n\t\t{\n\t\t\toConfig.fnInit.call( this, nButton, oConfig );\n\t\t}\n\t\t\n\t\tflash.setHandCursor( true );\n\t\t\n\t\tif ( oConfig.sAction == \"flash_save\" )\n\t\t{\n\t\t\tflash.setAction( 'save' );\n\t\t\tflash.setCharSet( (oConfig.sCharSet==\"utf16le\") ? 'UTF16LE' : 'UTF8' );\n\t\t\tflash.setBomInc( oConfig.bBomInc );\n\t\t\tflash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );\n\t\t}\n\t\telse if ( oConfig.sAction == \"flash_pdf\" )\n\t\t{\n\t\t\tflash.setAction( 'pdf' );\n\t\t\tflash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tflash.setAction( 'copy' );\n\t\t}\n\t\t\n\t\tflash.addEventListener('mouseOver', function(client) {\n\t\t\tif ( oConfig.fnMouseover !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseover.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('mouseOut', function(client) {\n\t\t\tif ( oConfig.fnMouseout !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseout.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('mouseDown', function(client) {\n\t\t\tif ( oConfig.fnClick !== null )\n\t\t\t{\n\t\t\t\toConfig.fnClick.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('complete', function (client, text) {\n\t\t\tif ( oConfig.fnComplete !== null )\n\t\t\t{\n\t\t\t\toConfig.fnComplete.call( that, nButton, oConfig, flash, text );\n\t\t\t}\n\t\t\tthat._fnCollectionHide( nButton, oConfig );\n\t\t} );\n\t\t\n\t\tthis._fnFlashGlue( flash, nButton, oConfig.sToolTip );\n\t},\n\t\n\t\n\t/**\n\t * Wait until the id is in the DOM before we \"glue\" the swf. Note that this function will call\n\t * itself (using setTimeout) until it completes successfully\n\t *  @method  _fnFlashGlue\n\t *  @param   {Object} clip Zero clipboard object\n\t *  @param   {Node} node node to glue swf to\n\t *  @param   {String} text title of the flash movie\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashGlue\": function ( flash, node, text )\n\t{\n\t\tvar that = this;\n\t\tvar id = node.getAttribute('id');\n\t\t\n\t\tif ( document.getElementById(id) )\n\t\t{\n\t\t\tflash.glue( node, text );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout( function () {\n\t\t\t\tthat._fnFlashGlue( flash, node, text );\n\t\t\t}, 100 );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Set the text for the flash clip to deal with\n\t * \n\t * This function is required for large information sets. There is a limit on the \n\t * amount of data that can be transferred between Javascript and Flash in a single call, so\n\t * we use this method to build up the text in Flash by sending over chunks. It is estimated\n\t * that the data limit is around 64k, although it is undocumented, and appears to be different\n\t * between different flash versions. We chunk at 8KiB.\n\t *  @method  _fnFlashSetText\n\t *  @param   {Object} clip the ZeroClipboard object\n\t *  @param   {String} sData the data to be set\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashSetText\": function ( clip, sData )\n\t{\n\t\tvar asData = this._fnChunkData( sData, 8192 );\n\t\t\n\t\tclip.clearText();\n\t\tfor ( var i=0, iLen=asData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tclip.appendText( asData[i] );\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Data retrieval functions\n\t */\n\t\n\t/**\n\t * Convert the mixed columns variable into a boolean array the same size as the columns, which\n\t * indicates which columns we want to include\n\t *  @method  _fnColumnTargets\n\t *  @param   {String|Array} mColumns The columns to be included in data retrieval. If a string\n\t *\t\t\t then it can take the value of \"visible\" or \"hidden\" (to include all visible or\n\t *\t\t\t hidden columns respectively). Or an array of column indexes\n\t *  @returns {Array} A boolean array the length of the columns of the table, which each value\n\t *\t\t\t indicating if the column is to be included or not\n\t *  @private \n\t */\n\t\"_fnColumnTargets\": function ( mColumns )\n\t{\n\t\tvar aColumns = [];\n\t\tvar dt = this.s.dt;\n\t\t\n\t\tif ( typeof mColumns == \"object\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( false );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=mColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns[ mColumns[i] ] = true;\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"visible\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bVisible ? true : false );\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"hidden\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bVisible ? false : true );\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"sortable\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bSortable ? true : false );\n\t\t\t}\n\t\t}\n\t\telse /* all */\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( true );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn aColumns;\n\t},\n\t\n\t\n\t/**\n\t * New line character(s) depend on the platforms\n\t *  @method  method\n\t *  @param   {Object} oConfig Button configuration object - only interested in oConfig.sNewLine\n\t *  @returns {String} Newline character\n\t */\n\t\"_fnNewline\": function ( oConfig )\n\t{\n\t\tif ( oConfig.sNewLine == \"auto\" )\n\t\t{\n\t\t\treturn navigator.userAgent.match(/Windows/) ? \"\\r\\n\" : \"\\n\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn oConfig.sNewLine;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Get data from DataTables' internals and format it for output\n\t *  @method  _fnGetDataTablesData\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @param   {String} oConfig.sFieldBoundary Field boundary for the data cells in the string\n\t *  @param   {String} oConfig.sFieldSeperator Field separator for the data cells\n\t *  @param   {String} oConfig.sNewline New line options\n\t *  @param   {Mixed} oConfig.mColumns Which columns should be included in the output\n\t *  @param   {Boolean} oConfig.bHeader Include the header\n\t *  @param   {Boolean} oConfig.bFooter Include the footer\n\t *  @param   {Boolean} oConfig.bSelectedOnly Include only the selected rows in the output\n\t *  @returns {String} Concatenated string of data\n\t *  @private \n\t */\n\t\"_fnGetDataTablesData\": function ( oConfig )\n\t{\n\t\tvar i, iLen, j, jLen;\n\t\tvar aRow, aData=[], sLoopData='', arr;\n\t\tvar dt = this.s.dt, tr, child;\n\t\tvar regex = new RegExp(oConfig.sFieldBoundary, \"g\"); /* Do it here for speed */\n\t\tvar aColumnsInc = this._fnColumnTargets( oConfig.mColumns );\n\t\tvar bSelectedOnly = (typeof oConfig.bSelectedOnly != 'undefined') ? oConfig.bSelectedOnly : false;\n\t\t\n\t\t/*\n\t\t * Header\n\t\t */\n\t\tif ( oConfig.bHeader )\n\t\t{\n\t\t\taRow = [];\n\t\t\t\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = dt.aoColumns[i].sTitle.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" ).replace(/^\\s+|\\s+$/g,\"\");\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n\t\t}\n\t\t\n\t\t/*\n\t\t * Body\n\t\t */\n\t\tvar aDataIndex = dt.aiDisplay;\n\t\tvar aSelected = this.fnGetSelected();\n\t\tif ( this.s.select.type !== \"none\" && bSelectedOnly && aSelected.length !== 0 )\n\t\t{\n\t\t\taDataIndex = [];\n\t\t\tfor ( i=0, iLen=aSelected.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taDataIndex.push( dt.oInstance.fnGetPosition( aSelected[i] ) );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor ( j=0, jLen=aDataIndex.length ; j<jLen ; j++ )\n\t\t{\n\t\t\ttr = dt.aoData[ aDataIndex[j] ].nTr;\n\t\t\taRow = [];\n\t\t\t\n\t\t\t/* Columns */\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] )\n\t\t\t\t{\n\t\t\t\t\t/* Convert to strings (with small optimisation) */\n\t\t\t\t\tvar mTypeData = dt.oApi._fnGetCellData( dt, aDataIndex[j], i, 'display' );\n\t\t\t\t\tif ( oConfig.fnCellRender )\n\t\t\t\t\t{\n\t\t\t\t\t\tsLoopData = oConfig.fnCellRender( mTypeData, i, tr, aDataIndex[j] )+\"\";\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof mTypeData == \"string\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Strip newlines, replace img tags with alt attr. and finally strip html... */\n\t\t\t\t\t\tsLoopData = mTypeData.replace(/\\n/g,\" \");\n\t\t\t\t\t\tsLoopData =\n\t\t\t\t\t\t \tsLoopData.replace(/<img.*?\\s+alt\\s*=\\s*(?:\"([^\"]+)\"|'([^']+)'|([^\\s>]+)).*?>/gi,\n\t\t\t\t\t\t \t\t'$1$2$3');\n\t\t\t\t\t\tsLoopData = sLoopData.replace( /<.*?>/g, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsLoopData = mTypeData+\"\";\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Trim and clean the data */\n\t\t\t\t\tsLoopData = sLoopData.replace(/^\\s+/, '').replace(/\\s+$/, '');\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\t/* Bound it and add it to the total data */\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n      \n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n      \n\t\t\t/* Details rows from fnOpen */\n\t\t\tif ( oConfig.bOpenRows )\n\t\t\t{\n\t\t\t\tarr = $.grep(dt.aoOpenRows, function(o) { return o.nParent === tr; });\n\t\t\t\t\n\t\t\t\tif ( arr.length === 1 )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = this._fnBoundData( $('td', arr[0].nTr).html(), oConfig.sFieldBoundary, regex );\n\t\t\t\t\taData.push( sLoopData );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/*\n\t\t * Footer\n\t\t */\n\t\tif ( oConfig.bFooter && dt.nTFoot !== null )\n\t\t{\n\t\t\taRow = [];\n\t\t\t\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] && dt.aoColumns[i].nTf !== null )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = dt.aoColumns[i].nTf.innerHTML.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n\t\t}\n\t\t\n\t\t_sLastData = aData.join( this._fnNewline(oConfig) );\n\t\treturn _sLastData;\n\t},\n\t\n\t\n\t/**\n\t * Wrap data up with a boundary string\n\t *  @method  _fnBoundData\n\t *  @param   {String} sData data to bound\n\t *  @param   {String} sBoundary bounding char(s)\n\t *  @param   {RegExp} regex search for the bounding chars - constructed outside for efficiency\n\t *\t\t\t in the loop\n\t *  @returns {String} bound data\n\t *  @private \n\t */\n\t\"_fnBoundData\": function ( sData, sBoundary, regex )\n\t{\n\t\tif ( sBoundary === \"\" )\n\t\t{\n\t\t\treturn sData;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn sBoundary + sData.replace(regex, sBoundary+sBoundary) + sBoundary;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Break a string up into an array of smaller strings\n\t *  @method  _fnChunkData\n\t *  @param   {String} sData data to be broken up\n\t *  @param   {Int} iSize chunk size\n\t *  @returns {Array} String array of broken up text\n\t *  @private \n\t */\n\t\"_fnChunkData\": function ( sData, iSize )\n\t{\n\t\tvar asReturn = [];\n\t\tvar iStrlen = sData.length;\n\t\t\n\t\tfor ( var i=0 ; i<iStrlen ; i+=iSize )\n\t\t{\n\t\t\tif ( i+iSize < iStrlen )\n\t\t\t{\n\t\t\t\tasReturn.push( sData.substring( i, i+iSize ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tasReturn.push( sData.substring( i, iStrlen ) );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn asReturn;\n\t},\n\t\n\t\n\t/**\n\t * Decode HTML entities\n\t *  @method  _fnHtmlDecode\n\t *  @param   {String} sData encoded string\n\t *  @returns {String} decoded string\n\t *  @private \n\t */\n\t\"_fnHtmlDecode\": function ( sData )\n\t{\n\t\tif ( sData.indexOf('&') === -1 )\n\t\t{\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\tvar n = document.createElement('div');\n\n\t\treturn sData.replace( /&([^\\s]*);/g, function( match, match2 ) {\n\t\t\tif ( match.substr(1, 1) === '#' )\n\t\t\t{\n\t\t\t\treturn String.fromCharCode( Number(match2.substr(1)) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tn.innerHTML = match;\n\t\t\t\treturn n.childNodes[0].nodeValue;\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Printing functions\n\t */\n\t\n\t/**\n\t * Show print display\n\t *  @method  _fnPrintStart\n\t *  @param   {Event} e Event object\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintStart\": function ( oConfig )\n\t{\n\t  var that = this;\n\t  var oSetDT = this.s.dt;\n\t  \n\t\t/* Parse through the DOM hiding everything that isn't needed for the table */\n\t\tthis._fnPrintHideNodes( oSetDT.nTable );\n\t\t\n\t\t/* Show the whole table */\n\t\tthis.s.print.saveStart = oSetDT._iDisplayStart;\n\t\tthis.s.print.saveLength = oSetDT._iDisplayLength;\n\n\t\tif ( oConfig.bShowAll )\n\t\t{\n\t\t\toSetDT._iDisplayStart = 0;\n\t\t\toSetDT._iDisplayLength = -1;\n\t\t\toSetDT.oApi._fnCalculateEnd( oSetDT );\n\t\t\toSetDT.oApi._fnDraw( oSetDT );\n\t\t}\n\t\t\n\t\t/* Adjust the display for scrolling which might be done by DataTables */\n\t\tif ( oSetDT.oScroll.sX !== \"\" || oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis._fnPrintScrollStart( oSetDT );\n\n\t\t\t// If the table redraws while in print view, the DataTables scrolling\n\t\t\t// setup would hide the header, so we need to readd it on draw\n\t\t\t$(this.s.dt.nTable).bind('draw.DTTT_Print', function () {\n\t\t\t\tthat._fnPrintScrollStart( oSetDT );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/* Remove the other DataTables feature nodes - but leave the table! and info div */\n\t\tvar anFeature = oSetDT.aanFeatures;\n\t\tfor ( var cFeature in anFeature )\n\t\t{\n\t\t\tif ( cFeature != 'i' && cFeature != 't' && cFeature.length == 1 )\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=anFeature[cFeature].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.print.hidden.push( {\n\t\t\t\t\t\t\"node\": anFeature[cFeature][i],\n\t\t\t\t\t\t\"display\": \"block\"\n\t\t\t\t\t} );\n\t\t\t\t\tanFeature[cFeature][i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Print class can be used for styling */\n\t\t$(document.body).addClass( this.classes.print.body );\n\n\t\t/* Show information message to let the user know what is happening */\n\t\tif ( oConfig.sInfo !== \"\" )\n\t\t{\n\t\t\tthis.fnInfo( oConfig.sInfo, 3000 );\n\t\t}\n\n\t\t/* Add a message at the top of the page */\n\t\tif ( oConfig.sMessage )\n\t\t{\n\t\t\tthis.dom.print.message = document.createElement( \"div\" );\n\t\t\tthis.dom.print.message.className = this.classes.print.message;\n\t\t\tthis.dom.print.message.innerHTML = oConfig.sMessage;\n\t\t\tdocument.body.insertBefore( this.dom.print.message, document.body.childNodes[0] );\n\t\t}\n\t\t\n\t\t/* Cache the scrolling and the jump to the top of the page */\n\t\tthis.s.print.saveScroll = $(window).scrollTop();\n\t\twindow.scrollTo( 0, 0 );\n\n\t\t/* Bind a key event listener to the document for the escape key -\n\t\t * it is removed in the callback\n\t\t */\n\t\t$(document).bind( \"keydown.DTTT\", function(e) {\n\t\t\t/* Only interested in the escape key */\n\t\t\tif ( e.keyCode == 27 )\n\t\t\t{\n\t\t\t\te.preventDefault();\n\t\t\t\tthat._fnPrintEnd.call( that, e );\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Printing is finished, resume normal display\n\t *  @method  _fnPrintEnd\n\t *  @param   {Event} e Event object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintEnd\": function ( e )\n\t{\n\t\tvar that = this;\n\t\tvar oSetDT = this.s.dt;\n\t\tvar oSetPrint = this.s.print;\n\t\tvar oDomPrint = this.dom.print;\n\t\t\n\t\t/* Show all hidden nodes */\n\t\tthis._fnPrintShowNodes();\n\t\t\n\t\t/* Restore DataTables' scrolling */\n\t\tif ( oSetDT.oScroll.sX !== \"\" || oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\t$(this.s.dt.nTable).unbind('draw.DTTT_Print');\n\n\t\t\tthis._fnPrintScrollEnd();\n\t\t}\n\t\t\n\t\t/* Restore the scroll */\n\t\twindow.scrollTo( 0, oSetPrint.saveScroll );\n\t\t\n\t\t/* Drop the print message */\n\t\tif ( oDomPrint.message !== null )\n\t\t{\n\t\t\tdocument.body.removeChild( oDomPrint.message );\n\t\t\toDomPrint.message = null;\n\t\t}\n\t\t\n\t\t/* Styling class */\n\t\t$(document.body).removeClass( 'DTTT_Print' );\n\t\t\n\t\t/* Restore the table length */\n\t\toSetDT._iDisplayStart = oSetPrint.saveStart;\n\t\toSetDT._iDisplayLength = oSetPrint.saveLength;\n\t\toSetDT.oApi._fnCalculateEnd( oSetDT );\n\t\toSetDT.oApi._fnDraw( oSetDT );\n\t\t\n\t\t$(document).unbind( \"keydown.DTTT\" );\n\t},\n\t\n\t\n\t/**\n\t * Take account of scrolling in DataTables by showing the full table\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintScrollStart\": function ()\n\t{\n\t\tvar \n\t\t\toSetDT = this.s.dt,\n\t\t\tnScrollHeadInner = oSetDT.nScrollHead.getElementsByTagName('div')[0],\n\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\tnScrollBody = oSetDT.nTable.parentNode;\n\n\t\t/* Copy the header in the thead in the body table, this way we show one single table when\n\t\t * in print view. Note that this section of code is more or less verbatim from DT 1.7.0\n\t\t */\n\t\tvar nTheadSize = oSetDT.nTable.getElementsByTagName('thead');\n\t\tif ( nTheadSize.length > 0 )\n\t\t{\n\t\t\toSetDT.nTable.removeChild( nTheadSize[0] );\n\t\t}\n\t\t\n\t\tif ( oSetDT.nTFoot !== null )\n\t\t{\n\t\t\tvar nTfootSize = oSetDT.nTable.getElementsByTagName('tfoot');\n\t\t\tif ( nTfootSize.length > 0 )\n\t\t\t{\n\t\t\t\toSetDT.nTable.removeChild( nTfootSize[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\tnTheadSize = oSetDT.nTHead.cloneNode(true);\n\t\toSetDT.nTable.insertBefore( nTheadSize, oSetDT.nTable.childNodes[0] );\n\t\t\n\t\tif ( oSetDT.nTFoot !== null )\n\t\t{\n\t\t\tnTfootSize = oSetDT.nTFoot.cloneNode(true);\n\t\t\toSetDT.nTable.insertBefore( nTfootSize, oSetDT.nTable.childNodes[1] );\n\t\t}\n\t\t\n\t\t/* Now adjust the table's viewport so we can actually see it */\n\t\tif ( oSetDT.oScroll.sX !== \"\" )\n\t\t{\n\t\t\toSetDT.nTable.style.width = $(oSetDT.nTable).outerWidth()+\"px\";\n\t\t\tnScrollBody.style.width = $(oSetDT.nTable).outerWidth()+\"px\";\n\t\t\tnScrollBody.style.overflow = \"visible\";\n\t\t}\n\t\t\n\t\tif ( oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.height = $(oSetDT.nTable).outerHeight()+\"px\";\n\t\t\tnScrollBody.style.overflow = \"visible\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Take account of scrolling in DataTables by showing the full table. Note that the redraw of\n\t * the DataTable that we do will actually deal with the majority of the hard work here\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintScrollEnd\": function ()\n\t{\n\t\tvar \n\t\t\toSetDT = this.s.dt,\n\t\t\tnScrollBody = oSetDT.nTable.parentNode;\n\t\t\n\t\tif ( oSetDT.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.width = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sX );\n\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t}\n\t\t\n\t\tif ( oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.height = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sY );\n\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Resume the display of all TableTools hidden nodes\n\t *  @method  _fnPrintShowNodes\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintShowNodes\": function ( )\n\t{\n\t  var anHidden = this.dom.print.hidden;\n\t  \n\t\tfor ( var i=0, iLen=anHidden.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tanHidden[i].node.style.display = anHidden[i].display;\n\t\t}\n\t\tanHidden.splice( 0, anHidden.length );\n\t},\n\t\n\t\n\t/**\n\t * Hide nodes which are not needed in order to display the table. Note that this function is\n\t * recursive\n\t *  @method  _fnPrintHideNodes\n\t *  @param   {Node} nNode Element which should be showing in a 'print' display\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintHideNodes\": function ( nNode )\n\t{\n\t  var anHidden = this.dom.print.hidden;\n\t  \n\t\tvar nParent = nNode.parentNode;\n\t\tvar nChildren = nParent.childNodes;\n\t\tfor ( var i=0, iLen=nChildren.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( nChildren[i] != nNode && nChildren[i].nodeType == 1 )\n\t\t\t{\n\t\t\t\t/* If our node is shown (don't want to show nodes which were previously hidden) */\n\t\t\t\tvar sDisplay = $(nChildren[i]).css(\"display\");\n\t\t\t \tif ( sDisplay != \"none\" )\n\t\t\t\t{\n\t\t\t\t\t/* Cache the node and it's previous state so we can restore it */\n\t\t\t\t\tanHidden.push( {\n\t\t\t\t\t\t\"node\": nChildren[i],\n\t\t\t\t\t\t\"display\": sDisplay\n\t\t\t\t\t} );\n\t\t\t\t\tnChildren[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( nParent.nodeName != \"BODY\" )\n\t\t{\n\t\t\tthis._fnPrintHideNodes( nParent );\n\t\t}\n\t}\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static variables\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Store of all instances that have been created of TableTools, so one can look up other (when\n * there is need of a master)\n *  @property _aInstances\n *  @type\t Array\n *  @default  []\n *  @private\n */\nTableTools._aInstances = [];\n\n\n/**\n * Store of all listeners and their callback functions\n *  @property _aListeners\n *  @type\t Array\n *  @default  []\n */\nTableTools._aListeners = [];\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static methods\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Get an array of all the master instances\n *  @method  fnGetMasters\n *  @returns {Array} List of master TableTools instances\n *  @static\n */\nTableTools.fnGetMasters = function ()\n{\n\tvar a = [];\n\tfor ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( TableTools._aInstances[i].s.master )\n\t\t{\n\t\t\ta.push( TableTools._aInstances[i] );\n\t\t}\n\t}\n\treturn a;\n};\n\n/**\n * Get the master instance for a table node (or id if a string is given)\n *  @method  fnGetInstance\n *  @returns {Object} ID of table OR table node, for which we want the TableTools instance\n *  @static\n */\nTableTools.fnGetInstance = function ( node )\n{\n\tif ( typeof node != 'object' )\n\t{\n\t\tnode = document.getElementById(node);\n\t}\n\t\n\tfor ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( TableTools._aInstances[i].s.master && TableTools._aInstances[i].dom.table == node )\n\t\t{\n\t\t\treturn TableTools._aInstances[i];\n\t\t}\n\t}\n\treturn null;\n};\n\n\n/**\n * Add a listener for a specific event\n *  @method  _fnEventListen\n *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)\n *  @param   {String} type Event type\n *  @param   {Function} fn Function\n *  @returns void\n *  @private\n *  @static\n */\nTableTools._fnEventListen = function ( that, type, fn )\n{\n\tTableTools._aListeners.push( {\n\t\t\"that\": that,\n\t\t\"type\": type,\n\t\t\"fn\": fn\n\t} );\n};\n\t\n\n/**\n * An event has occurred - look up every listener and fire it off. We check that the event we are\n * going to fire is attached to the same table (using the table node as reference) before firing\n *  @method  _fnEventDispatch\n *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)\n *  @param   {String} type Event type\n *  @param   {Node} node Element that the event occurred on (may be null)\n *  @param   {boolean} [selected] Indicate if the node was selected (true) or deselected (false)\n *  @returns void\n *  @private\n *  @static\n */\nTableTools._fnEventDispatch = function ( that, type, node, selected )\n{\n\tvar listeners = TableTools._aListeners;\n\tfor ( var i=0, iLen=listeners.length ; i<iLen ; i++ )\n\t{\n\t\tif ( that.dom.table == listeners[i].that.dom.table && listeners[i].type == type )\n\t\t{\n\t\t\tlisteners[i].fn( node, selected );\n\t\t}\n\t}\n};\n\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n\nTableTools.buttonBase = {\n\t// Button base\n\t\"sAction\": \"text\",\n\t\"sTag\": \"default\",\n\t\"sLinerTag\": \"default\",\n\t\"sButtonClass\": \"DTTT_button_text\",\n\t\"sButtonText\": \"Button text\",\n\t\"sTitle\": \"\",\n\t\"sToolTip\": \"\",\n\n\t// Common button specific options\n\t\"sCharSet\": \"utf8\",\n\t\"bBomInc\": false,\n\t\"sFileName\": \"*.csv\",\n\t\"sFieldBoundary\": \"\",\n\t\"sFieldSeperator\": \"\\t\",\n\t\"sNewLine\": \"auto\",\n\t\"mColumns\": \"all\", /* \"all\", \"visible\", \"hidden\" or array of column integers */\n\t\"bHeader\": true,\n\t\"bFooter\": true,\n\t\"bOpenRows\": false,\n\t\"bSelectedOnly\": false,\n\n\t// Callbacks\n\t\"fnMouseover\": null,\n\t\"fnMouseout\": null,\n\t\"fnClick\": null,\n\t\"fnSelect\": null,\n\t\"fnComplete\": null,\n\t\"fnInit\": null,\n\t\"fnCellRender\": null\n};\n\n\n/**\n * @namespace Default button configurations\n */\nTableTools.BUTTONS = {\n\t\"csv\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_save\",\n\t\t\"sButtonClass\": \"DTTT_button_csv\",\n\t\t\"sButtonText\": \"CSV\",\n\t\t\"sFieldBoundary\": '\"',\n\t\t\"sFieldSeperator\": \",\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t}\n\t} ),\n\n\t\"xls\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_save\",\n\t\t\"sCharSet\": \"utf16le\",\n\t\t\"bBomInc\": true,\n\t\t\"sButtonClass\": \"DTTT_button_xls\",\n\t\t\"sButtonText\": \"Excel\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t}\n\t} ),\n\n\t\"copy\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_copy\",\n\t\t\"sButtonClass\": \"DTTT_button_copy\",\n\t\t\"sButtonText\": \"Copy\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t},\n\t\t\"fnComplete\": function(nButton, oConfig, flash, text) {\n\t\t\tvar\n\t\t\t\tlines = text.split('\\n').length,\n\t\t\t\tlen = this.s.dt.nTFoot === null ? lines-1 : lines-2,\n\t\t\t\tplural = (len==1) ? \"\" : \"s\";\n\t\t\tthis.fnInfo( '<h6>Table copied</h6>'+\n\t\t\t\t'<p>Copied '+len+' row'+plural+' to the clipboard.</p>',\n\t\t\t\t1500\n\t\t\t);\n\t\t}\n\t} ),\n\n\t\"pdf\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_pdf\",\n\t\t\"sNewLine\": \"\\n\",\n\t\t\"sFileName\": \"*.pdf\",\n\t\t\"sButtonClass\": \"DTTT_button_pdf\",\n\t\t\"sButtonText\": \"PDF\",\n\t\t\"sPdfOrientation\": \"portrait\",\n\t\t\"sPdfSize\": \"A4\",\n\t\t\"sPdfMessage\": \"\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, \n\t\t\t\t\"title:\"+ this.fnGetTitle(oConfig) +\"\\n\"+\n\t\t\t\t\"message:\"+ oConfig.sPdfMessage +\"\\n\"+\n\t\t\t\t\"colWidth:\"+ this.fnCalcColRatios(oConfig) +\"\\n\"+\n\t\t\t\t\"orientation:\"+ oConfig.sPdfOrientation +\"\\n\"+\n\t\t\t\t\"size:\"+ oConfig.sPdfSize +\"\\n\"+\n\t\t\t\t\"--/TableToolsOpts--\\n\" +\n\t\t\t\tthis.fnGetTableData(oConfig)\n\t\t\t);\n\t\t}\n\t} ),\n\n\t\"print\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sInfo\": \"<h6>Print view</h6><p>Please use your browser's print function to \"+\n\t\t  \"print this table. Press escape when finished.\",\n\t\t\"sMessage\": null,\n\t\t\"bShowAll\": true,\n\t\t\"sToolTip\": \"View print view\",\n\t\t\"sButtonClass\": \"DTTT_button_print\",\n\t\t\"sButtonText\": \"Print\",\n\t\t\"fnClick\": function ( nButton, oConfig ) {\n\t\t\tthis.fnPrint( true, oConfig );\n\t\t}\n\t} ),\n\n\t\"text\": $.extend( {}, TableTools.buttonBase ),\n\n\t\"select\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select button\",\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length !== 0 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"select_single\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select button\",\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tvar iSelected = this.fnGetSelected().length;\n\t\t\tif ( iSelected == 1 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"select_all\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select all\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis.fnSelectAll();\n\t\t},\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length == this.s.dt.fnRecordsDisplay() ) {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t}\n\t} ),\n\n\t\"select_none\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Deselect all\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis.fnSelectNone();\n\t\t},\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length !== 0 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"ajax\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAjaxUrl\": \"/xhr.php\",\n\t\t\"sButtonText\": \"Ajax button\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tvar sData = this.fnGetTableData(oConfig);\n\t\t\t$.ajax( {\n\t\t\t\t\"url\": oConfig.sAjaxUrl,\n\t\t\t\t\"data\": [\n\t\t\t\t\t{ \"name\": \"tableData\", \"value\": sData }\n\t\t\t\t],\n\t\t\t\t\"success\": oConfig.fnAjaxComplete,\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"type\": \"POST\", \n\t\t\t\t\"cache\": false,\n\t\t\t\t\"error\": function () {\n\t\t\t\t\talert( \"Error detected when sending table data to server\" );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t\"fnAjaxComplete\": function( json ) {\n\t\t\talert( 'Ajax complete' );\n\t\t}\n\t} ),\n\n\t\"div\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"div\",\n\t\t\"sTag\": \"div\",\n\t\t\"sButtonClass\": \"DTTT_nonbutton\",\n\t\t\"sButtonText\": \"Text button\"\n\t} ),\n\n\t\"collection\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"collection\",\n\t\t\"sButtonClass\": \"DTTT_button_collection\",\n\t\t\"sButtonText\": \"Collection\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis._fnCollectionShow(nButton, oConfig);\n\t\t}\n\t} )\n};\n/*\n *  on* callback parameters:\n *  \t1. node - button element\n *  \t2. object - configuration object for this button\n *  \t3. object - ZeroClipboard reference (flash button only)\n *  \t4. string - Returned string from Flash (flash button only - and only on 'complete')\n */\n\n\n\n/**\n * @namespace Classes used by TableTools - allows the styles to be override easily.\n *   Note that when TableTools initialises it will take a copy of the classes object\n *   and will use its internal copy for the remainder of its run time.\n */\nTableTools.classes = {\n\t\"container\": \"DTTT_container\",\n\t\"buttons\": {\n\t\t\"normal\": \"DTTT_button\",\n\t\t\"disabled\": \"DTTT_disabled\"\n\t},\n\t\"collection\": {\n\t\t\"container\": \"DTTT_collection\",\n\t\t\"background\": \"DTTT_collection_background\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"DTTT_button\",\n\t\t\t\"disabled\": \"DTTT_disabled\"\n\t\t}\n\t},\n\t\"select\": {\n\t\t\"table\": \"DTTT_selectable\",\n\t\t\"row\": \"DTTT_selected\"\n\t},\n\t\"print\": {\n\t\t\"body\": \"DTTT_Print\",\n\t\t\"info\": \"DTTT_print_info\",\n\t\t\"message\": \"DTTT_PrintMessage\"\n\t}\n};\n\n\n/**\n * @namespace ThemeRoller classes - built in for compatibility with DataTables' \n *   bJQueryUI option.\n */\nTableTools.classes_themeroller = {\n\t\"container\": \"DTTT_container ui-buttonset ui-buttonset-multi\",\n\t\"buttons\": {\n\t\t\"normal\": \"DTTT_button ui-button ui-state-default\"\n\t},\n\t\"collection\": {\n\t\t\"container\": \"DTTT_collection ui-buttonset ui-buttonset-multi\"\n\t}\n};\n\n\n/**\n * @namespace TableTools default settings for initialisation\n */\nTableTools.DEFAULTS = {\n\t\"sSwfPath\":        \"media/swf/copy_csv_xls_pdf.swf\",\n\t\"sRowSelect\":      \"none\",\n\t\"sSelectedClass\":  null,\n\t\"fnPreRowSelect\":  null,\n\t\"fnRowSelected\":   null,\n\t\"fnRowDeselected\": null,\n\t\"aButtons\":        [ \"copy\", \"csv\", \"xls\", \"pdf\", \"print\" ],\n\t\"oTags\": {\n\t\t\"container\": \"div\",\n\t\t\"button\": \"a\", // We really want to use buttons here, but Firefox and IE ignore the\n\t\t                 // click on the Flash element in the button (but not mouse[in|out]).\n\t\t\"liner\": \"span\",\n\t\t\"collection\": {\n\t\t\t\"container\": \"div\",\n\t\t\t\"button\": \"a\",\n\t\t\t\"liner\": \"span\"\n\t\t}\n\t}\n};\n\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type\t String\n *  @default  TableTools\n */\nTableTools.prototype.CLASS = \"TableTools\";\n\n\n/**\n * TableTools version\n *  @constant  VERSION\n *  @type\t  String\n *  @default   See code\n */\nTableTools.VERSION = \"2.1.4\";\nTableTools.prototype.VERSION = TableTools.VERSION;\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n\t typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n\t $.fn.dataTableExt.fnVersionCheck('1.9.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar oOpts = typeof oDTSettings.oInit.oTableTools != 'undefined' ? \n\t\t\t\toDTSettings.oInit.oTableTools : {};\n\t\t\t\n\t\t\tvar oTT = new TableTools( oDTSettings.oInstance, oOpts );\n\t\t\tTableTools._aInstances.push( oTT );\n\t\t\t\n\t\t\treturn oTT.dom.container;\n\t\t},\n\t\t\"cFeature\": \"T\",\n\t\t\"sFeature\": \"TableTools\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download\");\n}\n\n$.fn.DataTable.TableTools = TableTools;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/ZeroClipboard.js",
    "content": "// Simple Set Clipboard System\n// Author: Joseph Huckaby\n\nvar ZeroClipboard_TableTools = {\n\t\n\tversion: \"1.0.4-TableTools2\",\n\tclients: {}, // registered upload clients on page, indexed by id\n\tmoviePath: '', // URL to movie\n\tnextId: 1, // ID of next movie\n\t\n\t$: function(thingy) {\n\t\t// simple DOM lookup utility function\n\t\tif (typeof(thingy) == 'string') thingy = document.getElementById(thingy);\n\t\tif (!thingy.addClass) {\n\t\t\t// extend element with a few useful methods\n\t\t\tthingy.hide = function() { this.style.display = 'none'; };\n\t\t\tthingy.show = function() { this.style.display = ''; };\n\t\t\tthingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };\n\t\t\tthingy.removeClass = function(name) {\n\t\t\t\tthis.className = this.className.replace( new RegExp(\"\\\\s*\" + name + \"\\\\s*\"), \" \").replace(/^\\s+/, '').replace(/\\s+$/, '');\n\t\t\t};\n\t\t\tthingy.hasClass = function(name) {\n\t\t\t\treturn !!this.className.match( new RegExp(\"\\\\s*\" + name + \"\\\\s*\") );\n\t\t\t}\n\t\t}\n\t\treturn thingy;\n\t},\n\t\n\tsetMoviePath: function(path) {\n\t\t// set path to ZeroClipboard.swf\n\t\tthis.moviePath = path;\n\t},\n\t\n\tdispatch: function(id, eventName, args) {\n\t\t// receive event from flash movie, send to client\t\t\n\t\tvar client = this.clients[id];\n\t\tif (client) {\n\t\t\tclient.receiveEvent(eventName, args);\n\t\t}\n\t},\n\t\n\tregister: function(id, client) {\n\t\t// register new client to receive events\n\t\tthis.clients[id] = client;\n\t},\n\t\n\tgetDOMObjectPosition: function(obj) {\n\t\t// get absolute coordinates for dom element\n\t\tvar info = {\n\t\t\tleft: 0, \n\t\t\ttop: 0, \n\t\t\twidth: obj.width ? obj.width : obj.offsetWidth, \n\t\t\theight: obj.height ? obj.height : obj.offsetHeight\n\t\t};\n\t\t\n\t\tif ( obj.style.width != \"\" )\n\t\t\tinfo.width = obj.style.width.replace(\"px\",\"\");\n\t\t\n\t\tif ( obj.style.height != \"\" )\n\t\t\tinfo.height = obj.style.height.replace(\"px\",\"\");\n\n\t\twhile (obj) {\n\t\t\tinfo.left += obj.offsetLeft;\n\t\t\tinfo.top += obj.offsetTop;\n\t\t\tobj = obj.offsetParent;\n\t\t}\n\n\t\treturn info;\n\t},\n\t\n\tClient: function(elem) {\n\t\t// constructor for new simple upload client\n\t\tthis.handlers = {};\n\t\t\n\t\t// unique ID\n\t\tthis.id = ZeroClipboard_TableTools.nextId++;\n\t\tthis.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;\n\t\t\n\t\t// register client with singleton to receive flash events\n\t\tZeroClipboard_TableTools.register(this.id, this);\n\t\t\n\t\t// create movie\n\t\tif (elem) this.glue(elem);\n\t}\n};\n\nZeroClipboard_TableTools.Client.prototype = {\n\t\n\tid: 0, // unique ID for us\n\tready: false, // whether movie is ready to receive events or not\n\tmovie: null, // reference to movie object\n\tclipText: '', // text to copy to clipboard\n\tfileName: '', // default file save name\n\taction: 'copy', // action to perform\n\thandCursorEnabled: true, // whether to show hand cursor, or default pointer cursor\n\tcssEffects: true, // enable CSS mouse effects on dom container\n\thandlers: null, // user event handlers\n\tsized: false,\n\t\n\tglue: function(elem, title) {\n\t\t// glue to DOM element\n\t\t// elem can be ID or actual DOM element object\n\t\tthis.domElement = ZeroClipboard_TableTools.$(elem);\n\t\t\n\t\t// float just above object, or zIndex 99 if dom element isn't set\n\t\tvar zIndex = 99;\n\t\tif (this.domElement.style.zIndex) {\n\t\t\tzIndex = parseInt(this.domElement.style.zIndex) + 1;\n\t\t}\n\t\t\n\t\t// find X/Y position of domElement\n\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\t\n\t\t// create floating DIV above element\n\t\tthis.div = document.createElement('div');\n\t\tvar style = this.div.style;\n\t\tstyle.position = 'absolute';\n\t\tstyle.left = '0px';\n\t\tstyle.top = '0px';\n\t\tstyle.width = (box.width) + 'px';\n\t\tstyle.height = box.height + 'px';\n\t\tstyle.zIndex = zIndex;\n\t\t\n\t\tif ( typeof title != \"undefined\" && title != \"\" ) {\n\t\t\tthis.div.title = title;\n\t\t}\n\t\tif ( box.width != 0 && box.height != 0 ) {\n\t\t\tthis.sized = true;\n\t\t}\n\t\t\n\t\t// style.backgroundColor = '#f00'; // debug\n\t\tif ( this.domElement ) {\n\t\t\tthis.domElement.appendChild(this.div);\n\t\t\tthis.div.innerHTML = this.getHTML( box.width, box.height );\n\t\t}\n\t},\n\t\n\tpositionElement: function() {\n\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\tvar style = this.div.style;\n\t\t\n\t\tstyle.position = 'absolute';\n\t\t//style.left = (this.domElement.offsetLeft)+'px';\n\t\t//style.top = this.domElement.offsetTop+'px';\n\t\tstyle.width = box.width + 'px';\n\t\tstyle.height = box.height + 'px';\n\t\t\n\t\tif ( box.width != 0 && box.height != 0 ) {\n\t\t\tthis.sized = true;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar flash = this.div.childNodes[0];\n\t\tflash.width = box.width;\n\t\tflash.height = box.height;\n\t},\n\t\n\tgetHTML: function(width, height) {\n\t\t// return HTML for movie\n\t\tvar html = '';\n\t\tvar flashvars = 'id=' + this.id + \n\t\t\t'&width=' + width + \n\t\t\t'&height=' + height;\n\t\t\t\n\t\tif (navigator.userAgent.match(/MSIE/)) {\n\t\t\t// IE gets an OBJECT tag\n\t\t\tvar protocol = location.href.match(/^https/i) ? 'https://' : 'http://';\n\t\t\thtml += '<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0\" width=\"'+width+'\" height=\"'+height+'\" id=\"'+this.movieId+'\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"always\" /><param name=\"allowFullScreen\" value=\"false\" /><param name=\"movie\" value=\"'+ZeroClipboard_TableTools.moviePath+'\" /><param name=\"loop\" value=\"false\" /><param name=\"menu\" value=\"false\" /><param name=\"quality\" value=\"best\" /><param name=\"bgcolor\" value=\"#ffffff\" /><param name=\"flashvars\" value=\"'+flashvars+'\"/><param name=\"wmode\" value=\"transparent\"/></object>';\n\t\t}\n\t\telse {\n\t\t\t// all other browsers get an EMBED tag\n\t\t\thtml += '<embed id=\"'+this.movieId+'\" src=\"'+ZeroClipboard_TableTools.moviePath+'\" loop=\"false\" menu=\"false\" quality=\"best\" bgcolor=\"#ffffff\" width=\"'+width+'\" height=\"'+height+'\" name=\"'+this.movieId+'\" align=\"middle\" allowScriptAccess=\"always\" allowFullScreen=\"false\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" flashvars=\"'+flashvars+'\" wmode=\"transparent\" />';\n\t\t}\n\t\treturn html;\n\t},\n\t\n\thide: function() {\n\t\t// temporarily hide floater offscreen\n\t\tif (this.div) {\n\t\t\tthis.div.style.left = '-2000px';\n\t\t}\n\t},\n\t\n\tshow: function() {\n\t\t// show ourselves after a call to hide()\n\t\tthis.reposition();\n\t},\n\t\n\tdestroy: function() {\n\t\t// destroy control and floater\n\t\tif (this.domElement && this.div) {\n\t\t\tthis.hide();\n\t\t\tthis.div.innerHTML = '';\n\t\t\t\n\t\t\tvar body = document.getElementsByTagName('body')[0];\n\t\t\ttry { body.removeChild( this.div ); } catch(e) {;}\n\t\t\t\n\t\t\tthis.domElement = null;\n\t\t\tthis.div = null;\n\t\t}\n\t},\n\t\n\treposition: function(elem) {\n\t\t// reposition our floating div, optionally to new container\n\t\t// warning: container CANNOT change size, only position\n\t\tif (elem) {\n\t\t\tthis.domElement = ZeroClipboard_TableTools.$(elem);\n\t\t\tif (!this.domElement) this.hide();\n\t\t}\n\t\t\n\t\tif (this.domElement && this.div) {\n\t\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\t\tvar style = this.div.style;\n\t\t\tstyle.left = '' + box.left + 'px';\n\t\t\tstyle.top = '' + box.top + 'px';\n\t\t}\n\t},\n\t\n\tclearText: function() {\n\t\t// clear the text to be copy / saved\n\t\tthis.clipText = '';\n\t\tif (this.ready) this.movie.clearText();\n\t},\n\t\n\tappendText: function(newText) {\n\t\t// append text to that which is to be copied / saved\n\t\tthis.clipText += newText;\n\t\tif (this.ready) { this.movie.appendText(newText) ;}\n\t},\n\t\n\tsetText: function(newText) {\n\t\t// set text to be copied to be copied / saved\n\t\tthis.clipText = newText;\n\t\tif (this.ready) { this.movie.setText(newText) ;}\n\t},\n\t\n\tsetCharSet: function(charSet) {\n\t\t// set the character set (UTF16LE or UTF8)\n\t\tthis.charSet = charSet;\n\t\tif (this.ready) { this.movie.setCharSet(charSet) ;}\n\t},\n\t\n\tsetBomInc: function(bomInc) {\n\t\t// set if the BOM should be included or not\n\t\tthis.incBom = bomInc;\n\t\tif (this.ready) { this.movie.setBomInc(bomInc) ;}\n\t},\n\t\n\tsetFileName: function(newText) {\n\t\t// set the file name\n\t\tthis.fileName = newText;\n\t\tif (this.ready) this.movie.setFileName(newText);\n\t},\n\t\n\tsetAction: function(newText) {\n\t\t// set action (save or copy)\n\t\tthis.action = newText;\n\t\tif (this.ready) this.movie.setAction(newText);\n\t},\n\t\n\taddEventListener: function(eventName, func) {\n\t\t// add user event listener for event\n\t\t// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel\n\t\teventName = eventName.toString().toLowerCase().replace(/^on/, '');\n\t\tif (!this.handlers[eventName]) this.handlers[eventName] = [];\n\t\tthis.handlers[eventName].push(func);\n\t},\n\t\n\tsetHandCursor: function(enabled) {\n\t\t// enable hand cursor (true), or default arrow cursor (false)\n\t\tthis.handCursorEnabled = enabled;\n\t\tif (this.ready) this.movie.setHandCursor(enabled);\n\t},\n\t\n\tsetCSSEffects: function(enabled) {\n\t\t// enable or disable CSS effects on DOM container\n\t\tthis.cssEffects = !!enabled;\n\t},\n\t\n\treceiveEvent: function(eventName, args) {\n\t\t// receive event from flash\n\t\teventName = eventName.toString().toLowerCase().replace(/^on/, '');\n\t\t\n\t\t// special behavior for certain events\n\t\tswitch (eventName) {\n\t\t\tcase 'load':\n\t\t\t\t// movie claims it is ready, but in IE this isn't always the case...\n\t\t\t\t// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function\n\t\t\t\tthis.movie = document.getElementById(this.movieId);\n\t\t\t\tif (!this.movie) {\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tsetTimeout( function() { self.receiveEvent('load', null); }, 1 );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// firefox on pc needs a \"kick\" in order to set these in certain cases\n\t\t\t\tif (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tsetTimeout( function() { self.receiveEvent('load', null); }, 100 );\n\t\t\t\t\tthis.ready = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.ready = true;\n\t\t\t\tthis.movie.clearText();\n\t\t\t\tthis.movie.appendText( this.clipText );\n\t\t\t\tthis.movie.setFileName( this.fileName );\n\t\t\t\tthis.movie.setAction( this.action );\n\t\t\t\tthis.movie.setCharSet( this.charSet );\n\t\t\t\tthis.movie.setBomInc( this.incBom );\n\t\t\t\tthis.movie.setHandCursor( this.handCursorEnabled );\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseover':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\t//this.domElement.addClass('hover');\n\t\t\t\t\tif (this.recoverActive) this.domElement.addClass('active');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseout':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.recoverActive = false;\n\t\t\t\t\tif (this.domElement.hasClass('active')) {\n\t\t\t\t\t\tthis.domElement.removeClass('active');\n\t\t\t\t\t\tthis.recoverActive = true;\n\t\t\t\t\t}\n\t\t\t\t\t//this.domElement.removeClass('hover');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mousedown':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.domElement.addClass('active');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseup':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.domElement.removeClass('active');\n\t\t\t\t\tthis.recoverActive = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t} // switch eventName\n\t\t\n\t\tif (this.handlers[eventName]) {\n\t\t\tfor (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {\n\t\t\t\tvar func = this.handlers[eventName][idx];\n\t\t\t\n\t\t\t\tif (typeof(func) == 'function') {\n\t\t\t\t\t// actual function reference\n\t\t\t\t\tfunc(this, args);\n\t\t\t\t}\n\t\t\t\telse if ((typeof(func) == 'object') && (func.length == 2)) {\n\t\t\t\t\t// PHP style object + method, i.e. [myObject, 'myMethod']\n\t\t\t\t\tfunc[0][ func[1] ](this, args);\n\t\t\t\t}\n\t\t\t\telse if (typeof(func) == 'string') {\n\t\t\t\t\t// name of function\n\t\t\t\t\twindow[func](this, args);\n\t\t\t\t}\n\t\t\t} // foreach event handler defined\n\t\t} // user defined handler for event\n\t}\n\t\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/DT_bootstrap.css",
    "content": "\ndiv.dataTables_length label {\n\tfloat: left;\n\ttext-align: left;\n}\n\ndiv.dataTables_length select {\n\twidth: 75px;\n}\n\ndiv.dataTables_filter label {\n\tfloat: right;\n}\n\ndiv.dataTables_info {\n\tpadding-top: 0;\n}\n\ndiv.dataTables_paginate {\n\tfloat: right;\n\tmargin: 0;\n}\n\ntable.dynamicTable.table {\n\tclear: both;\n\tmargin-bottom: 0 !important;\n\tmax-width: none !important;\n}\n\ntable.table thead .sorting,\ntable.table thead .sorting_asc,\ntable.table thead .sorting_desc,\ntable.table thead .sorting_asc_disabled,\ntable.table thead .sorting_desc_disabled {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.table thead .sorting { background-image: url('../images/sort_both.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_asc { background-image: url('../images/sort_asc.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_desc { background-image: url('../images/sort_desc.png'); background-repeat: no-repeat; background-position: center right; }\n\ntable.table thead .sorting_asc_disabled { background-image: url('../images/sort_asc_disabled.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_desc_disabled { background-image: url('../images/sort_desc_disabled.png'); background-repeat: no-repeat; background-position: center right; }\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n/* Scrolling */\ndiv.dataTables_scrollHead table {\n\tmargin-bottom: 0 !important;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\ndiv.dataTables_scrollHead table thead tr:last-child th:first-child,\ndiv.dataTables_scrollHead table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody tbody tr:first-child th,\ndiv.dataTables_scrollBody tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n\tborder-top: none;\n}\n\n\n\n\n/*\n * TableTools styles\n */\n.table tbody tr.active td,\n.table tbody tr.active th {\n\tbackground-color: #08C;\n\tcolor: white;\n}\n\n.table tbody tr.active:hover td,\n.table tbody tr.active:hover th {\n\tbackground-color: #0075b0 !important;\n}\n\n.table-striped tbody tr.active:nth-child(odd) td,\n.table-striped tbody tr.active:nth-child(odd) th {\n\tbackground-color: #017ebc;\n}\n\ntable.DTTT_selectable tbody tr {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.DTTT .btn {\n\tcolor: #333 !important;\n\tfont-size: 12px;\n}\n\ndiv.DTTT .btn:hover {\n\ttext-decoration: none !important;\n}\n\n\nul.DTTT_dropdown.dropdown-menu a {\n\tcolor: #333 !important; /* needed only when demo_page.css is included */\n}\n\nul.DTTT_dropdown.dropdown-menu li:hover a {\n\tbackground-color: #0088cc;\n\tcolor: white !important;\n}\n\n/* TableTools information display */\ndiv.DTTT_print_info.modal {\n\theight: 150px;\n\tmargin-top: -75px;\n\ttext-align: center;\n}\n\ndiv.DTTT_print_info h6 {\n\tfont-weight: normal;\n\tfont-size: 28px;\n\tline-height: 28px;\n\tmargin: 1em;\n}\n\ndiv.DTTT_print_info p {\n\tfont-size: 14px;\n\tline-height: 20px;\n}\n\n\n\n/*\n * FixedColumns styles\n */\ndiv.DTFC_LeftHeadWrapper table,\ndiv.DTFC_LeftFootWrapper table,\ntable.DTFC_Cloned tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTFC_LeftHeadWrapper table {\n\tmargin-bottom: 0 !important;\n\tborder-top-right-radius: 0 !important;\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child th,\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.DTFC_LeftFootWrapper table {\n\tborder-top: none;\n}\n\n.dataTables_wrapper label { margin-bottom: 0; }\n.dataTables_wrapper .row-fluid:first-child { padding: 0 0 15px; }\n.dataTables_wrapper .row-fluid:last-child { padding: 15px 0 0; }\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_page.css",
    "content": "\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * General page setup\n */\n#dt_example {\n\tfont: 80%/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: #333;\n\tbackground-color: #fff;\n}\n\n\n#dt_example #container {\n\twidth: 800px;\n\tmargin: 30px auto;\n\tpadding: 0;\n}\n\n\n#dt_example #footer {\n\tmargin: 50px auto 0 auto;\n\tpadding: 0;\n}\n\n#dt_example #demo {\n\tmargin: 30px auto 0 auto;\n}\n\n#dt_example .demo_jui {\n\tmargin: 30px auto 0 auto;\n}\n\n#dt_example .big {\n\tfont-size: 1.3em;\n\tfont-weight: bold;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n}\n\n#dt_example .spacer {\n\theight: 20px;\n\tclear: both;\n}\n\n#dt_example .clear {\n\tclear: both;\n}\n\n#dt_example pre {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n#dt_example h1 {\n\tmargin-top: 2em;\n\tfont-size: 1.3em;\n\tfont-weight: normal;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n\tborder-bottom: 1px solid #B0BED9;\n\tclear: both;\n}\n\n#dt_example h2 {\n\tfont-size: 1.2em;\n\tfont-weight: normal;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n\tclear: both;\n}\n\n#dt_example a {\n\tcolor: #0063DC;\n\ttext-decoration: none;\n}\n\n#dt_example a:hover {\n\ttext-decoration: underline;\n}\n\n#dt_example ul {\n\tcolor: #4E6CA3;\n}\n\n.css_right {\n\tfloat: right;\n}\n\n.css_left {\n\tfloat: left;\n}\n\n.demo_links {\n\tfloat: left;\n\twidth: 50%;\n\tmargin-bottom: 1em;\n}\n\n#demo_info {\n\tpadding: 5px;\n\tborder: 1px solid #B0BED9;\n\theight: 100px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n#dt_example code {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: nowrap;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table.css",
    "content": "/*\n *  File:         demo_table.css\n *  CVS:          $Id$\n *  Description:  CSS descriptions for DataTables demo pages\n *  Author:       Allan Jardine\n *  Created:      Tue May 12 06:47:22 BST 2009\n *  Modified:     $Date$ by $Author$\n *  Language:     CSS\n *  Project:      DataTables\n *\n *  Copyright 2009 Allan Jardine. All Rights Reserved.\n *\n * ***************************************************************************\n * DESCRIPTION\n *\n * The styles given here are suitable for the demos that are used with the standard DataTables\n * distribution (see www.datatables.net). You will most likely wish to modify these styles to\n * meet the layout requirements of your site.\n *\n * Common issues:\n *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is\n *     no conflict between the two pagination types. If you want to use full_numbers pagination\n *     ensure that you either have \"example_alt_pagination\" as a body class name, or better yet,\n *     modify that selector.\n *   Note that the path used for Images is relative. All images are by default located in\n *     ../images/ - relative to this CSS file.\n */\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables features\n */\n\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\tzoom: 1; /* Feeling sorry for IE */\n}\n\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n.dataTables_length {\n\twidth: 40%;\n\tfloat: left;\n}\n\n.dataTables_filter {\n\twidth: 50%;\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_info {\n\twidth: 60%;\n\tfloat: left;\n}\n\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n/* Pagination nested */\n.paginate_disabled_previous, .paginate_enabled_previous,\n.paginate_disabled_next, .paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover, .paginate_enabled_previous:hover,\n.paginate_disabled_next:hover, .paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active, .paginate_enabled_previous:active,\n.paginate_disabled_next:active, .paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous, .paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next, .paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_disabled_previous {\n\tbackground: url('../images/back_disabled.png') no-repeat top left;\n}\n\n.paginate_enabled_previous {\n\tbackground: url('../images/back_enabled.png') no-repeat top left;\n}\n.paginate_enabled_previous:hover {\n\tbackground: url('../images/back_enabled_hover.png') no-repeat top left;\n}\n\n.paginate_disabled_next {\n\tbackground: url('../images/forward_disabled.png') no-repeat top right;\n}\n\n.paginate_enabled_next {\n\tbackground: url('../images/forward_enabled.png') no-repeat top right;\n}\n.paginate_enabled_next:hover {\n\tbackground: url('../images/forward_enabled_hover.png') no-repeat top right;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables display\n */\ntable.display {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n\t\n\t/* Note Firefox 3.5 and before have a bug with border-collapse\n\t * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) \n\t * border-spacing: 0; is one possible option. Conditional-css.com is\n\t * useful for this kind of thing\n\t *\n\t * Further note IE 6/7 has problems when calculating widths with border width.\n\t * It subtracts one px relative to the other browsers from the first column, and\n\t * adds one to the end...\n\t *\n\t * If you want that effect I'd suggest setting a border-top/left on th/td's and \n\t * then filling in the gaps with other borders.\n\t */\n}\n\ntable.display thead th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-bottom: 1px solid black;\n\tfont-weight: bold;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\ntable.display tfoot th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-top: 1px solid black;\n\tfont-weight: bold;\n}\n\ntable.display tr.heading2 td {\n\tborder-bottom: 1px solid #aaa;\n}\n\ntable.display td {\n\tpadding: 3px 10px;\n}\n\ntable.display td.center {\n\ttext-align: center;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables sorting\n */\n\n.sorting_asc {\n\tbackground: url('../images/sort_asc.png') no-repeat center right;\n}\n\n.sorting_desc {\n\tbackground: url('../images/sort_desc.png') no-repeat center right;\n}\n\n.sorting {\n\tbackground: url('../images/sort_both.png') no-repeat center right;\n}\n\n.sorting_asc_disabled {\n\tbackground: url('../images/sort_asc_disabled.png') no-repeat center right;\n}\n\n.sorting_desc_disabled {\n\tbackground: url('../images/sort_desc_disabled.png') no-repeat center right;\n}\n \ntable.display thead th:active,\ntable.display thead td:active {\n\toutline: none;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables row classes\n */\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.odd.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.even.gradeC {\n\tbackground-color: #eeeeff;\n}\n\ntable.display tr.odd.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.even.gradeX {\n\tbackground-color: #ffeeee;\n}\n\ntable.display tr.odd.gradeU {\n\tbackground-color: #ddd;\n}\n\ntable.display tr.even.gradeU {\n\tbackground-color: #eee;\n}\n\n\ntr.odd {\n\tbackground-color: #E2E4FF;\n}\n\ntr.even {\n\tbackground-color: white;\n}\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Misc\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n.top, .bottom {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n.top .dataTables_info {\n\tfloat: none;\n}\n\n.clear {\n\tclear: both;\n}\n\n.dataTables_empty {\n\ttext-align: center;\n}\n\ntfoot input {\n\tmargin: 0.5em 0;\n\twidth: 100%;\n\tcolor: #444;\n}\n\ntfoot input.search_init {\n\tcolor: #999;\n}\n\ntd.group {\n\tbackground-color: #d1cfd0;\n\tborder-bottom: 2px solid #A19B9E;\n\tborder-top: 2px solid #A19B9E;\n}\n\ntd.details {\n\tbackground-color: #d1cfd0;\n\tborder: 2px solid #A19B9E;\n}\n\n\n.example_alt_pagination div.dataTables_info {\n\twidth: 40%;\n}\n\n.paging_full_numbers {\n\twidth: 400px;\n\theight: 22px;\n\tline-height: 22px;\n}\n\n.paging_full_numbers a:active {\n\toutline: none\n}\n\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n \t.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\ntable.display tr.even.row_selected td {\n\tbackground-color: #B0BED9;\n}\n\ntable.display tr.odd.row_selected td {\n\tbackground-color: #9FAFD1;\n}\n\n\n/*\n * Sorting classes for columns\n */\n/* For the standard odd/even */\ntr.odd td.sorting_1 {\n\tbackground-color: #D3D6FF;\n}\n\ntr.odd td.sorting_2 {\n\tbackground-color: #DADCFF;\n}\n\ntr.odd td.sorting_3 {\n\tbackground-color: #E0E2FF;\n}\n\ntr.even td.sorting_1 {\n\tbackground-color: #EAEBFF;\n}\n\ntr.even td.sorting_2 {\n\tbackground-color: #F2F3FF;\n}\n\ntr.even td.sorting_3 {\n\tbackground-color: #F9F9FF;\n}\n\n\n/* For the Conditional-CSS grading rows */\n/*\n \tColour calculations (based off the main row colours)\n  Level 1:\n\t\tdd > c4\n\t\tee > d5\n\tLevel 2:\n\t  dd > d1\n\t  ee > e2\n */\ntr.odd.gradeA td.sorting_1 {\n\tbackground-color: #c4ffc4;\n}\n\ntr.odd.gradeA td.sorting_2 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.odd.gradeA td.sorting_3 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.even.gradeA td.sorting_1 {\n\tbackground-color: #d5ffd5;\n}\n\ntr.even.gradeA td.sorting_2 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.even.gradeA td.sorting_3 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.odd.gradeC td.sorting_1 {\n\tbackground-color: #c4c4ff;\n}\n\ntr.odd.gradeC td.sorting_2 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.odd.gradeC td.sorting_3 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.even.gradeC td.sorting_1 {\n\tbackground-color: #d5d5ff;\n}\n\ntr.even.gradeC td.sorting_2 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.even.gradeC td.sorting_3 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.odd.gradeX td.sorting_1 {\n\tbackground-color: #ffc4c4;\n}\n\ntr.odd.gradeX td.sorting_2 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.odd.gradeX td.sorting_3 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.even.gradeX td.sorting_1 {\n\tbackground-color: #ffd5d5;\n}\n\ntr.even.gradeX td.sorting_2 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.even.gradeX td.sorting_3 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.odd.gradeU td.sorting_1 {\n\tbackground-color: #c4c4c4;\n}\n\ntr.odd.gradeU td.sorting_2 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.odd.gradeU td.sorting_3 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.even.gradeU td.sorting_1 {\n\tbackground-color: #d5d5d5;\n}\n\ntr.even.gradeU td.sorting_2 {\n\tbackground-color: #e2e2e2;\n}\n\ntr.even.gradeU td.sorting_3 {\n\tbackground-color: #e2e2e2;\n}\n\n\n/*\n * Row highlighting example\n */\n.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {\n\tbackground-color: #E6FF99;\n}\n\n.ex_highlight_row #example tr.even:hover {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_1 {\n\tbackground-color: #DDFF75;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_2 {\n\tbackground-color: #E7FF9E;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_3 {\n\tbackground-color: #E2FF89;\n}\n\n.ex_highlight_row #example tr.odd:hover {\n\tbackground-color: #E6FF99;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_1 {\n\tbackground-color: #D6FF5C;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_2 {\n\tbackground-color: #E0FF84;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_3 {\n\tbackground-color: #DBFF70;\n}\n\n\n/*\n * KeyTable\n */\ntable.KeyTable td {\n\tborder: 3px solid transparent;\n}\n\ntable.KeyTable td.focus {\n\tborder: 3px solid #3366FF;\n}\n\ntable.display tr.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.gradeU {\n\tbackground-color: #ddd;\n}\n\ndiv.box {\n\theight: 100px;\n\tpadding: 10px;\n\toverflow: auto;\n\tborder: 1px solid #8080FF;\n\tbackground-color: #E5E5FF;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table_jui.css",
    "content": "/*\n *  File:         demo_table_jui.css\n *  CVS:          $Id$\n *  Description:  CSS descriptions for DataTables demo pages\n *  Author:       Allan Jardine\n *  Created:      Tue May 12 06:47:22 BST 2009\n *  Modified:     $Date$ by $Author$\n *  Language:     CSS\n *  Project:      DataTables\n *\n *  Copyright 2009 Allan Jardine. All Rights Reserved.\n *\n * ***************************************************************************\n * DESCRIPTION\n *\n * The styles given here are suitable for the demos that are used with the standard DataTables\n * distribution (see www.datatables.net). You will most likely wish to modify these styles to\n * meet the layout requirements of your site.\n *\n * Common issues:\n *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is\n *     no conflict between the two pagination types. If you want to use full_numbers pagination\n *     ensure that you either have \"example_alt_pagination\" as a body class name, or better yet,\n *     modify that selector.\n *   Note that the path used for Images is relative. All images are by default located in\n *     ../images/ - relative to this CSS file.\n */\n\n\n/*\n * jQuery UI specific styling\n */\n\n.paging_two_button .ui-button {\n\tfloat: left;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\n.paging_full_numbers .ui-button {\n\tpadding: 2px 6px;\n\tmargin: 0;\n\tcursor: pointer;\n\t* cursor: hand;\n\tcolor: #333 !important;\n}\n\n.dataTables_paginate .ui-button {\n\tmargin-right: -0.1em !important;\n}\n\n.paging_full_numbers {\n\twidth: 350px !important;\n}\n\n.dataTables_wrapper .ui-toolbar {\n\tpadding: 5px;\n}\n\n.dataTables_paginate {\n\twidth: auto;\n}\n\n.dataTables_info {\n\tpadding-top: 3px;\n}\n\ntable.display thead th {\n\tpadding: 3px 0px 3px 10px;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\ndiv.dataTables_wrapper .ui-widget-header {\n\tfont-weight: normal;\n}\n\n\n/*\n * Sort arrow icon positioning\n */\ntable.display thead th div.DataTables_sort_wrapper {\n\tposition: relative;\n\tpadding-right: 20px;\n}\n\ntable.display thead th div.DataTables_sort_wrapper span {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n\tright: 0;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * Everything below this line is the same as demo_table.css. This file is\n * required for 'cleanliness' of the markup\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables features\n */\n\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n}\n\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 50%;\n\twidth: 250px;\n\tmargin-left: -125px;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 11px;\n\tpadding: 2px 0;\n}\n\n.dataTables_length {\n\twidth: 40%;\n\tfloat: left;\n}\n\n.dataTables_filter {\n\twidth: 50%;\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_info {\n\twidth: 50%;\n\tfloat: left;\n}\n\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables display\n */\ntable.display {\n\tmargin: 0 auto;\n\twidth: 100%;\n\tclear: both;\n\tborder-collapse: collapse;\n}\n\ntable.display tfoot th {\n\tpadding: 3px 0px 3px 10px;\n\tfont-weight: bold;\n\tfont-weight: normal;\n}\n\ntable.display tr.heading2 td {\n\tborder-bottom: 1px solid #aaa;\n}\n\ntable.display td {\n\tpadding: 3px 10px;\n}\n\ntable.display td.center {\n\ttext-align: center;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables sorting\n */\n\n.sorting_asc {\n\tbackground: url('../images/sort_asc.png') no-repeat center right;\n}\n\n.sorting_desc {\n\tbackground: url('../images/sort_desc.png') no-repeat center right;\n}\n\n.sorting {\n\tbackground: url('../images/sort_both.png') no-repeat center right;\n}\n\n.sorting_asc_disabled {\n\tbackground: url('../images/sort_asc_disabled.png') no-repeat center right;\n}\n\n.sorting_desc_disabled {\n\tbackground: url('../images/sort_desc_disabled.png') no-repeat center right;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables row classes\n */\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\n\n\n\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.odd.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.even.gradeC {\n\tbackground-color: #eeeeff;\n}\n\ntable.display tr.odd.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.even.gradeX {\n\tbackground-color: #ffeeee;\n}\n\ntable.display tr.odd.gradeU {\n\tbackground-color: #ddd;\n}\n\ntable.display tr.even.gradeU {\n\tbackground-color: #eee;\n}\n\n\ntr.odd {\n\tbackground-color: #E2E4FF;\n}\n\ntr.even {\n\tbackground-color: white;\n}\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Misc\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t-webkit-overflow-scrolling: touch;\n}\n\n.top, .bottom {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n.top .dataTables_info {\n\tfloat: none;\n}\n\n.clear {\n\tclear: both;\n}\n\n.dataTables_empty {\n\ttext-align: center;\n}\n\ntfoot input {\n\tmargin: 0.5em 0;\n\twidth: 100%;\n\tcolor: #444;\n}\n\ntfoot input.search_init {\n\tcolor: #999;\n}\n\ntd.group {\n\tbackground-color: #d1cfd0;\n\tborder-bottom: 2px solid #A19B9E;\n\tborder-top: 2px solid #A19B9E;\n}\n\ntd.details {\n\tbackground-color: #d1cfd0;\n\tborder: 2px solid #A19B9E;\n}\n\n\n.example_alt_pagination div.dataTables_info {\n\twidth: 40%;\n}\n\n.paging_full_numbers a.paginate_button,\n \t.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\ntable.display tr.even.row_selected td {\n\tbackground-color: #B0BED9;\n}\n\ntable.display tr.odd.row_selected td {\n\tbackground-color: #9FAFD1;\n}\n\n\n/*\n * Sorting classes for columns\n */\n/* For the standard odd/even */\ntr.odd td.sorting_1 {\n\tbackground-color: #D3D6FF;\n}\n\ntr.odd td.sorting_2 {\n\tbackground-color: #DADCFF;\n}\n\ntr.odd td.sorting_3 {\n\tbackground-color: #E0E2FF;\n}\n\ntr.even td.sorting_1 {\n\tbackground-color: #EAEBFF;\n}\n\ntr.even td.sorting_2 {\n\tbackground-color: #F2F3FF;\n}\n\ntr.even td.sorting_3 {\n\tbackground-color: #F9F9FF;\n}\n\n\n/* For the Conditional-CSS grading rows */\n/*\n \tColour calculations (based off the main row colours)\n  Level 1:\n\t\tdd > c4\n\t\tee > d5\n\tLevel 2:\n\t  dd > d1\n\t  ee > e2\n */\ntr.odd.gradeA td.sorting_1 {\n\tbackground-color: #c4ffc4;\n}\n\ntr.odd.gradeA td.sorting_2 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.odd.gradeA td.sorting_3 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.even.gradeA td.sorting_1 {\n\tbackground-color: #d5ffd5;\n}\n\ntr.even.gradeA td.sorting_2 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.even.gradeA td.sorting_3 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.odd.gradeC td.sorting_1 {\n\tbackground-color: #c4c4ff;\n}\n\ntr.odd.gradeC td.sorting_2 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.odd.gradeC td.sorting_3 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.even.gradeC td.sorting_1 {\n\tbackground-color: #d5d5ff;\n}\n\ntr.even.gradeC td.sorting_2 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.even.gradeC td.sorting_3 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.odd.gradeX td.sorting_1 {\n\tbackground-color: #ffc4c4;\n}\n\ntr.odd.gradeX td.sorting_2 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.odd.gradeX td.sorting_3 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.even.gradeX td.sorting_1 {\n\tbackground-color: #ffd5d5;\n}\n\ntr.even.gradeX td.sorting_2 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.even.gradeX td.sorting_3 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.odd.gradeU td.sorting_1 {\n\tbackground-color: #c4c4c4;\n}\n\ntr.odd.gradeU td.sorting_2 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.odd.gradeU td.sorting_3 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.even.gradeU td.sorting_1 {\n\tbackground-color: #d5d5d5;\n}\n\ntr.even.gradeU td.sorting_2 {\n\tbackground-color: #e2e2e2;\n}\n\ntr.even.gradeU td.sorting_3 {\n\tbackground-color: #e2e2e2;\n}\n\n\n/*\n * Row highlighting example\n */\n.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {\n\tbackground-color: #E6FF99;\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables.css",
    "content": "\n/*\n * Table\n */\ntable.dataTable {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n}\n\ntable.dataTable thead th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-bottom: 1px solid black;\n\tfont-weight: bold;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.dataTable tfoot th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-top: 1px solid black;\n\tfont-weight: bold;\n}\n\ntable.dataTable td {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td.center,\ntable.dataTable td.dataTables_empty {\n\ttext-align: center;\n}\n\ntable.dataTable tr.odd { background-color: #E2E4FF; }\ntable.dataTable tr.even { background-color: white; }\n\ntable.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }\ntable.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }\ntable.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }\ntable.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }\ntable.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }\ntable.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }\n\n\n/*\n * Table wrapper\n */\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\t*zoom: 1;\n}\n\n\n/*\n * Page length menu\n */\n.dataTables_length {\n\tfloat: left;\n}\n\n\n/*\n * Filter\n */\n.dataTables_filter {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n/*\n * Table information\n */\n.dataTables_info {\n\tclear: both;\n\tfloat: left;\n}\n\n\n/*\n * Pagination\n */\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n/* Two button pagination - previous / next */\n.paginate_disabled_previous,\n.paginate_enabled_previous,\n.paginate_disabled_next,\n.paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover,\n.paginate_enabled_previous:hover,\n.paginate_disabled_next:hover,\n.paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active,\n.paginate_enabled_previous:active,\n.paginate_disabled_next:active,\n.paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous,\n.paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next,\n.paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }\n.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }\n.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }\n\n.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }\n.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }\n.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }\n\n/* Full number pagination */\n.paging_full_numbers {\n\theight: 22px;\n\tline-height: 22px;\n}\n.paging_full_numbers a:active {\n\toutline: none\n}\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tborder-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\n\n/*\n * Processing indicator\n */\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n\n/*\n * Sorting\n */\n.sorting { background: url('../images/sort_both.png') no-repeat center right; }\n.sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }\n.sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }\n\n.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }\n.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }\n \ntable.dataTable thead th:active,\ntable.dataTable thead td:active {\n\toutline: none;\n}\n\n\n/*\n * Scrolling\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables_themeroller.css",
    "content": "\n\n/*\n * Table\n */\ntable.dataTable {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n\tborder-collapse: collapse;\n}\n\ntable.dataTable thead th {\n\tpadding: 3px 0px 3px 10px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.dataTable tfoot th {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td.center,\ntable.dataTable td.dataTables_empty {\n\ttext-align: center;\n}\n\ntable.dataTable tr.odd { background-color: #E2E4FF; }\ntable.dataTable tr.even { background-color: white; }\n\ntable.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }\ntable.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }\ntable.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }\ntable.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }\ntable.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }\ntable.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }\n\n\n/*\n * Table wrapper\n */\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\t*zoom: 1;\n}\n.dataTables_wrapper .ui-widget-header {\n\tfont-weight: normal;\n}\n.dataTables_wrapper .ui-toolbar {\n\tpadding: 5px;\n}\n\n\n/*\n * Page length menu\n */\n.dataTables_length {\n\tfloat: left;\n}\n\n\n/*\n * Filter\n */\n.dataTables_filter {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n/*\n * Table information\n */\n.dataTables_info {\n\tpadding-top: 3px;\n\tclear: both;\n\tfloat: left;\n}\n\n\n/*\n * Pagination\n */\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_paginate .ui-button {\n\tmargin-right: -0.1em !important;\n}\n\n.paging_two_button .ui-button {\n\tfloat: left;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\n.paging_full_numbers .ui-button {\n\tpadding: 2px 6px;\n\tmargin: 0;\n\tcursor: pointer;\n\t* cursor: hand;\n\tcolor: #333 !important;\n}\n\n/* Two button pagination - previous / next */\n.paginate_disabled_previous,\n.paginate_enabled_previous,\n.paginate_disabled_next,\n.paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover,\n.paginate_enabled_previous:hover,\n.paginate_disabled_next:hover,\n.paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active,\n.paginate_enabled_previous:active,\n.paginate_disabled_next:active,\n.paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous,\n.paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next,\n.paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }\n.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }\n.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }\n\n.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }\n.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }\n.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }\n\n/* Full number pagination */\n.paging_full_numbers a:active {\n\toutline: none\n}\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tborder-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\n\n/*\n * Processing indicator\n */\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n\n/*\n * Sorting\n */\ntable.dataTable thead th div.DataTables_sort_wrapper {\n\tposition: relative;\n\tpadding-right: 20px;\n}\n\ntable.dataTable thead th div.DataTables_sort_wrapper span {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n\tright: 0;\n}\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n\n/*\n * Scrolling\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/DT_bootstrap.js",
    "content": "/* Set the defaults for DataTables initialisation */\n$.extend( true, $.fn.dataTable.defaults, {\n\t\"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\"sPaginationType\": \"bootstrap\",\n\t\"oLanguage\": {\n\t\t\"sLengthMenu\": \"_MENU_ records per page\"\n\t}\n} );\n\n\n/* Default class modification */\n$.extend( $.fn.dataTableExt.oStdClasses, {\n\t\"sWrapper\": \"dataTables_wrapper form-inline\"\n} );\n\n\n/* API method to get paging information */\n$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n{\n    return {\n        \"iStart\":         oSettings._iDisplayStart,\n        \"iEnd\":           oSettings.fnDisplayEnd(),\n        \"iLength\":        oSettings._iDisplayLength,\n        \"iTotal\":         oSettings.fnRecordsTotal(),\n        \"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n        \"iPage\":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n        \"iTotalPages\":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n    };\n}\n  \n/* Bootstrap style pagination control */\n$.extend( $.fn.dataTableExt.oPagination, {\n    \"bootstrap\": {\n        \"fnInit\": function( oSettings, nPaging, fnDraw ) {\n            var oLang = oSettings.oLanguage.oPaginate;\n            var fnClickHandler = function ( e ) {\n                e.preventDefault();\n                if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n                    fnDraw( oSettings );\n                }\n            };\n  \n            $(nPaging).addClass('pagination').append(\n                '<ul>' +\n                    '<li class=\"prev disabled\"><a href=\"#\">&larr; ' + oLang.sFirst + '</a></li>' +\n                    '<li class=\"prev disabled\"><a href=\"#\">&larr; '+oLang.sPrevious+'</a></li>'+\n                    '<li class=\"next disabled\"><a href=\"#\">' + oLang.sNext + ' &rarr; </a></li>' +\n                    '<li class=\"next disabled\"><a href=\"#\">' + oLang.sLast + ' &rarr; </a></li>' +\n                '</ul>'\n            );\n            var els = $('a', nPaging);\n            $(els[0]).bind('click.DT', { action: \"first\" }, fnClickHandler);\n            $(els[1]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n            $(els[2]).bind('click.DT', { action: \"next\" }, fnClickHandler);\n            $(els[3]).bind('click.DT', { action: \"last\" }, fnClickHandler);\n        },\n  \n        \"fnUpdate\": function ( oSettings, fnDraw ) {\n            var iListLength = 5;\n            var oPaging = oSettings.oInstance.fnPagingInfo();\n            var an = oSettings.aanFeatures.p;\n            var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n  \n            if ( oPaging.iTotalPages < iListLength) {\n                iStart = 1;\n                iEnd = oPaging.iTotalPages;\n            }\n            else if ( oPaging.iPage <= iHalf ) {\n                iStart = 1;\n                iEnd = iListLength;\n            } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n                iStart = oPaging.iTotalPages - iListLength + 1;\n                iEnd = oPaging.iTotalPages;\n            } else {\n                iStart = oPaging.iPage - iHalf + 1;\n                iEnd = iStart + iListLength - 1;\n            }\n  \n            for ( i=0, iLen=an.length ; i<iLen ; i++ ) {\n                // Remove the middle elements\n                $('li:gt(1)', an[i]).filter(':not(.next)').remove();\n  \n                // Add the new list items and their event handlers\n                for ( j=iStart ; j<=iEnd ; j++ ) {\n                    sClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n                    $('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n                        .insertBefore( $('li.next:first', an[i])[0] )\n                        .bind('click', function (e) {\n                            e.preventDefault();\n                            oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\n                            fnDraw( oSettings );\n                        } );\n                }\n  \n                // Add / remove disabled classes from the static elements\n                if ( oPaging.iPage === 0 ) {\n                    $('li.prev', an[i]).addClass('disabled');\n                } else {\n                    $('li.prev', an[i]).removeClass('disabled');\n                }\n  \n                if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n                    $('li.next', an[i]).addClass('disabled');\n                } else {\n                    $('li.next', an[i]).removeClass('disabled');\n                }\n            }\n        }\n    }\n} );\n\n\n/*\n * TableTools Bootstrap compatibility\n * Required TableTools 2.1+\n */\nif ( $.fn.DataTable.TableTools ) {\n\t// Set the classes that TableTools uses to something suitable for Bootstrap\n\t$.extend( true, $.fn.DataTable.TableTools.classes, {\n\t\t\"container\": \"DTTT btn-group\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"btn\",\n\t\t\t\"disabled\": \"disabled\"\n\t\t},\n\t\t\"collection\": {\n\t\t\t\"container\": \"DTTT_dropdown dropdown-menu\",\n\t\t\t\"buttons\": {\n\t\t\t\t\"normal\": \"\",\n\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t}\n\t\t},\n\t\t\"print\": {\n\t\t\t\"info\": \"DTTT_print_info modal\"\n\t\t},\n\t\t\"select\": {\n\t\t\t\"row\": \"active\"\n\t\t}\n\t} );\n\n\t// Have the collection use a bootstrap compatible dropdown\n\t$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n\t\t\"collection\": {\n\t\t\t\"container\": \"ul\",\n\t\t\t\"button\": \"li\",\n\t\t\t\"liner\": \"a\"\n\t\t}\n\t} );\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a column to the list used for the table with default values\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nTh The th element for this column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddColumn( oSettings, nTh )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.columns;\n\t\t\tvar iCol = oSettings.aoColumns.length;\n\t\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t\t\t} );\n\t\t\toSettings.aoColumns.push( oCol );\n\t\t\t\n\t\t\t/* Add a column specific filter */\n\t\t\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t\t\t{\n\t\t\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\t\t\n\t\t\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\t\t\tif ( oPre.bRegex === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bRegex = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bSmart === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bSmart = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bCaseInsensitive = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Use the column options function to initialise classes etc */\n\t\t\t_fnColumnOptions( oSettings, iCol, null );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply options for a column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column index to consider\n\t\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\t\t\n\t\t\t/* User specified column options */\n\t\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t\t{\n\t\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t\t\t{\n\t\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oOptions.sType !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = oOptions.sType;\n\t\t\t\t\toCol._bAutoType = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$.extend( oCol, oOptions );\n\t\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\t\n\t\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t\t * priority if defined\n\t\t\t\t */\n\t\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t\t}\n\t\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t\t}\n\t\t\n\t\t\t/* Cache the data get and set functions for speed */\n\t\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\t\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\t\t\n\t\t\toCol.fnGetData = function (oData, sSpecific) {\n\t\t\t\tvar innerData = mData( oData, sSpecific );\n\t\t\n\t\t\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t\t\t{\n\t\t\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t\t\t}\n\t\t\t\treturn innerData;\n\t\t\t};\n\t\t\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\t\t\n\t\t\t/* Feature sorting overrides column specific when off */\n\t\t\tif ( !oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\toCol.bSortable = false;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check that the class assignment is correct for sorting */\n\t\t\tif ( !oCol.bSortable ||\n\t\t\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\t\t\toCol.sSortingClassJUI = \"\";\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust the table column widths for new data. Note: you would probably want to \n\t\t * do a redraw after calling this function!\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAdjustColumnSizing ( oSettings )\n\t\t{\n\t\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of a visible column to the index in the data array (take account\n\t\t * of hidden columns)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMatch Visible column index to lookup\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\n\t\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\t\taiVis[iMatch] :\n\t\t\t\tnull;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of an index in the data array and convert it to the visible\n\t\t *   column index (take account of hidden columns)\n\t\t *  @param {int} iMatch Column index to lookup\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\t\n\t\t\treturn iPos !== -1 ? iPos : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the number of visible columns\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the number of visible columns\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisbleColumns( oSettings )\n\t\t{\n\t\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of column indexes that match a given property\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sParam Parameter in aoColumns to look for - typically \n\t\t *    bVisible or bSearchable\n\t\t *  @returns {array} Array of indexes with matched properties\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetColumns( oSettings, sParam )\n\t\t{\n\t\t\tvar a = [];\n\t\t\n\t\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\t\tif ( val[sParam] ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\treturn a;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the sort type based on an input string\n\t\t *  @param {string} sData data we wish to know the type of\n\t\t *  @returns {string} type (defaults to 'string' if no type can be detected)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectType( sData )\n\t\t{\n\t\t\tvar aTypes = DataTable.ext.aTypes;\n\t\t\tvar iLen = aTypes.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sType = aTypes[i]( sData );\n\t\t\t\tif ( sType !== null )\n\t\t\t\t{\n\t\t\t\t\treturn sType;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'string';\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Figure out how to reorder a display list\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {int} aiReturn index list for reordering\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReOrderIndex ( oSettings, sColumns )\n\t\t{\n\t\t\tvar aColumns = sColumns.split(',');\n\t\t\tvar aiReturn = [];\n\t\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\taiReturn.push( j );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aiReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the column ordering that DataTables expects\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {string} comma separated list of names\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOrdering ( oSettings )\n\t\t{\n\t\t\tvar sNames = '';\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t\t\t}\n\t\t\tif ( sNames.length == iLen )\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\treturn sNames.slice(0, -1);\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take the column definitions and static columns arrays and calculate how\n\t\t * they relate to column indexes. The callback function will then apply the\n\t\t * definition found for a column to a suitable configuration object.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t\t *    column index and the definition for that column.\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen;\n\t\t\n\t\t\t// Column definitions with aTargets\n\t\t\tif ( aoColDefs )\n\t\t\t{\n\t\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t\t{\n\t\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t// Statically defined columns array\n\t\t\tif ( aoCols )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfn( i, aoCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add a data array to the table, creating DOM node etc. This is the parallel to \n\t\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t\t * DOM source.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData data array to be added\n\t\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddData ( oSettings, aDataSupplied )\n\t\t{\n\t\t\tvar oCol;\n\t\t\t\n\t\t\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\t\t\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\t\t\taDataSupplied.slice() :\n\t\t\t\t$.extend( true, {}, aDataSupplied );\n\t\t\t\n\t\t\t/* Create the object for storing information about this new row */\n\t\t\tvar iRow = oSettings.aoData.length;\n\t\t\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\t\t\toData._aData = aDataIn;\n\t\t\toSettings.aoData.push( oData );\n\t\t\n\t\t\t/* Create the cells */\n\t\t\tvar nTd, sThisType;\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\t\n\t\t\t\t/* Use rendered data for filtering / sorting */\n\t\t\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* See if we should auto-detect the column type */\n\t\t\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Add to the display array */\n\t\t\toSettings.aiDisplayMaster.push( iRow );\n\t\t\n\t\t\t/* Create the DOM information */\n\t\t\tif ( !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, iRow );\n\t\t\t}\n\t\t\n\t\t\treturn iRow;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read in the data from the target table from the DOM\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGatherData( oSettings )\n\t\t{\n\t\t\tvar iLoop, i, iLen, j, jLen, jInner,\n\t\t\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\t\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\t\t\toCol, oData;\n\t\t\t\n\t\t\t/*\n\t\t\t * Process by row first\n\t\t\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t\t\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t\t\t */\n\t\t\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t\t\t{\n\t\t\t\tnTr = oSettings.nTBody.firstChild;\n\t\t\t\twhile ( nTr )\n\t\t\t\t{\n\t\t\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t\t\t} ) );\n\t\t\n\t\t\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\t\t\tjInner = 0;\n\t\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\t\t\tjInner++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnTr = nTr.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t\t\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t\t\t * setup!\n\t\t\t */\n\t\t\tnTrs = _fnGetTrNodes( oSettings );\n\t\t\tnTds = [];\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTd = nTrs[i].firstChild;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTds.push( nTd );\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Now process by column */\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[iColumn];\n\t\t\n\t\t\t\t/* Get the title of the column - unless there is a user set one */\n\t\t\t\tif ( oCol.sTitle === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar\n\t\t\t\t\tbAutoType = oCol._bAutoType,\n\t\t\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\t\t\tbClass = oCol.sClass !== null,\n\t\t\t\t\tbVisible = oCol.bVisible,\n\t\t\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\t\t\n\t\t\t\t/* A single loop to rule them all (and be more efficient) */\n\t\t\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t\t\t{\n\t\t\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t\t\t{\n\t\t\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Type detection */\n\t\t\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.mRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Rendering */\n\t\t\t\t\t\tif ( bRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Classes */\n\t\t\t\t\t\tif ( bClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Column visibility */\n\t\t\t\t\t\tif ( !bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Row created callbacks */\n\t\t\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toData = oSettings.aoData[i];\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TR element and convert it to an index in aoData\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n the TR element to find\n\t\t *  @returns {int} index if the node is found, null if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToDataIndex( oSettings, n )\n\t\t{\n\t\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TD element and convert it into a column data index (not the visible index)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow The row number the TD/TH can be found in\n\t\t *  @param {node} n The TD/TH element to find\n\t\t *  @returns {int} index if the node is found, -1 if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t\t{\n\t\t\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( anCells[i] === n )\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of data for a given row from the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n\t\t *  @param {array} aiColumns Array of column indexes to get data from\n\t\t *  @returns {array} Data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n\t\t{\n\t\t\tvar out = [];\n\t\t\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n\t\t *  @returns {*} Cell data\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n\t\t{\n\t\t\tvar sData;\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t\t\t{\n\t\t\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t\t\t}\n\t\t\t\treturn oCol.sDefaultContent;\n\t\t\t}\n\t\t\n\t\t\t/* When the data source is null, we can use default column data */\n\t\t\tif ( sData === null && oCol.sDefaultContent !== null )\n\t\t\t{\n\t\t\t\tsData = oCol.sDefaultContent;\n\t\t\t}\n\t\t\telse if ( typeof sData === 'function' )\n\t\t\t{\n\t\t\t\t/* If the data source is a function, then we run it and use the return */\n\t\t\t\treturn sData();\n\t\t\t}\n\t\t\n\t\t\tif ( sSpecific == 'display' && sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the value for a specific cell, into the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {*} val Value to set\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetCellData( oSettings, iRow, iCol, val )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\toCol.fnSetData( oData, val );\n\t\t}\n\t\t\n\t\t\n\t\t// Private variable that is used to match array syntax in the data property object\n\t\tvar __reArray = /\\[.*?\\]$/;\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to get data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data get function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, type, extra) {\n\t\t\t\t\treturn mSource( data, type, extra );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* If there is a . in the source string then the data source is in a \n\t\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t\t * be used if defined, rather than throwing an error\n\t\t\t\t */\n\t\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\t\tvar a = src.split('.');\n\t\t\t\t\tvar arrayNotation, out, innerSrc;\n\t\t\n\t\t\t\t\tif ( src !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\n\t\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\t\n\t\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\t\n\t\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn data[mSource];\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to set data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data set function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Nothing to do when the data source is null */\n\t\t\t\treturn function (data, val) {};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tmSource( data, 'set', val );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\t\tvar setData = function (data, val, src) {\n\t\t\t\t\tvar a = src.split('.'), b;\n\t\t\t\t\tvar arrayNotation, o, innerSrc;\n\t\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\t\n\t\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\treturn setData( data, val, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tdata[mSource] = val;\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the full table data\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {array} aData Master data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetDataMaster ( oSettings )\n\t\t{\n\t\t\tvar aData = [];\n\t\t\tvar iLen = oSettings.aoData.length;\n\t\t\tfor ( var i=0 ; i<iLen; i++ )\n\t\t\t{\n\t\t\t\taData.push( oSettings.aoData[i]._aData );\n\t\t\t}\n\t\t\treturn aData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Nuke the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnClearTable( oSettings )\n\t\t{\n\t\t\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\t\t\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Take an array of integers (index array) and remove a target integer (value - not \n\t\t * the key!)\n\t\t *  @param {array} a Index array to target\n\t\t *  @param {int} iTarget value to find\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDeleteIndex( a, iTarget )\n\t\t{\n\t\t\tvar iTargetIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( a[i] == iTarget )\n\t\t\t\t{\n\t\t\t\t\tiTargetIndex = i;\n\t\t\t\t}\n\t\t\t\telse if ( a[i] > iTarget )\n\t\t\t\t{\n\t\t\t\t\ta[i]--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( iTargetIndex != -1 )\n\t\t\t{\n\t\t\t\ta.splice( iTargetIndex, 1 );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Call the developer defined fnRender function for a given cell (row/column) with\n\t\t * the required parameters and return the result.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData index for the row\n\t\t *  @param {int} iCol aoColumns index for the column\n\t\t *  @returns {*} Return of the developer's fnRender function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnRender( oSettings, iRow, iCol )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\n\t\t\treturn oCol.fnRender( {\n\t\t\t\t\"iDataRow\":    iRow,\n\t\t\t\t\"iDataColumn\": iCol,\n\t\t\t\t\"oSettings\":   oSettings,\n\t\t\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\t\t\"mDataProp\":   oCol.mData\n\t\t\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n\t\t}\n\t\t/**\n\t\t * Create a new TR element (and it's TD children) for a row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow Row to consider\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateTr ( oSettings, iRow )\n\t\t{\n\t\t\tvar oData = oSettings.aoData[iRow];\n\t\t\tvar nTd;\n\t\t\n\t\t\tif ( oData.nTr === null )\n\t\t\t{\n\t\t\t\toData.nTr = document.createElement('tr');\n\t\t\n\t\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t\t * to the aoData array for fast look up\n\t\t\t\t */\n\t\t\t\toData.nTr._DT_RowIndex = iRow;\n\t\t\n\t\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t\tif ( oData._aData.DT_RowId )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oData._aData.DT_RowClass )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Process each column */\n\t\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\t\t\tnTd = document.createElement( oCol.sCellType );\n\t\t\n\t\t\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t\t\t * value in the data source - so can just use that\n\t\t\t\t\t */\n\t\t\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t\n\t\t\t\t\t/* Add user defined class */\n\t\t\t\t\tif ( oCol.sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ( oCol.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\t\t\toData._anHidden[i] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t{\n\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create the HTML header for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildHead( oSettings )\n\t\t{\n\t\t\tvar i, nTh, iLen, j, jLen;\n\t\t\tvar iThs = $('th, td', oSettings.nTHead).length;\n\t\t\tvar iCorrector = 0;\n\t\t\tvar jqChildren;\n\t\t\t\n\t\t\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\t\t\tif ( iThs !== 0 )\n\t\t\t{\n\t\t\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\t\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\t\t\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnTr.appendChild( nTh );\n\t\t\t\t}\n\t\t\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\t/* ARIA role for the rows */\t\n\t\t\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\t\t\n\t\t\t/* Add the extra markup needed by jQuery UI's themes */\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\t\n\t\t\t\t\tvar nDiv = document.createElement('div');\n\t\t\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\t\t\n\t\t\t\t\tvar nSpan = document.createElement('span');\n\t\t\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\t\t\tnDiv.appendChild( nSpan );\n\t\t\t\t\tnTh.appendChild( nDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Deal with the footer - add classes if required */\n\t\t\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t\t\t{\n\t\t\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t\t\t}\n\t\t\t\n\t\t\t/* Cache the footer elements */\n\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t{\n\t\t\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anCells[i] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the header (or footer) element based on the column visibility states. The\n\t\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t\t * traversed over cell at a time in a rows x columns grid fashion, although each \n\t\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t\t * already a cell in that position.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\t\tvar aoLocal = [];\n\t\t\tvar aApplied = [];\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar iRowspan, iColspan;\n\t\t\n\t\t\tif (  bIncludeHidden === undefined )\n\t\t\t{\n\t\t\t\tbIncludeHidden = false;\n\t\t\t}\n\t\t\n\t\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\t\n\t\t\t\t/* Remove any columns which are currently hidden */\n\t\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t\t{\n\t\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\t\taApplied.push( [] );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\t\t\n\t\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\t\tif ( nLocalTr )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tiRowspan = 1;\n\t\t\t\t\tiColspan = 1;\n\t\t\n\t\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t\t */\n\t\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\t\taApplied[i][j] = 1;\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Insert the required TR nodes into the table for display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDraw( oSettings )\n\t\t{\n\t\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar i, iLen, n;\n\t\t\tvar anRows = [];\n\t\t\tvar iRowCount = 0;\n\t\t\tvar iStripes = oSettings.asStripeClasses.length;\n\t\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\t\t\n\t\t\toSettings.bDrawing = true;\n\t\t\t\n\t\t\t/* Check and see if we have an initial draw position from state saving */\n\t\t\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t\t\t{\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\toSettings.iInitDisplayStart = -1;\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing draw intercept */\n\t\t\tif ( oSettings.bDeferLoading )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = false;\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aiDisplay.length !== 0 )\n\t\t\t{\n\t\t\t\tvar iStart = oSettings._iDisplayStart;\n\t\t\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\t\t\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tiStart = 0;\n\t\t\t\t\tiEnd = oSettings.aoData.length;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tvar nRow = aoData.nTr;\n\t\t\t\t\t\n\t\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\t\t\n\t\t\t\t\tanRows.push( nRow );\n\t\t\t\t\tiRowCount++;\n\t\t\t\t\t\n\t\t\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\t\t\tif ( iOpenRows !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\t\t\n\t\t\t\tif ( oSettings.asStripeClasses[0] )\n\t\t\t\t{\n\t\t\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t\t\t}\n\t\t\n\t\t\t\tvar oLang = oSettings.oLanguage;\n\t\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t\t}\n\t\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t\t}\n\t\t\n\t\t\t\tvar nTd = document.createElement( 'td' );\n\t\t\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\t\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\t\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\t\t\n\t\t\t\tanRows[ iRowCount ].appendChild( nTd );\n\t\t\t}\n\t\t\t\n\t\t\t/* Header and footer callbacks */\n\t\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t/* \n\t\t\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t\t\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t\t\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t\t\t */\n\t\t\tvar\n\t\t\t\tnAddFrag = document.createDocumentFragment(),\n\t\t\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\t\t\tnBodyPar, nTrs;\n\t\t\t\n\t\t\tif ( oSettings.nTBody )\n\t\t\t{\n\t\t\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\t\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\t\t\n\t\t\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t\t\t * up. When not infinite scroll, always do it.\n\t\t\t\t */\n\t\t\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Put the draw table into the dom */\n\t\t\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\t\t\tif ( nBodyPar !== null )\n\t\t\t\t{\n\t\t\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Call all required callback functions for the end of a draw */\n\t\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\t\t\n\t\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\t\toSettings.bSorted = false;\n\t\t\toSettings.bFiltered = false;\n\t\t\toSettings.bDrawing = false;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\tif ( !oSettings._bInitComplete )\n\t\t\t\t{\n\t\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table - taking account of the various features which are enabled\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReDraw( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t/* Sorting will refilter and draw for us */\n\t\t\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* Filtering will redraw for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add the options to the page HTML for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddOptionsHtml ( oSettings )\n\t\t{\n\t\t\t/*\n\t\t\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t\t\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t\t\t */\n\t\t\tvar nHolding = $('<div></div>')[0];\n\t\t\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\t\t\n\t\t\t/* \n\t\t\t * All DataTables are wrapped in a div\n\t\t\t */\n\t\t\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\t\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\t\n\t\t\t/* Track where we want to insert the option */\n\t\t\tvar nInsertNode = oSettings.nTableWrapper;\n\t\t\t\n\t\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\t\tvar aDom = oSettings.sDom.split('');\n\t\t\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\t\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t\t{\n\t\t\t\tiPushFeature = 0;\n\t\t\t\tcOption = aDom[i];\n\t\t\t\t\n\t\t\t\tif ( cOption == '<' )\n\t\t\t\t{\n\t\t\t\t\t/* New container div */\n\t\t\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\t\t\n\t\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\t\tcNext = aDom[i+1];\n\t\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\t\tj = 2;\n\t\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\t\t\tnInsertNode = nNewNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == '>' )\n\t\t\t\t{\n\t\t\t\t\t/* End container div */\n\t\t\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t\t\t{\n\t\t\t\t\t/* Length */\n\t\t\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t\t\t{\n\t\t\t\t\t/* Filter */\n\t\t\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\t/* pRocessing */\n\t\t\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 't' )\n\t\t\t\t{\n\t\t\t\t\t/* Table */\n\t\t\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t\t\t{\n\t\t\t\t\t/* Info */\n\t\t\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t\t\t{\n\t\t\t\t\t/* Pagination */\n\t\t\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Plug-in features */\n\t\t\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Add to the 2D features array */\n\t\t\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\t\t\tnInsertNode.appendChild( nTmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\t\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t\t * create a layout grid (array) of rows x columns, which contains a reference\n\t\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t\t * any column / row could be removed and the new grid constructed\n\t\t *  @param array {object} aLayout Array to store the calculated layout in\n\t\t *  @param {node} nThead The header/footer element for the table\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectHeader ( aLayout, nThead )\n\t\t{\n\t\t\tvar nTrs = $(nThead).children('tr');\n\t\t\tvar nTr, nCell;\n\t\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\t\tvar bUnique;\n\t\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\t\tvar k = a[i];\n\t\t                while ( k[j] ) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn j;\n\t\t\t};\n\t\t\n\t\t\taLayout.splice( 0, aLayout.length );\n\t\t\t\n\t\t\t/* We know how many rows there are in the layout - so prep it */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taLayout.push( [] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Calculate a layout array */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTr = nTrs[i];\n\t\t\t\tiColumn = 0;\n\t\t\t\t\n\t\t\t\t/* For every cell in the row... */\n\t\t\t\tnCell = nTr.firstChild;\n\t\t\t\twhile ( nCell ) {\n\t\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\t\n\t\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t\t\t * accordingly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of unique th elements, one for each column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t\t *  @returns array {node} aReturn list of unique th's\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t\t{\n\t\t\tvar aReturn = [];\n\t\t\tif ( !aLayout )\n\t\t\t{\n\t\t\t\taLayout = oSettings.aoHeader;\n\t\t\t\tif ( nHeader )\n\t\t\t\t{\n\t\t\t\t\taLayout = [];\n\t\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t\t{\n\t\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aReturn;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the table using an Ajax call\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {boolean} Block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdate( oSettings )\n\t\t{\n\t\t\tif ( oSettings.bAjaxDataGet )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\t\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\t\t\tfunction(json) {\n\t\t\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t\t\t}, oSettings );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Build up the parameters in an object needed for a server-side processing request\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {bool} block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxParameters( oSettings )\n\t\t{\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\t\t\tvar i, j;\n\t\t\t\n\t\t\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\t\t\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\t\t\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\t\t\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\t\t\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\t\t\toSettings._iDisplayLength : -1 } );\n\t\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\t\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t\t\t}\n\t\t\t\n\t\t\t/* Filtering */\n\t\t\tif ( oSettings.oFeatures.bFilter !== false )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\t\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Sorting */\n\t\t\tif ( oSettings.oFeatures.bSort !== false )\n\t\t\t{\n\t\t\t\tvar iCounter = 0;\n\t\t\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\t\t\n\t\t\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\t\t\tiCounter++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aoData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add Ajax parameters from plug-ins\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoData name/value pairs to send to the server\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnServerParams( oSettings, aoData )\n\t\t{\n\t\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Data the data from the server (nuking the old) and redraw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} json json data return from the server.\n\t\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t\t *  @param {array} json.aaData The data to display on this page\n\t\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdateDraw ( oSettings, json )\n\t\t{\n\t\t\tif ( json.sEcho !== undefined )\n\t\t\t{\n\t\t\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t\t\t * very fast interaction, and later queries are completed much faster\n\t\t\t\t */\n\t\t\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( !oSettings.oScroll.bInfinite ||\n\t\t\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t\t\t{\n\t\t\t\t_fnClearTable( oSettings );\n\t\t\t}\n\t\t\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\t\t\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\t\t\n\t\t\t/* Determine if reordering is required */\n\t\t\tvar sOrdering = _fnColumnOrdering(oSettings);\n\t\t\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\t\t\tvar aiIndex;\n\t\t\tif ( bReOrder )\n\t\t\t{\n\t\t\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t\t\t}\n\t\t\t\n\t\t\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\t\t\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( bReOrder )\n\t\t\t\t{\n\t\t\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\t\t\tvar aDataSorted = [];\n\t\t\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t\t\t}\n\t\t\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\toSettings.bAjaxDataGet = false;\n\t\t\t_fnDraw( oSettings );\n\t\t\toSettings.bAjaxDataGet = true;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for filtering text\n\t\t *  @returns {node} Filter control element\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlFilter ( oSettings )\n\t\t{\n\t\t\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\t\t\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t\t\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t\t\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\t\t\n\t\t\tvar nFilter = document.createElement( 'div' );\n\t\t\tnFilter.className = oSettings.oClasses.sFilter;\n\t\t\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\t\t\tif ( !oSettings.aanFeatures.f )\n\t\t\t{\n\t\t\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t\t\t}\n\t\t\t\n\t\t\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\t\t\n\t\t\t// Store a reference to the input element, so other input elements could be\n\t\t\t// added to the filter wrapper if needed (submit button for example)\n\t\t\tnFilter._DT_Input = jqFilter[0];\n\t\t\n\t\t\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\t\t\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t\t\t/* Update all other filter input elements for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\t\t\n\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Now do the filter */\n\t\t\t\tif ( val != oPreviousSearch.sSearch )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\t\t\"sSearch\": val, \n\t\t\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\tjqFilter\n\t\t\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t\t/* Prevent form submission */\n\t\t\t\t\tif ( e.keyCode == 13 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\treturn nFilter;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table using both the global filter and column based filtering\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oSearch search information\n\t\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t\t{\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t\t/* Save the filtering values */\n\t\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t\t};\n\t\t\n\t\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\n\t\t\t\t/* Now do the individual column filter */\n\t\t\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Custom filtering */\n\t\t\t\t_fnFilterCustom( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function we have been filtering */\n\t\t\toSettings.bFiltered = true;\n\t\t\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\toSettings._iDisplayStart = 0;\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Rebuild search array 'offline' */\n\t\t\t_fnBuildSearchArray( oSettings, 0 );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply custom filtering functions\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCustom( oSettings )\n\t\t{\n\t\t\tvar afnFilters = DataTable.ext.afnFiltering;\n\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\n\t\t\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar iCorrector = 0;\n\t\t\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\t\t\tvar bTest = afnFilters[i](\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\t\t\tiDisIndex\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\t\t\tif ( !bTest )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table on a per-column basis\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iColumn column to filter\n\t\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t\t *  @param {bool} bSmart use smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tif ( sInput === \"\" )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iIndexCorrector = 0;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t\n\t\t\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\t\t\toSettings.aoColumns[iColumn].sType );\n\t\t\t\tif ( ! rpSearch.test( sData ) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\t\t\tiIndexCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the data table based on user input and draw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar i;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\t/* Check if we are forcing or not - optional parameter */\n\t\t\tif ( !iForce )\n\t\t\t{\n\t\t\t\tiForce = 0;\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to take account of custom filtering functions - always filter */\n\t\t\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t\t\t{\n\t\t\t\tiForce = 1;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * If the input is blank - we want the full data set\n\t\t\t */\n\t\t\tif ( sInput.length <= 0 )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\t * We are starting a new search or the new search string is smaller \n\t\t\t\t * then the old one (i.e. delete). Search from the master array\n\t\t\t \t */\n\t\t\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\t\t\n\t\t\t\t\t/* Force a rebuild of the search array */\n\t\t\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\t\t\n\t\t\t\t\t/* Search through all records to populate the search array\n\t\t\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t\t\t * mapping\n\t\t\t\t\t */\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t  }\n\t\t\t  else\n\t\t\t\t{\n\t\t\t  \t/* Using old search array - refine it - do it this way for speed\n\t\t\t  \t * Don't have to search the whole master array again\n\t\t\t\t\t */\n\t\t\t  \tvar iIndexCorrector = 0;\n\t\t\t  \t\n\t\t\t  \t/* Search the current results */\n\t\t\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t\t\t{\n\t\t\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t\t\t  \t\t\tiIndexCorrector++;\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t  }\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create an array which can be quickly search through\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMaster use the master data array - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchArray ( oSettings, iMaster )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Clear out the old data */\n\t\t\t\toSettings.asDataSearch = [];\n\t\t\n\t\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\t\tvar aiIndex = (iMaster===1) ?\n\t\t\t\t \toSettings.aiDisplayMaster :\n\t\t\t\t \toSettings.aiDisplay;\n\t\t\t\t\n\t\t\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a searchable string from a single data row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData Row data array to use for the data to search\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchRow( oSettings, aData )\n\t\t{\n\t\t\tvar sSearch = aData.join('  ');\n\t\t\t\n\t\t\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\t\t\tif ( sSearch.indexOf('&') !== -1 )\n\t\t\t{\n\t\t\t\tsSearch = $('<div>').html(sSearch).text();\n\t\t\t}\n\t\t\t\n\t\t\t// Strip newline characters\n\t\t\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Build a regular expression object suitable for searching a table\n\t\t *  @param {string} sSearch string to search for\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t\t *  @returns {RegExp} constructed object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar asSearch, sRegExpString;\n\t\t\t\n\t\t\tif ( bSmart )\n\t\t\t{\n\t\t\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t\t\t */\n\t\t\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\t\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\t\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\t\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Convert raw data into something that the user can search on\n\t\t *  @param {string} sData data to be modified\n\t\t *  @param {string} sType data type\n\t\t *  @returns {string} search string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDataToSearch ( sData, sType )\n\t\t{\n\t\t\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t\t\t{\n\t\t\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t\t\t}\n\t\t\telse if ( sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\telse if ( sType == \"html\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t}\n\t\t\telse if ( typeof sData === \"string\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * scape a string such that it can be used in a regular expression\n\t\t *  @param {string} sVal string to escape\n\t\t *  @returns {string} escaped string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnEscapeRegex ( sVal )\n\t\t{\n\t\t\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\t\t\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\t\t\treturn sVal.replace(reReplace, '\\\\$1');\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the info display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Information element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlInfo ( oSettings )\n\t\t{\n\t\t\tvar nInfo = document.createElement( 'div' );\n\t\t\tnInfo.className = oSettings.oClasses.sInfo;\n\t\t\t\n\t\t\t/* Actions that are to be taken once only for this feature */\n\t\t\tif ( !oSettings.aanFeatures.i )\n\t\t\t{\n\t\t\t\t/* Add draw callback */\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\t\"sName\": \"information\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Add id */\n\t\t\t\tnInfo.id = oSettings.sTableId+'_info';\n\t\t\t}\n\t\t\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\t\t\n\t\t\treturn nInfo;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the information elements in the display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnUpdateInfo ( oSettings )\n\t\t{\n\t\t\t/* Show information about the table */\n\t\t\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar\n\t\t\t\toLang = oSettings.oLanguage,\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsOut;\n\t\t\t\n\t\t\tif ( iTotal === 0 )\n\t\t\t{\n\t\t\t\t/* Empty record set */\n\t\t\t\tsOut = oLang.sInfoEmpty;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t/* Normal record set */\n\t\t\t\tsOut = oLang.sInfo;\n\t\t\t}\n\t\t\n\t\t\tif ( iTotal != iMax )\n\t\t\t{\n\t\t\t\t/* Record set after filtering */\n\t\t\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t\t\t}\n\t\t\n\t\t\t// Convert the macros\n\t\t\tsOut += oLang.sInfoPostFix;\n\t\t\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\t\t\n\t\t\tif ( oLang.fnInfoCallback !== null )\n\t\t\t{\n\t\t\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t\t\t}\n\t\t\t\n\t\t\tvar n = oSettings.aanFeatures.i;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _fnInfoMacros ( oSettings, str )\n\t\t{\n\t\t\tvar\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tsMax = oSettings.fnFormatNumber( iMax );\n\t\t\n\t\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t\t// internally\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t\t\t}\n\t\t\n\t\t\treturn str.\n\t\t\t\treplace(/_START_/g, sStart).\n\t\t\t\treplace(/_END_/g,   sEnd).\n\t\t\t\treplace(/_TOTAL_/g, sTotal).\n\t\t\t\treplace(/_MAX_/g,   sMax);\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitialise ( oSettings )\n\t\t{\n\t\t\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\t\t\n\t\t\t/* Ensure that the table data is fully initialised */\n\t\t\tif ( oSettings.bInitialised === false )\n\t\t\t{\n\t\t\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the display HTML options */\n\t\t\t_fnAddOptionsHtml( oSettings );\n\t\t\t\n\t\t\t/* Build and draw the header / footer for the table */\n\t\t\t_fnBuildHead( oSettings );\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\n\t\t\t/* Okay to show that something is going on now */\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\n\t\t\t/* Calculate sizes for columns */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth )\n\t\t\t{\n\t\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If there is default sorting required - let's do it. The sort function will do the\n\t\t\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t\t\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t\t\t */\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* if there is an ajax source load the data */\n\t\t\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\tvar aoData = [];\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\t\t\n\t\t\t\t\t/* Got the data - add it to the table */\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t\t\t */\n\t\t\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t_fnInitComplete( oSettings, json );\n\t\t\t\t}, oSettings );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t\t *    with client-side processing (optional)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitComplete ( oSettings, json )\n\t\t{\n\t\t\toSettings._bInitComplete = true;\n\t\t\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Language compatibility - when certain options are given, and others aren't, we\n\t\t * need to duplicate the values over, in order to provide backwards compatibility\n\t\t * with older language files.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLanguageCompat( oLanguage )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.oLanguage;\n\t\t\n\t\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t\t * sZeroRecords - assuming that is given.\n\t\t\t */\n\t\t\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t\t\t}\n\t\t\n\t\t\t/* Likewise with loading records */\n\t\t\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for user display length changing\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Display length feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlLength ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\t\t\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\t\t\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\t\t\tvar i, iLen;\n\t\t\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\t\t\n\t\t\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tsStdMenu += '</select>';\n\t\t\t\n\t\t\tvar nLength = document.createElement( 'div' );\n\t\t\tif ( !oSettings.aanFeatures.l )\n\t\t\t{\n\t\t\t\tnLength.id = oSettings.sTableId+'_length';\n\t\t\t}\n\t\t\tnLength.className = oSettings.oClasses.sLength;\n\t\t\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\t\t\n\t\t\t/*\n\t\t\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t\t\t * and Stefan Skopnik for fixing the fix!\n\t\t\t */\n\t\t\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\t\t\n\t\t\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\t\t\tvar iVal = $(this).val();\n\t\t\t\t\n\t\t\t\t/* Update all other length options for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.l;\n\t\t\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != this.parentNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Redraw the table */\n\t\t\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\n\t\t\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\t\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t} );\n\t\t\n\t\t\n\t\t\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\t\t\n\t\t\treturn nLength;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Recalculate the end point based on the start point\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateEnd( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bPaginate === false )\n\t\t\t{\n\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Set the end point of the display - based on how many elements there are\n\t\t\t\t * still to display\n\t\t\t\t */\n\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t\t * Note that most of the paging logic is done in \n\t\t * DataTable.ext.oPagination\n\t\t */\n\t\t\n\t\t/**\n\t\t * Generate the node required for default pagination\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Pagination feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlPaginate ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar nPaginate = document.createElement( 'div' );\n\t\t\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\t\t\n\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\t\t\tfunction( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"pagination\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nPaginate;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Alter the display settings to change the page\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer)\n\t\t *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnPageChange ( oSettings, mAction )\n\t\t{\n\t\t\tvar iOldStart = oSettings._iDisplayStart;\n\t\t\t\n\t\t\tif ( typeof mAction === \"number\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"first\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t\telse if ( mAction == \"previous\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\n\t\t\t\t/* Correct for under-run */\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"next\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"last\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t\t\t}\n\t\t\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\t\t\n\t\t\treturn iOldStart != oSettings._iDisplayStart;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the processing node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Processing element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlProcessing ( oSettings )\n\t\t{\n\t\t\tvar nProcessing = document.createElement( 'div' );\n\t\t\t\n\t\t\tif ( !oSettings.aanFeatures.r )\n\t\t\t{\n\t\t\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t\t\t}\n\t\t\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\t\t\tnProcessing.className = oSettings.oClasses.sProcessing;\n\t\t\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\t\t\n\t\t\treturn nProcessing;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Display or hide the processing indicator\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bShow Show the processing indicator (true) or not (false)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnProcessingDisplay ( oSettings, bShow )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bProcessing )\n\t\t\t{\n\t\t\t\tvar an = oSettings.aanFeatures.r;\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add any control elements for the table - specifically scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlTable ( oSettings )\n\t\t{\n\t\t\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\treturn oSettings.nTable;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * The HTML structure that we want to generate in this function is:\n\t\t\t *  div - nScroller\n\t\t\t *    div - nScrollHead\n\t\t\t *      div - nScrollHeadInner\n\t\t\t *        table - nScrollHeadTable\n\t\t\t *          thead - nThead\n\t\t\t *    div - nScrollBody\n\t\t\t *      table - oSettings.nTable\n\t\t\t *        thead - nTheadSize\n\t\t\t *        tbody - nTbody\n\t\t\t *    div - nScrollFoot\n\t\t\t *      div - nScrollFootInner\n\t\t\t *        table - nScrollFootTable\n\t\t\t *          tfoot - nTfoot\n\t\t\t */\n\t\t\tvar\n\t\t\t \tnScroller = document.createElement('div'),\n\t\t\t \tnScrollHead = document.createElement('div'),\n\t\t\t \tnScrollHeadInner = document.createElement('div'),\n\t\t\t \tnScrollBody = document.createElement('div'),\n\t\t\t \tnScrollFoot = document.createElement('div'),\n\t\t\t \tnScrollFootInner = document.createElement('div'),\n\t\t\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t\t\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\t\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t\t\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\t\t\toClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tnScrollHead.appendChild( nScrollHeadInner );\n\t\t\tnScrollFoot.appendChild( nScrollFootInner );\n\t\t\tnScrollBody.appendChild( oSettings.nTable );\n\t\t\tnScroller.appendChild( nScrollHead );\n\t\t\tnScroller.appendChild( nScrollBody );\n\t\t\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\t\t\tnScrollHeadTable.appendChild( nThead );\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScroller.appendChild( nScrollFoot );\n\t\t\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\t\t\tnScrollFootTable.appendChild( nTfoot );\n\t\t\t}\n\t\t\t\n\t\t\tnScroller.className = oClasses.sScrollWrapper;\n\t\t\tnScrollHead.className = oClasses.sScrollHead;\n\t\t\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\t\t\tnScrollBody.className = oClasses.sScrollBody;\n\t\t\tnScrollFoot.className = oClasses.sScrollFoot;\n\t\t\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\t\t\n\t\t\tif ( oSettings.oScroll.bAutoCss )\n\t\t\t{\n\t\t\t\tnScrollHead.style.overflow = \"hidden\";\n\t\t\t\tnScrollHead.style.position = \"relative\";\n\t\t\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t\t}\n\t\t\t\n\t\t\tnScrollHead.style.border = \"0\";\n\t\t\tnScrollHead.style.width = \"100%\";\n\t\t\tnScrollFoot.style.border = \"0\";\n\t\t\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\t\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\t\t\n\t\t\t/* Modify attributes to respect the clones */\n\t\t\tnScrollHeadTable.removeAttribute('id');\n\t\t\tnScrollHeadTable.style.marginLeft = \"0\";\n\t\t\toSettings.nTable.style.marginLeft = \"0\";\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.removeAttribute('id');\n\t\t\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Move caption elements from the body to the header, footer or leave where it is\n\t\t\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\t\t\tvar nCaption = $(oSettings.nTable).children('caption');\n\t\t\tif ( nCaption.length > 0 )\n\t\t\t{\n\t\t\t\tnCaption = nCaption[0];\n\t\t\t\tif ( nCaption._captionSide === \"top\" )\n\t\t\t\t{\n\t\t\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t\t\t{\n\t\t\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Sizing\n\t\t\t */\n\t\t\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\t\n\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t\t\t$(nScrollBody).scroll( function (e) {\n\t\t\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\t\t\n\t\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* When yscrolling, add the height */\n\t\t\tif ( oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw - align columns across the tables */\n\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\t\"sName\": \"scrolling\"\n\t\t\t} );\n\t\t\t\n\t\t\t/* Infinite scrolling event handlers */\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\t$(nScrollBody).scroll( function() {\n\t\t\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.nScrollHead = nScrollHead;\n\t\t\toSettings.nScrollFoot = nScrollFoot;\n\t\t\t\n\t\t\treturn nScroller;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the various tables for resizing. It's a bit of a pig this function, but\n\t\t * basically the idea to:\n\t\t *   1. Re-create the table inside the scrolling div\n\t\t *   2. Take live measurements from the DOM\n\t\t *   3. Apply the measurements\n\t\t *   4. Clean up\n\t\t *  @param {object} o dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollDraw ( o )\n\t\t{\n\t\t\tvar\n\t\t\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\t\tnScrollBody = o.nTable.parentNode,\n\t\t\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\t\t\tnTheadSize, nTfootSize,\n\t\t\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\t\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\t\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\t\t\tie67 = o.oBrowser.bScrollOversize,\n\t\t\t\tzeroOut = function(nSizer) {\n\t\t\t\t\toStyle = nSizer.style;\n\t\t\t\t\toStyle.paddingTop = \"0\";\n\t\t\t\t\toStyle.paddingBottom = \"0\";\n\t\t\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\t\t\toStyle.height = 0;\n\t\t\t\t};\n\t\t\t\n\t\t\t/*\n\t\t\t * 1. Re-create the table inside the scrolling div\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t\t\t$(o.nTable).children('thead, tfoot').remove();\n\t\t\n\t\t\t/* Clone the current header and footer elements and then place it into the inner table */\n\t\t\tnTheadSize = $(o.nTHead).clone()[0];\n\t\t\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\t\t\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\t\t\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\t\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\t\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\t\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove old sizing and apply the calculated column widths\n\t\t\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t\t * calculated sizes to this header\n\t\t\t */\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = '100%';\n\t\t\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\t\t\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\t\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\n\t\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\t\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Size the table as a whole */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\t/* No x scrolling */\n\t\t\t\to.nTable.style.width = \"100%\";\n\t\t\t\t\n\t\t\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t\t * into account.\n\t\t\t\t */\n\t\t\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t/* x scroll inner has been given - use it */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t\t\t{\n\t\t\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Not possible to take account of it */\n\t\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* All else fails */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t\t\t * a temporary variable. This is required because the column width calculation is done\n\t\t\t * before this table DOM is created.\n\t\t\t */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\t\n\t\t\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t\t\t * set the width based on the real headers\n\t\t\t */\n\t\t\t\n\t\t\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t\t\t// DOM properties.\n\t\t\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t\t\t \n\t\t\t// Read all widths in next pass. Forces layout only once because we do not change \n\t\t\t// any DOM properties.\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t}, anHeadSizers );\n\t\t\t \n\t\t\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t\t\t// read any DOM properties.\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = aApplied[i];\n\t\t\t}, anHeadToSize );\n\t\t\n\t\t\t$(anHeadSizers).height(0);\n\t\t\t\n\t\t\t/* Same again with the footer if we have one */\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t\t}, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootToSize );\n\t\t\n\t\t\t\t$(anFootSizers).height(0);\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 3. Apply the measurements\n\t\t\t */\n\t\t\t\n\t\t\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t\t\t * to what they currently are\n\t\t\t */\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = aApplied[i];\n\t\t\t}, anHeadSizers );\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\t\n\t\t\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\t\t */\n\t\t\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t\t\t{\n\t\t\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\t\t\n\t\t\t\t/* IE6/7 are a law unto themselves... */\n\t\t\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t\t\t}\n\t\t\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\t\t\" calculation\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * 4. Clean up\n\t\t\t */\n\t\t\tif ( o.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t\t */\n\t\t\t\tif ( ie67 )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\t\t\n\t\t\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t\t\t \to.oScroll.iBarWidth : 0;\n\t\t\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Finally set the width's of the header and footer tables */\n\t\t\tvar iOuterWidth = $(o.nTable).outerWidth();\n\t\t\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\n\t\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\t\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\t\t\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t}\n\t\t\n\t\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\t\t$(nScrollBody).scroll();\n\t\t\t\n\t\t\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\t\t\tif ( o.bSorted || o.bFiltered )\n\t\t\t{\n\t\t\t\tnScrollBody.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply a given function to the display child nodes of an element array (typically\n\t\t * TD children of TR rows\n\t\t *  @param {function} fn Method to apply to the objects\n\t\t *  @param array {nodes} an1 List of elements to look through for display children\n\t\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t\t{\n\t\t\tvar index=0, i=0, iLen=an1.length;\n\t\t\tvar nNode1, nNode2;\n\t\t\n\t\t\twhile ( i < iLen )\n\t\t\t{\n\t\t\t\tnNode1 = an1[i].firstChild;\n\t\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\t\t\twhile ( nNode1 )\n\t\t\t\t{\n\t\t\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( an2 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t\t *  @param {string} sWidth width to be converted\n\t\t *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n\t\t *  @returns {int} iWidth width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnConvertToWidth ( sWidth, nParent )\n\t\t{\n\t\t\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t\n\t\t\tif ( !nParent )\n\t\t\t{\n\t\t\t\tnParent = document.body;\n\t\t\t}\n\t\t\t\n\t\t\tvar iWidth;\n\t\t\tvar nTmp = document.createElement( \"div\" );\n\t\t\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\t\t\n\t\t\tnParent.appendChild( nTmp );\n\t\t\tiWidth = nTmp.offsetWidth;\n\t\t\tnParent.removeChild( nTmp );\n\t\t\t\n\t\t\treturn ( iWidth );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Calculate the width of columns for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateColumnWidths ( oSettings )\n\t\t{\n\t\t\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\t\t\tvar iUserInputs = 0;\n\t\t\tvar iTmpWidth;\n\t\t\tvar iVisibleColumns = 0;\n\t\t\tvar iColums = oSettings.aoColumns.length;\n\t\t\tvar i, iIndex, iCorrector, iWidth;\n\t\t\tvar oHeaders = $('th', oSettings.nTHead);\n\t\t\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\t\t\tvar nWrapper = oSettings.nTable.parentNode;\n\t\t\t\n\t\t\t/* Convert any user input sizes into pixel sizes */\n\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiVisibleColumns++;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\t\t\tnWrapper );\n\t\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tiUserInputs++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If the number of columns in the DOM equals the number that we have to process in \n\t\t\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t\t\t * sizes can be set in order for this to happen, nor scrolling used\n\t\t\t */\n\t\t\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\t\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t\t\t * calculating table widths.\n\t\t\t\t */\n\t\t\t\tvar\n\t\t\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\t\t\tnDivSizing;\n\t\t\t\t\n\t\t\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\t\t\tnCalcTmp.appendChild( nTheadClone );\n\t\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnCalcTmp.appendChild( nBody );\n\t\t\t\tnBody.appendChild( nTr );\n\t\t\t\t\n\t\t\t\t/* Remove any sizing that was previously applied by the styles */\n\t\t\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\t\t\tif ( jqColSizing.length === 0 )\n\t\t\t\t{\n\t\t\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Apply custom sizing to the cloned header */\n\t\t\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oColumn.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Find the biggest td for each column and put it into the table */\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\t\t\tif ( nTd !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build the table and 'display' it */\n\t\t\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t\t\t * but I think correct behaviour\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = \"\";\n\t\t\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t}\n\t\t\t\telse if ( widthAttr )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t\t\t}\n\t\t\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\t\t\n\t\t\t\t/* Scrolling considerations */\n\t\t\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t\t\t * no elements there, under which circumstances we use the header elements\n\t\t\t\t */\n\t\t\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\t\t\tif ( oNodes.length === 0 )\n\t\t\t\t{\n\t\t\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t\t\t * should be by summing the user given values, and the automatic values\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar iTotal = 0;\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t\t\t}\n\t\t\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\t\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\t\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t\t\t}\n\t\t\n\t\t\tif ( widthAttr )\n\t\t\t{\n\t\t\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust a table's width to take account of scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollingWidthAdjust ( oSettings, n )\n\t\t{\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t\t\t * + scroll bar will fit into the area avaialble.\n\t\t\t\t */\n\t\t\t\tvar iOrigWidth = $(n).width();\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the widest node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {node} widest table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetWidestNode( oSettings, iCol )\n\t\t{\n\t\t\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\t\t\tif ( iMaxIndex < 0 )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t\t\t{\n\t\t\t\tvar n = document.createElement('td');\n\t\t\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\t\t\treturn n;\n\t\t\t}\n\t\t\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the maximum strlen for each data column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {string} max string length for each column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetMaxLenString( oSettings, iCol )\n\t\t{\n\t\t\tvar iMax = -1;\n\t\t\tvar iMaxIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t\t\t{\n\t\t\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\t\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\t\t\tif ( s.length > iMax )\n\t\t\t\t{\n\t\t\t\t\tiMax = s.length;\n\t\t\t\t\tiMaxIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn iMaxIndex;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Append a CSS unit (only if required) to a string\n\t\t *  @param {array} aArray1 first array\n\t\t *  @param {array} aArray2 second array\n\t\t *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnStringToCss( s )\n\t\t{\n\t\t\tif ( s === null )\n\t\t\t{\n\t\t\t\treturn \"0px\";\n\t\t\t}\n\t\t\t\n\t\t\tif ( typeof s == 'number' )\n\t\t\t{\n\t\t\t\tif ( s < 0 )\n\t\t\t\t{\n\t\t\t\t\treturn \"0px\";\n\t\t\t\t}\n\t\t\t\treturn s+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if the last character is not 0-9 */\n\t\t\tvar c = s.charCodeAt( s.length-1 );\n\t\t\tif (c < 0x30 || c > 0x39)\n\t\t\t{\n\t\t\t\treturn s;\n\t\t\t}\n\t\t\treturn s+\"px\";\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the width of a scroll bar in this browser being used\n\t\t *  @returns {int} width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollBarWidth ()\n\t\t{  \n\t\t\tvar inner = document.createElement('p');\n\t\t\tvar style = inner.style;\n\t\t\tstyle.width = \"100%\";\n\t\t\tstyle.height = \"200px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\t\n\t\t\tvar outer = document.createElement('div');\n\t\t\tstyle = outer.style;\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.top = \"0px\";\n\t\t\tstyle.left = \"0px\";\n\t\t\tstyle.visibility = \"hidden\";\n\t\t\tstyle.width = \"200px\";\n\t\t\tstyle.height = \"150px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\tstyle.overflow = \"hidden\";\n\t\t\touter.appendChild(inner);\n\t\t\t\n\t\t\tdocument.body.appendChild(outer);\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.style.overflow = 'scroll';\n\t\t\tvar w2 = inner.offsetWidth;\n\t\t\tif ( w1 == w2 )\n\t\t\t{\n\t\t\t\tw2 = outer.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeChild(outer);\n\t\t\treturn (w1 - w2);  \n\t\t}\n\t\t\n\t\t/**\n\t\t * Change the order of the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bApplyClasses optional - should we apply classes or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSort ( oSettings, bApplyClasses )\n\t\t{\n\t\t\tvar\n\t\t\t\ti, iLen, j, jLen, k, kLen,\n\t\t\t\tsDataType, nTh,\n\t\t\t\taaSort = [],\n\t\t\t \taiOrig = [],\n\t\t\t\toSort = DataTable.ext.oSort,\n\t\t\t\taoData = oSettings.aoData,\n\t\t\t\taoColumns = oSettings.aoColumns,\n\t\t\t\toAria = oSettings.oLanguage.oAria;\n\t\t\t\n\t\t\t/* No sorting required if server-side or no sorting array */\n\t\t\tif ( !oSettings.oFeatures.bServerSide && \n\t\t\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t\t\t{\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t\t\t * get the data from the developer's function and apply it for this column\n\t\t\t\t */\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar iColumn = aaSort[i][0];\n\t\t\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t\t\t */\n\t\t\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t\t\t * function runs. This make the sorting function a very simple comparison\n\t\t\t\t */\n\t\t\t\tvar iSortLen = aaSort.length;\n\t\t\t\tvar fnSortFormat, aDataSort;\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t\t *  \tvar iTest;\n\t\t\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t\t\t *  \tif (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t\t *    if (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t *  }\n\t\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t\t */\n\t\t\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Alter the sorting classes to take account of the changes */\n\t\t\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\t\t\tnTh = aoColumns[i].nTh;\n\t\t\t\tnTh.removeAttribute('aria-sort');\n\t\t\t\tnTh.removeAttribute('aria-label');\n\t\t\t\t\n\t\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\t\tif ( aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function that we have sorted the data */\n\t\t\toSettings.bSorted = true;\n\t\t\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\t\t\n\t\t\t/* Copy the master data into the draw array and re-draw */\n\t\t\tif ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* _fnFilter() will redraw the table for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort handler (click) to a node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nNode node to attach the handler to\n\t\t *  @param {int} iDataIndex column sorting index\n\t\t *  @param {function} [fnCallback] callback function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n\t\t{\n\t\t\t_fnBindAction( nNode, {}, function (e) {\n\t\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t\t\t * disabled, as we need to perform slightly different actions.\n\t\t\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t\t\t * too early), so we only do it when we absolutely have to.\n\t\t\t\t */\n\t\t\t\tvar fnInnerSorting = function () {\n\t\t\t\t\tvar iColumn, iNextSort;\n\t\t\t\t\t\n\t\t\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\t\t\tif ( e.shiftKey )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\t\t\tvar bFound = false;\n\t\t\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* No sort yet - add it in */\n\t\t\t\t\t\tif ( bFound === false )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Run the sort */\n\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t}; /* /fnInnerSorting */\n\t\t\t\t\n\t\t\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\tfnInnerSorting();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tfnInnerSorting();\n\t\t\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Call the user specified callback function - used for async user interaction */\n\t\t\t\tif ( typeof fnCallback == 'function' )\n\t\t\t\t{\n\t\t\t\t\tfnCallback( oSettings );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the sorting classes on the header, Note: it is safe to call this function \n\t\t * when bSort and bSortClasses are false\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortingClasses( oSettings )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, iFound;\n\t\t\tvar aaSort, sClass;\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aaSortingFixed !== null )\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSorting.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the required classes to the header */\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\t\t\tiFound = -1;\n\t\t\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\t\t\tiFound = j;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.bJUI )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar sSpanClass;\n\t\t\t\t\t\tif ( iFound == -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t\t\t * _fnAddColumn\n\t\t\t\t\t */\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* \n\t\t\t * Apply the required classes to the table body\n\t\t\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t\t\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t\t\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t\t\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t\t\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t\t\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t\t\t * row found to see if the whole column needs processed can miss classes since the first\n\t\t\t * column might be new.\n\t\t\t */\n\t\t\tsClass = oClasses.sSortColumn;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\t\t\n\t\t\t\t/* Determine what the sorting class for each column should be */\n\t\t\t\tvar iClass, iTargetCol;\n\t\t\t\tvar asClasses = [];\n\t\t\t\tfor (i = 0; i < iColumns; i++)\n\t\t\t\t{\n\t\t\t\t\tasClasses.push(\"\");\n\t\t\t\t}\n\t\t\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t\t\t{\n\t\t\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\t\t\n\t\t\t\t\tif ( iClass < 3 )\n\t\t\t\t\t{\n\t\t\t\t\t\tiClass++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Make changes to the classes for each cell as needed */\n\t\t\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\t\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\t\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t\t\t{\n\t\t\t\t\t/* Determine which column we're looking at */\n\t\t\t\t\tiTargetCol = i % iColumns;\n\t\t\t\t\t\n\t\t\t\t\t/* What is the full list of classes now */\n\t\t\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t\t\t/* What sorting class should be applied? */\n\t\t\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\t\t\n\t\t\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We changed something */\n\t\t\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We need to add a class */\n\t\t\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Save the state of a table in a cookie such that the page can be reloaded\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSaveState ( oSettings )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\t/* Store the interesting variables */\n\t\t\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\t\t\tvar oState = {\n\t\t\t\t\"iCreate\":      new Date().getTime(),\n\t\t\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\t\t\"abVisCols\":    []\n\t\t\t};\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\t\t\n\t\t\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attempt to load a saved table state from a cookie\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oInit DataTables init object so we can override settings\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLoadState ( oSettings, oInit )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\t\t\tif ( !oData )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t * cancelling of loading by returning false\n\t\t\t */\n\t\t\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Store the saved state so it might be accessed at any time */\n\t\t\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\t\t\n\t\t\t/* Restore key features */\n\t\t\toSettings._iDisplayStart    = oData.iStart;\n\t\t\toSettings.iInitDisplayStart = oData.iStart;\n\t\t\toSettings._iDisplayEnd      = oData.iEnd;\n\t\t\toSettings._iDisplayLength   = oData.iLength;\n\t\t\toSettings.aaSorting         = oData.aaSorting.slice();\n\t\t\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\t\t\n\t\t\t/* Search filtering  */\n\t\t\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t\t\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\t\t\n\t\t\t/* Column visibility state\n\t\t\t * Pass back visibility settings to the init handler, but to do not here override\n\t\t\t * the init object that the user might have passed in\n\t\t\t */\n\t\t\toInit.saved_aoColumns = [];\n\t\t\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t\t\t{\n\t\t\t\toInit.saved_aoColumns[i] = {};\n\t\t\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a new cookie with a value to store the state of a table\n\t\t *  @param {string} sName name of the cookie to create\n\t\t *  @param {string} sValue the value the cookie should take\n\t\t *  @param {int} iSecs duration of the cookie\n\t\t *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n\t\t *  @param {function} fnCallback User definable function to modify the cookie\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n\t\t{\n\t\t\tvar date = new Date();\n\t\t\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\t\t\n\t\t\t/* \n\t\t\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t\t\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t\t\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t\t\t * patch to use at least some of the path\n\t\t\t */\n\t\t\tvar aParts = window.location.pathname.split('/');\n\t\t\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\t\t\tvar sFullCookie, oData;\n\t\t\t\n\t\t\tif ( fnCallback !== null )\n\t\t\t{\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\t\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\t\t\taParts.join('/')+\"/\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t\t\t * belonging to DataTables.\n\t\t\t */\n\t\t\tvar\n\t\t\t\taCookies =document.cookie.split(';'),\n\t\t\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\t\t\taOldCookies = [];\n\t\t\t\n\t\t\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\t\t\n\t\t\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch( e ) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t// Make sure we delete the oldest ones first\n\t\t\t\taOldCookies.sort( function (a, b) {\n\t\t\t\t\treturn b.time - a.time;\n\t\t\t\t} );\n\t\t\n\t\t\t\t// Eliminate as many old DataTables cookies as we need to\n\t\t\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar old = aOldCookies.pop();\n\t\t\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\t\t\taParts.join('/') + \"/\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tdocument.cookie = sFullCookie;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read an old cookie to get a cookie with an old table state\n\t\t *  @param {string} sName name of the cookie to read\n\t\t *  @returns {string} contents of the cookie - or null if no cookie with that name found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReadCookie ( sName )\n\t\t{\n\t\t\tvar\n\t\t\t\taParts = window.location.pathname.split('/'),\n\t\t\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t\t\t \tsCookieContents = document.cookie.split(';');\n\t\t\t\n\t\t\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t\t\t{\n\t\t\t\tvar c = sCookieContents[i];\n\t\t\t\t\n\t\t\t\twhile (c.charAt(0)==' ')\n\t\t\t\t{\n\t\t\t\t\tc = c.substring(1,c.length);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t\t\t{\n\t\t\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return the settings object for a particular table\n\t\t *  @param {node} nTable table we are using as a dataTable\n\t\t *  @returns {object} Settings object - or null if not found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSettingsFromNode ( nTable )\n\t\t{\n\t\t\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t\t\t{\n\t\t\t\t\treturn DataTable.settings[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the TR nodes for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {array} TR array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTrNodes ( oSettings )\n\t\t{\n\t\t\tvar aNodes = [];\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\taNodes.push( aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn aNodes;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an flat array with all TD nodes for the table, or row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n\t\t *    if not given then the return array will contain all nodes for the table\n\t\t *  @returns {array} TD array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n\t\t{\n\t\t\tvar anReturn = [];\n\t\t\tvar iCorrector;\n\t\t\tvar anTds, nTd;\n\t\t\tvar iRow, iRows=oSettings.aoData.length,\n\t\t\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\t\t\n\t\t\t/* Allow the collection to be limited to just one row */\n\t\t\tif ( iIndividualRow !== undefined )\n\t\t\t{\n\t\t\t\tiStart = iIndividualRow;\n\t\t\t\tiEnd = iIndividualRow+1;\n\t\t\t}\n\t\t\n\t\t\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tif ( oData.nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\t\t\tanTds = [];\n\t\t\t\t\tnTd = oData.nTr.firstChild;\n\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t{\n\t\t\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn anReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Log an error message\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iLevel log error messages, or display them to the user\n\t\t *  @param {string} sMesg error message\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLog( oSettings, iLevel, sMesg )\n\t\t{\n\t\t\tvar sAlert = (oSettings===null) ?\n\t\t\t\t\"DataTables warning: \"+sMesg :\n\t\t\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\t\t\n\t\t\tif ( iLevel === 0 )\n\t\t\t{\n\t\t\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t\t\t{\n\t\t\t\t\talert( sAlert );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(sAlert);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if ( window.console && console.log )\n\t\t\t{\n\t\t\t\tconsole.log( sAlert );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * See if a property is defined on one object, if so assign it to the other object\n\t\t *  @param {object} oRet target object\n\t\t *  @param {object} oSrc source object\n\t\t *  @param {string} sName property\n\t\t *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnMap( oRet, oSrc, sName, sMappedName )\n\t\t{\n\t\t\tif ( sMappedName === undefined )\n\t\t\t{\n\t\t\t\tsMappedName = sName;\n\t\t\t}\n\t\t\tif ( oSrc[sName] !== undefined )\n\t\t\t{\n\t\t\t\toRet[sMappedName] = oSrc[sName];\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n\t\t * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n\t\t * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n\t\t * we do want to deep copy arrays.\n\t\t *  @param {object} oOut Object to extend\n\t\t *  @param {object} oExtender Object from which the properties will be applied to oOut\n\t\t *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n\t\t *  @memberof DataTable#oApi\n\t\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t\t */\n\t\tfunction _fnExtend( oOut, oExtender )\n\t\t{\n\t\t\tvar val;\n\t\t\t\n\t\t\tfor ( var prop in oExtender )\n\t\t\t{\n\t\t\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t\t\t{\n\t\t\t\t\tval = oExtender[prop];\n\t\t\n\t\t\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t\t\t{\n\t\t\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toOut[prop] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oOut;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Bind an event handers to allow a click or return key to activate the callback.\n\t\t * This is good for accessibility since a return on the keyboard will have the\n\t\t * same effect as a click, if the element has focus.\n\t\t *  @param {element} n Element to bind the action to\n\t\t *  @param {object} oData Data object to pass to the triggered function\n\t\t *  @param {function} fn Callback function for when the event is triggered\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBindAction( n, oData, fn )\n\t\t{\n\t\t\t$(n)\n\t\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} )\n\t\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} } )\n\t\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Register a callback function. Easily allows a callback function to be added to\n\t\t * an array store of callback functions that can then all be called together.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {function} fn Function to be called back\n\t\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t\t{\n\t\t\tif ( fn )\n\t\t\t{\n\t\t\t\toSettings[sStore].push( {\n\t\t\t\t\t\"fn\": fn,\n\t\t\t\t\t\"sName\": sName\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Fire callback functions and trigger events. Note that the loop over the callback\n\t\t * array store is done backwards! Further note that you do not want to fire off triggers\n\t\t * in time sensitive applications (for example cell creation) as its slow.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n\t\t *    is fired\n\t\t *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n\t\t{\n\t\t\tvar aoStore = oSettings[sStore];\n\t\t\tvar aRet =[];\n\t\t\n\t\t\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t\t\t}\n\t\t\n\t\t\tif ( sTrigger !== null )\n\t\t\t{\n\t\t\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t\t\t}\n\t\t\n\t\t\treturn aRet;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n\t\t * library, then we use that as it is fast, safe and accurate. If the function isn't \n\t\t * available then we need to built it ourselves - the inspiration for this function comes\n\t\t * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n\t\t * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n\t\t * do what we need, without requiring a dependency for DataTables.\n\t\t *  @param {object} o JSON object to be converted\n\t\t *  @returns {string} JSON string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n\t\t{\n\t\t\t/* Not an object or array */\n\t\t\tvar sType = typeof o;\n\t\t\tif (sType !== \"object\" || o === null)\n\t\t\t{\n\t\t\t\t// simple data type\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\to = '\"'+o+'\"';\n\t\t\t\t}\n\t\t\t\treturn o+\"\";\n\t\t\t}\n\t\t\n\t\t\t/* If object or array, need to recurse over it */\n\t\t\tvar\n\t\t\t\tsProp, mValue,\n\t\t\t\tjson = [],\n\t\t\t\tbArr = $.isArray(o);\n\t\t\t\n\t\t\tfor (sProp in o)\n\t\t\t{\n\t\t\t\tmValue = o[sProp];\n\t\t\t\tsType = typeof mValue;\n\t\t\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\tmValue = '\"'+mValue+'\"';\n\t\t\t\t}\n\t\t\t\telse if (sType === \"object\" && mValue !== null)\n\t\t\t\t{\n\t\t\t\t\tmValue = _fnJsonString(mValue);\n\t\t\t\t}\n\t\t\n\t\t\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t\t\t}\n\t\t\n\t\t\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * From some browsers (specifically IE6/7) we need special handling to work around browser\n\t\t * bugs - this function is used to detect when these workarounds are needed.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBrowserDetect( oSettings )\n\t\t{\n\t\t\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t\t\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t\t\t * without forcing scrolling\n\t\t\t */\n\t\t\tvar n = $(\n\t\t\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t\t\t'</div>'+\n\t\t\t\t'</div>')[0];\n\t\t\n\t\t\tdocument.body.appendChild( n );\n\t\t\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\t\t\tdocument.body.removeChild( n );\n\t\t}\n\t\t\n\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar i, iLen, a = [], tr;\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\t\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\t\t\n\t\t\tif ( !oOpts )\n\t\t\t{\n\t\t\t\toOpts = {};\n\t\t\t}\n\t\t\n\t\t\toOpts = $.extend( {}, {\n\t\t\t\t\"filter\": \"none\", // applied\n\t\t\t\t\"order\": \"current\", // \"original\"\n\t\t\t\t\"page\": \"all\" // current\n\t\t\t}, oOpts );\n\t\t\n\t\t\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t\t\t// senseless otherwise\n\t\t\tif ( oOpts.page == 'current' )\n\t\t\t{\n\t\t\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr ;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr;\n\t\t\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t\t\t}\n\t\t\n\t\t\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t\t\t * to make the selector act like it would in a full table - so we need\n\t\t\t * to build both results and then combine them together\n\t\t\t */\n\t\t\tvar jqA = $(a);\n\t\t\tvar jqTRs = jqA.filter( sSelector );\n\t\t\tvar jqDescendants = jqA.find( sSelector );\n\t\t\n\t\t\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to  \n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for \n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"filter\": \"applied\"});\n\t\t *      \n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the filter\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar aOut = [];\n\t\t\tvar i, iLen, iIndex;\n\t\t\tvar aTrs = this.$( sSelector, oOpts );\n\t\t\n\t\t\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t\t\t}\n\t\t\n\t\t\treturn aOut;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using \n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} mData The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in \n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *    \n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *    \n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *        \n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( mData, bRedraw )\n\t\t{\n\t\t\tif ( mData.length === 0 )\n\t\t\t{\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\t\n\t\t\tvar aiReturn = [];\n\t\t\tvar iTest;\n\t\t\t\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t\t\t{\n\t\t\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\t\t\tif ( iTest == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn aiReturn;\n\t\t\t\t\t}\n\t\t\t\t\taiReturn.push( iTest );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiTest = _fnAddData( oSettings, mData );\n\t\t\t\tif ( iTest == -1 )\n\t\t\t\t{\n\t\t\t\t\treturn aiReturn;\n\t\t\t\t}\n\t\t\t\taiReturn.push( iTest );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn aiReturn;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data \n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n\t\t * through the sWidth parameter). This can be useful when the width of the table's \n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      $(window).bind('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\tthis.fnDraw( false );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\tthis.oApi._fnScrollDraw(oSettings);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnClearTable( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which \n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\t\t\tif ( nTrParent )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 1;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [fnCallBack] Callback function\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, iAODataIndex;\n\t\t\t\n\t\t\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\t\t\n\t\t\t/* Return the data array from this row */\n\t\t\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\t\t\n\t\t\t/* Update the _DT_RowIndex parameter */\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the target row from the search array */\n\t\t\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\t\t\n\t\t\t/* Delete from the display arrays */\n\t\t\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t\t\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\t\t\n\t\t\t/* If there is a user callback function - call it */\n\t\t\tif ( typeof fnCallBack === \"function\" )\n\t\t\t{\n\t\t\t\tfnCallBack.call( this, oSettings, oData );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check for an 'overflow' they case for displaying the table */\n\t\t\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\treturn oData;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables \n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( bRemove )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\t\t\tvar nBody = oSettings.nTBody;\n\t\t\tvar i, iLen;\n\t\t\n\t\t\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\t\t\n\t\t\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\t\t\toSettings.bDestroying = true;\n\t\t\t\n\t\t\t/* Fire off the destroy callbacks for plug-ins etc */\n\t\t\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\t\t\n\t\t\t/* If the table is not being removed, restore the hidden columns */\n\t\t\tif ( !bRemove )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Blitz all DT events */\n\t\t\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\t\t\n\t\t\t/* If there is an 'empty' indicator row, remove it */\n\t\t\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\t\t\n\t\t\t/* When scrolling we had to break the table up - restore it */\n\t\t\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('thead').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the DataTables generated nodes, events and classes */\n\t\t\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t\t\t$(oSettings.nTableWrapper).remove();\n\t\t\t\n\t\t\toSettings.aaSorting = [];\n\t\t\toSettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\n\t\t\t$('th, td', oSettings.nTHead).removeClass( [\n\t\t\t\toSettings.oClasses.sSortable,\n\t\t\t\toSettings.oClasses.sSortableAsc,\n\t\t\t\toSettings.oClasses.sSortableDesc,\n\t\t\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t\t\t);\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\t\t\n\t\t\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\t\t\tvar kids = jqWrapper.contents();\n\t\t\t\t\t$(this).append( kids );\n\t\t\t\t\tjqWrapper.remove();\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the TR elements back into the table in their original order */\n\t\t\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t\t\t{\n\t\t\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t\t\t}\n\t\t\telse if ( !bRemove )\n\t\t\t{\n\t\t\t\tnOrig.appendChild( oSettings.nTable );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Restore the width of the original table */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t\t\t{\n\t\t\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t\t\t}\n\t\t\t\n\t\t\t/* If the were originally stripe classes - then we add them back here. Note\n\t\t\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t\t\t * it's a good effort without getting carried away\n\t\t\t */\n\t\t\tiLen = oSettings.asDestroyStripes.length;\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar anRows = $(nBody).children('tr');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i] == oSettings )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* End it all */\n\t\t\toSettings = null;\n\t\t\toInit = null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( bComplete )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tif ( bComplete === false )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( !oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRegex === undefined || bRegex === null )\n\t\t\t{\n\t\t\t\tbRegex = false;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bSmart === undefined || bSmart === null )\n\t\t\t{\n\t\t\t\tbSmart = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t\t\t{\n\t\t\t\tbShowGlobal = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t\t\t{\n\t\t\t\tbCaseInsensitive = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilterComplete( oSettings, {\n\t\t\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t}, 1 );\n\t\t\t\t\n\t\t\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t\t\t{\n\t\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t\t\t// inside an iframe or frame...\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch ( e ) {\n\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Single column filter */\n\t\t\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t} );\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the \n\t\t * provided parameters.\n\t\t *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [iCol] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( mRow, iCol )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( mRow !== undefined )\n\t\t\t{\n\t\t\t\tvar iRow = mRow;\n\t\t\t\tif ( typeof mRow === 'object' )\n\t\t\t\t{\n\t\t\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\t\t\tif (sNode === \"tr\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNode === \"td\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( iCol !== undefined )\n\t\t\t\t{\n\t\t\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t\t\t}\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow]._aData : null;\n\t\t\t}\n\t\t\treturn _fnGetDataMaster( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will \n\t\t * typically want to use the '$' API method in preference to this as it is more \n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( iRow !== undefined ) {\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow].nTr : null;\n\t\t\t}\n\t\t\treturn _fnGetTrNodes( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible), \n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *        \n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *        \n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *      \n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( nNode )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\t\t\n\t\t\tif ( sNodeName == \"TR\" )\n\t\t\t{\n\t\t\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t\t\t}\n\t\t\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\t\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\t\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently \n\t\t * on display on the page, with the HTML contents that is passed into the \n\t\t * function. This can be used, for example, to ask for confirmation that a \n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\n\t\t\t/* Check that the row given is in the table */\n\t\t\tvar nTableRows = _fnGetTrNodes( oSettings );\n\t\t\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* the old open one if there is one */\n\t\t\tthis.fnClose( nTr );\n\t\t\t\n\t\t\tvar nNewRow = document.createElement(\"tr\");\n\t\t\tvar nNewCell = document.createElement(\"td\");\n\t\t\tnNewRow.appendChild( nNewCell );\n\t\t\tnNewCell.className = sClass;\n\t\t\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\t\t\n\t\t\tif (typeof mHtml === \"string\")\n\t\t\t{\n\t\t\t\tnNewCell.innerHTML = mHtml;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(nNewCell).html( mHtml );\n\t\t\t}\n\t\t\n\t\t\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\t\t\tvar nTrs = $('tr', oSettings.nTBody);\n\t\t\tif ( $.inArray(nTr, nTrs) != -1  )\n\t\t\t{\n\t\t\t\t$(nNewRow).insertAfter(nTr);\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aoOpenRows.push( {\n\t\t\t\t\"nTr\": nNewRow,\n\t\t\t\t\"nParent\": nTr\n\t\t\t} );\n\t\t\t\n\t\t\treturn nNewRow;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API \n\t\t * function. With this function you can have a DataTables table go to the next, \n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnPageChange( oSettings, mAction );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen;\n\t\t\tvar aoColumns = oSettings.aoColumns;\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar nTd, bAppend, iBefore;\n\t\t\t\n\t\t\t/* No point in doing anything if we are requesting what is already true */\n\t\t\tif ( aoColumns[iCol].bVisible == bShow )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the column */\n\t\t\tif ( bShow )\n\t\t\t{\n\t\t\t\tvar iInsert = 0;\n\t\t\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiInsert++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\t\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\t\t\n\t\t\t\t/* Which coloumn should we be inserting before? */\n\t\t\t\tif ( !bAppend )\n\t\t\t\t{\n\t\t\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiBefore = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( bAppend )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Remove a column from display */\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Clear to set the visible flag */\n\t\t\taoColumns[iCol].bVisible = bShow;\n\t\t\n\t\t\t/* Redraw the header and footer based on the new column visibility */\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\t\n\t\t\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\t\t\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a redraw incase anything depending on the table columns needs it \n\t\t\t * (built-in: scrolling) \n\t\t\t */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnSaveState( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See \n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *      \n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the \n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\toSettings.aaSorting = aaSort;\n\t\t\t_fnSort( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t\t\t \tfnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, sDisplay;\n\t\t\tvar iRow = (typeof mRow === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\t\t\n\t\t\tif ( $.isArray(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Array update - update the whole row */\n\t\t\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\t\t\n\t\t\t\t/* Flag to the function that we are recursing */\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\t\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\t\t\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Individual cell update */\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\t\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\n\t\t\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\t\t\tif ( oCol.fnRender !== null )\n\t\t\t\t{\n\t\t\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* Do the actual HTML update */\n\t\t\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t\t\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t\t\t */\n\t\t\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\t\t\toSettings, \n\t\t\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t\t\t);\n\t\t\t\n\t\t\t/* Perform pre-draw actions */\n\t\t\tif ( bAction === undefined || bAction )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\t\t\n\t\t\n\t\t/*\n\t\t * This is really a good bit rubbish this method of exposing the internal methods\n\t\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t\t */\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a wrapper function for exporting an internal functions to an external API.\n\t\t *  @param {string} sFunc API function name\n\t\t *  @returns {function} wrapped function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnExternApiFunc (sFunc)\n\t\t{\n\t\t\treturn function() {\n\t\t\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\t\t\tArray.prototype.slice.call(arguments) );\n\t\t\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t\t\t};\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Reference to internal functions for use by plug-in developers. Note that these\n\t\t * methods are references to internal functions and are considered to be private.\n\t\t * If you use these methods, be aware that they are liable to change between versions\n\t\t * (check the upgrade notes).\n\t\t *  @namespace\n\t\t */\n\t\tthis.oApi = {\n\t\t\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\t\t\"_fnInitialise\": _fnInitialise,\n\t\t\t\"_fnInitComplete\": _fnInitComplete,\n\t\t\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\t\t\"_fnAddColumn\": _fnAddColumn,\n\t\t\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\t\t\"_fnAddData\": _fnAddData,\n\t\t\t\"_fnCreateTr\": _fnCreateTr,\n\t\t\t\"_fnGatherData\": _fnGatherData,\n\t\t\t\"_fnBuildHead\": _fnBuildHead,\n\t\t\t\"_fnDrawHead\": _fnDrawHead,\n\t\t\t\"_fnDraw\": _fnDraw,\n\t\t\t\"_fnReDraw\": _fnReDraw,\n\t\t\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\t\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\t\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\t\t\"_fnServerParams\": _fnServerParams,\n\t\t\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\t\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\t\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\t\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\t\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\t\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\t\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\t\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\t\t\"_fnFilter\": _fnFilter,\n\t\t\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\t\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\t\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\t\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\t\t\"_fnSort\": _fnSort,\n\t\t\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\t\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\t\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\t\t\"_fnPageChange\": _fnPageChange,\n\t\t\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\t\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\t\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\t\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\t\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\t\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\t\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\t\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\t\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\t\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\t\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\t\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\t\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\t\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\t\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\t\t\"_fnStringToCss\": _fnStringToCss,\n\t\t\t\"_fnDetectType\": _fnDetectType,\n\t\t\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\t\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\t\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\t\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\t\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\t\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\t\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\t\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\t\t\"_fnLog\": _fnLog,\n\t\t\t\"_fnClearTable\": _fnClearTable,\n\t\t\t\"_fnSaveState\": _fnSaveState,\n\t\t\t\"_fnLoadState\": _fnLoadState,\n\t\t\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\t\t\"_fnReadCookie\": _fnReadCookie,\n\t\t\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\t\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\t\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\t\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\t\t\"_fnMap\": _fnMap,\n\t\t\t\"_fnGetRowData\": _fnGetRowData,\n\t\t\t\"_fnGetCellData\": _fnGetCellData,\n\t\t\t\"_fnSetCellData\": _fnSetCellData,\n\t\t\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\t\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\t\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\t\t\"_fnBindAction\": _fnBindAction,\n\t\t\t\"_fnExtend\": _fnExtend,\n\t\t\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\t\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\t\t\"_fnJsonString\": _fnJsonString,\n\t\t\t\"_fnRender\": _fnRender,\n\t\t\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\t\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\t\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\t\t\"_fnGetColumns\": _fnGetColumns\n\t\t};\n\t\t\n\t\t$.extend( DataTable.ext.oApi, this.oApi );\n\t\t\n\t\tfor ( var sFunc in DataTable.ext.oApi )\n\t\t{\n\t\t\tif ( sFunc )\n\t\t\t{\n\t\t\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar bUsePassedData = false;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\t\t\t\"table: \"+this.nodeName );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( DataTable.settings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn DataTable.settings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oInit.bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( DataTable.settings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\":        this,\n\t\t\t\t\"oApi\":          _that.oApi,\n\t\t\t\t\"oInit\":         oInit,\n\t\t\t\t\"sDestroyWidth\": $(this).width(),\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\tDataTable.settings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\tif ( !oInit )\n\t\t\t{\n\t\t\t\toInit = {};\n\t\t\t}\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\toInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripeClasses\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n\t\t\t_fnMap( oSettings, oInit, \"fnServerData\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n\t\t\t_fnMap( oSettings, oInit, \"sServerMethod\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSorting\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n\t\t\t_fnMap( oSettings, oInit, \"aLengthMenu\" );\n\t\t\t_fnMap( oSettings, oInit, \"sPaginationType\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxSource\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n\t\t\t_fnMap( oSettings, oInit, \"iCookieDuration\" );\n\t\t\t_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n\t\t\t_fnMap( oSettings, oInit, \"sDom\" );\n\t\t\t_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n\t\t\t_fnMap( oSettings, oInit, \"iTabIndex\" );\n\t\t\t_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n\t\t\t_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n\t\t\t_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n\t\t\t_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateLoad\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateSave\" );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t\t\t\t   oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t\t\t\t * processing must be enabled by the developer\n\t\t\t\t */\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t\t\t\t * you want to have multiple tables with multiple independent classes \n\t\t\t\t */\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\t\t\t\n\t\t\t\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oSettings.oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by a cookie! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\toSettings.oFeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.aaData !== null )\n\t\t\t{\n\t\t\t\tbUsePassedData = true;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tif ( oInit.oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t\t\t\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toSettings.oClasses.sStripeOdd,\n\t\t\t\t\toSettings.oClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tiLen=oSettings.asStripeClasses.length;\n\t\t\toSettings.asDestroyStripes = [];\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar bStripeRemove = false;\n\t\t\t\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tbStripeRemove = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\t\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( bStripeRemove )\n\t\t\t\t{\n\t\t\t\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\t\t\t\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumnsInit[i] === null )\n\t\t\t\t\t{\n\t\t\t\t\t\taoColumnsInit[i] = {};\n\t\t\t\t\t}\n\t\t\t\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * Check the aaSorting array\n\t\t\t */\n\t\t\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][0] = 0;\n\t\t\t\t}\n\t\t\t\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\t\t\t\n\t\t\t\t/* Add a default sorting index */\n\t\t\t\tif ( oSettings.aaSorting[i][2] === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][2] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\t\t\t\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Set the current sorting index based on aoColumns.asSorting */\n\t\t\t\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = [ document.createElement( 'thead' ) ];\n\t\t\t\tthis.appendChild( thead[0] );\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = [ document.createElement( 'tbody' ) ];\n\t\t\t\tthis.appendChild( tbody[0] );\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\toSettings.nTBody.setAttribute( \"role\", \"alert\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = [ document.createElement( 'tfoot' ) ];\n\t\t\t\tthis.appendChild( tfoot[0] );\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length > 0 )\n\t\t\t{\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( bUsePassedData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Grab the data from the page */\n\t\t\t\t_fnGatherData( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t * to ensure compatibility.\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t *    version, or false if this version of DataTales is not suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n\t */\n\tDataTable.fnVersionCheck = function( sVersion )\n\t{\n\t\t/* This is cheap, but effective */\n\t\tvar fnZPad = function (Zpad, count)\n\t\t{\n\t\t\twhile(Zpad.length < count) {\n\t\t\t\tZpad += '0';\n\t\t\t}\n\t\t\treturn Zpad;\n\t\t};\n\t\tvar aThis = DataTable.ext.sVersion.split('.');\n\t\tvar aThat = sVersion.split('.');\n\t\tvar sThis = '', sThat = '';\n\t\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsThis += fnZPad( aThis[i], 3 );\n\t\t\tsThat += fnZPad( aThat[i], 3 );\n\t\t}\n\t\t\n\t\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n\t};\n\t\n\t\n\t/**\n\t * Check if a TABLE node is a DataTable table already or not.\n\t *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n\t *    node types can be passed in, but will always return false).\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var ex = document.getElementById('example');\n\t *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n\t *      $(ex).dataTable();\n\t *    }\n\t */\n\tDataTable.fnIsDataTable = function ( nTable )\n\t{\n\t\tvar o = DataTable.settings;\n\t\n\t\tfor ( var i=0 ; i<o.length ; i++ )\n\t\t{\n\t\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn false;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can select to\n\t * get only currently visible tables.\n\t *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n\t *    visible tables only.\n\t *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var table = $.fn.dataTable.fnTables(true);\n\t *    if ( table.length > 0 ) {\n\t *      $(table).dataTable().fnAdjustColumnSizing();\n\t *    }\n\t */\n\tDataTable.fnTables = function ( bVisible )\n\t{\n\t\tvar out = [];\n\t\n\t\tjQuery.each( DataTable.settings, function (i, o) {\n\t\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t\t{\n\t\t\t\tout.push( o.nTable );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn out;\n\t};\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t/**\n\t * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n\t * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n\t * of the build in methods use this method to provide their own capabilities (sorting methods\n\t * for example).\n\t * \n\t * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n\t * and modified by plug-ins.\n\t *  @namespace\n\t */\n\tDataTable.models.ext = {\n\t\t/**\n\t\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t\t * over the filtering logic. Each element in this array is a function (parameters\n\t\t * described below) that is called for every row in the table, and your logic decides if\n\t\t * it should be included in the filtered data set or not.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       Function input parameters:\n\t\t *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t\t *    // a certain range.\n\t\t *    $.fn.dataTableExt.afnFiltering.push(\n\t\t *      function( oSettings, aData, iDataIndex ) {\n\t\t *        var iMin = document.getElementById('min').value * 1;\n\t\t *        var iMax = document.getElementById('max').value * 1;\n\t\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"afnFiltering\": [],\n\t\n\t\n\t\t/**\n\t\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t\t * an array of the values you wish to be sorted for the column in question and then return\n\t\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t\t * data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *         <li>{int} Target column index</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{array} Data for the column to be sorted upon</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t\t *    {\n\t\t *      var aData = [];\n\t\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t *        aData.push( this.value );\n\t\t *      } );\n\t\t *      return aData;\n\t\t *    }\n\t\t */\n\t\t\"afnSortData\": [],\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t\t *   <ul>\n\t\t *     <li>{function} fnInit Initialisation of the plug-in\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t\t *                into DataTables control (sDom) - for example this might be useful when \n\t\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t\t *     <li>{string} sFeature Feature name</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t * \n\t\t *  @example\n\t\t *    // How TableTools initialises itself.\n\t\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\",\n\t\t *      \"sFeature\": \"TableTools\"\n\t\t *    } );\n\t\t */\n\t\t\"aoFeatures\": [],\n\t\n\t\n\t\t/**\n\t\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t\t * column) or they can be automatically detected by the methods in this array. The functions\n\t\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t\t * and returning the type if it is a known type, or null otherwise.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be analysed</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t\t *           on to the other type detection functions.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  \n\t\t *  @example\n\t\t *    // Currency type detection plug-in:\n\t\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t\t *      function ( sData ) {\n\t\t *        var sValidChars = \"0123456789.-\";\n\t\t *        var Char;\n\t\t *        \n\t\t *        // Check the numeric part\n\t\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t\t *          Char = sData.charAt(i); \n\t\t *          if (sValidChars.indexOf(Char) == -1) {\n\t\t *            return null;\n\t\t *          }\n\t\t *        }\n\t\t *        \n\t\t *        // Check prefixed by currency\n\t\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t\t *          return 'currency';\n\t\t *        }\n\t\t *        return null;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"aTypes\": [],\n\t\n\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t\t * in order to ensure compatibility.\n\t\t *  @type function\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t\t *    required version, or false if this version of DataTales is not suitable\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iApiIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t\t * the format that should be filtered upon. This is done by adding functions this object \n\t\t * with a parameter name which matches the sType for that target column. This is the\n\t\t * corollary of <i>afnSortData</i> for filtering data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t * \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t *    }\n\t\t */\n\t\t\"ofnSearch\": {},\n\t\n\t\n\t\t/**\n\t\t * Container for all private functions in DataTables so they can be exposed externally\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oApi\": {},\n\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oStdClasses\": {},\n\t\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oJUIClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t\t * the addition of pagination controls by extending this object, which can then be enabled\n\t\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t\t * to) that has two properties, both methods that are used by DataTables to update the\n\t\t * control's state.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t\t *         of the table. It is expected that this function will add the required DOM elements \n\t\t *         to the page for the paging controls to work. The element pointer \n\t\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t\t *         as children\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t\t *               change, this method must be called to redraw the table.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *     <li>\n\t\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t\t *         status.\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t\t *               or attach new event listeners</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t\t *        nFirst = document.createElement( 'span' );\n\t\t *        nPrevious = document.createElement( 'span' );\n\t\t *        nNext = document.createElement( 'span' );\n\t\t *        nLast = document.createElement( 'span' );\n\t\t *        \n\t\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t\t *        \n\t\t *        nFirst.className = \"paginate_button first\";\n\t\t *        nPrevious.className = \"paginate_button previous\";\n\t\t *        nNext.className=\"paginate_button next\";\n\t\t *        nLast.className = \"paginate_button last\";\n\t\t *        \n\t\t *        nPaging.appendChild( nFirst );\n\t\t *        nPaging.appendChild( nPrevious );\n\t\t *        nPaging.appendChild( nNext );\n\t\t *        nPaging.appendChild( nLast );\n\t\t *        \n\t\t *        $(nFirst).click( function () {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nPrevious).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nNext).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nLast).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t\t *      },\n\t\t *      \n\t\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t\t *        if ( !oSettings.aanFeatures.p ) {\n\t\t *          return;\n\t\t *        }\n\t\t *        \n\t\t *        // Loop over each instance of the pager\n\t\t *        var an = oSettings.aanFeatures.p;\n\t\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t *          var buttons = an[i].getElementsByTagName('span');\n\t\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t\t *          }\n\t\t *          \n\t\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t\t *            buttons[2].className = \"paginate_disabled_next\";\n\t\t *            buttons[3].className = \"paginate_disabled_next\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[2].className = \"paginate_enabled_next\";\n\t\t *            buttons[3].className = \"paginate_enabled_next\";\n\t\t *          }\n\t\t *        }\n\t\t *      }\n\t\t *    };\n\t\t */\n\t\t\"oPagination\": {},\n\t\n\t\n\t\t/**\n\t\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t\t * data column (you can add your own type detection functions, or override automatic \n\t\t * detection using sType). With this specific type given to the column, DataTables will \n\t\t * apply the required sort from the functions in the object. Each sort type must provide\n\t\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t\t * are run). The two sorting functions are typical Javascript sort methods:\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data to compare to the second parameter</li>\n\t\t *         <li>{*} Data to compare to the first parameter</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t\t *           the first parameter should be sorted height than the second parameter.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-case-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-case-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Case-insensitive string sorting, with pre-formatting\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-pre\": function(x) {\n\t\t *        return x.toLowerCase();\n\t\t *      },\n\t\t *      \"string-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"oSort\": {},\n\t\n\t\n\t\t/**\n\t\t * Version string for plug-ins to check compatibility. Allowed format is\n\t\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t\t * e are optional\n\t\t *  @type string\n\t\t *  @default Version number\n\t\t */\n\t\t\"sVersion\": DataTable.version,\n\t\n\t\n\t\t/**\n\t\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t\t *  @type string\n\t\t *  @default alert\n\t\t */\n\t\t\"sErrMode\": \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Store information for DataTables to access globally about other instances\n\t\t *  @namespace\n\t\t *  @private\n\t\t */\n\t\t\"_oExternConfig\": {\n\t\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\t\"iNextUnique\": 0\n\t\t}\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings \n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data \n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is \n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": [],\n\t\n\t\t/**\n\t\t * Array of TD elements that are cached for hidden rows, so they can be\n\t\t * reinserted into the table if a column is made visible again (or to act\n\t\t * as a store if a column is made hidden). Only hidden columns have a \n\t\t * reference in the array. For non-hidden columns the value is either\n\t\t * undefined or null.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_anHidden\": [],\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults.columns} \n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t\t * to do with the data, and this property serves as the switch. Firstly, you \n\t\t * can have the sorting and filtering use the rendered value (true - default), \n\t\t * or you can have the sorting and filtering us the original value (false).\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate to the type detection method if the automatic type\n\t\t * detection should be used, or if a column type (sType) has been specified\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @private\n\t\t */\n\t\t\"_bAutoType\": true,\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column \n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get - \n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @default null\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b> \n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data \n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t\t * in DataTables as such, but can be used for plug-ins to reference the \n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation \n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which \n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\" },\n\t\t *          { \"sTitle\": \"Browser\" },\n\t\t *          { \"sTitle\": \"Platform\" },\n\t\t *          { \"sTitle\": \"Version\" },\n\t\t *          { \"sTitle\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (mData)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t\t * initialisation. You can define which column(s) the sort is performed upon, \n\t\t * and the sorting direction, with this variable. The aaSorting array should \n\t\t * contain an array for each column to be sorted initially containing the \n\t\t * column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the aaSorting parameter, but \n\t\t * cannot be overridden by user interaction with the table. What this means \n\t\t * is that you could have a column (visible or hidden) which the sorting will \n\t\t * always be forced on first - any sorting after that (from the user) will \n\t\t * then be performed as required. This can be useful for grouping rows \n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSortingFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be \n\t\t * either a 1D array of options which will be used for both the displayed \n\t\t * option and the value, or a 2D array which will use the array in the first \n\t\t * position as the value, and the array in the second position as the \n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t *  \n\t\t *  @example\n\t\t *    // Setting the default display length as well as length menu\n\t\t *    // This is likely to be wanted if you remove the '10' option which\n\t\t *    // is the iDisplayLength default.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 25,\n\t\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The aoColumns option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see \n\t\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t\t * column, multiple columns, or all columns, using the aTargets property of \n\t\t * each object in the array. This allows great flexibility when creating \n\t\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t\t * columns you specifically want. aoColumnDefs may use any of the column \n\t\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t\t * have aTargets defined in each object in the array. Values in the aTargets\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as oSearch, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size \n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoSearchCols\": [\n\t\t *          null,\n\t\t *          { \"sSearch\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This \n\t\t * array may be of any length, and DataTables will apply each class \n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t\t *    options</i>\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using aoColumns.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bAutoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t\t *        \"bDeferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with \n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false,\n\t\t *        \"bDestroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.sDom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information \n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bInfo\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bJQueryUI\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bLengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *    \n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false,\n\t\t *        \"bRetrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *    \n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var oTable = initTable();\n\t\t *      // perform API operations with oTable \n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollAutoCss\": false,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollAutoCss\": true,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t\t * data as a user scrolls through a table, which is very useful for large\n\t\t * dataset. This cannot be used with pagination, which is automatically\n\t\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t\t * in preference to this option.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollInfinite\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the \"bSortable\" option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSort\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t\t * table display information such as pagination information, display length,\n\t\t * filtering and sorting. As such when the end user reloads the page the\n\t\t * display display will match what thy had previously set up.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * Customise the cookie and / or the parameters being stored when using\n\t\t * DataTables with state saving enabled. This function is called whenever\n\t\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t\t * returned. Note that the data object passed in is a Javascript object which\n\t\t * must be converted to a string (JSON.stringify for example).\n\t\t *  @type function\n\t\t *  @param {string} sName Name of the cookie defined by DataTables\n\t\t *  @param {object} oData Data to be stored in the cookie\n\t\t *  @param {string} sExpires Cookie expires string\n\t\t *  @param {string} sPath Path of the cookie to set\n\t\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t\t *    using encodeURIComponent())\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t\t *          // Customise oData or sName or whatever else here\n\t\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDataIndex The index of this row in aoData\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnDrawCallback\": function( oSettings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' even.\n\t\t *  @type function\n\t\t *  @param {node} nFoot \"TR\" element for the footer\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the \n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the \n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} iIn number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFormatNumber\": function ( iIn ) {\n\t\t *          if ( iIn &lt; 1000 ) {\n\t\t *            return iIn;\n\t\t *          } else {\n\t\t *            var \n\t\t *              s=(iIn+\"\"), \n\t\t *              a=s.split(\"\"), out=\"\", \n\t\t *              iLen=s.length;\n\t\t *            \n\t\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t\t *                out = \"'\"+out;\n\t\t *              }\n\t\t *              out = a[iLen-i-1]+out;\n\t\t *            }\n\t\t *          }\n\t\t *          return out;\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( iIn ) {\n\t\t\tif ( iIn < 1000 )\n\t\t\t{\n\t\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\t\treturn iIn;\n\t\t\t}\n\t\n\t\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t\t{\n\t\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t\t}\n\t\t\t\tout = a[iLen-i-1]+out;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} nHead \"TR\" element for the header\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} iStart Starting position in data for the draw\n\t\t *  @param {int} iEnd End position in data for the draw\n\t\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t\t *        return iStart +\" to \"+ iEnd;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnInitComplete\": function(oSettings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server ($.getJSON) so something more suitable for your\n\t\t * application. For example you could use POST data, or pull information from\n\t\t * a Gears or AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t\t *  @param {array} aoData A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} fnCallback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // POST data to server\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\",\n\t\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t\t *          oSettings.jqXHR = $.ajax( {\n\t\t *            \"dataType\": 'json', \n\t\t *            \"type\": \"POST\", \n\t\t *            \"url\": sSource, \n\t\t *            \"data\": aoData, \n\t\t *            \"success\": fnCallback\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\t\"url\":  sUrl,\n\t\t\t\t\"data\": aoData,\n\t\t\t\t\"success\": function (json) {\n\t\t\t\t\tif ( json.sError ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\t\tfnCallback( json );\n\t\t\t\t},\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} aoData Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t\t *    as this is passed by reference.\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"fnServerParams\": function ( aoData ) {\n\t\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from its state saving\n\t\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoad\": function (oSettings) {\n\t\t *          var o;\n\t\t *          \n\t\t *          // Send an Ajax request to the server to get the data. Note that\n\t\t *          // this is a synchronous request.\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"async\": false,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              o = json;\n\t\t *            }\n\t\t *          } );\n\t\t *          \n\t\t *          return o;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoad\": function ( oSettings ) {\n\t\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\t\tvar oData;\n\t\n\t\t\ttry {\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t\t} catch (e) {\n\t\t\t\toData = null;\n\t\t\t}\n\t\n\t\t\treturn oData;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for \n\t\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that is to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that was loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored - by default it will use a cookie, but you\n\t\t * might want to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSave\": function (oSettings, oData) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": oData,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\t\tthis.oApi._fnCreateCookie( \n\t\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\t\toSettings.iCookieDuration, \n\t\t\t\toSettings.sCookiePrefix, \n\t\t\t\toSettings.fnCookieCallback\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table \n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or \n\t\t * other state properties or modification. Note that for plug-in authors, you should \n\t\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration of the cookie which is used for storing session information. This\n\t\t * value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iCookieDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": [ 57, 100 ],\n\t\t *        \"oSearch\": {\n\t\t *          \"sSearch\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (bLengthChange) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * The scroll gap is the amount of scrolling that is left to go before\n\t\t * DataTables will load the next 'page' of data automatically. You typically\n\t\t * want a gap which is big enough that the scrolling will be smooth for the\n\t\t * user, while not so large that it will load more data than need.\n\t\t *  @type int\n\t\t *  @default 100\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"iScrollLoadGap\": 50\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iScrollLoadGap\": 100,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iTabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information that \n\t\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t\t * can be freely moved or removed as the language requirements change.\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the \n\t\t\t * format of this string should match sInfo.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended \n\t\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t\t * to format large numbers that are used in the table information. By\n\t\t\t * default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoThousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoThousands\": \",\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * By default DataTables will look for the property 'aaData' when obtaining\n\t\t * data from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted object\n\t\t * notation to get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default aaData\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // Get data from { \"data\": [...] }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data\"\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data.inner\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sAjaxDataProp\": \"aaData\",\n\t\n\t\n\t\t/**\n\t\t * You can instruct DataTables to load data from an external source using this\n\t\t * parameter (use aData if you want to pass data in you already have). Simply\n\t\t * provide a url a JSON object can be obtained from. This object must include\n\t\t * the parameter 'aaData' which is the data source for the table.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter can be used to override the default prefix that DataTables\n\t\t * assigns to a cookie when state saving is enabled.\n\t\t *  @type string\n\t\t *  @default SpryMedia_DataTables_\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\t\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * DataTables features two different built-in pagination interaction methods\n\t\t * ('two_button' or 'full_numbers') which present different page controls to\n\t\t * the end user. Further methods can be added using the API (see below).\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sPaginationType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t\t * layout, or you have a large number of columns in the table, you can enable\n\t\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t\t * property can be any CSS unit, or a number (in which case it will be treated\n\t\t * as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"sScrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t\t *        \"sServerMethod\": \"POST\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sServerMethod\": \"GET\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.columns = {\n\t\t/**\n\t\t * Allows a column's sorting to take multiple columns into account when \n\t\t * doing a sort. For example first name / last name columns make sense to \n\t\t * do a multi-column sort over the two columns.\n\t\t *  @type array\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\n\t\t/**\n\t\t * You can control the default sorting direction, and even alter the behaviour\n\t\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t\t * parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          { \"asSorting\": [ \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSearchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSortable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t\t * to use the original data (before rendering) for sorting and filtering \n\t\t * (the default is to used the rendered data that the user can see). This \n\t\t * may be useful for dates etc.\n\t\t * \n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bVisible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\t\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @param {int} iCol The column index for aoColumns\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [3],\n\t\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t\t *            if ( sData == \"1.7\" ) {\n\t\t *              $(nTd).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @param {object} o.mDataProp The data property used for this column\n\t\t *  @param {*}      val The current cell value\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\n\t\n\t\t/**\n\t\t * The column index (starting from 0!) that you wish a sort to be performed\n\t\t * upon when this column is selected for sorting. This can be used for sorting\n\t\t * on hidden columns for example.\n\t\t *  @type int\n\t\t *  @default -1 <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"iDataSort\": 1 },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t\t * in DataTables for this option, but it is strongly recommended that you use\n\t\t * mData in preference to mDataProp.\n\t\t *  @name DataTable.defaults.columns.mDataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any JSON data source property,\n\t\t * including deeply nested objects / properties. mData can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source.</li>\n\t\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t\t *       by default, so you will need to specify the default content you want -\n\t\t *       typically an empty string). This can be useful on generated columns such \n\t\t *       as edit / delete action columns.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row</li>\n\t\t *         <li>{string} The type call data requested - this will be 'set' when\n\t\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t\t *           DataTables expects to get the raw data for the object back</li>\n\t\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is not required when 'set' is the type\n\t\t *       of call, but otherwise the return is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t\t * reflects the flexibility of this property and is consistent with the naming of\n\t\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t\t * it automatically maps the old name to the new if required.\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          { \"mData\": \"platform.inner\" },\n\t\t *          { \"mData\": \"platform.details.0\" },\n\t\t *          { \"mData\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Using mData as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to mData and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t\t * but not altering the underlying data for the table, use this property. mData\n\t\t * can actually do everything this property can and more, but this parameter is\n\t\t * easier to use since there is no 'set' option. Like mData is can be given\n\t\t * in a number of different ways to effect its behaviour, with the addition of \n\t\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t\t * objects):\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source and also array brackets to indicate that the data reader should\n\t\t *       loop over the data source array. When characters are given between the array\n\t\t *       brackets, these characters are used to join the data source array together.\n\t\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t\t *           'type' or 'sort'.</li>\n\t\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use mData</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          {\n\t\t *            \"mData\": \"platform\",\n\t\t *            \"mRender\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *        {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": \"download_link\",\n\t\t *          \"mRender\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"sCellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sClass\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this, and it is not documented on the \n\t\t * general DataTables.net documentation\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *  @dtopt Columns\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"sContentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\",\n\t\t *            \"aTargets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sName\": \"engine\" },\n\t\t *          { \"sName\": \"browser\" },\n\t\t *          { \"sName\": \"platform\" },\n\t\t *          { \"sName\": \"version\" },\n\t\t *          { \"sName\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the sorting which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to sorting. This allows sorting to occur on user editable\n\t\t * elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"sSortDataType\": \"dom-text\" },\n\t\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t\t *          { \"sSortDataType\": \"dom-select\" },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t\t *    original HTML table.</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sTitle\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be sorted.\n\t\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t\t * before sorting)) are currently available. Note that only date formats\n\t\t * understood by Javascript's Date() object will be accepted as type date. For\n\t\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t\t * 'date' or 'html' (by default). Further types can be adding through\n\t\t * plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sType\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sWidth\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a \n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults} but this \n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant \n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\t\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t\t * this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoCss\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t\t * using the Scroller plug-in.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfinite\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\t\t\n\t\t\t/**\n\t\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t\t * when using infinite scrolling.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type int\n\t\t\t */\n\t\t\t\"iLoadGap\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See \n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The \n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\t\n\t\t/**\n\t\t * Search data array for regular expression searching\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDataSearch\": [],\n\t\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a \n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\t\n\t\t/**\n\t\t * Store the applied search for each column - see \n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t *   <li>Index 2 - index of asSorting for this column</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array|null\n\t\t *  @default null\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width \n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of \n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data \n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string \n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\t\n\t\t/**\n\t\t * The cookie duration (for bStateSave) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iCookieDuration\": 0,\n\t\t\n\t\t/**\n\t\t * The cookie name prefix.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sCookiePrefix\": \"\",\n\t\t\n\t\t/**\n\t\t * Callback function for cookie creation.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object \n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\t\n\t\t/**\n\t\t * State that was loaded from the cookie. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case \n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering. \n\t\t * This can be used for working with the XHR information in one of the \n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra \n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t\t * this property to get the end point\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @private\n\t\t */\n\t\t\"_iDisplayEnd\": 10,\n\t\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than \n\t\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplayMaster.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplay.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Set the display end point - aiDisplay index\n\t\t *  @type function\n\t\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._iDisplayEnd;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\t\n\t$.extend( DataTable.ext.oStdClasses, {\n\t\t\"sTable\": \"dataTable\",\n\t\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\t\"sPageJUINext\": \"\",\n\t\t\"sPageJUIPrev\": \"\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"paginate_active\",\n\t\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\t\"sPageFirst\": \"first\",\n\t\t\"sPagePrevious\": \"previous\",\n\t\t\"sPageNext\": \"next\",\n\t\t\"sPageLast\": \"last\",\n\t\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"ui-state-default\",\n\t\t\"sSortDesc\": \"ui-state-default\",\n\t\t\"sSortable\": \"ui-state-default\",\n\t\t\"sSortableAsc\": \"ui-state-default\",\n\t\t\"sSortableDesc\": \"ui-state-default\",\n\t\t\"sSortableNone\": \"ui-state-default\",\n\t\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"ui-state-default\",\n\t\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n\t} );\n\t\n\t/*\n\t * Variable: oPagination\n\t * Purpose:  \n\t * Scope:    jQuery.fn.dataTableExt\n\t */\n\t$.extend( DataTable.ext.oPagination, {\n\t\t/*\n\t\t * Variable: two_button\n\t\t * Purpose:  Standard two button (forward/back) pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"two_button\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t\t:\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t\t$(nPaging).append( sAppend );\n\t\t\t\t\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nPrevious = els[0],\n\t\t\t\t\tnNext = els[1];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\t\n\t\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnUpdate\n\t\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar nNode;\n\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\t\tif ( nNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Previous page */\n\t\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t\t    \n\t\t\t\t\t\t/* Next page */\n\t\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * Variable: iFullNumbersShowPages\n\t\t * Purpose:  Change the number of pages which can be seen\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"iFullNumbersShowPages\": 5,\n\t\t\n\t\t/*\n\t\t * Variable: full_numbers\n\t\t * Purpose:  Full numbers pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"full_numbers\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t$(nPaging).append(\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<span></span>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t\t);\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\tnNext = els[2],\n\t\t\t\t\tnLast = els[3];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t\t * Purpose:  Update the list of page buttons shows\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\t\tvar sList = \"\";\n\t\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar fnBind = function (j) {\n\t\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t/* Pages calculation */\n\t\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = 1;\n\t\t\t\t\tiCurrentPage = 1;\n\t\t\t\t}\n\t\t\t\telse if (iPages < iPageCount)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPageCount;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t\t}\n\t\n\t\t\t\t\n\t\t\t\t/* Build the dynamic list */\n\t\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i];\n\t\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t\t.html( sList )\n\t\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\t\n\t\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\t\tanStatic = [\n\t\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t\t];\n\t\n\t\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t$.extend( DataTable.ext.oSort, {\n\t\t/*\n\t\t * text sorting\n\t\t */\n\t\t\"string-pre\": function ( a )\n\t\t{\n\t\t\tif ( typeof a != 'string' ) {\n\t\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t\t}\n\t\t\treturn a.toLowerCase();\n\t\t},\n\t\n\t\t\"string-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"string-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * html sorting (ignore html tags)\n\t\t */\n\t\t\"html-pre\": function ( a )\n\t\t{\n\t\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t\t},\n\t\t\n\t\t\"html-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"html-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * date sorting\n\t\t */\n\t\t\"date-pre\": function ( a )\n\t\t{\n\t\t\tvar x = Date.parse( a );\n\t\t\t\n\t\t\tif ( isNaN(x) || x===\"\" )\n\t\t\t{\n\t\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t\t}\n\t\t\treturn x;\n\t\t},\n\t\n\t\t\"date-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"date-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * numerical sorting\n\t\t */\n\t\t\"numeric-pre\": function ( a )\n\t\t{\n\t\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t\t},\n\t\n\t\t\"numeric-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"numeric-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t}\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.aTypes, [\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is numeric\n\t\t * Returns:  string:'numeric' or null\n\t\t * Inputs:   mixed:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\t/* Allow zero length strings as a number */\n\t\t\tif ( typeof sData === 'number' )\n\t\t\t{\n\t\t\t\treturn 'numeric';\n\t\t\t}\n\t\t\telse if ( typeof sData !== 'string' )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar sValidFirstChars = \"0123456789-\";\n\t\t\tvar sValidChars = \"0123456789.\";\n\t\t\tvar Char;\n\t\t\tvar bDecimal = false;\n\t\t\t\n\t\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\t\tChar = sData.charAt(0); \n\t\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check all the other characters are valid */\n\t\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t\t{\n\t\t\t\tChar = sData.charAt(i); \n\t\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Only allowed one decimal place... */\n\t\t\t\tif ( Char == \".\" )\n\t\t\t\t{\n\t\t\t\t\tif ( bDecimal )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbDecimal = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'numeric';\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is actually a formatted date\n\t\t * Returns:  string:'date' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tvar iParse = Date.parse(sData);\n\t\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t\t{\n\t\t\t\treturn 'date';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t\t * Returns:  string:'html' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t\t{\n\t\t\t\treturn 'html';\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t] );\n\t\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.js",
    "content": "/*! jQuery v1.8.2 jquery.com | jquery.org/license */\n(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e=\"data-\"+c.replace(I,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:+d+\"\"===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b===\"data\"&&p.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c===\"input\"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,\"display\")===\"none\"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,\"olddisplay\"),b?(!e[f]&&c.style.display===\"none\"&&(c.style.display=\"\"),c.style.display===\"\"&&bZ(c)&&(e[f]=p._data(c,\"olddisplay\",cc(c.nodeName)))):(d=bH(c,\"display\"),!e[f]&&d!==\"none\"&&p._data(c,\"olddisplay\",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display===\"none\"||c.style.display===\"\")c.style.display=b?e[f]||\"\":\"none\"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function ca(a,b,c,d){var e=c===(d?\"border\":\"content\")?4:b===\"width\"?1:0,f=0;for(;e<4;e+=2)c===\"margin\"&&(f+=p.css(a,c+bV[e],!0)),d?(c===\"content\"&&(f-=parseFloat(bH(a,\"padding\"+bV[e]))||0),c!==\"margin\"&&(f-=parseFloat(bH(a,\"border\"+bV[e]+\"Width\"))||0)):(f+=parseFloat(bH(a,\"padding\"+bV[e]))||0,c!==\"padding\"&&(f+=parseFloat(bH(a,\"border\"+bV[e]+\"Width\"))||0));return f}function cb(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,\"boxSizing\")===\"border-box\";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?\"border\":\"content\"),e)+\"px\"}function cc(a){if(bS[a])return bS[a];var b=p(\"<\"+a+\">\").appendTo(e.body),c=b.css(\"display\");b.remove();if(c===\"none\"||c===\"\"){bI=e.body.appendChild(bI||p.extend(e.createElement(\"iframe\"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(\"<!doctype html><html><body>\"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,\"display\"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c&&p.type(b)===\"object\")for(e in b)ci(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!=\"string\"&&(c=b,b=\"*\");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\\+/.test(d),f&&(d=d.substr(1)||\"*\"),e=a[d]=a[d]||[],e[f?\"unshift\":\"push\"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h==\"string\"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g[\"*\"]&&(h=cA(a,c,d,e,\"*\",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]===\"*\")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader(\"content-type\"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+\" \"+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!==\"*\"){if(h!==\"*\"&&h!==e){c=i[h+\" \"+e]||i[\"* \"+e];if(!c)for(d in i){f=d.split(\" \");if(f[1]===e){c=i[h+\" \"+f[0]]||i[\"* \"+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a[\"throws\"])b=c(b);else try{b=c(b)}catch(k){return{state:\"parsererror\",error:c?k:\"No conversion from \"+h+\" to \"+e}}}h=e}return{state:\"success\",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT[\"*\"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,\"fx\"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,\"fx\").length||j.empty.fire()})})),a.nodeType===1&&(\"height\"in b||\"width\"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,\"display\")===\"inline\"&&p.css(a,\"float\")===\"none\"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)===\"inline\"?m.display=\"inline-block\":m.zoom=1)),c.overflow&&(m.overflow=\"hidden\",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?\"hide\":\"show\"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,\"fxshow\")||p._data(a,\"fxshow\",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,\"fxshow\",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e===\"width\"||e===\"height\"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d[\"margin\"+c]=d[\"padding\"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,r=/\\S/,s=/\\s+/,t=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,u=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^[\\],:{}\\s]*$/,x=/(?:^|:|,)(?:\\s*\\[)+/g,y=/\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,z=/\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,A=/^-ms-/,B=/-([\\da-z])/gi,C=function(a,b){return(b+\"\").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener(\"DOMContentLoaded\",D,!1),p.ready()):e.readyState===\"complete\"&&(e.detachEvent(\"onreadystatechange\",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a==\"string\"){a.charAt(0)===\"<\"&&a.charAt(a.length-1)===\">\"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:\"\",jquery:\"1.8.2\",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b&&(d.selector=this.selector+\".\"+b+\"(\"+c+\")\"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),\"slice\",k.call(arguments).join(\",\"))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h==\"boolean\"&&(k=h,h=arguments[1]||{},i=2),typeof h!=\"object\"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger(\"ready\").off(\"ready\")},isFunction:function(a){return p.type(a)===\"function\"},isArray:Array.isArray||function(a){return p.type(a)===\"array\"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||\"object\"},isPlainObject:function(a){if(!a||p.type(a)!==\"object\"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,\"constructor\")&&!n.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!=\"string\"?null:(typeof b==\"boolean\"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!=\"string\")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,\"@\").replace(z,\"]\").replace(x,\"\")))return(new Function(\"return \"+b))();p.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,e;if(!c||typeof c!=\"string\")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)&&p.error(\"Invalid XML: \"+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,\"ms-\").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(\"﻿ \")?function(a){return a==null?\"\":o.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(t,\"\")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c===\"string\"||c===\"function\"||c===\"regexp\"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d==\"number\")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i==\"number\"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c==\"string\"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d==\"object\"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState===\"complete\")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener(\"DOMContentLoaded\",D,!1),a.addEventListener(\"load\",p.ready,!1);else{e.attachEvent(\"onreadystatechange\",D),a.attachEvent(\"onload\",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll(\"left\")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){E[\"[object \"+b+\"]\"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a==\"string\"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e===\"function\"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!==\"string\"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",p.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",p.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",p.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+\"With\"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement(\"div\");n.setAttribute(\"className\",\"t\"),n.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",c=n.getElementsByTagName(\"*\"),d=n.getElementsByTagName(\"a\")[0],d.style.cssText=\"top:1px;float:left;opacity:.5\";if(!c||!c.length)return{};f=e.createElement(\"select\"),g=f.appendChild(e.createElement(\"option\")),h=n.getElementsByTagName(\"input\")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName(\"tbody\").length,htmlSerialize:!!n.getElementsByTagName(\"link\").length,style:/top/.test(d.getAttribute(\"style\")),hrefNormalized:d.getAttribute(\"href\")===\"/a\",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value===\"on\",optSelected:g.selected,getSetAttribute:n.className!==\"t\",enctype:!!e.createElement(\"form\").enctype,html5Clone:e.createElement(\"nav\").cloneNode(!0).outerHTML!==\"<:nav></:nav>\",boxModel:e.compatMode===\"CSS1Compat\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent(\"onclick\",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent(\"onclick\"),n.detachEvent(\"onclick\",m)),h=e.createElement(\"input\"),h.value=\"t\",h.setAttribute(\"type\",\"radio\"),b.radioValue=h.value===\"t\",h.setAttribute(\"checked\",\"checked\"),h.setAttribute(\"name\",\"t\"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j=\"on\"+k,l=j in n,l||(n.setAttribute(j,\"return;\"),l=typeof n[j]==\"function\"),b[k+\"Bubbles\"]=l;return p(function(){var c,d,f,g,h=\"padding:0;margin:0;border:0;display:block;overflow:hidden;\",i=e.getElementsByTagName(\"body\")[0];if(!i)return;c=e.createElement(\"div\"),c.style.cssText=\"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\",i.insertBefore(c,i.firstChild),d=e.createElement(\"div\"),c.appendChild(d),d.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",f=d.getElementsByTagName(\"td\"),f[0].style.cssText=\"padding:0;margin:0;border:0;display:none\",l=f[0].offsetHeight===0,f[0].style.display=\"\",f[1].style.display=\"none\",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML=\"\",d.style.cssText=\"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!==\"1%\",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:\"4px\"}).width===\"4px\",g=e.createElement(\"div\"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width=\"0\",d.style.width=\"1px\",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!=\"undefined\"&&(d.innerHTML=\"\",d.style.cssText=h+\"width:1px;padding:1px;display:inline;zoom:1\",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display=\"block\",d.style.overflow=\"visible\",d.innerHTML=\"<div></div>\",d.firstChild.style.width=\"5px\",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:\"jQuery\"+(p.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c==\"string\",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c==\"object\"||typeof c==\"function\")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute(\"classid\")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,\"parsedAttrs\")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf(\"data-\")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,\"parsedAttrs\",!0)}}return k}return typeof a==\"object\"?this.each(function(){p.data(this,a)}):(d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\",p.access(this,function(c){if(c===b)return k=this.triggerHandler(\"getData\"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler(\"setData\"+e,d),p.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e===\"inprogress\"&&(e=c.shift(),d--),e&&(b===\"fx\"&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks(\"once memory\").add(function(){p.removeData(a,b+\"queue\",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!=\"string\"&&(c=a,a=\"fx\",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a===\"fx\"&&b[0]!==\"inprogress\"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!=\"string\"&&(c=a,a=b),a=a||\"fx\";while(h--)d=p._data(g[h],a+\"queueHooks\"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\\t\\r\\n]/g,P=/\\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a==\"string\"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=\" \"+e.className+\" \";for(g=0,h=b.length;g<h;g++)f.indexOf(\" \"+b[g]+\" \")<0&&(f+=b[g]+\" \");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a==\"string\"||a===b){c=(a||\"\").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(\" \"+e.className+\" \").replace(O,\" \");for(f=0,g=c.length;f<g;f++)while(d.indexOf(\" \"+c[f]+\" \")>=0)d=d.replace(\" \"+c[f]+\" \",\" \");e.className=a?p.trim(d):\"\"}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c===\"string\"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className&&p._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":p._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(\" \"+this[c].className+\" \").replace(O,\" \").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&\"get\"in c&&(d=c.get(f,\"value\"))!==b?d:(d=f.value,typeof d==\"string\"?d.replace(P,\"\"):d==null?\"\":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f=\"\":typeof f==\"number\"?f+=\"\":p.isArray(f)&&(f=p.map(f,function(a){return a==null?\"\":a+\"\"})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,f,\"value\")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type===\"select-one\";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,\"optgroup\"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find(\"option\").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute==\"undefined\")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&\"set\"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+\"\"),d)}return g&&\"get\"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,\"\"),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error(\"type property can't be changed\");else if(!p.support.radioValue&&b===\"radio\"&&p.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,\"button\")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,\"button\"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&\"set\"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&\"get\"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!=\"boolean\"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!==\"\":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+\"\"}},p.each([\"width\",\"height\"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c===\"\")return a.setAttribute(b,\"auto\"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===\"\"&&(b=\"false\"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+\"\"}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype=\"encoding\"),p.support.checkOn||p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\\.]*|)(?:\\.(.+)|)$/,X=/(?:^|\\s)hover(\\.\\S+|)\\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,\"mouseenter$1 mouseleave$1\")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!=\"undefined\"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(\" \");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||\"\").split(\".\").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(\".\")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent(\"on\"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||\"\")).split(\" \");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp(\"(^|\\\\.)\"+j.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d===\"**\"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,\"events\",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf(\"!\")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(\".\")>=0&&(t=s.split(\".\"),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c==\"object\"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+t.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,m=s.indexOf(\":\")<0?\"on\"+s:\"\";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,\"events\")||{})[c.type]&&p._data(k,\"handle\"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!==\"click\"||!p.nodeName(f,\"a\"))&&p.acceptData(f)&&m&&f[s]&&(s!==\"focus\"&&s!==\"blur\"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,\"events\")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!==\"click\"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!==\"click\"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d=\"on\"+b;a.detachEvent&&(typeof a[d]==\"undefined\"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,\"form\"))return!1;p.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=p.nodeName(c,\"input\")||p.nodeName(c,\"button\")?c.form:b;d&&!p._data(d,\"_submit_attached\")&&(p.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),p._data(d,\"_submit_attached\",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,\"form\"))return!1;p.event.remove(this,\"._submit\")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")p.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"&&(this._just_changed=!0)}),p.event.add(this,\"click._change\",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate(\"change\",this,a,!0)});return!1}p.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,\"_change_attached\")&&(p.event.add(b,\"change._change\",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate(\"change\",this.parentNode,a,!0)}),p._data(b,\"_change_attached\",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"&&b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,\"._change\"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a==\"object\"){typeof c!=\"string\"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a==\"object\"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||\"**\",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,\"**\"):this.off(b,a||\"**\",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,\"lastToggle\"+a.guid)||0)%d;return p._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!=\"string\")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,\"$1\"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c===\"input\"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c===\"input\"||c===\"button\")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L,\" \");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir===\"parentNode\",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+\" \"+g+\" \",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i==\"string\"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||\"*\",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[\" \"],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join(\"\").replace(L,\"$1\"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(\"\"))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u=\"0\",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG(\"*\",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type===\"ID\"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,\"\"),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,\"\"),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join(\"\");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n=\"undefined\",o=(\"sizcache\"+Math.random()).replace(\".\",\"\"),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",F=\"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",G=F.replace(\"w\",\"w#\"),H=\"([*^$|!~]?=)\",I=\"\\\\[\"+E+\"*(\"+F+\")\"+E+\"*(?:\"+H+E+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+G+\")|)|)\"+E+\"*\\\\]\",J=\":(\"+F+\")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\"+I+\")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",K=\":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+E+\"*((?:-\\\\d)?\\\\d*)\"+E+\"*\\\\)|)(?=[^-]|$)\",L=new RegExp(\"^\"+E+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+E+\"+$\",\"g\"),M=new RegExp(\"^\"+E+\"*,\"+E+\"*\"),N=new RegExp(\"^\"+E+\"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\"+E+\"*\"),O=new RegExp(J),P=/^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,Q=/^:not/,R=/[\\x20\\t\\r\\n\\f]*[+~]/,S=/:not\\($/,T=/h\\d/i,U=/input|select|textarea|button/i,V=/\\\\(?!\\\\)/g,W={ID:new RegExp(\"^#(\"+F+\")\"),CLASS:new RegExp(\"^\\\\.(\"+F+\")\"),NAME:new RegExp(\"^\\\\[name=['\\\"]?(\"+F+\")['\\\"]?\\\\]\"),TAG:new RegExp(\"^(\"+F.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+I),PSEUDO:new RegExp(\"^\"+J),POS:new RegExp(K,\"i\"),CHILD:new RegExp(\"^:(only|nth|first|last)-child(?:\\\\(\"+E+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+E+\"*(?:([+-]|)\"+E+\"*(\\\\d+)|))\"+E+\"*\\\\)|)\",\"i\"),needsContext:new RegExp(\"^\"+E+\"*[>+~]|\"+K,\"i\")},X=function(a){var b=r.createElement(\"div\");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),Z=X(function(a){return a.innerHTML=\"<a href='#'></a>\",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute(\"href\")===\"#\"}),$=X(function(a){a.innerHTML=\"<select></select>\";var b=typeof a.lastChild.getAttribute(\"multiple\");return b!==\"boolean\"&&b!==\"string\"}),_=X(function(a){return a.innerHTML=\"<div class='hidden e'></div><div class='hidden'></div>\",!a.getElementsByClassName||!a.getElementsByClassName(\"e\").length?!1:(a.lastChild.className=\"e\",a.getElementsByClassName(\"e\").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML=\"<a name='\"+o+\"'></a><div name='\"+o+\"'></div>\",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c=\"\",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent==\"string\")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!==\"HTML\":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]==\"boolean\"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute(\"href\",2)},type:function(a){return a.getAttribute(\"type\")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode(\"id\").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a===\"*\"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,\"\"),a[3]=(a[4]||a[5]||\"\").replace(V,\"\"),a[2]===\"~=\"&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]===\"nth\"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]===\"even\"||a[2]===\"odd\")),a[4]=+(a[6]+a[7]||a[2]===\"odd\")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(\")\",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,\"\"),function(b){return b.getAttribute(\"id\")===a}}:function(a){return a=a.replace(V,\"\"),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode(\"id\");return c&&c.value===a}},TAG:function(a){return a===\"*\"?function(){return!0}:(a=a.replace(V,\"\").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp(\"(^|\"+E+\")\"+a+\"(\"+E+\"|$)\"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute(\"class\")||\"\")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b===\"!=\":b?(f+=\"\",b===\"=\"?f===c:b===\"!=\"?f!==c:b===\"^=\"?c&&f.indexOf(c)===0:b===\"*=\"?c&&f.indexOf(c)>-1:b===\"$=\"?c&&f.substr(f.length-c.length)===c:b===\"~=\"?(\" \"+f+\" \").indexOf(c)>-1:b===\"|=\"?f===c||f.substr(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d){return a===\"nth\"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case\"only\":case\"first\":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a===\"first\")return!0;c=b;case\"last\":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error(\"unsupported pseudo: \"+a);return d[o]?d(b):d.length>1?(c=[a,a,\"\",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,\"$1\"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"&&!!a.checked||b===\"option\"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>\"@\"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()===\"input\"&&(b=a.type)===\"text\"&&((c=a.getAttribute(\"type\"))==null||c.toLowerCase()===b)},radio:bd(\"radio\"),checkbox:bd(\"checkbox\"),file:bd(\"file\"),password:bd(\"password\"),image:bd(\"image\"),submit:be(\"submit\"),reset:be(\"reset\"),button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"&&a.type===\"button\"||b===\"button\"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\\\/g,d=/\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,e=[\":focus\"],f=[\":active\",\":focus\"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML=\"<select><option selected=''></option></select>\",a.querySelectorAll(\"[selected]\").length||e.push(\"\\\\[\"+E+\"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\"),a.querySelectorAll(\":checked\").length||e.push(\":checked\")}),X(function(a){a.innerHTML=\"<p test=''></p>\",a.querySelectorAll(\"[test^='']\").length&&e.push(\"[*^$]=\"+E+\"*(?:\\\"\\\"|'')\"),a.innerHTML=\"<input type='hidden'/>\",a.querySelectorAll(\":enabled\").length||e.push(\":enabled\",\":disabled\")}),e=new RegExp(e.join(\"|\")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!==\"object\"){i=bh(a),(k=d.getAttribute(\"id\"))?l=k.replace(c,\"\\\\$&\"):d.setAttribute(\"id\",l),l=\"[id='\"+l+\"'] \",j=i.length;while(j--)i[j]=l+i[j].join(\"\");m=R.test(a)&&d.parentNode||d,n=i.join(\",\")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute(\"id\")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,\"div\");try{h.call(b,\"[test!='']:sizzle\"),f.push(\"!=\",J)}catch(c){}}),f=new RegExp(f.join(\"|\")),bc.matchesSelector=function(b,c){c=c.replace(d,\"='$1']\");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[\":\"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\\[\\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!=\"string\")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack(\"\",\"find\",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(bj(this,a,!0),\"filter\",a)},is:function(a){return!!a&&(typeof a==\"string\"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!=\"string\"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,\"closest\",a)},index:function(a){return a?typeof a==\"string\"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a==\"string\"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return p.dir(a,\"parentNode\",c)},next:function(a){return bi(a,\"nextSibling\")},prev:function(a){return bi(a,\"previousSibling\")},nextAll:function(a){return p.dir(a,\"nextSibling\")},prevAll:function(a){return p.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return p.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return p.dir(a,\"previousSibling\",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d==\"string\"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(\",\"))}}),p.extend({filter:function(a,b,c){return c&&(a=\":not(\"+a+\")\"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",bm=/ jQuery\\d+=\"(?:null|\\d+)\"/g,bn=/^\\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,bp=/<([\\w:]+)/,bq=/<tbody/i,br=/<|&#?\\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp(\"<(?:\"+bl+\")[\\\\s/>]\",\"i\"),bv=/^(?:checkbox|radio)$/,bw=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bx=/\\/(java|ecma)script/i,by=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,bz={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],area:[1,\"<map>\",\"</map>\"],_default:[0,\"\",\"\"]},bA=bk(e),bB=bA.appendChild(e.createElement(\"div\"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,\"X<div>\",\"</div>\"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,\"body\")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),\"before\",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),\"after\",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName(\"*\")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName(\"*\"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,\"\"):b;if(typeof a==\"string\"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(bo,\"<$1></$2>\");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),\"replaceWith\",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!=\"string\"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j==\"string\"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,\"tr\");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],\"table\")?bC(this[i],\"tbody\"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0}):p.error(\"no ajax\"):p.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(by,\"\")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i==\"string\"&&i.length<512&&c===e&&i.charAt(0)===\"<\"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test(\"<\"+a.nodeName+\">\")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment==\"undefined\")b=e;for(f=0;(h=a[f])!=null;f++){typeof h==\"number\"&&(h+=\"\");if(!h)continue;if(typeof h==\"string\")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement(\"div\"),s.appendChild(l),h=h.replace(bo,\"<$1></$2>\"),i=(bp.exec(h)||[\"\",\"\"])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i===\"table\"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===\"<table>\"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],\"tbody\")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,\"input\")?bG(h):typeof h.getElementsByTagName!=\"undefined\"&&p.grep(h.getElementsByTagName(\"input\"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,\"script\")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!=\"undefined\"&&(r=p.grep(p.merge([],h.getElementsByTagName(\"script\")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \\/]([\\w.]+)/.exec(a)||/(webkit)[ \\/]([\\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(a)||/(msie) ([\\w.]+)/.exec(a)||a.indexOf(\"compatible\")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\\([^)]*\\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp(\"^(\"+q+\")(.*)$\",\"i\"),bQ=new RegExp(\"^(\"+q+\")(?!px)[a-z%]+$\",\"i\"),bR=new RegExp(\"^([-+])=(\"+q+\")\",\"i\"),bS={},bT={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bU={letterSpacing:0,fontWeight:400},bV=[\"Top\",\"Right\",\"Bottom\",\"Left\"],bW=[\"Webkit\",\"O\",\"Moz\",\"ms\"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a==\"boolean\";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,\"opacity\");return c===\"\"?\"1\":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":p.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&\"get\"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g===\"string\"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g=\"number\");if(d==null||g===\"number\"&&isNaN(d))return;g===\"number\"&&!p.cssNumber[i]&&(d+=\"px\");if(!h||!(\"set\"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&\"get\"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f===\"normal\"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===\"\"&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b===\"fontSize\"?\"1em\":e,e=f.pixelLeft+\"px\",f.left=c,d&&(a.runtimeStyle.left=d)),e===\"\"?\"auto\":e}),p.each([\"height\",\"width\"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,\"display\"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,\"boxSizing\")===\"border-box\"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",f=d&&d.filter||c.filter||\"\";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,\"\"))===\"\"&&c.removeAttribute){c.removeAttribute(\"filter\");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+\" \"+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:\"inline-block\"},function(){if(b)return bH(a,\"marginRight\")})}}),!p.support.pixelPosition&&p.fn.position&&p.each([\"top\",\"left\"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+\"px\":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,\"display\"))===\"none\"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\\[\\]$/,cf=/\\r?\\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,\"\\r\\n\")}}):{name:b.name,value:c.replace(cf,\"\\r\\n\")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?\"\":b,e[e.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join(\"&\").replace(cd,\"+\")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,cn=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\\/\\//,cq=/\\?/,cr=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=[\"*/\"]+[\"*\"];try{ck=f.href}catch(cy){ck=e.createElement(\"a\"),ck.href=\"\",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!=\"string\"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(\" \");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c==\"object\"&&(f=\"POST\"),p.ajax({url:a,type:f,dataType:\"html\",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p(\"<div>\").append(a.replace(cr,\"\")).find(e):a)}),this},p.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each([\"get\",\"post\"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,\"script\")},getJSON:function(a,b,c){return p.get(a,b,c,\"json\")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":p.parseJSON,\"text xml\":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||\"\",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader(\"Last-Modified\"),w&&(p.lastModified[d]=w),w=x.getResponseHeader(\"Etag\"),w&&(p.etag[d]=w)),a===304?(y=\"notmodified\",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y=\"error\",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+\"\",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger(\"ajax\"+(k?\"Success\":\"Error\"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger(\"ajaxComplete\",[x,l]),--p.active||p.event.trigger(\"ajaxStop\"))}typeof a==\"object\"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks(\"once memory\"),r=l.statusCode||{},t={},u={},v=0,w=\"canceled\",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+\"\").replace(cl,\"\").replace(cp,cj[1]+\"//\"),l.dataTypes=p.trim(l.dataType||\"*\").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(\":\")+(i[3]?\"\":i[1]===\"http:\"?80:443)!==cj.join(\":\")+(cj[3]?\"\":cj[1]===\"http:\"?80:443)),l.data&&l.processData&&typeof l.data!=\"string\"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger(\"ajaxStart\");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?\"&\":\"?\")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,\"$1_=\"+z);l.url=A+(A===l.url?(cq.test(l.url)?\"&\":\"?\")+\"_=\"+z:\"\")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader(\"Content-Type\",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader(\"If-Modified-Since\",p.lastModified[d]),p.etag[d]&&x.setRequestHeader(\"If-None-Match\",p.etag[d])),x.setRequestHeader(\"Accept\",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!==\"*\"?\", \"+cx+\"; q=0.01\":\"\"):l.accepts[\"*\"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w=\"abort\";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,\"No Transport\");else{x.readyState=1,j&&n.trigger(\"ajaxSend\",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort(\"timeout\")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\\?/,cG=/(=)\\?(?=&|$)|\\?\\?/,cH=p.now();p.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=cE.pop()||p.expando+\"_\"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter(\"json jsonp\",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i==\"string\"&&!(c.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&cG.test(i);if(c.dataTypes[0]===\"jsonp\"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,\"$1\"+f):m?c.data=i.replace(cG,\"$1\"+f):k&&(c.url+=(cF.test(j)?\"&\":\"?\")+c.jsonp+\"=\"+f),c.converters[\"script json\"]=function(){return h||p.error(f+\" was not called\"),h[0]},c.dataTypes[0]=\"json\",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),\"script\"}),p.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter(\"script\",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\",a.global=!1)}),p.ajaxTransport(\"script\",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName(\"head\")[0]||e.documentElement;return{send:function(f,g){c=e.createElement(\"script\"),c.async=\"async\",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,\"success\")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&\"withCredentials\"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e[\"X-Requested-With\"]&&(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=\"\"}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp(\"^(?:([-+])=|)(\"+q+\")([a-z%]*)$\",\"i\"),cR=/queueHooks$/,cS=[cY],cT={\"*\":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?\"\":\"px\");if(d!==\"px\"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||\".5\",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?\"\":\"px\")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,\"\"),!b||b===\"auto\"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d==\"boolean\"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!=\"string\"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,c=a!=null&&a+\"queueHooks\",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$(\"show\"),slideUp:c$(\"hide\"),slideToggle:c$(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a==\"object\"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!=\"undefined\"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,\"marginTop\"))||0,c+=parseFloat(p.css(a,\"marginLeft\"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,\"position\");d===\"static\"&&(a.style.position=\"relative\");var e=p(a),f=e.offset(),g=p.css(a,\"top\"),h=p.css(a,\"left\"),i=(d===\"absolute\"||d===\"fixed\")&&p.inArray(\"auto\",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),\"using\"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,\"marginTop\"))||0,c.left-=parseFloat(p.css(a,\"marginLeft\"))||0,d.top+=parseFloat(p.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(p.css(b[0],\"borderLeftWidth\"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,\"position\")===\"static\")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:\"height\",Width:\"width\"},function(a,c){p.each({padding:\"inner\"+a,content:c,\"\":\"outer\"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!=\"boolean\"),h=d||(e===!0||f===!0?\"margin\":\"border\");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement[\"client\"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body[\"scroll\"+a],f[\"scroll\"+a],c.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define==\"function\"&&define.amd&&define.amd.jQuery&&define(\"jquery\",[],function(){return p})})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/DataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\trequire('core.columns.js');\n\t\trequire('core.data.js');\n\t\trequire('core.draw.js');\n\t\trequire('core.ajax.js');\n\t\trequire('core.filter.js');\n\t\trequire('core.info.js');\n\t\trequire('core.init.js');\n\t\trequire('core.length.js');\n\t\trequire('core.page.js');\n\t\trequire('core.processing.js');\n\t\trequire('core.scrolling.js');\n\t\trequire('core.sizing.js');\n\t\trequire('core.sort.js');\n\t\trequire('core.state.js');\n\t\trequire('core.support.js');\n\n\t\trequire('api.methods.js');\n\t\trequire('api.internal.js');\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\trequire('core.constructor.js');\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\trequire('api.static.js');\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\trequire('model.ext.js');\n\trequire('model.search.js');\n\trequire('model.row.js');\n\trequire('model.column.js');\n\trequire('model.defaults.js');\n\trequire('model.defaults.columns.js');\n\trequire('model.settings.js');\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\trequire('ext.classes.js');\n\trequire('ext.paging.js');\n\trequire('ext.sorting.js');\n\trequire('ext.types.js');\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.internal.js",
    "content": "\n/*\n * This is really a good bit rubbish this method of exposing the internal methods\n * publicly... - To be fixed in 2.0 using methods on the prototype\n */\n\n\n/**\n * Create a wrapper function for exporting an internal functions to an external API.\n *  @param {string} sFunc API function name\n *  @returns {function} wrapped function\n *  @memberof DataTable#oApi\n */\nfunction _fnExternApiFunc (sFunc)\n{\n\treturn function() {\n\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\tArray.prototype.slice.call(arguments) );\n\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t};\n}\n\n\n/**\n * Reference to internal functions for use by plug-in developers. Note that these\n * methods are references to internal functions and are considered to be private.\n * If you use these methods, be aware that they are liable to change between versions\n * (check the upgrade notes).\n *  @namespace\n */\nthis.oApi = {\n\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\"_fnInitialise\": _fnInitialise,\n\t\"_fnInitComplete\": _fnInitComplete,\n\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\"_fnAddColumn\": _fnAddColumn,\n\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\"_fnAddData\": _fnAddData,\n\t\"_fnCreateTr\": _fnCreateTr,\n\t\"_fnGatherData\": _fnGatherData,\n\t\"_fnBuildHead\": _fnBuildHead,\n\t\"_fnDrawHead\": _fnDrawHead,\n\t\"_fnDraw\": _fnDraw,\n\t\"_fnReDraw\": _fnReDraw,\n\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\"_fnServerParams\": _fnServerParams,\n\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\"_fnFilter\": _fnFilter,\n\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\"_fnSort\": _fnSort,\n\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\"_fnPageChange\": _fnPageChange,\n\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\"_fnStringToCss\": _fnStringToCss,\n\t\"_fnDetectType\": _fnDetectType,\n\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\"_fnLog\": _fnLog,\n\t\"_fnClearTable\": _fnClearTable,\n\t\"_fnSaveState\": _fnSaveState,\n\t\"_fnLoadState\": _fnLoadState,\n\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\"_fnReadCookie\": _fnReadCookie,\n\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\"_fnMap\": _fnMap,\n\t\"_fnGetRowData\": _fnGetRowData,\n\t\"_fnGetCellData\": _fnGetCellData,\n\t\"_fnSetCellData\": _fnSetCellData,\n\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\"_fnBindAction\": _fnBindAction,\n\t\"_fnExtend\": _fnExtend,\n\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\"_fnJsonString\": _fnJsonString,\n\t\"_fnRender\": _fnRender,\n\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\"_fnGetColumns\": _fnGetColumns\n};\n\n$.extend( DataTable.ext.oApi, this.oApi );\n\nfor ( var sFunc in DataTable.ext.oApi )\n{\n\tif ( sFunc )\n\t{\n\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.methods.js",
    "content": "/**\n * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n * return the resulting jQuery object.\n *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n *    criterion (\"applied\") or all TR elements (i.e. no filter).\n *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n *    Can be either 'current', whereby the current sorting of the table is used, or\n *    'original' whereby the original order the data was read into the table is used.\n *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n *    'current' and filter is 'applied', regardless of what they might be given as.\n *  @returns {object} jQuery object, filtered by the given selector.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Highlight every second row\n *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n *    } );\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Filter to rows with 'Webkit' in them, add a background colour and then\n *      // remove the filter, thus highlighting the 'Webkit' rows only.\n *      oTable.fnFilter('Webkit');\n *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n *      oTable.fnFilter('');\n *    } );\n */\nthis.$ = function ( sSelector, oOpts )\n{\n\tvar i, iLen, a = [], tr;\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar aoData = oSettings.aoData;\n\tvar aiDisplay = oSettings.aiDisplay;\n\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\n\tif ( !oOpts )\n\t{\n\t\toOpts = {};\n\t}\n\n\toOpts = $.extend( {}, {\n\t\t\"filter\": \"none\", // applied\n\t\t\"order\": \"current\", // \"original\"\n\t\t\"page\": \"all\" // current\n\t}, oOpts );\n\n\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t// senseless otherwise\n\tif ( oOpts.page == 'current' )\n\t{\n\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t{\n\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t{\n\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t{\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ i ].nTr ;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t{\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ i ].nTr;\n\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t}\n\n\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t * to make the selector act like it would in a full table - so we need\n\t * to build both results and then combine them together\n\t */\n\tvar jqA = $(a);\n\tvar jqTRs = jqA.filter( sSelector );\n\tvar jqDescendants = jqA.find( sSelector );\n\n\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n};\n\n\n/**\n * Almost identical to $ in operation, but in this case returns the data for the matched\n * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n * rather than any descendants, so the data can be obtained for the row/cell. If matching\n * rows are found, the data returned is the original data array/object that was used to  \n * create the row (or a generated array if from a DOM source).\n *\n * This method is often useful in-combination with $ where both functions are given the\n * same parameters and the array indexes will match identically.\n *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n *    criterion (\"applied\") or all elements (i.e. no filter).\n *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n *    Can be either 'current', whereby the current sorting of the table is used, or\n *    'original' whereby the original order the data was read into the table is used.\n *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n *    'current' and filter is 'applied', regardless of what they might be given as.\n *  @returns {array} Data for the matched elements. If any elements, as a result of the\n *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n *    entry in the array.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Get the data from the first row in the table\n *      var data = oTable._('tr:first');\n *\n *      // Do something useful with the data\n *      alert( \"First cell is: \"+data[0] );\n *    } );\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Filter to 'Webkit' and get all data for \n *      oTable.fnFilter('Webkit');\n *      var data = oTable._('tr', {\"filter\": \"applied\"});\n *      \n *      // Do something with the data\n *      alert( data.length+\" rows matched the filter\" );\n *    } );\n */\nthis._ = function ( sSelector, oOpts )\n{\n\tvar aOut = [];\n\tvar i, iLen, iIndex;\n\tvar aTrs = this.$( sSelector, oOpts );\n\n\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t{\n\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t}\n\n\treturn aOut;\n};\n\n\n/**\n * Add a single new row or multiple rows of data to the table. Please note\n * that this is suitable for client-side processing only - if you are using \n * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n * must add it to the data source, i.e. the server-side, through an Ajax call.\n *  @param {array|object} mData The data to be added to the table. This can be:\n *    <ul>\n *      <li>1D array of data - add a single row with the data provided</li>\n *      <li>2D array of arrays - add multiple rows in a single call</li>\n *      <li>object - data object when using <i>mData</i></li>\n *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n *    </ul>\n *  @param {bool} [bRedraw=true] redraw the table or not\n *  @returns {array} An array of integers, representing the list of indexes in \n *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n *    the table.\n *  @dtopt API\n *\n *  @example\n *    // Global var for counter\n *    var giCount = 2;\n *    \n *    $(document).ready(function() {\n *      $('#example').dataTable();\n *    } );\n *    \n *    function fnClickAddRow() {\n *      $('#example').dataTable().fnAddData( [\n *        giCount+\".1\",\n *        giCount+\".2\",\n *        giCount+\".3\",\n *        giCount+\".4\" ]\n *      );\n *        \n *      giCount++;\n *    }\n */\nthis.fnAddData = function( mData, bRedraw )\n{\n\tif ( mData.length === 0 )\n\t{\n\t\treturn [];\n\t}\n\t\n\tvar aiReturn = [];\n\tvar iTest;\n\t\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\t/* Check if we want to add multiple rows or not */\n\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t{\n\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t{\n\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\tif ( iTest == -1 )\n\t\t\t{\n\t\t\t\treturn aiReturn;\n\t\t\t}\n\t\t\taiReturn.push( iTest );\n\t\t}\n\t}\n\telse\n\t{\n\t\tiTest = _fnAddData( oSettings, mData );\n\t\tif ( iTest == -1 )\n\t\t{\n\t\t\treturn aiReturn;\n\t\t}\n\t\taiReturn.push( iTest );\n\t}\n\t\n\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n\treturn aiReturn;\n};\n\n\n/**\n * This function will make DataTables recalculate the column sizes, based on the data \n * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n * through the sWidth parameter). This can be useful when the width of the table's \n * parent element changes (for example a window resize).\n *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable( {\n *        \"sScrollY\": \"200px\",\n *        \"bPaginate\": false\n *      } );\n *      \n *      $(window).bind('resize', function () {\n *        oTable.fnAdjustColumnSizing();\n *      } );\n *    } );\n */\nthis.fnAdjustColumnSizing = function ( bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t_fnAdjustColumnSizing( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\tthis.fnDraw( false );\n\t}\n\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t{\n\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\tthis.oApi._fnScrollDraw(oSettings);\n\t}\n};\n\n\n/**\n * Quickly and simply clear a table\n *  @param {bool} [bRedraw=true] redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n *      oTable.fnClearTable();\n *    } );\n */\nthis.fnClearTable = function( bRedraw )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t_fnClearTable( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnDraw( oSettings );\n\t}\n};\n\n\n/**\n * The exact opposite of 'opening' a row, this function will close any rows which \n * are currently 'open'.\n *  @param {node} nTr the table row to 'close'\n *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnClose = function( nTr )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t{\n\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t{\n\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\tif ( nTrParent )\n\t\t\t{\n\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t}\n\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\treturn 0;\n\t\t}\n\t}\n\treturn 1;\n};\n\n\n/**\n * Remove a row for the table\n *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n *    the TR element you want to delete\n *  @param {function|null} [fnCallBack] Callback function\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @returns {array} The row that was deleted\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Immediately remove the first row\n *      oTable.fnDeleteRow( 0 );\n *    } );\n */\nthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen, iAODataIndex;\n\t\n\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\n\t/* Return the data array from this row */\n\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\n\t/* Update the _DT_RowIndex parameter */\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t{\n\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t}\n\t}\n\t\n\t/* Remove the target row from the search array */\n\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\n\t/* Delete from the display arrays */\n\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\n\t/* If there is a user callback function - call it */\n\tif ( typeof fnCallBack === \"function\" )\n\t{\n\t\tfnCallBack.call( this, oSettings, oData );\n\t}\n\t\n\t/* Check for an 'overflow' they case for displaying the table */\n\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t{\n\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\treturn oData;\n};\n\n\n/**\n * Restore the table to it's original state in the DOM by removing all of DataTables \n * enhancements, alterations to the DOM structure of the table and event listeners.\n *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n *      var oTable = $('#example').dataTable();\n *      oTable.fnDestroy();\n *    } );\n */\nthis.fnDestroy = function ( bRemove )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\tvar nBody = oSettings.nTBody;\n\tvar i, iLen;\n\n\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\n\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\toSettings.bDestroying = true;\n\t\n\t/* Fire off the destroy callbacks for plug-ins etc */\n\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\n\t/* If the table is not being removed, restore the hidden columns */\n\tif ( !bRemove )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t{\n\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Blitz all DT events */\n\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\n\t/* If there is an 'empty' indicator row, remove it */\n\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\n\t/* When scrolling we had to break the table up - restore it */\n\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t{\n\t\t$(oSettings.nTable).children('thead').remove();\n\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t}\n\t\n\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t{\n\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t}\n\t\n\t/* Remove the DataTables generated nodes, events and classes */\n\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t$(oSettings.nTableWrapper).remove();\n\t\n\toSettings.aaSorting = [];\n\toSettings.aaSortingFixed = [];\n\t_fnSortingClasses( oSettings );\n\t\n\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\n\t$('th, td', oSettings.nTHead).removeClass( [\n\t\toSettings.oClasses.sSortable,\n\t\toSettings.oClasses.sSortableAsc,\n\t\toSettings.oClasses.sSortableDesc,\n\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t);\n\tif ( oSettings.bJUI )\n\t{\n\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\n\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\tvar kids = jqWrapper.contents();\n\t\t\t$(this).append( kids );\n\t\t\tjqWrapper.remove();\n\t\t} );\n\t}\n\t\n\t/* Add the TR elements back into the table in their original order */\n\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t{\n\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t}\n\telse if ( !bRemove )\n\t{\n\t\tnOrig.appendChild( oSettings.nTable );\n\t}\n\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t{\n\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t}\n\t}\n\t\n\t/* Restore the width of the original table */\n\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t{\n\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t}\n\t\n\t/* If the were originally stripe classes - then we add them back here. Note\n\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t * it's a good effort without getting carried away\n\t */\n\tiLen = oSettings.asDestroyStripes.length;\n\tif (iLen)\n\t{\n\t\tvar anRows = $(nBody).children('tr');\n\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t{\n\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t}\n\t}\n\t\n\t/* Remove the settings object from the settings array */\n\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t{\n\t\tif ( DataTable.settings[i] == oSettings )\n\t\t{\n\t\t\tDataTable.settings.splice( i, 1 );\n\t\t}\n\t}\n\t\n\t/* End it all */\n\toSettings = null;\n\toInit = null;\n};\n\n\n/**\n * Redraw the table\n *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n *      oTable.fnDraw();\n *    } );\n */\nthis.fnDraw = function( bComplete )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tif ( bComplete === false )\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\telse\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n};\n\n\n/**\n * Filter the input based on data\n *  @param {string} sInput String to filter the table on\n *  @param {int|null} [iColumn] Column to limit filtering to\n *  @param {bool} [bRegex=false] Treat as regular expression or not\n *  @param {bool} [bSmart=true] Perform smart filtering or not\n *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sometime later - filter...\n *      oTable.fnFilter( 'test string' );\n *    } );\n */\nthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( !oSettings.oFeatures.bFilter )\n\t{\n\t\treturn;\n\t}\n\t\n\tif ( bRegex === undefined || bRegex === null )\n\t{\n\t\tbRegex = false;\n\t}\n\t\n\tif ( bSmart === undefined || bSmart === null )\n\t{\n\t\tbSmart = true;\n\t}\n\t\n\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t{\n\t\tbShowGlobal = true;\n\t}\n\t\n\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t{\n\t\tbCaseInsensitive = true;\n\t}\n\t\n\tif ( iColumn === undefined || iColumn === null )\n\t{\n\t\t/* Global filter */\n\t\t_fnFilterComplete( oSettings, {\n\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\"bRegex\": bRegex,\n\t\t\t\"bSmart\": bSmart,\n\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t}, 1 );\n\t\t\n\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t{\n\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Single column filter */\n\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\"bRegex\": bRegex,\n\t\t\t\"bSmart\": bSmart,\n\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t} );\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t}\n};\n\n\n/**\n * Get the data for the whole table, an individual row or an individual cell based on the \n * provided parameters.\n *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n *    a TR node then the data source for the whole row will be returned. If given as a\n *    TD/TH cell node then iCol will be automatically calculated and the data for the\n *    cell returned. If given as an integer, then this is treated as the aoData internal\n *    data index for the row (see fnGetPosition) and the data for that row used.\n *  @param {int} [iCol] Optional column index that you want the data of.\n *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n *    returned. If mRow is defined, just data for that row, and is iCol is\n *    defined, only data for the designated cell is returned.\n *  @dtopt API\n *\n *  @example\n *    // Row data\n *    $(document).ready(function() {\n *      oTable = $('#example').dataTable();\n *\n *      oTable.$('tr').click( function () {\n *        var data = oTable.fnGetData( this );\n *        // ... do something with the array / object of data for the row\n *      } );\n *    } );\n *\n *  @example\n *    // Individual cell data\n *    $(document).ready(function() {\n *      oTable = $('#example').dataTable();\n *\n *      oTable.$('td').click( function () {\n *        var sData = oTable.fnGetData( this );\n *        alert( 'The cell clicked on had the value of '+sData );\n *      } );\n *    } );\n */\nthis.fnGetData = function( mRow, iCol )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( mRow !== undefined )\n\t{\n\t\tvar iRow = mRow;\n\t\tif ( typeof mRow === 'object' )\n\t\t{\n\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\tif (sNode === \"tr\" )\n\t\t\t{\n\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t}\n\t\t\telse if ( sNode === \"td\" )\n\t\t\t{\n\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t}\n\t\t}\n\n\t\tif ( iCol !== undefined )\n\t\t{\n\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t}\n\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\toSettings.aoData[iRow]._aData : null;\n\t}\n\treturn _fnGetDataMaster( oSettings );\n};\n\n\n/**\n * Get an array of the TR nodes that are used in the table's body. Note that you will \n * typically want to use the '$' API method in preference to this as it is more \n * flexible.\n *  @param {int} [iRow] Optional row index for the TR element you want\n *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n *    in the table's body, or iRow is defined, just the TR element requested.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Get the nodes from the table\n *      var nNodes = oTable.fnGetNodes( );\n *    } );\n */\nthis.fnGetNodes = function( iRow )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( iRow !== undefined ) {\n\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\toSettings.aoData[iRow].nTr : null;\n\t}\n\treturn _fnGetTrNodes( oSettings );\n};\n\n\n/**\n * Get the array indexes of a particular cell from it's DOM element\n * and column index including hidden columns\n *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n *    if given as a cell, an array of [row index, column index (visible), \n *    column index (all)] is given.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      $('#example tbody td').click( function () {\n *        // Get the position of the current data from the node\n *        var aPos = oTable.fnGetPosition( this );\n *        \n *        // Get the data array for this row\n *        var aData = oTable.fnGetData( aPos[0] );\n *        \n *        // Update the data array and return the value\n *        aData[ aPos[1] ] = 'clicked';\n *        this.innerHTML = 'clicked';\n *      } );\n *      \n *      // Init DataTables\n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnGetPosition = function( nNode )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\n\tif ( sNodeName == \"TR\" )\n\t{\n\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t}\n\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t{\n\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t}\n\treturn null;\n};\n\n\n/**\n * Check to see if a row is 'open' or not.\n *  @param {node} nTr the table row to check\n *  @returns {boolean} true if the row is currently open, false otherwise\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnIsOpen = function( nTr )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\n\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t{\n\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n\n/**\n * This function will place a new row directly after a row which is currently \n * on display on the page, with the HTML contents that is passed into the \n * function. This can be used, for example, to ask for confirmation that a \n * particular record should be deleted.\n *  @param {node} nTr The table row to 'open'\n *  @param {string|node|jQuery} mHtml The HTML to put into the row\n *  @param {string} sClass Class to give the new TD cell\n *  @returns {node} The row opened. Note that if the table row passed in as the\n *    first parameter, is not found in the table, this method will silently\n *    return.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnOpen = function( nTr, mHtml, sClass )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\n\t/* Check that the row given is in the table */\n\tvar nTableRows = _fnGetTrNodes( oSettings );\n\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* the old open one if there is one */\n\tthis.fnClose( nTr );\n\t\n\tvar nNewRow = document.createElement(\"tr\");\n\tvar nNewCell = document.createElement(\"td\");\n\tnNewRow.appendChild( nNewCell );\n\tnNewCell.className = sClass;\n\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\n\tif (typeof mHtml === \"string\")\n\t{\n\t\tnNewCell.innerHTML = mHtml;\n\t}\n\telse\n\t{\n\t\t$(nNewCell).html( mHtml );\n\t}\n\n\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\tvar nTrs = $('tr', oSettings.nTBody);\n\tif ( $.inArray(nTr, nTrs) != -1  )\n\t{\n\t\t$(nNewRow).insertAfter(nTr);\n\t}\n\t\n\toSettings.aoOpenRows.push( {\n\t\t\"nTr\": nNewRow,\n\t\t\"nParent\": nTr\n\t} );\n\t\n\treturn nNewRow;\n};\n\n\n/**\n * Change the pagination - provides the internal logic for pagination in a simple API \n * function. With this function you can have a DataTables table go to the next, \n * previous, first or last pages.\n *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n *    or page number to jump to (integer), note that page 0 is the first page.\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      oTable.fnPageChange( 'next' );\n *    } );\n */\nthis.fnPageChange = function ( mAction, bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t_fnPageChange( oSettings, mAction );\n\t_fnCalculateEnd( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnDraw( oSettings );\n\t}\n};\n\n\n/**\n * Show a particular column\n *  @param {int} iCol The column whose display should be changed\n *  @param {bool} bShow Show (true) or hide (false) the column\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Hide the second column after initialisation\n *      oTable.fnSetColumnVis( 1, false );\n *    } );\n */\nthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen;\n\tvar aoColumns = oSettings.aoColumns;\n\tvar aoData = oSettings.aoData;\n\tvar nTd, bAppend, iBefore;\n\t\n\t/* No point in doing anything if we are requesting what is already true */\n\tif ( aoColumns[iCol].bVisible == bShow )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Show the column */\n\tif ( bShow )\n\t{\n\t\tvar iInsert = 0;\n\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t{\n\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tiInsert++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\n\t\t/* Which coloumn should we be inserting before? */\n\t\tif ( !bAppend )\n\t\t{\n\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiBefore = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tif ( bAppend )\n\t\t\t\t{\n\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Remove a column from display */\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Clear to set the visible flag */\n\taoColumns[iCol].bVisible = bShow;\n\n\t/* Redraw the header and footer based on the new column visibility */\n\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\tif ( oSettings.nTFoot )\n\t{\n\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t}\n\t\n\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t}\n\t\n\t/* Do a redraw incase anything depending on the table columns needs it \n\t * (built-in: scrolling) \n\t */\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnAdjustColumnSizing( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\t_fnSaveState( oSettings );\n};\n\n\n/**\n * Get the settings for a particular table for external manipulation\n *  @returns {object} DataTables settings object. See \n *    {@link DataTable.models.oSettings}\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      var oSettings = oTable.fnSettings();\n *      \n *      // Show an example parameter from the settings\n *      alert( oSettings._iDisplayStart );\n *    } );\n */\nthis.fnSettings = function()\n{\n\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n};\n\n\n/**\n * Sort the table by a particular column\n *  @param {int} iCol the data index to sort on. Note that this will not match the \n *    'display index' if you have hidden data entries\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sort immediately with columns 0 and 1\n *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n *    } );\n */\nthis.fnSort = function( aaSort )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\toSettings.aaSorting = aaSort;\n\t_fnSort( oSettings );\n};\n\n\n/**\n * Attach a sort listener to an element for a given column\n *  @param {node} nNode the element to attach the sort listener to\n *  @param {int} iColumn the column that a click on this node will sort on\n *  @param {function} [fnCallback] callback function when sort is run\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sort on column 1, when 'sorter' is clicked on\n *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n *    } );\n */\nthis.fnSortListener = function( nNode, iColumn, fnCallback )\n{\n\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t \tfnCallback );\n};\n\n\n/**\n * Update a table cell or row - this method will accept either a single value to\n * update the cell with, an array of values with one element for each column or\n * an object in the same format as the original data source. The function is\n * self-referencing in order to make the multi column updates easier.\n *  @param {object|array|string} mData Data to update the cell/row with\n *  @param {node|int} mRow TR element you want to update or the aoData index\n *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @param {bool} [bAction=true] Perform pre-draw actions or not\n *  @returns {int} 0 on success, 1 on error\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n *    } );\n */\nthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen, sDisplay;\n\tvar iRow = (typeof mRow === 'object') ? \n\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\n\tif ( $.isArray(mData) && iColumn === undefined )\n\t{\n\t\t/* Array update - update the whole row */\n\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\n\t\t/* Flag to the function that we are recursing */\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t}\n\t}\n\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t{\n\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Individual cell update */\n\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\n\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\tif ( oCol.fnRender !== null )\n\t\t{\n\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\tif ( oCol.bUseRendered )\n\t\t\t{\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t{\n\t\t\t/* Do the actual HTML update */\n\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t}\n\t}\n\t\n\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t */\n\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\toSettings, \n\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t);\n\t\n\t/* Perform pre-draw actions */\n\tif ( bAction === undefined || bAction )\n\t{\n\t\t_fnAdjustColumnSizing( oSettings );\n\t}\n\t\n\t/* Redraw the table */\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n\treturn 0;\n};\n\n\n/**\n * Provide a common method for plug-ins to check the version of DataTables being used, in order\n * to ensure compatibility.\n *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n *    formats \"X\" and \"X.Y\" are also acceptable.\n *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n *    version, or false if this version of DataTales is not suitable\n *  @method\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n *    } );\n */\nthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.static.js",
    "content": "\n\n/**\n * Provide a common method for plug-ins to check the version of DataTables being used, in order\n * to ensure compatibility.\n *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n *    formats \"X\" and \"X.Y\" are also acceptable.\n *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n *    version, or false if this version of DataTales is not suitable\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n */\nDataTable.fnVersionCheck = function( sVersion )\n{\n\t/* This is cheap, but effective */\n\tvar fnZPad = function (Zpad, count)\n\t{\n\t\twhile(Zpad.length < count) {\n\t\t\tZpad += '0';\n\t\t}\n\t\treturn Zpad;\n\t};\n\tvar aThis = DataTable.ext.sVersion.split('.');\n\tvar aThat = sVersion.split('.');\n\tvar sThis = '', sThat = '';\n\t\n\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t{\n\t\tsThis += fnZPad( aThis[i], 3 );\n\t\tsThat += fnZPad( aThat[i], 3 );\n\t}\n\t\n\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n};\n\n\n/**\n * Check if a TABLE node is a DataTable table already or not.\n *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n *    node types can be passed in, but will always return false).\n *  @returns {boolean} true the table given is a DataTable, or false otherwise\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    var ex = document.getElementById('example');\n *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n *      $(ex).dataTable();\n *    }\n */\nDataTable.fnIsDataTable = function ( nTable )\n{\n\tvar o = DataTable.settings;\n\n\tfor ( var i=0 ; i<o.length ; i++ )\n\t{\n\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get all DataTable tables that have been initialised - optionally you can select to\n * get only currently visible tables.\n *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n *    visible tables only.\n *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    var table = $.fn.dataTable.fnTables(true);\n *    if ( table.length > 0 ) {\n *      $(table).dataTable().fnAdjustColumnSizing();\n *    }\n */\nDataTable.fnTables = function ( bVisible )\n{\n\tvar out = [];\n\n\tjQuery.each( DataTable.settings, function (i, o) {\n\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t{\n\t\t\tout.push( o.nTable );\n\t\t}\n\t} );\n\n\treturn out;\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.ajax.js",
    "content": "\n\n/**\n * Update the table using an Ajax call\n *  @param {object} oSettings dataTables settings object\n *  @returns {boolean} Block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdate( oSettings )\n{\n\tif ( oSettings.bAjaxDataGet )\n\t{\n\t\toSettings.iDraw++;\n\t\t_fnProcessingDisplay( oSettings, true );\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t_fnServerParams( oSettings, aoData );\n\t\t\n\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\tfunction(json) {\n\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t}, oSettings );\n\t\treturn false;\n\t}\n\telse\n\t{\n\t\treturn true;\n\t}\n}\n\n\n/**\n * Build up the parameters in an object needed for a server-side processing request\n *  @param {object} oSettings dataTables settings object\n *  @returns {bool} block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxParameters( oSettings )\n{\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\tvar i, j;\n\t\n\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\toSettings._iDisplayLength : -1 } );\n\t\t\n\tfor ( i=0 ; i<iColumns ; i++ )\n\t{\n\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t}\n\t\n\t/* Filtering */\n\tif ( oSettings.oFeatures.bFilter !== false )\n\t{\n\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t{\n\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t}\n\t}\n\t\n\t/* Sorting */\n\tif ( oSettings.oFeatures.bSort !== false )\n\t{\n\t\tvar iCounter = 0;\n\n\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\toSettings.aaSorting.slice();\n\t\t\n\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t{\n\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\n\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\tiCounter++;\n\t\t\t}\n\t\t}\n\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\n\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t{\n\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t}\n\t}\n\t\n\treturn aoData;\n}\n\n\n/**\n * Add Ajax parameters from plug-ins\n *  @param {object} oSettings dataTables settings object\n *  @param array {objects} aoData name/value pairs to send to the server\n *  @memberof DataTable#oApi\n */\nfunction _fnServerParams( oSettings, aoData )\n{\n\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n}\n\n\n/**\n * Data the data from the server (nuking the old) and redraw the table\n *  @param {object} oSettings dataTables settings object\n *  @param {object} json json data return from the server.\n *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n *  @param {array} json.aaData The data to display on this page\n *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdateDraw ( oSettings, json )\n{\n\tif ( json.sEcho !== undefined )\n\t{\n\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t * very fast interaction, and later queries are completed much faster\n\t\t */\n\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t}\n\t}\n\t\n\tif ( !oSettings.oScroll.bInfinite ||\n\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t{\n\t\t_fnClearTable( oSettings );\n\t}\n\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\n\t/* Determine if reordering is required */\n\tvar sOrdering = _fnColumnOrdering(oSettings);\n\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\tvar aiIndex;\n\tif ( bReOrder )\n\t{\n\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t}\n\t\n\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( bReOrder )\n\t\t{\n\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\tvar aDataSorted = [];\n\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t}\n\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t}\n\t}\n\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\n\toSettings.bAjaxDataGet = false;\n\t_fnDraw( oSettings );\n\toSettings.bAjaxDataGet = true;\n\t_fnProcessingDisplay( oSettings, false );\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.columns.js",
    "content": "\n\n/**\n * Add a column to the list used for the table with default values\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nTh The th element for this column\n *  @memberof DataTable#oApi\n */\nfunction _fnAddColumn( oSettings, nTh )\n{\n\tvar oDefaults = DataTable.defaults.columns;\n\tvar iCol = oSettings.aoColumns.length;\n\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t} );\n\toSettings.aoColumns.push( oCol );\n\t\n\t/* Add a column specific filter */\n\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t{\n\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t}\n\telse\n\t{\n\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\n\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\tif ( oPre.bRegex === undefined )\n\t\t{\n\t\t\toPre.bRegex = true;\n\t\t}\n\t\t\n\t\tif ( oPre.bSmart === undefined )\n\t\t{\n\t\t\toPre.bSmart = true;\n\t\t}\n\t\t\n\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t{\n\t\t\toPre.bCaseInsensitive = true;\n\t\t}\n\t}\n\t\n\t/* Use the column options function to initialise classes etc */\n\t_fnColumnOptions( oSettings, iCol, null );\n}\n\n\n/**\n * Apply options for a column\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column index to consider\n *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnOptions( oSettings, iCol, oOptions )\n{\n\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\n\t/* User specified column options */\n\tif ( oOptions !== undefined && oOptions !== null )\n\t{\n\t\t/* Backwards compatibility for mDataProp */\n\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t{\n\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t}\n\n\t\tif ( oOptions.sType !== undefined )\n\t\t{\n\t\t\toCol.sType = oOptions.sType;\n\t\t\toCol._bAutoType = false;\n\t\t}\n\t\t\n\t\t$.extend( oCol, oOptions );\n\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\n\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t * priority if defined\n\t\t */\n\t\tif ( oOptions.iDataSort !== undefined )\n\t\t{\n\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t}\n\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t}\n\n\t/* Cache the data get and set functions for speed */\n\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\n\toCol.fnGetData = function (oData, sSpecific) {\n\t\tvar innerData = mData( oData, sSpecific );\n\n\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t{\n\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t}\n\t\treturn innerData;\n\t};\n\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\n\t/* Feature sorting overrides column specific when off */\n\tif ( !oSettings.oFeatures.bSort )\n\t{\n\t\toCol.bSortable = false;\n\t}\n\t\n\t/* Check that the class assignment is correct for sorting */\n\tif ( !oCol.bSortable ||\n\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\toCol.sSortingClassJUI = \"\";\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t}\n}\n\n\n/**\n * Adjust the table column widths for new data. Note: you would probably want to \n * do a redraw after calling this function!\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAdjustColumnSizing ( oSettings )\n{\n\t/* Not interested in doing column width calculation if auto-width is disabled */\n\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t{\n\t\treturn false;\n\t}\n\t\n\t_fnCalculateColumnWidths( oSettings );\n\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t}\n}\n\n\n/**\n * Covert the index of a visible column to the index in the data array (take account\n * of hidden columns)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iMatch Visible column index to lookup\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\n\treturn typeof aiVis[iMatch] === 'number' ?\n\t\taiVis[iMatch] :\n\t\tnull;\n}\n\n\n/**\n * Covert the index of an index in the data array and convert it to the visible\n *   column index (take account of hidden columns)\n *  @param {int} iMatch Column index to lookup\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnIndexToVisible( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\tvar iPos = $.inArray( iMatch, aiVis );\n\n\treturn iPos !== -1 ? iPos : null;\n}\n\n\n/**\n * Get the number of visible columns\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the number of visible columns\n *  @memberof DataTable#oApi\n */\nfunction _fnVisbleColumns( oSettings )\n{\n\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n}\n\n\n/**\n * Get an array of column indexes that match a given property\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sParam Parameter in aoColumns to look for - typically \n *    bVisible or bSearchable\n *  @returns {array} Array of indexes with matched properties\n *  @memberof DataTable#oApi\n */\nfunction _fnGetColumns( oSettings, sParam )\n{\n\tvar a = [];\n\n\t$.map( oSettings.aoColumns, function(val, i) {\n\t\tif ( val[sParam] ) {\n\t\t\ta.push( i );\n\t\t}\n\t} );\n\n\treturn a;\n}\n\n\n/**\n * Get the sort type based on an input string\n *  @param {string} sData data we wish to know the type of\n *  @returns {string} type (defaults to 'string' if no type can be detected)\n *  @memberof DataTable#oApi\n */\nfunction _fnDetectType( sData )\n{\n\tvar aTypes = DataTable.ext.aTypes;\n\tvar iLen = aTypes.length;\n\t\n\tfor ( var i=0 ; i<iLen ; i++ )\n\t{\n\t\tvar sType = aTypes[i]( sData );\n\t\tif ( sType !== null )\n\t\t{\n\t\t\treturn sType;\n\t\t}\n\t}\n\t\n\treturn 'string';\n}\n\n\n/**\n * Figure out how to reorder a display list\n *  @param {object} oSettings dataTables settings object\n *  @returns array {int} aiReturn index list for reordering\n *  @memberof DataTable#oApi\n */\nfunction _fnReOrderIndex ( oSettings, sColumns )\n{\n\tvar aColumns = sColumns.split(',');\n\tvar aiReturn = [];\n\t\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t{\n\t\t\t\taiReturn.push( j );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn aiReturn;\n}\n\n\n/**\n * Get the column ordering that DataTables expects\n *  @param {object} oSettings dataTables settings object\n *  @returns {string} comma separated list of names\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnOrdering ( oSettings )\n{\n\tvar sNames = '';\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t}\n\tif ( sNames.length == iLen )\n\t{\n\t\treturn \"\";\n\t}\n\treturn sNames.slice(0, -1);\n}\n\n\n/**\n * Take the column definitions and static columns arrays and calculate how\n * they relate to column indexes. The callback function will then apply the\n * definition found for a column to a suitable configuration object.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n *  @param {array} aoCols The aoColumns array that defines columns individually\n *  @param {function} fn Callback function - takes two parameters, the calculated\n *    column index and the definition for that column.\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n{\n\tvar i, iLen, j, jLen, k, kLen;\n\n\t// Column definitions with aTargets\n\tif ( aoColDefs )\n\t{\n\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t}\n\n\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Statically defined columns array\n\tif ( aoCols )\n\t{\n\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfn( i, aoCols[i] );\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.constructor.js",
    "content": "var i=0, iLen, j, jLen, k, kLen;\nvar sId = this.getAttribute( 'id' );\nvar bInitHandedOff = false;\nvar bUsePassedData = false;\n\n\n/* Sanity check */\nif ( this.nodeName.toLowerCase() != 'table' )\n{\n\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\"table: \"+this.nodeName );\n\treturn;\n}\n\n/* Check to see if we are re-initialising a table */\nfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n{\n\t/* Base check on table node */\n\tif ( DataTable.settings[i].nTable == this )\n\t{\n\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t{\n\t\t\treturn DataTable.settings[i].oInstance;\n\t\t}\n\t\telse if ( oInit.bDestroy )\n\t\t{\n\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\tbreak;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\treturn;\n\t\t}\n\t}\n\t\n\t/* If the element we are initialising has the same ID as a table which was previously\n\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t * instance by simply deleting it. This is under the assumption that the table has been\n\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t */\n\tif ( DataTable.settings[i].sTableId == this.id )\n\t{\n\t\tDataTable.settings.splice( i, 1 );\n\t\tbreak;\n\t}\n}\n\n/* Ensure the table has an ID - required for accessibility */\nif ( sId === null || sId === \"\" )\n{\n\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\tthis.id = sId;\n}\n\n/* Create the settings object for this table and set some of the default parameters */\nvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\"nTable\":        this,\n\t\"oApi\":          _that.oApi,\n\t\"oInit\":         oInit,\n\t\"sDestroyWidth\": $(this).width(),\n\t\"sInstance\":     sId,\n\t\"sTableId\":      sId\n} );\nDataTable.settings.push( oSettings );\n\n// Need to add the instance after the instance after the settings object has been added\n// to the settings array, so we can self reference the table instance if more than one\noSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\n/* Setting up the initialisation object */\nif ( !oInit )\n{\n\toInit = {};\n}\n\n// Backwards compatibility, before we apply all the defaults\nif ( oInit.oLanguage )\n{\n\t_fnLanguageCompat( oInit.oLanguage );\n}\n\noInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\n// Map the initialisation options onto the settings object\n_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n_fnMap( oSettings, oInit, \"asStripeClasses\" );\n_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n_fnMap( oSettings, oInit, \"fnServerData\" );\n_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n_fnMap( oSettings, oInit, \"sServerMethod\" );\n_fnMap( oSettings, oInit, \"aaSorting\" );\n_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n_fnMap( oSettings, oInit, \"aLengthMenu\" );\n_fnMap( oSettings, oInit, \"sPaginationType\" );\n_fnMap( oSettings, oInit, \"sAjaxSource\" );\n_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n_fnMap( oSettings, oInit, \"iCookieDuration\" );\n_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n_fnMap( oSettings, oInit, \"sDom\" );\n_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n_fnMap( oSettings, oInit, \"iTabIndex\" );\n_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n_fnMap( oSettings, oInit, \"fnStateLoad\" );\n_fnMap( oSettings, oInit, \"fnStateSave\" );\n_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\n/* Callback functions which are array driven */\n_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\nif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t   oSettings.oFeatures.bSortClasses )\n{\n\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t * processing must be enabled by the developer\n\t */\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n}\nelse if ( oSettings.oFeatures.bDeferRender )\n{\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n}\n\nif ( oInit.bJQueryUI )\n{\n\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t * you want to have multiple tables with multiple independent classes \n\t */\n\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\n\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t{\n\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t}\n}\nelse\n{\n\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n}\n$(this).addClass( oSettings.oClasses.sTable );\n\n/* Calculate the scroll bar width and cache it for use later on */\nif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n{\n\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n}\n\nif ( oSettings.iInitDisplayStart === undefined )\n{\n\t/* Display start point, taking into account the save saving */\n\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\toSettings._iDisplayStart = oInit.iDisplayStart;\n}\n\n/* Must be done after everything which can be overridden by a cookie! */\nif ( oInit.bStateSave )\n{\n\toSettings.oFeatures.bStateSave = true;\n\t_fnLoadState( oSettings, oInit );\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n}\n\nif ( oInit.iDeferLoading !== null )\n{\n\toSettings.bDeferLoading = true;\n\tvar tmp = $.isArray( oInit.iDeferLoading );\n\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n}\n\nif ( oInit.aaData !== null )\n{\n\tbUsePassedData = true;\n}\n\n/* Language definitions */\nif ( oInit.oLanguage.sUrl !== \"\" )\n{\n\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t */\n\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t_fnLanguageCompat( json );\n\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t_fnInitialise( oSettings );\n\t} );\n\tbInitHandedOff = true;\n}\nelse\n{\n\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n}\n\n\n/*\n * Stripes\n */\nif ( oInit.asStripeClasses === null )\n{\n\toSettings.asStripeClasses =[\n\t\toSettings.oClasses.sStripeOdd,\n\t\toSettings.oClasses.sStripeEven\n\t];\n}\n\n/* Remove row stripe classes if they are already on the table row */\niLen=oSettings.asStripeClasses.length;\noSettings.asDestroyStripes = [];\nif (iLen)\n{\n\tvar bStripeRemove = false;\n\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\tfor ( i=0 ; i<iLen ; i++ )\n\t{\n\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t{\n\t\t\tbStripeRemove = true;\n\t\t\t\n\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t}\n\t}\n\t\n\tif ( bStripeRemove )\n\t{\n\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t}\n}\n\n/*\n * Columns\n * See if we should load columns automatically or use defined ones\n */\nvar anThs = [];\nvar aoColumnsInit;\nvar nThead = this.getElementsByTagName('thead');\nif ( nThead.length !== 0 )\n{\n\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\tanThs = _fnGetUniqueThs( oSettings );\n}\n\n/* If not given a column array, generate one with nulls */\nif ( oInit.aoColumns === null )\n{\n\taoColumnsInit = [];\n\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t{\n\t\taoColumnsInit.push( null );\n\t}\n}\nelse\n{\n\taoColumnsInit = oInit.aoColumns;\n}\n\n/* Add the columns */\nfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n{\n\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t{\n\t\tif ( aoColumnsInit[i] === null )\n\t\t{\n\t\t\taoColumnsInit[i] = {};\n\t\t}\n\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t}\n\t\n\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n}\n\n/* Apply the column definitions */\n_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t_fnColumnOptions( oSettings, iCol, oDef );\n} );\n\n\n/*\n * Sorting\n * Check the aaSorting array\n */\nfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n{\n\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t{\n\t\toSettings.aaSorting[i][0] = 0;\n\t}\n\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\n\t/* Add a default sorting index */\n\tif ( oSettings.aaSorting[i][2] === undefined )\n\t{\n\t\toSettings.aaSorting[i][2] = 0;\n\t}\n\t\n\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t{\n\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t}\n\t\n\t/* Set the current sorting index based on aoColumns.asSorting */\n\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t{\n\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t{\n\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\t\n/* Do a first pass on the sorting classes (allows any size changes to be taken into\n * account, and also will apply sorting disabled classes if disabled\n */\n_fnSortingClasses( oSettings );\n\n\n/*\n * Final init\n * Cache the header, body and footer as required, creating them if needed\n */\n\n/* Browser support detection */\n_fnBrowserDetect( oSettings );\n\n// Work around for Webkit bug 83867 - store the caption-side before removing from doc\nvar captions = $(this).children('caption').each( function () {\n\tthis._captionSide = $(this).css('caption-side');\n} );\n\nvar thead = $(this).children('thead');\nif ( thead.length === 0 )\n{\n\tthead = [ document.createElement( 'thead' ) ];\n\tthis.appendChild( thead[0] );\n}\noSettings.nTHead = thead[0];\n\nvar tbody = $(this).children('tbody');\nif ( tbody.length === 0 )\n{\n\ttbody = [ document.createElement( 'tbody' ) ];\n\tthis.appendChild( tbody[0] );\n}\noSettings.nTBody = tbody[0];\noSettings.nTBody.setAttribute( \"role\", \"alert\" );\noSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\noSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\nvar tfoot = $(this).children('tfoot');\nif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n{\n\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t// a tfoot element for the caption element to be appended to\n\ttfoot = [ document.createElement( 'tfoot' ) ];\n\tthis.appendChild( tfoot[0] );\n}\n\nif ( tfoot.length > 0 )\n{\n\toSettings.nTFoot = tfoot[0];\n\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n}\n\n/* Check if there is data passing into the constructor */\nif ( bUsePassedData )\n{\n\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t{\n\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t}\n}\nelse\n{\n\t/* Grab the data from the page */\n\t_fnGatherData( oSettings );\n}\n\n/* Copy the data index array */\noSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\n/* Initialisation complete - table can be drawn */\noSettings.bInitialised = true;\n\n/* Check if we need to initialise the table (it might not have been handed off to the\n * language processor)\n */\nif ( bInitHandedOff === false )\n{\n\t_fnInitialise( oSettings );\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.data.js",
    "content": "/**\n * Add a data array to the table, creating DOM node etc. This is the parallel to \n * _fnGatherData, but for adding rows from a Javascript source, rather than a\n * DOM source.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aData data array to be added\n *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n *  @memberof DataTable#oApi\n */\nfunction _fnAddData ( oSettings, aDataSupplied )\n{\n\tvar oCol;\n\t\n\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\taDataSupplied.slice() :\n\t\t$.extend( true, {}, aDataSupplied );\n\t\n\t/* Create the object for storing information about this new row */\n\tvar iRow = oSettings.aoData.length;\n\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\toData._aData = aDataIn;\n\toSettings.aoData.push( oData );\n\n\t/* Create the cells */\n\tvar nTd, sThisType;\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\n\t\t/* Use rendered data for filtering / sorting */\n\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t{\n\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t}\n\t\t\n\t\t/* See if we should auto-detect the column type */\n\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t{\n\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t{\n\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t}\n\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t{\n\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Add to the display array */\n\toSettings.aiDisplayMaster.push( iRow );\n\n\t/* Create the DOM information */\n\tif ( !oSettings.oFeatures.bDeferRender )\n\t{\n\t\t_fnCreateTr( oSettings, iRow );\n\t}\n\n\treturn iRow;\n}\n\n\n/**\n * Read in the data from the target table from the DOM\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnGatherData( oSettings )\n{\n\tvar iLoop, i, iLen, j, jLen, jInner,\n\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\toCol, oData;\n\t\n\t/*\n\t * Process by row first\n\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t */\n\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t{\n\t\tnTr = oSettings.nTBody.firstChild;\n\t\twhile ( nTr )\n\t\t{\n\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t{\n\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t} ) );\n\n\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\tjInner = 0;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\tjInner++;\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tnTr = nTr.nextSibling;\n\t\t}\n\t}\n\t\n\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t * setup!\n\t */\n\tnTrs = _fnGetTrNodes( oSettings );\n\tnTds = [];\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\tnTd = nTrs[i].firstChild;\n\t\twhile ( nTd )\n\t\t{\n\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tnTds.push( nTd );\n\t\t\t}\n\t\t\tnTd = nTd.nextSibling;\n\t\t}\n\t}\n\t\n\t/* Now process by column */\n\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t{\n\t\toCol = oSettings.aoColumns[iColumn];\n\n\t\t/* Get the title of the column - unless there is a user set one */\n\t\tif ( oCol.sTitle === null )\n\t\t{\n\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t}\n\t\t\n\t\tvar\n\t\t\tbAutoType = oCol._bAutoType,\n\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\tbClass = oCol.sClass !== null,\n\t\t\tbVisible = oCol.bVisible,\n\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\n\t\t/* A single loop to rule them all (and be more efficient) */\n\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t{\n\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\n\t\t\t\t/* Type detection */\n\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( oCol.mRender )\n\t\t\t\t{\n\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t}\n\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t{\n\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Rendering */\n\t\t\t\tif ( bRender )\n\t\t\t\t{\n\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Classes */\n\t\t\t\tif ( bClass )\n\t\t\t\t{\n\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Column visibility */\n\t\t\t\tif ( !bVisible )\n\t\t\t\t{\n\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t}\n\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Row created callbacks */\n\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toData = oSettings.aoData[i];\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t}\n\t}\n}\n\n\n/**\n * Take a TR element and convert it to an index in aoData\n *  @param {object} oSettings dataTables settings object\n *  @param {node} n the TR element to find\n *  @returns {int} index if the node is found, null if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToDataIndex( oSettings, n )\n{\n\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n}\n\n\n/**\n * Take a TD element and convert it into a column data index (not the visible index)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow The row number the TD/TH can be found in\n *  @param {node} n The TD/TH element to find\n *  @returns {int} index if the node is found, -1 if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n{\n\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tif ( anCells[i] === n )\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n/**\n * Get an array of data for a given row from the internal data cache\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n *  @param {array} aiColumns Array of column indexes to get data from\n *  @returns {array} Data array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n{\n\tvar out = [];\n\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t{\n\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t}\n\treturn out;\n}\n\n\n/**\n * Get the data for a given cell from the internal cache, taking into account data mapping\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {int} iCol Column index\n *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n *  @returns {*} Cell data\n *  @memberof DataTable#oApi\n */\nfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n{\n\tvar sData;\n\tvar oCol = oSettings.aoColumns[iCol];\n\tvar oData = oSettings.aoData[iRow]._aData;\n\n\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t{\n\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t{\n\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t}\n\t\treturn oCol.sDefaultContent;\n\t}\n\n\t/* When the data source is null, we can use default column data */\n\tif ( sData === null && oCol.sDefaultContent !== null )\n\t{\n\t\tsData = oCol.sDefaultContent;\n\t}\n\telse if ( typeof sData === 'function' )\n\t{\n\t\t/* If the data source is a function, then we run it and use the return */\n\t\treturn sData();\n\t}\n\n\tif ( sSpecific == 'display' && sData === null )\n\t{\n\t\treturn '';\n\t}\n\treturn sData;\n}\n\n\n/**\n * Set the value for a specific cell, into the internal data cache\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {int} iCol Column index\n *  @param {*} val Value to set\n *  @memberof DataTable#oApi\n */\nfunction _fnSetCellData( oSettings, iRow, iCol, val )\n{\n\tvar oCol = oSettings.aoColumns[iCol];\n\tvar oData = oSettings.aoData[iRow]._aData;\n\n\toCol.fnSetData( oData, val );\n}\n\n\n// Private variable that is used to match array syntax in the data property object\nvar __reArray = /\\[.*?\\]$/;\n\n/**\n * Return a function that can be used to get data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data get function\n *  @memberof DataTable#oApi\n */\nfunction _fnGetObjectDataFn( mSource )\n{\n\tif ( mSource === null )\n\t{\n\t\t/* Give an empty string for rendering / sorting etc */\n\t\treturn function (data, type) {\n\t\t\treturn null;\n\t\t};\n\t}\n\telse if ( typeof mSource === 'function' )\n\t{\n\t\treturn function (data, type, extra) {\n\t\t\treturn mSource( data, type, extra );\n\t\t};\n\t}\n\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t{\n\t\t/* If there is a . in the source string then the data source is in a \n\t\t * nested object so we loop over the data for each level to get the next\n\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t * be used if defined, rather than throwing an error\n\t\t */\n\t\tvar fetchData = function (data, type, src) {\n\t\t\tvar a = src.split('.');\n\t\t\tvar arrayNotation, out, innerSrc;\n\n\t\t\tif ( src !== \"\" )\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\n\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\n\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = a.join('.');\n\n\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\n\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\treturn function (data, type) {\n\t\t\treturn fetchData( data, type, mSource );\n\t\t};\n\t}\n\telse\n\t{\n\t\t/* Array or flat object mapping */\n\t\treturn function (data, type) {\n\t\t\treturn data[mSource];\t\n\t\t};\n\t}\n}\n\n\n/**\n * Return a function that can be used to set data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data set function\n *  @memberof DataTable#oApi\n */\nfunction _fnSetObjectDataFn( mSource )\n{\n\tif ( mSource === null )\n\t{\n\t\t/* Nothing to do when the data source is null */\n\t\treturn function (data, val) {};\n\t}\n\telse if ( typeof mSource === 'function' )\n\t{\n\t\treturn function (data, val) {\n\t\t\tmSource( data, 'set', val );\n\t\t};\n\t}\n\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t{\n\t\t/* Like the get, we need to get data from a nested object */\n\t\tvar setData = function (data, val, src) {\n\t\t\tvar a = src.split('.'), b;\n\t\t\tvar arrayNotation, o, innerSrc;\n\n\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\tarrayNotation = a[i].match(__reArray);\n\n\t\t\t\tif ( arrayNotation )\n\t\t\t\t{\n\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\n\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\tb = a.slice();\n\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\tinnerSrc = b.join('.');\n\n\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\to = {};\n\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t}\n\n\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t// trying to set the value - create it\n\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t{\n\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t}\n\t\t\t\tdata = data[ a[i] ];\n\t\t\t}\n\n\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t};\n\n\t\treturn function (data, val) {\n\t\t\treturn setData( data, val, mSource );\n\t\t};\n\t}\n\telse\n\t{\n\t\t/* Array or flat object mapping */\n\t\treturn function (data, val) {\n\t\t\tdata[mSource] = val;\t\n\t\t};\n\t}\n}\n\n\n/**\n * Return an array with the full table data\n *  @param {object} oSettings dataTables settings object\n *  @returns array {array} aData Master data array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetDataMaster ( oSettings )\n{\n\tvar aData = [];\n\tvar iLen = oSettings.aoData.length;\n\tfor ( var i=0 ; i<iLen; i++ )\n\t{\n\t\taData.push( oSettings.aoData[i]._aData );\n\t}\n\treturn aData;\n}\n\n\n/**\n * Nuke the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnClearTable( oSettings )\n{\n\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t_fnCalculateEnd( oSettings );\n}\n\n\n /**\n * Take an array of integers (index array) and remove a target integer (value - not \n * the key!)\n *  @param {array} a Index array to target\n *  @param {int} iTarget value to find\n *  @memberof DataTable#oApi\n */\nfunction _fnDeleteIndex( a, iTarget )\n{\n\tvar iTargetIndex = -1;\n\t\n\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t{\n\t\tif ( a[i] == iTarget )\n\t\t{\n\t\t\tiTargetIndex = i;\n\t\t}\n\t\telse if ( a[i] > iTarget )\n\t\t{\n\t\t\ta[i]--;\n\t\t}\n\t}\n\t\n\tif ( iTargetIndex != -1 )\n\t{\n\t\ta.splice( iTargetIndex, 1 );\n\t}\n}\n\n\n /**\n * Call the developer defined fnRender function for a given cell (row/column) with\n * the required parameters and return the result.\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData index for the row\n *  @param {int} iCol aoColumns index for the column\n *  @returns {*} Return of the developer's fnRender function\n *  @memberof DataTable#oApi\n */\nfunction _fnRender( oSettings, iRow, iCol )\n{\n\tvar oCol = oSettings.aoColumns[iCol];\n\n\treturn oCol.fnRender( {\n\t\t\"iDataRow\":    iRow,\n\t\t\"iDataColumn\": iCol,\n\t\t\"oSettings\":   oSettings,\n\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\"mDataProp\":   oCol.mData\n\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.draw.js",
    "content": "/**\n * Create a new TR element (and it's TD children) for a row\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow Row to consider\n *  @memberof DataTable#oApi\n */\nfunction _fnCreateTr ( oSettings, iRow )\n{\n\tvar oData = oSettings.aoData[iRow];\n\tvar nTd;\n\n\tif ( oData.nTr === null )\n\t{\n\t\toData.nTr = document.createElement('tr');\n\n\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t * to the aoData array for fast look up\n\t\t */\n\t\toData.nTr._DT_RowIndex = iRow;\n\n\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\tif ( oData._aData.DT_RowId )\n\t\t{\n\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t}\n\n\t\tif ( oData._aData.DT_RowClass )\n\t\t{\n\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t}\n\n\t\t/* Process each column */\n\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\tnTd = document.createElement( oCol.sCellType );\n\n\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t * value in the data source - so can just use that\n\t\t\t */\n\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\n\t\t\t/* Add user defined class */\n\t\t\tif ( oCol.sClass !== null )\n\t\t\t{\n\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oCol.bVisible )\n\t\t\t{\n\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\toData._anHidden[i] = null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t}\n\n\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t{\n\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t}\n}\n\n\n/**\n * Create the HTML header for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildHead( oSettings )\n{\n\tvar i, nTh, iLen, j, jLen;\n\tvar iThs = $('th, td', oSettings.nTHead).length;\n\tvar iCorrector = 0;\n\tvar jqChildren;\n\t\n\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\tif ( iThs !== 0 )\n\t{\n\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t{\n\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t}\n\n\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t{\n\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t}\n\t\t\t\n\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t{\n\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\n\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t{\n\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t}\n\t\t\t\n\t\t\tnTr.appendChild( nTh );\n\t\t}\n\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t}\n\t\n\t/* ARIA role for the rows */\t\n\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\n\t/* Add the extra markup needed by jQuery UI's themes */\n\tif ( oSettings.bJUI )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\n\t\t\tvar nDiv = document.createElement('div');\n\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\n\t\t\tvar nSpan = document.createElement('span');\n\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\tnDiv.appendChild( nSpan );\n\t\t\tnTh.appendChild( nDiv );\n\t\t}\n\t}\n\t\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t{\n\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Deal with the footer - add classes if required */\n\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t{\n\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t}\n\t\n\t/* Cache the footer elements */\n\tif ( oSettings.nTFoot !== null )\n\t{\n\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( anCells[i] )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t{\n\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Draw the header (or footer) element based on the column visibility states. The\n * methodology here is to use the layout array from _fnDetectHeader, modified for\n * the instantaneous column visibility, to construct the new layout. The grid is\n * traversed over cell at a time in a rows x columns grid fashion, although each \n * cell insert can cover multiple elements in the grid - which is tracks using the\n * aApplied array. Cell inserts in the grid will only occur where there isn't\n * already a cell in that position.\n *  @param {object} oSettings dataTables settings object\n *  @param array {objects} aoSource Layout array from _fnDetectHeader\n *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n *  @memberof DataTable#oApi\n */\nfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n{\n\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\tvar aoLocal = [];\n\tvar aApplied = [];\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar iRowspan, iColspan;\n\n\tif (  bIncludeHidden === undefined )\n\t{\n\t\tbIncludeHidden = false;\n\t}\n\n\t/* Make a copy of the master layout array, but without the visible columns in it */\n\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t{\n\t\taoLocal[i] = aoSource[i].slice();\n\t\taoLocal[i].nTr = aoSource[i].nTr;\n\n\t\t/* Remove any columns which are currently hidden */\n\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t{\n\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t{\n\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t}\n\t\t}\n\n\t\t/* Prep the applied array - it needs an element for each row */\n\t\taApplied.push( [] );\n\t}\n\n\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t{\n\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\n\t\t/* All cells are going to be replaced, so empty out the row */\n\t\tif ( nLocalTr )\n\t\t{\n\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t{\n\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t}\n\t\t}\n\n\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tiRowspan = 1;\n\t\t\tiColspan = 1;\n\n\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t */\n\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t{\n\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\taApplied[i][j] = 1;\n\n\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t{\n\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\tiRowspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t{\n\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tiColspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Insert the required TR nodes into the table for display\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnDraw( oSettings )\n{\n\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\treturn;\n\t}\n\t\n\tvar i, iLen, n;\n\tvar anRows = [];\n\tvar iRowCount = 0;\n\tvar iStripes = oSettings.asStripeClasses.length;\n\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\n\toSettings.bDrawing = true;\n\t\n\t/* Check and see if we have an initial draw position from state saving */\n\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t{\n\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t}\n\t\toSettings.iInitDisplayStart = -1;\n\t\t_fnCalculateEnd( oSettings );\n\t}\n\t\n\t/* Server-side processing draw intercept */\n\tif ( oSettings.bDeferLoading )\n\t{\n\t\toSettings.bDeferLoading = false;\n\t\toSettings.iDraw++;\n\t}\n\telse if ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\toSettings.iDraw++;\n\t}\n\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t{\n\t\treturn;\n\t}\n\t\n\tif ( oSettings.aiDisplay.length !== 0 )\n\t{\n\t\tvar iStart = oSettings._iDisplayStart;\n\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\n\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\tiStart = 0;\n\t\t\tiEnd = oSettings.aoData.length;\n\t\t}\n\t\t\n\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t{\n\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\tif ( aoData.nTr === null )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t}\n\n\t\t\tvar nRow = aoData.nTr;\n\t\t\t\n\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\tif ( iStripes !== 0 )\n\t\t\t{\n\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t{\n\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\n\t\t\tanRows.push( nRow );\n\t\t\tiRowCount++;\n\t\t\t\n\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\tif ( iOpenRows !== 0 )\n\t\t\t{\n\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t{\n\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Table is empty - create a row with an empty message in it */\n\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\n\t\tif ( oSettings.asStripeClasses[0] )\n\t\t{\n\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t}\n\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar sZero = oLang.sZeroRecords;\n\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\tsZero = oLang.sLoadingRecords;\n\t\t}\n\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t{\n\t\t\tsZero = oLang.sEmptyTable;\n\t\t}\n\n\t\tvar nTd = document.createElement( 'td' );\n\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\n\t\tanRows[ iRowCount ].appendChild( nTd );\n\t}\n\t\n\t/* Header and footer callbacks */\n\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\n\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\n\t/* \n\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t */\n\tvar\n\t\tnAddFrag = document.createDocumentFragment(),\n\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\tnBodyPar, nTrs;\n\t\n\tif ( oSettings.nTBody )\n\t{\n\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\n\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t * up. When not infinite scroll, always do it.\n\t\t */\n\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t{\n\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t{\n\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Put the draw table into the dom */\n\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t}\n\t\t\n\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\tif ( nBodyPar !== null )\n\t\t{\n\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t}\n\t}\n\t\n\t/* Call all required callback functions for the end of a draw */\n\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t/* Draw is complete, sorting and filtering must be as well */\n\toSettings.bSorted = false;\n\toSettings.bFiltered = false;\n\toSettings.bDrawing = false;\n\t\n\tif ( oSettings.oFeatures.bServerSide )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\tif ( !oSettings._bInitComplete )\n\t\t{\n\t\t\t_fnInitComplete( oSettings );\n\t\t}\n\t}\n}\n\n\n/**\n * Redraw the table - taking account of the various features which are enabled\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnReDraw( oSettings )\n{\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\t/* Sorting will refilter and draw for us */\n\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse if ( oSettings.oFeatures.bFilter )\n\t{\n\t\t/* Filtering will redraw for us */\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n}\n\n\n/**\n * Add the options to the page HTML for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAddOptionsHtml ( oSettings )\n{\n\t/*\n\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t */\n\tvar nHolding = $('<div></div>')[0];\n\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\n\t/* \n\t * All DataTables are wrapped in a div\n\t */\n\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\n\t/* Track where we want to insert the option */\n\tvar nInsertNode = oSettings.nTableWrapper;\n\t\n\t/* Loop over the user set positioning and place the elements as needed */\n\tvar aDom = oSettings.sDom.split('');\n\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t{\n\t\tiPushFeature = 0;\n\t\tcOption = aDom[i];\n\t\t\n\t\tif ( cOption == '<' )\n\t\t{\n\t\t\t/* New container div */\n\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\n\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\tcNext = aDom[i+1];\n\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t{\n\t\t\t\tsAttr = \"\";\n\t\t\t\tj = 2;\n\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t{\n\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t}\n\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t */\n\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t{\n\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t}\n\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t{\n\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ti += j; /* Move along the position array */\n\t\t\t}\n\t\t\t\n\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\tnInsertNode = nNewNode;\n\t\t}\n\t\telse if ( cOption == '>' )\n\t\t{\n\t\t\t/* End container div */\n\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t}\n\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t{\n\t\t\t/* Length */\n\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t{\n\t\t\t/* Filter */\n\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t{\n\t\t\t/* pRocessing */\n\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 't' )\n\t\t{\n\t\t\t/* Table */\n\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t{\n\t\t\t/* Info */\n\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t{\n\t\t\t/* Pagination */\n\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t{\n\t\t\t/* Plug-in features */\n\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t{\n\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t{\n\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Add to the 2D features array */\n\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t{\n\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t{\n\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t}\n\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\tnInsertNode.appendChild( nTmp );\n\t\t}\n\t}\n\t\n\t/* Built our DOM structure - replace the holding div with what we want */\n\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n}\n\n\n/**\n * Use the DOM source to create up an array of header cells. The idea here is to\n * create a layout grid (array) of rows x columns, which contains a reference\n * to the cell that that point in the grid (regardless of col/rowspan), such that\n * any column / row could be removed and the new grid constructed\n *  @param array {object} aLayout Array to store the calculated layout in\n *  @param {node} nThead The header/footer element for the table\n *  @memberof DataTable#oApi\n */\nfunction _fnDetectHeader ( aLayout, nThead )\n{\n\tvar nTrs = $(nThead).children('tr');\n\tvar nTr, nCell;\n\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\tvar bUnique;\n\tvar fnShiftCol = function ( a, i, j ) {\n\t\tvar k = a[i];\n                while ( k[j] ) {\n\t\t\tj++;\n\t\t}\n\t\treturn j;\n\t};\n\n\taLayout.splice( 0, aLayout.length );\n\t\n\t/* We know how many rows there are in the layout - so prep it */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\taLayout.push( [] );\n\t}\n\t\n\t/* Calculate a layout array */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\tnTr = nTrs[i];\n\t\tiColumn = 0;\n\t\t\n\t\t/* For every cell in the row... */\n\t\tnCell = nTr.firstChild;\n\t\twhile ( nCell ) {\n\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t{\n\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\n\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t * accordingly\n\t\t\t\t */\n\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\n\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\n\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t};\n\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnCell = nCell.nextSibling;\n\t\t}\n\t}\n}\n\n\n/**\n * Get an array of unique th elements, one for each column\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nHeader automatically detect the layout from this node - optional\n *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n *  @returns array {node} aReturn list of unique th's\n *  @memberof DataTable#oApi\n */\nfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n{\n\tvar aReturn = [];\n\tif ( !aLayout )\n\t{\n\t\taLayout = oSettings.aoHeader;\n\t\tif ( nHeader )\n\t\t{\n\t\t\taLayout = [];\n\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t}\n\t}\n\n\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t{\n\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t{\n\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn aReturn;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.filter.js",
    "content": "\n\n/**\n * Generate the node required for filtering text\n *  @returns {node} Filter control element\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlFilter ( oSettings )\n{\n\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\n\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\n\tvar nFilter = document.createElement( 'div' );\n\tnFilter.className = oSettings.oClasses.sFilter;\n\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\tif ( !oSettings.aanFeatures.f )\n\t{\n\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t}\n\t\n\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\n\t// Store a reference to the input element, so other input elements could be\n\t// added to the filter wrapper if needed (submit button for example)\n\tnFilter._DT_Input = jqFilter[0];\n\n\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t/* Update all other filter input elements for the new display */\n\t\tvar n = oSettings.aanFeatures.f;\n\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\n\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t{\n\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Now do the filter */\n\t\tif ( val != oPreviousSearch.sSearch )\n\t\t{\n\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\"sSearch\": val, \n\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t} );\n\t\t}\n\t} );\n\n\tjqFilter\n\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t/* Prevent form submission */\n\t\t\tif ( e.keyCode == 13 )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t);\n\t\n\treturn nFilter;\n}\n\n\n/**\n * Filter the table using both the global filter and column based filtering\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oSearch search information\n *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterComplete ( oSettings, oInput, iForce )\n{\n\tvar oPrevSearch = oSettings.oPreviousSearch;\n\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\tvar fnSaveFilter = function ( oFilter ) {\n\t\t/* Save the filtering values */\n\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t};\n\n\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t/* Global filter */\n\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\tfnSaveFilter( oInput );\n\n\t\t/* Now do the individual column filter */\n\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t{\n\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t}\n\t\t\n\t\t/* Custom filtering */\n\t\t_fnFilterCustom( oSettings );\n\t}\n\telse\n\t{\n\t\tfnSaveFilter( oInput );\n\t}\n\t\n\t/* Tell the draw function we have been filtering */\n\toSettings.bFiltered = true;\n\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\n\t/* Redraw the table */\n\toSettings._iDisplayStart = 0;\n\t_fnCalculateEnd( oSettings );\n\t_fnDraw( oSettings );\n\t\n\t/* Rebuild search array 'offline' */\n\t_fnBuildSearchArray( oSettings, 0 );\n}\n\n\n/**\n * Apply custom filtering functions\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCustom( oSettings )\n{\n\tvar afnFilters = DataTable.ext.afnFiltering;\n\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\n\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t{\n\t\tvar iCorrector = 0;\n\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t{\n\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\tvar bTest = afnFilters[i](\n\t\t\t\toSettings,\n\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\tiDisIndex\n\t\t\t);\n\t\t\t\n\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\tif ( !bTest )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Filter the table on a per-column basis\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sInput string to filter on\n *  @param {int} iColumn column to filter\n *  @param {bool} bRegex treat search string as a regular expression or not\n *  @param {bool} bSmart use smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n{\n\tif ( sInput === \"\" )\n\t{\n\t\treturn;\n\t}\n\t\n\tvar iIndexCorrector = 0;\n\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\n\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t{\n\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\toSettings.aoColumns[iColumn].sType );\n\t\tif ( ! rpSearch.test( sData ) )\n\t\t{\n\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\tiIndexCorrector++;\n\t\t}\n\t}\n}\n\n\n/**\n * Filter the data table based on user input and draw the table\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sInput string to filter on\n *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n *  @param {bool} bRegex treat as a regular expression or not\n *  @param {bool} bSmart perform smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n{\n\tvar i;\n\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\n\t/* Check if we are forcing or not - optional parameter */\n\tif ( !iForce )\n\t{\n\t\tiForce = 0;\n\t}\n\t\n\t/* Need to take account of custom filtering functions - always filter */\n\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t{\n\t\tiForce = 1;\n\t}\n\t\n\t/*\n\t * If the input is blank - we want the full data set\n\t */\n\tif ( sInput.length <= 0 )\n\t{\n\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t}\n\telse\n\t{\n\t\t/*\n\t\t * We are starting a new search or the new search string is smaller \n\t\t * then the old one (i.e. delete). Search from the master array\n\t \t */\n\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t{\n\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\n\t\t\t/* Force a rebuild of the search array */\n\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\n\t\t\t/* Search through all records to populate the search array\n\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t * mapping\n\t\t\t */\n\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t}\n\t\t\t}\n\t  }\n\t  else\n\t\t{\n\t  \t/* Using old search array - refine it - do it this way for speed\n\t  \t * Don't have to search the whole master array again\n\t\t\t */\n\t  \tvar iIndexCorrector = 0;\n\t  \t\n\t  \t/* Search the current results */\n\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t{\n\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t{\n\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t  \t\t\tiIndexCorrector++;\n\t  \t\t}\n\t  \t}\n\t  }\n\t}\n}\n\n\n/**\n * Create an array which can be quickly search through\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iMaster use the master data array - optional\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildSearchArray ( oSettings, iMaster )\n{\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t/* Clear out the old data */\n\t\toSettings.asDataSearch = [];\n\n\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\tvar aiIndex = (iMaster===1) ?\n\t\t \toSettings.aiDisplayMaster :\n\t\t \toSettings.aiDisplay;\n\t\t\n\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\toSettings,\n\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t);\n\t\t}\n\t}\n}\n\n\n/**\n * Create a searchable string from a single data row\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aData Row data array to use for the data to search\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildSearchRow( oSettings, aData )\n{\n\tvar sSearch = aData.join('  ');\n\t\n\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\tif ( sSearch.indexOf('&') !== -1 )\n\t{\n\t\tsSearch = $('<div>').html(sSearch).text();\n\t}\n\t\n\t// Strip newline characters\n\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n}\n\n/**\n * Build a regular expression object suitable for searching a table\n *  @param {string} sSearch string to search for\n *  @param {bool} bRegex treat as a regular expression or not\n *  @param {bool} bSmart perform smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n *  @returns {RegExp} constructed object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n{\n\tvar asSearch, sRegExpString;\n\t\n\tif ( bSmart )\n\t{\n\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t */\n\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t}\n\telse\n\t{\n\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t}\n}\n\n\n/**\n * Convert raw data into something that the user can search on\n *  @param {string} sData data to be modified\n *  @param {string} sType data type\n *  @returns {string} search string\n *  @memberof DataTable#oApi\n */\nfunction _fnDataToSearch ( sData, sType )\n{\n\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t{\n\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t}\n\telse if ( sData === null )\n\t{\n\t\treturn '';\n\t}\n\telse if ( sType == \"html\" )\n\t{\n\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t}\n\telse if ( typeof sData === \"string\" )\n\t{\n\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t}\n\treturn sData;\n}\n\n\n/**\n * scape a string such that it can be used in a regular expression\n *  @param {string} sVal string to escape\n *  @returns {string} escaped string\n *  @memberof DataTable#oApi\n */\nfunction _fnEscapeRegex ( sVal )\n{\n\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\treturn sVal.replace(reReplace, '\\\\$1');\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.info.js",
    "content": "\n/**\n * Generate the node required for the info display\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Information element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlInfo ( oSettings )\n{\n\tvar nInfo = document.createElement( 'div' );\n\tnInfo.className = oSettings.oClasses.sInfo;\n\t\n\t/* Actions that are to be taken once only for this feature */\n\tif ( !oSettings.aanFeatures.i )\n\t{\n\t\t/* Add draw callback */\n\t\toSettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\"sName\": \"information\"\n\t\t} );\n\t\t\n\t\t/* Add id */\n\t\tnInfo.id = oSettings.sTableId+'_info';\n\t}\n\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\n\treturn nInfo;\n}\n\n\n/**\n * Update the information elements in the display\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnUpdateInfo ( oSettings )\n{\n\t/* Show information about the table */\n\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t{\n\t\treturn;\n\t}\n\t\n\tvar\n\t\toLang = oSettings.oLanguage,\n\t\tiStart = oSettings._iDisplayStart+1,\n\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\tiMax = oSettings.fnRecordsTotal(),\n\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\tsOut;\n\t\n\tif ( iTotal === 0 )\n\t{\n\t\t/* Empty record set */\n\t\tsOut = oLang.sInfoEmpty;\n\t}\n\telse {\n\t\t/* Normal record set */\n\t\tsOut = oLang.sInfo;\n\t}\n\n\tif ( iTotal != iMax )\n\t{\n\t\t/* Record set after filtering */\n\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t}\n\n\t// Convert the macros\n\tsOut += oLang.sInfoPostFix;\n\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\n\tif ( oLang.fnInfoCallback !== null )\n\t{\n\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t}\n\t\n\tvar n = oSettings.aanFeatures.i;\n\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t{\n\t\t$(n[i]).html( sOut );\n\t}\n}\n\n\nfunction _fnInfoMacros ( oSettings, str )\n{\n\tvar\n\t\tiStart = oSettings._iDisplayStart+1,\n\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\tiMax = oSettings.fnRecordsTotal(),\n\t\tsMax = oSettings.fnFormatNumber( iMax );\n\n\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t// internally\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t}\n\n\treturn str.\n\t\treplace(/_START_/g, sStart).\n\t\treplace(/_END_/g,   sEnd).\n\t\treplace(/_TOTAL_/g, sTotal).\n\t\treplace(/_MAX_/g,   sMax);\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.init.js",
    "content": "\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnInitialise ( oSettings )\n{\n\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\n\t/* Ensure that the table data is fully initialised */\n\tif ( oSettings.bInitialised === false )\n\t{\n\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\treturn;\n\t}\n\t\n\t/* Show the display HTML options */\n\t_fnAddOptionsHtml( oSettings );\n\t\n\t/* Build and draw the header / footer for the table */\n\t_fnBuildHead( oSettings );\n\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\tif ( oSettings.nTFoot )\n\t{\n\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t}\n\n\t/* Okay to show that something is going on now */\n\t_fnProcessingDisplay( oSettings, true );\n\t\n\t/* Calculate sizes for columns */\n\tif ( oSettings.oFeatures.bAutoWidth )\n\t{\n\t\t_fnCalculateColumnWidths( oSettings );\n\t}\n\t\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t{\n\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t}\n\t}\n\t\n\t/* If there is default sorting required - let's do it. The sort function will do the\n\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t */\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\t_fnSort( oSettings );\n\t}\n\telse if ( oSettings.oFeatures.bFilter )\n\t{\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse\n\t{\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\t/* if there is an ajax source load the data */\n\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t{\n\t\tvar aoData = [];\n\t\t_fnServerParams( oSettings, aoData );\n\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\n\t\t\t/* Got the data - add it to the table */\n\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t */\n\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t_fnInitComplete( oSettings, json );\n\t\t}, oSettings );\n\t\treturn;\n\t}\n\t\n\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\t_fnInitComplete( oSettings );\n\t}\n}\n\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} oSettings dataTables settings object\n *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n *    with client-side processing (optional)\n *  @memberof DataTable#oApi\n */\nfunction _fnInitComplete ( oSettings, json )\n{\n\toSettings._bInitComplete = true;\n\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n}\n\n\n/**\n * Language compatibility - when certain options are given, and others aren't, we\n * need to duplicate the values over, in order to provide backwards compatibility\n * with older language files.\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnLanguageCompat( oLanguage )\n{\n\tvar oDefaults = DataTable.defaults.oLanguage;\n\n\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t * sZeroRecords - assuming that is given.\n\t */\n\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t{\n\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t}\n\n\t/* Likewise with loading records */\n\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t{\n\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.length.js",
    "content": "\n\n/**\n * Generate the node required for user display length changing\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Display length feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlLength ( oSettings )\n{\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\treturn null;\n\t}\n\t\n\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\tvar i, iLen;\n\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\n\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t{\n\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t}\n\t}\n\tsStdMenu += '</select>';\n\t\n\tvar nLength = document.createElement( 'div' );\n\tif ( !oSettings.aanFeatures.l )\n\t{\n\t\tnLength.id = oSettings.sTableId+'_length';\n\t}\n\tnLength.className = oSettings.oClasses.sLength;\n\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\n\t/*\n\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t * and Stefan Skopnik for fixing the fix!\n\t */\n\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\n\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\tvar iVal = $(this).val();\n\t\t\n\t\t/* Update all other length options for the new display */\n\t\tvar n = oSettings.aanFeatures.l;\n\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( n[i] != this.parentNode )\n\t\t\t{\n\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Redraw the table */\n\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t_fnCalculateEnd( oSettings );\n\t\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t{\n\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t\t\n\t\t_fnDraw( oSettings );\n\t} );\n\n\n\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\n\treturn nLength;\n}\n\n\n/**\n * Recalculate the end point based on the start point\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnCalculateEnd( oSettings )\n{\n\tif ( oSettings.oFeatures.bPaginate === false )\n\t{\n\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t}\n\telse\n\t{\n\t\t/* Set the end point of the display - based on how many elements there are\n\t\t * still to display\n\t\t */\n\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t{\n\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.page.js",
    "content": "\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Note that most of the paging logic is done in \n * DataTable.ext.oPagination\n */\n\n/**\n * Generate the node required for default pagination\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Pagination feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlPaginate ( oSettings )\n{\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\treturn null;\n\t}\n\t\n\tvar nPaginate = document.createElement( 'div' );\n\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\n\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\tfunction( oSettings ) {\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t}\n\t);\n\t\n\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\tif ( !oSettings.aanFeatures.p )\n\t{\n\t\toSettings.aoDrawCallback.push( {\n\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t} );\n\t\t\t},\n\t\t\t\"sName\": \"pagination\"\n\t\t} );\n\t}\n\treturn nPaginate;\n}\n\n\n/**\n * Alter the display settings to change the page\n *  @param {object} oSettings dataTables settings object\n *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n *    or page number to jump to (integer)\n *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n *  @memberof DataTable#oApi\n */\nfunction _fnPageChange ( oSettings, mAction )\n{\n\tvar iOldStart = oSettings._iDisplayStart;\n\t\n\tif ( typeof mAction === \"number\" )\n\t{\n\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"first\" )\n\t{\n\t\toSettings._iDisplayStart = 0;\n\t}\n\telse if ( mAction == \"previous\" )\n\t{\n\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t0;\n\t\t\n\t\t/* Correct for under-run */\n\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t{\n\t\t  oSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"next\" )\n\t{\n\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t{\n\t\t\t/* Make sure we are not over running the display array */\n\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"last\" )\n\t{\n\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t{\n\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse\n\t{\n\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t}\n\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\n\treturn iOldStart != oSettings._iDisplayStart;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.processing.js",
    "content": "\n\n/**\n * Generate the node required for the processing node\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Processing element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlProcessing ( oSettings )\n{\n\tvar nProcessing = document.createElement( 'div' );\n\t\n\tif ( !oSettings.aanFeatures.r )\n\t{\n\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t}\n\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\tnProcessing.className = oSettings.oClasses.sProcessing;\n\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\n\treturn nProcessing;\n}\n\n\n/**\n * Display or hide the processing indicator\n *  @param {object} oSettings dataTables settings object\n *  @param {bool} bShow Show the processing indicator (true) or not (false)\n *  @memberof DataTable#oApi\n */\nfunction _fnProcessingDisplay ( oSettings, bShow )\n{\n\tif ( oSettings.oFeatures.bProcessing )\n\t{\n\t\tvar an = oSettings.aanFeatures.r;\n\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t}\n\t}\n\n\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.scrolling.js",
    "content": "/**\n * Add any control elements for the table - specifically scrolling\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Node to add to the DOM\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlTable ( oSettings )\n{\n\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t{\n\t\treturn oSettings.nTable;\n\t}\n\t\n\t/*\n\t * The HTML structure that we want to generate in this function is:\n\t *  div - nScroller\n\t *    div - nScrollHead\n\t *      div - nScrollHeadInner\n\t *        table - nScrollHeadTable\n\t *          thead - nThead\n\t *    div - nScrollBody\n\t *      table - oSettings.nTable\n\t *        thead - nTheadSize\n\t *        tbody - nTbody\n\t *    div - nScrollFoot\n\t *      div - nScrollFootInner\n\t *        table - nScrollFootTable\n\t *          tfoot - nTfoot\n\t */\n\tvar\n\t \tnScroller = document.createElement('div'),\n\t \tnScrollHead = document.createElement('div'),\n\t \tnScrollHeadInner = document.createElement('div'),\n\t \tnScrollBody = document.createElement('div'),\n\t \tnScrollFoot = document.createElement('div'),\n\t \tnScrollFootInner = document.createElement('div'),\n\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\toClasses = oSettings.oClasses;\n\t\n\tnScrollHead.appendChild( nScrollHeadInner );\n\tnScrollFoot.appendChild( nScrollFootInner );\n\tnScrollBody.appendChild( oSettings.nTable );\n\tnScroller.appendChild( nScrollHead );\n\tnScroller.appendChild( nScrollBody );\n\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\tnScrollHeadTable.appendChild( nThead );\n\tif ( nTfoot !== null )\n\t{\n\t\tnScroller.appendChild( nScrollFoot );\n\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\tnScrollFootTable.appendChild( nTfoot );\n\t}\n\t\n\tnScroller.className = oClasses.sScrollWrapper;\n\tnScrollHead.className = oClasses.sScrollHead;\n\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\tnScrollBody.className = oClasses.sScrollBody;\n\tnScrollFoot.className = oClasses.sScrollFoot;\n\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\n\tif ( oSettings.oScroll.bAutoCss )\n\t{\n\t\tnScrollHead.style.overflow = \"hidden\";\n\t\tnScrollHead.style.position = \"relative\";\n\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\tnScrollBody.style.overflow = \"auto\";\n\t}\n\t\n\tnScrollHead.style.border = \"0\";\n\tnScrollHead.style.width = \"100%\";\n\tnScrollFoot.style.border = \"0\";\n\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\n\t/* Modify attributes to respect the clones */\n\tnScrollHeadTable.removeAttribute('id');\n\tnScrollHeadTable.style.marginLeft = \"0\";\n\toSettings.nTable.style.marginLeft = \"0\";\n\tif ( nTfoot !== null )\n\t{\n\t\tnScrollFootTable.removeAttribute('id');\n\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t}\n\t\n\t/* Move caption elements from the body to the header, footer or leave where it is\n\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\tvar nCaption = $(oSettings.nTable).children('caption');\n\tif ( nCaption.length > 0 )\n\t{\n\t\tnCaption = nCaption[0];\n\t\tif ( nCaption._captionSide === \"top\" )\n\t\t{\n\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t}\n\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t{\n\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t}\n\t}\n\t\n\t/*\n\t * Sizing\n\t */\n\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\tif ( oSettings.oScroll.sX !== \"\" )\n\t{\n\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\n\t\tif ( nTfoot !== null )\n\t\t{\n\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t}\n\t\t\n\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t$(nScrollBody).scroll( function (e) {\n\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t/* When yscrolling, add the height */\n\tif ( oSettings.oScroll.sY !== \"\" )\n\t{\n\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t}\n\t\n\t/* Redraw - align columns across the tables */\n\toSettings.aoDrawCallback.push( {\n\t\t\"fn\": _fnScrollDraw,\n\t\t\"sName\": \"scrolling\"\n\t} );\n\t\n\t/* Infinite scrolling event handlers */\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\t$(nScrollBody).scroll( function() {\n\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t{\n\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t{\n\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\toSettings.nScrollHead = nScrollHead;\n\toSettings.nScrollFoot = nScrollFoot;\n\t\n\treturn nScroller;\n}\n\n\n/**\n * Update the various tables for resizing. It's a bit of a pig this function, but\n * basically the idea to:\n *   1. Re-create the table inside the scrolling div\n *   2. Take live measurements from the DOM\n *   3. Apply the measurements\n *   4. Clean up\n *  @param {object} o dataTables settings object\n *  @returns {node} Node to add to the DOM\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollDraw ( o )\n{\n\tvar\n\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\tnScrollBody = o.nTable.parentNode,\n\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\tnTheadSize, nTfootSize,\n\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\tie67 = o.oBrowser.bScrollOversize,\n\t\tzeroOut = function(nSizer) {\n\t\t\toStyle = nSizer.style;\n\t\t\toStyle.paddingTop = \"0\";\n\t\t\toStyle.paddingBottom = \"0\";\n\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\toStyle.height = 0;\n\t\t};\n\t\n\t/*\n\t * 1. Re-create the table inside the scrolling div\n\t */\n\t\n\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t$(o.nTable).children('thead, tfoot').remove();\n\n\t/* Clone the current header and footer elements and then place it into the inner table */\n\tnTheadSize = $(o.nTHead).clone()[0];\n\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t}\n\t\n\t/*\n\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t */\n\t\n\t/* Remove old sizing and apply the calculated column widths\n\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t * calculated sizes to this header\n\t */\n\tif ( o.oScroll.sX === \"\" )\n\t{\n\t\tnScrollBody.style.width = '100%';\n\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t}\n\t\n\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t{\n\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t}\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( function(n) {\n\t\t\tn.style.width = \"\";\n\t\t}, anFootSizers );\n\t}\n\n\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t// then hide it (end of this function), so add the header height to the body scroller.\n\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t{\n\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t}\n\t\n\t/* Size the table as a whole */\n\tiSanityWidth = $(o.nTable).outerWidth();\n\tif ( o.oScroll.sX === \"\" )\n\t{\n\t\t/* No x scrolling */\n\t\to.nTable.style.width = \"100%\";\n\t\t\n\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t * into account.\n\t\t */\n\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t{\n\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t}\n\t}\n\telse\n\t{\n\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\t/* x scroll inner has been given - use it */\n\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t}\n\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t{\n\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t{\n\t\t\t\t/* Not possible to take account of it */\n\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* All else fails */\n\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t}\n\t}\n\t\n\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t * a temporary variable. This is required because the column width calculation is done\n\t * before this table DOM is created.\n\t */\n\tiSanityWidth = $(o.nTable).outerWidth();\n\t\n\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t * set the width based on the real headers\n\t */\n\t\n\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t// DOM properties.\n\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t \n\t// Read all widths in next pass. Forces layout only once because we do not change \n\t// any DOM properties.\n\t_fnApplyToChildren( function(nSizer) {\n\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t}, anHeadSizers );\n\t \n\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t// read any DOM properties.\n\t_fnApplyToChildren( function(nToSize, i) {\n\t\tnToSize.style.width = aApplied[i];\n\t}, anHeadToSize );\n\n\t$(anHeadSizers).height(0);\n\t\n\t/* Same again with the footer if we have one */\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t \n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t}, anFootSizers );\n\t\t \n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t}, anFootToSize );\n\n\t\t$(anFootSizers).height(0);\n\t}\n\t\n\t/*\n\t * 3. Apply the measurements\n\t */\n\t\n\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t * to what they currently are\n\t */\n\t_fnApplyToChildren( function(nSizer, i) {\n\t\tnSizer.innerHTML = \"\";\n\t\tnSizer.style.width = aApplied[i];\n\t}, anHeadSizers );\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = \"\";\n\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t}, anFootSizers );\n\t}\n\t\n\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t */\n\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t{\n\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\n\t\t/* IE6/7 are a law unto themselves... */\n\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t{\n\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t}\n\t\t\n\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\n\t\tif ( o.nTFoot !== null )\n\t\t{\n\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t}\n\t\t\n\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\tif ( o.oScroll.sX === \"\" )\n\t\t{\n\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t}\n\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\" calculation\" );\n\t\t}\n\t}\n\telse\n\t{\n\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\n\t\tif ( o.nTFoot !== null )\n\t\t{\n\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * 4. Clean up\n\t */\n\tif ( o.oScroll.sY === \"\" )\n\t{\n\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t */\n\t\tif ( ie67 )\n\t\t{\n\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t}\n\t}\n\t\n\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t{\n\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\n\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t \to.oScroll.iBarWidth : 0;\n\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t{\n\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t}\n\t}\n\t\n\t/* Finally set the width's of the header and footer tables */\n\tvar iOuterWidth = $(o.nTable).outerWidth();\n\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\n\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t}\n\n\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t$(nScrollBody).scroll();\n\t\n\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\tif ( o.bSorted || o.bFiltered )\n\t{\n\t\tnScrollBody.scrollTop = 0;\n\t}\n}\n\n\n/**\n * Apply a given function to the display child nodes of an element array (typically\n * TD children of TR rows\n *  @param {function} fn Method to apply to the objects\n *  @param array {nodes} an1 List of elements to look through for display children\n *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyToChildren( fn, an1, an2 )\n{\n\tvar index=0, i=0, iLen=an1.length;\n\tvar nNode1, nNode2;\n\n\twhile ( i < iLen )\n\t{\n\t\tnNode1 = an1[i].firstChild;\n\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\twhile ( nNode1 )\n\t\t{\n\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t{\n\t\t\t\tif ( an2 )\n\t\t\t\t{\n\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t}\n\t\ti++;\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sizing.js",
    "content": "/**\n * Convert a CSS unit width to pixels (e.g. 2em)\n *  @param {string} sWidth width to be converted\n *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n *  @returns {int} iWidth width in pixels\n *  @memberof DataTable#oApi\n */\nfunction _fnConvertToWidth ( sWidth, nParent )\n{\n\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t{\n\t\treturn 0;\n\t}\n\t\n\tif ( !nParent )\n\t{\n\t\tnParent = document.body;\n\t}\n\t\n\tvar iWidth;\n\tvar nTmp = document.createElement( \"div\" );\n\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\n\tnParent.appendChild( nTmp );\n\tiWidth = nTmp.offsetWidth;\n\tnParent.removeChild( nTmp );\n\t\n\treturn ( iWidth );\n}\n\n\n/**\n * Calculate the width of columns for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnCalculateColumnWidths ( oSettings )\n{\n\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\tvar iUserInputs = 0;\n\tvar iTmpWidth;\n\tvar iVisibleColumns = 0;\n\tvar iColums = oSettings.aoColumns.length;\n\tvar i, iIndex, iCorrector, iWidth;\n\tvar oHeaders = $('th', oSettings.nTHead);\n\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\tvar nWrapper = oSettings.nTable.parentNode;\n\t\n\t/* Convert any user input sizes into pixel sizes */\n\tfor ( i=0 ; i<iColums ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t{\n\t\t\tiVisibleColumns++;\n\t\t\t\n\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t{\n\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\tnWrapper );\n\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\tiUserInputs++;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* If the number of columns in the DOM equals the number that we have to process in \n\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t * sizes can be set in order for this to happen, nor scrolling used\n\t */\n\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t{\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\tif ( iTmpWidth !== null )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t * calculating table widths.\n\t\t */\n\t\tvar\n\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\tnDivSizing;\n\t\t\n\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\tnCalcTmp.appendChild( nTheadClone );\n\t\tif ( oSettings.nTFoot !== null )\n\t\t{\n\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t}\n\t\t\n\t\tnCalcTmp.appendChild( nBody );\n\t\tnBody.appendChild( nTr );\n\t\t\n\t\t/* Remove any sizing that was previously applied by the styles */\n\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\tif ( jqColSizing.length === 0 )\n\t\t{\n\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t}\n\n\t\t/* Apply custom sizing to the cloned header */\n\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\tiCorrector = 0;\n\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t{\n\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t{\n\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t}\n\t\t\telse if ( oColumn.bVisible )\n\t\t\t{\n\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\n\t\t/* Find the biggest td for each column and put it into the table */\n\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\tif ( nTd !== null )\n\t\t\t\t{\n\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t}\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Build the table and 'display' it */\n\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\n\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t * but I think correct behaviour\n\t\t */\n\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t}\n\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = \"\";\n\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t{\n\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t}\n\t\t}\n\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t}\n\t\telse if ( widthAttr )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t}\n\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\n\t\t/* Scrolling considerations */\n\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\n\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t * no elements there, under which circumstances we use the header elements\n\t\t */\n\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\tif ( oNodes.length === 0 )\n\t\t{\n\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t}\n\n\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t * should be by summing the user given values, and the automatic values\n\t\t */\n\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tvar iTotal = 0;\n\t\t\tiCorrector = 0;\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t}\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t}\n\n\t\tiCorrector = 0;\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t}\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\n\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t}\n\n\tif ( widthAttr )\n\t{\n\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t}\n}\n\n\n/**\n * Adjust a table's width to take account of scrolling\n *  @param {object} oSettings dataTables settings object\n *  @param {node} n table node\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollingWidthAdjust ( oSettings, n )\n{\n\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t{\n\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t * + scroll bar will fit into the area avaialble.\n\t\t */\n\t\tvar iOrigWidth = $(n).width();\n\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t}\n\telse if ( oSettings.oScroll.sX !== \"\" )\n\t{\n\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t}\n}\n\n\n/**\n * Get the widest node\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column of interest\n *  @returns {node} widest table node\n *  @memberof DataTable#oApi\n */\nfunction _fnGetWidestNode( oSettings, iCol )\n{\n\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\tif ( iMaxIndex < 0 )\n\t{\n\t\treturn null;\n\t}\n\n\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t{\n\t\tvar n = document.createElement('td');\n\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\treturn n;\n\t}\n\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n}\n\n\n/**\n * Get the maximum strlen for each data column\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column of interest\n *  @returns {string} max string length for each column\n *  @memberof DataTable#oApi\n */\nfunction _fnGetMaxLenString( oSettings, iCol )\n{\n\tvar iMax = -1;\n\tvar iMaxIndex = -1;\n\t\n\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t{\n\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\tif ( s.length > iMax )\n\t\t{\n\t\t\tiMax = s.length;\n\t\t\tiMaxIndex = i;\n\t\t}\n\t}\n\t\n\treturn iMaxIndex;\n}\n\n\n/**\n * Append a CSS unit (only if required) to a string\n *  @param {array} aArray1 first array\n *  @param {array} aArray2 second array\n *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n *  @memberof DataTable#oApi\n */\nfunction _fnStringToCss( s )\n{\n\tif ( s === null )\n\t{\n\t\treturn \"0px\";\n\t}\n\t\n\tif ( typeof s == 'number' )\n\t{\n\t\tif ( s < 0 )\n\t\t{\n\t\t\treturn \"0px\";\n\t\t}\n\t\treturn s+\"px\";\n\t}\n\t\n\t/* Check if the last character is not 0-9 */\n\tvar c = s.charCodeAt( s.length-1 );\n\tif (c < 0x30 || c > 0x39)\n\t{\n\t\treturn s;\n\t}\n\treturn s+\"px\";\n}\n\n\n/**\n * Get the width of a scroll bar in this browser being used\n *  @returns {int} width in pixels\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollBarWidth ()\n{  \n\tvar inner = document.createElement('p');\n\tvar style = inner.style;\n\tstyle.width = \"100%\";\n\tstyle.height = \"200px\";\n\tstyle.padding = \"0px\";\n\t\n\tvar outer = document.createElement('div');\n\tstyle = outer.style;\n\tstyle.position = \"absolute\";\n\tstyle.top = \"0px\";\n\tstyle.left = \"0px\";\n\tstyle.visibility = \"hidden\";\n\tstyle.width = \"200px\";\n\tstyle.height = \"150px\";\n\tstyle.padding = \"0px\";\n\tstyle.overflow = \"hidden\";\n\touter.appendChild(inner);\n\t\n\tdocument.body.appendChild(outer);\n\tvar w1 = inner.offsetWidth;\n\touter.style.overflow = 'scroll';\n\tvar w2 = inner.offsetWidth;\n\tif ( w1 == w2 )\n\t{\n\t\tw2 = outer.clientWidth;\n\t}\n\t\n\tdocument.body.removeChild(outer);\n\treturn (w1 - w2);  \n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sort.js",
    "content": "/**\n * Change the order of the table\n *  @param {object} oSettings dataTables settings object\n *  @param {bool} bApplyClasses optional - should we apply classes or not\n *  @memberof DataTable#oApi\n */\nfunction _fnSort ( oSettings, bApplyClasses )\n{\n\tvar\n\t\ti, iLen, j, jLen, k, kLen,\n\t\tsDataType, nTh,\n\t\taaSort = [],\n\t \taiOrig = [],\n\t\toSort = DataTable.ext.oSort,\n\t\taoData = oSettings.aoData,\n\t\taoColumns = oSettings.aoColumns,\n\t\toAria = oSettings.oLanguage.oAria;\n\t\n\t/* No sorting required if server-side or no sorting array */\n\tif ( !oSettings.oFeatures.bServerSide && \n\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t{\n\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\toSettings.aaSorting.slice();\n\t\t\n\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t * get the data from the developer's function and apply it for this column\n\t\t */\n\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t{\n\t\t\tvar iColumn = aaSort[i][0];\n\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t{\n\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t);\n\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t */\n\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t}\n\n\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t * function runs. This make the sorting function a very simple comparison\n\t\t */\n\t\tvar iSortLen = aaSort.length;\n\t\tvar fnSortFormat, aDataSort;\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t{\n\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\n\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\n\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t *  fnLocalSorting = function(a,b){\n\t\t *  \tvar iTest;\n\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t *  \tif (iTest !== 0)\n\t\t *  \t\treturn iTest;\n\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t *    if (iTest !== 0)\n\t\t *  \t\treturn iTest;\n\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t *  }\n\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t * positions in the original data array to provide a stable sort.\n\t\t */\n\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t{\n\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\n\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t{\n\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\n\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t);\n\t\t\t\t\n\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t} );\n\t}\n\t\n\t/* Alter the sorting classes to take account of the changes */\n\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t{\n\t\t_fnSortingClasses( oSettings );\n\t}\n\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\tnTh = aoColumns[i].nTh;\n\t\tnTh.removeAttribute('aria-sort');\n\t\tnTh.removeAttribute('aria-label');\n\t\t\n\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\tif ( aoColumns[i].bSortable )\n\t\t{\n\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t{\n\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\n\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t}\n\t}\n\t\n\t/* Tell the draw function that we have sorted the data */\n\toSettings.bSorted = true;\n\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\n\t/* Copy the master data into the draw array and re-draw */\n\tif ( oSettings.oFeatures.bFilter )\n\t{\n\t\t/* _fnFilter() will redraw the table for us */\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t}\n\telse\n\t{\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n}\n\n\n/**\n * Attach a sort handler (click) to a node\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nNode node to attach the handler to\n *  @param {int} iDataIndex column sorting index\n *  @param {function} [fnCallback] callback function\n *  @memberof DataTable#oApi\n */\nfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n{\n\t_fnBindAction( nNode, {}, function (e) {\n\t\t/* If the column is not sortable - don't to anything */\n\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t/*\n\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t * disabled, as we need to perform slightly different actions.\n\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t * too early), so we only do it when we absolutely have to.\n\t\t */\n\t\tvar fnInnerSorting = function () {\n\t\t\tvar iColumn, iNextSort;\n\t\t\t\n\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\tif ( e.shiftKey )\n\t\t\t{\n\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\tvar bFound = false;\n\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t{\n\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* No sort yet - add it in */\n\t\t\t\tif ( bFound === false )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t{\n\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t{\n\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Run the sort */\n\t\t\t_fnSort( oSettings );\n\t\t}; /* /fnInnerSorting */\n\t\t\n\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t{\n\t\t\tfnInnerSorting();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\tsetTimeout( function() {\n\t\t\t\tfnInnerSorting();\n\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t}\n\t\t\n\t\t/* Call the user specified callback function - used for async user interaction */\n\t\tif ( typeof fnCallback == 'function' )\n\t\t{\n\t\t\tfnCallback( oSettings );\n\t\t}\n\t} );\n}\n\n\n/**\n * Set the sorting classes on the header, Note: it is safe to call this function \n * when bSort and bSortClasses are false\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSortingClasses( oSettings )\n{\n\tvar i, iLen, j, jLen, iFound;\n\tvar aaSort, sClass;\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar oClasses = oSettings.oClasses;\n\t\n\tfor ( i=0 ; i<iColumns ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t{\n\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t}\n\t}\n\t\n\tif ( oSettings.aaSortingFixed !== null )\n\t{\n\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t}\n\telse\n\t{\n\t\taaSort = oSettings.aaSorting.slice();\n\t}\n\t\n\t/* Apply the required classes to the header */\n\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t{\n\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\tiFound = -1;\n\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t{\n\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t{\n\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\tiFound = j;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\n\t\t\t\tvar sSpanClass;\n\t\t\t\tif ( iFound == -1 )\n\t\t\t\t{\n\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t}\n\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t{\n\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t * _fnAddColumn\n\t\t\t */\n\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t}\n\t}\n\t\n\t/* \n\t * Apply the required classes to the table body\n\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t * row found to see if the whole column needs processed can miss classes since the first\n\t * column might be new.\n\t */\n\tsClass = oClasses.sSortColumn;\n\t\n\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t{\n\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\n\t\t/* Determine what the sorting class for each column should be */\n\t\tvar iClass, iTargetCol;\n\t\tvar asClasses = [];\n\t\tfor (i = 0; i < iColumns; i++)\n\t\t{\n\t\t\tasClasses.push(\"\");\n\t\t}\n\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t{\n\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\n\t\t\tif ( iClass < 3 )\n\t\t\t{\n\t\t\t\tiClass++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Make changes to the classes for each cell as needed */\n\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t{\n\t\t\t/* Determine which column we're looking at */\n\t\t\tiTargetCol = i % iColumns;\n\t\t\t\n\t\t\t/* What is the full list of classes now */\n\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t/* What sorting class should be applied? */\n\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\n\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t{\n\t\t\t\t/* We changed something */\n\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t}\n\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t{\n\t\t\t\t/* We need to add a class */\n\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.state.js",
    "content": "\n\n/**\n * Save the state of a table in a cookie such that the page can be reloaded\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSaveState ( oSettings )\n{\n\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t{\n\t\treturn;\n\t}\n\n\t/* Store the interesting variables */\n\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\tvar oState = {\n\t\t\"iCreate\":      new Date().getTime(),\n\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\"abVisCols\":    []\n\t};\n\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t}\n\n\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\n\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n}\n\n\n/**\n * Attempt to load a saved table state from a cookie\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oInit DataTables init object so we can override settings\n *  @memberof DataTable#oApi\n */\nfunction _fnLoadState ( oSettings, oInit )\n{\n\tif ( !oSettings.oFeatures.bStateSave )\n\t{\n\t\treturn;\n\t}\n\n\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\tif ( !oData )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t * cancelling of loading by returning false\n\t */\n\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Store the saved state so it might be accessed at any time */\n\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\n\t/* Restore key features */\n\toSettings._iDisplayStart    = oData.iStart;\n\toSettings.iInitDisplayStart = oData.iStart;\n\toSettings._iDisplayEnd      = oData.iEnd;\n\toSettings._iDisplayLength   = oData.iLength;\n\toSettings.aaSorting         = oData.aaSorting.slice();\n\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\n\t/* Search filtering  */\n\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\n\t/* Column visibility state\n\t * Pass back visibility settings to the init handler, but to do not here override\n\t * the init object that the user might have passed in\n\t */\n\toInit.saved_aoColumns = [];\n\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t{\n\t\toInit.saved_aoColumns[i] = {};\n\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t}\n\n\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n}\n\n\n/**\n * Create a new cookie with a value to store the state of a table\n *  @param {string} sName name of the cookie to create\n *  @param {string} sValue the value the cookie should take\n *  @param {int} iSecs duration of the cookie\n *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n *  @param {function} fnCallback User definable function to modify the cookie\n *  @memberof DataTable#oApi\n */\nfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n{\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\n\t/* \n\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t * patch to use at least some of the path\n\t */\n\tvar aParts = window.location.pathname.split('/');\n\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\tvar sFullCookie, oData;\n\t\n\tif ( fnCallback !== null )\n\t{\n\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\taParts.join('/')+\"/\" );\n\t}\n\telse\n\t{\n\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t}\n\t\n\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t * belonging to DataTables.\n\t */\n\tvar\n\t\taCookies =document.cookie.split(';'),\n\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\taOldCookies = [];\n\t\n\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t{\n\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t{\n\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\ttry {\n\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\n\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t{\n\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch( e ) {}\n\t\t\t}\n\t\t}\n\n\t\t// Make sure we delete the oldest ones first\n\t\taOldCookies.sort( function (a, b) {\n\t\t\treturn b.time - a.time;\n\t\t} );\n\n\t\t// Eliminate as many old DataTables cookies as we need to\n\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar old = aOldCookies.pop();\n\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\taParts.join('/') + \"/\";\n\t\t}\n\t}\n\t\n\tdocument.cookie = sFullCookie;\n}\n\n\n/**\n * Read an old cookie to get a cookie with an old table state\n *  @param {string} sName name of the cookie to read\n *  @returns {string} contents of the cookie - or null if no cookie with that name found\n *  @memberof DataTable#oApi\n */\nfunction _fnReadCookie ( sName )\n{\n\tvar\n\t\taParts = window.location.pathname.split('/'),\n\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t \tsCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t{\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ')\n\t\t{\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t{\n\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t}\n\t}\n\treturn null;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.support.js",
    "content": "\n/**\n * Return the settings object for a particular table\n *  @param {node} nTable table we are using as a dataTable\n *  @returns {object} Settings object - or null if not found\n *  @memberof DataTable#oApi\n */\nfunction _fnSettingsFromNode ( nTable )\n{\n\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t{\n\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t{\n\t\t\treturn DataTable.settings[i];\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n\n/**\n * Return an array with the TR nodes for the table\n *  @param {object} oSettings dataTables settings object\n *  @returns {array} TR array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetTrNodes ( oSettings )\n{\n\tvar aNodes = [];\n\tvar aoData = oSettings.aoData;\n\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( aoData[i].nTr !== null )\n\t\t{\n\t\t\taNodes.push( aoData[i].nTr );\n\t\t}\n\t}\n\treturn aNodes;\n}\n\n\n/**\n * Return an flat array with all TD nodes for the table, or row\n *  @param {object} oSettings dataTables settings object\n *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n *    if not given then the return array will contain all nodes for the table\n *  @returns {array} TD array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n{\n\tvar anReturn = [];\n\tvar iCorrector;\n\tvar anTds, nTd;\n\tvar iRow, iRows=oSettings.aoData.length,\n\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\n\t/* Allow the collection to be limited to just one row */\n\tif ( iIndividualRow !== undefined )\n\t{\n\t\tiStart = iIndividualRow;\n\t\tiEnd = iIndividualRow+1;\n\t}\n\n\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t{\n\t\toData = oSettings.aoData[iRow];\n\t\tif ( oData.nTr !== null )\n\t\t{\n\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\tanTds = [];\n\t\t\tnTd = oData.nTr.firstChild;\n\t\t\twhile ( nTd )\n\t\t\t{\n\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t{\n\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t}\n\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t}\n\n\t\t\tiCorrector = 0;\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t{\n\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn anReturn;\n}\n\n\n/**\n * Log an error message\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iLevel log error messages, or display them to the user\n *  @param {string} sMesg error message\n *  @memberof DataTable#oApi\n */\nfunction _fnLog( oSettings, iLevel, sMesg )\n{\n\tvar sAlert = (oSettings===null) ?\n\t\t\"DataTables warning: \"+sMesg :\n\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\n\tif ( iLevel === 0 )\n\t{\n\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t{\n\t\t\talert( sAlert );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(sAlert);\n\t\t}\n\t\treturn;\n\t}\n\telse if ( window.console && console.log )\n\t{\n\t\tconsole.log( sAlert );\n\t}\n}\n\n\n/**\n * See if a property is defined on one object, if so assign it to the other object\n *  @param {object} oRet target object\n *  @param {object} oSrc source object\n *  @param {string} sName property\n *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n *  @memberof DataTable#oApi\n */\nfunction _fnMap( oRet, oSrc, sName, sMappedName )\n{\n\tif ( sMappedName === undefined )\n\t{\n\t\tsMappedName = sName;\n\t}\n\tif ( oSrc[sName] !== undefined )\n\t{\n\t\toRet[sMappedName] = oSrc[sName];\n\t}\n}\n\n\n/**\n * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n * we do want to deep copy arrays.\n *  @param {object} oOut Object to extend\n *  @param {object} oExtender Object from which the properties will be applied to oOut\n *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n *  @memberof DataTable#oApi\n *  @todo This doesn't take account of arrays inside the deep copied objects.\n */\nfunction _fnExtend( oOut, oExtender )\n{\n\tvar val;\n\t\n\tfor ( var prop in oExtender )\n\t{\n\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t{\n\t\t\tval = oExtender[prop];\n\n\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t{\n\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toOut[prop] = val;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oOut;\n}\n\n\n/**\n * Bind an event handers to allow a click or return key to activate the callback.\n * This is good for accessibility since a return on the keyboard will have the\n * same effect as a click, if the element has focus.\n *  @param {element} n Element to bind the action to\n *  @param {object} oData Data object to pass to the triggered function\n *  @param {function} fn Callback function for when the event is triggered\n *  @memberof DataTable#oApi\n */\nfunction _fnBindAction( n, oData, fn )\n{\n\t$(n)\n\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\tfn(e);\n\t\t\t} )\n\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\tif ( e.which === 13 ) {\n\t\t\t\tfn(e);\n\t\t\t} } )\n\t\t.bind( 'selectstart.DT', function () {\n\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\treturn false;\n\t\t\t} );\n}\n\n\n/**\n * Register a callback function. Easily allows a callback function to be added to\n * an array store of callback functions that can then all be called together.\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n *  @param {function} fn Function to be called back\n *  @param {string} sName Identifying name for the callback (i.e. a label)\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n{\n\tif ( fn )\n\t{\n\t\toSettings[sStore].push( {\n\t\t\t\"fn\": fn,\n\t\t\t\"sName\": sName\n\t\t} );\n\t}\n}\n\n\n/**\n * Fire callback functions and trigger events. Note that the loop over the callback\n * array store is done backwards! Further note that you do not want to fire off triggers\n * in time sensitive applications (for example cell creation) as its slow.\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n *    is fired\n *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n{\n\tvar aoStore = oSettings[sStore];\n\tvar aRet =[];\n\n\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t{\n\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t}\n\n\tif ( sTrigger !== null )\n\t{\n\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t}\n\n\treturn aRet;\n}\n\n\n/**\n * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n * library, then we use that as it is fast, safe and accurate. If the function isn't \n * available then we need to built it ourselves - the inspiration for this function comes\n * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n * do what we need, without requiring a dependency for DataTables.\n *  @param {object} o JSON object to be converted\n *  @returns {string} JSON string\n *  @memberof DataTable#oApi\n */\nvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n{\n\t/* Not an object or array */\n\tvar sType = typeof o;\n\tif (sType !== \"object\" || o === null)\n\t{\n\t\t// simple data type\n\t\tif (sType === \"string\")\n\t\t{\n\t\t\to = '\"'+o+'\"';\n\t\t}\n\t\treturn o+\"\";\n\t}\n\n\t/* If object or array, need to recurse over it */\n\tvar\n\t\tsProp, mValue,\n\t\tjson = [],\n\t\tbArr = $.isArray(o);\n\t\n\tfor (sProp in o)\n\t{\n\t\tmValue = o[sProp];\n\t\tsType = typeof mValue;\n\n\t\tif (sType === \"string\")\n\t\t{\n\t\t\tmValue = '\"'+mValue+'\"';\n\t\t}\n\t\telse if (sType === \"object\" && mValue !== null)\n\t\t{\n\t\t\tmValue = _fnJsonString(mValue);\n\t\t}\n\n\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t}\n\n\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n};\n\n\n/**\n * From some browsers (specifically IE6/7) we need special handling to work around browser\n * bugs - this function is used to detect when these workarounds are needed.\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBrowserDetect( oSettings )\n{\n\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t * without forcing scrolling\n\t */\n\tvar n = $(\n\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t'</div>'+\n\t\t'</div>')[0];\n\n\tdocument.body.appendChild( n );\n\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\tdocument.body.removeChild( n );\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.classes.js",
    "content": "\n$.extend( DataTable.ext.oStdClasses, {\n\t\"sTable\": \"dataTable\",\n\n\t/* Two buttons buttons */\n\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\"sPageJUINext\": \"\",\n\t\"sPageJUIPrev\": \"\",\n\t\n\t/* Full numbers paging buttons */\n\t\"sPageButton\": \"paginate_button\",\n\t\"sPageButtonActive\": \"paginate_active\",\n\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\"sPageFirst\": \"first\",\n\t\"sPagePrevious\": \"previous\",\n\t\"sPageNext\": \"next\",\n\t\"sPageLast\": \"last\",\n\t\n\t/* Striping classes */\n\t\"sStripeOdd\": \"odd\",\n\t\"sStripeEven\": \"even\",\n\t\n\t/* Empty row */\n\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t/* Features */\n\t\"sWrapper\": \"dataTables_wrapper\",\n\t\"sFilter\": \"dataTables_filter\",\n\t\"sInfo\": \"dataTables_info\",\n\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\"sLength\": \"dataTables_length\",\n\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t/* Sorting */\n\t\"sSortAsc\": \"sorting_asc\",\n\t\"sSortDesc\": \"sorting_desc\",\n\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\"sSortableNone\": \"sorting_disabled\",\n\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\"sSortJUIAsc\": \"\",\n\t\"sSortJUIDesc\": \"\",\n\t\"sSortJUI\": \"\",\n\t\"sSortJUIAscAllowed\": \"\",\n\t\"sSortJUIDescAllowed\": \"\",\n\t\"sSortJUIWrapper\": \"\",\n\t\"sSortIcon\": \"\",\n\t\n\t/* Scrolling */\n\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t/* Misc */\n\t\"sFooterTH\": \"\",\n\t\"sJUIHeader\": \"\",\n\t\"sJUIFooter\": \"\"\n} );\n\n\n$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t/* Two buttons buttons */\n\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\n\t/* Full numbers paging buttons */\n\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\n\t/* Features */\n\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\n\t/* Sorting */\n\t\"sSortAsc\": \"ui-state-default\",\n\t\"sSortDesc\": \"ui-state-default\",\n\t\"sSortable\": \"ui-state-default\",\n\t\"sSortableAsc\": \"ui-state-default\",\n\t\"sSortableDesc\": \"ui-state-default\",\n\t\"sSortableNone\": \"ui-state-default\",\n\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\n\t/* Scrolling */\n\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\n\t/* Misc */\n\t\"sFooterTH\": \"ui-state-default\",\n\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n} );\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.paging.js",
    "content": "/*\n * Variable: oPagination\n * Purpose:  \n * Scope:    jQuery.fn.dataTableExt\n */\n$.extend( DataTable.ext.oPagination, {\n\t/*\n\t * Variable: two_button\n\t * Purpose:  Standard two button (forward/back) pagination\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"two_button\": {\n\t\t/*\n\t\t * Function: oPagination.two_button.fnInit\n\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t */\n\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t{\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t{\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t:\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t$(nPaging).append( sAppend );\n\t\t\t\n\t\t\tvar els = $('a', nPaging);\n\t\t\tvar nPrevious = els[0],\n\t\t\t\tnNext = els[1];\n\t\t\t\n\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\n\t\t\t/* ID the first elements only */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\n\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: oPagination.two_button.fnUpdate\n\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t */\n\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t{\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar nNode;\n\n\t\t\t/* Loop over each instance of the pager */\n\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\tif ( nNode )\n\t\t\t\t{\n\t\t\t\t\t/* Previous page */\n\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t    \n\t\t\t\t\t/* Next page */\n\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/*\n\t * Variable: iFullNumbersShowPages\n\t * Purpose:  Change the number of pages which can be seen\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"iFullNumbersShowPages\": 5,\n\t\n\t/*\n\t * Variable: full_numbers\n\t * Purpose:  Full numbers pagination\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"full_numbers\": {\n\t\t/*\n\t\t * Function: oPagination.full_numbers.fnInit\n\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t */\n\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t{\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t{\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(nPaging).append(\n\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t'<span></span>'+\n\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t);\n\t\t\tvar els = $('a', nPaging);\n\t\t\tvar nFirst = els[0],\n\t\t\t\tnPrev = els[1],\n\t\t\t\tnNext = els[2],\n\t\t\t\tnLast = els[3];\n\t\t\t\n\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\n\t\t\t/* ID the first elements only */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t * Purpose:  Update the list of page buttons shows\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t */\n\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t{\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\tvar sList = \"\";\n\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar fnBind = function (j) {\n\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\te.preventDefault();\n\t\t\t\t} );\n\t\t\t};\n\t\t\t\n\t\t\t/* Pages calculation */\n\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = 1;\n\t\t\t\tiCurrentPage = 1;\n\t\t\t}\n\t\t\telse if (iPages < iPageCount)\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = iPages;\n\t\t\t}\n\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = iPageCount;\n\t\t\t}\n\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t{\n\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\tiEndButton = iPages;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t}\n\n\t\t\t\n\t\t\t/* Build the dynamic list */\n\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t{\n\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t}\n\t\t\t\n\t\t\t/* Loop over each instance of the pager */\n\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnNode = an[i];\n\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t.html( sList )\n\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\n\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\tanStatic = [\n\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t];\n\n\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t);\n\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n} );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.sorting.js",
    "content": "\n$.extend( DataTable.ext.oSort, {\n\t/*\n\t * text sorting\n\t */\n\t\"string-pre\": function ( a )\n\t{\n\t\tif ( typeof a != 'string' ) {\n\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t}\n\t\treturn a.toLowerCase();\n\t},\n\n\t\"string-asc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t},\n\t\n\t\"string-desc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t},\n\t\n\t\n\t/*\n\t * html sorting (ignore html tags)\n\t */\n\t\"html-pre\": function ( a )\n\t{\n\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t},\n\t\n\t\"html-asc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t},\n\t\n\t\"html-desc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t},\n\t\n\t\n\t/*\n\t * date sorting\n\t */\n\t\"date-pre\": function ( a )\n\t{\n\t\tvar x = Date.parse( a );\n\t\t\n\t\tif ( isNaN(x) || x===\"\" )\n\t\t{\n\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t}\n\t\treturn x;\n\t},\n\n\t\"date-asc\": function ( x, y )\n\t{\n\t\treturn x - y;\n\t},\n\t\n\t\"date-desc\": function ( x, y )\n\t{\n\t\treturn y - x;\n\t},\n\t\n\t\n\t/*\n\t * numerical sorting\n\t */\n\t\"numeric-pre\": function ( a )\n\t{\n\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t},\n\n\t\"numeric-asc\": function ( x, y )\n\t{\n\t\treturn x - y;\n\t},\n\t\n\t\"numeric-desc\": function ( x, y )\n\t{\n\t\treturn y - x;\n\t}\n} );\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.types.js",
    "content": "\n\n$.extend( DataTable.ext.aTypes, [\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string is numeric\n\t * Returns:  string:'numeric' or null\n\t * Inputs:   mixed:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\t/* Allow zero length strings as a number */\n\t\tif ( typeof sData === 'number' )\n\t\t{\n\t\t\treturn 'numeric';\n\t\t}\n\t\telse if ( typeof sData !== 'string' )\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tvar sValidFirstChars = \"0123456789-\";\n\t\tvar sValidChars = \"0123456789.\";\n\t\tvar Char;\n\t\tvar bDecimal = false;\n\t\t\n\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\tChar = sData.charAt(0); \n\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t/* Check all the other characters are valid */\n\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t{\n\t\t\tChar = sData.charAt(i); \n\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Only allowed one decimal place... */\n\t\t\tif ( Char == \".\" )\n\t\t\t{\n\t\t\t\tif ( bDecimal )\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tbDecimal = true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn 'numeric';\n\t},\n\t\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string is actually a formatted date\n\t * Returns:  string:'date' or null\n\t * Inputs:   string:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\tvar iParse = Date.parse(sData);\n\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t{\n\t\t\treturn 'date';\n\t\t}\n\t\treturn null;\n\t},\n\t\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t * Returns:  string:'html' or null\n\t * Inputs:   string:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t{\n\t\t\treturn 'html';\n\t\t}\n\t\treturn null;\n\t}\n] );\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.column.js",
    "content": "\n\n\n/**\n * Template object for the column information object in DataTables. This object\n * is held in the settings aoColumns array and contains all the information that\n * DataTables needs about each individual column.\n * \n * Note that this object is related to {@link DataTable.defaults.columns} \n * but this one is the internal data store for DataTables's cache of columns.\n * It should NOT be manipulated outside of DataTables. Any configuration should\n * be done through the initialisation options.\n *  @namespace\n */\nDataTable.models.oColumn = {\n\t/**\n\t * A list of the columns that sorting should occur on when this column\n\t * is sorted. That this property is an array allows multi-column sorting\n\t * to be defined for a column (for example first name / last name columns\n\t * would benefit from this). The values are integers pointing to the\n\t * columns to be sorted on (typically it will be a single integer pointing\n\t * at itself, but that doesn't need to be the case).\n\t *  @type array\n\t */\n\t\"aDataSort\": null,\n\n\t/**\n\t * Define the sorting directions that are applied to the column, in sequence\n\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t * as the sorting direction when the column if first sorted (clicked on).\n\t * Sort it again (click again) and it will move on to the next index.\n\t * Repeat until loop.\n\t *  @type array\n\t */\n\t\"asSorting\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is searchable, and thus should be included\n\t * in the filtering or not.\n\t *  @type boolean\n\t */\n\t\"bSearchable\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is sortable or not.\n\t *  @type boolean\n\t */\n\t\"bSortable\": null,\n\t\n\t/**\n\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t * to do with the data, and this property serves as the switch. Firstly, you \n\t * can have the sorting and filtering use the rendered value (true - default), \n\t * or you can have the sorting and filtering us the original value (false).\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type boolean\n\t *  @deprecated\n\t */\n\t\"bUseRendered\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is currently visible in the table or not\n\t *  @type boolean\n\t */\n\t\"bVisible\": null,\n\t\n\t/**\n\t * Flag to indicate to the type detection method if the automatic type\n\t * detection should be used, or if a column type (sType) has been specified\n\t *  @type boolean\n\t *  @default true\n\t *  @private\n\t */\n\t\"_bAutoType\": true,\n\t\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} nTd The TD node that has been created\n\t *  @param {*} sData The Data for the cell\n\t *  @param {array|object} oData The data for the whole row\n\t *  @param {int} iRow The row index for the aoData data store\n\t *  @default null\n\t */\n\t\"fnCreatedCell\": null,\n\t\n\t/**\n\t * Function to get data from a cell in a column. You should <b>never</b>\n\t * access data directly through _aData internally in DataTables - always use\n\t * the method attached to this property. It allows mData to function as\n\t * required. This function is automatically assigned by the column \n\t * initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array \n\t *    (i.e. aoData[]._aData)\n\t *  @param {string} sSpecific The specific data type you want to get - \n\t *    'display', 'type' 'filter' 'sort'\n\t *  @returns {*} The data for the cell from the given row's data\n\t *  @default null\n\t */\n\t\"fnGetData\": null,\n\t\n\t/**\n\t * <code>Deprecated</code> Custom display function that will be called for the \n\t * display of each cell in this column.\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type function\n\t *  @param {object} o Object with the following parameters:\n\t *  @param {int}    o.iDataRow The row in aoData\n\t *  @param {int}    o.iDataColumn The column in question\n\t *  @param {array}  o.aData The data for the row in question\n\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t *  @returns {string} The string you which to use in the display\n\t *  @default null\n\t *  @deprecated\n\t */\n\t\"fnRender\": null,\n\t\n\t/**\n\t * Function to set data for a cell in the column. You should <b>never</b> \n\t * set the data directly to _aData internally in DataTables - always use\n\t * this method. It allows mData to function as required. This function\n\t * is automatically assigned by the column initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array \n\t *    (i.e. aoData[]._aData)\n\t *  @param {*} sValue Value to set\n\t *  @default null\n\t */\n\t\"fnSetData\": null,\n\t\n\t/**\n\t * Property to read the value for the cells in the column from the data \n\t * source array / object. If null, then the default content is used, if a\n\t * function is given then the return from the function is used.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mData\": null,\n\t\n\t/**\n\t * Partner property to mData which is used (only when defined) to get\n\t * the data - i.e. it is basically the same as mData, but without the\n\t * 'set' option, and also the data fed to it is the result from mData.\n\t * This is the rendering method to match the data method of mData.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mRender\": null,\n\t\n\t/**\n\t * Unique header TH/TD element for this column - this is what the sorting\n\t * listener is attached to (if sorting is enabled.)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTh\": null,\n\t\n\t/**\n\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t * in DataTables as such, but can be used for plug-ins to reference the \n\t * footer for each column.\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTf\": null,\n\t\n\t/**\n\t * The class to apply to all TD elements in the table's TBODY for the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sClass\": null,\n\t\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t *  @type string\n\t */\n\t\"sContentPadding\": null,\n\t\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because mData\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDefaultContent\": null,\n\t\n\t/**\n\t * Name for the column, allowing reference to the column by name as well as\n\t * by index (needs a lookup to work by name).\n\t *  @type string\n\t */\n\t\"sName\": null,\n\t\n\t/**\n\t * Custom sorting data type - defines which of the available plug-ins in\n\t * afnSortData the custom sorting will use - if any is defined.\n\t *  @type string\n\t *  @default std\n\t */\n\t\"sSortDataType\": 'std',\n\t\n\t/**\n\t * Class to be applied to the header element when sorting on this column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClass\": null,\n\t\n\t/**\n\t * Class to be applied to the header element when sorting on this column -\n\t * when jQuery UI theming is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClassJUI\": null,\n\t\n\t/**\n\t * Title of the column - what is seen in the TH element (nTh).\n\t *  @type string\n\t */\n\t\"sTitle\": null,\n\t\n\t/**\n\t * Column sorting and filtering type\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sType\": null,\n\t\n\t/**\n\t * Width of the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidth\": null,\n\t\n\t/**\n\t * Width of the column when it was first \"encountered\"\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidthOrig\": null\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.columns.js",
    "content": "\n\n/**\n * Column options that can be given to DataTables at initialisation time.\n *  @namespace\n */\nDataTable.defaults.columns = {\n\t/**\n\t * Allows a column's sorting to take multiple columns into account when \n\t * doing a sort. For example first name / last name columns make sense to \n\t * do a multi-column sort over the two columns.\n\t *  @type array\n\t *  @default null <i>Takes the value of the column index automatically</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          { \"aDataSort\": [ 0, 1 ] },\n\t *          { \"aDataSort\": [ 1, 0 ] },\n\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aDataSort\": null,\n\n\n\t/**\n\t * You can control the default sorting direction, and even alter the behaviour\n\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t * parameter.\n\t *  @type array\n\t *  @default [ 'asc', 'desc' ]\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          null,\n\t *          { \"asSorting\": [ \"asc\" ] },\n\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t *          { \"asSorting\": [ \"desc\" ] },\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"asSorting\": [ 'asc', 'desc' ],\n\n\n\t/**\n\t * Enable or disable filtering on the data in this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bSearchable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSearchable\": true,\n\n\n\t/**\n\t * Enable or disable sorting on this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bSortable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSortable\": true,\n\n\n\t/**\n\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t * to use the original data (before rendering) for sorting and filtering \n\t * (the default is to used the rendered data that the user can see). This \n\t * may be useful for dates etc.\n\t * \n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t *  @deprecated\n\t */\n\t\"bUseRendered\": true,\n\n\n\t/**\n\t * Enable or disable the display of this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bVisible\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bVisible\": true,\n\t\n\t\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} nTd The TD node that has been created\n\t *  @param {*} sData The Data for the cell\n\t *  @param {array|object} oData The data for the whole row\n\t *  @param {int} iRow The row index for the aoData data store\n\t *  @param {int} iCol The column index for aoColumns\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [3],\n\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t *            if ( sData == \"1.7\" ) {\n\t *              $(nTd).css('color', 'blue')\n\t *            }\n\t *          }\n\t *        } ]\n\t *      });\n\t *    } );\n\t */\n\t\"fnCreatedCell\": null,\n\n\n\t/**\n\t * <code>Deprecated</code> Custom display function that will be called for the \n\t * display of each cell in this column.\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type function\n\t *  @param {object} o Object with the following parameters:\n\t *  @param {int}    o.iDataRow The row in aoData\n\t *  @param {int}    o.iDataColumn The column in question\n\t *  @param {array}  o.aData The data for the row in question\n\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t *  @param {object} o.mDataProp The data property used for this column\n\t *  @param {*}      val The current cell value\n\t *  @returns {string} The string you which to use in the display\n\t *  @dtopt Columns\n\t *  @deprecated\n\t */\n\t\"fnRender\": null,\n\n\n\t/**\n\t * The column index (starting from 0!) that you wish a sort to be performed\n\t * upon when this column is selected for sorting. This can be used for sorting\n\t * on hidden columns for example.\n\t *  @type int\n\t *  @default -1 <i>Use automatically calculated column index</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"iDataSort\": 1 },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"iDataSort\": -1,\n\n\n\t/**\n\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t * in DataTables for this option, but it is strongly recommended that you use\n\t * mData in preference to mDataProp.\n\t *  @name DataTable.defaults.columns.mDataProp\n\t */\n\n\n\t/**\n\t * This property can be used to read data from any JSON data source property,\n\t * including deeply nested objects / properties. mData can be given in a\n\t * number of different ways which effect its behaviour:\n\t *   <ul>\n\t *     <li>integer - treated as an array index for the data source. This is the\n\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t *     <li>string - read an object property from the data source. Note that you can\n\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t *       data source.</li>\n\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t *       by default, so you will need to specify the default content you want -\n\t *       typically an empty string). This can be useful on generated columns such \n\t *       as edit / delete action columns.</li>\n\t *     <li>function - the function given will be executed whenever DataTables \n\t *       needs to set or get the data for a cell in the column. The function \n\t *       takes three parameters:\n\t *       <ul>\n\t *         <li>{array|object} The data source for the row</li>\n\t *         <li>{string} The type call data requested - this will be 'set' when\n\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t *           DataTables expects to get the raw data for the object back</li>\n\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t *       </ul>\n\t *       The return value from the function is not required when 'set' is the type\n\t *       of call, but otherwise the return is what will be used for the data\n\t *       requested.</li>\n\t *    </ul>\n\t *\n\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t * reflects the flexibility of this property and is consistent with the naming of\n\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t * it automatically maps the old name to the new if required.\n\t *  @type string|int|function|null\n\t *  @default null <i>Use automatically calculated column index</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Read table data from objects\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t *        \"aoColumns\": [\n\t *          { \"mData\": \"engine\" },\n\t *          { \"mData\": \"browser\" },\n\t *          { \"mData\": \"platform.inner\" },\n\t *          { \"mData\": \"platform.details.0\" },\n\t *          { \"mData\": \"platform.details.1\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Using mData as a function to provide different information for\n\t *    // sorting, filtering and display. In this case, currency (price)\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"mData\": function ( source, type, val ) {\n\t *            if (type === 'set') {\n\t *              source.price = val;\n\t *              // Store the computed dislay and filter values for efficiency\n\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t *              return;\n\t *            }\n\t *            else if (type === 'display') {\n\t *              return source.price_display;\n\t *            }\n\t *            else if (type === 'filter') {\n\t *              return source.price_filter;\n\t *            }\n\t *            // 'sort', 'type' and undefined all just use the integer\n\t *            return source.price;\n\t *          }\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"mData\": null,\n\n\n\t/**\n\t * This property is the rendering partner to mData and it is suggested that\n\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t * but not altering the underlying data for the table, use this property. mData\n\t * can actually do everything this property can and more, but this parameter is\n\t * easier to use since there is no 'set' option. Like mData is can be given\n\t * in a number of different ways to effect its behaviour, with the addition of \n\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t * objects):\n\t *   <ul>\n\t *     <li>integer - treated as an array index for the data source. This is the\n\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t *     <li>string - read an object property from the data source. Note that you can\n\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t *       data source and also array brackets to indicate that the data reader should\n\t *       loop over the data source array. When characters are given between the array\n\t *       brackets, these characters are used to join the data source array together.\n\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t *     <li>function - the function given will be executed whenever DataTables \n\t *       needs to set or get the data for a cell in the column. The function \n\t *       takes three parameters:\n\t *       <ul>\n\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t *           'type' or 'sort'.</li>\n\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t *       </ul>\n\t *       The return value from the function is what will be used for the data\n\t *       requested.</li>\n\t *    </ul>\n\t *  @type string|int|function|null\n\t *  @default null <i>Use mData</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Create a comma separated list from an array of objects\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t *        \"aoColumns\": [\n\t *          { \"mData\": \"engine\" },\n\t *          { \"mData\": \"browser\" },\n\t *          {\n\t *            \"mData\": \"platform\",\n\t *            \"mRender\": \"[, ].name\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Use as a function to create a link from the data source\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *        {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"mData\": \"download_link\",\n\t *          \"mRender\": function ( data, type, full ) {\n\t *            return '<a href=\"'+data+'\">Download</a>';\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"mRender\": null,\n\n\n\t/**\n\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t *  @type string\n\t *  @default td\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Make the first column use TH cells\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"sCellType\": \"th\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sCellType\": \"td\",\n\n\n\t/**\n\t * Class to give to each cell in this column.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sClass\": \"my_class\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sClass\": \"\",\n\t\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t * Generally you shouldn't need this, and it is not documented on the \n\t * general DataTables.net documentation\n\t *  @type string\n\t *  @default <i>Empty string<i>\n\t *  @dtopt Columns\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"sContentPadding\": \"mmm\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sContentPadding\": \"\",\n\n\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because mData\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          {\n\t *            \"mData\": null,\n\t *            \"sDefaultContent\": \"Edit\",\n\t *            \"aTargets\": [ -1 ]\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"mData\": null,\n\t *            \"sDefaultContent\": \"Edit\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sDefaultContent\": null,\n\n\n\t/**\n\t * This parameter is only used in DataTables' server-side processing. It can\n\t * be exceptionally useful to know what columns are being displayed on the\n\t * client side, and to map these to database fields. When defined, the names\n\t * also allow DataTables to reorder information from the server if it comes\n\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t * client-side, your server-side code does not also need updating).\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sName\": \"engine\" },\n\t *          { \"sName\": \"browser\" },\n\t *          { \"sName\": \"platform\" },\n\t *          { \"sName\": \"version\" },\n\t *          { \"sName\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sName\": \"\",\n\n\n\t/**\n\t * Defines a data source type for the sorting which can be used to read\n\t * real-time information from the table (updating the internally cached\n\t * version) prior to sorting. This allows sorting to occur on user editable\n\t * elements such as form inputs.\n\t *  @type string\n\t *  @default std\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          null,\n\t *          null,\n\t *          { \"sSortDataType\": \"dom-text\" },\n\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t *          { \"sSortDataType\": \"dom-select\" },\n\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sSortDataType\": \"std\",\n\n\n\t/**\n\t * The title of this column.\n\t *  @type string\n\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t *    original HTML table.</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sTitle\": \"My column title\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sTitle\": null,\n\n\n\t/**\n\t * The type allows you to specify how the data for this column will be sorted.\n\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t * before sorting)) are currently available. Note that only date formats\n\t * understood by Javascript's Date() object will be accepted as type date. For\n\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t * 'date' or 'html' (by default). Further types can be adding through\n\t * plug-ins.\n\t *  @type string\n\t *  @default null <i>Auto-detected from raw data</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sType\": \"html\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sType\": null,\n\n\n\t/**\n\t * Defining the width of the column, this parameter may take any CSS value\n\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t * been given a specific width through this interface ensuring that the table\n\t * remains readable.\n\t *  @type string\n\t *  @default null <i>Automatic</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sWidth\": \"20%\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sWidth\": null\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.js",
    "content": "\n\n/**\n * Initialisation options that can be given to DataTables at initialisation \n * time.\n *  @namespace\n */\nDataTable.defaults = {\n\t/**\n\t * An array of data to use for the table, passed in at initialisation which \n\t * will be used in preference to any data which is already in the DOM. This is\n\t * particularly useful for constructing tables purely in Javascript, for\n\t * example with a custom Ajax call.\n\t *  @type array\n\t *  @default null\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    // Using a 2D array data source\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"aaData\": [\n\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t *        ],\n\t *        \"aoColumns\": [\n\t *          { \"sTitle\": \"Engine\" },\n\t *          { \"sTitle\": \"Browser\" },\n\t *          { \"sTitle\": \"Platform\" },\n\t *          { \"sTitle\": \"Version\" },\n\t *          { \"sTitle\": \"Grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using an array of objects as a data source (mData)\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"aaData\": [\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  4,\n\t *            \"grade\":    \"X\"\n\t *          },\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  5,\n\t *            \"grade\":    \"C\"\n\t *          }\n\t *        ],\n\t *        \"aoColumns\": [\n\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aaData\": null,\n\n\n\t/**\n\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t * initialisation. You can define which column(s) the sort is performed upon, \n\t * and the sorting direction, with this variable. The aaSorting array should \n\t * contain an array for each column to be sorted initially containing the \n\t * column's index and a direction string ('asc' or 'desc').\n\t *  @type array\n\t *  @default [[0,'asc']]\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    // Sort by 3rd column first, and then 4th column\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t *      } );\n\t *    } );\n\t *    \n\t *    // No initial sorting\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSorting\": []\n\t *      } );\n\t *    } );\n\t */\n\t\"aaSorting\": [[0,'asc']],\n\n\n\t/**\n\t * This parameter is basically identical to the aaSorting parameter, but \n\t * cannot be overridden by user interaction with the table. What this means \n\t * is that you could have a column (visible or hidden) which the sorting will \n\t * always be forced on first - any sorting after that (from the user) will \n\t * then be performed as required. This can be useful for grouping rows \n\t * together.\n\t *  @type array\n\t *  @default null\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSortingFixed\": [[0,'asc']]\n\t *      } );\n\t *    } )\n\t */\n\t\"aaSortingFixed\": null,\n\n\n\t/**\n\t * This parameter allows you to readily specify the entries in the length drop\n\t * down menu that DataTables shows when pagination is enabled. It can be \n\t * either a 1D array of options which will be used for both the displayed \n\t * option and the value, or a 2D array which will use the array in the first \n\t * position as the value, and the array in the second position as the \n\t * displayed options (useful for language strings such as 'All').\n\t *  @type array\n\t *  @default [ 10, 25, 50, 100 ]\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t *      } );\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Setting the default display length as well as length menu\n\t *    // This is likely to be wanted if you remove the '10' option which\n\t *    // is the iDisplayLength default.\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayLength\": 25,\n\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t *      } );\n\t *    } );\n\t */\n\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\n\n\t/**\n\t * The aoColumns option in the initialisation parameter allows you to define\n\t * details about the way individual columns behave. For a full list of\n\t * column options that can be set, please see \n\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t * define your columns, you must have an entry in the array for every single\n\t * column that you have in your table (these can be null if you don't which\n\t * to specify any options).\n\t *  @member\n\t */\n\t\"aoColumns\": null,\n\n\t/**\n\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t * column, multiple columns, or all columns, using the aTargets property of \n\t * each object in the array. This allows great flexibility when creating \n\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t * columns you specifically want. aoColumnDefs may use any of the column \n\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t * have aTargets defined in each object in the array. Values in the aTargets\n\t * array may be:\n\t *   <ul>\n\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t *     <li>a negative integer - column index counting from the right</li>\n\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t *   </ul>\n\t *  @member\n\t */\n\t\"aoColumnDefs\": null,\n\n\n\t/**\n\t * Basically the same as oSearch, this parameter defines the individual column\n\t * filtering state at initialisation time. The array must be of the same size \n\t * as the number of columns, and each element be an object with the parameters\n\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t * accepted and the default will be used.\n\t *  @type array\n\t *  @default []\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoSearchCols\": [\n\t *          null,\n\t *          { \"sSearch\": \"My filter\" },\n\t *          null,\n\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t *        ]\n\t *      } );\n\t *    } )\n\t */\n\t\"aoSearchCols\": [],\n\n\n\t/**\n\t * An array of CSS classes that should be applied to displayed rows. This \n\t * array may be of any length, and DataTables will apply each class \n\t * sequentially, looping when required.\n\t *  @type array\n\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t *    options</i>\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t *      } );\n\t *    } )\n\t */\n\t\"asStripeClasses\": null,\n\n\n\t/**\n\t * Enable or disable automatic column width calculation. This can be disabled\n\t * as an optimisation (it takes some time to calculate the widths) if the\n\t * tables widths are passed in using aoColumns.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bAutoWidth\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bAutoWidth\": true,\n\n\n\t/**\n\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t * are using an Ajax or JS data source for the table. This option, when set to\n\t * true, will cause DataTables to defer the creation of the table elements for\n\t * each row until they are needed for a draw - saving a significant amount of\n\t * time.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t *        \"bDeferRender\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDeferRender\": false,\n\n\n\t/**\n\t * Replace a DataTable which matches the given selector and replace it with \n\t * one which has the properties of the new initialisation object passed. If no\n\t * table matches the selector, then the new DataTable will be constructed as\n\t * per normal.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false\n\t *      } );\n\t *      \n\t *      // Some time later....\n\t *      $('#example').dataTable( {\n\t *        \"bFilter\": false,\n\t *        \"bDestroy\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDestroy\": false,\n\n\n\t/**\n\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t * that it allows the end user to input multiple words (space separated) and\n\t * will match a row containing those words, even if not in the order that was\n\t * specified (this allow matching across multiple columns). Note that if you\n\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t * default filtering input box and retain filtering abilities, please use\n\t * {@link DataTable.defaults.sDom}.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bFilter\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bFilter\": true,\n\n\n\t/**\n\t * Enable or disable the table information display. This shows information \n\t * about the data that is currently visible on the page, including information\n\t * about filtered data if that action is being performed.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bInfo\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bInfo\": true,\n\n\n\t/**\n\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t * slightly different and additional mark-up from what DataTables has\n\t * traditionally used).\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bJQueryUI\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bJQueryUI\": false,\n\n\n\t/**\n\t * Allows the end user to select the size of a formatted page from a select\n\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bLengthChange\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bLengthChange\": true,\n\n\n\t/**\n\t * Enable or disable pagination.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bPaginate\": true,\n\n\n\t/**\n\t * Enable or disable the display of a 'processing' indicator when the table is\n\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t * large amounts of data where it can take a noticeable amount of time to sort\n\t * the entries.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bProcessing\": false,\n\n\n\t/**\n\t * Retrieve the DataTables object for the given selector. Note that if the\n\t * table has already been initialised, this parameter will cause DataTables\n\t * to simply return the object that has already been set up - it will not take\n\t * account of any changes you might have made to the initialisation object\n\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t * you need.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      initTable();\n\t *      tableActions();\n\t *    } );\n\t *    \n\t *    function initTable ()\n\t *    {\n\t *      return $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false,\n\t *        \"bRetrieve\": true\n\t *      } );\n\t *    }\n\t *    \n\t *    function tableActions ()\n\t *    {\n\t *      var oTable = initTable();\n\t *      // perform API operations with oTable \n\t *    }\n\t */\n\t\"bRetrieve\": false,\n\n\n\t/**\n\t * Indicate if DataTables should be allowed to set the padding / margin\n\t * etc for the scrolling header elements or not. Typically you will want\n\t * this.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollAutoCss\": false,\n\t *        \"sScrollY\": \"200px\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollAutoCss\": true,\n\n\n\t/**\n\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t * the table's viewport to the given height at all times (useful for layout).\n\t * However, this can look odd when filtering data down to a small data set,\n\t * and the footer is left \"floating\" further down. This parameter (when\n\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t * the result set will fit within the given Y height.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200\",\n\t *        \"bScrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollCollapse\": false,\n\n\n\t/**\n\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t * data as a user scrolls through a table, which is very useful for large\n\t * dataset. This cannot be used with pagination, which is automatically\n\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t * in preference to this option.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollInfinite\": true,\n\t *        \"bScrollCollapse\": true,\n\t *        \"sScrollY\": \"200px\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollInfinite\": false,\n\n\n\t/**\n\t * Configure DataTables to use server-side processing. Note that the\n\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t * source to obtain the required data for each draw.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"xhr.php\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bServerSide\": false,\n\n\n\t/**\n\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t * disabled by the \"bSortable\" option for each column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bSort\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSort\": true,\n\n\n\t/**\n\t * Allows control over whether DataTables should use the top (true) unique\n\t * cell that is found for a single column, or the bottom (false - default).\n\t * This is useful when using complex headers.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bSortCellsTop\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortCellsTop\": false,\n\n\n\t/**\n\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t * presented as a feature switch as it can increase processing time (while\n\t * classes are removed and added) so for large data sets you might want to\n\t * turn this off.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bSortClasses\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortClasses\": true,\n\n\n\t/**\n\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t * table display information such as pagination information, display length,\n\t * filtering and sorting. As such when the end user reloads the page the\n\t * display display will match what thy had previously set up.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bStateSave\": false,\n\n\n\t/**\n\t * Customise the cookie and / or the parameters being stored when using\n\t * DataTables with state saving enabled. This function is called whenever\n\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t * returned. Note that the data object passed in is a Javascript object which\n\t * must be converted to a string (JSON.stringify for example).\n\t *  @type function\n\t *  @param {string} sName Name of the cookie defined by DataTables\n\t *  @param {object} oData Data to be stored in the cookie\n\t *  @param {string} sExpires Cookie expires string\n\t *  @param {string} sPath Path of the cookie to set\n\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t *    using encodeURIComponent())\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t *          // Customise oData or sName or whatever else here\n\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnCookieCallback\": null,\n\n\n\t/**\n\t * This function is called when a TR element is created (and all TD child\n\t * elements have been inserted), or registered if using a DOM source, allowing\n\t * manipulation of the TR element (adding classes etc).\n\t *  @type function\n\t *  @param {node} nRow \"TR\" element for the current row\n\t *  @param {array} aData Raw data array for this row\n\t *  @param {int} iDataIndex The index of this row in aoData\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( aData[4] == \"A\" )\n\t *          {\n\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnCreatedRow\": null,\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify any aspect you want about the created DOM.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnDrawCallback\": function( oSettings ) {\n\t *          alert( 'DataTables has redrawn the table' );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnDrawCallback\": null,\n\n\n\t/**\n\t * Identical to fnHeaderCallback() but for the table footer this function\n\t * allows you to modify the table footer on every 'draw' even.\n\t *  @type function\n\t *  @param {node} nFoot \"TR\" element for the footer\n\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t *  @param {int} iStart Index for the current display starting point in the \n\t *    display array\n\t *  @param {int} iEnd Index for the current display ending point in the \n\t *    display array\n\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t *    to the full data array\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnFooterCallback\": null,\n\n\n\t/**\n\t * When rendering large numbers in the information element for the table\n\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t * function will override the default method DataTables uses.\n\t *  @type function\n\t *  @member\n\t *  @param {int} iIn number to be formatted\n\t *  @returns {string} formatted string for DataTables to show the number\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnFormatNumber\": function ( iIn ) {\n\t *          if ( iIn &lt; 1000 ) {\n\t *            return iIn;\n\t *          } else {\n\t *            var \n\t *              s=(iIn+\"\"), \n\t *              a=s.split(\"\"), out=\"\", \n\t *              iLen=s.length;\n\t *            \n\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t *                out = \"'\"+out;\n\t *              }\n\t *              out = a[iLen-i-1]+out;\n\t *            }\n\t *          }\n\t *          return out;\n\t *        };\n\t *      } );\n\t *    } );\n\t */\n\t\"fnFormatNumber\": function ( iIn ) {\n\t\tif ( iIn < 1000 )\n\t\t{\n\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\treturn iIn;\n\t\t}\n\n\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\n\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t{\n\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t}\n\t\t\tout = a[iLen-i-1]+out;\n\t\t}\n\t\treturn out;\n\t},\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify the header row. This can be used to calculate and\n\t * display useful information about the table.\n\t *  @type function\n\t *  @param {node} nHead \"TR\" element for the header\n\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t *  @param {int} iStart Index for the current display starting point in the\n\t *    display array\n\t *  @param {int} iEnd Index for the current display ending point in the\n\t *    display array\n\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t *    to the full data array\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnHeaderCallback\": null,\n\n\n\t/**\n\t * The information element can be used to convey information about the current\n\t * state of the table. Although the internationalisation options presented by\n\t * DataTables are quite capable of dealing with most customisations, there may\n\t * be times where you wish to customise the string further. This callback\n\t * allows you to do exactly that.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {int} iStart Starting position in data for the draw\n\t *  @param {int} iEnd End position in data for the draw\n\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t *    filtering)\n\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t *    own rules\n\t *  @returns {string} The string to be displayed in the information element.\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $('#example').dataTable( {\n\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t *        return iStart +\" to \"+ iEnd;\n\t *      }\n\t *    } );\n\t */\n\t\"fnInfoCallback\": null,\n\n\n\t/**\n\t * Called when the table has been initialised. Normally DataTables will\n\t * initialise sequentially and there will be no need for this function,\n\t * however, this does not hold true when using external language information\n\t * since that is obtained using an async XHR call.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnInitComplete\": function(oSettings, json) {\n\t *          alert( 'DataTables has finished its initialisation.' );\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnInitComplete\": null,\n\n\n\t/**\n\t * Called at the very start of each table draw and can be used to cancel the\n\t * draw by returning false, any other return (including undefined) results in\n\t * the full draw occurring).\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t *    return) will allow it to complete.\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t *          if ( $('#test').val() == 1 ) {\n\t *            return false;\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnPreDrawCallback\": null,\n\n\n\t/**\n\t * This function allows you to 'post process' each row after it have been\n\t * generated for each table draw, but before it is rendered on screen. This\n\t * function might be used for setting the row class name etc.\n\t *  @type function\n\t *  @param {node} nRow \"TR\" element for the current row\n\t *  @param {array} aData Raw data array for this row\n\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t *    rows (after filtering)\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( aData[4] == \"A\" )\n\t *          {\n\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnRowCallback\": null,\n\n\n\t/**\n\t * This parameter allows you to override the default function which obtains\n\t * the data from the server ($.getJSON) so something more suitable for your\n\t * application. For example you could use POST data, or pull information from\n\t * a Gears or AIR database.\n\t *  @type function\n\t *  @member\n\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t *  @param {array} aoData A key/value pair object containing the data to send\n\t *    to the server\n\t *  @param {function} fnCallback to be called on completion of the data get\n\t *    process that will draw the data on the page.\n\t *  @param {object} oSettings DataTables settings object\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    // POST data to server\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true,\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"xhr.php\",\n\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t *          oSettings.jqXHR = $.ajax( {\n\t *            \"dataType\": 'json', \n\t *            \"type\": \"POST\", \n\t *            \"url\": sSource, \n\t *            \"data\": aoData, \n\t *            \"success\": fnCallback\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\"url\":  sUrl,\n\t\t\t\"data\": aoData,\n\t\t\t\"success\": function (json) {\n\t\t\t\tif ( json.sError ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\tfnCallback( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\n\t/**\n\t * It is often useful to send extra data to the server when making an Ajax\n\t * request - for example custom filtering information, and this callback\n\t * function makes it trivial to send extra information to the server. The\n\t * passed in parameter is the data set that has been constructed by\n\t * DataTables, and you can add to this or modify it as you require.\n\t *  @type function\n\t *  @param {array} aoData Data array (array of objects which are name/value\n\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t *    server. In the case of Ajax sourced data with server-side processing\n\t *    this will be an empty array, for server-side processing there will be a\n\t *    significant number of parameters!\n\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t *    as this is passed by reference.\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true,\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"fnServerParams\": function ( aoData ) {\n\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnServerParams\": null,\n\n\n\t/**\n\t * Load the table state. With this function you can define from where, and how, the\n\t * state of a table is loaded. By default DataTables will load from its state saving\n\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t *  @type function\n\t *  @member\n\t *  @param {object} oSettings DataTables settings object\n\t *  @return {object} The DataTables state object to be loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoad\": function (oSettings) {\n\t *          var o;\n\t *          \n\t *          // Send an Ajax request to the server to get the data. Note that\n\t *          // this is a synchronous request.\n\t *          $.ajax( {\n\t *            \"url\": \"/state_load\",\n\t *            \"async\": false,\n\t *            \"dataType\": \"json\",\n\t *            \"success\": function (json) {\n\t *              o = json;\n\t *            }\n\t *          } );\n\t *          \n\t *          return o;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoad\": function ( oSettings ) {\n\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\tvar oData;\n\n\t\ttry {\n\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t} catch (e) {\n\t\t\toData = null;\n\t\t}\n\n\t\treturn oData;\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the saved state prior to loading that state.\n\t * This callback is called when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state. Note that for \n\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t * a plug-in.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object that is to be loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Remove a saved filter, so filtering is never loaded\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t *          oData.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Disallow state loading by returning false\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t *          return false;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoadParams\": null,\n\n\n\t/**\n\t * Callback that is called when the state has been loaded from the state saving method\n\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object that was loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Show an alert with the filtering value that was saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoaded\": null,\n\n\n\t/**\n\t * Save the table state. This function allows you to define where and how the state\n\t * information for the table is stored - by default it will use a cookie, but you\n\t * might want to use local storage (HTML5) or a server-side database.\n\t *  @type function\n\t *  @member\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object to be saved\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateSave\": function (oSettings, oData) {\n\t *          // Send an Ajax request to the server with the state object\n\t *          $.ajax( {\n\t *            \"url\": \"/state_save\",\n\t *            \"data\": oData,\n\t *            \"dataType\": \"json\",\n\t *            \"method\": \"POST\"\n\t *            \"success\": function () {}\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\tthis.oApi._fnCreateCookie( \n\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\toSettings.iCookieDuration, \n\t\t\toSettings.sCookiePrefix, \n\t\t\toSettings.fnCookieCallback\n\t\t);\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the state to be saved. Called when the table \n\t * has changed state a new state save is required. This method allows modification of\n\t * the state saving object prior to actually doing the save, including addition or \n\t * other state properties or modification. Note that for plug-in authors, you should \n\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object to be saved\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Remove a saved filter, so filtering is never saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t *          oData.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSaveParams\": null,\n\n\n\t/**\n\t * Duration of the cookie which is used for storing session information. This\n\t * value is given in seconds.\n\t *  @type int\n\t *  @default 7200 <i>(2 hours)</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t *      } );\n\t *    } )\n\t */\n\t\"iCookieDuration\": 7200,\n\n\n\t/**\n\t * When enabled DataTables will not make a request to the server for the first\n\t * page draw - rather it will use the data already on the page (no sorting etc\n\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t * is used to indicate that deferred loading is required, but it is also used\n\t * to tell DataTables how many records there are in the full table (allowing\n\t * the information element and pagination to be displayed correctly). In the case\n\t * where a filtering is applied to the table on initial load, this can be\n\t * indicated by giving the parameter as an array, where the first element is\n\t * the number of records available after filtering and the second element is the\n\t * number of records without filtering (allowing the table information element\n\t * to be shown correctly).\n\t *  @type int | array\n\t *  @default null\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    // 57 records available in the table, no filtering applied\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"iDeferLoading\": 57\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"iDeferLoading\": [ 57, 100 ],\n\t *        \"oSearch\": {\n\t *          \"sSearch\": \"my_filter\"\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"iDeferLoading\": null,\n\n\n\t/**\n\t * Number of rows to display on a single page when using pagination. If\n\t * feature enabled (bLengthChange) then the end user will be able to override\n\t * this to a custom setting using a pop-up menu.\n\t *  @type int\n\t *  @default 10\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayLength\": 50\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayLength\": 10,\n\n\n\t/**\n\t * Define the starting point for data display when using DataTables with\n\t * pagination. Note that this parameter is the number of records, rather than\n\t * the page number, so if you have 10 records per page and want to start on\n\t * the third page, it should be \"20\".\n\t *  @type int\n\t *  @default 0\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayStart\": 20\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayStart\": 0,\n\n\n\t/**\n\t * The scroll gap is the amount of scrolling that is left to go before\n\t * DataTables will load the next 'page' of data automatically. You typically\n\t * want a gap which is big enough that the scrolling will be smooth for the\n\t * user, while not so large that it will load more data than need.\n\t *  @type int\n\t *  @default 100\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollInfinite\": true,\n\t *        \"bScrollCollapse\": true,\n\t *        \"sScrollY\": \"200px\",\n\t *        \"iScrollLoadGap\": 50\n\t *      } );\n\t *    } );\n\t */\n\t\"iScrollLoadGap\": 100,\n\n\n\t/**\n\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t * allows you to tab through the controls and press the enter key to activate them.\n\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t * disable built-in keyboard navigation.\n\t *  @type int\n\t *  @default 0\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iTabIndex\": 1\n\t *      } );\n\t *    } );\n\t */\n\t\"iTabIndex\": 0,\n\n\n\t/**\n\t * All strings that DataTables uses in the user interface that it creates\n\t * are defined in this object, allowing you to modified them individually or\n\t * completely replace them all as required.\n\t *  @namespace\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t * must be internationalised as well).\n\t\t *  @namespace\n\t\t */\n\t\t\"oAria\": {\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oAria\": {\n\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oAria\": {\n\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t},\n\n\t\t/**\n\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t *  @namespace\n\t\t */\n\t\t\"oPaginate\": {\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the first page.\n\t\t\t *  @type string\n\t\t\t *  @default First\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sFirst\": \"First\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the last page.\n\t\t\t *  @type string\n\t\t\t *  @default Last\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLast\": \"Last\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t * next page).\n\t\t\t *  @type string\n\t\t\t *  @default Next\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sNext\": \"Next\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t * the previous page).\n\t\t\t *  @type string\n\t\t\t *  @default Previous\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sPrevious\": \"Previous\"\n\t\t},\n\t\n\t\t/**\n\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t * instead (either the default or given value).\n\t\t *  @type string\n\t\t *  @default No data available in table\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t/**\n\t\t * This string gives information to the end user about the information that \n\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t * can be freely moved or removed as the language requirements change.\n\t\t *  @type string\n\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t/**\n\t\t * Display information string for when the table is empty. Typically the \n\t\t * format of this string should match sInfo.\n\t\t *  @type string\n\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t/**\n\t\t * When a user filters the information in a table, this string is appended \n\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t *  @type string\n\t\t *  @default (filtered from _MAX_ total entries)\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t/**\n\t\t * If can be useful to append extra information to the info string at times,\n\t\t * and this variable does exactly that. This information will be appended to\n\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t * being used) at all times.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t/**\n\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t * to format large numbers that are used in the table information. By\n\t\t * default a comma is used, but this can be trivially changed to any\n\t\t * character you wish with this parameter.\n\t\t *  @type string\n\t\t *  @default ,\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoThousands\": \"'\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoThousands\": \",\",\n\t\n\t\n\t\t/**\n\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t * with a custom select box if required.\n\t\t *  @type string\n\t\t *  @default Show _MENU_ entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    // Language change only\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Language and options change\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t *            '<option value=\"10\">10</option>'+\n\t\t *            '<option value=\"20\">20</option>'+\n\t\t *            '<option value=\"30\">30</option>'+\n\t\t *            '<option value=\"40\">40</option>'+\n\t\t *            '<option value=\"50\">50</option>'+\n\t\t *            '<option value=\"-1\">All</option>'+\n\t\t *            '</select> records'\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t/**\n\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t * parameter is not used when loading data by server-side processing, just\n\t\t * Ajax sourced data with client-side processing.\n\t\t *  @type string\n\t\t *  @default Loading...\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t/**\n\t\t * Text which is displayed when the table is processing a user action\n\t\t * (usually a sort command or similar).\n\t\t *  @type string\n\t\t *  @default Processing...\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t/**\n\t\t * Details the actions that will be taken when the user types into the\n\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t * then the input box is appended to the string automatically.\n\t\t *  @type string\n\t\t *  @default Search:\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    // Input text box will be appended at the end automatically\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sSearch\": \"Filter records:\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Specify where the filter should appear\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t/**\n\t\t * All of the language information can be stored in a file on the\n\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t * and the object has the same properties as the oLanguage object in the\n\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t * the example language files to see how this works in action.\n\t\t *  @type string\n\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Text shown inside the table records when the is no information to be\n\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t * information in the table at all (regardless of filtering).\n\t\t *  @type string\n\t\t *  @default No matching records found\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sZeroRecords\": \"No matching records found\"\n\t},\n\n\n\t/**\n\t * This parameter allows you to have define the global filtering state at\n\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t * the search string will be treated as a regular expression, when false\n\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t * DataTables will use it's smart filtering methods (to word match at\n\t * any point in the data), when false this will not be done.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t *      } );\n\t *    } )\n\t */\n\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\n\n\t/**\n\t * By default DataTables will look for the property 'aaData' when obtaining\n\t * data from an Ajax source or for server-side processing - this parameter\n\t * allows that property to be changed. You can use Javascript dotted object\n\t * notation to get a data source for multiple levels of nesting.\n\t *  @type string\n\t *  @default aaData\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    // Get data from { \"data\": [...] }\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t *        \"sAjaxDataProp\": \"data\"\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t *        \"sAjaxDataProp\": \"data.inner\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sAjaxDataProp\": \"aaData\",\n\n\n\t/**\n\t * You can instruct DataTables to load data from an external source using this\n\t * parameter (use aData if you want to pass data in you already have). Simply\n\t * provide a url a JSON object can be obtained from. This object must include\n\t * the parameter 'aaData' which is the data source for the table.\n\t *  @type string\n\t *  @default null\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t *      } );\n\t *    } )\n\t */\n\t\"sAjaxSource\": null,\n\n\n\t/**\n\t * This parameter can be used to override the default prefix that DataTables\n\t * assigns to a cookie when state saving is enabled.\n\t *  @type string\n\t *  @default SpryMedia_DataTables_\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t *      } );\n\t *    } );\n\t */\n\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\n\n\t/**\n\t * This initialisation variable allows you to specify exactly where in the\n\t * DOM you want DataTables to inject the various controls it adds to the page\n\t * (for example you might want the pagination controls at the top of the\n\t * table). DIV elements (with or without a custom class) can also be added to\n\t * aid styling. The follow syntax is used:\n\t *   <ul>\n\t *     <li>The following options are allowed:\t\n\t *       <ul>\n\t *         <li>'l' - Length changing</li\n\t *         <li>'f' - Filtering input</li>\n\t *         <li>'t' - The table!</li>\n\t *         <li>'i' - Information</li>\n\t *         <li>'p' - Pagination</li>\n\t *         <li>'r' - pRocessing</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following constants are allowed:\n\t *       <ul>\n\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following syntax is expected:\n\t *       <ul>\n\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>Examples:\n\t *       <ul>\n\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t *       </ul>\n\t *     </li>\n\t *   </ul>\n\t *  @type string\n\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t *      } );\n\t *    } );\n\t */\n\t\"sDom\": \"lfrtip\",\n\n\n\t/**\n\t * DataTables features two different built-in pagination interaction methods\n\t * ('two_button' or 'full_numbers') which present different page controls to\n\t * the end user. Further methods can be added using the API (see below).\n\t *  @type string\n\t *  @default two_button\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sPaginationType\": \"full_numbers\"\n\t *      } );\n\t *    } )\n\t */\n\t\"sPaginationType\": \"two_button\",\n\n\n\t/**\n\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t * layout, or you have a large number of columns in the table, you can enable\n\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t * property can be any CSS unit, or a number (in which case it will be treated\n\t * as a pixel measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollX\": \"100%\",\n\t *        \"bScrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollX\": \"\",\n\n\n\t/**\n\t * This property can be used to force a DataTable to use more width than it\n\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t * table which requires to be well spaced, this parameter is useful for\n\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t * measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollX\": \"100%\",\n\t *        \"sScrollXInner\": \"110%\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollXInner\": \"\",\n\n\n\t/**\n\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t * to the given height, and enable scrolling for any data which overflows the\n\t * current viewport. This can be used as an alternative to paging to display\n\t * a lot of data in a small area (although paging and scrolling can both be\n\t * enabled at the same time). This property can be any CSS unit, or a number\n\t * (in which case it will be treated as a pixel measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollY\": \"\",\n\n\n\t/**\n\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t * processing or Ajax sourced data.\n\t *  @type string\n\t *  @default GET\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t *        \"sServerMethod\": \"POST\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sServerMethod\": \"GET\"\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.ext.js",
    "content": "\n\n/**\n * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n * of the build in methods use this method to provide their own capabilities (sorting methods\n * for example).\n * \n * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n * and modified by plug-ins.\n *  @namespace\n */\nDataTable.models.ext = {\n\t/**\n\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t * over the filtering logic. Each element in this array is a function (parameters\n\t * described below) that is called for every row in the table, and your logic decides if\n\t * it should be included in the filtered data set or not.\n\t *   <ul>\n\t *     <li>\n\t *       Function input parameters:\n\t *       <ul>\n\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t *\n\t *  @example\n\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t *    // a certain range.\n\t *    $.fn.dataTableExt.afnFiltering.push(\n\t *      function( oSettings, aData, iDataIndex ) {\n\t *        var iMin = document.getElementById('min').value * 1;\n\t *        var iMax = document.getElementById('max').value * 1;\n\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t *          return true;\n\t *        }\n\t *        return false;\n\t *      }\n\t *    );\n\t */\n\t\"afnFiltering\": [],\n\n\n\t/**\n\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t * an array of the values you wish to be sorted for the column in question and then return\n\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t * data.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n     *         <li>{int} Target column index</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{array} Data for the column to be sorted upon</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  \n\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t *  @type array\n\t *  @default []\n\t *  @deprecated\n\t *\n\t *  @example\n\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t *    {\n\t *      var aData = [];\n\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t *        aData.push( this.value );\n\t *      } );\n\t *      return aData;\n\t *    }\n\t */\n\t\"afnSortData\": [],\n\n\n\t/**\n\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t *   <ul>\n\t *     <li>{function} fnInit Initialisation of the plug-in\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t *                into DataTables control (sDom) - for example this might be useful when \n\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </li>\n\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t *     <li>{string} sFeature Feature name</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t * \n\t *  @example\n\t *    // How TableTools initialises itself.\n\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t *      \"fnInit\": function( oSettings ) {\n\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t *      },\n\t *      \"cFeature\": \"T\",\n\t *      \"sFeature\": \"TableTools\"\n\t *    } );\n\t */\n\t\"aoFeatures\": [],\n\n\n\t/**\n\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t * column) or they can be automatically detected by the methods in this array. The functions\n\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t * and returning the type if it is a known type, or null otherwise.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data from the column cell to be analysed</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t *           on to the other type detection functions.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t *  \n\t *  @example\n\t *    // Currency type detection plug-in:\n\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t *      function ( sData ) {\n\t *        var sValidChars = \"0123456789.-\";\n\t *        var Char;\n\t *        \n\t *        // Check the numeric part\n\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t *          Char = sData.charAt(i); \n\t *          if (sValidChars.indexOf(Char) == -1) {\n\t *            return null;\n\t *          }\n\t *        }\n\t *        \n\t *        // Check prefixed by currency\n\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t *          return 'currency';\n\t *        }\n\t *        return null;\n\t *      }\n\t *    );\n\t */\n\t\"aTypes\": [],\n\n\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t * in order to ensure compatibility.\n\t *  @type function\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t *    required version, or false if this version of DataTales is not suitable\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t *    } );\n\t */\n\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\n\n\t/**\n\t * Index for what 'this' index API functions should use\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iApiIndex\": 0,\n\n\n\t/**\n\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t * the format that should be filtered upon. This is done by adding functions this object \n\t * with a parameter name which matches the sType for that target column. This is the\n\t * corollary of <i>afnSortData</i> for filtering data.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t * \n\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t *  @type object\n\t *  @default {}\n\t *  @deprecated\n\t *\n\t *  @example\n\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t *    }\n\t */\n\t\"ofnSearch\": {},\n\n\n\t/**\n\t * Container for all private functions in DataTables so they can be exposed externally\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oApi\": {},\n\n\n\t/**\n\t * Storage for the various classes that DataTables uses\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oStdClasses\": {},\n\t\n\n\t/**\n\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oJUIClasses\": {},\n\n\n\t/**\n\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t * the addition of pagination controls by extending this object, which can then be enabled\n\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t * to) that has two properties, both methods that are used by DataTables to update the\n\t * control's state.\n\t *   <ul>\n\t *     <li>\n\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t *         of the table. It is expected that this function will add the required DOM elements \n\t *         to the page for the paging controls to work. The element pointer \n\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t *         as children\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t *               change, this method must be called to redraw the table.</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>No return required</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </il>\n\t *     <li>\n\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t *         status.\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t *               or attach new event listeners</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>No return required</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type object\n\t *  @default {}\n\t *\n\t *  @example\n\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t *        nFirst = document.createElement( 'span' );\n\t *        nPrevious = document.createElement( 'span' );\n\t *        nNext = document.createElement( 'span' );\n\t *        nLast = document.createElement( 'span' );\n\t *        \n\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t *        \n\t *        nFirst.className = \"paginate_button first\";\n\t *        nPrevious.className = \"paginate_button previous\";\n\t *        nNext.className=\"paginate_button next\";\n\t *        nLast.className = \"paginate_button last\";\n\t *        \n\t *        nPaging.appendChild( nFirst );\n\t *        nPaging.appendChild( nPrevious );\n\t *        nPaging.appendChild( nNext );\n\t *        nPaging.appendChild( nLast );\n\t *        \n\t *        $(nFirst).click( function () {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nPrevious).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nNext).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nLast).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t *      },\n\t *      \n\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t *        if ( !oSettings.aanFeatures.p ) {\n\t *          return;\n\t *        }\n\t *        \n\t *        // Loop over each instance of the pager\n\t *        var an = oSettings.aanFeatures.p;\n\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t *          var buttons = an[i].getElementsByTagName('span');\n\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t *          }\n\t *          else {\n\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t *          }\n\t *          \n\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t *            buttons[2].className = \"paginate_disabled_next\";\n\t *            buttons[3].className = \"paginate_disabled_next\";\n\t *          }\n\t *          else {\n\t *            buttons[2].className = \"paginate_enabled_next\";\n\t *            buttons[3].className = \"paginate_enabled_next\";\n\t *          }\n\t *        }\n\t *      }\n\t *    };\n\t */\n\t\"oPagination\": {},\n\n\n\t/**\n\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t * data column (you can add your own type detection functions, or override automatic \n\t * detection using sType). With this specific type given to the column, DataTables will \n\t * apply the required sort from the functions in the object. Each sort type must provide\n\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t * are run). The two sorting functions are typical Javascript sort methods:\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data to compare to the second parameter</li>\n\t *         <li>{*} Data to compare to the first parameter</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t *           the first parameter should be sorted height than the second parameter.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type object\n\t *  @default {}\n\t *\n\t *  @example\n\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t *      \"string-case-asc\": function(x,y) {\n\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t *      },\n\t *      \"string-case-desc\": function(x,y) {\n\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t *      }\n\t *    } );\n\t *\n\t *  @example\n\t *    // Case-insensitive string sorting, with pre-formatting\n\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t *      \"string-pre\": function(x) {\n\t *        return x.toLowerCase();\n\t *      },\n\t *      \"string-asc\": function(x,y) {\n\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t *      },\n\t *      \"string-desc\": function(x,y) {\n\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t *      }\n\t *    } );\n\t */\n\t\"oSort\": {},\n\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @type string\n\t *  @default Version number\n\t */\n\t\"sVersion\": DataTable.version,\n\n\n\t/**\n\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t *  @type string\n\t *  @default alert\n\t */\n\t\"sErrMode\": \"alert\",\n\n\n\t/**\n\t * Store information for DataTables to access globally about other instances\n\t *  @namespace\n\t *  @private\n\t */\n\t\"_oExternConfig\": {\n\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\"iNextUnique\": 0\n\t}\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.row.js",
    "content": "\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * each individual row. This is the object format used for the settings \n * aoData array.\n *  @namespace\n */\nDataTable.models.oRow = {\n\t/**\n\t * TR element for the row\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTr\": null,\n\n\t/**\n\t * Data object from the original data source for the row. This is either\n\t * an array if using the traditional form of DataTables, or an object if\n\t * using mData options. The exact type will depend on the passed in\n\t * data from the data source, or will be an array if using DOM a data \n\t * source.\n\t *  @type array|object\n\t *  @default []\n\t */\n\t\"_aData\": [],\n\n\t/**\n\t * Sorting data cache - this array is ostensibly the same length as the\n\t * number of columns (although each index is generated only as it is \n\t * needed), and holds the data that is used for sorting each column in the\n\t * row. We do this cache generation at the start of the sort in order that\n\t * the formatting of the sort data need be done only once for each cell\n\t * per sort. This array should not be read from or written to by anything\n\t * other than the master sorting methods.\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\t\"_aSortData\": [],\n\n\t/**\n\t * Array of TD elements that are cached for hidden rows, so they can be\n\t * reinserted into the table if a column is made visible again (or to act\n\t * as a store if a column is made hidden). Only hidden columns have a \n\t * reference in the array. For non-hidden columns the value is either\n\t * undefined or null.\n\t *  @type array nodes\n\t *  @default []\n\t *  @private\n\t */\n\t\"_anHidden\": [],\n\n\t/**\n\t * Cache of the class name that DataTables has applied to the row, so we\n\t * can quickly look at this variable rather than needing to do a DOM check\n\t * on className for the nTr property.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @private\n\t */\n\t\"_sRowStripe\": \"\"\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.search.js",
    "content": "\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * search information for the global filter and individual column filters.\n *  @namespace\n */\nDataTable.models.oSearch = {\n\t/**\n\t * Flag to indicate if the filtering should be case insensitive or not\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bCaseInsensitive\": true,\n\n\t/**\n\t * Applied search term\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sSearch\": \"\",\n\n\t/**\n\t * Flag to indicate if the search term should be interpreted as a\n\t * regular expression (true) or not (false) and therefore and special\n\t * regex characters escaped.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bRegex\": false,\n\n\t/**\n\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bSmart\": true\n};\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.settings.js",
    "content": "\n\n/**\n * DataTables settings object - this holds all the information needed for a\n * given table, including configuration, data and current application of the\n * table options. DataTables does not have a single instance for each DataTable\n * with the settings attached to that instance, but rather instances of the\n * DataTable \"class\" are created on-the-fly as needed (typically by a \n * $().dataTable() call) and the settings object is then applied to that\n * instance.\n * \n * Note that this object is related to {@link DataTable.defaults} but this \n * one is the internal data store for DataTables's cache of columns. It should\n * NOT be manipulated outside of DataTables. Any configuration should be done\n * through the initialisation options.\n *  @namespace\n *  @todo Really should attach the settings object to individual instances so we\n *    don't need to create new instances on each $().dataTable() call (if the\n *    table already exists). It would also save passing oSettings around and\n *    into every single function. However, this is a very significant \n *    architecture change for DataTables and will almost certainly break\n *    backwards compatibility with older installations. This is something that\n *    will be done in 2.0.\n */\nDataTable.models.oSettings = {\n\t/**\n\t * Primary features of DataTables and their enablement state.\n\t *  @namespace\n\t */\n\t\"oFeatures\": {\n\t\t\n\t\t/**\n\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t * optimum table and columns widths (true) or not (false).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bAutoWidth\": null,\n\n\t\t/**\n\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t * needed by a driven page draw. This can give a significant speed\n\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t * difference at all fro DOM and server-side processing tables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bDeferRender\": null,\n\t\t\n\t\t/**\n\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bFilter\": null,\n\t\t\n\t\t/**\n\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t * flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bInfo\": null,\n\t\t\n\t\t/**\n\t\t * Present a user control allowing the end user to change the page size\n\t\t * when pagination is enabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bLengthChange\": null,\n\n\t\t/**\n\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t * changing must also be disabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bPaginate\": null,\n\t\t\n\t\t/**\n\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t * user request - typically an Ajax request for server-side processing.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bProcessing\": null,\n\t\t\n\t\t/**\n\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t * get all data from the server for every draw - there is no filtering,\n\t\t * sorting or paging done on the client-side.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bServerSide\": null,\n\t\t\n\t\t/**\n\t\t * Sorting enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSort\": null,\n\t\t\n\t\t/**\n\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t * there is a lot of DOM interaction.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortClasses\": null,\n\t\t\n\t\t/**\n\t\t * State saving enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bStateSave\": null\n\t},\n\t\n\n\t/**\n\t * Scrolling settings for a table.\n\t *  @namespace\n\t */\n\t\"oScroll\": {\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bAutoCss\": null,\n\t\t\n\t\t/**\n\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t * table container down to the height of the table (when true).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bCollapse\": null,\n\t\t\n\t\t/**\n\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t * using the Scroller plug-in.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bInfinite\": null,\n\t\t\n\t\t/**\n\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t * during table initialisation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iBarWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t * when using infinite scrolling.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t */\n\t\t\"iLoadGap\": null,\n\t\t\n\t\t/**\n\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t * disabled if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sX\": null,\n\t\t\n\t\t/**\n\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t * should not need to use this.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @deprecated\n\t\t */\n\t\t\"sXInner\": null,\n\t\t\n\t\t/**\n\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t * if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sY\": null\n\t},\n\t\n\t/**\n\t * Language information for the table.\n\t *  @namespace\n\t *  @extends DataTable.defaults.oLanguage\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Information callback function. See \n\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnInfoCallback\": null\n\t},\n\t\n\t/**\n\t * Browser support parameters\n\t *  @namespace\n\t */\n\t\"oBrowser\": {\n\t\t/**\n\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t * scrolling element (IE6/7)\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bScrollOversize\": false\n\t},\n\t\n\t/**\n\t * Array referencing the nodes which are used for the features. The \n\t * parameters of this object match what is allowed by sDom - i.e.\n\t *   <ul>\n\t *     <li>'l' - Length changing</li>\n\t *     <li>'f' - Filtering input</li>\n\t *     <li>'t' - The table!</li>\n\t *     <li>'i' - Information</li>\n\t *     <li>'p' - Pagination</li>\n\t *     <li>'r' - pRocessing</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aanFeatures\": [],\n\t\n\t/**\n\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t * information.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoData\": [],\n\t\n\t/**\n\t * Array of indexes which are in the current display (after filtering etc)\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplay\": [],\n\t\n\t/**\n\t * Array of indexes for display - no filtering\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplayMaster\": [],\n\t\n\t/**\n\t * Store information about each column that is in use\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoColumns\": [],\n\t\n\t/**\n\t * Store information about the table's header\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeader\": [],\n\t\n\t/**\n\t * Store information about the table's footer\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooter\": [],\n\t\n\t/**\n\t * Search data array for regular expression searching\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asDataSearch\": [],\n\t\n\t/**\n\t * Store the applied global search information in case we want to force a \n\t * research or compare the old search to a new one.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t */\n\t\"oPreviousSearch\": {},\n\t\n\t/**\n\t * Store the applied search for each column - see \n\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t * filtering information for each column.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreSearchCols\": [],\n\t\n\t/**\n\t * Sorting that is applied to the table. Note that the inner arrays are\n\t * used in the following manner:\n\t * <ul>\n\t *   <li>Index 0 - column number</li>\n\t *   <li>Index 1 - current sorting direction</li>\n\t *   <li>Index 2 - index of asSorting for this column</li>\n\t * </ul>\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @todo These inner arrays should really be objects\n\t */\n\t\"aaSorting\": null,\n\t\n\t/**\n\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t * aaSorting).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array|null\n\t *  @default null\n\t */\n\t\"aaSortingFixed\": null,\n\t\n\t/**\n\t * Classes to use for the striping of a table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asStripeClasses\": null,\n\t\n\t/**\n\t * If restoring a table - we should restore its striping classes as well\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asDestroyStripes\": [],\n\t\n\t/**\n\t * If restoring a table - we should restore its width \n\t *  @type int\n\t *  @default 0\n\t */\n\t\"sDestroyWidth\": 0,\n\t\n\t/**\n\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCallback\": [],\n\t\n\t/**\n\t * Callback functions for the header on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeaderCallback\": [],\n\t\n\t/**\n\t * Callback function for the footer on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooterCallback\": [],\n\t\n\t/**\n\t * Array of callback functions for draw callback functions\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDrawCallback\": [],\n\t\n\t/**\n\t * Array of callback functions for row created function\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCreatedCallback\": [],\n\t\n\t/**\n\t * Callback functions for just before the table is redrawn. A return of \n\t * false will be used to cancel the draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreDrawCallback\": [],\n\t\n\t/**\n\t * Callback functions for when the table has been initialised.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoInitComplete\": [],\n\n\t\n\t/**\n\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t * saving state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSaveParams\": [],\n\t\n\t/**\n\t * Callbacks for modifying the settings that have been stored for state saving\n\t * prior to using the stored values to restore the state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoadParams\": [],\n\t\n\t/**\n\t * Callbacks for operating on the settings object once the saved state has been\n\t * loaded\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoaded\": [],\n\t\n\t/**\n\t * Cache the table ID for quick access\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sTableId\": \"\",\n\t\n\t/**\n\t * The TABLE node for the main table\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTable\": null,\n\t\n\t/**\n\t * Permanent ref to the thead element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTHead\": null,\n\t\n\t/**\n\t * Permanent ref to the tfoot element - if it exists\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTFoot\": null,\n\t\n\t/**\n\t * Permanent ref to the tbody element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTBody\": null,\n\t\n\t/**\n\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTableWrapper\": null,\n\t\n\t/**\n\t * Indicate if when using server-side processing the loading of data \n\t * should be deferred until the second draw.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDeferLoading\": false,\n\t\n\t/**\n\t * Indicate if all required information has been read in\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bInitialised\": false,\n\t\n\t/**\n\t * Information about open rows. Each object in the array has the parameters\n\t * 'nTr' and 'nParent'\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoOpenRows\": [],\n\t\n\t/**\n\t * Dictate the positioning of DataTables' control elements - see\n\t * {@link DataTable.model.oInit.sDom}.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDom\": null,\n\t\n\t/**\n\t * Which type of pagination should be used.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string \n\t *  @default two_button\n\t */\n\t\"sPaginationType\": \"two_button\",\n\t\n\t/**\n\t * The cookie duration (for bStateSave) in seconds.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iCookieDuration\": 0,\n\t\n\t/**\n\t * The cookie name prefix.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sCookiePrefix\": \"\",\n\t\n\t/**\n\t * Callback function for cookie creation.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t *  @default null\n\t */\n\t\"fnCookieCallback\": null,\n\t\n\t/**\n\t * Array of callback functions for state saving. Each array element is an \n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t *       and the JSON string to save that has been thus far created. Returns\n\t *       a JSON string to be inserted into a json object \n\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSave\": [],\n\t\n\t/**\n\t * Array of callback functions for state loading. Each array element is an \n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t *       and the object stored. May return false to cancel state loading</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoad\": [],\n\t\n\t/**\n\t * State that was loaded from the cookie. Useful for back reference\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oLoadedState\": null,\n\t\n\t/**\n\t * Source url for AJAX data for the table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sAjaxSource\": null,\n\t\n\t/**\n\t * Property from a given object from which to read the table data from. This\n\t * can be an empty string (when not server-side processing), in which case \n\t * it is  assumed an an array is given directly.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sAjaxDataProp\": null,\n\t\n\t/**\n\t * Note if draw should be blocked while getting data\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bAjaxDataGet\": true,\n\t\n\t/**\n\t * The last jQuery XHR object that was used for server-side data gathering. \n\t * This can be used for working with the XHR information in one of the \n\t * callbacks\n\t *  @type object\n\t *  @default null\n\t */\n\t\"jqXHR\": null,\n\t\n\t/**\n\t * Function to get the server-side data.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnServerData\": null,\n\t\n\t/**\n\t * Functions which are called prior to sending an Ajax request so extra \n\t * parameters can easily be sent to the server\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoServerParams\": [],\n\t\n\t/**\n\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t * required).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sServerMethod\": null,\n\t\n\t/**\n\t * Format numbers for display.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnFormatNumber\": null,\n\t\n\t/**\n\t * List of options that can be used for the user selectable length menu.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aLengthMenu\": null,\n\t\n\t/**\n\t * Counter for the draws that the table does. Also used as a tracker for\n\t * server-side processing\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iDraw\": 0,\n\t\n\t/**\n\t * Indicate if a redraw is being done - useful for Ajax\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDrawing\": false,\n\t\n\t/**\n\t * Draw index (iDraw) of the last error when parsing the returned data\n\t *  @type int\n\t *  @default -1\n\t */\n\t\"iDrawError\": -1,\n\t\n\t/**\n\t * Paging display length\n\t *  @type int\n\t *  @default 10\n\t */\n\t\"_iDisplayLength\": 10,\n\n\t/**\n\t * Paging start point - aiDisplay index\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"_iDisplayStart\": 0,\n\n\t/**\n\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t * this property to get the end point\n\t *  @type int\n\t *  @default 10\n\t *  @private\n\t */\n\t\"_iDisplayEnd\": 10,\n\t\n\t/**\n\t * Server-side processing - number of records in the result set\n\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type int\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsTotal\": 0,\n\n\t/**\n\t * Server-side processing - number of records in the current display set\n\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type boolean\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsDisplay\": 0,\n\t\n\t/**\n\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t */\n\t\"bJUI\": null,\n\t\n\t/**\n\t * The classes to use for the table\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oClasses\": {},\n\t\n\t/**\n\t * Flag attached to the settings object so you can check in the draw \n\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bFiltered\": false,\n\t\n\t/**\n\t * Flag attached to the settings object so you can check in the draw \n\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bSorted\": false,\n\t\n\t/**\n\t * Indicate that if multiple rows are in the header and there is more than \n\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t * should be used for sorting / title by DataTables.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t */\n\t\"bSortCellsTop\": null,\n\t\n\t/**\n\t * Initialisation object that is used for the table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInit\": null,\n\t\n\t/**\n\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t * destroy so they can clean up markup and events.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDestroyCallback\": [],\n\n\t\n\t/**\n\t * Get the number of records in the current record set, before filtering\n\t *  @type function\n\t */\n\t\"fnRecordsTotal\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t} else {\n\t\t\treturn this.aiDisplayMaster.length;\n\t\t}\n\t},\n\t\n\t/**\n\t * Get the number of records in the current record set, after filtering\n\t *  @type function\n\t */\n\t\"fnRecordsDisplay\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t} else {\n\t\t\treturn this.aiDisplay.length;\n\t\t}\n\t},\n\t\n\t/**\n\t * Set the display end point - aiDisplay index\n\t *  @type function\n\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t */\n\t\"fnDisplayEnd\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t} else {\n\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._iDisplayEnd;\n\t\t}\n\t},\n\t\n\t/**\n\t * The DataTables object for this table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInstance\": null,\n\t\n\t/**\n\t * Unique identifier for each instance of the DataTables object. If there\n\t * is an ID on the table node, then it takes that value, otherwise an\n\t * incrementing internal counter is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sInstance\": null,\n\n\t/**\n\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t * keyboard navigation of the table and its controls.\n\t */\n\t\"iTabIndex\": 0,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollHead\": null,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollFoot\": null\n};\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/.gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln    merge=union\n*.csproj merge=union\n*.vbproj merge=union\n*.fsproj merge=union\n*.dbproj merge=union\n\n# Standard to msysgit\n*.doc\t diff=astextplain\n*.DOC\t diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot  diff=astextplain\n*.DOT  diff=astextplain\n*.pdf  diff=astextplain\n*.PDF\t diff=astextplain\n*.rtf\t diff=astextplain\n*.RTF\t diff=astextplain\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/.gitignore",
    "content": "#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.classpath\n.settings/\n.loadpath\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# PDT-specific\n.buildpath\n\n\n#################\n## Visual Studio\n#################\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n[Dd]ebug/\n[Rr]elease/\n*_i.c\n*_p.c\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.vspscc\n.builds\n*.dotCover\n\n## TODO: If you have NuGet Package Restore enabled, uncomment this\n#packages/\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n\n# Visual Studio profiler\n*.psess\n*.vsp\n\n# ReSharper is a .NET coding add-in\n_ReSharper*\n\n# Installshield output folder\n[Ee]xpress\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish\n\n# Others\n[Bb]in\n[Oo]bj\nsql\nTestResults\n*.Cache\nClientBin\nstylecop.*\n~$*\n*.dbmdl\nGenerated_Code #added for RIA/Silverlight projects\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\n\n\n\n############\n## Windows\n############\n\n# Windows image file caches\nThumbs.db\n\n# Folder config file\nDesktop.ini\n\n\n#############\n## Python\n#############\n\n*.py[co]\n\n# Packages\n*.egg\n*.egg-info\ndist\nbuild\neggs\nparts\nbin\nvar\nsdist\ndevelop-eggs\n.installed.cfg\n\n# Installer logs\npip-log.txt\n\n# Unit test / coverage reports\n.coverage\n.tox\n\n#Translations\n*.mo\n\n#Mr Developer\n.mr.developer.cfg\n\n# Mac crap\n.DS_Store\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/LICENSE",
    "content": "Copyright 2012 Steven Usher & Brad Vincent\n\nReleased under the MIT license\nYou are free to use FooTable in commercial projects as long as this copyright header is left intact."
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/README.md",
    "content": "FooTable\n========\n\nFooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome - No matter how many columns of data you may have in them.\n\n![FooTable](https://raw.github.com/bradvin/FooTable/master/screenshot.jpg \"FooTable\")\n\nFooTable also now has a sorting and filtering add-on. Footable also works with jQuery 1.4.4 and above!\n\nIndex\n-----\n\n* [What does it do?](#whatdoesitdo)\n* [Demo](#demo)\n* [Data Attribute Configuration](#dataattributeconfig)\n* [Breakpoints](#breakpoints)\n* [Usage](#usage)\n* [Extensible](#extensible)\n  * [Parsers](#parsers)\n* [Thanks](#thanks)\n\n<h2 id=\"whatdoesitdo\">What does it do?</h2>\n\nFooTable transforms your HTML tables into expandable responsive tables. This is how it works:\n\n1. It hides certain columns of data at different resolutions (we call these breakpoints).\n2. Rows become expandable to show the data that was hidden.\n\nSo simple! So all the data that is hidden can always be seen just by clicking the row.\n\n<h2 id=\"demo\">Demo</h2>\n\nCheck out the [FooTable homepage](http://themergency.com/footable/) where we will be adding more demos, including the responsive demo!\n\n<h2 id=\"dataattributeconfig\">Data Attribute Configuration</h2>\n\nOne of the main goals of FooTable was to make it completely configurable via data attributes inside the table. We wanted you to be able to look at the HTML markup and see exactly how the FooTable was going to function. Take a look at this markup for example:\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-class=\"expand\">\n        First Name\n      </th>\n      <th>\n        Last Name\n      </th>\n      <th data-hide=\"phone,tablet\">\n        Job Title\n      </th>\n      <th data-hide=\"phone,tablet\">\n        DOB\n      </th>\n      <th data-hide=\"phone\">\n        Status\n      </th>\n    </tr>\n  </thead>\n```\n\nSo you can immediately see that certain columns will be hidden on phones and tablets. We are also going to assign all cells in the first column with a class of \"expand\" - this is used to style the cool plus/minus icons in the demo.\n\nAll available \"data-\" attributes are listed below with their descriptions. The \"Applied To\" column specifies whether the attribute should be added to the table header cells or body cells.\n\n<table>\n  <tr>\n    <th>Name</th>\n    <th>Values</th>\n    <th>Applied To</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-class</td>\n    <td style=\"white-space:nowrap;\">CSS Class</td>\n    <td>header</td>\n    <td>This specifies a CSS class to be applied to all cells in a column.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-hide</td>\n    <td style=\"white-space:nowrap;\"><a href=\"#breakpoints\">breakpoint</a> | default</td>\n    <td>header</td>\n    <td>This specifies at which breakpoints to hide a column. Seperate multiple using a comma.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-ignore</td>\n    <td style=\"white-space:nowrap;\">true | false</td>\n    <td>header</td>\n    <td>This will stop the column being included in the detail row creation.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-name</td>\n    <td style=\"white-space:nowrap;\">String</td>\n    <td>header</td>\n    <td>This will override the name of the column in the detail row.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-type</td>\n    <td style=\"white-space:nowrap;\"><a href=\"#parsers\">parser</a> | alpha</td>\n    <td>header</td>\n    <td>This specifies the parser to use to retrieve a cell's value.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-value</td>\n    <td style=\"white-space:nowrap;\">Any</td>\n    <td>body</td>\n    <td>This specifies a value to use other than the text of the cell.</td>\n  </tr>\n</table>\n\n<h2 id=\"breakpoints\">Breakpoints</h2>\n\nWe work with the concepts of \"breakpoints\", which are different device widths we care about. The default breakpoints are:\n\n```javascript\nbreakpoints: {\n  phone: 480,\n  tablet: 1024\n}\n```\n\nSo looking at the markup in the *Data Attribute Configuration* section, you can now tell that the *Job Title*, *DOB* and *Status* columns will be hidden when the screen width is below 480 (phone).\n\nThere are also two built-in breakpoints called \"default\" and \"all\".\n\nThe \"default\" breakpoint is the fallback breakpoint for when the current screen width is larger than any defined breakpoint. Looking at the above JS snippet the \"default\" breakpoint would be applied once the screen width is larger than 1024 (tablet).\n\nThe last breakpoint \"all\" is pretty straight forward in it's use. You can always hide a column on any screen width by applying the *data-hide=\"all\"* attribute to the header.\n\n<h2 id=\"usage\">Usage</h2>\n\nCreate a simple table (don't forget to set the data attributes for each column!):\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th>Name</th>\n      <th data-hide=\"phone,tablet\">Phone</th>\n      <th data-hide=\"phone,tablet\">Email</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Bob Builder</td>\n      <td>555-12345</td>\n      <td>bob@home.com</td>\n    </tr>\n    <tr>\n      <td>Bridget Jones</td>\n      <td>544-776655</td>\n      <td>bjones@mysite.com</td>\n    </tr>\n    <tr>\n      <td>Tom Cruise</td>\n      <td>555-99911</td>\n      <td>cruise1@crazy.com</td>\n    </tr>\n  </tbody>\n</table>\n```\n\nThen include the FooTable CSS and JS in your page head:\n\n```html\n<link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n<!-- obviously you have jQuery already included -->\n<script src=\"js/footable.js\" type=\"text/javascript\"></script>\n```\n\nAnd finally, call the FooTable plugin:\n\n```html\n<script type=\"text/javascript\">\n  $(function() {\n    $('.footable').footable();\n  });\n</script>\n```\n\n<h2 id=\"extensible\">Extensible</h2>\n\nAnother goal of FooTable was to make it super extensible. If you look at the code you will see that there is a plugin framework within the plugin, so extra mods can be attached just by including another javascript file. We also didn't want to bloat FooTable, so you can only use what you need and leave out everything else. \n\nWorking add-ons:\n\n* sorting\n* filtering\n\nOthere add-on ideas so far are:\n\n* conditional formatting\n* json loading\n\n<h3 id=\"parsers\">Parsers</h3>\n\nParsers are the heart of FooTable as data is what we are displaying and working with and due to this they are highly extensible. They are used to retrieve values from cells or alternatively from a \"data-value\" attribute.\nBy default there is only an \"alpha\" parser and this will be used unless a custom parser is implemented and a column is set to use it via the \"data-type\" attribute.\n\nThe below is the very simple \"alpha\" parser used by default to retrieve a cell's value:\n\n```javascript\nalpha: function (cell) {\n  return $(cell).data('value') || $.trim($(cell).text());\n}\n```\n\nThe below is an example of a numeric parser and how to apply it (these can be wrapped up in a plugin; see the sortable plugin):\n\n```html\n<script type=\"text/javascript\">\n  $(function() {\n    $('.footable').footable({\n      parsers: {\n        numeric: function (cell) {\n          var val = $(cell).data('value') || $(cell).text().replace(/[^0-9.-]/g, '');\n          val = parseFloat(val);\n          if (isNaN(val)) val = 0;\n          return val;\n        }\n      }\n    });\n  });\n</script>\n```\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-type=\"numeric\">\n        Count\n      </th>\n      ...\n    </tr>\n  </thead>\n  ...\n```\n\nAs you can see in the snippet for the \"numeric\" parser, like the \"alpha\" parser, they both check for a \"data-value\" attribute and will use this value before using a cell's text.\n\nAn example of this could look like the below, where you want to display the name of a number instead of the actual value:\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-type=\"numeric\">\n        Count\n      </th>\n      ...\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td data-value=\"0\">Zero</td>\n      ...\n    </tr>\n    <tr>\n      <td data-value=\"1\">One</td>\n      ...\n    </tr>\n    ...\n  </tbody>\n  ...\n```\n\n<h2 id=\"thanks\">Thanks</h2>\n\nWe would not have created FooTable without inspiration from others. Thanks must be given to:\n\n* Catalin for his [original table CSS](http://www.red-team-design.com/practical-css3-tables-with-rounded-corners)\n* [Chris Coyier](http://css-tricks.com/responsive-data-tables/) (also check out Chris' [responsive table roundup post](http://css-tricks.com/responsive-data-table-roundup/))\n* [Zurb](http://www.zurb.com/playground/responsive-tables)\n* [Dave Bushell](http://dbushell.com/2012/01/05/responsive-tables-2/)\n* [Filament Group](http://filamentgroup.com/examples/rwd-table-patterns/)\n* [Stewart Curry](http://www.irishstu.com/stublog/2011/12/13/tables-responsive-design-part-2-nchilds/)"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-responsive.css",
    "content": "/*!\n * Bootstrap Responsive v2.3.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.clearfix {\n  *zoom: 1;\n}\n\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.clearfix:after {\n  clear: both;\n}\n\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\n.hidden {\n  display: none;\n  visibility: hidden;\n}\n\n.visible-phone {\n  display: none !important;\n}\n\n.visible-tablet {\n  display: none !important;\n}\n\n.hidden-desktop {\n  display: none !important;\n}\n\n.visible-desktop {\n  display: inherit !important;\n}\n\n@media (min-width: 768px) and (max-width: 979px) {\n  .hidden-desktop {\n    display: inherit !important;\n  }\n  .visible-desktop {\n    display: none !important ;\n  }\n  .visible-tablet {\n    display: inherit !important;\n  }\n  .hidden-tablet {\n    display: none !important;\n  }\n}\n\n@media (max-width: 767px) {\n  .hidden-desktop {\n    display: inherit !important;\n  }\n  .visible-desktop {\n    display: none !important;\n  }\n  .visible-phone {\n    display: inherit !important;\n  }\n  .hidden-phone {\n    display: none !important;\n  }\n}\n\n.visible-print {\n  display: none !important;\n}\n\n@media print {\n  .visible-print {\n    display: inherit !important;\n  }\n  .hidden-print {\n    display: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .row {\n    margin-left: -30px;\n    *zoom: 1;\n  }\n  .row:before,\n  .row:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row:after {\n    clear: both;\n  }\n  [class*=\"span\"] {\n    float: left;\n    min-height: 1px;\n    margin-left: 30px;\n  }\n  .container,\n  .navbar-static-top .container,\n  .navbar-fixed-top .container,\n  .navbar-fixed-bottom .container {\n    width: 1170px;\n  }\n  .span12 {\n    width: 1170px;\n  }\n  .span11 {\n    width: 1070px;\n  }\n  .span10 {\n    width: 970px;\n  }\n  .span9 {\n    width: 870px;\n  }\n  .span8 {\n    width: 770px;\n  }\n  .span7 {\n    width: 670px;\n  }\n  .span6 {\n    width: 570px;\n  }\n  .span5 {\n    width: 470px;\n  }\n  .span4 {\n    width: 370px;\n  }\n  .span3 {\n    width: 270px;\n  }\n  .span2 {\n    width: 170px;\n  }\n  .span1 {\n    width: 70px;\n  }\n  .offset12 {\n    margin-left: 1230px;\n  }\n  .offset11 {\n    margin-left: 1130px;\n  }\n  .offset10 {\n    margin-left: 1030px;\n  }\n  .offset9 {\n    margin-left: 930px;\n  }\n  .offset8 {\n    margin-left: 830px;\n  }\n  .offset7 {\n    margin-left: 730px;\n  }\n  .offset6 {\n    margin-left: 630px;\n  }\n  .offset5 {\n    margin-left: 530px;\n  }\n  .offset4 {\n    margin-left: 430px;\n  }\n  .offset3 {\n    margin-left: 330px;\n  }\n  .offset2 {\n    margin-left: 230px;\n  }\n  .offset1 {\n    margin-left: 130px;\n  }\n  .row-fluid {\n    width: 100%;\n    *zoom: 1;\n  }\n  .row-fluid:before,\n  .row-fluid:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row-fluid:after {\n    clear: both;\n  }\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: left;\n    width: 100%;\n    min-height: 30px;\n    margin-left: 2.564102564102564%;\n    *margin-left: 2.5109110747408616%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"span\"]:first-child {\n    margin-left: 0;\n  }\n  .row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 2.564102564102564%;\n  }\n  .row-fluid .span12 {\n    width: 100%;\n    *width: 99.94680851063829%;\n  }\n  .row-fluid .span11 {\n    width: 91.45299145299145%;\n    *width: 91.39979996362975%;\n  }\n  .row-fluid .span10 {\n    width: 82.90598290598291%;\n    *width: 82.8527914166212%;\n  }\n  .row-fluid .span9 {\n    width: 74.35897435897436%;\n    *width: 74.30578286961266%;\n  }\n  .row-fluid .span8 {\n    width: 65.81196581196582%;\n    *width: 65.75877432260411%;\n  }\n  .row-fluid .span7 {\n    width: 57.26495726495726%;\n    *width: 57.21176577559556%;\n  }\n  .row-fluid .span6 {\n    width: 48.717948717948715%;\n    *width: 48.664757228587014%;\n  }\n  .row-fluid .span5 {\n    width: 40.17094017094017%;\n    *width: 40.11774868157847%;\n  }\n  .row-fluid .span4 {\n    width: 31.623931623931625%;\n    *width: 31.570740134569924%;\n  }\n  .row-fluid .span3 {\n    width: 23.076923076923077%;\n    *width: 23.023731587561375%;\n  }\n  .row-fluid .span2 {\n    width: 14.52991452991453%;\n    *width: 14.476723040552828%;\n  }\n  .row-fluid .span1 {\n    width: 5.982905982905983%;\n    *width: 5.929714493544281%;\n  }\n  .row-fluid .offset12 {\n    margin-left: 105.12820512820512%;\n    *margin-left: 105.02182214948171%;\n  }\n  .row-fluid .offset12:first-child {\n    margin-left: 102.56410256410257%;\n    *margin-left: 102.45771958537915%;\n  }\n  .row-fluid .offset11 {\n    margin-left: 96.58119658119658%;\n    *margin-left: 96.47481360247316%;\n  }\n  .row-fluid .offset11:first-child {\n    margin-left: 94.01709401709402%;\n    *margin-left: 93.91071103837061%;\n  }\n  .row-fluid .offset10 {\n    margin-left: 88.03418803418803%;\n    *margin-left: 87.92780505546462%;\n  }\n  .row-fluid .offset10:first-child {\n    margin-left: 85.47008547008548%;\n    *margin-left: 85.36370249136206%;\n  }\n  .row-fluid .offset9 {\n    margin-left: 79.48717948717949%;\n    *margin-left: 79.38079650845607%;\n  }\n  .row-fluid .offset9:first-child {\n    margin-left: 76.92307692307693%;\n    *margin-left: 76.81669394435352%;\n  }\n  .row-fluid .offset8 {\n    margin-left: 70.94017094017094%;\n    *margin-left: 70.83378796144753%;\n  }\n  .row-fluid .offset8:first-child {\n    margin-left: 68.37606837606839%;\n    *margin-left: 68.26968539734497%;\n  }\n  .row-fluid .offset7 {\n    margin-left: 62.393162393162385%;\n    *margin-left: 62.28677941443899%;\n  }\n  .row-fluid .offset7:first-child {\n    margin-left: 59.82905982905982%;\n    *margin-left: 59.72267685033642%;\n  }\n  .row-fluid .offset6 {\n    margin-left: 53.84615384615384%;\n    *margin-left: 53.739770867430444%;\n  }\n  .row-fluid .offset6:first-child {\n    margin-left: 51.28205128205128%;\n    *margin-left: 51.175668303327875%;\n  }\n  .row-fluid .offset5 {\n    margin-left: 45.299145299145295%;\n    *margin-left: 45.1927623204219%;\n  }\n  .row-fluid .offset5:first-child {\n    margin-left: 42.73504273504273%;\n    *margin-left: 42.62865975631933%;\n  }\n  .row-fluid .offset4 {\n    margin-left: 36.75213675213675%;\n    *margin-left: 36.645753773413354%;\n  }\n  .row-fluid .offset4:first-child {\n    margin-left: 34.18803418803419%;\n    *margin-left: 34.081651209310785%;\n  }\n  .row-fluid .offset3 {\n    margin-left: 28.205128205128204%;\n    *margin-left: 28.0987452264048%;\n  }\n  .row-fluid .offset3:first-child {\n    margin-left: 25.641025641025642%;\n    *margin-left: 25.53464266230224%;\n  }\n  .row-fluid .offset2 {\n    margin-left: 19.65811965811966%;\n    *margin-left: 19.551736679396257%;\n  }\n  .row-fluid .offset2:first-child {\n    margin-left: 17.094017094017094%;\n    *margin-left: 16.98763411529369%;\n  }\n  .row-fluid .offset1 {\n    margin-left: 11.11111111111111%;\n    *margin-left: 11.004728132387708%;\n  }\n  .row-fluid .offset1:first-child {\n    margin-left: 8.547008547008547%;\n    *margin-left: 8.440625568285142%;\n  }\n  input,\n  textarea,\n  .uneditable-input {\n    margin-left: 0;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 30px;\n  }\n  input.span12,\n  textarea.span12,\n  .uneditable-input.span12 {\n    width: 1156px;\n  }\n  input.span11,\n  textarea.span11,\n  .uneditable-input.span11 {\n    width: 1056px;\n  }\n  input.span10,\n  textarea.span10,\n  .uneditable-input.span10 {\n    width: 956px;\n  }\n  input.span9,\n  textarea.span9,\n  .uneditable-input.span9 {\n    width: 856px;\n  }\n  input.span8,\n  textarea.span8,\n  .uneditable-input.span8 {\n    width: 756px;\n  }\n  input.span7,\n  textarea.span7,\n  .uneditable-input.span7 {\n    width: 656px;\n  }\n  input.span6,\n  textarea.span6,\n  .uneditable-input.span6 {\n    width: 556px;\n  }\n  input.span5,\n  textarea.span5,\n  .uneditable-input.span5 {\n    width: 456px;\n  }\n  input.span4,\n  textarea.span4,\n  .uneditable-input.span4 {\n    width: 356px;\n  }\n  input.span3,\n  textarea.span3,\n  .uneditable-input.span3 {\n    width: 256px;\n  }\n  input.span2,\n  textarea.span2,\n  .uneditable-input.span2 {\n    width: 156px;\n  }\n  input.span1,\n  textarea.span1,\n  .uneditable-input.span1 {\n    width: 56px;\n  }\n  .thumbnails {\n    margin-left: -30px;\n  }\n  .thumbnails > li {\n    margin-left: 30px;\n  }\n  .row-fluid .thumbnails {\n    margin-left: 0;\n  }\n}\n\n@media (min-width: 768px) and (max-width: 979px) {\n  .row {\n    margin-left: -20px;\n    *zoom: 1;\n  }\n  .row:before,\n  .row:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row:after {\n    clear: both;\n  }\n  [class*=\"span\"] {\n    float: left;\n    min-height: 1px;\n    margin-left: 20px;\n  }\n  .container,\n  .navbar-static-top .container,\n  .navbar-fixed-top .container,\n  .navbar-fixed-bottom .container {\n    width: 724px;\n  }\n  .span12 {\n    width: 724px;\n  }\n  .span11 {\n    width: 662px;\n  }\n  .span10 {\n    width: 600px;\n  }\n  .span9 {\n    width: 538px;\n  }\n  .span8 {\n    width: 476px;\n  }\n  .span7 {\n    width: 414px;\n  }\n  .span6 {\n    width: 352px;\n  }\n  .span5 {\n    width: 290px;\n  }\n  .span4 {\n    width: 228px;\n  }\n  .span3 {\n    width: 166px;\n  }\n  .span2 {\n    width: 104px;\n  }\n  .span1 {\n    width: 42px;\n  }\n  .offset12 {\n    margin-left: 764px;\n  }\n  .offset11 {\n    margin-left: 702px;\n  }\n  .offset10 {\n    margin-left: 640px;\n  }\n  .offset9 {\n    margin-left: 578px;\n  }\n  .offset8 {\n    margin-left: 516px;\n  }\n  .offset7 {\n    margin-left: 454px;\n  }\n  .offset6 {\n    margin-left: 392px;\n  }\n  .offset5 {\n    margin-left: 330px;\n  }\n  .offset4 {\n    margin-left: 268px;\n  }\n  .offset3 {\n    margin-left: 206px;\n  }\n  .offset2 {\n    margin-left: 144px;\n  }\n  .offset1 {\n    margin-left: 82px;\n  }\n  .row-fluid {\n    width: 100%;\n    *zoom: 1;\n  }\n  .row-fluid:before,\n  .row-fluid:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row-fluid:after {\n    clear: both;\n  }\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: left;\n    width: 100%;\n    min-height: 30px;\n    margin-left: 2.7624309392265194%;\n    *margin-left: 2.709239449864817%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"span\"]:first-child {\n    margin-left: 0;\n  }\n  .row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 2.7624309392265194%;\n  }\n  .row-fluid .span12 {\n    width: 100%;\n    *width: 99.94680851063829%;\n  }\n  .row-fluid .span11 {\n    width: 91.43646408839778%;\n    *width: 91.38327259903608%;\n  }\n  .row-fluid .span10 {\n    width: 82.87292817679558%;\n    *width: 82.81973668743387%;\n  }\n  .row-fluid .span9 {\n    width: 74.30939226519337%;\n    *width: 74.25620077583166%;\n  }\n  .row-fluid .span8 {\n    width: 65.74585635359117%;\n    *width: 65.69266486422946%;\n  }\n  .row-fluid .span7 {\n    width: 57.18232044198895%;\n    *width: 57.12912895262725%;\n  }\n  .row-fluid .span6 {\n    width: 48.61878453038674%;\n    *width: 48.56559304102504%;\n  }\n  .row-fluid .span5 {\n    width: 40.05524861878453%;\n    *width: 40.00205712942283%;\n  }\n  .row-fluid .span4 {\n    width: 31.491712707182323%;\n    *width: 31.43852121782062%;\n  }\n  .row-fluid .span3 {\n    width: 22.92817679558011%;\n    *width: 22.87498530621841%;\n  }\n  .row-fluid .span2 {\n    width: 14.3646408839779%;\n    *width: 14.311449394616199%;\n  }\n  .row-fluid .span1 {\n    width: 5.801104972375691%;\n    *width: 5.747913483013988%;\n  }\n  .row-fluid .offset12 {\n    margin-left: 105.52486187845304%;\n    *margin-left: 105.41847889972962%;\n  }\n  .row-fluid .offset12:first-child {\n    margin-left: 102.76243093922652%;\n    *margin-left: 102.6560479605031%;\n  }\n  .row-fluid .offset11 {\n    margin-left: 96.96132596685082%;\n    *margin-left: 96.8549429881274%;\n  }\n  .row-fluid .offset11:first-child {\n    margin-left: 94.1988950276243%;\n    *margin-left: 94.09251204890089%;\n  }\n  .row-fluid .offset10 {\n    margin-left: 88.39779005524862%;\n    *margin-left: 88.2914070765252%;\n  }\n  .row-fluid .offset10:first-child {\n    margin-left: 85.6353591160221%;\n    *margin-left: 85.52897613729868%;\n  }\n  .row-fluid .offset9 {\n    margin-left: 79.8342541436464%;\n    *margin-left: 79.72787116492299%;\n  }\n  .row-fluid .offset9:first-child {\n    margin-left: 77.07182320441989%;\n    *margin-left: 76.96544022569647%;\n  }\n  .row-fluid .offset8 {\n    margin-left: 71.2707182320442%;\n    *margin-left: 71.16433525332079%;\n  }\n  .row-fluid .offset8:first-child {\n    margin-left: 68.50828729281768%;\n    *margin-left: 68.40190431409427%;\n  }\n  .row-fluid .offset7 {\n    margin-left: 62.70718232044199%;\n    *margin-left: 62.600799341718584%;\n  }\n  .row-fluid .offset7:first-child {\n    margin-left: 59.94475138121547%;\n    *margin-left: 59.838368402492065%;\n  }\n  .row-fluid .offset6 {\n    margin-left: 54.14364640883978%;\n    *margin-left: 54.037263430116376%;\n  }\n  .row-fluid .offset6:first-child {\n    margin-left: 51.38121546961326%;\n    *margin-left: 51.27483249088986%;\n  }\n  .row-fluid .offset5 {\n    margin-left: 45.58011049723757%;\n    *margin-left: 45.47372751851417%;\n  }\n  .row-fluid .offset5:first-child {\n    margin-left: 42.81767955801105%;\n    *margin-left: 42.71129657928765%;\n  }\n  .row-fluid .offset4 {\n    margin-left: 37.01657458563536%;\n    *margin-left: 36.91019160691196%;\n  }\n  .row-fluid .offset4:first-child {\n    margin-left: 34.25414364640884%;\n    *margin-left: 34.14776066768544%;\n  }\n  .row-fluid .offset3 {\n    margin-left: 28.45303867403315%;\n    *margin-left: 28.346655695309746%;\n  }\n  .row-fluid .offset3:first-child {\n    margin-left: 25.69060773480663%;\n    *margin-left: 25.584224756083227%;\n  }\n  .row-fluid .offset2 {\n    margin-left: 19.88950276243094%;\n    *margin-left: 19.783119783707537%;\n  }\n  .row-fluid .offset2:first-child {\n    margin-left: 17.12707182320442%;\n    *margin-left: 17.02068884448102%;\n  }\n  .row-fluid .offset1 {\n    margin-left: 11.32596685082873%;\n    *margin-left: 11.219583872105325%;\n  }\n  .row-fluid .offset1:first-child {\n    margin-left: 8.56353591160221%;\n    *margin-left: 8.457152932878806%;\n  }\n  input,\n  textarea,\n  .uneditable-input {\n    margin-left: 0;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 20px;\n  }\n  input.span12,\n  textarea.span12,\n  .uneditable-input.span12 {\n    width: 710px;\n  }\n  input.span11,\n  textarea.span11,\n  .uneditable-input.span11 {\n    width: 648px;\n  }\n  input.span10,\n  textarea.span10,\n  .uneditable-input.span10 {\n    width: 586px;\n  }\n  input.span9,\n  textarea.span9,\n  .uneditable-input.span9 {\n    width: 524px;\n  }\n  input.span8,\n  textarea.span8,\n  .uneditable-input.span8 {\n    width: 462px;\n  }\n  input.span7,\n  textarea.span7,\n  .uneditable-input.span7 {\n    width: 400px;\n  }\n  input.span6,\n  textarea.span6,\n  .uneditable-input.span6 {\n    width: 338px;\n  }\n  input.span5,\n  textarea.span5,\n  .uneditable-input.span5 {\n    width: 276px;\n  }\n  input.span4,\n  textarea.span4,\n  .uneditable-input.span4 {\n    width: 214px;\n  }\n  input.span3,\n  textarea.span3,\n  .uneditable-input.span3 {\n    width: 152px;\n  }\n  input.span2,\n  textarea.span2,\n  .uneditable-input.span2 {\n    width: 90px;\n  }\n  input.span1,\n  textarea.span1,\n  .uneditable-input.span1 {\n    width: 28px;\n  }\n}\n\n@media (max-width: 767px) {\n  body {\n    padding-right: 20px;\n    padding-left: 20px;\n  }\n  .navbar-fixed-top,\n  .navbar-fixed-bottom,\n  .navbar-static-top {\n    margin-right: -20px;\n    margin-left: -20px;\n  }\n  .container-fluid {\n    padding: 0;\n  }\n  .dl-horizontal dt {\n    float: none;\n    width: auto;\n    clear: none;\n    text-align: left;\n  }\n  .dl-horizontal dd {\n    margin-left: 0;\n  }\n  .container {\n    width: auto;\n  }\n  .row-fluid {\n    width: 100%;\n  }\n  .row,\n  .thumbnails {\n    margin-left: 0;\n  }\n  .thumbnails > li {\n    float: none;\n    margin-left: 0;\n  }\n  [class*=\"span\"],\n  .uneditable-input[class*=\"span\"],\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: none;\n    width: 100%;\n    margin-left: 0;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .span12,\n  .row-fluid .span12 {\n    width: 100%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"offset\"]:first-child {\n    margin-left: 0;\n  }\n  .input-large,\n  .input-xlarge,\n  .input-xxlarge,\n  input[class*=\"span\"],\n  select[class*=\"span\"],\n  textarea[class*=\"span\"],\n  .uneditable-input {\n    display: block;\n    width: 100%;\n    min-height: 30px;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .input-prepend input,\n  .input-append input,\n  .input-prepend input[class*=\"span\"],\n  .input-append input[class*=\"span\"] {\n    display: inline-block;\n    width: auto;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 0;\n  }\n  .modal {\n    position: fixed;\n    top: 20px;\n    right: 20px;\n    left: 20px;\n    width: auto;\n    margin: 0;\n  }\n  .modal.fade {\n    top: -100px;\n  }\n  .modal.fade.in {\n    top: 20px;\n  }\n}\n\n@media (max-width: 480px) {\n  .nav-collapse {\n    -webkit-transform: translate3d(0, 0, 0);\n  }\n  .page-header h1 small {\n    display: block;\n    line-height: 20px;\n  }\n  input[type=\"checkbox\"],\n  input[type=\"radio\"] {\n    border: 1px solid #ccc;\n  }\n  .form-horizontal .control-label {\n    float: none;\n    width: auto;\n    padding-top: 0;\n    text-align: left;\n  }\n  .form-horizontal .controls {\n    margin-left: 0;\n  }\n  .form-horizontal .control-list {\n    padding-top: 0;\n  }\n  .form-horizontal .form-actions {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    display: block;\n    float: none;\n    margin-bottom: 10px;\n  }\n  .media-object {\n    margin-right: 0;\n    margin-left: 0;\n  }\n  .modal {\n    top: 10px;\n    right: 10px;\n    left: 10px;\n  }\n  .modal-header .close {\n    padding: 10px;\n    margin: -10px;\n  }\n  .carousel-caption {\n    position: static;\n  }\n}\n\n@media (max-width: 979px) {\n  body {\n    padding-top: 0;\n  }\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    position: static;\n  }\n  .navbar-fixed-top {\n    margin-bottom: 20px;\n  }\n  .navbar-fixed-bottom {\n    margin-top: 20px;\n  }\n  .navbar-fixed-top .navbar-inner,\n  .navbar-fixed-bottom .navbar-inner {\n    padding: 5px;\n  }\n  .navbar .container {\n    width: auto;\n    padding: 0;\n  }\n  .navbar .brand {\n    padding-right: 10px;\n    padding-left: 10px;\n    margin: 0 0 0 -5px;\n  }\n  .nav-collapse {\n    clear: both;\n  }\n  .nav-collapse .nav {\n    float: none;\n    margin: 0 0 10px;\n  }\n  .nav-collapse .nav > li {\n    float: none;\n  }\n  .nav-collapse .nav > li > a {\n    margin-bottom: 2px;\n  }\n  .nav-collapse .nav > .divider-vertical {\n    display: none;\n  }\n  .nav-collapse .nav .nav-header {\n    color: #777777;\n    text-shadow: none;\n  }\n  .nav-collapse .nav > li > a,\n  .nav-collapse .dropdown-menu a {\n    padding: 9px 15px;\n    font-weight: bold;\n    color: #777777;\n    -webkit-border-radius: 3px;\n       -moz-border-radius: 3px;\n            border-radius: 3px;\n  }\n  .nav-collapse .btn {\n    padding: 4px 10px 4px;\n    font-weight: normal;\n    -webkit-border-radius: 4px;\n       -moz-border-radius: 4px;\n            border-radius: 4px;\n  }\n  .nav-collapse .dropdown-menu li + li a {\n    margin-bottom: 2px;\n  }\n  .nav-collapse .nav > li > a:hover,\n  .nav-collapse .nav > li > a:focus,\n  .nav-collapse .dropdown-menu a:hover,\n  .nav-collapse .dropdown-menu a:focus {\n    background-color: #f2f2f2;\n  }\n  .navbar-inverse .nav-collapse .nav > li > a,\n  .navbar-inverse .nav-collapse .dropdown-menu a {\n    color: #999999;\n  }\n  .navbar-inverse .nav-collapse .nav > li > a:hover,\n  .navbar-inverse .nav-collapse .nav > li > a:focus,\n  .navbar-inverse .nav-collapse .dropdown-menu a:hover,\n  .navbar-inverse .nav-collapse .dropdown-menu a:focus {\n    background-color: #111111;\n  }\n  .nav-collapse.in .btn-group {\n    padding: 0;\n    margin-top: 5px;\n  }\n  .nav-collapse .dropdown-menu {\n    position: static;\n    top: auto;\n    left: auto;\n    display: none;\n    float: none;\n    max-width: none;\n    padding: 0;\n    margin: 0 15px;\n    background-color: transparent;\n    border: none;\n    -webkit-border-radius: 0;\n       -moz-border-radius: 0;\n            border-radius: 0;\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n  }\n  .nav-collapse .open > .dropdown-menu {\n    display: block;\n  }\n  .nav-collapse .dropdown-menu:before,\n  .nav-collapse .dropdown-menu:after {\n    display: none;\n  }\n  .nav-collapse .dropdown-menu .divider {\n    display: none;\n  }\n  .nav-collapse .nav > li > .dropdown-menu:before,\n  .nav-collapse .nav > li > .dropdown-menu:after {\n    display: none;\n  }\n  .nav-collapse .navbar-form,\n  .nav-collapse .navbar-search {\n    float: none;\n    padding: 10px 15px;\n    margin: 10px 0;\n    border-top: 1px solid #f2f2f2;\n    border-bottom: 1px solid #f2f2f2;\n    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n  .navbar-inverse .nav-collapse .navbar-form,\n  .navbar-inverse .nav-collapse .navbar-search {\n    border-top-color: #111111;\n    border-bottom-color: #111111;\n  }\n  .navbar .nav-collapse .nav.pull-right {\n    float: none;\n    margin-left: 0;\n  }\n  .nav-collapse,\n  .nav-collapse.collapse {\n    height: 0;\n    overflow: hidden;\n  }\n  .navbar .btn-navbar {\n    display: block;\n  }\n  .navbar-static .navbar-inner {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n}\n\n@media (min-width: 980px) {\n  .nav-collapse.collapse {\n    height: auto !important;\n    overflow: visible !important;\n  }\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-tab.js",
    "content": "/* ========================================================\n * bootstrap-tab.js v2.3.1\n * http://twitter.github.com/bootstrap/javascript.html#tabs\n * ========================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================== */\n\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_;\n\n\n /* TAB CLASS DEFINITION\n  * ==================== */\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.prototype = {\n\n    constructor: Tab\n\n  , show: function () {\n      var $this = this.element\n        , $ul = $this.closest('ul:not(.dropdown-menu)')\n        , selector = $this.attr('data-target')\n        , previous\n        , $target\n        , e\n\n      if (!selector) {\n        selector = $this.attr('href')\n        selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n      }\n\n      if ( $this.parent('li').hasClass('active') ) return\n\n      previous = $ul.find('.active:last a')[0]\n\n      e = $.Event('show', {\n        relatedTarget: previous\n      })\n\n      $this.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      $target = $(selector)\n\n      this.activate($this.parent('li'), $ul)\n      this.activate($target, $target.parent(), function () {\n        $this.trigger({\n          type: 'shown'\n        , relatedTarget: previous\n        })\n      })\n    }\n\n  , activate: function ( element, container, callback) {\n      var $active = container.find('> .active')\n        , transition = callback\n            && $.support.transition\n            && $active.hasClass('fade')\n\n      function next() {\n        $active\n          .removeClass('active')\n          .find('> .dropdown-menu > .active')\n          .removeClass('active')\n\n        element.addClass('active')\n\n        if (transition) {\n          element[0].offsetWidth // reflow for transition\n          element.addClass('in')\n        } else {\n          element.removeClass('fade')\n        }\n\n        if ( element.parent('.dropdown-menu') ) {\n          element.closest('li.dropdown').addClass('active')\n        }\n\n        callback && callback()\n      }\n\n      transition ?\n        $active.one($.support.transition.end, next) :\n        next()\n\n      $active.removeClass('in')\n    }\n  }\n\n\n /* TAB PLUGIN DEFINITION\n  * ===================== */\n\n  var old = $.fn.tab\n\n  $.fn.tab = function ( option ) {\n    return this.each(function () {\n      var $this = $(this)\n        , data = $this.data('tab')\n      if (!data) $this.data('tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tab.Constructor = Tab\n\n\n /* TAB NO CONFLICT\n  * =============== */\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n /* TAB DATA-API\n  * ============ */\n\n  $(document).on('click.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n    e.preventDefault()\n    $(this).tab('show')\n  })\n\n}(window.jQuery);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap.css",
    "content": "/*!\n * Bootstrap v2.3.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.clearfix {\n  *zoom: 1;\n}\n\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.clearfix:after {\n  clear: both;\n}\n\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nnav,\nsection {\n  display: block;\n}\n\naudio,\ncanvas,\nvideo {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n}\n\naudio:not([controls]) {\n  display: none;\n}\n\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\n\na:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\na:hover,\na:active {\n  outline: 0;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nimg {\n  width: auto\\9;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic;\n}\n\n#map_canvas img,\n.google-maps img {\n  max-width: none;\n}\n\nbutton,\ninput,\nselect,\ntextarea {\n  margin: 0;\n  font-size: 100%;\n  vertical-align: middle;\n}\n\nbutton,\ninput {\n  *overflow: visible;\n  line-height: normal;\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\n\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  cursor: pointer;\n  -webkit-appearance: button;\n}\n\nlabel,\nselect,\nbutton,\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"],\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  cursor: pointer;\n}\n\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n  -webkit-appearance: none;\n}\n\ntextarea {\n  overflow: auto;\n  vertical-align: top;\n}\n\n@media print {\n  * {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  @page  {\n    margin: 0.5cm;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 20px;\n  color: #333333;\n  background-color: #ffffff;\n}\n\na {\n  color: #0088cc;\n  text-decoration: none;\n}\n\na:hover,\na:focus {\n  color: #005580;\n  text-decoration: underline;\n}\n\n.img-rounded {\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.img-polaroid {\n  padding: 4px;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.img-circle {\n  -webkit-border-radius: 500px;\n     -moz-border-radius: 500px;\n          border-radius: 500px;\n}\n\n.row {\n  margin-left: -20px;\n  *zoom: 1;\n}\n\n.row:before,\n.row:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.row:after {\n  clear: both;\n}\n\n[class*=\"span\"] {\n  float: left;\n  min-height: 1px;\n  margin-left: 20px;\n}\n\n.container,\n.navbar-static-top .container,\n.navbar-fixed-top .container,\n.navbar-fixed-bottom .container {\n  width: 940px;\n}\n\n.span12 {\n  width: 940px;\n}\n\n.span11 {\n  width: 860px;\n}\n\n.span10 {\n  width: 780px;\n}\n\n.span9 {\n  width: 700px;\n}\n\n.span8 {\n  width: 620px;\n}\n\n.span7 {\n  width: 540px;\n}\n\n.span6 {\n  width: 460px;\n}\n\n.span5 {\n  width: 380px;\n}\n\n.span4 {\n  width: 300px;\n}\n\n.span3 {\n  width: 220px;\n}\n\n.span2 {\n  width: 140px;\n}\n\n.span1 {\n  width: 60px;\n}\n\n.offset12 {\n  margin-left: 980px;\n}\n\n.offset11 {\n  margin-left: 900px;\n}\n\n.offset10 {\n  margin-left: 820px;\n}\n\n.offset9 {\n  margin-left: 740px;\n}\n\n.offset8 {\n  margin-left: 660px;\n}\n\n.offset7 {\n  margin-left: 580px;\n}\n\n.offset6 {\n  margin-left: 500px;\n}\n\n.offset5 {\n  margin-left: 420px;\n}\n\n.offset4 {\n  margin-left: 340px;\n}\n\n.offset3 {\n  margin-left: 260px;\n}\n\n.offset2 {\n  margin-left: 180px;\n}\n\n.offset1 {\n  margin-left: 100px;\n}\n\n.row-fluid {\n  width: 100%;\n  *zoom: 1;\n}\n\n.row-fluid:before,\n.row-fluid:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.row-fluid:after {\n  clear: both;\n}\n\n.row-fluid [class*=\"span\"] {\n  display: block;\n  float: left;\n  width: 100%;\n  min-height: 30px;\n  margin-left: 2.127659574468085%;\n  *margin-left: 2.074468085106383%;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n.row-fluid [class*=\"span\"]:first-child {\n  margin-left: 0;\n}\n\n.row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n  margin-left: 2.127659574468085%;\n}\n\n.row-fluid .span12 {\n  width: 100%;\n  *width: 99.94680851063829%;\n}\n\n.row-fluid .span11 {\n  width: 91.48936170212765%;\n  *width: 91.43617021276594%;\n}\n\n.row-fluid .span10 {\n  width: 82.97872340425532%;\n  *width: 82.92553191489361%;\n}\n\n.row-fluid .span9 {\n  width: 74.46808510638297%;\n  *width: 74.41489361702126%;\n}\n\n.row-fluid .span8 {\n  width: 65.95744680851064%;\n  *width: 65.90425531914893%;\n}\n\n.row-fluid .span7 {\n  width: 57.44680851063829%;\n  *width: 57.39361702127659%;\n}\n\n.row-fluid .span6 {\n  width: 48.93617021276595%;\n  *width: 48.88297872340425%;\n}\n\n.row-fluid .span5 {\n  width: 40.42553191489362%;\n  *width: 40.37234042553192%;\n}\n\n.row-fluid .span4 {\n  width: 31.914893617021278%;\n  *width: 31.861702127659576%;\n}\n\n.row-fluid .span3 {\n  width: 23.404255319148934%;\n  *width: 23.351063829787233%;\n}\n\n.row-fluid .span2 {\n  width: 14.893617021276595%;\n  *width: 14.840425531914894%;\n}\n\n.row-fluid .span1 {\n  width: 6.382978723404255%;\n  *width: 6.329787234042553%;\n}\n\n.row-fluid .offset12 {\n  margin-left: 104.25531914893617%;\n  *margin-left: 104.14893617021275%;\n}\n\n.row-fluid .offset12:first-child {\n  margin-left: 102.12765957446808%;\n  *margin-left: 102.02127659574467%;\n}\n\n.row-fluid .offset11 {\n  margin-left: 95.74468085106382%;\n  *margin-left: 95.6382978723404%;\n}\n\n.row-fluid .offset11:first-child {\n  margin-left: 93.61702127659574%;\n  *margin-left: 93.51063829787232%;\n}\n\n.row-fluid .offset10 {\n  margin-left: 87.23404255319149%;\n  *margin-left: 87.12765957446807%;\n}\n\n.row-fluid .offset10:first-child {\n  margin-left: 85.1063829787234%;\n  *margin-left: 84.99999999999999%;\n}\n\n.row-fluid .offset9 {\n  margin-left: 78.72340425531914%;\n  *margin-left: 78.61702127659572%;\n}\n\n.row-fluid .offset9:first-child {\n  margin-left: 76.59574468085106%;\n  *margin-left: 76.48936170212764%;\n}\n\n.row-fluid .offset8 {\n  margin-left: 70.2127659574468%;\n  *margin-left: 70.10638297872339%;\n}\n\n.row-fluid .offset8:first-child {\n  margin-left: 68.08510638297872%;\n  *margin-left: 67.9787234042553%;\n}\n\n.row-fluid .offset7 {\n  margin-left: 61.70212765957446%;\n  *margin-left: 61.59574468085106%;\n}\n\n.row-fluid .offset7:first-child {\n  margin-left: 59.574468085106375%;\n  *margin-left: 59.46808510638297%;\n}\n\n.row-fluid .offset6 {\n  margin-left: 53.191489361702125%;\n  *margin-left: 53.085106382978715%;\n}\n\n.row-fluid .offset6:first-child {\n  margin-left: 51.063829787234035%;\n  *margin-left: 50.95744680851063%;\n}\n\n.row-fluid .offset5 {\n  margin-left: 44.68085106382979%;\n  *margin-left: 44.57446808510638%;\n}\n\n.row-fluid .offset5:first-child {\n  margin-left: 42.5531914893617%;\n  *margin-left: 42.4468085106383%;\n}\n\n.row-fluid .offset4 {\n  margin-left: 36.170212765957444%;\n  *margin-left: 36.06382978723405%;\n}\n\n.row-fluid .offset4:first-child {\n  margin-left: 34.04255319148936%;\n  *margin-left: 33.93617021276596%;\n}\n\n.row-fluid .offset3 {\n  margin-left: 27.659574468085104%;\n  *margin-left: 27.5531914893617%;\n}\n\n.row-fluid .offset3:first-child {\n  margin-left: 25.53191489361702%;\n  *margin-left: 25.425531914893618%;\n}\n\n.row-fluid .offset2 {\n  margin-left: 19.148936170212764%;\n  *margin-left: 19.04255319148936%;\n}\n\n.row-fluid .offset2:first-child {\n  margin-left: 17.02127659574468%;\n  *margin-left: 16.914893617021278%;\n}\n\n.row-fluid .offset1 {\n  margin-left: 10.638297872340425%;\n  *margin-left: 10.53191489361702%;\n}\n\n.row-fluid .offset1:first-child {\n  margin-left: 8.51063829787234%;\n  *margin-left: 8.404255319148938%;\n}\n\n[class*=\"span\"].hide,\n.row-fluid [class*=\"span\"].hide {\n  display: none;\n}\n\n[class*=\"span\"].pull-right,\n.row-fluid [class*=\"span\"].pull-right {\n  float: right;\n}\n\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  *zoom: 1;\n}\n\n.container:before,\n.container:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.container:after {\n  clear: both;\n}\n\n.container-fluid {\n  padding-right: 20px;\n  padding-left: 20px;\n  *zoom: 1;\n}\n\n.container-fluid:before,\n.container-fluid:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.container-fluid:after {\n  clear: both;\n}\n\np {\n  margin: 0 0 10px;\n}\n\n.lead {\n  margin-bottom: 20px;\n  font-size: 21px;\n  font-weight: 200;\n  line-height: 30px;\n}\n\nsmall {\n  font-size: 85%;\n}\n\nstrong {\n  font-weight: bold;\n}\n\nem {\n  font-style: italic;\n}\n\ncite {\n  font-style: normal;\n}\n\n.muted {\n  color: #999999;\n}\n\na.muted:hover,\na.muted:focus {\n  color: #808080;\n}\n\n.text-warning {\n  color: #c09853;\n}\n\na.text-warning:hover,\na.text-warning:focus {\n  color: #a47e3c;\n}\n\n.text-error {\n  color: #b94a48;\n}\n\na.text-error:hover,\na.text-error:focus {\n  color: #953b39;\n}\n\n.text-info {\n  color: #3a87ad;\n}\n\na.text-info:hover,\na.text-info:focus {\n  color: #2d6987;\n}\n\n.text-success {\n  color: #468847;\n}\n\na.text-success:hover,\na.text-success:focus {\n  color: #356635;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-center {\n  text-align: center;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 10px 0;\n  font-family: inherit;\n  font-weight: bold;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility;\n}\n\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999999;\n}\n\nh1,\nh2,\nh3 {\n  line-height: 40px;\n}\n\nh1 {\n  font-size: 38.5px;\n}\n\nh2 {\n  font-size: 31.5px;\n}\n\nh3 {\n  font-size: 24.5px;\n}\n\nh4 {\n  font-size: 17.5px;\n}\n\nh5 {\n  font-size: 14px;\n}\n\nh6 {\n  font-size: 11.9px;\n}\n\nh1 small {\n  font-size: 24.5px;\n}\n\nh2 small {\n  font-size: 17.5px;\n}\n\nh3 small {\n  font-size: 14px;\n}\n\nh4 small {\n  font-size: 14px;\n}\n\n.page-header {\n  padding-bottom: 9px;\n  margin: 20px 0 30px;\n  border-bottom: 1px solid #eeeeee;\n}\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 10px 25px;\n}\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0;\n}\n\nli {\n  line-height: 20px;\n}\n\nul.unstyled,\nol.unstyled {\n  margin-left: 0;\n  list-style: none;\n}\n\nul.inline,\nol.inline {\n  margin-left: 0;\n  list-style: none;\n}\n\nul.inline > li,\nol.inline > li {\n  display: inline-block;\n  *display: inline;\n  padding-right: 5px;\n  padding-left: 5px;\n  *zoom: 1;\n}\n\ndl {\n  margin-bottom: 20px;\n}\n\ndt,\ndd {\n  line-height: 20px;\n}\n\ndt {\n  font-weight: bold;\n}\n\ndd {\n  margin-left: 10px;\n}\n\n.dl-horizontal {\n  *zoom: 1;\n}\n\n.dl-horizontal:before,\n.dl-horizontal:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.dl-horizontal:after {\n  clear: both;\n}\n\n.dl-horizontal dt {\n  float: left;\n  width: 160px;\n  overflow: hidden;\n  clear: left;\n  text-align: right;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.dl-horizontal dd {\n  margin-left: 180px;\n}\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999;\n}\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #eeeeee;\n}\n\nblockquote p {\n  margin-bottom: 0;\n  font-size: 17.5px;\n  font-weight: 300;\n  line-height: 1.25;\n}\n\nblockquote small {\n  display: block;\n  line-height: 20px;\n  color: #999999;\n}\n\nblockquote small:before {\n  content: '\\2014 \\00A0';\n}\n\nblockquote.pull-right {\n  float: right;\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n\nblockquote.pull-right p,\nblockquote.pull-right small {\n  text-align: right;\n}\n\nblockquote.pull-right small:before {\n  content: '';\n}\n\nblockquote.pull-right small:after {\n  content: '\\00A0 \\2014';\n}\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px;\n}\n\ncode,\npre {\n  padding: 0 3px 2px;\n  font-family: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-size: 12px;\n  color: #333333;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\ncode {\n  padding: 2px 4px;\n  color: #d14;\n  white-space: nowrap;\n  background-color: #f7f7f9;\n  border: 1px solid #e1e1e8;\n}\n\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 20px;\n  word-break: break-all;\n  word-wrap: break-word;\n  white-space: pre;\n  white-space: pre-wrap;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\npre.prettyprint {\n  margin-bottom: 20px;\n}\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\nform {\n  margin: 0 0 20px;\n}\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: 40px;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\n\nlegend small {\n  font-size: 15px;\n  color: #999999;\n}\n\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 20px;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n\nlabel {\n  display: block;\n  margin-bottom: 5px;\n}\n\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  display: inline-block;\n  height: 20px;\n  padding: 4px 6px;\n  margin-bottom: 10px;\n  font-size: 14px;\n  line-height: 20px;\n  color: #555555;\n  vertical-align: middle;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\ninput,\ntextarea,\n.uneditable-input {\n  width: 206px;\n}\n\ntextarea {\n  height: auto;\n}\n\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;\n       -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n          transition: border linear 0.2s, box-shadow linear 0.2s;\n}\n\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: rgba(82, 168, 236, 0.8);\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  *margin-top: 0;\n  line-height: normal;\n}\n\ninput[type=\"file\"],\ninput[type=\"image\"],\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"],\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  width: auto;\n}\n\nselect,\ninput[type=\"file\"] {\n  height: 30px;\n  /* In IE7, the height of the select element cannot be changed by height, only font-size */\n\n  *margin-top: 4px;\n  /* For IE7, add top margin to align select with labels */\n\n  line-height: 30px;\n}\n\nselect {\n  width: 220px;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n}\n\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\nselect:focus,\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n.uneditable-input,\n.uneditable-textarea {\n  color: #999999;\n  cursor: not-allowed;\n  background-color: #fcfcfc;\n  border-color: #cccccc;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n}\n\n.uneditable-input {\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.uneditable-textarea {\n  width: auto;\n  height: auto;\n}\n\ninput:-moz-placeholder,\ntextarea:-moz-placeholder {\n  color: #999999;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n  color: #999999;\n}\n\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n  color: #999999;\n}\n\n.radio,\n.checkbox {\n  min-height: 20px;\n  padding-left: 20px;\n}\n\n.radio input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n\n.controls > .radio:first-child,\n.controls > .checkbox:first-child {\n  padding-top: 5px;\n}\n\n.radio.inline,\n.checkbox.inline {\n  display: inline-block;\n  padding-top: 5px;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 10px;\n}\n\n.input-mini {\n  width: 60px;\n}\n\n.input-small {\n  width: 90px;\n}\n\n.input-medium {\n  width: 150px;\n}\n\n.input-large {\n  width: 210px;\n}\n\n.input-xlarge {\n  width: 270px;\n}\n\n.input-xxlarge {\n  width: 530px;\n}\n\ninput[class*=\"span\"],\nselect[class*=\"span\"],\ntextarea[class*=\"span\"],\n.uneditable-input[class*=\"span\"],\n.row-fluid input[class*=\"span\"],\n.row-fluid select[class*=\"span\"],\n.row-fluid textarea[class*=\"span\"],\n.row-fluid .uneditable-input[class*=\"span\"] {\n  float: none;\n  margin-left: 0;\n}\n\n.input-append input[class*=\"span\"],\n.input-append .uneditable-input[class*=\"span\"],\n.input-prepend input[class*=\"span\"],\n.input-prepend .uneditable-input[class*=\"span\"],\n.row-fluid input[class*=\"span\"],\n.row-fluid select[class*=\"span\"],\n.row-fluid textarea[class*=\"span\"],\n.row-fluid .uneditable-input[class*=\"span\"],\n.row-fluid .input-prepend [class*=\"span\"],\n.row-fluid .input-append [class*=\"span\"] {\n  display: inline-block;\n}\n\ninput,\ntextarea,\n.uneditable-input {\n  margin-left: 0;\n}\n\n.controls-row [class*=\"span\"] + [class*=\"span\"] {\n  margin-left: 20px;\n}\n\ninput.span12,\ntextarea.span12,\n.uneditable-input.span12 {\n  width: 926px;\n}\n\ninput.span11,\ntextarea.span11,\n.uneditable-input.span11 {\n  width: 846px;\n}\n\ninput.span10,\ntextarea.span10,\n.uneditable-input.span10 {\n  width: 766px;\n}\n\ninput.span9,\ntextarea.span9,\n.uneditable-input.span9 {\n  width: 686px;\n}\n\ninput.span8,\ntextarea.span8,\n.uneditable-input.span8 {\n  width: 606px;\n}\n\ninput.span7,\ntextarea.span7,\n.uneditable-input.span7 {\n  width: 526px;\n}\n\ninput.span6,\ntextarea.span6,\n.uneditable-input.span6 {\n  width: 446px;\n}\n\ninput.span5,\ntextarea.span5,\n.uneditable-input.span5 {\n  width: 366px;\n}\n\ninput.span4,\ntextarea.span4,\n.uneditable-input.span4 {\n  width: 286px;\n}\n\ninput.span3,\ntextarea.span3,\n.uneditable-input.span3 {\n  width: 206px;\n}\n\ninput.span2,\ntextarea.span2,\n.uneditable-input.span2 {\n  width: 126px;\n}\n\ninput.span1,\ntextarea.span1,\n.uneditable-input.span1 {\n  width: 46px;\n}\n\n.controls-row {\n  *zoom: 1;\n}\n\n.controls-row:before,\n.controls-row:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.controls-row:after {\n  clear: both;\n}\n\n.controls-row [class*=\"span\"],\n.row-fluid .controls-row [class*=\"span\"] {\n  float: left;\n}\n\n.controls-row .checkbox[class*=\"span\"],\n.controls-row .radio[class*=\"span\"] {\n  padding-top: 5px;\n}\n\ninput[disabled],\nselect[disabled],\ntextarea[disabled],\ninput[readonly],\nselect[readonly],\ntextarea[readonly] {\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"][readonly],\ninput[type=\"checkbox\"][readonly] {\n  background-color: transparent;\n}\n\n.control-group.warning .control-label,\n.control-group.warning .help-block,\n.control-group.warning .help-inline {\n  color: #c09853;\n}\n\n.control-group.warning .checkbox,\n.control-group.warning .radio,\n.control-group.warning input,\n.control-group.warning select,\n.control-group.warning textarea {\n  color: #c09853;\n}\n\n.control-group.warning input,\n.control-group.warning select,\n.control-group.warning textarea {\n  border-color: #c09853;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.warning input:focus,\n.control-group.warning select:focus,\n.control-group.warning textarea:focus {\n  border-color: #a47e3c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n}\n\n.control-group.warning .input-prepend .add-on,\n.control-group.warning .input-append .add-on {\n  color: #c09853;\n  background-color: #fcf8e3;\n  border-color: #c09853;\n}\n\n.control-group.error .control-label,\n.control-group.error .help-block,\n.control-group.error .help-inline {\n  color: #b94a48;\n}\n\n.control-group.error .checkbox,\n.control-group.error .radio,\n.control-group.error input,\n.control-group.error select,\n.control-group.error textarea {\n  color: #b94a48;\n}\n\n.control-group.error input,\n.control-group.error select,\n.control-group.error textarea {\n  border-color: #b94a48;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.error input:focus,\n.control-group.error select:focus,\n.control-group.error textarea:focus {\n  border-color: #953b39;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n}\n\n.control-group.error .input-prepend .add-on,\n.control-group.error .input-append .add-on {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #b94a48;\n}\n\n.control-group.success .control-label,\n.control-group.success .help-block,\n.control-group.success .help-inline {\n  color: #468847;\n}\n\n.control-group.success .checkbox,\n.control-group.success .radio,\n.control-group.success input,\n.control-group.success select,\n.control-group.success textarea {\n  color: #468847;\n}\n\n.control-group.success input,\n.control-group.success select,\n.control-group.success textarea {\n  border-color: #468847;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.success input:focus,\n.control-group.success select:focus,\n.control-group.success textarea:focus {\n  border-color: #356635;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n}\n\n.control-group.success .input-prepend .add-on,\n.control-group.success .input-append .add-on {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #468847;\n}\n\n.control-group.info .control-label,\n.control-group.info .help-block,\n.control-group.info .help-inline {\n  color: #3a87ad;\n}\n\n.control-group.info .checkbox,\n.control-group.info .radio,\n.control-group.info input,\n.control-group.info select,\n.control-group.info textarea {\n  color: #3a87ad;\n}\n\n.control-group.info input,\n.control-group.info select,\n.control-group.info textarea {\n  border-color: #3a87ad;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.info input:focus,\n.control-group.info select:focus,\n.control-group.info textarea:focus {\n  border-color: #2d6987;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n}\n\n.control-group.info .input-prepend .add-on,\n.control-group.info .input-append .add-on {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #3a87ad;\n}\n\ninput:focus:invalid,\ntextarea:focus:invalid,\nselect:focus:invalid {\n  color: #b94a48;\n  border-color: #ee5f5b;\n}\n\ninput:focus:invalid:focus,\ntextarea:focus:invalid:focus,\nselect:focus:invalid:focus {\n  border-color: #e9322d;\n  -webkit-box-shadow: 0 0 6px #f8b9b7;\n     -moz-box-shadow: 0 0 6px #f8b9b7;\n          box-shadow: 0 0 6px #f8b9b7;\n}\n\n.form-actions {\n  padding: 19px 20px 20px;\n  margin-top: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #e5e5e5;\n  *zoom: 1;\n}\n\n.form-actions:before,\n.form-actions:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.form-actions:after {\n  clear: both;\n}\n\n.help-block,\n.help-inline {\n  color: #595959;\n}\n\n.help-block {\n  display: block;\n  margin-bottom: 10px;\n}\n\n.help-inline {\n  display: inline-block;\n  *display: inline;\n  padding-left: 5px;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.input-append,\n.input-prepend {\n  display: inline-block;\n  margin-bottom: 10px;\n  font-size: 0;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n\n.input-append input,\n.input-prepend input,\n.input-append select,\n.input-prepend select,\n.input-append .uneditable-input,\n.input-prepend .uneditable-input,\n.input-append .dropdown-menu,\n.input-prepend .dropdown-menu,\n.input-append .popover,\n.input-prepend .popover {\n  font-size: 14px;\n}\n\n.input-append input,\n.input-prepend input,\n.input-append select,\n.input-prepend select,\n.input-append .uneditable-input,\n.input-prepend .uneditable-input {\n  position: relative;\n  margin-bottom: 0;\n  *margin-left: 0;\n  vertical-align: top;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-append input:focus,\n.input-prepend input:focus,\n.input-append select:focus,\n.input-prepend select:focus,\n.input-append .uneditable-input:focus,\n.input-prepend .uneditable-input:focus {\n  z-index: 2;\n}\n\n.input-append .add-on,\n.input-prepend .add-on {\n  display: inline-block;\n  width: auto;\n  height: 20px;\n  min-width: 16px;\n  padding: 4px 5px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 20px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n}\n\n.input-append .add-on,\n.input-prepend .add-on,\n.input-append .btn,\n.input-prepend .btn,\n.input-append .btn-group > .dropdown-toggle,\n.input-prepend .btn-group > .dropdown-toggle {\n  vertical-align: top;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.input-append .active,\n.input-prepend .active {\n  background-color: #a9dba9;\n  border-color: #46a546;\n}\n\n.input-prepend .add-on,\n.input-prepend .btn {\n  margin-right: -1px;\n}\n\n.input-prepend .add-on:first-child,\n.input-prepend .btn:first-child {\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-append input,\n.input-append select,\n.input-append .uneditable-input {\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-append input + .btn-group .btn:last-child,\n.input-append select + .btn-group .btn:last-child,\n.input-append .uneditable-input + .btn-group .btn:last-child {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-append .add-on,\n.input-append .btn,\n.input-append .btn-group {\n  margin-left: -1px;\n}\n\n.input-append .add-on:last-child,\n.input-append .btn:last-child,\n.input-append .btn-group:last-child > .dropdown-toggle {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append input,\n.input-prepend.input-append select,\n.input-prepend.input-append .uneditable-input {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.input-prepend.input-append input + .btn-group .btn,\n.input-prepend.input-append select + .btn-group .btn,\n.input-prepend.input-append .uneditable-input + .btn-group .btn {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append .add-on:first-child,\n.input-prepend.input-append .btn:first-child {\n  margin-right: -1px;\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-prepend.input-append .add-on:last-child,\n.input-prepend.input-append .btn:last-child {\n  margin-left: -1px;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append .btn-group:first-child {\n  margin-left: 0;\n}\n\ninput.search-query {\n  padding-right: 14px;\n  padding-right: 4px \\9;\n  padding-left: 14px;\n  padding-left: 4px \\9;\n  /* IE7-8 doesn't have border-radius, so don't indent the padding */\n\n  margin-bottom: 0;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n/* Allow for input prepend/append in search forms */\n\n.form-search .input-append .search-query,\n.form-search .input-prepend .search-query {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.form-search .input-append .search-query {\n  -webkit-border-radius: 14px 0 0 14px;\n     -moz-border-radius: 14px 0 0 14px;\n          border-radius: 14px 0 0 14px;\n}\n\n.form-search .input-append .btn {\n  -webkit-border-radius: 0 14px 14px 0;\n     -moz-border-radius: 0 14px 14px 0;\n          border-radius: 0 14px 14px 0;\n}\n\n.form-search .input-prepend .search-query {\n  -webkit-border-radius: 0 14px 14px 0;\n     -moz-border-radius: 0 14px 14px 0;\n          border-radius: 0 14px 14px 0;\n}\n\n.form-search .input-prepend .btn {\n  -webkit-border-radius: 14px 0 0 14px;\n     -moz-border-radius: 14px 0 0 14px;\n          border-radius: 14px 0 0 14px;\n}\n\n.form-search input,\n.form-inline input,\n.form-horizontal input,\n.form-search textarea,\n.form-inline textarea,\n.form-horizontal textarea,\n.form-search select,\n.form-inline select,\n.form-horizontal select,\n.form-search .help-inline,\n.form-inline .help-inline,\n.form-horizontal .help-inline,\n.form-search .uneditable-input,\n.form-inline .uneditable-input,\n.form-horizontal .uneditable-input,\n.form-search .input-prepend,\n.form-inline .input-prepend,\n.form-horizontal .input-prepend,\n.form-search .input-append,\n.form-inline .input-append,\n.form-horizontal .input-append {\n  display: inline-block;\n  *display: inline;\n  margin-bottom: 0;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.form-search .hide,\n.form-inline .hide,\n.form-horizontal .hide {\n  display: none;\n}\n\n.form-search label,\n.form-inline label,\n.form-search .btn-group,\n.form-inline .btn-group {\n  display: inline-block;\n}\n\n.form-search .input-append,\n.form-inline .input-append,\n.form-search .input-prepend,\n.form-inline .input-prepend {\n  margin-bottom: 0;\n}\n\n.form-search .radio,\n.form-search .checkbox,\n.form-inline .radio,\n.form-inline .checkbox {\n  padding-left: 0;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.form-search .radio input[type=\"radio\"],\n.form-search .checkbox input[type=\"checkbox\"],\n.form-inline .radio input[type=\"radio\"],\n.form-inline .checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-right: 3px;\n  margin-left: 0;\n}\n\n.control-group {\n  margin-bottom: 10px;\n}\n\nlegend + .control-group {\n  margin-top: 20px;\n  -webkit-margin-top-collapse: separate;\n}\n\n.form-horizontal .control-group {\n  margin-bottom: 20px;\n  *zoom: 1;\n}\n\n.form-horizontal .control-group:before,\n.form-horizontal .control-group:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.form-horizontal .control-group:after {\n  clear: both;\n}\n\n.form-horizontal .control-label {\n  float: left;\n  width: 160px;\n  padding-top: 5px;\n  text-align: right;\n}\n\n.form-horizontal .controls {\n  *display: inline-block;\n  *padding-left: 20px;\n  margin-left: 180px;\n  *margin-left: 0;\n}\n\n.form-horizontal .controls:first-child {\n  *padding-left: 180px;\n}\n\n.form-horizontal .help-block {\n  margin-bottom: 0;\n}\n\n.form-horizontal input + .help-block,\n.form-horizontal select + .help-block,\n.form-horizontal textarea + .help-block,\n.form-horizontal .uneditable-input + .help-block,\n.form-horizontal .input-prepend + .help-block,\n.form-horizontal .input-append + .help-block {\n  margin-top: 10px;\n}\n\n.form-horizontal .form-actions {\n  padding-left: 180px;\n}\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n\n.table th {\n  font-weight: bold;\n}\n\n.table thead th {\n  vertical-align: bottom;\n}\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n\n.table .table {\n  background-color: #ffffff;\n}\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px;\n}\n\n.table-bordered {\n  border: 1px solid #dddddd;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #dddddd;\n}\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n          border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0;\n}\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n          border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0;\n}\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: #f5f5f5;\n}\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0;\n}\n\n.table td.span1,\n.table th.span1 {\n  float: none;\n  width: 44px;\n  margin-left: 0;\n}\n\n.table td.span2,\n.table th.span2 {\n  float: none;\n  width: 124px;\n  margin-left: 0;\n}\n\n.table td.span3,\n.table th.span3 {\n  float: none;\n  width: 204px;\n  margin-left: 0;\n}\n\n.table td.span4,\n.table th.span4 {\n  float: none;\n  width: 284px;\n  margin-left: 0;\n}\n\n.table td.span5,\n.table th.span5 {\n  float: none;\n  width: 364px;\n  margin-left: 0;\n}\n\n.table td.span6,\n.table th.span6 {\n  float: none;\n  width: 444px;\n  margin-left: 0;\n}\n\n.table td.span7,\n.table th.span7 {\n  float: none;\n  width: 524px;\n  margin-left: 0;\n}\n\n.table td.span8,\n.table th.span8 {\n  float: none;\n  width: 604px;\n  margin-left: 0;\n}\n\n.table td.span9,\n.table th.span9 {\n  float: none;\n  width: 684px;\n  margin-left: 0;\n}\n\n.table td.span10,\n.table th.span10 {\n  float: none;\n  width: 764px;\n  margin-left: 0;\n}\n\n.table td.span11,\n.table th.span11 {\n  float: none;\n  width: 844px;\n  margin-left: 0;\n}\n\n.table td.span12,\n.table th.span12 {\n  float: none;\n  width: 924px;\n  margin-left: 0;\n}\n\n.table tbody tr.success > td {\n  background-color: #dff0d8;\n}\n\n.table tbody tr.error > td {\n  background-color: #f2dede;\n}\n\n.table tbody tr.warning > td {\n  background-color: #fcf8e3;\n}\n\n.table tbody tr.info > td {\n  background-color: #d9edf7;\n}\n\n.table-hover tbody tr.success:hover > td {\n  background-color: #d0e9c6;\n}\n\n.table-hover tbody tr.error:hover > td {\n  background-color: #ebcccc;\n}\n\n.table-hover tbody tr.warning:hover > td {\n  background-color: #faf2cc;\n}\n\n.table-hover tbody tr.info:hover > td {\n  background-color: #c4e3f3;\n}\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline-block;\n  width: 14px;\n  height: 14px;\n  margin-top: 1px;\n  *margin-right: .3em;\n  line-height: 14px;\n  vertical-align: text-top;\n  background-image: url(\"../img/glyphicons-halflings.png\");\n  background-position: 14px 14px;\n  background-repeat: no-repeat;\n}\n\n/* White icons with optional class, or on hover/focus/active states of certain elements */\n\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:focus > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > li > a:focus > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:focus > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"],\n.dropdown-submenu:focus > a > [class*=\" icon-\"] {\n  background-image: url(\"../img/glyphicons-halflings-white.png\");\n}\n\n.icon-glass {\n  background-position: 0      0;\n}\n\n.icon-music {\n  background-position: -24px 0;\n}\n\n.icon-search {\n  background-position: -48px 0;\n}\n\n.icon-envelope {\n  background-position: -72px 0;\n}\n\n.icon-heart {\n  background-position: -96px 0;\n}\n\n.icon-star {\n  background-position: -120px 0;\n}\n\n.icon-star-empty {\n  background-position: -144px 0;\n}\n\n.icon-user {\n  background-position: -168px 0;\n}\n\n.icon-film {\n  background-position: -192px 0;\n}\n\n.icon-th-large {\n  background-position: -216px 0;\n}\n\n.icon-th {\n  background-position: -240px 0;\n}\n\n.icon-th-list {\n  background-position: -264px 0;\n}\n\n.icon-ok {\n  background-position: -288px 0;\n}\n\n.icon-remove {\n  background-position: -312px 0;\n}\n\n.icon-zoom-in {\n  background-position: -336px 0;\n}\n\n.icon-zoom-out {\n  background-position: -360px 0;\n}\n\n.icon-off {\n  background-position: -384px 0;\n}\n\n.icon-signal {\n  background-position: -408px 0;\n}\n\n.icon-cog {\n  background-position: -432px 0;\n}\n\n.icon-trash {\n  background-position: -456px 0;\n}\n\n.icon-home {\n  background-position: 0 -24px;\n}\n\n.icon-file {\n  background-position: -24px -24px;\n}\n\n.icon-time {\n  background-position: -48px -24px;\n}\n\n.icon-road {\n  background-position: -72px -24px;\n}\n\n.icon-download-alt {\n  background-position: -96px -24px;\n}\n\n.icon-download {\n  background-position: -120px -24px;\n}\n\n.icon-upload {\n  background-position: -144px -24px;\n}\n\n.icon-inbox {\n  background-position: -168px -24px;\n}\n\n.icon-play-circle {\n  background-position: -192px -24px;\n}\n\n.icon-repeat {\n  background-position: -216px -24px;\n}\n\n.icon-refresh {\n  background-position: -240px -24px;\n}\n\n.icon-list-alt {\n  background-position: -264px -24px;\n}\n\n.icon-lock {\n  background-position: -287px -24px;\n}\n\n.icon-flag {\n  background-position: -312px -24px;\n}\n\n.icon-headphones {\n  background-position: -336px -24px;\n}\n\n.icon-volume-off {\n  background-position: -360px -24px;\n}\n\n.icon-volume-down {\n  background-position: -384px -24px;\n}\n\n.icon-volume-up {\n  background-position: -408px -24px;\n}\n\n.icon-qrcode {\n  background-position: -432px -24px;\n}\n\n.icon-barcode {\n  background-position: -456px -24px;\n}\n\n.icon-tag {\n  background-position: 0 -48px;\n}\n\n.icon-tags {\n  background-position: -25px -48px;\n}\n\n.icon-book {\n  background-position: -48px -48px;\n}\n\n.icon-bookmark {\n  background-position: -72px -48px;\n}\n\n.icon-print {\n  background-position: -96px -48px;\n}\n\n.icon-camera {\n  background-position: -120px -48px;\n}\n\n.icon-font {\n  background-position: -144px -48px;\n}\n\n.icon-bold {\n  background-position: -167px -48px;\n}\n\n.icon-italic {\n  background-position: -192px -48px;\n}\n\n.icon-text-height {\n  background-position: -216px -48px;\n}\n\n.icon-text-width {\n  background-position: -240px -48px;\n}\n\n.icon-align-left {\n  background-position: -264px -48px;\n}\n\n.icon-align-center {\n  background-position: -288px -48px;\n}\n\n.icon-align-right {\n  background-position: -312px -48px;\n}\n\n.icon-align-justify {\n  background-position: -336px -48px;\n}\n\n.icon-list {\n  background-position: -360px -48px;\n}\n\n.icon-indent-left {\n  background-position: -384px -48px;\n}\n\n.icon-indent-right {\n  background-position: -408px -48px;\n}\n\n.icon-facetime-video {\n  background-position: -432px -48px;\n}\n\n.icon-picture {\n  background-position: -456px -48px;\n}\n\n.icon-pencil {\n  background-position: 0 -72px;\n}\n\n.icon-map-marker {\n  background-position: -24px -72px;\n}\n\n.icon-adjust {\n  background-position: -48px -72px;\n}\n\n.icon-tint {\n  background-position: -72px -72px;\n}\n\n.icon-edit {\n  background-position: -96px -72px;\n}\n\n.icon-share {\n  background-position: -120px -72px;\n}\n\n.icon-check {\n  background-position: -144px -72px;\n}\n\n.icon-move {\n  background-position: -168px -72px;\n}\n\n.icon-step-backward {\n  background-position: -192px -72px;\n}\n\n.icon-fast-backward {\n  background-position: -216px -72px;\n}\n\n.icon-backward {\n  background-position: -240px -72px;\n}\n\n.icon-play {\n  background-position: -264px -72px;\n}\n\n.icon-pause {\n  background-position: -288px -72px;\n}\n\n.icon-stop {\n  background-position: -312px -72px;\n}\n\n.icon-forward {\n  background-position: -336px -72px;\n}\n\n.icon-fast-forward {\n  background-position: -360px -72px;\n}\n\n.icon-step-forward {\n  background-position: -384px -72px;\n}\n\n.icon-eject {\n  background-position: -408px -72px;\n}\n\n.icon-chevron-left {\n  background-position: -432px -72px;\n}\n\n.icon-chevron-right {\n  background-position: -456px -72px;\n}\n\n.icon-plus-sign {\n  background-position: 0 -96px;\n}\n\n.icon-minus-sign {\n  background-position: -24px -96px;\n}\n\n.icon-remove-sign {\n  background-position: -48px -96px;\n}\n\n.icon-ok-sign {\n  background-position: -72px -96px;\n}\n\n.icon-question-sign {\n  background-position: -96px -96px;\n}\n\n.icon-info-sign {\n  background-position: -120px -96px;\n}\n\n.icon-screenshot {\n  background-position: -144px -96px;\n}\n\n.icon-remove-circle {\n  background-position: -168px -96px;\n}\n\n.icon-ok-circle {\n  background-position: -192px -96px;\n}\n\n.icon-ban-circle {\n  background-position: -216px -96px;\n}\n\n.icon-arrow-left {\n  background-position: -240px -96px;\n}\n\n.icon-arrow-right {\n  background-position: -264px -96px;\n}\n\n.icon-arrow-up {\n  background-position: -289px -96px;\n}\n\n.icon-arrow-down {\n  background-position: -312px -96px;\n}\n\n.icon-share-alt {\n  background-position: -336px -96px;\n}\n\n.icon-resize-full {\n  background-position: -360px -96px;\n}\n\n.icon-resize-small {\n  background-position: -384px -96px;\n}\n\n.icon-plus {\n  background-position: -408px -96px;\n}\n\n.icon-minus {\n  background-position: -433px -96px;\n}\n\n.icon-asterisk {\n  background-position: -456px -96px;\n}\n\n.icon-exclamation-sign {\n  background-position: 0 -120px;\n}\n\n.icon-gift {\n  background-position: -24px -120px;\n}\n\n.icon-leaf {\n  background-position: -48px -120px;\n}\n\n.icon-fire {\n  background-position: -72px -120px;\n}\n\n.icon-eye-open {\n  background-position: -96px -120px;\n}\n\n.icon-eye-close {\n  background-position: -120px -120px;\n}\n\n.icon-warning-sign {\n  background-position: -144px -120px;\n}\n\n.icon-plane {\n  background-position: -168px -120px;\n}\n\n.icon-calendar {\n  background-position: -192px -120px;\n}\n\n.icon-random {\n  width: 16px;\n  background-position: -216px -120px;\n}\n\n.icon-comment {\n  background-position: -240px -120px;\n}\n\n.icon-magnet {\n  background-position: -264px -120px;\n}\n\n.icon-chevron-up {\n  background-position: -288px -120px;\n}\n\n.icon-chevron-down {\n  background-position: -313px -119px;\n}\n\n.icon-retweet {\n  background-position: -336px -120px;\n}\n\n.icon-shopping-cart {\n  background-position: -360px -120px;\n}\n\n.icon-folder-close {\n  width: 16px;\n  background-position: -384px -120px;\n}\n\n.icon-folder-open {\n  width: 16px;\n  background-position: -408px -120px;\n}\n\n.icon-resize-vertical {\n  background-position: -432px -119px;\n}\n\n.icon-resize-horizontal {\n  background-position: -456px -118px;\n}\n\n.icon-hdd {\n  background-position: 0 -144px;\n}\n\n.icon-bullhorn {\n  background-position: -24px -144px;\n}\n\n.icon-bell {\n  background-position: -48px -144px;\n}\n\n.icon-certificate {\n  background-position: -72px -144px;\n}\n\n.icon-thumbs-up {\n  background-position: -96px -144px;\n}\n\n.icon-thumbs-down {\n  background-position: -120px -144px;\n}\n\n.icon-hand-right {\n  background-position: -144px -144px;\n}\n\n.icon-hand-left {\n  background-position: -168px -144px;\n}\n\n.icon-hand-up {\n  background-position: -192px -144px;\n}\n\n.icon-hand-down {\n  background-position: -216px -144px;\n}\n\n.icon-circle-arrow-right {\n  background-position: -240px -144px;\n}\n\n.icon-circle-arrow-left {\n  background-position: -264px -144px;\n}\n\n.icon-circle-arrow-up {\n  background-position: -288px -144px;\n}\n\n.icon-circle-arrow-down {\n  background-position: -312px -144px;\n}\n\n.icon-globe {\n  background-position: -336px -144px;\n}\n\n.icon-wrench {\n  background-position: -360px -144px;\n}\n\n.icon-tasks {\n  background-position: -384px -144px;\n}\n\n.icon-filter {\n  background-position: -408px -144px;\n}\n\n.icon-briefcase {\n  background-position: -432px -144px;\n}\n\n.icon-fullscreen {\n  background-position: -456px -144px;\n}\n\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n.dropdown-toggle {\n  *margin-bottom: -3px;\n}\n\n.dropdown-toggle:active,\n.open .dropdown-toggle {\n  outline: 0;\n}\n\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  vertical-align: top;\n  border-top: 4px solid #000000;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n  content: \"\";\n}\n\n.dropdown .caret {\n  margin-top: 8px;\n  margin-left: 2px;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding;\n          background-clip: padding-box;\n}\n\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n\n.dropdown-menu .divider {\n  *width: 100%;\n  height: 1px;\n  margin: 9px 1px;\n  *margin: -5px 0 5px;\n  overflow: hidden;\n  background-color: #e5e5e5;\n  border-bottom: 1px solid #ffffff;\n}\n\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 20px;\n  color: #333333;\n  white-space: nowrap;\n}\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-submenu:hover > a,\n.dropdown-submenu:focus > a {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #0081c2;\n  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -o-linear-gradient(top, #0088cc, #0077b3);\n  background-image: linear-gradient(to bottom, #0088cc, #0077b3);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);\n}\n\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #0081c2;\n  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -o-linear-gradient(top, #0088cc, #0077b3);\n  background-image: linear-gradient(to bottom, #0088cc, #0077b3);\n  background-repeat: repeat-x;\n  outline: 0;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);\n}\n\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999999;\n}\n\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: default;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.open {\n  *z-index: 1000;\n}\n\n.open > .dropdown-menu {\n  display: block;\n}\n\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px solid #000000;\n  content: \"\";\n}\n\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n\n.dropdown-submenu {\n  position: relative;\n}\n\n.dropdown-submenu > .dropdown-menu {\n  top: 0;\n  left: 100%;\n  margin-top: -6px;\n  margin-left: -1px;\n  -webkit-border-radius: 0 6px 6px 6px;\n     -moz-border-radius: 0 6px 6px 6px;\n          border-radius: 0 6px 6px 6px;\n}\n\n.dropdown-submenu:hover > .dropdown-menu {\n  display: block;\n}\n\n.dropup .dropdown-submenu > .dropdown-menu {\n  top: auto;\n  bottom: 0;\n  margin-top: 0;\n  margin-bottom: -2px;\n  -webkit-border-radius: 5px 5px 5px 0;\n     -moz-border-radius: 5px 5px 5px 0;\n          border-radius: 5px 5px 5px 0;\n}\n\n.dropdown-submenu > a:after {\n  display: block;\n  float: right;\n  width: 0;\n  height: 0;\n  margin-top: 5px;\n  margin-right: -10px;\n  border-color: transparent;\n  border-left-color: #cccccc;\n  border-style: solid;\n  border-width: 5px 0 5px 5px;\n  content: \" \";\n}\n\n.dropdown-submenu:hover > a:after {\n  border-left-color: #ffffff;\n}\n\n.dropdown-submenu.pull-left {\n  float: none;\n}\n\n.dropdown-submenu.pull-left > .dropdown-menu {\n  left: -100%;\n  margin-left: 10px;\n  -webkit-border-radius: 6px 0 6px 6px;\n     -moz-border-radius: 6px 0 6px 6px;\n          border-radius: 6px 0 6px 6px;\n}\n\n.dropdown .dropdown-menu .nav-header {\n  padding-right: 20px;\n  padding-left: 20px;\n}\n\n.typeahead {\n  z-index: 1051;\n  margin-top: 2px;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n\n.well-large {\n  padding: 24px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.well-small {\n  padding: 9px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n     -moz-transition: opacity 0.15s linear;\n       -o-transition: opacity 0.15s linear;\n          transition: opacity 0.15s linear;\n}\n\n.fade.in {\n  opacity: 1;\n}\n\n.collapse {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n     -moz-transition: height 0.35s ease;\n       -o-transition: height 0.35s ease;\n          transition: height 0.35s ease;\n}\n\n.collapse.in {\n  height: auto;\n}\n\n.close {\n  float: right;\n  font-size: 20px;\n  font-weight: bold;\n  line-height: 20px;\n  color: #000000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n\n.close:hover,\n.close:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.4;\n  filter: alpha(opacity=40);\n}\n\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.btn {\n  display: inline-block;\n  *display: inline;\n  padding: 4px 12px;\n  margin-bottom: 0;\n  *margin-left: .3em;\n  font-size: 14px;\n  line-height: 20px;\n  color: #333333;\n  text-align: center;\n  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\n  vertical-align: middle;\n  cursor: pointer;\n  background-color: #f5f5f5;\n  *background-color: #e6e6e6;\n  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n  background-repeat: repeat-x;\n  border: 1px solid #cccccc;\n  *border: 0;\n  border-color: #e6e6e6 #e6e6e6 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  border-bottom-color: #b3b3b3;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  *zoom: 1;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn:hover,\n.btn:focus,\n.btn:active,\n.btn.active,\n.btn.disabled,\n.btn[disabled] {\n  color: #333333;\n  background-color: #e6e6e6;\n  *background-color: #d9d9d9;\n}\n\n.btn:active,\n.btn.active {\n  background-color: #cccccc \\9;\n}\n\n.btn:first-child {\n  *margin-left: 0;\n}\n\n.btn:hover,\n.btn:focus {\n  color: #333333;\n  text-decoration: none;\n  background-position: 0 -15px;\n  -webkit-transition: background-position 0.1s linear;\n     -moz-transition: background-position 0.1s linear;\n       -o-transition: background-position 0.1s linear;\n          transition: background-position 0.1s linear;\n}\n\n.btn:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n.btn.active,\n.btn:active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn.disabled,\n.btn[disabled] {\n  cursor: default;\n  background-image: none;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-large {\n  padding: 11px 19px;\n  font-size: 17.5px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.btn-large [class^=\"icon-\"],\n.btn-large [class*=\" icon-\"] {\n  margin-top: 4px;\n}\n\n.btn-small {\n  padding: 2px 10px;\n  font-size: 11.9px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.btn-small [class^=\"icon-\"],\n.btn-small [class*=\" icon-\"] {\n  margin-top: 0;\n}\n\n.btn-mini [class^=\"icon-\"],\n.btn-mini [class*=\" icon-\"] {\n  margin-top: -1px;\n}\n\n.btn-mini {\n  padding: 0 6px;\n  font-size: 10.5px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-right: 0;\n  padding-left: 0;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.btn-primary.active,\n.btn-warning.active,\n.btn-danger.active,\n.btn-success.active,\n.btn-info.active,\n.btn-inverse.active {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.btn-primary {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #006dcc;\n  *background-color: #0044cc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.btn-primary.disabled,\n.btn-primary[disabled] {\n  color: #ffffff;\n  background-color: #0044cc;\n  *background-color: #003bb3;\n}\n\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #003399 \\9;\n}\n\n.btn-warning {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #faa732;\n  *background-color: #f89406;\n  background-image: -moz-linear-gradient(top, #fbb450, #f89406);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));\n  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);\n  background-image: -o-linear-gradient(top, #fbb450, #f89406);\n  background-image: linear-gradient(to bottom, #fbb450, #f89406);\n  background-repeat: repeat-x;\n  border-color: #f89406 #f89406 #ad6704;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.btn-warning.disabled,\n.btn-warning[disabled] {\n  color: #ffffff;\n  background-color: #f89406;\n  *background-color: #df8505;\n}\n\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #c67605 \\9;\n}\n\n.btn-danger {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #da4f49;\n  *background-color: #bd362f;\n  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);\n  background-repeat: repeat-x;\n  border-color: #bd362f #bd362f #802420;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.btn-danger.disabled,\n.btn-danger[disabled] {\n  color: #ffffff;\n  background-color: #bd362f;\n  *background-color: #a9302a;\n}\n\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #942a25 \\9;\n}\n\n.btn-success {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #5bb75b;\n  *background-color: #51a351;\n  background-image: -moz-linear-gradient(top, #62c462, #51a351);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));\n  background-image: -webkit-linear-gradient(top, #62c462, #51a351);\n  background-image: -o-linear-gradient(top, #62c462, #51a351);\n  background-image: linear-gradient(to bottom, #62c462, #51a351);\n  background-repeat: repeat-x;\n  border-color: #51a351 #51a351 #387038;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.btn-success.disabled,\n.btn-success[disabled] {\n  color: #ffffff;\n  background-color: #51a351;\n  *background-color: #499249;\n}\n\n.btn-success:active,\n.btn-success.active {\n  background-color: #408140 \\9;\n}\n\n.btn-info {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #49afcd;\n  *background-color: #2f96b4;\n  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));\n  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);\n  background-repeat: repeat-x;\n  border-color: #2f96b4 #2f96b4 #1f6377;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.btn-info.disabled,\n.btn-info[disabled] {\n  color: #ffffff;\n  background-color: #2f96b4;\n  *background-color: #2a85a0;\n}\n\n.btn-info:active,\n.btn-info.active {\n  background-color: #24748c \\9;\n}\n\n.btn-inverse {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #363636;\n  *background-color: #222222;\n  background-image: -moz-linear-gradient(top, #444444, #222222);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));\n  background-image: -webkit-linear-gradient(top, #444444, #222222);\n  background-image: -o-linear-gradient(top, #444444, #222222);\n  background-image: linear-gradient(to bottom, #444444, #222222);\n  background-repeat: repeat-x;\n  border-color: #222222 #222222 #000000;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-inverse:hover,\n.btn-inverse:focus,\n.btn-inverse:active,\n.btn-inverse.active,\n.btn-inverse.disabled,\n.btn-inverse[disabled] {\n  color: #ffffff;\n  background-color: #222222;\n  *background-color: #151515;\n}\n\n.btn-inverse:active,\n.btn-inverse.active {\n  background-color: #080808 \\9;\n}\n\nbutton.btn,\ninput[type=\"submit\"].btn {\n  *padding-top: 3px;\n  *padding-bottom: 3px;\n}\n\nbutton.btn::-moz-focus-inner,\ninput[type=\"submit\"].btn::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\n\nbutton.btn.btn-large,\ninput[type=\"submit\"].btn.btn-large {\n  *padding-top: 7px;\n  *padding-bottom: 7px;\n}\n\nbutton.btn.btn-small,\ninput[type=\"submit\"].btn.btn-small {\n  *padding-top: 3px;\n  *padding-bottom: 3px;\n}\n\nbutton.btn.btn-mini,\ninput[type=\"submit\"].btn.btn-mini {\n  *padding-top: 1px;\n  *padding-bottom: 1px;\n}\n\n.btn-link,\n.btn-link:active,\n.btn-link[disabled] {\n  background-color: transparent;\n  background-image: none;\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-link {\n  color: #0088cc;\n  cursor: pointer;\n  border-color: transparent;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-link:hover,\n.btn-link:focus {\n  color: #005580;\n  text-decoration: underline;\n  background-color: transparent;\n}\n\n.btn-link[disabled]:hover,\n.btn-link[disabled]:focus {\n  color: #333333;\n  text-decoration: none;\n}\n\n.btn-group {\n  position: relative;\n  display: inline-block;\n  *display: inline;\n  *margin-left: .3em;\n  font-size: 0;\n  white-space: nowrap;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.btn-group:first-child {\n  *margin-left: 0;\n}\n\n.btn-group + .btn-group {\n  margin-left: 5px;\n}\n\n.btn-toolbar {\n  margin-top: 10px;\n  margin-bottom: 10px;\n  font-size: 0;\n}\n\n.btn-toolbar > .btn + .btn,\n.btn-toolbar > .btn-group + .btn,\n.btn-toolbar > .btn + .btn-group {\n  margin-left: 5px;\n}\n\n.btn-group > .btn {\n  position: relative;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-group > .btn + .btn {\n  margin-left: -1px;\n}\n\n.btn-group > .btn,\n.btn-group > .dropdown-menu,\n.btn-group > .popover {\n  font-size: 14px;\n}\n\n.btn-group > .btn-mini {\n  font-size: 10.5px;\n}\n\n.btn-group > .btn-small {\n  font-size: 11.9px;\n}\n\n.btn-group > .btn-large {\n  font-size: 17.5px;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.btn-group > .btn:last-child,\n.btn-group > .dropdown-toggle {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.btn-group > .btn.large:first-child {\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 6px;\n          border-bottom-left-radius: 6px;\n  -webkit-border-top-left-radius: 6px;\n          border-top-left-radius: 6px;\n  -moz-border-radius-bottomleft: 6px;\n  -moz-border-radius-topleft: 6px;\n}\n\n.btn-group > .btn.large:last-child,\n.btn-group > .large.dropdown-toggle {\n  -webkit-border-top-right-radius: 6px;\n          border-top-right-radius: 6px;\n  -webkit-border-bottom-right-radius: 6px;\n          border-bottom-right-radius: 6px;\n  -moz-border-radius-topright: 6px;\n  -moz-border-radius-bottomright: 6px;\n}\n\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active {\n  z-index: 2;\n}\n\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n.btn-group > .btn + .dropdown-toggle {\n  *padding-top: 5px;\n  padding-right: 8px;\n  *padding-bottom: 5px;\n  padding-left: 8px;\n  -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);\n     -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);\n          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);\n}\n\n.btn-group > .btn-mini + .dropdown-toggle {\n  *padding-top: 2px;\n  padding-right: 5px;\n  *padding-bottom: 2px;\n  padding-left: 5px;\n}\n\n.btn-group > .btn-small + .dropdown-toggle {\n  *padding-top: 5px;\n  *padding-bottom: 4px;\n}\n\n.btn-group > .btn-large + .dropdown-toggle {\n  *padding-top: 7px;\n  padding-right: 12px;\n  *padding-bottom: 7px;\n  padding-left: 12px;\n}\n\n.btn-group.open .dropdown-toggle {\n  background-image: none;\n  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn-group.open .btn.dropdown-toggle {\n  background-color: #e6e6e6;\n}\n\n.btn-group.open .btn-primary.dropdown-toggle {\n  background-color: #0044cc;\n}\n\n.btn-group.open .btn-warning.dropdown-toggle {\n  background-color: #f89406;\n}\n\n.btn-group.open .btn-danger.dropdown-toggle {\n  background-color: #bd362f;\n}\n\n.btn-group.open .btn-success.dropdown-toggle {\n  background-color: #51a351;\n}\n\n.btn-group.open .btn-info.dropdown-toggle {\n  background-color: #2f96b4;\n}\n\n.btn-group.open .btn-inverse.dropdown-toggle {\n  background-color: #222222;\n}\n\n.btn .caret {\n  margin-top: 8px;\n  margin-left: 0;\n}\n\n.btn-large .caret {\n  margin-top: 6px;\n}\n\n.btn-large .caret {\n  border-top-width: 5px;\n  border-right-width: 5px;\n  border-left-width: 5px;\n}\n\n.btn-mini .caret,\n.btn-small .caret {\n  margin-top: 8px;\n}\n\n.dropup .btn-large .caret {\n  border-bottom-width: 5px;\n}\n\n.btn-primary .caret,\n.btn-warning .caret,\n.btn-danger .caret,\n.btn-info .caret,\n.btn-success .caret,\n.btn-inverse .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.btn-group-vertical {\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n}\n\n.btn-group-vertical > .btn {\n  display: block;\n  float: none;\n  max-width: 100%;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-group-vertical > .btn + .btn {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:first-child {\n  -webkit-border-radius: 4px 4px 0 0;\n     -moz-border-radius: 4px 4px 0 0;\n          border-radius: 4px 4px 0 0;\n}\n\n.btn-group-vertical > .btn:last-child {\n  -webkit-border-radius: 0 0 4px 4px;\n     -moz-border-radius: 0 0 4px 4px;\n          border-radius: 0 0 4px 4px;\n}\n\n.btn-group-vertical > .btn-large:first-child {\n  -webkit-border-radius: 6px 6px 0 0;\n     -moz-border-radius: 6px 6px 0 0;\n          border-radius: 6px 6px 0 0;\n}\n\n.btn-group-vertical > .btn-large:last-child {\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n}\n\n.alert {\n  padding: 8px 35px 8px 14px;\n  margin-bottom: 20px;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n  background-color: #fcf8e3;\n  border: 1px solid #fbeed5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.alert,\n.alert h4 {\n  color: #c09853;\n}\n\n.alert h4 {\n  margin: 0;\n}\n\n.alert .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  line-height: 20px;\n}\n\n.alert-success {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n\n.alert-success h4 {\n  color: #468847;\n}\n\n.alert-danger,\n.alert-error {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n\n.alert-danger h4,\n.alert-error h4 {\n  color: #b94a48;\n}\n\n.alert-info {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n\n.alert-info h4 {\n  color: #3a87ad;\n}\n\n.alert-block {\n  padding-top: 14px;\n  padding-bottom: 14px;\n}\n\n.alert-block > p,\n.alert-block > ul {\n  margin-bottom: 0;\n}\n\n.alert-block p + p {\n  margin-top: 5px;\n}\n\n.nav {\n  margin-bottom: 20px;\n  margin-left: 0;\n  list-style: none;\n}\n\n.nav > li > a {\n  display: block;\n}\n\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n\n.nav > li > a > img {\n  max-width: none;\n}\n\n.nav > .pull-right {\n  float: right;\n}\n\n.nav-header {\n  display: block;\n  padding: 3px 15px;\n  font-size: 11px;\n  font-weight: bold;\n  line-height: 20px;\n  color: #999999;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n  text-transform: uppercase;\n}\n\n.nav li + .nav-header {\n  margin-top: 9px;\n}\n\n.nav-list {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-bottom: 0;\n}\n\n.nav-list > li > a,\n.nav-list .nav-header {\n  margin-right: -15px;\n  margin-left: -15px;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n}\n\n.nav-list > li > a {\n  padding: 3px 15px;\n}\n\n.nav-list > .active > a,\n.nav-list > .active > a:hover,\n.nav-list > .active > a:focus {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  background-color: #0088cc;\n}\n\n.nav-list [class^=\"icon-\"],\n.nav-list [class*=\" icon-\"] {\n  margin-right: 2px;\n}\n\n.nav-list .divider {\n  *width: 100%;\n  height: 1px;\n  margin: 9px 1px;\n  *margin: -5px 0 5px;\n  overflow: hidden;\n  background-color: #e5e5e5;\n  border-bottom: 1px solid #ffffff;\n}\n\n.nav-tabs,\n.nav-pills {\n  *zoom: 1;\n}\n\n.nav-tabs:before,\n.nav-pills:before,\n.nav-tabs:after,\n.nav-pills:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.nav-tabs:after,\n.nav-pills:after {\n  clear: both;\n}\n\n.nav-tabs > li,\n.nav-pills > li {\n  float: left;\n}\n\n.nav-tabs > li > a,\n.nav-pills > li > a {\n  padding-right: 12px;\n  padding-left: 12px;\n  margin-right: 2px;\n  line-height: 14px;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs > li {\n  margin-bottom: -1px;\n}\n\n.nav-tabs > li > a {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  line-height: 20px;\n  border: 1px solid transparent;\n  -webkit-border-radius: 4px 4px 0 0;\n     -moz-border-radius: 4px 4px 0 0;\n          border-radius: 4px 4px 0 0;\n}\n\n.nav-tabs > li > a:hover,\n.nav-tabs > li > a:focus {\n  border-color: #eeeeee #eeeeee #dddddd;\n}\n\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover,\n.nav-tabs > .active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #ffffff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n\n.nav-pills > li > a {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  margin-top: 2px;\n  margin-bottom: 2px;\n  -webkit-border-radius: 5px;\n     -moz-border-radius: 5px;\n          border-radius: 5px;\n}\n\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover,\n.nav-pills > .active > a:focus {\n  color: #ffffff;\n  background-color: #0088cc;\n}\n\n.nav-stacked > li {\n  float: none;\n}\n\n.nav-stacked > li > a {\n  margin-right: 0;\n}\n\n.nav-tabs.nav-stacked {\n  border-bottom: 0;\n}\n\n.nav-tabs.nav-stacked > li > a {\n  border: 1px solid #ddd;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.nav-tabs.nav-stacked > li:first-child > a {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.nav-tabs.nav-stacked > li:last-child > a {\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n\n.nav-tabs.nav-stacked > li > a:hover,\n.nav-tabs.nav-stacked > li > a:focus {\n  z-index: 2;\n  border-color: #ddd;\n}\n\n.nav-pills.nav-stacked > li > a {\n  margin-bottom: 3px;\n}\n\n.nav-pills.nav-stacked > li:last-child > a {\n  margin-bottom: 1px;\n}\n\n.nav-tabs .dropdown-menu {\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n}\n\n.nav-pills .dropdown-menu {\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.nav .dropdown-toggle .caret {\n  margin-top: 6px;\n  border-top-color: #0088cc;\n  border-bottom-color: #0088cc;\n}\n\n.nav .dropdown-toggle:hover .caret,\n.nav .dropdown-toggle:focus .caret {\n  border-top-color: #005580;\n  border-bottom-color: #005580;\n}\n\n/* move down carets for tabs */\n\n.nav-tabs .dropdown-toggle .caret {\n  margin-top: 8px;\n}\n\n.nav .active .dropdown-toggle .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n\n.nav-tabs .active .dropdown-toggle .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n\n.nav > .dropdown.active > a:hover,\n.nav > .dropdown.active > a:focus {\n  cursor: pointer;\n}\n\n.nav-tabs .open .dropdown-toggle,\n.nav-pills .open .dropdown-toggle,\n.nav > li.dropdown.open.active > a:hover,\n.nav > li.dropdown.open.active > a:focus {\n  color: #ffffff;\n  background-color: #999999;\n  border-color: #999999;\n}\n\n.nav li.dropdown.open .caret,\n.nav li.dropdown.open.active .caret,\n.nav li.dropdown.open a:hover .caret,\n.nav li.dropdown.open a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n\n.tabs-stacked .open > a:hover,\n.tabs-stacked .open > a:focus {\n  border-color: #999999;\n}\n\n.tabbable {\n  *zoom: 1;\n}\n\n.tabbable:before,\n.tabbable:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.tabbable:after {\n  clear: both;\n}\n\n.tab-content {\n  overflow: auto;\n}\n\n.tabs-below > .nav-tabs,\n.tabs-right > .nav-tabs,\n.tabs-left > .nav-tabs {\n  border-bottom: 0;\n}\n\n.tab-content > .tab-pane,\n.pill-content > .pill-pane {\n  display: none;\n}\n\n.tab-content > .active,\n.pill-content > .active {\n  display: block;\n}\n\n.tabs-below > .nav-tabs {\n  border-top: 1px solid #ddd;\n}\n\n.tabs-below > .nav-tabs > li {\n  margin-top: -1px;\n  margin-bottom: 0;\n}\n\n.tabs-below > .nav-tabs > li > a {\n  -webkit-border-radius: 0 0 4px 4px;\n     -moz-border-radius: 0 0 4px 4px;\n          border-radius: 0 0 4px 4px;\n}\n\n.tabs-below > .nav-tabs > li > a:hover,\n.tabs-below > .nav-tabs > li > a:focus {\n  border-top-color: #ddd;\n  border-bottom-color: transparent;\n}\n\n.tabs-below > .nav-tabs > .active > a,\n.tabs-below > .nav-tabs > .active > a:hover,\n.tabs-below > .nav-tabs > .active > a:focus {\n  border-color: transparent #ddd #ddd #ddd;\n}\n\n.tabs-left > .nav-tabs > li,\n.tabs-right > .nav-tabs > li {\n  float: none;\n}\n\n.tabs-left > .nav-tabs > li > a,\n.tabs-right > .nav-tabs > li > a {\n  min-width: 74px;\n  margin-right: 0;\n  margin-bottom: 3px;\n}\n\n.tabs-left > .nav-tabs {\n  float: left;\n  margin-right: 19px;\n  border-right: 1px solid #ddd;\n}\n\n.tabs-left > .nav-tabs > li > a {\n  margin-right: -1px;\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.tabs-left > .nav-tabs > li > a:hover,\n.tabs-left > .nav-tabs > li > a:focus {\n  border-color: #eeeeee #dddddd #eeeeee #eeeeee;\n}\n\n.tabs-left > .nav-tabs .active > a,\n.tabs-left > .nav-tabs .active > a:hover,\n.tabs-left > .nav-tabs .active > a:focus {\n  border-color: #ddd transparent #ddd #ddd;\n  *border-right-color: #ffffff;\n}\n\n.tabs-right > .nav-tabs {\n  float: right;\n  margin-left: 19px;\n  border-left: 1px solid #ddd;\n}\n\n.tabs-right > .nav-tabs > li > a {\n  margin-left: -1px;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.tabs-right > .nav-tabs > li > a:hover,\n.tabs-right > .nav-tabs > li > a:focus {\n  border-color: #eeeeee #eeeeee #eeeeee #dddddd;\n}\n\n.tabs-right > .nav-tabs .active > a,\n.tabs-right > .nav-tabs .active > a:hover,\n.tabs-right > .nav-tabs .active > a:focus {\n  border-color: #ddd #ddd #ddd transparent;\n  *border-left-color: #ffffff;\n}\n\n.nav > .disabled > a {\n  color: #999999;\n}\n\n.nav > .disabled > a:hover,\n.nav > .disabled > a:focus {\n  text-decoration: none;\n  cursor: default;\n  background-color: transparent;\n}\n\n.navbar {\n  *position: relative;\n  *z-index: 2;\n  margin-bottom: 20px;\n  overflow: visible;\n}\n\n.navbar-inner {\n  min-height: 40px;\n  padding-right: 20px;\n  padding-left: 20px;\n  background-color: #fafafa;\n  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));\n  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);\n  background-repeat: repeat-x;\n  border: 1px solid #d4d4d4;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);\n  *zoom: 1;\n  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n}\n\n.navbar-inner:before,\n.navbar-inner:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.navbar-inner:after {\n  clear: both;\n}\n\n.navbar .container {\n  width: auto;\n}\n\n.nav-collapse.collapse {\n  height: auto;\n  overflow: visible;\n}\n\n.navbar .brand {\n  display: block;\n  float: left;\n  padding: 10px 20px 10px;\n  margin-left: -20px;\n  font-size: 20px;\n  font-weight: 200;\n  color: #777777;\n  text-shadow: 0 1px 0 #ffffff;\n}\n\n.navbar .brand:hover,\n.navbar .brand:focus {\n  text-decoration: none;\n}\n\n.navbar-text {\n  margin-bottom: 0;\n  line-height: 40px;\n  color: #777777;\n}\n\n.navbar-link {\n  color: #777777;\n}\n\n.navbar-link:hover,\n.navbar-link:focus {\n  color: #333333;\n}\n\n.navbar .divider-vertical {\n  height: 40px;\n  margin: 0 9px;\n  border-right: 1px solid #ffffff;\n  border-left: 1px solid #f2f2f2;\n}\n\n.navbar .btn,\n.navbar .btn-group {\n  margin-top: 5px;\n}\n\n.navbar .btn-group .btn,\n.navbar .input-prepend .btn,\n.navbar .input-append .btn,\n.navbar .input-prepend .btn-group,\n.navbar .input-append .btn-group {\n  margin-top: 0;\n}\n\n.navbar-form {\n  margin-bottom: 0;\n  *zoom: 1;\n}\n\n.navbar-form:before,\n.navbar-form:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.navbar-form:after {\n  clear: both;\n}\n\n.navbar-form input,\n.navbar-form select,\n.navbar-form .radio,\n.navbar-form .checkbox {\n  margin-top: 5px;\n}\n\n.navbar-form input,\n.navbar-form select,\n.navbar-form .btn {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n.navbar-form input[type=\"image\"],\n.navbar-form input[type=\"checkbox\"],\n.navbar-form input[type=\"radio\"] {\n  margin-top: 3px;\n}\n\n.navbar-form .input-append,\n.navbar-form .input-prepend {\n  margin-top: 5px;\n  white-space: nowrap;\n}\n\n.navbar-form .input-append input,\n.navbar-form .input-prepend input {\n  margin-top: 0;\n}\n\n.navbar-search {\n  position: relative;\n  float: left;\n  margin-top: 5px;\n  margin-bottom: 0;\n}\n\n.navbar-search .search-query {\n  padding: 4px 14px;\n  margin-bottom: 0;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n.navbar-static-top {\n  position: static;\n  margin-bottom: 0;\n}\n\n.navbar-static-top .navbar-inner {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n  margin-bottom: 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-static-top .navbar-inner {\n  border-width: 0 0 1px;\n}\n\n.navbar-fixed-bottom .navbar-inner {\n  border-width: 1px 0 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-fixed-bottom .navbar-inner {\n  padding-right: 0;\n  padding-left: 0;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.navbar-static-top .container,\n.navbar-fixed-top .container,\n.navbar-fixed-bottom .container {\n  width: 940px;\n}\n\n.navbar-fixed-top {\n  top: 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-static-top .navbar-inner {\n  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n}\n\n.navbar-fixed-bottom {\n  bottom: 0;\n}\n\n.navbar-fixed-bottom .navbar-inner {\n  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n}\n\n.navbar .nav {\n  position: relative;\n  left: 0;\n  display: block;\n  float: left;\n  margin: 0 10px 0 0;\n}\n\n.navbar .nav.pull-right {\n  float: right;\n  margin-right: 0;\n}\n\n.navbar .nav > li {\n  float: left;\n}\n\n.navbar .nav > li > a {\n  float: none;\n  padding: 10px 15px 10px;\n  color: #777777;\n  text-decoration: none;\n  text-shadow: 0 1px 0 #ffffff;\n}\n\n.navbar .nav .dropdown-toggle .caret {\n  margin-top: 8px;\n}\n\n.navbar .nav > li > a:focus,\n.navbar .nav > li > a:hover {\n  color: #333333;\n  text-decoration: none;\n  background-color: transparent;\n}\n\n.navbar .nav > .active > a,\n.navbar .nav > .active > a:hover,\n.navbar .nav > .active > a:focus {\n  color: #555555;\n  text-decoration: none;\n  background-color: #e5e5e5;\n  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n}\n\n.navbar .btn-navbar {\n  display: none;\n  float: right;\n  padding: 7px 10px;\n  margin-right: 5px;\n  margin-left: 5px;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #ededed;\n  *background-color: #e5e5e5;\n  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));\n  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);\n  background-repeat: repeat-x;\n  border-color: #e5e5e5 #e5e5e5 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n}\n\n.navbar .btn-navbar:hover,\n.navbar .btn-navbar:focus,\n.navbar .btn-navbar:active,\n.navbar .btn-navbar.active,\n.navbar .btn-navbar.disabled,\n.navbar .btn-navbar[disabled] {\n  color: #ffffff;\n  background-color: #e5e5e5;\n  *background-color: #d9d9d9;\n}\n\n.navbar .btn-navbar:active,\n.navbar .btn-navbar.active {\n  background-color: #cccccc \\9;\n}\n\n.navbar .btn-navbar .icon-bar {\n  display: block;\n  width: 18px;\n  height: 2px;\n  background-color: #f5f5f5;\n  -webkit-border-radius: 1px;\n     -moz-border-radius: 1px;\n          border-radius: 1px;\n  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.btn-navbar .icon-bar + .icon-bar {\n  margin-top: 3px;\n}\n\n.navbar .nav > li > .dropdown-menu:before {\n  position: absolute;\n  top: -7px;\n  left: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.navbar .nav > li > .dropdown-menu:after {\n  position: absolute;\n  top: -6px;\n  left: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.navbar-fixed-bottom .nav > li > .dropdown-menu:before {\n  top: auto;\n  bottom: -7px;\n  border-top: 7px solid #ccc;\n  border-bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.2);\n}\n\n.navbar-fixed-bottom .nav > li > .dropdown-menu:after {\n  top: auto;\n  bottom: -6px;\n  border-top: 6px solid #ffffff;\n  border-bottom: 0;\n}\n\n.navbar .nav li.dropdown > a:hover .caret,\n.navbar .nav li.dropdown > a:focus .caret {\n  border-top-color: #333333;\n  border-bottom-color: #333333;\n}\n\n.navbar .nav li.dropdown.open > .dropdown-toggle,\n.navbar .nav li.dropdown.active > .dropdown-toggle,\n.navbar .nav li.dropdown.open.active > .dropdown-toggle {\n  color: #555555;\n  background-color: #e5e5e5;\n}\n\n.navbar .nav li.dropdown > .dropdown-toggle .caret {\n  border-top-color: #777777;\n  border-bottom-color: #777777;\n}\n\n.navbar .nav li.dropdown.open > .dropdown-toggle .caret,\n.navbar .nav li.dropdown.active > .dropdown-toggle .caret,\n.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n\n.navbar .pull-right > li > .dropdown-menu,\n.navbar .nav > li > .dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu:before,\n.navbar .nav > li > .dropdown-menu.pull-right:before {\n  right: 12px;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu:after,\n.navbar .nav > li > .dropdown-menu.pull-right:after {\n  right: 13px;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu .dropdown-menu,\n.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {\n  right: 100%;\n  left: auto;\n  margin-right: -1px;\n  margin-left: 0;\n  -webkit-border-radius: 6px 0 6px 6px;\n     -moz-border-radius: 6px 0 6px 6px;\n          border-radius: 6px 0 6px 6px;\n}\n\n.navbar-inverse .navbar-inner {\n  background-color: #1b1b1b;\n  background-image: -moz-linear-gradient(top, #222222, #111111);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));\n  background-image: -webkit-linear-gradient(top, #222222, #111111);\n  background-image: -o-linear-gradient(top, #222222, #111111);\n  background-image: linear-gradient(to bottom, #222222, #111111);\n  background-repeat: repeat-x;\n  border-color: #252525;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);\n}\n\n.navbar-inverse .brand,\n.navbar-inverse .nav > li > a {\n  color: #999999;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.navbar-inverse .brand:hover,\n.navbar-inverse .nav > li > a:hover,\n.navbar-inverse .brand:focus,\n.navbar-inverse .nav > li > a:focus {\n  color: #ffffff;\n}\n\n.navbar-inverse .brand {\n  color: #999999;\n}\n\n.navbar-inverse .navbar-text {\n  color: #999999;\n}\n\n.navbar-inverse .nav > li > a:focus,\n.navbar-inverse .nav > li > a:hover {\n  color: #ffffff;\n  background-color: transparent;\n}\n\n.navbar-inverse .nav .active > a,\n.navbar-inverse .nav .active > a:hover,\n.navbar-inverse .nav .active > a:focus {\n  color: #ffffff;\n  background-color: #111111;\n}\n\n.navbar-inverse .navbar-link {\n  color: #999999;\n}\n\n.navbar-inverse .navbar-link:hover,\n.navbar-inverse .navbar-link:focus {\n  color: #ffffff;\n}\n\n.navbar-inverse .divider-vertical {\n  border-right-color: #222222;\n  border-left-color: #111111;\n}\n\n.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,\n.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,\n.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {\n  color: #ffffff;\n  background-color: #111111;\n}\n\n.navbar-inverse .nav li.dropdown > a:hover .caret,\n.navbar-inverse .nav li.dropdown > a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {\n  border-top-color: #999999;\n  border-bottom-color: #999999;\n}\n\n.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,\n.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,\n.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.navbar-inverse .navbar-search .search-query {\n  color: #ffffff;\n  background-color: #515151;\n  border-color: #111111;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n  -webkit-transition: none;\n     -moz-transition: none;\n       -o-transition: none;\n          transition: none;\n}\n\n.navbar-inverse .navbar-search .search-query:-moz-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query:focus,\n.navbar-inverse .navbar-search .search-query.focused {\n  padding: 5px 15px;\n  color: #333333;\n  text-shadow: 0 1px 0 #ffffff;\n  background-color: #ffffff;\n  border: 0;\n  outline: 0;\n  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n}\n\n.navbar-inverse .btn-navbar {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #0e0e0e;\n  *background-color: #040404;\n  background-image: -moz-linear-gradient(top, #151515, #040404);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));\n  background-image: -webkit-linear-gradient(top, #151515, #040404);\n  background-image: -o-linear-gradient(top, #151515, #040404);\n  background-image: linear-gradient(to bottom, #151515, #040404);\n  background-repeat: repeat-x;\n  border-color: #040404 #040404 #000000;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.navbar-inverse .btn-navbar:hover,\n.navbar-inverse .btn-navbar:focus,\n.navbar-inverse .btn-navbar:active,\n.navbar-inverse .btn-navbar.active,\n.navbar-inverse .btn-navbar.disabled,\n.navbar-inverse .btn-navbar[disabled] {\n  color: #ffffff;\n  background-color: #040404;\n  *background-color: #000000;\n}\n\n.navbar-inverse .btn-navbar:active,\n.navbar-inverse .btn-navbar.active {\n  background-color: #000000 \\9;\n}\n\n.breadcrumb {\n  padding: 8px 15px;\n  margin: 0 0 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.breadcrumb > li {\n  display: inline-block;\n  *display: inline;\n  text-shadow: 0 1px 0 #ffffff;\n  *zoom: 1;\n}\n\n.breadcrumb > li > .divider {\n  padding: 0 5px;\n  color: #ccc;\n}\n\n.breadcrumb > .active {\n  color: #999999;\n}\n\n.pagination {\n  margin: 20px 0;\n}\n\n.pagination ul {\n  display: inline-block;\n  *display: inline;\n  margin-bottom: 0;\n  margin-left: 0;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  *zoom: 1;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.pagination ul > li {\n  display: inline;\n}\n\n.pagination ul > li > a,\n.pagination ul > li > span {\n  float: left;\n  padding: 4px 12px;\n  line-height: 20px;\n  text-decoration: none;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-left-width: 0;\n}\n\n.pagination ul > li > a:hover,\n.pagination ul > li > a:focus,\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  background-color: #f5f5f5;\n}\n\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  color: #999999;\n  cursor: default;\n}\n\n.pagination ul > .disabled > span,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > a:hover,\n.pagination ul > .disabled > a:focus {\n  color: #999999;\n  cursor: default;\n  background-color: transparent;\n}\n\n.pagination ul > li:first-child > a,\n.pagination ul > li:first-child > span {\n  border-left-width: 1px;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.pagination ul > li:last-child > a,\n.pagination ul > li:last-child > span {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.pagination-centered {\n  text-align: center;\n}\n\n.pagination-right {\n  text-align: right;\n}\n\n.pagination-large ul > li > a,\n.pagination-large ul > li > span {\n  padding: 11px 19px;\n  font-size: 17.5px;\n}\n\n.pagination-large ul > li:first-child > a,\n.pagination-large ul > li:first-child > span {\n  -webkit-border-bottom-left-radius: 6px;\n          border-bottom-left-radius: 6px;\n  -webkit-border-top-left-radius: 6px;\n          border-top-left-radius: 6px;\n  -moz-border-radius-bottomleft: 6px;\n  -moz-border-radius-topleft: 6px;\n}\n\n.pagination-large ul > li:last-child > a,\n.pagination-large ul > li:last-child > span {\n  -webkit-border-top-right-radius: 6px;\n          border-top-right-radius: 6px;\n  -webkit-border-bottom-right-radius: 6px;\n          border-bottom-right-radius: 6px;\n  -moz-border-radius-topright: 6px;\n  -moz-border-radius-bottomright: 6px;\n}\n\n.pagination-mini ul > li:first-child > a,\n.pagination-small ul > li:first-child > a,\n.pagination-mini ul > li:first-child > span,\n.pagination-small ul > li:first-child > span {\n  -webkit-border-bottom-left-radius: 3px;\n          border-bottom-left-radius: 3px;\n  -webkit-border-top-left-radius: 3px;\n          border-top-left-radius: 3px;\n  -moz-border-radius-bottomleft: 3px;\n  -moz-border-radius-topleft: 3px;\n}\n\n.pagination-mini ul > li:last-child > a,\n.pagination-small ul > li:last-child > a,\n.pagination-mini ul > li:last-child > span,\n.pagination-small ul > li:last-child > span {\n  -webkit-border-top-right-radius: 3px;\n          border-top-right-radius: 3px;\n  -webkit-border-bottom-right-radius: 3px;\n          border-bottom-right-radius: 3px;\n  -moz-border-radius-topright: 3px;\n  -moz-border-radius-bottomright: 3px;\n}\n\n.pagination-small ul > li > a,\n.pagination-small ul > li > span {\n  padding: 2px 10px;\n  font-size: 11.9px;\n}\n\n.pagination-mini ul > li > a,\n.pagination-mini ul > li > span {\n  padding: 0 6px;\n  font-size: 10.5px;\n}\n\n.pager {\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n  *zoom: 1;\n}\n\n.pager:before,\n.pager:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.pager:after {\n  clear: both;\n}\n\n.pager li {\n  display: inline;\n}\n\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999999;\n  cursor: default;\n  background-color: #fff;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.8;\n  filter: alpha(opacity=80);\n}\n\n.modal {\n  position: fixed;\n  top: 10%;\n  left: 50%;\n  z-index: 1050;\n  width: 560px;\n  margin-left: -280px;\n  background-color: #ffffff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.3);\n  *border: 1px solid #999;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  outline: none;\n  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding-box;\n          background-clip: padding-box;\n}\n\n.modal.fade {\n  top: -25%;\n  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;\n     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;\n       -o-transition: opacity 0.3s linear, top 0.3s ease-out;\n          transition: opacity 0.3s linear, top 0.3s ease-out;\n}\n\n.modal.fade.in {\n  top: 10%;\n}\n\n.modal-header {\n  padding: 9px 15px;\n  border-bottom: 1px solid #eee;\n}\n\n.modal-header .close {\n  margin-top: 2px;\n}\n\n.modal-header h3 {\n  margin: 0;\n  line-height: 30px;\n}\n\n.modal-body {\n  position: relative;\n  max-height: 400px;\n  padding: 15px;\n  overflow-y: auto;\n}\n\n.modal-form {\n  margin-bottom: 0;\n}\n\n.modal-footer {\n  padding: 14px 15px 15px;\n  margin-bottom: 0;\n  text-align: right;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n  *zoom: 1;\n  -webkit-box-shadow: inset 0 1px 0 #ffffff;\n     -moz-box-shadow: inset 0 1px 0 #ffffff;\n          box-shadow: inset 0 1px 0 #ffffff;\n}\n\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.modal-footer:after {\n  clear: both;\n}\n\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  font-size: 11px;\n  line-height: 1.4;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  visibility: visible;\n}\n\n.tooltip.in {\n  opacity: 0.8;\n  filter: alpha(opacity=80);\n}\n\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 8px;\n  color: #ffffff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000000;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-top-color: #000000;\n  border-width: 5px 5px 0;\n}\n\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-right-color: #000000;\n  border-width: 5px 5px 5px 0;\n}\n\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-left-color: #000000;\n  border-width: 5px 0 5px 5px;\n}\n\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-bottom-color: #000000;\n  border-width: 0 5px 5px;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  white-space: normal;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding;\n          background-clip: padding-box;\n}\n\n.popover.top {\n  margin-top: -10px;\n}\n\n.popover.right {\n  margin-left: 10px;\n}\n\n.popover.bottom {\n  margin-top: 10px;\n}\n\n.popover.left {\n  margin-left: -10px;\n}\n\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  -webkit-border-radius: 5px 5px 0 0;\n     -moz-border-radius: 5px 5px 0 0;\n          border-radius: 5px 5px 0 0;\n}\n\n.popover-title:empty {\n  display: none;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n.popover .arrow,\n.popover .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n\n.popover .arrow {\n  border-width: 11px;\n}\n\n.popover .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n\n.popover.top .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n\n.popover.top .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  border-top-color: #ffffff;\n  border-bottom-width: 0;\n}\n\n.popover.right .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n\n.popover.right .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  border-right-color: #ffffff;\n  border-left-width: 0;\n}\n\n.popover.bottom .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  border-top-width: 0;\n}\n\n.popover.bottom .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  border-bottom-color: #ffffff;\n  border-top-width: 0;\n}\n\n.popover.left .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n  border-right-width: 0;\n}\n\n.popover.left .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  border-left-color: #ffffff;\n  border-right-width: 0;\n}\n\n.thumbnails {\n  margin-left: -20px;\n  list-style: none;\n  *zoom: 1;\n}\n\n.thumbnails:before,\n.thumbnails:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.thumbnails:after {\n  clear: both;\n}\n\n.row-fluid .thumbnails {\n  margin-left: 0;\n}\n\n.thumbnails > li {\n  float: left;\n  margin-bottom: 20px;\n  margin-left: 20px;\n}\n\n.thumbnail {\n  display: block;\n  padding: 4px;\n  line-height: 20px;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n  -webkit-transition: all 0.2s ease-in-out;\n     -moz-transition: all 0.2s ease-in-out;\n       -o-transition: all 0.2s ease-in-out;\n          transition: all 0.2s ease-in-out;\n}\n\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #0088cc;\n  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n}\n\n.thumbnail > img {\n  display: block;\n  max-width: 100%;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.thumbnail .caption {\n  padding: 9px;\n  color: #555555;\n}\n\n.media,\n.media-body {\n  overflow: hidden;\n  *overflow: visible;\n  zoom: 1;\n}\n\n.media,\n.media .media {\n  margin-top: 15px;\n}\n\n.media:first-child {\n  margin-top: 0;\n}\n\n.media-object {\n  display: block;\n}\n\n.media-heading {\n  margin: 0 0 5px;\n}\n\n.media > .pull-left {\n  margin-right: 10px;\n}\n\n.media > .pull-right {\n  margin-left: 10px;\n}\n\n.media-list {\n  margin-left: 0;\n  list-style: none;\n}\n\n.label,\n.badge {\n  display: inline-block;\n  padding: 2px 4px;\n  font-size: 11.844px;\n  font-weight: bold;\n  line-height: 14px;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #999999;\n}\n\n.label {\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.badge {\n  padding-right: 9px;\n  padding-left: 9px;\n  -webkit-border-radius: 9px;\n     -moz-border-radius: 9px;\n          border-radius: 9px;\n}\n\n.label:empty,\n.badge:empty {\n  display: none;\n}\n\na.label:hover,\na.label:focus,\na.badge:hover,\na.badge:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n\n.label-important,\n.badge-important {\n  background-color: #b94a48;\n}\n\n.label-important[href],\n.badge-important[href] {\n  background-color: #953b39;\n}\n\n.label-warning,\n.badge-warning {\n  background-color: #f89406;\n}\n\n.label-warning[href],\n.badge-warning[href] {\n  background-color: #c67605;\n}\n\n.label-success,\n.badge-success {\n  background-color: #468847;\n}\n\n.label-success[href],\n.badge-success[href] {\n  background-color: #356635;\n}\n\n.label-info,\n.badge-info {\n  background-color: #3a87ad;\n}\n\n.label-info[href],\n.badge-info[href] {\n  background-color: #2d6987;\n}\n\n.label-inverse,\n.badge-inverse {\n  background-color: #333333;\n}\n\n.label-inverse[href],\n.badge-inverse[href] {\n  background-color: #1a1a1a;\n}\n\n.btn .label,\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.btn-mini .label,\n.btn-mini .badge {\n  top: 0;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-moz-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-ms-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 0 0;\n  }\n  to {\n    background-position: 40px 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));\n  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);\n  background-repeat: repeat-x;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.progress .bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #0e90d2;\n  background-image: -moz-linear-gradient(top, #149bdf, #0480be);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));\n  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);\n  background-image: -o-linear-gradient(top, #149bdf, #0480be);\n  background-image: linear-gradient(to bottom, #149bdf, #0480be);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  -webkit-transition: width 0.6s ease;\n     -moz-transition: width 0.6s ease;\n       -o-transition: width 0.6s ease;\n          transition: width 0.6s ease;\n}\n\n.progress .bar + .bar {\n  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n}\n\n.progress-striped .bar {\n  background-color: #149bdf;\n  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));\n  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);\n  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);\n  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);\n  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);\n  -webkit-background-size: 40px 40px;\n     -moz-background-size: 40px 40px;\n       -o-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n\n.progress.active .bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n     -moz-animation: progress-bar-stripes 2s linear infinite;\n      -ms-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n\n.progress-danger .bar,\n.progress .bar-danger {\n  background-color: #dd514c;\n  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));\n  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);\n}\n\n.progress-danger.progress-striped .bar,\n.progress-striped .bar-danger {\n  background-color: #ee5f5b;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-success .bar,\n.progress .bar-success {\n  background-color: #5eb95e;\n  background-image: -moz-linear-gradient(top, #62c462, #57a957);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));\n  background-image: -webkit-linear-gradient(top, #62c462, #57a957);\n  background-image: -o-linear-gradient(top, #62c462, #57a957);\n  background-image: linear-gradient(to bottom, #62c462, #57a957);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);\n}\n\n.progress-success.progress-striped .bar,\n.progress-striped .bar-success {\n  background-color: #62c462;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-info .bar,\n.progress .bar-info {\n  background-color: #4bb1cf;\n  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));\n  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);\n}\n\n.progress-info.progress-striped .bar,\n.progress-striped .bar-info {\n  background-color: #5bc0de;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-warning .bar,\n.progress .bar-warning {\n  background-color: #faa732;\n  background-image: -moz-linear-gradient(top, #fbb450, #f89406);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));\n  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);\n  background-image: -o-linear-gradient(top, #fbb450, #f89406);\n  background-image: linear-gradient(to bottom, #fbb450, #f89406);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);\n}\n\n.progress-warning.progress-striped .bar,\n.progress-striped .bar-warning {\n  background-color: #fbb450;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.accordion {\n  margin-bottom: 20px;\n}\n\n.accordion-group {\n  margin-bottom: 2px;\n  border: 1px solid #e5e5e5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.accordion-heading {\n  border-bottom: 0;\n}\n\n.accordion-heading .accordion-toggle {\n  display: block;\n  padding: 8px 15px;\n}\n\n.accordion-toggle {\n  cursor: pointer;\n}\n\n.accordion-inner {\n  padding: 9px 15px;\n  border-top: 1px solid #e5e5e5;\n}\n\n.carousel {\n  position: relative;\n  margin-bottom: 20px;\n  line-height: 1;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n     -moz-transition: 0.6s ease-in-out left;\n       -o-transition: 0.6s ease-in-out left;\n          transition: 0.6s ease-in-out left;\n}\n\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  line-height: 1;\n}\n\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n\n.carousel-inner > .active {\n  left: 0;\n}\n\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.carousel-inner > .next {\n  left: 100%;\n}\n\n.carousel-inner > .prev {\n  left: -100%;\n}\n\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n\n.carousel-inner > .active.left {\n  left: -100%;\n}\n\n.carousel-inner > .active.right {\n  left: 100%;\n}\n\n.carousel-control {\n  position: absolute;\n  top: 40%;\n  left: 15px;\n  width: 40px;\n  height: 40px;\n  margin-top: -20px;\n  font-size: 60px;\n  font-weight: 100;\n  line-height: 30px;\n  color: #ffffff;\n  text-align: center;\n  background: #222222;\n  border: 3px solid #ffffff;\n  -webkit-border-radius: 23px;\n     -moz-border-radius: 23px;\n          border-radius: 23px;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n\n.carousel-control.right {\n  right: 15px;\n  left: auto;\n}\n\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #ffffff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n\n.carousel-indicators {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  z-index: 5;\n  margin: 0;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  display: block;\n  float: left;\n  width: 10px;\n  height: 10px;\n  margin-left: 5px;\n  text-indent: -999px;\n  background-color: #ccc;\n  background-color: rgba(255, 255, 255, 0.25);\n  border-radius: 5px;\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 15px;\n  background: #333333;\n  background: rgba(0, 0, 0, 0.75);\n}\n\n.carousel-caption h4,\n.carousel-caption p {\n  line-height: 20px;\n  color: #ffffff;\n}\n\n.carousel-caption h4 {\n  margin: 0 0 5px;\n}\n\n.carousel-caption p {\n  margin-bottom: 0;\n}\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit;\n}\n\n.hero-unit li {\n  line-height: 30px;\n}\n\n.pull-right {\n  float: right;\n}\n\n.pull-left {\n  float: left;\n}\n\n.hide {\n  display: none;\n}\n\n.show {\n  display: block;\n}\n\n.invisible {\n  visibility: hidden;\n}\n\n.affix {\n  position: fixed;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.css",
    "content": "/* ============================================================\n * bootstrapSwitch v1.2 by Larentis Mattia @spiritualGuru\n * http://www.larentis.eu/switch/\n * ============================================================\n * Licensed under the Apache License, Version 2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n * ============================================================ */\n.has-switch {\n  display: inline-block;\n  cursor: pointer;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  border: 1px solid;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  position: relative;\n  text-align: left;\n  overflow: hidden;\n  line-height: 8px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n  min-width: 100px;\n}\n.has-switch.switch-mini {\n  min-width: 72px;\n}\n.has-switch.switch-small {\n  min-width: 80px;\n}\n.has-switch.switch-large {\n  min-width: 120px;\n}\n.has-switch.deactivate {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default !important;\n}\n.has-switch.deactivate label,\n.has-switch.deactivate span {\n  cursor: default !important;\n}\n.has-switch > div {\n  display: inline-block;\n  width: 150%;\n  position: relative;\n  top: 0;\n}\n.has-switch > div.switch-animate {\n  -webkit-transition: left 0.5s;\n  -moz-transition: left 0.5s;\n  -o-transition: left 0.5s;\n  transition: left 0.5s;\n}\n.has-switch > div.switch-off {\n  left: -50%;\n}\n.has-switch > div.switch-on {\n  left: 0%;\n}\n.has-switch input[type=checkbox] {\n  display: none;\n}\n.has-switch span,\n.has-switch label {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  cursor: pointer;\n  position: relative;\n  display: inline-block;\n  height: 100%;\n  padding-bottom: 4px;\n  padding-top: 4px;\n  font-size: 14px;\n  line-height: 20px;\n}\n.has-switch span.switch-mini,\n.has-switch label.switch-mini {\n  padding-bottom: 4px;\n  padding-top: 4px;\n  font-size: 10px;\n  line-height: 9px;\n}\n.has-switch span.switch-small,\n.has-switch label.switch-small {\n  padding-bottom: 3px;\n  padding-top: 3px;\n  font-size: 12px;\n  line-height: 18px;\n}\n.has-switch span.switch-large,\n.has-switch label.switch-large {\n  padding-bottom: 9px;\n  padding-top: 9px;\n  font-size: 16px;\n  line-height: normal;\n}\n.has-switch label {\n  text-align: center;\n  margin-top: -1px;\n  margin-bottom: -1px;\n  z-index: 100;\n  width: 34%;\n  border-left: 1px solid #cccccc;\n  border-right: 1px solid #cccccc;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);\n  border-color: #e6e6e6 #e6e6e6 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #e6e6e6;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch label:hover,\n.has-switch label:focus,\n.has-switch label:active,\n.has-switch label.active,\n.has-switch label.disabled,\n.has-switch label[disabled] {\n  color: #ffffff;\n  background-color: #e6e6e6;\n  *background-color: #d9d9d9;\n}\n.has-switch label:active,\n.has-switch label.active {\n  background-color: #cccccc \\9;\n}\n.has-switch label i {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  line-height: 18px;\n  pointer-events: none;\n}\n.has-switch span {\n  text-align: center;\n  z-index: 1;\n  width: 33%;\n}\n.has-switch span.switch-left {\n  -webkit-border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n  border-top-left-radius: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  border-bottom-left-radius: 4px;\n}\n.has-switch span.switch-right {\n  color: #333333;\n  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\n  background-color: #f0f0f0;\n  background-image: -moz-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: -o-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: linear-gradient(to bottom, #e6e6e6, #ffffff);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0);\n  border-color: #ffffff #ffffff #d9d9d9;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #ffffff;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-right:hover,\n.has-switch span.switch-right:focus,\n.has-switch span.switch-right:active,\n.has-switch span.switch-right.active,\n.has-switch span.switch-right.disabled,\n.has-switch span.switch-right[disabled] {\n  color: #333333;\n  background-color: #ffffff;\n  *background-color: #f2f2f2;\n}\n.has-switch span.switch-right:active,\n.has-switch span.switch-right.active {\n  background-color: #e6e6e6 \\9;\n}\n.has-switch span.switch-primary,\n.has-switch span.switch-left {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #005fcc;\n  background-image: -moz-linear-gradient(top, #0044cc, #0088cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#0088cc));\n  background-image: -webkit-linear-gradient(top, #0044cc, #0088cc);\n  background-image: -o-linear-gradient(top, #0044cc, #0088cc);\n  background-image: linear-gradient(to bottom, #0044cc, #0088cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0);\n  border-color: #0088cc #0088cc #005580;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #0088cc;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-primary:hover,\n.has-switch span.switch-left:hover,\n.has-switch span.switch-primary:focus,\n.has-switch span.switch-left:focus,\n.has-switch span.switch-primary:active,\n.has-switch span.switch-left:active,\n.has-switch span.switch-primary.active,\n.has-switch span.switch-left.active,\n.has-switch span.switch-primary.disabled,\n.has-switch span.switch-left.disabled,\n.has-switch span.switch-primary[disabled],\n.has-switch span.switch-left[disabled] {\n  color: #ffffff;\n  background-color: #0088cc;\n  *background-color: #0077b3;\n}\n.has-switch span.switch-primary:active,\n.has-switch span.switch-left:active,\n.has-switch span.switch-primary.active,\n.has-switch span.switch-left.active {\n  background-color: #006699 \\9;\n}\n.has-switch span.switch-info {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #41a7c5;\n  background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de));\n  background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: -o-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: linear-gradient(to bottom, #2f96b4, #5bc0de);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0);\n  border-color: #5bc0de #5bc0de #28a1c5;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #5bc0de;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-info:hover,\n.has-switch span.switch-info:focus,\n.has-switch span.switch-info:active,\n.has-switch span.switch-info.active,\n.has-switch span.switch-info.disabled,\n.has-switch span.switch-info[disabled] {\n  color: #ffffff;\n  background-color: #5bc0de;\n  *background-color: #46b8da;\n}\n.has-switch span.switch-info:active,\n.has-switch span.switch-info.active {\n  background-color: #31b0d5 \\9;\n}\n.has-switch span.switch-success {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #58b058;\n  background-image: -moz-linear-gradient(top, #51a351, #62c462);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462));\n  background-image: -webkit-linear-gradient(top, #51a351, #62c462);\n  background-image: -o-linear-gradient(top, #51a351, #62c462);\n  background-image: linear-gradient(to bottom, #51a351, #62c462);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0);\n  border-color: #62c462 #62c462 #3b9e3b;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #62c462;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-success:hover,\n.has-switch span.switch-success:focus,\n.has-switch span.switch-success:active,\n.has-switch span.switch-success.active,\n.has-switch span.switch-success.disabled,\n.has-switch span.switch-success[disabled] {\n  color: #ffffff;\n  background-color: #62c462;\n  *background-color: #4fbd4f;\n}\n.has-switch span.switch-success:active,\n.has-switch span.switch-success.active {\n  background-color: #42b142 \\9;\n}\n.has-switch span.switch-warning {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #f9a123;\n  background-image: -moz-linear-gradient(top, #f89406, #fbb450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450));\n  background-image: -webkit-linear-gradient(top, #f89406, #fbb450);\n  background-image: -o-linear-gradient(top, #f89406, #fbb450);\n  background-image: linear-gradient(to bottom, #f89406, #fbb450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0);\n  border-color: #fbb450 #fbb450 #f89406;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #fbb450;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-warning:hover,\n.has-switch span.switch-warning:focus,\n.has-switch span.switch-warning:active,\n.has-switch span.switch-warning.active,\n.has-switch span.switch-warning.disabled,\n.has-switch span.switch-warning[disabled] {\n  color: #ffffff;\n  background-color: #fbb450;\n  *background-color: #faa937;\n}\n.has-switch span.switch-warning:active,\n.has-switch span.switch-warning.active {\n  background-color: #fa9f1e \\9;\n}\n.has-switch span.switch-danger {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #d14641;\n  background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b));\n  background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: -o-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: linear-gradient(to bottom, #bd362f, #ee5f5b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0);\n  border-color: #ee5f5b #ee5f5b #e51d18;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #ee5f5b;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-danger:hover,\n.has-switch span.switch-danger:focus,\n.has-switch span.switch-danger:active,\n.has-switch span.switch-danger.active,\n.has-switch span.switch-danger.disabled,\n.has-switch span.switch-danger[disabled] {\n  color: #ffffff;\n  background-color: #ee5f5b;\n  *background-color: #ec4844;\n}\n.has-switch span.switch-danger:active,\n.has-switch span.switch-danger.active {\n  background-color: #e9322d \\9;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.js",
    "content": "/* ============================================================\n * bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru\n * http://www.larentis.eu/switch/\n * ============================================================\n * Licensed under the Apache License, Version 2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n * ============================================================ */\n\n!function ($) {\n  \"use strict\";\n\n  $.fn['bootstrapSwitch'] = function (method) {\n    var methods = {\n      init: function () {\n        return this.each(function () {\n            var $element = $(this)\n              , $div\n              , $switchLeft\n              , $switchRight\n              , $label\n              , myClasses = \"\"\n              , classes = $element.attr('class')\n              , color\n              , moving\n              , onLabel = \"ON\"\n              , offLabel = \"OFF\"\n              , icon = false;\n\n            $.each(['switch-mini', 'switch-small', 'switch-large'], function (i, el) {\n              if (classes.indexOf(el) >= 0)\n                myClasses = el;\n            });\n\n            $element.addClass('has-switch');\n\n            if ($element.data('on') !== undefined)\n              color = \"switch-\" + $element.data('on');\n\n            if ($element.data('on-label') !== undefined)\n              onLabel = $element.data('on-label');\n\n            if ($element.data('off-label') !== undefined)\n              offLabel = $element.data('off-label');\n\n            if ($element.data('icon') !== undefined)\n              icon = $element.data('icon');\n\n            $switchLeft = $('<span>')\n              .addClass(\"switch-left\")\n              .addClass(myClasses)\n              .addClass(color)\n              .html(onLabel);\n\n            color = '';\n            if ($element.data('off') !== undefined)\n              color = \"switch-\" + $element.data('off');\n\n            $switchRight = $('<span>')\n              .addClass(\"switch-right\")\n              .addClass(myClasses)\n              .addClass(color)\n              .html(offLabel);\n\n            $label = $('<label>')\n              .html(\"&nbsp;\")\n              .addClass(myClasses)\n              .attr('for', $element.find('input').attr('id'));\n\n            if (icon) {\n              $label.html('<i class=\"icon icon-' + icon + '\"></i>');\n            }\n\n            $div = $element.find(':checkbox').wrap($('<div>')).parent().data('animated', false);\n\n            if ($element.data('animated') !== false)\n              $div.addClass('switch-animate').data('animated', true);\n\n            $div\n              .append($switchLeft)\n              .append($label)\n              .append($switchRight);\n\n            $element.find('>div').addClass(\n              $element.find('input').is(':checked') ? 'switch-on' : 'switch-off'\n            );\n\n            if ($element.find('input').is(':disabled'))\n              $(this).addClass('deactivate');\n\n            var changeStatus = function ($this) {\n              $this.siblings('label').trigger('mousedown').trigger('mouseup').trigger('click');\n            };\n\n            $element.on('keydown', function (e) {\n              if (e.keyCode === 32) {\n                e.stopImmediatePropagation();\n                e.preventDefault();\n                changeStatus($(e.target).find('span:first'));\n              }\n            });\n\n            $switchLeft.on('click', function (e) {\n              changeStatus($(this));\n            });\n\n            $switchRight.on('click', function (e) {\n              changeStatus($(this));\n            });\n\n            $element.find('input').on('change', function (e) {\n              var $this = $(this)\n                , $element = $this.parent()\n                , thisState = $this.is(':checked')\n                , state = $element.is('.switch-off');\n\n              e.preventDefault();\n\n              $element.css('left', '');\n\n              if (state === thisState) {\n\n                if (thisState)\n                  $element.removeClass('switch-off').addClass('switch-on');\n                else $element.removeClass('switch-on').addClass('switch-off');\n\n                if ($element.data('animated') !== false)\n                  $element.addClass(\"switch-animate\");\n\n                $element.parent().trigger('switch-change', {'el': $this, 'value': thisState})\n              }\n            });\n\n            $element.find('label').on('mousedown touchstart', function (e) {\n              var $this = $(this);\n              moving = false;\n\n              e.preventDefault();\n              e.stopImmediatePropagation();\n\n              $this.closest('div').removeClass('switch-animate');\n\n              if ($this.closest('.switch').is('.deactivate'))\n                $this.unbind('click');\n              else {\n                $this.on('mousemove touchmove', function (e) {\n                  var $element = $(this).closest('.switch')\n                    , relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left\n                    , percent = (relativeX / $element.width()) * 100\n                    , left = 25\n                    , right = 75;\n\n                  moving = true;\n\n                  if (percent < left)\n                    percent = left;\n                  else if (percent > right)\n                    percent = right;\n\n                  $element.find('>div').css('left', (percent - right) + \"%\")\n                });\n\n                $this.on('click touchend', function (e) {\n                  var $this = $(this)\n                    , $target = $(e.target)\n                    , $myCheckBox = $target.siblings('input');\n\n                  e.stopImmediatePropagation();\n                  e.preventDefault();\n\n                  $this.unbind('mouseleave');\n\n                  if (moving)\n                    $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25));\n                  else $myCheckBox.prop(\"checked\", !$myCheckBox.is(\":checked\"));\n\n                  moving = false;\n                  $myCheckBox.trigger('change');\n                });\n\n                $this.on('mouseleave', function (e) {\n                  var $this = $(this)\n                    , $myCheckBox = $this.siblings('input');\n\n                  e.preventDefault();\n                  e.stopImmediatePropagation();\n\n                  $this.unbind('mouseleave');\n                  $this.trigger('mouseup');\n\n                  $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25)).trigger('change');\n                });\n\n                $this.on('mouseup', function (e) {\n                  e.stopImmediatePropagation();\n                  e.preventDefault();\n\n                  $(this).unbind('mousemove');\n                });\n              }\n            });\n          }\n        );\n      },\n      toggleActivation: function () {\n        $(this).toggleClass('deactivate');\n      },\n      isActive: function () {\n        return !$(this).hasClass('deactivate');\n      },\n      setActive: function (active) {\n        if (active)\n          $(this).removeClass('deactivate');\n        else $(this).addClass('deactivate');\n      },\n      toggleState: function (skipOnChange) {\n        var $input = $(this).find('input:checkbox');\n        $input.prop('checked', !$input.is(':checked')).trigger('change', skipOnChange);\n      },\n      setState: function (value, skipOnChange) {\n        $(this).find('input:checkbox').prop('checked', value).trigger('change', skipOnChange);\n      },\n      status: function () {\n        return $(this).find('input:checkbox').is(':checked');\n      },\n      destroy: function () {\n        var $div = $(this).find('div')\n          , $checkbox;\n\n        $div.find(':not(input:checkbox)').remove();\n\n        $checkbox = $div.children();\n        $checkbox.unwrap().unwrap();\n\n        $checkbox.unbind('change');\n\n        return $checkbox;\n      }\n    };\n\n    if (methods[method])\n      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n    else if (typeof method === 'object' || !method)\n      return methods.init.apply(this, arguments);\n    else\n      $.error('Method ' + method + ' does not exist!');\n  };\n}(jQuery);\n\n$(function () {\n  $('.switch')['bootstrapSwitch']();\n});\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable-0.1.css",
    "content": ".footable { width: 100%; }\n.footable.breakpoint > tbody > tr > td.expand { background: url('img/plus.png') no-repeat 5px center; padding-left: 40px; }\n.footable.breakpoint > tbody > tr.footable-detail-show > td.expand { background: url('img/minus.png') no-repeat 5px center; }\n.footable.breakpoint > tbody > tr.footable-row-detail { background: #eee; }\n.footable > tbody img { vertical-align:middle; }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.paginate.css",
    "content": "tfoot.footable-pagination tr td {\n  text-align: center;\n}\n\n.footable-nav {\n\tlist-style: none;\n  padding: 0;\n  margin: 0;\n  display: inline-block;\n}\n\n  .footable-nav li {\n\t  display: inline-block;\n  }\n\n    .footable-nav li a {\n\t    display: inline-block;\n\t    padding: 5px 10px;\n\t    text-decoration: none;\n\t    color: #0066cc;\n      font-weight: bold;\n    }\n\n  .footable-nav .footable-page-current {\n\t  background: #888;\n    border-radius: 50%;\n  }\n\n    .footable-nav .footable-page-current a{\n\t    color: #fff;\n    }"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.sortable-0.1.css",
    "content": ".footable > thead > tr > th > span.footable-sort-indicator {\n  width: 16px;\n  height: 16px;\n  display: block;\n  float:right;\n  background: url('img/sorting_sprite.png') no-repeat top left;\n}\n\n.footable > thead > tr > th.footable-sortable:hover {\n  cursor:pointer;\n}\n\n.footable > thead > tr > th.footable-sortable > span {\n  \n}\n\n.footable > thead > tr > th.footable-sorted > span.footable-sort-indicator {\n  background-position: 0 -16px;\n}\n\n.footable > thead > tr > th.footable-sorted-desc > span.footable-sort-indicator {\n  background-position: 0 -32px;\n}\n\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-bootstrapSwitch.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap-responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrapSwitch.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script src=\"bootstrap/bootstrapSwitch.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-colspan.htm",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title></title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n    <style>\n      .test-class { background-color: #5BFF82; }\n    </style>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th colspan=\"3\" data-hide=\"phone\" data-ignore=\"true\" data-sort-ignore=\"true\"></th>\n          <th>ID</th>\n          <th>Date 1</th>\n          <th data-hide=\"phone\" colspan=\"3\" data-sort-match=\"1\" data-names=\"Date 2,Date 3,Date 4\" data-class=\"test-class\">Dates 2, 3, 4 (Sorts on 3)</th>\n          <th data-hide=\"phone,tablet\">Date 5</th>\n          <th data-hide=\"phone,tablet\">Note</th>\n          <th data-hide=\"phone,tablet\">Section</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>2</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-003</td>\n          <td>03/01/2014</td>\n\n          <td>10/01/2016</td>\n          <td>01/01/2014</td>\n          <td>23/01/2014</td>\n\n          <td>18/01/2014</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>3</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-001</td>\n          <td>03/01/2015</td>\n\n          <td>10/01/2015</td>\n          <td>02/01/2014</td>\n          <td>24/01/2014</td>\n\n          <td>18/01/2015</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>1</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-002</td>\n          <td>03/01/2016</td>\n\n          <td>10/01/2014</td>\n          <td>03/01/2014</td>\n          <td>22/01/2014</td>\n\n          <td>18/01/2016</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n      </tbody>\n    </table>\n\n  </body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-events.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n\t\t$('table').footable();\n\t  \n\t\t//THIS IS THE WRONG WAY TO DO IT\n\t\t//$('.bind-to-me').click(function() {\n\t\t//\talert('you clicked me!');\n\t\t//});\t\t\t\n\t\t\n\t\t//RATHER BIND USING ON\n\t\t$('table').on('click', '.bind-to-me', function() {\n\t\t\talert('you clicked me!');\n\t\t});\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-enter-disabled.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <form action=\"\" method=\"get\" name=\"dummy-form\">\n    <table data-filter=\"#filter\" data-filter-disable-enter=\"true\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    </form>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n      \n      $('.clear-filter').click(function (e) {\n        e.preventDefault();\n        $('table').trigger('footable_clear_filter');\n      });\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981 <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-via-events.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n\t  \n\t    $('.clear-filter').click(function(e) {\n\t\t    e.preventDefault();\n\t\t    $('table').trigger('footable_clear_filter');\n\t    });\n\t\t\n\t\t$('.do-filter').click(function(e) {\n\t\t\te.preventDefault();\n\t\t\t$('#filter').val($(this).text());\n\t\t\t$('table').trigger('footable_filter', {filter : $(this).text()} );\n\t\t});\n\t  \n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. <a href=\"#filter\" class=\"do-filter\">jun</a>, <a href=\"#filter\" class=\"do-filter\">elec</a>, <a href=\"#filter\" class=\"do-filter\">1981</a> - <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n\t  \n\t    $('.clear-filter').click(function(e) {\n\t\t    e.preventDefault();\n\t\t    $('table').trigger('footable_clear_filter');\n\t    });\n\t  \n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981 <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-group-headers.htm",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title></title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n    <style>\n      .test-class { background-color: #5BFF82; }\n    </style>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr class=\"footable-group-row\">\n          <th data-group=\"group1\" colspan=\"4\">Group 1</th>\n          <th data-group=\"group2\" colspan=\"5\">Group 2</th>\n          <th data-group=\"group3\" colspan=\"2\">Group 3</th>\n        </tr>\n        <tr>\n          <th data-group=\"group1\" colspan=\"3\" data-hide=\"phone\" data-ignore=\"true\" data-sort-ignore=\"true\"></th>\n          <th data-group=\"group1\">ID</th>\n          <th data-group=\"group2\">Date 1</th>\n          <th data-group=\"group2\" data-hide=\"phone\" colspan=\"3\" data-sort-match=\"2\" data-names=\"Date 2,Date 3,Date 4\" data-class=\"test-class\">Dates 2, 3, 4 (Sorts on 3)</th>\n          <th data-group=\"group2\" data-hide=\"phone\">Date 5</th>\n          <th data-group=\"group3\" data-hide=\"phone,tablet\">Note</th>\n          <th data-group=\"group3\" data-hide=\"phone,tablet\">Section</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>2</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-003</td>\n          <td>03/01/2014</td>\n\n          <td>10/01/2016</td>\n          <td>01/01/2014</td>\n          <td>23/01/2014</td>\n\n          <td>18/01/2014</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>3</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-001</td>\n          <td>03/01/2015</td>\n\n          <td>10/01/2015</td>\n          <td>02/01/2014</td>\n          <td>24/01/2014</td>\n\n          <td>18/01/2015</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>1</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-002</td>\n          <td>03/01/2016</td>\n\n          <td>10/01/2014</td>\n          <td>03/01/2014</td>\n          <td>22/01/2014</td>\n\n          <td>18/01/2016</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n      </tbody>\n    </table>\n\n  </body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination-multiple.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table id=\"table1\" class=\"footable\" data-page-navigation=\"#pagination1\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination1\" class=\"footable-nav\"><span>Pages:</span></ul>\n\t\n\t\n    <table id=\"table2\" class=\"footable\" data-page-navigation=\"#pagination2\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination2\" class=\"footable-nav\"><span>Pages:</span></ul>\t\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\" data-page-navigation=\"#pagination\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>\n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            <span title=\"table sorted by this column on load\">First Name</span>\n          </th>\n          <th data-hide=\"default\" data-sort-ignore=\"true\">\n            <span title=\"sorting disabled on this column\">Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            <span title=\"table sorted by this column on load\">First Name</span>\n          </th>\n          <th data-hide=\"default\" data-sort-ignore=\"true\">\n            <span title=\"sorting disabled on this column\">Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-toc.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <style type=\"text/css\">\n    .footable-row-detail-inner ul { padding:0 20px; margin:0; }\n    .footable tbody { display:none; }\n    .footable tfoot tr td { padding:10px; text-align:center; }\n  </style>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      setTimeout(function() {\n        $('table').footable({\n          createDetail: function (element, data) {  //creates the contents of the detail row\n            for (var i = 0; i < data.length; i++) {\n              element.append(data[i].display);\n            }\n          },\n        });\n      }, 2000);\n    });\n  </script>\n</head>\n  <body>\n\t<div style=\"width:320px\">\n\t\t<table class=\"footable\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t  <th data-class=\"expand\">\n\t\t\t\tChapter\n\t\t\t  </th>\n\t\t\t  <th data-hide=\"default,phone,tablet\">\n\t\t\t\tSections\n\t\t\t  </th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t  <tbody data-init=\"show\">\n\t\t\t<tr><td>Getting Started</td><td><ul><li>Your First FooTable</li><li>Options</li><li>Configuration via Data Attributes</li></ul></td></tr>\n\t\t\t<tr><td>Sorting Plugin</td><td><ul><li>How to setup</li><li>Sorting Options</li><li>Data Attributes</li><li>Styling</li></ul></td></tr>\n\t\t\t<tr><td>Extend FooTable</td><td></td></tr>\n\t\t  </tbody>\n\t\t  <tfoot data-init=\"hide\">\n\t\t\t<tr>\n\t\t\t  <td colspan=\"2\">2 seconds to load data...</td>\n\t\t\t</tr>\n\t\t  </tfoot>\n\t\t</table>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-widthHeightOverride.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title>FooTable - jQuery plugin for responsive HTML tables</title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable({\n\t\t\t\t\tcalculateWidthAndHeightOverride:function($table, info) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar parentWidth = $table.parent().width();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (info.viewportWidth < info.width) info.width = info.viewportWidth;\n\t\t\t\t\t\tif (info.viewportHeight < info.height) info.height = info.viewportHeight;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (parentWidth < info.width) info.width = parentWidth;\n\n\t\t\t\t\t\treturn info;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('a.resize').click(function() {\n\t\t\t\t\tvar w = $(this).data('size');\n\t\t\t\t\t$('.footable-container').css({width:w});\n\t\t\t\t\t$('table')[0].footable.resize();\n\t\t\t\t});\n      });\n    </script>\n  </head>\n  <body>\n\t\t<a href=\"#300px\" data-size=\"300px\" class=\"resize\">300px</a>\n\t\t<a href=\"#768px\" data-size=\"768px\" class=\"resize\">768px</a>\n\t\t<a href=\"#100%\" data-size=\"100%\" class=\"resize\">100%</a>\n\t\t<div style=\"width:100%\" class=\"footable-container\">\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a href=\"#\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a href=\"#\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a href=\"#\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a href=\"#\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-with-bootstrap.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap-responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <style type=\"text/css\">\n\tbody { margin:30px; }\n  </style>\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"bootstrap/bootstrap-tab.js\" type=\"text/javascript\"></script>\n  \n  <script type=\"text/javascript\">\n    $(function() {\n\t\t$('table').footable();\n\t  \n\t\t$('#myTab a').click(function (e) {\n\t\t\te.preventDefault();\n\t\t\t$(this).tab('show');\n\t\t}).on('shown', function (e) {\t\n\t\t\t$('.tab-pane.active table').trigger('footable_resize');\n\t\t});\n    });\n  </script>\n</head>\n  <body>\n\t<ul class=\"nav nav-tabs\" id=\"myTab\">\n\t\t<li class=\"active\"><a href=\"#table1\">Leads</a></li>\n\t\t<li><a href=\"#table2\">Contacts</a></li>\n\t\t<li><a href=\"#table3\">Messages</a></li>\n\t\t<li><a href=\"#table4\">Settings</a></li>\n\t</ul>\n\n\t<div class=\"tab-content\">\n\t\t<div class=\"tab-pane active\" id=\"table1\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\t\t\n\t\t<div class=\"tab-pane\" id=\"table2\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\n\t\t<div class=\"tab-pane\" id=\"table3\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\n\t\t<div class=\"tab-pane\" id=\"table4\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\t\t\n\t</div>\n  \n  \n  \n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo-zebra.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable().find('> tbody > tr:not(.footable-row-detail):nth-child(even)').addClass('zebra');\n    });\n  </script>\n  <style type=\"text/css\">\n    .footable tbody tr.zebra {\n      background:#fee;\n    }\n  </style>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(20);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(20);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo2.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title>FooTable - jQuery plugin for responsive HTML tables</title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a href=\"#\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a href=\"#\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a href=\"#\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a href=\"#\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo3.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra1\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra2\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra3\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra4\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra5\n          </th>               \n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(50, 5);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/demo4.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"all\">\n            Job Title\n          </th>\n          <th data-hide=\"all\">\n            DOB\n          </th>\n          <th data-hide=\"all\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(50);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/footable.jquery.json",
    "content": "{\n    \"name\": \"footable\",\n    \"title\": \"FooTable\",\n    \"description\": \"jQuery plugin to make HTML tables responsive\",\n    \"keywords\": [\n        \"table\",\n        \"responsive\"\n    ],\n    \"version\": \"0.1.0\",\n    \"author\": {\n        \"name\": \"FooPlugins\",\n        \"url\": \"http://fooplugins.com\"\n    },\n    \"maintainers\": [\n        {\n            \"name\": \"Steven Usher\",\n            \"email\": \"steveush@gmail.com\",\n            \"url\": \"http://gnarf.net\"\n        },\n        {\n            \"name\": \"Brad Vincent\",\n            \"email\": \"bradvin@gmail.com\",\n            \"url\": \"http://themergency.com\"\n        }\n    ],\n    \"licenses\": [\n        {\n            \"type\": \"MIT\",\n            \"url\": \"https://github.com/bradvin/FooTable/blob/master/LICENSE\"\n        }\n    ],\n    \"bugs\": \"https://github.com/bradvin/FooTable/issues\",\n    \"homepage\": \"http://themergency.com/footable/\",\n    \"docs\": \"https://github.com/bradvin/FooTable\",\n    \"download\": \"https://github.com/bradvin/FooTable/archive/master.zip\",\n    \"dependencies\": {\n        \"jquery\": \">=1.4.4\"\n    }\n}"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/data-generator.js",
    "content": "﻿(function(w, undefined) {\n  var firstNames = ['Elodia', 'Sephnie', 'Maxine', 'Claudine', 'Londa', 'Gwyn', 'Consuelo', 'Mariko', 'Lashanda', 'Jesusa', 'Bernie', 'Annamaria', 'Muriel', 'Nikia', 'Margene', 'Lorraine', 'Annemarie', 'Rayna', 'Anonina', 'Carie', 'Gran', 'Jua', 'Jacqulyn', 'Whiney', 'Renaa', 'Usha', 'Annea', 'Jack', 'Chun', 'Eddy', 'Isidra', 'Myesha', 'Ami', 'Easer', 'Karon', 'Granville', 'Maria', 'Shenia', 'Solomon', 'Marquia', 'Charles', 'Neie', 'Beariz', 'Humbero', 'Rigobero', 'Lamon', 'Rivka', 'Phoebe', 'Renea', 'Celia', 'Shay', 'Sanford', 'Gwen', 'Lizzee', 'Lucila', 'Alice', 'Lauri', 'Desmond', 'Raeann', 'Rona', 'Jason', 'Lilian', 'Karena', 'Dennise', 'Delana', 'Rheba', 'Doy', 'Dolly', 'Venice', 'Dalene', 'Cyndy', 'Ilona', 'Lakeshia', 'Laurena', 'Lorriane', 'Kaci', 'Velve', 'Maple', 'Maire', 'Marline', 'Bar', 'Nelly', 'Shona', 'Karole', 'Judi', 'Ardelia', 'Alonzo', 'Junie', 'Alvina', 'Ilda'];\n  var lastNames = ['Ortego', 'Landa', 'Piermarini', 'Valles', 'Lusher', 'Branco', 'Falls', 'Hallett', 'Nicley', 'Cambareri', 'Han', 'Edwin', 'Lan', 'Dauenhauer', 'Cerrone', 'Matsumura', 'Mosher', 'Dragoo', 'Robare', 'Judon', 'Kyger', 'Bonk', 'Mcgaughy', 'Mcfetridge', 'Maxton', 'Roling', 'Klotz', 'Boudreaux', 'Hayton', 'Leonardo', 'Schug', 'Dewitt', 'Wohlwend', 'Hoos', 'Pennock', 'Sprinkle', 'Weick', 'Gilliland', 'Resler', 'Badgett', 'Bittinger', 'Letts', 'Bottom', 'Hibler', 'Fuhrman', 'Lewis', 'Moudy', 'Goyette', 'Difranco', 'Kyles', 'Sluss', 'Bruening', 'Halladay', 'Leinen', 'Leister', 'Morgado', 'Wadkins', 'Yingst', 'Hyland', 'Carasco', 'Stever', 'Weisz', 'Woldt', 'Leak', 'Sinclair', 'Heinen', 'Furniss', 'Hosler', 'Shumpert', 'Keasler', 'Stgelais', 'Landers', 'Hogle', 'Ates', 'Vanatta', 'Goodlow', 'Haner', 'Yaple', 'Lamark', 'Cataldo', 'Smelcer', 'Marco', 'Quaranta', 'Cooke', 'Ardrey', 'Guilford', 'Polo', 'Sprouse', 'Gaffney', 'Lafromboise'];\n  var jobTitles = ['Language Translator', 'Propeller-Driven Airplane Mechanic', 'Work Ticket Distributor', 'Pipe Organ Technician', 'LAN Systems Administrator', 'Employment Clerk', 'Electrical Lineworker', 'Serials Librarian', 'Technical Services Librarian', 'Blackjack Supervisor', 'Pulpwood Cutter', 'Military Science Teacher', 'Missile Pad Mechanic', 'Psychology Professor', 'Scene and Lighting Design Lecturer', 'Internet Marketing Manager', 'Business Services Sales Representative', 'Assistant Corporation Counsel', 'Photocopying Equipment Repairer', 'Post-Anesthesia Care Unit Nurse', 'Animal Husbandry Manager', 'Electrical Engineering Director', 'Drag Car Racer', 'Auto Detailer', 'Childrens Pastor', 'Strawberry Sorter', 'Geophysicist', 'Financial Accountant', 'Crown and Bridge Technician', 'Jig Bore Tool Maker', 'Union Representative', 'High School Librarian', 'High School History Teacher', 'Beveling and Edging Machine Operator', 'Roller Skater', 'Wallpaperer Helper', 'Childcare Center Administrator', 'Ordnance Engineer', 'Industrial Waste Treatment Technician', 'Airline Transport Pilot', 'Window Trimmer', 'Garment Presser', 'State Archivist', 'Die Designer', 'Ventriloquist', 'Calculus Professor', 'Technical Writer', 'Meat Packager', 'Automobile Body Painter', 'Aircraft Landing Gear Inspector', 'Fashion Designer', 'Drywall Stripper', 'Clown', 'National Association for Stock Car Auto Racing Driver', 'Staff Electronic Warfare Officer', 'Hydroelectric Machinery Mechanic', 'Clinical Services Director', 'Traffic Court Referee', 'Internal Medicine Nurse Practitioner', 'Horticulture Instructor', 'Ships Electronic Warfare Officer', 'Broadcast Maintenance Engineer', 'Weight Training Instructor', 'Potato Sorter', 'Appliance Parts Counter Clerk', 'Body Shop Supervisor', 'Accounts Collector', 'Commercial Lender', 'Scale Clerk', 'Obstetrician/Gynecologist', 'Gaming Cage Cashier', 'Fresco Artist', 'Youth Pastor', 'Parachute Officer', 'Geophysical Engineer', 'Route Sales Person', 'Master of Ceremonies', 'Cloak Room Attendant', 'Gas Main Fitter', 'Religious Activities Director', 'Hemodialysis Technician', 'Telephone Lines Repairer', 'Periodontist', 'Wood Fence Installer', 'Offbearer', 'Aviation Tactical Readiness Officer', 'Biology Laboratory Assistant', 'Emergency Room Orderly', 'Magician', 'Dog Trainer'];\n  var statuses = [{ 'name': 'Active', 'value': 1 }, { 'name': 'Disabled', 'value': 2 }, { 'name': 'Suspended', 'value': 3 }];\n  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n  function randomDate() {\n    var start = new Date(1960, 0, 1), end = new Date(1994, 0, 1);\n    return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n  }\n\n  w.generateRows = function(rows, extraCols) {\n    rows = rows || 100;\n    extraCols = extraCols || 0;\n    for (var i = 0; i < rows; i++) {\n      var data = {\n        firstName: firstNames[Math.floor(Math.random() * firstNames.length)],\n        lastName: lastNames[Math.floor(Math.random() * lastNames.length)],\n        jobTitle: jobTitles[Math.floor(Math.random() * jobTitles.length)],\n        status: statuses[Math.floor(Math.random() * statuses.length)],\n        dob: randomDate()\n      };\n      var row = '<tr>';\n      //row += '<td class=\"expand\"></td>';\n      row += '<td>' + data.firstName + '</td>';\n      row += '<td>' + data.lastName + '</td>';\n      row += '<td>' + data.jobTitle + '</td>';\n      row += '<td data-value=\"' + data.dob.getTime() + '\">' + data.dob.getDate() + ' ' + months[data.dob.getMonth()] + ' ' + data.dob.getFullYear() +'</td>';\n      row += '<td data-value=\"' + data.status.value + '\">' + data.status.name + '</td>';\n      for (var j = 0; j < extraCols; j++) {\n        row += '<td>' + (i+1) + '.' + (j+1) + '</td>';\n      }\n      row += '</tr>';\n      document.writeln(row);\n    }\n  };\n})(window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.filter.js",
    "content": "(function ($, w, undefined) {\n  if (w.footable == undefined || w.footable == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var jQversion = w.footable.version.parse($.fn.jquery);\n  if (jQversion.major == 1 && jQversion.minor < 8) { // For older versions of jQuery, anything below 1.8\n    $.expr[':'].ftcontains = function (a, i, m) {\n      return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;\n    };\n  } else { // For jQuery 1.8 and above\n    $.expr[':'].ftcontains = $.expr.createPseudo(function (arg) {\n      return function (elem) {\n\t  var text = $(elem).find('td').text();\n\t  var data = $(elem).find('td[data-value]').each(function() {\n\t\ttext += $(this).data('value');\n\t  });\n        return text.toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n      };\n    });\n  }\n\n  var defaults = {\n    filter: {\n      enabled: true,\n      input: '.footable-filter',\n      timeout: 300,\n      minimum: 2,\n      disableEnter: false\n    }\n  };\n\n  function Filter() {\n    var p = this;\n    p.name = 'Footable Filter';\n    p.init = function (ft) {\n      if (ft.options.filter.enabled == true) {\n        ft.timers.register('filter');\n        $(ft.table).bind({\n          'footable_initialized': function (e) {\n            var $table = $(e.ft.table);\n            var data = {\n              'input': $table.data('filter') || e.ft.options.filter.input,\n              'timeout': $table.data('filter-timeout') || e.ft.options.filter.timeout,\n              'minimum': $table.data('filter-minimum') || e.ft.options.filter.minimum,\n              'disableEnter': $table.data('filter-disable-enter') || e.ft.options.filter.disableEnter\n            };\n            if (data.disableEnter) {\n              $(data.input).keypress(function (event) {\n                if (window.event)\n                  return (window.event.keyCode != 13);\n                else\n                  return (event.which != 13);\n              });\n            }\n            $table.bind('footable_clear_filter', function () {\n              $(data.input).val('');\n              p.clearFilter(e.ft);\n            });\n            $table.bind('footable_filter', function (event, args) {\n\t\t\t\tp.filter(e.ft, args.filter);\n            });\n            $(data.input).keyup(function (eve) {\n              e.ft.timers.filter.stop();\n              if (eve.which == 27) { $(data.input).val(''); }\n              e.ft.timers.filter.start(function () {\n                e.ft.raise('footable_filtering');\n                var val = $(data.input).val() || '';\n                p.filter(e.ft, val);\n              }, data.timeout);\n            });\n          }\n        });\n      }\n    };\n\t\n\tp.filter = function(ft, filterString) {\n\t\tvar $table = $(ft.table);\n\t\tvar minimum = $table.data('filter-minimum') || ft.options.filter.minimum;\n\t\tif (!filterString || filterString.length < minimum) {\n\t\t\tp.clearFilter(ft);\n\t\t} else {\n\t\t\tvar filters = filterString.split(' ');\n\t\t\t$table.find('> tbody > tr').hide().addClass('footable-filtered');\n\t\t\tvar rows = $table.find('> tbody > tr:not(.footable-row-detail)');\n\t\t\t$.each(filters, function (i, f) {\n\t\t\t\tif (f && f.length)\n\t\t\t\t\trows = rows.filter('*:ftcontains(\"' + f + '\")');\n\t\t\t});\n\t\t\trows.each(function () {\n\t\t\t\tp.showRow(this, ft);\n\t\t\t\t$(this).removeClass('footable-filtered');\n\t\t\t});\n\t\t\tft.raise('footable_filtered', { filter : filterString });\n\t\t}\t\t\n\t};\n\n    p.clearFilter = function (ft) {\n      $(ft.table).find('> tbody > tr:not(.footable-row-detail)').removeClass('footable-filtered').each(function () {\n        p.showRow(this, ft);\n      });\n      ft.raise('footable_filtered', { cleared : true });\n    };\n\n    p.showRow = function (row, ft) {\n      var $row = $(row), $next = $row.next(), $table = $(ft.table);\n      if ($row.is(':visible')) return; //already visible - do nothing\n      if ($table.hasClass('breakpoint') && $row.hasClass('footable-detail-show') && $next.hasClass('footable-row-detail')) {\n        $row.add($next).show();\n        ft.createOrUpdateDetailRow(row);\n      }\n      else $row.show();\n    };\n  };\n\n  w.footable.plugins.register(new Filter(), defaults);\n\n})(jQuery, window);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.js",
    "content": "﻿/*!\n * FooTable - Awesome Responsive Tables\n * Version : 0.5\n * http://themergency.com/footable\n *\n * Requires jQuery - http://jquery.com/\n *\n * Copyright 2012 Steven Usher & Brad Vincent\n * Released under the MIT license\n * You are free to use FooTable in commercial projects as long as this copyright header is left intact.\n *\n * Date: 22 Apr 2013\n */\n(function ($, w, undefined) {\n    w.footable = {\n        options: {\n            delay: 100, // The number of millseconds to wait before triggering the react event\n            breakpoints: { // The different screen resolution breakpoints\n                phone: 480,\n                tablet: 1024\n            },\n            parsers: {  // The default parser to parse the value out of a cell (values are used in building up row detail)\n                alpha: function (cell) {\n                    return $(cell).data('value') || $.trim($(cell).text());\n                }\n            },\n            calculateWidthAndHeightOverride: null,\n            toggleSelector: ' > tbody > tr:not(.footable-row-detail)', //the selector to show/hide the detail row\n            columnDataSelector: '> thead > tr:last-child > th, > thead > tr:last-child > td', //the selector used to find the column data in the thead\n            createDetail: function (element, data) {\n                /// <summary>This function is used by FooTable to generate the detail view seen when expanding a collapsed row.</summary>\n                /// <param name=\"element\">This is the div that contains all the detail row information, anything could be added to it.</param>\n                /// <param name=\"data\">\n                ///  This is an array of objects containing the cell information for the current row.\n                ///  These objects look like the below:\n                ///    obj = {\n                ///      'name': String, // The name of the column\n                ///      'value': Object, // The value parsed from the cell using the parsers. This could be a string, a number or whatever the parser outputs.\n                ///      'display': String, // This is the actual HTML from the cell, so if you have images etc you want moved this is the one to use and is the default value used.\n                ///      'group': String, // This is the identifier used in the data-group attribute of the column.\n                ///      'groupName': String // This is the actual name of the group the column belongs to.\n                ///    }\n                /// </param>\n\n                var groups = { '_none': { 'name': null, 'data': [] } };\n                for (var i = 0; i < data.length; i++) {\n                    var groupid = data[i].group;\n                    if (groupid != null) {\n                        if (!(groupid in groups))\n                            groups[groupid] = { 'name': data[i].groupName, 'data': [] };\n\n                        groups[groupid].data.push(data[i]);\n                    } else {\n                        groups._none.data.push(data[i]);\n                    }\n                }\n\n                for (var group in groups) {\n                    if (groups[group].data.length == 0) continue;\n                    if (group != '_none') element.append('<h4>' + groups[group].name + '</h4>');\n\n                    for (var j = 0; j < groups[group].data.length; j++) {\n                        var separator = (groups[group].data[j].name) ? ':' : '';\n                        element.append('<div><strong>' + groups[group].data[j].name + '</strong> ' + separator + ' ' + groups[group].data[j].display + '</div>');\n                    }\n                }\n            },\n            classes: {\n                loading: 'footable-loading',\n                loaded: 'footable-loaded',\n                sorted: 'footable-sorted',\n                descending: 'footable-sorted-desc',\n                indicator: 'footable-sort-indicator'\n            },\n            debug: false // Whether or not to log information to the console.\n        },\n\n        version: {\n            major: 0, minor: 5,\n            toString: function () {\n                return w.footable.version.major + '.' + w.footable.version.minor;\n            },\n            parse: function (str) {\n                version = /(\\d+)\\.?(\\d+)?\\.?(\\d+)?/.exec(str);\n                return {\n                    major: parseInt(version[1]) || 0,\n                    minor: parseInt(version[2]) || 0,\n                    patch: parseInt(version[3]) || 0\n                };\n            }\n        },\n\n        plugins: {\n            _validate: function (plugin) {\n                ///<summary>Simple validation of the <paramref name=\"plugin\"/> to make sure any members called by Foobox actually exist.</summary>\n                ///<param name=\"plugin\">The object defining the plugin, this should implement a string property called \"name\" and a function called \"init\".</param>\n\n                if (typeof plugin['name'] !== 'string') {\n                    if (w.footable.options.debug == true) console.error('Validation failed, plugin does not implement a string property called \"name\".', plugin);\n                    return false;\n                }\n                if (!$.isFunction(plugin['init'])) {\n                    if (w.footable.options.debug == true) console.error('Validation failed, plugin \"' + plugin['name'] + '\" does not implement a function called \"init\".', plugin);\n                    return false;\n                }\n                if (w.footable.options.debug == true) console.log('Validation succeeded for plugin \"' + plugin['name'] + '\".', plugin);\n                return true;\n            },\n            registered: [], // An array containing all registered plugins.\n            register: function (plugin, options) {\n                ///<summary>Registers a <paramref name=\"plugin\"/> and its default <paramref name=\"options\"/> with Foobox.</summary>\n                ///<param name=\"plugin\">The plugin that should implement a string property called \"name\" and a function called \"init\".</param>\n                ///<param name=\"options\">The default options to merge with the Foobox's base options.</param>\n\n                if (w.footable.plugins._validate(plugin)) {\n                    w.footable.plugins.registered.push(plugin);\n                    if (options != undefined && typeof options === 'object') $.extend(true, w.footable.options, options);\n                    if (w.footable.options.debug == true) console.log('Plugin \"' + plugin['name'] + '\" has been registered with the Foobox.', plugin);\n                }\n            },\n            init: function (instance) {\n                ///<summary>Loops through all registered plugins and calls the \"init\" method supplying the current <paramref name=\"instance\"/> of the Foobox as the first parameter.</summary>\n                ///<param name=\"instance\">The current instance of the Foobox that the plugin is being initialized for.</param>\n\n                for (var i = 0; i < w.footable.plugins.registered.length; i++) {\n                    try {\n                        w.footable.plugins.registered[i]['init'](instance);\n                    } catch (err) {\n                        if (w.footable.options.debug == true) console.error(err);\n                    }\n                }\n            }\n        }\n    };\n\n    var instanceCount = 0;\n\n    $.fn.footable = function (options) {\n        ///<summary>The main constructor call to initialize the plugin using the supplied <paramref name=\"options\"/>.</summary>\n        ///<param name=\"options\">\n        ///<para>A JSON object containing user defined options for the plugin to use. Any options not supplied will have a default value assigned.</para>\n        ///<para>Check the documentation or the default options object above for more information on available options.</para>\n        ///</param>\n\n        options = options || {};\n        var o = $.extend(true, {}, w.footable.options, options); //merge user and default options\n        return this.each(function () {\n            instanceCount++;\n            this.footable = new Footable(this, o, instanceCount);\n        });\n    };\n\n    //helper for using timeouts\n    function Timer() {\n        ///<summary>Simple timer object created around a timeout.</summary>\n        var t = this;\n        t.id = null;\n        t.busy = false;\n        t.start = function (code, milliseconds) {\n            ///<summary>Starts the timer and waits the specified amount of <paramref name=\"milliseconds\"/> before executing the supplied <paramref name=\"code\"/>.</summary>\n            ///<param name=\"code\">The code to execute once the timer runs out.</param>\n            ///<param name=\"milliseconds\">The time in milliseconds to wait before executing the supplied <paramref name=\"code\"/>.</param>\n\n            if (t.busy) {\n                return;\n            }\n            t.stop();\n            t.id = setTimeout(function () {\n                code();\n                t.id = null;\n                t.busy = false;\n            }, milliseconds);\n            t.busy = true;\n        };\n        t.stop = function () {\n            ///<summary>Stops the timer if its runnning and resets it back to its starting state.</summary>\n\n            if (t.id != null) {\n                clearTimeout(t.id);\n                t.id = null;\n                t.busy = false;\n            }\n        };\n    };\n\n    function Footable(t, o, id) {\n        ///<summary>Inits a new instance of the plugin.</summary>\n        ///<param name=\"t\">The main table element to apply this plugin to.</param>\n        ///<param name=\"o\">The options supplied to the plugin. Check the defaults object to see all available options.</param>\n        ///<param name=\"id\">The id to assign to this instance of the plugin.</param>\n\n        var ft = this;\n        ft.id = id;\n        ft.table = t;\n        ft.options = o;\n        ft.breakpoints = [];\n        ft.breakpointNames = '';\n        ft.columns = {};\n\n        var opt = ft.options;\n        var cls = opt.classes;\n        var indexOffset = 0;\n\n        // This object simply houses all the timers used in the footable.\n        ft.timers = {\n            resize: new Timer(),\n            register: function (name) {\n                ft.timers[name] = new Timer();\n                return ft.timers[name];\n            }\n        };\n\n        w.footable.plugins.init(ft);\n\n        ft.init = function () {\n            var $window = $(w), $table = $(ft.table);\n\n            if ($table.hasClass(cls.loaded)) {\n                //already loaded FooTable for the table, so don't init again\n                ft.raise('footable_already_initialized');\n                return;\n            }\n\n            $table.addClass(cls.loading);\n\n            // Get the column data once for the life time of the plugin\n            $table.find(opt.columnDataSelector).each(function () {\n                var data = ft.getColumnData(this);\n                ft.columns[data.index] = data;\n\n                if (data.className != null) {\n                    var selector = '', first = true;\n                    $.each(data.matches, function (m, match) { //support for colspans\n                        if (!first) {\n                            selector += ', ';\n                        }\n                        selector += '> tbody > tr:not(.footable-row-detail) > td:nth-child(' + (parseInt(match) + 1) + ')';\n                        first = false;\n                    });\n                    //add the className to the cells specified by data-class=\"blah\"\n                    $table.find(selector).not('.footable-cell-detail').addClass(data.className);\n                }\n            });\n\n            // Create a nice friendly array to work with out of the breakpoints object.\n            for (var name in opt.breakpoints) {\n                ft.breakpoints.push({ 'name': name, 'width': opt.breakpoints[name] });\n                ft.breakpointNames += (name + ' ');\n            }\n\n            // Sort the breakpoints so the smallest is checked first\n            ft.breakpoints.sort(function (a, b) {\n                return a['width'] - b['width'];\n            });\n\n            //bind the toggle selector click events\n            ft.bindToggleSelectors();\n\n            ft.raise('footable_initializing');\n\n            $table.bind('footable_initialized', function () {\n                //resize the footable onload\n                ft.resize();\n\n                //remove the loading class\n                $table.removeClass(cls.loading);\n\n                //hides all elements within the table that have the attribute data-hide=\"init\"\n                //what does this do? LOL\n                $table.find('[data-init=\"hide\"]').hide();\n                $table.find('[data-init=\"show\"]').show();\n\n                //add the loaded class\n                $table.addClass(cls.loaded);\n            });\n\n            $table.bind('footable_resize', function () {\n                ft.resize();\n            });\n\n            $window\n                .bind('resize.footable', function () {\n                    ft.timers.resize.stop();\n                    ft.timers.resize.start(function () {\n                        ft.resize();\n                    }, opt.delay);\n                });\n\n            ft.raise('footable_initialized');\n        };\n\n        //moved this out into it's own function so that it can be called from other add-ons\n        ft.bindToggleSelectors = function () {\n            var $table = $(ft.table);\n            $table.find(opt.toggleSelector).unbind('click.footable').bind('click.footable', function (e) {\n                if ($table.is('.breakpoint') && $(e.target).is('td')) {\n                    var $row = $(this).is('tr') ? $(this) : $(this).parents('tr:first');\n                    ft.toggleDetail($row.get(0));\n                }\n            });\n        };\n\n        ft.parse = function (cell, column) {\n            var parser = opt.parsers[column.type] || opt.parsers.alpha;\n            return parser(cell);\n        };\n\n        ft.getColumnData = function (th) {\n            var $th = $(th), hide = $th.data('hide'), index = $th.index();\n            hide = hide || '';\n            hide = hide.split(',');\n            var data = {\n                'index': index,\n                'hide': { },\n                'type': $th.data('type') || 'alpha',\n                'name': $.trim($th.data('name') || $th.text()),\n                'ignore': $th.data('ignore') || false,\n                'className': $th.data('class') || null,\n                'matches': [],\n                'names': { },\n                'group': $th.data('group') || null,\n                'groupName': null\n            };\n\n            if (data.group != null) {\n                var $group = $(ft.table).find('> thead > tr.footable-group-row > th[data-group=\"' + data.group + '\"], > thead > tr.footable-group-row > td[data-group=\"' + data.group + '\"]').first();\n                data.groupName = ft.parse($group, { 'type': 'alpha' });\n            }\n\n            var pcolspan = parseInt($th.prev().attr('colspan') || 0);\n            indexOffset += pcolspan > 1 ? pcolspan - 1 : 0;\n            var colspan = parseInt($th.attr('colspan') || 0), curindex = data.index + indexOffset;\n            if (colspan > 1) {\n                var names = $th.data('names');\n                names = names || '';\n                names = names.split(',');\n                for (var i = 0; i < colspan; i++) {\n                    data.matches.push(i + curindex);\n                    if (i < names.length) data.names[i + curindex] = names[i];\n                }\n            } else {\n                data.matches.push(curindex);\n            }\n\n            data.hide['default'] = ($th.data('hide') === \"all\") || ($.inArray('default', hide) >= 0);\n\n            for (var name in opt.breakpoints) {\n                data.hide[name] = ($th.data('hide') === \"all\") || ($.inArray(name, hide) >= 0);\n            }\n            var e = ft.raise('footable_column_data', { 'column': { 'data': data, 'th': th } });\n            return e.column.data;\n        };\n\n        ft.getViewportWidth = function () {\n            return window.innerWidth || (document.body ? document.body.offsetWidth : 0);\n        };\n\n        ft.getViewportHeight = function () {\n            return window.innerHeight || (document.body ? document.body.offsetHeight : 0);\n        };\n\n        ft.calculateWidthAndHeight = function ($table, info) {\n            if (jQuery.isFunction(opt.calculateWidthAndHeightOverride)) {\n                return opt.calculateWidthAndHeightOverride($table, info);\n            }\n            if (info.viewportWidth < info.width) info.width = info.viewportWidth;\n            if (info.viewportHeight < info.height) info.height = info.viewportHeight;\n\n            return info;\n        };\n\n        ft.hasBreakpointColumn = function (breakpoint) {\n            for (var c in ft.columns) {\n                if (ft.columns[c].hide[breakpoint]) {\n                    return true;\n                }\n            }\n            return false;\n        };\n\n        ft.resize = function () {\n            var $table = $(ft.table);\n            var info = {\n                'width': $table.width(),                  //the table width\n                'height': $table.height(),                //the table height\n                'viewportWidth': ft.getViewportWidth(),   //the width of the viewport\n                'viewportHeight': ft.getViewportHeight(), //the width of the viewport\n                'orientation': null\n            };\n            info.orientation = info.viewportWidth > info.viewportHeight ? 'landscape' : 'portrait';\n\n            info = ft.calculateWidthAndHeight($table, info);\n\n            var pinfo = $table.data('footable_info');\n            $table.data('footable_info', info);\n            ft.raise('footable_resizing', { 'old': pinfo, 'info': info });\n\n            // This (if) statement is here purely to make sure events aren't raised twice as mobile safari seems to do\n            if (!pinfo || ((pinfo && pinfo.width && pinfo.width != info.width) || (pinfo && pinfo.height && pinfo.height != info.height))) {\n                var current = null, breakpoint;\n                for (var i = 0; i < ft.breakpoints.length; i++) {\n                    breakpoint = ft.breakpoints[i];\n                    if (breakpoint && breakpoint.width && info.width <= breakpoint.width) {\n                        current = breakpoint;\n                        break;\n                    }\n                }\n\n                var breakpointName = (current == null ? 'default' : current['name']);\n\n                var hasBreakpointFired = ft.hasBreakpointColumn(breakpointName);\n\n                $table\n                    .removeClass('default breakpoint').removeClass(ft.breakpointNames)\n                    .addClass(breakpointName + (hasBreakpointFired ? ' breakpoint' : ''))\n                    .find('> thead > tr:last-child > th')\n                    .each(function () {\n                        var data = ft.columns[$(this).index()], selector = '', first = true;\n                        $.each(data.matches, function (m, match) {\n                            if (!first) {\n                                selector += ', ';\n                            }\n                            var count = match + 1;\n                            selector += '> tbody > tr:not(.footable-row-detail) > td:nth-child(' + count + ')';\n                            selector += ', > tfoot > tr:not(.footable-row-detail) > td:nth-child(' + count + ')';\n                            selector += ', > colgroup > col:nth-child(' + count + ')';\n                            first = false;\n                        });\n\n                        selector += ', > thead > tr[data-group-row=\"true\"] > th[data-group=\"' + data.group + '\"]';\n                        var $column = $table.find(selector).add(this);\n                        if (data.hide[breakpointName] == false) $column.show();\n                        else $column.hide();\n\n                        if ($table.find('> thead > tr.footable-group-row').length == 1) {\n                            var $groupcols = $table.find('> thead > tr:last-child > th[data-group=\"' + data.group + '\"]:visible, > thead > tr:last-child > th[data-group=\"' + data.group + '\"]:visible'),\n                                $group = $table.find('> thead > tr.footable-group-row > th[data-group=\"' + data.group + '\"], > thead > tr.footable-group-row > td[data-group=\"' + data.group + '\"]'),\n                                groupspan = 0;\n\n                            $.each($groupcols, function () {\n                                groupspan += parseInt($(this).attr('colspan') || 1);\n                            });\n\n                            if (groupspan > 0) $group.attr('colspan', groupspan).show();\n                            else $group.hide();\n                        }\n                    })\n                    .end()\n                    .find('> tbody > tr.footable-detail-show').each(function () {\n                        ft.createOrUpdateDetailRow(this);\n                    });\n\n                $table.find('> tbody > tr.footable-detail-show:visible').each(function () {\n                    var $next = $(this).next();\n                    if ($next.hasClass('footable-row-detail')) {\n                        if (!hasBreakpointFired) $next.hide();\n                        else $next.show();\n                    }\n                });\n\n                // adding .footable-first-column and .footable-last-column to the first and last th and td of each row in order to allow\n                // for styling if the first or last column is hidden (which won't work using :first-child or :last-child)\n                $table.find('> thead > tr > th.footable-last-column, > tbody > tr > td.footable-last-column').removeClass('footable-last-column');\n                $table.find('> thead > tr > th.footable-first-column, > tbody > tr > td.footable-first-column').removeClass('footable-first-column');\n                $table.find('> thead > tr, > tbody > tr')\n                    .find('> th:visible:last, > td:visible:last')\n                    .addClass('footable-last-column')\n                    .end()\n                    .find('> th:visible:first, > td:visible:first')\n                    .addClass('footable-first-column');\n\n                ft.raise('footable_breakpoint_' + breakpointName, { 'info': info });\n            }\n\n            ft.raise('footable_resized', { 'old': pinfo, 'info': info });\n        };\n\n        ft.toggleDetail = function (actualRow) {\n            var $row = $(actualRow),\n                created = ft.createOrUpdateDetailRow($row.get(0)),\n                $next = $row.next();\n\n            if (!created && $next.is(':visible')) {\n                $row.removeClass('footable-detail-show');\n                //only hide the next row if it's a detail row\n                if ($next.hasClass('footable-row-detail')) $next.hide();\n            } else {\n                $row.addClass('footable-detail-show');\n                $next.show();\n            }\n        };\n\n        ft.getColumnFromTdIndex = function (index) {\n            /// <summary>Returns the correct column data for the supplied index taking into account colspans.</summary>\n            /// <param name=\"index\">The index to retrieve the column data for.</param>\n            /// <returns type=\"json\">A JSON object containing the column data for the supplied index.</returns>\n            var result = null;\n            for (var column in ft.columns) {\n                if ($.inArray(index, ft.columns[column].matches) >= 0) {\n                    result = ft.columns[column];\n                    break;\n                }\n            }\n            return result;\n        };\n\n        ft.createOrUpdateDetailRow = function (actualRow) {\n            var $row = $(actualRow), $next = $row.next(), $detail, values = [];\n            if ($row.is(':hidden')) return false; //if the row is hidden for some readon (perhaps filtered) then get out of here\n            ft.raise('footable_rowdetailupdated', { 'row': $row, 'detail': $next });\n            $row.find('> td:hidden').each(function () {\n                var index = $(this).index(), column = ft.getColumnFromTdIndex(index), name = column.name;\n                if (column.ignore == true) return true;\n\n                if (index in column.names) name = column.names[index];\n                values.push({ 'name': name, 'value': ft.parse(this, column), 'display': $.trim($(this).html()), 'group': column.group, 'groupName': column.groupName });\n                return true;\n            });\n            if (values.length == 0) return false; //return if we don't have any data to show\n            var colspan = $row.find('> td:visible').length;\n            var exists = $next.hasClass('footable-row-detail');\n            if (!exists) { // Create\n                $next = $('<tr class=\"footable-row-detail\"><td class=\"footable-cell-detail\"><div class=\"footable-row-detail-inner\"></div></td></tr>');\n                $row.after($next);\n            }\n            $next.find('> td:first').attr('colspan', colspan);\n            $detail = $next.find('.footable-row-detail-inner').empty();\n            opt.createDetail($detail, values);\n            return !exists;\n        };\n\n        ft.raise = function (eventName, args) {\n            args = args || { };\n            var def = { 'ft': ft };\n            $.extend(true, def, args);\n            var e = $.Event(eventName, def);\n            if (!e.ft) {\n                $.extend(true, e, def);\n            } //pre jQuery 1.6 which did not allow data to be passed to event object constructor\n            $(ft.table).trigger(e);\n            return e;\n        };\n\n        ft.init();\n        return ft;\n    };\n})(jQuery, window);\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.paginate.js",
    "content": "(function ($, w, undefined) {\n    if (w.footable == undefined || w.footable == null)\n        throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n    var defaults = {\n        paginate: true,\n        pageSize: 10,\n        pageNavigation: '.footable-nav'\n    };\n\n    function pageInfo(ft) {\n        var $table = $(ft.table), $tbody = $table.find('> tbody');\n        this.pageNavigation = $table.data('page-navigation') || ft.options.pageNavigation;\n        this.pageSize = $table.data('page-size') || ft.options.pageSize;\n        this.currentPage = 0;\n        this.pages = [];\n    };\n\n    function Paginate() {\n        var p = this;\n        p.name = 'Footable Paginate';\n\n        p.init = function (ft) {\n            if (ft.options.paginate == true) {\n                $(ft.table).bind({\n                    'footable_initialized': function (e) {\n                        e.ft.pageInfo = new pageInfo(e.ft);\n\t\t\t\t\t\te.ft.raise('footable_setup_paging');\n                    },\n                    'footable_sorted footable_filtered footable_setup_paging': function () {\n                        p.setupPaging(ft);\n                    }\n                });\n            }\n        };\n\t\t\n\t\tp.setupPaging = function(ft) {\n\t\t\tvar $tbody = $(ft.table).find('> tbody');\n\t\t\tp.createPages(ft, $tbody);\n\t\t\tp.createNavigation(ft, $tbody);\n\t\t\tp.fillPage(ft, $tbody, ft.pageInfo.currentPage);\n\t\t};\n\n        p.createPages = function (ft, tbody) {\n            var pages = 1;\n            var info = ft.pageInfo;\n            var pageCount = pages * info.pageSize;\n            var page = [];\n            var lastPage = [];\n            info.pages = [];\n            var rows = tbody.find('> tr:not(.footable-filtered,.footable-row-detail)');\n            rows.each(function (i, row) {\n                page.push(row);\n                if (i === pageCount - 1) {\n                    info.pages.push(page);\n                    pages++;\n                    pageCount = pages * info.pageSize;\n                    page = [];\n                } else if (i >= rows.length - (rows.length % info.pageSize)) {\n                    lastPage.push(row);\n                }\n            });\n            if (lastPage.length > 0) info.pages.push(lastPage);\n            if (info.currentPage >= info.pages.length) info.currentPage = info.pages.length - 1;\n            if (info.currentPage < 0) info.currentPage = 0;\n        };\n\n        p.createNavigation = function (ft, tbody) {\n            var $nav = $(ft.pageInfo.pageNavigation);\n            if ($nav.length == 0) return;\n            $nav.find('li').remove();\n            var info = ft.pageInfo;\n            if (info.pages.length > 0) {\n\n                $nav.append('<li class=\"footable-page-arrow\"><a data-page=\"prev\" href=\"#prev\">&laquo;</a></li>');\n                $.each(info.pages, function (i, page) {\n                    if (page.length > 0) {\n                        $nav.append('<li class=\"footable-page\"><a data-page=\"' + i + '\" href=\"#\">' + (i + 1) + '</a></li>');\n                    }\n                });\n                $nav.append('<li class=\"footable-page-arrow\"><a data-page=\"next\" href=\"#next\">&raquo;</a></li>');\n            }\n            $nav.find('a').click(function (e) {\n                e.preventDefault();\n                var page = $(this).data('page');\n                var newPage = info.currentPage;\n                if (page == 'prev') {\n                    if (newPage > 0) newPage--;\n                } else if (page == 'next') {\n                    if (newPage < info.pages.length - 1) newPage++;\n                } else {\n                    newPage = page;\n                }\n                if (info.currentPage != newPage) {\n                    p.fillPage(ft, tbody, newPage);\n                }\n                $nav.find('li').removeClass('footable-page-current');\n                $nav.find('li.footable-page > a[data-page=' + info.currentPage + ']').parent().addClass('footable-page-current');\n            });\n            $nav.find('li.footable-page > a[data-page=' + info.currentPage + ']').parent().addClass('footable-page-current');\n        };\n\n        p.fillPage = function (ft, tbody, pageNumber) {\n            ft.pageInfo.currentPage = pageNumber;\n            tbody.find('> tr').hide();\n            $(ft.pageInfo.pages[pageNumber]).each(function () {\n                p.showRow(this, ft);\n            });\n        };\n\n        p.showRow = function (row, ft) {\n            var $row = $(row), $next = $row.next(), $table = $(ft.table);\n            if ($table.hasClass('breakpoint') && $row.hasClass('footable-detail-show') && $next.hasClass('footable-row-detail')) {\n                $row.add($next).show();\n                ft.createOrUpdateDetailRow(row);\n            }\n            else $row.show();\n        };\n    };\n\n    w.footable.plugins.register(new Paginate(), defaults);\n\n})(jQuery, window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.plugin.template.js",
    "content": "﻿(function ($, w, undefined) {\n  if (w.footable == undefined || w.foobox == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var defaults = {\n    /*\n       Plugin options here, example:\n\n        var defaults = {\n          myPlugin: {\n            enabled: true\n          }\n        };\n\n       This would allow you to access this option using ft.options.myPlugin.enabled\n    */\n  };\n\n  function MyPlugin() {\n    var p = this;\n    p.name = 'Footable MyPlugin';\n    p.init = function(ft) {\n      $(ft.table).bind({\n        /*\n           Bind to relevant events here to modify/add functionality to Footable, example:\n\n            $(ft.table).bind({\n              'footable_initialized': function(e){\n                if (e.ft.options.myPlugin.enabled == true){\n                  alert('Hello World');\n                }\n              }\n            });\n\n           This would listen for the 'footable_initialized' event and when called check if the plugin is enabled\n           and if it is alert 'Hello World' to the user.\n        */\n      });\n    };\n  };\n  \n  w.footable.plugins.register(new MyPlugin(), defaults);\n  \n})(jQuery, window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.sortable.js",
    "content": "﻿(function($, w, undefined) {\n  if (w.footable == undefined || w.footable == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var defaults = {\n    sort: true,\n    sorters: {\n      alpha: function(a, b) {\n        if (a == b) return 0;\n        if (a < b) return -1;\n        return 1;\n      },\n      numeric: function(a, b) {\n        return a - b;\n      }\n    },\n    parsers: {\n      numeric: function(cell) {\n        var val = $(cell).data('value') || $(cell).text().replace(/[^0-9.-]/g, '');\n        val = parseFloat(val);\n        if (isNaN(val)) val = 0;\n        return val;\n      }\n    },\n    classes: {\n      sort: {\n        sortable: 'footable-sortable',\n        sorted: 'footable-sorted',\n        descending: 'footable-sorted-desc',\n        indicator: 'footable-sort-indicator'\n      }\n    }\n  };\n\n  function Sortable() {\n    var p = this;\n    p.name = 'Footable Sortable';\n    p.init = function(ft) {\n      if (ft.options.sort == true) {\n        $(ft.table).bind({\n          'footable_initialized': function(e) {\n            var cls = ft.options.classes.sort, column;\n\n            var $table = $(e.ft.table), $tbody = $table.find('> tbody'), $th;\n\n            $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').each(function(ec) {\n              $th = $(this), column = e.ft.columns[$th.index()];\n              if (column.sort.ignore != true) {\n                $th.addClass(cls.sortable);\n                $('<span />').addClass(cls.indicator).appendTo($th);\n              }\n            });\n\n            $table.find('> thead > tr:last-child > th.' + cls.sortable + ', > thead > tr:last-child > td.' + cls.sortable).click(function(ec) {\n              $th = $(this), column = e.ft.columns[$th.index()];\n              if (column.sort.ignore == true) return true;\n              ec.preventDefault();\n\n              $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').not($th).removeClass(cls.sorted + ' ' + cls.descending);\n\n              if ($th.hasClass(cls.sorted)) {\n                p.reverse(e.ft, $tbody);\n                $th.removeClass(cls.sorted).addClass(cls.descending);\n              } else if ($th.hasClass(cls.descending)) {\n                p.reverse(e.ft, $tbody);\n                $th.removeClass(cls.descending).addClass(cls.sorted);\n              } else {\n                p.sort(e.ft, $tbody, column);\n                $th.removeClass(cls.descending).addClass(cls.sorted);\n              }\n              e.ft.bindToggleSelectors();\n              e.ft.raise('footable_sorted', { column : column });\n              return false;\n            });\n\n            var didSomeSorting = false;\n            for (var c in e.ft.columns) {\n              column = e.ft.columns[c];\n              if (column.sort.initial) {\n                p.sort(e.ft, $tbody, column);\n                didSomeSorting = true;\n                $th = $table.find('> thead > tr:last-child > th:eq(' + c + '), > thead > tr:last-child > td:eq(' + c + ')');\n\n                if (column.sort.initial == 'descending') {\n                  p.reverse(e.ft, $tbody);\n                  $th.addClass(cls.descending);\n                } else {\n                  $th.addClass(cls.sorted);\n                }\n\n                break;\n              } else if (column.sort.ignore != true) {\n\n              }\n            }\n            if (didSomeSorting) {\n              e.ft.bindToggleSelectors();\n            }\n          },\n          'footable_column_data': function(e) {\n            var $th = $(e.column.th);\n            e.column.data.sort = e.column.data.sort || {};\n            e.column.data.sort.initial = $th.data('sort-initial') || false;\n            e.column.data.sort.ignore = $th.data('sort-ignore') || false;\n            e.column.data.sort.selector = $th.data('sort-selector') || null;\n\n            var match = $th.data('sort-match') || 0;\n            if (match >= e.column.data.matches.length) match = 0;\n            e.column.data.sort.match = e.column.data.matches[match];\n          }\n        });\n      }\n    };\n    \n    p.rows = function(ft, tbody, column) {\n      var rows = [];\n      tbody.find('> tr').each(function() {\n        var $row = $(this), $next = null;\n        if ($row.hasClass('footable-row-detail')) return true;\n        if ($row.next().hasClass('footable-row-detail')) {\n          $next = $row.next().get(0);\n        }\n        var row = { 'row': $row, 'detail': $next };\n        if (column != undefined) {\n          row.value = ft.parse(this.cells[column.sort.match], column);\n        }\n        rows.push(row);\n        return true;\n      }).detach();\n      return rows;\n    };\n\n    p.sort = function(ft, tbody, column) {\n      var rows = p.rows(ft, tbody, column);\n      var sorter = ft.options.sorters[column.type] || ft.options.sorters.alpha;\n      rows.sort(function(a, b) { return sorter(a.value, b.value); });\n      for (var j = 0; j < rows.length; j++) {\n        tbody.append(rows[j].row);\n        if (rows[j].detail != null) {\n          tbody.append(rows[j].detail);\n        }\n      }\n    };\n\n    p.reverse = function(ft, tbody) {\n      var rows = p.rows(ft, tbody);\n      for (var i = rows.length - 1; i >= 0; i--) {\n        tbody.append(rows[i].row);\n        if (rows[i].detail != null) {\n          tbody.append(rows[i].detail);\n        }\n      }\n    };\n  }\n\n  ;\n\n  w.footable.plugins.register(new Sortable(), defaults);\n\n})(jQuery, window);"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/responsive-container.htm",
    "content": "<!DOCTYPE html>\n\n<html>\n  <head>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\" />\n    <meta name=\"format-detection\" content=\"telephone=no\" />\n\n    <title>FooTable Responsive Demo</title>\n    <style type=\"text/css\">\n        body { margin: 5px 10px;padding: 0; font-family:courier new; font-size:12px; }\n        \n        .frame-border {\n          padding: 20px;\n        }\n        \n        .device-selector {\n          text-align:center;\n        }\n        \n        .device-selector a {\n          background: url(device-sprite.png) no-repeat top left;\n          width: 48px; height: 48px;\n          margin:0 10px;\n          display:inline-block;\n          border:solid 5px transparent;\n          border-radius:3px;\n        }\n        \n          .device-selector a.tablet{ background-position: 0 0; } \n          .device-selector a.tablet-landscape{ background-position: -96px 0; } \n          .device-selector a.mobile{ background-position: -192px 0; } \n          .device-selector a.mobile-landscape{ background-position: -288px 0; } \n          .device-selector a.desktop{ background-position: -384px 0; }\n\n            .device-selector a:hover {\n              background-color:#eee;\n            }\n          \n            .device-selector a.chosen {\n              background-color:#ddd;\n            }\n            \n        .demo-selector {\n          text-align:center;\n        }\n        \n          .demo-selector p {\n            display:inline-block;\n          }\n          \n          .demo-selector a {\n            text-decoration:none;\n            color:#00f;\n          }\n          \n            .demo-selector a.chosen {\n              text-decoration:underline;\n              font-weight:bold;\n              color:#f00;\n            }\n            \n          .demo-selector .demo-desc {\n            font-size:18px;\n            font-family:arial;\n          }\n            \n        #demo-frame {\n          border: solid 3px #ddd;\n          width: 1024px;\n          height: 600px;\n          margin-left:50%;\n          position:fixed;\n          left:-512px;\n          border-radius:5px;\n        }\n        \n    </style>    \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function () {\n    \t\t$('.device-selector > a').click(function(e) {\n    \t\t\te.preventDefault();\n          var $this = $(this);\n          $this.addClass('chosen').siblings('a').removeClass('chosen');\n    \t\t\tvar width = $this.data('width');\n          var left = (parseInt(width) / 2) * -1;\n    \t\t\tvar height = $this.data('height');\n    \t\t\t$('#demo-frame').animate({ 'width': width, 'left' : left });\n    \t\t});\n        \n        $('.demo-selector > a').click(function(e) {\n          e.preventDefault();\n          var $this = $(this);\n          $this.addClass('chosen').siblings('a').removeClass('chosen');\n          var url = $this.data('url');\n          $('#demo-frame').attr('src', url);\n          $('.demo-desc span').text( $this.data('desc') );\n          $('.demo-desc a').attr('href', url);\n        });\n      });\n    </script>\n  </head>\n  <body>\n    <div class=\"device-selector\">\n      <p>choose a viewport:</p>\n      <a class=\"mobile\" data-width=\"320px\" data-height=\"480px\" href=\"#mobile\"></a>\n      <a class=\"tablet\" data-width=\"768px\" data-height=\"1024px\" href=\"#tablet\"></a>\n      <a class=\"desktop\" data-width=\"1224px\" data-height=\"600px\" href=\"#desktop\"></a>\n    </div>\n    <div class=\"demo-selector\">\n      <p>choose a demo:</p>\n      <a class=\"chosen\" data-desc=\"This demo shows a really simple table that only contains text (nothing fancy)\" data-url=\"demo.htm\" href=\"#simple\">simple</a>\n      <a data-url=\"demo2.htm\" data-desc=\"This demo shows a table with some more involved html, including images and links\" href=\"#html\">html</a>\n      <a data-url=\"demo-sorting.htm\" data-desc=\"This demo shows off the sortable add-on, so the table columns can be sorted by clicking the column headers\" href=\"#sorting\">sorting</a>\n      <a data-url=\"demo-filtering.htm\" data-desc=\"This demo shows off the filtering add-on, so the table rows can be filtered by a textbox somewhere on the page\" href=\"#filtering\">filtering</a>\n      <a data-url=\"demo-sorting-filtering.htm\" data-desc=\"Combines both the filtering and sorting add-ons together\" href=\"#sorting-filtering\">sorting+filtering</a>\n      <div class=\"demo-desc\"><span>This demo shows a really simple table that only contains text (nothing fancy)</span> <a href=\"demo.htm\" title=\"open demo in new window\" target=\"_blank\"><img border=\"0\" src=\"images/external.png\" /></a></div>\n    </div>\n    <div style=\"clear: both\"></div>\n    <div class=\"frame-border\">\n      <iframe id=\"demo-frame\" src=\"demo.htm\"></iframe>\n    </div>\n    <div style=\"clear: both\"></div>\n  </body>\n</html>"
  },
  {
    "path": "src/main/webapp/style/eu/theme/scripts/plugins/tables/FooTable/test-adding-attribs.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n\t\t\t$.expr[\":\"].contains2 = $.expr.createPseudo(function(arg) {\n\t\t\t\t\treturn function( elem ) {\n\t\t\t\t\t\t\treturn $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n\t\t\t\t\t};\n\t\t\t});\n\n\t\t\tjQuery.fn.attrAppendWithComma = function (a, c) {\n\t\t\t\t\tvar b;\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\t\tb = $(this);\n\t\t\t\t\t\t\tif (b.attr(a) !== undefined && b.attr(a) != \"\") {\n\t\t\t\t\t\t\t\t\tb.attr(a, b.attr(a) + ',' + c)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tb.attr(a, c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t};\n\n\t\t\t$('th:eq(0)').attr('data-class', 'expand');\n\n\t\t\t$('th:gt(2)').attrAppendWithComma('data-hide', 'tablet');\n\n\t\t\t$('th:gt(1)').attrAppendWithComma('data-hide', 'phone');\n\t\t\t\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n<table class=\"footable\">\n      <thead>\n        <tr>\n          <th>\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th>\n            Job Title\n          </th>\n          <th>\n            DOB\n          </th>\n          <th>\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n\t\t\t\t<tr><td>Marquia</td><td>Yaple</td><td>Clinical Services Director</td><td data-value=\"244465146369\">30 Sep 1977</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Sephnie</td><td>Hogle</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"133419815423\">25 Mar 1974</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Laurena</td><td>Sprouse</td><td>Broadcast Maintenance Engineer</td><td data-value=\"444485661385\">1 Feb 1984</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Solomon</td><td>Leinen</td><td>Youth Pastor</td><td data-value=\"-313103208156\">30 Jan 1960</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lauri</td><td>Lewis</td><td>Youth Pastor</td><td data-value=\"550673782140\">14 Jun 1987</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Raeann</td><td>Haner</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-263975597222\">20 Aug 1961</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lucila</td><td>Stgelais</td><td>Childcare Center Administrator</td><td data-value=\"-153466436643\">19 Feb 1965</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Beariz</td><td>Bittinger</td><td>Serials Librarian</td><td data-value=\"404201120945\">23 Oct 1982</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Elodia</td><td>Lamark</td><td>Telephone Lines Repairer</td><td data-value=\"192519325613\">7 Feb 1976</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Maple</td><td>Ates</td><td>Drag Car Racer</td><td data-value=\"217566162480\">23 Nov 1976</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Ilona</td><td>Landa</td><td>Serials Librarian</td><td data-value=\"350692609732\">11 Feb 1981</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Rona</td><td>Klotz</td><td>Offbearer</td><td data-value=\"195546142025\">13 Mar 1976</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Raeann</td><td>Klotz</td><td>Fashion Designer</td><td data-value=\"596032715944\">20 Nov 1988</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Neie</td><td>Leonardo</td><td>Clown</td><td data-value=\"225363385465\">21 Feb 1977</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Maple</td><td>Gaffney</td><td>Jig Bore Tool Maker</td><td data-value=\"188576037442\">23 Dec 1975</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Gwen</td><td>Han</td><td>Employment Clerk</td><td data-value=\"11029092743\">8 May 1970</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Jason</td><td>Matsumura</td><td>Electrical Engineering Director</td><td data-value=\"22974045863\">23 Sep 1970</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lorriane</td><td>Sprinkle</td><td>Strawberry Sorter</td><td data-value=\"124084128018\">7 Dec 1973</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Bernie</td><td>Bruening</td><td>Horticulture Instructor</td><td data-value=\"-227799605447\">13 Oct 1962</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Marquia</td><td>Hoos</td><td>Route Sales Person</td><td data-value=\"218209892894\">30 Nov 1976</td><td data-value=\"3\">Suspended</td></tr>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/skins/css/blue-gray.css",
    "content": ".btn-primary,\n#flotTip,\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.label-primary,\n.table-primary thead th,\n.pagination ul > .active > a,\n.pagination ul > .active > span,\n.gallery ul li .thumb,\n.widget-activity ul.filters li.glyphicons.active i,\n.ui-slider-wrap .slider-primary .ui-slider-range,\n.accordion-heading .accordion-toggle,\n.ui-widget-header,\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\n.fc-event-skin,\n#external-events li,\n.notyfy_wrapper.notyfy_primary,\n.progress.progress-primary .bar,\n.alert.alert-primary,\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a,\n.gritter-item-wrapper.gritter-primary .gritter-item,\n#content-notification .notyfy_wrapper.notyfy_primary,\n.ribbon-wrapper .ribbon.primary,\n.label.label-primary,\n.widget-stats.primary,\n.widget-stats.primary:hover,\n.tabsbar:not(.tabsbar-2) ul li.active a,\n.widget.widget-wizard-pills .widget-head ul li.primary a,\n.bwizard-steps li.active,\n.sliderContainer .ui-rangeSlider-bar,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close,\n#tlyPageGuideWrapper #tlyPageGuideMessages span,\n.tabsbar.tabsbar-2.active-fill ul li.active a,\n.shop-client-products.list ul li a .glyphicons i,\n.social-large:not(.social-large-2) a.active,\n.social-large:not(.social-large-2) a:hover,\n#landing_1 .banner-1 .carousel-indicators li.active,\n.navbar.main,\n.navbar.main .btn-navbar,\n.navbar.main .btn-navbar:hover,\n.nav-timeline > li.active > a,\n.nav-timeline > li > a:hover,\n.nav-timeline > li.active > a:hover,\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after,\n.layout-timeline ul.timeline > li.active:before,\n.carousel.carousel-1 .carousel-indicators li.active,\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active,\n.widget.widget-body-primary > .widget-body {\n  background-color: #496cad;\n}\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover,\n#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover,\n.widget-stats.primary,\n.btn-primary,\n.tabsbar:not(.tabsbar-2) ul li.active a {\n  background-color: #6785bd;\n  background-image: -moz-linear-gradient(top, #7b96c7, #496cad);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#7b96c7), to(#496cad));\n  background-image: -webkit-linear-gradient(top, #7b96c7, #496cad);\n  background-image: -o-linear-gradient(top, #7b96c7, #496cad);\n  background-image: linear-gradient(to bottom, #7b96c7, #496cad);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7b96c7', endColorstr='#ff496cad', GradientType=0);\n}\na,\np a,\n.widget .widget-body.list ul li .count,\n.widget-stats .txt strong,\n.glyphicons.single i:before,\n.glyphicons.single,\n.table-primary tbody td.important,\n.widget.widget-3 .widget-body.large.cancellations span span:first-child,\n.widget .widget-footer a:hover,\n.widget .widget-footer a:hover i:before,\n.widget.widget-3 .widget-footer a:hover,\n.widget.widget-3 .widget-footer a:hover i:before,\nblockquote small,\n.tabsbar.tabsbar-2 ul li.active a,\n.tabsbar.tabsbar-2 ul li.active a i:before,\n.glyphicons.primary i:before,\n.glyphicons.standard:not(.disabled):hover i:before,\n.menubar.links.primary ul li a,\n.text-primary,\n#docs_icons .glyphicons i:before,\n.widget.widget-tabs-double-2 .widget-head ul li.active a i:before,\n.widget.widget-tabs-double-2 .widget-head ul li.active a,\n.shop-client-products.product-details .form-horizontal .price,\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before,\n#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before,\n#landing_1 .banner .banner-wrapper.banner-1 p a,\n#landing_1 .banner .banner-wrapper.banner-1 h3,\n#landing_2 .banner .banner-wrapper.banner-1 p a,\n#landing_2 .banner .banner-wrapper.banner-1 .buy a,\n#landing_2 .banner .banner-wrapper.banner-1 h3,\n#landing_1 .banner-1 .carousel-caption a,\ndiv.glyphicons.glyphicon-primary i:before,\n.layout-timeline ul.timeline > li.active .type,\n.layout-timeline ul.timeline > li.active .type i:before,\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before,\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover,\nhtml.front #footer a:not(.btn) {\n  color: #496cad;\n}\n.btn-primary,\n.ui-slider-wrap .slider-primary .ui-slider-handle,\n#flotTip,\n.widget.widget-2.primary .widget-head,\n.widget .widget-body.list.list-2 ul li.active a i:before,\n.table-primary thead th,\n.pagination ul > .active > a,\n.pagination ul > .active > span,\n.widget.widget-4 .widget-head .heading,\n.ui-widget-header,\n.fc-event-skin,\n.alert.alert-primary,\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a,\n.widget-stats.primary,\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n.widget-chat .media .media-body,\n.widget-chat .media .media-body.right,\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n#menu > ul.menu-0 > li.active > a {\n  border-color: #496cad;\n}\n.table-primary tbody td {\n  background-color: #f9fafc;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background-color: #d5dded;\n}\n.table-primary.table-bordered tbody td,\n.table-primary,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #f9fafc;\n}\n.navbar.main {\n  border-bottom-color: #324a77;\n}\n.navbar.main .topnav {\n  border-left-color: #324a77;\n  border-right-color: #8da4cf;\n}\n.navbar.main .topnav > li:first-child {\n  border-left-color: #8da4cf;\n}\n.navbar.main .topnav > li.glyphs,\n.navbar.main .topnav > li.search {\n  border-left-color: #324a77;\n  border-right-color: #8da4cf;\n  box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n  -moz-box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n  -webkit-box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left-color: #324a77;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #8da4cf;\n  border-right-color: #324a77;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #8da4cf;\n  border-right-color: #324a77;\n  box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n  -moz-box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n  -webkit-box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  box-shadow: -1px 0 0 0 #8da4cf;\n  -moz-box-shadow: -1px 0 0 0 #8da4cf;\n  -webkit-box-shadow: -1px 0 0 0 #8da4cf;\n}\n.navbar.main .topnav > li:last-child {\n  border-right-color: #324a77;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul {\n  background: #324a77;\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover,\n.navbar.main .topnav > li.search form {\n  background: #8da4cf;\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  color: #8da4cf !important;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  color: #fff !important;\n}\nhtml.front .navbar.main .secondary {\n  background: #2b3f65;\n  border-color: #324a77;\n}\n.navbar.main .topnav > li.search form button i:before,\n.navbar.main .topnav > li.search form input {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #324a77;\n}\n.bwizard-steps li.active:after,\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #496cad;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #496cad;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #496cad;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #496cad;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #2b3f65;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #41619b;\n}\n.tlypageguide_shadow:after {\n  background-color: rgba(73, 108, 173, 0.2);\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #8da4cf;\n}\n.widget .widget-body.list.list-2 ul li a {\n  color: #8da4cf;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  background: #f9fafc;\n  color: #6988c0;\n  border-color: #8da4cf;\n}\n"
  },
  {
    "path": "src/main/webapp/style/eu/theme/skins/less/blue-gray.less",
    "content": "@primaryColor: #496cad;\n#gradient {\n.vertical(@startColor: #555, @endColor: #333) {\n   background-color: mix(@startColor, @endColor, 60%);\n   background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n   background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n   background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n   background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n   background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n   background-repeat: repeat-x;\n   filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n}\n}\n\n.btn-primary, \n#flotTip, \n.btn-group.open .btn-primary.dropdown-toggle, .btn-primary.disabled, .btn-primary[disabled], .btn-primary:hover, \n.label-primary, \n.table-primary thead th, \n.pagination ul > .active > a, .pagination ul > .active > span, \n.gallery ul li .thumb, \n.widget-activity ul.filters li.glyphicons.active i, \n.ui-slider-wrap .slider-primary .ui-slider-range, \n.accordion-heading .accordion-toggle, \n.ui-widget-header, \n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, \n.fc-event-skin, \n#external-events li, \n.notyfy_wrapper.notyfy_primary, \n.progress.progress-primary .bar, \n.alert.alert-primary, \n.pagination ul > li > a:hover, .pagination ul > li.primary > a, \n.gritter-item-wrapper.gritter-primary .gritter-item, \n#content-notification .notyfy_wrapper.notyfy_primary, \n.ribbon-wrapper .ribbon.primary, \n.label.label-primary, \n.widget-stats.primary, .widget-stats.primary:hover, \n.tabsbar:not(.tabsbar-2) ul li.active a, \n.widget.widget-wizard-pills .widget-head ul li.primary a, \n.bwizard-steps li.active, \n.sliderContainer .ui-rangeSlider-bar, \n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active, \n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close, \n#tlyPageGuideWrapper #tlyPageGuideMessages span, \n.tabsbar.tabsbar-2.active-fill ul li.active a, \n.shop-client-products.list ul li a .glyphicons i, \n.social-large:not(.social-large-2) a.active, .social-large:not(.social-large-2) a:hover, \n#landing_1 .banner-1 .carousel-indicators li.active, \n.navbar.main, \n.navbar.main .btn-navbar, .navbar.main .btn-navbar:hover, \n.nav-timeline > li.active > a, .nav-timeline > li > a:hover, .nav-timeline > li.active > a:hover, \n.layout-timeline ul.timeline > li.active .type:before, .layout-timeline ul.timeline > li.active .type:after, \n.layout-timeline ul.timeline > li.active:before, \n.carousel.carousel-1 .carousel-indicators li.active, \n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active, \n.widget.widget-body-primary > .widget-body\n{\n\tbackground-color: @primaryColor;\n}\n\n#menu .slim-scroll > ul.menu-0 > li.active > a, \n#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover, \n#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover, \n.widget-stats.primary, \n.btn-primary, \n.tabsbar:not(.tabsbar-2) ul li.active a\n{\n\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\n}\n\na, p a, \n.widget .widget-body.list ul li .count, \n.widget-stats .txt strong, \n.glyphicons.single i:before, \n.glyphicons.single, \n.table-primary tbody td.important, \n.widget.widget-3 .widget-body.large.cancellations span span:first-child, \n.widget .widget-footer a:hover, .widget .widget-footer a:hover i:before, \n.widget.widget-3 .widget-footer a:hover, .widget.widget-3 .widget-footer a:hover i:before, \nblockquote small, \n.tabsbar.tabsbar-2 ul li.active a, \n.tabsbar.tabsbar-2 ul li.active a i:before, \n.glyphicons.primary i:before, .glyphicons.standard:not(.disabled):hover i:before, \n.menubar.links.primary ul li a, \n.text-primary, \n#docs_icons .glyphicons i:before, \n.widget.widget-tabs-double-2 .widget-head ul li.active a i:before, .widget.widget-tabs-double-2 .widget-head ul li.active a, \n.shop-client-products.product-details .form-horizontal .price, \n.widget-activity ul.list li:hover .activity-icon i:before, .widget-activity ul.list li.highlight .activity-icon i:before, \n#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before, \n#landing_1 .banner .banner-wrapper.banner-1 p a, \n#landing_1 .banner .banner-wrapper.banner-1 h3, \n#landing_2 .banner .banner-wrapper.banner-1 p a, #landing_2 .banner .banner-wrapper.banner-1 .buy a, \n#landing_2 .banner .banner-wrapper.banner-1 h3, \n#landing_1 .banner-1 .carousel-caption a, \ndiv.glyphicons.glyphicon-primary i:before, \n.layout-timeline ul.timeline > li.active .type, \n.layout-timeline ul.timeline > li.active .type i:before, \n.social-large.social-large-2 a.active i:before, .social-large.social-large-2 a:hover i:before, \n.social-large.social-large-2 a.active, .social-large.social-large-2 a:hover, \nhtml.front #footer a:not(.btn)\n{\n\tcolor: @primaryColor;\n}\n\n.btn-primary, \n.ui-slider-wrap .slider-primary .ui-slider-handle, \n#flotTip, \n.widget.widget-2.primary .widget-head, \n.widget .widget-body.list.list-2 ul li.active a i:before, \n.table-primary thead th, \n.pagination ul > .active > a, .pagination ul > .active > span, \n.widget.widget-4 .widget-head .heading, \n.ui-widget-header, \n.fc-event-skin, \n.alert.alert-primary, \n.pagination ul > li > a:hover, .pagination ul > li.primary > a, \n.widget-stats.primary, \n#menu .slim-scroll > ul.menu-0 > li.active > a, \n.widget-chat .media .media-body, \n.widget-chat .media .media-body.right, \n#menu .slim-scroll > ul.menu-0 > li.active > a, #menu > ul.menu-0 > li.active > a\n{\n\tborder-color: @primaryColor;\n}\n\n.table-primary tbody td\n{\n\tbackground-color: lighten(@primaryColor, 50%);\n}\n\n.table-primary tbody tr.selected td, .table-primary tbody tr.selectable:hover td\n{\n\tbackground-color: lighten(@primaryColor, 40%);\n}\n\n.table-primary.table-bordered tbody td, .table-primary, .pagination ul > .disabled > a, .pagination ul > .disabled > span\n{\n\tborder-color: lighten(@primaryColor, 50%);\n}\n\n@headerBorder0: darken(@primaryColor, 20%);\n@headerBorder1: darken(@primaryColor, 15%);\n@headerBorder2: lighten(@primaryColor, 20%);\n.navbar.main {\n\tborder-bottom-color: @headerBorder1;\n}\n\n.navbar.main .topnav {\n\tborder-left-color: @headerBorder1;\n\tborder-right-color: @headerBorder2;\n}\n\n.navbar.main .topnav > li:first-child {\n\tborder-left-color: @headerBorder2;\n}\n\n.navbar.main .topnav > li.glyphs, .navbar.main .topnav > li.search {\n\tborder-left-color: @headerBorder1;\n\tborder-right-color: @headerBorder2;\n\tbox-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n\tborder-left-color: @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav {\n\tborder-left-color: @headerBorder2;\n\tborder-right-color: @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav > li.glyphs {\n\tborder-left-color: @headerBorder2;\n\tborder-right-color: @headerBorder1;\n\tbox-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n}\n\n.navbar.main .topnav > li:last-child.glyphs, .navbar.main .topnav > li:last-child.search {\n\tbox-shadow: -1px 0 0 0 @headerBorder2;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder2;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2;\n}\n\n.navbar.main .topnav > li:last-child {\n\tborder-right-color: @headerBorder1;\n}\n\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul {\n\tbackground: @headerBorder1;\n\tborder-color: @headerBorder0;\n}\n\n.navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover {\n\t&:last-child { border-color: @headerBorder0; }\n}\n\n.navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover, \n.navbar.main .topnav > li.search form {\n\tbackground: @headerBorder2;\n\tborder-color: @headerBorder0;\n}\n\n.navbar.main .topnav > li.glyphs ul li .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n\tcolor: @headerBorder2 !important;\n}\n\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n\tcolor: #fff !important;\n}\n\nhtml.front .navbar.main .secondary {\n\tbackground: @headerBorder0;\n\tborder-color: @headerBorder1;\n}\n\n.navbar.main .topnav > li.search form button i:before, .navbar.main .topnav > li.search form input {\n\tcolor: @headerBorder1;\n}\n\n.navbar.main .topnav > li.search form input {\n\t&::-webkit-input-placeholder { color: @headerBorder1; }\n\t&:-moz-placeholder { color: @headerBorder1; }\n\t&::-moz-placeholder { color: @headerBorder1; }\n\t&:-ms-input-placeholder { color: @headerBorder1; }\n}\n\n.bwizard-steps li.active:after, .sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner\n{\n\tborder-left-color: @primaryColor;\n}\n\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner\n{\n\tborder-right-color: @primaryColor;\n}\n\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after\n{\n\tborder-top-color: @primaryColor;\n}\n\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after\n{\n\tborder-bottom-color: @primaryColor;\n}\n\n.btn-primary:active, .btn-primary.active\n{\n\tbackground-color: darken(@primaryColor, 20%);\n}\n\n.btn-primary:hover, .btn-primary:focus\n{\n\tbackground-color: darken(@primaryColor, 5%);\n}\n\n.tlypageguide_shadow:after\n{\n\tbackground-color: fade(@primaryColor, 20%);\n}\n\n.widget .widget-body.list.list-2 ul li\n{\n\t&.active { border-color: lighten(@primaryColor, 20%); }\n\ta { color: lighten(@primaryColor, 20%); i:before { background: lighten(@primaryColor, 50%); color: lighten(@primaryColor, 10%); border-color: lighten(@primaryColor, 20%); } }\n}"
  },
  {
    "path": "src/test/java/dao/MongoTemplateTest.java",
    "content": "package dao;\n\nimport com.lida.mongo.person.entity.Address;\nimport com.lida.mongo.person.entity.Person;\nimport com.lida.mongo.person.mongoDao.PersonMongoImpl;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\n\nimport javax.annotation.Resource;\n\n/**\n * Created by DuLida on 2016/10/21.\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n//告诉junit spring配置文件\n@ContextConfiguration({\"classpath:spring/spring-context.xml\", \"classpath:spring/spring-mongo.xml\"})\npublic class MongoTemplateTest {\n    private static Logger log = LoggerFactory.getLogger(MongoTemplateTest.class);\n\n    @Resource\n    private PersonMongoImpl personMongo;\n\n    @Test\n    public void testMongoTemplate() {\n\n        personMongo.insertPerson(new Person(\"weiwei\", 24, new Address(\"南王\", \"鑫达路\", 10)));\n        personMongo.removePerson(\"name3\");\n        personMongo.updatePerson();\n        log.debug(\"========================================================\");\n        System.out.println(personMongo.findAll());\n        System.out.println(personMongo.findForRequery(\"weiwei\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/dao/PersonDaoTest.java",
    "content": "package dao;\n\nimport com.lida.mongo.person.dao.PersonDao;\nimport com.lida.mongo.person.entity.Address;\nimport com.lida.mongo.person.entity.Person;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\n\nimport javax.annotation.Resource;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by DuLida on 2016/10/20.\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n//告诉junit spring配置文件\n@ContextConfiguration({\"classpath:spring/spring-context.xml\", \"classpath:spring/spring-mongo.xml\"})\npublic class PersonDaoTest {\n\n    @Resource\n    private PersonDao personDao;\n\n\n    /*先往数据库中插入10个person*/\n    @Test\n    public void testMongo() {\n        List<Person> persons = new ArrayList<Person>();\n        for (int i = 0; i < 10; i++) {\n            persons.add(new Person(\"name\" + i, i, new Address(\"石家庄\", \"裕华路\", i)));\n        }\n        personDao.save(persons);\n    }\n\n    @Test\n    public void findMongo() {\n        System.out.println(personDao.findByAge(2, 8, \"name6\"));\n\n    }\n\n}\n"
  },
  {
    "path": "target/classes/config.properties",
    "content": "#hibernate.dialect=sy.util.Oracle10gDialect\n#driverClassName=oracle.jdbc.driver.OracleDriver\n#validationQuery=SELECT 1 FROM DUAL\n#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl\n#jdbc_username=bjlyjoa\n#jdbc_password=bjlyjoa\nhibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect\ndriverClassName=com.mysql.jdbc.Driver\nvalidationQuery=SELECT 1\njdbc_url=jdbc\\:mysql\\://localhost\\:3306/wsn640?useUnicode\\=true&characterEncoding\\=UTF-8&zeroDateTimeBehavior\\=convertToNull\njdbc_username=root\njdbc_password=13713393809\n#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect\n#driverClassName=net.sourceforge.jtds.jdbc.Driver\n#validationQuery=SELECT 1\n#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/qx\n#jdbc_username=sa\n#jdbc_password=123456\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.use_sql_comments=false\n\n\n#mongoDB\nmongo.hostport=192.168.137.75:27017\nmongo.connectionsPerHost=8\nmongo.threadsAllowedToBlockForConnectionMultiplier=4\n#ӳʱʱ\nmongo.connectTimeout=1000\n#ȴʱ\nmongo.maxWaitTime=1500\n#Socketʱʱ\nmongo.socketTimeout=1500"
  },
  {
    "path": "target/classes/logback.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->\n    <property name=\"LOG_HOME\" value=\"d:/log\"/>\n    <!-- 控制台输出 -->\n    <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <!-- 日志输出编码 -->\n        <Encoding>UTF-8</Encoding>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n    </appender>\n    <!-- 按照每天生成日志文件 -->\n    <appender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <Encoding>UTF-8</Encoding>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!--日志文件输出的文件名-->\n            <FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>\n            <MaxHistory>30</MaxHistory>\n        </rollingPolicy>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n        <!--日志文件最大的大小-->\n        <triggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\">\n            <MaxFileSize>10MB</MaxFileSize>\n        </triggeringPolicy>\n    </appender>\n    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicBinder\" level=\"TRACE\"/>\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicExtractor\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.SQL\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.QueryParameters\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.query.HQLQueryPlan\" level=\"DEBUG\"/>\n\n    <!-- 日志输出级别 -->\n    <root level=\"INFO\">\n        <appender-ref ref=\"STDOUT\"/>\n        <appender-ref ref=\"FILE\"/>\n    </root>\n\n    <!--日志异步到数据库 -->\n    <!-- <appender name=\"DB\" class=\"ch.qos.logback.classic.db.DBAppender\">\n         &lt;!&ndash;日志异步到数据库 &ndash;&gt;\n         <connectionSource class=\"ch.qos.logback.core.db.DriverManagerConnectionSource\">\n             &lt;!&ndash;连接池 &ndash;&gt;\n             <dataSource class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n                 <driverClass>com.mysql.jdbc.Driver</driverClass>\n                 <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>\n                 <user>root</user>\n                 <password>root</password>\n             </dataSource>\n         </connectionSource>\n     </appender> -->\n</configuration>"
  },
  {
    "path": "target/classes/mongo.properties",
    "content": "#mongoDB\nmongo.hostport=192.168.137.75:27017\nmongo.connectionsPerHost=8\nmongo.threadsAllowedToBlockForConnectionMultiplier=4\n#ӳʱʱ\nmongo.connectTimeout=1000\n#ȴʱ\nmongo.maxWaitTime=1500\n#Socketʱʱ\nmongo.socketTimeout=1500"
  },
  {
    "path": "target/classes/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context.xsd\n       http://www.springframework.org/schema/task\n       http://www.springframework.org/schema/task/spring-task.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <bean class=\"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer\">\n        <property name=\"locations\">\n            <list>\n                <value>classpath:config.properties</value>\n            </list>\n        </property>\n    </bean>\n\n\n    <!--扫描service包嗲所有使用注解的类型-->\n    <context:component-scan base-package=\"com.lida.mongo,light.mvc\"/>\n\n\n\n    <!-- 多部分文件上传 -->\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\">\n        <property name=\"maxUploadSize\" value=\"104857600\" />\n        <property name=\"maxInMemorySize\" value=\"4096\" />\n        <property name=\"defaultEncoding\" value=\"UTF-8\"></property>\n    </bean>\n\n    <!-- Spring MVC JSON配置 -->\n    <bean class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\">\n        <property name=\"messageConverters\">\n            <list>\n                <bean id=\"fastJsonHttpMessageConverter\" class=\"light.mvc.utils.FastJsonHttpMessageConverter\">\n                    <property name=\"supportedMediaTypes\">\n                        <list>\n                            <value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->\n                        </list>\n                    </property>\n                </bean>\n            </list>\n        </property>\n    </bean>\n\n    <!-- 对模型视图名称的解析，即在模型视图名称添加前后缀 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\" p:prefix=\"/WEB-INF/views/\" p:suffix=\".jsp\" />\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/front/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptorFront\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptor\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n                        <value>/resource/tree</value><!-- 首页左侧功能菜单 -->\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n    </mvc:interceptors>\n\n\n    <!-- 导入mongodb的配置文件 -->\n    <import resource=\"spring-mongo.xml\"/>\n    <!-- 开启注解 -->\n    <context:annotation-config/>\n    <!-- 注解方式 -->\n    <context:component-scan base-package=\"com.lida.mongo.task\"/>\n    <task:annotation-driven scheduler=\"qbScheduler\" mode=\"proxy\"/>\n    <task:scheduler id=\"qbScheduler\" pool-size=\"10\"/>\n\n\n</beans>\n\n"
  },
  {
    "path": "target/classes/spring/spring-hibernate.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:c=\"http://www.springframework.org/schema/c\"\n       xmlns:cache=\"http://www.springframework.org/schema/cache\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:jdbc=\"http://www.springframework.org/schema/jdbc\" xmlns:jee=\"http://www.springframework.org/schema/jee\"\n       xmlns:lang=\"http://www.springframework.org/schema/lang\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:p=\"http://www.springframework.org/schema/p\" xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\" xmlns:util=\"http://www.springframework.org/schema/util\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n\t\thttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd\n\t\thttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd\n\t\thttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\n\t\thttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd\n\t\thttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd\n\t\thttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd\n\t\thttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\n\t\thttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd\n\t\thttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd\n\t\thttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean name=\"dataSource\" class=\"com.alibaba.druid.pool.DruidDataSource\" init-method=\"init\" destroy-method=\"close\">\n        <property name=\"url\" value=\"${jdbc_url}\"/>\n        <property name=\"username\" value=\"${jdbc_username}\"/>\n        <property name=\"password\" value=\"${jdbc_password}\"/>\n\n        <!-- 初始化连接大小 -->\n        <property name=\"initialSize\" value=\"0\"/>\n        <!-- 连接池最大使用连接数量 -->\n        <property name=\"maxActive\" value=\"20\"/>\n        <!-- 连接池最小空闲 -->\n        <property name=\"minIdle\" value=\"0\"/>\n        <!-- 获取连接最大等待时间 -->\n        <property name=\"maxWait\" value=\"60000\"/>\n\n        <!-- <property name=\"poolPreparedStatements\" value=\"true\" /> <property name=\"maxPoolPreparedStatementPerConnectionSize\" value=\"33\" /> -->\n\n        <property name=\"validationQuery\" value=\"${validationQuery}\"/>\n        <property name=\"testOnBorrow\" value=\"false\"/>\n        <property name=\"testOnReturn\" value=\"false\"/>\n        <property name=\"testWhileIdle\" value=\"true\"/>\n\n        <!-- 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒 -->\n        <property name=\"timeBetweenEvictionRunsMillis\" value=\"60000\"/>\n        <!-- 配置一个连接在池中最小生存的时间，单位是毫秒 -->\n        <property name=\"minEvictableIdleTimeMillis\" value=\"25200000\"/>\n\n        <!-- 打开removeAbandoned功能 -->\n        <property name=\"removeAbandoned\" value=\"true\"/>\n        <!-- 1800秒，也就是30分钟 -->\n        <property name=\"removeAbandonedTimeout\" value=\"1800\"/>\n        <!-- 关闭abanded连接时输出错误日志 -->\n        <property name=\"logAbandoned\" value=\"true\"/>\n\n        <!-- 监控数据库 -->\n        <!-- <property name=\"filters\" value=\"mergeStat\" /> -->\n        <property name=\"filters\" value=\"stat\"/>\n    </bean>\n\n    <!-- 配置hibernate session工厂 -->\n    <bean id=\"sessionFactory\" class=\"org.springframework.orm.hibernate4.LocalSessionFactoryBean\">\n        <property name=\"dataSource\" ref=\"dataSource\"/>\n        <property name=\"hibernateProperties\">\n            <props>\n                <prop key=\"hibernate.hbm2ddl.auto\">${hibernate.hbm2ddl.auto}</prop>\n                <prop key=\"hibernate.dialect\">${hibernate.dialect}</prop>\n                <prop key=\"hibernate.show_sql\">${hibernate.show_sql}</prop>\n                <prop key=\"hibernate.format_sql\">${hibernate.format_sql}</prop>\n                <prop key=\"hibernate.use_sql_comments\">${hibernate.use_sql_comments}</prop>\n            </props>\n        </property>\n\n        <!-- 自动扫描注解方式配置的hibernate类文件 -->\n        <property name=\"packagesToScan\">\n            <list>\n                <value>light.mvc.model</value>\n            </list>\n        </property>\n\n    </bean>\n\n    <!-- 配置事务管理器 -->\n    <bean name=\"transactionManager\" class=\"org.springframework.orm.hibernate4.HibernateTransactionManager\">\n        <property name=\"sessionFactory\" ref=\"sessionFactory\"></property>\n    </bean>\n\n    <!-- 注解方式配置事物 -->\n    <!-- <tx:annotation-driven transaction-manager=\"transactionManager\" /> -->\n\n    <!-- 拦截器方式配置事物 -->\n    <tx:advice id=\"transactionAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"add*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"append*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"save*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"update*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"modify*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"edit*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delete*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"remove*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"init\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delAndInit\" propagation=\"REQUIRED\"/>\n\n            <tx:method name=\"get*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"find*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"load*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"search*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"datagrid*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n\n            <tx:method name=\"*\" propagation=\"REQUIRED\"/>\n        </tx:attributes>\n    </tx:advice>\n    <aop:config>\n        <aop:pointcut id=\"transactionPointcut\" expression=\"execution(* light.mvc.service..*Impl.*(..))\"/>\n        <aop:advisor pointcut-ref=\"transactionPointcut\" advice-ref=\"transactionAdvice\"/>\n    </aop:config>\n\n</beans>\n"
  },
  {
    "path": "target/classes/spring/spring-mongo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mongo=\"http://www.springframework.org/schema/data/mongo\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\n               http://www.springframework.org/schema/context\n               http://www.springframework.org/schema/context/spring-context.xsd\n               http://www.springframework.org/schema/data/mongo\n            http://www.springframework.org/schema/data/mongo/spring-mongo.xsd\">\n\n    <!-- 加载mongodb的属性配置文件 -->\n <!--   <context:property-placeholder location=\"classpath:mongo.properties\" ignore-unresolvable=\"true\"/>-->\n    <!-- spring连接mongodb数据库的配置 -->\n    <mongo:mongo-client replica-set=\"192.168.137.75:27017\" id=\"mongo\">\n        <mongo:client-options connections-per-host=\"${mongo.connectionsPerHost}\"\n                              threads-allowed-to-block-for-connection-multiplier=\"${mongo.threadsAllowedToBlockForConnectionMultiplier}\"\n                              connect-timeout=\"${mongo.connectTimeout}\"\n                              max-wait-time=\"${mongo.maxWaitTime}\"\n                              socket-timeout=\"${mongo.socketTimeout}\"/>\n    </mongo:mongo-client>\n    <!-- mongo的工厂，通过它来取得mongo实例,dbname为mongodb的数据库名，没有的话会自动创建 -->\n    <mongo:db-factory id=\"mongoDbFactory\" dbname=\"mongoLida\" mongo-ref=\"mongo\"/>\n\n    <!-- 只要使用这个调用相应的方法操作 -->\n    <bean id=\"mongoTemplate\" class=\"org.springframework.data.mongodb.core.MongoTemplate\">\n        <constructor-arg name=\"mongoDbFactory\" ref=\"mongoDbFactory\"/>\n    </bean>\n    <!-- mongodb bean的仓库目录，会自动扫描扩展了MongoRepository接口的接口进行注入 -->\n    <mongo:repositories base-package=\"com.lida.mongo\"/>\n</beans>"
  },
  {
    "path": "target/classes/spring/spring-web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\">\n    <!--配置springmvc-->\n    <!--1.开启springmvc注解模式-->\n    <!--简化配置：\n        (1)主动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter\n        (2)提供一系列功能：数据绑定，数字和日期的format @NumberFormt @DataTimeFormat，xml json默认的读写支持-->\n    <mvc:annotation-driven/>\n    <!--servlet-mapping-->\n    <!--2静态资源默认的servlet配置，（1）允许对静态资源的处理：js，gif    （2）允许使用“/”做整体映射-->\n    <!-- 容器默认的DefaultServletHandler处理 所有静态内容与无RequestMapping处理的URL-->\n    <mvc:default-servlet-handler/>\n    <!--3:配置jsp 显示viewResolver-->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"/>\n        <property name=\"prefix\" value=\"/WEB-INF/views/\"/>\n        <property name=\"suffix\" value=\".jsp\"/>\n    </bean>\n\n    <!-- 4自动扫描且只扫描@Controller -->\n    <context:component-scan base-package=\"com.lida.mongo.controller,light.mvc.controller\"/>\n\n    <!-- 定义无需Controller的url<->view直接映射 -->\n    <mvc:view-controller path=\"/\" view-name=\"redirect:/views/goMongo/list\"/>\n\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\"/>\n\n</beans>"
  },
  {
    "path": "target/mongo/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nBuilt-By: lenovo\nCreated-By: IntelliJ IDEA\nBuild-Jdk: 1.8.0_111\n\n"
  },
  {
    "path": "target/mongo/WEB-INF/classes/config.properties",
    "content": "#hibernate.dialect=sy.util.Oracle10gDialect\n#driverClassName=oracle.jdbc.driver.OracleDriver\n#validationQuery=SELECT 1 FROM DUAL\n#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl\n#jdbc_username=bjlyjoa\n#jdbc_password=bjlyjoa\nhibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect\ndriverClassName=com.mysql.jdbc.Driver\nvalidationQuery=SELECT 1\njdbc_url=jdbc\\:mysql\\://localhost\\:3306/wsn640?useUnicode\\=true&characterEncoding\\=UTF-8&zeroDateTimeBehavior\\=convertToNull\njdbc_username=root\njdbc_password=13713393809\n#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect\n#driverClassName=net.sourceforge.jtds.jdbc.Driver\n#validationQuery=SELECT 1\n#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/qx\n#jdbc_username=sa\n#jdbc_password=123456\nhibernate.hbm2ddl.auto=none\nhibernate.show_sql=false\nhibernate.format_sql=false\nhibernate.use_sql_comments=false\n\n\n#mongoDB\nmongo.hostport=192.168.137.75:27017\nmongo.connectionsPerHost=8\nmongo.threadsAllowedToBlockForConnectionMultiplier=4\n#ӳʱʱ\nmongo.connectTimeout=1000\n#ȴʱ\nmongo.maxWaitTime=1500\n#Socketʱʱ\nmongo.socketTimeout=1500"
  },
  {
    "path": "target/mongo/WEB-INF/classes/logback.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->\n    <property name=\"LOG_HOME\" value=\"d:/log\"/>\n    <!-- 控制台输出 -->\n    <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <!-- 日志输出编码 -->\n        <Encoding>UTF-8</Encoding>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n    </appender>\n    <!-- 按照每天生成日志文件 -->\n    <appender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <Encoding>UTF-8</Encoding>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <!--日志文件输出的文件名-->\n            <FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>\n            <MaxHistory>30</MaxHistory>\n        </rollingPolicy>\n        <layout class=\"ch.qos.logback.classic.PatternLayout\">\n            <!--格式化输出：%d表示日期，%thread表示线程名，%-5level：级别从左显示5个字符宽度%msg：日志消息，%n是换行符-->\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\n            </pattern>\n        </layout>\n        <!--日志文件最大的大小-->\n        <triggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\">\n            <MaxFileSize>10MB</MaxFileSize>\n        </triggeringPolicy>\n    </appender>\n    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicBinder\" level=\"TRACE\"/>\n    <logger name=\"org.hibernate.type.descriptor.sql.BasicExtractor\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.SQL\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.QueryParameters\" level=\"DEBUG\"/>\n    <logger name=\"org.hibernate.engine.query.HQLQueryPlan\" level=\"DEBUG\"/>\n\n    <!-- 日志输出级别 -->\n    <root level=\"INFO\">\n        <appender-ref ref=\"STDOUT\"/>\n        <appender-ref ref=\"FILE\"/>\n    </root>\n\n    <!--日志异步到数据库 -->\n    <!-- <appender name=\"DB\" class=\"ch.qos.logback.classic.db.DBAppender\">\n         &lt;!&ndash;日志异步到数据库 &ndash;&gt;\n         <connectionSource class=\"ch.qos.logback.core.db.DriverManagerConnectionSource\">\n             &lt;!&ndash;连接池 &ndash;&gt;\n             <dataSource class=\"com.mchange.v2.c3p0.ComboPooledDataSource\">\n                 <driverClass>com.mysql.jdbc.Driver</driverClass>\n                 <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>\n                 <user>root</user>\n                 <password>root</password>\n             </dataSource>\n         </connectionSource>\n     </appender> -->\n</configuration>"
  },
  {
    "path": "target/mongo/WEB-INF/classes/mongo.properties",
    "content": "#mongoDB\nmongo.hostport=192.168.137.75:27017\nmongo.connectionsPerHost=8\nmongo.threadsAllowedToBlockForConnectionMultiplier=4\n#ӳʱʱ\nmongo.connectTimeout=1000\n#ȴʱ\nmongo.maxWaitTime=1500\n#Socketʱʱ\nmongo.socketTimeout=1500"
  },
  {
    "path": "target/mongo/WEB-INF/classes/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context.xsd\n       http://www.springframework.org/schema/task\n       http://www.springframework.org/schema/task/spring-task.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <bean class=\"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer\">\n        <property name=\"locations\">\n            <list>\n                <value>classpath:config.properties</value>\n            </list>\n        </property>\n    </bean>\n\n\n    <!--扫描service包嗲所有使用注解的类型-->\n    <context:component-scan base-package=\"com.lida.mongo,light.mvc\"/>\n\n\n\n    <!-- 多部分文件上传 -->\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\">\n        <property name=\"maxUploadSize\" value=\"104857600\" />\n        <property name=\"maxInMemorySize\" value=\"4096\" />\n        <property name=\"defaultEncoding\" value=\"UTF-8\"></property>\n    </bean>\n\n    <!-- Spring MVC JSON配置 -->\n    <bean class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\">\n        <property name=\"messageConverters\">\n            <list>\n                <bean id=\"fastJsonHttpMessageConverter\" class=\"light.mvc.utils.FastJsonHttpMessageConverter\">\n                    <property name=\"supportedMediaTypes\">\n                        <list>\n                            <value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->\n                        </list>\n                    </property>\n                </bean>\n            </list>\n        </property>\n    </bean>\n\n    <!-- 对模型视图名称的解析，即在模型视图名称添加前后缀 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\" p:prefix=\"/WEB-INF/views/\" p:suffix=\".jsp\" />\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/front/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptorFront\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n        <mvc:interceptor>\n            <mvc:mapping path=\"/**\" />\n            <bean class=\"light.mvc.framework.interceptors.SecurityInterceptor\">\n                <!-- 不需要权限验证的地址 -->\n                <property name=\"excludeUrls\">\n                    <list>\n                        <value>/resource/tree</value><!-- 首页左侧功能菜单 -->\n                    </list>\n                </property>\n            </bean>\n        </mvc:interceptor>\n    </mvc:interceptors>\n\n\n    <!-- 导入mongodb的配置文件 -->\n    <import resource=\"spring-mongo.xml\"/>\n    <!-- 开启注解 -->\n    <context:annotation-config/>\n    <!-- 注解方式 -->\n    <context:component-scan base-package=\"com.lida.mongo.task\"/>\n    <task:annotation-driven scheduler=\"qbScheduler\" mode=\"proxy\"/>\n    <task:scheduler id=\"qbScheduler\" pool-size=\"10\"/>\n\n\n</beans>\n\n"
  },
  {
    "path": "target/mongo/WEB-INF/classes/spring/spring-hibernate.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\" xmlns:c=\"http://www.springframework.org/schema/c\"\n       xmlns:cache=\"http://www.springframework.org/schema/cache\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:jdbc=\"http://www.springframework.org/schema/jdbc\" xmlns:jee=\"http://www.springframework.org/schema/jee\"\n       xmlns:lang=\"http://www.springframework.org/schema/lang\" xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:p=\"http://www.springframework.org/schema/p\" xmlns:task=\"http://www.springframework.org/schema/task\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\" xmlns:util=\"http://www.springframework.org/schema/util\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n\t\thttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd\n\t\thttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd\n\t\thttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\n\t\thttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd\n\t\thttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd\n\t\thttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd\n\t\thttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\n\t\thttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd\n\t\thttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd\n\t\thttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean name=\"dataSource\" class=\"com.alibaba.druid.pool.DruidDataSource\" init-method=\"init\" destroy-method=\"close\">\n        <property name=\"url\" value=\"${jdbc_url}\"/>\n        <property name=\"username\" value=\"${jdbc_username}\"/>\n        <property name=\"password\" value=\"${jdbc_password}\"/>\n\n        <!-- 初始化连接大小 -->\n        <property name=\"initialSize\" value=\"0\"/>\n        <!-- 连接池最大使用连接数量 -->\n        <property name=\"maxActive\" value=\"20\"/>\n        <!-- 连接池最小空闲 -->\n        <property name=\"minIdle\" value=\"0\"/>\n        <!-- 获取连接最大等待时间 -->\n        <property name=\"maxWait\" value=\"60000\"/>\n\n        <!-- <property name=\"poolPreparedStatements\" value=\"true\" /> <property name=\"maxPoolPreparedStatementPerConnectionSize\" value=\"33\" /> -->\n\n        <property name=\"validationQuery\" value=\"${validationQuery}\"/>\n        <property name=\"testOnBorrow\" value=\"false\"/>\n        <property name=\"testOnReturn\" value=\"false\"/>\n        <property name=\"testWhileIdle\" value=\"true\"/>\n\n        <!-- 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒 -->\n        <property name=\"timeBetweenEvictionRunsMillis\" value=\"60000\"/>\n        <!-- 配置一个连接在池中最小生存的时间，单位是毫秒 -->\n        <property name=\"minEvictableIdleTimeMillis\" value=\"25200000\"/>\n\n        <!-- 打开removeAbandoned功能 -->\n        <property name=\"removeAbandoned\" value=\"true\"/>\n        <!-- 1800秒，也就是30分钟 -->\n        <property name=\"removeAbandonedTimeout\" value=\"1800\"/>\n        <!-- 关闭abanded连接时输出错误日志 -->\n        <property name=\"logAbandoned\" value=\"true\"/>\n\n        <!-- 监控数据库 -->\n        <!-- <property name=\"filters\" value=\"mergeStat\" /> -->\n        <property name=\"filters\" value=\"stat\"/>\n    </bean>\n\n    <!-- 配置hibernate session工厂 -->\n    <bean id=\"sessionFactory\" class=\"org.springframework.orm.hibernate4.LocalSessionFactoryBean\">\n        <property name=\"dataSource\" ref=\"dataSource\"/>\n        <property name=\"hibernateProperties\">\n            <props>\n                <prop key=\"hibernate.hbm2ddl.auto\">${hibernate.hbm2ddl.auto}</prop>\n                <prop key=\"hibernate.dialect\">${hibernate.dialect}</prop>\n                <prop key=\"hibernate.show_sql\">${hibernate.show_sql}</prop>\n                <prop key=\"hibernate.format_sql\">${hibernate.format_sql}</prop>\n                <prop key=\"hibernate.use_sql_comments\">${hibernate.use_sql_comments}</prop>\n            </props>\n        </property>\n\n        <!-- 自动扫描注解方式配置的hibernate类文件 -->\n        <property name=\"packagesToScan\">\n            <list>\n                <value>light.mvc.model</value>\n            </list>\n        </property>\n\n    </bean>\n\n    <!-- 配置事务管理器 -->\n    <bean name=\"transactionManager\" class=\"org.springframework.orm.hibernate4.HibernateTransactionManager\">\n        <property name=\"sessionFactory\" ref=\"sessionFactory\"></property>\n    </bean>\n\n    <!-- 注解方式配置事物 -->\n    <!-- <tx:annotation-driven transaction-manager=\"transactionManager\" /> -->\n\n    <!-- 拦截器方式配置事物 -->\n    <tx:advice id=\"transactionAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"add*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"append*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"save*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"update*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"modify*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"edit*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delete*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"remove*\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"init\" propagation=\"REQUIRED\"/>\n            <tx:method name=\"delAndInit\" propagation=\"REQUIRED\"/>\n\n            <tx:method name=\"get*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"find*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"load*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"search*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n            <tx:method name=\"datagrid*\" propagation=\"REQUIRED\" read-only=\"true\"/>\n\n            <tx:method name=\"*\" propagation=\"REQUIRED\"/>\n        </tx:attributes>\n    </tx:advice>\n    <aop:config>\n        <aop:pointcut id=\"transactionPointcut\" expression=\"execution(* light.mvc.service..*Impl.*(..))\"/>\n        <aop:advisor pointcut-ref=\"transactionPointcut\" advice-ref=\"transactionAdvice\"/>\n    </aop:config>\n\n</beans>\n"
  },
  {
    "path": "target/mongo/WEB-INF/classes/spring/spring-mongo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mongo=\"http://www.springframework.org/schema/data/mongo\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\n               http://www.springframework.org/schema/context\n               http://www.springframework.org/schema/context/spring-context.xsd\n               http://www.springframework.org/schema/data/mongo\n            http://www.springframework.org/schema/data/mongo/spring-mongo.xsd\">\n\n    <!-- 加载mongodb的属性配置文件 -->\n <!--   <context:property-placeholder location=\"classpath:mongo.properties\" ignore-unresolvable=\"true\"/>-->\n    <!-- spring连接mongodb数据库的配置 -->\n    <mongo:mongo-client replica-set=\"192.168.137.75:27017\" id=\"mongo\">\n        <mongo:client-options connections-per-host=\"${mongo.connectionsPerHost}\"\n                              threads-allowed-to-block-for-connection-multiplier=\"${mongo.threadsAllowedToBlockForConnectionMultiplier}\"\n                              connect-timeout=\"${mongo.connectTimeout}\"\n                              max-wait-time=\"${mongo.maxWaitTime}\"\n                              socket-timeout=\"${mongo.socketTimeout}\"/>\n    </mongo:mongo-client>\n    <!-- mongo的工厂，通过它来取得mongo实例,dbname为mongodb的数据库名，没有的话会自动创建 -->\n    <mongo:db-factory id=\"mongoDbFactory\" dbname=\"mongoLida\" mongo-ref=\"mongo\"/>\n\n    <!-- 只要使用这个调用相应的方法操作 -->\n    <bean id=\"mongoTemplate\" class=\"org.springframework.data.mongodb.core.MongoTemplate\">\n        <constructor-arg name=\"mongoDbFactory\" ref=\"mongoDbFactory\"/>\n    </bean>\n    <!-- mongodb bean的仓库目录，会自动扫描扩展了MongoRepository接口的接口进行注入 -->\n    <mongo:repositories base-package=\"com.lida.mongo\"/>\n</beans>"
  },
  {
    "path": "target/mongo/WEB-INF/classes/spring/spring-web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans.xsd\n       http://www.springframework.org/schema/mvc\n       http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\">\n    <!--配置springmvc-->\n    <!--1.开启springmvc注解模式-->\n    <!--简化配置：\n        (1)主动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter\n        (2)提供一系列功能：数据绑定，数字和日期的format @NumberFormt @DataTimeFormat，xml json默认的读写支持-->\n    <mvc:annotation-driven/>\n    <!--servlet-mapping-->\n    <!--2静态资源默认的servlet配置，（1）允许对静态资源的处理：js，gif    （2）允许使用“/”做整体映射-->\n    <!-- 容器默认的DefaultServletHandler处理 所有静态内容与无RequestMapping处理的URL-->\n    <mvc:default-servlet-handler/>\n    <!--3:配置jsp 显示viewResolver-->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"/>\n        <property name=\"prefix\" value=\"/WEB-INF/views/\"/>\n        <property name=\"suffix\" value=\".jsp\"/>\n    </bean>\n\n    <!-- 4自动扫描且只扫描@Controller -->\n    <context:component-scan base-package=\"com.lida.mongo.controller,light.mvc.controller\"/>\n\n    <!-- 定义无需Controller的url<->view直接映射 -->\n    <mvc:view-controller path=\"/\" view-name=\"redirect:/views/goMongo/list\"/>\n\n    <bean id=\"multipartResolver\" class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\"/>\n\n</beans>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/404.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 404错误页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"error-404\">\n    <div class=\"error-wrap error-wrap-404\">\n        <div class=\"metro big terques\">\n           <span> OOPS! </span>\n        </div>\n        <div class=\"metro green\">\n            <span> 4 </span>\n        </div>\n        <div class=\"metro yellow\">\n            <span> 0 </span>\n        </div>\n        <div class=\"metro purple\">\n            <span> 4 </span>\n        </div>\n        <div class=\"metro double red\">\n            <span class=\"page-txt\"> Page Not Found </span>\n        </div>\n        <div class=\"metro gray\">\n            <a href=\"index.html\" class=\"home\"><i class=\"icon-home\"></i> </a>\n        </div>\n\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/500.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 500页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"error-500\">\n    <div class=\"error-wrap\">\n        <h1>Ouch!</h1>\n        <h2>Looks like something went wrong</h2>\n        <div class=\"metro green\">\n           <span> 5 </span>\n        </div>\n        <div class=\"metro yellow\">\n            <span> 0 </span>\n        </div>\n        <div class=\"metro purple\">\n            <span> 0 </span>\n        </div>\n        <p>For Updates follow us on <a href=\"javascript:;\">twitter</a> , Very soon we will fix the issue. <a href=\"index.html\"> Return Home </a></p>\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/about_us.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-user\"></i> About Us</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!--BEGIN ABOUT US-->\n                                <div class=\"about-us\">\n                                    <div class=\"text-center\">\n                                        <h3>Here is an example of how you can decorate your about us page. <br> Here you will able to present your team list and their skills.</h3>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <h3>Our Philosophy</h3>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <h3>Mission &amp; Vision</h3>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                            <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                        </div>\n                                    </div>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <h3>Our Skills</h3>\n                                            <h5><strong>Web Design</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Wordpress</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Jquery</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>HTML</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>CSS</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>PHP</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                            <h5><strong>Content Management</strong></h5>\n                                            <p>Etiam eget mi enim, non ultricies nisi voluptatem, illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo nemo enim ipsam voluptatem.</p>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <div class=\"space20\"></div>\n                                            <div class=\"space20\"></div>\n                                            <div class=\"space5\"></div>\n                                            <h5>Web Design <span class=\"pull-right\">35%</span></h5>\n                                            <div class=\"progress progress-striped progress-danger\">\n                                                <div style=\"width: 35%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Wordpress <span class=\"pull-right\">40%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 40%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Web Design <span class=\"pull-right\">35%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 35%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Jquery<span class=\"pull-right\">55%</span></h5>\n                                            <div class=\"progress progress-striped progress-success\">\n                                                <div style=\"width: 55%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>HTML<span class=\"pull-right\">85%</span></h5>\n                                            <div class=\"progress progress-striped progress-warning\">\n                                                <div style=\"width: 85%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>CSS<span class=\"pull-right\">67%</span></h5>\n                                            <div class=\"progress progress-striped progress-danger\">\n                                                <div style=\"width: 67%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>PHP <span class=\"pull-right\">45%</span></h5>\n                                            <div class=\"progress progress-striped\">\n                                                <div style=\"width: 45%;\" class=\"bar\"></div>\n                                            </div>\n                                            <h5>Content Management<span class=\"pull-right\">50%</span></h5>\n                                            <div class=\"progress progress-striped progress-success\">\n                                                <div style=\"width: 50%;\" class=\"bar\"></div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END ABOUT US-->\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-group\"></i> Our Team </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"text-center\">\n                                    <h3>Here is an example of how you can decorate your about us page. <br /> You will able to present your team details as well.</h3>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-1.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info terques\">\n                                                    <h1>Jonathan Smith</h1>\n                                                    <p>Chief Executive Officer</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-2.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info red\">\n                                                    <h1>Anjelina Joe</h1>\n                                                    <p>Managing Director</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"space15\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-3.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info green\">\n                                                    <h1>Franklin Mosa</h1>\n                                                    <p>system enginner</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <div class=\"row-fluid about-us\">\n                                            <div class=\"span4\">\n                                                <img src=\"img/about-us/img-4.jpg\" alt=\"\">\n                                            </div>\n                                            <div class=\"span8\">\n                                                <div class=\"info orange\">\n                                                    <h1>Ahmed Yousuf</h1>\n                                                    <p>Creative Designer</p>\n                                                    <div class=\"social-links\">\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-facebook\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-twitter\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-google-plus\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-youtube\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-pinterest\"></i>\n                                                        </a>\n                                                        <a href=\"#\">\n                                                            <i class=\"icon-linkedin\"></i>\n                                                        </a>\n\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <p>\n                                                Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/basic_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Basic Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Larry</td>\n                                                <td>the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Striped Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-striped\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Larry</td>\n                                                <td>the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Border Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-bordered\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td rowspan=\"2\">1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@TwBootstrap</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td colspan=\"2\">Larry the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Hover Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>First Name</th>\n                                                <th>Last Name</th>\n                                                <th>Username</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>Mark</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Jhone</td>\n                                                <td>Otto</td>\n                                                <td>@mdo</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Jacob</td>\n                                                <td>Thornton</td>\n                                                <td>@fat</td>\n                                            </tr>\n                                            <tr>\n                                                <td>4</td>\n                                                <td colspan=\"2\">Larry the Bird</td>\n                                                <td>@twitter</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN BASIC PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Advanced Table</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <table class=\"table table-striped table-bordered table-advance table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th><i class=\"icon-bullhorn\"></i> Company</th>\n                                                <th class=\"hidden-phone\"><i class=\"icon-question-sign\"></i> Descrition</th>\n                                                <th><i class=\"icon-bookmark\"></i> Profit</th>\n                                                <th><i class=\" icon-edit\"></i> Status</th>\n                                                <th></th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        boka soka\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>14400.00$ </td>\n                                                <td><span class=\"label label-success label-mini\">Paid</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        salbal llb\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>2323.50$ </td>\n                                                <td><span class=\"label label-danger label-mini\">Paid</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td><a href=\"#\">Vector Ltd</a></td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo imit</td>\n                                                <td>12120.00$ </td>\n                                                <td><span class=\"label label-important label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                            <tr>\n                                                <td>\n                                                    <a href=\"#\">\n                                                        Adimin co\n                                                    </a>\n                                                </td>\n                                                <td class=\"hidden-phone\">Lorem Ipsum dorolo</td>\n                                                <td>56456.00$ </td>\n                                                <td><span class=\"label label-warning label-mini\">Due</span></td>\n                                                <td>\n                                                    <button class=\"btn btn-success\"><i class=\"icon-ok\"></i></button>\n                                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil\"></i></button>\n                                                    <button class=\"btn btn-danger\"><i class=\"icon-trash \"></i></button>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                            <!-- END BASIC PORTLET-->\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/blank.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Blank Page </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                Blank page sample\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/blog.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLOG PORTLET-->\n                        <div class=\"row-fluid\">\n                            <div class=\"span8 \">\n                                <div class=\"row-fluid\">\n                                    <div class=\"blog\">\n                                        <div class=\"span2 orange\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">02</p>\n                                                <p class=\"month\">Jul</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog1-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 green\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">03</p>\n                                                <p class=\"month\">Aug</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog2-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 red\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">05</p>\n                                                <p class=\"month\">Sep</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog3-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"blog\">\n                                        <div class=\"span2 yellow\">\n                                            <a href=\"javascript:;\" class=\"blog-features date active\">\n                                                <p class=\"day\">02</p>\n                                                <p class=\"month\">Jul</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-comments-alt\"></i>\n                                                <p class=\"info\">145 Comments</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-share\"></i>\n                                                <p class=\"info\">14 Share</p>\n                                            </a>\n                                            <a href=\"javascript:;\" class=\"blog-features comments\">\n                                                <i class=\" icon-eye-open\"></i>\n                                                <p class=\"info\">1400 View</p>\n                                            </a>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <h2>\n                                                <a href=\"blog_details.html\">Suspendisse et mauris nisi, in semper justo.</a>\n                                            </h2>\n                                            <p>\n                                                BY <a href=\"javascript:;\" class=\"author\">METRO LAB</a> |  MONDAY, 12:30 PM\n                                            </p>\n                                            <img alt=\"\" src=\"img/blog/blog1-big.jpg\">\n                                            <p> Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus.  Nam sed arcu non tellus fringilla fringilla ut vel ipsum. Aliquam ac magna metus. Nam sed arcu non tellus fringilla fring. Aliquam ac... <a href=\"blog_details.html\" class=\"read-more\">Continue Reading</a> </p>\n                                        </div>\n                                    </div>\n                                    <div class=\"custom-pagination pagination-centered\">\n                                        <ul>\n                                            <li><a href=\"javascript:;\">«</a></li>\n                                            <li><a href=\"javascript:;\">1</a></li>\n                                            <li><a href=\"javascript:;\">2</a></li>\n                                            <li><a href=\"javascript:;\">3</a></li>\n                                            <li><a href=\"javascript:;\">4</a></li>\n                                            <li><a href=\"javascript:;\">»</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span4\">\n                                <div class=\"blog-side-bar blue-box\">\n                                    <h2> <i class=\" icon-tasks\"></i> category</h2>\n                                    <ul>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-umbrella\"></i>\n                                                <span>Animal</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-trophy\"></i>\n                                                <span>Landscape</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-plane\"></i>\n                                                <span>Potrait</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-pushpin\"></i>\n                                                <span>Wild Life</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-beaker\"></i>\n                                                <span>Video</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\" icon-bullhorn\"></i>\n                                                <span>Nature</span>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n                                <div class=\"blog-side-bar green-box\">\n                                    <h2> <i class=\"  icon-comments-alt\"></i> Latest blog</h2>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-3.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-2.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"green-box-blog\">\n                                            <div class=\"span3\">\n                                                <img alt=\"\" src=\"img/blog/blog-thumb-3.jpg\">\n                                            </div>\n                                            <div class=\"span9\">\n                                                <h5>\n                                                    <a href=\"javascript:;\">02 MAY 2013</a>\n                                                </h5>\n                                                <p>\n                                                    Nam sed arcu non tellus\n                                                    fringilla fringilla ut vel ipsum.\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"space10\"></div>\n                                </div>\n                                <div class=\"blog-side-bar red-box\">\n                                    <h2> <i class=\" icon-tags\"></i> popular tags</h2>\n                                    <ul class=\"unstyled tag\">\n                                        <li><a href=\"#\">Metrolab Admin</a></li>\n                                        <li><a href=\"#\"> Dashboard Theme</a></li>\n                                        <li><a href=\"#\"> Metro</a></li>\n                                        <li><a href=\"#\"> Control Panel</a></li>\n                                        <li><a href=\"#\"> UI</a></li>\n                                        <li><a href=\"#\"> Web Design</a></li>\n                                        <li><a href=\"#\"> UIX</a></li>\n                                        <li><a href=\"#\"> Blog</a></li>\n                                        <li><a href=\"#\">Metrolab Admin</a></li>\n                                        <li><a href=\"#\"> Dashboard Theme</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"blog-side-bar orange-box\">\n                                    <h2> <i class=\" icon-tasks\"></i> Archive</h2>\n                                    <ul>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">OCT</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">Nov</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">dec</span>\n                                                <span>2012</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">jan</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">feb</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <span class=\"large\">mar</span>\n                                                <span>2013</span>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLOG PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/button.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    <button class=\"btn btn-mini\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-mini btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-mini btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-mini btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-mini btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-mini btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-mini btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-mini disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-small\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-small btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-small btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-small btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-small btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-small btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-small btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-small disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn \" type=\"button\">Default</button>\n                                    <button class=\"btn  btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn  btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn  btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn  btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn  btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn  btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn  disabled\" type=\"button\">Disabled</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-large\" type=\"button\">Default</button>\n                                    <button class=\"btn btn-large btn-primary\" type=\"button\">Primary</button>\n                                    <button class=\"btn btn-large btn-info\" type=\"button\">Info</button>\n                                    <button class=\"btn btn-large btn-success\" type=\"button\">Success</button>\n                                    <button class=\"btn btn-large btn-warning\" type=\"button\">Warning</button>\n                                    <button class=\"btn btn-large btn-danger\" type=\"button\">Danger</button>\n                                    <button class=\"btn btn-large btn-inverse\" type=\"button\">Inverse</button>\n                                    <button class=\"btn btn-large disabled\" type=\"button\">Disabled</button>\n                                </p>\n                            </div>\n                        </div>\n                        <!-- END BUTTON PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON DROPDOWN PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dropdown Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-small btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-primary dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-danger dropdown-toggle\">Danger <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-warning dropdown-toggle\">Warning <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-success dropdown-toggle\">Success <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-info dropdown-toggle\">Info <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-inverse dropdown-toggle\">Inverse <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BUTTON DROPDOWN PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BUTTON DROPDOWN PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dropdown Split Buttons </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-mini btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-primary\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-primary dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-info\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-info dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-success\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-success dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-warning\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-warning dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-danger\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-danger dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-large btn-inverse\">Action</button>\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-large btn-inverse dropdown-toggle b2\"><span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu\">\n                                            <li><a href=\"#\"><i class=\"icon-trash\"></i> Remove all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-music\"></i> Play all</a></li>\n                                            <li><a href=\"#\"><i class=\"icon-plus-sign\"></i> Add to Favorites</a></li>\n                                        </ul>\n                                    </div>\n                                    <h4>Drop-up menu</h4>\n                                    <p>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn\"><i class=\"icon-user\"></i> Dropup</button>\n                                            <button class=\"btn dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-warning\"><i class=\"icon-cog\"></i> Dropup</button>\n                                            <button class=\"btn btn-warning dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-success\"><i class=\"icon-tasks\"></i> Dropup</button>\n                                            <button class=\"btn btn-success dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-danger\"><i class=\"icon-star\"></i> Dropup</button>\n                                            <button class=\"btn btn-danger dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"btn-group dropup\">\n                                            <button class=\"btn btn-inverse\"><i class=\"icon-user\"></i> Dropup</button>\n                                            <button class=\"btn btn-inverse dropdown-toggle\" data-toggle=\"dropdown\"><span class=\"caret\"></span></button>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a href=\"#\">Action</a></li>\n                                                <li><a href=\"#\">Another action</a></li>\n                                                <li><a href=\"#\">Something else here</a></li>\n                                                <li class=\"divider\"></li>\n                                                <li><a href=\"#\">Separated link</a></li>\n                                            </ul>\n                                        </div>\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END BUTTON DROPDOWN PORTLET-->\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN ICON BUTTON PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Buttons with Icons</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    <button class=\"btn btn-mini\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-mini btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-mini btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-mini btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-mini btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-mini btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-mini btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-small\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-small btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-small btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-small btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-small btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-small btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-small btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-large\"><i class=\"icon-eye-open\"></i> View</button>\n                                    <button class=\"btn btn-large btn-warning\"><i class=\"icon-plus icon-white\"></i> Create</button>\n                                    <button class=\"btn btn-large btn-inverse\"><i class=\"icon-refresh icon-white\"></i> Update</button>\n                                    <button class=\"btn btn-large btn-primary\"><i class=\"icon-pencil icon-white\"></i> Edit</button>\n                                    <button class=\"btn btn-large btn-danger\"><i class=\"icon-remove icon-white\"></i> Delete</button>\n                                    <button class=\"btn btn-large btn-info\"><i class=\"icon-ban-circle icon-white\"></i> Cancel</button>\n                                    <button class=\"btn btn-large btn-success\"><i class=\"icon-ok icon-white\"></i> Approve</button>\n                                </p>\n                                <p>\n                                    <button class=\"btn\"><i class=\"icon-chevron-left\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-up\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-right\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-chevron-down\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-plus\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-minus\"></i></button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-left\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-up\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-right\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-chevron-down\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-plus\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-minus\"></i></button>\n                                </p>\n                                <p>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-ok\"></i></button>\n                                    <button class=\"btn btn-inverse\"><i class=\"icon-remove\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-cloud\"></i></button>\n                                    <button class=\"btn btn-warning\"><i class=\"icon-home\"></i></button>\n                                    <button class=\"btn btn-info\"><i class=\"icon-search\"></i></button>\n                                    <button class=\"btn btn-danger\"><i class=\"icon-download\"></i></button>\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END ICON BUTTON PORTLET-->\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN GROUP BUTTON PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Group Buttons</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>Horizontal Group Button</p>\n                                <p>\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn\">Left</button>\n                                        <button class=\"btn\">Middle</button>\n                                        <button class=\"btn\">Right</button>\n                                    </div>\n\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-inverse\">Left</button>\n                                        <button class=\"btn btn-inverse\">Middle</button>\n                                        <button class=\"btn btn-inverse\">Right</button>\n                                    </div>\n\n                                    <div class=\"btn-group\">\n                                        <button class=\"btn btn-info\">Left</button>\n                                        <button class=\"btn btn-info\">Middle</button>\n                                        <button class=\"btn btn-info\">Right</button>\n                                    </div>\n                                </p>\n                                <p>Vertical Group Button</p>\n                                <p>\n                                    <div class=\"btn-group-vertical\" style=\"margin-right: 20px\">\n                                        <button class=\"btn\">1</button>\n                                        <button class=\"btn\">2</button>\n                                        <button class=\"btn\">3</button>\n                                    </div>\n\n                                    <div class=\"btn-group-vertical\">\n                                        <button class=\"btn btn-inverse\">1</button>\n                                        <button class=\"btn btn-inverse\">2</button>\n                                        <button class=\"btn btn-inverse\">3</button>\n                                    </div>\n                                </p>\n                                <p>Toolbar icon example</p>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn btn-primary\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone btn-primary\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone btn-primary\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn btn-primary\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-group\">\n                                    <button class=\"btn btn-success\"><i class=\"icon-step-backward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-fast-backward\"></i></button>\n                                    <button class=\"btn hidden-phone btn-success\"><i class=\"icon-backward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-play\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-pause\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-stop\"></i></button>\n                                    <button class=\"btn hidden-phone btn-success\"><i class=\"icon-forward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-fast-forward\"></i></button>\n                                    <button class=\"btn btn-success\"><i class=\"icon-step-forward\"></i></button>\n                                </div>\n                                <div class=\"btn-toolbar\">\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-info\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-danger\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-warning\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                    <div class=\"btn-group\">\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-left\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-center\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-right\"></i></a>\n                                        <a href=\"#\" class=\"btn btn-inverse\"><i class=\"icon-align-justify\"></i></a>\n                                    </div>\n                                </div>\n                                <p>Star Rating Example</p>\n                                <span class=\"rating\">\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                    <span class=\"star\"></span>\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END GROUP BUTTON PORTLET-->\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN CUSTOM BUTTONS WITH ICONS PORTLET-->\n                        <h4>Custom Buttons with Icons</h4>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-group\"></i>\n                                <div>Users</div>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-barcode\"></i>\n                                <div>Products</div>\n                                <span class=\"badge badge-success\">4</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-reorder\"></i>\n                                <div>Reports</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-sitemap\"></i>\n                                <div>Categories</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-calendar\"></i>\n                                <div>Calendar</div>\n                                <span class=\"badge badge-success\">4</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-envelope\"></i>\n                                <div>Inbox</div>\n                                <span class=\"badge badge-info\">12</span>\n                            </a>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-bullhorn\"></i>\n                                <div>Notification</div>\n                                <span class=\"badge badge-important\">3</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-map-marker\"></i>\n                                <div>Locations</div>\n                            </a>\n\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-money\"></i>\n                                <div>Finance</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-plane\"></i>\n                                <div>Projects</div>\n                                <span class=\"badge badge-info\">21</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-thumbs-up\"></i>\n                                <div>Feedback</div>\n                                <span class=\"badge badge-info\">2</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-cloud\"></i>\n                                <div>Servers</div>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-globe\"></i>\n                                <div>Regions</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-heart-empty\"></i>\n                                <div>Popularity</div>\n                                <span class=\"badge badge-info\">221</span>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-wrench\"></i>\n                                <div>Settings</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-search\"></i>\n                                <div>Search</div>\n                            </a>\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-map-marker\"></i>\n                                <div>Locations</div>\n                            </a>\n\n                            <a class=\"icon-btn span2\" href=\"#\">\n                                <i class=\"icon-money\"></i>\n                                <div>Finance</div>\n                            </a>\n                        </div>\n                        <!-- END CUSTOM BUTTONS WITH ICONS PORTLET-->\n                    </div>\n                    <span class=\"space20\">&nbsp;</span>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/calendar.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css\" rel=\"stylesheet\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span3\">\n\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-calendar\"></i> Draggable Events</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div id='external-events'>\n                                    <div class='external-event label'>My Event 1</div>\n                                    <div class='external-event label'>My Event 2</div>\n                                    <div class='external-event label'>My Event 3</div>\n                                    <div class='external-event label'>My Event 4</div>\n                                    <div class='external-event label'>My Event 5</div>\n                                    <div class='external-event label'>My Event 6</div>\n                                    <div class='external-event label'>My Event 7</div>\n                                    <div class='external-event label'>My Event 8</div>\n                                    <div class='external-event label'>My Event 9</div>\n                                    <div class='external-event label'>My Event 10</div>\n                                    <p>\n                                        <input type='checkbox' id='drop-remove' />\n                                        remove after drop\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n\n                    </div>\n                    <div class=\"span9 responsive\" data-tablet=\"span9 fix-margin\" data-desktop=\"span9\">\n                        <!-- BEGIN CALENDAR PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-calendar\"></i> Calendar</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div id=\"calendar\" class=\"has-toolbar\"></div>\n                            </div>\n                        </div>\n                        <!-- END CALENDAR PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n\n\n    <script type=\"text/javascript\" src=\"assets/jquery-slimscroll/jquery-ui-1.9.2.custom.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/jquery-slimscroll/jquery.slimscroll.min.js\"></script>\n    <script src=\"assets/fullcalendar/fullcalendar/fullcalendar.min.js\"></script>\n\n\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/external-dragging-calendar.js\"></script>\n    \n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/chartjs.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Doughnut</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"doughnut\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"> </i> Line</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"line\" height=\"300\" width=\"450\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> PolarArea</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"polarArea\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Bar</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"bar\" height=\"300\" width=\"500\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"pie\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN CHART PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Radar</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"text-center\">\n                                        <canvas id=\"radar\" height=\"300\" width=\"400\"></canvas>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END CHART PORTLET-->\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/chart-master/Chart.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/all-chartjs.js\"></script>\n\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/contact_us.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-envelope\"></i> Contact Us </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"contact-us\">\n                                    <div class=\"row-fluid\">\n                                        <div id=\"map-canvas\" style=\"width: 100%; height: 400px\"></div>\n                                    </div>\n                                    <div class=\"space15\"></div>\n                                    <h3>Our Contacts</h3>\n                                    <div class=\"space15\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"widget red\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Location</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        Jonathon Smith <br>\n                                                        House 31, Road 12, Sector 4<br>\n                                                        Dream Town,  Dreamland 1230<br>\n                                                        Phone: +966 1 000000<br>\n                                                        Fax : 1234 5678 909\n                                                    </p>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"widget green\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Online</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        <strong>Email :</strong> info@vectorlab.com <br>\n                                                        <strong>Support :</strong> support@vectorlab.com<br>\n                                                        <strong>Live Chat :</strong> live@vectorlab.com<br>\n                                                        <strong>Skype :</strong> skype@vectorlab.com<br>\n                                                        <strong>Fax :</strong> 1234 5678 909\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"widget orange\">\n                                                <div class=\"widget-title\">\n                                                    <h4>Social Network</h4>\n                                                </div>\n                                                <div class=\"widget-body\">\n                                                    <p>\n                                                        <strong>Facebook :</strong> www.facebook.com/vectorlab1<br>\n                                                        <strong>Twitter :</strong> www.twitter.com/vectorlab1<br>\n                                                        <strong>Google + :</strong> www.googleplus.com/vectorlab1<br>\n                                                    </p>\n                                                    <div class=\"space15\"></div>\n                                                    <div class=\"space15\"></div>\n                                                    <div class=\"space10\"></div>\n                                                </div>\n                                            </div>\n\n\n                                        </div>\n                                    </div>\n                                    <div class=\"space20\"></div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"feedback\">\n                                            <h3>Feedback</h3>\n                                            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p>\n                                            <div class=\"space20\"></div>\n\n                                            <form class=\"form-inline \">\n                                                <div class=\"control-group\">\n                                                    <input type=\"text\" placeholder=\"Name\" class=\"span12\">\n                                                </div>\n                                                <div class=\"control-group \">\n                                                    <input type=\"text\" placeholder=\"Email\" class=\"span6 one-half\">\n                                                    <input type=\"text\" placeholder=\"Phone\" class=\"span6\">\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <textarea placeholder=\"Message\" class=\"span12\" rows=\"5\"></textarea>\n                                                </div>\n                                                <div class=\"text-center\">\n                                                    <button class=\"btn btn-success \" type=\"submit\">Submit</button>\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/draggable_portlet.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\" id=\"draggable_portlets\">\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                    <div class=\"span4 column sortable\">\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 1</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 2</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                        <!-- BEGIN Portlet PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Portlet 3</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                    Cras mattis consectetur purus sit amet fermentum. Duis mollis.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END Portlet PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"js/draggable-portlet.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script>\n        jQuery(document).ready(function () {\n            DraggablePortlet.init();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/dynamic_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/uniform/css/uniform.default.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN EXAMPLE TABLE widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Dynamic Table</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table table-striped table-bordered\" id=\"sample_1\">\n                                    <thead>\n                                        <tr>\n                                            <th style=\"width:8px;\"><input type=\"checkbox\" class=\"group-checkable\" data-set=\"#sample_1 .checkboxes\" /></th>\n                                            <th>Username</th>\n                                            <th class=\"hidden-phone\">Email</th>\n                                            <th class=\"hidden-phone\">Points</th>\n                                            <th class=\"hidden-phone\">Joined</th>\n                                            <th class=\"hidden-phone\"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>Jhone doe</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:jhone-doe@gmail.com\">jhone-doe@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">10</td>\n                                            <td class=\"center hidden-phone\">02.03.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>gada</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:gada-lal@gmail.com\">gada-lal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">34</td>\n                                            <td class=\"center hidden-phone\">08.03.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-warning\">Suspended</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@yahoo.com\">soa bal@yahoo.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">1.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>ram sag</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">7.2.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>durlab</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>durlab</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>bombi</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>ABC ho</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>goop</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">01.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>woeri</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">09.10.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">9.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>woeri</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">14.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>uirer</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">13.11.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-warning\">Suspended</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>samsu</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">17.11.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>dipsdf</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">05.04.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>soa bal</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">soa bal@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-inverse\">Blocked</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>hilor</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">test@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">03.07.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>test</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">19.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>botu</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">17.12.2013</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                        <tr class=\"odd gradeX\">\n                                            <td><input type=\"checkbox\" class=\"checkboxes\" value=\"1\" /></td>\n                                            <td>sumon</td>\n                                            <td class=\"hidden-phone\"><a href=\"mailto:soa bal@gmail.com\">lorem-ip@gmail.com</a></td>\n                                            <td class=\"hidden-phone\">33</td>\n                                            <td class=\"center hidden-phone\">15.11.2011</td>\n                                            <td class=\"hidden-phone\"><span class=\"label label-success\">Approved</span></td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                        <!-- END EXAMPLE TABLE widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/jquery.dataTables.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/DT_bootstrap.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/dynamic-table.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/editable_table.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN EXAMPLE TABLE widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Editable Table</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div>\n                                    <div class=\"clearfix\">\n                                        <div class=\"btn-group\">\n                                            <button id=\"editable-sample_new\" class=\"btn green\">\n                                                Add New <i class=\"icon-plus\"></i>\n                                            </button>\n                                        </div>\n                                        <div class=\"btn-group pull-right\">\n                                            <button class=\"btn dropdown-toggle\" data-toggle=\"dropdown\">\n                                                Tools <i class=\"icon-angle-down\"></i>\n                                            </button>\n                                            <ul class=\"dropdown-menu pull-right\">\n                                                <li><a href=\"#\">Print</a></li>\n                                                <li><a href=\"#\">Save as PDF</a></li>\n                                                <li><a href=\"#\">Export to Excel</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                    <div class=\"space15\"></div>\n                                    <table class=\"table table-striped table-hover table-bordered\" id=\"editable-sample\">\n                                        <thead>\n                                            <tr>\n                                                <th>Username</th>\n                                                <th>Full Name</th>\n                                                <th>Points</th>\n                                                <th>Notes</th>\n                                                <th>Edit</th>\n                                                <th>Delete</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr class=\"\">\n                                                <td>Jondi Rose</td>\n                                                <td>Alfred Jondi Rose</td>\n                                                <td>1234</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Dulal</td>\n                                                <td>Jonathan Smith</td>\n                                                <td>434</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Sumon</td>\n                                                <td> Sumon Ahmed</td>\n                                                <td>232</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>vectorlab</td>\n                                                <td>dk mosa</td>\n                                                <td>132</td>\n                                                <td class=\"center\">elite user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Admin</td>\n                                                <td> Admin lab</td>\n                                                <td>462</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Rafiqul</td>\n                                                <td>Rafiqul dulal</td>\n                                                <td>62</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Jhon Doe</td>\n                                                <td>Jhon Doe </td>\n                                                <td>1234</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Dulal</td>\n                                                <td>Jonathan Smith</td>\n                                                <td>434</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Sumon</td>\n                                                <td> Sumon Ahmed</td>\n                                                <td>232</td>\n                                                <td class=\"center\">super user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>vectorlab</td>\n                                                <td>dk mosa</td>\n                                                <td>132</td>\n                                                <td class=\"center\">elite user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Admin</td>\n                                                <td> Admin lab</td>\n                                                <td>462</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                            <tr class=\"\">\n                                                <td>Rafiqul</td>\n                                                <td>Rafiqul dulal</td>\n                                                <td>62</td>\n                                                <td class=\"center\">new user</td>\n                                                <td><a class=\"edit\" href=\"javascript:;\">Edit</a></td>\n                                                <td><a class=\"delete\" href=\"javascript:;\">Delete</a></td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END EXAMPLE TABLE widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/jquery.dataTables.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/data-tables/DT_bootstrap.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/editable-table.js\"></script>\n    <script>\n        jQuery(document).ready(function () {\n            EditableTable.init();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/faq.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-question-sign\"></i> FAQ </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span3\">\n                                        <h4 class=\"title grey\">FAQ Sections</h4>\n                                        <div class=\"clearfix\">\n                                            <ul class=\"nav nav-list faq-list\">\n                                                <li>\n                                                    <a class=\"active\" href=\"#\"><i class=\" icon-signin\"></i> General Questions</a>\n                                                </li>\n                                                <li><a href=\"#\"><i class=\"icon-pushpin\"></i> Lorem Ipsum is simply dummy</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-question-sign\"></i> Contrary to popular belief</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-briefcase\"></i> There are many variation</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-truck\"></i> standard chunk of Lorem </a></li>\n                                                <li><a href=\"#\"><i class=\"icon-trophy\"></i> Lorem Ipsum as their text</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-leaf\"></i> Lorem Ipsum as their default</a></li>\n                                                <li><a href=\"#\"><i class=\"icon-tags\"></i>  Ipsum as default model text</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                    <div class=\"span9\">\n                                        <h4>General Questions</h4>\n                                        <div id=\"accordion\" class=\"accordion in collapse\" style=\"height: auto;\">\n\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseOne\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse in\" id=\"collapseOne\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseTwo\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseTwo\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseThree\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseThree\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseFour\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseFour\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseFive\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseFive\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseSix\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Nihil anim keffiyeh helvetica, craft beer labore wes ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseSix\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapseSeven\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Ad vegan excepteur butcher vice lomo ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapseSeven\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"accordion-group\">\n                                                <div class=\"accordion-heading\">\n                                                    <a href=\"#collapse8\" data-parent=\"#accordion\" data-toggle=\"collapse\" class=\"accordion-toggle\">\n                                                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ?\n                                                    </a>\n                                                </div>\n                                                <div class=\"accordion-body collapse\" id=\"collapse8\">\n                                                    <div class=\"accordion-inner\">\n                                                        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.\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/flot_chart.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wraper\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-bar-chart\"></i> Statistics </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\" style=\"width: 96%\">\n                                    <div class=\"plots\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN TRACKING CURVES PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Tracking Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END TRACKING CURVES PORTLET-->\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Selection Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END BASIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN INTERACTIVE CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Live Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END INTERACTIVE CHART PORTLET-->\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN DYNAMIC CHART PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Support Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-4\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END DYNAMIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN Bar Chat PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Bar Chat</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-5\" style=\"height:350px;\"></div>\n                                    <div class=\"btn-toolbar\">\n                                        <div class=\"btn-group stackControls\">\n                                            <input type=\"button\" class=\"btn btn-info\" value=\"With stacking\" />\n                                            <input type=\"button\" class=\"btn btn-danger\" value=\"Without stacking\" />\n                                        </div>\n                                        <div class=\"space5\"></div>\n                                        <div class=\"btn-group graphControls\">\n                                            <input type=\"button\" class=\"btn\" value=\"Bars\" />\n                                            <input type=\"button\" class=\"btn\" value=\"Lines\" />\n                                            <input type=\"button\" class=\"btn\" value=\"Lines with steps\" />\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END Bar Chat PORTLET-->\n                        </div>\n                    </div>\n\n\n                    <!-- BEGIN PIE CHART PORTLET-->\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"span6\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Pie Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"graph3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Donut Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"donut\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END PIE CHART PORTLET-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/flot/jquery.flot.js\"></script>\n    <script src=\"assets/flot/jquery.flot.resize.js\"></script>\n    <script src=\"assets/flot/jquery.flot.pie.js\"></script>\n    <script src=\"assets/flot/jquery.flot.stack.js\"></script>\n    <script src=\"assets/flot/jquery.flot.crosshair.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/flot-chart.js\"></script>\n    <script src=\"js/custom-flot-chart.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/font_awesome.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN FONT AWESOME ICONS PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Font Awesome Icons</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"row-fluid fontawesome-icon-list\">\n\n\n\n                                        <div id=\"new\">\n                                            <h2 class=\"page-header\">New Icons in 3.2</h2>\n\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-compass\"></i> icon-compass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse\"></i> icon-collapse</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-top\"></i> icon-collapse-top</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand\"></i> icon-expand</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eur\"></i> icon-eur</div>\n\n                                                <div class=\"span3\"><i class=\"icon-euro\"></i> icon-euro <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gbp\"></i> icon-gbp</div>\n\n                                                <div class=\"span3\"><i class=\"icon-usd\"></i> icon-usd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dollar\"></i> icon-dollar <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-inr\"></i> icon-inr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rupee\"></i> icon-rupee <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-jpy\"></i> icon-jpy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-yen\"></i> icon-yen <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-cny\"></i> icon-cny</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renminbi\"></i> icon-renminbi <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-krw\"></i> icon-krw</div>\n\n                                                <div class=\"span3\"><i class=\"icon-won\"></i> icon-won <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-file\"></i> icon-file</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text\"></i> icon-file-text</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet\"></i> icon-sort-by-alphabet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet-alt\"></i> icon-sort-by-alphabet-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes\"></i> icon-sort-by-attributes</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes-alt\"></i> icon-sort-by-attributes-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order\"></i> icon-sort-by-order</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order-alt\"></i> icon-sort-by-order-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-sign\"></i> icon-youtube-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube\"></i> icon-youtube</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing\"></i> icon-xing</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing-sign\"></i> icon-xing-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dropbox\"></i> icon-dropbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stackexchange\"></i> icon-stackexchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-instagram\"></i> icon-instagram</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flickr\"></i> icon-flickr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-adn\"></i> icon-adn        </div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket\"></i> icon-bitbucket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket-sign\"></i> icon-bitbucket-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr\"></i> icon-tumblr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr-sign\"></i> icon-tumblr-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-down\"></i> icon-long-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-up\"></i> icon-long-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-left\"></i> icon-long-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-right\"></i> icon-long-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-apple\"></i> icon-apple</div>\n\n                                                <div class=\"span3\"><i class=\"icon-windows\"></i> icon-windows</div>\n\n                                                <div class=\"span3\"><i class=\"icon-android\"></i> icon-android</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linux\"></i> icon-linux</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dribbble\"></i> icon-dribbble</div>\n\n                                                <div class=\"span3\"><i class=\"icon-skype\"></i> icon-skype</div>\n\n                                                <div class=\"span3\"><i class=\"icon-foursquare\"></i> icon-foursquare</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trello\"></i> icon-trello</div>\n\n                                                <div class=\"span3\"><i class=\"icon-female\"></i> icon-female</div>\n\n                                                <div class=\"span3\"><i class=\"icon-male\"></i> icon-male</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gittip\"></i> icon-gittip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sun\"></i> icon-sun</div>\n\n                                                <div class=\"span3\"><i class=\"icon-moon\"></i> icon-moon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-archive\"></i> icon-archive</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bug\"></i> icon-bug</div>\n\n                                                <div class=\"span3\"><i class=\"icon-vk\"></i> icon-vk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-weibo\"></i> icon-weibo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renren\"></i> icon-renren</div>\n\n                                            </div>\n\n                                        </div>\n\n                                        <section id=\"web-application\">\n                                            <h2 class=\"page-header\">Web Application Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-adjust\"></i> icon-adjust</div>\n\n                                                <div class=\"span3\"><i class=\"icon-anchor\"></i> icon-anchor</div>\n\n                                                <div class=\"span3\"><i class=\"icon-archive\"></i> icon-archive</div>\n\n                                                <div class=\"span3\"><i class=\"icon-asterisk\"></i> icon-asterisk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ban-circle\"></i> icon-ban-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bar-chart\"></i> icon-bar-chart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-barcode\"></i> icon-barcode</div>\n\n                                                <div class=\"span3\"><i class=\"icon-beaker\"></i> icon-beaker</div>\n\n                                                <div class=\"span3\"><i class=\"icon-beer\"></i> icon-beer</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bell\"></i> icon-bell</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bell-alt\"></i> icon-bell-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bolt\"></i> icon-bolt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-book\"></i> icon-book</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bookmark\"></i> icon-bookmark</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bookmark-empty\"></i> icon-bookmark-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-briefcase\"></i> icon-briefcase</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bug\"></i> icon-bug</div>\n\n                                                <div class=\"span3\"><i class=\"icon-building\"></i> icon-building</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bullhorn\"></i> icon-bullhorn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bullseye\"></i> icon-bullseye</div>\n\n                                                <div class=\"span3\"><i class=\"icon-calendar\"></i> icon-calendar</div>\n\n                                                <div class=\"span3\"><i class=\"icon-calendar-empty\"></i> icon-calendar-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-camera\"></i> icon-camera</div>\n\n                                                <div class=\"span3\"><i class=\"icon-camera-retro\"></i> icon-camera-retro</div>\n\n                                                <div class=\"span3\"><i class=\"icon-certificate\"></i> icon-certificate</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check\"></i> icon-check</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-empty\"></i> icon-check-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-minus\"></i> icon-check-minus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-check-sign\"></i> icon-check-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle\"></i> icon-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-blank\"></i> icon-circle-blank</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud\"></i> icon-cloud</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud-download\"></i> icon-cloud-download</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cloud-upload\"></i> icon-cloud-upload</div>\n\n                                                <div class=\"span3\"><i class=\"icon-code\"></i> icon-code</div>\n\n                                                <div class=\"span3\"><i class=\"icon-code-fork\"></i> icon-code-fork</div>\n\n                                                <div class=\"span3\"><i class=\"icon-coffee\"></i> icon-coffee</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cog\"></i> icon-cog</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cogs\"></i> icon-cogs</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse\"></i> icon-collapse</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-alt\"></i> icon-collapse-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-collapse-top\"></i> icon-collapse-top</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comment\"></i> icon-comment</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comment-alt\"></i> icon-comment-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comments\"></i> icon-comments</div>\n\n                                                <div class=\"span3\"><i class=\"icon-comments-alt\"></i> icon-comments-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-compass\"></i> icon-compass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-credit-card\"></i> icon-credit-card</div>\n\n                                                <div class=\"span3\"><i class=\"icon-crop\"></i> icon-crop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dashboard\"></i> icon-dashboard</div>\n\n                                                <div class=\"span3\"><i class=\"icon-desktop\"></i> icon-desktop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-download\"></i> icon-download</div>\n\n                                                <div class=\"span3\"><i class=\"icon-download-alt\"></i> icon-download-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-edit\"></i> icon-edit</div>\n\n                                                <div class=\"span3\"><i class=\"icon-edit-sign\"></i> icon-edit-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ellipsis-horizontal\"></i> icon-ellipsis-horizontal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ellipsis-vertical\"></i> icon-ellipsis-vertical</div>\n\n                                                <div class=\"span3\"><i class=\"icon-envelope\"></i> icon-envelope</div>\n\n                                                <div class=\"span3\"><i class=\"icon-envelope-alt\"></i> icon-envelope-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eraser\"></i> icon-eraser</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exchange\"></i> icon-exchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exclamation\"></i> icon-exclamation</div>\n\n                                                <div class=\"span3\"><i class=\"icon-exclamation-sign\"></i> icon-exclamation-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand\"></i> icon-expand</div>\n\n                                                <div class=\"span3\"><i class=\"icon-expand-alt\"></i> icon-expand-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-external-link\"></i> icon-external-link</div>\n\n                                                <div class=\"span3\"><i class=\"icon-external-link-sign\"></i> icon-external-link-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eye-close\"></i> icon-eye-close</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eye-open\"></i> icon-eye-open</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facetime-video\"></i> icon-facetime-video</div>\n\n                                                <div class=\"span3\"><i class=\"icon-female\"></i> icon-female</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fighter-jet\"></i> icon-fighter-jet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-film\"></i> icon-film</div>\n\n                                                <div class=\"span3\"><i class=\"icon-filter\"></i> icon-filter</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fire\"></i> icon-firev</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fire-extinguisher\"></i> icon-fire-extinguisher</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag\"></i> icon-flag</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag-alt\"></i> icon-flag-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flag-checkered\"></i> icon-flag-checkered</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-close\"></i> icon-folder-close</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-close-alt\"></i> icon-folder-close-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-open\"></i> icon-folder-open</div>\n\n                                                <div class=\"span3\"><i class=\"icon-folder-open-alt\"></i> icon-folder-open-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-food\"></i> icon-food</div>\n\n                                                <div class=\"span3\"><i class=\"icon-frown\"></i> icon-frown</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gamepad\"></i> icon-gamepad</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gear\"></i> icon-gear <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gears\"></i> icon-gears <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gift\"></i> icon-gift</div>\n\n                                                <div class=\"span3\"><i class=\"icon-glass\"></i> icon-glass</div>\n\n                                                <div class=\"span3\"><i class=\"icon-globe\"></i> icon-globe</div>\n\n                                                <div class=\"span3\"><i class=\"icon-group\"></i> icon-group</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hdd\"></i> icon-hdd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-headphones\"></i> icon-headphones</div>\n\n                                                <div class=\"span3\"><i class=\"icon-heart\"></i> icon-heart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-heart-empty\"></i> icon-heart-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-home\"></i> icon-home</div>\n\n                                                <div class=\"span3\"><i class=\"icon-inbox\"></i> icon-inbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-info\"></i> icon-info</div>\n\n                                                <div class=\"span3\"><i class=\"icon-info-sign\"></i> icon-info-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-key\"></i> icon-key</div>\n\n                                                <div class=\"span3\"><i class=\"icon-keyboard\"></i> icon-keyboard</div>\n\n                                                <div class=\"span3\"><i class=\"icon-laptop\"></i> icon-laptop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-leaf\"></i> icon-leaf</div>\n\n                                                <div class=\"span3\"><i class=\"icon-legal\"></i> icon-legal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lemon\"></i> icon-lemon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-level-down\"></i> icon-level-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-level-up\"></i> icon-level-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lightbulb\"></i> icon-lightbulb</div>\n\n                                                <div class=\"span3\"><i class=\"icon-location-arrow\"></i> icon-location-arrow</div>\n\n                                                <div class=\"span3\"><i class=\"icon-lock\"></i> icon-lock</div>\n\n                                                <div class=\"span3\"><i class=\"icon-magic\"></i> icon-magic</div>\n\n                                                <div class=\"span3\"><i class=\"icon-magnet\"></i> icon-magnet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-forward\"></i> icon-mail-forward <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-reply\"></i> icon-mail-reply <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-mail-reply-all\"></i> icon-mail-reply-all</div>\n\n                                                <div class=\"span3\"><i class=\"icon-male\"></i> icon-male</div>\n\n                                                <div class=\"span3\"><i class=\"icon-map-marker\"></i> icon-map-marker</div>\n\n                                                <div class=\"span3\"><i class=\"icon-meh\"></i> icon-meh</div>\n\n                                                <div class=\"span3\"><i class=\"icon-microphone\"></i> icon-microphone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-microphone-off\"></i> icon-microphone-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus\"></i> icon-minus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus-sign\"></i> icon-minus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-minus-sign-alt\"></i> icon-minus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-mobile-phone\"></i> icon-mobile-phone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-money\"></i> icon-money</div>\n\n                                                <div class=\"span3\"><i class=\"icon-moon\"></i> icon-moon</div>\n\n                                                <div class=\"span3\"><i class=\"icon-move\"></i> icon-move</div>\n\n                                                <div class=\"span3\"><i class=\"icon-music\"></i> icon-music</div>\n\n                                                <div class=\"span3\"><i class=\"icon-off\"></i> icon-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok\"></i> icon-ok</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok-circle\"></i> icon-ok-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ok-sign\"></i> icon-ok-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pencil\"></i> icon-pencil</div>\n\n                                                <div class=\"span3\"><i class=\"icon-phone\"></i> icon-phone</div>\n\n                                                <div class=\"span3\"><i class=\"icon-phone-sign\"></i> icon-phone-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-picture\"></i> icon-picture</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plane\"></i> icon-plane</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus\"></i> icon-plus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign\"></i> icon-plus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign-alt\"></i> icon-plus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-power-off\"></i> icon-power-off <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-print\"></i> icon-print</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pushpin\"></i> icon-pushpin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-puzzle-piece\"></i> icon-puzzle-piece</div>\n\n                                                <div class=\"span3\"><i class=\"icon-qrcode\"></i> icon-qrcode</div>\n\n                                                <div class=\"span3\"><i class=\"icon-question\"></i> icon-question</div>\n\n                                                <div class=\"span3\"><i class=\"icon-question-sign\"></i> icon-question-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-quote-left\"></i> icon-quote-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-quote-right\"></i> icon-quote-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-random\"></i> icon-randomv</div>\n\n                                                <div class=\"span3\"><i class=\"icon-refresh\"></i> icon-refresh</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove\"></i> icon-remove</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove-circle\"></i> icon-remove-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-remove-sign\"></i> icon-remove-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reorder\"></i> icon-reorder</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reply\"></i> icon-reply</div>\n\n                                                <div class=\"span3\"><i class=\"icon-reply-all\"></i> icon-reply-all</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-horizontal\"></i> icon-resize-horizontal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-vertical\"></i> icon-resize-vertical</div>\n\n                                                <div class=\"span3\"><i class=\"icon-retweet\"></i> icon-retweet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-road\"></i> icon-road</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rocket\"></i> icon-rocket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rss\"></i> icon-rss</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rss-sign\"></i> icon-rss-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-screenshot\"></i> icon-screenshot</div>\n\n                                                <div class=\"span3\"><i class=\"icon-search\"></i> icon-search</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share\"></i> icon-share</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share-alt\"></i> icon-share-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-share-sign\"></i> icon-share-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-shield\"></i> icon-shield</div>\n\n                                                <div class=\"span3\"><i class=\"icon-shopping-cart\"></i> icon-shopping-cart</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sign-blank\"></i> icon-sign-blank</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signal\"></i> icon-signal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signin\"></i> icon-signin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-signout\"></i> icon-signout</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sitemap\"></i> icon-sitemap</div>\n\n                                                <div class=\"span3\"><i class=\"icon-smile\"></i> icon-smile</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort\"></i> icon-sort</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet\"></i> icon-sort-by-alphabet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-alphabet-alt\"></i> icon-sort-by-alphabet-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes\"></i> icon-sort-by-attributes</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-attributes-alt\"></i> icon-sort-by-attributes-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order\"></i> icon-sort-by-order</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-by-order-alt\"></i> icon-sort-by-order-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-down\"></i> icon-sort-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sort-up\"></i> icon-sort-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-spinner\"></i> icon-spinner</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star\"></i> icon-star</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-empty\"></i> icon-star-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half\"></i> icon-star-half</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half-empty\"></i> icon-star-half-empty</div>\n\n                                                <div class=\"span3\"><i class=\"icon-star-half-full\"></i> icon-star-half-full <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-subscript\"></i> icon-subscript</div>\n\n                                                <div class=\"span3\"><i class=\"icon-suitcase\"></i> icon-suitcase</div>\n\n                                                <div class=\"span3\"><i class=\"icon-sun\"></i> icon-sun</div>\n\n                                                <div class=\"span3\"><i class=\"icon-superscript\"></i> icon-superscript</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tablet\"></i> icon-tablet</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tag\"></i> icon-tag</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tags\"></i> icon-tags</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tasks\"></i> icon-tasks</div>\n\n                                                <div class=\"span3\"><i class=\"icon-terminal\"></i> icon-terminal</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-down-alt\"></i> icon-thumbs-down-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-thumbs-up-alt\"></i> icon-thumbs-up-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-ticket\"></i> icon-ticket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-time\"></i> icon-time</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tint\"></i> icon-tint</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trash\"></i> icon-trash</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trophy\"></i> icon-trophy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-truck\"></i> icon-truck</div>\n\n                                                <div class=\"span3\"><i class=\"icon-umbrella\"></i> icon-umbrella</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unchecked\"></i> icon-unchecked <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlock\"></i> icon-unlock</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlock-alt\"></i> icon-unlock-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-upload\"></i> icon-upload</div>\n\n                                                <div class=\"span3\"><i class=\"icon-upload-alt\"></i> icon-upload-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-user\"></i> icon-user</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-down\"></i> icon-volume-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-off\"></i> icon-volume-off</div>\n\n                                                <div class=\"span3\"><i class=\"icon-volume-up\"></i> icon-volume-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-warning-sign\"></i> icon-warning-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-wrench\"></i> icon-wrench</div>\n\n                                                <div class=\"span3\"><i class=\"icon-zoom-in\"></i> icon-zoom-in</div>\n\n                                                <div class=\"span3\"><i class=\"icon-zoom-out\"></i> icon-zoom-out</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"currency\">\n                                            <h2 class=\"page-header\">Currency Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cny\"></i> icon-cny</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dollar\"></i> icon-dollar <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-eur\"></i> icon-eur</div>\n\n                                                <div class=\"span3\"><i class=\"icon-euro\"></i> icon-euro <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-gbp\"></i> icon-gbp</div>\n\n                                                <div class=\"span3\"><i class=\"icon-inr\"></i> icon-inr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-jpy\"></i> icon-jpy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-krw\"></i> icon-krw</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renminbi\"></i> icon-renminbi <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-rupee\"></i> icon-rupee <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-usd\"></i> icon-usd</div>\n\n                                                <div class=\"span3\"><i class=\"icon-won\"></i> icon-won <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-yen\"></i> icon-yen <span class=\"muted\">(alias)</span></div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"text-editor\">\n                                            <h2 class=\"page-header\">Text Editor Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-align-center\"></i> icon-align-center</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-justify\"></i> icon-align-justify</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-left\"></i> icon-align-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-align-right\"></i> icon-align-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bold\"></i> icon-bold</div>\n\n                                                <div class=\"span3\"><i class=\"icon-columns\"></i> icon-columns</div>\n\n                                                <div class=\"span3\"><i class=\"icon-copy\"></i> icon-copy</div>\n\n                                                <div class=\"span3\"><i class=\"icon-cut\"></i> icon-cut</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eraser\"></i> icon-eraser</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file\"></i> icon-file</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-alt\"></i> icon-file-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text\"></i> icon-file-text</div>\n\n                                                <div class=\"span3\"><i class=\"icon-file-text-alt\"></i> icon-file-text-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-font\"></i> icon-font</div>\n\n                                                <div class=\"span3\"><i class=\"icon-indent-left\"></i> icon-indent-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-indent-right\"></i> icon-indent-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-italic\"></i> icon-italic</div>\n\n                                                <div class=\"span3\"><i class=\"icon-link\"></i> icon-link</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list\"></i> icon-list</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-alt\"></i> icon-list-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-ol\"></i> icon-list-ol</div>\n\n                                                <div class=\"span3\"><i class=\"icon-list-ul\"></i> icon-list-ul</div>\n\n                                                <div class=\"span3\"><i class=\"icon-paper-clip\"></i> icon-paper-clip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-paperclip\"></i> icon-paperclip <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-paste\"></i> icon-paste</div>\n\n                                                <div class=\"span3\"><i class=\"icon-repeat\"></i> icon-repeat</div>\n\n                                                <div class=\"span3\"><i class=\"icon-rotate-left\"></i> icon-rotate-left <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-rotate-right\"></i> icon-rotate-right <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-save\"></i> icon-save</div>\n\n                                                <div class=\"span3\"><i class=\"icon-strikethrough\"></i> icon-strikethrough</div>\n\n                                                <div class=\"span3\"><i class=\"icon-table\"></i> icon-table</div>\n\n                                                <div class=\"span3\"><i class=\"icon-text-height\"></i> icon-text-height</div>\n\n                                                <div class=\"span3\"><i class=\"icon-text-width\"></i> icon-text-width</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th\"></i> icon-th</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th-large\"></i> icon-th-large</div>\n\n                                                <div class=\"span3\"><i class=\"icon-th-list\"></i> icon-th-list</div>\n\n                                                <div class=\"span3\"><i class=\"icon-underline\"></i> icon-underline</div>\n\n                                                <div class=\"span3\"><i class=\"icon-undo\"></i> icon-undo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-unlink\"></i> icon-unlink</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"directional\">\n                                            <h2 class=\"page-header\">Directional Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-angle-down\"></i> icon-angle-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-left\"></i> icon-angle-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-right\"></i> icon-angle-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-angle-up\"></i> icon-angle-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-down\"></i> icon-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-left\"></i> icon-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-right\"></i> icon-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-arrow-up\"></i> icon-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-down\"></i> icon-caret-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-left\"></i> icon-caret-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-right\"></i> icon-caret-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-caret-up\"></i> icon-caret-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-down\"></i> icon-chevron-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-left\"></i> icon-chevron-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-right\"></i> icon-chevron-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-down\"></i> icon-chevron-sign-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-left\"></i> icon-chevron-sign-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-right\"></i> icon-chevron-sign-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-sign-up\"></i> icon-chevron-sign-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-chevron-up\"></i> icon-chevron-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-down\"></i> icon-circle-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-left\"></i> icon-circle-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-right\"></i> icon-circle-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-circle-arrow-up\"></i> icon-circle-arrow-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-down\"></i> icon-double-angle-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-left\"></i> icon-double-angle-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-right\"></i> icon-double-angle-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-double-angle-up\"></i> icon-double-angle-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-down\"></i> icon-hand-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-left\"></i> icon-hand-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-right\"></i> icon-hand-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hand-up\"></i> icon-hand-up</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-down\"></i> icon-long-arrow-down</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-left\"></i> icon-long-arrow-left</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-right\"></i> icon-long-arrow-right</div>\n\n                                                <div class=\"span3\"><i class=\"icon-long-arrow-up\"></i> icon-long-arrow-up</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"video-player\">\n                                            <h2 class=\"page-header\">Video Player Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-backward\"></i> icon-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-eject\"></i> icon-eject</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fast-backward\"></i> icon-fast-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fast-forward\"></i> icon-fast-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-forward\"></i> icon-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-fullscreen\"></i> icon-fullscreen</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pause\"></i> icon-pause</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play\"></i> icon-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play-circle\"></i> icon-play-circle</div>\n\n                                                <div class=\"span3\"><i class=\"icon-play-sign\"></i> icon-play-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-full\"></i> icon-resize-full</div>\n\n                                                <div class=\"span3\"><i class=\"icon-resize-small\"></i> icon-resize-small</div>\n\n                                                <div class=\"span3\"><i class=\"icon-step-backward\"></i> icon-step-backward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-step-forward\"></i> icon-step-forward</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stop\"></i> icon-stop</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                            </div>\n\n                                        </section>\n\n                                        <section id=\"brand\">\n                                            <h2 class=\"page-header\">Brand Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n                                                <div class=\"span3\"><i class=\"icon-adn\"></i> icon-adn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-android\"></i> icon-android</div>\n\n                                                <div class=\"span3\"><i class=\"icon-apple\"></i> icon-apple</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket\"></i> icon-bitbucket</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitbucket-sign\"></i> icon-bitbucket-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-bitcoin\"></i> icon-bitcoin <span class=\"muted\">(alias)</span></div>\n\n                                                <div class=\"span3\"><i class=\"icon-btc\"></i> icon-btc</div>\n\n                                                <div class=\"span3\"><i class=\"icon-css3\"></i> icon-css3</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dribbble\"></i> icon-dribbble</div>\n\n                                                <div class=\"span3\"><i class=\"icon-dropbox\"></i> icon-dropbox</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facebook\"></i> icon-facebook</div>\n\n                                                <div class=\"span3\"><i class=\"icon-facebook-sign\"></i> icon-facebook-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-flickr\"></i> icon-flickr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-foursquare\"></i> icon-foursquare</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github\"></i> icon-github</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github-alt\"></i> icon-github-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-github-sign\"></i> icon-github-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-gittip\"></i> icon-gittip</div>\n\n                                                <div class=\"span3\"><i class=\"icon-google-plus\"></i> icon-google-plus</div>\n\n                                                <div class=\"span3\"><i class=\"icon-google-plus-sign\"></i> icon-google-plus-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-html5\"></i> icon-html5</div>\n\n                                                <div class=\"span3\"><i class=\"icon-instagram\"></i> icon-instagram</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linkedin\"></i> icon-linkedin</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linkedin-sign\"></i> icon-linkedin-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-linux\"></i> icon-linux</div>\n\n                                                <div class=\"span3\"><i class=\"icon-maxcdn\"></i> icon-maxcdn</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pinterest\"></i> icon-pinterest</div>\n\n                                                <div class=\"span3\"><i class=\"icon-pinterest-sign\"></i> icon-pinterest-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-renren\"></i> icon-renren</div>\n\n                                                <div class=\"span3\"><i class=\"icon-skype\"></i> icon-skype</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stackexchange\"></i> icon-stackexchange</div>\n\n                                                <div class=\"span3\"><i class=\"icon-trello\"></i> icon-trello</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr\"></i> icon-tumblr</div>\n\n                                                <div class=\"span3\"><i class=\"icon-tumblr-sign\"></i> icon-tumblr-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-twitter\"></i> icon-twitter</div>\n\n                                                <div class=\"span3\"><i class=\"icon-twitter-sign\"></i> icon-twitter-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-vk\"></i> icon-vk</div>\n\n                                                <div class=\"span3\"><i class=\"icon-weibo\"></i> icon-weibo</div>\n\n                                                <div class=\"span3\"><i class=\"icon-windows\"></i> icon-windows</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing\"></i> icon-xing</div>\n\n                                                <div class=\"span3\"><i class=\"icon-xing-sign\"></i> icon-xing-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube\"></i> icon-youtube</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-play\"></i> icon-youtube-play</div>\n\n                                                <div class=\"span3\"><i class=\"icon-youtube-sign\"></i> icon-youtube-sign</div>\n\n                                            </div>\n                                        </section>\n\n                                        <section id=\"medical\">\n                                            <h2 class=\"page-header\">Medical Icons</h2>\n\n                                            <div class=\"row the-icons\">\n\n\n\n                                                <div class=\"span3\"><i class=\"icon-ambulance\"></i> icon-ambulance</div>\n\n                                                <div class=\"span3\"><i class=\"icon-h-sign\"></i> icon-h-sign</div>\n\n                                                <div class=\"span3\"><i class=\"icon-hospital\"></i> icon-hospital</div>\n\n                                                <div class=\"span3\"><i class=\"icon-medkit\"></i> icon-medkit</div>\n\n                                                <div class=\"span3\"><i class=\"icon-plus-sign-alt\"></i> icon-plus-sign-alt</div>\n\n                                                <div class=\"span3\"><i class=\"icon-stethoscope\"></i> icon-stethoscope</div>\n\n                                                <div class=\"span3\"><i class=\"icon-user-md\"></i> icon-user-md</div>\n\n                                            </div>\n\n                                        </section>\n\n\n                                    </div>\n\n\n                                </div>\n\n                            </div>\n                        </div>\n                        <!-- END FONT AWESOME ICONS PORTLET-->\n                    </div>\n                </div>\n                <!--END:BODY-->\n            </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/form_component.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/chosen-bootstrap/chosen/chosen.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/jquery-tags-input/jquery.tagsinput.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/clockface/css/clockface.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-datepicker/css/datepicker.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-timepicker/compiled/timepicker.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-colorpicker/css/colorpicker.css\" />\n    <link rel=\"stylesheet\" href=\"assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-daterangepicker/daterangepicker.css\" />\n    <link rel=\"stylesheet\" href=\"../../../../code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Sample Form </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6 \" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Disabled Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" type=\"text\" placeholder=\"Disabled input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Readonly Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" type=\"text\" placeholder=\"Readonly input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input with Tooltip</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6  tooltips\" data-trigger=\"hover\" data-original-title=\"Tooltip text goes here. Tooltip text goes here.\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input with Popover</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6  popovers\" data-trigger=\"hover\" data-content=\"Popover body goes here. Popover body goes here.\" data-original-title=\"Popover header\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Auto Complete</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6 \" style=\"margin: 0 auto;\" data-provide=\"typeahead\" data-items=\"4\" data-source=\"[&quot;Alabama&quot;,&quot;Alaska&quot;,&quot;Arizona&quot;,&quot;Arkansas&quot;,&quot;California&quot;,&quot;Colorado&quot;,&quot;Connecticut&quot;,&quot;Delaware&quot;,&quot;Florida&quot;,&quot;Georgia&quot;,&quot;Hawaii&quot;,&quot;Idaho&quot;,&quot;Illinois&quot;,&quot;Indiana&quot;,&quot;Iowa&quot;,&quot;Kansas&quot;,&quot;Kentucky&quot;,&quot;Louisiana&quot;,&quot;Maine&quot;,&quot;Maryland&quot;,&quot;Massachusetts&quot;,&quot;Michigan&quot;,&quot;Minnesota&quot;,&quot;Mississippi&quot;,&quot;Missouri&quot;,&quot;Montana&quot;,&quot;Nebraska&quot;,&quot;Nevada&quot;,&quot;New Hampshire&quot;,&quot;New Jersey&quot;,&quot;New Mexico&quot;,&quot;New York&quot;,&quot;North Dakota&quot;,&quot;North Carolina&quot;,&quot;Ohio&quot;,&quot;Oklahoma&quot;,&quot;Oregon&quot;,&quot;Pennsylvania&quot;,&quot;Rhode Island&quot;,&quot;South Carolina&quot;,&quot;South Dakota&quot;,&quot;Tennessee&quot;,&quot;Texas&quot;,&quot;Utah&quot;,&quot;Vermont&quot;,&quot;Virginia&quot;,&quot;Washington&quot;,&quot;West Virginia&quot;,&quot;Wisconsin&quot;,&quot;Wyoming&quot;]\" />\n                                            <p class=\"help-block\">Start typing to auto complete!. E.g: Florida</p>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Email Address Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend\">\n                                                <span class=\"add-on\">@</span><input class=\" \" type=\"text\" placeholder=\"Email Address\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Email Address Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-icon left\">\n                                                <i class=\"icon-envelope\"></i>\n                                                <input class=\" \" type=\"text\" placeholder=\"Email Address\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Currency Input</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend input-append\">\n                                                <span class=\"add-on\">$</span><input class=\" \" type=\"text\" /><span class=\"add-on\">.00</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 \" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"\">Select...</option>\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Dropdown(Multiple)</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 \" multiple=\"multiple\" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                                <option value=\"Category 3\">Category 6</option>\n                                                <option value=\"Category 4\">Category 7</option>\n                                                <option value=\"Category 3\">Category 8</option>\n                                                <option value=\"Category 4\">Category 9</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Custom Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"span6 chzn-select\" data-placeholder=\"Choose a Category\" tabindex=\"1\">\n                                                <option value=\"\"></option>\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Grouped Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Team\" class=\"chzn-select span6\" tabindex=\"-1\" id=\"selS0V\">\n                                                <option value=\"\"></option>\n                                                <optgroup label=\"NFC EAST\">\n                                                    <option>Dallas Cowboys</option>\n                                                    <option>New York Giants</option>\n                                                    <option>Philadelphia Eagles</option>\n                                                    <option>Washington Redskins</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC NORTH\">\n                                                    <option>Chicago Bears</option>\n                                                    <option>Detroit Lions</option>\n                                                    <option>Green Bay Packers</option>\n                                                    <option>Minnesota Vikings</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC SOUTH\">\n                                                    <option>Atlanta Falcons</option>\n                                                    <option>Carolina Panthers</option>\n                                                    <option>New Orleans Saints</option>\n                                                    <option>Tampa Bay Buccaneers</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC WEST\">\n                                                    <option>Arizona Cardinals</option>\n                                                    <option>St. Louis Rams</option>\n                                                    <option>San Francisco 49ers</option>\n                                                    <option>Seattle Seahawks</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC EAST\">\n                                                    <option>Buffalo Bills</option>\n                                                    <option>Miami Dolphins</option>\n                                                    <option>New England Patriots</option>\n                                                    <option>New York Jets</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC NORTH\">\n                                                    <option>Baltimore Ravens</option>\n                                                    <option>Cincinnati Bengals</option>\n                                                    <option>Cleveland Browns</option>\n                                                    <option>Pittsburgh Steelers</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC SOUTH\">\n                                                    <option>Houston Texans</option>\n                                                    <option>Indianapolis Colts</option>\n                                                    <option>Jacksonville Jaguars</option>\n                                                    <option>Tennessee Titans</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC WEST\">\n                                                    <option>Denver Broncos</option>\n                                                    <option>Kansas City Chiefs</option>\n                                                    <option>Oakland Raiders</option>\n                                                    <option>San Diego Chargers</option>\n                                                </optgroup>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Multiple Dropdown Select</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Teams\" class=\"chzn-select span6\" multiple=\"multiple\" tabindex=\"6\">\n                                                <option value=\"\"></option>\n                                                <optgroup label=\"NFC EAST\">\n                                                    <option>Dallas Cowboys</option>\n                                                    <option>New York Giants</option>\n                                                    <option>Philadelphia Eagles</option>\n                                                    <option>Washington Redskins</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC NORTH\">\n                                                    <option selected>Chicago Bears</option>\n                                                    <option>Detroit Lions</option>\n                                                    <option>Green Bay Packers</option>\n                                                    <option>Minnesota Vikings</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC SOUTH\">\n                                                    <option>Atlanta Falcons</option>\n                                                    <option selected>Carolina Panthers</option>\n                                                    <option>New Orleans Saints</option>\n                                                    <option>Tampa Bay Buccaneers</option>\n                                                </optgroup>\n                                                <optgroup label=\"NFC WEST\">\n                                                    <option>Arizona Cardinals</option>\n                                                    <option>St. Louis Rams</option>\n                                                    <option>San Francisco 49ers</option>\n                                                    <option>Seattle Seahawks</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC EAST\">\n                                                    <option>Buffalo Bills</option>\n                                                    <option>Miami Dolphins</option>\n                                                    <option>New England Patriots</option>\n                                                    <option>New York Jets</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC NORTH\">\n                                                    <option>Baltimore Ravens</option>\n                                                    <option>Cincinnati Bengals</option>\n                                                    <option>Cleveland Browns</option>\n                                                    <option>Pittsburgh Steelers</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC SOUTH\">\n                                                    <option>Houston Texans</option>\n                                                    <option>Indianapolis Colts</option>\n                                                    <option>Jacksonville Jaguars</option>\n                                                    <option>Tennessee Titans</option>\n                                                </optgroup>\n                                                <optgroup label=\"AFC WEST\">\n                                                    <option>Denver Broncos</option>\n                                                    <option>Kansas City Chiefs</option>\n                                                    <option>Oakland Raiders</option>\n                                                    <option>San Diego Chargers</option>\n                                                </optgroup>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\"> Dropdown Diselect</label>\n                                        <div class=\"controls\">\n                                            <select data-placeholder=\"Your Favorite Type of Bear\" class=\"chzn-select-deselect span6\" tabindex=\"-1\" id=\"selCSI\">\n                                                <option value=\"\"></option>\n                                                <option>American Black Bear</option>\n                                                <option>Asiatic Black Bear</option>\n                                                <option>Brown Bear</option>\n                                                <option>Giant Panda</option>\n                                                <option selected=\"\">Sloth Bear</option>\n                                                <option>Sun Bear</option>\n                                                <option>Polar Bear</option>\n                                                <option>Spectacled Bear</option>\n                                            </select>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span6 \" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Submit</button>\n                                        <button type=\"button\" class=\"btn\">Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Dual Select\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN DUAL SELECT-->\n                                <form name=\"form1\" method=\"post\" action=\"#\" id=\"form1\">\n                                    <div>\n                                        <input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"wEPDwUKMTk5MjI0ODUwOWRkJySmk0TGHOhSY+d9BU9NHeCKW6o=\" />\n                                    </div>\n                                    <div>\n                                        <table style=\"width: 100%;\" class=\"\">\n                                            <tr>\n                                                <td style=\"width: 35%\">\n                                                    <div class=\"d-sel-filter\">\n                                                        <span>Filter:</span>\n                                                        <input type=\"text\" id=\"box1Filter\" />\n                                                        <button type=\"button\" class=\"btn\" id=\"box1Clear\">X</button>\n                                                    </div>\n\n                                                    <select id=\"box1View\" multiple=\"multiple\" style=\"height:300px;width:75%\">\n\n                                                        <option value=\"501649\">2008-2009 \"Mini\" Baja</option>\n\n                                                        <option value=\"501497\">AAPA - Asian American Psychological Association</option>\n\n                                                        <option value=\"501053\">Academy of Film Geeks</option>\n\n                                                        <option value=\"500001\">Accounting Association</option>\n\n                                                        <option value=\"501227\">ACLU</option>\n\n                                                        <option value=\"501610\">Active Minds</option>\n\n                                                        <option value=\"501514\">Activism with A Reel Edge (A.W.A.R.E.)</option>\n\n                                                        <option value=\"501656\">Adopt a Grandparent Program</option>\n\n                                                        <option value=\"501050\">Africa Awareness Student Organization</option>\n\n                                                        <option value=\"501075\">African Diasporic Cultural RC Interns</option>\n\n                                                        <option value=\"501493\">Agape</option>\n\n                                                        <option value=\"501562\">AGE-Alliance for Graduate Excellence</option>\n\n                                                        <option value=\"500676\">AICHE (American Inst of Chemical Engineers)</option>\n\n                                                        <option value=\"501460\">AIDS Sensitivity Awareness Project ASAP</option>\n\n                                                        <option value=\"500004\">Aikido Club</option>\n\n                                                        <option value=\"500336\">Akanke</option>\n\n                                                    </select><br />\n\n                                                    <span id=\"box1Counter\" class=\"countLabel\"></span>\n\n                                                    <select id=\"box1Storage\"></select>\n                                                </td>\n                                                <td style=\"width: 21%; vertical-align: middle\">\n                                                    <button id=\"to2\" class=\"btn\" type=\"button\">&nbsp;>&nbsp;</button>\n\n                                                    <button id=\"allTo2\" class=\"btn\" type=\"button\">&nbsp;>>&nbsp;</button>\n\n                                                    <button id=\"allTo1\" class=\"btn\" type=\"button\">&nbsp;<<&nbsp;</button>\n\n                                                    <button id=\"to1\" class=\"btn\" type=\"button\">&nbsp;<&nbsp;</button>\n                                                </td>\n                                                <td style=\"width: 35%\">\n                                                    <div class=\"d-sel-filter\">\n                                                        <span>Filter:</span>\n                                                        <input type=\"text\" id=\"box2Filter\" />\n                                                        <button type=\"button\" class=\"btn\" id=\"box2Clear\">X</button>\n                                                    </div>\n\n                                                    <select id=\"box2View\" multiple=\"multiple\" style=\"height:300px;width:75%;\"></select><br />\n\n                                                    <span id=\"box2Counter\" class=\"countLabel\"></span>\n\n                                                    <select id=\"box2Storage\"></select>\n                                                </td>\n                                            </tr>\n                                        </table>\n                                    </div>\n                                    <div class=\"mtop20\">\n                                        <input type=\"submit\" value=\"Submit\" class=\"btn\">\n                                    </div>\n                                </form>\n                                <!-- END DUAL SELECT-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Tags Input\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n                                        <div class=\"controls\">\n                                            <input id=\"tags_1\" type=\"text\" class=\"tags\" value=\"php,ios,javascript,ruby,android,kindle\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Fixed Width</label>\n                                        <div class=\"controls\">\n                                            <input id=\"tags_2\" type=\"text\" class=\"tags\" value=\"tag1,tag2\" />\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Masked inputs\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 1</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999-99-999-9999-9\" class=\"span5\">\n                                            <span class=\"help-inline\">999-99-999-9999-9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 2</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999 99 999 9999 9\" class=\"span5\">\n                                            <span class=\"help-inline\">999 99 999 9999 9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">ISBN 3</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999/99/999/9999/9\" class=\"span5\">\n                                            <span class=\"help-inline\">999/99/999/9999/9</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">IPV4</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"999.999.999.9999\" class=\"span5\">\n                                            <span class=\"help-inline\">192.168.110.310</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">IPV6</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"9999:9999:9999:9:999:9999:9999:9999\" class=\"span5\">\n                                            <span class=\"help-inline\">4deg:1340:6547:2:540:h8je:ve73:98pd</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Tax ID</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99-9999999\" class=\"span5\">\n                                            <span class=\"help-inline\">99-9999999</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Phone</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"(999) 999-9999\" class=\"span5\">\n                                            <span class=\"help-inline\">(999) 999-9999</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Currency</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"$ 999,999,999.99\" class=\"span5\">\n                                            <span class=\"help-inline\">$ 999,999,999.99</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Date</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99/99/9999\" class=\"span5\">\n                                            <span class=\"help-inline\">dd/mm/yyyy</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Date 2</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\"\" data-mask=\"99-99-9999\" class=\"span5\">\n                                            <span class=\"help-inline\">dd-mm-yyyy</span>\n                                        </div>\n                                    </div>\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Dropdown\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form switch-form\">\n                                <div class=\"widget-body form\">\n                                    <!-- BEGIN FORM-->\n                                    <form class=\"form-horizontal\" action=\"#\">\n                                        <div class=\"row-fluid\">\n                                            <div class=\"span6\">\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Right Action Input</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-append\">\n                                                            <input type=\"text\" class=\" medium\">\n                                                            <div class=\"btn-group\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\"> Right Input Dropup</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-append\">\n                                                            <input class=\"medium\" type=\"text\">\n                                                            <div class=\"btn-group dropup\">\n                                                                <button class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\">\n                                                                    Action <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu pull-right\">\n                                                                    <li>\n                                                                        <a href=\"#\">Action</a>\n                                                                    </li>\n                                                                    <li>\n                                                                        <a href=\"#\">Another action</a>\n                                                                    </li>\n                                                                    <li>\n                                                                        <a href=\"#\">Something else here</a>\n                                                                    </li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li>\n                                                                        <a href=\"#\">Separated link</a>\n                                                                    </li>\n                                                                </ul>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n\n\n                                            </div>\n                                            <div class=\"span6\">\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Left Action Input</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-prepend\">\n                                                            <div class=\"btn-group\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action\n                                                                    <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                            <!-- /btn-group -->\n                                                            <input type=\"text\" class=\" medium\">\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Left Input Dropup</label>\n                                                    <div class=\"controls\">\n                                                        <div class=\"input-prepend\">\n                                                            <div class=\"btn-group dropup\">\n                                                                <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">\n                                                                    Action\n                                                                    <span class=\"caret\"></span>\n                                                                </button>\n                                                                <ul class=\"dropdown-menu\">\n                                                                    <li><a href=\"#\">Action</a></li>\n                                                                    <li><a href=\"#\">Another action</a></li>\n                                                                    <li><a href=\"#\">Something else here</a></li>\n                                                                    <li class=\"divider\"></li>\n                                                                    <li><a href=\"#\">Separated link</a></li>\n                                                                </ul>\n                                                            </div>\n                                                            <!-- /btn-group -->\n                                                            <input type=\"text\" class=\" medium\">\n                                                        </div>\n                                                    </div>\n                                                </div>\n\n                                            </div>\n                                        </div>\n                                    </form>\n                                    <!--</form>-->\n                                    <div class=\"space20\"></div>\n                                    <!-- END FORM-->\n\n                                </div>\n                            </div>\n\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Color Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" value=\"#8fff00\" class=\"cp1\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">RGBA</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" data-color-format=\"rgba\" value=\"rgb(0,194,255,0.78)\" class=\"cp2\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">As Component</label>\n\n                                        <div class=\"controls\">\n                                            <div data-color-format=\"rgba\" data-color=\"#87BB33\" class=\"input-append color cp1\">\n                                                <input type=\"text\" readonly=\"\" value=\"#87BB33\" class=\"\">\n                                                <span class=\"add-on\"><i style=\"background-color: #87BB33;\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Time Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Timepicker</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append bootstrap-timepicker\">\n                                                <input id=\"timepicker1\" type=\"text\" class=\"input-small\">\n                                                <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">24hr Timepicker</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append bootstrap-timepicker\">\n                                                <input id=\"timepicker2\" type=\"text\" class=\"input-small\">\n                                                <span class=\"add-on\"> <i class=\"icon-time\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div id=\"myModal1\" class=\"modal hide fade\">\n                                        <div class=\"modal-header\">\n                                            <h3>Timepicker inside a modal</h3>\n                                        </div>\n                                        <div class=\"modal-body\" style=\"min-height: 230px\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Default Timepicker</label>\n\n                                                <div class=\"controls\">\n                                                    <div class=\"bootstrap-timepicker\">\n                                                        <input id=\"timepicker3\" type=\"text\" value=\"10:35 AM\" class=\"input-small\">\n                                                        <i class=\"icon-time\"\n                                                           style=\"margin: -2px 0 0 -22.5px; pointer-events: none;position: relative;\"></i>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            <div class=\"space10\"></div>\n\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">24hr Timepicker</label>\n\n                                                <div class=\"controls\">\n                                                    <div class=\"input-append bootstrap-timepicker\">\n                                                        <input id=\"timepicker4\" type=\"text\" class=\"input-small\">\n                                                        <span class=\"add-on\"> <i class=\"icon-time\"></i></span>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"modal-footer\">\n                                            <a data-dismiss=\"modal\" class=\"btn btn-primary\" href=\"#\">OK</a>\n                                        </div>\n                                    </div>\n                                    <a class=\"btn btn-primary\" href=\"#myModal1\" data-toggle=\"modal\">Timepicker inside a modal</a>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Clockface Time Pickers\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Input</label>\n\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\" small\" data-format=\"hh:mm A\" value=\"4:18 PM\"\n                                                   id=\"clockface_1\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Button</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append\">\n                                                <input type=\"text\" readonly=\"\" class=\" small\" value=\"12:10\" id=\"clockface_2\">\n                                                <button id=\"clockface_2_toggle-btn\" type=\"button\" class=\"btn\">\n                                                    <i class=\"icon-time\"></i>\n                                                </button>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                </form>\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Date Pickers</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default datepicker</label>\n\n                                        <div class=\"controls\">\n                                            <input id=\"dp1\" type=\"text\" value=\"12-02-2012\" size=\"16\" class=\"m-ctrl-medium\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Starts with years view</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append date\" id=\"dpYears\" data-date=\"12-02-2012\"\n                                                 data-date-format=\"dd-mm-yyyy\" data-date-viewmode=\"years\">\n                                                <input class=\"m-ctrl-medium\" size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Limit the view months</label>\n\n                                        <div class=\"controls\">\n                                            <div class=\"input-append date\" id=\"dpMonths\" data-date=\"102/2012\"\n                                                 data-date-format=\"mm/yyyy\" data-date-viewmode=\"years\"\n                                                 data-date-minviewmode=\"months\">\n                                                <input class=\"m-ctrl-medium\" size=\"16\" type=\"text\" value=\"02/2012\" readonly>\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Date Range Pickers</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default Date Ranges</label>\n                                        <div class=\"controls\">\n                                            <div class=\"input-prepend\">\n                                                <span class=\"add-on\"><i class=\"icon-calendar\"></i></span>\n                                                <input id=\"reservation\" type=\"text\" class=\" m-ctrl-medium\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Advance Date Ranges</label>\n                                        <div class=\"controls\">\n                                            <div id=\"reportrange\" class=\"btn\">\n                                                <i class=\"icon-calendar\"></i>\n                                                &nbsp;<span></span>\n                                                <b class=\"caret\"></b>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!--End Widget-->\n\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i>\n                                    Switch Buttons\n                                </h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form switch-form\">\n                                <div class=\"widget-body form\">\n                                    <!-- BEGIN FORM-->\n                                    <form class=\"form-horizontal\" action=\"#\">\n\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Basic Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"normal-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Toggle Buttons with Text</label>\n                                            <div class=\"controls\">\n                                                <div id=\"text-toggle-button\">\n                                                    <input type=\"checkbox\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Not Animated</label>\n                                            <div class=\"controls\">\n                                                <div id=\"not-animated-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Transition Speed</label>\n                                            <div class=\"controls\">\n                                                <div id=\"transition-percent-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n\n                                                <div id=\"transition-value-toggle-button\">\n                                                    <input type=\"checkbox\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Styled Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"danger-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                                <div id=\"info-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                                <div id=\"success-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                                <div id=\"warning-toggle-button\">\n                                                    <input type=\"checkbox\" class=\"toggle\" checked=\"checked\" />\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                        <div class=\"control-group\">\n                                            <label class=\"control-label\">Height Toggle Button</label>\n                                            <div class=\"controls\">\n                                                <div id=\"height-text-style-toggle-button\">\n                                                    <input type=\"checkbox\" checked=\"checked\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </form>\n                                    <!--</form>-->\n                                    <div class=\"space20\"></div>\n                                    <!-- END FORM-->\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                        <!-- BEGIN widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> File Upload</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Default</label>\n                                        <div class=\"controls\">\n                                            <input type=\"file\" class=\"default\">\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Advanced</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <div class=\"input-append\">\n                                                    <div class=\"uneditable-input\">\n                                                        <i class=\"icon-file fileupload-exists\"></i>\n                                                        <span class=\"fileupload-preview\"></span>\n                                                    </div>\n                                                    <span class=\"btn btn-file\">\n                                                        <span class=\"fileupload-new\">Select file</span>\n                                                        <span class=\"fileupload-exists\">Change</span>\n                                                        <input type=\"file\" class=\"default\">\n                                                    </span>\n                                                    <a data-dismiss=\"fileupload\" class=\"btn fileupload-exists\" href=\"#\">Remove</a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Without input</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <span class=\"btn btn-file\">\n                                                    <span class=\"fileupload-new\">Select file</span>\n                                                    <span class=\"fileupload-exists\">Change</span>\n                                                    <input type=\"file\" class=\"default\">\n                                                </span>\n                                                <span class=\"fileupload-preview\"></span>\n                                                <a style=\"float: none\" data-dismiss=\"fileupload\" class=\"close fileupload-exists\" href=\"#\">×</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Image Upload</label>\n                                        <div class=\"controls\">\n                                            <div data-provides=\"fileupload\" class=\"fileupload fileupload-new\">\n                                                <div style=\"width: 200px; height: 150px;\" class=\"fileupload-new thumbnail\">\n                                                    <img alt=\"\" src=\"../../../../www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image\">\n                                                </div>\n                                                <div style=\"max-width: 200px; max-height: 150px; line-height: 20px;\" class=\"fileupload-preview fileupload-exists thumbnail\"></div>\n                                                <div>\n                                                    <span class=\"btn btn-file\">\n                                                        <span class=\"fileupload-new\">Select image</span>\n                                                        <span class=\"fileupload-exists\">Change</span>\n                                                        <input type=\"file\" class=\"default\">\n                                                    </span>\n                                                    <a data-dismiss=\"fileupload\" class=\"btn fileupload-exists\" href=\"#\">Remove</a>\n                                                </div>\n                                            </div>\n                                            <span class=\"label label-important\">NOTE!</span>\n                                            <span>\n                                                Attached image thumbnail is\n                                                supported in Latest Firefox, Chrome, Opera,\n                                                Safari and Internet Explorer 10 only\n                                            </span>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN  widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> CKEditor</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">CKEditor</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span12 ckeditor\" name=\"editor1\" rows=\"6\"></textarea>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END EXTRAS widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN  widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> WYSIWYG Editor</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">WYSIWYG Editor</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span12 wysihtmleditor5\" rows=\"5\"></textarea>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END EXTRAS widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.2.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\" src=\"assets/ckeditor/ckeditor.js\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap/js/bootstrap-fileupload.js\"></script>\n    <script src=\"js/jquery.blockui.js\"></script>\n\n    <script src=\"../../../../code.jquery.com/ui/1.10.3/jquery-ui.js\"></script>\n    <script src=\"js/jQuery.dualListBox-1.3.js\" language=\"javascript\" type=\"text/javascript\"></script>\n\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/clockface/js/clockface.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/jquery-tags-input/jquery.tagsinput.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-datepicker/js/bootstrap-datepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-daterangepicker/date.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-daterangepicker/daterangepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-timepicker/js/bootstrap-timepicker.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/bootstrap-inputmask/bootstrap-inputmask.min.js\"></script>\n    <script src=\"assets/fancybox/source/jquery.fancybox.pack.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n\n\n    <!--common script for all pages-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--script for this page-->\n    <script src=\"js/form-component.js\"></script>\n    <!-- END JAVASCRIPTS -->\n\n    <script language=\"javascript\" type=\"text/javascript\">\n\n        $(function () {\n\n            $.configureBoxes();\n\n        });\n\n    </script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/form_layout.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Form Layouts</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Mini Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-mini\" class=\"input-mini\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Small Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-small\" class=\"input-small\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Meduam Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-medium\" class=\"input-medium\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-large\" class=\"input-large\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xLarge Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-xlarge\" class=\"input-xlarge\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xxLarge Input</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" placeholder=\".input-xxlarge\" class=\"input-xxlarge\" />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Disabled Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"medium\" type=\"text\" placeholder=\"Disabled input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Readonly Input</label>\n                                        <div class=\"controls\">\n                                            <input class=\"medium\" readonly type=\"text\" placeholder=\"Readonly input here...\" disabled />\n                                            <span class=\"help-inline\">Some hint here</span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Small Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-small m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Medium Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-medium m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Dropdown</label>\n                                        <div class=\"controls\">\n                                            <select class=\"input-large m-wrap\" tabindex=\"1\">\n                                                <option value=\"Category 1\">Category 1</option>\n                                                <option value=\"Category 2\">Category 2</option>\n                                                <option value=\"Category 3\">Category 5</option>\n                                                <option value=\"Category 4\">Category 4</option>\n                                            </select>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Radio Buttons</label>\n                                        <div class=\"controls\">\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option1\" />\n                                                Option 1\n                                            </label>\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option2\" checked />\n                                                Option 2\n                                            </label>\n                                            <label class=\"radio\">\n                                                <input type=\"radio\" name=\"optionsRadios1\" value=\"option2\" />\n                                                Option 3\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Radio Buttons</label>\n                                        <div class=\"controls\">\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option1\" />\n                                                Option 1\n                                            </label>\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option2\" checked />\n                                                Option 2\n                                            </label>\n                                            <label class=\"radio line\">\n                                                <input type=\"radio\" name=\"optionsRadios2\" value=\"option2\" />\n                                                Option 3\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Checkbox</label>\n                                        <div class=\"controls\">\n                                            <label class=\"checkbox\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 1\n                                            </label>\n                                            <label class=\"checkbox\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 2\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Checkbox</label>\n                                        <div class=\"controls\">\n                                            <label class=\"checkbox line\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 1\n                                            </label>\n                                            <label class=\"checkbox line\">\n                                                <input type=\"checkbox\" value=\"\" /> Checkbox 2\n                                            </label>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-medium\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">Large Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-large\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xLarge Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-xlarge\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group\">\n                                        <label class=\"control-label\">xxLarge Textarea</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"input-xxlarge\" rows=\"3\"></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn blue\"><i class=\"icon-ok\"></i> Save</button>\n                                        <button type=\"button\" class=\"btn\"><i class=\" icon-remove\"></i> Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Label above input (grid)\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"form-vertical\" method=\"get\" action=\"#\">\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span1\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 1</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span11\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 11</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span2\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 2</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span10\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 10</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span3\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 3</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span9\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 9</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span4\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 4</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span8\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 8</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span5\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 5</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span7\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 7</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row-fluid\">\n                                        <div class=\"span6\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">Label 6</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"span6\">\n                                            <div class=\"control-group\">\n                                                <label class=\"control-label\">label 6</label>\n                                                <div class=\"controls controls-row\">\n                                                    <input type=\"text\" class=\"input-block-level\" placeholder=\"Text input\" name=\"\">\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/form_validation.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-key\"></i> Basic validations </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form action=\"#\" class=\"form-horizontal\">\n                                    <div class=\"control-group success\">\n                                        <label class=\"control-label\" for=\"inputSuccess\">First Name  </label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputSuccess\" />\n                                            <span class=\"help-inline \">Successfully done</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group error\">\n                                        <label class=\"control-label\" for=\"inputError\">Last Name</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputError\" />\n                                            <span class=\"help-inline\">Aha you gave a wrong info</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group warning\">\n                                        <label class=\"control-label\" for=\"inputWarning\">Email Address</label>\n                                        <div class=\"controls\">\n                                            <input type=\"text\" class=\"span6\" id=\"inputWarning\" />\n                                            <span class=\"help-inline\">Something went wrong</span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"control-group success\">\n                                        <label class=\"control-label\">Password</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"Success input!\" class=\"input-success tooltips\">\n                                                <i class=\"icon-ok\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group error\">\n                                        <label class=\"control-label\">Confirm Password</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"please write a valid email\" class=\"input-error tooltips\">\n                                                <i class=\"icon-exclamation-sign\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group warning\">\n                                        <label class=\"control-label\">Phone Number</label>\n                                        <div class=\"controls input-icon\">\n                                            <input type=\"text\" class=\"span6 \">\n                                            <span data-original-title=\"please write a valid email\" class=\"input-warning tooltips\">\n                                                <i class=\"icon-warning-sign\"></i>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-actions\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Save</button>\n                                        <button type=\"button\" class=\"btn\">Cancel</button>\n                                    </div>\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Form Validation</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"collapse\"></a>\n                                    <a href=\"#portlet-config\" data-toggle=\"modal\" class=\"config\"></a>\n                                    <a href=\"javascript:;\" class=\"reload\"></a>\n                                    <a href=\"javascript:;\" class=\"remove\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n\n                                <form class=\"cmxform form-horizontal\" id=\"commentForm\" method=\"get\" action=\"\">\n                                    <div class=\"control-group \">\n                                        <label for=\"cname\" class=\"control-label\">Name (required)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"cname\" name=\"name\" minlength=\"2\" type=\"text\" required />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"cemail\" class=\"control-label\">E-Mail (required)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"cemail\" type=\"email\" name=\"email\" required />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"curl\" class=\"control-label\">URL (optional)</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"curl\" type=\"url\" name=\"url\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"ccomment\" class=\"control-label\">Your Comment (required)</label>\n                                        <div class=\"controls\">\n                                            <textarea class=\"span6 \" id=\"ccomment\" name=\"comment\" required></textarea>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-actions\">\n                                        <button class=\"btn btn-success\" type=\"submit\">Save</button>\n                                        <button class=\"btn\" type=\"button\">Cancel</button>\n                                    </div>\n\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN VALIDATION STATES-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Advanced form Validation</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"collapse\"></a>\n                                    <a href=\"#portlet-config\" data-toggle=\"modal\" class=\"config\"></a>\n                                    <a href=\"javascript:;\" class=\"reload\"></a>\n                                    <a href=\"javascript:;\" class=\"remove\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body form\">\n                                <!-- BEGIN FORM-->\n                                <form class=\"cmxform form-horizontal\" id=\"signupForm\" method=\"get\" action=\"\">\n                                    <div class=\"control-group \">\n                                        <label for=\"firstname\" class=\"control-label\">Firstname</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"firstname\" name=\"firstname\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"lastname\" class=\"control-label\">Lastname</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"lastname\" name=\"lastname\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"username\" class=\"control-label\">Username</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"username\" name=\"username\" type=\"text\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"password\" class=\"control-label\">Password</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"password\" name=\"password\" type=\"password\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"confirm_password\" class=\"control-label\">Confirm Password</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"email\" class=\"control-label\">Email</label>\n                                        <div class=\"controls\">\n                                            <input class=\"span6 \" id=\"email\" name=\"email\" type=\"email\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"agree\" class=\"control-label\">Agree to Our Policy</label>\n                                        <div class=\"controls\">\n                                            <input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n                                        </div>\n                                    </div>\n                                    <div class=\"control-group \">\n                                        <label for=\"newsletter\" class=\"control-label\">Receive the Newsletter</label>\n                                        <div class=\"controls\">\n                                            <input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-actions\">\n                                        <button class=\"btn btn-success\" type=\"submit\">Save</button>\n                                        <button class=\"btn\" type=\"button\">Cancel</button>\n                                    </div>\n\n                                </form>\n                                <!-- END FORM-->\n                            </div>\n                        </div>\n                        <!-- END VALIDATION STATES-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"js/jquery.validate.min.js\"></script>\n    <script type=\"text/javascript\" src=\"js/additional-methods.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/form-validation-script.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/form_wizard.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/uniform/css/uniform.default.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget box green\">\n                            <div class=\"widget-title\">\n                                <h4>\n                                    <i class=\"icon-reorder\"></i> Wizard With Progress Bar Step 1 of Step 4\n                                </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <form class=\"form-horizontal\" action=\"#\">\n                                    <div id=\"pills\" class=\"custom-wizard-pills\">\n                                        <ul>\n                                            <li><a href=\"#pills-tab1\" data-toggle=\"tab\">Step 1</a></li>\n                                            <li><a href=\"#pills-tab2\" data-toggle=\"tab\">Step 2</a></li>\n                                            <li><a href=\"#pills-tab3\" data-toggle=\"tab\">Step 3</a></li>\n                                            <li><a href=\"#pills-tab4\" data-toggle=\"tab\">Step 4</a></li>\n                                        </ul>\n                                        <div class=\"progress progress-success progress-striped active\">\n                                            <div class=\"bar\"></div>\n                                        </div>\n                                        <div class=\"tab-content\">\n                                            <div class=\"tab-pane\" id=\"pills-tab1\">\n                                                <h3>Fill up step 1</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Username</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\">\n                                                        <span class=\"help-inline\">Give your username</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Email</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"password\" class=\"span6\">\n                                                        <span class=\"help-inline\">Give your Email</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab2\">\n                                                <h3>Fill up step 2</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">First Name</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your First Name</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Last Name</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your Last Name</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Phone Number</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\">Give your phone number</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab3\">\n                                                <h3>Fill up step 3</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Text Input</label>\n                                                    <div class=\"controls\">\n                                                        <input type=\"text\" class=\"span6\" />\n                                                        <span class=\"help-inline\"></span>\n                                                    </div>\n                                                </div>\n\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Checkbox and radio Options</label>\n                                                    <div class=\"controls\">\n                                                        <label class=\"checkbox line\">\n                                                            <input type=\"checkbox\" value=\"\" /> Lorem ipsum dolor imti\n                                                        </label>\n                                                        <label class=\"radio line\">\n                                                            <input type=\"radio\" value=\"\" /> Duis autem vel eum iriure dolor in hendrerit\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"pills-tab4\">\n                                                <h3>Final step</h3>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Fullname:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">Jhon Doe </span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Email:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">dkmosa@gmail.com</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\">Phone:</label>\n                                                    <div class=\"controls\">\n                                                        <span class=\"text\">123456789</span>\n                                                    </div>\n                                                </div>\n                                                <div class=\"control-group\">\n                                                    <label class=\"control-label\"></label>\n                                                    <div class=\"controls\">\n                                                        <label class=\"checkbox\">\n                                                            <input type=\"checkbox\" value=\"\" /> I confirm my steps\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <ul class=\"pager wizard\">\n                                                <li class=\"previous first\"><a href=\"javascript:;\">First</a></li>\n                                                <li class=\"previous\"><a href=\"javascript:;\">Previous</a></li>\n                                                <li class=\"next last\"><a href=\"javascript:;\">Last</a></li>\n                                                <li class=\"next\"><a href=\"javascript:;\">Next</a></li>\n                                            </ul>\n                                        </div>\n                                    </div>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"assets/bootstrap-wizard/jquery.bootstrap.wizard.min.js\"></script>\n    <script src=\"js/jquery.blockui.js\"></script>\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <script type=\"text/javascript\" src=\"assets/chosen-bootstrap/chosen/chosen.jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/uniform/jquery.uniform.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/form-wizard.js\"></script>\n\n    <script>\n        $(function () {\n            $(\" input[type=radio], input[type=checkbox]\").uniform();\n        });\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/gallery.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/fancybox/source/jquery.fancybox.css\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/metr-folio/css/metro-gallery.css\" media=\"screen\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SAMPLE FORMPORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-camera\"></i> Gallery</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"megaexamples\">\n                                    <!--  FILTER STYLED  -->\n                                    <div class=\"filter_padder\">\n                                        <div class=\"filter_wrapper\">\n                                            <div class=\"filter selected\" data-category=\"cat-all\">ALL</div>\n                                            <div class=\"filter\" data-category=\"cat-one\">CATEGORY ONE</div>\n                                            <div class=\"filter\" data-category=\"cat-two\">CATEGORY TWO</div>\n                                            <div class=\"filter\" data-category=\"cat-three\">CATEGORY THREE</div>\n                                            <div class=\"filter last-child\" data-category=\"cat-four\">CATEGORY FOUR</div>\n                                            <div class=\"clear\"></div>\n                                        </div>\n                                    </div>\n                                    <div class=\"clear\"></div>\n                                    <div class=\"metro-gallery\">\n                                        <!-- The GRID System -->\n                                        <div class=\"metro-gal-container noborder norounded dark-bg-entries\">\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-1\" data-src=\"img/gallery/image1.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-right mega-portrait-bottom mega-red\">\n                                                    <!-- The Content Part with Hidden Overflow Container -->\n\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/grid.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Good for Nothing</div>\n                                                    <div class=\"mega-date\">Lorem ipsun dolor</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...<br /><br /><a href=\"#\">Read the whole story</a></p>\n\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-red\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image1.jpg\" title=\"Good for Nothing\"><div class=\"mega-view mega-red\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-2\" data-src=\"img/gallery/image2.jpg\" data-width=\"780\" data-height=\"385\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-orange mega-white \">\n\n                                                    <div class=\"mega-title\">Might is Right</div>\n                                                    <div class=\"mega-date\">loerm sum doleo</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image2.jpg\" title=\"Too Much !\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-3\" data-src=\"img/gallery/image3.jpg\" data-width=\"780\" data-height=\"485\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/flexible.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Honesty</div>\n                                                    <div class=\"mega-date\">Lorem ispusn ament</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image3.jpg\" title=\"Might is right\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-4\" data-src=\"img/gallery/image4.jpg\" data-width=\"680\" data-height=\"685\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-black \">\n                                                    <div class=\"mega-title\">Hi this is Sam</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image4.jpg\" title=\"Do the Best\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-5\" data-src=\"img/gallery/image5.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/light.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Fantastic Four</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons \">\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image5.jpg\" title=\"Awesome Creativity\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-6\" data-src=\"img/gallery/image6.jpg\" data-width=\"580\" data-height=\"435\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/nike.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Rainy Day</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat....</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image6.jpg\" title=\"Be Good \"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-7\" data-src=\"img/gallery/image7.jpg\" data-width=\"780\" data-height=\"385\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image7.jpg\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-8\" data-src=\"img/gallery/image8.jpg\" data-width=\"780\" data-height=\"525\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image8.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-9\" data-src=\"img/gallery/image9.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image9.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-11\" data-src=\"img/gallery/image11.jpg\" data-width=\"780\" data-height=\"565\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image11.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-12\" data-src=\"img/gallery/image12.jpg\" data-width=\"780\" data-height=\"525\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\">Metro Style</div>\n                                                    <div class=\"mega-date\">Just one thing thats possible</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image12.jpg\" title=\"Lorem ipsum dloe\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-10\" data-src=\"img/gallery/image10.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-blue \">\n                                                    <div class=\"mega-title\">Get Back to Work</div>\n                                                    <p>\n                                                        Lorem ipsum dolor sit amet, consetetur sadipscing elitr...\n                                                        <img src=\"img/gallery/icons/runner.png\" alt=\"\" style=\"padding-top: 15px;\">\n                                                    </p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image10.jpg\" title=\"Get A Move On\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-13\" data-src=\"img/gallery/image14.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image14.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-14\" data-src=\"img/gallery/image16.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-red\">\n                                                    <div class=\"mega-title\">Summer Wine</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image16.jpg\" title=\"Good Morning\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-15\" data-src=\"img/gallery/image13.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image13.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-25\" data-src=\"img/gallery/image15.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/mobile.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Hi There.</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image15.jpg\" title=\"Mobile Optimized\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-26\" data-src=\"img/gallery/image18.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image18.jpg\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-27\" data-src=\"img/gallery/image17.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-green\">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/leaf.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Enjoy Youseft !</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image17.jpg\" title=\"Good Day\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-28\" data-src=\"img/gallery/image1.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-red\">\n                                                    <!-- The Content Part with Hidden Overflow Container -->\n\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/grid.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Lorem ipsum dolor set ament</div>\n                                                    <div class=\"mega-date\">Lorem ipsum dolor sit</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...<br /><br /><a href=\"#\">Read the whole story</a></p>\n\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons mega-square-top mega-landscape-right mega-portrait-bottom\">\n                                                    <div class=\"mega-link mega-red\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image1.jpg\" title=\"Might is right\"><div class=\"mega-view mega-red\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-29\" data-src=\"img/gallery/image2.jpg\" data-width=\"780\" data-height=\"585\" data-lowsize=\"\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-orange mega-white \">\n\n                                                    <div class=\"mega-title\">Sumon Mosa</div>\n                                                    <div class=\"mega-date\">dolro ispum imit</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image2.jpg\" title=\"Might is right\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-3\" data-src=\"img/gallery/image3.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/flexible.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Flexibility</div>\n                                                    <div class=\"mega-date\">Never seen before</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image3.jpg\" title=\"Be Happy\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-4\" data-src=\"img/gallery/image4.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-black \">\n                                                    <div class=\"mega-title\">Hi There !</div>\n                                                    <div class=\"mega-date\">And so should you</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image4.jpg\" title=\"Do the Best\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-5\" data-src=\"img/gallery/image5.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-right mega-portrait-bottom mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/light.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Creative Ideas</div>\n                                                    <div class=\"mega-date\">Good for Nothing</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image5.jpg\" title=\"Awesome Creativity\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-6\" data-src=\"img/gallery/image6.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/nike.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Do the Best</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi....</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image6.jpg\" title=\"Be Good \"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-7\" data-src=\"img/gallery/image7.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image7.jpg\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <div class=\"mega-entry cat-three cat-all\" id=\"mega-entry-8\" data-src=\"img/gallery/image8.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image8.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-9\" data-src=\"img/gallery/image9.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image9.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-11\" data-src=\"img/gallery/image11.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image11.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-12\" data-src=\"img/gallery/image12.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-bottom mega-turquoise \">\n                                                    <div class=\"mega-title\">Metro Style</div>\n                                                    <div class=\"mega-date\">As you so so you rep</div>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-turquoise\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image12.jpg\" title=\"Lorem ipsum dloe\"><div class=\"mega-view mega-turquoise\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-10\" data-src=\"img/gallery/image10.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-right mega-landscape-right mega-portrait-bottom mega-blue \">\n                                                    <div class=\"mega-title\">Out or Order</div>\n                                                    <p>\n                                                        Lorem ipsum dolor sit amet, consetetur sadipscing elitr...\n                                                        <img src=\"img/gallery/icons/runner.png\" alt=\"\" style=\"padding-top: 15px;\">\n                                                    </p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image10.jpg\" title=\"Get A Move On\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-13\" data-src=\"img/gallery/image14.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-black\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image14.jpg\"><div class=\"mega-view mega-black\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-14\" data-src=\"img/gallery/image16.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-left mega-portrait-bottom mega-red\">\n                                                    <div class=\"mega-title\">Might is Right</div>\n                                                    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image16.jpg\" title=\"Good Morning\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-15\" data-src=\"img/gallery/image13.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-orange\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image13.jpg\"><div class=\"mega-view mega-orange\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-two cat-all\" id=\"mega-entry-25\" data-src=\"img/gallery/image15.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-bottom mega-landscape-bottom mega-portrait-top mega-violet \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/mobile.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Be Honest</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-violet\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image15.jpg\" title=\"Mobile Optimized\"><div class=\"mega-view mega-violet\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-one cat-all\" id=\"mega-entry-26\" data-src=\"img/gallery/image18.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-blue\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image18.jpg\"><div class=\"mega-view mega-blue\"></div></a>\n                                                </div>\n\n                                            </div>\n\n\n                                            <!-- A GALLERY ENTRY -->\n                                            <div class=\"mega-entry cat-four cat-all\" id=\"mega-entry-27\" data-src=\"img/gallery/image17.jpg\" data-width=\"780\" data-height=\"585\">\n\n                                                <div class=\"mega-covercaption mega-square-top mega-landscape-left mega-portrait-top mega-green \">\n                                                    <div class=\"mega-title\"><img src=\"img/gallery/icons/leaf.png\" alt=\"\" style=\"float: left; padding-right: 15px;\">Hi Boss !</div>\n                                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros...</p>\n                                                </div>\n\n                                                <!-- The Link Buttons -->\n                                                <div class=\"mega-coverbuttons\">\n                                                    <div class=\"mega-link mega-green\"></div>\n                                                    <a class=\"fancybox\" rel=\"group\" href=\"img/gallery/image17.jpg\" title=\"Good Day\"><div class=\"mega-view mega-green\"></div></a>\n                                                </div>\n\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END SAMPLE FORM PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n\n    <script src=\"assets/fancybox/source/jquery.fancybox.pack.js\"></script>\n\n    <!-- MEGAFOLIO PRO GALLERY JS FILES  -->\n    <script type=\"text/javascript\" src=\"assets/metr-folio/js/jquery.metro-gal.plugins.min.js\"></script>\n    <script type=\"text/javascript\" src=\"assets/metr-folio/js/jquery.metro-gal.megafoliopro.js\"></script>\n\n\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script type=\"text/javascript\">\n\n        jQuery(document).ready(function () {\n\n            var api = jQuery('.metro-gal-container').megafoliopro(\n                    {\n                        filterChangeAnimation: \"pagebottom\",\t\t\t// fade, rotate, scale, rotatescale, pagetop, pagebottom,pagemiddle\n                        filterChangeSpeed: 400,\t\t\t\t\t// Speed of Transition\n                        filterChangeRotate: 99,\t\t\t\t\t// If you ue scalerotate or rotate you can set the rotation (99 = random !!)\n                        filterChangeScale: 0.6,\t\t\t\t\t// Scale Animation Endparameter\n                        delay: 20,\n                        defaultWidth: 980,\n                        paddingHorizontal: 10,\n                        paddingVertical: 10,\n                        layoutarray: [9, 11, 5, 3, 7, 12, 4, 6, 13]\t\t// Defines the Layout Types which can be used in the Gallery. 2-9 or \"random\". You can define more than one, like {5,2,6,4} where the first items will be orderd in layout 5, the next comming items in layout 2, the next comming items in layout 6 etc... You can use also simple {9} then all item ordered in Layout 9 type.\n                    });\n\n            // FANCY BOX ( LIVE BOX) WITH MEDIA SUPPORT\n            jQuery(\".fancybox\").fancybox();\n\n            // THE FILTER FUNCTION\n            jQuery('.filter').click(function () {\n                jQuery('.filter').each(function () { jQuery(this).removeClass(\"selected\") });\n                api.megafilter(jQuery(this).data('category'));\n                jQuery(this).addClass(\"selected\");\n            });\n\n\n        });\n\n    </script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/general.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n <!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/gritter/css/jquery.gritter.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN NOTIFICATION PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-bar-chart\"></i> Notifications</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"alert alert-block alert-warning fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Warning!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vi\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-warning fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Warning!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vi\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-success fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Success!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-success fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Success!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-info fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Info!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-info fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Info!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-block alert-error fade in\">\n                                    <button data-dismiss=\"alert\" class=\"close\" type=\"button\">×</button>\n                                    <h4 class=\"alert-heading\">Error!</h4>\n                                    <p>\n                                        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n                                    </p>\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-block alert-error fade in&quot;&gt;\n    &lt;button data-dismiss=&quot;alert&quot; class=&quot;close&quot; type=&quot;button&quot;&gt;×&lt;/button&gt;\n    &lt;h4 class=&quot;alert-heading&quot;&gt;Error!&lt;/h4&gt;\n    &lt;p&gt;\n        Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.\n    &lt;/p&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END NOTIFICATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN NAVIGATION PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Navigation</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <!--BEGIN BASIC NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Basic navbar</h4>\n                                    <div class=\"navbar navbar-static\" id=\"\">\n                                        <div class=\"navbar-inner\">\n                                            <div style=\"width: auto;\" class=\"container\">\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <ul role=\"navigation\" class=\"nav\">\n                                                    <li class=\"active\">\n                                                        <a href=\"#\">Home</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                    <li>\n                                                        <a href=\"#\">Link</a>\n                                                    </li>\n                                                </ul>\n                                                <ul class=\"nav pull-right\">\n                                                    <li>\n                                                        <a href=\"#\">Sing In</a>\n                                                    </li>\n                                                </ul>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <pre>&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Basic navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar navbar-static&quot; id=&quot;&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div style=&quot;width: auto;&quot; class=&quot;container&quot;&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;ul role=&quot;navigation&quot; class=&quot;nav&quot;&gt;\n                    &lt;li class=&quot;active&quot;&gt;\n                        &lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;ul class=&quot;nav pull-right&quot;&gt;\n                    &lt;li&gt;\n                        &lt;a href=&quot;#&quot;&gt;Sing In&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <!--END BASIC NAV-->\n                                <!--BEGIN DROPDOWN NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Dropdown navbar</h4>\n                                    <div class=\"navbar navbar-static\" id=\"navbar-example\">\n                                        <div class=\"navbar-inner\">\n                                            <div style=\"width: auto;\" class=\"container\">\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <ul role=\"navigation\" class=\"nav\">\n                                                    <li class=\"dropdown\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" href=\"#\" id=\"drop1\">Dropdown <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop1\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"../../../../google.com/default.htm\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#anotherAction\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li class=\"dropdown\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" id=\"drop2\" href=\"#\">Dropdown 2 <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop2\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                                <ul class=\"nav pull-right\">\n                                                    <li class=\"dropdown\" id=\"fat-menu\">\n                                                        <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" role=\"button\" id=\"drop3\" href=\"#\">Dropdown 3 <b class=\"caret\"></b></a>\n                                                        <ul aria-labelledby=\"drop3\" role=\"menu\" class=\"dropdown-menu\">\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                            <li class=\"divider\" role=\"presentation\"></li>\n                                                            <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END DROPDOWN NAV-->\n                                <pre>&lt;!--BEGIN DROPDOWN NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Dropdown navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar navbar-static&quot; id=&quot;navbar-example&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div style=&quot;width: auto;&quot; class=&quot;container&quot;&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;ul role=&quot;navigation&quot; class=&quot;nav&quot;&gt;\n                    &lt;li class=&quot;dropdown&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; href=&quot;#&quot; id=&quot;drop1&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop1&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;../../../../google.com/default.htm&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#anotherAction&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                    &lt;li class=&quot;dropdown&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; id=&quot;drop2&quot; href=&quot;#&quot;&gt;Dropdown 2 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop2&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;ul class=&quot;nav pull-right&quot;&gt;\n                    &lt;li class=&quot;dropdown&quot; id=&quot;fat-menu&quot;&gt;\n                        &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; role=&quot;button&quot; id=&quot;drop3&quot; href=&quot;#&quot;&gt;Dropdown 3 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                        &lt;ul aria-labelledby=&quot;drop3&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot;&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                            &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                            &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                        &lt;/ul&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;!--END DROPDOWN NAV--&gt;\n</pre>\n                                <!--BEGIN RESPONSIVE NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Responsive navbar</h4>\n                                    <div class=\"navbar\">\n                                        <div class=\"navbar-inner\">\n                                            <div class=\"container\">\n                                                <a data-target=\".navbar-responsive-collapse\" data-toggle=\"collapse\" class=\"btn btn-navbar\">\n                                                    <span class=\"icon-bar\"></span>\n                                                    <span class=\"icon-bar\"></span>\n                                                    <span class=\"icon-bar\"></span>\n                                                </a>\n                                                <a href=\"#\" class=\"brand\">Vector Lab</a>\n                                                <div class=\"nav-collapse collapse navbar-responsive-collapse\">\n                                                    <ul class=\"nav\">\n                                                        <li class=\"active\"><a href=\"#\">Home</a></li>\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li class=\"dropdown\">\n                                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                                            <ul class=\"dropdown-menu\">\n                                                                <li><a href=\"#\">Action</a></li>\n                                                                <li><a href=\"#\">Another action</a></li>\n                                                                <li><a href=\"#\">Something else here</a></li>\n                                                                <li class=\"divider\"></li>\n                                                                <li class=\"nav-header\">Nav header</li>\n                                                                <li><a href=\"#\">Separated link</a></li>\n                                                                <li><a href=\"#\">One more separated link</a></li>\n                                                            </ul>\n                                                        </li>\n                                                    </ul>\n                                                    <form action=\"\" class=\"navbar-search pull-left\">\n                                                        <input type=\"text\" placeholder=\"Search\" class=\"search-query input-medium\">\n                                                    </form>\n                                                    <ul class=\"nav pull-right\">\n                                                        <li><a href=\"#\">Link</a></li>\n                                                        <li class=\"divider-vertical\"></li>\n                                                        <li class=\"dropdown\">\n                                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                                            <ul class=\"dropdown-menu\">\n                                                                <li><a href=\"#\">Action</a></li>\n                                                                <li><a href=\"#\">Another action</a></li>\n                                                                <li><a href=\"#\">Something else here</a></li>\n                                                                <li class=\"divider\"></li>\n                                                                <li><a href=\"#\">Separated link</a></li>\n                                                            </ul>\n                                                        </li>\n                                                    </ul>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--END RESPONSIVE NAV-->\n                                <pre>&lt;!--BEGIN RESPONSIVE NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Responsive navbar&lt;/h4&gt;\n    &lt;div class=&quot;navbar&quot;&gt;\n        &lt;div class=&quot;navbar-inner&quot;&gt;\n            &lt;div class=&quot;container&quot;&gt;\n                &lt;a data-target=&quot;.navbar-responsive-collapse&quot; data-toggle=&quot;collapse&quot; class=&quot;btn btn-navbar&quot;&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                    &lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n                &lt;/a&gt;\n                &lt;a href=&quot;#&quot; class=&quot;brand&quot;&gt;Vector Lab&lt;/a&gt;\n                &lt;div class=&quot;nav-collapse collapse navbar-responsive-collapse&quot;&gt;\n                    &lt;ul class=&quot;nav&quot;&gt;\n                        &lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li class=&quot;dropdown&quot;&gt;\n                            &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; href=&quot;#&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                            &lt;ul class=&quot;dropdown-menu&quot;&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                                &lt;li class=&quot;divider&quot;&gt;&lt;/li&gt;\n                                &lt;li class=&quot;nav-header&quot;&gt;Nav header&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;One more separated link&lt;/a&gt;&lt;/li&gt;\n                            &lt;/ul&gt;\n                        &lt;/li&gt;\n                    &lt;/ul&gt;\n                    &lt;form action=&quot;&quot; class=&quot;navbar-search pull-left&quot;&gt;\n                        &lt;input type=&quot;text&quot; placeholder=&quot;Search&quot; class=&quot;search-query input-medium&quot;&gt;\n                    &lt;/form&gt;\n                    &lt;ul class=&quot;nav pull-right&quot;&gt;\n                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;\n                        &lt;li class=&quot;divider-vertical&quot;&gt;&lt;/li&gt;\n                        &lt;li class=&quot;dropdown&quot;&gt;\n                            &lt;a data-toggle=&quot;dropdown&quot; class=&quot;dropdown-toggle&quot; href=&quot;#&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n                            &lt;ul class=&quot;dropdown-menu&quot;&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                                &lt;li class=&quot;divider&quot;&gt;&lt;/li&gt;\n                                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n                            &lt;/ul&gt;\n                        &lt;/li&gt;\n                    &lt;/ul&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <!--BEGIN PILLS NAV-->\n                                <div class=\"bs-docs-example\">\n                                    <h4>Pills navbar</h4>\n                                    <ul class=\"nav nav-pills\">\n                                        <li class=\"active\"><a href=\"#\">Regular link</a></li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop4\" class=\"dropdown-toggle\">Dropdown <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop4\" role=\"menu\" class=\"dropdown-menu\" id=\"menu1\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop5\" class=\"dropdown-toggle\">Dropdown 2 <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop5\" role=\"menu\" class=\"dropdown-menu\" id=\"menu2\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                        <li class=\"dropdown\">\n                                            <a href=\"#\" data-toggle=\"dropdown\" role=\"button\" id=\"drop6\" class=\"dropdown-toggle\">Dropdown 3 <b class=\"caret\"></b></a>\n                                            <ul aria-labelledby=\"drop5\" role=\"menu\" class=\"dropdown-menu\" id=\"menu3\">\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Another action</a></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Something else here</a></li>\n                                                <li class=\"divider\" role=\"presentation\"></li>\n                                                <li role=\"presentation\"><a href=\"#\" tabindex=\"-1\" role=\"menuitem\">Separated link</a></li>\n                                            </ul>\n                                        </li>\n                                    </ul>\n                                </div>\n                                <!--END PILLS NAV-->\n                                <pre>&lt;!--BEGIN PILLS NAV--&gt;\n&lt;div class=&quot;bs-docs-example&quot;&gt;\n    &lt;h4&gt;Pills navbar&lt;/h4&gt;\n    &lt;ul class=&quot;nav nav-pills&quot;&gt;\n        &lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;#&quot;&gt;Regular link&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop4&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop4&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu1&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop5&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown 2 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop5&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu2&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n        &lt;li class=&quot;dropdown&quot;&gt;\n            &lt;a href=&quot;#&quot; data-toggle=&quot;dropdown&quot; role=&quot;button&quot; id=&quot;drop6&quot; class=&quot;dropdown-toggle&quot;&gt;Dropdown 3 &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;&lt;/a&gt;\n            &lt;ul aria-labelledby=&quot;drop5&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; id=&quot;menu3&quot;&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Another action&lt;/a&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Something else here&lt;/a&gt;&lt;/li&gt;\n                &lt;li class=&quot;divider&quot; role=&quot;presentation&quot;&gt;&lt;/li&gt;\n                &lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;#&quot; tabindex=&quot;-1&quot; role=&quot;menuitem&quot;&gt;Separated link&lt;/a&gt;&lt;/li&gt;\n            &lt;/ul&gt;\n        &lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;!--END PILLS NAV--&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END NAVIGATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN ALERTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Alerts</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"alert\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Warning!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Warning!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-success\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Success!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-success&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Success!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-info\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Info!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-info&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Info!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                                <div class=\"alert alert-error\">\n                                    <button class=\"close\" data-dismiss=\"alert\">×</button>\n                                    <strong>Error!</strong> Best check yo self, you're not looking too good.\n                                </div>\n                                <pre>&lt;div class=&quot;alert alert-error&quot;&gt;\n    &lt;button class=&quot;close&quot; data-dismiss=&quot;alert&quot;&gt;×&lt;/button&gt;\n    &lt;strong&gt;Error!&lt;/strong&gt; Best check yo self, you're not looking too good.\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END ALERTS PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN PROGRESS BARS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Basic Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-success\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-success&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-warning\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-warning&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-danger\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-danger&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <h4>Stacked</h4>\n                                <div class=\"progress\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped active\">\n                                    <div class=\"bar bar-success\" style=\"width: 25%;\"></div>\n                                    <div class=\"bar bar-warning\" style=\"width: 30%;\"></div>\n                                    <div class=\"bar bar-danger\" style=\"width: 15%;\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped active&quot;&gt;\n    &lt;div class=&quot;bar bar-success&quot; style=&quot;width: 25%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-warning&quot; style=&quot;width: 30%;&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;bar bar-danger&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PROGRESS BARS PORTLET-->\n                        <!-- BEGIN PROGRESS BARS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Striped Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress progress-striped\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-success\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-success&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-warning\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-warning&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-danger\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-danger&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PROGRESS BARS PORTLET-->\n                        <!-- BEGIN ANIMATED PROGRESS BARS PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Animated Progress Bars</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"progress progress-striped active\">\n                                    <div style=\"width: 20%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped active&quot;&gt;\n    &lt;div style=&quot;width: 20%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-success active\">\n                                    <div style=\"width: 40%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-success active&quot;&gt;\n    &lt;div style=&quot;width: 40%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-warning active\">\n                                    <div style=\"width: 60%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-warning active&quot;&gt;\n    &lt;div style=&quot;width: 60%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                                <div class=\"progress progress-striped progress-danger active\">\n                                    <div style=\"width: 80%;\" class=\"bar\"></div>\n                                </div>\n                                <pre>&lt;div class=&quot;progress progress-striped progress-danger active&quot;&gt;\n    &lt;div style=&quot;width: 80%;&quot; class=&quot;bar&quot;&gt;&lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END ANIMATED PROGRESS BARS PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN TOOLTIPS PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Tooltips</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    Tight pants next level keffiyeh\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"Default tooltips\">you probably</a> haven't heard of them.\n                                    Photo booth beard raw denim letterpress vegan messenger bag stumptown.\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"Another tooltips\">have a</a>\n                                    terry richardson vinyl chambray.\n                                    <a href=\"#\" class=\"tooltips\" data-original-title=\"The last tip!\">twitter handle</a>\n                                    freegan cred raw denim single-origin coffee viral.\n                                </p>\n                                <p class=\"\">\n                                    <button class=\"btn tooltips\" data-placement=\"top\" data-original-title=\"tooltips in top\">Top</button>\n                                    <button class=\"btn tooltips\" data-placement=\"left\" data-original-title=\"tooltips in left\">Left</button>\n                                    <button class=\"btn tooltips\" data-placement=\"right\" data-original-title=\"tooltips in right\">Right</button>\n                                    <button class=\"btn tooltips\" data-placement=\"bottom\" data-original-title=\"tooltips in bottom\">Bottom</button>\n                                </p>\n                                <pre>&lt;p&gt;\n    Tight pants next level keffiyeh\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;Default tooltips&quot;&gt;you probably&lt;/a&gt; haven't heard of them.\n    Photo booth beard raw denim letterpress vegan messenger bag stumptown.\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;Another tooltips&quot;&gt;have a&lt;/a&gt;\n    terry richardson vinyl chambray.\n    &lt;a href=&quot;#&quot; class=&quot;tooltips&quot; data-original-title=&quot;The last tip!&quot;&gt;twitter handle&lt;/a&gt;\n    freegan cred raw denim single-origin coffee viral.\n&lt;/p&gt;\n&lt;p class=&quot;&quot;&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;top&quot; data-original-title=&quot;tooltips in top&quot;&gt;Top&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;left&quot; data-original-title=&quot;tooltips in left&quot;&gt;Left&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;right&quot; data-original-title=&quot;tooltips in right&quot;&gt;Right&lt;/button&gt;\n    &lt;button class=&quot;btn tooltips&quot; data-placement=&quot;bottom&quot; data-original-title=&quot;tooltips in bottom&quot;&gt;Bottom&lt;/button&gt;\n&lt;/p&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END TOOLTIPS PORTLET-->\n                        <!-- BEGIN POPOVERS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Popovers</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <p>\n                                    Tight pants next level keffiyeh\n                                    <a href=\"javascript:;\" class=\"popovers\" data-placement=\"left\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"Default popovers\">trigger me on click</a> haven't heard of them.\n                                    Photo booth beard raw denim letterpress vegan messenger bag stumptown. loem ipsum dolor\n                                    <a href=\"javascript:;\" class=\"popovers\" data-placement=\"top\" data-trigger=\"hover\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"Another popovers\">trigger me on hover</a>\n                                    terry richardson vinyl chambray. Beard stumptown. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa.\n                                </p>\n                                <p class=\"\">\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"top\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in top\">Top</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"left\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in left\">Left</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"right\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in right\">Right</button>\n                                    <button class=\"btn popovers\" data-trigger=\"hover\" data-placement=\"bottom\" data-content=\"popovers body goes here! popovers body goes here!\" data-original-title=\"popovers in bottom\">Bottom</button>\n                                </p>\n                                <pre>&lt;p&gt;\n    Tight pants next level keffiyeh\n    &lt;a href=&quot;javascript:;&quot; class=&quot;popovers&quot; data-placement=&quot;left&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;Default popovers&quot;&gt;trigger me on click&lt;/a&gt; haven't heard of them.\n    Photo booth beard raw denim letterpress vegan messenger bag stumptown. loem ipsum dolor\n    &lt;a href=&quot;javascript:;&quot; class=&quot;popovers&quot; data-placement=&quot;top&quot; data-trigger=&quot;hover&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;Another popovers&quot;&gt;trigger me on hover&lt;/a&gt;\n    terry richardson vinyl chambray. Beard stumptown. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa.\n&lt;/p&gt;\n&lt;p class=&quot;&quot;&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;top&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in top&quot;&gt;Top&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;left&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in left&quot;&gt;Left&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;right&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in right&quot;&gt;Right&lt;/button&gt;\n    &lt;button class=&quot;btn popovers&quot; data-trigger=&quot;hover&quot; data-placement=&quot;bottom&quot; data-content=&quot;popovers body goes here! popovers body goes here!&quot; data-original-title=&quot;popovers in bottom&quot;&gt;Bottom&lt;/button&gt;\n&lt;/p&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END POPOVERS PORTLET-->\n                        <!-- BEGIN MODAL DIALOG PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Modal Dialogs</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <!-- Button to trigger modal -->\n                                <a href=\"#myModal1\" role=\"button\" class=\"btn btn-primary\" data-toggle=\"modal\">Dialog</a>\n                                <a href=\"#myModal3\" role=\"button\" class=\"btn btn-warning\" data-toggle=\"modal\">Confirm</a>\n                                <a href=\"#myModal4\" role=\"button\" class=\"btn btn-success\" data-toggle=\"modal\">Success</a>\n                                <a href=\"#myModal2\" role=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\">Alert</a>\n                                <!-- Modal -->\n                                <div id=\"myModal1\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel1\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel1\">Modal Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button class=\"btn btn-primary\">Save</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal2\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel2\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel2\">Alert Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button data-dismiss=\"modal\" class=\"btn btn-primary\">OK</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal3\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel3\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel3\">Confirm Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button data-dismiss=\"modal\" class=\"btn btn-primary\">Confirm</button>\n                                    </div>\n                                </div>\n                                <div id=\"myModal4\" class=\"modal hide fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel3\" aria-hidden=\"true\">\n                                    <div class=\"modal-header\">\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n                                        <h3 id=\"myModalLabel4\">Success Header</h3>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <p>Body goes here...</p>\n                                    </div>\n                                    <div class=\"modal-footer\">\n                                        <button class=\"btn\" data-dismiss=\"modal\" aria-hidden=\"true\">Close</button>\n                                        <button data-dismiss=\"modal\" class=\"btn btn-success\">Success</button>\n                                    </div>\n                                </div>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;!-- Button to trigger modal --&gt;\n&lt;a href=&quot;#myModal1&quot; role=&quot;button&quot; class=&quot;btn btn-primary&quot; data-toggle=&quot;modal&quot;&gt;Dialog&lt;/a&gt;\n&lt;a href=&quot;#myModal3&quot; role=&quot;button&quot; class=&quot;btn btn-warning&quot; data-toggle=&quot;modal&quot;&gt;Confirm&lt;/a&gt;\n&lt;a href=&quot;#myModal4&quot; role=&quot;button&quot; class=&quot;btn btn-success&quot; data-toggle=&quot;modal&quot;&gt;Success&lt;/a&gt;\n&lt;a href=&quot;#myModal2&quot; role=&quot;button&quot; class=&quot;btn btn-danger&quot; data-toggle=&quot;modal&quot;&gt;Alert&lt;/a&gt;\n&lt;!-- Modal --&gt;\n&lt;div id=&quot;myModal1&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel1&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel1&quot;&gt;Modal Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button class=&quot;btn btn-primary&quot;&gt;Save&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal2&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel2&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel2&quot;&gt;Alert Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-primary&quot;&gt;OK&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal3&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel3&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel3&quot;&gt;Confirm Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-primary&quot;&gt;Confirm&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n&lt;div id=&quot;myModal4&quot; class=&quot;modal hide fade&quot; tabindex=&quot;-1&quot; role=&quot;dialog&quot; aria-labelledby=&quot;myModalLabel3&quot; aria-hidden=&quot;true&quot;&gt;\n    &lt;div class=&quot;modal-header&quot;&gt;\n        &lt;button type=&quot;button&quot; class=&quot;close&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;×&lt;/button&gt;\n        &lt;h3 id=&quot;myModalLabel4&quot;&gt;Success Header&lt;/h3&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-body&quot;&gt;\n        &lt;p&gt;Body goes here...&lt;/p&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;modal-footer&quot;&gt;\n        &lt;button class=&quot;btn&quot; data-dismiss=&quot;modal&quot; aria-hidden=&quot;true&quot;&gt;Close&lt;/button&gt;\n        &lt;button data-dismiss=&quot;modal&quot; class=&quot;btn btn-success&quot;&gt;Success&lt;/button&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END MODAL DIALOG PORTLET-->\n                        <!-- BEGIN PULSATE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pulsate</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <a href=\"javascript:;\" class=\"btn\" id=\"pulsate-regular\">Pulsate regular</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"pulsate-once\">Pulsate once</a>\n                                <a href=\"javascript:;\" class=\"btn btn-info\" id=\"pulsate-hover\">Pulsate hover</a>\n                                <div class=\"space10 visible-phone visible-tablet\"></div>\n                                <a href=\"javascript:;\" class=\"btn btn-danger\" id=\"pulsate-crazy\">Crazy pulsate :)</a>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn&quot; id=&quot;pulsate-regular&quot;&gt;Pulsate regular&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;pulsate-once&quot;&gt;Pulsate once&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-info&quot; id=&quot;pulsate-hover&quot;&gt;Pulsate hover&lt;/a&gt;\n&lt;div class=&quot;space10 visible-phone visible-tablet&quot;&gt;&lt;/div&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-danger&quot; id=&quot;pulsate-crazy&quot;&gt;Crazy pulsate :)&lt;/a&gt;\n</pre>\n                            </div>\n                            \n                        </div>\n                        <!-- END PULSATE PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!--BEGIN LABEL & BADGE PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Labels and Badges</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table table-bordered table-striped\">\n                                    <thead>\n                                        <tr>\n                                            <th>Name</th>\n                                            <th>Badges</th>\n                                            <th>Labels</th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr>\n                                            <td>\n                                                Default\n                                            </td>\n                                            <td>\n                                                <span class=\"badge\">1</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label\">Default</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Success\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-success\">2</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-success\">Success</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Warning\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-warning\">4</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-warning\">Warning</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Important\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-important\">6</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-important\">Important</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Info\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-info\">8</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-info\">Info</span>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>\n                                                Inverse\n                                            </td>\n                                            <td>\n                                                <span class=\"badge badge-inverse\">10</span>\n                                            </td>\n                                            <td>\n                                                <span class=\"label label-inverse\">Inverse</span>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <pre>&lt;table class=&quot;table table-bordered table-striped&quot;&gt;\n    &lt;thead&gt;\n        &lt;tr&gt;\n            &lt;th&gt;Name&lt;/th&gt;\n            &lt;th&gt;Badges&lt;/th&gt;\n            &lt;th&gt;Labels&lt;/th&gt;\n        &lt;/tr&gt;\n    &lt;/thead&gt;\n    &lt;tbody&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Default\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge&quot;&gt;1&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label&quot;&gt;Default&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Success\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-success&quot;&gt;2&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-success&quot;&gt;Success&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Warning\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-warning&quot;&gt;4&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-warning&quot;&gt;Warning&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Important\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-important&quot;&gt;6&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-important&quot;&gt;Important&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Info\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-info&quot;&gt;8&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-info&quot;&gt;Info&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n        &lt;tr&gt;\n            &lt;td&gt;\n                Inverse\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;badge badge-inverse&quot;&gt;10&lt;/span&gt;\n            &lt;/td&gt;\n            &lt;td&gt;\n                &lt;span class=&quot;label label-inverse&quot;&gt;Inverse&lt;/span&gt;\n            &lt;/td&gt;\n        &lt;/tr&gt;\n    &lt;/tbody&gt;\n&lt;/table&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!--END LABEL & BADGE PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN PAGINATION PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pagination</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"pagination pagination-large\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li class=\"hidden-phone\"><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-small\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini pagination-centered\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <div class=\"pagination pagination-mini pagination-right\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">4</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                                <pre>&lt;div class=&quot;pagination pagination-large&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=&quot;hidden-phone&quot;&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-small&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini pagination-centered&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n&lt;div class=&quot;pagination pagination-mini pagination-right&quot;&gt;\n    &lt;ul&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;«&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;4&lt;/a&gt;&lt;/li&gt;\n        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;»&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n&lt;/div&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PAGINATION PORTLET-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN GRITTER NOTIFICATIONS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Gritter Notifications</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <h5>Click on below buttons to check it out.</h5>\n                                <a href=\"javascript:;\" class=\"btn \" id=\"add-regular\">Regular</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"add-sticky\">Sticky</a>\n                                <a href=\"javascript:;\" class=\"btn btn-info\" id=\"add-without-image\">Imageless</a>\n                                <div class=\"space10 visible-phone visible-tablet\"></div>\n                                <a href=\"javascript:;\" class=\"btn btn-warning\" id=\"add-gritter-light\">Light</a>\n                                <a href=\"javascript:;\" class=\"btn btn-success\" id=\"add-max\">Max of 3</a>\n                                <a href=\"#\" class=\"btn btn-info\" id=\"remove-all\">Remove all</a>\n                                <pre>&lt;h5&gt;Click on below buttons to check it out.&lt;/h5&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn &quot; id=&quot;add-regular&quot;&gt;Regular&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;add-sticky&quot;&gt;Sticky&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-info&quot; id=&quot;add-without-image&quot;&gt;Imageless&lt;/a&gt;\n&lt;div class=&quot;space10 visible-phone visible-tablet&quot;&gt;&lt;/div&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-warning&quot; id=&quot;add-gritter-light&quot;&gt;Light&lt;/a&gt;\n&lt;a href=&quot;javascript:;&quot; class=&quot;btn btn-success&quot; id=&quot;add-max&quot;&gt;Max of 3&lt;/a&gt;\n&lt;a href=&quot;#&quot; class=&quot;btn btn-info&quot; id=&quot;remove-all&quot;&gt;Remove all&lt;/a&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END GRITTER NOTIFICATIONS PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN PAGER PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Pager</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body \">\n                                <ul class=\"pager\">\n                                    <li><a href=\"#\">Previous</a></li>\n                                    <li><a href=\"#\">Next</a></li>\n                                </ul>\n                                <ul class=\"pager\">\n                                    <li class=\"previous\">\n                                        <a href=\"#\">&larr; Older</a>\n                                    </li>\n                                    <li class=\"next\">\n                                        <a href=\"#\">Newer &rarr;</a>\n                                    </li>\n                                </ul>\n                                <pre>&lt;ul class=&quot;pager&quot;&gt;\n    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Previous&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Next&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n&lt;ul class=&quot;pager&quot;&gt;\n    &lt;li class=&quot;previous&quot;&gt;\n        &lt;a href=&quot;#&quot;&gt;&amp;larr; Older&lt;/a&gt;\n    &lt;/li&gt;\n    &lt;li class=&quot;next&quot;&gt;\n        &lt;a href=&quot;#&quot;&gt;Newer &amp;rarr;&lt;/a&gt;\n    &lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n                            </div>\n                        </div>\n                        <!-- END PAGER PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n            \n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/general_portlet.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                    <p>\n                                        Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget red-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget white-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span3 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget gray-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget green-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-inverse btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <a href=\"#\" class=\"btn btn-warning btn-mini\"><i class=\"icon-plus\"></i> Add</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-2\">\n                                    <strong>Scroll is always visible</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-3\">\n                                    <strong>Scroll and rail are always visible</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-success\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <a href=\"#\" class=\"btn btn-primary\"><i class=\"icon-plus\"></i> Add</a>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"pagination pagination-small\">\n                                    <ul>\n                                        <li><a href=\"#\">«</a></li>\n                                        <li><a href=\"#\">1</a></li>\n                                        <li><a href=\"#\">2</a></li>\n                                        <li><a href=\"#\">3</a></li>\n                                        <li><a href=\"#\">»</a></li>\n                                    </ul>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"portlet-scroll-1\">\n                                    <strong>Scroll is hidden</strong><br />\n                                    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                    consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions sm-btn-position\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-pencil\"></i> Edit</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn btn-mini dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                                nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.nisi erat porttitor ligula, eget lacinia odio sem nec elit. nisi erat porttitor ligula, eget lacinia odio sem nec elit.\n                                nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum\n                            </div>\n                        </div>\n                        <!-- END GRID widget-->\n                    </div>\n                    <div class=\"span6 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget tabbable green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"tabbable widget-tabs\">\n                                    <ul class=\"nav nav-tabs\">\n                                        <li><a href=\"#widget_tab3\" data-toggle=\"tab\">Tab 3</a></li>\n                                        <li><a href=\"#widget_tab2\" data-toggle=\"tab\">Tab 2</a></li>\n                                        <li class=\"active\"><a href=\"#widget_tab1\" data-toggle=\"tab\">Tab 1</a></li>\n                                    </ul>\n                                    <div class=\"tab-content\">\n                                        <div class=\"tab-pane active\" id=\"widget_tab1\">\n                                            <p>\n                                                Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.ut laoreet dolore magna ut laoreet dolore magna. ut laoreet dolore magna.\n                                                ut laoreet dolore magna.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab2\">\n                                            <p>\n                                                Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab3\">\n                                            <p>\n                                                Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span4 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-success btn-mini\"><i class=\"icon-share icon-black\"></i> Share</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis.\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span8 \">\n                        <!-- BEGIN widget widget-->\n                        <div class=\"widget white-full\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Portlet</h4>\n                                <div class=\"actions\">\n                                    <a href=\"#\" class=\"btn btn-primary btn-mini\"><i class=\"icon-share\"></i> Share</a>\n                                    <div class=\"btn-group\">\n                                        <button data-toggle=\"dropdown\" class=\"btn dropdown-toggle\">Action <span class=\"caret\"></span></button>\n                                        <ul class=\"dropdown-menu pull-right\">\n                                            <li><a href=\"#\">Action</a></li>\n                                            <li><a href=\"#\">Another action</a></li>\n                                            <li><a href=\"#\">Something else here</a></li>\n                                            <li class=\"divider\"></li>\n                                            <li><a href=\"#\">Separated link</a></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"widget-body\">\n                                Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.\n                            </div>\n                        </div>\n                        <!-- END widget widget-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/glyphicons.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN FONT AWESOME ICONS PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Glyphicons</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <ul class=\"the-icons clearfix\">\n                                        <li><i class=\"icon-glass\"></i> icon-glass</li>\n                                        <li><i class=\"icon-music\"></i> icon-music</li>\n                                        <li><i class=\"icon-search\"></i> icon-search</li>\n                                        <li><i class=\"icon-envelope\"></i> icon-envelope</li>\n                                        <li><i class=\"icon-heart\"></i> icon-heart</li>\n                                        <li><i class=\"icon-star\"></i> icon-star</li>\n                                        <li><i class=\"icon-star-empty\"></i> icon-star-empty</li>\n                                        <li><i class=\"icon-user\"></i> icon-user</li>\n                                        <li><i class=\"icon-film\"></i> icon-film</li>\n                                        <li><i class=\"icon-th-large\"></i> icon-th-large</li>\n                                        <li><i class=\"icon-th\"></i> icon-th</li>\n                                        <li><i class=\"icon-th-list\"></i> icon-th-list</li>\n                                        <li><i class=\"icon-ok\"></i> icon-ok</li>\n                                        <li><i class=\"icon-remove\"></i> icon-remove</li>\n                                        <li><i class=\"icon-zoom-in\"></i> icon-zoom-in</li>\n                                        <li><i class=\"icon-zoom-out\"></i> icon-zoom-out</li>\n                                        <li><i class=\"icon-off\"></i> icon-off</li>\n                                        <li><i class=\"icon-signal\"></i> icon-signal</li>\n                                        <li><i class=\"icon-cog\"></i> icon-cog</li>\n                                        <li><i class=\"icon-trash\"></i> icon-trash</li>\n                                        <li><i class=\"icon-home\"></i> icon-home</li>\n                                        <li><i class=\"icon-file\"></i> icon-file</li>\n                                        <li><i class=\"icon-time\"></i> icon-time</li>\n                                        <li><i class=\"icon-road\"></i> icon-road</li>\n                                        <li><i class=\"icon-download-alt\"></i> icon-download-alt</li>\n                                        <li><i class=\"icon-download\"></i> icon-download</li>\n                                        <li><i class=\"icon-upload\"></i> icon-upload</li>\n                                        <li><i class=\"icon-inbox\"></i> icon-inbox</li>\n\n                                        <li><i class=\"icon-play-circle\"></i> icon-play-circle</li>\n                                        <li><i class=\"icon-repeat\"></i> icon-repeat</li>\n                                        <li><i class=\"icon-refresh\"></i> icon-refresh</li>\n                                        <li><i class=\"icon-list-alt\"></i> icon-list-alt</li>\n                                        <li><i class=\"icon-lock\"></i> icon-lock</li>\n                                        <li><i class=\"icon-flag\"></i> icon-flag</li>\n                                        <li><i class=\"icon-headphones\"></i> icon-headphones</li>\n                                        <li><i class=\"icon-volume-off\"></i> icon-volume-off</li>\n                                        <li><i class=\"icon-volume-down\"></i> icon-volume-down</li>\n                                        <li><i class=\"icon-volume-up\"></i> icon-volume-up</li>\n                                        <li><i class=\"icon-qrcode\"></i> icon-qrcode</li>\n                                        <li><i class=\"icon-barcode\"></i> icon-barcode</li>\n                                        <li><i class=\"icon-tag\"></i> icon-tag</li>\n                                        <li><i class=\"icon-tags\"></i> icon-tags</li>\n                                        <li><i class=\"icon-book\"></i> icon-book</li>\n                                        <li><i class=\"icon-bookmark\"></i> icon-bookmark</li>\n                                        <li><i class=\"icon-print\"></i> icon-print</li>\n                                        <li><i class=\"icon-camera\"></i> icon-camera</li>\n                                        <li><i class=\"icon-font\"></i> icon-font</li>\n                                        <li><i class=\"icon-bold\"></i> icon-bold</li>\n                                        <li><i class=\"icon-italic\"></i> icon-italic</li>\n                                        <li><i class=\"icon-text-height\"></i> icon-text-height</li>\n                                        <li><i class=\"icon-text-width\"></i> icon-text-width</li>\n                                        <li><i class=\"icon-align-left\"></i> icon-align-left</li>\n                                        <li><i class=\"icon-align-center\"></i> icon-align-center</li>\n                                        <li><i class=\"icon-align-right\"></i> icon-align-right</li>\n                                        <li><i class=\"icon-align-justify\"></i> icon-align-justify</li>\n                                        <li><i class=\"icon-list\"></i> icon-list</li>\n\n                                        <li><i class=\"icon-indent-left\"></i> icon-indent-left</li>\n                                        <li><i class=\"icon-indent-right\"></i> icon-indent-right</li>\n                                        <li><i class=\"icon-facetime-video\"></i> icon-facetime-video</li>\n                                        <li><i class=\"icon-picture\"></i> icon-picture</li>\n                                        <li><i class=\"icon-pencil\"></i> icon-pencil</li>\n                                        <li><i class=\"icon-map-marker\"></i> icon-map-marker</li>\n                                        <li><i class=\"icon-adjust\"></i> icon-adjust</li>\n                                        <li><i class=\"icon-tint\"></i> icon-tint</li>\n                                        <li><i class=\"icon-edit\"></i> icon-edit</li>\n                                        <li><i class=\"icon-share\"></i> icon-share</li>\n                                        <li><i class=\"icon-check\"></i> icon-check</li>\n                                        <li><i class=\"icon-move\"></i> icon-move</li>\n                                        <li><i class=\"icon-step-backward\"></i> icon-step-backward</li>\n                                        <li><i class=\"icon-fast-backward\"></i> icon-fast-backward</li>\n                                        <li><i class=\"icon-backward\"></i> icon-backward</li>\n                                        <li><i class=\"icon-play\"></i> icon-play</li>\n                                        <li><i class=\"icon-pause\"></i> icon-pause</li>\n                                        <li><i class=\"icon-stop\"></i> icon-stop</li>\n                                        <li><i class=\"icon-forward\"></i> icon-forward</li>\n                                        <li><i class=\"icon-fast-forward\"></i> icon-fast-forward</li>\n                                        <li><i class=\"icon-step-forward\"></i> icon-step-forward</li>\n                                        <li><i class=\"icon-eject\"></i> icon-eject</li>\n                                        <li><i class=\"icon-chevron-left\"></i> icon-chevron-left</li>\n                                        <li><i class=\"icon-chevron-right\"></i> icon-chevron-right</li>\n                                        <li><i class=\"icon-plus-sign\"></i> icon-plus-sign</li>\n                                        <li><i class=\"icon-minus-sign\"></i> icon-minus-sign</li>\n                                        <li><i class=\"icon-remove-sign\"></i> icon-remove-sign</li>\n                                        <li><i class=\"icon-ok-sign\"></i> icon-ok-sign</li>\n\n                                        <li><i class=\"icon-question-sign\"></i> icon-question-sign</li>\n                                        <li><i class=\"icon-info-sign\"></i> icon-info-sign</li>\n                                        <li><i class=\"icon-screenshot\"></i> icon-screenshot</li>\n                                        <li><i class=\"icon-remove-circle\"></i> icon-remove-circle</li>\n                                        <li><i class=\"icon-ok-circle\"></i> icon-ok-circle</li>\n                                        <li><i class=\"icon-ban-circle\"></i> icon-ban-circle</li>\n                                        <li><i class=\"icon-arrow-left\"></i> icon-arrow-left</li>\n                                        <li><i class=\"icon-arrow-right\"></i> icon-arrow-right</li>\n                                        <li><i class=\"icon-arrow-up\"></i> icon-arrow-up</li>\n                                        <li><i class=\"icon-arrow-down\"></i> icon-arrow-down</li>\n                                        <li><i class=\"icon-share-alt\"></i> icon-share-alt</li>\n                                        <li><i class=\"icon-resize-full\"></i> icon-resize-full</li>\n                                        <li><i class=\"icon-resize-small\"></i> icon-resize-small</li>\n                                        <li><i class=\"icon-plus\"></i> icon-plus</li>\n                                        <li><i class=\"icon-minus\"></i> icon-minus</li>\n                                        <li><i class=\"icon-asterisk\"></i> icon-asterisk</li>\n                                        <li><i class=\"icon-exclamation-sign\"></i> icon-exclamation-sign</li>\n                                        <li><i class=\"icon-gift\"></i> icon-gift</li>\n                                        <li><i class=\"icon-leaf\"></i> icon-leaf</li>\n                                        <li><i class=\"icon-fire\"></i> icon-fire</li>\n                                        <li><i class=\"icon-eye-open\"></i> icon-eye-open</li>\n                                        <li><i class=\"icon-eye-close\"></i> icon-eye-close</li>\n                                        <li><i class=\"icon-warning-sign\"></i> icon-warning-sign</li>\n                                        <li><i class=\"icon-plane\"></i> icon-plane</li>\n                                        <li><i class=\"icon-calendar\"></i> icon-calendar</li>\n                                        <li><i class=\"icon-random\"></i> icon-random</li>\n                                        <li><i class=\"icon-comment\"></i> icon-comment</li>\n                                        <li><i class=\"icon-magnet\"></i> icon-magnet</li>\n\n                                        <li><i class=\"icon-chevron-up\"></i> icon-chevron-up</li>\n                                        <li><i class=\"icon-chevron-down\"></i> icon-chevron-down</li>\n                                        <li><i class=\"icon-retweet\"></i> icon-retweet</li>\n                                        <li><i class=\"icon-shopping-cart\"></i> icon-shopping-cart</li>\n                                        <li><i class=\"icon-folder-close\"></i> icon-folder-close</li>\n                                        <li><i class=\"icon-folder-open\"></i> icon-folder-open</li>\n                                        <li><i class=\"icon-resize-vertical\"></i> icon-resize-vertical</li>\n                                        <li><i class=\"icon-resize-horizontal\"></i> icon-resize-horizontal</li>\n                                        <li><i class=\"icon-hdd\"></i> icon-hdd</li>\n                                        <li><i class=\"icon-bullhorn\"></i> icon-bullhorn</li>\n                                        <li><i class=\"icon-bell\"></i> icon-bell</li>\n                                        <li><i class=\"icon-certificate\"></i> icon-certificate</li>\n                                        <li><i class=\"icon-thumbs-up\"></i> icon-thumbs-up</li>\n                                        <li><i class=\"icon-thumbs-down\"></i> icon-thumbs-down</li>\n                                        <li><i class=\"icon-hand-right\"></i> icon-hand-right</li>\n                                        <li><i class=\"icon-hand-left\"></i> icon-hand-left</li>\n                                        <li><i class=\"icon-hand-up\"></i> icon-hand-up</li>\n                                        <li><i class=\"icon-hand-down\"></i> icon-hand-down</li>\n                                        <li><i class=\"icon-circle-arrow-right\"></i> icon-circle-arrow-right</li>\n                                        <li><i class=\"icon-circle-arrow-left\"></i> icon-circle-arrow-left</li>\n                                        <li><i class=\"icon-circle-arrow-up\"></i> icon-circle-arrow-up</li>\n                                        <li><i class=\"icon-circle-arrow-down\"></i> icon-circle-arrow-down</li>\n                                        <li><i class=\"icon-globe\"></i> icon-globe</li>\n                                        <li><i class=\"icon-wrench\"></i> icon-wrench</li>\n                                        <li><i class=\"icon-tasks\"></i> icon-tasks</li>\n                                        <li><i class=\"icon-filter\"></i> icon-filter</li>\n                                        <li><i class=\"icon-briefcase\"></i> icon-briefcase</li>\n                                        <li><i class=\"icon-fullscreen\"></i> icon-fullscreen</li>\n                                    </ul>\n\n                                </div>\n                            </div>\n                            <!-- END FONT AWESOME ICONS PORTLET-->\n                        </div>\n                    </div>\n                    <!--END:BODY-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/grids.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page-wrap\">\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 12</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span12\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span10\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span10\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span8\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid8</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span8\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6\" </code>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget yellow\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget purple\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                        <div class=\"span2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span10 offset2\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10 offset2</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span10 offset2\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span8 offset4\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 8 offset4</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span8 offset4\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span6 offset6\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget red\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 06 offset6</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span6 offset6\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span4 offset8\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget blue\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 04 offset8</h4>\n                                    <span class=\"tools\">\n                                        <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                        <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> class=\"span4 offset8\" </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span2 offset10\">\n                            <!-- BEGIN GRID SAMPLE PORTLET-->\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Grid 10 offset2</h4>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <code> span10 offset2 </code>\n                                </div>\n                            </div>\n                            <!-- END GRID SAMPLE PORTLET-->\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/index - 副本.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    \n        \n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <!-- BEGIN TRACKING CURVES PORTLET-->\n                            <div class=\"widget purple\">\n                                \n                                <div class=\"widget-body\">\n                                    <div id=\"chart-1\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END TRACKING CURVES PORTLET-->\n                        </div>\n\n                        <div class=\"span6\">\n                            <!-- BEGIN BASIC CHART PORTLET-->\n                            <div class=\"widget orange\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Selection Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-2\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END BASIC CHART PORTLET-->\n                        </div>\n                        <div class=\"span6\">\n                            <!-- BEGIN INTERACTIVE CHART PORTLET-->\n                            <div class=\"widget green\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-reorder\"></i> Live Chart</h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div id=\"chart-3\" class=\"chart\"></div>\n                                </div>\n                            </div>\n                            <!-- END INTERACTIVE CHART PORTLET-->\n                        </div>\n\n                   \n\n                    \n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n\n    <script src=\"assets/flot/jquery.flot.js\"></script>\n    <script src=\"assets/flot/jquery.flot.resize.js\"></script>\n    <script src=\"assets/flot/jquery.flot.pie.js\"></script>\n    <script src=\"assets/flot/jquery.flot.stack.js\"></script>\n    <script src=\"assets/flot/jquery.flot.crosshair.js\"></script>\n\n\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/flot-chart.js\"></script>\n    <script src=\"js/custom-flot-chart.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/index.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 结束页面顶部-->\n                <!-- 开始页面主要内容页面-->\n                <div class=\"widget purple\">\n                    <div class=\"widget-title\">\n                        <h4><i class=\"icon-reorder\"></i>四小狼工作室 Metro风格模板</h4>\n                        <span class=\"tools\">\n                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                        </span>\n                    </div>\n                    <div class=\"widget-body\">\n                        <div class=\"text-center\">\n                            <h3>四小狼后台模板，教你轻松入门，简单搭建清新简洁的bootstrap的Metro后台风格</h3>\n                        </div>\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>首先第一步入门工作当然是引用文件之类的啦，先来个头部文件既引用css文件应该如何去做。代码如下：</p>\n\n                                <br />\n                                <div class=\"widget yellow\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> 头文件引用</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n\n                                            <pre>&lt;!DOCTYPE html&gt;\n&lt;!--[if IE 8]&gt; &lt;html lang=&quot;en&quot; class=&quot;ie8&quot;&gt; &lt;![endif]--&gt;\n&lt;!--[if IE 9]&gt; &lt;html lang=&quot;en&quot; class=&quot;ie9&quot;&gt; &lt;![endif]--&gt;\n&lt;!--[if !IE]&gt;&lt;!--&gt; &lt;html lang=&quot;en&quot;&gt; &lt;!--&lt;![endif]--&gt;\n&lt;!-- 开始头部 --&gt;\n&lt;head&gt;\n   &lt;meta charset=&quot;utf-8&quot; /&gt;\n   &lt;title&gt;Metro By xmfdsh&lt;/title&gt;\n   &lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot; /&gt;\n   &lt;meta content=&quot;&quot; name=&quot;description&quot; /&gt;\n   &lt;meta content=&quot;Mosaddek&quot; name=&quot;author&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap-responsive.min.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/bootstrap/css/bootstrap-fileupload.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;assets/font-awesome/css/font-awesome.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style-responsive.css&quot; rel=&quot;stylesheet&quot; /&gt;\n   &lt;link href=&quot;css/style-default.css&quot; rel=&quot;stylesheet&quot; id=&quot;style_color&quot; /&gt;\n&lt;/head&gt;\n&lt;!-- 结束头部 --&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n\n                            <br />\n                        </div>\n\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>第二步：在引用了通用的css文件后，便可以开始布局了，首先是后台顶部的导航栏，其中包括了Logo，个人登陆信息，通知等。代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> header顶部导航栏布局</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>&lt;!-- 开始 Body --&gt;\n&lt;body class=&quot;fixed-top&quot;&gt;\n   &lt;!-- 开始 header 头部菜单 --&gt;\n   &lt;div id=&quot;header&quot; class=&quot;navbar navbar-inverse navbar-fixed-top&quot;&gt;\n       &lt;!-- 开始顶部的 navigation bar 导航菜单 --&gt;\n       &lt;div class=&quot;navbar-inner&quot;&gt;\n           &lt;div class=&quot;container-fluid&quot;&gt;\n               &lt;!--开始工具条 开关--&gt;\n               &lt;div class=&quot;sidebar-toggle-box hidden-phone&quot;&gt;\n                   &lt;div class=&quot;icon-reorder tooltips&quot; data-placement=&quot;right&quot; data-original-title=&quot;Metro By xmfdsh&quot;&gt;&lt;/div&gt;\n               &lt;/div&gt;\n               &lt;!--结束工具条 开关--&gt;\n               &lt;!-- 开始 Logo --&gt;\n               &lt;a class=&quot;brand&quot; href=&quot;index.html&quot;&gt;\n                   &lt;img src=&quot;img/logo.png&quot; alt=&quot;Metro Lab&quot; /&gt;\n               &lt;/a&gt;\n               &lt;!-- 结束Logo --&gt;\n               &lt;div id=&quot;top_menu&quot; class=&quot;nav notify-row&quot;&gt;\n                   &lt;!-- 开始通知 --&gt;\n                   &lt;ul class=&quot;nav top-menu&quot;&gt;\n                       &lt;!-- 开始设置 --&gt;\n                       &lt;li class=&quot;dropdown&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-tasks&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-important&quot;&gt;2&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended tasks-bar&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有2条任务&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;div class=&quot;task-info&quot;&gt;\n                                         &lt;div class=&quot;desc&quot;&gt;控制台&lt;/div&gt;\n                                         &lt;div class=&quot;percent&quot;&gt;44%&lt;/div&gt;\n                                       &lt;/div&gt;\n                                       &lt;div class=&quot;progress progress-striped active no-margin-bot&quot;&gt;\n                                           &lt;div class=&quot;bar&quot; style=&quot;width: 44%;&quot;&gt;&lt;/div&gt;\n                                       &lt;/div&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;div class=&quot;task-info&quot;&gt;\n                                           &lt;div class=&quot;desc&quot;&gt;数据库更新&lt;/div&gt;\n                                           &lt;div class=&quot;percent&quot;&gt;65%&lt;/div&gt;\n                                       &lt;/div&gt;\n                                       &lt;div class=&quot;progress progress-striped progress-success active no-margin-bot&quot;&gt;\n                                           &lt;div class=&quot;bar&quot; style=&quot;width: 65%;&quot;&gt;&lt;/div&gt;\n                                       &lt;/div&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               \n                               &lt;li class=&quot;external&quot;&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有任务&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束设置 --&gt;\n                       &lt;!-- 开始下拉 收件箱 --&gt;\n                       &lt;li class=&quot;dropdown&quot; id=&quot;header_inbox_bar&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-envelope-alt&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-important&quot;&gt;2&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended inbox&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有2条消息&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;photo&quot;&gt;&lt;img src=&quot;img/avatar-mini.png&quot; alt=&quot;avatar&quot; /&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;subject&quot;&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;from&quot;&gt;xmfdsh&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;time&quot;&gt;刚刚&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;message&quot;&gt;\n\t\t\t\t\t\t\t\t\t    Hello, 这是个消息例子.\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;photo&quot;&gt;&lt;img src=&quot;img/avatar-mini.png&quot; alt=&quot;avatar&quot; /&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;subject&quot;&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;from&quot;&gt;张视焕&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;time&quot;&gt;20分钟&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;span class=&quot;message&quot;&gt;\n\t\t\t\t\t\t\t\t\t Hi, 最近咋样?\n\t\t\t\t\t\t\t\t\t&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有信息&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束下拉 收件箱 --&gt;\n                       &lt;!-- 开始下拉 通知 --&gt;\n                       &lt;li class=&quot;dropdown&quot; id=&quot;header_notification_bar&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;i class=&quot;icon-bell-alt&quot;&gt;&lt;/i&gt;\n                               &lt;span class=&quot;badge badge-warning&quot;&gt;4&lt;/span&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended notification&quot;&gt;\n                               &lt;li&gt;\n                                   &lt;p&gt;你有4条提示信息&lt;/p&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-important&quot;&gt;&lt;i class=&quot;icon-bolt&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       手机欠费\n                                       &lt;span class=&quot;small italic&quot;&gt;4分钟&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-warning&quot;&gt;&lt;i class=&quot;icon-bell&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       windows激活过期\n                                       &lt;span class=&quot;small italic&quot;&gt;1小时&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-important&quot;&gt;&lt;i class=&quot;icon-bolt&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       数据库奔溃\n                                       &lt;span class=&quot;small italic&quot;&gt;4小时&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;\n                                       &lt;span class=&quot;label label-success&quot;&gt;&lt;i class=&quot;icon-plus&quot;&gt;&lt;/i&gt;&lt;/span&gt;\n                                       世界杯要下注了\n                                       &lt;span class=&quot;small italic&quot;&gt;刚刚&lt;/span&gt;\n                                   &lt;/a&gt;\n                               &lt;/li&gt;\n                               &lt;li&gt;\n                                   &lt;a href=&quot;#&quot;&gt;查看所有通知&lt;/a&gt;\n                               &lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束下拉 通知 --&gt;\n                   &lt;/ul&gt;\n               &lt;/div&gt;\n               &lt;!-- 结束通知 --&gt;\n               &lt;div class=&quot;top-nav &quot;&gt;\n                   &lt;ul class=&quot;nav pull-right top-menu&quot; &gt;\n                       &lt;!-- BEGIN SUPPORT --&gt;\n                       &lt;li class=&quot;dropdown mtop5&quot;&gt;\n                           &lt;a class=&quot;dropdown-toggle element&quot; data-placement=&quot;bottom&quot; data-toggle=&quot;tooltip&quot; href=&quot;#&quot; data-original-title=&quot;闲聊&quot;&gt;\n                               &lt;i class=&quot;icon-comments-alt&quot;&gt;&lt;/i&gt;\n                           &lt;/a&gt;\n                       &lt;/li&gt;\n                       &lt;li class=&quot;dropdown mtop5&quot;&gt;\n                           &lt;a class=&quot;dropdown-toggle element&quot; data-placement=&quot;bottom&quot; data-toggle=&quot;tooltip&quot; href=&quot;#&quot; data-original-title=&quot;帮助&quot;&gt;\n                               &lt;i class=&quot;icon-headphones&quot;&gt;&lt;/i&gt;\n                           &lt;/a&gt;\n                       &lt;/li&gt;\n                       &lt;!-- END SUPPORT --&gt;\n                       &lt;!-- 开始用户登录下拉菜单 --&gt;\n                       &lt;li class=&quot;dropdown&quot;&gt;\n                           &lt;a href=&quot;#&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot;&gt;\n                               &lt;img src=&quot;img/avatar1_small.jpg&quot; alt=&quot;&quot;&gt;\n                               &lt;span class=&quot;username&quot;&gt;xmfdsh&lt;/span&gt;\n                               &lt;b class=&quot;caret&quot;&gt;&lt;/b&gt;\n                           &lt;/a&gt;\n                           &lt;ul class=&quot;dropdown-menu extended logout&quot;&gt;\n                               &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;我的资料&lt;/a&gt;&lt;/li&gt;\n                               &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;i class=&quot;icon-cog&quot;&gt;&lt;/i&gt;我的设置&lt;/a&gt;&lt;/li&gt;\n                               &lt;li&gt;&lt;a href=&quot;login.html&quot;&gt;&lt;i class=&quot;icon-key&quot;&gt;&lt;/i&gt;退出&lt;/a&gt;&lt;/li&gt;\n                           &lt;/ul&gt;\n                       &lt;/li&gt;\n                       &lt;!-- 结束用户菜单 --&gt;\n                   &lt;/ul&gt;\n               &lt;/div&gt;\n           &lt;/div&gt;\n       &lt;/div&gt;\n       &lt;!-- 结束顶部的 navigation bar 导航菜单 --&gt;\n   &lt;/div&gt;\n   &lt;!-- 结束 header 头部菜单 --&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>第三步便是左边的导航栏，以及右边待填的内容，代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> 左侧导航栏</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>   &lt;!-- BEGIN CONTAINER --&gt;\n   &lt;div id=&quot;container&quot; class=&quot;row-fluid&quot;&gt;\n      &lt;!-- 开始左侧 导航菜单 --&gt;\n      &lt;div class=&quot;sidebar-scroll&quot;&gt;\n        &lt;div id=&quot;sidebar&quot; class=&quot;nav-collapse collapse&quot;&gt;\n         &lt;!-- 开始左侧 工具条菜单 --&gt;\n          &lt;ul class=&quot;sidebar-menu&quot;&gt;\n              &lt;li class=&quot;sub-menu active&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;index.html&quot;&gt;\n                      &lt;i class=&quot;icon-dashboard&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;控制台&lt;/span&gt;\n                  &lt;/a&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-book&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;UI 组件&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;general.html&quot;&gt;通用&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;button.html&quot;&gt;按钮&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;slider.html&quot;&gt;滑动&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;metro_view.html&quot;&gt;Metro风格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;tabs_accordion.html&quot;&gt;Tab选项卡 &amp; 手风琴&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;typography.html&quot;&gt;文字排版&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;tree_view.html&quot;&gt;树菜单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;nestable.html&quot;&gt;嵌套列表&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;插件&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;calendar.html&quot;&gt;日历&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;grids.html&quot;&gt;网格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;chartjs.html&quot;&gt;图表统计&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;flot_chart.html&quot;&gt;Flot图表&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;gallery.html&quot;&gt;相册&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-tasks&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;表单&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_layout.html&quot;&gt;表单布局&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_component.html&quot;&gt;表单组件&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_wizard.html&quot;&gt;表单提示&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;form_validation.html&quot;&gt;表单验证&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;dropzone.html&quot;&gt;文件上传&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;数据表格&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;basic_table.html&quot;&gt;简单表格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;dynamic_table.html&quot;&gt;动态表格&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;editable_table.html&quot;&gt;可编辑表格&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-fire&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;Icon图标&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;font_awesome.html&quot;&gt;FontAwesome图标&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;glyphicons.html&quot;&gt;Glyphicons图标&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;javascript:;&quot;&gt;\n                      &lt;i class=&quot;icon-trophy&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;代码片段&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a href=&quot;general_portlet.html&quot; class=&quot;&quot;&gt;通用片段&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a href=&quot;draggable_portlet.html&quot; class=&quot;&quot;&gt;可拖拽片段&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a class=&quot;&quot; href=&quot;javascript:;&quot;&gt;\n                      &lt;i class=&quot;icon-map-marker&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;地图&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a href=&quot;vector_map.html&quot; class=&quot;&quot;&gt;Vector地图&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a href=&quot;google_map.html&quot; class=&quot;&quot;&gt;Google地图&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-file-alt&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;基本页面&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;blank.html&quot;&gt;空白页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;blog.html&quot;&gt;博客&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;timeline.html&quot;&gt;时间轴&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;profile.html&quot;&gt;个人资料&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;about_us.html&quot;&gt;关于我们&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;contact_us.html&quot;&gt;联系我们&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li class=&quot;sub-menu&quot;&gt;\n                  &lt;a href=&quot;javascript:;&quot; class=&quot;&quot;&gt;\n                      &lt;i class=&quot;icon-glass&quot;&gt;&lt;/i&gt;\n                      &lt;span&gt;其他&lt;/span&gt;\n                      &lt;span class=&quot;arrow&quot;&gt;&lt;/span&gt;\n                  &lt;/a&gt;\n                  &lt;ul class=&quot;sub&quot;&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;lock.html&quot;&gt;锁屏&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;invoice.html&quot;&gt;购物单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;pricing_tables.html&quot;&gt;价目单&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;search_result.html&quot;&gt;搜索展示&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;faq.html&quot;&gt;帮助页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;404.html&quot;&gt;404错误页面&lt;/a&gt;&lt;/li&gt;\n                      &lt;li&gt;&lt;a class=&quot;&quot; href=&quot;500.html&quot;&gt;500错误页面&lt;/a&gt;&lt;/li&gt;\n                  &lt;/ul&gt;\n              &lt;/li&gt;\n              &lt;li&gt;\n                  &lt;a class=&quot;&quot; href=&quot;login.html&quot;&gt;\n                    &lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;\n                    &lt;span&gt;登录页面&lt;/span&gt;\n                  &lt;/a&gt;\n              &lt;/li&gt;\n          &lt;/ul&gt;\n         &lt;!-- 结束左侧 工具条菜单 --&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n   &lt;!-- 结束左侧 导航菜单 --&gt;\n   &lt;!-- 开始内容页 --&gt;  \n      &lt;div id=&quot;main-content&quot;&gt;\n         &lt;!-- 开始页面容器--&gt;\n         &lt;div class=&quot;container-fluid&quot;&gt;\n            &lt;!-- 开始页面顶部--&gt;   \n            &lt;div class=&quot;row-fluid&quot;&gt;\n               &lt;div class=&quot;span12&quot;&gt;\n                   &lt;!-- 开始主题定制器--&gt;\n                   &lt;div id=&quot;theme-change&quot; class=&quot;hidden-phone&quot;&gt;\n                       &lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;\n                        &lt;span class=&quot;settings&quot;&gt;\n                            &lt;span class=&quot;text&quot;&gt;主题颜色:&lt;/span&gt;\n                            &lt;span class=&quot;colors&quot;&gt;\n                                &lt;span class=&quot;color-default&quot; data-style=&quot;default&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-green&quot; data-style=&quot;green&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-gray&quot; data-style=&quot;gray&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-purple&quot; data-style=&quot;purple&quot;&gt;&lt;/span&gt;\n                                &lt;span class=&quot;color-red&quot; data-style=&quot;red&quot;&gt;&lt;/span&gt;\n                            &lt;/span&gt;\n                        &lt;/span&gt;\n                   &lt;/div&gt;\n                   &lt;!-- 结束主题定制器--&gt;\n                   &lt;!-- 开始页面标题 &amp; 面包屑导航--&gt;\n                   &lt;h3 class=&quot;page-title&quot;&gt;\n                     控制台\n                   &lt;/h3&gt;\n                   &lt;ul class=&quot;breadcrumb&quot;&gt;\n                       &lt;li&gt;\n                           &lt;a href=&quot;#&quot;&gt;首页&lt;/a&gt;\n                           &lt;span class=&quot;divider&quot;&gt;/&lt;/span&gt;\n                       &lt;/li&gt;                      \n                       &lt;li class=&quot;active&quot;&gt;\n                           控制台\n                       &lt;/li&gt;\n                       &lt;li class=&quot;pull-right search-wrap&quot;&gt;\n                           &lt;form action=&quot;search_result.html&quot; class=&quot;hidden-phone&quot;&gt;\n                               &lt;div class=&quot;input-append search-input-area&quot;&gt;\n                                   &lt;input class=&quot;&quot; id=&quot;appendedInputButton&quot; type=&quot;text&quot;&gt;\n                                   &lt;button class=&quot;btn&quot; type=&quot;button&quot;&gt;&lt;i class=&quot;icon-search&quot;&gt;&lt;/i&gt; &lt;/button&gt;\n                               &lt;/div&gt;\n                           &lt;/form&gt;\n                       &lt;/li&gt;\n                   &lt;/ul&gt;\n                   &lt;!-- 结束页面标题 &amp; 面包屑导航--&gt;\n               &lt;/div&gt;\n            &lt;/div&gt;\n            &lt;!-- 开始页面主要内容页面--&gt;\n          &lt;!-- 结束页面主要内容页面--&gt;\n            &lt;/div&gt;\n          \n       &lt;/div&gt;\n   &lt;/div&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n\n                        <div class=\"row-fluid\">\n                            <div class=\"span2\">\n                            </div>\n                            <div class=\"span8\">\n                                <p>最后一步，footer，简洁一点就行，不过我本来就喜欢简洁一点的风格，然后还有的就是在页底加载的Js文件，可以减少加载时间，代码如下：</p>\n                                <br />\n                                <div class=\"widget purple\">\n                                    <div class=\"widget-title\">\n                                        <h4><i class=\"icon-reorder\"></i> footer以及Js的加载</h4>\n                                        <span class=\"tools\">\n                                            <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                            <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                        </span>\n                                    </div>\n                                    <div class=\"widget-body\">\n                                        <div class=\"portlet-scroll-3\" style=\"overflow: hidden; outline: none;\" tabindex=\"5006\">\n                                            <pre>   &lt;!-- BEGIN FOOTER --&gt;\n   &lt;div id=&quot;footer&quot;&gt;\n       Copyright © 2014 四小狼工作室 Powered by xmfdsh. \n   &lt;/div&gt;\n   &lt;!-- END FOOTER --&gt;\n            \n   &lt;!-- 开始加载 Js文件 --&gt;\n   &lt;!-- 在底部加载Js文件，可以减少加载时间 --&gt;\n   &lt;script src=&quot;js/jquery-1.8.3.min.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/jquery.nicescroll.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;assets/bootstrap/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/jquery.scrollTo.min.js&quot;&gt;&lt;/script&gt;\n   &lt;!-- ie8 fixes --&gt;\n   &lt;!--[if lt IE 9]&gt;\n   &lt;script src=&quot;js/excanvas.js&quot;&gt;&lt;/script&gt;\n   &lt;script src=&quot;js/respond.js&quot;&gt;&lt;/script&gt;\n   &lt;![endif]--&gt;\n   &lt;!--为全部页面加载的公共Js文件--&gt;\n   &lt;script src=&quot;js/common-scripts.js&quot;&gt;&lt;/script&gt;\n   &lt;!--仅为此页面使用的Js文件--&gt;\n   &lt;!-- 结束加载Js文件 --&gt;  \n &lt;/body&gt;\n&lt;/html&gt;</pre>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"span2\">\n                            </div>\n                        </div>\n                        <!-- 结束页面主要内容页面-->\n                    </div>\n                </div>\n\n            </div>\n        </div>\n\n        <!-- BEGIN FOOTER -->\n        <div id=\"footer\">\n            Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n        </div>\n        <!-- END FOOTER -->\n        <!-- 开始加载 Js文件 -->\n        <!-- 在底部加载Js文件，可以减少加载时间 -->\n        <script src=\"js/jquery-1.8.3.min.js\"></script>\n        <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n        <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n        <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n        <!-- ie8 fixes -->\n        <!--[if lt IE 9]>\n        <script src=\"js/excanvas.js\"></script>\n        <script src=\"js/respond.js\"></script>\n        <![endif]-->\n        <!--为全部页面加载的公共Js文件-->\n        <script src=\"js/common-scripts.js\"></script>\n\n        <!--仅为此页面使用的Js文件-->\n        <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/invoice.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!--BEGIN METRO STATES-->\n                    <div class=\"metro-nav\">\n\n                        <div class=\"metro-nav-block  nav-block-grey\">\n                            <a href=\"invoice.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-eye-open\"></i>\n                                </div>\n                                <div class=\"status\">View Invoice</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-blue \">\n                            <a href=\"create_invoice.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-edit\"></i>\n                                </div>\n                                <div class=\"status\">Create Invoice</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block  nav-block-red\">\n                            <a href=\"invoice_list.html\" data-original-title=\"\">\n                                <div class=\"text-center\">\n                                    <i class=\"icon-th-list\"></i>\n                                </div>\n                                <div class=\"status\">Invoice List</div>\n                            </a>\n                        </div>\n                    </div>\n                    <div class=\"space10\"></div>\n                    <!--END METRO STATES-->\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-edit\"></i> Invoice Page </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span12\">\n                                        <div class=\"text-center\">\n                                            <img alt=\"\" src=\"img/vector-lab.jpg\">\n                                        </div>\n                                        <hr>\n\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid invoice-list\">\n                                    <div class=\"span4\">\n                                        <h4>BILLING ADDRESS</h4>\n                                        <p>\n                                            Jonathan Smith <br>\n                                            44 Dreamland Tower, Suite 566 <br>\n                                            ABC, Dreamland 1230<br>\n                                            Tel: +12 (012) 345-67-89\n                                        </p>\n                                    </div>\n                                    <div class=\"span4\">\n                                        <h4>SHIPPING ADDRESS</h4>\n                                        <p>\n                                            Vector Lab<br>\n                                            Road 1, House 2, Sector 3<br>\n                                            ABC, Dreamland 1230<br>\n                                            P: +38 (123) 456-7890<br>\n                                        </p>\n                                    </div>\n                                    <div class=\"span4\">\n                                        <h4>INVOICE INFO</h4>\n                                        <ul class=\"unstyled\">\n                                            <li>Invoice Number\t\t: <strong>69626</strong></li>\n                                            <li>Invoice Date\t\t: 2013-03-17</li>\n                                            <li>Due Date\t\t\t: 2013-03-20</li>\n                                            <li>Invoice Status\t\t: Paid</li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid\">\n                                    <table class=\"table table-striped table-hover\">\n                                        <thead>\n                                            <tr>\n                                                <th>#</th>\n                                                <th>Item</th>\n                                                <th class=\"hidden-480\">Description</th>\n                                                <th class=\"hidden-480\">Unit Cost</th>\n                                                <th class=\"hidden-480\">Quantity</th>\n                                                <th>Total</th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            <tr>\n                                                <td>1</td>\n                                                <td>LCD Monitor</td>\n                                                <td class=\"hidden-480\">20 inch Philips LCD Black color monitor</td>\n                                                <td class=\"hidden-480\">$ 1000</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$ 2000</td>\n                                            </tr>\n                                            <tr>\n                                                <td>2</td>\n                                                <td>Laptop</td>\n                                                <td class=\"hidden-480\">Apple Mac book pro 15” Retina Display. 2.8 GHz Processor,8 GB Ram</td>\n                                                <td class=\"hidden-480\">$1750</td>\n                                                <td class=\"hidden-480\">1</td>\n                                                <td>$1750</td>\n                                            </tr>\n                                            <tr>\n                                                <td>3</td>\n                                                <td>Mouse</td>\n                                                <td class=\"hidden-480\">Apple Magic Mouse</td>\n                                                <td class=\"hidden-480\">$90</td>\n                                                <td class=\"hidden-480\">3</td>\n                                                <td>$270</td>\n                                            </tr>\n                                            <tr>\n                                                <td>4</td>\n                                                <td>Personal Computer</td>\n                                                <td class=\"hidden-480\">iMac 21 inch slim body. 1.7 GHz, 8 GB Ram</td>\n                                                <td class=\"hidden-480\">$1200</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$2400</td>\n                                            </tr>\n                                            <tr>\n                                                <td>5</td>\n                                                <td>Printer</td>\n                                                <td class=\"hidden-480\">Epson Color Jet printer </td>\n                                                <td class=\"hidden-480\">$200</td>\n                                                <td class=\"hidden-480\">2</td>\n                                                <td>$400</td>\n                                            </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span4 invoice-block pull-right\">\n                                        <ul class=\"unstyled amounts\">\n                                            <li><strong>Sub - Total amount :</strong> $6820</li>\n                                            <li><strong>Discount :</strong> 10%</li>\n                                            <li><strong>VAT :</strong> -----</li>\n                                            <li><strong>Grand Total :</strong> $6138</li>\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"space20\"></div>\n                                <div class=\"row-fluid text-center\">\n                                    <a class=\"btn btn-success btn-large hidden-print\"> Submit Your Invoice <i class=\"icon-check\"></i></a>\n                                    <a class=\"btn btn-inverse btn-large hidden-print\" onclick=\"javascript:window.print();\">Print <i class=\"icon-print icon-big\"></i></a>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/lock.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 锁屏页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"lock\">\n    <div class=\"lock-header\">\n        <!-- BEGIN LOGO -->\n        <a class=\"center\" id=\"logo\" href=\"index.html\">\n            <img class=\"center\" alt=\"logo\" src=\"img/logo.png\">\n        </a>\n        <!-- END LOGO -->\n    </div>\n    <div class=\"lock-wrap\">\n        <div class=\"metro single-size gray\">\n            <img src=\"img/lock-thumb.jpg\" alt=\"\" style=\"height: 165px\" >\n        </div>\n        <div class=\"metro double-size blue\">\n            <h1>Jonathan Smith</h1>\n            <p>vectorlab@gmail.com</p>\n        </div>\n        <div class=\"metro double-size green\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"password\" class=\"\" placeholder=\"Password\">\n                    <button type=\"submit\" class=\"btn tarquoise\"><i class=\" icon-arrow-right\"></i></button>\n                </div>\n            </form>\n        </div>\n        <div class=\"metro single-size terques\">\n            <div class=\"locked\">\n                <i class=\"icon-lock\"></i>\n                <span>Locked</span>\n            </div>\n        </div>\n        <div class=\"metro double-size gray \">\n            <a href=\"login.html\" class=\"user-position\">\n                <i class=\"icon-user\"></i>\n                <span>Login Another User</span>\n            </a>\n        </div>\n        <div class=\"metro double-size orange\">\n            <a href=\"javascript:;\" class=\"user-position\">\n                <i class=\"icon-key\"></i>\n                <span>Forgot Password ?</span>\n            </a>\n        </div>\n    </div>\n</body>\n<!-- END BODY -->\n</html>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/login.html",
    "content": "<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!--> <html lang=\"en\"> <!--<![endif]-->\n<!-- BEGIN HEAD -->\n<head>\n   <meta charset=\"utf-8\" />\n   <title>Metro风格响应式后台管理系统模板MetroAdmin 登录页面 - JS代码网</title>\n   <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n   <meta content=\"\" name=\"description\" />\n   <meta content=\"\" name=\"author\" />\n   <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n   <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n   <link href=\"css/style.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n   <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- END HEAD -->\n<!-- BEGIN BODY -->\n<body class=\"lock\">\n    <div class=\"lock-header\">\n        <!-- BEGIN LOGO -->\n        <a class=\"center\" id=\"logo\" href=\"index.html\">\n            <img class=\"center\" alt=\"logo\" src=\"img/logo.png\">\n        </a>\n        <!-- END LOGO -->\n    </div>\n    <div class=\"login-wrap\">\n        <div class=\"metro single-size red\">\n            <div class=\"locked\">\n                <i class=\"icon-lock\"></i>\n                <span>登录</span>\n            </div>\n        </div>\n        <div class=\"metro double-size green\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"text\" class=\"\" placeholder=\"Username\">\n                </div>\n            </form>\n        </div>\n        <div class=\"metro double-size yellow\">\n            <form action=\"index.html\">\n                <div class=\"input-append lock-input\">\n                    <input type=\"password\" class=\"\" placeholder=\"Password\">\n                </div>\n            </form>\n        </div>\n        <div class=\"metro single-size terques login\">\n            <form action=\"index.html\">\n                <button type=\"submit\" class=\"btn login-btn\">\n                    登录\n                    <i class=\" icon-long-arrow-right\"></i>\n                </button>\n            </form>\n        </div>\n        <div class=\"metro double-size navy-blue \">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-facebook-sign\"></i>\n                <span>Facebook 登录</span>\n            </a>\n        </div>\n        <div class=\"metro single-size deep-red\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-google-plus-sign\"></i>\n                <span>Google 登录</span>\n            </a>\n        </div>\n        <div class=\"metro double-size blue\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-twitter-sign\"></i>\n                <span>Twitter 登录</span>\n            </a>\n        </div>\n        <div class=\"metro single-size purple\">\n            <a href=\"index.html\" class=\"social-link\">\n                <i class=\"icon-skype\"></i>\n                <span>Skype 登录</span>\n            </a>\n        </div>\n        <div class=\"login-footer\">\n            <div class=\"remember-hint pull-left\">\n                <input type=\"checkbox\" id=\"\"> 记住密码\n            </div>\n            <div class=\"forgot-hint pull-right\">\n                <a id=\"forget-password\" class=\"\" href=\"javascript:;\">忘记密码?</a>\n            </div>\n        </div>\n    </div>\n</body>\n<!-- END BODY -->\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/metro_view.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!--BEGIN METRO STATES-->\n                    <div class=\"metro-nav metro-fix-view\">\n                        <div class=\"metro-nav-block nav-block-green long\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <span class=\"value\">\n                                    <i class=\"icon-user\"></i>\n                                    329\n                                </span>\n                                <div class=\"status\">New User</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-orange\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-envelope\"></i>\n                                <div class=\"info\">321</div>\n                                <div class=\"status\">Mail</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-light-yellow\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-comments-alt\"></i>\n                                <div class=\"info\">49</div>\n                                <div class=\"status\">Comments</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-blue double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-tasks\"></i>\n                                <div class=\"info\">$37624</div>\n                                <div class=\"status\">Stock</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-yellow\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-tags\"></i>\n                                <div class=\"info\">+970</div>\n                                <div class=\"status\">Sales</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-grey\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-phone\"></i>\n                                <div class=\"status\">Phone</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-red double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-bar-chart\"></i>\n                                <div class=\"info\">+288</div>\n                                <div class=\"status\">Update</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-olive\">\n                            <a href=\"#\" data-original-title=\"\" class=\"text-center\">\n                                <i class=\"icon-star-empty\"></i>\n                                <div class=\"status\">Rattings</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-block-purple double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-eye-open\"></i>\n                                <div class=\"info\">+8914</div>\n                                <div class=\"status\">Unique Visitor</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-deep-red\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-shopping-cart\"></i>\n                                <div class=\"info\">29</div>\n                                <div class=\"status\">New Order</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-deep-gray\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-remove-sign\"></i>\n                                <div class=\"info\">34 </div>\n                                <div class=\"status\">Cancelled</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-purple\">\n                            <a href=\"#\" data-original-title=\"\" class=\"text-center\">\n                                <i class=\"icon-cogs\"></i>\n                                <div class=\"status\">Settings</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-light-brown\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-shopping-cart\"></i>\n                                <div class=\"info\">29</div>\n                                <div class=\"status\">New Order</div>\n                            </a>\n                        </div>\n\n                        <div class=\"metro-nav-block nav-deep-terques double\">\n                            <a href=\"#\" data-original-title=\"\">\n                                <i class=\"icon-external-link\"></i>\n                                <div class=\"info\">$53412</div>\n                                <div class=\"status\">Total Profit</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-blue \">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-dashboard\"></i>\n                                <div class=\"status\">Dashboard</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-deep-thistle\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\"icon-signout\"></i>\n                                <div class=\"status\">Sign Out</div>\n                            </a>\n                        </div>\n                        <div class=\"metro-nav-block nav-light-green\">\n                            <a href=\"#\" class=\"text-center\" data-original-title=\"\">\n                                <i class=\" icon-puzzle-piece\"></i>\n                                <div class=\"status\">Warning</div>\n                            </a>\n                        </div>\n                    </div>\n\n                    <div class=\"space10\"></div>\n                    <!--END METRO STATES-->\n\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-th-large\"></i> More Metro Style </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <!--BEGIN METRO STATES-->\n                                    <div class=\"row-fluid\">\n                                        <!--BEGIN METRO STATES-->\n                                        <div class=\"metro-nav\">\n                                            <div class=\"metro-nav-block nav-block-orange\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-user\"></i>\n                                                    <div class=\"info\">321</div>\n                                                    <div class=\"status\">New User</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-yellow\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-tags\"></i>\n                                                    <div class=\"info\">+970</div>\n                                                    <div class=\"status\">Sales</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-olive\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-comments-alt\"></i>\n                                                    <div class=\"info\">49</div>\n                                                    <div class=\"status\">Comments</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-deep-terques double\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-eye-open\"></i>\n                                                    <div class=\"info\">+897</div>\n                                                    <div class=\"status\">Unique Visitor</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-red\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-bar-chart\"></i>\n                                                    <div class=\"info\">+288</div>\n                                                    <div class=\"status\">Update</div>\n                                                </a>\n                                            </div>\n                                        </div>\n                                        <div class=\"metro-nav\">\n                                            <div class=\"metro-nav-block nav-light-purple\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-shopping-cart\"></i>\n                                                    <div class=\"info\">29</div>\n                                                    <div class=\"status\">New Order</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-blue double\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-tasks\"></i>\n                                                    <div class=\"info\">$37624</div>\n                                                    <div class=\"status\">Stock</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-green\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-envelope\"></i>\n                                                    <div class=\"info\">123</div>\n                                                    <div class=\"status\">Messages</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-light-brown\">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-remove-sign\"></i>\n                                                    <div class=\"info\">34</div>\n                                                    <div class=\"status\">Cancelled</div>\n                                                </a>\n                                            </div>\n                                            <div class=\"metro-nav-block nav-block-grey \">\n                                                <a data-original-title=\"\" href=\"#\">\n                                                    <i class=\"icon-external-link\"></i>\n                                                    <div class=\"info\">$53412</div>\n                                                    <div class=\"status\">Total Profit</div>\n                                                </a>\n                                            </div>\n                                        </div>\n                                        <!--END METRO STATES-->\n                                    </div>\n                                    <div class=\"clearfix\"></div>\n                                    <!--END METRO STATES-->\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row-fluid\">\n                        <div class=\"span12\">\n                            <div class=\"widget\">\n                                <div class=\"widget-title\">\n                                    <h4><i class=\"icon-th-large\"></i> More Metro Style </h4>\n                                    <span class=\"tools\">\n                                        <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                        <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                    </span>\n                                </div>\n                                <div class=\"widget-body\">\n                                    <!--BEGIN METRO STATES-->\n                                    <div class=\"metro-nav\">\n                                        <div class=\"metro-nav-block nav-block-orange\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-user\"></i>\n                                                <div class=\"info\">321</div>\n                                                <div class=\"status\">New User</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-yellow\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-tags\"></i>\n                                                <div class=\"info\">+970</div>\n                                                <div class=\"status\">Sales</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-grey\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-comments-alt\"></i>\n                                                <div class=\"info\">49</div>\n                                                <div class=\"status\">Comments</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-blue\">\n                                            <a data-original-title=\"\" href=\"#\">\n                                                <i class=\"icon-eye-open\"></i>\n                                                <div class=\"info\">+897</div>\n                                                <div class=\"status\">Unique Visitor</div>\n                                            </a>\n                                        </div>\n                                        <div class=\"metro-nav-block nav-block-red\">\n                                            <a data-original-title=\"\" class=\"text-center\" href=\"#\">\n                                                <i class=\"icon-lightbulb\"></i>\n                                                <div class=\"status\">Dashboard</div>\n                                            </a>\n                                        </div>\n                                    </div>\n                                    <div class=\"clearfix\"></div>\n                                    <!--END METRO STATES-->\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/nestable.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/nestable/jquery.nestable.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"margin-bottom-10 pull-right\" id=\"nestable_list_menu\">\n                            <button type=\"button\" class=\"btn btn-success\" data-action=\"expand-all\">Expand All</button>\n                            <button type=\"button\" class=\"btn btn-warning\" data-action=\"collapse-all\">Collapse All</button>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <h3>Serialised Output (per list)</h3>\n                        <div class=\"row-fluid\">\n                            <div class=\"span6\">\n                                <textarea id=\"nestable_list_1_output\" class=\"m-wrap span12\"></textarea>\n                            </div>\n                            <div class=\"span6\">\n                                <textarea id=\"nestable_list_2_output\" class=\"m-wrap span12\"></textarea>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 1</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_1\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item\" data-id=\"1\">\n                                            <div class=\"dd-handle\">Item 1</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"2\">\n                                            <div class=\"dd-handle\">Item 2</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item\" data-id=\"3\">\n                                                    <div class=\"dd-handle\">Item 3</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"4\">\n                                                    <div class=\"dd-handle\">Item 4</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"5\">\n                                                    <div class=\"dd-handle\">Item 5</div>\n                                                    <ol class=\"dd-list\">\n                                                        <li class=\"dd-item\" data-id=\"6\">\n                                                            <div class=\"dd-handle\">Item 6</div>\n                                                        </li>\n                                                        <li class=\"dd-item\" data-id=\"7\">\n                                                            <div class=\"dd-handle\">Item 7</div>\n                                                        </li>\n                                                        <li class=\"dd-item\" data-id=\"8\">\n                                                            <div class=\"dd-handle\">Item 8</div>\n                                                        </li>\n                                                    </ol>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"9\">\n                                                    <div class=\"dd-handle\">Item 9</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"10\">\n                                                    <div class=\"dd-handle\">Item 10</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"11\">\n                                            <div class=\"dd-handle\">Item 11</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"12\">\n                                            <div class=\"dd-handle\">Item 12</div>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span6\">\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 2</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_2\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item\" data-id=\"13\">\n                                            <div class=\"dd-handle\">Item 13</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"14\">\n                                            <div class=\"dd-handle\">Item 14</div>\n                                        </li>\n                                        <li class=\"dd-item\" data-id=\"15\">\n                                            <div class=\"dd-handle\">Item 15</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item\" data-id=\"16\">\n                                                    <div class=\"dd-handle\">Item 16</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"17\">\n                                                    <div class=\"dd-handle\">Item 17</div>\n                                                </li>\n                                                <li class=\"dd-item\" data-id=\"18\">\n                                                    <div class=\"dd-handle\">Item 18</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-align-left\"></i> Nestable List 3</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"dd\" id=\"nestable_list_3\">\n                                    <ol class=\"dd-list\">\n                                        <li class=\"dd-item dd3-item\" data-id=\"13\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 13</div>\n                                        </li>\n                                        <li class=\"dd-item dd3-item\" data-id=\"14\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 14</div>\n                                        </li>\n                                        <li class=\"dd-item dd3-item\" data-id=\"15\">\n                                            <div class=\"dd-handle dd3-handle\"></div>\n                                            <div class=\"dd3-content\">Item 15</div>\n                                            <ol class=\"dd-list\">\n                                                <li class=\"dd-item dd3-item\" data-id=\"16\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 16</div>\n                                                </li>\n                                                <li class=\"dd-item dd3-item\" data-id=\"17\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 17</div>\n                                                </li>\n                                                <li class=\"dd-item dd3-item\" data-id=\"18\">\n                                                    <div class=\"dd-handle dd3-handle\"></div>\n                                                    <div class=\"dd3-content\">Item 18</div>\n                                                </li>\n                                            </ol>\n                                        </li>\n                                    </ol>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/nestable.js\"></script>\n    <script src=\"assets/nestable/jquery.nestable.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/pricing_tables.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN BLANK PAGE PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-tags\"></i> Pricing Table </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"pricing-title\">\n                                        <h2>30 days Free Trial on All Accounts</h2>\n                                        <h4>No risk. No hidden fees. Cancel at anytime. </h4>\n                                    </div>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table terques\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Micro </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>20 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>1</strong> Website</li>\n                                                <li><strong>2</strong> Projects</li>\n                                                <li><strong>1GB</strong> Storage</li>\n                                                <li><strong>$0</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table red\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Starter </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>30 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>5</strong> Website</li>\n                                                <li><strong>10</strong> Projects</li>\n                                                <li><strong>15GB</strong> Storage</li>\n                                                <li><strong>$30</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table green most-popular\">\n                                            <div class=\"pricing-head \">\n                                                <h3> Business </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>60 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>10</strong> Website</li>\n                                                <li><strong>20</strong> Projects</li>\n                                                <li><strong>Unlimited</strong> Storage</li>\n                                                <li><strong>$50</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"spance10 visible-phone\"></div>\n                                    <div class=\"span3\">\n                                        <div class=\"pricing-table purple\">\n                                            <div class=\"pricing-head\">\n                                                <h3> Enterprise </h3>\n                                                <h4>\n                                                    <span class=\"note\">$</span>120 <span>Per Month</span>\n                                                </h4>\n                                            </div>\n                                            <ul>\n                                                <li><strong>Free</strong> setup</li>\n                                                <li><strong>20</strong> Website</li>\n                                                <li><strong>30</strong> Projects</li>\n                                                <li><strong>Unlimited</strong> Storage</li>\n                                                <li><strong>$100</strong> Google Adwords Credit</li>\n                                            </ul>\n                                            <div class=\"price-actions\">\n                                                <a href=\"javascript:;\" class=\"btn\">Purchase Now</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLANK PAGE PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/profile.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <!-- BEGIN PROFILE PORTLET-->\n                    <div class=\" profile span12\">\n                        <div class=\"span2\">\n                            <div class=\"profile-photo\">\n                                <img src=\"img/lock-thumb.jpg\" alt=\"\">\n                                <a href=\"javascript:;\" class=\"edit\" title=\"Edit Photo\">\n                                    <i class=\"icon-pencil\"></i>\n                                </a>\n                            </div>\n                            <a href=\"profile.html\" class=\"profile-features active\">\n                                <i class=\" icon-user\"></i>\n                                <p class=\"info\">Profile</p>\n                            </a>\n                            <a href=\"profile_activities.html\" class=\"profile-features \">\n                                <i class=\" icon-calendar\"></i>\n                                <p class=\"info\">Activities</p>\n                            </a>\n                            <a href=\"profile_contact.html\" class=\"profile-features \">\n                                <i class=\" icon-phone\"></i>\n                                <p class=\"info\">Contact</p>\n                            </a>\n                        </div>\n                        <div class=\"span10\">\n                            <div class=\"profile-head\">\n                                <div class=\"span4\">\n                                    <h1>Jonathan Smith</h1>\n                                    <p>Lead Designer at <a href=\"#\">Vectorlab Inc.</a></p>\n                                </div>\n\n                                <div class=\"span4\">\n                                    <ul class=\"social-link-pf\">\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-facebook\"></i>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-twitter\"></i>\n                                            </a>\n                                        </li>\n                                        <li>\n                                            <a href=\"#\">\n                                                <i class=\"icon-linkedin\"></i>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n\n                                <div class=\"span4\">\n                                    <a href=\"edit_profile.html\" class=\"btn btn-edit btn-large pull-right mtop20\"> Edit Profile </a>\n                                </div>\n                            </div>\n                            <div class=\"space15\"></div>\n                            <div class=\"row-fluid\">\n                                <div class=\"span8 bio\">\n                                    <h2>About Smith</h2>\n                                    <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Donec ut volutpat metus. Aliquam tortor lorem, fringilla tempor dignissim at, pretium et arcu. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis.</p>\n                                    <div class=\"space15\"></div>\n                                    <h2>Bio Graph</h2>\n                                    <p><label>First Name </label>: Jonathan</p>\n                                    <p><label>Last Name </label>: Smith</p>\n                                    <p><label>Country </label>: Australia</p>\n                                    <p><label>Bithday </label>: 13 July 1983</p>\n                                    <p><label>Occupation </label>: Designer</p>\n                                    <p><label>Email </label>: <a href=\"#\">smith@vectorlab.net</a></p>\n                                    <p><label>Phone </label>: (12) 03 4567890</p>\n                                    <p><label>Website Url </label>: <a href=\"#\">http://www.demowebsite.com</a></p>\n                                    <div class=\"space15\"></div>\n                                    <hr>\n                                    <div class=\"space15\"></div>\n\n                                    <h2>Project Progress</h2>\n                                    <ul class=\"unstyled\">\n                                        <li>\n                                            Envato Website <strong class=\"label\"> 48%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress\">\n                                                <div class=\"bar\" style=\"width: 48%;\"></div>\n                                            </div>\n                                        </li>\n                                        <li>\n                                            Themeforest CMS Dashboard <strong class=\"label label-success\"> 85%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress progress-success\">\n                                                <div class=\"bar\" style=\"width: 85%;\"></div>\n                                            </div>\n                                        </li>\n                                        <li>\n                                            VectorLab Portfolio <strong class=\"label label-important\"> 65%</strong>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"progress progress-danger\">\n                                                <div class=\"bar\" style=\"width: 65%;\"></div>\n                                            </div>\n                                        </li>\n\n                                    </ul>\n                                    <div class=\"text-center\">\n                                        <button class=\"btn btn-primary \">All Projects</button>\n                                    </div>\n                                    <div class=\"space20\"></div>\n\n                                </div>\n                                <div class=\"span4\">\n                                    <div class=\"profile-side-box red\">\n                                        <h1>Recommended By</h1>\n                                        <div class=\"desk\">\n                                            <div class=\"row-fluid\">\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar1.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Fill Martin</a></p>\n                                                    </div>\n                                                </div>\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar2.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Scatel Filip</a></p>\n                                                    </div>\n                                                </div>\n                                                <div class=\"span4\">\n                                                    <div class=\"text-center\">\n                                                        <a href=\"#\"><img src=\"img/avatar3.jpg\" alt=\"\"></a>\n                                                        <p><a href=\"#\">Paul Robin</a></p>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"profile-side-box green\">\n                                        <h1>Experience</h1>\n                                        <div class=\"desk\">\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Envato</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Themeforest</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                            <div class=\"space10\"></div>\n                                            <div class=\"row-fluid experience\">\n                                                <h4>Vector Lab</h4>\n                                                <p>Duration: 4 years as Senior Designer from June 2033 to June 2007</p>\n                                                <a href=\"#\">www.abccompany.com</a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- END PROFILE PORTLET-->\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/search_result.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div id=\"page\">\n                    <div class=\"row-fluid \">\n                        <div class=\"span12\">\n                            <!-- BEGIN TAB PORTLET-->\n                            <div class=\"widget widget-tabs red\">\n                                <div class=\"widget-title\">\n                                    <!--<h4><i class=\" icon-search\"></i>Search Result</h4>-->\n                                </div>\n                                <div class=\"widget-body\">\n                                    <div class=\"tabbable portlet-tabs\">\n                                        <ul class=\"nav nav-tabs pull-left\">\n                                            <li><a href=\"#portlet_tab4\" data-toggle=\"tab\">Product Search</a></li>\n                                            <li><a href=\"#portlet_tab3\" data-toggle=\"tab\">Company Search</a></li>\n                                            <li><a href=\"#portlet_tab2\" data-toggle=\"tab\">File Search</a></li>\n                                            <li class=\"active\"><a href=\"#portlet_tab1\" data-toggle=\"tab\">Classsic Search</a></li>\n                                        </ul>\n                                        <div class=\"clearfix\"></div>\n                                        <div class=\"tab-content\">\n                                            <div class=\"tab-pane active\" id=\"portlet_tab1\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!-- BEGIN CLASSIC SEARCH-->\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n                                                <div class=\"classic-search\">\n                                                    <h4><a href=\"#\">Vector Lab launched their admin control dashboard- Metro Lab</a></h4>\n                                                    <a href=\"#\">http://themeforest.net/item/metro-lab-responsive-metrolab-dashboard-template</a>\n                                                    <p>Metro Lab is a responsive admin dashboard template built with Twitter Bootstrap Framework and it has a huge collection of reusable UI components and integrated with jQuery plugins also. </p>\n                                                </div>\n\n                                                <!-- END CLASSIC SEARCH-->\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab2\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!-- BEGIN FILE SEARCH-->\n                                                <table class=\"table table-hover file-search\">\n                                                    <thead>\n                                                        <tr>\n                                                            <th>File Name & Location</th>\n                                                            <th>Created</th>\n                                                            <th>Last Modify</th>\n                                                            <th>Size</th>\n                                                            <th>Type</th>\n                                                        </tr>\n                                                    </thead>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/doc.png\" alt=\"\">\n                                                                <strong>Linux Manual for dummies.doc</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/ppt.png\" alt=\"\">\n                                                                <strong>User Documentation.ppt</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/xls.png\" alt=\"\">\n                                                                <strong>Price chart Table.xls</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/jpg.png\" alt=\"\">\n                                                                <strong>Linux Wallpaper.jpg</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/zip.png\" alt=\"\">\n                                                                <strong>All Main files.zip</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/pdf.png\" alt=\"\">\n                                                                <strong>Metro Lab User Manual and Help fiule.pdf</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/ai.png\" alt=\"\">\n                                                                <strong>Vector Lab Logo and Other stuff.ai</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/psd.png\" alt=\"\">\n                                                                <strong>Vectorlab wallpaper.psd</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/rss.png\" alt=\"\">\n                                                                <strong>themeforest feed.rss</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/email.png\" alt=\"\">\n                                                                <strong>Order and Contact.eml</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td>\n                                                                <img src=\"img/file-search/eps.png\" alt=\"\">\n                                                                <strong>Metro Lab.eps</strong>\n                                                                C:\\Users\\Murat\\Documents\\My Dropbox\n                                                            </td>\n                                                            <td>01.01.2012\t</td>\n                                                            <td>12.05.2013</td>\n                                                            <td>193 KB</td>\n                                                            <td>File</td>\n                                                        </tr>\n\n                                                    </tbody>\n                                                </table>\n                                                <!-- END FILE SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab3\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!--BEGIN COMPANY SEARCH-->\n                                                <table class=\"table table-bordered table-hover\">\n                                                    <thead>\n                                                        <tr>\n                                                            <th>Company Name</th>\n                                                            <th class=\"hidden-phone\">Descrition</th>\n                                                            <th>Total Transaction</th>\n                                                            <th>Paid</th>\n                                                            <th>Due</th>\n                                                        </tr>\n                                                    </thead>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphic Design\t</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphzone</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Mega Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Pixel By Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Graphzone</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Mega Pixel</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Dot Net Corporation</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                        <tr>\n                                                            <td><a href=\"#\">Frame 2 frame</a></td>\n                                                            <td class=\"hidden-phone\">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</td>\n                                                            <td>$ 20,000</td>\n                                                            <td>$ 12,000</td>\n                                                            <td>$ 8,000</td>\n                                                        </tr>\n                                                    </tbody>\n                                                </table>\n                                                <!--END COMPANY SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n                                            <div class=\"tab-pane\" id=\"portlet_tab4\">\n                                                <form class=\"form-horizontal search-result\">\n                                                    <div class=\"control-group\">\n                                                        <label class=\"control-label\">Search</label>\n                                                        <div class=\"controls\">\n                                                            <input type=\"text\" class=\"input-xxlarge\">\n                                                            <p class=\"help-block\">About 3,880,000 results (0.29 seconds) </p>\n                                                        </div>\n                                                        <button type=\"submit\" class=\"btn \">SEARCH</button>\n                                                    </div>\n                                                </form>\n                                                <div class=\"space20\"></div>\n                                                <!--BEGIN PRODUCT SEARCH-->\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product1.jpg\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product2.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product3.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product4.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row-fluid product-search\">\n                                                    <div class=\"span4 product-text\">\n                                                        <img alt=\"\" src=\"img/product5.png\">\n                                                        <div class=\"portfolio-text-info\">\n                                                            <h4>iMac Slim</h4>\n                                                            <p>21 inch Display, 1.8 GHz Processor, 8 GB Memory</p>\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"span8\">\n                                                        <div class=\"product-info\">\n                                                            Today Sold\n                                                            <span>190</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Today's Earning\n                                                            <span>1,970</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Sold\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                        <div class=\"product-info\">\n                                                            Total Earnings\n                                                            <span>$12.300</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <!--END PRODUCT SEARCH-->\n                                                <div class=\"space20\"></div>\n\n                                                <div class=\"pagination pagination-centered\">\n                                                    <ul>\n                                                        <li><a href=\"#\">Prev</a></li>\n                                                        <li class=\"active\"><a href=\"#\">1</a></li>\n                                                        <li><a href=\"#\">2</a></li>\n                                                        <li><a href=\"#\">3</a></li>\n                                                        <li><a href=\"#\">4</a></li>\n                                                        <li><a href=\"#\">5</a></li>\n                                                        <li><a href=\"#\">Next</a></li>\n                                                    </ul>\n                                                </div>\n\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END TAB PORTLET-->\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/slider.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" rel=\"stylesheet\">\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN SLIDER PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-bar-chart\"></i> jQuery UI Sliders </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <table class=\"table sliders\">\n                                    <tbody>\n                                        <tr>\n                                            <td style=\"width:12%\">Default</td>\n                                            <td>\n                                                <div id=\"default-slider\" class=\"slider\"></div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Snap to Increments</td>\n                                            <td>\n                                                <div id=\"snap-inc-slider\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Amount ($50 increments):\n                                                    <span id=\"snap-inc-slider-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Range</td>\n                                            <td>\n                                                <div id=\"slider-range\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Price range:\n                                                    <span id=\"slider-range-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Maximum</td>\n                                            <td>\n                                                <div id=\"slider-range-max\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Maximum Value:\n                                                    <span id=\"slider-range-max-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Minimum</td>\n                                            <td>\n                                                <div id=\"slider-range-min\" class=\"slider\"></div>\n                                                <div class=\"slider-info\">\n                                                    Minimum Value:\n                                                    <span class=\"slider-info\" id=\"slider-range-min-amount\"></span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Graphic EQ</td>\n                                            <td>\n                                                <div id=\"eq\">\n                                                    <span>88</span>\n                                                    <span>77</span>\n                                                    <span>55</span>\n                                                    <span>33</span>\n                                                    <span>40</span>\n                                                    <span>45</span>\n                                                    <span>70</span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Bound to Select</td>\n                                            <td>\n                                                <select name=\"minbeds\" id=\"minbeds\">\n                                                    <option>1</option>\n                                                    <option>2</option>\n                                                    <option>3</option>\n                                                    <option>4</option>\n                                                    <option>5</option>\n                                                    <option>6</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Vertical</td>\n                                            <td>\n                                                <div class=\"slider-vertical-value\">\n                                                    Value:\n                                                    <span class=\"slider-info\" id=\"slider-vertical-amount\"></span>\n                                                </div>\n                                                <div id=\"slider-vertical\" class=\"slider bg-green\" style=\"height: 250px;\"></div>\n                                            </td>\n                                        </tr>\n                                        <tr>\n                                            <td>Range(Vertical)</td>\n                                            <td>\n                                                <div class=\"slider-vertical-value\">\n                                                    Target(Millions):\n                                                    <span class=\"slider-info\" id=\"slider-range-vertical-amount\"></span>\n                                                </div>\n                                                <div id=\"slider-range-vertical\" class=\"slider bg-grey\" style=\"height: 250px;\"></div>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                        <!-- END SLIDER PORTLET-->\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/sliders.js\" type=\"text/javascript\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/tabs_accordion.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.css\" rel=\"stylesheet\">\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN INLINE TABS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Inline Tab</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"bs-docs-example\">\n                                    <ul class=\"nav nav-tabs\" id=\"myTab\">\n                                        <li class=\"active\"><a data-toggle=\"tab\" href=\"#home\">Home</a></li>\n                                        <li><a data-toggle=\"tab\" href=\"#profile\">Profile</a></li>\n                                        <li class=\"dropdown\">\n                                            <a data-toggle=\"dropdown\" class=\"dropdown-toggle\" href=\"#\">Dropdown <b class=\"caret\"></b></a>\n                                            <ul class=\"dropdown-menu\">\n                                                <li><a data-toggle=\"tab\" href=\"#dropdown1\">@fat</a></li>\n                                                <li><a data-toggle=\"tab\" href=\"#dropdown2\">@mdo</a></li>\n                                            </ul>\n                                        </li>\n                                    </ul>\n                                    <div class=\"tab-content\" id=\"myTabContent\">\n                                        <div id=\"home\" class=\"tab-pane fade in active\">\n                                            <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                        <div id=\"profile\" class=\"tab-pane fade\">\n                                            <p>\n                                                It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).\n                                            </p>\n                                            <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>\n                                        </div>\n                                        <div id=\"dropdown1\" class=\"tab-pane fade\">\n                                            <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                        <div id=\"dropdown2\" class=\"tab-pane fade\">\n                                            <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n                                            <p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END INLINE TABS PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- BEGIN INLINE TABS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Inline Tabs</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab\">\n                                            <ul class=\"nav nav-tabs\">\n                                                <li class=\"active\"><a href=\"#tab_1_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_1_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_1_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_1_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_1_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_1_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                    <div class=\"space10 visible-phone\"></div>\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-below\">\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_2_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_2_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_2_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                            <ul class=\"nav nav-tabs\">\n                                                <li class=\"active\"><a href=\"#tab_2_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_2_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_2_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                </div>\n                                <div class=\"spance20\"></div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-left\">\n                                            <!-- Only required for left/right tabs -->\n                                            <ul class=\"nav nav-tabs tabs-left\">\n                                                <li class=\"active\"><a href=\"#tab_3_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_3_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_3_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_3_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_3_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_3_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                    <div class=\"space10 visible-phone\"></div>\n                                    <div class=\"span6\">\n                                        <!--BEGIN TABS-->\n                                        <div class=\"tabbable custom-tab tabs-right\">\n                                            <!-- Only required for left/right tabs -->\n                                            <ul class=\"nav nav-tabs tabs-right\">\n                                                <li class=\"active\"><a href=\"#tab_4_1\" data-toggle=\"tab\">Section 1</a></li>\n                                                <li><a href=\"#tab_4_2\" data-toggle=\"tab\">Section 2</a></li>\n                                                <li><a href=\"#tab_4_3\" data-toggle=\"tab\">Section 3</a></li>\n                                            </ul>\n                                            <div class=\"tab-content\">\n                                                <div class=\"tab-pane active\" id=\"tab_4_1\">\n                                                    <p>I'm in Section 1.</p>\n                                                    <p>\n                                                        Phasellus fringilla suscipit risus nec eleifend. Pellentesque eu quam sem, ac malesuada leo. Sed ut quam at magna porttitor hendrerit.\n                                                        Maecenas quis erat fringilla augue feugiat vulputate a eu sem.Vivamus ut diam at turpis varius tempor. Aliquam dictum sagittis erat,\n                                                        vehicula adipiscing diam condimentum id.\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_4_2\">\n                                                    <p>Howdy, I'm in Section 2.</p>\n                                                    <p>\n                                                        Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur,\n                                                    </p>\n                                                </div>\n                                                <div class=\"tab-pane\" id=\"tab_4_3\">\n                                                    <p>What up girl, this is Section 3.</p>\n                                                    <p>\n                                                        There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <!--END TABS-->\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END INLINE TABS PORTLET-->\n                    </div>\n                </div>\n\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <!-- BEGIN TAB PORTLET-->\n                        <div class=\"widget widget-tabs purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Widget Tab</h4>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"tabbable \">\n                                    <ul class=\"nav nav-tabs\">\n                                        <li><a href=\"#widget_tab3\" data-toggle=\"tab\">Tab 3</a></li>\n                                        <li><a href=\"#widget_tab2\" data-toggle=\"tab\">Tab 2</a></li>\n                                        <li class=\"active\"><a href=\"#widget_tab1\" data-toggle=\"tab\">Tab 1</a></li>\n                                    </ul>\n                                    <div class=\"tab-content\">\n                                        <div class=\"tab-pane active\" id=\"widget_tab1\">\n                                            <p>\n                                                It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).\n                                            </p>\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab2\">\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                            <p>\n                                                There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.\n                                            </p>\n\n                                        </div>\n                                        <div class=\"tab-pane\" id=\"widget_tab3\">\n                                            <p>\n                                                There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.\n                                            </p>\n                                            <p>\n                                                The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END TAB PORTLET-->\n                    </div>\n                    <div class=\"span6\">\n                        <!-- BEGIN ACCORDION PORTLET-->\n                        <div class=\"widget red\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Accordion</h4>\n                                <span class=\"tools\">\n                                    <a class=\"icon-chevron-down\" href=\"javascript:;\"></a>\n                                    <a class=\"icon-remove\" href=\"javascript:;\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"accordion\" id=\"accordion1\">\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_1\">\n                                                Collapsible Group Item #1\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_1\" class=\"accordion-body collapse in\">\n                                            <div class=\"accordion-inner\">\n                                                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. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_2\">\n                                                Collapsible Group Item #2\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_2\" class=\"accordion-body collapse\">\n                                            <div class=\"accordion-inner\">\n                                                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.\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"accordion-group\">\n                                        <div class=\"accordion-heading\">\n                                            <a class=\"accordion-toggle collapsed\" data-toggle=\"collapse\" data-parent=\"#accordion1\" href=\"#collapse_3\">\n                                                Collapsible Group Item #3\n                                            </a>\n                                        </div>\n                                        <div id=\"collapse_3\" class=\"accordion-body collapse\">\n                                            <div class=\"accordion-inner\">\n                                                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor.\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- END ACCORDION PORTLET-->\n                        </div>\n                    </div>\n                    <!-- 结束页面主要内容页面-->\n                </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <script src=\"assets/jquery-ui/jquery-ui-1.10.1.custom.min.js\" type=\"text/javascript\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/timeline.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link href=\"css/timeline-component.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <ul class=\"metro_tmtimeline\">\n                        <li class=\"green\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-10 18:30\">\n                                <span class=\"date\">1/4/13</span>\n                                <span class=\"time\">17:20</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-bell\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Lorem Ipsum Dolor Ament</h2>\n                                <p>Winter purslane courgette pumpkin quandong komatsuna fennel green bean cucumber watercress. Pea sprouts wattle seed rutabaga okra yarrow cress avocado grape radish bush tomato ricebean black-eyed pea maize eggplant. Cabbage lentil cucumber chickpea sorrel gram garbanzo plantain lotus root bok choy squash cress potato summer purslane salsify fennel horseradish dulse. Winter purslane garbanzo artichoke broccoli lentil corn okra silver beet celery quandong. Plantain salad beetroot bunya nuts black-eyed pea collard greens radish water spinach gourd chicory prairie turnip avocado sierra leone bologi.</p>\n                                <a class=\"btn\" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"purple\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-11T12:04\">\n                                <span class=\"date\">5/10/13</span>\n                                <span class=\"time\">10:30</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-fire\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Hi There !</h2>\n                                <p>Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.</p>\n                            </div>\n                        </li>\n                        <li class=\"red\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-13 05:36\">\n                                <span class=\"date\">3/10/13</span>\n                                <span class=\"time\">02:16</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-bullhorn\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Do The Best Work.</h2>\n                                <p>Parsnip lotus root celery yarrow seakale tomato collard greens tigernut epazote ricebean melon tomatillo soybean chicory broccoli beet greens peanut salad. Lotus root burdock bell pepper chickweed shallot groundnut pea sprouts welsh onion wattle seed pea salsify turnip scallion peanut arugula bamboo shoot onion swiss chard. Avocado tomato peanut soko amaranth grape fennel chickweed mung bean soybean endive squash beet greens carrot chicory green bean. Tigernut dandelion sea lettuce garlic daikon courgette celery maize parsley komatsuna black-eyed pea bell pepper aubergine cauliflower zucchini. Quandong pea chickweed tomatillo quandong cauliflower spinach water spinach.</p>\n                                <a class=\"btn btn-info \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"yellow\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-15 13:15\">\n                                <span class=\"date\">6/11/13</span>\n                                <span class=\"time\">09:46</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Might is Right</h2>\n                                <p>Peanut gourd nori welsh onion rock melon mustard jícama. Desert raisin amaranth kombu aubergine kale seakale brussels sprout pea. Black-eyed pea celtuce bamboo shoot salad kohlrabi leek squash prairie turnip catsear rock melon chard taro broccoli turnip greens. Fennel quandong potato watercress ricebean swiss chard garbanzo. Endive daikon brussels sprout lotus root silver beet epazote melon shallot.</p>\n                                <a class=\"btn btn-inverse \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                        <li class=\"blue\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-16 21:30\">\n                                <span class=\"date\">7/05/13</span>\n                                <span class=\"time\">04:30</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-leaf\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>Congratulations You did it.</h2>\n                                <p>Parsley amaranth tigernut silver beet maize fennel spinach. Ricebean black-eyed pea maize scallion green bean spinach cabbage jícama bell pepper carrot onion corn plantain garbanzo. Sierra leone bologi komatsuna celery peanut swiss chard silver beet squash dandelion maize chicory burdock tatsoi dulse radish wakame beetroot.</p>\n                            </div>\n                        </li>\n                        <li class=\"orange\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-17 12:11\">\n                                <span class=\"date\">2/12/13</span>\n                                <span class=\"time\">10:01</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-pushpin\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>I am Proud of You Man.</h2>\n                                <p>Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.</p>\n                            </div>\n                        </li>\n                        <li class=\"gray\">\n                            <div class=\"metro_tmtime\" datetime=\"2013-04-18 09:56\">\n                                <span class=\"date\">2/15/13</span>\n                                <span class=\"time\">04:56</span>\n                            </div>\n                            <div class=\"metro_tmicon\">\n                                <i class=\"icon-time\"></i>\n                            </div>\n                            <div class=\"metro_tmlabel\">\n                                <h2>This Timeline is good</h2>\n                                <p>Parsnip lotus root celery yarrow seakale tomato collard greens tigernut epazote ricebean melon tomatillo soybean chicory broccoli beet greens peanut salad. Lotus root burdock bell pepper chickweed shallot groundnut pea sprouts welsh onion wattle seed pea salsify turnip scallion peanut arugula bamboo shoot onion swiss chard. Avocado tomato peanut soko amaranth grape fennel chickweed mung bean soybean endive squash beet greens carrot chicory green bean. Tigernut dandelion sea lettuce garlic daikon courgette celery maize parsley komatsuna black-eyed pea bell pepper aubergine cauliflower zucchini. Quandong pea chickweed tomatillo quandong cauliflower spinach water spinach.</p>\n                                <a class=\"btn btn-inverse \" href=\"#\">\n                                    Read more <i class=\"icon-circle-arrow-right\"></i>\n                                </a>\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/tree_view.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span6\">\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-indent-left\"></i> Inline Tree</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"actions\">\n                                    <a class=\"btn btn-small btn-success\" id=\"tree_1_collapse\" href=\"javascript:;\"> Collapse All</a>\n                                    <a class=\"btn btn-small btn-warning\" id=\"tree_1_expand\" href=\"javascript:;\"> Expand All</a>\n                                </div>\n                                <div class=\"space10\"></div>\n                                <ul id=\"tree_1\" class=\"tree\">\n                                    <li>\n                                        <a data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" data-role=\"branch\" href=\"#\">\n                                            Bootstrap Tree\n                                        </a>\n                                        <ul class=\"branch in\">\n                                            <li>\n                                                <a id=\"nut1\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" href=\"#\">\n                                                    Documents\n                                                </a>\n                                                <ul class=\"branch in\">\n                                                    <li>\n                                                        <a id=\"nut2\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                            Finance\n                                                        </a>\n                                                        <ul class=\"branch\">\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-book\"></i> Sale Revenue</a></li>\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-fire\"></i> Promotions</a></li>\n                                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-edit\"></i> IPO</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut3\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Examples\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-cloud\"></i> Internal</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user-md\"></i> Client Base</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-retweet\"></i> Product Base</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut4\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" href=\"#\">\n                                                    Tasks\n                                                </a>\n                                                <ul class=\"branch in\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-suitcase\"></i> Internal Projects</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-cloud-download\"></i> Outsourcing</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-sitemap\"></i> Bug Tracking</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut6\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Customers\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tags\"></i> Finance</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a id=\"nut8\" data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle closed\" href=\"#\">\n                                                    Reports\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tags\"></i> Finance</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-magic\"></i> ICT</a></li>\n                                                    <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-user\"></i> Human Resources</a></li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> Another External Link\n                                                </a>\n                                            </li>\n                                        </ul>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"span6\">\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-indent-left\"></i> Data Sources</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"actions\">\n                                    <a class=\"btn btn-small btn-success\" id=\"tree_2_collapse\" href=\"javascript:;\"> Collapse All</a>\n                                    <a class=\"btn btn-small btn-warning\" id=\"tree_2_expand\" href=\"javascript:;\"> Expand All</a>\n                                </div>\n                                <div class=\"space10\"></div>\n                                <ul id=\"tree_2\" class=\"tree\">\n                                    <li>\n                                        <a data-value=\"Bootstrap_Tree\" data-toggle=\"branch\" class=\"tree-toggle\" data-role=\"branch\" href=\"#\">\n                                            Bootstrap Tree\n                                        </a>\n                                        <ul class=\"branch in\">\n                                            <li><a id=\"nut\" data-role=\"leaf\" href=\"#\"><i class=\" icon-book\"></i> Documents</a></li>\n                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\" icon-bullhorn\"></i> Projects</a></li>\n                                            <li><a data-role=\"leaf\" href=\"#\"><i class=\"icon-tasks\"></i> Tasks</a></li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-role=\"leaf\" href=\"#\">\n                                                    <i class=\"icon-share\"></i> Another External Link\n                                                </a>\n                                            </li>\n                                            <li>\n                                                <a data-value=\"XML_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/xmlexample.xml\">\n                                                    Load data from XML document via Ajax\n                                                </a>\n                                                <ul class=\"branch\">\n                                                    <li>\n                                                        <a role=\"branch\" class=\"tree-toggle closed folder\" data-toggle=\"branch\" data-value=\"number_8\" data-itemid=\"root/number_8\" href=\"#\">this branch</a>\n                                                        <ul class=\"branch\">\n                                                            <li><a role=\"leaf\" data-value=\"2\" data-itemid=\"root/number_8/wow\" href=\"#\"><i class=\"icon-shopping-cart\"></i> Purchase metro lab Today</a></li>\n                                                        </ul>\n                                                    </li>\n                                                    <li>\n                                                        <a role=\"branch\" class=\"tree-toggle folder\" data-toggle=\"branch\" data-value=\"number_9\" data-itemid=\"root/number_9\" href=\"#\">Check this Out!</a>\n                                                        <ul class=\"branch in\">\n                                                            <li><a role=\"leaf\" data-value=\"But metro lab Today\" data-itemid=\"root/number_9/metro lab\" href=\"#\"><i class=\"icon-shopping-cart\"></i> Purchase metro lab Today</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </li>\n                                            <li>\n                                                <a data-value=\"HTML_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/htmlexample.html\">\n                                                    Load data from HTML page via Ajax\n                                                </a><ul class=\"branch\">\n                                                    <li><a target=\"_blank\" href=\"#\">Some Link</a></li>\n                                                    <li><a target=\"_blank\" href=\"#\">Another Link</a></li>\n                                                    <li>\n                                                        <a data-value=\"GitHub_Repos\" data-toggle=\"branch\" class=\"tree-toggle closed\" role=\"branch\" href=\"#\">Some Structure</a>\n                                                        <ul class=\"branch\">\n                                                            <li><a href=\"#\">Events</a></li>\n                                                            <li><a href=\"#\">Users</a></li>\n                                                            <li><a href=\"#\">Feedbacks</a></li>\n                                                            <li><a href=\"#\">Reports</a></li>\n                                                            <li><a href=\"#\">Sales</a></li>\n                                                            <li><a href=\"#\">Revenue</a></li>\n                                                        </ul>\n                                                    </li>\n                                                </ul>\n                                            </li>\n\n                                            <li><a data-value=\"JSON_Example\" data-toggle=\"branch\" class=\"tree-toggle closed\" data-role=\"branch\" href=\"assets/bootstrap-tree/jsonexample.json\">Load data from JSON via Ajax</a></li>\n                                        </ul>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <script src=\"js/tree.js\"></script>\n    <script src=\"assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js\"></script>\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/bsmode/html/typography.html",
    "content": "﻿<!DOCTYPE html>\n<!--[if IE 8]> <html lang=\"en\" class=\"ie8\"> <![endif]-->\n<!--[if IE 9]> <html lang=\"en\" class=\"ie9\"> <![endif]-->\n<!--[if !IE]><!-->\n<html lang=\"en\">\n<!--<![endif]-->\n<!-- 开始头部 -->\n<head>\n    <meta charset=\"utf-8\" />\n    <title>Metro By xmfdsh</title>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n    <meta content=\"\" name=\"description\" />\n    <meta content=\"Mosaddek\" name=\"author\" />\n    <link href=\"assets/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-responsive.min.css\" rel=\"stylesheet\" />\n    <link href=\"assets/bootstrap/css/bootstrap-fileupload.css\" rel=\"stylesheet\" />\n    <link href=\"assets/font-awesome/css/font-awesome.css\" rel=\"stylesheet\" />\n    <link href=\"css/style.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-responsive.css\" rel=\"stylesheet\" />\n    <link href=\"css/style-default.css\" rel=\"stylesheet\" id=\"style_color\" />\n</head>\n<!-- 结束头部 -->\n<!-- 开始 Body -->\n<body class=\"fixed-top\">\n    <!-- 开始 header 头部菜单 -->\n    <div id=\"header\" class=\"navbar navbar-inverse navbar-fixed-top\">\n        <!-- 开始顶部的 navigation bar 导航菜单 -->\n        <div class=\"navbar-inner\">\n            <div class=\"container-fluid\">\n                <!--开始工具条 开关-->\n                <div class=\"sidebar-toggle-box hidden-phone\">\n                    <div class=\"icon-reorder tooltips\" data-placement=\"right\" data-original-title=\"Metro By xmfdsh\"></div>\n                </div>\n                <!--结束工具条 开关-->\n                <!-- 开始 Logo -->\n                <a class=\"brand\" href=\"index.html\">\n                    <img src=\"img/logo.png\" alt=\"Metro Lab\" />\n                </a>\n                <!-- 结束Logo -->\n\n                <div id=\"top_menu\" class=\"nav notify-row\">\n                    <!-- 开始通知 -->\n                    <ul class=\"nav top-menu\">\n                        <!-- 开始设置 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-tasks\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended tasks-bar\">\n                                <li>\n                                    <p>你有2条任务</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">控制台</div>\n                                            <div class=\"percent\">44%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 44%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <div class=\"task-info\">\n                                            <div class=\"desc\">数据库更新</div>\n                                            <div class=\"percent\">65%</div>\n                                        </div>\n                                        <div class=\"progress progress-striped progress-success active no-margin-bot\">\n                                            <div class=\"bar\" style=\"width: 65%;\"></div>\n                                        </div>\n                                    </a>\n                                </li>\n\n                                <li class=\"external\">\n                                    <a href=\"#\">查看所有任务</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束设置 -->\n                        <!-- 开始下拉 收件箱 -->\n                        <li class=\"dropdown\" id=\"header_inbox_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <i class=\"icon-envelope-alt\"></i>\n                                <span class=\"badge badge-important\">2</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended inbox\">\n                                <li>\n                                    <p>你有2条消息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">xmfdsh</span>\n                                            <span class=\"time\">刚刚</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hello, 这是个消息例子.\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"photo\"><img src=\"img/avatar-mini.png\" alt=\"avatar\" /></span>\n                                        <span class=\"subject\">\n                                            <span class=\"from\">张视焕</span>\n                                            <span class=\"time\">20分钟</span>\n                                        </span>\n                                        <span class=\"message\">\n                                            Hi, 最近咋样?\n                                        </span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有信息</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 收件箱 -->\n                        <!-- 开始下拉 通知 -->\n                        <li class=\"dropdown\" id=\"header_notification_bar\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n\n                                <i class=\"icon-bell-alt\"></i>\n                                <span class=\"badge badge-warning\">4</span>\n                            </a>\n                            <ul class=\"dropdown-menu extended notification\">\n                                <li>\n                                    <p>你有4条提示信息</p>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        手机欠费\n                                        <span class=\"small italic\">4分钟</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-warning\"><i class=\"icon-bell\"></i></span>\n                                        windows激活过期\n                                        <span class=\"small italic\">1小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-important\"><i class=\"icon-bolt\"></i></span>\n                                        数据库奔溃\n                                        <span class=\"small italic\">4小时</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">\n                                        <span class=\"label label-success\"><i class=\"icon-plus\"></i></span>\n                                        世界杯要下注了\n                                        <span class=\"small italic\">刚刚</span>\n                                    </a>\n                                </li>\n                                <li>\n                                    <a href=\"#\">查看所有通知</a>\n                                </li>\n                            </ul>\n                        </li>\n                        <!-- 结束下拉 通知 -->\n\n                    </ul>\n                </div>\n                <!-- 结束通知 -->\n                <div class=\"top-nav \">\n                    <ul class=\"nav pull-right top-menu\">\n                        <!-- BEGIN SUPPORT -->\n                        <li class=\"dropdown mtop5\">\n\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"闲聊\">\n                                <i class=\"icon-comments-alt\"></i>\n                            </a>\n                        </li>\n                        <li class=\"dropdown mtop5\">\n                            <a class=\"dropdown-toggle element\" data-placement=\"bottom\" data-toggle=\"tooltip\" href=\"#\" data-original-title=\"帮助\">\n                                <i class=\"icon-headphones\"></i>\n                            </a>\n                        </li>\n                        <!-- END SUPPORT -->\n                        <!-- 开始用户登录下拉菜单 -->\n                        <li class=\"dropdown\">\n                            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n                                <img src=\"img/avatar1_small.jpg\" alt=\"\">\n                                <span class=\"username\">xmfdsh</span>\n                                <b class=\"caret\"></b>\n                            </a>\n                            <ul class=\"dropdown-menu extended logout\">\n                                <li><a href=\"#\"><i class=\"icon-user\"></i>我的资料</a></li>\n                                <li><a href=\"#\"><i class=\"icon-cog\"></i>我的设置</a></li>\n                                <li><a href=\"login.html\"><i class=\"icon-key\"></i>退出</a></li>\n                            </ul>\n                        </li>\n                        <!-- 结束用户菜单 -->\n                    </ul>\n                </div>\n            </div>\n        </div>\n        <!-- 结束顶部的 navigation bar 导航菜单 -->\n    </div>\n    <!-- 结束 header 头部菜单 -->\n    <!-- BEGIN CONTAINER -->\n    <div id=\"container\" class=\"row-fluid\">\n        <!-- 开始左侧 导航菜单 -->\n        <div class=\"sidebar-scroll\">\n            <div id=\"sidebar\" class=\"nav-collapse collapse\">\n                <!-- 开始左侧 工具条菜单 -->\n                <ul class=\"sidebar-menu\">\n                    <li class=\"sub-menu active\">\n                        <a class=\"\" href=\"index.html\">\n                            <i class=\"icon-dashboard\"></i>\n                            <span>控制台</span>\n                        </a>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-book\"></i>\n                            <span>UI 组件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"general.html\">通用</a></li>\n                            <li><a class=\"\" href=\"button.html\">按钮</a></li>\n                            <li><a class=\"\" href=\"slider.html\">滑动</a></li>\n                            <li><a class=\"\" href=\"metro_view.html\">Metro风格</a></li>\n                            <li><a class=\"\" href=\"tabs_accordion.html\">Tab选项卡 & 手风琴</a></li>\n                            <li><a class=\"\" href=\"typography.html\">文字排版</a></li>\n                            <li><a class=\"\" href=\"tree_view.html\">树菜单</a></li>\n                            <li><a class=\"\" href=\"nestable.html\">嵌套列表</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-cogs\"></i>\n                            <span>插件</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"calendar.html\">日历</a></li>\n                            <li><a class=\"\" href=\"grids.html\">网格</a></li>\n                            <li><a class=\"\" href=\"chartjs.html\">图表统计</a></li>\n                            <li><a class=\"\" href=\"flot_chart.html\">Flot图表</a></li>\n                            <li><a class=\"\" href=\"gallery.html\">相册</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-tasks\"></i>\n                            <span>表单</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"form_layout.html\">表单布局</a></li>\n                            <li><a class=\"\" href=\"form_component.html\">表单组件</a></li>\n                            <li><a class=\"\" href=\"form_wizard.html\">表单提示</a></li>\n                            <li><a class=\"\" href=\"form_validation.html\">表单验证</a></li>\n                            <li><a class=\"\" href=\"dropzone.html\">文件上传</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-th\"></i>\n                            <span>数据表格</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"basic_table.html\">简单表格</a></li>\n                            <li><a class=\"\" href=\"dynamic_table.html\">动态表格</a></li>\n                            <li><a class=\"\" href=\"editable_table.html\">可编辑表格</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-fire\"></i>\n                            <span>Icon图标</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"font_awesome.html\">FontAwesome图标</a></li>\n                            <li><a class=\"\" href=\"glyphicons.html\">Glyphicons图标</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-trophy\"></i>\n                            <span>代码片段</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"general_portlet.html\" class=\"\">通用片段</a></li>\n                            <li><a href=\"draggable_portlet.html\" class=\"\">可拖拽片段</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a class=\"\" href=\"javascript:;\">\n                            <i class=\"icon-map-marker\"></i>\n                            <span>地图</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a href=\"vector_map.html\" class=\"\">Vector地图</a></li>\n                            <li><a href=\"google_map.html\" class=\"\">Google地图</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-file-alt\"></i>\n                            <span>基本页面</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"blank.html\">空白页面</a></li>\n                            <li><a class=\"\" href=\"blog.html\">博客</a></li>\n                            <li><a class=\"\" href=\"timeline.html\">时间轴</a></li>\n                            <li><a class=\"\" href=\"profile.html\">个人资料</a></li>\n                            <li><a class=\"\" href=\"about_us.html\">关于我们</a></li>\n                            <li><a class=\"\" href=\"contact_us.html\">联系我们</a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sub-menu\">\n                        <a href=\"javascript:;\" class=\"\">\n                            <i class=\"icon-glass\"></i>\n                            <span>其他</span>\n                            <span class=\"arrow\"></span>\n                        </a>\n                        <ul class=\"sub\">\n                            <li><a class=\"\" href=\"lock.html\">锁屏</a></li>\n                            <li><a class=\"\" href=\"invoice.html\">购物单</a></li>\n                            <li><a class=\"\" href=\"pricing_tables.html\">价目单</a></li>\n                            <li><a class=\"\" href=\"search_result.html\">搜索展示</a></li>\n                            <li><a class=\"\" href=\"faq.html\">帮助页面</a></li>\n                            <li><a class=\"\" href=\"404.html\">404错误页面</a></li>\n                            <li><a class=\"\" href=\"500.html\">500错误页面</a></li>\n                        </ul>\n                    </li>\n\n                    <li>\n                        <a class=\"\" href=\"login.html\">\n                            <i class=\"icon-user\"></i>\n                            <span>登录页面</span>\n                        </a>\n                    </li>\n                </ul>\n                <!-- 结束左侧 工具条菜单 -->\n            </div>\n        </div>\n        <!-- 结束左侧 导航菜单 -->\n        <!-- 开始内容页 -->\n        <div id=\"main-content\">\n            <!-- 开始页面容器-->\n            <div class=\"container-fluid\">\n                <!-- 开始页面顶部-->\n                <div class=\"row-fluid\">\n                    <div class=\"span12\">\n                        <!-- 开始主题定制器-->\n                        <div id=\"theme-change\" class=\"hidden-phone\">\n                            <i class=\"icon-cogs\"></i>\n                            <span class=\"settings\">\n                                <span class=\"text\">主题颜色:</span>\n                                <span class=\"colors\">\n                                    <span class=\"color-default\" data-style=\"default\"></span>\n                                    <span class=\"color-green\" data-style=\"green\"></span>\n                                    <span class=\"color-gray\" data-style=\"gray\"></span>\n                                    <span class=\"color-purple\" data-style=\"purple\"></span>\n                                    <span class=\"color-red\" data-style=\"red\"></span>\n                                </span>\n                            </span>\n                        </div>\n                        <!-- 结束主题定制器-->\n                        <!-- 开始页面标题 & 面包屑导航-->\n                        <h3 class=\"page-title\">\n                            控制台\n                        </h3>\n                        <ul class=\"breadcrumb\">\n                            <li>\n                                <a href=\"#\">首页</a>\n                                <span class=\"divider\">/</span>\n                            </li>\n                            <li class=\"active\">\n                                控制台\n                            </li>\n                            <li class=\"pull-right search-wrap\">\n                                <form action=\"search_result.html\" class=\"hidden-phone\">\n                                    <div class=\"input-append search-input-area\">\n                                        <input class=\"\" id=\"appendedInputButton\" type=\"text\">\n                                        <button class=\"btn\" type=\"button\"><i class=\"icon-search\"></i> </button>\n                                    </div>\n                                </form>\n                            </li>\n                        </ul>\n                        <!-- 结束页面标题 & 面包屑导航-->\n                    </div>\n                </div>\n                <!-- 开始页面主要内容页面-->\n                <div class=\"row-fluid\">\n                    <div class=\"span8\" id=\"right_column\">\n                        <!-- BEGIN GENERAL PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\" icon-trophy\"></i>  General</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Headings</h3>\n                                        <h1>h1. Heading 1</h1>\n                                        <h2>h2. Heading 2</h2>\n                                        <h3>h3. Heading 3</h3>\n                                        <h4>h4. Heading 4</h4>\n                                        <h5>h5. Heading 5</h5>\n                                        <h6>h6. Heading 6</h6>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Texts</h3>\n                                        <p class=\"muted\">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>\n                                        <p class=\"text-warning\">Etiam porta sem malesuada magna mollis euismod.</p>\n                                        <p class=\"text-error\">Donec ullamcorper nulla non metus auctor fringilla.</p>\n                                        <p class=\"text-info\">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>\n                                        <p class=\"text-success\">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>\n                                    </div>\n                                </div>\n\n\n                            </div>\n                        </div>\n                        <!-- END GENERAL PORTLET-->\n                        <!-- BEGIN SAMPLE PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i>  Sample Text</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Sample text with lead body</h3>\n                                        <p class=\"lead\">\n                                            Lead body. Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n                                        </p>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Sample text</h3>\n                                        <p>\n                                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur bibendum ornare dolor, quis ullamcorper ligula sodales at. Nulla tellus elit, varius non commodo eget, mattis vel eros. In sed ornare nulla.\n                                        </p>\n                                        <p>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 ut id elit.</p>\n                                        <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui.</p>\n                                    </div>\n                                </div>\n                                <div class=\"row-fluid\">\n                                    <div class=\"span6\">\n                                        <h3>Address</h3>\n                                        <div class=\"well\">\n                                            <address>\n                                                <strong>Vector Lab, Inc.</strong><br />\n                                                Dreamland Ave, Suite 73<br />\n                                                AU, PC 1361<br />\n                                                <abbr title=\"Phone\">P:</abbr> (123) 456-7891\n                                            </address>\n                                            <address>\n                                                <strong>Full Name</strong><br />\n                                                <a href=\"mailto:#\">first.last@email.com</a>\n                                            </address>\n                                        </div>\n                                    </div>\n                                    <div class=\"span6\">\n                                        <h3>Some more text here</h3>\n                                        <p>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 ut id elit.</p>\n                                        <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui.</p>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END SAMPLE PORTLET-->\n                        <!-- BEGIN BLOCKQUOTES PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Blockquotes</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <blockquote>\n                                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. Duis mollis, est non commodo luctus, nisi erat porttitor ligula integer posuere erat a ante.</p>\n                                </blockquote>\n                                <blockquote>\n                                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>\n                                    <small>Someone famous <cite title=\"Source Title\">Source Title</cite></small>\n                                </blockquote>\n                                <div class=\"clearfix\">\n                                    <blockquote class=\"pull-right\">\n                                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>\n                                        <small>Someone famous <cite title=\"Source Title\">Source Title</cite></small>\n                                    </blockquote>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- END BLOCKQUOTES PORTLET-->\n                        <!-- BEGIN DESCRIPTION LISTS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Description Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <dl>\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod.</dd>\n                                    <dt>Jhon Doe </dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod.</dd>\n                                </dl>\n                            </div>\n                        </div>\n                        <!-- END DESCRIPTION LISTS PORTLET-->\n                        <!-- BEGIN HORIZONTAL DESCRIPTION LISTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Horizontal Description Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <dl class=\"dl-horizontal\">\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. </dd>\n                                    <dt>Description lists</dt>\n                                    <dd>A description list is perfect for defining terms. A description list is perfect for defining terms. A description list is perfect for defining terms. A description list is perfect for defining terms.</dd>\n                                    <dt>Euismod</dt>\n                                    <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>\n                                    <dd>Donec id elit non mi porta gravida at eget metus.</dd>\n                                    <dt>Malesuada porta</dt>\n                                    <dd>Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. </dd>\n                                </dl>\n                            </div>\n                        </div>\n                        <!-- END HORIZONTAL DESCRIPTION LISTS PORTLET-->\n                    </div>\n                    <div class=\"span4\">\n                        <!-- BEGIN ORDERED LISTS PORTLET-->\n                        <div class=\"widget orange\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Ordered Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ol>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>Nulla volutpat aliquam velit</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                </ol>\n                            </div>\n                        </div>\n                        <!-- END ORDERED LISTS PORTLET-->\n                        <!-- BEGIN UNORDERED LISTS PORTLET-->\n                        <div class=\"widget\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Unordered Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNORDERED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget purple\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Unstyled Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"unstyled\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget green\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Letter List </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"upper-alpha\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN UNSTYLED LISTS PORTLET-->\n                        <div class=\"widget blue\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Roman List  </h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"roman-list\">\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                    <li>Consectetur adipiscing elit</li>\n                                    <li>Integer molestie lorem at massa</li>\n                                    <li>Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        Nulla volutpat aliquam velit\n                                        <ul>\n                                            <li>Phasellus iaculis neque</li>\n                                            <li>Purus sodales ultricies</li>\n                                            <li>Vestibulum laoreet porttitor sem</li>\n                                            <li>Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li>Faucibus porta lacus fringilla vel</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Eget porttitor lorem</li>\n                                    <li>Aenean sit amet erat nunc</li>\n                                    <li>Lorem ipsum dolor sit amet</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END UNSTYLED LISTS PORTLET-->\n                        <!-- BEGIN ICONIN LISTS PORTLET-->\n                        <div class=\"widget yellow\">\n                            <div class=\"widget-title\">\n                                <h4><i class=\"icon-reorder\"></i> Iconic Lists</h4>\n                                <span class=\"tools\">\n                                    <a href=\"javascript:;\" class=\"icon-chevron-down\"></a>\n                                    <a href=\"javascript:;\" class=\"icon-remove\"></a>\n                                </span>\n                            </div>\n                            <div class=\"widget-body\">\n                                <ul class=\"unstyled icons\">\n                                    <li><i class=\"icon-ok\"></i>  Lorem ipsum dolor sit amet</li>\n                                    <li><i class=\"icon-fire\"></i>  Consectetur adipiscing elit</li>\n                                    <li><i class=\"icon-bolt\"></i>  Integer molestie lorem at massa</li>\n                                    <li><i class=\"icon-pencil\"></i>  Facilisis in pretium nisl aliquet</li>\n                                    <li>\n                                        <i class=\"icon-book\"></i>\n                                        Nulla volutpat aliquam velit\n                                        <ul class=\"icons\">\n                                            <li><i class=\"icon-leaf\"></i>  Phasellus iaculis neque</li>\n                                            <li><i class=\"icon-link\"></i>  Purus sodales ultricies</li>\n                                            <li><i class=\"icon-lock\"></i>  Vestibulum laoreet porttitor sem</li>\n                                            <li><i class=\"icon-random\"></i>  Ac tristique libero volutpat at</li>\n                                        </ul>\n                                    </li>\n                                    <li><i class=\"icon-pushpin\"></i>  Faucibus porta lacus fringilla vel</li>\n                                    <li><i class=\"icon-plane\"></i>  Aenean sit amet erat nunc</li>\n                                    <li><i class=\"icon-cogs\"></i>  Eget porttitor lorem</li>\n                                </ul>\n                            </div>\n                        </div>\n                        <!-- END ICONIC LISTS PORTLET-->\n\n                    </div>\n                </div>\n                <!-- 结束页面主要内容页面-->\n            </div>\n\n        </div>\n    </div>\n\n\n    <!-- BEGIN FOOTER -->\n    <div id=\"footer\">\n        Copyright © 2014 四小狼工作室 Powered by xmfdsh.\n    </div>\n    <!-- END FOOTER -->\n    <!-- 开始加载 Js文件 -->\n    <!-- 在底部加载Js文件，可以减少加载时间 -->\n    <script src=\"js/jquery-1.8.3.min.js\"></script>\n    <script src=\"js/jquery.nicescroll.js\" type=\"text/javascript\"></script>\n    <script src=\"assets/bootstrap/js/bootstrap.min.js\"></script>\n    <script src=\"js/jquery.scrollTo.min.js\"></script>\n\n    <!-- ie8 fixes -->\n    <!--[if lt IE 9]>\n    <script src=\"js/excanvas.js\"></script>\n    <script src=\"js/respond.js\"></script>\n    <![endif]-->\n    <!--为全部页面加载的公共Js文件-->\n    <script src=\"js/common-scripts.js\"></script>\n\n    <!--仅为此页面使用的Js文件-->\n    <!-- 结束加载Js文件 -->\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/inc.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<link rel=\"shortcut icon\" href=\"${ctx}/style/eu/images/index/favicon.png\" />\n<!-- 引入my97日期时间控件 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/My97DatePicker/WdatePicker.js\" charset=\"utf-8\"></script>\n\n<!-- 引入jQuery -->\n<script src=\"${ctx}/jslib/eu_js/jquery-1.8.3.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n<!-- xheditor -->\n<script src=\"${ctx}/jslib/eu_js/xheditor/xheditor-1.2.2.min.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js\" type=\"text/javascript\"></script>\n\n<!-- 引入EasyUI -->\n<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"${ctx}/jslib/eu_js/easyui1.3.3/themes/<c:out value=\"${cookie.easyuiThemeName.value}\" default=\"default\"/>/easyui.css\" type=\"text/css\">\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/easyui1.3.3/jquery.easyui.min.js\" charset=\"utf-8\"></script>\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/extEasyUI.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展Jquery -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/extJquery.js\" charset=\"utf-8\"></script>\n\n<!-- 自定义工具类 -->\n<script type=\"text/javascript\" src=\"${ctx}/jslib/eu_js/lightmvc.js\" charset=\"utf-8\"></script>\n\n<!-- 扩展EasyUI图标 -->\n<link rel=\"stylesheet\" href=\"${ctx}/style/eu/lightmvc.css\" type=\"text/css\">\n\n<script type=\"text/javascript\">\n$(window).load(function(){\n\t$(\"#loading\").fadeOut();\n});\n//公共方法\nvar pubMethod = {\n    bind: function (control,code) {\n        if (control == ''|| code == '')\n        {\n            return;\n        }\n\n        $('#'+ control).combobox({\n            url: '${ctx}/dictionary/combox?code=' + code,\n            method: 'get',\n            valueField: 'id',\n            textField: 'text',\n            editable: false,\n            panelHeight: 'auto',\n            required:true\n        });\n    }\n}\n</script>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/index.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"inc.jsp\"></jsp:include>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>myWebSite管理系统</title>\n<script type=\"text/javascript\">\n\tvar index_layout;\n\tvar index_tabs;\n\tvar index_tabsMenu;\n\tvar layout_west_tree;\n\tvar layout_west_tree_url = '';\n\t\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果没有登录,直接跳转到登录页面\n\t\tlayout_west_tree_url = '${ctx}/resource/tree';\n\t}else{\n\t\twindow.location.href='${ctx}/admin/index';\n\t}\n\t$(function() {\n\t\tindex_layout = $('#index_layout').layout({\n\t\t\tfit : true\n\t\t});\n\t\t\n\t\tindex_tabs = $('#index_tabs').tabs({\n\t\t\tfit : true,\n\t\t\tborder : false,\n\t\t\ttools : [{\n\t\t\t\ticonCls : 'icon_home',\n\t\t\t\thandler : function() {\n\t\t\t\t\tindex_tabs.tabs('select', 0);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ticonCls : 'icon_refresh',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar index = index_tabs.tabs('getTabIndex', index_tabs.tabs('getSelected'));\n\t\t\t\t\tindex_tabs.tabs('getTab', index).panel('refresh');\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ticonCls : 'icon_del',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar index = index_tabs.tabs('getTabIndex', index_tabs.tabs('getSelected'));\n\t\t\t\t\tvar tab = index_tabs.tabs('getTab', index);\n\t\t\t\t\tif (tab.panel('options').closable) {\n\t\t\t\t\t\tindex_tabs.tabs('close', index);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t\t\n\t\tlayout_west_tree = $('#layout_west_tree').tree({\n\t\t\turl : layout_west_tree_url,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n\t\t\t\tif (node.attributes && node.attributes.url) {\n\t\t\t\t\tvar url = '${ctx}' + node.attributes.url;\n\t\t\t\t\taddTab({\n\t\t\t\t\t\turl : url,\n\t\t\t\t\t\ttitle : node.text,\n\t\t\t\t\t\ticonCls : node.iconCls\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t\n\tfunction addTab(params) {\n\t\tvar iframe = '<iframe src=\"' + params.url + '\" frameborder=\"0\" style=\"border:0;width:100%;height:98%;\"></iframe>';\n\t\tvar t = $('#index_tabs');\n\t\tvar opts = {\n\t\t\ttitle : params.title,\n\t\t\tclosable : true,\n\t\t\ticonCls : params.iconCls,\n\t\t\tcontent : iframe,\n\t\t\tborder : false,\n\t\t\tfit : true\n\t\t};\n\t\tif (t.tabs('exists', opts.title)) {\n\t\t\tt.tabs('select', opts.title);\n\t\t} else {\n\t\t\tt.tabs('add', opts);\n\t\t}\n\t}\n\t\n\tfunction logout(){\n\t\t$.messager.confirm('提示','确定要退出?',function(r){\n\t\t\tif (r){\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/admin/logout', function(result) {\n\t\t\t\t\tif(result.success){\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\twindow.location.href='${ctx}/admin/index';\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t}\n\t\t});\n\t}\n\t\n\n\tfunction editUserPwd() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '修改密码',\n\t\t\twidth : 300,\n\t\t\theight : 250,\n\t\t\thref : '${ctx}/user/editPwdPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '修改',\n\t\t\t\thandler : function() {\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#editUserPwdForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\n\t\n</script>\n</head>\n<body>\n\t<div id=\"loading\" style=\"position: fixed;top: -50%;left: -50%;width: 200%;height: 200%;background: #fff;z-index: 100;overflow: hidden;\">\n\t<img src=\"${ctx}/style/images/index/ajax-loader.gif\" style=\"position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;\"/>\n\t</div>\n\t<div id=\"index_layout\">\n\t\t<div data-options=\"region:'north'\" style=\" overflow: hidden;\" id=\"header\">\n\t\t\t<span style=\"float: right; padding-right: 20px;\">欢迎 <b>${sessionInfo.name}</b>&nbsp;&nbsp; <a href=\"javascript:void(0)\" onclick=\"editUserPwd()\" style=\"color: #fff\">修改密码</a>&nbsp;&nbsp;<a href=\"javascript:void(0)\" onclick=\"logout()\" style=\"color: #fff\">安全退出</a>\n        \t&nbsp;&nbsp;&nbsp;&nbsp;\n    \t\t</span>\n    \t\t<span class=\"header\"></span>\n\t\t</div>\n\t\t<div data-options=\"region:'west',split:true\" title=\"主导航\" style=\"width: 200px; overflow: hidden;overflow-y:auto;\">\n\t\t\t<div class=\"well well-small\" style=\"padding: 10px 5px 5px 5px;\">\n\t\t\t\t<ul id=\"layout_west_tree\"></ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div data-options=\"region:'center'\" style=\"overflow: hidden;\">\n\t\t\t<div id=\"index_tabs\" style=\"overflow: hidden;\">\n\t\t\t\t<div title=\"首页\" data-options=\"border:false\" style=\"overflow: hidden;\">\n\t\t\t\t\t<div style=\"padding:10px 0 10px 10px\">\n\t\t\t\t\t\t<h2>系统介绍</h2>\n\t\t\t\t\t\t<div class=\"light-info\">\n\t\t\t\t\t\t\t<div class=\"light-tip icon-tip\"></div>\n\t\t\t\t\t\t\t<div>欢迎您使用下乡管理系统。</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div data-options=\"region:'south',border:false\" style=\"height: 30px; overflow: hidden;text-align: center;background-color: #daeef5\" >Based on LightMVC </div>\n\t</div>\n\t\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/login.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>用户登录</title>\n<script>\n\n\tvar sessionInfo_userId = '${sessionInfo.id}';\n\tif (sessionInfo_userId) {//如果登录,直接跳转到index页面\n\t\twindow.location.href='${ctx}/admin/index';\n\t}\n\t\t\n\t$(function() {\n\t\t\n\t\t$('#loginform').form({\n\t\t    url:'${ctx}/admin/login',\n\t\t    onSubmit : function() {\n\t\t    \tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(!isValid){\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t    success:function(result){\n\t\t    \tresult = $.parseJSON(result);\n\t\t    \tprogressClose();\n\t\t    \tif (result.success) {\n\t\t    \t\twindow.location.href='${ctx}/admin/index';\n\t\t    \t}else{\n\t\t    \t\t$.messager.show({\n\t\t    \t\t\ttitle:'提示',\n\t\t    \t\t\tmsg:'<div class=\"light-info\"><div class=\"light-tip icon-tip\"></div><div>'+result.msg+'</div></div>',\n\t\t    \t\t\tshowType:'show'\n\t\t    \t\t});\n\t\t    \t}\n\t\t    }\n\t\t});\n\t});\n\tfunction submitForm(){\n\t\t$('#loginform').submit();\n\t}\n\t\n\tfunction clearForm(){\n\t\t$('#loginform').form('clear');\n\t}\n</script>\n</head>\n<body>\n\t<div align=\"center\" style=\"padding:160px 0 0 0\">\n\t<div class=\"easyui-panel\" title=\"登录\" style=\"width:400px;\" >\n\t\t<div style=\"padding:10px 0 10px 100px\" >\n\t    <form id=\"loginform\"  method=\"post\">\n\t    \t<table>\n\t    \t\t<tr>\n\t    \t\t\t<td>用户名:</td>\n\t    \t\t\t<td><input class=\"easyui-validatebox\" type=\"text\" name=\"loginName\" data-options=\"required:true\" value=\"admin\"></input></td>\n\t    \t\t</tr>\n\t    \t\t<tr>\n\t    \t\t\t<td>密&nbsp;&nbsp;码:</td>\n\t    \t\t\t<td><input class=\"easyui-validatebox\" type=\"password\" name=\"password\" value=\"123456\"></input></td>\n\t    \t\t</tr>\n\t    \t</table>\n\t    </form>\n\t    </div>\n\t    <div style=\"text-align:center;padding:5px\">\n\t\t<a href=\"javascript:void(0)\" class=\"easyui-linkbutton\" onclick=\"submitForm()\">登录</a>\n\t\t<a href=\"javascript:void(0)\" class=\"easyui-linkbutton\" onclick=\"clearForm()\">清除</a>\n\t\t</div>\n\t</div>\n\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/category.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/editPage')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>知识库栏目管理</title>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t    <div>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualCategory/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t</div>\n\t\t<div>\n\t\t\t<span>选择目录库种类</span>\n\t\t\t<select id=\"categoryRoot\" name=\"categoryRoot\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t\t<c:forEach items=\"${rootList}\" var=\"rl\">\n\t\t\t\t\t<option value=\"${rl.categoryCode}\">${rl.categoryName} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<!-- \n\t\t\t<input class=\"easyui-combobox\" id=\"categoryRoot\" name=\"categoryRoot\" style=\"width:100%;\" data-options=\"\n                    loader: rootLoader,\n                    mode: 'remote',\n                    valueField: 'code',\n                    textField: 'name',\n                    label: 'State:',\n                    labelPosition: 'top'\t\t\t\n                    \">\n             -->\n\t\t</div>\n\t</div>\n</body>\n<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar categoryCodeRoot=\"Variety\";\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').treegrid({\n\t\t\turl : '${ctx}' + '/manualCategory/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'categoryName',\n\t\t\tparentField : 'parentID',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tqueryParams:{ categoryCode: $('#categoryRoot').val() },\n\t\t\tcolumns : [ [ {\n\t\t\t\ttitle : '编号',\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'id',\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目名称',\n\t\t\t\tfield : 'categoryName',\t\t\t\n\t\t\t} ,{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '栏目描述',\n\t\t\t\tfield : 'categoryDescription',\t\n\t\t\t} ,{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '栏目pid',\n\t\t\t\tfield : 'parentID',\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : '120',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t\t\n\t\t$('#categoryRoot').combobox({\n        \tonChange: function (n, o) {\n        \t\tgetCategoryDatagrid();\n            }\n        });\n\t});\n\n\t\n\tfunction reLoadByCategoryCode(code){\n\t\tdataGrid.treegrid('load', { categoryCode: code });\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/manualCategory/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.treegrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.treegrid('load',{categoryCode: categoryCodeRoot});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/manualCategory/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.treegrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.treegrid('unselectAll').treegrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualCategory/editPage?id=' + id+'&categoryRoot='+categoryCodeRoot,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#categoryEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/manualCategory/addPage?categoryRoot='+categoryCodeRoot,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#categoryAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t\tfunction getCategoryDatagrid() {\n\t\t\tcategoryCodeRoot=$(\"[name='categoryRoot']\").val();\n\t\t//\talert(categoryCodeRoot);\n\t\t\treLoadByCategoryCode(categoryCodeRoot);\t\n\t}\n\t\n\t\n\t    var rootLoader = function(param,success,error){\n            $.ajax({\n                url: '${ctx}' + '/manualCategory/getRootCategory',\n\t\t\t\tasync: false,\n                dataType: 'json',\n                success: function(data){\n                    var items = new Array();\n\t\t\t\t\tfor(var e in data.obj)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar item= new Object();\n\t\t\t\t\t\titem.code= data.obj[e].categoryCode;\n\t\t\t\t\t\titem.name= data.obj[e].categoryName;\n\t\t\t\t\t\tif(item.code==\"Variety\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.selected=true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\titem.selected=false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\titems[e]=item;\n\t\t\t\t\t}\n                    success(items);\n                },\n                error: function(){\n                    error.apply(this, arguments);\n                }\n            });\n        }\n</script>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/categoryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\tvar categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t$('#categoryAddForm').form({\n\t\t\turl : '${ctx}/manualCategory/add',\n\t\t\t\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.treegrid('load',{categoryCode: categoryCodeRoot});//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\trequired: true\n\t\t   });\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" placeholder=\"请输入栏目名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\" placeholder=\"请输入栏目描述\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 250px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级栏目</td>\n\t\t\t\t<td><select id=\"pid\" name=\"parentID\"  data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\"></select>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/categoryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n    var categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\trequired: true,\n\t\t\tvalue:'${category.parentID}'\n\t\t});\n\t\t\n\t\t$('#categoryEditForm').form({\n\t\t\turl : '${ctx}/manualCategory/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.treegrid('load',{categoryCode: categoryCodeRoot});\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<input type=\"hidden\" name=\"autoID\" value=\"${category.autoID}\"/>\n\t\t\t\t<input name=\"categoryCode\" type=\"hidden\" value=\"${category.categoryCode}\" / >\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" value=\"${category.categoryName}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"parentID\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t     <td>备注</td>\n\t\t\t \t<td><input name=\"categoryDescription\" type=\"text\" value=\"${category.categoryDescription}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t<tr>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/manual.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/detail')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDetail = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>知识管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/manualContent/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '题目',\n\t\t\t\tfield : 'title',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目编号',\n\t\t\t\tfield : 'categoryCode',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canDetail) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t\t\n\t\t$('#categoryRoot').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tonChange: function (n, o) {\n\t\t\t\tvar manualCategoryID=$(\"[name='categoryRoot']\").val();\n        \t\tdataGrid.datagrid('load', {\n\t\t\t\t    manualCategoryID: manualCategoryID\n\t\t\t\t});\n            }\n\t\t   });\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].id);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/manualContent/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualContent/detailPage?id=' + id\n\t\t});\n\t}\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 600,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/manualContent/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dataEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 800,\n\t\t\theight : 400,\n\t\t\thref : '${ctx}/manualContent/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t    <div>\n\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/manualContent/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t</div>\n\t\t<div>\n\t\t\t<span>选择目录库</span>\n\t\t\t<select id=\"categoryRoot\" name=\"categoryRoot\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t</select>\n\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/manualAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n<div style=\"padding: 3px;\">\n\t<form id=\"manualAddForm\" method=\"post\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>题目</td>\n\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入题目\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 80%; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"manualCategoryID\" name=\"manualCategoryID\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<!-- \n\t\t\t<tr>\n\t\t\t\t<td>发布时间</td>\n\t\t\t\t\t<td><input name=\"createTime\" type=\"text\"  class=\"easyui-validatebox\" readonly=\"readonly\" value=\" <%=new java.util.Date().toLocaleString( )%>\" data-options=\"required:true\" style=\"width: 80%; height: 29px;\" >\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>发布人工号</td>\n\t\t\t\t<td>\n\t\t\t\t\t<input name=\"createBy\" type=\"text\"  class=\"easyui-validatebox\" readonly=\"readonly\" value=\"${sessionInfo.id}\"  style=\" height: 29px;\" >\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t -->\n\t\t\t <tr>\n\t\t\t<td>添加关键字</td>\n\t\t\t<td>\n\t\t\t\t<input id=\"keyword\" name=\"keyword\" type=\"text\" placeholder=\"请输入关键词\" class=\"easyui-validatebox\" style=\"width: 50%; height: 29px;\" />\n\t\t\t\t <a onclick=\"addKeyword();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">确定</a>\n\t\t\t</td>\n\t\t\t  \n\t\t\n\t\t\t</tr> \n            <tr>\n\t\t\t    <input id=\"keywordList\" name=\"keywordList\" type=\"hidden\" />\n\t\t\t\t<td>关键字列表</td>\n\t\t\t\t<td>\t\t\n\t\t\t\t\t<table id=\"keywordListSpan\" class=\"grid\">\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n            </tr>\t\t\n\t\t\t\n\t\t\t <tr>\n\t\t\t<td>发布形式</td>\n\t\t\t<td>\n\t\t\t\t<button onclick=\"showUploadArea();\">使用附件</button> <button onclick=\"showXContentArea();\">手工输入</button>\n\t\t\t</td>\n\t\t\t</tr>  \t\n            \n\t\t\t\n\t\t\n\t\t</table>\n\n\n\t</div>\n\t<div id=\"contentArea\">\n\t <textarea id=\"content\" name=\"content\" rows=\"35\" cols=\"150\"\n\t\t\t\tclass=\"easyui-validatebox\" style=\"width: 100%;\"></textarea>\n\t</div>\n\t<div id=\"file_upload_area\" class=\"table\"  style=\"display:none;\">\n\t\t\t<table id=\"file_upload_table\" class=\"grid\" >\n\t\t\t\t<tr>\n\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<div id=\"file_upload\">\n                    \t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t</div>\n\t<input type=\"hidden\" name=\"pageContent\" value=\"\"/>\n\t<input type=\"hidden\" name=\"attachmentContent\" value=\"\"/>\n\t</form>\n</div>\n\t<div id=\"toolbar\">\t    \n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">发布</a>\n\n\t</div>\n\t<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n\t<script type=\"text/javascript\">\n\t\n\n\tvar categoryCodeRoot=\"${categoryRoot}\";\n\t$(function() {\n\t\t\n\t\tvar editor = $('#content').xheditor({\n\t\t\tcleanPaste : 2,\n\t\t\theight : '300px',\n\t\t\tupBtnText : '选择',\n\t\t\tupImgUrl : '${ctx}/manualContent/getUploadFile'\n\t\t});\n\t\t\n\t\tvar waitupload = false;\n\t\t$('#manualAddForm').form({\n\t\t\turl : '${ctx}/manualContent/add',\n\t\t\tonSubmit : function() {\n\t\t\t\t\n\t\t\t\tprogressLoad();\n\t\t\t\tvar uploadCount = $('#uploadfileQueue').find('.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif(uploadCount==0&&$('#content').val()==\"\"){\n\t\t\t\t\tisValid=false;\n\t\t\t\t}\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\telse if($(\"#file_upload_area\").is(\":hidden\") == false && waitupload == false && uploadCount > 0){\n\t\t\t\t\t//有附件需要上传时，则先让附件上传完毕再保存页面内容\n\t\t\t\t\twaitupload = true;\n\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t$('#file_upload').uploadify(\"upload\",\"*\");\n\t\t\t\t\t\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$('input[name=pageContent]').val(encodeURIComponent(editor.getSource()));\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t\twindow.location.href = window.location.href; \n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tfnInituploadify();\n\t\t\n\t\t$('#manualCategoryID').combotree({\n\t\t\turl : '${ctx}/manualCategory/getManualTreeByCode?categoryRoot='+categoryCodeRoot,\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t   });\n\t\t\n\t});\n\t\n\t\tfunction addFun() {\n\t\t\tgetKeywordString();\n\t\t\t$('#manualAddForm').submit();\t\t\t\t\n\t}\n\t\n\tfunction addKeyword()\n\t{\n\t\tvar keyword= $('#keyword').val();\n\t\tif(keyword==''||keyword==null){\n\t\t\talert(\"关键词不能为空\");\n\t\t\treturn;\n\t\t}\n\t\telse{\n\t\t\tvar htmlitem='<tr><td>关键字：</td><td name=\"keywordA\">'+keyword+'</td><td><a  onclick=\"fndeleteKeyword(this);\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'+\"'icon_del'\"+'\">'+\"删除\"+\"</a></td></tr>\";\n\t\t\t$('#keywordListSpan').append(htmlitem);\n\t\t\t$('#keyword').val('');\n\t\t\t$('#keyword').focus();\n\t\t}\n\t}\n\t\n\tfunction getKeywordString()\n\t{\n\t\tvar keywords = '';\n\t\t\t$('td[name=keywordA]').each(function(){\n\t\t\t\tkeywords += $(this).text() + \",\";\n\t\t\t});\n\t\tif(keywords.length > 0){\n\t\t\t\tkeywords = keywords.substr(0, keywords.length - 1);\n\t\t\t}\n\t\t\t$('input[name=keywordList]').val(keywords);\n\t}\n\t\n\tfunction fndeleteKeyword(itm)\n\t{\n\t\t$(itm).parent(\"td\").parent(\"tr\").remove();\n\t}\n\t\n\tfunction showUploadArea(){\n\t\t\n\t\t$('#contentArea').hide();\n\t\t$('#content').val(\"\");\n\t\n\t\t$('#file_upload_area').show();\n\t}\n\t\n\tfunction showXContentArea(){\n\t\t$('#file_upload_area').hide();\n\t\t$('#contentArea').show();\n\t\t//$('#uploadfileQueue').empty();\n\t\t//$('.uploadify-queue-item').empty();\n\t\t$(\"#file_upload\").uploadify('cancel','*');\n\t}\n\t\n\t\n\t var allFileUploadSuccess = true;\n    //初始化上传控件\n    function fnInituploadify() {\n        $(\"#file_upload\").uploadify({\n            //开启调试  \n            'debug': false,\n            //是否自动上传  \n            'auto': false,\n            'buttonText': '选择附件',\n            //flash  \n            'swf': \"${ctx}/jslib/Uploadify/uploadify.swf\",\n            //文件选择后的容器ID  \n            'queueID': 'uploadfileQueue',\n            'uploader': '${ctx}/manualContent/getUploadFile',\n            'width': '120',\n            'height': '29',\n            'multi': false,\n            'fileTypeDesc' : '支持格式',\n\t\t\t'fileTypeExts' : '*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n            'fileSizeLimit': '10MB',\n            'removeTimeout': 3,\n            'successTimeout': 60,\n            'removeCompleted': false,\n            'fileObjName': 'Filedata',\n            'formData': {  },\n\t\t\t'cancelImg': \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n            //返回一个错误，选择文件的时候触发  \n            'onSelectError': function (file, errorCode, errorMsg) {\n                switch (errorCode) {\n                    case -100:\n                        alert(\"上传的文件数量已经超出系统限制的\" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + \"个文件！\");\n                        break;\n                    case -110:\n                        alert(\"文件 [\" + file.name + \"] 大小超出系统限制的\" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + \"大小！\");\n                        break;\n                    case -120:\n                        alert(\"文件 [\" + file.name + \"] 大小异常！\");\n                        break;\n                    case -130:\n                        alert(\"文件 [\" + file.name + \"] 类型不正确！\");\n                        break;\n                }\n            },\n            //检测FLASH失败调用  \n            'onFallback': function () {\n            \twaitupload = false;\n            \tprogressClose();\n                alert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n            },\n            //上传到服务器，服务器返回相应信息到data里  \n            'onUploadSuccess': function (file, data, response) {\n\t\t\t\t\n\t\t\t\t\n                if (response == true) {\n                \tvar dataobj = JSON.parse(data);\n                    if(dataobj.err != \"\"){\n                    \tallFileUploadSuccess = false;\n                    \t//alert(dataobj.err);\n                    }\n\t\t\t\t\t\n                    if(dataobj.msg != \"\"){\n                    \t$('input[name=attachmentContent]').val($('input[name=attachmentContent]').val() + dataobj.msg);\n                    }\n                }\n                else {\n                \tallFileUploadSuccess = false;\n                }\n            },\n            'onQueueComplete': function (queueData) {\n            \tif(allFileUploadSuccess == false){\n            \t\twaitupload = false;\n                    progressClose();\n                    alert(\"有附件上传不成功\");\n            \t}\n            \telse{\n\t\t\t\n            \t\t$('#manualAddForm').submit();\n            \t}\n            }\n        });\n     }\n</script>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/manual/manualDetail.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<div style=\"padding: 3px;\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>标题</td>\n\t\t\t\t<td align=\"center\">${manualContent.title}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属栏目</td>\n\t\t\t\t<td align=\"center\">${categoryList}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>关键字</td>\n\t\t\t\t<td align=\"center\">${keywordList}</td>\n\t\t\t</tr>\n\t\t\t<c:if test=\"${not empty attachmentList}\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>附件</td>\n\t\t\t\t\t<td><c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t<a href=\"${ctx}/front/news/base/downloadAttachment?attachmentID=${attachment.autoID}\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</c:forEach></td>\n\t\t\t\t</tr>\n\t\t\t</c:if>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t<div class=\"table\" id=\"manualContent\">${manualContent.content}</div></td>\n\t\t\t</tr>\n\t\t</table>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/category.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>新闻管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/category/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'type',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目名称',\n\t\t\t\tfield : 'categoryName',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '栏目描述',\n\t\t\t\tfield : 'categoryDescription',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '栏目类型',\n\t\t\t\tfield : 'typeDesc'\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].autoID);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/category/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/category/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 280,\n\t\t\thref : '${ctx}/category/editPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 280,\n\t\t\thref : '${ctx}/category/addPage'\n\t\t});\n\t}\n\t\n\tfunction doSearch(){\n\t\t$('#dataGrid').datagrid('load', {    \n\t        type: $('#selectType').combobox('getValue'),\n\t    }); \n\t}\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/category/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<div style=\"margin-bottom: 5px;\">\n\t\t\t栏目类型: \n\t\t\t<select id=\"selectType\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:100px\">\n\t\t\t\t<option value=\"\">全部</option>\n\t\t\t\t<c:forEach items=\"${typeList}\" var=\"type\">\n\t\t\t\t\t<option value=\"${type.id}\">${type.text} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" onclick=\"doSearch()\">搜索</a>\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/categoryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t$('#addCategory').bind('click',function(){\n\t\t\t$('#categoryAddForm').submit();\n\t\t});\n\t\t\n\t\t$('#categoryAddForm').form({\n\t\t\turl : '${ctx}/category/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>类型</td>\n\t\t\t\t<td>\n\t\t\t\t\t<select class=\"easyui-combobox\" name=\"type\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:if test=\"${!empty typeList}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${typeList}\" var=\"tl\">\n\t\t\t\t\t\t\t\t\t<option value=\"${tl.id}\">${tl.text}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</c:if>\n\t\t\t\t\t</select>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\" placeholder=\"请输入栏目名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\" placeholder=\"请输入栏目描述\" class=\"easyui-validatebox\" data-options=\"required:true,multiline:true\" style=\"width: 300px; height: 100px;\" ></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n<div id=\"toolbar\">\n\t<a href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\" id=\"addCategory\">添加</a>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/categoryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t$('#editCategory').bind('click',function(){\n\t\t\t$('#categoryEditForm').submit();\n\t\t});\n\t\t$('#categoryEditForm').form({\n\t\t\turl : '${ctx}/category/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"categoryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>类型</td>\n\t\t\t\t<td><select class=\"easyui-combobox\" name=\"type\"\n\t\t\t\t\tstyle=\"width: 200px\">\n\t\t\t\t\t\t<c:if test=\"${!empty typeList}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${typeList}\" var=\"tl\">\n\t\t\t\t\t\t\t\t\t<c:if test=\"${category.type == tl.id}\"><option value=\"${tl.id}\" selected=\"selected\">${tl.text}</option></c:if>\n\t\t\t\t\t\t\t\t\t<c:if test=\"${category.type != tl.id}\"><option value=\"${tl.id}\">${tl.text}</option></c:if>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</c:if>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目名称</td>\n\t\t\t\t<td><input name=\"categoryName\" type=\"text\"\n\t\t\t\t\tplaceholder=\"请输入栏目名称\" class=\"easyui-validatebox\"\n\t\t\t\t\tdata-options=\"required:true\" style=\"width: 140px; height: 29px;\" value=\"${category.categoryName}\"></td>\n\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>栏目描述</td>\n\t\t\t\t<td><input name=\"categoryDescription\" type=\"text\"\n\t\t\t\t\tplaceholder=\"请输入栏目描述\" class=\"easyui-validatebox\"\n\t\t\t\t\tdata-options=\"required:true,multiline:true\"\n\t\t\t\t\tstyle=\"width: 300px; height: 100px;\" value=\"${category.categoryDescription}\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<input type=\"hidden\" name=\"autoID\" value=\"${category.autoID}\" />\n\t</form>\n</div>\n<div id=\"toolbar\">\n\t<a href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_sys'\" id=\"editCategory\">修改</a>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/news.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/detail')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDetail = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>新闻管理</title>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/delete')}\">\n\t\t\t<a onclick=\"deleteFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\">删除</a>\n\t\t</c:if>\n\t\t<div style=\"margin-bottom: 5px;\">\n\t\t\t<select id=\"selectPersonal\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:80px;\">\n\t\t\t\t<option value=\"0\" selected=\"selected\">本人发布</option>\n\t\t\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/news/readAll')}\">\n\t\t\t\t\t<option value=\"1\">查看全部</option>\n\t\t\t\t</c:if>\n\t\t\t</select>\n\t\t\t所属栏目：\n\t\t\t<select id=\"selectCategory\" class=\"easyui-combobox\" panelHeight=\"auto\" style=\"width:80px;\">\n\t\t\t\t<option value=\"\" selected=\"selected\">全部</option>\n\t\t\t\t<c:forEach items=\"${categoryList}\" var=\"c\">\n\t\t\t\t\t<option value=\"${c.autoID}\">${c.categoryName} \n\t\t\t\t\t</option>\n\t\t\t\t</c:forEach>\n\t\t\t</select>\n\t\t\t<input id=\"searchTitle\" type=\"text\" value=\"\" placeholder=\"输入搜索的标题\" style=\"width: 120px; margin-left: 10px;\" />\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" onclick=\"doSearch()\">搜索</a>\n\t\t</div>\n\t</div>\n\t<input type=\"hidden\" name=\"categoryTypeID\" value=\"${categoryTypeID }\"/>\n\t<script type=\"text/javascript\">\t\n\tvar dataGrid;\n\t/* 默认显示所有的资源 */\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/news/dataGrid?categoryTypeID=' + $('input[name=categoryTypeID]').val(),\n\t\t\tqueryParams: { selectPersonal: $(\"#selectPersonal\").combobox('getValue')},\n\t\t\tstriped : true,\n\t\t\trownumbers : false,//是否显示行号\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,//允许选择多行\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'autoID',\n\t\t\tsortOrder : 'desc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '30',\n\t\t\t\tfield : 'ck',\n\t\t\t\tcheckbox : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '所属栏目',\n\t\t\t\tfield : 'categoryName',\n\t\t\t\tsortable : false\n\t\t\t} ,{\n\t\t\t\twidth : '250',\n\t\t\t\ttitle : '新闻标题',\n\t\t\t\tfield : 'title',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '发布时间',\n\t\t\t\tfield : 'publishDate',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '发布人',\n\t\t\t\tfield : 'author',\n\t\t\t\tsortable : true\n\t\t\t} ,{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'statusDesc',\n\t\t\t\tsortable : false\n\t\t\t} ,{\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 160,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canDetail) {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"detailFun(\\'{0}\\');\" >详情</a>', row.autoID);\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif ($.canEdit && row.statusDesc == \"编辑\") {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif ($.canDelete && row.statusDesc == \"编辑\") {\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun({0});\" >删除</a>', row.autoID);\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t}\n\t\t\t\t\tif (row.statusDesc == \"编辑\") {//编辑状态，非发布状态\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"publishFun({0});\" >发布</a>', row.autoID);\n\t\t\t\t\t}else if(row.statusDesc == \"发布\"){//发布状态\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"publishCallbackFun({0});\" >撤回</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction deleteFun(id) {\n\t\t/* 定义json数组ids */\n\t\tvar ids = [];\n\t\tif (id == undefined) {//点击删除按钮才会触发这个 \n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tif (rows.length==0) {  \n\t\t\t\tparent.$.messager.alert(\"提示\", \"请选择要删除的行！\", \"info\");  \n\t            return;  \n\t        }else{ \n\t\t\t\tfor(i=0;i<rows.length;i++)\n\t\t\t\t\tids.push(rows[i].autoID);\n\t        }\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\tids.push(id);\n\t\t}\n\t\tvar jsonIds = JSON.stringify(ids);\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前选中的资源？', function(b) {\n\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/news/delete', {\n\t\t\t\t\t\tids : jsonIds\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t//清除datagrid之前的选择，防止下次删除时重复删除\n\t\t\t\t\t\t\tdataGrid.datagrid('clearSelections');\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction detailFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '详情',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/detailPage?id=' + id\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '保存',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 950,\n\t\t\theight : 600,\n\t\t\thref : '${ctx}/news/addPage?categoryTypeID=' + $('input[name=categoryTypeID]').val(),\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '保存',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#newsAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction publishFun(id){\n\t\t$.ajax({\n\t\t\ttype:\"post\",\n\t\t\turl:\"${ctx}/news/publish\",\n\t\t\tdata:{\n\t\t\t\t\"id\":id\n\t\t\t},\n\t\t\tdataType:\"json\",\n\t\t\tsuccess:function(result){\n\t\t\t\tif (result.success) {\n\t\t\t\t\tdataGrid.datagrid('reload');//\n\t\t\t\t} else {\n\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction publishCallbackFun(id){\n\t\t$.ajax({\n\t\t\ttype:\"post\",\n\t\t\turl:\"${ctx}/news/unPublish\",\n\t\t\tdata:{\n\t\t\t\t\"id\":id\n\t\t\t},\n\t\t\tdataType:\"json\",\n\t\t\tsuccess:function(result){\n\t\t\t\tif (result.success) {\n\t\t\t\t\tdataGrid.datagrid('reload');//\n\t\t\t\t} else {\n\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction doSearch(){\n\t\t$('#dataGrid').datagrid('load', {    \n\t        title: $('#searchTitle').val(),\n\t        selectPersonal: $(\"#selectPersonal\").combobox('getValue'),\n\t        categoryID: $(\"#selectCategory\").combobox('getValue')\n\t    }); \n\t}\n\t\n\t</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/newsAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\"\n\ttype=\"text/css\" />\n<div style=\"padding: 3px;\">\n\t<form id=\"newsAddForm\" method=\"post\">\n\t\t<div class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>新闻标题</td>\n\t\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入标题\"\n\t\t\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\t\t\tstyle=\"width: 80%; height: 29px;\">\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>所属栏目</td>\n\t\t\t\t\t<td><select id=\"categoryID\" name=\"categoryID\"\n\t\t\t\t\t\tclass=\"easyui-combobox\"\n\t\t\t\t\t\tdata-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<c:if test=\"${!empty categories}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${categories}\" var=\"category\">\n\t\t\t\t\t\t\t\t\t<option value=\"${category.autoID}\">${category.categoryName}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div>\n\t\t\t<textarea id=\"content\" rows=\"35\" cols=\"150\"\n\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\tstyle=\"width: 100%;\"></textarea>\n\t\t</div>\n\t\t<c:if test=\"${!empty allowAttachment}\">\n\t\t\t<div id=\"file_upload_area\" class=\"table\">\n\t\t\t\t<table class=\"grid\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<div id=\"file_upload\"></div></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</c:if>\n\t\t<input type=\"hidden\" name=\"pageContent\" value=\"\" /> <input\n\t\t\ttype=\"hidden\" name=\"attachmentContent\" value=\"\" />\n\t</form>\n</div>\n<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\"\n\ttype=\"text/javascript\"></script>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t//var editor = $('#content').xheditor();\n\t\tvar editor = $('#content').xheditor({\n\t\t\tcleanPaste : 0,\n\t\t\theight : '300px',\n\t\t\tupBtnText : '选择',\n\t\t\tupImgUrl : '${ctx}/news/getUploadFile'\n\t\t});\n\t\tvar waitupload = false;\n\t\t$('#newsAddForm')\n\t\t\t\t.form(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\turl : '${ctx}/news/add',\n\t\t\t\t\t\t\tonSubmit : function() {\n\t\t\t\t\t\t\t\tprogressLoad();\n\t\t\t\t\t\t\t\tvar uploadCount = $('#uploadfileQueue').find(\n\t\t\t\t\t\t\t\t\t\t'.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\t\t\t\t\tif($(\"#categoryID\").combobox('getValue') == undefined || $(\"#categoryID\").combobox('getValue') == \"\"){\n\t\t\t\t\t\t\t\t\talert(\"请先选择栏目！\");\n\t\t\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\t} else if ($(\"#file_upload_area\").is(\":hidden\") == false\n\t\t\t\t\t\t\t\t\t\t&& waitupload == false\n\t\t\t\t\t\t\t\t\t\t&& uploadCount > 0) {\n\t\t\t\t\t\t\t\t\t//有附件需要上传\n\t\t\t\t\t\t\t\t\twaitupload = true;\n\t\t\t\t\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t\t\t\t\t$('#file_upload').uploadify(\"upload\", \"*\");\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$('input[name=pageContent]').val(\n\t\t\t\t\t\t\t\t\t\tencodeURIComponent(editor.getSource()));\n\t\t\t\t\t\t\t\treturn isValid;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsuccess : function(result) {\n\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\t\t\tparent.$.modalDialog.openner_dataGrid\n\t\t\t\t\t\t\t\t\t\t\t.datagrid('reload');//\n\t\t\t\t\t\t\t\t\tparent.$.modalDialog.handler\n\t\t\t\t\t\t\t\t\t\t\t.dialog('close');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg,\n\t\t\t\t\t\t\t\t\t\t\t'warning');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\tfnInituploadify();\n\t});\n\n\tvar allFileUploadSuccess = true;\n\t//初始化上传控件\n\tfunction fnInituploadify() {\n\t\t$(\"#file_upload\")\n\t\t\t\t.uploadify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//开启调试  \n\t\t\t\t\t\t\t'debug' : false,\n\t\t\t\t\t\t\t//是否自动上传  \n\t\t\t\t\t\t\t'auto' : false,\n\t\t\t\t\t\t\t'buttonText' : '选择附件',\n\t\t\t\t\t\t\t//flash  \n\t\t\t\t\t\t\t'swf' : \"${ctx}/jslib/Uploadify/uploadify.swf\",\n\t\t\t\t\t\t\t//文件选择后的容器ID  \n\t\t\t\t\t\t\t'queueID' : 'uploadfileQueue',\n\t\t\t\t\t\t\t'uploader' : '${ctx}/news/getUploadFile',\n\t\t\t\t\t\t\t'width' : '120',\n\t\t\t\t\t\t\t'height' : '29',\n\t\t\t\t\t\t\t'multi' : true,\n\t\t\t\t\t\t\t'fileTypeDesc' : '支持格式',\n\t\t\t\t\t\t\t'fileTypeExts' : '*.doc;*.docx;*.xls;*.xlsx;*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n\t\t\t\t\t\t\t'fileSizeLimit' : '5MB',\n\t\t\t\t\t\t\t'removeTimeout' : 3,\n\t\t\t\t\t\t\t'successTimeout' : 60,\n\t\t\t\t\t\t\t'removeCompleted' : false,\n\t\t\t\t\t\t\t'fileObjName' : 'Filedata',\n\t\t\t\t\t\t\t'formData' : {},\n\t\t\t\t\t\t\t'cancelImg' : \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n\t\t\t\t\t\t\t//返回一个错误，选择文件的时候触发  \n\t\t\t\t\t\t\t'onSelectError' : function(file, errorCode,\n\t\t\t\t\t\t\t\t\terrorMsg) {\n\t\t\t\t\t\t\t\tswitch (errorCode) {\n\t\t\t\t\t\t\t\tcase -100:\n\t\t\t\t\t\t\t\t\talert(\"上传的文件数量已经超出系统限制的\"\n\t\t\t\t\t\t\t\t\t\t\t+ $('#file_upload').uploadify(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'queueSizeLimit') + \"个文件！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -110:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\"\n\t\t\t\t\t\t\t\t\t\t\t+ file.name\n\t\t\t\t\t\t\t\t\t\t\t+ \"] 大小超出系统限制的\"\n\t\t\t\t\t\t\t\t\t\t\t+ $('#file_upload')\n\t\t\t\t\t\t\t\t\t\t\t\t\t.uploadify('settings',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'fileSizeLimit')\n\t\t\t\t\t\t\t\t\t\t\t+ \"大小！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -120:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\" + file.name + \"] 大小异常！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase -130:\n\t\t\t\t\t\t\t\t\talert(\"文件 [\" + file.name + \"] 类型不正确！\");\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t//检测FLASH失败调用  \n\t\t\t\t\t\t\t'onFallback' : function() {\n\t\t\t\t\t\t\t\twaitupload = false;\n\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\talert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t//上传到服务器，服务器返回相应信息到data里  \n\t\t\t\t\t\t\t'onUploadSuccess' : function(file, data, response) {\n\t\t\t\t\t\t\t\tif (response == true) {\n\t\t\t\t\t\t\t\t\tvar dataobj = JSON.parse(data);\n\t\t\t\t\t\t\t\t\tif (dataobj.err != \"\") {\n\t\t\t\t\t\t\t\t\t\tallFileUploadSuccess = false;\n\t\t\t\t\t\t\t\t\t\t//alert(dataobj.err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (dataobj.msg != \"\") {\n\t\t\t\t\t\t\t\t\t\t$('input[name=attachmentContent]')\n\t\t\t\t\t\t\t\t\t\t\t\t.val(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'input[name=attachmentContent]')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t+ dataobj.msg);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tallFileUploadSuccess = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'onQueueComplete' : function(queueData) {\n\t\t\t\t\t\t\t\tif (allFileUploadSuccess == false) {\n\t\t\t\t\t\t\t\t\twaitupload = false;\n\t\t\t\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t\t\t\t\talert(\"有附件上传不成功\");\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$('#newsAddForm').submit();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t}\n</script>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/newsDetail.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n\tpageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n\n<script type=\"text/javascript\">\n\t$(function() {\n\t\tvar content = $('#pageContent').val();\n\t\tvar html = decodeURIComponent(content);\n\t\t$('#newsContent').append(html);\n\n\t});\n</script>\n\n<div style=\"padding: 3px;\">\n\t<div class=\"table\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" align=\"center\">${news.title}</td>\n\t\t\t</tr>\n\n\t\t\t<tr>\n\t\t\t\t<td>发布者：${news.author }</td>\n\t\t\t\t<td>发布时间：${news.publishDate }</td>\n\t\t\t\t<td>所属栏目：${category.categoryName }</td>\n\t\t\t</tr>\n\t\t\t<c:if test=\"${!empty attachmentList}\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>附件</td>\n\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t<c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t\t<a href=\"${ctx}/front/news/base/downloadAttachment?attachmentID=${attachment.autoID}\" target=\"_blank\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t</c:if>\t\t\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<div class=\"table\" id=\"newsContent\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</div>\n\t<input type=\"hidden\" value=\"${news.pageContent }\" id=\"pageContent\"/>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/news/newsEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\" />\n<link href=\"${ctx}/jslib/Uploadify/uploadify.css\" rel=\"stylesheet\" type=\"text/css\" />\n<div style=\"padding: 3px;\">\n\t<form id=\"newsEditForm\" method=\"post\">\n\t\t<div class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>新闻标题</td>\n\t\t\t\t\t<td><input name=\"title\" type=\"text\" placeholder=\"请输入新闻题目\"\n\t\t\t\t\t\tclass=\"easyui-validatebox\" data-options=\"required:true\"\n\t\t\t\t\t\tstyle=\"width: 80%; height: 29px;\" value=\"${news.title}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>所属类别</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<select id=\"categoryID\" name=\"categoryID\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<c:if test=\"${!empty categories}\">\n\t\t\t\t\t\t\t\t<c:forEach items=\"${categories}\" var=\"category\">\n\t\t\t\t\t\t\t\t\t<option data-type=\"${category.typeDesc}\" value=\"${category.autoID}\"\n\t\t\t\t\t\t\t\t\t\t<c:if test=\"${cate.autoID == category.autoID }\">selected=\"selected\"</c:if>\n\t\t\t\t\t\t\t\t\t>${category.categoryName}</option>\n\t\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t\t</c:if>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div>\n\t\t\t<textarea id=\"content\" rows=\"35\" cols=\"150\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 100%;\"></textarea>\n\t\t</div>\n\t\t<div id=\"file_upload_area\" class=\"table\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<c:if test=\"${!empty attachmentList}\">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td style=\"width:200px;\">已有附件</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<c:forEach items=\"${attachmentList}\" var=\"attachment\">\n\t\t\t\t\t\t\t\t<div style=\"display:block;line-height:2em;\">\n\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0);\">${attachment.metaDescription}</a>\n\t\t\t\t\t\t\t\t\t<a onclick=\"fnDeleteAttachment(this)\" href=\"javascript:void(0);\" attachmentID=\"${attachment.autoID}\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_del'\"></a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</c:if>\t\t\t\n\t\t\t\t<tr>\n\t\t\t\t\t<td style=\"width:200px;\">上传附件</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<div id=\"file_upload\">\n                    \t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><div id=\"uploadfileQueue\"></div></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<input type=\"hidden\" name=\"pageContent\" value=\"${news.pageContent}\"/>\n\t\t<input type=\"hidden\" name=\"autoID\" value=\"${news.autoID }\" />\n\t\t<input type=\"hidden\" name=\"attachmentContent\" value=\"\"/>\n\t</form>\n</div>\n<script src=\"${ctx}/jslib/Uploadify/swfobject.js\" type=\"text/javascript\"></script>\n<script src=\"${ctx}/jslib/Uploadify/jquery.uploadify.min.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t\n\t\tvar editor = $('#content').xheditor({cleanPaste:0,height:'300px',upBtnText:'选择',upImgUrl:'${ctx}/news/getUploadFile'});\n\t\tvar content = $('input[name=pageContent]').val();\n\t\teditor.setSource(decodeURIComponent(content));\n\t\t\n\t\tvar waitupload = false;\n\t\t$(\"#categoryID\").combobox({\n\t\t\tonLoadSuccess: function(){\n\t\t\t\tvar type = $(\"#categoryID option:selected\").attr(\"data-type\");\n\t\t\t\tif(type == \"公告\"){\n\t\t\t\t\t$(\"#file_upload_area\").show();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$(\"#file_upload_area\").hide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonSelect: function(rec){ \n\t\t\t\tvar val = rec.value;\n\t\t\t\tvar type = $(\"#categoryID option[value='\" + val + \"']\").attr(\"data-type\");\n\t\t\t\tif(type == \"公告\"){\n\t\t\t\t\t$(\"#file_upload_area\").show();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t$(\"#file_upload_area\").hide();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t$('#newsEditForm').form({\n\t\t\turl : '${ctx}/news/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar uploadCount = $('#uploadfileQueue').find('.uploadify-queue-item').length; //上传附件的个数\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\telse if($(\"#file_upload_area\").is(\":hidden\") == false && waitupload == false && uploadCount > 0){\n\t\t\t\t\t//有附件需要上传\n\t\t\t\t\twaitupload = true;\n\t\t\t\t\tallFileUploadSuccess = true;\n\t\t\t\t\t$('#file_upload').uploadify(\"upload\",\"*\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$('input[name=pageContent]').val(encodeURIComponent(editor.getSource()));\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tfnInituploadify();\n\t});\n\t\n\tvar allFileUploadSuccess = true;\n    //初始化上传控件\n    function fnInituploadify() {\n        $(\"#file_upload\").uploadify({\n            //开启调试  \n            'debug': false,\n            //是否自动上传  \n            'auto': false,\n            'buttonText': '选择附件',\n            //flash  \n            'swf': \"${ctx}/jslib/Uploadify/uploadify.swf\",\n            //文件选择后的容器ID  \n            'queueID': 'uploadfileQueue',\n            'uploader': '${ctx}/news/getUploadFile',\n            'width': '120',\n            'height': '29',\n            'multi': true,\n            'fileTypeDesc': '支持格式',\n            'fileTypeExts': '*.doc;*.docx;*.xls;*.xlsx;*.pdf;*.jpg;*.png;*.bmp;*.jpeg;',\n            'fileSizeLimit': '5MB',\n            'removeTimeout': 3,\n            'successTimeout': 60,\n            'removeCompleted': false,\n            'fileObjName': 'Filedata',\n            'formData': {  },\n\t\t\t'cancelImg': \"${ctx}/jslib/Uploadify/uploadify-cancel.png\",\n            //返回一个错误，选择文件的时候触发  \n            'onSelectError': function (file, errorCode, errorMsg) {\n                switch (errorCode) {\n                    case -100:\n                        alert(\"上传的文件数量已经超出系统限制的\" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + \"个文件！\");\n                        break;\n                    case -110:\n                        alert(\"文件 [\" + file.name + \"] 大小超出系统限制的\" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + \"大小！\");\n                        break;\n                    case -120:\n                        alert(\"文件 [\" + file.name + \"] 大小异常！\");\n                        break;\n                    case -130:\n                        alert(\"文件 [\" + file.name + \"] 类型不正确！\");\n                        break;\n                }\n            },\n            //检测FLASH失败调用  \n            'onFallback': function () {\n            \twaitupload = false;\n            \tprogressClose();\n                alert(\"您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。\");\n            },\n            //上传到服务器，服务器返回相应信息到data里  \n            'onUploadSuccess': function (file, data, response) {\n                if (response == true) {\n                \tvar dataobj = JSON.parse(data);\n                    if(dataobj.err != \"\"){\n                    \tallFileUploadSuccess = false;\n                    \t//alert(dataobj.err);\n                    }\t\n                    if(dataobj.msg != \"\"){\n                    \t$('input[name=attachmentContent]').val($('input[name=attachmentContent]').val() + dataobj.msg);\n                    }\n                }\n                else {\n                \tallFileUploadSuccess = false;\n                }\n            },\n            'onQueueComplete': function (queueData) {\n            \tif(allFileUploadSuccess == false){\n            \t\twaitupload = false;\n                    progressClose();\n                    alert(\"有附件上传不成功\");\n            \t}\n            \telse{\n            \t\t$('#newsEditForm').submit();\n            \t}\n            }\n        });\n     }\n     \n     //删除附件\n     function fnDeleteAttachment(action){\n     \tif(action == undefined)\n     \t\treturn;\n     \tif(confirm(\"是否删除附件[ \" + $(action).prev().text() + \" ]？\") == false)\n     \t\treturn;\n     \t\n     \t$.ajax({\n\t\t\t\turl : '${ctx}/news/deleteAttachment',\n\t\t\t\ttype : 'post',\n\t\t\t\tdata :{\n\t\t\t\t\t\"id\" : $(action).attr('attachmentID'),\n\t\t\t\t\t\"newsid\": $('input[name=autoID]').val()\n\t\t\t\t},\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess:function(result){\n\t\t\t\t\tif (result && result.success) {\n\t\t\t\t\t\t$(action).parent('div').remove();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n     }\n</script>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/dictionary.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/dictionary/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/dictionary/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar dictionarytypeTree;\n\t$(function() {\n\t\n\t\tdictionarytypeTree = $('#dictionarytypeTree').tree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n \t\t\t\tdataGrid.datagrid('load', {\n\t\t\t\t    dictionarytypeId: node.id\n\t\t\t\t});\n \t\t\t}\n\t\t});\n\t\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/dictionary/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '编码',\n\t\t\t\tfield : 'code',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '名称',\n\t\t\t\tfield : 'text',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t} , {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '排序号',\n\t\t\t\tfield : 'seq',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '所属类别',\n\t\t\t\talign : 'center',\n\t\t\t\tfield : 'dictionarytypeName'\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否默认',\n\t\t\t\tfield : 'isDefault',\n\t\t\t\talign : 'center',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '默认';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '否';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'active',\n\t\t\t\talign : 'center',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '停用';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\talign : 'center',\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif(row.isdefault!=0){\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/dictionary/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dictionaryAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前字典？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/dictionary/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/dictionary/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#dictionaryEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"字典列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div data-options=\"region:'west',border:false,split:true\" title=\"字典类别\" style=\"width:200px;overflow: hidden; \">\n\t\t<table id=\"dictionarytypeTree\" style=\"width:180px;margin: 10px 10px 10px 10px\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/dictionaryAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\trequired:true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#dictionaryAddForm').form({\n\t\t\turl : '${ctx}/dictionary/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}else{\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input name=\"code\" type=\"text\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"0\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/dictionaryEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/dictionarytype/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue:'${dictionary.dictionarytypeId}'\n\t\t});\n\t\t\n\t\t$('#dictionaryEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/dictionary/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"dictionaryEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编码</td>\n\t\t\t\t<td><input type=\"hidden\" name=\"id\" value=\"${dictionary.id}\"/>\n\t\t\t\t<input name=\"code\" type=\"text\" value=\"${dictionary.code}\" placeholder=\"请输入字典编码\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t\t<td>名称</td>\n\t\t\t\t<td><input name=\"text\" type=\"text\" value=\"${dictionary.text}\" placeholder=\"请输入字典名称\" class=\"easyui-validatebox\" data-options=\"required:true\" style=\"width: 140px; height: 29px;\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>所属类别</td>\n\t\t\t\t<td><select id=\"pid\" name=\"dictionarytypeId\" style=\"width: 140px; height: 29px;\" ></select></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"${dictionary.seq}\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td><select name=\"active\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${stateList}\" var=\"stateList\">\n\t\t\t\t\t\t\t<option value=\"${stateList.key}\" <c:if test=\"${stateList.key == dictionary.active}\">selected=\"selected\"</c:if>>${stateList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/organization.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<!-- 管理员对该模块各个操作权限的检查 -->\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar treeGrid;\n\t$(function() {\n\t\ttreeGrid = $('#treeGrid').treegrid({\n\t\t\turl : '${ctx}/organization/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'name',\n\t\t\tparentField : 'pid',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t} ] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\tfield : 'departmentCode',\n\t\t\t\ttitle : '编码',\n\t\t\t\twidth : 80\n\t\t\t},{\n\t\t\t\tfield : 'departmentName',\n\t\t\t\ttitle : '部门名称',\n\t\t\t\twidth : 200\n\t\t\t}, {\n\t\t\t\tfield : 'seq',\n\t\t\t\ttitle : '排序',\n\t\t\t\twidth : 40\n\t\t\t}, {\n\t\t\t\tfield : 'icon',\n\t\t\t\ttitle : '图标',\n\t\t\t\twidth : 80\n\t\t\t},  {\n\t\t\t\twidth : '150',\n\t\t\t\ttitle : '创建时间',\n\t\t\t\tfield : 'createDate'\n\t\t\t},{\n\t\t\t\tfield : 'pid',\n\t\t\t\ttitle : '上级资源ID',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t}, {\n\t\t\t\tfield : 'pname',\n\t\t\t\ttitle : '上级部门名称',\n\t\t\t\twidth : 150\n\t\t\t} ,{\n\t\t\t\tfield : 'address',\n\t\t\t\ttitle : '地址',\n\t\t\t\twidth : 150\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction editFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '编辑',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 300,\n\t\t\t\thref : '${ctx}/organization/editPage?id=' + node.id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '编辑',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#organizationEditForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要删除当前资源？删除当前资源会连同子资源一起删除!', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/organization/delete', {\n\t\t\t\t\t\tid : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/organization/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#organizationAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body>\n\t<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t\t<table id=\"treeGrid\"></table>\n\t\t</div>\n\t\t\n\t\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/organization/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/organizationAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#organizationAddForm').form({\n\t\t\turl : '${ctx}/organization/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"organizationAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>编号</td>\n\t\t\t\t<td><input name=\"departmentCode\" type=\"text\" placeholder=\"请输入部门编号\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>部门名称</td>\n\t\t\t\t<td><input name=\"departmentName\" type=\"text\" placeholder=\"请输入部门名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\" value=\"0\"></td>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td><input  name=\"icon\" value=\"icon_folder\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级部门</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width:200px;height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t\t\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/organizationEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/organization/tree?flag=false',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue :'${organization.pid}'\n\t\t});\n\t\t\n\t\tif ($(':input[name=\"id\"]').val().length > 0) {\n\t\t\t$.post( '${ctx}/organization/get', {\n\t\t\t\tid : $(':input[name=\"id\"]').val(),\n\t\t\t}, function(result) {\n\t\t\t\tif (result.id != undefined) {\n\t\t\t\t\t$('#organizationEditForm').form('load', {\n\t\t\t\t\t\t'id' : result.id,\n\t\t\t\t\t\t'departmentCode' : result.departmentCode,\n\t\t\t\t\t\t'departmentName' : result.departmentName,\n\t\t\t\t\t\t'icon' : result.icon,\n\t\t\t\t\t\t'seq' : result.seq\n\t\t\t\t\t});\n\t\t\t\t\t$('#pid').combotree('setValue',result.pid);\n\t\t\t\t}\n\t\t\t}, 'json');\n\t\t}\n\t\t\n\t\t$('#organizationEditForm').form({\n\t\t\turl : '${ctx}/organization/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为organization.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"organizationEditForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>部门编号</td>\n\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${organization.id}\" /><input name=\"departmentCode\" type=\"text\"  value=\"${organization.departmentCode}\"/></td>\n\t\t\t\t<td>部门名称</td>\n\t\t\t\t<td><input name=\"departmentName\" type=\"text\" value=\"${organization.departmentName}\" placeholder=\"请输入部门名称\" class=\"easyui-validatebox\" data-options=\"required:true\" ></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" value=\"${organization.seq}\" style=\"widtd: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" value=\"${organization.icon}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>地址</td>\n\t\t\t\t<td colspan=\"3\"><input  name=\"address\" style=\"width: 300px;\" value=\"${organization.address}\"/></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/resource.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<title>资源管理</title>\n<script type=\"text/javascript\">\n\tvar treeGrid;\n\t$(function() {\n\t\t\n\t\ttreeGrid = $('#treeGrid').treegrid({\n\t\t\turl : '${ctx}/resource/treeGrid',\n\t\t\tidField : 'id',\n\t\t\ttreeField : 'name',\n\t\t\tparentField : 'pid',\n\t\t\tfit : true,\n\t\t\tfitColumns : false,\n\t\t\tborder : false,\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\ttitle : '编号',\n\t\t\t\tfield : 'id',\n\t\t\t\twidth : 40\n\t\t\t} ] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\tfield : 'name',\n\t\t\t\ttitle : '资源名称',\n\t\t\t\twidth : 200\n\t\t\t}, {\n\t\t\t\tfield : 'url',\n\t\t\t\ttitle : '资源路径',\n\t\t\t\twidth : 230\n\t\t\t}, {\n\t\t\t\tfield : 'seq',\n\t\t\t\ttitle : '排序',\n\t\t\t\twidth : 40\n\t\t\t}, {\n\t\t\t\tfield : 'icon',\n\t\t\t\ttitle : '图标',\n\t\t\t\twidth : 150\n\t\t\t}, {\n\t\t\t\tfield : 'resourcetype',\n\t\t\t\ttitle : '资源类型',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '菜单';\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '按钮';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield : 'pid',\n\t\t\t\ttitle : '上级资源ID',\n\t\t\t\twidth : 150,\n\t\t\t\thidden : true\n\t\t\t}, {\n\t\t\t\tfield : 'cstate',\n\t\t\t\ttitle : '状态',\n\t\t\t\twidth : 40,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '停用';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 80,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction editFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '编辑',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 350,\n\t\t\t\thref : '${ctx}/resource/editPage?id=' + node.id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '编辑',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#resourceEditForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id != undefined) {\n\t\t\ttreeGrid.treegrid('select', id);\n\t\t}\n\t\tvar node = treeGrid.treegrid('getSelected');\n\t\tif (node) {\n\t\t\tparent.$.messager.confirm('询问', '您是否要删除当前资源？删除当前资源会连同子资源一起删除!', function(b) {\n\t\t\t\tif (b) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${pageContext.request.contextPath}/resource/delete', {\n\t\t\t\t\t\tid : node.id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\ttreeGrid.treegrid('reload');\n\t\t\t\t\t\t\tparent.layout_west_tree.tree('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 350,\n\t\t\thref : '${ctx}/resource/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid = treeGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#resourceAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t</script>\n</head>\n<body>\n\t<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t\t<table id=\"treeGrid\"></table>\n\t\t</div>\n\t</div>\n\t\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/resource/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/resourceAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/resource/allTree?flag=false',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#resourceAddForm').form({\n\t\t\turl : '${ctx}/resource/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为resource.jsp页面预定义好了\n\t\t\t\t\t//parent.layout_west_tree.tree('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"resourceAddForm\" method=\"post\">\n\t\t<table class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>资源名称</td>\n\t\t\t\t<td><input name=\"name\" type=\"text\" placeholder=\"请输入资源名称\" class=\"easyui-validatebox span2\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>资源类型</td>\n\t\t\t\t<td><select name=\"resourcetype\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">菜单</option>\n\t\t\t\t\t\t\t<option value=\"1\">按钮</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>资源路径</td>\n\t\t\t\t<td><input name=\"url\" type=\"text\" placeholder=\"请输入资源路径\" class=\"easyui-validatebox span2\" data-options=\"width:140,height:29\" ></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\" value=\"0\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" /></td>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td ><select name=\"cstate\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">正常</option>\n\t\t\t\t\t\t\t<option value=\"1\">停用</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>备注</td>\n\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/resourceEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t\n\n\t$(function() {\n\t\t\n\t\t$('#pid').combotree({\n\t\t\turl : '${ctx}/resource/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\tif ($(':input[name=\"id\"]').val().length > 0) {\n\t\t\t$.post( '${ctx}/resource/get', {\n\t\t\t\tid : $(':input[name=\"id\"]').val(),\n\t\t\t}, function(result) {\n\t\t\t\tif (result.id != undefined) {\n\t\t\t\t\t$('form').form('load', {\n\t\t\t\t\t\t'id' : result.id,\n\t\t\t\t\t\t'name' : result.name,\n\t\t\t\t\t\t'url' : result.url,\n\t\t\t\t\t\t'resourcetype' : result.resourcetype,\n\t\t\t\t\t\t'description' : result.description,\n\t\t\t\t\t\t'icon' : result.icon,\n\t\t\t\t\t\t'seq' : result.seq,\n\t\t\t\t\t\t'cstate':result.cstate\n\t\t\t\t\t});\n\t\t\t\t\t$('#pid').combotree('setValue',result.pid);\n\t\t\t\t}\n\t\t\t}, 'json');\n\t\t}\n\t\t\n\t\t$('#resourceEditForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/resource/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_treeGrid.treegrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_treeGrid这个对象，是因为resource.jsp页面预定义好了\n\t\t\t\t\tparent.layout_west_tree.tree('reload');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n<div style=\"padding: 3px;\">\n\t<form id=\"resourceEditForm\" method=\"post\">\n\t\t<table  class=\"grid\">\n\t\t\t<tr>\n\t\t\t\t<td>资源名称</td>\n\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${resource.id}\" >\n\t\t\t\t<input name=\"name\" type=\"text\" value=\"${resource.name}\" class=\"easyui-validatebox span2\" data-options=\"required:true\" ></td>\n\t\t\t\t<td>资源类型</td>\n\t\t\t\t<td><select name=\"resourcetype\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">菜单</option>\n\t\t\t\t\t\t\t<option value=\"1\">按钮</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>资源路径</td>\n\t\t\t\t<td><input name=\"url\" type=\"text\" placeholder=\"请输入资源路径\" class=\"easyui-validatebox span2\" ></td>\n\t\t\t\t<td>排序</td>\n\t\t\t\t<td><input name=\"seq\"  class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>菜单图标</td>\n\t\t\t\t<td ><input  name=\"icon\" /></td>\n\t\t\t\t<td>状态</td>\n\t\t\t\t<td ><select name=\"cstate\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t\t<option value=\"0\">正常</option>\n\t\t\t\t\t\t\t<option value=\"1\">停用</option>\n\t\t\t\t</select></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>上级资源</td>\n\t\t\t\t<td colspan=\"3\"><select id=\"pid\" name=\"pid\" style=\"width: 200px; height: 29px;\"></select>\n\t\t\t\t<a class=\"easyui-linkbutton\" href=\"javascript:void(0)\" onclick=\"$('#pid').combotree('clear');\" >清空</a></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>备注</td>\n\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t</tr>\n\t\t</table>\n\t</form>\n</div>\n"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/role.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/grant')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canGrant = true;\n\t</script>\n</c:if>\n<title>角色管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\t$(function() {\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/role/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'id',\n\t\t\tsortName : 'id',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : 'id',\n\t\t\t\tfield : 'id',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '名称',\n\t\t\t\tfield : 'name',\n\t\t\t\tsortable : true\n\t\t\t} , {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '排序号',\n\t\t\t\tfield : 'seq',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否默认',\n\t\t\t\tfield : 'isdefault',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '默认';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '否';\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '200',\n\t\t\t\ttitle : '描述',\n\t\t\t\tfield : 'description'\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 120,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '&nbsp;';\n\t\t\t\t\t\tif ($.canGrant) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"grantFun(\\'{0}\\');\" >授权</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t} ] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/role/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个treeGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前用户？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/role/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 300,\n\t\t\thref : '${ctx}/role/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction grantFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\t\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '授权',\n\t\t\twidth : 500,\n\t\t\theight : 500,\n\t\t\thref : '${ctx}/role/grantPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '授权',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#roleGrantForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t\t<c:if test=\"${fn:contains(sessionInfo.resourceList, '/role/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t</c:if>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/roleAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<script type=\"text/javascript\">\n\t$(function() {\n\n\t\t$('#roleAddForm').form({\n\t\t\turl : '${pageContext.request.contextPath}/role/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\" >\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\" >\n\t\t<form id=\"roleAddForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>角色名称</td>\n\t\t\t\t\t<td><input name=\"name\" type=\"text\" placeholder=\"请输入角色名称\" class=\"easyui-validatebox span2\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>排序</td>\n\t\t\t\t\t<td><input name=\"seq\" value=\"0\" class=\"easyui-numberspinner\" style=\"width: 140px; height: 29px;\" required=\"required\" data-options=\"editable:false\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>备注</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"\" cols=\"\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/roleEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\t\n\t\t$('#roleEditForm').form({\n\t\t\turl : '${ctx}/role/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t$(\"#description\").val('${role.description}');\n\t\t\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"roleEditForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>角色名称</td>\n\t\t\t\t\t<td><input name=\"id\" type=\"hidden\"  value=\"${role.id}\">\n\t\t\t\t\t<input name=\"name\" type=\"text\" placeholder=\"请输入角色名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${role.name}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>是否为默认</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t    <select name=\"isdefault\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<option value=\"0\" >非默认</option>\n\t\t\t\t\t\t<option value=\"1\" >默认</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>备注</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea id=\"description\" name=\"description\" rows=\"\" cols=\"\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/roleGrant.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\tvar resourceTree;\n\t$(function() {\n\t\tresourceTree = $('#resourceTree').tree({\n\t\t\turl : '${ctx}/resource/allTree?flag=true',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tcheckbox : true,\n\t\t\tonClick : function(node) {\n\t\t\t},\n\t\t\tonLoadSuccess : function(node, data) {\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/role/get', {\n\t\t\t\t\tid : '${role.id}'\n\t\t\t\t}, function(result) {\n\t\t\t\t\tvar ids;\n\t\t\t\t\tif (result.id != undefined&&result.resourceIds!= undefined) {\n\t\t\t\t\t\tids = $.stringToList(result.resourceIds);\n\t\t\t\t\t}\n\t\t\t\t\tif (ids.length > 0) {\n\t\t\t\t\t\tfor ( var i = 0; i < ids.length; i++) {\n\t\t\t\t\t\t\tif (resourceTree.tree('find', ids[i])) {\n\t\t\t\t\t\t\t\tresourceTree.tree('check', resourceTree.tree('find', ids[i]).target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t\tprogressClose();\n\t\t\t},\n\t\t\tcascadeCheck : false\n\t\t});\n\n\t\t$('#roleGrantForm').form({\n\t\t\turl : '${ctx}/role/grant',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\tvar checknodes = resourceTree.tree('getChecked');\n\t\t\t\tvar ids = [];\n\t\t\t\tif (checknodes && checknodes.length > 0) {\n\t\t\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\t\t\tids.push(checknodes[i].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$('#resourceIds').val(ids);\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction checkAll() {\n\t\tvar nodes = resourceTree.tree('getChecked', 'unchecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tresourceTree.tree('check', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction uncheckAll() {\n\t\tvar nodes = resourceTree.tree('getChecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tresourceTree.tree('uncheck', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction checkInverse() {\n\t\tvar unchecknodes = resourceTree.tree('getChecked', 'unchecked');\n\t\tvar checknodes = resourceTree.tree('getChecked');\n\t\tif (unchecknodes && unchecknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < unchecknodes.length; i++) {\n\t\t\t\tresourceTree.tree('check', unchecknodes[i].target);\n\t\t\t}\n\t\t}\n\t\tif (checknodes && checknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\tresourceTree.tree('uncheck', checknodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n</script>\n<div id=\"roleGrantLayout\" class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'west'\" title=\"系统资源\" style=\"width: 300px; padding: 1px;\">\n\t\t<div class=\"well well-small\">\n\t\t\t<form id=\"roleGrantForm\" method=\"post\">\n\t\t\t\t<input name=\"id\" type=\"hidden\"  value=\"${role.id}\" readonly=\"readonly\">\n\t\t\t\t<ul id=\"resourceTree\"></ul>\n\t\t\t\t<input id=\"resourceIds\" name=\"resourceIds\" type=\"hidden\" />\n\t\t\t</form>\n\t\t</div>\n\t</div>\n\t<div data-options=\"region:'center'\" title=\"\" style=\"overflow: hidden; padding: 10px;\">\n\t\t<div>\n\t\t\t<button class=\"btn btn-success\" onclick=\"checkAll();\">全选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-warning\" onclick=\"checkInverse();\">反选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-inverse\" onclick=\"uncheckAll();\">取消</button>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/user.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ taglib prefix=\"fn\" uri=\"http://java.sun.com/jsp/jstl/functions\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<!DOCTYPE html>\n<html>\n<head>\n<jsp:include page=\"../inc.jsp\"></jsp:include>\n<meta http-equiv=\"X-UA-Compatible\" content=\"edge\" />\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/edit')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canEdit = true;\n\t</script>\n</c:if>\n<c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/delete')}\">\n\t<script type=\"text/javascript\">\n\t\t$.canDelete = true;\n\t</script>\n</c:if>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>用户管理</title>\n\t<script type=\"text/javascript\">\n\tvar dataGrid;\n\tvar organizationTree;\n\t$(function() {\n\t\t\n\t\n\t\torganizationTree = $('#organizationTree').tree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tonClick : function(node) {\n\t\t\t\tdataGrid.datagrid('load', {\n\t\t\t\t    organizationId: node.id\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\n\t\tdataGrid = $('#dataGrid').datagrid({\n\t\t\turl : '${ctx}' + '/user/dataGrid',\n\t\t\tstriped : true,\n\t\t\trownumbers : true,\n\t\t\tpagination : true,\n\t\t\tsingleSelect : true,\n\t\t\tidField : 'autoID',\n\t\t\tsortName : 'createDate',\n\t\t\tsortOrder : 'asc',\n\t\t\tpageSize : 50,\n\t\t\tpageList : [ 10, 20, 30, 40, 50, 100, 200, 300, 400, 500 ],\n\t\t\tfrozenColumns : [ [ {\n\t\t\t\twidth : '100',\n\t\t\t\ttitle : '登录名',\n\t\t\t\tfield : 'loginName',\n\t\t\t\tsortable : false\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '姓名',\n\t\t\t\tfield : 'realName',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '职称',\n\t\t\t\tfield : 'techTitle',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '专长',\n\t\t\t\tfield : 'techType',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '部门ID',\n\t\t\t\tfield : 'organizationId',\n\t\t\t\thidden : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '所属部门',\n\t\t\t\tfield : 'organizationName'\n\t\t\t}] ],\n\t\t\tcolumns : [ [ {\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '性别',\n\t\t\t\tfield : 'sex',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '男';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '女';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\twidth : '50',\n\t\t\t\ttitle : '年龄',\n\t\t\t\tfield : 'age',\n\t\t\t\tsortable : true\n\t\t\t}, {\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '用户类型',\n\t\t\t\tfield : 'roleNames',\n\t\t\t\tsortable : true\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '状态',\n\t\t\t\tfield : 'active',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '正常';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '停用';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},{\n\t\t\t\twidth : '80',\n\t\t\t\ttitle : '是否发布',\n\t\t\t\tfield : 'needPublish',\n\t\t\t\tsortable : true,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tswitch (value) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn '发布';\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn '不发布';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} , {\n\t\t\t\tfield : 'action',\n\t\t\t\ttitle : '操作',\n\t\t\t\twidth : 200,\n\t\t\t\tformatter : function(value, row, index) {\n\t\t\t\t\tvar str = '';\n\t\t\t\t\tif(row.isdefault!=0){\n\t\t\t\t\t\tif ($.canEdit) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"editFun(\\'{0}\\');\" >编辑</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tif ($.canDelete) {\n\t\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"deleteFun(\\'{0}\\');\" >删除</a>', row.autoID);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += '&nbsp;&nbsp;|&nbsp;&nbsp;';\n\t\t\t\t\t\tstr += $.formatString('<a href=\"javascript:void(0)\" onclick=\"manualFun(\\'{0}\\');\" >科目</a>', row.autoID);\n\t\t\t\t\t}\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t}] ],\n\t\t\ttoolbar : '#toolbar'\n\t\t});\n\t});\n\t\n\t\tfunction manualFun(id) {\n\t\t\tif (id == undefined) {\n\t\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\t\tid = rows[0].id;\n\t\t\t} else {\n\t\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t\t}\n\t\t\t\n\t\t\tparent.$.modalDialog({\n\t\t\t\ttitle : '授权',\n\t\t\t\twidth : 500,\n\t\t\t\theight : 500,\n\t\t\t\thref : '${ctx}/user/manualPage?id=' + id,\n\t\t\t\tbuttons : [ {\n\t\t\t\t\ttext : '授权',\n\t\t\t\t\thandler : function() {\n\t\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#usermanualForm');\n\t\t\t\t\t\tf.submit();\n\t\t\t\t\t}\n\t\t\t\t} ]\n\t\t\t});\n\t\t}\n\tfunction addFun() {\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '添加',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/user/addPage',\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '添加',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#userAddForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction deleteFun(id) {\n\t\tif (id == undefined) {//点击右键菜单才会触发这个\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].autoID;\n\t\t} else {//点击操作里面的删除图标会触发这个\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.messager.confirm('询问', '您是否要删除当前用户？', function(b) {\n\t\t\tif (b) {\n\t\t\t\tvar currentUserId = '${sessionInfo.id}';/*当前登录用户的ID*/\n\t\t\t\tif (currentUserId != id) {\n\t\t\t\t\tprogressLoad();\n\t\t\t\t\t$.post('${ctx}/user/delete', {\n\t\t\t\t\t\tid : id\n\t\t\t\t\t}, function(result) {\n\t\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\t\t\tdataGrid.datagrid('reload');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogressClose();\n\t\t\t\t\t}, 'JSON');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.show({\n\t\t\t\t\t\ttitle : '提示',\n\t\t\t\t\t\tmsg : '不可以删除自己！'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tfunction editFun(id) {\n\t\tif (id == undefined) {\n\t\t\tvar rows = dataGrid.datagrid('getSelections');\n\t\t\tid = rows[0].id;\n\t\t} else {\n\t\t\tdataGrid.datagrid('unselectAll').datagrid('uncheckAll');\n\t\t}\n\t\tparent.$.modalDialog({\n\t\t\ttitle : '编辑',\n\t\t\twidth : 500,\n\t\t\theight : 450,\n\t\t\thref : '${ctx}/user/editPage?id=' + id,\n\t\t\tbuttons : [ {\n\t\t\t\ttext : '编辑',\n\t\t\t\thandler : function() {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid = dataGrid;//因为添加成功之后，需要刷新这个dataGrid，所以先预定义好\n\t\t\t\t\tvar f = parent.$.modalDialog.handler.find('#userEditForm');\n\t\t\t\t\tf.submit();\n\t\t\t\t}\n\t\t\t} ]\n\t\t});\n\t}\n\t\n\tfunction searchByBox(value,name)\n\t{\n\t\t$('#dataGrid').datagrid('load', {    \n\t\t\t\"searchKey\": name, \"searchValue\": value,\n\t\t});\t\n\t}\n\t\n\tfunction doSearch(){\n\t\t\t    $('#dataGrid').datagrid('load', {    \n\t        realName: $('#searchByName').val(),\n\t    }); \n\t}\n\t\n\n\t</script>\n</head>\n<body class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',fit:true,border:false\" title=\"用户列表\">\n\t\t<table id=\"dataGrid\" data-options=\"fit:true,border:false\"></table>\n\t</div>\n\t<div data-options=\"region:'west',border:false,split:true\" title=\"组织机构\" style=\"width:200px;overflow: hidden; \">\n\t\t<table id=\"organizationTree\" style=\"width:180px;margin: 10px 10px 10px 10px\"></table>\n\t</div>\n\t<div id=\"toolbar\" style=\"display: none;\">\n\t     <div>\n            <c:if test=\"${fn:contains(sessionInfo.resourceList, '/user/add')}\">\n\t\t\t<a onclick=\"addFun();\" href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"plain:true,iconCls:'icon_add'\">添加</a>\n\t\t    </c:if>\n\t\t </div>\n\t\t <div>\n\t\t\t 姓名：\n\t\t\t<input id=\"searchByName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\"/>\n\t\t\t<a href=\"#\" class=\"easyui-linkbutton\" data-options=\"plain:true\" onclick=\"doSearch()\">搜索</a>\n\t\t </div>\n\t</div>\n\n</body>\n\n</html>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/userAdd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\n\n\t$(function() {\n\t\t\n\t\t$('#organizationId').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#roleIds').combotree({\n\t\t    url: '${ctx}/role/tree',\n\t\t    multiple: true,\n\t\t    required: true,\n\t\t    panelHeight : 'auto'\n\t\t});\n\t\t\n\t\t$('#userAddForm').form({\n\t\t\turl : '${ctx}/user/add',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'warning');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tpubMethod.bind('usertype', 'usertype');\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"userAddForm\" method=\"post\">\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>登录名</td>\n\t\t\t\t\t<td><input name=\"loginName\" type=\"text\" placeholder=\"请输入登录名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t\t<td>姓名</td>\n\t\t\t\t\t<td><input name=\"realName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>密码</td>\n\t\t\t\t\t<td><input name=\"password\" type=\"password\" placeholder=\"请输入密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t<td>性别</td>\n\t\t\t\t\t<td><select name=\"sex\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${sexList}\" var=\"sexList\">\n\t\t\t\t\t\t\t<option value=\"${sexList.key}\" >${sexList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>年龄</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"age\"/></td>\n\t\t\t\t\t<td>专长</td>\n\t\t\t\t\t<td><input id=\"techType\" name=\"techType\"  style=\"width: 140px; height: 29px;\" /></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>职称</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"techTitle\"/></td>\n\t\t\t\t\t<td>是否展示</td>\n\t\t\t\t\t<td><select name=\"needPublish\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${needPublishList}\" var=\"needPublishList\">\n\t\t\t\t\t\t\t<option value=\"${needPublishList.key}\" >${needPublishList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>部门</td>\n\t\t\t\t\t<td><select id=\"organizationId\" name=\"organizationId\" style=\"width: 140px; height: 29px;\" class=\"easyui-validatebox\" data-options=\"required:true\"></select></td>\n\t\t\t\t\t<td>角色</td>\n\t\t\t\t\t<td><select id=\"roleIds\"  name=\"roleIds\"   style=\"width: 140px; height: 29px;\"></select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>联系电话</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"phoneNumber\" class=\"easyui-validatebox\" data-options=\"required:true\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>专家描述</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/userEdit.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\t\n\t\t$('#organizationId').combotree({\n\t\t\turl : '${ctx}/organization/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tvalue : '${user.organizationId}'\n\t\t});\n\t\t\n\t\t$('#roleIds').combotree({\n\t\t\turl : '${ctx}/role/tree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tpanelHeight : 'auto',\n\t\t\tmultiple : true,\n\t\t\trequired: true,\n\t\t\tcascadeCheck : false,\n\t\t\tvalue : $.stringToList('${user.roleIds}')\n\t\t});\n\t\t\n\t\t$('#userEditForm').form({\n\t\t\turl : '${ctx}/user/edit',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tpubMethod.bind('usertype', 'usertype');\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;padding: 3px;\">\n\t\t<form id=\"userEditForm\" method=\"post\">\n\t\t\t<div class=\"light-info\" style=\"overflow: hidden;padding: 3px;\">\n\t\t\t\t<div>密码不修改请留空。</div>\n\t\t\t</div>\n\t\t\t<table class=\"grid\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>登录名</td>\n\t\t\t\t\t<td><input name=\"autoID\" type=\"hidden\"  value=\"${user.autoID}\">\n\t\t\t\t\t<input name=\"loginName\" type=\"text\" placeholder=\"请输入登录名称\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.loginName}\"></td>\n\t\t\t\t\t<td>姓名</td>\n\t\t\t\t\t<td><input name=\"realName\" type=\"text\" placeholder=\"请输入姓名\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.realName}\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>密码</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"password\"/></td>\n\t\t\t\t\t<td>性别</td>\n\t\t\t\t\t<td><select name=\"sex\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${sexList}\" var=\"sexList\">\n\t\t\t\t\t\t\t<option value=\"${sexList.key}\" <c:if test=\"${sexList.key == user.sex}\">selected=\"selected\"</c:if>>${sexList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>年龄</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"age\" value=\"${user.age}\"/></td>\n\t\t\t\t\t<td>专长</td>\n\t\t\t\t\t<td><input id=\"techType\" name=\"techType\" value=\"${user.techType}\" style=\"width: 140px; height: 29px;\" /></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>职称</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"techTitle\" value=\"${user.techTitle}\"/></td>\n\t\t\t\t\t<td>是否展示</td>\n\t\t\t\t\t<td><select name=\"needPublish\" class=\"easyui-combobox\" data-options=\"width:140,height:29,editable:false,panelHeight:'auto'\">\n\t\t\t\t\t\t<c:forEach items=\"${needPublishList}\" var=\"needPublishList\">\n\t\t\t\t\t\t\t<option value=\"${needPublishList.key}\" <c:if test=\"${needPublishList.key == user.needPublish}\">selected=\"selected\"</c:if>>${needPublishList.value}</option>\n\t\t\t\t\t\t</c:forEach>\n\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>部门</td>\n\t\t\t\t\t<td><select id=\"organizationId\" name=\"organizationId\" style=\"width: 140px; height: 29px;\" class=\"easyui-validatebox\" data-options=\"required:true\"></select></td>\n\t\t\t\t\t<td>角色</td>\n\t\t\t\t\t<td><input  id=\"roleIds\" name=\"roleIds\" style=\"width: 140px; height: 29px;\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>联系电话</td>\n\t\t\t\t\t<td><input type=\"text\" name=\"phoneNumber\" class=\"easyui-validatebox\" data-options=\"required:true\" value=\"${user.phoneNumber}\"/></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>专家描述</td>\n\t\t\t\t\t<td colspan=\"3\"><textarea name=\"description\" rows=\"5\" cols=\"50\" value=\"${user.description}\" ></textarea></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</form>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/userEditPwd.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\t$(function() {\n\n\t\t$('#editUserPwdForm').form({\n\t\t\turl : '${ctx}/user/editUserPwd',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.messager.alert('提示', result.msg, 'info');\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n</script>\n<div class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'center',border:false\" title=\"\" style=\"overflow: hidden;\">\n\t\t<c:if test=\"${sessionInfo.name == null}\">\n\t\t\t<div>登录已超时，请重新登录.</div>\n\t\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t\ttry {\n\t\t\t\t\twindow.location.href='${ctx}/admin/index';\n\t\t\t\t} catch (e) {\n\t\t\t\t}\n\t\t\t</script>\n\t\t</c:if>\n\t\t<c:if test=\"${sessionInfo.name != null}\">\n\t\t\t<form id=\"editUserPwdForm\" method=\"post\">\n\t\t\t\t<table>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>登录名</th>\n\t\t\t\t\t\t<td>${sessionInfo.name}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>原密码</th>\n\t\t\t\t\t\t<td><input name=\"oldPwd\" type=\"password\" placeholder=\"请输入原密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>新密码</th>\n\t\t\t\t\t\t<td><input name=\"pwd\" type=\"password\" placeholder=\"请输入新密码\" class=\"easyui-validatebox\" data-options=\"required:true\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>重复密码</th>\n\t\t\t\t\t\t<td><input name=\"rePwd\" type=\"password\" placeholder=\"请再次输入新密码\" class=\"easyui-validatebox\" data-options=\"required:true,validType:'eqPwd[\\'#editUserPwdForm input[name=pwd]\\']'\"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</form>\n\t\t</c:if>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/eumode/sys/userManual.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n<script type=\"text/javascript\">\n\tvar manualCategoryTree;\n\t$(function() {\n\t\tmanualCategoryTree = $('#manualCategoryTree').tree({\n\t\t\turl : '${ctx}/manualCategory/getAllManualTree',\n\t\t\tparentField : 'pid',\n\t\t\tlines : true,\n\t\t\tcheckbox : true,\n\t\t\tonClick : function(node) {\n\t\t\t},\n\t\t\tonLoadSuccess : function(node, data) {\n\t\t\t\tprogressLoad();\n\t\t\t\t$.post( '${ctx}/user/get', {\n\t\t\t\t\tid : '${user.autoID}'\n\t\t\t\t}, function(result) {\n\t\t\t\t\tvar ids;\n\t\t\t\t\tif (result.autoID != undefined&&result.manualIDs!= undefined) {\n\t\t\t\t\t\tids = $.stringToList(result.manualIDs);\n\t\t\t\t\t}\n\t\t\t\t\tif (ids.length > 0) {\n\t\t\t\t\t\tfor ( var i = 0; i < ids.length; i++) {\n\t\t\t\t\t\t\tif (manualCategoryTree.tree('find', ids[i])) {\n\t\t\t\t\t\t\t\tmanualCategoryTree.tree('check', manualCategoryTree.tree('find', ids[i]).target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 'json');\n\t\t\t\tprogressClose();\n\t\t\t},\n\t\t\tcascadeCheck : false\n\t\t});\n\t\t$('#usermanualForm').form({\n\t\t\turl : '${ctx}/user/setManual',\n\t\t\tonSubmit : function() {\n\t\t\t\tprogressLoad();\n\t\t\t\tvar isValid = $(this).form('validate');\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tprogressClose();\n\t\t\t\t}\n\t\t\t\tvar checknodes = manualCategoryTree.tree('getChecked');\n\t\t\t\tvar ids = [];\n\t\t\t\tif (checknodes && checknodes.length > 0) {\n\t\t\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\t\t\tids.push(checknodes[i].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$('#manualIDs').val(ids);\n\t\t\t\treturn isValid;\n\t\t\t},\n\t\t\tsuccess : function(result) {\n\t\t\t\tprogressClose();\n\t\t\t\tresult = $.parseJSON(result);\n\t\t\t\tif (result.success) {\n\t\t\t\t\tparent.$.modalDialog.openner_dataGrid.datagrid('reload');//之所以能在这里调用到parent.$.modalDialog.openner_dataGrid这个对象，是因为user.jsp页面预定义好了\n\t\t\t\t\tparent.$.modalDialog.handler.dialog('close');\n\t\t\t\t} else {\n\t\t\t\t\tparent.$.messager.alert('错误', result.msg, 'error');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction checkAll() {\n\t\tvar nodes = manualCategoryTree.tree('getChecked', 'unchecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('check', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction uncheckAll() {\n\t\tvar nodes = manualCategoryTree.tree('getChecked');\n\t\tif (nodes && nodes.length > 0) {\n\t\t\tfor ( var i = 0; i < nodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('uncheck', nodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n\tfunction checkInverse() {\n\t\tvar unchecknodes = manualCategoryTree.tree('getChecked', 'unchecked');\n\t\tvar checknodes = manualCategoryTree.tree('getChecked');\n\t\tif (unchecknodes && unchecknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < unchecknodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('check', unchecknodes[i].target);\n\t\t\t}\n\t\t}\n\t\tif (checknodes && checknodes.length > 0) {\n\t\t\tfor ( var i = 0; i < checknodes.length; i++) {\n\t\t\t\tmanualCategoryTree.tree('uncheck', checknodes[i].target);\n\t\t\t}\n\t\t}\n\t}\n</script>\n<div id=\"roleGrantLayout\" class=\"easyui-layout\" data-options=\"fit:true,border:false\">\n\t<div data-options=\"region:'west'\" title=\"科目目录\" style=\"width: 300px; padding: 1px;\">\n\t\t<div class=\"well well-small\">\n\t\t\t<form id=\"usermanualForm\" method=\"post\">\n\t\t\t\t<input name=\"autoID\" type=\"hidden\"  value=\"${user.autoID}\" readonly=\"readonly\">\n\t\t\t\t<ul id=\"manualCategoryTree\"></ul>\n\t\t\t\t<input id=\"manualIDs\" name=\"manualIDs\" type=\"hidden\" />\n\t\t\t</form>\n\t\t</div>\n\t</div>\n\t<div data-options=\"region:'center'\" title=\"\" style=\"overflow: hidden; padding: 10px;\">\n\t\t<div>\n\t\t\t<button class=\"btn btn-success\" onclick=\"checkAll();\">全选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-warning\" onclick=\"checkInverse();\">反选</button>\n\t\t\t<br /> <br />\n\t\t\t<button class=\"btn btn-inverse\" onclick=\"uncheckAll();\">取消</button>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "target/mongo/WEB-INF/views/mogoList.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: DuLida\n  Date: 2016/10/20\n  Time: 16:12\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<html>\n<head>\n    <title>MongoList</title>\n</head>\n<body>\n<h1>Hello,MongoDB</h1>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/WEB-INF/web.xml",
    "content": "<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n         xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd\"\n         version=\"3.1\">\n\n    <!--不加这句话的话项目启动默认首页为index，删除index.jsp也行-->\n    <welcome-file-list>\n        <welcome-file></welcome-file>\n    </welcome-file-list>\n\n    <servlet>\n        <servlet-name>springServlet</servlet-name>\n        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n        <init-param>\n            <param-name>contextConfigLocation</param-name>\n            <param-value>classpath:spring/spring-*.xml</param-value>\n        </init-param>\n        <load-on-startup>1</load-on-startup>\n    </servlet>\n    <servlet-mapping>\n        <servlet-name>springServlet</servlet-name>\n        <url-pattern>/</url-pattern>\n    </servlet-mapping>\n\n    <filter>\n        <filter-name>characterEncodingFilter</filter-name>\n        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n        <init-param>\n            <param-name>encoding</param-name>\n            <param-value>UTF-8</param-value>\n        </init-param>\n        <init-param>\n            <param-name>forceEncoding</param-name>\n            <param-value>true</param-value>\n        </init-param>\n    </filter>\n    <filter-mapping>\n        <filter-name>characterEncodingFilter</filter-name>\n        <url-pattern>/*</url-pattern>\n    </filter-mapping>\n\n    <!-- 防止内存溢出监听器 -->\n    <listener>\n        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>\n    </listener>\n    <!-- 配置静态资源不经过spring mvc -->\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.css</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.html</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.js</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.json</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.gif</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.png</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.jpeg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.jpg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.ico</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.doc</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.xls</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.docx</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.xlsx</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.txt</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.swf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.mp4</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.apk</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.otf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.woff</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.ttf</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.svg</url-pattern>\n    </servlet-mapping>\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.eot</url-pattern>\n    </servlet-mapping>\n    <!-- 配置session超时时间，单位分钟 -->\n    <session-config>\n        <session-timeout>60</session-timeout>\n    </session-config>\n\n    <!-- 设置欢迎页面 -->\n    <welcome-file-list>\n        <welcome-file>/index.jsp</welcome-file>\n    </welcome-file-list>\n\n    <!-- 找不到页错误转向 -->\n    <error-page>\n        <error-code>404</error-code>\n        <location>/error/404.jsp</location>\n    </error-page>\n    <!-- 系统内部错误转向 -->\n    <error-page>\n        <error-code>500</error-code>\n        <location>/error/500.jsp</location>\n    </error-page>\n</web-app>\n"
  },
  {
    "path": "target/mongo/assets/bootstrap/css/bootstrap-fileupload.css",
    "content": ".btn-file {\n  position: relative;\n  overflow: hidden;\n  vertical-align: middle;\n}\n\n.btn-file > input {\n  position: absolute;\n  top: 0;\n  right: 0;\n  margin: 0;\n  font-size: 23px;\n  cursor: pointer;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  transform: translate(-300px, 0) scale(4);\n  direction: ltr;\n}\n\n.fileupload {\n  margin-bottom: 9px;\n}\n\n.fileupload .uneditable-input {\n  display: inline-block;\n  margin-bottom: 0;\n  vertical-align: middle;\n  cursor: text;\n}\n\n.fileupload .thumbnail {\n  display: inline-block;\n  margin-bottom: 5px;\n  overflow: hidden;\n  text-align: center;\n  vertical-align: middle;\n}\n\n.fileupload .thumbnail > img {\n  display: inline-block;\n  max-height: 100%;\n  vertical-align: middle;\n}\n\n.fileupload .btn {\n  vertical-align: middle;\n}\n\n.fileupload-exists .fileupload-new,\n.fileupload-new .fileupload-exists {\n  display: none;\n}\n\n.fileupload-inline .fileupload-controls {\n  display: inline;\n}\n\n.fileupload-new .input-append .btn-file {\n  -webkit-border-radius: 0 3px 3px 0;\n     -moz-border-radius: 0 3px 3px 0;\n          border-radius: 0 3px 3px 0;\n}\n\n.thumbnail-borderless .thumbnail {\n  padding: 0;\n  border: none;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.fileupload-new.thumbnail-borderless .thumbnail {\n  border: 1px solid #ddd;\n}\n\n.control-group.warning .fileupload .uneditable-input {\n  color: #a47e3c;\n  border-color: #a47e3c;\n}\n\n.control-group.warning .fileupload .fileupload-preview {\n  color: #a47e3c;\n}\n\n.control-group.warning .fileupload .thumbnail {\n  border-color: #a47e3c;\n}\n\n.control-group.error .fileupload .uneditable-input {\n  color: #b94a48;\n  border-color: #b94a48;\n}\n\n.control-group.error .fileupload .fileupload-preview {\n  color: #b94a48;\n}\n\n.control-group.error .fileupload .thumbnail {\n  border-color: #b94a48;\n}\n\n.control-group.success .fileupload .uneditable-input {\n  color: #468847;\n  border-color: #468847;\n}\n\n.control-group.success .fileupload .fileupload-preview {\n  color: #468847;\n}\n\n.control-group.success .fileupload .thumbnail {\n  border-color: #468847;\n}\n"
  },
  {
    "path": "target/mongo/assets/bootstrap/js/bootstrap-fileupload.js",
    "content": "/* ===========================================================\n * bootstrap-fileupload.js j2\n * http://jasny.github.com/bootstrap/javascript.html#fileupload\n * ===========================================================\n * Copyright 2012 Jasny BV, Netherlands.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_\n\n /* FILEUPLOAD PUBLIC CLASS DEFINITION\n  * ================================= */\n\n  var Fileupload = function (element, options) {\n    this.$element = $(element)\n    this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? \"image\" : \"file\")\n      \n    this.$input = this.$element.find(':file')\n    if (this.$input.length === 0) return\n\n    this.name = this.$input.attr('name') || options.name\n\n    this.$hidden = this.$element.find('input[type=hidden][name=\"'+this.name+'\"]')\n    if (this.$hidden.length === 0) {\n      this.$hidden = $('<input type=\"hidden\" />')\n      this.$element.prepend(this.$hidden)\n    }\n\n    this.$preview = this.$element.find('.fileupload-preview')\n    var height = this.$preview.css('height')\n    if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)\n\n    this.original = {\n      'exists': this.$element.hasClass('fileupload-exists'),\n      'preview': this.$preview.html(),\n      'hiddenVal': this.$hidden.val()\n    }\n    \n    this.$remove = this.$element.find('[data-dismiss=\"fileupload\"]')\n\n    this.$element.find('[data-trigger=\"fileupload\"]').on('click.fileupload', $.proxy(this.trigger, this))\n\n    this.listen()\n  }\n  \n  Fileupload.prototype = {\n    \n    listen: function() {\n      this.$input.on('change.fileupload', $.proxy(this.change, this))\n      $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))\n      if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))\n    },\n    \n    change: function(e, invoked) {\n      var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\\\/, '') } : null)\n      if (invoked === 'clear') return\n      \n      if (!file) {\n        this.clear()\n        return\n      }\n      \n      this.$hidden.val('')\n      this.$hidden.attr('name', '')\n      this.$input.attr('name', this.name)\n\n      if (this.type === \"image\" && this.$preview.length > 0 && (typeof file.type !== \"undefined\" ? file.type.match('image.*') : file.name.match('\\\\.(gif|png|jpe?g)$')) && typeof FileReader !== \"undefined\") {\n        var reader = new FileReader()\n        var preview = this.$preview\n        var element = this.$element\n\n        reader.onload = function(e) {\n          preview.html('<img src=\"' + e.target.result + '\" ' + (preview.css('max-height') != 'none' ? 'style=\"max-height: ' + preview.css('max-height') + ';\"' : '') + ' />')\n          element.addClass('fileupload-exists').removeClass('fileupload-new')\n        }\n\n        reader.readAsDataURL(file)\n      } else {\n        this.$preview.text(file.name)\n        this.$element.addClass('fileupload-exists').removeClass('fileupload-new')\n      }\n    },\n\n    clear: function(e) {\n      this.$hidden.val('')\n      this.$hidden.attr('name', this.name)\n      this.$input.attr('name', '')\n\n      //ie8+ doesn't support changing the value of input with type=file so clone instead\n      if($.browser.msie){\n          var inputClone = this.$input.clone(true);\n          this.$input.after(inputClone);\n          this.$input.remove();\n          this.$input = inputClone;\n      }else{\n          this.$input.val('')\n      }\n\n      this.$preview.html('')\n      this.$element.addClass('fileupload-new').removeClass('fileupload-exists')\n\n      if (e) {\n        this.$input.trigger('change', [ 'clear' ])\n        e.preventDefault()\n      }\n    },\n    \n    reset: function(e) {\n      this.clear()\n      \n      this.$hidden.val(this.original.hiddenVal)\n      this.$preview.html(this.original.preview)\n      \n      if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')\n       else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')\n    },\n    \n    trigger: function(e) {\n      this.$input.trigger('click')\n      e.preventDefault()\n    }\n  }\n\n  \n /* FILEUPLOAD PLUGIN DEFINITION\n  * =========================== */\n\n  $.fn.fileupload = function (options) {\n    return this.each(function () {\n      var $this = $(this)\n      , data = $this.data('fileupload')\n      if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))\n      if (typeof options == 'string') data[options]()\n    })\n  }\n\n  $.fn.fileupload.Constructor = Fileupload\n\n\n /* FILEUPLOAD DATA-API\n  * ================== */\n\n  $(function () {\n    $('body').on('click.fileupload.data-api', '[data-provides=\"fileupload\"]', function (e) {\n      var $this = $(this)\n      if ($this.data('fileupload')) return\n      $this.fileupload($this.data())\n      \n      var $target = $(e.target).is('[data-dismiss=fileupload],[data-trigger=fileupload]') ?\n        $(e.target) : $(e.target).parents('[data-dismiss=fileupload],[data-trigger=fileupload]').first()\n      if ($target.length > 0) {\n          $target.trigger('click.fileupload')\n          e.preventDefault()\n      }\n    })\n  })\n\n}(window.jQuery);"
  },
  {
    "path": "target/mongo/assets/bootstrap-colorpicker/css/colorpicker.css",
    "content": " /*\n\tColorpicker for Bootstrap\n\tCopyright 2012 Stefan Petre \n\tLicensed under the Apache License v2.0\n\thttp://www.apache.org/licenses/LICENSE-2.0\n*/\n .colorpicker-saturation { width: 100px; height: 100px; background-image: url(../img/saturation.png); cursor: crosshair; float: left; } .colorpicker-saturation i { display: block; height: 5px; width: 5px; border: 1px solid #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; position: absolute; top: 0; left: 0; margin: -4px 0 0 -4px; } .colorpicker-saturation i b { display: block; height: 5px; width: 5px; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .colorpicker-hue, .colorpicker-alpha { width: 15px; height: 100px; float: left; cursor: row-resize; margin-left: 4px; margin-bottom: 4px; } .colorpicker-hue i, .colorpicker-alpha i { display: block; height: 1px; background: #000; border-top: 1px solid #fff; position: absolute; top: 0; left: 0; width: 100%; margin-top: -1px; } .colorpicker-hue { background-image: url(../img/hue.png); } .colorpicker-alpha { background-image: url(../img/alpha.png); display: none; } .colorpicker { *zoom: 1; top: 0; left: 0; padding: 4px; min-width: 120px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .colorpicker:before, .colorpicker:after { display: table; content: \"\"; } .colorpicker:after { clear: both; } .colorpicker: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: 6px; } .colorpicker: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: 7px; } .colorpicker div { position: relative; } .colorpicker.alpha { min-width: 140px; } .colorpicker.alpha .colorpicker-alpha { display: block; } .colorpicker-color { height: 10px; margin-top: 5px; clear: both; background-image: url(../img/alpha.png); background-position: 0 100%; } .colorpicker-color div { height: 10px; } .input-append.color .add-on i, .input-prepend.color .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }"
  },
  {
    "path": "target/mongo/assets/bootstrap-colorpicker/js/bootstrap-colorpicker.js",
    "content": "/* =========================================================\n * bootstrap-colorpicker.js \n * http://www.eyecon.ro/bootstrap-colorpicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n \n!function( $ ) {\n\t\n\t// Color object\n\t\n\tvar Color = function(val) {\n\t\tthis.value = {\n\t\t\th: 1,\n\t\t\ts: 1,\n\t\t\tb: 1,\n\t\t\ta: 1\n\t\t};\n\t\tthis.setColor(val);\n\t};\n\t\n\tColor.prototype = {\n\t\tconstructor: Color,\n\t\t\n\t\t//parse a string to HSB\n\t\tsetColor: function(val){\n\t\t\tval = val.toLowerCase();\n\t\t\tvar that = this;\n\t\t\t$.each( CPGlobal.stringParsers, function( i, parser ) {\n\t\t\t\tvar match = parser.re.exec( val ),\n\t\t\t\t\tvalues = match && parser.parse( match ),\n\t\t\t\t\tspace = parser.space||'rgba';\n\t\t\t\tif ( values ) {\n\t\t\t\t\tif (space === 'hsla') {\n\t\t\t\t\t\tthat.value = CPGlobal.RGBtoHSB.apply(null, CPGlobal.HSLtoRGB.apply(null, values));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthat.value = CPGlobal.RGBtoHSB.apply(null, values);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t\n\t\tsetHue: function(h) {\n\t\t\tthis.value.h = 1- h;\n\t\t},\n\t\t\n\t\tsetSaturation: function(s) {\n\t\t\tthis.value.s = s;\n\t\t},\n\t\t\n\t\tsetLightness: function(b) {\n\t\t\tthis.value.b = 1- b;\n\t\t},\n\t\t\n\t\tsetAlpha: function(a) {\n\t\t\tthis.value.a = parseInt((1 - a)*100, 10)/100;\n\t\t},\n\t\t\n\t\t// HSBtoRGB from RaphaelJS\n\t\t// https://github.com/DmitryBaranovskiy/raphael/\n\t\ttoRGB: function(h, s, b, a) {\n\t\t\tif (!h) {\n\t\t\t\th = this.value.h;\n\t\t\t\ts = this.value.s;\n\t\t\t\tb = this.value.b;\n\t\t\t}\n\t\t\th *= 360;\n\t\t\tvar R, G, B, X, C;\n\t\t\th = (h % 360) / 60;\n\t\t\tC = b * s;\n\t\t\tX = C * (1 - Math.abs(h % 2 - 1));\n\t\t\tR = G = B = b - C;\n\n\t\t\th = ~~h;\n\t\t\tR += [C, X, 0, 0, X, C][h];\n\t\t\tG += [X, C, C, X, 0, 0][h];\n\t\t\tB += [0, 0, X, C, C, X][h];\n\t\t\treturn {\n\t\t\t\tr: Math.round(R*255),\n\t\t\t\tg: Math.round(G*255),\n\t\t\t\tb: Math.round(B*255),\n\t\t\t\ta: a||this.value.a\n\t\t\t};\n\t\t},\n\t\t\n\t\ttoHex: function(h, s, b, a){\n\t\t\tvar rgb = this.toRGB(h, s, b, a);\n\t\t\treturn '#'+((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1);\n\t\t},\n\t\t\n\t\ttoHSL: function(h, s, b, a){\n\t\t\tif (!h) {\n\t\t\t\th = this.value.h;\n\t\t\t\ts = this.value.s;\n\t\t\t\tb = this.value.b;\n\t\t\t}\n\t\t\tvar H = h,\n\t\t\t\tL = (2 - s) * b,\n\t\t\t\tS = s * b;\n\t\t\tif (L > 0 && L <= 1) {\n\t\t\t\tS /= L;\n\t\t\t} else {\n\t\t\t\tS /= 2 - L;\n\t\t\t}\n\t\t\tL /= 2;\n\t\t\tif (S > 1) {\n\t\t\t\tS = 1;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\th: H,\n\t\t\t\ts: S,\n\t\t\t\tl: L,\n\t\t\t\ta: a||this.value.a\n\t\t\t};\n\t\t}\n\t};\n\t\n\t// Picker object\n\t\n\tvar Colorpicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tvar format = options.format||this.element.data('color-format')||'hex';\n\t\tthis.format = CPGlobal.translateFormats[format];\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.color') ? this.element.find('.add-on') : false;\n\t\t\n\t\tthis.picker = $(CPGlobal.template)\n\t\t\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t\t\t.on('mousedown', $.proxy(this.mousedown, this));\n\t\t\n\t\tif (this.isInput) {\n\t\t\tthis.element.on({\n\t\t\t\t'focus': $.proxy(this.show, this),\n\t\t\t\t'keyup': $.proxy(this.update, this)\n\t\t\t});\n\t\t} else if (this.component){\n\t\t\tthis.component.on({\n\t\t\t\t'click': $.proxy(this.show, this)\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element.on({\n\t\t\t\t'click': $.proxy(this.show, this)\n\t\t\t});\n\t\t}\n\t\tif (format === 'rgba' || format === 'hsla') {\n\t\t\tthis.picker.addClass('alpha');\n\t\t\tthis.alpha = this.picker.find('.colorpicker-alpha')[0].style;\n\t\t}\n\t\t\n\t\tif (this.component){\n\t\t\tthis.picker.find('.colorpicker-color').hide();\n\t\t\tthis.preview = this.element.find('i')[0].style;\n\t\t} else {\n\t\t\tthis.preview = this.picker.find('div:last')[0].style;\n\t\t}\n\t\t\n\t\tthis.base = this.picker.find('div:first')[0].style;\n\t\tthis.update();\n\t};\n\t\n\tColorpicker.prototype = {\n\t\tconstructor: Colorpicker,\n\t\t\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(document).on({\n\t\t\t\t'mousedown': $.proxy(this.hide, this)\n\t\t\t});\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\tupdate: function(){\n\t\t\tthis.color = new Color(this.isInput ? this.element.prop('value') : this.element.data('color'));\n\t\t\tthis.picker.find('i')\n\t\t\t\t.eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end()\n\t\t\t\t.eq(1).css('top', 100 * (1 - this.color.value.h)).end()\n\t\t\t\t.eq(2).css('top', 100 * (1 - this.color.value.a));\n\t\t\tthis.previewColor();\n\t\t},\n\t\t\n\t\tsetValue: function(newColor) {\n\t\t\tthis.color = new Color(newColor);\n\t\t\tthis.picker.find('i')\n\t\t\t\t.eq(0).css({left: this.color.value.s*100, top: 100 - this.color.value.b*100}).end()\n\t\t\t\t.eq(1).css('top', 100 * (1 - this.color.value.h)).end()\n\t\t\t\t.eq(2).css('top', 100 * (1 - this.color.value.a));\n\t\t\tthis.previewColor();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeColor',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\thide: function(){\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off({\n\t\t\t\t\t'mousedown': this.hide\n\t\t\t\t});\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', this.format.call(this));\n\t\t\t\t}\n\t\t\t\tthis.element.data('color', this.format.call(this));\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', this.format.call(this));\n\t\t\t}\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t},\n\t\t\n\t\tplace: function(){\n\t\t\tvar offset = this.component ? this.component.offset() : this.element.offset();\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: offset.left\n\t\t\t});\n\t\t},\n\t\t\n\t\t//preview color change\n\t\tpreviewColor: function(){\n\t\t\ttry {\n\t\t\t\tthis.preview.backgroundColor = this.format.call(this);\n\t\t\t} catch(e) {\n\t\t\t\tthis.preview.backgroundColor = this.color.toHex();\n\t\t\t}\n\t\t\t//set the color for brightness/saturation slider\n\t\t\tthis.base.backgroundColor = this.color.toHex(this.color.value.h, 1, 1, 1);\n\t\t\t//set te color for alpha slider\n\t\t\tif (this.alpha) {\n\t\t\t\tthis.alpha.backgroundColor = this.color.toHex();\n\t\t\t}\n\t\t},\n\t\t\n\t\tpointer: null,\n\t\t\n\t\tslider: null,\n\t\t\n\t\tmousedown: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tvar target = $(e.target);\n\t\t\t\n\t\t\t//detect the slider and set the limits and callbacks\n\t\t\tvar zone = target.closest('div');\n\t\t\tif (!zone.is('.colorpicker')) {\n\t\t\t\tif (zone.is('.colorpicker-saturation')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.saturation);\n\t\t\t\t} \n\t\t\t\telse if (zone.is('.colorpicker-hue')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.hue);\n\t\t\t\t}\n\t\t\t\telse if (zone.is('.colorpicker-alpha')) {\n\t\t\t\t\tthis.slider = $.extend({}, CPGlobal.sliders.alpha);\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar offset = zone.offset();\n\t\t\t\t//reference to knob's style\n\t\t\t\tthis.slider.knob = zone.find('i')[0].style;\n\t\t\t\tthis.slider.left = e.pageX - offset.left;\n\t\t\t\tthis.slider.top = e.pageY - offset.top;\n\t\t\t\tthis.pointer = {\n\t\t\t\t\tleft: e.pageX,\n\t\t\t\t\ttop: e.pageY\n\t\t\t\t};\n\t\t\t\t//trigger mousemove to move the knob to the current position\n\t\t\t\t$(document).on({\n\t\t\t\t\tmousemove: $.proxy(this.mousemove, this),\n\t\t\t\t\tmouseup: $.proxy(this.mouseup, this)\n\t\t\t\t}).trigger('mousemove');\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\tmousemove: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar left = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.min(\n\t\t\t\t\tthis.slider.maxLeft,\n\t\t\t\t\tthis.slider.left + ((e.pageX||this.pointer.left) - this.pointer.left)\n\t\t\t\t)\n\t\t\t);\n\t\t\tvar top = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.min(\n\t\t\t\t\tthis.slider.maxTop,\n\t\t\t\t\tthis.slider.top + ((e.pageY||this.pointer.top) - this.pointer.top)\n\t\t\t\t)\n\t\t\t);\n\t\t\tthis.slider.knob.left = left + 'px';\n\t\t\tthis.slider.knob.top = top + 'px';\n\t\t\tif (this.slider.callLeft) {\n\t\t\t\tthis.color[this.slider.callLeft].call(this.color, left/100);\n\t\t\t}\n\t\t\tif (this.slider.callTop) {\n\t\t\t\tthis.color[this.slider.callTop].call(this.color, top/100);\n\t\t\t}\n\t\t\tthis.previewColor();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeColor',\n\t\t\t\tcolor: this.color\n\t\t\t});\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\tmouseup: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t$(document).off({\n\t\t\t\tmousemove: this.mousemove,\n\t\t\t\tmouseup: this.mouseup\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t$.fn.colorpicker = function ( option ) {\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('colorpicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('colorpicker', (data = new Colorpicker(this, $.extend({}, $.fn.colorpicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option === 'string') data[option]();\n\t\t});\n\t};\n\n\t$.fn.colorpicker.defaults = {\n\t};\n\t\n\t$.fn.colorpicker.Constructor = Colorpicker;\n\t\n\tvar CPGlobal = {\n\t\n\t\t// translate a format from Color object to a string\n\t\ttranslateFormats: {\n\t\t\t'rgb': function(){\n\t\t\t\tvar rgb = this.color.toRGB();\n\t\t\t\treturn 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')';\n\t\t\t},\n\t\t\t\n\t\t\t'rgba': function(){\n\t\t\t\tvar rgb = this.color.toRGB();\n\t\t\t\treturn 'rgba('+rgb.r+','+rgb.g+','+rgb.b+','+rgb.a+')';\n\t\t\t},\n\t\t\t\n\t\t\t'hsl': function(){\n\t\t\t\tvar hsl = this.color.toHSL();\n\t\t\t\treturn 'hsl('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%)';\n\t\t\t},\n\t\t\t\n\t\t\t'hsla': function(){\n\t\t\t\tvar hsl = this.color.toHSL();\n\t\t\t\treturn 'hsla('+Math.round(hsl.h*360)+','+Math.round(hsl.s*100)+'%,'+Math.round(hsl.l*100)+'%,'+hsl.a+')';\n\t\t\t},\n\t\t\t\n\t\t\t'hex': function(){\n\t\t\t\treturn  this.color.toHex();\n\t\t\t}\n\t\t},\n\t\t\n\t\tsliders: {\n\t\t\tsaturation: {\n\t\t\t\tmaxLeft: 100,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: 'setSaturation',\n\t\t\t\tcallTop: 'setLightness'\n\t\t\t},\n\t\t\t\n\t\t\thue: {\n\t\t\t\tmaxLeft: 0,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: false,\n\t\t\t\tcallTop: 'setHue'\n\t\t\t},\n\t\t\t\n\t\t\talpha: {\n\t\t\t\tmaxLeft: 0,\n\t\t\t\tmaxTop: 100,\n\t\t\t\tcallLeft: false,\n\t\t\t\tcallTop: 'setAlpha'\n\t\t\t}\n\t\t},\n\t\t\n\t\t// HSBtoRGB from RaphaelJS\n\t\t// https://github.com/DmitryBaranovskiy/raphael/\n\t\tRGBtoHSB: function (r, g, b, a){\n\t\t\tr /= 255;\n\t\t\tg /= 255;\n\t\t\tb /= 255;\n\n\t\t\tvar H, S, V, C;\n\t\t\tV = Math.max(r, g, b);\n\t\t\tC = V - Math.min(r, g, b);\n\t\t\tH = (C === 0 ? null :\n\t\t\t\tV == r ? (g - b) / C :\n\t\t\t\tV == g ? (b - r) / C + 2 :\n\t\t\t\t\t(r - g) / C + 4\n\t\t\t\t);\n\t\t\tH = ((H + 360) % 6) * 60 / 360;\n\t\t\tS = C === 0 ? 0 : C / V;\n\t\t\treturn {h: H||1, s: S, b: V, a: a||1};\n\t\t},\n\t\t\n\t\tHueToRGB: function (p, q, h) {\n\t\t\tif (h < 0)\n\t\t\t\th += 1;\n\t\t\telse if (h > 1)\n\t\t\t\th -= 1;\n\n\t\t\tif ((h * 6) < 1)\n\t\t\t\treturn p + (q - p) * h * 6;\n\t\t\telse if ((h * 2) < 1)\n\t\t\t\treturn q;\n\t\t\telse if ((h * 3) < 2)\n\t\t\t\treturn p + (q - p) * ((2 / 3) - h) * 6;\n\t\t\telse\n\t\t\t\treturn p;\n\t\t},\n\t\n\t\tHSLtoRGB: function (h, s, l, a)\n\t\t{\n\t\t\tif (s < 0) {\n\t\t\t\ts = 0;\n\t\t\t}\n\t\t\tvar q;\n\t\t\tif (l <= 0.5) {\n\t\t\t\tq = l * (1 + s);\n\t\t\t} else {\n\t\t\t\tq = l + s - (l * s);\n\t\t\t}\n\t\t\t\n\t\t\tvar p = 2 * l - q;\n\n\t\t\tvar tr = h + (1 / 3);\n\t\t\tvar tg = h;\n\t\t\tvar tb = h - (1 / 3);\n\n\t\t\tvar r = Math.round(CPGlobal.HueToRGB(p, q, tr) * 255);\n\t\t\tvar g = Math.round(CPGlobal.HueToRGB(p, q, tg) * 255);\n\t\t\tvar b = Math.round(CPGlobal.HueToRGB(p, q, tb) * 255);\n\t\t\treturn [r, g, b, a||1];\n\t\t},\n\t\t\n\t\t// a set of RE's that can match strings and generate color tuples.\n\t\t// from John Resig color plugin\n\t\t// https://github.com/jquery/jquery-color/\n\t\tstringParsers: [\n\t\t\t{\n\t\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t2.55 * execResult[1],\n\t\t\t\t\t\t2.55 * execResult[2],\n\t\t\t\t\t\t2.55 * execResult[3],\n\t\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\t\tspace: 'hsla',\n\t\t\t\tparse: function( execResult ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\texecResult[1]/360,\n\t\t\t\t\t\texecResult[2] / 100,\n\t\t\t\t\t\texecResult[3] / 100,\n\t\t\t\t\t\texecResult[4]\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\ttemplate: '<div class=\"colorpicker dropdown-menu\">'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-saturation\"><i><b></b></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-hue\"><i></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-alpha\"><i></i></div>'+\n\t\t\t\t\t\t\t'<div class=\"colorpicker-color\"><div /></div>'+\n\t\t\t\t\t\t'</div>'\n\t};\n\n}( window.jQuery )"
  },
  {
    "path": "target/mongo/assets/bootstrap-datepicker/css/datepicker.css",
    "content": " /*\n\tDatepicker for Bootstrap\n\tCopyright 2012 Stefan Petre\n\tLicensed under the Apache License v2.0\n\thttp://www.apache.org/licenses/LICENSE-2.0\n*/\n .datepicker { top: 0; left: 0; padding: 4px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; /*.dow { border-top: 1px solid #ddd !important; }*/ } .datepicker: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: 6px; } .datepicker: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: 7px; } .datepicker > div { display: none; } .datepicker table { width: 100%; margin: 0; } .datepicker td, .datepicker th { text-align: center; width: 20px; height: 20px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .datepicker td.day:hover { background: #eeeeee; cursor: pointer; } .datepicker td.old, .datepicker td.new { color: #999999; } .datepicker td.active, .datepicker td.active:hover { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-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(top, #0088cc, #0044cc); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); 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(enabled = false); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .datepicker td.active:hover, .datepicker td.active:hover:hover, .datepicker td.active:active, .datepicker td.active:hover:active, .datepicker td.active.active, .datepicker td.active:hover.active, .datepicker td.active.disabled, .datepicker td.active:hover.disabled, .datepicker td.active[disabled], .datepicker td.active:hover[disabled] { background-color: #0044cc; } .datepicker td.active:active, .datepicker td.active:hover:active, .datepicker td.active.active, .datepicker td.active:hover.active { background-color: #003399 \\9; } .datepicker td span { display: block; width: 47px; height: 54px; line-height: 54px; float: left; margin: 2px; cursor: pointer; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .datepicker td span:hover { background: #eeeeee; } .datepicker td span.active { background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-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(top, #0088cc, #0044cc); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); 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(enabled = false); color: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .datepicker td span.active:hover, .datepicker td span.active:active, .datepicker td span.active.active, .datepicker td span.active.disabled, .datepicker td span.active[disabled] { background-color: #0044cc; } .datepicker td span.active:active, .datepicker td span.active.active { background-color: #003399 \\9; } .datepicker td span.old { color: #999999; } .datepicker th.switch { width: 145px; } .datepicker th.next, .datepicker th.prev { font-size: 19.5px; } .datepicker thead tr:first-child th { cursor: pointer; } .datepicker thead tr:first-child th:hover { background: #eeeeee; } .input-append.date .add-on i, .input-prepend.date .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }"
  },
  {
    "path": "target/mongo/assets/bootstrap-datepicker/js/bootstrap-datepicker.js",
    "content": "/* =========================================================\n * bootstrap-datepicker.js \n * http://www.eyecon.ro/bootstrap-datepicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n \n!function( $ ) {\n\t\n\t// Picker object\n\t\n\tvar Datepicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');\n\t\tthis.picker = $(DPGlobal.template)\n\t\t\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t\t\t.on({\n\t\t\t\t\t\t\t\tclick: $.proxy(this.click, this),\n\t\t\t\t\t\t\t\tmousedown: $.proxy(this.mousedown, this)\n\t\t\t\t\t\t\t});\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on') : false;\n\t\t\n\t\tif (this.isInput) {\n\t\t\tthis.element.on({\n\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\tblur: $.proxy(this.hide, this),\n\t\t\t\tkeyup: $.proxy(this.update, this)\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.component){\n\t\t\t\tthis.component.on('click', $.proxy(this.show, this));\n\t\t\t} else {\n\t\t\t\tthis.element.on('click', $.proxy(this.show, this));\n\t\t\t}\n\t\t}\n\t\tthis.minViewMode = options.minViewMode||this.element.data('date-minviewmode')||0;\n\t\tif (typeof this.minViewMode === 'string') {\n\t\t\tswitch (this.minViewMode) {\n\t\t\t\tcase 'months':\n\t\t\t\t\tthis.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'years':\n\t\t\t\t\tthis.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.minViewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.viewMode = options.viewMode||this.element.data('date-viewmode')||0;\n\t\tif (typeof this.viewMode === 'string') {\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 'months':\n\t\t\t\t\tthis.viewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'years':\n\t\t\t\t\tthis.viewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.viewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.startViewMode = this.viewMode;\n\t\tthis.weekStart = options.weekStart||this.element.data('date-weekstart')||0;\n\t\tthis.weekEnd = this.weekStart === 0 ? 6 : this.weekStart - 1;\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\t\tthis.update();\n\t\tthis.showMode();\n\t};\n\t\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\t\t\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (e ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).on('mousedown', $.proxy(this.hide, this));\n\t\t\t}\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\t\t\n\t\thide: function(){\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tthis.viewMode = this.startViewMode;\n\t\t\tthis.showMode();\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off('mousedown', this.hide);\n\t\t\t}\n\t\t\tthis.set();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\t\t\n\t\tset: function() {\n\t\t\tvar formated = DPGlobal.formatDate(this.date, this.format);\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', formated);\n\t\t\t\t}\n\t\t\t\tthis.element.data('date', formated);\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', formated);\n\t\t\t}\n\t\t},\n\t\t\n\t\tsetValue: function(newDate) {\n\t\t\tif (typeof newDate === 'string') {\n\t\t\t\tthis.date = DPGlobal.parseDate(newDate, this.format);\n\t\t\t} else {\n\t\t\t\tthis.date = new Date(newDate);\n\t\t\t}\n\t\t\tthis.set();\n\t\t\tthis.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);\n\t\t\tthis.fill();\n\t\t},\n\t\t\n\t\tplace: function(){\n\t\t\tvar offset = this.component ? this.component.offset() : this.element.offset();\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: offset.left\n\t\t\t});\n\t\t},\n\t\t\n\t\tupdate: function(newDate){\n\t\t\tthis.date = DPGlobal.parseDate(\n\t\t\t\ttypeof newDate === 'string' ? newDate : (this.isInput ? this.element.prop('value') : this.element.data('date')),\n\t\t\t\tthis.format\n\t\t\t);\n\t\t\tthis.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);\n\t\t\tthis.fill();\n\t\t},\n\t\t\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.weekStart;\n\t\t\tvar html = '<tr>';\n\t\t\twhile (dowCnt < this.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+DPGlobal.dates.daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\t\t\n\t\tfillMonths: function(){\n\t\t\tvar html = '';\n\t\t\tvar i = 0\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+DPGlobal.dates.monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').append(html);\n\t\t},\n\t\t\n\t\tfill: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getFullYear(),\n\t\t\t\tmonth = d.getMonth(),\n\t\t\t\tcurrentDate = this.date.valueOf();\n\t\t\tthis.picker.find('.datepicker-days th:eq(1)')\n\t\t\t\t\t\t.text(DPGlobal.dates.months[month]+' '+year);\n\t\t\tvar prevMonth = new Date(year, month-1, 28,0,0,0,0),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());\n\t\t\tprevMonth.setDate(day);\n\t\t\tprevMonth.setDate(day - (prevMonth.getDay() - this.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setDate(nextMonth.getDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\thtml = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getDay() === this.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t}\n\t\t\t\tclsName = '';\n\t\t\t\tif (prevMonth.getMonth() < month) {\n\t\t\t\t\tclsName += ' old';\n\t\t\t\t} else if (prevMonth.getMonth() > month) {\n\t\t\t\t\tclsName += ' new';\n\t\t\t\t}\n\t\t\t\tif (prevMonth.valueOf() === currentDate) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\thtml.push('<td class=\"day'+clsName+'\">'+prevMonth.getDate() + '</td>');\n\t\t\t\tif (prevMonth.getDay() === this.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setDate(prevMonth.getDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\t\t\tvar currentYear = this.date.getFullYear();\n\t\t\t\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear === year) {\n\t\t\t\tmonths.eq(this.date.getMonth()).addClass('active');\n\t\t\t}\n\t\t\t\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i === -1 || i === 10 ? ' old' : '')+(currentYear === year ? ' active' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\t\t\n\t\tclick: function(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th');\n\t\t\tif (target.length === 1) {\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tthis.viewDate['set'+DPGlobal.modes[this.viewMode].navFnc].call(\n\t\t\t\t\t\t\t\t\tthis.viewDate,\n\t\t\t\t\t\t\t\t\tthis.viewDate['get'+DPGlobal.modes[this.viewMode].navFnc].call(this.viewDate) + \n\t\t\t\t\t\t\t\t\tDPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\tvar month = target.parent().find('span').index(target);\n\t\t\t\t\t\t\tthis.viewDate.setMonth(month);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar year = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\tthis.viewDate.setFullYear(year);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.viewMode !== 0) {\n\t\t\t\t\t\t\tthis.date = new Date(this.viewDate);\n\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\t\t\t\tdate: this.date,\n\t\t\t\t\t\t\t\tviewMode: DPGlobal.modes[this.viewMode].clsName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tvar month = this.viewDate.getMonth();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar year = this.viewDate.getFullYear();\n\t\t\t\t\t\t\tthis.date = new Date(year, month, day,0,0,0,0);\n\t\t\t\t\t\t\tthis.viewDate = new Date(year, month, Math.min(28, day),0,0,0,0);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\tthis.set();\n\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\t\t\t\tdate: this.date,\n\t\t\t\t\t\t\t\tviewMode: DPGlobal.modes[this.viewMode].clsName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\tmousedown: function(e){\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t\t\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tthis.viewMode = Math.max(this.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t}\n\t};\n\t\n\t$.fn.datepicker = function ( option, val ) {\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option === 'string') data[option](val);\n\t\t});\n\t};\n\n\t$.fn.datepicker.defaults = {\n\t};\n\t$.fn.datepicker.Constructor = Datepicker;\n\t\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tdates:{\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t\t},\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\n\t\t},\n\t\tparseFormat: function(format){\n\t\t\tvar separator = format.match(/[.\\/\\-\\s].*?/),\n\t\t\t\tparts = format.split(/\\W+/);\n\t\t\tif (!separator || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separator: separator, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format) {\n\t\t\tvar parts = date.split(format.separator),\n\t\t\t\tdate = new Date(),\n\t\t\t\tval;\n\t\t\tdate.setHours(0);\n\t\t\tdate.setMinutes(0);\n\t\t\tdate.setSeconds(0);\n\t\t\tdate.setMilliseconds(0);\n\t\t\tif (parts.length === format.parts.length) {\n\t\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10)||1;\n\t\t\t\t\tswitch(format.parts[i]) {\n\t\t\t\t\t\tcase 'dd':\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setDate(val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mm':\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate.setMonth(val - 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'yy':\n\t\t\t\t\t\t\tdate.setFullYear(2000 + val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'yyyy':\n\t\t\t\t\t\t\tdate.setFullYear(val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format){\n\t\t\tvar val = {\n\t\t\t\td: date.getDate(),\n\t\t\t\tm: date.getMonth() + 1,\n\t\t\t\tyy: date.getFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tvar date = [];\n\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join(format.separator);\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">&lsaquo;</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">&rsaquo;</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker dropdown-menu\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n}( window.jQuery )"
  },
  {
    "path": "target/mongo/assets/bootstrap-daterangepicker/date.js",
    "content": "/**\n * @version: 1.0 Alpha-1\n * @author: Coolite Inc. http://www.coolite.com/\n * @date: 2008-05-13\n * @copyright: Copyright (c) 2006-2008, Coolite Inc. (http://www.coolite.com/). All rights reserved.\n * @license: Licensed under The MIT License. See http://www.datejs.com/license/. \n * @website: http://www.datejs.com/\n */\nDate.CultureInfo={name:\"en-US\",englishName:\"English (United States)\",nativeName:\"English (United States)\",dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbreviatedDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],shortestDayNames:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],firstLetterDayNames:[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbreviatedMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],amDesignator:\"AM\",pmDesignator:\"PM\",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:\"mdy\",formatPatterns:{shortDate:\"M/d/yyyy\",longDate:\"dddd, MMMM dd, yyyy\",shortTime:\"h:mm tt\",longTime:\"h:mm:ss tt\",fullDateTime:\"dddd, MMMM dd, yyyy h:mm:ss tt\",sortableDateTime:\"yyyy-MM-ddTHH:mm:ss\",universalSortableDateTime:\"yyyy-MM-dd HH:mm:ssZ\",rfc1123:\"ddd, dd MMM yyyy HH:mm:ss GMT\",monthDay:\"MMMM dd\",yearMonth:\"MMMM, yyyy\"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|aft(er)?|from|hence)/i,subtract:/^(\\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a(?!u|p)|p)/i},timezones:[{name:\"UTC\",offset:\"-000\"},{name:\"GMT\",offset:\"-000\"},{name:\"EST\",offset:\"-0500\"},{name:\"EDT\",offset:\"-0400\"},{name:\"CST\",offset:\"-0600\"},{name:\"CDT\",offset:\"-0500\"},{name:\"MST\",offset:\"-0700\"},{name:\"MDT\",offset:\"-0600\"},{name:\"PST\",offset:\"-0800\"},{name:\"PDT\",offset:\"-0700\"}]};\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,p=function(s,l){if(!l){l=2;}\nreturn(\"000\"+s).slice(l*-1);};$P.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};$P.setTimeToNow=function(){var n=new Date();this.setHours(n.getHours());this.setMinutes(n.getMinutes());this.setSeconds(n.getSeconds());this.setMilliseconds(n.getMilliseconds());return this;};$D.today=function(){return new Date().clearTime();};$D.compare=function(date1,date2){if(isNaN(date1)||isNaN(date2)){throw new Error(date1+\" - \"+date2);}else if(date1 instanceof Date&&date2 instanceof Date){return(date1<date2)?-1:(date1>date2)?1:0;}else{throw new TypeError(date1+\" - \"+date2);}};$D.equals=function(date1,date2){return(date1.compareTo(date2)===0);};$D.getDayNumberFromName=function(name){var n=$C.dayNames,m=$C.abbreviatedDayNames,o=$C.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s||o[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.getMonthNumberFromName=function(name){var n=$C.monthNames,m=$C.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.isLeapYear=function(year){return((year%4===0&&year%100!==0)||year%400===0);};$D.getDaysInMonth=function(year,month){return[31,($D.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};$D.getTimezoneAbbreviation=function(offset){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].offset===offset){return z[i].name;}}\nreturn null;};$D.getTimezoneOffset=function(name){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].name===name.toUpperCase()){return z[i].offset;}}\nreturn null;};$P.clone=function(){return new Date(this.getTime());};$P.compareTo=function(date){return Date.compare(this,date);};$P.equals=function(date){return Date.equals(this,date||new Date());};$P.between=function(start,end){return this.getTime()>=start.getTime()&&this.getTime()<=end.getTime();};$P.isAfter=function(date){return this.compareTo(date||new Date())===1;};$P.isBefore=function(date){return(this.compareTo(date||new Date())===-1);};$P.isToday=function(){return this.isSameDay(new Date());};$P.isSameDay=function(date){return this.clone().clearTime().equals(date.clone().clearTime());};$P.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};$P.addSeconds=function(value){return this.addMilliseconds(value*1000);};$P.addMinutes=function(value){return this.addMilliseconds(value*60000);};$P.addHours=function(value){return this.addMilliseconds(value*3600000);};$P.addDays=function(value){this.setDate(this.getDate()+value);return this;};$P.addWeeks=function(value){return this.addDays(value*7);};$P.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,$D.getDaysInMonth(this.getFullYear(),this.getMonth())));return this;};$P.addYears=function(value){return this.addMonths(value*12);};$P.add=function(config){if(typeof config==\"number\"){this._orient=config;return this;}\nvar x=config;if(x.milliseconds){this.addMilliseconds(x.milliseconds);}\nif(x.seconds){this.addSeconds(x.seconds);}\nif(x.minutes){this.addMinutes(x.minutes);}\nif(x.hours){this.addHours(x.hours);}\nif(x.weeks){this.addWeeks(x.weeks);}\nif(x.months){this.addMonths(x.months);}\nif(x.years){this.addYears(x.years);}\nif(x.days){this.addDays(x.days);}\nreturn this;};var $y,$m,$d;$P.getWeek=function(){var a,b,c,d,e,f,g,n,s,w;$y=(!$y)?this.getFullYear():$y;$m=(!$m)?this.getMonth()+1:$m;$d=(!$d)?this.getDate():$d;if($m<=2){a=$y-1;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=0;f=$d-1+(31*($m-1));}else{a=$y;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=s+1;f=$d+((153*($m-3)+2)/5)+58+s;}\ng=(a+b)%7;d=(f+g-e)%7;n=(f+3-d)|0;if(n<0){w=53-((g-s)/5|0);}else if(n>364+s){w=1;}else{w=(n/7|0)+1;}\n$y=$m=$d=null;return w;};$P.getISOWeek=function(){$y=this.getUTCFullYear();$m=this.getUTCMonth()+1;$d=this.getUTCDate();return p(this.getWeek());};$P.setWeek=function(n){return this.moveToDayOfWeek(1).addWeeks(n-this.getWeek());};$D._validate=function(n,min,max,name){if(typeof n==\"undefined\"){return false;}else if(typeof n!=\"number\"){throw new TypeError(n+\" is not a Number.\");}else if(n<min||n>max){throw new RangeError(n+\" is not a valid value for \"+name+\".\");}\nreturn true;};$D.validateMillisecond=function(value){return $D._validate(value,0,999,\"millisecond\");};$D.validateSecond=function(value){return $D._validate(value,0,59,\"second\");};$D.validateMinute=function(value){return $D._validate(value,0,59,\"minute\");};$D.validateHour=function(value){return $D._validate(value,0,23,\"hour\");};$D.validateDay=function(value,year,month){return $D._validate(value,1,$D.getDaysInMonth(year,month),\"day\");};$D.validateMonth=function(value){return $D._validate(value,0,11,\"month\");};$D.validateYear=function(value){return $D._validate(value,0,9999,\"year\");};$P.set=function(config){if($D.validateMillisecond(config.millisecond)){this.addMilliseconds(config.millisecond-this.getMilliseconds());}\nif($D.validateSecond(config.second)){this.addSeconds(config.second-this.getSeconds());}\nif($D.validateMinute(config.minute)){this.addMinutes(config.minute-this.getMinutes());}\nif($D.validateHour(config.hour)){this.addHours(config.hour-this.getHours());}\nif($D.validateMonth(config.month)){this.addMonths(config.month-this.getMonth());}\nif($D.validateYear(config.year)){this.addYears(config.year-this.getFullYear());}\nif($D.validateDay(config.day,this.getFullYear(),this.getMonth())){this.addDays(config.day-this.getDate());}\nif(config.timezone){this.setTimezone(config.timezone);}\nif(config.timezoneOffset){this.setTimezoneOffset(config.timezoneOffset);}\nif(config.week&&$D._validate(config.week,0,53,\"week\")){this.setWeek(config.week);}\nreturn this;};$P.moveToFirstDayOfMonth=function(){return this.set({day:1});};$P.moveToLastDayOfMonth=function(){return this.set({day:$D.getDaysInMonth(this.getFullYear(),this.getMonth())});};$P.moveToNthOccurrence=function(dayOfWeek,occurrence){var shift=0;if(occurrence>0){shift=occurrence-1;}\nelse if(occurrence===-1){this.moveToLastDayOfMonth();if(this.getDay()!==dayOfWeek){this.moveToDayOfWeek(dayOfWeek,-1);}\nreturn this;}\nreturn this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek,+1).addWeeks(shift);};$P.moveToDayOfWeek=function(dayOfWeek,orient){var diff=(dayOfWeek-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};$P.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};$P.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/86400000)+1;};$P.getTimezone=function(){return $D.getTimezoneAbbreviation(this.getUTCOffset());};$P.setTimezoneOffset=function(offset){var here=this.getTimezoneOffset(),there=Number(offset)*-6/10;return this.addMinutes(there-here);};$P.setTimezone=function(offset){return this.setTimezoneOffset($D.getTimezoneOffset(offset));};$P.hasDaylightSavingTime=function(){return(Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.isDaylightSavingTime=function(){return(this.hasDaylightSavingTime()&&new Date().getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r.charAt(0)+r.substr(2);}else{r=(n+10000).toString();return\"+\"+r.substr(1);}};$P.getElapsed=function(date){return(date||new Date())-this;};if(!$P.toISOString){$P.toISOString=function(){function f(n){return n<10?'0'+n:n;}\nreturn'\"'+this.getUTCFullYear()+'-'+\nf(this.getUTCMonth()+1)+'-'+\nf(this.getUTCDate())+'T'+\nf(this.getUTCHours())+':'+\nf(this.getUTCMinutes())+':'+\nf(this.getUTCSeconds())+'Z\"';};}\n$P._toString=$P.toString;$P.toString=function(format){var x=this;if(format&&format.length==1){var c=$C.formatPatterns;x.t=x.toString;switch(format){case\"d\":return x.t(c.shortDate);case\"D\":return x.t(c.longDate);case\"F\":return x.t(c.fullDateTime);case\"m\":return x.t(c.monthDay);case\"r\":return x.t(c.rfc1123);case\"s\":return x.t(c.sortableDateTime);case\"t\":return x.t(c.shortTime);case\"T\":return x.t(c.longTime);case\"u\":return x.t(c.universalSortableDateTime);case\"y\":return x.t(c.yearMonth);}}\nvar ord=function(n){switch(n*1){case 1:case 21:case 31:return\"st\";case 2:case 22:return\"nd\";case 3:case 23:return\"rd\";default:return\"th\";}};return format?format.replace(/(\\\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(m){if(m.charAt(0)===\"\\\\\"){return m.replace(\"\\\\\",\"\");}\nx.h=x.getHours;switch(m){case\"hh\":return p(x.h()<13?(x.h()===0?12:x.h()):(x.h()-12));case\"h\":return x.h()<13?(x.h()===0?12:x.h()):(x.h()-12);case\"HH\":return p(x.h());case\"H\":return x.h();case\"mm\":return p(x.getMinutes());case\"m\":return x.getMinutes();case\"ss\":return p(x.getSeconds());case\"s\":return x.getSeconds();case\"yyyy\":return p(x.getFullYear(),4);case\"yy\":return p(x.getFullYear());case\"dddd\":return $C.dayNames[x.getDay()];case\"ddd\":return $C.abbreviatedDayNames[x.getDay()];case\"dd\":return p(x.getDate());case\"d\":return x.getDate();case\"MMMM\":return $C.monthNames[x.getMonth()];case\"MMM\":return $C.abbreviatedMonthNames[x.getMonth()];case\"MM\":return p((x.getMonth()+1));case\"M\":return x.getMonth()+1;case\"t\":return x.h()<12?$C.amDesignator.substring(0,1):$C.pmDesignator.substring(0,1);case\"tt\":return x.h()<12?$C.amDesignator:$C.pmDesignator;case\"S\":return ord(x.getDate());default:return m;}}):this._toString();};}());\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,$N=Number.prototype;$P._orient=+1;$P._nth=null;$P._is=false;$P._same=false;$P._isSecond=false;$N._dateElement=\"day\";$P.next=function(){this._orient=+1;return this;};$D.next=function(){return $D.today().next();};$P.last=$P.prev=$P.previous=function(){this._orient=-1;return this;};$D.last=$D.prev=$D.previous=function(){return $D.today().last();};$P.is=function(){this._is=true;return this;};$P.same=function(){this._same=true;this._isSecond=false;return this;};$P.today=function(){return this.same().day();};$P.weekday=function(){if(this._is){this._is=false;return(!this.is().sat()&&!this.is().sun());}\nreturn false;};$P.at=function(time){return(typeof time===\"string\")?$D.parse(this.toString(\"d\")+\" \"+time):this.set(time);};$N.fromNow=$N.after=function(date){var c={};c[this._dateElement]=this;return((!date)?new Date():date.clone()).add(c);};$N.ago=$N.before=function(date){var c={};c[this._dateElement]=this*-1;return((!date)?new Date():date.clone()).add(c);};var dx=(\"sunday monday tuesday wednesday thursday friday saturday\").split(/\\s/),mx=(\"january february march april may june july august september october november december\").split(/\\s/),px=(\"Millisecond Second Minute Hour Day Week Month Year\").split(/\\s/),pxf=(\"Milliseconds Seconds Minutes Hours Date Week Month FullYear\").split(/\\s/),nth=(\"final first second third fourth fifth\").split(/\\s/),de;$P.toObject=function(){var o={};for(var i=0;i<px.length;i++){o[px[i].toLowerCase()]=this[\"get\"+pxf[i]]();}\nreturn o;};$D.fromObject=function(config){config.week=null;return Date.today().set(config);};var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}\nif(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1);}\nthis._isSecond=false;var ntemp=this._nth;this._nth=null;var temp=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(n,ntemp);if(this>temp){throw new RangeError($D.getDayName(n)+\" does not occur \"+ntemp+\" times in the month of \"+$D.getMonthName(temp.getMonth())+\" \"+temp.getFullYear()+\".\");}\nreturn this;}\nreturn this.moveToDayOfWeek(n,this._orient);};};var sdf=function(n){return function(){var t=$D.today(),shift=n-t.getDay();if(n===0&&$C.firstDayOfWeek===1&&t.getDay()!==0){shift=shift+7;}\nreturn t.addDays(shift);};};for(var i=0;i<dx.length;i++){$D[dx[i].toUpperCase()]=$D[dx[i].toUpperCase().substring(0,3)]=i;$D[dx[i]]=$D[dx[i].substring(0,3)]=sdf(i);$P[dx[i]]=$P[dx[i].substring(0,3)]=df(i);}\nvar mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}\nreturn this.moveToMonth(n,this._orient);};};var smf=function(n){return function(){return $D.today().set({month:n,day:1});};};for(var j=0;j<mx.length;j++){$D[mx[j].toUpperCase()]=$D[mx[j].toUpperCase().substring(0,3)]=j;$D[mx[j]]=$D[mx[j].substring(0,3)]=smf(j);$P[mx[j]]=$P[mx[j].substring(0,3)]=mf(j);}\nvar ef=function(j){return function(){if(this._isSecond){this._isSecond=false;return this;}\nif(this._same){this._same=this._is=false;var o1=this.toObject(),o2=(arguments[0]||new Date()).toObject(),v=\"\",k=j.toLowerCase();for(var m=(px.length-1);m>-1;m--){v=px[m].toLowerCase();if(o1[v]!=o2[v]){return false;}\nif(k==v){break;}}\nreturn true;}\nif(j.substring(j.length-1)!=\"s\"){j+=\"s\";}\nreturn this[\"add\"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$P[de]=$P[de+\"s\"]=ef(px[k]);$N[de]=$N[de+\"s\"]=nf(de);}\n$P._ss=ef(\"Second\");var nthfn=function(n){return function(dayOfWeek){if(this._same){return this._ss(arguments[0]);}\nif(dayOfWeek||dayOfWeek===0){return this.moveToNthOccurrence(dayOfWeek,n);}\nthis._nth=n;if(n===2&&(dayOfWeek===undefined||dayOfWeek===null)){this._isSecond=true;return this.addSeconds(this._orient);}\nreturn this;};};for(var l=0;l<nth.length;l++){$P[nth[l]]=(l===0)?nthfn(-1):nthfn(l);}}());\n(function(){Date.Parsing={Exception:function(s){this.message=\"Parse error at '\"+s.substring(0,10)+\" ...'\";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp(\"^\\s*\"+s+\"\\s*\"))(s);};},stoken:function(s){return _.rtoken(new RegExp(\"^\"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}\nbreak;}\nreturn[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}\nreturn[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}\nthrow new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}\nreturn rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}\nif(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){r=null;}\nif(r){return r;}}\nthrow new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;if(px.length==1){return px[0];}\nreturn function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}\nrx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}\ns=q[1];}\nif(!r){throw new $P.Exception(s);}\nif(q){throw new $P.Exception(q[1]);}\nif(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}\nreturn[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}\nrx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}\nif(!last&&q[1].length===0){last=true;}\nif(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}\np=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}\nif(rx[1].length<best[1].length){best=rx;}\nif(best[1].length===0){break;}}\nif(best[0].length===0){return best;}\nif(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}\nbest[1]=q[1];}\nreturn best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}\nreturn rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}\nif(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx=\"optional not ignore cache\".split(/\\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}\nvar _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx=\"each any all\".split(/\\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo;var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}\nreturn rx;};$D.Grammar={};$D.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\\d\\+\\-]/g,\"\");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\\d+/)[0]);};},month:function(s){return function(){this.month=(s.length==3)?\"jan feb mar apr may jun jul aug sep oct nov dec\".indexOf(s)/4:Number(s)-1;};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<$C.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case\"yesterday\":this.days=-1;break;case\"tomorrow\":this.days=1;break;case\"today\":this.days=0;break;case\"now\":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}\nvar now=new Date();if((this.hour||this.minute)&&(!this.month&&!this.year&&!this.day)){this.day=now.getDate();}\nif(!this.year){this.year=now.getFullYear();}\nif(!this.month&&this.month!==0){this.month=now.getMonth();}\nif(!this.day){this.day=1;}\nif(!this.hour){this.hour=0;}\nif(!this.minute){this.minute=0;}\nif(!this.second){this.second=0;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.day>$D.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+\" is not a valid value for days.\");}\nvar r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}\nreturn r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}\nfor(var i=0;i<x.length;i++){if(typeof x[i]==\"function\"){x[i].call(this);}}\nvar today=$D.today();if(this.now&&!this.unit&&!this.operator){return new Date();}else if(this.now){today=new Date();}\nvar expression=!!(this.days&&this.days!==null||this.orient||this.operator);var gap,mod,orient;orient=((this.orient==\"past\"||this.operator==\"subtract\")?-1:1);if(!this.now&&\"hour minute second\".indexOf(this.unit)!=-1){today.setTimeToNow();}\nif(this.month||this.month===0){if(\"year day hour minute second\".indexOf(this.unit)!=-1){this.value=this.month+1;this.month=null;expression=true;}}\nif(!expression&&this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(!this.month){this.month=temp.getMonth();}\nthis.year=temp.getFullYear();}\nif(expression&&this.weekday&&this.unit!=\"month\"){this.unit=\"day\";gap=($D.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}\nif(this.month&&this.unit==\"day\"&&this.operator){this.value=(this.month+1);this.month=null;}\nif(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1;}\nif(this.month&&!this.day&&this.value){today.set({day:this.value*1});if(!expression){this.day=this.value*1;}}\nif(!this.month&&this.value&&this.unit==\"month\"&&!this.now){this.month=this.value;expression=true;}\nif(expression&&(this.month||this.month===0)&&this.unit!=\"year\"){this.unit=\"month\";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}\nif(!this.unit){this.unit=\"day\";}\nif(!this.value&&this.operator&&this.operator!==null&&this[this.unit+\"s\"]&&this[this.unit+\"s\"]!==null){this[this.unit+\"s\"]=this[this.unit+\"s\"]+((this.operator==\"add\")?1:-1)+(this.value||0)*orient;}else if(this[this.unit+\"s\"]==null||this.operator!=null){if(!this.value){this.value=1;}\nthis[this.unit+\"s\"]=this.value*orient;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(temp.getMonth()!==today.getMonth()){this.month=temp.getMonth();}}\nif((this.month||this.month===0)&&!this.day){this.day=1;}\nif(!this.orient&&!this.operator&&this.unit==\"week\"&&this.value&&!this.day&&!this.month){return Date.today().setWeek(this.value);}\nif(expression&&this.timezone&&this.day&&this.days){this.day=this.days;}\nreturn(expression)?today.add(this):today.set(this);}};var _=$D.Parsing.Operators,g=$D.Grammar,t=$D.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\\s\\-\\.\\,\\/\\x27]+)/);g.timePartDelimiter=_.stoken(\":\");g.whiteSpace=_.rtoken(/^\\s*/);g.generalDelimiter=_.rtoken(/^(([\\s\\,]|at|@|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=$C.regexPatterns;var kx=keys.split(/\\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}\nfn=_C[keys]=_.any.apply(null,px);}\nreturn fn;};g.ctoken2=function(key){return _.rtoken($C.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.m,g.s],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2(\"shortMeridian\"),t.meridian));g.tt=_.cache(_.process(g.ctoken2(\"longMeridian\"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2(\"timezone\"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken(\"T\"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1]|\\d)/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1])/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken(\"sun mon tue wed thu fri sat\"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d|\\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken(\"jan feb mar apr may jun jul aug sep oct nov dec\"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\\d\\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\\d\\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\\d\\d?\\d?\\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\\d\\d\\d\\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2(\"timeContext\")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken(\"past future\"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken(\"add subtract\"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken(\"yesterday tomorrow today now\"),t.rday);g.unit=_.process(g.ctoken(\"second minute hour day week month year\"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\\d\\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\\D/g,\"\");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[$C.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw $D.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}\nreturn _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats([\"\\\"yyyy-MM-ddTHH:mm:ssZ\\\"\",\"yyyy-MM-ddTHH:mm:ssZ\",\"yyyy-MM-ddTHH:mm:ssz\",\"yyyy-MM-ddTHH:mm:ss\",\"yyyy-MM-ddTHH:mmZ\",\"yyyy-MM-ddTHH:mmz\",\"yyyy-MM-ddTHH:mm\",\"ddd, MMM dd, yyyy H:mm:ss tt\",\"ddd MMM d yyyy HH:mm:ss zzz\",\"MMddyyyy\",\"ddMMyyyy\",\"Mddyyyy\",\"ddMyyyy\",\"Mdyyyy\",\"dMyyyy\",\"yyyy\",\"Mdyy\",\"dMyy\",\"d\"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}\nreturn g._start.call({},s);};$D._parse=$D.parse;$D.parse=function(s){var r=null;if(!s){return null;}\nif(s instanceof Date){return s;}\ntry{r=$D.Grammar.start.call({},s.replace(/^\\s*(\\S*(\\s+\\S+)*)\\s*$/,\"$1\"));}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};$D.getParseFunction=function(fx){var fn=$D.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};};$D.parseExact=function(s,fx){return $D.getParseFunction(fx)(s);};}());"
  },
  {
    "path": "target/mongo/assets/bootstrap-daterangepicker/daterangepicker.css",
    "content": ".daterangepicker.dropdown-menu {\n  max-width: none;\n}\n\n.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {\n  float: left;\n  margin: 4px;\n}\n\n.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {\n  float: right;\n  margin: 4px;\n}\n\n.daterangepicker .ranges {\n  width: 160px;\n  text-align: left;\n}\n\n.daterangepicker .ranges .range_inputs>div {\n  float: left;\n}\n\n.daterangepicker .ranges .range_inputs>div:nth-child(2) {\n  padding-left: 11px;\n}\n\n.daterangepicker .calendar {\n  display: none;\n  max-width: 230px;\n}\n\n.daterangepicker .calendar th, .daterangepicker .calendar td {\n  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n  white-space: nowrap;\n  text-align: center;\n}\n\n.daterangepicker .ranges label {\n  color: #333;\n  font-size: 11px;\n  margin-bottom: 2px;\n  text-transform: uppercase;\n  text-shadow: 1px 1px 0 #fff;\n}\n\n.daterangepicker .ranges input {\n  font-size: 11px;\n}\n\n.daterangepicker .ranges ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.daterangepicker .ranges li {\n  font-size: 13px;\n  background: #f5f5f5;\n  border: 1px solid #f5f5f5;\n  color: #08c;\n  padding: 3px 12px;\n  margin-bottom: 8px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  cursor: pointer;\n}\n\n.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {\n  background: #08c;\n  border: 1px solid #08c;\n  color: #fff;\n}\n\n.daterangepicker .calendar {\n  border: 1px solid #ddd;\n  padding: 4px;\n  border-radius: 4px;\n  background: #fff;\n}\n\n.daterangepicker {\n  position: absolute;\n  background: #fff;\n  top: 100px;\n  left: 20px;\n  padding: 4px;\n  margin-top: 1px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n\n.daterangepicker.opensleft:before {\n  position: absolute;\n  top: -7px;\n  right: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.daterangepicker.opensleft:after {\n  position: absolute;\n  top: -6px;\n  right: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.daterangepicker.opensright:before {\n  position: absolute;\n  top: -7px;\n  left: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.daterangepicker.opensright:after {\n  position: absolute;\n  top: -6px;\n  left: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.daterangepicker table {\n  width: 100%;\n  margin: 0;\n}\n\n.daterangepicker td, .daterangepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  cursor: pointer;\n  white-space: nowrap;\n}\n\n.daterangepicker td.off {\n  color: #999;\n}\n.daterangepicker td.disabled {\n  color: #999;\n}\n\n.daterangepicker td.available:hover, .daterangepicker th.available:hover {\n  background: #eee;\n}\n\n.daterangepicker td.active, .daterangepicker td.active:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.daterangepicker td.week, .daterangepicker th.week {\n    font-size: 80%;\n    color: #ccc;\n}\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-daterangepicker/daterangepicker.js",
    "content": "/**\n* @version: 1.0.1\n* @author: Dan Grossman http://www.dangrossman.info/\n* @date: 2012-08-20\n* @copyright: Copyright (c) 2012 Dan Grossman. All rights reserved.\n* @license: Licensed under Apache License v2.0. See http://www.apache.org/licenses/LICENSE-2.0\n* @website: http://www.improvely.com/\n*/\n!function ($) {\n\n    var DateRangePicker = function (element, options, cb) {\n        var hasOptions = typeof options == 'object'\n        var localeObject;\n\n        //state\n        this.startDate = Date.today();\n        this.endDate = Date.today();\n        this.minDate = false;\n        this.maxDate = false;\n        this.changed = false;\n        this.ranges = {};\n        this.opens = 'right';\n        this.cb = function () { };\n        this.format = 'MM/dd/yyyy';\n        this.separator = ' - ';\n        this.showWeekNumbers = false;\n        this.buttonClasses = ['btn-success'];\n        this.locale = {\n            applyLabel: 'Apply',\n            fromLabel: 'From',\n            toLabel: 'To',\n            weekLabel: 'W',\n            customRangeLabel: 'Custom Range',\n            daysOfWeek: Date.CultureInfo.shortestDayNames,\n            monthNames: Date.CultureInfo.monthNames,\n            firstDay: 0\n        };\n\n        localeObject = this.locale;\n\n        this.leftCalendar = {\n            month: Date.today().set({ day: 1, month: this.startDate.getMonth(), year: this.startDate.getFullYear() }),\n            calendar: Array()\n        };\n\n        this.rightCalendar = {\n            month: Date.today().set({ day: 1, month: this.endDate.getMonth(), year: this.endDate.getFullYear() }),\n            calendar: Array()\n        };\n\n        // by default, the daterangepicker element is placed at the bottom of HTML body\n        this.parentEl = 'body';\n\n        //element that triggered the date range picker\n        this.element = $(element);\n\n        if (this.element.hasClass('pull-right'))\n            this.opens = 'left';\n\n        if (this.element.is('input')) {\n            this.element.on({\n                click: $.proxy(this.show, this),\n                focus: $.proxy(this.show, this)\n            });\n        } else {\n            this.element.on('click', $.proxy(this.show, this));\n        }\n\n        if (hasOptions) {\n            if(typeof options.locale == 'object') {\n                $.each(localeObject, function (property, value) {\n                    localeObject[property] = options.locale[property] || value;\n                });\n            }\n        }\n\n        var DRPTemplate = '<div class=\"daterangepicker dropdown-menu\">' +\n                '<div class=\"calendar left\"></div>' +\n                '<div class=\"calendar right\"></div>' +\n                '<div class=\"ranges\">' +\n                  '<div class=\"range_inputs\">' +\n                    '<div>' +\n                      '<label for=\"daterangepicker_start\">' + this.locale.fromLabel + '</label>' +\n                      '<input class=\"input-mini\" type=\"text\" name=\"daterangepicker_start\" value=\"\" disabled=\"disabled\" />' +\n                    '</div>' +\n                    '<div>' +\n                      '<label for=\"daterangepicker_end\">' + this.locale.toLabel + '</label>' +\n                      '<input class=\"input-mini\" type=\"text\" name=\"daterangepicker_end\" value=\"\" disabled=\"disabled\" />' +\n                    '</div>' +\n                    '<button class=\"btn btn-small\" disabled=\"disabled\">' + this.locale.applyLabel + '</button>' +\n                  '</div>' +\n                '</div>' +\n              '</div>';\n\n        this.parentEl = (hasOptions && options.parentEl && $(options.parentEl)) || $(this.parentEl);\n        //the date range picker\n        this.container = $(DRPTemplate).appendTo(this.parentEl);\n\n        if (hasOptions) {\n\n            if (typeof options.format == 'string')\n                this.format = options.format;\n\n            if (typeof options.separator == 'string')\n                this.separator = options.separator;\n\n            if (typeof options.startDate == 'string')\n                this.startDate = Date.parse(options.startDate, this.format);\n\n            if (typeof options.endDate == 'string')\n                this.endDate = Date.parse(options.endDate, this.format);\n\n            if (typeof options.minDate == 'string')\n                this.minDate = Date.parse(options.minDate, this.format);\n\n            if (typeof options.maxDate == 'string')\n                this.maxDate = Date.parse(options.maxDate, this.format);\n\n\n            if (typeof options.startDate == 'object')\n                this.startDate = options.startDate;\n\n            if (typeof options.endDate == 'object')\n                this.endDate = options.endDate;\n\n            if (typeof options.minDate == 'object')\n                this.minDate = options.minDate;\n\n            if (typeof options.maxDate == 'object')\n                this.maxDate = options.maxDate;\n\n            if (typeof options.ranges == 'object') {\n                for (var range in options.ranges) {\n\n                    var start = options.ranges[range][0];\n                    var end = options.ranges[range][1];\n\n                    if (typeof start == 'string')\n                        start = Date.parse(start);\n\n                    if (typeof end == 'string')\n                        end = Date.parse(end);\n\n                    // If we have a min/max date set, bound this range\n                    // to it, but only if it would otherwise fall\n                    // outside of the min/max.\n                    if (this.minDate && start < this.minDate)\n                        start = this.minDate;\n\n                    if (this.maxDate && end > this.maxDate)\n                        end = this.maxDate;\n\n                    // If the end of the range is before the minimum (if min is set) OR\n                    // the start of the range is after the max (also if set) don't display this\n                    // range option.\n                    if ((this.minDate && end < this.minDate) || (this.maxDate && start > this.maxDate))\n                    {\n                        continue;\n                    }\n\n                    this.ranges[range] = [start, end];\n                }\n\n                var list = '<ul>';\n                for (var range in this.ranges) {\n                    list += '<li>' + range + '</li>';\n                }\n                list += '<li>' + this.locale.customRangeLabel + '</li>';\n                list += '</ul>';\n                this.container.find('.ranges').prepend(list);\n            }\n\n            // update day names order to firstDay\n            if (typeof options.locale == 'object') {\n                if (typeof options.locale.firstDay == 'number') {\n                    this.locale.firstDay = options.locale.firstDay;\n                    var iterator = options.locale.firstDay;\n                    while (iterator > 0) {\n                        this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\n                        iterator--;\n                    }\n                }\n            }\n\n            if (typeof options.opens == 'string')\n                this.opens = options.opens;\n\n            if (typeof options.showWeekNumbers == 'boolean') {\n                this.showWeekNumbers = options.showWeekNumbers;\n            }\n\n            if (typeof options.buttonClasses == 'string') {\n                this.buttonClasses = [options.buttonClasses];\n            }\n\n            if (typeof options.buttonClasses == 'object') {\n                this.buttonClasses = options.buttonClasses;\n            }\n\n        }\n\n        //apply CSS classes to buttons\n        var c = this.container;\n        $.each(this.buttonClasses, function (idx, val) {\n            c.find('button').addClass(val);\n        });\n\n        if (this.opens == 'right') {\n            //swap calendar positions\n            var left = this.container.find('.calendar.left');\n            var right = this.container.find('.calendar.right');\n            left.removeClass('left').addClass('right');\n            right.removeClass('right').addClass('left');\n        }\n\n        if (typeof options == 'undefined' || typeof options.ranges == 'undefined')\n            this.container.find('.calendar').show();\n\n        if (typeof cb == 'function')\n            this.cb = cb;\n\n        this.container.addClass('opens' + this.opens);\n\n        //event listeners\n        this.container.on('mousedown', $.proxy(this.mousedown, this));\n        this.container.find('.calendar').on('click', '.prev', $.proxy(this.clickPrev, this));\n        this.container.find('.calendar').on('click', '.next', $.proxy(this.clickNext, this));\n        this.container.find('.ranges').on('click', 'button', $.proxy(this.clickApply, this));\n\n        this.container.find('.calendar').on('click', 'td.available', $.proxy(this.clickDate, this));\n        this.container.find('.calendar').on('mouseenter', 'td.available', $.proxy(this.enterDate, this));\n        this.container.find('.calendar').on('mouseleave', 'td.available', $.proxy(this.updateView, this));\n\n        this.container.find('.ranges').on('click', 'li', $.proxy(this.clickRange, this));\n        this.container.find('.ranges').on('mouseenter', 'li', $.proxy(this.enterRange, this));\n        this.container.find('.ranges').on('mouseleave', 'li', $.proxy(this.updateView, this));\n\n        this.element.on('keyup', $.proxy(this.updateFromControl, this));\n\n        this.updateView();\n        this.updateCalendars();\n\n    };\n\n    DateRangePicker.prototype = {\n\n        constructor: DateRangePicker,\n\n        mousedown: function (e) {\n            e.stopPropagation();\n            e.preventDefault();\n        },\n\n        updateView: function () {\n            this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n            this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n\n            this.container.find('input[name=daterangepicker_start]').val(this.startDate.toString(this.format));\n            this.container.find('input[name=daterangepicker_end]').val(this.endDate.toString(this.format));\n\n            if (this.startDate.equals(this.endDate) || this.startDate.isBefore(this.endDate)) {\n                this.container.find('button').removeAttr('disabled');\n            } else {\n                this.container.find('button').attr('disabled', 'disabled');\n            }\n        },\n\n        updateFromControl: function () {\n            if (!this.element.is('input')) return;\n\n            var dateString = this.element.val().split(this.separator);\n            var start = Date.parseExact(dateString[0], this.format);\n            var end = Date.parseExact(dateString[1], this.format);\n\n            if (start == null || end == null) return;\n            if (end.isBefore(start)) return;\n\n            this.startDate = start;\n            this.endDate = end;\n\n            this.updateView();\n            this.cb(this.startDate, this.endDate);\n            this.updateCalendars();\n        },\n\n        notify: function () {\n            this.updateView();\n\n            if (this.element.is('input')) {\n                this.element.val(this.startDate.toString(this.format) + this.separator + this.endDate.toString(this.format));\n            }\n            this.cb(this.startDate, this.endDate);\n        },\n\n        move: function () {\n            var parentOffset = {\n                top: this.parentEl.offset().top - this.parentEl.scrollTop(),\n                left: this.parentEl.offset().left - this.parentEl.scrollLeft()\n            };\n            if (this.opens == 'left') {\n                this.container.css({\n                    top: this.element.offset().top + this.element.outerHeight(),\n                    right: $(window).width() - this.element.offset().left - this.element.outerWidth() - parentOffset.left,\n                    left: 'auto'\n                });\n            } else {\n                this.container.css({\n                    top: this.element.offset().top + this.element.outerHeight(),\n                    left: this.element.offset().left - parentOffset.left,\n                    right: 'auto'\n                });\n            }\n        },\n\n        show: function (e) {\n            this.container.show();\n            this.move();\n\n            if (e) {\n                e.stopPropagation();\n                e.preventDefault();\n            }\n\n            this.changed = false;\n\n            $(document).on('mousedown', $.proxy(this.hide, this));\n        },\n\n        hide: function (e) {\n            this.container.hide();\n            $(document).off('mousedown', this.hide);\n\n            if (this.changed) {\n                this.changed = false;\n                this.notify();\n            }\n        },\n\n        enterRange: function (e) {\n            var label = e.target.innerHTML;\n            if (label == this.locale.customRangeLabel) {\n                this.updateView();\n            } else {\n                var dates = this.ranges[label];\n                this.container.find('input[name=daterangepicker_start]').val(dates[0].toString(this.format));\n                this.container.find('input[name=daterangepicker_end]').val(dates[1].toString(this.format));\n            }\n        },\n\n        clickRange: function (e) {\n            var label = e.target.innerHTML;\n            if (label == this.locale.customRangeLabel) {\n                this.container.find('.calendar').show();\n            } else {\n                var dates = this.ranges[label];\n\n                this.startDate = dates[0];\n                this.endDate = dates[1];\n\n                this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n                this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n                this.updateCalendars();\n\n                this.changed = true;\n\n                this.container.find('.calendar').hide();\n                this.hide();\n            }\n        },\n\n        clickPrev: function (e) {\n            var cal = $(e.target).parents('.calendar');\n            if (cal.hasClass('left')) {\n                this.leftCalendar.month.add({ months: -1 });\n            } else {\n                this.rightCalendar.month.add({ months: -1 });\n            }\n            this.updateCalendars();\n        },\n\n        clickNext: function (e) {\n            var cal = $(e.target).parents('.calendar');\n            if (cal.hasClass('left')) {\n                this.leftCalendar.month.add({ months: 1 });\n            } else {\n                this.rightCalendar.month.add({ months: 1 });\n            }\n            this.updateCalendars();\n        },\n\n        enterDate: function (e) {\n\n            var title = $(e.target).attr('title');\n            var row = title.substr(1, 1);\n            var col = title.substr(3, 1);\n            var cal = $(e.target).parents('.calendar');\n\n            if (cal.hasClass('left')) {\n                this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].toString(this.format));\n            } else {\n                this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].toString(this.format));\n            }\n\n        },\n\n        clickDate: function (e) {\n            var title = $(e.target).attr('title');\n            var row = title.substr(1, 1);\n            var col = title.substr(3, 1);\n            var cal = $(e.target).parents('.calendar');\n\n            if (cal.hasClass('left')) {\n                startDate = this.leftCalendar.calendar[row][col];\n                endDate = this.endDate;\n            } else {\n                startDate = this.startDate;\n                endDate = this.rightCalendar.calendar[row][col];\n            }\n\n            cal.find('td').removeClass('active');\n\n            if (startDate.equals(endDate) || startDate.isBefore(endDate)) {\n                $(e.target).addClass('active');\n                if (!startDate.equals(this.startDate) || !endDate.equals(this.endDate))\n                    this.changed = true;\n                this.startDate = startDate;\n                this.endDate = endDate;\n            }\n\n            this.leftCalendar.month.set({ month: this.startDate.getMonth(), year: this.startDate.getFullYear() });\n            this.rightCalendar.month.set({ month: this.endDate.getMonth(), year: this.endDate.getFullYear() });\n            this.updateCalendars();\n        },\n\n        clickApply: function (e) {\n            this.hide();\n        },\n\n        updateCalendars: function () {\n            this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.getMonth(), this.leftCalendar.month.getFullYear());\n            this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.getMonth(), this.rightCalendar.month.getFullYear());\n            this.container.find('.calendar.left').html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.endDate));\n            this.container.find('.calendar.right').html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.startDate, this.maxDate));\n        },\n\n        buildCalendar: function (month, year) {\n\n            var firstDay = Date.today().set({ day: 1, month: month, year: year });\n            var lastMonth = firstDay.clone().add(-1).day().getMonth();\n            var lastYear = firstDay.clone().add(-1).day().getFullYear();\n\n            var daysInMonth = Date.getDaysInMonth(year, month);\n            var daysInLastMonth = Date.getDaysInMonth(lastYear, lastMonth);\n\n            var dayOfWeek = firstDay.getDay();\n\n            //initialize a 6 rows x 7 columns array for the calendar\n            var calendar = Array();\n            for (var i = 0; i < 6; i++) {\n                calendar[i] = Array();\n            }\n\n            //populate the calendar with date objects\n            var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\n            if (startDay > daysInLastMonth)\n                startDay -= 7;\n\n            if (dayOfWeek == this.locale.firstDay)\n                startDay = daysInLastMonth - 6;\n\n            var curDate = Date.today().set({ day: startDay, month: lastMonth, year: lastYear });\n            for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = curDate.clone().add(1).day()) {\n                if (i > 0 && col % 7 == 0) {\n                    col = 0;\n                    row++;\n                }\n                calendar[row][col] = curDate;\n            }\n\n            return calendar;\n\n        },\n\n        renderCalendar: function (calendar, selected, minDate, maxDate) {\n            var html = '<table class=\"table-condensed\">';\n            html += '<thead>';\n            html += '<tr>';\n            \n            // add empty cell for week number\n            if (this.showWeekNumbers)\n                html += '<th></th>';\n            \n            if (!minDate || minDate < calendar[1][1])\n            {\n                html += '<th class=\"prev available\"><i class=\"icon-arrow-left\"></i></th>';\n            }\n            else\n            {\n                 html += '<th></th>';\n            }\n            html += '<th colspan=\"5\" style=\"width: auto\">' + this.locale.monthNames[calendar[1][1].getMonth()] + calendar[1][1].toString(\" yyyy\") + '</th>';\n            if (!maxDate || maxDate > calendar[1][1])\n            {\n                html += '<th class=\"next available\"><i class=\"icon-arrow-right\"></i></th>';\n            }\n            else\n            {\n                 html += '<th></th>';\n            }\n\n            html += '</tr>';\n            html += '<tr>';\n            \n            // add week number label\n            if (this.showWeekNumbers)\n                html += '<th class=\"week\">' + this.locale.weekLabel + '</th>';\n\n            $.each(this.locale.daysOfWeek, function (index, dayOfWeek) {\n                html += '<th>' + dayOfWeek + '</th>';\n            });\n\n            html += '</tr>';\n            html += '</thead>';\n            html += '<tbody>';\n\n            for (var row = 0; row < 6; row++) {\n                html += '<tr>';\n                \n                // add week number\n                if (this.showWeekNumbers)\n                    html += '<td class=\"week\">' + calendar[row][0].getWeek() + '</td>';\n                \n                for (var col = 0; col < 7; col++) {\n                    var cname = 'available ';\n                    cname += (calendar[row][col].getMonth() == calendar[1][1].getMonth()) ? '' : 'off';\n\n                    // Normalise the time so the comparison won't fail\n                    selected.setHours(0,0,0,0);\n\n                    if ( (minDate && calendar[row][col] < minDate) || (maxDate && calendar[row][col] > maxDate))\n                    {\n                        cname = 'off disabled';\n                    }\n                    else if (calendar[row][col].equals(selected))\n                    {\n                        cname += 'active';\n                    }\n                    \n                    var title = 'r' + row + 'c' + col;\n                    html += '<td class=\"' + cname + '\" title=\"' + title + '\">' + calendar[row][col].getDate() + '</td>';\n                }\n                html += '</tr>';\n            }\n\n            html += '</tbody>';\n            html += '</table>';\n\n            return html;\n\n        }\n\n    };\n\n    $.fn.daterangepicker = function (options, cb) {\n      this.each(function() {\n        var el = $(this);\n        if (!el.data('daterangepicker'))\n          el.data('daterangepicker', new DateRangePicker(el, options, cb));\n      });\n      return this;\n    };\n\n} (window.jQuery);\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-timepicker/compiled/timepicker.css",
    "content": ".bootstrap-timepicker.dropdown-menu {\n    border-radius: 4px 4px 4px 4px;\n    display: none;\n    left: 0;\n    margin-top: 1px;\n    padding: 4px;\n    top: 0;\n    min-width: 10px;\n    z-index: 99999;\n}\n.bootstrap-timepicker.dropdown-menu.open {\n    display: inline-block;\n}\n.bootstrap-timepicker.dropdown-menu:before {\n    border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n    border-left: 7px solid transparent;\n    border-right: 7px solid transparent;\n    content: \"\";\n    left: 6px;\n    position: absolute;\n    top: -7px;\n}\n.bootstrap-timepicker.dropdown-menu:after {\n    border-bottom: 6px solid #FFFFFF;\n    border-left: 6px solid transparent;\n    border-right: 6px solid transparent;\n    content: \"\";\n    left: 7px;\n    position: absolute;\n    top: -6px;\n}\n.bootstrap-timepicker.modal {\n    margin-left: -100px;\n    margin-top: 0;\n    top: 30%;\n    width: 200px;\n}\n.bootstrap-timepicker.modal .modal-header h3 {\n    font-size: 16px !important;\n    margin-top: 3px;\n    margin-bottom: 3px;    \n}\n.bootstrap-timepicker.modal .modal-content {\n    padding: 0;\n}\n.bootstrap-timepicker table {\n    margin: 0;\n    width: 100%;\n}\n.bootstrap-timepicker table td {\n    height: 30px;\n    margin: 0;\n    padding: 2px;\n    text-align: center;\n}\n.bootstrap-timepicker table td span {\n    width: 100%;\n}\n.bootstrap-timepicker table td a {\n    border: 1px solid transparent;\n    display: inline-block;\n    margin: 0;\n    outline: 0 none;\n    padding: 8px 0;\n    width: 3em;\n}\n.bootstrap-timepicker table td a:hover {\n    background-color: #EEEEEE;\n    border-color: #DDDDDD;\n    border-radius: 4px 4px 4px 4px;\n    text-decoration: none;\n}\n.bootstrap-timepicker table td a i {\n    margin-top: 2px;\n}\n.bootstrap-timepicker table td input {\n    margin: 0;\n    text-align: center;\n    width: 25px;\n}\n.bootstrap-timepicker-component .add-on {\n    cursor: pointer;\n}\n.bootstrap-timepicker-component .add-on i {\n    display: block;\n    height: 16px;\n    width: 16px;\n}\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-timepicker/js/bootstrap-timepicker.js",
    "content": "/* =========================================================\n * bootstrap-timepicker.js\n * http://www.github.com/jdewit/bootstrap-timepicker\n * =========================================================\n * Copyright 2012\n *\n * Created By:\n * Joris de Wit @joris_dewit\n *\n * Contributions By:\n * Gilbert @mindeavor\n * Koen Punt info@koenpunt.nl\n * Nek\n * Chris Martin\n * Dominic Barnes contact@dominicbarnes.us\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function($) {\n\n    \"use strict\"; // jshint ;_;\n\n    /* TIMEPICKER PUBLIC CLASS DEFINITION\n     * ================================== */\n    var Timepicker = function(element, options) {\n        this.$element = $(element);\n        this.options = $.extend({}, $.fn.timepicker.defaults, options, this.$element.data());\n        this.minuteStep = this.options.minuteStep || this.minuteStep;\n        this.secondStep = this.options.secondStep || this.secondStep;\n        this.showMeridian = this.options.showMeridian || this.showMeridian;\n        this.showSeconds = this.options.showSeconds || this.showSeconds;\n        this.showInputs = this.options.showInputs || this.showInputs;\n        this.disableFocus = this.options.disableFocus || this.disableFocus;\n        this.template = this.options.template || this.template;\n        this.modalBackdrop = this.options.modalBackdrop || this.modalBackdrop;\n        this.defaultTime = this.options.defaultTime || this.defaultTime;\n        this.open = false;\n        this.init();\n    };\n\n    Timepicker.prototype = {\n\n        constructor: Timepicker\n\n        , init: function () {\n            if (this.$element.parent().hasClass('input-append')) {\n                this.$element.parent('.input-append').find('.add-on').on('click', $.proxy(this.showWidget, this));\n                this.$element.on({\n                    focus: $.proxy(this.highlightUnit, this),\n                    click: $.proxy(this.highlightUnit, this),\n                    keypress: $.proxy(this.elementKeypress, this),\n                    blur: $.proxy(this.blurElement, this)\n                });\n\n            } else {\n                if (this.template) {\n                    this.$element.on({\n                        focus: $.proxy(this.showWidget, this),\n                        click: $.proxy(this.showWidget, this),\n                        blur: $.proxy(this.blurElement, this)\n                    });\n                } else {\n                    this.$element.on({\n                        focus: $.proxy(this.highlightUnit, this),\n                        click: $.proxy(this.highlightUnit, this),\n                        keypress: $.proxy(this.elementKeypress, this),\n                        blur: $.proxy(this.blurElement, this)\n                    });\n                }\n            }\n\n\n            this.$widget = $(this.getTemplate()).appendTo('body');\n\n            this.$widget.on('click', $.proxy(this.widgetClick, this));\n\n            if (this.showInputs) {\n                this.$widget.find('input').on({\n                    click: function() { this.select(); },\n                    keypress: $.proxy(this.widgetKeypress, this),\n                    change: $.proxy(this.updateFromWidgetInputs, this)\n                });\n            }\n\n            this.setDefaultTime(this.defaultTime);\n        }\n\n        , showWidget: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            if (this.open) {\n                return;\n            }\n\n            this.$element.trigger('show');\n\n            if (this.disableFocus) {\n                this.$element.blur();\n            }\n\n            var pos = $.extend({}, this.$element.offset(), {\n                height: this.$element[0].offsetHeight\n            });\n\n            this.updateFromElementVal();\n\n            $('html')\n                .trigger('click.timepicker.data-api')\n                .one('click.timepicker.data-api', $.proxy(this.hideWidget, this));\n\n            if (this.template === 'modal') {\n                this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this));\n            } else {\n                this.$widget.css({\n                    top: pos.top + pos.height\n                    , left: pos.left\n                })\n\n                if (!this.open) {\n                    this.$widget.addClass('open');\n                }\n            }\n\n            this.open = true;\n            this.$element.trigger('shown');\n        }\n\n        , hideWidget: function(){\n            this.$element.trigger('hide');\n\n            if (this.template === 'modal') {\n                this.$widget.modal('hide');\n            } else {\n                this.$widget.removeClass('open');\n            }\n            this.open = false;\n            this.$element.trigger('hidden');\n        }\n\n        , widgetClick: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            var action = $(e.target).closest('a').data('action');\n            if (action) {\n                this[action]();\n                this.update();\n            }\n        }\n\n        , widgetKeypress: function(e) {\n            var input = $(e.target).closest('input').attr('name');\n\n            switch (e.keyCode) {\n                case 9: //tab\n                    if (this.showMeridian) {\n                        if (input == 'meridian') {\n                            this.hideWidget();\n                        }\n                    } else {\n                        if (this.showSeconds) {\n                            if (input == 'second') {\n                                this.hideWidget();\n                            }\n                        } else {\n                            if (input == 'minute') {\n                                this.hideWidget();\n                            }\n                        }\n                    }\n                break;\n                case 27: // escape\n                    this.hideWidget();\n                break;\n                case 38: // up arrow\n                    switch (input) {\n                        case 'hour':\n                            this.incrementHour();\n                        break;\n                        case 'minute':\n                            this.incrementMinute();\n                        break;\n                        case 'second':\n                            this.incrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.update();\n                break;\n                case 40: // down arrow\n                    switch (input) {\n                        case 'hour':\n                            this.decrementHour();\n                        break;\n                        case 'minute':\n                            this.decrementMinute();\n                        break;\n                        case 'second':\n                            this.decrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.update();\n                break;\n            }\n        }\n\n        , elementKeypress: function(e) {\n            var input = this.$element.get(0);\n            switch (e.keyCode) {\n                case 0: //input\n                break;\n                case 9: //tab\n                    this.updateFromElementVal();\n                    if (this.showMeridian) {\n                        if (this.highlightedUnit != 'meridian') {\n                            e.preventDefault();\n                            this.highlightNextUnit();\n                        }\n                    } else {\n                        if (this.showSeconds) {\n                            if (this.highlightedUnit != 'second') {\n                                e.preventDefault();\n                                this.highlightNextUnit();\n                            }\n                        } else {\n                            if (this.highlightedUnit != 'minute') {\n                                e.preventDefault();\n                                this.highlightNextUnit();\n                            }\n                        }\n                    }\n                break;\n                case 27: // escape\n                    this.updateFromElementVal();\n                break;\n                case 37: // left arrow\n                    this.updateFromElementVal();\n                    this.highlightPrevUnit();\n                break;\n                case 38: // up arrow\n                    switch (this.highlightedUnit) {\n                        case 'hour':\n                            this.incrementHour();\n                        break;\n                        case 'minute':\n                            this.incrementMinute();\n                        break;\n                        case 'second':\n                            this.incrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.updateElement();\n                break;\n                case 39: // right arrow\n                    this.updateFromElementVal();\n                    this.highlightNextUnit();\n                break;\n                case 40: // down arrow\n                    switch (this.highlightedUnit) {\n                        case 'hour':\n                            this.decrementHour();\n                        break;\n                        case 'minute':\n                            this.decrementMinute();\n                        break;\n                        case 'second':\n                            this.decrementSecond();\n                        break;\n                        case 'meridian':\n                            this.toggleMeridian();\n                        break;\n                    }\n                    this.updateElement();\n                break;\n            }\n\n            if (e.keyCode !== 0 && e.keyCode !== 8 && e.keyCode !== 9 && e.keyCode !== 46) {\n                e.preventDefault();\n            }\n        }\n\n        , setValues: function(time) {\n            if (this.showMeridian) {\n                var arr = time.split(' ');\n                var timeArray = arr[0].split(':');\n                this.meridian = arr[1];\n            } else {\n                var timeArray = time.split(':');\n            }\n\n            this.hour = parseInt(timeArray[0], 10);\n            this.minute = parseInt(timeArray[1], 10);\n            this.second = parseInt(timeArray[2], 10);\n\n            if (isNaN(this.hour)) {\n                this.hour = 0;\n            }\n            if (isNaN(this.minute)) {\n                this.minute = 0;\n            }\n\n            if (this.showMeridian) {\n                if (this.hour > 12) {\n                    this.hour = 12;\n                } else if (this.hour < 1) {\n                    this.hour = 1;\n                }\n\n                if (this.meridian == 'am' || this.meridian == 'a') {\n                    this.meridian = 'AM';\n                } else if (this.meridian == 'pm' || this.meridian == 'p') {\n                    this.meridian = 'PM';\n                }\n\n                if (this.meridian != 'AM' && this.meridian != 'PM') {\n                    this.meridian = 'AM';\n                }\n            } else {\n                 if (this.hour >= 24) {\n                    this.hour = 23;\n                } else if (this.hour < 0) {\n                    this.hour = 0;\n                }\n            }\n\n            if (this.minute < 0) {\n                this.minute = 0;\n            } else if (this.minute >= 60) {\n                this.minute = 59;\n            }\n\n            if (this.showSeconds) {\n                if (isNaN(this.second)) {\n                    this.second = 0;\n                } else if (this.second < 0) {\n                    this.second = 0;\n                } else if (this.second >= 60) {\n                    this.second = 59;\n                }\n            }\n\n            if ( this.$element.val() != '' )\n                this.updateElement();\n            this.updateWidget();\n        }\n\n        , setMeridian: function(meridian) {\n            if (meridian == 'a' || meridian == 'am' || meridian == 'AM' ) {\n                this.meridian = 'AM';\n            } else if (meridian == 'p' || meridian == 'pm' || meridian == 'PM' ) {\n                this.meridian = 'PM';\n            } else {\n                this.updateWidget();\n            }\n\n            this.updateElement();\n        }\n\n        , setDefaultTime: function(defaultTime){\n            if (defaultTime) {\n                if (defaultTime === 'current') {\n                    var dTime = new Date();\n                    var hours = dTime.getHours();\n                    var minutes = Math.floor(dTime.getMinutes() / this.minuteStep) * this.minuteStep;\n                    var seconds = Math.floor(dTime.getSeconds() / this.secondStep) * this.secondStep;\n                    var meridian = \"AM\";\n                    if (this.showMeridian) {\n                        if (hours === 0) {\n                            hours = 12;\n                        } else if (hours >= 12) {\n                            if (hours > 12) {\n                                hours = hours - 12;\n                            }\n                            meridian = \"PM\";\n                        } else {\n                           meridian = \"AM\";\n                        }\n                    }\n                    this.hour = hours;\n                    this.minute = minutes;\n                    this.second = seconds;\n                    this.meridian = meridian;\n                } else if (defaultTime === 'value') {\n                    this.setValues(this.$element.val());\n                } else {\n                    this.setValues(defaultTime);\n                }\n                if ( this.$element.val() != '' )\n                    this.updateElement();\n                this.updateWidget();\n            } else {\n                this.hour = 0;\n                this.minute = 0;\n                this.second = 0;\n            }\n        }\n\n        , formatTime: function(hour, minute, second, meridian) {\n            hour = hour < 10 ? '0' + hour : hour;\n            minute = minute < 10 ? '0' + minute : minute;\n            second = second < 10 ? '0' + second : second;\n\n            return hour + ':' + minute + (this.showSeconds ? ':' + second : '') + (this.showMeridian ? ' ' + meridian : '');\n        }\n\n        , getTime: function() {\n            return this.formatTime(this.hour, this.minute, this.second, this.meridian);\n        }\n\n        , setTime: function(time) {\n            this.setValues(time);\n            this.update();\n        }\n\n        , update: function() {\n            this.updateElement();\n            this.updateWidget();\n        }\n\n        , blurElement: function() {\n          this.highlightedUnit = undefined;\n          this.updateFromElementVal();\n        }\n\n        , updateElement: function() {\n            var time = this.getTime();\n\n            this.$element.val(time).change();\n\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightHour();\n                break;\n                case 'minute':\n                    this.highlightMinute();\n                break;\n                case 'second':\n                    this.highlightSecond();\n                break;\n                case 'meridian':\n                    this.highlightMeridian();\n                break;\n            }\n        }\n\n        , updateWidget: function() {\n            if (this.showInputs) {\n                this.$widget.find('input.bootstrap-timepicker-hour').val(this.hour < 10 ? '0' + this.hour : this.hour);\n                this.$widget.find('input.bootstrap-timepicker-minute').val(this.minute < 10 ? '0' + this.minute : this.minute);\n                if (this.showSeconds) {\n                    this.$widget.find('input.bootstrap-timepicker-second').val(this.second < 10 ? '0' + this.second : this.second);\n                }\n                if (this.showMeridian) {\n                    this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian);\n                }\n            } else {\n                this.$widget.find('span.bootstrap-timepicker-hour').text(this.hour);\n                this.$widget.find('span.bootstrap-timepicker-minute').text(this.minute < 10 ? '0' + this.minute : this.minute);\n                if (this.showSeconds) {\n                    this.$widget.find('span.bootstrap-timepicker-second').text(this.second < 10 ? '0' + this.second : this.second);\n                }\n                if (this.showMeridian) {\n                    this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian);\n                }\n            }\n        }\n\n        , updateFromElementVal: function (e) {\n            var time = this.$element.val();\n            if (time) {\n                this.setValues(time);\n                this.updateWidget();\n            }\n        }\n\n        , updateFromWidgetInputs: function () {\n            var time = $('input.bootstrap-timepicker-hour', this.$widget).val() + ':' +\n                       $('input.bootstrap-timepicker-minute', this.$widget).val() +\n                       (this.showSeconds ?\n                           ':' + $('input.bootstrap-timepicker-second', this.$widget).val()\n                        : '') +\n                       (this.showMeridian ?\n                           ' ' + $('input.bootstrap-timepicker-meridian', this.$widget).val()\n                        : '');\n\n            this.setValues(time);\n        }\n\n        , getCursorPosition: function() {\n            var input = this.$element.get(0);\n\n            if ('selectionStart' in input) {\n                // Standard-compliant browsers\n                return input.selectionStart;\n            } else if (document.selection) {\n                // IE fix\n                input.focus();\n                var sel = document.selection.createRange();\n                var selLen = document.selection.createRange().text.length;\n                sel.moveStart('character', - input.value.length);\n\n                return sel.text.length - selLen;\n            }\n        }\n\n        , highlightUnit: function () {\n            var input = this.$element.get(0);\n\n            this.position = this.getCursorPosition();\n            if (this.position >= 0 && this.position <= 2) {\n                this.highlightHour();\n            } else if (this.position >= 3 && this.position <= 5) {\n                this.highlightMinute();\n            } else if (this.position >= 6 && this.position <= 8) {\n                if (this.showSeconds) {\n                    this.highlightSecond();\n                } else {\n                    this.highlightMeridian();\n                }\n            } else if (this.position >= 9 && this.position <= 11) {\n                this.highlightMeridian();\n            }\n        }\n\n        , highlightNextUnit: function() {\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightMinute();\n                break;\n                case 'minute':\n                    if (this.showSeconds) {\n                        this.highlightSecond();\n                    } else {\n                        this.highlightMeridian();\n                    }\n                break;\n                case 'second':\n                    this.highlightMeridian();\n                break;\n                case 'meridian':\n                    this.highlightHour();\n                break;\n            }\n        }\n\n        , highlightPrevUnit: function() {\n            switch (this.highlightedUnit) {\n                case 'hour':\n                    this.highlightMeridian();\n                break;\n                case 'minute':\n                    this.highlightHour();\n                break;\n                case 'second':\n                    this.highlightMinute();\n                break;\n                case 'meridian':\n                    if (this.showSeconds) {\n                        this.highlightSecond();\n                    } else {\n                        this.highlightMinute();\n                    }\n                break;\n            }\n        }\n\n        , highlightHour: function() {\n            this.highlightedUnit = 'hour';\n            this.$element.get(0).setSelectionRange(0,2);\n        }\n\n        , highlightMinute: function() {\n            this.highlightedUnit = 'minute';\n            this.$element.get(0).setSelectionRange(3,5);\n        }\n\n        , highlightSecond: function() {\n            this.highlightedUnit = 'second';\n            this.$element.get(0).setSelectionRange(6,8);\n        }\n\n        , highlightMeridian: function() {\n            this.highlightedUnit = 'meridian';\n            if (this.showSeconds) {\n                this.$element.get(0).setSelectionRange(9,11);\n            } else {\n                this.$element.get(0).setSelectionRange(6,8);\n            }\n        }\n\n        , incrementHour: function() {\n            if (this.showMeridian) {\n                if (this.hour === 11) {\n                    this.toggleMeridian();\n                } else if (this.hour === 12) {\n                    return this.hour = 1;\n                }\n            }\n            if (this.hour === 23) {\n                return this.hour = 0;\n            }\n            this.hour = this.hour + 1;\n        }\n\n        , decrementHour: function() {\n            if (this.showMeridian) {\n                if (this.hour === 1) {\n                    return this.hour = 12;\n                }\n                else if (this.hour === 12) {\n                    this.toggleMeridian();\n                }\n            }\n            if (this.hour === 0) {\n                return this.hour = 23;\n            }\n            this.hour = this.hour - 1;\n        }\n\n        , incrementMinute: function() {\n            var newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep);\n            if (newVal > 59) {\n                this.incrementHour();\n                this.minute = newVal - 60;\n            } else {\n                this.minute = newVal;\n            }\n        }\n\n        , decrementMinute: function() {\n            var newVal = this.minute - this.minuteStep;\n            if (newVal < 0) {\n                this.decrementHour();\n                this.minute = newVal + 60;\n            } else {\n                this.minute = newVal;\n            }\n        }\n\n        , incrementSecond: function() {\n            var newVal = this.second + this.secondStep - (this.second % this.secondStep);\n            if (newVal > 59) {\n                this.incrementMinute();\n                this.second = newVal - 60;\n            } else {\n                this.second = newVal;\n            }\n        }\n\n        , decrementSecond: function() {\n            var newVal = this.second - this.secondStep;\n            if (newVal < 0) {\n                this.decrementMinute();\n                this.second = newVal + 60;\n            } else {\n                this.second = newVal;\n            }\n        }\n\n        , toggleMeridian: function() {\n            this.meridian = this.meridian === 'AM' ? 'PM' : 'AM';\n\n            this.update();\n        }\n\n        , getTemplate: function() {\n            if (this.options.templates[this.options.template]) {\n                return this.options.templates[this.options.template];\n            }\n            if (this.showInputs) {\n                var hourTemplate = '<input type=\"text\" name=\"hour\" class=\"bootstrap-timepicker-hour\" maxlength=\"2\"/>';\n                var minuteTemplate = '<input type=\"text\" name=\"minute\" class=\"bootstrap-timepicker-minute\" maxlength=\"2\"/>';\n                var secondTemplate = '<input type=\"text\" name=\"second\" class=\"bootstrap-timepicker-second\" maxlength=\"2\"/>';\n                var meridianTemplate = '<input type=\"text\" name=\"meridian\" class=\"bootstrap-timepicker-meridian\" maxlength=\"2\"/>';\n            } else {\n                var hourTemplate = '<span class=\"bootstrap-timepicker-hour\"></span>';\n                var minuteTemplate = '<span class=\"bootstrap-timepicker-minute\"></span>';\n                var secondTemplate = '<span class=\"bootstrap-timepicker-second\"></span>';\n                var meridianTemplate = '<span class=\"bootstrap-timepicker-meridian\"></span>';\n            }\n            var templateContent = '<table class=\"'+ (this.showSeconds ? 'show-seconds' : '') +' '+ (this.showMeridian ? 'show-meridian' : '') +'\">'+\n                                       '<tr>'+\n                                           '<td><a href=\"#\" data-action=\"incrementHour\"><i class=\"icon-chevron-up\"></i></a></td>'+\n                                           '<td class=\"separator\">&nbsp;</td>'+\n                                           '<td><a href=\"#\" data-action=\"incrementMinute\"><i class=\"icon-chevron-up\"></i></a></td>'+\n                                           (this.showSeconds ?\n                                               '<td class=\"separator\">&nbsp;</td>'+\n                                               '<td><a href=\"#\" data-action=\"incrementSecond\"><i class=\"icon-chevron-up\"></i></a></td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                               '<td class=\"separator\">&nbsp;</td>'+\n                                               '<td class=\"meridian-column\"><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-up\"></i></a></td>'\n                                           : '') +\n                                       '</tr>'+\n                                       '<tr>'+\n                                           '<td>'+ hourTemplate +'</td> '+\n                                           '<td class=\"separator\">:</td>'+\n                                           '<td>'+ minuteTemplate +'</td> '+\n                                           (this.showSeconds ?\n                                                '<td class=\"separator\">:</td>'+\n                                                '<td>'+ secondTemplate +'</td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td>'+ meridianTemplate +'</td>'\n                                           : '') +\n                                       '</tr>'+\n                                       '<tr>'+\n                                           '<td><a href=\"#\" data-action=\"decrementHour\"><i class=\"icon-chevron-down\"></i></a></td>'+\n                                           '<td class=\"separator\"></td>'+\n                                           '<td><a href=\"#\" data-action=\"decrementMinute\"><i class=\"icon-chevron-down\"></i></a></td>'+\n                                           (this.showSeconds ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td><a href=\"#\" data-action=\"decrementSecond\"><i class=\"icon-chevron-down\"></i></a></td>'\n                                           : '') +\n                                           (this.showMeridian ?\n                                                '<td class=\"separator\">&nbsp;</td>'+\n                                                '<td><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-down\"></i></a></td>'\n                                           : '') +\n                                       '</tr>'+\n                                   '</table>';\n\n            var template;\n            switch(this.options.template) {\n                case 'modal':\n                    template = '<div class=\"bootstrap-timepicker modal hide fade in\" style=\"top: 30%; margin-top: 0; width: 200px; margin-left: -100px;\" data-backdrop=\"'+ (this.modalBackdrop ? 'true' : 'false') +'\">'+\n                                   '<div class=\"modal-header\">'+\n                                       '<a href=\"#\" class=\"close\" data-dismiss=\"modal\">×</a>'+\n                                       '<h3>Pick a Time</h3>'+\n                                   '</div>'+\n                                   '<div class=\"modal-content\">'+\n                                        templateContent +\n                                   '</div>'+\n                                   '<div class=\"modal-footer\">'+\n                                       '<a href=\"#\" class=\"btn btn-primary\" data-dismiss=\"modal\">Ok</a>'+\n                                   '</div>'+\n                               '</div>';\n\n                break;\n                case 'dropdown':\n                    template = '<div class=\"bootstrap-timepicker dropdown-menu\">'+\n                                    templateContent +\n                               '</div>';\n                break;\n\n            }\n            return template;\n        }\n    };\n\n\n    /* TIMEPICKER PLUGIN DEFINITION\n     * =========================== */\n\n    $.fn.timepicker = function (option) {\n        return this.each(function () {\n            var $this = $(this)\n            , data = $this.data('timepicker')\n            , options = typeof option == 'object' && option;\n            if (!data) {\n                $this.data('timepicker', (data = new Timepicker(this, options)));\n            }\n            if (typeof option == 'string') {\n                data[option]();\n            }\n        })\n    }\n\n    $.fn.timepicker.defaults = {\n      minuteStep: 15\n    , secondStep: 15\n    , disableFocus: false\n    , defaultTime: 'current'\n    , showSeconds: false\n    , showInputs: true\n    , showMeridian: true\n    , template: 'dropdown'\n    , modalBackdrop: false\n    , templates: {} // set custom templates\n    }\n\n    $.fn.timepicker.Constructor = Timepicker\n}(window.jQuery);\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-toggle-buttons/static/js/jquery.toggle.buttons.js",
    "content": "!function ($) {\n  \"use strict\";\n  // version: 2.8\n  // by Mattia Larentis - follow me on twitter! @SpiritualGuru\n\n  var addToAttribute = function (obj, array, value) {\n    var i = 0\n      , length = array.length;\n\n    for (; i < length; i++) {\n      obj = obj[array[i]] = obj[array[i]] || i == ( length - 1) ? value : {}\n    }\n  };\n\n  $.fn.toggleButtons = function (method) {\n    var $element\n      , $div\n      , transitionSpeed = 0.05\n      , methods = {\n        init: function (opt) {\n          this.each(function () {\n              var $spanLeft\n                , $spanRight\n                , options\n                , moving\n                , dataAttribute = {};\n\n              $element = $(this);\n              $element.addClass('toggle-button');\n\n              $.each($element.data(), function (i, el) {\n                var key\n                  , tmp = {};\n\n                if (i.indexOf(\"togglebutton\") === 0) {\n                  key = i.match(/[A-Z][a-z]+/g);\n                  key = $.map(key, function (n) {\n                    return (n.toLowerCase());\n                  });\n\n                  addToAttribute(tmp, key, el);\n                  dataAttribute = $.extend(true, dataAttribute, tmp);\n                }\n              });\n\n              options = $.extend(true, {}, $.fn.toggleButtons.defaults, opt, dataAttribute);\n\n              $(this).data('options', options);\n\n              $spanLeft = $('<span></span>').addClass(\"labelLeft\").text(options.label.enabled === undefined ? \"ON\" : options.label.enabled);\n              $spanRight = $('<span></span>').addClass(\"labelRight\").text(options.label.disabled === undefined ? \"OFF \" : options.label.disabled);\n\n              // html layout\n              $div = $element.find('input:checkbox').wrap($('<div></div>')).parent();\n              $div.append($spanLeft);\n              $div.append($('<label></label>').attr('for', $element.find('input').attr('id')));\n              $div.append($spanRight);\n\n              if ($element.find('input').is(':checked'))\n                $element.find('>div').css('left', \"0\");\n              else $element.find('>div').css('left', \"-50%\");\n\n              if (options.animated) {\n                if (options.transitionspeed !== undefined)\n                  if (/^(\\d*%$)/.test(options.transitionspeed))  // is a percent value?\n                    transitionSpeed = 0.05 * parseInt(options.transitionspeed) / 100;\n                  else\n                    transitionSpeed = options.transitionspeed;\n              }\n              else transitionSpeed = 0;\n\n              $(this).data('transitionSpeed', transitionSpeed * 1000);\n\n\n              options[\"width\"] /= 2;\n\n              // width of the bootstrap-toggle-button\n              $element\n                .css('width', options.width * 2)\n                .find('>div').css('width', options.width * 3)\n                .find('>span, >label').css('width', options.width);\n\n              // height of the bootstrap-toggle-button\n              $element\n                .css('height', options.height)\n                .find('span, label')\n                .css('height', options.height)\n                .filter('span')\n                .css('line-height', options.height + \"px\");\n\n              if ($element.find('input').is(':disabled'))\n                $(this).addClass('deactivate');\n\n              $element.find('span').css(options.font);\n\n\n              // enabled custom color\n              if (options.style.enabled === undefined) {\n                if (options.style.custom !== undefined && options.style.custom.enabled !== undefined && options.style.custom.enabled.background !== undefined) {\n                  $spanLeft.css('color', options.style.custom.enabled.color);\n                  if (options.style.custom.enabled.gradient === undefined)\n                    $spanLeft.css('background', options.style.custom.enabled.background);\n                  else $.each([\"-webkit-\", \"-moz-\", \"-o-\", \"\"], function (i, el) {\n                    $spanLeft.css('background-image', el + 'linear-gradient(top, ' + options.style.custom.enabled.background + ',' + options.style.custom.enabled.gradient + ')');\n                  });\n                }\n              }\n              else $spanLeft.addClass(options.style.enabled);\n\n              // disabled custom color\n              if (options.style.disabled === undefined) {\n                if (options.style.custom !== undefined && options.style.custom.disabled !== undefined && options.style.custom.disabled.background !== undefined) {\n                  $spanRight.css('color', options.style.custom.disabled.color);\n                  if (options.style.custom.disabled.gradient === undefined)\n                    $spanRight.css('background', options.style.custom.disabled.background);\n                  else $.each([\"-webkit-\", \"-moz-\", \"-o-\", \"\"], function (i, el) {\n                    $spanRight.css('background-image', el + 'linear-gradient(top, ' + options.style.custom.disabled.background + ',' + options.style.custom.disabled.gradient + ')');\n                  });\n                }\n              }\n              else $spanRight.addClass(options.style.disabled);\n\n              var changeStatus = function ($this) {\n                $this.siblings('label')\n                  .trigger('mousedown')\n                  .trigger('mouseup')\n                  .trigger('click');\n              };\n\n              $spanLeft.on('click', function (e) {\n                changeStatus($(this));\n              });\n              $spanRight.on('click', function (e) {\n                changeStatus($(this));\n              });\n\n              $element.find('input').on('change', function (e, skipOnChange) {\n                var $element = $(this).parent()\n                  , active = $(this).is(':checked')\n                  , $toggleButton = $(this).closest('.toggle-button');\n\n                $element.stop().animate({'left': active ? '0' : '-50%'}, $toggleButton.data('transitionSpeed'));\n\n                options = $toggleButton.data('options');\n\n                if (!skipOnChange)\n                  options.onChange($element, active, e);\n              });\n\n              $element.find('label').on('mousedown touchstart', function (e) {\n                moving = false;\n                e.preventDefault();\n                e.stopImmediatePropagation();\n\n                if ($(this).closest('.toggle-button').is('.deactivate'))\n                  $(this).off('click');\n                else {\n                  $(this).on('mousemove touchmove', function (e) {\n                    var $element = $(this).closest('.toggle-button')\n                      , relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left\n                      , percent = ((relativeX / (options.width * 2)) * 100);\n                    moving = true;\n\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n\n                    if (percent < 25)\n                      percent = 25;\n                    else if (percent > 75)\n                      percent = 75;\n\n                    $element.find('>div').css('left', (percent - 75) + \"%\");\n                  });\n\n                  $(this).on('click touchend', function (e) {\n                    var $target = $(e.target)\n                      , $myCheckBox = $target.siblings('input');\n\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n                    $(this).off('mouseleave');\n\n                    if (moving)\n                      if (parseInt($(this).parent().css('left')) < -25)\n                        $myCheckBox.attr('checked', false);\n                      else $myCheckBox.attr('checked', true);\n                    else $myCheckBox.attr(\"checked\", !$myCheckBox.is(\":checked\"));\n\n                    $myCheckBox.trigger('change');\n                  });\n\n                  $(this).on('mouseleave', function (e) {\n                    var $myCheckBox = $(this).siblings('input');\n\n                    e.preventDefault();\n                    e.stopImmediatePropagation();\n\n                    $(this).off('mouseleave');\n                    $(this).trigger('mouseup');\n\n                    if (parseInt($(this).parent().css('left')) < -25)\n                      $myCheckBox.attr('checked', false);\n                    else $myCheckBox.attr('checked', true);\n\n                    $myCheckBox.trigger('change');\n                  });\n\n                  $(this).on('mouseup', function (e) {\n                    e.stopImmediatePropagation();\n                    e.preventDefault();\n                    $(this).off('mousemove');\n                  });\n                }\n              });\n            }\n          );\n          return this;\n        },\n        toggleActivation: function () {\n          $(this).toggleClass('deactivate');\n        },\n        toggleState: function (skipOnChange) {\n          var $input = $(this).find('input');\n          $input.attr('checked', !$input.is(':checked')).trigger('change', skipOnChange);\n        },\n        setState: function(value, skipOnChange) {\n          $(this).find('input').attr('checked', value).trigger('change', skipOnChange);\n        },\n        status: function () {\n          return $(this).find('input:checkbox').is(':checked');\n        },\n        destroy: function () {\n          var $div = $(this).find('div')\n            , $checkbox;\n\n          $div.find(':not(input:checkbox)').remove();\n\n          $checkbox = $div.children();\n          $checkbox.unwrap().unwrap();\n\n          $checkbox.unbind('change');\n\n          return $checkbox;\n        }\n      };\n\n    if (methods[method])\n      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n    else if (typeof method === 'object' || !method)\n      return methods.init.apply(this, arguments);\n    else\n      $.error('Method ' + method + ' does not exist!');\n  };\n\n  $.fn.toggleButtons.defaults = {\n    onChange: function () {\n    },\n    width: 100,\n    height: 25,\n    font: {},\n    animated: true,\n    transitionspeed: undefined,\n    label: {\n      enabled: undefined,\n      disabled: undefined\n    },\n    style: {\n      enabled: undefined,\n      disabled: undefined,\n      custom: {\n        enabled: {\n          background: undefined,\n          gradient: undefined,\n          color: \"#FFFFFF\"\n        },\n        disabled: {\n          background: undefined,\n          gradient: undefined,\n          color: \"#FFFFFF\"\n        }\n      }\n    }\n  };\n}($);\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-toggle-buttons/static/stylesheets/bootstrap-toggle-buttons.css",
    "content": "/* line 11, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button {\n  display: inline-block;\n  cursor: pointer;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  -ms-border-radius: 5px;\n  -o-border-radius: 5px;\n  border-radius: 5px;\n  border: 1px solid;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1);\n  position: relative;\n  text-align: left;\n  overflow: hidden;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n/* line 29, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button.deactivate {\n  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);\n  opacity: 0.5;\n  cursor: default !important;\n}\n/* line 32, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button.deactivate label, .toggle-button.deactivate span {\n  cursor: default !important;\n}\n/* line 36, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button > div {\n  display: inline-block;\n  width: 150px;\n  position: absolute;\n  top: 0;\n}\n/* line 41, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button > div.disabled {\n  left: -50%;\n}\n/* line 45, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button input[type=checkbox] {\n  display: none;\n}\n/* line 53, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span, .toggle-button label {\n  cursor: pointer;\n  position: relative;\n  float: left;\n  display: inline-block;\n}\n/* line 60, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button label {\n  background: #fefefe;\n  margin-left: -4px;\n  margin-right: -4px;\n  border: 1px solid #E6E6E6;\n  margin-top: -1px;\n  z-index: 100;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));\n  background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: -o-linear-gradient(top, #fefefe, #e6e6e6);\n  background-image: linear-gradient(top, #fefefe, #e6e6e6);\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n}\n/* line 72, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span {\n  color: #fefefe;\n  text-align: center;\n  font-weight: bold;\n  z-index: 1;\n}\n/* line 78, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.labelLeft {\n  -moz-border-radius-topleft: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  padding-left: 3px;\n}\n/* line 83, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.labelRight {\n  -moz-border-radius-topright: 4px;\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  color: black;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));\n  background-image: -webkit-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: -moz-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: -o-linear-gradient(bottom, #fefefe, #e6e6e6);\n  background-image: linear-gradient(bottom, #fefefe, #e6e6e6);\n  padding-right: 3px;\n}\n/* line 91, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.primary, .toggle-button span.labelLeft {\n  color: #fefefe;\n  background: #0088cc;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #0088cc), color-stop(100%, #0055cc));\n  background-image: -webkit-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: -moz-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: -o-linear-gradient(bottom, #0088cc, #0055cc);\n  background-image: linear-gradient(bottom, #0088cc, #0055cc);\n}\n/* line 96, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.info {\n  color: #fefefe;\n  background: #5bc0de;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4));\n  background-image: -webkit-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: -moz-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: -o-linear-gradient(bottom, #5bc0de, #2f96b4);\n  background-image: linear-gradient(bottom, #5bc0de, #2f96b4);\n}\n/* line 102, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.success {\n  color: #fefefe;\n  background: #62c462;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #62c462), color-stop(100%, #51a351));\n  background-image: -webkit-linear-gradient(bottom, #62c462, #51a351);\n  background-image: -moz-linear-gradient(bottom, #62c462, #51a351);\n  background-image: -o-linear-gradient(bottom, #62c462, #51a351);\n  background-image: linear-gradient(bottom, #62c462, #51a351);\n}\n/* line 108, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.warning {\n  color: #fefefe;\n  background: #dbb450;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dbb450), color-stop(100%, #f89406));\n  background-image: -webkit-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: -moz-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: -o-linear-gradient(bottom, #dbb450, #f89406);\n  background-image: linear-gradient(bottom, #dbb450, #f89406);\n}\n/* line 114, ../sass/bootstrap-toggle-buttons.scss */\n.toggle-button span.danger {\n  color: #fefefe;\n  background: #ee5f5b;\n  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f));\n  background-image: -webkit-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: -moz-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: -o-linear-gradient(bottom, #ee5f5b, #bd362f);\n  background-image: linear-gradient(bottom, #ee5f5b, #bd362f);\n}\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-tree/bootstrap-tree/css/bootstrap-tree.css",
    "content": "/*!\n * Bootstrap Tree v0.3\n *\n * Copyright 2012 Cutters Crossing\n * Bootstrap is Copyright 2012 Twitter, Inc.\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world by @cutterbl.\n */\n \n.tree,\n.branch {\n  list-style: none outside none;\n}\n.branch {\n  postion: relative;\n  height: 0;\n  margin: 0 0 0 15px;\n  overflow: hidden;\n}\n.branch.in {\n  height: auto;\n}\n\na:link,\na:visited,\na:hover,\na:active {\n  color: #000;\n  text-decoration: none;\n}\n\na:hover {\n  text-decoration: underline;\n  cursor: pointer;\n}\n/* Work in progress */\na.tree-toggle-icon-only {\n  height: 16px;\n  width: 20px;\n  line-height: 16px;\n  vertical-align: middle;\n  display: inline-block;\n  background: url(\"../img/bstree-halflings.png\") no-repeat;\n  background-position: 0 -22px;\n}\n\na.tree-toggle {\n  height: 16px;\n  padding-left: 20px;\n  line-height: 16px;\n  vertical-align: middle;\n  display: inline-block;\n  background: url(\"../img/bstree-halflings.png\") no-repeat;\n  background-position: 0 -22px;\n}\na.tree-toggle.closed, a.tree-toggle-icon-only.closed {\n  background-position: 0 1px;\n}"
  },
  {
    "path": "target/mongo/assets/bootstrap-tree/bootstrap-tree/js/bootstrap-tree.js",
    "content": "/* =============================================================\n * bootstrap-tree.js v0.3\n * http://twitter.github.com/cutterbl/Bootstrap-Tree\n * \n * Inspired by Twitter Bootstrap, with credit to bits of code\n * from all over.\n * =============================================================\n * Copyright 2012 Cutters Crossing.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============================================================ */\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_;\n\n  var loading = \"<img src='assets/plugins/bootstrap-tree/bootstrap-tree/img/ajax-loader.gif' class='indicator' /> Loading ...\";\n  \n  /* TREE CLASS DEFINITION\n   * ========================= */\n\n  var Tree = function (element, options) {\n    \n    this.$element = $(element)\n    this.$tree = this.$element.closest(\".tree\")\n    this.parentage = GetParentage(this.$element)\n    this.options = $.extend({}, $.fn.tree.defaults, options)\n\n    if (this.options.parent) {\n      this.$parent = $(this.options.parent)\n    }\n\n    this.options.toggle && this.toggle()\n  }\n\n  Tree.prototype = {\n\n    constructor: Tree\n\n    , toggle: function () {\n      \n      var a, n, s\n        , currentStatus = this.$element.hasClass(\"in\")\n        , eventName = (!currentStatus) ? \"openbranch\" : \"closebranch\"\n          \n      this.$parent[currentStatus ? \"addClass\" : \"removeClass\"](\"closed\")\n      this.$element[currentStatus ? \"removeClass\" : \"addClass\"](\"in\")\n      \n      if (this.options.href) {\n        this._load()\n      }\n      \n      n = this.node()\n      // 'Action' (open|close) event\n      a = $.Event(eventName, {\n        node: n\n      })\n      // 'Select' event\n      s = $.Event(\"nodeselect\", {\n        node: n\n      })\n      \n      this.$parent.trigger(a).trigger(s)\n      \n    }\n\n    , _load: function () {\n        var data = $.extend({}, this.options)\n          , el = this.$element\n          , $this = $(this)\n          , options = this.options\n\n        // some config data we don't need to pass in the post\n        delete data.parent\n        delete data.href\n        delete data.callback\n\n        $.post(options.href, data, function (d, s, x){\n          \n          var doc, type = \"html\"\n            \n          if (options.callback) { // If a callback was defined in the data parameters\n            \n            var cb = window[options.callback].apply(el, [d, s, x]) // callbacks must return an object with 'doc' and 'type' keys\n            doc = cb.doc || d\n            type = cb.type || type\n            \n          } else {\n            \n            try {\n              doc = $.parseJSON(d)\n              type = \"json\"\n            } catch (err) {\n              doc = d\n            }\n            \n            if (type !== \"json\") {\n              try {\n                doc = $.parseXML(d)\n                type = \"xml\"\n              } catch (err) {\n                doc = d\n              }\n            }\n            \n          }\n          \n          switch (type) {\n            \n            case \"html\":\n              el.html(doc)\n              break\n              \n            default:\n              $this[0]._buildOutput(doc, type, el)\n              break\n              \n          }\n          \n        }, \"html\")\n    }\n    \n    , _buildOutput: function (doc, type, parent) {\n      \n      var nodes = this._buildNodes(doc, type)\n      \n      parent.empty().append(this._createNodes(nodes))\n      \n    }\n    \n    , _createNodes: function (nodes) {\n      \n      var els = []\n        , $this = $(this)\n      \n      $.each(nodes, function (ind, el) {\n        \n        var node = $(\"<li>\")\n          , role = (el.leaf) ? \"leaf\" : \"branch\"\n          , attributes = {}\n          , anchor = $(\"<a>\")\n        \n        attributes.role = role\n        \n        if (!el.leaf) {\n          \n          var branch = $(\"<ul>\").addClass(\"branch\")\n          \n          attributes['class'] = \"tree-toggle closed\" //fixed by keenthemes for ie8\n          attributes[\"data-toggle\"] = \"branch\"\n            \n        }\n        \n        if (el.value) attributes[\"data-value\"] = el.value\n          \n        if (el.id) attributes[\"data-itemid\"] = el.id\n        \n        for (var key in el) { // do we have some extras?\n          \n          if (key.indexOf(\"data-\") !== -1) attributes[key] = el[key]\n          \n        }\n        \n        attributes.href = (el.href) ? el.href : \"#\"\n          \n        // trade the anchor for a span tag, if it's a leaf\n        // and there's no href\n        if (el.leaf && attributes.href === \"#\") {\n          \n          anchor = $(\"<span>\")\n          delete attributes.href\n          \n        }\n        \n        anchor.attr(attributes)\n        \n        if (el.cls) anchor.addClass(el.cls)\n        if (!el.leaf && el.expanded && el.children.length) {\n          \n          anchor.removeClass(\"closed\")\n          branch.addClass(\"in\")\n          \n        }\n        \n        anchor.html(el.text)\n        node.append(anchor)\n        \n        if (!el.leaf && el.children && el.children.length) {\n          \n          branch.append($this[0]._createNodes(el.children))\n          node.append(branch)\n          \n        }\n        \n        els.push(node)\n        \n      })\n      \n      return els\n    }\n    \n    , _buildNodes: function (doc, type) {\n      \n      var nodes = []\n        , $el = this.$element\n      \n      if (type === \"json\") {\n        \n        nodes = this._parseJsonNodes(doc)\n        \n      } else if (type === \"xml\") {\n        \n        nodes = this._parseXmlNodes($(doc).find(\"nodes\").children())\n        \n      }\n      \n      return nodes\n    }\n    \n    , _parseJsonNodes: function (doc) {\n      \n      var nodes = []\n        , $this = $(this)\n      \n      $.each(doc, function (ind, el) {\n        \n        var opts = {}\n          , boolChkArr = [\"leaf\",\"expanded\",\"checkable\",\"checked\"]\n        \n        for (var item in el) {\n          \n          var nodeVal = (item !== \"children\") ? el[item] : $this[0]._parseJsonNodes(el.children)\n              \n          if (!$.isArray(nodeVal)) nodeVal = $.trim(nodeVal)\n          if (nodeVal.length) opts[item] = ($.inArray(item, boolChkArr) > -1) ? SetBoolean(nodeVal) : nodeVal\n              \n        }\n        \n        nodes.push(new Node(opts))\n      })\n      \n      return nodes\n      \n    }\n    \n    , _parseXmlNodes: function (doc) {\n      \n      var nodes = []\n        , $this = $(this)\n        , boolChkArr = [\"leaf\",\"expanded\",\"checkable\",\"checked\"]\n      \n      $.each(doc, function (ind, el) {\n        \n        var opts = {}\n          , $el = $(el)\n        \n        $.each($el.children(), function (x, i) {\n          \n          var $i = $(i)\n            , tagName = $i[0].nodeName\n            , nodeVal = (tagName !== \"children\") ? $i.text() : $this[0]._parseXmlNodes($i.children(\"node\"))\n                \n          if (!$.isArray(nodeVal)) nodeVal = $.trim(nodeVal)\n          if (nodeVal.length) opts[tagName] = ($.inArray(tagName, boolChkArr) > -1) ? SetBoolean(nodeVal) : nodeVal\n              \n        })\n        \n        nodes.push(new Node(opts))\n      })\n      \n      return nodes\n      \n    }\n\n    , getparentage: function () {\n      \n      return this.parentage\n      \n    }\n\n    , node: function (el) {\n      el = el || $(this)\n      \n      var node = $.extend(true, {}, (el[0] === $(this)[0]) ? $(this.$parent).data() : el.data())\n      \n      node.branch = this.$element\n      node.parentage = this.parentage\n      node.el = (el[0] === $(this)[0]) ? this.$parent : el\n      \n      delete node.parent\n      \n      return node\n      \n    }\n\n  }\n  \n  var Node = function (options) {\n    \n    $.extend(true, this, {\n      text: undefined,\n      leaf: false,\n      value: undefined,\n      expanded: false,\n      cls: undefined,\n      id: undefined,\n      href: undefined,\n      checkable: false,\n      checked: false,\n      children: []\n    }, options)\n    \n  }\n\n  var GetParentBranch = function ($this) {\n    \n    return $this.closest(\"ul.branch\").prev(\".tree-toggle\")\n    \n  }\n\n  var GetParentage = function ($this) {\n    \n    var arr = [], tmp\n    \n    tmp = GetParentBranch($this)\n    if (tmp.length) {\n      arr = GetParentage(tmp)\n      arr.push(tmp.attr(\"data-value\")||tmp.text())\n    }\n    \n    return arr\n    \n  }\n  \n  /**\n   * FUNCTION SetBoolean\n   * \n   * Takes any value, and returns it's boolean equivalent.\n   * \n   * @param value (any)\n   * @return (boolean)\n   */\n  var SetBoolean = function (value) {\n    \n    value = $.trim(value)\n    \n    if (typeof value === \"undefined\" || value === null) return false\n    \n    if (typeof value === \"string\" && !isNaN(value)) value = parseFloat(value)\n    \n    if (typeof value === \"string\") {\n      switch (value.toLowerCase()) {\n        case \"true\":\n        case \"yes\":\n          return true\n        case \"false\":\n        case \"no\":\n          return false\n      }\n    }\n    \n    return Boolean(value)\n  }\n\n\n  /* COLLAPSIBLE PLUGIN DEFINITION\n   * ============================== */\n\n  $.fn.tree = function (option) {\n    \n    return this.each(function () {\n      var $this = $(this)\n        , data = $this.data(\"tree\")\n        , options = typeof option == \"object\" && option\n        \n      if (!data) $this.data(\"tree\", (data = new Tree(this, options)))\n      if (typeof option == \"string\") data[option]()\n    })\n    \n  }\n\n  $.fn.tree.defaults = {\n      \n    toggle: true\n    \n  }\n\n  $.fn.tree.Constructor = Tree\n\n  /* COLLAPSIBLE DATA-API\n   * ==================== */\n\n  $(function () {\n    \n    $(\"body\").on(\"click.tree.data-api\", \"[data-toggle=branch]\", function (e) {\n      \n      e.preventDefault()\n      \n      var $this = $(this)\n        , target = $this.next(\".branch\")\n        , href = $this.attr(\"href\")\n        , option = $(target).data(\"tree\") ? \"toggle\" : $this.data()\n        \n      href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n      \n      if (!target.length) {\n        target = $('<ul>').addClass('branch').append(\"<li>\" + loading + \"</li>\").insertAfter($this)\n      }\n      \n      option.parent = $this\n      option.href = (href !== \"#\") ? href : undefined\n          \n      $(target).tree(option)\n      \n      return false\n    })\n    \n    $(\"body\").on(\"click.tree.data-api\", \"[data-role=leaf]\", function (e) {\n      \n      var $this = $(this)\n        , branch = $this.closest(\".branch\")\n        \n      // If not initialized, then create it\n      if (!$(branch).data(\"tree\")) {\n        \n        var $target = $(branch)\n          , branchlink = $target.prev(\"[data-toggle=branch]\")\n          , branchdata = branchlink.data()\n          , href = branchlink.attr(\"href\")\n        \n        href.replace(/.*(?=#[^\\s]+$)/, '')\n        \n        $target.tree($.extend({}, branchdata, {\n          \"toggle\": false,\n          \"parent\": branchlink,\n          \"href\": (href !== \"#\") ? href : undefined\n        }))\n      }\n      \n      e = $.Event(\"nodeselect\", {\n        node: $(branch).data(\"tree\").node($this)\n      })\n      \n      $this.trigger(e)\n      \n    })\n    \n  })\n\n}(window.jQuery);"
  },
  {
    "path": "target/mongo/assets/bootstrap-tree/htmlexample.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-tree/jsonexample.json",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-tree/xmlexample.xml",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.css",
    "content": "ul.wysihtml5-toolbar {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: block;\n}\n\nul.wysihtml5-toolbar::after {\n\tclear: both;\n\tdisplay: table;\n\tcontent: \"\";\n}\n\nul.wysihtml5-toolbar > li {\n\tfloat: left;\n\tdisplay: list-item;\n\tlist-style: none;\n\tmargin: 0 5px 10px 0;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=bold] {\n\tfont-weight: bold;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=italic] {\n\tfont-style: italic;\n}\n\nul.wysihtml5-toolbar a[data-wysihtml5-command=underline] {\n\ttext-decoration: underline;\n}\n\nul.wysihtml5-toolbar a.btn.wysihtml5-command-active {\n\tbackground-image: none;\n\t-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\t-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\tbox-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);\n\tbackground-color: #E6E6E6;\n\tbackground-color: #D9D9D9;\n\toutline: 0;\n}\n\nul.wysihtml5-commands-disabled .dropdown-menu {\n\tdisplay: none !important;\n}\n\nul.wysihtml5-toolbar div.wysihtml5-colors {\n  display:block;\n  width: 50px;\n  height: 20px;\n  margin-top: 2px;\n  margin-left: 5px;\n  position: absolute;\n  pointer-events: none;\n}\n\nul.wysihtml5-toolbar a.wysihtml5-colors-title {\n  padding-left: 70px;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"black\"] {\n  background: black !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"silver\"] {\n  background: silver !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"gray\"] {\n  background: gray !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"maroon\"] {\n  background: maroon !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"red\"] {\n  background: red !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"purple\"] {\n  background: purple !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"green\"] {\n  background: green !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"olive\"] {\n  background: olive !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"navy\"] {\n  background: navy !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"blue\"] {\n  background: blue !important;\n}\n\nul.wysihtml5-toolbar div[data-wysihtml5-command-value=\"orange\"] {\n  background: orange !important;\n}"
  },
  {
    "path": "target/mongo/assets/bootstrap-wysihtml5/bootstrap-wysihtml5.js",
    "content": "!function($, wysi) {\n    \"use strict\";\n\n    var tpl = {\n        \"font-styles\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li class='dropdown'>\" +\n              \"<a class='btn dropdown-toggle\" + size + \"' data-toggle='dropdown' href='#'>\" +\n              \"<i class='icon-font'></i>&nbsp;<span class='current-font'>\" + locale.font_styles.normal + \"</span>&nbsp;<b class='caret'></b>\" +\n              \"</a>\" +\n              \"<ul class='dropdown-menu'>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='div'>\" + locale.font_styles.normal + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h1'>\" + locale.font_styles.h1 + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h2'>\" + locale.font_styles.h2 + \"</a></li>\" +\n                \"<li><a data-wysihtml5-command='formatBlock' data-wysihtml5-command-value='h3'>\" + locale.font_styles.h3 + \"</a></li>\" +\n              \"</ul>\" +\n            \"</li>\";\n        },\n\n        \"emphasis\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='bold' title='CTRL+B'>\" + locale.emphasis.bold + \"</a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='italic' title='CTRL+I'>\" + locale.emphasis.italic + \"</a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='underline' title='CTRL+U'>\" + locale.emphasis.underline + \"</a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"lists\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='insertUnorderedList' title='\" + locale.lists.unordered + \"'><i class='icon-list'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='insertOrderedList' title='\" + locale.lists.ordered + \"'><i class='icon-th-list'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='Outdent' title='\" + locale.lists.outdent + \"'><i class='icon-indent-right'></i></a>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-command='Indent' title='\" + locale.lists.indent + \"'><i class='icon-indent-left'></i></a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"link\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='bootstrap-wysihtml5-insert-link-modal modal hide fade'>\" +\n                \"<div class='modal-header'>\" +\n                  \"<a class='close' data-dismiss='modal'>&times;</a>\" +\n                  \"<h3>\" + locale.link.insert + \"</h3>\" +\n                \"</div>\" +\n                \"<div class='modal-body'>\" +\n                  \"<input value='http://' class='bootstrap-wysihtml5-insert-link-url input-xlarge'>\" +\n                \"</div>\" +\n                \"<div class='modal-footer'>\" +\n                  \"<a href='#' class='btn' data-dismiss='modal'>\" + locale.link.cancel + \"</a>\" +\n                  \"<a href='#' class='btn btn-primary' data-dismiss='modal'>\" + locale.link.insert + \"</a>\" +\n                \"</div>\" +\n              \"</div>\" +\n              \"<a class='btn\" + size + \"' data-wysihtml5-command='createLink' title='\" + locale.link.insert + \"'><i class='icon-share'></i></a>\" +\n            \"</li>\";\n        },\n\n        \"image\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='bootstrap-wysihtml5-insert-image-modal modal hide fade'>\" +\n                \"<div class='modal-header'>\" +\n                  \"<a class='close' data-dismiss='modal'>&times;</a>\" +\n                  \"<h3>\" + locale.image.insert + \"</h3>\" +\n                \"</div>\" +\n                \"<div class='modal-body'>\" +\n                  \"<input value='http://' class='bootstrap-wysihtml5-insert-image-url input-xlarge'>\" +\n                \"</div>\" +\n                \"<div class='modal-footer'>\" +\n                  \"<a href='#' class='btn' data-dismiss='modal'>\" + locale.image.cancel + \"</a>\" +\n                  \"<a href='#' class='btn btn-primary' data-dismiss='modal'>\" + locale.image.insert + \"</a>\" +\n                \"</div>\" +\n              \"</div>\" +\n              \"<a class='btn\" + size + \"' data-wysihtml5-command='insertImage' title='\" + locale.image.insert + \"'><i class='icon-picture'></i></a>\" +\n            \"</li>\";\n        },\n\n        \"html\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li>\" +\n              \"<div class='btn-group'>\" +\n                \"<a class='btn\" + size + \"' data-wysihtml5-action='change_view' title='\" + locale.html.edit + \"'><i class='icon-pencil'></i></a>\" +\n              \"</div>\" +\n            \"</li>\";\n        },\n\n        \"color\": function(locale, options) {\n            var size = (options && options.size) ? ' btn-'+options.size : '';\n            return \"<li class='dropdown'>\" +\n              \"<a class='btn dropdown-toggle\" + size + \"' data-toggle='dropdown' href='#'>\" +\n                \"<span class='current-color'>\" + locale.colours.black + \"</span>&nbsp;<b class='caret'></b>\" +\n              \"</a>\" +\n              \"<ul class='dropdown-menu'>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='black'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='black'>\" + locale.colours.black + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='silver'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='silver'>\" + locale.colours.silver + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='gray'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='gray'>\" + locale.colours.gray + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='maroon'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='maroon'>\" + locale.colours.maroon + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='red'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='red'>\" + locale.colours.red + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='purple'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='purple'>\" + locale.colours.purple + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='green'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='green'>\" + locale.colours.green + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='olive'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='olive'>\" + locale.colours.olive + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='navy'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='navy'>\" + locale.colours.navy + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='blue'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='blue'>\" + locale.colours.blue + \"</a></li>\" +\n                \"<li><div class='wysihtml5-colors' data-wysihtml5-command-value='orange'></div><a class='wysihtml5-colors-title' data-wysihtml5-command='foreColor' data-wysihtml5-command-value='orange'>\" + locale.colours.orange + \"</a></li>\" +\n              \"</ul>\" +\n            \"</li>\";\n        }\n    };\n\n    var templates = function(key, locale, options) {\n        return tpl[key](locale, options);\n    };\n\n\n    var Wysihtml5 = function(el, options) {\n        this.el = el;\n        var toolbarOpts = options || defaultOptions;\n        for(var t in toolbarOpts.customTemplates) {\n          tpl[t] = toolbarOpts.customTemplates[t];\n        }\n        this.toolbar = this.createToolbar(el, toolbarOpts);\n        this.editor =  this.createEditor(options);\n\n        window.editor = this.editor;\n\n        $('iframe.wysihtml5-sandbox').each(function(i, el){\n            $(el.contentWindow).off('focus.wysihtml5').on({\n                'focus.wysihtml5' : function(){\n                    $('li.dropdown').removeClass('open');\n                }\n            });\n        });\n    };\n\n    Wysihtml5.prototype = {\n\n        constructor: Wysihtml5,\n\n        createEditor: function(options) {\n            options = options || {};\n            options.toolbar = this.toolbar[0];\n\n            var editor = new wysi.Editor(this.el[0], options);\n\n            if(options && options.events) {\n                for(var eventName in options.events) {\n                    editor.on(eventName, options.events[eventName]);\n                }\n            }\n            return editor;\n        },\n\n        createToolbar: function(el, options) {\n            var self = this;\n            var toolbar = $(\"<ul/>\", {\n                'class' : \"wysihtml5-toolbar\",\n                'style': \"display:none\"\n            });\n            var culture = options.locale || defaultOptions.locale || \"en\";\n            for(var key in defaultOptions) {\n                var value = false;\n\n                if(options[key] !== undefined) {\n                    if(options[key] === true) {\n                        value = true;\n                    }\n                } else {\n                    value = defaultOptions[key];\n                }\n\n                if(value === true) {\n                    toolbar.append(templates(key, locale[culture], options));\n\n                    if(key === \"html\") {\n                        this.initHtml(toolbar);\n                    }\n\n                    if(key === \"link\") {\n                        this.initInsertLink(toolbar);\n                    }\n\n                    if(key === \"image\") {\n                        this.initInsertImage(toolbar);\n                    }\n                }\n            }\n\n            if(options.toolbar) {\n                for(key in options.toolbar) {\n                    toolbar.append(options.toolbar[key]);\n                }\n            }\n\n            toolbar.find(\"a[data-wysihtml5-command='formatBlock']\").click(function(e) {\n                var target = e.target || e.srcElement;\n                var el = $(target);\n                self.toolbar.find('.current-font').text(el.html());\n            });\n\n            toolbar.find(\"a[data-wysihtml5-command='foreColor']\").click(function(e) {\n                var target = e.target || e.srcElement;\n                var el = $(target);\n                self.toolbar.find('.current-color').text(el.html());\n            });\n\n            this.el.before(toolbar);\n\n            return toolbar;\n        },\n\n        initHtml: function(toolbar) {\n            var changeViewSelector = \"a[data-wysihtml5-action='change_view']\";\n            toolbar.find(changeViewSelector).click(function(e) {\n                toolbar.find('a.btn').not(changeViewSelector).toggleClass('disabled');\n            });\n        },\n\n        initInsertImage: function(toolbar) {\n            var self = this;\n            var insertImageModal = toolbar.find('.bootstrap-wysihtml5-insert-image-modal');\n            var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url');\n            var insertButton = insertImageModal.find('a.btn-primary');\n            var initialValue = urlInput.val();\n\n            var insertImage = function() {\n                var url = urlInput.val();\n                urlInput.val(initialValue);\n                self.editor.currentView.element.focus();\n                self.editor.composer.commands.exec(\"insertImage\", url);\n            };\n\n            urlInput.keypress(function(e) {\n                if(e.which == 13) {\n                    insertImage();\n                    insertImageModal.modal('hide');\n                }\n            });\n\n            insertButton.click(insertImage);\n\n            insertImageModal.on('shown', function() {\n                urlInput.focus();\n            });\n\n            insertImageModal.on('hide', function() {\n                self.editor.currentView.element.focus();\n            });\n\n            toolbar.find('a[data-wysihtml5-command=insertImage]').click(function() {\n                var activeButton = $(this).hasClass(\"wysihtml5-command-active\");\n\n                if (!activeButton) {\n                    insertImageModal.modal('show');\n                    insertImageModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n                        e.stopPropagation();\n                    });\n                    return false;\n                }\n                else {\n                    return true;\n                }\n            });\n        },\n\n        initInsertLink: function(toolbar) {\n            var self = this;\n            var insertLinkModal = toolbar.find('.bootstrap-wysihtml5-insert-link-modal');\n            var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url');\n            var insertButton = insertLinkModal.find('a.btn-primary');\n            var initialValue = urlInput.val();\n\n            var insertLink = function() {\n                var url = urlInput.val();\n                urlInput.val(initialValue);\n                self.editor.currentView.element.focus();\n                self.editor.composer.commands.exec(\"createLink\", {\n                    href: url,\n                    target: \"_blank\",\n                    rel: \"nofollow\"\n                });\n            };\n            var pressedEnter = false;\n\n            urlInput.keypress(function(e) {\n                if(e.which == 13) {\n                    insertLink();\n                    insertLinkModal.modal('hide');\n                }\n            });\n\n            insertButton.click(insertLink);\n\n            insertLinkModal.on('shown', function() {\n                urlInput.focus();\n            });\n\n            insertLinkModal.on('hide', function() {\n                self.editor.currentView.element.focus();\n            });\n\n            toolbar.find('a[data-wysihtml5-command=createLink]').click(function() {\n                var activeButton = $(this).hasClass(\"wysihtml5-command-active\");\n\n                if (!activeButton) {\n                    insertLinkModal.appendTo('body').modal('show');\n                    insertLinkModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n                        e.stopPropagation();\n                    });\n                    return false;\n                }\n                else {\n                    return true;\n                }\n            });\n        }\n    };\n\n    // these define our public api\n    var methods = {\n        resetDefaults: function() {\n            $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache);\n        },\n        bypassDefaults: function(options) {\n            return this.each(function () {\n                var $this = $(this);\n                $this.data('wysihtml5', new Wysihtml5($this, options));\n            });\n        },\n        shallowExtend: function (options) {\n            var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {});\n            var that = this;\n            return methods.bypassDefaults.apply(that, [settings]);\n        },\n        deepExtend: function(options) {\n            var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {});\n            var that = this;\n            return methods.bypassDefaults.apply(that, [settings]);\n        },\n        init: function(options) {\n            var that = this;\n            return methods.shallowExtend.apply(that, [options]);\n        }\n    };\n\n    $.fn.wysihtml5 = function ( method ) {\n        if ( methods[method] ) {\n            return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));\n        } else if ( typeof method === 'object' || ! method ) {\n            return methods.init.apply( this, arguments );\n        } else {\n            $.error( 'Method ' +  method + ' does not exist on jQuery.wysihtml5' );\n        }    \n    };\n\n    $.fn.wysihtml5.Constructor = Wysihtml5;\n\n    var defaultOptions = $.fn.wysihtml5.defaultOptions = {\n        \"font-styles\": true,\n        \"color\": false,\n        \"emphasis\": true,\n        \"lists\": true,\n        \"html\": false,\n        \"link\": true,\n        \"image\": true,\n        events: {},\n        parserRules: {\n            classes: {\n                // (path_to_project/lib/css/wysiwyg-color.css)\n                \"wysiwyg-color-silver\" : 1,\n                \"wysiwyg-color-gray\" : 1,\n                \"wysiwyg-color-white\" : 1,\n                \"wysiwyg-color-maroon\" : 1,\n                \"wysiwyg-color-red\" : 1,\n                \"wysiwyg-color-purple\" : 1,\n                \"wysiwyg-color-fuchsia\" : 1,\n                \"wysiwyg-color-green\" : 1,\n                \"wysiwyg-color-lime\" : 1,\n                \"wysiwyg-color-olive\" : 1,\n                \"wysiwyg-color-yellow\" : 1,\n                \"wysiwyg-color-navy\" : 1,\n                \"wysiwyg-color-blue\" : 1,\n                \"wysiwyg-color-teal\" : 1,\n                \"wysiwyg-color-aqua\" : 1,\n                \"wysiwyg-color-orange\" : 1\n            },\n            tags: {\n                \"b\":  {},\n                \"i\":  {},\n                \"br\": {},\n                \"ol\": {},\n                \"ul\": {},\n                \"li\": {},\n                \"h1\": {},\n                \"h2\": {},\n                \"h3\": {},\n                \"blockquote\": {},\n                \"u\": 1,\n                \"img\": {\n                    \"check_attributes\": {\n                        \"width\": \"numbers\",\n                        \"alt\": \"alt\",\n                        \"src\": \"url\",\n                        \"height\": \"numbers\"\n                    }\n                },\n                \"a\":  {\n                    set_attributes: {\n                        target: \"_blank\",\n                        rel:    \"nofollow\"\n                    },\n                    check_attributes: {\n                        href:   \"url\" // important to avoid XSS\n                    }\n                },\n                \"span\": 1,\n                \"div\": 1\n            }\n        },\n        stylesheets: [\"lib/css/wysiwyg-color.css\"], // (path_to_project/lib/css/wysiwyg-color.css)\n        locale: \"en\"\n    };\n\n    if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') {\n        $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions);\n    }\n\n    var locale = $.fn.wysihtml5.locale = {\n        en: {\n            font_styles: {\n                normal: \"Normal text\",\n                h1: \"Heading 1\",\n                h2: \"Heading 2\",\n                h3: \"Heading 3\"\n            },\n            emphasis: {\n                bold: \"Bold\",\n                italic: \"Italic\",\n                underline: \"Underline\"\n            },\n            lists: {\n                unordered: \"Unordered list\",\n                ordered: \"Ordered list\",\n                outdent: \"Outdent\",\n                indent: \"Indent\"\n            },\n            link: {\n                insert: \"Insert link\",\n                cancel: \"Cancel\"\n            },\n            image: {\n                insert: \"Insert image\",\n                cancel: \"Cancel\"\n            },\n            html: {\n                edit: \"Edit HTML\"\n            },\n            colours: {\n                black: \"Black\",\n                silver: \"Silver\",\n                gray: \"Grey\",\n                maroon: \"Maroon\",\n                red: \"Red\",\n                purple: \"Purple\",\n                green: \"Green\",\n                olive: \"Olive\",\n                navy: \"Navy\",\n                blue: \"Blue\",\n                orange: \"Orange\"\n            }\n        }\n    };\n\n}(window.jQuery, window.wysihtml5);"
  },
  {
    "path": "target/mongo/assets/bootstrap-wysihtml5/wysihtml5-0.3.0.js",
    "content": "/**\n * @license wysihtml5 v0.3.0\n * https://github.com/xing/wysihtml5\n *\n * Author: Christopher Blum (https://github.com/tiff)\n *\n * Copyright (C) 2012 XING AG\n * Licensed under the MIT license (MIT)\n *\n */\nvar wysihtml5 = {\n  version: \"0.3.0\",\n  \n  // namespaces\n  commands:   {},\n  dom:        {},\n  quirks:     {},\n  toolbar:    {},\n  lang:       {},\n  selection:  {},\n  views:      {},\n  \n  INVISIBLE_SPACE: \"\\uFEFF\",\n  \n  EMPTY_FUNCTION: function() {},\n  \n  ELEMENT_NODE: 1,\n  TEXT_NODE:    3,\n  \n  BACKSPACE_KEY:  8,\n  ENTER_KEY:      13,\n  ESCAPE_KEY:     27,\n  SPACE_KEY:      32,\n  DELETE_KEY:     46\n};/**\n * @license Rangy, a cross-browser JavaScript range and selection library\n * http://code.google.com/p/rangy/\n *\n * Copyright 2011, Tim Down\n * Licensed under the MIT license.\n * Version: 1.2.2\n * Build date: 13 November 2011\n */\nwindow['rangy'] = (function() {\n\n\n    var OBJECT = \"object\", FUNCTION = \"function\", UNDEFINED = \"undefined\";\n\n    var domRangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\",\n        \"commonAncestorContainer\", \"START_TO_START\", \"START_TO_END\", \"END_TO_START\", \"END_TO_END\"];\n\n    var domRangeMethods = [\"setStart\", \"setStartBefore\", \"setStartAfter\", \"setEnd\", \"setEndBefore\",\n        \"setEndAfter\", \"collapse\", \"selectNode\", \"selectNodeContents\", \"compareBoundaryPoints\", \"deleteContents\",\n        \"extractContents\", \"cloneContents\", \"insertNode\", \"surroundContents\", \"cloneRange\", \"toString\", \"detach\"];\n\n    var textRangeProperties = [\"boundingHeight\", \"boundingLeft\", \"boundingTop\", \"boundingWidth\", \"htmlText\", \"text\"];\n\n    // Subset of TextRange's full set of methods that we're interested in\n    var textRangeMethods = [\"collapse\", \"compareEndPoints\", \"duplicate\", \"getBookmark\", \"moveToBookmark\",\n        \"moveToElementText\", \"parentElement\", \"pasteHTML\", \"select\", \"setEndPoint\", \"getBoundingClientRect\"];\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Trio of functions taken from Peter Michaux's article:\n    // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting\n    function isHostMethod(o, p) {\n        var t = typeof o[p];\n        return t == FUNCTION || (!!(t == OBJECT && o[p])) || t == \"unknown\";\n    }\n\n    function isHostObject(o, p) {\n        return !!(typeof o[p] == OBJECT && o[p]);\n    }\n\n    function isHostProperty(o, p) {\n        return typeof o[p] != UNDEFINED;\n    }\n\n    // Creates a convenience function to save verbose repeated calls to tests functions\n    function createMultiplePropertyTest(testFunc) {\n        return function(o, props) {\n            var i = props.length;\n            while (i--) {\n                if (!testFunc(o, props[i])) {\n                    return false;\n                }\n            }\n            return true;\n        };\n    }\n\n    // Next trio of functions are a convenience to save verbose repeated calls to previous two functions\n    var areHostMethods = createMultiplePropertyTest(isHostMethod);\n    var areHostObjects = createMultiplePropertyTest(isHostObject);\n    var areHostProperties = createMultiplePropertyTest(isHostProperty);\n\n    function isTextRange(range) {\n        return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties);\n    }\n\n    var api = {\n        version: \"1.2.2\",\n        initialized: false,\n        supported: true,\n\n        util: {\n            isHostMethod: isHostMethod,\n            isHostObject: isHostObject,\n            isHostProperty: isHostProperty,\n            areHostMethods: areHostMethods,\n            areHostObjects: areHostObjects,\n            areHostProperties: areHostProperties,\n            isTextRange: isTextRange\n        },\n\n        features: {},\n\n        modules: {},\n        config: {\n            alertOnWarn: false,\n            preferTextRange: false\n        }\n    };\n\n    function fail(reason) {\n        window.alert(\"Rangy not supported in your browser. Reason: \" + reason);\n        api.initialized = true;\n        api.supported = false;\n    }\n\n    api.fail = fail;\n\n    function warn(msg) {\n        var warningMessage = \"Rangy warning: \" + msg;\n        if (api.config.alertOnWarn) {\n            window.alert(warningMessage);\n        } else if (typeof window.console != UNDEFINED && typeof window.console.log != UNDEFINED) {\n            window.console.log(warningMessage);\n        }\n    }\n\n    api.warn = warn;\n\n    if ({}.hasOwnProperty) {\n        api.util.extend = function(o, props) {\n            for (var i in props) {\n                if (props.hasOwnProperty(i)) {\n                    o[i] = props[i];\n                }\n            }\n        };\n    } else {\n        fail(\"hasOwnProperty not supported\");\n    }\n\n    var initListeners = [];\n    var moduleInitializers = [];\n\n    // Initialization\n    function init() {\n        if (api.initialized) {\n            return;\n        }\n        var testRange;\n        var implementsDomRange = false, implementsTextRange = false;\n\n        // First, perform basic feature tests\n\n        if (isHostMethod(document, \"createRange\")) {\n            testRange = document.createRange();\n            if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) {\n                implementsDomRange = true;\n            }\n            testRange.detach();\n        }\n\n        var body = isHostObject(document, \"body\") ? document.body : document.getElementsByTagName(\"body\")[0];\n\n        if (body && isHostMethod(body, \"createTextRange\")) {\n            testRange = body.createTextRange();\n            if (isTextRange(testRange)) {\n                implementsTextRange = true;\n            }\n        }\n\n        if (!implementsDomRange && !implementsTextRange) {\n            fail(\"Neither Range nor TextRange are implemented\");\n        }\n\n        api.initialized = true;\n        api.features = {\n            implementsDomRange: implementsDomRange,\n            implementsTextRange: implementsTextRange\n        };\n\n        // Initialize modules and call init listeners\n        var allListeners = moduleInitializers.concat(initListeners);\n        for (var i = 0, len = allListeners.length; i < len; ++i) {\n            try {\n                allListeners[i](api);\n            } catch (ex) {\n                if (isHostObject(window, \"console\") && isHostMethod(window.console, \"log\")) {\n                    window.console.log(\"Init listener threw an exception. Continuing.\", ex);\n                }\n\n            }\n        }\n    }\n\n    // Allow external scripts to initialize this library in case it's loaded after the document has loaded\n    api.init = init;\n\n    // Execute listener immediately if already initialized\n    api.addInitListener = function(listener) {\n        if (api.initialized) {\n            listener(api);\n        } else {\n            initListeners.push(listener);\n        }\n    };\n\n    var createMissingNativeApiListeners = [];\n\n    api.addCreateMissingNativeApiListener = function(listener) {\n        createMissingNativeApiListeners.push(listener);\n    };\n\n    function createMissingNativeApi(win) {\n        win = win || window;\n        init();\n\n        // Notify listeners\n        for (var i = 0, len = createMissingNativeApiListeners.length; i < len; ++i) {\n            createMissingNativeApiListeners[i](win);\n        }\n    }\n\n    api.createMissingNativeApi = createMissingNativeApi;\n\n    /**\n     * @constructor\n     */\n    function Module(name) {\n        this.name = name;\n        this.initialized = false;\n        this.supported = false;\n    }\n\n    Module.prototype.fail = function(reason) {\n        this.initialized = true;\n        this.supported = false;\n\n        throw new Error(\"Module '\" + this.name + \"' failed to load: \" + reason);\n    };\n\n    Module.prototype.warn = function(msg) {\n        api.warn(\"Module \" + this.name + \": \" + msg);\n    };\n\n    Module.prototype.createError = function(msg) {\n        return new Error(\"Error in Rangy \" + this.name + \" module: \" + msg);\n    };\n\n    api.createModule = function(name, initFunc) {\n        var module = new Module(name);\n        api.modules[name] = module;\n\n        moduleInitializers.push(function(api) {\n            initFunc(api, module);\n            module.initialized = true;\n            module.supported = true;\n        });\n    };\n\n    api.requireModules = function(modules) {\n        for (var i = 0, len = modules.length, module, moduleName; i < len; ++i) {\n            moduleName = modules[i];\n            module = api.modules[moduleName];\n            if (!module || !(module instanceof Module)) {\n                throw new Error(\"Module '\" + moduleName + \"' not found\");\n            }\n            if (!module.supported) {\n                throw new Error(\"Module '\" + moduleName + \"' not supported\");\n            }\n        }\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Wait for document to load before running tests\n\n    var docReady = false;\n\n    var loadHandler = function(e) {\n\n        if (!docReady) {\n            docReady = true;\n            if (!api.initialized) {\n                init();\n            }\n        }\n    };\n\n    // Test whether we have window and document objects that we will need\n    if (typeof window == UNDEFINED) {\n        fail(\"No window found\");\n        return;\n    }\n    if (typeof document == UNDEFINED) {\n        fail(\"No document found\");\n        return;\n    }\n\n    if (isHostMethod(document, \"addEventListener\")) {\n        document.addEventListener(\"DOMContentLoaded\", loadHandler, false);\n    }\n\n    // Add a fallback in case the DOMContentLoaded event isn't supported\n    if (isHostMethod(window, \"addEventListener\")) {\n        window.addEventListener(\"load\", loadHandler, false);\n    } else if (isHostMethod(window, \"attachEvent\")) {\n        window.attachEvent(\"onload\", loadHandler);\n    } else {\n        fail(\"Window does not have required addEventListener or attachEvent method\");\n    }\n\n    return api;\n})();\nrangy.createModule(\"DomUtil\", function(api, module) {\n\n    var UNDEF = \"undefined\";\n    var util = api.util;\n\n    // Perform feature tests\n    if (!util.areHostMethods(document, [\"createDocumentFragment\", \"createElement\", \"createTextNode\"])) {\n        module.fail(\"document missing a Node creation method\");\n    }\n\n    if (!util.isHostMethod(document, \"getElementsByTagName\")) {\n        module.fail(\"document missing getElementsByTagName method\");\n    }\n\n    var el = document.createElement(\"div\");\n    if (!util.areHostMethods(el, [\"insertBefore\", \"appendChild\", \"cloneNode\"] ||\n            !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]))) {\n        module.fail(\"Incomplete Element implementation\");\n    }\n\n    // innerHTML is required for Range's createContextualFragment method\n    if (!util.isHostProperty(el, \"innerHTML\")) {\n        module.fail(\"Element is missing innerHTML property\");\n    }\n\n    var textNode = document.createTextNode(\"test\");\n    if (!util.areHostMethods(textNode, [\"splitText\", \"deleteData\", \"insertData\", \"appendData\", \"cloneNode\"] ||\n            !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]) ||\n            !util.areHostProperties(textNode, [\"data\"]))) {\n        module.fail(\"Incomplete Text Node implementation\");\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been\n    // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that\n    // contains just the document as a single element and the value searched for is the document.\n    var arrayContains = /*Array.prototype.indexOf ?\n        function(arr, val) {\n            return arr.indexOf(val) > -1;\n        }:*/\n\n        function(arr, val) {\n            var i = arr.length;\n            while (i--) {\n                if (arr[i] === val) {\n                    return true;\n                }\n            }\n            return false;\n        };\n\n    // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI\n    function isHtmlNamespace(node) {\n        var ns;\n        return typeof node.namespaceURI == UNDEF || ((ns = node.namespaceURI) === null || ns == \"http://www.w3.org/1999/xhtml\");\n    }\n\n    function parentElement(node) {\n        var parent = node.parentNode;\n        return (parent.nodeType == 1) ? parent : null;\n    }\n\n    function getNodeIndex(node) {\n        var i = 0;\n        while( (node = node.previousSibling) ) {\n            i++;\n        }\n        return i;\n    }\n\n    function getNodeLength(node) {\n        var childNodes;\n        return isCharacterDataNode(node) ? node.length : ((childNodes = node.childNodes) ? childNodes.length : 0);\n    }\n\n    function getCommonAncestor(node1, node2) {\n        var ancestors = [], n;\n        for (n = node1; n; n = n.parentNode) {\n            ancestors.push(n);\n        }\n\n        for (n = node2; n; n = n.parentNode) {\n            if (arrayContains(ancestors, n)) {\n                return n;\n            }\n        }\n\n        return null;\n    }\n\n    function isAncestorOf(ancestor, descendant, selfIsAncestor) {\n        var n = selfIsAncestor ? descendant : descendant.parentNode;\n        while (n) {\n            if (n === ancestor) {\n                return true;\n            } else {\n                n = n.parentNode;\n            }\n        }\n        return false;\n    }\n\n    function getClosestAncestorIn(node, ancestor, selfIsAncestor) {\n        var p, n = selfIsAncestor ? node : node.parentNode;\n        while (n) {\n            p = n.parentNode;\n            if (p === ancestor) {\n                return n;\n            }\n            n = p;\n        }\n        return null;\n    }\n\n    function isCharacterDataNode(node) {\n        var t = node.nodeType;\n        return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment\n    }\n\n    function insertAfter(node, precedingNode) {\n        var nextNode = precedingNode.nextSibling, parent = precedingNode.parentNode;\n        if (nextNode) {\n            parent.insertBefore(node, nextNode);\n        } else {\n            parent.appendChild(node);\n        }\n        return node;\n    }\n\n    // Note that we cannot use splitText() because it is bugridden in IE 9.\n    function splitDataNode(node, index) {\n        var newNode = node.cloneNode(false);\n        newNode.deleteData(0, index);\n        node.deleteData(index, node.length - index);\n        insertAfter(newNode, node);\n        return newNode;\n    }\n\n    function getDocument(node) {\n        if (node.nodeType == 9) {\n            return node;\n        } else if (typeof node.ownerDocument != UNDEF) {\n            return node.ownerDocument;\n        } else if (typeof node.document != UNDEF) {\n            return node.document;\n        } else if (node.parentNode) {\n            return getDocument(node.parentNode);\n        } else {\n            throw new Error(\"getDocument: no document found for node\");\n        }\n    }\n\n    function getWindow(node) {\n        var doc = getDocument(node);\n        if (typeof doc.defaultView != UNDEF) {\n            return doc.defaultView;\n        } else if (typeof doc.parentWindow != UNDEF) {\n            return doc.parentWindow;\n        } else {\n            throw new Error(\"Cannot get a window object for node\");\n        }\n    }\n\n    function getIframeDocument(iframeEl) {\n        if (typeof iframeEl.contentDocument != UNDEF) {\n            return iframeEl.contentDocument;\n        } else if (typeof iframeEl.contentWindow != UNDEF) {\n            return iframeEl.contentWindow.document;\n        } else {\n            throw new Error(\"getIframeWindow: No Document object found for iframe element\");\n        }\n    }\n\n    function getIframeWindow(iframeEl) {\n        if (typeof iframeEl.contentWindow != UNDEF) {\n            return iframeEl.contentWindow;\n        } else if (typeof iframeEl.contentDocument != UNDEF) {\n            return iframeEl.contentDocument.defaultView;\n        } else {\n            throw new Error(\"getIframeWindow: No Window object found for iframe element\");\n        }\n    }\n\n    function getBody(doc) {\n        return util.isHostObject(doc, \"body\") ? doc.body : doc.getElementsByTagName(\"body\")[0];\n    }\n\n    function getRootContainer(node) {\n        var parent;\n        while ( (parent = node.parentNode) ) {\n            node = parent;\n        }\n        return node;\n    }\n\n    function comparePoints(nodeA, offsetA, nodeB, offsetB) {\n        // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing\n        var nodeC, root, childA, childB, n;\n        if (nodeA == nodeB) {\n\n            // Case 1: nodes are the same\n            return offsetA === offsetB ? 0 : (offsetA < offsetB) ? -1 : 1;\n        } else if ( (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) ) {\n\n            // Case 2: node C (container B or an ancestor) is a child node of A\n            return offsetA <= getNodeIndex(nodeC) ? -1 : 1;\n        } else if ( (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) ) {\n\n            // Case 3: node C (container A or an ancestor) is a child node of B\n            return getNodeIndex(nodeC) < offsetB  ? -1 : 1;\n        } else {\n\n            // Case 4: containers are siblings or descendants of siblings\n            root = getCommonAncestor(nodeA, nodeB);\n            childA = (nodeA === root) ? root : getClosestAncestorIn(nodeA, root, true);\n            childB = (nodeB === root) ? root : getClosestAncestorIn(nodeB, root, true);\n\n            if (childA === childB) {\n                // This shouldn't be possible\n\n                throw new Error(\"comparePoints got to case 4 and childA and childB are the same!\");\n            } else {\n                n = root.firstChild;\n                while (n) {\n                    if (n === childA) {\n                        return -1;\n                    } else if (n === childB) {\n                        return 1;\n                    }\n                    n = n.nextSibling;\n                }\n                throw new Error(\"Should not be here!\");\n            }\n        }\n    }\n\n    function fragmentFromNodeChildren(node) {\n        var fragment = getDocument(node).createDocumentFragment(), child;\n        while ( (child = node.firstChild) ) {\n            fragment.appendChild(child);\n        }\n        return fragment;\n    }\n\n    function inspectNode(node) {\n        if (!node) {\n            return \"[No node]\";\n        }\n        if (isCharacterDataNode(node)) {\n            return '\"' + node.data + '\"';\n        } else if (node.nodeType == 1) {\n            var idAttr = node.id ? ' id=\"' + node.id + '\"' : \"\";\n            return \"<\" + node.nodeName + idAttr + \">[\" + node.childNodes.length + \"]\";\n        } else {\n            return node.nodeName;\n        }\n    }\n\n    /**\n     * @constructor\n     */\n    function NodeIterator(root) {\n        this.root = root;\n        this._next = root;\n    }\n\n    NodeIterator.prototype = {\n        _current: null,\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            var n = this._current = this._next;\n            var child, next;\n            if (this._current) {\n                child = n.firstChild;\n                if (child) {\n                    this._next = child;\n                } else {\n                    next = null;\n                    while ((n !== this.root) && !(next = n.nextSibling)) {\n                        n = n.parentNode;\n                    }\n                    this._next = next;\n                }\n            }\n            return this._current;\n        },\n\n        detach: function() {\n            this._current = this._next = this.root = null;\n        }\n    };\n\n    function createIterator(root) {\n        return new NodeIterator(root);\n    }\n\n    /**\n     * @constructor\n     */\n    function DomPosition(node, offset) {\n        this.node = node;\n        this.offset = offset;\n    }\n\n    DomPosition.prototype = {\n        equals: function(pos) {\n            return this.node === pos.node & this.offset == pos.offset;\n        },\n\n        inspect: function() {\n            return \"[DomPosition(\" + inspectNode(this.node) + \":\" + this.offset + \")]\";\n        }\n    };\n\n    /**\n     * @constructor\n     */\n    function DOMException(codeName) {\n        this.code = this[codeName];\n        this.codeName = codeName;\n        this.message = \"DOMException: \" + this.codeName;\n    }\n\n    DOMException.prototype = {\n        INDEX_SIZE_ERR: 1,\n        HIERARCHY_REQUEST_ERR: 3,\n        WRONG_DOCUMENT_ERR: 4,\n        NO_MODIFICATION_ALLOWED_ERR: 7,\n        NOT_FOUND_ERR: 8,\n        NOT_SUPPORTED_ERR: 9,\n        INVALID_STATE_ERR: 11\n    };\n\n    DOMException.prototype.toString = function() {\n        return this.message;\n    };\n\n    api.dom = {\n        arrayContains: arrayContains,\n        isHtmlNamespace: isHtmlNamespace,\n        parentElement: parentElement,\n        getNodeIndex: getNodeIndex,\n        getNodeLength: getNodeLength,\n        getCommonAncestor: getCommonAncestor,\n        isAncestorOf: isAncestorOf,\n        getClosestAncestorIn: getClosestAncestorIn,\n        isCharacterDataNode: isCharacterDataNode,\n        insertAfter: insertAfter,\n        splitDataNode: splitDataNode,\n        getDocument: getDocument,\n        getWindow: getWindow,\n        getIframeWindow: getIframeWindow,\n        getIframeDocument: getIframeDocument,\n        getBody: getBody,\n        getRootContainer: getRootContainer,\n        comparePoints: comparePoints,\n        inspectNode: inspectNode,\n        fragmentFromNodeChildren: fragmentFromNodeChildren,\n        createIterator: createIterator,\n        DomPosition: DomPosition\n    };\n\n    api.DOMException = DOMException;\n});rangy.createModule(\"DomRange\", function(api, module) {\n    api.requireModules( [\"DomUtil\"] );\n\n\n    var dom = api.dom;\n    var DomPosition = dom.DomPosition;\n    var DOMException = api.DOMException;\n    \n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Utility functions\n\n    function isNonTextPartiallySelected(node, range) {\n        return (node.nodeType != 3) &&\n               (dom.isAncestorOf(node, range.startContainer, true) || dom.isAncestorOf(node, range.endContainer, true));\n    }\n\n    function getRangeDocument(range) {\n        return dom.getDocument(range.startContainer);\n    }\n\n    function dispatchEvent(range, type, args) {\n        var listeners = range._listeners[type];\n        if (listeners) {\n            for (var i = 0, len = listeners.length; i < len; ++i) {\n                listeners[i].call(range, {target: range, args: args});\n            }\n        }\n    }\n\n    function getBoundaryBeforeNode(node) {\n        return new DomPosition(node.parentNode, dom.getNodeIndex(node));\n    }\n\n    function getBoundaryAfterNode(node) {\n        return new DomPosition(node.parentNode, dom.getNodeIndex(node) + 1);\n    }\n\n    function insertNodeAtPosition(node, n, o) {\n        var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node;\n        if (dom.isCharacterDataNode(n)) {\n            if (o == n.length) {\n                dom.insertAfter(node, n);\n            } else {\n                n.parentNode.insertBefore(node, o == 0 ? n : dom.splitDataNode(n, o));\n            }\n        } else if (o >= n.childNodes.length) {\n            n.appendChild(node);\n        } else {\n            n.insertBefore(node, n.childNodes[o]);\n        }\n        return firstNodeInserted;\n    }\n\n    function cloneSubtree(iterator) {\n        var partiallySelected;\n        for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) {\n            partiallySelected = iterator.isPartiallySelectedSubtree();\n\n            node = node.cloneNode(!partiallySelected);\n            if (partiallySelected) {\n                subIterator = iterator.getSubtreeIterator();\n                node.appendChild(cloneSubtree(subIterator));\n                subIterator.detach(true);\n            }\n\n            if (node.nodeType == 10) { // DocumentType\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n            frag.appendChild(node);\n        }\n        return frag;\n    }\n\n    function iterateSubtree(rangeIterator, func, iteratorState) {\n        var it, n;\n        iteratorState = iteratorState || { stop: false };\n        for (var node, subRangeIterator; node = rangeIterator.next(); ) {\n            //log.debug(\"iterateSubtree, partially selected: \" + rangeIterator.isPartiallySelectedSubtree(), nodeToString(node));\n            if (rangeIterator.isPartiallySelectedSubtree()) {\n                // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of the\n                // node selected by the Range.\n                if (func(node) === false) {\n                    iteratorState.stop = true;\n                    return;\n                } else {\n                    subRangeIterator = rangeIterator.getSubtreeIterator();\n                    iterateSubtree(subRangeIterator, func, iteratorState);\n                    subRangeIterator.detach(true);\n                    if (iteratorState.stop) {\n                        return;\n                    }\n                }\n            } else {\n                // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its\n                // descendant\n                it = dom.createIterator(node);\n                while ( (n = it.next()) ) {\n                    if (func(n) === false) {\n                        iteratorState.stop = true;\n                        return;\n                    }\n                }\n            }\n        }\n    }\n\n    function deleteSubtree(iterator) {\n        var subIterator;\n        while (iterator.next()) {\n            if (iterator.isPartiallySelectedSubtree()) {\n                subIterator = iterator.getSubtreeIterator();\n                deleteSubtree(subIterator);\n                subIterator.detach(true);\n            } else {\n                iterator.remove();\n            }\n        }\n    }\n\n    function extractSubtree(iterator) {\n\n        for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) {\n\n\n            if (iterator.isPartiallySelectedSubtree()) {\n                node = node.cloneNode(false);\n                subIterator = iterator.getSubtreeIterator();\n                node.appendChild(extractSubtree(subIterator));\n                subIterator.detach(true);\n            } else {\n                iterator.remove();\n            }\n            if (node.nodeType == 10) { // DocumentType\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n            frag.appendChild(node);\n        }\n        return frag;\n    }\n\n    function getNodesInRange(range, nodeTypes, filter) {\n        //log.info(\"getNodesInRange, \" + nodeTypes.join(\",\"));\n        var filterNodeTypes = !!(nodeTypes && nodeTypes.length), regex;\n        var filterExists = !!filter;\n        if (filterNodeTypes) {\n            regex = new RegExp(\"^(\" + nodeTypes.join(\"|\") + \")$\");\n        }\n\n        var nodes = [];\n        iterateSubtree(new RangeIterator(range, false), function(node) {\n            if ((!filterNodeTypes || regex.test(node.nodeType)) && (!filterExists || filter(node))) {\n                nodes.push(node);\n            }\n        });\n        return nodes;\n    }\n\n    function inspect(range) {\n        var name = (typeof range.getName == \"undefined\") ? \"Range\" : range.getName();\n        return \"[\" + name + \"(\" + dom.inspectNode(range.startContainer) + \":\" + range.startOffset + \", \" +\n                dom.inspectNode(range.endContainer) + \":\" + range.endOffset + \")]\";\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange)\n\n    /**\n     * @constructor\n     */\n    function RangeIterator(range, clonePartiallySelectedTextNodes) {\n        this.range = range;\n        this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes;\n\n\n\n        if (!range.collapsed) {\n            this.sc = range.startContainer;\n            this.so = range.startOffset;\n            this.ec = range.endContainer;\n            this.eo = range.endOffset;\n            var root = range.commonAncestorContainer;\n\n            if (this.sc === this.ec && dom.isCharacterDataNode(this.sc)) {\n                this.isSingleCharacterDataNode = true;\n                this._first = this._last = this._next = this.sc;\n            } else {\n                this._first = this._next = (this.sc === root && !dom.isCharacterDataNode(this.sc)) ?\n                    this.sc.childNodes[this.so] : dom.getClosestAncestorIn(this.sc, root, true);\n                this._last = (this.ec === root && !dom.isCharacterDataNode(this.ec)) ?\n                    this.ec.childNodes[this.eo - 1] : dom.getClosestAncestorIn(this.ec, root, true);\n            }\n\n        }\n    }\n\n    RangeIterator.prototype = {\n        _current: null,\n        _next: null,\n        _first: null,\n        _last: null,\n        isSingleCharacterDataNode: false,\n\n        reset: function() {\n            this._current = null;\n            this._next = this._first;\n        },\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            // Move to next node\n            var current = this._current = this._next;\n            if (current) {\n                this._next = (current !== this._last) ? current.nextSibling : null;\n\n                // Check for partially selected text nodes\n                if (dom.isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) {\n                    if (current === this.ec) {\n\n                        (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo);\n                    }\n                    if (this._current === this.sc) {\n\n                        (current = current.cloneNode(true)).deleteData(0, this.so);\n                    }\n                }\n            }\n\n            return current;\n        },\n\n        remove: function() {\n            var current = this._current, start, end;\n\n            if (dom.isCharacterDataNode(current) && (current === this.sc || current === this.ec)) {\n                start = (current === this.sc) ? this.so : 0;\n                end = (current === this.ec) ? this.eo : current.length;\n                if (start != end) {\n                    current.deleteData(start, end - start);\n                }\n            } else {\n                if (current.parentNode) {\n                    current.parentNode.removeChild(current);\n                } else {\n\n                }\n            }\n        },\n\n        // Checks if the current node is partially selected\n        isPartiallySelectedSubtree: function() {\n            var current = this._current;\n            return isNonTextPartiallySelected(current, this.range);\n        },\n\n        getSubtreeIterator: function() {\n            var subRange;\n            if (this.isSingleCharacterDataNode) {\n                subRange = this.range.cloneRange();\n                subRange.collapse();\n            } else {\n                subRange = new Range(getRangeDocument(this.range));\n                var current = this._current;\n                var startContainer = current, startOffset = 0, endContainer = current, endOffset = dom.getNodeLength(current);\n\n                if (dom.isAncestorOf(current, this.sc, true)) {\n                    startContainer = this.sc;\n                    startOffset = this.so;\n                }\n                if (dom.isAncestorOf(current, this.ec, true)) {\n                    endContainer = this.ec;\n                    endOffset = this.eo;\n                }\n\n                updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset);\n            }\n            return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes);\n        },\n\n        detach: function(detachRange) {\n            if (detachRange) {\n                this.range.detach();\n            }\n            this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null;\n        }\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Exceptions\n\n    /**\n     * @constructor\n     */\n    function RangeException(codeName) {\n        this.code = this[codeName];\n        this.codeName = codeName;\n        this.message = \"RangeException: \" + this.codeName;\n    }\n\n    RangeException.prototype = {\n        BAD_BOUNDARYPOINTS_ERR: 1,\n        INVALID_NODE_TYPE_ERR: 2\n    };\n\n    RangeException.prototype.toString = function() {\n        return this.message;\n    };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    /**\n     * Currently iterates through all nodes in the range on creation until I think of a decent way to do it\n     * TODO: Look into making this a proper iterator, not requiring preloading everything first\n     * @constructor\n     */\n    function RangeNodeIterator(range, nodeTypes, filter) {\n        this.nodes = getNodesInRange(range, nodeTypes, filter);\n        this._next = this.nodes[0];\n        this._position = 0;\n    }\n\n    RangeNodeIterator.prototype = {\n        _current: null,\n\n        hasNext: function() {\n            return !!this._next;\n        },\n\n        next: function() {\n            this._current = this._next;\n            this._next = this.nodes[ ++this._position ];\n            return this._current;\n        },\n\n        detach: function() {\n            this._current = this._next = this.nodes = null;\n        }\n    };\n\n    var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10];\n    var rootContainerNodeTypes = [2, 9, 11];\n    var readonlyNodeTypes = [5, 6, 10, 12];\n    var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11];\n    var surroundNodeTypes = [1, 3, 4, 5, 7, 8];\n\n    function createAncestorFinder(nodeTypes) {\n        return function(node, selfIsAncestor) {\n            var t, n = selfIsAncestor ? node : node.parentNode;\n            while (n) {\n                t = n.nodeType;\n                if (dom.arrayContains(nodeTypes, t)) {\n                    return n;\n                }\n                n = n.parentNode;\n            }\n            return null;\n        };\n    }\n\n    var getRootContainer = dom.getRootContainer;\n    var getDocumentOrFragmentContainer = createAncestorFinder( [9, 11] );\n    var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes);\n    var getDocTypeNotationEntityAncestor = createAncestorFinder( [6, 10, 12] );\n\n    function assertNoDocTypeNotationEntityAncestor(node, allowSelf) {\n        if (getDocTypeNotationEntityAncestor(node, allowSelf)) {\n            throw new RangeException(\"INVALID_NODE_TYPE_ERR\");\n        }\n    }\n\n    function assertNotDetached(range) {\n        if (!range.startContainer) {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    }\n\n    function assertValidNodeType(node, invalidTypes) {\n        if (!dom.arrayContains(invalidTypes, node.nodeType)) {\n            throw new RangeException(\"INVALID_NODE_TYPE_ERR\");\n        }\n    }\n\n    function assertValidOffset(node, offset) {\n        if (offset < 0 || offset > (dom.isCharacterDataNode(node) ? node.length : node.childNodes.length)) {\n            throw new DOMException(\"INDEX_SIZE_ERR\");\n        }\n    }\n\n    function assertSameDocumentOrFragment(node1, node2) {\n        if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) {\n            throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n        }\n    }\n\n    function assertNodeNotReadOnly(node) {\n        if (getReadonlyAncestor(node, true)) {\n            throw new DOMException(\"NO_MODIFICATION_ALLOWED_ERR\");\n        }\n    }\n\n    function assertNode(node, codeName) {\n        if (!node) {\n            throw new DOMException(codeName);\n        }\n    }\n\n    function isOrphan(node) {\n        return !dom.arrayContains(rootContainerNodeTypes, node.nodeType) && !getDocumentOrFragmentContainer(node, true);\n    }\n\n    function isValidOffset(node, offset) {\n        return offset <= (dom.isCharacterDataNode(node) ? node.length : node.childNodes.length);\n    }\n\n    function assertRangeValid(range) {\n        assertNotDetached(range);\n        if (isOrphan(range.startContainer) || isOrphan(range.endContainer) ||\n                !isValidOffset(range.startContainer, range.startOffset) ||\n                !isValidOffset(range.endContainer, range.endOffset)) {\n            throw new Error(\"Range error: Range is no longer valid after DOM mutation (\" + range.inspect() + \")\");\n        }\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Test the browser's innerHTML support to decide how to implement createContextualFragment\n    var styleEl = document.createElement(\"style\");\n    var htmlParsingConforms = false;\n    try {\n        styleEl.innerHTML = \"<b>x</b>\";\n        htmlParsingConforms = (styleEl.firstChild.nodeType == 3); // Opera incorrectly creates an element node\n    } catch (e) {\n        // IE 6 and 7 throw\n    }\n\n    api.features.htmlParsingConforms = htmlParsingConforms;\n\n    var createContextualFragment = htmlParsingConforms ?\n\n        // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See\n        // discussion and base code for this implementation at issue 67.\n        // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface\n        // Thanks to Aleks Williams.\n        function(fragmentStr) {\n            // \"Let node the context object's start's node.\"\n            var node = this.startContainer;\n            var doc = dom.getDocument(node);\n\n            // \"If the context object's start's node is null, raise an INVALID_STATE_ERR\n            // exception and abort these steps.\"\n            if (!node) {\n                throw new DOMException(\"INVALID_STATE_ERR\");\n            }\n\n            // \"Let element be as follows, depending on node's interface:\"\n            // Document, Document Fragment: null\n            var el = null;\n\n            // \"Element: node\"\n            if (node.nodeType == 1) {\n                el = node;\n\n            // \"Text, Comment: node's parentElement\"\n            } else if (dom.isCharacterDataNode(node)) {\n                el = dom.parentElement(node);\n            }\n\n            // \"If either element is null or element's ownerDocument is an HTML document\n            // and element's local name is \"html\" and element's namespace is the HTML\n            // namespace\"\n            if (el === null || (\n                el.nodeName == \"HTML\"\n                && dom.isHtmlNamespace(dom.getDocument(el).documentElement)\n                && dom.isHtmlNamespace(el)\n            )) {\n\n            // \"let element be a new Element with \"body\" as its local name and the HTML\n            // namespace as its namespace.\"\"\n                el = doc.createElement(\"body\");\n            } else {\n                el = el.cloneNode(false);\n            }\n\n            // \"If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm.\"\n            // \"If the node's document is an XML document: Invoke the XML fragment parsing algorithm.\"\n            // \"In either case, the algorithm must be invoked with fragment as the input\n            // and element as the context element.\"\n            el.innerHTML = fragmentStr;\n\n            // \"If this raises an exception, then abort these steps. Otherwise, let new\n            // children be the nodes returned.\"\n\n            // \"Let fragment be a new DocumentFragment.\"\n            // \"Append all new children to fragment.\"\n            // \"Return fragment.\"\n            return dom.fragmentFromNodeChildren(el);\n        } :\n\n        // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that\n        // previous versions of Rangy used (with the exception of using a body element rather than a div)\n        function(fragmentStr) {\n            assertNotDetached(this);\n            var doc = getRangeDocument(this);\n            var el = doc.createElement(\"body\");\n            el.innerHTML = fragmentStr;\n\n            return dom.fragmentFromNodeChildren(el);\n        };\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    var rangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\",\n        \"commonAncestorContainer\"];\n\n    var s2s = 0, s2e = 1, e2e = 2, e2s = 3;\n    var n_b = 0, n_a = 1, n_b_a = 2, n_i = 3;\n\n    function RangePrototype() {}\n\n    RangePrototype.prototype = {\n        attachListener: function(type, listener) {\n            this._listeners[type].push(listener);\n        },\n\n        compareBoundaryPoints: function(how, range) {\n            assertRangeValid(this);\n            assertSameDocumentOrFragment(this.startContainer, range.startContainer);\n\n            var nodeA, offsetA, nodeB, offsetB;\n            var prefixA = (how == e2s || how == s2s) ? \"start\" : \"end\";\n            var prefixB = (how == s2e || how == s2s) ? \"start\" : \"end\";\n            nodeA = this[prefixA + \"Container\"];\n            offsetA = this[prefixA + \"Offset\"];\n            nodeB = range[prefixB + \"Container\"];\n            offsetB = range[prefixB + \"Offset\"];\n            return dom.comparePoints(nodeA, offsetA, nodeB, offsetB);\n        },\n\n        insertNode: function(node) {\n            assertRangeValid(this);\n            assertValidNodeType(node, insertableNodeTypes);\n            assertNodeNotReadOnly(this.startContainer);\n\n            if (dom.isAncestorOf(node, this.startContainer, true)) {\n                throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n            }\n\n            // No check for whether the container of the start of the Range is of a type that does not allow\n            // children of the type of node: the browser's DOM implementation should do this for us when we attempt\n            // to add the node\n\n            var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset);\n            this.setStartBefore(firstNodeInserted);\n        },\n\n        cloneContents: function() {\n            assertRangeValid(this);\n\n            var clone, frag;\n            if (this.collapsed) {\n                return getRangeDocument(this).createDocumentFragment();\n            } else {\n                if (this.startContainer === this.endContainer && dom.isCharacterDataNode(this.startContainer)) {\n                    clone = this.startContainer.cloneNode(true);\n                    clone.data = clone.data.slice(this.startOffset, this.endOffset);\n                    frag = getRangeDocument(this).createDocumentFragment();\n                    frag.appendChild(clone);\n                    return frag;\n                } else {\n                    var iterator = new RangeIterator(this, true);\n                    clone = cloneSubtree(iterator);\n                    iterator.detach();\n                }\n                return clone;\n            }\n        },\n\n        canSurroundContents: function() {\n            assertRangeValid(this);\n            assertNodeNotReadOnly(this.startContainer);\n            assertNodeNotReadOnly(this.endContainer);\n\n            // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n            // no non-text nodes.\n            var iterator = new RangeIterator(this, true);\n            var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) ||\n                    (iterator._last && isNonTextPartiallySelected(iterator._last, this)));\n            iterator.detach();\n            return !boundariesInvalid;\n        },\n\n        surroundContents: function(node) {\n            assertValidNodeType(node, surroundNodeTypes);\n\n            if (!this.canSurroundContents()) {\n                throw new RangeException(\"BAD_BOUNDARYPOINTS_ERR\");\n            }\n\n            // Extract the contents\n            var content = this.extractContents();\n\n            // Clear the children of the node\n            if (node.hasChildNodes()) {\n                while (node.lastChild) {\n                    node.removeChild(node.lastChild);\n                }\n            }\n\n            // Insert the new node and add the extracted contents\n            insertNodeAtPosition(node, this.startContainer, this.startOffset);\n            node.appendChild(content);\n\n            this.selectNode(node);\n        },\n\n        cloneRange: function() {\n            assertRangeValid(this);\n            var range = new Range(getRangeDocument(this));\n            var i = rangeProperties.length, prop;\n            while (i--) {\n                prop = rangeProperties[i];\n                range[prop] = this[prop];\n            }\n            return range;\n        },\n\n        toString: function() {\n            assertRangeValid(this);\n            var sc = this.startContainer;\n            if (sc === this.endContainer && dom.isCharacterDataNode(sc)) {\n                return (sc.nodeType == 3 || sc.nodeType == 4) ? sc.data.slice(this.startOffset, this.endOffset) : \"\";\n            } else {\n                var textBits = [], iterator = new RangeIterator(this, true);\n\n                iterateSubtree(iterator, function(node) {\n                    // Accept only text or CDATA nodes, not comments\n\n                    if (node.nodeType == 3 || node.nodeType == 4) {\n                        textBits.push(node.data);\n                    }\n                });\n                iterator.detach();\n                return textBits.join(\"\");\n            }\n        },\n\n        // The methods below are all non-standard. The following batch were introduced by Mozilla but have since\n        // been removed from Mozilla.\n\n        compareNode: function(node) {\n            assertRangeValid(this);\n\n            var parent = node.parentNode;\n            var nodeIndex = dom.getNodeIndex(node);\n\n            if (!parent) {\n                throw new DOMException(\"NOT_FOUND_ERR\");\n            }\n\n            var startComparison = this.comparePoint(parent, nodeIndex),\n                endComparison = this.comparePoint(parent, nodeIndex + 1);\n\n            if (startComparison < 0) { // Node starts before\n                return (endComparison > 0) ? n_b_a : n_b;\n            } else {\n                return (endComparison > 0) ? n_a : n_i;\n            }\n        },\n\n        comparePoint: function(node, offset) {\n            assertRangeValid(this);\n            assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n            assertSameDocumentOrFragment(node, this.startContainer);\n\n            if (dom.comparePoints(node, offset, this.startContainer, this.startOffset) < 0) {\n                return -1;\n            } else if (dom.comparePoints(node, offset, this.endContainer, this.endOffset) > 0) {\n                return 1;\n            }\n            return 0;\n        },\n\n        createContextualFragment: createContextualFragment,\n\n        toHtml: function() {\n            assertRangeValid(this);\n            var container = getRangeDocument(this).createElement(\"div\");\n            container.appendChild(this.cloneContents());\n            return container.innerHTML;\n        },\n\n        // touchingIsIntersecting determines whether this method considers a node that borders a range intersects\n        // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default)\n        intersectsNode: function(node, touchingIsIntersecting) {\n            assertRangeValid(this);\n            assertNode(node, \"NOT_FOUND_ERR\");\n            if (dom.getDocument(node) !== getRangeDocument(this)) {\n                return false;\n            }\n\n            var parent = node.parentNode, offset = dom.getNodeIndex(node);\n            assertNode(parent, \"NOT_FOUND_ERR\");\n\n            var startComparison = dom.comparePoints(parent, offset, this.endContainer, this.endOffset),\n                endComparison = dom.comparePoints(parent, offset + 1, this.startContainer, this.startOffset);\n\n            return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n        },\n\n\n        isPointInRange: function(node, offset) {\n            assertRangeValid(this);\n            assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n            assertSameDocumentOrFragment(node, this.startContainer);\n\n            return (dom.comparePoints(node, offset, this.startContainer, this.startOffset) >= 0) &&\n                   (dom.comparePoints(node, offset, this.endContainer, this.endOffset) <= 0);\n        },\n\n        // The methods below are non-standard and invented by me.\n\n        // Sharing a boundary start-to-end or end-to-start does not count as intersection.\n        intersectsRange: function(range, touchingIsIntersecting) {\n            assertRangeValid(this);\n\n            if (getRangeDocument(range) != getRangeDocument(this)) {\n                throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n            }\n\n            var startComparison = dom.comparePoints(this.startContainer, this.startOffset, range.endContainer, range.endOffset),\n                endComparison = dom.comparePoints(this.endContainer, this.endOffset, range.startContainer, range.startOffset);\n\n            return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n        },\n\n        intersection: function(range) {\n            if (this.intersectsRange(range)) {\n                var startComparison = dom.comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset),\n                    endComparison = dom.comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset);\n\n                var intersectionRange = this.cloneRange();\n\n                if (startComparison == -1) {\n                    intersectionRange.setStart(range.startContainer, range.startOffset);\n                }\n                if (endComparison == 1) {\n                    intersectionRange.setEnd(range.endContainer, range.endOffset);\n                }\n                return intersectionRange;\n            }\n            return null;\n        },\n\n        union: function(range) {\n            if (this.intersectsRange(range, true)) {\n                var unionRange = this.cloneRange();\n                if (dom.comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) {\n                    unionRange.setStart(range.startContainer, range.startOffset);\n                }\n                if (dom.comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) {\n                    unionRange.setEnd(range.endContainer, range.endOffset);\n                }\n                return unionRange;\n            } else {\n                throw new RangeException(\"Ranges do not intersect\");\n            }\n        },\n\n        containsNode: function(node, allowPartial) {\n            if (allowPartial) {\n                return this.intersectsNode(node, false);\n            } else {\n                return this.compareNode(node) == n_i;\n            }\n        },\n\n        containsNodeContents: function(node) {\n            return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, dom.getNodeLength(node)) <= 0;\n        },\n\n        containsRange: function(range) {\n            return this.intersection(range).equals(range);\n        },\n\n        containsNodeText: function(node) {\n            var nodeRange = this.cloneRange();\n            nodeRange.selectNode(node);\n            var textNodes = nodeRange.getNodes([3]);\n            if (textNodes.length > 0) {\n                nodeRange.setStart(textNodes[0], 0);\n                var lastTextNode = textNodes.pop();\n                nodeRange.setEnd(lastTextNode, lastTextNode.length);\n                var contains = this.containsRange(nodeRange);\n                nodeRange.detach();\n                return contains;\n            } else {\n                return this.containsNodeContents(node);\n            }\n        },\n\n        createNodeIterator: function(nodeTypes, filter) {\n            assertRangeValid(this);\n            return new RangeNodeIterator(this, nodeTypes, filter);\n        },\n\n        getNodes: function(nodeTypes, filter) {\n            assertRangeValid(this);\n            return getNodesInRange(this, nodeTypes, filter);\n        },\n\n        getDocument: function() {\n            return getRangeDocument(this);\n        },\n\n        collapseBefore: function(node) {\n            assertNotDetached(this);\n\n            this.setEndBefore(node);\n            this.collapse(false);\n        },\n\n        collapseAfter: function(node) {\n            assertNotDetached(this);\n\n            this.setStartAfter(node);\n            this.collapse(true);\n        },\n\n        getName: function() {\n            return \"DomRange\";\n        },\n\n        equals: function(range) {\n            return Range.rangesEqual(this, range);\n        },\n\n        inspect: function() {\n            return inspect(this);\n        }\n    };\n\n    function copyComparisonConstantsToObject(obj) {\n        obj.START_TO_START = s2s;\n        obj.START_TO_END = s2e;\n        obj.END_TO_END = e2e;\n        obj.END_TO_START = e2s;\n\n        obj.NODE_BEFORE = n_b;\n        obj.NODE_AFTER = n_a;\n        obj.NODE_BEFORE_AND_AFTER = n_b_a;\n        obj.NODE_INSIDE = n_i;\n    }\n\n    function copyComparisonConstants(constructor) {\n        copyComparisonConstantsToObject(constructor);\n        copyComparisonConstantsToObject(constructor.prototype);\n    }\n\n    function createRangeContentRemover(remover, boundaryUpdater) {\n        return function() {\n            assertRangeValid(this);\n\n            var sc = this.startContainer, so = this.startOffset, root = this.commonAncestorContainer;\n\n            var iterator = new RangeIterator(this, true);\n\n            // Work out where to position the range after content removal\n            var node, boundary;\n            if (sc !== root) {\n                node = dom.getClosestAncestorIn(sc, root, true);\n                boundary = getBoundaryAfterNode(node);\n                sc = boundary.node;\n                so = boundary.offset;\n            }\n\n            // Check none of the range is read-only\n            iterateSubtree(iterator, assertNodeNotReadOnly);\n\n            iterator.reset();\n\n            // Remove the content\n            var returnValue = remover(iterator);\n            iterator.detach();\n\n            // Move to the new position\n            boundaryUpdater(this, sc, so, sc, so);\n\n            return returnValue;\n        };\n    }\n\n    function createPrototypeRange(constructor, boundaryUpdater, detacher) {\n        function createBeforeAfterNodeSetter(isBefore, isStart) {\n            return function(node) {\n                assertNotDetached(this);\n                assertValidNodeType(node, beforeAfterNodeTypes);\n                assertValidNodeType(getRootContainer(node), rootContainerNodeTypes);\n\n                var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node);\n                (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset);\n            };\n        }\n\n        function setRangeStart(range, node, offset) {\n            var ec = range.endContainer, eo = range.endOffset;\n            if (node !== range.startContainer || offset !== range.startOffset) {\n                // Check the root containers of the range and the new boundary, and also check whether the new boundary\n                // is after the current end. In either case, collapse the range to the new position\n                if (getRootContainer(node) != getRootContainer(ec) || dom.comparePoints(node, offset, ec, eo) == 1) {\n                    ec = node;\n                    eo = offset;\n                }\n                boundaryUpdater(range, node, offset, ec, eo);\n            }\n        }\n\n        function setRangeEnd(range, node, offset) {\n            var sc = range.startContainer, so = range.startOffset;\n            if (node !== range.endContainer || offset !== range.endOffset) {\n                // Check the root containers of the range and the new boundary, and also check whether the new boundary\n                // is after the current end. In either case, collapse the range to the new position\n                if (getRootContainer(node) != getRootContainer(sc) || dom.comparePoints(node, offset, sc, so) == -1) {\n                    sc = node;\n                    so = offset;\n                }\n                boundaryUpdater(range, sc, so, node, offset);\n            }\n        }\n\n        function setRangeStartAndEnd(range, node, offset) {\n            if (node !== range.startContainer || offset !== range.startOffset || node !== range.endContainer || offset !== range.endOffset) {\n                boundaryUpdater(range, node, offset, node, offset);\n            }\n        }\n\n        constructor.prototype = new RangePrototype();\n\n        api.util.extend(constructor.prototype, {\n            setStart: function(node, offset) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeStart(this, node, offset);\n            },\n\n            setEnd: function(node, offset) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeEnd(this, node, offset);\n            },\n\n            setStartBefore: createBeforeAfterNodeSetter(true, true),\n            setStartAfter: createBeforeAfterNodeSetter(false, true),\n            setEndBefore: createBeforeAfterNodeSetter(true, false),\n            setEndAfter: createBeforeAfterNodeSetter(false, false),\n\n            collapse: function(isStart) {\n                assertRangeValid(this);\n                if (isStart) {\n                    boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset);\n                } else {\n                    boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset);\n                }\n            },\n\n            selectNodeContents: function(node) {\n                // This doesn't seem well specified: the spec talks only about selecting the node's contents, which\n                // could be taken to mean only its children. However, browsers implement this the same as selectNode for\n                // text nodes, so I shall do likewise\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, true);\n\n                boundaryUpdater(this, node, 0, node, dom.getNodeLength(node));\n            },\n\n            selectNode: function(node) {\n                assertNotDetached(this);\n                assertNoDocTypeNotationEntityAncestor(node, false);\n                assertValidNodeType(node, beforeAfterNodeTypes);\n\n                var start = getBoundaryBeforeNode(node), end = getBoundaryAfterNode(node);\n                boundaryUpdater(this, start.node, start.offset, end.node, end.offset);\n            },\n\n            extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater),\n\n            deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater),\n\n            canSurroundContents: function() {\n                assertRangeValid(this);\n                assertNodeNotReadOnly(this.startContainer);\n                assertNodeNotReadOnly(this.endContainer);\n\n                // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n                // no non-text nodes.\n                var iterator = new RangeIterator(this, true);\n                var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) ||\n                        (iterator._last && isNonTextPartiallySelected(iterator._last, this)));\n                iterator.detach();\n                return !boundariesInvalid;\n            },\n\n            detach: function() {\n                detacher(this);\n            },\n\n            splitBoundaries: function() {\n                assertRangeValid(this);\n\n\n                var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset;\n                var startEndSame = (sc === ec);\n\n                if (dom.isCharacterDataNode(ec) && eo > 0 && eo < ec.length) {\n                    dom.splitDataNode(ec, eo);\n\n                }\n\n                if (dom.isCharacterDataNode(sc) && so > 0 && so < sc.length) {\n\n                    sc = dom.splitDataNode(sc, so);\n                    if (startEndSame) {\n                        eo -= so;\n                        ec = sc;\n                    } else if (ec == sc.parentNode && eo >= dom.getNodeIndex(sc)) {\n                        eo++;\n                    }\n                    so = 0;\n\n                }\n                boundaryUpdater(this, sc, so, ec, eo);\n            },\n\n            normalizeBoundaries: function() {\n                assertRangeValid(this);\n\n                var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset;\n\n                var mergeForward = function(node) {\n                    var sibling = node.nextSibling;\n                    if (sibling && sibling.nodeType == node.nodeType) {\n                        ec = node;\n                        eo = node.length;\n                        node.appendData(sibling.data);\n                        sibling.parentNode.removeChild(sibling);\n                    }\n                };\n\n                var mergeBackward = function(node) {\n                    var sibling = node.previousSibling;\n                    if (sibling && sibling.nodeType == node.nodeType) {\n                        sc = node;\n                        var nodeLength = node.length;\n                        so = sibling.length;\n                        node.insertData(0, sibling.data);\n                        sibling.parentNode.removeChild(sibling);\n                        if (sc == ec) {\n                            eo += so;\n                            ec = sc;\n                        } else if (ec == node.parentNode) {\n                            var nodeIndex = dom.getNodeIndex(node);\n                            if (eo == nodeIndex) {\n                                ec = node;\n                                eo = nodeLength;\n                            } else if (eo > nodeIndex) {\n                                eo--;\n                            }\n                        }\n                    }\n                };\n\n                var normalizeStart = true;\n\n                if (dom.isCharacterDataNode(ec)) {\n                    if (ec.length == eo) {\n                        mergeForward(ec);\n                    }\n                } else {\n                    if (eo > 0) {\n                        var endNode = ec.childNodes[eo - 1];\n                        if (endNode && dom.isCharacterDataNode(endNode)) {\n                            mergeForward(endNode);\n                        }\n                    }\n                    normalizeStart = !this.collapsed;\n                }\n\n                if (normalizeStart) {\n                    if (dom.isCharacterDataNode(sc)) {\n                        if (so == 0) {\n                            mergeBackward(sc);\n                        }\n                    } else {\n                        if (so < sc.childNodes.length) {\n                            var startNode = sc.childNodes[so];\n                            if (startNode && dom.isCharacterDataNode(startNode)) {\n                                mergeBackward(startNode);\n                            }\n                        }\n                    }\n                } else {\n                    sc = ec;\n                    so = eo;\n                }\n\n                boundaryUpdater(this, sc, so, ec, eo);\n            },\n\n            collapseToPoint: function(node, offset) {\n                assertNotDetached(this);\n\n                assertNoDocTypeNotationEntityAncestor(node, true);\n                assertValidOffset(node, offset);\n\n                setRangeStartAndEnd(this, node, offset);\n            }\n        });\n\n        copyComparisonConstants(constructor);\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    // Updates commonAncestorContainer and collapsed after boundary change\n    function updateCollapsedAndCommonAncestor(range) {\n        range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset);\n        range.commonAncestorContainer = range.collapsed ?\n            range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer);\n    }\n\n    function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) {\n        var startMoved = (range.startContainer !== startContainer || range.startOffset !== startOffset);\n        var endMoved = (range.endContainer !== endContainer || range.endOffset !== endOffset);\n\n        range.startContainer = startContainer;\n        range.startOffset = startOffset;\n        range.endContainer = endContainer;\n        range.endOffset = endOffset;\n\n        updateCollapsedAndCommonAncestor(range);\n        dispatchEvent(range, \"boundarychange\", {startMoved: startMoved, endMoved: endMoved});\n    }\n\n    function detach(range) {\n        assertNotDetached(range);\n        range.startContainer = range.startOffset = range.endContainer = range.endOffset = null;\n        range.collapsed = range.commonAncestorContainer = null;\n        dispatchEvent(range, \"detach\", null);\n        range._listeners = null;\n    }\n\n    /**\n     * @constructor\n     */\n    function Range(doc) {\n        this.startContainer = doc;\n        this.startOffset = 0;\n        this.endContainer = doc;\n        this.endOffset = 0;\n        this._listeners = {\n            boundarychange: [],\n            detach: []\n        };\n        updateCollapsedAndCommonAncestor(this);\n    }\n\n    createPrototypeRange(Range, updateBoundaries, detach);\n\n    api.rangePrototype = RangePrototype.prototype;\n\n    Range.rangeProperties = rangeProperties;\n    Range.RangeIterator = RangeIterator;\n    Range.copyComparisonConstants = copyComparisonConstants;\n    Range.createPrototypeRange = createPrototypeRange;\n    Range.inspect = inspect;\n    Range.getRangeDocument = getRangeDocument;\n    Range.rangesEqual = function(r1, r2) {\n        return r1.startContainer === r2.startContainer &&\n               r1.startOffset === r2.startOffset &&\n               r1.endContainer === r2.endContainer &&\n               r1.endOffset === r2.endOffset;\n    };\n\n    api.DomRange = Range;\n    api.RangeException = RangeException;\n});rangy.createModule(\"WrappedRange\", function(api, module) {\n    api.requireModules( [\"DomUtil\", \"DomRange\"] );\n\n    /**\n     * @constructor\n     */\n    var WrappedRange;\n    var dom = api.dom;\n    var DomPosition = dom.DomPosition;\n    var DomRange = api.DomRange;\n\n\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    /*\n    This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement()\n    method. For example, in the following (where pipes denote the selection boundaries):\n\n    <ul id=\"ul\"><li id=\"a\">| a </li><li id=\"b\"> b |</li></ul>\n\n    var range = document.selection.createRange();\n    alert(range.parentElement().id); // Should alert \"ul\" but alerts \"b\"\n\n    This method returns the common ancestor node of the following:\n    - the parentElement() of the textRange\n    - the parentElement() of the textRange after calling collapse(true)\n    - the parentElement() of the textRange after calling collapse(false)\n     */\n    function getTextRangeContainerElement(textRange) {\n        var parentEl = textRange.parentElement();\n\n        var range = textRange.duplicate();\n        range.collapse(true);\n        var startEl = range.parentElement();\n        range = textRange.duplicate();\n        range.collapse(false);\n        var endEl = range.parentElement();\n        var startEndContainer = (startEl == endEl) ? startEl : dom.getCommonAncestor(startEl, endEl);\n\n        return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer);\n    }\n\n    function textRangeIsCollapsed(textRange) {\n        return textRange.compareEndPoints(\"StartToEnd\", textRange) == 0;\n    }\n\n    // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started out as\n    // an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/) but has\n    // grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange bugs, handling\n    // for inputs and images, plus optimizations.\n    function getTextRangeBoundaryPosition(textRange, wholeRangeContainerElement, isStart, isCollapsed) {\n        var workingRange = textRange.duplicate();\n\n        workingRange.collapse(isStart);\n        var containerElement = workingRange.parentElement();\n\n        // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so\n        // check for that\n        // TODO: Find out when. Workaround for wholeRangeContainerElement may break this\n        if (!dom.isAncestorOf(wholeRangeContainerElement, containerElement, true)) {\n            containerElement = wholeRangeContainerElement;\n\n        }\n\n\n\n        // Deal with nodes that cannot \"contain rich HTML markup\". In practice, this means form inputs, images and\n        // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx\n        if (!containerElement.canHaveHTML) {\n            return new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement));\n        }\n\n        var workingNode = dom.getDocument(containerElement).createElement(\"span\");\n        var comparison, workingComparisonType = isStart ? \"StartToStart\" : \"StartToEnd\";\n        var previousNode, nextNode, boundaryPosition, boundaryNode;\n\n        // Move the working range through the container's children, starting at the end and working backwards, until the\n        // working range reaches or goes past the boundary we're interested in\n        do {\n            containerElement.insertBefore(workingNode, workingNode.previousSibling);\n            workingRange.moveToElementText(workingNode);\n        } while ( (comparison = workingRange.compareEndPoints(workingComparisonType, textRange)) > 0 &&\n                workingNode.previousSibling);\n\n        // We've now reached or gone past the boundary of the text range we're interested in\n        // so have identified the node we want\n        boundaryNode = workingNode.nextSibling;\n\n        if (comparison == -1 && boundaryNode && dom.isCharacterDataNode(boundaryNode)) {\n            // This is a character data node (text, comment, cdata). The working range is collapsed at the start of the\n            // node containing the text range's boundary, so we move the end of the working range to the boundary point\n            // and measure the length of its text to get the boundary's offset within the node.\n            workingRange.setEndPoint(isStart ? \"EndToStart\" : \"EndToEnd\", textRange);\n\n\n            var offset;\n\n            if (/[\\r\\n]/.test(boundaryNode.data)) {\n                /*\n                For the particular case of a boundary within a text node containing line breaks (within a <pre> element,\n                for example), we need a slightly complicated approach to get the boundary's offset in IE. The facts:\n\n                - Each line break is represented as \\r in the text node's data/nodeValue properties\n                - Each line break is represented as \\r\\n in the TextRange's 'text' property\n                - The 'text' property of the TextRange does not contain trailing line breaks\n\n                To get round the problem presented by the final fact above, we can use the fact that TextRange's\n                moveStart() and moveEnd() methods return the actual number of characters moved, which is not necessarily\n                the same as the number of characters it was instructed to move. The simplest approach is to use this to\n                store the characters moved when moving both the start and end of the range to the start of the document\n                body and subtracting the start offset from the end offset (the \"move-negative-gazillion\" method).\n                However, this is extremely slow when the document is large and the range is near the end of it. Clearly\n                doing the mirror image (i.e. moving the range boundaries to the end of the document) has the same\n                problem.\n\n                Another approach that works is to use moveStart() to move the start boundary of the range up to the end\n                boundary one character at a time and incrementing a counter with the value returned by the moveStart()\n                call. However, the check for whether the start boundary has reached the end boundary is expensive, so\n                this method is slow (although unlike \"move-negative-gazillion\" is largely unaffected by the location of\n                the range within the document).\n\n                The method below is a hybrid of the two methods above. It uses the fact that a string containing the\n                TextRange's 'text' property with each \\r\\n converted to a single \\r character cannot be longer than the\n                text of the TextRange, so the start of the range is moved that length initially and then a character at\n                a time to make up for any trailing line breaks not contained in the 'text' property. This has good\n                performance in most situations compared to the previous two methods.\n                */\n                var tempRange = workingRange.duplicate();\n                var rangeLength = tempRange.text.replace(/\\r\\n/g, \"\\r\").length;\n\n                offset = tempRange.moveStart(\"character\", rangeLength);\n                while ( (comparison = tempRange.compareEndPoints(\"StartToEnd\", tempRange)) == -1) {\n                    offset++;\n                    tempRange.moveStart(\"character\", 1);\n                }\n            } else {\n                offset = workingRange.text.length;\n            }\n            boundaryPosition = new DomPosition(boundaryNode, offset);\n        } else {\n\n\n            // If the boundary immediately follows a character data node and this is the end boundary, we should favour\n            // a position within that, and likewise for a start boundary preceding a character data node\n            previousNode = (isCollapsed || !isStart) && workingNode.previousSibling;\n            nextNode = (isCollapsed || isStart) && workingNode.nextSibling;\n\n\n\n            if (nextNode && dom.isCharacterDataNode(nextNode)) {\n                boundaryPosition = new DomPosition(nextNode, 0);\n            } else if (previousNode && dom.isCharacterDataNode(previousNode)) {\n                boundaryPosition = new DomPosition(previousNode, previousNode.length);\n            } else {\n                boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode));\n            }\n        }\n\n        // Clean up\n        workingNode.parentNode.removeChild(workingNode);\n\n        return boundaryPosition;\n    }\n\n    // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that node.\n    // This function started out as an optimized version of code found in Tim Cameron Ryan's IERange\n    // (http://code.google.com/p/ierange/)\n    function createBoundaryTextRange(boundaryPosition, isStart) {\n        var boundaryNode, boundaryParent, boundaryOffset = boundaryPosition.offset;\n        var doc = dom.getDocument(boundaryPosition.node);\n        var workingNode, childNodes, workingRange = doc.body.createTextRange();\n        var nodeIsDataNode = dom.isCharacterDataNode(boundaryPosition.node);\n\n        if (nodeIsDataNode) {\n            boundaryNode = boundaryPosition.node;\n            boundaryParent = boundaryNode.parentNode;\n        } else {\n            childNodes = boundaryPosition.node.childNodes;\n            boundaryNode = (boundaryOffset < childNodes.length) ? childNodes[boundaryOffset] : null;\n            boundaryParent = boundaryPosition.node;\n        }\n\n        // Position the range immediately before the node containing the boundary\n        workingNode = doc.createElement(\"span\");\n\n        // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within the\n        // element rather than immediately before or after it, which is what we want\n        workingNode.innerHTML = \"&#feff;\";\n\n        // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report\n        // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12\n        if (boundaryNode) {\n            boundaryParent.insertBefore(workingNode, boundaryNode);\n        } else {\n            boundaryParent.appendChild(workingNode);\n        }\n\n        workingRange.moveToElementText(workingNode);\n        workingRange.collapse(!isStart);\n\n        // Clean up\n        boundaryParent.removeChild(workingNode);\n\n        // Move the working range to the text offset, if required\n        if (nodeIsDataNode) {\n            workingRange[isStart ? \"moveStart\" : \"moveEnd\"](\"character\", boundaryOffset);\n        }\n\n        return workingRange;\n    }\n\n    /*----------------------------------------------------------------------------------------------------------------*/\n\n    if (api.features.implementsDomRange && (!api.features.implementsTextRange || !api.config.preferTextRange)) {\n        // This is a wrapper around the browser's native DOM Range. It has two aims:\n        // - Provide workarounds for specific browser bugs\n        // - provide convenient extensions, which are inherited from Rangy's DomRange\n\n        (function() {\n            var rangeProto;\n            var rangeProperties = DomRange.rangeProperties;\n            var canSetRangeStartAfterEnd;\n\n            function updateRangeProperties(range) {\n                var i = rangeProperties.length, prop;\n                while (i--) {\n                    prop = rangeProperties[i];\n                    range[prop] = range.nativeRange[prop];\n                }\n            }\n\n            function updateNativeRange(range, startContainer, startOffset, endContainer,endOffset) {\n                var startMoved = (range.startContainer !== startContainer || range.startOffset != startOffset);\n                var endMoved = (range.endContainer !== endContainer || range.endOffset != endOffset);\n\n                // Always set both boundaries for the benefit of IE9 (see issue 35)\n                if (startMoved || endMoved) {\n                    range.setEnd(endContainer, endOffset);\n                    range.setStart(startContainer, startOffset);\n                }\n            }\n\n            function detach(range) {\n                range.nativeRange.detach();\n                range.detached = true;\n                var i = rangeProperties.length, prop;\n                while (i--) {\n                    prop = rangeProperties[i];\n                    range[prop] = null;\n                }\n            }\n\n            var createBeforeAfterNodeSetter;\n\n            WrappedRange = function(range) {\n                if (!range) {\n                    throw new Error(\"Range must be specified\");\n                }\n                this.nativeRange = range;\n                updateRangeProperties(this);\n            };\n\n            DomRange.createPrototypeRange(WrappedRange, updateNativeRange, detach);\n\n            rangeProto = WrappedRange.prototype;\n\n            rangeProto.selectNode = function(node) {\n                this.nativeRange.selectNode(node);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.deleteContents = function() {\n                this.nativeRange.deleteContents();\n                updateRangeProperties(this);\n            };\n\n            rangeProto.extractContents = function() {\n                var frag = this.nativeRange.extractContents();\n                updateRangeProperties(this);\n                return frag;\n            };\n\n            rangeProto.cloneContents = function() {\n                return this.nativeRange.cloneContents();\n            };\n\n            // TODO: Until I can find a way to programmatically trigger the Firefox bug (apparently long-standing, still\n            // present in 3.6.8) that throws \"Index or size is negative or greater than the allowed amount\" for\n            // insertNode in some circumstances, all browsers will have to use the Rangy's own implementation of\n            // insertNode, which works but is almost certainly slower than the native implementation.\n/*\n            rangeProto.insertNode = function(node) {\n                this.nativeRange.insertNode(node);\n                updateRangeProperties(this);\n            };\n*/\n\n            rangeProto.surroundContents = function(node) {\n                this.nativeRange.surroundContents(node);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.collapse = function(isStart) {\n                this.nativeRange.collapse(isStart);\n                updateRangeProperties(this);\n            };\n\n            rangeProto.cloneRange = function() {\n                return new WrappedRange(this.nativeRange.cloneRange());\n            };\n\n            rangeProto.refresh = function() {\n                updateRangeProperties(this);\n            };\n\n            rangeProto.toString = function() {\n                return this.nativeRange.toString();\n            };\n\n            // Create test range and node for feature detection\n\n            var testTextNode = document.createTextNode(\"test\");\n            dom.getBody(document).appendChild(testTextNode);\n            var range = document.createRange();\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and\n            // correct for it\n\n            range.setStart(testTextNode, 0);\n            range.setEnd(testTextNode, 0);\n\n            try {\n                range.setStart(testTextNode, 1);\n                canSetRangeStartAfterEnd = true;\n\n                rangeProto.setStart = function(node, offset) {\n                    this.nativeRange.setStart(node, offset);\n                    updateRangeProperties(this);\n                };\n\n                rangeProto.setEnd = function(node, offset) {\n                    this.nativeRange.setEnd(node, offset);\n                    updateRangeProperties(this);\n                };\n\n                createBeforeAfterNodeSetter = function(name) {\n                    return function(node) {\n                        this.nativeRange[name](node);\n                        updateRangeProperties(this);\n                    };\n                };\n\n            } catch(ex) {\n\n\n                canSetRangeStartAfterEnd = false;\n\n                rangeProto.setStart = function(node, offset) {\n                    try {\n                        this.nativeRange.setStart(node, offset);\n                    } catch (ex) {\n                        this.nativeRange.setEnd(node, offset);\n                        this.nativeRange.setStart(node, offset);\n                    }\n                    updateRangeProperties(this);\n                };\n\n                rangeProto.setEnd = function(node, offset) {\n                    try {\n                        this.nativeRange.setEnd(node, offset);\n                    } catch (ex) {\n                        this.nativeRange.setStart(node, offset);\n                        this.nativeRange.setEnd(node, offset);\n                    }\n                    updateRangeProperties(this);\n                };\n\n                createBeforeAfterNodeSetter = function(name, oppositeName) {\n                    return function(node) {\n                        try {\n                            this.nativeRange[name](node);\n                        } catch (ex) {\n                            this.nativeRange[oppositeName](node);\n                            this.nativeRange[name](node);\n                        }\n                        updateRangeProperties(this);\n                    };\n                };\n            }\n\n            rangeProto.setStartBefore = createBeforeAfterNodeSetter(\"setStartBefore\", \"setEndBefore\");\n            rangeProto.setStartAfter = createBeforeAfterNodeSetter(\"setStartAfter\", \"setEndAfter\");\n            rangeProto.setEndBefore = createBeforeAfterNodeSetter(\"setEndBefore\", \"setStartBefore\");\n            rangeProto.setEndAfter = createBeforeAfterNodeSetter(\"setEndAfter\", \"setStartAfter\");\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for and correct Firefox 2 behaviour with selectNodeContents on text nodes: it collapses the range to\n            // the 0th character of the text node\n            range.selectNodeContents(testTextNode);\n            if (range.startContainer == testTextNode && range.endContainer == testTextNode &&\n                    range.startOffset == 0 && range.endOffset == testTextNode.length) {\n                rangeProto.selectNodeContents = function(node) {\n                    this.nativeRange.selectNodeContents(node);\n                    updateRangeProperties(this);\n                };\n            } else {\n                rangeProto.selectNodeContents = function(node) {\n                    this.setStart(node, 0);\n                    this.setEnd(node, DomRange.getEndOffset(node));\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for WebKit bug that has the beahviour of compareBoundaryPoints round the wrong way for constants\n            // START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738\n\n            range.selectNodeContents(testTextNode);\n            range.setEnd(testTextNode, 3);\n\n            var range2 = document.createRange();\n            range2.selectNodeContents(testTextNode);\n            range2.setEnd(testTextNode, 4);\n            range2.setStart(testTextNode, 2);\n\n            if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 &\n                    range.compareBoundaryPoints(range.END_TO_START, range2) == 1) {\n                // This is the wrong way round, so correct for it\n\n\n                rangeProto.compareBoundaryPoints = function(type, range) {\n                    range = range.nativeRange || range;\n                    if (type == range.START_TO_END) {\n                        type = range.END_TO_START;\n                    } else if (type == range.END_TO_START) {\n                        type = range.START_TO_END;\n                    }\n                    return this.nativeRange.compareBoundaryPoints(type, range);\n                };\n            } else {\n                rangeProto.compareBoundaryPoints = function(type, range) {\n                    return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range);\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Test for existence of createContextualFragment and delegate to it if it exists\n            if (api.util.isHostMethod(range, \"createContextualFragment\")) {\n                rangeProto.createContextualFragment = function(fragmentStr) {\n                    return this.nativeRange.createContextualFragment(fragmentStr);\n                };\n            }\n\n            /*--------------------------------------------------------------------------------------------------------*/\n\n            // Clean up\n            dom.getBody(document).removeChild(testTextNode);\n            range.detach();\n            range2.detach();\n        })();\n\n        api.createNativeRange = function(doc) {\n            doc = doc || document;\n            return doc.createRange();\n        };\n    } else if (api.features.implementsTextRange) {\n        // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a\n        // prototype\n\n        WrappedRange = function(textRange) {\n            this.textRange = textRange;\n            this.refresh();\n        };\n\n        WrappedRange.prototype = new DomRange(document);\n\n        WrappedRange.prototype.refresh = function() {\n            var start, end;\n\n            // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that.\n            var rangeContainerElement = getTextRangeContainerElement(this.textRange);\n\n            if (textRangeIsCollapsed(this.textRange)) {\n                end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, true);\n            } else {\n\n                start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false);\n                end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false);\n            }\n\n            this.setStart(start.node, start.offset);\n            this.setEnd(end.node, end.offset);\n        };\n\n        DomRange.copyComparisonConstants(WrappedRange);\n\n        // Add WrappedRange as the Range property of the global object to allow expression like Range.END_TO_END to work\n        var globalObj = (function() { return this; })();\n        if (typeof globalObj.Range == \"undefined\") {\n            globalObj.Range = WrappedRange;\n        }\n\n        api.createNativeRange = function(doc) {\n            doc = doc || document;\n            return doc.body.createTextRange();\n        };\n    }\n\n    if (api.features.implementsTextRange) {\n        WrappedRange.rangeToTextRange = function(range) {\n            if (range.collapsed) {\n                var tr = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n\n\n\n                return tr;\n\n                //return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n            } else {\n                var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n                var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false);\n                var textRange = dom.getDocument(range.startContainer).body.createTextRange();\n                textRange.setEndPoint(\"StartToStart\", startRange);\n                textRange.setEndPoint(\"EndToEnd\", endRange);\n                return textRange;\n            }\n        };\n    }\n\n    WrappedRange.prototype.getName = function() {\n        return \"WrappedRange\";\n    };\n\n    api.WrappedRange = WrappedRange;\n\n    api.createRange = function(doc) {\n        doc = doc || document;\n        return new WrappedRange(api.createNativeRange(doc));\n    };\n\n    api.createRangyRange = function(doc) {\n        doc = doc || document;\n        return new DomRange(doc);\n    };\n\n    api.createIframeRange = function(iframeEl) {\n        return api.createRange(dom.getIframeDocument(iframeEl));\n    };\n\n    api.createIframeRangyRange = function(iframeEl) {\n        return api.createRangyRange(dom.getIframeDocument(iframeEl));\n    };\n\n    api.addCreateMissingNativeApiListener(function(win) {\n        var doc = win.document;\n        if (typeof doc.createRange == \"undefined\") {\n            doc.createRange = function() {\n                return api.createRange(this);\n            };\n        }\n        doc = win = null;\n    });\n});rangy.createModule(\"WrappedSelection\", function(api, module) {\n    // This will create a selection object wrapper that follows the Selection object found in the WHATWG draft DOM Range\n    // spec (http://html5.org/specs/dom-range.html)\n\n    api.requireModules( [\"DomUtil\", \"DomRange\", \"WrappedRange\"] );\n\n    api.config.checkSelectionRanges = true;\n\n    var BOOLEAN = \"boolean\",\n        windowPropertyName = \"_rangySelection\",\n        dom = api.dom,\n        util = api.util,\n        DomRange = api.DomRange,\n        WrappedRange = api.WrappedRange,\n        DOMException = api.DOMException,\n        DomPosition = dom.DomPosition,\n        getSelection,\n        selectionIsCollapsed,\n        CONTROL = \"Control\";\n\n\n\n    function getWinSelection(winParam) {\n        return (winParam || window).getSelection();\n    }\n\n    function getDocSelection(winParam) {\n        return (winParam || window).document.selection;\n    }\n\n    // Test for the Range/TextRange and Selection features required\n    // Test for ability to retrieve selection\n    var implementsWinGetSelection = api.util.isHostMethod(window, \"getSelection\"),\n        implementsDocSelection = api.util.isHostObject(document, \"selection\");\n\n    var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange);\n\n    if (useDocumentSelection) {\n        getSelection = getDocSelection;\n        api.isSelectionValid = function(winParam) {\n            var doc = (winParam || window).document, nativeSel = doc.selection;\n\n            // Check whether the selection TextRange is actually contained within the correct document\n            return (nativeSel.type != \"None\" || dom.getDocument(nativeSel.createRange().parentElement()) == doc);\n        };\n    } else if (implementsWinGetSelection) {\n        getSelection = getWinSelection;\n        api.isSelectionValid = function() {\n            return true;\n        };\n    } else {\n        module.fail(\"Neither document.selection or window.getSelection() detected.\");\n    }\n\n    api.getNativeSelection = getSelection;\n\n    var testSelection = getSelection();\n    var testRange = api.createNativeRange(document);\n    var body = dom.getBody(document);\n\n    // Obtaining a range from a selection\n    var selectionHasAnchorAndFocus = util.areHostObjects(testSelection, [\"anchorNode\", \"focusNode\"] &&\n                                     util.areHostProperties(testSelection, [\"anchorOffset\", \"focusOffset\"]));\n    api.features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus;\n\n    // Test for existence of native selection extend() method\n    var selectionHasExtend = util.isHostMethod(testSelection, \"extend\");\n    api.features.selectionHasExtend = selectionHasExtend;\n\n    // Test if rangeCount exists\n    var selectionHasRangeCount = (typeof testSelection.rangeCount == \"number\");\n    api.features.selectionHasRangeCount = selectionHasRangeCount;\n\n    var selectionSupportsMultipleRanges = false;\n    var collapsedNonEditableSelectionsSupported = true;\n\n    if (util.areHostMethods(testSelection, [\"addRange\", \"getRangeAt\", \"removeAllRanges\"]) &&\n            typeof testSelection.rangeCount == \"number\" && api.features.implementsDomRange) {\n\n        (function() {\n            var iframe = document.createElement(\"iframe\");\n            body.appendChild(iframe);\n\n            var iframeDoc = dom.getIframeDocument(iframe);\n            iframeDoc.open();\n            iframeDoc.write(\"<html><head></head><body>12</body></html>\");\n            iframeDoc.close();\n\n            var sel = dom.getIframeWindow(iframe).getSelection();\n            var docEl = iframeDoc.documentElement;\n            var iframeBody = docEl.lastChild, textNode = iframeBody.firstChild;\n\n            // Test whether the native selection will allow a collapsed selection within a non-editable element\n            var r1 = iframeDoc.createRange();\n            r1.setStart(textNode, 1);\n            r1.collapse(true);\n            sel.addRange(r1);\n            collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1);\n            sel.removeAllRanges();\n\n            // Test whether the native selection is capable of supporting multiple ranges\n            var r2 = r1.cloneRange();\n            r1.setStart(textNode, 0);\n            r2.setEnd(textNode, 2);\n            sel.addRange(r1);\n            sel.addRange(r2);\n\n            selectionSupportsMultipleRanges = (sel.rangeCount == 2);\n\n            // Clean up\n            r1.detach();\n            r2.detach();\n\n            body.removeChild(iframe);\n        })();\n    }\n\n    api.features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges;\n    api.features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported;\n\n    // ControlRanges\n    var implementsControlRange = false, testControlRange;\n\n    if (body && util.isHostMethod(body, \"createControlRange\")) {\n        testControlRange = body.createControlRange();\n        if (util.areHostProperties(testControlRange, [\"item\", \"add\"])) {\n            implementsControlRange = true;\n        }\n    }\n    api.features.implementsControlRange = implementsControlRange;\n\n    // Selection collapsedness\n    if (selectionHasAnchorAndFocus) {\n        selectionIsCollapsed = function(sel) {\n            return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset;\n        };\n    } else {\n        selectionIsCollapsed = function(sel) {\n            return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false;\n        };\n    }\n\n    function updateAnchorAndFocusFromRange(sel, range, backwards) {\n        var anchorPrefix = backwards ? \"end\" : \"start\", focusPrefix = backwards ? \"start\" : \"end\";\n        sel.anchorNode = range[anchorPrefix + \"Container\"];\n        sel.anchorOffset = range[anchorPrefix + \"Offset\"];\n        sel.focusNode = range[focusPrefix + \"Container\"];\n        sel.focusOffset = range[focusPrefix + \"Offset\"];\n    }\n\n    function updateAnchorAndFocusFromNativeSelection(sel) {\n        var nativeSel = sel.nativeSelection;\n        sel.anchorNode = nativeSel.anchorNode;\n        sel.anchorOffset = nativeSel.anchorOffset;\n        sel.focusNode = nativeSel.focusNode;\n        sel.focusOffset = nativeSel.focusOffset;\n    }\n\n    function updateEmptySelection(sel) {\n        sel.anchorNode = sel.focusNode = null;\n        sel.anchorOffset = sel.focusOffset = 0;\n        sel.rangeCount = 0;\n        sel.isCollapsed = true;\n        sel._ranges.length = 0;\n    }\n\n    function getNativeRange(range) {\n        var nativeRange;\n        if (range instanceof DomRange) {\n            nativeRange = range._selectionNativeRange;\n            if (!nativeRange) {\n                nativeRange = api.createNativeRange(dom.getDocument(range.startContainer));\n                nativeRange.setEnd(range.endContainer, range.endOffset);\n                nativeRange.setStart(range.startContainer, range.startOffset);\n                range._selectionNativeRange = nativeRange;\n                range.attachListener(\"detach\", function() {\n\n                    this._selectionNativeRange = null;\n                });\n            }\n        } else if (range instanceof WrappedRange) {\n            nativeRange = range.nativeRange;\n        } else if (api.features.implementsDomRange && (range instanceof dom.getWindow(range.startContainer).Range)) {\n            nativeRange = range;\n        }\n        return nativeRange;\n    }\n\n    function rangeContainsSingleElement(rangeNodes) {\n        if (!rangeNodes.length || rangeNodes[0].nodeType != 1) {\n            return false;\n        }\n        for (var i = 1, len = rangeNodes.length; i < len; ++i) {\n            if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function getSingleElementFromRange(range) {\n        var nodes = range.getNodes();\n        if (!rangeContainsSingleElement(nodes)) {\n            throw new Error(\"getSingleElementFromRange: range \" + range.inspect() + \" did not consist of a single element\");\n        }\n        return nodes[0];\n    }\n\n    function isTextRange(range) {\n        return !!range && typeof range.text != \"undefined\";\n    }\n\n    function updateFromTextRange(sel, range) {\n        // Create a Range from the selected TextRange\n        var wrappedRange = new WrappedRange(range);\n        sel._ranges = [wrappedRange];\n\n        updateAnchorAndFocusFromRange(sel, wrappedRange, false);\n        sel.rangeCount = 1;\n        sel.isCollapsed = wrappedRange.collapsed;\n    }\n\n    function updateControlSelection(sel) {\n        // Update the wrapped selection based on what's now in the native selection\n        sel._ranges.length = 0;\n        if (sel.docSelection.type == \"None\") {\n            updateEmptySelection(sel);\n        } else {\n            var controlRange = sel.docSelection.createRange();\n            if (isTextRange(controlRange)) {\n                // This case (where the selection type is \"Control\" and calling createRange() on the selection returns\n                // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected\n                // ControlRange have been removed from the ControlRange and removed from the document.\n                updateFromTextRange(sel, controlRange);\n            } else {\n                sel.rangeCount = controlRange.length;\n                var range, doc = dom.getDocument(controlRange.item(0));\n                for (var i = 0; i < sel.rangeCount; ++i) {\n                    range = api.createRange(doc);\n                    range.selectNode(controlRange.item(i));\n                    sel._ranges.push(range);\n                }\n                sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed;\n                updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false);\n            }\n        }\n    }\n\n    function addRangeToControlSelection(sel, range) {\n        var controlRange = sel.docSelection.createRange();\n        var rangeElement = getSingleElementFromRange(range);\n\n        // Create a new ControlRange containing all the elements in the selected ControlRange plus the element\n        // contained by the supplied range\n        var doc = dom.getDocument(controlRange.item(0));\n        var newControlRange = dom.getBody(doc).createControlRange();\n        for (var i = 0, len = controlRange.length; i < len; ++i) {\n            newControlRange.add(controlRange.item(i));\n        }\n        try {\n            newControlRange.add(rangeElement);\n        } catch (ex) {\n            throw new Error(\"addRange(): Element within the specified Range could not be added to control selection (does it have layout?)\");\n        }\n        newControlRange.select();\n\n        // Update the wrapped selection based on what's now in the native selection\n        updateControlSelection(sel);\n    }\n\n    var getSelectionRangeAt;\n\n    if (util.isHostMethod(testSelection,  \"getRangeAt\")) {\n        getSelectionRangeAt = function(sel, index) {\n            try {\n                return sel.getRangeAt(index);\n            } catch(ex) {\n                return null;\n            }\n        };\n    } else if (selectionHasAnchorAndFocus) {\n        getSelectionRangeAt = function(sel) {\n            var doc = dom.getDocument(sel.anchorNode);\n            var range = api.createRange(doc);\n            range.setStart(sel.anchorNode, sel.anchorOffset);\n            range.setEnd(sel.focusNode, sel.focusOffset);\n\n            // Handle the case when the selection was selected backwards (from the end to the start in the\n            // document)\n            if (range.collapsed !== this.isCollapsed) {\n                range.setStart(sel.focusNode, sel.focusOffset);\n                range.setEnd(sel.anchorNode, sel.anchorOffset);\n            }\n\n            return range;\n        };\n    }\n\n    /**\n     * @constructor\n     */\n    function WrappedSelection(selection, docSelection, win) {\n        this.nativeSelection = selection;\n        this.docSelection = docSelection;\n        this._ranges = [];\n        this.win = win;\n        this.refresh();\n    }\n\n    api.getSelection = function(win) {\n        win = win || window;\n        var sel = win[windowPropertyName];\n        var nativeSel = getSelection(win), docSel = implementsDocSelection ? getDocSelection(win) : null;\n        if (sel) {\n            sel.nativeSelection = nativeSel;\n            sel.docSelection = docSel;\n            sel.refresh(win);\n        } else {\n            sel = new WrappedSelection(nativeSel, docSel, win);\n            win[windowPropertyName] = sel;\n        }\n        return sel;\n    };\n\n    api.getIframeSelection = function(iframeEl) {\n        return api.getSelection(dom.getIframeWindow(iframeEl));\n    };\n\n    var selProto = WrappedSelection.prototype;\n\n    function createControlSelection(sel, ranges) {\n        // Ensure that the selection becomes of type \"Control\"\n        var doc = dom.getDocument(ranges[0].startContainer);\n        var controlRange = dom.getBody(doc).createControlRange();\n        for (var i = 0, el; i < rangeCount; ++i) {\n            el = getSingleElementFromRange(ranges[i]);\n            try {\n                controlRange.add(el);\n            } catch (ex) {\n                throw new Error(\"setRanges(): Element within the one of the specified Ranges could not be added to control selection (does it have layout?)\");\n            }\n        }\n        controlRange.select();\n\n        // Update the wrapped selection based on what's now in the native selection\n        updateControlSelection(sel);\n    }\n\n    // Selecting a range\n    if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, [\"removeAllRanges\", \"addRange\"])) {\n        selProto.removeAllRanges = function() {\n            this.nativeSelection.removeAllRanges();\n            updateEmptySelection(this);\n        };\n\n        var addRangeBackwards = function(sel, range) {\n            var doc = DomRange.getRangeDocument(range);\n            var endRange = api.createRange(doc);\n            endRange.collapseToPoint(range.endContainer, range.endOffset);\n            sel.nativeSelection.addRange(getNativeRange(endRange));\n            sel.nativeSelection.extend(range.startContainer, range.startOffset);\n            sel.refresh();\n        };\n\n        if (selectionHasRangeCount) {\n            selProto.addRange = function(range, backwards) {\n                if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n                    addRangeToControlSelection(this, range);\n                } else {\n                    if (backwards && selectionHasExtend) {\n                        addRangeBackwards(this, range);\n                    } else {\n                        var previousRangeCount;\n                        if (selectionSupportsMultipleRanges) {\n                            previousRangeCount = this.rangeCount;\n                        } else {\n                            this.removeAllRanges();\n                            previousRangeCount = 0;\n                        }\n                        this.nativeSelection.addRange(getNativeRange(range));\n\n                        // Check whether adding the range was successful\n                        this.rangeCount = this.nativeSelection.rangeCount;\n\n                        if (this.rangeCount == previousRangeCount + 1) {\n                            // The range was added successfully\n\n                            // Check whether the range that we added to the selection is reflected in the last range extracted from\n                            // the selection\n                            if (api.config.checkSelectionRanges) {\n                                var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1);\n                                if (nativeRange && !DomRange.rangesEqual(nativeRange, range)) {\n                                    // Happens in WebKit with, for example, a selection placed at the start of a text node\n                                    range = new WrappedRange(nativeRange);\n                                }\n                            }\n                            this._ranges[this.rangeCount - 1] = range;\n                            updateAnchorAndFocusFromRange(this, range, selectionIsBackwards(this.nativeSelection));\n                            this.isCollapsed = selectionIsCollapsed(this);\n                        } else {\n                            // The range was not added successfully. The simplest thing is to refresh\n                            this.refresh();\n                        }\n                    }\n                }\n            };\n        } else {\n            selProto.addRange = function(range, backwards) {\n                if (backwards && selectionHasExtend) {\n                    addRangeBackwards(this, range);\n                } else {\n                    this.nativeSelection.addRange(getNativeRange(range));\n                    this.refresh();\n                }\n            };\n        }\n\n        selProto.setRanges = function(ranges) {\n            if (implementsControlRange && ranges.length > 1) {\n                createControlSelection(this, ranges);\n            } else {\n                this.removeAllRanges();\n                for (var i = 0, len = ranges.length; i < len; ++i) {\n                    this.addRange(ranges[i]);\n                }\n            }\n        };\n    } else if (util.isHostMethod(testSelection, \"empty\") && util.isHostMethod(testRange, \"select\") &&\n               implementsControlRange && useDocumentSelection) {\n\n        selProto.removeAllRanges = function() {\n            // Added try/catch as fix for issue #21\n            try {\n                this.docSelection.empty();\n\n                // Check for empty() not working (issue #24)\n                if (this.docSelection.type != \"None\") {\n                    // Work around failure to empty a control selection by instead selecting a TextRange and then\n                    // calling empty()\n                    var doc;\n                    if (this.anchorNode) {\n                        doc = dom.getDocument(this.anchorNode);\n                    } else if (this.docSelection.type == CONTROL) {\n                        var controlRange = this.docSelection.createRange();\n                        if (controlRange.length) {\n                            doc = dom.getDocument(controlRange.item(0)).body.createTextRange();\n                        }\n                    }\n                    if (doc) {\n                        var textRange = doc.body.createTextRange();\n                        textRange.select();\n                        this.docSelection.empty();\n                    }\n                }\n            } catch(ex) {}\n            updateEmptySelection(this);\n        };\n\n        selProto.addRange = function(range) {\n            if (this.docSelection.type == CONTROL) {\n                addRangeToControlSelection(this, range);\n            } else {\n                WrappedRange.rangeToTextRange(range).select();\n                this._ranges[0] = range;\n                this.rangeCount = 1;\n                this.isCollapsed = this._ranges[0].collapsed;\n                updateAnchorAndFocusFromRange(this, range, false);\n            }\n        };\n\n        selProto.setRanges = function(ranges) {\n            this.removeAllRanges();\n            var rangeCount = ranges.length;\n            if (rangeCount > 1) {\n                createControlSelection(this, ranges);\n            } else if (rangeCount) {\n                this.addRange(ranges[0]);\n            }\n        };\n    } else {\n        module.fail(\"No means of selecting a Range or TextRange was found\");\n        return false;\n    }\n\n    selProto.getRangeAt = function(index) {\n        if (index < 0 || index >= this.rangeCount) {\n            throw new DOMException(\"INDEX_SIZE_ERR\");\n        } else {\n            return this._ranges[index];\n        }\n    };\n\n    var refreshSelection;\n\n    if (useDocumentSelection) {\n        refreshSelection = function(sel) {\n            var range;\n            if (api.isSelectionValid(sel.win)) {\n                range = sel.docSelection.createRange();\n            } else {\n                range = dom.getBody(sel.win.document).createTextRange();\n                range.collapse(true);\n            }\n\n\n            if (sel.docSelection.type == CONTROL) {\n                updateControlSelection(sel);\n            } else if (isTextRange(range)) {\n                updateFromTextRange(sel, range);\n            } else {\n                updateEmptySelection(sel);\n            }\n        };\n    } else if (util.isHostMethod(testSelection, \"getRangeAt\") && typeof testSelection.rangeCount == \"number\") {\n        refreshSelection = function(sel) {\n            if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) {\n                updateControlSelection(sel);\n            } else {\n                sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount;\n                if (sel.rangeCount) {\n                    for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n                        sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i));\n                    }\n                    updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackwards(sel.nativeSelection));\n                    sel.isCollapsed = selectionIsCollapsed(sel);\n                } else {\n                    updateEmptySelection(sel);\n                }\n            }\n        };\n    } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && api.features.implementsDomRange) {\n        refreshSelection = function(sel) {\n            var range, nativeSel = sel.nativeSelection;\n            if (nativeSel.anchorNode) {\n                range = getSelectionRangeAt(nativeSel, 0);\n                sel._ranges = [range];\n                sel.rangeCount = 1;\n                updateAnchorAndFocusFromNativeSelection(sel);\n                sel.isCollapsed = selectionIsCollapsed(sel);\n            } else {\n                updateEmptySelection(sel);\n            }\n        };\n    } else {\n        module.fail(\"No means of obtaining a Range or TextRange from the user's selection was found\");\n        return false;\n    }\n\n    selProto.refresh = function(checkForChanges) {\n        var oldRanges = checkForChanges ? this._ranges.slice(0) : null;\n        refreshSelection(this);\n        if (checkForChanges) {\n            var i = oldRanges.length;\n            if (i != this._ranges.length) {\n                return false;\n            }\n            while (i--) {\n                if (!DomRange.rangesEqual(oldRanges[i], this._ranges[i])) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    };\n\n    // Removal of a single range\n    var removeRangeManually = function(sel, range) {\n        var ranges = sel.getAllRanges(), removed = false;\n        sel.removeAllRanges();\n        for (var i = 0, len = ranges.length; i < len; ++i) {\n            if (removed || range !== ranges[i]) {\n                sel.addRange(ranges[i]);\n            } else {\n                // According to the draft WHATWG Range spec, the same range may be added to the selection multiple\n                // times. removeRange should only remove the first instance, so the following ensures only the first\n                // instance is removed\n                removed = true;\n            }\n        }\n        if (!sel.rangeCount) {\n            updateEmptySelection(sel);\n        }\n    };\n\n    if (implementsControlRange) {\n        selProto.removeRange = function(range) {\n            if (this.docSelection.type == CONTROL) {\n                var controlRange = this.docSelection.createRange();\n                var rangeElement = getSingleElementFromRange(range);\n\n                // Create a new ControlRange containing all the elements in the selected ControlRange minus the\n                // element contained by the supplied range\n                var doc = dom.getDocument(controlRange.item(0));\n                var newControlRange = dom.getBody(doc).createControlRange();\n                var el, removed = false;\n                for (var i = 0, len = controlRange.length; i < len; ++i) {\n                    el = controlRange.item(i);\n                    if (el !== rangeElement || removed) {\n                        newControlRange.add(controlRange.item(i));\n                    } else {\n                        removed = true;\n                    }\n                }\n                newControlRange.select();\n\n                // Update the wrapped selection based on what's now in the native selection\n                updateControlSelection(this);\n            } else {\n                removeRangeManually(this, range);\n            }\n        };\n    } else {\n        selProto.removeRange = function(range) {\n            removeRangeManually(this, range);\n        };\n    }\n\n    // Detecting if a selection is backwards\n    var selectionIsBackwards;\n    if (!useDocumentSelection && selectionHasAnchorAndFocus && api.features.implementsDomRange) {\n        selectionIsBackwards = function(sel) {\n            var backwards = false;\n            if (sel.anchorNode) {\n                backwards = (dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1);\n            }\n            return backwards;\n        };\n\n        selProto.isBackwards = function() {\n            return selectionIsBackwards(this);\n        };\n    } else {\n        selectionIsBackwards = selProto.isBackwards = function() {\n            return false;\n        };\n    }\n\n    // Selection text\n    // This is conformant to the new WHATWG DOM Range draft spec but differs from WebKit and Mozilla's implementation\n    selProto.toString = function() {\n\n        var rangeTexts = [];\n        for (var i = 0, len = this.rangeCount; i < len; ++i) {\n            rangeTexts[i] = \"\" + this._ranges[i];\n        }\n        return rangeTexts.join(\"\");\n    };\n\n    function assertNodeInSameDocument(sel, node) {\n        if (sel.anchorNode && (dom.getDocument(sel.anchorNode) !== dom.getDocument(node))) {\n            throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n        }\n    }\n\n    // No current browsers conform fully to the HTML 5 draft spec for this method, so Rangy's own method is always used\n    selProto.collapse = function(node, offset) {\n        assertNodeInSameDocument(this, node);\n        var range = api.createRange(dom.getDocument(node));\n        range.collapseToPoint(node, offset);\n        this.removeAllRanges();\n        this.addRange(range);\n        this.isCollapsed = true;\n    };\n\n    selProto.collapseToStart = function() {\n        if (this.rangeCount) {\n            var range = this._ranges[0];\n            this.collapse(range.startContainer, range.startOffset);\n        } else {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    };\n\n    selProto.collapseToEnd = function() {\n        if (this.rangeCount) {\n            var range = this._ranges[this.rangeCount - 1];\n            this.collapse(range.endContainer, range.endOffset);\n        } else {\n            throw new DOMException(\"INVALID_STATE_ERR\");\n        }\n    };\n\n    // The HTML 5 spec is very specific on how selectAllChildren should be implemented so the native implementation is\n    // never used by Rangy.\n    selProto.selectAllChildren = function(node) {\n        assertNodeInSameDocument(this, node);\n        var range = api.createRange(dom.getDocument(node));\n        range.selectNodeContents(node);\n        this.removeAllRanges();\n        this.addRange(range);\n    };\n\n    selProto.deleteFromDocument = function() {\n        // Sepcial behaviour required for Control selections\n        if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n            var controlRange = this.docSelection.createRange();\n            var element;\n            while (controlRange.length) {\n                element = controlRange.item(0);\n                controlRange.remove(element);\n                element.parentNode.removeChild(element);\n            }\n            this.refresh();\n        } else if (this.rangeCount) {\n            var ranges = this.getAllRanges();\n            this.removeAllRanges();\n            for (var i = 0, len = ranges.length; i < len; ++i) {\n                ranges[i].deleteContents();\n            }\n            // The HTML5 spec says nothing about what the selection should contain after calling deleteContents on each\n            // range. Firefox moves the selection to where the final selected range was, so we emulate that\n            this.addRange(ranges[len - 1]);\n        }\n    };\n\n    // The following are non-standard extensions\n    selProto.getAllRanges = function() {\n        return this._ranges.slice(0);\n    };\n\n    selProto.setSingleRange = function(range) {\n        this.setRanges( [range] );\n    };\n\n    selProto.containsNode = function(node, allowPartial) {\n        for (var i = 0, len = this._ranges.length; i < len; ++i) {\n            if (this._ranges[i].containsNode(node, allowPartial)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    selProto.toHtml = function() {\n        var html = \"\";\n        if (this.rangeCount) {\n            var container = DomRange.getRangeDocument(this._ranges[0]).createElement(\"div\");\n            for (var i = 0, len = this._ranges.length; i < len; ++i) {\n                container.appendChild(this._ranges[i].cloneContents());\n            }\n            html = container.innerHTML;\n        }\n        return html;\n    };\n\n    function inspect(sel) {\n        var rangeInspects = [];\n        var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset);\n        var focus = new DomPosition(sel.focusNode, sel.focusOffset);\n        var name = (typeof sel.getName == \"function\") ? sel.getName() : \"Selection\";\n\n        if (typeof sel.rangeCount != \"undefined\") {\n            for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n                rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i));\n            }\n        }\n        return \"[\" + name + \"(Ranges: \" + rangeInspects.join(\", \") +\n                \")(anchor: \" + anchor.inspect() + \", focus: \" + focus.inspect() + \"]\";\n\n    }\n\n    selProto.getName = function() {\n        return \"WrappedSelection\";\n    };\n\n    selProto.inspect = function() {\n        return inspect(this);\n    };\n\n    selProto.detach = function() {\n        this.win[windowPropertyName] = null;\n        this.win = this.anchorNode = this.focusNode = null;\n    };\n\n    WrappedSelection.inspect = inspect;\n\n    api.Selection = WrappedSelection;\n\n    api.selectionPrototype = selProto;\n\n    api.addCreateMissingNativeApiListener(function(win) {\n        if (typeof win.getSelection == \"undefined\") {\n            win.getSelection = function() {\n                return api.getSelection(this);\n            };\n        }\n        win = null;\n    });\n});\n/*\n\tBase.js, version 1.1a\n\tCopyright 2006-2010, Dean Edwards\n\tLicense: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar Base = function() {\n\t// dummy\n};\n\nBase.extend = function(_instance, _static) { // subclass\n\tvar extend = Base.prototype.extend;\n\t\n\t// build the prototype\n\tBase._prototyping = true;\n\tvar proto = new this;\n\textend.call(proto, _instance);\n  proto.base = function() {\n    // call this method from any other method to invoke that method's ancestor\n  };\n\tdelete Base._prototyping;\n\t\n\t// create the wrapper for the constructor function\n\t//var constructor = proto.constructor.valueOf(); //-dean\n\tvar constructor = proto.constructor;\n\tvar klass = proto.constructor = function() {\n\t\tif (!Base._prototyping) {\n\t\t\tif (this._constructing || this.constructor == klass) { // instantiation\n\t\t\t\tthis._constructing = true;\n\t\t\t\tconstructor.apply(this, arguments);\n\t\t\t\tdelete this._constructing;\n\t\t\t} else if (arguments[0] != null) { // casting\n\t\t\t\treturn (arguments[0].extend || extend).call(arguments[0], proto);\n\t\t\t}\n\t\t}\n\t};\n\t\n\t// build the class interface\n\tklass.ancestor = this;\n\tklass.extend = this.extend;\n\tklass.forEach = this.forEach;\n\tklass.implement = this.implement;\n\tklass.prototype = proto;\n\tklass.toString = this.toString;\n\tklass.valueOf = function(type) {\n\t\t//return (type == \"object\") ? klass : constructor; //-dean\n\t\treturn (type == \"object\") ? klass : constructor.valueOf();\n\t};\n\textend.call(klass, _static);\n\t// class initialisation\n\tif (typeof klass.init == \"function\") klass.init();\n\treturn klass;\n};\n\nBase.prototype = {\t\n\textend: function(source, value) {\n\t\tif (arguments.length > 1) { // extending with a name/value pair\n\t\t\tvar ancestor = this[source];\n\t\t\tif (ancestor && (typeof value == \"function\") && // overriding a method?\n\t\t\t\t// the valueOf() comparison is to avoid circular references\n\t\t\t\t(!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) &&\n\t\t\t\t/\\bbase\\b/.test(value)) {\n\t\t\t\t// get the underlying method\n\t\t\t\tvar method = value.valueOf();\n\t\t\t\t// override\n\t\t\t\tvalue = function() {\n\t\t\t\t\tvar previous = this.base || Base.prototype.base;\n\t\t\t\t\tthis.base = ancestor;\n\t\t\t\t\tvar returnValue = method.apply(this, arguments);\n\t\t\t\t\tthis.base = previous;\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t\t// point to the underlying method\n\t\t\t\tvalue.valueOf = function(type) {\n\t\t\t\t\treturn (type == \"object\") ? value : method;\n\t\t\t\t};\n\t\t\t\tvalue.toString = Base.toString;\n\t\t\t}\n\t\t\tthis[source] = value;\n\t\t} else if (source) { // extending with an object literal\n\t\t\tvar extend = Base.prototype.extend;\n\t\t\t// if this object has a customised extend method then use it\n\t\t\tif (!Base._prototyping && typeof this != \"function\") {\n\t\t\t\textend = this.extend || extend;\n\t\t\t}\n\t\t\tvar proto = {toSource: null};\n\t\t\t// do the \"toString\" and other methods manually\n\t\t\tvar hidden = [\"constructor\", \"toString\", \"valueOf\"];\n\t\t\t// if we are prototyping then include the constructor\n\t\t\tvar i = Base._prototyping ? 0 : 1;\n\t\t\twhile (key = hidden[i++]) {\n\t\t\t\tif (source[key] != proto[key]) {\n\t\t\t\t\textend.call(this, key, source[key]);\n\n\t\t\t\t}\n\t\t\t}\n\t\t\t// copy each of the source object's properties to this object\n\t\t\tfor (var key in source) {\n\t\t\t\tif (!proto[key]) extend.call(this, key, source[key]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n};\n\n// initialise\nBase = Base.extend({\n\tconstructor: function() {\n\t\tthis.extend(arguments[0]);\n\t}\n}, {\n\tancestor: Object,\n\tversion: \"1.1\",\n\t\n\tforEach: function(object, block, context) {\n\t\tfor (var key in object) {\n\t\t\tif (this.prototype[key] === undefined) {\n\t\t\t\tblock.call(context, object[key], key, object);\n\t\t\t}\n\t\t}\n\t},\n\t\t\n\timplement: function() {\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tif (typeof arguments[i] == \"function\") {\n\t\t\t\t// if it's a function, call it\n\t\t\t\targuments[i](this.prototype);\n\t\t\t} else {\n\t\t\t\t// add the interface using the extend method\n\t\t\t\tthis.prototype.extend(arguments[i]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\t\n\ttoString: function() {\n\t\treturn String(this.valueOf());\n\t}\n});/**\n * Detect browser support for specific features\n */\nwysihtml5.browser = (function() {\n  var userAgent   = navigator.userAgent,\n      testElement = document.createElement(\"div\"),\n      // Browser sniffing is unfortunately needed since some behaviors are impossible to feature detect\n      isIE        = userAgent.indexOf(\"MSIE\")         !== -1 && userAgent.indexOf(\"Opera\") === -1,\n      isGecko     = userAgent.indexOf(\"Gecko\")        !== -1 && userAgent.indexOf(\"KHTML\") === -1,\n      isWebKit    = userAgent.indexOf(\"AppleWebKit/\") !== -1,\n      isChrome    = userAgent.indexOf(\"Chrome/\")      !== -1,\n      isOpera     = userAgent.indexOf(\"Opera/\")       !== -1;\n  \n  function iosVersion(userAgent) {\n    return ((/ipad|iphone|ipod/.test(userAgent) && userAgent.match(/ os (\\d+).+? like mac os x/)) || [, 0])[1];\n  }\n  \n  return {\n    // Static variable needed, publicly accessible, to be able override it in unit tests\n    USER_AGENT: userAgent,\n    \n    /**\n     * Exclude browsers that are not capable of displaying and handling\n     * contentEditable as desired:\n     *    - iPhone, iPad (tested iOS 4.2.2) and Android (tested 2.2) refuse to make contentEditables focusable\n     *    - IE < 8 create invalid markup and crash randomly from time to time\n     *\n     * @return {Boolean}\n     */\n    supported: function() {\n      var userAgent                   = this.USER_AGENT.toLowerCase(),\n          // Essential for making html elements editable\n          hasContentEditableSupport   = \"contentEditable\" in testElement,\n          // Following methods are needed in order to interact with the contentEditable area\n          hasEditingApiSupport        = document.execCommand && document.queryCommandSupported && document.queryCommandState,\n          // document selector apis are only supported by IE 8+, Safari 4+, Chrome and Firefox 3.5+\n          hasQuerySelectorSupport     = document.querySelector && document.querySelectorAll,\n          // contentEditable is unusable in mobile browsers (tested iOS 4.2.2, Android 2.2, Opera Mobile, WebOS 3.05)\n          isIncompatibleMobileBrowser = (this.isIos() && iosVersion(userAgent) < 5) || userAgent.indexOf(\"opera mobi\") !== -1 || userAgent.indexOf(\"hpwos/\") !== -1;\n      \n      return hasContentEditableSupport\n        && hasEditingApiSupport\n        && hasQuerySelectorSupport\n        && !isIncompatibleMobileBrowser;\n    },\n    \n    isTouchDevice: function() {\n      return this.supportsEvent(\"touchmove\");\n    },\n    \n    isIos: function() {\n      var userAgent = this.USER_AGENT.toLowerCase();\n      return userAgent.indexOf(\"webkit\") !== -1 && userAgent.indexOf(\"mobile\") !== -1;\n    },\n    \n    /**\n     * Whether the browser supports sandboxed iframes\n     * Currently only IE 6+ offers such feature <iframe security=\"restricted\">\n     *\n     * http://msdn.microsoft.com/en-us/library/ms534622(v=vs.85).aspx\n     * http://blogs.msdn.com/b/ie/archive/2008/01/18/using-frames-more-securely.aspx\n     *\n     * HTML5 sandboxed iframes are still buggy and their DOM is not reachable from the outside (except when using postMessage)\n     */\n    supportsSandboxedIframes: function() {\n      return isIE;\n    },\n\n    /**\n     * IE6+7 throw a mixed content warning when the src of an iframe\n     * is empty/unset or about:blank\n     * window.querySelector is implemented as of IE8\n     */\n    throwsMixedContentWarningWhenIframeSrcIsEmpty: function() {\n      return !(\"querySelector\" in document);\n    },\n\n    /**\n     * Whether the caret is correctly displayed in contentEditable elements\n     * Firefox sometimes shows a huge caret in the beginning after focusing\n     */\n    displaysCaretInEmptyContentEditableCorrectly: function() {\n      return !isGecko;\n    },\n\n    /**\n     * Opera and IE are the only browsers who offer the css value\n     * in the original unit, thx to the currentStyle object\n     * All other browsers provide the computed style in px via window.getComputedStyle\n     */\n    hasCurrentStyleProperty: function() {\n      return \"currentStyle\" in testElement;\n    },\n\n    /**\n     * Whether the browser inserts a <br> when pressing enter in a contentEditable element\n     */\n    insertsLineBreaksOnReturn: function() {\n      return isGecko;\n    },\n\n    supportsPlaceholderAttributeOn: function(element) {\n      return \"placeholder\" in element;\n    },\n\n    supportsEvent: function(eventName) {\n      return \"on\" + eventName in testElement || (function() {\n        testElement.setAttribute(\"on\" + eventName, \"return;\");\n        return typeof(testElement[\"on\" + eventName]) === \"function\";\n      })();\n    },\n\n    /**\n     * Opera doesn't correctly fire focus/blur events when clicking in- and outside of iframe\n     */\n    supportsEventsInIframeCorrectly: function() {\n      return !isOpera;\n    },\n\n    /**\n     * Chrome & Safari only fire the ondrop/ondragend/... events when the ondragover event is cancelled\n     * with event.preventDefault\n     * Firefox 3.6 fires those events anyway, but the mozilla doc says that the dragover/dragenter event needs\n     * to be cancelled\n     */\n    firesOnDropOnlyWhenOnDragOverIsCancelled: function() {\n      return isWebKit || isGecko;\n    },\n    \n    /**\n     * Whether the browser supports the event.dataTransfer property in a proper way\n     */\n    supportsDataTransfer: function() {\n      try {\n        // Firefox doesn't support dataTransfer in a safe way, it doesn't strip script code in the html payload (like Chrome does)\n        return isWebKit && (window.Clipboard || window.DataTransfer).prototype.getData;\n      } catch(e) {\n        return false;\n      }\n    },\n\n    /**\n     * Everything below IE9 doesn't know how to treat HTML5 tags\n     *\n     * @param {Object} context The document object on which to check HTML5 support\n     *\n     * @example\n     *    wysihtml5.browser.supportsHTML5Tags(document);\n     */\n    supportsHTML5Tags: function(context) {\n      var element = context.createElement(\"div\"),\n          html5   = \"<article>foo</article>\";\n      element.innerHTML = html5;\n      return element.innerHTML.toLowerCase() === html5;\n    },\n\n    /**\n     * Checks whether a document supports a certain queryCommand\n     * In particular, Opera needs a reference to a document that has a contentEditable in it's dom tree\n     * in oder to report correct results\n     *\n     * @param {Object} doc Document object on which to check for a query command\n     * @param {String} command The query command to check for\n     * @return {Boolean}\n     *\n     * @example\n     *    wysihtml5.browser.supportsCommand(document, \"bold\");\n     */\n    supportsCommand: (function() {\n      // Following commands are supported but contain bugs in some browsers\n      var buggyCommands = {\n        // formatBlock fails with some tags (eg. <blockquote>)\n        \"formatBlock\":          isIE,\n         // When inserting unordered or ordered lists in Firefox, Chrome or Safari, the current selection or line gets\n         // converted into a list (<ul><li>...</li></ul>, <ol><li>...</li></ol>)\n         // IE and Opera act a bit different here as they convert the entire content of the current block element into a list\n        \"insertUnorderedList\":  isIE || isOpera || isWebKit,\n        \"insertOrderedList\":    isIE || isOpera || isWebKit\n      };\n      \n      // Firefox throws errors for queryCommandSupported, so we have to build up our own object of supported commands\n      var supported = {\n        \"insertHTML\": isGecko\n      };\n\n      return function(doc, command) {\n        var isBuggy = buggyCommands[command];\n        if (!isBuggy) {\n          // Firefox throws errors when invoking queryCommandSupported or queryCommandEnabled\n          try {\n            return doc.queryCommandSupported(command);\n          } catch(e1) {}\n\n          try {\n            return doc.queryCommandEnabled(command);\n          } catch(e2) {\n            return !!supported[command];\n          }\n        }\n        return false;\n      };\n    })(),\n\n    /**\n     * IE: URLs starting with:\n     *    www., http://, https://, ftp://, gopher://, mailto:, new:, snews:, telnet:, wasis:, file://,\n     *    nntp://, newsrc:, ldap://, ldaps://, outlook:, mic:// and url:\n     * will automatically be auto-linked when either the user inserts them via copy&paste or presses the\n     * space bar when the caret is directly after such an url.\n     * This behavior cannot easily be avoided in IE < 9 since the logic is hardcoded in the mshtml.dll\n     * (related blog post on msdn\n     * http://blogs.msdn.com/b/ieinternals/archive/2009/09/17/prevent-automatic-hyperlinking-in-contenteditable-html.aspx).\n     */\n    doesAutoLinkingInContentEditable: function() {\n      return isIE;\n    },\n\n    /**\n     * As stated above, IE auto links urls typed into contentEditable elements\n     * Since IE9 it's possible to prevent this behavior\n     */\n    canDisableAutoLinking: function() {\n      return this.supportsCommand(document, \"AutoUrlDetect\");\n    },\n\n    /**\n     * IE leaves an empty paragraph in the contentEditable element after clearing it\n     * Chrome/Safari sometimes an empty <div>\n     */\n    clearsContentEditableCorrectly: function() {\n      return isGecko || isOpera || isWebKit;\n    },\n\n    /**\n     * IE gives wrong results for getAttribute\n     */\n    supportsGetAttributeCorrectly: function() {\n      var td = document.createElement(\"td\");\n      return td.getAttribute(\"rowspan\") != \"1\";\n    },\n\n    /**\n     * When clicking on images in IE, Opera and Firefox, they are selected, which makes it easy to interact with them.\n     * Chrome and Safari both don't support this\n     */\n    canSelectImagesInContentEditable: function() {\n      return isGecko || isIE || isOpera;\n    },\n\n    /**\n     * When the caret is in an empty list (<ul><li>|</li></ul>) which is the first child in an contentEditable container\n     * pressing backspace doesn't remove the entire list as done in other browsers\n     */\n    clearsListsInContentEditableCorrectly: function() {\n      return isGecko || isIE || isWebKit;\n    },\n\n    /**\n     * All browsers except Safari and Chrome automatically scroll the range/caret position into view\n     */\n    autoScrollsToCaret: function() {\n      return !isWebKit;\n    },\n\n    /**\n     * Check whether the browser automatically closes tags that don't need to be opened\n     */\n    autoClosesUnclosedTags: function() {\n      var clonedTestElement = testElement.cloneNode(false),\n          returnValue,\n          innerHTML;\n\n      clonedTestElement.innerHTML = \"<p><div></div>\";\n      innerHTML                   = clonedTestElement.innerHTML.toLowerCase();\n      returnValue                 = innerHTML === \"<p></p><div></div>\" || innerHTML === \"<p><div></div></p>\";\n\n      // Cache result by overwriting current function\n      this.autoClosesUnclosedTags = function() { return returnValue; };\n\n      return returnValue;\n    },\n\n    /**\n     * Whether the browser supports the native document.getElementsByClassName which returns live NodeLists\n     */\n    supportsNativeGetElementsByClassName: function() {\n      return String(document.getElementsByClassName).indexOf(\"[native code]\") !== -1;\n    },\n\n    /**\n     * As of now (19.04.2011) only supported by Firefox 4 and Chrome\n     * See https://developer.mozilla.org/en/DOM/Selection/modify\n     */\n    supportsSelectionModify: function() {\n      return \"getSelection\" in window && \"modify\" in window.getSelection();\n    },\n    \n    /**\n     * Whether the browser supports the classList object for fast className manipulation\n     * See https://developer.mozilla.org/en/DOM/element.classList\n     */\n    supportsClassList: function() {\n      return \"classList\" in testElement;\n    },\n    \n    /**\n     * Opera needs a white space after a <br> in order to position the caret correctly\n     */\n    needsSpaceAfterLineBreak: function() {\n      return isOpera;\n    },\n    \n    /**\n     * Whether the browser supports the speech api on the given element\n     * See http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/\n     *\n     * @example\n     *    var input = document.createElement(\"input\");\n     *    if (wysihtml5.browser.supportsSpeechApiOn(input)) {\n     *      // ...\n     *    }\n     */\n    supportsSpeechApiOn: function(input) {\n      var chromeVersion = userAgent.match(/Chrome\\/(\\d+)/) || [, 0];\n      return chromeVersion[1] >= 11 && (\"onwebkitspeechchange\" in input || \"speech\" in input);\n    },\n    \n    /**\n     * IE9 crashes when setting a getter via Object.defineProperty on XMLHttpRequest or XDomainRequest\n     * See https://connect.microsoft.com/ie/feedback/details/650112\n     * or try the POC http://tifftiff.de/ie9_crash/\n     */\n    crashesWhenDefineProperty: function(property) {\n      return isIE && (property === \"XMLHttpRequest\" || property === \"XDomainRequest\");\n    },\n    \n    /**\n     * IE is the only browser who fires the \"focus\" event not immediately when .focus() is called on an element\n     */\n    doesAsyncFocus: function() {\n      return isIE;\n    },\n    \n    /**\n     * In IE it's impssible for the user and for the selection library to set the caret after an <img> when it's the lastChild in the document\n     */\n    hasProblemsSettingCaretAfterImg: function() {\n      return isIE;\n    },\n    \n    hasUndoInContextMenu: function() {\n      return isGecko || isChrome || isOpera;\n    }\n  };\n})();wysihtml5.lang.array = function(arr) {\n  return {\n    /**\n     * Check whether a given object exists in an array\n     *\n     * @example\n     *    wysihtml5.lang.array([1, 2]).contains(1);\n     *    // => true\n     */\n    contains: function(needle) {\n      if (arr.indexOf) {\n        return arr.indexOf(needle) !== -1;\n      } else {\n        for (var i=0, length=arr.length; i<length; i++) {\n          if (arr[i] === needle) { return true; }\n        }\n        return false;\n      }\n    },\n    \n    /**\n     * Substract one array from another\n     *\n     * @example\n     *    wysihtml5.lang.array([1, 2, 3, 4]).without([3, 4]);\n     *    // => [1, 2]\n     */\n    without: function(arrayToSubstract) {\n      arrayToSubstract = wysihtml5.lang.array(arrayToSubstract);\n      var newArr  = [],\n          i       = 0,\n          length  = arr.length;\n      for (; i<length; i++) {\n        if (!arrayToSubstract.contains(arr[i])) {\n          newArr.push(arr[i]);\n        }\n      }\n      return newArr;\n    },\n    \n    /**\n     * Return a clean native array\n     * \n     * Following will convert a Live NodeList to a proper Array\n     * @example\n     *    var childNodes = wysihtml5.lang.array(document.body.childNodes).get();\n     */\n    get: function() {\n      var i        = 0,\n          length   = arr.length,\n          newArray = [];\n      for (; i<length; i++) {\n        newArray.push(arr[i]);\n      }\n      return newArray;\n    }\n  };\n};wysihtml5.lang.Dispatcher = Base.extend(\n  /** @scope wysihtml5.lang.Dialog.prototype */ {\n  observe: function(eventName, handler) {\n    this.events = this.events || {};\n    this.events[eventName] = this.events[eventName] || [];\n    this.events[eventName].push(handler);\n    return this;\n  },\n\n  on: function() {\n    return this.observe.apply(this, wysihtml5.lang.array(arguments).get());\n  },\n\n  fire: function(eventName, payload) {\n    this.events = this.events || {};\n    var handlers = this.events[eventName] || [],\n        i        = 0;\n    for (; i<handlers.length; i++) {\n      handlers[i].call(this, payload);\n    }\n    return this;\n  },\n\n  stopObserving: function(eventName, handler) {\n    this.events = this.events || {};\n    var i = 0,\n        handlers,\n        newHandlers;\n    if (eventName) {\n      handlers    = this.events[eventName] || [],\n      newHandlers = [];\n      for (; i<handlers.length; i++) {\n        if (handlers[i] !== handler && handler) {\n          newHandlers.push(handlers[i]);\n        }\n      }\n      this.events[eventName] = newHandlers;\n    } else {\n      // Clean up all events\n      this.events = {};\n    }\n    return this;\n  }\n});wysihtml5.lang.object = function(obj) {\n  return {\n    /**\n     * @example\n     *    wysihtml5.lang.object({ foo: 1, bar: 1 }).merge({ bar: 2, baz: 3 }).get();\n     *    // => { foo: 1, bar: 2, baz: 3 }\n     */\n    merge: function(otherObj) {\n      for (var i in otherObj) {\n        obj[i] = otherObj[i];\n      }\n      return this;\n    },\n    \n    get: function() {\n      return obj;\n    },\n    \n    /**\n     * @example\n     *    wysihtml5.lang.object({ foo: 1 }).clone();\n     *    // => { foo: 1 }\n     */\n    clone: function() {\n      var newObj = {},\n          i;\n      for (i in obj) {\n        newObj[i] = obj[i];\n      }\n      return newObj;\n    },\n    \n    /**\n     * @example\n     *    wysihtml5.lang.object([]).isArray();\n     *    // => true\n     */\n    isArray: function() {\n      return Object.prototype.toString.call(obj) === \"[object Array]\";\n    }\n  };\n};(function() {\n  var WHITE_SPACE_START = /^\\s+/,\n      WHITE_SPACE_END   = /\\s+$/;\n  wysihtml5.lang.string = function(str) {\n    str = String(str);\n    return {\n      /**\n       * @example\n       *    wysihtml5.lang.string(\"   foo   \").trim();\n       *    // => \"foo\"\n       */\n      trim: function() {\n        return str.replace(WHITE_SPACE_START, \"\").replace(WHITE_SPACE_END, \"\");\n      },\n      \n      /**\n       * @example\n       *    wysihtml5.lang.string(\"Hello #{name}\").interpolate({ name: \"Christopher\" });\n       *    // => \"Hello Christopher\"\n       */\n      interpolate: function(vars) {\n        for (var i in vars) {\n          str = this.replace(\"#{\" + i + \"}\").by(vars[i]);\n        }\n        return str;\n      },\n      \n      /**\n       * @example\n       *    wysihtml5.lang.string(\"Hello Tom\").replace(\"Tom\").with(\"Hans\");\n       *    // => \"Hello Hans\"\n       */\n      replace: function(search) {\n        return {\n          by: function(replace) {\n            return str.split(search).join(replace);\n          }\n        }\n      }\n    };\n  };\n})();/**\n * Find urls in descendant text nodes of an element and auto-links them\n * Inspired by http://james.padolsey.com/javascript/find-and-replace-text-with-javascript/\n *\n * @param {Element} element Container element in which to search for urls\n *\n * @example\n *    <div id=\"text-container\">Please click here:www.google.com</div>\n *    <script>wysihtml5.dom.autoLink(document.getElementById(\"text-container\"));</script>\n */\n(function(wysihtml5) {\n  var /**\n       * Don't auto-link urls that are contained in the following elements:\n       */\n      IGNORE_URLS_IN        = wysihtml5.lang.array([\"CODE\", \"PRE\", \"A\", \"SCRIPT\", \"HEAD\", \"TITLE\", \"STYLE\"]),\n      /**\n       * revision 1:\n       *    /(\\S+\\.{1}[^\\s\\,\\.\\!]+)/g\n       *\n       * revision 2:\n       *    /(\\b(((https?|ftp):\\/\\/)|(www\\.))[-A-Z0-9+&@#\\/%?=~_|!:,.;\\[\\]]*[-A-Z0-9+&@#\\/%=~_|])/gim\n       *\n       * put this in the beginning if you don't wan't to match within a word\n       *    (^|[\\>\\(\\{\\[\\s\\>])\n       */\n      URL_REG_EXP           = /((https?:\\/\\/|www\\.)[^\\s<]{3,})/gi,\n      TRAILING_CHAR_REG_EXP = /([^\\w\\/\\-](,?))$/i,\n      MAX_DISPLAY_LENGTH    = 100,\n      BRACKETS              = { \")\": \"(\", \"]\": \"[\", \"}\": \"{\" };\n  \n  function autoLink(element) {\n    if (_hasParentThatShouldBeIgnored(element)) {\n      return element;\n    }\n\n    if (element === element.ownerDocument.documentElement) {\n      element = element.ownerDocument.body;\n    }\n\n    return _parseNode(element);\n  }\n  \n  /**\n   * This is basically a rebuild of\n   * the rails auto_link_urls text helper\n   */\n  function _convertUrlsToLinks(str) {\n    return str.replace(URL_REG_EXP, function(match, url) {\n      var punctuation = (url.match(TRAILING_CHAR_REG_EXP) || [])[1] || \"\",\n          opening     = BRACKETS[punctuation];\n      url = url.replace(TRAILING_CHAR_REG_EXP, \"\");\n\n      if (url.split(opening).length > url.split(punctuation).length) {\n        url = url + punctuation;\n        punctuation = \"\";\n      }\n      var realUrl    = url,\n          displayUrl = url;\n      if (url.length > MAX_DISPLAY_LENGTH) {\n        displayUrl = displayUrl.substr(0, MAX_DISPLAY_LENGTH) + \"...\";\n      }\n      // Add http prefix if necessary\n      if (realUrl.substr(0, 4) === \"www.\") {\n        realUrl = \"http://\" + realUrl;\n      }\n      \n      return '<a href=\"' + realUrl + '\">' + displayUrl + '</a>' + punctuation;\n    });\n  }\n  \n  /**\n   * Creates or (if already cached) returns a temp element\n   * for the given document object\n   */\n  function _getTempElement(context) {\n    var tempElement = context._wysihtml5_tempElement;\n    if (!tempElement) {\n      tempElement = context._wysihtml5_tempElement = context.createElement(\"div\");\n    }\n    return tempElement;\n  }\n  \n  /**\n   * Replaces the original text nodes with the newly auto-linked dom tree\n   */\n  function _wrapMatchesInNode(textNode) {\n    var parentNode  = textNode.parentNode,\n        tempElement = _getTempElement(parentNode.ownerDocument);\n    \n    // We need to insert an empty/temporary <span /> to fix IE quirks\n    // Elsewise IE would strip white space in the beginning\n    tempElement.innerHTML = \"<span></span>\" + _convertUrlsToLinks(textNode.data);\n    tempElement.removeChild(tempElement.firstChild);\n    \n    while (tempElement.firstChild) {\n      // inserts tempElement.firstChild before textNode\n      parentNode.insertBefore(tempElement.firstChild, textNode);\n    }\n    parentNode.removeChild(textNode);\n  }\n  \n  function _hasParentThatShouldBeIgnored(node) {\n    var nodeName;\n    while (node.parentNode) {\n      node = node.parentNode;\n      nodeName = node.nodeName;\n      if (IGNORE_URLS_IN.contains(nodeName)) {\n        return true;\n      } else if (nodeName === \"body\") {\n        return false;\n      }\n    }\n    return false;\n  }\n  \n  function _parseNode(element) {\n    if (IGNORE_URLS_IN.contains(element.nodeName)) {\n      return;\n    }\n    \n    if (element.nodeType === wysihtml5.TEXT_NODE && element.data.match(URL_REG_EXP)) {\n      _wrapMatchesInNode(element);\n      return;\n    }\n    \n    var childNodes        = wysihtml5.lang.array(element.childNodes).get(),\n        childNodesLength  = childNodes.length,\n        i                 = 0;\n    \n    for (; i<childNodesLength; i++) {\n      _parseNode(childNodes[i]);\n    }\n    \n    return element;\n  }\n  \n  wysihtml5.dom.autoLink = autoLink;\n  \n  // Reveal url reg exp to the outside\n  wysihtml5.dom.autoLink.URL_REG_EXP = URL_REG_EXP;\n})(wysihtml5);(function(wysihtml5) {\n  var supportsClassList = wysihtml5.browser.supportsClassList(),\n      api               = wysihtml5.dom;\n  \n  api.addClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.add(className);\n    }\n    if (api.hasClass(element, className)) {\n      return;\n    }\n    element.className += \" \" + className;\n  };\n  \n  api.removeClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.remove(className);\n    }\n    \n    element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \");\n  };\n  \n  api.hasClass = function(element, className) {\n    if (supportsClassList) {\n      return element.classList.contains(className);\n    }\n    \n    var elementClassName = element.className;\n    return (elementClassName.length > 0 && (elementClassName == className || new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\").test(elementClassName)));\n  };\n})(wysihtml5);\nwysihtml5.dom.contains = (function() {\n  var documentElement = document.documentElement;\n  if (documentElement.contains) {\n    return function(container, element) {\n      if (element.nodeType !== wysihtml5.ELEMENT_NODE) {\n        element = element.parentNode;\n      }\n      return container !== element && container.contains(element);\n    };\n  } else if (documentElement.compareDocumentPosition) {\n    return function(container, element) {\n      // https://developer.mozilla.org/en/DOM/Node.compareDocumentPosition\n      return !!(container.compareDocumentPosition(element) & 16);\n    };\n  }\n})();/**\n * Converts an HTML fragment/element into a unordered/ordered list\n *\n * @param {Element} element The element which should be turned into a list\n * @param {String} listType The list type in which to convert the tree (either \"ul\" or \"ol\")\n * @return {Element} The created list\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <span id=\"pseudo-list\">\n *      eminem<br>\n *      dr. dre\n *      <div>50 Cent</div>\n *    </span>\n *\n *    <script>\n *      wysihtml5.dom.convertToList(document.getElementById(\"pseudo-list\"), \"ul\");\n *    </script>\n *\n *    <!-- Will result in: -->\n *    <ul>\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n */\nwysihtml5.dom.convertToList = (function() {\n  function _createListItem(doc, list) {\n    var listItem = doc.createElement(\"li\");\n    list.appendChild(listItem);\n    return listItem;\n  }\n  \n  function _createList(doc, type) {\n    return doc.createElement(type);\n  }\n  \n  function convertToList(element, listType) {\n    if (element.nodeName === \"UL\" || element.nodeName === \"OL\" || element.nodeName === \"MENU\") {\n      // Already a list\n      return element;\n    }\n    \n    var doc               = element.ownerDocument,\n        list              = _createList(doc, listType),\n        lineBreaks        = element.querySelectorAll(\"br\"),\n        lineBreaksLength  = lineBreaks.length,\n        childNodes,\n        childNodesLength,\n        childNode,\n        lineBreak,\n        parentNode,\n        isBlockElement,\n        isLineBreak,\n        currentListItem,\n        i;\n    \n    // First find <br> at the end of inline elements and move them behind them\n    for (i=0; i<lineBreaksLength; i++) {\n      lineBreak = lineBreaks[i];\n      while ((parentNode = lineBreak.parentNode) && parentNode !== element && parentNode.lastChild === lineBreak) {\n        if (wysihtml5.dom.getStyle(\"display\").from(parentNode) === \"block\") {\n          parentNode.removeChild(lineBreak);\n          break;\n        }\n        wysihtml5.dom.insert(lineBreak).after(lineBreak.parentNode);\n      }\n    }\n    \n    childNodes        = wysihtml5.lang.array(element.childNodes).get();\n    childNodesLength  = childNodes.length;\n    \n    for (i=0; i<childNodesLength; i++) {\n      currentListItem   = currentListItem || _createListItem(doc, list);\n      childNode         = childNodes[i];\n      isBlockElement    = wysihtml5.dom.getStyle(\"display\").from(childNode) === \"block\";\n      isLineBreak       = childNode.nodeName === \"BR\";\n      \n      if (isBlockElement) {\n        // Append blockElement to current <li> if empty, otherwise create a new one\n        currentListItem = currentListItem.firstChild ? _createListItem(doc, list) : currentListItem;\n        currentListItem.appendChild(childNode);\n        currentListItem = null;\n        continue;\n      }\n      \n      if (isLineBreak) {\n        // Only create a new list item in the next iteration when the current one has already content\n        currentListItem = currentListItem.firstChild ? null : currentListItem;\n        continue;\n      }\n      \n      currentListItem.appendChild(childNode);\n    }\n    \n    element.parentNode.replaceChild(list, element);\n    return list;\n  }\n  \n  return convertToList;\n})();/**\n * Copy a set of attributes from one element to another\n *\n * @param {Array} attributesToCopy List of attributes which should be copied\n * @return {Object} Returns an object which offers the \"from\" method which can be invoked with the element where to\n *    copy the attributes from., this again returns an object which provides a method named \"to\" which can be invoked \n *    with the element where to copy the attributes to (see example)\n *\n * @example\n *    var textarea    = document.querySelector(\"textarea\"),\n *        div         = document.querySelector(\"div[contenteditable=true]\"),\n *        anotherDiv  = document.querySelector(\"div.preview\");\n *    wysihtml5.dom.copyAttributes([\"spellcheck\", \"value\", \"placeholder\"]).from(textarea).to(div).andTo(anotherDiv);\n *\n */\nwysihtml5.dom.copyAttributes = function(attributesToCopy) {\n  return {\n    from: function(elementToCopyFrom) {\n      return {\n        to: function(elementToCopyTo) {\n          var attribute,\n              i         = 0,\n              length    = attributesToCopy.length;\n          for (; i<length; i++) {\n            attribute = attributesToCopy[i];\n            if (typeof(elementToCopyFrom[attribute]) !== \"undefined\" && elementToCopyFrom[attribute] !== \"\") {\n              elementToCopyTo[attribute] = elementToCopyFrom[attribute];\n            }\n          }\n          return { andTo: arguments.callee };\n        }\n      };\n    }\n  };\n};/**\n * Copy a set of styles from one element to another\n * Please note that this only works properly across browsers when the element from which to copy the styles\n * is in the dom\n *\n * Interesting article on how to copy styles\n *\n * @param {Array} stylesToCopy List of styles which should be copied\n * @return {Object} Returns an object which offers the \"from\" method which can be invoked with the element where to\n *    copy the styles from., this again returns an object which provides a method named \"to\" which can be invoked \n *    with the element where to copy the styles to (see example)\n *\n * @example\n *    var textarea    = document.querySelector(\"textarea\"),\n *        div         = document.querySelector(\"div[contenteditable=true]\"),\n *        anotherDiv  = document.querySelector(\"div.preview\");\n *    wysihtml5.dom.copyStyles([\"overflow-y\", \"width\", \"height\"]).from(textarea).to(div).andTo(anotherDiv);\n *\n */\n(function(dom) {\n  \n  /**\n   * Mozilla, WebKit and Opera recalculate the computed width when box-sizing: boder-box; is set\n   * So if an element has \"width: 200px; -moz-box-sizing: border-box; border: 1px;\" then \n   * its computed css width will be 198px\n   */\n  var BOX_SIZING_PROPERTIES = [\"-webkit-box-sizing\", \"-moz-box-sizing\", \"-ms-box-sizing\", \"box-sizing\"];\n  \n  var shouldIgnoreBoxSizingBorderBox = function(element) {\n    if (hasBoxSizingBorderBox(element)) {\n       return parseInt(dom.getStyle(\"width\").from(element), 10) < element.offsetWidth;\n    }\n    return false;\n  };\n  \n  var hasBoxSizingBorderBox = function(element) {\n    var i       = 0,\n        length  = BOX_SIZING_PROPERTIES.length;\n    for (; i<length; i++) {\n      if (dom.getStyle(BOX_SIZING_PROPERTIES[i]).from(element) === \"border-box\") {\n        return BOX_SIZING_PROPERTIES[i];\n      }\n    }\n  };\n  \n  dom.copyStyles = function(stylesToCopy) {\n    return {\n      from: function(element) {\n        if (shouldIgnoreBoxSizingBorderBox(element)) {\n          stylesToCopy = wysihtml5.lang.array(stylesToCopy).without(BOX_SIZING_PROPERTIES);\n        }\n        \n        var cssText = \"\",\n            length  = stylesToCopy.length,\n            i       = 0,\n            property;\n        for (; i<length; i++) {\n          property = stylesToCopy[i];\n          cssText += property + \":\" + dom.getStyle(property).from(element) + \";\";\n        }\n        \n        return {\n          to: function(element) {\n            dom.setStyles(cssText).on(element);\n            return { andTo: arguments.callee };\n          }\n        };\n      }\n    };\n  };\n})(wysihtml5.dom);/**\n * Event Delegation\n *\n * @example\n *    wysihtml5.dom.delegate(document.body, \"a\", \"click\", function() {\n *      // foo\n *    });\n */\n(function(wysihtml5) {\n  \n  wysihtml5.dom.delegate = function(container, selector, eventName, handler) {\n    return wysihtml5.dom.observe(container, eventName, function(event) {\n      var target    = event.target,\n          match     = wysihtml5.lang.array(container.querySelectorAll(selector));\n      \n      while (target && target !== container) {\n        if (match.contains(target)) {\n          handler.call(target, event);\n          break;\n        }\n        target = target.parentNode;\n      }\n    });\n  };\n  \n})(wysihtml5);/**\n * Returns the given html wrapped in a div element\n *\n * Fixing IE's inability to treat unknown elements (HTML5 section, article, ...) correctly\n * when inserted via innerHTML\n * \n * @param {String} html The html which should be wrapped in a dom element\n * @param {Obejct} [context] Document object of the context the html belongs to\n *\n * @example\n *    wysihtml5.dom.getAsDom(\"<article>foo</article>\");\n */\nwysihtml5.dom.getAsDom = (function() {\n  \n  var _innerHTMLShiv = function(html, context) {\n    var tempElement = context.createElement(\"div\");\n    tempElement.style.display = \"none\";\n    context.body.appendChild(tempElement);\n    // IE throws an exception when trying to insert <frameset></frameset> via innerHTML\n    try { tempElement.innerHTML = html; } catch(e) {}\n    context.body.removeChild(tempElement);\n    return tempElement;\n  };\n  \n  /**\n   * Make sure IE supports HTML5 tags, which is accomplished by simply creating one instance of each element\n   */\n  var _ensureHTML5Compatibility = function(context) {\n    if (context._wysihtml5_supportsHTML5Tags) {\n      return;\n    }\n    for (var i=0, length=HTML5_ELEMENTS.length; i<length; i++) {\n      context.createElement(HTML5_ELEMENTS[i]);\n    }\n    context._wysihtml5_supportsHTML5Tags = true;\n  };\n  \n  \n  /**\n   * List of html5 tags\n   * taken from http://simon.html5.org/html5-elements\n   */\n  var HTML5_ELEMENTS = [\n    \"abbr\", \"article\", \"aside\", \"audio\", \"bdi\", \"canvas\", \"command\", \"datalist\", \"details\", \"figcaption\",\n    \"figure\", \"footer\", \"header\", \"hgroup\", \"keygen\", \"mark\", \"meter\", \"nav\", \"output\", \"progress\",\n    \"rp\", \"rt\", \"ruby\", \"svg\", \"section\", \"source\", \"summary\", \"time\", \"track\", \"video\", \"wbr\"\n  ];\n  \n  return function(html, context) {\n    context = context || document;\n    var tempElement;\n    if (typeof(html) === \"object\" && html.nodeType) {\n      tempElement = context.createElement(\"div\");\n      tempElement.appendChild(html);\n    } else if (wysihtml5.browser.supportsHTML5Tags(context)) {\n      tempElement = context.createElement(\"div\");\n      tempElement.innerHTML = html;\n    } else {\n      _ensureHTML5Compatibility(context);\n      tempElement = _innerHTMLShiv(html, context);\n    }\n    return tempElement;\n  };\n})();/**\n * Walks the dom tree from the given node up until it finds a match\n * Designed for optimal performance.\n *\n * @param {Element} node The from which to check the parent nodes\n * @param {Object} matchingSet Object to match against (possible properties: nodeName, className, classRegExp)\n * @param {Number} [levels] How many parents should the function check up from the current node (defaults to 50)\n * @return {null|Element} Returns the first element that matched the desiredNodeName(s)\n * @example\n *    var listElement = wysihtml5.dom.getParentElement(document.querySelector(\"li\"), { nodeName: [\"MENU\", \"UL\", \"OL\"] });\n *    // ... or ...\n *    var unorderedListElement = wysihtml5.dom.getParentElement(document.querySelector(\"li\"), { nodeName: \"UL\" });\n *    // ... or ...\n *    var coloredElement = wysihtml5.dom.getParentElement(myTextNode, { nodeName: \"SPAN\", className: \"wysiwyg-color-red\", classRegExp: /wysiwyg-color-[a-z]/g });\n */\nwysihtml5.dom.getParentElement = (function() {\n  \n  function _isSameNodeName(nodeName, desiredNodeNames) {\n    if (!desiredNodeNames || !desiredNodeNames.length) {\n      return true;\n    }\n    \n    if (typeof(desiredNodeNames) === \"string\") {\n      return nodeName === desiredNodeNames;\n    } else {\n      return wysihtml5.lang.array(desiredNodeNames).contains(nodeName);\n    }\n  }\n  \n  function _isElement(node) {\n    return node.nodeType === wysihtml5.ELEMENT_NODE;\n  }\n  \n  function _hasClassName(element, className, classRegExp) {\n    var classNames = (element.className || \"\").match(classRegExp) || [];\n    if (!className) {\n      return !!classNames.length;\n    }\n    return classNames[classNames.length - 1] === className;\n  }\n  \n  function _getParentElementWithNodeName(node, nodeName, levels) {\n    while (levels-- && node && node.nodeName !== \"BODY\") {\n      if (_isSameNodeName(node.nodeName, nodeName)) {\n        return node;\n      }\n      node = node.parentNode;\n    }\n    return null;\n  }\n  \n  function _getParentElementWithNodeNameAndClassName(node, nodeName, className, classRegExp, levels) {\n    while (levels-- && node && node.nodeName !== \"BODY\") {\n      if (_isElement(node) &&\n          _isSameNodeName(node.nodeName, nodeName) &&\n          _hasClassName(node, className, classRegExp)) {\n        return node;\n      }\n      node = node.parentNode;\n    }\n    return null;\n  }\n  \n  return function(node, matchingSet, levels) {\n    levels = levels || 50; // Go max 50 nodes upwards from current node\n    if (matchingSet.className || matchingSet.classRegExp) {\n      return _getParentElementWithNodeNameAndClassName(\n        node, matchingSet.nodeName, matchingSet.className, matchingSet.classRegExp, levels\n      );\n    } else {\n      return _getParentElementWithNodeName(\n        node, matchingSet.nodeName, levels\n      );\n    }\n  };\n})();\n/**\n * Get element's style for a specific css property\n *\n * @param {Element} element The element on which to retrieve the style\n * @param {String} property The CSS property to retrieve (\"float\", \"display\", \"text-align\", ...)\n *\n * @example\n *    wysihtml5.dom.getStyle(\"display\").from(document.body);\n *    // => \"block\"\n */\nwysihtml5.dom.getStyle = (function() {\n  var stylePropertyMapping = {\n        \"float\": (\"styleFloat\" in document.createElement(\"div\").style) ? \"styleFloat\" : \"cssFloat\"\n      },\n      REG_EXP_CAMELIZE = /\\-[a-z]/g;\n  \n  function camelize(str) {\n    return str.replace(REG_EXP_CAMELIZE, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  }\n  \n  return function(property) {\n    return {\n      from: function(element) {\n        if (element.nodeType !== wysihtml5.ELEMENT_NODE) {\n          return;\n        }\n        \n        var doc               = element.ownerDocument,\n            camelizedProperty = stylePropertyMapping[property] || camelize(property),\n            style             = element.style,\n            currentStyle      = element.currentStyle,\n            styleValue        = style[camelizedProperty];\n        if (styleValue) {\n          return styleValue;\n        }\n        \n        // currentStyle is no standard and only supported by Opera and IE but it has one important advantage over the standard-compliant\n        // window.getComputedStyle, since it returns css property values in their original unit:\n        // If you set an elements width to \"50%\", window.getComputedStyle will give you it's current width in px while currentStyle\n        // gives you the original \"50%\".\n        // Opera supports both, currentStyle and window.getComputedStyle, that's why checking for currentStyle should have higher prio\n        if (currentStyle) {\n          try {\n                return currentStyle[camelizedProperty];\n          } catch(e) {\n            //ie will occasionally fail for unknown reasons. swallowing exception\n          }\n        }\n\n        var win                 = doc.defaultView || doc.parentWindow,\n            needsOverflowReset  = (property === \"height\" || property === \"width\") && element.nodeName === \"TEXTAREA\",\n            originalOverflow,\n            returnValue;\n\n        if (win.getComputedStyle) {\n          // Chrome and Safari both calculate a wrong width and height for textareas when they have scroll bars\n          // therfore we remove and restore the scrollbar and calculate the value in between\n          if (needsOverflowReset) {\n            originalOverflow = style.overflow;\n            style.overflow = \"hidden\";\n          }\n          returnValue = win.getComputedStyle(element, null).getPropertyValue(property);\n          if (needsOverflowReset) {\n            style.overflow = originalOverflow || \"\";\n          }\n          return returnValue;\n        }\n      }\n    };\n  };\n})();/**\n * High performant way to check whether an element with a specific tag name is in the given document\n * Optimized for being heavily executed\n * Unleashes the power of live node lists\n *\n * @param {Object} doc The document object of the context where to check\n * @param {String} tagName Upper cased tag name\n * @example\n *    wysihtml5.dom.hasElementWithTagName(document, \"IMG\");\n */\nwysihtml5.dom.hasElementWithTagName = (function() {\n  var LIVE_CACHE          = {},\n      DOCUMENT_IDENTIFIER = 1;\n  \n  function _getDocumentIdentifier(doc) {\n    return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++);\n  }\n  \n  return function(doc, tagName) {\n    var key         = _getDocumentIdentifier(doc) + \":\" + tagName,\n        cacheEntry  = LIVE_CACHE[key];\n    if (!cacheEntry) {\n      cacheEntry = LIVE_CACHE[key] = doc.getElementsByTagName(tagName);\n    }\n    \n    return cacheEntry.length > 0;\n  };\n})();/**\n * High performant way to check whether an element with a specific class name is in the given document\n * Optimized for being heavily executed\n * Unleashes the power of live node lists\n *\n * @param {Object} doc The document object of the context where to check\n * @param {String} tagName Upper cased tag name\n * @example\n *    wysihtml5.dom.hasElementWithClassName(document, \"foobar\");\n */\n(function(wysihtml5) {\n  var LIVE_CACHE          = {},\n      DOCUMENT_IDENTIFIER = 1;\n\n  function _getDocumentIdentifier(doc) {\n    return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++);\n  }\n  \n  wysihtml5.dom.hasElementWithClassName = function(doc, className) {\n    // getElementsByClassName is not supported by IE<9\n    // but is sometimes mocked via library code (which then doesn't return live node lists)\n    if (!wysihtml5.browser.supportsNativeGetElementsByClassName()) {\n      return !!doc.querySelector(\".\" + className);\n    }\n\n    var key         = _getDocumentIdentifier(doc) + \":\" + className,\n        cacheEntry  = LIVE_CACHE[key];\n    if (!cacheEntry) {\n      cacheEntry = LIVE_CACHE[key] = doc.getElementsByClassName(className);\n    }\n\n    return cacheEntry.length > 0;\n  };\n})(wysihtml5);\nwysihtml5.dom.insert = function(elementToInsert) {\n  return {\n    after: function(element) {\n      element.parentNode.insertBefore(elementToInsert, element.nextSibling);\n    },\n    \n    before: function(element) {\n      element.parentNode.insertBefore(elementToInsert, element);\n    },\n    \n    into: function(element) {\n      element.appendChild(elementToInsert);\n    }\n  };\n};wysihtml5.dom.insertCSS = function(rules) {\n  rules = rules.join(\"\\n\");\n  \n  return {\n    into: function(doc) {\n      var head         = doc.head || doc.getElementsByTagName(\"head\")[0],\n          styleElement = doc.createElement(\"style\");\n\n      styleElement.type = \"text/css\";\n\n      if (styleElement.styleSheet) {\n        styleElement.styleSheet.cssText = rules;\n      } else {\n        styleElement.appendChild(doc.createTextNode(rules));\n      }\n\n      if (head) {\n        head.appendChild(styleElement);\n      }\n    }\n  };\n};/**\n * Method to set dom events\n *\n * @example\n *    wysihtml5.dom.observe(iframe.contentWindow.document.body, [\"focus\", \"blur\"], function() { ... });\n */\nwysihtml5.dom.observe = function(element, eventNames, handler) {\n  eventNames = typeof(eventNames) === \"string\" ? [eventNames] : eventNames;\n  \n  var handlerWrapper,\n      eventName,\n      i       = 0,\n      length  = eventNames.length;\n  \n  for (; i<length; i++) {\n    eventName = eventNames[i];\n    if (element.addEventListener) {\n      element.addEventListener(eventName, handler, false);\n    } else {\n      handlerWrapper = function(event) {\n        if (!(\"target\" in event)) {\n          event.target = event.srcElement;\n        }\n        event.preventDefault = event.preventDefault || function() {\n          this.returnValue = false;\n        };\n        event.stopPropagation = event.stopPropagation || function() {\n          this.cancelBubble = true;\n        };\n        handler.call(element, event);\n      };\n      element.attachEvent(\"on\" + eventName, handlerWrapper);\n    }\n  }\n  \n  return {\n    stop: function() {\n      var eventName,\n          i       = 0,\n          length  = eventNames.length;\n      for (; i<length; i++) {\n        eventName = eventNames[i];\n        if (element.removeEventListener) {\n          element.removeEventListener(eventName, handler, false);\n        } else {\n          element.detachEvent(\"on\" + eventName, handlerWrapper);\n        }\n      }\n    }\n  };\n};\n/**\n * HTML Sanitizer\n * Rewrites the HTML based on given rules\n *\n * @param {Element|String} elementOrHtml HTML String to be sanitized OR element whose content should be sanitized\n * @param {Object} [rules] List of rules for rewriting the HTML, if there's no rule for an element it will\n *    be converted to a \"span\". Each rule is a key/value pair where key is the tag to convert, and value the\n *    desired substitution.\n * @param {Object} context Document object in which to parse the html, needed to sandbox the parsing\n *\n * @return {Element|String} Depends on the elementOrHtml parameter. When html then the sanitized html as string elsewise the element.\n *\n * @example\n *    var userHTML = '<div id=\"foo\" onclick=\"alert(1);\"><p><font color=\"red\">foo</font><script>alert(1);</script></p></div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      tags {\n *        p:      \"div\",      // Rename p tags to div tags\n *        font:   \"span\"      // Rename font tags to span tags\n *        div:    true,       // Keep them, also possible (same result when passing: \"div\" or true)\n *        script: undefined   // Remove script elements\n *      }\n *    });\n *    // => <div><div><span>foo bar</span></div></div>\n *\n *    var userHTML = '<table><tbody><tr><td>I'm a table!</td></tr></tbody></table>';\n *    wysihtml5.dom.parse(userHTML);\n *    // => '<span><span><span><span>I'm a table!</span></span></span></span>'\n *\n *    var userHTML = '<div>foobar<br>foobar</div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      tags: {\n *        div: undefined,\n *        br:  true\n *      }\n *    });\n *    // => ''\n *\n *    var userHTML = '<div class=\"red\">foo</div><div class=\"pink\">bar</div>';\n *    wysihtml5.dom.parse(userHTML, {\n *      classes: {\n *        red:    1,\n *        green:  1\n *      },\n *      tags: {\n *        div: {\n *          rename_tag:     \"p\"\n *        }\n *      }\n *    });\n *    // => '<p class=\"red\">foo</p><p>bar</p>'\n */\nwysihtml5.dom.parse = (function() {\n  \n  /**\n   * It's not possible to use a XMLParser/DOMParser as HTML5 is not always well-formed XML\n   * new DOMParser().parseFromString('<img src=\"foo.gif\">') will cause a parseError since the\n   * node isn't closed\n   *\n   * Therefore we've to use the browser's ordinary HTML parser invoked by setting innerHTML.\n   */\n  var NODE_TYPE_MAPPING = {\n        \"1\": _handleElement,\n        \"3\": _handleText\n      },\n      // Rename unknown tags to this\n      DEFAULT_NODE_NAME   = \"span\",\n      WHITE_SPACE_REG_EXP = /\\s+/,\n      defaultRules        = { tags: {}, classes: {} },\n      currentRules        = {};\n  \n  /**\n   * Iterates over all childs of the element, recreates them, appends them into a document fragment\n   * which later replaces the entire body content\n   */\n  function parse(elementOrHtml, rules, context, cleanUp) {\n    wysihtml5.lang.object(currentRules).merge(defaultRules).merge(rules).get();\n    \n    context           = context || elementOrHtml.ownerDocument || document;\n    var fragment      = context.createDocumentFragment(),\n        isString      = typeof(elementOrHtml) === \"string\",\n        element,\n        newNode,\n        firstChild;\n    \n    if (isString) {\n      element = wysihtml5.dom.getAsDom(elementOrHtml, context);\n    } else {\n      element = elementOrHtml;\n    }\n    \n    while (element.firstChild) {\n      firstChild  = element.firstChild;\n      element.removeChild(firstChild);\n      newNode = _convert(firstChild, cleanUp);\n      if (newNode) {\n        fragment.appendChild(newNode);\n      }\n    }\n    \n    // Clear element contents\n    element.innerHTML = \"\";\n    \n    // Insert new DOM tree\n    element.appendChild(fragment);\n    \n    return isString ? wysihtml5.quirks.getCorrectInnerHTML(element) : element;\n  }\n  \n  function _convert(oldNode, cleanUp) {\n    var oldNodeType     = oldNode.nodeType,\n        oldChilds       = oldNode.childNodes,\n        oldChildsLength = oldChilds.length,\n        newNode,\n        method          = NODE_TYPE_MAPPING[oldNodeType],\n        i               = 0;\n    \n    newNode = method && method(oldNode);\n    \n    if (!newNode) {\n      return null;\n    }\n    \n    for (i=0; i<oldChildsLength; i++) {\n      newChild = _convert(oldChilds[i], cleanUp);\n      if (newChild) {\n        newNode.appendChild(newChild);\n      }\n    }\n    \n    // Cleanup senseless <span> elements\n    if (cleanUp &&\n        newNode.childNodes.length <= 1 &&\n        newNode.nodeName.toLowerCase() === DEFAULT_NODE_NAME &&\n        !newNode.attributes.length) {\n      return newNode.firstChild;\n    }\n    \n    return newNode;\n  }\n  \n  function _handleElement(oldNode) {\n    var rule,\n        newNode,\n        endTag,\n        tagRules    = currentRules.tags,\n        nodeName    = oldNode.nodeName.toLowerCase(),\n        scopeName   = oldNode.scopeName;\n    \n    /**\n     * We already parsed that element\n     * ignore it! (yes, this sometimes happens in IE8 when the html is invalid)\n     */\n    if (oldNode._wysihtml5) {\n      return null;\n    }\n    oldNode._wysihtml5 = 1;\n    \n    if (oldNode.className === \"wysihtml5-temp\") {\n      return null;\n    }\n    \n    /**\n     * IE is the only browser who doesn't include the namespace in the\n     * nodeName, that's why we have to prepend it by ourselves\n     * scopeName is a proprietary IE feature\n     * read more here http://msdn.microsoft.com/en-us/library/ms534388(v=vs.85).aspx\n     */\n    if (scopeName && scopeName != \"HTML\") {\n      nodeName = scopeName + \":\" + nodeName;\n    }\n    \n    /**\n     * Repair node\n     * IE is a bit bitchy when it comes to invalid nested markup which includes unclosed tags\n     * A <p> doesn't need to be closed according HTML4-5 spec, we simply replace it with a <div> to preserve its content and layout\n     */\n    if (\"outerHTML\" in oldNode) {\n      if (!wysihtml5.browser.autoClosesUnclosedTags() &&\n          oldNode.nodeName === \"P\" &&\n          oldNode.outerHTML.slice(-4).toLowerCase() !== \"</p>\") {\n        nodeName = \"div\";\n      }\n    }\n    \n    if (nodeName in tagRules) {\n      rule = tagRules[nodeName];\n      if (!rule || rule.remove) {\n        return null;\n      }\n      \n      rule = typeof(rule) === \"string\" ? { rename_tag: rule } : rule;\n    } else if (oldNode.firstChild) {\n      rule = { rename_tag: DEFAULT_NODE_NAME };\n    } else {\n      // Remove empty unknown elements\n      return null;\n    }\n    \n    newNode = oldNode.ownerDocument.createElement(rule.rename_tag || nodeName);\n    _handleAttributes(oldNode, newNode, rule);\n    \n    oldNode = null;\n    return newNode;\n  }\n  \n  function _handleAttributes(oldNode, newNode, rule) {\n    var attributes          = {},                         // fresh new set of attributes to set on newNode\n        setClass            = rule.set_class,             // classes to set\n        addClass            = rule.add_class,             // add classes based on existing attributes\n        setAttributes       = rule.set_attributes,        // attributes to set on the current node\n        checkAttributes     = rule.check_attributes,      // check/convert values of attributes\n        allowedClasses      = currentRules.classes,\n        i                   = 0,\n        classes             = [],\n        newClasses          = [],\n        newUniqueClasses    = [],\n        oldClasses          = [],\n        classesLength,\n        newClassesLength,\n        currentClass,\n        newClass,\n        attributeName,\n        newAttributeValue,\n        method;\n    \n    if (setAttributes) {\n      attributes = wysihtml5.lang.object(setAttributes).clone();\n    }\n    \n    if (checkAttributes) {\n      for (attributeName in checkAttributes) {\n        method = attributeCheckMethods[checkAttributes[attributeName]];\n        if (!method) {\n          continue;\n        }\n        newAttributeValue = method(_getAttribute(oldNode, attributeName));\n        if (typeof(newAttributeValue) === \"string\") {\n          attributes[attributeName] = newAttributeValue;\n        }\n      }\n    }\n    \n    if (setClass) {\n      classes.push(setClass);\n    }\n    \n    if (addClass) {\n      for (attributeName in addClass) {\n        method = addClassMethods[addClass[attributeName]];\n        if (!method) {\n          continue;\n        }\n        newClass = method(_getAttribute(oldNode, attributeName));\n        if (typeof(newClass) === \"string\") {\n          classes.push(newClass);\n        }\n      }\n    }\n    \n    // make sure that wysihtml5 temp class doesn't get stripped out\n    allowedClasses[\"_wysihtml5-temp-placeholder\"] = 1;\n    \n    // add old classes last\n    oldClasses = oldNode.getAttribute(\"class\");\n    if (oldClasses) {\n      classes = classes.concat(oldClasses.split(WHITE_SPACE_REG_EXP));\n    }\n    classesLength = classes.length;\n    for (; i<classesLength; i++) {\n      currentClass = classes[i];\n      if (allowedClasses[currentClass]) {\n        newClasses.push(currentClass);\n      }\n    }\n    \n    // remove duplicate entries and preserve class specificity\n    newClassesLength = newClasses.length;\n    while (newClassesLength--) {\n      currentClass = newClasses[newClassesLength];\n      if (!wysihtml5.lang.array(newUniqueClasses).contains(currentClass)) {\n        newUniqueClasses.unshift(currentClass);\n      }\n    }\n    \n    if (newUniqueClasses.length) {\n      attributes[\"class\"] = newUniqueClasses.join(\" \");\n    }\n    \n    // set attributes on newNode\n    for (attributeName in attributes) {\n      // Setting attributes can cause a js error in IE under certain circumstances\n      // eg. on a <img> under https when it's new attribute value is non-https\n      // TODO: Investigate this further and check for smarter handling\n      try {\n        newNode.setAttribute(attributeName, attributes[attributeName]);\n      } catch(e) {}\n    }\n    \n    // IE8 sometimes loses the width/height attributes when those are set before the \"src\"\n    // so we make sure to set them again\n    if (attributes.src) {\n      if (typeof(attributes.width) !== \"undefined\") {\n        newNode.setAttribute(\"width\", attributes.width);\n      }\n      if (typeof(attributes.height) !== \"undefined\") {\n        newNode.setAttribute(\"height\", attributes.height);\n      }\n    }\n  }\n  \n  /**\n   * IE gives wrong results for hasAttribute/getAttribute, for example:\n   *    var td = document.createElement(\"td\");\n   *    td.getAttribute(\"rowspan\"); // => \"1\" in IE\n   *\n   * Therefore we have to check the element's outerHTML for the attribute\n   */\n  var HAS_GET_ATTRIBUTE_BUG = !wysihtml5.browser.supportsGetAttributeCorrectly();\n  function _getAttribute(node, attributeName) {\n    attributeName = attributeName.toLowerCase();\n    var nodeName = node.nodeName;\n    if (nodeName == \"IMG\" && attributeName == \"src\" && _isLoadedImage(node) === true) {\n      // Get 'src' attribute value via object property since this will always contain the\n      // full absolute url (http://...)\n      // this fixes a very annoying bug in firefox (ver 3.6 & 4) and IE 8 where images copied from the same host\n      // will have relative paths, which the sanitizer strips out (see attributeCheckMethods.url)\n      return node.src;\n    } else if (HAS_GET_ATTRIBUTE_BUG && \"outerHTML\" in node) {\n      // Don't trust getAttribute/hasAttribute in IE 6-8, instead check the element's outerHTML\n      var outerHTML      = node.outerHTML.toLowerCase(),\n          // TODO: This might not work for attributes without value: <input disabled>\n          hasAttribute   = outerHTML.indexOf(\" \" + attributeName +  \"=\") != -1;\n      \n      return hasAttribute ? node.getAttribute(attributeName) : null;\n    } else{\n      return node.getAttribute(attributeName);\n    }\n  }\n  \n  /**\n   * Check whether the given node is a proper loaded image\n   * FIXME: Returns undefined when unknown (Chrome, Safari)\n   */\n  function _isLoadedImage(node) {\n    try {\n      return node.complete && !node.mozMatchesSelector(\":-moz-broken\");\n    } catch(e) {\n      if (node.complete && node.readyState === \"complete\") {\n        return true;\n      }\n    }\n  }\n  \n  function _handleText(oldNode) {\n    return oldNode.ownerDocument.createTextNode(oldNode.data);\n  }\n  \n  \n  // ------------ attribute checks ------------ \\\\\n  var attributeCheckMethods = {\n    url: (function() {\n      var REG_EXP = /^https?:\\/\\//i;\n      return function(attributeValue) {\n        if (!attributeValue || !attributeValue.match(REG_EXP)) {\n          return null;\n        }\n        return attributeValue.replace(REG_EXP, function(match) {\n          return match.toLowerCase();\n        });\n      };\n    })(),\n    \n    alt: (function() {\n      var REG_EXP = /[^ a-z0-9_\\-]/gi;\n      return function(attributeValue) {\n        if (!attributeValue) {\n          return \"\";\n        }\n        return attributeValue.replace(REG_EXP, \"\");\n      };\n    })(),\n    \n    numbers: (function() {\n      var REG_EXP = /\\D/g;\n      return function(attributeValue) {\n        attributeValue = (attributeValue || \"\").replace(REG_EXP, \"\");\n        return attributeValue || null;\n      };\n    })()\n  };\n  \n  // ------------ class converter (converts an html attribute to a class name) ------------ \\\\\n  var addClassMethods = {\n    align_img: (function() {\n      var mapping = {\n        left:   \"wysiwyg-float-left\",\n        right:  \"wysiwyg-float-right\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    align_text: (function() {\n      var mapping = {\n        left:     \"wysiwyg-text-align-left\",\n        right:    \"wysiwyg-text-align-right\",\n        center:   \"wysiwyg-text-align-center\",\n        justify:  \"wysiwyg-text-align-justify\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    clear_br: (function() {\n      var mapping = {\n        left:   \"wysiwyg-clear-left\",\n        right:  \"wysiwyg-clear-right\",\n        both:   \"wysiwyg-clear-both\",\n        all:    \"wysiwyg-clear-both\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).toLowerCase()];\n      };\n    })(),\n    \n    size_font: (function() {\n      var mapping = {\n        \"1\": \"wysiwyg-font-size-xx-small\",\n        \"2\": \"wysiwyg-font-size-small\",\n        \"3\": \"wysiwyg-font-size-medium\",\n        \"4\": \"wysiwyg-font-size-large\",\n        \"5\": \"wysiwyg-font-size-x-large\",\n        \"6\": \"wysiwyg-font-size-xx-large\",\n        \"7\": \"wysiwyg-font-size-xx-large\",\n        \"-\": \"wysiwyg-font-size-smaller\",\n        \"+\": \"wysiwyg-font-size-larger\"\n      };\n      return function(attributeValue) {\n        return mapping[String(attributeValue).charAt(0)];\n      };\n    })()\n  };\n  \n  return parse;\n})();/**\n * Checks for empty text node childs and removes them\n *\n * @param {Element} node The element in which to cleanup\n * @example\n *    wysihtml5.dom.removeEmptyTextNodes(element);\n */\nwysihtml5.dom.removeEmptyTextNodes = function(node) {\n  var childNode,\n      childNodes        = wysihtml5.lang.array(node.childNodes).get(),\n      childNodesLength  = childNodes.length,\n      i                 = 0;\n  for (; i<childNodesLength; i++) {\n    childNode = childNodes[i];\n    if (childNode.nodeType === wysihtml5.TEXT_NODE && childNode.data === \"\") {\n      childNode.parentNode.removeChild(childNode);\n    }\n  }\n};\n/**\n * Renames an element (eg. a <div> to a <p>) and keeps its childs\n *\n * @param {Element} element The list element which should be renamed\n * @param {Element} newNodeName The desired tag name\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <ul id=\"list\">\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n *\n *    <script>\n *      wysihtml5.dom.renameElement(document.getElementById(\"list\"), \"ol\");\n *    </script>\n *\n *    <!-- Will result in: -->\n *    <ol>\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ol>\n */\nwysihtml5.dom.renameElement = function(element, newNodeName) {\n  var newElement = element.ownerDocument.createElement(newNodeName),\n      firstChild;\n  while (firstChild = element.firstChild) {\n    newElement.appendChild(firstChild);\n  }\n  wysihtml5.dom.copyAttributes([\"align\", \"className\"]).from(element).to(newElement);\n  element.parentNode.replaceChild(newElement, element);\n  return newElement;\n};/**\n * Takes an element, removes it and replaces it with it's childs\n * \n * @param {Object} node The node which to replace with it's child nodes\n * @example\n *    <div id=\"foo\">\n *      <span>hello</span>\n *    </div>\n *    <script>\n *      // Remove #foo and replace with it's children\n *      wysihtml5.dom.replaceWithChildNodes(document.getElementById(\"foo\"));\n *    </script>\n */\nwysihtml5.dom.replaceWithChildNodes = function(node) {\n  if (!node.parentNode) {\n    return;\n  }\n  \n  if (!node.firstChild) {\n    node.parentNode.removeChild(node);\n    return;\n  }\n  \n  var fragment = node.ownerDocument.createDocumentFragment();\n  while (node.firstChild) {\n    fragment.appendChild(node.firstChild);\n  }\n  node.parentNode.replaceChild(fragment, node);\n  node = fragment = null;\n};\n/**\n * Unwraps an unordered/ordered list\n *\n * @param {Element} element The list element which should be unwrapped\n *\n * @example\n *    <!-- Assume the following dom: -->\n *    <ul id=\"list\">\n *      <li>eminem</li>\n *      <li>dr. dre</li>\n *      <li>50 Cent</li>\n *    </ul>\n *\n *    <script>\n *      wysihtml5.dom.resolveList(document.getElementById(\"list\"));\n *    </script>\n *\n *    <!-- Will result in: -->\n *    eminem<br>\n *    dr. dre<br>\n *    50 Cent<br>\n */\n(function(dom) {\n  function _isBlockElement(node) {\n    return dom.getStyle(\"display\").from(node) === \"block\";\n  }\n  \n  function _isLineBreak(node) {\n    return node.nodeName === \"BR\";\n  }\n  \n  function _appendLineBreak(element) {\n    var lineBreak = element.ownerDocument.createElement(\"br\");\n    element.appendChild(lineBreak);\n  }\n  \n  function resolveList(list) {\n    if (list.nodeName !== \"MENU\" && list.nodeName !== \"UL\" && list.nodeName !== \"OL\") {\n      return;\n    }\n    \n    var doc             = list.ownerDocument,\n        fragment        = doc.createDocumentFragment(),\n        previousSibling = list.previousElementSibling || list.previousSibling,\n        firstChild,\n        lastChild,\n        isLastChild,\n        shouldAppendLineBreak,\n        listItem;\n    \n    if (previousSibling && !_isBlockElement(previousSibling)) {\n      _appendLineBreak(fragment);\n    }\n    \n    while (listItem = list.firstChild) {\n      lastChild = listItem.lastChild;\n      while (firstChild = listItem.firstChild) {\n        isLastChild           = firstChild === lastChild;\n        // This needs to be done before appending it to the fragment, as it otherwise will loose style information\n        shouldAppendLineBreak = isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild);\n        fragment.appendChild(firstChild);\n        if (shouldAppendLineBreak) {\n          _appendLineBreak(fragment);\n        }\n      }\n      \n      listItem.parentNode.removeChild(listItem);\n    }\n    list.parentNode.replaceChild(fragment, list);\n  }\n  \n  dom.resolveList = resolveList;\n})(wysihtml5.dom);/**\n * Sandbox for executing javascript, parsing css styles and doing dom operations in a secure way\n *\n * Browser Compatibility:\n *  - Secure in MSIE 6+, but only when the user hasn't made changes to his security level \"restricted\"\n *  - Partially secure in other browsers (Firefox, Opera, Safari, Chrome, ...)\n *\n * Please note that this class can't benefit from the HTML5 sandbox attribute for the following reasons:\n *    - sandboxing doesn't work correctly with inlined content (src=\"javascript:'<html>...</html>'\")\n *    - sandboxing of physical documents causes that the dom isn't accessible anymore from the outside (iframe.contentWindow, ...)\n *    - setting the \"allow-same-origin\" flag would fix that, but then still javascript and dom events refuse to fire\n *    - therefore the \"allow-scripts\" flag is needed, which then would deactivate any security, as the js executed inside the iframe\n *      can do anything as if the sandbox attribute wasn't set\n *\n * @param {Function} [readyCallback] Method that gets invoked when the sandbox is ready\n * @param {Object} [config] Optional parameters\n *\n * @example\n *    new wysihtml5.dom.Sandbox(function(sandbox) {\n *      sandbox.getWindow().document.body.innerHTML = '<img src=foo.gif onerror=\"alert(document.cookie)\">';\n *    });\n */\n(function(wysihtml5) {\n  var /**\n       * Default configuration\n       */\n      doc                 = document,\n      /**\n       * Properties to unset/protect on the window object\n       */\n      windowProperties    = [\n        \"parent\", \"top\", \"opener\", \"frameElement\", \"frames\",\n        \"localStorage\", \"globalStorage\", \"sessionStorage\", \"indexedDB\"\n      ],\n      /**\n       * Properties on the window object which are set to an empty function\n       */\n      windowProperties2   = [\n        \"open\", \"close\", \"openDialog\", \"showModalDialog\",\n        \"alert\", \"confirm\", \"prompt\",\n        \"openDatabase\", \"postMessage\",\n        \"XMLHttpRequest\", \"XDomainRequest\"\n      ],\n      /**\n       * Properties to unset/protect on the document object\n       */\n      documentProperties  = [\n        \"referrer\",\n        \"write\", \"open\", \"close\"\n      ];\n  \n  wysihtml5.dom.Sandbox = Base.extend(\n    /** @scope wysihtml5.dom.Sandbox.prototype */ {\n\n    constructor: function(readyCallback, config) {\n      this.callback = readyCallback || wysihtml5.EMPTY_FUNCTION;\n      this.config   = wysihtml5.lang.object({}).merge(config).get();\n      this.iframe   = this._createIframe();\n    },\n    \n    insertInto: function(element) {\n      if (typeof(element) === \"string\") {\n        element = doc.getElementById(element);\n      }\n      \n      element.appendChild(this.iframe);\n    },\n\n    getIframe: function() {\n      return this.iframe;\n    },\n\n    getWindow: function() {\n      this._readyError();\n    },\n\n    getDocument: function() {\n      this._readyError();\n    },\n\n    destroy: function() {\n      var iframe = this.getIframe();\n      iframe.parentNode.removeChild(iframe);\n    },\n\n    _readyError: function() {\n      throw new Error(\"wysihtml5.Sandbox: Sandbox iframe isn't loaded yet\");\n    },\n\n    /**\n     * Creates the sandbox iframe\n     *\n     * Some important notes:\n     *  - We can't use HTML5 sandbox for now:\n     *    setting it causes that the iframe's dom can't be accessed from the outside\n     *    Therefore we need to set the \"allow-same-origin\" flag which enables accessing the iframe's dom\n     *    But then there's another problem, DOM events (focus, blur, change, keypress, ...) aren't fired.\n     *    In order to make this happen we need to set the \"allow-scripts\" flag.\n     *    A combination of allow-scripts and allow-same-origin is almost the same as setting no sandbox attribute at all.\n     *  - Chrome & Safari, doesn't seem to support sandboxing correctly when the iframe's html is inlined (no physical document)\n     *  - IE needs to have the security=\"restricted\" attribute set before the iframe is \n     *    inserted into the dom tree\n     *  - Believe it or not but in IE \"security\" in document.createElement(\"iframe\") is false, even\n     *    though it supports it\n     *  - When an iframe has security=\"restricted\", in IE eval() & execScript() don't work anymore\n     *  - IE doesn't fire the onload event when the content is inlined in the src attribute, therefore we rely\n     *    on the onreadystatechange event\n     */\n    _createIframe: function() {\n      var that   = this,\n          iframe = doc.createElement(\"iframe\");\n      iframe.className = \"wysihtml5-sandbox\";\n      wysihtml5.dom.setAttributes({\n        \"security\":           \"restricted\",\n        \"allowtransparency\":  \"true\",\n        \"frameborder\":        0,\n        \"width\":              0,\n        \"height\":             0,\n        \"marginwidth\":        0,\n        \"marginheight\":       0\n      }).on(iframe);\n\n      // Setting the src like this prevents ssl warnings in IE6\n      if (wysihtml5.browser.throwsMixedContentWarningWhenIframeSrcIsEmpty()) {\n        iframe.src = \"javascript:'<html></html>'\";\n      }\n\n      iframe.onload = function() {\n        iframe.onreadystatechange = iframe.onload = null;\n        that._onLoadIframe(iframe);\n      };\n\n      iframe.onreadystatechange = function() {\n        if (/loaded|complete/.test(iframe.readyState)) {\n          iframe.onreadystatechange = iframe.onload = null;\n          that._onLoadIframe(iframe);\n        }\n      };\n\n      return iframe;\n    },\n\n    /**\n     * Callback for when the iframe has finished loading\n     */\n    _onLoadIframe: function(iframe) {\n      // don't resume when the iframe got unloaded (eg. by removing it from the dom)\n      if (!wysihtml5.dom.contains(doc.documentElement, iframe)) {\n        return;\n      }\n\n      var that           = this,\n          iframeWindow   = iframe.contentWindow,\n          iframeDocument = iframe.contentWindow.document,\n          charset        = doc.characterSet || doc.charset || \"utf-8\",\n          sandboxHtml    = this._getHtml({\n            charset:      charset,\n            stylesheets:  this.config.stylesheets\n          });\n\n      // Create the basic dom tree including proper DOCTYPE and charset\n      iframeDocument.open(\"text/html\", \"replace\");\n      iframeDocument.write(sandboxHtml);\n      iframeDocument.close();\n\n      this.getWindow = function() { return iframe.contentWindow; };\n      this.getDocument = function() { return iframe.contentWindow.document; };\n\n      // Catch js errors and pass them to the parent's onerror event\n      // addEventListener(\"error\") doesn't work properly in some browsers\n      // TODO: apparently this doesn't work in IE9!\n      iframeWindow.onerror = function(errorMessage, fileName, lineNumber) {\n        throw new Error(\"wysihtml5.Sandbox: \" + errorMessage, fileName, lineNumber);\n      };\n\n      if (!wysihtml5.browser.supportsSandboxedIframes()) {\n        // Unset a bunch of sensitive variables\n        // Please note: This isn't hack safe!  \n        // It more or less just takes care of basic attacks and prevents accidental theft of sensitive information\n        // IE is secure though, which is the most important thing, since IE is the only browser, who\n        // takes over scripts & styles into contentEditable elements when copied from external websites\n        // or applications (Microsoft Word, ...)\n        var i, length;\n        for (i=0, length=windowProperties.length; i<length; i++) {\n          this._unset(iframeWindow, windowProperties[i]);\n        }\n        for (i=0, length=windowProperties2.length; i<length; i++) {\n          this._unset(iframeWindow, windowProperties2[i], wysihtml5.EMPTY_FUNCTION);\n        }\n        for (i=0, length=documentProperties.length; i<length; i++) {\n          this._unset(iframeDocument, documentProperties[i]);\n        }\n        // This doesn't work in Safari 5 \n        // See http://stackoverflow.com/questions/992461/is-it-possible-to-override-document-cookie-in-webkit\n        this._unset(iframeDocument, \"cookie\", \"\", true);\n      }\n\n      this.loaded = true;\n\n      // Trigger the callback\n      setTimeout(function() { that.callback(that); }, 0);\n    },\n\n    _getHtml: function(templateVars) {\n      var stylesheets = templateVars.stylesheets,\n          html        = \"\",\n          i           = 0,\n          length;\n      stylesheets = typeof(stylesheets) === \"string\" ? [stylesheets] : stylesheets;\n      if (stylesheets) {\n        length = stylesheets.length;\n        for (; i<length; i++) {\n          html += '<link rel=\"stylesheet\" href=\"' + stylesheets[i] + '\">';\n        }\n      }\n      templateVars.stylesheets = html;\n\n      return wysihtml5.lang.string(\n        '<!DOCTYPE html><html><head>'\n        + '<meta charset=\"#{charset}\">#{stylesheets}</head>'\n        + '<body></body></html>'\n      ).interpolate(templateVars);\n    },\n\n    /**\n     * Method to unset/override existing variables\n     * @example\n     *    // Make cookie unreadable and unwritable\n     *    this._unset(document, \"cookie\", \"\", true);\n     */\n    _unset: function(object, property, value, setter) {\n      try { object[property] = value; } catch(e) {}\n\n      try { object.__defineGetter__(property, function() { return value; }); } catch(e) {}\n      if (setter) {\n        try { object.__defineSetter__(property, function() {}); } catch(e) {}\n      }\n\n      if (!wysihtml5.browser.crashesWhenDefineProperty(property)) {\n        try {\n          var config = {\n            get: function() { return value; }\n          };\n          if (setter) {\n            config.set = function() {};\n          }\n          Object.defineProperty(object, property, config);\n        } catch(e) {}\n      }\n    }\n  });\n})(wysihtml5);\n(function() {\n  var mapping = {\n    \"className\": \"class\"\n  };\n  wysihtml5.dom.setAttributes = function(attributes) {\n    return {\n      on: function(element) {\n        for (var i in attributes) {\n          element.setAttribute(mapping[i] || i, attributes[i]);\n        }\n      }\n    }\n  };\n})();wysihtml5.dom.setStyles = function(styles) {\n  return {\n    on: function(element) {\n      var style = element.style;\n      if (typeof(styles) === \"string\") {\n        style.cssText += \";\" + styles;\n        return;\n      }\n      for (var i in styles) {\n        if (i === \"float\") {\n          style.cssFloat = styles[i];\n          style.styleFloat = styles[i];\n        } else {\n          style[i] = styles[i];\n        }\n      }\n    }\n  };\n};/**\n * Simulate HTML5 placeholder attribute\n *\n * Needed since\n *    - div[contentEditable] elements don't support it\n *    - older browsers (such as IE8 and Firefox 3.6) don't support it at all\n *\n * @param {Object} parent Instance of main wysihtml5.Editor class\n * @param {Element} view Instance of wysihtml5.views.* class\n * @param {String} placeholderText\n *\n * @example\n *    wysihtml.dom.simulatePlaceholder(this, composer, \"Foobar\");\n */\n(function(dom) {\n  dom.simulatePlaceholder = function(editor, view, placeholderText) {\n    var CLASS_NAME = \"placeholder\",\n        unset = function() {\n          if (view.hasPlaceholderSet()) {\n            view.clear();\n          }\n          dom.removeClass(view.element, CLASS_NAME);\n        },\n        set = function() {\n          if (view.isEmpty()) {\n            view.setValue(placeholderText);\n            dom.addClass(view.element, CLASS_NAME);\n          }\n        };\n\n    editor\n      .observe(\"set_placeholder\", set)\n      .observe(\"unset_placeholder\", unset)\n      .observe(\"focus:composer\", unset)\n      .observe(\"paste:composer\", unset)\n      .observe(\"blur:composer\", set);\n\n    set();\n  };\n})(wysihtml5.dom);\n(function(dom) {\n  var documentElement = document.documentElement;\n  if (\"textContent\" in documentElement) {\n    dom.setTextContent = function(element, text) {\n      element.textContent = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.textContent;\n    };\n  } else if (\"innerText\" in documentElement) {\n    dom.setTextContent = function(element, text) {\n      element.innerText = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.innerText;\n    };\n  } else {\n    dom.setTextContent = function(element, text) {\n      element.nodeValue = text;\n    };\n\n    dom.getTextContent = function(element) {\n      return element.nodeValue;\n    };\n  }\n})(wysihtml5.dom);\n\n/**\n * Fix most common html formatting misbehaviors of browsers implementation when inserting\n * content via copy & paste contentEditable\n *\n * @author Christopher Blum\n */\nwysihtml5.quirks.cleanPastedHTML = (function() {\n  // TODO: We probably need more rules here\n  var defaultRules = {\n    // When pasting underlined links <a> into a contentEditable, IE thinks, it has to insert <u> to keep the styling\n    \"a u\": wysihtml5.dom.replaceWithChildNodes\n  };\n  \n  function cleanPastedHTML(elementOrHtml, rules, context) {\n    rules   = rules || defaultRules;\n    context = context || elementOrHtml.ownerDocument || document;\n    \n    var element,\n        isString = typeof(elementOrHtml) === \"string\",\n        method,\n        matches,\n        matchesLength,\n        i,\n        j = 0;\n    if (isString) {\n      element = wysihtml5.dom.getAsDom(elementOrHtml, context);\n    } else {\n      element = elementOrHtml;\n    }\n    \n    for (i in rules) {\n      matches       = element.querySelectorAll(i);\n      method        = rules[i];\n      matchesLength = matches.length;\n      for (; j<matchesLength; j++) {\n        method(matches[j]);\n      }\n    }\n    \n    matches = elementOrHtml = rules = null;\n    \n    return isString ? element.innerHTML : element;\n  }\n  \n  return cleanPastedHTML;\n})();/**\n * IE and Opera leave an empty paragraph in the contentEditable element after clearing it\n *\n * @param {Object} contentEditableElement The contentEditable element to observe for clearing events\n * @exaple\n *    wysihtml5.quirks.ensureProperClearing(myContentEditableElement);\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  wysihtml5.quirks.ensureProperClearing = (function() {\n    var clearIfNecessary = function(event) {\n      var element = this;\n      setTimeout(function() {\n        var innerHTML = element.innerHTML.toLowerCase();\n        if (innerHTML == \"<p>&nbsp;</p>\" ||\n            innerHTML == \"<p>&nbsp;</p><p>&nbsp;</p>\") {\n          element.innerHTML = \"\";\n        }\n      }, 0);\n    };\n\n    return function(composer) {\n      dom.observe(composer.element, [\"cut\", \"keydown\"], clearIfNecessary);\n    };\n  })();\n\n\n\n  /**\n   * In Opera when the caret is in the first and only item of a list (<ul><li>|</li></ul>) and the list is the first child of the contentEditable element, it's impossible to delete the list by hitting backspace\n   *\n   * @param {Object} contentEditableElement The contentEditable element to observe for clearing events\n   * @exaple\n   *    wysihtml5.quirks.ensureProperClearing(myContentEditableElement);\n   */\n  wysihtml5.quirks.ensureProperClearingOfLists = (function() {\n    var ELEMENTS_THAT_CONTAIN_LI = [\"OL\", \"UL\", \"MENU\"];\n\n    var clearIfNecessary = function(element, contentEditableElement) {\n      if (!contentEditableElement.firstChild || !wysihtml5.lang.array(ELEMENTS_THAT_CONTAIN_LI).contains(contentEditableElement.firstChild.nodeName)) {\n        return;\n      }\n\n      var list = dom.getParentElement(element, { nodeName: ELEMENTS_THAT_CONTAIN_LI });\n      if (!list) {\n        return;\n      }\n\n      var listIsFirstChildOfContentEditable = list == contentEditableElement.firstChild;\n      if (!listIsFirstChildOfContentEditable) {\n        return;\n      }\n\n      var hasOnlyOneListItem = list.childNodes.length <= 1;\n      if (!hasOnlyOneListItem) {\n        return;\n      }\n\n      var onlyListItemIsEmpty = list.firstChild ? list.firstChild.innerHTML === \"\" : true;\n      if (!onlyListItemIsEmpty) {\n        return;\n      }\n\n      list.parentNode.removeChild(list);\n    };\n\n    return function(composer) {\n      dom.observe(composer.element, \"keydown\", function(event) {\n        if (event.keyCode !== wysihtml5.BACKSPACE_KEY) {\n          return;\n        }\n\n        var element = composer.selection.getSelectedNode();\n        clearIfNecessary(element, composer.element);\n      });\n    };\n  })();\n\n})(wysihtml5);\n// See https://bugzilla.mozilla.org/show_bug.cgi?id=664398\n//\n// In Firefox this:\n//      var d = document.createElement(\"div\");\n//      d.innerHTML ='<a href=\"~\"></a>';\n//      d.innerHTML;\n// will result in:\n//      <a href=\"%7E\"></a>\n// which is wrong\n(function(wysihtml5) {\n  var TILDE_ESCAPED = \"%7E\";\n  wysihtml5.quirks.getCorrectInnerHTML = function(element) {\n    var innerHTML = element.innerHTML;\n    if (innerHTML.indexOf(TILDE_ESCAPED) === -1) {\n      return innerHTML;\n    }\n    \n    var elementsWithTilde = element.querySelectorAll(\"[href*='~'], [src*='~']\"),\n        url,\n        urlToSearch,\n        length,\n        i;\n    for (i=0, length=elementsWithTilde.length; i<length; i++) {\n      url         = elementsWithTilde[i].href || elementsWithTilde[i].src;\n      urlToSearch = wysihtml5.lang.string(url).replace(\"~\").by(TILDE_ESCAPED);\n      innerHTML   = wysihtml5.lang.string(innerHTML).replace(urlToSearch).by(url);\n    }\n    return innerHTML;\n  };\n})(wysihtml5);/**\n * Some browsers don't insert line breaks when hitting return in a contentEditable element\n *    - Opera & IE insert new <p> on return\n *    - Chrome & Safari insert new <div> on return\n *    - Firefox inserts <br> on return (yippie!)\n *\n * @param {Element} element\n *\n * @example\n *    wysihtml5.quirks.insertLineBreakOnReturn(element);\n */\n(function(wysihtml5) {\n  var dom                                           = wysihtml5.dom,\n      USE_NATIVE_LINE_BREAK_WHEN_CARET_INSIDE_TAGS  = [\"LI\", \"P\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"],\n      LIST_TAGS                                     = [\"UL\", \"OL\", \"MENU\"];\n  \n  wysihtml5.quirks.insertLineBreakOnReturn = function(composer) {\n    function unwrap(selectedNode) {\n      var parentElement = dom.getParentElement(selectedNode, { nodeName: [\"P\", \"DIV\"] }, 2);\n      if (!parentElement) {\n        return;\n      }\n\n      var invisibleSpace = document.createTextNode(wysihtml5.INVISIBLE_SPACE);\n      dom.insert(invisibleSpace).before(parentElement);\n      dom.replaceWithChildNodes(parentElement);\n      composer.selection.selectNode(invisibleSpace);\n    }\n\n    function keyDown(event) {\n      var keyCode = event.keyCode;\n      if (event.shiftKey || (keyCode !== wysihtml5.ENTER_KEY && keyCode !== wysihtml5.BACKSPACE_KEY)) {\n        return;\n      }\n\n      var element         = event.target,\n          selectedNode    = composer.selection.getSelectedNode(),\n          blockElement    = dom.getParentElement(selectedNode, { nodeName: USE_NATIVE_LINE_BREAK_WHEN_CARET_INSIDE_TAGS }, 4);\n      if (blockElement) {\n        // Some browsers create <p> elements after leaving a list\n        // check after keydown of backspace and return whether a <p> got inserted and unwrap it\n        if (blockElement.nodeName === \"LI\" && (keyCode === wysihtml5.ENTER_KEY || keyCode === wysihtml5.BACKSPACE_KEY)) {\n          setTimeout(function() {\n            var selectedNode = composer.selection.getSelectedNode(),\n                list,\n                div;\n            if (!selectedNode) {\n              return;\n            }\n\n            list = dom.getParentElement(selectedNode, {\n              nodeName: LIST_TAGS\n            }, 2);\n\n            if (list) {\n              return;\n            }\n\n            unwrap(selectedNode);\n          }, 0);\n        } else if (blockElement.nodeName.match(/H[1-6]/) && keyCode === wysihtml5.ENTER_KEY) {\n          setTimeout(function() {\n            unwrap(composer.selection.getSelectedNode());\n          }, 0);\n        } \n        return;\n      }\n\n      if (keyCode === wysihtml5.ENTER_KEY && !wysihtml5.browser.insertsLineBreaksOnReturn()) {\n        composer.commands.exec(\"insertLineBreak\");\n        event.preventDefault();\n      }\n    }\n    \n    // keypress doesn't fire when you hit backspace\n    dom.observe(composer.element.ownerDocument, \"keydown\", keyDown);\n  };\n})(wysihtml5);/**\n * Force rerendering of a given element\n * Needed to fix display misbehaviors of IE\n *\n * @param {Element} element The element object which needs to be rerendered\n * @example\n *    wysihtml5.quirks.redraw(document.body);\n */\n(function(wysihtml5) {\n  var CLASS_NAME = \"wysihtml5-quirks-redraw\";\n  \n  wysihtml5.quirks.redraw = function(element) {\n    wysihtml5.dom.addClass(element, CLASS_NAME);\n    wysihtml5.dom.removeClass(element, CLASS_NAME);\n    \n    // Following hack is needed for firefox to make sure that image resize handles are properly removed\n    try {\n      var doc = element.ownerDocument;\n      doc.execCommand(\"italic\", false, null);\n      doc.execCommand(\"italic\", false, null);\n    } catch(e) {}\n  };\n})(wysihtml5);/**\n * Selection API\n *\n * @example\n *    var selection = new wysihtml5.Selection(editor);\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  function _getCumulativeOffsetTop(element) {\n    var top = 0;\n    if (element.parentNode) {\n      do {\n        top += element.offsetTop || 0;\n        element = element.offsetParent;\n      } while (element);\n    }\n    return top;\n  }\n  \n  wysihtml5.Selection = Base.extend(\n    /** @scope wysihtml5.Selection.prototype */ {\n    constructor: function(editor) {\n      // Make sure that our external range library is initialized\n      window.rangy.init();\n      \n      this.editor   = editor;\n      this.composer = editor.composer;\n      this.doc      = this.composer.doc;\n    },\n    \n    /**\n     * Get the current selection as a bookmark to be able to later restore it\n     *\n     * @return {Object} An object that represents the current selection\n     */\n    getBookmark: function() {\n      var range = this.getRange();\n      return range && range.cloneRange();\n    },\n\n    /**\n     * Restore a selection retrieved via wysihtml5.Selection.prototype.getBookmark\n     *\n     * @param {Object} bookmark An object that represents the current selection\n     */\n    setBookmark: function(bookmark) {\n      if (!bookmark) {\n        return;\n      }\n\n      this.setSelection(bookmark);\n    },\n\n    /**\n     * Set the caret in front of the given node\n     *\n     * @param {Object} node The element or text node where to position the caret in front of\n     * @example\n     *    selection.setBefore(myElement);\n     */\n    setBefore: function(node) {\n      var range = rangy.createRange(this.doc);\n      range.setStartBefore(node);\n      range.setEndBefore(node);\n      return this.setSelection(range);\n    },\n\n    /**\n     * Set the caret after the given node\n     *\n     * @param {Object} node The element or text node where to position the caret in front of\n     * @example\n     *    selection.setBefore(myElement);\n     */\n    setAfter: function(node) {\n      var range = rangy.createRange(this.doc);\n      range.setStartAfter(node);\n      range.setEndAfter(node);\n      return this.setSelection(range);\n    },\n\n    /**\n     * Ability to select/mark nodes\n     *\n     * @param {Element} node The node/element to select\n     * @example\n     *    selection.selectNode(document.getElementById(\"my-image\"));\n     */\n    selectNode: function(node) {\n      var range           = rangy.createRange(this.doc),\n          isElement       = node.nodeType === wysihtml5.ELEMENT_NODE,\n          canHaveHTML     = \"canHaveHTML\" in node ? node.canHaveHTML : (node.nodeName !== \"IMG\"),\n          content         = isElement ? node.innerHTML : node.data,\n          isEmpty         = (content === \"\" || content === wysihtml5.INVISIBLE_SPACE),\n          displayStyle    = dom.getStyle(\"display\").from(node),\n          isBlockElement  = (displayStyle === \"block\" || displayStyle === \"list-item\");\n\n      if (isEmpty && isElement && canHaveHTML) {\n        // Make sure that caret is visible in node by inserting a zero width no breaking space\n        try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {}\n      }\n\n      if (canHaveHTML) {\n        range.selectNodeContents(node);\n      } else {\n        range.selectNode(node);\n      }\n\n      if (canHaveHTML && isEmpty && isElement) {\n        range.collapse(isBlockElement);\n      } else if (canHaveHTML && isEmpty) {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n\n      this.setSelection(range);\n    },\n\n    /**\n     * Get the node which contains the selection\n     *\n     * @param {Boolean} [controlRange] (only IE) Whether it should return the selected ControlRange element when the selection type is a \"ControlRange\"\n     * @return {Object} The node that contains the caret\n     * @example\n     *    var nodeThatContainsCaret = selection.getSelectedNode();\n     */\n    getSelectedNode: function(controlRange) {\n      var selection,\n          range;\n\n      if (controlRange && this.doc.selection && this.doc.selection.type === \"Control\") {\n        range = this.doc.selection.createRange();\n        if (range && range.length) {\n          return range.item(0);\n        }\n      }\n\n      selection = this.getSelection(this.doc);\n      if (selection.focusNode === selection.anchorNode) {\n        return selection.focusNode;\n      } else {\n        range = this.getRange(this.doc);\n        return range ? range.commonAncestorContainer : this.doc.body;\n      }\n    },\n\n    executeAndRestore: function(method, restoreScrollPosition) {\n      var body                  = this.doc.body,\n          oldScrollTop          = restoreScrollPosition && body.scrollTop,\n          oldScrollLeft         = restoreScrollPosition && body.scrollLeft,\n          className             = \"_wysihtml5-temp-placeholder\",\n          placeholderHTML       = '<span class=\"' + className + '\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n          range                 = this.getRange(this.doc),\n          newRange;\n      \n      // Nothing selected, execute and say goodbye\n      if (!range) {\n        method(body, body);\n        return;\n      }\n      \n      var node = range.createContextualFragment(placeholderHTML);\n      range.insertNode(node);\n      \n      // Make sure that a potential error doesn't cause our placeholder element to be left as a placeholder\n      try {\n        method(range.startContainer, range.endContainer);\n      } catch(e3) {\n        setTimeout(function() { throw e3; }, 0);\n      }\n      \n      caretPlaceholder = this.doc.querySelector(\".\" + className);\n      if (caretPlaceholder) {\n        newRange = rangy.createRange(this.doc);\n        newRange.selectNode(caretPlaceholder);\n        newRange.deleteContents();\n        this.setSelection(newRange);\n      } else {\n        // fallback for when all hell breaks loose\n        body.focus();\n      }\n\n      if (restoreScrollPosition) {\n        body.scrollTop  = oldScrollTop;\n        body.scrollLeft = oldScrollLeft;\n      }\n\n      // Remove it again, just to make sure that the placeholder is definitely out of the dom tree\n      try {\n        caretPlaceholder.parentNode.removeChild(caretPlaceholder);\n      } catch(e4) {}\n    },\n\n    /**\n     * Different approach of preserving the selection (doesn't modify the dom)\n     * Takes all text nodes in the selection and saves the selection position in the first and last one\n     */\n    executeAndRestoreSimple: function(method) {\n      var range = this.getRange(),\n          body  = this.doc.body,\n          newRange,\n          firstNode,\n          lastNode,\n          textNodes,\n          rangeBackup;\n\n      // Nothing selected, execute and say goodbye\n      if (!range) {\n        method(body, body);\n        return;\n      }\n\n      textNodes = range.getNodes([3]);\n      firstNode = textNodes[0] || range.startContainer;\n      lastNode  = textNodes[textNodes.length - 1] || range.endContainer;\n\n      rangeBackup = {\n        collapsed:      range.collapsed,\n        startContainer: firstNode,\n        startOffset:    firstNode === range.startContainer ? range.startOffset : 0,\n        endContainer:   lastNode,\n        endOffset:      lastNode === range.endContainer ? range.endOffset : lastNode.length\n      };\n\n      try {\n        method(range.startContainer, range.endContainer);\n      } catch(e) {\n        setTimeout(function() { throw e; }, 0);\n      }\n\n      newRange = rangy.createRange(this.doc);\n      try { newRange.setStart(rangeBackup.startContainer, rangeBackup.startOffset); } catch(e1) {}\n      try { newRange.setEnd(rangeBackup.endContainer, rangeBackup.endOffset); } catch(e2) {}\n      try { this.setSelection(newRange); } catch(e3) {}\n    },\n\n    /**\n     * Insert html at the caret position and move the cursor after the inserted html\n     *\n     * @param {String} html HTML string to insert\n     * @example\n     *    selection.insertHTML(\"<p>foobar</p>\");\n     */\n    insertHTML: function(html) {\n      var range     = rangy.createRange(this.doc),\n          node      = range.createContextualFragment(html),\n          lastChild = node.lastChild;\n      this.insertNode(node);\n      if (lastChild) {\n        this.setAfter(lastChild);\n      }\n    },\n\n    /**\n     * Insert a node at the caret position and move the cursor behind it\n     *\n     * @param {Object} node HTML string to insert\n     * @example\n     *    selection.insertNode(document.createTextNode(\"foobar\"));\n     */\n    insertNode: function(node) {\n      var range = this.getRange();\n      if (range) {\n        range.insertNode(node);\n      }\n    },\n\n    /**\n     * Wraps current selection with the given node\n     *\n     * @param {Object} node The node to surround the selected elements with\n     */\n    surround: function(node) {\n      var range = this.getRange();\n      if (!range) {\n        return;\n      }\n\n      try {\n        // This only works when the range boundaries are not overlapping other elements\n        range.surroundContents(node);\n        this.selectNode(node);\n      } catch(e) {\n        // fallback\n        node.appendChild(range.extractContents());\n        range.insertNode(node);\n      }\n    },\n\n    /**\n     * Scroll the current caret position into the view\n     * FIXME: This is a bit hacky, there might be a smarter way of doing this\n     *\n     * @example\n     *    selection.scrollIntoView();\n     */\n    scrollIntoView: function() {\n      var doc           = this.doc,\n          hasScrollBars = doc.documentElement.scrollHeight > doc.documentElement.offsetHeight,\n          tempElement   = doc._wysihtml5ScrollIntoViewElement = doc._wysihtml5ScrollIntoViewElement || (function() {\n            var element = doc.createElement(\"span\");\n            // The element needs content in order to be able to calculate it's position properly\n            element.innerHTML = wysihtml5.INVISIBLE_SPACE;\n            return element;\n          })(),\n          offsetTop;\n\n      if (hasScrollBars) {\n        this.insertNode(tempElement);\n        offsetTop = _getCumulativeOffsetTop(tempElement);\n        tempElement.parentNode.removeChild(tempElement);\n        if (offsetTop > doc.body.scrollTop) {\n          doc.body.scrollTop = offsetTop;\n        }\n      }\n    },\n\n    /**\n     * Select line where the caret is in\n     */\n    selectLine: function() {\n      if (wysihtml5.browser.supportsSelectionModify()) {\n        this._selectLine_W3C();\n      } else if (this.doc.selection) {\n        this._selectLine_MSIE();\n      }\n    },\n\n    /**\n     * See https://developer.mozilla.org/en/DOM/Selection/modify\n     */\n    _selectLine_W3C: function() {\n      var win       = this.doc.defaultView,\n          selection = win.getSelection();\n      selection.modify(\"extend\", \"left\", \"lineboundary\");\n      selection.modify(\"extend\", \"right\", \"lineboundary\");\n    },\n\n    _selectLine_MSIE: function() {\n      var range       = this.doc.selection.createRange(),\n          rangeTop    = range.boundingTop,\n          rangeHeight = range.boundingHeight,\n          scrollWidth = this.doc.body.scrollWidth,\n          rangeBottom,\n          rangeEnd,\n          measureNode,\n          i,\n          j;\n\n      if (!range.moveToPoint) {\n        return;\n      }\n\n      if (rangeTop === 0) {\n        // Don't know why, but when the selection ends at the end of a line\n        // range.boundingTop is 0\n        measureNode = this.doc.createElement(\"span\");\n        this.insertNode(measureNode);\n        rangeTop = measureNode.offsetTop;\n        measureNode.parentNode.removeChild(measureNode);\n      }\n\n      rangeTop += 1;\n\n      for (i=-10; i<scrollWidth; i+=2) {\n        try {\n          range.moveToPoint(i, rangeTop);\n          break;\n        } catch(e1) {}\n      }\n\n      // Investigate the following in order to handle multi line selections\n      // rangeBottom = rangeTop + (rangeHeight ? (rangeHeight - 1) : 0);\n      rangeBottom = rangeTop;\n      rangeEnd = this.doc.selection.createRange();\n      for (j=scrollWidth; j>=0; j--) {\n        try {\n          rangeEnd.moveToPoint(j, rangeBottom);\n          break;\n        } catch(e2) {}\n      }\n\n      range.setEndPoint(\"EndToEnd\", rangeEnd);\n      range.select();\n    },\n\n    getText: function() {\n      var selection = this.getSelection();\n      return selection ? selection.toString() : \"\";\n    },\n\n    getNodes: function(nodeType, filter) {\n      var range = this.getRange();\n      if (range) {\n        return range.getNodes([nodeType], filter);\n      } else {\n        return [];\n      }\n    },\n    \n    getRange: function() {\n      var selection = this.getSelection();\n      return selection && selection.rangeCount && selection.getRangeAt(0);\n    },\n\n    getSelection: function() {\n      return rangy.getSelection(this.doc.defaultView || this.doc.parentWindow);\n    },\n\n    setSelection: function(range) {\n      var win       = this.doc.defaultView || this.doc.parentWindow,\n          selection = rangy.getSelection(win);\n      return selection.setSingleRange(range);\n    }\n  });\n  \n})(wysihtml5);\n/**\n * Inspired by the rangy CSS Applier module written by Tim Down and licensed under the MIT license.\n * http://code.google.com/p/rangy/\n *\n * changed in order to be able ...\n *    - to use custom tags\n *    - to detect and replace similar css classes via reg exp\n */\n(function(wysihtml5, rangy) {\n  var defaultTagName = \"span\";\n  \n  var REG_EXP_WHITE_SPACE = /\\s+/g;\n  \n  function hasClass(el, cssClass, regExp) {\n    if (!el.className) {\n      return false;\n    }\n    \n    var matchingClassNames = el.className.match(regExp) || [];\n    return matchingClassNames[matchingClassNames.length - 1] === cssClass;\n  }\n\n  function addClass(el, cssClass, regExp) {\n    if (el.className) {\n      removeClass(el, regExp);\n      el.className += \" \" + cssClass;\n    } else {\n      el.className = cssClass;\n    }\n  }\n\n  function removeClass(el, regExp) {\n    if (el.className) {\n      el.className = el.className.replace(regExp, \"\");\n    }\n  }\n  \n  function hasSameClasses(el1, el2) {\n    return el1.className.replace(REG_EXP_WHITE_SPACE, \" \") == el2.className.replace(REG_EXP_WHITE_SPACE, \" \");\n  }\n\n  function replaceWithOwnChildren(el) {\n    var parent = el.parentNode;\n    while (el.firstChild) {\n      parent.insertBefore(el.firstChild, el);\n    }\n    parent.removeChild(el);\n  }\n\n  function elementsHaveSameNonClassAttributes(el1, el2) {\n    if (el1.attributes.length != el2.attributes.length) {\n      return false;\n    }\n    for (var i = 0, len = el1.attributes.length, attr1, attr2, name; i < len; ++i) {\n      attr1 = el1.attributes[i];\n      name = attr1.name;\n      if (name != \"class\") {\n        attr2 = el2.attributes.getNamedItem(name);\n        if (attr1.specified != attr2.specified) {\n          return false;\n        }\n        if (attr1.specified && attr1.nodeValue !== attr2.nodeValue) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function isSplitPoint(node, offset) {\n    if (rangy.dom.isCharacterDataNode(node)) {\n      if (offset == 0) {\n        return !!node.previousSibling;\n      } else if (offset == node.length) {\n        return !!node.nextSibling;\n      } else {\n        return true;\n      }\n    }\n\n    return offset > 0 && offset < node.childNodes.length;\n  }\n\n  function splitNodeAt(node, descendantNode, descendantOffset) {\n    var newNode;\n    if (rangy.dom.isCharacterDataNode(descendantNode)) {\n      if (descendantOffset == 0) {\n        descendantOffset = rangy.dom.getNodeIndex(descendantNode);\n        descendantNode = descendantNode.parentNode;\n      } else if (descendantOffset == descendantNode.length) {\n        descendantOffset = rangy.dom.getNodeIndex(descendantNode) + 1;\n        descendantNode = descendantNode.parentNode;\n      } else {\n        newNode = rangy.dom.splitDataNode(descendantNode, descendantOffset);\n      }\n    }\n    if (!newNode) {\n      newNode = descendantNode.cloneNode(false);\n      if (newNode.id) {\n        newNode.removeAttribute(\"id\");\n      }\n      var child;\n      while ((child = descendantNode.childNodes[descendantOffset])) {\n        newNode.appendChild(child);\n      }\n      rangy.dom.insertAfter(newNode, descendantNode);\n    }\n    return (descendantNode == node) ? newNode : splitNodeAt(node, newNode.parentNode, rangy.dom.getNodeIndex(newNode));\n  }\n  \n  function Merge(firstNode) {\n    this.isElementMerge = (firstNode.nodeType == wysihtml5.ELEMENT_NODE);\n    this.firstTextNode = this.isElementMerge ? firstNode.lastChild : firstNode;\n    this.textNodes = [this.firstTextNode];\n  }\n\n  Merge.prototype = {\n    doMerge: function() {\n      var textBits = [], textNode, parent, text;\n      for (var i = 0, len = this.textNodes.length; i < len; ++i) {\n        textNode = this.textNodes[i];\n        parent = textNode.parentNode;\n        textBits[i] = textNode.data;\n        if (i) {\n          parent.removeChild(textNode);\n          if (!parent.hasChildNodes()) {\n            parent.parentNode.removeChild(parent);\n          }\n        }\n      }\n      this.firstTextNode.data = text = textBits.join(\"\");\n      return text;\n    },\n\n    getLength: function() {\n      var i = this.textNodes.length, len = 0;\n      while (i--) {\n        len += this.textNodes[i].length;\n      }\n      return len;\n    },\n\n    toString: function() {\n      var textBits = [];\n      for (var i = 0, len = this.textNodes.length; i < len; ++i) {\n        textBits[i] = \"'\" + this.textNodes[i].data + \"'\";\n      }\n      return \"[Merge(\" + textBits.join(\",\") + \")]\";\n    }\n  };\n\n  function HTMLApplier(tagNames, cssClass, similarClassRegExp, normalize) {\n    this.tagNames = tagNames || [defaultTagName];\n    this.cssClass = cssClass || \"\";\n    this.similarClassRegExp = similarClassRegExp;\n    this.normalize = normalize;\n    this.applyToAnyTagName = false;\n  }\n\n  HTMLApplier.prototype = {\n    getAncestorWithClass: function(node) {\n      var cssClassMatch;\n      while (node) {\n        cssClassMatch = this.cssClass ? hasClass(node, this.cssClass, this.similarClassRegExp) : true;\n        if (node.nodeType == wysihtml5.ELEMENT_NODE && rangy.dom.arrayContains(this.tagNames, node.tagName.toLowerCase()) && cssClassMatch) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return false;\n    },\n\n    // Normalizes nodes after applying a CSS class to a Range.\n    postApply: function(textNodes, range) {\n      var firstNode = textNodes[0], lastNode = textNodes[textNodes.length - 1];\n\n      var merges = [], currentMerge;\n\n      var rangeStartNode = firstNode, rangeEndNode = lastNode;\n      var rangeStartOffset = 0, rangeEndOffset = lastNode.length;\n\n      var textNode, precedingTextNode;\n\n      for (var i = 0, len = textNodes.length; i < len; ++i) {\n        textNode = textNodes[i];\n        precedingTextNode = this.getAdjacentMergeableTextNode(textNode.parentNode, false);\n        if (precedingTextNode) {\n          if (!currentMerge) {\n            currentMerge = new Merge(precedingTextNode);\n            merges.push(currentMerge);\n          }\n          currentMerge.textNodes.push(textNode);\n          if (textNode === firstNode) {\n            rangeStartNode = currentMerge.firstTextNode;\n            rangeStartOffset = rangeStartNode.length;\n          }\n          if (textNode === lastNode) {\n            rangeEndNode = currentMerge.firstTextNode;\n            rangeEndOffset = currentMerge.getLength();\n          }\n        } else {\n          currentMerge = null;\n        }\n      }\n\n      // Test whether the first node after the range needs merging\n      var nextTextNode = this.getAdjacentMergeableTextNode(lastNode.parentNode, true);\n      if (nextTextNode) {\n        if (!currentMerge) {\n          currentMerge = new Merge(lastNode);\n          merges.push(currentMerge);\n        }\n        currentMerge.textNodes.push(nextTextNode);\n      }\n\n      // Do the merges\n      if (merges.length) {\n        for (i = 0, len = merges.length; i < len; ++i) {\n          merges[i].doMerge();\n        }\n        // Set the range boundaries\n        range.setStart(rangeStartNode, rangeStartOffset);\n        range.setEnd(rangeEndNode, rangeEndOffset);\n      }\n    },\n    \n    getAdjacentMergeableTextNode: function(node, forward) {\n        var isTextNode = (node.nodeType == wysihtml5.TEXT_NODE);\n        var el = isTextNode ? node.parentNode : node;\n        var adjacentNode;\n        var propName = forward ? \"nextSibling\" : \"previousSibling\";\n        if (isTextNode) {\n          // Can merge if the node's previous/next sibling is a text node\n          adjacentNode = node[propName];\n          if (adjacentNode && adjacentNode.nodeType == wysihtml5.TEXT_NODE) {\n            return adjacentNode;\n          }\n        } else {\n          // Compare element with its sibling\n          adjacentNode = el[propName];\n          if (adjacentNode && this.areElementsMergeable(node, adjacentNode)) {\n            return adjacentNode[forward ? \"firstChild\" : \"lastChild\"];\n          }\n        }\n        return null;\n    },\n    \n    areElementsMergeable: function(el1, el2) {\n      return rangy.dom.arrayContains(this.tagNames, (el1.tagName || \"\").toLowerCase())\n        && rangy.dom.arrayContains(this.tagNames, (el2.tagName || \"\").toLowerCase())\n        && hasSameClasses(el1, el2)\n        && elementsHaveSameNonClassAttributes(el1, el2);\n    },\n\n    createContainer: function(doc) {\n      var el = doc.createElement(this.tagNames[0]);\n      if (this.cssClass) {\n        el.className = this.cssClass;\n      }\n      return el;\n    },\n\n    applyToTextNode: function(textNode) {\n      var parent = textNode.parentNode;\n      if (parent.childNodes.length == 1 && rangy.dom.arrayContains(this.tagNames, parent.tagName.toLowerCase())) {\n        if (this.cssClass) {\n          addClass(parent, this.cssClass, this.similarClassRegExp);\n        }\n      } else {\n        var el = this.createContainer(rangy.dom.getDocument(textNode));\n        textNode.parentNode.insertBefore(el, textNode);\n        el.appendChild(textNode);\n      }\n    },\n\n    isRemovable: function(el) {\n      return rangy.dom.arrayContains(this.tagNames, el.tagName.toLowerCase()) && wysihtml5.lang.string(el.className).trim() == this.cssClass;\n    },\n\n    undoToTextNode: function(textNode, range, ancestorWithClass) {\n      if (!range.containsNode(ancestorWithClass)) {\n        // Split out the portion of the ancestor from which we can remove the CSS class\n        var ancestorRange = range.cloneRange();\n        ancestorRange.selectNode(ancestorWithClass);\n\n        if (ancestorRange.isPointInRange(range.endContainer, range.endOffset) && isSplitPoint(range.endContainer, range.endOffset)) {\n          splitNodeAt(ancestorWithClass, range.endContainer, range.endOffset);\n          range.setEndAfter(ancestorWithClass);\n        }\n        if (ancestorRange.isPointInRange(range.startContainer, range.startOffset) && isSplitPoint(range.startContainer, range.startOffset)) {\n          ancestorWithClass = splitNodeAt(ancestorWithClass, range.startContainer, range.startOffset);\n        }\n      }\n      \n      if (this.similarClassRegExp) {\n        removeClass(ancestorWithClass, this.similarClassRegExp);\n      }\n      if (this.isRemovable(ancestorWithClass)) {\n        replaceWithOwnChildren(ancestorWithClass);\n      }\n    },\n\n    applyToRange: function(range) {\n        var textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n        if (!textNodes.length) {\n          try {\n            var node = this.createContainer(range.endContainer.ownerDocument);\n            range.surroundContents(node);\n            this.selectNode(range, node);\n            return;\n          } catch(e) {}\n        }\n        \n        range.splitBoundaries();\n        textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n        \n        if (textNodes.length) {\n          var textNode;\n\n          for (var i = 0, len = textNodes.length; i < len; ++i) {\n            textNode = textNodes[i];\n            if (!this.getAncestorWithClass(textNode)) {\n              this.applyToTextNode(textNode);\n            }\n          }\n          \n          range.setStart(textNodes[0], 0);\n          textNode = textNodes[textNodes.length - 1];\n          range.setEnd(textNode, textNode.length);\n          \n          if (this.normalize) {\n            this.postApply(textNodes, range);\n          }\n        }\n    },\n\n    undoToRange: function(range) {\n      var textNodes = range.getNodes([wysihtml5.TEXT_NODE]), textNode, ancestorWithClass;\n      if (textNodes.length) {\n        range.splitBoundaries();\n        textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n      } else {\n        var doc = range.endContainer.ownerDocument,\n            node = doc.createTextNode(wysihtml5.INVISIBLE_SPACE);\n        range.insertNode(node);\n        range.selectNode(node);\n        textNodes = [node];\n      }\n      \n      for (var i = 0, len = textNodes.length; i < len; ++i) {\n        textNode = textNodes[i];\n        ancestorWithClass = this.getAncestorWithClass(textNode);\n        if (ancestorWithClass) {\n          this.undoToTextNode(textNode, range, ancestorWithClass);\n        }\n      }\n      \n      if (len == 1) {\n        this.selectNode(range, textNodes[0]);\n      } else {\n        range.setStart(textNodes[0], 0);\n        textNode = textNodes[textNodes.length - 1];\n        range.setEnd(textNode, textNode.length);\n\n        if (this.normalize) {\n          this.postApply(textNodes, range);\n        }\n      }\n    },\n    \n    selectNode: function(range, node) {\n      var isElement       = node.nodeType === wysihtml5.ELEMENT_NODE,\n          canHaveHTML     = \"canHaveHTML\" in node ? node.canHaveHTML : true,\n          content         = isElement ? node.innerHTML : node.data,\n          isEmpty         = (content === \"\" || content === wysihtml5.INVISIBLE_SPACE);\n\n      if (isEmpty && isElement && canHaveHTML) {\n        // Make sure that caret is visible in node by inserting a zero width no breaking space\n        try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {}\n      }\n      range.selectNodeContents(node);\n      if (isEmpty && isElement) {\n        range.collapse(false);\n      } else if (isEmpty) {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n    },\n    \n    getTextSelectedByRange: function(textNode, range) {\n      var textRange = range.cloneRange();\n      textRange.selectNodeContents(textNode);\n\n      var intersectionRange = textRange.intersection(range);\n      var text = intersectionRange ? intersectionRange.toString() : \"\";\n      textRange.detach();\n\n      return text;\n    },\n\n    isAppliedToRange: function(range) {\n      var ancestors = [],\n          ancestor,\n          textNodes = range.getNodes([wysihtml5.TEXT_NODE]);\n      if (!textNodes.length) {\n        ancestor = this.getAncestorWithClass(range.startContainer);\n        return ancestor ? [ancestor] : false;\n      }\n      \n      for (var i = 0, len = textNodes.length, selectedText; i < len; ++i) {\n        selectedText = this.getTextSelectedByRange(textNodes[i], range);\n        ancestor = this.getAncestorWithClass(textNodes[i]);\n        if (selectedText != \"\" && !ancestor) {\n          return false;\n        } else {\n          ancestors.push(ancestor);\n        }\n      }\n      return ancestors;\n    },\n\n    toggleRange: function(range) {\n      if (this.isAppliedToRange(range)) {\n        this.undoToRange(range);\n      } else {\n        this.applyToRange(range);\n      }\n    }\n  };\n\n  wysihtml5.selection.HTMLApplier = HTMLApplier;\n  \n})(wysihtml5, rangy);/**\n * Rich Text Query/Formatting Commands\n * \n * @example\n *    var commands = new wysihtml5.Commands(editor);\n */\nwysihtml5.Commands = Base.extend(\n  /** @scope wysihtml5.Commands.prototype */ {\n  constructor: function(editor) {\n    this.editor   = editor;\n    this.composer = editor.composer;\n    this.doc      = this.composer.doc;\n  },\n  \n  /**\n   * Check whether the browser supports the given command\n   *\n   * @param {String} command The command string which to check (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @example\n   *    commands.supports(\"createLink\");\n   */\n  support: function(command) {\n    return wysihtml5.browser.supportsCommand(this.doc, command);\n  },\n  \n  /**\n   * Check whether the browser supports the given command\n   *\n   * @param {String} command The command string which to execute (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @param {String} [value] The command value parameter, needed for some commands (\"createLink\", \"insertImage\", ...), optional for commands that don't require one (\"bold\", \"underline\", ...)\n   * @example\n   *    commands.exec(\"insertImage\", \"../../../../a1.twimg.com/profile_images/113868655/schrei_twitter_reasonably_small.jpg\");\n   */\n  exec: function(command, value) {\n    var obj     = wysihtml5.commands[command],\n        args    = wysihtml5.lang.array(arguments).get(),\n        method  = obj && obj.exec,\n        result  = null;\n    \n    this.editor.fire(\"beforecommand:composer\");\n    \n    if (method) {\n      args.unshift(this.composer);\n      result = method.apply(obj, args);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        result = this.doc.execCommand(command, false, value);\n      } catch(e) {}\n    }\n    \n    this.editor.fire(\"aftercommand:composer\");\n    return result;\n  },\n  \n  /**\n   * Check whether the current command is active\n   * If the caret is within a bold text, then calling this with command \"bold\" should return true\n   *\n   * @param {String} command The command string which to check (eg. \"bold\", \"italic\", \"insertUnorderedList\")\n   * @param {String} [commandValue] The command value parameter (eg. for \"insertImage\" the image src)\n   * @return {Boolean} Whether the command is active\n   * @example\n   *    var isCurrentSelectionBold = commands.state(\"bold\");\n   */\n  state: function(command, commandValue) {\n    var obj     = wysihtml5.commands[command],\n        args    = wysihtml5.lang.array(arguments).get(),\n        method  = obj && obj.state;\n    if (method) {\n      args.unshift(this.composer);\n      return method.apply(obj, args);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        return this.doc.queryCommandState(command);\n      } catch(e) {\n        return false;\n      }\n    }\n  },\n  \n  /**\n   * Get the current command's value\n   *\n   * @param {String} command The command string which to check (eg. \"formatBlock\")\n   * @return {String} The command value\n   * @example\n   *    var currentBlockElement = commands.value(\"formatBlock\");\n   */\n  value: function(command) {\n    var obj     = wysihtml5.commands[command],\n        method  = obj && obj.value;\n    if (method) {\n      return method.call(obj, this.composer, command);\n    } else {\n      try {\n        // try/catch for buggy firefox\n        return this.doc.queryCommandValue(command);\n      } catch(e) {\n        return null;\n      }\n    }\n  }\n});\n(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.bold = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"b\");\n    },\n\n    state: function(composer, command, color) {\n      // element.ownerDocument.queryCommandState(\"bold\") results:\n      // firefox: only <b>\n      // chrome:  <b>, <strong>, <h1>, <h2>, ...\n      // ie:      <b>, <strong>\n      // opera:   <b>, <strong>\n      return wysihtml5.commands.formatInline.state(composer, command, \"b\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);\n\n(function(wysihtml5) {\n  var undef,\n      NODE_NAME = \"A\",\n      dom       = wysihtml5.dom;\n  \n  function _removeFormat(composer, anchors) {\n    var length  = anchors.length,\n        i       = 0,\n        anchor,\n        codeElement,\n        textContent;\n    for (; i<length; i++) {\n      anchor      = anchors[i];\n      codeElement = dom.getParentElement(anchor, { nodeName: \"code\" });\n      textContent = dom.getTextContent(anchor);\n\n      // if <a> contains url-like text content, rename it to <code> to prevent re-autolinking\n      // else replace <a> with its childNodes\n      if (textContent.match(dom.autoLink.URL_REG_EXP) && !codeElement) {\n        // <code> element is used to prevent later auto-linking of the content\n        codeElement = dom.renameElement(anchor, \"code\");\n      } else {\n        dom.replaceWithChildNodes(anchor);\n      }\n    }\n  }\n\n  function _format(composer, attributes) {\n    var doc             = composer.doc,\n        tempClass       = \"_wysihtml5-temp-\" + (+new Date()),\n        tempClassRegExp = /non-matching-class/g,\n        i               = 0,\n        length,\n        anchors,\n        anchor,\n        hasElementChild,\n        isEmpty,\n        elementToSetCaretAfter,\n        textContent,\n        whiteSpace,\n        j;\n    wysihtml5.commands.formatInline.exec(composer, undef, NODE_NAME, tempClass, tempClassRegExp);\n    anchors = doc.querySelectorAll(NODE_NAME + \".\" + tempClass);\n    length  = anchors.length;\n    for (; i<length; i++) {\n      anchor = anchors[i];\n      anchor.removeAttribute(\"class\");\n      for (j in attributes) {\n        anchor.setAttribute(j, attributes[j]);\n      }\n    }\n\n    elementToSetCaretAfter = anchor;\n    if (length === 1) {\n      textContent = dom.getTextContent(anchor);\n      hasElementChild = !!anchor.querySelector(\"*\");\n      isEmpty = textContent === \"\" || textContent === wysihtml5.INVISIBLE_SPACE;\n      if (!hasElementChild && isEmpty) {\n        dom.setTextContent(anchor, attributes.text || anchor.href);\n        whiteSpace = doc.createTextNode(\" \");\n        composer.selection.setAfter(anchor);\n        composer.selection.insertNode(whiteSpace);\n        elementToSetCaretAfter = whiteSpace;\n      }\n    }\n    composer.selection.setAfter(elementToSetCaretAfter);\n  }\n  \n  wysihtml5.commands.createLink = {\n    /**\n     * TODO: Use HTMLApplier or formatInline here\n     *\n     * Turns selection into a link\n     * If selection is already a link, it removes the link and wraps it with a <code> element\n     * The <code> element is needed to avoid auto linking\n     * \n     * @example\n     *    // either ...\n     *    wysihtml5.commands.createLink.exec(composer, \"createLink\", \"../../../../www.google.de\");\n     *    // ... or ...\n     *    wysihtml5.commands.createLink.exec(composer, \"createLink\", { href: \"../../../../www.google.de\", target: \"_blank\" });\n     */\n    exec: function(composer, command, value) {\n      var anchors = this.state(composer, command);\n      if (anchors) {\n        // Selection contains links\n        composer.selection.executeAndRestore(function() {\n          _removeFormat(composer, anchors);\n        });\n      } else {\n        // Create links\n        value = typeof(value) === \"object\" ? value : { href: value };\n        _format(composer, value);\n      }\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"A\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * document.execCommand(\"fontSize\") will create either inline styles (firefox, chrome) or use font tags\n * which we don't want\n * Instead we set a css class\n */\n(function(wysihtml5) {\n  var undef,\n      REG_EXP = /wysiwyg-font-size-[a-z\\-]+/g;\n  \n  wysihtml5.commands.fontSize = {\n    exec: function(composer, command, size) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"span\", \"wysiwyg-font-size-\" + size, REG_EXP);\n    },\n\n    state: function(composer, command, size) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"span\", \"wysiwyg-font-size-\" + size, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);\n/**\n * document.execCommand(\"foreColor\") will create either inline styles (firefox, chrome) or use font tags\n * which we don't want\n * Instead we set a css class\n */\n(function(wysihtml5) {\n  var undef,\n      REG_EXP = /wysiwyg-color-[a-z]+/g;\n  \n  wysihtml5.commands.foreColor = {\n    exec: function(composer, command, color) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"span\", \"wysiwyg-color-\" + color, REG_EXP);\n    },\n\n    state: function(composer, command, color) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"span\", \"wysiwyg-color-\" + color, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      dom                     = wysihtml5.dom,\n      DEFAULT_NODE_NAME       = \"DIV\",\n      // Following elements are grouped\n      // when the caret is within a H1 and the H4 is invoked, the H1 should turn into H4\n      // instead of creating a H4 within a H1 which would result in semantically invalid html\n      BLOCK_ELEMENTS_GROUP    = [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"P\", \"BLOCKQUOTE\", DEFAULT_NODE_NAME];\n  \n  /**\n   * Remove similiar classes (based on classRegExp)\n   * and add the desired class name\n   */\n  function _addClass(element, className, classRegExp) {\n    if (element.className) {\n      _removeClass(element, classRegExp);\n      element.className += \" \" + className;\n    } else {\n      element.className = className;\n    }\n  }\n\n  function _removeClass(element, classRegExp) {\n    element.className = element.className.replace(classRegExp, \"\");\n  }\n\n  /**\n   * Check whether given node is a text node and whether it's empty\n   */\n  function _isBlankTextNode(node) {\n    return node.nodeType === wysihtml5.TEXT_NODE && !wysihtml5.lang.string(node.data).trim();\n  }\n\n  /**\n   * Returns previous sibling node that is not a blank text node\n   */\n  function _getPreviousSiblingThatIsNotBlank(node) {\n    var previousSibling = node.previousSibling;\n    while (previousSibling && _isBlankTextNode(previousSibling)) {\n      previousSibling = previousSibling.previousSibling;\n    }\n    return previousSibling;\n  }\n\n  /**\n   * Returns next sibling node that is not a blank text node\n   */\n  function _getNextSiblingThatIsNotBlank(node) {\n    var nextSibling = node.nextSibling;\n    while (nextSibling && _isBlankTextNode(nextSibling)) {\n      nextSibling = nextSibling.nextSibling;\n    }\n    return nextSibling;\n  }\n\n  /**\n   * Adds line breaks before and after the given node if the previous and next siblings\n   * aren't already causing a visual line break (block element or <br>)\n   */\n  function _addLineBreakBeforeAndAfter(node) {\n    var doc             = node.ownerDocument,\n        nextSibling     = _getNextSiblingThatIsNotBlank(node),\n        previousSibling = _getPreviousSiblingThatIsNotBlank(node);\n\n    if (nextSibling && !_isLineBreakOrBlockElement(nextSibling)) {\n      node.parentNode.insertBefore(doc.createElement(\"br\"), nextSibling);\n    }\n    if (previousSibling && !_isLineBreakOrBlockElement(previousSibling)) {\n      node.parentNode.insertBefore(doc.createElement(\"br\"), node);\n    }\n  }\n\n  /**\n   * Removes line breaks before and after the given node\n   */\n  function _removeLineBreakBeforeAndAfter(node) {\n    var nextSibling     = _getNextSiblingThatIsNotBlank(node),\n        previousSibling = _getPreviousSiblingThatIsNotBlank(node);\n\n    if (nextSibling && _isLineBreak(nextSibling)) {\n      nextSibling.parentNode.removeChild(nextSibling);\n    }\n    if (previousSibling && _isLineBreak(previousSibling)) {\n      previousSibling.parentNode.removeChild(previousSibling);\n    }\n  }\n\n  function _removeLastChildIfLineBreak(node) {\n    var lastChild = node.lastChild;\n    if (lastChild && _isLineBreak(lastChild)) {\n      lastChild.parentNode.removeChild(lastChild);\n    }\n  }\n\n  function _isLineBreak(node) {\n    return node.nodeName === \"BR\";\n  }\n\n  /**\n   * Checks whether the elment causes a visual line break\n   * (<br> or block elements)\n   */\n  function _isLineBreakOrBlockElement(element) {\n    if (_isLineBreak(element)) {\n      return true;\n    }\n\n    if (dom.getStyle(\"display\").from(element) === \"block\") {\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Execute native query command\n   * and if necessary modify the inserted node's className\n   */\n  function _execCommand(doc, command, nodeName, className) {\n    if (className) {\n      var eventListener = dom.observe(doc, \"DOMNodeInserted\", function(event) {\n        var target = event.target,\n            displayStyle;\n        if (target.nodeType !== wysihtml5.ELEMENT_NODE) {\n          return;\n        }\n        displayStyle = dom.getStyle(\"display\").from(target);\n        if (displayStyle.substr(0, 6) !== \"inline\") {\n          // Make sure that only block elements receive the given class\n          target.className += \" \" + className;\n        }\n      });\n    }\n    doc.execCommand(command, false, nodeName);\n    if (eventListener) {\n      eventListener.stop();\n    }\n  }\n\n  function _selectLineAndWrap(composer, element) {\n    composer.selection.selectLine();\n    composer.selection.surround(element);\n    _removeLineBreakBeforeAndAfter(element);\n    _removeLastChildIfLineBreak(element);\n    composer.selection.selectNode(element);\n  }\n\n  function _hasClasses(element) {\n    return !!wysihtml5.lang.string(element.className).trim();\n  }\n  \n  wysihtml5.commands.formatBlock = {\n    exec: function(composer, command, nodeName, className, classRegExp) {\n      var doc          = composer.doc,\n          blockElement = this.state(composer, command, nodeName, className, classRegExp),\n          selectedNode;\n\n      nodeName = typeof(nodeName) === \"string\" ? nodeName.toUpperCase() : nodeName;\n\n      if (blockElement) {\n        composer.selection.executeAndRestoreSimple(function() {\n          if (classRegExp) {\n            _removeClass(blockElement, classRegExp);\n          }\n          var hasClasses = _hasClasses(blockElement);\n          if (!hasClasses && blockElement.nodeName === (nodeName || DEFAULT_NODE_NAME)) {\n            // Insert a line break afterwards and beforewards when there are siblings\n            // that are not of type line break or block element\n            _addLineBreakBeforeAndAfter(blockElement);\n            dom.replaceWithChildNodes(blockElement);\n          } else if (hasClasses) {\n            // Make sure that styling is kept by renaming the element to <div> and copying over the class name\n            dom.renameElement(blockElement, DEFAULT_NODE_NAME);\n          }\n        });\n        return;\n      }\n\n      // Find similiar block element and rename it (<h2 class=\"foo\"></h2>  =>  <h1 class=\"foo\"></h1>)\n      if (nodeName === null || wysihtml5.lang.array(BLOCK_ELEMENTS_GROUP).contains(nodeName)) {\n        selectedNode = composer.selection.getSelectedNode();\n        blockElement = dom.getParentElement(selectedNode, {\n          nodeName: BLOCK_ELEMENTS_GROUP\n        });\n\n        if (blockElement) {\n          composer.selection.executeAndRestoreSimple(function() {\n            // Rename current block element to new block element and add class\n            if (nodeName) {\n              blockElement = dom.renameElement(blockElement, nodeName);\n            }\n            if (className) {\n              _addClass(blockElement, className, classRegExp);\n            }\n          });\n          return;\n        }\n      }\n\n      if (composer.commands.support(command)) {\n        _execCommand(doc, command, nodeName || DEFAULT_NODE_NAME, className);\n        return;\n      }\n\n      blockElement = doc.createElement(nodeName || DEFAULT_NODE_NAME);\n      if (className) {\n        blockElement.className = className;\n      }\n      _selectLineAndWrap(composer, blockElement);\n    },\n\n    state: function(composer, command, nodeName, className, classRegExp) {\n      nodeName = typeof(nodeName) === \"string\" ? nodeName.toUpperCase() : nodeName;\n      var selectedNode = composer.selection.getSelectedNode();\n      return dom.getParentElement(selectedNode, {\n        nodeName:     nodeName,\n        className:    className,\n        classRegExp:  classRegExp\n      });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * formatInline scenarios for tag \"B\" (| = caret, |foo| = selected text)\n *\n *   #1 caret in unformatted text:\n *      abcdefg|\n *   output:\n *      abcdefg<b>|</b>\n *   \n *   #2 unformatted text selected:\n *      abc|deg|h\n *   output:\n *      abc<b>|deg|</b>h\n *   \n *   #3 unformatted text selected across boundaries:\n *      ab|c <span>defg|h</span>\n *   output:\n *      ab<b>|c </b><span><b>defg</b>|h</span>\n *\n *   #4 formatted text entirely selected\n *      <b>|abc|</b>\n *   output:\n *      |abc|\n *\n *   #5 formatted text partially selected\n *      <b>ab|c|</b>\n *   output:\n *      <b>ab</b>|c|\n *\n *   #6 formatted text selected across boundaries\n *      <span>ab|c</span> <b>de|fgh</b>\n *   output:\n *      <span>ab|c</span> de|<b>fgh</b>\n */\n(function(wysihtml5) {\n  var undef,\n      // Treat <b> as <strong> and vice versa\n      ALIAS_MAPPING = {\n        \"strong\": \"b\",\n        \"em\":     \"i\",\n        \"b\":      \"strong\",\n        \"i\":      \"em\"\n      },\n      htmlApplier = {};\n  \n  function _getTagNames(tagName) {\n    var alias = ALIAS_MAPPING[tagName];\n    return alias ? [tagName.toLowerCase(), alias.toLowerCase()] : [tagName.toLowerCase()];\n  }\n  \n  function _getApplier(tagName, className, classRegExp) {\n    var identifier = tagName + \":\" + className;\n    if (!htmlApplier[identifier]) {\n      htmlApplier[identifier] = new wysihtml5.selection.HTMLApplier(_getTagNames(tagName), className, classRegExp, true);\n    }\n    return htmlApplier[identifier];\n  }\n  \n  wysihtml5.commands.formatInline = {\n    exec: function(composer, command, tagName, className, classRegExp) {\n      var range = composer.selection.getRange();\n      if (!range) {\n        return false;\n      }\n      _getApplier(tagName, className, classRegExp).toggleRange(range);\n      composer.selection.setSelection(range);\n    },\n\n    state: function(composer, command, tagName, className, classRegExp) {\n      var doc           = composer.doc,\n          aliasTagName  = ALIAS_MAPPING[tagName] || tagName,\n          range;\n\n      // Check whether the document contains a node with the desired tagName\n      if (!wysihtml5.dom.hasElementWithTagName(doc, tagName) &&\n          !wysihtml5.dom.hasElementWithTagName(doc, aliasTagName)) {\n        return false;\n      }\n\n       // Check whether the document contains a node with the desired className\n      if (className && !wysihtml5.dom.hasElementWithClassName(doc, className)) {\n         return false;\n      }\n\n      range = composer.selection.getRange();\n      if (!range) {\n        return false;\n      }\n\n      return _getApplier(tagName, className, classRegExp).isAppliedToRange(range);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertHTML = {\n    exec: function(composer, command, html) {\n      if (composer.commands.support(command)) {\n        composer.doc.execCommand(command, false, html);\n      } else {\n        composer.selection.insertHTML(html);\n      }\n    },\n\n    state: function() {\n      return false;\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var NODE_NAME = \"IMG\";\n  \n  wysihtml5.commands.insertImage = {\n    /**\n     * Inserts an <img>\n     * If selection is already an image link, it removes it\n     * \n     * @example\n     *    // either ...\n     *    wysihtml5.commands.insertImage.exec(composer, \"insertImage\", \"../../../../www.google.de/logo.jpg\");\n     *    // ... or ...\n     *    wysihtml5.commands.insertImage.exec(composer, \"insertImage\", { src: \"../../../../www.google.de/logo.jpg\", title: \"foo\" });\n     */\n    exec: function(composer, command, value) {\n      value = typeof(value) === \"object\" ? value : { src: value };\n\n      var doc     = composer.doc,\n          image   = this.state(composer),\n          textNode,\n          i,\n          parent;\n\n      if (image) {\n        // Image already selected, set the caret before it and delete it\n        composer.selection.setBefore(image);\n        parent = image.parentNode;\n        parent.removeChild(image);\n\n        // and it's parent <a> too if it hasn't got any other relevant child nodes\n        wysihtml5.dom.removeEmptyTextNodes(parent);\n        if (parent.nodeName === \"A\" && !parent.firstChild) {\n          composer.selection.setAfter(parent);\n          parent.parentNode.removeChild(parent);\n        }\n\n        // firefox and ie sometimes don't remove the image handles, even though the image got removed\n        wysihtml5.quirks.redraw(composer.element);\n        return;\n      }\n\n      image = doc.createElement(NODE_NAME);\n\n      for (i in value) {\n        image[i] = value[i];\n      }\n\n      composer.selection.insertNode(image);\n      if (wysihtml5.browser.hasProblemsSettingCaretAfterImg()) {\n        textNode = doc.createTextNode(wysihtml5.INVISIBLE_SPACE);\n        composer.selection.insertNode(textNode);\n        composer.selection.setAfter(textNode);\n      } else {\n        composer.selection.setAfter(image);\n      }\n    },\n\n    state: function(composer) {\n      var doc = composer.doc,\n          selectedNode,\n          text,\n          imagesInSelection;\n\n      if (!wysihtml5.dom.hasElementWithTagName(doc, NODE_NAME)) {\n        return false;\n      }\n\n      selectedNode = composer.selection.getSelectedNode();\n      if (!selectedNode) {\n        return false;\n      }\n\n      if (selectedNode.nodeName === NODE_NAME) {\n        // This works perfectly in IE\n        return selectedNode;\n      }\n\n      if (selectedNode.nodeType !== wysihtml5.ELEMENT_NODE) {\n        return false;\n      }\n\n      text = composer.selection.getText();\n      text = wysihtml5.lang.string(text).trim();\n      if (text) {\n        return false;\n      }\n\n      imagesInSelection = composer.selection.getNodes(wysihtml5.ELEMENT_NODE, function(node) {\n        return node.nodeName === \"IMG\";\n      });\n\n      if (imagesInSelection.length !== 1) {\n        return false;\n      }\n\n      return imagesInSelection[0];\n    },\n\n    value: function(composer) {\n      var image = this.state(composer);\n      return image && image.src;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      LINE_BREAK = \"<br>\" + (wysihtml5.browser.needsSpaceAfterLineBreak() ? \" \" : \"\");\n  \n  wysihtml5.commands.insertLineBreak = {\n    exec: function(composer, command) {\n      if (composer.commands.support(command)) {\n        composer.doc.execCommand(command, false, null);\n        if (!wysihtml5.browser.autoScrollsToCaret()) {\n          composer.selection.scrollIntoView();\n        }\n      } else {\n        composer.commands.exec(\"insertHTML\", LINE_BREAK);\n      }\n    },\n\n    state: function() {\n      return false;\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertOrderedList = {\n    exec: function(composer, command) {\n      var doc           = composer.doc,\n          selectedNode  = composer.selection.getSelectedNode(),\n          list          = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" }),\n          otherList     = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" }),\n          tempClassName =  \"_wysihtml5-temp-\" + new Date().getTime(),\n          isEmpty,\n          tempElement;\n      \n      if (composer.commands.support(command)) {\n        doc.execCommand(command, false, null);\n        return;\n      }\n      \n      if (list) {\n        // Unwrap list\n        // <ol><li>foo</li><li>bar</li></ol>\n        // becomes:\n        // foo<br>bar<br>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.resolveList(list);\n        });\n      } else if (otherList) {\n        // Turn an unordered list into an ordered list\n        // <ul><li>foo</li><li>bar</li></ul>\n        // becomes:\n        // <ol><li>foo</li><li>bar</li></ol>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.renameElement(otherList, \"ol\");\n        });\n      } else {\n        // Create list\n        composer.commands.exec(\"formatBlock\", \"div\", tempClassName);\n        tempElement = doc.querySelector(\".\" + tempClassName);\n        isEmpty = tempElement.innerHTML === \"\" || tempElement.innerHTML === wysihtml5.INVISIBLE_SPACE;\n        composer.selection.executeAndRestoreSimple(function() {\n          list = wysihtml5.dom.convertToList(tempElement, \"ol\");\n        });\n        if (isEmpty) {\n          composer.selection.selectNode(list.querySelector(\"li\"));\n        }\n      }\n    },\n    \n    state: function(composer) {\n      var selectedNode = composer.selection.getSelectedNode();\n      return wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.insertUnorderedList = {\n    exec: function(composer, command) {\n      var doc           = composer.doc,\n          selectedNode  = composer.selection.getSelectedNode(),\n          list          = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" }),\n          otherList     = wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"OL\" }),\n          tempClassName =  \"_wysihtml5-temp-\" + new Date().getTime(),\n          isEmpty,\n          tempElement;\n      \n      if (composer.commands.support(command)) {\n        doc.execCommand(command, false, null);\n        return;\n      }\n      \n      if (list) {\n        // Unwrap list\n        // <ul><li>foo</li><li>bar</li></ul>\n        // becomes:\n        // foo<br>bar<br>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.resolveList(list);\n        });\n      } else if (otherList) {\n        // Turn an ordered list into an unordered list\n        // <ol><li>foo</li><li>bar</li></ol>\n        // becomes:\n        // <ul><li>foo</li><li>bar</li></ul>\n        composer.selection.executeAndRestoreSimple(function() {\n          wysihtml5.dom.renameElement(otherList, \"ul\");\n        });\n      } else {\n        // Create list\n        composer.commands.exec(\"formatBlock\", \"div\", tempClassName);\n        tempElement = doc.querySelector(\".\" + tempClassName);\n        isEmpty = tempElement.innerHTML === \"\" || tempElement.innerHTML === wysihtml5.INVISIBLE_SPACE;\n        composer.selection.executeAndRestoreSimple(function() {\n          list = wysihtml5.dom.convertToList(tempElement, \"ul\");\n        });\n        if (isEmpty) {\n          composer.selection.selectNode(list.querySelector(\"li\"));\n        }\n      }\n    },\n    \n    state: function(composer) {\n      var selectedNode = composer.selection.getSelectedNode();\n      return wysihtml5.dom.getParentElement(selectedNode, { nodeName: \"UL\" });\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  \n  wysihtml5.commands.italic = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"i\");\n    },\n\n    state: function(composer, command, color) {\n      // element.ownerDocument.queryCommandState(\"italic\") results:\n      // firefox: only <i>\n      // chrome:  <i>, <em>, <blockquote>, ...\n      // ie:      <i>, <em>\n      // opera:   only <i>\n      return wysihtml5.commands.formatInline.state(composer, command, \"i\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-center\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyCenter = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-left\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyLeft = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef,\n      CLASS_NAME  = \"wysiwyg-text-align-right\",\n      REG_EXP     = /wysiwyg-text-align-[a-z]+/g;\n  \n  wysihtml5.commands.justifyRight = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatBlock.exec(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatBlock.state(composer, \"formatBlock\", null, CLASS_NAME, REG_EXP);\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);(function(wysihtml5) {\n  var undef;\n  wysihtml5.commands.underline = {\n    exec: function(composer, command) {\n      return wysihtml5.commands.formatInline.exec(composer, command, \"u\");\n    },\n\n    state: function(composer, command) {\n      return wysihtml5.commands.formatInline.state(composer, command, \"u\");\n    },\n\n    value: function() {\n      return undef;\n    }\n  };\n})(wysihtml5);/**\n * Undo Manager for wysihtml5\n * slightly inspired by http://rniwa.com/editing/undomanager.html#the-undomanager-interface\n */\n(function(wysihtml5) {\n  var Z_KEY               = 90,\n      Y_KEY               = 89,\n      BACKSPACE_KEY       = 8,\n      DELETE_KEY          = 46,\n      MAX_HISTORY_ENTRIES = 40,\n      UNDO_HTML           = '<span id=\"_wysihtml5-undo\" class=\"_wysihtml5-temp\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n      REDO_HTML           = '<span id=\"_wysihtml5-redo\" class=\"_wysihtml5-temp\">' + wysihtml5.INVISIBLE_SPACE + '</span>',\n      dom                 = wysihtml5.dom;\n  \n  function cleanTempElements(doc) {\n    var tempElement;\n    while (tempElement = doc.querySelector(\"._wysihtml5-temp\")) {\n      tempElement.parentNode.removeChild(tempElement);\n    }\n  }\n  \n  wysihtml5.UndoManager = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.UndoManager.prototype */ {\n    constructor: function(editor) {\n      this.editor = editor;\n      this.composer = editor.composer;\n      this.element = this.composer.element;\n      this.history = [this.composer.getValue()];\n      this.position = 1;\n      \n      // Undo manager currently only supported in browsers who have the insertHTML command (not IE)\n      if (this.composer.commands.support(\"insertHTML\")) {\n        this._observe();\n      }\n    },\n    \n    _observe: function() {\n      var that      = this,\n          doc       = this.composer.sandbox.getDocument(),\n          lastKey;\n          \n      // Catch CTRL+Z and CTRL+Y\n      dom.observe(this.element, \"keydown\", function(event) {\n        if (event.altKey || (!event.ctrlKey && !event.metaKey)) {\n          return;\n        }\n        \n        var keyCode = event.keyCode,\n            isUndo = keyCode === Z_KEY && !event.shiftKey,\n            isRedo = (keyCode === Z_KEY && event.shiftKey) || (keyCode === Y_KEY);\n        \n        if (isUndo) {\n          that.undo();\n          event.preventDefault();\n        } else if (isRedo) {\n          that.redo();\n          event.preventDefault();\n        }\n      });\n      \n      // Catch delete and backspace\n      dom.observe(this.element, \"keydown\", function(event) {\n        var keyCode = event.keyCode;\n        if (keyCode === lastKey) {\n          return;\n        }\n        \n        lastKey = keyCode;\n        \n        if (keyCode === BACKSPACE_KEY || keyCode === DELETE_KEY) {\n          that.transact();\n        }\n      });\n      \n      // Now this is very hacky:\n      // These days browsers don't offer a undo/redo event which we could hook into\n      // to be notified when the user hits undo/redo in the contextmenu.\n      // Therefore we simply insert two elements as soon as the contextmenu gets opened.\n      // The last element being inserted will be immediately be removed again by a exexCommand(\"undo\")\n      //  => When the second element appears in the dom tree then we know the user clicked \"redo\" in the context menu\n      //  => When the first element disappears from the dom tree then we know the user clicked \"undo\" in the context menu\n      if (wysihtml5.browser.hasUndoInContextMenu()) {\n        var interval, observed, cleanUp = function() {\n          cleanTempElements(doc);\n          clearInterval(interval);\n        };\n        \n        dom.observe(this.element, \"contextmenu\", function() {\n          cleanUp();\n          that.composer.selection.executeAndRestoreSimple(function() {\n            if (that.element.lastChild) {\n              that.composer.selection.setAfter(that.element.lastChild);\n            }\n\n            // enable undo button in context menu\n            doc.execCommand(\"insertHTML\", false, UNDO_HTML);\n            // enable redo button in context menu\n            doc.execCommand(\"insertHTML\", false, REDO_HTML);\n            doc.execCommand(\"undo\", false, null);\n          });\n\n          interval = setInterval(function() {\n            if (doc.getElementById(\"_wysihtml5-redo\")) {\n              cleanUp();\n              that.redo();\n            } else if (!doc.getElementById(\"_wysihtml5-undo\")) {\n              cleanUp();\n              that.undo();\n            }\n          }, 400);\n\n          if (!observed) {\n            observed = true;\n            dom.observe(document, \"mousedown\", cleanUp);\n            dom.observe(doc, [\"mousedown\", \"paste\", \"cut\", \"copy\"], cleanUp);\n          }\n        });\n      }\n      \n      this.editor\n        .observe(\"newword:composer\", function() {\n          that.transact();\n        })\n        \n        .observe(\"beforecommand:composer\", function() {\n          that.transact();\n        });\n    },\n    \n    transact: function() {\n      var previousHtml  = this.history[this.position - 1],\n          currentHtml   = this.composer.getValue();\n      \n      if (currentHtml == previousHtml) {\n        return;\n      }\n      \n      var length = this.history.length = this.position;\n      if (length > MAX_HISTORY_ENTRIES) {\n        this.history.shift();\n        this.position--;\n      }\n      \n      this.position++;\n      this.history.push(currentHtml);\n    },\n    \n    undo: function() {\n      this.transact();\n      \n      if (this.position <= 1) {\n        return;\n      }\n      \n      this.set(this.history[--this.position - 1]);\n      this.editor.fire(\"undo:composer\");\n    },\n    \n    redo: function() {\n      if (this.position >= this.history.length) {\n        return;\n      }\n      \n      this.set(this.history[++this.position - 1]);\n      this.editor.fire(\"redo:composer\");\n    },\n    \n    set: function(html) {\n      this.composer.setValue(html);\n      this.editor.focus(true);\n    }\n  });\n})(wysihtml5);\n/**\n * TODO: the following methods still need unit test coverage\n */\nwysihtml5.views.View = Base.extend(\n  /** @scope wysihtml5.views.View.prototype */ {\n  constructor: function(parent, textareaElement, config) {\n    this.parent   = parent;\n    this.element  = textareaElement;\n    this.config   = config;\n    \n    this._observeViewChange();\n  },\n  \n  _observeViewChange: function() {\n    var that = this;\n    this.parent.observe(\"beforeload\", function() {\n      that.parent.observe(\"change_view\", function(view) {\n        if (view === that.name) {\n          that.parent.currentView = that;\n          that.show();\n          // Using tiny delay here to make sure that the placeholder is set before focusing\n          setTimeout(function() { that.focus(); }, 0);\n        } else {\n          that.hide();\n        }\n      });\n    });\n  },\n  \n  focus: function() {\n    if (this.element.ownerDocument.querySelector(\":focus\") === this.element) {\n      return;\n    }\n    \n    try { this.element.focus(); } catch(e) {}\n  },\n  \n  hide: function() {\n    this.element.style.display = \"none\";\n  },\n  \n  show: function() {\n    this.element.style.display = \"\";\n  },\n  \n  disable: function() {\n    this.element.setAttribute(\"disabled\", \"disabled\");\n  },\n  \n  enable: function() {\n    this.element.removeAttribute(\"disabled\");\n  }\n});(function(wysihtml5) {\n  var dom       = wysihtml5.dom,\n      browser   = wysihtml5.browser;\n  \n  wysihtml5.views.Composer = wysihtml5.views.View.extend(\n    /** @scope wysihtml5.views.Composer.prototype */ {\n    name: \"composer\",\n\n    // Needed for firefox in order to display a proper caret in an empty contentEditable\n    CARET_HACK: \"<br>\",\n\n    constructor: function(parent, textareaElement, config) {\n      this.base(parent, textareaElement, config);\n      this.textarea = this.parent.textarea;\n      this._initSandbox();\n    },\n\n    clear: function() {\n      this.element.innerHTML = browser.displaysCaretInEmptyContentEditableCorrectly() ? \"\" : this.CARET_HACK;\n    },\n\n    getValue: function(parse) {\n      var value = this.isEmpty() ? \"\" : wysihtml5.quirks.getCorrectInnerHTML(this.element);\n      \n      if (parse) {\n        value = this.parent.parse(value);\n      }\n\n      // Replace all \"zero width no breaking space\" chars\n      // which are used as hacks to enable some functionalities\n      // Also remove all CARET hacks that somehow got left\n      value = wysihtml5.lang.string(value).replace(wysihtml5.INVISIBLE_SPACE).by(\"\");\n\n      return value;\n    },\n\n    setValue: function(html, parse) {\n      if (parse) {\n        html = this.parent.parse(html);\n      }\n      this.element.innerHTML = html;\n    },\n\n    show: function() {\n      this.iframe.style.display = this._displayStyle || \"\";\n\n      // Firefox needs this, otherwise contentEditable becomes uneditable\n      this.disable();\n      this.enable();\n    },\n\n    hide: function() {\n      this._displayStyle = dom.getStyle(\"display\").from(this.iframe);\n      if (this._displayStyle === \"none\") {\n        this._displayStyle = null;\n      }\n      this.iframe.style.display = \"none\";\n    },\n\n    disable: function() {\n      this.element.removeAttribute(\"contentEditable\");\n      this.base();\n    },\n\n    enable: function() {\n      this.element.setAttribute(\"contentEditable\", \"true\");\n      this.base();\n    },\n\n    focus: function(setToEnd) {\n      // IE 8 fires the focus event after .focus()\n      // This is needed by our simulate_placeholder.js to work\n      // therefore we clear it ourselves this time\n      if (wysihtml5.browser.doesAsyncFocus() && this.hasPlaceholderSet()) {\n        this.clear();\n      }\n      \n      this.base();\n      \n      var lastChild = this.element.lastChild;\n      if (setToEnd && lastChild) {\n        if (lastChild.nodeName === \"BR\") {\n          this.selection.setBefore(this.element.lastChild);\n        } else {\n          this.selection.setAfter(this.element.lastChild);\n        }\n      }\n    },\n\n    getTextContent: function() {\n      return dom.getTextContent(this.element);\n    },\n\n    hasPlaceholderSet: function() {\n      return this.getTextContent() == this.textarea.element.getAttribute(\"placeholder\");\n    },\n\n    isEmpty: function() {\n      var innerHTML               = this.element.innerHTML,\n          elementsWithVisualValue = \"blockquote, ul, ol, img, embed, object, table, iframe, svg, video, audio, button, input, select, textarea\";\n      return innerHTML === \"\"              || \n             innerHTML === this.CARET_HACK ||\n             this.hasPlaceholderSet()      ||\n             (this.getTextContent() === \"\" && !this.element.querySelector(elementsWithVisualValue));\n    },\n\n    _initSandbox: function() {\n      var that = this;\n      \n      this.sandbox = new dom.Sandbox(function() {\n        that._create();\n      }, {\n        stylesheets:  this.config.stylesheets\n      });\n      this.iframe  = this.sandbox.getIframe();\n\n      // Create hidden field which tells the server after submit, that the user used an wysiwyg editor\n      var hiddenField = document.createElement(\"input\");\n      hiddenField.type   = \"hidden\";\n      hiddenField.name   = \"_wysihtml5_mode\";\n      hiddenField.value  = 1;\n\n      // Store reference to current wysihtml5 instance on the textarea element\n      var textareaElement = this.textarea.element;\n      dom.insert(this.iframe).after(textareaElement);\n      dom.insert(hiddenField).after(textareaElement);\n    },\n\n    _create: function() {\n      var that = this;\n      \n      this.doc                = this.sandbox.getDocument();\n      this.element            = this.doc.body;\n      this.textarea           = this.parent.textarea;\n      this.element.innerHTML  = this.textarea.getValue(true);\n      this.enable();\n      \n      // Make sure our selection handler is ready\n      this.selection = new wysihtml5.Selection(this.parent);\n      \n      // Make sure commands dispatcher is ready\n      this.commands  = new wysihtml5.Commands(this.parent);\n\n      dom.copyAttributes([\n        \"className\", \"spellcheck\", \"title\", \"lang\", \"dir\", \"accessKey\"\n      ]).from(this.textarea.element).to(this.element);\n      \n      dom.addClass(this.element, this.config.composerClassName);\n\n      // Make the editor look like the original textarea, by syncing styles\n      if (this.config.style) {\n        this.style();\n      }\n\n      this.observe();\n\n      var name = this.config.name;\n      if (name) {\n        dom.addClass(this.element, name);\n        dom.addClass(this.iframe, name);\n      }\n\n      // Simulate html5 placeholder attribute on contentEditable element\n      var placeholderText = typeof(this.config.placeholder) === \"string\"\n        ? this.config.placeholder\n        : this.textarea.element.getAttribute(\"placeholder\");\n      if (placeholderText) {\n        dom.simulatePlaceholder(this.parent, this, placeholderText);\n      }\n      \n      // Make sure that the browser avoids using inline styles whenever possible\n      this.commands.exec(\"styleWithCSS\", false);\n\n      this._initAutoLinking();\n      this._initObjectResizing();\n      this._initUndoManager();\n\n      // Simulate html5 autofocus on contentEditable element\n      if (this.textarea.element.hasAttribute(\"autofocus\") || document.querySelector(\":focus\") == this.textarea.element) {\n        setTimeout(function() { that.focus(); }, 100);\n      }\n\n      wysihtml5.quirks.insertLineBreakOnReturn(this);\n\n      // IE sometimes leaves a single paragraph, which can't be removed by the user\n      if (!browser.clearsContentEditableCorrectly()) {\n        wysihtml5.quirks.ensureProperClearing(this);\n      }\n\n      if (!browser.clearsListsInContentEditableCorrectly()) {\n        wysihtml5.quirks.ensureProperClearingOfLists(this);\n      }\n\n      // Set up a sync that makes sure that textarea and editor have the same content\n      if (this.initSync && this.config.sync) {\n        this.initSync();\n      }\n\n      // Okay hide the textarea, we are ready to go\n      this.textarea.hide();\n\n      // Fire global (before-)load event\n      this.parent.fire(\"beforeload\").fire(\"load\");\n    },\n\n    _initAutoLinking: function() {\n      var that                           = this,\n          supportsDisablingOfAutoLinking = browser.canDisableAutoLinking(),\n          supportsAutoLinking            = browser.doesAutoLinkingInContentEditable();\n      if (supportsDisablingOfAutoLinking) {\n        this.commands.exec(\"autoUrlDetect\", false);\n      }\n\n      if (!this.config.autoLink) {\n        return;\n      }\n\n      // Only do the auto linking by ourselves when the browser doesn't support auto linking\n      // OR when he supports auto linking but we were able to turn it off (IE9+)\n      if (!supportsAutoLinking || (supportsAutoLinking && supportsDisablingOfAutoLinking)) {\n        this.parent.observe(\"newword:composer\", function() {\n          that.selection.executeAndRestore(function(startContainer, endContainer) {\n            dom.autoLink(endContainer.parentNode);\n          });\n        });\n      }\n\n      // Assuming we have the following:\n      //  <a href=\"../../../../www.google.de\">http://www.google.de</a>\n      // If a user now changes the url in the innerHTML we want to make sure that\n      // it's synchronized with the href attribute (as long as the innerHTML is still a url)\n      var // Use a live NodeList to check whether there are any links in the document\n          links           = this.sandbox.getDocument().getElementsByTagName(\"a\"),\n          // The autoLink helper method reveals a reg exp to detect correct urls\n          urlRegExp       = dom.autoLink.URL_REG_EXP,\n          getTextContent  = function(element) {\n            var textContent = wysihtml5.lang.string(dom.getTextContent(element)).trim();\n            if (textContent.substr(0, 4) === \"www.\") {\n              textContent = \"http://\" + textContent;\n            }\n            return textContent;\n          };\n\n      dom.observe(this.element, \"keydown\", function(event) {\n        if (!links.length) {\n          return;\n        }\n\n        var selectedNode = that.selection.getSelectedNode(event.target.ownerDocument),\n            link         = dom.getParentElement(selectedNode, { nodeName: \"A\" }, 4),\n            textContent;\n\n        if (!link) {\n          return;\n        }\n\n        textContent = getTextContent(link);\n        // keydown is fired before the actual content is changed\n        // therefore we set a timeout to change the href\n        setTimeout(function() {\n          var newTextContent = getTextContent(link);\n          if (newTextContent === textContent) {\n            return;\n          }\n\n          // Only set href when new href looks like a valid url\n          if (newTextContent.match(urlRegExp)) {\n            link.setAttribute(\"href\", newTextContent);\n          }\n        }, 0);\n      });\n    },\n\n    _initObjectResizing: function() {\n      var properties        = [\"width\", \"height\"],\n          propertiesLength  = properties.length,\n          element           = this.element;\n      \n      this.commands.exec(\"enableObjectResizing\", this.config.allowObjectResizing);\n      \n      if (this.config.allowObjectResizing) {\n         // IE sets inline styles after resizing objects\n         // The following lines make sure that the width/height css properties\n         // are copied over to the width/height attributes\n        if (browser.supportsEvent(\"resizeend\")) {\n          dom.observe(element, \"resizeend\", function(event) {\n            var target = event.target || event.srcElement,\n                style  = target.style,\n                i      = 0,\n                property;\n            for(; i<propertiesLength; i++) {\n              property = properties[i];\n              if (style[property]) {\n                target.setAttribute(property, parseInt(style[property], 10));\n                style[property] = \"\";\n              }\n            }\n            // After resizing IE sometimes forgets to remove the old resize handles\n            wysihtml5.quirks.redraw(element);\n          });\n        }\n      } else {\n        if (browser.supportsEvent(\"resizestart\")) {\n          dom.observe(element, \"resizestart\", function(event) { event.preventDefault(); });\n        }\n      }\n    },\n    \n    _initUndoManager: function() {\n      new wysihtml5.UndoManager(this.parent);\n    }\n  });\n})(wysihtml5);(function(wysihtml5) {\n  var dom             = wysihtml5.dom,\n      doc             = document,\n      win             = window,\n      HOST_TEMPLATE   = doc.createElement(\"div\"),\n      /**\n       * Styles to copy from textarea to the composer element\n       */\n      TEXT_FORMATTING = [\n        \"background-color\",\n        \"color\", \"cursor\",\n        \"font-family\", \"font-size\", \"font-style\", \"font-variant\", \"font-weight\",\n        \"line-height\", \"letter-spacing\",\n        \"text-align\", \"text-decoration\", \"text-indent\", \"text-rendering\",\n        \"word-break\", \"word-wrap\", \"word-spacing\"\n      ],\n      /**\n       * Styles to copy from textarea to the iframe\n       */\n      BOX_FORMATTING = [\n        \"background-color\",\n        \"border-collapse\",\n        \"border-bottom-color\", \"border-bottom-style\", \"border-bottom-width\",\n        \"border-left-color\", \"border-left-style\", \"border-left-width\",\n        \"border-right-color\", \"border-right-style\", \"border-right-width\",\n        \"border-top-color\", \"border-top-style\", \"border-top-width\",\n        \"clear\", \"display\", \"float\",\n        \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n        \"outline-color\", \"outline-offset\", \"outline-width\", \"outline-style\",\n        \"padding-left\", \"padding-right\", \"padding-top\", \"padding-bottom\",\n        \"position\", \"top\", \"left\", \"right\", \"bottom\", \"z-index\",\n        \"vertical-align\", \"text-align\",\n        \"-webkit-box-sizing\", \"-moz-box-sizing\", \"-ms-box-sizing\", \"box-sizing\",\n        \"-webkit-box-shadow\", \"-moz-box-shadow\", \"-ms-box-shadow\",\"box-shadow\",\n        \"-webkit-border-top-right-radius\", \"-moz-border-radius-topright\", \"border-top-right-radius\",\n        \"-webkit-border-bottom-right-radius\", \"-moz-border-radius-bottomright\", \"border-bottom-right-radius\",\n        \"-webkit-border-bottom-left-radius\", \"-moz-border-radius-bottomleft\", \"border-bottom-left-radius\",\n        \"-webkit-border-top-left-radius\", \"-moz-border-radius-topleft\", \"border-top-left-radius\",\n        \"width\", \"height\"\n      ],\n      /**\n       * Styles to sync while the window gets resized\n       */\n      RESIZE_STYLE = [\n        \"width\", \"height\",\n        \"top\", \"left\", \"right\", \"bottom\"\n      ],\n      ADDITIONAL_CSS_RULES = [\n        \"html             { height: 100%; }\",\n        \"body             { min-height: 100%; padding: 0; margin: 0; margin-top: -1px; padding-top: 1px; }\",\n        \"._wysihtml5-temp { display: none; }\",\n        wysihtml5.browser.isGecko ?\n          \"body.placeholder { color: graytext !important; }\" : \n          \"body.placeholder { color: #a9a9a9 !important; }\",\n        \"body[disabled]   { background-color: #eee !important; color: #999 !important; cursor: default !important; }\",\n        // Ensure that user see's broken images and can delete them\n        \"img:-moz-broken  { -moz-force-broken-image-icon: 1; height: 24px; width: 24px; }\"\n      ];\n  \n  /**\n   * With \"setActive\" IE offers a smart way of focusing elements without scrolling them into view:\n   * http://msdn.microsoft.com/en-us/library/ms536738(v=vs.85).aspx\n   *\n   * Other browsers need a more hacky way: (pssst don't tell my mama)\n   * In order to prevent the element being scrolled into view when focusing it, we simply\n   * move it out of the scrollable area, focus it, and reset it's position\n   */\n  var focusWithoutScrolling = function(element) {\n    if (element.setActive) {\n      // Following line could cause a js error when the textarea is invisible\n      // See https://github.com/xing/wysihtml5/issues/9\n      try { element.setActive(); } catch(e) {}\n    } else {\n      var elementStyle = element.style,\n          originalScrollTop = doc.documentElement.scrollTop || doc.body.scrollTop,\n          originalScrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft,\n          originalStyles = {\n            position:         elementStyle.position,\n            top:              elementStyle.top,\n            left:             elementStyle.left,\n            WebkitUserSelect: elementStyle.WebkitUserSelect\n          };\n      \n      dom.setStyles({\n        position:         \"absolute\",\n        top:              \"-99999px\",\n        left:             \"-99999px\",\n        // Don't ask why but temporarily setting -webkit-user-select to none makes the whole thing performing smoother\n        WebkitUserSelect: \"none\"\n      }).on(element);\n      \n      element.focus();\n      \n      dom.setStyles(originalStyles).on(element);\n      \n      if (win.scrollTo) {\n        // Some browser extensions unset this method to prevent annoyances\n        // \"Better PopUp Blocker\" for Chrome http://code.google.com/p/betterpopupblocker/source/browse/trunk/blockStart.js#100\n        // Issue: http://code.google.com/p/betterpopupblocker/issues/detail?id=1\n        win.scrollTo(originalScrollLeft, originalScrollTop);\n      }\n    }\n  };\n  \n  \n  wysihtml5.views.Composer.prototype.style = function() {\n    var that                  = this,\n        originalActiveElement = doc.querySelector(\":focus\"),\n        textareaElement       = this.textarea.element,\n        hasPlaceholder        = textareaElement.hasAttribute(\"placeholder\"),\n        originalPlaceholder   = hasPlaceholder && textareaElement.getAttribute(\"placeholder\");\n    this.focusStylesHost      = this.focusStylesHost  || HOST_TEMPLATE.cloneNode(false);\n    this.blurStylesHost       = this.blurStylesHost   || HOST_TEMPLATE.cloneNode(false);\n  \n    // Remove placeholder before copying (as the placeholder has an affect on the computed style)\n    if (hasPlaceholder) {\n      textareaElement.removeAttribute(\"placeholder\");\n    }\n  \n    if (textareaElement === originalActiveElement) {\n      textareaElement.blur();\n    }\n  \n    // --------- iframe styles (has to be set before editor styles, otherwise IE9 sets wrong fontFamily on blurStylesHost) ---------\n    dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.iframe).andTo(this.blurStylesHost);\n  \n    // --------- editor styles ---------\n    dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.element).andTo(this.blurStylesHost);\n  \n    // --------- apply standard rules ---------\n    dom.insertCSS(ADDITIONAL_CSS_RULES).into(this.element.ownerDocument);\n  \n    // --------- :focus styles ---------\n    focusWithoutScrolling(textareaElement);\n    dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.focusStylesHost);\n    dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.focusStylesHost);\n  \n    // Make sure that we don't change the display style of the iframe when copying styles oblur/onfocus\n    // this is needed for when the change_view event is fired where the iframe is hidden and then\n    // the blur event fires and re-displays it\n    var boxFormattingStyles = wysihtml5.lang.array(BOX_FORMATTING).without([\"display\"]);\n  \n    // --------- restore focus ---------\n    if (originalActiveElement) {\n      originalActiveElement.focus();\n    } else {\n      textareaElement.blur();\n    }\n  \n    // --------- restore placeholder ---------\n    if (hasPlaceholder) {\n      textareaElement.setAttribute(\"placeholder\", originalPlaceholder);\n    }\n  \n    // When copying styles, we only get the computed style which is never returned in percent unit\n    // Therefore we've to recalculate style onresize\n    if (!wysihtml5.browser.hasCurrentStyleProperty()) {\n      var winObserver = dom.observe(win, \"resize\", function() {\n        // Remove event listener if composer doesn't exist anymore\n        if (!dom.contains(document.documentElement, that.iframe)) {\n          winObserver.stop();\n          return;\n        }\n        var originalTextareaDisplayStyle = dom.getStyle(\"display\").from(textareaElement),\n            originalComposerDisplayStyle = dom.getStyle(\"display\").from(that.iframe);\n        textareaElement.style.display = \"\";\n        that.iframe.style.display = \"none\";\n        dom.copyStyles(RESIZE_STYLE)\n          .from(textareaElement)\n          .to(that.iframe)\n          .andTo(that.focusStylesHost)\n          .andTo(that.blurStylesHost);\n        that.iframe.style.display = originalComposerDisplayStyle;\n        textareaElement.style.display = originalTextareaDisplayStyle;\n      });\n    }\n  \n    // --------- Sync focus/blur styles ---------\n    this.parent.observe(\"focus:composer\", function() {\n      dom.copyStyles(boxFormattingStyles) .from(that.focusStylesHost).to(that.iframe);\n      dom.copyStyles(TEXT_FORMATTING)     .from(that.focusStylesHost).to(that.element);\n    });\n\n    this.parent.observe(\"blur:composer\", function() {\n      dom.copyStyles(boxFormattingStyles) .from(that.blurStylesHost).to(that.iframe);\n      dom.copyStyles(TEXT_FORMATTING)     .from(that.blurStylesHost).to(that.element);\n    });\n  \n    return this;\n  };\n})(wysihtml5);/**\n * Taking care of events\n *  - Simulating 'change' event on contentEditable element\n *  - Handling drag & drop logic\n *  - Catch paste events\n *  - Dispatch proprietary newword:composer event\n *  - Keyboard shortcuts\n */\n(function(wysihtml5) {\n  var dom       = wysihtml5.dom,\n      browser   = wysihtml5.browser,\n      /**\n       * Map keyCodes to query commands\n       */\n      shortcuts = {\n        \"66\": \"bold\",     // B\n        \"73\": \"italic\",   // I\n        \"85\": \"underline\" // U\n      };\n  \n  wysihtml5.views.Composer.prototype.observe = function() {\n    var that                = this,\n        state               = this.getValue(),\n        iframe              = this.sandbox.getIframe(),\n        element             = this.element,\n        focusBlurElement    = browser.supportsEventsInIframeCorrectly() ? element : this.sandbox.getWindow(),\n        // Firefox < 3.5 doesn't support the drop event, instead it supports a so called \"dragdrop\" event which behaves almost the same\n        pasteEvents         = browser.supportsEvent(\"drop\") ? [\"drop\", \"paste\"] : [\"dragdrop\", \"paste\"];\n\n    // --------- destroy:composer event ---------\n    dom.observe(iframe, \"DOMNodeRemoved\", function() {\n      clearInterval(domNodeRemovedInterval);\n      that.parent.fire(\"destroy:composer\");\n    });\n\n    // DOMNodeRemoved event is not supported in IE 8\n    var domNodeRemovedInterval = setInterval(function() {\n      if (!dom.contains(document.documentElement, iframe)) {\n        clearInterval(domNodeRemovedInterval);\n        that.parent.fire(\"destroy:composer\");\n      }\n    }, 250);\n\n\n    // --------- Focus & blur logic ---------\n    dom.observe(focusBlurElement, \"focus\", function() {\n      that.parent.fire(\"focus\").fire(\"focus:composer\");\n\n      // Delay storing of state until all focus handler are fired\n      // especially the one which resets the placeholder\n      setTimeout(function() { state = that.getValue(); }, 0);\n    });\n\n    dom.observe(focusBlurElement, \"blur\", function() {\n      if (state !== that.getValue()) {\n        that.parent.fire(\"change\").fire(\"change:composer\");\n      }\n      that.parent.fire(\"blur\").fire(\"blur:composer\");\n    });\n    \n    if (wysihtml5.browser.isIos()) {\n      // When on iPad/iPhone/IPod after clicking outside of editor, the editor loses focus\n      // but the UI still acts as if the editor has focus (blinking caret and onscreen keyboard visible)\n      // We prevent that by focusing a temporary input element which immediately loses focus\n      dom.observe(element, \"blur\", function() {\n        var input = element.ownerDocument.createElement(\"input\"),\n            originalScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n            originalScrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n        try {\n          that.selection.insertNode(input);\n        } catch(e) {\n          element.appendChild(input);\n        }\n        input.focus();\n        input.parentNode.removeChild(input);\n        \n        window.scrollTo(originalScrollLeft, originalScrollTop);\n      });\n    }\n\n    // --------- Drag & Drop logic ---------\n    dom.observe(element, \"dragenter\", function() {\n      that.parent.fire(\"unset_placeholder\");\n    });\n\n    if (browser.firesOnDropOnlyWhenOnDragOverIsCancelled()) {\n      dom.observe(element, [\"dragover\", \"dragenter\"], function(event) {\n        event.preventDefault();\n      });\n    }\n\n    dom.observe(element, pasteEvents, function(event) {\n      var dataTransfer = event.dataTransfer,\n          data;\n\n      if (dataTransfer && browser.supportsDataTransfer()) {\n        data = dataTransfer.getData(\"text/html\") || dataTransfer.getData(\"text/plain\");\n      }\n      if (data) {\n        element.focus();\n        that.commands.exec(\"insertHTML\", data);\n        that.parent.fire(\"paste\").fire(\"paste:composer\");\n        event.stopPropagation();\n        event.preventDefault();\n      } else {\n        setTimeout(function() {\n          that.parent.fire(\"paste\").fire(\"paste:composer\");\n        }, 0);\n      }\n    });\n\n    // --------- neword event ---------\n    dom.observe(element, \"keyup\", function(event) {\n      var keyCode = event.keyCode;\n      if (keyCode === wysihtml5.SPACE_KEY || keyCode === wysihtml5.ENTER_KEY) {\n        that.parent.fire(\"newword:composer\");\n      }\n    });\n\n    this.parent.observe(\"paste:composer\", function() {\n      setTimeout(function() { that.parent.fire(\"newword:composer\"); }, 0);\n    });\n\n    // --------- Make sure that images are selected when clicking on them ---------\n    if (!browser.canSelectImagesInContentEditable()) {\n      dom.observe(element, \"mousedown\", function(event) {\n        var target = event.target;\n        if (target.nodeName === \"IMG\") {\n          that.selection.selectNode(target);\n          event.preventDefault();\n        }\n      });\n    }\n    \n    // --------- Shortcut logic ---------\n    dom.observe(element, \"keydown\", function(event) {\n      var keyCode  = event.keyCode,\n          command  = shortcuts[keyCode];\n      if ((event.ctrlKey || event.metaKey) && !event.altKey && command) {\n        that.commands.exec(command);\n        event.preventDefault();\n      }\n    });\n\n    // --------- Make sure that when pressing backspace/delete on selected images deletes the image and it's anchor ---------\n    dom.observe(element, \"keydown\", function(event) {\n      var target  = that.selection.getSelectedNode(true),\n          keyCode = event.keyCode,\n          parent;\n      if (target && target.nodeName === \"IMG\" && (keyCode === wysihtml5.BACKSPACE_KEY || keyCode === wysihtml5.DELETE_KEY)) { // 8 => backspace, 46 => delete\n        parent = target.parentNode;\n        // delete the <img>\n        parent.removeChild(target);\n        // and it's parent <a> too if it hasn't got any other child nodes\n        if (parent.nodeName === \"A\" && !parent.firstChild) {\n          parent.parentNode.removeChild(parent);\n        }\n\n        setTimeout(function() { wysihtml5.quirks.redraw(element); }, 0);\n        event.preventDefault();\n      }\n    });\n\n    // --------- Show url in tooltip when hovering links or images ---------\n    var titlePrefixes = {\n      IMG: \"Image: \",\n      A:   \"Link: \"\n    };\n    \n    dom.observe(element, \"mouseover\", function(event) {\n      var target   = event.target,\n          nodeName = target.nodeName,\n          title;\n      if (nodeName !== \"A\" && nodeName !== \"IMG\") {\n        return;\n      }\n      var hasTitle = target.hasAttribute(\"title\");\n      if(!hasTitle){\n        title = titlePrefixes[nodeName] + (target.getAttribute(\"href\") || target.getAttribute(\"src\"));\n        target.setAttribute(\"title\", title);\n      }\n    });\n  };\n})(wysihtml5);/**\n * Class that takes care that the value of the composer and the textarea is always in sync\n */\n(function(wysihtml5) {\n  var INTERVAL = 400;\n  \n  wysihtml5.views.Synchronizer = Base.extend(\n    /** @scope wysihtml5.views.Synchronizer.prototype */ {\n\n    constructor: function(editor, textarea, composer) {\n      this.editor   = editor;\n      this.textarea = textarea;\n      this.composer = composer;\n\n      this._observe();\n    },\n\n    /**\n     * Sync html from composer to textarea\n     * Takes care of placeholders\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the textarea\n     */\n    fromComposerToTextarea: function(shouldParseHtml) {\n      this.textarea.setValue(wysihtml5.lang.string(this.composer.getValue()).trim(), shouldParseHtml);\n    },\n\n    /**\n     * Sync value of textarea to composer\n     * Takes care of placeholders\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer\n     */\n    fromTextareaToComposer: function(shouldParseHtml) {\n      var textareaValue = this.textarea.getValue();\n      if (textareaValue) {\n        this.composer.setValue(textareaValue, shouldParseHtml);\n      } else {\n        this.composer.clear();\n        this.editor.fire(\"set_placeholder\");\n      }\n    },\n\n    /**\n     * Invoke syncing based on view state\n     * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer/textarea\n     */\n    sync: function(shouldParseHtml) {\n      if (this.editor.currentView.name === \"textarea\") {\n        this.fromTextareaToComposer(shouldParseHtml);\n      } else {\n        this.fromComposerToTextarea(shouldParseHtml);\n      }\n    },\n\n    /**\n     * Initializes interval-based syncing\n     * also makes sure that on-submit the composer's content is synced with the textarea\n     * immediately when the form gets submitted\n     */\n    _observe: function() {\n      var interval,\n          that          = this,\n          form          = this.textarea.element.form,\n          startInterval = function() {\n            interval = setInterval(function() { that.fromComposerToTextarea(); }, INTERVAL);\n          },\n          stopInterval  = function() {\n            clearInterval(interval);\n            interval = null;\n          };\n\n      startInterval();\n\n      if (form) {\n        // If the textarea is in a form make sure that after onreset and onsubmit the composer\n        // has the correct state\n        wysihtml5.dom.observe(form, \"submit\", function() {\n          that.sync(true);\n        });\n        wysihtml5.dom.observe(form, \"reset\", function() {\n          setTimeout(function() { that.fromTextareaToComposer(); }, 0);\n        });\n      }\n\n      this.editor.observe(\"change_view\", function(view) {\n        if (view === \"composer\" && !interval) {\n          that.fromTextareaToComposer(true);\n          startInterval();\n        } else if (view === \"textarea\") {\n          that.fromComposerToTextarea(true);\n          stopInterval();\n        }\n      });\n\n      this.editor.observe(\"destroy:composer\", stopInterval);\n    }\n  });\n})(wysihtml5);\nwysihtml5.views.Textarea = wysihtml5.views.View.extend(\n  /** @scope wysihtml5.views.Textarea.prototype */ {\n  name: \"textarea\",\n  \n  constructor: function(parent, textareaElement, config) {\n    this.base(parent, textareaElement, config);\n    \n    this._observe();\n  },\n  \n  clear: function() {\n    this.element.value = \"\";\n  },\n  \n  getValue: function(parse) {\n    var value = this.isEmpty() ? \"\" : this.element.value;\n    if (parse) {\n      value = this.parent.parse(value);\n    }\n    return value;\n  },\n  \n  setValue: function(html, parse) {\n    if (parse) {\n      html = this.parent.parse(html);\n    }\n    this.element.value = html;\n  },\n  \n  hasPlaceholderSet: function() {\n    var supportsPlaceholder = wysihtml5.browser.supportsPlaceholderAttributeOn(this.element),\n        placeholderText     = this.element.getAttribute(\"placeholder\") || null,\n        value               = this.element.value,\n        isEmpty             = !value;\n    return (supportsPlaceholder && isEmpty) || (value === placeholderText);\n  },\n  \n  isEmpty: function() {\n    return !wysihtml5.lang.string(this.element.value).trim() || this.hasPlaceholderSet();\n  },\n  \n  _observe: function() {\n    var element = this.element,\n        parent  = this.parent,\n        eventMapping = {\n          focusin:  \"focus\",\n          focusout: \"blur\"\n        },\n        /**\n         * Calling focus() or blur() on an element doesn't synchronously trigger the attached focus/blur events\n         * This is the case for focusin and focusout, so let's use them whenever possible, kkthxbai\n         */\n        events = wysihtml5.browser.supportsEvent(\"focusin\") ? [\"focusin\", \"focusout\", \"change\"] : [\"focus\", \"blur\", \"change\"];\n    \n    parent.observe(\"beforeload\", function() {\n      wysihtml5.dom.observe(element, events, function(event) {\n        var eventName = eventMapping[event.type] || event.type;\n        parent.fire(eventName).fire(eventName + \":textarea\");\n      });\n      \n      wysihtml5.dom.observe(element, [\"paste\", \"drop\"], function() {\n        setTimeout(function() { parent.fire(\"paste\").fire(\"paste:textarea\"); }, 0);\n      });\n    });\n  }\n});/**\n * Toolbar Dialog\n *\n * @param {Element} link The toolbar link which causes the dialog to show up\n * @param {Element} container The dialog container\n *\n * @example\n *    <!-- Toolbar link -->\n *    <a data-wysihtml5-command=\"insertImage\">insert an image</a>\n *\n *    <!-- Dialog -->\n *    <div data-wysihtml5-dialog=\"insertImage\" style=\"display: none;\">\n *      <label>\n *        URL: <input data-wysihtml5-dialog-field=\"src\" value=\"http://\">\n *      </label>\n *      <label>\n *        Alternative text: <input data-wysihtml5-dialog-field=\"alt\" value=\"\">\n *      </label>\n *    </div>\n *\n *    <script>\n *      var dialog = new wysihtml5.toolbar.Dialog(\n *        document.querySelector(\"[data-wysihtml5-command='insertImage']\"),\n *        document.querySelector(\"[data-wysihtml5-dialog='insertImage']\")\n *      );\n *      dialog.observe(\"save\", function(attributes) {\n *        // do something\n *      });\n *    </script>\n */\n(function(wysihtml5) {\n  var dom                     = wysihtml5.dom,\n      CLASS_NAME_OPENED       = \"wysihtml5-command-dialog-opened\",\n      SELECTOR_FORM_ELEMENTS  = \"input, select, textarea\",\n      SELECTOR_FIELDS         = \"[data-wysihtml5-dialog-field]\",\n      ATTRIBUTE_FIELDS        = \"data-wysihtml5-dialog-field\";\n      \n  \n  wysihtml5.toolbar.Dialog = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.toolbar.Dialog.prototype */ {\n    constructor: function(link, container) {\n      this.link       = link;\n      this.container  = container;\n    },\n\n    _observe: function() {\n      if (this._observed) {\n        return;\n      }\n      \n      var that = this,\n          callbackWrapper = function(event) {\n            var attributes = that._serialize();\n            if (attributes == that.elementToChange) {\n              that.fire(\"edit\", attributes);\n            } else {\n              that.fire(\"save\", attributes);\n            }\n            that.hide();\n            event.preventDefault();\n            event.stopPropagation();\n          };\n\n      dom.observe(that.link, \"click\", function(event) {\n        if (dom.hasClass(that.link, CLASS_NAME_OPENED)) {\n          setTimeout(function() { that.hide(); }, 0);\n        }\n      });\n\n      dom.observe(this.container, \"keydown\", function(event) {\n        var keyCode = event.keyCode;\n        if (keyCode === wysihtml5.ENTER_KEY) {\n          callbackWrapper(event);\n        }\n        if (keyCode === wysihtml5.ESCAPE_KEY) {\n          that.hide();\n        }\n      });\n\n      dom.delegate(this.container, \"[data-wysihtml5-dialog-action=save]\", \"click\", callbackWrapper);\n\n      dom.delegate(this.container, \"[data-wysihtml5-dialog-action=cancel]\", \"click\", function(event) {\n        that.fire(\"cancel\");\n        that.hide();\n        event.preventDefault();\n        event.stopPropagation();\n      });\n\n      var formElements  = this.container.querySelectorAll(SELECTOR_FORM_ELEMENTS),\n          i             = 0,\n          length        = formElements.length,\n          _clearInterval = function() { clearInterval(that.interval); };\n      for (; i<length; i++) {\n        dom.observe(formElements[i], \"change\", _clearInterval);\n      }\n\n      this._observed = true;\n    },\n\n    /**\n     * Grabs all fields in the dialog and puts them in key=>value style in an object which\n     * then gets returned\n     */\n    _serialize: function() {\n      var data    = this.elementToChange || {},\n          fields  = this.container.querySelectorAll(SELECTOR_FIELDS),\n          length  = fields.length,\n          i       = 0;\n      for (; i<length; i++) {\n        data[fields[i].getAttribute(ATTRIBUTE_FIELDS)] = fields[i].value;\n      }\n      return data;\n    },\n\n    /**\n     * Takes the attributes of the \"elementToChange\"\n     * and inserts them in their corresponding dialog input fields\n     * \n     * Assume the \"elementToChange\" looks like this:\n     *    <a href=\"../../../../www.google.com\" target=\"_blank\">foo</a>\n     *\n     * and we have the following dialog:\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"href\" value=\"\">\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"target\" value=\"\">\n     * \n     * after calling _interpolate() the dialog will look like this\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"href\" value=\"http://www.google.com\">\n     *    <input type=\"text\" data-wysihtml5-dialog-field=\"target\" value=\"_blank\">\n     *\n     * Basically it adopted the attribute values into the corresponding input fields\n     *\n     */\n    _interpolate: function(avoidHiddenFields) {\n      var field,\n          fieldName,\n          newValue,\n          focusedElement = document.querySelector(\":focus\"),\n          fields         = this.container.querySelectorAll(SELECTOR_FIELDS),\n          length         = fields.length,\n          i              = 0;\n      for (; i<length; i++) {\n        field = fields[i];\n        \n        // Never change elements where the user is currently typing in\n        if (field === focusedElement) {\n          continue;\n        }\n        \n        // Don't update hidden fields\n        // See https://github.com/xing/wysihtml5/pull/14\n        if (avoidHiddenFields && field.type === \"hidden\") {\n          continue;\n        }\n        \n        fieldName = field.getAttribute(ATTRIBUTE_FIELDS);\n        newValue  = this.elementToChange ? (this.elementToChange[fieldName] || \"\") : field.defaultValue;\n        field.value = newValue;\n      }\n    },\n\n    /**\n     * Show the dialog element\n     */\n    show: function(elementToChange) {\n      var that        = this,\n          firstField  = this.container.querySelector(SELECTOR_FORM_ELEMENTS);\n      this.elementToChange = elementToChange;\n      this._observe();\n      this._interpolate();\n      if (elementToChange) {\n        this.interval = setInterval(function() { that._interpolate(true); }, 500);\n      }\n      dom.addClass(this.link, CLASS_NAME_OPENED);\n      this.container.style.display = \"\";\n      this.fire(\"show\");\n      if (firstField && !elementToChange) {\n        try {\n          firstField.focus();\n        } catch(e) {}\n      }\n    },\n\n    /**\n     * Hide the dialog element\n     */\n    hide: function() {\n      clearInterval(this.interval);\n      this.elementToChange = null;\n      dom.removeClass(this.link, CLASS_NAME_OPENED);\n      this.container.style.display = \"none\";\n      this.fire(\"hide\");\n    }\n  });\n})(wysihtml5);\n/**\n * Converts speech-to-text and inserts this into the editor\n * As of now (2011/03/25) this only is supported in Chrome >= 11\n *\n * Note that it sends the recorded audio to the google speech recognition api:\n * http://stackoverflow.com/questions/4361826/does-chrome-have-buil-in-speech-recognition-for-input-type-text-x-webkit-speec\n *\n * Current HTML5 draft can be found here\n * http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html\n * \n * \"Accessing Google Speech API Chrome 11\"\n * http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/\n */\n(function(wysihtml5) {\n  var dom = wysihtml5.dom;\n  \n  var linkStyles = {\n    position: \"relative\"\n  };\n  \n  var wrapperStyles = {\n    left:     0,\n    margin:   0,\n    opacity:  0,\n    overflow: \"hidden\",\n    padding:  0,\n    position: \"absolute\",\n    top:      0,\n    zIndex:   1\n  };\n  \n  var inputStyles = {\n    cursor:     \"inherit\",\n    fontSize:   \"50px\",\n    height:     \"50px\",\n    marginTop:  \"-25px\",\n    outline:    0,\n    padding:    0,\n    position:   \"absolute\",\n    right:      \"-4px\",\n    top:        \"50%\"\n  };\n  \n  var inputAttributes = {\n    \"x-webkit-speech\": \"\",\n    \"speech\":          \"\"\n  };\n  \n  wysihtml5.toolbar.Speech = function(parent, link) {\n    var input = document.createElement(\"input\");\n    if (!wysihtml5.browser.supportsSpeechApiOn(input)) {\n      link.style.display = \"none\";\n      return;\n    }\n    \n    var wrapper = document.createElement(\"div\");\n    \n    wysihtml5.lang.object(wrapperStyles).merge({\n      width:  link.offsetWidth  + \"px\",\n      height: link.offsetHeight + \"px\"\n    });\n    \n    dom.insert(input).into(wrapper);\n    dom.insert(wrapper).into(link);\n    \n    dom.setStyles(inputStyles).on(input);\n    dom.setAttributes(inputAttributes).on(input)\n    \n    dom.setStyles(wrapperStyles).on(wrapper);\n    dom.setStyles(linkStyles).on(link);\n    \n    var eventName = \"onwebkitspeechchange\" in input ? \"webkitspeechchange\" : \"speechchange\";\n    dom.observe(input, eventName, function() {\n      parent.execCommand(\"insertText\", input.value);\n      input.value = \"\";\n    });\n    \n    dom.observe(input, \"click\", function(event) {\n      if (dom.hasClass(link, \"wysihtml5-command-disabled\")) {\n        event.preventDefault();\n      }\n      \n      event.stopPropagation();\n    });\n  };\n})(wysihtml5);/**\n * Toolbar\n *\n * @param {Object} parent Reference to instance of Editor instance\n * @param {Element} container Reference to the toolbar container element\n *\n * @example\n *    <div id=\"toolbar\">\n *      <a data-wysihtml5-command=\"createLink\">insert link</a>\n *      <a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h1\">insert h1</a>\n *    </div>\n *\n *    <script>\n *      var toolbar = new wysihtml5.toolbar.Toolbar(editor, document.getElementById(\"toolbar\"));\n *    </script>\n */\n(function(wysihtml5) {\n  var CLASS_NAME_COMMAND_DISABLED   = \"wysihtml5-command-disabled\",\n      CLASS_NAME_COMMANDS_DISABLED  = \"wysihtml5-commands-disabled\",\n      CLASS_NAME_COMMAND_ACTIVE     = \"wysihtml5-command-active\",\n      CLASS_NAME_ACTION_ACTIVE      = \"wysihtml5-action-active\",\n      dom                           = wysihtml5.dom;\n  \n  wysihtml5.toolbar.Toolbar = Base.extend(\n    /** @scope wysihtml5.toolbar.Toolbar.prototype */ {\n    constructor: function(editor, container) {\n      this.editor     = editor;\n      this.container  = typeof(container) === \"string\" ? document.getElementById(container) : container;\n      this.composer   = editor.composer;\n\n      this._getLinks(\"command\");\n      this._getLinks(\"action\");\n\n      this._observe();\n      this.show();\n      \n      var speechInputLinks  = this.container.querySelectorAll(\"[data-wysihtml5-command=insertSpeech]\"),\n          length            = speechInputLinks.length,\n          i                 = 0;\n      for (; i<length; i++) {\n        new wysihtml5.toolbar.Speech(this, speechInputLinks[i]);\n      }\n    },\n\n    _getLinks: function(type) {\n      var links   = this[type + \"Links\"] = wysihtml5.lang.array(this.container.querySelectorAll(\"[data-wysihtml5-\" + type + \"]\")).get(),\n          length  = links.length,\n          i       = 0,\n          mapping = this[type + \"Mapping\"] = {},\n          link,\n          group,\n          name,\n          value,\n          dialog;\n      for (; i<length; i++) {\n        link    = links[i];\n        name    = link.getAttribute(\"data-wysihtml5-\" + type);\n        value   = link.getAttribute(\"data-wysihtml5-\" + type + \"-value\");\n        group   = this.container.querySelector(\"[data-wysihtml5-\" + type + \"-group='\" + name + \"']\");\n        dialog  = this._getDialog(link, name);\n        \n        mapping[name + \":\" + value] = {\n          link:   link,\n          group:  group,\n          name:   name,\n          value:  value,\n          dialog: dialog,\n          state:  false\n        };\n      }\n    },\n\n    _getDialog: function(link, command) {\n      var that          = this,\n          dialogElement = this.container.querySelector(\"[data-wysihtml5-dialog='\" + command + \"']\"),\n          dialog,\n          caretBookmark;\n      \n      if (dialogElement) {\n        dialog = new wysihtml5.toolbar.Dialog(link, dialogElement);\n\n        dialog.observe(\"show\", function() {\n          caretBookmark = that.composer.selection.getBookmark();\n\n          that.editor.fire(\"show:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n\n        dialog.observe(\"save\", function(attributes) {\n          if (caretBookmark) {\n            that.composer.selection.setBookmark(caretBookmark);\n          }\n          that._execCommand(command, attributes);\n          \n          that.editor.fire(\"save:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n\n        dialog.observe(\"cancel\", function() {\n          that.editor.focus(false);\n          that.editor.fire(\"cancel:dialog\", { command: command, dialogContainer: dialogElement, commandLink: link });\n        });\n      }\n      return dialog;\n    },\n\n    /**\n     * @example\n     *    var toolbar = new wysihtml5.Toolbar();\n     *    // Insert a <blockquote> element or wrap current selection in <blockquote>\n     *    toolbar.execCommand(\"formatBlock\", \"blockquote\");\n     */\n    execCommand: function(command, commandValue) {\n      if (this.commandsDisabled) {\n        return;\n      }\n\n      var commandObj = this.commandMapping[command + \":\" + commandValue];\n\n      // Show dialog when available\n      if (commandObj && commandObj.dialog && !commandObj.state) {\n        commandObj.dialog.show();\n      } else {\n        this._execCommand(command, commandValue);\n      }\n    },\n\n    _execCommand: function(command, commandValue) {\n      // Make sure that composer is focussed (false => don't move caret to the end)\n      this.editor.focus(false);\n\n      this.composer.commands.exec(command, commandValue);\n      this._updateLinkStates();\n    },\n\n    execAction: function(action) {\n      var editor = this.editor;\n      switch(action) {\n        case \"change_view\":\n          if (editor.currentView === editor.textarea) {\n            editor.fire(\"change_view\", \"composer\");\n          } else {\n            editor.fire(\"change_view\", \"textarea\");\n          }\n          break;\n      }\n    },\n\n    _observe: function() {\n      var that      = this,\n          editor    = this.editor,\n          container = this.container,\n          links     = this.commandLinks.concat(this.actionLinks),\n          length    = links.length,\n          i         = 0;\n      \n      for (; i<length; i++) {\n        // 'javascript:;' and unselectable=on Needed for IE, but done in all browsers to make sure that all get the same css applied\n        // (you know, a:link { ... } doesn't match anchors with missing href attribute)\n        dom.setAttributes({\n          href:         \"javascript:;\",\n          unselectable: \"on\"\n        }).on(links[i]);\n      }\n\n      // Needed for opera\n      dom.delegate(container, \"[data-wysihtml5-command]\", \"mousedown\", function(event) { event.preventDefault(); });\n      \n      dom.delegate(container, \"[data-wysihtml5-command]\", \"click\", function(event) {\n        var link          = this,\n            command       = link.getAttribute(\"data-wysihtml5-command\"),\n            commandValue  = link.getAttribute(\"data-wysihtml5-command-value\");\n        that.execCommand(command, commandValue);\n        event.preventDefault();\n      });\n\n      dom.delegate(container, \"[data-wysihtml5-action]\", \"click\", function(event) {\n        var action = this.getAttribute(\"data-wysihtml5-action\");\n        that.execAction(action);\n        event.preventDefault();\n      });\n\n      editor.observe(\"focus:composer\", function() {\n        that.bookmark = null;\n        clearInterval(that.interval);\n        that.interval = setInterval(function() { that._updateLinkStates(); }, 500);\n      });\n\n      editor.observe(\"blur:composer\", function() {\n        clearInterval(that.interval);\n      });\n\n      editor.observe(\"destroy:composer\", function() {\n        clearInterval(that.interval);\n      });\n\n      editor.observe(\"change_view\", function(currentView) {\n        // Set timeout needed in order to let the blur event fire first\n        setTimeout(function() {\n          that.commandsDisabled = (currentView !== \"composer\");\n          that._updateLinkStates();\n          if (that.commandsDisabled) {\n            dom.addClass(container, CLASS_NAME_COMMANDS_DISABLED);\n          } else {\n            dom.removeClass(container, CLASS_NAME_COMMANDS_DISABLED);\n          }\n        }, 0);\n      });\n    },\n\n    _updateLinkStates: function() {\n      var element           = this.composer.element,\n          commandMapping    = this.commandMapping,\n          actionMapping     = this.actionMapping,\n          i,\n          state,\n          action,\n          command;\n      // every millisecond counts... this is executed quite often\n      for (i in commandMapping) {\n        command = commandMapping[i];\n        if (this.commandsDisabled) {\n          state = false;\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            command.dialog.hide();\n          }\n        } else {\n          state = this.composer.commands.state(command.name, command.value);\n          if (wysihtml5.lang.object(state).isArray()) {\n            // Grab first and only object/element in state array, otherwise convert state into boolean\n            // to avoid showing a dialog for multiple selected elements which may have different attributes\n            // eg. when two links with different href are selected, the state will be an array consisting of both link elements\n            // but the dialog interface can only update one\n            state = state.length === 1 ? state[0] : true;\n          }\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_DISABLED);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_DISABLED);\n          }\n        }\n\n        if (command.state === state) {\n          continue;\n        }\n\n        command.state = state;\n        if (state) {\n          dom.addClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.addClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            if (typeof(state) === \"object\") {\n              command.dialog.show(state);\n            } else {\n              command.dialog.hide();\n            }\n          }\n        } else {\n          dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE);\n          if (command.group) {\n            dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE);\n          }\n          if (command.dialog) {\n            command.dialog.hide();\n          }\n        }\n      }\n      \n      for (i in actionMapping) {\n        action = actionMapping[i];\n        \n        if (action.name === \"change_view\") {\n          action.state = this.editor.currentView === this.editor.textarea;\n          if (action.state) {\n            dom.addClass(action.link, CLASS_NAME_ACTION_ACTIVE);\n          } else {\n            dom.removeClass(action.link, CLASS_NAME_ACTION_ACTIVE);\n          }\n        }\n      }\n    },\n\n    show: function() {\n      this.container.style.display = \"\";\n    },\n\n    hide: function() {\n      this.container.style.display = \"none\";\n    }\n  });\n  \n})(wysihtml5);\n/**\n * WYSIHTML5 Editor\n *\n * @param {Element} textareaElement Reference to the textarea which should be turned into a rich text interface\n * @param {Object} [config] See defaultConfig object below for explanation of each individual config option\n *\n * @events\n *    load\n *    beforeload (for internal use only)\n *    focus\n *    focus:composer\n *    focus:textarea\n *    blur\n *    blur:composer\n *    blur:textarea\n *    change\n *    change:composer\n *    change:textarea\n *    paste\n *    paste:composer\n *    paste:textarea\n *    newword:composer\n *    destroy:composer\n *    undo:composer\n *    redo:composer\n *    beforecommand:composer\n *    aftercommand:composer\n *    change_view\n */\n(function(wysihtml5) {\n  var undef;\n  \n  var defaultConfig = {\n    // Give the editor a name, the name will also be set as class name on the iframe and on the iframe's body \n    name:                 undef,\n    // Whether the editor should look like the textarea (by adopting styles)\n    style:                true,\n    // Id of the toolbar element, pass falsey value if you don't want any toolbar logic\n    toolbar:              undef,\n    // Whether urls, entered by the user should automatically become clickable-links\n    autoLink:             true,\n    // Object which includes parser rules to apply when html gets inserted via copy & paste\n    // See parser_rules/*.js for examples\n    parserRules:          { tags: { br: {}, span: {}, div: {}, p: {} }, classes: {} },\n    // Parser method to use when the user inserts content via copy & paste\n    parser:               wysihtml5.dom.parse,\n    // Class name which should be set on the contentEditable element in the created sandbox iframe, can be styled via the 'stylesheets' option\n    composerClassName:    \"wysihtml5-editor\",\n    // Class name to add to the body when the wysihtml5 editor is supported\n    bodyClassName:        \"wysihtml5-supported\",\n    // Array (or single string) of stylesheet urls to be loaded in the editor's iframe\n    stylesheets:          [],\n    // Placeholder text to use, defaults to the placeholder attribute on the textarea element\n    placeholderText:      undef,\n    // Whether the composer should allow the user to manually resize images, tables etc.\n    allowObjectResizing:  true,\n    // Whether the rich text editor should be rendered on touch devices (wysihtml5 >= 0.3.0 comes with basic support for iOS 5)\n    supportTouchDevices:  true\n  };\n  \n  wysihtml5.Editor = wysihtml5.lang.Dispatcher.extend(\n    /** @scope wysihtml5.Editor.prototype */ {\n    constructor: function(textareaElement, config) {\n      this.textareaElement  = typeof(textareaElement) === \"string\" ? document.getElementById(textareaElement) : textareaElement;\n      this.config           = wysihtml5.lang.object({}).merge(defaultConfig).merge(config).get();\n      this.textarea         = new wysihtml5.views.Textarea(this, this.textareaElement, this.config);\n      this.currentView      = this.textarea;\n      this._isCompatible    = wysihtml5.browser.supported();\n      \n      // Sort out unsupported/unwanted browsers here\n      if (!this._isCompatible || (!this.config.supportTouchDevices && wysihtml5.browser.isTouchDevice())) {\n        var that = this;\n        setTimeout(function() { that.fire(\"beforeload\").fire(\"load\"); }, 0);\n        return;\n      }\n      \n      // Add class name to body, to indicate that the editor is supported\n      wysihtml5.dom.addClass(document.body, this.config.bodyClassName);\n      \n      this.composer = new wysihtml5.views.Composer(this, this.textareaElement, this.config);\n      this.currentView = this.composer;\n      \n      if (typeof(this.config.parser) === \"function\") {\n        this._initParser();\n      }\n      \n      this.observe(\"beforeload\", function() {\n        this.synchronizer = new wysihtml5.views.Synchronizer(this, this.textarea, this.composer);\n        if (this.config.toolbar) {\n          this.toolbar = new wysihtml5.toolbar.Toolbar(this, this.config.toolbar);\n        }\n      });\n      \n      try {\n        console.log(\"Heya! This page is using wysihtml5 for rich text editing. Check out https://github.com/xing/wysihtml5\");\n      } catch(e) {}\n    },\n    \n    isCompatible: function() {\n      return this._isCompatible;\n    },\n\n    clear: function() {\n      this.currentView.clear();\n      return this;\n    },\n\n    getValue: function(parse) {\n      return this.currentView.getValue(parse);\n    },\n\n    setValue: function(html, parse) {\n      if (!html) {\n        return this.clear();\n      }\n      this.currentView.setValue(html, parse);\n      return this;\n    },\n\n    focus: function(setToEnd) {\n      this.currentView.focus(setToEnd);\n      return this;\n    },\n\n    /**\n     * Deactivate editor (make it readonly)\n     */\n    disable: function() {\n      this.currentView.disable();\n      return this;\n    },\n    \n    /**\n     * Activate editor\n     */\n    enable: function() {\n      this.currentView.enable();\n      return this;\n    },\n    \n    isEmpty: function() {\n      return this.currentView.isEmpty();\n    },\n    \n    hasPlaceholderSet: function() {\n      return this.currentView.hasPlaceholderSet();\n    },\n    \n    parse: function(htmlOrElement) {\n      var returnValue = this.config.parser(htmlOrElement, this.config.parserRules, this.composer.sandbox.getDocument(), true);\n      if (typeof(htmlOrElement) === \"object\") {\n        wysihtml5.quirks.redraw(htmlOrElement);\n      }\n      return returnValue;\n    },\n    \n    /**\n     * Prepare html parser logic\n     *  - Observes for paste and drop\n     */\n    _initParser: function() {\n      this.observe(\"paste:composer\", function() {\n        var keepScrollPosition  = true,\n            that                = this;\n        that.composer.selection.executeAndRestore(function() {\n          wysihtml5.quirks.cleanPastedHTML(that.composer.element);\n          that.parse(that.composer.element);\n        }, keepScrollPosition);\n      });\n      \n      this.observe(\"paste:textarea\", function() {\n        var value   = this.textarea.getValue(),\n            newValue;\n        newValue = this.parse(value);\n        this.textarea.setValue(newValue);\n      });\n    }\n  });\n})(wysihtml5);"
  },
  {
    "path": "target/mongo/assets/chart-master/Chart.js",
    "content": "/*!\n * Chart.js\n * http://chartjs.org/\n *\n * Copyright 2013 Nick Downie\n * Released under the MIT license\n * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md\n */\n\n//Define the global Chart Variable as a class.\nwindow.Chart = function(context){\n\n\tvar chart = this;\n\t\n\t\n\t//Easing functions adapted from Robert Penner's easing equations\n\t//http://www.robertpenner.com/easing/\n\t\n\tvar animationOptions = {\n\t\tlinear : function (t){\n\t\t\treturn t;\n\t\t},\n\t\teaseInQuad: function (t) {\n\t\t\treturn t*t;\n\t\t},\n\t\teaseOutQuad: function (t) {\n\t\t\treturn -1 *t*(t-2);\n\t\t},\n\t\teaseInOutQuad: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t;\n\t\t\treturn -1/2 * ((--t)*(t-2) - 1);\n\t\t},\n\t\teaseInCubic: function (t) {\n\t\t\treturn t*t*t;\n\t\t},\n\t\teaseOutCubic: function (t) {\n\t\t\treturn 1*((t=t/1-1)*t*t + 1);\n\t\t},\n\t\teaseInOutCubic: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t;\n\t\t\treturn 1/2*((t-=2)*t*t + 2);\n\t\t},\n\t\teaseInQuart: function (t) {\n\t\t\treturn t*t*t*t;\n\t\t},\n\t\teaseOutQuart: function (t) {\n\t\t\treturn -1 * ((t=t/1-1)*t*t*t - 1);\n\t\t},\n\t\teaseInOutQuart: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t*t;\n\t\t\treturn -1/2 * ((t-=2)*t*t*t - 2);\n\t\t},\n\t\teaseInQuint: function (t) {\n\t\t\treturn 1*(t/=1)*t*t*t*t;\n\t\t},\n\t\teaseOutQuint: function (t) {\n\t\t\treturn 1*((t=t/1-1)*t*t*t*t + 1);\n\t\t},\n\t\teaseInOutQuint: function (t) {\n\t\t\tif ((t/=1/2) < 1) return 1/2*t*t*t*t*t;\n\t\t\treturn 1/2*((t-=2)*t*t*t*t + 2);\n\t\t},\n\t\teaseInSine: function (t) {\n\t\t\treturn -1 * Math.cos(t/1 * (Math.PI/2)) + 1;\n\t\t},\n\t\teaseOutSine: function (t) {\n\t\t\treturn 1 * Math.sin(t/1 * (Math.PI/2));\n\t\t},\n\t\teaseInOutSine: function (t) {\n\t\t\treturn -1/2 * (Math.cos(Math.PI*t/1) - 1);\n\t\t},\n\t\teaseInExpo: function (t) {\n\t\t\treturn (t==0) ? 1 : 1 * Math.pow(2, 10 * (t/1 - 1));\n\t\t},\n\t\teaseOutExpo: function (t) {\n\t\t\treturn (t==1) ? 1 : 1 * (-Math.pow(2, -10 * t/1) + 1);\n\t\t},\n\t\teaseInOutExpo: function (t) {\n\t\t\tif (t==0) return 0;\n\t\t\tif (t==1) return 1;\n\t\t\tif ((t/=1/2) < 1) return 1/2 * Math.pow(2, 10 * (t - 1));\n\t\t\treturn 1/2 * (-Math.pow(2, -10 * --t) + 2);\n\t\t\t},\n\t\teaseInCirc: function (t) {\n\t\t\tif (t>=1) return t;\n\t\t\treturn -1 * (Math.sqrt(1 - (t/=1)*t) - 1);\n\t\t},\n\t\teaseOutCirc: function (t) {\n\t\t\treturn 1 * Math.sqrt(1 - (t=t/1-1)*t);\n\t\t},\n\t\teaseInOutCirc: function (t) {\n\t\t\tif ((t/=1/2) < 1) return -1/2 * (Math.sqrt(1 - t*t) - 1);\n\t\t\treturn 1/2 * (Math.sqrt(1 - (t-=2)*t) + 1);\n\t\t},\n\t\teaseInElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1)==1) return 1;  if (!p) p=1*.3;\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\treturn -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p ));\n\t\t},\n\t\teaseOutElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1)==1) return 1;  if (!p) p=1*.3;\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\treturn a*Math.pow(2,-10*t) * Math.sin( (t*1-s)*(2*Math.PI)/p ) + 1;\n\t\t},\n\t\teaseInOutElastic: function (t) {\n\t\t\tvar s=1.70158;var p=0;var a=1;\n\t\t\tif (t==0) return 0;  if ((t/=1/2)==2) return 1;  if (!p) p=1*(.3*1.5);\n\t\t\tif (a < Math.abs(1)) { a=1; var s=p/4; }\n\t\t\telse var s = p/(2*Math.PI) * Math.asin (1/a);\n\t\t\tif (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p ));\n\t\t\treturn a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*1-s)*(2*Math.PI)/p )*.5 + 1;\n\t\t},\n\t\teaseInBack: function (t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1*(t/=1)*t*((s+1)*t - s);\n\t\t},\n\t\teaseOutBack: function (t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1*((t=t/1-1)*t*((s+1)*t + s) + 1);\n\t\t},\n\t\teaseInOutBack: function (t) {\n\t\t\tvar s = 1.70158; \n\t\t\tif ((t/=1/2) < 1) return 1/2*(t*t*(((s*=(1.525))+1)*t - s));\n\t\t\treturn 1/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2);\n\t\t},\n\t\teaseInBounce: function (t) {\n\t\t\treturn 1 - animationOptions.easeOutBounce (1-t);\n\t\t},\n\t\teaseOutBounce: function (t) {\n\t\t\tif ((t/=1) < (1/2.75)) {\n\t\t\t\treturn 1*(7.5625*t*t);\n\t\t\t} else if (t < (2/2.75)) {\n\t\t\t\treturn 1*(7.5625*(t-=(1.5/2.75))*t + .75);\n\t\t\t} else if (t < (2.5/2.75)) {\n\t\t\t\treturn 1*(7.5625*(t-=(2.25/2.75))*t + .9375);\n\t\t\t} else {\n\t\t\t\treturn 1*(7.5625*(t-=(2.625/2.75))*t + .984375);\n\t\t\t}\n\t\t},\n\t\teaseInOutBounce: function (t) {\n\t\t\tif (t < 1/2) return animationOptions.easeInBounce (t*2) * .5;\n\t\t\treturn animationOptions.easeOutBounce (t*2-1) * .5 + 1*.5;\n\t\t}\n\t};\n\n\t//Variables global to the chart\n\tvar width = context.canvas.width;\n\tvar height = context.canvas.height;\n\n\n\t//High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale.\n\tif (window.devicePixelRatio) {\n\t\tcontext.canvas.style.width = width + \"px\";\n\t\tcontext.canvas.style.height = height + \"px\";\n\t\tcontext.canvas.height = height * window.devicePixelRatio;\n\t\tcontext.canvas.width = width * window.devicePixelRatio;\n\t\tcontext.scale(window.devicePixelRatio, window.devicePixelRatio);\n\t}\n\n\tthis.PolarArea = function(data,options){\n\t\n\t\tchart.PolarArea.defaults = {\n\t\t\tscaleOverlay : true,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleShowLine : true,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowLabelBackdrop : true,\n\t\t\tscaleBackdropColor : \"rgba(255,255,255,0.75)\",\n\t\t\tscaleBackdropPaddingY : 2,\n\t\t\tscaleBackdropPaddingX : 2,\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\n\t\t\n\t\tvar config = (options)? mergeChartConfig(chart.PolarArea.defaults,options) : chart.PolarArea.defaults;\n\t\t\n\t\treturn new PolarArea(data,config,context);\n\t};\n\n\tthis.Radar = function(data,options){\n\t\n\t\tchart.Radar.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleShowLine : true,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : false,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowLabelBackdrop : true,\n\t\t\tscaleBackdropColor : \"rgba(255,255,255,0.75)\",\n\t\t\tscaleBackdropPaddingY : 2,\n\t\t\tscaleBackdropPaddingX : 2,\n\t\t\tangleShowLineOut : true,\n\t\t\tangleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tangleLineWidth : 1,\t\t\t\n\t\t\tpointLabelFontFamily : \"'Arial'\",\n\t\t\tpointLabelFontStyle : \"normal\",\n\t\t\tpointLabelFontSize : 12,\n\t\t\tpointLabelFontColor : \"#666\",\n\t\t\tpointDot : true,\n\t\t\tpointDotRadius : 3,\n\t\t\tpointDotStrokeWidth : 1,\n\t\t\tdatasetStroke : true,\n\t\t\tdatasetStrokeWidth : 2,\n\t\t\tdatasetFill : true,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\n\t\t\n\t\tvar config = (options)? mergeChartConfig(chart.Radar.defaults,options) : chart.Radar.defaults;\n\n\t\treturn new Radar(data,config,context);\n\t};\n\t\n\tthis.Pie = function(data,options){\n\t\tchart.Pie.defaults = {\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\n\t\tvar config = (options)? mergeChartConfig(chart.Pie.defaults,options) : chart.Pie.defaults;\n\t\t\n\t\treturn new Pie(data,config,context);\t\t\t\t\n\t};\n\t\n\tthis.Doughnut = function(data,options){\n\t\n\t\tchart.Doughnut.defaults = {\n\t\t\tsegmentShowStroke : true,\n\t\t\tsegmentStrokeColor : \"#fff\",\n\t\t\tsegmentStrokeWidth : 2,\n\t\t\tpercentageInnerCutout : 50,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 100,\n\t\t\tanimationEasing : \"easeOutBounce\",\n\t\t\tanimateRotate : true,\n\t\t\tanimateScale : false,\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\n\t\tvar config = (options)? mergeChartConfig(chart.Doughnut.defaults,options) : chart.Doughnut.defaults;\n\t\t\n\t\treturn new Doughnut(data,config,context);\t\t\t\n\t\t\n\t};\n\n\tthis.Line = function(data,options){\n\t\n\t\tchart.Line.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowGridLines : true,\n\t\t\tscaleGridLineColor : \"rgba(0,0,0,.05)\",\n\t\t\tscaleGridLineWidth : 1,\n\t\t\tbezierCurve : true,\n\t\t\tpointDot : true,\n\t\t\tpointDotRadius : 4,\n\t\t\tpointDotStrokeWidth : 2,\n\t\t\tdatasetStroke : true,\n\t\t\tdatasetStrokeWidth : 2,\n\t\t\tdatasetFill : true,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\t\tvar config = (options) ? mergeChartConfig(chart.Line.defaults,options) : chart.Line.defaults;\n\t\t\n\t\treturn new Line(data,config,context);\n\t}\n\t\n\tthis.Bar = function(data,options){\n\t\tchart.Bar.defaults = {\n\t\t\tscaleOverlay : false,\n\t\t\tscaleOverride : false,\n\t\t\tscaleSteps : null,\n\t\t\tscaleStepWidth : null,\n\t\t\tscaleStartValue : null,\n\t\t\tscaleLineColor : \"rgba(0,0,0,.1)\",\n\t\t\tscaleLineWidth : 1,\n\t\t\tscaleShowLabels : true,\n\t\t\tscaleLabel : \"<%=value%>\",\n\t\t\tscaleFontFamily : \"'Arial'\",\n\t\t\tscaleFontSize : 12,\n\t\t\tscaleFontStyle : \"normal\",\n\t\t\tscaleFontColor : \"#666\",\n\t\t\tscaleShowGridLines : true,\n\t\t\tscaleGridLineColor : \"rgba(0,0,0,.05)\",\n\t\t\tscaleGridLineWidth : 1,\n\t\t\tbarShowStroke : true,\n\t\t\tbarStrokeWidth : 2,\n\t\t\tbarValueSpacing : 5,\n\t\t\tbarDatasetSpacing : 1,\n\t\t\tanimation : true,\n\t\t\tanimationSteps : 60,\n\t\t\tanimationEasing : \"easeOutQuart\",\n\t\t\tonAnimationComplete : null\n\t\t};\t\t\n\t\tvar config = (options) ? mergeChartConfig(chart.Bar.defaults,options) : chart.Bar.defaults;\n\t\t\n\t\treturn new Bar(data,config,context);\t\t\n\t}\n\t\n\tvar clear = function(c){\n\t\tc.clearRect(0, 0, width, height);\n\t};\n\n\tvar PolarArea = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString;\t\t\n\t\t\n\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : null;\n\n\t\t//Check and set the scale\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = maxSize/(calculatedScale.steps);\n\n\t\t//Wrap in an animation loop wrapper\n\t\tanimationLoop(config,drawScale,drawAllSegments,ctx);\n\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = (Min([width,height])/2);\n\t\t\t//Remove whatever is larger - the font size or line width.\n\t\t\t\n\t\t\tmaxSize -= Max([config.scaleFontSize*0.5,config.scaleLineWidth*0.5]);\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize*2;\n\t\t\t//If we're drawing the backdrop - add the Y padding to the label height and remove from drawing region.\n\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\tlabelHeight += (2 * config.scaleBackdropPaddingY);\n\t\t\t\tmaxSize -= config.scaleBackdropPaddingY*1.5;\n\t\t\t}\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t//If the label height is less than 5, set it to 5 so we don't have lines on top of each other.\n\t\t\tlabelHeight = Default(labelHeight,5);\n\t\t}\n\t\tfunction drawScale(){\n\t\t\tfor (var i=0; i<calculatedScale.steps; i++){\n\t\t\t\t//If the line object is there\n\t\t\t\tif (config.scaleShowLine){\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(width/2, height/2, scaleHop * (i + 1), 0, (Math.PI * 2), true);\n\t\t\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize + \"px \" + config.scaleFontFamily;\n \t\t\t\t\tvar label =  calculatedScale.labels[i];\n\t\t\t\t\t//If the backdrop object is within the font object\n\t\t\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\t\t\tvar textWidth = ctx.measureText(label).width;\n\t\t\t\t\t\tctx.fillStyle = config.scaleBackdropColor;\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.rect(\n\t\t\t\t\t\t\tMath.round(width/2 - textWidth/2 - config.scaleBackdropPaddingX),     //X\n\t\t\t\t\t\t\tMath.round(height/2 - (scaleHop * (i + 1)) - config.scaleFontSize*0.5 - config.scaleBackdropPaddingY),//Y\n\t\t\t\t\t\t\tMath.round(textWidth + (config.scaleBackdropPaddingX*2)), //Width\n\t\t\t\t\t\t\tMath.round(config.scaleFontSize + (config.scaleBackdropPaddingY*2)) //Height\n\t\t\t\t\t\t);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t}\n\t\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\t\t\tctx.fillText(label,width/2,height/2 - (scaleHop * (i + 1)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction drawAllSegments(animationDecimal){\n\t\t\tvar startAngle = -Math.PI/2,\n\t\t\tangleStep = (Math.PI*2)/data.length,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i=0; i<data.length; i++){\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * calculateOffset(data[i].value,calculatedScale,scaleHop),startAngle, startAngle + rotateAnimation*angleStep, false);\n\t\t\t\tctx.lineTo(width/2,height/2);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tstartAngle += rotateAnimation*angleStep;\n\t\t\t}\n\t\t}\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tif (data[i].value > upperValue) {upperValue = data[i].value;}\n\t\t\t\tif (data[i].value < lowerValue) {lowerValue = data[i].value;}\n\t\t\t};\n\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\n\t\t}\n\t}\n\n\tvar Radar = function (data,config,ctx) {\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString;\t\n\t\t\t\n\t\t//If no labels are defined set to an empty array, so referencing length for looping doesn't blow up.\n\t\tif (!data.labels) data.labels = [];\n\t\t\n\t\tcalculateDrawingSizes();\n\n\t\tvar valueBounds = getValueBounds();\n\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : null;\n\n\t\t//Check and set the scale\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = maxSize/(calculatedScale.steps);\n\t\t\n\t\tanimationLoop(config,drawScale,drawAllDataPoints,ctx);\n\t\t\n\t\t//Radar specific functions.\n\t\tfunction drawAllDataPoints(animationDecimal){\n\t\t\tvar rotationDegree = (2*Math.PI)/data.datasets[0].data.length;\n\n\t\t\tctx.save();\n\t\t\t//translate to the centre of the canvas.\n\t\t\tctx.translate(width/2,height/2);\n\t\t\t\n\t\t\t//We accept multiple data sets for radar charts, so show loop through each set\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tctx.moveTo(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[0],calculatedScale,scaleHop)));\n\t\t\t\tfor (var j=1; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tctx.rotate(rotationDegree);\t\n\t\t\t\t\tctx.lineTo(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)));\n\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tctx.lineWidth = config.datasetStrokeWidth;\n\t\t\t\tctx.fill();\n\t\t\t\tctx.stroke();\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\tif (config.pointDot){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].pointColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].pointStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.pointDotStrokeWidth;\n\t\t\t\t\tfor (var k=0; k<data.datasets[i].data.length; k++){\n\t\t\t\t\t\tctx.rotate(rotationDegree);\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.arc(0,animationDecimal*(-1*calculateOffset(data.datasets[i].data[k],calculatedScale,scaleHop)),config.pointDotRadius,2*Math.PI,false);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.rotate(rotationDegree);\n\t\t\t\t\n\t\t\t}\n\t\t\tctx.restore();\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction drawScale(){\n\t\t\tvar rotationDegree = (2*Math.PI)/data.datasets[0].data.length;\n\t\t\tctx.save();\n\t\t    ctx.translate(width / 2, height / 2);\t\n\t\t\t\n\t\t\tif (config.angleShowLineOut){\n\t\t\t\tctx.strokeStyle = config.angleLineColor;\t\t    \t    \n\t\t\t\tctx.lineWidth = config.angleLineWidth;\n\t\t\t\tfor (var h=0; h<data.datasets[0].data.length; h++){\n\t\t\t\t\t\n\t\t\t\t    ctx.rotate(rotationDegree);\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0);\n\t\t\t\t\tctx.lineTo(0,-maxSize);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i=0; i<calculatedScale.steps; i++){\n\t\t\t\tctx.beginPath();\n\t\t\t\t\n\t\t\t\tif(config.scaleShowLine){\n\t\t\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\t\t\tctx.moveTo(0,-scaleHop * (i+1));\t\t\t\t\t\n\t\t\t\t\tfor (var j=0; j<data.datasets[0].data.length; j++){\n\t\t\t\t\t    ctx.rotate(rotationDegree);\n\t\t\t\t\t\tctx.lineTo(0,-scaleHop * (i+1));\n\t\t\t\t\t}\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.stroke();\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (config.scaleShowLabels){\t\t\t\t\n\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily; \n\t\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\t\n\t\t\t\t\tif (config.scaleShowLabelBackdrop){\n\t\t\t\t\t\tvar textWidth = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\t\tctx.fillStyle = config.scaleBackdropColor;\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.rect(\n\t\t\t\t\t\t\tMath.round(- textWidth/2 - config.scaleBackdropPaddingX),     //X\n\t\t\t\t\t\t\tMath.round((-scaleHop * (i + 1)) - config.scaleFontSize*0.5 - config.scaleBackdropPaddingY),//Y\n\t\t\t\t\t\t\tMath.round(textWidth + (config.scaleBackdropPaddingX*2)), //Width\n\t\t\t\t\t\t\tMath.round(config.scaleFontSize + (config.scaleBackdropPaddingY*2)) //Height\n\t\t\t\t\t\t);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\t\t\tctx.fillText(calculatedScale.labels[i],0,-scaleHop*(i+1));\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tfor (var k=0; k<data.labels.length; k++){\t\t\t\t\n\t\t\tctx.font = config.pointLabelFontStyle + \" \" + config.pointLabelFontSize+\"px \" + config.pointLabelFontFamily;\n\t\t\tctx.fillStyle = config.pointLabelFontColor;\n\t\t\t\tvar opposite = Math.sin(rotationDegree*k) * (maxSize + config.pointLabelFontSize);\n\t\t\t\tvar adjacent = Math.cos(rotationDegree*k) * (maxSize + config.pointLabelFontSize);\n\t\t\t\t\n\t\t\t\tif(rotationDegree*k == Math.PI || rotationDegree*k == 0){\n\t\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\t}\n\t\t\t\telse if(rotationDegree*k > Math.PI){\n\t\t\t\t\tctx.textAlign = \"right\";\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.textAlign = \"left\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\n\t\t\t\tctx.fillText(data.labels[k],opposite,-adjacent);\n\t\t\t\t\n\t\t\t}\n\t\t\tctx.restore();\n\t\t};\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = (Min([width,height])/2);\n\n\t\t\tlabelHeight = config.scaleFontSize*2;\n\t\t\t\n\t\t\tvar labelLength = 0;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.font = config.pointLabelFontStyle + \" \" + config.pointLabelFontSize+\"px \" + config.pointLabelFontFamily;\n\t\t\t\tvar textMeasurement = ctx.measureText(data.labels[i]).width;\n\t\t\t\tif(textMeasurement>labelLength) labelLength = textMeasurement;\n\t\t\t}\n\t\t\t\n\t\t\t//Figure out whats the largest - the height of the text or the width of what's there, and minus it from the maximum usable size.\n\t\t\tmaxSize -= Max([labelLength,((config.pointLabelFontSize/2)*1.5)]);\t\t\t\t\n\t\t\t\n\t\t\tmaxSize -= config.pointLabelFontSize;\n\t\t\tmaxSize = CapValue(maxSize, null, 0);\n\t\t\tscaleHeight = maxSize;\n\t\t\t//If the label height is less than 5, set it to 5 so we don't have lines on top of each other.\n\t\t\tlabelHeight = Default(labelHeight,5);\n\t\t};\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\t\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif (data.datasets[i].data[j] > upperValue){upperValue = data.datasets[i].data[j]}\n\t\t\t\t\tif (data.datasets[i].data[j] < lowerValue){lowerValue = data.datasets[i].data[j]}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\n\t\t}\n\t}\n\n\tvar Pie = function(data,config,ctx){\n\t\tvar segmentTotal = 0;\n\t\t\n\t\t//In case we have a canvas that is not a square. Minus 5 pixels as padding round the edge.\n\t\tvar pieRadius = Min([height/2,width/2]) - 5;\n\t\t\n\t\tfor (var i=0; i<data.length; i++){\n\t\t\tsegmentTotal += data[i].value;\n\t\t}\n\t\t\n\t\t\n\t\tanimationLoop(config,null,drawPieSegments,ctx);\n\t\t\t\t\n\t\tfunction drawPieSegments (animationDecimal){\n\t\t\tvar cumulativeAngle = -Math.PI/2,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tvar segmentAngle = rotateAnimation * ((data[i].value/segmentTotal) * (Math.PI*2));\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * pieRadius,cumulativeAngle,cumulativeAngle + segmentAngle);\n\t\t\t\tctx.lineTo(width/2,height/2);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\t\t\t\t\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tcumulativeAngle += segmentAngle;\n\t\t\t}\t\t\t\n\t\t}\t\t\n\t}\n\n\tvar Doughnut = function(data,config,ctx){\n\t\tvar segmentTotal = 0;\n\t\t\n\t\t//In case we have a canvas that is not a square. Minus 5 pixels as padding round the edge.\n\t\tvar doughnutRadius = Min([height/2,width/2]) - 5;\n\t\t\n\t\tvar cutoutRadius = doughnutRadius * (config.percentageInnerCutout/100);\n\t\t\n\t\tfor (var i=0; i<data.length; i++){\n\t\t\tsegmentTotal += data[i].value;\n\t\t}\n\t\t\n\t\t\n\t\tanimationLoop(config,null,drawPieSegments,ctx);\n\t\t\n\t\t\n\t\tfunction drawPieSegments (animationDecimal){\n\t\t\tvar cumulativeAngle = -Math.PI/2,\n\t\t\tscaleAnimation = 1,\n\t\t\trotateAnimation = 1;\n\t\t\tif (config.animation) {\n\t\t\t\tif (config.animateScale) {\n\t\t\t\t\tscaleAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t\tif (config.animateRotate){\n\t\t\t\t\trotateAnimation = animationDecimal;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i=0; i<data.length; i++){\n\t\t\t\tvar segmentAngle = rotateAnimation * ((data[i].value/segmentTotal) * (Math.PI*2));\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * doughnutRadius,cumulativeAngle,cumulativeAngle + segmentAngle,false);\n\t\t\t\tctx.arc(width/2,height/2,scaleAnimation * cutoutRadius,cumulativeAngle + segmentAngle,cumulativeAngle,true);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fillStyle = data[i].color;\n\t\t\t\tctx.fill();\n\t\t\t\t\n\t\t\t\tif(config.segmentShowStroke){\n\t\t\t\t\tctx.lineWidth = config.segmentStrokeWidth;\n\t\t\t\t\tctx.strokeStyle = config.segmentStrokeColor;\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\tcumulativeAngle += segmentAngle;\n\t\t\t}\t\t\t\n\t\t}\t\t\t\n\t\t\n\t\t\n\t\t\n\t}\n\n\tvar Line = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString, valueHop,widestXLabel, xAxisLength,yAxisPosX,xAxisPosY, rotateLabels = 0;\n\t\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\t\t//Check and set the scale\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : \"\";\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = Math.floor(scaleHeight/calculatedScale.steps);\n\t\tcalculateXAxisSize();\n\t\tanimationLoop(config,drawScale,drawLines,ctx);\t\t\n\t\t\n\t\tfunction drawLines(animPc){\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tctx.lineWidth = config.datasetStrokeWidth;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX, xAxisPosY - animPc*(calculateOffset(data.datasets[i].data[0],calculatedScale,scaleHop)))\n\n\t\t\t\tfor (var j=1; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif (config.bezierCurve){\n\t\t\t\t\t\tctx.bezierCurveTo(xPos(j-0.5),yPos(i,j-1),xPos(j-0.5),yPos(i,j),xPos(j),yPos(i,j));\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tctx.lineTo(xPos(j),yPos(i,j));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tctx.stroke();\n\t\t\t\tif (config.datasetFill){\n\t\t\t\t\tctx.lineTo(yAxisPosX + (valueHop*(data.datasets[i].data.length-1)),xAxisPosY);\n\t\t\t\t\tctx.lineTo(yAxisPosX,xAxisPosY);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\t\tctx.fill();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.closePath();\n\t\t\t\t}\n\t\t\t\tif(config.pointDot){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].pointColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].pointStrokeColor;\n\t\t\t\t\tctx.lineWidth = config.pointDotStrokeWidth;\n\t\t\t\t\tfor (var k=0; k<data.datasets[i].data.length; k++){\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.arc(yAxisPosX + (valueHop *k),xAxisPosY - animPc*(calculateOffset(data.datasets[i].data[k],calculatedScale,scaleHop)),config.pointDotRadius,0,Math.PI*2,true);\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction yPos(dataSet,iteration){\n\t\t\t\treturn xAxisPosY - animPc*(calculateOffset(data.datasets[dataSet].data[iteration],calculatedScale,scaleHop));\t\t\t\n\t\t\t}\n\t\t\tfunction xPos(iteration){\n\t\t\t\treturn yAxisPosX + (valueHop * iteration);\n\t\t\t}\n\t\t}\n\t\tfunction drawScale(){\n\t\t\t//X axis line\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(width-widestXLabel/2+5,xAxisPosY);\n\t\t\tctx.lineTo(width-(widestXLabel/2)-xAxisLength-5,xAxisPosY);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\t\n\t\t\tif (rotateLabels > 0){\n\t\t\t\tctx.save();\n\t\t\t\tctx.textAlign = \"right\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t}\n\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.save();\n\t\t\t\tif (rotateLabels > 0){\n\t\t\t\t\tctx.translate(yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize);\n\t\t\t\t\tctx.rotate(-(rotateLabels * (Math.PI/180)));\n\t\t\t\t\tctx.fillText(data.labels[i], 0,0);\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telse{\n\t\t\t\t\tctx.fillText(data.labels[i], yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize+3);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX + i * valueHop, xAxisPosY+3);\n\t\t\t\t\n\t\t\t\t//Check i isnt 0, so we dont go over the Y axis twice.\n\t\t\t\tif(config.scaleShowGridLines && i>0){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\t\t\t\t\t\n\t\t\t\t\tctx.lineTo(yAxisPosX + i * valueHop, 5);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX + i * valueHop, xAxisPosY+3);\t\t\t\t\n\t\t\t\t}\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\t\n\t\t\t//Y axis\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(yAxisPosX,xAxisPosY+5);\n\t\t\tctx.lineTo(yAxisPosX,5);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\tctx.textAlign = \"right\";\n\t\t\tctx.textBaseline = \"middle\";\n\t\t\tfor (var j=0; j<calculatedScale.steps; j++){\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX-3,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\tif (config.scaleShowGridLines){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\n\t\t\t\t\tctx.lineTo(yAxisPosX + xAxisLength + 5,xAxisPosY - ((j+1) * scaleHop));\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX-0.5,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.stroke();\n\t\t\t\t\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.fillText(calculatedScale.labels[j],yAxisPosX-8,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction calculateXAxisSize(){\n\t\t\tvar longestText = 1;\n\t\t\t//if we are showing the labels\n\t\t\tif (config.scaleShowLabels){\n\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\t\tfor (var i=0; i<calculatedScale.labels.length; i++){\n\t\t\t\t\tvar measuredText = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\tlongestText = (measuredText > longestText)? measuredText : longestText;\n\t\t\t\t}\n\t\t\t\t//Add a little extra padding from the y axis\n\t\t\t\tlongestText +=10;\n\t\t\t}\n\t\t\txAxisLength = width - longestText - widestXLabel;\n\t\t\tvalueHop = Math.floor(xAxisLength/(data.labels.length-1));\t\n\t\t\t\t\n\t\t\tyAxisPosX = width-widestXLabel/2-xAxisLength;\n\t\t\txAxisPosY = scaleHeight + config.scaleFontSize/2;\t\t\t\t\n\t\t}\t\t\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = height;\n\n\t\t\t//Need to check the X axis first - measure the length of each text metric, and figure out if we need to rotate by 45 degrees.\n\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\twidestXLabel = 1;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tvar textLength = ctx.measureText(data.labels[i]).width;\n\t\t\t\t//If the text length is longer - make that equal to longest text!\n\t\t\t\twidestXLabel = (textLength > widestXLabel)? textLength : widestXLabel;\n\t\t\t}\n\t\t\tif (width/data.labels.length < widestXLabel){\n\t\t\t\trotateLabels = 45;\n\t\t\t\tif (width/data.labels.length < Math.cos(rotateLabels) * widestXLabel){\n\t\t\t\t\trotateLabels = 90;\n\t\t\t\t\tmaxSize -= widestXLabel; \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tmaxSize -= Math.sin(rotateLabels) * widestXLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tmaxSize -= config.scaleFontSize;\n\t\t\t}\n\t\t\t\n\t\t\t//Add a little padding between the x line and the text\n\t\t\tmaxSize -= 5;\n\t\t\t\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize;\n\t\t\t\n\t\t\tmaxSize -= labelHeight;\n\t\t\t//Set 5 pixels greater than the font size to allow for a little padding from the X axis.\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t\n\t\t\t//Then get the area above we can safely draw on.\n\t\t\t\n\t\t}\t\t\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif ( data.datasets[i].data[j] > upperValue) { upperValue = data.datasets[i].data[j] };\n\t\t\t\t\tif ( data.datasets[i].data[j] < lowerValue) { lowerValue = data.datasets[i].data[j] };\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\t\n\t\t}\n\n\t\t\n\t}\n\t\n\tvar Bar = function(data,config,ctx){\n\t\tvar maxSize, scaleHop, calculatedScale, labelHeight, scaleHeight, valueBounds, labelTemplateString, valueHop,widestXLabel, xAxisLength,yAxisPosX,xAxisPosY,barWidth, rotateLabels = 0;\n\t\t\t\n\t\tcalculateDrawingSizes();\n\t\t\n\t\tvalueBounds = getValueBounds();\n\t\t//Check and set the scale\n\t\tlabelTemplateString = (config.scaleShowLabels)? config.scaleLabel : \"\";\n\t\tif (!config.scaleOverride){\n\t\t\t\n\t\t\tcalculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);\n\t\t}\n\t\telse {\n\t\t\tcalculatedScale = {\n\t\t\t\tsteps : config.scaleSteps,\n\t\t\t\tstepValue : config.scaleStepWidth,\n\t\t\t\tgraphMin : config.scaleStartValue,\n\t\t\t\tlabels : []\n\t\t\t}\n\t\t\tpopulateLabels(labelTemplateString, calculatedScale.labels,calculatedScale.steps,config.scaleStartValue,config.scaleStepWidth);\n\t\t}\n\t\t\n\t\tscaleHop = Math.floor(scaleHeight/calculatedScale.steps);\n\t\tcalculateXAxisSize();\n\t\tanimationLoop(config,drawScale,drawBars,ctx);\t\t\n\t\t\n\t\tfunction drawBars(animPc){\n\t\t\tctx.lineWidth = config.barStrokeWidth;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\t\tctx.fillStyle = data.datasets[i].fillColor;\n\t\t\t\t\tctx.strokeStyle = data.datasets[i].strokeColor;\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tvar barOffset = yAxisPosX + config.barValueSpacing + valueHop*j + barWidth*i + config.barDatasetSpacing*i + config.barStrokeWidth*i;\n\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(barOffset, xAxisPosY);\n\t\t\t\t\tctx.lineTo(barOffset, xAxisPosY - animPc*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)+(config.barStrokeWidth/2));\n\t\t\t\t\tctx.lineTo(barOffset + barWidth, xAxisPosY - animPc*calculateOffset(data.datasets[i].data[j],calculatedScale,scaleHop)+(config.barStrokeWidth/2));\n\t\t\t\t\tctx.lineTo(barOffset + barWidth, xAxisPosY);\n\t\t\t\t\tif(config.barShowStroke){\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tctx.fill();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\tfunction drawScale(){\n\t\t\t//X axis line\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(width-widestXLabel/2+5,xAxisPosY);\n\t\t\tctx.lineTo(width-(widestXLabel/2)-xAxisLength-5,xAxisPosY);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\t\n\t\t\tif (rotateLabels > 0){\n\t\t\t\tctx.save();\n\t\t\t\tctx.textAlign = \"right\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t}\n\t\t\tctx.fillStyle = config.scaleFontColor;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tctx.save();\n\t\t\t\tif (rotateLabels > 0){\n\t\t\t\t\tctx.translate(yAxisPosX + i*valueHop,xAxisPosY + config.scaleFontSize);\n\t\t\t\t\tctx.rotate(-(rotateLabels * (Math.PI/180)));\n\t\t\t\t\tctx.fillText(data.labels[i], 0,0);\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telse{\n\t\t\t\t\tctx.fillText(data.labels[i], yAxisPosX + i*valueHop + valueHop/2,xAxisPosY + config.scaleFontSize+3);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX + (i+1) * valueHop, xAxisPosY+3);\n\t\t\t\t\n\t\t\t\t//Check i isnt 0, so we dont go over the Y axis twice.\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\t\t\t\t\t\n\t\t\t\t\tctx.lineTo(yAxisPosX + (i+1) * valueHop, 5);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\t\n\t\t\t//Y axis\n\t\t\tctx.lineWidth = config.scaleLineWidth;\n\t\t\tctx.strokeStyle = config.scaleLineColor;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(yAxisPosX,xAxisPosY+5);\n\t\t\tctx.lineTo(yAxisPosX,5);\n\t\t\tctx.stroke();\n\t\t\t\n\t\t\tctx.textAlign = \"right\";\n\t\t\tctx.textBaseline = \"middle\";\n\t\t\tfor (var j=0; j<calculatedScale.steps; j++){\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(yAxisPosX-3,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\tif (config.scaleShowGridLines){\n\t\t\t\t\tctx.lineWidth = config.scaleGridLineWidth;\n\t\t\t\t\tctx.strokeStyle = config.scaleGridLineColor;\n\t\t\t\t\tctx.lineTo(yAxisPosX + xAxisLength + 5,xAxisPosY - ((j+1) * scaleHop));\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tctx.lineTo(yAxisPosX-0.5,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tctx.stroke();\n\t\t\t\tif (config.scaleShowLabels){\n\t\t\t\t\tctx.fillText(calculatedScale.labels[j],yAxisPosX-8,xAxisPosY - ((j+1) * scaleHop));\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t}\n\t\tfunction calculateXAxisSize(){\n\t\t\tvar longestText = 1;\n\t\t\t//if we are showing the labels\n\t\t\tif (config.scaleShowLabels){\n\t\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\t\tfor (var i=0; i<calculatedScale.labels.length; i++){\n\t\t\t\t\tvar measuredText = ctx.measureText(calculatedScale.labels[i]).width;\n\t\t\t\t\tlongestText = (measuredText > longestText)? measuredText : longestText;\n\t\t\t\t}\n\t\t\t\t//Add a little extra padding from the y axis\n\t\t\t\tlongestText +=10;\n\t\t\t}\n\t\t\txAxisLength = width - longestText - widestXLabel;\n\t\t\tvalueHop = Math.floor(xAxisLength/(data.labels.length));\t\n\t\t\t\n\t\t\tbarWidth = (valueHop - config.scaleGridLineWidth*2 - (config.barValueSpacing*2) - (config.barDatasetSpacing*data.datasets.length-1) - ((config.barStrokeWidth/2)*data.datasets.length-1))/data.datasets.length;\n\t\t\t\n\t\t\tyAxisPosX = width-widestXLabel/2-xAxisLength;\n\t\t\txAxisPosY = scaleHeight + config.scaleFontSize/2;\t\t\t\t\n\t\t}\t\t\n\t\tfunction calculateDrawingSizes(){\n\t\t\tmaxSize = height;\n\n\t\t\t//Need to check the X axis first - measure the length of each text metric, and figure out if we need to rotate by 45 degrees.\n\t\t\tctx.font = config.scaleFontStyle + \" \" + config.scaleFontSize+\"px \" + config.scaleFontFamily;\n\t\t\twidestXLabel = 1;\n\t\t\tfor (var i=0; i<data.labels.length; i++){\n\t\t\t\tvar textLength = ctx.measureText(data.labels[i]).width;\n\t\t\t\t//If the text length is longer - make that equal to longest text!\n\t\t\t\twidestXLabel = (textLength > widestXLabel)? textLength : widestXLabel;\n\t\t\t}\n\t\t\tif (width/data.labels.length < widestXLabel){\n\t\t\t\trotateLabels = 45;\n\t\t\t\tif (width/data.labels.length < Math.cos(rotateLabels) * widestXLabel){\n\t\t\t\t\trotateLabels = 90;\n\t\t\t\t\tmaxSize -= widestXLabel; \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tmaxSize -= Math.sin(rotateLabels) * widestXLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\tmaxSize -= config.scaleFontSize;\n\t\t\t}\n\t\t\t\n\t\t\t//Add a little padding between the x line and the text\n\t\t\tmaxSize -= 5;\n\t\t\t\n\t\t\t\n\t\t\tlabelHeight = config.scaleFontSize;\n\t\t\t\n\t\t\tmaxSize -= labelHeight;\n\t\t\t//Set 5 pixels greater than the font size to allow for a little padding from the X axis.\n\t\t\t\n\t\t\tscaleHeight = maxSize;\n\t\t\t\n\t\t\t//Then get the area above we can safely draw on.\n\t\t\t\n\t\t}\t\t\n\t\tfunction getValueBounds() {\n\t\t\tvar upperValue = Number.MIN_VALUE;\n\t\t\tvar lowerValue = Number.MAX_VALUE;\n\t\t\tfor (var i=0; i<data.datasets.length; i++){\n\t\t\t\tfor (var j=0; j<data.datasets[i].data.length; j++){\n\t\t\t\t\tif ( data.datasets[i].data[j] > upperValue) { upperValue = data.datasets[i].data[j] };\n\t\t\t\t\tif ( data.datasets[i].data[j] < lowerValue) { lowerValue = data.datasets[i].data[j] };\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\tvar maxSteps = Math.floor((scaleHeight / (labelHeight*0.66)));\n\t\t\tvar minSteps = Math.floor((scaleHeight / labelHeight*0.5));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tmaxValue : upperValue,\n\t\t\t\tminValue : lowerValue,\n\t\t\t\tmaxSteps : maxSteps,\n\t\t\t\tminSteps : minSteps\n\t\t\t};\n\t\t\t\n\t\n\t\t}\n\t}\n\t\n\tfunction calculateOffset(val,calculatedScale,scaleHop){\n\t\tvar outerValue = calculatedScale.steps * calculatedScale.stepValue;\n\t\tvar adjustedValue = val - calculatedScale.graphMin;\n\t\tvar scalingFactor = CapValue(adjustedValue/outerValue,1,0);\n\t\treturn (scaleHop*calculatedScale.steps) * scalingFactor;\n\t}\n\t\n\tfunction animationLoop(config,drawScale,drawData,ctx){\n\t\tvar animFrameAmount = (config.animation)? 1/CapValue(config.animationSteps,Number.MAX_VALUE,1) : 1,\n\t\t\teasingFunction = animationOptions[config.animationEasing],\n\t\t\tpercentAnimComplete =(config.animation)? 0 : 1;\n\t\t\n\t\n\t\t\n\t\tif (typeof drawScale !== \"function\") drawScale = function(){};\n\t\t\n\t\trequestAnimFrame(animLoop);\n\t\t\n\t\tfunction animateFrame(){\n\t\t\tvar easeAdjustedAnimationPercent =(config.animation)? CapValue(easingFunction(percentAnimComplete),null,0) : 1;\n\t\t\tclear(ctx);\n\t\t\tif(config.scaleOverlay){\n\t\t\t\tdrawData(easeAdjustedAnimationPercent);\n\t\t\t\tdrawScale();\n\t\t\t} else {\n\t\t\t\tdrawScale();\n\t\t\t\tdrawData(easeAdjustedAnimationPercent);\n\t\t\t}\t\t\t\t\n\t\t}\n\t\tfunction animLoop(){\n\t\t\t//We need to check if the animation is incomplete (less than 1), or complete (1).\n\t\t\t\tpercentAnimComplete += animFrameAmount;\n\t\t\t\tanimateFrame();\t\n\t\t\t\t//Stop the loop continuing forever\n\t\t\t\tif (percentAnimComplete <= 1){\n\t\t\t\t\trequestAnimFrame(animLoop);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif (typeof config.onAnimationComplete == \"function\") config.onAnimationComplete();\n\t\t\t\t}\n\t\t\t\n\t\t}\t\t\n\t\t\n\t}\n\n\t//Declare global functions to be called within this namespace here.\n\t\n\t\n\t// shim layer with setTimeout fallback\n\tvar requestAnimFrame = (function(){\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\twindow.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t})();\n\n\tfunction calculateScale(drawingHeight,maxSteps,minSteps,maxValue,minValue,labelTemplateString){\n\t\t\tvar graphMin,graphMax,graphRange,stepValue,numberOfSteps,valueRange,rangeOrderOfMagnitude,decimalNum;\n\t\t\t\n\t\t\tvalueRange = maxValue - minValue;\n\t\t\t\n\t\t\trangeOrderOfMagnitude = calculateOrderOfMagnitude(valueRange);\n\n        \tgraphMin = Math.floor(minValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude);\n            \n            graphMax = Math.ceil(maxValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude);\n            \n            graphRange = graphMax - graphMin;\n            \n            stepValue = Math.pow(10, rangeOrderOfMagnitude);\n            \n\t        numberOfSteps = Math.round(graphRange / stepValue);\n\t        \n\t        //Compare number of steps to the max and min for that size graph, and add in half steps if need be.\t        \n\t        while(numberOfSteps < minSteps || numberOfSteps > maxSteps) {\n\t        \tif (numberOfSteps < minSteps){\n\t\t\t        stepValue /= 2;\n\t\t\t        numberOfSteps = Math.round(graphRange/stepValue);\n\t\t        }\n\t\t        else{\n\t\t\t        stepValue *=2;\n\t\t\t        numberOfSteps = Math.round(graphRange/stepValue);\n\t\t        }\n\t        };\n\n\t        var labels = [];\n\t        populateLabels(labelTemplateString, labels, numberOfSteps, graphMin, stepValue);\n\t\t\n\t        return {\n\t\t        steps : numberOfSteps,\n\t\t\t\tstepValue : stepValue,\n\t\t\t\tgraphMin : graphMin,\n\t\t\t\tlabels : labels\t\t        \n\t\t        \n\t        }\n\t\t\n\t\t\tfunction calculateOrderOfMagnitude(val){\n\t\t\t  return Math.floor(Math.log(val) / Math.LN10);\n\t\t\t}\t\t\n\n\n\t}\n\n    //Populate an array of all the labels by interpolating the string.\n    function populateLabels(labelTemplateString, labels, numberOfSteps, graphMin, stepValue) {\n        if (labelTemplateString) {\n            //Fix floating point errors by setting to fixed the on the same decimal as the stepValue.\n            for (var i = 1; i < numberOfSteps + 1; i++) {\n                labels.push(tmpl(labelTemplateString, {value: (graphMin + (stepValue * i)).toFixed(getDecimalPlaces(stepValue))}));\n            }\n        }\n    }\n\t\n\t//Max value from array\n\tfunction Max( array ){\n\t\treturn Math.max.apply( Math, array );\n\t};\n\t//Min value from array\n\tfunction Min( array ){\n\t\treturn Math.min.apply( Math, array );\n\t};\n\t//Default if undefined\n\tfunction Default(userDeclared,valueIfFalse){\n\t\tif(!userDeclared){\n\t\t\treturn valueIfFalse;\n\t\t} else {\n\t\t\treturn userDeclared;\n\t\t}\n\t};\n\t//Is a number function\n\tfunction isNumber(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t}\n\t//Apply cap a value at a high or low number\n\tfunction CapValue(valueToCap, maxValue, minValue){\n\t\tif(isNumber(maxValue)) {\n\t\t\tif( valueToCap > maxValue ) {\n\t\t\t\treturn maxValue;\n\t\t\t}\n\t\t}\n\t\tif(isNumber(minValue)){\n\t\t\tif ( valueToCap < minValue ){\n\t\t\t\treturn minValue;\n\t\t\t}\n\t\t}\n\t\treturn valueToCap;\n\t}\n\tfunction getDecimalPlaces (num){\n\t\tvar numberOfDecimalPlaces;\n\t\tif (num%1!=0){\n\t\t\treturn num.toString().split(\".\")[1].length\n\t\t}\n\t\telse{\n\t\t\treturn 0;\n\t\t}\n\t\t\n\t} \n\t\n\tfunction mergeChartConfig(defaults,userDefined){\n\t\tvar returnObj = {};\n\t    for (var attrname in defaults) { returnObj[attrname] = defaults[attrname]; }\n\t    for (var attrname in userDefined) { returnObj[attrname] = userDefined[attrname]; }\n\t    return returnObj;\n\t}\n\t\n\t//Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/\n\t  var cache = {};\n\t \n\t  function tmpl(str, data){\n\t    // Figure out if we're getting a template, or if we need to\n\t    // load the template - and be sure to cache the result.\n\t    var fn = !/\\W/.test(str) ?\n\t      cache[str] = cache[str] ||\n\t        tmpl(document.getElementById(str).innerHTML) :\n\t     \n\t      // Generate a reusable function that will serve as a template\n\t      // generator (and which will be cached).\n\t      new Function(\"obj\",\n\t        \"var p=[],print=function(){p.push.apply(p,arguments);};\" +\n\t       \n\t        // Introduce the data as local variables using with(){}\n\t        \"with(obj){p.push('\" +\n\t       \n\t        // Convert the template into pure JavaScript\n\t        str\n\t          .replace(/[\\r\\t\\n]/g, \" \")\n\t          .split(\"<%\").join(\"\\t\")\n\t          .replace(/((^|%>)[^\\t]*)'/g, \"$1\\r\")\n\t          .replace(/\\t=(.*?)%>/g, \"',$1,'\")\n\t          .split(\"\\t\").join(\"');\")\n\t          .split(\"%>\").join(\"p.push('\")\n\t          .split(\"\\r\").join(\"\\\\'\")\n\t      + \"');}return p.join('');\");\n\t   \n\t    // Provide some basic currying to the user\n\t    return data ? fn( data ) : fn;\n\t  };\n}\n\n\n"
  },
  {
    "path": "target/mongo/assets/chosen-bootstrap/chosen/chosen.css",
    "content": "/*\n*\n* Chosen for Bootstrap and Less\n*\n* Converted by @whitetruffle (http://www.twitter.com/whitetruffle)\n* from @joeylomanto's SASS fork (http://chosen-sass-bootstrap.herokuapp.com/)\n* Havest: @harvest\n*\n*/\n/*!\n * Bootstrap v2.1.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.chzn-container {\n  position: relative;\n  display: inline-block;\n  zoom: 1;\n  *display: inline;\n}\n.chzn-container .chzn-drop {\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);\n  background: #fff;\n  border: 1px solid #CCC;\n  position: absolute;\n  top: 29px;\n  left: 0;\n  z-index: 1010;\n  margin: 4px 0 0;\n}\n\n.chzn-container-single .chzn-single {\n  margin-top: 3px !important;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  background-color: #f6f6f6;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);\n  -moz-background-clip: padding;\n  background-color: #ffffff;\n  border: 1px solid #CCC;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n  position: relative;\n  height: 28px;\n  line-height: 29px;\n  padding: 0 0 0 8px;\n  color: #555555;\n  text-decoration: none;\n}\n.chzn-container-single .chzn-single span {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  margin-right: 26px;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n}\n.chzn-container-single .chzn-single abbr {\n  display: block;\n  position: absolute;\n  right: 26px;\n  top: 8px;\n  width: 12px;\n  height: 13px;\n  font-size: 1px;\n  background: url(\"chosen-sprite.png\") right top no-repeat;\n}\n.chzn-container-single .chzn-single abbr:hover {\n  background-position: right -11px;\n}\n.chzn-container-single .chzn-single div {\n  position: absolute;\n  right: 0;\n  top: 0;\n  display: block;\n  height: 100%;\n  width: 18px;\n}\n.chzn-container-single .chzn-single div b {\n  background: url(\"chosen-sprite.png\") no-repeat 0 2px;\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.chzn-container-single .chzn-search {\n  padding: 3px 4px;\n  position: relative;\n  margin: 0;\n  white-space: nowrap;\n  z-index: 1010;\n}\n.chzn-container-single .chzn-search input {\n  margin: 1px 0;\n  padding: 4px 20px 4px 5px;\n  outline: 0;\n}\n.chzn-container-single .chzn-default {\n  color: #999;\n}\n.chzn-container-single .chzn-drop {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  -moz-background-clip: padding;\n}\n.chzn-container-single.chzn-disabled .chzn-single abbr:hover {\n  background-position: right top;\n}\n.chzn-container-single-nosearch .chzn-search input {\n  position: absolute;\n  left: -9000px;\n}\n.chzn-container-multi .chzn-choices {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s;\n  -moz-transition: border linear 0.2s;\n  -o-transition: border linear 0.2s;\n  transition: border linear 0.2s;\n  -webkit-transition: box-shadow linear 0.2s;\n  -moz-transition: box-shadow linear 0.2s;\n  -o-transition: box-shadow linear 0.2s;\n  transition: box-shadow linear 0.2s;\n  background-color: #ffffff !important;\n  border: 1px solid #cccccc;\n  cursor: text;\n  overflow: hidden;\n  height: auto !important;\n  height: 1%;\n  position: relative;\n  display: block;\n  padding: 0;\n  margin: 0;\n  font-size: 14px;\n  line-height: 20px;\n  color: #555555;\n}\n.chzn-container-multi .chzn-choices li {\n  float: left;\n  list-style: none;\n}\n.chzn-container-multi .chzn-choices .search-field {\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n}\n.chzn-container-multi .chzn-choices .search-field input {\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  color: #555555;\n  background: transparent !important;\n  border: 0 !important;\n  font-family: sans-serif;\n  font-size: 100%;\n  height: 15px;\n  padding: 5px;\n  margin: 1px 0 2px;\n  outline: 0;\n}\n.chzn-container-multi .chzn-choices .search-field .default {\n  color: #999;\n}\n.chzn-container-multi .chzn-choices .search-choice {\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);\n  background-color: #f6f6f6;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding-box;\n  background-clip: padding-box;\n  -moz-background-clip: padding;\n  color: #555555;\n  border: 1px solid #999999;\n  line-height: 13px;\n  padding: 3px 20px 3px 5px;\n  margin: 3px 0 3px 5px;\n  position: relative;\n  cursor: default;\n}\n.chzn-container-multi .chzn-choices .search-choice .search-choice-close {\n  display: block;\n  position: absolute;\n  right: 3px;\n  top: 4px;\n  width: 12px;\n  height: 13px;\n  font-size: 1px;\n  background: url(\"chosen-sprite.png\") right top no-repeat;\n}\n.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {\n  background-position: right -11px;\n}\n.chzn-container-multi .chzn-choices .search-choice.search-choice-disabled {\n  background-color: #eeeeee;\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), color-stop(50%, #f0f0f0), to(#e8e8e8));\n  background-image: -webkit-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: -moz-linear-gradient(top, #f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: -o-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-image: linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe8e8e8', GradientType=0);\n  color: #666;\n  border: 1px solid #cccccc;\n  padding-right: 5px;\n}\n.chzn-container-multi .chzn-choices .search-choice-focus {\n  background: #d4d4d4;\n}\n.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {\n  background-position: right -11px;\n}\n.chzn-container .chzn-results {\n  margin: 0 4px 4px 0;\n  max-height: 240px;\n  padding: 0 0 0 4px;\n  position: relative;\n  overflow-x: hidden;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n}\n.chzn-container .chzn-results li {\n  display: none;\n  line-height: 15px;\n  padding: 5px 6px;\n  margin: 0;\n  list-style: none;\n}\n.chzn-container .chzn-results li em {\n  background: #feffde;\n  font-style: normal;\n}\n.chzn-container .chzn-results .no-results {\n  background: #f4f4f4;\n  display: list-item;\n}\n.chzn-container .chzn-results .group-result {\n  cursor: default;\n  color: #999;\n  font-weight: bold;\n}\n.chzn-container .chzn-results .group-option {\n  padding-left: 15px;\n}\n.chzn-container .chzn-results .active-result {\n  cursor: pointer;\n  display: list-item;\n}\n.chzn-container .chzn-results .highlighted {\n  background-color: #326dcc;\n  background-image: -moz-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3875d7), to(#2a62bc));\n  background-image: -webkit-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: -o-linear-gradient(top, #3875d7, #2a62bc);\n  background-image: linear-gradient(to bottom, #3875d7, #2a62bc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3875d7', endColorstr='#ff2a62bc', GradientType=0);\n  color: #fff;\n}\n.chzn-container .chzn-results .highlighted em {\n  background: transparent;\n}\n.chzn-container .chzn-results-scroll {\n  background: white;\n  margin: 0 4px;\n  position: absolute;\n  text-align: center;\n  width: 321px;\n  /* This should by dynamic with js */\n\n  z-index: 1;\n}\n.chzn-container .chzn-results-scroll span {\n  display: inline-block;\n  height: 17px;\n  text-indent: -5000px;\n  width: 9px;\n}\n.chzn-container .chzn-results-scroll-down {\n  bottom: 0;\n}\n.chzn-container .chzn-results-scroll-down span {\n  background: url(\"chosen-sprite.png\") no-repeat -4px -3px;\n}\n.chzn-container .chzn-results-scroll-up span {\n  background: url(\"chosen-sprite.png\") no-repeat -22px -3px;\n}\n.chzn-container-multi .chzn-results {\n  margin: 4px;\n  padding: 0;\n}\n.chzn-container-multi .chzn-drop .result-selected {\n  display: none;\n}\n.chzn-container-active .chzn-single {\n  border: 1px solid #CCC;\n}\n.chzn-container-active .chzn-single .chzn-drop {\n  margin-top: -29px;\n}\n.chzn-container-active .chzn-single-with-drop {\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  border-color: #CCC;\n}\n.chzn-container-active .chzn-single-with-drop div {\n  background: transparent;\n  border-left: none;\n}\n.chzn-container-active .chzn-single-with-drop div b {\n  background-position: -18px 1px;\n}\n.chzn-container-active .chzn-choices {\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  border: 1px solid rgba(82, 168, 236, 0.8);\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n\n}\n.chzn-container-active .chzn-choices .search-field input {\n  color: #111 !important;\n}\n.chzn-disabled {\n  opacity: 0.005;\n  filter: alpha(opacity=0.5);\n  cursor: default;\n}\n.chzn-disabled .chzn-single {\n  cursor: default;\n}\n.chzn-disabled .search-choice-close {\n  cursor: default;\n}\n.chzn-rtl {\n  text-align: right;\n}\n.chzn-rtl .chzn-single {\n  padding: 0 8px 0 0;\n  overflow: visible;\n}\n.chzn-rtl .chzn-single span {\n  margin-left: 26px;\n  margin-right: 0;\n  direction: rtl;\n}\n.chzn-rtl .chzn-single div {\n  left: 3px;\n  right: auto;\n}\n.chzn-rtl .chzn-single abbr {\n  left: 26px;\n  right: auto;\n}\n.chzn-rtl .chzn-choices li {\n  float: right;\n}\n.chzn-rtl .chzn-choices .search-field input {\n  direction: rtl;\n}\n.chzn-rtl .chzn-choices .search-choice {\n  padding: 3px 5px 3px 19px;\n  margin: 3px 5px 3px 0;\n}\n.chzn-rtl .chzn-choices .search-choice .search-choice-close {\n  left: 4px;\n  right: auto;\n  background-position: right top;\n}\n.chzn-rtl .chzn-results .group-option {\n  padding-left: 0;\n  padding-right: 15px;\n}\n.chzn-rtl .chzn-search input {\n  padding: 4px 5px 4px 20px;\n  direction: rtl;\n}\n.chzn-rtl.chzn-container-single .chzn-results {\n  margin: 0 0 4px 4px;\n  padding: 0 4px 0 0;\n}\n.chzn-rtl.chzn-container-active .chzn-single-with-drop div {\n  border-right: none;\n}\n"
  },
  {
    "path": "target/mongo/assets/ckeditor/ckeditor.js",
    "content": "﻿/*\nCopyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\nFor licensing, see LICENSE.html or http://ckeditor.com/license\n*/\n(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var b={timestamp:\"D08E\",version:\"4.0.1\",revision:\"d02739be4b\",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:\"unloaded\",basePath:function(){var a=window.CKEDITOR_BASEPATH||\"\";if(!a)for(var b=document.getElementsByTagName(\"script\"),d=0;d<b.length;d++){var c=b[d].src.match(/(^|.*[\\\\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\\?.*)?$/i);if(c){a=c[1];break}}-1==a.indexOf(\":/\")&&(a=0===a.indexOf(\"/\")?location.href.match(/^.*?:\\/\\/[^\\/]*/)[0]+a:location.href.match(/^[^\\?]*\\/(?:)/)[0]+\na);if(!a)throw'The CKEditor installation path could not be automatically detected. Please set the global variable \"CKEDITOR_BASEPATH\" before creating editor instances.';return a}(),getUrl:function(a){-1==a.indexOf(\":/\")&&0!==a.indexOf(\"/\")&&(a=this.basePath+a);this.timestamp&&(\"/\"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a))&&(a+=(0<=a.indexOf(\"?\")?\"&\":\"?\")+\"t=\"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener(\"DOMContentLoaded\",a,\n!1),b()):document.attachEvent&&\"complete\"===document.readyState&&(document.detachEvent(\"onreadystatechange\",a),b())}catch(d){}}function b(){for(var a;a=d.shift();)a()}var d=[];return function(b){d.push(b);\"complete\"===document.readyState&&setTimeout(a,1);if(1==d.length)if(document.addEventListener)document.addEventListener(\"DOMContentLoaded\",a,!1),window.addEventListener(\"load\",a,!1);else if(document.attachEvent){document.attachEvent(\"onreadystatechange\",a);window.attachEvent(\"onload\",a);b=!1;try{b=\n!window.frameElement}catch(e){}if(document.documentElement.doScroll&&b){var c=function(){try{document.documentElement.doScroll(\"left\")}catch(b){setTimeout(c,1);return}a()};c()}}}}()},c=window.CKEDITOR_GETURL;if(c){var a=b.url;b.url=function(f){return c.call(b,f)||a.call(b,f)}}return b}());\nCKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(b){var c=CKEDITOR.event.prototype,a;for(a in c)b[a]==void 0&&(b[a]=c[a])},CKEDITOR.event.prototype=function(){function b(f){var b=c(this);return b[f]||(b[f]=new a(f))}var c=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},a=function(a){this.name=a;this.listeners=[]};a.prototype={getListenerIndex:function(a){for(var b=0,d=this.listeners;b<d.length;b++)if(d[b].fn==a)return b;return-1}};\nreturn{define:function(a,e){var d=b.call(this,a);CKEDITOR.tools.extend(d,e,true)},on:function(a,e,d,c,k){function h(b,l,o,n){b={name:a,sender:this,editor:b,data:l,listenerData:c,stop:o,cancel:n,removeListener:m};return e.call(d,b)===false?false:b.data}function m(){o.removeListener(a,e)}var n=b.call(this,a);if(n.getListenerIndex(e)<0){n=n.listeners;d||(d=this);isNaN(k)&&(k=10);var o=this;h.fn=e;h.priority=k;for(var l=n.length-1;l>=0;l--)if(n[l].priority<=k){n.splice(l+1,0,h);return{removeListener:m}}n.unshift(h)}return{removeListener:m}},\nonce:function(){var a=arguments[1];arguments[1]=function(b){b.removeListener();return a.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},d=0,g=function(){d=1};return function(k,h,m){var n=c(this)[k],k=a,o=d;a=d=0;if(n){var l=n.listeners;if(l.length)for(var l=l.slice(0),j,q=0;q<l.length;q++){if(n.errorProof)try{j=l[q].call(this,\nm,h,b,g)}catch(y){}else j=l[q].call(this,m,h,b,g);j===false?d=1:typeof j!=\"undefined\"&&(h=j);if(a||d)break}}h=d?false:typeof h==\"undefined\"?true:h;a=k;d=o;return h}}(),fireOnce:function(a,b,d){b=this.fire(a,b,d);delete c(this)[a];return b},removeListener:function(a,b){var d=c(this)[a];if(d){var g=d.getListenerIndex(b);g>=0&&d.listeners.splice(g,1)}},removeAllListeners:function(){var a=c(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=c(this)[a])&&a.listeners.length>0}}}());\nCKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(b,c){b in{instanceReady:1,loaded:1}&&(this[b]=true);return CKEDITOR.event.prototype.fire.call(this,b,c,this)},CKEDITOR.editor.prototype.fireOnce=function(b,c){b in{instanceReady:1,loaded:1}&&(this[b]=true);return CKEDITOR.event.prototype.fireOnce.call(this,b,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));\nCKEDITOR.env||(CKEDITOR.env=function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,a={ie:eval(\"/*@cc_on!@*/false\"),opera:!!c&&c.version,webkit:b.indexOf(\" applewebkit/\")>-1,air:b.indexOf(\" adobeair/\")>-1,mac:b.indexOf(\"macintosh\")>-1,quirks:document.compatMode==\"BackCompat\",mobile:b.indexOf(\"mobile\")>-1,iOS:/(ipad|iphone|ipod)/.test(b),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,b=window.location.hostname;return a!=b&&a!=\"[\"+b+\"]\"},secure:location.protocol==\n\"https:\"};a.gecko=navigator.product==\"Gecko\"&&!a.webkit&&!a.opera;if(a.webkit)b.indexOf(\"chrome\")>-1?a.chrome=true:a.safari=true;var f=0;if(a.ie){f=a.quirks||!document.documentMode?parseFloat(b.match(/msie (\\d+)/)[1]):document.documentMode;a.ie9Compat=f==9;a.ie8Compat=f==8;a.ie7Compat=f==7;a.ie6Compat=f<7||a.quirks}if(a.gecko){var e=b.match(/rv:([\\d\\.]+)/);if(e){e=e[1].split(\".\");f=e[0]*1E4+(e[1]||0)*100+(e[2]||0)*1}}a.opera&&(f=parseFloat(c.version()));a.air&&(f=parseFloat(b.match(/ adobeair\\/(\\d+)/)[1]));\na.webkit&&(f=parseFloat(b.match(/ applewebkit\\/(\\d+)/)[1]));a.version=f;a.isCompatible=a.iOS&&f>=534||!a.mobile&&(a.ie&&f>6||a.gecko&&f>=10801||a.opera&&f>=9.5||a.air&&f>=1||a.webkit&&f>=522||false);a.cssClass=\"cke_browser_\"+(a.ie?\"ie\":a.gecko?\"gecko\":a.opera?\"opera\":a.webkit?\"webkit\":\"unknown\");if(a.quirks)a.cssClass=a.cssClass+\" cke_browser_quirks\";if(a.ie){a.cssClass=a.cssClass+(\" cke_browser_ie\"+(a.quirks||a.version<7?\"6\":a.version));if(a.quirks)a.cssClass=a.cssClass+\" cke_browser_iequirks\"}if(a.gecko)if(f<\n10900)a.cssClass=a.cssClass+\" cke_browser_gecko18\";else if(f<=11E3)a.cssClass=a.cssClass+\" cke_browser_gecko19\";if(a.air)a.cssClass=a.cssClass+\" cke_browser_air\";return a}());\n\"unloaded\"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!=\"basic_ready\")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var b=document.createElement(\"script\");b.type=\"text/javascript\";b.src=CKEDITOR.basePath+\"ckeditor.js\";document.getElementsByTagName(\"head\")[0].appendChild(b)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(b){(this._.pending||(this._.pending=[])).push(b)};(function(){CKEDITOR.domReady(function(){var b=\nCKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(b){CKEDITOR.status=\"basic_ready\";b&&b._load?b():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status=\"basic_loaded\"}();CKEDITOR.dom={};\n(function(){var b=[],c=CKEDITOR.env.gecko?\"-moz-\":CKEDITOR.env.webkit?\"-webkit-\":CKEDITOR.env.opera?\"-o-\":CKEDITOR.env.ie?\"-ms-\":\"\";CKEDITOR.on(\"reset\",function(){b=[]});CKEDITOR.tools={arrayCompare:function(a,b){if(!a&&!b)return true;if(!a||!b||a.length!=b.length)return false;for(var e=0;e<a.length;e++)if(a[e]!=b[e])return false;return true},clone:function(a){var b;if(a&&a instanceof Array){b=[];for(var e=0;e<a.length;e++)b[e]=this.clone(a[e]);return b}if(a===null||typeof a!=\"object\"||a instanceof\nString||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp)return a;b=new a.constructor;for(e in a)b[e]=this.clone(a[e]);return b},capitalize:function(a){return a.charAt(0).toUpperCase()+a.substring(1).toLowerCase()},extend:function(a){var b=arguments.length,e,d;if(typeof(e=arguments[b-1])==\"boolean\")b--;else if(typeof(e=arguments[b-2])==\"boolean\"){d=arguments[b-1];b=b-2}for(var c=1;c<b;c++){var k=arguments[c],h;for(h in k)if(e===true||a[h]==void 0)if(!d||h in d)a[h]=\nk[h]}return a},prototypedCopy:function(a){var b=function(){};b.prototype=a;return new b},isArray:function(a){return!!a&&a instanceof Array},isEmpty:function(a){for(var b in a)if(a.hasOwnProperty(b))return false;return true},cssVendorPrefix:function(a,b,e){if(e)return c+a+\":\"+b+\";\"+a+\":\"+b;e={};e[a]=b;e[c+a]=b;return e},cssStyleToDomStyle:function(){var a=document.createElement(\"div\").style,b=typeof a.cssFloat!=\"undefined\"?\"cssFloat\":typeof a.styleFloat!=\"undefined\"?\"styleFloat\":\"float\";return function(a){return a==\n\"float\"?b:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){for(var a=[].concat(a),b,e=[],c=0;c<a.length;c++)if(b=a[c])/@import|[{}]/.test(b)?e.push(\"<style>\"+b+\"</style>\"):e.push('<link type=\"text/css\" rel=stylesheet href=\"'+b+'\">');return e.join(\"\")},htmlEncode:function(a){return(\"\"+a).replace(/&/g,\"&amp;\").replace(/>/g,\"&gt;\").replace(/</g,\"&lt;\")},htmlEncodeAttr:function(a){return a.replace(/\"/g,\"&quot;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")},getNextNumber:function(){var a=\n0;return function(){return++a}}(),getNextId:function(){return\"cke_\"+this.getNextNumber()},override:function(a,b){var e=b(a);e.prototype=a.prototype;return e},setTimeout:function(a,b,e,c,g){g||(g=window);e||(e=g);return g.setTimeout(function(){c?a.apply(e,[].concat(c)):a.apply(e)},b||0)},trim:function(){var a=/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g;return function(b){return b.replace(a,\"\")}}(),ltrim:function(){var a=/^[ \\t\\n\\r]+/g;return function(b){return b.replace(a,\"\")}}(),rtrim:function(){var a=/[ \\t\\n\\r]+$/g;\nreturn function(b){return b.replace(a,\"\")}}(),indexOf:function(a,b){if(typeof b==\"function\")for(var c=0,d=a.length;c<d;c++){if(b(a[c]))return c}else{if(a.indexOf)return a.indexOf(b);c=0;for(d=a.length;c<d;c++)if(a[c]===b)return c}return-1},search:function(a,b){var c=CKEDITOR.tools.indexOf(a,b);return c>=0?a[c]:null},bind:function(a,b){return function(){return a.apply(b,arguments)}},createClass:function(a){var b=a.$,c=a.base,d=a.privates||a._,g=a.proto,a=a.statics;!b&&(b=function(){c&&this.base.apply(this,\narguments)});if(d)var k=b,b=function(){var a=this._||(this._={}),b;for(b in d){var f=d[b];a[b]=typeof f==\"function\"?CKEDITOR.tools.bind(f,this):f}k.apply(this,arguments)};if(c){b.prototype=this.prototypedCopy(c.prototype);b.prototype.constructor=b;b.base=c;b.baseProto=c.prototype;b.prototype.base=function(){this.base=c.prototype.base;c.apply(this,arguments);this.base=arguments.callee}}g&&this.extend(b.prototype,g,true);a&&this.extend(b,a,true);return b},addFunction:function(a,f){return b.push(function(){return a.apply(f||\nthis,arguments)})-1},removeFunction:function(a){b[a]=null},callFunction:function(a){var f=b[a];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=/^-?\\d+\\.?\\d*px$/,b;return function(c){b=CKEDITOR.tools.trim(c+\"\")+\"px\";return a.test(b)?b:c||\"\"}}(),convertToPx:function(){var a;return function(b){if(!a){a=CKEDITOR.dom.element.createFromHtml('<div style=\"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;\"></div>',CKEDITOR.document);\nCKEDITOR.document.getBody().append(a)}if(!/%$/.test(b)){a.setStyle(\"width\",b);return a.$.clientWidth}return b}}(),repeat:function(a,b){return Array(b+1).join(a)},tryThese:function(){for(var a,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(g){}}return a},genKey:function(){return Array.prototype.slice.call(arguments).join(\"-\")},defer:function(a){return function(){var b=arguments,c=this;window.setTimeout(function(){a.apply(c,b)},0)}},normalizeCssText:function(a,b){var c=[],\nd,g=CKEDITOR.tools.parseCssText(a,true,b);for(d in g)c.push(d+\":\"+g[d]);c.sort();return c.length?c.join(\";\")+\";\":\"\"},convertRgbToHex:function(a){return a.replace(/(?:rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\))/gi,function(a,b,c,g){a=[b,c,g];for(b=0;b<3;b++)a[b]=(\"0\"+parseInt(a[b],10).toString(16)).slice(-2);return\"#\"+a.join(\"\")})},parseCssText:function(a,b,c){var d={};if(c){c=new CKEDITOR.dom.element(\"span\");c.setAttribute(\"style\",a);a=CKEDITOR.tools.convertRgbToHex(c.getAttribute(\"style\")||\"\")}if(!a||\na==\";\")return d;a.replace(/&quot;/g,'\"').replace(/\\s*([^:;\\s]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,c,e){if(b){c=c.toLowerCase();c==\"font-family\"&&(e=e.toLowerCase().replace(/[\"']/g,\"\").replace(/\\s*,\\s*/g,\",\"));e=CKEDITOR.tools.trim(e)}d[c]=e});return d}}})();\nCKEDITOR.dtd=function(){var b=CKEDITOR.tools.extend,c=function(a,b){for(var f=CKEDITOR.tools.clone(a),l=1;l<arguments.length;l++){var b=arguments[l],j;for(j in b)delete f[j]}return f},a={},f={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},d={command:1,link:1,meta:1,noscript:1,script:1,style:1},g={},k={\"#\":1},h={center:1,dir:1,noframes:1};\nb(a,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,\"var\":1,video:1,wbr:1},k,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});b(f,e,a,h);c={a:c(a,{a:1,button:1}),abbr:a,address:f,\narea:g,article:b({style:1},f),aside:b({style:1},f),audio:b({source:1,track:1},f),b:a,base:g,bdi:a,bdo:a,blockquote:f,body:f,br:g,button:c(a,{a:1,button:1}),canvas:a,caption:f,cite:a,code:a,col:g,colgroup:{col:1},command:g,datalist:b({option:1},a),dd:f,del:a,details:b({summary:1},f),dfn:a,div:b({style:1},f),dl:{dt:1,dd:1},dt:f,em:a,embed:g,fieldset:b({legend:1},f),figcaption:f,figure:b({figcaption:1},f),footer:f,form:f,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,head:b({title:1,base:1},d),header:f,hgroup:{h1:1,\nh2:1,h3:1,h4:1,h5:1,h6:1},hr:g,html:b({head:1,body:1},f,d),i:a,iframe:k,img:g,input:g,ins:a,kbd:a,keygen:g,label:a,legend:a,li:f,link:g,map:f,mark:a,menu:b({li:1},f),meta:g,meter:c(a,{meter:1}),nav:f,noscript:b({link:1,meta:1,style:1},a),object:b({param:1},a),ol:{li:1},optgroup:{option:1},option:k,output:a,p:a,param:g,pre:a,progress:c(a,{progress:1}),q:a,rp:a,rt:a,ruby:b({rp:1,rt:1},a),s:a,samp:a,script:k,section:b({style:1},f),select:{optgroup:1,option:1},small:a,source:g,span:a,strong:a,style:k,\nsub:a,summary:a,sup:a,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:f,textarea:k,tfoot:{tr:1},th:f,thead:{tr:1},time:c(a,{time:1}),title:k,tr:{th:1,td:1},track:g,u:a,ul:{li:1},\"var\":a,video:b({source:1,track:1},f),wbr:g,acronym:a,applet:b({param:1},f),basefont:g,big:a,center:f,dialog:g,dir:{li:1},font:a,isindex:g,noframes:f,strike:a,tt:a};b(c,{$block:b({audio:1,dd:1,dt:1,li:1,video:1},e,h),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1,\nfieldset:1,figure:1,footer:1,form:1,header:1,hgroup:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1},$inline:a,$list:{dl:1,ol:1,\nul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:b({body:1,head:1,html:1},c.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,\nsub:1,sup:1,time:1,tt:1,u:1,\"var\":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return c}();CKEDITOR.dom.event=function(b){this.$=b};\nCKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var b=this.getKey();if(this.$.ctrlKey||this.$.metaKey)b=b+CKEDITOR.CTRL;this.$.shiftKey&&(b=b+CKEDITOR.SHIFT);this.$.altKey&&(b=b+CKEDITOR.ALT);return b},preventDefault:function(b){var c=this.$;c.preventDefault?c.preventDefault():c.returnValue=false;b&&this.stopPropagation()},stopPropagation:function(){var b=this.$;b.stopPropagation?b.stopPropagation():b.cancelBubble=true},getTarget:function(){var b=\nthis.$.target||this.$.srcElement;return b?new CKEDITOR.dom.node(b):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var b=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(b.documentElement.scrollLeft||b.body.scrollLeft),y:this.$.pageY||this.$.clientY+(b.documentElement.scrollTop||b.body.scrollTop)}}};CKEDITOR.CTRL=1114112;CKEDITOR.SHIFT=2228224;CKEDITOR.ALT=4456448;CKEDITOR.EVENT_PHASE_CAPTURING=1;CKEDITOR.EVENT_PHASE_AT_TARGET=2;\nCKEDITOR.EVENT_PHASE_BUBBLING=3;CKEDITOR.dom.domObject=function(b){if(b)this.$=b};\nCKEDITOR.dom.domObject.prototype=function(){var b=function(b,a){return function(f){typeof CKEDITOR!=\"undefined\"&&b.fire(a,new CKEDITOR.dom.event(f))}};return{getPrivate:function(){var b;if(!(b=this.getCustomData(\"_\")))this.setCustomData(\"_\",b={});return b},on:function(c){var a=this.getCustomData(\"_cke_nativeListeners\");if(!a){a={};this.setCustomData(\"_cke_nativeListeners\",a)}if(!a[c]){a=a[c]=b(this,c);this.$.addEventListener?this.$.addEventListener(c,a,!!CKEDITOR.event.useCapture):this.$.attachEvent&&\nthis.$.attachEvent(\"on\"+c,a)}return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(b){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(b)){var a=this.getCustomData(\"_cke_nativeListeners\"),f=a&&a[b];if(f){this.$.removeEventListener?this.$.removeEventListener(b,f,false):this.$.detachEvent&&this.$.detachEvent(\"on\"+b,f);delete a[b]}}},removeAllListeners:function(){var b=this.getCustomData(\"_cke_nativeListeners\"),a;for(a in b){var f=b[a];this.$.detachEvent?\nthis.$.detachEvent(\"on\"+a,f):this.$.removeEventListener&&this.$.removeEventListener(a,f,false);delete b[a]}}}}();\n(function(b){var c={};CKEDITOR.on(\"reset\",function(){c={}});b.equals=function(a){try{return a&&a.$===this.$}catch(b){return false}};b.setCustomData=function(a,b){var e=this.getUniqueId();(c[e]||(c[e]={}))[a]=b;return this};b.getCustomData=function(a){var b=this.$[\"data-cke-expando\"];return(b=b&&c[b])&&a in b?b[a]:null};b.removeCustomData=function(a){var b=this.$[\"data-cke-expando\"],b=b&&c[b],e,d;if(b){e=b[a];d=a in b;delete b[a]}return d?e:null};b.clearCustomData=function(){this.removeAllListeners();\nvar a=this.$[\"data-cke-expando\"];a&&delete c[a]};b.getUniqueId=function(){return this.$[\"data-cke-expando\"]||(this.$[\"data-cke-expando\"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(b)})(CKEDITOR.dom.domObject.prototype);\nCKEDITOR.dom.node=function(b){return b?new CKEDITOR.dom[b.nodeType==CKEDITOR.NODE_DOCUMENT?\"document\":b.nodeType==CKEDITOR.NODE_ELEMENT?\"element\":b.nodeType==CKEDITOR.NODE_TEXT?\"text\":b.nodeType==CKEDITOR.NODE_COMMENT?\"comment\":b.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?\"documentFragment\":\"domObject\"](b):this};CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject;CKEDITOR.NODE_ELEMENT=1;CKEDITOR.NODE_DOCUMENT=9;CKEDITOR.NODE_TEXT=3;CKEDITOR.NODE_COMMENT=8;CKEDITOR.NODE_DOCUMENT_FRAGMENT=11;\nCKEDITOR.POSITION_IDENTICAL=0;CKEDITOR.POSITION_DISCONNECTED=1;CKEDITOR.POSITION_FOLLOWING=2;CKEDITOR.POSITION_PRECEDING=4;CKEDITOR.POSITION_IS_CONTAINED=8;CKEDITOR.POSITION_CONTAINS=16;\nCKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(b,c){b.append(this,c);return b},clone:function(b,c){var a=this.$.cloneNode(b),f=function(a){a[\"data-cke-expando\"]&&(a[\"data-cke-expando\"]=false);if(a.nodeType==CKEDITOR.NODE_ELEMENT){c||a.removeAttribute(\"id\",false);if(b)for(var a=a.childNodes,d=0;d<a.length;d++)f(a[d])}};f(a);return new CKEDITOR.dom.node(a)},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(b){b.$.parentNode.insertBefore(this.$,\nb.$.nextSibling);return b},insertBefore:function(b){b.$.parentNode.insertBefore(this.$,b.$);return b},insertBeforeMe:function(b){this.$.parentNode.insertBefore(b.$,this.$);return b},getAddress:function(b){for(var c=[],a=this.getDocument().$.documentElement,f=this.$;f&&f!=a;){var e=f.parentNode;e&&c.unshift(this.getIndex.call({$:f},b));f=e}return c},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(b){var c=this.$,a=-1,\nf;if(!this.$.parentNode)return a;do if(!b||!(c!=this.$&&c.nodeType==CKEDITOR.NODE_TEXT&&(f||!c.nodeValue))){a++;f=c.nodeType==CKEDITOR.NODE_TEXT}while(c=c.previousSibling);return a},getNextSourceNode:function(b,c,a){if(a&&!a.call)var f=a,a=function(a){return!a.equals(f)};var b=!b&&this.getFirst&&this.getFirst(),e;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&a&&a(this,true)===false)return null;b=this.getNext()}for(;!b&&(e=(e||this).getParent());){if(a&&a(e,true)===false)return null;b=e.getNext()}return!b||\na&&a(b)===false?null:c&&c!=b.type?b.getNextSourceNode(false,c,a):b},getPreviousSourceNode:function(b,c,a){if(a&&!a.call)var f=a,a=function(a){return!a.equals(f)};var b=!b&&this.getLast&&this.getLast(),e;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&a&&a(this,true)===false)return null;b=this.getPrevious()}for(;!b&&(e=(e||this).getParent());){if(a&&a(e,true)===false)return null;b=e.getPrevious()}return!b||a&&a(b)===false?null:c&&b.type!=c?b.getPreviousSourceNode(false,c,a):b},getPrevious:function(b){var c=\nthis.$,a;do a=(c=c.previousSibling)&&c.nodeType!=10&&new CKEDITOR.dom.node(c);while(a&&b&&!b(a));return a},getNext:function(b){var c=this.$,a;do a=(c=c.nextSibling)&&new CKEDITOR.dom.node(c);while(a&&b&&!b(a));return a},getParent:function(b){var c=this.$.parentNode;return c&&(c.nodeType==CKEDITOR.NODE_ELEMENT||b&&c.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(c):null},getParents:function(b){var c=this,a=[];do a[b?\"push\":\"unshift\"](c);while(c=c.getParent());return a},getCommonAncestor:function(b){if(b.equals(this))return this;\nif(b.contains&&b.contains(this))return b;var c=this.contains?this:this.getParent();do if(c.contains(b))return c;while(c=c.getParent());return null},getPosition:function(b){var c=this.$,a=b.$;if(c.compareDocumentPosition)return c.compareDocumentPosition(a);if(c==a)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&b.type==CKEDITOR.NODE_ELEMENT){if(c.contains){if(c.contains(a))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(a.contains(c))return CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING}if(\"sourceIndex\"in c)return c.sourceIndex<0||a.sourceIndex<0?CKEDITOR.POSITION_DISCONNECTED:c.sourceIndex<a.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}for(var c=this.getAddress(),b=b.getAddress(),a=Math.min(c.length,b.length),f=0;f<=a-1;f++)if(c[f]!=b[f]){if(f<a)return c[f]<b[f]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;break}return c.length<b.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING},getAscendant:function(b,c){var a=this.$,f;if(!c)a=a.parentNode;for(;a;){if(a.nodeName&&(f=a.nodeName.toLowerCase(),typeof b==\"string\"?f==b:f in b))return new CKEDITOR.dom.node(a);a=a.parentNode}return null},hasAscendant:function(b,c){var a=this.$;if(!c)a=a.parentNode;for(;a;){if(a.nodeName&&a.nodeName.toLowerCase()==b)return true;a=a.parentNode}return false},move:function(b,c){b.append(this.remove(),c)},remove:function(b){var c=this.$,a=c.parentNode;if(a){if(b)for(;b=\nc.firstChild;)a.insertBefore(c.removeChild(b),c);a.removeChild(c)}return this},replace:function(b){this.insertBefore(b);b.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var b;this.getFirst&&(b=this.getFirst());){if(b.type==CKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.ltrim(b.getText()),a=b.getLength();if(c){if(c.length<a){b.split(a-c.length);this.$.removeChild(this.$.firstChild)}}else{b.remove();continue}}break}},rtrim:function(){for(var b;this.getLast&&(b=this.getLast());){if(b.type==\nCKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.rtrim(b.getText()),a=b.getLength();if(c){if(c.length<a){b.split(c.length);this.$.lastChild.parentNode.removeChild(this.$.lastChild)}}else{b.remove();continue}}break}if(!CKEDITOR.env.ie&&!CKEDITOR.env.opera)(b=this.$.lastChild)&&(b.type==1&&b.nodeName.toLowerCase()==\"br\")&&b.parentNode.removeChild(b)},isReadOnly:function(){var b=this;this.type!=CKEDITOR.NODE_ELEMENT&&(b=this.getParent());if(b&&typeof b.$.isContentEditable!=\"undefined\")return!(b.$.isContentEditable||\nb.data(\"cke-editable\"));for(;b;){if(b.data(\"cke-editable\"))break;if(b.getAttribute(\"contentEditable\")==\"false\")return true;if(b.getAttribute(\"contentEditable\")==\"true\")break;b=b.getParent()}return!b}});CKEDITOR.dom.window=function(b){CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var b=this.$.document,c=b.compatMode==\"CSS1Compat\";return{width:(c?b.documentElement.clientWidth:b.body.clientWidth)||0,height:(c?b.documentElement.clientHeight:b.body.clientHeight)||0}},getScrollPosition:function(){var b=this.$;if(\"pageXOffset\"in b)return{x:b.pageXOffset||0,y:b.pageYOffset||0};b=b.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||\nb.body.scrollTop||0}},getFrame:function(){var b=this.$.frameElement;return b?new CKEDITOR.dom.element.get(b):null}});CKEDITOR.dom.document=function(b){CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(b){if(this.$.createStyleSheet)this.$.createStyleSheet(b);else{var c=new CKEDITOR.dom.element(\"link\");c.setAttributes({rel:\"stylesheet\",type:\"text/css\",href:b});this.getHead().append(c)}},appendStyleText:function(b){if(this.$.createStyleSheet){var c=this.$.createStyleSheet(\"\");c.cssText=b}else{var a=new CKEDITOR.dom.element(\"style\",this);a.append(new CKEDITOR.dom.text(b,this));this.getHead().append(a)}return c||\na.$.sheet},createElement:function(b,c){var a=new CKEDITOR.dom.element(b,this);if(c){c.attributes&&a.setAttributes(c.attributes);c.styles&&a.setStyles(c.styles)}return a},createText:function(b){return new CKEDITOR.dom.text(b,this)},focus:function(){this.getWindow().focus()},getActive:function(){return new CKEDITOR.dom.element(this.$.activeElement)},getById:function(b){return(b=this.$.getElementById(b))?new CKEDITOR.dom.element(b):null},getByAddress:function(b,c){for(var a=this.$.documentElement,f=\n0;a&&f<b.length;f++){var e=b[f];if(c)for(var d=-1,g=0;g<a.childNodes.length;g++){var k=a.childNodes[g];if(!(c===true&&k.nodeType==3&&k.previousSibling&&k.previousSibling.nodeType==3)){d++;if(d==e){a=k;break}}}else a=a.childNodes[e]}return a?new CKEDITOR.dom.node(a):null},getElementsByTag:function(b,c){if((!CKEDITOR.env.ie||document.documentMode>8)&&c)b=c+\":\"+b;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(b))},getHead:function(){var b=this.$.getElementsByTagName(\"head\")[0];return b=\nb?new CKEDITOR.dom.element(b):this.getDocumentElement().append(new CKEDITOR.dom.element(\"head\"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){var b=new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return b})()},write:function(b){this.$.open(\"text/html\",\"replace\");CKEDITOR.env.isCustomDomain()&&(this.$.domain=document.domain);\nthis.$.write(b);this.$.close()}});CKEDITOR.dom.nodeList=function(b){this.$=b};CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(b){if(b<0||b>=this.$.length)return null;return(b=this.$[b])?new CKEDITOR.dom.node(b):null}};CKEDITOR.dom.element=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createElement(b));CKEDITOR.dom.domObject.call(this,b)};\nCKEDITOR.dom.element.get=function(b){return(b=typeof b==\"string\"?document.getElementById(b)||document.getElementsByName(b)[0]:b)&&(b.$?b:new CKEDITOR.dom.element(b))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(b,c){var a=new CKEDITOR.dom.element(\"div\",c);a.setHtml(b);return a.getFirst().remove()};\nCKEDITOR.dom.element.setMarker=function(b,c,a,f){var e=c.getCustomData(\"list_marker_id\")||c.setCustomData(\"list_marker_id\",CKEDITOR.tools.getNextNumber()).getCustomData(\"list_marker_id\"),d=c.getCustomData(\"list_marker_names\")||c.setCustomData(\"list_marker_names\",{}).getCustomData(\"list_marker_names\");b[e]=c;d[a]=1;return c.setCustomData(a,f)};CKEDITOR.dom.element.clearAllMarkers=function(b){for(var c in b)CKEDITOR.dom.element.clearMarkers(b,b[c],1)};\nCKEDITOR.dom.element.clearMarkers=function(b,c,a){var f=c.getCustomData(\"list_marker_names\"),e=c.getCustomData(\"list_marker_id\"),d;for(d in f)c.removeCustomData(d);c.removeCustomData(\"list_marker_names\");if(a){c.removeCustomData(\"list_marker_id\");delete b[e]}};\n(function(){function b(a){for(var b=0,e=0,d=c[a].length;e<d;e++)b=b+(parseInt(this.getComputedStyle(c[a][e])||0,10)||0);return b}CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:function(a){var b=this.$.className;b&&(RegExp(\"(?:^|\\\\s)\"+a+\"(?:\\\\s|$)\",\"\").test(b)||(b=b+(\" \"+a)));this.$.className=b||a},removeClass:function(a){var b=this.getAttribute(\"class\");if(b){a=RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"i\");if(a.test(b))(b=b.replace(a,\"\").replace(/^\\s+/,\"\"))?this.setAttribute(\"class\",\nb):this.removeAttribute(\"class\")}return this},hasClass:function(a){return RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"\").test(this.getAttribute(\"class\"))},append:function(a,b){typeof a==\"string\"&&(a=this.getDocument().createElement(a));b?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var b=new CKEDITOR.dom.element(\"div\",this.getDocument());b.setHtml(a);b.moveChildren(this)}else this.setHtml(a)},appendText:function(a){this.$.text!=\nvoid 0?this.$.text=this.$.text+a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(){for(var a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();if(!a||!a.is||!a.is(\"br\")){a=CKEDITOR.env.opera?this.getDocument().createText(\"\"):this.getDocument().createElement(\"br\");CKEDITOR.env.gecko&&a.setAttribute(\"type\",\"_moz\");this.append(a)}},breakParent:function(a){var b=new CKEDITOR.dom.range(this.getDocument());b.setStartAfter(this);b.setEndAfter(a);\na=b.extractContents();b.insertNode(this.remove());a.insertAfterNode(this)},contains:CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!=a.$&&b.contains(a.$)}:function(a){return!!(this.$.compareDocumentPosition(a.$)&16)},focus:function(){function a(){try{this.$.focus()}catch(a){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\\?[^>]*>/g,\n\"\"):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\\?[^>]*>/,\"\");var a=this.$.ownerDocument.createElement(\"div\");a.appendChild(this.$.cloneNode(true));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:function(){var a=function(a){return this.$.innerHTML=a};return CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(a){try{return this.$.innerHTML=\na}catch(b){this.$.innerHTML=\"\";var c=new CKEDITOR.dom.element(\"body\",this.getDocument());c.$.innerHTML=a;for(c=c.getChildren();c.count();)this.append(c.getItem(0));return a}}:a}(),setText:function(a){CKEDITOR.dom.element.prototype.setText=this.$.innerText!=void 0?function(a){return this.$.innerText=a}:function(a){return this.$.textContent=a};return this.setText(a)},getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?\nfunction(a){switch(a){case \"class\":a=\"className\";break;case \"http-equiv\":a=\"httpEquiv\";break;case \"name\":return this.$.name;case \"tabindex\":a=this.$.getAttribute(a,2);a!==0&&this.$.tabIndex===0&&(a=null);return a;case \"checked\":a=this.$.attributes.getNamedItem(a);return(a.specified?a.nodeValue:this.$.checked)?\"checked\":null;case \"hspace\":case \"value\":return this.$[a];case \"style\":return this.$.style.cssText;case \"contenteditable\":case \"contentEditable\":return this.$.attributes.getNamedItem(\"contentEditable\").specified?\nthis.$.getAttribute(\"contentEditable\"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):\"\"},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,\ngetTabIndex:CKEDITOR.env.ie?function(){var a=this.$.tabIndex;a===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute(\"tabindex\"),10)!==0)&&(a=-1);return a}:CKEDITOR.env.webkit?function(){var a=this.$.tabIndex;if(a==void 0){a=parseInt(this.getAttribute(\"tabindex\"),10);isNaN(a)&&(a=-1)}return a}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||\"\"},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||\nnull},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode>8)){var b=this.$.scopeName;b!=\"HTML\"&&(a=b.toLowerCase()+\":\"+a)}return(this.getName=function(){return a})()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&(a&&!a(b))&&\n(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if(typeof arguments[0]==\"object\")return!!arguments[0][a];for(var b=0;b<arguments.length;b++)if(arguments[b]==a)return true;return false},isEditable:function(a){var b=this.getName();if(this.isReadOnly()||this.getComputedStyle(\"display\")==\"none\"||this.getComputedStyle(\"visibility\")==\"hidden\"||CKEDITOR.dtd.$nonEditable[b]||CKEDITOR.dtd.$empty[b]||this.is(\"a\")&&\n(this.data(\"cke-saved-name\")||this.hasAttribute(\"name\"))&&!this.getChildCount())return false;if(a!==false){a=CKEDITOR.dtd[b]||CKEDITOR.dtd.span;return!(!a||!a[\"#\"])}return true},isIdentical:function(a){var b=this.clone(0,1),a=a.clone(0,1);b.removeAttributes([\"_moz_dirty\",\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);a.removeAttributes([\"_moz_dirty\",\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);if(b.$.isEqualNode){b.$.style.cssText=CKEDITOR.tools.normalizeCssText(b.$.style.cssText);\na.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText);return b.$.isEqualNode(a.$)}b=b.getOuterHtml();a=a.getOuterHtml();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&this.is(\"a\")){var c=this.getParent();if(c.type==CKEDITOR.NODE_ELEMENT){c=c.clone();c.setHtml(b);b=c.getHtml();c.setHtml(a);a=c.getHtml()}}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&this.getComputedStyle(\"visibility\")!=\"hidden\",b,c;if(a&&(CKEDITOR.env.webkit||CKEDITOR.env.opera)){b=\nthis.getWindow();if(!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement))a=(new CKEDITOR.dom.element(c)).isVisible()}return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return false;for(var a=this.getChildren(),b=0,c=a.count();b<c;b++){var d=a.getItem(b);if(!(d.type==CKEDITOR.NODE_ELEMENT&&d.data(\"cke-bookmark\"))&&(d.type==CKEDITOR.NODE_ELEMENT&&!d.isEmptyInlineRemoveable()||d.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(d.getText())))return false}return true},\nhasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(){for(var a=this.$.attributes,b=0;b<a.length;b++){var c=a[b];switch(c.nodeName){case \"class\":if(this.getAttribute(\"class\"))return true;case \"data-cke-expando\":continue;default:if(c.specified)return true}}return false}:function(){var a=this.$.attributes,b=a.length,c={\"data-cke-expando\":1,_moz_dirty:1};return b>0&&(b>2||!c[a[0].nodeName]||b==2&&!c[a[1].nodeName])},hasAttribute:function(){function a(a){a=this.$.attributes.getNamedItem(a);\nreturn!(!a||!a.specified)}return CKEDITOR.env.ie&&CKEDITOR.env.version<8?function(b){return b==\"name\"?!!this.$.name:a.call(this,b)}:a}(),hide:function(){this.setStyle(\"display\",\"none\")},moveChildren:function(a,b){var c=this.$,a=a.$;if(c!=a){var d;if(b)for(;d=c.lastChild;)a.insertBefore(c.removeChild(d),a.firstChild);else for(;d=c.firstChild;)a.appendChild(c.removeChild(d))}},mergeSiblings:function(){function a(a,b,c){if(b&&b.type==CKEDITOR.NODE_ELEMENT){for(var g=[];b.data(\"cke-bookmark\")||b.isEmptyInlineRemoveable();){g.push(b);\nb=c?b.getNext():b.getPrevious();if(!b||b.type!=CKEDITOR.NODE_ELEMENT)return}if(a.isIdentical(b)){for(var k=c?a.getLast():a.getFirst();g.length;)g.shift().move(a,!c);b.moveChildren(a,!c);b.remove();k&&k.type==CKEDITOR.NODE_ELEMENT&&k.mergeSiblings()}}}return function(b){if(b===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is(\"a\")){a(this,this.getNext(),true);a(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:\"\",visibility:\"\"})},setAttribute:function(){var a=function(a,\nb){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(b,c){b==\"class\"?this.$.className=c:b==\"style\"?this.$.style.cssText=c:b==\"tabindex\"?this.$.tabIndex=c:b==\"checked\"?this.$.checked=c:b==\"contenteditable\"?a.call(this,\"contentEditable\",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if(b==\"src\"&&c.match(/^http:\\/\\//))try{a.apply(this,arguments)}catch(d){}else a.apply(this,arguments);\nreturn this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a){a==\"class\"?a=\"className\":a==\"tabindex\"?a=\"tabIndex\":a==\"contenteditable\"&&(a=\"contentEditable\");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<\na.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(!b.removeProperty&&(a==\"border\"||a==\"margin\"||a==\"padding\")){var c=[\"top\",\"left\",\"right\",\"bottom\"],d;a==\"border\"&&(d=[\"color\",\"style\",\"width\"]);for(var b=[],g=0;g<c.length;g++)if(d)for(var k=0;k<d.length;k++)b.push([a,c[g],d[k]].join(\"-\"));else b.push([a,c[g]].join(\"-\"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}else{b.removeProperty?b.removeProperty(a):\nb.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a));this.$.style.cssText||this.removeAttribute(\"style\")}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){if(CKEDITOR.env.ie&&CKEDITOR.env.version<9){a=Math.round(a*100);this.setStyle(\"filter\",a>=100?\"\":\"progid:DXImageTransform.Microsoft.Alpha(opacity=\"+a+\")\")}else this.setStyle(\"opacity\",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix(\"user-select\",\n\"none\"));if(CKEDITOR.env.ie||CKEDITOR.env.opera){this.setAttribute(\"unselectable\",\"on\");for(var a,b=this.getElementsByTag(\"*\"),c=0,d=b.count();c<d;c++){a=b.getItem(c);a.setAttribute(\"unselectable\",\"on\")}}},getPositionedAncestor:function(){for(var a=this;a.getName()!=\"html\";){if(a.getComputedStyle(\"position\")!=\"static\")return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,d=this.getDocument(),g=d.getBody(),k=d.$.compatMode==\"BackCompat\";if(document.documentElement.getBoundingClientRect){var h=\nthis.$.getBoundingClientRect(),m=d.$.documentElement,n=m.clientTop||g.$.clientTop||0,o=m.clientLeft||g.$.clientLeft||0,l=true;if(CKEDITOR.env.ie){l=d.getDocumentElement().contains(this);d=d.getBody().contains(this);l=k&&d||!k&&l}if(l){b=h.left+(!k&&m.scrollLeft||g.$.scrollLeft);b=b-o;c=h.top+(!k&&m.scrollTop||g.$.scrollTop);c=c-n}}else{g=this;for(d=null;g&&!(g.getName()==\"body\"||g.getName()==\"html\");){b=b+(g.$.offsetLeft-g.$.scrollLeft);c=c+(g.$.offsetTop-g.$.scrollTop);if(!g.equals(this)){b=b+(g.$.clientLeft||\n0);c=c+(g.$.clientTop||0)}for(;d&&!d.equals(g);){b=b-d.$.scrollLeft;c=c-d.$.scrollTop;d=d.getParent()}d=g;g=(h=g.$.offsetParent)?new CKEDITOR.dom.element(h):null}}if(a){g=this.getWindow();d=a.getWindow();if(!g.equals(d)&&g.$.frameElement){a=(new CKEDITOR.dom.element(g.$.frameElement)).getDocumentPosition(a);b=b+a.x;c=c+a.y}}if(!document.documentElement.getBoundingClientRect&&CKEDITOR.env.gecko&&!k){b=b+(this.$.clientLeft?1:0);c=c+(this.$.clientTop?1:0)}return{x:b,y:c}},scrollIntoView:function(a){var b=\nthis.getParent();if(b){do{(b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is(\"body\")&&this.scrollIntoParent(b,a,1);if(b.is(\"html\")){var c=b.getWindow();try{var d=c.$.frameElement;d&&(b=new CKEDITOR.dom.element(d))}catch(g){}}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var d,g,k,h;function m(b,l){if(/body|html/.test(a.getName()))a.getWindow().$.scrollBy(b,l);else{a.$.scrollLeft=a.$.scrollLeft+b;a.$.scrollTop=a.$.scrollTop+l}}\nfunction n(a,b){var o={x:0,y:0};if(!a.is(l?\"body\":\"html\")){var j=a.$.getBoundingClientRect();o.x=j.left;o.y=j.top}j=a.getWindow();if(!j.equals(b)){j=n(CKEDITOR.dom.element.get(j.$.frameElement),b);o.x=o.x+j.x;o.y=o.y+j.y}return o}function o(a,b){return parseInt(a.getComputedStyle(\"margin-\"+b)||0,10)||0}!a&&(a=this.getWindow());k=a.getDocument();var l=k.$.compatMode==\"BackCompat\";a instanceof CKEDITOR.dom.window&&(a=l?k.getBody():k.getDocumentElement());k=a.getWindow();g=n(this,k);var j=n(a,k),q=this.$.offsetHeight;\nd=this.$.offsetWidth;var y=a.$.clientHeight,z=a.$.clientWidth;k=g.x-o(this,\"left\")-j.x||0;h=g.y-o(this,\"top\")-j.y||0;d=g.x+d+o(this,\"right\")-(j.x+z)||0;g=g.y+q+o(this,\"bottom\")-(j.y+y)||0;if(h<0||g>0)m(0,b===true?h:b===false?g:h<0?h:g);if(c&&(k<0||d>0))m(k<0?k:d,0)},setState:function(a,b,c){b=b||\"cke\";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+\"_on\");this.removeClass(b+\"_off\");this.removeClass(b+\"_disabled\");c&&this.setAttribute(\"aria-pressed\",true);c&&this.removeAttribute(\"aria-disabled\");\nbreak;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+\"_disabled\");this.removeClass(b+\"_off\");this.removeClass(b+\"_on\");c&&this.setAttribute(\"aria-disabled\",true);c&&this.removeAttribute(\"aria-pressed\");break;default:this.addClass(b+\"_off\");this.removeClass(b+\"_on\");this.removeClass(b+\"_disabled\");c&&this.removeAttribute(\"aria-pressed\");c&&this.removeAttribute(\"aria-disabled\")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},\ncopyAttributes:function(a,b){for(var c=this.$.attributes,b=b||{},d=0;d<c.length;d++){var g=c[d],k=g.nodeName.toLowerCase(),h;if(!(k in b))if(k==\"checked\"&&(h=this.getAttribute(k)))a.setAttribute(k,h);else if(g.specified||CKEDITOR.env.ie&&g.nodeValue&&k==\"value\"){h=this.getAttribute(k);if(h===null)h=g.nodeValue;a.setAttribute(k,h)}}if(this.$.style.cssText!==\"\")a.$.style.cssText=this.$.style.cssText},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument(),a=new CKEDITOR.dom.element(a,\nb);this.copyAttributes(a);this.moveChildren(a);this.getParent()&&this.$.parentNode.replaceChild(a.$,this.$);a.$[\"data-cke-expando\"]=this.$[\"data-cke-expando\"];this.$=a.$}},getChild:function(){function a(a,b){var c=a.childNodes;if(b>=0&&b<c.length)return c[b]}return function(b){var c=this.$;if(b.slice)for(;b.length>0&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on(\"contextmenu\",\nfunction(a){a.data.getTarget().hasClass(\"cke_enable_context_menu\")||a.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle(\"direction\")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||\"ltr\":this.getStyle(\"direction\")||this.getAttribute(\"dir\")},data:function(a,b){a=\"data-\"+a;if(b===void 0)return this.getAttribute(a);b===false?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(){var a=CKEDITOR.instances,\nb,c;for(b in a){c=a[b];if(c.element.equals(this)&&c.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null}});var c={width:[\"border-left-width\",\"border-right-width\",\"padding-left\",\"padding-right\"],height:[\"border-top-width\",\"border-bottom-width\",\"padding-top\",\"padding-bottom\"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,e){if(typeof c==\"number\"){if(e&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-b.call(this,a);this.setStyle(a,c+\"px\")}};CKEDITOR.dom.element.prototype.getSize=function(a,\nc){var e=Math.max(this.$[\"offset\"+CKEDITOR.tools.capitalize(a)],this.$[\"client\"+CKEDITOR.tools.capitalize(a)])||0;c&&(e=e-b.call(this,a));return e}})();CKEDITOR.dom.documentFragment=function(b){b=b||CKEDITOR.document;this.$=b.type==CKEDITOR.NODE_DOCUMENT?b.$.createDocumentFragment():b};\nCKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(b){b=b.$;b.parentNode.insertBefore(this.$,b.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});\n(function(){function b(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,n=c.startContainer;d=c.endContainer;var o=c.startOffset,l=c.endOffset,j,q=this.guard,f=this.type,e=a?\"getPreviousSourceNode\":\"getNextSourceNode\";if(!a&&!this._.guardLTR){var i=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),s=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(l):d.getNext();this._.guardLTR=function(a,b){return(!b||!i.equals(a))&&(!s||\n!a.equals(s))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var A=n.type==CKEDITOR.NODE_ELEMENT?n:n.getParent(),B=n.type==CKEDITOR.NODE_ELEMENT?o?n.getChild(o-1):null:n.getPrevious();this._.guardRTL=function(a,b){return(!b||!A.equals(a))&&(!B||!a.equals(B))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var p=a?this._.guardRTL:this._.guardLTR;j=q?function(a,b){return p(a,b)===false?false:q(a,b)}:p;if(this.current)d=this.current[e](false,f,j);else{if(a)d.type==\nCKEDITOR.NODE_ELEMENT&&(d=l>0?d.getChild(l-1):j(d,true)===false?null:d.getPreviousSourceNode(true,f,j));else{d=n;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(o)))d=j(n,true)===false?null:n.getNextSourceNode(true,f,j)}d&&j(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[e](false,f,j)}this.end();return this.current=null}function c(a){for(var c,d=null;c=b.call(this,a);)d=c;return d}\nCKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return b.call(this)},previous:function(){return b.call(this,1)},checkForward:function(){return b.call(this,0,1)!==false},checkBackward:function(){return b.call(this,1,1)!==false},lastForward:function(){return c.call(this)},lastBackward:function(){return c.call(this,1)},reset:function(){delete this.current;this._={}}}});var a={block:1,\"list-item\":1,table:1,\"table-row-group\":1,\n\"table-header-group\":1,\"table-footer-group\":1,\"table-row\":1,\"table-column-group\":1,\"table-column\":1,\"table-cell\":1,\"table-caption\":1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(b){b=b?CKEDITOR.tools.extend({},CKEDITOR.dtd.$block,b||{}):CKEDITOR.dtd.$block;return this.getComputedStyle(\"float\")==\"none\"&&a[this.getComputedStyle(\"display\")]||b[this.getName()]};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=\nfunction(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&a.getName()==\"span\"&&a.data(\"cke-bookmark\")}return function(d){var n,o;n=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(o=d.getParent())&&c(o);n=a?n:n||c(d);return!!(b^n)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==\"​\");return!!(a^c)}};CKEDITOR.dom.walker.invisible=\nfunction(a){var b=CKEDITOR.dom.walker.whitespaces();return function(c){if(b(c))c=1;else{c.type==CKEDITOR.NODE_TEXT&&(c=c.getParent());c=!c.$.offsetHeight}return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!e(a)&&!d(a)}return function(c){var d=!CKEDITOR.env.ie?c.is&&c.is(\"br\"):c.getText&&f.test(c.getText());if(d){d=c.getParent();c=c.getNext(b);d=d.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&&\nc.isBlockBoundary())}return!!(a^d)}};var f=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/,e=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark();CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(d(a)||e(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty));return a&&(!CKEDITOR.env.ie?a.is&&a.is(\"br\"):a.getText&&f.test(a.getText()))?a:false}})();\nCKEDITOR.dom.range=function(b){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var c=b instanceof CKEDITOR.dom.document;this.document=c?b:b.getDocument();this.root=c?b.getBody():b};\n(function(){function b(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(true),c=CKEDITOR.dom.walker.bogus();return function(q){if(l(q)||b(q))return true;if(c(q)&&!a)return a=true;return q.type==CKEDITOR.NODE_TEXT&&(q.hasAscendant(\"pre\")||CKEDITOR.tools.trim(q.getText()).length)||q.type==CKEDITOR.NODE_ELEMENT&&!q.is(d)?false:true}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(1);return function(c){return l(c)||b(c)?true:!a&&g(c)||\nc.type==CKEDITOR.NODE_ELEMENT&&c.is(CKEDITOR.dtd.$removeEmpty)}}function a(a){return!k(a)&&!h(a)}var f=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},e=function(a,b,l,c){a.optimizeBookmark();var d=a.startContainer,g=a.endContainer,f=a.startOffset,i=a.endOffset,e,k;if(g.type==CKEDITOR.NODE_TEXT)g=g.split(i);else if(g.getChildCount()>0)if(i>=g.getChildCount()){g=g.append(a.document.createText(\"\"));k=true}else g=g.getChild(i);\nif(d.type==CKEDITOR.NODE_TEXT){d.split(f);d.equals(g)&&(g=d.getNext())}else if(f)if(f>=d.getChildCount()){d=d.append(a.document.createText(\"\"));e=true}else d=d.getChild(f).getPrevious();else{d=d.append(a.document.createText(\"\"),1);e=true}var f=d.getParents(),i=g.getParents(),h,p,m;for(h=0;h<f.length;h++){p=f[h];m=i[h];if(!p.equals(m))break}for(var u=l,r,D,v,t=h;t<f.length;t++){r=f[t];u&&!r.equals(d)&&(D=u.append(r.clone()));for(r=r.getNext();r;){if(r.equals(i[t])||r.equals(g))break;v=r.getNext();\nif(b==2)u.append(r.clone(true));else{r.remove();b==1&&u.append(r)}r=v}u&&(u=D)}u=l;for(l=h;l<i.length;l++){r=i[l];b>0&&!r.equals(g)&&(D=u.append(r.clone()));if(!f[l]||r.$.parentNode!=f[l].$.parentNode)for(r=r.getPrevious();r;){if(r.equals(f[l])||r.equals(d))break;v=r.getPrevious();if(b==2)u.$.insertBefore(r.$.cloneNode(true),u.$.firstChild);else{r.remove();b==1&&u.$.insertBefore(r.$,u.$.firstChild)}r=v}u&&(u=D)}if(b==2){p=a.startContainer;if(p.type==CKEDITOR.NODE_TEXT){p.$.data=p.$.data+p.$.nextSibling.data;\np.$.parentNode.removeChild(p.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(p&&m&&(d.$.parentNode!=p.$.parentNode||g.$.parentNode!=m.$.parentNode)){b=m.getIndex();e&&m.$.parentNode==d.$.parentNode&&b--;if(c&&p.type==CKEDITOR.NODE_ELEMENT){c=CKEDITOR.dom.element.createFromHtml('<span data-cke-bookmark=\"1\" style=\"display:none\">&nbsp;</span>',a.document);c.insertAfter(p);p.mergeSiblings(false);\na.moveToBookmark({startNode:c})}else a.setStart(m.getParent(),b)}a.collapse(true)}e&&d.remove();k&&g.$.parentNode&&g.remove()},d={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,\"var\":1},g=CKEDITOR.dom.walker.bogus(),k=new CKEDITOR.dom.walker.whitespaces,h=new CKEDITOR.dom.walker.bookmark,m=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/;CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);\na.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,2,a);return a},deleteContents:function(a){this.collapsed||\ne(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,b,a);return b},createBookmark:function(a){var b,l,c,d,g=this.collapsed;b=this.document.createElement(\"span\");b.data(\"cke-bookmark\",1);b.setStyle(\"display\",\"none\");b.setHtml(\"&nbsp;\");if(a){c=\"cke_bm_\"+CKEDITOR.tools.getNextNumber();b.setAttribute(\"id\",c+(g?\"C\":\"S\"))}if(!g){l=b.clone();l.setHtml(\"&nbsp;\");a&&l.setAttribute(\"id\",c+\"E\");d=this.clone();d.collapse();d.insertNode(l)}d=\nthis.clone();d.collapse(true);d.insertNode(b);if(l){this.setStartAfter(b);this.setEndBefore(l)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?c+(g?\"C\":\"S\"):b,endNode:a?c+\"E\":l,serializable:a,collapsed:g}},createBookmark2:function(a){var b=this.startContainer,l=this.endContainer,c=this.startOffset,d=this.endOffset,g=this.collapsed,f,i;if(!b||!l)return{start:0,end:0};if(a){if(b.type==CKEDITOR.NODE_ELEMENT){if((f=b.getChild(c))&&f.type==CKEDITOR.NODE_TEXT&&c>0&&f.getPrevious().type==\nCKEDITOR.NODE_TEXT){b=f;c=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(c=f.getIndex(1))}for(;b.type==CKEDITOR.NODE_TEXT&&(i=b.getPrevious())&&i.type==CKEDITOR.NODE_TEXT;){b=i;c=c+i.getLength()}if(!g){if(l.type==CKEDITOR.NODE_ELEMENT){if((f=l.getChild(d))&&f.type==CKEDITOR.NODE_TEXT&&d>0&&f.getPrevious().type==CKEDITOR.NODE_TEXT){l=f;d=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(d=f.getIndex(1))}for(;l.type==CKEDITOR.NODE_TEXT&&(i=l.getPrevious())&&i.type==CKEDITOR.NODE_TEXT;){l=i;d=d+i.getLength()}}}return{start:b.getAddress(a),\nend:g?null:l.getAddress(a),startOffset:c,endOffset:d,normalized:a,collapsed:g,is2:true}},moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),l=a.startOffset,c=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,l);c?this.setEnd(c,a):this.collapse(true)}else{b=(l=a.serializable)?this.document.getById(a.startNode):a.startNode;a=l?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a);\na.remove()}else this.collapse(true)}},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,l=this.startOffset,c=this.endOffset,d;if(a.type==CKEDITOR.NODE_ELEMENT){d=a.getChildCount();if(d>l)a=a.getChild(l);else if(d<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){d=b.getChildCount();if(d>c)b=b.getChild(c).getPreviousSourceNode(true);else if(d<1)b=b.getPreviousSourceNode();\nelse{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var l=this.startContainer,c=this.endContainer,l=l.equals(c)?a&&l.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?l.getChild(this.startOffset):l:l.getCommonAncestor(c);return b&&!l.is?l.getParent():l},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=\na.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is(\"span\")&&a.data(\"cke-bookmark\"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is(\"span\")&&b.data(\"cke-bookmark\"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,\nj=this.startOffset,d=this.collapsed;if((!a||d)&&c&&c.type==CKEDITOR.NODE_TEXT){if(j)if(j>=c.getLength()){j=c.getIndex()+1;c=c.getParent()}else{var g=c.split(j),j=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(g,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=this.endOffset+1}else{j=c.getIndex();c=c.getParent()}this.setStart(c,j);if(d){this.collapse(true);return}}c=this.endContainer;j=this.endOffset;if(!b&&!d&&c&&c.type==\nCKEDITOR.NODE_TEXT){if(j){j>=c.getLength()||c.split(j);j=c.getIndex()+1}else j=c.getIndex();c=c.getParent();this.setEnd(c,j)}},enlarge:function(a,b){switch(a){case CKEDITOR.ENLARGE_INLINE:var c=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var j=this.getCommonAncestor(),d=this.root,g,f,i,e,h,k=false,p,m;p=this.startContainer;m=this.startOffset;if(p.type==CKEDITOR.NODE_TEXT){if(m){p=!CKEDITOR.tools.trim(p.substring(0,m)).length&&p;k=!!p}if(p&&!(e=p.getPrevious()))i=p.getParent()}else{m&&\n(e=p.getChild(m-1)||p.getLast());e||(i=p)}for(;i||e;){if(i&&!e){!h&&i.equals(j)&&(h=true);if(c?i.isBlockBoundary():!d.contains(i))break;if(!k||i.getComputedStyle(\"display\")!=\"inline\"){k=false;h?g=i:this.setStartBefore(i)}e=i.getPrevious()}for(;e;){p=false;if(e.type==CKEDITOR.NODE_COMMENT)e=e.getPrevious();else{if(e.type==CKEDITOR.NODE_TEXT){m=e.getText();/[^\\s\\ufeff]/.test(m)&&(e=null);p=/[\\s\\ufeff]$/.test(m)}else if((e.$.offsetWidth>0||b&&e.is(\"br\"))&&!e.data(\"cke-bookmark\"))if(k&&CKEDITOR.dtd.$removeEmpty[e.getName()]){m=\ne.getText();if(/[^\\s\\ufeff]/.test(m))e=null;else for(var u=e.$.getElementsByTagName(\"*\"),r=0,D;D=u[r++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){e=null;break}e&&(p=!!m.length)}else e=null;p&&(k?h?g=i:i&&this.setStartBefore(i):k=true);if(e){p=e.getPrevious();if(!i&&!p){i=e;e=null;break}e=p}else i=null}}i&&(i=i.getParent())}p=this.endContainer;m=this.endOffset;i=e=null;h=k=false;if(p.type==CKEDITOR.NODE_TEXT){p=!CKEDITOR.tools.trim(p.substring(m)).length&&p;k=!(p&&p.getLength());if(p&&\n!(e=p.getNext()))i=p.getParent()}else(e=p.getChild(m))||(i=p);for(;i||e;){if(i&&!e){!h&&i.equals(j)&&(h=true);if(c?i.isBlockBoundary():!d.contains(i))break;if(!k||i.getComputedStyle(\"display\")!=\"inline\"){k=false;h?f=i:i&&this.setEndAfter(i)}e=i.getNext()}for(;e;){p=false;if(e.type==CKEDITOR.NODE_TEXT){m=e.getText();/[^\\s\\ufeff]/.test(m)&&(e=null);p=/^[\\s\\ufeff]/.test(m)}else if(e.type==CKEDITOR.NODE_ELEMENT){if((e.$.offsetWidth>0||b&&e.is(\"br\"))&&!e.data(\"cke-bookmark\"))if(k&&CKEDITOR.dtd.$removeEmpty[e.getName()]){m=\ne.getText();if(/[^\\s\\ufeff]/.test(m))e=null;else{u=e.$.getElementsByTagName(\"*\");for(r=0;D=u[r++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){e=null;break}}e&&(p=!!m.length)}else e=null}else p=1;p&&k&&(h?f=i:this.setEndAfter(i));if(e){p=e.getNext();if(!i&&!p){i=e;e=null;break}e=p}else i=null}i&&(i=i.getParent())}if(g&&f){j=g.contains(f)?f:g;this.setStartBefore(j);this.setEndAfter(j)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:i=new CKEDITOR.dom.range(this.root);\nd=this.root;i.setStartAt(d,CKEDITOR.POSITION_AFTER_START);i.setEnd(this.startContainer,this.startOffset);i=new CKEDITOR.dom.walker(i);var v,t,w=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),I=function(a){var b=w(a);b||(v=a);return b},c=function(a){var b=I(a);!b&&(a.is&&a.is(\"br\"))&&(t=a);return b};i.guard=I;i=i.lastBackward();v=v||d;this.setStartAt(v,!v.is(\"br\")&&(!i&&this.checkStartOfBlock()||i&&v.contains(i))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);\nif(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){i=this.clone();i=new CKEDITOR.dom.walker(i);var G=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();i.evaluator=function(a){return!G(a)&&!C(a)};if((i=i.previous())&&i.type==CKEDITOR.NODE_ELEMENT&&i.is(\"br\"))break}i=this.clone();i.collapse();i.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);i=new CKEDITOR.dom.walker(i);i.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?c:I;v=null;i=i.lastForward();v=v||d;this.setEndAt(v,!i&&this.checkEndOfBlock()||i&&\nv.contains(i)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);t&&this.setEndAfter(t)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,j=this.clone(),d=this.startContainer,g=this.endContainer,f=this.startOffset,e=this.endOffset,k=1,h=1;if(d&&d.type==CKEDITOR.NODE_TEXT)if(f)if(f>=d.getLength())j.setStartAfter(d);else{j.setStartBefore(d);k=0}else j.setStartBefore(d);if(g&&g.type==CKEDITOR.NODE_TEXT)if(e)if(e>=g.getLength())j.setEndAfter(g);else{j.setEndAfter(g);\nh=0}else j.setEndBefore(g);var j=new CKEDITOR.dom.walker(j),m=CKEDITOR.dom.walker.bookmark();j.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var p;j.guard=function(b,j){if(m(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||j&&b.equals(p)||c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary())return false;!j&&b.type==CKEDITOR.NODE_ELEMENT&&(p=b);return true};if(k)(d=j[a==CKEDITOR.SHRINK_ELEMENT?\"lastForward\":\n\"next\"]())&&this.setStartAt(d,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(h){j.reset();(j=j[a==CKEDITOR.SHRINK_ELEMENT?\"lastBackward\":\"previous\"]())&&this.setEndAt(j,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!k&&!h)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},\nmoveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer=\na;this.endOffset=b}f(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset=b}f(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),\na.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}f(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==\nCKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}f(this)},fixBlock:function(a,b){var c=this.createBookmark(),j=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(j);j.trim();CKEDITOR.env.ie||j.appendBogus();this.insertNode(j);this.moveToBookmark(c);return j},splitBlock:function(a){var b=\nnew CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),j=b.block,d=c.block,g=null;if(!b.blockLimit.equals(c.blockLimit))return null;if(a!=\"br\"){if(!j){j=this.fixBlock(true,a);d=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}d||(d=this.fixBlock(false,a))}a=j&&this.checkStartOfBlock();b=d&&this.checkEndOfBlock();this.deleteContents();if(j&&j.equals(d))if(b){g=new CKEDITOR.dom.elementPath(this.startContainer,this.root);\nthis.moveToPosition(d,CKEDITOR.POSITION_AFTER_END);d=null}else if(a){g=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(j,CKEDITOR.POSITION_BEFORE_START);j=null}else{d=this.splitElement(j);!CKEDITOR.env.ie&&!j.is(\"ul\",\"ol\")&&j.appendBogus()}return{previousBlock:j,nextBlock:d,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:g}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false);\nb.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(j){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||j.is(\"table\")&&a.is(\"caption\")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),l=this[b?\"endPath\":\"startPath\"](),d=l.block||l.blockLimit,o;d&&!d.equals(l.root)&&!d.getFirst(a(d));){o=\nd.getParent();this[b?\"setEndAt\":\"setStartAt\"](d,CKEDITOR.POSITION_AFTER_END);d.remove(1);d=o}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var l=b==CKEDITOR.START,d=this.clone();d.collapse(l);d[l?\"setStartAt\":\"setEndAt\"](a,l?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(d);\nd.evaluator=c(l);return d[l?\"checkBackward\":\"checkForward\"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT){a=CKEDITOR.tools.ltrim(a.substring(0,c));m.test(a)&&this.trim(0,1)}this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(true);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=\nthis.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT){a=CKEDITOR.tools.rtrim(a.substring(c));m.test(a)&&this.trim(1,0)}this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);\nc=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttribute(\"contentEditable\")==\"false\"&&!b.data(\"cke-editable\"))return 0;if(b.is(\"html\")||b.getAttribute(\"contentEditable\")==\"true\"&&(b.contains(c)||b.equals(c)))break}b=\nb.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(b,c){if(b.type==CKEDITOR.NODE_ELEMENT&&!b.isEditable(false)){this.moveToPosition(b,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var l=0;b;){if(b.type==CKEDITOR.NODE_TEXT){c&&this.checkEndOfBlock()&&m.test(b.getText())?this.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(b,c?CKEDITOR.POSITION_AFTER_END:\nCKEDITOR.POSITION_BEFORE_START);l=1;break}if(b.type==CKEDITOR.NODE_ELEMENT)if(b.isEditable()){this.moveToPosition(b,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);l=1}else c&&(b.is(\"br\")&&this.checkEndOfBlock())&&this.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);var d=b,g=l,f=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(false)&&(f=d[c?\"getLast\":\"getFirst\"](a));!g&&!f&&(f=d[c?\"getPrevious\":\"getNext\"](a));b=f}return!!l},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},\nmoveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=\nthis.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",this.document),b,c,d,g=this.clone();g.optimize();if(d=g.startContainer.type==CKEDITOR.NODE_TEXT){c=g.startContainer.getText();b=g.startContainer.split(g.startOffset);\na.insertAfter(g.startContainer)}else g.insertNode(a);a.scrollIntoView();if(d){g.startContainer.setText(c);b.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;\n(function(){function b(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function c(a,b,c){for(a=a.getNextSourceNode(b,null,c);!f(a);)a=a.getNextSourceNode(b,null,c);return a}var a=/^[\\r\\n\\t ]+$/,f=CKEDITOR.dom.walker.bookmark(false,true),e=CKEDITOR.dom.walker.whitespaces(true),d=function(a){return f(a)&&e(a)};b.prototype={getNextParagraph:function(b){b=b||\"p\";if(!CKEDITOR.dtd[this.range.root.getName()][b])return null;var e,\nh,m,n,o,l;if(!this._.started){h=this.range.clone();h.shrink(CKEDITOR.NODE_ELEMENT,true);n=h.endContainer.hasAscendant(\"pre\",true)||h.startContainer.hasAscendant(\"pre\",true);h.enlarge(this.forceBrBreak&&!n||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!h.collapsed){n=new CKEDITOR.dom.walker(h.clone());var j=CKEDITOR.dom.walker.bookmark(true,true);n.evaluator=j;this._.nextNode=n.next();n=new CKEDITOR.dom.walker(h.clone());n.evaluator=j;n=n.previous();this._.lastNode=\nn.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){j=this.range.clone();j.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(j.checkEndOfBlock()){j=new CKEDITOR.dom.elementPath(j.endContainer,j.root);this._.lastNode=(j.block||j.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode){this._.lastNode=this._.docEndMarker=h.document.createText(\"\");this._.lastNode.insertAfter(n)}h=\nnull}this._.started=1}j=this._.nextNode;n=this._.lastNode;for(this._.nextNode=null;j;){var q=0,y=j.hasAscendant(\"pre\"),z=j.type!=CKEDITOR.NODE_ELEMENT,i=0;if(z)j.type==CKEDITOR.NODE_TEXT&&a.test(j.getText())&&(z=0);else{var s=j.getName();if(j.isBlockBoundary(this.forceBrBreak&&!y&&{br:1})){if(s==\"br\")z=1;else if(!h&&!j.getChildCount()&&s!=\"hr\"){e=j;m=j.equals(n);break}if(h){h.setEndAt(j,CKEDITOR.POSITION_BEFORE_START);if(s!=\"br\")this._.nextNode=j}q=1}else{if(j.getFirst()){if(!h){h=this.range.clone();\nh.setStartAt(j,CKEDITOR.POSITION_BEFORE_START)}j=j.getFirst();continue}z=1}}if(z&&!h){h=this.range.clone();h.setStartAt(j,CKEDITOR.POSITION_BEFORE_START)}m=(!q||z)&&j.equals(n);if(h&&!q)for(;!j.getNext(d)&&!m;){s=j.getParent();if(s.isBlockBoundary(this.forceBrBreak&&!y&&{br:1})){q=1;z=0;m||s.equals(n);h.setEndAt(s,CKEDITOR.POSITION_BEFORE_END);break}j=s;z=1;m=j.equals(n);i=1}z&&h.setEndAt(j,CKEDITOR.POSITION_AFTER_END);j=c(j,i,n);if((m=!j)||q&&h)break}if(!e){if(!h){this._.docEndMarker&&this._.docEndMarker.remove();\nreturn this._.nextNode=null}e=new CKEDITOR.dom.elementPath(h.startContainer,h.root);j=e.blockLimit;q={div:1,th:1,td:1};e=e.block;if(!e&&j&&!this.enforceRealBlocks&&q[j.getName()]&&h.checkStartOfBlock()&&h.checkEndOfBlock()&&!j.equals(h.root))e=j;else if(!e||this.enforceRealBlocks&&e.getName()==\"li\"){e=this.range.document.createElement(b);h.extractContents().appendTo(e);e.trim();h.insertNode(e);o=l=true}else if(e.getName()!=\"li\"){if(!h.checkStartOfBlock()||!h.checkEndOfBlock()){e=e.clone(false);h.extractContents().appendTo(e);\ne.trim();l=h.splitBlock();o=!l.wasStartOfBlock;l=!l.wasEndOfBlock;h.insertNode(e)}}else if(!m)this._.nextNode=e.equals(n)?null:c(h.getBoundaryNodes().endNode,1,n)}if(o)(h=e.getPrevious())&&h.type==CKEDITOR.NODE_ELEMENT&&(h.getName()==\"br\"?h.remove():h.getLast()&&h.getLast().$.nodeName.toLowerCase()==\"br\"&&h.getLast().remove());if(l)(h=e.getLast())&&h.type==CKEDITOR.NODE_ELEMENT&&h.getName()==\"br\"&&(CKEDITOR.env.ie||h.getPrevious(f)||h.getNext(f))&&h.remove();if(!this._.nextNode)this._.nextNode=m||\ne.equals(n)||!n?null:c(e,1,n);return e}};CKEDITOR.dom.range.prototype.createIterator=function(){return new b(this)}})();\nCKEDITOR.command=function(b,c){this.uiItems=[];this.exec=function(a){if(this.state==CKEDITOR.TRISTATE_DISABLED)return false;this.editorFocus&&b.focus();return this.fire(\"exec\")===false?true:c.exec.call(this,b,a)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}this.enable();return this.fire(\"refresh\",{editor:a,path:b})===false?true:c.refresh&&c.refresh.apply(this,arguments)!==false};CKEDITOR.tools.extend(this,\nc,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!c.context,state:CKEDITOR.TRISTATE_OFF});CKEDITOR.event.call(this)};\nCKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(!this.preserveState||typeof this.previousState==\"undefined\"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(b){if(this.state==b)return false;this.previousState=this.state;this.state=b;this.fire(\"state\");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&\nthis.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3;\nCKEDITOR.config={customConfig:\"config.js\",autoUpdateElement:!0,language:\"\",defaultLanguage:\"en\",contentsLangDirection:\"\",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:\"<!DOCTYPE html>\",bodyId:\"\",bodyClass:\"\",fullPage:!1,height:200,extraPlugins:\"\",removePlugins:\"\",protectedSource:[],tabIndex:0,width:\"\",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]};\n(function(){CKEDITOR.focusManager=function(b){if(b.focusManager)return b.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:b};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(){this._.timer&&clearTimeout(this._.timer);if(!this.hasFocus&&!this._.locked){var b=CKEDITOR.currentInstance;b&&b.focusManager.blur(1);this.hasFocus=true;(b=this._.editor.container)&&b.addClass(\"cke_focus\");this._.editor.fire(\"focus\")}},lock:function(){this._.locked=\n1},unlock:function(){delete this._.locked},blur:function(b){function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass(\"cke_focus\");this._.editor.fire(\"blur\")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var a=CKEDITOR.focusManager._.blurDelay;b||!a?c.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;c.call(this)},a,this)}},add:function(b,c){var a=b.getCustomData(\"focusmanager\");if(!a||a!=this){a&&a.remove(b);var a=\n\"focus\",f=\"blur\";if(c)if(CKEDITOR.env.ie){a=\"focusin\";f=\"focusout\"}else CKEDITOR.event.useCapture=1;var e={blur:function(){b.equals(this.currentActive)&&this.blur()},focus:function(){this.currentActive=b;this.focus()}};b.on(a,e.focus,this);b.on(f,e.blur,this);if(c)CKEDITOR.event.useCapture=0;b.setCustomData(\"focusmanager\",this);b.setCustomData(\"focusmanager_handlers\",e)}},remove:function(b){b.removeCustomData(\"focusmanager\");var c=b.removeCustomData(\"focusmanager_handlers\");b.removeListener(\"blur\",\nc.blur);b.removeListener(\"focus\",c.focus)}}})();CKEDITOR.keystrokeHandler=function(b){if(b.keystrokeHandler)return b.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:b};return this};\n(function(){var b,c=function(a){var a=a.data,c=a.getKeystroke(),d=this.keystrokes[c],g=this._.editor;b=g.fire(\"key\",{keyCode:c})===false;if(!b){d&&(b=g.execCommand(d,{from:\"keystrokeHandler\"})!==false);b||(b=!!this.blockedKeystrokes[c])}b&&a.preventDefault(true);return!b},a=function(a){if(b){b=false;a.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(b){b.on(\"keydown\",c,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)b.on(\"keypress\",a,this)}}})();\n(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,\"en-au\":1,\"en-ca\":1,\"en-gb\":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,\"fr-ca\":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,\"pt-br\":1,pt:1,ro:1,ru:1,sk:1,sl:1,\"sr-latn\":1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,\"zh-cn\":1,zh:1},load:function(b,c,a){if(!b||!CKEDITOR.lang.languages[b])b=this.detect(c,b);this[b]?a(b,this[b]):CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(\"lang/\"+\nb+\".js\"),function(){a(b,this[b])},this)},detect:function(b,c){var a=this.languages,c=c||navigator.userLanguage||navigator.language||b,f=c.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=f[1],f=f[2];a[e+\"-\"+f]?e=e+\"-\"+f:a[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||b}}})();\nCKEDITOR.scriptLoader=function(){var b={},c={};return{load:function(a,f,e,d){var g=typeof a==\"string\";g&&(a=[a]);e||(e=CKEDITOR);var k=a.length,h=[],m=[],n=function(a){f&&(g?f.call(e,a):f.call(e,h,m))};if(k===0)n(true);else{var o=function(a,b){(b?h:m).push(a);if(--k<=0){d&&CKEDITOR.document.getDocumentElement().removeStyle(\"cursor\");n(b)}},l=function(a,l){b[a]=1;var d=c[a];delete c[a];for(var j=0;j<d.length;j++)d[j](a,l)},j=function(a){if(b[a])o(a,true);else{var d=c[a]||(c[a]=[]);d.push(o);if(!(d.length>\n1)){var j=new CKEDITOR.dom.element(\"script\");j.setAttributes({type:\"text/javascript\",src:a});if(f)if(CKEDITOR.env.ie)j.$.onreadystatechange=function(){if(j.$.readyState==\"loaded\"||j.$.readyState==\"complete\"){j.$.onreadystatechange=null;l(a,true)}};else{j.$.onload=function(){setTimeout(function(){l(a,true)},0)};j.$.onerror=function(){l(a,false)}}j.appendTo(CKEDITOR.document.getHead())}}};d&&CKEDITOR.document.getDocumentElement().setStyle(\"cursor\",\"wait\");for(var q=0;q<k;q++)j(a[q])}}}}();\nCKEDITOR.resourceManager=function(b,c){this.basePath=b;this.fileName=c;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}};\nCKEDITOR.resourceManager.prototype={add:function(b,c){if(this.registered[b])throw'[CKEDITOR.resourceManager.add] The resource name \"'+b+'\" is already registered.';var a=this.registered[b]=c||{};a.name=b;a.path=this.getPath(b);CKEDITOR.fire(b+CKEDITOR.tools.capitalize(this.fileName)+\"Ready\",a);return this.get(b)},get:function(b){return this.registered[b]||null},getPath:function(b){var c=this.externals[b];return CKEDITOR.getUrl(c&&c.dir||this.basePath+b+\"/\")},getFilePath:function(b){var c=this.externals[b];\nreturn CKEDITOR.getUrl(this.getPath(b)+(c&&typeof c.file==\"string\"?c.file:this.fileName+\".js\"))},addExternal:function(b,c,a){for(var b=b.split(\",\"),f=0;f<b.length;f++)this.externals[b[f]]={dir:c,file:a}},load:function(b,c,a){CKEDITOR.tools.isArray(b)||(b=b?[b]:[]);for(var f=this.loaded,e=this.registered,d=[],g={},k={},h=0;h<b.length;h++){var m=b[h];if(m)if(!f[m]&&!e[m]){var n=this.getFilePath(m);d.push(n);n in g||(g[n]=[]);g[n].push(m)}else k[m]=this.get(m)}CKEDITOR.scriptLoader.load(d,function(b,\nl){if(l.length)throw'[CKEDITOR.resourceManager.load] Resource name \"'+g[l[0]].join(\",\")+'\" was not found at \"'+l[0]+'\".';for(var d=0;d<b.length;d++)for(var e=g[b[d]],h=0;h<e.length;h++){var m=e[h];k[m]=this.get(m);f[m]=1}c.call(a,k)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager(\"plugins/\",\"plugin\");\nCKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(b){var c={};return function(a,f,e){var d={},g=function(a){b.call(this,a,function(a){CKEDITOR.tools.extend(d,a);var b=[],k;for(k in a){var o=a[k],l=o&&o.requires;if(!c[k]){if(o.icons)for(var j=o.icons.split(\",\"),q=0;q<j.length;q++)CKEDITOR.skin.addIcon(j[q],o.path+\"icons/\"+j[q]+\".png\");c[k]=1}if(l){l.split&&(l=l.split(\",\"));for(o=0;o<l.length;o++)d[l[o]]||b.push(l[o])}}if(b.length)g.call(this,b);else{for(k in d){o=d[k];if(o.onLoad&&\n!o.onLoad._called){o.onLoad()===false&&delete d[k];o.onLoad._called=1}}f&&f.call(e||window,d)}},this)};g.call(this,a)}});CKEDITOR.plugins.setLang=function(b,c,a){var f=this.get(b),b=f.langEntries||(f.langEntries={}),f=f.lang||(f.lang=[]);f.split&&(f=f.split(\",\"));CKEDITOR.tools.indexOf(f,c)==-1&&f.push(c);b[c]=a};CKEDITOR.ui=function(b){if(b.ui)return b.ui;this.items={};this.instances={};this.editor=b;this._={handlers:{}};return this};\nCKEDITOR.ui.prototype={add:function(b,c,a){a.name=b.toLowerCase();var f=this.items[b]={type:c,command:a.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(f,a)},get:function(b){return this.instances[b]},create:function(b){var c=this.items[b],a=c&&this._.handlers[c.type],f=c&&c.command&&this.editor.getCommand(c.command),a=a&&a.create.apply(this,c.args);this.instances[b]=a;f&&f.uiItems.push(a);if(a&&!a.type)a.type=c.type;return a},addHandler:function(b,c){this._.handlers[b]=\nc},space:function(b){return CKEDITOR.document.getById(this.spaceId(b))},spaceId:function(b){return this.editor.id+\"_\"+b}};CKEDITOR.event.implementOn(CKEDITOR.ui);\n(function(){function b(b,j,o){CKEDITOR.event.call(this);b=b&&CKEDITOR.tools.clone(b);if(j!==void 0){if(j instanceof CKEDITOR.dom.element){if(!o)throw Error(\"One of the element mode must be specified.\");}else throw Error(\"Expect element of type CKEDITOR.dom.element.\");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&o==CKEDITOR.ELEMENT_MODE_INLINE)throw Error(\"Inline element mode is not supported on IE quirks.\");if(o==CKEDITOR.ELEMENT_MODE_INLINE&&!j.is(CKEDITOR.dtd.$editable)||o==CKEDITOR.ELEMENT_MODE_REPLACE&&\nj.is(CKEDITOR.dtd.$nonBodyContent))throw Error('The specified element mode is not supported on element: \"'+j.getName()+'\".');this.element=j;this.elementMode=o;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(j.getId()||j.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||c();this.id=CKEDITOR.tools.getNextId();this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=\nnew CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on(\"mode\",a);this.on(\"readOnly\",a);this.on(\"selectionChange\",f);this.on(\"instanceReady\",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire(\"instanceCreated\",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){d(this,b)},0,this)}function c(){do var a=\"editor\"+ ++n;while(CKEDITOR.instances[a]);return a}function a(){var a,b=this.commands,c=this.mode;if(c)for(var d in b){a=b[d];\na[a.startDisabled?\"disable\":this.readOnly&&!a.readOnly?\"disable\":a.modes[c]?\"enable\":\"disable\"]()}}function f(a){var b=this.commands,c=a.editor,d=a.data.path,o;for(o in b){a=b[o];a.contextSensitive&&a.refresh(c,d)}}function e(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDITOR.getUrl(b),c=o[b]||(o[b]={});if(c.fn){c.fn.call(a,a.config);(CKEDITOR.getUrl(a.config.customConfig)==b||!e(a))&&a.fireOnce(\"customConfigLoaded\")}else CKEDITOR.scriptLoader.load(b,function(){c.fn=CKEDITOR.editorConfig?\nCKEDITOR.editorConfig:function(){};e(a)});return true}function d(a,b){a.on(\"customConfigLoaded\",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,true);delete a.config.on}a.readOnly=!(!a.config.readOnly&&!(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&a.element.getAttribute(\"disabled\")));a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&!CKEDITOR.dtd[a.element.getName()].p;a.tabIndex=\na.config.tabIndex||a.element&&a.element.getAttribute(\"tabindex\")||0;if(a.config.skin)CKEDITOR.skinName=a.config.skin;a.fireOnce(\"configLoaded\");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);g(a)});if(b&&b.customConfig!=void 0)a.config.customConfig=b.customConfig;e(a)||a.fireOnce(\"customConfigLoaded\")}function g(a){CKEDITOR.skin.loadPart(\"editor\",function(){k(a)})}function k(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,c){a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);\nif(CKEDITOR.env.gecko&&CKEDITOR.env.version<10900&&a.lang.dir==\"rtl\")a.lang.dir=\"ltr\";if(!a.config.contentsLangDirection)a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir;a.fire(\"langLoaded\");h(a)})}function h(a){var b=a.config,c=b.plugins,d=b.extraPlugins,o=b.removePlugins;if(d)var e=RegExp(\"(?:^|,)(?:\"+d.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\"g\"),c=c.replace(e,\"\"),c=c+(\",\"+d);if(o)var g=RegExp(\"(?:^|,)(?:\"+o.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\n\"g\"),c=c.replace(g,\"\");CKEDITOR.env.air&&(c=c+\",adobeair\");CKEDITOR.plugins.load(c.split(\",\"),function(c){var d=[],o=[],e=[];a.plugins=c;for(var f in c){var i=c[f],h=i.lang,q=null,t=i.requires,k;CKEDITOR.tools.isArray(t)&&(t=t.join(\",\"));if(t&&(k=t.match(g)))for(;t=k.pop();)CKEDITOR.tools.setTimeout(function(a,b){throw Error('Plugin \"'+a.replace(\",\",\"\")+'\" cannot be removed from the plugins list, because it\\'s required by \"'+b+'\" plugin.');},0,null,[t,f]);if(h&&!a.lang[f]){h.split&&(h=h.split(\",\"));\nif(CKEDITOR.tools.indexOf(h,a.langCode)>=0)q=a.langCode;else{q=a.langCode.replace(/-.*/,\"\");q=q!=a.langCode&&CKEDITOR.tools.indexOf(h,q)>=0?q:CKEDITOR.tools.indexOf(h,\"en\")>=0?\"en\":h[0]}if(!i.langEntries||!i.langEntries[q])e.push(CKEDITOR.getUrl(i.path+\"lang/\"+q+\".js\"));else{a.lang[f]=i.langEntries[q];q=null}}o.push(q);d.push(i)}CKEDITOR.scriptLoader.load(e,function(){for(var c=[\"beforeInit\",\"init\",\"afterInit\"],e=0;e<c.length;e++)for(var g=0;g<d.length;g++){var f=d[g];e===0&&(o[g]&&f.lang&&f.langEntries)&&\n(a.lang[f.name]=f.langEntries[o[g]]);if(f[c[e]])f[c[e]](a)}a.fireOnce(\"pluginsLoaded\");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(g=0;g<a.config.blockedKeystrokes.length;g++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[g]]=1;a.fireOnce(\"loaded\");CKEDITOR.fire(\"instanceLoaded\",null,a)})})}function m(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData();this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is(\"textarea\")?\na.setValue(b):a.setHtml(b);return true}return false}b.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=b;var n=0,o={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){return this.commands[a]=new CKEDITOR.command(this,b)},destroy:function(a){this.fire(\"beforeDestroy\");!a&&m.call(this);this.editable(null);this.fire(\"destroy\");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire(\"instanceDestroyed\",null,this)},elementPath:function(a){return(a=a||this.getSelection().getStartElement())?\nnew CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var c=this.getCommand(a),d={name:a,commandData:b,command:c};if(c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&this.fire(\"beforeCommandExec\",d)!==true){d.returnValue=c.exec(d.commandData);if(!c.async&&this.fire(\"afterCommandExec\",d)!==true)return d.returnValue}return false},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&\nthis.fire(\"beforeGetData\");var b=this._.data;if(typeof b!=\"string\")b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is(\"textarea\")?b.getValue():b.getHtml():\"\";b={dataValue:b};!a&&this.fire(\"getData\",b);return b.dataValue},getSnapshot:function(){var a=this.fire(\"getSnapshot\");if(typeof a!=\"string\"){var b=this.element;b&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a=b.is(\"textarea\")?b.getValue():b.getHtml())}return a},loadSnapshot:function(a){this.fire(\"loadSnapshot\",a)},\nsetData:function(a,b,c){if(b)this.on(\"dataReady\",function(a){a.removeListener();b.call(a.editor)});a={dataValue:a};!c&&this.fire(\"setData\",a);this._.data=a.dataValue;!c&&this.fire(\"afterSetData\",a)},setReadOnly:function(a){a=a==void 0||a;if(this.readOnly!=a){this.readOnly=a;this.editable().setReadOnly(a);this.fire(\"readOnly\")}},insertHtml:function(a,b){this.fire(\"insertHtml\",{dataValue:a,mode:b})},insertText:function(a){this.fire(\"insertText\",a)},insertElement:function(a){this.fire(\"insertElement\",\na)},focus:function(){this.fire(\"beforeFocus\")},checkDirty:function(){return this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return m.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c,d,o=b.length;o--;){c=b[o];d=0;if(CKEDITOR.tools.isArray(c)){d=c[1];c=c[0]}d?a[c]=d:delete a[c]}}})})();\nCKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:RegExp(\"<(?:(?:\\\\/([^>]+)>)|(?:!--([\\\\S|\\\\s]*?)--\\>)|(?:([^\\\\s>]+)\\\\s*((?:(?:\\\"[^\\\"]*\\\")|(?:'[^']*')|[^\\\"'>])*)\\\\/?>))\",\"g\")}};\n(function(){var b=/([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g,c={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(a){for(var f,e,d=0,g;f=this._.htmlPartsRegex.exec(a);){e=f.index;if(e>d){d=a.substring(d,e);if(g)g.push(d);else this.onText(d)}d=\nthis._.htmlPartsRegex.lastIndex;if(e=f[1]){e=e.toLowerCase();if(g&&CKEDITOR.dtd.$cdata[e]){this.onCDATA(g.join(\"\"));g=null}if(!g){this.onTagClose(e);continue}}if(g)g.push(f[0]);else if(e=f[3]){e=e.toLowerCase();if(!/=\"/.test(e)){var k={},h;f=f[4];var m=!!(f&&f.charAt(f.length-1)==\"/\");if(f)for(;h=b.exec(f);){var n=h[1].toLowerCase();h=h[2]||h[3]||h[4]||\"\";k[n]=!h&&c[n]?n:h}this.onTagOpen(e,k,m);!g&&CKEDITOR.dtd.$cdata[e]&&(g=[])}}else if(e=f[2])this.onComment(e)}if(a.length>d)this.onText(a.substring(d,\na.length))}}})();\nCKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(b){this._.output.push(\"<\",b)},openTagClose:function(b,c){c?this._.output.push(\" />\"):this._.output.push(\">\")},attribute:function(b,c){typeof c==\"string\"&&(c=CKEDITOR.tools.htmlEncodeAttr(c));this._.output.push(\" \",b,'=\"',c,'\"')},closeTag:function(b){this._.output.push(\"</\",b,\">\")},text:function(b){this._.output.push(b)},comment:function(b){this._.output.push(\"<\\!--\",b,\"--\\>\")},write:function(b){this._.output.push(b)},\nreset:function(){this._.output=[];this._.indent=false},getHtml:function(b){var c=this._.output.join(\"\");b&&this.reset();return c}}});CKEDITOR.htmlParser.comment=function(b){this.value=b;this._={isBlockLike:false}};CKEDITOR.htmlParser.comment.prototype={type:CKEDITOR.NODE_COMMENT,writeHtml:function(b,c){var a=this.value;if(c){if(!(a=c.onComment(a,this)))return;if(typeof a!=\"string\"){a.parent=this.parent;a.writeHtml(b,c);return}}b.comment(a)}};\n(function(){CKEDITOR.htmlParser.text=function(b){this.value=b;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype={type:CKEDITOR.NODE_TEXT,writeHtml:function(b,c){var a=this.value;(!c||(a=c.onText(a,this)))&&b.text(a)}}})();(function(){CKEDITOR.htmlParser.cdata=function(b){this.value=b};CKEDITOR.htmlParser.cdata.prototype={type:CKEDITOR.NODE_TEXT,writeHtml:function(b){b.write(this.value)}}})();\nCKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}};\n(function(){function b(a){return a.name==\"a\"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var c=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),a={ol:1,ul:1},f=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1});CKEDITOR.htmlParser.fragment.fromHtml=function(e,d,g){function k(a){var b;if(y.length>0)for(var c=0;c<y.length;c++){var d=y[c],l=d.name,o=CKEDITOR.dtd[l],j=i.name&&\nCKEDITOR.dtd[i.name];if((!j||j[l])&&(!a||!o||o[a]||!CKEDITOR.dtd[a])){if(!b){h();b=1}d=d.clone();d.parent=i;i=d;y.splice(c,1);c--}else if(l==i.name){n(i,i.parent,1);c--}}}function h(){for(;z.length;)n(z.shift(),i)}function m(a){if(a._.isBlockLike&&a.name!=\"pre\"&&a.name!=\"textarea\"){var b=a.children.length,c=a.children[b-1],d;if(c&&c.type==CKEDITOR.NODE_TEXT)(d=CKEDITOR.tools.rtrim(c.value))?c.value=d:a.children.length=b-1}}function n(a,c,d){var c=c||i||q,l=i;if(a.previous===void 0){if(o(c,a)){i=c;\nj.onTagOpen(g,{});a.returnPoint=c=i}m(a);(!b(a)||a.children.length)&&c.add(a);a.name==\"pre\"&&(A=false);a.name==\"textarea\"&&(s=false)}if(a.returnPoint){i=a.returnPoint;delete a.returnPoint}else i=d?c:l}function o(a,b){if((a==q||a.name==\"body\")&&g&&(!a.name||CKEDITOR.dtd[a.name][g])){var c,d;return(c=b.attributes&&(d=b.attributes[\"data-cke-real-element-type\"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&!(c in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function l(a,b){return a in CKEDITOR.dtd.$listItem||\na in CKEDITOR.dtd.$tableContent?a==b||a==\"dt\"&&b==\"dd\"||a==\"dd\"&&b==\"dt\":false}var j=new CKEDITOR.htmlParser,q=d instanceof CKEDITOR.htmlParser.element?d:typeof d==\"string\"?new CKEDITOR.htmlParser.element(d):new CKEDITOR.htmlParser.fragment,y=[],z=[],i=q,s=q.name==\"textarea\",A=q.name==\"pre\";j.onTagOpen=function(d,o,g,e){o=new CKEDITOR.htmlParser.element(d,o);if(o.isUnknown&&g)o.isEmpty=true;o.isOptionalClose=e;if(b(o))y.push(o);else{if(d==\"pre\")A=true;else{if(d==\"br\"&&A){i.add(new CKEDITOR.htmlParser.text(\"\\n\"));\nreturn}d==\"textarea\"&&(s=true)}if(d==\"br\")z.push(o);else{for(;;){e=(g=i.name)?CKEDITOR.dtd[g]||(i._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!o.isUnknown&&!i.isUnknown&&!e[d])if(i.isOptionalClose)j.onTagClose(g);else if(d in a&&g in a){g=i.children;(g=g[g.length-1])&&g.name==\"li\"||n(g=new CKEDITOR.htmlParser.element(\"li\"),i);!o.returnPoint&&(o.returnPoint=i);i=g}else if(d in CKEDITOR.dtd.$listItem&&!l(d,g))j.onTagOpen(d==\"li\"?\"ul\":\"dl\",{},0,1);else if(g in c&&!l(d,g)){!o.returnPoint&&\n(o.returnPoint=i);i=i.parent}else{g in CKEDITOR.dtd.$inline&&y.unshift(i);if(i.parent)n(i,i.parent,1);else{o.isOrphan=1;break}}else break}k(d);h();o.parent=i;o.isEmpty?n(o):i=o}}};j.onTagClose=function(a){for(var b=y.length-1;b>=0;b--)if(a==y[b].name){y.splice(b,1);return}for(var c=[],d=[],o=i;o!=q&&o.name!=a;){o._.isBlockLike||d.unshift(o);c.push(o);o=o.returnPoint||o.parent}if(o!=q){for(b=0;b<c.length;b++){var l=c[b];n(l,l.parent)}i=o;o._.isBlockLike&&h();n(o,o.parent);if(o==i)i=i.parent;y=y.concat(d)}a==\n\"body\"&&(g=false)};j.onText=function(b){if((!i._.hasInlineStarted||z.length)&&!A&&!s){b=CKEDITOR.tools.ltrim(b);if(b.length===0)return}var d=i.name,l=d?CKEDITOR.dtd[d]||(i._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!s&&!l[\"#\"]&&d in c){j.onTagOpen(d in a?\"li\":d==\"dl\"?\"dd\":d==\"table\"?\"tr\":d==\"tr\"?\"td\":\"\");j.onText(b)}else{h();k();!A&&!s&&(b=b.replace(/[\\t\\r\\n ]{2,}|[\\t\\r\\n]/g,\" \"));b=new CKEDITOR.htmlParser.text(b);if(o(i,b))this.onTagOpen(g,{},0,1);i.add(b)}};j.onCDATA=function(a){i.add(new CKEDITOR.htmlParser.cdata(a))};\nj.onComment=function(a){h();k();i.add(new CKEDITOR.htmlParser.comment(a))};j.parse(e);for(h(!CKEDITOR.env.ie&&1);i!=q;)n(i,i.parent,1);m(q);return q};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=b>0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length===0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this;\nthis.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},writeHtml:function(a,b){var c;this.filterChildren=function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml.call(this,a,b);a=a.getHtml();this.children=(new CKEDITOR.htmlParser.fragment.fromHtml(a)).children;c=1};b&&b.onRoot(this);this.writeChildrenHtml(a,c?null:b)},writeChildrenHtml:function(a,b,c){if(c&&!this.parent&&b)b.onRoot(this);\nfor(c=0;c<this.children.length;c++)this.children[c].writeHtml(a,b)}}})();\n(function(){function b(a,b){for(var c=0;a&&c<b.length;c++)var e=b[c],a=a.replace(e[0],e[1]);return a}function c(a,b,c){typeof b==\"function\"&&(b=[b]);var e,f;f=a.length;var n=b&&b.length;if(n){for(e=0;e<f&&a[e].pri<c;e++);for(f=n-1;f>=0;f--)if(n=b[f]){n.pri=c;a.splice(e,0,n)}}}function a(a,b,c){if(b)for(var e in b){var m=a[e];a[e]=f(m,b[e],c);m||a.$length++}}function f(a,b,f){if(b){b.pri=f;if(a){if(a.splice)c(a,b,f);else{a=a.pri>f?[b,a]:[a,b];a.filter=e}return a}return b.filter=b}}function e(a){for(var b=\na.type||a instanceof CKEDITOR.htmlParser.fragment,c=0;c<this.length;c++){if(b)var e=a.type,f=a.name;var n=this[c].apply(window,arguments);if(n===false)return n;if(b){if(n&&(n.name!=f||n.type!=e))return n}else if(typeof n!=\"string\")return n;n!=void 0&&(a=n)}return a}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(a){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};a&&this.addRules(a,10)},proto:{addRules:function(b,e){typeof e!=\"number\"&&(e=10);\nc(this._.elementNames,b.elementNames,e);c(this._.attributeNames,b.attributeNames,e);a(this._.elements,b.elements,e);a(this._.attributes,b.attributes,e);this._.text=f(this._.text,b.text,e)||this._.text;this._.comment=f(this._.comment,b.comment,e)||this._.comment;this._.root=f(this._.root,b.root,e)||this._.root},onElementName:function(a){return b(a,this._.elementNames)},onAttributeName:function(a){return b(a,this._.attributeNames)},onText:function(a){var b=this._.text;return b?b.filter(a):a},onComment:function(a,\nb){var c=this._.comment;return c?c.filter(a,b):a},onRoot:function(a){var b=this._.root;return b?b.filter(a):a},onElement:function(a){for(var b=[this._.elements[\"^\"],this._.elements[a.name],this._.elements.$],c,e=0;e<3;e++)if(c=b[e]){c=c.filter(a,this);if(c===false)return null;if(c&&c!=a)return this.onNode(c);if(a.parent&&!a.name)break}return a},onNode:function(a){var b=a.type;return b==CKEDITOR.NODE_ELEMENT?this.onElement(a):b==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a.value)):\nb==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a.value)):null},onAttribute:function(a,b,c){if(b=this._.attributes[b]){a=b.filter(c,a,this);if(a===false)return false;if(typeof a!=\"undefined\")return a}return c}}})})();\n(function(){function b(b,c){function o(a){return a||CKEDITOR.env.ie?new CKEDITOR.htmlParser.text(\" \"):new CKEDITOR.htmlParser.element(\"br\",{\"data-cke-bogus\":1})}function l(b,c){return function(l){if(l.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var e=[],g=a(l),i,K;if(g)for(j(g,1)&&e.push(g);g;){if(d(g)&&(i=f(g))&&j(i))if((K=f(i))&&!d(K))e.push(i);else{var h=i,q=o(t),m=h.parent.children,y=CKEDITOR.tools.indexOf(m,h);m.splice(y+1,0,q);m=h.next;h.next=q;q.previous=h;q.parent=h.parent;q.next=m;k(i)}g=g.previous}for(g=\n0;g<e.length;g++)k(e[g]);if(e=CKEDITOR.env.opera&&!b||(typeof c==\"function\"?c(l)!==false:c))if(!t&&CKEDITOR.env.ie&&l.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)e=false;else if(!t&&CKEDITOR.env.ie&&(document.documentMode>7||l.name in CKEDITOR.dtd.tr||l.name in CKEDITOR.dtd.$listItem))e=false;else{e=a(l);e=!e||l.name==\"form\"&&e.name==\"input\"}e&&l.add(o(b))}}}function j(a,b){if((!t||!CKEDITOR.env.ie)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name==\"br\"&&!a.attributes[\"data-cke-eol\"])return true;var c;if(a.type==\nCKEDITOR.NODE_TEXT&&(c=a.value.match(s))){if(c.index){g(a,new CKEDITOR.htmlParser.text(a.value.substring(0,c.index)));a.value=c[0]}if(CKEDITOR.env.ie&&t&&(!b||a.parent.name in h))return true;if(!t)if((c=a.previous)&&c.name==\"br\"||!c||d(c))return true}return false}var i={elements:{}},t=c==\"html\",h=CKEDITOR.tools.extend({},E),q;for(q in h)\"#\"in B[q]||delete h[q];for(q in h)i.elements[q]=l(t,b.config.fillEmptyBlocks!==false);i.root=l(t);i.elements.br=function(a){return function(b){if(b.parent.type!=\nCKEDITOR.NODE_DOCUMENT_FRAGMENT){var c=b.attributes;if(\"data-cke-bogus\"in c||\"data-cke-eol\"in c)delete c[\"data-cke-bogus\"];else{for(c=b.next;c&&e(c);)c=c.next;var l=f(b);if(!c&&d(b.parent)){b=b.parent;c=o(a);l=b.children[b.children.length-1];b.children.push(c);c.parent=b;if(l){l.next=c;c.previous=l}}else d(c)&&(l&&!d(l))&&g(c,o(a))}}}}(t);return i}function c(a){return a.enterMode!=CKEDITOR.ENTER_BR&&a.autoParagraph!==false?a.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\":false}function a(a){for(a=a.children[a.children.length-\n1];a&&e(a);)a=a.previous;return a}function f(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes[\"data-cke-bookmark\"]}function d(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in E||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function g(a,b){var c=a.parent.children,d=CKEDITOR.tools.indexOf(c,a);c.splice(d,0,b);c=a.previous;a.previous=b;b.next=a;b.parent=a.parent;if(c){b.previous=\nc;c.next=b}}function k(a){var b=a.parent.children,c=CKEDITOR.tools.indexOf(b,a),d=a.previous,a=a.next;d&&(d.next=a);a&&(a.previous=d);b.splice(c,1)}function h(a){var b=a.parent;return b?CKEDITOR.tools.indexOf(b.children,a):-1}function m(a){a=a.attributes;a.contenteditable!=\"false\"&&(a[\"data-cke-editable\"]=a.contenteditable?\"true\":1);a.contenteditable=\"false\"}function n(a){a=a.attributes;switch(a[\"data-cke-editable\"]){case \"true\":a.contenteditable=\"true\";break;case \"1\":delete a.contenteditable}}function o(a){return a.replace(v,\nfunction(a,b,c){return\"<\"+b+c.replace(t,function(a,b){return!/^on/.test(b)&&c.indexOf(\"data-cke-saved-\"+b)==-1?\" data-cke-saved-\"+a+\" data-cke-\"+CKEDITOR.rnd+\"-\"+a:a})+\">\"})}function l(a){return a.replace(w,function(a){return\"<cke:encoded>\"+encodeURIComponent(a)+\"</cke:encoded>\"})}function j(a){return a.replace(I,function(a,b){return decodeURIComponent(b)})}function q(a){return a.replace(/<\\!--(?!{cke_protected})[\\s\\S]+?--\\>/g,function(a){return\"<\\!--\"+A+\"{C}\"+encodeURIComponent(a).replace(/--/g,\n\"%2D%2D\")+\"--\\>\"})}function y(a){return a.replace(/<\\!--\\{cke_protected\\}\\{C\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)})}function z(a,b){var c=b._.dataStore;return a.replace(/<\\!--\\{cke_protected\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\\{cke_protected_(\\d+)\\}/g,function(a,b){return c&&c[b]||\"\"})}function i(a,b){for(var c=[],d=b.config.protectedSource,o=b._.dataStore||(b._.dataStore={id:1}),l=/<\\!--\\{cke_temp(comment)?\\}(\\d*?)--\\>/g,d=[/<script[\\s\\S]*?<\\/script>/gi,\n/<noscript[\\s\\S]*?<\\/noscript>/gi].concat(d),a=a.replace(/<\\!--[\\s\\S]*?--\\>/g,function(a){return\"<\\!--{cke_tempcomment}\"+(c.push(a)-1)+\"--\\>\"}),j=0;j<d.length;j++)a=a.replace(d[j],function(a){a=a.replace(l,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:\"<\\!--{cke_temp}\"+(c.push(a)-1)+\"--\\>\"});a=a.replace(l,function(a,b,d){return\"<\\!--\"+A+(b?\"{C}\":\"\")+encodeURIComponent(c[d]).replace(/--/g,\"%2D%2D\")+\"--\\>\"});return a.replace(/(['\"]).*?\\1/g,function(a){return a.replace(/<\\!--\\{cke_protected\\}([\\s\\S]+?)--\\>/g,\nfunction(a,b){o[o.id]=decodeURIComponent(b);return\"{cke_protected_\"+o.id++ +\"}\"})})}CKEDITOR.htmlDataProcessor=function(a){var c,d;this.editor=a;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(u);c.addRules(b(a,\"data\"));d.addRules(r);d.addRules(b(a,\"html\"))};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,d){var a=i(a,this.editor),a=o(a),a=l(a),a=a.replace(G,\"$1cke:$2\"),a=a.replace(Q,\n\"<cke:$1$2></cke:$1>\"),a=CKEDITOR.env.opera?a:a.replace(/(<pre\\b[^>]*>)(\\r\\n|\\n)/g,\"$1$2$2\"),e=this.editor.editable(),f;!b&&b!==null&&(b=e.getName());e=b||e.getName();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&e==\"pre\"){e=\"div\";a=\"<pre>\"+a+\"</pre>\";f=1}e=this.editor.document.createElement(e);e.setHtml(\"a\"+a);a=e.getHtml().substr(1);a=a.replace(RegExp(\" data-cke-\"+CKEDITOR.rnd+\"-\",\"ig\"),\" \");f&&(a=a.replace(/^<pre>|<\\/pre>$/gi,\"\"));a=a.replace(C,\"$1$2\");a=j(a);a=y(a);a=CKEDITOR.htmlParser.fragment.fromHtml(a,\nb,d===false?false:c(this.editor.config));b=new CKEDITOR.htmlParser.basicWriter;a.writeChildrenHtml(b,this.dataFilter,1);a=b.getHtml(true);return a=q(a)},toDataFormat:function(a){var b=this.editor.editable(),d=this.writer,a=CKEDITOR.htmlParser.fragment.fromHtml(a,b.getName(),c(this.editor.config));d.reset();a.writeChildrenHtml(d,this.htmlFilter,1);d=d.getHtml(true);d=y(d);return d=z(d,this.editor)}};var s=/(?:&nbsp;|\\xa0)$/,A=\"{cke_protected}\",B=CKEDITOR.dtd,p=[\"caption\",\"colgroup\",\"col\",\"thead\",\"tfoot\",\n\"tbody\"],E=CKEDITOR.tools.extend({},B.$blockLimit,B.$block),u={elements:{},attributeNames:[[/^on/,\"data-cke-pa-on\"]]},r={elementNames:[[/^cke:/,\"\"],[/^\\?xml:namespace$/,\"\"]],attributeNames:[[/^data-cke-(saved|pa)-/,\"\"],[/^data-cke-.*/,\"\"],[\"hidefocus\",\"\"]],elements:{$:function(a){var b=a.attributes;if(b){if(b[\"data-cke-temp\"])return false;for(var c=[\"name\",\"href\",\"src\"],d,o=0;o<c.length;o++){d=\"data-cke-saved-\"+c[o];d in b&&delete b[c[o]]}}return a},table:function(a){a.children.slice(0).sort(function(a,\nb){var c,d;if(a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type){c=CKEDITOR.tools.indexOf(p,a.name);d=CKEDITOR.tools.indexOf(p,b.name)}if(!(c>-1&&d>-1&&c!=d)){c=h(a);d=h(b)}return c>d?1:-1})},embed:function(a){var b=a.parent;if(b&&b.name==\"object\"){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},param:function(a){a.children=[];a.isEmpty=true;return a},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes[\"data-cke-saved-name\"])return false},\nspan:function(a){a.attributes[\"class\"]==\"Apple-style-span\"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes[\"class\"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));if(!a.attributes.type)a.attributes.type=\"text/css\"},title:function(a){var b=a.children[0];b&&(b.value=a.attributes[\"data-cke-title\"]||\"\")}},attributes:{\"class\":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\\s+)cke_[^\\s]*/g,\n\"\"))||false}}};if(CKEDITOR.env.ie)r.attributes.style=function(a){return a.replace(/(^|;)([^\\:]+)/g,function(a){return a.toLowerCase()})};for(var D in{input:1,textarea:1}){u.elements[D]=m;r.elements[D]=n}var v=/<(a|area|img|input|source)\\b([^>]*)>/gi,t=/\\b(on\\w+|href|src|name)\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|(?:[^ \"'>]+))/gi,w=/(?:<style(?=[ >])[^>]*>[\\s\\S]*<\\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,I=/<cke:encoded>([^<]*)<\\/cke:encoded>/gi,G=/(<\\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,\nC=/(<\\/?)cke:((?:html|body|head|title)[^>]*>)/gi,Q=/<cke:(param|embed)([^>]*?)\\/?>(?!\\s*<\\/cke:\\1)/gi})();\nCKEDITOR.htmlParser.element=function(b,c){this.name=b;this.attributes=c||{};this.children=[];var a=b||\"\",f=a.match(/^cke:(.*)/);f&&(a=f[1]);a=!(!CKEDITOR.dtd.$nonBodyContent[a]&&!CKEDITOR.dtd.$block[a]&&!CKEDITOR.dtd.$listItem[a]&&!CKEDITOR.dtd.$tableContent[a]&&!(CKEDITOR.dtd.$nonEditable[a]||a==\"br\"));this.isEmpty=!!CKEDITOR.dtd.$empty[b];this.isUnknown=!CKEDITOR.dtd[b];this._={isBlockLike:a,hasInlineStarted:this.isEmpty||!a}};\nCKEDITOR.htmlParser.cssStyle=function(b){var c={};((b instanceof CKEDITOR.htmlParser.element?b.attributes.style:b)||\"\").replace(/&quot;/g,'\"').replace(/\\s*([^ :;]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,b,e){b==\"font-family\"&&(e=e.replace(/[\"']/g,\"\"));c[b.toLowerCase()]=e});return{rules:c,populate:function(a){var b=this.toString();if(b)a instanceof CKEDITOR.dom.element?a.setAttribute(\"style\",b):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=b:a.style=b},toString:function(){var a=[],b;\nfor(b in c)c[b]&&a.push(b,\":\",c[b],\";\");return a.join(\"\")}}};\n(function(){var b=function(b,a){b=b[0];a=a[0];return b<a?-1:b>a?1:0};CKEDITOR.htmlParser.element.prototype={type:CKEDITOR.NODE_ELEMENT,add:CKEDITOR.htmlParser.fragment.prototype.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},writeHtml:function(c,a){var f=this.attributes,e=this,d=e.name,g,k,h,m;e.filterChildren=function(){if(!m){var b=new CKEDITOR.htmlParser.basicWriter;CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.call(e,b,a);e.children=(new CKEDITOR.htmlParser.fragment.fromHtml(b.getHtml(),\ne.clone(),0)).children;m=1}};if(a){if(!this.parent)a.onRoot(this);for(;;){if(!(d=a.onElementName(d)))return;e.name=d;if(!(e=a.onElement(e)))return;e.parent=this.parent;if(e.name==d)break;if(e.type!=CKEDITOR.NODE_ELEMENT){e.writeHtml(c,a);return}d=e.name;if(!d){for(var d=0,n=this.children.length;d<n;d++)this.children[d].parent=e.parent;this.writeChildrenHtml.call(e,c,m?null:a);return}}f=e.attributes}c.openTag(d,f);for(var n=[],o=0;o<2;o++)for(g in f){k=g;h=f[g];if(o==1)n.push([g,h]);else if(a){for(;;)if(k=\na.onAttributeName(g))if(k!=g){delete f[g];g=k}else break;else{delete f[g];break}k&&((h=a.onAttribute(e,k,h))===false?delete f[k]:f[k]=h)}}c.sortAttributes&&n.sort(b);f=n.length;for(o=0;o<f;o++){g=n[o];c.attribute(g[0],g[1])}c.openTagClose(d,e.isEmpty);if(!e.isEmpty){this.writeChildrenHtml.call(e,c,m?null:a);c.closeTag(d)}},writeChildrenHtml:function(b,a){CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.apply(this,arguments)}}})();\n(function(){var b={};CKEDITOR.template=function(c){if(b[c])this.output=b[c];else{var a=c.replace(/'/g,\"\\\\'\").replace(/{([^}]+)}/g,function(a,b){return\"',data['\"+b+\"']==undefined?'{\"+b+\"}':data['\"+b+\"'],'\"});this.output=b[c]=Function(\"data\",\"buffer\",\"return buffer?buffer.push('\"+a+\"'):['\"+a+\"'].join('');\")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document);\nCKEDITOR.add=function(b){CKEDITOR.instances[b.name]=b;b.on(\"focus\",function(){if(CKEDITOR.currentInstance!=b){CKEDITOR.currentInstance=b;CKEDITOR.fire(\"currentInstance\")}});b.on(\"blur\",function(){if(CKEDITOR.currentInstance==b){CKEDITOR.currentInstance=null;CKEDITOR.fire(\"currentInstance\")}});CKEDITOR.fire(\"instance\",null,b)};CKEDITOR.remove=function(b){delete CKEDITOR.instances[b.name]};\n(function(){var b={};CKEDITOR.addTemplate=function(c,a){var f=b[c];if(f)return f;f={name:c,source:a};CKEDITOR.fire(\"template\",f);return b[c]=new CKEDITOR.template(f.source)};CKEDITOR.getTemplate=function(c){return b[c]}})();(function(){var b=[];CKEDITOR.addCss=function(c){b.push(c)};CKEDITOR.getCss=function(){return b.join(\"\\n\")}})();CKEDITOR.on(\"instanceDestroyed\",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire(\"reset\")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2;\nCKEDITOR.TRISTATE_DISABLED=0;\n(function(){CKEDITOR.inline=function(b,c){if(!CKEDITOR.env.isCompatible)return null;b=CKEDITOR.dom.element.get(b);if(b.getEditor())throw'The editor instance \"'+b.getEditor().name+'\" is already attached to the provided element.';var a=new CKEDITOR.editor(c,b,CKEDITOR.ELEMENT_MODE_INLINE);a.setData(b.getHtml(),null,true);a.on(\"loaded\",function(){a.fire(\"uiReady\");a.editable(b);a.container=b;a.setData(a.getData(1));a.fire(\"contentDom\");a.mode=\"wysiwyg\";a.fire(\"mode\");a.fireOnce(\"instanceReady\");CKEDITOR.fire(\"instanceReady\",\nnull,a);a.resetDirty()},null,null,1E4);a.on(\"destroy\",function(){a.element.clearCustomData();delete a.element});return a};CKEDITOR.inlineAll=function(){var b,c,a;for(a in CKEDITOR.dtd.$editable)for(var f=CKEDITOR.document.getElementsByTag(a),e=0,d=f.count();e<d;e++){b=f.getItem(e);if(b.getAttribute(\"contenteditable\")==\"true\"){c={element:b,config:{}};CKEDITOR.fire(\"inline\",c)!==false&&CKEDITOR.inline(b,c.config)}}};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();\nCKEDITOR.replaceClass=\"ckeditor\";\n(function(){function b(b,e,k,h){if(!CKEDITOR.env.isCompatible)return null;b=CKEDITOR.dom.element.get(b);if(b.getEditor())throw'The editor instance \"'+b.getEditor().name+'\" is already attached to the provided element.';var m=new CKEDITOR.editor(e,b,h);h==CKEDITOR.ELEMENT_MODE_REPLACE&&b.setStyle(\"visibility\",\"hidden\");k&&m.setData(k,null,true);m.on(\"loaded\",function(){a(m);h==CKEDITOR.ELEMENT_MODE_REPLACE&&m.config.autoUpdateElement&&f(m);m.setMode(m.config.startupMode,function(){m.fireOnce(\"instanceReady\");\nCKEDITOR.fire(\"instanceReady\",null,m);m.resetDirty()})});m.on(\"destroy\",c);return m}function c(){var a=this.container,b=this.element;if(a){a.clearCustomData();a.remove()}if(b){b.clearCustomData();this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.show();delete this.element}}function a(a){var b=a.name,c=a.element,f=a.elementMode,m=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html,n=a.fireOnce(\"uiSpace\",{space:\"bottom\",html:\"\"}).html;e||(e=CKEDITOR.addTemplate(\"maincontainer\",'<{outerEl} id=\"cke_{name}\" class=\"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+\nCKEDITOR.env.cssClass+'\"  dir=\"{langDir}\" lang=\"{langCode}\" role=\"application\" aria-labelledby=\"cke_{name}_arialbl\"><span id=\"cke_{name}_arialbl\" class=\"cke_voice_label\">{voiceLabel}</span><{outerEl} class=\"cke_inner cke_reset\" role=\"presentation\">{topHtml}<{outerEl} id=\"{contentId}\" class=\"cke_contents cke_reset\" role=\"presentation\"></{outerEl}>{bottomHtml}</{outerEl}></{outerEl}>'));b=CKEDITOR.dom.element.createFromHtml(e.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.lang.editor,\ntopHtml:m?'<span id=\"'+a.ui.spaceId(\"top\")+'\" class=\"cke_top cke_reset_all\" role=\"presentation\" style=\"height:auto\">'+m+\"</span>\":\"\",contentId:a.ui.spaceId(\"contents\"),bottomHtml:n?'<span id=\"'+a.ui.spaceId(\"bottom\")+'\" class=\"cke_bottom cke_reset_all\" role=\"presentation\">'+n+\"</span>\":\"\",outerEl:CKEDITOR.env.ie?\"span\":\"div\"}));if(f==CKEDITOR.ELEMENT_MODE_REPLACE){c.hide();b.insertAfter(c)}else c.append(b);a.container=b;m&&a.ui.space(\"top\").unselectable();n&&a.ui.space(\"bottom\").unselectable();c=\na.config.width;f=a.config.height;c&&b.setStyle(\"width\",CKEDITOR.tools.cssLength(c));f&&a.ui.space(\"contents\").setStyle(\"height\",CKEDITOR.tools.cssLength(f));b.disableContextMenu();CKEDITOR.env.webkit&&b.on(\"focus\",function(){a.focus()});a.fireOnce(\"uiReady\")}function f(a){var b=a.element;if(a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.is(\"textarea\")){var c=b.$.form&&new CKEDITOR.dom.element(b.$.form);if(c){var e=function(){a.updateElement()};c.on(\"submit\",e);if(!c.$.submit.nodeName&&!c.$.submit.length)c.$.submit=\nCKEDITOR.tools.override(c.$.submit,function(b){return function(){a.updateElement();b.apply?b.apply(this,arguments):b()}});a.on(\"destroy\",function(){c.removeListener(\"submit\",e)})}}}CKEDITOR.replace=function(a,c){return b(a,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(a,c,e){return b(a,c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName(\"textarea\"),b=0;b<a.length;b++){var c=null,e=a[b];if(e.name||e.id){if(typeof arguments[0]==\n\"string\"){if(!RegExp(\"(?:^|\\\\s)\"+arguments[0]+\"(?:$|\\\\s)\").test(e.className))continue}else if(typeof arguments[0]==\"function\"){c={};if(arguments[0](e,c)===false)continue}this.replace(e,c)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes={}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var c=this,e=this._.modes;if(!(a==c.mode||!e||!e[a])){c.fire(\"beforeSetMode\",a);if(c.mode){var f=c.checkDirty();c._.previousMode=c.mode;c.fire(\"beforeModeUnload\");c.editable(0);\nc.ui.space(\"contents\").setHtml(\"\");c.mode=\"\"}this._.modes[a](function(){c.mode=a;if(f!==void 0){c.mayBeDirty=true;!f&&c.resetDirty()}setTimeout(function(){c.fire(\"mode\");b&&b.call(c)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,c,e){var f=this.container,n=this.ui.space(\"contents\"),o=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement,e=e?f.getChild(1):f;e.setSize(\"width\",a,true);o&&(o.style.width=\"1%\");n.setStyle(\"height\",Math.max(b-(c?0:(e.$.offsetHeight||0)-(n.$.clientHeight||\n0)),0)+\"px\");o&&(o.style.width=\"100%\");this.fire(\"resize\")};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space(\"contents\"):this.container};var e;CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode=\"wysiwyg\";\n(function(){function b(b){var c=b.editor,d=c.editable(),e=b.data.path,f=e.blockLimit,g=b.data.selection.getRanges()[0],i=c.config.enterMode;if(CKEDITOR.env.gecko){var h=e.block||e.blockLimit||e.root,m=h&&h.getLast(a);h&&(h.isBlockBoundary()&&(!m||!(m.type==CKEDITOR.NODE_ELEMENT&&m.isBlockBoundary()))&&!h.is(\"pre\")&&!h.getBogus())&&h.appendBogus()}if(c.config.autoParagraph!==false&&i!=CKEDITOR.ENTER_BR&&g.collapsed&&d.equals(f)&&!e.block){d=g.clone();d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);e=new CKEDITOR.dom.walker(d);\ne.guard=function(b){return!a(b)||b.type==CKEDITOR.NODE_COMMENT||b.isReadOnly()};if(!e.checkForward()||d.checkStartOfBlock()&&d.checkEndOfBlock()){c=g.fixBlock(true,c.config.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\");if(CKEDITOR.env.ie)(c=c.getFirst(a))&&(c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText()).match(/^(?:&nbsp;|\\xa0)$/))&&c.remove();g.select();b.cancel()}}}function c(a){var b=a.data.getTarget();if(b.is(\"input\")){b=b.getAttribute(\"type\");(b==\"submit\"||b==\"reset\")&&a.data.preventDefault()}}\nfunction a(a){return h(a)&&m(a)}function f(a,b){return function(c){var d=CKEDITOR.dom.element.get(c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget);(!d||!b.equals(d)&&!b.contains(d))&&a.call(this,c)}}function e(b){var c,d=b.getRanges()[0],b=b.root,e=d.startPath(),f={table:1,ul:1,ol:1,dl:1},g=CKEDITOR.dom.walker.bogus();if(e.contains(f)){var i=d.clone();i.collapse(1);i.setStartAt(b,CKEDITOR.POSITION_AFTER_START);i=new CKEDITOR.dom.walker(i);e=function(b,d){return function(b,o){o&&(b.type==\nCKEDITOR.NODE_ELEMENT&&b.is(f))&&(c=b);if(a(b)&&!o&&(!d||!g(b)))return false}};i.guard=e(i);i.checkBackward();if(c){i=d.clone();i.collapse();i.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);i=new CKEDITOR.dom.walker(i);i.guard=e(i,1);c=0;i.checkForward();return c}}return null}function d(a){a.editor.focus();a.editor.fire(\"saveSnapshot\")}function g(a,b){var c=a.editor;!b&&c.getSelection().scrollIntoView();setTimeout(function(){c.fire(\"saveSnapshot\")},0)}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,\n$:function(a,b){this.base(b.$||b);this.editor=a;this.hasFocus=false;this.setup()},proto:{focus:function(){this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?\"setActive\":\"focus\"]();CKEDITOR.env.safari&&!this.isInline()&&(CKEDITOR.document.getActive().equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);if(CKEDITOR.env.ie&&/^focus|blur$/.exec(a)){a=a==\"focus\"?\"focusin\":\"focusout\";b=f(b,this);c[0]=a;c[1]=b}return CKEDITOR.dom.element.prototype.on.apply(this,\nc)},attachListener:function(a,b,c,d,e,f){!this._.listeners&&(this._.listeners=[]);var g=Array.prototype.slice.call(arguments,1);this._.listeners.push(a.on.apply(a,g))},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)if(a.hasOwnProperty(c)){b=a[c];b!==null?this.setAttribute(c,b):this.removeAttribute(c)}},attachClass:function(a){var b=this.getCustomData(\"classes\");if(!this.hasClass(a)){!b&&\n(b=[]);b.push(a);this.setCustomData(\"classes\",b);this.addClass(a)}},changeAttr:function(a,b){var c=this.getAttribute(a);if(b!==c){!this._.attrChanges&&(this._.attrChanges={});a in this._.attrChanges||(this._.attrChanges[a]=c);this.setAttribute(a,b)}},insertHtml:function(a,b){d(this);n(this,b==\"text\"?\"text\":\"html\",a)},insertText:function(a){d(this);var b=this.editor,c=b.getSelection().getStartElement().hasAscendant(\"pre\",true)?CKEDITOR.ENTER_BR:b.config.enterMode,b=c==CKEDITOR.ENTER_BR,e=CKEDITOR.tools,\na=e.htmlEncode(a.replace(/\\r\\n/g,\"\\n\")),a=a.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\"),c=c==CKEDITOR.ENTER_P?\"p\":\"div\";if(!b){var f=/\\n{2}/g;if(f.test(a))var g=\"<\"+c+\">\",i=\"</\"+c+\">\",a=g+a.replace(f,function(){return i+g})+i}a=a.replace(/\\n/g,\"<br>\");b||(a=a.replace(RegExp(\"<br>(?=</\"+c+\">)\"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g,\"&nbsp;\");a=a.replace(/(>|\\s) /g,function(a,b){return b+\"&nbsp;\"}).replace(/ (?=<)/g,\"&nbsp;\");n(this,\"text\",a)},insertElement:function(b){d(this);for(var c=\nthis.editor,e=c.config.enterMode,f=c.getSelection(),h=f.getRanges(),m=b.getName(),i=CKEDITOR.dtd.$block[m],n,k,B,p=h.length-1;p>=0;p--){n=h[p];if(!n.checkReadOnly()){n.deleteContents(1);k=!p&&b||b.clone(1);var E,u;if(i)for(;(E=n.getCommonAncestor(0,1))&&(u=CKEDITOR.dtd[E.getName()])&&(!u||!u[m]);)if(E.getName()in CKEDITOR.dtd.span)n.splitElement(E);else if(n.checkStartOfBlock()&&n.checkEndOfBlock()){n.setStartBefore(E);n.collapse(true);E.remove()}else n.splitBlock(e==CKEDITOR.ENTER_DIV?\"div\":\"p\",\nc.editable());n.insertNode(k);B||(B=k)}}if(B){n.moveToPosition(B,CKEDITOR.POSITION_AFTER_END);if(i)if((b=B.getNext(a))&&b.type==CKEDITOR.NODE_ELEMENT&&b.is(CKEDITOR.dtd.$block))b.getDtd()[\"#\"]?n.moveToElementEditStart(b):n.moveToElementEditEnd(B);else if(!b&&e!=CKEDITOR.ENTER_BR){b=n.fixBlock(true,e==CKEDITOR.ENTER_DIV?\"div\":\"p\");n.moveToElementEditStart(b)}}f.selectRanges([n]);g(this,CKEDITOR.env.opera)},setData:function(a,b){!b&&this.editor.dataProcessor&&(a=this.editor.dataProcessor.toHtml(a));\nthis.setHtml(a);this.editor.fire(\"dataReady\")},getData:function(a){var b=this.getHtml();!a&&this.editor.dataProcessor&&(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute(\"contenteditable\",!a)},detach:function(){this.removeClass(\"cke_editable\");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},setup:function(){var a=this.editor;this.attachListener(a,\"beforeGetData\",\nfunction(){var b=this.getData();this.is(\"textarea\")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(k,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,\"getSnapshot\",function(a){a.data=this.getData(1)},this);this.attachListener(a,\"afterSetData\",function(){this.setData(a.getData(1))},this);this.attachListener(a,\"loadSnapshot\",function(a){this.setData(a.data,1)},this);this.attachListener(a,\"beforeFocus\",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type==\"Control\"||\nthis.focus()},this);this.attachListener(a,\"insertHtml\",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,\"insertElement\",function(a){this.insertElement(a.data)},this);this.attachListener(a,\"insertText\",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass(\"cke_editable\");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"cke_editable_inline\":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?\n\"cke_editable_themed\":\"\");this.attachClass(\"cke_contents_\"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=a.readOnly;a.keystrokeHandler.attach(this);this.on(\"blur\",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on(\"focus\",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=\ntrue;a.once(\"contentDom\",function(){a.focusManager.focus()})}this.isInline()&&this.changeAttr(\"tabindex\",a.tabIndex);if(!this.is(\"textarea\")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr(\"spellcheck\",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr(\"dir\",d);var f=CKEDITOR.getCss();if(f){d=b.getHead();if(!d.getCustomData(\"stylesheet\")){f=b.appendStyleText(f);f=new CKEDITOR.dom.element(f.ownerNode||\nf.owningElement);d.setCustomData(\"stylesheet\",f);f.data(\"cke-temp\",1)}}d=b.getCustomData(\"stylesheet_ref\")||0;b.setCustomData(\"stylesheet_ref\",d+1);this.setCustomData(\"cke_includeReadonly\",!a.config.disableReadonlyStyling);this.attachListener(this,\"click\",function(a){var a=a.data,b=a.getTarget();b.is(\"a\")&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});this.attachListener(a,\"key\",function(b){if(a.readOnly)return true;var c=b.data.keyCode,d;if(c in{8:1,46:1}){var l=a.getSelection(),b=l.getRanges()[0],\nf=b.startPath(),j,g,m,c=c==8;if(l=e(l)){a.fire(\"saveSnapshot\");b.moveToPosition(l,CKEDITOR.POSITION_BEFORE_START);l.remove();b.select();a.fire(\"saveSnapshot\");d=1}else if(b.collapsed)if((j=f.block)&&b[c?\"checkStartOfBlock\":\"checkEndOfBlock\"]()&&(m=j[c?\"getPrevious\":\"getNext\"](h))&&m.is(\"table\")){a.fire(\"saveSnapshot\");b[c?\"checkEndOfBlock\":\"checkStartOfBlock\"]()&&j.remove();b[\"moveToElementEdit\"+(c?\"End\":\"Start\")](m);b.select();a.fire(\"saveSnapshot\");d=1}else if(f.blockLimit&&f.blockLimit.is(\"td\")&&\n(g=f.blockLimit.getAscendant(\"table\"))&&b.checkBoundaryOfElement(g,c?CKEDITOR.START:CKEDITOR.END)&&(m=g[c?\"getPrevious\":\"getNext\"](h))){a.fire(\"saveSnapshot\");b[\"moveToElementEdit\"+(c?\"End\":\"Start\")](m);b.checkStartOfBlock()&&b.checkEndOfBlock()?m.remove():b.select();a.fire(\"saveSnapshot\");d=1}else if((g=f.contains([\"td\",\"th\",\"caption\"]))&&b.checkBoundaryOfElement(g,c?CKEDITOR.START:CKEDITOR.END))if((m=g[c?\"getPreviousSourceNode\":\"getNextSourceNode\"](1,CKEDITOR.NODE_ELEMENT))&&!m.isReadOnly()&&b.root.contains(m)){b[c?\n\"moveToElementEditEnd\":\"moveToElementEditStart\"](m);b.select();d=1}}return!d});CKEDITOR.env.ie&&this.attachListener(this,\"click\",c);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,\"mousedown\",function(b){var c=b.data.getTarget();if(c.is(\"img\",\"hr\",\"input\",\"textarea\",\"select\")){a.getSelection().selectElement(c);c.is(\"input\",\"textarea\",\"select\")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,\"mouseup\",function(b){if(b.data.$.button==2){b=b.data.getTarget();\nif(!b.getOuterHtml().replace(k,\"\")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,\"click\",function(a){a.data.getTarget().is(\"input\",\"select\")&&a.data.preventDefault()});this.attachListener(this,\"mouseup\",function(a){a.data.getTarget().is(\"input\",\"textarea\")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData(\"classes\"))for(;a.length;)this.removeClass(a.pop());\na=this.getDocument();var b=a.getHead();if(b.getCustomData(\"stylesheet\")){var c=a.getCustomData(\"stylesheet_ref\");if(--c)a.setCustomData(\"stylesheet_ref\",c);else{a.removeCustomData(\"stylesheet_ref\");b.removeCustomData(\"stylesheet\").remove()}}delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var k=/(^|<body\\b[^>]*>)\\s*<(p|div|address|h\\d|center|pre)[^>]*>\\s*(?:<br[^>]*>|&nbsp;|\\u00A0|&#160;)?\\s*(:?<\\/\\2>)?\\s*(?=$|<\\/body>)/gi,\nh=CKEDITOR.dom.walker.whitespaces(true),m=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on(\"instanceLoaded\",function(a){var c=a.editor;c.on(\"insertElement\",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is(\"input\")||a.is(\"textarea\"))){a.getAttribute(\"contentEditable\")!=\"false\"&&a.data(\"cke-editable\",a.hasAttribute(\"contenteditable\")?\"true\":\"1\");a.setAttribute(\"contentEditable\",false)}});c.on(\"selectionChange\",function(a){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();\nc.fire(\"lockSnapshot\");b(a);c.fire(\"unlockSnapshot\");!d&&c.resetDirty()}}})});CKEDITOR.on(\"instanceCreated\",function(a){var b=a.editor;b.on(\"mode\",function(){var a=b.editable();if(a&&a.isInline()){var c=this.lang.editor+\", \"+this.name;a.changeAttr(\"role\",\"textbox\");a.changeAttr(\"aria-label\",c);a.changeAttr(\"title\",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"top\":\"contents\")){var d=CKEDITOR.tools.getNextId(),e=CKEDITOR.dom.element.createFromHtml('<span id=\"'+d+'\" class=\"cke_voice_label\">'+\nthis.lang.common.editorHelp+\"</span>\");c.append(e);a.changeAttr(\"aria-describedby\",d)}}})});CKEDITOR.addCss(\".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}\");var n=function(){function b(a){return a.type==CKEDITOR.NODE_ELEMENT}function c(a,d){var e,f,j,g,t=[],h=d.range.startContainer;e=d.range.startPath();for(var h=i[h.getName()],m=0,n=a.getChildren(),q=n.count(),k=-1,z=-1,y=0,s=e.contains(i.$list);m<q;++m){e=n.getItem(m);if(b(e)){j=e.getName();\nif(s&&j in CKEDITOR.dtd.$list)t=t.concat(c(e,d));else{g=!!h[j];if(j==\"br\"&&e.data(\"cke-eol\")&&(!m||m==q-1)){y=(f=m?t[m-1].node:n.getItem(m+1))&&(!b(f)||!f.is(\"br\"));f=f&&b(f)&&i.$block[f.getName()]}k==-1&&!g&&(k=m);g||(z=m);t.push({isElement:1,isLineBreak:y,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:j,allowed:g});f=y=0}}else t.push({isElement:0,node:e,allowed:1})}if(k>-1)t[k].firstNotAllowed=1;if(z>-1)t[z].lastNotAllowed=1;return t}function d(a,c){var e=[],f=a.getChildren(),l=f.count(),\ng,t=0,h=i[c],m=!a.is(i.$inline)||a.is(\"br\");for(m&&e.push(\" \");t<l;t++){g=f.getItem(t);b(g)&&!g.is(h)?e=e.concat(d(g,c)):e.push(g)}m&&e.push(\" \");return e}function e(a){return a&&b(a)&&(a.is(i.$removeEmpty)||a.is(\"a\")&&!a.isBlockBoundary())}function f(a,c,d,e){var l=a.clone(),j,g;l.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);if((j=(new CKEDITOR.dom.walker(l)).next())&&b(j)&&m[j.getName()]&&(g=j.getPrevious())&&b(g)&&!g.getParent().equals(a.startContainer)&&d.contains(g)&&e.contains(j)&&j.isIdentical(g)){j.moveChildren(g);\nj.remove();f(a,c,d,e)}}function h(a,c){function d(a,c){if(c.isBlock&&c.isElement&&!c.node.is(\"br\")&&b(a)&&a.is(\"br\")){a.remove();return 1}}var e=c.endContainer.getChild(c.endOffset),f=c.endContainer.getChild(c.endOffset-1);e&&d(e,a[a.length-1]);if(f&&d(f,a[0])){c.setEnd(c.endContainer,c.endOffset-1);c.collapse()}}var i=CKEDITOR.dtd,m={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},n={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},k=CKEDITOR.tools.extend({},i.$inline);delete k.br;\nreturn function(m,s,u){var r=m.editor;m.getDocument();var D=r.getSelection().getRanges()[0];if(!D.checkReadOnly()){var v=(new CKEDITOR.dom.elementPath(D.startContainer,D.root)).blockLimit||D.root,s={type:s,editable:m,editor:r,range:D,blockLimit:v,mergeCandidates:[],zombies:[]},r=s.range,v=s.mergeCandidates,t,w,I,G,C;if(s.type==\"text\"&&r.shrink(CKEDITOR.SHRINK_ELEMENT,true,false)){w=CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",r.document);r.insertNode(w);r.setStartAfter(w)}I=new CKEDITOR.dom.elementPath(r.startContainer);\ns.endPath=G=new CKEDITOR.dom.elementPath(r.endContainer);if(!r.collapsed){t=G.block||G.blockLimit;var Q=r.getCommonAncestor();t&&(!t.equals(Q)&&!t.contains(Q)&&r.checkEndOfBlock())&&s.zombies.push(t);r.deleteContents()}for(;(C=b(r.startContainer)&&r.startContainer.getChild(r.startOffset-1))&&b(C)&&C.isBlockBoundary()&&I.contains(C);)r.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);f(r,s.blockLimit,I,G);if(w){r.setEndBefore(w);r.collapse();w.remove()}w=r.startPath();if(t=w.contains(e,false,1)){r.splitElement(t);\ns.inlineStylesRoot=t;s.inlineStylesPeak=w.lastElement}w=r.createBookmark();(t=w.startNode.getPrevious(a))&&b(t)&&e(t)&&v.push(t);(t=w.startNode.getNext(a))&&b(t)&&e(t)&&v.push(t);for(t=w.startNode;(t=t.getParent())&&e(t);)v.push(t);r.moveToBookmark(w);if(u){C=u;u=s.range;if(s.type==\"text\"&&s.inlineStylesRoot){w=C;C=s.inlineStylesPeak;r=C.getDocument().createText(\"{cke-peak}\");for(v=s.inlineStylesRoot.getParent();!C.equals(v);){r=r.appendTo(C.clone());C=C.getParent()}C=r.getOuterHtml().replace(\"{cke-peak}\",\nw)}w=s.blockLimit.getName();if(/^\\s+|\\s+$/.test(C)&&\"span\"in CKEDITOR.dtd[w]){var K='<span data-cke-marker=\"1\">&nbsp;</span>';C=K+C+K}C=s.editor.dataProcessor.toHtml(C,null,false);w=u.document.createElement(\"body\");w.setHtml(C);if(K){w.getFirst().remove();w.getLast().remove()}if((K=u.startPath().block)&&!(K.getChildCount()==1&&K.getBogus()))a:{var F;if(w.getChildCount()==1&&b(F=w.getFirst())&&F.is(n)){K=F.getElementsByTag(\"*\");u=0;for(r=K.count();u<r;u++){C=K.getItem(u);if(!C.is(k))break a}F.moveChildren(F.getParent(1));\nF.remove()}}s.dataWrapper=w;F=s.range;var K=F.document,x,u=s.blockLimit;w=0;var J;C=[];var H,N,v=r=0,L,O;I=F.startContainer;t=s.endPath.elements[0];var P;G=t.getPosition(I);Q=!!t.getCommonAncestor(I)&&G!=CKEDITOR.POSITION_IDENTICAL&&!(G&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);I=c(s.dataWrapper,s);for(h(I,F);w<I.length;w++){G=I[w];if(x=G.isLineBreak){x=F;L=u;var M=void 0,R=void 0;if(G.hasBlockSibling)x=1;else{M=x.startContainer.getAscendant(i.$block,1);if(!M||!M.is({div:1,p:1}))x=\n0;else{R=M.getPosition(L);if(R==CKEDITOR.POSITION_IDENTICAL||R==CKEDITOR.POSITION_CONTAINS)x=0;else{L=x.splitElement(M);x.moveToPosition(L,CKEDITOR.POSITION_AFTER_START);x=1}}}}if(x)v=w>0;else{x=F.startPath();if(!G.isBlock&&(N=s.editor.config.enterMode!=CKEDITOR.ENTER_BR&&s.editor.config.autoParagraph!==false?s.editor.config.enterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\":false)&&!x.block&&x.blockLimit&&x.blockLimit.equals(F.root)){N=K.createElement(N);!CKEDITOR.env.ie&&N.appendBogus();F.insertNode(N);!CKEDITOR.env.ie&&\n(J=N.getBogus())&&J.remove();F.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}if((x=F.startPath().block)&&!x.equals(H)){if(J=x.getBogus()){J.remove();C.push(x)}H=x}G.firstNotAllowed&&(r=1);if(r&&G.isElement){x=F.startContainer;for(L=null;x&&!i[x.getName()][G.name];){if(x.equals(u)){x=null;break}L=x;x=x.getParent()}if(x){if(L){O=F.splitElement(L);s.zombies.push(O);s.zombies.push(L)}}else{L=u.getName();P=!w;x=w==I.length-1;L=d(G.node,L);for(var M=[],R=L.length,T=0,U=void 0,V=0,W=-1;T<R;T++){U=L[T];\nif(U==\" \"){if(!V&&(!P||T)){M.push(new CKEDITOR.dom.text(\" \"));W=M.length}V=1}else{M.push(U);V=0}}x&&W==M.length&&M.pop();P=M}}if(P){for(;x=P.pop();)F.insertNode(x);P=0}else F.insertNode(G.node);if(G.lastNotAllowed&&w<I.length-1){(O=Q?t:O)&&F.setEndAt(O,CKEDITOR.POSITION_AFTER_START);r=0}F.collapse()}}s.dontMoveCaret=v;s.bogusNeededBlocks=C}J=s.range;var S;O=s.bogusNeededBlocks;for(P=J.createBookmark();H=s.zombies.pop();)if(H.getParent()){N=J.clone();N.moveToElementEditStart(H);N.removeEmptyBlocksAtEnd()}if(O)for(;H=\nO.pop();)H.append(CKEDITOR.env.ie?J.document.createText(\" \"):J.document.createElement(\"br\"));for(;H=s.mergeCandidates.pop();)H.mergeSiblings();J.moveToBookmark(P);if(!s.dontMoveCaret){for(H=b(J.startContainer)&&J.startContainer.getChild(J.startOffset-1);H&&b(H)&&!H.is(i.$empty);){if(H.isBlockBoundary())J.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END);else{if(e(H)&&H.getHtml().match(/(\\s|&nbsp;)$/g)){S=null;break}S=J.clone();S.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END)}H=H.getLast(a)}S&&J.moveToRange(S)}D.select();\ng(m)}}}()})();\n(function(){function b(){var a=this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){this.fire(\"selectionCheck\",a);var b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){this._.selectionPreviousPath=b;this.fire(\"selectionChange\",{selection:a,path:b})}}}function c(){k=true;if(!g){a.call(this);g=CKEDITOR.tools.setTimeout(a,200,this)}}function a(){g=null;if(k){CKEDITOR.tools.setTimeout(b,0,this);k=false}}function f(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false:\na.clone()[\"moveToElementEdit\"+(d?\"End\":\"Start\")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var c=a.startContainer,d=a.getPreviousNode(h,null,c),e=a.getNextNode(h,null,c);return b(d)||b(e,1)||!d&&!e&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?true:false}function e(a){return a.getCustomData(\"cke-fillingChar\")}function d(a,b){var c=a&&a.removeCustomData(\"cke-fillingChar\");if(c){if(b!==false){var d,e=a.getDocument().getSelection().getNative(),f=e&&e.type!=\"None\"&&\ne.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){d=[e.anchorOffset,e.focusOffset];f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0]--;f&&d[1]--;var g;f=e;if(!f.isCollapsed){g=f.getRangeAt(0);g.setStart(f.anchorNode,f.anchorOffset);g.setEnd(f.focusNode,f.focusOffset);g=g.collapsed}g&&d.unshift(d.pop())}}c.setText(c.getText().replace(/\\u200B/g,\"\"));if(d){c=e.getRangeAt(0);c.setStart(c.startContainer,d[0]);c.setEnd(c.startContainer,d[1]);e.removeAllRanges();e.addRange(c)}}}\nvar g,k,h=CKEDITOR.dom.walker.invisible(1);CKEDITOR.on(\"instanceCreated\",function(a){function e(){var a=f.getSelection();a&&a.removeAllRanges()}var f=a.editor;f.define(\"selectionChange\",{errorProof:1});f.on(\"contentDom\",function(){var a=f.document,e=CKEDITOR.document,l=f.editable(),g=a.getBody(),o=a.getDocumentElement(),h=l.isInline();if(CKEDITOR.env.ie||CKEDITOR.env.opera||h){var n;l.attachListener(l,\"focus\",function(){f.unlockSelection(n);n=0},null,null,-1);var k,E=function(){k=f.getSelection(1);\nk.lock()};m?l.attachListener(l,\"beforedeactivate\",E,null,null,-1):l.attachListener(f,\"selectionCheck\",E,null,null,-1);l.attachListener(l,\"blur\",function(){f.lockSelection(k);n=1},null,null,-1);l.attachListener(l,\"mousedown\",function(){n=0})}if(CKEDITOR.env.ie&&!h){var u;l.attachListener(l,\"mousedown\",function(a){a.data.$.button==2&&f.document.$.selection.type==\"None\"&&(u=f.window.getScrollPosition())});l.attachListener(l,\"mouseup\",function(a){if(a.data.$.button==2&&u){f.document.$.documentElement.scrollLeft=\nu.x;f.document.$.documentElement.scrollTop=u.y}u=null});if(a.$.compatMode!=\"BackCompat\"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)o.on(\"mousedown\",function(a){function b(a){a=a.data.$;if(d){var c=g.$.createTextRange();try{c.moveToPoint(a.x,a.y)}catch(e){}d.setEndPoint(l.compareEndPoints(\"StartToStart\",c)<0?\"EndToEnd\":\"StartToStart\",c);d.select()}}function c(){o.removeListener(\"mousemove\",b);e.removeListener(\"mouseup\",c);o.removeListener(\"mouseup\",c);d.select()}a=a.data;if(a.getTarget().is(\"html\")&&\na.$.y<o.$.clientHeight&&a.$.x<o.$.clientWidth){var d=g.$.createTextRange();try{d.moveToPoint(a.$.x,a.$.y)}catch(f){}var l=d.duplicate();o.on(\"mousemove\",b);e.on(\"mouseup\",c);o.on(\"mouseup\",c)}});if(CKEDITOR.env.version>7){o.on(\"mousedown\",function(a){if(a.data.getTarget().is(\"html\")){e.on(\"mouseup\",r);o.on(\"mouseup\",r)}});var r=function(){e.removeListener(\"mouseup\",r);o.removeListener(\"mouseup\",r);var b=CKEDITOR.document.$.selection,c=b.createRange();b.type!=\"None\"&&c.parentElement().ownerDocument==\na.$&&c.select()}}}}l.attachListener(l,\"selectionchange\",b,f);l.attachListener(l,\"keyup\",c,f);l.attachListener(l,\"focus\",function(){f.forceNextSelectionCheck();f.selectionChange(1)});if(l.isInline()?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var D;l.attachListener(l,\"mousedown\",function(){D=1});l.attachListener(a.getDocumentElement(),\"mouseup\",function(){D&&c.call(f);D=0})}else l.attachListener(l,\"mouseup\",c,f);if(CKEDITOR.env.webkit)a.on(\"keydown\",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:d(f.editable())}},\nnull,null,-1)});f.on(\"contentDomUnload\",f.forceNextSelectionCheck,f);f.on(\"dataReady\",function(){f.selectionChange(1)});CKEDITOR.env.ie9Compat&&f.on(\"beforeDestroy\",e,null,null,9);CKEDITOR.env.webkit&&f.on(\"setData\",e);f.on(\"contentDomUnload\",function(){f.unlockSelection()})});CKEDITOR.on(\"instanceReady\",function(a){var b=a.editor,c=b.editable();if(CKEDITOR.env.webkit){b.on(\"selectionChange\",function(){var a=e(c);a&&(a.getCustomData(\"ready\")?d(c):a.setCustomData(\"ready\",1))},null,null,-1);b.on(\"beforeSetMode\",\nfunction(){d(c)},null,null,-1);var f,g,a=function(){var a=b.document,d=e(c);if(d){a=a.$.defaultView.getSelection();a.type==\"Caret\"&&a.anchorNode==d.$&&(g=1);f=d.getText();d.setText(f.replace(/\\u200B/g,\"\"))}},h=function(){var a=b.document,d=e(c);if(d){d.setText(f);if(g){a.$.defaultView.getSelection().setPosition(d.$,d.getLength());g=0}}};b.on(\"beforeUndoImage\",a);b.on(\"afterUndoImage\",h);b.on(\"beforeGetData\",a,null,null,0);b.on(\"getData\",h)}});CKEDITOR.editor.prototype.selectionChange=function(a){(a?\nb:c).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if(this._.savedSelection&&!a)return this._.savedSelection;return(a=this.editable())?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;\nreturn true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var m=\ntypeof window.getSelection!=\"function\";CKEDITOR.dom.selection=function(a){var b=a instanceof CKEDITOR.dom.element;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(CKEDITOR.env.webkit){a=this.document.getWindow().$.getSelection();if(a.type==\"None\"&&this.document.getActive().equals(this.root)||a.type==\"Caret\"&&a.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT){var c=new CKEDITOR.dom.range(this.root);c.moveToPosition(this.root,\nCKEDITOR.POSITION_AFTER_START);b=this.document.$.createRange();b.setStart(c.startContainer.$,c.startOffset);b.collapse(1);a.addRange(b)}}var a=this.getNative(),d;if(a)if(a.getRangeAt)d=(c=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(c.commonAncestorContainer);else{try{c=a.createRange()}catch(e){}d=c&&CKEDITOR.dom.element.get(c.item&&c.item(0)||c.parentElement())}if(!d||!this.root.equals(d)&&!this.root.contains(d)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=\nnull;this._.cache.selectedText=\"\";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var n={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=m?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:m?function(){var a=this._.cache;if(a.type)return a.type;\nvar b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d==\"Text\")b=CKEDITOR.SELECTION_TEXT;if(d==\"Control\")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-\nc.startOffset==1&&n[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=m?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement(),e=d.ownerDocument;if(!d.hasChildNodes())return{container:d,offset:0};for(var f=d.children,g,j,h=b.duplicate(),o=0,m=f.length-1,n=-1,k,v;o<=m;){n=Math.floor((o+m)/2);g=f[n];h.moveToElementText(g);k=h.compareEndPoints(\"StartToStart\",\nb);if(k>0)m=n-1;else if(k<0)o=n+1;else{if(CKEDITOR.env.ie9Compat&&g.tagName==\"BR\"){f=e.defaultView.getSelection();return{container:f[c?\"anchorNode\":\"focusNode\"],offset:f[c?\"anchorOffset\":\"focusOffset\"]}}return{container:d,offset:a(g)}}}if(n==-1||n==f.length-1&&k<0){h.moveToElementText(d);h.setEndPoint(\"StartToStart\",b);e=h.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;f=d.childNodes;if(!e){g=f[f.length-1];return g.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:f.length}:{container:g,offset:g.nodeValue.length}}for(d=\nf.length;e>0&&d>0;){j=f[--d];if(j.nodeType==CKEDITOR.NODE_TEXT){v=j;e=e-j.nodeValue.length}}return{container:v,offset:-e}}h.collapse(k>0?true:false);h.setEndPoint(k>0?\"StartToStart\":\"EndToStart\",b);e=h.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;if(!e)return{container:d,offset:a(g)+(k>0?0:1)};for(;e>0;)try{j=g[k>0?\"previousSibling\":\"nextSibling\"];if(j.nodeType==CKEDITOR.NODE_TEXT){e=e-j.nodeValue.length;v=j}g=j}catch(t){return{container:d,offset:a(g)}}return{container:v,offset:k>0?-e:v.nodeValue.length+\ne}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=\nc.item(e),g=f.parentNode,l=0,a=new CKEDITOR.dom.range(this.root);l<g.childNodes.length&&g.childNodes[l]!=f;l++);a.setStart(new CKEDITOR.dom.node(g),l);a.setEnd(new CKEDITOR.dom.node(g),l+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};\nreturn function(b){var c=this._.cache;if(c.ranges&&!b)return c.ranges;if(!c.ranges)c.ranges=new CKEDITOR.dom.rangeList(a.call(this));if(b)for(var d=c.ranges,e=0;e<d.length;e++){var f=d[e];f.getCommonAncestor().isReadOnly()&&d.splice(e,1);if(!f.collapsed){if(f.startContainer.isReadOnly())for(var b=f.startContainer,g;b;){if((g=b.type==CKEDITOR.NODE_ELEMENT)&&b.is(\"body\")||!b.isReadOnly())break;g&&b.getAttribute(\"contentEditable\")==\"false\"&&f.setStartAfter(b);b=b.getParent()}b=f.startContainer;g=f.endContainer;\nvar h=f.startOffset,m=f.endOffset,n=f.clone();b&&b.type==CKEDITOR.NODE_TEXT&&(h>=b.getLength()?n.setStartAfter(b):n.setStartBefore(b));g&&g.type==CKEDITOR.NODE_TEXT&&(m?n.setEndAfter(g):n.setEndBefore(g));b=new CKEDITOR.dom.walker(n);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(n.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a);b.collapsed||d.splice(e+1,0,b)}return true}return false};\nb.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);\nelse break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},\nfunction(){for(var a=b.getRanges()[0],c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type==CKEDITOR.NODE_ELEMENT&&n[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=m?b.type==\"Control\"?\"\":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();\nthis.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges();this.isLocked=0;this.reset();if(a)(a=b||c[0].getCommonAncestor())&&a.getAscendant(\"body\",1)&&(b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={}},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){if(a.length)if(this.isLocked){var b=\nCKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();!b.equals(this.root)&&b.focus()}else{if(m){var c=CKEDITOR.dom.walker.whitespaces(true),e=/\\ufeff|\\u00a0/,g={table:1,tbody:1,tr:1};if(a.length>1){b=a[a.length-1];a[0].setEnd(b.endContainer,b.endOffset)}var b=a[0],a=b.collapsed,h,i,k,A=b.getEnclosedNode();if(A&&A.type==CKEDITOR.NODE_ELEMENT&&A.getName()in n&&(!A.is(\"a\")||!A.getText()))try{k=A.$.createControlRange();k.addElement(A.$);k.select();return}catch(B){}(b.startContainer.type==\nCKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in g||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in g)&&b.shrink(CKEDITOR.NODE_ELEMENT,true);k=b.createBookmark();var g=k.startNode,p;if(!a)p=k.endNode;k=b.document.$.body.createTextRange();k.moveToElementText(g.$);k.moveStart(\"character\",1);if(p){e=b.document.$.body.createTextRange();e.moveToElementText(p.$);k.setEndPoint(\"EndToEnd\",e);k.moveEnd(\"character\",-1)}else{h=g.getNext(c);i=g.hasAscendant(\"pre\");h=!(h&&h.getText&&\nh.getText().match(e))&&(i||!g.hasPrevious()||g.getPrevious().is&&g.getPrevious().is(\"br\"));i=b.document.createElement(\"span\");i.setHtml(\"&#65279;\");i.insertBefore(g);h&&b.document.createText(\"﻿\").insertBefore(g)}b.setStartBefore(g);g.remove();if(a){if(h){k.moveStart(\"character\",-1);k.select();b.document.$.selection.clear()}else k.select();b.moveToPosition(i,CKEDITOR.POSITION_BEFORE_START);i.remove()}else{b.setEndBefore(p);p.remove();k.select()}}else{p=this.getNative();if(!p)return;if(CKEDITOR.env.opera){b=\nthis.document.$.createRange();b.selectNodeContents(this.root.$);p.addRange(b)}this.removeAllRanges();for(e=0;e<a.length;e++){if(e<a.length-1){b=a[e];k=a[e+1];i=b.clone();i.setStart(b.endContainer,b.endOffset);i.setEnd(k.startContainer,k.startOffset);if(!i.collapsed){i.shrink(CKEDITOR.NODE_ELEMENT,true);h=i.getCommonAncestor();i=i.getEnclosedNode();if(h.isReadOnly()||i&&i.isReadOnly()){k.setStart(b.startContainer,b.startOffset);a.splice(e--,1);continue}}}b=a[e];k=this.document.$.createRange();h=b.startContainer;\nif(CKEDITOR.env.opera&&b.collapsed&&h.type==CKEDITOR.NODE_ELEMENT){i=h.getChild(b.startOffset-1);c=h.getChild(b.startOffset);if(!i&&!c&&h.is(CKEDITOR.dtd.$removeEmpty)||i&&i.type==CKEDITOR.NODE_ELEMENT||c&&c.type==CKEDITOR.NODE_ELEMENT){b.insertNode(this.document.createText(\"\"));b.collapse(1)}}if(b.collapsed&&CKEDITOR.env.webkit&&f(b)){h=this.root;d(h,false);i=h.getDocument().createText(\"​\");h.setCustomData(\"cke-fillingChar\",i);b.insertNode(i);if((h=i.getNext())&&!i.getPrevious()&&h.type==CKEDITOR.NODE_ELEMENT&&\nh.getName()==\"br\"){d(this.root);b.moveToPosition(h,CKEDITOR.POSITION_BEFORE_START)}else b.moveToPosition(i,CKEDITOR.POSITION_AFTER_END)}k.setStart(b.startContainer.$,b.startOffset);try{k.setEnd(b.endContainer.$,b.endOffset)}catch(E){if(E.toString().indexOf(\"NS_ERROR_ILLEGAL_VALUE\")>=0){b.collapse(1);k.setEnd(b.endContainer.$,b.endOffset)}else throw E;}p.addRange(k)}}this.reset();this.root.fire(\"selectionchange\")}},createBookmarks:function(a){return this.getRanges().createBookmarks(a)},createBookmarks2:function(a){return this.getRanges().createBookmarks2(a)},\nselectBookmarks:function(a){for(var b=[],c=0;c<a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}this.selectRanges(b);return this},getCommonAncestor:function(){var a=this.getRanges();return a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){var a=this.getNative();try{a&&a[m?\"empty\":\"removeAllRanges\"]()}catch(b){}this.reset()}}})();\nCKEDITOR.editor.prototype.attachStyleStateChange=function(b,c){var a=this._.styleStateChangeCallbacks;if(!a){a=this._.styleStateChangeCallbacks=[];this.on(\"selectionChange\",function(b){for(var c=0;c<a.length;c++){var d=a[c],g=d.style.checkActive(b.data.path)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;d.fn.call(this,g)}})}a.push({style:b,fn:c})};CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;\n(function(){function b(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a.getAttribute(\"data-nostyle\"))c=a;else if(!d){var e=a.getAttribute(\"contentEditable\");e==\"false\"?c=a:e==\"true\"&&(d=1)}}return c}function c(a){var c=a.document;if(a.collapsed){c=y(this,c);a.insertNode(c);a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_END)}else{var d=this.element,e=this._.definition,f,g=e.ignoreReadonly,h=g||e.includeReadonly;h==void 0&&(h=a.root.getCustomData(\"cke_includeReadonly\"));var j=CKEDITOR.dtd[d]||\n(f=true,CKEDITOR.dtd.span);a.enlarge(CKEDITOR.ENLARGE_INLINE,1);a.trim();var m=a.createBookmark(),i=m.startNode,n=m.endNode,k=i,o;if(!g){var q=a.getCommonAncestor(),g=b(i,q),q=b(n,q);g&&(k=g.getNextSourceNode(true));q&&(n=q)}for(k.getPosition(n)==CKEDITOR.POSITION_FOLLOWING&&(k=0);k;){g=false;if(k.equals(n)){k=null;g=true}else{var p=k.type,r=p==CKEDITOR.NODE_ELEMENT?k.getName():null,q=r&&k.getAttribute(\"contentEditable\")==\"false\",s=r&&k.getAttribute(\"data-nostyle\");if(r&&k.data(\"cke-bookmark\")){k=\nk.getNextSourceNode(true);continue}if(!r||j[r]&&!s&&(!q||h)&&(k.getPosition(n)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED&&(!e.childRule||e.childRule(k))){var u=k.getParent();if(u&&((u.getDtd()||CKEDITOR.dtd.span)[d]||f)&&(!e.parentRule||e.parentRule(u))){if(!o&&(!r||!CKEDITOR.dtd.$removeEmpty[r]||(k.getPosition(n)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|\nCKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)){o=a.clone();o.setStartBefore(k)}if(p==CKEDITOR.NODE_TEXT||q||p==CKEDITOR.NODE_ELEMENT&&!k.getChildCount()){for(var p=k,v;(g=!p.getNext(D))&&(v=p.getParent(),j[v.getName()])&&(v.getPosition(i)|CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==CKEDITOR.POSITION_FOLLOWING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED&&(!e.childRule||\ne.childRule(v));)p=v;o.setEndAfter(p)}}else g=true}else g=true;k=k.getNextSourceNode(s||q&&!h)}if(g&&o&&!o.collapsed){for(var g=y(this,c),q=g.hasAttributes(),s=o.getCommonAncestor(),p={},r={},u={},z={},A,B,E;g&&s;){if(s.getName()==d){for(A in e.attributes)if(!z[A]&&(E=s.getAttribute(B)))g.getAttribute(A)==E?r[A]=1:z[A]=1;for(B in e.styles)if(!u[B]&&(E=s.getStyle(B)))g.getStyle(B)==E?p[B]=1:u[B]=1}s=s.getParent()}for(A in r)g.removeAttribute(A);for(B in p)g.removeStyle(B);q&&!g.hasAttributes()&&(g=\nnull);if(g){o.extractContents().appendTo(g);l.call(this,g);o.insertNode(g);g.mergeSiblings();CKEDITOR.env.ie||g.$.normalize()}else{g=new CKEDITOR.dom.element(\"span\");o.extractContents().appendTo(g);o.insertNode(g);l.call(this,g);g.remove(true)}o=null}}a.moveToBookmark(m);a.shrink(CKEDITOR.SHRINK_TEXT)}}function a(a){a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var b=a.createBookmark(),c=b.startNode;if(a.collapsed){for(var d=new CKEDITOR.dom.elementPath(c.getParent(),a.root),e,f=0,g;f<d.elements.length&&(g=\nd.elements[f]);f++){if(g==d.block||g==d.blockLimit)break;if(this.checkElementRemovable(g)){var h;if(a.collapsed&&(a.checkBoundaryOfElement(g,CKEDITOR.END)||(h=a.checkBoundaryOfElement(g,CKEDITOR.START)))){e=g;e.match=h?\"start\":\"end\"}else{g.mergeSiblings();g.getName()==this.element?o.call(this,g):j(g,s(this)[g.getName()])}}}if(e){g=c;for(f=0;;f++){h=d.elements[f];if(h.equals(e))break;else if(h.match)continue;else h=h.clone();h.append(g);g=h}g[e.match==\"start\"?\"insertBefore\":\"insertAfter\"](e)}}else{var m=\nb.endNode,l=this,d=function(){for(var a=new CKEDITOR.dom.elementPath(c.getParent()),b=new CKEDITOR.dom.elementPath(m.getParent()),d=null,e=null,f=0;f<a.elements.length;f++){var g=a.elements[f];if(g==a.block||g==a.blockLimit)break;l.checkElementRemovable(g)&&(d=g)}for(f=0;f<b.elements.length;f++){g=b.elements[f];if(g==b.block||g==b.blockLimit)break;l.checkElementRemovable(g)&&(e=g)}e&&m.breakParent(e);d&&c.breakParent(d)};d();for(e=c;!e.equals(m);){f=e.getNextSourceNode();if(e.type==CKEDITOR.NODE_ELEMENT&&\nthis.checkElementRemovable(e)){e.getName()==this.element?o.call(this,e):j(e,s(this)[e.getName()]);if(f.type==CKEDITOR.NODE_ELEMENT&&f.contains(c)){d();f=c.getNext()}}e=f}}a.moveToBookmark(b)}function f(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&z(a,this)}function e(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,\nc=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&a.removeStyle(e)}}function d(a){var b=a.createBookmark(true),c=a.createIterator();c.enforceRealBlocks=true;if(this._.enterMode)c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e=a.document;d=c.getNextParagraph();)if(!d.isReadOnly()){var f=y(this,e,d);k(d,f)}a.moveToBookmark(b)}function g(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=true;c.enlargeBr=\nthis._.enterMode!=CKEDITOR.ENTER_BR;for(var d;d=c.getNextParagraph();)if(this.checkElementRemovable(d))if(d.is(\"pre\")){var e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\");e&&d.copyAttributes(e);k(d,e)}else o.call(this,d);a.moveToBookmark(b)}function k(a,b){var c=!b;if(c){b=a.getDocument().createElement(\"div\");a.copyAttributes(b)}var d=b&&b.is(\"pre\"),e=a.is(\"pre\"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=m(f,\n/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g,\"\");f=f.replace(/[ \\t\\r\\n]*(<br[^>]*>)[ \\t\\r\\n]*/gi,\"$1\");f=f.replace(/([ \\t\\n\\r]+|&nbsp;)/g,\" \");f=f.replace(/<br\\b[^>]*>/gi,\"\\n\");if(CKEDITOR.env.ie){var g=a.getDocument().createElement(\"div\");g.append(e);e.$.outerHTML=\"<pre>\"+f+\"</pre>\";e.copyAttributes(g.getFirst());e=g.getFirst().remove()}else e.setHtml(f);b=e}else f?b=n(c?[a.getHtml()]:h(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,j;if((j=c.getPrevious(v))&&j.is&&j.is(\"pre\")){d=m(j.getHtml(),/\\n$/,\"\")+\n\"\\n\\n\"+m(c.getHtml(),/^\\n/,\"\");CKEDITOR.env.ie?c.$.outerHTML=\"<pre>\"+d+\"</pre>\":c.setHtml(d);j.remove()}}else c&&q(b)}function h(a){a.getName();var b=[];m(a.getOuterHtml(),/(\\S\\s*)\\n(?:\\s|(<span[^>]+data-cke-bookmark.*?\\/span>))*\\n(?!$)/gi,function(a,b,c){return b+\"</pre>\"+c+\"<pre>\"}).replace(/<pre\\b.*?>([\\s\\S]*?)<\\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var d=\"\",e=\"\",a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\\/span>)|(<span[^>]+data-cke-bookmark.*?\\/span>$)/gi,function(a,\nb,c){b&&(d=b);c&&(e=c);return\"\"});return d+a.replace(b,c)+e}function n(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\\r\\n|\\r)/g,\"\\n\"),e=m(e,/^[ \\t]*\\n/,\"\"),e=m(e,/\\n$/,\"\"),e=m(e,/^[ \\t]+|[ \\t]+$/g,function(a,b){return a.length==1?\"&nbsp;\":b?\" \"+CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1):CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1)+\" \"}),e=e.replace(/\\n/g,\"<br>\"),e=e.replace(/[ \\t]{2,}/g,function(a){return CKEDITOR.tools.repeat(\"&nbsp;\",\na.length-1)+\" \"});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function o(a){var b=this._.definition,c=b.attributes,b=b.styles,d=s(this)[a.getName()],e=CKEDITOR.tools.isEmpty(c)&&CKEDITOR.tools.isEmpty(b),f;for(f in c)if(!((f==\"class\"||this._.definition.fullMatch)&&a.getAttribute(f)!=A(f,c[f]))){e=a.hasAttribute(f);a.removeAttribute(f)}for(var g in b)if(!(this._.definition.fullMatch&&a.getStyle(g)!=A(g,b[g],true))){e=e||!!a.getStyle(g);a.removeStyle(g)}j(a,d,p[a.getName()]);\ne&&(this._.definition.alwaysRemoveElement?q(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?q(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"))}function l(a){for(var b=s(this),c=a.getElementsByTag(this.element),d=c.count();--d>=0;)o.call(this,c.getItem(d));for(var e in b)if(e!=this.element){c=a.getElementsByTag(e);for(d=c.count()-1;d>=0;d--){var f=c.getItem(d);j(f,b[e])}}}function j(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=\nb[d][0],f;if(f=a.getAttribute(e)){var g=b[d][1];(g===null||g.test&&g.test(f)||typeof g==\"string\"&&f==g)&&a.removeAttribute(e)}}c||q(a)}function q(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(v),d=a.getNext(v);c&&(c.type==CKEDITOR.NODE_TEXT||!c.isBlockBoundary({br:1}))&&a.append(\"br\",1);d&&(d.type==CKEDITOR.NODE_TEXT||!d.isBlockBoundary({br:1}))&&a.append(\"br\");a.remove(true)}else{c=a.getFirst();d=a.getLast();a.remove(true);if(c){c.type==CKEDITOR.NODE_ELEMENT&&\nc.mergeSiblings();d&&(!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT)&&d.mergeSiblings()}}}function y(a,b,c){var d;d=a.element;d==\"*\"&&(d=\"span\");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=z(d,a);b.getCustomData(\"doc_processing_style\")&&d.hasAttribute(\"id\")?d.removeAttribute(\"id\"):b.setCustomData(\"doc_processing_style\",1);return d}function z(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute(\"style\",c);\nreturn a}function i(a,b){for(var c in a)a[c]=a[c].replace(r,function(a,c){return b[c]})}function s(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;if(typeof e==\"string\")f=e.toLowerCase();else{f=e.element?e.element.toLowerCase():a.element;g=e.attributes}e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function A(a,\nb,c){var d=new CKEDITOR.dom.element(\"span\");d[c?\"setStyle\":\"setAttribute\"](a,b);return d[c?\"getStyle\":\"getAttribute\"](a)}function B(a,b){for(var c=a.document,d=a.getRanges(),e=b?this.removeFromRange:this.applyToRange,f,g=d.createIterator();f=g.getNextRange();)e.call(this,f);a.selectRanges(d);c.removeCustomData(\"doc_processing_style\")}var p={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,\nkeygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},E={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},u=/\\s*(?:;\\s*|$)/,r=/#\\((.+?)\\)/g,D=CKEDITOR.dom.walker.bookmark(0,1),v=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){var c=a.attributes;if(c&&c.style){a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style));delete c.style}if(b){a=CKEDITOR.tools.clone(a);i(a.attributes,b);i(a.styles,\nb)}c=this.element=a.element?typeof a.element==\"string\"?a.element.toLowerCase():a.element:\"*\";this.type=a.type||(p[c]?CKEDITOR.STYLE_BLOCK:E[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);if(typeof this.element==\"object\")this.type=CKEDITOR.STYLE_OBJECT;this._={definition:a}};CKEDITOR.editor.prototype.applyStyle=function(a){B.call(a,this.getSelection())};CKEDITOR.editor.prototype.removeStyle=function(a){B.call(a,this.getSelection(),1)};CKEDITOR.style.prototype={apply:function(a){B.call(this,a.getSelection())},\nremove:function(a){B.call(this,a.getSelection(),1)},applyToRange:function(a){return(this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?d:this.type==CKEDITOR.STYLE_OBJECT?f:null).call(this,a)},removeFromRange:function(b){return(this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?a:this.type==CKEDITOR.STYLE_BLOCK?g:this.type==CKEDITOR.STYLE_OBJECT?e:null).call(this,b)},applyToObject:function(a){z(a,this)},checkActive:function(a){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||\na.blockLimit,true);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var b=a.elements,c=0,d;c<b.length;c++){d=b[c];if(!(this.type==CKEDITOR.STYLE_INLINE&&(d==a.block||d==a.blockLimit))){if(this.type==CKEDITOR.STYLE_OBJECT){var e=d.getName();if(!(typeof this.element==\"string\"?e==this.element:e in this.element))continue}if(this.checkElementRemovable(d,true))return true}}}return false},checkApplicable:function(a){switch(this.type){case CKEDITOR.STYLE_OBJECT:return a.contains(this.element)}return true},\ncheckElementMatch:function(a,b){var c=this._.definition;if(!a||!c.ignoreReadonly&&a.isReadOnly())return false;var d=a.getName();if(typeof this.element==\"string\"?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return true;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f){e++;d[g]=f[g]}if(g=CKEDITOR.style.getStyleText(c)){d.style||e++;d.style=g}d._length=e;c=c._AC=d}if(c._length){for(var h in c)if(h!=\"_length\"){e=a.getAttribute(h)||\"\";if(h==\"style\")a:{d=c[h];typeof d==\n\"string\"&&(d=CKEDITOR.tools.parseCssText(d));typeof e==\"string\"&&(e=CKEDITOR.tools.parseCssText(e,true));g=void 0;for(g in d)if(!(g in e&&(e[g]==d[g]||d[g]==\"inherit\"||e[g]==\"inherit\"))){d=false;break a}d=true}else d=c[h]==e;if(d){if(!b)return true}else if(b)return false}if(b)return true}else return true}return false},checkElementRemovable:function(a,b){if(this.checkElementMatch(a,b))return true;var c=s(this)[a.getName()];if(c){var d;if(!(c=c.attributes))return true;for(var e=0;e<c.length;e++){d=\nc[e][0];if(d=a.getAttribute(d)){var f=c[e][1];if(f===null||typeof f==\"string\"&&d==f||f.test(d))return true}}}return false},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;d==\"bdo\"&&(d=\"span\");var c=[\"<\",d],e=b.attributes;if(e)for(var f in e)c.push(\" \",f,'=\"',e[f],'\"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style=\"',e,'\"');c.push(\">\",a||b.name,\"</\",d,\">\");return c.join(\"\")}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||\n\"\",d=\"\";c.length&&(c=c.replace(u,\";\"));for(var e in b){var f=b[e],g=(e+\":\"+f).replace(u,\";\");f==\"inherit\"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d}})();CKEDITOR.styleCommand=function(b){this.style=b};CKEDITOR.styleCommand.prototype.exec=function(b){b.focus();this.state==CKEDITOR.TRISTATE_OFF?b.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&b.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager(\"\",\"stylesSet\");\nCKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(b,c,a){CKEDITOR.stylesSet.addExternal(b,c,\"\");CKEDITOR.stylesSet.load(b,a)};\nCKEDITOR.editor.prototype.getStylesSet=function(b){if(this._.stylesDefinitions)b(this._.stylesDefinitions);else{var c=this,a=c.config.stylesCombo_stylesSet||c.config.stylesSet||\"default\";if(a instanceof Array){c._.stylesDefinitions=a;b(a)}else{var a=a.split(\":\"),f=a[0];CKEDITOR.stylesSet.addExternal(f,a[1]?a.slice(1).join(\":\"):CKEDITOR.getUrl(\"styles.js\"),\"\");CKEDITOR.stylesSet.load(f,function(a){c._.stylesDefinitions=a[f];b(c._.stylesDefinitions)})}}};\nCKEDITOR.dom.comment=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createComment(b));CKEDITOR.dom.domObject.call(this,b)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return\"<\\!--\"+this.$.nodeValue+\"--\\>\"}});\n(function(){var b={},c;for(c in CKEDITOR.dtd.$blockLimit)c in CKEDITOR.dtd.$list||(b[c]=1);var a={};for(c in CKEDITOR.dtd.$block)c in CKEDITOR.dtd.$blockLimit||c in CKEDITOR.dtd.$empty||(a[c]=1);CKEDITOR.dom.elementPath=function(c,e){var d=null,g=null,k=[],e=e||c.getDocument().getBody(),h=c;do if(h.type==CKEDITOR.NODE_ELEMENT){k.push(h);if(!this.lastElement){this.lastElement=h;if(h.is(CKEDITOR.dtd.$object))continue}var m=h.getName();if(!g){!d&&a[m]&&(d=h);if(b[m]){var n;if(n=!d){if(m=m==\"div\"){a:{m=\nh.getChildren();n=0;for(var o=m.count();n<o;n++){var l=m.getItem(n);if(l.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[l.getName()]){m=true;break a}}m=false}m=!m&&!h.equals(e)}n=m}n?d=h:g=h}}if(h.equals(e))break}while(h=h.getParent());this.block=d;this.blockLimit=g;this.root=e;this.elements=k}})();\nCKEDITOR.dom.elementPath.prototype={compare:function(b){var c=this.elements,b=b&&b.elements;if(!b||c.length!=b.length)return false;for(var a=0;a<c.length;a++)if(!c[a].equals(b[a]))return false;return true},contains:function(b,c,a){var f;typeof b==\"string\"&&(f=function(a){return a.getName()==b});b instanceof CKEDITOR.dom.element?f=function(a){return a.equals(b)}:CKEDITOR.tools.isArray(b)?f=function(a){return CKEDITOR.tools.indexOf(b,a.getName())>-1}:typeof b==\"function\"?f=b:typeof b==\"object\"&&(f=\nfunction(a){return a.getName()in b});var e=this.elements,d=e.length;c&&d--;if(a){e=Array.prototype.slice.call(e,0);e.reverse()}for(c=0;c<d;c++)if(f(e[c]))return e[c];return null},isContextFor:function(b){var c;if(b in CKEDITOR.dtd.$block){c=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit;return!!c.getDtd()[b]}return true},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}};\nCKEDITOR.dom.text=function(b,c){typeof b==\"string\"&&(b=(c?c.$:document).createTextNode(b));this.$=b};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node;\nCKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(b){this.$.nodeValue=b},split:function(b){var c=this.$.parentNode,a=c.childNodes.length,f=this.getLength(),e=this.getDocument(),d=new CKEDITOR.dom.text(this.$.splitText(b),e);if(c.childNodes.length==a)if(b>=f){d=e.createText(\"\");d.insertAfter(this)}else{b=e.createText(\"\");b.insertAfter(d);b.remove()}return d},substring:function(b,\nc){return typeof c!=\"number\"?this.$.nodeValue.substr(b):this.$.nodeValue.substring(b,c)}});\n(function(){function b(a,b,c){var d=a.serializable,g=b[c?\"endContainer\":\"startContainer\"],k=c?\"endOffset\":\"startOffset\",h=d?b.document.getById(a.startNode):a.startNode,a=d?b.document.getById(a.endNode):a.endNode;if(g.equals(h.getPrevious())){b.startOffset=b.startOffset-g.getLength()-a.getPrevious().getLength();g=a.getNext()}else if(g.equals(a.getPrevious())){b.startOffset=b.startOffset-g.getLength();g=a.getNext()}g.equals(h.getParent())&&b[k]++;g.equals(a.getParent())&&b[k]++;b[c?\"endContainer\":\"startContainer\"]=\ng;return b}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,c)};var c={createIterator:function(){var a=this,b=CKEDITOR.dom.walker.bookmark(),c=[],d;return{getNextRange:function(g){d=d==void 0?0:d+1;var k=a[d];if(k&&a.length>1){if(!d)for(var h=a.length-1;h>=0;h--)c.unshift(a[h].createBookmark(true));if(g)for(var m=0;a[d+m+1];){for(var n=k.document,g=0,h=n.getById(c[m].endNode),n=n.getById(c[m+\n1].startNode);;){h=h.getNextSourceNode(false);if(n.equals(h))g=1;else if(b(h)||h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary())continue;break}if(!g)break;m++}for(k.moveToBookmark(c.shift());m--;){h=a[++d];h.moveToBookmark(c.shift());k.setEnd(h.endContainer,h.endOffset)}}return k}}},createBookmarks:function(a){for(var c=[],e,d=0;d<this.length;d++){c.push(e=this[d].createBookmark(a,true));for(var g=d+1;g<this.length;g++){this[g]=b(e,this[g]);this[g]=b(e,this[g],true)}}return c},createBookmarks2:function(a){for(var b=\n[],c=0;c<this.length;c++)b.push(this[c].createBookmark2(a));return b},moveToBookmarks:function(a){for(var b=0;b<this.length;b++)this[b].moveToBookmark(a[b])}}})();\n(function(){function b(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(\",\")[1]||\"skins/\"+CKEDITOR.skinName.split(\",\")[0]+\"/\")}function c(a){var c=CKEDITOR.skin[\"ua_\"+a],d=CKEDITOR.env;if(c)for(var c=c.split(\",\").sort(function(a,b){return a>b?-1:1}),e=0,f;e<c.length;e++){f=c[e];if(d.ie&&(f.replace(/^ie/,\"\")==d.version||d.quirks&&f==\"iequirks\"))f=\"ie\";if(d[f]){a=a+(\"_\"+c[e]);break}}return CKEDITOR.getUrl(b()+a+\".css\")}function a(a,b){if(!d[a]){CKEDITOR.document.appendStyleSheet(c(a));d[a]=1}b&&b()}\nfunction f(a){var b=a.getById(g);if(!b){b=a.getHead().append(\"style\");b.setAttribute(\"id\",g);b.setAttribute(\"type\",\"text/css\")}return b}function e(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split(\"}\").slice(0,-1);for(e=0;e<b.length;e++)b[e]=b[e].split(\"{\")}for(var g=0;g<a.length;g++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[g].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie?\na[g].$.styleSheet.cssText=a[g].$.styleSheet.cssText+f:a[g].$.innerHTML=a[g].$.innerHTML+f}}var d={};CKEDITOR.skin={path:b,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(\",\")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(b()+\"skin.js\"),function(){a(c,d)}):a(c,d)},getPath:function(a){return CKEDITOR.getUrl(c(a))},icons:{},addIcon:function(a,b,c){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0})},getIconStyle:function(a,b,c,d){var e;if(a){a=a.toLowerCase();b&&\n(e=this.icons[a+\"-rtl\"]);e||(e=this.icons[a])}a=c||e&&e.path||\"\";d=d||e&&e.offset;return a&&\"background-image:url(\"+CKEDITOR.getUrl(a)+\");background-position:0 \"+d+\"px;\"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=f(CKEDITOR.document);return(this.setUiColor=function(a){var c=CKEDITOR.skin.chameleon,d=[[h,a]];this.uiColor=a;e([b],c(this,\"editor\"),d);e(k,c(this,\"panel\"),d)}).call(this,a)}});var g=\"cke_ui_color\",k=[],h=/\\$color/g;\nCKEDITOR.on(\"instanceLoaded\",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag(\"iframe\").getItem(0).getFrameDocument();if(!a.getById(\"cke_ui_color\")){a=f(a);k.push(a);var c=b.getUiColor();c&&e([a],CKEDITOR.skin.chameleon(b,\"panel\"),[[h,c]])}};b.on(\"panelShow\",a);b.on(\"menuShow\",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})();\n(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var b=CKEDITOR.dom.element.createFromHtml('<div style=\"width:0px;height:0px;position:absolute;left:-10000px;border: 1px solid;border-color: red blue;\"></div>',CKEDITOR.document);b.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=b.getComputedStyle(\"border-top-color\")==b.getComputedStyle(\"border-right-color\")}catch(c){CKEDITOR.env.hc=false}b.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+\" cke_hc\";CKEDITOR.document.appendStyleText(\".cke{visibility:hidden;}\");\nCKEDITOR.status=\"loaded\";CKEDITOR.fireOnce(\"loaded\");if(b=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var a=0;a<b.length;a++){CKEDITOR.editor.prototype.constructor.apply(b[a][0],b[a][1]);CKEDITOR.add(b[a][0])}}})();/*\n Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or http://ckeditor.com/license\n*/\nCKEDITOR.skin.name=\"moono\";CKEDITOR.skin.ua_editor=\"ie,iequirks,ie7,ie8,gecko\";CKEDITOR.skin.ua_dialog=\"ie,iequirks,ie7,ie8,opera\";\nCKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=(\"0\"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return\"#\"+a.join(\"\")}}(),c=function(){var b=new CKEDITOR.template(\"background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');\");return function(c,\na){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template(\"{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] \"),\npanel:new CKEDITOR.template(\".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] \")};\nreturn function(g,e){var a=g.uiColor,a={id:\".\"+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c(\"#FFFFFF\",\"#FFFFFF\"),dialogTabSelectedBorder:\"#FFF\",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\\[/g,\n\"{\").replace(/\\]/g,\"}\")}}();CKEDITOR.plugins.add(\"dialogui\",{onLoad:function(){var h=function(b){this._||(this._={});this._[\"default\"]=this._.initValue=b[\"default\"]||\"\";this._.required=b.required||!1;for(var a=[this._],d=1;d<arguments.length;d++)a.push(arguments[d]);a.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,a);return this._},r={build:function(b,a,d){return new CKEDITOR.ui.dialog.textInput(b,a,d)}},l={build:function(b,a,d){return new CKEDITOR.ui.dialog[a.type](b,a,d)}},n={isChanged:function(){return this.getValue()!=\nthis.getInitValue()},reset:function(b){this.setValue(this.getInitValue(),b)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._[\"default\"]},getInitValue:function(){return this._.initValue}},o=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(b,a){this._.domOnChangeRegistered||(b.on(\"load\",function(){this.getInputElement().on(\"change\",function(){b.parts.dialog.isVisible()&&this.fire(\"change\",{value:this.getValue()})},\nthis)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},!0),s=/^on([A-Z]\\w+)/,p=function(b){for(var a in b)(s.test(a)||\"title\"==a||\"type\"==a)&&delete b[a];return b};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,a,d,e){if(!(4>arguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+\"_label\";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"div\",null,{role:\"presentation\"},function(){var f=[],d=a.required?\" cke_required\":\"\";\"horizontal\"!=\na.labelLayout?f.push('<label class=\"cke_dialog_ui_labeled_label'+d+'\" ',' id=\"'+c.labelId+'\"',c.inputId?' for=\"'+c.inputId+'\"':\"\",(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",a.label,\"</label>\",'<div class=\"cke_dialog_ui_labeled_content\"'+(a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\")+' role=\"presentation\">',e.call(this,b,a),\"</div>\"):(d={type:\"hbox\",widths:a.widths,padding:0,children:[{type:\"html\",html:'<label class=\"cke_dialog_ui_labeled_label'+d+'\" id=\"'+c.labelId+'\" for=\"'+c.inputId+'\"'+\n(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\"+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\"},{type:\"html\",html:'<span class=\"cke_dialog_ui_labeled_content\"'+(a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\")+\">\"+e.call(this,b,a)+\"</span>\"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,d,f));return f.join(\"\")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this._.inputId=CKEDITOR.tools.getNextId()+\"_textInput\",c={\"class\":\"cke_dialog_ui_input_\"+a.type,id:e,type:a.type};\na.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var f=this,i=!1;b.on(\"load\",function(){f.getInputElement().on(\"keydown\",function(a){a.data.getKeystroke()==13&&(i=true)});f.getInputElement().on(\"keyup\",function(a){if(a.data.getKeystroke()==13&&i){b.getButton(\"ok\")&&setTimeout(function(){b.getButton(\"ok\").click()},0);i=false}},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var b=\n['<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"'];a.width&&b.push('style=\"width:'+a.width+'\" ');b.push(\"><input \");c[\"aria-labelledby\"]=this._.labelId;this._.required&&(c[\"aria-required\"]=this._.required);for(var f in c)b.push(f+'=\"'+c[f]+'\" ');b.push(\" /></div>\");return b.join(\"\")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this,c=this._.inputId=CKEDITOR.tools.getNextId()+\"_textarea\",f={};a.validate&&(this.validate=a.validate);f.rows=a.rows||5;f.cols=\na.cols||20;\"undefined\"!=typeof a.inputStyle&&(f.style=a.inputStyle);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f[\"aria-labelledby\"]=this._.labelId;this._.required&&(f[\"aria-required\"]=this._.required);var a=['<div class=\"cke_dialog_ui_input_textarea\" role=\"presentation\"><textarea class=\"cke_dialog_ui_input_textarea\" id=\"',c,'\" '],b;for(b in f)a.push(b+'=\"'+CKEDITOR.tools.htmlEncode(f[b])+'\" ');a.push(\">\",CKEDITOR.tools.htmlEncode(e._[\"default\"]),\"</textarea></div>\");return a.join(\"\")})}},\ncheckbox:function(b,a,d){if(!(3>arguments.length)){var e=h.call(this,a,{\"default\":!!a[\"default\"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"span\",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_checkbox\":CKEDITOR.tools.getNextId()+\"_checkbox\"},true),f=[],d=CKEDITOR.tools.getNextId()+\"_label\",g={\"class\":\"cke_dialog_ui_checkbox_input\",type:\"checkbox\",\"aria-labelledby\":d};p(c);if(a[\"default\"])g.checked=\"checked\";if(typeof c.inputStyle!=\n\"undefined\")c.style=c.inputStyle;e.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,f,\"input\",null,g);f.push(' <label id=\"',d,'\" for=\"',g.id,'\"'+(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",CKEDITOR.tools.htmlEncode(a.label),\"</label>\");return f.join(\"\")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._[\"default\"]||(this._[\"default\"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.valdiate);var e=[],c=this;CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){for(var f=\n[],d=[],g=a.id?a.id+\"_radio\":CKEDITOR.tools.getNextId()+\"_radio\",j=0;j<a.items.length;j++){var k=a.items[j],h=k[2]!==void 0?k[2]:k[0],l=k[1]!==void 0?k[1]:k[0],m=CKEDITOR.tools.getNextId()+\"_radio_input\",n=m+\"_label\",m=CKEDITOR.tools.extend({},a,{id:m,title:null,type:null},true),h=CKEDITOR.tools.extend({},m,{title:h},true),o={type:\"radio\",\"class\":\"cke_dialog_ui_radio_input\",name:g,value:l,\"aria-labelledby\":n},q=[];if(c._[\"default\"]==l)o.checked=\"checked\";p(m);p(h);if(typeof m.inputStyle!=\"undefined\")m.style=\nm.inputStyle;e.push(new CKEDITOR.ui.dialog.uiElement(b,m,q,\"input\",null,o));q.push(\" \");new CKEDITOR.ui.dialog.uiElement(b,h,q,\"label\",null,{id:n,\"for\":o.id},k[0]);f.push(q.join(\"\"))}new CKEDITOR.ui.dialog.hbox(b,e,f,d);return d.join(\"\")});this._.children=e}},button:function(b,a,d){if(arguments.length){\"function\"==typeof a&&(a=a(b.getParentEditor()));h.call(this,a,{disabled:a.disabled||!1});CKEDITOR.event.implementOn(this);var e=this;b.on(\"load\",function(){var a=this.getElement();(function(){a.on(\"click\",\ne.click,e);a.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var c=CKEDITOR.tools.extend({},a);delete c.style;var f=CKEDITOR.tools.getNextId()+\"_label\";CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,\"a\",null,{style:a.style,href:\"javascript:void(0)\",title:a.label,hidefocus:\"true\",\"class\":a[\"class\"],role:\"button\",\"aria-labelledby\":f},'<span id=\"'+f+'\" class=\"cke_dialog_ui_button\">'+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\")}},\nselect:function(b,a,d){if(!(3>arguments.length)){var e=h.call(this,a);a.validate&&(this.validate=a.validate);e.inputId=CKEDITOR.tools.getNextId()+\"_select\";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_select\":CKEDITOR.tools.getNextId()+\"_select\"},true),d=[],i=[],g={id:e.inputId,\"class\":\"cke_dialog_ui_input_select\",\"aria-labelledby\":this._.labelId};d.push('<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"');a.width&&d.push('style=\"width:'+\na.width+'\" ');d.push(\">\");if(a.size!=void 0)g.size=a.size;if(a.multiple!=void 0)g.multiple=a.multiple;p(c);for(var j=0,k;j<a.items.length&&(k=a.items[j]);j++)i.push('<option value=\"',CKEDITOR.tools.htmlEncode(k[1]!==void 0?k[1]:k[0]).replace(/\"/g,\"&quot;\"),'\" /> ',CKEDITOR.tools.htmlEncode(k[0]));if(typeof c.inputStyle!=\"undefined\")c.style=c.inputStyle;e.select=new CKEDITOR.ui.dialog.uiElement(b,c,d,\"select\",null,g,i.join(\"\"));d.push(\"</div>\");return d.join(\"\")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===\na[\"default\"]&&(a[\"default\"]=\"\");var e=CKEDITOR.tools.extend(h.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on(\"load\",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass(\"cke_dialog_ui_input_file\")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e.frameId=CKEDITOR.tools.getNextId()+\"_fileInput\";var b=CKEDITOR.env.isCustomDomain(),d=['<iframe frameborder=\"0\" allowtransparency=\"0\" class=\"cke_dialog_ui_input_file\" role=\"presentation\" id=\"',\ne.frameId,'\" title=\"',a.label,'\" src=\"javascript:void('];d.push(b?\"(function(){document.open();document.domain='127.0.0.1\"127.0.0.1\"127.0.0.1';document.close();})()\":\"0\");d.push(')\"></iframe>');return d.join(\"\")})}},fileButton:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var e=this;a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),f=c.onClick;c.className=(c.className?c.className+\" \":\"\")+\"cke_dialog_ui_button\";c.onClick=function(c){var d=a[\"for\"];if(!f||f.call(this,c)!==false){b.getContentElement(d[0],\nd[1]).submit();this.disable()}};b.on(\"load\",function(){b.getContentElement(a[\"for\"][0],a[\"for\"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\\s*<[\\w:]+\\s+([^>]*)?>../../../,a=/^(/s_2A<[\\w:]+(?:\\s+[^>]*)?)((?:.|\\r|\\n)+)$/,d=/\\/$/;return function(e,c,f){if(!(3>arguments.length)){var i=[],g=c.html;\"<\"!=g.charAt(0)&&(g=\"<span>\"+g+\"</span>\");var j=c.focus;j&&(this.focus=function(){this.selectParentTab();\"function\"==typeof j&&j.call(this);this.fire(\"focus\")},c.isFocusable&&\n(this.isFocusable=this.isFocusable),this.keyboardFocusable=!0);CKEDITOR.ui.dialog.uiElement.call(this,e,c,i,\"span\",null,null,\"\");i=i.join(\"\").match(b);g=g.match(a)||[\"\",\"\",\"\"];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]=\"../../../\"+g[2]);f.push([g[1],\" \",i[1]||\"\",g[2]].join(\"\"))}}}(),fieldset:function(b,a,d,e,c){var f=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,e,\"fieldset\",null,null,function(){var a=[];f&&a.push(\"<legend\"+(c.labelStyle?' style=\"'+c.labelStyle+'\"':\"\")+\">\"+f+\"</legend>\");\nfor(var b=0;b<d.length;b++)a.push(d[b]);return a.join(\"\")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(b){var a=CKEDITOR.document.getById(this._.labelId);1>a.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b=CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?\n\"\":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire(\"click\",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass(\"cke_disabled\")},disable:function(){this._.disabled=!0;this.getElement().addClass(\"cke_disabled\")},isVisible:function(){return this.getElement().getFirst().isVisible()},isEnabled:function(){return!this._.disabled},\neventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on(\"click\",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},focus:function(){var b=this.selectParentTab();\nsetTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){!b&&(b=\"\");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,\n{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var e=new CKEDITOR.dom.element(\"option\",this.getDialog().getParentEditor().document),c=this.getInputElement().$;e.$.text=b;e.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(e.$):c.add(e.$,null):c.add(e.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0<b.length;)b.remove(0);return this},keyboardFocusable:!0},\nn,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(b,a){this.getInputElement().$.checked=b;!a&&this.fire(\"change\",{value:b})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(b,a){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return o.onChange.apply(this,arguments);b.on(\"load\",\nfunction(){var a=this._.checkbox.getElement();a.on(\"propertychange\",function(b){b=b.data.$;\"checked\"==b.propertyName&&this.fire(\"change\",{value:a.$.checked})},this)},this);this.on(\"change\",a);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(b,a){for(var d=this._.children,e,c=0;c<d.length&&(e=d[c]);c++)e.getElement().$.checked=e.getValue()==b;!a&&this.fire(\"change\",{value:b})},getValue:function(){for(var b=\nthis._.children,a=0;a<b.length;a++)if(b[a].getElement().$.checked)return b[a].getValue();return null},accessKeyUp:function(){var b=this._.children,a;for(a=0;a<b.length;a++)if(b[a].getElement().$.checked){b[a].getElement().focus();return}b[0].getElement().focus()},eventProcessors:{onChange:function(b,a){if(CKEDITOR.env.ie)b.on(\"load\",function(){for(var a=this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on(\"propertychange\",function(a){a=a.data.$;\"checked\"==a.propertyName&&this.$.checked&&\nb.fire(\"change\",{value:this.getAttribute(\"value\")})})},this),this.on(\"change\",a);else return o.onChange.apply(this,arguments);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,n,{getInputElement:function(){var b=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<b.$.forms.length?new CKEDITOR.dom.element(b.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();\nreturn this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(b){var a=/^on([A-Z]\\w+)/,d,e=function(a,b,c,d){a.on(\"formLoaded\",function(){a.getInputElement().on(c,d,a)})},c;for(c in b)if(d=c.match(a))this.eventProcessors[c]?this.eventProcessors[c].call(this,this._.dialog,b[c]):e(this,this._.dialog,d[1].toLowerCase(),b[c]);return this},reset:function(){function b(){d.$.open();CKEDITOR.env.isCustomDomain()&&(d.$.domain=document.domain);var b=\"\";e.size&&\n(b=e.size-(CKEDITOR.env.ie?7:0));var h=a.frameId+\"_input\";d.$.write(['<html dir=\"'+g+'\" lang=\"'+j+'\"><head><title></title></head><body style=\"margin: 0; overflow: hidden; background: transparent;\">','<form enctype=\"multipart/form-data\" method=\"POST\" dir=\"'+g+'\" lang=\"'+j+'\" action=\"',CKEDITOR.tools.htmlEncode(e.action),'\"><label id=\"',a.labelId,'\" for=\"',h,'\" style=\"display:none\">',CKEDITOR.tools.htmlEncode(e.label),'</label><input id=\"',h,'\" aria-labelledby=\"',a.labelId,'\" type=\"file\" name=\"',CKEDITOR.tools.htmlEncode(e.id||\n\"cke_upload\"),'\" size=\"',CKEDITOR.tools.htmlEncode(0<b?b:\"\"),'\" /></form></body></html>',\"<script>window.parent.CKEDITOR.tools.callFunction(\"+f+\");\",\"window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction(\"+i+\")}<\\/script>\"].join(\"\"));d.$.close();for(b=0;b<c.length;b++)c[b].enable()}var a=this._,d=CKEDITOR.document.getById(a.frameId).getFrameDocument(),e=a.definition,c=a.buttons,f=this.formLoadedNumber,i=this.formUnloadNumber,g=a.dialog._.editor.lang.dir,j=a.dialog._.editor.langCode;\nf||(f=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire(\"formLoaded\")},this),i=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(f);CKEDITOR.tools.removeFunction(i)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},getValue:function(){return this.getInputElement().$.value||\"\"},setInitValue:function(){this._.initValue=\"\"},eventProcessors:{onChange:function(b,\na){this._.domOnChangeRegistered||(this.on(\"formLoaded\",function(){this.getInputElement().on(\"change\",function(){this.fire(\"change\",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement(\"text\",r);CKEDITOR.dialog.addUIElement(\"password\",r);CKEDITOR.dialog.addUIElement(\"textarea\",\nl);CKEDITOR.dialog.addUIElement(\"checkbox\",l);CKEDITOR.dialog.addUIElement(\"radio\",l);CKEDITOR.dialog.addUIElement(\"button\",l);CKEDITOR.dialog.addUIElement(\"select\",l);CKEDITOR.dialog.addUIElement(\"file\",l);CKEDITOR.dialog.addUIElement(\"fileButton\",l);CKEDITOR.dialog.addUIElement(\"html\",l);CKEDITOR.dialog.addUIElement(\"fieldset\",{build:function(b,a,d){for(var e=a.children,c,f=[],i=[],g=0;g<e.length&&(c=e[g]);g++){var h=[];f.push(h);i.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,c,h))}return new CKEDITOR.ui.dialog[a.type](b,\ni,f,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;\n(function(){function p(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function q(a,b){for(var c=a.$.getElementsByTagName(\"input\"),\ne=0,d=c.length;e<d;e++){var g=new CKEDITOR.dom.element(c[e]);\"text\"==g.getAttribute(\"type\").toLowerCase()&&(b?(g.setAttribute(\"value\",g.getCustomData(\"fake_value\")||\"\"),g.removeCustomData(\"fake_value\")):(g.setCustomData(\"fake_value\",g.getAttribute(\"value\")),g.setAttribute(\"value\",\"\")))}}function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute(\"aria-invalid\"):c.setAttribute(\"aria-invalid\",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire(\"validated\",{valid:a,msg:b})}\nfunction Q(){var a=this.getInputElement();a&&a.removeAttribute(\"aria-invalid\")}function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate(\"dialog\",S).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:\"cke_editor_\"+a.name.replace(/\\./g,\"\\\\.\")+\"_dialog\",closeTitle:a.lang.common.close})),b=a.getChild([0,0,0,0,0]),c=b.getChild(0),e=b.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.ie6Compat){var d=CKEDITOR.env.isCustomDomain(),\nd=\"javascript:void(function(){\"+encodeURIComponent(\"document.open();\"+(d?'document.domain=\"127.0.0.1'+document.domain+'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\")+\"}())\";CKEDITOR.dom.element.createFromHtml('<iframe frameBorder=\"0\" class=\"cke_iframe_shim\" src=\"'+d+'\" tabIndex=\"-1\"></iframe>').appendTo(b.getParent())}c.unselectable();e.unselectable();return{element:a,parts:{dialog:a.getChild(0),title:c,close:e,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function H(a,b,c){this.element=b;\nthis.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute(\"disabled\")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire(\"click\")});b.on(\"focus\",function(){this.fire(\"mouseover\")});b.on(\"blur\",function(){this.fire(\"mouseout\")})}function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on(\"resize\",b);a.on(\"hide\",function(){c.removeListener(\"resize\",\nb)})}function I(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function U(a){function b(b){var c=a.getSize(),h=CKEDITOR.document.getWindow().getViewPaneSize(),o=b.data.$.screenX,i=b.data.$.screenY,n=o-e.x,l=i-e.y;e={x:o,y:i};d.x+=n;d.y+=l;a.move(d.x+k[3]<f?-k[3]:d.x-k[1]>h.width-c.width-f?h.width-c.width+(\"rtl\"==g.lang.dir?0:k[1]):d.x,d.y+k[0]<f?-k[0]:d.y-k[2]>h.height-c.height-f?h.height-c.height+k[2]:d.y,1);b.data.preventDefault()}function c(){CKEDITOR.document.removeListener(\"mousemove\",\nb);CKEDITOR.document.removeListener(\"mouseup\",c);if(CKEDITOR.env.ie6Compat){var a=r.getChild(0).getFrameDocument();a.removeListener(\"mousemove\",b);a.removeListener(\"mouseup\",c)}}var e=null,d=null;a.getElement().getFirst();var g=a.getParentEditor(),f=g.config.dialog_magnetDistance,k=CKEDITOR.skin.margins||[0,0,0,0];\"undefined\"==typeof f&&(f=20);a.parts.title.on(\"mousedown\",function(f){e={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on(\"mousemove\",b);CKEDITOR.document.on(\"mouseup\",c);d=\na.getPosition();if(CKEDITOR.env.ie6Compat){var g=r.getChild(0).getFrameDocument();g.on(\"mousemove\",b);g.on(\"mouseup\",c)}f.data.preventDefault()},a)}function V(a){var b,c;function e(d){var e=\"rtl\"==k.lang.dir,i=o.width,D=o.height,E=i+(d.data.$.screenX-b)*(e?-1:1)*(a._.moved?1:2),n=D+(d.data.$.screenY-c)*(a._.moved?1:2),x=a._.element.getFirst(),x=e&&x.getComputedStyle(\"right\"),y=a.getPosition();y.y+n>h.height&&(n=h.height-y.y);if((e?x:y.x)+E>h.width)E=h.width-(e?x:y.x);if(f==CKEDITOR.DIALOG_RESIZE_WIDTH||\nf==CKEDITOR.DIALOG_RESIZE_BOTH)i=Math.max(g.minWidth||0,E-m);if(f==CKEDITOR.DIALOG_RESIZE_HEIGHT||f==CKEDITOR.DIALOG_RESIZE_BOTH)D=Math.max(g.minHeight||0,n-j);a.resize(i,D);a._.moved||a.layout();d.data.preventDefault()}function d(){CKEDITOR.document.removeListener(\"mouseup\",d);CKEDITOR.document.removeListener(\"mousemove\",e);i&&(i.remove(),i=null);if(CKEDITOR.env.ie6Compat){var a=r.getChild(0).getFrameDocument();a.removeListener(\"mouseup\",d);a.removeListener(\"mousemove\",e)}}var g=a.definition,f=g.resizable;\nif(f!=CKEDITOR.DIALOG_RESIZE_NONE){var k=a.getParentEditor(),m,j,h,o,i,n=CKEDITOR.tools.addFunction(function(f){o=a.getSize();var g=a.parts.contents;g.$.getElementsByTagName(\"iframe\").length&&(i=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_dialog_resize_cover\" style=\"height: 100%; position: absolute; width: 100%;\"></div>'),g.append(i));j=o.height-a.parts.contents.getSize(\"height\",!(CKEDITOR.env.gecko||CKEDITOR.env.opera||CKEDITOR.env.ie&&CKEDITOR.env.quirks));m=o.width-a.parts.contents.getSize(\"width\",\n1);b=f.screenX;c=f.screenY;h=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on(\"mousemove\",e);CKEDITOR.document.on(\"mouseup\",d);CKEDITOR.env.ie6Compat&&(g=r.getChild(0).getFrameDocument(),g.on(\"mousemove\",e),g.on(\"mouseup\",d));f.preventDefault&&f.preventDefault()});a.on(\"load\",function(){var b=\"\";f==CKEDITOR.DIALOG_RESIZE_WIDTH?b=\" cke_resizer_horizontal\":f==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=\" cke_resizer_vertical\");b=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_resizer'+\nb+\" cke_resizer_\"+k.lang.dir+'\" title=\"'+CKEDITOR.tools.htmlEncode(k.lang.common.resize)+'\" onmousedown=\"CKEDITOR.tools.callFunction('+n+', event )\">'+(\"ltr\"==k.lang.dir?\"◢\":\"◣\")+\"</div>\");a.parts.footer.append(b,1)});k.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(n)})}}function F(a){a.data.preventDefault(1)}function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_backgroundCoverColor||\"white\",d=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,\nd,g),f=w[c];if(f)f.show();else{g=['<div tabIndex=\"-1\" style=\"position: ',CKEDITOR.env.ie6Compat?\"absolute\":\"fixed\",\"; z-index: \",g,\"; top: 0px; left: 0px; \",!CKEDITOR.env.ie6Compat?\"background-color: \"+e:\"\",'\" class=\"cke_dialog_background_cover\">'];if(CKEDITOR.env.ie6Compat){var k=CKEDITOR.env.isCustomDomain(),e=\"<html><body style=\\\\'background-color:\"+e+\";\\\\'></body></html>\";g.push('<iframe hidefocus=\"true\" frameborder=\"0\" id=\"cke_dialog_background_iframe\" src=\"javascript:');g.push(\"void((function(){document.open();\"+\n(k?\"document.domain='127.0.0.1\"+document.domain+\"127.0.0.1'127.0.0.1\":\"\")+\"127.0.0.1'\"+e+\"' );document.close();})())\");g.push('\" style=\"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)\"></iframe>')}g.push(\"</div>\");f=CKEDITOR.dom.element.createFromHtml(g.join(\"\"));f.setOpacity(void 0!=d?d:0.5);f.on(\"keydown\",F);f.on(\"keypress\",F);f.on(\"keyup\",F);f.appendTo(CKEDITOR.document.getBody());w[c]=f}a.focusManager.add(f);r=f;var a=function(){var a=b.getViewPaneSize();\nf.setStyles({width:a.width+\"px\",height:a.height+\"px\"})},m=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;f.setStyles({left:a.x+\"px\",top:a.y+\"px\"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};G=a;b.on(\"resize\",a);a();(!CKEDITOR.env.mac||!CKEDITOR.env.webkit)&&f.focus();if(CKEDITOR.env.ie6Compat){var j=function(){m();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){j.prevScrollHandler=window.onscroll||function(){};\nwindow.onscroll=j},0);m()}}function K(a){r&&(a.focusManager.remove(r),a=CKEDITOR.document.getWindow(),r.hide(),a.removeListener(\"resize\",G),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),G=null)}var s=CKEDITOR.tools.cssLength,S='<div class=\"cke cke_reset_all {editorId} {editorDialogClass}\" dir=\"{langDir}\" lang=\"{langCode}\" role=\"application\"><table class=\"cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}\" aria-labelledby=\"cke_dialog_title_{id}\" style=\"position:absolute\" role=\"dialog\"><tr><td role=\"presentation\"><div class=\"cke_dialog_body\" role=\"presentation\"><div id=\"cke_dialog_title_{id}\" class=\"cke_dialog_title\" role=\"presentation\"></div><a id=\"cke_dialog_close_button_{id}\" class=\"cke_dialog_close_button\" href=\"javascript:void(0)\" title=\"{closeTitle}\" role=\"button\"><span class=\"cke_label\">X</span></a><div id=\"cke_dialog_tabs_{id}\" class=\"cke_dialog_tabs\" role=\"tablist\"></div><table class=\"cke_dialog_contents\" role=\"presentation\"><tr><td id=\"cke_dialog_contents_{id}\" class=\"cke_dialog_contents_body\" role=\"presentation\"></td></tr><tr><td id=\"cke_dialog_footer_{id}\" class=\"cke_dialog_footer\" role=\"presentation\"></td></tr></table></div></td></tr></table></div>';\nCKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=l._.focusList,a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;try{b[c].getInputElement().$.blur()}catch(d){}for(var f=c=(c+a+b.length)%b.length;a&&!b[f].isFocusable()&&!(f=(f+a+b.length)%b.length,f==c););b[f].focus();\"text\"==b[f].type&&b[f].select()}}function d(b){if(l==\nCKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),f=\"rtl\"==a.lang.dir;o=i=0;if(9==c||c==CKEDITOR.SHIFT+9)c=c==CKEDITOR.SHIFT+9,l._.tabBarMode?(c=c?p.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus()):e(c?-1:1),o=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),o=1;else if((37==c||39==c)&&l._.tabBarMode)c=c==(f?39:37)?p.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus(),o=1;else if((13==c||32==c)&&l._.tabBarMode)this.selectPage(this._.currentTabId),\nthis._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),o=1;else if(13==c){c=b.data.getTarget();if(!c.is(\"a\",\"button\",\"select\",\"textarea\")&&(!c.is(\"input\")||\"button\"!=c.$.type))(c=this.getButton(\"ok\"))&&CKEDITOR.tools.setTimeout(c.click,0,c),o=1;i=1}else if(27==c)(c=this.getButton(\"cancel\"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide(),i=1;else return;g(b)}}function g(a){o?a.data.preventDefault(1):i&&a.data.stopPropagation()}var f=CKEDITOR.dialog._.dialogDefinitions[b],\nk=CKEDITOR.tools.clone(W),m=a.config.dialog_buttonsOrder||\"OS\",j=a.lang.dir,h={},o,i;(\"OS\"==m&&CKEDITOR.env.mac||\"rtl\"==m&&\"ltr\"==j||\"ltr\"==m&&\"rtl\"==j)&&k.buttons.reverse();f=CKEDITOR.tools.extend(f(a),k);f=CKEDITOR.tools.clone(f);f=new L(this,f);k=R(a);this._={editor:a,element:k.element,name:b,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],\ncurrentFocusIndex:0,hasFocus:!1};this.parts=k.parts;CKEDITOR.tools.setTimeout(function(){a.fire(\"ariaWidget\",this.parts.contents)},0,this);k={position:CKEDITOR.env.ie6Compat?\"absolute\":\"fixed\",top:0,visibility:\"hidden\"};k[\"rtl\"==j?\"right\":\"left\"]=0;this.parts.dialog.setStyles(k);CKEDITOR.event.call(this);this.definition=f=CKEDITOR.fire(\"dialogDefinition\",{name:b,definition:f},a).definition;if(!(\"removeDialogTabs\"in a._)&&a.config.removeDialogTabs){k=a.config.removeDialogTabs.split(\";\");for(j=0;j<\nk.length;j++)if(m=k[j].split(\":\"),2==m.length){var n=m[0];h[n]||(h[n]=[]);h[n].push(m[1])}a._.removeDialogTabs=h}if(a._.removeDialogTabs&&(h=a._.removeDialogTabs[b]))for(j=0;j<h.length;j++)f.removeContents(h[j]);if(f.onLoad)this.on(\"load\",f.onLoad);if(f.onShow)this.on(\"show\",f.onShow);if(f.onHide)this.on(\"hide\",f.onHide);if(f.onOk)this.on(\"ok\",function(b){a.fire(\"saveSnapshot\");setTimeout(function(){a.fire(\"saveSnapshot\")},0);!1===f.onOk.call(this,b)&&(b.data.hide=!1)});if(f.onCancel)this.on(\"cancel\",\nfunction(a){!1===f.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,C=function(a){var b=l._.contents,c=!1,f;for(f in b)for(var d in b[f])if(c=a.call(this,b[f][d]))return};this.on(\"ok\",function(a){C(function(b){if(b.validate){var c=b.validate(this),f=\"string\"==typeof c||!1===c;f&&(a.data.hide=!1,a.stop());P.call(b,!f,\"string\"==typeof c?c:void 0);return f}})},this,null,0);this.on(\"cancel\",function(b){C(function(c){if(c.isChanged())return confirm(a.lang.common.confirmCancel)||(b.data.hide=!1),!0})},\nthis,null,0);this.parts.close.on(\"click\",function(a){!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var v=this._.element;a.focusManager.add(v,1);this.on(\"show\",function(){v.on(\"keydown\",d,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko)v.on(\"keypress\",g,this)});this.on(\"hide\",function(){v.removeListener(\"keydown\",d);(CKEDITOR.env.opera||CKEDITOR.env.gecko)&&v.removeListener(\"keypress\",g);C(function(a){Q.apply(a)})});this.on(\"iframeAdded\",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on(\"keydown\",\nd,this,null,0)});this.on(\"show\",function(){c();if(a.config.dialog_startupFocusTab&&1<l._.pageCount)l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus();else if(!this._.hasFocus)if(this._.currentFocusIndex=-1,f.onFocus){var b=f.onFocus.call(this);b&&b.focus()}else e(1)},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on(\"load\",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);U(this);V(this);(new CKEDITOR.dom.text(f.title,CKEDITOR.document)).appendTo(this.parts.title);\nfor(j=0;j<f.contents.length;j++)(h=f.contents[j])&&this.addPage(h);this.parts.tabs.on(\"click\",function(a){var b=a.data.getTarget();b.hasClass(\"cke_dialog_tab\")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf(\"_\"))),this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);j=[];h=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:\"hbox\",className:\"cke_dialog_footer_buttons\",widths:[],children:f.buttons},j).getChild();this.parts.footer.setHtml(j.join(\"\"));\nfor(j=0;j<h.length;j++)this._.buttons[h[j].id]=h[j]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){if(!this._.contentSize||!(this._.contentSize.width==a&&this._.contentSize.height==b))CKEDITOR.dialog.fire(\"resize\",{dialog:this,width:a,height:b},this._.editor),this.fire(\"resize\",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+\"px\",height:b+\"px\"}),\"rtl\"==this._.editor.lang.dir&&this._.position&&(this._.position.x=\nCKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle(\"right\"),10)),this._.contentSize={width:a,height:b}}}(),getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d=\"rtl\"==this._.editor.lang.dir,g=\"fixed\"==e.getComputedStyle(\"position\");CKEDITOR.env.ie&&e.setStyle(\"zoom\",\"100%\");if(!g||!this._.position||!(this._.position.x==\na&&this._.position.y==b))this._.position={x:a,y:b},g||(g=CKEDITOR.document.getWindow().getScrollPosition(),a+=g.x,b+=g.y),d&&(g=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-g.width-a),b={top:(0<b?b:0)+\"px\"},b[d?\"right\":\"left\"]=(0<a?a:0)+\"px\",e.setStyles(b),c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;!a.getParent()||!a.getParent().equals(CKEDITOR.document.getBody())?a.appendTo(CKEDITOR.document.getBody()):\na.setStyle(\"display\",\"block\");if(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version){var c=this.parts.dialog;c.setStyle(\"position\",\"absolute\");setTimeout(function(){c.setStyle(\"position\",\"fixed\")},0)}this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);\nthis._.element.getFirst().setStyle(\"z-index\",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,J(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this);a.on(\"keydown\",M);a.on(CKEDITOR.env.opera?\"keypress\":\"keyup\",N);this._.hasFocus=!1;CKEDITOR.tools.setTimeout(function(){this.layout();\nT(this);this.parts.dialog.setStyle(\"visibility\",\"\");this.fireOnce(\"load\",{});CKEDITOR.ui.fire(\"ready\",this);this.fire(\"show\",{});this._.editor.fire(\"dialogShow\",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),e=(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||\nb.width+(0<e?e:0)>c.width?a.setStyle(\"position\",\"absolute\"):a.setStyle(\"position\",\"fixed\"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},\ncommitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire(\"hide\",{});this._.editor.fire(\"dialogHide\",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle(\"display\",\"none\");this.parts.dialog.setStyle(\"visibility\",\"hidden\");for(X(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();\nif(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle(\"z-index\",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else K(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener(\"keydown\",M);a.removeListener(CKEDITOR.env.opera?\"keypress\":\"keyup\",N);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock()},0)}delete this._.parentDialog;\nthis.foreach(function(a){a.resetInitValue&&a.resetInitValue()})}},addPage:function(a){var b=[],c=a.label?' title=\"'+CKEDITOR.tools.htmlEncode(a.label)+'\"':\"\",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:\"vbox\",className:\"cke_dialog_page_contents\",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||\"width: 100%;\"},b),b=CKEDITOR.dom.element.createFromHtml(b.join(\"\"));b.setAttribute(\"role\",\"tabpanel\");var d=CKEDITOR.env,g=\"cke_\"+a.id+\"_\"+CKEDITOR.tools.getNextNumber(),\nc=CKEDITOR.dom.element.createFromHtml(['<a class=\"cke_dialog_tab\"',0<this._.pageCount?\" cke_last\":\"cke_first\",c,a.hidden?' style=\"display:none\"':\"\",' id=\"',g,'\"',d.gecko&&10900<=d.version&&!d.hc?\"\":' href=\"javascript:void(0)\"',' tabIndex=\"-1\" hidefocus=\"true\" role=\"tab\">',a.label,\"</a>\"].join(\"\"));b.setAttribute(\"aria-labelledby\",g);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();g=this._.contents[a.id]={};for(d=e.getChild();e=\nd.shift();)g[e.id]=e,\"function\"==typeof e.getChild&&d.push.apply(d,e.getChild());b.setAttribute(\"name\",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(O(this,this,\"CTRL+\"+a.accessKey,Y,Z),this._.accessKeyMap[\"CTRL+\"+a.accessKey]=a.id)},selectPage:function(a){if(this._.currentTabId!=a&&!0!==this.fire(\"selectPage\",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass(\"cke_dialog_tab_selected\"),\ne.hide());e.setAttribute(\"aria-hidden\",b!=a)}var d=this._.tabs[a];d[0].addClass(\"cke_dialog_tab_selected\");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(q(d[1]),d[1].show(),setTimeout(function(){q(d[1],1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?\"add\":\"remove\")+\"Class\"](\"cke_single_page\")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&(1!=this._.pageCount&&\nb.isVisible())&&(a==this._.currentTabId&&this.selectPage(p.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,\nb).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if(\"undefined\"==typeof b)b=this._.focusList.length,\nthis._.focusList.push(new H(this,a,b));else{this._.focusList.splice(b,0,new H(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}}};CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){if(!this._.dialogDefinitions[a]||\"function\"==typeof b)this._.dialogDefinitions[a]=b},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"ok\",\ntype:\"button\",label:a.lang.common.ok,\"class\":\"cke_dialog_ui_button_ok\",onClick:function(a){a=a.data.dialog;!1!==a.fire(\"ok\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"cancel\",type:\"button\",label:a.lang.common.cancel,\"class\":\"cke_dialog_ui_button_cancel\",onClick:function(a){a=a.data.dialog;!1!==\na.fire(\"cancel\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var W={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,\nbuttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},z=function(a,b,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=z(d[c],b,c)))return d;return null},A=function(a,b,c,e,d){if(c){for(var g=0,f;f=a[g];g++){if(f.id==c)return a.splice(g,0,b),b;if(e&&f[e]&&(f=A(f[e],b,c,e,!0)))return f}if(d)return null}a.push(b);return b},B=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=B(d[c],b,c)))return d}return null},L=function(a,b){this.dialog=a;for(var c=\nb.contents,e=0,d;d=c[e];e++)c[e]=d&&new I(a,d);CKEDITOR.tools.extend(this,b)};L.prototype={getContents:function(a){return z(this.contents,a)},getButton:function(a){return z(this.buttons,a)},addContents:function(a,b){return A(this.contents,a,b)},addButton:function(a,b){return A(this.buttons,a,b)},removeContents:function(a){B(this.contents,a)},removeButton:function(a){B(this.buttons,a)}};I.prototype={get:function(a){return z(this.elements,a,\"children\")},add:function(a,b){return A(this.elements,a,b,\n\"children\")},remove:function(a){B(this.elements,a,\"children\")}};var G,w={},r,t={},M=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=t[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()},N=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);\nif((b=t[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},O=function(a,b,c,e,d){(t[c]||(t[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},X=function(a){for(var b in t){for(var c=t[b],e=c.length-1;0<=e;e--)(c[e].dialog==a||c[e].uiElement==a)&&c.splice(e,1);0===c.length&&delete t[b]}},Z=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},\nY=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,g,f){if(!(4>arguments.length)){var k=(e.call?e(b):e)||\"div\",m=[\"<\",k,\" \"],j=(d&&d.call?d(b):d)||{},h=(g&&g.call?g(b):g)||{},o=(f&&f.call?f.call(this,a,b):f)||\"\",i=this.domId=h.id||CKEDITOR.tools.getNextId()+\"_uiElement\";this.id=b.id;h.id=i;var n={};b.type&&(n[\"cke_dialog_ui_\"+b.type]=1);b.className&&(n[b.className]=1);b.disabled&&(n.cke_disabled=1);for(var l=h[\"class\"]&&h[\"class\"].split?h[\"class\"].split(\" \"):[],i=0;i<l.length;i++)l[i]&&\n(n[l[i]]=1);l=[];for(i in n)l.push(i);h[\"class\"]=l.join(\" \");b.title&&(h.title=b.title);n=(b.style||\"\").split(\";\");b.align&&(l=b.align,j[\"margin-left\"]=\"left\"==l?0:\"auto\",j[\"margin-right\"]=\"right\"==l?0:\"auto\");for(i in j)n.push(i+\":\"+j[i]);b.hidden&&n.push(\"display:none\");for(i=n.length-1;0<=i;i--)\"\"===n[i]&&n.splice(i,1);0<n.length&&(h.style=(h.style?h.style+\"; \":\"\")+n.join(\"; \"));for(i in h)m.push(i+'=\"'+CKEDITOR.tools.htmlEncode(h[i])+'\" ');m.push(\">\",o,\"</\",k,\">\");c.push(m.join(\"\"));(this._||\n(this._={})).dialog=a;\"boolean\"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});\"function\"==typeof b.isChanged&&(this.isChanged=b.isChanged);\"function\"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));\"function\"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);\nthis.registerEvents(b);this.accessKeyUp&&(this.accessKeyDown&&b.accessKey)&&O(this,a,\"CTRL+\"+b.accessKey);var p=this;a.on(\"load\",function(){var b=p.getInputElement();if(b){var c=p.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?\"cke_dialog_ui_focused\":\"\";b.on(\"focus\",function(){a._.tabBarMode=false;a._.hasFocus=true;p.fire(\"focus\");c&&this.addClass(c)});b.on(\"blur\",function(){p.fire(\"blur\");c&&this.removeClass(c)})}});this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=\na._.focusList.push(this)-1,this.on(\"focus\",function(){a._.currentFocusIndex=p.focusIndex}));CKEDITOR.tools.extend(this,b)}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.widths||null,k=d&&d.height||null,m,j={role:\"presentation\"};d&&d.align&&(j.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"hbox\"},e,\"table\",{},j,function(){var a=['<tbody><tr class=\"cke_dialog_ui_hbox\">'];for(m=0;m<c.length;m++){var b=\"cke_dialog_ui_hbox_child\",\ne=[];0===m&&(b=\"cke_dialog_ui_hbox_first\");m==c.length-1&&(b=\"cke_dialog_ui_hbox_last\");a.push('<td class=\"',b,'\" role=\"presentation\" ');f?f[m]&&e.push(\"width:\"+s(f[m])):e.push(\"width:\"+Math.floor(100/c.length)+\"%\");k&&e.push(\"height:\"+s(k));d&&void 0!=d.padding&&e.push(\"padding:\"+s(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[m].align)&&e.push(\"text-align:\"+g[m].align);0<e.length&&a.push('style=\"'+e.join(\"; \")+'\" ');a.push(\">\",c[m],\"</td>\")}a.push(\"</tr></tbody>\");return a.join(\"\")})}},vbox:function(a,\nb,c,e,d){if(!(3>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.width||null,k=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"vbox\"},e,\"div\",null,{role:\"presentation\"},function(){var b=['<table role=\"presentation\" cellspacing=\"0\" border=\"0\" '];b.push('style=\"');d&&d.expand&&b.push(\"height:100%;\");b.push(\"width:\"+s(f||\"100%\"),\";\");b.push('\"');b.push('align=\"',CKEDITOR.tools.htmlEncode(d&&d.align||(\"ltr\"==a.getParentEditor().lang.dir?\"left\":\"right\")),'\" ');\nb.push(\"><tbody>\");for(var e=0;e<c.length;e++){var h=[];b.push('<tr><td role=\"presentation\" ');f&&h.push(\"width:\"+s(f||\"100%\"));k?h.push(\"height:\"+s(k[e])):d&&d.expand&&h.push(\"height:\"+Math.floor(100/c.length)+\"%\");d&&void 0!=d.padding&&h.push(\"padding:\"+s(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[e].align)&&h.push(\"text-align:\"+g[e].align);0<h.length&&b.push('style=\"',h.join(\"; \"),'\" ');b.push(' class=\"cke_dialog_ui_vbox_child\">',c[e],\"</td></tr>\")}b.push(\"</tbody></table>\");return b.join(\"\")})}}}})();\nCKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire(\"change\",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search(\"cke_dialog_page_contents\"););\nif(!a)return this;a=a.getAttribute(\"name\");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\\w+)/,c,e=function(a,b,c,d){b.on(\"load\",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,this._.dialog,a[d]):e(this,this._.dialog,c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,\nb){a.on(\"load\",b,this)},onShow:function(a,b){a.on(\"show\",b,this)},onHide:function(a,b){a.on(\"hide\",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute(\"disabled\",\"true\");a.addClass(\"cke_disabled\")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute(\"disabled\");a.removeClass(\"cke_disabled\")},isEnabled:function(){return!this.getElement().hasClass(\"cke_disabled\")},isVisible:function(){return this.getInputElement().isVisible()},\nisFocusable:function(){return!this.isEnabled()||!this.isVisible()?!1:!0}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,\nc,e){for(var d=c.children,g,f=[],k=[],m=0;m<d.length&&(g=d[m]);m++){var j=[];f.push(j);k.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,j))}return new CKEDITOR.ui.dialog[c.type](a,k,f,e,c)}};CKEDITOR.dialog.addUIElement(\"hbox\",a);CKEDITOR.dialog.addUIElement(\"vbox\",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){CKEDITOR.env.opera?CKEDITOR.tools.setTimeout(function(){a.openDialog(this.dialogName)},\n0,this):a.openDialog(this.dialogName)},canUndo:!1,editorFocus:CKEDITOR.env.ie||CKEDITOR.env.webkit};(function(){var a=/^([a]|[^a])+$/,b=/^\\d*$/,c=/^\\d*(?:\\.\\d+)?$/,e=/^(((\\d*(\\.\\d+))|(\\d*))(px|\\%)?)?$/,d=/^(((\\d*(\\.\\d+))|(\\d*))(px|em|ex|in|cm|mm|pt|pc|\\%)?)?$/i,g=/^(\\s*[\\w-]+\\s*:\\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():a[0],c=void 0,d=CKEDITOR.VALIDATE_AND,\ne=[],g;for(g=0;g<a.length;g++)if(\"function\"==typeof a[g])e.push(a[g]);else break;g<a.length&&\"string\"==typeof a[g]&&(c=a[g],g++);g<a.length&&\"number\"==typeof a[g]&&(d=a[g]);var i=d==CKEDITOR.VALIDATE_AND?!0:!1;for(g=0;g<e.length;g++)i=d==CKEDITOR.VALIDATE_AND?i&&e[g](b):i||e[g](b);return!i?c:!0}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return!a.test(c)?b:!0}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,a)},number:function(a){return this.regex(c,\na)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on(\"instanceDestroyed\",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=\nCKEDITOR.dialog._.currentTop;)b.hide();for(var c in w)w[c].remove();w={}}var a=a.editor._.storedDialogs,d;for(d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&J(this);if(\"function\"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,c),c.show();else{if(\"failed\"==e)throw K(this),Error('[CKEDITOR.dialog.openDialog] Dialog \"'+\na+'\" failed when loading definition.');\"string\"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){\"function\"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]=\"failed\");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart(\"dialog\");return c}})})();\nCKEDITOR.plugins.add(\"dialog\",{requires:\"dialogui\",init:function(p){p.on(\"contentDom\",function(){var u=p.editable();u.attachListener(u,\"dblclick\",function(q){if(p.readOnly)return!1;q={element:q.data.getTarget()};p.fire(\"doubleclick\",q);q.dialog&&p.openDialog(q.dialog);return 1})})}});CKEDITOR.plugins.add(\"about\",{requires:\"dialog\",init:function(a){var b=a.addCommand(\"about\",new CKEDITOR.dialogCommand(\"about\"));b.modes={wysiwyg:1,source:1};b.canUndo=!1;b.readOnly=1;a.ui.addButton&&a.ui.addButton(\"About\",{label:a.lang.about.title,command:\"about\",toolbar:\"about\"});CKEDITOR.dialog.add(\"about\",this.path+\"dialogs/about.js\")}});(function(){CKEDITOR.plugins.add(\"a11yhelp\",{requires:\"dialog\",availableLangs:{en:1,ar:1,bg:1,ca:1,et:1,cs:1,cy:1,da:1,de:1,el:1,eo:1,es:1,fa:1,fi:1,fr:1,gu:1,he:1,hi:1,hr:1,hu:1,it:1,ja:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,\"pt-br\":1,ro:1,ru:1,sk:1,sl:1,sv:1,tr:1,ug:1,uk:1,vi:1,\"zh-cn\":1},init:function(b){var c=this;b.addCommand(\"a11yHelp\",{exec:function(){var a=b.langCode,a=c.availableLangs[a]?a:c.availableLangs[a.replace(/-.*/,\"\")]?a.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\n\"dialogs/lang/\"+a+\".js\"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog(\"a11yHelp\")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,\"a11yHelp\");CKEDITOR.dialog.add(\"a11yHelp\",this.path+\"dialogs/a11yhelp.js\")}})})();CKEDITOR.plugins.add(\"basicstyles\",{init:function(c){var f=0,a=function(a,d,b,e){e&&(e=new CKEDITOR.style(e),c.attachStyleStateChange(e,function(a){!c.readOnly&&c.getCommand(b).setState(a)}),c.addCommand(b,new CKEDITOR.styleCommand(e)),c.ui.addButton&&c.ui.addButton(a,{label:d,command:b,toolbar:\"basicstyles,\"+(f+=10)}))},d=c.config,b=c.lang.basicstyles;a(\"Bold\",b.bold,\"bold\",d.coreStyles_bold);a(\"Italic\",b.italic,\"italic\",d.coreStyles_italic);a(\"Underline\",b.underline,\"underline\",d.coreStyles_underline);\na(\"Strike\",b.strike,\"strike\",d.coreStyles_strike);a(\"Subscript\",b.subscript,\"subscript\",d.coreStyles_subscript);a(\"Superscript\",b.superscript,\"superscript\",d.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,\"bold\"],[CKEDITOR.CTRL+73,\"italic\"],[CKEDITOR.CTRL+85,\"underline\"]])}});CKEDITOR.config.coreStyles_bold={element:\"strong\",overrides:\"b\"};CKEDITOR.config.coreStyles_italic={element:\"em\",overrides:\"i\"};CKEDITOR.config.coreStyles_underline={element:\"u\"};\nCKEDITOR.config.coreStyles_strike={element:\"strike\"};CKEDITOR.config.coreStyles_subscript={element:\"sub\"};CKEDITOR.config.coreStyles_superscript={element:\"sup\"};(function(){var k={exec:function(g){var a=g.getCommand(\"blockquote\").state,i=g.getSelection(),c=i&&i.getRanges(!0)[0];if(c){var h=i.createBookmarks();if(CKEDITOR.env.ie){var e=h[0].startNode,b=h[0].endNode,d;if(e&&\"blockquote\"==e.getParent().getName())for(d=e;d=d.getNext();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){e.move(d,!0);break}if(b&&\"blockquote\"==b.getParent().getName())for(d=b;d=d.getPrevious();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){b.move(d);break}}var f=c.createIterator();\nf.enlargeBr=g.config.enterMode!=CKEDITOR.ENTER_BR;if(a==CKEDITOR.TRISTATE_OFF){for(e=[];a=f.getNextParagraph();)e.push(a);1>e.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text(\"﻿\",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b<e.length;b++)a=e[b],d=d.getCommonAncestor(a.getParent());for(a={table:1,tbody:1,\ntr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.shift();!a.getParent().equals(d);)a=a.getParent();a.equals(b)||c.push(a);b=a}for(;0<c.length;)if(a=c.shift(),\"blockquote\"==a.getName()){for(b=new CKEDITOR.dom.documentFragment(g.document);a.getFirst();)b.append(a.getFirst().remove()),e.push(b.getLast());b.replace(a)}else e.push(a);c=g.document.createElement(\"blockquote\");for(c.insertBefore(e[0]);0<e.length;)a=e.shift(),c.append(a)}else if(a==CKEDITOR.TRISTATE_ON){b=[];\nfor(d={};a=f.getNextParagraph();){for(e=c=null;a.getParent();){if(\"blockquote\"==a.getParent().getName()){c=a.getParent();e=a;break}a=a.getParent()}c&&(e&&!e.getCustomData(\"blockquote_moveout\"))&&(b.push(e),CKEDITOR.dom.element.setMarker(d,e,\"blockquote_moveout\",!0))}CKEDITOR.dom.element.clearAllMarkers(d);a=[];e=[];for(d={};0<b.length;)f=b.shift(),c=f.getParent(),f.getPrevious()?f.getNext()?(f.breakParent(f.getParent()),e.push(f.getNext())):f.remove().insertAfter(c):f.remove().insertBefore(c),c.getCustomData(\"blockquote_processed\")||\n(e.push(c),CKEDITOR.dom.element.setMarker(d,c,\"blockquote_processed\",!0)),a.push(f);CKEDITOR.dom.element.clearAllMarkers(d);for(b=e.length-1;0<=b;b--){c=e[b];a:{d=c;for(var f=0,k=d.getChildCount(),j=void 0;f<k&&(j=d.getChild(f));f++)if(j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary()){d=!1;break a}d=!0}d&&c.remove()}if(g.config.enterMode==CKEDITOR.ENTER_BR)for(c=!0;a.length;)if(f=a.shift(),\"div\"==f.getName()){b=new CKEDITOR.dom.documentFragment(g.document);c&&(f.getPrevious()&&!(f.getPrevious().type==\nCKEDITOR.NODE_ELEMENT&&f.getPrevious().isBlockBoundary()))&&b.append(g.document.createElement(\"br\"));for(c=f.getNext()&&!(f.getNext().type==CKEDITOR.NODE_ELEMENT&&f.getNext().isBlockBoundary());f.getFirst();)f.getFirst().remove().appendTo(b);c&&b.append(g.document.createElement(\"br\"));b.replace(f);c=!1}}i.selectBookmarks(h);g.focus()}},refresh:function(g,a){this.setState(g.elementPath(a.block||a.blockLimit).contains(\"blockquote\",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:\"blockquote\"};\nCKEDITOR.plugins.add(\"blockquote\",{init:function(g){g.blockless||(g.addCommand(\"blockquote\",k),g.ui.addButton&&g.ui.addButton(\"Blockquote\",{label:g.lang.blockquote.toolbar,command:\"blockquote\",toolbar:\"blocks,10\"}))}})})();(function(){function v(b){function a(){var e=b.editable();e.on(q,function(b){(!CKEDITOR.env.ie||!m)&&u(b)});CKEDITOR.env.ie&&e.on(\"paste\",function(e){r||(f(),e.data.preventDefault(),u(e),l(\"paste\")||b.openDialog(\"paste\"))});CKEDITOR.env.ie&&(e.on(\"contextmenu\",h,null,null,0),e.on(\"beforepaste\",function(b){b.data&&!b.data.$.ctrlKey&&h()},null,null,0));e.on(\"beforecut\",function(){!m&&j(b)});e.on(\"mouseup\",function(){setTimeout(function(){s()},0)});e.on(\"keyup\",s)}function d(e){return{type:e,canUndo:\"cut\"==\ne,startDisabled:!0,exec:function(){\"cut\"==this.type&&j();var e;var a=this.type;if(CKEDITOR.env.ie)e=l(a);else try{e=b.document.$.execCommand(a,!1,null)}catch(c){e=!1}e||alert(b.lang.clipboard[this.type+\"Error\"]);return e}}}function c(){return{canUndo:!1,async:!0,exec:function(b,a){var c=function(a,c){a&&g(a.type,a.dataValue,!!c);b.fire(\"afterCommandExec\",{name:\"paste\",command:d,returnValue:!!a})},d=this;\"string\"==typeof a?c({type:\"auto\",dataValue:a},1):b.getClipboardData(c)}}}function f(){r=1;setTimeout(function(){r=\n0},100)}function h(){m=1;setTimeout(function(){m=0},10)}function l(e){var a=b.document,c=a.getBody(),d=!1,j=function(){d=!0};c.on(e,j);(7<CKEDITOR.env.version?a.$:a.$.selection.createRange()).execCommand(e);c.removeListener(e,j);return d}function g(e,a,c){e={type:e};if(c&&!b.fire(\"beforePaste\",e)||!a)return!1;e.dataValue=a;return b.fire(\"paste\",e)}function j(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var e=b.getSelection(),a,c,d;if(e.getType()==CKEDITOR.SELECTION_ELEMENT&&(a=e.getSelectedElement()))c=\ne.getRanges()[0],d=b.document.createText(\"\"),d.insertBefore(a),c.setStartBefore(d),c.setEndAfter(a),e.selectRanges([c]),setTimeout(function(){a.getParent()&&(d.remove(),e.selectElement(a))},0)}}function k(a,c){var d=b.document,j=b.editable(),k=function(b){b.cancel()},f=CKEDITOR.env.gecko&&10902>=CKEDITOR.env.version;if(!d.getById(\"cke_pastebin\")){var h=b.getSelection(),o=h.createBookmarks(),i=new CKEDITOR.dom.element(j.is(\"body\")&&!CKEDITOR.env.ie&&!CKEDITOR.env.opera?\"body\":\"div\",d);i.setAttribute(\"id\",\n\"cke_pastebin\");CKEDITOR.env.opera&&i.appendBogus();var g=0,d=d.getWindow();f?(i.insertAfter(o[0].startNode),i.setStyle(\"display\",\"inline\")):(CKEDITOR.env.webkit?(j.append(i),i.addClass(\"cke_editable\"),g=(j.is(\"body\")?j:CKEDITOR.dom.element.get(i.$.offsetParent)).getDocumentPosition().y):j.getAscendant(CKEDITOR.env.ie||CKEDITOR.env.opera?\"body\":\"html\",1).append(i),i.setStyles({position:\"absolute\",top:d.getScrollPosition().y-g+10+\"px\",width:\"1px\",height:Math.max(1,d.getViewPaneSize().height-20)+\"px\",\noverflow:\"hidden\",margin:0,padding:0}));(f=i.getParent().isReadOnly())?(i.setOpacity(0),i.setAttribute(\"contenteditable\",!0)):i.setStyle(\"ltr\"==b.config.contentsLangDirection?\"left\":\"right\",\"-1000px\");b.on(\"selectionChange\",k,null,null,0);f&&i.focus();f=new CKEDITOR.dom.range(i);f.selectNodeContents(i);var l=f.select();if(CKEDITOR.env.ie)var m=j.once(\"blur\",function(){b.lockSelection(l)});var n=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){if(CKEDITOR.env.webkit||CKEDITOR.env.opera)CKEDITOR.document[CKEDITOR.env.webkit?\n\"getBody\":\"getDocumentElement\"]().$.scrollTop=n;m&&m.removeListener();CKEDITOR.env.ie&&j.focus();h.selectBookmarks(o);i.remove();var a;if(CKEDITOR.env.webkit&&(a=i.getFirst())&&a.is&&a.hasClass(\"Apple-style-span\"))i=a;b.removeListener(\"selectionChange\",k);c(i.getHtml())},0)}}function o(){if(CKEDITOR.env.ie){b.focus();f();var a=b.focusManager;a.lock();if(b.editable().fire(q)&&!l(\"paste\"))return a.unlock(),!1;a.unlock()}else try{if(b.editable().fire(q)&&!b.document.$.execCommand(\"Paste\",!1,null))throw 0;\n}catch(c){return!1}return!0}function p(a){if(\"wysiwyg\"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();f();!CKEDITOR.env.ie&&a.fire(\"beforepaste\");(CKEDITOR.env.opera||CKEDITOR.env.gecko&&10900>CKEDITOR.env.version)&&a.fire(\"paste\");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire(\"saveSnapshot\"),setTimeout(function(){b.fire(\"saveSnapshot\")},0)}}function u(a){var c={type:\"auto\"},d=b.fire(\"beforePaste\",c);k(a,function(b){b=b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\\/span>/ig,\n\"\");d&&g(c.type,b,0,1)})}function s(){if(\"wysiwyg\"==b.mode){var a=n(\"Paste\");b.getCommand(\"cut\").setState(n(\"Cut\"));b.getCommand(\"copy\").setState(n(\"Copy\"));b.getCommand(\"paste\").setState(a);b.fire(\"pasteState\",a)}}function n(a){var c;if(t&&a in{Paste:1,Cut:1})return CKEDITOR.TRISTATE_DISABLED;if(\"Paste\"==a){CKEDITOR.env.ie&&(m=1);try{c=b.document.$.queryCommandEnabled(a)||CKEDITOR.env.webkit}catch(d){}m=0}else a=b.getSelection(),c=a.getRanges(),c=a.type!=CKEDITOR.SELECTION_NONE&&!(1==c.length&&c[0].collapsed);\nreturn c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}var m=0,r=0,t=0,q=CKEDITOR.env.ie?\"beforepaste\":\"paste\";(function(){b.on(\"key\",p);b.on(\"contentDom\",a);b.on(\"selectionChange\",function(b){t=b.data.selection.getRanges()[0].checkReadOnly();s()});b.contextMenu&&b.contextMenu.addListener(function(b,a){t=a.getRanges()[0].checkReadOnly();return{cut:n(\"Cut\"),copy:n(\"Copy\"),paste:n(\"Paste\")}})})();(function(){function a(c,d,j,e,f){var k=b.lang.clipboard[d];b.addCommand(d,j);b.ui.addButton&&b.ui.addButton(c,\n{label:k,command:d,toolbar:\"clipboard,\"+e});b.addMenuItems&&b.addMenuItem(d,{label:k,command:d,group:\"clipboard\",order:f})}a(\"Cut\",\"cut\",d(\"cut\"),10,1);a(\"Copy\",\"copy\",d(\"copy\"),20,4);a(\"Paste\",\"paste\",c(),30,8)})();b.getClipboardData=function(a,c){function d(a){a.removeListener();a.cancel();c(a.data)}function j(a){a.removeListener();a.cancel();g=!0;c({type:h,dataValue:a.data})}function f(){this.customTitle=a&&a.title}var k=!1,h=\"auto\",g=!1;c||(c=a,a=null);b.on(\"paste\",d,null,null,0);b.on(\"beforePaste\",\nfunction(a){a.removeListener();k=true;h=a.data.type},null,null,1E3);!1===o()&&(b.removeListener(\"paste\",d),k&&b.fire(\"pasteDialog\",f)?(b.on(\"pasteDialogCommit\",j),b.on(\"dialogHide\",function(a){a.removeListener();a.data.removeListener(\"pasteDialogCommit\",j);setTimeout(function(){g||c(null)},10)})):c(null))}}function w(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\\/)?><\\/div>|<div>[^<]*<\\/div>)*$/gi))return\"html\"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi)&&\n!b.match(/^(<p>([^<]|<br( ?\\/)?>)*<\\/p>|(\\r\\n))*$/gi))return\"html\"}else if(CKEDITOR.env.gecko||CKEDITOR.env.opera){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi))return\"html\"}else return\"html\";return\"htmlifiedtext\"}function x(b,a){function d(a){return CKEDITOR.tools.repeat(\"</p><p>\",~~(a/2))+(1==a%2?\"<br>\":\"\")}a=a.replace(/\\s+/g,\" \").replace(/> +</g,\"><\").replace(/<br ?\\/>/gi,\"<br>\");a=a.replace(/<\\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf(\"<div>\")&&\n(a=a.replace(/^(<div>(<br>|)<\\/div>)(?!$|(<div>(<br>|)<\\/div>))/g,\"<br>\").replace(/^(<div>(<br>|)<\\/div>){2}(?!$)/g,\"<div></div>\"),a.match(/<div>(<br>|)<\\/div>/)&&(a=\"<p>\"+a.replace(/(<div>(<br>|)<\\/div>)+/g,function(a){return d(a.split(\"</div><div>\").length+1)})+\"</p>\"),a=a.replace(/<\\/div><div>/g,\"<br>\"),a=a.replace(/<\\/?div>/g,\"\"));if((CKEDITOR.env.gecko||CKEDITOR.env.opera)&&b.enterMode!=CKEDITOR.ENTER_BR)CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,\"<br>\")),-1<a.indexOf(\"<br><br>\")&&(a=\"<p>\"+\na.replace(/(<br>){2,}/g,function(a){return d(a.length/4)})+\"</p>\");return p(b,a)}function y(){var b=new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,fieldset:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ol:1,p:1,table:1,ul:1},d=CKEDITOR.tools.extend({br:0},CKEDITOR.dtd.$inline),c={p:1,br:1,\"cke:br\":1},f=CKEDITOR.dtd,h=CKEDITOR.tools.extend({area:1,basefont:1,embed:1,iframe:1,map:1,object:1,param:1},CKEDITOR.dtd.$nonBodyContent,CKEDITOR.dtd.$cdata),l=function(a){delete a.name;a.add(new CKEDITOR.htmlParser.text(\" \"))},\ng=function(a){for(var b=a,c;(b=b.next)&&b.name&&b.name.match(/^h\\d$/);){c=new CKEDITOR.htmlParser.element(\"cke:br\");c.isEmpty=!0;for(a.add(c);c=b.children.shift();)a.add(c)}};b.addRules({elements:{h1:g,h2:g,h3:g,h4:g,h5:g,h6:g,img:function(a){var a=CKEDITOR.tools.trim(a.attributes.alt||\"\"),b=\" \";a&&!a.match(/(^http|\\.(jpe?g|gif|png))/i)&&(b=\" [\"+a+\"] \");return new CKEDITOR.htmlParser.text(b)},td:l,th:l,$:function(b){var k=b.name,g;if(h[k])return!1;delete b.attributes;if(\"br\"==k)return b;if(a[k])b.name=\n\"p\";else if(d[k])delete b.name;else if(f[k]){g=new CKEDITOR.htmlParser.element(\"cke:br\");g.isEmpty=!0;if(CKEDITOR.dtd.$empty[k])return g;b.add(g,0);g=g.clone();g.isEmpty=!0;b.add(g);delete b.name}c[b.name]||delete b.name;return b}}});return b}function z(b,a,d){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a),c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,d);var a=c.getHtml(),a=a.replace(/\\s*(<\\/?[a-z:]+ ?\\/?>)\\s*/g,\"$1\").replace(/(<cke:br \\/>){2,}/g,\"<cke:br />\").replace(/(<cke:br \\/>)(<\\/?p>|<br \\/>)/g,\n\"$2\").replace(/(<\\/?p>|<br \\/>)(<cke:br \\/>)/g,\"$1\").replace(/<(cke:)?br( \\/)?>/g,\"<br>\").replace(/<p><\\/p>/g,\"\"),f=0,a=a.replace(/<\\/?p>/g,function(a){if(\"<p>\"==a){if(1<++f)return\"</p><p>\"}else if(0<--f)return\"</p><p>\";return a}).replace(/<p><\\/p>/g,\"\");return p(b,a)}function p(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat(\"<br>\",2*(a.length/7))}).replace(/<\\/?p>/g,\"\"):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\\/)?p>/g,\"<$1div>\"));\nreturn a}CKEDITOR.plugins.add(\"clipboard\",{requires:\"dialog\",init:function(b){var a;v(b);CKEDITOR.dialog.add(\"paste\",CKEDITOR.getUrl(this.path+\"dialogs/paste.js\"));b.on(\"paste\",function(a){var b=a.data.dataValue,f=CKEDITOR.dtd.$block;-1<b.indexOf(\"Apple-\")&&(b=b.replace(/<span class=\"Apple-converted-space\">&nbsp;<\\/span>/gi,\" \"),\"html\"!=a.data.type&&(b=b.replace(/<span class=\"Apple-tab-span\"[^>]*>([^<]*)<\\/span>/gi,function(a,b){return b.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\")})),-1<b.indexOf('<br class=\"Apple-interchange-newline\">')&&\n(a.data.startsWithEOL=1,a.data.preSniffing=\"html\",b=b.replace(/<br class=\"Apple-interchange-newline\">/,\"\")),b=b.replace(/(<[^>]+) class=\"Apple-[^\"]*\"/gi,\"$1\"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var h,l,g=new CKEDITOR.dom.element(\"div\");for(g.setHtml(b);1==g.getChildCount()&&(h=g.getFirst())&&h.type==CKEDITOR.NODE_ELEMENT&&(h.hasClass(\"cke_editable\")||h.hasClass(\"cke_contents\"));)g=l=h;l&&(b=l.getHtml().replace(/<br>$/i,\"\"))}CKEDITOR.env.ie?b=b.replace(/^&nbsp;(?: |\\r\\n)?<(\\w+)/g,function(b,\nc){if(c.toLowerCase()in f){a.data.preSniffing=\"html\";return\"<\"+c}return b}):CKEDITOR.env.webkit?b=b.replace(/<\\/(\\w+)><div><br><\\/div>$/,function(b,c){if(c in f){a.data.endsWithEOL=1;return\"</\"+c+\">\"}return b}):CKEDITOR.env.gecko&&(b=b.replace(/(\\s)<br>$/,\"$1\"));a.data.dataValue=b},null,null,3);b.on(\"paste\",function(d){var d=d.data,c=d.type,f=d.dataValue,h,l=b.config.clipboard_defaultContentType||\"html\";h=\"html\"==c||\"html\"==d.preSniffing?\"html\":w(f);\"htmlifiedtext\"==h?f=x(b.config,f):\"text\"==c&&\"html\"==\nh&&(f=z(b.config,f,a||(a=y(b))));d.startsWithEOL&&(f='<br data-cke-eol=\"1\">'+f);d.endsWithEOL&&(f+='<br data-cke-eol=\"1\">');\"auto\"==c&&(c=\"html\"==h||\"html\"==l?\"html\":\"text\");d.type=c;d.dataValue=f;delete d.preSniffing;delete d.startsWithEOL;delete d.endsWithEOL},null,null,6);b.on(\"paste\",function(a){a=a.data;b.insertHtml(a.dataValue,a.type);setTimeout(function(){b.fire(\"afterPaste\")},0)},null,null,1E3);b.on(\"pasteDialog\",function(a){setTimeout(function(){b.openDialog(\"paste\",a.data)},0)})}})})();(function(){CKEDITOR.plugins.add(\"panel\",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL=\"panel\";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:\"\",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var e=CKEDITOR.addTemplate(\"panel\",\n'<div lang=\"{langCode}\" id=\"{id}\" dir={dir} class=\"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}\" style=\"z-index:{z-index}\" role=\"presentation\">{frame}</div>'),f=CKEDITOR.addTemplate(\"panel-frame\",'<iframe id=\"{id}\" class=\"cke_panel_frame\" role=\"application\" frameborder=\"0\" src=\"{src}\"></iframe>'),g=CKEDITOR.addTemplate(\"panel-frame-inner\",'<!DOCTYPE html><html class=\"cke_panel_container {env}\" dir=\"{dir}\" lang=\"{langCode}\"><head>{css}</head><body class=\"cke_{dir}\" style=\"margin:0;padding:0\" onload=\"{onload}\"></body></html>');\nCKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+\"_frame\"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:\"scroll\",\"-webkit-overflow-scrolling\":\"touch\"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(g.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:\"window.parent.CKEDITOR.tools.callFunction(\"+\nb+\");\"},c)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on(\"key\"+(CKEDITOR.env.opera?\"press\":\"down\"),function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute(\"dir\");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==(\"rtl\"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var c=\n{editorId:a.id,id:this.id,langCode:a.langCode,dir:a.lang.dir,cls:this.className,frame:\"\",env:CKEDITOR.env.cssClass,\"z-index\":a.config.baseFloatZIndex+1};this.isFramed&&(c.frame=f.output({id:this.id+\"_frame\",src:\"javascript:void(document.open(),\"+(CKEDITOR.env.isCustomDomain()?\"document.domain='127.0.0.1\"+document.domain+\"127.0.0.1'127.0.0.1\":\"\")+'127.0.0.1\">'}));var d=e.output(c);b&&b.push(d);return d},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(),\nb);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){var a=this._.blocks[a],b=this._.currentBlock,c=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+\"_frame\");b&&(c.removeAttributes(b.attributes),b.hide());this._.currentBlock=a;c.setAttributes(a.attributes);CKEDITOR.fire(\"ariaWidget\",c);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&\nthis.element.remove()}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement(\"div\",{attributes:{tabIndex:-1,\"class\":\"cke_panel_block\",role:\"presentation\"},styles:{display:\"none\"}}));b&&CKEDITOR.tools.extend(this,b);this.attributes.title||(this.attributes.title=this.attributes[\"aria-label\"]);this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag(\"a\").getItem(this._.focusIndex=\na),(CKEDITOR.env.webkit||CKEDITOR.env.opera)&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle(\"display\",\"\")},hide:function(){(!this.onHide||!0!==this.onHide.call(this))&&this.element.setStyle(\"display\",\"none\")},onKeyDown:function(a){var b=this.keys[a];switch(b){case \"next\":for(var a=this._.focusIndex,b=this.element.getElementsByTag(\"a\"),c;c=b.getItem(++a);)if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=\na;c.focus();break}return!1;case \"prev\":a=this._.focusIndex;for(b=this.element.getElementsByTag(\"a\");0<a&&(c=b.getItem(--a));)if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=a;c.focus();break}return!1;case \"click\":case \"mouseup\":return a=this._.focusIndex,(c=0<=a&&this.element.getElementsByTag(\"a\").getItem(a))&&(c.$[b]?c.$[b]():c.$[\"on\"+b]()),!1}return!0}}})})();CKEDITOR.plugins.add(\"floatpanel\",{requires:\"panel\"});\n(function(){function o(a,b,c,h,g){var g=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||\"\",h.css||\"\",g||\"\"),e=i[g];e||(e=i[g]=new CKEDITOR.ui.panel(b,h),e.element=c.append(CKEDITOR.dom.element.createFromHtml(e.render(a),b)),e.element.setStyles({display:\"none\",position:\"absolute\"}));return e}var i={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,h){function g(){j.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&\n(b=CKEDITOR.document.getById(\"cke_\"+a.name));var e=b.getDocument(),h=o(a,e,b,c,h||0),k=h.element,d=k.getFirst(),j=this;k.disableContextMenu();k.setAttribute(\"role\",\"application\");this.element=k;this._={editor:a,panel:h,parentElement:b,definition:c,document:e,iframe:d,children:[],dir:a.lang.dir};a.on(\"mode\",g);a.on(\"resize\",g);e.getWindow().on(\"resize\",g)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,b)},getBlock:function(a){return this._.panel.getBlock(a)},\nshowBlock:function(a,b,c,h,g){var e=this._.panel,k=e.showBlock(a);this.allowBlur(!1);a=this._.editor.editable();this._.returnFocus=a.hasFocus?a:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);var d=this.element,a=this._.iframe,a=CKEDITOR.env.ie?a:new CKEDITOR.dom.window(a.$.contentWindow),j=d.getDocument(),i=this._.parentElement.getPositionedAncestor(),n=b.getDocumentPosition(j),j=i?i.getDocumentPosition(j):{x:0,y:0},m=\"rtl\"==this._.dir,f=n.x+(h||0)-j.x,l=n.y+(g||0)-j.y;if(m&&(1==c||4==\nc))f+=b.$.offsetWidth;else if(!m&&(2==c||3==c))f+=b.$.offsetWidth-1;if(3==c||4==c)l+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();d.setStyles({top:l+\"px\",left:0,display:\"\"});d.setOpacity(0);d.getFirst().removeStyle(\"width\");this._.editor.focusManager.add(a);this._.blurSet||(CKEDITOR.event.useCapture=!0,a.on(\"blur\",function(a){this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&(this.visible&&!this._.activeChild)&&(delete this._.returnFocus,this.hide())},this),a.on(\"focus\",\nfunction(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.event.useCapture=!1,this._.blurSet=1);e.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&this.onEscape(a)===false)return false},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){d.removeStyle(\"width\");if(k.autoSize){var a=k.element.getDocument(),a=(CKEDITOR.env.webkit?k.element:a.getBody()).$.scrollWidth;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetWidth||0)-(d.$.clientWidth||\n0)+3));d.setStyle(\"width\",a+10+\"px\");a=k.element.$.scrollHeight;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetHeight||0)-(d.$.clientHeight||0)+3));d.setStyle(\"height\",a+\"px\");e._.currentBlock.element.setStyle(\"display\",\"none\").removeStyle(\"display\")}else d.removeStyle(\"height\");m&&(f=f-d.$.offsetWidth);d.setStyle(\"left\",f+\"px\");var b=e.element.getWindow(),a=d.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,g=a.height||a.bottom-a.top,h=m?a.right:b.width-a.left,\ni=m?b.width-a.right:a.left;m?h<c&&(f=i>c?f+c:b.width>c?f-a.left:f-a.right+b.width):h<c&&(f=i>c?f-c:b.width>c?f-a.right+b.width:f-a.left);c=a.top;b.height-a.top<g&&(l=c>g?l-g:b.height>g?l-a.bottom+b.height:l-a.top);if(CKEDITOR.env.ie){b=a=new CKEDITOR.dom.element(d.$.offsetParent);b.getName()==\"html\"&&(b=b.getDocument().getBody());b.getComputedStyle(\"direction\")==\"rtl\"&&(f=CKEDITOR.env.ie8Compat?f-d.getDocument().getDocumentElement().$.scrollLeft*2:f-(a.$.scrollWidth-a.$.clientWidth))}var a=d.getFirst(),\nj;(j=a.getCustomData(\"activePanel\"))&&j.onHide&&j.onHide.call(this,1);a.setCustomData(\"activePanel\",this);d.setStyles({top:l+\"px\",left:f+\"px\"});d.setOpacity(1)},this);e.isLoaded?a():e.onLoad=a;CKEDITOR.tools.setTimeout(function(){this.focus();this.allowBlur(true);this._.editor.fire(\"panelShow\",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||\nthis._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a.is(\"a\")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle(\"display\",\"none\");this.visible=0;this.element.getFirst().removeCustomData(\"activePanel\");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),\na.focus();delete this._.lastFocused;this._.editor.fire(\"panelHide\",this)}},allowBlur:function(a){var b=this._.panel;void 0!=a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,h,g,e){this._.activeChild==a&&a._.panel._.offsetParentId==c.getId()||(this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,h,g,e),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&\nsetTimeout(function(){a.element.getChild(0).$.style.cssText+=\"\"},100))},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on(\"instanceDestroyed\",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in i){var c=i[b];a?c.destroy():c.element.hide()}a&&(i={})})})();CKEDITOR.plugins.add(\"menu\",{requires:\"floatpanel\",beforeInit:function(k){for(var g=k.config.menu_groups.split(\",\"),m=k._.menuGroups={},l=k._.menuItems={},a=0;a<g.length;a++)m[g[a]]=a+1;k.addMenuGroup=function(b,a){m[b]=a||100};k.addMenuItem=function(a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))};k.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};k.getMenuItem=function(a){return l[a]};k.removeMenuItem=function(a){delete l[a]}}});\n(function(){function k(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var g='<span class=\"cke_menuitem\"><a id=\"{id}\" class=\"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}\" href=\"{href}\" title=\"{title}\" tabindex=\"-1\"_cke_focus=1 hidefocus=\"true\" role=\"menuitem\" aria-haspopup=\"{hasPopup}\" aria-disabled=\"{disabled}\" aria-pressed=\"{pressed}\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)g+=' onkeypress=\"return false;\"';\nCKEDITOR.env.gecko&&(g+=' onblur=\"this.style.cssText = this.style.cssText;\"');var g=g+(' onmouseover=\"CKEDITOR.tools.callFunction({hoverFn},{index});\" onmouseout=\"CKEDITOR.tools.callFunction({moveOutFn},{index});\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\">'),m=CKEDITOR.addTemplate(\"menuItem\",g+'<span class=\"cke_menubutton_inner\"><span class=\"cke_menubutton_icon\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{iconStyle}\"></span></span><span class=\"cke_menubutton_label\">{label}</span>{arrowHtml}</span></a></span>'),\nl=CKEDITOR.addTemplate(\"menuArrow\",'<span class=\"cke_menuarrow\"><span>{label}</span></span>');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath(\"editor\")],level:this._.level-1,block:{}}),j=c.block.attributes=c.attributes||{};!j.role&&(j.role=\"menu\");this._.panelDefinition=c},_:{onShow:function(){var a=\nthis.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),j=this._.listeners;this.removeAll();for(var e=0;e<j.length;e++){var i=j[e](b,a,c);if(i)for(var f in i){var h=this.editor.getMenuItem(f);if(h&&(!h.command||this.editor.getCommand(h.command).state))h.state=i[f],this.add(h)}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1},\nonHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var j in c){var e=this.editor.getMenuItem(j);e&&(e.state=c[j],b.add(e))}var i=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+(\"\"+a));setTimeout(function(){b.show(i,\n2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,j){if(!this.parent&&(this._.onShow(),!this.items.length))return;var b=b||(\"rtl\"==this.editor.lang.dir?2:1),e=this.items,i=this.editor,f=this._.panel,h=this._.element;if(!f){f=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);f.onEscape=CKEDITOR.tools.bind(function(a){if(!1===\nthis._.onEscape(a))return!1},this);f.onShow=function(){f._.panel.getHolderElement().getParent().addClass(\"cke cke_reset_all\")};f.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);h=f.addBlock(this.id,this._.panelDefinition.block);h.autoSize=!0;var d=h.keys;d[40]=\"next\";d[9]=\"next\";d[38]=\"prev\";d[CKEDITOR.SHIFT+9]=\"prev\";d[\"rtl\"==i.lang.dir?37:39]=CKEDITOR.env.ie?\"mouseup\":\"click\";d[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(d[13]=\"mouseup\");h=this._.element=\nh.element;d=h.getDocument();d.getBody().setStyle(\"overflow\",\"hidden\");d.getElementsByTag(\"html\").getItem(0).setStyle(\"overflow\",\"hidden\");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,i.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=\nthis.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}k(e);for(var d=i.elementPath(),d=['<div class=\"cke_menu'+(d&&d.direction()!=i.lang.dir?\" cke_mixed_dir_content\":\"\")+'\" role=\"presentation\">'],g=e.length,m=g&&e[0].group,l=0;l<g;l++){var n=e[l];m!=n.group&&(d.push('<div class=\"cke_menuseparator\" role=\"separator\"></div>'),m=n.group);n.render(this,l,d)}d.push(\"</div>\");h.setHtml(d.join(\"\"));CKEDITOR.ui.fire(\"ready\",\nthis);this.parent?this.parent._.panel.showAsChild(f,this.id,a,b,c,j):f.showBlock(this.id,a,b,c,j);i.fire(\"menuShow\",[f])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:\"cke_menubutton__\"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var g=a.id+(\"\"+\nb),e=\"undefined\"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,i=e==CKEDITOR.TRISTATE_ON?\"on\":e==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\",f=this.getItems,h=\"&#\"+(\"rtl\"==this.editor.lang.dir?\"9668\":\"9658\")+\";\",d=this.name;this.icon&&!/\\./.test(this.icon)&&(d=this.icon);a={id:g,name:this.name,iconName:d,label:this.label,cls:this.className||\"\",state:i,hasPopup:f?\"true\":\"false\",disabled:e==CKEDITOR.TRISTATE_DISABLED,pressed:e==CKEDITOR.TRISTATE_ON,title:this.label,href:\"javascript:void('\"+(this.label||\n\"\").replace(\"'\")+\"')\",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(d,\"rtl\"==this.editor.lang.dir,d==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:h}):\"\"};m.output(a,c)}}})})();CKEDITOR.config.menu_groups=\"clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div\";CKEDITOR.plugins.add(\"contextmenu\",{requires:\"menu\",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(b){this.base.call(this,b,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":b.lang.contextmenu.options}}})},proto:{addTarget:function(b,d){if(CKEDITOR.env.opera&&!(\"oncontextmenu\"in document.body)){var c;b.on(\"mousedown\",function(a){a=a.data;if(2!=a.$.button)a.getKeystroke()==CKEDITOR.CTRL+1&&b.fire(\"contextmenu\",a);else if(!d||!(CKEDITOR.env.mac?\na.$.metaKey:a.$.ctrlKey)){var g=a.getTarget();c||(g=g.getDocument(),c=g.createElement(\"input\"),c.$.type=\"button\",g.getBody().append(c));c.setAttribute(\"style\",\"position:absolute;top:\"+(a.$.clientY-2)+\"px;left:\"+(a.$.clientX-2)+\"px;width:5px;height:5px;opacity:0.01\")}});b.on(\"mouseup\",function(a){c&&(c.remove(),c=void 0,b.fire(\"contextmenu\",a.data))})}b.on(\"contextmenu\",function(a){a=a.data;if(!d||!(CKEDITOR.env.webkit?e:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey)){a.preventDefault();var b=a.getTarget().getDocument(),\nc=a.getTarget().getDocument().getDocumentElement(),f=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),h=f?a.$.clientX:a.$.pageX||b.x+a.$.clientX,i=f?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(c,null,h,i)},CKEDITOR.env.ie?200:0,this)}},this);if(CKEDITOR.env.opera)b.on(\"keypress\",function(a){a=a.data;0===a.$.keyCode&&a.preventDefault()});if(CKEDITOR.env.webkit){var e,f=function(){e=0};b.on(\"keydown\",function(a){e=CKEDITOR.env.mac?a.data.$.metaKey:\na.data.$.ctrlKey});b.on(\"keyup\",f);b.on(\"contextmenu\",f)}},open:function(b,d,c,e){this.editor.focus();b=b||CKEDITOR.document.getDocumentElement();this.editor.selectionChange(1);this.show(b,d,c,e)}}})},beforeInit:function(b){var d=b.contextMenu=new CKEDITOR.plugins.contextMenu(b);b.on(\"contentDom\",function(){d.addTarget(b.editable(),!1!==b.config.browserContextMenuOnCtrl)});b.addCommand(\"contextMenu\",{exec:function(){b.contextMenu.open(b.document.getBody())}});b.setKeystroke(CKEDITOR.SHIFT+121,\"contextMenu\");\nb.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,\"contextMenu\")}});CKEDITOR.plugins.add(\"resize\",{init:function(b){var f,g,n,o,a=b.config,q=b.ui.spaceId(\"resizer\"),h=b.element?b.element.getDirection(1):\"ltr\";!a.resize_dir&&(a.resize_dir=\"vertical\");void 0==a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0==a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0==a.resize_minWidth&&(a.resize_minWidth=750);void 0==a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var c=null,i=(\"both\"==a.resize_dir||\"horizontal\"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,\nl=(\"both\"==a.resize_dir||\"vertical\"==a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,j=function(d){var e=f,m=g,c=e+(d.data.$.screenX-n)*(\"rtl\"==h?-1:1),d=m+(d.data.$.screenY-o);i&&(e=Math.max(a.resize_minWidth,Math.min(c,a.resize_maxWidth)));l&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(i?e:null,m)},k=function(){CKEDITOR.document.removeListener(\"mousemove\",j);CKEDITOR.document.removeListener(\"mouseup\",k);b.document&&(b.document.removeListener(\"mousemove\",j),b.document.removeListener(\"mouseup\",\nk))},p=CKEDITOR.tools.addFunction(function(d){c||(c=b.getResizable());f=c.$.offsetWidth||0;g=c.$.offsetHeight||0;n=d.screenX;o=d.screenY;a.resize_minWidth>f&&(a.resize_minWidth=f);a.resize_minHeight>g&&(a.resize_minHeight=g);CKEDITOR.document.on(\"mousemove\",j);CKEDITOR.document.on(\"mouseup\",k);b.document&&(b.document.on(\"mousemove\",j),b.document.on(\"mouseup\",k));d.preventDefault&&d.preventDefault()});b.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(p)});b.on(\"uiSpace\",function(a){if(\"bottom\"==\na.data.space){var e=\"\";i&&!l&&(e=\" cke_resizer_horizontal\");!i&&l&&(e=\" cke_resizer_vertical\");var c='<span id=\"'+q+'\" class=\"cke_resizer'+e+\" cke_resizer_\"+h+'\" title=\"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'\" onmousedown=\"CKEDITOR.tools.callFunction('+p+', event)\">'+(\"ltr\"==h?\"◢\":\"◣\")+\"</span>\";\"ltr\"==h&&\"ltr\"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on(\"maximize\",function(a){b.ui.space(\"resizer\")[a.data==CKEDITOR.TRISTATE_ON?\"hide\":\"show\"]()})}}});(function(){var a='<a id=\"{id}\" class=\"cke_button cke_button__{name} cke_button_{state} {cls}\"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?\"\":'\" href=\"javascript:void(\\'{titleJs}\\')\"')+' title=\"{title}\" tabindex=\"-1\" hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"{hasArrow}\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)a+=' onkeypress=\"return false;\"';CKEDITOR.env.gecko&&(a+=' onblur=\"this.style.cssText = this.style.cssText;\"');var a=\na+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event);\" onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\"  onmousedown=\"return CKEDITOR.tools.callFunction({mousedownFn},event);\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{style}\"'),a=a+'>&nbsp;</span><span id=\"{id}_label\" class=\"cke_button_label cke_button__{name}_label\">{label}</span>{arrowHtml}</a>',\nm=CKEDITOR.addTemplate(\"buttonArrow\",'<span class=\"cke_button_arrow\">'+(CKEDITOR.env.hc?\"&#9660;\":\"\")+\"</span>\"),n=CKEDITOR.addTemplate(\"button\",a);CKEDITOR.plugins.add(\"button\",{beforeInit:function(b){b.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON=\"button\";CKEDITOR.ui.button=function(b){CKEDITOR.tools.extend(this,b,{title:b.label,click:b.click||function(e){e.execCommand(b.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(b){return new CKEDITOR.ui.button(b)}};\nCKEDITOR.ui.button.prototype={render:function(b,e){var a=CKEDITOR.env,i=this._.id=CKEDITOR.tools.getNextId(),f=\"\",d=this.command,l;this._.editor=b;var c={id:i,button:this,editor:b,focus:function(){CKEDITOR.document.getById(i).focus()},execute:function(){this.button.click(b)},attach:function(b){this.button.attach(b)}},o=CKEDITOR.tools.addFunction(function(b){if(c.onkey)return b=new CKEDITOR.dom.event(b),!1!==c.onkey(c,b.getKeystroke())}),p=CKEDITOR.tools.addFunction(function(b){var a;c.onfocus&&(a=\n!1!==c.onfocus(c,new CKEDITOR.dom.event(b)));CKEDITOR.env.gecko&&10900>CKEDITOR.env.version&&b.preventBubble();return a}),j=0,q=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var a=b.editable();a.isInline()&&a.hasFocus&&(b.lockSelection(),j=1)}});c.clickFn=l=CKEDITOR.tools.addFunction(function(){j&&(b.unlockSelection(1),j=0);c.execute()});if(this.modes){var k={},g=function(){var a=b.mode;a&&(a=this.modes[a]?void 0!=k[a]?k[a]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,this.setState(b.readOnly&&\n!this.readOnly?CKEDITOR.TRISTATE_DISABLED:a))};b.on(\"beforeModeUnload\",function(){b.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(k[b.mode]=this._.state)},this);b.on(\"mode\",g,this);!this.readOnly&&b.on(\"readOnly\",g,this)}else if(d&&(d=b.getCommand(d)))d.on(\"state\",function(){this.setState(d.state)},this),f+=d.state==CKEDITOR.TRISTATE_ON?\"on\":d.state==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\";if(this.directional)b.on(\"contentDirChanged\",function(a){var e=CKEDITOR.document.getById(this._.id),c=\ne.getFirst(),a=a.data;a!=b.lang.dir?e.addClass(\"cke_\"+a):e.removeClass(\"cke_ltr\").removeClass(\"cke_rtl\");c.setAttribute(\"style\",CKEDITOR.skin.getIconStyle(h,\"rtl\"==a,this.icon,this.iconOffset))},this);d||(f+=\"off\");var h=g=this.name||this.command;this.icon&&!/\\./.test(this.icon)&&(h=this.icon,this.icon=null);a={id:i,name:g,iconName:h,label:this.label,cls:this.className||\"\",state:f,title:this.title,titleJs:a.gecko&&10900<=a.version&&!a.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),hasArrow:this.hasArrow?\n\"true\":\"false\",keydownFn:o,mousedownFn:q,focusFn:p,clickFn:l,style:CKEDITOR.skin.getIconStyle(h,\"rtl\"==b.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?m.output():\"\"};n.output(a,e);if(this.onRender)this.onRender();return c},setState:function(b){if(this._.state==b)return!1;this._.state=b;var a=CKEDITOR.document.getById(this._.id);return a?(a.setState(b,\"cke_button\"),b==CKEDITOR.TRISTATE_DISABLED?a.setAttribute(\"aria-disabled\",!0):a.removeAttribute(\"aria-disabled\"),b==CKEDITOR.TRISTATE_ON?\na.setAttribute(\"aria-pressed\",!0):a.removeAttribute(\"aria-pressed\"),!0):!1}};CKEDITOR.ui.prototype.addButton=function(b,a){this.add(b,CKEDITOR.UI_BUTTON,a)}})();(function(){function w(a){function e(){for(var b=h(),g=CKEDITOR.tools.clone(a.config.toolbarGroups)||o(a),f=0;f<g.length;f++){var d=g[f];if(\"../../../default.htm\"!=d){\"string\"==typeof d&&(d=g[f]={name:d});var e,n=d.groups;if(n)for(var l=0;l<n.length;l++)e=n[l],(e=b[e])&&c(d,e);(e=b[d.name])&&c(d,e)}}return g}function h(){var b={},c,f,d;for(c in a.ui.items)f=a.ui.items[c],d=f.toolbar||\"others\",d=d.split(\",\"),f=d[0],d=parseInt(d[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:d});for(f in b)b[f]=b[f].sort(function(a,\nb){return a.order==b.order?0:0>b.order?-1:0>a.order?1:a.order<b.order?-1:1});return b}function c(a,c){if(c.length){a.items?a.items.push(\"-\"):a.items=[];for(var d;d=c.shift();)a.items.push(d.name)}}var d=a.config.toolbar;\"string\"==typeof d&&(d=a.config[\"toolbar_\"+d]);return a.toolbar=d||e()}function o(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:\"document\",groups:[\"mode\",\"document\",\"doctools\"]},{name:\"clipboard\",groups:[\"clipboard\",\"undo\"]},{name:\"editing\",groups:[\"find\",\"selection\",\"spellchecker\"]},\n{name:\"forms\"},\"../../../default.htm\",{name:\"basicstyles\",groups:[\"basicstyles\",\"cleanup\"]},{name:\"paragraph\",groups:[\"list\",\"indent\",\"blocks\",\"align\"]},{name:\"links\"},{name:\"insert\"},\"../../../default.htm\",{name:\"styles\"},{name:\"colors\"},{name:\"tools\"},{name:\"others\"},{name:\"about\"}])}var t=function(){this.toolbars=[];this.focusCommandExecuted=!1};t.prototype.focus=function(){for(var a=0,e;e=this.toolbars[a++];)for(var h=0,c;c=e.items[h++];)if(c.focus){c.focus();return}};var x={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&\n(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},100):a.toolbox.focus())}};CKEDITOR.plugins.add(\"toolbar\",{requires:\"button\",init:function(a){var e,h=function(c,d){var b,g=\"rtl\"==a.lang.dir,f=a.config.toolbarGroupCycling,f=void 0===f||f;switch(d){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==d?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-\n1],b.items.length)for(c=b.items[e?b.items.length-1:0];c&&!c.focus;)(c=e?c.previous:c.next)||(b=0);c&&c.focus();return!1;case g?37:39:case 40:b=c;do b=b.next,!b&&f&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():h(c,9);return!1;case g?39:37:case 38:b=c;do b=b.previous,!b&&f&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(e=1,h(c,CKEDITOR.SHIFT+9),e=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(),!1}return!0};a.on(\"uiSpace\",function(c){if(c.data.space==\na.config.toolbarLocation){a.toolbox=new t;var d=CKEDITOR.tools.getNextId(),b=a.config.removeButtons,b=b&&b.split(\",\"),g=['<span id=\"',d,'\" class=\"cke_voice_label\">',a.lang.toolbar.toolbars,\"</span>\",'<span id=\"'+a.ui.spaceId(\"toolbox\")+'\" class=\"cke_toolbox\" role=\"group\" aria-labelledby=\"',d,'\" onmousedown=\"return false;\">'],d=!1!==a.config.toolbarStartupExpanded,f,e;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&g.push('<span class=\"cke_toolbox_main\"'+(d?\">\":' style=\"display:none\">'));\nfor(var o=a.toolbox.toolbars,n=w(a),l=0;l<n.length;l++){var j,i=0,q,m=n[l],r;if(m)if(f&&(g.push(\"</span>\"),e=f=0),\"../../../default.htm\"===m)g.push('<span class=\"cke_toolbar_break\"></span>');else{r=m.items||m;for(var s=0;s<r.length;s++){var k;k=r[s];var u;if(!(b&&0<=CKEDITOR.tools.indexOf(b,k))&&(k=a.ui.create(k)))if(k.type==CKEDITOR.UI_SEPARATOR)e=f&&k;else{u=!1!==k.canGroup;if(!i){j=CKEDITOR.tools.getNextId();i={id:j,items:[]};q=m.name&&(a.lang.toolbar.toolbarGroups[m.name]||m.name);g.push('<span id=\"',j,'\" class=\"cke_toolbar\"',\nq?' aria-labelledby=\"'+j+'_label\"':\"\",' role=\"toolbar\">');q&&g.push('<span id=\"',j,'_label\" class=\"cke_voice_label\">',q,\"</span>\");g.push('<span class=\"cke_toolbar_start\"></span>');var p=o.push(i)-1;0<p&&(i.previous=o[p-1],i.previous.next=i)}u?f||(g.push('<span class=\"cke_toolgroup\" role=\"presentation\">'),f=1):f&&(g.push(\"</span>\"),f=0);j=function(b){b=b.render(a,g);p=i.items.push(b)-1;if(p>0){b.previous=i.items[p-1];b.previous.next=b}b.toolbar=i;b.onkey=h;b.onfocus=function(){a.toolbox.focusCommandExecuted||\na.focus()}};e&&(j(e),e=0);j(k)}}f&&(g.push(\"</span>\"),e=f=0);i&&g.push('<span class=\"cke_toolbar_end\"></span></span>')}}a.config.toolbarCanCollapse&&g.push(\"</span>\");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var v=CKEDITOR.tools.addFunction(function(){a.execCommand(\"toolbarCollapse\")});a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(v)});a.addCommand(\"toolbarCollapse\",{readOnly:1,exec:function(a){var b=a.ui.space(\"toolbar_collapser\"),c=b.getPrevious(),d=\na.ui.space(\"contents\"),e=c.getParent(),f=parseInt(d.$.style.height,10),g=e.$.offsetHeight,h=b.hasClass(\"cke_toolbox_collapser_min\");h?(c.show(),b.removeClass(\"cke_toolbox_collapser_min\"),b.setAttribute(\"title\",a.lang.toolbar.toolbarCollapse)):(c.hide(),b.addClass(\"cke_toolbox_collapser_min\"),b.setAttribute(\"title\",a.lang.toolbar.toolbarExpand));b.getFirst().setText(h?\"▲\":\"◀\");d.setStyle(\"height\",f-(e.$.offsetHeight-g)+\"px\");a.fire(\"resize\")},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+\n(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),\"toolbarCollapse\");g.push('<a title=\"'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'\" id=\"'+a.ui.spaceId(\"toolbar_collapser\")+'\" tabIndex=\"-1\" class=\"cke_toolbox_collapser');d||g.push(\" cke_toolbox_collapser_min\");g.push('\" onclick=\"CKEDITOR.tools.callFunction('+v+')\">','<span class=\"cke_arrow\">&#9650;</span>',\"</a>\")}g.push(\"</span>\");c.data.html+=g.join(\"\")}});a.on(\"destroy\",function(){if(this.toolbox){var a,d=0,b,e,f;for(a=this.toolbox.toolbars;d<\na.length;d++){e=a[d].items;for(b=0;b<e.length;b++)f=e[b],f.clickFn&&CKEDITOR.tools.removeFunction(f.clickFn),f.keyDownFn&&CKEDITOR.tools.removeFunction(f.keyDownFn)}}});a.on(\"uiReady\",function(){var c=a.ui.space(\"toolbox\");c&&a.focusManager.add(c,1)});a.addCommand(\"toolbarFocus\",x);a.setKeystroke(CKEDITOR.ALT+121,\"toolbarFocus\");a.ui.add(\"-\",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('<span class=\"cke_toolbar_separator\" role=\"separator\"></span>');\nreturn{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,e,h){var c=o(this.editor),d=0===e,b={name:a};if(h){if(h=CKEDITOR.tools.search(c,function(a){return a.name==h})){!h.groups&&(h.groups=[]);if(e&&(e=CKEDITOR.tools.indexOf(h.groups,e),0<=e)){h.groups.splice(e+1,0,a);return}d?h.groups.splice(0,0,a):h.groups.push(a);return}e=null}e&&(e=CKEDITOR.tools.indexOf(c,function(a){return a.name==e}));d?c.splice(0,0,a):\"number\"==typeof e?c.splice(e+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR=\"separator\";\nCKEDITOR.config.toolbarLocation=\"top\";(function(){var o={editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+\"0\"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}},m='<span class=\"cke_path_empty\">&nbsp;</span>',d=\"\";if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)d+=' onkeypress=\"return false;\"';CKEDITOR.env.gecko&&(d+=' onblur=\"this.style.cssText = this.style.cssText;\"');var p=CKEDITOR.addTemplate(\"pathItem\",'<a id=\"{id}\" href=\"{jsTitle}\" tabindex=\"-1\" class=\"cke_path_item\" title=\"{label}\"'+\n(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version?' onfocus=\"event.preventBubble();\"':\"\")+d+' hidefocus=\"true\"  onkeydown=\"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );\" onclick=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\" role=\"button\" aria-label=\"{label}\">{text}</a>');CKEDITOR.plugins.add(\"elementspath\",{init:function(a){function d(b){a.focus();b=a._.elementsPath.list[b];if(b.equals(a.editable())){var e=a.createRange();e.selectNodeContents(b);e.select()}else a.getSelection().selectElement(b)}\nfunction h(){i&&i.setHtml(m);delete a._.elementsPath.list}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var l=a.ui.spaceId(\"path\"),i,n=\"cke_elementspath_\"+CKEDITOR.tools.getNextNumber()+\"_\";a._.elementsPath={idBase:n,filters:[]};a.on(\"uiSpace\",function(b){\"bottom\"==b.data.space&&(b.data.html+='<span id=\"'+l+'_label\" class=\"cke_voice_label\">'+a.lang.elementspath.eleLabel+'</span><span id=\"'+l+'\" class=\"cke_path\" role=\"group\" aria-labelledby=\"'+l+'_label\">'+m+\"</span>\")});a.on(\"uiReady\",function(){var b=\na.ui.space(\"path\");b&&a.focusManager.add(b,1)});var q=CKEDITOR.tools.addFunction(d),r=CKEDITOR.tools.addFunction(function(b,e){var c=a._.elementsPath.idBase,f,e=new CKEDITOR.dom.event(e);f=\"rtl\"==a.lang.dir;switch(e.getKeystroke()){case f?39:37:case 9:return(f=CKEDITOR.document.getById(c+(b+1)))||(f=CKEDITOR.document.getById(c+\"0\")),f.focus(),!1;case f?37:39:case CKEDITOR.SHIFT+9:return(f=CKEDITOR.document.getById(c+(b-1)))||(f=CKEDITOR.document.getById(c+(a._.elementsPath.list.length-1))),f.focus(),\n!1;case 27:return a.focus(),!1;case 13:case 32:return d(b),!1}return!0});a.on(\"selectionChange\",function(b){for(var e=a.editable(),c=b.data.selection.getStartElement(),b=[],f=a._.elementsPath.list=[],d=a._.elementsPath.filters;c;){var j=0,g;g=c.data(\"cke-display-name\")?c.data(\"cke-display-name\"):c.data(\"cke-real-element-type\")?c.data(\"cke-real-element-type\"):c.getName();for(var k=0;k<d.length;k++){var h=d[k](c,g);if(!1===h){j=1;break}g=h||g}j||(j=f.push(c)-1,k=a.lang.elementspath.eleTitle.replace(/%1/,\ng),g=p.output({id:n+j,label:k,text:g,jsTitle:\"javascript:void('\"+g+\"')\",index:j,keyDownFn:r,clickFn:q}),b.unshift(g));if(c.equals(e))break;c=c.getParent()}i||(i=CKEDITOR.document.getById(l));e=i;e.setHtml(b.join(\"\")+m);a.fire(\"elementsPathUpdate\",{space:e})});a.on(\"readOnly\",h);a.on(\"contentDomUnload\",h);a.addCommand(\"elementsPathFocus\",o);a.setKeystroke(CKEDITOR.ALT+122,\"elementsPathFocus\")}}})})();(function(){function C(c,j,f){function b(b){if((d=a[b?\"getFirst\":\"getLast\"]())&&(!d.is||!d.isBlockBoundary())&&(m=j.root[b?\"getPrevious\":\"getNext\"](CKEDITOR.dom.walker.invisible(!0)))&&(!m.is||!m.isBlockBoundary({br:1})))c.document.createElement(\"br\")[b?\"insertBefore\":\"insertAfter\"](d)}for(var i=CKEDITOR.plugins.list.listToArray(j.root,f),e=[],h=0;h<j.contents.length;h++){var g=j.contents[h];if((g=g.getAscendant(\"li\",!0))&&!g.getCustomData(\"list_item_processed\"))e.push(g),CKEDITOR.dom.element.setMarker(f,\ng,\"list_item_processed\",!0)}g=null;for(h=0;h<e.length;h++)g=e[h].getCustomData(\"listarray_index\"),i[g].indent=-1;for(h=g+1;h<i.length;h++)if(i[h].indent>i[h-1].indent+1){e=i[h-1].indent+1-i[h].indent;for(g=i[h].indent;i[h]&&i[h].indent>=g;)i[h].indent+=e,h++;h--}var a=CKEDITOR.plugins.list.arrayToList(i,f,null,c.config.enterMode,j.root.getAttribute(\"dir\")).listNode,d,m;b(!0);b();a.replace(j.root)}function x(c,j){this.name=c;this.context=this.type=j}function y(c,j,f,b){for(var i,e;i=c[b?\"getLast\":\n\"getFirst\"](D);)(e=i.getDirection(1))!==j.getDirection(1)&&i.setAttribute(\"dir\",e),i.remove(),f?i[b?\"insertBefore\":\"insertAfter\"](f):j.append(i,b)}function A(c){var j;(j=function(f){var b=c[f?\"getPrevious\":\"getNext\"](q);b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.is(c.getName()))&&(y(c,b,null,!f),c.remove(),c=b)})();j(1)}function B(c){return c.type==CKEDITOR.NODE_ELEMENT&&(c.getName()in CKEDITOR.dtd.$block||c.getName()in CKEDITOR.dtd.$listItem)&&CKEDITOR.dtd[c.getName()][\"#\"]}function v(c,j,f){c.fire(\"saveSnapshot\");\nf.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var b=f.extractContents();j.trim(!1,!0);var i=j.createBookmark(),e=new CKEDITOR.dom.elementPath(j.startContainer),h=e.block,e=e.lastElement.getAscendant(\"li\",1)||h,g=new CKEDITOR.dom.elementPath(f.startContainer),a=g.contains(CKEDITOR.dtd.$listItem),g=g.contains(CKEDITOR.dtd.$list);h?(h=h.getBogus())&&h.remove():g&&(h=g.getPrevious(q))&&u(h)&&h.remove();(h=b.getLast())&&(h.type==CKEDITOR.NODE_ELEMENT&&h.is(\"br\"))&&h.remove();(h=j.startContainer.getChild(j.startOffset))?\nb.insertBefore(h):j.startContainer.append(b);if(a&&(b=w(a)))e.contains(a)?(y(b,a.getParent(),a),b.remove()):e.append(b);for(;f.checkStartOfBlock()&&f.checkEndOfBlock();)g=f.startPath(),b=g.block,b.is(\"li\")&&(e=b.getParent(),b.equals(e.getLast(q))&&b.equals(e.getFirst(q))&&(b=e)),f.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START),b.remove();f=f.clone();b=c.editable();f.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);f=new CKEDITOR.dom.walker(f);f.evaluator=function(a){return q(a)&&!u(a)};(f=f.next())&&(f.type==\nCKEDITOR.NODE_ELEMENT&&f.getName()in CKEDITOR.dtd.$list)&&A(f);j.moveToBookmark(i);j.select();c.fire(\"saveSnapshot\")}function w(c){return(c=c.getLast(q))&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in r?c:null}var r={ol:1,ul:1},E=CKEDITOR.dom.walker.whitespaces(),F=CKEDITOR.dom.walker.bookmark(),q=function(c){return!(E(c)||F(c))},u=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(c,j,f,b,i){if(!r[c.getName()])return[];b||(b=0);f||(f=[]);for(var e=0,h=c.getChildCount();e<h;e++){var g=\nc.getChild(e);g.type==CKEDITOR.NODE_ELEMENT&&g.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(g,j,f,b+1);if(\"li\"==g.$.nodeName.toLowerCase()){var a={parent:c,indent:b,element:g,contents:[]};i?a.grandparent=i:(a.grandparent=c.getParent(),a.grandparent&&\"li\"==a.grandparent.$.nodeName.toLowerCase()&&(a.grandparent=a.grandparent.getParent()));j&&CKEDITOR.dom.element.setMarker(j,g,\"listarray_index\",f.length);f.push(a);for(var d=0,m=g.getChildCount(),k;d<m;d++)k=g.getChild(d),k.type==\nCKEDITOR.NODE_ELEMENT&&r[k.getName()]?CKEDITOR.plugins.list.listToArray(k,j,f,b+1,a.grandparent):a.contents.push(k)}}return f},arrayToList:function(c,j,f,b,i){f||(f=0);if(!c||c.length<f+1)return null;for(var e,h=c[f].parent.getDocument(),g=new CKEDITOR.dom.documentFragment(h),a=null,d=f,m=Math.max(c[f].indent,0),k=null,n,l,p=b==CKEDITOR.ENTER_P?\"p\":\"div\";;){var o=c[d];e=o.grandparent;n=o.element.getDirection(1);if(o.indent==m){if(!a||c[d].parent.getName()!=a.getName())a=c[d].parent.clone(!1,1),i&&\na.setAttribute(\"dir\",i),g.append(a);k=a.append(o.element.clone(0,1));n!=a.getDirection(1)&&k.setAttribute(\"dir\",n);for(e=0;e<o.contents.length;e++)k.append(o.contents[e].clone(1,1));d++}else if(o.indent==Math.max(m,0)+1)l=c[d-1].element.getDirection(1),d=CKEDITOR.plugins.list.arrayToList(c,null,d,b,l!=n?n:null),!k.getChildCount()&&(CKEDITOR.env.ie&&!(7<h.$.documentMode))&&k.append(h.createText(\" \")),k.append(d.listNode),d=d.nextIndex;else if(-1==o.indent&&!f&&e){r[e.getName()]?(k=o.element.clone(!1,\n!0),n!=e.getDirection(1)&&k.setAttribute(\"dir\",n)):k=new CKEDITOR.dom.documentFragment(h);var a=e.getDirection(1)!=n,s=o.element,z=s.getAttribute(\"class\"),u=s.getAttribute(\"style\"),w=k.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(b!=CKEDITOR.ENTER_BR||a||u||z),t,x=o.contents.length;for(e=0;e<x;e++){t=o.contents[e];if(t.type==CKEDITOR.NODE_ELEMENT&&t.isBlockBoundary()){a&&!t.getDirection()&&t.setAttribute(\"dir\",n);var v=t,y=s.getAttribute(\"style\");y&&v.setAttribute(\"style\",y.replace(/([^;])$/,\"$1;\")+(v.getAttribute(\"style\")||\n\"\"));z&&t.addClass(z)}else w&&(l||(l=h.createElement(p),a&&l.setAttribute(\"dir\",n)),u&&l.setAttribute(\"style\",u),z&&l.setAttribute(\"class\",z),l.append(t.clone(1,1)));k.append(l||t.clone(1,1))}k.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&d!=c.length-1&&((n=k.getLast())&&(n.type==CKEDITOR.NODE_ELEMENT&&\"_moz\"==n.getAttribute(\"type\"))&&n.remove(),(!k.getLast(q)||!(n.type==CKEDITOR.NODE_ELEMENT&&n.getName()in CKEDITOR.dtd.$block))&&k.append(h.createElement(\"br\")));n=k.$.nodeName.toLowerCase();!CKEDITOR.env.ie&&\n(\"div\"==n||\"p\"==n)&&k.appendBogus();g.append(k);a=null;d++}else return null;l=null;if(c.length<=d||Math.max(c[d].indent,0)<m)break}if(j)for(c=g.getFirst();c;){if(c.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(j,c),c.getName()in CKEDITOR.dtd.$listItem&&(f=c,h=i=b=void 0,b=f.getDirection()))){for(i=f.getParent();i&&!(h=i.getDirection());)i=i.getParent();b==h&&f.removeAttribute(\"dir\")}c=c.getNextSourceNode()}return{listNode:g,nextIndex:d}}};var G=/^h[1-6]$/,D=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);\nx.prototype={exec:function(c){this.refresh(c,c.elementPath());var j=c.config,f=c.getSelection(),b=f&&f.getRanges(!0);if(this.state==CKEDITOR.TRISTATE_OFF){var i=c.editable();if(i.getFirst(q)){var e=1==b.length&&b[0];(j=e&&e.getEnclosedNode())&&(j.is&&this.type==j.getName())&&this.setState(CKEDITOR.TRISTATE_ON)}else j.enterMode==CKEDITOR.ENTER_BR?i.appendBogus():b[0].fixBlock(1,j.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),f.selectRanges(b)}for(var j=f.createBookmarks(!0),i=[],h={},b=b.createIterator(),\ng=0;(e=b.getNextRange())&&++g;){var a=e.getBoundaryNodes(),d=a.startNode,m=a.endNode;d.type==CKEDITOR.NODE_ELEMENT&&\"td\"==d.getName()&&e.setStartAt(a.startNode,CKEDITOR.POSITION_AFTER_START);m.type==CKEDITOR.NODE_ELEMENT&&\"td\"==m.getName()&&e.setEndAt(a.endNode,CKEDITOR.POSITION_BEFORE_END);e=e.createIterator();for(e.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;a=e.getNextParagraph();)if(!a.getCustomData(\"list_block\")){CKEDITOR.dom.element.setMarker(h,a,\"list_block\",1);for(var k=c.elementPath(a),\nd=k.elements,m=0,k=k.blockLimit,n,l=d.length-1;0<=l&&(n=d[l]);l--)if(r[n.getName()]&&k.contains(n)){k.removeCustomData(\"list_group_object_\"+g);(d=n.getCustomData(\"list_group_object\"))?d.contents.push(a):(d={root:n,contents:[a]},i.push(d),CKEDITOR.dom.element.setMarker(h,n,\"list_group_object\",d));m=1;break}m||(m=k,m.getCustomData(\"list_group_object_\"+g)?m.getCustomData(\"list_group_object_\"+g).contents.push(a):(d={root:m,contents:[a]},CKEDITOR.dom.element.setMarker(h,m,\"list_group_object_\"+g,d),i.push(d)))}}for(n=\n[];0<i.length;)if(d=i.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(r[d.root.getName()]){a=c;b=d;d=h;g=n;m=CKEDITOR.plugins.list.listToArray(b.root,d);k=[];for(e=0;e<b.contents.length;e++)if(l=b.contents[e],(l=l.getAscendant(\"li\",!0))&&!l.getCustomData(\"list_item_processed\"))k.push(l),CKEDITOR.dom.element.setMarker(d,l,\"list_item_processed\",!0);for(var l=b.root.getDocument(),p=void 0,o=void 0,e=0;e<k.length;e++){var s=k[e].getCustomData(\"listarray_index\"),p=m[s].parent;p.is(this.type)||(o=l.createElement(this.type),\np.copyAttributes(o,{start:1,type:1}),o.removeStyle(\"list-style-type\"),m[s].parent=o)}a=CKEDITOR.plugins.list.arrayToList(m,d,null,a.config.enterMode);d=void 0;m=a.listNode.getChildCount();for(e=0;e<m&&(d=a.listNode.getChild(e));e++)d.getName()==this.type&&g.push(d);a.listNode.replace(b.root)}else{m=c;a=d;e=n;k=a.contents;b=a.root.getDocument();g=[];1==k.length&&k[0].equals(a.root)&&(d=b.createElement(\"div\"),k[0].moveChildren&&k[0].moveChildren(d),k[0].append(d),k[0]=d);a=a.contents[0].getParent();\nfor(l=0;l<k.length;l++)a=a.getCommonAncestor(k[l].getParent());p=m.config.useComputedState;m=d=void 0;p=void 0===p||p;for(l=0;l<k.length;l++)for(o=k[l];s=o.getParent();){if(s.equals(a)){g.push(o);!m&&o.getDirection()&&(m=1);o=o.getDirection(p);null!==d&&(d=d&&d!=o?null:o);break}o=s}if(!(1>g.length)){k=g[g.length-1].getNext();l=b.createElement(this.type);e.push(l);for(p=e=void 0;g.length;)e=g.shift(),p=b.createElement(\"li\"),e.is(\"pre\")||G.test(e.getName())?e.appendTo(p):(e.copyAttributes(p),d&&e.getDirection()&&\n(p.removeStyle(\"direction\"),p.removeAttribute(\"dir\")),e.moveChildren(p),e.remove()),p.appendTo(l);d&&m&&l.setAttribute(\"dir\",d);k?l.insertBefore(k):l.appendTo(a)}}else this.state==CKEDITOR.TRISTATE_ON&&r[d.root.getName()]&&C.call(this,c,d,h);for(l=0;l<n.length;l++)A(n[l]);CKEDITOR.dom.element.clearAllMarkers(h);f.selectBookmarks(j);c.focus()},refresh:function(c,j){var f=j.contains(r,1),b=j.blockLimit||j.root;f&&b.contains(f)?this.setState(f.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):\nthis.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add(\"list\",{init:function(c){c.blockless||(c.addCommand(\"numberedlist\",new x(\"numberedlist\",\"ol\")),c.addCommand(\"bulletedlist\",new x(\"bulletedlist\",\"ul\")),c.ui.addButton&&(c.ui.addButton(\"NumberedList\",{label:c.lang.list.numberedlist,command:\"numberedlist\",directional:!0,toolbar:\"list,10\"}),c.ui.addButton(\"BulletedList\",{label:c.lang.list.bulletedlist,command:\"bulletedlist\",directional:!0,toolbar:\"list,20\"})),c.on(\"key\",function(j){var f=j.data.keyCode;\nif(c.mode==\"wysiwyg\"&&f in{8:1,46:1}){var b=c.getSelection().getRanges()[0],i=b.startPath();if(b.collapsed){var i=new CKEDITOR.dom.elementPath(b.startContainer),e=f==8,h=c.editable(),g=new CKEDITOR.dom.walker(b.clone());g.evaluator=function(a){return q(a)&&!u(a)};g.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(\"table\"))};f=b.clone();if(e){var a,d;if((a=i.contains(r))&&b.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is(\"li\")&&(a=w(a))){d=a;a=a.getPrevious(q);f.moveToPosition(a&&\nu(a)?a:d,CKEDITOR.POSITION_BEFORE_START)}else{g.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START);g.range.setEnd(b.startContainer,b.startOffset);if((a=g.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in r||a.is(\"li\"))){if(!a.is(\"li\")){g.range.selectNodeContents(a);g.reset();g.evaluator=B;a=g.previous()}d=a;f.moveToElementEditEnd(d)}}if(d){v(c,f,b);j.cancel()}else if((f=i.contains(r))&&b.checkBoundaryOfElement(f,CKEDITOR.START)){d=f.getFirst(q);if(b.checkBoundaryOfElement(d,CKEDITOR.START)){a=\nf.getPrevious(q);if(w(d)){if(a){b.moveToElementEditEnd(a);b.select()}}else c.execCommand(\"outdent\");j.cancel()}}}else if(d=i.contains(\"li\")){g.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);h=(i=d.getLast(q))&&B(i)?i:d;d=0;if((a=g.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in r&&a.equals(i)){d=1;a=g.next()}else b.checkBoundaryOfElement(h,CKEDITOR.END)&&(d=1);if(d&&a){b=b.clone();b.moveToElementEditStart(a);v(c,f,b);j.cancel()}}else{g.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);if((a=g.next())&&\na.type==CKEDITOR.NODE_ELEMENT&&a.is(r)){a=a.getFirst(q);if(i.block&&b.checkStartOfBlock()&&b.checkEndOfBlock()){i.block.remove();b.moveToElementEditStart(a);b.select()}else if(w(a)){b.moveToElementEditStart(a);b.select()}else{b=b.clone();b.moveToElementEditStart(a);v(c,f,b)}j.cancel()}}setTimeout(function(){c.selectionChange(1)})}}}))}})})();(function(){function p(d,i){this.name=i;if(this.useIndentClasses=d.config.indentClasses&&0<d.config.indentClasses.length){this.classNameRegex=RegExp(\"(?:^|\\\\s+)(\"+d.config.indentClasses.join(\"|\")+\")(?=$|\\\\s)\");this.indentClassMap={};for(var a=0;a<d.config.indentClasses.length;a++)this.indentClassMap[d.config.indentClasses[a]]=a+1}this.startDisabled=\"outdent\"==i}function r(d,i){return\"ltr\"==(i||d.getComputedStyle(\"direction\"))?\"margin-left\":\"margin-right\"}function q(d){return d.type==CKEDITOR.NODE_ELEMENT&&\nd.is(\"li\")}var m={ol:1,ul:1},t=CKEDITOR.dom.walker.whitespaces(!0),u=CKEDITOR.dom.walker.bookmark(!1,!0);p.prototype={context:\"p\",refresh:function(d,i){var a=i&&i.contains(m),f=i.block||i.blockLimit;a?this.setState(CKEDITOR.TRISTATE_OFF):!this.useIndentClasses&&\"indent\"==this.name?this.setState(CKEDITOR.TRISTATE_OFF):f?this.useIndentClasses?(a=f.$.className.match(this.classNameRegex),f=0,a&&(a=a[1],f=this.indentClassMap[a]),\"outdent\"==this.name&&!f||\"indent\"==this.name&&f==d.config.indentClasses.length?\nthis.setState(CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_OFF)):(a=parseInt(f.getStyle(r(f)),10),isNaN(a)&&(a=0),0>=a?this.setState(CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_OFF)):this.setState(CKEDITOR.TRISTATE_DISABLED)},exec:function(d){function i(n){for(var h=l.startContainer,b=l.endContainer;h&&!h.getParent().equals(n);)h=h.getParent();for(;b&&!b.getParent().equals(n);)b=b.getParent();if(h&&b){for(var c=h,h=[],a=!1;!a;)c.equals(b)&&(a=!0),h.push(c),c=c.getNext();\nif(!(1>h.length)){c=n.getParents(!0);for(b=0;b<c.length;b++)if(c[b].getName&&m[c[b].getName()]){n=c[b];break}for(var c=\"indent\"==e.name?1:-1,b=h[0],h=h[h.length-1],a=CKEDITOR.plugins.list.listToArray(n,o),k=a[h.getCustomData(\"listarray_index\")].indent,b=b.getCustomData(\"listarray_index\");b<=h.getCustomData(\"listarray_index\");b++)if(a[b].indent+=c,0<c){var i=a[b].parent;a[b].parent=new CKEDITOR.dom.element(i.getName(),i.getDocument())}for(b=h.getCustomData(\"listarray_index\")+1;b<a.length&&a[b].indent>\nk;b++)a[b].indent+=c;h=CKEDITOR.plugins.list.arrayToList(a,o,null,d.config.enterMode,n.getDirection());if(\"outdent\"==e.name){var j;if((j=n.getParent())&&j.is(\"li\"))for(var c=h.listNode.getChildren(),f=[],g,b=c.count()-1;0<=b;b--)(g=c.getItem(b))&&(g.is&&g.is(\"li\"))&&f.push(g)}h&&h.listNode.replace(n);if(f&&f.length)for(b=0;b<f.length;b++){for(g=n=f[b];(g=g.getNext())&&g.is&&g.getName()in m;)CKEDITOR.env.ie&&!n.getFirst(function(b){return t(b)&&u(b)})&&n.append(l.document.createText(\" \")),n.append(g);\nn.insertAfter(j)}}}}function a(){var a=l.createIterator(),e=d.config.enterMode;a.enforceRealBlocks=!0;a.enlargeBr=e!=CKEDITOR.ENTER_BR;for(var b;b=a.getNextParagraph(e==CKEDITOR.ENTER_P?\"p\":\"div\");)f(b)}function f(a,g){if(a.getCustomData(\"indent_processed\"))return!1;if(e.useIndentClasses){var b=a.$.className.match(e.classNameRegex),c=0;b&&(b=b[1],c=e.indentClassMap[b]);\"outdent\"==e.name?c--:c++;if(0>c)return!1;c=Math.min(c,d.config.indentClasses.length);c=Math.max(c,0);a.$.className=CKEDITOR.tools.ltrim(a.$.className.replace(e.classNameRegex,\n\"\"));0<c&&a.addClass(d.config.indentClasses[c-1])}else{b=r(a,g);c=parseInt(a.getStyle(b),10);isNaN(c)&&(c=0);var f=d.config.indentOffset||40,c=c+(\"indent\"==e.name?1:-1)*f;if(0>c)return!1;c=Math.max(c,0);c=Math.ceil(c/f)*f;a.setStyle(b,c?c+(d.config.indentUnit||\"px\"):\"\");\"\"===a.getAttribute(\"style\")&&a.removeAttribute(\"style\")}CKEDITOR.dom.element.setMarker(o,a,\"indent_processed\",1);return!0}for(var e=this,o={},g=d.getSelection(),v=g.createBookmarks(1),l,p=(g&&g.getRanges(1)).createIterator();l=p.getNextRange();){for(var j=\nl.getCommonAncestor();j&&!(j.type==CKEDITOR.NODE_ELEMENT&&m[j.getName()]);)j=j.getParent();if(!j){var k=l.getEnclosedNode();k&&(k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in m)&&(l.setStartAt(k,CKEDITOR.POSITION_AFTER_START),l.setEndAt(k,CKEDITOR.POSITION_BEFORE_END),j=k)}j&&(l.startContainer.type==CKEDITOR.NODE_ELEMENT&&l.startContainer.getName()in m)&&(k=new CKEDITOR.dom.walker(l),k.evaluator=q,l.startContainer=k.next());j&&(l.endContainer.type==CKEDITOR.NODE_ELEMENT&&l.endContainer.getName()in m)&&\n(k=new CKEDITOR.dom.walker(l),k.evaluator=q,l.endContainer=k.previous());if(j){var k=j.getFirst(q),w=!!k.getNext(q),s=l.startContainer;(!k.equals(s)&&!k.contains(s)||!(\"indent\"==e.name||e.useIndentClasses||parseInt(j.getStyle(r(j)),10))||!f(j,!w&&k.getDirection()))&&i(j)}else a()}CKEDITOR.dom.element.clearAllMarkers(o);d.forceNextSelectionCheck();g.selectBookmarks(v)}};CKEDITOR.plugins.add(\"indent\",{requires:\"list\",onLoad:function(){(CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat)&&CKEDITOR.addCss(\".cke_editable ul,.cke_editable ol{\\tmargin-left: 0px;\\tpadding-left: 40px;}\")},\ninit:function(d){d.blockless||(d.addCommand(\"indent\",new p(d,\"indent\")),d.addCommand(\"outdent\",new p(d,\"outdent\")),d.ui.addButton&&(d.ui.addButton(\"Indent\",{label:d.lang.indent.indent,command:\"indent\",directional:!0,toolbar:\"indent,20\"}),d.ui.addButton(\"Outdent\",{label:d.lang.indent.outdent,command:\"outdent\",directional:!0,toolbar:\"indent,10\"})),d.on(\"dirChanged\",function(i){var a=d.createRange();a.setStartBefore(i.data.node);a.setEndAfter(i.data.node);for(var f=new CKEDITOR.dom.walker(a),e;e=f.next();)if(e.type==\nCKEDITOR.NODE_ELEMENT)if(!e.equals(i.data.node)&&e.getDirection()){a.setStartAfter(e);f=new CKEDITOR.dom.walker(a)}else{var o=d.config.indentClasses;if(o)for(var g=i.data.dir==\"ltr\"?[\"_rtl\",\"\"]:[\"\",\"_rtl\"],m=0;m<o.length;m++)if(e.hasClass(o[m]+g[0])){e.removeClass(o[m]+g[0]);e.addClass(o[m]+g[1])}o=e.getStyle(\"margin-right\");g=e.getStyle(\"margin-left\");o?e.setStyle(\"margin-left\",o):e.removeStyle(\"margin-left\");g?e.setStyle(\"margin-right\",g):e.removeStyle(\"margin-right\")}}))}})})();(function(){function m(a,d,b){b=a.config.forceEnterMode||b;if(\"wysiwyg\"!=a.mode)return!1;d||(d=a.config.enterMode);a.elementPath().isContextFor(\"p\")||(d=CKEDITOR.ENTER_BR,b=1);a.fire(\"saveSnapshot\");d==CKEDITOR.ENTER_BR?n(a,d,null,b):o(a,d,null,b);a.fire(\"saveSnapshot\");return!0}function p(a){for(var a=a.getSelection().getRanges(!0),d=a.length-1;0<d;d--)a[d].deleteContents();return a[0]}CKEDITOR.plugins.add(\"enterkey\",{requires:\"indent\",init:function(a){a.addCommand(\"enter\",{modes:{wysiwyg:1},editorFocus:!1,\nexec:function(a){m(a)}});a.addCommand(\"shiftEnter\",{modes:{wysiwyg:1},editorFocus:!1,exec:function(a){\"wysiwyg\"==a.mode&&m(a,a.config.shiftEnterMode,1)}});a.setKeystroke([[13,\"enter\"],[CKEDITOR.SHIFT+13,\"shiftEnter\"]])}});var s=CKEDITOR.dom.walker.whitespaces(),t=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(a,d,b,i){if(b=b||p(a)){var f=b.document,j=b.checkStartOfBlock(),h=b.checkEndOfBlock(),c=a.elementPath(b.startContainer).block;if(j&&h){if(c&&(c.is(\"li\")||c.getParent().is(\"li\"))){a.execCommand(\"outdent\");\nreturn}if(c&&c.getParent().is(\"blockquote\")){c.breakParent(c.getParent());c.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getPrevious().remove();c.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getNext().remove();b.moveToElementEditStart(c);b.select();return}}else if(c&&c.is(\"pre\")&&!h){n(a,d,b,i);return}var c=d==CKEDITOR.ENTER_DIV?\"div\":\"p\",l=b.splitBlock(c);if(l){var d=l.previousBlock,a=l.nextBlock,j=l.wasStartOfBlock,h=l.wasEndOfBlock,g;if(a)g=a.getParent(),g.is(\"li\")&&(a.breakParent(g),\na.move(a.getNext(),1));else if(d&&(g=d.getParent())&&g.is(\"li\"))d.breakParent(g),g=d.getNext(),b.moveToElementEditStart(g),d.move(d.getPrevious());if(!j&&!h){if(a.is(\"li\")){var e=b.clone();e.selectNodeContents(a);e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return!(t(a)||s(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))};(g=e.next())&&(g.type==CKEDITOR.NODE_ELEMENT&&g.is(\"ul\",\"ol\"))&&(CKEDITOR.env.ie?f.createText(\" \"):f.createElement(\"br\")).insertBefore(g)}a&&\nb.moveToElementEditStart(a)}else{var k;if(d){if(d.is(\"li\")||!q.test(d.getName())&&!d.is(\"pre\"))e=d.clone()}else a&&(e=a.clone());e?i&&!e.is(\"li\")&&e.renameNode(c):g&&g.is(\"li\")?e=g:(e=f.createElement(c),d&&(k=d.getDirection())&&e.setAttribute(\"dir\",k));if(f=l.elementPath){i=0;for(g=f.elements.length;i<g;i++){k=f.elements[i];if(k.equals(f.block)||k.equals(f.blockLimit))break;CKEDITOR.dtd.$removeEmpty[k.getName()]&&(k=k.clone(),e.moveChildren(k),e.append(k))}}CKEDITOR.env.ie||e.appendBogus();e.getParent()||\nb.insertNode(e);e.is(\"li\")&&e.removeAttribute(\"value\");if(CKEDITOR.env.ie&&j&&(!h||!d.getChildCount()))b.moveToElementEditStart(h?d:e),b.select();b.moveToElementEditStart(j&&!h?a:e)}b.select();b.scrollIntoView()}}},enterBr:function(a,d,b,i){if(b=b||p(a)){var f=b.document,j=b.checkEndOfBlock(),h=new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),c=h.block,h=c&&h.block.getName();!i&&\"li\"==h?o(a,d,b,i):(!i&&j&&q.test(h)?(j=c.getDirection())?(f=f.createElement(\"div\"),f.setAttribute(\"dir\",\nj),f.insertAfter(c),b.setStart(f,0)):(f.createElement(\"br\").insertAfter(c),CKEDITOR.env.gecko&&f.createText(\"\").insertAfter(c),b.setStartAt(c.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(c=\"pre\"==h&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?f.createText(\"\\r\"):f.createElement(\"br\"),b.deleteContents(),b.insertNode(c),CKEDITOR.env.ie?b.setStartAt(c,CKEDITOR.POSITION_AFTER_END):(f.createText(\"﻿\").insertAfter(c),j&&c.getParent().appendBogus(),c.getNext().$.nodeValue=\n\"\",b.setStartAt(c.getNext(),CKEDITOR.POSITION_AFTER_START))),b.collapse(!0),b.select(),b.scrollIntoView())}}};var r=CKEDITOR.plugins.enterkey,n=r.enterBr,o=r.enterBlock,q=/^h[1-6]$/})();(function(){function j(a,b){var d={},e=[],f={nbsp:\" \",shy:\"­\",gt:\">\",lt:\"<\",amp:\"&\",apos:\"'\",quot:'\"'},a=a.replace(/\\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(a,h){var c=b?\"&\"+h+\";\":f[h];d[c]=b?f[h]:\"&\"+h+\";\";e.push(c);return\"\"});if(!b&&a){var a=a.split(\",\"),c=document.createElement(\"div\"),g;c.innerHTML=\"&\"+a.join(\";&\")+\";\";g=c.innerHTML;c=null;for(c=0;c<g.length;c++){var i=g.charAt(c);d[i]=\"&\"+a[c]+\";\";e.push(i)}}d.regex=e.join(b?\"|\":\"\");return d}CKEDITOR.plugins.add(\"entities\",{afterInit:function(a){var b=\na.config;if(a=(a=a.dataProcessor)&&a.htmlFilter){var d=[];!1!==b.basicEntities&&d.push(\"nbsp,gt,lt,amp\");b.entities&&(d.length&&d.push(\"quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro\"),\nb.entities_latin&&d.push(\"Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml\"),b.entities_greek&&d.push(\"Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv\"),\nb.entities_additional&&d.push(b.entities_additional));var e=j(d.join(\",\")),f=e.regex?\"[\"+e.regex+\"]\":\"a^\";delete e.regex;b.entities&&b.entities_processNumerical&&(f=\"[^ -~]|\"+f);var f=RegExp(f,\"g\"),c=function(a){return b.entities_processNumerical==\"force\"||!e[a]?\"&#\"+a.charCodeAt(0)+\";\":e[a]},g=j(\"nbsp,gt,lt,amp,shy\",!0),i=RegExp(g.regex,\"g\"),k=function(a){return g[a]};a.addRules({text:function(a){return a.replace(i,k).replace(f,c)}})}}})})();CKEDITOR.config.basicEntities=!0;\nCKEDITOR.config.entities=!0;CKEDITOR.config.entities_latin=!0;CKEDITOR.config.entities_greek=!0;CKEDITOR.config.entities_additional=\"#39\";CKEDITOR.plugins.add(\"popup\");\nCKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(e,a,b,d){a=a||\"80%\";b=b||\"70%\";\"string\"==typeof a&&(1<a.length&&\"%\"==a.substr(a.length-1,1))&&(a=parseInt(window.screen.width*parseInt(a,10)/100,10));\"string\"==typeof b&&(1<b.length&&\"%\"==b.substr(b.length-1,1))&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>a&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10),d=(d||\"location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes\")+\",width=\"+\na+\",height=\"+b+\",top=\"+f+\",left=\"+g,c=window.open(\"\",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(\" chrome/\")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+\"=\"+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf(\"?\")?\"&\":\"?\")+d.join(\"&\")}function i(a){a+=\"\";return a.charAt(0).toUpperCase()+a.substr(1)}function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config[\"filebrowser\"+i(a.getName())+\"WindowWidth\"]||c.config.filebrowserWindowWidth||\"80%\",a=c.config[\"filebrowser\"+i(a.getName())+\"WindowHeight\"]||c.config.filebrowserWindowHeight||\"70%\",\nb=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getInputElement().$.value||!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getAction()?!1:!0}function m(a,c,d){var b=d.params||{};\nb.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function j(a,c,d,b){var e,g;for(g in b)if(e=b[g],(\"hbox\"==e.type||\"vbox\"==e.type||\"fieldset\"==e.type)&&j(a,c,d,e.children),e.filebrowser)if(\"string\"==typeof e.filebrowser&&(e.filebrowser={action:\"fileButton\"==e.type?\"QuickUpload\":\"Browse\",target:e.filebrowser}),\"Browse\"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config[\"filebrowser\"+i(c)+\"BrowseUrl\"],void 0===\nf&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=k,e.filebrowser.url=f,e.hidden=!1)}else if(\"QuickUpload\"==e.filebrowser.action&&e[\"for\"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config[\"filebrowser\"+i(c)+\"UploadUrl\"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;return h&&h.call(b,a)===false?false:l.call(b,a)};e.filebrowser.url=f;e.hidden=!1;m(a,d.getContents(e[\"for\"][0]).get(e[\"for\"][1]),e.filebrowser)}}function h(a,c,d){if(-1!==d.indexOf(\";\")){for(var d=\nd.split(\";\"),b=0;b<d.length;b++)if(h(a,c,d[b]))return!0;return!1}return(a=a.getContents(c).get(d).filebrowser)&&a.url}function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrowserSe[\"for\"],e=this._.filebrowserSe.filebrowser.onSelect;b&&d.getContentElement(b[0],b[1]).reset();if(!(\"function\"==typeof c&&!1===c.call(this._.filebrowserSe))&&!(e&&!1===e.call(this._.filebrowserSe,a,c))&&(\"string\"==typeof c&&c&&alert(c),a&&(b=this._.filebrowserSe,d=b.getDialog(),b=b.filebrowser.target||null)))if(b=\nb.split(\":\"),e=d.getContentElement(b[0],b[1]))e.setValue(a),d.selectPage(b[0])}CKEDITOR.plugins.add(\"filebrowser\",{requires:\"popup\",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(n,a);a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on(\"dialogDefinition\",function(a){var c=a.data.definition,d,b;for(b in c.contents)if(d=c.contents[b])j(a.editor,a.data.name,c,d.elements),d.hidden&&d.filebrowser&&(d.hidden=!h(c,d.id,d.filebrowser))})})();(function(){function t(a){var e=\"left\"==a?\"pageXOffset\":\"pageYOffset\";return e in g.$?g.$[e]:CKEDITOR.document.$.documentElement[\"left\"==a?\"scrollLeft\":\"scrollTop\"]}function p(a){var e,f=a.config,p=f.floatSpaceDockedOffsetX||0,o=f.floatSpaceDockedOffsetY||0,u=f.floatSpacePinnedOffsetX||0,q=f.floatSpacePinnedOffsetY||0,i=function(c){function f(a,c,b){d.setStyle(c,s(b));d.setStyle(\"position\",a)}function j(a){var c=n.getDocumentPosition();switch(a){case \"top\":f(\"absolute\",\"top\",c.y-l-o);break;case \"pin\":f(\"fixed\",\n\"top\",q);break;case \"bottom\":f(\"absolute\",\"top\",c.y+(b.height||b.bottom-b.top)+o)}e=a}\"focus\"==c.name&&d.show();d.removeStyle(\"left\");d.removeStyle(\"right\");var n=a.editable(),k=d.getClientRect(),b=n.getClientRect(),l=k.height,r=t(\"left\");if(e){\"top\"==e&&k.top<q?j(\"pin\"):\"pin\"==e?b.top>o+l?j(\"top\"):b.bottom-k.bottom<l&&j(\"bottom\"):\"bottom\"==e&&(b.top>o+l?j(\"top\"):b.bottom>2*l+q&&j(\"pin\"));var c=g.getViewPaneSize(),h=c.width/2,h=0<b.left&&b.right<c.width&&b.width>k.width?\"rtl\"==a.config.contentsLangDirection?\n\"right\":\"left\":h-b.left>b.right-h?\"left\":\"right\",m;k.width>c.width?(h=\"left\",m=0):(m=\"left\"==h?0<b.left?b.left:0:b.right<c.width?c.width-b.right:0,m+k.width>c.width&&(h=\"left\"==h?\"right\":\"left\",m=0));d.setStyle(h,s((\"pin\"==e?u:p)+m+(\"pin\"==e?0:r)))}else e=\"pin\",j(\"pin\"),i(c)},f=CKEDITOR.document.getBody(),r={id:a.id,name:a.name,langDir:a.lang.dir,langCode:a.langCode},n=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html;if(n){var d=f.append(CKEDITOR.dom.element.createFromHtml(v.output(CKEDITOR.tools.extend({topId:a.ui.spaceId(\"top\"),\ncontent:n,style:\"display:none;z-index:\"+(a.config.baseFloatZIndex-1)},r))));d.unselectable();d.on(\"mousedown\",function(a){a=a.data;a.getTarget().hasAscendant(\"a\",1)||a.preventDefault()});a.on(\"focus\",function(a){i(a);g.on(\"scroll\",i);g.on(\"resize\",i)});a.on(\"blur\",function(){d.hide();g.removeListener(\"scroll\",i);g.removeListener(\"resize\",i)});a.on(\"destroy\",function(){g.removeListener(\"scroll\",i);g.removeListener(\"resize\",i);d.clearCustomData();d.remove()});a.focusManager.hasFocus&&d.show();a.focusManager.add(d,\n1)}}var v=CKEDITOR.addTemplate(\"floatcontainer\",'<div id=\"cke_{name}\" class=\"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'\" dir=\"{langDir}\" title=\"'+(CKEDITOR.env.gecko?\" \":\"\")+'\" lang=\"{langCode}\" role=\"application\" style=\"{style}\"><div class=\"cke_inner\"><div id=\"{topId}\" class=\"cke_top\" role=\"presentation\">{content}</div></div></div>');CKEDITOR.plugins.add(\"floatingspace\",{init:function(a){a.on(\"contentDom\",function(){p(a)})}});var g=CKEDITOR.document.getWindow(),\ns=CKEDITOR.tools.cssLength})();CKEDITOR.plugins.add(\"listblock\",{requires:\"panel\",onLoad:function(){var e=CKEDITOR.addTemplate(\"panel-list\",'<ul role=\"presentation\" class=\"cke_panel_list\">{items}</ul>'),f=CKEDITOR.addTemplate(\"panel-list-item\",'<li id=\"{id}\" class=\"cke_panel_listItem\" role=presentation><a id=\"{id}_option\" _cke_focus=1 hidefocus=true title=\"{title}\" href=\"javascript:void(\\'{val}\\')\"  {onclick}=\"CKEDITOR.tools.callFunction({clickFn},\\'{val}\\'); return false;\" role=\"option\">{text}</a></li>'),g=CKEDITOR.addTemplate(\"panel-list-group\",\n'<h1 id=\"{id}\" class=\"cke_panel_grouptitle\" role=\"presentation\" >{label}</h1>');CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var b=b||{},c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c[\"aria-multiselectable\"]=!0);!c.role&&(c.role=\"listbox\");this.base.apply(this,arguments);c=this.keys;c[40]=\"next\";\nc[9]=\"next\";c[38]=\"prev\";c[CKEDITOR.SHIFT+9]=\"prev\";c[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(c[13]=\"mouseup\");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=e.output({items:this._.pendingList.join(\"\")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,\nb)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;a={id:d,val:a,onclick:CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\",clickFn:this._.getClick(),title:c||a,text:b||a};this._.pendingList.push(f.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(g.output({id:b,label:a}))},commit:function(){this._.close();\nthis.element.appendHtml(this._.pendingHtml.join(\"\"));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle(\"display\",\"none\"),b&&\"ul\"==b.getName()&&b.setStyle(\"display\",\"none\"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle(\"display\",\"none\")},showAll:function(){var a=this._.items,b=\nthis._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle(\"display\",\"\");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle(\"display\",\"\"),d&&\"ul\"==d.getName()&&d.setStyle(\"display\",\"\")},mark:function(a){this.multiSelect||this.unmarkAll();var a=this._.items[a],b=this.element.getDocument().getById(a);b.addClass(\"cke_selected\");this.element.getDocument().getById(a+\"_option\").setAttribute(\"aria-selected\",!0);this.onMark&&this.onMark(b)},unmark:function(a){var b=this.element.getDocument(),\na=this._.items[a],c=b.getById(a);c.removeClass(\"cke_selected\");b.getById(a+\"_option\").removeAttribute(\"aria-selected\");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass(\"cke_selected\");b.getById(d+\"_option\").removeAttribute(\"aria-selected\")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass(\"cke_selected\")},focus:function(a){this._.focusIndex=\n-1;if(a){for(var b=this.element.getDocument().getById(this._.items[a]).getFirst(),a=this.element.getElementsByTag(\"a\"),c,d=-1;c=a.getItem(++d);)if(c.equals(b)){this._.focusIndex=d;break}setTimeout(function(){b.focus()},0)}}}})}});CKEDITOR.plugins.add(\"richcombo\",{requires:\"floatpanel,listblock,button\",beforeInit:function(c){c.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}});\n(function(){var c='<span id=\"{id}\" class=\"cke_combo cke_combo__{name} {cls}\" role=\"presentation\"><span id=\"{id}_label\" class=\"cke_combo_label\">{label}</span><a class=\"cke_combo_button\" hidefocus=true title=\"{title}\" tabindex=\"-1\"'+(CKEDITOR.env.gecko&&10900<=CKEDITOR.env.version&&!CKEDITOR.env.hc?\"\":'\" href=\"javascript:void(\\'{titleJs}\\')\"')+' hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"true\"';if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c+=' onkeypress=\"return false;\"';\nCKEDITOR.env.gecko&&(c+=' onblur=\"this.style.cssText = this.style.cssText;\"');var c=c+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event,this);\" onmousedown=\"return CKEDITOR.tools.callFunction({mousedownFn},event);\"  onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span id=\"{id}_text\" class=\"cke_combo_text cke_combo_inlinelabel\">{label}</span><span class=\"cke_combo_open\"><span class=\"cke_combo_arrow\">'+\n(CKEDITOR.env.hc?\"&#9660;\":CKEDITOR.env.air?\"&nbsp;\":\"\")+\"</span></span></a></span>\"),h=CKEDITOR.addTemplate(\"combo\",c);CKEDITOR.UI_RICHCOMBO=\"richcombo\";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className=\"cke_combopanel\";a.block={multiSelect:a.multiSelect,\nattributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join(\"\")},render:function(a,b){function j(){var d=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;this.setState(a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:d);this.setValue(\"\")}var c=CKEDITOR.env,g=\"cke_\"+this.id,e=CKEDITOR.tools.addFunction(function(b){i&&(a.unlockSelection(1),i=0);d.execute(b)},this),f=this,d={id:g,combo:this,\nfocus:function(){CKEDITOR.document.getById(g).getChild(1).focus()},execute:function(d){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var c=f.getValue();c?b.list.mark(c):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(d),4)}},clickFn:e};a.on(\"mode\",j,this);!this.readOnly&&a.on(\"readOnly\",j,this);var k=CKEDITOR.tools.addFunction(function(a,b){var a=new CKEDITOR.dom.event(a),c=a.getKeystroke();switch(c){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,\nb);break;default:d.onkey(d,c)}a.preventDefault()}),l=CKEDITOR.tools.addFunction(function(){d.onfocus&&d.onfocus()}),i=0,m=CKEDITOR.tools.addFunction(function(){if(CKEDITOR.env.opera){var b=a.editable();b.isInline()&&b.hasFocus&&(a.lockSelection(),i=1)}});d.keyDownFn=k;c={id:g,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||\"\",titleJs:c.gecko&&10900<=c.version&&!c.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),keydownFn:k,mousedownFn:m,focusFn:l,clickFn:e};h.output(c,b);\nif(this.onRender)this.onRender();return d},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,c=this._.panelDefinition.block,h=b.parent||CKEDITOR.document.getBody(),g=\"cke_combopanel__\"+this.name,e=new CKEDITOR.ui.floatPanel(a,h,b),f=e.addListBlock(this.id,c),d=this;e.onShow=function(){this.element.addClass(g);d.setState(CKEDITOR.TRISTATE_ON);f.focus(!f.multiSelect&&d.getValue());d._.on=1;d.editorFocus&&a.focus();if(d.onOpen)d.onOpen()};e.onHide=function(b){this.element.removeClass(g);\nd.setState(d.modes&&d.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);d._.on=0;if(!b&&d.onClose)d.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){d.onClick&&d.onClick.call(d,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){d._.on=0;d.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var c=this.document.getById(\"cke_\"+this.id+\"_text\");c&&(!a&&!b?(b=this.label,c.addClass(\"cke_combo_inlinelabel\")):\nc.removeClass(\"cke_combo_inlinelabel\"),c.setText(\"undefined\"!=typeof b?b:a))},getValue:function(){return this._.value||\"\"},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},showAll:function(){this._.list.showAll()},add:function(a,b,c){this._.items[a]=c||a;this._.list.add(a,b,c)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),\nthis._.committed=1,CKEDITOR.ui.fire(\"ready\",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById(\"cke_\"+this.id);b.setState(a,\"cke_combo\");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute(\"aria-disabled\",!0):b.removeAttribute(\"aria-disabled\");this._.state=a}},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},\nstatics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();CKEDITOR.plugins.add(\"format\",{requires:\"richcombo\",init:function(a){if(!a.blockless){for(var g=a.config,c=a.lang.format,j=g.format_tags.split(\";\"),d={},h=0;h<j.length;h++){var i=j[h];d[i]=new CKEDITOR.style(g[\"format_\"+i]);d[i]._.enterMode=a.config.enterMode}a.ui.addRichCombo(\"Format\",{label:c.label,title:c.panelTitle,toolbar:\"styles,20\",panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(g.contentsCss),multiSelect:!1,attributes:{\"aria-label\":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);\nfor(var a in d){var e=c[\"tag_\"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire(\"saveSnapshot\");var b=d[b],e=a.elementPath();a[b.checkActive(e)?\"removeStyle\":\"applyStyle\"](b);setTimeout(function(){a.fire(\"saveSnapshot\")},0)},onRender:function(){a.on(\"selectionChange\",function(b){var e=this.getValue(),b=b.data.path,c=!a.readOnly&&b.isContextFor(\"p\");this[c?\"enable\":\"disable\"]();if(c){for(var f in d)if(d[f].checkActive(b)){f!=e&&this.setValue(f,a.lang.format[\"tag_\"+f]);return}this.setValue(\"\")}},\nthis)}})}}});CKEDITOR.config.format_tags=\"p;h1;h2;h3;h4;h5;h6;pre;address;div\";CKEDITOR.config.format_p={element:\"p\"};CKEDITOR.config.format_div={element:\"div\"};CKEDITOR.config.format_pre={element:\"pre\"};CKEDITOR.config.format_address={element:\"address\"};CKEDITOR.config.format_h1={element:\"h1\"};CKEDITOR.config.format_h2={element:\"h2\"};CKEDITOR.config.format_h3={element:\"h3\"};CKEDITOR.config.format_h4={element:\"h4\"};CKEDITOR.config.format_h5={element:\"h5\"};CKEDITOR.config.format_h6={element:\"h6\"};CKEDITOR.plugins.add(\"htmlwriter\",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||\"\\t\";b.dataProcessor.writer=a}});\nCKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars=\"\\t\";this.selfClosingEnd=\" />\";this.lineBreakChars=\"\\n\";this.sortAttributes=1;this._.indent=0;this._.indentation=\"\";this._.inPre=0;this._.rules={};var b=CKEDITOR.dtd,a;for(a in CKEDITOR.tools.extend({},b.$nonBodyContent,b.$block,b.$listItem,b.$tableContent))this.setRules(a,{indent:!b[a][\"#\"],breakBeforeOpen:1,breakBeforeClose:!b[a][\"#\"],breakAfterClose:1,needsSpace:a in\nb.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules(\"br\",{breakAfterOpen:1});this.setRules(\"title\",{indent:0,breakAfterOpen:0});this.setRules(\"style\",{indent:0,breakBeforeClose:1});this.setRules(\"pre\",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&(a&&a.needsSpace&&this._.needsSpace)&&this._.output.push(\"\\n\");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push(\"<\",b);this._.afterCloser=0},\nopenTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push(\">\"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();\"pre\"==b&&(this._.inPre=1)},attribute:function(b,a){\"string\"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,\"&\")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(\" \",b,'=\"',a,'\"')},closeTag:function(b){var a=this._.rules[b];\na&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push(\"</\",b,\">\");\"pre\"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation();\nthis._.output.push(\"<\\!--\",b,\"--\\>\")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation=\"\";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement(\"hr\");a.insertElement(b)}};CKEDITOR.plugins.add(\"horizontalrule\",{init:function(a){a.blockless||(a.addCommand(\"horizontalrule\",b),a.ui.addButton&&a.ui.addButton(\"HorizontalRule\",{label:a.lang.horizontalrule.toolbar,command:\"horizontalrule\",toolbar:\"insert,40\"}))}})})();(function(){function n(a){var c=this.editor,d=a.document,b=d.body;(a=d.getElementById(\"cke_actscrpt\"))&&a.parentNode.removeChild(a);(a=d.getElementById(\"cke_shimscrpt\"))&&a.parentNode.removeChild(a);CKEDITOR.env.gecko&&(b.contentEditable=!1,2E4>CKEDITOR.env.version&&(b.innerHTML=b.innerHTML.replace(/^.*<\\!-- cke-content-start --\\>/,\"\"),setTimeout(function(){var a=new CKEDITOR.dom.range(new CKEDITOR.dom.document(d));a.setStart(new CKEDITOR.dom.node(b),0);c.getSelection().selectRanges([a])},0)));b.contentEditable=\n!0;CKEDITOR.env.ie&&(b.hideFocus=!0,b.disabled=!0,b.removeAttribute(\"disabled\"));delete this._.isLoadingData;this.$=b;d=new CKEDITOR.dom.document(d);this.setup();CKEDITOR.env.ie&&(d.getDocumentElement().addClass(d.$.compatMode),c.config.enterMode!=CKEDITOR.ENTER_P&&d.on(\"selectionchange\",function(){var a=d.getBody(),b=c.getSelection(),e=b&&b.getRanges()[0];e&&(a.getHtml().match(/^<p>&nbsp;<\\/p>$/i)&&e.startContainer.equals(a))&&setTimeout(function(){e=c.getSelection().getRanges()[0];if(!e.startContainer.equals(\"body\")){a.getFirst().remove(1);\ne.moveToElementEditEnd(a);e.select()}},0)}));CKEDITOR.env.gecko&&CKEDITOR.tools.setTimeout(o,0,this,c);try{c.document.$.execCommand(\"2D-position\",!1,!0)}catch(e){}try{c.document.$.execCommand(\"enableInlineTableEditing\",!1,!c.config.disableNativeTableHandles)}catch(f){}if(c.config.disableObjectResizing)try{this.getDocument().$.execCommand(\"enableObjectResizing\",!1,!1)}catch(g){this.attachListener(this,CKEDITOR.env.ie?\"resizestart\":\"resize\",function(a){a.data.preventDefault()})}(CKEDITOR.env.gecko||\nCKEDITOR.env.ie&&\"CSS1Compat\"==c.document.$.compatMode)&&this.attachListener(this,\"keydown\",function(a){var b=a.data.getKeystroke();if(b==33||b==34)if(CKEDITOR.env.ie)setTimeout(function(){c.getSelection().scrollIntoView()},0);else if(c.window.$.innerHeight>this.$.offsetHeight){var d=c.createRange();d[b==33?\"moveToElementEditStart\":\"moveToElementEditEnd\"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(d,\"blur\",function(){try{d.$.selection.empty()}catch(a){}});c.document.getElementsByTag(\"title\").getItem(0).data(\"cke-title\",\nc.document.$.title);CKEDITOR.env.ie&&(c.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){c.fire(\"contentDom\");if(this._.isPendingFocus){c.focus();this._.isPendingFocus=false}setTimeout(function(){c.fire(\"dataReady\")},0);CKEDITOR.env.ie&&setTimeout(function(){if(c.document){var a=c.document.$.body;a.runtimeStyle.marginBottom=\"0px\";a.runtimeStyle.marginBottom=\"\"}},1E3)},0,this)}function p(a){a.checkDirty()||setTimeout(function(){a.resetDirty()},0)}function o(a){if(!a.readOnly){var c=\na.window,d=a.document,b=d.getBody(),e=b.getFirst(),f=b.getChildren().count();if(!f||1==f&&e.type==CKEDITOR.NODE_ELEMENT&&e.hasAttribute(\"_moz_editor_bogus_node\")){p(a);var e=CKEDITOR.document,g=e.getDocumentElement(),h=g.$.scrollTop,i=g.$.scrollLeft,j=d.$.createEvent(\"KeyEvents\");j.initKeyEvent(\"keypress\",!0,!0,c.$,!1,!1,!1,!1,0,32);d.$.dispatchEvent(j);(h!=g.$.scrollTop||i!=g.$.scrollLeft)&&e.getWindow().$.scrollTo(i,h);f&&b.getFirst().remove();d.getBody().appendBogus();a=a.createRange();a.setStartAt(b,\nCKEDITOR.POSITION_AFTER_START);a.select()}}}function q(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push(\"html.CSS1Compat [contenteditable=false]{min-height:0 !important}\");var c=[],d;for(d in CKEDITOR.dtd.$removeEmpty)c.push(\"html.CSS1Compat \"+d+\"[contenteditable=false]\");a.push(c.join(\",\")+\"{display:inline-block}\")}else CKEDITOR.env.gecko&&(a.push(\"html{height:100% !important}\"),a.push(\"img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}\"));a.push(\"html{cursor:text;*cursor:auto}\");\na.push(\"img,input,textarea{cursor:default}\");return a.join(\"\\n\")}CKEDITOR.plugins.add(\"wysiwygarea\",{init:function(a){a.addMode(\"wysiwyg\",function(c){function d(d){d&&d.removeListener();a.editable(new k(a,b.$.contentWindow.document.body));a.setData(a.getData(1),c)}var b=CKEDITOR.document.createElement(\"iframe\");b.setStyles({width:\"100%\",height:\"100%\"});b.addClass(\"cke_wysiwyg_frame cke_reset\");var e=a.ui.space(\"contents\");e.append(b);var f=\"document.open();\"+(l?'document.domain=\"127.0.0.1'+document.domain+\n'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\",f=CKEDITOR.env.air?\"javascript:void(0)\":CKEDITOR.env.ie?\"javascript:void(function(){\"+encodeURIComponent(f)+\"}())\":\"\",g=CKEDITOR.env.ie||CKEDITOR.env.gecko;if(g)b.on(\"load\",d);var h=[a.lang.editor,a.name].join(),i=a.lang.common.editorHelp;CKEDITOR.env.ie&&(h+=\", \"+i);var j=CKEDITOR.tools.getNextId(),m=CKEDITOR.dom.element.createFromHtml('<span id=\"'+j+'\" class=\"cke_voice_label\">'+i+\"</span>\");e.append(m,1);a.on(\"beforeModeUnload\",function(a){a.removeListener();m.remove()});\nb.setAttributes({frameBorder:0,\"aria-describedby\":j,title:h,src:f,tabIndex:a.tabIndex,allowTransparency:\"true\"});!g&&d();CKEDITOR.env.webkit&&(f=function(){e.setStyle(\"width\",\"100%\");b.hide();b.setSize(\"width\",e.getSize(\"width\"));e.removeStyle(\"width\");b.show()},b.setCustomData(\"onResize\",f),CKEDITOR.document.getWindow().on(\"resize\",f));a.fire(\"ariaWidget\",b)})}});var l=CKEDITOR.env.isCustomDomain(),k=CKEDITOR.tools.createClass({$:function(a){this.base.apply(this,arguments);this._.frameLoadedHandler=\nCKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(n,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute(\"title\")},base:CKEDITOR.editable,proto:{setData:function(a,c){var d=this.editor;if(c)this.setHtml(a);else{this._.isLoadingData=!0;d._.dataStore={id:1};var b=d.config,e=b.fullPage,f=b.docType,g=CKEDITOR.tools.buildStyleHtml(q()).replace(/<style>/,'<style data-cke-temp=\"1\">');e||(g+=CKEDITOR.tools.buildStyleHtml(d.config.contentsCss));var h=b.baseHref?'<base href=\"'+\nb.baseHref+'\" data-cke-temp=\"1\" />':\"\";e&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){d.docType=f=a;return\"\"}).replace(/<\\?xml\\s[^\\?]*\\?>/i,function(a){d.xmlDeclaration=a;return\"\"}));d.dataProcessor&&(a=d.dataProcessor.toHtml(a));e?(/<body[\\s|>]/.test(a)||(a=\"<body>\"+a),/<html[\\s|>]/.test(a)||(a=\"<html>\"+a+\"</html>\"),/<head[\\s|>]/.test(a)?/<title[\\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,\"$&<title></title>\")):a=a.replace(/<html[^>]*>/,\"$&<head><title></title></head>\"),h&&(a=a.replace(/<head>/,\"$&\"+\nh)),a=a.replace(/<\\/head\\s*>/,g+\"$&\"),a=f+a):a=b.docType+'<html dir=\"'+b.contentsLangDirection+'\" lang=\"'+(b.contentsLanguage||d.langCode)+'\"><head><title>'+this._.docTitle+\"</title>\"+h+g+\"</head><body\"+(b.bodyId?' id=\"'+b.bodyId+'\"':\"\")+(b.bodyClass?' class=\"'+b.bodyClass+'\"':\"\")+\">\"+a+\"</body></html>\";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'<body contenteditable=\"true\" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,\"$&<\\!-- cke-content-start --\\>\")));b='<script id=\"cke_actscrpt\" type=\"text/javascript\"'+\n(CKEDITOR.env.ie?' defer=\"defer\" ':\"\")+\">\"+(l?'document.domain=\"127.0.0.1'+document.domain+'127.0.0.1\"127.0.0.1':\"\")+\"127.0.0.1\"+this._.frameLoadedHandler+\",window);wasLoaded=1;}\"+(CKEDITOR.env.ie?\"onload();\":'document.addEventListener(\"DOMContentLoaded\", onload, false );')+\"<\\/script>\";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(b+='<script id=\"cke_shimscrpt\">(function(){var e=\"abbr,article,aside,audio,bdi,canvas,data,datalist,details,figcaption,figure,footer,header,hgroup,mark,meter,nav,output,progress,section,summary,time,video\".split(\",\"),i=e.length;while(i--){document.createElement(e[i])}})()<\\/script>');\na=a.replace(/(?=\\s*<\\/(:?head)>)/,b);this.clearCustomData();this.clearListeners();d.fire(\"contentDomUnload\");var i=this.getDocument();try{i.write(a)}catch(j){setTimeout(function(){i.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();var a=this.editor,c=a.config.fullPage,d=c&&a.docType,b=c&&a.xmlDeclaration,e=this.getDocument(),c=c?e.getDocumentElement().getOuterHtml():e.getBody().getHtml();CKEDITOR.env.gecko&&(c=c.replace(/<br>(?=\\s*(:?$|<\\/body>))/,\"\"));a.dataProcessor&&(c=a.dataProcessor.toDataFormat(c));\nb&&(c=b+\"\\n\"+c);d&&(c=d+\"\\n\"+c);return c},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:k.baseProto.focus.call(this)},detach:function(){var a=this.editor,c=a.document,d=a.window.getFrame();k.baseProto.detach.call(this);this.clearCustomData();c.getDocumentElement().clearCustomData();d.clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);(c=d.removeCustomData(\"onResize\"))&&c.removeListener();a.fire(\"contentDomUnload\");d.remove()}}});CKEDITOR.env.gecko&&function(){var a=\ndocument.body;if(a){var c=a.getAttribute(\"onpageshow\");a.setAttribute(\"onpageshow\",(c?c+\";\":\"\")+'event.persisted&&(function(){var x=CKEDITOR.instances,d,i;for(i in x){d=x[i].document;if(d){d.$.designMode=\"off\";d.$.designMode=\"on\";}}})();')}else window.addEventListener(\"load\",arguments.callee,!1)}()})();CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.contentsCss=CKEDITOR.basePath+\"contents.css\";(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(\"img\")&&!a.data(\"cke-realelement\")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle(\"float\");if(\"inherit\"==a||\"none\"==a)a=0;a||(a=b.getAttribute(\"align\"));return a}CKEDITOR.plugins.add(\"image\",{requires:\"dialog\",init:function(b){CKEDITOR.dialog.add(\"image\",this.path+\"dialogs/image.js\");b.addCommand(\"image\",new CKEDITOR.dialogCommand(\"image\"));b.ui.addButton&&b.ui.addButton(\"Image\",{label:b.lang.common.image,\ncommand:\"image\",toolbar:\"insert,10\"});b.on(\"doubleclick\",function(a){var b=a.data.element;b.is(\"img\")&&(!b.data(\"cke-realelement\")&&!b.isReadOnly())&&(a.data.dialog=\"image\")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:\"image\",group:\"image\"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})},afterInit:function(b){function a(a){var d=b.getCommand(\"justify\"+a);if(d){if(\"left\"==a||\"right\"==a)d.on(\"exec\",function(d){var c=\ne(b),g;c&&(g=f(c),g==a?(c.removeStyle(\"float\"),a==f(c)&&c.removeAttribute(\"align\")):c.setStyle(\"float\",a),d.cancel())});d.on(\"refresh\",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:\"right\"==a||\"left\"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}a(\"left\");a(\"right\");a(\"center\");a(\"block\")}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&\"px\"==d[2])return d[1];if(\"px\"==c[2]&&!d[2])return d[1]+\"px\"}return b}var i=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,j=/^((?:\\d*(?:\\.\\d+))|(?:\\d+))(.*)?$/i,l={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b[\"data-cke-realelement\"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes[\"data-cke-resizable\"]){var c=(new i(a)).rules,a=b.attributes,d=c.width,c=\nc.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}},k=CKEDITOR.plugins.add(\"fakeobjects\",{afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(l)}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(a.getOuterHtml()),\"data-cke-real-node-type\":a.type,alt:e,title:e,align:a.getAttribute(\"align\")||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+\n\"images/spacer.gif\"));c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,c=new i,d=a.getAttribute(\"width\"),a=a.getAttribute(\"height\"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement(\"img\",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(f);f=f.getHtml();b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(f),\n\"data-cke-real-node-type\":a.type,alt:e,title:e,align:a.attributes.align||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.getUrl(k.path+\"images/spacer.gif\"));c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,d=a.attributes,a=new i,c=d.width,d=d.height,void 0!=c&&(a.rules.width=h(c)),void 0!=d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element(\"img\",b)};CKEDITOR.editor.prototype.restoreRealElement=function(a){if(a.data(\"cke-real-node-type\")!=CKEDITOR.NODE_ELEMENT)return null;\nvar b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data(\"cke-realelement\")),this.document);if(a.data(\"cke-resizable\")){var c=a.getStyle(\"width\"),a=a.getStyle(\"height\");c&&b.setAttribute(\"width\",g(b.getAttribute(\"width\"),c));a&&b.setAttribute(\"height\",g(b.getAttribute(\"height\"),a))}return b}})();CKEDITOR.plugins.add(\"link\",{requires:\"dialog,fakeobjects\",onLoad:function(){function b(b){return c.replace(/%1/g,\"rtl\"==b?\"right\":\"left\").replace(/%2/g,\"cke_contents_\"+b)}var a=\"background:url(\"+CKEDITOR.getUrl(this.path+\"images/anchor.png\")+\") no-repeat %1 center;border:1px dotted #00f;\",c=\".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{\"+a+\"padding-%1:18px;cursor:auto;}\"+(CKEDITOR.env.ie?\"a.cke_anchor_empty{display:inline-block;}\":\"\")+\".%2 img.cke_anchor{\"+\na+\"width:16px;min-height:15px;height:1.15em;vertical-align:\"+(CKEDITOR.env.opera?\"middle\":\"text-bottom\")+\";}\";CKEDITOR.addCss(b(\"ltr\")+b(\"rtl\"))},init:function(b){b.addCommand(\"link\",new CKEDITOR.dialogCommand(\"link\"));b.addCommand(\"anchor\",new CKEDITOR.dialogCommand(\"anchor\"));b.addCommand(\"unlink\",new CKEDITOR.unlinkCommand);b.addCommand(\"removeAnchor\",new CKEDITOR.removeAnchorCommand);b.setKeystroke(CKEDITOR.CTRL+76,\"link\");b.ui.addButton&&(b.ui.addButton(\"Link\",{label:b.lang.link.toolbar,command:\"link\",\ntoolbar:\"links,10\"}),b.ui.addButton(\"Unlink\",{label:b.lang.link.unlink,command:\"unlink\",toolbar:\"links,20\"}),b.ui.addButton(\"Anchor\",{label:b.lang.link.anchor.toolbar,command:\"anchor\",toolbar:\"links,30\"}));CKEDITOR.dialog.add(\"link\",this.path+\"dialogs/link.js\");CKEDITOR.dialog.add(\"anchor\",this.path+\"dialogs/anchor.js\");b.on(\"doubleclick\",function(a){var c=CKEDITOR.plugins.link.getSelectedLink(b)||a.data.element;if(!c.isReadOnly())if(c.is(\"a\")){a.data.dialog=c.getAttribute(\"name\")&&(!c.getAttribute(\"href\")||\n!c.getChildCount())?\"anchor\":\"link\";b.getSelection().selectElement(c)}else if(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,c))a.data.dialog=\"anchor\"});b.addMenuItems&&b.addMenuItems({anchor:{label:b.lang.link.anchor.menu,command:\"anchor\",group:\"anchor\",order:1},removeAnchor:{label:b.lang.link.anchor.remove,command:\"removeAnchor\",group:\"anchor\",order:5},link:{label:b.lang.link.menu,command:\"link\",group:\"link\",order:1},unlink:{label:b.lang.link.unlink,command:\"unlink\",group:\"link\",order:5}});b.contextMenu&&\nb.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(b)))return null;var c={};a.getAttribute(\"href\")&&a.getChildCount()&&(c={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});if(a&&a.hasAttribute(\"name\"))c.anchor=c.removeAnchor=CKEDITOR.TRISTATE_OFF;return c})},afterInit:function(b){var a=b.dataProcessor,c=a&&a.dataFilter,a=a&&a.htmlFilter,d=b._.elementsPath&&b._.elementsPath.filters;\nc&&c.addRules({elements:{a:function(a){var c=a.attributes;if(!c.name)return null;var d=!a.children.length;if(CKEDITOR.plugins.link.synAnchorSelector){var a=d?\"cke_anchor_empty\":\"cke_anchor\",e=c[\"class\"];if(c.name&&(!e||0>e.indexOf(a)))c[\"class\"]=(e||\"\")+\" \"+a;d&&CKEDITOR.plugins.link.emptyAnchorFix&&(c.contenteditable=\"false\",c[\"data-cke-editable\"]=1)}else if(CKEDITOR.plugins.link.fakeAnchor&&d)return b.createFakeParserElement(a,\"cke_anchor\",\"anchor\");return null}}});CKEDITOR.plugins.link.emptyAnchorFix&&\na&&a.addRules({elements:{a:function(a){delete a.attributes.contenteditable}}});d&&d.push(function(a,c){if(\"a\"==c&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,a)||a.getAttribute(\"name\")&&(!a.getAttribute(\"href\")||!a.getChildCount())))return\"anchor\"})}});\nCKEDITOR.plugins.link={getSelectedLink:function(b){var a=b.getSelection(),c=a.getSelectedElement();return c&&c.is(\"a\")?c:(a=a.getRanges(!0)[0])?(a.shrink(CKEDITOR.SHRINK_TEXT),b.elementPath(a.getCommonAncestor()).contains(\"a\",1)):null},fakeAnchor:CKEDITOR.env.opera||CKEDITOR.env.webkit,synAnchorSelector:CKEDITOR.env.ie,emptyAnchorFix:CKEDITOR.env.ie&&8>CKEDITOR.env.version,tryRestoreFakeAnchor:function(b,a){if(a&&a.data(\"cke-real-element-type\")&&\"anchor\"==a.data(\"cke-real-element-type\")){var c=b.restoreRealElement(a);\nif(c.data(\"cke-saved-name\"))return c}}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(b){var a=new CKEDITOR.style({element:\"a\",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});b.removeStyle(a)},refresh:function(b,a){var c=a.lastElement&&a.lastElement.getAscendant(\"a\",!0);c&&\"a\"==c.getName()&&c.getAttribute(\"href\")&&c.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1};\nCKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(b){var a=b.getSelection(),c=a.createBookmarks(),d;if(a&&(d=a.getSelectedElement())&&(CKEDITOR.plugins.link.fakeAnchor&&!d.getChildCount()?CKEDITOR.plugins.link.tryRestoreFakeAnchor(b,d):d.is(\"a\")))d.remove(1);else if(d=CKEDITOR.plugins.link.getSelectedLink(b))d.hasAttribute(\"href\")?(d.removeAttributes({name:1,\"data-cke-saved-name\":1}),d.removeClass(\"cke_anchor\")):d.remove(1);a.selectBookmarks(c)}};\nCKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0});(function(){function N(a,b,d){return l(b)&&l(d)&&d.equals(b.getNext(function(a){return!(y(a)||z(a)||o(a))}))}function t(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function H(a){var b=a.element,d;return b&&l(b)?(d=b.getAscendant(a.triggers,!0))&&!d.contains(a.editable)&&!d.equals(a.editable)?d:null:null}function ba(a,b,d){m(a,b);m(a,d);a=b.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function q(a,b,d){return b=b[d?\"getPrevious\":\"getNext\"](function(e){return e&&e.type==\nCKEDITOR.NODE_TEXT&&!y(e)||l(e)&&!o(e)&&!u(a,e)})}function ca(a){var b=a.doc,d=A('<span contenteditable=\"false\" style=\"'+I+\"position:absolute;border-top:1px dashed \"+a.boxColor+'\"></span>',b);p(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[p(A('<span title=\"'+a.editor.lang.magicline.title+'\" contenteditable=\"false\">&#8629;</span>',b),{base:I+\"height:17px;width:17px;\"+(a.rtl?\"left\":\"right\")+\":17px;background:url(\"+this.path+\"images/icon.png) center no-repeat \"+\na.boxColor+\";cursor:pointer;\"+(n.hc?\"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;\":\"\"),looks:[\"top:-8px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px\",1),\"top:-17px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px 2px 0px 0px\",1),\"top:-1px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"0px 0px 2px 2px\",1)]}),p(A(O,b),{base:P+\"left:0px;border-left-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 0 8px 8px;top:-8px\",\"border-width:8px 0 0 8px;top:-8px\",\"border-width:0 0 8px 8px;top:0px\"]}),\np(A(O,b),{base:P+\"right:0px;border-right-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 8px 8px 0;top:-8px\",\"border-width:8px 8px 0 0;top:-8px\",\"border-width:0 8px 8px 0;top:0px\"]})],detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){m(a,this);var e=a.holdDistance,b=this.size;return b&&a.mouse.y>b.top-e&&a.mouse.y<b.bottom+e&&a.mouse.x>b.left-e&&a.mouse.x<b.right+e?!0:!1},place:function(){var e=a.view,b=a.editable,c=a.trigger,d=c.upper,i=c.lower,h=d||i,\nk=h.getParent(),g={};this.trigger=c;d&&m(a,d,!0);i&&m(a,i,!0);m(a,k,!0);a.inInlineMode&&B(a,!0);k.equals(b)?(g.left=e.scroll.x,g.right=-e.scroll.x,g.width=\"\"):(g.left=h.size.left-h.size.margin.left+e.scroll.x-(a.inInlineMode?e.editable.left+e.editable.border.left:0),g.width=h.size.outerWidth+h.size.margin.left+h.size.margin.right+e.scroll.x,g.right=\"\");d&&i?g.top=d.size.margin.bottom===i.size.margin.top?0|d.size.bottom+d.size.margin.bottom/2:d.size.margin.bottom<i.size.margin.top?d.size.bottom+d.size.margin.bottom:\nd.size.bottom+d.size.margin.bottom-i.size.margin.top:d?i||(g.top=d.size.bottom+d.size.margin.bottom):g.top=i.size.top-i.size.margin.top;c.is(w)||g.top>e.scroll.y-15&&g.top<e.scroll.y+5?(g.top=a.inInlineMode?0:e.scroll.y,this.look(w)):c.is(x)||g.top>e.pane.bottom-5&&g.top<e.pane.bottom+15?(g.top=a.inInlineMode?e.editable.height+e.editable.padding.top+e.editable.padding.bottom:e.pane.bottom-1,this.look(x)):(a.inInlineMode&&(g.top-=e.editable.top+e.editable.border.top),this.look(r));a.inInlineMode&&\n(g.top--,g.top+=e.editable.scroll.top,g.left+=e.editable.scroll.left);for(var Q in g)g[Q]=CKEDITOR.tools.cssLength(g[Q]);this.setStyles(g)},look:function(a){if(this.oldLook!=a){for(var d=this.lineChildren.length,c;d--;)(c=this.lineChildren[d]).setAttribute(\"style\",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new J(\"span\",a.doc)});for(b=d.lineChildren.length;b--;)d.lineChildren[b].appendTo(d);d.look(r);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on(\"mouseup\",function(b){d.detach();K(a,function(d){var c=\na.line.trigger;d[c.is(C)?\"insertBefore\":\"insertAfter\"](c.is(C)?c.lower:c.upper)},!0);a.editor.focus();!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();b.data.preventDefault(!0)});d.on(\"mousedown\",function(a){a.data.preventDefault(!0)});a.line=d}function K(a,b,d){var e=new CKEDITOR.dom.range(a.doc),f=a.editor,c;n.ie&&a.enterMode==CKEDITOR.ENTER_BR?c=a.doc.createText(D):(c=new J(a.enterBehavior,a.doc),a.enterMode!=CKEDITOR.ENTER_BR&&a.doc.createText(D).appendTo(c));d&&f.fire(\"saveSnapshot\");\nb(c);e.moveToPosition(c,CKEDITOR.POSITION_AFTER_START);f.getSelection().selectRanges([e]);a.hotNode=c;d&&f.fire(\"saveSnapshot\")}function R(a,b){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){function d(d){var f=n.ie&&9>n.version?\" \":D,c=a.hotNode&&a.hotNode.getText()==f&&a.element.equals(a.hotNode)&&a.lastCmdDirection===!!b;K(a,function(f){c&&a.hotNode&&a.hotNode.remove();f[b?\"insertAfter\":\"insertBefore\"](d);f.setAttributes({\"data-cke-magicline-hot\":1,\"data-cke-magicline-dir\":!!b});a.lastCmdDirection=\n!!b});!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();a.line.detach()}return function(e){e=e.getSelection().getStartElement();if((e=e.getAscendant(S,1))&&!e.equals(a.editable)&&!e.contains(a.editable)){a.element=e;var f=q(a,e,!b),c;l(f)&&f.is(a.triggers)&&f.is(da)&&(!q(a,f,!b)||(c=q(a,f,!b))&&l(c)&&c.is(a.triggers))?d(f):(c=H(a,e),l(c)&&(q(a,c,!b)?(e=q(a,c,!b))&&(l(e)&&e.is(a.triggers))&&d(c):d(c)))}}}()}}function u(a,b){if(!b||!(b.type==CKEDITOR.NODE_ELEMENT&&b.$))return!1;var d=\na.line;return d.wrap.equals(b)||d.wrap.contains(b)}function l(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.$}function o(a){if(!l(a))return!1;var b;if(!(b=T(a)))l(a)?(b={left:1,right:1,center:1},b=!(!b[a.getComputedStyle(\"float\")]&&!b[a.getAttribute(\"align\")])):b=!1;return b}function T(a){return!!{absolute:1,fixed:1,relative:1}[a.getComputedStyle(\"position\")]}function E(a,b){return l(b)?b.is(a.triggers):null}function ea(a,b,d){b=b[d?\"getLast\":\"getFirst\"](function(d){return a.isRelevant(d)&&!d.is(fa)});\nif(!b)return!1;m(a,b);return d?b.size.top>a.mouse.y:b.size.bottom<a.mouse.y}function U(a){var b=a.editable,d=a.mouse,e=a.view,f=a.triggerOffset;B(a);var c=d.y>(a.inInlineMode?e.editable.top+e.editable.height/2:Math.min(e.editable.height,e.pane.height)/2),b=b[c?\"getLast\":\"getFirst\"](function(a){return!(y(a)||z(a))});if(!b)return null;u(a,b)&&(b=a.line.wrap[c?\"getPrevious\":\"getNext\"](function(a){return!(y(a)||z(a))}));if(!l(b)||o(b)||!E(a,b))return null;m(a,b);return!c&&0<=b.size.top&&0<d.y&&d.y<b.size.top+\nf?(a=a.inInlineMode||0===e.scroll.y?w:r,new t([null,b,C,F,a])):c&&b.size.bottom<=e.pane.height&&d.y>b.size.bottom-f&&d.y<e.pane.height?(a=a.inInlineMode||b.size.bottom>e.pane.height-f&&b.size.bottom<e.pane.height?x:r,new t([b,null,V,F,a])):null}function W(a){var b=a.mouse,d=a.view,e=a.triggerOffset,f=H(a);if(!f)return null;m(a,f);var e=Math.min(e,0|f.size.outerHeight/2),c=[],j,i;if(b.y>f.size.top-1&&b.y<f.size.top+e)i=!1;else if(b.y>f.size.bottom-e&&b.y<f.size.bottom+1)i=!0;else return null;if(o(f)||\nea(a,f,i)||f.getParent().is(X))return null;var h=q(a,f,!i);if(h){if(h&&h.type==CKEDITOR.NODE_TEXT)return null;if(l(h)){if(o(h)||!E(a,h)||h.getParent().is(X))return null;c=[h,f][i?\"reverse\":\"concat\"]().concat([L,F])}}else f.equals(a.editable[i?\"getLast\":\"getFirst\"](a.isRelevant))?(B(a),i&&b.y>f.size.bottom-e&&b.y<d.pane.height&&f.size.bottom>d.pane.height-e&&f.size.bottom<d.pane.height?j=x:0<b.y&&b.y<f.size.top+e&&(j=w)):j=r,c=[null,f][i?\"reverse\":\"concat\"]().concat([i?V:C,F,j,f.equals(a.editable[i?\n\"getLast\":\"getFirst\"](a.isRelevant))?i?x:w:r]);return 0 in c?new t(c):null}function M(a,b,d,e){for(var f=function(){var d=n.ie?b.$.currentStyle:a.win.$.getComputedStyle(b.$,\"\");return n.ie?function(a){return d[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){return d.getPropertyValue(a)}}(),c=b.getDocumentPosition(),j={},i={},h={},k={},g=s.length;g--;)j[s[g]]=parseInt(f(\"border-\"+s[g]+\"-width\"),10)||0,h[s[g]]=parseInt(f(\"padding-\"+s[g]),10)||0,i[s[g]]=parseInt(f(\"margin-\"+s[g]),10)||0;(!d||e)&&\nG(a,e);k.top=c.y-(d?0:a.view.scroll.y);k.left=c.x-(d?0:a.view.scroll.x);k.outerWidth=b.$.offsetWidth;k.outerHeight=b.$.offsetHeight;k.height=k.outerHeight-(h.top+h.bottom+j.top+j.bottom);k.width=k.outerWidth-(h.left+h.right+j.left+j.right);k.bottom=k.top+k.outerHeight;k.right=k.left+k.outerWidth;a.inInlineMode&&(k.scroll={top:b.$.scrollTop,left:b.$.scrollLeft});return p({border:j,padding:h,margin:i,ignoreScroll:d},k,!0)}function m(a,b,d){if(!l(b))return b.size=null;if(b.size){if(b.size.ignoreScroll==\nd&&b.size.date>new Date-Y)return null}else b.size={};return p(b.size,M(a,b,d),{date:+new Date},!0)}function B(a,b){a.view.editable=M(a,a.editable,b,!0)}function G(a,b){a.view||(a.view={});var d=a.view;if(b||!(d&&d.date>new Date-Y)){var e=a.win,d=e.getScrollPosition(),e=e.getViewPaneSize();p(a.view,{scroll:{x:d.x,y:d.y,width:a.doc.$.documentElement.scrollWidth-e.width,height:a.doc.$.documentElement.scrollHeight-e.height},pane:{width:e.width,height:e.height,bottom:e.height+d.y},date:+new Date},!0)}}\nfunction ga(a,b,d,e){for(var f=e,c=e,j=0,i=!1,h=!1,k=a.view.pane.height,g=a.mouse;g.y+j<k&&0<g.y-j;){i||(i=b(f,e));h||(h=b(c,e));!i&&0<g.y-j&&(f=d(a,{x:g.x,y:g.y-j}));!h&&g.y+j<k&&(c=d(a,{x:g.x,y:g.y+j}));if(i&&h)break;j+=2}return new t([f,c,null,null])}CKEDITOR.plugins.add(\"magicline\",{init:function(a){var b={};b[CKEDITOR.ENTER_BR]=\"br\";b[CKEDITOR.ENTER_P]=\"p\";b[CKEDITOR.ENTER_DIV]=\"div\";var d=a.config,e=d.magicline_triggerOffset||30,f=d.enterMode,c={editor:a,enterBehavior:b[f],enterMode:f,triggerOffset:e,\nholdDistance:0|e*(d.magicline_holdDistance||0.5),boxColor:d.magicline_color||\"#ff0000\",rtl:\"rtl\"==d.contentsLangDirection,triggers:d.magicline_everywhere?S:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},j,i,h;c.isRelevant=function(a){return l(a)&&!u(c,a)&&!o(a)};a.on(\"contentDom\",function(){var b=a.editable(),e=a.document,f=a.window;p(c,{editable:b,inInlineMode:b.isInline(),doc:e,win:f},!0);c.boundary=c.inInlineMode?c.editable:c.doc.getDocumentElement();b.is(v.$inline)||(c.inInlineMode&&\n!T(b)&&b.setStyles({position:\"relative\",top:null,left:null}),ca.call(this,c),G(c),b.attachListener(a,\"beforeUndoImage\",function(){c.line.detach()}),b.attachListener(a,\"beforeGetData\",function(){c.line.wrap.getParent()&&(c.line.detach(),a.once(\"getData\",function(){c.line.attach()},null,null,1E3))},null,null,0),b.attachListener(c.inInlineMode?e:e.getWindow().getFrame(),\"mouseout\",function(b){if(\"wysiwyg\"==a.mode)if(c.inInlineMode){var d=b.data.$.clientX,b=b.data.$.clientY;G(c);B(c,!0);var e=c.view.editable,\nf=c.view.scroll;if(!(d>e.left-f.x&&d<e.right-f.x)||!(b>e.top-f.y&&b<e.bottom-f.y))clearTimeout(h),h=null,c.line.detach()}else clearTimeout(h),h=null,c.line.detach()}),b.attachListener(b,\"keyup\",function(){c.hiddenMode=0}),b.attachListener(b,\"keydown\",function(b){if(\"wysiwyg\"==a.mode)switch(b=b.data.getKeystroke(),a.getSelection().getStartElement(),b){case 2228240:case 16:c.hiddenMode=1,c.line.detach()}}),b.attachListener(c.inInlineMode?b:e,\"mousemove\",function(b){i=!0;if(!(\"wysiwyg\"!=a.mode||h)){var d=\n{x:b.data.$.clientX,y:b.data.$.clientY};h=setTimeout(function(){c.mouse=d;h=c.trigger=null;G(c);if(i&&!c.hiddenMode&&a.focusManager.hasFocus&&!c.line.mouseNear()&&(c.element=Z(c,!0)))(c.trigger=U(c)||W(c)||$(c))?c.line.attach().place():(c.trigger=null,c.line.detach()),i=!1},30)}}),b.attachListener(f,\"scroll\",function(){\"wysiwyg\"==a.mode&&(c.line.detach(),n.webkit&&(c.hiddenMode=1,clearTimeout(j),j=setTimeout(function(){c.hiddenMode=0},50)))}),b.attachListener(f,\"mousedown\",function(){\"wysiwyg\"==a.mode&&\n(c.line.detach(),c.hiddenMode=1)}),b.attachListener(f,\"mouseup\",function(){c.hiddenMode=0}),a.addCommand(\"accessPreviousSpace\",R(c)),a.addCommand(\"accessNextSpace\",R(c,!0)),a.setKeystroke([[d.magicline_keystrokePrevious,\"accessPreviousSpace\"],[d.magicline_keystrokeNext,\"accessNextSpace\"]]),a.on(\"loadSnapshot\",function(){for(var a=e.getElementsByTag(c.enterBehavior),b,d=a.count();d--;)if((b=a.getItem(d)).hasAttribute(\"data-cke-magicline-hot\")){c.hotNode=b;c.lastCmdDirection=\"true\"===b.getAttribute(\"data-cke-magicline-dir\")?\n!0:!1;break}}),this.backdoor={accessFocusSpace:K,boxTrigger:t,isLine:u,getAscendantTrigger:H,getNonEmptyNeighbour:q,getSize:M,that:c,triggerEdge:W,triggerEditable:U,triggerExpand:$})},this)}});var p=CKEDITOR.tools.extend,J=CKEDITOR.dom.element,A=J.createFromHtml,n=CKEDITOR.env,v=CKEDITOR.dtd,C=128,V=64,L=32,F=16,aa=8,w=4,x=2,r=1,D=\" \",X=v.$listItem,fa=v.$tableContent,da=p({},v.$nonEditable,v.$empty),S=v.$block,Y=100,I=\"width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;\",\nP=I+\"border-color:transparent;display:block;border-style:solid;\",O=\"<span>\"+D+\"</span>\";t.prototype={set:function(a,b,d){this.properties=a+b+(d||r);return this},is:function(a){return(this.properties&a)==a}};var Z=function(){return function(a,b,d){if(!a.mouse)return null;var e=a.doc,f=a.line.wrap,d=d||a.mouse,c=new CKEDITOR.dom.element(e.$.elementFromPoint(d.x,d.y));b&&u(a,c)&&(f.hide(),c=new CKEDITOR.dom.element(e.$.elementFromPoint(d.x,d.y)),f.show());return!c||!(c.type==CKEDITOR.NODE_ELEMENT&&c.$)||\nn.ie&&9>n.version&&!a.boundary.equals(c)&&!a.boundary.contains(c)?null:c}}(),y=CKEDITOR.dom.walker.whitespaces(),z=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),$=function(){function a(a){var e=a.element,f,c,j;if(!l(e)||e.contains(a.editable))return null;j=ga(a,function(a,b){return!b.equals(a)},function(a,b){return Z(a,!0,b)},e);f=j.upper;c=j.lower;if(N(a,f,c))return j.set(L,aa);if(f&&e.contains(f))for(;!f.getParent().equals(e);)f=f.getParent();else f=e.getFirst(function(c){return b(a,c)});\nif(c&&e.contains(c))for(;!c.getParent().equals(e);)c=c.getParent();else c=e.getLast(function(c){return b(a,c)});if(!f||!c)return null;m(a,f);m(a,c);if(!(a.mouse.y>f.size.top&&a.mouse.y<c.size.bottom))return null;for(var e=Number.MAX_VALUE,i,h,k,g;c&&!c.equals(f)&&(h=f.getNext(a.isRelevant));)i=Math.abs(ba(a,f,h)-a.mouse.y),i<e&&(e=i,k=f,g=h),f=h,m(a,f);if(!k||!g||!(a.mouse.y>k.size.top&&a.mouse.y<g.size.bottom))return null;j.upper=k;j.lower=g;return j.set(L,aa)}function b(a,b){return!(b&&b.type==\nCKEDITOR.NODE_TEXT||z(b)||o(b)||u(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is(\"br\"))}return function(b){var e=a(b),f;if(f=e){f=e.upper;var c=e.lower;f=!f||!c||o(c)||o(f)||c.equals(f)||f.equals(c)||c.contains(f)||f.contains(c)?!1:E(b,f)&&E(b,c)&&N(b,f,c)?!0:!1}return f?e:null}}(),s=[\"top\",\"left\",\"right\",\"bottom\"]})();CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.ALT+219;CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.ALT+221;(function(){function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())return[];for(var e=[],f=[\"style\",\"className\"],b=0;b<f.length;b++){var d=a.$.elements.namedItem(f[b]);d&&(d=new CKEDITOR.dom.element(d),e.push([d,d.nextSibling]),d.remove())}return e}function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())&&0<e.length)for(var f=e.length-1;0<=f;f--){var b=e[f][0],d=e[f][1];d?b.insertBefore(d):b.appendTo(a)}}function n(a,e){var f=l(a),b={},d=a.$;e||(b[\"class\"]=d.className||\n\"\",d.className=\"\");b.inline=d.style.cssText||\"\";e||(d.style.cssText=\"position: static; overflow: visible\");o(f);return b}function p(a,e){var f=l(a),b=a.$;\"class\"in e&&(b.className=e[\"class\"]);\"inline\"in e&&(b.style.cssText=e.inline);o(f)}function q(a){var e=CKEDITOR.instances,f;for(f in e){var b=e[f];\"wysiwyg\"==b.mode&&!b.readOnly&&(b=b.document.getBody(),b.setAttribute(\"contentEditable\",!1),b.setAttribute(\"contentEditable\",!0))}a.editable().hasFocus&&(a.toolbox.focus(),a.focus())}CKEDITOR.plugins.add(\"maximize\",\n{init:function(a){function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=a.lang,b=CKEDITOR.document,d=b.getWindow(),j,k,m,l=CKEDITOR.TRISTATE_OFF;a.addCommand(\"maximize\",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var h=a.container.getChild(1),g=a.ui.space(\"contents\");if(\"wysiwyg\"==a.mode){var c=a.getSelection();j=c&&c.getRanges();k=d.getScrollPosition()}else{var i=a.editable().$;\nj=!CKEDITOR.env.ie&&[i.selectionStart,i.selectionEnd];k=[i.scrollLeft,i.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on(\"resize\",e);m=d.getScrollPosition();for(c=a.container;c=c.getParent();)c.setCustomData(\"maximize_saved_styles\",n(c)),c.setStyle(\"z-index\",a.config.baseFloatZIndex-5);g.setCustomData(\"maximize_saved_styles\",n(g,!0));h.setCustomData(\"maximize_saved_styles\",n(h,!0));g={overflow:CKEDITOR.env.webkit?\"\":\"hidden\",width:0,height:0};b.getDocumentElement().setStyles(g);!CKEDITOR.env.gecko&&\nb.getDocumentElement().setStyle(\"position\",\"fixed\");(!CKEDITOR.env.gecko||!CKEDITOR.env.quirks)&&b.getBody().setStyles(g);CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);h.setStyle(\"position\",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?\"fixed\":\"absolute\");h.$.offsetLeft;h.setStyles({\"z-index\":a.config.baseFloatZIndex-5,left:\"0px\",top:\"0px\"});h.addClass(\"cke_maximized\");e();g=h.getDocumentPosition();h.setStyles({left:-1*g.x+\"px\",top:-1*g.y+\"px\"});CKEDITOR.env.gecko&&q(a)}else if(this.state==\nCKEDITOR.TRISTATE_ON){d.removeListener(\"resize\",e);g=[g,h];for(c=0;c<g.length;c++)p(g[c],g[c].getCustomData(\"maximize_saved_styles\")),g[c].removeCustomData(\"maximize_saved_styles\");for(c=a.container;c=c.getParent();)p(c,c.getCustomData(\"maximize_saved_styles\")),c.removeCustomData(\"maximize_saved_styles\");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(m.x,m.y)},0):d.$.scrollTo(m.x,m.y);h.removeClass(\"cke_maximized\");CKEDITOR.env.webkit&&(h.setStyle(\"display\",\"inline\"),setTimeout(function(){h.setStyle(\"display\",\n\"block\")},0));a.fire(\"resize\")}this.toggleState();if(c=this.uiItems[0])g=this.state==CKEDITOR.TRISTATE_OFF?f.maximize.maximize:f.maximize.minimize,c=CKEDITOR.document.getById(c._.id),c.getChild(1).setHtml(g),c.setAttribute(\"title\",g),c.setAttribute(\"href\",'javascript:void(\"'+g+'\");');\"wysiwyg\"==a.mode?j?(CKEDITOR.env.gecko&&q(a),a.getSelection().selectRanges(j),(i=a.getSelection().getStartElement())&&i.scrollIntoView(!0)):d.$.scrollTo(k.x,k.y):(j&&(i.selectionStart=j[0],i.selectionEnd=j[1]),i.scrollLeft=\nk[0],i.scrollTop=k[1]);j=k=null;l=this.state;a.fire(\"maximize\",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"Maximize\",{label:f.maximize.maximize,command:\"maximize\",toolbar:\"tools,10\"});a.on(\"mode\",function(){var b=a.getCommand(\"maximize\");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:l)},null,null,100)}}})})();(function(){var c={canUndo:!1,async:!0,exec:function(a){a.getClipboardData({title:a.lang.pastetext.title},function(b){b&&a.fire(\"paste\",{type:\"text\",dataValue:b.dataValue});a.fire(\"afterCommandExec\",{name:\"pastetext\",command:c,returnValue:!!b})})}};CKEDITOR.plugins.add(\"pastetext\",{requires:\"clipboard\",init:function(a){a.addCommand(\"pastetext\",c);a.ui.addButton&&a.ui.addButton(\"PasteText\",{label:a.lang.pastetext.button,command:\"pastetext\",toolbar:\"clipboard,40\"});if(a.config.forcePasteAsPlainText)a.on(\"beforePaste\",\nfunction(a){\"html\"!=a.data.type&&(a.data.type=\"text\")});a.on(\"pasteState\",function(b){a.getCommand(\"pastetext\").setState(b.data)})}})})();(function(){function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile||d+\"filter/default.js\"),CKEDITOR.scriptLoader.load(a,f,null,!0));return!b}function i(a){a.data.type=\"html\"}CKEDITOR.plugins.add(\"pastefromword\",{requires:\"clipboard\",init:function(a){var d=0,f=this.path;a.addCommand(\"pastefromword\",{canUndo:!1,async:!0,exec:function(a){var e=this;d=1;a.once(\"beforePaste\",i);a.getClipboardData({title:a.lang.pastefromword.title},function(c){c&&a.fire(\"paste\",\n{type:\"html\",dataValue:c.dataValue});a.fire(\"afterCommandExec\",{name:\"pastefromword\",command:e,returnValue:!!c})})}});a.ui.addButton&&a.ui.addButton(\"PasteFromWord\",{label:a.lang.pastefromword.toolbar,command:\"pastefromword\",toolbar:\"clipboard,50\"});a.on(\"pasteState\",function(b){a.getCommand(\"pastefromword\").setState(b.data)});a.on(\"paste\",function(b){var e=b.data,c=e.dataValue;if(c&&(d||/(class=\\\"?Mso|style=\\\"[^\\\"]*\\bmso\\-|w:WordDocument)/.test(c))){var g=h(a,f,function(){if(g)a.fire(\"paste\",e);\nelse if(!a.config.pasteFromWordPromptCleanup||d||confirm(a.lang.pastefromword.confirmCleanup))e.dataValue=CKEDITOR.cleanWord(c,a)});g&&b.cancel()}},null,null,3)}})})();CKEDITOR.plugins.add(\"removeformat\",{init:function(a){a.addCommand(\"removeFormat\",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton(\"RemoveFormat\",{label:a.lang.removeformat.toolbar,command:\"removeFormat\",toolbar:\"cleanup,10\"})}});\nCKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp(\"^(?:\"+a.config.removeFormatTags.replace(/,/g,\"|\")+\")$\",\"i\")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(\",\")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(1),l=k.createIterator(),c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var i=c.createBookmark(),b=i.startNode,j=i.endNode,\nd=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};d(b);if(j){d(j);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(j);)d=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!(\"img\"==b.getName()&&b.data(\"cke-realelement\"))&&f(a,b)&&(h.test(b.getName())?b.remove(1):(b.removeAttributes(e),a.fire(\"removeFormatCleanup\",b))),b=d}c.moveToBookmark(i)}a.forceNextSelectionCheck();a.getSelection().selectRanges(k)}}},\nfilter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags=\"b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var\";CKEDITOR.config.removeFormatAttributes=\"class,style,lang,width,height,align,hspace,valign\";(function(){CKEDITOR.plugins.add(\"sourcearea\",{init:function(a){function d(){this.hide();this.setStyle(\"height\",this.getParent().$.clientHeight+\"px\");this.setStyle(\"width\",this.getParent().$.clientWidth+\"px\");this.show()}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var e=CKEDITOR.plugins.sourcearea;a.addMode(\"source\",function(e){var b=a.ui.space(\"contents\").getDocument().createElement(\"textarea\");b.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?\"99%\":\"100%\",height:\"100%\",resize:\"none\",\noutline:\"none\",\"text-align\":\"left\"},CKEDITOR.tools.cssVendorPrefix(\"tab-size\",a.config.sourceAreaTabSize||4)));b.addClass(\"cke_source cke_reset cke_enable_context_menu\");a.ui.space(\"contents\").append(b);b=a.editable(new c(a,b));b.setData(a.getData(1));CKEDITOR.env.ie&&(b.attachListener(a,\"resize\",d,b),b.attachListener(CKEDITOR.document.getWindow(),\"resize\",d,b),CKEDITOR.tools.setTimeout(d,0,b));a.fire(\"ariaWidget\",this);e()});a.addCommand(\"source\",e.commands.source);a.ui.addButton&&a.ui.addButton(\"Source\",\n{label:a.lang.sourcearea.toolbar,command:\"source\",toolbar:\"mode,10\"});a.on(\"mode\",function(){a.getCommand(\"source\").setState(\"source\"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)})}}});var c=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.editor.fire(\"dataReady\")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?\"set\":\"remove\")+\"Attribute\"](\"readOnly\",\n\"readonly\")},detach:function(){c.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(c){\"wysiwyg\"==c.mode&&c.fire(\"saveSnapshot\");c.getCommand(\"source\").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode(\"source\"==c.mode?\"wysiwyg\":\"source\")},canUndo:!1}}};CKEDITOR.plugins.add(\"specialchar\",{availableLangs:{ca:1,cs:1,cy:1,de:1,en:1,eo:1,et:1,fa:1,fi:1,fr:1,he:1,hr:1,it:1,ku:1,lv:1,nb:1,nl:1,no:1,\"pt-br\":1,sk:1,sv:1,tr:1,ug:1,\"zh-cn\":1},requires:\"dialog\",init:function(a){var c=this;CKEDITOR.dialog.add(\"specialchar\",this.path+\"dialogs/specialchar.js\");a.addCommand(\"specialchar\",{exec:function(){var b=a.langCode,b=c.availableLangs[b]?b:c.availableLangs[b.replace(/-.*/,\"\")]?b.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\"dialogs/lang/\"+\nb+\".js\"),function(){CKEDITOR.tools.extend(a.lang.specialchar,c.langEntries[b]);a.openDialog(\"specialchar\")})},modes:{wysiwyg:1},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"SpecialChar\",{label:a.lang.specialchar.toolbar,command:\"specialchar\",toolbar:\"insert,50\"})}});CKEDITOR.config.specialChars=\"! &quot; # $ % &amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; &lt; = &gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ &euro; &lsquo; &rsquo; &ldquo; &rdquo; &ndash; &mdash; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; &copy; &ordf; &laquo; &not; &reg; &macr; &deg; &sup2; &sup3; &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; &frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml; &OElig; &oelig; &#372; &#374 &#373 &#375; &sbquo; &#8219; &bdquo; &hellip; &trade; &#9658; &bull; &rarr; &rArr; &hArr; &diams; &asymp;\".split(\" \");CKEDITOR.plugins.add(\"menubutton\",{requires:\"button,menu\",onLoad:function(){var d=function(a){var b=this._;if(b.state!==CKEDITOR.TRISTATE_DISABLED){b.previousState=b.state;var c=b.menu;c||(c=b.menu=new CKEDITOR.menu(a,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":a.lang.common.options}}}),c.onHide=CKEDITOR.tools.bind(function(){this.setState(this.modes&&this.modes[a.mode]?b.previousState:CKEDITOR.TRISTATE_DISABLED)},this),this.onMenu&&c.addListener(this.onMenu));b.on?c.hide():(this.setState(CKEDITOR.TRISTATE_ON),\nsetTimeout(function(){c.show(CKEDITOR.document.getById(b.id),4)},0))}};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(a){delete a.panel;this.base(a);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(a){return new CKEDITOR.ui.menuButton(a)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});CKEDITOR.UI_MENUBUTTON=\"menubutton\";(function(){function k(a,c){var b=0,d;for(d in c)if(c[d]==a){b=1;break}return b}var i=\"\",r=function(){function a(){b.once(\"focus\",f);b.once(\"blur\",c)}function c(b){var b=b.editor,c=d.getScayt(b),f=b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE;c&&(d.setPaused(b,!c.disabled),d.setControlId(b,c.id),c.destroy(!0),delete d.instances[b.name],f&&a())}var b=this,f=function(){if(!(\"undefined\"!=typeof d.instances[b.name]||null!=d.instances[b.name])){var a=b.config,c={};c.srcNodeRef=\"BODY\"==b.editable().$.nodeName?\nb.document.getWindow().$.frameElement:b.editable().$;c.assocApp=\"CKEDITOR.\"+CKEDITOR.version+\"@\"+CKEDITOR.revision;c.customerid=a.scayt_customerid||\"1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2\";c.customDictionaryIds=a.scayt_customDictionaryIds||\"\";c.userDictionaryName=a.scayt_userDictionaryName||\"\";c.sLang=a.scayt_sLang||\"en_US\";c.onLoad=function(){CKEDITOR.env.ie&&8>CKEDITOR.env.version||this.addStyle(this.selectorCss(),\"padding-bottom: 2px !important;\");b.editable().hasFocus&&\n!d.isControlRestored(b)&&this.focus()};c.onBeforeChange=function(){d.getScayt(b)&&!b.checkDirty()&&setTimeout(function(){b.resetDirty()},0)};a=window.scayt_custom_params;if(\"object\"==typeof a)for(var f in a)c[f]=a[f];d.getControlId(b)&&(c.id=d.getControlId(b));var o=new window.scayt(c);o.afterMarkupRemove.push(function(a){(new CKEDITOR.dom.element(a,o.document)).mergeSiblings()});if(c=d.instances[b.name])o.sLang=c.sLang,o.option(c.option()),o.paused=c.paused;d.instances[b.name]=o;try{o.setDisabled(!1===\nd.isPaused(b))}catch(e){}b.fire(\"showScaytState\")}};b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a():b.on(\"contentDom\",f);b.on(\"contentDomUnload\",function(){for(var a=CKEDITOR.document.getElementsByTag(\"script\"),b=/^dojoIoScript(\\d+)$/i,c=/^https?:\\/\\/svc\\.webspellchecker\\.net\\/spellcheck\\/script\\/ssrv\\.cgi/i,d=0;d<a.count();d++){var f=a.getItem(d),e=f.getId(),h=f.getAttribute(\"src\");e&&(h&&e.match(b)&&h.match(c))&&f.remove()}});b.on(\"beforeCommandExec\",function(a){\"source\"==a.data.name&&\"source\"==\nb.mode&&d.markControlRestore(b)});b.on(\"afterCommandExec\",function(a){d.isScaytEnabled(b)&&\"wysiwyg\"==b.mode&&(\"undo\"==a.data.name||\"redo\"==a.data.name)&&window.setTimeout(function(){d.getScayt(b).refresh()},10)});b.on(\"destroy\",c);b.on(\"setData\",c);b.on(\"insertElement\",function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on(\"insertHtml\",function(){var a=d.getScayt(b);d.isScaytEnabled(b)&&\n(CKEDITOR.env.ie&&b.getSelection().unlock(!0),window.setTimeout(function(){a.focus();a.refresh()},10))},this,null,50);b.on(\"scaytDialog\",function(a){a.data.djConfig=window.djConfig;a.data.scayt_control=d.getScayt(b);a.data.tab=i;a.data.scayt=window.scayt});var e=b.dataProcessor;(e=e&&e.htmlFilter)&&e.addRules({elements:{span:function(a){if(a.attributes[\"data-scayt_word\"]&&a.attributes[\"data-scaytid\"])return delete a.name,a}}});e=CKEDITOR.plugins.undo.Image.prototype;e.equals=CKEDITOR.tools.override(e.equals,\nfunction(a){return function(b){var c=this.contents,f=b.contents,e=d.getScayt(this.editor);e&&d.isScaytReady(this.editor)&&(this.contents=e.reset(c)||\"\",b.contents=e.reset(f)||\"\");e=a.apply(this,arguments);this.contents=c;b.contents=f;return e}});b.document&&(b.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE||b.focusManager.hasFocus)&&f()};CKEDITOR.plugins.scayt={engineLoaded:!1,instances:{},controlInfo:{},setControlInfo:function(a,c){a&&(a.name&&\"object\"!=typeof this.controlInfo[a.name])&&(this.controlInfo[a.name]=\n{});for(var b in c)this.controlInfo[a.name][b]=c[b]},isControlRestored:function(a){return a&&a.name&&this.controlInfo[a.name]?this.controlInfo[a.name].restored:!1},markControlRestore:function(a){this.setControlInfo(a,{restored:!0})},setControlId:function(a,c){this.setControlInfo(a,{id:c})},getControlId:function(a){return a&&a.name&&this.controlInfo[a.name]&&this.controlInfo[a.name].id?this.controlInfo[a.name].id:null},setPaused:function(a,c){this.setControlInfo(a,{paused:c})},isPaused:function(a){if(a&&\na.name&&this.controlInfo[a.name])return this.controlInfo[a.name].paused},getScayt:function(a){return this.instances[a.name]},isScaytReady:function(a){return!0===this.engineLoaded&&\"undefined\"!==typeof window.scayt&&this.getScayt(a)},isScaytEnabled:function(a){return(a=this.getScayt(a))?!1===a.disabled:!1},getUiTabs:function(a){var c=[],b=a.config.scayt_uiTabs||\"1,1,1\",b=b.split(\",\");b[3]=\"1\";for(var d=0;4>d;d++)c[d]=\"undefined\"!=typeof window.scayt&&\"undefined\"!=typeof window.scayt.uiTags?parseInt(b[d],\n10)&&window.scayt.uiTags[d]:parseInt(b[d],10);\"object\"==typeof a.plugins.wsc?c.push(1):c.push(0);return c},loadEngine:function(a){if(CKEDITOR.env.gecko&&10900>CKEDITOR.env.version||CKEDITOR.env.opera||CKEDITOR.env.air)return a.fire(\"showScaytState\");if(!0===this.engineLoaded)return r.apply(a);if(-1==this.engineLoaded)return CKEDITOR.on(\"scaytReady\",function(){r.apply(a)});CKEDITOR.on(\"scaytReady\",r,a);CKEDITOR.on(\"scaytReady\",function(){this.engineLoaded=!0},this,null,0);this.engineLoaded=-1;var c=\ndocument.location.protocol,c=-1!=c.search(/https?:/)?c:\"http:\",c=a.config.scayt_srcUrl||c+\"//svc.webspellchecker.net/scayt26/loader__base.js\",b=d.parseUrl(c).path+\"/\";void 0==window.scayt?(CKEDITOR._djScaytConfig={baseUrl:b,addOnLoad:[function(){CKEDITOR.fireOnce(\"scaytReady\")}],isDebug:!1},CKEDITOR.document.getHead().append(CKEDITOR.document.createElement(\"script\",{attributes:{type:\"text/javascript\",async:\"true\",src:c}}))):CKEDITOR.fireOnce(\"scaytReady\");return null},parseUrl:function(a){var c;return a.match&&\n(c=a.match(/(.*)[\\/\\\\](.*?\\.\\w+)$/))?{path:c[1],file:c[2]}:a}};var d=CKEDITOR.plugins.scayt,s=function(a,c,b,d,e,k,g){a.addCommand(d,e);a.addMenuItem(d,{label:b,command:d,group:k,order:g})},v={preserveState:!0,editorFocus:!1,canUndo:!1,exec:function(a){if(d.isScaytReady(a)){var c=d.isScaytEnabled(a);this.setState(c?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_ON);a=d.getScayt(a);a.focus();a.setDisabled(c)}else!a.config.scayt_autoStartup&&0<=d.engineLoaded&&(a.focus(),this.setState(CKEDITOR.TRISTATE_DISABLED),\nd.loadEngine(a))}};CKEDITOR.plugins.add(\"scayt\",{requires:\"menubutton,dialog\",beforeInit:function(a){var c=a.config.scayt_contextMenuItemsOrder||\"suggest|moresuggest|control\",b=\"\";if((c=c.split(\"|\"))&&c.length)for(var d=0;d<c.length;d++)b+=\"scayt_\"+c[d]+(c.length!=parseInt(d,10)+1?\",\":\"\");a.config.menu_groups=b+\",\"+a.config.menu_groups},init:function(a){var c=a.dataProcessor&&a.dataProcessor.dataFilter,b={elements:{span:function(a){var b=a.attributes;b&&b[\"data-scaytid\"]&&delete a.name}}};c&&c.addRules(b);\nvar f={},e={},p=a.addCommand(\"scaytcheck\",v);CKEDITOR.dialog.add(\"scaytcheck\",CKEDITOR.getUrl(this.path+\"dialogs/options.js\"));c=d.getUiTabs(a);a.addMenuGroup(\"scaytButton\");a.addMenuGroup(\"scayt_suggest\",-10);a.addMenuGroup(\"scayt_moresuggest\",-9);a.addMenuGroup(\"scayt_control\",-8);var b={},g=a.lang.scayt;b.scaytToggle={label:g.enable,command:\"scaytcheck\",group:\"scaytButton\"};1==c[0]&&(b.scaytOptions={label:g.options,group:\"scaytButton\",onClick:function(){i=\"options\";a.openDialog(\"scaytcheck\")}});\n1==c[1]&&(b.scaytLangs={label:g.langs,group:\"scaytButton\",onClick:function(){i=\"langs\";a.openDialog(\"scaytcheck\")}});1==c[2]&&(b.scaytDict={label:g.dictionariesTab,group:\"scaytButton\",onClick:function(){i=\"dictionaries\";a.openDialog(\"scaytcheck\")}});b.scaytAbout={label:a.lang.scayt.about,group:\"scaytButton\",onClick:function(){i=\"about\";a.openDialog(\"scaytcheck\")}};1==c[4]&&(b.scaytWSC={label:a.lang.wsc.toolbar,group:\"scaytButton\",command:\"checkspell\"});a.addMenuItems(b);a.ui.add(\"Scayt\",CKEDITOR.UI_MENUBUTTON,\n{label:g.title,title:CKEDITOR.env.opera?g.opera_title:g.title,modes:{wysiwyg:1},toolbar:\"spellchecker,20\",onRender:function(){p.on(\"state\",function(){this.setState(p.state)},this)},onMenu:function(){var b=d.isScaytEnabled(a);a.getMenuItem(\"scaytToggle\").label=g[b?\"disable\":\"enable\"];var c=d.getUiTabs(a);return{scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:b&&c[0]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:b&&c[1]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytDict:b&&c[2]?\nCKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytAbout:b&&c[3]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytWSC:c[4]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}});a.contextMenu&&a.addMenuItems&&a.contextMenu.addListener(function(b,c){if(!d.isScaytEnabled(a)||c.getRanges()[0].checkReadOnly())return null;var l=d.getScayt(a),q=l.getScaytNode();if(!q)return null;var h=l.getWord(q);if(!h)return null;var i=l.getLang(),m=a.config.scayt_contextCommands||\"all\",h=window.scayt.getSuggestion(h,\ni),m=m.split(\"|\"),n;for(n in f){delete a._.menuItems[n];delete a.commands[n]}for(n in e){delete a._.menuItems[n];delete a.commands[n]}if(!h||!h.length){s(a,\"no_sugg\",g.noSuggestions,\"scayt_no_sugg\",{exec:function(){}},\"scayt_control\",1,true);e.scayt_no_sugg=CKEDITOR.TRISTATE_OFF}else{f={};e={};n=a.config.scayt_moreSuggestions||\"on\";var i=false,u=a.config.scayt_maxSuggestions;typeof u!=\"number\"&&(u=5);!u&&(u=h.length);for(var j=0,p=h.length;j<p;j=j+1){var t=\"scayt_suggestion_\"+h[j].replace(\" \",\"_\"),\nr=function(a,b){return{exec:function(){l.replace(a,b)}}}(q,h[j]);if(j<u){s(a,\"button_\"+t,h[j],t,r,\"scayt_suggest\",j+1);e[t]=CKEDITOR.TRISTATE_OFF}else if(n==\"on\"){s(a,\"button_\"+t,h[j],t,r,\"scayt_moresuggest\",j+1);f[t]=CKEDITOR.TRISTATE_OFF;i=true}}if(i){a.addMenuItem(\"scayt_moresuggest\",{label:g.moreSuggestions,group:\"scayt_moresuggest\",order:10,getItems:function(){return f}});e.scayt_moresuggest=CKEDITOR.TRISTATE_OFF}}if(k(\"all\",m)||k(\"ignore\",m)){s(a,\"ignore\",g.ignore,\"scayt_ignore\",{exec:function(){l.ignore(q)}},\n\"scayt_control\",2);e.scayt_ignore=CKEDITOR.TRISTATE_OFF}if(k(\"all\",m)||k(\"ignoreall\",m)){s(a,\"ignore_all\",g.ignoreAll,\"scayt_ignore_all\",{exec:function(){l.ignoreAll(q)}},\"scayt_control\",3);e.scayt_ignore_all=CKEDITOR.TRISTATE_OFF}if(k(\"all\",m)||k(\"add\",m)){s(a,\"add_word\",g.addWord,\"scayt_add_word\",{exec:function(){window.scayt.addWordToUserDictionary(q)}},\"scayt_control\",4);e.scayt_add_word=CKEDITOR.TRISTATE_OFF}l.fireOnContextMenu&&l.fireOnContextMenu(a);return e});c=function(b){b.removeListener();\nCKEDITOR.env.opera||CKEDITOR.env.air?p.setState(CKEDITOR.TRISTATE_DISABLED):p.setState(d.isScaytEnabled(a)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)};a.on(\"showScaytState\",c);a.on(\"instanceReady\",c);if(a.config.scayt_autoStartup)a.on(\"instanceReady\",function(){d.loadEngine(a)})},afterInit:function(a){var c,b=function(a){if(a.hasAttribute(\"data-scaytid\"))return!1};a._.elementsPath&&(c=a._.elementsPath.filters)&&c.push(b);a.addRemoveFormatFilter&&a.addRemoveFormatFilter(b)}})})();(function(){function m(b,j){var k=b.type,f=j.type;return k==f?0:k==CKEDITOR.STYLE_OBJECT?-1:f==CKEDITOR.STYLE_OBJECT?1:f==CKEDITOR.STYLE_BLOCK?1:-1}CKEDITOR.plugins.add(\"stylescombo\",{requires:\"richcombo\",init:function(b){function j(a){b.getStylesSet(function(g){if(!i.length){for(var c,l,e=0,f=g.length;e<f;e++)c=g[e],b.blockless&&c.element in CKEDITOR.dtd.$block||(l=c.name,c=h[l]=new CKEDITOR.style(c),c._name=l,c._.enterMode=k.enterMode,i.push(c));i.sort(m)}a&&a()})}var k=b.config,f=b.lang.stylescombo,\nh={},i=[],d;b.ui.addRichCombo(\"Styles\",{label:f.label,title:f.panelTitle,toolbar:\"styles,10\",panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(k.contentsCss),multiSelect:!0,attributes:{\"aria-label\":f.panelTitle}},init:function(){d=this;j(function(){var a,g,c,b,e,h;e=0;for(h=i.length;e<h;e++)a=i[e],g=a._name,b=a.type,b!=c&&(d.startGroup(f[\"panelTitle\"+b]),c=b),d.add(g,a.type==CKEDITOR.STYLE_OBJECT?g:a.buildPreview(),g);d.commit()})},onClick:function(a){b.focus();b.fire(\"saveSnapshot\");var a=h[a],\ng=b.elementPath();b[a.checkActive(g)?\"removeStyle\":\"applyStyle\"](a);b.fire(\"saveSnapshot\")},onRender:function(){b.on(\"selectionChange\",function(a){for(var b=this.getValue(),a=a.data.path.elements,c=0,f=a.length,e;c<f;c++){e=a[c];for(var d in h)if(h[d].checkElementRemovable(e,!0)){d!=b&&this.setValue(d);return}}this.setValue(\"\")},this)},onOpen:function(){var a=b.getSelection().getSelectedElement(),a=b.elementPath(a),g=[0,0,0,0];this.showAll();this.unmarkAll();for(var c in h){var d=h[c],e=d.type;e==\nCKEDITOR.STYLE_BLOCK&&!a.isContextFor(d.element)?this.hideItem(c):(d.checkActive(a)?this.mark(c):e==CKEDITOR.STYLE_OBJECT&&!d.checkApplicable(a)&&(this.hideItem(c),g[e]--),g[e]++)}g[CKEDITOR.STYLE_BLOCK]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_BLOCK]);g[CKEDITOR.STYLE_INLINE]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_INLINE]);g[CKEDITOR.STYLE_OBJECT]||this.hideGroup(f[\"panelTitle\"+CKEDITOR.STYLE_OBJECT])},reset:function(){d&&(delete d._.panel,delete d._.list,d._.committed=0,d._.items={},\nd._.state=CKEDITOR.TRISTATE_OFF);h={};i=[];j()}});b.on(\"instanceReady\",function(){j()})}})})();(function(){function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(d){if(d.editable().hasFocus){var e=d.getSelection(),b;if(b=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=d.createRange(),a=CKEDITOR.tools.tryThese(function(){var a=b.getParent().$.cells[b.$.cellIndex+(c?-1:1)];a.parentNode.parentNode;return a},function(){var a=b.getParent(),a=a.getAscendant(\"table\").$.rows[a.$.rowIndex+(c?-1:1)];return a.cells[c?a.cells.length-1:\n0]});if(!a&&!c){for(var f=b.getAscendant(\"table\").$,a=b.getParent().$.cells,f=new CKEDITOR.dom.element(f.insertRow(-1),d.document),g=0,h=a.length;g<h;g++){var i=f.append((new CKEDITOR.dom.element(a[g],d.document)).clone(!1,!1));!CKEDITOR.env.ie&&i.appendBogus()}e.moveToElementEditStart(f)}else if(a)a=new CKEDITOR.dom.element(a),e.moveToElementEditStart(a),(!e.checkStartOfBlock()||!e.checkEndOfBlock())&&e.selectNodeContents(a);else return!0;e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,\nsource:1}},g={exec:function(c){c.container.focusNext(!0,c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKEDITOR.plugins.add(\"tab\",{init:function(c){for(var d=!1!==c.config.enableTabKeyTools,e=c.config.tabSpaces||0,b=\"\";e--;)b+=\" \";if(b)c.on(\"key\",function(a){9==a.data.keyCode&&(c.insertHtml(b),a.cancel())});if(d)c.on(\"key\",function(a){(9==a.data.keyCode&&c.execCommand(\"selectNextCell\")||a.data.keyCode==CKEDITOR.SHIFT+9&&c.execCommand(\"selectPreviousCell\"))&&a.cancel()});\nc.addCommand(\"blur\",CKEDITOR.tools.extend(g,h));c.addCommand(\"blurBack\",CKEDITOR.tools.extend(f,h));c.addCommand(\"selectNextCell\",i());c.addCommand(\"selectPreviousCell\",i(!0))}})})();\nCKEDITOR.dom.element.prototype.focusNext=function(i,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(i,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,i){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&&\n(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):!d&&0===a&&(d=b,e=a)}}d&&d.focus()};\nCKEDITOR.dom.element.prototype.focusPrevious=function(i,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,i){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}if(b<g&&(!d||b>e))d=a,e=b}}d&&d.focus()};CKEDITOR.plugins.add(\"table\",{requires:\"dialog\",init:function(a){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,e){this.setState(e.contains(\"table\",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var b=a.lang.table;a.addCommand(\"table\",new CKEDITOR.dialogCommand(\"table\",{context:\"table\"}));a.addCommand(\"tableProperties\",new CKEDITOR.dialogCommand(\"tableProperties\",d()));a.addCommand(\"tableDelete\",d({exec:function(a){var c=a.elementPath().contains(\"table\",\n1);if(c){var b=c.getParent();1==b.getChildCount()&&!b.is(\"body\",\"td\",\"th\")&&(c=b);a=a.createRange();a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_START);c.remove();a.select()}}}));a.ui.addButton&&a.ui.addButton(\"Table\",{label:b.toolbar,command:\"table\",toolbar:\"insert,30\"});CKEDITOR.dialog.add(\"table\",this.path+\"dialogs/table.js\");CKEDITOR.dialog.add(\"tableProperties\",this.path+\"dialogs/table.js\");a.addMenuItems&&a.addMenuItems({table:{label:b.menu,command:\"tableProperties\",group:\"table\",order:5},tabledelete:{label:b.deleteTable,\ncommand:\"tableDelete\",group:\"table\",order:1}});a.on(\"doubleclick\",function(a){a.data.element.is(\"table\")&&(a.data.dialog=\"tableProperties\")});a.contextMenu&&a.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}});(function(){function o(c){function d(c){!(0<b.length)&&(c.type==CKEDITOR.NODE_ELEMENT&&z.test(c.getName())&&!c.getCustomData(\"selected_cell\"))&&(CKEDITOR.dom.element.setMarker(a,c,\"selected_cell\",!0),b.push(c))}for(var c=c.getRanges(),b=[],a={},e=0;e<c.length;e++){var f=c[e];if(f.collapsed)f=f.getCommonAncestor(),(f=f.getAscendant(\"td\",!0)||f.getAscendant(\"th\",!0))&&b.push(f);else{var f=new CKEDITOR.dom.walker(f),g;for(f.guard=d;g=f.next();)if(g.type!=CKEDITOR.NODE_ELEMENT||!g.is(CKEDITOR.dtd.table))if((g=\ng.getAscendant(\"td\",!0)||g.getAscendant(\"th\",!0))&&!g.getCustomData(\"selected_cell\"))CKEDITOR.dom.element.setMarker(a,g,\"selected_cell\",!0),b.push(g)}}CKEDITOR.dom.element.clearAllMarkers(a);return b}function m(c,d){for(var b=o(c),a=b[0],e=a.getAscendant(\"table\"),a=a.getDocument(),f=b[0].getParent(),g=f.$.rowIndex,b=b[b.length-1],h=b.getParent().$.rowIndex+b.$.rowSpan-1,b=new CKEDITOR.dom.element(e.$.rows[h]),g=d?g:h,f=d?f:b,b=CKEDITOR.tools.buildTableMap(e),e=b[g],g=d?b[g-1]:b[g+1],b=b[0].length,\na=a.createElement(\"tr\"),h=0;e[h]&&h<b;h++){var i;1<e[h].rowSpan&&g&&e[h]==g[h]?(i=e[h],i.rowSpan+=1):(i=(new CKEDITOR.dom.element(e[h])).clone(),i.removeAttribute(\"rowSpan\"),!CKEDITOR.env.ie&&i.appendBogus(),a.append(i),i=i.$);h+=i.colSpan-1}d?a.insertBefore(f):a.insertAfter(f)}function p(c){if(c instanceof CKEDITOR.dom.selection){for(var d=o(c),b=d[0].getAscendant(\"table\"),a=CKEDITOR.tools.buildTableMap(b),c=d[0].getParent().$.rowIndex,d=d[d.length-1],e=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[],\nf=c;f<=e;f++){for(var g=a[f],h=new CKEDITOR.dom.element(b.$.rows[f]),i=0;i<g.length;i++){var j=new CKEDITOR.dom.element(g[i]),k=j.getParent().$.rowIndex;1==j.$.rowSpan?j.remove():(j.$.rowSpan-=1,k==f&&(k=a[f+1],k[i-1]?j.insertAfter(new CKEDITOR.dom.element(k[i-1])):(new CKEDITOR.dom.element(b.$.rows[f+1])).append(j,1)));i+=j.$.colSpan-1}d.push(h)}a=b.$.rows;b=new CKEDITOR.dom.element(a[e+1]||(0<c?a[c-1]:null)||b.$.parentNode);for(f=d.length;0<=f;f--)p(d[f]);return b}c instanceof CKEDITOR.dom.element&&\n(b=c.getAscendant(\"table\"),1==b.$.rows.length?b.remove():c.remove());return null}function q(c,d){for(var b=d?Infinity:0,a=0;a<c.length;a++){var e;e=c[a];for(var f=d,g=e.getParent().$.cells,h=0,i=0;i<g.length;i++){var j=g[i],h=h+(f?1:j.colSpan);if(j==e.$)break}e=h-1;if(d?e<b:e>b)b=e}return b}function n(c,d){for(var b=o(c),a=b[0].getAscendant(\"table\"),e=q(b,1),b=q(b),e=d?e:b,f=CKEDITOR.tools.buildTableMap(a),a=[],b=[],g=f.length,h=0;h<g;h++)a.push(f[h][e]),b.push(d?f[h][e-1]:f[h][e+1]);for(h=0;h<g;h++)a[h]&&\n(1<a[h].colSpan&&b[h]==a[h]?(e=a[h],e.colSpan+=1):(e=(new CKEDITOR.dom.element(a[h])).clone(),e.removeAttribute(\"colSpan\"),!CKEDITOR.env.ie&&e.appendBogus(),e[d?\"insertBefore\":\"insertAfter\"].call(e,new CKEDITOR.dom.element(a[h])),e=e.$),h+=e.rowSpan-1)}function t(c,d){var b=c.getStartElement();if(b=b.getAscendant(\"td\",1)||b.getAscendant(\"th\",1)){var a=b.clone();CKEDITOR.env.ie||a.appendBogus();d?a.insertBefore(b):a.insertAfter(b)}}function s(c){if(c instanceof CKEDITOR.dom.selection){var c=o(c),d=\nc[0]&&c[0].getAscendant(\"table\"),b;a:{var a=0;b=c.length-1;for(var e={},f,g;f=c[a++];)CKEDITOR.dom.element.setMarker(e,f,\"delete_cell\",!0);for(a=0;f=c[a++];)if((g=f.getPrevious())&&!g.getCustomData(\"delete_cell\")||(g=f.getNext())&&!g.getCustomData(\"delete_cell\")){CKEDITOR.dom.element.clearAllMarkers(e);b=g;break a}CKEDITOR.dom.element.clearAllMarkers(e);g=c[0].getParent();(g=g.getPrevious())?b=g.getLast():(g=c[b].getParent(),b=(g=g.getNext())?g.getChild(0):null)}for(g=c.length-1;0<=g;g--)s(c[g]);\nb?u(b,!0):d&&d.remove()}else c instanceof CKEDITOR.dom.element&&(d=c.getParent(),1==d.getChildCount()?d.remove():c.remove())}function u(c,d){var b=new CKEDITOR.dom.range(c.getDocument());if(!b[\"moveToElementEdit\"+(d?\"End\":\"Start\")](c))b.selectNodeContents(c),b.collapse(d?!1:!0);b.select(!0)}function v(c,d,b){c=c[d];if(\"undefined\"==typeof b)return c;for(d=0;c&&d<c.length;d++){if(b.is&&c[d]==b.$)return d;if(d==b)return new CKEDITOR.dom.element(c[d])}return b.is?-1:null}function r(c,d,b){var a=o(c),\ne;if((d?1!=a.length:2>a.length)||(e=c.getCommonAncestor())&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(\"table\"))return!1;var f,c=a[0];e=c.getAscendant(\"table\");var g=CKEDITOR.tools.buildTableMap(e),h=g.length,i=g[0].length,j=c.getParent().$.rowIndex,k=v(g,j,c);if(d){var w;try{var l=parseInt(c.getAttribute(\"rowspan\"),10)||1;f=parseInt(c.getAttribute(\"colspan\"),10)||1;w=g[\"up\"==d?j-l:\"down\"==d?j+l:j][\"left\"==d?k-f:\"right\"==d?k+f:k]}catch(u){return!1}if(!w||c.$==w)return!1;a[\"up\"==d||\"left\"==d?\"unshift\":\"push\"](new CKEDITOR.dom.element(w))}for(var d=\nc.getDocument(),m=j,l=w=0,p=!b&&new CKEDITOR.dom.documentFragment(d),r=0,d=0;d<a.length;d++){f=a[d];var n=f.getParent(),s=f.getFirst(),q=f.$.colSpan,t=f.$.rowSpan,n=n.$.rowIndex,x=v(g,n,f),r=r+q*t,l=Math.max(l,x-k+q);w=Math.max(w,n-j+t);if(!b){q=f;(t=q.getBogus())&&t.remove();q.trim();if(f.getChildren().count()){if(n!=m&&s&&(!s.isBlockBoundary||!s.isBlockBoundary({br:1})))(m=p.getLast(CKEDITOR.dom.walker.whitespaces(!0)))&&(!m.is||!m.is(\"br\"))&&p.append(\"br\");f.moveChildren(p)}d?f.remove():f.setHtml(\"\")}m=\nn}if(b)return w*l==r;p.moveChildren(c);CKEDITOR.env.ie||c.appendBogus();l>=i?c.removeAttribute(\"rowSpan\"):c.$.rowSpan=w;w>=h?c.removeAttribute(\"colSpan\"):c.$.colSpan=l;b=new CKEDITOR.dom.nodeList(e.$.rows);a=b.count();for(d=a-1;0<=d;d--)e=b.getItem(d),e.$.cells.length||(e.remove(),a++);return c}function x(c,d){var b=o(c);if(1<b.length)return!1;if(d)return!0;var b=b[0],a=b.getParent(),e=a.getAscendant(\"table\"),f=CKEDITOR.tools.buildTableMap(e),g=a.$.rowIndex,h=v(f,g,b),i=b.$.rowSpan,j;if(1<i){j=Math.ceil(i/\n2);for(var i=Math.floor(i/2),a=g+j,e=new CKEDITOR.dom.element(e.$.rows[a]),f=v(f,a),k,a=b.clone(),g=0;g<f.length;g++)if(k=f[g],k.parentNode==e.$&&g>h){a.insertBefore(new CKEDITOR.dom.element(k));break}else k=null;k||e.append(a,!0)}else{i=j=1;e=a.clone();e.insertAfter(a);e.append(a=b.clone());k=v(f,g);for(h=0;h<k.length;h++)k[h].rowSpan++}CKEDITOR.env.ie||a.appendBogus();b.$.rowSpan=j;a.$.rowSpan=i;1==j&&b.removeAttribute(\"rowSpan\");1==i&&a.removeAttribute(\"rowSpan\");return a}function y(c,d){var b=\no(c);if(1<b.length)return!1;if(d)return!0;var b=b[0],a=b.getParent(),e=a.getAscendant(\"table\"),e=CKEDITOR.tools.buildTableMap(e),f=v(e,a.$.rowIndex,b),g=b.$.colSpan;if(1<g)a=Math.ceil(g/2),g=Math.floor(g/2);else{for(var g=a=1,h=[],i=0;i<e.length;i++){var j=e[i];h.push(j[f]);1<j[f].rowSpan&&(i+=j[f].rowSpan-1)}for(e=0;e<h.length;e++)h[e].colSpan++}e=b.clone();e.insertAfter(b);CKEDITOR.env.ie||e.appendBogus();b.$.colSpan=a;e.$.colSpan=g;1==a&&b.removeAttribute(\"colSpan\");1==g&&e.removeAttribute(\"colSpan\");\nreturn e}var z=/^(?:td|th)$/;CKEDITOR.plugins.tabletools={requires:\"table,dialog,contextmenu\",init:function(c){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}var b=c.lang.table;c.addCommand(\"cellProperties\",new CKEDITOR.dialogCommand(\"cellProperties\",d()));CKEDITOR.dialog.add(\"cellProperties\",this.path+\"dialogs/tableCell.js\");c.addCommand(\"rowDelete\",d({exec:function(a){a=\na.getSelection();u(p(a))}}));c.addCommand(\"rowInsertBefore\",d({exec:function(a){a=a.getSelection();m(a,!0)}}));c.addCommand(\"rowInsertAfter\",d({exec:function(a){a=a.getSelection();m(a)}}));c.addCommand(\"columnDelete\",d({exec:function(a){for(var a=a.getSelection(),a=o(a),b=a[0],c=a[a.length-1],a=b.getAscendant(\"table\"),d=CKEDITOR.tools.buildTableMap(a),h,i,j=[],k=0,m=d.length;k<m;k++)for(var l=0,n=d[k].length;l<n;l++)d[k][l]==b.$&&(h=l),d[k][l]==c.$&&(i=l);for(k=h;k<=i;k++)for(l=0;l<d.length;l++)c=\nd[l],b=new CKEDITOR.dom.element(a.$.rows[l]),c=new CKEDITOR.dom.element(c[k]),c.$&&(1==c.$.colSpan?c.remove():c.$.colSpan-=1,l+=c.$.rowSpan-1,b.$.cells.length||j.push(b));i=a.$.rows[0]&&a.$.rows[0].cells;h=new CKEDITOR.dom.element(i[h]||(h?i[h-1]:a.$.parentNode));j.length==m&&a.remove();h&&u(h,!0)}}));c.addCommand(\"columnInsertBefore\",d({exec:function(a){a=a.getSelection();n(a,!0)}}));c.addCommand(\"columnInsertAfter\",d({exec:function(a){a=a.getSelection();n(a)}}));c.addCommand(\"cellDelete\",d({exec:function(a){a=\na.getSelection();s(a)}}));c.addCommand(\"cellMerge\",d({exec:function(a){u(r(a.getSelection()),!0)}}));c.addCommand(\"cellMergeRight\",d({exec:function(a){u(r(a.getSelection(),\"right\"),!0)}}));c.addCommand(\"cellMergeDown\",d({exec:function(a){u(r(a.getSelection(),\"down\"),!0)}}));c.addCommand(\"cellVerticalSplit\",d({exec:function(a){u(x(a.getSelection()))}}));c.addCommand(\"cellHorizontalSplit\",d({exec:function(a){u(y(a.getSelection()))}}));c.addCommand(\"cellInsertBefore\",d({exec:function(a){a=a.getSelection();\nt(a,!0)}}));c.addCommand(\"cellInsertAfter\",d({exec:function(a){a=a.getSelection();t(a)}}));c.addMenuItems&&c.addMenuItems({tablecell:{label:b.cell.menu,group:\"tablecell\",order:1,getItems:function(){var a=c.getSelection(),b=o(a);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:r(a,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:r(a,\"right\",!0)?CKEDITOR.TRISTATE_OFF:\nCKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:r(a,\"down\",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:x(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:y(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<b.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:b.cell.insertBefore,group:\"tablecell\",command:\"cellInsertBefore\",order:5},tablecell_insertAfter:{label:b.cell.insertAfter,\ngroup:\"tablecell\",command:\"cellInsertAfter\",order:10},tablecell_delete:{label:b.cell.deleteCell,group:\"tablecell\",command:\"cellDelete\",order:15},tablecell_merge:{label:b.cell.merge,group:\"tablecell\",command:\"cellMerge\",order:16},tablecell_merge_right:{label:b.cell.mergeRight,group:\"tablecell\",command:\"cellMergeRight\",order:17},tablecell_merge_down:{label:b.cell.mergeDown,group:\"tablecell\",command:\"cellMergeDown\",order:18},tablecell_split_horizontal:{label:b.cell.splitHorizontal,group:\"tablecell\",\ncommand:\"cellHorizontalSplit\",order:19},tablecell_split_vertical:{label:b.cell.splitVertical,group:\"tablecell\",command:\"cellVerticalSplit\",order:20},tablecell_properties:{label:b.cell.title,group:\"tablecellproperties\",command:\"cellProperties\",order:21},tablerow:{label:b.row.menu,group:\"tablerow\",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:b.row.insertBefore,\ngroup:\"tablerow\",command:\"rowInsertBefore\",order:5},tablerow_insertAfter:{label:b.row.insertAfter,group:\"tablerow\",command:\"rowInsertAfter\",order:10},tablerow_delete:{label:b.row.deleteRow,group:\"tablerow\",command:\"rowDelete\",order:15},tablecolumn:{label:b.column.menu,group:\"tablecolumn\",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:b.column.insertBefore,\ngroup:\"tablecolumn\",command:\"columnInsertBefore\",order:5},tablecolumn_insertAfter:{label:b.column.insertAfter,group:\"tablecolumn\",command:\"columnInsertAfter\",order:10},tablecolumn_delete:{label:b.column.deleteColumn,group:\"tablecolumn\",command:\"columnDelete\",order:15}});c.contextMenu&&c.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getSelectedCells:o};\nCKEDITOR.plugins.add(\"tabletools\",CKEDITOR.plugins.tabletools)})();CKEDITOR.tools.buildTableMap=function(o){for(var o=o.$.rows,m=-1,p=[],q=0;q<o.length;q++){m++;!p[m]&&(p[m]=[]);for(var n=-1,t=0;t<o[q].cells.length;t++){var s=o[q].cells[t];for(n++;p[m][n];)n++;for(var u=isNaN(s.colSpan)?1:s.colSpan,s=isNaN(s.rowSpan)?1:s.rowSpan,v=0;v<s;v++){p[m+v]||(p[m+v]=[]);for(var r=0;r<u;r++)p[m+v][n+r]=o[q].cells[t]}n+=u-1}}return p};(function(){function h(a){this.editor=a;this.reset()}CKEDITOR.plugins.add(\"undo\",{init:function(a){function c(a){b.enabled&&!1!==a.data.command.canUndo&&b.save()}var b=new h(a),d=a.addCommand(\"undo\",{exec:function(){b.undo()&&(a.selectionChange(),this.fire(\"afterUndo\"))},state:CKEDITOR.TRISTATE_DISABLED,canUndo:!1}),e=a.addCommand(\"redo\",{exec:function(){b.redo()&&(a.selectionChange(),this.fire(\"afterRedo\"))},state:CKEDITOR.TRISTATE_DISABLED,canUndo:!1});a.setKeystroke([[CKEDITOR.CTRL+90,\"undo\"],\n[CKEDITOR.CTRL+89,\"redo\"],[CKEDITOR.CTRL+CKEDITOR.SHIFT+90,\"redo\"]]);b.onChange=function(){d.setState(b.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);e.setState(b.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on(\"beforeCommandExec\",c);a.on(\"afterCommandExec\",c);a.on(\"saveSnapshot\",function(a){b.save(a.data&&a.data.contentOnly)});a.on(\"contentDom\",function(){a.editable().on(\"keydown\",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b.type(a)})});a.on(\"beforeModeUnload\",\nfunction(){\"wysiwyg\"==a.mode&&b.save(!0)});a.on(\"mode\",function(){b.enabled=a.readOnly?!1:\"wysiwyg\"==a.mode;b.onChange()});a.ui.addButton&&(a.ui.addButton(\"Undo\",{label:a.lang.undo.undo,command:\"undo\",toolbar:\"undo,10\"}),a.ui.addButton(\"Redo\",{label:a.lang.undo.redo,command:\"redo\",toolbar:\"undo,20\"}));a.resetUndo=function(){b.reset();a.fire(\"saveSnapshot\")};a.on(\"updateSnapshot\",function(){b.currentImage&&b.update()});a.on(\"lockSnapshot\",b.lock,b);a.on(\"unlockSnapshot\",b.unlock,b)}});CKEDITOR.plugins.undo=\n{};var i=CKEDITOR.plugins.undo.Image=function(a){this.editor=a;a.fire(\"beforeUndoImage\");var c=a.getSnapshot(),b=c&&a.getSelection();CKEDITOR.env.ie&&c&&(c=c.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));this.contents=c;this.bookmarks=b&&b.createBookmarks2(!0);a.fire(\"afterUndoImage\")},j=/\\b(?:href|src|name)=\"[^\"]*?\"/gi;i.prototype={equals:function(a,c){var b=this.contents,d=a.contents;if(CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat))b=b.replace(j,\"\"),d=d.replace(j,\"\");if(b!=d)return!1;\nif(c)return!0;b=this.bookmarks;d=a.bookmarks;if(b||d){if(!b||!d||b.length!=d.length)return!1;for(var e=0;e<b.length;e++){var g=b[e],f=d[e];if(g.startOffset!=f.startOffset||g.endOffset!=f.endOffset||!CKEDITOR.tools.arrayCompare(g.start,f.start)||!CKEDITOR.tools.arrayCompare(g.end,f.end))return!1}}return!0}};var k={8:1,46:1},m={16:1,17:1,18:1},l={37:1,38:1,39:1,40:1};h.prototype={type:function(a){var a=a&&a.data.getKey(),c=a in k,b=this.lastKeystroke in k,d=c&&a==this.lastKeystroke,e=a in l,g=this.lastKeystroke in\nl;if(!(a in m||this.typing)||!c&&!e&&(b||g)||c&&!d){var f=new i(this.editor),h=this.snapshots.length;CKEDITOR.tools.setTimeout(function(){var a=this.editor.getSnapshot();CKEDITOR.env.ie&&(a=a.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));f.contents!=a&&h==this.snapshots.length&&(this.typing=!0,this.save(!1,f,!1)||this.snapshots.splice(this.index+1,this.snapshots.length-this.index-1),this.hasUndo=!0,this.hasRedo=!1,this.modifiersCount=this.typesCount=1,this.onChange())},0,this)}this.lastKeystroke=a;c?\n(this.typesCount=0,this.modifiersCount++,25<this.modifiersCount&&(this.save(!1,null,!1),this.modifiersCount=1)):e||(this.modifiersCount=0,this.typesCount++,25<this.typesCount&&(this.save(!1,null,!1),this.typesCount=1))},reset:function(){this.lastKeystroke=0;this.snapshots=[];this.index=-1;this.limit=this.editor.config.undoStackSize||20;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.typing=!1;delete this.lastKeystroke;this.modifiersCount=\nthis.typesCount=0},fireChange:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(a,c,b){if(this.locked)return!1;var d=this.snapshots;c||(c=new i(this.editor));if(!1===c.contents||this.currentImage&&c.equals(this.currentImage,a))return!1;d.splice(this.index+1,d.length-this.index-1);d.length==this.limit&&d.shift();this.index=d.push(c)-1;this.currentImage=c;!1!==b&&this.fireChange();return!0},restoreImage:function(a){var c=\nthis.editor,b;a.bookmarks&&(c.focus(),b=c.getSelection());this.locked=1;this.editor.loadSnapshot(a.contents);a.bookmarks?b.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(c=this.editor.document.getBody().$.createTextRange(),c.collapse(!0),c.select());this.locked=0;this.index=a.index;this.update();this.fireChange()},getNextImage:function(a){var c=this.snapshots,b=this.currentImage,d;if(b)if(a)for(d=this.index-1;0<=d;d--){if(a=c[d],!b.equals(a,!0))return a.index=d,a}else for(d=this.index+1;d<c.length;d++)if(a=\nc[d],!b.equals(a,!0))return a.index=d,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(){this.locked||this.snapshots.splice(this.index,1,this.currentImage=\nnew i(this.editor))},lock:function(){if(!this.locked){var a=this.editor.getSnapshot();this.locked={update:this.currentImage&&a==this.currentImage.contents?a:null}}},unlock:function(){if(this.locked){var a=this.locked.update,c=this.editor.getSnapshot();this.locked=null;\"string\"==typeof a&&c!=a&&this.update()}}}})();CKEDITOR.plugins.add(\"wsc\",{requires:\"dialog\",init:function(a){a.addCommand(\"checkspell\",new CKEDITOR.dialogCommand(\"checkspell\")).modes={wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname};\"undefined\"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton(\"SpellChecker\",{label:a.lang.wsc.toolbar,command:\"checkspell\",toolbar:\"spellchecker,10\"});CKEDITOR.dialog.add(\"checkspell\",this.path+\"dialogs/wsc.js\")}});\nCKEDITOR.config.wsc_customerId=CKEDITOR.config.wsc_customerId||\"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk\";CKEDITOR.config.wsc_customLoaderScript=CKEDITOR.config.wsc_customLoaderScript||null;CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,list,indent,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,format,htmlwriter,horizontalrule,wysiwygarea,image,fakeobjects,link,magicline,maximize,pastetext,pastefromword,removeformat,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc';CKEDITOR.config.skin='moono';(function() {var icons = ( 'about,0,bold,32,italic,64,strike,96,subscript,128,superscript,160,underline,192,blockquote,224,copy-rtl,256,copy,288,cut-rtl,320,cut,352,paste-rtl,384,paste,416,bulletedlist-rtl,448,bulletedlist,480,numberedlist-rtl,512,numberedlist,544,indent-rtl,576,indent,608,outdent-rtl,640,outdent,672,horizontalrule,704,image,736,anchor-rtl,768,anchor,800,link,832,unlink,864,maximize,896,pastetext-rtl,928,pastetext,960,pastefromword-rtl,992,pastefromword,1024,removeformat,1056,source-rtl,1088,source,1120,specialchar,1152,scayt,1184,table,1216,redo-rtl,1248,redo,1280,undo-rtl,1312,undo,1344,spellchecker,1376' ),path = CKEDITOR.getUrl( 'plugins/icons.png' ),icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ] };})();CKEDITOR.lang.languages={\"af\":1,\"ar\":1,\"eu\":1,\"bn\":1,\"bs\":1,\"bg\":1,\"ca\":1,\"zh-cn\":1,\"zh\":1,\"hr\":1,\"cs\":1,\"da\":1,\"nl\":1,\"en\":1,\"en-au\":1,\"en-ca\":1,\"en-gb\":1,\"eo\":1,\"et\":1,\"fo\":1,\"fi\":1,\"fr\":1,\"fr-ca\":1,\"gl\":1,\"ka\":1,\"de\":1,\"el\":1,\"gu\":1,\"he\":1,\"hi\":1,\"hu\":1,\"is\":1,\"it\":1,\"ja\":1,\"km\":1,\"ko\":1,\"ku\":1,\"lv\":1,\"lt\":1,\"mk\":1,\"ms\":1,\"mn\":1,\"no\":1,\"nb\":1,\"fa\":1,\"pl\":1,\"pt-br\":1,\"pt\":1,\"ro\":1,\"ru\":1,\"sr\":1,\"sr-latn\":1,\"sk\":1,\"sl\":1,\"es\":1,\"sv\":1,\"th\":1,\"tr\":1,\"ug\":1,\"uk\":1,\"vi\":1,\"cy\":1};}());"
  },
  {
    "path": "target/mongo/assets/clockface/css/clockface.css",
    "content": ".clearfix {\n  *zoom: 1;\n}\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  content: \"\";\n  line-height: 0;\n}\n.clearfix:after {\n  clear: both;\n}\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.clockface {\n  width: 160px;\n  padding: 3px;\n  text-align: center;\n  /*\n    .l3 .center span {\n    \tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\t.ie7-inline-block();  \n\t\tpadding: 0 2px;  \t\n    }\n    */\n\n  /*\n    input {\n    \twidth: 20px;\n    \tmargin: 0;\n    \tvertical-align: top; \n     }\t\n\n    a {\n    \ttext-decoration: none;\n    \tpadding: 0 3px;\n    \tvertical-align: top;\n    \tfont-size: 0.85em;\n    \t.border-radius(3px);\n\n    \t&.am {margin-right: 8px;}\t\n    \t\n    \t&.active,\n    \t&.active:hover {\n    \t\t.buttonBackground(@btnSuccessBackground, spin(@btnSuccessBackground, 20));\n    \t}\n    }\n    */\n\n}\n.clockface > div {\n  clear: both;\n  overflow: auto;\n}\n.clockface .outer,\n.clockface .inner {\n  width: 22px;\n  height: 22px;\n  line-height: 22px;\n  cursor: default;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.clockface .outer.active,\n.clockface .inner.active,\n.clockface .outer.active:hover,\n.clockface .inner.active:hover {\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.clockface .outer:hover,\n.clockface .inner:hover {\n  background-color: #dcdcdc;\n}\n.clockface .outer {\n  color: gray;\n  font-size: 0.8em;\n}\n.clockface .outer.active,\n.clockface .outer.active:hover {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #5bb75b;\n  background-image: -moz-linear-gradient(top, #62c462, #51a351);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));\n  background-image: -webkit-linear-gradient(top, #62c462, #51a351);\n  background-image: -o-linear-gradient(top, #62c462, #51a351);\n  background-image: linear-gradient(to bottom, #62c462, #51a351);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);\n  border-color: #51a351 #51a351 #387038;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #51a351;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.clockface .outer.active:hover,\n.clockface .outer.active:hover:hover,\n.clockface .outer.active:active,\n.clockface .outer.active:hover:active,\n.clockface .outer.active.active,\n.clockface .outer.active:hover.active,\n.clockface .outer.active.disabled,\n.clockface .outer.active:hover.disabled,\n.clockface .outer.active[disabled],\n.clockface .outer.active:hover[disabled] {\n  color: #ffffff;\n  background-color: #51a351;\n  *background-color: #499249;\n}\n.clockface .outer.active:active,\n.clockface .outer.active:hover:active,\n.clockface .outer.active.active,\n.clockface .outer.active:hover.active {\n  background-color: #408140 \\9;\n}\n.clockface .inner.active,\n.clockface .inner.active:hover {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #0044cc;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.clockface .inner.active:hover,\n.clockface .inner.active:hover:hover,\n.clockface .inner.active:active,\n.clockface .inner.active:hover:active,\n.clockface .inner.active.active,\n.clockface .inner.active:hover.active,\n.clockface .inner.active.disabled,\n.clockface .inner.active:hover.disabled,\n.clockface .inner.active[disabled],\n.clockface .inner.active:hover[disabled] {\n  color: #ffffff;\n  background-color: #0044cc;\n  *background-color: #003bb3;\n}\n.clockface .inner.active:active,\n.clockface .inner.active:hover:active,\n.clockface .inner.active.active,\n.clockface .inner.active:hover.active {\n  background-color: #003399 \\9;\n}\n.clockface .l1 .cell,\n.clockface .l5 .cell {\n  width: 22px;\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n}\n.clockface .l1 .outer {\n  margin-bottom: 3px;\n}\n.clockface .l5 .outer {\n  margin-top: 3px;\n}\n.clockface .l2 .outer,\n.clockface .l3 .outer,\n.clockface .l4 .outer,\n.clockface .l2 .inner,\n.clockface .l3 .inner,\n.clockface .l4 .inner {\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n  vertical-align: middle;\n}\n.clockface .l2 .left,\n.clockface .l3 .left,\n.clockface .l4 .left {\n  float: left;\n}\n.clockface .l2 .left .outer,\n.clockface .l3 .left .outer,\n.clockface .l4 .left .outer {\n  margin-right: 3px;\n}\n.clockface .l2 .right,\n.clockface .l3 .right,\n.clockface .l4 .right {\n  float: right;\n}\n.clockface .l2 .right .outer,\n.clockface .l3 .right .outer,\n.clockface .l4 .right .outer {\n  margin-left: 3px;\n}\n.clockface .ampm {\n  font-size: 0.8em;\n  text-decoration: none;\n  border-bottom: dashed 1px;\n}\n.clockface .ampm:focus {\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n}\n"
  },
  {
    "path": "target/mongo/assets/clockface/js/clockface.js",
    "content": "/**\n* Clockface - v1.0.0\n* Clockface timepicker for Twitter Bootstrap\n*\n* Confusion with noon and midnight: \n* http://en.wikipedia.org/wiki/12-hour_clock\n* Here considered '00:00 am' as midnight and '12:00 pm' as noon.\n*\n* Author: Vitaliy Potapov\n* Project page: http://github.com/vitalets/clockface\n* Copyright (c) 2012 Vitaliy Potapov. Released under MIT License.\n**/\n(function ($) {\n\n    var Clockface = function (element, options) {\n        this.$element = $(element);\n        this.options = $.extend({}, $.fn.clockface.defaults, options, this.$element.data());\n        this.init();  \n     };\n\n    Clockface.prototype = {\n        constructor: Clockface, \n        init: function () {\n          //apply template\n          this.$clockface = $($.fn.clockface.template);\n          this.$clockface.find('.l1 .cell, .left.cell').html('<div class=\"outer\"></div><div class=\"inner\"></div>'); \n          this.$clockface.find('.l5 .cell, .right.cell').html('<div class=\"inner\"></div><div class=\"outer\"></div>'); \n          this.$clockface.hide();\n\n          this.$outer = this.$clockface.find('.outer');\n          this.$inner = this.$clockface.find('.inner');\n          this.$ampm = this.$clockface.find('.ampm');\n\n          //internal vars\n          this.ampm = null;\n          this.hour = null;\n          this.minute = null;\n          \n          //click am/pm \n          this.$ampm.click($.proxy(this.clickAmPm, this));\n\n          //click cell\n          this.$clockface.on('click', '.cell', $.proxy(this.click, this));\n\n          this.parseFormat();\n          this.prepareRegexp();\n\n          //set ampm text\n          this.ampmtext = this.is24 ? {am: '12-23', pm: '0-11'} : {am: 'AM', pm: 'PM'};\n\n          this.isInline = this.$element.is('div');\n          if(this.isInline) {\n            this.$clockface.addClass('clockface-inline').appendTo(this.$element);\n          } else {\n            this.$clockface.addClass('dropdown-menu').appendTo('body');\n            if(this.options.trigger === 'focus') {\n              this.$element.on('focus.clockface', $.proxy(function(e) { this.show(); }, this));\n            }\n\n            // Click outside hide it. Register single handler for all clockface widgets\n            $(document).off('click.clockface').on('click.clockface', $.proxy(function (e) {\n                var $target = $(e.target);\n                //click inside some clockface --> do nothing\n                if ($target.closest('.clockface').length) {\n                  return;\n                }\n                //iterate all open clockface and close all except current\n                $('.clockface-open').each(function(){\n                  if(this === e.target) {\n                    return;\n                  }\n                  $(this).clockface('hide');\n                });\n            }, this));\n          }\n\n          //fill minutes once\n          this.fill('minute');\n        },\n\n        /*\n        Displays widget with specified value\n        */\n        show: function(value) {\n            if(this.$clockface.is(':visible')) {\n              return;\n            }\n            if(!this.isInline) {\n                if(value === undefined) {\n                  value = this.$element.val();\n                }\n                this.$element.addClass('clockface-open');\n                this.$element.on('keydown.clockface', $.proxy(this.keydown, this));\n                this.place();\n                $(window).on('resize.clockface', $.proxy(this.place, this));\n            }\n            this.$clockface.show();\n            this.setTime(value);\n\n            //trigger shown event\n            this.$element.triggerHandler('shown.clockface', this.getTime(true));\n        },\n        /*\n        hides widget\n        */\n        hide: function() {\n            this.$clockface.hide();\n            if(!this.isInline) {\n              this.$element.removeClass('clockface-open');  \n              this.$element.off('keydown.clockface');\n              $(window).off('resize.clockface');\n            }\n\n            //trigger hidden event\n            this.$element.triggerHandler('hidden.clockface', this.getTime(true));            \n        },\n\n        /*\n        toggles show/hide\n        */\n        toggle: function(value) {\n          if(this.$clockface.is(':visible')) {\n            this.hide();\n          } else {\n            this.show(value);\n          }\n        },\n\n         /*\n        Set time of clockface. Am/pm will be set automatically.\n        Value can be Date object or string\n        */\n        setTime: function(value) {\n          var res, hour, minute, ampm = 'am';\n\n          //no new value \n          if(value === undefined) {\n            //if ampm null, it;s first showw, need to render hours ('am' by default)\n            if(this.ampm === null) {\n              this.setAmPm('am');\n            }\n            return;\n          }\n\n          //take value from Date object\n          if(value instanceof Date) {\n            hour = value.getHours();\n            minute = value.getMinutes();\n          }\n\n          //parse value from string\n          if(typeof value === 'string' && value.length) { \n            res = this.parseTime(value);\n\n            //'24' always '0'\n            if(res.hour === 24) {\n              res.hour = 0;\n            }\n\n            hour = res.hour;             \n            minute = res.minute;             \n            ampm = res.ampm;             \n          }\n\n          //try to set ampm automatically\n          if(hour > 11 && hour < 24) {\n            ampm = 'pm';\n            //for 12h format substract 12 from value \n            if(!this.is24 && hour > 12) {\n              hour -= 12;\n            }\n          } else if(hour >= 0 && hour < 11) {\n                //always set am for 24h and for '0' in 12h \n                if(this.is24 || hour === 0) {\n                   ampm = 'am';\n               } \n               //otherwise ampm should be defined in value itself and retrieved when parsing\n          }      \n\n          this.setAmPm(ampm);\n          this.setHour(hour);\n          this.setMinute(minute);\n        },   \n\n        /*\n        Set ampm and re-fill hours\n        */\n        setAmPm: function(value) {\n          if(value === this.ampm) {\n             return;\n          } else {\n             this.ampm = value === 'am' ? 'am' : 'pm';\n          }\n\n          //set link's text\n          this.$ampm.text(this.ampmtext[this.ampm]);\n\n          //re-fill and highlight hour\n          this.fill('hour');\n          this.highlight('hour');\n        },   \n        /*\n        Sets hour value and highlight if possible\n        */\n        setHour: function(value) {\n          value = parseInt(value, 10);\n          value = isNaN(value) ? null : value;\n          if(value < 0 || value > 23) {\n            value = null;\n          }\n\n          if(value === this.hour) {\n            return;\n          } else {\n            this.hour = value;\n          }\n\n          this.highlight('hour');\n        },\n\n        /*\n        Sets minute value and highlight\n        */\n        setMinute: function(value) {\n          value = parseInt(value, 10);\n          value = isNaN(value) ? null : value;\n          if(value < 0 || value > 59) {\n            value = null;\n          }\n\n          if(value === this.minute) {\n            return;\n          } else {\n            this.minute = value;\n          }\n\n          this.highlight('minute');\n        },        \n\n        /*\n        Highlights hour/minute\n        */\n        highlight: function(what) {\n          var index,\n              values = this.getValues(what),\n              value = what === 'minute' ? this.minute : this.hour,\n              $cells = what === 'minute' ? this.$outer : this.$inner;\n\n          $cells.removeClass('active');\n\n          //find index of value and highlight if possible\n          index = $.inArray(value, values);\n          if(index >= 0) {\n            $cells.eq(index).addClass('active');\n          }\n        },\n\n        /*\n        Fill values around\n        */ \n        fill: function(what) {\n          var values = this.getValues(what),\n              $cells = what === 'minute' ? this.$outer : this.$inner,\n              leadZero = what === 'minute';           \n\n          $cells.each(function(i){\n            var v = values[i];\n            if(leadZero && v < 10) {\n              v = '0' + v;\n            }\n            $(this).text(v);\n          });\n        },          \n\n        /*\n        returns values of hours or minutes, depend on ampm and 24/12 format (0-11, 12-23, 00-55, etc)\n        param what: 'hour'/'minute'\n        */\n        getValues: function(what) {\n          var values = [11, 0, 1, 10, 2, 9, 3, 8, 4, 7, 6, 5],\n              result = [];\n\n          if(what === 'minute') {\n              $.each(values, function(i, v) { result[i] = v*5; });\n          } else if(this.ampm === 'pm') {\n              if(this.is24) {\n                $.each(values, function(i, v) { result[i] = v+12; });\n              } else {\n                result = values.slice();\n                result[1] = 12; //need this to show '12' instead of '0' for 12h pm\n              }\n          } else {\n             result = values.slice();\n          }\n          return result;\n        },\n\n        /*\n        Click cell handler.\n        Stores hour/minute and highlights.\n        On second click deselect value\n        */\n        click: function(e) {\n          var $target = $(e.target),\n              value = $target.hasClass('active') ? null : $target.text();\n          if($target.hasClass('inner')) {\n            this.setHour(value);\n          } else {\n            this.setMinute(value);\n          }\n\n          //update value in input\n          if(!this.isInline) {\n            this.$element.val(this.getTime());\n          }          \n\n          //trigger pick event\n          this.$element.triggerHandler('pick.clockface', this.getTime(true));  \n        },\n\n        /*\n        Click handler on ampm link\n        */\n        clickAmPm: function(e) {\n          e.preventDefault();\n          //toggle am/pm\n          this.setAmPm(this.ampm === 'am' ? 'pm' : 'am');\n\n          //update value in input\n          if(!this.isInline && !this.is24) {\n            this.$element.val(this.getTime());\n          }    \n\n          //trigger pick event\n          this.$element.triggerHandler('pick.clockface', this.getTime(true));                  \n        },\n        \n\n        /*\n        Place widget below input\n        */\n        place: function(){\n          var zIndex = parseInt(this.$element.parents().filter(function() {\n                   return $(this).css('z-index') != 'auto';\n             }).first().css('z-index'), 10)+10,\n             offset = this.$element.offset();\n          this.$clockface.css({\n            top: offset.top + this.$element.outerHeight(),\n            left: offset.left,\n            zIndex: zIndex\n          });\n        },  \n\n        /*\n        keydown handler (for not inline mode)\n        */\n        keydown: function(e) {\n          //tab, escape, enter --> hide\n          if(/^(9|27|13)$/.test(e.which)) {\n            this.hide();\n            return;\n          } \n\n          clearTimeout(this.timer);\n          this.timer = setTimeout($.proxy(function(){\n            this.setTime(this.$element.val());\n          }, this), 500);\n        },  \n\n        /*\n        Parse format from options and set this.is24\n        */\n        parseFormat: function() {\n          var format = this.options.format,\n              hFormat = 'HH',\n              mFormat = 'mm';\n\n          //hour format    \n          $.each(['HH', 'hh', 'H', 'h'], function(i, f){\n            if(format.indexOf(f) !== -1) {\n              hFormat = f;\n              return false;\n            }\n          });\n\n          //minute format\n          $.each(['mm', 'm'], function(i, f){\n            if(format.indexOf(f) !== -1) {\n              mFormat = f;\n              return false;\n            }\n          });          \n\n          //is 24 hour format\n          this.is24 = hFormat.indexOf('H') !== -1; \n\n          this.hFormat = hFormat;\n          this.mFormat = mFormat;\n        },\n\n       \n\n        /*\n        Parse value passed as string or Date object\n        */\n        parseTime: function(value) {\n          var hour = null, \n              minute = null, \n              ampm = 'am', \n              parts = [], digits;\n\n            value = $.trim(value);\n\n            //try parse time from string assuming separator exist\n            if(this.regexpSep) {\n                parts = value.match(this.regexpSep);\n            }\n\n            if(parts && parts.length) {\n              hour = parts[1] ? parseInt(parts[1], 10) : null;\n              minute = parts[2] ? parseInt(parts[2], 10): null;\n              ampm = (!parts[3] || parts[3].toLowerCase() === 'a') ? 'am' : 'pm';\n            } else {\n              //if parse with separator failed, search for 1,4-digit block and process it\n              //use reversed string to start from end (usefull with full dates)\n              //see http://stackoverflow.com/questions/141348/what-is-the-best-way-to-parse-a-time-into-a-date-object-from-user-input-in-javas\n              value = value.split('').reverse().join('').replace(/\\s/g, '');\n              parts = value.match(this.regexpNoSep);\n              if(parts && parts.length) {\n                ampm = (!parts[1] || parts[1].toLowerCase() === 'a') ? 'am' : 'pm';\n                //reverse back\n                digits = parts[2].split('').reverse().join('');\n                //use smart analyzing to detect hours and minutes\n                switch(digits.length) {\n                  case 1:\n                    hour = parseInt(digits, 10); //e.g. '6'\n                  break;\n                  case 2:\n                    hour = parseInt(digits, 10); //e.g. '16'\n                    //if((this.is24 && hour > 24) || (!this.is24 && hour > 12)) { //e.g. 26\n                    if(hour > 24) { //e.g. 26\n                      hour = parseInt(digits[0], 10);\n                      minute = parseInt(digits[1], 10);\n                    }\n                  break;\n                  case 3:\n                    hour = parseInt(digits[0], 10);  //e.g. 105\n                    minute = parseInt(digits[1]+digits[2], 10); \n                    if(minute > 59) { \n                      hour = parseInt(digits[0]+digits[1], 10); //e.g. 195\n                      minute = parseInt(digits[2], 10); \n                      if(hour > 24) {\n                        hour = null;\n                        minute = null;\n                      }\n                    }\n                  break;\n                  case 4:\n                    hour = parseInt(digits[0]+digits[1], 10); //e.g. 2006\n                    minute = parseInt(digits[2]+digits[3], 10);\n                    if(hour > 24) {\n                      hour = null;\n                    }\n                    if(minute > 59) {\n                      minute = null;\n                    }\n                }\n              }\n            }\n\n          return {hour: hour, minute: minute, ampm: ampm};\n        },\n\n        prepareRegexp: function() {\n            //take separator from format\n            var sep = this.options.format.match(/h\\s*([^hm]?)\\s*m/i); //HH-mm, HH:mm\n            if(sep && sep.length) {\n              sep = sep[1];\n            } \n\n            //sep can be null for HH, and '' for HHmm \n            this.separator = sep;\n    \n            //parse from string\n            //use reversed string and regexp to parse 2-digit minutes first\n            //see http://stackoverflow.com/questions/141348/what-is-the-best-way-to-parse-a-time-into-a-date-object-from-user-input-in-javas\n            //this.regexp = new RegExp('(a|p)?\\\\s*((\\\\d\\\\d?)' + sep + ')?(\\\\d\\\\d?)', 'i');\n\n            //regexp, used with separator\n            this.regexpSep = (this.separator && this.separator.length) ? new RegExp('(\\\\d\\\\d?)\\\\s*\\\\' + this.separator + '\\\\s*(\\\\d?\\\\d?)\\\\s*(a|p)?', 'i') : null;\n\n            //second regexp applied if previous has no result or separator is empty (to reversed string)\n            this.regexpNoSep = new RegExp('(a|p)?\\\\s*(\\\\d{1,4})', 'i');\n        },\n\n        /*\n        Returns time as string in specified format\n        */\n        getTime: function(asObject) {\n          if(asObject === true) {\n            return {\n              hour: this.hour,\n              minute: this.minute,\n              ampm: this.ampm\n            };\n          }\n\n          var hour = this.hour !== null ? this.hour + '' : '',\n              minute = this.minute !== null ? this.minute + '' : '',\n              result = this.options.format;\n\n          if(!hour.length && !minute.length) {\n            return '';\n          }   \n\n          if(this.hFormat.length > 1 && hour.length === 1) {\n            hour = '0' + hour;\n          }   \n\n          if(this.mFormat.length > 1 && minute.length === 1) {\n            minute = '0' + minute;\n          }\n\n          //delete separator if no minutes\n          if(!minute.length && this.separator) {\n            result = result.replace(this.separator, '');\n          }\n\n          result = result.replace(this.hFormat, hour).replace(this.mFormat, minute);\n          if(!this.is24) {\n            if(result.indexOf('A') !== -1) {\n               result = result.replace('A', this.ampm.toUpperCase());\n            } else {\n               result = result.replace('a', this.ampm);\n            }\n          }\n\n          return result;\n        },\n\n        /*\n        Removes widget and detach events\n        */\n        destroy: function() {\n          this.hide();\n          this.$clockface.remove();\n          if(!this.isInline && this.options.trigger === 'focus') {\n            this.$element.off('focus.clockface');\n          }          \n        }\n    };\n\n    $.fn.clockface = function ( option ) {\n        var d, args = Array.apply(null, arguments);\n        args.shift();\n\n        //getTime returns string (not jQuery onject)\n        if(option === 'getTime' && this.length && (d = this.eq(0).data('clockface'))) {\n          return d.getTime.apply(d, args);\n        }\n\n        return this.each(function () {\n            var $this = $(this),\n            data = $this.data('clockface'),\n            options = typeof option == 'object' && option;\n            if (!data) {\n                $this.data('clockface', (data = new Clockface(this, options)));\n            }\n            if (typeof option == 'string' && typeof data[option] == 'function') {\n                data[option].apply(data, args);\n            }\n        });\n    };  \n    \n    $.fn.clockface.defaults = {\n        //see http://momentjs.com/docs/#/displaying/format/\n        format: 'H:mm',\n        trigger: 'focus' //focus|manual\n    };\n   \n\n $.fn.clockface.template = ''+\n      '<div class=\"clockface\">' +\n          '<div class=\"l1\">' +\n              '<div class=\"cell\"></div>' +\n              '<div class=\"cell\"></div>' +\n              '<div class=\"cell\"></div>' +\n          '</div>' +\n          '<div class=\"l2\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n          '</div>'+\n          '<div class=\"l3\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n                '<div class=\"center\"><a href=\"#\" class=\"ampm\"></a></div>' +\n          '</div>'+\n          '<div class=\"l4\">' +\n                '<div class=\"cell left\"></div>' +\n                '<div class=\"cell right\"></div>' +\n          '</div>'+\n          '<div class=\"l5\">' +\n                '<div class=\"cell\"></div>' +\n                '<div class=\"cell\"></div>' +\n                '<div class=\"cell\"></div>' +\n          '</div>'+\n      '</div>';  \n\n}(window.jQuery));"
  },
  {
    "path": "target/mongo/assets/data-tables/DT_bootstrap.css",
    "content": "\ndiv.dataTables_length label {\n\tfloat: left;\n\ttext-align: left;\n}\n\ndiv.dataTables_length select {\n\twidth: 75px;\n}\n\ndiv.dataTables_filter label {\n\tfloat: right;\n}\n\ndiv.dataTables_info {\n\tpadding-top: 8px;\n}\n\ndiv.dataTables_paginate {\n\tfloat: right;\n\tmargin: 0;\n}\n\ntable.table {\n\tclear: both;\n\tmargin-bottom: 6px !important;\n\tmax-width: none !important;\n}\n\ntable.table thead .sorting,\ntable.table thead .sorting_asc,\ntable.table thead .sorting_desc,\ntable.table thead .sorting_asc_disabled,\ntable.table thead .sorting_desc_disabled {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.table thead .sorting { background: url('images/sort_both.png') no-repeat center right; }\ntable.table thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }\ntable.table thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }\n\ntable.table thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }\ntable.table thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n/* Scrolling */\ndiv.dataTables_scrollHead table {\n\tmargin-bottom: 0 !important;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\ndiv.dataTables_scrollHead table thead tr:last-child th:first-child,\ndiv.dataTables_scrollHead table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody tbody tr:first-child th,\ndiv.dataTables_scrollBody tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n\tborder-top: none;\n}\n\n\n\n\n/*\n * TableTools styles\n */\n.table tbody tr.active td,\n.table tbody tr.active th {\n\tbackground-color: #08C;\n\tcolor: white;\n}\n\n.table tbody tr.active:hover td,\n.table tbody tr.active:hover th {\n\tbackground-color: #0075b0 !important;\n}\n\n.table-striped tbody tr.active:nth-child(odd) td,\n.table-striped tbody tr.active:nth-child(odd) th {\n\tbackground-color: #017ebc;\n}\n\ntable.DTTT_selectable tbody tr {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.DTTT .btn {\n\tcolor: #333 !important;\n\tfont-size: 12px;\n}\n\ndiv.DTTT .btn:hover {\n\ttext-decoration: none !important;\n}\n\n\nul.DTTT_dropdown.dropdown-menu a {\n\tcolor: #333 !important; /* needed only when demo_page.css is included */\n}\n\nul.DTTT_dropdown.dropdown-menu li:hover a {\n\tbackground-color: #0088cc;\n\tcolor: white !important;\n}\n\n/* TableTools information display */\ndiv.DTTT_print_info.modal {\n\theight: 150px;\n\tmargin-top: -75px;\n\ttext-align: center;\n}\n\ndiv.DTTT_print_info h6 {\n\tfont-weight: normal;\n\tfont-size: 28px;\n\tline-height: 28px;\n\tmargin: 1em;\n}\n\ndiv.DTTT_print_info p {\n\tfont-size: 14px;\n\tline-height: 20px;\n}\n\n\n\n/*\n * FixedColumns styles\n */\ndiv.DTFC_LeftHeadWrapper table,\ndiv.DTFC_LeftFootWrapper table,\ntable.DTFC_Cloned tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTFC_LeftHeadWrapper table {\n\tmargin-bottom: 0 !important;\n\tborder-top-right-radius: 0 !important;\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child th,\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.DTFC_LeftFootWrapper table {\n\tborder-top: none;\n}\n"
  },
  {
    "path": "target/mongo/assets/data-tables/DT_bootstrap.js",
    "content": "/* Set the defaults for DataTables initialisation */\n$.extend( true, $.fn.dataTable.defaults, {\n\t\"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\"sPaginationType\": \"bootstrap\",\n\t\"oLanguage\": {\n\t\t\"sLengthMenu\": \"_MENU_ records per page\"\n\t}\n} );\n\n\n/* Default class modification */\n$.extend( $.fn.dataTableExt.oStdClasses, {\n\t\"sWrapper\": \"dataTables_wrapper form-inline\"\n} );\n\n\n/* API method to get paging information */\n$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n{\n\treturn {\n\t\t\"iStart\":         oSettings._iDisplayStart,\n\t\t\"iEnd\":           oSettings.fnDisplayEnd(),\n\t\t\"iLength\":        oSettings._iDisplayLength,\n\t\t\"iTotal\":         oSettings.fnRecordsTotal(),\n\t\t\"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n\t\t\"iPage\":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n\t\t\"iTotalPages\":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n\t};\n};\n\n\n/* Bootstrap style pagination control */\n$.extend( $.fn.dataTableExt.oPagination, {\n\t\"bootstrap\": {\n\t\t\"fnInit\": function( oSettings, nPaging, fnDraw ) {\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(nPaging).addClass('pagination').append(\n\t\t\t\t'<ul>'+\n\t\t\t\t\t'<li class=\"prev disabled\"><a href=\"#\">&larr; '+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t'<li class=\"next disabled\"><a href=\"#\">'+oLang.sNext+' &rarr; </a></li>'+\n\t\t\t\t'</ul>'\n\t\t\t);\n\t\t\tvar els = $('a', nPaging);\n\t\t\t$(els[0]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n\t\t\t$(els[1]).bind( 'click.DT', { action: \"next\" }, fnClickHandler );\n\t\t},\n\n\t\t\"fnUpdate\": function ( oSettings, fnDraw ) {\n\t\t\tvar iListLength = 5;\n\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n\n\t\t\tif ( oPaging.iTotalPages < iListLength) {\n\t\t\t\tiStart = 1;\n\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t}\n\t\t\telse if ( oPaging.iPage <= iHalf ) {\n\t\t\t\tiStart = 1;\n\t\t\t\tiEnd = iListLength;\n\t\t\t} else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n\t\t\t\tiStart = oPaging.iTotalPages - iListLength + 1;\n\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t} else {\n\t\t\t\tiStart = oPaging.iPage - iHalf + 1;\n\t\t\t\tiEnd = iStart + iListLength - 1;\n\t\t\t}\n\n\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t\t\t// Remove the middle elements\n\t\t\t\t$('li:gt(0)', an[i]).filter(':not(:last)').remove();\n\n\t\t\t\t// Add the new list items and their event handlers\n\t\t\t\tfor ( j=iStart ; j<=iEnd ; j++ ) {\n\t\t\t\t\tsClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n\t\t\t\t\t$('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n\t\t\t\t\t\t.insertBefore( $('li:last', an[i])[0] )\n\t\t\t\t\t\t.bind('click', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\toSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\n\t\t\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Add / remove disabled classes from the static elements\n\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t$('li:first', an[i]).addClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$('li:first', an[i]).removeClass('disabled');\n\t\t\t\t}\n\n\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t$('li:last', an[i]).addClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$('li:last', an[i]).removeClass('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\n\n/*\n * TableTools Bootstrap compatibility\n * Required TableTools 2.1+\n */\nif ( $.fn.DataTable.TableTools ) {\n\t// Set the classes that TableTools uses to something suitable for Bootstrap\n\t$.extend( true, $.fn.DataTable.TableTools.classes, {\n\t\t\"container\": \"DTTT btn-group\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"btn\",\n\t\t\t\"disabled\": \"disabled\"\n\t\t},\n\t\t\"collection\": {\n\t\t\t\"container\": \"DTTT_dropdown dropdown-menu\",\n\t\t\t\"buttons\": {\n\t\t\t\t\"normal\": \"\",\n\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t}\n\t\t},\n\t\t\"print\": {\n\t\t\t\"info\": \"DTTT_print_info modal\"\n\t\t},\n\t\t\"select\": {\n\t\t\t\"row\": \"active\"\n\t\t}\n\t} );\n\n\t// Have the collection use a bootstrap compatible dropdown\n\t$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n\t\t\"collection\": {\n\t\t\t\"container\": \"ul\",\n\t\t\t\"button\": \"li\",\n\t\t\t\"liner\": \"a\"\n\t\t}\n\t} );\n}"
  },
  {
    "path": "target/mongo/assets/data-tables/jquery.dataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a column to the list used for the table with default values\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nTh The th element for this column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddColumn( oSettings, nTh )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.columns;\n\t\t\tvar iCol = oSettings.aoColumns.length;\n\t\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t\t\t} );\n\t\t\toSettings.aoColumns.push( oCol );\n\t\t\t\n\t\t\t/* Add a column specific filter */\n\t\t\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t\t\t{\n\t\t\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\t\t\n\t\t\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\t\t\tif ( oPre.bRegex === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bRegex = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bSmart === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bSmart = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bCaseInsensitive = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Use the column options function to initialise classes etc */\n\t\t\t_fnColumnOptions( oSettings, iCol, null );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply options for a column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column index to consider\n\t\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\t\t\n\t\t\t/* User specified column options */\n\t\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t\t{\n\t\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t\t\t{\n\t\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oOptions.sType !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = oOptions.sType;\n\t\t\t\t\toCol._bAutoType = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$.extend( oCol, oOptions );\n\t\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\t\n\t\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t\t * priority if defined\n\t\t\t\t */\n\t\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t\t}\n\t\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t\t}\n\t\t\n\t\t\t/* Cache the data get and set functions for speed */\n\t\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\t\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\t\t\n\t\t\toCol.fnGetData = function (oData, sSpecific) {\n\t\t\t\tvar innerData = mData( oData, sSpecific );\n\t\t\n\t\t\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t\t\t{\n\t\t\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t\t\t}\n\t\t\t\treturn innerData;\n\t\t\t};\n\t\t\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\t\t\n\t\t\t/* Feature sorting overrides column specific when off */\n\t\t\tif ( !oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\toCol.bSortable = false;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check that the class assignment is correct for sorting */\n\t\t\tif ( !oCol.bSortable ||\n\t\t\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\t\t\toCol.sSortingClassJUI = \"\";\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust the table column widths for new data. Note: you would probably want to \n\t\t * do a redraw after calling this function!\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAdjustColumnSizing ( oSettings )\n\t\t{\n\t\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of a visible column to the index in the data array (take account\n\t\t * of hidden columns)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMatch Visible column index to lookup\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\n\t\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\t\taiVis[iMatch] :\n\t\t\t\tnull;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of an index in the data array and convert it to the visible\n\t\t *   column index (take account of hidden columns)\n\t\t *  @param {int} iMatch Column index to lookup\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\t\n\t\t\treturn iPos !== -1 ? iPos : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the number of visible columns\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the number of visible columns\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisbleColumns( oSettings )\n\t\t{\n\t\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of column indexes that match a given property\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sParam Parameter in aoColumns to look for - typically \n\t\t *    bVisible or bSearchable\n\t\t *  @returns {array} Array of indexes with matched properties\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetColumns( oSettings, sParam )\n\t\t{\n\t\t\tvar a = [];\n\t\t\n\t\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\t\tif ( val[sParam] ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\treturn a;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the sort type based on an input string\n\t\t *  @param {string} sData data we wish to know the type of\n\t\t *  @returns {string} type (defaults to 'string' if no type can be detected)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectType( sData )\n\t\t{\n\t\t\tvar aTypes = DataTable.ext.aTypes;\n\t\t\tvar iLen = aTypes.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sType = aTypes[i]( sData );\n\t\t\t\tif ( sType !== null )\n\t\t\t\t{\n\t\t\t\t\treturn sType;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'string';\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Figure out how to reorder a display list\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {int} aiReturn index list for reordering\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReOrderIndex ( oSettings, sColumns )\n\t\t{\n\t\t\tvar aColumns = sColumns.split(',');\n\t\t\tvar aiReturn = [];\n\t\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\taiReturn.push( j );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aiReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the column ordering that DataTables expects\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {string} comma separated list of names\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOrdering ( oSettings )\n\t\t{\n\t\t\tvar sNames = '';\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t\t\t}\n\t\t\tif ( sNames.length == iLen )\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\treturn sNames.slice(0, -1);\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take the column definitions and static columns arrays and calculate how\n\t\t * they relate to column indexes. The callback function will then apply the\n\t\t * definition found for a column to a suitable configuration object.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t\t *    column index and the definition for that column.\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen;\n\t\t\n\t\t\t// Column definitions with aTargets\n\t\t\tif ( aoColDefs )\n\t\t\t{\n\t\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t\t{\n\t\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t// Statically defined columns array\n\t\t\tif ( aoCols )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfn( i, aoCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add a data array to the table, creating DOM node etc. This is the parallel to \n\t\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t\t * DOM source.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData data array to be added\n\t\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddData ( oSettings, aDataSupplied )\n\t\t{\n\t\t\tvar oCol;\n\t\t\t\n\t\t\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\t\t\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\t\t\taDataSupplied.slice() :\n\t\t\t\t$.extend( true, {}, aDataSupplied );\n\t\t\t\n\t\t\t/* Create the object for storing information about this new row */\n\t\t\tvar iRow = oSettings.aoData.length;\n\t\t\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\t\t\toData._aData = aDataIn;\n\t\t\toSettings.aoData.push( oData );\n\t\t\n\t\t\t/* Create the cells */\n\t\t\tvar nTd, sThisType;\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\t\n\t\t\t\t/* Use rendered data for filtering / sorting */\n\t\t\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* See if we should auto-detect the column type */\n\t\t\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Add to the display array */\n\t\t\toSettings.aiDisplayMaster.push( iRow );\n\t\t\n\t\t\t/* Create the DOM information */\n\t\t\tif ( !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, iRow );\n\t\t\t}\n\t\t\n\t\t\treturn iRow;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read in the data from the target table from the DOM\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGatherData( oSettings )\n\t\t{\n\t\t\tvar iLoop, i, iLen, j, jLen, jInner,\n\t\t\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\t\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\t\t\toCol, oData;\n\t\t\t\n\t\t\t/*\n\t\t\t * Process by row first\n\t\t\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t\t\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t\t\t */\n\t\t\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t\t\t{\n\t\t\t\tnTr = oSettings.nTBody.firstChild;\n\t\t\t\twhile ( nTr )\n\t\t\t\t{\n\t\t\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t\t\t} ) );\n\t\t\n\t\t\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\t\t\tjInner = 0;\n\t\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\t\t\tjInner++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnTr = nTr.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t\t\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t\t\t * setup!\n\t\t\t */\n\t\t\tnTrs = _fnGetTrNodes( oSettings );\n\t\t\tnTds = [];\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTd = nTrs[i].firstChild;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTds.push( nTd );\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Now process by column */\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[iColumn];\n\t\t\n\t\t\t\t/* Get the title of the column - unless there is a user set one */\n\t\t\t\tif ( oCol.sTitle === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar\n\t\t\t\t\tbAutoType = oCol._bAutoType,\n\t\t\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\t\t\tbClass = oCol.sClass !== null,\n\t\t\t\t\tbVisible = oCol.bVisible,\n\t\t\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\t\t\n\t\t\t\t/* A single loop to rule them all (and be more efficient) */\n\t\t\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t\t\t{\n\t\t\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t\t\t{\n\t\t\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Type detection */\n\t\t\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.mRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Rendering */\n\t\t\t\t\t\tif ( bRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Classes */\n\t\t\t\t\t\tif ( bClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Column visibility */\n\t\t\t\t\t\tif ( !bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Row created callbacks */\n\t\t\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toData = oSettings.aoData[i];\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TR element and convert it to an index in aoData\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n the TR element to find\n\t\t *  @returns {int} index if the node is found, null if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToDataIndex( oSettings, n )\n\t\t{\n\t\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TD element and convert it into a column data index (not the visible index)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow The row number the TD/TH can be found in\n\t\t *  @param {node} n The TD/TH element to find\n\t\t *  @returns {int} index if the node is found, -1 if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t\t{\n\t\t\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( anCells[i] === n )\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of data for a given row from the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n\t\t *  @param {array} aiColumns Array of column indexes to get data from\n\t\t *  @returns {array} Data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n\t\t{\n\t\t\tvar out = [];\n\t\t\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n\t\t *  @returns {*} Cell data\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n\t\t{\n\t\t\tvar sData;\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t\t\t{\n\t\t\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t\t\t}\n\t\t\t\treturn oCol.sDefaultContent;\n\t\t\t}\n\t\t\n\t\t\t/* When the data source is null, we can use default column data */\n\t\t\tif ( sData === null && oCol.sDefaultContent !== null )\n\t\t\t{\n\t\t\t\tsData = oCol.sDefaultContent;\n\t\t\t}\n\t\t\telse if ( typeof sData === 'function' )\n\t\t\t{\n\t\t\t\t/* If the data source is a function, then we run it and use the return */\n\t\t\t\treturn sData();\n\t\t\t}\n\t\t\n\t\t\tif ( sSpecific == 'display' && sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the value for a specific cell, into the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {*} val Value to set\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetCellData( oSettings, iRow, iCol, val )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\toCol.fnSetData( oData, val );\n\t\t}\n\t\t\n\t\t\n\t\t// Private variable that is used to match array syntax in the data property object\n\t\tvar __reArray = /\\[.*?\\]$/;\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to get data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data get function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, type, extra) {\n\t\t\t\t\treturn mSource( data, type, extra );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* If there is a . in the source string then the data source is in a \n\t\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t\t * be used if defined, rather than throwing an error\n\t\t\t\t */\n\t\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\t\tvar a = src.split('.');\n\t\t\t\t\tvar arrayNotation, out, innerSrc;\n\t\t\n\t\t\t\t\tif ( src !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\n\t\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\t\n\t\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\t\n\t\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn data[mSource];\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to set data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data set function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Nothing to do when the data source is null */\n\t\t\t\treturn function (data, val) {};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tmSource( data, 'set', val );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\t\tvar setData = function (data, val, src) {\n\t\t\t\t\tvar a = src.split('.'), b;\n\t\t\t\t\tvar arrayNotation, o, innerSrc;\n\t\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\t\n\t\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\treturn setData( data, val, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tdata[mSource] = val;\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the full table data\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {array} aData Master data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetDataMaster ( oSettings )\n\t\t{\n\t\t\tvar aData = [];\n\t\t\tvar iLen = oSettings.aoData.length;\n\t\t\tfor ( var i=0 ; i<iLen; i++ )\n\t\t\t{\n\t\t\t\taData.push( oSettings.aoData[i]._aData );\n\t\t\t}\n\t\t\treturn aData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Nuke the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnClearTable( oSettings )\n\t\t{\n\t\t\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\t\t\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Take an array of integers (index array) and remove a target integer (value - not \n\t\t * the key!)\n\t\t *  @param {array} a Index array to target\n\t\t *  @param {int} iTarget value to find\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDeleteIndex( a, iTarget )\n\t\t{\n\t\t\tvar iTargetIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( a[i] == iTarget )\n\t\t\t\t{\n\t\t\t\t\tiTargetIndex = i;\n\t\t\t\t}\n\t\t\t\telse if ( a[i] > iTarget )\n\t\t\t\t{\n\t\t\t\t\ta[i]--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( iTargetIndex != -1 )\n\t\t\t{\n\t\t\t\ta.splice( iTargetIndex, 1 );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Call the developer defined fnRender function for a given cell (row/column) with\n\t\t * the required parameters and return the result.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData index for the row\n\t\t *  @param {int} iCol aoColumns index for the column\n\t\t *  @returns {*} Return of the developer's fnRender function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnRender( oSettings, iRow, iCol )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\n\t\t\treturn oCol.fnRender( {\n\t\t\t\t\"iDataRow\":    iRow,\n\t\t\t\t\"iDataColumn\": iCol,\n\t\t\t\t\"oSettings\":   oSettings,\n\t\t\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\t\t\"mDataProp\":   oCol.mData\n\t\t\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n\t\t}\n\t\t/**\n\t\t * Create a new TR element (and it's TD children) for a row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow Row to consider\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateTr ( oSettings, iRow )\n\t\t{\n\t\t\tvar oData = oSettings.aoData[iRow];\n\t\t\tvar nTd;\n\t\t\n\t\t\tif ( oData.nTr === null )\n\t\t\t{\n\t\t\t\toData.nTr = document.createElement('tr');\n\t\t\n\t\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t\t * to the aoData array for fast look up\n\t\t\t\t */\n\t\t\t\toData.nTr._DT_RowIndex = iRow;\n\t\t\n\t\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t\tif ( oData._aData.DT_RowId )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oData._aData.DT_RowClass )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Process each column */\n\t\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\t\t\tnTd = document.createElement( oCol.sCellType );\n\t\t\n\t\t\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t\t\t * value in the data source - so can just use that\n\t\t\t\t\t */\n\t\t\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t\n\t\t\t\t\t/* Add user defined class */\n\t\t\t\t\tif ( oCol.sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ( oCol.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\t\t\toData._anHidden[i] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t{\n\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create the HTML header for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildHead( oSettings )\n\t\t{\n\t\t\tvar i, nTh, iLen, j, jLen;\n\t\t\tvar iThs = $('th, td', oSettings.nTHead).length;\n\t\t\tvar iCorrector = 0;\n\t\t\tvar jqChildren;\n\t\t\t\n\t\t\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\t\t\tif ( iThs !== 0 )\n\t\t\t{\n\t\t\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\t\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\t\t\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnTr.appendChild( nTh );\n\t\t\t\t}\n\t\t\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\t/* ARIA role for the rows */\t\n\t\t\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\t\t\n\t\t\t/* Add the extra markup needed by jQuery UI's themes */\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\t\n\t\t\t\t\tvar nDiv = document.createElement('div');\n\t\t\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\t\t\n\t\t\t\t\tvar nSpan = document.createElement('span');\n\t\t\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\t\t\tnDiv.appendChild( nSpan );\n\t\t\t\t\tnTh.appendChild( nDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Deal with the footer - add classes if required */\n\t\t\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t\t\t{\n\t\t\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t\t\t}\n\t\t\t\n\t\t\t/* Cache the footer elements */\n\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t{\n\t\t\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anCells[i] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the header (or footer) element based on the column visibility states. The\n\t\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t\t * traversed over cell at a time in a rows x columns grid fashion, although each \n\t\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t\t * already a cell in that position.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\t\tvar aoLocal = [];\n\t\t\tvar aApplied = [];\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar iRowspan, iColspan;\n\t\t\n\t\t\tif (  bIncludeHidden === undefined )\n\t\t\t{\n\t\t\t\tbIncludeHidden = false;\n\t\t\t}\n\t\t\n\t\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\t\n\t\t\t\t/* Remove any columns which are currently hidden */\n\t\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t\t{\n\t\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\t\taApplied.push( [] );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\t\t\n\t\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\t\tif ( nLocalTr )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tiRowspan = 1;\n\t\t\t\t\tiColspan = 1;\n\t\t\n\t\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t\t */\n\t\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\t\taApplied[i][j] = 1;\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Insert the required TR nodes into the table for display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDraw( oSettings )\n\t\t{\n\t\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar i, iLen, n;\n\t\t\tvar anRows = [];\n\t\t\tvar iRowCount = 0;\n\t\t\tvar iStripes = oSettings.asStripeClasses.length;\n\t\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\t\t\n\t\t\toSettings.bDrawing = true;\n\t\t\t\n\t\t\t/* Check and see if we have an initial draw position from state saving */\n\t\t\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t\t\t{\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\toSettings.iInitDisplayStart = -1;\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing draw intercept */\n\t\t\tif ( oSettings.bDeferLoading )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = false;\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aiDisplay.length !== 0 )\n\t\t\t{\n\t\t\t\tvar iStart = oSettings._iDisplayStart;\n\t\t\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\t\t\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tiStart = 0;\n\t\t\t\t\tiEnd = oSettings.aoData.length;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tvar nRow = aoData.nTr;\n\t\t\t\t\t\n\t\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\t\t\n\t\t\t\t\tanRows.push( nRow );\n\t\t\t\t\tiRowCount++;\n\t\t\t\t\t\n\t\t\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\t\t\tif ( iOpenRows !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\t\t\n\t\t\t\tif ( oSettings.asStripeClasses[0] )\n\t\t\t\t{\n\t\t\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t\t\t}\n\t\t\n\t\t\t\tvar oLang = oSettings.oLanguage;\n\t\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t\t}\n\t\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t\t}\n\t\t\n\t\t\t\tvar nTd = document.createElement( 'td' );\n\t\t\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\t\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\t\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\t\t\n\t\t\t\tanRows[ iRowCount ].appendChild( nTd );\n\t\t\t}\n\t\t\t\n\t\t\t/* Header and footer callbacks */\n\t\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t/* \n\t\t\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t\t\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t\t\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t\t\t */\n\t\t\tvar\n\t\t\t\tnAddFrag = document.createDocumentFragment(),\n\t\t\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\t\t\tnBodyPar, nTrs;\n\t\t\t\n\t\t\tif ( oSettings.nTBody )\n\t\t\t{\n\t\t\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\t\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\t\t\n\t\t\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t\t\t * up. When not infinite scroll, always do it.\n\t\t\t\t */\n\t\t\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Put the draw table into the dom */\n\t\t\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\t\t\tif ( nBodyPar !== null )\n\t\t\t\t{\n\t\t\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Call all required callback functions for the end of a draw */\n\t\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\t\t\n\t\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\t\toSettings.bSorted = false;\n\t\t\toSettings.bFiltered = false;\n\t\t\toSettings.bDrawing = false;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\tif ( !oSettings._bInitComplete )\n\t\t\t\t{\n\t\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table - taking account of the various features which are enabled\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReDraw( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t/* Sorting will refilter and draw for us */\n\t\t\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* Filtering will redraw for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add the options to the page HTML for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddOptionsHtml ( oSettings )\n\t\t{\n\t\t\t/*\n\t\t\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t\t\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t\t\t */\n\t\t\tvar nHolding = $('<div></div>')[0];\n\t\t\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\t\t\n\t\t\t/* \n\t\t\t * All DataTables are wrapped in a div\n\t\t\t */\n\t\t\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\t\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\t\n\t\t\t/* Track where we want to insert the option */\n\t\t\tvar nInsertNode = oSettings.nTableWrapper;\n\t\t\t\n\t\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\t\tvar aDom = oSettings.sDom.split('');\n\t\t\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\t\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t\t{\n\t\t\t\tiPushFeature = 0;\n\t\t\t\tcOption = aDom[i];\n\t\t\t\t\n\t\t\t\tif ( cOption == '<' )\n\t\t\t\t{\n\t\t\t\t\t/* New container div */\n\t\t\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\t\t\n\t\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\t\tcNext = aDom[i+1];\n\t\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\t\tj = 2;\n\t\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\t\t\tnInsertNode = nNewNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == '>' )\n\t\t\t\t{\n\t\t\t\t\t/* End container div */\n\t\t\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t\t\t{\n\t\t\t\t\t/* Length */\n\t\t\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t\t\t{\n\t\t\t\t\t/* Filter */\n\t\t\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\t/* pRocessing */\n\t\t\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 't' )\n\t\t\t\t{\n\t\t\t\t\t/* Table */\n\t\t\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t\t\t{\n\t\t\t\t\t/* Info */\n\t\t\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t\t\t{\n\t\t\t\t\t/* Pagination */\n\t\t\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Plug-in features */\n\t\t\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Add to the 2D features array */\n\t\t\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\t\t\tnInsertNode.appendChild( nTmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\t\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t\t * create a layout grid (array) of rows x columns, which contains a reference\n\t\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t\t * any column / row could be removed and the new grid constructed\n\t\t *  @param array {object} aLayout Array to store the calculated layout in\n\t\t *  @param {node} nThead The header/footer element for the table\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectHeader ( aLayout, nThead )\n\t\t{\n\t\t\tvar nTrs = $(nThead).children('tr');\n\t\t\tvar nTr, nCell;\n\t\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\t\tvar bUnique;\n\t\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\t\tvar k = a[i];\n\t\t                while ( k[j] ) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn j;\n\t\t\t};\n\t\t\n\t\t\taLayout.splice( 0, aLayout.length );\n\t\t\t\n\t\t\t/* We know how many rows there are in the layout - so prep it */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taLayout.push( [] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Calculate a layout array */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTr = nTrs[i];\n\t\t\t\tiColumn = 0;\n\t\t\t\t\n\t\t\t\t/* For every cell in the row... */\n\t\t\t\tnCell = nTr.firstChild;\n\t\t\t\twhile ( nCell ) {\n\t\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\t\n\t\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t\t\t * accordingly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of unique th elements, one for each column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t\t *  @returns array {node} aReturn list of unique th's\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t\t{\n\t\t\tvar aReturn = [];\n\t\t\tif ( !aLayout )\n\t\t\t{\n\t\t\t\taLayout = oSettings.aoHeader;\n\t\t\t\tif ( nHeader )\n\t\t\t\t{\n\t\t\t\t\taLayout = [];\n\t\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t\t{\n\t\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aReturn;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the table using an Ajax call\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {boolean} Block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdate( oSettings )\n\t\t{\n\t\t\tif ( oSettings.bAjaxDataGet )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\t\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\t\t\tfunction(json) {\n\t\t\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t\t\t}, oSettings );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Build up the parameters in an object needed for a server-side processing request\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {bool} block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxParameters( oSettings )\n\t\t{\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\t\t\tvar i, j;\n\t\t\t\n\t\t\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\t\t\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\t\t\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\t\t\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\t\t\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\t\t\toSettings._iDisplayLength : -1 } );\n\t\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\t\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t\t\t}\n\t\t\t\n\t\t\t/* Filtering */\n\t\t\tif ( oSettings.oFeatures.bFilter !== false )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\t\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Sorting */\n\t\t\tif ( oSettings.oFeatures.bSort !== false )\n\t\t\t{\n\t\t\t\tvar iCounter = 0;\n\t\t\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\t\t\n\t\t\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\t\t\tiCounter++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aoData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add Ajax parameters from plug-ins\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoData name/value pairs to send to the server\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnServerParams( oSettings, aoData )\n\t\t{\n\t\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Data the data from the server (nuking the old) and redraw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} json json data return from the server.\n\t\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t\t *  @param {array} json.aaData The data to display on this page\n\t\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdateDraw ( oSettings, json )\n\t\t{\n\t\t\tif ( json.sEcho !== undefined )\n\t\t\t{\n\t\t\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t\t\t * very fast interaction, and later queries are completed much faster\n\t\t\t\t */\n\t\t\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( !oSettings.oScroll.bInfinite ||\n\t\t\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t\t\t{\n\t\t\t\t_fnClearTable( oSettings );\n\t\t\t}\n\t\t\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\t\t\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\t\t\n\t\t\t/* Determine if reordering is required */\n\t\t\tvar sOrdering = _fnColumnOrdering(oSettings);\n\t\t\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\t\t\tvar aiIndex;\n\t\t\tif ( bReOrder )\n\t\t\t{\n\t\t\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t\t\t}\n\t\t\t\n\t\t\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\t\t\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( bReOrder )\n\t\t\t\t{\n\t\t\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\t\t\tvar aDataSorted = [];\n\t\t\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t\t\t}\n\t\t\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\toSettings.bAjaxDataGet = false;\n\t\t\t_fnDraw( oSettings );\n\t\t\toSettings.bAjaxDataGet = true;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for filtering text\n\t\t *  @returns {node} Filter control element\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlFilter ( oSettings )\n\t\t{\n\t\t\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\t\t\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t\t\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t\t\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\t\t\n\t\t\tvar nFilter = document.createElement( 'div' );\n\t\t\tnFilter.className = oSettings.oClasses.sFilter;\n\t\t\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\t\t\tif ( !oSettings.aanFeatures.f )\n\t\t\t{\n\t\t\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t\t\t}\n\t\t\t\n\t\t\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\t\t\n\t\t\t// Store a reference to the input element, so other input elements could be\n\t\t\t// added to the filter wrapper if needed (submit button for example)\n\t\t\tnFilter._DT_Input = jqFilter[0];\n\t\t\n\t\t\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\t\t\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t\t\t/* Update all other filter input elements for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\t\t\n\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Now do the filter */\n\t\t\t\tif ( val != oPreviousSearch.sSearch )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\t\t\"sSearch\": val, \n\t\t\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\tjqFilter\n\t\t\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t\t/* Prevent form submission */\n\t\t\t\t\tif ( e.keyCode == 13 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\treturn nFilter;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table using both the global filter and column based filtering\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oSearch search information\n\t\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t\t{\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t\t/* Save the filtering values */\n\t\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t\t};\n\t\t\n\t\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\n\t\t\t\t/* Now do the individual column filter */\n\t\t\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Custom filtering */\n\t\t\t\t_fnFilterCustom( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function we have been filtering */\n\t\t\toSettings.bFiltered = true;\n\t\t\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\toSettings._iDisplayStart = 0;\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Rebuild search array 'offline' */\n\t\t\t_fnBuildSearchArray( oSettings, 0 );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply custom filtering functions\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCustom( oSettings )\n\t\t{\n\t\t\tvar afnFilters = DataTable.ext.afnFiltering;\n\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\n\t\t\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar iCorrector = 0;\n\t\t\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\t\t\tvar bTest = afnFilters[i](\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\t\t\tiDisIndex\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\t\t\tif ( !bTest )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table on a per-column basis\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iColumn column to filter\n\t\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t\t *  @param {bool} bSmart use smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tif ( sInput === \"\" )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iIndexCorrector = 0;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t\n\t\t\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\t\t\toSettings.aoColumns[iColumn].sType );\n\t\t\t\tif ( ! rpSearch.test( sData ) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\t\t\tiIndexCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the data table based on user input and draw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar i;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\t/* Check if we are forcing or not - optional parameter */\n\t\t\tif ( !iForce )\n\t\t\t{\n\t\t\t\tiForce = 0;\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to take account of custom filtering functions - always filter */\n\t\t\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t\t\t{\n\t\t\t\tiForce = 1;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * If the input is blank - we want the full data set\n\t\t\t */\n\t\t\tif ( sInput.length <= 0 )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\t * We are starting a new search or the new search string is smaller \n\t\t\t\t * then the old one (i.e. delete). Search from the master array\n\t\t\t \t */\n\t\t\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\t\t\n\t\t\t\t\t/* Force a rebuild of the search array */\n\t\t\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\t\t\n\t\t\t\t\t/* Search through all records to populate the search array\n\t\t\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t\t\t * mapping\n\t\t\t\t\t */\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t  }\n\t\t\t  else\n\t\t\t\t{\n\t\t\t  \t/* Using old search array - refine it - do it this way for speed\n\t\t\t  \t * Don't have to search the whole master array again\n\t\t\t\t\t */\n\t\t\t  \tvar iIndexCorrector = 0;\n\t\t\t  \t\n\t\t\t  \t/* Search the current results */\n\t\t\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t\t\t{\n\t\t\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t\t\t  \t\t\tiIndexCorrector++;\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t  }\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create an array which can be quickly search through\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMaster use the master data array - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchArray ( oSettings, iMaster )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Clear out the old data */\n\t\t\t\toSettings.asDataSearch = [];\n\t\t\n\t\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\t\tvar aiIndex = (iMaster===1) ?\n\t\t\t\t \toSettings.aiDisplayMaster :\n\t\t\t\t \toSettings.aiDisplay;\n\t\t\t\t\n\t\t\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a searchable string from a single data row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData Row data array to use for the data to search\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchRow( oSettings, aData )\n\t\t{\n\t\t\tvar sSearch = aData.join('  ');\n\t\t\t\n\t\t\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\t\t\tif ( sSearch.indexOf('&') !== -1 )\n\t\t\t{\n\t\t\t\tsSearch = $('<div>').html(sSearch).text();\n\t\t\t}\n\t\t\t\n\t\t\t// Strip newline characters\n\t\t\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Build a regular expression object suitable for searching a table\n\t\t *  @param {string} sSearch string to search for\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t\t *  @returns {RegExp} constructed object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar asSearch, sRegExpString;\n\t\t\t\n\t\t\tif ( bSmart )\n\t\t\t{\n\t\t\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t\t\t */\n\t\t\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\t\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\t\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\t\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Convert raw data into something that the user can search on\n\t\t *  @param {string} sData data to be modified\n\t\t *  @param {string} sType data type\n\t\t *  @returns {string} search string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDataToSearch ( sData, sType )\n\t\t{\n\t\t\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t\t\t{\n\t\t\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t\t\t}\n\t\t\telse if ( sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\telse if ( sType == \"html\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t}\n\t\t\telse if ( typeof sData === \"string\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * scape a string such that it can be used in a regular expression\n\t\t *  @param {string} sVal string to escape\n\t\t *  @returns {string} escaped string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnEscapeRegex ( sVal )\n\t\t{\n\t\t\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\t\t\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\t\t\treturn sVal.replace(reReplace, '\\\\$1');\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the info display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Information element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlInfo ( oSettings )\n\t\t{\n\t\t\tvar nInfo = document.createElement( 'div' );\n\t\t\tnInfo.className = oSettings.oClasses.sInfo;\n\t\t\t\n\t\t\t/* Actions that are to be taken once only for this feature */\n\t\t\tif ( !oSettings.aanFeatures.i )\n\t\t\t{\n\t\t\t\t/* Add draw callback */\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\t\"sName\": \"information\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Add id */\n\t\t\t\tnInfo.id = oSettings.sTableId+'_info';\n\t\t\t}\n\t\t\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\t\t\n\t\t\treturn nInfo;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the information elements in the display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnUpdateInfo ( oSettings )\n\t\t{\n\t\t\t/* Show information about the table */\n\t\t\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar\n\t\t\t\toLang = oSettings.oLanguage,\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsOut;\n\t\t\t\n\t\t\tif ( iTotal === 0 )\n\t\t\t{\n\t\t\t\t/* Empty record set */\n\t\t\t\tsOut = oLang.sInfoEmpty;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t/* Normal record set */\n\t\t\t\tsOut = oLang.sInfo;\n\t\t\t}\n\t\t\n\t\t\tif ( iTotal != iMax )\n\t\t\t{\n\t\t\t\t/* Record set after filtering */\n\t\t\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t\t\t}\n\t\t\n\t\t\t// Convert the macros\n\t\t\tsOut += oLang.sInfoPostFix;\n\t\t\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\t\t\n\t\t\tif ( oLang.fnInfoCallback !== null )\n\t\t\t{\n\t\t\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t\t\t}\n\t\t\t\n\t\t\tvar n = oSettings.aanFeatures.i;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _fnInfoMacros ( oSettings, str )\n\t\t{\n\t\t\tvar\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tsMax = oSettings.fnFormatNumber( iMax );\n\t\t\n\t\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t\t// internally\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t\t\t}\n\t\t\n\t\t\treturn str.\n\t\t\t\treplace(/_START_/g, sStart).\n\t\t\t\treplace(/_END_/g,   sEnd).\n\t\t\t\treplace(/_TOTAL_/g, sTotal).\n\t\t\t\treplace(/_MAX_/g,   sMax);\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitialise ( oSettings )\n\t\t{\n\t\t\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\t\t\n\t\t\t/* Ensure that the table data is fully initialised */\n\t\t\tif ( oSettings.bInitialised === false )\n\t\t\t{\n\t\t\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the display HTML options */\n\t\t\t_fnAddOptionsHtml( oSettings );\n\t\t\t\n\t\t\t/* Build and draw the header / footer for the table */\n\t\t\t_fnBuildHead( oSettings );\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\n\t\t\t/* Okay to show that something is going on now */\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\n\t\t\t/* Calculate sizes for columns */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth )\n\t\t\t{\n\t\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If there is default sorting required - let's do it. The sort function will do the\n\t\t\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t\t\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t\t\t */\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* if there is an ajax source load the data */\n\t\t\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\tvar aoData = [];\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\t\t\n\t\t\t\t\t/* Got the data - add it to the table */\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t\t\t */\n\t\t\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t_fnInitComplete( oSettings, json );\n\t\t\t\t}, oSettings );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t\t *    with client-side processing (optional)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitComplete ( oSettings, json )\n\t\t{\n\t\t\toSettings._bInitComplete = true;\n\t\t\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Language compatibility - when certain options are given, and others aren't, we\n\t\t * need to duplicate the values over, in order to provide backwards compatibility\n\t\t * with older language files.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLanguageCompat( oLanguage )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.oLanguage;\n\t\t\n\t\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t\t * sZeroRecords - assuming that is given.\n\t\t\t */\n\t\t\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t\t\t}\n\t\t\n\t\t\t/* Likewise with loading records */\n\t\t\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for user display length changing\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Display length feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlLength ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\t\t\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\t\t\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\t\t\tvar i, iLen;\n\t\t\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\t\t\n\t\t\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tsStdMenu += '</select>';\n\t\t\t\n\t\t\tvar nLength = document.createElement( 'div' );\n\t\t\tif ( !oSettings.aanFeatures.l )\n\t\t\t{\n\t\t\t\tnLength.id = oSettings.sTableId+'_length';\n\t\t\t}\n\t\t\tnLength.className = oSettings.oClasses.sLength;\n\t\t\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\t\t\n\t\t\t/*\n\t\t\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t\t\t * and Stefan Skopnik for fixing the fix!\n\t\t\t */\n\t\t\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\t\t\n\t\t\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\t\t\tvar iVal = $(this).val();\n\t\t\t\t\n\t\t\t\t/* Update all other length options for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.l;\n\t\t\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != this.parentNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Redraw the table */\n\t\t\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\n\t\t\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\t\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t} );\n\t\t\n\t\t\n\t\t\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\t\t\n\t\t\treturn nLength;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Recalculate the end point based on the start point\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateEnd( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bPaginate === false )\n\t\t\t{\n\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Set the end point of the display - based on how many elements there are\n\t\t\t\t * still to display\n\t\t\t\t */\n\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t\t * Note that most of the paging logic is done in \n\t\t * DataTable.ext.oPagination\n\t\t */\n\t\t\n\t\t/**\n\t\t * Generate the node required for default pagination\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Pagination feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlPaginate ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar nPaginate = document.createElement( 'div' );\n\t\t\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\t\t\n\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\t\t\tfunction( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"pagination\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nPaginate;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Alter the display settings to change the page\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer)\n\t\t *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnPageChange ( oSettings, mAction )\n\t\t{\n\t\t\tvar iOldStart = oSettings._iDisplayStart;\n\t\t\t\n\t\t\tif ( typeof mAction === \"number\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"first\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t\telse if ( mAction == \"previous\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\n\t\t\t\t/* Correct for under-run */\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"next\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"last\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t\t\t}\n\t\t\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\t\t\n\t\t\treturn iOldStart != oSettings._iDisplayStart;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the processing node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Processing element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlProcessing ( oSettings )\n\t\t{\n\t\t\tvar nProcessing = document.createElement( 'div' );\n\t\t\t\n\t\t\tif ( !oSettings.aanFeatures.r )\n\t\t\t{\n\t\t\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t\t\t}\n\t\t\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\t\t\tnProcessing.className = oSettings.oClasses.sProcessing;\n\t\t\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\t\t\n\t\t\treturn nProcessing;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Display or hide the processing indicator\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bShow Show the processing indicator (true) or not (false)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnProcessingDisplay ( oSettings, bShow )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bProcessing )\n\t\t\t{\n\t\t\t\tvar an = oSettings.aanFeatures.r;\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add any control elements for the table - specifically scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlTable ( oSettings )\n\t\t{\n\t\t\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\treturn oSettings.nTable;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * The HTML structure that we want to generate in this function is:\n\t\t\t *  div - nScroller\n\t\t\t *    div - nScrollHead\n\t\t\t *      div - nScrollHeadInner\n\t\t\t *        table - nScrollHeadTable\n\t\t\t *          thead - nThead\n\t\t\t *    div - nScrollBody\n\t\t\t *      table - oSettings.nTable\n\t\t\t *        thead - nTheadSize\n\t\t\t *        tbody - nTbody\n\t\t\t *    div - nScrollFoot\n\t\t\t *      div - nScrollFootInner\n\t\t\t *        table - nScrollFootTable\n\t\t\t *          tfoot - nTfoot\n\t\t\t */\n\t\t\tvar\n\t\t\t \tnScroller = document.createElement('div'),\n\t\t\t \tnScrollHead = document.createElement('div'),\n\t\t\t \tnScrollHeadInner = document.createElement('div'),\n\t\t\t \tnScrollBody = document.createElement('div'),\n\t\t\t \tnScrollFoot = document.createElement('div'),\n\t\t\t \tnScrollFootInner = document.createElement('div'),\n\t\t\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t\t\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\t\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t\t\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\t\t\toClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tnScrollHead.appendChild( nScrollHeadInner );\n\t\t\tnScrollFoot.appendChild( nScrollFootInner );\n\t\t\tnScrollBody.appendChild( oSettings.nTable );\n\t\t\tnScroller.appendChild( nScrollHead );\n\t\t\tnScroller.appendChild( nScrollBody );\n\t\t\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\t\t\tnScrollHeadTable.appendChild( nThead );\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScroller.appendChild( nScrollFoot );\n\t\t\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\t\t\tnScrollFootTable.appendChild( nTfoot );\n\t\t\t}\n\t\t\t\n\t\t\tnScroller.className = oClasses.sScrollWrapper;\n\t\t\tnScrollHead.className = oClasses.sScrollHead;\n\t\t\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\t\t\tnScrollBody.className = oClasses.sScrollBody;\n\t\t\tnScrollFoot.className = oClasses.sScrollFoot;\n\t\t\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\t\t\n\t\t\tif ( oSettings.oScroll.bAutoCss )\n\t\t\t{\n\t\t\t\tnScrollHead.style.overflow = \"hidden\";\n\t\t\t\tnScrollHead.style.position = \"relative\";\n\t\t\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t\t}\n\t\t\t\n\t\t\tnScrollHead.style.border = \"0\";\n\t\t\tnScrollHead.style.width = \"100%\";\n\t\t\tnScrollFoot.style.border = \"0\";\n\t\t\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\t\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\t\t\n\t\t\t/* Modify attributes to respect the clones */\n\t\t\tnScrollHeadTable.removeAttribute('id');\n\t\t\tnScrollHeadTable.style.marginLeft = \"0\";\n\t\t\toSettings.nTable.style.marginLeft = \"0\";\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.removeAttribute('id');\n\t\t\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Move caption elements from the body to the header, footer or leave where it is\n\t\t\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\t\t\tvar nCaption = $(oSettings.nTable).children('caption');\n\t\t\tif ( nCaption.length > 0 )\n\t\t\t{\n\t\t\t\tnCaption = nCaption[0];\n\t\t\t\tif ( nCaption._captionSide === \"top\" )\n\t\t\t\t{\n\t\t\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t\t\t{\n\t\t\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Sizing\n\t\t\t */\n\t\t\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\t\n\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t\t\t$(nScrollBody).scroll( function (e) {\n\t\t\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\t\t\n\t\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* When yscrolling, add the height */\n\t\t\tif ( oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw - align columns across the tables */\n\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\t\"sName\": \"scrolling\"\n\t\t\t} );\n\t\t\t\n\t\t\t/* Infinite scrolling event handlers */\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\t$(nScrollBody).scroll( function() {\n\t\t\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.nScrollHead = nScrollHead;\n\t\t\toSettings.nScrollFoot = nScrollFoot;\n\t\t\t\n\t\t\treturn nScroller;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the various tables for resizing. It's a bit of a pig this function, but\n\t\t * basically the idea to:\n\t\t *   1. Re-create the table inside the scrolling div\n\t\t *   2. Take live measurements from the DOM\n\t\t *   3. Apply the measurements\n\t\t *   4. Clean up\n\t\t *  @param {object} o dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollDraw ( o )\n\t\t{\n\t\t\tvar\n\t\t\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\t\tnScrollBody = o.nTable.parentNode,\n\t\t\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\t\t\tnTheadSize, nTfootSize,\n\t\t\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\t\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\t\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\t\t\tie67 = o.oBrowser.bScrollOversize,\n\t\t\t\tzeroOut = function(nSizer) {\n\t\t\t\t\toStyle = nSizer.style;\n\t\t\t\t\toStyle.paddingTop = \"0\";\n\t\t\t\t\toStyle.paddingBottom = \"0\";\n\t\t\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\t\t\toStyle.height = 0;\n\t\t\t\t};\n\t\t\t\n\t\t\t/*\n\t\t\t * 1. Re-create the table inside the scrolling div\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t\t\t$(o.nTable).children('thead, tfoot').remove();\n\t\t\n\t\t\t/* Clone the current header and footer elements and then place it into the inner table */\n\t\t\tnTheadSize = $(o.nTHead).clone()[0];\n\t\t\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\t\t\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\t\t\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\t\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\t\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\t\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove old sizing and apply the calculated column widths\n\t\t\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t\t * calculated sizes to this header\n\t\t\t */\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = '100%';\n\t\t\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\t\t\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\t\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\n\t\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\t\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Size the table as a whole */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\t/* No x scrolling */\n\t\t\t\to.nTable.style.width = \"100%\";\n\t\t\t\t\n\t\t\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t\t * into account.\n\t\t\t\t */\n\t\t\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t/* x scroll inner has been given - use it */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t\t\t{\n\t\t\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Not possible to take account of it */\n\t\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* All else fails */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t\t\t * a temporary variable. This is required because the column width calculation is done\n\t\t\t * before this table DOM is created.\n\t\t\t */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\t\n\t\t\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t\t\t * set the width based on the real headers\n\t\t\t */\n\t\t\t\n\t\t\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t\t\t// DOM properties.\n\t\t\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t\t\t \n\t\t\t// Read all widths in next pass. Forces layout only once because we do not change \n\t\t\t// any DOM properties.\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t}, anHeadSizers );\n\t\t\t \n\t\t\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t\t\t// read any DOM properties.\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = aApplied[i];\n\t\t\t}, anHeadToSize );\n\t\t\n\t\t\t$(anHeadSizers).height(0);\n\t\t\t\n\t\t\t/* Same again with the footer if we have one */\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t\t}, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootToSize );\n\t\t\n\t\t\t\t$(anFootSizers).height(0);\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 3. Apply the measurements\n\t\t\t */\n\t\t\t\n\t\t\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t\t\t * to what they currently are\n\t\t\t */\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = aApplied[i];\n\t\t\t}, anHeadSizers );\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\t\n\t\t\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\t\t */\n\t\t\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t\t\t{\n\t\t\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\t\t\n\t\t\t\t/* IE6/7 are a law unto themselves... */\n\t\t\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t\t\t}\n\t\t\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\t\t\" calculation\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * 4. Clean up\n\t\t\t */\n\t\t\tif ( o.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t\t */\n\t\t\t\tif ( ie67 )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\t\t\n\t\t\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t\t\t \to.oScroll.iBarWidth : 0;\n\t\t\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Finally set the width's of the header and footer tables */\n\t\t\tvar iOuterWidth = $(o.nTable).outerWidth();\n\t\t\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\n\t\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\t\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\t\t\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t}\n\t\t\n\t\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\t\t$(nScrollBody).scroll();\n\t\t\t\n\t\t\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\t\t\tif ( o.bSorted || o.bFiltered )\n\t\t\t{\n\t\t\t\tnScrollBody.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply a given function to the display child nodes of an element array (typically\n\t\t * TD children of TR rows\n\t\t *  @param {function} fn Method to apply to the objects\n\t\t *  @param array {nodes} an1 List of elements to look through for display children\n\t\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t\t{\n\t\t\tvar index=0, i=0, iLen=an1.length;\n\t\t\tvar nNode1, nNode2;\n\t\t\n\t\t\twhile ( i < iLen )\n\t\t\t{\n\t\t\t\tnNode1 = an1[i].firstChild;\n\t\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\t\t\twhile ( nNode1 )\n\t\t\t\t{\n\t\t\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( an2 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t\t *  @param {string} sWidth width to be converted\n\t\t *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n\t\t *  @returns {int} iWidth width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnConvertToWidth ( sWidth, nParent )\n\t\t{\n\t\t\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t\n\t\t\tif ( !nParent )\n\t\t\t{\n\t\t\t\tnParent = document.body;\n\t\t\t}\n\t\t\t\n\t\t\tvar iWidth;\n\t\t\tvar nTmp = document.createElement( \"div\" );\n\t\t\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\t\t\n\t\t\tnParent.appendChild( nTmp );\n\t\t\tiWidth = nTmp.offsetWidth;\n\t\t\tnParent.removeChild( nTmp );\n\t\t\t\n\t\t\treturn ( iWidth );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Calculate the width of columns for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateColumnWidths ( oSettings )\n\t\t{\n\t\t\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\t\t\tvar iUserInputs = 0;\n\t\t\tvar iTmpWidth;\n\t\t\tvar iVisibleColumns = 0;\n\t\t\tvar iColums = oSettings.aoColumns.length;\n\t\t\tvar i, iIndex, iCorrector, iWidth;\n\t\t\tvar oHeaders = $('th', oSettings.nTHead);\n\t\t\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\t\t\tvar nWrapper = oSettings.nTable.parentNode;\n\t\t\t\n\t\t\t/* Convert any user input sizes into pixel sizes */\n\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiVisibleColumns++;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\t\t\tnWrapper );\n\t\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tiUserInputs++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If the number of columns in the DOM equals the number that we have to process in \n\t\t\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t\t\t * sizes can be set in order for this to happen, nor scrolling used\n\t\t\t */\n\t\t\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\t\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t\t\t * calculating table widths.\n\t\t\t\t */\n\t\t\t\tvar\n\t\t\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\t\t\tnDivSizing;\n\t\t\t\t\n\t\t\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\t\t\tnCalcTmp.appendChild( nTheadClone );\n\t\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnCalcTmp.appendChild( nBody );\n\t\t\t\tnBody.appendChild( nTr );\n\t\t\t\t\n\t\t\t\t/* Remove any sizing that was previously applied by the styles */\n\t\t\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\t\t\tif ( jqColSizing.length === 0 )\n\t\t\t\t{\n\t\t\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Apply custom sizing to the cloned header */\n\t\t\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oColumn.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Find the biggest td for each column and put it into the table */\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\t\t\tif ( nTd !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build the table and 'display' it */\n\t\t\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t\t\t * but I think correct behaviour\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = \"\";\n\t\t\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t}\n\t\t\t\telse if ( widthAttr )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t\t\t}\n\t\t\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\t\t\n\t\t\t\t/* Scrolling considerations */\n\t\t\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t\t\t * no elements there, under which circumstances we use the header elements\n\t\t\t\t */\n\t\t\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\t\t\tif ( oNodes.length === 0 )\n\t\t\t\t{\n\t\t\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t\t\t * should be by summing the user given values, and the automatic values\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar iTotal = 0;\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t\t\t}\n\t\t\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\t\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\t\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t\t\t}\n\t\t\n\t\t\tif ( widthAttr )\n\t\t\t{\n\t\t\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust a table's width to take account of scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollingWidthAdjust ( oSettings, n )\n\t\t{\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t\t\t * + scroll bar will fit into the area avaialble.\n\t\t\t\t */\n\t\t\t\tvar iOrigWidth = $(n).width();\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the widest node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {node} widest table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetWidestNode( oSettings, iCol )\n\t\t{\n\t\t\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\t\t\tif ( iMaxIndex < 0 )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t\t\t{\n\t\t\t\tvar n = document.createElement('td');\n\t\t\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\t\t\treturn n;\n\t\t\t}\n\t\t\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the maximum strlen for each data column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {string} max string length for each column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetMaxLenString( oSettings, iCol )\n\t\t{\n\t\t\tvar iMax = -1;\n\t\t\tvar iMaxIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t\t\t{\n\t\t\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\t\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\t\t\tif ( s.length > iMax )\n\t\t\t\t{\n\t\t\t\t\tiMax = s.length;\n\t\t\t\t\tiMaxIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn iMaxIndex;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Append a CSS unit (only if required) to a string\n\t\t *  @param {array} aArray1 first array\n\t\t *  @param {array} aArray2 second array\n\t\t *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnStringToCss( s )\n\t\t{\n\t\t\tif ( s === null )\n\t\t\t{\n\t\t\t\treturn \"0px\";\n\t\t\t}\n\t\t\t\n\t\t\tif ( typeof s == 'number' )\n\t\t\t{\n\t\t\t\tif ( s < 0 )\n\t\t\t\t{\n\t\t\t\t\treturn \"0px\";\n\t\t\t\t}\n\t\t\t\treturn s+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if the last character is not 0-9 */\n\t\t\tvar c = s.charCodeAt( s.length-1 );\n\t\t\tif (c < 0x30 || c > 0x39)\n\t\t\t{\n\t\t\t\treturn s;\n\t\t\t}\n\t\t\treturn s+\"px\";\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the width of a scroll bar in this browser being used\n\t\t *  @returns {int} width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollBarWidth ()\n\t\t{  \n\t\t\tvar inner = document.createElement('p');\n\t\t\tvar style = inner.style;\n\t\t\tstyle.width = \"100%\";\n\t\t\tstyle.height = \"200px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\t\n\t\t\tvar outer = document.createElement('div');\n\t\t\tstyle = outer.style;\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.top = \"0px\";\n\t\t\tstyle.left = \"0px\";\n\t\t\tstyle.visibility = \"hidden\";\n\t\t\tstyle.width = \"200px\";\n\t\t\tstyle.height = \"150px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\tstyle.overflow = \"hidden\";\n\t\t\touter.appendChild(inner);\n\t\t\t\n\t\t\tdocument.body.appendChild(outer);\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.style.overflow = 'scroll';\n\t\t\tvar w2 = inner.offsetWidth;\n\t\t\tif ( w1 == w2 )\n\t\t\t{\n\t\t\t\tw2 = outer.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeChild(outer);\n\t\t\treturn (w1 - w2);  \n\t\t}\n\t\t\n\t\t/**\n\t\t * Change the order of the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bApplyClasses optional - should we apply classes or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSort ( oSettings, bApplyClasses )\n\t\t{\n\t\t\tvar\n\t\t\t\ti, iLen, j, jLen, k, kLen,\n\t\t\t\tsDataType, nTh,\n\t\t\t\taaSort = [],\n\t\t\t \taiOrig = [],\n\t\t\t\toSort = DataTable.ext.oSort,\n\t\t\t\taoData = oSettings.aoData,\n\t\t\t\taoColumns = oSettings.aoColumns,\n\t\t\t\toAria = oSettings.oLanguage.oAria;\n\t\t\t\n\t\t\t/* No sorting required if server-side or no sorting array */\n\t\t\tif ( !oSettings.oFeatures.bServerSide && \n\t\t\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t\t\t{\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t\t\t * get the data from the developer's function and apply it for this column\n\t\t\t\t */\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar iColumn = aaSort[i][0];\n\t\t\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t\t\t */\n\t\t\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t\t\t * function runs. This make the sorting function a very simple comparison\n\t\t\t\t */\n\t\t\t\tvar iSortLen = aaSort.length;\n\t\t\t\tvar fnSortFormat, aDataSort;\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t\t *  \tvar iTest;\n\t\t\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t\t\t *  \tif (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t\t *    if (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t *  }\n\t\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t\t */\n\t\t\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Alter the sorting classes to take account of the changes */\n\t\t\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\t\t\tnTh = aoColumns[i].nTh;\n\t\t\t\tnTh.removeAttribute('aria-sort');\n\t\t\t\tnTh.removeAttribute('aria-label');\n\t\t\t\t\n\t\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\t\tif ( aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function that we have sorted the data */\n\t\t\toSettings.bSorted = true;\n\t\t\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\t\t\n\t\t\t/* Copy the master data into the draw array and re-draw */\n\t\t\tif ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* _fnFilter() will redraw the table for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort handler (click) to a node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nNode node to attach the handler to\n\t\t *  @param {int} iDataIndex column sorting index\n\t\t *  @param {function} [fnCallback] callback function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n\t\t{\n\t\t\t_fnBindAction( nNode, {}, function (e) {\n\t\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t\t\t * disabled, as we need to perform slightly different actions.\n\t\t\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t\t\t * too early), so we only do it when we absolutely have to.\n\t\t\t\t */\n\t\t\t\tvar fnInnerSorting = function () {\n\t\t\t\t\tvar iColumn, iNextSort;\n\t\t\t\t\t\n\t\t\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\t\t\tif ( e.shiftKey )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\t\t\tvar bFound = false;\n\t\t\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* No sort yet - add it in */\n\t\t\t\t\t\tif ( bFound === false )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Run the sort */\n\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t}; /* /fnInnerSorting */\n\t\t\t\t\n\t\t\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\tfnInnerSorting();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tfnInnerSorting();\n\t\t\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Call the user specified callback function - used for async user interaction */\n\t\t\t\tif ( typeof fnCallback == 'function' )\n\t\t\t\t{\n\t\t\t\t\tfnCallback( oSettings );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the sorting classes on the header, Note: it is safe to call this function \n\t\t * when bSort and bSortClasses are false\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortingClasses( oSettings )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, iFound;\n\t\t\tvar aaSort, sClass;\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aaSortingFixed !== null )\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSorting.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the required classes to the header */\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\t\t\tiFound = -1;\n\t\t\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\t\t\tiFound = j;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.bJUI )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar sSpanClass;\n\t\t\t\t\t\tif ( iFound == -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t\t\t * _fnAddColumn\n\t\t\t\t\t */\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* \n\t\t\t * Apply the required classes to the table body\n\t\t\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t\t\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t\t\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t\t\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t\t\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t\t\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t\t\t * row found to see if the whole column needs processed can miss classes since the first\n\t\t\t * column might be new.\n\t\t\t */\n\t\t\tsClass = oClasses.sSortColumn;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\t\t\n\t\t\t\t/* Determine what the sorting class for each column should be */\n\t\t\t\tvar iClass, iTargetCol;\n\t\t\t\tvar asClasses = [];\n\t\t\t\tfor (i = 0; i < iColumns; i++)\n\t\t\t\t{\n\t\t\t\t\tasClasses.push(\"\");\n\t\t\t\t}\n\t\t\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t\t\t{\n\t\t\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\t\t\n\t\t\t\t\tif ( iClass < 3 )\n\t\t\t\t\t{\n\t\t\t\t\t\tiClass++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Make changes to the classes for each cell as needed */\n\t\t\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\t\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\t\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t\t\t{\n\t\t\t\t\t/* Determine which column we're looking at */\n\t\t\t\t\tiTargetCol = i % iColumns;\n\t\t\t\t\t\n\t\t\t\t\t/* What is the full list of classes now */\n\t\t\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t\t\t/* What sorting class should be applied? */\n\t\t\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\t\t\n\t\t\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We changed something */\n\t\t\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We need to add a class */\n\t\t\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Save the state of a table in a cookie such that the page can be reloaded\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSaveState ( oSettings )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\t/* Store the interesting variables */\n\t\t\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\t\t\tvar oState = {\n\t\t\t\t\"iCreate\":      new Date().getTime(),\n\t\t\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\t\t\"abVisCols\":    []\n\t\t\t};\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\t\t\n\t\t\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attempt to load a saved table state from a cookie\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oInit DataTables init object so we can override settings\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLoadState ( oSettings, oInit )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\t\t\tif ( !oData )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t * cancelling of loading by returning false\n\t\t\t */\n\t\t\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Store the saved state so it might be accessed at any time */\n\t\t\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\t\t\n\t\t\t/* Restore key features */\n\t\t\toSettings._iDisplayStart    = oData.iStart;\n\t\t\toSettings.iInitDisplayStart = oData.iStart;\n\t\t\toSettings._iDisplayEnd      = oData.iEnd;\n\t\t\toSettings._iDisplayLength   = oData.iLength;\n\t\t\toSettings.aaSorting         = oData.aaSorting.slice();\n\t\t\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\t\t\n\t\t\t/* Search filtering  */\n\t\t\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t\t\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\t\t\n\t\t\t/* Column visibility state\n\t\t\t * Pass back visibility settings to the init handler, but to do not here override\n\t\t\t * the init object that the user might have passed in\n\t\t\t */\n\t\t\toInit.saved_aoColumns = [];\n\t\t\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t\t\t{\n\t\t\t\toInit.saved_aoColumns[i] = {};\n\t\t\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a new cookie with a value to store the state of a table\n\t\t *  @param {string} sName name of the cookie to create\n\t\t *  @param {string} sValue the value the cookie should take\n\t\t *  @param {int} iSecs duration of the cookie\n\t\t *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n\t\t *  @param {function} fnCallback User definable function to modify the cookie\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n\t\t{\n\t\t\tvar date = new Date();\n\t\t\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\t\t\n\t\t\t/* \n\t\t\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t\t\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t\t\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t\t\t * patch to use at least some of the path\n\t\t\t */\n\t\t\tvar aParts = window.location.pathname.split('/');\n\t\t\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\t\t\tvar sFullCookie, oData;\n\t\t\t\n\t\t\tif ( fnCallback !== null )\n\t\t\t{\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\t\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\t\t\taParts.join('/')+\"/\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t\t\t * belonging to DataTables.\n\t\t\t */\n\t\t\tvar\n\t\t\t\taCookies =document.cookie.split(';'),\n\t\t\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\t\t\taOldCookies = [];\n\t\t\t\n\t\t\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\t\t\n\t\t\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch( e ) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t// Make sure we delete the oldest ones first\n\t\t\t\taOldCookies.sort( function (a, b) {\n\t\t\t\t\treturn b.time - a.time;\n\t\t\t\t} );\n\t\t\n\t\t\t\t// Eliminate as many old DataTables cookies as we need to\n\t\t\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar old = aOldCookies.pop();\n\t\t\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\t\t\taParts.join('/') + \"/\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tdocument.cookie = sFullCookie;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read an old cookie to get a cookie with an old table state\n\t\t *  @param {string} sName name of the cookie to read\n\t\t *  @returns {string} contents of the cookie - or null if no cookie with that name found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReadCookie ( sName )\n\t\t{\n\t\t\tvar\n\t\t\t\taParts = window.location.pathname.split('/'),\n\t\t\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t\t\t \tsCookieContents = document.cookie.split(';');\n\t\t\t\n\t\t\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t\t\t{\n\t\t\t\tvar c = sCookieContents[i];\n\t\t\t\t\n\t\t\t\twhile (c.charAt(0)==' ')\n\t\t\t\t{\n\t\t\t\t\tc = c.substring(1,c.length);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t\t\t{\n\t\t\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return the settings object for a particular table\n\t\t *  @param {node} nTable table we are using as a dataTable\n\t\t *  @returns {object} Settings object - or null if not found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSettingsFromNode ( nTable )\n\t\t{\n\t\t\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t\t\t{\n\t\t\t\t\treturn DataTable.settings[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the TR nodes for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {array} TR array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTrNodes ( oSettings )\n\t\t{\n\t\t\tvar aNodes = [];\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\taNodes.push( aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn aNodes;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an flat array with all TD nodes for the table, or row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n\t\t *    if not given then the return array will contain all nodes for the table\n\t\t *  @returns {array} TD array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n\t\t{\n\t\t\tvar anReturn = [];\n\t\t\tvar iCorrector;\n\t\t\tvar anTds, nTd;\n\t\t\tvar iRow, iRows=oSettings.aoData.length,\n\t\t\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\t\t\n\t\t\t/* Allow the collection to be limited to just one row */\n\t\t\tif ( iIndividualRow !== undefined )\n\t\t\t{\n\t\t\t\tiStart = iIndividualRow;\n\t\t\t\tiEnd = iIndividualRow+1;\n\t\t\t}\n\t\t\n\t\t\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tif ( oData.nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\t\t\tanTds = [];\n\t\t\t\t\tnTd = oData.nTr.firstChild;\n\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t{\n\t\t\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn anReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Log an error message\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iLevel log error messages, or display them to the user\n\t\t *  @param {string} sMesg error message\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLog( oSettings, iLevel, sMesg )\n\t\t{\n\t\t\tvar sAlert = (oSettings===null) ?\n\t\t\t\t\"DataTables warning: \"+sMesg :\n\t\t\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\t\t\n\t\t\tif ( iLevel === 0 )\n\t\t\t{\n\t\t\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t\t\t{\n\t\t\t\t\talert( sAlert );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(sAlert);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if ( window.console && console.log )\n\t\t\t{\n\t\t\t\tconsole.log( sAlert );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * See if a property is defined on one object, if so assign it to the other object\n\t\t *  @param {object} oRet target object\n\t\t *  @param {object} oSrc source object\n\t\t *  @param {string} sName property\n\t\t *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnMap( oRet, oSrc, sName, sMappedName )\n\t\t{\n\t\t\tif ( sMappedName === undefined )\n\t\t\t{\n\t\t\t\tsMappedName = sName;\n\t\t\t}\n\t\t\tif ( oSrc[sName] !== undefined )\n\t\t\t{\n\t\t\t\toRet[sMappedName] = oSrc[sName];\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n\t\t * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n\t\t * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n\t\t * we do want to deep copy arrays.\n\t\t *  @param {object} oOut Object to extend\n\t\t *  @param {object} oExtender Object from which the properties will be applied to oOut\n\t\t *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n\t\t *  @memberof DataTable#oApi\n\t\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t\t */\n\t\tfunction _fnExtend( oOut, oExtender )\n\t\t{\n\t\t\tvar val;\n\t\t\t\n\t\t\tfor ( var prop in oExtender )\n\t\t\t{\n\t\t\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t\t\t{\n\t\t\t\t\tval = oExtender[prop];\n\t\t\n\t\t\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t\t\t{\n\t\t\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toOut[prop] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oOut;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Bind an event handers to allow a click or return key to activate the callback.\n\t\t * This is good for accessibility since a return on the keyboard will have the\n\t\t * same effect as a click, if the element has focus.\n\t\t *  @param {element} n Element to bind the action to\n\t\t *  @param {object} oData Data object to pass to the triggered function\n\t\t *  @param {function} fn Callback function for when the event is triggered\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBindAction( n, oData, fn )\n\t\t{\n\t\t\t$(n)\n\t\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} )\n\t\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} } )\n\t\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Register a callback function. Easily allows a callback function to be added to\n\t\t * an array store of callback functions that can then all be called together.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {function} fn Function to be called back\n\t\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t\t{\n\t\t\tif ( fn )\n\t\t\t{\n\t\t\t\toSettings[sStore].push( {\n\t\t\t\t\t\"fn\": fn,\n\t\t\t\t\t\"sName\": sName\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Fire callback functions and trigger events. Note that the loop over the callback\n\t\t * array store is done backwards! Further note that you do not want to fire off triggers\n\t\t * in time sensitive applications (for example cell creation) as its slow.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n\t\t *    is fired\n\t\t *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n\t\t{\n\t\t\tvar aoStore = oSettings[sStore];\n\t\t\tvar aRet =[];\n\t\t\n\t\t\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t\t\t}\n\t\t\n\t\t\tif ( sTrigger !== null )\n\t\t\t{\n\t\t\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t\t\t}\n\t\t\n\t\t\treturn aRet;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n\t\t * library, then we use that as it is fast, safe and accurate. If the function isn't \n\t\t * available then we need to built it ourselves - the inspiration for this function comes\n\t\t * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n\t\t * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n\t\t * do what we need, without requiring a dependency for DataTables.\n\t\t *  @param {object} o JSON object to be converted\n\t\t *  @returns {string} JSON string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n\t\t{\n\t\t\t/* Not an object or array */\n\t\t\tvar sType = typeof o;\n\t\t\tif (sType !== \"object\" || o === null)\n\t\t\t{\n\t\t\t\t// simple data type\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\to = '\"'+o+'\"';\n\t\t\t\t}\n\t\t\t\treturn o+\"\";\n\t\t\t}\n\t\t\n\t\t\t/* If object or array, need to recurse over it */\n\t\t\tvar\n\t\t\t\tsProp, mValue,\n\t\t\t\tjson = [],\n\t\t\t\tbArr = $.isArray(o);\n\t\t\t\n\t\t\tfor (sProp in o)\n\t\t\t{\n\t\t\t\tmValue = o[sProp];\n\t\t\t\tsType = typeof mValue;\n\t\t\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\tmValue = '\"'+mValue+'\"';\n\t\t\t\t}\n\t\t\t\telse if (sType === \"object\" && mValue !== null)\n\t\t\t\t{\n\t\t\t\t\tmValue = _fnJsonString(mValue);\n\t\t\t\t}\n\t\t\n\t\t\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t\t\t}\n\t\t\n\t\t\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * From some browsers (specifically IE6/7) we need special handling to work around browser\n\t\t * bugs - this function is used to detect when these workarounds are needed.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBrowserDetect( oSettings )\n\t\t{\n\t\t\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t\t\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t\t\t * without forcing scrolling\n\t\t\t */\n\t\t\tvar n = $(\n\t\t\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t\t\t'</div>'+\n\t\t\t\t'</div>')[0];\n\t\t\n\t\t\tdocument.body.appendChild( n );\n\t\t\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\t\t\tdocument.body.removeChild( n );\n\t\t}\n\t\t\n\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar i, iLen, a = [], tr;\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\t\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\t\t\n\t\t\tif ( !oOpts )\n\t\t\t{\n\t\t\t\toOpts = {};\n\t\t\t}\n\t\t\n\t\t\toOpts = $.extend( {}, {\n\t\t\t\t\"filter\": \"none\", // applied\n\t\t\t\t\"order\": \"current\", // \"original\"\n\t\t\t\t\"page\": \"all\" // current\n\t\t\t}, oOpts );\n\t\t\n\t\t\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t\t\t// senseless otherwise\n\t\t\tif ( oOpts.page == 'current' )\n\t\t\t{\n\t\t\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr ;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr;\n\t\t\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t\t\t}\n\t\t\n\t\t\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t\t\t * to make the selector act like it would in a full table - so we need\n\t\t\t * to build both results and then combine them together\n\t\t\t */\n\t\t\tvar jqA = $(a);\n\t\t\tvar jqTRs = jqA.filter( sSelector );\n\t\t\tvar jqDescendants = jqA.find( sSelector );\n\t\t\n\t\t\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to  \n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for \n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"filter\": \"applied\"});\n\t\t *      \n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the filter\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar aOut = [];\n\t\t\tvar i, iLen, iIndex;\n\t\t\tvar aTrs = this.$( sSelector, oOpts );\n\t\t\n\t\t\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t\t\t}\n\t\t\n\t\t\treturn aOut;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using \n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} mData The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in \n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *    \n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *    \n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *        \n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( mData, bRedraw )\n\t\t{\n\t\t\tif ( mData.length === 0 )\n\t\t\t{\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\t\n\t\t\tvar aiReturn = [];\n\t\t\tvar iTest;\n\t\t\t\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t\t\t{\n\t\t\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\t\t\tif ( iTest == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn aiReturn;\n\t\t\t\t\t}\n\t\t\t\t\taiReturn.push( iTest );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiTest = _fnAddData( oSettings, mData );\n\t\t\t\tif ( iTest == -1 )\n\t\t\t\t{\n\t\t\t\t\treturn aiReturn;\n\t\t\t\t}\n\t\t\t\taiReturn.push( iTest );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn aiReturn;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data \n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n\t\t * through the sWidth parameter). This can be useful when the width of the table's \n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      $(window).bind('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\tthis.fnDraw( false );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\tthis.oApi._fnScrollDraw(oSettings);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnClearTable( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which \n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\t\t\tif ( nTrParent )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 1;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [fnCallBack] Callback function\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, iAODataIndex;\n\t\t\t\n\t\t\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\t\t\n\t\t\t/* Return the data array from this row */\n\t\t\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\t\t\n\t\t\t/* Update the _DT_RowIndex parameter */\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the target row from the search array */\n\t\t\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\t\t\n\t\t\t/* Delete from the display arrays */\n\t\t\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t\t\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\t\t\n\t\t\t/* If there is a user callback function - call it */\n\t\t\tif ( typeof fnCallBack === \"function\" )\n\t\t\t{\n\t\t\t\tfnCallBack.call( this, oSettings, oData );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check for an 'overflow' they case for displaying the table */\n\t\t\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\treturn oData;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables \n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( bRemove )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\t\t\tvar nBody = oSettings.nTBody;\n\t\t\tvar i, iLen;\n\t\t\n\t\t\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\t\t\n\t\t\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\t\t\toSettings.bDestroying = true;\n\t\t\t\n\t\t\t/* Fire off the destroy callbacks for plug-ins etc */\n\t\t\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\t\t\n\t\t\t/* If the table is not being removed, restore the hidden columns */\n\t\t\tif ( !bRemove )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Blitz all DT events */\n\t\t\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\t\t\n\t\t\t/* If there is an 'empty' indicator row, remove it */\n\t\t\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\t\t\n\t\t\t/* When scrolling we had to break the table up - restore it */\n\t\t\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('thead').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the DataTables generated nodes, events and classes */\n\t\t\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t\t\t$(oSettings.nTableWrapper).remove();\n\t\t\t\n\t\t\toSettings.aaSorting = [];\n\t\t\toSettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\n\t\t\t$('th, td', oSettings.nTHead).removeClass( [\n\t\t\t\toSettings.oClasses.sSortable,\n\t\t\t\toSettings.oClasses.sSortableAsc,\n\t\t\t\toSettings.oClasses.sSortableDesc,\n\t\t\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t\t\t);\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\t\t\n\t\t\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\t\t\tvar kids = jqWrapper.contents();\n\t\t\t\t\t$(this).append( kids );\n\t\t\t\t\tjqWrapper.remove();\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the TR elements back into the table in their original order */\n\t\t\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t\t\t{\n\t\t\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t\t\t}\n\t\t\telse if ( !bRemove )\n\t\t\t{\n\t\t\t\tnOrig.appendChild( oSettings.nTable );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Restore the width of the original table */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t\t\t{\n\t\t\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t\t\t}\n\t\t\t\n\t\t\t/* If the were originally stripe classes - then we add them back here. Note\n\t\t\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t\t\t * it's a good effort without getting carried away\n\t\t\t */\n\t\t\tiLen = oSettings.asDestroyStripes.length;\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar anRows = $(nBody).children('tr');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i] == oSettings )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* End it all */\n\t\t\toSettings = null;\n\t\t\toInit = null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( bComplete )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tif ( bComplete === false )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( !oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRegex === undefined || bRegex === null )\n\t\t\t{\n\t\t\t\tbRegex = false;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bSmart === undefined || bSmart === null )\n\t\t\t{\n\t\t\t\tbSmart = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t\t\t{\n\t\t\t\tbShowGlobal = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t\t\t{\n\t\t\t\tbCaseInsensitive = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilterComplete( oSettings, {\n\t\t\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t}, 1 );\n\t\t\t\t\n\t\t\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t\t\t{\n\t\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t\t\t// inside an iframe or frame...\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch ( e ) {\n\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Single column filter */\n\t\t\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t} );\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the \n\t\t * provided parameters.\n\t\t *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [iCol] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( mRow, iCol )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( mRow !== undefined )\n\t\t\t{\n\t\t\t\tvar iRow = mRow;\n\t\t\t\tif ( typeof mRow === 'object' )\n\t\t\t\t{\n\t\t\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\t\t\tif (sNode === \"tr\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNode === \"td\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( iCol !== undefined )\n\t\t\t\t{\n\t\t\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t\t\t}\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow]._aData : null;\n\t\t\t}\n\t\t\treturn _fnGetDataMaster( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will \n\t\t * typically want to use the '$' API method in preference to this as it is more \n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( iRow !== undefined ) {\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow].nTr : null;\n\t\t\t}\n\t\t\treturn _fnGetTrNodes( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible), \n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *        \n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *        \n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *      \n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( nNode )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\t\t\n\t\t\tif ( sNodeName == \"TR\" )\n\t\t\t{\n\t\t\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t\t\t}\n\t\t\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\t\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\t\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently \n\t\t * on display on the page, with the HTML contents that is passed into the \n\t\t * function. This can be used, for example, to ask for confirmation that a \n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\n\t\t\t/* Check that the row given is in the table */\n\t\t\tvar nTableRows = _fnGetTrNodes( oSettings );\n\t\t\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* the old open one if there is one */\n\t\t\tthis.fnClose( nTr );\n\t\t\t\n\t\t\tvar nNewRow = document.createElement(\"tr\");\n\t\t\tvar nNewCell = document.createElement(\"td\");\n\t\t\tnNewRow.appendChild( nNewCell );\n\t\t\tnNewCell.className = sClass;\n\t\t\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\t\t\n\t\t\tif (typeof mHtml === \"string\")\n\t\t\t{\n\t\t\t\tnNewCell.innerHTML = mHtml;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(nNewCell).html( mHtml );\n\t\t\t}\n\t\t\n\t\t\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\t\t\tvar nTrs = $('tr', oSettings.nTBody);\n\t\t\tif ( $.inArray(nTr, nTrs) != -1  )\n\t\t\t{\n\t\t\t\t$(nNewRow).insertAfter(nTr);\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aoOpenRows.push( {\n\t\t\t\t\"nTr\": nNewRow,\n\t\t\t\t\"nParent\": nTr\n\t\t\t} );\n\t\t\t\n\t\t\treturn nNewRow;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API \n\t\t * function. With this function you can have a DataTables table go to the next, \n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnPageChange( oSettings, mAction );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen;\n\t\t\tvar aoColumns = oSettings.aoColumns;\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar nTd, bAppend, iBefore;\n\t\t\t\n\t\t\t/* No point in doing anything if we are requesting what is already true */\n\t\t\tif ( aoColumns[iCol].bVisible == bShow )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the column */\n\t\t\tif ( bShow )\n\t\t\t{\n\t\t\t\tvar iInsert = 0;\n\t\t\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiInsert++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\t\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\t\t\n\t\t\t\t/* Which coloumn should we be inserting before? */\n\t\t\t\tif ( !bAppend )\n\t\t\t\t{\n\t\t\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiBefore = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( bAppend )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Remove a column from display */\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Clear to set the visible flag */\n\t\t\taoColumns[iCol].bVisible = bShow;\n\t\t\n\t\t\t/* Redraw the header and footer based on the new column visibility */\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\t\n\t\t\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\t\t\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a redraw incase anything depending on the table columns needs it \n\t\t\t * (built-in: scrolling) \n\t\t\t */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnSaveState( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See \n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *      \n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the \n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\toSettings.aaSorting = aaSort;\n\t\t\t_fnSort( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t\t\t \tfnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, sDisplay;\n\t\t\tvar iRow = (typeof mRow === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\t\t\n\t\t\tif ( $.isArray(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Array update - update the whole row */\n\t\t\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\t\t\n\t\t\t\t/* Flag to the function that we are recursing */\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\t\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\t\t\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Individual cell update */\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\t\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\n\t\t\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\t\t\tif ( oCol.fnRender !== null )\n\t\t\t\t{\n\t\t\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* Do the actual HTML update */\n\t\t\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t\t\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t\t\t */\n\t\t\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\t\t\toSettings, \n\t\t\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t\t\t);\n\t\t\t\n\t\t\t/* Perform pre-draw actions */\n\t\t\tif ( bAction === undefined || bAction )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\t\t\n\t\t\n\t\t/*\n\t\t * This is really a good bit rubbish this method of exposing the internal methods\n\t\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t\t */\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a wrapper function for exporting an internal functions to an external API.\n\t\t *  @param {string} sFunc API function name\n\t\t *  @returns {function} wrapped function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnExternApiFunc (sFunc)\n\t\t{\n\t\t\treturn function() {\n\t\t\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\t\t\tArray.prototype.slice.call(arguments) );\n\t\t\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t\t\t};\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Reference to internal functions for use by plug-in developers. Note that these\n\t\t * methods are references to internal functions and are considered to be private.\n\t\t * If you use these methods, be aware that they are liable to change between versions\n\t\t * (check the upgrade notes).\n\t\t *  @namespace\n\t\t */\n\t\tthis.oApi = {\n\t\t\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\t\t\"_fnInitialise\": _fnInitialise,\n\t\t\t\"_fnInitComplete\": _fnInitComplete,\n\t\t\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\t\t\"_fnAddColumn\": _fnAddColumn,\n\t\t\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\t\t\"_fnAddData\": _fnAddData,\n\t\t\t\"_fnCreateTr\": _fnCreateTr,\n\t\t\t\"_fnGatherData\": _fnGatherData,\n\t\t\t\"_fnBuildHead\": _fnBuildHead,\n\t\t\t\"_fnDrawHead\": _fnDrawHead,\n\t\t\t\"_fnDraw\": _fnDraw,\n\t\t\t\"_fnReDraw\": _fnReDraw,\n\t\t\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\t\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\t\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\t\t\"_fnServerParams\": _fnServerParams,\n\t\t\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\t\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\t\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\t\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\t\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\t\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\t\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\t\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\t\t\"_fnFilter\": _fnFilter,\n\t\t\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\t\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\t\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\t\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\t\t\"_fnSort\": _fnSort,\n\t\t\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\t\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\t\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\t\t\"_fnPageChange\": _fnPageChange,\n\t\t\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\t\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\t\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\t\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\t\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\t\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\t\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\t\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\t\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\t\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\t\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\t\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\t\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\t\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\t\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\t\t\"_fnStringToCss\": _fnStringToCss,\n\t\t\t\"_fnDetectType\": _fnDetectType,\n\t\t\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\t\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\t\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\t\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\t\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\t\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\t\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\t\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\t\t\"_fnLog\": _fnLog,\n\t\t\t\"_fnClearTable\": _fnClearTable,\n\t\t\t\"_fnSaveState\": _fnSaveState,\n\t\t\t\"_fnLoadState\": _fnLoadState,\n\t\t\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\t\t\"_fnReadCookie\": _fnReadCookie,\n\t\t\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\t\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\t\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\t\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\t\t\"_fnMap\": _fnMap,\n\t\t\t\"_fnGetRowData\": _fnGetRowData,\n\t\t\t\"_fnGetCellData\": _fnGetCellData,\n\t\t\t\"_fnSetCellData\": _fnSetCellData,\n\t\t\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\t\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\t\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\t\t\"_fnBindAction\": _fnBindAction,\n\t\t\t\"_fnExtend\": _fnExtend,\n\t\t\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\t\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\t\t\"_fnJsonString\": _fnJsonString,\n\t\t\t\"_fnRender\": _fnRender,\n\t\t\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\t\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\t\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\t\t\"_fnGetColumns\": _fnGetColumns\n\t\t};\n\t\t\n\t\t$.extend( DataTable.ext.oApi, this.oApi );\n\t\t\n\t\tfor ( var sFunc in DataTable.ext.oApi )\n\t\t{\n\t\t\tif ( sFunc )\n\t\t\t{\n\t\t\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar bUsePassedData = false;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\t\t\t\"table: \"+this.nodeName );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( DataTable.settings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn DataTable.settings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oInit.bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( DataTable.settings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\":        this,\n\t\t\t\t\"oApi\":          _that.oApi,\n\t\t\t\t\"oInit\":         oInit,\n\t\t\t\t\"sDestroyWidth\": $(this).width(),\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\tDataTable.settings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\tif ( !oInit )\n\t\t\t{\n\t\t\t\toInit = {};\n\t\t\t}\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\toInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripeClasses\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n\t\t\t_fnMap( oSettings, oInit, \"fnServerData\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n\t\t\t_fnMap( oSettings, oInit, \"sServerMethod\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSorting\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n\t\t\t_fnMap( oSettings, oInit, \"aLengthMenu\" );\n\t\t\t_fnMap( oSettings, oInit, \"sPaginationType\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxSource\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n\t\t\t_fnMap( oSettings, oInit, \"iCookieDuration\" );\n\t\t\t_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n\t\t\t_fnMap( oSettings, oInit, \"sDom\" );\n\t\t\t_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n\t\t\t_fnMap( oSettings, oInit, \"iTabIndex\" );\n\t\t\t_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n\t\t\t_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n\t\t\t_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n\t\t\t_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateLoad\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateSave\" );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t\t\t\t   oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t\t\t\t * processing must be enabled by the developer\n\t\t\t\t */\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t\t\t\t * you want to have multiple tables with multiple independent classes \n\t\t\t\t */\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\t\t\t\n\t\t\t\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oSettings.oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by a cookie! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\toSettings.oFeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.aaData !== null )\n\t\t\t{\n\t\t\t\tbUsePassedData = true;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tif ( oInit.oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t\t\t\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toSettings.oClasses.sStripeOdd,\n\t\t\t\t\toSettings.oClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tiLen=oSettings.asStripeClasses.length;\n\t\t\toSettings.asDestroyStripes = [];\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar bStripeRemove = false;\n\t\t\t\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tbStripeRemove = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\t\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( bStripeRemove )\n\t\t\t\t{\n\t\t\t\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\t\t\t\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumnsInit[i] === null )\n\t\t\t\t\t{\n\t\t\t\t\t\taoColumnsInit[i] = {};\n\t\t\t\t\t}\n\t\t\t\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * Check the aaSorting array\n\t\t\t */\n\t\t\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][0] = 0;\n\t\t\t\t}\n\t\t\t\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\t\t\t\n\t\t\t\t/* Add a default sorting index */\n\t\t\t\tif ( oSettings.aaSorting[i][2] === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][2] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\t\t\t\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Set the current sorting index based on aoColumns.asSorting */\n\t\t\t\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = [ document.createElement( 'thead' ) ];\n\t\t\t\tthis.appendChild( thead[0] );\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = [ document.createElement( 'tbody' ) ];\n\t\t\t\tthis.appendChild( tbody[0] );\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\toSettings.nTBody.setAttribute( \"role\", \"alert\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = [ document.createElement( 'tfoot' ) ];\n\t\t\t\tthis.appendChild( tfoot[0] );\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length > 0 )\n\t\t\t{\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( bUsePassedData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Grab the data from the page */\n\t\t\t\t_fnGatherData( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t * to ensure compatibility.\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t *    version, or false if this version of DataTales is not suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n\t */\n\tDataTable.fnVersionCheck = function( sVersion )\n\t{\n\t\t/* This is cheap, but effective */\n\t\tvar fnZPad = function (Zpad, count)\n\t\t{\n\t\t\twhile(Zpad.length < count) {\n\t\t\t\tZpad += '0';\n\t\t\t}\n\t\t\treturn Zpad;\n\t\t};\n\t\tvar aThis = DataTable.ext.sVersion.split('.');\n\t\tvar aThat = sVersion.split('.');\n\t\tvar sThis = '', sThat = '';\n\t\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsThis += fnZPad( aThis[i], 3 );\n\t\t\tsThat += fnZPad( aThat[i], 3 );\n\t\t}\n\t\t\n\t\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n\t};\n\t\n\t\n\t/**\n\t * Check if a TABLE node is a DataTable table already or not.\n\t *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n\t *    node types can be passed in, but will always return false).\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var ex = document.getElementById('example');\n\t *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n\t *      $(ex).dataTable();\n\t *    }\n\t */\n\tDataTable.fnIsDataTable = function ( nTable )\n\t{\n\t\tvar o = DataTable.settings;\n\t\n\t\tfor ( var i=0 ; i<o.length ; i++ )\n\t\t{\n\t\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn false;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can select to\n\t * get only currently visible tables.\n\t *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n\t *    visible tables only.\n\t *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var table = $.fn.dataTable.fnTables(true);\n\t *    if ( table.length > 0 ) {\n\t *      $(table).dataTable().fnAdjustColumnSizing();\n\t *    }\n\t */\n\tDataTable.fnTables = function ( bVisible )\n\t{\n\t\tvar out = [];\n\t\n\t\tjQuery.each( DataTable.settings, function (i, o) {\n\t\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t\t{\n\t\t\t\tout.push( o.nTable );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn out;\n\t};\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t/**\n\t * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n\t * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n\t * of the build in methods use this method to provide their own capabilities (sorting methods\n\t * for example).\n\t * \n\t * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n\t * and modified by plug-ins.\n\t *  @namespace\n\t */\n\tDataTable.models.ext = {\n\t\t/**\n\t\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t\t * over the filtering logic. Each element in this array is a function (parameters\n\t\t * described below) that is called for every row in the table, and your logic decides if\n\t\t * it should be included in the filtered data set or not.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       Function input parameters:\n\t\t *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t\t *    // a certain range.\n\t\t *    $.fn.dataTableExt.afnFiltering.push(\n\t\t *      function( oSettings, aData, iDataIndex ) {\n\t\t *        var iMin = document.getElementById('min').value * 1;\n\t\t *        var iMax = document.getElementById('max').value * 1;\n\t\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"afnFiltering\": [],\n\t\n\t\n\t\t/**\n\t\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t\t * an array of the values you wish to be sorted for the column in question and then return\n\t\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t\t * data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *         <li>{int} Target column index</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{array} Data for the column to be sorted upon</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t\t *    {\n\t\t *      var aData = [];\n\t\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t *        aData.push( this.value );\n\t\t *      } );\n\t\t *      return aData;\n\t\t *    }\n\t\t */\n\t\t\"afnSortData\": [],\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t\t *   <ul>\n\t\t *     <li>{function} fnInit Initialisation of the plug-in\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t\t *                into DataTables control (sDom) - for example this might be useful when \n\t\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t\t *     <li>{string} sFeature Feature name</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t * \n\t\t *  @example\n\t\t *    // How TableTools initialises itself.\n\t\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\",\n\t\t *      \"sFeature\": \"TableTools\"\n\t\t *    } );\n\t\t */\n\t\t\"aoFeatures\": [],\n\t\n\t\n\t\t/**\n\t\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t\t * column) or they can be automatically detected by the methods in this array. The functions\n\t\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t\t * and returning the type if it is a known type, or null otherwise.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be analysed</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t\t *           on to the other type detection functions.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  \n\t\t *  @example\n\t\t *    // Currency type detection plug-in:\n\t\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t\t *      function ( sData ) {\n\t\t *        var sValidChars = \"0123456789.-\";\n\t\t *        var Char;\n\t\t *        \n\t\t *        // Check the numeric part\n\t\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t\t *          Char = sData.charAt(i); \n\t\t *          if (sValidChars.indexOf(Char) == -1) {\n\t\t *            return null;\n\t\t *          }\n\t\t *        }\n\t\t *        \n\t\t *        // Check prefixed by currency\n\t\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t\t *          return 'currency';\n\t\t *        }\n\t\t *        return null;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"aTypes\": [],\n\t\n\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t\t * in order to ensure compatibility.\n\t\t *  @type function\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t\t *    required version, or false if this version of DataTales is not suitable\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iApiIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t\t * the format that should be filtered upon. This is done by adding functions this object \n\t\t * with a parameter name which matches the sType for that target column. This is the\n\t\t * corollary of <i>afnSortData</i> for filtering data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t * \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t *    }\n\t\t */\n\t\t\"ofnSearch\": {},\n\t\n\t\n\t\t/**\n\t\t * Container for all private functions in DataTables so they can be exposed externally\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oApi\": {},\n\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oStdClasses\": {},\n\t\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oJUIClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t\t * the addition of pagination controls by extending this object, which can then be enabled\n\t\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t\t * to) that has two properties, both methods that are used by DataTables to update the\n\t\t * control's state.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t\t *         of the table. It is expected that this function will add the required DOM elements \n\t\t *         to the page for the paging controls to work. The element pointer \n\t\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t\t *         as children\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t\t *               change, this method must be called to redraw the table.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *     <li>\n\t\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t\t *         status.\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t\t *               or attach new event listeners</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t\t *        nFirst = document.createElement( 'span' );\n\t\t *        nPrevious = document.createElement( 'span' );\n\t\t *        nNext = document.createElement( 'span' );\n\t\t *        nLast = document.createElement( 'span' );\n\t\t *        \n\t\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t\t *        \n\t\t *        nFirst.className = \"paginate_button first\";\n\t\t *        nPrevious.className = \"paginate_button previous\";\n\t\t *        nNext.className=\"paginate_button next\";\n\t\t *        nLast.className = \"paginate_button last\";\n\t\t *        \n\t\t *        nPaging.appendChild( nFirst );\n\t\t *        nPaging.appendChild( nPrevious );\n\t\t *        nPaging.appendChild( nNext );\n\t\t *        nPaging.appendChild( nLast );\n\t\t *        \n\t\t *        $(nFirst).click( function () {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nPrevious).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nNext).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nLast).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t\t *      },\n\t\t *      \n\t\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t\t *        if ( !oSettings.aanFeatures.p ) {\n\t\t *          return;\n\t\t *        }\n\t\t *        \n\t\t *        // Loop over each instance of the pager\n\t\t *        var an = oSettings.aanFeatures.p;\n\t\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t *          var buttons = an[i].getElementsByTagName('span');\n\t\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t\t *          }\n\t\t *          \n\t\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t\t *            buttons[2].className = \"paginate_disabled_next\";\n\t\t *            buttons[3].className = \"paginate_disabled_next\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[2].className = \"paginate_enabled_next\";\n\t\t *            buttons[3].className = \"paginate_enabled_next\";\n\t\t *          }\n\t\t *        }\n\t\t *      }\n\t\t *    };\n\t\t */\n\t\t\"oPagination\": {},\n\t\n\t\n\t\t/**\n\t\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t\t * data column (you can add your own type detection functions, or override automatic \n\t\t * detection using sType). With this specific type given to the column, DataTables will \n\t\t * apply the required sort from the functions in the object. Each sort type must provide\n\t\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t\t * are run). The two sorting functions are typical Javascript sort methods:\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data to compare to the second parameter</li>\n\t\t *         <li>{*} Data to compare to the first parameter</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t\t *           the first parameter should be sorted height than the second parameter.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-case-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-case-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Case-insensitive string sorting, with pre-formatting\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-pre\": function(x) {\n\t\t *        return x.toLowerCase();\n\t\t *      },\n\t\t *      \"string-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"oSort\": {},\n\t\n\t\n\t\t/**\n\t\t * Version string for plug-ins to check compatibility. Allowed format is\n\t\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t\t * e are optional\n\t\t *  @type string\n\t\t *  @default Version number\n\t\t */\n\t\t\"sVersion\": DataTable.version,\n\t\n\t\n\t\t/**\n\t\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t\t *  @type string\n\t\t *  @default alert\n\t\t */\n\t\t\"sErrMode\": \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Store information for DataTables to access globally about other instances\n\t\t *  @namespace\n\t\t *  @private\n\t\t */\n\t\t\"_oExternConfig\": {\n\t\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\t\"iNextUnique\": 0\n\t\t}\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings \n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data \n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is \n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": [],\n\t\n\t\t/**\n\t\t * Array of TD elements that are cached for hidden rows, so they can be\n\t\t * reinserted into the table if a column is made visible again (or to act\n\t\t * as a store if a column is made hidden). Only hidden columns have a \n\t\t * reference in the array. For non-hidden columns the value is either\n\t\t * undefined or null.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_anHidden\": [],\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults.columns} \n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t\t * to do with the data, and this property serves as the switch. Firstly, you \n\t\t * can have the sorting and filtering use the rendered value (true - default), \n\t\t * or you can have the sorting and filtering us the original value (false).\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate to the type detection method if the automatic type\n\t\t * detection should be used, or if a column type (sType) has been specified\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @private\n\t\t */\n\t\t\"_bAutoType\": true,\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column \n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get - \n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @default null\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b> \n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data \n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t\t * in DataTables as such, but can be used for plug-ins to reference the \n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation \n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which \n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\" },\n\t\t *          { \"sTitle\": \"Browser\" },\n\t\t *          { \"sTitle\": \"Platform\" },\n\t\t *          { \"sTitle\": \"Version\" },\n\t\t *          { \"sTitle\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (mData)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t\t * initialisation. You can define which column(s) the sort is performed upon, \n\t\t * and the sorting direction, with this variable. The aaSorting array should \n\t\t * contain an array for each column to be sorted initially containing the \n\t\t * column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the aaSorting parameter, but \n\t\t * cannot be overridden by user interaction with the table. What this means \n\t\t * is that you could have a column (visible or hidden) which the sorting will \n\t\t * always be forced on first - any sorting after that (from the user) will \n\t\t * then be performed as required. This can be useful for grouping rows \n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSortingFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be \n\t\t * either a 1D array of options which will be used for both the displayed \n\t\t * option and the value, or a 2D array which will use the array in the first \n\t\t * position as the value, and the array in the second position as the \n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t *  \n\t\t *  @example\n\t\t *    // Setting the default display length as well as length menu\n\t\t *    // This is likely to be wanted if you remove the '10' option which\n\t\t *    // is the iDisplayLength default.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 25,\n\t\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The aoColumns option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see \n\t\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t\t * column, multiple columns, or all columns, using the aTargets property of \n\t\t * each object in the array. This allows great flexibility when creating \n\t\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t\t * columns you specifically want. aoColumnDefs may use any of the column \n\t\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t\t * have aTargets defined in each object in the array. Values in the aTargets\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as oSearch, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size \n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoSearchCols\": [\n\t\t *          null,\n\t\t *          { \"sSearch\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This \n\t\t * array may be of any length, and DataTables will apply each class \n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t\t *    options</i>\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using aoColumns.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bAutoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t\t *        \"bDeferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with \n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false,\n\t\t *        \"bDestroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.sDom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information \n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bInfo\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bJQueryUI\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bLengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *    \n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false,\n\t\t *        \"bRetrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *    \n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var oTable = initTable();\n\t\t *      // perform API operations with oTable \n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollAutoCss\": false,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollAutoCss\": true,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t\t * data as a user scrolls through a table, which is very useful for large\n\t\t * dataset. This cannot be used with pagination, which is automatically\n\t\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t\t * in preference to this option.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollInfinite\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the \"bSortable\" option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSort\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t\t * table display information such as pagination information, display length,\n\t\t * filtering and sorting. As such when the end user reloads the page the\n\t\t * display display will match what thy had previously set up.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * Customise the cookie and / or the parameters being stored when using\n\t\t * DataTables with state saving enabled. This function is called whenever\n\t\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t\t * returned. Note that the data object passed in is a Javascript object which\n\t\t * must be converted to a string (JSON.stringify for example).\n\t\t *  @type function\n\t\t *  @param {string} sName Name of the cookie defined by DataTables\n\t\t *  @param {object} oData Data to be stored in the cookie\n\t\t *  @param {string} sExpires Cookie expires string\n\t\t *  @param {string} sPath Path of the cookie to set\n\t\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t\t *    using encodeURIComponent())\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t\t *          // Customise oData or sName or whatever else here\n\t\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDataIndex The index of this row in aoData\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnDrawCallback\": function( oSettings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' even.\n\t\t *  @type function\n\t\t *  @param {node} nFoot \"TR\" element for the footer\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the \n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the \n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} iIn number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFormatNumber\": function ( iIn ) {\n\t\t *          if ( iIn &lt; 1000 ) {\n\t\t *            return iIn;\n\t\t *          } else {\n\t\t *            var \n\t\t *              s=(iIn+\"\"), \n\t\t *              a=s.split(\"\"), out=\"\", \n\t\t *              iLen=s.length;\n\t\t *            \n\t\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t\t *                out = \"'\"+out;\n\t\t *              }\n\t\t *              out = a[iLen-i-1]+out;\n\t\t *            }\n\t\t *          }\n\t\t *          return out;\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( iIn ) {\n\t\t\tif ( iIn < 1000 )\n\t\t\t{\n\t\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\t\treturn iIn;\n\t\t\t}\n\t\n\t\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t\t{\n\t\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t\t}\n\t\t\t\tout = a[iLen-i-1]+out;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} nHead \"TR\" element for the header\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} iStart Starting position in data for the draw\n\t\t *  @param {int} iEnd End position in data for the draw\n\t\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t\t *        return iStart +\" to \"+ iEnd;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnInitComplete\": function(oSettings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server ($.getJSON) so something more suitable for your\n\t\t * application. For example you could use POST data, or pull information from\n\t\t * a Gears or AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t\t *  @param {array} aoData A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} fnCallback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // POST data to server\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\",\n\t\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t\t *          oSettings.jqXHR = $.ajax( {\n\t\t *            \"dataType\": 'json', \n\t\t *            \"type\": \"POST\", \n\t\t *            \"url\": sSource, \n\t\t *            \"data\": aoData, \n\t\t *            \"success\": fnCallback\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\t\"url\":  sUrl,\n\t\t\t\t\"data\": aoData,\n\t\t\t\t\"success\": function (json) {\n\t\t\t\t\tif ( json.sError ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\t\tfnCallback( json );\n\t\t\t\t},\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} aoData Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t\t *    as this is passed by reference.\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"fnServerParams\": function ( aoData ) {\n\t\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from its state saving\n\t\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoad\": function (oSettings) {\n\t\t *          var o;\n\t\t *          \n\t\t *          // Send an Ajax request to the server to get the data. Note that\n\t\t *          // this is a synchronous request.\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"async\": false,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              o = json;\n\t\t *            }\n\t\t *          } );\n\t\t *          \n\t\t *          return o;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoad\": function ( oSettings ) {\n\t\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\t\tvar oData;\n\t\n\t\t\ttry {\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t\t} catch (e) {\n\t\t\t\toData = null;\n\t\t\t}\n\t\n\t\t\treturn oData;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for \n\t\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that is to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that was loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored - by default it will use a cookie, but you\n\t\t * might want to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSave\": function (oSettings, oData) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": oData,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\t\tthis.oApi._fnCreateCookie( \n\t\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\t\toSettings.iCookieDuration, \n\t\t\t\toSettings.sCookiePrefix, \n\t\t\t\toSettings.fnCookieCallback\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table \n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or \n\t\t * other state properties or modification. Note that for plug-in authors, you should \n\t\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration of the cookie which is used for storing session information. This\n\t\t * value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iCookieDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": [ 57, 100 ],\n\t\t *        \"oSearch\": {\n\t\t *          \"sSearch\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (bLengthChange) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * The scroll gap is the amount of scrolling that is left to go before\n\t\t * DataTables will load the next 'page' of data automatically. You typically\n\t\t * want a gap which is big enough that the scrolling will be smooth for the\n\t\t * user, while not so large that it will load more data than need.\n\t\t *  @type int\n\t\t *  @default 100\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"iScrollLoadGap\": 50\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iScrollLoadGap\": 100,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iTabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information that \n\t\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t\t * can be freely moved or removed as the language requirements change.\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the \n\t\t\t * format of this string should match sInfo.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended \n\t\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t\t * to format large numbers that are used in the table information. By\n\t\t\t * default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoThousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoThousands\": \",\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * By default DataTables will look for the property 'aaData' when obtaining\n\t\t * data from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted object\n\t\t * notation to get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default aaData\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // Get data from { \"data\": [...] }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data\"\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data.inner\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sAjaxDataProp\": \"aaData\",\n\t\n\t\n\t\t/**\n\t\t * You can instruct DataTables to load data from an external source using this\n\t\t * parameter (use aData if you want to pass data in you already have). Simply\n\t\t * provide a url a JSON object can be obtained from. This object must include\n\t\t * the parameter 'aaData' which is the data source for the table.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter can be used to override the default prefix that DataTables\n\t\t * assigns to a cookie when state saving is enabled.\n\t\t *  @type string\n\t\t *  @default SpryMedia_DataTables_\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\t\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * DataTables features two different built-in pagination interaction methods\n\t\t * ('two_button' or 'full_numbers') which present different page controls to\n\t\t * the end user. Further methods can be added using the API (see below).\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sPaginationType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t\t * layout, or you have a large number of columns in the table, you can enable\n\t\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t\t * property can be any CSS unit, or a number (in which case it will be treated\n\t\t * as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"sScrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t\t *        \"sServerMethod\": \"POST\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sServerMethod\": \"GET\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.columns = {\n\t\t/**\n\t\t * Allows a column's sorting to take multiple columns into account when \n\t\t * doing a sort. For example first name / last name columns make sense to \n\t\t * do a multi-column sort over the two columns.\n\t\t *  @type array\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\n\t\t/**\n\t\t * You can control the default sorting direction, and even alter the behaviour\n\t\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t\t * parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          { \"asSorting\": [ \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSearchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSortable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t\t * to use the original data (before rendering) for sorting and filtering \n\t\t * (the default is to used the rendered data that the user can see). This \n\t\t * may be useful for dates etc.\n\t\t * \n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bVisible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\t\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @param {int} iCol The column index for aoColumns\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [3],\n\t\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t\t *            if ( sData == \"1.7\" ) {\n\t\t *              $(nTd).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @param {object} o.mDataProp The data property used for this column\n\t\t *  @param {*}      val The current cell value\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\n\t\n\t\t/**\n\t\t * The column index (starting from 0!) that you wish a sort to be performed\n\t\t * upon when this column is selected for sorting. This can be used for sorting\n\t\t * on hidden columns for example.\n\t\t *  @type int\n\t\t *  @default -1 <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"iDataSort\": 1 },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t\t * in DataTables for this option, but it is strongly recommended that you use\n\t\t * mData in preference to mDataProp.\n\t\t *  @name DataTable.defaults.columns.mDataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any JSON data source property,\n\t\t * including deeply nested objects / properties. mData can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source.</li>\n\t\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t\t *       by default, so you will need to specify the default content you want -\n\t\t *       typically an empty string). This can be useful on generated columns such \n\t\t *       as edit / delete action columns.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row</li>\n\t\t *         <li>{string} The type call data requested - this will be 'set' when\n\t\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t\t *           DataTables expects to get the raw data for the object back</li>\n\t\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is not required when 'set' is the type\n\t\t *       of call, but otherwise the return is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t\t * reflects the flexibility of this property and is consistent with the naming of\n\t\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t\t * it automatically maps the old name to the new if required.\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          { \"mData\": \"platform.inner\" },\n\t\t *          { \"mData\": \"platform.details.0\" },\n\t\t *          { \"mData\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Using mData as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to mData and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t\t * but not altering the underlying data for the table, use this property. mData\n\t\t * can actually do everything this property can and more, but this parameter is\n\t\t * easier to use since there is no 'set' option. Like mData is can be given\n\t\t * in a number of different ways to effect its behaviour, with the addition of \n\t\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t\t * objects):\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source and also array brackets to indicate that the data reader should\n\t\t *       loop over the data source array. When characters are given between the array\n\t\t *       brackets, these characters are used to join the data source array together.\n\t\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t\t *           'type' or 'sort'.</li>\n\t\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use mData</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          {\n\t\t *            \"mData\": \"platform\",\n\t\t *            \"mRender\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *        {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": \"download_link\",\n\t\t *          \"mRender\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"sCellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sClass\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this, and it is not documented on the \n\t\t * general DataTables.net documentation\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *  @dtopt Columns\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"sContentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\",\n\t\t *            \"aTargets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sName\": \"engine\" },\n\t\t *          { \"sName\": \"browser\" },\n\t\t *          { \"sName\": \"platform\" },\n\t\t *          { \"sName\": \"version\" },\n\t\t *          { \"sName\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the sorting which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to sorting. This allows sorting to occur on user editable\n\t\t * elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"sSortDataType\": \"dom-text\" },\n\t\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t\t *          { \"sSortDataType\": \"dom-select\" },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t\t *    original HTML table.</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sTitle\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be sorted.\n\t\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t\t * before sorting)) are currently available. Note that only date formats\n\t\t * understood by Javascript's Date() object will be accepted as type date. For\n\t\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t\t * 'date' or 'html' (by default). Further types can be adding through\n\t\t * plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sType\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sWidth\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a \n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults} but this \n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant \n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\t\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t\t * this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoCss\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t\t * using the Scroller plug-in.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfinite\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\t\t\n\t\t\t/**\n\t\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t\t * when using infinite scrolling.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type int\n\t\t\t */\n\t\t\t\"iLoadGap\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See \n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The \n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\t\n\t\t/**\n\t\t * Search data array for regular expression searching\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDataSearch\": [],\n\t\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a \n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\t\n\t\t/**\n\t\t * Store the applied search for each column - see \n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t *   <li>Index 2 - index of asSorting for this column</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array|null\n\t\t *  @default null\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width \n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of \n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data \n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string \n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\t\n\t\t/**\n\t\t * The cookie duration (for bStateSave) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iCookieDuration\": 0,\n\t\t\n\t\t/**\n\t\t * The cookie name prefix.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sCookiePrefix\": \"\",\n\t\t\n\t\t/**\n\t\t * Callback function for cookie creation.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object \n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\t\n\t\t/**\n\t\t * State that was loaded from the cookie. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case \n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering. \n\t\t * This can be used for working with the XHR information in one of the \n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra \n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t\t * this property to get the end point\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @private\n\t\t */\n\t\t\"_iDisplayEnd\": 10,\n\t\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than \n\t\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplayMaster.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplay.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Set the display end point - aiDisplay index\n\t\t *  @type function\n\t\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._iDisplayEnd;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\t\n\t$.extend( DataTable.ext.oStdClasses, {\n\t\t\"sTable\": \"dataTable\",\n\t\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\t\"sPageJUINext\": \"\",\n\t\t\"sPageJUIPrev\": \"\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"paginate_active\",\n\t\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\t\"sPageFirst\": \"first\",\n\t\t\"sPagePrevious\": \"previous\",\n\t\t\"sPageNext\": \"next\",\n\t\t\"sPageLast\": \"last\",\n\t\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"ui-state-default\",\n\t\t\"sSortDesc\": \"ui-state-default\",\n\t\t\"sSortable\": \"ui-state-default\",\n\t\t\"sSortableAsc\": \"ui-state-default\",\n\t\t\"sSortableDesc\": \"ui-state-default\",\n\t\t\"sSortableNone\": \"ui-state-default\",\n\t\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"ui-state-default\",\n\t\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n\t} );\n\t\n\t/*\n\t * Variable: oPagination\n\t * Purpose:  \n\t * Scope:    jQuery.fn.dataTableExt\n\t */\n\t$.extend( DataTable.ext.oPagination, {\n\t\t/*\n\t\t * Variable: two_button\n\t\t * Purpose:  Standard two button (forward/back) pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"two_button\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t\t:\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t\t$(nPaging).append( sAppend );\n\t\t\t\t\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nPrevious = els[0],\n\t\t\t\t\tnNext = els[1];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\t\n\t\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnUpdate\n\t\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar nNode;\n\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\t\tif ( nNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Previous page */\n\t\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t\t    \n\t\t\t\t\t\t/* Next page */\n\t\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * Variable: iFullNumbersShowPages\n\t\t * Purpose:  Change the number of pages which can be seen\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"iFullNumbersShowPages\": 5,\n\t\t\n\t\t/*\n\t\t * Variable: full_numbers\n\t\t * Purpose:  Full numbers pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"full_numbers\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t$(nPaging).append(\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<span></span>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t\t);\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\tnNext = els[2],\n\t\t\t\t\tnLast = els[3];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t\t * Purpose:  Update the list of page buttons shows\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\t\tvar sList = \"\";\n\t\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar fnBind = function (j) {\n\t\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t/* Pages calculation */\n\t\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = 1;\n\t\t\t\t\tiCurrentPage = 1;\n\t\t\t\t}\n\t\t\t\telse if (iPages < iPageCount)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPageCount;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t\t}\n\t\n\t\t\t\t\n\t\t\t\t/* Build the dynamic list */\n\t\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i];\n\t\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t\t.html( sList )\n\t\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\t\n\t\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\t\tanStatic = [\n\t\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t\t];\n\t\n\t\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t$.extend( DataTable.ext.oSort, {\n\t\t/*\n\t\t * text sorting\n\t\t */\n\t\t\"string-pre\": function ( a )\n\t\t{\n\t\t\tif ( typeof a != 'string' ) {\n\t\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t\t}\n\t\t\treturn a.toLowerCase();\n\t\t},\n\t\n\t\t\"string-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"string-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * html sorting (ignore html tags)\n\t\t */\n\t\t\"html-pre\": function ( a )\n\t\t{\n\t\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t\t},\n\t\t\n\t\t\"html-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"html-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * date sorting\n\t\t */\n\t\t\"date-pre\": function ( a )\n\t\t{\n\t\t\tvar x = Date.parse( a );\n\t\t\t\n\t\t\tif ( isNaN(x) || x===\"\" )\n\t\t\t{\n\t\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t\t}\n\t\t\treturn x;\n\t\t},\n\t\n\t\t\"date-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"date-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * numerical sorting\n\t\t */\n\t\t\"numeric-pre\": function ( a )\n\t\t{\n\t\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t\t},\n\t\n\t\t\"numeric-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"numeric-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t}\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.aTypes, [\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is numeric\n\t\t * Returns:  string:'numeric' or null\n\t\t * Inputs:   mixed:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\t/* Allow zero length strings as a number */\n\t\t\tif ( typeof sData === 'number' )\n\t\t\t{\n\t\t\t\treturn 'numeric';\n\t\t\t}\n\t\t\telse if ( typeof sData !== 'string' )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar sValidFirstChars = \"0123456789-\";\n\t\t\tvar sValidChars = \"0123456789.\";\n\t\t\tvar Char;\n\t\t\tvar bDecimal = false;\n\t\t\t\n\t\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\t\tChar = sData.charAt(0); \n\t\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check all the other characters are valid */\n\t\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t\t{\n\t\t\t\tChar = sData.charAt(i); \n\t\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Only allowed one decimal place... */\n\t\t\t\tif ( Char == \".\" )\n\t\t\t\t{\n\t\t\t\t\tif ( bDecimal )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbDecimal = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'numeric';\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is actually a formatted date\n\t\t * Returns:  string:'date' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tvar iParse = Date.parse(sData);\n\t\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t\t{\n\t\t\t\treturn 'date';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t\t * Returns:  string:'html' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t\t{\n\t\t\t\treturn 'html';\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t] );\n\t\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n"
  },
  {
    "path": "target/mongo/assets/dropzone/css/dropzone.css",
    "content": ".dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 28px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n.dropzone {\n  border: 1px solid rgba(0,0,0,0.03);\n  min-height: 360px;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n  background: rgba(0,0,0,0.03);\n  padding: 23px;\n}\n.dropzone .default.message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n  background-position: 0 0;\n  position: absolute;\n  width: 428px;\n  height: 123px;\n  margin-left: -214px;\n  margin-top: -61.5px;\n  top: 50%;\n  left: 50%;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .default.message {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .default.message span {\n  display: none;\n}\n.dropzone.square .default.message {\n  background-position: 0 -123px;\n  width: 268px;\n  margin-left: -134px;\n  height: 174px;\n  margin-top: -87px;\n}\n.dropzone.drag-hover .message {\n  opacity: 0.15;\n  filter: alpha(opacity=15);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=15)\";\n}\n.dropzone.started .message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  font-size: 14px;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview.image-preview:hover .details img,\n.dropzone-previews .preview.image-preview:hover .details img {\n  display: block;\n  opacity: 0.1;\n  filter: alpha(opacity=10);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=10)\";\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .progress .upload,\n.dropzone-previews .preview.error .progress .upload {\n  background: #ee1e2d;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark,\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .error-mark,\n  .dropzone-previews .preview .error-mark,\n  .dropzone .preview .success-mark,\n  .dropzone-previews .preview .success-mark {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview .error-mark span,\n.dropzone-previews .preview .error-mark span,\n.dropzone .preview .success-mark span,\n.dropzone-previews .preview .success-mark span {\n  display: none;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  background-position: -268px -123px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  background-position: -268px -163px;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  -webkit-animation: loading 0.4s linear infinite;\n  -moz-animation: loading 0.4s linear infinite;\n  -o-animation: loading 0.4s linear infinite;\n  -ms-animation: loading 0.4s linear infinite;\n  animation: loading 0.4s linear infinite;\n  -webkit-transition: width 0.3s ease-in-out;\n  -moz-transition: width 0.3s ease-in-out;\n  -o-transition: width 0.3s ease-in-out;\n  -ms-transition: width 0.3s ease-in-out;\n  transition: width 0.3s ease-in-out;\n  -webkit-border-radius: 2px;\n  border-radius: 2px;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0%;\n  height: 100%;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: repeat-x;\n  background-position: 0px -400px;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .progress .upload,\n  .dropzone-previews .preview .progress .upload {\n    background-image: url(\"../images/spritemap_402x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview.success .progress,\n.dropzone-previews .preview.success .progress {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n@-moz-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-webkit-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-o-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-ms-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n"
  },
  {
    "path": "target/mongo/assets/dropzone/deps/emitter/index.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/dropzone/dropzone.js",
    "content": ";(function(){\n\n\n/**\n * hasOwnProperty.\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Require the given path.\n *\n * @param {String} path\n * @return {Object} exports\n * @api public\n */\n\nfunction require(path, parent, orig) {\n  var resolved = require.resolve(path);\n\n  // lookup failed\n  if (null == resolved) {\n    orig = orig || path;\n    parent = parent || 'root';\n    var err = new Error('Failed to require \"' + orig + '\" from \"' + parent + '\"');\n    err.path = orig;\n    err.parent = parent;\n    err.require = true;\n    throw err;\n  }\n\n  var module = require.modules[resolved];\n\n  // perform real require()\n  // by invoking the module's\n  // registered function\n  if (!module.exports) {\n    module.exports = {};\n    module.client = module.component = true;\n    module.call(this, module.exports, require.relative(resolved), module);\n  }\n\n  return module.exports;\n}\n\n/**\n * Registered modules.\n */\n\nrequire.modules = {};\n\n/**\n * Registered aliases.\n */\n\nrequire.aliases = {};\n\n/**\n * Resolve `path`.\n *\n * Lookup:\n *\n *   - PATH/index.js\n *   - PATH.js\n *   - PATH\n *\n * @param {String} path\n * @return {String} path or null\n * @api private\n */\n\nrequire.resolve = function(path) {\n  var index = path + '/index.js';\n\n  var paths = [\n    path,\n    path + '.js',\n    path + '.json',\n    path + '/index.js',\n    path + '/index.json'\n  ];\n\n  for (var i = 0; i < paths.length; i++) {\n    var path = paths[i];\n    if (has.call(require.modules, path)) return path;\n  }\n\n  if (has.call(require.aliases, index)) {\n    return require.aliases[index];\n  }\n};\n\n/**\n * Normalize `path` relative to the current path.\n *\n * @param {String} curr\n * @param {String} path\n * @return {String}\n * @api private\n */\n\nrequire.normalize = function(curr, path) {\n  var segs = [];\n\n  if ('.' != path.charAt(0)) return path;\n\n  curr = curr.split('/');\n  path = path.split('/');\n\n  for (var i = 0; i < path.length; ++i) {\n    if ('..' == path[i]) {\n      curr.pop();\n    } else if ('.' != path[i] && '' != path[i]) {\n      segs.push(path[i]);\n    }\n  }\n\n  return curr.concat(segs).join('/');\n};\n\n/**\n * Register module at `path` with callback `definition`.\n *\n * @param {String} path\n * @param {Function} definition\n * @api private\n */\n\nrequire.register = function(path, definition) {\n  require.modules[path] = definition;\n};\n\n/**\n * Alias a module definition.\n *\n * @param {String} from\n * @param {String} to\n * @api private\n */\n\nrequire.alias = function(from, to) {\n  if (!has.call(require.modules, from)) {\n    throw new Error('Failed to alias \"' + from + '\", it does not exist');\n  }\n  require.aliases[to] = from;\n};\n\n/**\n * Return a require function relative to the `parent` path.\n *\n * @param {String} parent\n * @return {Function}\n * @api private\n */\n\nrequire.relative = function(parent) {\n  var p = require.normalize(parent, '..');\n\n  /**\n   * lastIndexOf helper.\n   */\n\n  function lastIndexOf(arr, obj) {\n    var i = arr.length;\n    while (i--) {\n      if (arr[i] === obj) return i;\n    }\n    return -1;\n  }\n\n  /**\n   * The relative require() itself.\n   */\n\n  function localRequire(path) {\n    var resolved = localRequire.resolve(path);\n    return require(resolved, parent, path);\n  }\n\n  /**\n   * Resolve relative to the parent.\n   */\n\n  localRequire.resolve = function(path) {\n    // resolve deps by returning\n    // the dep in the nearest \"deps\"\n    // directory\n    if ('.' != path.charAt(0)) {\n      var segs = parent.split('/');\n      var i = lastIndexOf(segs, 'deps') + 1;\n      if (!i) i = 0;\n      path = segs.slice(0, i + 1).join('/') + '/deps/' + path;\n      return path;\n    }\n    return require.normalize(p, path);\n  };\n\n  /**\n   * Check if module is defined at `path`.\n   */\n\n  localRequire.exists = function(path) {\n    return has.call(require.modules, localRequire.resolve(path));\n  };\n\n  return localRequire;\n};\nrequire.register(\"component-emitter/index.js\", function(exports, require, module){\n\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[event] = this._callbacks[event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  var self = this;\n  this._callbacks = this._callbacks || {};\n\n  function on() {\n    self.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  fn._off = on;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  var callbacks = this._callbacks[event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks[event];\n    return this;\n  }\n\n  // remove specific handler\n  var i = callbacks.indexOf(fn._off || fn);\n  if (~i) callbacks.splice(i, 1);\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks[event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\n});\nrequire.register(\"dropzone/index.js\", function(exports, require, module){\n\n\n/**\n * Exposing dropzone\n */\nmodule.exports = require(\"lib/dropzone.js\");\n\n});\nrequire.register(\"dropzone/lib/dropzone.js\", function(exports, require, module){\n// Generated by CoffeeScript 1.4.0\n\n/*\n#\n# More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n# \n# Copyright (c) 2012, Matias Meno  \n# \n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n# \n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n# \n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n*/\n\n\n(function() {\n  var Dropzone, Em, camelize, o, without,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    __slice = [].slice;\n\n  o = typeof jQuery !== \"undefined\" && jQuery !== null ? jQuery : require(\"jquery\");\n\n  Em = typeof Emitter !== \"undefined\" && Emitter !== null ? Emitter : require(\"emitter\");\n\n  Dropzone = (function(_super) {\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.version = \"1.3.10\";\n\n    /*\n      This is a list of all available events you can register on a dropzone object.\n    \n      You can register an event handler like this:\n    \n          dropzone.on(\"dragEnter\", function() { });\n    */\n\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"selectedfiles\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"processingfile\", \"uploadprogress\", \"sending\", \"success\", \"complete\", \"reset\"];\n\n    Dropzone.prototype.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      parallelUploads: 2,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 2,\n      thumbnailWidth: 100,\n      thumbnailHeight: 100,\n      params: {},\n      clickable: true,\n      enqueueForUpload: true,\n      previewsContainer: null,\n      accept: function(file, done) {\n        return done();\n      },\n      fallback: function() {\n        this.element.addClass(\"browser-not-supported\");\n        this.element.find(\".message\").removeClass(\"default\");\n        this.element.find(\".message span\").html(\"Your browser does not support drag'n'drop file uploads.\");\n        this.element.append(\"Please use the fallback form below to upload your files like in the olden days.</p>\");\n        return this.element.append(this.getFallbackForm());\n      },\n      /*\n          Those functions register themselves to the events on init and handle all\n          the user interface specific stuff. Overwriting them won't break the upload\n          but can break the way it's displayed.\n          You can overwrite them if you don't like the default behavior. If you just\n          want to add an additional event handler, register it on the dropzone object\n          and don't overwrite those options.\n      */\n\n      drop: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      dragstart: o.noop,\n      dragend: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.addClass(\"drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.addClass(\"drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.removeClass(\"drag-hover\");\n      },\n      selectedfiles: function(files) {\n        if (this.element.is(this.previewsContainer)) {\n          return this.element.addClass(\"started\");\n        }\n      },\n      reset: function() {\n        return this.element.removeClass(\"started\");\n      },\n      addedfile: function(file) {\n        file.previewTemplate = o(this.options.previewTemplate);\n        this.previewsContainer.append(file.previewTemplate);\n        file.previewTemplate.find(\".filename span\").text(file.name);\n        return file.previewTemplate.find(\".details\").append(o(\"<div class=\\\"size\\\">\" + (this.filesize(file.size)) + \"</div>\"));\n      },\n      removedfile: function(file) {\n        return file.previewTemplate.remove();\n      },\n      thumbnail: function(file, dataUrl) {\n        file.previewTemplate.removeClass(\"file-preview\").addClass(\"image-preview\");\n        return file.previewTemplate.find(\".details\").append(o(\"<img alt=\\\"\" + file.name + \"\\\" src=\\\"\" + dataUrl + \"\\\"/>\"));\n      },\n      error: function(file, message) {\n        file.previewTemplate.addClass(\"error\");\n        return file.previewTemplate.find(\".error-message span\").text(message);\n      },\n      processingfile: function(file) {\n        return file.previewTemplate.addClass(\"processing\");\n      },\n      uploadprogress: function(file, progress) {\n        return file.previewTemplate.find(\".progress .upload\").css({\n          width: \"\" + progress + \"%\"\n        });\n      },\n      sending: o.noop,\n      success: function(file) {\n        return file.previewTemplate.addClass(\"success\");\n      },\n      complete: o.noop,\n      previewTemplate: \"<div class=\\\"preview file-preview\\\">\\n  <div class=\\\"details\\\">\\n   <div class=\\\"filename\\\"><span></span></div>\\n  </div>\\n  <div class=\\\"progress\\\"><span class=\\\"upload\\\"></span></div>\\n  <div class=\\\"success-mark\\\"><span>✔</span></div>\\n  <div class=\\\"error-mark\\\"><span>✘</span></div>\\n  <div class=\\\"error-message\\\"><span></span></div>\\n</div>\"\n    };\n\n    function Dropzone(element, options) {\n      var elementId, elementOptions, extend, _ref;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.element = o(element);\n      if (this.element.length !== 1) {\n        throw new Error(\"You can only instantiate dropzone on a single element.\");\n      }\n      if (this.element.data(\"dropzone\")) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      this.element.data(\"dropzone\", this);\n      elementId = this.element.attr(\"id\");\n      elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {};\n      this.elementTagName = this.element.get(0).tagName;\n      extend = function() {\n        var key, object, objects, target, val, _i, _len;\n        target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n        for (_i = 0, _len = objects.length; _i < _len; _i++) {\n          object = objects[_i];\n          for (key in object) {\n            val = object[key];\n            target[key] = val;\n          }\n        }\n        return target;\n      };\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.url == null) {\n        this.options.url = this.element.attr(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      this.previewsContainer = this.options.previewsContainer ? o(this.options.previewsContainer) : this.element;\n      this.init();\n    }\n\n    Dropzone.prototype.init = function() {\n      var capableBrowser, regex, _i, _len, _ref, _ref1,\n        _this = this;\n      if (this.elementTagName === \"form\" && this.element.attr(\"enctype\") !== \"multipart/form-data\") {\n        this.element.attr(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.hasClass(\"dropzone\") && this.element.find(\".message\").length === 0) {\n        this.element.append(o(\"<div class=\\\"default message\\\"><span>Drop files here to upload</span></div>\"));\n      }\n      capableBrowser = true;\n      if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData) {\n        _ref = this.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      } else {\n        capableBrowser = false;\n      }\n      if (!capableBrowser) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.clickable) {\n        this.element.addClass(\"clickable\");\n        this.hiddenFileInput = o(\"<input type=\\\"file\\\" multiple />\");\n        this.element.click(function(evt) {\n          var target;\n          target = o(evt.target);\n          if (target.is(_this.element) || target.is(_this.element.find(\".message\"))) {\n            return _this.hiddenFileInput.click();\n          }\n        });\n        this.hiddenFileInput.change(function() {\n          var files;\n          files = _this.hiddenFileInput.get(0).files;\n          _this.emit(\"selectedfiles\", files);\n          if (files.length) {\n            return _this.handleFiles(files);\n          }\n        });\n      }\n      this.files = [];\n      this.filesQueue = [];\n      this.filesProcessing = [];\n      this.URL = (_ref1 = window.URL) != null ? _ref1 : window.webkitURL;\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var fields;\n      fields = o(\"<div class=\\\"fallback-elements\\\"><input type=\\\"file\\\" name=\\\"\" + this.options.paramName + \"\\\" multiple=\\\"multiple\\\" /><button type=\\\"submit\\\">Upload!</button></div>\");\n      if (this.elementTagName !== \"FORM\") {\n        fields = o(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"post\\\"></form>\").append(fields);\n      } else {\n        if (!this.element.attr(\"enctype\")) {\n          this.element.attr(\"enctype\", \"multipart/form-data\");\n        }\n        if (!this.element.attr(\"method\")) {\n          this.element.attr(\"method\", \"post\");\n        }\n      }\n      return fields;\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var eventName, noPropagation, _i, _len, _ref,\n        _this = this;\n      _ref = this.events;\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        eventName = _ref[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      noPropagation = function(e) {\n        e.stopPropagation();\n        return e.preventDefault();\n      };\n      this.element.on(\"dragstart.dropzone\", function(e) {\n        return _this.emit(\"dragstart\", e);\n      });\n      this.element.on(\"dragenter.dropzone\", function(e) {\n        noPropagation(e);\n        return _this.emit(\"dragenter\", e);\n      });\n      this.element.on(\"dragover.dropzone\", function(e) {\n        noPropagation(e);\n        return _this.emit(\"dragover\", e);\n      });\n      this.element.on(\"dragleave.dropzone\", function(e) {\n        return _this.emit(\"dragleave\", e);\n      });\n      this.element.on(\"drop.dropzone\", function(e) {\n        noPropagation(e);\n        _this.drop(e);\n        return _this.emit(\"drop\", e);\n      });\n      return this.element.on(\"dragend.dropzone\", function(e) {\n        return _this.emit(\"dragend\", e);\n      });\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      return this.element.off(\".dropzone\");\n    };\n\n    Dropzone.prototype.disable = function() {\n      this.removeEventListeners();\n      this.files = [];\n      this.filesProcessing = [];\n      return this.filesQueue = [];\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var string;\n      if (size >= 100000000000) {\n        size = size / 100000000000;\n        string = \"TB\";\n      } else if (size >= 100000000) {\n        size = size / 100000000;\n        string = \"GB\";\n      } else if (size >= 100000) {\n        size = size / 100000;\n        string = \"MB\";\n      } else if (size >= 100) {\n        size = size / 100;\n        string = \"KB\";\n      } else {\n        size = size * 10;\n        string = \"b\";\n      }\n      return \"<strong>\" + (Math.round(size) / 10) + \"</strong> \" + string;\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files;\n      if (!e.originalEvent.dataTransfer) {\n        return;\n      }\n      files = e.originalEvent.dataTransfer.files;\n      this.emit(\"selectedfiles\", files);\n      if (files.length) {\n        return this.handleFiles(files);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(\"File is too big (\" + (Math.round(file.size / 1024 / 10.24) / 100) + \"MB). Max filesize: \" + this.options.maxFilesize + \"MB\");\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      var _this = this;\n      this.files.push(file);\n      this.emit(\"addedfile\", file);\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this.createThumbnail(file);\n      }\n      return this.accept(file, function(error) {\n        if (error) {\n          return _this.errorProcessing(file, error);\n        } else {\n          if (_this.options.enqueueForUpload) {\n            _this.filesQueue.push(file);\n            return _this.processQueue();\n          }\n        }\n      });\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.processing) {\n        throw new Error(\"Can't remove file currently processing\");\n      }\n      this.files = without(this.files, file);\n      this.filesQueue = without(this.filesQueue, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.createThumbnail = function(file) {\n      var fileReader,\n        _this = this;\n      fileReader = new FileReader;\n      fileReader.onload = function() {\n        var img;\n        img = new Image;\n        img.onload = function() {\n          var canvas, ctx, srcHeight, srcRatio, srcWidth, srcX, srcY, thumbnail, trgHeight, trgRatio, trgWidth, trgX, trgY;\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          srcX = 0;\n          srcY = 0;\n          srcWidth = img.width;\n          srcHeight = img.height;\n          canvas.width = _this.options.thumbnailWidth;\n          canvas.height = _this.options.thumbnailHeight;\n          trgX = 0;\n          trgY = 0;\n          trgWidth = canvas.width;\n          trgHeight = canvas.height;\n          srcRatio = img.width / img.height;\n          trgRatio = canvas.width / canvas.height;\n          if (img.height < canvas.height || img.width < canvas.width) {\n            trgHeight = srcHeight;\n            trgWidth = srcWidth;\n          } else {\n            if (srcRatio > trgRatio) {\n              srcHeight = img.height;\n              srcWidth = srcHeight * trgRatio;\n            } else {\n              srcWidth = img.width;\n              srcHeight = srcWidth / trgRatio;\n            }\n          }\n          srcX = (img.width - srcWidth) / 2;\n          srcY = (img.height - srcHeight) / 2;\n          trgY = (canvas.height - trgHeight) / 2;\n          trgX = (canvas.width - trgWidth) / 2;\n          ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, trgX, trgY, trgWidth, trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          return _this.emit(\"thumbnail\", file, thumbnail);\n        };\n        return img.src = fileReader.result;\n      };\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.filesProcessing.length;\n      i = processingLength;\n      while (i < parallelUploads) {\n        if (!this.filesQueue.length) {\n          return;\n        }\n        this.processFile(this.filesQueue.shift());\n        i++;\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      this.filesProcessing.push(file);\n      file.processing = true;\n      this.emit(\"processingfile\", file);\n      return this.uploadFile(file);\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      var formData, handleError, input, inputElement, inputName, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2,\n        _this = this;\n      xhr = new XMLHttpRequest();\n      xhr.open(\"POST\", this.options.url, true);\n      handleError = function() {\n        return _this.errorProcessing(file, xhr.responseText || (\"Server responded with \" + xhr.status + \" code.\"));\n      };\n      xhr.onload = function(e) {\n        var response;\n        if (xhr.status !== 200) {\n          return handleError();\n        } else {\n          _this.emit(\"uploadprogress\", file, 100);\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            response = JSON.parse(response);\n          }\n          return _this.finished(file, response, e);\n        }\n      };\n      xhr.onerror = function() {\n        return handleError();\n      };\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = function(e) {\n        return _this.emit(\"uploadprogress\", file, Math.max(0, Math.min(100, (e.loaded / e.total) * 100)));\n      };\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n      xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n      xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      xhr.setRequestHeader(\"X-File-Name\", file.name);\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      if (this.elementTagName = \"FORM\") {\n        _ref2 = this.element.find(\"input, textarea, select, button\");\n        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\n          inputElement = _ref2[_i];\n          input = o(inputElement);\n          inputName = input.attr(\"name\");\n          if (!input.attr(\"type\") || input.attr(\"type\").toLowerCase() !== \"checkbox\" || inputElement.checked) {\n            formData.append(input.attr(\"name\"), input.val());\n          }\n        }\n      }\n      this.emit(\"sending\", file, xhr, formData);\n      formData.append(this.options.paramName, file);\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype.finished = function(file, responseText, e) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"finished\", file, responseText, e);\n      return this.emit(\"complete\", file);\n    };\n\n    Dropzone.prototype.errorProcessing = function(file, message) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"error\", file, message);\n      return this.emit(\"complete\", file);\n    };\n\n    return Dropzone;\n\n  })(Em);\n\n  Dropzone.options = {};\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match[1].toUpperCase();\n    });\n  };\n\n  o.fn.dropzone = function(options) {\n    return this.each(function() {\n      return new Dropzone(this, options);\n    });\n  };\n\n  o(function() {\n    return o(\".dropzone\").dropzone();\n  });\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n}).call(this);\n\n});\nrequire.alias(\"component-emitter/index.js\", \"dropzone/deps/emitter/index.js\");\n\nif (typeof exports == \"object\") {\n  module.exports = require(\"dropzone\");\n} else if (typeof define == \"function\" && define.amd) {\n  define(require(\"dropzone\"));\n} else {\n  window[\"Dropzone\"] = require(\"dropzone\");\n}})();"
  },
  {
    "path": "target/mongo/assets/dropzone/index.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/dropzone/lib/dropzone.js",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(http://www.js-css.cn/images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/fancybox/source/jquery.fancybox.css",
    "content": "/*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */\n.fancybox-wrap,\n.fancybox-skin,\n.fancybox-outer,\n.fancybox-inner,\n.fancybox-image,\n.fancybox-wrap iframe,\n.fancybox-wrap object,\n.fancybox-nav,\n.fancybox-nav span,\n.fancybox-tmp\n{\n\tpadding: 0;\n\tmargin: 0;\n\tborder: 0;\n\toutline: none;\n\tvertical-align: top;\n}\n\n.fancybox-wrap {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 8020;\n}\n\n.fancybox-skin {\n\tposition: relative;\n\tbackground: #f9f9f9;\n\tcolor: #444;\n\ttext-shadow: none;\n\t-webkit-border-radius: 4px;\n\t   -moz-border-radius: 4px;\n\t        border-radius: 4px;\n}\n\n.fancybox-opened {\n\tz-index: 8030;\n}\n\n.fancybox-opened .fancybox-skin {\n\t-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n\t   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n\t        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);\n}\n\n.fancybox-outer, .fancybox-inner {\n\tposition: relative;\n}\n\n.fancybox-inner {\n\toverflow: hidden;\n}\n\n.fancybox-type-iframe .fancybox-inner {\n\t-webkit-overflow-scrolling: touch;\n}\n\n.fancybox-error {\n\tcolor: #444;\n\tfont: 14px/20px \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n\tmargin: 0;\n\tpadding: 15px;\n\twhite-space: nowrap;\n}\n\n.fancybox-image, .fancybox-iframe {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.fancybox-image {\n\tmax-width: 100%;\n\tmax-height: 100%;\n}\n\n#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {\n\tbackground-image: url('fancybox_sprite.png');\n}\n\n#fancybox-loading {\n\tposition: fixed;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin-top: -22px;\n\tmargin-left: -22px;\n\tbackground-position: 0 -108px;\n\topacity: 0.8;\n\tcursor: pointer;\n\tz-index: 8060;\n}\n\n#fancybox-loading div {\n\twidth: 44px;\n\theight: 44px;\n\tbackground: url('fancybox_loading.gif') center center no-repeat;\n}\n\n.fancybox-close {\n\tposition: absolute;\n\ttop: -18px;\n\tright: -18px;\n\twidth: 36px;\n\theight: 36px;\n\tcursor: pointer;\n\tz-index: 8040;\n}\n\n.fancybox-nav {\n\tposition: absolute;\n\ttop: 0;\n\twidth: 40%;\n\theight: 100%;\n\tcursor: pointer;\n\ttext-decoration: none;\n\tbackground: transparent url('blank.gif'); /* helps IE */\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\tz-index: 8040;\n}\n\n.fancybox-prev {\n\tleft: 0;\n}\n\n.fancybox-next {\n\tright: 0;\n}\n\n.fancybox-nav span {\n\tposition: absolute;\n\ttop: 50%;\n\twidth: 36px;\n\theight: 34px;\n\tmargin-top: -18px;\n\tcursor: pointer;\n\tz-index: 8040;\n\tvisibility: hidden;\n}\n\n.fancybox-prev span {\n\tleft: 10px;\n\tbackground-position: 0 -36px;\n}\n\n.fancybox-next span {\n\tright: 10px;\n\tbackground-position: 0 -72px;\n}\n\n.fancybox-nav:hover span {\n\tvisibility: visible;\n}\n\n.fancybox-tmp {\n\tposition: absolute;\n\ttop: -99999px;\n\tleft: -99999px;\n\tvisibility: hidden;\n\tmax-width: 99999px;\n\tmax-height: 99999px;\n\toverflow: visible !important;\n}\n\n/* Overlay helper */\n\n.fancybox-lock {\n\toverflow: hidden;\n}\n\n.fancybox-overlay {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\toverflow: hidden;\n\tdisplay: none;\n\tz-index: 8010;\n\tbackground: url('fancybox_overlay.png');\n}\n\n.fancybox-overlay-fixed {\n\tposition: fixed;\n\tbottom: 0;\n\tright: 0;\n}\n\n.fancybox-lock .fancybox-overlay {\n\toverflow: auto;\n\toverflow-y: scroll;\n}\n\n/* Title helper */\n\n.fancybox-title {\n\tvisibility: hidden;\n\tfont: normal 13px/20px \"Helvetica Neue\",Helvetica,Arial,sans-serif;\n\tposition: relative;\n\ttext-shadow: none;\n\tz-index: 8050;\n}\n\n.fancybox-opened .fancybox-title {\n\tvisibility: visible;\n}\n\n.fancybox-title-float-wrap {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 50%;\n\tmargin-bottom: -35px;\n\tz-index: 8050;\n\ttext-align: center;\n}\n\n.fancybox-title-float-wrap .child {\n\tdisplay: inline-block;\n\tmargin-right: -100%;\n\tpadding: 2px 20px;\n\tbackground: transparent; /* Fallback for web browsers that doesn't support RGBa */\n\tbackground: rgba(0, 0, 0, 0.8);\n\t-webkit-border-radius: 15px;\n\t   -moz-border-radius: 15px;\n\t        border-radius: 15px;\n\ttext-shadow: 0 1px 2px #222;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tline-height: 24px;\n\twhite-space: nowrap;\n}\n\n.fancybox-title-outside-wrap {\n\tposition: relative;\n\tmargin-top: 10px;\n\tcolor: #fff;\n}\n\n.fancybox-title-inside-wrap {\n\tpadding-top: 10px;\n}\n\n.fancybox-title-over-wrap {\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\tcolor: #fff;\n\tpadding: 10px;\n\tbackground: #000;\n\tbackground: rgba(0, 0, 0, .8);\n}"
  },
  {
    "path": "target/mongo/assets/fancybox/source/jquery.fancybox.pack.js",
    "content": "/*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */\n(function(B,x,f,q){var r=f(B),m=f(x),b=f.fancybox=function(){b.open.apply(this,arguments)},u=null,n=x.createTouch!==q,s=function(a){return a&&a.hasOwnProperty&&a instanceof f},p=function(a){return a&&\"string\"===f.type(a)},E=function(a){return p(a)&&0<a.indexOf(\"%\")},k=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},v=function(a,b){return k(a,b)+\"px\"};f.extend(b,{version:\"2.1.3\",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,\nmaxWidth:9999,maxHeight:9999,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!n,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:\"auto\",wrapCSS:\"\",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:\"html\",headers:{\"X-fancyBox\":!0}},iframe:{scrolling:\"auto\",preload:!0},swf:{wmode:\"transparent\",allowfullscreen:\"true\",allowscriptaccess:\"always\"},keys:{next:{13:\"left\",34:\"up\",39:\"left\",40:\"up\"},\nprev:{8:\"right\",33:\"down\",37:\"right\",38:\"down\"},close:[27],play:[32],toggle:[70]},direction:{next:\"left\",prev:\"right\"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class=\"fancybox-wrap\" tabIndex=\"-1\"><div class=\"fancybox-skin\"><div class=\"fancybox-outer\"><div class=\"fancybox-inner\"></div></div></div></div>',image:'<img class=\"fancybox-image\" src=\"{href}\" alt=\"\" />',iframe:'<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+\n(f.browser.msie?' allowtransparency=\"true\"':\"\")+\"></iframe>\",error:'<p class=\"fancybox-error\">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title=\"Close\" class=\"fancybox-item fancybox-close\" href=\"javascript:;\"></a>',next:'<a title=\"Next\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"><span></span></a>',prev:'<a title=\"Previous\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"><span></span></a>'},openEffect:\"fade\",openSpeed:250,openEasing:\"swing\",\nopenOpacity:!0,openMethod:\"zoomIn\",closeEffect:\"fade\",closeSpeed:250,closeEasing:\"swing\",closeOpacity:!0,closeMethod:\"zoomOut\",nextEffect:\"elastic\",nextSpeed:250,nextEasing:\"swing\",nextMethod:\"changeIn\",prevEffect:\"elastic\",prevSpeed:250,prevEasing:\"swing\",prevMethod:\"changeOut\",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,\nisActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=s(a)?f(a).get():[a]),f.each(a,function(e,c){var j={},g,h,i,l,k;\"object\"===f.type(c)&&(c.nodeType&&(c=f(c)),s(c)?(j={href:c.data(\"fancybox-href\")||c.attr(\"href\"),title:c.data(\"fancybox-title\")||c.attr(\"title\"),isDom:!0,element:c},f.metadata&&f.extend(!0,\nj,c.metadata())):j=c);g=d.href||j.href||(p(c)?c:null);h=d.title!==q?d.title:j.title||\"\";l=(i=d.content||j.content)?\"html\":d.type||j.type;!l&&j.isDom&&(l=c.data(\"fancybox-type\"),l||(l=(l=c.prop(\"class\").match(/fancybox\\.(\\w+)/))?l[1]:null));p(g)&&(l||(b.isImage(g)?l=\"image\":b.isSWF(g)?l=\"swf\":\"#\"===g.charAt(0)?l=\"inline\":p(c)&&(l=\"html\",i=c)),\"ajax\"===l&&(k=g.split(/\\s+/,2),g=k.shift(),k=k.shift()));i||(\"inline\"===l?g?i=f(p(g)?g.replace(/.*(?=#[^\\s]+$)/,\"\"):g):j.isDom&&(i=c):\"html\"===l?i=g:!l&&(!g&&\nj.isDom)&&(l=\"inline\",i=c));f.extend(j,{href:g,type:l,content:i,title:h,selector:k});a[e]=j}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==q&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger(\"onCancel\")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger(\"onReset\").remove(),b.coming=null,b.current||\nb._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger(\"beforeClose\")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(\".fancybox-wrap\").stop(!0).trigger(\"onReset\").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(\".fancybox-item, .fancybox-nav\").remove(),b.wrap.stop(!0,!0).removeClass(\"fancybox-opened\"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=\nsetTimeout(b.next,b.current.playSpeed))},c=function(){d();f(\"body\").unbind(\".player\");b.player.isActive=!1;b.trigger(\"onPlayEnd\")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,f(\"body\").bind({\"afterShow.player onUpdate.player\":e,\"onCancel.player beforeClose.player\":c,\"beforeLoad.player\":d}),e(),b.trigger(\"onPlayStart\")}else c()},next:function(a){var d=b.current;d&&(p(a)||(a=d.direction.next),b.jumpto(d.index+1,a,\"next\"))},\nprev:function(a){var d=b.current;d&&(p(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,\"prev\"))},jumpto:function(a,d,e){var c=b.current;c&&(a=k(a),b.direction=d||c.direction[a>=c.index?\"next\":\"prev\"],b.router=e||\"jumpto\",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==q&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,j;c&&(j=b._getPosition(d),a&&\"scroll\"===a.type?(delete j.position,c.stop(!0,!0).animate(j,200)):(c.css(j),e.pos=f.extend({},\ne.dim,j)))},update:function(a){var d=a&&a.type,e=!d||\"orientationchange\"===d;e&&(clearTimeout(u),u=null);b.isOpen&&!u&&(u=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass(\"fancybox-tmp\"),(e||\"load\"===d||\"resize\"===d&&c.autoResize)&&b._setDimension(),\"scroll\"===d&&c.canShrink||b.reposition(a),b.trigger(\"onUpdate\"),u=null)},e&&!n?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView=\"boolean\"===f.type(a)?a:!b.current.fitToView,n&&(b.wrap.removeAttr(\"style\").addClass(\"fancybox-tmp\"),\nb.trigger(\"onUpdate\")),b.update())},hideLoading:function(){m.unbind(\".loading\");f(\"#fancybox-loading\").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id=\"fancybox-loading\"><div></div></div>').click(b.cancel).appendTo(\"body\");m.bind(\"keydown.loading\",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:\"absolute\",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||\n!1,d={x:r.scrollLeft(),y:r.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=n&&B.innerWidth?B.innerWidth:r.width(),d.h=n&&B.innerHeight?B.innerHeight:r.height());return d},unbindEvents:function(){b.wrap&&s(b.wrap)&&b.wrap.unbind(\".fb\");m.unbind(\".fb\");r.unbind(\".fb\")},bindEvents:function(){var a=b.current,d;a&&(r.bind(\"orientationchange.fb\"+(n?\"\":\" resize.fb\")+(a.autoCenter&&!a.locked?\" scroll.fb\":\"\"),b.update),(d=a.keys)&&m.bind(\"keydown.fb\",function(e){var c=e.which||e.keyCode,j=\ne.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!j||!j.type&&!f(j).is(\"[contenteditable]\")))&&f.each(d,function(d,j){if(1<a.group.length&&j[c]!==q)return b[d](j[c]),e.preventDefault(),!1;if(-1<f.inArray(c,j))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind(\"mousewheel.fb\",function(d,c,j,g){for(var h=f(d.target||null),i=!1;h.length&&!i&&!h.is(\".fancybox-skin\")&&!h.is(\".fancybox-wrap\");)i=h[0]&&!(h[0].style.overflow&&\n\"hidden\"===h[0].style.overflow)&&(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!i&&1<b.group.length&&!a.canShrink){if(0<g||0<j)b.prev(0<g?\"down\":\"left\");else if(0>g||0>j)b.next(0>g?\"up\":\"right\");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,\ne){e&&(b.helpers[d]&&f.isFunction(b.helpers[d][a]))&&(e=f.extend(!0,{},b.helpers[d].defaults,e),b.helpers[d][a](e,c))});f.event.trigger(a+\".fb\")}},isImage:function(a){return p(a)&&a.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp)((\\?|#).*)?$)/i)},isSWF:function(a){return p(a)&&a.match(/\\.(swf)((\\?|#).*)?$/i)},_start:function(a){var d={},e,c,a=k(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;\"number\"===f.type(e)&&(d.margin=[e,e,e,e]);\"number\"===f.type(c)&&\n(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);\"auto\"===d.width&&(d.autoWidth=!0);\"auto\"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger(\"beforeLoad\"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&\"jumpto\"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=\n!0;if(\"image\"===c||\"swf\"===c)d.autoHeight=d.autoWidth=!1,d.scrolling=\"visible\";\"image\"===c&&(d.aspectRatio=!0);\"iframe\"===c&&n&&(d.scrolling=\"scroll\");d.wrap=f(d.tpl.wrap).addClass(\"fancybox-\"+(n?\"mobile\":\"desktop\")+\" fancybox-type-\"+c+\" fancybox-tmp \"+d.wrapCSS).appendTo(d.parent||\"body\");f.extend(d,{skin:f(\".fancybox-skin\",d.wrap),outer:f(\".fancybox-outer\",d.wrap),inner:f(\".fancybox-inner\",d.wrap)});f.each([\"Top\",\"Right\",\"Bottom\",\"Left\"],function(a,b){d.skin.css(\"padding\"+b,v(d.padding[a]))});b.trigger(\"onReady\");\nif(\"inline\"===c||\"html\"===c){if(!d.content||!d.content.length)return b._error(\"content\")}else if(!e)return b._error(\"href\");\"image\"===c?b._loadImage():\"ajax\"===c?b._loadAjax():\"iframe\"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:\"html\",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:\"no\",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=\nthis.width;b.coming.height=this.height;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error(\"image\")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&\"abort\"!==e?b._error(\"ajax\",a):b.hideLoading()},success:function(d,e){\"success\"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\\{rnd\\}/g,\n(new Date).getTime())).attr(\"scrolling\",n?\"auto\":a.iframe.scrolling).attr(\"src\",a.href);f(a.wrap).bind(\"onReset\",function(){try{f(this).find(\"iframe\").hide().attr(\"src\",\"//about:blank\").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one(\"load\",function(){f(this).data(\"ready\",1);n||f(this).bind(\"load.fb\",b.update);f(this).parents(\".fancybox-wrap\").width(\"100%\").removeClass(\"fancybox-tmp\").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=\nb.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],\"image\"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,j,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger(\"afterLoad\",a,d))a.wrap.stop(!0).trigger(\"onReset\").remove(),b.coming=null;else{d&&(b.trigger(\"beforeChange\",d),d.wrap.stop(!0).removeClass(\"fancybox-opened\").find(\".fancybox-item, .fancybox-nav\").remove());b.unbindEvents();\ne=a.content;c=a.type;j=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case \"inline\":case \"ajax\":case \"html\":a.selector?e=f(\"<div>\").html(e).find(a.selector):s(e)&&(e.data(\"fancybox-placeholder\")||e.data(\"fancybox-placeholder\",f('<div class=\"fancybox-placeholder\"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind(\"onReset\",function(){f(this).find(e).length&&e.hide().replaceAll(e.data(\"fancybox-placeholder\")).data(\"fancybox-placeholder\",\n!1)}));break;case \"image\":e=a.tpl.image.replace(\"{href}\",g);break;case \"swf\":e='<object id=\"fancybox-swf\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"100%\" height=\"100%\"><param name=\"movie\" value=\"'+g+'\"></param>',h=\"\",f.each(a.swf,function(a,b){e+='<param name=\"'+a+'\" value=\"'+b+'\"></param>';h+=\" \"+a+'=\"'+b+'\"'}),e+='<embed src=\"'+g+'\" type=\"application/x-shockwave-flash\" width=\"100%\" height=\"100%\"'+h+\"></embed></object>\"}(!s(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger(\"beforeShow\");\na.inner.css(\"overflow\",\"yes\"===j?\"scroll\":\"no\"===j?\"hidden\":j);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(\".fancybox-wrap\").not(a.wrap).stop(!0).trigger(\"onReset\").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,j=b.skin,g=b.inner,h=b.current,c=h.width,i=h.height,l=h.minWidth,t=h.minHeight,m=h.maxWidth,\nn=h.maxHeight,r=h.scrolling,p=h.scrollOutside?h.scrollbarWidth:0,w=h.margin,y=k(w[1]+w[3]),q=k(w[0]+w[2]),x,z,s,C,A,F,B,D,u;e.add(j).add(g).width(\"auto\").height(\"auto\").removeClass(\"fancybox-tmp\");w=k(j.outerWidth(!0)-j.width());x=k(j.outerHeight(!0)-j.height());z=y+w;s=q+x;C=E(c)?(a.w-z)*k(c)/100:c;A=E(i)?(a.h-s)*k(i)/100:i;if(\"iframe\"===h.type){if(u=h.content,h.autoHeight&&1===u.data(\"ready\"))try{u[0].contentWindow.document.location&&(g.width(C).height(9999),F=u.contents().find(\"body\"),p&&F.css(\"overflow-x\",\n\"hidden\"),A=F.height())}catch(G){}}else if(h.autoWidth||h.autoHeight)g.addClass(\"fancybox-tmp\"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass(\"fancybox-tmp\");c=k(C);i=k(A);D=C/A;l=k(E(l)?k(l,\"w\")-z:l);m=k(E(m)?k(m,\"w\")-z:m);t=k(E(t)?k(t,\"h\")-s:t);n=k(E(n)?k(n,\"h\")-s:n);F=m;B=n;h.fitToView&&(m=Math.min(a.w-z,m),n=Math.min(a.h-s,n));z=a.w-y;q=a.h-q;h.aspectRatio?(c>m&&(c=m,i=k(c/D)),i>n&&(i=n,c=k(i*D)),c<l&&(c=l,i=k(c/D)),i<t&&\n(i=t,c=k(i*D))):(c=Math.max(l,Math.min(c,m)),h.autoHeight&&\"iframe\"!==h.type&&(g.width(c),i=g.height()),i=Math.max(t,Math.min(i,n)));if(h.fitToView)if(g.width(c).height(i),e.width(c+w),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>q)&&(c>l&&i>t)&&!(19<d++);)i=Math.max(t,Math.min(n,i-10)),c=k(i*D),c<l&&(c=l,i=k(c/D)),c>m&&(c=m,i=k(c/D)),g.width(c).height(i),e.width(c+w),a=e.width(),y=e.height();else c=Math.max(l,Math.min(c,c-(a-z))),i=Math.max(t,Math.min(i,i-(y-q)));p&&(\"auto\"===r&&i<A&&c+w+\np<z)&&(c+=p);g.width(c).height(i);e.width(c+w);a=e.width();y=e.height();e=(a>z||y>q)&&c>l&&i>t;c=h.aspectRatio?c<F&&i<B&&c<C&&i<A:(c<F||i<B)&&(c<C||i<A);f.extend(h,{dim:{width:v(a),height:v(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:w,hPadding:x,wrapSpace:y-j.outerHeight(!0),skinSpace:j.height()-i});!u&&(h.autoHeight&&i>t&&i<n&&!c)&&g.height(\"auto\")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:\"absolute\",\ntop:c[0],left:c[3]};d.autoCenter&&d.fixed&&!a&&g<=e.h&&f<=e.w?c.position=\"fixed\":d.locked||(c.top+=e.y,c.left+=e.x);c.top=v(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=v(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css(\"overflow\",\"visible\").addClass(\"fancybox-opened\"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css(\"cursor\",\"pointer\").bind(\"click.fb\",function(d){!f(d.target).is(\"a\")&&!f(d.target).parent().is(\"a\")&&\n(d.preventDefault(),b[a.closeClick?\"close\":\"next\"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind(n?\"touchstart.fb\":\"click.fb\",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind(\"click.fb\",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind(\"click.fb\",b.next)),b.trigger(\"afterShow\"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=\n!1,b.play()))},_afterZoomOut:function(a){a=a||b.current;f(\".fancybox-wrap\").trigger(\"onReset\").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger(\"afterClose\",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,i=a.wPadding,l=b.getViewport();!e&&(a.isDom&&d.is(\":visible\"))&&(e=d.find(\"img:first\"),e.length||(e=d));s(e)?(c=e.offset(),\ne.is(\"img\")&&(f=e.outerWidth(),g=e.outerHeight())):(c.top=l.y+(l.h-g)*a.topRatio,c.left=l.x+(l.w-f)*a.leftRatio);if(\"fixed\"===b.wrap.css(\"position\")||a.locked)c.top-=l.y,c.left-=l.x;return c={top:v(c.top-h*a.topRatio),left:v(c.left-i*a.leftRatio),width:v(f+i),height:v(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if(\"width\"===f||\"height\"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c=\"width\"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](k(\"width\"===\nf?c:c-g*e)),b.inner[f](k(\"width\"===f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c=\"elastic\"===e,j=f.extend({opacity:1},d);delete j.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):\"fade\"===e&&(d.opacity=0.1);b.wrap.css(d).animate(j,{duration:\"none\"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e=\"elastic\"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&\n(c.opacity=0.1));b.wrap.animate(c,{duration:\"none\"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;\"elastic\"===d&&(g=\"down\"===f||\"up\"===f?\"top\":\"left\",\"down\"===f||\"right\"===f?(e[g]=v(k(e[g])-200),c[g]=\"+=200px\"):(e[g]=v(k(e[g])+200),c[g]=\"-=200px\"));\"none\"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:function(){setTimeout(b._afterZoomIn,\n20)}})},changeOut:function(){var a=b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;\"elastic\"===d&&(e[\"down\"===c||\"up\"===c?\"top\":\"left\"]=(\"up\"===c||\"left\"===c?\"-\":\"+\")+\"=200px\");a.wrap.animate(e,{duration:\"none\"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger(\"onReset\").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!n,fixed:!0},overlay:null,fixed:!1,create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();\nthis.overlay=f('<div class=\"fancybox-overlay\"></div>').appendTo(\"body\");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass(\"fancybox-overlay-fixed\"),this.fixed=!0)},open:function(a){var d=this,a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(\".overlay\").width(\"auto\").height(\"auto\"):this.create(a);this.fixed||(r.bind(\"resize.overlay\",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind(\"click.overlay\",function(a){f(a.target).hasClass(\"fancybox-overlay\")&&\n(b.isActive?b.close():d.close())});this.overlay.css(a.css).show()},close:function(){f(\".fancybox-overlay\").remove();r.unbind(\"resize.overlay\");this.overlay=null;!1!==this.margin&&(f(\"body\").css(\"margin-right\",this.margin),this.margin=!1);this.el&&this.el.removeClass(\"fancybox-lock\")},update:function(){var a=\"100%\",b;this.overlay.width(a).height(\"100%\");f.browser.msie?(b=Math.max(x.documentElement.offsetWidth,x.body.offsetWidth),m.width()>b&&(a=m.width())):m.width()>r.width()&&(a=m.width());this.overlay.width(a).height(m.height())},\nonReady:function(a,b){f(\".fancybox-overlay\").stop(!0,!0);this.overlay||(this.margin=m.height()>r.height()||\"scroll\"===f(\"body\").css(\"overflow-y\")?f(\"body\").css(\"margin-right\"):!1,this.el=x.all&&!x.querySelector?f(\"html\"):f(\"body\"),this.create(a));a.locked&&this.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&(this.el.addClass(\"fancybox-lock\"),!1!==this.margin&&f(\"body\").css(\"margin-right\",k(this.margin)+\nb.scrollbarWidth));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.isActive&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:\"float\",position:\"bottom\"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(p(e)&&\"\"!==f.trim(e)){d=f('<div class=\"fancybox-title fancybox-title-'+c+'-wrap\">'+e+\"</div>\");switch(c){case \"inside\":c=b.skin;break;case \"outside\":c=\nb.wrap;break;case \"over\":c=b.inner;break;default:c=b.skin,d.appendTo(\"body\"),f.browser.msie&&d.width(d.width()),d.wrapInner('<span class=\"child\"></span>'),b.current.margin[2]+=Math.abs(k(d.css(\"margin-bottom\")))}d[\"top\"===a.position?\"prependTo\":\"appendTo\"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||\"\",j=function(g){var h=f(this).blur(),i=d,j,k;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(\".fancybox-wrap\")&&(j=a.groupAttr||\"data-fancybox-group\",k=h.attr(j),k||(j=\"rel\",\nk=h.get(0)[j]),k&&(\"\"!==k&&\"nofollow\"!==k)&&(h=c.length?f(c):e,h=h.filter(\"[\"+j+'=\"'+k+'\"]'),i=h.index(this)),a.index=i,!1!==b.open(h,a)&&g.preventDefault())},a=a||{};d=a.index||0;!c||!1===a.live?e.unbind(\"click.fb-start\").bind(\"click.fb-start\",j):m.undelegate(c,\"click.fb-start\").delegate(c+\":not('.fancybox-item, .fancybox-nav')\",\"click.fb-start\",j);this.filter(\"[data-fancybox-start=1]\").trigger(\"click\");return this};m.ready(function(){f.scrollbarWidth===q&&(f.scrollbarWidth=function(){var a=f('<div style=\"width:50px;height:50px;overflow:auto\"><div/></div>').appendTo(\"body\"),\nb=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===q){var a=f.support,d=f('<div style=\"position:fixed;top:20px;\"></div>').appendTo(\"body\"),e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f(\"body\")})})})(window,document,jQuery);"
  },
  {
    "path": "target/mongo/assets/flot/jquery.flot.crosshair.js",
    "content": "/*\nFlot plugin for showing crosshairs, thin lines, when the mouse hovers\nover the plot.\n\n  crosshair: {\n    mode: null or \"x\" or \"y\" or \"xy\"\n    color: color\n    lineWidth: number\n  }\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a\nvertical crosshair that lets you trace the values on the x axis, \"y\"\nenables a horizontal crosshair and \"xy\" enables them both. \"color\" is\nthe color of the crosshair (default is \"rgba(170, 0, 0, 0.80)\"),\n\"lineWidth\" is the width of the drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n  - setCrosshair(pos)\n\n    Set the position of the crosshair. Note that this is cleared if\n    the user moves the mouse. \"pos\" is in coordinates of the plot and\n    should be on the form { x: xpos, y: ypos } (you can use x2/x3/...\n    if you're using multiple axes), which is coincidentally the same\n    format as what you get from a \"plothover\" event. If \"pos\" is null,\n    the crosshair is cleared.\n\n  - clearCrosshair()\n\n    Clear the crosshair.\n\n  - lockCrosshair(pos)\n\n    Cause the crosshair to lock to the current location, no longer\n    updating if the user moves the mouse. Optionally supply a position\n    (passed on to setCrosshair()) to move it to.\n\n    Example usage:\n      var myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n      $(\"#graph\").bind(\"plothover\", function (evt, position, item) {\n        if (item) {\n          // Lock the crosshair to the data point being hovered\n          myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] });\n        }\n        else {\n          // Return normal crosshair operation\n          myFlot.unlockCrosshair();\n        }\n      });\n\n  - unlockCrosshair()\n\n    Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n    var options = {\n        crosshair: {\n            mode: null, // one of null, \"x\", \"y\" or \"xy\",\n            color: \"rgba(170, 0, 0, 0.80)\",\n            lineWidth: 1\n        }\n    };\n    \n    function init(plot) {\n        // position of crosshair in pixels\n        var crosshair = { x: -1, y: -1, locked: false };\n\n        plot.setCrosshair = function setCrosshair(pos) {\n            if (!pos)\n                crosshair.x = -1;\n            else {\n                var o = plot.p2c(pos);\n                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n            }\n            \n            plot.triggerRedrawOverlay();\n        };\n        \n        plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n        \n        plot.lockCrosshair = function lockCrosshair(pos) {\n            if (pos)\n                plot.setCrosshair(pos);\n            crosshair.locked = true;\n        }\n\n        plot.unlockCrosshair = function unlockCrosshair() {\n            crosshair.locked = false;\n        }\n\n        function onMouseOut(e) {\n            if (crosshair.locked)\n                return;\n\n            if (crosshair.x != -1) {\n                crosshair.x = -1;\n                plot.triggerRedrawOverlay();\n            }\n        }\n\n        function onMouseMove(e) {\n            if (crosshair.locked)\n                return;\n                \n            if (plot.getSelection && plot.getSelection()) {\n                crosshair.x = -1; // hide the crosshair while selecting\n                return;\n            }\n                \n            var offset = plot.offset();\n            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n            plot.triggerRedrawOverlay();\n        }\n        \n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n            if (!plot.getOptions().crosshair.mode)\n                return;\n\n            eventHolder.mouseout(onMouseOut);\n            eventHolder.mousemove(onMouseMove);\n        });\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            var c = plot.getOptions().crosshair;\n            if (!c.mode)\n                return;\n\n            var plotOffset = plot.getPlotOffset();\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            if (crosshair.x != -1) {\n                ctx.strokeStyle = c.color;\n                ctx.lineWidth = c.lineWidth;\n                ctx.lineJoin = \"round\";\n\n                ctx.beginPath();\n                if (c.mode.indexOf(\"x\") != -1) {\n                    ctx.moveTo(crosshair.x, 0);\n                    ctx.lineTo(crosshair.x, plot.height());\n                }\n                if (c.mode.indexOf(\"y\") != -1) {\n                    ctx.moveTo(0, crosshair.y);\n                    ctx.lineTo(plot.width(), crosshair.y);\n                }\n                ctx.stroke();\n            }\n            ctx.restore();\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mouseout\", onMouseOut);\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n        });\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'crosshair',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/flot/jquery.flot.js",
    "content": "/*! Javascript plotting library for jQuery, v. 0.7.\n *\n * Released under the MIT license by IOLA, December 2007.\n *\n */\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return\"rgb(\"+[G.r,G.g,G.b].join(\",\")+\")\"}else{return\"rgba(\"+[G.r,G.g,G.b,G.a].join(\",\")+\")\"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=\"\"&&E!=\"transparent\"){break}D=D.parent()}while(!B.nodeName(D.get(0),\"body\"));if(E==\"rgba(0, 0, 0, 0)\"){E=\"transparent\"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D==\"transparent\"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n        \n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85 // set to 0 to avoid background\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    \n                    // mode specific options\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null, // number or [number, \"unit\"]\n                    monthNames: null, // list of names of months\n                    timeformat: null, // format string to use\n                    twelveHourClock: false // 12 or 24 time in time mode\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled \n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // or \"center\" \n                        horizontal: false\n                    },\n                    shadowSize: 3\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                hooks: {}\n            },\n        canvas = null,      // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        canvasWidth = 0, canvasHeight = 0,\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return canvas; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.resize = function () {\n            getCanvasDimensions();\n            resizeCanvas(canvas);\n            resizeCanvas(overlay);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n        \n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n        \n        function parseOptions(opts) {\n            var i;\n            \n            $.extend(true, options, opts);\n            \n            if (options.xaxis.color == null)\n                options.xaxis.color = options.grid.color;\n            if (options.yaxis.color == null)\n                options.yaxis.color = options.grid.color;\n            \n            if (options.xaxis.tickColor == null) // backwards-compatibility\n                options.xaxis.tickColor = options.grid.tickColor;\n            if (options.yaxis.tickColor == null) // backwards-compatibility\n                options.yaxis.tickColor = options.grid.tickColor;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            \n            // fill in defaults in axes, copy at least always the\n            // first as the rest of the code assumes it'll be there\n            for (i = 0; i < Math.max(1, options.xaxes.length); ++i)\n                options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);\n            for (i = 0; i < Math.max(1, options.yaxes.length); ++i)\n                options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n        \n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n        \n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n        \n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes \n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n            \n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n        \n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            return res;\n        }\n        \n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n                \n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n            var i;\n            \n            // collect what we already got of colors\n            var neededColors = series.length,\n                usedColors = [],\n                assignedColors = [];\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    --neededColors;\n                    if (typeof sc == \"number\")\n                        assignedColors.push(sc);\n                    else\n                        usedColors.push($.color.parse(series[i].color));\n                }\n            }\n            \n            // we might need to generate more colors if higher indices\n            // are assigned\n            for (i = 0; i < assignedColors.length; ++i) {\n                neededColors = Math.max(neededColors, assignedColors[i] + 1);\n            }\n\n            // produce colors as needed\n            var colors = [], variation = 0;\n            i = 0;\n            while (colors.length < neededColors) {\n                var c;\n                if (options.colors.length == i) // check degenerate case\n                    c = $.color.make(100, 100, 100);\n                else\n                    c = $.color.parse(options.colors[i]);\n\n                // vary color if needed\n                var sign = variation % 2 == 1 ? -1 : 1;\n                c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)\n\n                // FIXME: if we're getting to close to something else,\n                // we should probably skip this one\n                colors.push(c);\n                \n                ++i;\n                if (i >= options.colors.length) {\n                    i = 0;\n                    ++variation;\n                }\n            }\n\n            // fill in the options\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n        \n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n            \n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n                \n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n            \n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                var data = s.data, format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        format.push({ y: true, number: true, required: false, defaultValue: 0 });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n                    \n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n                \n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n                \n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n                                    \n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n                            \n                            points[k + m] = val;\n                        }\n                    }\n                    \n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.x)\n                                    updateAxis(s.xaxis, val, val);\n                                if (f.y)\n                                    updateAxis(s.yaxis, val, val);\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points,\n                ps = s.datapoints.pointsize;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n                \n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n                        \n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n                \n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2;\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n                \n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function makeCanvas(skipPositioning, cls) {\n            var c = document.createElement('canvas');\n            c.className = cls;\n            c.width = canvasWidth;\n            c.height = canvasHeight;\n                    \n            if (!skipPositioning)\n                $(c).css({ position: 'absolute', left: 0, top: 0 });\n                \n            $(c).appendTo(placeholder);\n                \n            if (!c.getContext) // excanvas hack\n                c = window.G_vmlCanvasManager.initElement(c);\n\n            // used for resetting in case we get replotted\n            c.getContext(\"2d\").save();\n            \n            return c;\n        }\n\n        function getCanvasDimensions() {\n            canvasWidth = placeholder.width();\n            canvasHeight = placeholder.height();\n            \n            if (canvasWidth <= 0 || canvasHeight <= 0)\n                throw \"Invalid dimensions for plot, width = \" + canvasWidth + \", height = \" + canvasHeight;\n        }\n\n        function resizeCanvas(c) {\n            // resizing should reset the state (excanvas seems to be\n            // buggy though)\n            if (c.width != canvasWidth)\n                c.width = canvasWidth;\n\n            if (c.height != canvasHeight)\n                c.height = canvasHeight;\n\n            // so try to get back to the initial state (even if it's\n            // gone now, this should be safe according to the spec)\n            var cctx = c.getContext(\"2d\");\n            cctx.restore();\n\n            // and save again\n            cctx.save();\n        }\n        \n        function setupCanvases() {\n            var reused,\n                existingCanvas = placeholder.children(\"canvas.base\"),\n                existingOverlay = placeholder.children(\"canvas.overlay\");\n\n            if (existingCanvas.length == 0 || existingOverlay == 0) {\n                // init everything\n                \n                placeholder.html(\"\"); // make sure placeholder is clear\n            \n                placeholder.css({ padding: 0 }); // padding messes up the positioning\n                \n                if (placeholder.css(\"position\") == 'static')\n                    placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n                getCanvasDimensions();\n                \n                canvas = makeCanvas(true, \"base\");\n                overlay = makeCanvas(false, \"overlay\"); // overlay canvas for interactive features\n\n                reused = false;\n            }\n            else {\n                // reuse existing elements\n\n                canvas = existingCanvas.get(0);\n                overlay = existingOverlay.get(0);\n\n                reused = true;\n            }\n\n            ctx = canvas.getContext(\"2d\");\n            octx = overlay.getContext(\"2d\");\n\n            // we include the canvas in the event holder too, because IE 7\n            // sometimes has trouble with the stacking order\n            eventHolder = $([overlay, canvas]);\n\n            if (reused) {\n                // run shutdown in the old plot object\n                placeholder.data(\"plot\").shutdown();\n\n                // reset reused canvases\n                plot.resize();\n                \n                // make sure overlay pixels are cleared (canvas is cleared when we redraw)\n                octx.clearRect(0, 0, canvasWidth, canvasHeight);\n                \n                // then whack any remaining obvious garbage left\n                eventHolder.unbind();\n                placeholder.children().not([canvas, overlay]).remove();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mouseleave(onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n            \n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n            \n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n            \n            function identity(x) { return x; }\n            \n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n            \n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n            var opts = axis.options, i, ticks = axis.ticks || [], labels = [],\n                l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;\n\n            function makeDummyDiv(labels, width) {\n                return $('<div style=\"position:absolute;top:-10000px;' + width + 'font-size:smaller\">' +\n                         '<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\">'\n                         + labels.join(\"\") + '</div></div>')\n                    .appendTo(placeholder);\n            }\n            \n            if (axis.direction == \"x\") {\n                // to avoid measuring the widths of the labels (it's slow), we\n                // construct fixed-size boxes and put the labels inside\n                // them, we don't need the exact figures and the\n                // fixed-size box content is easy to center\n                if (w == null)\n                    w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));\n\n                // measure x label heights\n                if (h == null) {\n                    labels = [];\n                    for (i = 0; i < ticks.length; ++i) {\n                        l = ticks[i].label;\n                        if (l)\n                            labels.push('<div class=\"tickLabel\" style=\"float:left;width:' + w + 'px\">' + l + '</div>');\n                    }\n\n                    if (labels.length > 0) {\n                        // stick them all in the same div and measure\n                        // collective height\n                        labels.push('<div style=\"clear:left\"></div>');\n                        dummyDiv = makeDummyDiv(labels, \"width:10000px;\");\n                        h = dummyDiv.height();\n                        dummyDiv.remove();\n                    }\n                }\n            }\n            else if (w == null || h == null) {\n                // calculate y label dimensions\n                for (i = 0; i < ticks.length; ++i) {\n                    l = ticks[i].label;\n                    if (l)\n                        labels.push('<div class=\"tickLabel\">' + l + '</div>');\n                }\n                \n                if (labels.length > 0) {\n                    dummyDiv = makeDummyDiv(labels, \"\");\n                    if (w == null)\n                        w = dummyDiv.children().width();\n                    if (h == null)\n                        h = dummyDiv.find(\"div.tickLabel\").height();\n                    dummyDiv.remove();\n                }\n            }\n\n            if (w == null)\n                w = 0;\n            if (h == null)\n                h = 0;\n\n            axis.labelWidth = w;\n            axis.labelHeight = h;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                tickLength = axis.options.tickLength,\n                axismargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                all = axis.direction == \"x\" ? xaxes : yaxes,\n                index;\n\n            // determine axis margin\n            var samePosition = $.grep(all, function (a) {\n                return a && a.options.position == pos && a.reserveSpace;\n            });\n            if ($.inArray(axis, samePosition) == samePosition.length - 1)\n                axismargin = 0; // outermost\n\n            // determine tick length - if we're innermost, we can use \"full\"\n            if (tickLength == null)\n                tickLength = \"full\";\n\n            var sameDirection = $.grep(all, function (a) {\n                return a && a.reserveSpace;\n            });\n\n            var innermost = $.inArray(axis, sameDirection) == 0;\n            if (!innermost && tickLength == \"full\")\n                tickLength = 5;\n                \n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            // compute box\n            if (axis.direction == \"x\") {\n                lh += padding;\n                \n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axismargin;\n                    axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axismargin, height: lh };\n                    plotOffset.top += lh + axismargin;\n                }\n            }\n            else {\n                lw += padding;\n                \n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axismargin, width: lw };\n                    plotOffset.left += lw + axismargin;\n                }\n                else {\n                    plotOffset.right += lw + axismargin;\n                    axis.box = { left: canvasWidth - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // set remaining bounding box coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left;\n                axis.box.width = plotWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top;\n                axis.box.height = plotHeight;\n            }\n        }\n        \n        function setupGrid() {\n            var i, axes = allAxes();\n\n            // first calculate the plot and axis box dimensions\n\n            $.each(axes, function (_, axis) {\n                axis.show = axis.options.show;\n                if (axis.show == null)\n                    axis.show = axis.used; // by default an axis is visible if it's got data\n                \n                axis.reserveSpace = axis.show || axis.options.reserveSpace;\n\n                setRange(axis);\n            });\n\n            allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });\n\n            plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions in house, we can compute the\n                // axis boxes, start from the outside (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                var minMargin = options.grid.minBorderMargin;\n                if (minMargin == null) {\n                    minMargin = 0;\n                    for (i = 0; i < series.length; ++i)\n                        minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);\n                }\n                    \n                for (var a in plotOffset) {\n                    plotOffset[a] += options.grid.borderWidth;\n                    plotOffset[a] = Math.max(minMargin, plotOffset[a]);\n                }\n            }\n            \n            plotWidth = canvasWidth - plotOffset.left - plotOffset.right;\n            plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plotWidth/Height, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n\n                insertAxisLabels();\n            }\n            \n            insertLegend();\n        }\n        \n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n                \n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? canvasWidth : canvasHeight);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                size, generator, unit, formatter, i, magn, norm;\n\n            if (opts.mode == \"time\") {\n                // pretty handling of time\n                \n                // map of app. size of time units in milliseconds\n                var timeUnitSize = {\n                    \"second\": 1000,\n                    \"minute\": 60 * 1000,\n                    \"hour\": 60 * 60 * 1000,\n                    \"day\": 24 * 60 * 60 * 1000,\n                    \"month\": 30 * 24 * 60 * 60 * 1000,\n                    \"year\": 365.2425 * 24 * 60 * 60 * 1000\n                };\n\n\n                // the allowed tick sizes, after 1 year we use\n                // an integer algorithm\n                var spec = [\n                    [1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n                    [30, \"second\"], \n                    [1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n                    [30, \"minute\"], \n                    [1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n                    [8, \"hour\"], [12, \"hour\"],\n                    [1, \"day\"], [2, \"day\"], [3, \"day\"],\n                    [0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n                    [2, \"month\"], [3, \"month\"], [6, \"month\"],\n                    [1, \"year\"]\n                ];\n\n                var minSize = 0;\n                if (opts.minTickSize != null) {\n                    if (typeof opts.tickSize == \"number\")\n                        minSize = opts.tickSize;\n                    else\n                        minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n                }\n\n                for (var i = 0; i < spec.length - 1; ++i)\n                    if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n                                 + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n                       && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)\n                        break;\n                size = spec[i][0];\n                unit = spec[i][1];\n                \n                // special-case the possibility of several years\n                if (unit == \"year\") {\n                    magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));\n                    norm = (delta / timeUnitSize.year) / magn;\n                    if (norm < 1.5)\n                        size = 1;\n                    else if (norm < 3)\n                        size = 2;\n                    else if (norm < 7.5)\n                        size = 5;\n                    else\n                        size = 10;\n\n                    size *= magn;\n                }\n\n                axis.tickSize = opts.tickSize || [size, unit];\n                \n                generator = function(axis) {\n                    var ticks = [],\n                        tickSize = axis.tickSize[0], unit = axis.tickSize[1],\n                        d = new Date(axis.min);\n                    \n                    var step = tickSize * timeUnitSize[unit];\n\n                    if (unit == \"second\")\n                        d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));\n                    if (unit == \"minute\")\n                        d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));\n                    if (unit == \"hour\")\n                        d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));\n                    if (unit == \"month\")\n                        d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));\n                    if (unit == \"year\")\n                        d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));\n                    \n                    // reset smaller components\n                    d.setUTCMilliseconds(0);\n                    if (step >= timeUnitSize.minute)\n                        d.setUTCSeconds(0);\n                    if (step >= timeUnitSize.hour)\n                        d.setUTCMinutes(0);\n                    if (step >= timeUnitSize.day)\n                        d.setUTCHours(0);\n                    if (step >= timeUnitSize.day * 4)\n                        d.setUTCDate(1);\n                    if (step >= timeUnitSize.year)\n                        d.setUTCMonth(0);\n\n\n                    var carry = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = d.getTime();\n                        ticks.push(v);\n                        if (unit == \"month\") {\n                            if (tickSize < 1) {\n                                // a bit complicated - we'll divide the month\n                                // up but we need to take care of fractions\n                                // so we don't end up in the middle of a day\n                                d.setUTCDate(1);\n                                var start = d.getTime();\n                                d.setUTCMonth(d.getUTCMonth() + 1);\n                                var end = d.getTime();\n                                d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n                                carry = d.getUTCHours();\n                                d.setUTCHours(0);\n                            }\n                            else\n                                d.setUTCMonth(d.getUTCMonth() + tickSize);\n                        }\n                        else if (unit == \"year\") {\n                            d.setUTCFullYear(d.getUTCFullYear() + tickSize);\n                        }\n                        else\n                            d.setTime(v + step);\n                    } while (v < axis.max && v != prev);\n\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    var d = new Date(v);\n\n                    // first check global format\n                    if (opts.timeformat != null)\n                        return $.plot.formatDate(d, opts.timeformat, opts.monthNames);\n                    \n                    var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n                    var span = axis.max - axis.min;\n                    var suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n                    \n                    if (t < timeUnitSize.minute)\n                        fmt = \"%h:%M:%S\" + suffix;\n                    else if (t < timeUnitSize.day) {\n                        if (span < 2 * timeUnitSize.day)\n                            fmt = \"%h:%M\" + suffix;\n                        else\n                            fmt = \"%b %d %h:%M\" + suffix;\n                    }\n                    else if (t < timeUnitSize.month)\n                        fmt = \"%b %d\";\n                    else if (t < timeUnitSize.year) {\n                        if (span < timeUnitSize.year)\n                            fmt = \"%b\";\n                        else\n                            fmt = \"%b %y\";\n                    }\n                    else\n                        fmt = \"%y\";\n                    \n                    return $.plot.formatDate(d, fmt, opts.monthNames);\n                };\n            }\n            else {\n                // pretty rounding of base-10 numbers\n                var maxDec = opts.tickDecimals;\n                var dec = -Math.floor(Math.log(delta) / Math.LN10);\n                if (maxDec != null && dec > maxDec)\n                    dec = maxDec;\n\n                magn = Math.pow(10, -dec);\n                norm = delta / magn; // norm is between 1.0 and 10.0\n                \n                if (norm < 1.5)\n                    size = 1;\n                else if (norm < 3) {\n                    size = 2;\n                    // special case for 2.5, requires an extra decimal\n                    if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                        size = 2.5;\n                        ++dec;\n                    }\n                }\n                else if (norm < 7.5)\n                    size = 5;\n                else\n                    size = 10;\n\n                size *= magn;\n                \n                if (opts.minTickSize != null && size < opts.minTickSize)\n                    size = opts.minTickSize;\n\n                axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n                axis.tickSize = opts.tickSize || size;\n\n                generator = function (axis) {\n                    var ticks = [];\n\n                    // spew out all possible ticks\n                    var start = floorInBase(axis.min, axis.tickSize),\n                        i = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    return v.toFixed(axis.tickDecimals);\n                };\n            }\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = generator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n                    \n                    generator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n                    \n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (axis.mode != \"time\" && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),\n                            ts = generator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n\n            axis.tickGenerator = generator;\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n            else\n                axis.tickFormatter = formatter;\n        }\n        \n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks({ min: axis.min, max: axis.max });\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n      \n        function draw() {\n            ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n            \n            if (grid.show && !grid.aboveData)\n                drawGrid();\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n            \n            if (grid.show && grid.aboveData)\n                drawGrid();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i;\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    var axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n                    \n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    if (xrange.from == xrange.to && yrange.from == yrange.to)\n                        continue;\n\n                    // then draw\n                    xrange.from = xrange.axis.p2c(xrange.from);\n                    xrange.to = xrange.axis.p2c(xrange.to);\n                    yrange.from = yrange.axis.p2c(yrange.from);\n                    yrange.to = yrange.axis.p2c(yrange.to);\n                    \n                    if (xrange.from == xrange.to || yrange.from == yrange.to) {\n                        // draw line\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;\n                        ctx.moveTo(xrange.from, yrange.from);\n                        ctx.lineTo(xrange.to, yrange.to);\n                        ctx.stroke();\n                    }\n                    else {\n                        // fill area\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n            \n            // draw the ticks\n            var axes = allAxes(), bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue\n                \n                ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n                \n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth;\n                    else\n                        yoff = plotHeight;\n                    \n                    if (ctx.lineWidth == 1) {\n                        x = Math.floor(x) + 0.5;\n                        y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n                    \n                    xoff = yoff = 0;\n\n                    if (v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\" && bw > 0\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n                        \n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n                        \n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n                \n                ctx.stroke();\n            }\n            \n            \n            // draw border\n            if (bw) {\n                ctx.lineWidth = bw;\n                ctx.strokeStyle = options.grid.borderColor;\n                ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n            }\n\n            ctx.restore();\n        }\n\n        function insertAxisLabels() {\n            placeholder.find(\".tickLabels\").remove();\n            \n            var html = ['<div class=\"tickLabels\" style=\"font-size:smaller\">'];\n\n            var axes = allAxes();\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box;\n                if (!axis.show)\n                    continue;\n                //debug: html.push('<div style=\"position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n                html.push('<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\" style=\"color:' + axis.options.color + '\">');\n                for (var i = 0; i < axis.ticks.length; ++i) {\n                    var tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    var pos = {}, align;\n                    \n                    if (axis.direction == \"x\") {\n                        align = \"center\";\n                        pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);\n                        if (axis.position == \"bottom\")\n                            pos.top = box.top + box.padding;\n                        else\n                            pos.bottom = canvasHeight - (box.top + box.height - box.padding);\n                    }\n                    else {\n                        pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);\n                        if (axis.position == \"left\") {\n                            pos.right = canvasWidth - (box.left + box.width - box.padding)\n                            align = \"right\";\n                        }\n                        else {\n                            pos.left = box.left + box.padding;\n                            align = \"left\";\n                        }\n                    }\n\n                    pos.width = axis.labelWidth;\n\n                    var style = [\"position:absolute\", \"text-align:\" + align ];\n                    for (var a in pos)\n                        style.push(a + \":\" + pos[a] + \"px\")\n                    \n                    html.push('<div class=\"tickLabel\" style=\"' + style.join(';') + '\">' + tick.label + '</div>');\n                }\n                html.push('</div>');\n            }\n\n            html.push('</div>');\n\n            placeholder.append(html.join(\"\"));\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n        \n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n                \n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n                    \n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n                    \n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n                    \n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n                    \n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n                    \n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n                    \n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n                    \n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n                    \n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n                    \n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n           \n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n            \n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n            \n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n            \n            // fill the bar\n            if (fillStyleCallback) {\n                c.beginPath();\n                c.moveTo(left, bottom);\n                c.lineTo(left, top);\n                c.lineTo(right, top);\n                c.lineTo(right, bottom);\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fill();\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom + offset);\n                if (drawLeft)\n                    c.lineTo(left, top + offset);\n                else\n                    c.moveTo(left, top + offset);\n                if (drawTop)\n                    c.lineTo(right, top + offset);\n                else\n                    c.moveTo(right, top + offset);\n                if (drawRight)\n                    c.lineTo(right, bottom + offset);\n                else\n                    c.moveTo(right, bottom + offset);\n                if (drawBottom)\n                    c.lineTo(left, bottom + offset);\n                else\n                    c.moveTo(left, bottom + offset);\n                c.stroke();\n            }\n        }\n        \n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n                \n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n            \n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n        \n        function insertLegend() {\n            placeholder.find(\".legend\").remove();\n\n            if (!options.legend.show)\n                return;\n            \n            var fragments = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                label = s.label;\n                if (!label)\n                    continue;\n                \n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                if (lf)\n                    label = lf(label, s);\n                \n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + label + '</td>');\n            }\n            if (rowStarted)\n                fragments.push('</tr>');\n            \n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n        \n        var highlights = [],\n            redrawTimeout = null;\n        \n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n                \n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    ps = s.datapoints.pointsize,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n                \n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n                        \n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n                    \n                if (s.bars.show && !item) { // no other point can be nearby\n                    var barLeft = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2,\n                        barRight = barLeft + s.bars.barWidth;\n                    \n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n  \n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ? \n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) && \n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n                \n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n            \n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n                \n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n            \n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, 30);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            octx.clearRect(0, 0, canvasWidth, canvasHeight);\n            octx.translate(plotOffset.left, plotOffset.top);\n            \n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n            \n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n        \n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n            \n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n            }\n            \n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\")\n                point = s.data[point];\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n        \n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n        \n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis;\n            \n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n            \n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var radius = 1.5 * pointRadius,\n                x = axisx.p2c(x),\n                y = axisy.p2c(y);\n            \n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n                \n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness)\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n                \n                return gradient;\n            }\n        }\n    }\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.7\";\n    \n    $.plot.plugins = [];\n\n    // returns a string with the date d formatted according to fmt\n    $.plot.formatDate = function(d, fmt, monthNames) {\n        var leftPad = function(n) {\n            n = \"\" + n;\n            return n.length == 1 ? \"0\" + n : n;\n        };\n        \n        var r = [];\n        var escape = false, padNext = false;\n        var hours = d.getUTCHours();\n        var isAM = hours < 12;\n        if (monthNames == null)\n            monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n        if (fmt.search(/%p|%P/) != -1) {\n            if (hours > 12) {\n                hours = hours - 12;\n            } else if (hours == 0) {\n                hours = 12;\n            }\n        }\n        for (var i = 0; i < fmt.length; ++i) {\n            var c = fmt.charAt(i);\n            \n            if (escape) {\n                switch (c) {\n                case 'h': c = \"\" + hours; break;\n                case 'H': c = leftPad(hours); break;\n                case 'M': c = leftPad(d.getUTCMinutes()); break;\n                case 'S': c = leftPad(d.getUTCSeconds()); break;\n                case 'd': c = \"\" + d.getUTCDate(); break;\n                case 'm': c = \"\" + (d.getUTCMonth() + 1); break;\n                case 'y': c = \"\" + d.getUTCFullYear(); break;\n                case 'b': c = \"\" + monthNames[d.getUTCMonth()]; break;\n                case 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n                case 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n                case '0': c = \"\"; padNext = true; break;\n                }\n                if (c && padNext) {\n                    c = leftPad(c);\n                    padNext = false;\n                }\n                r.push(c);\n                if (!padNext)\n                    escape = false;\n            }\n            else {\n                if (c == \"%\")\n                    escape = true;\n                else\n                    r.push(c);\n            }\n        }\n        return r.join(\"\");\n    };\n    \n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n    \n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/flot/jquery.flot.pie.js",
    "content": "/*\nFlot plugin for rendering pie charts. The plugin assumes the data is \ncoming is as a single data value for each series, and each of those \nvalues is a positive value or zero (negative numbers don't make \nany sense and will cause strange effects). The data values do \nNOT need to be passed in as percentage values because it \ninternally calculates the total and percentages.\n\n* Created by Brian Medendorp, June 2009\n* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars\n\n* Changes:\n\t2009-10-22: lineJoin set to round\n\t2009-10-23: IE full circle fix, donut\n\t2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera\n\t2009-11-17: Added IE hover capability submitted by Anthony Aragues\n\t2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well)\n\t\t\n\nAvailable options are:\nseries: {\n\tpie: {\n\t\tshow: true/false\n\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\toffset: {\n\t\t\ttop: integer value to move the pie up or down\n\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t},\n\t\tstroke: {\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\twidth: integer pixel width of the stroke\n\t\t},\n\t\tlabel: {\n\t\t\tshow: true/false, or 'auto'\n\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\tbackground: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\topacity: 0-1\n\t\t\t},\n\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t},\n\t\tcombine: {\n\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t}\n\t\thighlight: {\n\t\t\topacity: 0-1\n\t\t}\n\t}\n}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function ($) \n{\n\tfunction init(plot) // this is the \"body\" of the plugin\n\t{\n\t\tvar canvas = null;\n\t\tvar target = null;\n\t\tvar maxRadius = null;\n\t\tvar centerLeft = null;\n\t\tvar centerTop = null;\n\t\tvar total = 0;\n\t\tvar redraw = true;\n\t\tvar redrawAttempts = 10;\n\t\tvar shrink = 0.95;\n\t\tvar legendWidth = 0;\n\t\tvar processed = false;\n\t\tvar raw = false;\n\t\t\n\t\t// interactive variables\t\n\t\tvar highlights = [];\t\n\t\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\t\tplot.hooks.processOptions.push(checkPieEnabled);\n\t\tplot.hooks.bindEvents.push(bindEvents);\t\n\n\t\t// check to see if the pie plugin is enabled\n\t\tfunction checkPieEnabled(plot, options)\n\t\t{\n\t\t\tif (options.series.pie.show)\n\t\t\t{\n\t\t\t\t//disable grid\n\t\t\t\toptions.grid.show = false;\n\t\t\t\t\n\t\t\t\t// set labels.show\n\t\t\t\tif (options.series.pie.label.show=='auto')\n\t\t\t\t\tif (options.legend.show)\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius=='auto')\n\t\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t\t\n\t\t\t\t// ensure sane tilt\n\t\t\t\tif (options.series.pie.tilt>1)\n\t\t\t\t\toptions.series.pie.tilt=1;\n\t\t\t\tif (options.series.pie.tilt<0)\n\t\t\t\t\toptions.series.pie.tilt=0;\n\t\t\t\n\t\t\t\t// add processData hook to do transformations on the data\n\t\t\t\tplot.hooks.processDatapoints.push(processDatapoints);\n\t\t\t\tplot.hooks.drawOverlay.push(drawOverlay);\t\n\t\t\t\t\n\t\t\t\t// add draw hook\n\t\t\t\tplot.hooks.draw.push(draw);\n\t\t\t}\n\t\t}\n\t\n\t\t// bind hoverable events\n\t\tfunction bindEvents(plot, eventHolder) \t\t\n\t\t{\t\t\n\t\t\tvar options = plot.getOptions();\n\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.hoverable)\n\t\t\t\teventHolder.unbind('mousemove').mousemove(onMouseMove);\n\t\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.clickable)\n\t\t\t\teventHolder.unbind('click').click(onClick);\n\t\t}\t\n\t\t\n\n\t\t// debugging function that prints out an object\n\t\tfunction alertObject(obj)\n\t\t{\n\t\t\tvar msg = '';\n\t\t\tfunction traverse(obj, depth)\n\t\t\t{\n\t\t\t\tif (!depth)\n\t\t\t\t\tdepth = 0;\n\t\t\t\tfor (var i = 0; i < obj.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tfor (var j=0; j<depth; j++)\n\t\t\t\t\t\tmsg += '\\t';\n\t\t\t\t\n\t\t\t\t\tif( typeof obj[i] == \"object\")\n\t\t\t\t\t{\t// its an object\n\t\t\t\t\t\tmsg += ''+i+':\\n';\n\t\t\t\t\t\ttraverse(obj[i], depth+1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\t// its a value\n\t\t\t\t\t\tmsg += ''+i+': '+obj[i]+'\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttraverse(obj);\n\t\t\talert(msg);\n\t\t}\n\t\t\n\t\tfunction calcTotal(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tvar item = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (item)\n\t\t\t\t\ttotal += item;\n\t\t\t}\n\t\t}\t\n\t\t\n\t\tfunction processDatapoints(plot, series, data, datapoints) \n\t\t{\t\n\t\t\tif (!processed)\n\t\t\t{\n\t\t\t\tprocessed = true;\n\t\t\t\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction setupPie()\n\t\t{\n\t\t\tlegendWidth = target.children().filter('.legend').children().width();\n\t\t\n\t\t\t// calculate maximum radius and center point\n\t\t\tmaxRadius =  Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2;\n\t\t\tcenterTop = (canvas.height/2)+options.series.pie.offset.top;\n\t\t\tcenterLeft = (canvas.width/2);\n\t\t\t\n\t\t\tif (options.series.pie.offset.left=='auto')\n\t\t\t\tif (options.legend.position.match('w'))\n\t\t\t\t\tcenterLeft += legendWidth/2;\n\t\t\t\telse\n\t\t\t\t\tcenterLeft -= legendWidth/2;\n\t\t\telse\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t\t\t\n\t\t\tif (centerLeft<maxRadius)\n\t\t\t\tcenterLeft = maxRadius;\n\t\t\telse if (centerLeft>canvas.width-maxRadius)\n\t\t\t\tcenterLeft = canvas.width-maxRadius;\n\t\t}\n\t\t\n\t\tfunction fixData(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tif (typeof(data[i].data)=='number')\n\t\t\t\t\tdata[i].data = [[1,data[i].data]];\n\t\t\t\telse if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined')\n\t\t\t\t{\n\t\t\t\t\tif (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined')\n\t\t\t\t\t\tdata[i].label = data[i].data.label; // fix weirdness coming from flot\n\t\t\t\t\tdata[i].data = [[1,0]];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t\t\n\t\tfunction combine(data)\n\t\t{\n\t\t\tdata = fixData(data);\n\t\t\tcalcTotal(data);\n\t\t\tvar combined = 0;\n\t\t\tvar numCombined = 0;\n\t\t\tvar color = options.series.pie.combine.color;\n\t\t\t\n\t\t\tvar newdata = [];\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\t// make sure its a number\n\t\t\t\tdata[i].data[0][1] = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (!data[i].data[0][1])\n\t\t\t\t\tdata[i].data[0][1] = 0;\n\t\t\t\t\t\n\t\t\t\tif (data[i].data[0][1]/total<=options.series.pie.combine.threshold)\n\t\t\t\t{\n\t\t\t\t\tcombined += data[i].data[0][1];\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color)\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t}\t\t\t\t\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewdata.push({\n\t\t\t\t\t\tdata: [[1,data[i].data[0][1]]], \n\t\t\t\t\t\tcolor: data[i].color, \n\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\tangle: (data[i].data[0][1]*(Math.PI*2))/total,\n\t\t\t\t\t\tpercent: (data[i].data[0][1]/total*100)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (numCombined>0)\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1,combined]], \n\t\t\t\t\tcolor: color, \n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: (combined*(Math.PI*2))/total,\n\t\t\t\t\tpercent: (combined/total*100)\n\t\t\t\t});\n\t\t\treturn newdata;\n\t\t}\t\t\n\t\t\n\t\tfunction draw(plot, newCtx)\n\t\t{\n\t\t\tif (!target) return; // if no series were passed\n\t\t\tctx = newCtx;\n\t\t\n\t\t\tsetupPie();\n\t\t\tvar slices = plot.getData();\n\t\t\n\t\t\tvar attempts = 0;\n\t\t\twhile (redraw && attempts<redrawAttempts)\n\t\t\t{\n\t\t\t\tredraw = false;\n\t\t\t\tif (attempts>0)\n\t\t\t\t\tmaxRadius *= shrink;\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt<=0.8)\n\t\t\t\t\tdrawShadow();\n\t\t\t\tdrawPie();\n\t\t\t}\n\t\t\tif (attempts >= redrawAttempts) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend('<div class=\"error\">Could not draw pie with labels contained inside canvas</div>');\n\t\t\t}\n\t\t\t\n\t\t\tif ( plot.setSeries && plot.insertLegend )\n\t\t\t{\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\t\t\t\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\t\t\t\n\t\t\tfunction clear()\n\t\t\t{\n\t\t\t\tctx.clearRect(0,0,canvas.width,canvas.height);\n\t\t\t\ttarget.children().filter('.pieLabel, .pieLabelBackground').remove();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawShadow()\n\t\t\t{\n\t\t\t\tvar shadowLeft = 5;\n\t\t\t\tvar shadowTop = 15;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = 0.02;\n\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\t\n\t\t\t\tif (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge)\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = '#000';\n\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t\n\t\t\t\t//radius -= edge;\n\t\t\t\tfor (var i=1; i<=edge; i++)\n\t\t\t\t{\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0,0,radius,0,Math.PI*2,false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawPie()\n\t\t\t{\n\t\t\t\tstartAngle = Math.PI*options.series.pie.startAngle;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\t\t\t\t\n\t\t\t\t// draw slices\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\t// draw slice outlines\n\t\t\t\tctx.save();\n\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\tctx.restore();\n\t\t\t\t\t\n\t\t\t\t// draw donut hole\n\t\t\t\tdrawDonutHole(ctx);\n\t\t\t\t\n\t\t\t\t// draw labels\n\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\tdrawLabels();\n\t\t\t\t\n\t\t\t\t// restore to original state\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\tfunction drawSlice(angle, color, fill)\n\t\t\t\t{\t\n\t\t\t\t\tif (angle<=0)\n\t\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = 'round';\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\telse if ($.browser.msie)\n\t\t\t\t\t\tangle -= 0.0001;\n\t\t\t\t\t//ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0,0,radius,currentAngle,currentAngle+angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\t\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\telse\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction drawLabels()\n\t\t\t\t{\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\t\n\t\t\t\t\t// set radius\n\t\t\t\t\tif (options.series.pie.label.radius>1)\n\t\t\t\t\t\tvar radius = options.series.pie.label.radius;\n\t\t\t\t\telse\n\t\t\t\t\t\tvar radius = maxRadius * options.series.pie.label.radius;\n\t\t\t\t\t\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold*100)\n\t\t\t\t\t\t\tdrawLabel(slices[i], currentAngle, i);\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slice.data[0][1]==0)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// format label text\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\t\t\t\t\t\tif (lf)\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\tif (plf)\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar halfAngle = ((startAngle+slice.angle) + startAngle)/2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar html = '<span class=\"pieLabel\" id=\"pieLabel'+index+'\" style=\"position:absolute;top:' + y + 'px;left:' + x + 'px;\">' + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\t\t\t\t\t\tvar label = target.children('#pieLabel'+index);\n\t\t\t\t\t\tvar labelTop = (y - label.height()/2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width()/2);\n\t\t\t\t\t\tlabel.css('top', labelTop);\n\t\t\t\t\t\tlabel.css('left', labelLeft);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\t\t\t\t\t\tif (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0)\n\t\t\t\t\t\t\tredraw = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;';\n\t\t\t\t\t\t\t$('<div class=\"pieLabelBackground\" style=\"position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity);\n\t\t\t\t\t\t}\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\t\t\n\t\t// Placed here because it needs to be accessed from multiple locations \n\t\tfunction drawDonutHole(layer)\n\t\t{\n\t\t\t// draw donut hole\n\t\t\tif(options.series.pie.innerRadius > 0)\n\t\t\t{\n\t\t\t\t// subtract the center\n\t\t\t\tlayer.save();\n\t\t\t\tinnerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t\n\t\t\t\t// add inner stroke\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\t\t\n\t\t//-- Additional Interactive related functions --\n\t\t\n\t\tfunction isPointInPoly(poly, pt)\n\t\t{\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\t\t\n\t\tfunction findNearbySlice(mouseX, mouseY)\n\t\t{\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\t\t\t\n\t\t\tfor (var i = 0; i < slices.length; ++i) \n\t\t\t{\n\t\t\t\tvar s = slices[i];\t\n\t\t\t\t\n\t\t\t\tif(s.pie.show)\n\t\t\t\t{\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX-centerLeft;\n\t\t\t\t\ty = mouseY-centerTop;\n\t\t\t\t\tif(ctx.isPointInPath)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//alert('found slice!');\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround. \n\t\t\t\t\t\tp1X = (radius * Math.cos(s.startAngle));\n\t\t\t\t\t\tp1Y = (radius * Math.sin(s.startAngle));\n\t\t\t\t\t\tp2X = (radius * Math.cos(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp2Y = (radius * Math.sin(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp3X = (radius * Math.cos(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp3Y = (radius * Math.sin(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp4X = (radius * Math.cos(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp5X = (radius * Math.cos(s.startAngle+s.angle));\n\t\t\t\t\t\tp5Y = (radius * Math.sin(s.startAngle+s.angle));\n\t\t\t\t\t\tarrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];\n\t\t\t\t\t\tarrPoint = [x,y];\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\t\t\t\t\t\tif(isPointInPoly(arrPoly, arrPoint))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plothover', e);\n\t\t}\n\t\t\n        function onClick(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plotclick', e);\n        }\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\t\tfunction triggerClickHoverEvent(eventname, e) \n\t\t{\n\t\t\tvar offset = plot.offset(),\n\t\t\t\tcanvasX = parseInt(e.pageX - offset.left),\n\t\t\t\tcanvasY =  parseInt(e.pageY - offset.top),\n\t\t\t\titem = findNearbySlice(canvasX, canvasY);\n\t\t\t\n\t\t\tif (options.grid.autoHighlight) \n\t\t\t{\n\t\t\t\t// clear auto-highlights\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t\t{\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series))\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// highlight the slice\n\t\t\tif (item) \n\t\t\t    highlight(item.series, eventname);\n\t\t\t\t\n\t\t\t// trigger any hover bind events\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [ pos, item ]);\t\n\t\t}\n\n\t\tfunction highlight(s, auto) \n\t\t{\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i == -1) \n\t\t\t{\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\telse if (!auto)\n\t\t\t\thighlights[i].auto = false;\n\t\t}\n\n\t\tfunction unhighlight(s) \n\t\t{\n\t\t\tif (s == null) \n\t\t\t{\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i != -1) \n\t\t\t{\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) \n\t\t{\n\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t{\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) \n\t\t{\n\t\t\t//alert(options.series.pie.radius);\n\t\t\tvar options = plot.getOptions();\n\t\t\t//alert(options.series.pie.radius);\n\t\t\t\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\t\t\t\n\t\t\tfor (i = 0; i < highlights.length; ++i) \n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) \n\t\t\t{\n\t\t\t\tif (series.angle < 0) return;\n\t\t\t\t\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \"+options.series.pie.highlight.opacity+\")\"; // this is temporary until we have access to parseColor\n\t\t\t\t\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\toctx.moveTo(0,0); // Center of the pie\n\t\t\t\toctx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t\t\n\t\t}\t\n\t\t\n\t} // end init (plugin body)\n\t\n\t// define pie specific options and their default values\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: 'auto',\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius:0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 'auto'\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: '#FFF',\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: 'auto',\n\t\t\t\t\tformatter: function(label, slice){\n\t\t\t\t\t\treturn '<div style=\"font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';\">'+label+'<br/>'+Math.round(slice.percent)+'%</div>';\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: 'Other'\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: '#FFF',\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.0\"\n\t});\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/flot/jquery.flot.resize.js",
    "content": "/*\nFlot plugin for automatically redrawing plots when the placeholder\nsize changes, e.g. on window resizes.\n\nIt works by listening for changes on the placeholder div (through the\njQuery resize event plugin) - if the size changes, it will redraw the\nplot.\n\nThere are no options. If you need to disable the plugin for some\nplots, you can just fix the size of their placeholders.\n*/\n\n\n/* Inline dependency: \n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k=\"setTimeout\",j=\"resize\",d=j+\"-special-event\",b=\"delay\",f=\"throttleWindow\";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);\n\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/flot/jquery.flot.stack.js",
    "content": "/*\nFlot plugin for stacking data sets, i.e. putting them on top of each\nother, for accumulative graphs.\n\nThe plugin assumes the data is sorted on x (or y if stacking\nhorizontally). For line charts, it is assumed that if a line has an\nundefined gap (from a null point), then the line above it should have\nthe same gap - insert zeros instead of \"null\" if you want another\nbehaviour. This also holds for the start and end of the chart. Note\nthat stacking a mix of positive and negative values in most instances\ndoesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to\nthe same key (which can be any number or string or just \"true\"). To\nspecify the default stack, you can set\n\n  series: {\n    stack: null or true or key (number/string)\n  }\n\nor specify it for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], stack: true }])\n  \nThe stacking order is determined by the order of the data series in\nthe array (later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding\nan offset to the y value. For line series, extra data points are\ninserted through interpolation. If there's a second y value, it's also\nadjusted (e.g for bar charts or filled areas).\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13053E3D2A0B",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t06C14E9A4A",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -9008AD2B1A63",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19072F5ECA8B",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t10853ADFA9F",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q03F7DC5A5A",
    "content": "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /divcss/admin/metro/assets/font-awesome/css/M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z\non this server.</p>\n<p>Additionally, a 404 Not Found\nerror was encountered while trying to use an ErrorDocument to handle the request.</p>\n<hr>\n<address>Apache/2.2.15 (CentOS) Server at www.js-css.cn Port 80</address>\n</body></html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 0606112A72",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-0A62DD2A40",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.03ECFC9A16",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -064148EA68",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/css/font-awesome.css",
    "content": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/davegandy\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../font/fontawesome-webfont.eot@v=3.2.1');\n  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');\n  font-weight: normal;\n  font-style: normal;\n}\n/* FONT AWESOME CORE\n * -------------------------- */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em;\n}\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  speak: none;\n}\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 1.3333333333333333em;\n}\n/* makes sure icons active on rollover in links */\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  display: inline;\n}\n/* increased font size for icon-large */\n[class^=\"icon-\"].icon-fixed-width,\n[class*=\" icon-\"].icon-fixed-width {\n  display: inline-block;\n  width: 1.1428571428571428em;\n  text-align: right;\n  padding-right: 0.2857142857142857em;\n}\n[class^=\"icon-\"].icon-fixed-width.icon-large,\n[class*=\" icon-\"].icon-fixed-width.icon-large {\n  width: 1.4285714285714286em;\n}\n.icons-ul {\n  margin-left: 2.142857142857143em;\n  list-style-type: none;\n}\n.icons-ul > li {\n  position: relative;\n}\n.icons-ul .icon-li {\n  position: absolute;\n  left: -2.142857142857143em;\n  width: 2.142857142857143em;\n  text-align: center;\n  line-height: inherit;\n}\n[class^=\"icon-\"].hide,\n[class*=\" icon-\"].hide {\n  display: none;\n}\n.icon-muted {\n  color: #eeeeee;\n}\n.icon-light {\n  color: #ffffff;\n}\n.icon-dark {\n  color: #333333;\n}\n.icon-border {\n  border: solid 1px #eeeeee;\n  padding: .2em .25em .15em;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n.icon-2x {\n  font-size: 2em;\n}\n.icon-2x.icon-border {\n  border-width: 2px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.icon-3x {\n  font-size: 3em;\n}\n.icon-3x.icon-border {\n  border-width: 3px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n}\n.icon-4x {\n  font-size: 4em;\n}\n.icon-4x.icon-border {\n  border-width: 4px;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n}\n.icon-5x {\n  font-size: 5em;\n}\n.icon-5x.icon-border {\n  border-width: 5px;\n  -webkit-border-radius: 7px;\n  -moz-border-radius: 7px;\n  border-radius: 7px;\n}\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n[class^=\"icon-\"].pull-left,\n[class*=\" icon-\"].pull-left {\n  margin-right: .3em;\n}\n[class^=\"icon-\"].pull-right,\n[class*=\" icon-\"].pull-right {\n  margin-left: .3em;\n}\n/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n/* keeps Bootstrap styles with and without icons the same */\n.btn [class^=\"icon-\"].icon-large,\n.nav [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].icon-spin,\n.nav [class^=\"icon-\"].icon-spin,\n.btn [class*=\" icon-\"].icon-spin,\n.nav [class*=\" icon-\"].icon-spin {\n  display: inline-block;\n}\n.nav-tabs [class^=\"icon-\"],\n.nav-pills [class^=\"icon-\"],\n.nav-tabs [class*=\" icon-\"],\n.nav-pills [class*=\" icon-\"],\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].pull-left.icon-2x,\n.btn [class*=\" icon-\"].pull-left.icon-2x,\n.btn [class^=\"icon-\"].pull-right.icon-2x,\n.btn [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .18em;\n}\n.btn [class^=\"icon-\"].icon-spin.icon-large,\n.btn [class*=\" icon-\"].icon-spin.icon-large {\n  line-height: .8em;\n}\n.btn.btn-small [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-small [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .25em;\n}\n.btn.btn-large [class^=\"icon-\"],\n.btn.btn-large [class*=\" icon-\"] {\n  margin-top: 0;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .05em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x {\n  margin-right: .2em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-left: .2em;\n}\n/* Fixes alignment in nav lists */\n.nav-list [class^=\"icon-\"],\n.nav-list [class*=\" icon-\"] {\n  line-height: inherit;\n}\n/* EXTRAS\n * -------------------------- */\n/* Stacked and layered icon */\n.icon-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: -35%;\n}\n.icon-stack [class^=\"icon-\"],\n.icon-stack [class*=\" icon-\"] {\n  display: block;\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  font-size: 1em;\n  line-height: inherit;\n  *line-height: 2em;\n}\n.icon-stack .icon-stack-base {\n  font-size: 2em;\n  *line-height: 1em;\n}\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\n/* Prevent stack and spinners from being taken inline when inside a link */\na .icon-stack,\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n@-moz-keyframes spin {\n  0% {\n    -moz-transform: rotate(0deg);\n  }\n  100% {\n    -moz-transform: rotate(359deg);\n  }\n}\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n  }\n}\n@-o-keyframes spin {\n  0% {\n    -o-transform: rotate(0deg);\n  }\n  100% {\n    -o-transform: rotate(359deg);\n  }\n}\n@-ms-keyframes spin {\n  0% {\n    -ms-transform: rotate(0deg);\n  }\n  100% {\n    -ms-transform: rotate(359deg);\n  }\n}\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(359deg);\n  }\n}\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n/* ensure rotation occurs inside anchor tags */\na .icon-rotate-90:before,\na .icon-rotate-180:before,\na .icon-rotate-270:before,\na .icon-flip-horizontal:before,\na .icon-flip-vertical:before {\n  display: inline-block;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.icon-glass:before {\n  content: \"\\f000\";\n}\n.icon-music:before {\n  content: \"\\f001\";\n}\n.icon-search:before {\n  content: \"\\f002\";\n}\n.icon-envelope-alt:before {\n  content: \"\\f003\";\n}\n.icon-heart:before {\n  content: \"\\f004\";\n}\n.icon-star:before {\n  content: \"\\f005\";\n}\n.icon-star-empty:before {\n  content: \"\\f006\";\n}\n.icon-user:before {\n  content: \"\\f007\";\n}\n.icon-film:before {\n  content: \"\\f008\";\n}\n.icon-th-large:before {\n  content: \"\\f009\";\n}\n.icon-th:before {\n  content: \"\\f00a\";\n}\n.icon-th-list:before {\n  content: \"\\f00b\";\n}\n.icon-ok:before {\n  content: \"\\f00c\";\n}\n.icon-remove:before {\n  content: \"\\f00d\";\n}\n.icon-zoom-in:before {\n  content: \"\\f00e\";\n}\n.icon-zoom-out:before {\n  content: \"\\f010\";\n}\n.icon-power-off:before,\n.icon-off:before {\n  content: \"\\f011\";\n}\n.icon-signal:before {\n  content: \"\\f012\";\n}\n.icon-gear:before,\n.icon-cog:before {\n  content: \"\\f013\";\n}\n.icon-trash:before {\n  content: \"\\f014\";\n}\n.icon-home:before {\n  content: \"\\f015\";\n}\n.icon-file-alt:before {\n  content: \"\\f016\";\n}\n.icon-time:before {\n  content: \"\\f017\";\n}\n.icon-road:before {\n  content: \"\\f018\";\n}\n.icon-download-alt:before {\n  content: \"\\f019\";\n}\n.icon-download:before {\n  content: \"\\f01a\";\n}\n.icon-upload:before {\n  content: \"\\f01b\";\n}\n.icon-inbox:before {\n  content: \"\\f01c\";\n}\n.icon-play-circle:before {\n  content: \"\\f01d\";\n}\n.icon-rotate-right:before,\n.icon-repeat:before {\n  content: \"\\f01e\";\n}\n.icon-refresh:before {\n  content: \"\\f021\";\n}\n.icon-list-alt:before {\n  content: \"\\f022\";\n}\n.icon-lock:before {\n  content: \"\\f023\";\n}\n.icon-flag:before {\n  content: \"\\f024\";\n}\n.icon-headphones:before {\n  content: \"\\f025\";\n}\n.icon-volume-off:before {\n  content: \"\\f026\";\n}\n.icon-volume-down:before {\n  content: \"\\f027\";\n}\n.icon-volume-up:before {\n  content: \"\\f028\";\n}\n.icon-qrcode:before {\n  content: \"\\f029\";\n}\n.icon-barcode:before {\n  content: \"\\f02a\";\n}\n.icon-tag:before {\n  content: \"\\f02b\";\n}\n.icon-tags:before {\n  content: \"\\f02c\";\n}\n.icon-book:before {\n  content: \"\\f02d\";\n}\n.icon-bookmark:before {\n  content: \"\\f02e\";\n}\n.icon-print:before {\n  content: \"\\f02f\";\n}\n.icon-camera:before {\n  content: \"\\f030\";\n}\n.icon-font:before {\n  content: \"\\f031\";\n}\n.icon-bold:before {\n  content: \"\\f032\";\n}\n.icon-italic:before {\n  content: \"\\f033\";\n}\n.icon-text-height:before {\n  content: \"\\f034\";\n}\n.icon-text-width:before {\n  content: \"\\f035\";\n}\n.icon-align-left:before {\n  content: \"\\f036\";\n}\n.icon-align-center:before {\n  content: \"\\f037\";\n}\n.icon-align-right:before {\n  content: \"\\f038\";\n}\n.icon-align-justify:before {\n  content: \"\\f039\";\n}\n.icon-list:before {\n  content: \"\\f03a\";\n}\n.icon-indent-left:before {\n  content: \"\\f03b\";\n}\n.icon-indent-right:before {\n  content: \"\\f03c\";\n}\n.icon-facetime-video:before {\n  content: \"\\f03d\";\n}\n.icon-picture:before {\n  content: \"\\f03e\";\n}\n.icon-pencil:before {\n  content: \"\\f040\";\n}\n.icon-map-marker:before {\n  content: \"\\f041\";\n}\n.icon-adjust:before {\n  content: \"\\f042\";\n}\n.icon-tint:before {\n  content: \"\\f043\";\n}\n.icon-edit:before {\n  content: \"\\f044\";\n}\n.icon-share:before {\n  content: \"\\f045\";\n}\n.icon-check:before {\n  content: \"\\f046\";\n}\n.icon-move:before {\n  content: \"\\f047\";\n}\n.icon-step-backward:before {\n  content: \"\\f048\";\n}\n.icon-fast-backward:before {\n  content: \"\\f049\";\n}\n.icon-backward:before {\n  content: \"\\f04a\";\n}\n.icon-play:before {\n  content: \"\\f04b\";\n}\n.icon-pause:before {\n  content: \"\\f04c\";\n}\n.icon-stop:before {\n  content: \"\\f04d\";\n}\n.icon-forward:before {\n  content: \"\\f04e\";\n}\n.icon-fast-forward:before {\n  content: \"\\f050\";\n}\n.icon-step-forward:before {\n  content: \"\\f051\";\n}\n.icon-eject:before {\n  content: \"\\f052\";\n}\n.icon-chevron-left:before {\n  content: \"\\f053\";\n}\n.icon-chevron-right:before {\n  content: \"\\f054\";\n}\n.icon-plus-sign:before {\n  content: \"\\f055\";\n}\n.icon-minus-sign:before {\n  content: \"\\f056\";\n}\n.icon-remove-sign:before {\n  content: \"\\f057\";\n}\n.icon-ok-sign:before {\n  content: \"\\f058\";\n}\n.icon-question-sign:before {\n  content: \"\\f059\";\n}\n.icon-info-sign:before {\n  content: \"\\f05a\";\n}\n.icon-screenshot:before {\n  content: \"\\f05b\";\n}\n.icon-remove-circle:before {\n  content: \"\\f05c\";\n}\n.icon-ok-circle:before {\n  content: \"\\f05d\";\n}\n.icon-ban-circle:before {\n  content: \"\\f05e\";\n}\n.icon-arrow-left:before {\n  content: \"\\f060\";\n}\n.icon-arrow-right:before {\n  content: \"\\f061\";\n}\n.icon-arrow-up:before {\n  content: \"\\f062\";\n}\n.icon-arrow-down:before {\n  content: \"\\f063\";\n}\n.icon-mail-forward:before,\n.icon-share-alt:before {\n  content: \"\\f064\";\n}\n.icon-resize-full:before {\n  content: \"\\f065\";\n}\n.icon-resize-small:before {\n  content: \"\\f066\";\n}\n.icon-plus:before {\n  content: \"\\f067\";\n}\n.icon-minus:before {\n  content: \"\\f068\";\n}\n.icon-asterisk:before {\n  content: \"\\f069\";\n}\n.icon-exclamation-sign:before {\n  content: \"\\f06a\";\n}\n.icon-gift:before {\n  content: \"\\f06b\";\n}\n.icon-leaf:before {\n  content: \"\\f06c\";\n}\n.icon-fire:before {\n  content: \"\\f06d\";\n}\n.icon-eye-open:before {\n  content: \"\\f06e\";\n}\n.icon-eye-close:before {\n  content: \"\\f070\";\n}\n.icon-warning-sign:before {\n  content: \"\\f071\";\n}\n.icon-plane:before {\n  content: \"\\f072\";\n}\n.icon-calendar:before {\n  content: \"\\f073\";\n}\n.icon-random:before {\n  content: \"\\f074\";\n}\n.icon-comment:before {\n  content: \"\\f075\";\n}\n.icon-magnet:before {\n  content: \"\\f076\";\n}\n.icon-chevron-up:before {\n  content: \"\\f077\";\n}\n.icon-chevron-down:before {\n  content: \"\\f078\";\n}\n.icon-retweet:before {\n  content: \"\\f079\";\n}\n.icon-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.icon-folder-close:before {\n  content: \"\\f07b\";\n}\n.icon-folder-open:before {\n  content: \"\\f07c\";\n}\n.icon-resize-vertical:before {\n  content: \"\\f07d\";\n}\n.icon-resize-horizontal:before {\n  content: \"\\f07e\";\n}\n.icon-bar-chart:before {\n  content: \"\\f080\";\n}\n.icon-twitter-sign:before {\n  content: \"\\f081\";\n}\n.icon-facebook-sign:before {\n  content: \"\\f082\";\n}\n.icon-camera-retro:before {\n  content: \"\\f083\";\n}\n.icon-key:before {\n  content: \"\\f084\";\n}\n.icon-gears:before,\n.icon-cogs:before {\n  content: \"\\f085\";\n}\n.icon-comments:before {\n  content: \"\\f086\";\n}\n.icon-thumbs-up-alt:before {\n  content: \"\\f087\";\n}\n.icon-thumbs-down-alt:before {\n  content: \"\\f088\";\n}\n.icon-star-half:before {\n  content: \"\\f089\";\n}\n.icon-heart-empty:before {\n  content: \"\\f08a\";\n}\n.icon-signout:before {\n  content: \"\\f08b\";\n}\n.icon-linkedin-sign:before {\n  content: \"\\f08c\";\n}\n.icon-pushpin:before {\n  content: \"\\f08d\";\n}\n.icon-external-link:before {\n  content: \"\\f08e\";\n}\n.icon-signin:before {\n  content: \"\\f090\";\n}\n.icon-trophy:before {\n  content: \"\\f091\";\n}\n.icon-github-sign:before {\n  content: \"\\f092\";\n}\n.icon-upload-alt:before {\n  content: \"\\f093\";\n}\n.icon-lemon:before {\n  content: \"\\f094\";\n}\n.icon-phone:before {\n  content: \"\\f095\";\n}\n.icon-unchecked:before,\n.icon-check-empty:before {\n  content: \"\\f096\";\n}\n.icon-bookmark-empty:before {\n  content: \"\\f097\";\n}\n.icon-phone-sign:before {\n  content: \"\\f098\";\n}\n.icon-twitter:before {\n  content: \"\\f099\";\n}\n.icon-facebook:before {\n  content: \"\\f09a\";\n}\n.icon-github:before {\n  content: \"\\f09b\";\n}\n.icon-unlock:before {\n  content: \"\\f09c\";\n}\n.icon-credit-card:before {\n  content: \"\\f09d\";\n}\n.icon-rss:before {\n  content: \"\\f09e\";\n}\n.icon-hdd:before {\n  content: \"\\f0a0\";\n}\n.icon-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.icon-bell:before {\n  content: \"\\f0a2\";\n}\n.icon-certificate:before {\n  content: \"\\f0a3\";\n}\n.icon-hand-right:before {\n  content: \"\\f0a4\";\n}\n.icon-hand-left:before {\n  content: \"\\f0a5\";\n}\n.icon-hand-up:before {\n  content: \"\\f0a6\";\n}\n.icon-hand-down:before {\n  content: \"\\f0a7\";\n}\n.icon-circle-arrow-left:before {\n  content: \"\\f0a8\";\n}\n.icon-circle-arrow-right:before {\n  content: \"\\f0a9\";\n}\n.icon-circle-arrow-up:before {\n  content: \"\\f0aa\";\n}\n.icon-circle-arrow-down:before {\n  content: \"\\f0ab\";\n}\n.icon-globe:before {\n  content: \"\\f0ac\";\n}\n.icon-wrench:before {\n  content: \"\\f0ad\";\n}\n.icon-tasks:before {\n  content: \"\\f0ae\";\n}\n.icon-filter:before {\n  content: \"\\f0b0\";\n}\n.icon-briefcase:before {\n  content: \"\\f0b1\";\n}\n.icon-fullscreen:before {\n  content: \"\\f0b2\";\n}\n.icon-group:before {\n  content: \"\\f0c0\";\n}\n.icon-link:before {\n  content: \"\\f0c1\";\n}\n.icon-cloud:before {\n  content: \"\\f0c2\";\n}\n.icon-beaker:before {\n  content: \"\\f0c3\";\n}\n.icon-cut:before {\n  content: \"\\f0c4\";\n}\n.icon-copy:before {\n  content: \"\\f0c5\";\n}\n.icon-paperclip:before,\n.icon-paper-clip:before {\n  content: \"\\f0c6\";\n}\n.icon-save:before {\n  content: \"\\f0c7\";\n}\n.icon-sign-blank:before {\n  content: \"\\f0c8\";\n}\n.icon-reorder:before {\n  content: \"\\f0c9\";\n}\n.icon-list-ul:before {\n  content: \"\\f0ca\";\n}\n.icon-list-ol:before {\n  content: \"\\f0cb\";\n}\n.icon-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.icon-underline:before {\n  content: \"\\f0cd\";\n}\n.icon-table:before {\n  content: \"\\f0ce\";\n}\n.icon-magic:before {\n  content: \"\\f0d0\";\n}\n.icon-truck:before {\n  content: \"\\f0d1\";\n}\n.icon-pinterest:before {\n  content: \"\\f0d2\";\n}\n.icon-pinterest-sign:before {\n  content: \"\\f0d3\";\n}\n.icon-google-plus-sign:before {\n  content: \"\\f0d4\";\n}\n.icon-google-plus:before {\n  content: \"\\f0d5\";\n}\n.icon-money:before {\n  content: \"\\f0d6\";\n}\n.icon-caret-down:before {\n  content: \"\\f0d7\";\n}\n.icon-caret-up:before {\n  content: \"\\f0d8\";\n}\n.icon-caret-left:before {\n  content: \"\\f0d9\";\n}\n.icon-caret-right:before {\n  content: \"\\f0da\";\n}\n.icon-columns:before {\n  content: \"\\f0db\";\n}\n.icon-sort:before {\n  content: \"\\f0dc\";\n}\n.icon-sort-down:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-up:before {\n  content: \"\\f0de\";\n}\n.icon-envelope:before {\n  content: \"\\f0e0\";\n}\n.icon-linkedin:before {\n  content: \"\\f0e1\";\n}\n.icon-rotate-left:before,\n.icon-undo:before {\n  content: \"\\f0e2\";\n}\n.icon-legal:before {\n  content: \"\\f0e3\";\n}\n.icon-dashboard:before {\n  content: \"\\f0e4\";\n}\n.icon-comment-alt:before {\n  content: \"\\f0e5\";\n}\n.icon-comments-alt:before {\n  content: \"\\f0e6\";\n}\n.icon-bolt:before {\n  content: \"\\f0e7\";\n}\n.icon-sitemap:before {\n  content: \"\\f0e8\";\n}\n.icon-umbrella:before {\n  content: \"\\f0e9\";\n}\n.icon-paste:before {\n  content: \"\\f0ea\";\n}\n.icon-lightbulb:before {\n  content: \"\\f0eb\";\n}\n.icon-exchange:before {\n  content: \"\\f0ec\";\n}\n.icon-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.icon-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.icon-user-md:before {\n  content: \"\\f0f0\";\n}\n.icon-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.icon-suitcase:before {\n  content: \"\\f0f2\";\n}\n.icon-bell-alt:before {\n  content: \"\\f0f3\";\n}\n.icon-coffee:before {\n  content: \"\\f0f4\";\n}\n.icon-food:before {\n  content: \"\\f0f5\";\n}\n.icon-file-text-alt:before {\n  content: \"\\f0f6\";\n}\n.icon-building:before {\n  content: \"\\f0f7\";\n}\n.icon-hospital:before {\n  content: \"\\f0f8\";\n}\n.icon-ambulance:before {\n  content: \"\\f0f9\";\n}\n.icon-medkit:before {\n  content: \"\\f0fa\";\n}\n.icon-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.icon-beer:before {\n  content: \"\\f0fc\";\n}\n.icon-h-sign:before {\n  content: \"\\f0fd\";\n}\n.icon-plus-sign-alt:before {\n  content: \"\\f0fe\";\n}\n.icon-double-angle-left:before {\n  content: \"\\f100\";\n}\n.icon-double-angle-right:before {\n  content: \"\\f101\";\n}\n.icon-double-angle-up:before {\n  content: \"\\f102\";\n}\n.icon-double-angle-down:before {\n  content: \"\\f103\";\n}\n.icon-angle-left:before {\n  content: \"\\f104\";\n}\n.icon-angle-right:before {\n  content: \"\\f105\";\n}\n.icon-angle-up:before {\n  content: \"\\f106\";\n}\n.icon-angle-down:before {\n  content: \"\\f107\";\n}\n.icon-desktop:before {\n  content: \"\\f108\";\n}\n.icon-laptop:before {\n  content: \"\\f109\";\n}\n.icon-tablet:before {\n  content: \"\\f10a\";\n}\n.icon-mobile-phone:before {\n  content: \"\\f10b\";\n}\n.icon-circle-blank:before {\n  content: \"\\f10c\";\n}\n.icon-quote-left:before {\n  content: \"\\f10d\";\n}\n.icon-quote-right:before {\n  content: \"\\f10e\";\n}\n.icon-spinner:before {\n  content: \"\\f110\";\n}\n.icon-circle:before {\n  content: \"\\f111\";\n}\n.icon-mail-reply:before,\n.icon-reply:before {\n  content: \"\\f112\";\n}\n.icon-github-alt:before {\n  content: \"\\f113\";\n}\n.icon-folder-close-alt:before {\n  content: \"\\f114\";\n}\n.icon-folder-open-alt:before {\n  content: \"\\f115\";\n}\n.icon-expand-alt:before {\n  content: \"\\f116\";\n}\n.icon-collapse-alt:before {\n  content: \"\\f117\";\n}\n.icon-smile:before {\n  content: \"\\f118\";\n}\n.icon-frown:before {\n  content: \"\\f119\";\n}\n.icon-meh:before {\n  content: \"\\f11a\";\n}\n.icon-gamepad:before {\n  content: \"\\f11b\";\n}\n.icon-keyboard:before {\n  content: \"\\f11c\";\n}\n.icon-flag-alt:before {\n  content: \"\\f11d\";\n}\n.icon-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.icon-terminal:before {\n  content: \"\\f120\";\n}\n.icon-code:before {\n  content: \"\\f121\";\n}\n.icon-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-mail-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-star-half-full:before,\n.icon-star-half-empty:before {\n  content: \"\\f123\";\n}\n.icon-location-arrow:before {\n  content: \"\\f124\";\n}\n.icon-crop:before {\n  content: \"\\f125\";\n}\n.icon-code-fork:before {\n  content: \"\\f126\";\n}\n.icon-unlink:before {\n  content: \"\\f127\";\n}\n.icon-question:before {\n  content: \"\\f128\";\n}\n.icon-info:before {\n  content: \"\\f129\";\n}\n.icon-exclamation:before {\n  content: \"\\f12a\";\n}\n.icon-superscript:before {\n  content: \"\\f12b\";\n}\n.icon-subscript:before {\n  content: \"\\f12c\";\n}\n.icon-eraser:before {\n  content: \"\\f12d\";\n}\n.icon-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.icon-microphone:before {\n  content: \"\\f130\";\n}\n.icon-microphone-off:before {\n  content: \"\\f131\";\n}\n.icon-shield:before {\n  content: \"\\f132\";\n}\n.icon-calendar-empty:before {\n  content: \"\\f133\";\n}\n.icon-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.icon-rocket:before {\n  content: \"\\f135\";\n}\n.icon-maxcdn:before {\n  content: \"\\f136\";\n}\n.icon-chevron-sign-left:before {\n  content: \"\\f137\";\n}\n.icon-chevron-sign-right:before {\n  content: \"\\f138\";\n}\n.icon-chevron-sign-up:before {\n  content: \"\\f139\";\n}\n.icon-chevron-sign-down:before {\n  content: \"\\f13a\";\n}\n.icon-html5:before {\n  content: \"\\f13b\";\n}\n.icon-css3:before {\n  content: \"\\f13c\";\n}\n.icon-anchor:before {\n  content: \"\\f13d\";\n}\n.icon-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.icon-bullseye:before {\n  content: \"\\f140\";\n}\n.icon-ellipsis-horizontal:before {\n  content: \"\\f141\";\n}\n.icon-ellipsis-vertical:before {\n  content: \"\\f142\";\n}\n.icon-rss-sign:before {\n  content: \"\\f143\";\n}\n.icon-play-sign:before {\n  content: \"\\f144\";\n}\n.icon-ticket:before {\n  content: \"\\f145\";\n}\n.icon-minus-sign-alt:before {\n  content: \"\\f146\";\n}\n.icon-check-minus:before {\n  content: \"\\f147\";\n}\n.icon-level-up:before {\n  content: \"\\f148\";\n}\n.icon-level-down:before {\n  content: \"\\f149\";\n}\n.icon-check-sign:before {\n  content: \"\\f14a\";\n}\n.icon-edit-sign:before {\n  content: \"\\f14b\";\n}\n.icon-external-link-sign:before {\n  content: \"\\f14c\";\n}\n.icon-share-sign:before {\n  content: \"\\f14d\";\n}\n.icon-compass:before {\n  content: \"\\f14e\";\n}\n.icon-collapse:before {\n  content: \"\\f150\";\n}\n.icon-collapse-top:before {\n  content: \"\\f151\";\n}\n.icon-expand:before {\n  content: \"\\f152\";\n}\n.icon-euro:before,\n.icon-eur:before {\n  content: \"\\f153\";\n}\n.icon-gbp:before {\n  content: \"\\f154\";\n}\n.icon-dollar:before,\n.icon-usd:before {\n  content: \"\\f155\";\n}\n.icon-rupee:before,\n.icon-inr:before {\n  content: \"\\f156\";\n}\n.icon-yen:before,\n.icon-jpy:before {\n  content: \"\\f157\";\n}\n.icon-renminbi:before,\n.icon-cny:before {\n  content: \"\\f158\";\n}\n.icon-won:before,\n.icon-krw:before {\n  content: \"\\f159\";\n}\n.icon-bitcoin:before,\n.icon-btc:before {\n  content: \"\\f15a\";\n}\n.icon-file:before {\n  content: \"\\f15b\";\n}\n.icon-file-text:before {\n  content: \"\\f15c\";\n}\n.icon-sort-by-alphabet:before {\n  content: \"\\f15d\";\n}\n.icon-sort-by-alphabet-alt:before {\n  content: \"\\f15e\";\n}\n.icon-sort-by-attributes:before {\n  content: \"\\f160\";\n}\n.icon-sort-by-attributes-alt:before {\n  content: \"\\f161\";\n}\n.icon-sort-by-order:before {\n  content: \"\\f162\";\n}\n.icon-sort-by-order-alt:before {\n  content: \"\\f163\";\n}\n.icon-thumbs-up:before {\n  content: \"\\f164\";\n}\n.icon-thumbs-down:before {\n  content: \"\\f165\";\n}\n.icon-youtube-sign:before {\n  content: \"\\f166\";\n}\n.icon-youtube:before {\n  content: \"\\f167\";\n}\n.icon-xing:before {\n  content: \"\\f168\";\n}\n.icon-xing-sign:before {\n  content: \"\\f169\";\n}\n.icon-youtube-play:before {\n  content: \"\\f16a\";\n}\n.icon-dropbox:before {\n  content: \"\\f16b\";\n}\n.icon-stackexchange:before {\n  content: \"\\f16c\";\n}\n.icon-instagram:before {\n  content: \"\\f16d\";\n}\n.icon-flickr:before {\n  content: \"\\f16e\";\n}\n.icon-adn:before {\n  content: \"\\f170\";\n}\n.icon-bitbucket:before {\n  content: \"\\f171\";\n}\n.icon-bitbucket-sign:before {\n  content: \"\\f172\";\n}\n.icon-tumblr:before {\n  content: \"\\f173\";\n}\n.icon-tumblr-sign:before {\n  content: \"\\f174\";\n}\n.icon-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.icon-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.icon-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.icon-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.icon-apple:before {\n  content: \"\\f179\";\n}\n.icon-windows:before {\n  content: \"\\f17a\";\n}\n.icon-android:before {\n  content: \"\\f17b\";\n}\n.icon-linux:before {\n  content: \"\\f17c\";\n}\n.icon-dribbble:before {\n  content: \"\\f17d\";\n}\n.icon-skype:before {\n  content: \"\\f17e\";\n}\n.icon-foursquare:before {\n  content: \"\\f180\";\n}\n.icon-trello:before {\n  content: \"\\f181\";\n}\n.icon-female:before {\n  content: \"\\f182\";\n}\n.icon-male:before {\n  content: \"\\f183\";\n}\n.icon-gittip:before {\n  content: \"\\f184\";\n}\n.icon-sun:before {\n  content: \"\\f185\";\n}\n.icon-moon:before {\n  content: \"\\f186\";\n}\n.icon-archive:before {\n  content: \"\\f187\";\n}\n.icon-bug:before {\n  content: \"\\f188\";\n}\n.icon-vk:before {\n  content: \"\\f189\";\n}\n.icon-weibo:before {\n  content: \"\\f18a\";\n}\n.icon-renren:before {\n  content: \"\\f18b\";\n}\n"
  },
  {
    "path": "target/mongo/assets/font-awesome/font/fontawesome-webfont.woff@v=3.2.1",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title>404</title>\n<style type=\"text/css\">\nbody{margin:0;padding:0;font:14px/1.6 Arial,Sans-serif;background:#fff url(img/body.png) repeat-x;}\na:link,a:visited{color:#007ab7;text-decoration:none;}\nh1{\n\tposition:relative;\n\tz-index:2;\n\twidth:540px;\n\theight:0;\n\tmargin:110px auto 15px;\n\tpadding:230px 0 0;\n\toverflow:hidden;\t\n\tbackground-image: url(../../../../../../images/Main.jpg);\n\tbackground-repeat: no-repeat;\n}\nh2{\n\tposition:absolute;\n\ttop:55px;\n\tleft:233px;\n\tmargin:0;\n\tfont-size:0;\n\ttext-indent:-999px;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n\tcursor:default;\n\twidth: 404px;\n\theight: 90px;\n}\nh2 em{display:block;font:italic bold 200px/120px \"Times New Roman\",Times,Serif;text-indent:0;letter-spacing:-5px;color:rgba(216,226,244,0.3);}\n.link a{margin-right:1em;}\n.link,.texts{width:540px;margin:0 auto 15px;color:#505050;}\n.texts{line-height:2;}\n.texts dd{margin:0;padding:0 0 0 15px;}\n.texts ul{margin:0;padding:0;}\n.portal{color:#505050;text-align:center;white-space:nowrap;word-spacing:0.45em;}\n.portal a:link,.portal a:visited{color:#505050;word-spacing:0;}\n.portal a:hover,.portal a:active{color:#007ab7;}\n.portal span{display:inline-block;height:38px;line-height:35px;background:url(img/portal.png) repeat-x;}\n.portal span span{padding:0 0 0 20px;background:url(img/portal.png) no-repeat 0 -40px;}\n.portal span span span{padding:0 20px 0 0;background-position:100% -80px;}\n.STYLE1 {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 65px;\n}\n</style>\n<!--[if lte IE 8]>\n<style type=\"text/css\">\nh2 em{color:#e4ebf8;}\n</style>\n<![endif]-->\n</head>\n<body>\n    <h1></h1>\n    <p class=\"link\">\n        <a href=\"../../../../../../default.htm\">返回首页</a>\n        <a href=\"javascript:history.go(-1);\">返回上一页</a>\n    </p>\n    <dl class=\"texts\">\n        <dt>我们正在联系火星总部查找您所需要的页面.请返回等待信息..</dt>\n<dd>\n            <ul>\n                <li>不要返回吗?</li>\n                <li>确定不要返回吗?</li>\n                <li>真的真的确定不要返回吗?</li>\n                <li>好吧.还是随便你要不要真的确定返回吧</li>\n            </ul>\n        </dd>\n    </dl>\n\n    </span></span></span></p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css",
    "content": "/*\n * FullCalendar v1.5.3 Stylesheet\n *\n * Copyright (c) 2011 Adam Shaw\n * Dual licensed under the MIT and GPL licenses, located in\n * MIT-LICENSE.txt and GPL-LICENSE.txt respectively.\n *\n * Date: Mon Feb 6 22:40:40 2012 -0800\n *\n */\n\n\n.fc {\n  direction: ltr;\n  text-align: left;\n  }\n  \n.fc table {\n  border-collapse: collapse;\n  border-spacing: 0;\n  }\n  \nhtml .fc,\n.fc table {\n  font-size: 1em;\n  }\n  \n.fc td,\n.fc th {\n  padding: 0;\n  vertical-align: top;\n  }\n\n\n\n/* Header\n------------------------------------------------------------------------*/\n\n.fc-header td {\n  white-space: nowrap;\n  }\n\n.fc-header-left {\n  width: 25%;\n  text-align: left;\n  }\n  \n.fc-header-center {\n  text-align: center;\n  }\n  \n.fc-header-right {\n  width: 25%;\n  text-align: right;    \n  }\n  \n.fc-header-title {\n  display: inline-block;\n  vertical-align: top;\n  }\n  \n.fc-header-title h2 {\n  margin-top: 0;\n  font-size: 16px;\n  white-space: nowrap;\n  }\n  \n.fc .fc-header-space {\n  padding-left: 10px;\n  }\n  \n.fc-header .fc-button {\n  margin-bottom: 1em;\n  vertical-align: top;\n}\n  \n/* buttons edges butting together */\n\n.fc-header .fc-button {\n  margin-right: -1px;\n  }\n  \n.fc-header .fc-corner-right {\n  margin-right: 1px; /* back to normal */\n  }\n  \n.fc-header .ui-corner-right {\n  margin-right: 0; /* back to normal */\n  }\n  \n/* button layering (for border precedence) */\n  \n.fc-header .fc-state-hover,\n.fc-header .ui-state-hover {\n  z-index: 2;\n  }\n  \n.fc-header .fc-state-down {\n  z-index: 3;\n  }\n\n.fc-header .fc-state-active,\n.fc-header .ui-state-active {\n  z-index: 4;\n  }\n  \n  \n  \n/* Content\n------------------------------------------------------------------------*/\n  \n.fc-content {\n  clear: both;\n  }\n  \n.fc-view {\n  width: 100%; /* needed for view switching (when view is absolute) */\n  overflow: hidden;\n  }\n  \n  \n\n/* Cell Styles\n------------------------------------------------------------------------*/\n\n.fc-widget-header {\n  background-image: -moz-linear-gradient(top, #fafafa, #efefef);\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef));\n    background-image: -webkit-linear-gradient(top, #fafafa, #efefef);\n    background-image: -o-linear-gradient(top, #fafafa, #efefef);\n    background-image: linear-gradient(to bottom, #fafafa, #efefef);\n  color: #646464;\n}\n\n.fc-widget-header,    /* <th>, usually */\n.fc-widget-content {  /* <td>, usually */\n  border: 1px solid #ddd;\n  color: #646464;\n}\n  \n.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */\n  background: #fff;\n  }\n  \n.fc-cell-overlay { /* semi-transparent rectangle while dragging */\n  background: #9cf;\n  opacity: .2;\n  filter: alpha(opacity=20); /* for IE */\n  }\n  \n\n\n/* Buttons\n------------------------------------------------------------------------*/\n\n.fc-button {\n  position: relative;\n  overflow: hidden;\n  display: inline-block;\n  cursor: pointer;\n  top: -52px;\n}\n\n.fc-header {\n  margin-bottom:-20px;\n}\n  \n.fc-state-default { /* non-theme */\n  border-style: solid;\n  border-width: 1px 0;\n  }\n  \n.fc-button-inner {\n  position: relative;\n  float: left;\n  overflow: hidden;\n  padding: 5px;\n  \n  }\n  \n.fc-state-default .fc-button-inner { /* non-theme */\n  border-style: solid;\n  border-width: 0 1px;\n  }\n  \n.fc-button-content {\n  position: relative;\n  float: left;\n  height: 1.9em;\n  line-height: 1.9em;\n  padding: 0 .6em;\n  white-space: nowrap;\n  }\n  \n/* icon (for jquery ui) */\n  \n.fc-button-content .fc-icon-wrap {\n  position: relative;\n  float: left;\n  top: 50%;\n  }\n  \n.fc-button-content .ui-icon {\n  position: relative;\n  float: left;\n  margin-top: -50%;\n  *margin-top: 0;\n  *top: -50%;\n  }\n  \n/* gloss effect */\n  \n.fc-state-default .fc-button-effect {\n  position: absolute;\n  top: 50%;\n  left: 0;\n  }\n  \n.fc-state-default .fc-button-effect span {\n\n  }\n  \n/* button states (determines colors)  */\n  \n.fc-state-default,\n.fc-state-default .fc-button-inner {\n  border-top-style: none;\n  border-bottom-style: none;\n  border-left-style: solid;\n  border-right-style: solid;\n  border-color: #ddd;\n  background: transparent;\n  color: #646464;\n  }\n  \n.fc-state-hover,\n.fc-state-hover .fc-button-inner {\n  border-color: #ddd;\n  background: #fafafa;\n  }\n  \n.fc-state-down,\n.fc-state-down .fc-button-inner {\n  border-color: #ddd;\n  background: transparent;\n  }\n\n.fc-state-active,\n.fc-state-active .fc-button-inner {\n    background:#FFFFFF;\n    border-bottom: 1px solid #FFFFFF;\n    border-color: #DDDDDD #DDDDDD #FFFFFF;\n    color: #646464;\n}\n  }\n  \n.fc-state-disabled,\n.fc-state-disabled .fc-button-inner {\n  color: #999;\n  border-color: #ddd;\n  }\n  \n.fc-state-disabled {\n  cursor: default;\n  }\n  \n.fc-state-disabled .fc-button-effect {\n  display: none;\n  }\n  \n  \n\n/* Global Event Styles\n------------------------------------------------------------------------*/\n   \n.fc-event {\n  border-style: solid;\n  border-width: 0;\n  font-size: .85em;\n  cursor: default;\n  }\n  \na.fc-event,\n.fc-event-draggable {\n  cursor: pointer;\n  }\n  \na.fc-event {\n  text-decoration: none;\n  }\n  \n.fc-rtl .fc-event {\n  text-align: right;\n  }\n  \n.fc-event-skin {\n  border-color: #81c4e6;     /* default BORDER color */\n  background-color: #8cccec; /* default BACKGROUND color */\n  color: #fff;               /* default TEXT color */\n  }\n  \n.fc-event-inner {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  border-style: solid;\n  border-width: 0;\n  overflow: hidden;\n  }\n  \n.fc-event-time,\n.fc-event-title {\n  padding: 0 1px;\n  }\n  \n.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/\n  display: block;\n  position: absolute;\n  z-index: 99999;\n  overflow: hidden; /* hacky spaces (IE6/7) */\n  font-size: 300%;  /* */\n  line-height: 50%; /* */\n  }\n  \n  \n  \n/* Horizontal Events\n------------------------------------------------------------------------*/\n\n.fc-event-hori {\n  border-width: 1px 0;\n  margin-bottom: 1px;\n  }\n  \n/* resizable */\n  \n.fc-event-hori .ui-resizable-e {\n  top: 0           !important; /* importants override pre jquery ui 1.7 styles */\n  right: -3px      !important;\n  width: 7px       !important;\n  height: 100%     !important;\n  cursor: e-resize;\n  }\n  \n.fc-event-hori .ui-resizable-w {\n  top: 0           !important;\n  left: -3px       !important;\n  width: 7px       !important;\n  height: 100%     !important;\n  cursor: w-resize;\n  }\n  \n.fc-event-hori .ui-resizable-handle {\n  _padding-bottom: 14px; /* IE6 had 0 height */\n  }\n  \n  \n  \n/* Fake Rounded Corners (for buttons and events)\n------------------------------------------------------------*/\n  \n.fc-corner-left {\n  margin-left: 1px;\n  }\n  \n.fc-corner-left .fc-button-inner,\n.fc-corner-left .fc-event-inner {\n  margin-left: -1px;\n  }\n  \n.fc-corner-right {\n  margin-right: 1px;\n  }\n  \n.fc-corner-right .fc-button-inner,\n.fc-corner-right .fc-event-inner {\n  margin-right: -1px;\n  }\n  \n.fc-corner-top {\n  margin-top: 1px;\n  }\n  \n.fc-corner-top .fc-event-inner {\n  margin-top: -1px;\n  }\n  \n.fc-corner-bottom {\n  margin-bottom: 1px;\n  }\n  \n.fc-corner-bottom .fc-event-inner {\n  margin-bottom: -1px;\n  }\n  \n  \n  \n/* Fake Rounded Corners SPECIFICALLY FOR EVENTS\n-----------------------------------------------------------------*/\n  \n.fc-corner-left .fc-event-inner {\n  border-left-width: 1px;\n  }\n  \n.fc-corner-right .fc-event-inner {\n  border-right-width: 1px;\n  }\n  \n.fc-corner-top .fc-event-inner {\n  border-top-width: 1px;\n  }\n  \n.fc-corner-bottom .fc-event-inner {\n  border-bottom-width: 1px;\n  }\n  \n  \n  \n/* Reusable Separate-border Table\n------------------------------------------------------------*/\n\ntable.fc-border-separate {\n  border-collapse: separate;\n\n  }\n  \n.fc-border-separate th,\n.fc-border-separate td {\n  border-width: 1px 0 0 1px;\n  }\n  \n.fc-border-separate th.fc-last,\n.fc-border-separate td.fc-last {\n  border-right-width: 1px;\n  }\n  \n.fc-border-separate tr.fc-last th,\n.fc-border-separate tr.fc-last td {\n  border-bottom-width: 1px;\n  }\n  \n.fc-border-separate tbody tr.fc-first td,\n.fc-border-separate tbody tr.fc-first th {\n  border-top-width: 0;\n  }\n  \n  \n\n/* Month View, Basic Week View, Basic Day View\n------------------------------------------------------------------------*/\n\n.fc-grid th {\n  text-align: center;\n  }\n  \n.fc-grid .fc-day-number {\n  float: right;\n  padding: 0 2px;\n  }\n  \n.fc-grid .fc-other-month .fc-day-number {\n  opacity: 0.3;\n  filter: alpha(opacity=30); /* for IE */\n  /* opacity with small font can sometimes look too faded\n     might want to set the 'color' property instead\n     making day-numbers bold also fixes the problem */\n  }\n  \n.fc-grid .fc-day-content {\n  clear: both;\n  padding: 2px 2px 1px; /* distance between events and day edges */\n  }\n  \n/* event styles */\n  \n.fc-grid .fc-event-time {\n  font-weight: bold;\n  }\n  \n/* right-to-left */\n  \n.fc-rtl .fc-grid .fc-day-number {\n  float: left;\n  }\n  \n.fc-rtl .fc-grid .fc-event-time {\n  float: right;\n  }\n  \n  \n\n/* Agenda Week View, Agenda Day View\n------------------------------------------------------------------------*/\n\n.fc-agenda table {\n  border-collapse: separate;\n  }\n  \n.fc-agenda-days th {\n  text-align: center;\n  }\n  \n.fc-agenda .fc-agenda-axis {\n  width: 50px;\n  padding: 0 4px;\n  vertical-align: middle;\n  text-align: right;\n  white-space: nowrap;\n  font-weight: normal;\n  }\n  \n.fc-agenda .fc-day-content {\n  padding: 2px 2px 1px;\n  }\n  \n/* make axis border take precedence */\n  \n.fc-agenda-days .fc-agenda-axis {\n  border-right-width: 1px;\n  }\n  \n.fc-agenda-days .fc-col0 {\n  border-left-width: 0;\n  }\n  \n/* all-day area */\n  \n.fc-agenda-allday th {\n  border-width: 0 1px;\n  }\n  \n.fc-agenda-allday .fc-day-content {\n  min-height: 34px; /* TODO: doesnt work well in quirksmode */\n  _height: 34px;\n  }\n  \n/* divider (between all-day and slots) */\n  \n.fc-agenda-divider-inner {\n  height: 2px;\n  overflow: hidden;\n  }\n  \n.fc-widget-header .fc-agenda-divider-inner {\n  background: #eee;\n  }\n  \n/* slot rows */\n  \n.fc-agenda-slots th {\n  border-width: 1px 1px;\n  }\n  \n.fc-agenda-slots td {\n  border-width: 1px 0 0;\n  background: none;\n  }\n  \n.fc-agenda-slots td div {\n  height: 20px;\n  }\n  \n.fc-agenda-slots tr.fc-slot0 th,\n.fc-agenda-slots tr.fc-slot0 td {\n  border-top-width: 0;\n  }\n\n.fc-agenda-slots tr.fc-minor th,\n.fc-agenda-slots tr.fc-minor td {\n  border-top-style: dotted;\n  }\n  \n.fc-agenda-slots tr.fc-minor th.ui-widget-header {\n  *border-top-style: solid; /* doesn't work with background in IE6/7 */\n  }\n  \n\n\n/* Vertical Events\n------------------------------------------------------------------------*/\n\n.fc-event-vert {\n  border-width: 0 1px;\n  }\n  \n.fc-event-vert .fc-event-head,\n.fc-event-vert .fc-event-content {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  overflow: hidden;\n  }\n  \n.fc-event-vert .fc-event-time {\n  white-space: nowrap;\n  font-size: 10px;\n  }\n  \n.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay  */\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background: #fff;\n  opacity: .3;\n  filter: alpha(opacity=30);\n  }\n  \n.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */\n.fc-select-helper .fc-event-bg {\n  display: none\\9; /* for IE6/7/8. nested opacity filters while dragging don't work */\n  }\n  \n/* resizable */\n  \n.fc-event-vert .ui-resizable-s {\n  bottom: 0        !important; /* importants override pre jquery ui 1.7 styles */\n  width: 100%      !important;\n  height: 8px      !important;\n  overflow: hidden !important;\n  line-height: 8px !important;\n  font-size: 11px  !important;\n  font-family: monospace;\n  text-align: center;\n  cursor: s-resize;\n  }\n  \n.fc-agenda .ui-resizable-resizing { /* TODO: better selector */\n  _overflow: hidden;\n  }\n"
  },
  {
    "path": "target/mongo/assets/gritter/css/jquery.gritter.css",
    "content": "/* the norm */\n#gritter-notice-wrapper {\n\tposition:fixed;\n\ttop:20px;\n\tright:20px;\n\twidth:301px;\n\tz-index:9999;\n}\n#gritter-notice-wrapper.top-left {\n    left: 20px;\n    right: auto;\n}\n#gritter-notice-wrapper.bottom-right {\n    top: auto;\n    left: auto;\n    bottom: 20px;\n    right: 20px;\n}\n#gritter-notice-wrapper.bottom-left {\n    top: auto;\n    right: auto;\n    bottom: 20px;\n    left: 20px;\n}\n.gritter-item-wrapper {\n\tposition:relative;\n\tmargin:0 0 10px 0;\n\tbackground:url('../images/ie-spacer.gif'); /* ie7/8 fix */ \n}\n.gritter-top {\n\tbackground:url(../images/gritter.png) no-repeat left -30px;\n\theight:10px;\n}\n.hover .gritter-top {\n\tbackground-position:right -30px;\n}\n.gritter-bottom {\n\tbackground:url(../images/gritter.png) no-repeat left bottom;\n\theight:8px;\n\tmargin:0;\n}\n.hover .gritter-bottom {\n\tbackground-position: bottom right;\n}\n.gritter-item {\n\tdisplay:block;\n\tbackground:url(../images/gritter.png) no-repeat left -40px;\n\tcolor:#eee;\n\tpadding:2px 11px 8px 11px;\n\tfont-size: 11px;\n\tfont-family:verdana;\n}\n.hover .gritter-item {\n\tbackground-position:right -40px;\n}\n.gritter-item p {\n\tpadding:0;\n\tmargin:0;\n\tword-wrap:break-word;\n}\n.gritter-close {\n\tdisplay:none;\n\tposition:absolute;\n\ttop:5px;\n\tleft:3px;\n\tbackground:url(../images/gritter.png) no-repeat left top;\n\tcursor:pointer;\n\twidth:30px;\n\theight:30px;\n}\n.gritter-title {\n\tfont-size:14px;\n\tfont-weight:bold;\n\tpadding:0 0 7px 0;\n\tdisplay:block;\n\ttext-shadow:1px 1px 0 #000; /* Not supported by IE :( */\n}\n.gritter-image {\n\twidth:48px;\n\theight:48px;\n\tfloat:left;\n}\n.gritter-with-image,\n.gritter-without-image {\n\tpadding:0;\n}\n.gritter-with-image {\n\twidth:220px;\n\tfloat:right;\n}\n/* for the light (white) version of the gritter notice */\n.gritter-light .gritter-item,\n.gritter-light .gritter-bottom,\n.gritter-light .gritter-top,\n.gritter-light .gritter-close {\n    background-image: url(../images/gritter-light.png);\n    color: #222;\n}\n.gritter-light .gritter-title {\n    text-shadow: none;\n}\n"
  },
  {
    "path": "target/mongo/assets/gritter/js/jquery.gritter.js",
    "content": "/*\n * Gritter for jQuery\n * http://www.boedesign.com/\n *\n * Copyright (c) 2012 Jordan Boesch\n * Dual licensed under the MIT and GPL licenses.\n *\n * Date: February 24, 2012\n * Version: 1.7.4\n */\n\n(function($){\n \t\n\t/**\n\t* Set it up as an object under the jQuery namespace\n\t*/\n\t$.gritter = {};\n\t\n\t/**\n\t* Set up global options that the user can over-ride\n\t*/\n\t$.gritter.options = {\n\t\tposition: '',\n\t\tclass_name: '', // could be set to 'gritter-light' to use white notifications\n\t\tfade_in_speed: 'medium', // how fast notifications fade in\n\t\tfade_out_speed: 1000, // how fast the notices fade out\n\t\ttime: 6000 // hang on the screen for...\n\t}\n\t\n\t/**\n\t* Add a gritter notification to the screen\n\t* @see Gritter#add();\n\t*/\n\t$.gritter.add = function(params){\n\n\t\ttry {\n\t\t\treturn Gritter.add(params || {});\n\t\t} catch(e) {\n\t\t\n\t\t\tvar err = 'Gritter Error: ' + e;\n\t\t\t(typeof(console) != 'undefined' && console.error) ? \n\t\t\t\tconsole.error(err, params) : \n\t\t\t\talert(err);\n\t\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t/**\n\t* Remove a gritter notification from the screen\n\t* @see Gritter#removeSpecific();\n\t*/\n\t$.gritter.remove = function(id, params){\n\t\tGritter.removeSpecific(id, params || {});\n\t}\n\t\n\t/**\n\t* Remove all notifications\n\t* @see Gritter#stop();\n\t*/\n\t$.gritter.removeAll = function(params){\n\t\tGritter.stop(params || {});\n\t}\n\t\n\t/**\n\t* Big fat Gritter object\n\t* @constructor (not really since its object literal)\n\t*/\n\tvar Gritter = {\n\t\t\n\t\t// Public - options to over-ride with $.gritter.options in \"add\"\n\t\tposition: '',\n\t\tfade_in_speed: '',\n\t\tfade_out_speed: '',\n\t\ttime: '',\n\t\t\n\t\t// Private - no touchy the private parts\n\t\t_custom_timer: 0,\n\t\t_item_count: 0,\n\t\t_is_setup: 0,\n\t\t_tpl_close: '<div class=\"gritter-close\"></div>',\n\t\t_tpl_title: '<span class=\"gritter-title\">[[title]]</span>',\n\t\t_tpl_item: '<div id=\"gritter-item-[[number]]\" class=\"gritter-item-wrapper [[item_class]]\" style=\"display:none\"><div class=\"gritter-top\"></div><div class=\"gritter-item\">[[close]][[image]]<div class=\"[[class_name]]\">[[title]]<p>[[text]]</p></div><div style=\"clear:both\"></div></div><div class=\"gritter-bottom\"></div></div>',\n\t\t_tpl_wrap: '<div id=\"gritter-notice-wrapper\"></div>',\n\t\t\n\t\t/**\n\t\t* Add a gritter notification to the screen\n\t\t* @param {Object} params The object that contains all the options for drawing the notification\n\t\t* @return {Integer} The specific numeric id to that gritter notification\n\t\t*/\n\t\tadd: function(params){\n\t\t\t// Handle straight text\n\t\t\tif(typeof(params) == 'string'){\n\t\t\t\tparams = {text:params};\n\t\t\t}\n\n\t\t\t// We might have some issues if we don't have a title or text!\n\t\t\tif(!params.text){\n\t\t\t\tthrow 'You must supply \"text\" parameter.'; \n\t\t\t}\n\t\t\t\n\t\t\t// Check the options and set them once\n\t\t\tif(!this._is_setup){\n\t\t\t\tthis._runSetup();\n\t\t\t}\n\t\t\t\n\t\t\t// Basics\n\t\t\tvar title = params.title, \n\t\t\t\ttext = params.text,\n\t\t\t\timage = params.image || '',\n\t\t\t\tsticky = params.sticky || false,\n\t\t\t\titem_class = params.class_name || $.gritter.options.class_name,\n\t\t\t\tposition = $.gritter.options.position,\n\t\t\t\ttime_alive = params.time || '';\n\n\t\t\tthis._verifyWrapper();\n\t\t\t\n\t\t\tthis._item_count++;\n\t\t\tvar number = this._item_count, \n\t\t\t\ttmp = this._tpl_item;\n\t\t\t\n\t\t\t// Assign callbacks\n\t\t\t$(['before_open', 'after_open', 'before_close', 'after_close']).each(function(i, val){\n\t\t\t\tGritter['_' + val + '_' + number] = ($.isFunction(params[val])) ? params[val] : function(){}\n\t\t\t});\n\n\t\t\t// Reset\n\t\t\tthis._custom_timer = 0;\n\t\t\t\n\t\t\t// A custom fade time set\n\t\t\tif(time_alive){\n\t\t\t\tthis._custom_timer = time_alive;\n\t\t\t}\n\t\t\t\n\t\t\tvar image_str = (image != '') ? '<img src=\"' + image + '\" class=\"gritter-image\" />' : '',\n\t\t\t\tclass_name = (image != '') ? 'gritter-with-image' : 'gritter-without-image';\n\t\t\t\n\t\t\t// String replacements on the template\n\t\t\tif(title){\n\t\t\t\ttitle = this._str_replace('[[title]]',title,this._tpl_title);\n\t\t\t}else{\n\t\t\t\ttitle = '';\n\t\t\t}\n\t\t\t\n\t\t\ttmp = this._str_replace(\n\t\t\t\t['[[title]]', '[[text]]', '[[close]]', '[[image]]', '[[number]]', '[[class_name]]', '[[item_class]]'],\n\t\t\t\t[title, text, this._tpl_close, image_str, this._item_count, class_name, item_class], tmp\n\t\t\t);\n\n\t\t\t// If it's false, don't show another gritter message\n\t\t\tif(this['_before_open_' + number]() === false){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$('#gritter-notice-wrapper').addClass(position).append(tmp);\n\t\t\t\n\t\t\tvar item = $('#gritter-item-' + this._item_count);\n\t\t\t\n\t\t\titem.fadeIn(this.fade_in_speed, function(){\n\t\t\t\tGritter['_after_open_' + number]($(this));\n\t\t\t});\n\t\t\t\n\t\t\tif(!sticky){\n\t\t\t\tthis._setFadeTimer(item, number);\n\t\t\t}\n\t\t\t\n\t\t\t// Bind the hover/unhover states\n\t\t\t$(item).bind('mouseenter mouseleave', function(event){\n\t\t\t\tif(event.type == 'mouseenter'){\n\t\t\t\t\tif(!sticky){ \n\t\t\t\t\t\tGritter._restoreItemIfFading($(this), number);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(!sticky){\n\t\t\t\t\t\tGritter._setFadeTimer($(this), number);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tGritter._hoverState($(this), event.type);\n\t\t\t});\n\t\t\t\n\t\t\t// Clicking (X) makes the perdy thing close\n\t\t\t$(item).find('.gritter-close').click(function(){\n\t\t\t\tGritter.removeSpecific(number, {}, null, true);\n\t\t\t});\n\t\t\t\n\t\t\treturn number;\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* If we don't have any more gritter notifications, get rid of the wrapper using this check\n\t\t* @private\n\t\t* @param {Integer} unique_id The ID of the element that was just deleted, use it for a callback\n\t\t* @param {Object} e The jQuery element that we're going to perform the remove() action on\n\t\t* @param {Boolean} manual_close Did we close the gritter dialog with the (X) button\n\t\t*/\n\t\t_countRemoveWrapper: function(unique_id, e, manual_close){\n\t\t\t\n\t\t\t// Remove it then run the callback function\n\t\t\te.remove();\n\t\t\tthis['_after_close_' + unique_id](e, manual_close);\n\t\t\t\n\t\t\t// Check if the wrapper is empty, if it is.. remove the wrapper\n\t\t\tif($('.gritter-item-wrapper').length == 0){\n\t\t\t\t$('#gritter-notice-wrapper').remove();\n\t\t\t}\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Fade out an element after it's been on the screen for x amount of time\n\t\t* @private\n\t\t* @param {Object} e The jQuery element to get rid of\n\t\t* @param {Integer} unique_id The id of the element to remove\n\t\t* @param {Object} params An optional list of params to set fade speeds etc.\n\t\t* @param {Boolean} unbind_events Unbind the mouseenter/mouseleave events if they click (X)\n\t\t*/\n\t\t_fade: function(e, unique_id, params, unbind_events){\n\n\t\t\tvar params = params || {},\n\t\t\t\tfade = (typeof(params.fade) != 'undefined') ? params.fade : true,\n\t\t\t\tfade_out_speed = params.speed || this.fade_out_speed,\n\t\t\t\tmanual_close = unbind_events;\n\n\t\t\tthis['_before_close_' + unique_id](e, manual_close);\n\t\t\t\n\t\t\t// If this is true, then we are coming from clicking the (X)\n\t\t\tif(unbind_events){\n\t\t\t\te.unbind('mouseenter mouseleave');\n\t\t\t}\n\t\t\t\n\t\t\t// Fade it out or remove it\n\t\t\tif(fade){\n\t\t\t\n\t\t\t\te.animate({\n\t\t\t\t\topacity: 0\n\t\t\t\t}, fade_out_speed, function(){\n\t\t\t\t\te.animate({ height: 0 }, 300, function(){\n\t\t\t\t\t\tGritter._countRemoveWrapper(unique_id, e, manual_close);\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t\n\t\t\t}\n\t\t\telse {\n\t\t\t\t\n\t\t\t\tthis._countRemoveWrapper(unique_id, e);\n\t\t\t\t\n\t\t\t}\n\t\t\t\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Perform actions based on the type of bind (mouseenter, mouseleave) \n\t\t* @private\n\t\t* @param {Object} e The jQuery element\n\t\t* @param {String} type The type of action we're performing: mouseenter or mouseleave\n\t\t*/\n\t\t_hoverState: function(e, type){\n\t\t\t\n\t\t\t// Change the border styles and add the (X) close button when you hover\n\t\t\tif(type == 'mouseenter'){\n\t\t\t\t\n\t\t\t\te.addClass('hover');\n\t\t\t\t\n\t\t\t\t// Show close button\n\t\t\t\te.find('.gritter-close').show();\n\t\t\t\t\t\t\n\t\t\t}\n\t\t\t// Remove the border styles and hide (X) close button when you mouse out\n\t\t\telse {\n\t\t\t\t\n\t\t\t\te.removeClass('hover');\n\t\t\t\t\n\t\t\t\t// Hide close button\n\t\t\t\te.find('.gritter-close').hide();\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Remove a specific notification based on an ID\n\t\t* @param {Integer} unique_id The ID used to delete a specific notification\n\t\t* @param {Object} params A set of options passed in to determine how to get rid of it\n\t\t* @param {Object} e The jQuery element that we're \"fading\" then removing\n\t\t* @param {Boolean} unbind_events If we clicked on the (X) we set this to true to unbind mouseenter/mouseleave\n\t\t*/\n\t\tremoveSpecific: function(unique_id, params, e, unbind_events){\n\t\t\t\n\t\t\tif(!e){\n\t\t\t\tvar e = $('#gritter-item-' + unique_id);\n\t\t\t}\n\n\t\t\t// We set the fourth param to let the _fade function know to \n\t\t\t// unbind the \"mouseleave\" event.  Once you click (X) there's no going back!\n\t\t\tthis._fade(e, unique_id, params || {}, unbind_events);\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* If the item is fading out and we hover over it, restore it!\n\t\t* @private\n\t\t* @param {Object} e The HTML element to remove\n\t\t* @param {Integer} unique_id The ID of the element\n\t\t*/\n\t\t_restoreItemIfFading: function(e, unique_id){\n\t\t\t\n\t\t\tclearTimeout(this['_int_id_' + unique_id]);\n\t\t\te.stop().css({ opacity: '', height: '' });\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Setup the global options - only once\n\t\t* @private\n\t\t*/\n\t\t_runSetup: function(){\n\t\t\n\t\t\tfor(opt in $.gritter.options){\n\t\t\t\tthis[opt] = $.gritter.options[opt];\n\t\t\t}\n\t\t\tthis._is_setup = 1;\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Set the notification to fade out after a certain amount of time\n\t\t* @private\n\t\t* @param {Object} item The HTML element we're dealing with\n\t\t* @param {Integer} unique_id The ID of the element\n\t\t*/\n\t\t_setFadeTimer: function(e, unique_id){\n\t\t\t\n\t\t\tvar timer_str = (this._custom_timer) ? this._custom_timer : this.time;\n\t\t\tthis['_int_id_' + unique_id] = setTimeout(function(){ \n\t\t\t\tGritter._fade(e, unique_id);\n\t\t\t}, timer_str);\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* Bring everything to a halt\n\t\t* @param {Object} params A list of callback functions to pass when all notifications are removed\n\t\t*/  \n\t\tstop: function(params){\n\t\t\t\n\t\t\t// callbacks (if passed)\n\t\t\tvar before_close = ($.isFunction(params.before_close)) ? params.before_close : function(){};\n\t\t\tvar after_close = ($.isFunction(params.after_close)) ? params.after_close : function(){};\n\t\t\t\n\t\t\tvar wrap = $('#gritter-notice-wrapper');\n\t\t\tbefore_close(wrap);\n\t\t\twrap.fadeOut(function(){\n\t\t\t\t$(this).remove();\n\t\t\t\tafter_close();\n\t\t\t});\n\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* An extremely handy PHP function ported to JS, works well for templating\n\t\t* @private\n\t\t* @param {String/Array} search A list of things to search for\n\t\t* @param {String/Array} replace A list of things to replace the searches with\n\t\t* @return {String} sa The output\n\t\t*/  \n\t\t_str_replace: function(search, replace, subject, count){\n\t\t\n\t\t\tvar i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,\n\t\t\t\tf = [].concat(search),\n\t\t\t\tr = [].concat(replace),\n\t\t\t\ts = subject,\n\t\t\t\tra = r instanceof Array, sa = s instanceof Array;\n\t\t\ts = [].concat(s);\n\t\t\t\n\t\t\tif(count){\n\t\t\t\tthis.window[count] = 0;\n\t\t\t}\n\t\t\n\t\t\tfor(i = 0, sl = s.length; i < sl; i++){\n\t\t\t\t\n\t\t\t\tif(s[i] === ''){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (j = 0, fl = f.length; j < fl; j++){\n\t\t\t\t\t\n\t\t\t\t\ttemp = s[i] + '';\n\t\t\t\t\trepl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];\n\t\t\t\t\ts[i] = (temp).split(f[j]).join(repl);\n\t\t\t\t\t\n\t\t\t\t\tif(count && s[i] !== temp){\n\t\t\t\t\t\tthis.window[count] += (temp.length-s[i].length) / f[j].length;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn sa ? s : s[0];\n\t\t\t\n\t\t},\n\t\t\n\t\t/**\n\t\t* A check to make sure we have something to wrap our notices with\n\t\t* @private\n\t\t*/  \n\t\t_verifyWrapper: function(){\n\t\t  \n\t\t\tif($('#gritter-notice-wrapper').length == 0){\n\t\t\t\t$('body').append(this._tpl_wrap);\n\t\t\t}\n\t\t\n\t\t}\n\t\t\n\t}\n\t\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.css",
    "content": ".easyPieChart {\n    position: relative;\n    text-align: center;\n}\n\n.easyPieChart canvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n}\n"
  },
  {
    "path": "target/mongo/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.js",
    "content": "// Generated by CoffeeScript 1.4.0\n\n/*\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n*/\n\n\n(function() {\n\n  (function($) {\n    $.easyPieChart = function(el, options) {\n      var addScaleLine, animateLine, drawLine, easeInOutQuad, renderBackground, renderScale, renderTrack,\n        _this = this;\n      this.el = el;\n      this.$el = $(el);\n      this.$el.data(\"easyPieChart\", this);\n      this.init = function() {\n        var percent;\n        _this.options = $.extend({}, $.easyPieChart.defaultOptions, options);\n        percent = parseInt(_this.$el.data('percent'), 10);\n        _this.percentage = 0;\n        _this.canvas = $(\"<canvas width='\" + _this.options.size + \"' height='\" + _this.options.size + \"'></canvas>\").get(0);\n        _this.$el.append(_this.canvas);\n        if (typeof G_vmlCanvasManager !== \"undefined\" && G_vmlCanvasManager !== null) {\n          G_vmlCanvasManager.initElement(_this.canvas);\n        }\n        _this.ctx = _this.canvas.getContext('2d');\n        if (window.devicePixelRatio > 1.5) {\n          $(_this.canvas).css({\n            width: _this.options.size,\n            height: _this.options.size\n          });\n          _this.canvas.width *= 2;\n          _this.canvas.height *= 2;\n          _this.ctx.scale(2, 2);\n        }\n        _this.ctx.translate(_this.options.size / 2, _this.options.size / 2);\n        _this.$el.addClass('easyPieChart');\n        _this.$el.css({\n          width: _this.options.size,\n          height: _this.options.size,\n          lineHeight: \"\" + _this.options.size + \"px\"\n        });\n        _this.update(percent);\n        return _this;\n      };\n      this.update = function(percent) {\n        if (_this.options.animate === false) {\n          return drawLine(percent);\n        } else {\n          return animateLine(_this.percentage, percent);\n        }\n      };\n      renderScale = function() {\n        var i, _i, _results;\n        _this.ctx.fillStyle = _this.options.scaleColor;\n        _this.ctx.lineWidth = 1;\n        _results = [];\n        for (i = _i = 0; _i <= 24; i = ++_i) {\n          _results.push(addScaleLine(i));\n        }\n        return _results;\n      };\n      addScaleLine = function(i) {\n        var offset;\n        offset = i % 6 === 0 ? 0 : _this.options.size * 0.017;\n        _this.ctx.save();\n        _this.ctx.rotate(i * Math.PI / 12);\n        _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1);\n        return _this.ctx.restore();\n      };\n      renderTrack = function() {\n        var offset;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true);\n        _this.ctx.closePath();\n        _this.ctx.strokeStyle = _this.options.trackColor;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        return _this.ctx.stroke();\n      };\n      renderBackground = function() {\n        if (_this.options.scaleColor !== false) {\n          renderScale();\n        }\n        if (_this.options.trackColor !== false) {\n          return renderTrack();\n        }\n      };\n      drawLine = function(percent) {\n        var offset;\n        renderBackground();\n        _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor;\n        _this.ctx.lineCap = _this.options.lineCap;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.save();\n        _this.ctx.rotate(-Math.PI / 2);\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false);\n        _this.ctx.stroke();\n        return _this.ctx.restore();\n      };\n      animateLine = function(from, to) {\n        var currentStep, fps, steps;\n        fps = 30;\n        steps = fps * _this.options.animate / 1000;\n        currentStep = 0;\n        _this.options.onStart.call(_this);\n        _this.percentage = to;\n        if (_this.animation) {\n          clearInterval(_this.animation);\n          _this.animation = false;\n        }\n        return _this.animation = setInterval(function() {\n          _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size);\n          renderBackground.call(_this);\n          drawLine.call(_this, [easeInOutQuad(currentStep, from, to - from, steps)]);\n          currentStep++;\n          if ((currentStep / steps) > 1) {\n            clearInterval(_this.animation);\n            _this.animation = false;\n            return _this.options.onStop.call(_this);\n          }\n        }, 1000 / fps);\n      };\n      easeInOutQuad = function(t, b, c, d) {\n        var easeIn, easing;\n        easeIn = function(t) {\n          return Math.pow(t, 2);\n        };\n        easing = function(t) {\n          if (t < 1) {\n            return easeIn(t);\n          } else {\n            return 2 - easeIn((t / 2) * -2 + 2);\n          }\n        };\n        t /= d / 2;\n        return c / 2 * easing(t) + b;\n      };\n      return this.init();\n    };\n    $.easyPieChart.defaultOptions = {\n      barColor: '#ef1e25',\n      trackColor: '#f2f2f2',\n      scaleColor: '#dfe0e0',\n      lineCap: 'round',\n      size: 110,\n      lineWidth: 3,\n      animate: false,\n      onStart: $.noop,\n      onStop: $.noop\n    };\n    $.fn.easyPieChart = function(options) {\n      return $.each(this, function(i, el) {\n        var $el;\n        $el = $(el);\n        if (!$el.data('easyPieChart')) {\n          return $el.data('easyPieChart', new $.easyPieChart(el, options));\n        }\n      });\n    };\n    return void 0;\n  })(jQuery);\n\n}).call(this);\n"
  },
  {
    "path": "target/mongo/assets/jquery-tags-input/jquery.tagsinput.css",
    "content": "div.tagsinput { border:1px solid #CCC; background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto;}\ndiv.tagsinput span.tag { border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica;  font-size:13px;}\ndiv.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px;  } \ndiv.tagsinput input { width:80px; margin:0px; font-family: helvetica; font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px;  margin-right:5px; margin-bottom:5px; }\ndiv.tagsinput div { display:block; float: left; } \n.tags_clear { clear: both; width: 100%; height: 0px; }\n.not_valid {background: #FBD8DB !important; color: #90111A !important;}\n"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/data/jquery.vmap.sampledata.js",
    "content": "var sample_data = {\"af\":\"16.63\",\"al\":\"11.58\",\"dz\":\"158.97\",\"ao\":\"85.81\",\"ag\":\"1.1\",\"ar\":\"351.02\",\"am\":\"8.83\",\"au\":\"1219.72\",\"at\":\"366.26\",\"az\":\"52.17\",\"bs\":\"7.54\",\"bh\":\"21.73\",\"bd\":\"105.4\",\"bb\":\"3.96\",\"by\":\"52.89\",\"be\":\"461.33\",\"bz\":\"1.43\",\"bj\":\"6.49\",\"bt\":\"1.4\",\"bo\":\"19.18\",\"ba\":\"16.2\",\"bw\":\"12.5\",\"br\":\"2023.53\",\"bn\":\"11.96\",\"bg\":\"44.84\",\"bf\":\"8.67\",\"bi\":\"1.47\",\"kh\":\"11.36\",\"cm\":\"21.88\",\"ca\":\"1563.66\",\"cv\":\"1.57\",\"cf\":\"2.11\",\"td\":\"7.59\",\"cl\":\"199.18\",\"cn\":\"5745.13\",\"co\":\"283.11\",\"km\":\"0.56\",\"cd\":\"12.6\",\"cg\":\"11.88\",\"cr\":\"35.02\",\"ci\":\"22.38\",\"hr\":\"59.92\",\"cy\":\"22.75\",\"cz\":\"195.23\",\"dk\":\"304.56\",\"dj\":\"1.14\",\"dm\":\"0.38\",\"do\":\"50.87\",\"ec\":\"61.49\",\"eg\":\"216.83\",\"sv\":\"21.8\",\"gq\":\"14.55\",\"er\":\"2.25\",\"ee\":\"19.22\",\"et\":\"30.94\",\"fj\":\"3.15\",\"fi\":\"231.98\",\"fr\":\"2555.44\",\"ga\":\"12.56\",\"gm\":\"1.04\",\"ge\":\"11.23\",\"de\":\"3305.9\",\"gh\":\"18.06\",\"gr\":\"305.01\",\"gd\":\"0.65\",\"gt\":\"40.77\",\"gn\":\"4.34\",\"gw\":\"0.83\",\"gy\":\"2.2\",\"ht\":\"6.5\",\"hn\":\"15.34\",\"hk\":\"226.49\",\"hu\":\"132.28\",\"is\":\"12.77\",\"in\":\"1430.02\",\"id\":\"695.06\",\"ir\":\"337.9\",\"iq\":\"84.14\",\"ie\":\"204.14\",\"il\":\"201.25\",\"it\":\"2036.69\",\"jm\":\"13.74\",\"jp\":\"5390.9\",\"jo\":\"27.13\",\"kz\":\"129.76\",\"ke\":\"32.42\",\"ki\":\"0.15\",\"kr\":\"986.26\",\"undefined\":\"5.73\",\"kw\":\"117.32\",\"kg\":\"4.44\",\"la\":\"6.34\",\"lv\":\"23.39\",\"lb\":\"39.15\",\"ls\":\"1.8\",\"lr\":\"0.98\",\"ly\":\"77.91\",\"lt\":\"35.73\",\"lu\":\"52.43\",\"mk\":\"9.58\",\"mg\":\"8.33\",\"mw\":\"5.04\",\"my\":\"218.95\",\"mv\":\"1.43\",\"ml\":\"9.08\",\"mt\":\"7.8\",\"mr\":\"3.49\",\"mu\":\"9.43\",\"mx\":\"1004.04\",\"md\":\"5.36\",\"mn\":\"5.81\",\"me\":\"3.88\",\"ma\":\"91.7\",\"mz\":\"10.21\",\"mm\":\"35.65\",\"na\":\"11.45\",\"np\":\"15.11\",\"nl\":\"770.31\",\"nz\":\"138\",\"ni\":\"6.38\",\"ne\":\"5.6\",\"ng\":\"206.66\",\"no\":\"413.51\",\"om\":\"53.78\",\"pk\":\"174.79\",\"pa\":\"27.2\",\"pg\":\"8.81\",\"py\":\"17.17\",\"pe\":\"153.55\",\"ph\":\"189.06\",\"pl\":\"438.88\",\"pt\":\"223.7\",\"qa\":\"126.52\",\"ro\":\"158.39\",\"ru\":\"1476.91\",\"rw\":\"5.69\",\"ws\":\"0.55\",\"st\":\"0.19\",\"sa\":\"434.44\",\"sn\":\"12.66\",\"rs\":\"38.92\",\"sc\":\"0.92\",\"sl\":\"1.9\",\"sg\":\"217.38\",\"sk\":\"86.26\",\"si\":\"46.44\",\"sb\":\"0.67\",\"za\":\"354.41\",\"es\":\"1374.78\",\"lk\":\"48.24\",\"kn\":\"0.56\",\"lc\":\"1\",\"vc\":\"0.58\",\"sd\":\"65.93\",\"sr\":\"3.3\",\"sz\":\"3.17\",\"se\":\"444.59\",\"ch\":\"522.44\",\"sy\":\"59.63\",\"tw\":\"426.98\",\"tj\":\"5.58\",\"tz\":\"22.43\",\"th\":\"312.61\",\"tl\":\"0.62\",\"tg\":\"3.07\",\"to\":\"0.3\",\"tt\":\"21.2\",\"tn\":\"43.86\",\"tr\":\"729.05\",\"tm\":0,\"ug\":\"17.12\",\"ua\":\"136.56\",\"ae\":\"239.65\",\"gb\":\"2258.57\",\"us\":\"14624.18\",\"uy\":\"40.71\",\"uz\":\"37.72\",\"vu\":\"0.72\",\"ve\":\"285.21\",\"vn\":\"101.99\",\"ye\":\"30.02\",\"zm\":\"15.69\",\"zw\":\"5.57\"};"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/jquery.vmap.js",
    "content": "/*!\n * jQVMap Version 1.0\n *\n * http://jqvmap.com\n *\n * Copyright 2012, Peter Schmalfeldt <manifestinteractive@gmail.com>\n * Copyright 2011-2012, Kirill Lebedev\n * Licensed under the MIT license.\n *\n * Fork Me @ https://github.com/manifestinteractive/jqvmap\n */\n(function ($) {\n\n  var apiParams = {\n    colors: 1,\n    values: 1,\n    backgroundColor: 1,\n    scaleColors: 1,\n    normalizeFunction: 1,\n    enableZoom: 1,\n    showTooltip: 1,\n    borderColor: 1,\n    borderWidth: 1,\n    borderOpacity: 1,\n    selectedRegions: 1,\n    multiSelectRegion: 1\n  };\n\n  var apiEvents = {\n    onLabelShow: 'labelShow',\n    onRegionOver: 'regionMouseOver',\n    onRegionOut: 'regionMouseOut',\n    onRegionClick: 'regionClick',\n    onRegionSelect: 'regionSelect',\n    onRegionDeselect: 'regionDeselect'\n  };\n\n  $.fn.vectorMap = function (options) {\n\n    var defaultParams = {\n      map: 'world_en',\n      backgroundColor: '#a5bfdd',\n      color: '#f4f3f0',\n      hoverColor: '#c9dfaf',\n      selectedColor: '#c9dfaf',\n      scaleColors: ['#b6d6ff', '#005ace'],\n      normalizeFunction: 'linear',\n      enableZoom: true,\n      showTooltip: true,\n      borderColor: '#818181',\n      borderWidth: 1,\n      borderOpacity: 0.25,\n      selectedRegions: null,\n      multiSelectRegion: false\n    }, map = this.data('mapObject');\n\n    if (options === 'addMap') {\n      WorldMap.maps[arguments[1]] = arguments[2];\n    } else if (options === 'set' && apiParams[arguments[1]]) {\n      map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));\n    } else if (typeof options === 'string' &&\n               typeof map[options] === 'function') {\n      return map[options].apply(map, Array.prototype.slice.call(arguments, 1));\n    } else {\n      $.extend(defaultParams, options);\n      defaultParams.container = this;\n      this.css({ position: 'relative', overflow: 'hidden' });\n\n      map = new WorldMap(defaultParams);\n\n      this.data('mapObject', map);\n\n      for (var e in apiEvents) {\n        if (defaultParams[e]) {\n          this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);\n        }\n      }\n    }\n  };\n\n  var VectorCanvas = function (width, height, params) {\n    this.mode = window.SVGAngle ? 'svg' : 'vml';\n    this.params = params;\n\n    if (this.mode == 'svg') {\n      this.createSvgNode = function (nodeName) {\n        return document.createElementNS(this.svgns, nodeName);\n      };\n    } else {\n      try {\n        if (!document.namespaces.rvml) {\n          document.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n        }\n        this.createVmlNode = function (tagName) {\n          return document.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n        };\n      } catch (e) {\n        this.createVmlNode = function (tagName) {\n          return document.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n        };\n      }\n\n      document.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n    }\n\n    if (this.mode == 'svg') {\n      this.canvas = this.createSvgNode('svg');\n    } else {\n      this.canvas = this.createVmlNode('group');\n      this.canvas.style.position = 'absolute';\n    }\n\n    this.setSize(width, height);\n  };\n\n  VectorCanvas.prototype = {\n    svgns: \"http://www.w3.org/2000/svg\",\n    mode: 'svg',\n    width: 0,\n    height: 0,\n    canvas: null,\n\n    setSize: function (width, height) {\n      if (this.mode == 'svg') {\n        this.canvas.setAttribute('width', width);\n        this.canvas.setAttribute('height', height);\n      } else {\n        this.canvas.style.width = width + \"px\";\n        this.canvas.style.height = height + \"px\";\n        this.canvas.coordsize = width + ' ' + height;\n        this.canvas.coordorigin = \"0 0\";\n        if (this.rootGroup) {\n          var pathes = this.rootGroup.getElementsByTagName('shape');\n          for (var i = 0, l = pathes.length; i < l; i++) {\n            pathes[i].coordsize = width + ' ' + height;\n            pathes[i].style.width = width + 'px';\n            pathes[i].style.height = height + 'px';\n          }\n          this.rootGroup.coordsize = width + ' ' + height;\n          this.rootGroup.style.width = width + 'px';\n          this.rootGroup.style.height = height + 'px';\n        }\n      }\n      this.width = width;\n      this.height = height;\n    },\n\n    createPath: function (config) {\n      var node;\n      if (this.mode == 'svg') {\n        node = this.createSvgNode('path');\n        node.setAttribute('d', config.path);\n\n        if (this.params.borderColor !== null) {\n          node.setAttribute('stroke', this.params.borderColor);\n        }\n        if (this.params.borderWidth > 0) {\n          node.setAttribute('stroke-width', this.params.borderWidth);\n          node.setAttribute('stroke-linecap', 'round');\n          node.setAttribute('stroke-linejoin', 'round');\n        }\n        if (this.params.borderOpacity > 0) {\n          node.setAttribute('stroke-opacity', this.params.borderOpacity);\n        }\n\n        node.setFill = function (color) {\n          this.setAttribute(\"fill\", color);\n          if (this.getAttribute(\"original\") === null) {\n            this.setAttribute(\"original\", color);\n          }\n        };\n\n        node.getFill = function (color) {\n          return this.getAttribute(\"fill\");\n        };\n\n        node.getOriginalFill = function () {\n          return this.getAttribute(\"original\");\n        };\n\n        node.setOpacity = function (opacity) {\n          this.setAttribute('fill-opacity', opacity);\n        };\n      } else {\n        node = this.createVmlNode('shape');\n        node.coordorigin = \"0 0\";\n        node.coordsize = this.width + ' ' + this.height;\n        node.style.width = this.width + 'px';\n        node.style.height = this.height + 'px';\n        node.fillcolor = WorldMap.defaultFillColor;\n        node.stroked = false;\n        node.path = VectorCanvas.pathSvgToVml(config.path);\n\n        var scale = this.createVmlNode('skew');\n        scale.on = true;\n        scale.matrix = '0.01,0,0,0.01,0,0';\n        scale.offset = '0,0';\n\n        node.appendChild(scale);\n\n        var fill = this.createVmlNode('fill');\n        node.appendChild(fill);\n\n        node.setFill = function (color) {\n          this.getElementsByTagName('fill')[0].color = color;\n          if (this.getAttribute(\"original\") === null) {\n            this.setAttribute(\"original\", color);\n          }\n        };\n\n        node.getFill = function (color) {\n          return this.getElementsByTagName('fill')[0].color;\n        };\n        node.getOriginalFill = function () {\n          return this.getAttribute(\"original\");\n        };\n        node.setOpacity = function (opacity) {\n          this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%';\n        };\n      }\n      return node;\n    },\n\n    createGroup: function (isRoot) {\n      var node;\n      if (this.mode == 'svg') {\n        node = this.createSvgNode('g');\n      } else {\n        node = this.createVmlNode('group');\n        node.style.width = this.width + 'px';\n        node.style.height = this.height + 'px';\n        node.style.left = '0px';\n        node.style.top = '0px';\n        node.coordorigin = \"0 0\";\n        node.coordsize = this.width + ' ' + this.height;\n      }\n\n      if (isRoot) {\n        this.rootGroup = node;\n      }\n      return node;\n    },\n\n    applyTransformParams: function (scale, transX, transY) {\n      if (this.mode == 'svg') {\n        this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')');\n      } else {\n        this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY);\n        this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale;\n      }\n    }\n  };\n\n  VectorCanvas.pathSvgToVml = function (path) {\n    var result = '';\n    var cx = 0, cy = 0, ctrlx, ctrly;\n\n    return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\\d+)?(?:\\.\\d+)?,?\\s?)+)/g, function (segment, letter, coords, index) {\n      coords = coords.replace(/(\\d)-/g, '$1,-').replace(/\\s+/g, ',').split(',');\n      if (!coords[0]) {\n        coords.shift();\n      }\n\n      for (var i = 0, l = coords.length; i < l; i++) {\n        coords[i] = Math.round(100 * coords[i]);\n      }\n\n      switch (letter) {\n      case 'm':\n        cx += coords[0];\n        cy += coords[1];\n        return 't' + coords.join(',');\n        break;\n\n      case 'M':\n        cx = coords[0];\n        cy = coords[1];\n        return 'm' + coords.join(',');\n        break;\n\n      case 'l':\n        cx += coords[0];\n        cy += coords[1];\n        return 'r' + coords.join(',');\n        break;\n\n      case 'L':\n        cx = coords[0];\n        cy = coords[1];\n        return 'l' + coords.join(',');\n        break;\n\n      case 'h':\n        cx += coords[0];\n        return 'r' + coords[0] + ',0';\n        break;\n\n      case 'H':\n        cx = coords[0];\n        return 'l' + cx + ',' + cy;\n        break;\n\n      case 'v':\n        cy += coords[0];\n        return 'r0,' + coords[0];\n        break;\n\n      case 'V':\n        cy = coords[0];\n        return 'l' + cx + ',' + cy;\n        break;\n\n      case 'c':\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n        break;\n\n      case 'C':\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n        break;\n\n      case 's':\n        coords.unshift(cy - ctrly);\n        coords.unshift(cx - ctrlx);\n        ctrlx = cx + coords[coords.length - 4];\n        ctrly = cy + coords[coords.length - 3];\n        cx += coords[coords.length - 2];\n        cy += coords[coords.length - 1];\n        return 'v' + coords.join(',');\n        break;\n\n      case 'S':\n        coords.unshift(cy + cy - ctrly);\n        coords.unshift(cx + cx - ctrlx);\n        ctrlx = coords[coords.length - 4];\n        ctrly = coords[coords.length - 3];\n        cx = coords[coords.length - 2];\n        cy = coords[coords.length - 1];\n        return 'c' + coords.join(',');\n        break;\n\n      default:\n        return false;\n        break;\n      }\n\n      return '';\n\n    }).replace(/z/g, '');\n  };\n\n  var WorldMap = function (params) {\n    params = params || {};\n    var map = this;\n    var mapData = WorldMap.maps[params.map];\n\n    this.selectedRegions = [];\n    this.multiSelectRegion = params.multiSelectRegion;\n\n    this.container = params.container;\n\n    this.defaultWidth = mapData.width;\n    this.defaultHeight = mapData.height;\n\n    this.color = params.color;\n    this.selectedColor = params.selectedColor;\n    this.hoverColor = params.hoverColor;\n    this.hoverOpacity = params.hoverOpacity;\n    this.setBackgroundColor(params.backgroundColor);\n\n    this.width = params.container.width();\n    this.height = params.container.height();\n\n    this.resize();\n\n    jQuery(window).resize(function () {\n      map.width = params.container.width();\n      map.height = params.container.height();\n      map.resize();\n      map.canvas.setSize(map.width, map.height);\n      map.applyTransform();\n    });\n\n    this.canvas = new VectorCanvas(this.width, this.height, params);\n    params.container.append(this.canvas.canvas);\n\n    this.makeDraggable();\n\n    this.rootGroup = this.canvas.createGroup(true);\n\n    this.index = WorldMap.mapIndex;\n    this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body'));\n\n    if (params.enableZoom) {\n      jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container);\n      jQuery('<div/>').addClass('jqvmap-zoomout').html('&#x2212;').appendTo(params.container);\n    }\n\n    map.countries = [];\n\n    for (var key in mapData.pathes) {\n      var path = this.canvas.createPath({\n        path: mapData.pathes[key].path\n      });\n\n      path.setFill(this.color);\n      path.id = map.getCountryId(key);\n      map.countries[key] = path;\n\n      if (this.canvas.mode == 'svg') {\n        path.setAttribute('class', 'jvectormap-region');\n      } else {\n        jQuery(path).addClass('jvectormap-region');\n      }\n\n      jQuery(this.rootGroup).append(path);\n    }\n\n    jQuery(params.container).delegate(this.canvas.mode == 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) {\n      var path = e.target,\n      code = e.target.id.split('_').pop(),\n      labelShowEvent = $.Event('labelShow.jqvmap'),\n      regionMouseOverEvent = $.Event('regionMouseOver.jqvmap');\n\n      if (e.type == 'mouseover') {\n        jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.pathes[code].name]);\n        if (!regionMouseOverEvent.isDefaultPrevented()) {\n          map.highlight(code, path);\n        }\n        if (params.showTooltip) {\n          map.label.text(mapData.pathes[code].name);\n          jQuery(params.container).trigger(labelShowEvent, [map.label, code]);\n\n          if (!labelShowEvent.isDefaultPrevented()) {\n            map.label.show();\n            map.labelWidth = map.label.width();\n            map.labelHeight = map.label.height();\n          }\n        }\n      } else {\n        map.unhighlight(code, path);\n\n        map.label.hide();\n        jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.pathes[code].name]);\n      }\n    });\n\n    jQuery(params.container).delegate(this.canvas.mode == 'svg' ? 'path' : 'shape', 'click', function (e) {\n      if (!params.multiSelectRegion) {\n        for (var key in mapData.pathes) {\n          map.countries[key].currentFillColor = map.countries[key].getOriginalFill();\n          map.countries[key].setFill(map.countries[key].getOriginalFill());\n        }\n      }\n\n      var path = e.target;\n      var code = e.target.id.split('_').pop();\n\n      jQuery(params.container).trigger('regionClick.jqvmap', [code, mapData.pathes[code].name]);\n\n      if (map.selectedRegions.indexOf(code) !== -1) {\n        map.deselect(code, path);\n      } else {\n        map.select(code, path);\n      }\n\n      //console.log(selectedRegions);\n\n    });\n\n    if (params.showTooltip) {\n      params.container.mousemove(function (e) {\n        if (map.label.is(':visible')) {\n          map.label.css({\n            left: e.pageX - 15 - map.labelWidth,\n            top: e.pageY - 15 - map.labelHeight\n          });\n        }\n      });\n    }\n\n    this.setColors(params.colors);\n\n    this.canvas.canvas.appendChild(this.rootGroup);\n\n    this.applyTransform();\n\n    this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax);\n\n    if (params.values) {\n      this.values = params.values;\n      this.setValues(params.values);\n    }\n\n    if (params.selectedRegions) {\n      if (params.selectedRegions instanceof Array) {\n        for(var k in params.selectedRegions) {\n          this.select(params.selectedRegions[k].toLowerCase());\n        }\n      } else {\n        this.select(params.selectedRegions.toLowerCase());\n      }\n    }\n\n    this.bindZoomButtons();\n\n    WorldMap.mapIndex++;\n  };\n\n  WorldMap.prototype = {\n    transX: 0,\n    transY: 0,\n    scale: 1,\n    baseTransX: 0,\n    baseTransY: 0,\n    baseScale: 1,\n    width: 0,\n    height: 0,\n    countries: {},\n    countriesColors: {},\n    countriesData: {},\n    zoomStep: 1.4,\n    zoomMaxStep: 4,\n    zoomCurStep: 1,\n\n    setColors: function (key, color) {\n      if (typeof key == 'string') {\n        this.countries[key].setFill(color);\n        this.countries[key].setAttribute(\"original\", color);\n      } else {\n        var colors = key;\n\n        for (var code in colors) {\n          if (this.countries[code]) {\n            this.countries[code].setFill(colors[code]);\n            this.countries[code].setAttribute(\"original\", colors[code]);\n          }\n        }\n      }\n    },\n\n    setValues: function (values) {\n      var max = 0,\n      min = Number.MAX_VALUE,\n      val;\n\n      for (var cc in values) {\n        val = parseFloat(values[cc]);\n        if (val > max) {\n          max = values[cc];\n        }\n        if (val && val < min) {\n          min = val;\n        }\n      }\n\n      this.colorScale.setMin(min);\n      this.colorScale.setMax(max);\n\n      var colors = {};\n      for (cc in values) {\n        val = parseFloat(values[cc]);\n        if (val) {\n          colors[cc] = this.colorScale.getColor(val);\n        } else {\n          colors[cc] = this.color;\n        }\n      }\n      this.setColors(colors);\n      this.values = values;\n    },\n\n    setBackgroundColor: function (backgroundColor) {\n      this.container.css('background-color', backgroundColor);\n    },\n\n    setScaleColors: function (colors) {\n      this.colorScale.setColors(colors);\n\n      if (this.values) {\n        this.setValues(this.values);\n      }\n    },\n\n    setNormalizeFunction: function (f) {\n      this.colorScale.setNormalizeFunction(f);\n\n      if (this.values) {\n        this.setValues(this.values);\n      }\n    },\n\n    highlight: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if (this.hoverOpacity) {\n        path.setOpacity(this.hoverOpacity);\n      } else if (this.hoverColor) {\n        path.currentFillColor = path.getFill() + '';\n        path.setFill(this.hoverColor);\n      }\n    },\n\n    unhighlight: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      path.setOpacity(1);\n      if (path.currentFillColor) {\n        path.setFill(path.currentFillColor);\n      }\n    },\n\n    select: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if(this.selectedRegions.indexOf(cc) < 0) {\n        if (this.multiSelectRegion) {\n          this.selectedRegions.push(cc);\n        } else {\n          this.selectedRegions = [cc];\n        }\n        // MUST BE after the change of selectedRegions\n        // Otherwise, we might loop\n        $(this.container).trigger('regionSelect.jqvmap', [cc]);\n        if (this.selectedColor) {\n          path.currentFillColor = this.selectedColor;\n          path.setFill(this.selectedColor);\n        }\n      }\n    },\n\n    deselect: function (cc, path) {\n      path = path || $('#' + this.getCountryId(cc))[0];\n      if(this.selectedRegions.indexOf(cc) >= 0) {\n        this.selectedRegions.splice(this.selectedRegions.indexOf(cc), 1);\n        // MUST BE after the change of selectedRegions\n        // Otherwise, we might loop\n        $(this.container).trigger('regionDeselect.jqvmap', [cc]);\n        path.currentFillColor = path.getOriginalFill();\n        path.setFill(path.getOriginalFill());\n      }\n    },\n\n    isSelected: function(cc) {\n      return this.selectedRegions.indexOf(cc) >= 0;\n    },\n\n    resize: function () {\n      var curBaseScale = this.baseScale;\n      if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n        this.baseScale = this.height / this.defaultHeight;\n        this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n      } else {\n        this.baseScale = this.width / this.defaultWidth;\n        this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n      }\n      this.scale *= this.baseScale / curBaseScale;\n      this.transX *= this.baseScale / curBaseScale;\n      this.transY *= this.baseScale / curBaseScale;\n    },\n\n    reset: function () {\n      this.countryTitle.reset();\n      for (var key in this.countries) {\n        this.countries[key].setFill(WorldMap.defaultColor);\n      }\n      this.scale = this.baseScale;\n      this.transX = this.baseTransX;\n      this.transY = this.baseTransY;\n      this.applyTransform();\n    },\n\n    applyTransform: function () {\n      var maxTransX, maxTransY, minTransX, minTransY;\n      if (this.defaultWidth * this.scale <= this.width) {\n        maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n        minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n      } else {\n        maxTransX = 0;\n        minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n      }\n\n      if (this.defaultHeight * this.scale <= this.height) {\n        maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n        minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n      } else {\n        maxTransY = 0;\n        minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n      }\n\n      if (this.transY > maxTransY) {\n        this.transY = maxTransY;\n      }\n      else if (this.transY < minTransY) {\n        this.transY = minTransY;\n      }\n      if (this.transX > maxTransX) {\n        this.transX = maxTransX;\n      }\n      else if (this.transX < minTransX) {\n        this.transX = minTransX;\n      }\n\n      this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n    },\n\n    makeDraggable: function () {\n      var mouseDown = false;\n      var oldPageX, oldPageY;\n      var self = this;\n\n      self.isMoving = false;\n      self.isMovingTimeout = false;\n\n      this.container.mousemove(function (e) {\n\n        if (mouseDown) {\n          var curTransX = self.transX;\n          var curTransY = self.transY;\n\n          self.transX -= (oldPageX - e.pageX) / self.scale;\n          self.transY -= (oldPageY - e.pageY) / self.scale;\n\n          self.applyTransform();\n\n          oldPageX = e.pageX;\n          oldPageY = e.pageY;\n\n          self.isMoving = true;\n          if (self.isMovingTimeout) {\n            clearTimeout(self.isMovingTimeout);\n          }\n        }\n\n        return false;\n\n      }).mousedown(function (e) {\n\n        mouseDown = true;\n        oldPageX = e.pageX;\n        oldPageY = e.pageY;\n\n        return false;\n\n      }).mouseup(function () {\n\n        mouseDown = false;\n\n        self.isMovingTimeout = setTimeout(function () {\n          self.isMoving = false;\n        }, 100);\n\n        return false;\n\n      });\n    },\n\n    bindZoomButtons: function () {\n      var map = this;\n      var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep);\n\n      this.container.find('.jqvmap-zoomin').click(function () {\n        if (map.zoomCurStep < map.zoomMaxStep) {\n          var curTransX = map.transX;\n          var curTransY = map.transY;\n          var curScale = map.scale;\n\n          map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2;\n          map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2;\n          map.setScale(map.scale * map.zoomStep);\n          map.zoomCurStep++;\n\n          jQuery('#zoomSlider').css('top', parseInt(jQuery('#zoomSlider').css('top'), 10) - sliderDelta);\n        }\n      });\n\n      this.container.find('.jqvmap-zoomout').click(function () {\n        if (map.zoomCurStep > 1) {\n          var curTransX = map.transX;\n          var curTransY = map.transY;\n          var curScale = map.scale;\n\n          map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2;\n          map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2;\n          map.setScale(map.scale / map.zoomStep);\n          map.zoomCurStep--;\n\n          jQuery('#zoomSlider').css('top', parseInt(jQuery('#zoomSlider').css('top'), 10) + sliderDelta);\n        }\n      });\n    },\n\n    setScale: function (scale) {\n      this.scale = scale;\n      this.applyTransform();\n    },\n\n    getCountryId: function (cc) {\n      return 'jqvmap' + this.index + '_' + cc;\n    }\n  };\n\n  WorldMap.xlink = \"http://www.w3.org/1999/xlink\";\n  WorldMap.mapIndex = 1;\n  WorldMap.maps = {};\n\n  var ColorScale = function (colors, normalizeFunction, minValue, maxValue) {\n    if (colors) {\n      this.setColors(colors);\n    }\n    if (normalizeFunction) {\n      this.setNormalizeFunction(normalizeFunction);\n    }\n    if (minValue) {\n      this.setMin(minValue);\n    }\n    if (minValue) {\n      this.setMax(maxValue);\n    }\n  };\n\n  ColorScale.prototype = {\n    colors: [],\n\n    setMin: function (min) {\n      this.clearMinValue = min;\n\n      if (typeof this.normalize === 'function') {\n        this.minValue = this.normalize(min);\n      } else {\n        this.minValue = min;\n      }\n    },\n\n    setMax: function (max) {\n      this.clearMaxValue = max;\n      if (typeof this.normalize === 'function') {\n        this.maxValue = this.normalize(max);\n      } else {\n        this.maxValue = max;\n      }\n    },\n\n    setColors: function (colors) {\n      for (var i = 0; i < colors.length; i++) {\n        colors[i] = ColorScale.rgbToArray(colors[i]);\n      }\n      this.colors = colors;\n    },\n\n    setNormalizeFunction: function (f) {\n      if (f === 'polynomial') {\n        this.normalize = function (value) {\n          return Math.pow(value, 0.2);\n        };\n      }\n      else if (f === 'linear') {\n        delete this.normalize;\n      } else {\n        this.normalize = f;\n      }\n      this.setMin(this.clearMinValue);\n      this.setMax(this.clearMaxValue);\n    },\n\n    getColor: function (value) {\n      if (typeof this.normalize === 'function') {\n        value = this.normalize(value);\n      }\n\n      var lengthes = [];\n      var fullLength = 0;\n      var l;\n\n      for (var i = 0; i < this.colors.length - 1; i++) {\n        l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i]));\n        lengthes.push(l);\n        fullLength += l;\n      }\n\n      var c = (this.maxValue - this.minValue) / fullLength;\n\n      for (i = 0; i < lengthes.length; i++) {\n        lengthes[i] *= c;\n      }\n\n      i = 0;\n      value -= this.minValue;\n\n      while (value - lengthes[i] >= 0) {\n        value -= lengthes[i];\n        i++;\n      }\n\n      var color;\n      if (i == this.colors.length - 1) {\n        color = this.vectorToNum(this.colors[i]).toString(16);\n      } else {\n        color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16);\n      }\n\n      while (color.length < 6) {\n        color = '0' + color;\n      }\n      return '#' + color;\n    },\n\n    vectorToNum: function (vector) {\n      var num = 0;\n      for (var i = 0; i < vector.length; i++) {\n        num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);\n      }\n      return num;\n    },\n\n    vectorSubtract: function (vector1, vector2) {\n      var vector = [];\n      for (var i = 0; i < vector1.length; i++) {\n        vector[i] = vector1[i] - vector2[i];\n      }\n      return vector;\n    },\n\n    vectorAdd: function (vector1, vector2) {\n      var vector = [];\n      for (var i = 0; i < vector1.length; i++) {\n        vector[i] = vector1[i] + vector2[i];\n      }\n      return vector;\n    },\n\n    vectorMult: function (vector, num) {\n      var result = [];\n      for (var i = 0; i < vector.length; i++) {\n        result[i] = vector[i] * num;\n      }\n      return result;\n    },\n\n    vectorLength: function (vector) {\n      var result = 0;\n      for (var i = 0; i < vector.length; i++) {\n        result += vector[i] * vector[i];\n      }\n      return Math.sqrt(result);\n    }\n  };\n\n  ColorScale.arrayToRgb = function (ar) {\n    var rgb = '#';\n    var d;\n    for (var i = 0; i < ar.length; i++) {\n      d = ar[i].toString(16);\n      rgb += d.length == 1 ? '0' + d : d;\n    }\n    return rgb;\n  };\n\n  ColorScale.rgbToArray = function (rgb) {\n    rgb = rgb.substr(1);\n    return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n  };\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/jqvmap.css",
    "content": "/*!\n * jQVMap Version 1.0 \n *\n * http://jqvmap.com\n *\n * Copyright 2012, Peter Schmalfeldt <manifestinteractive@gmail.com>\n * Licensed under the MIT license.\n *\n * Fork Me @ https://github.com/manifestinteractive/jqvmap\n */\n.jqvmap-label\n{\n\tposition: absolute;\n\tdisplay: none;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tbackground: #292929;\n\tcolor: white;\n\tfont-family: sans-serif, Verdana;\n\tfont-size: smaller;\n\tpadding: 3px;\n}\n.jqvmap-zoomin, .jqvmap-zoomout\n{\n\tposition: absolute;\n\tleft: 10px;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tbackground: #000000;\n\tpadding: 3px;\n\tcolor: white;\n\twidth: 10px;\n\theight: 10px;\n\tcursor: pointer;\n\tline-height: 10px;\n\ttext-align: center;\n}\n.jqvmap-zoomin\n{\n\ttop: 10px;\n}\n.jqvmap-zoomout\n{\n\ttop: 30px;\n}\n.jqvmap-region\n{\n  cursor: pointer;\n}\n.jqvmap-ajax_response\n{\n  width: 100%;\n  height: 500px;\n}"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.europe.js",
    "content": "/** Add Europe Map Data Points */\njQuery.fn.vectorMap('addMap', 'europe_en', {\"width\":680,\"height\":520,\"pathes\":{\"gl\":{\"path\":\"M13.47,93.57C12.35,92.52 12.34,90 10.44,89.14 10.62,88.14 13.84,87.66 11.35,86.39 10.05,87.17 9.25,86.92 8.71,87.58 6.27,88.12 8.6,85.09 6.17,85.17 5.23,84.47 10.33,84.75 9.98,83.14 11.32,83.4 14.67,82.04 12.37,81.03 11.23,81.19 6.54,82.06 10.06,81.32 13.04,80.64 9.92,76.6 8.71,79.05 9.24,77.06 11.03,78.05 12.88,77.78 14.68,74.59 9.38,77.17 8.23,75.54 7.26,73.61 12.43,77.09 11.48,74.6c2.44,-0.76 -0.97,1.23 1.21,1.43 1,0.07 3.06,0.24 1.26,-0.8C15.39,74.51 14.27,73.05 14.04,72.76 16.26,70.08 9.73,69.39 11.65,72.54 9.43,70.77 7.4,69.72 5.62,68.37 4.84,67.27 3.62,65.14 5.75,64.54 6.27,63.17 3.83,63.23 6.08,62.64 8.52,60.62 3.8,58.38 3.79,56.87 4.78,56.07 3.39,53.57 4.92,55.82c2,1.48 -1.5,0.05 -0.41,1.67 0.7,1.18 4.94,4.58 4.09,1.22C7.96,57.37 6.11,57.21 8.09,56.47 5.75,56.14 4.83,52.58 8.11,53.61c1.58,0.65 2.17,-1 2.13,-1.24 1.86,-0.56 0.99,-3.89 0.14,-5.02 -2.29,-0.92 1.59,-2.34 -1.23,-2.91 0.6,-3.73 4.98,-2.29 7.51,-3.37 2.78,-1.33 -1.33,-1.73 -1.69,-3.06 -3.07,-1.99 2.8,-0.5 3.28,-2.76 2.87,0.22 -2.67,-2.82 -1.49,-3.84 1.34,0.59 4.57,3.1 4.27,-0.2C20.58,29.48 17.09,31.14 17.33,29.6c1.78,1.02 0.79,-3.69 2.33,-1.12 1.76,1.21 4.05,-0.81 1.11,-1.21 -0.72,-0.16 1.96,-1.91 2.18,-0.31 2.04,0.89 2.39,3.26 4.86,3.29 1.12,-1.58 -2.89,-2.38 -0.16,-2.31 1.35,-1.83 -5.03,-0.94 -1.14,-2.29 1.39,-1.55 1.81,4.29 2.64,1.36 -0.57,-1.39 -0.41,-4.67 1.53,-2.59 0.16,2.02 -2.74,3.73 -1.03,6.23 2.7,1.13 0.11,-4.85 3.69,-4.25 2.74,-0.7 0.37,-3.01 -1.39,-3.16 0.93,-1.59 -0.48,-0.52 -0.91,-1.1 -1.26,0.42 -2.63,-0.27 -1.15,-1.19 -0.81,-1.9 -3.85,0.74 -5.54,0.53 -3.44,0.64 1.14,-2.76 2.36,-3.3 2.28,-0.77 4.66,2.97 6.55,0.04C34.81,17.14 33.04,17.79 32.17,17.97 30.61,18.81 30.38,17.32 30.54,16.77 29.14,17.79 26.4,16.27 29.42,16.34 29.89,14.12 31.85,14.39 33.58,13.44c0.27,-2.21 -3.96,0.03 -1.92,-1.94 2.34,1.37 5.29,0.49 7.37,1.6 0.49,1.25 2.93,3.07 2.07,0.58C40.16,10.86 37.07,10.79 34.89,10.94 32.01,10.71 38.39,8.92 36.45,6.69 35.49,6.8 33.31,6.65 34.75,5.53c1.74,0.57 3.45,1.31 2.13,3.63 0.97,-0.77 3.6,0.14 4.92,-0.01C42.62,6.51 37.36,8.29 39.31,5.97 39.94,4.69 35.39,5.71 36.07,3.41c2.18,-0.52 6.21,0.1 8.48,1.64 1.78,-0.72 2.84,-0.23 4.07,0.55 1.73,-0.23 3.46,0.06 2.78,2.25C52.75,9.86 54.51,8.35 52.72,6.73 52.71,4.07 54.56,10.07 55.78,8.98 56.01,5.87 52.57,4.02 49.87,3.57 48.45,2.66 43.96,4.29 45.02,2.48 44.96,1.07 43.75,0.16 45.71,1.28 47.56,3.52 50.55,-0.47 53.01,0.78 55.13,-0.05 52.02,4.62 54.57,4.07 55.09,3.62 56.43,7.62 57.26,5.53 57.36,3.28 54.5,4.61 54.71,2.93 54.66,0.68 56.28,0.89 57.93,0.78 59.1,1.36 57.92,5.72 60.98,5.64 61.74,4.33 57.63,0.17 61.09,2.11 61.53,3.09 65.18,3.43 63.42,2.17 61.88,1.53 60.02,-0.12 62.69,1.24c1.18,0.74 1.27,-0.27 2.37,-0.09 0.49,-0.8 2.06,-0.17 3.01,-0.37 45.89,0 91.78,0 137.67,0 0.61,1.21 1.15,3.04 -0.24,1.09 -2.48,-0.7 1.23,2.94 1.58,3.94 1.63,2.86 -1.86,0.67 -3.36,1.88 1.28,-1.72 -2.26,-4.24 -1.57,-1.36 0.03,2.25 1.64,3.73 3.68,2.39 1.03,0.77 -1.42,2.8 -1.62,3.53 -3.09,0.12 0.02,1.62 1.04,2.22 0.66,2.09 4.04,0.64 2.3,3.22 -1.05,1.95 -3.92,1.82 -3.21,-0.86 0.14,-3.28 -4.67,-1.36 -4.04,-5.02 -2.02,-0.71 -0.18,3.84 -2.96,2.48 -0.73,0.74 0.41,1.75 -1.42,1.32 -2.61,0.54 1.71,4.84 -0.38,4.25 -1.39,0.66 -1.21,4.72 0.33,2.08 -0.04,-1.13 1.18,-4.09 2.39,-2.05 0.43,1.69 3.14,3.16 0.34,3.59 0.86,3.33 -3.29,2.48 -4.22,0.42 -0.56,1.42 -4.92,2.25 -4.96,-1.01 -1.09,-1.09 -0.61,-6.28 0.38,-2.79 -0.38,2.15 4.88,3.94 3.74,1.34 -3.75,0.99 -2.13,-7.24 -6.06,-4.79 -0.93,1.3 -1.66,1.94 -1.57,-0.09 0.87,-1.48 -0.65,-6.36 -1.62,-2.76 -0.29,1.71 1.87,5.7 -1.38,4.23 -1.61,0.79 -3.43,1.95 -3.68,-0.56 -1.68,-1 0.16,-4.48 -2.68,-3.04 -0.67,1.11 2.68,6.25 0.02,3.71 -0.94,-1.89 -3.02,-1.6 -4.56,-0.77 1.83,0.09 2.37,0.85 0.57,2.18 0.59,2.05 2.81,-2.2 3.66,0.12 1.38,0.4 3.13,-0.11 3.81,2.17 2.43,3.24 -2.95,0.83 -4.01,1.04 -0.05,-1.82 -4.79,-3.3 -3.23,-1.13 1.49,0.95 1.71,0.82 0.15,1.51 -1.1,2.37 1.53,3.48 2.9,1.87 3.12,-1.53 5.02,4.79 1.15,3.53 -2.62,-0.97 -1.48,2.05 -3.89,2.7 -0.43,2.18 2.56,-0.04 2.88,-0.79 2.47,-0.74 2.4,2.46 3.26,3.28 -2.41,2.08 2.06,1.61 0.72,3.86 0.87,0.94 2.37,2.01 0.05,2.28 -2.05,0.35 -0.86,2.02 0.59,1.45 -1.67,-0.11 -1.69,1.85 -1.36,2.27 -1.73,0.52 -2.08,4.37 -0.55,3.78 -0.25,-2.23 4.33,-2.23 2.08,-0.24 -2.82,-0.46 -0.7,2.99 -3.43,2.2 2.08,0.81 0.22,1 -1.03,1.19 -1.32,0.16 3.49,1.1 1.39,1.26 -1.9,0.07 -0.29,1.99 -2.31,1.42 1.18,0.54 1.34,1.84 1.35,2.8 -2.18,2.04 -4.44,-0.74 -2.18,-2.64 1.63,-0.69 0.76,-4.19 -0.17,-2.1 -0.64,2.71 -4.66,4.66 -4.98,0.68 -0.13,-3.43 1.98,-6.57 2.12,-10.01 -0.26,-1.47 -2.38,-1.12 -1.92,-3.26 0.2,-2.67 -2.43,-4.09 -3.97,-4.66 0.54,-2.82 0.04,-5.39 -1.15,-7.72 0.49,-2.96 -3.2,-2.36 -2.3,0.29 0.39,1.99 2.16,3.98 1.82,5.79 -0.98,-1.18 -4.72,-2.37 -4.53,0.09 1.53,0.74 4.96,0.32 3.23,3.09 -0.36,0.92 2.65,-0.97 2.92,1.14 1.39,1.16 4.2,3.13 1.09,4.33 -2.3,0.81 -7.78,0.76 -7.23,-2.79 1.56,-1.72 -2.19,-2.27 -1.32,0.16 -1.72,-2.55 -3.53,-0.09 -1.9,1.66 -2.13,2.01 -4.41,0.62 -6.81,0.57 -2.19,2.71 4.76,1.16 2.08,3.05 0.58,1.9 4.08,1.91 5.81,2.83 1.96,1.43 -0.47,2.15 -1.35,0.46 -1.82,-1.08 -3.45,2.21 -4.74,-0.62 -0.64,-2.28 -4.68,1.1 -2.47,0.81 1.98,0.42 2.27,5.38 5.07,2.98 1.84,-3.35 3.57,2.14 6.26,0.44 1.29,-0.17 2.13,-0.02 0.67,0.65 1.09,1.24 2.33,0.17 2.6,1.96 1.19,2.8 4.25,5.41 6.32,6.4 -0.65,1.36 -3.26,-1.74 -3.14,1.07 -0.24,-1.71 -1.8,-0.78 -1.41,0.45 -1.2,-0.78 -1.84,-2.07 -1.82,0.08 -0.39,2.77 -2.92,-1.74 -2.76,-0.46 0.55,1.51 -0.55,2.28 -0.85,0.45 -2.38,-1.66 -2.14,3.66 -3.7,0.79 -1.88,-0.98 -0.85,3.28 -2.38,0.99 -2,-0.69 -1.48,2.95 -3.73,1.98 -1.43,0.57 -1.73,-1.87 -2.48,0.33 -1.28,0.15 -2.02,-1.77 -3.67,-0.49 -1.51,-0.59 -3.89,-0.69 -5.18,-1.79 -1.83,0.4 -3.94,-2.71 -4.99,0.05 -1.52,0.2 0.6,-5.44 -2.51,-2.84 -0.5,1.46 -2.44,2.79 -1.46,0.41 -0.04,-2.08 -3.47,-2.35 -1.81,-0.01 -0.33,2.95 -2.47,-1.46 -3.31,-2.22 2.66,-0.66 -1.9,-3.4 0.58,-4.85 0.98,-1.25 -0.43,-3.9 -1.29,-1.57 -2.2,1.2 0.59,4.8 -2.3,3.1 0.07,1.58 0.73,2.33 -0.49,2.37 -0.31,3.19 -2.4,-0.77 -3.7,1.08 -1.26,-0.57 -3.86,-0.58 -3.24,0.73 -1.86,1.54 -5.17,-0.4 -5.06,3.18 -2.02,-0.95 -3.43,1.13 -4.24,1.49 -0.67,-0.74 -1.24,2.48 -2,1.23 2.12,-2.45 -2.15,-1.8 -1.8,0.58 -2.16,1.39 -3.92,0.18 -2.08,-1.7 -1.67,0.05 -3.09,2.47 -2.5,-0.4 -0.88,-2.96 -1.92,-0.22 -2,1.13 -1.96,-0.26 -4.27,2.16 -3.76,-0.97 -0.78,-1.12 -2.93,1.49 -3.4,-0.02 1.83,-0.91 0.7,-3.4 -0.63,-1.07 -0.78,1.04 -1.78,1.59 -1.04,-0.05 -2.35,-3.54 3.85,-1.66 4.59,-3.73 -0.17,-1.96 -2.75,-5.32 -4.26,-2.64 1.79,0.66 -1.44,2.8 -2.07,2.43 -1.51,-3.02 -4.63,-0.57 -2.13,1.56 0.17,1.83 -2.38,1.81 -1.85,-0.14 -1.36,-2.38 -2.64,3.42 -2.69,-0.09 0.92,-1.47 0.05,-4.47 -1.39,-1.81 0.69,-2.4 -1.59,-1.67 -2.42,-0.69 -1.63,-2.6 -2.81,-0.08 -1.32,1.39 -0.12,2.09 -5.82,3.27 -3.43,0.33 -0.7,-1.39 -2.14,-1.09 -2.9,-2.54 -1.31,0.12 -1.87,1.12 -2.63,1.96 -0.18,2.43 -0.75,4.74 -2.05,6.98 -0.56,-1.99 -3.06,-1.81 -4.45,-3.2 -2.37,1.32 0.55,4.85 0.85,5.51 -2.93,-1.09 -0.49,5.23 -3.18,2.66C53.03,69.44 53.8,64.37 51.35,66.72c-0.01,1.25 1.67,5.14 1.03,4.67 -0.53,-2.51 -2.88,0.37 -2.61,-2.21 -1.56,-2.63 -4.32,1.46 -2.75,2.77 0.01,1.17 -1.56,2.39 -0.5,0.42 0.86,-3.51 -4.59,-2.97 -3.27,0.28 1.49,1.65 -0.07,2.95 -1.09,0.84 -1.55,-1.63 -4.28,0.31 -4.69,-2.84 -1.38,-1.87 -1.94,1.56 -0.77,2.26 -0.06,1.31 -0.47,2.49 -0.74,0.56 -1.54,-2.22 -1.58,2.78 -0.86,3.53 1.64,2.36 -5.86,1.67 -2.64,3.82 2.3,1.03 -2.22,1.12 -2.82,0.61 -1.74,0.43 1.87,2.58 -0.75,1.83C27.52,82.87 27.84,78.97 25.72,81.05c-0.33,1.79 3.97,2.08 0.81,3.67C24.18,85.6 27.77,81.48 24.7,81.96c-1.65,-0.58 -3.25,0.94 -2.07,2.52 -0.13,-1.56 -3.34,-2.97 -2.3,-0.65 0.92,1 3.65,4.19 0.68,3.11 -0.39,-1.36 -2.18,-3.54 -2.55,-1.53 -2.1,0.36 1.98,3.44 0.79,3.95 -0.52,-1.87 -2.86,-1.68 -1.64,0.35 -0.16,0.51 -2.67,-2.78 -2.9,-4.29 -1.64,-2.64 -1.84,0.81 -1.4,1.86 -0.78,1.52 2.24,0.79 1.57,2.42 -1.75,-0.73 -3.2,1.28 -0.75,1.28 -0.16,0.78 0.34,2.28 -0.65,2.59z M34.12,18.3c-1.05,0.6 -2.47,3.81 -0.57,3.47 1.95,-0.22 4.06,-4.82 0.57,-3.47z m-22.97,56.17c-2.31,-0.35 -0.79,-1.58 0,0z M2.14,66.59c-1.38,-1.11 -0.95,-1.35 0.46,-0.36 -0.18,-0.08 -0.27,0.6 -0.46,0.36z m168.23,-6.32c-0.28,-1.85 2.85,0.02 0.03,0l-0.03,0z M7.85,51.96c-0.57,-0.92 1.55,0.27 0,0z m1.18,-1.63C7.41,50.26 7.17,48.77 8.95,49.87 10,50.07 10.77,49.96 9.03,50.33z M184.09,37.53c-0.77,-1.48 -1.43,-4.23 -2.73,-6.24 -2.01,-2.67 1.21,-6.02 3.05,-2.64 0.95,1.04 0.93,3.38 1.44,4.42 -4.98,-0.16 0.39,3.51 -1.76,4.46z M23.01,25.35c-1.12,-0.81 -0.79,-3.25 0.17,-0.92 0.17,0.37 -0.49,0.58 -0.17,0.92z M209.99,8.88c0.65,-1.41 0.2,-3.29 -1.61,-3.21 -0.07,-1.5 -1.95,-5.46 0.62,-4.89 1.44,0 2.88,0 4.31,0 1.06,2.38 -1.6,4.58 -1.58,7.24 -0.32,0.7 -1.06,0.8 -1.74,0.86z M44.32,3.05c-1.74,-0.98 -6.31,0.12 -6.14,-2.09 1.47,1.81 3.05,0.95 2.25,-0.17 2.2,-0.52 2.82,0.46 3.89,2.27z\",\"name\":\"Greenland\"},\"is\":{\"path\":\"m151.61,141.44c-2.42,-0.05 -4.73,-1.12 -5.95,-3.36 -0.71,-2.06 -4.34,-1.68 -3.81,-4.38 0.8,-0.95 3.4,-0.95 1.03,-1.6 -1.69,0.92 -0.37,-1.61 -2.18,-0.86 -0.88,-0.03 -1.32,-2.12 -2.96,-2.05 -1.43,-1.13 -6,-1.27 -4.53,-3.48 1.4,1.45 5.16,1.15 5.29,-1.63 0.95,-0.08 4.39,1.14 2.46,-0.91 -1.28,-0.31 -3.16,-1.27 -0.58,-1.35 2.41,0.51 2.39,-2.69 -0.02,-1.57 -1.25,0.39 -2.36,1.06 -1.66,-0.43 -0.34,-1.62 1.57,-4.11 -1.54,-3.94 -1.49,-1.7 -3.83,-2.36 -5.98,-2.91 1.9,-1.43 2.13,2 4.45,0.36 0.58,-0.11 0.84,1.82 1.93,0.36 1.45,0.02 2.12,1.75 4.12,1.85 1.57,1.88 4.72,-0.08 2.56,-1.73 -1.13,0.23 -4.71,-0.08 -2.41,-1.51 1.13,0.1 5.66,-0.35 3.94,-1.58 -2.53,-0.05 -1.4,-0.83 -0.29,-1.63 0.84,-2.83 -2.64,-1.96 -3.34,-1.81 -1.47,-0.72 -2,-0.85 -1.64,-2.44 2.52,0.42 0.64,-2.75 -0.27,-3.56 -0.04,-0.34 1.76,2 1.91,-0.11 -0.65,-3.43 1.88,0.34 1.11,2 -0.95,4.21 5.86,2.44 3.19,-0.73 -1.94,-1.31 0.11,-2.67 -1.13,-4.2 1.13,0.42 1.67,1.6 2.04,1.18 1.98,0.31 -0.01,2.5 1.33,3.37 0.86,1.89 -0.77,4.19 1.64,5.57 -1.28,0.64 -3.87,-0.52 -2.63,1.99 -0.4,1.18 -1.92,2.25 -0.42,2.93 -1.31,1.46 -1.09,4.59 1.22,2.7 0.49,-1.4 2.89,-6.12 2.22,-2.37 2.69,2.22 4.53,-3.04 4.48,-5.25 2.58,0.03 -0.68,6.63 3.51,5.53 -0.01,-0.74 0.05,-5.1 1.81,-2.72 1.08,-2.01 3.5,-0.36 1.83,1.62 2.1,1.36 -0.53,3.45 0.95,5.46 2.69,-0.06 0.02,-7.39 2.92,-6.07 -0.32,2.52 1.49,4.92 3.27,1.85 1.68,-2.37 1.62,3.33 3.69,1.28 1.71,-0.8 1.1,-6.38 3.47,-3.02 -0.81,1.5 1.32,1.54 -0.24,3.29 -0.5,2.17 2.82,1.16 2.36,3.29 2.02,0.52 2.1,1.62 0.19,2.57 -2.6,1.53 3.45,1.86 0.49,3.25 -0.74,0.55 -3.68,1.15 -1.27,1.34 1.72,-0.23 4.34,-1.28 4.35,1.54 -0.04,2.17 -4.93,1.21 -2.47,3.09 1.83,0.33 2.75,2.38 0.41,2.2 -1.18,-0.56 -1.74,-0.63 -0.71,0.56 -0.6,-0.3 -3.92,0.12 -2.06,0.55 2.71,0.87 -0.55,1.36 -1.7,1.52 -1.06,0.04 -2.49,1.02 -2.87,2.69 -1.35,-0.83 -1.72,1.98 -2.29,-0.35 -0.72,-2.57 -2.1,-0.68 -2.71,0.31 -2.09,-0.1 -4.17,0.18 -5.78,1.63 -1.89,0.57 -3.52,-3.04 -3.52,0.21 -2.4,-1.75 -5.62,-1.53 -6.88,1.4l-0.35,0.08 0,0z m24.31,-7.94c-1.58,1.64 1.17,1.65 0.84,-0.23 -0.28,0.08 -0.56,0.15 -0.84,0.23z M147.49,99.76c-2.33,0.02 -1.42,1.38 0.2,1.79 0.14,-0.38 0.69,-1.97 -0.2,-1.79z m33.62,15.99c1.19,-0.59 1.6,-0.17 0,0z m-44.05,-9.09c-1.62,-0.01 -0.68,-1.6 0.37,-0.74 1.34,-0.47 -0.84,-4.6 0.49,-2.48 -0.6,1.82 2.54,3.42 -0.86,3.22z m-1.42,-1.5c-1.66,0.2 -1.5,-3.06 -0.29,-0.86 -0.05,0.3 1.22,0.95 0.29,0.86z m4.48,-1.49c-0.86,-0.96 -0.83,-1.57 0,0z\",\"name\":\"Iceland\"},\"pt\":{\"path\":\"m126.31,476.79c-3.11,-0.89 -5.74,-4.21 -9.28,-3.12 -1.78,0.38 1.76,-2.58 1.47,-3.95 0.39,-1.92 1.56,-3.11 1.18,-4.56 -0.46,-1.65 0.47,-3.6 1.4,-5.27 -0.61,-1.65 3.07,-0.14 2.33,-1.74 -1.59,-1.17 -2.48,-2.71 -4.71,-1.61 -1.89,-0.04 -2.12,-3.1 -2.67,-4.46 0.27,-2.21 3.57,-4.27 2.21,-6.5 2.42,0.37 3.47,-2.17 4.77,-3.81 0.98,-1.71 1.87,-3.43 3.16,-4.47 -0.79,-1.76 1.02,-5.31 3.28,-5.87 1.59,-1.26 -0.95,-2.63 0.8,-4.09 0.23,-2.53 -1.05,-5.19 -0.11,-7.75 2.54,0.06 0.15,-1.87 0.17,-2.24 1.59,-1.44 4.74,-3.3 6.49,-1.31 -3.35,1.53 -0.16,3.98 2.09,3.19 1.85,-0.17 3.87,2.53 6.45,0.97 1.56,-0.13 6.26,-0.07 4.22,3.05 0.22,1.77 4.81,2.08 1.88,3.98 -2.66,0.33 -4.02,2.88 -6.33,3.35 -0.97,1.66 1.09,4.53 -0.81,6.49 -1.07,1.01 0.55,2.39 -1.62,2.77 -2.6,1.54 1.62,6.06 -2.82,6.49 -1.74,-0.37 -5.6,-2.08 -3.57,1.31 1.07,1.89 -0.41,4.57 2.03,6.2 1.92,2.91 -3.81,2.81 -3.68,5.95 -1.09,1.6 0.5,5.45 2.67,5.41 -1.19,1.2 -4.31,1 -5,3.34 -3.07,2.07 -0.28,7.22 -4.25,7.62 -0.55,0.29 -1.11,0.63 -1.75,0.65z\",\"name\":\"Portugal\"},\"ma\":{\"path\":\"m114.26,519.26c5.38,-1.06 11.75,-0.39 15.9,-4.63 5.26,-4.88 8.22,-11.54 11.83,-17.6 2.3,-1.64 3.11,0.89 3.7,2.43 3.25,0.06 3.27,5.03 6.51,6.18 2.01,2.4 5.02,1.6 7.69,1.35 1.26,1.84 3.78,-0.68 5.41,1.5 1.48,1.09 4.97,-1.46 5.09,1.72 1.76,1.07 3.75,0.97 5.94,1.12 1.21,2.49 5.27,4 3.5,6.77 1.55,1.82 -0.97,1 -2.11,1.18 -21.15,0 -42.31,0 -63.46,0z\",\"name\":\"Morocco\"},\"es\":{\"path\":\"m170.08,507.95c-0.69,-0.45 0.64,-1.19 0,0z m-23.1,-9.15c-1.89,-0.27 -1.23,-3.36 0.81,-2.76 -1.01,0.61 -0.28,2.16 -0.81,2.76z m-1.53,-5.41c-1.92,-1.84 -4.81,-3.55 -4.78,-6.5 1.74,-1.65 -3.05,-2.72 0.06,-3.62 1.8,0.08 1.95,-2.62 0.29,-1.71 -1.68,1.92 -1.49,-3.2 -3.57,-3.37 -1.21,-2.54 -5.06,-1.7 -6.26,-3.7 0.08,-2.72 1.22,-5.37 3.58,-6.95 1.91,0.46 5.66,-3.3 1.98,-3.27 -1.9,-2.17 -1.67,-5.74 1.14,-6.99 3.7,-0.95 1.1,-4.57 -0.28,-6.35 0.58,-1.68 0.45,-3.01 -0.84,-4.53 2.46,2.34 7.45,0.07 6.4,-3.43 -2.26,-2.56 3.15,-2.71 1.97,-5.34 1.81,-1.67 0.28,-5.41 1.17,-6.21 1.77,-2.14 4.99,-2.46 6.88,-4.55 1.92,-2.79 -4.07,-2.45 -2.2,-4.91 0.43,-3.16 -4.07,-2.3 -5.69,-3.2 -1.8,2.37 -3.89,-1.02 -6.23,-0.51 -0.28,-1.34 -3.49,1.05 -2.42,-0.88 2.82,-1.19 -0.75,-4.5 -2.73,-2.96 -2.11,1.45 -3.86,-0.78 -1.34,-1.64 0.94,0.28 2.32,-1.98 0.72,-1.58 2.23,-1.63 -2.16,-0.92 -0.24,-2.66 2.41,-1.99 0.28,-4.66 -2.06,-3.75 -2.26,-1.66 -0.12,-3.23 1.07,-4.13 3.66,0.29 6.76,-2.08 9.92,-3.51 1.78,-2.19 1.34,2.22 3.29,-0.21 3.33,-0.27 2.62,6.64 6.6,4.09 2.47,1.16 5.51,0.94 8.02,1.44 1.9,-1.24 3.14,2.45 5.32,2.3 2.35,0.57 4.3,2.34 6.75,2.93 2.65,1.41 5.29,-0 7.84,-0 2.13,0.65 4.69,5.39 6.5,1.98 2.5,1.32 5.04,3.91 8.46,3.08 1.39,-0.01 3.8,0.79 4.14,1.8 -1.87,1.22 0.06,2.67 1.22,2.4 1.66,1.57 5.29,1.19 5.34,4 1.46,0.54 4.43,-0.57 4.33,1.92 1.41,-0.29 3.73,0.98 4.54,0.5 1.54,0.01 3.53,0.67 3.72,-1.35 1.63,1.02 3.94,2.12 5.05,3.3 -0.62,2.48 1.62,2.94 3.4,2.37 1.23,1.43 2.74,2.23 4.47,1.42 1.62,0.92 3.85,2.1 4.94,-0.04 1.38,-0.43 5.47,1.31 2.5,2.25 -0.52,2.49 0.35,5.62 -3.02,6.24 -3.95,0.65 -6.55,3.99 -10.24,4.85 -4,0.26 -8.86,0.24 -11.41,3.91 0.64,1.13 2.06,1.75 -0.08,1.82 -2.98,1.35 -3.8,5 -6.55,6.72 -2.04,2.09 -4.6,4.27 -5.09,7.29 -0.14,3.13 0.72,6.8 3.86,8.19 -0.28,2.13 -4.94,1.61 -6.14,3.93 -1.51,0.81 -1.84,2.35 -3.08,3.65 0.22,1.68 -4.27,3.01 -1.46,5.03 -0.94,1.1 -4.96,-1.49 -6.88,0.41 -2.79,1.13 -4.55,3.71 -5.69,6.37 -2.11,3.74 -4.63,-2.34 -7.31,0.69 -2.28,0.2 -4.7,-1.72 -7.4,-1.1 -2.51,-0.92 -5.12,-1.75 -7.89,-1.82 -2.99,0.03 -4.54,3.25 -7.74,1.83 -3.45,-0.48 -3.73,3.46 -6.83,4.06z M229.67,469.73c-3.03,-0.94 2.34,-1.17 0,0z m-3.28,-1.86c-1.31,-1.98 3.63,-2.8 0.96,-0.55 -0.28,0.23 -0.58,0.51 -0.96,0.55z m8.15,-0.95c-0.99,-1.19 -3.24,-1.21 -2.69,-3.07 -1.57,-0.61 -4.43,-0.57 -1.44,-1.83 1.82,-0.69 5.61,-3.6 5.15,-0.13 1.01,1.13 4.03,0.64 1.76,2.77 -0.83,0.87 -1.8,1.58 -2.78,2.26z m11.67,-5.53c-0.43,-1.32 -5.6,-1.9 -2.47,-2.15 1.42,0.04 2.4,0.66 2.47,2.15z\",\"name\":\"Spain\"},\"tn\":{\"path\":\"m284.9,519.26c-2.21,-1.12 0.73,-3.64 -0.95,-5.51 -1.46,-3.16 2.15,-6.93 -0.12,-9.45 -0.67,-0.73 2.93,-1.29 1.98,-2.95 2.23,-0.03 1.46,-2.58 3.74,-2.85 2.52,-1.83 5.41,-3.02 8.35,-3.78 1.3,0.18 -1.34,3.29 1.51,2.64 0.71,-1.15 1.1,-2.15 2.08,-1.26 -0.76,0.27 1.03,1.6 0.03,2.09 1.72,0.55 2.13,5.46 4.03,3.7 1.46,-0.73 4.4,-5.15 5.37,-2.71 -0.9,2.37 -2.28,5.07 -4.51,6.35 -3.22,1.82 -2.27,6.37 0.87,7.67 1.26,0.82 1.66,2.08 3.04,2.36 -0.15,1.99 1.01,4.41 -1.79,3.68 -7.88,0 -15.77,-0.01 -23.63,0.01z\",\"name\":\"Tunisia\"},\"dz\":{\"path\":\"m181.84,519.26c-2.16,-1 0.09,-2.29 0.05,-3.03 -0.8,-1.48 -5.28,-4.37 -1.47,-3.7 2.83,-0.51 5.98,-1.33 7.84,-3.67 1.17,-2.46 3.66,-2.95 5.89,-2.07 1.44,-0.79 2.77,-2.77 3.38,-0.29 3.67,1.9 4.38,-3.05 7.15,-3.91 3.27,-1.17 6.41,-3.1 10.01,-2.8 3.04,0.05 6.13,0.57 9.13,-0.19 2.74,1.56 5.53,-0.24 7.63,-1.26 2.46,0.75 5.2,0.79 7.75,-0.34 2.83,-0.67 5.62,0.67 8.61,0.23 3.35,0.17 5.17,6.05 8.94,3.1 1.43,-2.77 7.09,0.3 7.33,-3.88 2.03,-1.62 1.87,1.59 2.96,1.23 1.79,0.05 6.14,2.99 6.01,-0.61 2.5,-2 5.17,3.33 8.12,2.16 1.57,-1.13 4.46,-0.6 5.35,-0.15 -1.62,-0.02 -2.54,1.2 -1.93,2.18 -1.87,0.63 -3.58,2.5 -1.04,3.3 0.38,2.87 -2.09,5.94 -0.27,8.63 -0.06,1.4 0.31,4.98 -0.86,5.05 -33.52,0 -67.05,0 -100.57,0z\",\"name\":\"Algeria\"},\"be\":{\"path\":\"m265.32,343.64c-0.99,-1.16 -1.81,-2.49 -3.73,-3.37 -2.08,-0.35 -0.28,-1.85 -1.25,-2.79 1.47,-1.88 -0.53,-2.73 -1.47,-0.87 -1.28,2.32 -4.46,0.99 -3.2,-0.74 -0.78,-0.74 1.11,-3.63 -1.62,-3.19 -2.17,0.83 -2.23,-1.41 -2.67,-2.1 -3.94,1.05 -1.51,-5.53 -5.39,-3.71 -2.36,1.07 -3.02,-4.27 -0.45,-4.53 1.73,-0.62 4.14,-3.17 4.52,-0.63 2.42,-0.22 3.66,2.56 5.83,0.13 1.3,-0.02 1.88,1.91 1.96,-0.36 0.89,-2.95 2.67,0.31 4.45,-0.43 0.58,-0.7 1.45,3.34 3.54,2.07 2.55,0.01 1.99,1.94 1.4,3.06 -1.22,1.97 -0.15,4.06 2.13,3.5 1.5,1.19 1.36,3.16 2.63,4.39 -1.48,2.22 -4.2,1.28 -5.1,4.2 -1.39,2.28 2.74,5.98 -1.59,5.37z\",\"name\":\"Belgium\"},\"it\":{\"path\":\"m350.4,500.36c-1.75,-1.38 -4.77,0.56 -6.21,-2.11 -0.98,-3.12 -4.25,-2.35 -6.74,-3.12 -2.11,-1.47 -4.61,-1.93 -6.58,-3.76 -2.2,-1.23 -6.25,0.31 -6.1,-3.66 0.15,-1.98 2.31,-4.17 3.5,-1.8 2.52,0.49 3.53,-4.85 5.24,-0.9 2.01,0.26 4.02,2.27 5.97,0.45 2.63,-0.1 5.81,0.01 7.46,-2.47 1.45,0.01 4.12,1.89 4.36,-0.76 1.1,1.6 3.69,-2.6 2.02,0.26 -1.4,3.25 -4.08,7.31 -3.12,10.66 1.21,0.69 0.93,2.35 2.17,3.37 -1.93,0.14 -1.88,2.41 -1.97,3.84z m7.22,-15.37c-2.78,-0.14 -2.87,-3.99 -0.28,-4.55 1.37,-2.08 -1.36,-4.79 2.17,-5.13 3.25,-2.22 -1.35,-4.63 -1.21,-7.46 -1.16,-2.63 -2.56,-4.66 -3.09,-7.45 -1.59,-2.98 -4.91,-0.29 -6.78,-2.73 -1.65,-0.84 -0.12,-5.17 -3.33,-5.63 -1.56,-0.37 -4.03,2.8 -2.57,0.22 0.06,-2.91 -3.33,-1.3 -4.25,-2.37 -0.69,-2.23 -3.26,-6.17 -5.36,-4.2 -1.73,-2.18 -4.5,1.85 -5.25,-1.44 -2.69,-0.65 -4.1,-2.62 -6.18,-4.28 -0.73,-3.32 -5.19,-3.11 -5.74,-6.57 -1.05,-1.9 -5.27,-0.02 -4.05,-2.26 -1.1,-2.38 -3.86,-3.39 -4.73,-5.46 -3.13,0.51 0.07,-2.73 -1.71,-4.47 -2.14,-2.56 -1.2,-6.42 -3.6,-8.63 -2.19,-1.12 -4.5,-0.88 -6.03,-3.28 -2.22,-0.9 -4.82,-2.51 -7.33,-1.86 -1.74,1.89 -3.46,3.3 -4.61,5.48 -1.55,2.14 -5.91,2.59 -3.27,-0.76 1.07,-4.25 -4.16,-0.46 -5.52,-3.08 -2.08,-1.9 -1.08,-4.02 0.62,-5.53 0.76,-2.12 -4.77,-3.84 -2.88,-4.68 2.55,0.23 5.53,-3.6 2.83,-5.28 -0.93,-1.94 -2.92,-4.5 0.7,-3.9 2.4,0.04 4.29,-1.2 6.65,-0.24 1.85,-1.05 2.45,-2.98 2.51,-4.87 1.03,-0.35 2.29,-2.18 1.57,0.13 -0.67,2.56 4.99,2.17 2.47,4.45 0.19,0.08 2.08,0.32 2.23,1.7 1.41,1.01 2.54,-1.65 0.98,-2.25 0.53,-2.02 3.41,-3.57 2.37,-5.9 0.68,2.09 2.82,3.69 4.41,1.42 0.81,0.91 2.52,3.75 3.07,0.97 -0.97,-1.55 1.29,-1.81 -0.84,-2.7 -0.29,-2.99 3.05,2.3 3.43,-1.02 -1.77,-2.29 0.88,-4.07 2.84,-1.92 2.41,1.34 1.9,-4.15 4.64,-2.65 2.33,0.51 5.21,-2.28 6.13,0.74 1.38,2.34 4.22,3.29 6.93,3.47 1.41,0.44 5.26,-0.07 4.99,0.93 -2.13,0.92 -2.35,3.92 0.43,3.72 -1.26,1.22 -1.47,2.53 -0.57,3.56 0.79,3.16 -4.05,-1.16 -3.93,2.42 -2.22,1.73 -5.54,2.13 -7.33,4.03 -0.52,1.97 1.06,2.99 1.39,4.46 3.61,0.71 -1.06,2.87 -0.87,4.28 0.35,2.85 0.62,6.32 3.48,7.85 2.75,2.1 5.47,4.43 8.75,5.58 2.03,1.86 2.11,4.88 3.12,7.29 0.93,3.7 3.47,6.75 6.72,8.67 2.2,2.52 5.18,4.19 8.71,3.54 1.79,0.5 5.88,-2.59 5.92,0.29 -0.8,1.53 -3.65,2.89 -1.29,4.86 4.13,2.94 10.13,1.81 13.75,5.65 1.89,1.55 5.85,0.5 6.34,3.52 1.71,1.18 6.04,2.73 4.13,5.37 0.4,1.63 -0.95,3.55 -2.34,1.36 -0.96,-2.97 -3.23,-5.68 -6.54,-4.48 -2.32,-1.32 -6.05,-2.69 -6.78,1.09 -1.28,2.2 -1.32,4.97 -2.42,7.17 0.64,2.84 4.59,1.65 5.83,3.73 1.59,0.26 0.35,2.98 1.81,3.8 -0.21,3.1 -5.83,1.6 -5.88,5 0.28,1.92 0.81,4.68 -1.72,5.06 -1.23,1.65 -1.39,4.64 -3.63,5.25z m-35.56,-71.98c1.98,1.43 0.5,-2.39 0,0z m-33.54,62.41c-0.72,-1.6 -3.1,-3.35 -3.37,-5.68 1.54,-2 1.07,-4.81 2.16,-7.03 -3.26,0.28 0.82,-2.8 -0.89,-4.55 -0.02,-1.96 -1.35,-4.24 -2.94,-4.22 0.19,-1.55 0.4,-3.39 2.06,-1.78 3.1,0.15 5.25,-2.55 7.52,-4.29 0.91,-0.84 5.63,1.48 2.53,2.55 -0.36,1.47 2.3,1.33 1.41,2.66 3.07,1.36 0.3,4.08 -0.53,6.16 1.23,2.67 0.22,5.65 0.3,8.76 -0.33,1.29 -0.37,5.73 -2.35,3.37 -1.49,-1.18 -4.61,-1.6 -3.46,1.11 -0.38,1.17 -0.94,2.88 -2.43,2.94z\",\"name\":\"Italy\"},\"by\":{\"path\":\"m402.72,308.87c0.99,-3.18 0.27,-7 -3.79,-7.04 -0.71,-2.3 3.14,-4.07 4.34,-6.18 -0.26,-5.15 -3.83,-9.19 -5.74,-13.77 2.18,-0.83 4.01,-0.87 5.95,-0.9 0.86,-1.84 2.51,-1.83 3.98,-0.84 -1.05,-1.12 -2.37,-3.07 0.28,-3.17 1.9,0.02 -0.71,-2.58 2.17,-2.24 -1.28,2.76 4.76,1.14 2.24,-1.38 -2.85,-0.47 0.33,-3.89 -1.4,-5.76 0.96,-1.56 2.7,-3.08 2.72,-4.65 2.53,0.76 4.43,-4.49 0.94,-3.47 -1.1,-1.17 0.25,-4.78 1.91,-6.11 2.45,0.48 4.37,-0.43 4.51,-3.22 0.17,-2.25 2.08,-1.78 3.18,-1.85 2.02,-2.32 2.15,2.85 3.69,0.14 1.75,-1.51 3.73,-0.83 3.53,1.45 2.17,2.99 3.24,-2.73 5.87,-2.54 1.93,0.2 3.24,2.17 5.04,1.95 0.25,2.02 -0.47,3.85 1.8,5.15 0.82,1.65 -1.87,4.51 1.47,4.95 2.1,-0.08 0.99,1.32 1.56,1.96 1.72,2.18 3.98,3.94 6.71,3.73 0,1.84 0.71,4.69 2.92,2.85 2.09,-1.22 3.09,0.78 3.28,1.76 2.02,-0.38 3.13,1.46 1.26,2.31 -0.06,3.07 -3.04,4.09 -5.35,2.65 -3.54,0.27 -2.85,5.57 0.51,5.52 0.97,2.55 1.33,5.72 3.91,7.42 -2.66,1.35 -6.88,2 -6.85,5.76 -1.23,2.53 1.43,5.57 1.33,7.2 -1.16,-1.33 -5.51,-3.73 -5.13,-0.77 -2.24,-2.52 -3.75,4.16 -4.59,0.03 -1.77,-2.65 -4.04,1.4 -4.28,1.56 -1.22,-2.58 -2.82,1.6 -3.58,-0.67 -1.01,0.66 -2.93,1.68 -4.34,1.01 -1.39,0.16 -1.96,2.41 -2.67,0.56 -2.3,-2.34 -5.69,0.72 -8.43,-0.73 -2.87,-0.21 -5.7,0.69 -8.51,0.87 -1.69,1.51 -4.3,1.17 -5.72,2.79 -0.82,1.63 -1.2,4.18 -3.37,2.88 -0.54,-0.03 -1.11,0.27 -1.34,0.78z\",\"name\":\"Belarus\"},\"pl\":{\"path\":\"m378.8,342.69c0.85,-2.71 -2.77,-1.44 -3.2,-3.81 -2.16,-0.74 -2.68,4.74 -4.1,1.6 -1.34,-0.42 -0.38,-2.05 -2.3,-2.3 -1.38,-1.23 -0.72,-3.2 -2.99,-2.63 -1.39,-1.14 -3.17,-0.83 -4.08,-0.27 -2.65,-1 1.12,-2.8 -1.66,-3.95 -1.04,2.08 -3.71,0.51 -5.13,-0.34 -2.56,-1.21 -1.29,2 -1.13,2.64 -1.27,1.67 -2.44,1.3 -2.92,-0.65 -1.25,-0.75 -2.67,-1.29 -0.72,-2.16 1.16,-2.1 -2.17,-2.93 -3.11,-1.63 -1.5,-2.25 -5.49,-1.16 -6.45,-4 -1.21,-1.39 -2.59,1.06 -1.9,-1.41 0.23,-2.18 -0.48,-4.58 -2.34,-5.49 -1.37,-2.65 0.61,-5.37 -0.78,-8.1 -2.17,-1.37 0.53,-5.96 -3.41,-5.97 -3.09,-2.11 2.9,-5.25 0.3,-8.13 -0.64,-1.64 -2.11,-4.93 -1.01,-5.69 2.39,-0.86 4.49,-2.6 7.02,-3.34 1.88,-0.91 4.34,-1.13 5.97,-2.18 0.73,-2.97 3.72,-4.13 6.19,-5.25 2.44,-1.51 5.22,-3.64 8.26,-2.74 0.34,2.92 2.37,6.29 5.83,5.11 2.32,-0.46 3.66,-2.87 6.19,-1.88 5.94,0.22 12.06,0.04 17.77,-1.75 2.19,-1.89 4.37,-0.56 6.59,0.69 0.91,5.68 5.67,10 6.52,15.73 -0.74,2.77 -4.55,3.76 -4.71,6.89 0.95,2.08 5.51,0.97 4.43,4.48 -0.75,3.1 1.11,5.48 1.99,8.14 0.77,2 4.89,2.48 3.07,4.57 1.18,1.35 3.03,3.77 0.15,4.64 -2.63,0.49 -3.02,4.28 -4.54,6.17 -0.82,2.29 -3.04,4.17 -2.56,6.78 1.11,1.72 -0.12,4.53 2.39,4.91 -2.96,0.2 -5.66,-0.81 -7.88,-2.64 -2.12,-1.23 -4.34,-0.31 -6.37,0.12 -1.06,0.6 -0.02,2.66 -2.03,1.15 -2.7,-1.27 -4.67,0.77 -6.02,2.87 -0.44,-0.92 -1.49,0.48 -1.34,-0.18z\",\"name\":\"Poland\"},\"jo\":{\"path\":\"m566.3,519.26c-0.01,-4.69 -2.26,-8.97 -3.12,-13.51 1.51,-3.32 4.45,-0.15 6.76,0.1 3.02,0.33 6.94,0.22 8.51,-2.87 4.44,-5.57 8.37,-11.53 12.83,-17.08 1.86,2.51 3.76,5 5.38,7.68 -2.06,2.03 2.19,4.71 3.12,1.72 0.91,2.72 -2.48,4.53 -4.03,6.38 -4,3.47 -8.47,6.39 -12.72,9.51 -2.44,0.61 -3.15,3.3 -0.46,3.9 2.58,1.36 5.17,2.72 7.71,4.17 -7.99,0 -15.99,-0 -23.98,0z\",\"name\":\"Jordan\"},\"gr\":{\"path\":\"m449.88,508.26c-1.41,-0.44 -0.91,-2.43 -2.98,-2.05 -2.92,-1.02 -4.66,0.87 -7.49,-0.12 -2.89,2.86 -3.34,-3.03 -1.84,-3.28 2.13,1.48 4.85,0.78 6.99,2.27 2.66,-1.89 5.67,-2.41 8.68,-1.61 1.64,-0.07 3.7,-0.37 4.57,-0.83 -1.03,2.5 2.95,2.63 3.64,0.39 1.59,-1.01 2.86,-0.15 1.23,1.36 -4.14,0.67 -8.27,1.86 -12.04,3.72l-0.39,0.1 -0.37,0.03 0,0z m-26.29,-13.55c-0.61,-2.64 -1.46,-5.84 -4.37,-6.76 -3.02,-0.62 -1.68,2.8 -1.92,4.11 -2.48,0.25 -0.03,-2.58 -2.33,-3.13 -1.56,-1.69 2.11,-3.33 -0.42,-5.29 -1.75,-1.46 -3.48,-2.23 -4.88,-3.8 -1.71,-0.32 1.67,-2.18 0.95,-3.89 1.31,0.41 3.43,-0.58 4.2,-2.4 2.31,-0.03 5.27,1.8 8.03,2.01 1.1,0.72 3.08,0.98 3.24,1.46 1.77,0.36 1.5,3.47 4.29,3.78 1.97,0.86 -3.33,1.22 -3.75,-0.39 -3.29,-1.87 -3.6,3.04 -0.88,3.97 1.42,2.4 3.54,4.49 2.98,7.25 0.93,1.21 1.93,2.16 0.11,0.68 -1.13,-1.37 -3.59,-4.36 -5,-1.33 -0.38,1.2 -0.28,2.48 -0.25,3.72z m12.62,-17.67c-0.61,-1.76 -3.37,-2.18 -4.61,-3.83 -1.54,-1.35 -1.12,2.07 -3.22,1.63 -1.32,1.11 -3.33,0.37 -1.06,-0.31 2.53,-1.38 -0.23,-3.22 -1.98,-2.17 -2.19,0.64 -2.76,-3.59 -4.29,-0.5 0.28,-1.81 -1.78,-2.98 -1.95,-0.63 -1.85,0.67 -5.66,-0.17 -7.42,2.31 -1.43,-1.51 -2.69,-1.73 -3.58,0.32 -0.06,-3.13 -3.02,-4.71 -4.64,-5.97 -0.05,-3.03 -3.45,-4.15 -5.3,-5.69 0.58,-2.13 -4.66,-2.22 -1.22,-2.7 1.45,0.13 1.31,-1.81 1.97,-2.79 -2.74,-2.59 4.57,-2.51 2.29,-5.81 0.57,-2.27 3.93,-4.04 1.77,-6.57 2.29,-1.19 5.68,-0.59 7.21,-3.12 0.92,-4.2 5.51,-0.91 7.7,-3.66 0.88,-0.81 0.03,-3.12 2.26,-2.13 2.68,-1.49 5.94,-1.98 8.75,-3.4 1.35,-1.69 4.25,-2.43 5.72,-0.71 1.88,0.93 3.48,-0.95 5.39,0.66 2.83,0.48 5.06,-1.99 7.75,-2.56 2.63,-1.48 -0.92,-3.81 -0.19,-4.93 2.53,-0.82 6.54,2.78 3.07,4.45 -2.66,1.03 1.16,6.08 -1.92,6.2 -2.59,-1.16 -5.58,1.42 -8.08,-0.62 -2.31,-0.06 -3.98,4.61 -5.94,1.87 -2.75,-0.21 -2.93,5.39 -5.82,3.29 -2.56,0.13 -2.19,2.87 -0.61,3.88 1.51,1.31 -0.02,1.67 -0.46,3.12 -2.01,-0.91 -2.94,1.12 -4.72,-0.3 -3.05,1.25 -3.01,-2.2 -1.76,-3.97 -0.09,-0.54 -2.81,1.81 -3.44,2.49 -1.02,1.92 0.18,3.87 -0.21,6.03 1.55,1.98 3.8,3.4 4.84,5.84 0.92,0.8 4.25,2.4 3.42,2.64 -2.14,-2.19 -4.85,-0.02 -3.78,2.46 1.31,0.13 3.2,1.7 0.6,2.21 -1.13,0.04 -4.23,2.36 -2.68,2.49 2.62,-1.25 4.96,1.17 7.41,0.98 0.52,2.36 2.91,0.77 3.98,2.53 2.06,0.36 4.93,0.25 3.64,2.95 0.1,1.33 1.96,3.02 1.13,4.05z m-32.41,-12.35c-2.66,1.97 2.35,4.76 3.65,1.72 0.88,-3.08 -2.48,0.37 -3.25,-1.63l-0.4,-0.09 0,0z m1.2,12.17c-2.12,0.67 -3.94,-2.49 -2.24,-3.05 -0.52,2.11 1.79,2.11 2.24,3.05z m35.21,-4.75c-1.33,-0.45 -3.15,-2.25 -0.48,-1.45 1.91,-0.84 2.27,1.01 0.48,1.45z m-3.1,-3.76c-1.98,-1.68 -5.22,0.85 -5.86,-2.11 -1.43,-1.48 -5.05,-2.2 -5.77,-2.78 2.78,-2.67 4.14,2.1 7.15,1.68 1.66,0.78 3.06,-0.62 3.9,1.22 0.4,0.59 0.43,1.32 0.58,1.99z m-10.1,-17.81c-3.53,-1.73 2.32,0.07 0,0z m3.59,-1.57c-2.32,-1.62 -0.44,-1.62 0.45,0.12l-0.11,0.22 -0.34,-0.34z\",\"name\":\"Greece\"},\"tm\":{\"path\":\"m679.06,344.59c-1.21,-0.72 -0.78,-2.05 -2.51,-2.48 -0.91,-2.53 -0.44,-5.74 -2.11,-7.9 1.43,2.3 3.65,0.44 4.81,-0.09 -0.04,3.47 0.02,6.95 -0.03,10.42l-0.16,0.04z m-9.11,-14.43c-1.83,0.29 -2,-1.85 -2.97,-2.07 -2.67,-0.77 0.57,-4.63 0.48,-6.52 1.65,-3.13 3.89,-6.16 6.88,-8.09 1.36,-0.18 5.09,-1.73 4.9,0.43 0,2.65 0,5.3 0,7.95 -2.35,-1.52 -3.83,-5.43 -6.79,-5.11 -2.41,2.22 -6.24,4.38 -5.17,8.26 -0.05,1.27 0.71,3.09 1.95,2.4 0.34,0.89 0.41,1.85 0.72,2.75z m9.29,-40.46c-2.98,-4.77 -6.29,-9.32 -9.41,-14 0.44,-3.11 3.69,-4.89 4.74,-7.82 1.56,-2.45 3.21,-4.85 4.68,-7.37 0,9.73 0,19.46 0,29.19z\",\"name\":\"Turkmenistan\"},\"kz\":{\"path\":\"m665.18,326.25c-2.97,-1.86 -1.2,-5.67 -2.65,-8.21 0.53,-3.17 -3.51,-2.8 -4.88,-0.83 -1.79,-1.67 -2.48,2.95 -4.91,0.84 -1.43,-2.21 -3.22,-0.68 -4.76,0.52 -0.4,-3.09 -3.28,-5.18 -6.16,-5.75 -2.02,-1.36 -4.24,-5.19 -6.86,-2.37 -2.9,1.87 -4.15,-4.1 -0.51,-3.35 1.06,-1.32 1.8,-1.79 3.42,-0.84 1.53,-0.78 2.76,-2.24 4.06,-3.11 -1.44,-2.18 -5.78,0.43 -7.07,-2.22 0.12,-1.34 3.47,-2.2 0.83,-3.45 -1.26,-2.14 2.16,-2.43 1.45,-4.52 2.51,-0.62 4.01,-2.7 6.42,-3.67 1.55,-0.68 5.82,-1.56 4.27,-3.73 -2.44,0.42 -5.53,1.2 -4.64,-2.51 0.27,-3.12 -0.67,-6.7 -3.34,-8.56 -1.46,-0.11 0.78,-3.59 -1.86,-3.15 -1.5,-2.77 -4.84,0.02 -6.51,0.7 0.1,2.2 -0.93,4.69 -3.45,3.61 -2.4,0.56 -6.57,-0.38 -7.49,3.29 -0,2.58 -2.65,3.31 -2.68,6 -1.27,1.57 -1.07,5.37 -3.43,5.36 -2.12,-0.08 -2.2,2.62 -2.46,3.63 -1.26,0.74 -5.86,0.39 -4.64,-0.82 3.5,0.56 3.47,-4.4 0.06,-4.32 -3.14,-1.51 -5.73,-4.02 -8.93,-5.36 -2.47,-0.32 -4.25,2.11 -6.54,2.07 -0.12,1.28 0.37,2.59 -1.35,1.17 -1.8,-0.93 0.01,-2.79 -2.21,-3.3 0,-2.52 -4.2,-0.23 -5.74,-0.66 -0.96,-2.72 -0.8,-5.85 -0.41,-8.82 0.73,-3.23 -4.34,-1.07 -3.74,-4.61 -1.48,-2.21 -1.17,-5.16 0.32,-7.28 -2.58,-1.5 -1.53,-6.73 1.82,-4.04 2.29,0.54 4.78,3.98 7.13,1.98 1.97,-1.65 2.09,-5.06 -0.41,-5.79 -0.5,-2.08 -4.31,-2.93 -1.9,-4.7 0.1,-1.7 1.79,-4.1 2.05,-4.93 -2.7,-0.86 -1.25,-3.39 0.39,-3.59 0.3,-2.73 3.83,-4.97 2.24,-7.88 -1.16,-1.26 2.12,-0.49 0.87,-2.37 -0.73,-0.82 1.71,-0.82 1.99,-1.86 2.14,-0.45 -1.05,2.08 1.69,2.02 1.48,-0.55 1.41,-1.96 2.93,-1.7 0.29,-1.63 -1.06,-3.26 1.01,-4 0.5,-1.63 0.88,-2.2 1.87,-0.46 3.2,2.4 4.8,-3.1 7.46,-3.43 1.62,1.55 3.73,2.04 5.43,0.37 1.27,1.42 3.01,1.43 4.62,1.61 -0.26,2.56 4.05,4.44 3.68,0.87 -0.11,-2.04 -2.23,-3.06 -3.52,-3.49 2.49,-1.89 5.28,1.44 8.06,-0.13 2.65,1.71 2.89,-3.09 2.88,-4.82 -0.94,-1.46 1.32,-2.87 0.36,-4.29 1.64,0.4 1.75,-1.1 1.34,-1.85 1.08,-2.25 2.79,-1.39 4.44,-0.52 1,-0.8 1.78,-2.46 2.98,-2.01 -1.89,-1.21 -2.16,-3.64 0.61,-3.9 -0.26,-1.23 0.14,-1.29 1.28,-1.45 1.06,-0.94 2.07,2.58 4.01,1.26 1.98,1.74 4.96,-3.12 5.37,-1.36 0.29,1.89 3.37,-0.99 2.39,-2.55 -0.11,-1.94 -1.41,-4.21 1.46,-3.17 2.91,-0.36 4.26,-3.79 5.34,-6.17 1.47,-2.93 -2.47,-4.1 -2.09,-6.64 -1.36,-2.25 -4.48,-0.11 -5.91,0.2 -2.22,-2.09 -4.58,3.81 -4.91,0.16 -1.29,-0.68 -2.71,2.23 -3.65,0.73 1.29,-1.47 1.19,-4.25 2.39,-6.18 1.51,-3.13 -2.02,-3.28 -3.58,-4.22 -3.1,0.97 0.81,-3.99 -1.61,-4.03 1.01,-2.42 4.84,-2.6 5.47,-5.2 -0.01,-2.9 -4.66,-1.68 -5.74,0.02 -1.13,1.71 -4.5,-0.24 -1.75,-0.92 2.16,-2.49 -2.77,-3.66 -2.05,-1.2 -2.33,3.55 -0.85,-4.14 -3.83,-1.64 1.26,-0.48 -0.31,-3.76 1.92,-2.68 1.3,1.04 0.21,-2.26 2.14,-1.3 2.74,-0.21 -1.15,-2.68 1.49,-3.26 1.26,2.1 3.9,-0.29 1.53,-1.19 0.54,-2.35 2.7,-4.74 3.28,-7.51 1.48,-0.31 3.12,-1.58 1.37,-2.69 1.12,-2.77 3.18,-4.87 5.44,-6.15 -0.1,-1.8 -3.04,-1.6 -1.06,-3.51 0.73,-2.38 2.55,-3.81 3.48,-6.49 2.08,-2.53 2.36,-5.49 3.47,-8.34 0.29,-1.69 3.72,-3.96 0.35,-4.97 -1.01,-0.43 2.31,-2.04 0.29,-3.41 -1.75,-1.68 3.22,-0.78 0.65,-2.37 -1.73,-0.49 3.06,-0.82 1.8,-2.5 2.25,-1.54 6.79,-0.26 5.35,-4.64 -0.2,-2.91 3.08,-0.72 4.32,0.28 1.69,1.75 4.12,-0.2 4.78,2.52 1.5,0.9 1.01,3.62 3.74,3.35 2.67,0.01 -0.81,-3.38 2.11,-2.14 1.93,-0.51 -0.97,-4.41 1.41,-3.27 0,52.65 0,105.3 0,157.95 -2.28,4.16 -5.07,8.03 -7.49,12.09 -2.11,1.94 -4.29,5.26 -1.49,7.58 3.01,4.53 6.37,8.91 8.98,13.65 0.02,6.62 -0.04,13.29 0.04,19.87 -3.05,0.34 -6.58,0.54 -8.5,3.49 -2.48,2.8 -4.81,5.91 -5.35,9.73 -0.09,0.46 -0.18,0.92 -0.25,1.38z\",\"name\":\"Kazakhstan\"},\"fi\":{\"path\":\"m382.62,208.07c0.7,-3.07 -2.78,1.32 -3.86,-1.32 0.05,-0.96 1.56,-3.75 -0.71,-2.21 -1.13,1.69 -1.33,-1.45 -2.92,-0.68 -0.94,0.89 -2.97,-0.9 -3.55,-0.42 -0.14,-2.36 -1.97,-0.15 -2.25,-0.03 -0.63,-1.67 -0.91,-3.6 -2.08,-5.17 1.86,-0.74 1.72,-4.06 0.26,-5.25 -0.34,-1.47 3.17,-0.38 1.07,-2.02 -1.2,-2.15 -2.78,-4.06 -3.52,-6.25 0.62,-2.08 -0.63,-3.97 -1.49,-4.42 0.49,-1.2 -0.5,-2.29 -0.95,-2.29 0.13,-1.71 3.82,-4.59 2.52,-5.52 -3.07,-0.18 0.32,-3.17 1.17,-0.45 1.02,-1.23 3.05,-2.66 2.12,-4.84 0.01,-1.7 0.15,-2.94 1.36,-1.21 0.12,-2.42 1.26,-4.91 3.64,-5.85 -0.72,-2.45 1.54,-4.8 2.24,-7.01 -0.27,-2.84 0.9,-5.24 3.71,-6.24 1.6,-1.13 1.77,-3.36 -0.51,-2.84 -0.44,-2.27 -0.12,-5.32 -2.74,-6.02 -2.3,1.99 -2.43,-3.68 -4.97,-1.88 -1.75,-2.03 -4.37,-4.52 -3.48,-7.48 1.52,-3.03 -0.83,-5.16 -2.34,-7.18 -0.2,-1.46 0.87,-4.46 -1.6,-3.74 -0.01,-2.39 -0.15,-4.83 -1.27,-7.01 -2.48,-1.84 -4.57,-4.14 -8.05,-4.18 -1.93,-1.7 -6.43,-2.88 -5.46,-6.12 -0.41,-2.16 1.14,-3.53 2.73,-1.48 2.59,1.31 1.85,6.17 5.39,5.44 2.27,0.35 4.34,-0.45 4.98,-2.51 2.4,-0.26 6.27,3.96 5.78,-0.87 -0.39,-2.02 3.32,-1.43 1.97,-3.98 -1.32,-3.02 -2.11,-7.03 -0.35,-9.99 -0.31,-2.74 4.21,-0.11 4.22,-3.35 1.47,-1.91 3.36,2.08 5.49,1.78 2.95,0.9 3.14,3.84 1.7,6.03 1.41,1.64 0.21,2.38 -0.46,3.84 1.14,0.8 2.75,1.02 1.72,2.87 -0.47,3.13 2.02,6.77 5.45,6.28 1.67,2.35 6.13,3.59 3.92,7.14 -0.75,2.27 -1.97,4.85 -0.96,7.21 3.59,3.29 6.5,7.25 9.05,11.36 0.06,1.49 -2.83,0.38 -0.84,2.06 -0.22,2.17 0.21,4.77 1.29,6.07 -1.26,3.74 5.08,3.34 3.58,6.82 0.48,3.1 6.13,1.5 4.41,5.52 -0.25,1.99 -2.95,4.48 0.53,5.03 2.93,1.69 6.43,2.67 8.87,5.07 1.06,2.48 -0.3,5.24 -0.57,7.75 -2.26,6.49 -4.21,13.14 -7.27,19.3 -1.55,2.69 -3.59,5.26 -4.3,8.32 -1.76,0.21 -3.5,-1.24 -4.38,1.19 1.52,0.77 -3.01,1.75 -1.49,-0.16 -0.76,-2.31 -1.99,0.16 -1.56,1.47 -1.82,-2.09 -4.5,1.44 -1.45,2.01 0.62,2.53 -3.67,-2.15 -3.14,-0.28 0.89,2.06 -2.52,3.25 -2.85,3.52 -2.72,0.33 -4.14,2.39 -6.64,3.79l-0.57,0.27 -0.58,0.1 0,0z\",\"name\":\"Finland\"},\"de\":{\"path\":\"m302.45,372.15c0.39,-0.91 1.99,-2.77 0.16,-1.49 -1.57,0.93 -2.11,-2.91 -4.19,-2.08 -2.04,1.85 -3.44,-2.27 -6.01,-1.15 -2.15,0.46 -2.02,-2.87 -4.5,-1.23 -1.72,0.52 0.38,3.76 -1.44,1.73 -1.84,0.2 -4.84,0.84 -5.69,-0.07 -0.64,-1 1.16,-4.13 0.65,-5.99 1.9,-2.36 0.91,-6.25 3.86,-7.87 2.56,-1.63 0.59,-4.12 -1.86,-3.67 -2.56,0.2 -2.84,-3.15 -5.48,-1.32 -1.23,0.08 -2.11,-2.54 -3.28,-1.12 -0.17,-2.33 -4.09,-3.23 -1.38,-5.35 1.81,-3.01 -5.32,-3.18 -1.88,-6.63 1.67,-1.33 2.21,-2.89 0.22,-4.22 1.95,-2 -1.2,-0.75 -1.34,-2.77 1.01,-1.22 0.18,-2.51 -0.16,-3.21 1.78,-1.86 2.88,-5.05 1.22,-7.64 -2.19,-2.06 0.71,-2.52 2.29,-1.67 2.39,0.34 3.33,-2.08 3.64,-3.33 2.38,-1.19 2.15,-5.11 -0.59,-5.64 -0.03,-1.55 3.42,0.08 2.83,-2.66 0.31,-2.54 1.52,-4.9 2.38,-7.37 -0.34,-0.18 -3.53,0.96 -2.22,-1.41 0.9,-2.9 4.25,-1.28 6.2,-2.15 0.16,2.03 2.57,6.54 4.4,3.34 0.14,-1.85 -1,-6.59 2.18,-4.76 1.27,0.28 4.88,-0.75 2.09,-1.66 -3.15,0.44 1.18,-4.81 -1.98,-5.31 4.2,-1.72 -2.92,-4.5 -0.43,-6.3 2.37,1.37 6.56,0.38 7.64,2.55 -0.45,0.53 1.55,0.68 -0.04,1.71 -1.46,1.22 0.47,2.21 1.51,1.23 -1.09,2.31 1.04,2.07 1.81,0.68 1.67,1.18 3.81,1.56 5.14,0.49 0.21,1.77 -4.56,3.93 -2.04,5 1.38,0.2 3.65,-1.17 3.27,1.31 2.66,-0.01 2.46,-4.21 4.91,-4.12 1.43,1.57 3,-1.39 3.56,-2.49 0.61,-2.1 3.54,-0.7 4.16,-0.17 0.88,1.8 2.57,3.83 4.93,3.32 -0.95,4 4.51,3.57 4.6,6.93 3.14,3.28 -3.49,6.24 0.16,9.19 2.04,0.76 2.91,2.01 2.23,4.17 0.93,1.99 2.9,4.81 0.48,6.79 1.68,1.23 1.03,4.11 3.18,4.83 0.68,1.92 0.82,5.65 -0.66,6.5 -0.87,-1.78 -4.46,-3.53 -3.95,-0.41 1.16,0.88 -2.8,1.08 -3.3,2.22 -2.5,0.18 -3.71,2.69 -5.8,3.41 -0.73,-0.12 -0.57,1.65 -2.06,0.72 -2.78,-0.99 -2.28,4.11 -4.17,1.96 -3.51,0.44 1.56,4.5 2.19,5.46 -2.26,2.79 1.42,6 3.88,7.15 1.53,1.88 3.04,3.44 5.43,4.44 2.44,1.22 2.24,4.86 -1.02,3.8 -0.57,1.52 -0.37,3.53 -2.79,3.73 -3.29,0.46 -2.9,3.65 -1.01,5.5 0.76,1.93 -3,3.3 -3.36,1.75 -0.45,-0 -3.6,-1.29 -2.93,0.98 -3.48,-0.65 -5.56,1.87 -8.47,2.95 -1.59,-0.45 -2.06,-3.03 -4.27,-1.95 -2.85,-1.05 -0.37,3.13 -2.89,3.37z m-6.7,-79.27c-0.21,2.06 4.44,6.44 3.78,2.2 -1.59,0.14 -2.26,-2.95 -3.66,-2.25L295.75,292.88z m29,76.43c-1.59,-1.17 -0.3,-3.24 0.69,-1.13 -0.04,0.43 -0.23,0.99 -0.69,1.13z m-0.01,-83.07c-2.42,-0.16 -2.07,-4.22 0.32,-2.83 -1.17,-1.29 -0.5,-0.74 0.89,-0.58 -1.82,1.06 2.32,2.92 -0.86,3.34l-0.35,0.07 0,0z\",\"name\":\"Germany\"},\"se\":{\"path\":\"m323.06,272.38c-2.85,0.68 -1.5,-2.92 -0.88,-3.47 -1.34,-1.73 -2.37,-3.77 -4.04,-5.01 0.79,-1.22 -1.53,-2.8 1.01,-1.48 2.77,0.18 -2.19,-2.84 0.98,-2.65 2.38,-2.15 -2.21,-3.59 -2.38,-5.5 -2.18,-0.93 -1.38,-4.24 -3.57,-5.03 -0.5,-2.35 -1.05,-4.69 -2.37,-6.57 0.36,-2.06 3.34,-6.36 -0.08,-6.96 -1.38,2.23 -3.39,1.39 -2.89,-1.18 0.66,-1.66 -0.9,-5.32 -0.3,-5.55 1.22,1.95 2.5,1.63 3.29,-0.5 0.91,-2.52 -0.9,-5.03 -0.38,-7.57 2.08,-1.14 -0.02,-3.96 3.05,-4 2.39,-1.51 1.37,-4.54 1.71,-6.85 0.8,-2.58 -4.53,-6.31 0,-6.91 1.04,-0.81 1.22,-3.31 1.37,-4.79 -1.12,-2.38 -6.01,-2.81 -4.1,-6.25 1.84,-3.74 -1.45,-6.92 -1.02,-10.47 0.52,-2.44 0.53,-5.73 -0.14,-7.32 0.64,-2.96 1.19,-6.43 4.34,-7.91 2.35,-0.49 6.23,1.31 6.51,-2.71 0.96,-3.43 -4.73,-4.28 -1.85,-7.71 0.9,-2.93 3.32,-5.66 2.42,-8.87 0.15,-1.92 0.67,-3.87 -0.11,-5.73 -1.01,-2.32 3.73,-0.74 3.99,-3.33 -0.13,-2.25 -0.54,-4.21 1.52,-5.81 2.69,-2.56 2.7,-6.48 0.46,-8.94 2.93,-1.39 1.66,-4.89 3.52,-7.09 1.35,-0.88 5.1,1.96 4.84,-1.65 -0.51,-1.95 -1.78,-6.23 1.75,-4.92 2.24,0.45 5.5,2.66 7.12,-0.07 1.29,-1.53 -2.75,-1.44 -0.66,-3.53 0.95,-1.42 0.76,-3.57 -0.83,-4.28 3.02,-0.52 2.64,2.5 5.35,3.5 2.17,2.8 6.24,2.01 8.45,4.17 1.81,1.26 3.78,2.76 3.22,5.22 1.03,1.27 -0.68,4.42 1.98,4.24 -0.85,2.83 1.11,4.63 2.62,6.51 0.04,2.86 -1.49,6.25 1.05,8.57 1.6,1.29 3.31,4.27 -0.1,3.45 -1.76,0.14 -2.91,-0.92 -2.17,1.42 -0.95,1.6 -5.22,-2.83 -4.14,0.58 0.84,1.65 -2.05,2.45 -1.57,1.13 -2.06,-0.65 -0.53,1.54 0.66,1.49 -0.6,0.2 -1.52,0.57 -0.3,1.82 -1.49,0.26 -4.7,1.58 -1.68,2.64 2.32,2.25 -3.2,4.64 -1.02,7.19 1.54,0.9 4.4,2.82 1.64,4.33 -1.68,2.21 -0.66,5.89 -3.12,7.17 -0.94,1.59 -3.16,2.96 -4.81,3.45 -0.21,1.34 -1.22,2.8 -1.35,4.54 -1.77,-1.72 -2.61,0.56 -2.76,1.85 -1.12,0.81 -2.56,2.13 0.01,2.01 -0.44,1.31 -4.33,0.73 -2.47,3.43 -0.06,0.73 -0.49,2.94 -1.88,1.95 -2.76,-0.24 -2.07,3.37 0.06,3.69 -0.77,1.95 -1.46,4.89 0.24,6.81 -3.74,-1.85 -2.36,2.41 -0.94,3.91 0.18,1.27 -3.07,0.5 -0.73,1.44 0.84,1.85 1.12,4.66 1.43,6.67 -0.32,2.79 5.02,-0.22 4.86,2.53 0.7,1.96 4.04,1.71 4.48,1.82 -3.19,-0.43 -0.28,3.53 1.17,3.32 1.13,1.08 3.55,2.93 0.69,3.17 -0.96,1.32 -2.08,3.54 -3.42,3.71 1.54,1.27 -2.79,1.25 -1.63,-0.68 0.49,-2.21 -4.13,-4.8 -3.64,-1.69 1.43,0.51 0.2,2.21 2.13,2.69 -1.79,0.21 -3.94,-2.79 -5.52,-0.41 -0.59,-1.15 -2.36,-1.3 -1.99,0.35 -2.53,-0.76 -3.68,2.49 -1.03,1.96 1.95,-0.49 4.14,0.17 6.05,0.67 -0.71,2.97 4.28,-1.28 2.88,1.93 -0.14,2.13 -0.95,4.88 -3.12,4.77 0.18,1.44 -0.14,1.56 -2.15,1.24 -1.48,-0.93 -5.69,1.16 -2.24,1.59 0.93,-0.93 4.88,0.08 2.51,0.95 -1.3,-0.74 -2.65,-1.15 -1.6,0.7 1.1,0.49 3.58,1.85 1.37,2.42 -0.48,1.93 2.49,4.34 -0.83,3.78 -1.22,1.55 3.46,2.55 0.79,3.59 -0.59,1.57 1.8,1.83 -0.1,3.07 -0.36,1.71 1.22,3.68 -0.24,4.3 0.8,1.29 0.72,4.62 -0.49,4.51 -0.92,1.99 -0.01,8.09 -3.9,5.74 -0.75,-0.04 -1.2,1.04 -1.28,-0.03 -1.81,1.13 -4.91,0.3 -5.24,2.54 -3.47,0.86 -2.77,5.15 -1.48,7.22 -1.25,2.12 -3.78,-0.71 -5.21,1.44 -0.58,0.2 -1.19,0.28 -1.8,0.28z m21.76,-13.69c-0.6,-1.64 -0.03,-5.51 0.58,-5.62 -0.47,1.84 -0.07,3.79 -0.58,5.62z m11.16,-10.28c-1.47,-2.04 -0.57,-3.97 -1.15,-6.17 0.13,-1.54 3.5,-5.82 3.93,-3.32 -1.59,1.67 -1.23,4.3 -0.42,5.29 -0.56,1.58 -2.33,2.58 -2.36,4.21z m-6.04,-22.62c-0.58,-0.9 -1.01,-2.64 0.37,-3.19 0.51,-2.57 3.62,1.5 0.73,1.06 -0.71,0.44 -0.93,1.57 -1.1,2.14z m3.41,-4.74c-1.71,-0.56 1.15,-0.98 0,0z\",\"name\":\"Sweden\"},\"no\":{\"path\":\"m283.92,239.69c-2.05,0.82 -1.04,-2.38 -3.04,-0.45 -2.25,0.63 -2.45,-1.19 -0.48,-1.71 1.16,-1.98 -1.94,-1.69 -2.54,-0.89 -1.88,-1.69 -4.73,-3.13 -5.46,-5.54 0.16,-1.17 0.04,-2.84 1.26,-1.53 2.45,-0.31 0.5,-3.28 2.63,-3.15 -0.92,-1.74 3.6,-1.24 2.16,-3.19 -1.49,-0.01 -3.77,0.75 -1.5,-1.08 1.07,-1.87 -4.03,-2.48 -3.95,0.31 -0.43,1.99 -1.31,-1.27 0.03,-1.59 -0.59,-1.71 3.37,0.46 2.3,-1.73 2.11,-0.09 3.7,-3.31 0.62,-1.92 -2.12,1.06 -0.9,-1.62 0.69,-0.69 -1.77,-1.8 3.78,-2.21 0.57,-3.6 -0.56,-4.05 -3.61,3.53 -2.9,-0.4 -0.09,-1.07 2.45,-2.14 0.56,-2.38 1.23,-1.75 0.14,-1.45 -1.12,-1.67 -0.48,-2.03 3.39,-0.54 1.29,-2.62 -1.57,-0.11 -2.3,1.01 -2.92,1.83 0.23,-1.47 -0.96,-1.1 0.71,-1.97 1.17,-0.81 3,-0.92 0.68,-1.9 -1.68,1.41 -3.48,-0.55 -1.63,-1.27 2.35,2.15 4.25,-2.5 6.35,0.43 1.83,1.86 1.2,0.18 2.05,-1.15 2.54,-0.3 -0.18,4.44 3.17,3.6 2.08,-1.21 -0.36,-4.05 -1.72,-4.82 -1.87,-1.19 -2.86,1.17 -4.77,-0.24 -1.71,-0.32 -5.74,2.24 -5.21,-1.12 1.24,-0.84 -1.48,-1.91 1.02,-1.63 0.93,-0.21 -1.41,2 0.86,1.55 1.15,0.42 4.11,-2.74 2.32,-2.56 -1.17,0.24 -3.58,0.07 -2.04,-0.78 0.01,-1.15 -2.86,-0.72 -1.37,-2.6 1.92,-1.21 1.67,-2.06 2.44,-3.76 1.13,0.7 1.55,1.95 2.59,0.89 1.71,1.83 3.67,-1.21 0.78,-1.26 -1.72,-1.7 2.02,-2.98 1.47,-0.81 -0.08,1.94 2.1,2.28 1.49,0.15 -1.54,-0.73 -0.39,-3.26 1.26,-2.04 -0.9,2.54 1.99,2.46 3.2,1.29 -0.57,-1.07 -3.07,-0.84 -2.76,-2.61 -1.93,-0.78 -0.88,-1.18 0.63,-1.75 -0.31,2.53 1.54,0.84 1.46,0.89 0.76,2.66 4.97,0.16 2.35,-0.64 -1.68,1.13 0.97,-2.47 -1.62,-1.35 -1.33,0.1 -1.92,0.19 -0.62,-0.55 0.77,-1.45 -3.3,-3.11 -0.25,-2.56 1.36,2.34 4.5,0.23 4.77,-0.42 0.76,1.21 1.99,4.78 3.9,2.5 -0.19,-1.38 -1.61,-1.13 -0.15,-1.91 -0.52,-0.88 -3.96,-0.82 -1.31,-0.98 2.56,1.07 3.94,-2.68 1.6,-3.22 -2.38,3 -0.29,-2.57 1.23,-0.79 -1.13,2.54 3.47,1.05 2.52,-0.37 0.79,-1.1 1.41,-2.4 1.63,-0.68 1.42,0.16 -1.15,3.34 1.22,2.27 1.23,1.9 3.05,-0.32 1.25,-1.45 2.02,0.81 5.84,0.23 4.08,-2.68 2.55,-0.11 3.44,-2.71 1.89,-3.48 2.7,-0.44 1.04,-4.25 -0.61,-2.47 -0.94,0.99 -4.98,3.53 -3.32,4.59 1.36,-0.14 -3.55,4.36 -3.84,1.11 1.8,-0.4 1.59,-2.97 -0.14,-1.47 -1.54,1.59 -1.58,-0.15 0.05,-0.55 1.29,-0.12 3.11,-2.23 0.74,-1.96 0.49,-1.84 0.69,-1.57 2.55,-2.66 -0.01,-1.8 3.87,-1.75 1.44,-3.46 1.6,-3.11 2.62,3.25 4.94,0.36 -0.07,-0.91 1.83,-2.92 -0.44,-2.32 -1.97,0.37 0.51,-3.35 0.91,-3.77 2.46,-0.4 5.23,-2.14 6.04,-4.52 -0.69,-1.41 -1.97,0.46 -0.84,-1.25 0.83,-2.9 -4.58,-0.06 -1.84,-2.23 2.88,-0.42 -1.2,-4.08 2.2,-4.17 1.93,2.26 1.6,-1.88 -0.02,-2.41 1.79,-0.55 2.5,-1.55 4.25,-0.42 0.51,-2.76 -3.45,-2.33 -4.43,-3.58 -0.26,-3.01 2.59,-3.12 4.58,-3.67 0.29,-0.78 -0.81,-3.13 0.47,-2.48 2.46,0.65 2.45,-2.36 2.11,-3.23 1.27,-0.62 3.06,1.08 2.81,-1.49 0.06,-2.75 -4.88,2.23 -2.7,-0.53 -0.33,-1.84 3.17,-2.65 3.79,-1 0.44,2.38 2.69,0.96 0.74,-0.53 -0.37,-0.19 2.89,-3.12 0.16,-2.12 -1.52,1.62 -2.69,-1.67 -0.67,-0.49 2.18,0.6 1.78,-2.26 0.1,-2.63 1.64,-0.99 1.76,-1.25 3.09,0.31 2.65,0.05 -0.04,3.53 -1.13,3.83 -0.13,2.43 3.49,4.78 1.03,6.94 -1.52,2.38 -4.26,5.02 -2.96,8.1 -1.03,2.23 -5.62,0.34 -3.97,3.87 1.08,2.24 -0.41,4.62 0.29,6.91 -0.21,2.4 -1.5,4.65 -2.48,6.84 -1.89,2.33 -0.64,4.78 1.42,6.24 1.36,2.71 -1.06,4.75 -3.56,3.4 -3.47,0.13 -6.05,3.54 -6.55,6.75 -0.09,2.61 -2.39,4.76 -0.87,7.58 1.7,0.33 -0.26,3.51 0.65,5.09 0.93,2.11 2.11,4.27 1.04,6.66 -1.85,3.6 1.33,5.61 3.87,7.28 0.34,1.26 -0.49,2.52 -0.69,3.78 -4.37,0.5 -1.64,4.45 -0.68,6.73 -0.19,2.39 0.87,5.69 -1.37,7.29 -2.33,-0.08 -2.37,2.05 -2.44,3.42 -2.81,2.64 1.45,6.5 -0.89,9.33 -0.63,-0.51 -0.86,-4.28 -3.41,-3.07 -1.98,0.66 -1.1,-2.02 -2.18,-2.85 0.06,-1.66 0.25,-4.8 -1.34,-6.05 -1.51,0.96 0.6,3.37 -1.47,1.82 -1.6,1.08 1.29,3.05 0.43,4.75 1.82,1.57 -1.36,1.57 -0.61,3.28 -0.57,0.33 -1.78,3.28 -2.33,0.68 -1.69,-2.25 -3.03,0.06 -1.93,1.1 -2.37,0.2 -1.22,2.58 -3.27,2.72 0.26,1.74 0.63,2.15 -0.66,0.4 -0.55,-0.29 -0.31,3.24 -1.72,3.89 -1.13,1.13 -2.53,1.14 -2.96,2.81 -1.25,-1.4 -1.53,-2.14 -2.1,0.08 -0.58,1.07 -1.97,0.9 -2.97,1.19z m1.79,-42.62c-2.02,0.59 -1.81,3.69 -1.92,5.35 2.29,1.58 5.16,-1.56 2.82,-2.47 -2.51,1.62 -0.41,-2.26 1.2,-2.22 -0.69,-0.24 -1.35,-0.63 -2.1,-0.66z m-8.26,-3.48c1.26,1.05 1.96,-0.59 3.75,0.18 2.86,-0.7 0.32,-3.31 -1.23,-1.63 -0.54,1.11 -4.66,-2.16 -3.53,0.83 -0.64,0.74 0.98,1.54 1.01,0.63z m-1.56,-1.31c1.64,-1.54 -2.29,-0.9 0,0l0,0z m-3.39,20.54c-1.15,-1.48 -0.79,-2.31 1.27,-2.09 -0.5,0.65 -0.76,1.45 -1.27,2.09z m20.58,-43.12c1.89,-0.99 1.05,0.09 0,0z m18.74,-19.12c-0.11,-1.35 1.21,-2.72 0.71,-0.65l-0.24,0.29 -0.47,0.36 0,0z m7.46,-19.18c-1.61,-0.55 0.1,-1.14 0,0l0,0z m3.95,-10.61c-1.42,-0.85 2.16,-3.22 0.98,-0.56 -0.23,0.31 -0.59,0.56 -0.98,0.56z m8.03,-3.21c-0.35,-1.4 -4.22,-5.53 -0.69,-3.55 1.98,-0.66 -2.87,-2.41 0.24,-2.21 2.34,-1.07 1.29,3.96 3.81,2.24 0.12,-1.58 -1.95,-2.83 0.76,-2.09 1.98,-2.01 2.51,5.82 -0.36,3.01 -2.2,-1.1 -3.01,1.06 -3.76,2.6z m-5.57,-1.57c-2.14,-0.36 2.05,-0.11 0,0z m-7.93,-1.09c-0.6,-2.04 2.47,-0.64 0,0z m7.12,-4.13c0.59,-2.37 4.58,-1.01 4.01,-4.46 0.66,-1.69 0.95,3.05 2.77,1.99 1.53,1.25 -2.5,3.06 -1.7,0.6 -1.05,-1.01 -2.27,1.66 -3.77,0.7 -0.56,0.22 -0.96,0.7 -1.3,1.17z m7.58,-0.78c-1.19,-2.28 3.86,-0.43 2.34,-2.88 -3.7,-0.04 1.43,-1.56 0.6,-2.56 -2.52,-1.2 0.41,-2.37 1.15,-2.81 0.41,-3.22 -2.85,-1.84 -4.06,-0.47 -1.59,-2.04 2.26,-2.36 2.32,-4.57 0.14,1.33 0.46,2.85 1.65,2.42 0.8,1.52 3.32,1.84 3.24,-0.37 1.68,1.68 2.77,1.67 2.31,-0.48 0.79,-1.17 0.35,-2.79 1.61,-3.02 -0.4,-0.66 -1.42,-3.92 0.2,-3.31 0.95,2.39 -0.14,5.28 -0.89,7.26 2.94,1.88 1.55,-3.57 4.12,-3.05 0.22,-1.76 -3.3,-2.79 -1.17,-4.59 1.11,2.64 2.9,-1.39 2.9,-1.08 0.95,0.44 4.33,3.19 2.86,0.58 0.52,-1.54 -0.4,-5.86 -2.92,-3.36 -3.05,-0.22 1.04,-4.05 2.23,-1.43 1.8,-0.47 3.36,-0.55 3.65,1.78 1.6,2.82 3.68,-1.17 2.1,-1.52 0.07,-0.51 -0.69,-2.47 -0.41,-3.71 -0.86,-0.45 -2.21,1.67 -1.86,-0.59 0.28,-1.23 2.77,-3.11 1.94,-0.75 0.94,1.47 4.41,-0.15 2,-1.03 0.6,-1.49 3.48,0.04 1.97,-2.16 -0.79,-0.71 -2.04,-3.95 0.25,-3.13 1.93,-0.42 3.84,0.45 2.02,2.21 -1.75,1.98 -0.56,3.61 -0.42,5.65 -2.28,2.68 3.1,3.87 2.24,0.45 -0.18,-2.74 0.93,-5.32 1.76,-8.05 1.89,-3.05 -1.06,3.6 0.33,2.81 1.3,-1.62 0.64,3.35 2.9,1.4 2.12,-1.22 -1.68,-4.46 1.77,-4.91 0.72,-1.47 -2.34,-1.18 -0.57,-2.18 -0.51,-2.17 4.79,-1.62 2.39,1.11 -1.65,1.09 -1.95,4.14 -0.56,3.08 -0.4,2.24 2.84,0.85 3.62,0.4 -0.89,-1.13 -1.79,-4.79 0.32,-4.87 0.09,2.52 4.6,3.29 3.84,0.25 1.3,0.25 1.81,0.78 0.68,1.44 0.12,2.4 2.78,-0.68 3.9,1.46 2.08,1.26 -1.72,0.74 -1.03,2.68 -0.51,3.31 -7.08,0.08 -6.25,3.51 1.53,-0.19 4.57,0.06 4.67,1.27 -0.73,2.54 2.28,1.63 2.62,2.01 1.41,2.24 -3.5,3.67 -1.9,6.17 0.12,3.04 -1.51,0.49 -0.35,-1.03 0.73,-2.35 -0.61,-5.22 -3.22,-5.51 -2.52,-0.23 -4.95,-4.8 -6.83,-0.86 -0.98,2.59 -3.07,-0.98 -3.73,2.03 -1.82,2.85 -1.43,6.39 -0.81,9.47 1.12,1.85 1.17,3.38 -0.82,4.1 -0.7,1.31 0.29,4.41 -1.67,2.5 -2.14,-1.69 -5.02,-0.86 -5.85,1.4 -2.54,0.85 -4.72,0.04 -5.34,-2.66 -0.99,-2.14 -5.91,-6.2 -6.14,-1.61 0.57,2.13 -0.39,0.96 -1.13,1.23 -0.7,0.99 -4.96,0.92 -2.14,2.3 2.85,1.94 -1.88,4.5 0.34,5.92 1.59,3.24 -4.12,0.39 -5.68,0.21 -2.06,-1.04 -3.15,2.55 -4.42,0.38 -1.01,-0.36 -2.16,1.19 -2.67,1.07z m-9.01,-1c0.11,-2.56 2.91,0.13 0,0z m-1.13,-1.28c-0.8,-1.29 3.49,-1.49 0.69,-0.52l-0.34,0.34 -0.36,0.18 0,0z m4.3,-0.48c-1.71,-0.47 -0.9,-2.93 0.17,-2.2 -0,0.74 -0.11,1.47 -0.17,2.2z m4.79,-4.64c0.18,-0.78 1.29,-1.07 0,0z m7.64,-3.83c-2.24,0.29 -1.11,-3.47 -0.22,-0.75 0.06,0.35 1.74,0.98 0.22,0.75z m2.2,-0.62c-2.38,-0.91 -2.84,-5.4 0.1,-4.68 0.37,1.54 -0.1,3.12 -0.1,4.68z m-1.72,-6.1c-4,-0.97 3.45,-2.52 1.03,-0.52 -0.42,0.05 -0.59,0.56 -1.03,0.52z m5.27,-4.48c-0.27,-0.28 0.7,-0.67 0,0z m42.25,-2.91c-1.73,0.39 -2.88,-3.16 -0.45,-1.74 1.34,-0.78 2.3,1.96 0.45,1.74z m-35.9,-2.93c0.17,-2 2.33,-0.17 0,0z m1.12,-1.12c1.6,0.69 0.37,-2.16 2.16,-2.14 -0.43,0.5 -1.9,3.93 -2.16,2.14z m20.87,-4.79c0.68,-1.68 0.54,-0.43 0,0z m-9.67,-2.21c-2.58,-0.52 -0.4,-3.09 0.65,-0.8 -0.07,0.3 -0.24,0.8 -0.65,0.8z M319.32,12.08c-0.3,-1.14 -1.45,-2.77 -2.39,-2.03 -1.57,-1.66 3.97,-2.79 -0.11,-4.02 -1.19,0.78 -1.7,1.41 -2.54,-0.32 -1.8,0.29 -3.52,-4 -2,-4.15 0.28,2.4 2.41,-1.85 3.57,0.39 1.62,1.46 1.99,-0.61 1.81,-1.03 1.1,0 2.2,0 3.3,0 -1.65,1.5 0.79,4.98 -1.45,5.97 1.81,0.96 -0.87,3.73 0.84,4.72 -0.27,0.27 -0.64,0.46 -1.03,0.47z M334.56,1.41c-0.71,-0.78 1.26,-0.59 0,0z\",\"name\":\"Norway\"},\"ua\":{\"path\":\"m458.88,376.43c-1.65,0.13 -4.78,-1.76 -1.5,-2.12 1.11,-0.94 -0.88,-2.9 1.02,-4.06 0.62,-1.77 2.75,-4.95 1.17,-6.55 -2.35,-0.6 0.77,-4.92 0.58,-1.37 1.22,0.09 1.33,-0.46 2.29,-1.4 1.42,1.03 2.11,1.68 2.01,-0.49 0.8,-0.31 0.98,2.31 1.91,0.48 2.09,-0.77 2.07,-2.38 0.02,-2.62 0.48,-3.05 -2.01,-4.08 -4.34,-4.76 -1.03,-1.35 0.14,-4.1 -2.32,-4.58 -0.19,2.48 -3.85,-0.68 -2.94,-2.62 0.58,-1.57 -1.58,-5.77 -2.62,-3.02 -1.32,-0.9 -3.45,-3.78 -4.76,-1.05 -0.61,-1.26 -0.31,-1.31 -2.39,-0.85 -1.59,-0.19 -3.7,-2.91 -5.96,-1.05 -1.9,1.41 -4.52,1.99 -6.34,2.49 -0.3,1.21 -2.98,2.87 -3.26,4.06 0.69,2.88 -3.92,2.94 -5.88,3.36 -1.91,1.06 -2.85,5.5 -5.12,2.22 -2.55,-1.4 -4.85,1.16 -7.45,0.17 -2.78,0.68 -6.22,-1.81 -7.42,1.27 -1.7,-1.79 -4.36,-1.99 -6.08,-3.8 -1.69,-1.99 1.67,-4.76 1.1,-7.32 0.71,-2.08 3.89,1.72 3.03,-0.71 -0.43,-1.86 -2.14,-2.21 -2.09,-4.41 -1.6,-2.52 1.02,-5.01 1.85,-7.4 1.48,-2.09 2.06,-5.46 4.76,-6.09 3,-1.14 0.85,-4.79 0.14,-5.51 2.5,-2.1 -3.76,-3.23 -3.93,-5.84 -0.3,-1.41 -1.88,-4.75 0.96,-3.25 2.78,-0.65 2.08,-4.77 5.31,-4.83 2.44,-2.13 5.65,-1.09 8.41,-2.29 2.86,0.12 5.82,0.8 8.71,-0.13 1.44,0.02 2.96,3.43 4.46,0.67 0.48,-0.61 1.02,3.11 2.27,0.92 -0.68,-2.01 1.68,-0.28 2.33,-1.83 1.72,1.64 3.14,-2.06 4.36,1.19 0.98,-0.83 1.53,-5.36 3.12,-2.13 0.91,1.83 2.9,1.59 3.18,-0.37 1.11,-0.89 4.84,0.77 2.92,-1.35 2.22,-0.55 3.94,4.29 5.74,0.82 -0.53,-2.27 -3.24,-4.21 -1.65,-7.03 0.3,-2.91 3.55,-3.36 5.73,-4.62 2.8,0.98 5.55,-1.1 4.6,-3.99 2.15,-0.59 4.74,-0.01 5.62,-2.79 1.28,-1.72 2.08,2.03 2.83,-0.54 3.15,-1.7 3.09,3.74 6.17,3.78 2.69,0.81 -2.77,1.83 -0.06,3.34 0.97,1.1 0.27,1.92 1.66,2.64 0.13,1.93 0.76,2.76 1.8,0.93 1.75,0.21 3.63,-0.42 4.86,-1.04 1.22,1.6 2.86,1.33 3.58,3.44 0.66,2.12 2.97,6.38 5.86,3.86 0.95,-2.66 2.98,0.62 4.61,-0.26 2.96,0.38 3.76,-3.58 5.99,-4.66 2.15,1.36 3.87,3.07 6.32,3.78 2.39,1.73 1.46,-2.06 1.83,-2.22 2.04,0.83 3.63,-0.35 5.65,0.78 1.64,-1.06 3.29,-0.67 5.4,-0.98 -0.34,2.96 3.78,0.35 3.93,-0.21 -1.54,1.79 2.89,1.91 1.36,4.34 -0.91,1.71 -3.3,4.32 0.42,4.36 1.34,-0.17 -2.51,1.76 -0.87,3.22 0.73,1.16 4.31,0.82 2.94,3.4 -1.12,2.14 2.56,-1.79 1.05,1.32 0.04,1.92 1.74,4.67 -1.56,4.6 -2.59,0.04 -5.57,1.58 -4.88,4.34 -1.93,1.59 -3.46,4.3 -2.04,6.74 1.21,-0.9 1.4,3.27 -0.48,2.33 -2.61,-0.17 -4.34,2.86 -4.47,4.25 -3.32,-0.37 -1.93,5.58 -4.94,3.83 -1.97,0.68 -1.55,3.31 -3.9,2.83 -2.31,2.16 -4.28,4.87 -4.46,8.16 0.05,2.37 -1.89,1.63 -2.69,0.94 -1.43,2.66 1.92,4.83 3.49,6.52 1.72,1.52 4.3,4.21 6.67,2.42 1.12,-1.05 0.41,-2.57 2.09,-1.56 1.41,-0.15 1,-2.82 3.17,-2.37 1.15,-0 0.13,2.98 0.5,4.21 -1.72,0.79 -3.13,2.24 -5.41,1.17 -2.72,0.19 -1.51,3.05 -3.33,4.45 -1.46,1.36 -5.27,2.16 -5.39,5.34 -0.65,2.52 -2.91,5.33 -5.63,3.62 -2.92,-0.52 2.13,-0.53 -0.45,-1.77 -0.6,-1.76 -0.24,-6.9 -3.31,-5.63 -2.51,0.74 -5.09,-2.4 -7.49,-0.19 -0.84,-1.11 2.17,-2.44 2.5,-3.9 1.15,-2.11 4.76,-3.17 5,-5.4 -1.21,-0.47 -1.1,-4.45 -2.98,-2.14 -0.01,2.53 -3.55,-2.55 -3,-0.06 -1.18,1.35 -4.02,3.26 -6.29,3.26 -0.55,-2.41 -5.82,0.8 -2.84,-2.01 -2.07,-2.11 3.13,-0.37 2.51,-2.12 0.43,-0.87 2.54,-3.83 0.04,-2.33 -1.67,2.49 -5.64,0.74 -4.34,-2.2 -3.44,-0.71 0.17,4.67 -3.05,4.35 -0.95,0.4 -1.24,-2.89 -2.18,-0.81 1.19,3.1 -5.65,1.69 -4.31,5.43 -0.19,2.64 -0.71,6.16 -2.65,8.5 -1.92,0.15 -2.28,-0.37 -1.97,1.56 1.06,2.6 -1.47,1.65 -1.44,-0.04 -3.03,0.54 1.86,5.97 -1.63,4.84 -1.69,1.04 -2.76,2.58 -4.85,3.23 -0.33,0.68 0.22,1.06 -0.9,0.94z m8.84,-3.13c-1.24,-0.5 0.31,-1.59 0,0z M480,354.71c-2.02,-0.24 1.4,-0.94 0,0z\",\"name\":\"Ukraine\"},\"il\":{\"path\":\"m564.91,519.32c-2.79,-0.13 -5.59,-0.02 -8.39,-0.06 1.03,-3 0.55,-6.35 0.36,-9.47 -0.77,-1.89 -0.08,-3.97 0.69,-5.38 -2.21,-3.68 3.62,-1.36 3.34,-4.63 0.16,-2.5 0.5,0.45 0.78,1.3 0.41,1.74 0.97,3.45 0.64,5.26 0.64,4.15 2.85,8.05 2.93,12.32 -0.33,0.17 0.28,0.88 -0.36,0.66z\",\"name\":\"Israel\"},\"sa\":{\"path\":\"m593.15,519.31c-2.83,-0.62 -5.1,-2.77 -7.77,-3.86 -1.58,-0.98 -5.22,-1.86 -2.02,-3.26 5.2,-3.81 10.77,-7.23 15.26,-11.9 1.43,-2.99 4.63,-3.12 7.49,-3.98 3.73,-1.26 7.76,-1.54 11.57,-0.41 3.34,1.04 6.79,1.79 10.32,1.49 3.1,-0.23 6.16,0.27 9.07,1.36 7.05,2.14 14.23,3.86 21.25,6.06 3.22,1.22 7.13,2.8 10.33,0.7 3.47,-1.54 7.12,-2.66 10.59,-4.19 0,5.98 0,11.96 0,17.94 -28.52,0 -57.04,0 -85.55,0l-0.54,0.05z\",\"name\":\"Saudi Arabia\"},\"iq\":{\"path\":\"m665.09,505.54c-3.93,-0.14 -7.37,-2.41 -11.2,-3.08 -6.98,-1.9 -13.93,-3.92 -20.88,-5.88 -4.51,-0.55 -9.21,0.46 -13.56,-1.25 -4.06,-1.23 -8.45,-1.67 -12.53,-0.27 -2.28,0.01 -6.14,3.28 -6.23,-0.28 -1.25,-1.52 -3.9,2.58 -3.26,-0.38 2.09,0.09 -1.51,-3.02 -1.67,-4.04 -1.32,-2.57 -5.49,-5.02 -2.13,-7.49 4.5,-5.84 9.16,-11.56 13.6,-17.45 2.04,-3.07 2.39,-7.4 0.02,-10.4 -1.41,-3.28 0.38,-7.66 -2.62,-10.31 -3.09,-2.29 -2.71,-6.73 0.85,-8.16 2.5,-2.92 2.33,-7.04 4.39,-10.19 0.66,-2.04 0.93,-3.47 3.19,-3.89 2.1,-2.75 5.72,-0.13 8.03,-2.44 0.9,-1.04 2.2,-3.85 2.95,-0.99 0.24,2.01 2.47,2.98 2.75,0.39 0.38,-1.99 1.84,-3.41 3.5,-1.73 2.25,0.16 -1.13,2.67 1.73,2.71 2.42,-0.18 1.65,4.3 5.21,2.73 1.14,1.18 1.93,5.76 4.16,3.01 2.6,0.76 5.25,0.47 7.14,-1.59 0.61,0.22 -3.19,2.13 -1.4,3.83 1.09,1.94 5.9,4.19 1.79,5.59 0.41,2.25 -2.38,5.11 0.78,6.65 -2.86,-0.58 -2.74,5.86 0.16,4.24 -0.52,2.48 -0.45,5.39 2.6,5.52 0.99,0.71 1.98,1.43 2.96,2.14 0.34,-1.31 1.06,-1.78 0.88,-0.17 1.65,-0.62 3.99,0.32 4.03,2.59 0.12,1.35 0.91,3.75 2.75,1.76 3.33,-1.46 6.61,1.38 9.97,1.03 2.56,-1.77 4.83,0.86 6.18,2.91 0,13.19 0,26.38 0,39.57 -4.3,1.87 -8.8,3.32 -13.06,5.23 -0.36,0.05 -0.72,0.08 -1.09,0.08z\",\"name\":\"Iraq\"},\"az\":{\"path\":\"m625.84,392.01c-2.29,-1.74 -6.12,-1.39 -7.67,-4.17 -2.87,-0.9 2.82,-3.1 1.5,0.21 -0.29,2.16 0.66,-0.38 1.38,-0.86 1.98,0.67 2.99,-0.38 4.14,-1.97 0.78,0.36 1.17,3.12 3.09,2.25 0.41,1.86 5.4,3.6 1.25,3.88 -1.24,0.15 -2.44,0.52 -3.69,0.66z m9.25,-4.53c-1.22,-1.31 -1.37,-1.74 -0.58,-3.22 -0.7,-1.79 -4.05,0.28 -2.18,-2.45 -0.71,-3.07 -3.86,1.6 -5.74,-0.73 -1.12,-1.04 -4.8,-0.64 -2.24,-1.72 1.66,-3.91 -3.46,-4.05 -5.96,-4.45 -3.06,-0.54 1.31,-0.13 -0.04,-1.79 -1.74,-0.11 0.76,-3.32 -2.15,-2.78 -1.13,-2.07 -3.77,1.24 -3.43,-1.3 -3.83,0.78 -1.14,-4.07 1.25,-3.79 1.55,-0.11 2.45,2.19 4.64,1.11 1.17,-0.47 1.66,-2.32 3.53,-1.24 4.04,0.44 2.81,-5.63 -0.82,-5.09 -1.19,-0.23 -4.57,-0.92 -2.6,-1.97 -1.03,-3.22 2.59,-2.79 4.29,-1.55 1.8,0.76 4.71,-0.66 4.29,1.94 2.3,1.27 5.96,-0.02 6.83,-2.57 -0.51,-2.81 0.78,-5.44 1.5,-8.17 0.77,-1.87 3.93,1.21 5.57,1.75 2.04,2.28 4.63,3.86 7.4,4.84 2.72,2.9 5,-2.29 8.05,-0.66 2.42,0.7 -1.69,0.86 -2.16,1.8 -1.58,1 -0.94,2.98 -2.64,4.05 -0.87,2.65 2.35,4.7 1.48,7.28 0.01,2.24 2,3.06 1.53,5.18 2.05,2.31 -2.94,0.21 -1.67,3.07 0.41,2.71 2.06,5.63 2.66,7.96 -1.4,1.58 -3.89,-2.8 -4.72,-0.12 -0.51,-2.33 -5.01,-0.05 -2.24,-2.75 1.89,-2.25 -0.89,-2.79 -2.14,-3.4 -0.39,-1.7 3.13,-2.19 0.43,-2.98 -2.55,-2.17 -6.8,-1.82 -7.18,2.01 -1.56,2.2 -2.45,4.87 -3.2,7.25 -1.02,1.28 -1.42,2.9 -1.76,4.47z\",\"name\":\"Azerbaijan\"},\"ir\":{\"path\":\"m679.21,458.81c-1.85,-0.64 -2.96,-4.67 -5.07,-2.4 -2.51,1.13 -4.99,-0.69 -7.5,-0.94 -1.54,-1.25 -4.65,1.4 -4.88,0.3 -0.35,-2 -1.76,-5.08 -4.31,-4.59 -0.55,-2.48 -2.8,0.93 -4,-1.28 -1.15,-1.36 -3.82,-0.5 -2.7,-3.18 1.2,-2.24 -1.18,-2.93 -1.92,-2.92 -0.76,-2.14 0.85,-1.8 1.93,-2.95 -0.87,-1.54 -2.25,-2.23 -1.18,-3.98 1.41,-1.22 -0.93,-2.74 1.62,-3.12 2.22,-2.84 -3.32,-4.02 -3.44,-6.68 1.23,-0.62 3.69,-3.96 0.62,-3.5 -2.16,1.88 -4.6,2.34 -7.4,1.61 -2.13,2.68 -1.52,-4.01 -4.35,-3.02 -2.59,1.12 -1.74,-3.71 -4.6,-2.9 0.47,-2.81 -2.6,-2.62 -3.34,-4.74 -3.51,-0.37 -2.73,-5.88 -6.79,-4.9 -2.43,-0.23 0.88,-4.74 -1.15,-6.42 -2.63,1.81 -2.65,-3.09 -4,-4.32 -2.26,0.51 -1.17,-4.01 -3.82,-4.01 -1.08,-1.34 3.43,-0.98 2.24,-3.41 -0.62,-1.73 -1.46,-4.27 1.42,-2.93 2.06,1.49 5.14,2.91 7.63,3.88 2.25,1.24 5.18,-0.04 7.5,-0.74 2.07,-1.71 5.07,-2.61 4.75,-5.97 2.3,-2.33 1.71,-5.53 3.7,-8.09 0.98,-2.61 2.58,-5.68 5.71,-3.44 1.82,0.32 -1.95,3.66 1.08,3.95 4.06,-0.35 -2.73,4.32 1.52,4.83 1.27,-1.49 2.59,2.44 3.8,0.15 1.45,1.58 3.99,1.1 4.87,0.71 1.82,2.85 3.68,6.92 7.62,6.9 3.17,0.36 5.34,-2.56 8.13,-3.02 2.01,0.9 4.99,2.01 6.34,2.88 -0.02,22.74 0.03,45.49 -0.03,68.23z\",\"name\":\"Iran\"},\"ge\":{\"path\":\"m581.92,380.27c-2.26,-0.5 1.41,-3.83 -0.72,-5.4 -1.82,-2.3 -4.05,-4.17 -5.45,-6.77 -1.72,-2.18 -4.46,-0.36 -5.95,-2.58 -2.48,-1.15 -5.99,1.77 -7.69,-0.38 -1.24,-0.61 -3.4,-1.34 -1.11,-2.52 2.92,-1.18 5.31,-0.74 8.31,-1.17 2.62,-0.64 4.81,0.81 7.27,-1.05 1.64,-1.03 2.03,-2.53 4.37,-2.32 3.09,-1.55 5.23,0.93 8.34,0.23 1.97,-0.34 3.8,-1.06 3.76,1.37 3.33,1.16 4.09,-3.43 6.09,-4.97 1.82,1.19 3.56,0.44 3.29,-1.84 2.38,1.1 4.89,0.94 6.98,-0.29 0.1,2.19 0.6,4.52 3.44,3.9 1.82,0.87 6.7,-2.08 4.44,1.62 -1.04,4.09 6.18,1.33 6.51,4.88 -0.55,2.71 -3.63,-0.63 -4.78,1.93 -2.42,2.07 -3.95,-2.25 -6.59,-0.28 -2.88,0.84 -1.75,4.15 -4.11,5.26 -2.15,1.64 -6.02,2.97 -7.99,5.72 -1.4,1.55 -3.24,0.61 -4.57,1.11 -0.32,-2.7 -4.41,-0.39 -5.08,-2.59 -2.74,0.39 -1.4,4.41 -4.46,3.55 -2.08,-0.04 -2.63,2.5 -4.3,2.58z\",\"name\":\"Georgia\"},\"sy\":{\"path\":\"m570.98,505.1c-2.37,-0.06 -4.22,-2.23 -6.66,-1.9 -1.76,1.54 -0.95,-3.61 -2.17,-4.66 0.26,-2.1 3.06,-4.25 2.48,-6.23 -2.86,0.37 -0.12,-3.18 1.61,-2.81 1.41,-1.1 -2.08,-2 0.23,-3.24 2.46,-1.85 0.82,-6.41 -2.32,-5.73 1.74,-2.54 -3.41,-1.48 -4.52,-0.5 -2.16,-1.45 -1.71,-4.59 -2.2,-6.89 -0.72,-2.13 -3.63,-2.2 -2.69,-4.95 -1.91,-3.07 4.61,0.44 2.96,-3.37 1.96,-1.34 -0.54,-4.12 2.56,-4.37 1.92,-1.95 -2.9,-3.08 -1.96,-5.67 -0.17,-2.68 3.53,-1.88 4.07,-0.24 2.8,-1.4 6.26,-2.87 7.96,-6.08 1.77,-3.87 6.01,-0.57 8.96,-1.32 4.89,-1.98 9.3,-5.28 12.15,-9.78 2.06,-3.09 5.52,-4.42 8.88,-5.51 3.15,-0.62 4.71,-4.01 6.68,-5.54 2.16,2.06 -0.35,4.49 -0.71,6.75 -0.34,2.94 -3.64,3.54 -4.67,5.93 -0.77,2.72 0.96,5.34 2.92,7.06 1.91,2.86 0.25,6.61 2.05,9.52 1.43,2.7 2.07,6.08 0.11,8.71 -2.41,4.04 -5.84,7.35 -8.54,11.19 -6.92,8.84 -13.8,17.72 -20.31,26.87 -1.64,2.62 -4.19,2.66 -6.86,2.76z\",\"name\":\"Syrian Arab Republic\"},\"tr\":{\"path\":\"m494.91,482.2c-2.64,-0.83 -6.61,0.7 -6.69,-3.38 -0.28,-2.26 -4.06,-2.7 -3.32,0.14 -2.13,0.72 -2.01,-4.36 -4.24,-2.06 -1.1,1.64 -1.71,4.09 -2.75,1.3 -0.06,-0.7 3.87,-0.84 1.58,-2.85 -2.66,-0.75 -4.9,2.05 -7.56,2.3 -3.22,0.12 2.63,-2.09 -0.16,-3.58 -1.02,-1.26 -2.59,-1.78 -3.85,-0.25 0.8,-2.14 -2.11,-2.59 -0.3,-4.42 0.7,-2.91 -3.46,-4.14 -4.72,-3.08 -0.35,-2.13 -2.41,-1.66 -2.94,-0.12 -0.96,-0.52 -4.49,-1.13 -1.65,-1.67 1.95,-1.12 -0.35,-1.93 -0.64,-2.3 -0.1,-2.91 1.76,1.21 2.44,2.3 1.21,0.53 0.61,-1.54 2.32,-0.91 2.14,0.31 3.08,-4.19 0.9,-2.3 -2.98,0.71 -3.35,-2.88 -0.63,-3.63 1.42,-2.31 -2.41,-1.49 -2.02,-3.47 -1.48,-1.26 -3.08,-1.7 -1.12,-3.61 1.88,-4.06 -3.41,-1.44 -4.89,-0.21 -3.22,2.13 -1.41,-2.71 -2.53,-4.43 0.27,-1.5 2.4,-1.02 1.65,-3 1.08,-2.79 3.49,-3.54 5.85,-4.95 1.33,-0.2 3.18,2.13 5.06,0.5 2.19,-0.32 0.53,-4.12 2.21,-2.66 -1.01,2.78 3.65,-0.5 5.07,-0.34 1.73,-0.22 7.01,-0.13 5.15,-2.97 -1.48,-0.21 -3.18,0.39 -0.99,-0.95 1.96,-1.62 4.19,-2.4 6.66,-2.8 2.77,-0.54 1.2,-2.91 -0.89,-1.86 -1.93,1.45 -3.4,0.81 -4.38,0.32 -3.58,0.35 -2.31,-4.79 0.81,-3.52 2.71,0.01 5.57,-0.39 7.64,-2.28 2.46,-0.32 5.31,1.16 7.39,-0.69 2.9,-0.41 1.41,-4.52 4.23,-5.54 2.71,-2.98 4.61,-6.84 8.39,-8.68 2.29,-1.78 4.29,-3.83 7.39,-4.02 3.16,-0.7 6.47,-1.22 9.26,-2.97 -0.18,-2.01 2.92,-3.03 2.12,-0.46 1.09,2.77 5.37,3.22 7.04,0.72 1.14,-1.37 -0.27,2.45 1.16,0.14 2.04,-1.94 2.88,3.79 5.57,2.83 1.27,-1.86 4.62,-3.78 5.67,-1.09 1.67,-0.99 4.1,0.27 5.52,-0.17 -0.07,-1.45 1.44,-1.93 0.76,-0.72 3.48,0.31 7.66,-0.08 9.71,-3.32 2.34,-1.18 4.33,-4.18 7.15,-3.36 2.71,-0.07 6.67,-0.67 7.5,-3.83 1.38,-2.88 4.81,-4.34 5.49,-7.63 0.34,-3.02 3.69,-0.01 3.89,-2.79 0.79,-1.71 6.06,-0.8 5.2,-2.54 -0.27,-1.98 1.64,-2.11 0.91,-0.61 1.97,-1.13 4.24,-0.33 5.11,0.95 0.95,1.76 2.34,-1.7 3.43,0.93 2.07,0.94 4.5,1.8 3.64,4.81 0.12,2.83 2.56,6.38 5.64,4.35 1.45,-1.61 6.05,-1.12 6.12,-0.28 -2.87,1.25 2.28,4.65 -1.45,5.76 -2.31,0.86 -1.86,1.74 0.02,2.55 2.07,1.41 1.16,4.02 3.6,4.69 1.23,1.57 1.59,5.71 3.8,4.2 0.43,2.37 -1.79,7.52 2.74,6.05 2.64,-0.44 0.94,3.97 3.94,4.02 3.58,1.02 -1.74,2.3 -1.12,4.76 -1.2,0.98 -0.5,-3.85 -3.12,-2.67 -1.98,1.2 -2.57,4.14 -5.61,3.29 -2.88,-0.31 -4.84,1.72 -7.02,2.7 -0.69,1.88 -0.86,5.21 -2.91,2.44 -2.75,-0.22 -2.61,4.46 -5.58,4.92 -2.98,1.72 -6.75,1.93 -9.15,4.66 -2.61,2.66 -4.36,6.14 -7.61,8.16 -2.25,1.32 -4.52,3.36 -7.26,3.28 -3.54,-1.52 -7.49,-0.78 -9.08,3.03 -1.68,2.28 -5.43,4.75 -7.39,2.82 -3.82,-1.14 -4.64,3.62 -2.75,6 0.73,1.14 2.5,1.57 0.17,2.12 -3,0.1 0.83,3.76 -2.09,4.07 1.59,1.89 -1.39,2.48 -1.35,0.31 -1.32,-1.73 -3.85,-3.07 -1.43,-5.18 3.46,-2.09 -0.87,-8.48 -3.12,-4.45 -0.21,1.09 -4.52,4.06 -1.07,3.29 -0.14,0.32 -3.7,3.62 -5.39,1.57 -3.14,-1.5 -6.7,0.91 -7.75,3.93 -2.31,1.12 0.64,5.77 -2.52,4.44 -0.89,2.68 -3.25,3.27 -5.84,4.06 -1.96,1.06 -3.83,3.65 -6.37,2.47 -2.84,-1.55 -5.07,-4.65 -8.7,-4.14 -2.94,-0.38 -6,-0.94 -8.9,-0.06 -3.48,-0.29 -3.26,3.57 -2.85,5.62 -0.19,1.75 1.15,3.5 -1.34,2.67 -2.13,0.36 -2.94,2.88 -4.85,3.38z m-22.48,-0.92c1.54,-1.56 1.67,0.46 0,0z m4.91,-2.51c-0.79,-0.93 0.97,-1.15 0,0z m-7.81,-0.87c-2.21,-0.79 -0.04,-1.14 0.54,-0.39 -0.12,0.2 -0.29,0.4 -0.54,0.39z m-17.07,-35.78c-2.05,-1.66 3.84,-4.8 1.02,-1.64 -0.17,0.27 -1.7,3.54 -1.02,1.64z m-2.5,-4.63c-2.27,-0.95 2.99,-3.59 0.8,-5.77 -1.18,-2.59 4.67,-3.55 1.64,-6.24 -1.25,-1.27 -3.7,-1.75 -1.56,-3.41 0.31,-2.43 2.93,-0.92 3.7,-3.21 1.99,-1.8 4.08,2.49 6.12,-0.22 3,-2.82 1.8,3.03 4.59,3.75 2.54,1.72 5.71,1.31 8.59,1.46 1.59,1.71 -1.83,5.17 -3.31,2.87 -1.59,0.83 -4.21,-0.49 -5.46,2.07 -2.23,0.06 -4.36,0.17 -4.68,3.06 -0.43,2.55 -2.87,5.66 -5.23,3.75 -1.9,0.1 -3.3,1.78 -5.2,1.9z\",\"name\":\"Turkey\"},\"am\":{\"path\":\"m631.96,389.85c-1.96,-0.78 -2.5,-4.05 -4.9,-3.4 0,-2.98 -2.99,-2.85 -3.89,-0.42 -0.72,0.59 -2.05,-1 -2.73,0.47 -1.44,-4.24 -3.82,2.15 -6.08,-0.34 -2.43,-1.36 -5.05,-0.13 -7.33,0.88 -1.6,1.02 -2.24,-1.35 -3.25,-2.19 -0.22,-2.63 -0.35,-6.8 -3.95,-6.8 -1.56,-1.33 3.34,-2.22 3.67,-4.1 2.01,-1.81 4.84,-2.17 7,-3.75 -1.93,-0.72 2.92,-0.35 0.29,0.72 0.12,2.73 3.55,-1.6 5.25,0.33 2.07,0.17 -1.51,3.12 1.09,4.06 1.57,1.97 7.78,-0.09 6.04,3.56 -1.81,0.88 -2.21,2.81 0.36,2.27 2.62,0.26 4.73,3.06 7.3,0.67 1.25,-0.38 -1.56,2.52 0.95,2.4 1.37,0.14 2.22,0.32 0.58,1.07 -0.16,1.55 3.78,3 0.58,4.04l-0.53,0.37 -0.44,0.16 0,0z\",\"name\":\"Armenia\"},\"cy\":{\"path\":\"m527.35,491.44c-2,0.03 -5.42,-2.87 -2.34,-3.85 0.27,-2.84 4.77,-0.45 3.78,-3.88 -1.1,-2.02 2.82,-0.4 4.03,-1.67 3.21,-1.08 5.34,-3.84 7.9,-5.9 -1.85,1.69 -5.66,5.67 -1.55,7.09 -1.16,0.96 -4.02,1.69 -3.88,3.92 -1.79,0.94 -4.14,2.55 -4.75,3.95 -1.18,-1.33 -2.1,0.23 -3.19,0.34z\",\"name\":\"Cyprus\"},\"ie\":{\"path\":\"m160.13,300.45c-1.94,-0.73 -5.41,-0.29 -5.93,-1.1 2.68,-0.96 1.02,-3.47 -1.27,-2.29 -2.17,-0.03 4.61,-0.27 1.86,-1.87 -1.29,0.35 -5.82,0.84 -4.6,-0.88 0.33,-2.41 5.15,0.07 4.57,-2.91 -1.5,-0.99 -3.62,0.6 -3.81,-1.26 1.2,-0.91 6.26,2.54 3.91,-0.67 0.38,-1.38 3.44,-1.82 5,-1.34 1.1,0.96 5.65,0.21 3.16,-0.84 -0.11,-2.83 -2.54,-0.03 -3.01,-0.47 -0.23,-0.23 -3.43,-0.5 -1.1,-1.34 2.22,-1.01 0.54,-4 2.82,-3.42 2.56,1.02 3.91,-3.17 0.52,-2.46 -1.68,0.14 -2.56,-0.23 -2,-1.83 -0.18,-2.01 -5.12,-1.21 -3.94,-2.82 2.15,0.5 2.19,-2.65 4.57,-1.69 2.67,-0.16 1.13,-2.7 -0.21,-3.26 0.29,-1.31 0.02,-3.18 -0.75,-3.28 2.65,-0.82 4.91,0.87 5.93,2.56 1.46,-1.86 3.2,1.45 5.23,1.05 -1.45,-1.4 -1.04,-3.03 1.32,-2.78 1.21,-0.78 -0.05,1.72 1.32,2.45 1.11,1.84 4.55,5.05 6.16,2.17 -0.49,-1.92 2.26,-1.77 1.43,0.13 0.94,1.15 1.06,2.27 0.8,3.26 0.63,1.48 4.47,-0.64 2.75,0.86 -2.34,0.42 -0.05,3.2 -0.77,4.83 0.46,1.62 -0.08,2.98 -1.28,2.32 1.02,2.41 1.46,5.54 -0.48,7.61 -1.25,2.01 -3.34,4.38 -4.14,6.02 -2.56,-0.85 -5.09,-0.34 -7.67,-1.06 -1.16,0.41 -0.62,2.52 -2.3,1.42 -1.5,0.14 -2.91,2.49 -3.4,0.19 -2.29,-1.05 -1.04,2.27 -2.69,2.29 -0.11,0.95 -1.6,-1.12 -2.01,0.4z m13.73,-33.46c2.33,-2.06 -0.9,-1.95 -2,-2.14 -1.29,-0.53 -2.55,-1.96 -0.25,-1.08 1.89,0.69 2.47,-1.66 2.15,-3.1 -1.16,-1.71 7.03,-1.16 4.23,1.31 -0.31,1.85 2.66,-0.08 1.09,1.63 -0.53,1.73 -5.09,0.69 -2.83,2.72 -0.77,0.31 -1.61,0.36 -2.38,0.64z m6.45,-5.05c0.02,-0.88 0.61,0.23 0,0z\",\"name\":\"Ireland\"},\"gb\":{\"path\":\"m182.64,325.46c0.06,-1.95 -4.47,-2.09 -0.74,-2.3 2.67,-0.61 3.94,-3.31 6.49,-4.14 2.12,-0.77 1.4,-4.5 3.94,-3.31 1.45,-3.67 5.43,-1.45 8.06,-0.26 2.91,0.6 2.6,-3.72 5.07,-4.06 1.35,-0.1 4.35,-3.93 1.42,-2.57 -1.86,1.99 -5.05,0.84 -6.82,2.84 -2.27,-0.51 -2.72,-5.62 -5.77,-3.31 0.24,-2.37 -1.53,-4.27 -3.69,-2.44 -0.87,0.75 -2.94,0.79 -1.58,-0.17 0.16,-1.27 -3.6,-0.88 -1.52,-2.98 1.52,-0.74 3.44,0.29 4.82,-1.36 2.13,0.95 4.49,-1.92 5.83,-3.38 1.68,-2.26 0.05,-8.36 -3.37,-5.58 -1.46,1.33 -0.19,-1.41 0.97,-0.91 1.28,-1.84 2.91,-2.79 5,-2.8 1.2,0.32 4.62,-0.54 5.23,2.01 0.71,1.84 0.61,0.28 0.62,-0.81 -0.49,-1.45 0.01,-1.88 0.83,-1.63 -1.44,-2.21 1.58,-2.99 1.67,-4.6 -1.45,-0.49 -1.63,-2.14 0.09,-1.51 0.69,-1.16 0.79,-2.38 1.37,-3.56 -0.63,-2.27 -3.62,2.01 -2.38,-1.12 -0.36,-1.35 -2.39,0.41 -1.46,-1.51 -2.08,-2.31 0.12,-6.19 3.07,-5.98 2.74,-1.73 -0.83,-1.86 -2.08,-2.37 -0.92,0.48 -3.28,2.29 -4.42,1.19 -1.32,1.2 -1.79,-3.4 -3.43,-0.83 0.32,2.13 0.14,1.46 -0.76,0.01 -1.33,-0.68 -2.66,-1.39 -1.32,-3.18 1.13,-2.26 5.13,-4.6 2.33,-7.17 0.52,-2.42 1.47,-4.31 0.99,-6.83 -1.19,-2.25 -5.91,3.7 -3.96,0.19 -1.17,-1.95 1,-2.29 1.54,-3.39 -1.93,-1.31 3.92,-1.92 1.97,-3.06 1.93,-2.14 -1.4,-1.12 -1.91,0.17 -2.64,0.37 -2.78,2.95 -5.17,3.25 1.64,-1.88 1.56,-3.32 4.36,-3.1 0.45,-1.67 -5.98,-1.25 -1.81,-1.19 1.82,-0.7 -1.08,-3.69 1.83,-2.58 2.2,1.18 2.55,-1.86 1.62,-2.28 3.21,-0.32 0.94,-5 -0.12,-6.67 -1.49,-3.19 1.62,1.59 1.66,-1.31 -0.16,-0.99 3.11,1.17 2.06,-1.21 -1.02,-1.19 -0.29,-1.17 0.73,-0.82 0.07,-1.49 0.01,-1.71 1.64,-1.31 1.56,-1.15 -0.74,-2.21 0.86,-3.26 -0.88,-3.08 1.49,-0.59 1.87,-0.27 0.74,0.04 0.92,2.92 2,0.79 2.21,-0.9 6.43,0.18 7.86,0.3 -1.51,1.12 -1.16,3.83 -3.76,4.28 -1.25,1.24 -5.25,2.21 -4.45,4.19 2.02,-0.77 1.46,0.73 0.51,0.2 -2.65,-1.31 -3.91,3.83 -0.65,3.27 1.6,-1 4.76,-1.27 6.96,-0.43 2.15,0.77 9,0.4 6.36,4.13 -2.17,1.32 -1.95,4.3 -3.79,5.88 -1.36,2.24 -3.73,4.99 -6.67,3.85 -2.54,0.88 -0.66,2.52 1.1,1.38 0.78,-0.5 3.15,3.35 0.84,1.99 -2.07,-0.28 -3.16,1.31 -5.18,1.63 -0.02,2.53 4.56,1.95 5.82,1.47 2.3,1.2 3.8,3.55 4.55,5.85 2,2.23 0.13,5.79 1.35,8.49 -0.45,3.02 1.26,4.86 3.81,6.01 1.66,1.49 2.34,4.19 3.57,5.37 -2.57,1.95 1.1,5.12 0.44,6.31 -2.04,-0.08 1.34,3.78 1.3,5.11 0.78,2.24 -5.08,2.32 -2.09,4.71 1.56,2.69 3.3,0.05 4.83,-1 2.51,1.1 6.37,1.79 6.61,5.25 -0.28,2.6 -1.71,7.67 -4.87,6.84 -2.14,0.29 1.39,3.23 -1.35,2.01 -1.64,-1.62 -4.38,2.64 -1.7,1.39 1.98,0.5 -1.21,2.23 -2.35,1.41 -3.04,0.03 -0.52,3.18 1.11,2.57 2.13,-1.55 -0.82,1.67 1.85,1 1.37,0.01 4.16,-1.13 2.4,1.04 0.18,1.94 -3.04,1.77 -3.79,3.01 -3.03,-0.26 -5.14,2.46 -7.81,0.22 -2.14,-0.87 -5.12,1.06 -5.71,-1.04 -0.97,0.35 -1.61,-1.39 -2.37,0.11 -0.34,-1.96 -3.3,-2.15 -1.9,0.13 -1.76,0.29 -4.97,-1.2 -5.38,0.98 -2.03,-0.7 -3.26,-0.69 -4.99,-2.14 -2.67,-1.4 -6.68,-1.13 -6.68,2.71 -0.68,3.61 -3.23,0.34 -4.72,-0.57 -1.81,-0.09 -4.28,-1.13 -5.91,0.19 -1.52,-0.34 -2.18,1.47 -2.78,2.5z m18.76,-70.13c1.65,1.54 3.03,-0.19 0.57,-0.92 -0.47,-0.23 -0.39,0.68 -0.57,0.92z m-3.12,31.93c0.55,0.53 0.27,0.88 0,0z m-1.17,-10.07c0.02,-1.53 3.39,-4.02 1.66,-1.22 -0.39,0.58 -0.96,1.08 -1.66,1.22z m-10.63,-1.73c-1.59,-0.31 -2.08,-2.29 -3.03,-0.36 -1.91,-0.73 1.49,-2.2 -1,-2.29 0.13,-2.31 -2.8,-4.88 -3.79,-2.04 0.08,3.32 -3.97,-0.09 -4.6,-1.78 -1.85,-2.46 4.1,-0.54 2.7,-3.31 3.07,0.55 2.59,-4.32 5.36,-2.92 1.06,-1.19 2,-1.61 3.15,-1.03 2.23,-0.98 4.88,1.21 3.52,3.35 -0.19,2.26 3.15,1.24 0.87,3.27 -2.06,1.44 -0.04,2.03 1.25,1.47 1.84,1.95 -0.91,4.87 -2.77,3.75 -0.28,0.8 -0.67,1.84 -1.67,1.88z m10.61,-7.92c-1.67,-0.09 0.88,-0.41 0,0z m-4.29,-6.97c1.08,-0.83 2.3,-4.85 2.33,-3.8 -0.86,1.14 -0.52,3.62 -2.33,3.8z m2.73,-6.13c0.35,-1.24 0.97,-0.17 0,0l0,0z m-3.97,-25.03c-1.05,-1.04 1.79,-1.33 0,0z m1.85,-1.48c-0.51,-1.01 -1.32,-1.32 -0.4,-1.6 -1.54,-1.3 0.12,-2.32 1.22,-0.9 1.22,-0.53 0.35,-2.59 1.9,-1.78 0.84,-0.86 3.02,-1.98 1.27,-0.28 -1.41,1.61 -1.17,5.41 -3.42,2.95 -0.74,0.32 -0.1,1.35 -0.58,1.61z m38.33,-20.76c-1.93,-1.65 4.17,-0.89 0.99,-0.51l-0.47,0.12 -0.53,0.39 0,0z\",\"name\":\"United Kingdom\"},\"ch\":{\"path\":\"m292.05,389.98c-1.12,-2.03 -1.49,-3.96 -4.14,-4.68 0.24,-1.27 0.28,-4.19 -2.02,-2.48 -2.76,1.07 -0.98,6.19 -4.8,5.6 -1.34,-2.05 -4.35,2.18 -5.85,-0.49 -0.66,-1.9 -1.54,-2.82 -1.22,-5.23 -0.26,-1.58 -4.49,-1.34 -5.35,0.35 0,0.96 -0.92,3.04 -1.36,2.14 2.08,-0.65 -0.4,-3.99 1.78,-5.21 1.94,-0.57 2.18,-1.6 2.3,-3.5 2.42,-0.82 3.23,-3.53 5.4,-5.02 0.92,-1.36 3.51,-0.53 3.7,-1.93 2.51,-0.36 5.31,-0.33 7.48,-0.01 1.57,-0.63 0.5,-2.03 0.36,-2.23 1.31,-1.57 1.36,1.33 2.5,0.98 1.1,0.96 4.91,-0.68 5.97,2.04 0.36,1.7 -2.95,6.33 1.28,6.08 1.9,0.87 4.09,3.47 5.78,0.3 -0.28,1.18 -0.17,4.33 -0.42,4.42 -1.87,-2.39 -4.17,0.79 -2.27,2.33 0.4,3.64 -0.7,-1.85 -2.69,-0.06 -1.62,2.46 -2.25,-1.46 -3.43,-1.76 -2.43,0.76 -0.07,4.33 -2.78,4.97 -1.02,0.89 -0.72,2.33 -0.22,3.4z M275.63,370.8c0.49,-1.83 2.92,0.14 0.45,0.04l-0.53,0.11 0.08,-0.14 0,0z\",\"name\":\"Switzerland\"},\"at\":{\"path\":\"m338.89,381.72c-2.92,-0.37 -5.68,-0.8 -8.68,-1.29 -3.41,-0.44 -7.47,0 -10.13,-2.59 -0.49,-1.79 -2.01,-0.99 -0.74,-2.9 -1.54,-1.34 -4.15,1.63 -6.36,0.74 -2.58,-0.56 -3.71,1.14 -4.67,3.02 -0.77,-1.61 -4.07,-0.58 -3.15,-2.45 -2.02,-1.72 -4.43,3.34 -5.34,-0.45 -2.71,0.05 -3.32,-2.5 -1.76,-4.48 -0.11,-1.92 0.65,-1.26 2.03,-1.24 0.77,2.34 2.91,4.54 4.57,1.3 -0.46,-2.13 1.09,-1.56 2.51,-1.62 1.01,3.44 4.52,1.32 6.34,0.3 1.07,-2.1 5.55,-0.39 5.96,-2.32 1.02,0.88 3.01,0.37 3.69,0.59 0.18,3.89 5.07,0.73 2.69,-1.53 -0.2,-1.43 -1.39,-3.39 -2.11,-5.03 1.93,-1.47 5.36,-2.58 5.54,-5.05 1.88,0.9 2.55,-1.98 3.13,-1.73 2,1.9 4.33,0.91 6.33,0.45 0.7,-1.97 2.92,-2.39 2.31,-5.03 1.96,0.92 4.91,0.17 6.97,1.75 1.9,2.39 4.37,-0.77 6.11,0.38 1.43,-0.03 2.77,1.31 1.21,2.94 -0.45,2.79 3.86,4.35 2.35,7.1 1.97,3.48 -4.51,0.08 -4.56,2.79 1.63,1.11 3.27,1.96 0.42,2.95 -0.98,1.81 1.97,4.01 -0.88,5.49 -1.01,1.14 -3.1,1.64 -2.24,3.63 -2.75,-0.79 -4.87,2.27 -7.7,0.89 -1.89,0.31 -2.39,2.61 -3.87,3.38z\",\"name\":\"Austria\"},\"cz\":{\"path\":\"m335.18,355.05c-3.65,-0.41 -4.96,-4.57 -8.41,-5.66 -1.31,-1.75 -2.19,-2.91 -4.32,-3.66 -1.8,-1.56 -2.64,-3.53 -1.6,-5.57 -0.16,-1.57 -4.02,-3.53 -3.2,-4.17 1.42,3.2 2.44,-2.24 4.26,-2.25 1.35,1.3 3.09,-0.63 3.77,-1.12 1.58,-1.86 4.18,-2.74 6.59,-3.91 1.63,-0.69 3.11,-2.35 4.59,-0.56 2.65,1.13 2.61,-4.69 4.17,-1.06 1.38,1.66 3.64,0.69 5.11,2.36 0.67,1.75 5.33,-1.17 2.84,1.24 -1.67,2.06 2.09,2.81 2.61,4.74 2.09,1.86 2.12,-0.93 3.96,-1.42 0.43,-1.39 -1.9,-2.7 0.65,-1.55 1.23,1.3 3.29,0.96 4.4,0.53 -3.27,0.95 2.17,5.16 3.09,2.65 2.93,0.44 4.53,2.63 6.07,4.63 -2.15,1.71 -4.92,3.04 -5,6.15 -1.22,2.56 -3.35,3.75 -6.24,3.67 -1.85,1 -3.16,2.67 -5.05,0.79 -2.11,1.83 -4.69,0.96 -6.9,-0.42 -1.92,-1.1 -4.07,-0.45 -5.85,-0.93 -0.34,2.31 -2.03,3.48 -2.87,5.34 -1.07,-1.47 -1.28,0.34 -2.66,0.17z m-0.68,-28.45c-2.43,-2.03 2.32,0.24 0,0z\",\"name\":\"Czech Republic\"},\"sk\":{\"path\":\"m364.44,362.94c-2.39,-2.37 -6.56,-2.63 -7.73,-6.02 -0.46,-2.43 0.4,-6.56 3.64,-6.16 3.23,0.29 4.91,-3 5.9,-5.48 0.17,-1.96 3.95,-5.08 5.19,-3.02 2.43,1.82 3.49,-4.97 4.66,-0.89 1.56,0.35 1.91,0.85 1.91,2.52 2.64,1.02 3.89,-1.84 5.57,-3.22 1.58,-0.07 4.26,1.88 5.1,-0.34 0.99,-1.59 4.74,-1.57 6.47,-0.13 1.28,2.35 6.24,0.73 4.22,4.32 -1.5,2.17 -0.53,7.67 -4.43,6.22 -0.53,-3.18 -3.88,-1.31 -5.83,-0.46 -2.77,-2.02 -4.98,0.68 -5.07,3.51 -1.08,0.67 -2.09,-0.14 -2.29,1.79 -1.29,1.17 -3.96,-2.16 -4.46,1.1 -0.72,2.43 -5.78,-0.07 -5.66,3.66 1.11,2.54 -4.04,1.94 -5.84,2.51 -0.44,0.04 -0.88,0.07 -1.32,0.1z\",\"name\":\"Slovakia\"},\"hu\":{\"path\":\"m369.77,387.01c-2.75,-0.58 -5.39,-1.37 -7.78,-2.73 -2.27,-2.63 -5.77,-3.91 -7.5,-7.04 -1.21,-1.85 -2.06,-2.65 0.1,-3.74 1.43,-1.97 -1.64,-4.55 1.32,-5.48 2.04,-1.7 -3.3,-3.48 -0.09,-2.71 2.81,1.04 3.86,-1.91 3.11,-3.93 1.93,-1.05 3.43,2.43 5.44,2.58 3.24,-0.18 6.53,-0.68 9.48,-2.09 -2.94,-1.84 0.68,-3.88 2.85,-2.99 1.75,-0.27 1.26,-4.31 3.33,-2 2.26,0.8 3.01,-1.99 4.8,-2.5 0.41,-2.48 1.52,-4.92 4.25,-3.08 1.93,-0.18 4.28,-2.95 5.05,0.14 2.1,1.7 4.8,-1.81 6.38,0.84 2.12,-0.07 1.45,3.23 3.34,1.35 3.46,3.21 -4.18,3.49 -4.55,6.38 0.35,2.87 -2.65,4.72 -2.5,7.52 0.37,3.17 -2.46,5.43 -2.51,8.54 0.01,3.02 -4.16,0.17 -4.1,3.12 -3.14,1.57 -7.09,0.21 -9.73,1.82 -1.24,2.36 -3.12,1.16 -4.53,3 -2.57,0.36 -3.31,3.42 -6.16,3.01z\",\"name\":\"Hungary\"},\"lt\":{\"path\":\"m397.76,280.99c-1.28,-1.32 -1.63,-4.58 -4.11,-3.7 -1.13,-2.07 -4.01,-0.28 -3.26,-3.14 1.62,-3.48 -2.4,-7.19 -5.64,-5.13 -2.28,0.26 -5.13,-1.48 -6.05,-2.17 -0.51,-2.23 -1.53,-3.51 -2.2,-5.4 -1.37,-2.68 1.24,-5.63 3.5,-7 1.88,-1.44 4.85,-0.65 6.6,-1.37 0.56,-1.26 2.33,2.09 2.82,-0.31 2.06,-0.86 4.97,0.1 6.62,-0.3 1.76,-0.28 3.35,-0.61 3.78,-2.83 1.19,2.4 3.3,3.12 5.7,2.26 2.79,0.52 4.16,3.86 7.04,4.08 1.64,1.42 -0.82,5.15 2.39,4.69 0.41,1.84 -3.75,0.79 -2.82,3.52 -2.05,1.6 -2.93,3.79 -1.88,6.23 -0.12,2.13 -0.68,3.69 -2.75,4.26 -0.43,1.13 -0.04,1.82 -1.97,2.11 -0.51,1.51 -1.38,2.09 -2.67,3.35 -1.72,-1.32 -3.41,0.53 -5.09,0.87z m13.27,-5.67c-0.11,-1.17 -1.77,-2.09 0.31,-1.22 0.43,0.34 0.36,1.19 -0.31,1.22z\",\"name\":\"Lithuania\"},\"lv\":{\"path\":\"m375.49,257.31c-1.25,-2.79 -1.57,-6.54 -0.19,-9.24 2.63,-2.07 -0.8,-6.67 2.34,-8.6 1.69,0.07 4.11,-4.27 4.4,-1.32 2.44,1.48 4.79,3.19 5.76,5.78 2.55,1.96 6.17,0.07 7.13,-2.71 1.39,-2.75 -1.14,-5.3 -1.86,-7.82 1.34,-1.86 3.66,-3.57 5.64,-3.47 0.08,-0.9 1.63,1.08 2.69,0.67 1.72,0.06 3.13,2.25 4.97,3.22 2.21,0.36 3.53,-2.11 5.72,-1.12 1.76,-0.72 2.78,1.38 4.4,2.33 -0.55,1.5 -1.61,1.77 0.06,2.4 -0.17,1.1 -0.46,3.72 1.44,2.57 1.53,2.66 6.04,5.32 2.65,8.5 -1.42,1.56 -0.49,4.51 -3.48,3.69 -2.28,0.64 -3.94,4.9 -6.51,1.93 -2.03,-2.26 -5.06,-3.95 -7.91,-2.78 -1.1,-1.49 -3.6,-4.26 -4.46,-0.94 -1.47,1.77 -5.35,0.57 -7.87,1.17 -1.87,0.26 -2.16,0.89 -3.44,-0.06 -2.37,1.98 -6.1,0.17 -8.37,2.54 -1.6,0.14 -2,4.17 -3.11,3.25z\",\"name\":\"Latvia\"},\"md\":{\"path\":\"m454.92,374.42c-0.33,-2.09 -1.86,-4.78 -2.23,-7.4 0.38,-3.56 0.07,-7.47 -2.96,-9.91 -3.2,-3.43 -7.96,-5.44 -9.93,-9.93 -0.24,-2.34 -6.31,-3.34 -2.39,-4.03 2.67,0.33 3.73,-3.48 6.57,-2.14 1.32,0.97 1.83,2.54 3.78,1.18 -0.02,0.82 2.42,2.73 2.56,0.37 1.33,-1.44 3.96,3.6 4.43,1.55 1.2,-1.55 0.65,3.03 1.22,3.93 0.07,2.32 4.57,4.13 4.42,2.59 -0.43,1.81 0.64,4.31 3.01,4.64 2.61,-0.41 1.35,4.32 2.84,4.34 -0.24,1.12 -3.35,-2.1 -2.5,0.78 -1.04,0.18 -2.3,-2.64 -2.02,-0.03 -1.22,0.21 -2.31,-1.71 -3.62,0.36 -1.34,1.85 1.39,3.73 0.77,5.48 -0.5,2.25 -2.95,4.34 -2.23,7.32 -0.82,-0.46 -1.48,0.35 -1.72,0.91z\",\"name\":\"Moldova\"},\"ro\":{\"path\":\"m414.71,404.53c-2.94,-0.37 2.3,-2.82 -0.89,-3.86 -1.36,-0.38 -6.12,-1.72 -3.63,-3.39 3.62,-1.4 -2.29,-3.42 -3.82,-3.63 -1.25,0.73 1.78,4.33 -1.06,3.46 -0.47,-2.42 -4.24,0.23 -4.49,-2.27 -1.54,0.07 -1.87,0.1 -0.31,-0.74 0.46,-1.41 -2.15,-1.17 -0.71,-2.27 0.07,-4.02 -6.25,-1.24 -6.86,-4.86 0.56,-2.93 -2.25,-4.23 -4.45,-5.46 -1.23,-1.35 3.36,-1.23 3.59,-2.71 4.37,0.45 2.54,-4.6 4.68,-6.55 1.28,-2.95 0.7,-6.3 2.76,-8.97 0.62,-2.75 1.58,-5.21 4.69,-5.79 2.24,-1.25 2.4,-5.8 5.34,-3.67 2.44,-0.6 4.8,0.38 7.17,-0.21 2.51,-1.94 3.7,1.15 5.91,1.18 2.03,-1.31 2.68,-4.39 5.67,-3.96 2.31,-0.28 4.86,-1.95 4.49,-4.32 1.75,-2.97 4.98,-1.01 6.29,1.29 1.93,4.74 7.06,6.72 10.28,10.39 2.93,2.37 2.34,6.09 2.36,9.35 0.53,2.52 1.69,4.86 1.92,7.13 1.82,1.67 4.12,3.74 6.83,2.36 1.37,-1.24 4.51,-5.35 6.51,-2.84 1.18,1.97 2.1,5.63 -1.2,6.33 -1.85,1.04 -1.42,-3.67 -3.88,-1.61 -1.51,1.92 1.84,2.51 -0.11,4.51 -0.61,2.57 2.04,-0.86 0.82,1.98 -2.28,2.63 -0.38,5.59 -0.04,8.5 -1.15,2.51 -5.2,-0 -6.02,-1.11 -1.09,1.46 -1.67,-0.92 -3.54,0.54 -1.82,0.49 -3.31,-1.46 -5.44,0.01 -3.08,1.35 -6.52,2.81 -8.17,5.95 -1.31,3.55 -4.97,3.29 -8.01,2.77 -2.75,-0.48 -4.92,1.71 -7.44,1.75 -2.74,-0.25 -5.83,-1.37 -8.31,0.42l-0.52,0.24 -0.43,0.06 0,0z\",\"name\":\"Romania\"},\"bg\":{\"path\":\"m419.98,434.43c-0.77,-1.6 0.33,-5.03 -1.67,-6.74 -1.14,-2.34 -7.05,-2.04 -4.41,-5.19 -0.49,-1.45 -2.46,-4.37 -1,-5.23 2.16,0.54 4.75,-3.78 2.92,-5.59 -2.57,-1.55 -5.66,-2.78 -5.98,-6.24 -0.97,-2.47 2.74,-1.99 1.69,-4.32 2.08,-0.06 3.2,1.11 1.22,2.59 -0.15,3.28 3.83,0.6 5.65,0.71 2.58,-0.64 5.13,0.94 7.65,0.08 2.61,-1.18 5.46,-2.28 8.27,-1.01 3.32,0.37 5.6,-2.51 6.93,-5.13 2.16,-2.35 5.29,-3.61 8.27,-4.56 1.69,0.75 3.92,0.92 5.2,0.32 0.77,1.61 2.46,-1.39 3.17,1.07 1.58,2.18 6.09,-1.71 5.26,2.45 0.21,2.63 -4.48,0.38 -4.02,3.94 -1.88,1.85 1.39,5.32 -0.17,7.14 -1.24,1.25 -1.7,3.03 -2.93,4.26 0.82,1.66 4.27,-0.37 3.64,2.02 1.44,0.86 3.71,1.89 1.23,2.18 -1.9,3.08 -4.18,-1.08 -6.49,0.5 -1.52,1.95 -4.37,1.58 -4.82,4.55 -1.37,1.04 -4.43,1.49 -2.91,4.13 3.08,3.26 -3.78,2.7 -5.13,4.68 -1.95,0.62 -4.22,-2.41 -5.93,-0.29 -2.04,-2.63 -5.18,-1.43 -7.46,0.15 -2.06,2.52 -5.54,1.17 -7.76,3.47l-0.43,0.06 0,0z\",\"name\":\"Bulgaria\"},\"al\":{\"path\":\"m396.5,458.88c-2.16,0.08 -0.81,-2.55 -2.74,-3.41 -0.91,-2.13 -5.81,-2.06 -5.48,-3.81 2.36,-1.04 -1.62,-3.19 -0.48,-4.99 0.36,-1.26 2.66,-2.2 0.57,-3.3 1.39,-2.49 -3.57,-5.96 0.77,-6.52 2.37,-0.03 -1.92,-0.89 -0.55,-2.51 -0.14,-2.15 -3.24,-0.23 -2.21,-2.9 -1.48,-2.28 0.07,-4.41 1.36,-6.71 1.01,3.42 4.23,-2.13 4.66,1.78 1.21,1.69 4.6,1.07 3.88,4.25 -0.33,2.87 -0.02,5.6 0.51,8.19 0.21,1.77 2.38,5.51 4.15,4.74 1.69,-0.32 2.5,4.45 0.05,5.02 -0.86,1.75 -0.27,5.37 -3.24,5.56 -2.01,1.26 1.3,2.75 -0.81,3.98l-0.23,0.5 -0.19,0.12 0,0z\",\"name\":\"Albania\"},\"ee\":{\"path\":\"m378.18,234.33c-0.29,-1.42 0.77,-0.85 0,0z m29.34,-1.46c-2.55,-0.18 -3.15,-3.15 -5.39,-3.23 -0.21,-1.76 -1.21,1.44 -2.27,-0.65 -2.12,-1.63 -4.52,1.21 -6.27,2.48 -1.26,-0.67 1.67,-5.98 -1.81,-5.74 -1.1,1.92 -1.82,2.36 -3.83,1.3 -0.08,-2.54 -3.43,-2.95 -2.01,-5.67 0.96,-2.03 -3.8,-2.6 -0.62,-3.95 1.35,-0.61 4.23,-0.97 2.3,-2.67 2.82,-0.9 4.5,-2.4 7.47,-2.41 1.66,-0.56 1.5,-2.75 3.42,-1.67 0.91,-1.72 4.64,0.07 6.63,-0.66 2.13,-0.1 4.26,0.22 6.03,-1.29 -1.43,2.67 -1.02,5.84 -2.24,8.62 2.11,2.2 1.2,5.64 3.15,7.83 0.24,0.52 1.89,2.24 1.35,2.38 -0.73,0.83 -0.81,2.27 -1.35,2.68 1.66,2.85 -2.28,0.25 -2.89,1.26 -0.29,0.68 -0.83,1.4 -1.65,1.38z m-28.89,-1.28c-1.29,-0.43 -2.59,-1.4 -0.92,-2.29 -0.22,-0.67 0.59,-1.5 0.99,-0.78 -0.53,-2.4 4.69,-3.37 4.19,-1.27 0.07,2.48 -3,2.5 -4.26,4.33z m1.02,-7.14c-0.54,-0.34 -0.96,-2.14 -1.01,-2.27 0.8,-1.29 0.79,-1.32 2,-0.55 1.89,-0.4 1.35,1.06 -0.17,0.69 0.83,0.84 0.55,2.1 -0.81,2.14z\",\"name\":\"Estonia\"},\"lb\":{\"path\":\"m557.2,501.39c0.58,-2.8 0.32,-5.88 1.17,-8.53 -0.92,-2.02 1.77,-3.87 0.09,-5.88 -0.28,-2.6 2.65,-3.83 2.23,-6.01 1.03,-0.93 3.35,-2.1 2.42,0.09 1.64,0.57 3.96,0.89 3.49,3.25 -1.11,1.34 -2.61,3.51 -1.84,4.51 -2.48,0.69 -2.89,3.8 -1.53,5.08 -0.04,2.15 -2.43,3.34 -3.12,4.26 0.57,1.87 -1.28,3.1 -2.91,3.25z\",\"name\":\"Lebanon\"},\"ad\":{\"path\":\"m225.99,427.08c-4.4,2.06 -0.81,-5.33 0.49,-0.98l-0.2,0.53 -0.29,0.45z\",\"name\":\"Andorra\"},\"sm\":{\"path\":\"m321.66,413.68c0.71,-2.83 1.59,1.21 0,0z\",\"name\":\"San Marino\"},\"mc\":{\"path\":\"m273.92,416.64c-2.8,-1.65 2.23,-1.64 0.39,-0.13l-0.39,0.13 0,0z\",\"name\":\"Monaco\"},\"lu\":{\"path\":\"m268.7,344.38c-1.34,-0.37 0.48,-2.79 -0.9,-3.99 -1.47,-1.94 2.76,-5.38 1.98,-1.49 0.37,1.78 4.79,2.33 1.84,4.09 -0.47,1.66 -1.49,1.22 -2.93,1.39z\",\"name\":\"Luxembourg\"},\"fr\":{\"path\":\"m292.72,444.55c-0.12,-2 -3.86,-0.94 -2.75,-2.99 -2.34,-0.62 -0.11,-2.51 0.75,-3.57 0.35,-0.55 -3.76,1.07 -1.24,-0.63 0.32,-1.34 -2.6,-2.05 -0.51,-3.01 -0.25,-1.14 -1.13,-1.51 -0.02,-1.71 -0.89,-2.66 3.14,-1.71 3.48,-3.51 1.94,0.96 2.98,-0.2 2.33,-2.11 1.79,-2.18 -0.99,3.51 1.02,4.43 1.2,3.29 -2.09,6.35 -1.33,9.73 -0.95,0.89 -1.15,2.64 -1.75,3.36z m-58.87,-15.16c-2.27,-2.01 -5.59,-0.28 -7.2,-2.87 1.48,-2.11 -2.14,-2.13 -2.92,-2.19 -1.78,-1.34 -3.82,-2.36 -5.67,-3.53 -1.54,0.58 -1.53,2.27 -3.51,1.46 -1.54,0.07 -2.66,-0.59 -3.93,-0.35 -0.8,-2.33 -2.93,-1.69 -4.53,-2.09 -1.06,-2 -2.81,-3.32 -5.06,-3.18 -1.57,-1.15 -1.33,-1.7 -1.45,-3.5 -1.23,-0.24 -3.44,-0.96 -1.02,-1.55 3.04,-3.75 2.96,-8.84 4.5,-13.21 0.85,-1.4 2.99,0.68 2.08,-1.85 -1.2,-1.06 -2.14,-0.84 -1.15,-2.81 1.1,-1.59 0.63,-5.99 2.35,-6.1 1.89,1.55 0.82,3.87 1.88,5.79 -0.05,2.01 2.7,3.12 1.93,0.38 -2.25,-2.11 -0.08,-5.11 -2.23,-7.23 -1.52,-1.07 -0.74,-1.21 -0.52,-2.39 -2.12,-1.87 0.87,-2.79 -0.3,-5.08 -0.91,-0.78 2.06,-4.15 0.31,-2.92 -1.7,1.58 -2.8,-0.99 -4.34,-1.54 -1.66,-0.48 -1.34,-4.04 -3.07,-5.27 1.45,-1.37 2.03,-3.5 -0.17,-4.21 -1.28,-1.38 -1.85,-1.7 -0.64,-3.42 1.28,-3.05 -5.85,-0.88 -2.14,-2.3 -0.4,-2.26 -4.49,0.28 -3.4,-2.31 -0.36,-2.67 -3.56,0.62 -4,-1.74 -2.28,-0.09 -2.42,-4.2 -4.81,-1.84 -1.78,1.57 -0.33,-2.39 -2.37,-2.56 1.59,0.62 3.87,-0.51 1.92,-2.13 1.84,1.1 2.88,-0.7 0.65,-1.01 0.13,0.05 1.59,-2.28 -0.46,-1.5 -1.34,1.45 -4.19,-0.07 -1.73,-1.25 1.3,-0.76 2.79,-0.81 2.95,-0 1.4,-0.85 2.87,-0.97 3.66,0.09 0.65,-1.02 3.21,1.35 3.19,-1.26 2.43,-1.62 2.22,2.03 2.47,2.06 1.69,-2.75 1.86,2.19 3.17,3.11 1.26,-0.74 3.83,-3.16 3.73,-0.14 1.62,2.63 2.82,-1.65 4.78,0.11 0.83,-0.47 4.32,1.06 3.36,-0.07 -1.65,-1.65 -2.42,-4.02 -1.35,-6.19 0.76,-2.4 -2.42,-4.6 -1.19,-7.04 1.21,1.81 5.2,-0.98 3.31,2.03 -0.19,2.43 1.93,3.76 3.68,2.84 2.59,0.56 5.12,3.56 7.68,1.11 2.16,-0.17 1.32,-1.39 0.53,-2.64 1.54,-3 5.41,-2.03 8.05,-3.16 1.81,-0.67 4.58,-1.88 5.31,-3.4 -1.75,-1.03 0.04,-4.18 -0.3,-6.15 0.44,-3.1 4.2,-2.36 6.44,-2.8 0.98,0.77 1.49,6.24 4.58,4.17 1.46,-0.35 0.7,4.82 3.67,3.62 -0.14,3.07 3.12,1.53 4.18,2.82 -0.64,1.44 -0.56,1.83 -0.25,2.78 -0.88,2.67 3.93,2.4 4.83,0.49 0.88,1.69 -1.1,3.55 1.66,3.61 2.55,0.29 2.49,4.49 5.21,3.37 2.65,1.52 6.43,-0.33 7.5,3.53 0.45,0.9 2.96,3.41 2.01,0.96 0.54,-1.16 0.79,1.42 0.5,1.49 1.47,-0.3 3.92,-1.81 4.53,0.32 1.92,0.28 7.08,0.84 3.22,2.94 -2.39,2.02 -1.66,5.55 -3.51,7.88 -0.4,2.45 -0.29,5.21 -1.25,7.67 -1.85,0.33 -4.65,-1.22 -4.94,2.33 0.2,1.24 -1.59,3.49 -3.64,4.12 -0.97,0.48 0.4,3.01 -1.75,3.44 -3.21,1.4 -0.53,4.69 -2.87,6.5 1.14,2.08 4.46,-0.29 3.63,-2.44 2.64,-1.79 4.27,0.65 3.32,3.02 0.97,1.33 2.7,2.42 0.16,3.24 -1.7,2.56 4.01,4.8 1.9,7.11 -0.78,1.84 -6.17,0.54 -3.47,3.57 1.68,1.38 4.39,3.16 1.43,4.85 -1.24,3.13 2.12,7 5.6,6.15 2.64,-0.69 -0.62,4.28 -2,4.64 -1.17,-0.72 -4.03,-3.03 -4.38,0.05 0.55,1.28 1.71,2.84 -0.72,3.26 -2.25,0.54 -0.87,3.61 -3.15,2.9 -1.62,1.27 -2.66,0.82 -4.12,0.04 -1.35,1.82 -1.33,-1.1 -3.38,-0.87 -2.84,0.75 -0.64,-3.44 -1.53,-2.84 -0.63,0.89 -3.09,1.3 -1.09,0.56 1.49,-2.74 -3.49,-2.8 -2.54,-0.31 -2.24,0.5 -1.46,-2.79 -1.57,-3.36 -1.08,1.05 -1.96,2.65 -0.52,3.91 -1.04,-0.28 -1.31,-2.83 -3.36,-2.08 -2.5,-1.7 -5.52,-1.71 -6.96,1.2 -2.68,0.79 -5.03,2.02 -5.69,4.77 0.13,1.89 -0.47,3.75 0.65,5.49 -1.42,-0.84 -3.32,-0.38 -4.33,0.88z\",\"name\":\"France\"},\"li\":{\"path\":\"m296.51,373.48c1.45,1.4 -0.83,3.11 -0.11,0.58 0.04,-0.19 0.08,-0.38 0.11,-0.58z\",\"name\":\"Liechtenstein\"},\"nl\":{\"path\":\"m269.04,328.72c-2.4,0.87 -0.84,-4.47 0.3,-2.01 0.8,0.23 0,1.75 -0.3,2.01z m-0.07,-3.78c0.6,-3.32 -5.02,-1.6 -5.27,-4.51 -0.12,-2.74 -3.14,1.24 -2.06,-1.29 -0.99,-0.79 -2.22,1.2 -3.22,-0.45 -0.9,0.27 -1.14,2.68 -1.08,0.81 0.68,-2.17 -1.32,-2.87 -3.53,-3.17 2.34,0.11 2.58,-2.07 3,-3.35 2.89,-2.17 4.59,-5.57 4.61,-9.18 -0.19,-3.29 4.06,-0.89 5.3,-3.43 1.14,-2.76 4.56,-2.87 7.04,-3.65 2.21,-0.91 4.28,0.51 5.07,2.25 2.56,1.19 -1.21,4.26 -0.45,6.54 -1.09,0.31 -2.87,-0.17 -2.83,1.81 -1.46,0.58 -1.58,0.91 0.09,0.93 3.35,-0.05 2.57,4.59 -0.38,4.58 -2.35,0.19 2.62,1.25 -0.12,2.19 -2.05,1.07 -3.43,-1.35 -5.33,0.59 -1.38,2.19 2.97,4.39 0.94,6.8 -0.8,0.77 -1.72,1.2 -0.27,1.66 -0.44,0.36 -0.82,1.02 -1.51,0.87z m-14.99,-3c-0.33,-1.2 -5.07,-0.99 -2.8,-1.87 1.14,1.13 2.85,1.22 3.93,0.81 -0.06,0.56 -0.57,1.04 -1.13,1.06z m0.03,-2.7c-1.37,-0.05 -4.02,-1.94 -1,-1.43 0.49,-0.33 2.23,1.73 1,1.43z\",\"name\":\"Netherlands\"},\"ba\":{\"path\":\"m376.75,425.9c-1.98,-1.6 -4.83,-1.93 -6.41,-4.05 -1.67,0.65 -0.52,0.38 -0.54,-0.48 -1.09,-2.31 -4.84,-2.74 -4.68,-5.7 -3.06,-0.33 -4.09,-3.71 -6.36,-5.29 -1.63,-1.9 -4.06,-2.19 -3.82,-4.87 -1.04,-2.44 -3.06,-3.46 -4.21,-5.63 -0.7,-2.04 0.84,-4.87 2.73,-2.36 1.15,1.84 2.68,1.49 3.04,-0.59 0.75,-2.51 2.6,0.54 3.87,-1.57 1.61,1.11 3.76,0.32 5.58,0.98 1.67,0.69 2.8,0.63 3.98,-0.64 1.28,0.32 2.43,1.79 1.94,-0.33 2.34,0.41 3.8,0.76 5.26,2.77 1.51,0.59 4.58,-2.46 3.33,0.9 -1.48,2.62 -1.55,6.27 2.2,6.4 -0.16,1.48 3,1.5 0.7,2.04 -2.41,-1.63 -1.77,2 -0.04,2.77 1.22,1.2 1.32,2.1 -0.54,1.97 -0.8,1.43 -2.82,1.15 -3.55,0.9 0.15,1.26 1.77,2.85 -0.32,2.67 -1.22,1.98 -1.74,4.24 -3.03,5.92 0.2,1.48 1.25,2.79 0.88,4.2z\",\"name\":\"Bosnia and Herzegovina\"},\"si\":{\"path\":\"m332.96,393.93c-2.25,0.07 3.69,-1.78 0.33,-3.25 -2.05,-0.05 -1.39,-3.19 -2.18,-3.5 2.21,-1.77 -0.2,-2.6 -1.36,-3.11 1.58,-3.35 4.85,-1.64 7.7,-1.58 3.3,1.9 3.73,-4.65 7.02,-2.86 2.43,0.1 4.45,-1.78 6.8,-1.33 -0.07,-1.25 0.26,-3.28 1.79,-1.82 0.58,1.34 2.29,2.96 -0.11,2.97 0.07,3.17 -6.44,2.43 -4.97,6.04 0.89,1.87 0.62,3.86 -1.85,3.13 -2.37,0.85 1.33,6.35 -2.15,4.17 -1.76,0.02 -2.78,0.57 -3.81,-1.48 -1.83,-1 -1.59,2.92 -3.88,1.76 -1.41,-0.46 -2.2,0.65 -3.34,0.85z\",\"name\":\"Slovenia\"},\"mk\":{\"path\":\"m403.18,443.19c-1.28,-0.84 -1.77,-0.72 -3.14,-0.4 -2.27,-2.33 -2.73,-5.58 -2.85,-8.64 -1.26,-2.44 2.39,-0.6 1.33,-3.13 0.23,-2.42 3.43,-3.85 5.06,-1.8 1.38,1.18 -1.35,-3.28 1.33,-2.73 2.83,0.6 4.67,-2.89 7.49,-1.79 1.51,2.18 4.77,1.95 5.79,4.72 1.29,2.63 0.37,4.95 -1.12,7.01 -1.05,2.69 -5.33,0.11 -7.05,2.7 -0.97,2.88 -4.09,3.39 -6.84,4.04z\",\"name\":\"Macedonia\"},\"hr\":{\"path\":\"m375.93,426.49c-1.17,-0.64 -1.03,-0.77 0,0z m-5.08,-2.9c-0.73,0.27 -1.25,-2.08 0,0z m-2.28,-1.81c-3.23,-1.04 -5.06,-4.7 -8.53,-5.08 -1.74,-1.23 -4.13,-1.36 -6.19,-0.38 -0.54,-3.7 -5.51,-3.9 -7.37,-6.92 -1.68,-2.86 2.16,-0.38 2.91,-1.43 -1.18,-2.05 -5.06,-2.05 -5.62,-5.05 0.07,-2.45 -0.12,-5.23 -2.77,-6.41 -1.46,-3.02 -5.35,-1.33 -4.75,1.8 -0.1,1.22 -1.81,1.15 -1.78,3.18 -0.42,-0.02 -2.43,-3.25 -2.8,-4.77 0.5,-1.41 -1.33,-2.59 0.97,-1.85 1.93,-0.05 3.32,-1.26 5.49,-0.87 1.75,-0.28 1.19,-2.99 2.55,-0.54 1.83,1.65 2.98,0.1 5.14,0.7 1.63,-0.59 0.6,-2.35 1.05,-3.41 -2.13,-1.84 3.84,-0.57 2.93,-3.42 -1.1,-1.62 -1.88,-3.53 0.82,-4.04 1.16,-1.26 3.54,-0.9 3.14,-3.3 3.59,0.79 6.21,3.61 8.62,6.19 2.91,-0.18 5.33,2.55 8.31,1.69 2.32,0.95 5.06,-5.2 5.33,-0.4 0.15,1.9 1.2,2.64 1.4,4.46 1.55,0.76 2.24,0.37 1.04,2.01 -0.17,1.69 1.08,1.86 -0.44,2.99 -1.42,0.96 -2.53,-3.66 -4.34,-2.06 -2.98,-1.4 -5.14,1.63 -8.13,0.38 -2.22,0.17 -4.52,-1.28 -6.44,-0.34 -1.8,-0.84 -3.54,0.72 -3.99,2.64 -1.51,-1.59 -4.97,-3.78 -5.35,0.02 -1.16,3.92 2.99,5.58 4.38,8.58 -0.13,1.41 -1.05,2.05 0.83,2.59 2.9,1.5 4.8,4.21 6.98,6.53 2.65,1.59 3.98,4.49 6.78,6.28l-0.16,0.23 0,0z\",\"name\":\"Croatia\"},\"dk\":{\"path\":\"m311.37,281.37c-1.81,-0.13 -3.63,-2.95 -0.99,-2.75 0.71,0.89 2.21,0.72 1.2,1.27 0.93,0.68 0.95,1.07 -0.21,1.48z m2.12,-1.04c1.35,-0.18 -0.34,1.13 0,0z m0.84,-0.24c-0.07,-1 -2.35,-2.59 0.16,-1.62 2.08,0.28 -0.51,1.71 -0.16,1.62z m-17.99,-0.84c-2.31,-0.88 -6.15,-0.22 -4.5,-3.71 0.81,-2.84 -1.69,-4.3 -3.84,-4.7 -1.19,-2.12 0.77,-2.92 1.79,-2.7 1.1,-1.9 -0.71,-4.04 -1.69,-4.68 0.35,-1.37 0.2,-5.41 0.68,-4.97 1.59,3.78 6.34,-5.25 4.96,-0.56 0.24,2.86 4.45,-0.07 2.01,-1.61 0.04,-2.03 -0.06,-3.57 2.27,-2.05 0.18,-1.79 3.93,-0.45 2.6,-2.4 -2.36,-1.07 -4.97,1.4 -7.44,0.51 -0.9,0.41 -2.06,0.6 -1.03,-0.46 2.89,0.74 6.43,-0.56 7.07,-3.76 0.42,-1.7 4.2,-3.59 3.75,-0.9 2.01,1.66 -0.21,4.73 -1.55,6.01 0.4,0.87 0.32,2.52 0.39,3.1 -1.16,1.34 2.36,4.31 4.12,3.09 1.32,1.67 -1.85,5.56 -2.69,2.65 -3.21,0.21 -0.77,4.74 -2.69,6.35 -0.74,1.02 -5.24,-0.82 -2.77,1.37 1.61,1.85 3.89,1.32 5.37,0.39 1.04,1.32 2.66,0.54 1.88,1.61 2.2,1.44 0.71,6.32 -1.89,3.8 -0.99,-0.9 -2.97,-2.42 -3.55,-4.38 -0.8,-2.14 -4.39,1.02 -3.28,1.06 2.19,-0.86 -0.04,1.87 1.38,2.68 -1.87,1.01 -1.25,3.06 -0.58,3.35 -0.3,0.27 -0.55,0.59 -0.78,0.92z m18.96,-2.29c-1.92,-0.02 -1.04,-3.7 -3.92,-2.81 -3.51,-0.09 0.22,-3.64 -2.76,-5.02 -1.79,-1.21 3.2,0.15 3.13,-2.28 0.04,-2.46 4.91,0.23 1.92,1.9 1.06,2.45 3.33,-0.76 2,-2.36 -0.51,-1.34 -2.25,-2.02 0.21,-1.96 2.33,-0.37 1.21,1.23 1.29,2.13 2.22,2.03 -1.98,3.78 -1.88,4.86 2.05,0.87 2.04,2.76 -0.28,2.66 -0.97,0.83 0.11,2.08 0.29,2.88z m-25.23,-19.54c-1.89,-1.51 1.09,-5.6 1.21,-4.99 -1.52,1.21 -1.11,3.3 -1.21,4.99z\",\"name\":\"Denmark\"},\"ru\":{\"path\":\"m558.98,364.3c-2.56,-0.91 -4.97,-2.14 -7.36,-3.43 -2.39,-1.15 -4.94,-2.06 -7.59,-2.35 -2.81,2.28 -5.5,-0.94 -8.06,-1.85 -1.23,0.3 0.78,2.15 -1.52,1.8 -2.42,-0.25 -3.69,-3.69 -6.4,-2.82 -1.31,0.16 -4.41,0.18 -1.55,-0.66 1.64,-0.7 0.81,-3.34 -0.75,-1.74 0.37,-1.63 2.93,0.94 3.87,-1 1.25,-0.31 2.74,-1.24 3.63,-1.06 1.16,-2.32 -3.44,-3.39 -1.08,-5.92 0.57,-0.81 -0.94,-4.08 0.12,-2.72 0.39,2.37 2.24,1.11 1.25,-0.78 -1.26,-3.41 3.86,0.53 3.04,-2.81 -1.97,-1.81 -4.99,-1.7 -7.55,-2.54 -2.06,-0.94 2.06,-1.24 1.86,-3.16 2.06,1.7 4.87,-1.76 1.32,-1.4 -0.21,-1.02 3.11,-2.69 3.56,-4.64 3.16,0.27 3.03,-5.1 -0.28,-4.48 -2.62,0.21 -2.08,3.91 -4.95,4.14 -2.31,1.85 -0.59,-0.97 -1.26,-1.15 -2.27,0.02 -1.28,-3.82 0.48,-4.34 1.4,-2.13 0.73,-5.08 4.3,-4.68 2.91,0.1 4.24,-2.66 2.99,-5.05 -0.44,-0.81 1.31,-4.54 -0.5,-3.12 -0.89,0.38 -1.08,-3.79 -3.06,-2.28 -2.61,-1.85 3.34,-2.5 1.03,-4.59 -1.03,0.14 -4.3,0.91 -2.02,-0.74 1.96,-2.14 1.02,-4.53 -0.68,-6.4 1.16,-2.59 -2.93,-0.35 -3.64,0.61 0.41,-2.95 -3.61,-0.32 -4.74,-2.01 -1.3,0.69 -2.17,2.73 -3.44,0.57 -1.62,0.46 -2.9,0.42 -4.52,-0.03 -1.18,0.97 0.35,3.57 -1.91,1.94 -2.66,-0.03 -3.84,-4.48 -6.19,-3.24 -2.12,0.99 -3.16,6.03 -6.01,3.79 -0.55,1.88 -3.23,-1.75 -4.12,0.93 -2.26,2.15 -4.17,-0.6 -4.14,-2.64 -1.31,-0.74 -1.67,-2.47 -1.76,-3.17 -1.84,0.68 -2.55,-1.54 -3.04,-1.81 -1.53,1.29 -5.9,2.64 -6.27,0.53 -0.46,-1.43 -3.35,-2.71 -0.58,-3.43 0.87,-2.91 -3.85,-2.55 -4.29,-5.27 -1.34,-1.28 -2.82,-2.7 -4.07,-0.62 -2.6,-1.29 -3.34,1.16 -4.86,2.57 -2.29,-0.64 -4.88,0.47 -3.99,3.28 -1.64,3.09 -5.33,-1.16 -5.28,-3.38 0.29,-1.54 -1.99,-0.85 -0.93,-2.73 -1.04,-1.23 -5.06,-2.53 -2.44,-4.58 2.85,1.31 6.86,-0.11 6.98,-3.34 2.36,-1.51 -0.16,-3.89 -1.6,-4.2 -0.58,-2.91 -4.71,-0.88 -5.61,-1.07 0.65,-2.69 -1.62,-3.41 -3.71,-3.4 -2.11,-1.16 -3.32,-2.8 -3.81,-4.83 -2.42,0.17 -3.41,-1.67 -2.18,-3.83 -0.02,-1.71 -2.9,-2.44 -1.99,-4.84 -0.01,-1.79 -0.45,-2.87 -2.15,-2.08 -2.12,-2.07 -5.85,-2.66 -7.51,0.31 -0.95,2.92 -2.17,-0.33 -1.92,-1.55 -1.94,-2.34 -4.43,2.65 -5.64,-0.22 -1.71,0.04 -3.09,1.26 -3.28,-1.31 -0.9,-2.65 -2.85,-5.01 -4.71,-6.53 -1.83,-1.02 1.04,-5.27 -2.45,-5.76 -1.67,-0.51 -0.04,-2.71 -2.19,-1.57 0.05,-1.42 0.26,-2.99 1.68,-3.72 -0.54,-0.99 -1.34,-2.16 -1.45,-2.96 -2.84,-0.69 -1.01,-4.26 -2.77,-5.86 -2.08,-2.24 0.85,-4.53 0.39,-6.92 -1.01,-2.41 3.22,-2.6 0.55,-4.16 -0.83,-1.3 -2.35,-4.31 0.18,-2.28 1.51,-0.56 0.02,-3.79 2.55,-2.16 2.03,-0.4 0.55,-4.34 3.6,-3.39 1.61,0.41 6.06,0.64 4.72,-1.87 -2.47,0.38 -3.46,-3.31 -5.66,-1.7 -1.73,1.59 -3.35,0.22 -4.28,-0.75 -2.83,1.04 -0.5,-5.97 -3.43,-3.33 -0.79,1.95 -3.72,3.09 -1.67,0.48 4.94,-7.07 7.08,-15.55 9.98,-23.55 0.44,-3.03 2.51,-7.51 -0.31,-9.8 -2.38,-1.89 -5.29,-2.93 -7.96,-4.32 -3.88,-1.06 2.38,-6.07 -1.12,-8.02 -2.45,-0.36 -4.96,-1.94 -3.33,-4.47 -1.48,-1.21 -6.02,-2.28 -3.05,-4.86 0.42,-0.7 -3.23,-0.64 -2.08,-2.79 0.39,-2.06 -0.85,-2.94 1.09,-3.89 -0.82,-2.4 -2.73,-4.51 -4.14,-6.68 -1.51,-2.32 -3.78,-4.06 -5.41,-6.21 -0.98,-3.34 2.21,-6.3 1.62,-9.59 -0.91,-2.31 -3.95,-2.73 -4.86,-5.04 -3.1,0.98 -6.11,-2.82 -4.58,-5.63 1.26,-2.13 -3.52,-2.39 -0.66,-3.49 1.51,-2.49 0.64,-5.59 3.12,-7.72 -0.6,-2.56 3.46,0.62 3.16,-2.41 -2.11,-2.17 1.85,-1.54 2.99,-1.35 2.03,1.63 4.11,1.29 6.52,0.08 0.37,0.23 -0.76,2.57 1.13,2.81 -1.22,0.77 -1.32,4.65 0.4,2.88 0.2,-1.73 1.36,-3.42 1.9,-5.04 3.21,0.08 6.07,-1.95 9.29,-1.34 2.75,0.76 5.58,1.26 8.28,2.2 2.14,0.82 4.03,2.32 6.18,3.01 2,-1.35 5.54,1.61 7.21,-0.07 2.23,0.7 3.31,3.46 5.54,1.69 1.16,1.01 0.65,2.43 2.18,2.82 1.01,2.1 3.8,2.21 3.29,5.21 -0.09,3.44 0.15,7.2 -2.11,10.07 -2.26,3.09 -6,5.79 -10.02,4.97 -2.84,-0.74 -5.34,0.99 -8.08,1.16 -2.01,0.97 -5.49,-2.15 -6.54,-0.13 -1.33,0.97 -2.24,-0.89 -2.89,-1.46 -1,2.57 -7.21,1.52 -6.06,-1.62 -0.53,-0.64 -4.07,0.19 -5.44,0.48 -1.33,1.22 -0,2.41 1.25,1.32 2.16,-0.38 0.62,2.19 3.06,2.74 1.23,1.53 6.57,0.25 5.42,2.51 -1.91,3.1 2.22,0.91 3.81,1.72 2.09,0.58 5.78,2.19 4.56,4.13 2.75,1.59 0.23,3.96 -0.48,5.25 2.3,-0.18 4.43,1.99 4.35,4.27 2,-0.84 0.78,1.8 1.68,2.47 0.1,3.23 4.49,3.53 6.69,2.22 2.28,0.22 3.06,3.83 6.02,2.68 3.14,0.7 6.51,-0.4 7.17,-3.81 0.24,-2.71 -4.02,-6.69 -5.49,-3.3 -2.65,0.34 -5.44,-2.93 -6.7,-4.13 2.45,-0.62 0.68,-2.65 0.87,-3.74 2.98,-0.53 5.18,2.7 8.25,1.24 2.42,-0.59 5.57,1.81 7.6,-0.26 0.47,-1.42 5.9,0.3 3.69,-2.76 -1.12,-2.61 -3.65,-4.39 -6.37,-5.3 -3.26,-1.55 -1.48,-4.68 -0.67,-7 0.13,-2.98 3,-4.72 3.48,-7.44 -0.29,-1.95 -0.01,-6.22 2.42,-3.58 1.94,-2.25 5.82,-1.29 7.83,0.68 1.2,2.1 3.32,0.53 1.22,-1.06 -2.48,-1.87 -1.81,-4.87 -2.24,-7.47 -1.88,-1.57 -2.53,-5.38 -5.87,-5.07 -3.66,0.72 -1.05,-5.18 -3.4,-6.67 -1.19,-0.92 0.46,-3.75 -1.48,-3.55 -1.01,-2.39 -5.64,-2.94 -6.17,-3.55 2.64,0.97 4.98,-0.76 6.95,-2.52 2.55,-2.21 4.69,1.32 7.17,1.82 2.66,0.14 2.98,2.58 0.58,3.55 -1.44,1.01 -3.37,2.5 -1.86,4.15 -2.05,2.82 1.45,5.04 4.18,4.46 2.24,0.66 3.9,4.74 5.89,0.83 -0.45,2.74 1.7,0.82 1.6,-0.76 0.67,-1.92 4.97,-2.44 2.12,-4.7 -0.88,-2.08 -0.93,-5.08 -2.83,-6.29 1.51,-0.41 1.74,-3.36 4.33,-3.14 0.74,-1.52 -4.26,-0.47 -1.65,-2.01 1.38,-2.03 1.95,-4.13 2.25,-6.48 -0.71,-3 2.32,-4.04 2.61,-6.78 0.79,-1.07 0.87,-3.3 2.02,-0.85 0.37,3.39 3.79,-1.54 1.28,-2.71 -2.87,-0.55 -1.44,-3.38 -0.47,-5.41 0.59,0.58 1.75,-1.54 1.49,0.66 0.07,2.26 4.9,2.03 2.07,4.51 -3.06,1.89 2.52,2.73 3.16,0.29 0.8,-0.58 2.28,-0.85 1.45,-2.12 2.18,1.11 3.08,-1.11 1.14,-2.24 -0.63,-3.15 1.27,-6.2 4.04,-7.12 3.15,-0.33 1.76,-4.5 2.46,-6.7 2.68,1.91 1.44,-1.23 0.17,-1.57 -0.24,-1.73 3.07,-1.64 3.49,-0.99 -0.52,3.68 4.93,5.45 5.98,1.6 -0.74,-2.19 -4.02,-2.52 -1.51,-4.94 1.37,-2.71 -0.97,-5.14 -3.64,-5.47 -2.06,-0.69 -6.98,-0.83 -4,-3.86 -2.84,-2.24 1.77,-2.66 3.14,-4.1 2.67,-3.27 6.84,-5.01 10.97,-5.41 2.08,0.66 3.04,-0.42 5.04,-0.78 3.26,-0.69 5.53,-2.7 8.88,-1.89 1.83,0.09 3.72,-0.92 5.18,-0.23 3.3,-0.51 -0.59,-3.78 0.31,-4.05 7.13,0.01 14.26,-0.01 21.38,0.01 2.09,0.14 -2,3.01 0.93,2.93 1.33,0.5 2.97,0.39 1.78,1.28 0.04,1.2 -0.09,5.95 -1.36,3.75 0.88,-1.97 -1.47,-3.03 -1.4,-0.65 -0.13,1.49 -3.77,0.21 -3.69,2.55 -3.37,1.5 0.23,4.73 2.72,4.05 3.82,-0.71 6.21,-3.84 8.09,-6.94 1.84,-0.32 4.98,-2.24 2.66,-4.31C557.34,3.94 555.66,1.55 558.62,2.18c40.17,0 80.35,0 120.52,0 0,32.42 0,64.83 0,97.25 -2.09,0.36 -2.95,2.3 -1.54,3.74 -2.44,-1.53 -2.16,1.82 -2.17,2.03 -1.83,-0.06 -0.41,-2.79 -2.86,-3.06 -0.55,-1.54 -1.56,-2.65 -3.54,-1.77 -1.52,-1.23 -4.42,-2.86 -6,-3.08 -2.3,1.54 0.4,6.71 -3.71,5.55 -1.63,0.21 -3.74,1.9 -3.4,2.86 -1.22,-0.25 -2.92,1.14 -1.43,2.07 -2.82,1.19 1.7,2.9 -0.94,4.55 -2.72,2.09 2.48,0.44 1.29,3.06 -2.53,0.4 -0.3,2.61 -2.09,4 -0.4,3.26 -2.41,5.93 -3.86,8.82 0.28,0.79 -3.1,0.12 -1.27,1.6 -1.02,2.01 -3.11,4.53 -0.2,6.39 -2.52,0.22 -3.43,3.38 -5,5.17 -0.91,1.5 1.12,2.54 -1.32,2.93 -1.23,2.37 -2.15,5.27 -3.97,7.32 1.46,1.7 -3.54,1.33 -2.2,4 0.89,0.84 -2.06,0.35 -2,1.51 -2.16,-0.19 -3.58,4.12 -1.57,4.8 2.75,-1.67 -0.46,5.07 2.92,2.57 1.47,-1.64 1.11,3.68 3.89,2.06 1.15,-1.3 4.64,-3.43 5.55,-1.97 -0.97,2.34 -5.83,2.91 -5.32,5.59 1.65,1.51 -1.67,5.32 2.05,4.87 0.58,1.25 3.67,-0.2 3.17,2.56 -0.46,2.07 -2.09,3.57 -1.96,5.92 -2.28,1.79 1.99,3.07 3.27,1.27 1.22,3.88 3.54,-2.53 5.73,-0.07 1.71,0.15 3.48,-3.04 4.82,-0.75 0.7,2.54 3.93,4.85 1.33,7.39 -0.96,2.05 -3.49,5.21 -5.83,2.98 -2.18,1.39 0.8,4.71 -0.35,6.74 -1.64,-3.35 -4.19,2.67 -7,1.13 -1.58,0.37 -1.77,-1.65 -2.62,-1.81 -0.7,0.72 -4.76,0.36 -3.34,1.66 -0.36,0.87 -3.77,2.22 -1.73,4.23 -0.31,2.89 -2.88,-1.51 -4.31,1.09 -1.46,1.61 -3.55,2.49 -3.46,4.75 -0.41,1.43 -0.54,3.48 -0.05,5.34 -0.27,1.74 -0.64,1.81 -2.46,1.7 -2.35,1.24 -5.67,-2 -7.94,0.36 -1.02,1.19 0.11,2.72 -2.11,2.54 -1.91,-2.74 -5.13,1.42 -6.94,-1.53 -3.68,-1.24 -4.83,6.16 -8.08,2.91 -0.68,-0.31 -3.05,-3.22 -2.23,-1.07 0.44,2 -3.21,4.32 -1.91,5.59 -1.58,-0.54 -1.24,3.52 -1.64,0.7 -1.39,-2.07 -3.9,0.94 -5.63,0.87 0.37,1.37 0.82,0.9 -0.34,1.77 -0.21,2.03 1.56,4.11 -0.43,6.09 -0.26,2.82 -3.85,3.15 -3.39,6.04 1.82,1.79 -0.1,4.43 -1.07,6.43 -3.76,0.87 1.99,2.12 2.03,4.1 0.89,1.78 3.76,2.19 1.71,4.57 -2.3,2.9 -5.15,-1.81 -7.83,-2.01 -3.78,-1.12 -4.32,3.77 -2.19,5.82 -2.31,2.78 -0.33,6.19 0.38,9.1 0.77,1.86 4.43,0.77 3.16,3.54 -0.62,2.49 -0.11,4.99 0.21,7.43 1.17,3.44 5.88,-1.22 6.9,2.2 0.63,0.39 -1.33,1.3 0.64,1.71 0.61,2 4.71,2.89 4.1,0.07 2.42,-0.19 4.16,-3.38 6.65,-1.26 2.61,1.3 4.67,3.68 7.51,4.49 2.44,-0.41 2.29,3.63 -0.15,2.17 -3.16,1.33 0.69,4.72 2.95,3.33 2.69,-1.74 4.67,2.16 2.98,3.28 -1.53,-1.48 -3.23,1.37 -1.51,2.46 -1.66,0.09 -1.17,4.59 -3.15,5.57 -2.16,-0.57 -0.01,3.21 -2.03,1.18 -1.51,-0.51 -1.63,0.74 -2.82,1.17 0.46,1.78 3.76,-0.82 2.44,1.78 0.45,1.46 -0.73,2.48 0.5,3.94 -0.91,1.42 1.06,4.29 -0.87,5.01 0.89,2.05 -1.39,4.46 -0.11,6.57 1.6,2.36 2.84,-1.08 4.63,0.84 2.19,0.61 6.36,2.5 5.42,5.48 1.51,1.9 3.6,2.8 3.89,5.79 1.08,1.98 3.28,1.24 4.3,3.24 2.25,0.68 4.45,1.39 6.37,2.79 1.16,1.48 3.78,2.23 4.69,2.86 -0.38,2.65 -2.37,5.25 -1.49,7.93 0.05,2.46 -6.1,4.34 -5.15,1.14 -2.52,-0.74 -5.24,-0.5 -7.55,-1.88 -1.49,0.54 -3.24,0.69 -4.5,0.55 -1.71,1.13 -6.19,1.11 -5.4,-1.84 -0.88,-3.94 -4.63,1.38 -6.95,-0.97 -1.81,-1.22 -2.73,1 -2.64,2.13 -3.4,-2.47 -4.1,3.12 -6.37,4.33 -1.56,1.14 -0.42,-3.07 -2.75,-1.69 -2.4,0.37 -5.28,1.01 -7,-0.66 -2.78,0.67 -5.63,0.98 -8.42,1.61 1.94,1.66 -2.76,2.56 -3.79,2.43 -2.67,-0.72 -5.06,0.99 -7.69,0.02 -2.34,1.37 -6.27,0.31 -6.05,4.11l-0.04,0.01 0,0z m57.81,-33.85c-0.89,-1.57 0.49,-2.17 0,0z m-241.23,-51.26c-1.5,-0.26 -4.88,0.4 -5.3,-0.46 2.59,-1.58 -0.9,-5.56 2.71,-5.44 2.09,-0.97 5.31,1.36 6.88,-1.15 -0.17,-1.75 -1.39,-4.59 1.04,-3 2.58,1.66 5.83,-0.05 8.09,1.03 2.4,1.17 -0.19,4.14 1.51,6.12 -0.91,2.05 -4.72,1.7 -6.85,2.38 -2.67,0.39 -5.38,0.53 -8.08,0.53z m245.17,-54.27c-0.96,-0.5 -1.79,-4.14 -0.7,-1.7 0.41,0.34 1.1,1.13 0.7,1.7z m15.47,-62.08c-0.5,-1.68 1.86,0.26 0,0z M392.43,81.96c-1.18,-1.24 -0.52,-3.74 1,-1.58 0.97,0.64 4.51,-0.85 3.11,1.22 -1.28,-0.1 -4.06,-2.2 -4.11,0.36z m69.72,-22.48c-3.13,-0.37 -5.18,-4.96 -3.51,-7.6 1.49,-0.95 5.9,-1.19 6.08,0.31 -0.75,2.23 0.93,5.01 -1.2,6.83 -0.37,0.32 -0.88,0.46 -1.36,0.46z m1.2,-32.66c0.64,-1.98 -0.94,-1.7 -1.81,-2.37 0.83,-0.97 3.57,-1.76 1.01,-2.23 -1.29,0.52 -2.78,0.7 -3.28,0.14 -1.2,0.89 -3.04,-4.18 -2.96,-0.9 1.94,3.97 -3.66,-2.01 -2.98,1.25 2.3,2.87 -2.86,2.37 -3.53,0.29 -1.84,-1.41 -2.9,-5.04 0.07,-4.98 -0.36,-1.21 -1.52,-2.86 -0.18,-4.45 -3.01,0.94 -0.61,-2.79 -2.49,-3.65 -1.26,2.21 -4.03,0.25 -1.58,-1.13 2.3,-1.91 -4.09,-1.91 -1.43,-4.6 0.66,-1.81 2.03,-2.29 3.79,-2.01 1.73,-0.33 3.25,0.66 4.85,0.17 2.53,-1.3 -3.03,3.08 0.48,2.2 3.11,-1.44 -1.22,5.41 2.65,3.83 2.34,0.52 1.33,4.72 3.21,4.64 2.81,0.65 4.59,3.49 7.55,3.98 2.95,1.5 6.52,1.02 9.42,1.43 -0.95,0.85 -5.31,2.46 -4.34,3.45 -1.86,0.24 -4.2,1.89 -2.01,3.36 -1.56,0.82 -3.63,-0.42 -4.9,1.06 -0.87,-0.61 -1.05,-0.3 -1.52,0.53z m23.35,-5.93c-1.68,-0.42 -4.33,-0.5 -2.76,-2.36 -1.89,0.07 -1.65,-3.14 0.36,-1.62 2.48,0.8 5.12,0.27 7.63,0.6 2.21,1.62 -2.46,4.83 -3.16,1.83 -0.45,0.12 -0.96,1.84 -2.07,1.55z\",\"name\":\"Russian Federation\"},\"mt\":{\"path\":\"m343.65,509.08c-1.52,-0.23 -1.75,-0.24 0,0z m1.95,2.72c-1.32,-0.63 -1.5,-0.7 0,0z\",\"name\":\"Malta\"},\"me\":{\"path\":\"m385.29,433.13c-1.98,-1.45 -3.12,-5.3 -6.16,-4.27 -0.68,-0.6 -0.46,-1.87 -1.44,-2.17 0.16,-1.66 0.06,-3.3 -0.89,-4.86 1.96,-1.05 1.28,-4.74 3.12,-5.09 1.81,3.01 2.14,-1.15 0.71,-2.43 2.24,-0.2 3.4,-2.11 5.57,-0.36 3.49,0.56 2.95,4.72 6.22,5.9 -2.5,0.45 -0.84,6.17 -3.72,4.67 0.19,-3.37 -2.81,0.5 -2.99,1.87 -0.8,1.83 -2.3,3.26 -0.46,4.87 0.08,0.47 0.4,1.59 0.03,1.87z\",\"name\":\"Montenegro\"},\"rs\":{\"path\":\"m397.48,431.57c-0.16,-2.49 -1.05,-5.46 -3.99,-5.18 -0.83,-1.86 -3.16,-3.89 -0.74,-5.1 2.42,-2.35 -3,-3.15 -2.73,-5.8 -1.28,-2.34 -5.16,-1.7 -5.47,-5.07 -0.61,-1.48 -2.43,-2.36 0.08,-2.14 2.37,-1.69 -1.79,-3.25 -2.79,-4.49 -3.49,-0.35 0.76,-4.99 -0.07,-7.08 -1.54,-0.41 -2.38,-0.6 -2.22,-2.53 -0.29,-0.9 3.52,-0.03 1.84,-1.89 -1.99,-0.46 -4.18,-1.03 -2.61,-2.61 0.5,-1.92 -2.64,0.29 -1.69,-2.2 -0.12,-1.58 -1.93,-2.81 0.65,-3.27 2.64,-1.35 4.3,-3.64 7.52,-3.04 2.34,-0.11 4.56,2.67 6.11,3.82 1,0.92 0.22,4.94 3.24,4.94 1.65,0.3 5.5,0.5 3.47,2.78 1.27,1.27 0.97,1.07 -0.4,2.22 0.32,1.47 3.21,0.4 3.09,2.01 1.78,0.14 4.21,-0.13 4.93,1.74 2.85,0.45 1.17,-3.79 1.99,-3.56 1.66,0.7 3.37,1 1.04,1.99 -1.64,2.21 4.19,3.86 0.86,5.71 -2.2,2.75 0.34,6.72 2.98,8.19 2.92,0.51 3.82,2.98 1.52,5.06 -0.82,0.05 -2.7,-0.25 -2.65,1.85 -1.23,2.37 3.66,5.04 -0.48,5.54 -2.42,1.11 -4.61,2.18 -7.35,2.39 -1.32,2.74 -6.31,0.55 -6.16,5.74z\",\"name\":\"Serbia\"}}});\n"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.germany.js",
    "content": "/** Add Germany Map Data Points */\njQuery.fn.vectorMap('addMap', 'germany_en', {\"width\":592,\"height\":801,\"pathes\":{\"th\":{\"path\":\"m312.19,352.19c-2.73,0.22 -2.22,4.11 -3.64,5.97 -1.01,2.7 -4.71,2.26 -7.13,2.91 -2.52,0.84 -2.65,-2.93 -5,-3.11 -2.02,-1.67 -5.36,0.2 -4.98,2.55 -0.62,4.82 -6.22,6.91 -9.72,9.65 -2.98,3.28 -7.8,2.07 -11.1,4.73 -2.55,1.59 -5.81,3.14 -7.87,5.03 0.64,3.74 1.96,8.43 6.44,8.84 3.41,0.33 2.07,4.91 5.71,5.17 2.12,1.11 4.61,1.57 6.04,3.67 2.61,-0.18 1.95,2.83 0.13,3.41 -0.75,1.55 1.21,2.98 -0.06,4.88 -2.65,1.33 -1.59,-4.91 -4.58,-2.96 -2.15,1.14 2.24,4.28 1.18,6.62 -0.73,2.87 3.35,2.38 3.93,4.97 0.22,2.4 -1.82,4.2 -4.4,4.04 -1.89,0.05 -3.04,-2.14 -5.19,-1.69 -2.29,-1.13 -3.6,1.4 -2.29,3.19 0.92,3.27 2.06,6.86 1.64,10.24 -1.04,2.07 -1.35,6.09 -4.56,5.07 -2.5,-0.54 -3.05,2.78 -2.17,4.43 0.33,2.11 -1.94,1.58 -0.64,3.71 0.2,3.37 -2.96,5.74 -4.05,8.57 -1.46,3 3.1,3.73 4.61,2.61 -1.8,-1.67 -0.95,-4.04 1.83,-4.18 2.21,-0.46 5.52,-0.43 5.9,2.47 2.29,2.61 -2.68,2.96 -1.96,5.59 0.5,1.86 -0.79,8.31 0.95,7 1.72,-3.38 5.8,-2.18 8.88,-2.88 2.69,0.85 3.11,5.24 6.43,5.5 3.89,0.66 4.77,4.88 6.09,7.93 -0.55,3.14 2.45,3.82 4.54,1.98 0.31,5.02 5.89,6.45 10.06,7.19 -0.2,3.63 -1.27,7.43 0.53,10.84 2.35,0.1 5.18,2.71 7.07,1.85 0.03,-1.3 -1.32,-4.82 1.27,-4.26 2.07,-0.06 5.3,2.5 6.66,0.25 0.29,-2.71 -3.43,-1.58 -4.54,-3.52 -1.94,-1.64 -5.47,-2.54 -4.67,-5.79 -0.91,-3.55 3.89,-3.37 6.02,-4.77 2.87,-1.54 6.27,-0.65 9.38,-0.79 1.61,1.84 2.4,4.9 5.49,4.49 2.33,1.02 3.21,-1.38 4.71,-2.1 2.52,-0.39 4.79,2.85 4.64,5.17 -2.32,0.34 -2,2.87 -0.04,3.79 1.25,1.09 4.62,-1.62 5.78,-2.97 1.07,-2.95 1.98,-5.92 0.84,-9.01 0.33,-2.69 -1.49,-4.1 -2.06,-6.05 -0.35,-1.26 0.15,-3.52 1.89,-2.72 2.51,-0.54 3.16,-3.11 5.03,-4.31 2.41,-0.31 6.41,-0.25 6.75,2.81 -1.09,1.47 -1.71,2.75 -1.31,4.94 2.04,1.91 4.67,0.65 4.88,4.5 0.54,1.96 3.79,3.19 4.05,0.56 1.06,-1.74 3.34,-0.66 4.25,0.63 6.13,-1.07 12.67,-0.94 18.25,-3.97 -1.68,-0.65 -2.19,-2.46 -0.38,-3.31 1.4,-0.73 5.24,-2.7 2.32,-4.13 -1.1,-2.24 -4.24,-0.26 -4.55,-3.08 -1.3,-2.44 2.29,-4.28 3.11,-6.33 2.98,-0.71 2.97,-4.68 5.91,-5.31 1.95,1.54 1.58,4.54 1.16,6.72 1.66,-0.64 6.6,0.71 6.33,-0.74 -3.05,-0.17 -0.61,-3 1.2,-3.1 2.57,-1.22 5.33,-2.23 7.87,-3.14 1.72,-1.51 4.46,-4.54 0.25,-4.48 -1.74,-1.64 -3.31,-4.12 -3.69,-6.5 0.38,-2.82 0.28,-5.87 1.72,-8.41 0.89,2.58 5.82,0.77 5.81,-1.09 0.71,-1.83 4.18,-2.99 5.41,-0.97 2.56,-0.68 0.59,-4.69 3.44,-5.44 3.25,-1.87 7.85,-0.32 10.53,-2.97 -2.57,-1.55 -0.79,-6.34 -4.47,-6.16 -2.74,-0.84 -6.28,-2.6 -5.42,-6.03 0.8,-2.88 -3.5,-2.46 -5.15,-3.47 -2.87,-0.81 -6.3,-2.89 -8.61,0.02 -2.54,2.1 0.01,3.58 1.21,5.21 -0.17,3.21 -2.39,6.03 -3.68,8.9 -1.08,1.71 -2.42,1.35 -2.66,-0.64 -2.24,-4.02 -1.09,1.94 -3.66,-0.66 -2.71,-1.39 -5.95,-1.32 -8.59,0.19 -0.02,-4.6 -5.04,-6.77 -8.31,-9 -2.72,-0.06 -5.6,1.79 -8.33,0.1 -2.65,-0.52 -5.05,-1.27 -4.7,-4.45 -2.02,-1.11 -5.86,-2.21 -7.53,-1.16 -1.29,1.98 -3.84,1.06 -5.84,1.31 -1.81,-1.01 -2.04,-3.39 -2.5,-5.41 3.14,0.3 2.23,-3.59 0.51,-4.83 -1.37,-2.03 -4.15,0.89 -5.53,-1.6 -1.69,-0.96 1.02,-5.32 2.36,-2.94 1.62,-1.63 2.76,-3.73 4,-5.66 -0.78,-1.58 -4.12,-2.02 -3.47,-4.09 -2.15,-0.17 -2.01,-2.77 -1.75,-4.31 -4.91,-2.77 -10.54,-0.91 -15.84,-1.69 -2.69,-0.42 -5.41,-2.8 -8.03,-1.28 -1.99,0.45 -4.28,-1.52 -3.68,-3.5 0.86,-2.86 -0.76,-4.88 -2.35,-7.1 -1.55,-2.64 -4.98,-6.28 -2.16,-9.19 -2.47,-3.43 -7.17,-3.03 -10.89,-3.21 -0.41,0.09 -0.82,0.18 -1.23,0.27z m95.09,106.63c0.36,0.47 0.77,-0.65 0,0z\",\"name\":\"ThÃ¼ringen\"},\"sh\":{\"path\":\"m173.41,0.78c-1.96,2.02 -2.32,5.26 -3.72,7.72 0.61,-2.46 2.87,-3.44 4.94,-4.31 1.37,-2.31 1.87,-2.9 -1.22,-3.41z m-4.63,9.69c-1.37,3.14 -2.78,7.11 -2.63,10.16 1.42,-1.81 3.12,-2.33 4.66,-0.67 1.41,1.35 2.9,1.87 4.52,0.27 2.61,-1.53 -0.74,-0.41 -1.92,-1.16 -2.06,-1.81 -4.59,-3.55 -3.89,-6.71 -0.29,-0.68 0.25,-4.89 -0.73,-1.88z m16.78,8.5c-1.27,2.96 0.71,4.89 2.59,6.89 3.39,3 2.55,7.98 4.79,11.67 0.62,3.55 5.38,3.23 6.46,6.57 3.09,5.18 8.01,9.55 9.53,15.49 -0.32,3.65 -4.55,4.93 -6.72,7.41 -1.75,1.07 -3.73,2 -5.62,0.78 -2.44,0.59 -7.26,-0.45 -7.37,2.95 0.9,2.44 -1.97,3.88 -3.95,4.18 -1.94,-2.13 -2.52,-1.01 -2.77,1.45 -0.87,2.9 3.21,3.7 4.93,4.64 1.92,-3.3 6.38,-1.94 9.56,-2.06 2.21,2.21 1.18,5.9 0.57,8.61 -1.14,2.05 -2.44,4.23 -0.74,6.43 0.5,2.36 2.45,2.12 4.01,1.08 3.24,-0.45 3.19,4.26 4.78,6.16 2.07,2.16 -0.11,6.53 -3.11,5.16 -1.14,-1.75 -5.79,-1.46 -5.26,0.73 2.63,2.93 2.85,7.1 5.04,10.2 1.56,1.12 3.1,3.53 5.09,1.5 1.43,0.34 0.36,3.67 3.4,2.47 5.03,0.4 10.67,-0.76 14.8,2.92 4.21,3.5 4.64,9.55 8.23,13.45 3.79,1.81 5.25,6.01 5.59,9.84 1.82,3.22 5.7,4.78 8.7,6.74 2.98,1.76 2.45,-2.04 3.3,-3.87 0.32,-3.07 2.7,-3.68 2.95,-0.51 1.97,4.21 4.12,0.09 5.74,-1.98 1.13,-1.81 1.09,-3.61 3.84,-2.85 2.75,1.63 4.73,-1.94 6.94,-3.16 -0.04,-2.48 1.02,-3.47 3.73,-4.47 1.51,-1.18 4,-1.93 4.95,0.16 -0.92,3.02 -1.41,6.74 1.26,9.04 1.1,1.47 -0.59,3.76 -1.58,5.02 -3.72,1.55 -2.94,7.3 0.6,8.57 3.05,0.71 1.81,2.28 4.18,4.34 1.9,2.3 3.7,4.33 6.71,5.17 4.24,1.47 7.8,5.01 12.4,5.13 1.57,-2.96 0.71,-7.47 3.24,-9.94 1.76,-0.99 3.85,1.15 5.23,-1.34 4.78,-3.66 7.65,-9.11 11.5,-13.72 0.07,-2.89 2.79,-4.69 1.09,-7.69 -1.21,-2.36 -3.12,-1.39 -5.13,-1.38 -2.37,-1.11 -4.33,-3.37 -5.88,-5.25 0.57,-2.78 0.94,-5.55 -0.72,-8.01 -1.68,-4.33 3.4,-6.71 6.26,-8.75 2.76,0.39 4.62,-1.55 2.8,-4.28 -2.57,0.04 -0.18,-3.45 -2.47,-3.84 -2.6,1.03 -5.44,-0.16 -6.16,-2.94 -1.95,-2.52 -0.1,-5.31 2.05,-6.91 1.09,-2.74 3.32,0.44 5.2,-0.9 2.94,-4.13 6.93,-7.19 11.06,-10.05 2.63,-1.56 0.21,-5.06 0.5,-7.57 -0.21,-3.63 -1.2,-7.39 -0.01,-10.84 0.18,-2.96 -5.24,-0.47 -7.49,-1.07 -5.13,1.62 -7.3,9.04 -13.4,8.34 -3.13,0.69 -4.64,-2.86 -6.1,-4.84 -4.97,-2.87 -10.19,-5.54 -15.47,-7.76 -2.99,-1.52 -6.08,0.55 -8.5,2.13 -0.97,2.39 -2.38,4.59 -2.88,7.13 -1.56,-1.44 -3.01,-3.67 -0.84,-5.3 1.62,-1.77 -1.68,-4.84 0.9,-6.58 0.02,-1.27 -2.39,-3.21 -3.97,-2.94 -4.31,0.8 -8.65,1.68 -12.59,3.47 -2.43,1.23 -4.15,-0.86 -4.81,-2.94 1.24,-1.68 2.97,0.32 4.34,-1.22 3.92,-1.6 8.22,-4.79 7.48,-9.56 -0.08,-4.17 0.91,-8.43 -1.14,-12.32 -1.21,-3.12 -1.73,-8.59 -5.28,-9.18 -0.59,1.71 -1.3,5.52 -3.94,3.91 -3.94,-2.44 -5.62,-7.87 -10.62,-8.75 -2.4,-0.95 -5.92,-1.49 -2.94,-4.34 -2.83,-1.32 -4.46,2.91 -6.75,4.06 -1.81,0.77 -3.7,1.77 -5.55,1.1 -2.17,-0.1 -2.78,3.34 -5.32,2.53 -2.44,-0.17 -5.39,0.15 -5.47,-3.04 1.26,-2.25 -1.79,-2.35 -3.37,-3.29 -2.69,-1.82 -6.3,0.87 -8.88,-1.52 -3,-2.97 -8.01,-2.63 -12.09,-2.77 -2.73,-0.05 -5.94,1.35 -8.19,-0.63 -2.53,-0.79 -2.34,1.14 -3.28,2.91z M165.38,30.69c0.26,2.81 0.4,-8.09 0.17,-2.47 -0.06,0.82 -0.12,1.65 -0.17,2.47z m13.5,1.44c-2.38,0.11 -5.93,-0.19 -6.48,2.95 -0.84,2.31 2.84,2.19 4.01,3.33 2.08,0.12 5.59,1.6 6.02,-1.46 1.83,-2.49 -0.07,-5.86 -3.55,-4.82z m-11.97,6.41c-1.92,2.44 0.88,5.14 2.25,6.97 3.61,0.13 0.82,-1.45 -0.03,-3.16 -0.91,-0.75 -0.95,-5.89 -2.22,-3.81z M181.53,44c-3.16,2.07 3.2,-1.05 4.68,-0.94 3.57,-2.86 -4.04,0.86 -4.68,0.94z m-1.31,6.22c-3.19,-0.54 3.33,2.8 0.63,-0.13 -0.17,-0.12 -0.42,0.08 -0.63,0.13z m8.44,2.63c-1.5,0.95 -5.02,0.69 -5.3,2.69 0.04,2.05 2.12,3.65 4.01,2.44 0.45,-0.74 3.48,-5.42 1.28,-5.13z m142.28,2.25c-2.22,2.09 -3.42,5.93 -2.84,8.5 1.81,-1.93 6.45,-1.17 5.53,2.13 0.75,2.01 5.23,1.5 7.53,1.68 3.9,0.79 4.95,-0.34 2.64,-3.56 -1.78,-3.59 -4.09,-7.7 -8.61,-7.85 -1.38,-0.32 -3.03,-0.37 -4.25,-0.9z m-134.34,2.94c-1.42,2.56 1.08,4.09 3.5,3.69 1.95,-0.37 3.87,-2.9 3.63,-4.91 -2.37,-0.51 -4.91,-1.04 -6.76,0.98l-0.36,0.24z M140.06,88.88c-0.28,2.81 2.92,0.39 0,0z m48.13,13.38c-1.61,1.32 0.69,2.85 0.06,-0.03l-0.06,0.03z\",\"name\":\"Schleswig-Holstein\"},\"st\":{\"path\":\"m367.5,207.72c-2.53,0.49 -2.68,6.11 -5.69,3.88 -1.54,-0.27 -2,4.74 -0.62,6.28 -1.83,0.03 -4.69,1.23 -5.84,3.45 -2.16,1.75 -5.06,2.95 -7.73,3.81 -1.55,-0.32 -3.98,0.25 -4.38,-1.66 -3.96,-2.32 -9.18,-1.22 -13.69,-1.78 -0.82,1.11 0.07,3.08 -1.73,3.89 -1.82,3.69 -6.1,1.61 -9.28,2.54 -2.64,-0.11 -4.45,1.7 -3.62,4.38 -0.45,3.07 1.59,5.83 2.38,8.76 4.58,2.95 6.91,8.32 9.22,13.03 -1.02,4.14 2.73,7.03 5,9.88 -2.35,-0.75 -6.67,0.93 -4.41,3.78 2.13,2.7 4,5.66 7.03,7.25 2.19,1.61 0.12,4.97 -2.22,4.59 -1.88,2.15 -0.66,5.73 1.52,7.3 1.12,1.37 4.12,3.9 1.64,5.39 -1.82,-0.07 -4.08,1.44 -3.31,3.44 0.85,1.22 3.42,-0.32 2.88,2 0.05,3.3 -3.89,4.53 -5.42,6.71 -0.9,2.3 0.67,6.76 -2.83,4.48 -2.5,-0.5 -4.36,0.86 -6.64,1.31 -3.5,0.14 -7.17,-0.75 -10.56,0.56 0.56,2.46 -2.44,4.29 -4.71,3.94 -2.29,1.2 4.79,4.03 4.2,5.21 -3.3,0.45 -2.03,3.05 0.01,3.98 1.13,2.32 -0.87,4.55 -2.86,5.36 -2.94,1.53 -1.17,5.3 -1.3,7.86 2.06,2.6 4.65,5.37 5.72,8.78 -0.64,2.04 0.85,6.26 3.56,4.75 3.65,0.5 8.21,-0.2 10.69,3.16 4.64,-2.48 0.38,1.08 -0.35,3.49 0.67,3.87 3.9,7.06 5.79,10.42 0.02,2.22 -1.14,5.56 1.78,6.09 2.2,-1.04 4.22,-0.48 6.44,0.45 5.84,2.46 12.54,-0.89 18.17,2.38 2.32,0.62 -0.45,4.34 2.28,4.54 1.79,0.31 -0.33,2.19 2.35,3 1.69,0.92 2.02,2.61 0.5,3.94 -1.45,1.35 -2.21,4.99 -4.56,4.59 -2.63,-0.91 0.09,3.99 2.28,1.66 2.83,0.66 5.62,4.8 3.25,7.41 -2.57,1.08 1.05,5.18 3.56,3.71 1.96,-0.79 2.91,-2.94 5.65,-1.43 2.6,0.08 6.05,0.91 5.78,4.15 1.33,1.52 4.58,2.03 6.72,2.37 2.49,-0.44 5.14,-1.91 7.2,0.43 2.77,1.74 6.17,3.82 6.94,7.21 2.79,-1.13 5.73,-0.73 8.41,0.53 1.23,-2 2.73,-1.49 3.69,0.66 0.59,3.07 2,-0.72 2.48,-1.83 0.83,-2.27 3.92,-5.75 0.2,-7.01 -1.99,-2.12 2.54,-4.35 -0.47,-5.52 -3.54,-1.32 0.06,-3.71 -3.77,-3.68 -1.13,-1.82 -0.14,-5.31 -0.45,-7.77 0.09,-3.62 -2.36,-6.17 -3.27,-9.5 -2.24,-2.8 3.78,-1.95 2.18,-4.77 -0.27,-3.83 -1.97,-7.24 -2.66,-10.91 1.12,-2.57 2.7,-5.07 2.75,-7.88 2.68,-2.78 6.09,-4.94 9.75,-6.06 4.81,0.08 9.58,-1.34 13.94,-3.25 0.29,-3.17 3.92,1.99 5.64,-1.8 0.58,-1.59 1.27,-4.54 3.8,-3.39 2.22,1.16 4.46,1.71 7.03,1.3 4.79,-0.31 9.85,0.27 14.45,-1.01 2.63,-2.16 7.03,-3.34 7.55,-7.13 -2.51,-3.21 -2.57,-7.84 -4.05,-11.66 -1.56,-2.32 0.46,-2.56 1.11,-3.49 -1.21,-1.69 -2.84,1.88 -4.93,0.87 -3.35,0.33 -4.21,-4.14 -7.34,-4.73 -1.95,-1.81 -4.21,-0.39 -6.46,-1.61 -1.95,-1.37 -5.09,-1.98 -5.86,-4.32 -2.25,-0.71 -4.5,-3.34 -6.75,-2.88 0.04,3.1 -4.02,3.62 -6.31,2.65 -6.29,-1.76 -13.04,-4.4 -16.59,-10.25 -1.82,-2.88 -4.27,-5.73 -5.88,-8.53 1.69,-2.65 1.92,-5.52 1.61,-8.56 0.08,-3.49 1.94,-6.54 3.57,-9.44 -0.44,-3.76 -2.35,-8 0.31,-11.34 1.69,-3.42 -2.77,-5.17 -4.84,-4.84 -0.77,1.84 -4.03,2.12 -4.73,-0.07 -3.16,-2.02 -0.66,-5.45 -0.28,-8.33 0.25,-2.72 1.68,-3.75 3.82,-4.6 0.52,-2.45 0.69,-5 -1.29,-6.86 -2,-2.13 -0.72,-5.29 -0.24,-7.76 2.19,-2.1 2.75,-4.3 1.28,-7.4 -0.37,-2.87 -3.52,-1.27 -5.2,-0.49 -2.2,0.23 -1.98,-4.35 -5.66,-2.08 -3.04,0.71 -6,0.64 -8.83,-0.79 -2.04,-1.1 -6.47,-1.05 -6.16,-4.18 0.48,-0.96 2.72,-2.17 0.45,-2.84 -2.36,-0.92 -4.97,-4.41 -7.35,-1.78 -2.26,0.12 -3.78,-2.34 -5.44,-3.56 -1.33,-1.14 2.25,-2.99 -0.03,-2.78z m-35.72,88.19c-0.1,0.03 0.04,0.06 0,0z\",\"name\":\"Sachsen-Anhalt\"},\"sn\":{\"path\":\"m438.91,347.22c-0.71,1.7 -1.23,3.74 -3.22,4.5 -2.58,1.63 -3.52,-1.1 -5.94,1.53 -4.3,1.22 -8.55,2.77 -13.09,2.53 -3.01,1.74 -7.34,3.17 -8.45,6.62 0.03,3.26 -3.77,5.91 -1.75,9.19 1.33,3.2 1.78,6.8 2.19,10.31 -4.06,0.29 -2.18,3.87 -0.74,6.17 2.24,3.72 1.36,8.42 1.53,12.58 2.6,-0.28 2.73,2.06 3.18,3.2 1.51,2.44 3.44,1.13 5.41,0.39 3.7,1.5 8.18,1.88 11.41,4.16 0.74,1.94 -0.81,4.85 2,5.77 1.72,1.99 6.37,0.62 6.03,4.01 -0.35,2.66 3.75,3.98 1.22,5.97 -3.58,1.98 -8.34,0.37 -11.41,3.34 -0.07,2.05 -0.66,4.73 -3.19,4.69 -0.84,-2.38 -4.84,-0.74 -3.91,1.56 -2.16,0.55 -4.73,2.38 -6.75,1.41 -0.26,3.26 -1.99,6.93 0.66,9.67 0.13,3.51 6.2,1.64 4.46,5.11 -1.54,2.13 -3.26,4.42 -6.11,4.51 -2.19,1.15 -4.93,1.82 -6.85,3.17 1.14,0.4 3.92,-0.58 2.97,1.81 -1.3,0.56 -2.71,1.18 -4.15,1.04 -1.87,-0.95 -6.83,1.68 -5.71,-1.56 0.5,-1.28 0.39,-7.08 -1.74,-3.97 -0.56,2.99 -4.53,3.58 -5.56,6.44 -1.97,1.1 -1.24,4.78 1.19,3.64 1.33,1.03 5.21,3.22 2.79,5.13 -0.59,1.68 -5.69,2.39 -2.69,4 2.14,0.67 3.79,2.61 5.05,4.37 -0.72,2.68 -0.54,4.28 2.54,4.44 2.89,0.5 5.02,2.48 7.96,1.72 3.8,-1.14 4.85,3.42 6.85,5.61 1.23,2.16 4.76,5.08 2.59,7.58 -0.49,1.72 3.93,3.14 3.09,0.38 -2.48,-2.46 -0.08,-6.44 1.28,-8.97 2.86,-4.57 6.53,-8.74 9.94,-12.84 4.56,-2.02 9.99,-0.84 14.06,-4.03 2.14,-0.66 4.2,-3.73 6.38,-3.05 2.63,1.52 5.07,3.45 7.78,4.83 2.07,-1.12 5.11,-3.24 4.13,-5.91 0.2,-2.04 -0.2,-5.69 2.84,-5.24 2.59,-0.29 5.2,-0.72 7.63,0.55 2.91,-0.54 1.72,-4.96 3.88,-6.45 2.35,-2.97 5.63,-5.26 8.68,-7.26 2.67,-0.81 5.51,3.8 7.01,0.39 1.65,-1.64 3.72,-4.3 2.58,-6.74 3.93,-2.17 7.47,-5.47 12.25,-5.22 2.33,-0.49 4.94,-0.78 7,0.62 2.41,-0.15 5.15,-2.09 4.01,-4.81 -1.95,-3.53 3.27,-1.43 5.18,-3.05 2.77,-1.08 6.09,-1.25 7.96,-3.69 5.86,-2.9 11.49,-6.39 17.78,-8.32 1.88,-3.11 -0.76,-3.48 -3.2,-3.83 -2.51,-0.45 -4.28,-2.72 -5.9,-4.48 1.17,-2.33 1.01,-5.72 3,-7.44 2.01,-0.54 2.32,2.64 4.53,2.3 2.11,1.26 6.52,1.34 7.5,-0.58 -0.17,-3.74 3.64,0.67 5,1.7 3.7,2.16 4.3,6.67 5.45,10.42 1.49,2.62 -2.09,6.06 2.42,6.33 2.67,0.89 5.37,2.57 8.28,1.87 0.47,-3.78 1.26,-7.7 4.06,-10.39 2.84,-3.18 3.04,-7.91 3.71,-11.62 2.05,-4.17 1.85,-9.14 2.71,-13.74 0.26,-3.07 0.84,-6.1 1.99,-8.91 0.22,-5.15 -3.62,-9.39 -5.25,-14.09 -0.63,-2.47 0.48,-5.37 -1.69,-7.4 -2.96,-2 -6.81,-2.81 -10.16,-4.16 -2.63,0.45 -5.28,-0.92 -5.64,-3.77 -0.41,-2.32 0.72,-4.39 -0.77,-0.54 -0.78,2.23 -4.07,1.99 -5.91,1.44 -0.89,-2.72 -3.76,-2.22 -5.89,-1.05 -2.43,0.03 -4.2,1.93 -3.78,3.04 -2.98,-1.35 -5.85,1.55 -8.48,2.42 -3.55,-1.67 -7.51,-1.35 -11.28,-1.56 -3.58,3.73 -3.22,9.41 -5.54,13.67 -1.24,3.16 -4.34,3.42 -7.26,3.89 -3.26,1.02 -6.88,-0.1 -9.67,2.35 -1.59,0.79 -4,-0.13 -5.49,-0.56 -4.01,0.9 -8.8,0.36 -12.18,-2.44 -2.57,-1.34 -4.55,-3.47 -6.76,-5.28 -2.23,1.37 -5.63,2.37 -6.56,4.87 -0.02,1.86 -4.09,1.87 -5.44,1.29 -1.42,-2.13 -2.64,-3.94 -1.26,-6.61 0.56,-3.54 0.3,-7.09 -1.63,-10.2 -0.72,-1.89 -2.32,-5.98 -4.72,-4.31 -2.79,1.33 -2.48,-5.48 -5.68,-3.53 -5.59,0.15 -11.31,0.77 -16.84,0.31 -1.25,-0.57 -2.44,-1.63 -3.94,-1.22z\",\"name\":\"Sachsen\"},\"sl\":{\"path\":\"m63.72,553.88c-2.9,2.18 -6.1,2.82 -9.5,4.44 -3.47,4.51 -10,4.1 -15.06,5.38 -4.6,0.18 -8.97,-1.26 -13.22,-2.78 -2.47,1.73 -0.51,5.04 -0.84,7.5 1.8,0.96 4.08,-1.32 5.97,0.4 2.44,1.62 5.28,3.2 6.78,5.81 -3.49,0.44 0.05,4.79 -0.09,6.94 1.05,3.41 4.13,4.95 6.56,7.16 1.79,1.94 0.3,5.34 3.04,6.13 2.43,1.92 -2.53,4.66 1.39,5.86 2.37,0.12 6.25,2.27 7.13,-1.09 -0.35,-2.25 -3.03,-3.71 0.38,-4.78 4.42,0.26 10.1,1.27 11.81,5.94 0.51,1.58 -0.22,5.5 1.56,5.84 2.33,-0.7 1.95,-7.32 3.65,-3.1 1.02,1.94 2.67,2.87 4.44,1.6 2.61,-0.08 5.35,0.47 7.44,1.84 0.63,-1.3 5.37,-2.76 3.56,-3.91 -1.62,-2.52 -4.36,-5.17 -3.81,-8.41 1.42,-2.72 5.03,-3.05 6.69,-5.31 0.32,-2.19 -0.19,-4.41 0.63,-6.91 -2.49,1.08 -4.55,-2.01 -6.84,-2.72 1.25,-2.57 -1.08,-3.33 -2.41,-4.88 -1.38,-2.57 3.05,-1.81 2.04,-4.46 0.15,-3.03 0.9,-7.08 -0.66,-9.48C81.13,563.37 78.01,559.23 75,558.25c-1.82,-1.1 -4.05,-5.12 -6.16,-3.76 -1.8,1.27 -2.93,1.15 -3.06,-0.42 -0.68,-0.01 -1.4,-0.33 -2.06,-0.19z\",\"name\":\"Saarland\"},\"rp\":{\"path\":\"m124.22,422c-3.08,1.37 -2.76,4.11 -2.15,6.91 -0.74,2.27 -2.92,4.57 -5.35,5.28 1.82,2.98 -1.68,6.02 -4.55,6.28 -3.87,1.42 -8.15,2.76 -11.74,4.31 -2.53,-1.67 -5.28,-0.25 -4.24,2.84 0.38,2.78 -1.77,4.53 -4.33,4.8 -2.21,0.9 -4.57,1.03 -6.93,0.89 0.24,-3.01 0.16,-2.77 -0.66,-0.16 -2.61,2.5 -6.78,2.21 -10.16,3.14 -1.7,1.36 -3.59,4.13 -6.33,3.09 -1.84,0.93 -1.47,5.36 -2.5,7.61 -0.31,2 -3.88,3.46 -5.32,1.71 -2.49,-2.13 -5.07,1.92 -3.92,4.39 -1.32,2.14 3.87,6.32 1.33,6.03 -2.57,-0.38 -4.98,1.47 -7.53,-0.25 -1.87,-0.86 -4.14,-1.17 -5.28,-3.06 -3.07,1.11 -6.64,2.41 -9.75,2.06 -1.18,-2.88 -5.27,-3.74 -3.13,0.21 0.06,1.85 3.77,4.69 0.04,3.72 -2.34,1.34 -4.33,-0.2 -6.47,-0.11 -0.71,2.72 -2.48,4.43 -4.99,5.59 -1.73,1.37 -5.12,2.04 -4.14,4.93 1.73,3.46 -1.97,4.26 -2.68,6.98 -1.38,4.14 -2.64,8.53 -0.77,12.73 1.47,5.09 3.95,10.18 7.71,13.93 3.19,1.73 6.27,3.8 8.6,6.49 1.94,2.68 4.29,-1.39 6.06,0.93 1.74,1.25 1.47,4.34 1.36,6.37 -1,5.55 -4.71,9.97 -7.61,14.63 -1.1,1.62 -3.21,1.58 -3.81,3.7 1.32,3.4 5.62,2.86 8.44,4.25 6.02,0.99 12.25,-0.27 17.78,-2.55 1.84,-1.13 2.94,-3.18 5.35,-3.48 2.7,-0.62 4.85,-2.4 7.33,-3.4 2.47,-0.56 3.3,1.96 4.66,0.63 1.69,-1.87 4.4,2.01 6.06,3.12 2.19,1.85 4.96,3.22 7.6,4.23 2.08,-1.3 3.07,-1.77 3.74,1 0.63,3.7 0.2,7.6 -0.21,11.34 -3.62,0.15 -1.02,2.73 0.84,3.34 -0.88,3.1 1.79,3.86 4.18,5.17 2.7,-0.99 3.7,-0.04 2.19,2.5 -0.63,2.28 0.81,4.56 -1.1,6.61 -1.8,1.77 -5.4,2.25 -6.16,5.03 0.5,2.47 2.45,5.22 3.88,6.72 0.53,-2.07 4.25,-1.3 6.09,-2.06 2.18,0.88 4.73,2.02 3.59,4.81 0.57,4.16 4.15,6.47 7.58,8.3 4.06,2.82 9.28,1.81 13.75,1.03 5.57,0.87 11.49,1.89 16.04,5.46 1.5,1.92 4.34,2.91 6.75,3.03 1.44,0.1 3.88,-0.46 4.75,1.03 2.73,-1.42 4.25,-4.04 4.38,-7.03 0.97,-3.35 4.62,-5.13 4.47,-8.92 0.59,-3.28 2.22,-6.72 1.35,-9.86 0.74,-2.94 4.48,-3.42 5.84,-6.03 2.45,-0.61 0.47,-2.16 -0.81,-2.44 -2.02,-2.71 2.93,-3.58 2.9,-6.17 0.3,-2.2 -0.42,-4.5 0.69,-6.55 -1.31,-0.77 -4.55,0.38 -4.34,-2.22 1.3,-2.38 -0.67,-5.57 -0.94,-8.16 -1.05,-1.55 -0.56,-3.22 -0.06,-4.81 -2.06,-3.14 -3.58,-6.56 -4.31,-10.28 -0,-3.21 3.88,-3.16 5.84,-4.38 1.83,-1.95 0.9,-4.67 -1.26,-6.04 -2.48,-3.08 -4.3,-6.94 -4.99,-10.83 0.78,-1.71 1.4,-3.41 0.25,-5.25 -0.12,-3.38 -3.6,-5.04 -5.13,-7.75 -2.86,-3.27 -7.52,-1.08 -10.66,0.56 -4.69,1.79 -9.52,4.51 -14.68,3.47 -2.44,-2.49 -4.42,-5.7 -6.29,-8.66 -2.19,-2.94 2.65,-2.19 3.79,-4.33 1.44,-3.52 5.56,-1 5.95,-3.31 1.05,-2.62 -4.12,-2.88 -2.51,-5.79 1.38,-2.83 4.79,-3.85 7.44,-4.63 1.92,2.63 5.73,-0.22 2.09,-1.81 -1.3,-2.26 2.57,-3.89 4.23,-2.24 3.08,0.46 1.96,-3.71 0.96,-5.33 -1.37,-3.08 -3.17,-5.78 -6.33,-7.23 -3.79,-0.63 -1.12,-3.37 -0.49,-6.08 0.24,-1.88 -1.87,-3.91 -0.43,-6.13 1.19,-2.18 3.39,-6.07 6.28,-3.97 1.67,3.39 3.78,0.05 4.16,-2.21 1.81,-2.05 -0.69,-2.3 -1.07,-3.97 -0.17,-2.37 -1.93,-5.43 0.13,-7.42 -0.88,-3.78 -6.22,1.19 -5.36,-1.83 1.28,-4.22 -5.99,-5.38 -4.53,-9.85 1.32,-2 0.84,-5.3 -1.94,-5.86 -1.78,-2.03 -5.71,-1.54 -6.82,-3.48 -0.21,-1.96 2.71,-4.06 -0.25,-4.94C125.29,422.08 124.64,421.87 124.22,422z\",\"name\":\"Rheinland-Pfalz\"},\"nw\":{\"path\":\"m177.25,263.34c-2.1,-1.63 -5.7,-1.31 -6.06,1.91 0.19,3.63 -4.48,4.11 -7,3.66 -1.11,-1.64 -4.06,-2.21 -2.35,0.66 0.52,3.14 4.56,4.05 6.57,6.26 1.92,1.46 2.52,4.49 2.62,6.8 0.18,2.64 0.19,5.1 -0.9,7.58 -1.32,1.99 0.48,3.83 2.46,3.92 3.25,0.58 0.3,2.71 -0.78,3.97 -1.55,0.88 -3.89,0.86 -4.75,2.84 1.66,2.95 -2.56,1.58 -4.29,1.1 -2.41,-0.95 -5.38,-1.98 -7.02,0.74 -2.16,1.92 -4.56,3.57 -7.26,4.5 -1.87,2.2 -2.96,-0.94 -5.46,-0.31 -2.18,0.39 -2.63,4.37 -4.84,2.75 -2.6,-0.41 -3.41,-2.28 -4.46,-4.35 -2.31,-1 2.21,-2.81 3.55,-2.98 3.51,0.2 5.07,-3.48 2.41,-5.69 -1.71,-1 -4.92,-1.05 -5.1,-3.81 -0.4,-2.56 2.07,-4.87 2.81,-7.19 0.91,-0.72 -1.83,-2.26 -0.5,-3.69 3.14,-1.64 1.45,-5.72 -1.26,-6.8 -2.05,-1.15 -4.05,1.71 -6.33,0.21 -2.51,-1.72 -6.07,-2.59 -6.27,-6.18 -0.22,-2.85 -2.57,-3.65 -4.96,-4.34 -1.35,-0.64 -3.78,3.65 -1.27,3.96 1.72,1.12 -0.74,4.19 -1.92,5.19 -4.58,2.06 -9.39,4.71 -12.83,8.28 -0.91,2.09 -3.91,0.71 -4.63,3.16 -3.68,0.16 -7.44,-1.07 -11.03,-0.19 -1.13,2.36 -3.53,1.5 -5.41,2.92 -3.3,2.56 -8.23,3.82 -10.15,7.67 -0.16,4.41 -5.85,3.29 -8.27,5.42 -1.07,1.95 -3.97,5.3 -0.36,6.02 2.12,2 6.43,3.97 4.59,7.5 -2.07,2.76 -4.18,5.76 -7.59,6.94 -1.43,-2.65 -3.58,-2.35 -5.97,-1.09 -2.93,0.68 -5.59,2.43 -8.37,3.24 -1.83,0.92 -6.4,-1.52 -6.2,0.14 1.25,2.44 1.32,5.11 -1.64,2.71 -2.84,-2.65 -6.23,-5.14 -10.34,-4.5 -2.26,1.13 -4.86,1.79 -7.57,1.91 -2.94,-0.3 -6.47,1.11 -7.66,3.97 0.91,4.49 1.78,9.09 3.5,13.31 3.65,0.48 3.87,3.28 3.59,6.38 -0.03,2.95 4.03,4.36 4.95,7.23 3.16,3.93 2.85,9.32 1.32,13.83 -1.07,2.64 2.37,5.59 -1.15,7.3 -2.71,3.53 -6.04,6.82 -8.16,10.71 -0.6,1.66 -1.81,5.57 0.42,6.15 1.79,-1.07 4.45,-3.48 6.03,-0.89 -1.83,0.74 -3.77,2.52 -4.63,4.79 -4.06,2.72 -7.88,5.86 -12.82,6.75 -2.54,0.57 -4.87,1.7 -3.17,4.63 0.65,3.73 2.86,3.68 5.9,3.34 1.73,-0.12 4.7,0.11 2.92,2.43 -1.62,2.73 0.97,3.7 3.18,4.3 2.89,0.68 -1.54,3.27 0.66,4.81 0.17,1.78 -1.03,5.56 -2.97,3.06 -2.7,0.41 -2.86,4.47 -3.11,6.49 1.25,3.17 3.86,4.98 6.86,6.32 1.73,2.64 2.03,6.34 4.88,8.31 -3.91,1.75 5.55,0.78 2.22,4.39 0.29,3.25 -5.37,3.94 -3.38,7.37 0.76,1.42 1.86,4.52 3.66,2.67 3.25,-0.44 6.22,1.26 7.36,4.35 2.36,2.77 -0.08,6.31 -0.45,9.15 2.56,4.82 -0.8,-1.03 2.06,-1.07 2.71,-1.06 3.44,4.11 6.19,2.53 2.75,0.37 5.82,-2.69 8.02,-1.5 1.92,2.23 5.39,3.01 8.14,3.37 3.72,-0.21 2.3,-1.41 1.51,-3.82 0.04,-2.95 -1.16,-6.55 2.63,-7.5 2,-1.69 3.89,3.12 6.16,0.31 1.15,-2.86 1.77,-6.3 2.41,-9.46 2.7,1.12 5.4,-0.08 6.75,-2.56 3.27,-1.13 7.52,-0.86 10.35,-2.91 0.37,-1.12 0.98,-4.32 2.62,-2.66 -0.82,3.1 2.33,2.44 4.39,1.84 2.3,-0.53 5.31,-1.22 4.81,-4.28 -0.51,-2.22 0.4,-5.33 3.3,-4.47 2.78,1.45 5.46,-1.31 8.27,-1.76 3.1,-1.68 7.91,-1.4 9.45,-5.05 -0.47,-2.98 -4.28,-3.7 0.44,-3.18 2.74,-1.08 5.31,-3.89 4.08,-6.99 -1.04,-2.52 1.87,-4.26 3.71,-5.24 2.21,0.36 5.37,2.16 3.03,4.28 -1.84,2.46 1.06,2.47 2.69,2.94 2.57,1.6 7.18,2.77 6.12,6.74 -0.22,1.83 -1.49,3.93 0.54,5.35 1.58,1.78 4.44,3.29 3.47,6.09 1.92,-1.91 4.28,0.75 5.25,0.78 1.15,-1.97 2.94,-4.17 0.84,-6.13 -1.97,-2.33 -1.27,-4.35 1.26,-5.9 2.67,-2.21 4.81,-5.42 7.75,-7.15 2.53,-0.53 5,4.12 6.81,1 1.81,-2.99 4.43,-5.63 4.94,-9.19 1.73,-1.11 2.77,-3.4 4.66,-4.63 0.39,-1.91 -1.57,-4.12 -1.75,-6.25 0.73,-3.23 4.88,-3.7 7.64,-2.9 1.98,0.85 4.51,0.77 5.94,-0.93 1.31,-3.2 3.81,-6.24 2.52,-9.88 -0.64,-1.84 0.53,-6.24 -2.48,-5.85 -2.48,0.46 -4.55,3.29 -7.13,2.53 -1.37,-1.68 -3.72,-3.65 -1.3,-5.48 2.34,-4.53 6.76,-7.46 11.73,-8.41 3.83,-1.47 7.94,-1.54 11.98,-1.11 1.92,-2.78 -0.9,-3.85 -1.9,-6.19 -1.82,-1.61 -1.41,-4.36 1.19,-4.68 3.14,-1.44 7.01,-2.83 10,-0.32 2.4,1.63 -0.27,3.86 1.25,5.59 1.92,0.62 4.04,0.65 4.63,-1.66 3.98,-3.61 9.19,-6.08 11.4,-11.26 1.23,-2.28 4.7,-5.14 4.82,-6.65 -1.68,0.55 -4.34,-0.05 -3.2,-2.36 0.05,-5.23 2.13,-10.09 3.74,-14.92 1,-2.69 -2.16,-5.66 -4.66,-4.72 -3.16,2.83 -0.64,-2.27 -0.81,-4.06 -0.05,-2.72 -2.54,-1.8 -3.99,-2.62 -2.61,-2.3 -7.4,-3.71 -6.62,-8.03 0.39,-2.34 -1.28,-5.79 0.83,-7.47 -2.23,-1.73 -1.62,-3.85 -2.5,-6.03 -2.65,-0.77 -5.5,-0.87 -7.39,-3.23 -1.18,-0.94 -5.31,-5.84 -2.07,-3.89 2.92,3.3 5.04,-1.41 4.58,-3.56 -1.6,-1.73 -4.39,-1.61 -6.02,-2.94 -1.48,-2.41 1.21,-4.72 1.94,-6.91 1.84,-2.01 5.4,-1.29 6.16,-4.38 1.42,-2.09 2.16,-4.3 0.81,-6.53 1.2,-2.26 2.95,-5.17 -0.91,-5.56 -3.17,-1.51 -3.6,3.21 -5.58,4.74 -1.93,2.12 -2.98,5.59 -6.39,5.38 -3.28,0.88 -6.88,0.85 -10.18,0.44 -3.79,-0.66 -2.03,-5.2 -2.58,-7.89 -0.63,-2.02 1.28,-4.76 -1.4,-5.81 -1.68,-1.96 -4.73,1.64 -6.71,2.05z m32.09,14.69c-0.04,0.06 0.1,0.03 0,0z\",\"name\":\"Nordrhein-Westfalen\"},\"ni\":{\"path\":\"m186.44,120.91c-5.6,0.51 -6.88,7.11 -8.44,11.54 -1.55,4.84 -4.41,10.19 -1.33,15.08 0.62,2.76 4.51,0.93 6.62,1.66 3.74,-0.55 1.44,3.37 1.28,5.34 -0.09,2.27 2.07,5.17 -0.81,6.68 -0.57,2.01 -4.6,1.89 -4.47,0.01 0.2,-1.62 -2.19,-2.79 -1,-4.38 -2.39,-2.05 -5.8,-0.88 -8.29,-2.92 -3.19,-0.55 -3.1,-6.58 -7,-4.9 -3.25,1.5 -2.87,5.42 -3.31,8.39 1.73,1.09 4.31,-1.81 5,0.84 0.65,4.51 -0.3,10.35 -4.66,12.69 -2.05,0.33 -4.01,-0.7 -4.44,-2.75 -1.01,-1.99 -2.84,-4.1 -4.91,-2.06 -2.51,-1.99 -2.84,-5.26 -2.69,-8.25 1.7,2.41 4.86,0.82 6.63,-0.53 1,-2.85 -1.94,-5.58 -2.55,-8.38 -0.35,-2.68 -2.75,-3.1 -4.67,-3.53 -0.88,-2.07 -1.59,-4.78 -0.56,-6.72 -5.56,-1.98 -11.61,-0.89 -17.16,0.47 -4.67,-1.16 -9.01,2.41 -13.75,2.56 -2.64,-2.27 -6.36,-1.45 -9.63,-2 -6.44,-0.16 -11.29,4.48 -15.23,9 -2.96,1.82 0.86,2.65 1.75,4.06 2.29,2.26 -1.66,3.67 -2.74,5.44 -1.44,-2.96 -5.14,-3.8 -4.27,0.54 -0.65,3.9 -0.71,8.05 -1.52,11.83 -1.87,1.87 0.95,4.14 2.97,3.58 5.28,0.29 10.96,-0.24 15.72,2.42 -2.08,0.69 -5.45,-0.97 -5.28,2.53 -1.3,3.55 -0.88,7.6 -1.89,11.2 -1.02,2.31 -3.53,5.58 -0.77,7.39 -1.04,4.96 1.43,10.17 -1.09,14.86 -1.44,6.42 -8.35,10.37 -8.34,17.29 -0.73,5.37 -0.65,11.06 -2.02,16.22 -1.54,2.43 -4.12,-1.19 -6.18,-0.78 -4.31,-0.59 -8.85,-1.62 -13.15,-0.5 -3.28,1.5 -0.59,5.19 -1.65,7.89 0.05,2.71 -1.96,5.6 -1.13,7.99 3.96,3.35 9.48,3.72 14.25,5.18 1.32,-0.55 1.98,-4.64 3.66,-2.59 1.6,4.04 5.43,7.78 4.44,12.38 -1.84,2.71 -4.41,6.49 -1.89,9.57 1.86,2.89 3.08,-1.11 5.12,-1.16 3.32,-0.74 7.21,1.07 10.28,0.08 0.77,-2.08 3.82,-0.65 4.33,-3.02 3.95,-3.24 8.34,-6.11 13.06,-8 3.49,-2.99 -0.93,-3.55 0.23,-6.31 0.69,-1.71 1.95,-4.41 4.07,-2.55 2.19,0.59 4.44,1.49 4.69,4.05 0.24,3.46 3.25,4.66 5.87,6.2 2.49,1.33 5.1,-2.32 7.3,0.36 2.1,0.86 2.8,3.79 2.88,5.66 -2.14,1.36 -2.99,3.7 -0.25,5 -2.47,1.24 -2.71,4.41 -4.06,6.59 -0.13,3.3 3.86,2.19 5.28,4.24 1.61,1.34 2.29,6.23 -0.56,6.24 -2.12,1.03 -7.72,1.03 -4.44,4.18 0.32,1.52 3.77,3.35 4.41,1.19 1.64,-2.26 4.29,-2.15 6.63,-1.31 1.36,-0.07 3.99,-1.2 5.52,-2.37 2.72,-1.18 4.39,-5.59 7.79,-3.97 1.75,0 5.6,2.6 5.94,0.72 0.62,-2.2 3.26,-3.09 5.19,-3.63 2.15,-1.43 1.31,-2.65 -0.91,-2.81 -3.46,-2.11 -0.12,-6.05 -0.14,-8.9 -0.15,-3.52 0.05,-8 -3.58,-9.88 -2.14,-2.11 -6.14,-3.08 -5.9,-6.7 -1.51,-2.43 0.6,-3.29 2.77,-2.04 1.45,1.42 4.2,1.38 5.98,0.03 1.26,-1.81 0.54,-4.61 3.46,-5.43 2.32,-1.11 5.18,2.05 7.68,-1.07 2.13,-2.24 4.04,-0.2 5.66,1.43 0.57,2.57 -0.21,5.4 0.22,8.09 -0.93,3.21 1.85,4.85 4.75,4.17 3.21,-0.08 7.22,0.09 9.7,-1.99 2.54,-2.97 4.51,-6.31 6.89,-9.36 2.02,0.69 5.86,0.77 5.97,3.44 -1.73,2.35 -1.52,4.54 -0.97,7.06 -1.39,2.86 -2.39,6.91 -6.2,7.13 -2.4,1.05 -3.91,4.28 -3.71,6.63 1.97,1.04 4.71,1.6 6.53,3.33 0.07,1.63 -1.12,5.59 -2.84,6.05 -3.41,-0.73 1.6,2.55 2.84,3.1 2.26,0.15 6.09,0.95 5.15,4.09 -0.68,1.53 3.99,3.73 1.27,4.76 -0.76,2.74 -0.13,6 0.12,8.84 1.43,2.32 4.36,3.6 6.57,5.25 3.31,-0.99 4.48,3.42 3.35,5.85 0.3,0.17 2.48,-0.22 3.34,0.68 2.41,1.16 3.09,3.45 2.56,5.97 -2.13,4.96 -3.82,10.38 -3.75,15.72 2.51,0.18 4.77,-1.21 7.34,-1.06 0.61,1.51 -0.65,3.85 2.25,3.24 3.59,-0.55 6.83,1.47 9.03,4.14 1.86,0.23 1.58,3.6 -0.22,2.84 -1.35,2.17 -4.02,2.06 -5.22,4.59 1.78,2.73 3.46,5.34 3.51,8.74 1.02,2.35 -1.28,3.79 -3.38,3.42 -2.32,0.54 -3.56,5.32 -0.53,5.96 3.22,1.18 6.33,2.54 9.36,4.13 4.29,-2.82 0.47,-2.05 -1.06,-3.89 -2.77,-2.53 1.66,-4.59 3.28,-6.24 2.15,-2.54 5.98,-1.9 8.84,-2.34 2.08,1.35 1.61,5.72 4.21,2.64 3.91,-2.4 7.72,-5.21 12.48,-5.45 3.97,-2.72 8.84,-4.93 11.78,-8.85 1.12,-1.78 0.33,-3.88 2.39,-5.63 3.16,-1.67 6.79,0.6 8.47,3.25 2.88,-0.58 7.14,-0.26 7.76,-3.87 -0.05,-2.88 3.65,-4.47 1.75,-6.24 -1.57,-2.46 -0.32,-5.67 -2.8,-7.78 -1.09,-2.4 -4.13,-3.43 -3.79,-6.44 -0.16,-2.66 -0.99,-6.17 2.11,-7.49 1.53,-0.76 3.52,-2.56 1.95,-4.3 -2.69,0.07 -2.43,-3.84 -0.41,-4.53 -1.85,-1.14 -5.14,-4 -4.75,-5.49 2.09,-0.39 4.95,0.22 5.97,-2.13 -0.9,-2.87 3.5,-2.65 5.41,-2.71 2.87,-0.48 6.16,1.13 8.63,-0.98 1.86,-0.84 5.77,1.14 5.58,-1.56 -0.39,-2.88 1.81,-4.27 3.9,-5.7 0.91,-0.47 3.07,-3.7 1.17,-3.53 -3.44,0 -2.76,-5.19 0.13,-5.66 3.82,-0.08 0.19,-3.6 -1.09,-4.81 -2.24,-1.37 -1.88,-4.21 -1.94,-6.38 0.35,-2.73 4.31,-1.12 3.91,-4.03 -1.37,-1.84 -4.07,-2.33 -5.04,-4.76 -1.41,-2.15 -5.08,-4.85 -2.74,-7.55 3.42,-1.12 3.06,-1.7 0.77,-4.08 -1.69,-1.79 -1.55,-4.29 -1.69,-6.46 -2.28,-4.45 -4.68,-9.22 -8.86,-12.09 -1.05,-3.33 -3.02,-6.48 -2.57,-9.99 -0.32,-2.09 0.44,-4.42 2.92,-4.26 2.85,-1.12 6.27,-0.08 8.93,-1.09 1.55,-1.38 2.76,-2.68 2.6,-4.79 1.69,-2.11 5.13,-0.16 7.46,-0.64 2.96,0.35 7.54,-0.38 8.88,2.86 3.56,1.21 6.67,-1.39 9.63,-2.75 1.37,-1.79 3.07,-3.85 5.5,-3.97 -1.07,-2.07 -0.03,-4.66 0.75,-6.72 2.37,0.04 3.51,1.16 4.74,-2.15 -3.03,-0.57 -6.18,-1.13 -7.93,-4.01 -2.99,-1.28 -5.04,3.32 -7.81,2.09 -1.68,-2.2 -4.97,-3.78 -4.59,-6.94 -1.58,-2.26 -4.54,-2.52 -6.84,-3.72 3.01,-0.21 2.65,-3.1 -0.2,-2.77 -6.07,-2.31 -7.72,-9.29 -10.33,-14.6 -2.42,-1.1 -4.9,-1.16 -5.92,1.34 -1.84,1.96 -4.18,1.97 -6.29,0.43 -2.67,-1.78 -3.79,-6.4 -7.79,-5.36 -2.51,-0.77 -4.24,2.4 -6.66,0.76 -4.42,-0.95 -7.78,-4.07 -12.05,-5.47 -1.87,-1.32 -3.8,-1.77 -5.52,0.17 -0.27,2.44 -2.51,2.71 -4.5,2.22 -3.65,-0.29 -5.04,-4.84 -7.84,-6.5 -1.55,0.25 -1.89,4.05 -4.47,4.49 -2.08,0.15 -3.58,-2.52 -5.1,-3.8 -1.02,-1.09 -2.8,3.74 -4.07,0.89 -2.45,-1.59 -2.98,-4.24 -4.53,-6.41 -0.49,-1.9 1.56,-6.03 -2.15,-5.31 -4.45,-0.29 -7.84,-3.81 -11.28,-6.28 -1.97,-2.7 -0.94,-6.7 -3.64,-9.09 -3.37,-1.87 -5.18,-5.18 -6.46,-8.69 -1.64,-4.08 -4.33,-8.01 -8.9,-9 -3.99,-0.41 -8.13,-0.36 -12.15,-0.37 -3.37,0.14 1.11,4.61 0.44,4.78 -2.24,-0.97 -4.59,-0.85 -6.63,0.19 -3.12,0.32 -6.61,0.16 -9.54,-0.98 -2.08,-1.54 -4.86,-2.91 -5.69,-5.53l-0.44,0.03z m-49.34,8.94c-0.03,1.09 0.83,-0.73 0,0z m-9.69,0.88c-1.79,0.64 -2,2.84 -0.28,0.69 1.15,0.39 7.48,0.12 5.09,-0.5 -1.6,-0.1 -3.21,-0.36 -4.81,-0.19z m18.53,1.06c0.45,3.21 0.81,1.46 0,0z m-31.41,1c-2.03,0.59 -1.28,4.28 0.3,1.19 1.64,-1.6 4.48,-0.97 6.64,-1.09 -2.3,-0.17 -4.65,-0.31 -6.94,-0.09z M108.19,134.75c-2.3,1.14 5.75,0.85 0.38,-0.03 -0.12,0.04 -0.27,-0.05 -0.38,0.03z m-12.13,0.84c-3.52,0.44 -2.54,2.25 0.41,1.38 2.85,-0.48 5.82,-0.48 8.59,-1.28 -2.97,-0.23 -6.02,-0.18 -9,-0.09z m-32.28,11.06c-1.1,1.27 2.99,3.13 2.5,3.16 1.33,-1.35 0.17,-2.16 3.86,-2.62 3.23,0.07 0.14,-2.1 -1.3,-2.1 -1.69,0.52 -3.38,1.04 -5.06,1.56z M174.25,186.75c0.36,2.67 4.51,2.84 6.35,4.51 3.41,1.6 7.66,0.4 10.79,2.95 3.11,1.84 7.08,3.66 10.49,1.79 1.4,0.19 3.63,2.7 2.89,3.67 -2.99,0.4 -0.11,3.94 -0.78,6.22 0.86,2.85 -2.01,3.95 -3.7,5.61 -3.46,-0.92 -6.93,-3.62 -10.57,-2.86 -2.23,0.9 -3.13,-2.21 -2.65,-3.92 -0.64,-2.4 -4,-3.06 -3.74,-5.78 -0.67,-2.42 -1.42,-4.7 -4.2,-4.81 -3.28,-1.01 -7.24,-4.77 -5.34,-8.44 0.16,0.35 0.31,0.71 0.47,1.06z\",\"name\":\"Niedersachsen\"},\"mv\":{\"path\":\"m468.38,35.5c-3.45,0.91 -7.31,1.41 -8.93,5.06 -0.26,1.49 -3.68,7.61 -2.06,6.34 1.83,-1.19 3.02,-3.21 2.21,-5.18 0.53,-1.31 3.04,-4.63 4,-2.16 0.98,2.93 -2.17,4.94 -1.91,7.78 2.5,-1.15 4.75,-3.34 7.37,-1.07 2.42,1.29 5.16,2.48 7.7,0.7 1.54,0.46 0.47,5.05 0.71,7.19 0.58,3.31 -4.03,1.68 -5.65,1 -1.59,-1.22 -4.83,-1.69 -5.19,-3.75 1.7,-4.11 -3.26,-1.94 -5.53,-2.31 -2.04,0.6 -6.23,0.55 -4.31,3.72 1.26,1.16 4.35,-0.42 5.38,2.04 2.76,1.44 -0.43,4.39 -2.54,4.37 -2.75,-0.56 -4.74,4.2 -0.71,3.48 2.64,0.57 6.65,0.82 2.18,2.56 -1.86,1.21 -4.55,1.66 -6,3.25 -1.1,2.82 0.47,5.48 1.28,8.13 5.01,1.69 10.02,3.38 15.03,5.06 2.12,-0.23 1.09,-3.14 0.16,-2.97 -0.76,1.88 -3.98,1.99 -3.25,-0.63 2.8,-3.12 5.65,-6.81 9.31,-9 3.6,-0.24 7.24,-1.3 10.81,-1.09 1.21,1.32 2.75,4.02 0.25,4.94 -1.68,2.68 3.83,-2.34 2.14,-4.14 -1.15,-2.6 -3.19,-5.78 -6.42,-4.67 -2.75,-1.52 -4.42,-5.28 -3.91,-8.38 1.26,-2.37 3.94,-3.83 5.78,-5.54 1.61,-2.97 -1.68,-6.36 -4.75,-5.02 -3.75,0.66 -8.71,3.63 -11.63,-0.19 -1.83,-1.92 -3.2,-6.71 0.31,-7.56 2.78,-1.63 0.58,-2.73 -1.84,-1.94z m-11.72,12.09c-0.08,-0.04 -0.09,0.18 0,0z m-4.56,2.28c1.4,-3.26 1.29,-4.92 0.11,-0.61l-0.09,0.49 -0.02,0.12z M457,55.72c-1,0.46 -3.54,5.14 -1.38,3.6 1.48,-0.87 6.21,-2.64 2.44,-3.69 -0.36,-0.17 -0.71,0.02 -1.06,0.09z m-41.09,7c-0.25,1.57 -4.9,6.97 -0.87,4.76 3.72,-1.22 7.4,-2.58 10.67,-4.69 2.93,-0.95 5.29,-0.58 1.12,-0.91 -3,-0.7 -6.71,0.09 -8.98,-2.44 -0.65,1.09 -1.29,2.19 -1.94,3.28z m31.25,-1.97c0.11,0.78 4.7,-2.13 0,0z m-5.81,0.66c-3.54,0.47 -7.66,0.41 -10.88,0.66 0.67,2.11 2.68,1.92 4.62,1.67 3.01,-0.17 6.3,-0.07 8.66,-2.29 -0.79,-0.19 -1.6,-0.03 -2.41,-0.03z m1.56,3.03c-2.88,1.13 -1.21,5.18 -4.19,6.34 -3.6,2.14 -6.72,-2.29 -10.47,-2.06 -3.01,-0.89 -5.76,1.74 -8.35,3.01 -2.71,2.18 -6.52,4.43 -7.27,7.96 0.18,1.51 4.13,0.67 2.84,2.66 -2.29,1.22 -5.24,-0.3 -6.59,-2.13 -0.64,-1.13 1.18,-6.54 -0.53,-3.19 -3.22,4.08 -9.79,4.87 -11.29,10.52 -1.07,2.64 -1.85,5.58 -5.3,3.89 -4.59,-1.7 -8.52,1.77 -12.84,2.72 -3.31,0.47 -6.17,-1.62 -9.5,-0.72 -2.97,1.63 -5.73,4.31 -8.33,6.62 -1.96,2.01 -2.68,5.33 -0.14,1.47 1.06,-1.2 2.41,-4.78 4.19,-3.41 2.37,2.62 -1.24,5.31 -2.34,7.63 -1.89,1.4 -5.07,1.98 -4.85,5.06 -0.11,3.13 -0.5,6.25 -2.62,8.72 -1.16,-0.88 -3.68,-1.23 -3.47,-3.09 -1.92,-1.17 -4.21,-1.95 -5.89,0 -2.35,1.65 -4.97,-1.81 -3.77,-4.13 -1.91,-1.96 -3.3,-5.2 -6.59,-3.87 -5.1,-0.35 -9.02,3.11 -13.04,5.78 1.53,2.15 0.81,6.74 -2.56,5.38 -2.64,1.41 -7.07,3.37 -6.72,7.09 1.31,2.5 2.06,5.12 1.15,7.92 0.24,2.24 3.08,3.96 4.95,5.27 1.49,-0.13 2.88,-0.94 4.38,0.28 1.77,1.48 2.91,4.8 1.54,6.72 -1.07,2.51 -1.74,5.18 -3.94,7.19 -3.45,4.41 -6.57,9.53 -11.63,12.13 -2.85,-1.67 -4.12,1.25 -4.21,3.8 -1.04,3.05 -1.35,4.72 2.28,3.81 4.38,-1.22 5.62,3.97 8.63,5.73 2.06,1.71 4.79,0.13 5.56,-2.03 1.66,-2.26 4.66,-0.28 6.53,0.28 2.66,5.4 4.35,13.11 11.13,14.56 1.97,-0.26 2.54,2.31 1.09,3.34 1.98,0.75 4.2,1.46 5.28,3.41 2.92,0.33 5.86,0.78 7.88,-1.84 2.53,-1.04 4.17,0.11 6.2,0.92 3.41,1.17 3.57,-3.72 2.91,-5.91 -1.19,-2.85 2.75,-4.04 4.19,-5.91 2.26,-0.57 6.06,-0.68 6.92,2.18 2.22,-0.82 7.58,-0.29 4.18,-3.52 1.89,-0.52 5.64,-0.7 8.01,-2.08 1.84,-1.16 5.37,-2.23 4.75,-4.82 0.89,-1.93 2.17,-4.64 4.7,-3.27 2.88,0.17 5.85,-1.68 8.79,-1.42 2.69,2.85 6.38,3.54 9.59,5.47 2.1,1.42 2.54,5.89 5.86,4.62 1.42,-1.54 4.52,-1.23 6.97,-0.84 2.64,0.11 5.42,0.12 6.99,2.65 1.76,1.23 2.9,3.74 4.81,4.36 3.51,-2.08 7.9,-1.79 11.85,-1.57 1.87,0.92 -0.02,2.26 -1.2,2.88 2.73,2.02 3.96,-3.02 6.01,-4.14 1.85,-2.5 5.05,-5.4 8.21,-4.51 0.4,1.63 2.6,4.73 2.69,1.53 -0.18,-4.03 4.85,-6.14 8.16,-4.72 0.92,1.02 1.13,4.66 2.78,2.25 1.94,-2.52 5.64,-4.66 5.83,-7.92 -0.98,-3.87 1.53,-7.87 4.55,-10.15 2.94,-2.19 5.03,-6.55 9.2,-6.14 3.13,-1.46 0.88,-2.47 0.94,-4.94 -0.47,-2.01 1.66,-5.18 3.04,-2.12 2.09,2.5 4.8,4.66 5.08,8.15 0.55,3.39 3.31,3.78 6.08,2.65 2.41,-0.3 6.44,1.78 7.55,-1.21 2.62,0.79 6.91,-0.99 8.25,2.06 1.49,6.11 -3.45,10.78 -7.19,14.78 -1.98,3.1 3.33,1.46 5.03,1.98 3.6,0.68 6.06,-2.53 6.41,-5.79 1,-1.79 6.72,-1.16 5.01,-3.95 -1.75,-4.35 -2.83,-9 -3.99,-13.46 -2.18,-2.83 -4,-6.6 -2.87,-10.22 -0.22,-5.43 -3.03,-10.29 -3.44,-15.72 -0.42,-2.28 -2.57,-2.04 -3.28,-0.22 -1.81,2.36 -5.39,1.17 -7.84,0.59 -3.37,-1.38 -7.23,-1.87 -9.74,-4.72 -2.44,-2.52 -7.36,-2.95 -8.1,-6.78 1.68,-2.2 3.24,-5.36 5.94,-6.13 0.44,-2.04 -2.63,-3.55 -3.67,-5.18 -2.27,-2.24 -3.02,-5.61 -4.55,-8.32 0.21,-2.8 0.27,-5.88 -2.37,-7.5 -1.78,-3.54 -4.86,-2.15 -7.78,-0.99 -2.53,1.08 -5.51,1.39 -7.79,2.9 0.14,1.21 2.98,3.43 0.56,3.84 -3.2,0.18 -3.78,-3.49 -4.59,-5.69 -0.99,-1.26 -3.18,1.08 -3.03,-1.66 3.36,-2.44 -2.45,-0.94 -3.09,-2.5 -1.56,-2.33 -1.97,-5.95 -5.39,-6.49 -2.15,-2.65 -4.68,-0.2 -6.44,-0.76 -2.83,-2.27 -3.42,-6.13 -4.17,-9.38 1.49,-2.52 -2.16,-5.5 -3.62,-7.17 -1.75,-0.48 -3.25,0.75 -4.88,1.21z m52.69,22.19c-3.16,0.36 -1.48,4.22 0.37,5.25 1.73,2.04 0.07,5.76 2.48,7.75 1.23,2.84 2.71,4.73 5.49,2.07 1.56,-1.43 -2.24,-3.39 -0.78,-5.26 2.84,0.22 4.58,0.55 1.09,-0.38 -3.78,-1.63 -6.46,-4.91 -7.63,-8.84 -0.21,-0.29 -0.58,-0.78 -1.03,-0.59z M508.81,98.25c2.29,2.13 4.59,4.76 3.68,8.19 1.29,3.82 -2.55,2.56 -4.59,1.72 -1.01,-1.74 -1.1,-5.02 -3.97,-3.22 -1.8,2.49 2.15,3.83 2.07,6.36 1.37,2.89 -1.67,5.12 -4.12,5.88 -2.51,0.31 -1.55,2.32 0.67,2.35 4.16,0.13 7.86,-2 11.53,-3.58 2.18,-0.69 5.82,0.22 7.3,-1.22 1.43,-3.32 1.05,-6.01 -2.4,-7.65 -4.01,-3.08 -7.07,-7.49 -11.49,-9.99 0.44,0.39 0.88,0.77 1.31,1.16z m-153.22,8.91c-2.07,0.65 -6.19,2.56 -3.84,5.09 3.14,1.72 4.9,-0.57 5.38,-3.56 0.63,-1.6 0.03,-1.86 -1.53,-1.53z\",\"name\":\"Mecklenburg-Vorpommern\"},\"he\":{\"path\":\"m231.91,351.28c-2.52,4.22 -6.22,7.61 -8.38,12.09 -3.47,2.99 -7.81,5.31 -10.28,9.09 -2.28,0.4 -5.74,0.13 -5.5,-3 2,-3.26 -3.47,-5.21 -5.91,-3.76 -1.41,0.82 -5.95,0.93 -4.65,3.28 0.64,2.39 3.13,3.23 3.37,5.4 0.17,2.42 -1.34,4.44 -3.94,3.29 -5.15,-0.39 -10.41,1.05 -14.95,3.35 -3.17,1.4 -4.72,4.59 -6.61,7.28 0.84,1.05 2.01,4.06 3.59,2.09 2.37,-0.9 6.57,-4.19 7.88,-0.28 0.22,4.19 2.13,8.77 -0.72,12.51 -0.71,2.75 -2.31,4.62 -5.22,4.99 -3.14,-0.43 -7.52,-2.41 -9.63,1.09 0.39,2.15 1.85,4.24 2.13,6.19 -1,1.73 -3.4,2.91 -4,4.63 3.11,2.85 -2.97,-1.27 -1.76,3.31 -1.97,2.72 -3.4,6.11 -5.96,8.25 -2.51,0.68 -5.22,-4.25 -7.23,-1.05 -2.7,2.64 -5.41,5.28 -8.11,7.92 0.49,2.48 3.93,4.74 1.63,7.26 -0.76,2.71 -4.3,4.36 -2.78,7.49 -0.8,2.92 2.77,3.49 2.12,5.75 -1.13,1.85 -1.06,5.6 -3.44,5.9 -1.97,0.22 -2.63,-1.53 -4.06,-2.13 -2.8,1.41 -5.48,6.02 -2.56,8.66 -0.49,2.46 -3.67,5.82 0.27,6.82 3.67,1.53 5.25,5.3 6.61,8.75 0.92,2.04 1.08,4.85 -1.7,5.37 -1.07,-0.93 -5.7,-1.33 -3.5,1.11 2.47,0.99 0.89,3.49 -1,3.99 -2.32,-1.08 -4.25,-1.29 -6.55,0.33 -2.11,0.73 -3.8,3.88 -1.08,4.86 2.02,1.08 1.39,4.09 0.28,5.59 -2.84,-2.01 -4.64,0.94 -6.72,2.5 -3.14,0.7 -2.62,2.78 -0.67,4.69 1.7,1.7 2.49,4.75 4.7,5.72 7.32,0.54 13.26,-4.85 20.19,-5.97 3.41,-0.25 5.55,2.38 7.21,4.9 2.7,2.09 3.72,5.69 3.75,8.95 -2.21,2.91 0.93,6.19 1.75,9.06 1.22,3.02 5.3,4.54 4.69,8.16 -0.83,2.19 -2.69,3.5 -5.03,3.69 -3.67,1.29 -0.58,5.33 -0.19,7.78 1.19,1.23 1.73,4.58 3.56,3.47 2.87,-0.09 4.72,3.15 6.02,5.29 0.45,2.46 3.64,2.83 4.61,0.44 0.84,-1.91 -0.18,-4.52 -1.35,-5.64 -0.49,-3.07 3.89,-2.29 5.74,-3.3 2.12,-0.86 2.95,1.54 1.33,2.77 -0.13,1.19 0.36,6.2 2.44,7.44 3.73,1.71 7.96,2.48 12.06,2.41 0.3,2.37 -0.95,4.21 -3.22,5.14 -2.12,0.41 -4.13,4.05 -2.97,5.83 3.16,0.98 4.62,-3.02 6.97,-4.37 2.62,-1.23 -1.27,-2.95 1.23,-4.7 1.83,-3.04 5.68,-3.23 8.67,-4.31 2.07,1.28 4.67,2.3 1.65,-0.28 -2.77,-0.69 1.28,-2 0.17,-4.09 -1.83,-2.61 0.09,-5.95 0,-8.84 0.67,-3.72 4.45,-6.62 2.87,-10.6 0.27,-3.23 -3.17,-2.82 -4.5,-5.35 -1.88,-1.31 -2.94,-3.09 -2.59,-5.43 1.25,-0.49 -0.57,-3.68 -0.1,-5.19 -0.37,-2.39 0.26,-5.26 -1.15,-7.31 2.19,-0.29 2.3,-4.03 0.75,-4.91 -3.55,0.11 -2.06,-3.18 -1.51,-5.43 1.26,-3.72 6.02,-2.87 8.99,-4.29 3.44,-0.94 6.85,-2.48 10.38,-0.98 2.53,1.03 6.93,-0.17 7.36,3.51 0.22,3.77 3.72,2.22 6.1,1.81 3.18,-0.12 0.4,-3.63 0.68,-5.44 -0.84,-3.13 -0.37,-6.51 1.38,-9.24 2.02,0.57 4.63,1.89 6.47,0.94 0.86,-2.28 1.78,-5.61 4.88,-5.28 3,-1.1 4.77,-5.15 2.22,-7.63 2.46,-1.43 0.46,-5.9 4.2,-5.65 2.35,-1.65 4.24,2.19 6.72,0.64 3.67,-2.12 7.61,-4.88 9.17,-8.99 0.87,-4.15 -0.43,-8.59 0.34,-12.69 1.59,-1.67 2.87,-3.11 0.88,-5.25 -1.95,-0.3 -4.67,-0.51 -5.91,1.03 2.68,1.72 0.06,4.83 -2.4,3.41 -3.4,0.47 -3.73,-2.19 -3.1,-4.85 1.64,-2.54 4.97,-5.54 3.53,-8.77 -2.61,-1.88 3.02,-1.21 0.62,-3.76 -0.39,-2.4 1.7,-5.24 4.25,-4.19 2.32,-0.16 2.52,-3.78 3.13,-5.59 -0.42,-3.72 -1.44,-7.39 -2.41,-10.94 0.58,-3.37 4.7,-2.07 6.91,-1.42 1.33,1.43 3.54,1.27 4.93,0.14 1.65,-2.01 -0.8,-4 -2.88,-4.28 -0.73,-2.4 -0.28,-5.7 -2.15,-8.05 -1.81,-2.17 3.2,-3.84 4.13,-1.92 0.85,2.09 2.04,3.15 0.8,0.19 -0.79,-1.77 1.55,-2.57 1.81,-3.75 -2.16,-0.34 -3.1,-3.03 -5.47,-3.13 -2.41,-1.32 -5.66,-1.92 -5.69,-5.28 -2.73,-1.26 -6.43,-1.62 -7.14,-5.14 -0.93,-2.28 -2.35,-5.29 -0.96,-7.39 -0.41,-3.77 -4.2,-2.41 -6.91,-2.04 -2.44,0.91 -4.65,3.07 -6.27,5.16 0.26,3.75 3.81,-0.17 4,2.53 0.6,2.43 -1.31,3.7 -3.35,4.44 -2.57,-2.31 -6.46,-3.25 -9.7,-4.62 -2.11,-0.64 -2.73,-3.33 -1.64,-5.16 0.52,-2.33 2.7,-3.11 4.88,-2.75 1.13,-2.01 -0.13,-5.09 -0.97,-7.03 -0.84,-1.85 -3.71,-4.21 -0.9,-5.87 1.12,-2.04 3.33,-1.71 4.5,-3.66 2.57,-0.35 -1.93,-2.01 -2.09,-3.38 -2.42,-2.04 -5.4,-1.51 -8.28,-1.84 -2.56,-0.15 0.13,-3.78 -1.82,-2.9 -0.65,0.13 -1.3,0.26 -1.96,0.4z m48.47,53.75c-0.2,0.03 0.16,0.35 0,0z\",\"name\":\"Hessen\"},\"hh\":{\"path\":\"m273.31,139.16c-1.5,1.09 -0.93,4.3 -3.67,5.06 -1.61,1.47 -3.71,3.26 -5.89,1.85 -2.33,-0.78 -1.81,2.21 -3.43,3.24 -1.3,1.52 -3.26,5.5 -5.37,2.78 -1.64,-2.73 -2.78,-2.89 -3.11,0.48 -1.95,3.52 3.88,1.56 2.16,5.63 -0.89,2.25 0.93,3.48 1.47,5.56 1.11,1.96 3.5,5.01 5.03,1.63 1.82,-0.66 3.1,2.78 4.87,3.63 1.74,1.19 3.59,-1.92 4.1,-3.57 1.25,-2.32 3.61,0.86 4.66,2.15 1.9,2.2 3.93,4.76 7.21,3.97 1.13,-0.62 1.01,-2.97 2.91,-3.07 2.93,-1.45 -2.65,-3.59 -2.97,-5.78 -1.42,-2.02 -5.31,-2.65 -5.35,-5.94 -0.83,-2.64 0.75,-4.88 3,-6.12 2.02,-2.17 0.93,-4.31 -0.94,-5.97 0.01,-2.33 -0.49,-4.73 0.53,-6.88 -1.59,-1.66 -3.52,1.07 -5.22,1.34z\",\"name\":\"Hamburg\"},\"hb\":{\"path\":\"m177.13,149.91c-1.02,1.81 2,3.93 2.44,6 0.78,1.49 -1.36,2.66 0.47,3.7 0.36,2.05 1.77,2.73 3.27,0.5 2.31,-1.97 -1.15,-5.18 0.62,-7.7 1.79,-3.68 -3.69,-1.91 -5.73,-2.54 -0.36,-0.05 -0.71,0.02 -1.07,0.05z m-2.34,39.47c1.3,3.24 5.12,3.63 7.78,4.94 1.52,2.61 1.31,5.93 3.86,7.69 2.1,1.22 1.38,3.71 2.04,5.46 1.64,0.31 3.99,-0.68 5.77,0.73 2.5,0.16 5.45,3.63 7.38,0.87 2.63,-1.56 0.74,-5.04 0.98,-7.51 -2.78,-1.97 1.76,-2.01 0.87,-3.11 -1.26,-2.73 -3.93,0.26 -6.25,-0.86 -4.35,-0.36 -7.69,-4.63 -12.29,-4.36 -3.91,0.3 -6.92,-2.67 -10.15,-3.86z\",\"name\":\"Bremen\"},\"bb\":{\"path\":\"m499.25,149.81c-0.84,1.88 -0.81,4.34 1.28,5.34 -1.74,2.06 -3.79,3.29 -6.37,3.46 -3.18,2.74 -6.61,5.55 -9.05,8.91 -1.36,2.25 -1.54,4.68 -0.87,7.16 -2.28,3.16 -4.83,6.45 -8.06,8.63 -2.41,-0.12 -1.19,-4.5 -3.97,-3.53 -3,-0.61 -5.44,2.28 -5,5.15 -0.4,2.7 -4.01,1.19 -3.97,-1.02 -0.57,-1.97 -3.52,0.03 -4.56,0.75 -2.74,2.49 -4.73,6.13 -7.88,8 -1.99,-0.23 -3.86,-2.04 -1.25,-3.16 1.45,-1.47 -4.76,-0.14 -6.18,-0.46 -2.13,-0.19 -5.04,3.22 -6.6,0.49 -2.73,-2.51 -5.01,-6.52 -9.27,-5.91 -2.13,0.04 -5.13,-1.3 -6.45,0.69 -2.87,1.21 -4.79,-0.3 -6.25,-2.72 -1.52,-3.98 -6.92,-3.25 -9.48,-6.32 -1.8,-2.15 -4.65,0.11 -6.93,0.1 -2.38,1.26 -5.39,-1.14 -6.32,2.55 0.99,3.09 -2.96,4.01 -4.77,5.61 -2.15,1.15 -6.11,1.77 -7.27,2.46 2,2.09 -1.36,2.73 -2.94,2.85 -3.43,2.16 -3.88,-1.29 -6.73,-1.81 -3.03,-0.86 -4.57,2.1 -6.63,3.69 0.64,2.72 1.23,7.08 -1.72,8.53 -1.68,-0.03 -3.77,-0.05 -4.75,-1.47 -3.21,-0.91 -4.58,3.15 -7.53,2.47 -2.88,-1 -5.03,0.48 -2.09,2.67 1.36,1.69 3.08,4 5.08,1.55 1.94,-1.5 5.34,-2.28 6.7,0.42 1.5,2.04 4.32,1.65 6.53,2.39 1.23,-1.43 4.73,-0.25 2.95,1.62 -1.67,1.72 2.21,2.59 2.91,3.81 1.43,1.12 2.93,-2.01 4.58,-0.33 1.76,1.64 5.48,1.89 6.03,4.47 0.12,1.23 -2.72,2.23 -0.94,3.16 4.27,1.68 8.68,4.08 13.38,2.66 2.5,1.2 6.82,-4.08 4.61,0.18 -0.35,3.68 2.96,0.6 4.61,0.47 3.29,0.55 2.92,4.31 3.72,6.78 0.37,2.84 -3.59,3.22 -2.84,6.46 -1.66,3.81 3.69,5.99 2.3,9.81 0.77,2.86 -2.32,3.27 -3.45,4.66 -0.54,2.65 -2.13,5.71 -1.65,8.26 0.83,2.24 4.39,3.7 4.36,0.28 2.12,1.42 6.84,0.74 6.61,4.02 1.02,3.09 -2.67,5.39 -1.23,8.53 0.24,2.83 1.88,6.06 -0.69,8.26 -2.05,3.4 -2.35,7.41 -1.88,11.28 -2.17,2.79 -1.48,5.22 1.03,7.44 3.11,5.22 7.1,10.36 13.17,12.16 3.29,1.01 7.58,3.94 10.7,1.22 -0.29,-3.23 3.4,-2.12 4.94,-0.75 2.81,1.03 3.99,2.78 6.11,4.39 2.08,1.33 4.66,2.82 7.04,1.98 3.14,1.39 6,3.2 8.16,5.88 3.11,1.39 3.63,-2.03 5.78,-1.38 1.85,0.64 2.36,3.88 -0.16,3.41 1.53,4.44 1.98,9.42 4.53,13.28 -0.28,4.36 -5.19,5.81 -8.13,8.16 1.38,4.17 2.89,2.17 5.54,3.45 2.71,1.73 3.05,5.69 4.55,8.42 0.92,3.28 0.16,6.97 -0.56,10.28 1.12,1.84 2.33,3.34 4.61,2.31 0.97,-1.14 2.38,-3.45 4.49,-4.31 2.22,-1.43 4.58,-3.03 6.29,-0.12 4.07,3.53 9.06,7.27 14.8,6.16 2.09,-1.58 2.79,0.71 5.58,0.52 2.7,-0.23 5.1,-3 8.17,-1.96 3.29,-1.1 7.81,-0.26 9.47,-3.95 2.24,-4.34 2.1,-9.97 5.65,-13.77 1.52,-0.92 3.97,-0 5.84,-0.31 2.67,-0.5 5.34,2.24 7.62,0.72 1.65,-1.85 4.86,-1.52 6.32,-2.54 1.7,-2.16 5.35,-2.05 7.75,-3.38 2.31,-0.33 2.58,2.04 4.09,2.56 2.19,0.22 4.28,-0.47 4.14,-3.06 1.18,-2.26 3.58,-0.39 3.55,-4.22 -0.1,-2.81 -0.47,-5.99 -3.36,-7.26 -3.75,-2.16 -4.56,-6.65 -6.42,-10.21 -2.9,-0.63 -3.35,-5.09 -0.55,-6.35 3.76,-2.93 5.89,-7.61 5.36,-12.4 -0.5,-2.47 -0,-3.76 1.5,-6 1.18,-2.51 -0.13,-5.99 -3.13,-5.94 -2.3,-1.74 -2.72,-5.61 -0.53,-7.63 -0.28,-2.81 1.52,-6.55 -1.09,-8.56 -2.6,-1.24 -6.3,-0.29 -7.81,-3.19 -1.11,-3.05 -1.39,-6.47 -2.42,-9.42 -1.68,-2.31 -0.63,-6.4 2.17,-7.48 1.98,-2.33 3.3,-5.1 2.57,-8.22 0.38,-2.83 -0.31,-5.28 -2.51,-7.19 -3.54,-2.79 -8.55,-3.73 -11.34,-7.59 -2.56,-5.3 -8.11,-8.18 -12.88,-11.28 -2.02,-1.42 -4.87,-0.97 -6.69,-2.38 -2.03,-2.63 3.01,-4.81 1.15,-7.48 -0.64,-2.66 -2.69,-6.39 0.67,-8.11 3.25,-1.9 6.37,-3.89 8.77,-6.91 3.06,-2.56 2.89,-6.96 3.39,-10.59 -1.83,-1.72 -1.71,-4.98 -0.47,-6.84 1.2,-1.67 4.41,-4.79 3.03,-6.69 -2.15,0.19 -2.35,-3.69 -2.22,-5.41 -2.44,1.01 -5.3,1.53 -5.5,4.63 -1.15,2.4 -3.02,3.91 -5.78,3.72 -2.22,-0.47 -6.15,0.62 -7.41,-0.9 0.47,-4.6 5.82,-6.58 7.23,-10.78 0.81,-2.01 1.54,-5.13 -0.2,-6.73 -3.16,-0.57 -5.69,-0.28 -7.87,1.03 -3.28,0.28 -6.64,-0.73 -9.75,0.5 -4.23,-1.06 -2.75,-6.98 -5.95,-9.24 -1.05,-1.15 -2.07,-2.54 -3.15,-3.54z M484.13,240.25c2.62,1.78 3.22,5.59 5.07,8.15 1.73,3.05 5.13,4.94 5.9,8.6 -0.13,3.15 2.96,3.88 5.31,4.97 3.02,1.16 1.5,3.96 0.62,6.15 -2.11,1.18 -0.3,2.41 -1.81,3.94 -3.37,1.44 -6.8,-1.31 -10.22,-1.72 -2.61,0.29 -4.02,-2.66 -5.44,-2.59 -3.39,0.13 0.93,5.86 -3.25,4.2 -2.15,-1.56 -3.93,-2.85 -6.03,-2.56 -2.2,-2.21 -6.14,-1.55 -8.26,0.46 3.07,1.05 -3.31,1.77 -4.27,0.08 -2.48,-1.03 -0.87,-2.57 0.43,-3.73 -0.55,-1.26 -1.2,-3.36 0.31,-4.63 3.03,-2.14 1.73,-3.7 -0.71,-3.56 0.04,-2.5 -0.02,-5.34 0.62,-7.66 1.31,-1.47 2.88,-1.58 4.41,-0.5 1.08,0.35 -1.33,-2.46 0.8,-3.32 1.36,-1.61 4.71,-0.61 6.85,-0.8 2.24,1.02 3.85,-0.76 4.63,-2.66 1.77,2.37 2.44,0.08 3.29,-1.66 0.36,-0.52 1.13,-1.47 1.74,-1.16z\",\"name\":\"Brandenburg\"},\"be\":{\"path\":\"m483.38,241.69c-1,1.58 -1.61,5.27 -4.03,2.88 -0.91,2.64 -3.81,2.59 -6.06,2.05 -1.91,-0.31 -7.28,0.09 -4.84,2.79 1.38,2.14 -2.25,1.68 -3.34,0.78 -3.18,-0.15 -1.8,4.36 -2.36,6.45 -0.09,0.87 5.17,1.04 2.51,3.18 -1.16,1.75 -4.04,3.69 -1.89,5.83 0.53,1.82 -3.82,2.76 -0.54,3.7 2.29,1.61 3.52,-2 6.07,-2.2 2.07,-0.34 5.08,-0.28 6.25,1.69 2.29,-3.28 5.18,4.71 6.09,1.16 -1.15,-2.62 1.9,-3.14 3.66,-3.85 0.63,3.56 5.17,2.88 7.8,4.18 1.96,0.26 4.94,2.32 6.26,0.28 -2.5,-1.19 2.5,-2.95 2,-5.26 1.05,-2.66 -3.24,-2.9 -4.77,-4.37 -2.69,-0.38 -1.4,-4.38 -3.15,-6.05 -1.61,-3.03 -4.93,-4.88 -5.94,-8.38 -1.14,-0.99 -1.96,-6.07 -3.71,-4.88z\",\"name\":\"Berlin\"},\"by\":{\"path\":\"m273.66,464.44c-1.31,1.91 -3.76,2.78 -3.5,5.34 -1.83,4.59 -6.12,7.95 -10.5,9.94 -2.67,1.02 -4.62,-2.49 -7.15,-0.61 -1.54,0.74 -0.64,3.49 -2.13,4.58 2.4,3.04 -0.04,7.53 -3.44,8.47 -3.38,-0.45 -3.01,4.07 -4.66,5.5 -2.16,0.47 -4.23,-0.33 -6.28,-0.91 -2.54,3.91 -0.46,8.53 0,12.63 -0.53,2.87 -4.66,1.74 -6.9,2.55 -3.16,0.27 -1.64,-5.68 -4.98,-5.22 -4.19,-0.72 -8.41,-2.46 -12.49,-0.42 -2.97,1.16 -6.84,1.23 -9.32,2.99 -0.59,1.48 -2.41,4.44 -0.69,5.28 3.02,-0.37 2.55,4.03 2.28,5.63 -2.37,0.86 0.17,4.18 -0.45,6.12 0.28,2.66 -0.27,5.78 1.89,7.78 -3.88,-0.85 0.14,3.73 1.52,4.58 0.84,1.94 3.96,0.92 3.59,3.64 1.27,2.88 0.6,5.62 -0.78,8.31 -2.26,2.93 -2.47,7.6 -2.42,11.23 1.24,2.27 4.6,0.89 6.75,1.12 2.16,0.04 4.75,-2.13 4.73,-4.03 -0.34,-2.04 2.18,-5.23 4.72,-3.63 1.87,0.74 5.34,1.32 4.23,-1.45 1.6,-1.24 -0.63,-7.5 -0.96,-4.79 0.79,2.49 -3.31,2.3 -3.52,0.13 -0.83,-1.56 -3.4,-4.82 -1.19,-6.09 3.07,-0.15 6.37,-1.05 9.34,-0.19 0.41,-2.46 4.94,-2.22 3.88,0.41 0.59,1.49 3.45,3.68 4.43,1.04 1.16,-1.1 4.96,-5.66 4.94,-1.88 -0.59,2.44 0.18,5.72 -1.59,7.45 0.33,2.92 3.79,0.57 5.16,-0.39 2.48,-0.32 5.61,-3.48 7.29,-0.3 2.99,3.39 2.07,8.94 5.01,12.52 2.18,0.31 2.43,3.58 2.41,5.6 0.45,1.81 -0.72,3.89 -0.34,5.16 2.77,0.82 6.24,0.65 7.69,-2.25 -0.15,-1.12 -1.91,-2.61 0.74,-3.68 2.83,-1.31 3.76,2.79 4.2,4.84 -1.95,1.56 1.87,3.4 1.31,5.57 0.26,2.1 4.02,5.65 0.6,6.68 -2.91,-0.9 -2.81,3.3 -1.87,5.04 0.96,2.51 3.11,4.68 1.16,7.27 0.44,2.52 -1.72,6.37 1.65,7.44 1.89,1.55 4.82,1.6 5.41,4.43 1.71,2.58 1.5,5.88 2.31,8.79 -2.03,1.94 3.23,2.14 4.31,3.59 2.13,2.06 5.86,2.95 6.29,6.28 3.84,2.87 1.91,8.3 2.08,12.46 0.25,2.64 -0.94,5.5 -2.07,7.44 -0.04,3.1 4.34,2.42 3.61,6.41 2.49,1.05 0.06,3.97 -1.86,4.33 -1.61,1.16 -4.23,0.12 -2.18,-1.56 2.29,-3.25 -3.46,-0.68 -4.81,-0.69 -2.23,0.84 -5.79,-3.18 -5.97,0.9 -0.14,3 3.91,4.63 3.42,7.93 0.53,2.67 0.99,5.81 0.27,8.32 -1.49,1.89 -3.93,-0.58 -5.06,1.19 0.32,2.29 -3.52,3.66 -4.94,5.41 -3.13,1.93 -4.28,-3.47 -7.13,-0.01 -2.35,0.12 -0.74,3.36 -2.58,4.82 -1.74,2.44 -2.43,5.75 -0.16,8.06 1.31,2.7 4.08,4.51 3.75,7.78 0.56,4.38 1.13,8.84 2.71,12.9 2.91,1.82 1.6,5.52 2,8.41 0.45,2.66 -1.86,4.17 -1.66,6.72 0.19,1.55 -3.47,0.81 -1.84,3.13 2.61,1.07 0.38,3.66 0.87,5.81 0.2,2.47 -0.14,5.78 2.07,7.38 0.5,2.56 -3.74,2.92 -1.81,6.18 1.02,3.01 3.86,6.55 1.16,9.46 -1.18,1.16 -3.19,0.63 -3.38,2.95 -1.52,3.81 -0.35,-4.27 -2.92,-3.81 -1.88,-0.93 -3.51,0.34 -4.08,2.09 -3.48,0.28 -7.46,-0.44 -10.66,0.7 -2.62,1.93 -4.17,6.22 -7.96,5.49 -1.72,0.26 -2.84,-2.34 -4.53,-0.51 -3.88,1.61 -1.7,3.37 1.37,4.04 3.22,2.32 4.79,-0.35 6.38,-2.97 2.19,-2.61 6.67,0.35 5.03,3.47 -1.46,1.59 3.12,2.56 4.5,2.46 2.2,0.75 5.22,-2.54 5.71,-2.37 -1.26,2.65 0.2,5.16 1.79,7.23 3.74,-0.93 5.96,3.27 7.63,5.97 -1.64,1.92 -2.48,3.42 -1,5.94 0.03,1.72 5.17,0.51 4.35,-1.56 0.81,-1.86 3.6,-1.1 5.09,-0.53 2.05,2.24 -1.68,3.98 -1.81,6.26 -0.21,1.48 -3.48,5.59 -1.04,5.45 5.9,-0.28 10.64,-4.27 13.65,-9.1 1.68,-2.49 4.2,-4.8 5.23,-7.51 -0.27,-1.73 0.37,-4.61 -1.96,-4.47 -1.78,-2.98 -0.76,-6.77 -1.03,-10.06 0.59,-1.59 4.6,-2.06 3.97,0.09 -1.67,2.23 -0.39,3.45 2.34,3.77 2.31,0.63 4.34,0.47 4.81,-2.09 1.65,-2.51 5.13,-0.08 7.59,-0.22 0.5,2.03 3.14,2.52 5.19,3.38 2.99,1.48 5.86,-2.19 8.72,-1.09 3.48,2.5 -1.05,3.09 -0.97,5.59 2.55,0.29 4.83,1.11 6.25,3.38 2.96,1.58 0.77,3.77 1.16,5.09 4.01,0.78 8.16,-0.05 11.5,-2.41 2.24,-1.08 5.28,-2.46 7.66,-1.16 -0.63,2.06 -2.84,4.65 1.39,2.92 0.99,-2.2 2.51,-4.2 4.63,-5.64 2.78,-1.69 3.97,-4.98 6.66,-6.66 2.2,2.25 6,0.82 8.75,0.25 1.72,-1.5 -0.11,-4.24 1.75,-6 1.27,-3.31 5.21,-1.69 7.87,-2.01 3.14,-0.06 6.26,-0.02 9.34,0.6 1.3,-3.59 5.97,-3.64 9.18,-3.87 2.61,1.43 5.36,-1.54 7.57,0.5 2.56,0.03 5.94,1.12 8.03,-0.19 -0.56,-3.08 -2.75,-5.66 -1.81,-8.97 1.68,-1.6 3.23,-4.06 5.5,-4.97 2.05,1.73 -0.97,3.82 0.9,5.81 0.74,1.55 6.18,-3.23 5.07,-0.41 2.78,1.55 7.13,-0.47 8.4,3.24 1.5,2.9 4.05,3.71 6.55,1.34 2.39,-0.55 1.97,-4.34 4.92,-3.93 3.45,-1.43 7.22,-0.35 10.38,1.04 0.63,2.57 4.26,5.4 1.53,7.59 -1.91,3.64 3.48,5.29 5.61,7.15 2.86,2.07 5.93,3.86 9.26,5.04 1.6,-1.29 3.65,-3.83 2,-5.66 -1.98,-1.39 0.16,-4.42 -0.13,-6.41 0.81,-2.05 3.05,-3.55 3.5,-5.53 -1.37,-2.88 -2.02,-7.29 -5.72,-7.94 -0.69,2.59 -4.42,1.51 -6.31,1.34 -1.86,-0.73 -2.16,-2.62 -0.73,-4.04 1.53,-3.69 4.03,-7.15 5.39,-10.77 -2.14,-3.41 -3.7,-7.7 -6.59,-10.34 -2.88,0.4 -3.64,-2.11 -3.9,-4.41 -1.24,-4.49 -8.32,-5.42 -8.04,-10.73 0.04,-2.8 4.04,-3.87 5.63,-5.89 1.81,-1.22 1.17,-3.89 2.78,-4.97 2.57,-0.91 6.07,0.24 7.47,-2.89 1.29,-1.84 2.29,-3.74 4.7,-4.4 2.08,-2 5.15,-0.22 7.17,-2.39 2.7,-1.73 6.58,0.63 8.88,-2.3 3.06,-1.95 5.85,-4.79 7.85,-7.65 0.43,-2.52 2.26,-5.13 0.38,-7.38 0.45,-3.1 3.3,-6.59 0.44,-9.38 -0.61,-1.41 4.07,-1.2 4.41,-3.5 -0.1,-4.04 4.08,-0.04 6.17,0.11 3.24,1.6 5.97,4.3 9.52,5.26 3.15,-4.15 7.21,-9.07 5.25,-14.64 0.5,-2.8 -3.41,-5.03 -1.06,-7.39 1.18,-2.53 1.51,-5.28 -0.56,-7.48 -1.75,-2.45 -3.35,-5.1 -5.19,-7.42 -2,1.56 -5.42,0.69 -5.99,-1.97 -0.86,-2.58 -2.84,-4.62 -4.76,-6.5 -2.32,-0.51 -5.25,-0.27 -4.06,2.66 -1.49,2 -4.02,-1.61 -5.78,-2.26 -3.51,-1.84 -1.34,-7.26 -4.67,-9.54 -1.77,-2.1 -3.92,-4.14 -6.4,-5.23 -2.11,1.09 -4.33,0.73 -6.1,-0.79 -2.35,-0.65 -1.29,-3.34 -2.28,-4.52 -5.62,-4.34 -8.22,-11.7 -13.85,-16.05 -0.96,-0.66 -5.12,-1.7 -4.56,-0.67 1,2.66 -3.26,0.86 -4.59,0.92 -2.67,0.16 -4.59,-1.69 -5.1,-4.2 0.33,-2.99 -3.95,-3.91 -5.58,-5.98 -1.3,-1.16 -4.06,-3.42 -2.45,-4.96 0.01,-2.41 0.31,-4 -2.29,-4.05 -2.07,-0.53 -1.46,-1.98 -2.8,-3.5 -2.08,-3.55 -3.13,-7.39 -3.48,-11.47 -1,-2.47 -5.61,-0.9 -6.56,-3.96 -1.46,-1.68 -3.4,-4.99 -0.08,-5.91 3.24,-0.92 2.39,-4.05 3.21,-6.53 0.88,-3.28 4.17,-5.56 3.4,-9.15 -1.69,-2.78 -3.02,-7.24 -7.16,-6.34 -2.89,-1.46 -5.43,-3.31 -7.5,-5.81 -4.37,0.47 -3.42,-1.95 -5.22,-4.41 -1.08,-0.95 -3.08,-0.2 -3.19,-2.3 -0.69,-1.94 -0.29,-3.97 0.91,-5.48 -1.13,-3.44 -4.24,-5.4 -7.25,-6.96 -2.59,-1.3 0.21,-3.74 1.9,-4.17 -1.15,-4.86 -6.38,-5.68 -10.5,-6.63 -1.66,-1.44 1.51,-4.7 -1.45,-5.85 -1.47,-2.96 -3.98,-0.6 -6.15,-0.03 -4.99,1.83 -10.54,1.94 -15.74,2.63 -0.77,-0.67 -2.77,-2.61 -3.03,-0.5 -0.96,2.08 -4.29,1.95 -5.15,-0.33 -1.46,-1.7 -1.05,-3.98 -3.62,-3.71 -2.87,-0.72 -2.28,-4.47 -1.51,-6.47 2.3,-1.83 -2.65,-2.89 -4.3,-2.43 -1.7,1.3 -2.92,3.72 -5.37,4.41 -1.61,-1.19 -1.85,2.9 -0.04,2.88 0.66,3.05 1.58,6.38 1.39,9.48 -1.36,2.21 -0.38,7.05 -3.72,7.01 -1.95,0.12 -2.86,4.45 -5,1.12 -2.19,-1.15 -2.98,-4.4 -0.24,-5.3 -0.32,-1.92 -3.58,-5.33 -4.44,-2.09 -2.92,1.68 -7.59,1.16 -8.96,-2.28 -0.97,-2.98 -4.83,-0.87 -7.1,-1.48 -2.57,0.83 -5.91,1.76 -7.83,3.43 -0.82,2.98 1.43,4.47 3.69,5.77 1.52,2.24 6.27,1.22 5.55,4.87 -1.22,3.47 -5.4,0.77 -7.88,0.59 -0.91,0.73 1.13,4.84 -1.63,4.69 -2.37,-0.99 -5.13,-1.74 -7.34,-2.66 -1.81,-3.33 -1.13,-7.07 -0.75,-10.66 -3.86,-0.79 -8.92,-2.08 -9.69,-6.56 -1.65,1.27 -4.99,0.71 -4.64,-1.87 -0.45,-2.76 -1.64,-5.72 -3.61,-7.69 -2.74,-0.99 -5.53,-1.93 -6.83,-4.79 -1.25,-3.09 -5.32,-0.4 -7.74,-0.8z m46.75,26.38c-0.1,0.03 0.04,0.06 0,0z\",\"name\":\"Bayern\"},\"bw\":{\"path\":\"m233,542.31c-1,3.03 -3.8,0.55 -6.25,1.41 -1.85,0.3 -6.11,-0.67 -4.1,2.56 0.5,1.4 3.45,5.79 2.97,1.91 0.74,-2.88 3.54,0.29 3.5,2.12 -0.05,2.12 0.13,4.28 -0.67,5.91 -2.21,2.88 -6.93,-2.7 -8.36,1.34 0.26,1.89 -0.96,3.78 -2.66,5.38 -2.87,1.47 -6.48,1.36 -9.56,0.91 -0.14,1.71 -1.09,2.75 0.88,3.56 2.16,2.43 -1.84,4.61 -2.82,1.5 -2.24,-0.41 -4.9,0.87 -7.01,1.83 -1.86,1.31 -3.21,3.14 -1.07,4.79 -2.58,2.03 -4.76,4.93 -7.53,6.53 -2.28,0.77 -4.85,-1.67 -3.07,-3.7 0.44,-3.45 3.31,-3.76 5.49,-5.64 2.15,-2.77 -2.95,-1.33 -4.33,-2.33 -3.36,-0.68 -8.66,-1.27 -8.78,-5.66 -0.37,-2.27 -2.39,-6.18 0.16,-6.35 -1.56,0.22 -6.19,0.51 -5.66,2.03 1.02,1.01 1.63,3.91 1.34,5.81 -0.91,2.56 -4.61,4.01 -6.17,1.22 -1.23,-2.27 -2.8,-5.47 -5.58,-5.87 -1.35,0.5 -2.27,2.96 -1.13,4.34 0.64,2.82 1.72,5.99 1.41,8.75 -1.19,1.47 2.13,0.8 2.94,1.09 2.56,1.28 -0.68,4.01 0.44,6.03 0.58,2.78 -1.68,4.86 -3.44,6.5 -0.2,1.61 2.95,0.95 2.5,3.03 -0.5,1.7 -2.89,2.29 -3.8,3.97 -1.51,1 -4.09,2.21 -3,4.19 -0,4.19 -1.63,8.4 -2.57,12.44 -1.88,2.38 -4.07,4.74 -4.06,8 -0.94,3.32 -4.33,5.15 -7.25,6.25 -3.09,4.3 -5.58,9.02 -6.75,14.19 -2.02,2.94 -5.4,5.15 -8.91,5.69 -0.21,2.82 -1.4,5.14 -3.56,6.99 -1.36,2.17 -3.49,3.53 -5.66,4.61 -1.15,2.67 -3.64,5.13 -2.5,8.22 0.36,2.98 -0.28,5.69 -1.97,8.15 -1.95,4.34 -4.99,8.87 -3.01,13.76 0.98,2.33 -1.6,3.46 -3.29,4.06 -1.58,3.35 -1.03,7.85 -3.97,10.71 -3.45,3.81 -5.74,8.63 -5.57,13.85 -1.32,3.83 3.9,5.48 3.32,9.25 -1.3,3.08 -3.94,5.46 -4.57,8.93 -0.87,1.91 1.04,3.96 -0.54,5.81 -1.06,2.51 -2.87,5.19 -1.04,7.86 1.18,2.15 -0.92,4.15 -2.35,5.35 -0.31,3.89 3.1,6.22 5,9.16 2.34,1.03 6.63,0.35 6.5,3.84 -1.16,1.4 -4.38,2.08 -0.94,3.62 2.67,0.19 5.38,-1.24 7.85,-2.15 1.44,-1.71 2.81,-3.83 5.44,-3.09 2.67,-0.79 2.95,2.96 5.54,2.9 3.15,1.3 6.81,1.64 9.99,0.41 0.13,-3.3 4.53,-3.63 6.59,-5.48 2.38,-1.41 5.39,0.37 7.78,0.98 0.79,1.29 -0,3.08 2.19,3.78 3.61,0.25 7.37,1.32 10.72,-0.47 -3.18,-2.2 -0.41,-3.55 1.74,-5.09 1.44,-1.37 5.34,0.59 4.6,2.72 0.03,1.73 2.81,-2.43 2.91,-3.66 0.99,-2.17 -2.08,-3.31 -3.78,-2.38 -2.21,0.79 -3.16,2.58 -5.97,3.13 -1.88,-0.81 -4.32,-2.21 -5.31,-4.16 0.59,-3.61 2.99,-6.72 5.06,-9.63 1.63,-2.24 5.73,-0.38 6.44,-3.38 2.06,-2.35 5.55,0.44 4.49,3.47 2.07,0.67 0.21,-4.19 4.06,-1.25 1.57,1.2 4.32,3.45 2.25,5.23 0.1,2.76 1.41,4.58 4.22,5.01 1.74,-2.24 3.46,-0.92 5.76,1.59 2.1,2.97 5.8,0.78 7.96,-0.93 3.82,-2.7 8.65,-0.24 12.27,1.62 3.55,2.04 4.43,-1.99 2.13,-4.27 -0.59,-2.2 -2.12,-3.67 -4.12,-4.07 -2.4,-1.85 -6.01,-3.5 -6.96,-6.5 0.3,-2.1 3.03,-1.62 3.78,-0.16 3.5,2.46 7.48,4.47 10.66,7.31 -0.21,3.96 4.69,5.62 7.5,7.39 1.67,0.53 3.72,-1.14 5.59,-0.11 2.75,0.87 6.81,1.33 7.03,4.97 0.46,3.2 4.49,4.9 6.69,2.27 1.24,-1.5 4.61,-2.56 5.4,-0.7 4.17,1.33 6.15,-3.91 8.97,-5.72 3.32,-0.45 7.13,0.12 10.19,-0.66 1,-2.57 4.28,-2.37 6.22,-1.28 0.84,2.31 0.58,2.71 2.56,1.13 2.97,-0.39 2.03,-4.58 0.76,-6.39 -1.17,-2.02 -2,-5.8 -0.79,-7.3 3.32,-0.17 0.06,-2.21 -0,-3.93 -0.63,-3.04 -0.86,-6.31 0,-9.32 -2.23,-0.74 -2.32,-4.76 0.44,-4.66 -0.41,-2.68 2.08,-4.21 1.66,-6.88 -0.15,-2.82 0.59,-6.09 -1.94,-7.94 -2.26,-5.15 -1.96,-11.11 -3.49,-16.32 -1.93,-2.69 -4.53,-5.55 -4.67,-9 0.46,-2.92 3.93,-5.48 2.72,-8.47 0.1,-0.35 4.87,-3.47 6.42,-2.05 2,3.2 4.93,-0.95 6.82,-2.36 0.33,-1.38 1,-2.91 3.14,-2.96 3.03,1.76 2.98,-2.24 2.69,-4.25 -0.32,-3.5 -1.14,-6.78 -3.64,-9.37 -0.98,-1.42 0.15,-4.75 1.23,-5.16 3.02,1.48 6.11,1.47 9.25,0.41 2.37,-0.94 3.55,1.55 1.82,3.19 0.08,1.06 5.19,-1.87 2.3,-2.88 -0.25,-2.1 -0.85,-4.44 -3.47,-3.91 -1,-3.13 0.42,-4.65 1.54,-7.33 0.09,-4.38 1.32,-9.19 -0.13,-13.38 -2.03,-1.38 -1.82,-4.46 -4.4,-5.39 -2.47,-2.1 -5.26,-3.59 -8.29,-4.72 -0.45,-2.63 0.5,-4.11 -0.61,-6.97 -0.35,-3.23 -2.39,-5.85 -5.43,-6.81 -1.8,-1.05 -4.02,-2.25 -3.05,-4.75 -0.53,-2.57 0.99,-5.27 0.62,-7.5 -1.67,-2.84 -3.08,-6.33 -1.5,-9.56 2.72,0.17 4.05,-1.19 2,-3.69 -1.12,-2.08 -1.1,-4.65 -2.84,-6.37 -0.05,-1.52 1.05,-2.79 -0.28,-4.24 -1.33,-3.13 -3.46,0.38 -1.36,0.89 -1.36,2.26 -3.18,4.9 -6.23,4.2 -1.84,0.68 -5.99,-0.78 -4,-3.06 0.32,-2.43 0.8,-5.95 -0.91,-7.66 -1.91,-0.49 -2.69,-3.58 -3.13,-5.51 -1.12,-3.07 -1.07,-6.84 -4.03,-8.84 -3.37,0.71 -6.2,2.77 -9.34,3.81 -2.15,-0.26 -3.2,-3.12 -1.25,-4.19 -0.15,-1.71 1.98,-8.34 -1.11,-4.8 -1.56,1.02 -3.09,4.67 -5.17,2.44 -1.38,-0.64 -3.13,-1.84 -2.32,-3.58 -0.34,-0.5 -0.91,-0.09 -1.41,-0.13z m-57.69,212.03c0.26,4.67 5.28,-0.76 0,0z\",\"name\":\"Baden-WÃ¼rttemberg\"}}});"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.russia.js",
    "content": "/** Add Russia Map Data Points */\njQuery.fn.vectorMap('addMap','russia_en',{\"width\":959,\"height\":593,\"pathes\":{\"da\":{\"path\":\"m34.939,403.74,2.6516,1.2627,3.6618,0.50507,1.7678-2.0203,2.1466,2.0203,2.3991-1.6415,0.25254-1.7678,1.6415-2.1466,3.0305,0.50508,3.7881-2.9042-0.50508-1.894-4.7982-0.50508,0.75762-3.1567-1.0102-0.63134,0.63135-2.2728-3.1567-2.7779,1.5152-0.50508,3.9143,0.88388,0-1.389-1.0102-1.2627,8.3338-0.25254,4.9245,5.4296,1.2627,1.894-0.37881,2.2728-5.3033-0.3788,0.50508,2.5254,1.5152,3.0304-1.0102,3.5355-2.3991,2.7779-1.2627,0.25254,4.5457,0.75761-5.5558,2.1466-0.50508,2.0203-0.75762,0.50508-3.0305,0.50507-0.25254,4.7982-1.2627,0.88388-1.1364,13.132-9.0914-0.12627-3.6618-2.2728-1.389-0.88388,0-11.617-3.283-5.9346,0.37881-2.9042,1.2627-0.37881z\",\"name\":\"Republic of Dagestan\"},\"sa\":{\"path\":\"M671.25,126.75l-1.44,1.06-1.25,1.63s1.44,0.87,2.16,0.87c0.71,0,2.69-1.97,2.69-1.97l-2.16-1.59zm18.47,12.09c-0.18-0.01-0.4,0.02-0.63,0.07-1.78,0.35-4.81,1.93-4.81,1.93s-1.41,1.1-2.12,1.1c-0.72,0-2.35-0.38-2.35-0.38-0.71,0-2.5,1.25-2.5,1.25l-1.4,1.78s-1.1-0.51-1.1,0.38-0.35,1.96,0.72,2.5c1.07,0.53,1.61,1.06,2.5,1.06s3.22-0.72,3.22-0.72l1.97-0.87,1.97,1.06s0.51-0.9,1.4-1.44c0.9-0.53,3.4-2.31,3.75-3.03,0.36-0.71,0.72-3.22,0.72-3.22s-0.11-1.36-1.34-1.47zm-19.81,7.1c-0.15,0.01-0.29,0.05-0.44,0.09-1.25,0.36-2.85,0.19-3.56,0.19-0.72,0-0.91,0.19-0.91,0.19s-0.88,1.58-1.59,1.93c-0.72,0.36-1.99,0.74-3.07,0.57-1.07-0.18-3.75-1.25-3.75-1.25s-1.93-0.02-1.93,1.59,3.03,3.41,3.03,3.41l1.06,1.4s-2.51,0.73-3.41,0.38c-0.89-0.36-2.65-2.16-2.65-2.16l-3.22-0.72s-2.88,0.2-2.88,1.1c0,0.89-0.68,2.67-0.68,3.56s-0.9,3.04,0.53,3.94c1.43,0.89,1.79,3.03,1.97,3.75,0.17,0.71,0.7,1.77,2.84,2.31,2.14,0.53,4.29,0.53,5,1.06,0.71,0.54,1.77,1.07,2.84,0.53,1.08-0.53,1.82-2.65,1.82-2.65l2.12-1.97s1.61-1.44,2.5-2.16c0.89-0.71,2.7-0.54,4.13-1.44,1.42-0.89,2.31-3.75,2.31-3.75v-5l-0.38-4.43s-0.68-0.58-1.68-0.47zm106.25,5.62c-0.45,0.09-0.75,4.1-0.75,4.1l-7.32,1.65-3.28,0.63-4.53-6.06-7.84-0.13-0.38,0.87-5.68,1.66-1.76,2.13-6.06,6.31v2.78l-2.15,1.91-3.29,5.03-4.93-2.38-3.41-0.37-1.75,2h-4.56l-3.41,1.78-1.75-1.53,4.28-2.91-2.28-1.62-3.03-0.13-8.84,4.03,1.9,5.44-0.87,4.78-2.66,2.91-1.65-2.13,3.03-7.47-1.75-0.37-2.66,4.03-3.03,2.03-1-0.75,1-3.16,2.28-0.74,2.91-2.66-7.1,1.75-9.22,5.31-6.68,0.25,3.65,3.66-3.65,3.4-0.5,3.03,0.37,1.16,3.91-1.78-1,4.03,4.81,2.91-0.91,2.9-2-1.37-3.68,1,1.28,3.41,2.4-0.26-1.03,2.66-3.9-0.5-4.28-1.66-3.53,0.26-2.41,3.15-0.63,4.06h-6.46l-1.76-1.53-2.4-2-0.5,4.41,0.87,0.87-0.12,1.41,1.65,0.87-0.9,2.54,1.66,6.18-3.29-1.4-1,1.15-9.87-5.31v-4.94l-2.25,0.13-1.78,2.41-2-3.41,3.65-0.63-0.5-2.9-4.43-1.66,0.75-0.87,0.12-2.53-5.28-4.04-5.31-2.53-1,3.66-7.35,0.65-2.37-1.65-4.19,2.15v2.13l4.19,4.69-10.94,5.31-10.28-1.16,0.44-4.4-12.07,0.19-3.96,3.78h-2.85l-1.09,1.09,2.66,2.87h-2.13l-2.91-2.06,1.19-2.09-0.87-1.38-1.54-1.78,0.07,2.28-1.5,1.07-3.85-1.32s-2.9,3.53-2.84,3.78c0.06,0.26,2.66,3.29,2.66,3.29l-1.41,3.34,1.59,2.09,0.19,2.78,7.38,5.82-0.32,5.47,2.53,1.9,1.63,2.53-2.53,2.72-4.41,3.03-0.69,2.63-4.81,2.78,0.25,6.12-2.25,1.1-2.97-1.28-5.65,4.75-4.44,0.09,0.06,1.97,5.38,6.59,1.78,20.1-6.35,1.97,4.19,3.4-1.78,4.19v1.25l7.16,8.84-4.57,6.69,0.97,1.6-2.4,1.87,0.09,2.25,5.63,0.34,0.71,0.72,9.1,0.19,3.31,3.31-0.53,1.6-3.31,0.34,0.19,3.94,4.03-1.06,5.06,6.59-0.53,5.53,3.84,5.19-1.97,3.4,0.53,2.13,7.69,6.53v4.37l-3.75,6.44,0.28,10.78,3.85,4.13,3.37-3.94,3.75,0.09,1.88-1.34,2.68-0.62,2.41-2.07,3.56,3.85,0.38,2.31,4-5.06,0.09-4.13,5.38-2.75-0.29-6.25,2.32-4.12,3.84-1.5,4.91,1.06,6.15,4.91,0.57,3.84,1.31,0.87,4.03-1.4,2.5-2.06,2.69,1.06,0.87,4.47,3.13,4.56,2.15,1.78v3.03l2.32,1.35,0.71,4.71,3.94,0.19,0.97,1.35,1.53,4.09,8.38-0.25,3.31-1.97,5.53,1.16,3.56,1.97,11-0.72,5.54,3.75,2.21,0.53,5.19-2.6h2.6l3.03,2.26,2.78-0.19,3.22-3.94,5.68-0.06,2.5-1.97h7.88l0.19-3.75,10.68-5.09,0.82-3.04-4.28-4.12,2.31-1.69,0.62-4.03-1.34-1.69-2.41,0.38-2.03-1.44,2.75-4.03-2.84-1.6,0.25-1.87,1.53-1.97-1.44-1.44-3.47-1.15-0.53-1.6,3.38-1.43-1.88-0.91-0.19-5.25-0.87-0.62-0.19-1.88,2.78-1.25-1.62-1.25v-2.94l5.47-1.97,3.12,0.16,0.25-1.78,6.53,0.09v-2.75l-1.25-1.53,1.16-1.25,3.47-0.62,3.31-2.22,1.34-6,5-0.44,0.1-2.06s-5.29-4.9-5.47-5.25c-0.18-0.36-0.88-3.94-0.88-3.94l-3.56-2.59v-5.97l2.94-7.16-1.69-9.19,0.78-3.12,13.5,0.72,0.25-5.28,5.19-1.16,3.47,1.87,0.81-2.31-2.41-3.69,1.69-0.62,0.19-2.75-7.16-8.5,0.1-4.37-3.13-1.5-0.09-4.04-1.78-1.15,1.09-2.13,3.81-0.47,1.35-1.78,4.28,0.38,0.09-2.44-3.37-1.5,0.15-3.31,5.47-0.53v-3.57l5.63,0.44,5.62-8.03,0.44-2.5-6.06-6.06-0.19-1.88,2.31-3.4-0.97-1.79-3.31,0.19-1.5-2.34,4.72-1.41-0.09-1.53-2.07-0.97-0.25-1.34,2.13-3.75,5.72-1.97-0.78-3.56,5.15,0.68-0.62-5.43,1.34,0.28,0.19-3.59-2.69-0.63-2.94-4.53-7.59-0.28-4.19-1.88,0.72-3.47h-3.12l-0.19-1.62,8.12-10.44,1.07-7.84s-9.81-5.72-10.25-5.63zm-135.1,8.56c-0.12,0.03-0.23,0.08-0.34,0.19-0.89,0.9-1.07,1.79-0.53,2.5,0.53,0.72,1.06,1.63,1.78,2.35,0.71,0.71,2.31,1.25,2.31,1.25s0.71-1.1,0.53-1.82c-0.18-0.71-1.97-2.84-1.97-2.84s-0.94-1.78-1.78-1.63zm28.94,7.35l-2.31,0.34s-1.07,0.91-1.25,1.63c-0.18,0.71-0.9,1.24,0,1.78,0.89,0.53,3.75,1.25,3.75,1.25s1.6-0.02,1.78,0.87c0.18,0.9,0.18,1.8,0,2.69s-0.53,1.78-0.53,1.78l0.72,0.72,1.93-0.53s0.74-0.72,1.82-0.72h2.65s1.44-0.53,1.97-1.25c0.54-0.71,1.97-1.25,1.97-1.25h2.69s1.41-0.52,0.87-1.59c-0.53-1.07-1.76-1.62-2.65-2.16-0.9-0.53-3.22-2.31-3.22-2.31h-2.5l-3.6,0.34-2.84,0.38-1.25-1.97zm-17,10.15c-0.12,0-0.22,0.01-0.31,0.04-0.72,0.17-1.44,1.4-1.44,1.4s0.37,1.78,2.16,1.78c1.78,0,2.3,0.55,2.65-0.34,0.36-0.89-0.87-2.31-0.87-2.31s-1.37-0.55-2.19-0.57z\",\"name\":\"Sakha Republic\"},\"so\":{\"path\":\"m45.583,387.43-2.2728,2.6516-4.1669-2.6516-2.0203,1.1364-0.37881,5.8084-1.1364,1.389-2.2728-0.12627-5.9346-2.6516-3.0305-3.283,0.12627-4.9245,4.672,0.75761,0.37881-0.88388,2.5254-0.12627,3.283,1.5152,4.0406-1.894s-0.12627-3.5355,0.75761-2.7779c0.88388,0.75762,1.389,1.2627,1.389,1.2627l0.25254,3.5355z\",\"name\":\"Republic of North Ossetia–Alania\"},\"kb\":{\"path\":\"m20.982,375.86c0.26786,0.35715,2.5893,4.7322,2.5893,4.7322l0.98214,3.9286,4.6429,1.1607,2.8571-1.0714,3.2143,1.5179,4.375-1.875,0.26786-3.125-5.9821-2.3214-1.875-5.0893-2.2321-1.1607-4.375,0.71429z\",\"name\":\"Kabardino-Balkar Republic\"},\"kc\":{\"path\":\"m13.482,361.39,2.2321,8.4821,5.0893,6.25,4.375-2.6786,5.3571-0.89286,0.08929-3.3928,3.75-1.0714-6.6964-7.2321-2.2321,2.4107-2.8571,0.26786-1.6071-4.5536,0.44643-2.1429z\",\"name\":\"Karachay–Cherkess Republic\"},\"st\":{\"path\":\"m33.929,367.73-3.4821,0.98215,0.17857,3.75,1.5179,1.25,1.7857,4.6428,6.5179,3.0357,1.3393,1.3393,0.08929,3.0357,3.8393,1.7857,1.6071,2.5893,3.2143,0.625,0.71429-1.4286-2.8571-3.125,1.5179-0.53572,3.5714,0.80357,0.17857-1.1607-0.98214-1.3393,7.7679-0.0893,1.6964-1.5179,0.26786-3.5714-5.2679-7.5-0.17857-9.4643-3.4821-6.0714-4.9107-0.98214-1.5179-2.7679-5.0893-5.7143-0.98214-0.625-1.5179,1.3393-2.7679-2.0536-1.4286,0.80357-0.80357,1.0714-0.08929,1.6071,0.35714,1.3393,0.35714,1.1607-0.71429,1.6071-0.98214,1.4286-1.9643,2.2322-1.875,1.0714-0.71428,0.98214-0.98214,2.3214z\",\"name\":\"Stavropol Krai\"},\"ks\":{\"path\":\"m21.607,356.48-0.08929,2.0536,0.98214,3.8393,0.35714,0.80357,2.2321,0.0893,3.75-4.5536,1.4286-1.9643,1.9643-1.0714,2.6786-4.0178-0.26786-3.3929,0.17857-1.6964,0.89286-1.5179,1.3393,0,1.7857,1.5179,1.3393,0,2.5893-3.0357,0.08929-1.9643-0.89286-0.98214-2.2321-1.3393,0.17857-2.9464,2.8571-3.125,0.08929-1.4286-2.7679-2.9464-3.75-0.71428-0.80357-0.89286,1.6071-1.25,0.17857-2.4107-2.1429-1.6072-2.5893-0.80357-1.6071-1.6964-1.25-0.98214-0.89286-0.0893-1.3393,2.2322-0.625,0.98214,1.0714,1.4286-0.35714,1.5179-0.80357,0.625-2.7679-0.26786-0.89286-0.89286-1.9643,0.0893-1.875,0.71429-3.0357,1.7857-1.6964,0-1.3393-1.4286-1.6071-0.625-1.1607-1.4286,0-2.6786-2.2321-0.26786-1.25,0.625-0.35714,2.9464-0.089286,13.214,0.71429,5.8929,0.98214,3.6607-0.089286,2.3214-0.625,2.7679-0.089286,2.4107,0.17857,2.0536,1.5179,0.89285,0.71429,0.625,1.6071,1.5179,0.89286,1.0714,0.89286,0.89286l7.947-4.27-0.804-1.25-0.357-1.43-5.089,2.68h-1.875l-1.25-1.875,0.35714-3.5714,6.25-1.4286,2.7679-2.3214,0.71429-2.5893-1.3393-0.80357-1.9643,0.44642-1.1607-1.5178-0.71429-2.6786-1.3393-1.7857-0.17857-1.25,0.08929-1.1607,1.3393-0.80357,1.3393,0.625,1.0714,1.3393,1.0714,1.9643,1.3393,1.7857,2.3214,1.3393,1.6964,0.89285s0.625,0.26786,0.71429,0.625c0.08929,0.35715,0.89286,2.6786,0.89286,2.6786v4.0178l-0.08929,1.3393-1.0714,1.0714-1.875,1.5178-1.6071,1.4286z\",\"name\":\"Krasnodar Krai\"},\"ro\":{\"path\":\"m37.5,323.45,2.0536,0.98214,1.4286-0.17857,0.625-0.89286-0.44643-1.1607-1.25-0.89286-1.9643-1.3393-0.89286-1.1607-0.35714-0.71428,1.0714-1.4286l2.231-1.08,1.6071-0.26786,1.0714,0.35714,1.4286,1.3393,1.5179,0.35714,1.6964-0.89286,0.89286,0.44643,1.072,1.06,1.339,1.79,0.268,1.33,1.607-0.08,1.3393-0.80358,1.6964-0.0893,1.3393-0.0893,0.35714-1.5178,0.53571-1.4286,1.25-1.6071,1.3393-1.0714,1.6964,1.0714,0.71429,0.35714,0.89286-1.875,0.44643-0.71428,2.6786-0.26786,1.875-1.6964,2.3214-0.17857,2.0536,1.1607,2.1429,1.25,0.98214,0.53571,3.9286,0.0893h2.2321l1.5179-0.98215h1.3393l0.71429,0.625,0.26786,1.6964-0.08929,1.9643v1.875l-0.08929,1.0714-0.981,1.34-1.25,0.98214-1.25,0.71429-0.80357,0.35714-0.35714,1.25-0.44643,1.6072-0.08929,1.4286-0.44643,1.1607-0.625,1.4286-1.4286,1.5179-1.6964,0.53571h-3.125l-1.608-0.36-1.518,0.53-0.625,1.97-0.982,0.62-0.80357,0.53572,0.17857,0.89285,1.3393,1.4286,0.71429,1.4286-1.1607,1.4286-1.3393,0.89285-0.80357,1.7857-0.08929,0.80357,0.98214,0.53571,1.1607,1.1607,0.625,1.0714,0.80357,0.80357,0.71429,1.3393v1.0714l-0.71429,0.80357,0.53572,0.625,1.4286,0.35715,0.625-0.53572,0.71429-0.0893,0.35714,0.98214v1.4286l-1.3393,1.3393-2.1429,1.0714-2.0536,1.1607-3.3929,0.0893-0.80357,0.80357-1.3393,0.80357-1.696,0.46-1.429-0.71-1.696-0.71-0.893-0.9-0.178-2.23-0.179-1.52-1.696-2.14-1.1607-0.80357-0.17857-1.25-0.80357-0.89286-1.7857-0.0893h-2.7679l-2.8571-0.0893-1.3393-0.17857-1.6071-1.7857-0.98214-0.71429v-0.89286l1.3393-1.5178v-1.5179l-0.625-1.25-1.875-1.4286-0.71429-0.625,0.26786-2.2322,2.7679-3.2143,0.08928-1.6071-1.9643-2.2322-1.3393-0.89285-2.411-0.55-1.0714-0.35714-0.08929-0.71429,1.0714-1.0714,0.26786-1.1607z\",\"name\":\"Rostov Oblast\"},\"kk\":{\"path\":\"m44.554,348.71,0.98214,1.6071,1.1607,1.0714,1.1607,1.6964,0.80357,1.1607,1.1607,0.71429,2.5893,0.44643,1.3393,0.625,0.98214,1.6071s0.98214,1.7857,1.25,2.2321c0.26786,0.44643,0.98214,2.4107,0.98214,2.4107l0.17857,4.9107v3.2143l0.89286,2.2321,3.3036,4.1964,1.25,2.0536-0.17857,2.5893-1.4286,1.875,0.89286,1.3393,4.375,4.7321,0.53571,1.25,0.35714,0.98215,0.89286,0.53571,1.4286,0.0893,1.6071-0.26786,1.7857-0.53572,2.2321-0.89285,2.3214-0.26786,0.713-0.71,0.625-2.15-0.268-1.16-2.232-1.34-0.982-0.71,0.08928-1.3393,1.0714-0.625,1.7857,0.0893,1.4286-1.25-0.53572-0.71428-0.71428-2.0536-0.268-1.7-0.179-1.16h1.0714l1.6964,1.25,1.7857,0.80357,2.6786-0.17857h0.89286l0.53571-1.1607-0.17857-2.4107-0.08929-3.8393v-6.3393-0.98214l-0.08929-2.2321,2.9464-2.8572,0.17857-1.3393-1.4286-0.625v-3.2143l-1.0714-1.1607-1.1607-0.35715-2.5-0.17857-0.625-1.4286-0.17857-0.80357-1.25,0.26786-0.625,1.0714h-1.3393l-1.25-0.0893-1.071-0.98-0.804-0.71-2.321-0.27-0.98214,0.35715-0.71429,0.80357-0.71429,0.35714-0.26786,1.1607-0.35714,0.80357,0.35714,0.625,1.0714,0.35714,1.0714-0.44643,0.89286,0.35714,0.08929,0.98215-0.44643,1.5178-5,3.125-3.3929,0.26786-2.3214,1.3393-1.5179,0.53571-3.8393-1.7857-0.53571-0.35715-0.08929-3.3928-0.71429-1.4286-2.3214-2.2322-0.625-1.25-1.9643-0.80357h-3.5714z\",\"name\":\"Republic of Kalmykia\"},\"as\":{\"path\":\"m86.873,350.94,1.6415-1.389,1.1364-0.63135,1.7678,1.2627,2.0203,0.63135,2.2728,0.50508,0.88388,1.0102,2.1466,0.88388,0.75761,1.1364,0.63134,1.1364,0,1.389,0,0.88389-1.5152,0.3788-1.1364,1.389-0.12627,1.0102,0.63134,1.389,1.0102,1.1364-0.37881,2.1466-0.75762,1.0102-1.7678,0.88389-0.25254,1.1364,0.50508,0.88388,1.7678,1.1364,2.2728,1.5152,1.389,1.6415,0.63134,1.0102,0,1.5152-1.0102,1.1364-0.25254,2.0203-1.0102,1.0102,0,2.2728,0,2.7779-0.75761,0.3788-1.7678-0.3788-1.894-0.75762-0.63134,0.37881-0.37881,2.1466,1.6415,2.1466,1.1364,1.2627,0.88388,1.0102,0.50508,0.63134,0.12627,1.2627-3.9143,0.25253-3.0305,0.63135-2.1466,0-1.894-1.2627-2.0203-1.5152-5.4296,0-1.0102-0.37881-1.1364-1.1364,0.37881-2.9042-0.88388-1.0102-2.2728-1.6415,0-1.6415,1.0102-0.3788,1.5152,0,1.389-1.0102-0.63134-1.389-0.75761-4.0406,0.63134-0.3788,1.2627,0.75761,2.9042,1.389,2.0203-0.25254,1.2627-0.12627,0.50508-1.6415-0.25254-5.4296,0.12627-5.0508-0.25254-4.2931,2.1466-2.2728,1.0102-1.1364,0.12627-1.389-1.2627-0.50508-0.25254-2.1466z\",\"name\":\"Astrakhan Oblast\"},\"ad\":{\"path\":\"m21.786,356.21,2.4107-1.4286,2.5-2.6786,0.35714-2.1428-0.26786-3.9286-1.0714-2.7679-2.9464-0.98214l-2.412-1.78-2.232-3.75-1.5179-1.1607-1.3393,0.71428-0.17857,2.1429,1.6071,1.875,0.80357,2.5893,1.1607,1.6964,1.6071-0.35714,1.5179,0.44643-0.44643,2.9464-2.9464,2.3214-3.394,0.71-2.8571,0.35715-0.17857,3.8393,1.0714,1.7857h1.7857l5.3571-2.9464,0.35714,1.7857z\",\"name\":\"Republic of Adygea\"},\"vl\":{\"path\":\"m85.893,313.18,1.5179-0.98214,1.875-0.0893,1.1607-1.0714,1.1607-1.6072,0-1.25,1.1607-0.98214,1.9643,1.25,2.5,1.9643,3.3036,2.1428,3.9286,1.5179,1.4286,1.5179,0.625,2.1428,0.44643,1.4286,2.8571,0.35714,0.44643,1.4286,2.5893,0.80357,1.7857,1.7857,1.6964,1.6964,0.17857,2.2322-1.5179,1.25-1.6071,2.2321-1.4286,1.3393-0.26786,1.25,0.89286,2.2321,2.9464,1.875,1.6964,1.875,1.7857,1.1607,1.25,3.3036,1.0714,1.875,0.0893,1.25-0.71428,0.53572-1.3393,0.44643-0.71429,0.53571-2.8571,0.26786-4.6429-0.0893-1.6964,0.26786-0.71429,1.6071,0,2.8572-0.17857,1.1607-1.6964,1.25-1.3393,0.98214-4.0178-0.0893-1.0714-0.0893-1.3393-3.0357-1.4286-1.0714-1.875-1.0714-1.0714-0.625l-2.256-0.46-2.054-1.25-1.071-0.18-1.1607,0.625-0.98214,0.71429-1.25,0.26785-2.1429-0.0893-0.89286-1.1607-0.35714-1.25-1.4286,0.26786-0.89286,1.1607h-1.25l-1.875-0.71428-1.25-0.80357-1.3393-0.35715-1.4286,0.17858-1.4286,1.25h-0.89286l-1.4286-2.5-1.25-1.4286-1.0714-0.71428,0.448-1.44,0.893-1.52,1.607-1.43,0.179-0.89-1.6964-2.1429-0.44643-1.0714,1.4286-0.80358,0.625-1.875,0.625-0.53571,1.25-0.35714,1.6071,0.0893h3.0357l1.7857-0.625,1.9643-2.5893,0.89286-4.0179,0.625-1.4286,2.8571-2.0536,1.1607-1.6964,0.35714-3.3036v-2.2322z\",\"name\":\"Volgograd Oblast\"},\"vn\":{\"path\":\"m70.089,310.77,0-6.0714,0.08929-1.1607,3.75-3.2143,2.5-3.6607,1.3393-1.4286,0.35714-1.875,2.4107-0.71428,0.35714-2.5893,0.625-1.7857,1.0714-0.35714,0.625-2.0536,1.3393-1.7857,1.1607-1.0714,0.98214-0.53571,0.89286,1.1607,0.44643,0,0.71429-1.0714,0.53571-0.71428,1.1607-0.17857,0.89286,0.89285,1.25,1.1607,1.4286,1.4286,1.1607,1.5179,0.80357,0.89285-0.26786,2.1429,0,1.6071,1.875,1.0714,2.3214,1.3393,0.80357,1.3393-0.0893,1.7857-0.89285,1.5178-0.44643,0.98215,1.5179,1.25,1.875,1.7857,1.9643,2.2321,1.3393,1.6964,1.1607,1.9643-0.26786,2.3214,0,2.0536-2.1429,1.0714-0.71428,0.17857-4.2857-1.875-2.6786-1.7857-2.1429-1.4286-1.6964-1.1607-0.53571-0.17857-0.71429,0.80357-0.44643,1.25-1.4286,1.9643-1.6964,0.44643-2.8571,0.80357-3.5714,1.1607-3.2143,0.0893-2.5-0.17857-2.3214-1.25-2.3214-1.0714z\",\"name\":\"Voronezh Oblast\"},\"bl\":{\"path\":\"m63.304,272.29-5.4464,3.3036,0.08928,2.6786,1.6964,1.875,0.08929,3.125,0.44643,1.6964,2.8571,1.6071,2.8571,0.44643l1.608,2.23-2.5,3.3036-0.35714,2.1429,1.0714,1.6071,2.3214,1.5179,0.17857,2.9464,1.1607,1.5179,0.71428,0.89285,4.7321-4.375,3.75-5.4464,2.0536-0.89285,0.80357-4.1072,1.0714-0.89285,0.53571-1.3393-2.5-2.8571-3.5714-4.1071-2.7679-0.26786-2.9464-1.1607-2.6786-1.6964-2.5893-1.6072-1.9643-1.6071z\",\"name\":\"Belgorod Oblast\"},\"ky\":{\"path\":\"m63.482,271.84,0-4.6429l-0.357-1.61-1.786-1.97-0.714-1.07,1.3393-1.0714,3.75-1.3393,2.7679-1.3393,2.6786,0.0893,0.53571,1.0714,1.25-0.0893,1.7857-1.1607h0.80357l0.98214,0.44643,1.4286,1.6071,0.53571,0.80357,0.08929,1.6964,1.0714,0.89286,1.0714,0.71428h0.89286l1.0714,1.25,0.17857,3.2143v2.4107l-0.89286,0.98214v1.5179,1.1607l1.0714,1.25,1.1607,0.98214,0.89286,0.17857,1.5179,0.53571,1.0714,1.6072,1.6071,1.5178-0.71429,1.1607-0.80357,0.89286-0.89286-0.80358-1.9643,1.25-1.4286,1.1607-0.53571,0.80357-3.4821-4.1071-2.2321-2.3214-0.98214-0.53572-3.3036-0.625-2.8571-1.5178-3.6607-2.1429-2.4107-1.9643z\",\"name\":\"Kursk Oblast\"},\"or\":{\"path\":\"m74.732,258.27,1.0714-1.875,2.2321-0.26786,0.89286-1.6071,0.89286-0.53572,1.9643,0.89286,1.6964-0.0893,1.6071-0.71429,1.0714-1.5179,0.89286-0.53571,0.98214,0.17857,1.3393,0.98214,1.9643,0.89286,1.1607,0.89286,0.35714,0.89285,0.71429,1.3393,0.17857,2.0536,0,3.6607,0.98214,1.7857,1.4286,1.875,0.80357,1.25,0.71429,1.7857-0.26786,1.5179-3.9286,1.875-1.9643,0.98214-1.0714,2.1429-1.875,1.0714-1.875,1.0714-2.4107-0.89286-1.9643-1.6071-0.44643-1.6964,0.44643-1.9643,0.44643-0.89285,0.08928-4.4643-0.89286-1.6964-1.7857-0.53571-1.7857-1.4286-0.08929-1.6072-1.3393-1.5178-1.6071-1.6964z\",\"name\":\"Oryol Oblast\"},\"lp\":{\"path\":\"m86.875,278.45,1.5179,1.875,1.0714,0.89286,1.1607,0.71428,1.1607,1.0714,2.5,2.2321,1.25,1.5179,0.625,1.4286-0.44643,2.5893,0.53572,0.625,2.5,1.3393,1.875,1.7857,1.0714-0.17857,1.0714-0.625,0.44643-0.80357,0.0893-5.8036,0.35714-0.71428,1.4286-0.80357,2.3214-0.17857,2.0536-1.1607,1.3393-0.44643,0.17857-1.6964,0.625-1.3393,1.25-1.5179-0.80357-1.1607-2.6786-0.98215-0.53571-0.53571-0.17858-0.71429,1.0714-1.3393,0-1.6071-2.1428-0.35715-1.0714,0.44643-1.6072,0.80357-0.98214,0.89286-1.1607,0.625-1.4286,0.0893-1.3393-1.5179-1.6964-1.6964-0.80357-0.98214-2.4107,0.89285-3.125,1.6964-1.1607,1.6072-1.6071,1.4286z\",\"name\":\"Lipetsk Oblast\"},\"tl\":{\"path\":\"m93.482,256.3,3.2143-2.0536,0.98214-0.17857,1.6071,0.80357,0.98215-0.80357,0.71428-1.0714,3.125,0,1.6072,0.625,2.0536,0.35714,1.4286,0.80358,2.4107,0.35714,1.4286,0.71428,0.53572,1.0714,0.98214,1.0714,1.25,1.4286,0.71429,1.6072-0.35715,1.6964-0.98214,1.1607-0.71428,1.6964-1.3393,1.9643-1.6964,2.0536-1.0714,1.875-0.71428,0.98215-0.53572,0.35714-1.7857,0-2.5,0.89286-1.5179,1.0714-1.3393,0.26785-2.0536-1.3393-2.0536-2.5893-0.26786-2.0536-0.53571-1.4286-1.6071-2.5l-1.413-2.14-0.179-2.23z\",\"name\":\"Tula Oblast\"},\"bn\":{\"path\":\"m67.679,258.62,0.26786-1.7857,2.3214-1.5179,0.44643-1.1607,0-1.4286-1.6071-1.9643-1.7857-2.1429-1.6964-1.9643-2.3214-1.875-1.5179-0.89286-1.6964-0.26786-0.89286-1.1607,0.17857-2.3214,1.3393-1.6071,3.125-2.1429,2.6786-1.875,0.89286-1.7857,0.98214-0.71428,1.6964,0.26786,0.625,1.25,0.625,1.5178,1.0714,2.2322,1.1607,0.80357,5.8929,0.26785,2.1429-0.35714,1.4286,0.53572,3.125,0.89285,2.3214,0,0.71429,1.9643,0,2.2321-0.17857,1.1607-0.98214,1.5178-0.71429,0.53572-0.26786,1.4286,0.26786,1.5179,0,1.25-0.80357,1.4286-1.4286,1.5178-1.7857,0.71429-1.6964,0.17857-1.7857-0.71428-1.4286,0.71428-0.26786,0.89286-2.4107,0.80357-1.0714,1.4286-1.3393,1.25-1.4286,0.17857-1.4286-0.71428z\",\"name\":\"Bryansk Oblast\"},\"kj\":{\"path\":\"m89.196,239.61,1.6071-1.25,1.6071-1.3393l1.161-0.27,1.429,0.63,0.80357,1.4286,1.0714,1.25,1.7857,0.80357,1.7857,0.35715,3.125,0.0893,1.875-0.0893,1.6071-1.0714,2.4107-0.0893,1.4286,0.44643,0.98214,2.0536,0.26786,1.4286,1.25,0.625,1.6071,0.98215,0.98214,0.80357,0.53572,1.25-0.53572,2.0536-1.0714,1.7857-1.4286,1.9643-1.1607,1.25-0.89286,0.44643-3.75-1.25-2.6786-1.0714-2.6786,0.0893-1.875,0.44642-1.0714,1.25-1.5179-0.44642-1.0714,0.0893-1.0714,0.80357-2.0536,1.0714-0.89286-0.89286-1.0714-0.80357-1.9643-1.25-1.5179-0.89285-0.89286-0.44643v-1.0714-2.4107l-0.08929-0.625,1.1607-1.6964,1.0714-1.875v-1.7857l-0.26786-1.6071z\",\"name\":\"Kaluga Oblast\"},\"sm\":{\"path\":\"M79.375,237.55,80,235.95,80.179,234.52,79.732,233l-0.08928-1.4286,1.5179-1.3393,0.71429-1.6071,0.08929-3.125,0.35714-1.875,2.4107-2.5,2.5-1.9643,1.875-1.7857s1.875-1.3393,2.2321-1.5179c0.35714-0.17857,2.5-1.5178,2.5-1.5178l2.5,0.0893,3.0357,3.4822,1.875,3.4821,2.5,3.6607,1.4286,0.89286,2.7679,0.53571h2.0536l0.80357,0.71429,1.1607,1.875,1.1607,1.3393,1.25,1.6071,1.0714,1.4286,0.17857,1.3393-0.98214,1.25-1.875,0.89285-1.875,0.53572-0.89286,1.25-0.44643,0.89285-1.875,0.44643-1.7857,0.625-1.6072,0.35715h-3.0357l-3.75-0.80358-1.7857-1.7857-1.4286-1.3393-1.1607-0.26785-1.1607,0.71428-2.2321,1.5179-1.1607,0.44643-1.7857-0.44643-4.1071-0.98214-2.4107-0.35715z\",\"name\":\"Smolensk Oblast\"},\"mc\":{\"path\":\"m116.07,234.16,3.5714,0.26785,2.3214-0.89285,1.4286-0.44643,0.53571,0.625,0.0893,1.7857,0,1.1607-0.17857,1.3393,1.5178,0.89286,2.9464,0.44643,1.7857,0.89285,2.0536,0.89286,2.7678,0.89286,1.7857,0.26786,1.25,0.53571,0.26786,1.6071-0.0893,1.5179-0.44643,1.6964-1.5179,0.625-2.1428,1.1607-1.6072,1.3393-0.0893,1.25-0.625,1.7857-1.1607,1.5179-0.35714,1.6071,0.17857,1.6072,0.0893,0.89285,1.1607,1.0714,1.0714,0.625,1.1607-1.0714,0.625,0.44643,0,1.5179-0.0893,3.2143-0.44643,1.1607-1.3393-0.44643-1.875-0.17857-1.6072,0.17857-0.80357,0.89286-2.0536,0.0893-1.6071-0.35714-1.25-0.71429-1.0714-1.1607-1.6071-0.625-1.6964,0-0.44643,0.80357-0.17857,1.1607-1.0714,0.53571-1.4286,0.0893-0.80357-0.80358-0.17858-0.625,1.1607-2.4107,0.26786-1.9643-0.53572-1.6964-1.1607-1.5179-1.1607-1.5179-1.0714-0.89286,0.625-1.25,2.5-2.9464,1.1607-2.6786-0.71429-1.7857-1.6071-1.6071-1.6071-0.98215-0.53572-0.35714-0.625-1.875-0.80357-1.25-0.80357-0.80357,0.625-1.5179,2.5893-1.3393z\",\"name\":\"Moscow Oblast\"},\"rz\":{\"path\":\"m114.55,265.59-1.9643,2.6786-2.1429,3.125-0.625,2.7679-0.80357,1.7857,0.17857,0.80357,1.6964,0.71429,1.9643,1.3393,0.44643,1.5179-0.26786,0.89286,1.4286,1.1607,1.9643,0,1.1607,0.71429,0.0893,1.875,0.44643,1.1607,1.25,0.44643,1.5179-0.625,1.9643,0,1.5179,0.98214,0.625,1.7857,1.0714,1.1607,2.6786-0.17857,3.125,0,2.9464-2.0536,3.0357-2.9464,1.5179-2.2321,1.0714-1.7857-0.98214-2.2321-0.53572-3.125-2.0536-2.0536-1.25-1.6964-0.44643-2.8571-0.53571-1.6072-0.35715-0.98214-2.1428-0.35714-3.4822,0.26786-0.625,0.80357-2.1428-0.17857-1.875-0.71429-1.875-1.0714-1.9643-0.89286-1.0714,0.35715-0.80357,1.4286-1.4286,0.89286-1.6071-0.44643z\",\"name\":\"Ryazan Oblast\"},\"tb\":{\"path\":\"m112.77,279.43-1.6964,2.1429-0.35714,1.7857-0.80358,0.89286-2.6786,0.98214-1.875,0.44643-1.5178,0.71429-0.71429,1.4286,0,2.1429,0.26786,2.3214-0.71429,1.875-1.5179,0.53571-0.44642,1.4286-0.44643,1.6964-0.625,1.1607,0.08928,0.625,2.3214,2.1429,2.2321,2.1429,1.6072,2.2321,1.4286,2.0536,0.98214,0,2.1429,0,1.9643-1.25,2.5-1.25,1.6964-1.0714,4.0179-0.26785,1.0714-0.98215v-3.6607c0-0.35714,0.0893-2.3214,0.0893-2.3214l1.5179-1.1607s0.71429-0.71429,0.80357-1.0714c0.0893-0.35714-0.26785-4.6429-0.26785-4.6429l1.4286-1.0714-0.80357-2.1428-1.7857-1.4286-2.3214,0.26786-0.89285,0.625-1.1607-0.80357-0.89286-1.3393v-1.3393l-1.875-0.80357h-1.3393l-0.89286-1.0714-0.26786-1.3393z\",\"name\":\"Tambov Oblast\"},\"kn\":{\"path\":\"m44.107,152.55,0,2.2322,0.53571,2.5,2.0536,5.1786,1.4286,3.4821,1.9643,3.6607,2.5,1.0714,3.75-0.44642,1.9643-1.3393,0.625-1.7857-0.44643-4.2857-0.89286-2.8571-1.5179-1.6071-2.4107-0.53572-0.98214-0.71428,0-3.0357-0.80357-1.4286-1.6964-1.6071-1.6071-0.26786-0.35714,1.25-0.625,1.3393-0.625,0.89285-1.4286-0.35714z\",\"name\":\"Kaliningrad Oblast\"},\"ps\":{\"path\":\"m95.268,213.98,0.35714-2.1428-0.26786-2.1429-1.4286-1.875-1.3393-1.4286-0.08929-1.6964,0.98214-0.71429,0.17857-1.6964-0.89286-0.98215-1.25-1.875,0-4.1964,1.5179-0.89285,3.75-2.2322,0.80357-2.4107,0.53572-1.7857,1.875-1.25,2.4107-0.0893,1.3393-1.6071,0.98214-1.6964s1.25-0.625,1.6072-0.80357c0.35714-0.17857,2.8571-0.71429,2.8571-0.71429l1.5179-0.0893,1.0714,0.53571-0.625,1.5179-0.71428,0.89285-0.17857,0.98215,1.6071,0.26785,1.25-1.7857,0.98214-2.0536,1.1607-1.5179,1.6071-0.71428h1.6071l1.5179-1.5179,1.1607-0.625h1.4286l0.98214,0.98214,0.625,1.5179,0.98214,1.6071-0.26786,1.6964-0.89285,0.98214-0.35715,1.3393-0.80357,1.6071-0.17857,1.1607h-1.4286-0.80357l-0.71429-0.53572-0.80357,0.53572-0.625,0.80357-0.53571,1.5178-0.53572,2.1429-0.0893,2.5-0.35715,1.875-1.1607,1.25-1.3393,0.98214h-1.7857l-1.5179,1.3393-0.53571,1.7857-1.3393,0.53572-0.44643,1.0714-0.17857,1.4286-1.7857,0.89286-1.7857,0.80357-0.625,1.6964,0.625,1.5178,0.625,0.625-0.26785,1.4286s-0.0893,0.44643-0.44643,0.80358c-0.35714,0.35714-1.1607,1.3393-1.1607,1.3393l-1.4286,0.80357-2.3214,0.89286-1.0714,0.0893-1.1607-0.89286-0.89286-0.89286z\",\"name\":\"Pskov Oblast\"},\"no\":{\"path\":\"m123.12,188.27,1.5179,1.25,2.1428,0.35714,2.1429,0.17857,1.25,1.1607,2.5,0.53571,2.3214-0.0893,1.0714-0.89286,0.44643,0.625,0.0893,1.7857,2.1429-0.53571,2.3214,0.0893,0.80357,0.80358,0.17857,2.5,0.17857,2.5,0.53572,1.0714,1.3393,0.17858,1.3393,0.44642,0.26785,2.1429,0.71429,1.6964,0.98214,0.80357,0.44643,2.9464,0.0893,2.2321,0.89285,1.4286-0.53571,0.98215-0.71429,0.53571,0,1.6071,0.17858,1.5179,1.4286,1.3393,0.625,0.53571,0.0893,1.9643,0,1.9643-0.17857,1.3393-1.25,0.53571-0.71428-0.26785-0.625-0.80358-0.71429-0.80357-0.17857-1.1607-0.98214-0.80357-0.80358-0.625-2.0536,0-1.5178-0.53572-0.53572-0.35714-1.5178-0.53571-0.71429-0.26786,0-0.44643s-0.26786-1.25-0.26786-1.6964c0-0.44643-0.0893-2.0536-0.0893-2.0536l-0.625-0.98214h-1.7857l-0.89285-0.44643-0.44643-0.98214-0.98215-0.625-0.53571,0.625-0.89286,1.0714-1.6964,1.4286h-2.1428c-0.35715,0-1.5179,0.0893-1.5179,0.0893l-0.71429-1.0714-1.0714-0.71428-2.3214-0.17857-2.6786-0.0893-1.5179-0.44643-1.3393-0.98214-2.3214-0.44643h-2.1428l-0.89286-1.1607-1.25-1.0714-0.53571-0.71429-1.1607-0.71428,0.98214-2.7679,0.71429-0.44643,1.1607-1.5179,1.0714-1.0714,2.0536-0.625,2.5-1.9643,0.625-1.9643,0.0893-3.5714,0.98214-2.5893,1.0714-1.25,1.1607,0.26786z\",\"name\":\"Novgorod Oblast\"},\"tr\":{\"path\":\"m98.661,216.66,3.2143-0.625,2.2321-1.6072,1.3393-1.6071,0.17857-1.4286-0.80357-1.4286-0.26786-1.3393,0.35714-0.89286,1.4286-0.89285,1.6964-0.625,1.1607,0.44643,1.5179,1.5178,1.0714,0.98215,0.98215,0.53571,1.6964,0.17857,2.4107,0.35714,1.3393,0.98215,1.3393,0.26785,3.2143,0.44643,1.5178,0,1.25,0.71429,0.80358,0.71428,1.875,0.35715,1.7857-0.17857,1.875-1.6072,1.25-1.25,0.71429,0.44643,0.625,0.80357,1.4286,0.44643,1.4286,0.17857,0.53571,1.5179,0.17857,2.4107,0.35715,0.80358,1.1607,0.71428,1.4286,0.80357,1.0714,0.26786,1.875,0.35714,0.98214,0.26786,1.25,1.0714,0.44643,1.3393,0.98214,1.0714,0.80358,0.53572,1.7857-0.35715,1.3393,0.0893,1.25,0.71429,1.6071,0.89285,0,1.5179-0.625,1.6964-1.25,1.6071-1.6071,0.44643-1.25,0.98214-1.5179,1.3393-0.89286,1.0714-0.44643,0.71428-0.26785,1.5179-0.44643,1.0714-1.25,1.4286-0.53572,1.4286-0.35714,2.0536-2.0536,1.9643-2.0536,1.3393-1.0714,0.17858-0.53571-0.71429-0.26786-1.7857-1.6964-0.71429-3.8393-0.89286-3.8393-1.6071-3.0357-0.80357-1.5178-1.0714-0.0893-3.0357-0.35714-1.6964-3.3036,0.80357-3.4822,0.26786-1.3393-0.89286-3.4821-4.4643-1.5179-2.0536-3.3036-0.625-2.7679-0.53571-1.4286-1.7857z\",\"name\":\"Tver Oblast\"},\"vm\":{\"path\":\"m137.41,247.73,1.6072,1.7857,2.0536,1.25,1.1607,1.0714,1.3393,0.35714,0.80357,0.89286,0.0893,1.5178-0.89285,1.7857-0.35715,1.0714,1.25,0.625,1.7857,0.26785,1.0714,1.1607,0.17857,1.9643,0.98214,1.875,1.0714,1.25,1.3393,1.25,1.3393,1.3393,1.3393,1.1607,1.7857,1.875,0.89286,1.3393-0.17857,0.98214-0.89286,0.71429l-0.18,0.98,0.53571,0.71429,0.44643,0.71428,0.0893,1.6072-1.7857,0.53571-2.2321-0.0893-1.1607-1.0714-4.4643-0.0893h-5.1786l-1.7857,0.53571-0.71429-1.6964-1.6964-1.9643-1.6071-2.6786-0.80357-4.1964-0.0893-4.1071-0.17857-2.0536-0.44643-0.44643-0.71428,0.44643-1.1607,0.26785-1.4286-1.25-0.26786-2.5893,0.71429-2.0536,1.1607-2.0536,0.44643-1.7857,1.3393-1.0714z\",\"name\":\"Vladimir Oblast\"},\"pz\":{\"path\":\"m127.05,289.96,1.6964,1.7857,2.0536,1.5179,1.25,0.98214,1.6964,0.625,1.25,1.875,0.71429,1.6071,0.26785,1.9643,0.98215,0.98214,1.0714,1.0714,2.6786,0.17857,1.6964,0.0893,0.625,2.1429,0.89286,1.7857,1.6964,0.71429,2.1429,0.26785,1.4286,1.0714,0.625,1.0714-1.5179,0.89286-0.89286,0.98214,0.0893,4.1071-0.26786,3.4822-2.7679,1.25-1.0714-0.0893-0.89286,1.6071-1.9643,0.98215-1.1607-1.7857-0.98214-0.98214-5.9822-0.0893-1.1607-1.875-0.89286-0.89285-3.125-0.71429-0.98214-1.6071-1.25-1.6964-2.1429-0.71429-2.4107-1.3393-1.6071-1.0714-2.5,0.0893-0.71429-1.875,0.26786-2.5,1.1607-0.89285,3.8393-0.80357,0.89285-2.4107,0-3.4821,1.3393-1.6964,1.3393-1.6071-0.26786-2.5893,0-1.9643,1.1607-0.89286z\",\"name\":\"Penza Oblast\"},\"sr\":{\"path\":\"m107.23,308.27-0.17857,3.0357-0.26786,1.25-2.2321,1.1607,1.4286,1.6964,1.0714,3.2143,2.2321,0.71429,0.98215,0.80357,0.89285,1.0714,1.7857,0.625,2.5893,2.5,0.89286,1.0714,0,1.875-1.5179,2.0536-2.4107,2.8571-0.44643,1.25,0.44643,1.6964,0.71429,0.89286,2.1428,1.1607,4.0179,3.9286,1.7857,4.5536,1.25,1.4286,1.25,1.3393,0.26786,1.9643-0.71428,2.5-0.53572,2.4107,0.26786,1.7857,0.89286,1.0714,1.6071,0.44643,1.6964,0,1.6964-1.1607,1.25-1.0714,0.44642-2.6786,0.0893-1.875,2.2321-0.625,3.3036,1.25,1.6964,0.35714,1.6072,0,1.3393-1.5179,0.44643-0.53571,1.6071,0.35714,1.3393,1.0714,1.5178,0.89286,4.6429,0,1.1607-1.1607,1.3393,0.17857,0.89286,0.80358,1.6071-0.53572,0-1.7857-0.89286-1.9643-0.35714-1.3393-0.17857-3.9286-0.0893-2.0536-0.71428-1.25,0.0893-2.8571-0.35714-1.6071,0-2.5-0.80357-1.3393-1.1607-1.6071-2.5-1.0714-1.6072-2.0536-2.5893-0.0893-1.0714-0.35714-1.7857-1.6964-0.625-1.25-0.44642-0.89286-1.7857-2.4107-5.625-0.26786-0.53571-0.17857-1.9643-2.5893-3.125-0.89286-2.2321-2.9464-6.1607-3.3036-2.3214,0-1.0714-1.6964,0.44643-2.5-0.80357-0.35714-3.8393,2.1428-1.5179,0.35715z\",\"name\":\"Saratov Oblast\"},\"mr\":{\"path\":\"m127.59,290.05,1.875,2.1429,2.6786,1.7857,1.7857,1.1607,1.7857,2.7679,0.44642,2.4107,2.0536,2.1429,2.5893,0.0893,1.6071,0.26786,0.89286,2.2321,0.71429,1.4286,2.0536,0.89286,1.7857,0.35714,1.25,0.625,0.53572,0.80358,5.8928,0.17857,2.6786-3.5714,0.35715-0.53572,0.71428-1.3393,0.0893-2.1429-0.0893-1.9643-1.7857-0.98215-0.35714-2.5-0.0893-0.80357-1.6964,0,0,0.17857-0.80357,0.89286-1.3393,0.80357-5.2678,0-2.5893-2.3214,0.17857-3.5714-1.1607-1.0714-0.17857-0.80358,1.0714-1.0714,0-1.6072-2.5893-0.53571-1.7857-0.0893-0.80357-1.25-0.71429-1.6964-1.25,1.1607-2.1429,2.3214-2.4107,1.5178-1.5179,0.98215-2.9464,0.26785z\",\"name\":\"Republic of Mordovia\"},\"cu\":{\"path\":\"m159.11,299.07,1.3393-0.89286,2.9464,0.44643,1.3393,0.44643,1.0714-1.3393,0.26786-1.7857,2.2321-1.1607,2.2321-2.2322,3.125,0.0893,2.6786,0,1.25,1.5179,0.35715,2.9464-0.17857,1.5179,0.35714,1.25,0.71428,1.1607-0.0893,0.71428-1.3393,0.625-4.1071-0.0893-1.3393,0.53571-0.80357,0.80357,0,0.89286,1.1607,0.71428-0.17857,0.89286-1.3393,1.1607-1.7857,1.25-2.1429,0.98214-1.3393,0.44643-1.3393-1.3393-2.5-0.44643-0.98215-0.625-0.98214-1.3393-0.80357-0.80357,0.80357-3.5714z\",\"name\":\"Chuvash Republic\"},\"ul\":{\"path\":\"m158.57,305.32-1.875,2.6786-0.98215,1.4286-4.8214-0.26785-0.80358,0.26785-1.7857,1.4286-0.80357,1.1607,0,2.3214,0,2.5893,0,1.6964-1.7857,1.4286-1.0714,0.26786-0.89286,0-1.25,1.25-1.25,1.0714-0.625,0.26786,0.89286,1.9643,1.6071,1.6071,2.3214,0.44643,1.5178,0.17857,1.25,1.6072,1.5179,0.80357,2.1429,0.17857,0.89286-0.625,0.0893-1.875,0.17857-1.6964,1.0714-1.6964,0.35714-1.3393,1.3393-0.26786,0.80357,0.53571,1.3393,0.625,1.875-0.17857,1.3393-0.98214,1.0714,0.17857,1.6964,1.4286,2.0536,1.875,1.5179,1.6072,0.80357,1.4286,2.3214,0.17857,1.1607-1.5179,2.8572-2.0536,2.0536-1.1607,0.26785-2.3214,0-3.5714-1.875-1.1607-3.6607-0.0893-2.0536-1.4286-0.98214-1.1607-2.5-0.26785-0.98215-1.5179-3.0357-1.5179-0.80357-1.5179-0.625-2.0536z\",\"name\":\"Ulyanovsk Oblast\"},\"ss\":{\"path\":\"m150.98,329.96,1.3393,2.1428,0.71428,2.8572,0.44643,2.8571,0,2.1429,0.625,2.3214-0.0893,2.8571,0.35714,2.4107,0.53571,2.1429,0.625,1.9643,0.71429,0.98214,5.8929,0.0893,3.0357-1.6071,1.25-1.9643,1.9643-0.35715,1.6964-0.0893,2.1429-1.4286,1.4286-0.89286,1.25-0.17857,1.6072,0.625,1.7857-0.17857,0.80357-1.875,1.0714-2.3214,4.375-2.5893,1.7857-1.4286,1.1607-2.0536-0.625-1.5179-0.80357-1.7857-0.35715-2.5-1.1607-1.25-0.71429-2.4107-3.6607-0.26785-2.3214-1.6964-1.4286-0.80357-3.5714,2.3214-1.9643,2.2322-2.4107,0.0893-0.98214-0.98214-2.2321-2.4107-2.4107-1.875-1.0714-1.0714-0.89285,0.26785-1.6072,0.71429-1.6964-0.0893-1.5178-0.80357-1.0714,0-0.625,0.98215-0.53572,1.0714-0.80357,1.5179-0.17857,1.3393,0,0.98214-0.0893,0.71429z\",\"name\":\"Samara Oblast\"},\"ob\":{\"path\":\"m155.89,352.82,0.53571,1.4286,0.71429,1.6071-1.0714,1.6072,1.0714,1.4286,3.0357,0.17857,1.9643-0.35714,2.5,0,0.17857,2.3214-0.89286,2.6786,0.35714,1.0714,3.5714,1.6071,2.1429,1.4286,0.17857,3.5714,0,4.1071,0,1.4286-1.25,0.89286,0,1.9643,0,0.71428,0.71429,1.0714,1.0714,0.89286,1.7857-2.5,0-1.4286,0.89286-0.89286,1.4286,0,1.0714,2.3214-0.17858,1.4286-0.71428,1.25-0.35714,1.4286l0.36,1.43,1.25,0.89286,2.3214,1.25,1.7857,0.89286h1.9643,2.5l1.4286-1.0714,1.6071,0.17857,1.9643,1.0714,0.89285,1.6071,0.35715,1.7857,1.0714,1.25h1.7857l0.89286-0.89285h1.25l1.6071,0.53571,1.25,1.4286,0.53571,2.6786-0.17857,3.5714,1.7857,1.6072,1.4286,0.89285,1.0714,1.6072,1.0714,0.53571,1.6071-0.71429,1.4286-0.17857,1.6071,1.4286v1.25l1.9643,1.7857,1.25,0.71428,2.1429,0.35715h2.6786l1.4286-0.17857,1.25-0.89286,1.25-1.0714,0.89286-0.89286-0.17858-1.25-2.3214-3.2143-1.0714-1.25v-3.75l-0.71429-2.1429-0.17857-2.1429,1.0714-2.3214,1.9643-1.4286-1.4286-1.7857-3.0357-2.8571-1.9643,0.35714-1.4286-0.17857-0.89286-1.25h-2.3214l-1.4286,1.25-1.0714,1.25-0.53572,1.0714h-2.5l-1.0714-2.5-3.2143-0.17858-2.8572-0.35714-0.89285-2.5-1.08,0.33-1.79,0.89h-1.4286l-0.17857-1.0714,1.4286-1.7857,2.5-2.5-0.53-1.78-0.71-0.36v-0.89286l2.5-1.9643,0.35715-1.0714v-2.1429h-1.7857l-2.1429,0.71429-1.6071,0.17857-1.4286-1.9643-0.53571-2.3214,1.25-1.7857,1.0714-0.89286v-1.6071l-0.35714-2.3214,1.0714-0.89285,0.17857-3.0357-1.25-1.9643-1.7857-1.7857-0.17857-1.6071,1.0714-2.8571,1.6072-2.5,0.89285-1.7857-0.53571-1.25-2.1429-1.6071-1.4286-2.1429-1.25-1.4286-1.6071,1.7857-1.4286,1.4286-4.1072,2.5-1.4286,1.9643-0.35714,1.9643-0.53571,0.35714-1.9643,0.17857-2.1429-0.35714-1.9643,0.53571-1.9643,1.4286-2.8571,0.53572-1.0714,0.71428-1.4286,1.7857-2.1429,1.25h-2.5z\",\"name\":\"Orenburg Oblast\"},\"nn\":{\"path\":\"m156.25,271.57,4.2857-0.53571,2.5-1.4286,3.5714-0.71428,2.6786-1.0714,1.25-0.17857,2.3214,1.25,1.7857,1.0714,2.6786-0.17857,1.4286,0,2.6786-1.0714,1.25,0.17857,1.4286,1.9643,1.0714,2.1429,2.5,0.17857,2.5,1.7857,1.0714,1.25,0.89286,2.5,1.25,1.4286-0.17858,1.6071-1.25,0.89286-1.7857,0.17857-0.71429,0.89286-1.6071,0-0.71428-0.89286-1.7857-1.0714-1.6071,0.71429,0,1.6071-1.25,1.4286-1.25,0.53572-2.1429-0.89286-2.1429-1.6071-3.0357-0.89286-1.7857,0-1.0714,0.89286-0.71429,1.7857,0,2.8571-0.17857,2.8572,0.53571,1.0714-1.0714,1.4286-2.3214,1.4286-1.4286,0.89285,0,1.4286-0.35715,0.89285-0.89285,0.71429-2.8572-0.35714-1.0714-0.17858-0.89285,0-0.71429,0.53572-0.38692,0.34215-0.69448-0.12626-0.44194-0.50508-0.50508-3.0936-1.5784-0.12627-1.5784,1.4521-2.2097,0.44194-3.9775-0.25253-2.0834-2.0203,0.1894-3.3461-1.2627-1.389-0.0631-0.75761,1.0102-1.4521-0.0631-1.0733-3.7249-0.63135-1.1996-0.75761-1.0733-2.7148,1.1364-2.336-1.1996-3.3461,2.0203-0.50507,3.283-0.12627,5.9978,0.12627,1.2627,0.88388,2.0203,0.1894,2.0203-0.75761,0.12627-1.5152-0.94702-1.4521,0.63135-1.0733z\",\"name\":\"Nizhny Novgorod Oblast\"},\"ml\":{\"path\":\"m181.51,286.29,2.2728,2.336,2.4622,2.0834,2.7779,1.1364,2.9673,0.0631,2.4622,2.0834,1.5784,1.6415,0.44194,1.3258,0.63134,0.94702-0.3788,1.6415-0.56821,1.1364-0.0631,1.8309-1.5152,1.389-0.88388,0.56821-1.4521-0.12627-1.1996-1.5152-1.1996-0.44194-1.389-0.82075-1.7046-0.12627-0.50508,0.88389-1.7046,0.88388-2.5885,0.12627-1.9572-0.82075-1.1364-0.69448-0.88388-3.0305-0.37881-4.7351-1.1996-1.4521-4.0406-0.0631-1.3258-0.1894-0.63134-1.0733,0-2.0834,0.0631-3.0936,0.37881-1.8309,1.0102-1.0733,0.82075-0.63134,2.5885,0.3788,2.2728,0.88389,2.9673,1.7678z\",\"name\":\"Mari El Republic\"},\"ta\":{\"path\":\"m160.93,308.14,0.0631,1.1364,0.44194,1.0733,0.88389,1.0102,1.5152,0.63134,1.8309,1.4521,1.5152,0.75762,1.389,0.44194,1.4521,1.0733,1.389,1.0102,2.4622,0.44194,1.4521,0.0631,1.7046,0.88388,0.12627,2.2097-0.37881,2.9042,0.44195,1.4521,2.0834,1.1996,1.0733,0.75761,2.9042,0.18941,0.82075,0.69448,0.56821,1.7046,1.3258,2.1466,0.63134,2.5885,0.88389,1.7678,1.6415,1.894,1.389,2.2728,1.6415,1.1364,0.88388,0.88388,1.1996,0.0631,2.9042-1.8309,2.9042-2.7148,0.44194-0.63135,0-1.894-1.0102-1.0102-0.0631-0.88388,1.8309-0.25254,1.2627,0.31567,0.75762,0.56822,1.3258,0.3788,1.6415-0.31567,1.1996-0.69448,2.9042-0.12627,1.5152-0.37881,0-0.94701-0.37881-1.2627-1.1996-1.5784-0.63134-1.2627-1.5152-0.44194-0.88389-1.2627s1.2627-1.0102,1.5784-1.1364c0.31567-0.12627,2.2728-0.75762,2.2728-0.75762l0.0631-1.4521s-1.1364-0.18941-1.389-0.50508c-0.25254-0.31567-0.69448-0.94702-0.69448-0.94702l2.0203-1.3258,2.0203-1.389,0.12626-1.1364-0.69447-0.82075h-1.5152l-0.69448,0.0631-1.1364,1.3258-0.56821,0.69448h-1.894l-0.12627,0.88388-0.12627,1.3258-0.82075,1.1364-1.5152-0.12627-0.75761-1.4521-1.1364-0.94702-0.82075,1.0102-1.7678-0.31567-0.56821-2.2728-1.4521-0.88388-0.63135-1.2627,0.12627-1.3258-1.1364-1.3258,0.0631-2.6516,0.12627-3.0936,0.63135-0.94702-0.25254-1.0102-0.69448-1.0733-0.56821-0.56821-1.0102,0.44194-0.88388,0.37881-1.0102-0.12627-1.0733-0.88389-0.88388-0.82074-1.8309-0.69448-1.4521-0.44195-0.94702,0.94702-1.8309,0.75762-1.8309,0.1894-1.6415-0.31567-1.9572-1.0733-1.389,0.50508h-2.7148l-2.0834,0.0631-1.389,1.1364-0.0631,0.88389,0.69448,0.50507,0.12627,0.82075-0.82075,1.0733-1.5152,1.2627-2.6516,1.0733-1.5784,0.69448-1.1364-0.75762-2.0834-0.82075z\",\"name\":\"Republic of Tatarstan\"},\"iv\":{\"path\":\"m144.26,252.7,2.0203-1.1364s0.94702-0.50507,1.1996-0.50507c0.25254,0,2.5885,0.31567,2.5885,0.31567l2.7148,1.1364,2.3991,1.1364,1.2627,1.1996s1.4521,1.0102,1.7046,1.1996c0.25254,0.18941,1.4521,1.2627,1.4521,1.2627l1.7046,0.63135,1.1364-0.88388h0.88388l0.50508,0.82074,0.1894,1.1996,1.0102,0.75762,1.5152,0.82074,1.0102,0.63135,0.44194,1.0102-0.69448,1.0733-0.12626,0.88388,0.75761,0.37881,0.88388-0.56821,1.389,0.63134,0.69448,0.94702,0.25254,1.2627-0.25254,0.50508-1.894,0.69448-2.9673,0.82075-3.0936,0.50507-2.3991,1.5152-3.4724,0.50508-0.94702-0.12627-1.7678-2.3991-3.5987-3.4724-2.7148-3.3461-0.82075-2.7779-0.88388-1.0102-2.1466-0.44195-0.69448-0.56821,0.50507-1.4521,0.56821-1.3258z\",\"name\":\"Ivanovo Oblast\"},\"yr\":{\"path\":\"m154.11,228.33,1.7678,1.5784,1.9572,0.50507,1.7678,0.50508,1.3258,1.6415,1.9572,1.5784,1.5784,0.0631,1.0733-0.69448,0.82075,0.31568,0.3788,1.4521,0.12627,3.4093-0.0631,2.6516,0.25254,1.5152,0.88388,1.0102,0.56821,0.94702-0.37881,1.0733-1.7046,1.1364-2.7148,1.3258-3.283,2.2097-1.6415,1.0733-3.3461,0.88388-2.4622-0.1894-2.1466-0.63135-2.6516-0.69448-2.1466,0.63135-1.8309,1.0733-1.7046-0.88388-1.4521-1.0102-1.894-1.1364-1.1364-1.1996-0.25254-1.3258,0.56821-1.4521,2.0203-0.88388,2.2097-1.1996,1.6415-2.7779,1.0102-2.9673,1.1996-1.2627,0.75762-2.4622,1.6415-1.8309,1.9572-1.8309,2.7148-1.5152z\",\"name\":\"Yaroslavl Oblast\"},\"kt\":{\"path\":\"m168.7,245,1.389,0.12627,1.2627-0.75762,1.5152-1.389,1.894-0.75762,1.894,1.1364,1.894,1.5152,2.5254,0.12627,0.63135-0.75761,0.75761,0.50507,1.2627,2.1466,2.2728,2.2728,1.5152,1.5152,1.1364,1.894,0.3788,2.2728,1.2627,1.7678,1.5152,1.6415,2.5254,1.389,1.7678,1.5152,1.7678,1.894,2.0203,0.88388,1.894,0.12627,2.0203-2.0203,1.6415-0.3788,0.63135,1.894,1.1364,1.0102-0.12627,1.6415-1.6415,1.5152-0.12627,1.894-0.3788,2.5254s-1.7678,0.75761-2.3991,0.75761c-0.63134,0-6.3134-0.12626-6.3134-0.12626l-3.1567,0.12626-1.1364,1.1364-1.2627,0.50507-2.0203-0.75761-1.5152-0.75762-2.0203-0.3788-1.0102-1.5152-0.88388-1.6415-0.75762-0.63135-1.1364-0.12627-0.88388,0.50508-2.1466,0.75762-3.283-0.25254-1.7678-0.50508-2.0203-1.2627-0.50508-0.50508,0.25254-0.63134v-1.1364l-1.389-1.2627-0.88389-0.50508-0.63134,0.37881-0.38556,0.10695-0.53571-0.35714,0.0893-0.89286,0.71429-0.625,0.0893-0.98214-0.89285-0.71429-1.7857-1.0714-0.98214-0.98215-0.26786-0.98214-0.71428-0.89286h-0.98215l-0.89285,0.625-0.625,0.0893-1.25-0.71429-1.4286-0.80357-1.3393-1.25-1.7857-1.3393-0.69-0.57,1.07-0.71,2.05-0.54,2.3214-0.71428,2.8571-2.0536,3.3036-1.6964z\",\"name\":\"Kostroma Oblast\"},\"le\":{\"path\":\"m123.49,177.57,1.7678-1.6415,1.5152,0,2.2728-1.894,2.5254-0.50507,2.2728,0.63134,2.9042,2.1466,2.7779,1.5152,0.75761,2.5254,0.12627,1.389,1.0102,1.1364,1.1364-0.37881,0.75761-2.0203-0.12627-2.3991-0.88388-1.6415-0.88388-1.894,0.12626-2.0203,1.1364-1.2627-0.25254-1.894-0.75762-1.0102,0-0.37881,1.2627-0.25254,3.283,0.25254,3.5355,1.2627,2.2728,0.12627,1.894,0.12627,1.2627,1.1364,0.63135,1.2627,0,1.7678-0.37881,1.6415-0.25254,2.1466-0.63134,1.7678-2.1466,1.2627-0.75761,1.0102-1.0102,1.894-1.0102,1.1364-1.7678,1.1364-0.63135,1.2627,0.25254,1.1364,1.389,0.75762,2.1466,0.25253,1.0102,0.88389,0.25254,1.6415,1.0102,0.75762,2.1466,0.12627,1.1364-0.50508,3.4093-0.25254,1.7678-0.63134,2.0203-0.25254,1.5152,0.75761,1.0102,1.6415,1.1364-1.2627,1.389-1.7678,0.75762,0.88388,0.50507,2.0203,0.63135,2.2728,2.1466,0.50507,1.2627,0.75762,1.1364,1.0102,0.12626,1.2627,0.12627,1.6415-0.12627,1.7678-1.2627,0.75761-2.2728-0.25254-1.389-0.88388-1.389-0.25254-0.75761,0.88388-1.5152,1.0102-3.0305,0-1.5152,0.3788-2.7779,3.0305-1.0102,1.389-0.37881,2.1466-1.6415,1.0102-1.1364,0.12627-0.3788,1.2627-1.2627,0.63134-0.63135-1.0102-1.1364-1.1364-2.2728-0.12627-0.75761,0-1.1364-3.0305,0-2.9042-1.0102-1.5152-0.88389-1.894-0.12627-1.6415-2.2728-0.88388-0.88388-0.63135s-0.37881-1.0102-0.37881-1.5152c0-0.50507-0.25254-3.4093-0.25254-3.4093l-0.75761-1.1364-2.3991-0.25254-1.389,0.75761-0.75762-0.50507-0.12627-1.2627-0.63134-0.88389-1.0102,0.63135-2.1466,0.3788-2.7779-0.88388-1.5152-0.88388-3.283-0.37881-1.2627-0.88388-1.0102-0.75762,0.63135-1.2627,0.88388-2.1466,0.88388-1.389,0.12627-1.2627z\",\"name\":\"Leningrad Oblast\"},\"ki\":{\"path\":\"m207.59,265.33,1.2627-0.88388,0.12627-2.0203,0-2.0203-1.0102-1.389-0.12627-1.6415,1.5152-0.37881,3.9143,0.25254,2.5254-0.88388,2.6516-1.1364,0.63134-1.389,1.1364-0.63134,2.7779,0.25254,1.389,1.7678,0.12627,2.7779-0.63134,3.0305-1.0102,1.389-0.75761,2.7779-1.894,0.75762-2.0203,0.12626-1.6415,1.7678-0.63134,1.6415-1.0102,0.63134-0.75761,0.88389,0.75761,1.389,1.6415,0.88388,1.0102,1.389-1.6415,1.894,0.12626,1.894,1.1364,0.88389,1.2627,0.50507,0.88388-1.389,0.88388-1.894,2.7779,0,3.1567,0.3788,4.2932,1.2627,1.7678,2.2728,2.1466-0.12627,2.1466-1.6415,1.6415,0.37881,1.2627,1.0102,0.75762,1.894s1.0102,1.5152,1.389,1.7678c0.3788,0.25254,2.5254,1.894,2.5254,1.894l0.25254,1.5152-0.88389,2.0203-2.0203,1.1364-3.5355,0.25253-1.2627,0.63135-1.2627,1.5152-0.25254,1.389,1.0102,1.389,0.12627,1.1364-1.5152,1.1364-0.75762,1.389-0.12627,2.1466-1.2627,1.0102-2.7779,0.12627-1.1364-1.2627-1.0102-2.5254-2.0203-0.12627-1.389-0.3788v-1.894l-2.0203-1.1364-3.1567,0.75761-1.7678,1.389s-1.2627,1.0102-1.2627,1.5152c0,0.50508-0.3788,2.2728-0.50507,2.7779-0.12627,0.50508-1.6415,1.5152-1.6415,1.5152l-2.5254,1.1364-1.894-0.50507-1.2627-1.389-1.5152,0.25253s-0.75761,0.50508-1.0102,1.389c-0.25254,0.88389-0.12627,2.7779-0.12627,2.7779l0.12627,1.894-2.0203,0.63135-3.4093,0.3788-0.25254,1.1364v1.389l-0.3788,1.389-1.7678,0.88389h-0.63135l-0.63134-1.5152-0.50508-0.37881,0.12627-2.5254,0.25254-2.5254,0.50508-1.5152-0.88389-1.6415-0.25254-1.2627,0.75762-2.9042,0.63134-2.5254-1.0102-1.5152-1.6415-2.5254-2.1466-1.5152-0.88388-0.63134-3.9144-0.12627-1.7678-1.2627-1.6415-1.5152-1.6415-1.5152-0.50507-0.50508,0.50507-1.0102,1.2627-1.6415,0.25254-1.0102,1.1364-0.75761,1.5152,0.50507,1.894,1.389,1.389-0.75761,2.1466-0.63135,1.389-1.2627v-1.5152l-1.2627-1.894-0.63135-1.5152s-0.78918-1.1049-0.85231-1.2627c-0.0631-0.15784,0.56821-0.69448,0.56821-0.69448l0.97858-0.63135,0.75762-0.75761s2.2728-0.0316,2.8095-0.0316c0.53664,0,3.1567,0.0631,3.8828,0.0631,0.72605,0,3.7881-0.44194,3.7881-0.44194l1.4521-0.59978s0.12626-1.5784,0.15783-1.7993c0.0316-0.22097,0.47351-2.4938,0.47351-2.4938l2.0203-2.3991z\",\"name\":\"Kirov Oblast\"},\"bs\":{\"path\":\"m211.5,329.86,2.3991-1.6415,2.5254-1.6415,1.5152-0.25254,1.894,2.6516,2.2728,2.2728,2.9042,0,2.6516,2.5254,1.7678,2.5254,1.1364,1.7678,1.7678,0,1.2627,2.1466,2.6517,2.3991,2.2728,1.6415,2.0203,1.7678,1.2627,1.1364,0.88389,1.389-0.37881,1.1364-1.6415,0.63134-0.88388,1.2627,0.25254,1.389,1.389,0.63135-0.63135,1.2627-1.5152,0.50508-1.2627-0.75762-2.3991,0.37881,0,1.0102-1.5152-0.25254-0.50508-0.88388-1.5152-1.0102-4.5457,0-1.1364-0.37881,0-1.2627,1.7678-1.2627,0.12627-1.389-1.0102-0.88389-1.6415-1.1364-2.5254,0.25254-1.0102,2.1466-1.7678,2.6516-0.88388,2.0203,0.50508,3.0305,1.894,1.0102,2.0203-0.75761,1.6415,0.75761,1.0102,2.0203,2.5254,0.12627,2.0203,0.75761,2.7779,0,1.7678-0.50508,1.5152,1.1364-0.63135,1.389-1.894,1.5152-1.2627,1.1364-1.0102,1.389-1.2627,0-1.2627-0.63134-2.1466-0.75762-1.6415-0.3788-1.6415,1.2627-0.3788,1.5152-0.63135,1.389-2.3991,2.6516-1.6415,2.3991-3.9143,3.6618-1.894,1.5152-0.25254,2.0203-0.63134,1.5152-2.9042-0.25254-1.6415,1.7678-1.2627,1.389-0.50507,0.63135-2.0203,0-1.1364-2.0203-0.50508-0.63134-5.4296-0.63135-1.389-2.1466-2.7779,0.88388-1.2627-0.12627,0-0.50507,3.4093-4.4194,0-1.6415-0.88389-0.63134,0-1.1364,1.7678-1.1364,1.0102-1.389,0-2.0203-0.25253-0.50508-1.894-0.12627-2.2728,1.2627-1.7678-1.1364-1.1364-2.3991,1.2627-2.3991,1.0102-1.894-0.25254-2.5254,0-0.75761,0.88389-1.5152,0-3.1567-2.5254-2.9042-0.12627-2.0203,1.0102-2.6516,2.0203-4.1669,2.9042-2.1466,3.9143-3.1567,1.0102-2.1466-0.88389-1.389-0.12627-0.12627,0-0.75761,1.389-0.25254,2.3991,0.75762,1.389,0.12626,1.7678-0.63134,2.6516-0.25254,1.7678-0.12627,0.88388-0.63134,0-1.7678z\",\"name\":\"Republic of Bashkortostan\"},\"cl\":{\"path\":\"m242.18,347.66,1.7678-0.88388,2.7779,0.50507,2.3991,2.1466,2.3991,1.7678,3.0305,1.894,2.9042,0,1.5152,1.6415,1.6415,2.3991,0.75761,1.894-0.63135,3.1567,0,2.7779-0.88388,1.389-1.7678,0.63135-1.6415,1.1364-0.75762,1.2627-2.0203,0.63135-1.894,1.5152,0,1.1364,1.5152,1.5152,2.0203,2.0203,1.1364,2.3991-0.37881,2.7779-0.75762,1.7678-2.3991-0.63135-2.6516-0.50507-3.283-0.37881-2.0203-0.50508-1.5152-1.7678-2.0203-1.7678-1.1364-1.1364-1.1364,0.50508-1.5152,1.1364-0.88388,1.0102,0,1.894,1.6415,1.2627-0.37881,0.75761-2.2728,0.63135v1.0102c0,0.50508,0.75761,2.0203,0.75761,2.0203l2.0203,1.7678,0.12627,1.894-1.5152,0.63134-1.5152-1.5152-1.389-1.2627-2.2728-0.63134-3.283,0.12627-1.5152,0.25253-0.63134,1.2627,1.0102,1.389-0.37881,1.894-1.0102,1.6415-4.5457,0.25254-1.6415-0.88389-1.6415-0.63134,0.50507-2.0203,1.6415-0.88388-0.75761-1.7678-2.0203-2.3991-1.6415-1.0102-1.894,0.12627-1.389-0.63135,0.63134-2.7779,1.7678-2.6516,4.4194-4.1669,3.7881-4.672,1.2627-2.9042,1.389-0.88389,2.5254,0.25254,2.0203,1.0102h2.0203l1.894-2.2728,2.2728-1.894,0.50508-1.389-1.5152-1.2627-2.1466,0.50507h-3.0304l-2.7779-0.88388h-1.5152l-0.88388-1.894-1.389-0.50507-1.7678,0.63134-1.0102-0.37881-0.88389-0.63134-0.63134-1.894-0.12627-1.6415,3.6618-5.6821,0.75762-0.63135,1.7678,0.37881,1.7678,0.88388,0.63134,1.1364-0.3788,0.75762-1.2627,1.1364v1.1364l-0.12627,0.12627,0.75761,0.63135,2.6516,0.12627h2.2728l1.5152,1.0102,1.2627,1.1364,1.1364-0.63135,0.50507-0.75761,2.0203,0.12627,1.7678,0.37881,1.1364-1.2627-0.37881-1.0102-0.75761-0.88388,0.25253-1.5152,1.5152-1.0102,0.63135-1.1364z\",\"name\":\"Chelyabinsk Oblast\"},\"ud\":{\"path\":\"m231.7,302.33-0.12627,1.389-2.0203,2.7779-1.5152,1.389,0.12626,1.389-1.6415,1.0102-1.1364,1.5152-1.5152,2.3991-0.50508,1.894-0.50508,3.1567-2.0203,1.0102-2.2728,0.12627-0.63135,1.1364-0.37881,3.0304-0.12627,1.389-3.0304,2.0203-2.2728,1.389-1.0102,0-1.2627-1.5152-1.7678-0.75762-0.63134-1.2627,1.389-1.1364,2.0203-0.75761,0.50508-1.1364-0.37881-0.50508-1.5152-0.88388,0.25254-0.88389,2.7779-1.7678,1.0102-1.1364-0.50507-1.0102-0.75762-0.63134-2.0203,0.63134-1.1364,1.389-1.5152,0.63135-1.0102,0.25253-0.3788,1.5152-0.63135,0.75762-0.88388,0.25254-0.75762-1.0102-1.389-1.2627-0.75761,0.37881-1.2627,0.37881-0.88388-0.88389-0.63135-1.1364-1.0102-1.0102-0.63135-1.0102,0-1.1364,1.6415-0.88389,1.1364-1.1364,0.25254-2.0203,0.25254-1.0102,3.1567-0.50507,1.6415-0.50508,0.37881-4.4194s0-1.2627,0.63135-1.5152c0.63134-0.25253,1.2627-0.3788,1.2627-0.3788l1.2627,0.63134s1.6415,1.894,2.3991,1.389c0.75761-0.50507,1.894-0.88388,1.894-0.88388s2.3991-1.0102,2.2728-1.6415c-0.12627-0.63134,0.25254-1.6415,0.25254-1.6415l0.3788-1.389,2.1466-2.2728,1.2627-0.75761,2.2728-0.50508,1.6415,0.37881,0.88388,1.1364v0.75761l0.25254,0.63135,1.0102,0.12627,1.6415,0.3788,0.63135,0.50508,0.63134,1.6415,0.75762,0.75761z\",\"name\":\"Udmurt Republic\"},\"pe\":{\"path\":\"M242.06,274.03l-2.28,1.16,0.5,1.5-0.5,3.53,0.5,1.28,1.41,2.41,2.25,1.62,0.65,1.66-1.4,2.12-2.41,1.03-2.87,0.63-1.66,0.87-1.13,1.54,0.5,1.24,0.63,1.38-0.13,1.03-1.9,1.63-0.38,2.4-0.87,1.6-0.13-0.19-1,0.12-1.28,2.5-2,2.29-0.15,1.53-0.88,0.87-2,2.03-1.91,3.41-0.62,3.9-1.28,0.88-2.25,0.38-1.28,0.78-0.63,4.9,2.53,2.66,2.13,2.28,2.53,0.25,2.28,1.5,3.41,4.94,1,0.37,1.28-0.12,1.12-1.25,0.88-1.28,1.03-1.75,1.25-1.66,1.28,0.88,1.5,1.28h2.41l2.03-0.91,0.5-1.75,0.25-1.91,0.87-0.75,0.88-1,0.78-0.5,2.5,2.75h3.69l0.87-1,0.5-1.5,0.25-1.65,0.88-1.25,4.69-0.38,2.15-0.78,0.63-1.5-0.63-0.62-0.12-1.41,1.12-1.38,0.75-1.03v-1.37l-0.5-0.88-0.62-1.03,0.25-1.75,1-1.53,2.03-1.5,3.15-0.5,1.88-1.91,2.28-1.62,2.28-1.66,2.28-1.65,0.88-0.75,0.5-1.25,1-1.78s0.9-1.12,1.53-1.75c0.63-0.64,1.62-1.91,1.62-1.91l1.16-1.37,0.25-1.66-2.41-0.38-2.65-0.75-2.66-1.65-2.75-1.38-2.66-1.28-2.53,0.66-3.15,0.12-3.66-0.9-2.9-1.63-1.63,0.85-0.41-0.22-1.9-1.25-1.38-2.03-1.12-1.13-2.28-0.78-0.13-1.63-1.12-1.28-1.41-1.5-1.91-0.5-2.62-0.25-2.41-0.78z\",\"name\":\"Perm Krai\"},\"sv\":{\"path\":\"m286.13,291.72,1.7678-1.1364,1.1364,1.389,0.88388,2.3991,2.6516,1.5152,2.9042,2.1466,1.2627,2.3991,2.2728,2.7779,0.12627,1.7678,0.63135,2.0203,0.75761,1.5152-0.63134,1.7678-1.894,1.894-0.63135,1.7678-0.25253,4.7982,0.3788,2.7779,0.63135,1.0102-1.0102,2.9042-1.5152,1.7678-0.37881,2.3991,2.0203,1.2627,2.3991,2.0203,0.75761,2.0203,0.12627,2.6516-0.63134,1.6415,0,2.9042,0.75761,2.3991-0.25254,1.894s-0.88388,0.88388-0.88388,1.389c0,0.50508-0.50508,2.7779-0.50508,2.7779l-1.2627,1.2627-2.0203,0.12627-1.1364,0.88388h-3.0304l-1.5152-0.88388-2.1466,0.25254-1.389,1.1364-0.88388,1.389-0.25254,2.9042-0.75761,1.1364-1.1364,1.0102-1.7678,0.50508-3.0305,0.25254-2.0203,0.25254-1.0102,0.88388-1.894-0.37881-1.389-1.1364-1.894-1.894-2.5254-1.6415-1.5152-0.63135-2.2728,0.37881-1.894,0.3788-1.389-0.12626-1.6415-1.389-1.894-2.2728h-2.2728c-0.50508,0-1.6415-0.75761-1.6415-0.75761l-4.672-3.1567-1.6415-1.7678-2.9042-0.3788-1.389,0.12627-0.88389,0.12627-1.2627-1.2627-3.9143-3.283-3.1567-3.0305-0.50507-1.389,2.0203-2.9042,1.389-2.7779,0.75762-0.25253,1.6415,1.1364,1.1364,0.75761h2.7779l1.5152-1.389,0.50507-1.7678,0.12627-1.7678,2.5254-1.7678,1.7678,2.0203,1.2627,0.63134h2.3991l1.6415-1.1364,0.75761-2.0203,0.50508-1.894,3.7881-0.75762,2.5254-0.3788,1.389-1.2627v-1.0102l-0.88388-1.389,1.7678-2.1466,0.25254-1.1364v-1.389l-1.0102-1.6415,1.0102-2.5254,2.1466-1.6415,3.283-0.88388,1.1364-0.75762,8.0812-6.1872,0.88388-1.6415,1.6415-2.7779,2.1466-2.5254z\",\"name\":\"Sverdlovsk Oblast\"},\"ku\":{\"path\":\"m255.69,383.01,2.3991,1.894,3.283,0.88388,4.2932,1.2627,3.1567,0.75762,4.1669-0.50508,2.5254,0.25254,2.9042,1.0102,3.5355,1.1364,3.5355,0.88388,3.283,1.0102,3.4093-0.12627,2.3991-1.2627,3.6618,0,1.0102-1.5152,0-1.894-1.5152-2.1466-1.389-2.7779s-1.5152-0.12627-2.1466-0.37881c-0.63135-0.25254-2.2728-1.6415-2.2728-1.6415l-0.75761-3.1567-1.389-1.7678-2.6516-1.2627-1.5152-1.6415-1.2627-2.2728-1.6415-1.5152-1.389-1.2627-1.0102-1.389,0.50508-2.3991,1.389-1.2627,1.1364-1.894-2.5254,0.37881-3.0305,0.12627-1.389,0.50507-0.75762,0.50508-1.2627-0.37881-2.0203-1.0102-1.7678-1.7678-2.0203-1.389-1.7678-0.75761h-1.2627l-3.0305,0.63134-1.7678-0.12627v1.1364l0.63135,0.88388-0.50508,2.2728v2.2728l-0.25253,2.1466-0.88389,1.1364-2.5254,1.1364-1.389,1.1364-1.5152,1.2627-1.7678,0.88388-0.50507,1.2627,0.63134,1.1364,1.894,1.894,1.389,1.389,0.63134,1.7678v1.894l-0.50507,1.7678z\",\"name\":\"Kurgan Oblast\"},\"ko\":{\"path\":\"m224.63,259.27,2.1466-0.63134,0.63134-0.88388,1.894,0.12627,1.6415,1.894,2.1466,0.25254,2.1466-0.50508,1.5152-1.894,0.50508-1.5152-0.63135-0.88389,0.63135-1.5152,2.1466-1.2627,4.5457-1.894,2.6516-1.1364,0.25254-1.5152-0.50508-2.5254-2.1466-0.88389-3.283,0.12627-2.3991,1.6415-2.3991-0.75761s-0.50508-1.0102-1.2627-1.0102-1.5152-0.25253-1.5152-0.25253l0.50507-3.0305,1.7678-0.37881,1.389-1.5152,0.50508-1.894,2.1466-0.50508,2.2728,0.12627,0.63135-1.7678-0.63135-0.63134-0.63134-2.1466,0.63134-1.389,4.5457-2.0203v-1.2627l-1.0102-2.5254-0.63135-1.6415-1.6415-1.7678-0.63134-1.1364,0.25254-1.6415,1.2627-0.63134,1.7678,0.75761,1.5152,2.1466,1.6415,1.5152,2.2728,1.894,2.6516,1.2627,1.7678,1.1364,0.50508,1.7678,1.5152,1.5152,3.1567,0.3788,1.894,1.2627,2.9042,0.50507,0.88388,1.2627h2.0203l1.0102-0.63134-0.25254-1.5152-0.75761-1.5152,0.50507-1.0102,0.88389-1.5152s0.25253-1.1364-0.12627-1.6415c-0.37881-0.50508-1.1364-1.1364-1.1364-1.1364v-0.88388l2.7779-3.283,3.1567-2.1466,1.894-2.0203,1.0102-0.88388,2.3991,0.63134,3.4093,0.12627,2.5254,0.75762,4.2932,0.50507,2.1466,0.63135,3.283,0.12627,2.3991-0.50508,1.5152,0.12627,0.12627,1.894,1.2627,1.0102,2.1466,2.1466,5.3033,4.672,7.4499,4.672,6.4397,3.7881,5.177,3.0305,5.5558,3.283,2.7779,1.894,2.2728,0.25254h3.283l2.1466-1.0102,2.5254-2.3991,1.6415-1.2627,2.7779,0.25253,2.3991-0.12626,2.0203-0.63135,1.5152-0.88388,1.6415-0.37881,3.1567,0.12627,1.6415,0.25254-0.50508,1.5152-0.88388,1.1364-1.1364,0.63134-0.50508,1.894,1.2627,1.7678,1.2627,1.389,0.12627,1.894-1.1364,1.389-0.88388,0.25254-0.75762,1.389-2.0203,0.25254-2.3991-0.12627-2.1466,0.88388-2.5254,1.389-1.389,1.1364-3.0305-0.12627-2.1466-0.50507h-3.1567-2.0203l-1.0102,0.3788-1.389,1.5152-0.75762,0.88389-2.1466,1.6415-1.5152,0.50508h-2.3991l-2.3991-0.25254-1.5152,0.50508-2.9042,2.0203-2.2728,1.2627-1.5152,1.0102-1.5152,0.3788-1.2627-0.12626-1.2627-1.0102-0.12626-1.894-0.63135-1.389-1.6415,0.88388-1.5152,1.389-1.0102,1.2627-0.88388,0.50508-1.2627,0.50507-0.75762,0.37881-0.12627,1.7678-0.3788,1.7678-0.63135,1.389-0.88388,1.1364-1.0102,1.6415-1.894,1.6415-1.6415,1.389-1.2627,0.75762-2.7779,3.283-1.894,2.6516-1.1364,3.0305-0.50507,1.6415-1.5152,1.6415-2.0203,0.88388-1.5152,0.63134-1.7678,1.0102h-2.2728l-3.1567-1.0102-3.1567-1.6415-4.4194-2.1466-0.75761-0.3788-2.5254,0.50507h-3.283l-3.0305-0.88388-2.9042-1.389-1.0102,0.25254-1.6415-0.12627-1.5152-1.2627-2.2728-2.3991-1.894-0.88388-0.63135-1.5152-2.2728-3.0305-5.8084-1.1364-1.389-0.63134-1.7678,0.63134-0.75761,0.75762v0.75761l0.37881,0.88389v1.6415,1.0102l-0.50508,0.3788-1.389-0.63134-0.88388-0.37881-1.1364,0.25254-1.5152,0.88388-1.5152,0.50508-1.1364-0.25254-0.88389-1.389-0.88388-0.63135-2.2728-0.88388-6.0609-1.1364-1.2627,0.25254-1.1364,1.1364-0.63135,1.5152-1.1364,0.37881-1.6415-1.389v-1.1364l1.0102-1.389,0.50507-0.75761-0.50507-1.0102-1.1364-1.0102-1.1364-1.0102-0.3788-0.75761,1.5152-1.2627,1.1364-2.5254,1.6415-1.0102,1.6415-0.3788,1.894-1.2627,0.88388-2.3991,1.2627-1.2627z\",\"name\":\"Komi Republic\"},\"mu\":{\"path\":\"m217.31,136.92,1.1364-1.5152,1.5152-0.75761,2.9042,0,4.2932,0.12626,2.1466-0.50507,2.5254-1.6415,0.88388-2.0203,0.12627-3.5355,1.5152-3.4093,1.0102-1.0102,4.7982,0,2.3991-0.63134,1.0102-1.2627,1.7678-0.12627,2.3991,1.0102,3.0305,1.894,2.2728,1.894,2.6516,0,2.2728-0.25253,0.25254,2.3991,1.894,0.3788,1.7678,1.0102,0,2.2728,0,1.7678-1.0102,0.63134-1.5152-0.3788-0.75761-1.1364-0.25254-0.63134-0.88388,1.0102-0.25254,0.63135,0.50508,1.1364,1.1364,0.88388,0.50507,0.75762-0.3788,1.0102-1.0102,0.63134,0,0.75762,1.1364,1.2627,0.88388,1.5152,0.88388,1.7678,2.0203,2.1466,0.75761,1.7678,0,1.7678,0,1.1364-0.50507,1.1364-0.25254,2.0203-0.12627,5.5558,0,5.5558-0.75762,1.389-0.25253,1.894,0.63134,0.88389,0.63135,1.0102-0.12627,4.0406,0,3.5355-0.63135,1.389-1.7678,1.1364-0.88389,0.88388,0,1.0102-0.25254,0.88389-1.1364,0.88388-2.7779,0.75761-3.6618,0.12627-3.1567,0.50508-1.6415,0.37881-2.5254-0.50508-2.0203-0.75761-1.894-1.389-1.894-2.2728-1.7678-2.2728-1.1364-1.894-0.63135-2.2728-0.3788-2.3991-1.2627-2.6516-1.1364-2.0203-0.3788-1.6415-0.37881-3.9143,0-1.7678,0-1.389-0.88388-0.88389-0.12627-2.9042,0-2.1466,0.75761-1.5152,0.12627-1.1364,0-1.5152-0.88388,0-0.63135,0.88388-0.88388,1.389-0.75762,1.894-0.25253,0.63135-3.5355,0-2.6516-0.25254-0.75761-1.5152,1.389-2.0203,1.1364-0.75761,0.25254-1.0102-1.7678-2.2728-1.5152-1.7678-1.2627-2.7779-1.2627-1.2627z\",\"name\":\"Murmansk Oblast\"},\"kl\":{\"path\":\"M216.94,136.91l-2.28,1.53,0.12,1.62-1,2.28-1.9,2.04-1.88,0.87-4.31-0.13-0.88,1-2.28,2.16h-2.91l-2.4,0.38-0.13,4.03-0.62,1.9-2.91,0.38-1.87,0.25,0.12,1.4,0.88,1.5-1.78,1.29-1.25,0.5-3.41-0.91-1.66,1.16-0.37,2.9-0.13,4.16-1.25,2.28-2.65,1.62-3.41,1.16-8.72-0.12-3.53-0.91-5.19-0.75-4.28-0.75,0.88,1.87-0.13,1.54,0.07,0.53-0.94,5.65-2.53,1.5-2.03,3.32-2.91,1.87-0.13,1.66,2.66,1.25,1.91,0.75,1,2.4,2.9,0.25,5.07-0.75,1.65-0.9,2.25,0.53,1.78,1.37,1.38-1.62,1.12-0.78,1.78,4.69,1.5,0.62,2.91,1.53,0.06,0.69-0.12,2.69,0.06,1.78-1.63,1.53,1,1.12,2.29,0.5,1.75-0.62,2.53-1,0.62-0.5,1.91,1.5,1,1.9,1.03,1.88,3.16,0.25,3.28-3.03,0.75-1.5,1.25-1.38,2.4-1.28,2.03-1.75,0.5-1.15-0.37-1.25-1.91-0.63-1-1.03,0.13-1.63,1.37-2.4,1.78-1.91,1.66-1.87,1.25-2.16,1.38,0.25,1.78,1.53h1.9l0.88-0.53,0.12-2,1.5-2.03,0.25-1.75-0.25-3.16-0.5-1.53,0.63-1.78,1.4-0.87,1.38-0.63,3.03-2.53,0.5-1.13,0.53-1.28h1.38l3.4-0.62,2.16-1,1.5-1.28v-1.88-3.4l0.25-2.54,1.03-0.87v-1.16l-0.12-2-0.78-1.15-2-0.38-1.41-0.37-0.63-0.88v-0.75l0.63-1.15,1.28-1,0.75-0.63-0.38-1.03-1.65-2.37-1.88-2.29-1.4-2.15-1.75-2.53z\",\"name\":\"Republic of Karelia\"},\"vo\":{\"path\":\"m185.36,208.76c0.12627,2.5254-1.389,5.0508-1.389,5.0508l-1.5152,1.894s-0.3788,1.0102-0.3788,1.7678c0,0.75762,0.12626,1.389,0.12626,1.389s0.63135,1.389,1.894,2.1466c1.2627,0.75761,2.0203,2.7779,2.0203,2.7779l1.0102,1.894,1.5152,1.2627,1.2627,1.0102,1.1364,1.894,1.2627,0.37881,3.1567,0.50508,1.5152,2.2728,1.0102,1.894,1.7678,0.63135,0.25254,0.63135,1.0102,2.2728,1.2627,0.75761,2.6516,0.25254,1.5152,0.12627,0.50507,2.7779,1.2627,2.0203,2.7779,1.389,1.389,0.12627,1.0102-0.63134,1.389,0.12627,1.0102,0.50507,0.75761,1.0102-0.63134,1.5152-0.75762,1.389,0.25254,0.75762,1.2627,1.1364,0.75761,0.50508,1.0102,0.50507,0.3788,0.63135v1.0102l-1.5152,1.5152-2.0203,0.63135-2.0203,0.75761-4.2931-0.25254-1.2627,0.88389,0.25253,1.1364,0.88389,1.2627v2.6516,1.1364l-1.0102,1.1364-0.75761-0.63134-1.1364-1.0102-0.37881-1.5152-1.0102-0.12626-1.6415,1.0102-1.0102,1.0102h-1.7678l-3.0305-1.5152-2.1466-2.1466-2.0203-1.1364-1.894-1.6415-2.0203-2.7779v-1.894l-1.894-2.7779-2.5254-2.2728-1.5152-2.0203-1.2627-1.7678-0.63135,0.75761-1.6415,0.12627-1.6415-0.25254-2.2728-1.894-0.88388-0.50508-1.2627,0.63135-2.7779,1.7678-0.63135,0.37881-1.2627,0.12627-0.88388-0.50508-0.50508-1.2627-0.63134-1.894,0.25254-4.0406-0.50508-2.5254-0.50508-1.2627-1.2627,0.12627-1.2627,0.37881-0.88388-0.25254-1.389-1.2627-1.6415-1.7678-4.0406-1.0102-1.2627-1.1364-0.50508-1.0102,0.63135-2.0203-0.50508-0.88388-1.0102-0.75761-1.1364-0.63135-1.894-0.37881-0.25254-0.12627,0.50508-2.7779-0.50508-1.6415-0.63134-1.2627-0.88388-0.88389-0.37881-0.50507-0.12627-1.0102-0.25254-1.5152,0.63135-0.88388,0.75761-0.88388,1.389-0.25254h1.6415l0.88388,1.2627,1.0102,0.88388,1.1364-0.50507,0.25253-1.1364,1.2627-0.25254,1.1364-0.63135,0.75761-1.1364,0.12627-1.5152,3.283-3.6618,1.2627-0.88388h1.7678l2.0203-0.37881,1.389-0.75762,0.88388-0.63134h1.1364l1.5152,0.88388h1.2627l0.88389,0.75762,0.50507,0.88388,1.389,0.63134h1.1364l1.389-0.3788,1.5152-0.50508,1.1364-0.37881,0.63135-0.25253,0.88388,0.12627,1.0102,0.88388,1.2627,1.6415,0.50507,1.2627z\",\"name\":\"Vologda Oblast\"},\"ar\":{\"path\":\"M391.06,151.03l-3.56,1.06-2.16,0.91-3.56,0.19-1.59,0.87s-1.26-1.07-1.97-1.25c-0.72-0.18-0.91,1.1-0.91,1.1l-1.78,2.65-2.69,1.63-3.03,0.87-2.31,1.78s-2.15,0.37-3.22,0.72c-1.07,0.36-2.5,0.19-2.5,0.19l-1.59,0.72,1.06,1.78-2.16,1.25,0.38,0.72,1.25,1.44,1.78,1.59,1.78,1.78,0.91,1.63,1.4-0.72,0.91-1.97,2.16-0.72,1.25-0.53,1.93-0.19,0.91-1.59h1.97l1.25,0.87,1.59-1.25,1.1-1.25,2.65-0.15,0.72-0.57,3.41,0.72,1.78-1.06,0.34-1.44,2.69-0.34s1.07-0.01,2.5-1.44l0.72,1.06,2.84-0.68s1.98-0.19,2.69-0.19,3.03-0.38,3.03-0.38h2.31l2.35,1.25,1.78,0.91,1.25-0.72,0.72-0.87,4.28,1.06,1.97-1.44,3.22,0.19,4.09-0.72,1.25-1.59,1.97-2.88s-1.26-0.89-1.97-1.25-2.69-1.44-2.69-1.44l-3.22,0.57-4.43,1.59-4.32-0.91-2.5-0.15-3.18-0.72-1.63-0.91-1.59-1.78-1.44,0.72-1.97,1.06-2.5-0.15-3.22-0.91-2.5-0.72zm-35.53,14.47l-2.5,0.53-1.78,1.63-2.5-0.38s-1.44-1.06-1.44-0.34v1.78l0.72,1.59-2.12,1.25-2.88,1.1-1.06,1.25h-2.16l-0.72-1.1-1.59-0.87-2.69,2.12-0.15,3.03,1.93,2.69,1.44,2.16s1.26,2.14,0.91,3.03c-0.36,0.89-4.28,2.5-4.28,2.5l1.06,2.5,1.25,1.59v1.97l2.31,0.53,2.88,1.97,2.12,2.31,1.97,0.38s1.06-1.07,1.06-1.78c0-0.72-0.15-4.48-0.15-5.38,0-0.89,1.59-8.37,1.59-8.37l0.34-1.44,4.13-2.69s0.88-1.07,2.31-1.97c1.43-0.89,4.66-3.03,4.66-3.03l1.78-1.4s0.71-1.64,0-1.82c-0.72-0.17-1.62-0.53-2.16-1.25-0.53-0.71-3.03-2.65-3.03-2.65l-1.25-1.44zm-132.28,14.34l-0.63,0.63-2.28,0.25-0.87-0.13-1.78,0.91v1.38l-0.63,1.65-1.15,0.75-0.13,1.38,0.91,0.78,0.87,0.87-0.12,1.25-1.25,1.28-1.66,1.5-1.65,0.13-1.38-1-0.62-1.53-1.41-2-1.25-1.03-2.03,0.53h-1l-2.41-1.66-1,0.38-1.66,2.15-1.37,2-1.66,1.78-1.25,2.66,0.38,1,1,1.28,1.78,0.25,0.12,1-0.12,1-2.78,2.41-2.16,0.87-1.87,3.03-2.53,2.53-2.91,0.5-1.13,0.13-0.5,0.91-0.28,1.87-0.87,2.16-1.75,2.03-0.13,1.87,1.25,2.79,1.5,1.28,2.04,3.53,3.78,4.15,1.28,0.75,3.15,0.38,0.38,0.65,1.37,1.38,1.66,2.53,1.38,0.5,0.5,1.66,0.9,1.5,3.28,0.5,1.63,0.25,0.78,1.4,0.37,2.13,0.75,1.15,2.41,0.88,1.5,0.75,1.28-0.5,1.13-0.25,1.37,0.75,0.91,1.66-1.03,1.25-0.13,1.53,0.66,1,1.25,0.75,1,1.03,1.03,0.62,0.75-0.37,1.25-0.25,1.41,0.5,1,1.37,0.5,0.91,0.24,2,0.26,1.03h0.65l0.88-0.16,0.87-0.5,0.63-0.37h1.03l0.75,0.75,0.62,0.91,0.88,0.25,1.4,0.25,1.88-0.5,1.41-0.5,1.37-1.79v-0.87l-0.37-0.66-0.26-0.5,0.26-1,0.5-0.5,2.78-1.28,2.4-1,1.66-1.12,1.87-0.78,0.5-0.75,0.13-1.38-0.75-1.53-1.13-0.87-2.15-0.13h-1.5l-1.53,0.5-1,0.75h-1.28l-0.63-0.12-1-1.13-1.53-0.37-0.75-0.38,0.25-1.53v-1.13l1.66-0.5,0.74-0.78,0.76-0.87,0.62-1.63,0.53-0.37,1.5-0.53,1.78,0.25,1-0.5-0.12-1.38-0.5-0.87-0.5-1.66,0.25-0.88,0.87-0.62,1-0.53,1.41-0.63,1.37-0.75,0.38-0.75v-0.5l-0.88-1.9-0.75-1.41-0.9-1.62-1-0.75-0.63-1.28,0.38-1.88,0.62-0.5h1.28l0.88,0.38,1,0.87,1.41,2.16,2.65,2.37,1,0.91s1.65,0.49,2.28,0.75c0.63,0.25,1.38,1,1.38,1l0.5,0.62,0.37,1.03,0.53,1,1,0.63,1.38,0.37h1.41l1.12,0.53,0.88,0.88,2.03,0.5h1.37l0.28,0.88,1,0.53,1,0.25,0.88-0.54,0.78-0.74-0.13-1.26-1.03-1.03,0.38-0.87,0.78-1,0.37-1.53-0.25-1-1.15-0.75-0.13-1.28,0.91-0.88,3.15-3.28,1.88-1.12,1.91-1.79,0.25-1.25-0.63-0.5-1.65-0.9-1.63-1-2.16-0.25-1.25,0.62h-1.4l-1.5-1.12-1.03-1.78-0.75-1.75-1.5-3.16-1.41-2.28-0.75-1.41-0.88-2.25-0.12-1.15-2.41,0.25-0.75-0.63-1.53-1.12s0.25-0.5,0.88-0.5,1.02-0.41,1.53-0.66c0.5-0.25,0.25-0.87,0.25-0.87s-0.37-1-0.88-1.76c-0.5-0.75-0.77-0.77-1.28-1.15-0.5-0.38-0.75-1.75-0.75-1.75l-1.25-0.41-2.03-0.5-1.66,0.13-1.5,0.53-1.9,0.12-0.88-0.65-1.62-1-2.03-0.13h-2.78-2.53l-1.63,0.75-0.91,0.75-0.37,1.66-1.13,1.37-1.12,2.04-1.28,0.87h-2.41c-0.63,0-1.75-1-1.75-1l-1.03-1c-0.51-0.51,0-2.03,0-2.03s0.13-1.53,0-2.16-1.5-1-1.5-1l-2.03-0.87s1.65-0.78,2.16-1.16c0.5-0.38,0.37-1,0.37-1v-2.28c0-0.63-0.25-2-0.25-2l-0.75-1.91zm110.16,1l-0.19,1.1,0.53,1.78,1.44,0.72,0.53-0.72v-1.63l-0.38-1.25h-1.93zm-28.22,6.19l-2.35,0.78-1.4,2.07-2.88,1.43-0.25,1.07,1.78,1.43,2.13,0.97,3.22-0.44,3.5-0.9,0.25-1.6-0.78-1.96-1.1-1.88-2.12-0.97z\",\"name\":\"Arkhangelsk Oblast\"},\"tu\":{\"path\":\"m299.02,389.7,2.0536,0.80357,2.1428,1.1607,1.6072,1.3393,1.6071,1.5179,1.7857,0.71428,2.3214,0.17858,0.89286-1.0714,1.6071-1.875,0.53572-2.3214,0.625-2.1429,2.2321-1.7857,1.875-0.44643,1.25-2.5,1.6964-1.0714,2.9464,0.26786,1.6071-1.6072s0.625-2.3214,0.53571-2.6786c-0.0893-0.35714-0.80357-2.5893-0.80357-2.5893l-0.89285-1.875-0.625-3.3036-0.71429-2.2322v-1.7857l1.5179-1.9643,2.2321-2.5,1.4286-1.4286,3.125-0.26786,0.35714,1.4286-0.89285,1.6071-1.6964,1.6964-0.17857,1.25,2.5,0.35714,4.0178,0.35714,1.9643,1.6072,3.0357,1.7857,1.5179-1.25,2.9464-0.17857,2.1429,1.4286,3.3928,1.0714s2.5-0.98214,2.9464-1.1607c0.44643-0.17857,3.5714-0.44642,3.5714-0.44642l0.89286-0.98215-0.53572-1.0714-1.6964-1.25-2.9464-2.2321-1.0714-1.4286s-1.6964-0.44643-2.3214-0.44643-2.6786-0.80357-2.6786-0.80357l-0.17857-2.6786-0.26786-2.4107-1.3393-1.3393-0.44642-2.2321-0.53572-3.5714-0.35714-0.89286-2.4107-2.7679-1.1607-0.71428s-2.6786-0.26786-2.9464-0.26786h-5.0893l-0.98215-0.26786s-0.625-1.5178-0.625-1.875c0-0.35714-0.98214-1.5178-0.98214-1.5178l-1.875-0.35715-1.25,1.25-2.4107,1.875-2.1429,0.89286h-3.0357l-4.6428,0.0893-2.9464,0.26785s-1.4286,0.53572-1.7857,0.625c-0.35714,0.0893-4.375,0.0893-4.375,0.0893l-3.0357-0.0893-1.4286,0.35715-0.89286,1.5178-0.53571,2.3214-0.89286,1.3393-2.3214,0.71428-1.6071,0.53572-1.5179,0.35714-1.7857-0.17857-1.3393-0.625-1.4286,0.17857c-0.35714,0.17857-1.6964,1.0714-1.6964,1.0714l-1.1607,2.1429-0.35715,2.4107-1.6071,2.3214-2.1429,2.5893-0.98214,1.5179,0.26786,1.25,0.71428,1.3393,1.5179,1.25,1.25,1.6071,1.6964,1.875,1.0714,1.6964s3.0357,0.98214,3.0357,1.5179c0,0.53571,1.6964,2.9464,1.6964,2.9464l0.625,1.875,1.6071,1.4286,1.875,0.71428,1.0714,0.80357,1.4286,2.3214,1.0714,1.4286v1.6072z\",\"name\":\"Tyumen Oblast\"},\"ne\":{\"path\":\"m260.27,198.54,1.6071-0.89286,1.4286-1.1607,2.0536-1.0714,1.1607-1.25,0.625-3.3929,1.1607-1.6071s1.4286-0.80358,2.4107-1.0714c0.98215-0.26786,2.3214-0.26786,2.6786-0.26786,0.35714,0,1.5178-0.98214,2.0536-1.5179,0.53571-0.53571,3.0357-2.5,3.0357-2.5l0.71429-1.0714v-2.2321l1.25-1.9643s0.89285,0.17857,0.98214,0.625c0.0893,0.44642,0.26786,1.5178,0.625,1.6964,0.35714,0.17858,1.875,1.4286,1.875,1.4286l1.6964,1.1607,0.98214,0.89286-0.0893,1.3393-0.625,1.4286-0.44643,1.7857v1.6964l-0.26786,1.0714-0.44643,0.80357-0.26786,1.25-1.25,0.71428-1.3393-0.625-1.25-0.98214-0.625-0.80357-2.3214-0.53572h-3.0357c-0.44643,0-2.1429,1.1607-2.1429,1.1607l-0.80357,1.4286,0.17857,1.0714s0.53571,0.89286,0.625,1.25c0.0893,0.35714-0.71429,1.1607-0.71429,1.1607l-0.89285,1.6072s-0.26786,1.1607-0.0893,1.4286c0.17857,0.26785,0.625,0.80357,1.1607,1.25,0.53572,0.44643,1.875,1.5178,2.1429,1.6964,0.26786,0.17857,1.875,0.89285,1.875,0.89285s2.3214,0.17857,2.8571,0.17857c0.53572,0,1.9643-0.26785,1.9643-0.26785s1.5179-0.98215,1.875-1.1607c0.35714-0.17857,1.9643-1.1607,1.9643-1.1607s1.0714-0.44643,1.4286-0.35714c0.35714,0.0893,1.3393,0.98214,1.3393,0.98214l2.3214,0.17857s0.35714-0.44643,0.71429-0.80357c0.35714-0.35714,0.53571-0.71429,0.98214-0.35714,0.44643,0.35714,1.875,1.3393,1.875,1.3393l1.7857,0.44643h5.0893l2.5893,0.0893s0.80357,0.80357,1.25,0.89285c0.44642,0.0893,3.3928,0.53572,3.3928,0.53572l1.5179,1.4286,0.71429,1.9643,1.1607,0.17858,0.71429-1.5179,0.89285-1.0714,1.875-0.17857,0.89286,0.53571,2.1429,0.17857,2.5893,0.44643-0.44643,0.80357-0.98214,0.80358-1.6964,0.625-0.80357,0.98214-0.71428,0.98214-1.6964,0.71429-0.26786,1.0714,1.3393,0.98214,1.25,0.53571,0.625,2.0536,0.71428,0.35715,1.6964-0.80357s1.3393-0.89286,1.6071-0.89286c0.26786,0,3.3036,0.53571,3.3036,0.53571l2.6786,1.3393,1.5178,1.3393,1.4286,0.89286,4.4643,0.17857,0.71429,0.71429,1.5178-0.26786,2.5893-0.35714,1.7857-1.3393,0.625-1.7857s0.53572,0.625,0.53572,1.1607c0,0.53572-1.6964,2.7679-1.6964,2.7679l-0.71429,1.7857v1.0714l-1.1607,1.1607-0.89286,0.625-0.44643,0.98214,0.44643,0.80357h1.4286l0.80357-1.6071,0.17858-0.53572,1.5178-0.0893,1.5179,1.25,2.3214,0.35714,1.1607-0.89286,1.3393-1.1607,0.53571-0.89286-0.71428-1.0714-0.35715-1.4286,1.5179-1.1607,0.71429-1.875-0.53572-1.6964-1.25-0.80357-0.71428-3.3929-0.26786-3.125s-0.26786-0.89286,0.0893-1.25c0.35714-0.35714,2.2321-1.6964,2.2321-1.6964l1.3393,0.17857,1.1607,1.4286,1.0714,1.9643,0.35714,2.1429-0.89286,3.3036,0.89286,1.0714,2.8571,2.4107,2.7679,2.8572,3.3929,2.5893,2.1428,3.3036,1.6964,3.3929,0.80357,1.875,0.17858,1.6071-1.0714,1.1607-0.98215,2.0536-0.98214,1.5179h-2.5c-0.44643,0-3.6607-0.17858-3.6607-0.17858l-2.1429,0.98215-2.7679,0.71428h-3.0357l-1.7857-0.17857-2.4107,1.875-3.0357,2.4107-1.6072,0.53571-2.7678-0.0893-2.0536-0.53571-4.2857-2.4107-23.036-13.929-7.6786-6.875-1.25-1.1607v-1.3393l-0.98214-0.625-2.4107,0.625-5.0893-0.44642-5.625-0.98215-5.1786-0.80357-3.125-0.26786-4.1071-2.3214-2.0536-0.44643-1.7857,0.625-1.7857-0.26786-1.5179-1.7857-4.2857-8.4822-0.98215-2.4107z\",\"name\":\"Nenets Autonomous Okrug\"},\"om\":{\"path\":\"m358.39,368.89,0.71428,2.5-1.25,1.6071-1.25,1.9643,0.53572,1.6071,0.71428,1.9643-1.25,1.9643s-1.0714,1.25-1.0714,2.1429c0,0.89286,0.17857,3.0357,0.17857,3.0357l1.7857,1.6072,0.35714,2.3214-0.53571,3.3929-1.9643,0.89286-1.25,1.6071,0.71429,2.3214-0.35715,1.9643-3.9286,0.17857s-1.4286-0.89286-2.3214-1.0714c-0.89285-0.17857-3.3928,2.8571-3.3928,2.8571l-2.5,2.1429-0.89286,4.2857,0.53571,0.89286,1.9643,2.1429,0.35714,2.6786-1.6071,2.6786-1.0714,1.7857-0.17857,3.0357-2.5,2.1429s-2.3214,1.0714-3.0357,1.0714h-4.8214l-1.6072-0.71428c-2.1428,1.4286-3.75,0-3.75,0l-1.6071-0.71429-1.9643-0.35714h-1.0714l0.35714-1.7857,1.7857-1.0714,0.71429-1.4286-2.3214-1.25-2.1429-2.3214-1.9643,0.89285-0.89286-0.71428v-3.75l-1.4286-0.89286-2.8571,0.35714-2.8572-0.89285-0.89285-0.53572-0.17857-2.1428,2.1428-2.6786,0.71429-2.3214,0.35714-2.6786v-4.1071l0.71429-2.1429,1.4286-3.9286,1.6071-2.5,2.3214-0.53571,1.0714-1.25,1.0714-1.7857,1.6071-0.89285h2.6786l1.6071-1.4286,0.89286-3.9286-1.4286-3.2143-0.71429-3.0357-1.25-3.3928,0.35715-1.6072,4.4643-4.6428,1.0714-0.89286h2.6786l0.17857,1.6071-1.25,1.6072-1.7857,1.25-0.17857,1.4286,1.4286,0.35714,3.2143,0.35714,2.3214,0.17857,2.1429,1.4286,1.9643,1.4286,1.0714,0.35714,1.0714-0.71429,1.9643-0.35714,2.3214,0.35714,3.5714,1.6072h2.5l2.1428-1.0714h2.1429z\",\"name\":\"Omsk Oblast\"},\"ht\":{\"path\":\"m329.64,260.32,0,3.75-0.53572,3.2143-1.6071,2.3214-2.3214,2.3214-0.89286,1.25,1.9643,1.9643,1.7857,2.3214,5,1.9643,4.8214,0.17857,3.5714,1.4286,2.3214,2.6786,0,1.4286-2.1429,1.7857,1.4286,1.4286,2.3214,2.8572,1.9643,1.0714,2.1428-1.0714,1.7857-0.89286s1.6071,0.71429,1.9643,0c0.35715-0.71429,0.89286-2.1429,0.89286-2.1429l1.6071,2.1429,1.4286,2.8571,1.9643,1.6072s0.35714,2.1428,0.35714,2.8571v4.6429l1.9643,3.3928s0.35714,0.17857,0.71429,0.89286c0.35714,0.71429,0,2.1429,0,2.1429l1.0714,1.25,2.5,0.53571,3.75,0.71429,1.4286,0.89285s2.8571,2.1429,3.5714,2.6786c0.71429,0.53571,1.25,1.6071,2.1429,1.9643,0.89286,0.35714,3.5714,0.53572,3.5714,0.53572l2.8571,0.35714,0.89286,1.0714s0.35714,1.6071,0.71428,2.6786c0.35715,1.0714,1.4286,1.7857,1.4286,1.7857l3.0357,0.17857,1.7857,0.53572,0.35715,1.9643,0.35714,1.4286,1.0714,2.5c1.9643,0.17857,2.5,0.17857,3.5714,0.17857s3.3928,1.0714,3.3928,1.0714l1.9643,0.71428,2.8571,0.35714,2.8572-1.0714,3.2143-1.9643,3.0357,0.53571,1.9643,2.6786s0.35714,1.7857,1.0714,2.1428c0.71429,0.35715,2.8571,0.53572,2.8571,0.53572l2.3214,1.6071,0.71429,2.3214,1.9643,0.71428,2.6786-0.89285,1.9643,1.6071,1.0714,3.0357v2.3214l-0.35714,1.6072-0.53572,1.9643,3.0357,1.9643,2.5,1.7857,0.35714,2.3214v1.0714l-3.75,1.7857-2.6786,0.53572-3.2143,0.17857-3,0.15-1.61-1.07-1.7857-0.71428-2.3214,0.35714-2.3214,1.6071-2.6786,1.0714-2.1429-1.9643s-2.8571-0.35714-3.5714-0.35714c-0.71429,0-2.3214-1.7857-2.3214-1.7857l-0.89286-1.25-3.9286,0.17857h-3.5714l-1.6071-2.5s-1.25-0.89286-2.1429-0.89286c-0.89286,0-4.4643-1.25-4.4643-1.25l-2.5-2.3214h-1.25c-0.71428,0-2.3214,1.25-2.3214,1.25l-2.5,2.1429-1.7857,2.6786-2.8571,2.5-1.6071,3.3929-4.4643,1.6071-3.5714,0.89286-0.35714,2.1429-0.71429,2.1428-2.6786,1.25h-2.8571l-5.8929-5.5357-3.9286-0.89286-1.0714-1.4286-0.53571-4.1071-1.0714-1.25-1.0714-5.3572-0.53571-1.7857-3.5714-3.2143h-5.5357l-3.0357-0.35714-1.9643-2.8571-1.6071-0.53572-4.4643,3.0357-3.3929,0.71428h-5.1786l-5,0.71429-4.2857,0.53571h-3.5714l-1.4286-0.17857-0.53571-2.8571-0.35714-3.2143,0.89285-3.2143-0.89285-3.2143-2.3214-2.1428-1.0714-0.89286-1.0714-1.0714,1.25-2.6786,1.4286-2.3214-0.17857-2.1429-0.71429-3.2143,0.71429-5.5357,1.4286-1.7857,1.4286-2.1429-0.71428-2.3214-1.0714-3.5714-1.9643-2.6786-2.3214-3.3928-3.3928-2.1429-1.7857-1.9643-1.0714-2.6786,3.3929-2.1429,1.6071-2.6786,2.3214-4.8214,2.1429-2.6786,2.5-1.9643,3.5714-3.3929,1.6071-1.7857,1.7857-3.3929-0.17858-1.7857,0.89286-1.0714,2.1429-1.0714,1.4286-1.9643,1.6071-1.0714,1.25,0.17857,0.89286,2.3214,0.35714,1.0714,1.4286,0.35714,2.5-0.71428,3.0357-1.6071,1.4286-1.25,1.25-1.0714,2.5-0.53572z\",\"name\":\"Khanty–Mansi Autonomous Okrug\"},\"ya\":{\"path\":\"m366.25,234.25,1.4286,2.6786,1.6071,1.7857,1.6072,2.6786,1.0714,3.0357,0.89286,2.8572,3.0357,0.17857,1.7857-1.6072,1.4286-1.25-0.53571-3.2143s-0.89286-1.4286-0.53572-2.3214c0.35715-0.89286,1.7857-2.5,1.7857-2.5v-2.3214l-2.1429-1.6071-1.25-2.5s0.71429-1.6071,1.4286-1.9643c0.71429-0.35714,3.75-2.3214,3.75-2.3214s1.6071-3.75,1.9643-4.4643c0.35714-0.71429,0.35714-4.8214,0.35714-4.8214l0.89286-1.4286,7.5-2.1429,4.8214-3.5714,5.7143-6.0714,3.2143-2.1429,2.1428-0.71429,1.7857,2.3214,3.3928,0.35714,1.7857,1.25,1.0714,2.6786,0.17857,1.7857-0.89286,3.75-2.1429,2.6786-2.3214,2.8571-3.0357,1.6072-1.25,1.0714-0.35714,1.9643,1.0714,2.1429,0.17857,2.8571-0.89286,2.8571-2.1429,2.6786-1.7857,3.2143-2.6786,4.4643-1.25,3.5714-0.89286,2.1429-0.17857,2.5,0.35714,2.6786,0.71429,2.3214-0.71429,1.4286-3.0357,2.1429-1.0714,3.2143-0.89286,3.2143h-3.2143l-2.3214,1.25-2.1429,3.3929-3.5714,0.53571-2.3214,1.25-1.4286,1.4286h-3.5714l-1.4286-1.0714-1.0714-2.6786-0.71429,0.53572v1.6071l-1.9643-1.4286-0.71428-1.9643-1.0714,0.71429-0.17857,1.9643,1.7857,2.1428,2.5,2.1429,2.5,1.25,3.2143,1.0714,2.1429,1.25,2.1428-0.89286,3.5714-1.7857,3.0357-0.71429,3.75-1.0714,2.3214-3.0357,3.2143-2.6786,3.3929-1.6072,2.1428-1.7857-0.17857-2.1429-0.89286-2.3214-0.17857-1.7857,2.1429-2.1429,4.2857-0.89285h3.3929l1.4286,1.4286,1.25,3.0357v2.8571,3.0357l-1.6071,1.4286-1.25,2.5,0.17857,3.5714,1.7857,1.25,3.2143,0.71428,2.1429,2.8572,1.9643,3.2143,0.53572-0.71428-0.53572-4.1072-2.5-3.2143-3.75-1.0714v-2.8571l2.3214-3.0357s1.7857-0.35714,1.9643-1.0714c0.17857-0.71428,0.17857-3.5714,0.17857-3.5714l-0.89286-3.9286-2.6786-2.6786-2.6786-3.2143-0.89286-1.4286h-2.1428s-0.53572,1.25-1.4286,1.25c-0.89285,0-2.6786-1.25-2.6786-1.25l-1.6071-1.0714-0.53571-2.5,1.4286-3.75,2.3214-3.2143,2.1428-2.6786,3.0357-1.25,0.17857-4.4643-0.17857-3.0357v-3.0357l0.17857-2.3214,1.7857-2.3214,1.4286-1.4286,2.1429-0.35715,3.2143-0.53571,2.3214-2.5,1.7857-1.0714,1.25,2.1429-1.9643,2.3214-0.89285,1.4286-1.0714,4.4643-1.25,2.5,1.25,1.7857,2.6786,2.1429h2.8571l1.4286,2.1428,2.3214,2.5,1.7857,0.35715-1.4286-2.1429v-2.5s-1.25-1.25-1.9643-1.6071c-0.71429-0.35715-3.5714-2.8572-3.5714-2.8572l-1.25-3.5714-0.17857-1.4286s1.9643-0.71428,2.6786-0.71428c0.71429,0,3.2143,0.89285,3.2143,0.89285l0.89285,1.7857,1.6072,0.17857,1.25-0.71429-0.35715-1.9643,0.17858-1.9643,1.4286-0.35714,1.6071,0.71429,1.7857,1.4286,1.25,1.0714,0.89286,1.7857-0.35714,1.7857-2.3214,2.5-3.0357,1.25,1.0714,1.4286,2.6786,2.1428,0.35714,2.8572,0.17857,3.3928-0.71429,2.6786-2.5,1.4286-2.6786,1.4286-3.5714,1.7857-2.1428,2.1429,0.35714,2.6786,1.4286,2.5,1.25,2.5,1.6071,1.0714h3.3929,2.5l1.7857,1.6071,0.53571,3.0357,0.17857,3.3928v2.8572l-1.9643,3.2143-1.7857,2.5h-2.6786l-0.71429,0.53572,0.53572,1.9643,0.71428,1.7857-0.53571,2.5-0.89286,1.25,2.3214,3.3928,0.53572,1.7857,0.35714,1.7857-1.25,1.7857-1.0714,1.25,0.89286,2.1428-0.17857,2.5-1.6072,1.6072,1.6072,1.7857,2.1428,1.9643,1.6072,1.4286-0.17858,3.3928-1.4286,2.3214-0.17857,2.6786,2.3214,2.1429,4.6429,0.89286,0.89285,1.4286-1.4286,2.1429-0.53571,3.3928-0.89286,2.3214-2.6786,1.4286s-0.89286,0.53572-1.6071,1.0714c-0.71429,0.53572-1.7857,2.8572-1.7857,2.8572l1.9643,1.7857,0.17857,2.3214-1.4286,2.1429-1.25,2.5-2.6786,2.3214-2.8572,2.8572-0.89285-1.7857-1.6072-2.1428-1.7857-1.0714-1.9643,0.71428-1.9643-0.71428-0.71429-1.6072-1.25-1.25-2.5-0.89285-2.1428-0.89286-0.71429-1.6071-0.89286-1.7857-1.4286-1.4286-2.8571-0.17857-2.5,1.4286-2.5,1.0714-2.6786,0.17857-4.1072-1.6071-3.5714-0.35714-2.1429-0.17858-0.89286-1.9643-1.0714-2.3214v-1.4286l-3.3928-0.71429-2.3214-0.53571-0.89286-2.5-0.71429-2.3214s1.4286-0.17857-1.0714-0.35714-5.5357-1.0714-5.5357-1.0714l-1.4286-0.53572-3.2143-2.5-2.5-1.6071-2.8572-1.0714-3.2143-1.25-1.25-0.89285-0.17857-2.1429-2.8572-3.9286,0.17857-6.7857-1.25-1.7857-2.3214-2.8571-1.0714-2.1429-0.53572-0.53572-1.0714,1.25-0.53571,0.71429h-1.4286l-2.6786,0.89286-1.25,0.35714-1.6072-0.35714-2.1428-2.3214-1.7857-1.6071,0.53572-0.89286,1.4286-1.6071-0.35714-1.7857-2.5-2.3214-3.0357-1.4286-4.2857,0.35714-3.0357-1.25-2.6786-0.89285-3.3929-4.2857,2.3214-2.5,2.5-3.75,0.17857-5.3571,0.35715-1.4286,3.75-1.0714,2.6786-2.5,1.4286-1.4286h3.75,3.3929l3.9286,0.53571,1.7857-1.25,3.5714-1.6071,3.3929-0.53571,2.5-1.25,2.3214-1.25,0.35714-2.8572-2.1429-2.3214-0.71428-1.25,0.53571-1.6071,2.3214-1.4286,0.35714-1.25,1.92-2.87z\",\"name\":\"Yamalo-Nenets Autonomous Okrug\"},\"kr\":{\"path\":\"M501.66,122.41c-0.45,0.04-1,0.37-1,0.37-0.9,0.72-1.25,0.77-0.94,1.13,0.31,0.35,0.19,0.55,0.9,0.78,0.72,0.22,0.91,0.49,1.44,0,0.54-0.49,0.77-1.24,0.41-1.69s-0.37-0.64-0.81-0.59zm11.56,0.65c-0.22,0.02-0.44,0.11-0.6,0.38-0.31,0.53-0.49,1.57-0.62,1.84s-0.2,0.74-0.78,0.88c-0.58,0.13-1.39,0.54-1.75,0.09s-1.03-1.51-1.25-1.69-1.04-0.74-1.13-0.03c-0.09,0.72,0.19,1.51,0.19,1.91s-0.18,0.99-0.4,1.12c-0.23,0.14-1.06,0.25-1.29,0.56-0.22,0.32-0.62,0.49-0.62,1.16s-0.27,1.67-0.31,1.94c-0.05,0.27-0.32,0.26-0.63,0.75s-1.09,1.87-1.09,1.87,0.89,0.62,1.15,0.85c0.27,0.22,0.42,0.77,0.38,1-0.05,0.22-0.13,1.05-0.53,1.19-0.4,0.13-1.43,0-1.78-0.13-0.36-0.13-1.01-0.48-1.5-0.44-0.49,0.05-1.01,0.23-1.19,0.63s-0.71,0.38-0.13,1.18c0.58,0.81,0.87,1.53,1,1.76,0.14,0.22,0.29,1.51,0.07,1.87-0.23,0.36-1,1.13-1.22,1.53-0.23,0.4-0.44,0.71-0.22,1.16,0.22,0.44,0.66,0.8,1.15,0.94,0.5,0.13,3.66,0.71,3.66,0.71s0.28-0.36,0.81-0.71c0.54-0.36,1.36-0.77,1.85-0.41s0.52,0.8,0.65,1.25c0.14,0.45,0.41,2.02,0.5,2.37,0.09,0.36,0.49,0.58,0.94,1.16s1.59,1.37,2.22,1.59c0.63,0.23,1.05,0.55,1.72,0.6,0.67,0.04,2.85,0.82,2.94,1.09s0.31,1,0.31,1,0.54,0.52,0.81,0.56c0.27,0.05,2.22,0.19,2.22,0.19,1.38-0.76,2.23-0.8,2.5-0.94,0.27-0.13,0.84-0.03,1.37-1.06,0.54-1.03,0.76-1.35,0.63-2.06-0.13-0.72-0.34-0.93-0.87-1.6-0.54-0.66-1.5-1.24-1.1-1.56,0.4-0.31,1.56-0.8,1.88-1.15,0.31-0.36,0.54-1.32,0.4-2.35-0.13-1.02-0.15-2.5-0.47-2.9-0.31-0.41-0.73-0.92-1.4-1.19s-1.23-0.67-1.81-0.53c-0.59,0.13-1.92,0.25-2.19,0.03s-0.62-0.83-0.85-1.5c-0.22-0.67-0.5-1.13-0.5-1.53s1.16-3.63,1.16-3.63,0.71-0.29,0.84-0.56c0.14-0.27,0.36-0.76,0.22-1.66-0.13-0.89-0.39-1.55-1.28-2.09s-2.09-1.72-2.09-1.72v-0.97c0-0.35-0.15-1.73-0.28-2-0.14-0.27-0.48-0.72-0.97-0.72-0.25,0-0.5-0.05-0.72-0.03zm17.72,22.91c-0.13,0.02-0.25,0.07-0.35,0.19-0.4,0.44-0.72,1.12-0.9,1.34s-0.51,0.09-0.91,0-0.89-0.43-1.16-0.03c-0.26,0.4-0.67,0.74-0.71,1.19-0.05,0.44,0.09,1.75,0.09,2.46,0,0.72,0.09,1.8,0,2.6s-0.2,1.3-0.78,1.66c-0.58,0.35-0.91,0.4-1.31,0.93-0.41,0.54-1.13,1.25-1.13,1.88,0,0.62,0.06,1.45-0.66,2.03-0.71,0.58-1.14,0.56-0.96,1.4,0.17,0.85,0.22,0.93,0.84,1.38s2.79,0.63,3.28,0.5,1.26-0.77,1.66-1.22,1.61-0.99,2.28-1.12c0.67-0.14,1.17-0.08,2.16-0.13,0.98-0.04,1.54-0.39,2.03-0.65,0.49-0.27,0.54-0.54,1.43-0.54,0.9,0,1.74,0,2.1-0.31,0.35-0.31,1.35-1.19,1.62-1.5s0.88-1.05,0.97-1.5,0.18-1.3,0-1.75,0.15-1.15-1.19-1.28-1.57,0.07-1.84-0.38c-0.27-0.44-1.03-0.88-1.03-1.37s0.08-1.02-0.19-1.37c-0.27-0.36-0.79-0.81-1.28-0.72s-1.31,0.58-1.53,0.62c-0.22,0.05-0.71-0.09-0.85-0.4-0.13-0.32-0.21-1.11-0.21-1.91s-0.25-1.63-0.25-1.63c-0.34-0.13-0.83-0.43-1.22-0.37zm5.22,20.03c-0.62,0.05-1.16,0.75-1.16,0.75s-1.62,1.95-2.16,2.84c-0.53,0.9-0.86,1.08-1.93,1.25-1.08,0.18-1.82,1.63-1.82,1.63s-0.51,1.23-0.68,2.12c-0.18,0.9-1.25,3.07-1.25,3.07v1.93l0.87,1.63s1.6,1.05,1.78,2.12c0.18,1.08-2.12-0.68-2.12-0.68s-2.14-0.73-3.03-0.91c-0.9-0.18-1.64,0.01-3.07,0.19-1.42,0.18-1.25,0.34-1.25,0.34l0.72,1.63s1.61,1.4,1.25,2.65c-0.35,1.25-1.4-0.53-1.4-0.53l-1.97-0.87s-1.98,0.16-2.88,0.87c-0.89,0.72-1.25,0.91-1.97,0.91-0.71,0-1.59-0.71-2.12-1.78-0.54-1.08-0.91-0.91-1.63-1.44-0.71-0.54-3.2,0-4.09,0s-2.32,1.79-3.75,1.97-1.78,0.53-1.78,0.53l0.34,2.12-1.97,1.1-2.12,0.53-2.16,0.53c-0.71,0.18-2.12-0.19-2.12-0.19l-1.97-0.34-1.44,0.87-0.53,0.57-2.84,0.15-2.16,0.91s-2.49,2.13-4.09,2.31c-1.61,0.18-0.19,0.53-0.19,0.53s1.06,0.91,1.06,1.63c0,0.71-0.7,0.87-0.87,1.4-0.18,0.54-1.45-0.33-2.35-0.68-0.89-0.36-1.25,0-1.25,0s0.2,1.04,0.38,1.93c0.18,0.9,1.06,1.28,1.06,2.35s-0.19,2.12-0.19,2.12,0.53,2.69,0.53,3.41v2.69c0,0.89-0.87,1.59-0.87,1.59s-1.25,0.72-3.03,0.72c-1.79,0-0.91-0.72-0.91-0.72l0.72-0.91-0.53-1.4-1.97-0.38-2.31,1.25-1.78-0.53h-3.22-3.94c-1.43,0-1.95-1.07-2.84-1.25-0.9-0.18-2.88-0.34-2.88-0.34s-2.14-0.02-3.03,0.34-1.97,1.06-1.97,1.06v3.07,3.03s-1.6,0.69-1.78,1.4c-0.18,0.72,0.01,2.68,0.19,3.75,0.18,1.08,1.05,0.72,2.12,1.25,1.07,0.54,2.16,1.25,2.16,1.25l0.53,0.57,0.34,1.78s0.57,1.94,0.57,2.65c0,0.72,1.25,1.97,1.25,1.97s0.68,1.63,0.68,2.35c0,0.71-0.51,1.22-0.87,1.93-0.36,0.72-0.73,1.61-0.91,2.5-0.18,0.9,0,2.16,0,2.16l0.38,2.84s-0.2,2.88-0.38,3.6c-0.18,0.71-0.89,1.42-1.78,1.78s-1.25,2.12-1.25,2.12,0.01,2.7,0.19,3.6c0.18,0.89,0.88,1.42,1.59,1.78,0.72,0.36,1.25,1.78,1.25,1.78l-0.87,1.78-1.78-0.34-1.44-1.78-0.91-1.82v-2.5s-0.54-1.76-1.97-2.65c-1.42-0.9,0.19-1.63,0.19-1.63s1.08-1.25,1.44-1.97c0.36-0.71,1.06-1.78,1.06-1.78s1.8-1.6,2.16-2.5c0.35-0.89-0.38-1.4-0.38-1.4l-1.06,0.68-1.78,1.82-1.78-0.91s0.69-1.25,0.87-1.78c0.18-0.54,0.54-1.79,0.72-2.5,0.18-0.72,0.35-1.6,1.06-2.31,0.72-0.72,2.35-0.19,2.35-0.19l1.25-1.25v-1.63l-1.1-1.59s-1.4-0.17-3.9-0.34c-2.5-0.18-0.72-1.25-0.72-1.25l-0.72-1.82s-0.72-1.76-1.44-2.12c-0.71-0.36-1.94-3.04-2.65-3.75-0.72-0.72-1.1-1.44-1.82-2.16-0.71-0.71-2.11-1.78-3.18-2.5-1.08-0.71-1.97-1.4-1.97-1.4l-1.63,0.34s-1.05,1.07-0.15,2.5c0.89,1.43,1.06,1.44,1.06,1.44l1.25-0.28,0.97,0.18,1.22,0.5,1.15,1.07,1.06,0.71,0.91,1.07,0.53,0.9,0.1,0.94-0.6,1.63-1.68,1.84-1.29,0.81-1.93,0.88,0.81,1.15s2.04,1.71,2.22,1.85c0.18,0.13,0.69,0.9,0.69,0.9l0.31,2.85,0.09,2.59s-0.33,2.1-0.37,2.28c-0.05,0.18-0.63,0.88-0.63,0.88l-7.09,3.97-1.44,0.9-1.25,0.94-0.66,0.81s0.3,2.37,0.35,2.6c0.04,0.22,0.64,1.18,0.69,1.4,0.04,0.23,1.28,2.69,1.28,2.69s1.15,1.2,1.46,1.69c0.32,0.49,2.16,0.31,2.16,0.31h3.44c0.4,0,1.34,0.5,1.34,0.5s1.3,0.98,1.35,1.16c0.04,0.17,0.37,1.31,0.37,1.31l0.38,3.34s0.09,3.42,0.09,3.69-0.5,1.56-0.5,1.56l-0.34,1.22c-0.04-0.01-0.07-0.03-0.1-0.06l-1.15,2.06-1.82,1.69-1.68,0.28-1.6,0.28,0.16,1.41s1,1.98,1,2.34-0.01,1.68-0.19,2.13c-0.18,0.44-0.81,1.68-0.81,1.68l0.47,1.19,1.15,1.69,0.88,2.41,0.47,1.68-1.16,1.97-1,1.63,0.72,1.93s0.08,1.53-0.09,1.97c-0.18,0.45-1.07,1.16-1.07,1.16l-0.43,1.19s4.1,3.63,5,4.53c0.89,0.89,0.15,1.52,0.15,2.06s-0.72,2.5-0.72,2.5l-1.25,2.22,0.1,1.87s1.54,1.46,1.72,1.82c0.17,0.35,1.68,0.78,2.22,0.87,0.53,0.09,2.78,0.38,2.78,0.38l1.25,1.31-0.19,0.81-1.16,1.63-0.72,3.28s-0.8,2.07-1.15,2.34c-0.36,0.27-1.44,1.16-1.44,1.16l-2.22,1.15-1.72,2.41,0.38,0.97,1.34,1,0.25,1.78-0.81,1.78-1.25,2.78-1.5,1.41-2.31,2.34-1.72,1.6-1.5,2.25s-0.9,2.92-0.81,4c0.08,1.07,0.96,0.72,0.96,0.72s1.62,1.07,2.16,1.34,1.51,0.99,1.78,1.34c0.27,0.36,1,1.24,1,1.69v1.53l-0.81,0.88-1.25,0.81-3.41,1.25-1.69,0.34-2.4-0.25s-1,0.43-0.91,0.78c0.09,0.36,0.72,1.63,0.72,1.63s0.45,1.24,0.63,1.69c0.17,0.44,0.27,0.88,0.72,1.06,0.44,0.18,0.09,2.97,0.09,2.97s-0.89,2.3-1.16,2.75c-0.27,0.44-0.46,1.25-0.37,1.87,0.09,0.63,0.72,1,0.72,1s1.7,0.69,2.06,0.78,2.94,1.1,2.94,1.1,3.13,0.72,3.84,0.72,2.58,0.06,3.56,0.15,2.5,1,2.5,1,1,0.87,1.53,1.41c0.54,0.53,0.25,4.64,0.25,5s2.88,0.19,3.5,0.28c0.63,0.09,2.32,0.81,2.32,0.81s0.43,1.33,0.43,1.69-0.43,1.88-0.43,1.88l-1.78,0.9-3.47,1.5-0.57,1.06s-1.13,4.74-1.4,5.19,0.53,1.88,0.53,1.88l1.5,0.62,2.25,1.06s3.47,2.25,4.09,2.79c0.63,0.53-0.09,0.96-0.09,0.96l-0.97,1.82-5.44,4.72-0.72,1.96-0.18,1.5s-0.44,3.58-0.44,3.94,0.34,1.53,0.34,1.53,1.81,1.15,2.25,1.5c0.45,0.36,1.88,1,1.88,1l0.72,1.41s0.79,1.54,1.06,2.34c0.27,0.81-0.72,0.97-0.72,0.97l-3.56,2.94-1.97,0.91s-1.35,1.33-1.44,1.87,0.81,0.97,0.81,0.97l0.97,1.44,1,1.34s1.95,0.73,2.75,0.91c0.81,0.17,1.63-0.57,1.63-0.57s1.42-1.95,2.4-2.22c0.99-0.26,0.53,0.46,1.07,0.72,0.53,0.27,1.96,0.61,2.59,0.88s2.22,1.34,2.22,1.34l0.81,2.06,1.78,7.41,0.82,2.5-1.26,4.13s0.1,2.05,0.19,2.4c0.09,0.36,0.8,1.24,1.07,1.6,0.26,0.35,0.43,2.15,0.43,2.15l-0.97,1.35-2.4,1.5-1.1,1.78s-2.3,3.32-2.65,3.59c-0.36,0.27-2.06,1.14-2.6,1.41-0.53,0.27-2.06,1.44-2.06,1.44s0.27,1.06,0.63,1.15c0.35,0.09,0.53,2.16,0.53,2.16l0.81,1.06,1.88-0.44,3.21,0.78,2.5,0.91s1.25,0.88,1.79,1.06c0.53,0.18,3.4-0.44,3.4-0.44s5.87-2.32,6.31-2.59c0.45-0.27,1.72-1.06,1.72-1.06s2.5-1.89,3.03-2.25c0.54-0.36,3.74-2.14,4.1-2.41,0.35-0.27,1.44-1.78,1.44-1.78l0.9-2.12s0.16-1.99,0.25-2.44,0.53-1.5,0.53-1.5l0.72-1.25,2.16-0.19,3.12,0.44,2.32,0.19s3.57,0.1,4.37-0.35c0.8-0.44,0.45-0.72,0.63-1.34,0.17-0.63-0.27-0.9-0.63-1.35-0.36-0.44-1-1.33-1.53-1.78-0.54-0.44-1.25-1.15-1.25-1.15s-2.31-4.22-2.31-4.75c0-0.54,0.81-1.15,2.15-1.69s3.91-0.97,3.91-0.97l2.06-1.19-0.09-2.65,0.47-1.78s1.16-2.8,1.25-3.07c0.09-0.26,1.51-2.93,1.68-3.56,0.18-0.62,0.62-1.79,1.07-2.59,0.44-0.81,1.62-1.68,2.15-2.03,0.54-0.36,1.68-1.91,2.13-2.44,0.44-0.54,1.09-2.22,1.09-2.22l-0.19-4.09s-2.13-2.42-2.4-3.22c-0.27-0.81,0.07-1.43,0.34-1.78,0.27-0.36,1.61-1.88,1.97-2.5,0.36-0.63,0.81-2.53,0.81-2.97,0-0.45,0.98-1.5,1.88-2.13,0.89-0.62,2.83-0.18,3.28,0s1.09,0.81,1.72,1.35c0.62,0.53,3.28,0.68,3.28,0.68s1.07-1.42,1.25-1.87,0.98-1.77,1.25-2.22,1.53-1.07,2.25-1.16c0.71-0.09,1.69,0.63,1.69,0.63s0.97,1.78,1.15,2.31c0.18,0.54,1.18,1.61,1.53,1.97,0.36,0.36,1.26,1.8,1.35,2.16,0.09,0.35,1.06,0.33,2.22,0.15s0.09-1.4,0.09-1.4v-2.16s-0.62-2.16-0.62-2.78c0-0.63,0.71-1.78,0.71-1.78s2.5-0.8,3.03-1.06c0.54-0.27-0.08-1.17,0.1-1.97,0.18-0.81,1.33-1.7,1.69-1.88,0.35-0.18,2.96-0.61,3.4-0.87,0.45-0.27,1.41-1.25,1.41-1.25l0.62-2.69,0.28-2.88s-0.02-0.11-0.03-0.12c0.09-0.06,0.32-0.22,0.32-0.22l1.31,0.19s0.6-0.58,1.31-0.94c0.72-0.36,0.79,0.03,0.97,0.03s0.68,1.11,0.81,1.47c0.14,0.36,0.36,1.26,0.41,1.53,0.04,0.27,1.38,0.68,1.56,0.72s1.55,0.47,1.81,0.56c0.27,0.09,1.66,1.08,1.97,1.44,0.32,0.36,1.04,0.45,2.38,0.94s1.53-0.28,1.53-0.28l0.65-0.63s0.23-1.4,0.32-1.94c0.09-0.53,0.72-0.87,0.72-0.87s1.51-1.22,1.87-1.63c0.36-0.4,0.5-0.87,0.5-0.87s0.34-2.99,0.16-3.13c-0.18-0.13-1.38-0.71-1.78-0.84-0.41-0.13-1.6-1.46-2-2.13-0.41-0.66,0.3-1.16,0.43-1.43,0.14-0.27,1.41-1.06,1.63-1.28,0.22-0.23,1.06-0.78,1.59-1,0.54-0.23,0.27-2.9,0.22-3.35-0.04-0.44-0.7-0.44-1.81-0.62-1.12-0.18-1.97-0.85-1.97-0.85s-1.52-1.52-2.19-2.28-0.22-2.76-0.22-3.03,0.17-4.1,0.13-4.9c-0.05-0.81,0.54-1.63,0.72-1.85s2.37-0.49,2.59-0.53,1.9-0.99,2.35-1.34c0.44-0.36,0.59-1.19,0.59-1.19s-0.37-1.3-0.5-1.75c-0.14-0.45,0.72-1.65,1.03-1.88,0.31-0.22,1.91-1.37,1.91-1.37s1.07-6.86,1.25-7.13c0.17-0.26-0.32-1.59-0.32-1.59s-1.19-3.62-1.28-3.84c-0.09-0.23-0.68-1.65-0.5-2.32s1.27-1.02,1.41-1.25c0.13-0.22,0.07-0.97-0.16-1.15-0.22-0.18-1.03-1.16-1.03-1.16s0.58-3.41,0.63-3.81c0.04-0.4,0.28-1.69,0.28-1.69l1.22-0.84s3.79-0.07,4.06-0.07,2.03-0.79,2.44-1.06c0.4-0.27,0.13-1.66,0-1.84-0.14-0.18-1.19-1.94-1.19-1.94h-2.28l-2.5,0.06-2.1-0.43-1.03-0.41s-2.49-0.25-2.72-0.25c-0.22,0-1.5-0.16-1.5-0.16l-0.65-0.25s-0.13-1.6-0.13-1.87,0.48-0.55,1.07-0.91c0.58-0.35,0.93-0.94,0.93-0.94s-0.17-0.98-0.43-1.34c-0.27-0.36-0.1-0.97-0.1-0.97s2.29-2.76,2.38-2.93c0.09-0.18,0.62-1.04,0.62-1.04s0.89-1.56,1.06-2.18c0.18-0.63-0.59-1.16-0.59-1.16s-3.42-4.04-3.78-4.44-1.14-1.64-1.31-1.9c-0.18-0.27-0.91-1.24-1-1.69s0.31-1.41,0.31-1.41l1.09-3.47-0.56-1.06s-1.07-0.96-1.16-1.09c-0.09-0.14-1-0.75-1-0.75s-0.63-0.55-0.5-0.91c0.14-0.36,1.36-0.56,1.63-0.56s2.31-0.69,2.31-0.69,1.39-0.56,1.56-0.78c0.18-0.22-0.03-1.16-0.03-1.16s-1.56-17.7-1.56-18.06-0.65-1.56-0.78-1.78c-0.14-0.22-2.19-2.34-2.19-2.34l-0.72-5.16h0.06s1.85,0.06,2.47,0.06c0.63,0,0.97-0.84,0.97-0.84l2.5-2.06,1.53-1.38s0.57-0.52,0.88-0.56c0.31-0.05,1.26,0.58,1.44,0.62,0.17,0.05,1.47,0.6,1.47,0.6s0.99-0.52,1.43-0.66c0.45-0.13,0.75-0.62,0.75-0.62l-0.31-5.94,4.16-2.16s0.93-1.1,0.93-1.28,0.57-1.87,0.57-1.87l4.47-3.1s1.78-2.23,2.18-2.5-0.03-0.62-0.03-0.62l-1.25-1.85s-1.07-1.29-1.78-1.47c-0.71-0.17-0.91-1.09-0.91-1.09l0.29-5-0.6-0.47-2.84-2.31-3.41-2.69-0.72-1.97-0.34-1.4-1.06-1.78,0.15-0.91,1.25-2.69-1.4-1.4-1.63-1.97-0.72,1.59s-1.43-0.53-2.5-0.53-1.06,1.44-1.06,1.44-1.95,0.71-2.84,1.25c-0.9,0.53-1.25,1.78-1.25,1.78s-1.45,1.25-2.16,1.25-2.14,0.01-3.03,0.19c-0.89,0.17-1.43,1.41-1.97,2.12-0.54,0.72-1.44,2.33-2.16,2.69-0.71,0.36-0.71,0.34-1.78,0.34s-0.16-0.7,0.38-2.31c0.53-1.61,1.95-1.79,2.31-2.5s0.72-1.78,0.72-1.78l2.5-0.91s0.54-3.02,1.44-3.37c0.89-0.36,3.75-0.53,3.75-0.53s1.22-1.63,1.4-2.35c0.18-0.71,1.44-1.58,1.97-2.65,0.54-1.08,0.72-1.79,0.72-2.5,0-0.72,0.91-1.82,0.91-1.82l2.5-2.12s1.58-1.6,1.93-2.31c0.36-0.72,2.16-1.97,2.16-1.97l2.16-1.97,2.31-2.5s0.19-1.44,0.19-2.16c0-0.71-0.72-1.78-0.72-1.78s-1.26-0.9-1.97-1.44c-0.72-0.53-1.78-0.7-1.78-1.59s0.16-0.72,0.34-1.44c0.18-0.71,0.72,0,0.72,0l1.44,1.1,0.15-1.25-0.15-2.35-0.53-1.97-2.69-0.68-1.78-1.1h-2.16c-0.71,0-0.52-0.69-0.87-1.4-0.36-0.72-0.37-1.62-0.91-2.69s-2.31-0.19-2.31-0.19l-1.78,0.91c-0.72,0.35-0.73,0.52-1.44,1.06-0.72,0.54-1.61-0.37-3.22-0.91-1.61-0.53-1.77,0.02-2.84,0.38-1.08,0.36,0.17,0.88,0.53,1.59,0.35,0.72,0,1.44,0,1.44l-2.35-0.19s-1.06-0.35-1.78-1.25c-0.71-0.89,0.19-1.06,0.19-1.06s1.25-1.43,1.25-2.5-0.72-1.25-0.72-1.25h-2.69c-1.25,0-1.96-0.17-3.03-0.34-1.07-0.18-1.25-0.37-1.97-1.44-0.71-1.07,0.57-0.53,0.57-0.53l1.4-1.25,1.25-0.72,2.69,0.34s0.9,0.56,1.97,0.38,0.19-0.72,0.19-0.72l-1.63-1.06s-1.77,0.34-2.84,0.34-2.16-0.72-2.16-0.72l-1.97-0.87s-1.41-1.45-2.12-1.63c-0.09-0.02-0.2-0.04-0.28-0.03zm-45.94,3.34c-0.85,0.32-1.23-0.03-1.5,0.82-0.27,0.84-0.34,0.96,0.16,1.18,0.49,0.23,0.87,0.53,1.4,0.44,0.54-0.09,1.24-0.47,1.06-1.09-0.17-0.63-1.12-1.35-1.12-1.35zm20.84,3.82c-0.33,0-0.47,0.12-0.94,0.56-0.62,0.58-1.62,1.37-1.71,1.9-0.09,0.54,0.12,0.96-0.19,1.54s-1.55,1.81-2,2.12-2.51,0.16-2.6,0.47c-0.08,0.31-0.37,0.52,0.04,0.87,0.4,0.36,2.91,0.63,3.72,0.54,0.8-0.09,3.3-0.3,3.74-0.35,0.45-0.04,0.71,0.28,0.66-0.43-0.04-0.72-0.72-1.36-0.4-1.85,0.31-0.49,0.6-0.65,0.78-0.97,0.17-0.31,0.49-1.06,0.31-1.47-0.18-0.4-0.72-0.95-0.72-1.53s-0.28-1.37-0.28-1.37c-0.18-0.01-0.3-0.04-0.41-0.03zm-45.53,6.62c-0.49,0-2.1,0.86-2.19,1.13-0.09,0.26-0.56,0.38,0.07,0.97,0.62,0.58,0.39,0.88,1.15,0.84,0.76-0.05,1.55-0.67,2.22-0.63,0.67,0.05,1,0.79,1.31,0.79,0.32,0,0.62-0.23,0.66-0.72s-0.42-0.89-0.59-1.07c-0.18-0.17-0.54-0.18-0.54-0.18-0.31-0.45-1.6-1.13-2.09-1.13zm-2.06,6.25c-0.54,0.18-1.01,0.45-1.5,0.63-0.49,0.17-0.81,0.17-1.13,0.43-0.31,0.27-0.72,0.46-0.72,0.82,0,0.35,0.15,0.5,0.6,0.81s0.52,0.62,1.19,0.62,1.89-0.5,2.03-0.81c0.13-0.31,0.48-0.94,0.53-1.25,0.04-0.31-1-1.25-1-1.25zm-51.31,9.13l-2.35,2.12-0.34,1.78,1.97,0.38,1.25,0.87h2.5l1.25-0.87v-1.78l-1.63-2.16-2.65-0.34zm59.09,4.4c-0.49,0.14-1.47,0.59-1.25,1.03,0.22,0.45,0.5,0.8,0.91,0.75,0.4-0.04,0.74-0.01,0.87-0.5,0.14-0.49-0.22-1.25-0.22-1.25l-0.31-0.03zm97.34,1.78c-0.09,0.01-0.18,0.07-0.28,0.22-0.38,0.6-0.53,1.69-0.4,2.1,0.12,0.41-0.42,0.87,0.12,1.31s0.62,1.22,1.53,1.25c0.92,0.03,1.9,0.47,2.63-0.06,0.72-0.54,1.43-1.69,1.65-2.19,0.22-0.51,0.32-1.22,0.07-1.53-0.26-0.32-0.62-0.81-1.13-0.88-0.5-0.06-1.19,0.16-1.19,0.16-1.07,0.31-0.99,0.66-1.78,0.31-0.59-0.26-0.92-0.72-1.22-0.69zm-135.37,0.22l-1.97,0.19-1.44,1.44,0.53,1.06,1.63-0.91,1.44,0.57,0.34,1.59,1.25,0.34,0.72-0.87-0.53-1.06-1.97-2.35zm27.09,1.13c-0.49,0.01-1.04,0.1-0.9,0.5,0.17,0.53,1.09,0.75,2.03,0.75s2.97,0.08,3.06,0.44c0.09,0.35,0.68,1.56,0.91,1.65,0.22,0.09,0.92,0.13,0.97-0.41,0.04-0.53-0.44-1.13-0.76-1.4-0.31-0.27-2.09-1.25-2.09-1.25-0.45-0.09-2.24-0.28-2.78-0.28-0.13,0-0.27-0.01-0.44,0zm10.31,1.12c-0.71,0.23-0.93,0.25-0.93,0.88,0,0.62-0.1,1.06,0.43,1.15,0.54,0.09,0.85,0.33,1.26,0.07,0.4-0.27,0.59-0.91,0.37-1.22s-1.13-0.88-1.13-0.88zm-44.71,1.16l-1.44,1.25,0.72,0.87,1.78-1.06-1.06-1.06zm6.4,2.31v1.78l2.35-0.53v-1.25h-2.35zm133.35,1.5c-1.05,0.29-1.25,0.28-2.07,0.6-0.82,0.31-1.49,0.24-1.87,0.74-0.38,0.51-0.44,0.28-0.66,1.29s-0.69,0.99,0.1,1.31c0.79,0.31,1.39,0.29,2.31-0.41,0.91-0.69,1.71-1.09,2.19-1.65,0.47-0.57,0.84-1.19,0.84-1.35s-0.84-0.53-0.84-0.53zm-122.41,0.5c-0.4,0.63-0.65,1.16-0.87,1.56-0.23,0.41-0.68,0.77-1.13,1.66s-0.81,1.32-0.81,2.03c0,0.72,0.24,1.18,0.68,1.41,0.45,0.22,0.34,0.5,0.57,0.5,0.22,0,0.82,0.09,1.31,0s1.03-0.19,1.03-0.5v-1.88c0-0.53-0.31-3.37-0.31-3.59s-0.47-1.19-0.47-1.19zm-16.47,0.69l-1.06,0.87v1.25l1.44,0.57,0.87-1.25-1.25-1.44z\",\"name\":\"Krasnoyarsk Krai\"},\"tm\":{\"path\":\"m424.64,359.43,1.25,3.2143,1.25,2.3214s-0.53571,2.3214-0.71428,3.0357c-0.17857,0.71429-1.6071,3.0357-1.6071,3.0357s0.53571,1.25,1.6071,1.9643c1.0714,0.71429,5.8929,1.7857,5.8929,1.7857l5.3571,0.17857s3.75,0.89285,4.1071,1.6071c0.35714,0.71429,0.89286,1.0714,0.89286,2.1429,0,1.0714,0.35714,4.2857,0.35714,4.2857s1.25,0.35714,2.6786,0.35714,3.0357,0.35715,3.0357,0.35715,0.35714,2.1428,0.35714,2.6786c0,0.53571-0.89286,1.7857-1.9643,1.7857s-3.75,1.6072-3.75,1.6072-1.25,2.6786-1.25,3.75-0.89285,3.5714-0.53571,4.2857c0.35714,0.71429,4.4643,1.7857,5.1786,2.1429,0.71429,0.35714,3.2143,2.6786,3.2143,2.6786s-0.71429,1.6071-1.6072,2.6786c-0.89285,1.0714-4.1071,3.0357-5.3571,4.6429-1.25,1.6071-0.35714,2.8571-0.35714,2.8571l-0.71429,1.6071-3.2143,0.53572-3.2143,0.35714-1.4286-1.6071-1.9643-0.17857-4.66-0.57h-2.3214l-1.25,1.0714s-2.1429,1.0714-3.2143,1.25c-1.0714,0.17857-5.3571,1.25-6.0714,1.25-0.71428,0-6.4286,0.71429-6.4286,0.71429l-3.3928,1.4286h-2.3214l-0.35715-1.9643,0.71429-2.1429-0.35714-2.3214,1.7857-2.3214-0.53571-1.4286s-1.0714-0.17858-1.9643,0.53571c-0.89286,0.71429-4.4643,1.0714-4.4643,1.0714l-4.2857-0.17857-1.9643-2.3214-0.89286-3.0357s-1.25-1.0714-2.6786-0.71428c-1.4286,0.35714-1.6072,1.25-2.6786,1.25s-2.5,0-3.0357-0.89286c-0.53571-0.89286-0.89285-3.0357-0.89285-3.0357l-0.9-2.33s-1.6071-0.89286-2.5-1.6071c-0.89286-0.71429-3.2143-2.3214-3.2143-2.3214l-5.1786-2.3214-4.2857-1.9643-4.6429-1.7857-2.6786-1.0714-1.7857-2.5v-3.0357l1.6072-2.8572,0.35714-1.7857-0.53571-2.3214,1.25-3.0357,0.71428-3.3929,1.9643-1.0714,3.3928-2.8571s0-2.1429,0.71429-2.3214c0.71429-0.17857,5.7143-1.6071,5.7143-1.6071l1.9643-1.7857,1.25-2.6786,2.5-1.6071,1.6071-3.2143s1.0714-1.0714,1.7857-1.7857c0.71428-0.71429,2.1428-1.4286,2.1428-1.4286l1.9643-0.35715,2.1429,1.7857,2.1428,1.0714,2.5,0.35714,2.8572,1.4286,1.0714,1.6071,3.0357,0.89286h3.3929l2.1428,0.35714,1.25,1.6072,2.6786,0.71428,2.3214,0.71429,2.1429,1.7857,1.25-0.89286,1.7857-0.53571,2.1428-1.4286,2.1429-0.17857,1.6071,0.71428,1.7857,0.89286z\",\"name\":\"Tomsk Oblast\"},\"nv\":{\"path\":\"m341.43,421.57,4.1071,0.71429l4.4643-0.17858c1.25-0.17857,2.1429-0.71428,2.1429-0.71428l-2.14,3.4h-3.0357l-0.89285,2.1428s1.0714,1.9643,1.7857,2.5c0.71429,0.53572,2.6786,3.0357,2.6786,3.0357l0.53572,2.1428,2.3214,0.35715h1.4286s2.6786,0.35714,3.3928,0.35714c0.71429,0,0.89286,0,1.9643-0.35714,1.0714-0.35715,3.2143-0.71429,4.6429-0.71429h3.5714s2.6786,0.17857,3.5714-0.35714c0.89286-0.53572,0.89286-1.0714,2.3214-1.25,1.4286-0.17857,3.0357-0.17857,3.9286-0.17857,0.89286,0,1.9643-0.17857,1.9643-0.17857s0,1.6071,0.89286,2.1428c0.89285,0.53572,4.1071,2.6786,4.1071,2.6786l0.71428,0.71429c0.17858,0.71429-0.17857,2.5-0.17857,3.2143,0,0.71428-1.0714,0.71428-0.17857,1.6071,0.89286,0.89286,1.9643,1.4286,1.9643,1.4286l2.3214-1.9643,2.3214-2.3214s2.1429-0.53572,2.8572-0.53572c0.71428,0,3.0357,0,3.75-0.17857,0.71428-0.17857,1.4286-0.71429,2.6786-0.17857,1.25,0.53571,2.3214,0.71428,3.3929,0.71428,1.0714,0,3.5714-1.25,3.5714-1.25s1.7857-2.1428,1.9643-2.8571c0.21-0.7-0.33-4.45-0.33-4.45v-3.75c0-0.71429,0.71428-2.3214,1.25-2.6786,0.53571-0.35714,1.7857-0.89285,1.7857-1.7857,0-0.89286-0.89286-1.6071-0.89286-1.6071s-0.89285-0.53572-0.89285-1.4286c0-0.89286,0.35714-3.2143-0.53572-3.0357-0.89285,0.17857-4.1071,1.7857-4.1071,1.7857s0,0.17857-1.4286,0.17857-2.5,0-2.6786-0.71429c-0.17857-0.71428,0.35714-5,0.35714-5l0.53571-2.6786,0.17858-2.1429-2.8572,1.4286s-1.6071,0.53572-2.5,0.71429c-0.9,0.18-4.47-0.71-4.47-0.71l-2.1429-0.71428-1.4286-2.1429-1.4286-2.8571s-2.5,0.53571-3.2143,0.71428c-0.71428,0.17858-1.9643,0.53572-1.9643,0.53572l-2.3214-1.25-1.0714-3.3929v-1.25l-3.0357-1.7857s-1.9643-1.6072-2.6786-2.1429c-0.71428-0.53571-3.3928-1.7857-3.3928-1.7857s-3.3929-1.25-4.1072-1.6072c-0.71428-0.35714-1.9643-1.25-2.6786-1.6071-0.71428-0.35714-3.9286-1.4286-3.9286-1.4286l-1.9643,0.17857s-0.35715,1.0714-0.53572,1.9643c-0.17857,0.89285-1.0714,2.3214-1.0714,2.3214l-1.4286,1.0714-0.89286,1.6072,0.17858,2.1428-0.71429,1.4286h-3.2143l-2.5-0.35714-2.1428,0.89286-2.1429,2.3214-1.4286,1.9643-0.71429,2.6786,0.71429,1.9643,1.7857,2.6786v1.7857l-2.1428,3.5714z\",\"name\":\"Novosibirsk Oblast\"},\"al\":{\"path\":\"m351.25,435.14,1.7857,5,1.7857,5.1786,1.6071,6.7857,0.89286,8.5714,0.35714,8.2143,0.35714,2.8571,2.3214-0.53571,1.7857-0.53572,0.89285-0.53571,0.17857-1.9643,1.25-1.6071,1.25-0.35714,1.7857,0.53571,0.89286,1.9643,0.89285,2.8571,2.3214,2.8571,1.9643,1.6071,4.6428,0,3.3929-0.35714,2.5-0.89286,2.3214,0,3.3929,1.4286,1.0714,1.9643,2.3214,0.53572,2.3214-0.53572-0.17857-1.4286-1.6071-1.0714-1.0714-0.89286,0.35714-1.6071,0.71429-0.35714,2.5-0.35714,4.4643-0.71429,3.75-0.17857,2.6786-0.71429,2.3214-1.9643,1.0714-1.9643s0.53572-0.71428,1.25-0.71428c0.71429,0,3.3929-0.17858,3.3929-0.17858l1.9643-0.17857,1.0714-1.7857s0.53572-2.1429,1.25-2.5c0.71429-0.35714,0.89286-2.3214,0.89286-2.3214l0.71429-2.1429-0.35715-1.0714-0.71428-1.0714,0.71428-0.89286,1.25-0.53571-0.17857-1.0714-1.4286-1.6072-1.0714-1.0714c-0.17857-0.71429-0.89286-2.8572-0.89286-2.8572l-1.7857-1.7857-0.17857-0.89286-0.53572-2.1429-1.6071-1.4286-2.5-1.9643-1.74-1.79s-1.6072,1.0714-2.3214,1.4286c-0.71429,0.35715-1.7857,0.71429-1.7857,0.71429l-2.5,0.17857-2.5-0.35714-3.0357-0.17857-4.8214,0.71428-2.5,1.6072-1.6071,1.7857-1.0714,0.71429-0.89286,0.35714-1.4286-1.25-0.35714-0.89286,0.35714-0.89286,0.17857-1.7857-0.17857-1.4286-2.3214-1.6071-1.9643-1.25-1.0714-1.25-0.17857-0.89286-1.9643-0.17857-4.2857,0.17857-1.25,1.25-2.1429,0.53571-3.75-0.53571-4.2857,0.17857-2.6786,1.25h-2.5l-3.3929-0.17857z\",\"name\":\"Altai Krai\"},\"km\":{\"path\":\"m442.14,414.79-0.71428,2.3214,0.89286,1.6072,2.5,1.4286,1.7857,1.6071,1.25,2.5,0.17857,0.89286s-0.89286,1.4286-1.6071,2.1429c-0.71429,0.71428-4.2857,2.3214-4.2857,2.3214l-1.7857,1.7857-1.7857,1.7857v1.6072l1.0714,1.7857,0.17858,1.7857-1.9643,2.5s-1.25,1.0714-1.0714,1.7857c0.17857,0.71428,1.0714,1.4286,1.7857,1.6071,0.71428,0.17857,2.8571,0.89286,2.8571,0.89286l-0.71429,1.4286-1.25,1.7857-0.53571,1.6072-1.7857,0.71428-1.4286,1.6072,0.71429,1.25,1.25,1.25-0.89286,2.5-1.25,1.6071,0.53572,1.25,1.7857,1.7857-0.35714,1.6072-1.6072,1.9643-2.5,2.1429h-1.9643l-0.71429-1.7857-1.9643-1.25-2.6786-0.35714-1.4286,1.0714-2.1428-1.4286-0.71429-2.3214-1.0714-0.71429,0.17857-2.5-0.53571-2.5,0.89286-1.9643,0.71428-1.6071-2.1428-2.6786-1.6072-2.6786-1.25-1.4286-0.71428-2.3214-0.89286-1.7857-2.3214-2.1429-1.7857-1.6071-0.71429-1.25v-1.7857l-0.35714-4.6428,0.17857-2.5,0.71429-2.3214,1.25-1.4286,0.71428-1.25-1.4286-1.9643v-0.89286l-0.35714-2.5,1.6071-0.35714,4.4643-0.53571,2.5-0.89286,3.0357-0.89286,1.0714-0.35714,0.71428-0.89286h1.6072,1.9643,2.5l1.7857,0.35715,1.4286,0.35714,0.89286,0.89286,1.9643,0.53571,1.6071-0.17857,2.5-0.71429z\",\"name\":\"Kemerovo Oblast\"},\"lt\":{\"path\":\"m392.32,478.89-0.44643,2.1428s-0.17857,1.875,0,2.5893c0.17857,0.71429,1.1607,2.3214,1.1607,2.3214l3.3036,0.89286s0.98215,1.1607,1.0714,1.6071c0.0893,0.44643,0.0893,3.3036,0.0893,3.3036s0.17857,0.89286,0.53571,1.6071c0.35715,0.71429,1.25,1.875,1.7857,2.2322,0.53571,0.35714,1.6071,1.25,2.4107,1.3393,0.80357,0.0893,3.125,0.0893,3.5714,0.0893,0.44643,0,4.0179,0.0893,4.0179,0.0893s1.0714,0.53572,1.6071,0.89286c0.53571,0.35714,1.4286,1.25,1.7857,1.875,0.35715,0.625,1.5179,1.6964,2.0536,1.9643,0.53571,0.26785,1.1607,0.80357,1.7857,1.1607,0.625,0.35714,1.6964,0.71429,2.4107,0.80357,0.71429,0.0893,2.9464-0.44643,3.3929-0.71428,0.44643-0.26786,2.3214-0.89286,3.4821-0.89286s4.7322-0.35714,5-0.44643c0.26786-0.0893,3.5714-1.3393,4.1964-1.3393s1.4286-0.89285,1.6071-1.25c0.17858-0.35714,0.625-1.9643,0.17858-2.7678-0.44643-0.80357-0.80358-1.0714-1.4286-1.4286-0.625-0.35715-1.4286-1.25-1.25-1.7857,0.17858-0.53571,1.9643-1.1607,2.4107-1.1607,0.44643,0,2.5,1.0714,2.5,0.26785,0-0.80357-1.6964-2.2321-1.6964-2.2321s-0.98214-1.3393-1.25-1.7857c-0.26786-0.44643-1.875-1.9643-1.875-1.9643s-2.2321-2.7679-2.0536-4.1071c0.17857-1.3393-0.0893-3.3929-0.0893-3.3929s-0.625-1.3393-0.71428-1.6964c-0.0893-0.35714-1.3393-0.17857-1.3393-0.17857l-1.5179,1.5179s-1.4286-0.26786-1.5178-0.80357c-0.0893-0.53572-0.71429-2.5893-0.71429-2.5893s-0.35714-1.7857-0.44643-2.1429c-0.0893-0.35714-0.17857-1.9643-0.17857-1.9643l1.6964-1.3393,2.8571-1.3393,0.35715-1.1607-1.3393-1.6071-0.80357-0.625-2.1429-0.53571-1.9643,0.98214s-1.0714-0.625-1.4286-0.80357c-0.35714-0.17857-1.0714-0.89286-1.0714-0.89286l-0.89286-1.7857s0-1.0714-0.71429-0.89286c-0.71428,0.17857-0.89285,0.71428-0.89285,0.71428s-1.1607,1.1607-1.1607,1.5179c0,0.35714-0.625,1.4286-0.625,1.4286l-0.98214,1.0714s-1.6071,0.44643-1.9643,0.44643h-3.0357c-0.35714,0-1.1607,0.71429-1.5179,1.0714-0.35714,0.35714-1.1607,1.9643-1.1607,1.9643l-1.5179,1.0714-0.98214,0.625-2.3214,0.71429h-2.3214l-4.1071,0.71428-4.1071,0.625-1.0714,0.625-0.0893,0.98215s0.0893,0.89285,0.53572,0.98214c0.44642,0.0893,1.6071,0.80357,1.6071,0.80357l0.44643,0.89286-0.0893,0.89286-1.875,0.625z\",\"name\":\"Altai Republic\"},\"tv\":{\"path\":\"m431.96,477.02,0.26786-1.6964s0.89286-0.625,1.6071-0.625c0.71429,0,1.6964,0.71428,2.4107,0.89286,0.71428,0.17857,2.7678,0.71428,3.0357,0.71428,0.26786,0,1.0714-0.80357,1.3393-1.25,0.26785-0.44643,1.9643-2.6786,1.9643-2.6786s0-1.25,0.625-1.6071c0.625-0.35715,1.875-0.35715,2.3214-0.35715,0.44643,0,1.6071-0.17857,2.3214,0.26786,0.71429,0.44643,1.1607,3.0357,1.1607,3.0357s0.89286,0.89285,1.1607,0.89285c0.26786,0,2.1429-0.80357,2.1429-0.80357s1.4286,0.17857,1.7857,0.44643c0.35714,0.26786,3.0357,0.89286,3.0357,0.89286s1.6964,1.6071,2.2322,1.6071c0.53571,0,1.6964,0.26786,2.6786-0.0893,0.98214-0.35714,2.8571-0.80357,3.3929-1.25,0.53571-0.44642,5.5357-1.9643,5.9821-2.5,0.44643-0.53571,7.0536-5.9821,7.0536-5.9821l2.1429-2.8571s-0.17857-1.875-0.17857-2.9464,1.0714-2.3214,1.4286-2.5893c0.35714-0.26785,2.8571,0.0893,3.3036,0.17858,0.44643,0.0893,4.375,0.89285,4.7321,0.80357,0.35714-0.0893,4.2857-0.44643,4.2857-0.44643l2.4107-2.2321s1.5179-0.35715,2.4107,0.0893c0.89286,0.44643,3.6607,2.5,4.1964,2.7679,0.53572,0.26786,3.75,2.3214,3.75,2.3214l1.6072,1.5178s1.25,0.71429,1.7857,0.44643c0.53571-0.26785,2.3214-0.89285,2.3214-0.89285l1.6071,0.53571,0.35714,1.25s0.53572,0.89286,0.53572,1.25-0.89286,1.6071-0.89286,1.6071-0.71428,0.53572-0.80357,1.1607c-0.0893,0.625-0.26786,4.1071-0.26786,4.1071s-0.0893,2.3214-0.0893,2.7679c0,0.44643-0.71429,2.1428-0.71429,2.1428l-1.4286,2.4107s-1.5179,1.3393-1.875,1.875c-0.35714,0.53571-2.2321,1.3393-2.4107,1.6964-0.17858,0.35714-0.71429,1.875-0.71429,1.875s-0.71429,1.875-0.71429,2.4107c0,0.53572-0.0893,3.3929-0.0893,3.9286,0,0.53572,0.53571,2.5,1.0714,3.2143,0.53571,0.71428,1.25,1.6071,1.25,2.0536,0,0.44643-0.80357,2.3214-1.1607,2.7679-0.35714,0.44643-4.8214,4.1964-4.8214,4.1964l-2.0536,1.25-2.1428,0.17857s-1.7857-0.98215-2.1429-0.89286c-0.35714,0.0893-2.3214,0.17857-2.6786,0.17857-0.35715,0-1.7857-0.89286-1.7857-0.89286s-1.6964-0.35714-2.1428-0.625c-0.44643-0.26785-1.7857-1.1607-1.7857-1.1607s-2.7679-0.26786-3.2143-0.26786c-0.44643,0-2.8572-0.17857-3.2143-0.53571l-2.0536-2.0536s-0.71429-1.4286-0.80357-1.9643c-0.0893-0.53571-0.17857-2.5-0.17857-2.5s-0.80358-0.80357-1.3393-1.25c-0.53571-0.44643-2.1429-0.89286-2.9464-0.89286-0.80357,0-3.9286,0.17858-3.9286,0.17858s-1.9643,0.53571-2.2321,0.625c-0.26786,0.0893-1.25,0.71428-1.875,0.80357-0.625,0.0893-2.0536,0.0893-1.9643-0.80357,0.0893-0.89286,1.25-1.6964,1.3393-2.0536,0.0893-0.35714-0.0893-1.0714-0.71429-1.3393-0.625-0.26786-2.1429-0.17857-3.0357,0.0893-0.89286,0.26786-2.3214,0.80358-2.8572,0.89286-0.53571,0.0893-3.3928,0.71429-3.3928,0.71429s-2.1429,0.89285-2.6786,1.0714c-0.53572,0.17857-3.8393,1.1607-3.8393,1.1607l-3.0357,1.5179-2.4107,1.1607-2.5893-0.26786-2.1429-0.98214-1.5179-0.71428-1.25-1.25c0-0.44643,0.35714-0.98215,0.35714-0.98215l2.4107-0.44643,1.7857,0.53572s1.25-0.35714,0.17857-1.0714c-1.0714-0.71429-4.4643-5.0893-4.4643-5.0893l-1.48-2.44s-1.0714-1.4286-1.0714-1.7857v-2.5893z\",\"name\":\"Tuva Republic\"},\"hk\":{\"path\":\"m440.27,432.11c0.53572,0.35715,1.9643,1.875,1.9643,1.875l1.3393,1.6072s0.26785,0.625,1.1607,0.80357c0.89286,0.17857,2.0536,0.17857,2.0536,0.17857s0.35714-0.35714,0.80357-0.80357,0.625-0.98214,0.98215-1.25c0.35714-0.26786,0.89285-0.89286,1.3393-0.80357,0.44643,0.0893,0.71429,0.26785,1.3393,0.71428,0.625,0.44643,1.3393,1.25,2.2321,1.25,0.89286,0,2.5,0.80357,2.5,0.80357s0.44643,1.875,0.625,2.3214c0.17857,0.44643,0.53571,2.9464,0.53571,2.9464s0.35715,1.5179,0.71429,2.4107c0.35714,0.89285,0.98214,2.0536,1.0714,2.4107,0.0893,0.35714-0.0893,3.125-0.17857,3.3929-0.0893,0.26785-0.80357,1.875-0.89286,2.2321-0.0893,0.35714,0,2.5893,0,2.5893l1.5179,1.5179,0.625,1.875s-1.25,1.4286-1.4286,1.6964c-0.17858,0.26786-2.2322,1.3393-2.5893,1.875-0.35714,0.53571-1.4286,3.0357-1.4286,3.0357s-1.6071,1.9643-2.1429,2.2322c-0.53571,0.26785-2.8571,1.0714-3.125,1.5178-0.26786,0.44643-1.6964,1.6964-1.6964,1.6964l-2.7678,0.0893s-1.3393,0.17857-1.6072,0.625c-0.26785,0.44643-0.53571,1.4286-1.0714,1.875-0.53571,0.44643-1.0714,1.25-1.1607,1.6071-0.0893,0.35714-0.89286,1.0714-0.89286,1.0714s0.0893,0.71429-1.0714,0.625c-1.1607-0.0893-2.9464-0.35714-2.9464-0.35714l-1.7857-1.1607-1.6071,0.44643-0.625,0.80357-0.26786,0.89286-2.5,1.0714s-0.625,0.89286-1.1607,0.35714c-0.53572-0.53571-1.25-2.3214-1.25-2.3214l-0.625-2.5893v-1.5179s0.17857-1.0714,0.53571-1.25c0.35714-0.17857,2.5-1.6071,2.5-1.6071s1.3393-0.98215,1.6964-1.0714c0.35714-0.0893,2.1429-0.44643,2.1429-0.44643l1.9643-1.0714,1.5179-2.0536,1.3393-1.0714-0.44643-1.6071s-1.25-1.25-1.4286-1.6071c-0.17858-0.35715-0.44643-1.25-0.44643-1.25l1.6071-2.2322,0.0893-1.875s-1.0714-1.1607-1.1607-1.5178c-0.0893-0.35715-0.0893-1.25-0.0893-1.25l2.5893-1.5179,1.0714-1.875,1.1607-1.9643,0.53572-1.6964-3.5714-1.1607s-0.89286-1.25-0.71429-1.7857c0.17858-0.53572,1.7857-2.4107,1.7857-2.4107s0.89286-1.875,0.89286-2.3214c0-0.44642-1.0714-2.8571-1.0714-2.8571s0-0.71428,0.26785-1.1607c0.26786-0.44643,1.25-0.98215,1.25-0.98215z\",\"name\":\"Republic of Khakassia\"},\"ir\":{\"path\":\"M569.41,325.78c-0.12,0.03-0.22,0.12-0.22,0.34,0,0.45,0.53,1.54,0.53,1.54l0.37,1.06s-0.26,0.88-0.62,1.06-1.78,0.63-1.78,0.63l-2.69,0.09s-1.61,0.26-1.88,0.44c-0.26,0.18-0.9,0.73-0.9,1.09s-0.44,1.96-0.53,2.31c-0.09,0.36-0.16,1.97-0.16,1.97s0.18,0.78,0.63,1.41c0.44,0.62,0.43,1.81,0.43,1.81l-1.25,1.16s0.26,1.67,0.35,2.03,1,3.4,1,3.4l0.43,2.5s-0.28,1.42-0.28,1.69-0.96,4.57-0.96,4.57-0.09,0.98-0.54,1.24c-0.44,0.27-2.06,1.88-2.06,1.88s-0.19,0.99-0.19,1.34c0,0.36,0.37,1.06,0.19,1.5-0.18,0.45-1.97,1.72-1.97,1.72l-2.59,0.72-1.31,0.88-0.29,3.84-0.09,2.22v1.81c0,0.36,0.27,1.34,0.72,1.78,0.45,0.45,2.16,1.97,2.16,1.97l2.21,0.53,1.16,0.78,0.1,2.25s-0.37,1.33-0.82,1.5c-0.44,0.18-2.75,1.82-2.75,1.82l-0.53,1.15,0.97,1.16,1.97,1.59s0.78,0.1,0.87,0.72c0.09,0.63-0.15,2.6-0.15,2.6l-0.47,1.43-1.25,1.07-1.41,1.43-0.19,1.6-1.24,0.81-2.79-0.28-1.59-1.35-1.78-0.68-2.25-0.63s-0.45-0.74-0.63-1.19c-0.17-0.44-0.34-1.68-0.34-1.68l-1.25-0.72-1.87,1-1.26,0.09-0.18,1.69-0.35,2.41-0.53,1.53-0.9,0.97-1.6,0.53s-1.89,0.28-2.25,0.37c-0.35,0.09-1.34,1.41-1.34,1.41s-0.53,0.8-0.44,1.15c0.09,0.36,0.19,1.25,0.19,1.25l-1.16,0.91-2.06,0.81s-0.44,0.9-0.44,1.25c0,0.36,0.16,1.97,0.16,1.97l0.37,1.5,0.1,1.63s0.7,0.7,0.43,1.06c-0.26,0.36-2.78,0.62-2.78,0.62l-1.93-2.78-1-1.5-1.07-2.34-1.06-0.69h-1.72l-1.59,1.69s-0.89,0.81-1.16,1.44c-0.27,0.62,0.01,1.78-1.15,1.78s-3.22-0.38-3.22-0.38l-1.25-1.15-1.97-0.44-1.34-0.19s-0.62,0.64-0.97,0.91c-0.36,0.27-1.35,1.25-1.35,1.25v0.62l-0.72,1.88-1.15,2.22-0.81,0.9-0.29,1.35,0.63,1.68s0.45,0.9,0.81,1.25c0.36,0.36,0.63,0.35,0.72,0.97,0.09,0.63,0.19,2.6,0.19,2.6l-0.38,2.4-0.97,1.88s-1.88,1.79-2.15,2.06-2.13,1.61-2.13,1.97-1.62,4.19-1.62,4.19l-1.25,2.25s-0.69,2.11-0.78,2.56-0.63,3.59-0.63,3.59-0.09,1.33-0.62,1.6c-0.54,0.26-3.69,0.81-3.69,0.81s-2.12,1.07-2.56,1.34c-0.45,0.27-0.72,0.63-0.72,0.63s-0.19,0.52-0.1,0.87c0.09,0.36,1.16,2.25,1.16,2.25l1.44,2.66,1.06,0.56,0.97,1.06,1.09,1.69v0.81l1.25-0.43s0.9-0.91,1.25-1c0.36-0.09,1.78,0.28,1.78,0.28l1.44,0.87s1.43,0.91,1.78,1c0.36,0.09,2.03,1.41,2.03,1.41l4.32,2.87s0.34,0.82,1.06,0.82c0.71,0,2.41-0.38,2.41-0.38l1.78-0.34,1.06,1.15,0.28,1.16,0.28,1.53,2.56-0.81,2.44-2.41s2.14-2.16,3.13-2.34c0.98-0.18,2.12,1.19,2.12,1.19s0.72,1.58,1.25,2.03c0.54,0.44,2.43,2.32,2.78,2.59,0.36,0.27,3.03,1.53,3.03,1.53l2.22,2.66c0.45,0.53,2.52,3.22,2.97,3.22s2.84,0.18,3.38,0.09c0.53-0.09,1.96,0.63,2.5,1.25,0.53,0.63,1.78,2.69,1.78,2.69s1.27,1.69,1.62,1.78c0.36,0.09,1.16,1.88,1.16,1.88s0.89,1.62,1.25,1.53,2.31-0.63,2.31-0.63,0.73,0.15,0.91,0.69c0.18,0.53,0.87,2.59,0.87,2.59s1.18,0.62,1.53,0.53c0.36-0.09,1.88-1.25,1.88-1.25s1.77-0.26,2.12-0.43c0.36-0.18,1.44-0.82,0.82-1.44-0.05-0.04-0.11-0.06-0.16-0.09,0.05-0.01,0.34-0.07,0.34-0.07l1.69-0.62,8.75-2.88s1-1.76,1-2.03,0.63-2.06,0.63-2.06l0.06-2.06,0.81-0.82,1.78-0.96,2.25-0.82,1.16-1.68,1.06-0.82,5.44-2.59,1.62-1.31,0.82-1.1,0.62-2.5,1.94-1.15s1.27-0.9,1.62-1.35c0.36-0.44,0.35-0.97,0.35-0.97l-0.63-0.81-1.25-1.25-0.34-0.81s0.18-0.96,0.62-1.41c0.45-0.44,0.71-0.63,1.07-0.72,0.35-0.09,1.25,0.35,1.25,0.35l1,1.09,0.87-0.47,0.63-1.78s0.81-2.14,0.9-2.5,0.25-1.69,0.25-1.69-0.25-3.05-0.25-3.5v-2.5s0.44-4.01,0.53-4.37,0.35-2.13,0.35-2.13l-0.1-1.87s-0.44-1.17-0.62-1.44-0.16-0.81-0.16-0.81,0.63-1.05,0.72-1.41c0.09-0.35-0.37-0.81-0.37-0.81s-0.54-0.71-0.72-1.06c-0.18-0.36-0.88,0.15-0.88,0.15l-1.44,0.91s-0.79,1.26-1.15,1.53-0.44,1.31-0.44,1.31l-0.28,4.38-0.81,1.34-1.53-0.09c-0.34-0.63-0.73-1.32-0.79-1.6-0.08-0.44-0.43-2.67-0.34-3.65s0.97-4.38,0.97-4.38l1.25-1.25s0.09-1.52-0.53-2.06c-0.63-0.53-1.87-1.07-2.41-1.34-0.53-0.27-1.72-1.35-1.72-1.97,0-0.63,0.92-1.77,1.19-2.13,0.27-0.35,3.93-1.51,4.28-1.78,0.36-0.27,3.57-2.15,3.57-2.15l3.65-1.07,2.78,0.25,2.13-0.34,1.34-2.5,2.88-0.81s1.87,1.25,2.4,1.25c0.54,0,2.22-0.72,2.22-0.72s1.07,0.64,1.25,1,1.63,1.34,1.63,1.34l1.93-0.37s1.35-0.44,2.07-0.35c0.71,0.09,1.7,0.98,2.06,1.07s2.75-0.72,2.75-0.72l1.09-1.5,2.5-1.16s1.35-1.08,1.35-1.53,0.15-3.22,0.15-3.22,1.25-0.61,1.88-0.97c0.62-0.35,2.15-0.18,2.15-0.18s0.17-1.34,0.35-1.79c0.18-0.44,1.33-1.34,1.78-1.43s2.44,0.37,2.44,0.37l1.15,0.97-1.34,1.44-0.72,1.15,0.72,0.72s2.31-0.45,2.94-0.72c0.62-0.26,2.24-0.44,2.78-0.53,0.53-0.09,2.84-1.15,2.84-1.15s0.91-1.08,0.91-1.44-0.2-1.71-0.38-2.16c-0.18-0.44-2.21-1.14-2.65-1.59-0.45-0.45-0.54-2.58-0.72-2.94s-0.9-1.9-0.63-2.44c0.27-0.53,1.06-1.78,1.06-1.78l-0.62-2.5s-0.01-2.48,0.34-2.84c0.36-0.36,2.07-1,2.07-1l2.93,0.81s0.9,1.15,1.35,1.06c0.44-0.09,2.15-0.53,2.15-0.53l0.25-3.56-0.87-1.16s-1.27-1.42-1.63-1.68c-0.35-0.27-1.25-1.25-1.25-1.25l-1.68-2.97-0.25-2.6-0.72-1.68-2.25-0.54-1.78,0.97-3.13,1.53-1.97,0.44-0.72-0.72-0.78-2.84-1-1.59-2.75-2.35-2.34-1.68-2.66-0.91-2.78-0.06s-2.49,0.8-2.84,1.15c-0.36,0.36-1.45,1.52-1.72,1.88-0.27,0.35-0.88,2.5-0.88,2.5l-0.28,2.12v2.5s-0.17,1.36-0.43,1.72c-0.27,0.36-3.94,2.03-3.94,2.03l-1.16,1.72-0.19,2.66-0.97,2.25-2.15,2.22s-0.6,0.63-0.69,0.09-0.62-2.22-0.62-2.22l-2.16-2.34s-0.44-1.23-1.06-0.78c-0.63,0.44-1.63,1.31-1.63,1.31l-3.28,1s-0.89,0.43-1.25,0.87c-0.36,0.45-2.97,0.72-2.97,0.72l-2.03,0.28-2.16,2.5s-0.62,1.26-1.24,0.82c-0.63-0.45-2.22-2.35-2.22-2.35l-0.82-1.59-0.53-2.94,0.16-5.56-0.06-2.56,1.5-2.6,1.87-3.03s0.44-1.61,0.44-2.06-0.53-3.03-0.53-3.03l-2.03-2.25-4.94-3.66s-0.63-0.71-0.63-1.25c0-0.53,0.1-2.31,0.1-2.31l1.15-1.97s0.63-0.35,0-1.06c-0.62-0.72-3.18-4.57-3.18-4.57l0.15-5.34s0.02-0.65-0.34-1.09c-0.36-0.45-2.59-3.28-2.59-3.28l-1.54-1.88s-0.24-0.62-0.68-0.62c-0.45,0-2.16,0.68-2.16,0.68s-1.17,0.82-1.44,0.29c-0.27-0.54-0.25-2.6-0.25-2.6s-0.29-1.16,0.16-1.25,1.62-0.44,1.62-0.44h1.5l0.29-1.43-1.79-1.97-1.53-1.35-1.4-0.06s-0.14-0.03-0.25,0z\",\"name\":\"Irkutsk Oblast\"},\"br\":{\"path\":\"m513.39,476.39s1.6072,0.98214,2.3214,1.1607c0.71429,0.17857,2.8572,1.25,3.3929,1.3393,0.53571,0.0893,1.7857,0.71428,2.5,0.98214,0.71429,0.26786,1.875,0.98214,2.5893,1.3393,0.71428,0.35714,2.2321,0.53571,3.2143,0.625,0.98214,0.0893,2.8571,0.89285,3.4821,1.0714,0.625,0.17858,2.1429,1.0714,2.9464,1.1607,0.80357,0.0893,1.5179,0,2.7679,0.625s2.7679,1.3393,3.125,1.5179c0.35714,0.17857,0.71429,0.26785,0.80357,0.98214,0.0893,0.71428,0,2.6786,0.0893,3.0357,0.0893,0.35715,0.26785,1.6964,0.625,2.0536,0.35714,0.35715,1.6071,1.9643,2.5893,2.5893,0.98215,0.625,1.4286,1.6964,1.9643,2.1429,0.53571,0.44643,2.3214,1.875,2.8571,1.9643,0.53572,0.0893,2.3214,0.625,2.7679,0.625,0.44643,0,5.0893,0.44643,5.0893,0.44643s1.7857-0.80357,2.7679-1.25c0.98214-0.44643,4.0179-1.25,4.4643-1.5179,0.44643-0.26785,1.5178-0.98214,2.6786-1.0714,1.1607-0.0893,4.1964-0.0893,5.0893-0.0893,0.89286,0,4.1072,0.0893,4.1072,0.0893s2.3214-0.0893,3.125,0.44642c0.80357,0.53572,1.6071,1.6072,1.9643,2.1429,0.35715,0.53572,0.625,1.4286,1.0714,1.6071,0.44643,0.17858,1.4286,0.35715,1.875,0.35715,0.44643,0,2.1429-0.26786,2.5-0.35715,0.35714-0.0893,2.2321-0.44642,2.2321-0.44642l0.0893-2.6786s-0.0893-1.7857,0.53571-2.0536c0.625-0.26785,4.4643-1.5178,4.8214-1.6964,0.35715-0.17857,1.25-1.6071,1.25-1.6071s-2.5-0.625-3.3036-0.625c-0.80357,0-1.25-1.4286-1.25-1.4286l1.0714-1.5179,0.17857-1.9643,0.98214-1.0714,0.80358-1.3393s-0.625-0.98214-0.80358-1.3393c-0.17857-0.35715-0.0893-1.4286-0.0893-1.4286l2.2321-1.1607,3.125-0.35714,2.4107-1.1607,3.4821-2.4107,1.7857-0.625s1.4286,0.0893,1.875,0.26786c0.44643,0.17857,2.4107,0.53571,2.5893,0.17857,0.17857-0.35714,1.6071-1.9643,2.0536-2.3214,0.44643-0.35714,2.6786-2.1429,2.6786-2.1429l1.4286-1.1607s0.98215-1.25,1.4286-1.5179c0.44643-0.26786,1.875-1.0714,2.4107-1.0714,0.53571,0,0.98214,0,1.3393-0.26785,0.35715-0.26786,1.1607-1.25,1.3393-1.6072,0.17857-0.35714,1.0714-0.80357,1.6071-0.89285,0.53572-0.0893,5-1.3393,5-1.3393l2.6786-1.5179s1.875-1.5178,2.0536-1.875c0.17857-0.35714,1.6071-2.8571,1.6071-2.8571l0.98214-1.875s-0.26786-1.4286-0.71428-1.7857c-0.44643-0.35715-2.1429-1.6072-2.1429-1.6072l-2.5-1.25s-1.25-0.80357-1.1607-1.6071c0.0893-0.80357,7.5-5.625,7.5-5.625s0.98215-1.6964,1.0714-2.0536c0.0893-0.35714,0.89286-1.9643,1.25-2.3214,0.35715-0.35714,2.5-2.0536,2.5-2.0536s1.4286-0.625,1.875-0.71429c0.44643-0.0893,3.5714-1.5178,3.5714-1.5178l1.25-0.98215s0.44643-2.0536,0.44643-2.5893c0-0.53572-0.80357-3.8393-0.80357-3.8393s-1.0714-0.53571-1.4286-0.89285c-0.35715-0.35715-1.25-0.80358-2.1429-0.80358-0.89286,0-2.6786,0-3.125-0.625-0.44643-0.625-1.3393-1.25-1.6964-1.875-0.35714-0.625-1.1607-1.7857-1.25-2.2321-0.0893-0.44643-0.80357-2.4107-0.98214-2.7679-0.17857-0.35714-1.0714-2.3214-1.0714-2.3214l-2.0536-3.5714-1.0714-2.7679,0.26786-2.0536,1.0714-0.625,0.80357-1.25,1.4286-1.875,0.625-0.98214-2.3214-1.25s-1.875,0.44642-2.2321,0.71428c-0.35715,0.26786-0.98215,1.3393-0.98215,1.3393s0.35715,0.625,0,0.80357c-0.35714,0.17857-2.3214,0.44643-2.3214,0.44643l-1.25,0.89285-0.71429,1.9643v1.6071l-0.98214,0.98215-2.0536,1.0714-1.3393,0.98215-1.1607,1.3393s-1.6964,0.0893-2.0536,0.0893c-0.35714,0-2.0536-0.625-2.0536-0.625l-2.6786,0.17857-2.3214-0.0893-1.9643-1.4286-1.4286,0.26786-2.0536-0.35714s-0.80357-0.71429-1.1607-0.71429c-0.35714,0-2.1429,0.625-2.1429,0.625l-1.5178,1.3393-0.98215,1.0714-2.6786,0.26785-1.9643-0.0893-2.3214,0.44643-2.2322,1.1607-3.3928,1.7857-2.3214,0.98215-1.3393,0.89285-0.89285,1.1607s-0.0893,0.35714,0.0893,0.71428c0.17857,0.35715,0.98214,1.4286,0.98214,1.4286l1.6072,0.80357,0.98214,0.89285,0.83,0.91,0.0893,1.1607-1.6071,2.1428-0.35714,2.2322-0.35715,1.875v2.6786l0.80358,1.6071,1.1607,1.4286s0.26786-0.44643,0.71429-0.80357c0.44642-0.35714,1.1607-2.3214,1.1607-2.3214v-2.0536l0.0893-2.0536,0.98214-1.875,1.6964-1.25,1.1607-0.17857,0.89286,1.1607s-0.0893,1.25-0.26786,1.6964c-0.17857,0.44643-0.53571,0.98214-0.35714,1.3393,0.17857,0.35714,0.89286,1.4286,0.89286,1.4286l-0.17858,2.7678s-0.35714,2.3214-0.35714,2.6786c0,0.35714-0.26786,2.5893-0.26786,3.0357v2.5893c0,0.89285,0,1.5178,0.0893,2.1428s0.0893,1.6964-0.0893,2.1429c-0.17857,0.44643-0.44642,1.25-0.71428,1.9643-0.26786,0.71428-0.35714,1.25-0.44643,1.9643-0.0893,0.71429-1.0714,1.6964-1.0714,1.6964s-0.71428,0.26786-0.98214-0.625-1.6071-0.98214-1.6071-0.98214-0.71429,0.44642-1.0714,0.98214c-0.35715,0.53571-0.89286,1.25-0.35715,1.6964,0.53572,0.44643,1.5179,1.6071,1.5179,1.6071s0.625,0.35714,0.26786,1.1607c-0.35714,0.80358-1.1607,1.0714-1.6964,1.4286-0.53571,0.35714-1.5179,0.89285-1.6964,1.25-0.17857,0.35714-0.71428,1.4286-0.71428,1.7857,0,0.35714-0.44643,2.0536-0.44643,2.0536l-1.3393,0.98214-1.875,1.3393s-2.2321,0.71429-2.6786,0.98214c-0.44643,0.26786-2.5,1.4286-2.8571,1.7857-0.35715,0.35714-0.53572,1.25-1.4286,1.6071-0.89286,0.35714-3.125,1.3393-3.125,1.3393l-0.98215,0.26785s-0.35714,0.80357-0.35714,1.1607c0,0.35714-0.26786,2.2321-0.26786,2.7678,0,0.53572-0.26785,0.98215-0.625,1.6964-0.35714,0.71429-0.98214,1.6964-1.6071,1.7857-0.625,0.0893-2.7679,0.71428-3.2143,0.89285-0.44642,0.17858-2.5,0.89286-3.0357,0.98215-0.53571,0.0893-2.8571,1.0714-2.8571,1.0714l-0.71429,0.80357-1.5179,1.1607-2.0536,0.71429-1.4286,0.80357-1.6964-1.0714-0.35714-0.98214-0.44643-1.25s-0.35714-0.35715-1.25-0.26786c-0.89286,0.0893-2.0536,0.44643-2.0536,0.44643s-1.3393-1.4286-1.6071-1.875c-0.26786-0.44643-1.875-3.125-1.875-3.125l-1.54-1.99-1.34-1.61s-1.1607-0.71429-1.6964-0.71429c-0.53571,0-2.6786-0.17857-3.0357-0.17857-0.35715,0-1.6072-0.89285-1.7857-1.1607-0.17857-0.26786-3.4821-4.2857-3.4821-4.2857l-1.875-0.89285-2.8571-1.9643-1.9643-2.2321-1.0714-1.6964-0.89286-0.625s-0.89285-0.26786-1.25,0.0893c-0.35714,0.35714-0.80357,0.53571-1.3393,0.89285-0.53572,0.35715-1.875,1.4286-1.875,1.4286l-1.3393,1.25-1.9643,1.1607-1.4286,0.89286s-0.89286,1.0714-0.98215,1.6071c-0.0893,0.53571-0.26785,1.1607-0.26785,2.0536,0,0.89286-0.35715,3.3036-0.35715,3.3036z\",\"name\":\"Buryat Republic\"},\"zb\":{\"path\":\"m588.41,500.07s1.1364,1.1364,1.6415,1.5152c0.50508,0.3788,1.6415,1.6415,2.2728,1.894,0.63134,0.25254,2.6516,1.6415,2.6516,1.6415s2.9042,1.0102,3.4093,1.0102h5.5558c1.1364,0,3.283,0.75762,3.283,0.75762s0.88388,0.63134,2.0203-0.25254c1.1364-0.88389,2.3991-1.6415,2.3991-1.6415s0.75762,0.25254,1.6415,0.63135c0.88388,0.3788,1.5152,1.2627,2.1466,1.2627,0.63135,0,3.4093-1.7678,3.4093-1.7678s2.6516-2.2728,3.1567-2.7779c0.50507-0.50508,2.5254-0.88388,3.5355-1.2627,1.0102-0.37881,5.4296-0.50508,5.4296-0.50508s1.894-1.2627,2.2728-1.894c0.37881-0.63135,1.7678-3.4093,1.894-3.9143,0.12627-0.50508,2.7779-2.3991,3.4093-2.9042,0.63135-0.50508,4.9245-2.5254,5.177-3.0305,0.25253-0.50508,2.0203-1.5152,2.0203-1.5152l3.1567,1.2627,2.9042,1.2627s2.2728,0.25254,2.9042,0.25254c0.63135,0,2.2728-0.50508,2.7779-0.88388,0.50508-0.37881,3.1567-1.7678,3.1567-1.7678s3.283,0.25254,3.7881,0.50508c0.50508,0.25253,1.7678,0.88388,2.3991,1.1364,0.63135,0.25254,3.9144,1.389,3.9144,1.389s3.6618,0.3788,4.4194,0.25254c0.75762-0.12627,2.5254-1.7678,2.7779-2.3991,0.25254-0.63134,0.75762-2.3991,1.6415-2.9042,0.88388-0.50507,4.2932-1.5152,4.2932-1.5152s1.389-0.12627,1.5152-1.6415c0.12627-1.5152,0.37881-2.9042-0.25254-3.5355-0.63135-0.63134-1.389-0.88388-1.7678-1.7678-0.3788-0.88389,0.88389-8.9651,0.88389-8.9651l1.6415-3.7881,1.2627-4.2932s1.389-2.2728,1.2627-2.9042c-0.12627-0.63134-0.37881-3.9143-0.37881-3.9143l-1-2.41s-1.1364-0.88388-1.5152-1.389c-0.37881-0.50507-1.0102-0.37881-1.5152-1.0102-0.50508-0.63135-1.7678-1.1364-1.7678-1.7678,0-0.63134-0.25254-1.5152,0.37881-2.0203,0.63134-0.50508,3.0305-3.0305,3.7881-3.4093,0.75761-0.37881,4.5457-2.5254,4.9245-3.0305,0.37881-0.50507,1.389-1.6415,1.7678-2.1466,0.37881-0.50508,0.88388-0.50508,0.63135-1.6415-0.25254-1.1364-2.6516-3.5355-2.6516-3.5355s-0.63135-0.88389-1.5152-0.88389c-0.88389,0-3.1567-0.3788-3.1567-1.0102,0-0.63134-0.37881-1.2627-0.12627-2.0203,0.25254-0.75762,2.0203-2.2728,2.2728-2.9042,0.25254-0.63135,0.37881-1.894,0.37881-1.894l-2.3991-1.6415-2.6516,0.12627s-0.25254-0.25253-0.25254-0.88388c0-0.63134,0.63135-2.7779,0.88388-3.283,0.25254-0.50507,0.50508-1.5152,0.63135-2.1466,0.12627-0.63134-0.25254-1.7678-0.75761-2.3991-0.50508-0.63135-1.5152-1.389-1.5152-1.389s-1.1364-0.50508-1.6415,0.12627c-0.50508,0.63134-1.1364,1.5152-1.1364,1.5152s-1.1364,0.12627-1.6415-0.25254c-0.50508-0.37881-0.88388-4.1669-0.88388-4.1669s-0.88389-1.2627-1.6415-1.389c-0.75762-0.12627-1.6415-0.12627-2.1466,0.50508-0.50507,0.63134-1.0102,1.0102-1.7678,1.5152-0.75762,0.50508-1.2627,1.1364-1.894,0.75762-0.63134-0.37881-1.389-0.75762-1.2627-1.389,0.12627-0.63135,0.75761-1.6415,0.88388-2.1466,0.12627-0.50507-1.7678-2.1466-1.7678-2.1466l-3.283-0.12627-1.1364-1.1364c-0.12627-0.75761,0.25254-2.5254,0.25254-2.5254l-1.389-1.5152-2.7779-4.0406-1.2627-1.894-3.1567-0.3788-1.1364-2.0203-0.25254-2.9042-1.2627-0.3788h-1.2627l-1.6415,0.63134-1.6415-1.0102-3.0304-0.63135-1.894,0.75762-0.37881,1.0102-0.12627,1.894,0.37881,1.894-0.25254,1.5152-0.50507,2.0203,0.75761,2.0203,0.50508,1.389,1.7678,1.5152,0.88389,0.88388,0.25254,1.894s-0.25254,1.0102-0.75762,1.389c-0.50507,0.37881-3.0305,1.2627-3.0305,1.2627s-2.3991,0.63134-2.9042,0.75761c-0.50508,0.12627-3.4093,0.75762-3.4093,0.75762l-1.389,1.5152-0.25254,1.6415,0.75762,2.5254,1.7678,3.283,1.6415,3.7881,0.75762,2.9042,2.0203,2.2728,1.2627,1.1364,2.1466,0.25254,2.2728,0.50507,1.7678,1.389,0.50507,1.6415,0.12627,1.894v2.3991l-1.894,1.6415-3.0305,1.2627-2.5254,1.2627-2.1466,2.0203-1.0102,1.7678-0.75761,2.1466-2.6516,1.6415-1.894,1.389-2.0203,1.5152-0.88388,0.88388v0.75762l0.88388,0.88388c0.50508,0.12627,2.1466,1.2627,2.1466,1.2627l1.894,1.0102s0.75762,0.88389,0.88389,1.389c0.12627,0.50508,0,1.5152-0.12627,2.1466-0.12627,0.63134-2.0203,3.6618-2.0203,3.6618l-1.894,1.6415-3.6618,2.0203-3.1567,0.63135-2.1466,1.0102s-0.75761,0.37881-1.1364,1.0102c-0.3788,0.63135-1.6415,1.2627-1.6415,1.2627l-2.2728,0.50507-1.0102,0.88388s-1.2627,0.88389-1.6415,1.389c-0.37881,0.50508-3.5355,2.9042-3.5355,2.9042l-0.88389,1.389s-0.75761,1.1364-1.389,1.2627c-0.63134,0.12627-2.2728,0.12627-2.2728,0.12627l-2.3991-0.88388-1.6415,1.389s-1.6415,0.37881-2.1466,0.88388c-0.50508,0.50508-2.7779,1.7678-2.7779,1.7678l-2.3991,0.63134s-1.894-0.25253-2.5254,0.12627c-0.63134,0.37881-1.2627,1.5152-1.2627,1.5152l0.63135,1.5152,0.25254,0.88388-0.88389,1.894s-1.0102,0.75762-1.0102,1.2627-0.88388,2.0203-0.88388,2.0203-0.50508,0.88388,0.25253,1.389c0.75762,0.50507,2.5254,0.88388,2.5254,0.88388s1.389-0.12627,1.5152,0.50508c0.12627,0.63134-1.1364,1.6415-1.1364,1.6415l-2.6516,0.75762-2.0203,1.2627-0.88389,1.6415z\",\"name\":\"Zabaykalsky Krai\"},\"am\":{\"path\":\"m662.32,397.46,4.6429-0.17857,2.3214-0.17858,3.5714-1.7857,2.6786,0.35714,3.5714,1.0714,2.1429,1.0714,2.6786,0.53571,4.4643-0.53571,3.0357,0,2.3214,0.53571,2.8571,2.1429,2.1429,0.89286,2.8571,0.35714,2.3214-1.7857,2.3214-0.71429,1.9643,0,2.1429,1.4286,2.1429,0.71429,2.5-0.71429,1.7857-1.9643,1.7857-1.25,4.1072,0,2.5-1.4286,2.1428-0.89286,3.75,0,1.4286,0,1.25-0.71429,0.53571-2.5,1.6071-1.0714,4.2857-2.3214,2.3214-0.89286,3.5714-1.9643,2.8572-1.4286,5-0.89286,3.0357,0,1.6071,1.4286l-0.37,3.2s-1.25,1.6071-1.9643,2.6786c-0.71429,1.0714-1.6072,2.6786-1.9643,3.3929-0.35714,0.71429-1.25,2.1429-1.25,2.1429s-0.53571,2.8571-0.71429,3.5714c-0.17857,0.71428-1.0714,2.8571-1.0714,2.8571s-1.25,1.7857-1.0714,2.5c0.17857,0.71428,1.25,1.25,1.25,1.25l0.89285,0.71428,3.2143-0.71428s1.7857-0.17857,2.6786-0.17857c0.89286,0,2.5,0.89285,2.5,0.89285l0.53572,1.9643,0.89285,2.6786s0.17857,0.53572,1.6072,0.53572,2.6786-1.4286,2.6786-1.4286l0.17857-2.3214s1.0714-0.89286,1.9643-0.89286c0.89286,0,2.5-0.53572,2.5-0.53572l1.25-2.1428,0.35715-2.5,1.9643-1.7857,2.3214,0.17857c0.71,0.19,3.03-1.6,3.03-1.6l1.4286-1.4286s0.89285-1.0714,1.9643-0.35714c1.0714,0.71428,2.3214,2.5,2.3214,2.5v2.8571l0.53572,1.6071,1.9643,1.7857s1.6071,0.71428,1.25,1.6071c-0.35714,0.89286-2.8571,1.9643-3.5714,1.9643-0.71428,0-3.5714,0.89285-3.5714,0.89285l-1.6071,0.17857-1.96,0.89s-0.71429,0.17857-0.17858,1.0714c0.53572,0.89286,1.9643,1.7857,1.9643,1.7857l1.25,0.89286,0.35714,1.9643-3.2143,2.3214-1.6072,3.0357-0.17857,2.1429-1.6071,2.3214-2.6786,0.89285-1.6071,1.4286,1.9643,1.9643,0.35714,1.7857-2.3214,2.3214-1.25,3.5714,1.6071,2.8571s3.5714,1.4286,4.2857,1.6072c0.71429,0.17857,4.8214,0.71428,4.8214,0.71428s1.4286,0.71429,1.9643,1.25c0.53571,0.53572,0.71428,3.2143,0.71428,3.2143l0.35715,2.5s0,0.53571,0.71428,1.0714c0.71429,0.53571,0,3.5714,0,3.5714l-0.71428,2.8571-0.53572,1.7857-1.25,1.7857-3.2143,0.35714-4.1072-0.17857-2.8571-1.4286-1.77-0.53-3.04,1.07h-3.3929-2.5l-3.2143,0.89286s-2.6786-0.35714-3.5714-0.53572c-0.89286-0.17857-3.5714-2.1428-3.5714-2.1428l-3.22-2.67-1.07-2.15-1.43-2.14-1.7857-1.0714-1.0714-1.9643s0-1.0714-0.71428-1.6072c-0.71429-0.53571-2.6786-0.71428-2.6786-0.71428l-0.89286-1.25-1.7857-2.8571-1.9643-2.5s-1.25-1.4286-1.9643-1.6072c-0.72-0.18-1.79-0.36-2.15-1.43-0.35715-1.0714-2.3214-2.6786-2.3214-2.6786l-2.8572-1.4286-2.6786-1.4286-3.0357-0.17857-2.6786-0.17858s-0.71429,0.89286-1.6072,1.0714c-0.89285,0.17857-4.4643-0.35714-4.4643-0.35714l-3.5714-1.25-2.3214,0.35714-1.9643,0.89286-1.6072,1.4286-3.75,0.71429s-3.2143,0.71428-3.3928,0c-0.17858-0.71429-2.8572-4.1072-2.8572-4.1072l-1.7857-1.4286h-1.6071l-1.0714-1.0714v-2.1428l2.1428-2.1429,0.17858-1.4286-0.89286-1.4286-1.25-0.89286-2.1429-0.17857s-0.71428,1.0714-0.71428,0,0.71428-3.3929,0.71428-3.3929l0.89286-2.3214-0.35714-1.9643-1.25-1.7857-1.7857-0.71428-1.25,0.71428-1.25,0.71429-1.25-0.17857s-0.35714-0.71429-0.35714-1.4286c0-0.71429-1.25-2.6786-1.25-2.6786l-0.71429-0.71428-1.7857-0.17857-0.89286,0.89285-1.4286,0.89286-2.5,0.53572s-0.35714-0.35715-0.17857-1.0714c0.17857-0.71429,0.71428-2.5,0.71428-2.5l-1.25-1.4286-0.51-0.52-1.79-0.18h-2.1429l-0.35714-1.0714v-2.1429z\",\"name\":\"Amur Oblast\"},\"ch\":{\"path\":\"M876.72,53.094c-0.34,0-0.66,0.094-0.66,0.094l-1.78,2.124-4.47,1.969s-6.05,2.853-7.12,3.031c-1.07,0.179-1.44,1.969-1.44,1.969s0.37,2.514,0.19,3.407c-0.18,0.892-1.44,1.406-1.44,1.406s-2.32,1.428-2.5,2.5c-0.18,1.071,0.91,2.156,0.91,2.156s2.66,0.906,3.37,0.906c0.72,0,2.85-0.375,3.56-0.375,0.72,0-0.34,1.625-0.34,1.625l-0.91,1.782-2.31-0.907-3.03-0.719s-2.14,0.554-3.03,0.376c-0.89-0.179-2.31-1.438-2.31-1.438l-2.69,0.531-2.88,0.375h-1.06s-0.53,2.656-1.25,2.656c-0.71,0-2.12,1.782-2.12,1.782l-3.41,0.187-2.84,2.875s-2.86,2.496-3.75,3.032c-0.9,0.535-1.61,0.531-2.5,0.531-0.9,0-2.5,1.062-2.5,1.062l-4.85,3.219-5.15,1.062-3.07,0.907s-1.04,2.861-1.93,3.219c-0.9,0.357-2.88,1.968-2.88,1.968l-3.22,1.938-2.12,1.966-2.16,3.03-1.25,1.97-1.06,2.5v3.22s-0.91,0.72-1.63,0.72c-0.71,0-2.84,1.25-2.84,1.25s-0.9,2.51-1.44,3.41c-0.53,0.89-2.85,1.76-3.56,2.12s0.34,1.25,0.34,1.25l2.35,0.53,0.53,2.16,2.69,0.53h2.65,3.75s1.44,1.07,1.97,1.78c0.54,0.72,1.63,1.78,1.63,1.78l-1.82,2.5-2.5,1.1-2.31-0.72s-1.6,1.25-2.31,1.25c-0.72,0-2.16,1.59-2.16,1.59s-1.42-0.71-2.31-1.25c-0.89-0.53-1.96,0-3.03,0s-1.26,1.26-1.44,1.97-0.87,2.84-0.87,2.84-1.09,1.79-1.63,2.5c-0.53,0.72-2.66,2.69-3.37,3.22-0.72,0.54-1.81,0.54-4.13,0.72s-1.07,1.26-1.25,2.16c-0.18,0.89-1.06,3.03-1.06,3.03s-2.15,1.24-2.69,2.31c-0.53,1.07-0.53,2.67-0.53,3.56,0,0.9,0.53,1.82,0.53,1.82h1.06l0.19-0.72,0.19-1.97,0.72-1.06,0.72,0.53,3.9,1.59,5,3.41,0.38,0.87-0.38,5.19-1.06,2.84-4.09,4.47-2.88,3.94-0.34,2.5,1.25,0.19h1.59s-0.17,1.42-0.53,2.31,0.34,1.59,0.34,1.59l2.88,1.25,3.75,0.38,4.62-0.19,2.69,3.41,2.16,1.78h4.47c1.25,0,1.06,2.5,1.06,2.5l1.06,1.59,3.94-0.34s5.36-1.44,6.25-1.44,3.2-0.53,3.56-1.25c0.36-0.71,2.69-1.59,2.69-1.59l1.97-0.91h3.75s2.66-1.24,3.37-1.59c0.72-0.36,0.74-1.98,1.1-2.69,0.35-0.71,0.87-3.03,0.87-3.03l1.25-2.5h1.63l1.78-1.06,1.06-1.63,1.44-0.34,2.31-1.44,1.06-1.25s0.91-0.89,1.63-1.78c0.71-0.89,0.87-1.6,1.4-2.31,0.54-0.72,2.51-1.44,3.22-1.97,0.72-0.54,2.15-2.14,2.5-3.03,0.36-0.9,1.63,0,1.63,0l4.09,0.68s3.22-1.04,5.72-1.93c2.5-0.9,1.08,1.06,0.91,1.78-0.18,0.71,0,3.2,0,4.09s0.88,3.22,1.78,4.47c0.89,1.25,3.9-1.44,3.9-1.44s3.05-1.78,3.94-2.5c0.89-0.71,3.94,0,3.94,0h6.06v-2.84c0-0.72,1.43-3.23,1.97-4.13,0.54-0.89,1.25-3.56,1.25-3.56l0.72-2.5-0.19-4.81s1.79-1.97,3.22-1.97,2.69,1.59,2.69,1.59l4.28,0.91,1.44-0.53s-0.19-3.22-0.19-3.94c0-0.71-0.19-2.84-0.19-2.84l-0.53-3.22s-0.54-2.51-0.72-3.41c-0.18-0.89-0.87-2.12-0.87-2.12l-2.5-1.63,1.25-0.87,4.09-0.38s1.96-2.66,2.5-3.37c0.54-0.72,2.84-2.35,2.84-2.35v-2.5s-1.04-2.13-1.93-3.03c-0.9-0.89-2.35,0.18-3.07,0.53-0.71,0.36-3.03-0.34-3.03-0.34s-1.41-0.88-2.12-0.34c-0.72,0.53-1.63,1.06-1.63,1.06l-1.4-1.06-1.97,1.78-1.44-0.72s-2.84-1.79-4.09-1.25c-1.25,0.53-1.97-0.72-1.97-0.72h-2.5s-0.56,1.25-1.1,1.97c-0.53,0.71-3.03,0.87-3.03,0.87l-2.84,0.91-2.69,3.75-2.69,0.53,1.25-2.5,0.19-1.59-3.03-0.38s2.13-0.88,2.84-1.06c0.72-0.18,3.41-1.06,3.41-1.06l1.97-0.91,0.34-1.59s1.78-3.41,1.78-4.13c0-0.71-0.68-3.22-0.68-3.22l-0.91-2.31s-2.5-4.63-3.22-5.34c-0.71-0.72-1.05-1.78-2.12-1.78-1.08,0-3.07,0.68-3.07,0.68l-1.4,0.91-1.25-1.06s-2.17-1.98-3.6-2.159c-1.42-0.178,0.38-0.719,0.38-0.719l0.87-1.593s-0.16-1.973,0.38-2.688c0.53-0.714,1.97,1.25,1.97,1.25s2.67,1.438,3.56,1.438,1.78,0.531,1.78,0.531,3.41-0.371,4.13-0.906c0.71-0.536,0.68-2.313,0.68-2.313l0.19-2.687,0.72-1.25,1.25-1.782s0.36-1.964,1.25-2.5c0.89-0.535,1.79,0,2.69,0,0.89,0,2.31,1.626,2.31,1.626l1.59,0.718,2.5-1.437s1.28-2.139,1.82-3.031c0.53-0.893,2.84-1.782,2.84-1.782l2.84-2.156,1.44-3.219s2.14-1.973,2.5-2.687c0.36-0.715-0.34-1.782-1.59-1.782h-1.78l-1.82-1.062-1.93-0.188-3.07-1.781-3.18-0.187h-3.75c-0.9,0,0-0.875,0-0.875l2.5-1.625,0.68-2.5-1.06-1.25-2.5-0.532,1.78-1.25,0.53-1.25-2.31-0.531v-2.5s-0.35-1.785-0.53-2.5c-0.09-0.357-0.45-0.437-0.78-0.437zm-77.19,16.062c-0.22-0.01-0.48,0.081-0.78,0.282-1.61,1.071-3.94,2.312-3.94,2.312-1.07,0.357-1.79,1.42-1.97,2.312-0.17,0.893-0.53,2.88-0.53,3.594,0,0.715,0.2,2.496,1.1,3.032,0.89,0.535,3.03,1.598,3.03,2.312s-0.56,2.321,0.15,2.5c0.72,0.179,1.44-0.522,1.97-1.594,0.54-1.071,0.36-3.419,0.72-4.312s1.45-2.491,1.63-3.563c0.17-1.071-0.19-5.187-0.19-5.187s-0.24-1.644-1.19-1.688z\",\"name\":\"Chukotka Autonomous Okrug\"},\"ha\":{\"path\":\"m779.82,276.93c0.53572-0.71428,1.4286-1.4286,1.9643-2.3214,0.53571-0.89285,1.7857-2.5,1.7857-2.5s1.7857-0.17857,4.1072,0.17858c2.3214,0.35714,4.4643,1.4286,5.7143,2.1428,1.25,0.71429,2.6786,1.25,3.0357,2.3214,0.35714,1.0714,1.6071,2.1429,1.6071,3.3929s-1.4286,3.5714-1.4286,4.2857c0,0.71429-0.17857,2.5,0.71428,3.3929,0.89286,0.89286,0.71429,1.6071,1.7857,1.4286,1.0714-0.17857,3.9286-1.0714,5-1.25,1.0714-0.17857,3.3929,0,5,0.53572,1.6071,0.53571,2.8571,0.89285,3.2143,1.6071,0.35715,0.71428,1.0714,1.4286,0.89286,2.5-0.17857,1.0714-2.5,2.8571-2.5,2.8571l0.17857,1.4286,0.89286,1.6072s1.6071,0.71428-0.35714,0.89285c-1.9643,0.17857-3.0357-0.71428-3.0357-0.71428s0.17857-0.17857,0-1.0714c-0.17857-0.89286-0.71428-1.7857-1.7857-1.4286-1.0714,0.35714-2.3214,1.9643-3.0357,2.5-0.71428,0.53571-2.8571,3.0357-2.8571,3.0357s-1.9643,0.71429-2.8571,1.7857c-0.89286,1.0714-4.1071,4.6428-4.1071,4.6428s-0.17858,1.25-1.0714,2.5c-0.89286,1.25-2.3214,2.3214-2.5,3.5714-0.17857,1.25,0,4.1071,0,4.1071s1.4286,1.0714,1.6071,2.3214c0.17857,1.25-0.89286,1.9643-1.25,2.8572-0.35714,0.89285-1.4286,0.53571-1.4286,1.7857s0.17857,5.7143,0.17857,5.7143l-0.35714,4.8214-0.35715,4.1072s-1.0714,1.9643-1.25,3.2143c-0.17857,1.25-0.35714,2.6786-0.35714,3.3929,0,0.71429-0.17857,3.0357-0.17857,3.75,0,0.71429-0.71429,1.9643-0.89286,2.6786-0.17857,0.71429-1.0714,1.25-0.17857,1.9643,0.89286,0.71428,1.9643,1.9643,1.9643,1.9643l-1.7857,3.3929-0.17857,1.9643-1.7857,3.3928-1.25,3.75-0.35715,4.1072-0.71428,1.6071-3.2143,4.1071,0.35715,2.6786s2.1428,1.0714,2.8571,1.0714c0.71428,0,3.3929,0.53572,4.4643-0.17857s2.5-1.4286,3.2143-1.7857c0.71429-0.35715,1.6071-0.89286,2.8571,0.35714s2.5,4.4643,2.5,4.4643,0.17857,1.4286,1.4286,1.0714c1.25-0.35714,1.9643-2.1428,1.9643-2.1428l-1.0714-2.1429,0.53572-2.6786-0.53572-1.7857-1.6071-2.5s-1.7857-1.4286-2.5-1.4286c-0.71429,0-3.75,1.4286-3.75,1.4286s-1.9643,2.3214-1.6071,1.4286c0.35714-0.89285,1.9643-3.3928,1.9643-3.3928l1.6071-0.35715,1.25-1.7857s0.89286-0.71429,1.9643-0.71429,3.2143-1.25,3.2143-1.25,1.25-2.6786,1.0714-0.89285c-0.12,1.78-1.72,4.28-1.72,4.28l1.0714,2.1429,1.9643,2.1429,0.53572,1.7857-0.17857,2.6786,2.3214,1.4286v1.6072,2.8571l1.7857-0.71429c0.71429-0.71428,2.1429-4.2857,2.1429-4.2857l0.89285-3.2143v-2.1428s-1.6071-1.7857-0.89285-1.9643c0.71428-0.17857,4.6428-2.1429,4.6428-2.1429s2.1429-0.53571,3.0357-0.53571c0.89286,0,4.1071,0.17857,4.8214,0.35714,0.71428,0.17857,4.4643,1.6071,4.4643,1.6071s4.4643,1.25,5.1786,1.25c0.71429,0,1.9643,1.7857,1.9643,1.7857s-0.89286,1.9643,0.53571,2.8571c1.4286,0.89286,4.8214,3.0357,4.8214,3.0357l3.75,2.1428s1.4286,3.3929,1.4286,4.2857c0,0.89285-0.17857,4.6428-0.17857,5.7143,0,1.0714,0,5,0.53572,5.7143,0.53571,0.71428,1.0714,2.3214,2.1428,3.2143,1.0714,0.89286,3.2143,4.2857,3.2143,4.2857l2.5,1.25,3.0357,6.9643s1.4286,1.4286,1.6072,2.3214c0.17857,0.89286,1.6071,3.0357,1.7857,3.75,0.17857,0.71429,1.6071,5,1.7857,5.7143,0.17857,0.71428-0.53572,8.5714-0.53572,8.5714l0.53572,3.3928s0,1.25-0.89286,1.9643c-0.89286,0.71429-3.5714,1.6071-3.5714,1.6071l-1.4286,0.17857-1.4286-1.7857-0.53572-2.6786-3.0357-3.0357s-1.9643-1.25-2.6786-0.71428c-0.71429,0.53571-2.3214,1.9643-2.3214,1.9643s-0.89286,1.7857-1.25,2.5c-0.35714,0.71429-1.4286,1.25-0.89286,2.3214,0.53572,1.0714,1.9643,2.6786,1.9643,2.6786s0.35714-0.71428,2.1428-0.53571c1.79,0.18,2.14,2.68,2.14,2.68l-0.89286,3.2143s-1.9643,1.25-2.6786,1.6071c-0.71428,0.35714-2.8571,1.25-1.7857,2.1429,1.0714,0.89285,2.3214,1.25,2.3214,1.25s0.71428,1.25,0,1.9643c-0.71429,0.71429-2.3214,2.1429-2.3214,2.1429s-1.7857,0.35714-3.0357,1.25-3.2143,1.4286-4.2857,1.6071c-1.0714,0.17857-2.8571,1.25-4.1071,0s-2.1429-0.89285-2.5,0.17857c-0.35715,1.0714-1.6072,0.89286-1.7857,1.9643-0.17857,1.0714,0,2.8571,0.35715,3.5714,0.35714,0.71428,0,3.0357,0,3.0357s-2.3214,1.9643-2.5,1.25c-0.17858-0.71428,0.17857-2.3214-0.35715-3.2143-0.53571-0.89286-2.3214-2.5-2.3214-2.5s-2.8571-1.4286-1.7857-2.3214c1.0714-0.89286,2.8571-2.6786,3.2143-3.2143,0.35714-0.53571,0.35714-3.0357,0.35714-3.0357s-2.1429-0.89286-2.6786-1.7857c-0.53572-0.89285-1.0714-3.3928-1.0714-4.1071,0-0.71428-0.71429-3.3929,0.17857-3.75,0.89286-0.35714,2.8571-1.9643,2.8571-1.9643l0.53572-1.9643s-0.53572-0.35714-2.1429-0.35714c-1.6071,0-2.5-0.17857-3.9286,0.89285s-1.4286,1.0714-2.5,2.5-2.1429,2.6786-3.2143,3.2143c-1.0714,0.53571-2.6786,0.71429-2.6786,0.71429s-4.1071-0.71429-4.2857-1.4286c-0.17857-0.71428-1.6072-1.9643-2.5-1.9643-0.89286,0-2.1429,0.35714-3.2143,0.89286-1.06,0.55-1.95,0.73-2.84,0.73-0.89286,0-4.2857,1.0714-4.2857,1.0714s-2.1428,1.7857-3.2143,1.7857c-1.0714,0-2.1014,0.40945-2.28-0.66198-0.17857-1.0714-1.0823-3.4216-1.0823-3.4216l-1.5332-4.3507s-2.6677-0.69261-3.7392-0.87119c-1.0714-0.17857-3.8221-0.85138-3.8221-0.85138l-2.4892-1.1525s-2.1249-2.2078-1.7678-2.9221c0.35714-0.71428,1.7028-4.0044,2.4171-4.5401,0.71428-0.53572,1.2608-1.4069,1.2608-1.4069l-1.25-2.3214s-1.7965-1.2085-0.90368-1.7442c0.89286-0.53571,3.7608-2.0058,3.7608-2.0058l2.0906-4.0892,1.5025-3.2341,3.5498-2.6767-0.89285-1.9643-2.4171-1.7118-0.11357-1.6288,2.5306-1.1237,4.1071-0.71428,2.6786-0.89286,1.0714-1.25-0.53571-1.6071-1.986-1.47-1.0083-2.5108-0.0631-2.4477-1.47-2.0058-1.7226-0.67282-2.2583,1.7442s-1.6703,1.0823-2.3846,1.4394c-0.73,0.34-2.87,0.19-2.87,0.19l-2.3214,1.25-0.44008,2.5-0.80992,2.3214-2.5,1.0714-2.1429,0.53571-0.53571,2.4585-1.4809,1.4286-2.3431-0.17857-0.99746-2.4585-1.0714-2.5s-1.2608-0.51404-1.9751-0.69262c-0.71428-0.17857-4.4534,0.51405-4.4534,0.51405l-1.7857-0.17857-1.7857-1.25,1.9643-5.5357,0.89286-4.1072s1.25-2.3214,1.9643-3.0357c0.71428-0.71429,3.0357-5,3.0357-5l0.35714-2.6786s-0.53571-1.25-1.6071-1.6072c-1.0714-0.35714-5.3571,0.17858-5.3571,0.17858l-2.6786,0.53571s-3.3424,2.5325-4.0567,1.8182c-0.71428-0.71429-1.1219-3.9611-1.1219-3.9611s-3.0376-1.6288-3.0376-2.5217c0-0.89286,1.9662-1.5855,1.9662-1.5855s0.53571-1.0714,0.71428-2.1429c0.17857-1.0714-0.20024-2.8138-0.20024-2.8138l-2.6281-0.77741s-1.4069-0.89472-2.1212-1.0733c-0.71428-0.17857,1.1996-2.2998,1.1996-2.2998l0.89286-1.6072-0.35714-1.0714s-2.2493-0.54655-2.2493-1.2608c0-0.71429,1.6505-3.3604,1.6505-3.3604l-1.5873-1.6703-2.5415-0.82971-0.80806-1.618s0.69262-0.73594,1.5855-1.0931c0.89286-0.35714,1.0498-0.61866,1.0498-0.61866l-1.3852-0.89286v-2.4062c0-0.71429-0.074-2.3304-0.074-2.3304s-1.2718-1.1078-1.4502-2.345c-0.1894-1.3131,2.6371-1.7532,2.6371-1.7532l-0.93619-0.82972-0.49238-1.4917,0.2417-2.1339,2.7525-0.86037,2.9094-0.89285,2.4477,0.1371,0.70345-1.8922,3.2034,0.21106,2.9203,0.0108s0.35715-1.7749,0.35715-2.4892c0-0.71428-1.8705-1.618-1.4286-2.2691,0.40112-0.59101,1.5657-0.89285,2.4585-1.0714,0.89286-0.17858,3.9286-0.71429,4.1072-1.4286,0.17857-0.71428,2.5829-6.1562,2.5829-6.1562s0.96683-1.0083,1.6811-1.1869c0.71429-0.17857,3.9286-0.93432,3.9286-0.93432l-1.764-2.794-3.0051-2.8246-1.6378-4.8539-2.3214-2.1428-1.4286-1.7857v-5.3571l3.0357-6.7857-1.0714-3.2143-0.72512-5.8585,0.81889-2.85s3.5498,0.11543,4.264,0.29401c0.71428,0.17857,7.7634,0.22004,7.7634,0.22004s0.95599-4.0152,1.3131-4.7295c0.35714-0.71428,1.3871-0.826,2.28-1.0046,0.89286-0.17857,3.3495-0.62051,3.3495-0.62051l2.5433,1.1562,1.6071-1.0714z\",\"name\":\"Khabarovsk Krai\"},\"eu\":{\"path\":\"m781.96,462.82c0.98214,1.875,1.1607,1.875,1.875,2.5893l2.6786,2.6786s0.80357,1.1607,1.0714,1.7857c0.26786,0.625-0.0893,1.6964,0.625,1.9643,0.71429,0.26785,2.3214,0.53571,2.7679,0.625,0.44643,0.0893,1.4286,1.0714,2.3214,1.1607,0.89285,0.0893,1.6071,0.0893,2.1428-0.35714,0.53572-0.44643,1.0714-1.25,1.6964-1.7857,0.625-0.53571,2.5893-1.4286,3.125-1.6964,0.53572-0.26785,1.875-0.625,2.3214-1.0714,0.44643-0.44643,1.1607-0.98215,1.1607-2.0536s0.26785-2.7678,0.71428-3.125c0.44643-0.35714,2.9464-1.9643,3.5714-2.5,0.625-0.53571,1.6964-2.2321,2.1429-2.8571,0.44643-0.625,1.875-2.6786,2.2321-3.2143,0.35714-0.53572,2.1429-2.0536,2.1429-2.0536l2.0536-2.3214,0.98214-1.0714,2.6786-1.875,0.71429-0.80357,0.17857-1.1607,0.0893-0.35714-1.5179-0.17857-1.875-0.0893-1.6964,0.44643-1.6964,1.1607-1.3393,1.25-0.80358,1.0714-1.25,1.6072-1.4286,0.98214-1.7857,0.625s-1.25,0.17857-1.7857,0c-0.53571-0.17857-2.1428-0.71429-2.1428-0.71429l-1.4286-0.625-0.80358-0.98214-0.89285-0.625s-0.80357-0.26786-1.1607-0.17857c-0.35714,0.0893-1.7857,0.625-1.7857,0.625l-2.0536,0.71429-2.4107,0.17857s-1.0714,0.44643-1.7857,0.625c-0.71429,0.17857-2.4107,0.80357-2.4107,0.80357l-1.4286,0.89285-1.875,0.26786-0.80357,0.17857-0.35714,0.98215-0.0893,1.4286s-0.44643,1.1607-0.44643,1.5178c0,0.35715-0.53571,1.875-0.53571,1.875l-0.53571,1.1607-0.71429,1.4286z\",\"name\":\"Jewish Autonomous Oblast\"},\"pr\":{\"path\":\"m822.68,473.71c0,0.53571,0.53571,1.25,0.53571,1.25l1.4286,1.4286s0.35715,1.0714,0.44643,1.4286c0.0893,0.35714-0.625,2.0536-0.625,2.0536l-1.1607,2.7679s-0.0893,2.2321,0,2.5893c0.0893,0.35715,0.625,1.0714,0.89285,1.5179,0.26786,0.44643,0.80358,1.1607,0.80358,1.5179,0,0.35714-0.80358,1.9643-0.80358,1.9643v1.9643c0,0.44643-0.44642,1.9643-0.44642,1.9643s-0.17858,0.0893-0.17858,1.0714v2.7679c0,0.71429-0.26785,3.0357-0.35714,3.3929-0.0893,0.35714-1.9643,0.53571-2.3214,0.53571-0.35714,0-1.3393-0.98214-1.3393-0.98214s-0.98215-1.6071-1.1607-2.0536c-0.17857-0.44643-1.3393-1.5179-1.3393-1.875,0-0.35715-0.26786-1.6072-0.89286-1.7857-0.625-0.17857-1.5179,0.26786-1.5179,0.26786s-0.53571,0.89286-0.625,1.25c-0.0893,0.35714,0,0.98214-0.0893,1.4286-0.0893,0.44643-0.71429,2.5-0.71429,2.5s-0.625,0.625-1.1607,0.89286c-0.53572,0.26786-2.2322,1.0714-2.2322,1.6071,0,0.53572,1.0714,0.71429,2.1429,2.0536,1.0714,1.3393,3.125,4.6429,3.125,4.6429l2.5,4.2857,1.4286,4.9107s0.44643,1.6071,0.625,2.1429c0.17857,0.53571,0.89286,1.1607,0.98215,1.9643,0.0893,0.80357,0.53571,2.5-0.35715,2.8571-0.89285,0.35715-4.0178,1.0714-4.0178,1.0714l-0.71429,0.625,1.1607,0.71429s0.625,0.44643,1.0714,0.53571c0.44643,0.0893,0.53572,1.4286,0.98215,1.4286,0.44642,0,1.875-0.35714,2.4107-0.71428,0.53571-0.35714,1.3393-0.625,2.1429-0.625,0.80357,0,1.4286-0.44643,1.4286-1.0714,0-0.625-0.625-3.3929-0.625-3.8393,0-0.44642,1.5179-2.5893,1.5179-2.5893v-2.1429c0-0.35714-0.17858-1.4286,0.35714-1.5179,0.53571-0.0893,2.9464-0.71428,2.9464-0.71428s0-1.1607,1.0714-0.26786c1.0714,0.89286,1.5178,2.9464,1.5178,2.9464s1.875,0.35714,2.2322,0.17857c0.35714-0.17857,0.98214-0.625,1.5178-0.98214,0.53572-0.35714,2.5893-0.53572,3.3929-0.53572,0.80357,0,2.1429-0.44642,2.1429-0.44642l-0.26786-1.1607s2.0536-1.25,2.5-1.5179c0.44643-0.26785,2.2321-1.1607,2.8571-1.7857s1.5179-1.4286,1.9643-2.4107c0.44643-0.98215,1.3393-3.125,1.5179-3.4822,0.17857-0.35714,1.1607-2.5,1.4286-3.2143,0.26785-0.71429,0.89285-2.3214,1.3393-3.125,0.44643-0.80357,1.5179-2.8572,1.5179-2.8572s-0.0893-2.3214-0.0893-2.8571c0-0.53571-0.26785-1.875-0.625-2.8571-0.35714-0.98214-0.53571-1.1607-0.44642-2.1429,0.0893-0.98214,0.98214-1.6071,1.6071-2.0536,0.625-0.44643,1.0714-1.4286,1.0714-1.9643,0-0.53571-1.25-2.9464-1.25-2.9464s0.0893-1.1607,0.35714-1.6964c0.26786-0.53572,1.5179-1.7857,1.5179-1.7857l0.17857-2.9464s0.80357-2.2321,0.80357-2.6786c0-0.44643,0.26786-3.9286,0.26786-3.9286l0.89285-2.1429s0.26786-3.3928,0.26786-3.9286c0-0.53571-0.53571-5-0.53571-5.5357,0-0.53572-0.17857-4.1071-0.17857-4.7321s-0.71429-2.1429-0.71429-2.5893c0-0.44643,0.0893-2.1429,0.26786-2.5893,0.17857-0.44643,0.98214-1.9643,0.98214-1.9643s-0.0893-2.0536-0.0893-2.5893c0-0.53571,0.17858-1.6964-0.44642-1.7857s-2.3214,0.80357-2.3214,0.80357l-1.7857,0.71429-1.5178,0.17857-0.71429-0.44643-1.0714-1.4286s-0.26786-1.4286-0.26786-1.7857c0-0.35714-0.53571-1.1607-0.53571-1.1607l-1.25-1.3393-1.3393-1.3393-1.4286-0.71429-1.0714,0.17857s-0.98214,0.17858-1.0714,0.53572c-0.0893,0.35714-0.53572,0.44643-0.80358,0.80357-0.26785,0.35714-1.1607,1.3393-1.1607,1.3393l-0.53571,1.0714-0.44643,1.0714-0.80357,0.80357-0.17858,0.71429,0.35715,0.80357,0.89285,0.98214s0,0.71429,0.53572,0.80358c0.53571,0.0893,1.0714,0.0893,1.0714,0.0893h1.3393l1.25,0.625,0.71429,0.80357,0.0893,1.3393-0.26785,1.4286-0.44643,1.25-0.53572,0.71429-1.5178,0.89285-1.7857,0.89286-0.89285,0.89286,0.26785,0.80357,1.9643,0.80357,0.80357,0.98214-0.0893,0.71429-0.80357,1.0714-1.0714,1.0714-1.875,0.89286-1.7857,0.98214-3.64,1.44-1.6964,0.44643-1.9643,0.26786-0.89286-0.44643-1.25-0.71429s-0.53571-0.26786-0.89285,0c-0.35715,0.26786-0.625,0.98214-0.625,0.98214l-1.5179,1.0714-0.53571,1.6964,0.0893,1.3393s0.35714,0.71428,0.44643,1.1607c0.08,0.44,0.08,1.33,0.08,1.33l-0.0893,1.6071-0.98214,1.0714z\",\"name\":\"Primorsky Krai\"},\"ma\":{\"path\":\"m829.64,182.46s1.0714,0.71428,2.1429,1.25c1.0714,0.53571,3.0357,2.1429,3.2143,2.8571,0.17857,0.71429,0.17857,2.3214,1.0714,2.8571,0.89286,0.53572,3.5714,1.0714,3.5714,1.0714l1.9643,0.89286,1.0714,1.7857,3.0357,1.6072s0.71429,1.0714,0.17857,1.9643c-0.53571,0.89286,0,2.6786,0,2.6786l2.5-0.35714,2.8572,0.35714,1.6071,2.3214,1.9643,2.6786,2.1429,1.0714,1.9643,2.1429,1.0714,1.9643,0.17857,2.5s-0.35715,2.5,0,3.2143c0.35714,0.71429,1.0714,3.75,1.0714,3.75l1.0714,1.7857s0.53572,1.0714,0.53572,1.7857c0,0.71428-0.89286,2.1429-0.89286,2.1429l0.17857,1.7857-1.9643-0.53571-0.35715-1.9643s0.35715-0.71429-0.53571-0.35714c-0.89286,0.35714-1.7857,1.4286-1.7857,1.4286s-0.35715,0.89286-1.0714-0.53572c-0.71429-1.4286-1.7857-1.9643-1.7857-1.9643s-1.6071-0.71429-1.6071-1.9643-1.7857-2.3214-1.7857-2.3214l-1.6072-1.4286s-0.35714,1.7857-0.35714,2.5c0,0.71429,1.4286,1.4286-0.35714,1.4286s-4.1072,0.71429-4.1072,0.71429l-0.89285,1.0714-0.35715,2.6786-1.25,1.25-2.6786,2.8571-0.35714,2.3214-1.0714,1.9643,0.53572,2.3214,1.4286,1.4286s0.53571,0.71428,0.53571,1.4286v2.6786l0.17857,1.6071,1.6072,1.4286,0.17857,4.4643v4.4643l0.17857,3.0357,1.7857,2.6786,1.0714,3.0357,0.35714,0.89285,1.9643,0.35715,1.0714-1.25,1.9643-1.0714s1.6072-0.17857,2.3214-0.17857c0.71429,0,1.6072,0.89285,1.6072,0.89285l0.17857,0.89286-1.7857,1.4286-1.7857,0.71429v1.0714l-0.71429,0.89285-1.7857,0.89286-1.25,0.53571-0.53572,0.71429-0.17857,2.6786v2.3214l-0.89285,0.71429-1.7857-0.89286-0.71428,1.4286-0.53572,2.5-1.0714,1.25-3.2143,0.71429-1.25-0.17858-0.53572-1.6071,2.5-1.6071,1.25-1.9643s1.9643-1.7857,0.53572-1.7857-2.6786,1.0714-2.6786,1.0714l-0.89286,1.25-0.89286,0.53571s-0.89286,0.35714-1.7857-0.17857c-0.89286-0.53571-2.3214-0.71429-2.3214-0.71429s-1.25,0.89286-1.25,1.4286c0,0.53571,0.35714,1.4286-0.53572,1.4286-0.89285,0-3.2143,0.17857-3.2143,0.17857l-2.5,1.6071-2.5,0.89286-1.0714,2.1429,0.35714,1.7857,0.53572,1.9643,0.35714,0.89285,1.6071,1.0714s0.17857,0.89286-1.7857,0.89286h-4.4643l-1.0714,2.1429-1.0714,1.25-2.5,0.35714-2.1429-2.8571-2.6786-1.25s-1.9643-0.71429-2.6786-0.71429c-0.71429,0-3.3929,0.17857-3.3929,0.17857l-2.1429,0.89286-1.7857,0.17857-1.25-0.89286-1.0714-1.7857-0.17857-2.3214,1.25-1.9643,0.17857-2.5-2.5-3.9286-2.3214-1.4286-2.3214-1.25-2.6786-0.71428-2.6786-0.71429-2.1429,0.71429-1.0714,1.4286-1.0714,1.9643-0.89285,1.25h-1.25l-1.25-1.9643-0.17857-0.89286,1.25-0.71429,0.35714-1.4286v-1.25l-1.25-1.25-5.7143-6.7857s-0.35714-1.0714-0.35714-1.7857v-3.2143l-1.78-0.88-0.89286-0.35714-0.17857-3.0357-0.53572-1.4286-1.0714-0.35714-0.35714-1.25,1.6071-1.4286,2.1429-0.17857,1.0714-0.53572,1.0714-1.0714,2.1429-0.17857,1.9643,0.17857,0.53572-1.0714-1.25-1.9643-1.4286-1.25-0.35714-2.1429s1.25-0.53571,1.9643-0.53571c0.71428,0,3.5714-1.0714,3.5714-1.0714l-0.17858-2.6786s0.53572-0.35714,1.25-0.35714c0.71429,0,3.9286,0.35714,3.9286,0.35714l2.1428-1.7857,4.1072-6.4286-0.17858-3.0357-1.4286-1.4286-2.6786-2.8572s-1.25-0.89285-1.4286-1.6071c-0.17857-0.71428-0.35714-1.7857-0.35714-1.7857l2.1428-2.3214,0.17858-1.6071-1.25-1.25-2.5,0.17857-0.71429-0.53572-1.0714-1.0714v-0.71429l3.06-0.86,1.25-1.0714-0.53572-1.4286-1.25-0.89285-0.17857-1.6072,2.1429-3.0357,3.75-1.25,2.1428-1.25-1.25-2.5s0.17858-0.35714,0.89286-0.35714c0.71429,0,3.3929,0.71428,3.3929,0.71428l1.0714-0.17857-0.53572-3.5714v-1.6071l1.4286-0.53572,0.2-2.66-0.17858-0.53571h2.5l1.6072,0.53571,0.53571,1.9643,1.0714,1.0714s0.53571,0.53571,1.25,0.53571,3.75-0.71428,3.75-0.71428l3.5714-0.71429,2.3214-0.35714,2.6786-1.0714,2.3214-1.4286,2.3214-0.89286,1.9643-0.17857,2.8571-0.35714,2.5-1.6072z\",\"name\":\"Magadan Oblast\"},\"sh\":{\"path\":\"M943.16,321.59c-0.45,0.19-0.81,0.37-1.19,0.94s-0.31,1.53-0.5,1.85c-0.19,0.31-1.53,1.12-1.53,1.12-0.51,0.51-0.87,1.06-2,1.25-1.14,0.19-2.59-0.23-2.85,0.66-0.25,0.88,0.06,2.12,0.69,2.25,0.63,0.12,1.53,0.44,2.1,0.25,0.56-0.19,1.56-1.25,1.56-1.25s0.62,0.3,1,0.93c0.38,0.64,0.97,1.78,0.97,2.03,0,0.26,0.19,1.06-0.07,1.57-0.25,0.5-0.81,2.78-0.56,3.03s1.24,0.9,1.94,0.9c0.69,0,1.09,0.17,1.78-0.78,0.69-0.94,0.93-1.74,1.25-2.56s0.78-1.9,1.09-2.16c0.32-0.25,0.48-1.02-0.22-1.65-0.69-0.63-0.93-1.75-1-2.06-0.06-0.32-0.56-1.09-0.24-1.53,0.31-0.45,1.12-1.31,1-1.69-0.13-0.38-1.38-1.09-1.82-1.47s-0.96-1.82-1.4-1.63zm2.15,20.44s-0.43,0.15-0.69,0.85c-0.25,0.69-0.5,1.74-0.31,2.31s0.56,1.4,0.81,1.78c0.26,0.38,0.75,1.31,0.88,1.62,0.13,0.32,0.53,0.72,1.03,0.91,0.51,0.19,1.12,0.07,1.25-0.44,0.13-0.5,0.19-1.4,0.19-2.03s-0.19-2.15-0.19-2.53,0.07-0.87-0.31-1.31-2.66-1.16-2.66-1.16zm2.53,9.22c-0.56,0.19-1.9,0.5-2.15,0.69-0.26,0.19-0.63,0.52-0.5,1.03,0.12,0.5-0.2,1.24,0.5,1.69,0.69,0.44,2.15,0.96,2.53,1.09s0.55,0.44,1.19,0.13c0.63-0.32,1.09-0.59,1.03-1.41-0.07-0.82-0.59-1.62-0.78-1.88-0.19-0.25-1.5-1.34-1.5-1.34h-0.32zm-117,4.5l-1.87,1.25s0.5,1.12,0,1.12h-1.78s-1.26,0.78-0.5,1.29c0.76,0.5,2.4,0.87,3.03,1,0.63,0.12,1.52,0.65,2.16,1.15,0.63,0.51,1.49,0.87,1.74,1.63,0.26,0.76,0.63,2.28,0.63,2.28l0.91,1.62-0.54,2.16-1.74,0.13s-0.91-1.14-1.41-0.13c-0.51,1.01-0.5,1.77-0.5,2.41,0,0.63,0.27,1.24,0.91,1.37,0.63,0.13,1.48,0.4,2.74,1.41,1.27,1.01,2.03,2.9,2.29,3.53,0.25,0.63,0.24,2.65,0.5,3.41,0.25,0.75,1.4,2.02,2.03,2.53,0.63,0.5,2.03,2.52,2.28,3.03,0.25,0.5,1.25,2.4,1.5,2.9,0.25,0.51,1.78,1.75,1.78,1.75s1.24,1.15,2,1.66,3.8,1.37,4.56,1.37,3.03,0.66,3.28,1.16c0.26,0.51,2.78,5.66,2.78,5.66l5.57,8.34s2.52,2.15,3.15,2.66c0.64,0.5,2.4,3.9,2.91,4.65,0.51,0.76,2.12,4.44,2.5,4.94,0.38,0.51,3.69,5.06,3.69,5.06s2.77,1.88,3.4,2c0.64,0.13,3.41,1.91,3.41,1.91s2.65,2.9,2.78,3.41c0.13,0.5,0.75,3.53,0.75,3.53l2.16,3.4,3.15,2.66,2.5,5.19,0.53,2.25s0,2.15,0.5,2.53c0.51,0.38,5.29,4.06,5.29,4.06l1.65,0.88,1.78,0.25v-2.54s-0.9-1.65-1.15-2.15c-0.26-0.51-0.88-3.03-0.88-3.03s-0.5-0.74-0.5-1.63c0-0.88,0.75-2.4,0.75-2.4s1.53-0.25,2.16-0.25,1.24-0.12,2.25-0.63c1.01-0.5,2.41-0.37,2.41-0.37l2.28,2,1.37,0.78s0.5-1.4,0.5-2.03c0-0.64,0.01-1.53-0.62-2.41-0.64-0.88-1.63-1.88-1.63-1.88l-2.03-1.65s-0.99-1.38-1.75-1.25-1.15,0.24-1.41,0.75c-0.25,0.5,1.52,2.66,0,2.28-1.51-0.38-2.4-0.9-2.78-1.41-0.38-0.5-1.62-1.87-1.62-1.87s-2.4-1.28-3.03-1.53c-0.64-0.26-2.4-0.88-3.04-0.88-0.63,0-4.06-1.15-4.06-1.15l-2.12-2.38-2.41-6.31s-1.12-1.65-1.25-2.41-1.03-3.15-1.16-3.65c-0.12-0.51-0.37-2.28-0.62-2.78-0.25-0.51-1-2.29-1-2.29l-0.53-3.28,1.78-1.62s2.77-1.03,3.41-1.03c0.63,0,5.06-0.13,5.06-0.13l2.4,0.63s2,0.25,2.5,0.25c0.51,0,1.03,0.51,1.16-0.5s-1.53-2-1.53-2l-3.53-0.53-3.66-1.26-2.4-1.78-18.57-15.25-1.5-1.28-1.78-0.12s-0.87,0.13-1.25-0.63-0.4-1.27-1.15-1.9c-0.76-0.64-2.5-1.88-2.5-1.88s-1.52-0.25-2.66-0.5-3.66-1.4-3.66-1.4l-0.4-2.79-1.38-1.25-0.62-1.28,1.25-1.62-0.25-1.91-2.53-2.12-3.54-0.79s-2.4-0.99-2.65-1.5c-0.25-0.5,0.12-2.15,0.12-2.15s-0.62-1.12-1.12-1.5c-0.51-0.38-4.28-1.91-4.28-1.91l-2.91-1.9-1.03-2.63s0.01-1.91-0.63-1.91c-0.63,0-2.78-0.87-2.78-0.87zm119.16,7.94c-0.88,0.25-1.53,0.4-1.72,0.97-0.19,0.56,0.06,1.24,0.31,1.43,0.26,0.19,0.84,0.69,1.47,0.57,0.63-0.13,1.56-0.19,1.82-0.57,0.25-0.38-1.13-1.46-1.32-1.78-0.19-0.31-0.56-0.62-0.56-0.62zm1.75,4.06c-0.51,0.25-1.19,0.56-1.37,1.06-0.19,0.51,0.36,1.37,1,1.75,0.63,0.38,1.05,0.63,1.56,0.06,0.5-0.56,1.09-1.62,1.03-1.93-0.06-0.32-2.22-0.94-2.22-0.94zm0.19,6.97c-0.18,0.01-0.34,0.06-0.5,0.16-0.63,0.37-0.82,1.18-0.82,1.56s0.88,3.09,0.88,3.47-0.87,2.4-1,2.9c-0.13,0.51-0.01,1.33,0.62,2.6,0,0,1.13-0.25,1.38-0.25s1.72-0.94,1.84-1.19c0.13-0.25,0.44-2.28,0.44-2.91s-0.06-2.02-0.12-2.47c-0.07-0.44-0.63-1.4-0.63-1.78s-0.31-1.43-0.69-1.69c-0.28-0.18-0.87-0.44-1.4-0.4zm-4.41,14.53s-1.28,0.03-1.53,0.16c-0.25,0.12-0.69,0.49-0.81,0.75-0.13,0.25-0.57-0.07,0.06,0.62,0.63,0.7,1.02,1.38,1.66,1.38,0.63,0,2.06,0.65,2.31,0.65s1.03-0.21,1.22-0.47c0.19-0.25,0.75-0.49,0.31-1.18-0.44-0.7-0.97-1.06-1.22-1.19s-2-0.72-2-0.72zm1.81,6.47c-0.19,0.31-1.37,1.18-1.43,1.44-0.07,0.25-0.32,0.74-0.38,1.25-0.06,0.5-0.31,1.77-0.31,2.09s-0.53,1.59-0.78,2.16c-0.26,0.56-0.5,1.49-0.44,2.12s-0.07,1.09,0.19,1.66c0.25,0.57,0.24,1.18,0.56,1.37s-0.04,1.29,1.09,0.6c1.14-0.7,1.63-1.34,1.82-1.79,0.19-0.44,0.53-2.09,0.72-2.34,0.18-0.25,0.56-1.43,0.68-1.81,0.13-0.38,0.63-1.9,0.63-2.22s0.06-1.59-0.25-2.22c-0.32-0.63-1.19-1.31-1.19-1.31l-0.91-1zm-4.9,15.4c-0.26,0.07-0.97,0.19-1.28,0.44-0.32,0.26-0.63,0.56-0.69,0.75s-0.5,0.94-0.5,1.19,0.06,1.15,0,1.41c-0.06,0.25,0,0.56-0.56,0.81-0.57,0.25-1.22,0.43-1.6,0.56s-0.81,0.44-1.06,0.69-0.94,0.72-0.94,0.72-0.53,0.18-0.53,0.5c0,0.31,0.41,0.99,0.53,1.25,0.13,0.25,0.75,1.22,0.75,1.22l-0.18,0.75s-1.04,0.74-1.1,1.06c-0.06,0.31-0.12,1.59-0.12,1.97s0.06,1.74,0.06,2c0,0.25,0.19,1.84,0.19,2.09s0.15,1.34,0.28,1.97c0.12,0.63,0.12,1.06,0.43,1.44,0.32,0.38,0.56,1.03,0.88,1.22s0.5,0.68,0.88,0.62c0.37-0.06,1.71-1.03,1.71-1.03s0.63-0.62,0.75-1.06c0.13-0.44,0.44-2.16,0.44-2.16s0.19-1.37,0.13-1.69c-0.07-0.31-0.69-0.65-0.75-1.22-0.07-0.56-0.07-0.8,0-1.68,0.06-0.89,0.87-2.09,1.06-2.35,0.19-0.25,0.84-1.18,0.97-1.93,0.12-0.76-0.07-1.84,0.19-2.16,0.25-0.32,0.8-0.75,1.06-1.06,0.25-0.32,1.06-1.65,1.18-2.03,0.13-0.38,0.13-1.4,0.13-1.91s-0.31-1.37-0.56-1.56c-0.26-0.19-1.75-0.82-1.75-0.82zm-8.35,23.69c-0.31-0.01-0.62,0-0.75,0.03-0.25,0.07-0.56,0-0.81,0.32-0.25,0.31-0.78,0.71-1.22,0.84s-0.87,0-0.93,0.31c-0.07,0.32-0.26,0.87-0.26,1.13,0,0.25,0.06,0.74,0.32,1,0.25,0.25,0.62,0.21,0.75,0.78,0.12,0.57,0.19,1.18,0.12,1.44-0.06,0.25-0.31,1.12-0.37,1.43-0.07,0.32-0.19,0.4-0.38,1.03-0.19,0.64-0.31,1.38-0.31,1.76v1.15c0,0.38-0.06,1.19,0.13,1.44,0.18,0.25,0.62,0.56,0.87,0.81s1.47,0.47,1.72,0.47,0.5-0.28,0.75-0.66,0.56-0.99,0.56-1.56-0.12-2.96-0.06-3.28,1.12-0.84,1.19-1.41c0.06-0.56,0.03-1.74,0.09-2,0.06-0.25,0.31-1.15,0.31-1.15s0.75-0.44,0.88-0.81c0.12-0.38,0.25-1.13,0.25-1.5,0-0.38-0.19-1.54-0.19-1.54h-1.84c-0.19,0-0.5-0.02-0.82-0.03zm7.85,1.88c-0.57,1.01-0.72,0.99-0.78,1.75-0.07,0.76-0.88,1.53-0.88,1.53s-0.31,0.31-0.44,0.62c-0.12,0.32-0.69,0.81-0.06,1s1.72,0.19,1.97,0.07c0.25-0.13,0.75-0.69,1-0.82,0.25-0.12,0.44-0.49,0.44-1.37,0-0.89-0.19-1.9-0.31-2.16-0.13-0.25-0.94-0.62-0.94-0.62z\",\"name\":\"Sakhalin Oblast\"},\"ka\":{\"path\":\"M888.56,146.75l-1.65,0.84c-0.26,0.13-1.25,0.88-1.25,0.88l-0.13,1,0.13,2.78,0.25,1.16-0.88,2.43-1.72,4.69-0.93,1.56-0.44,1.41-0.06,1.81s-0.22,1.03-0.47,1.22c-0.26,0.19-0.82,0.13-0.82,0.13h-1.81-2.59l-1.6-0.19-1.68-0.31s-0.53,0.25-0.85,0.25c-0.31,0-0.68,0.56-1,0.75-0.31,0.19-1.37,0.74-1.56,1-0.19,0.25-1.28,0.78-1.59,0.9-0.32,0.13-1.38,1-1.63,1.19s-0.78,0.56-1.22,0.63c-0.44,0.06-0.94-0.32-0.94-0.32s-0.62-0.99-0.74-1.25c-0.13-0.25-0.97-1.72-0.97-1.72s-0.07-1.31-0.13-1.62c-0.06-0.32-0.06-1.47-0.12-1.72-0.07-0.25-0.13-1.06-0.13-1.06s0.25-1.22,0.31-1.66c0.07-0.44,0.38-0.75,0.38-0.75s0-0.56-0.19-0.87c-0.19-0.32-0.81,0.06-0.81,0.06l-1.75,0.44-1.97,0.81-1.66,0.5-1.18,0.19-2.04-0.25s-1.62-0.38-1.87-0.57-1.03-0.12-1.03-0.12l-0.63,0.56-0.87,1.16-0.63,0.81-0.84,0.88s-1.31,0.74-1.56,0.87c-0.26,0.13-0.94,0.59-0.94,0.59l-1.22,1.32-1.44,2.28s-2.27,2.28-2.59,2.47-1.18,0.87-1.44,1.12c-0.25,0.25-1.34,0.38-1.72,0.44s-0.74,0.62-1,0.94c-0.25,0.31-1.15,1.28-1.15,1.28l-0.81,0.56s-0.75-0.31-1.13-0.31-0.44,0.31-0.44,0.31l-0.97,1.91-1,2.18s-0.5,1.59-0.5,1.91,0.63,0.44,0.88,0.63c0.25,0.18,1.65,0.8,2.03,1.06,0.38,0.25,1,0.84,1.31,1.15,0.32,0.32,1.41,1.32,1.41,1.32s-0.13,0.43-0.06,0.68c0.06,0.26,0.37,1.15,0.68,1.66,0.32,0.51,0.94,0.81,0.94,0.81s4.09,1.16,4.35,1.28c0.25,0.13,1.09,1.32,1.09,1.32l0.37,0.68s1.13,0.85,1.44,1.04c0.32,0.18,1.22,0.31,1.22,0.31l0.62,0.62,0.44,1.19s-0.31,1.59-0.37,1.97c-0.07,0.38-0.07,0.99,0,1.37,0.06,0.38,1.12-0.06,1.12-0.06s1.4-0.31,1.97-0.25,1.56,0.25,1.56,0.25,1.22,0.4,1.35,0.66c0.12,0.25,0.75,1.18,0.75,1.18l1.15,1.5,1.25,1.72,1.85,1.32,2,1.65,1,1.31s0.84-0.99,1.03-1.31c0.19-0.31,0-0.74,0-1.19,0-0.44-0.37-0.71-0.75-0.96-0.38-0.26-0.97-1.19-1.35-1.63-0.37-0.44-0.56-0.84-0.56-0.84s-0.81-1.06-1.06-1.31c-0.25-0.26-1.09-0.94-1.34-1.19-0.26-0.26-1.25-1.34-1.69-1.97s0-0.75,0-1.06c0-0.32,0.87-1.04,0.87-1.04s0.94-1.3,1.19-1.62,0.44-1.21,0.5-1.59,0.47-1.31,0.85-1.5c0.37-0.19,1.18-0.38,1.68-0.44,0.51-0.06,1.84,0.5,1.97,0.81,0.13,0.32-0.62,0.69-0.75,0.94-0.12,0.25,0,1.59-0.06,2.16-0.06,0.56,0.12,1.71,0.12,2.28,0,0.56,0.75,1.37,0.75,1.37s1.13,1.4,1.44,1.72c0.32,0.32,1.28,0.93,1.59,1.19,0.32,0.25,1.57,1.65,1.57,1.65l3.34,2.32,0.97,0.59s0.75,1.25,0.81,1.69c0.07,0.44,0.44,0.93,0.44,0.93s1.03,0.22,1.34,0.47c0.32,0.26,0.63,1.31,0.63,1.69s-0.12,1.03-0.44,1.47c-0.31,0.44-1.21,0.93-1.53,1.25s-0.69,0.75-0.69,0.75-0.06,5.68-0.06,6.25,0.75,1.78,1,2.16,1.21,2.14,1.72,2.9c0.5,0.76,0.69,1.12,0.69,1.44s0.25,1.66,0.25,1.66,0.56,10.46,0.62,11.09,0.59,1.03,0.78,1.41,0.75,0.93,1,1.18c0.26,0.26,0.75,0.84,0.88,1.16,0.12,0.32,0.97,1.62,0.97,1.62s0.74,2.78,0.87,3.54c0.13,0.75,0.13,1.72,0.13,1.72s1.31,3.96,1.31,4.4v1.47s-0.81,1.75-1.13,2.13c-0.31,0.37-0.06,1.77-0.06,2.09,0,0.31-1.34,2.46-1.84,2.84-0.51,0.38-1.31,1-1.44,1.38s0.25,1.03,0.25,1.03l1.81,0.87,2.28,0.94s1.09,2.15,1.47,2.66c0.38,0.5,0.56,1.59,0.56,1.9,0,0.32,0.32,3.47,0.44,4.16,0.13,0.69,0.38,1.65,0.56,2.09,0.19,0.45,1.79,1.5,1.79,1.5s2.21,3.94,2.34,4.25c0.13,0.32,0.81,1.69,1.06,2,0.08,0.1,0.29,0.25,0.53,0.41,0.62,0.78,3.07,1.94,3.07,1.94l0.93,0.62s4.63,4.25,4.69,4.5c0.06,0.26,2.78,2.32,2.78,2.32s2.34,0.84,2.6,1.03c0.25,0.19,1.68,0.75,1.68,0.75l14.91,10.22,2.03,1.21,3.03,0.94s1.19,1.59,1.44,1.72,3.15,1.19,3.59,1.19c0.45,0,1.47,1,1.47,1s2.59,2.78,2.97,3.03,2.56,1.91,2.56,1.91,2.09,1.18,2.47,1.18,2.85-0.5,2.85-0.5l0.68-0.62v-2.03s-0.06-1.69-0.06-1.88,0-1.21-0.25-1.53-0.81-0.88-0.81-0.88,0.18-1.52,0.44-1.96c0.25-0.45,0.43-0.69,0.43-1.07s-0.31-1.15-0.56-1.4c-0.25-0.26-0.5-1.19-0.5-1.19s-0.06-2.34-0.31-2.66c-0.25-0.31-1.09-0.99-1.28-1.62s-0.5-1.03-0.63-1.41c-0.12-0.38-1.37-1.62-1.62-2.06-0.26-0.44-1.53-1.59-1.72-1.84-0.19-0.26-0.31-1.28-0.5-2.1s-1.02-0.75-1.78-0.75-1.12-0.06-1.38-0.25c-0.25-0.19,0.5-0.43,0.75-0.56,0.26-0.13,1.09-0.9,1.28-1.22,0.19-0.31,0.5-1.37,0.5-1.37l0.69-4.22,1.91-1.6c0.38-0.31,0.25-0.93-0.19-1.31s-1.09-0.25-1.41-0.31c-0.31-0.06-0.8-0.84-1.31-1.16-0.5-0.31-0.84-0.81-1.28-1s-1.24-0.31-2.06-0.56-1.4-1.03-1.91-1.47c-0.5-0.44-0.44-1-0.5-1.25s-0.06-1.96-0.06-2.84v-1.22s-0.97-2.78-0.97-3.1c0-0.31,0.03-1.05,0.16-1.43,0.12-0.38,0.49-0.69,0.75-0.94,0.25-0.25,1.43-0.78,1.43-0.78l1.47-0.88s0.38-1.71,0.38-2.59-0.5-2.25-0.63-2.56c-0.12-0.32-1.34-0.72-1.34-0.72s-1.5-1.19-1.94-1.19-2.46-0.56-2.9-0.69c-0.45-0.12-1.6-0.78-1.85-0.9-0.25-0.13-1.71-1.25-2.09-1.56-0.38-0.32-1.25-1.1-1.5-1.41-0.26-0.32-0.75-1.44-0.88-1.75-0.12-0.32-0.84-1.66-0.84-1.66s0-0.55-0.13-1.12c-0.12-0.57-0.18-1.65-0.18-2.41s1.02-0.62,1.28-0.62c0.25,0,1.68-0.25,2-0.32,0.31-0.06,1.03-0.74,1.22-1,0.19-0.25,0.37-1.77,0.31-2.09s-0.65-0.81-1.22-1-0.94-0.78-1.12-0.84c-0.19-0.07-2.16-0.88-2.16-0.88s-2.06-0.69-2.5-0.75-0.59,0.44-0.84,0.63c-0.26,0.19-0.5,0.37-1.32,0.37s-1.22-0.44-1.22-0.44l-0.87-1.18s-1.18,0.06-1.81,0.06c-0.64,0-0.91-0.59-1.16-0.91-0.25-0.31-1.06-0.56-1.06-0.56s-0.47-0.19-0.69-0.28c0-0.06,0.19-3.44,0.13-3.69-0.07-0.25-0.66-1.21-0.91-1.47-0.25-0.25-1.37-0.44-1.94-0.44s-1.4,0.6-1.84,0.85-1.06,0.75-1.31,0.94c-0.26,0.19-0.13,1.12-0.13,1.68,0,0.57-0.34,1.03-0.72,1.35-0.38,0.31-0.68,0.25-1.31,0.25s-1.12-0.19-1.63-0.31c-0.5-0.13-0.77-0.56-1.03-0.82-0.25-0.25-1.06-0.96-1.37-1.47-0.32-0.5-0.19-1.05-0.25-1.62-0.07-0.57-0.84-1.65-1.1-2.16-0.25-0.5-1.24-2.34-1.37-2.59s-0.56-1.28-1-1.91-0.9-1.99-1.28-2.62-0.74-1.09-1.5-2.1-0.78-0.56-1.35-0.68c-0.56-0.13-0.99-0.78-1.5-1.35-0.5-0.57-0.84-0.93-1.15-1.75-0.32-0.82-0.37-0.83-0.94-2.15-0.57-1.33-0.07-1.09,0.19-1.66,0.25-0.57,1.06-0.62,1.06-0.62l0.47-0.88s-0.38-1.59-0.31-2.09c0.06-0.51,0.36-0.56,1.06-0.75,0.69-0.19,1.56,0.75,1.94,0.75s1.59-0.5,1.9-0.82c0.32-0.31,0.32-1.08,0.32-1.71,0-0.64-0.62-1-1.13-1.13s-0.94-0.56-0.94-1.06c0-0.51,0.25-1.21,0.25-1.91,0-0.69,0-0.74-0.06-1.25-0.06-0.5-0.12-0.53-0.25-0.91-0.13-0.37,0.06-1.18,0.19-1.68,0.12-0.51,0.56-0.44,0.94-0.38,0.37,0.07,1.24,0.69,1.62,0.94s0.65,0.62,0.84,1,1,1.09,1.63,1.16c0.63,0.06,1.15-0.38,1.15-0.38s-0.09-0.52-0.34-1.09-0.81-1.44-1-1.81c-0.19-0.38-0.5-1.22-0.75-1.6s-0.44-0.5-0.44-0.75,0.69-2.09,0.69-2.41v-3.78c0-0.82,0.19-1.4,0.38-1.72,0.19-0.31,0.87-1.24,1.25-2.06s0.84-1.15,1.09-1.9c0.25-0.76,0.87-1.4,1.44-2.16s0.77-1,1.15-1.12c0.38-0.13,2.91,0.06,3.29,0.06,0.37,0,1.96-0.44,2.65-0.56,0.7-0.13,2.71-0.31,3.41-0.57,0.69-0.25,0.25-0.59,0.18-0.84-0.06-0.25-1.27-0.94-1.65-1.06-0.38-0.13-1.12-0.69-1.38-0.94-0.25-0.25-0.5-1.16-0.5-1.16s-0.59-2.96-0.65-3.28c-0.07-0.31-0.75-1.56-0.75-1.56s-0.13-5.18-0.13-5.63c0-0.44-0.68-2.02-1.37-2.34-0.7-0.32-0.91-0.99-0.91-1.5s0-0.96-0.12-1.59c-0.13-0.64-0.75-1.37-1-1.88-0.26-0.5,0.12-0.78,0.12-1.22s-0.12-1.18-0.5-1.5c-0.38-0.31-0.68-0.49-0.94-0.75-0.25-0.25-0.46-0.9-0.46-1.53s0.28-1,0.34-1.31c0.06-0.32,0.06-1.09-0.06-1.53-0.13-0.44-0.35-1.06-0.41-1.31-0.06-0.26-0.37-1.22-0.37-1.22s-0.5-0.44-0.69-0.44-0.94-0.19-0.94-0.19l-1.78-0.31s-1.69-0.44-1.81-0.69c-0.13-0.25-1.04-0.69-1.04-0.69l-1.56-0.59zm7.25,70.22c-0.88,0.44-1.12,0.43-1.06,1s0.37,1.09,0.63,1.47c0.25,0.38,0.44,0.93,0,1.44-0.45,0.5-1.45,0.52-1.19,1.15,0.25,0.63,0.49,1.06,0.75,1.31,0.25,0.26,0.81,0.9,0.94,1.41,0.12,0.51-0.01,1.06,0.31,1.56,0.31,0.51,0.31,0.69,0.69,0.69,0.37,0,0.59,0.32,0.65-0.5s-0.06-0.95,0-2.84c0.06-1.9,0-2.84,0.06-3.41,0.07-0.57,0.26-1.37,0-1.75-0.25-0.38-1.28-0.9-1.4-1.22-0.13-0.31-0.38-0.31-0.38-0.31zm58.91,12.47c-1.07,0.71-1.16,0.62-1.16,1.15,0,0.54-0.18,0.9,0.53,0.72,0.72-0.18,0.91-0.18,1-0.62,0.09-0.45-0.37-1.25-0.37-1.25zm-10.97,4.53c-0.63,0.45-1.08,0.2-0.81,1.09,0.27,0.9,0.44,1.16,1.15,1.25,0.72,0.09,0.73,0.1,2.07,0.1s2.31,0.06,3.03,0.06c0.71,0,0.99,0.36,1.43,0,0.45-0.36,0.63-0.07,0.54-0.78-0.09-0.72-1.24-0.9-2.22-0.81-0.98,0.08-1.52,0.34-3.13-0.19-1.6-0.54-2.06-0.72-2.06-0.72z\",\"name\":\"Kamchatka Krai\"},\"in\":{\"path\":\"m33.393,395.68,0.08929,5.2679,17.946-8.5714-1.3393-1.25-2.9464-1.25-1.5179-1.9643-2.4107,2.4107-4.1071-2.6786-1.875,1.0714,0.08929,5.8929-1.5179,1.0714z\",\"name\":\"Republic of Ingushetia\"},\"cc\":{\"path\":\"m33.482,401.04,1.0714,2.5,3.125,1.6964,3.4821,0.44642,2.1429-1.9643,2.1429,1.7857,2.5-1.5178-0.08929-1.6072,1.875-2.1428,2.8571,0.44642,3.8393-2.8571-0.625-1.9643-4.4643-0.53572,0.44643-2.7679z\",\"name\":\"Chechen Republic\"}}});"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.usa.js",
    "content": "/** Add USA Map Data Points */\njQuery.fn.vectorMap('addMap', 'usa_en', {\"width\":959,\"height\":593,\"pathes\":{\"hi\":{\"path\":\"m244.66,512.25c-2.48,3.8 2.23,4.04 4.74,5.38 3.06,0.16 3.51,-4.28 2.66,-6.56 -2.72,-0.77 -5.01,-0.19 -7.41,1.19z m-9.31,3.97c-4.02,5.11 3.64,0.48 0.63,-0.09l-0.5,0.07 -0.14,0.02z m39.69,7.97c-0.62,2.09 1.91,6.73 4.39,6.2 2.41,-1.46 3.73,1.73 6.48,0.56 1.23,-1.48 -3.77,-3.2 -3.7,-6.08 -0.95,-3.8 -3.28,-3.2 -5.96,-1.28 -0.41,0.2 -0.81,0.4 -1.22,0.6z m19.94,10.03c3.58,0.95 7.91,2.99 11.25,0.47 -1.05,-1.63 -5.06,-0.59 -7.1,-0.86 -1.44,0.01 -3.54,-1.63 -4.15,0.39z m12.13,4.38c2.33,2.45 3.64,6.83 7.24,7.4 2.36,-0.69 6.84,-0.66 7.32,-3.43 -2.09,-2.51 -5.77,-3.35 -8.88,-4.29 -2.53,-1.2 -4.11,-3.25 -5.68,0.33z m-7.06,1c-0.29,3.69 5.55,3.98 3.67,0.55 -0.27,-1.25 -3.83,-1.74 -3.67,-0.55z m23.66,14.69c0.27,2.45 3.18,3.93 0.47,6.15 -0.65,2.42 -5.54,2.87 -2.52,5.53 2.36,1.46 2.01,4.85 2.92,7.14 -0.72,2.69 -1.43,6.78 1.72,8.06 2.8,2.95 4.5,-1.93 6.19,-3.68 1.27,-1.69 3.85,-4.1 5.94,-2.59 3.04,-0.81 6.3,-2.42 7.78,-5.22 -2.79,-1.31 -4.88,-3.19 -5.57,-6.29 -2.4,-5.33 -8.95,-6.26 -13.58,-8.98 -1.29,-0.52 -2.26,-1.62 -3.34,-0.11z\",\"name\":\"Hawaii\"},\"ak\":{\"path\":\"m107.84,436.56c-2.27,0.55 -4.87,0.32 -6.84,-0.34 -2.41,1.22 -5.63,4.03 -8.25,1.88 -3.1,0.93 -3.51,3.84 -5.22,5.97 -1.82,2.52 -4.21,3.65 -7.31,3.14 -2.5,-0.94 -5.49,-1.15 -7.5,0.98 2.03,4.34 6.39,8.13 5.82,13.23 -1.85,2.94 6.31,2.99 2.68,5.02 0.15,2.8 3.07,5.68 2.91,7.88 -2.35,2.21 -5.24,-0.38 -7.71,-1.06 -3.24,-0.64 -2.73,-3.35 -0.82,-5.22 -1.57,-1.51 -7.35,-1.81 -6.51,1.12 -2.01,0.04 -3.81,-1.66 -6.27,-0.77 -3.72,-0.44 -5.97,0.65 -2.94,4.05 3.68,1.45 1.06,4.72 1.17,7.57 0.76,2.63 3.66,4.89 6.67,4.17 3.2,-0.06 5.87,3.59 9.21,1.65 2.16,-1.3 5.33,-0.99 4.79,1.89 -2.53,2.07 -1.36,6.13 -2.78,8.75 -1.96,1.88 -4.53,1.59 -6.59,0.16 -1.52,1.37 -4.7,3.68 -6.28,2.22 0.72,-3.71 -4.77,-3.63 -5.51,-0.61 -1.21,3.97 -6.27,4.46 -8.31,7.63 -0.7,2.42 -1.55,6.7 1.74,6.3 1.26,1.11 -1.2,4.8 -2.77,5.52 1.62,2.19 2.65,4.59 2.72,7.34 1.71,1.55 6.35,1.98 7.5,-0.16 2.45,-0.95 1.79,4.1 2.08,5.97 2.47,2.95 -4.02,1.28 -1.61,4.56 -0.85,2.93 -1.76,5.02 2,2.72 2.76,-0.47 5.11,-0.69 5.66,2.09 2.59,-3.91 2.26,2.78 3.25,4.66 0.59,-0.75 1.3,-5.69 3.94,-3.06 -0.17,4.52 5.33,-0.45 5.78,-0.04 0.54,2.92 -1.63,4.24 -2.86,6.41 -1.51,2.24 -2.07,5.63 -4.21,7.17 -3.87,-0.42 -3.37,4.1 -5.5,5.02 -2.65,-0.72 -5.73,0.71 -8.44,1.41 -1.35,2.41 -3.61,4.2 -5.78,1.81 -2.56,0.05 -5.63,0.68 -7.63,2.33 -2.48,2.43 -6.32,3.11 -9.66,2.29 -2.78,-1.91 -7.11,3.41 -3.11,2.31 2.5,-1.91 4.66,0.64 7.25,0.63 2.21,-1.15 4.17,-2.75 6.84,-2.06 2.32,-3.35 5.1,-0.32 7.92,-1.16 2.31,-0.39 7.01,-3.91 5.26,0.66 0.09,-2.91 3.42,-2.73 5.54,-2.04 4.21,0.96 0.29,-3.16 2.08,-3.43 3.47,-2.05 7.52,-2.41 11.2,-3.72 5.48,-3.19 11.62,-5.7 16.21,-10.1 4.27,-2.97 -2.78,-3.48 -1.21,-6.32 1.68,-2.43 4.58,-3.81 7.47,-4.5 1.5,-3.07 3.53,-6.11 5.88,-8.52 2.49,-1.32 4.83,-3.39 7.83,-2.32 2.67,0.71 3.74,5.32 -0.52,3.66 -1.27,-1.88 -5.56,-0.09 -5.25,2.41 -0.21,2.44 -2.56,4.22 -3.06,6.66 4.79,0.85 0.24,3.54 -1.38,3.8 1.67,1.91 5.66,0.6 7.57,-1.14 1.25,-1.85 3.43,-3.8 5.41,-4.22 1.81,2.8 5.1,-1.16 5.74,2.72 0.71,2.78 6.02,-4.86 3.34,-3.1 -3.03,3.11 -3.78,2.86 -1.94,-1.24 1.43,-4.85 -1.76,6.17 -1.45,0.81 -0.81,-3.19 -0.93,-6.03 3.05,-6.4 2.7,-0.86 5.37,-0.87 5.79,2.52 0.42,3.48 3.8,2.84 5.95,4.76 2.41,2.2 4.76,1.95 7.8,1.78 4.34,-0.47 8.01,4.04 12.28,3.17 2.49,-0.42 5.1,-5.2 4.29,-0.23 -2.26,2.83 -0.02,4.12 2.5,5.41 3.13,1.35 5.87,3.14 7.94,5.85 1.31,3.02 6.05,0.28 6.18,2.43 -3.83,1.25 -1.23,3.54 0.21,5.47 1.81,1.95 0.33,5.72 3.64,5.82 1.14,1.28 3.49,7.44 4.01,5.38 -0.35,-2.32 -0.7,-7.86 1.61,-3.76 0.37,1.42 1.04,8.7 2.07,4.74 1.07,-4.88 3.18,0.18 2.22,2.93 3.33,1.69 -1.23,3.33 0.69,4.88 0.69,-3.24 1.31,-0.36 2.16,1.56 1.05,1 1.54,3.94 3.13,3.72 -1.68,-1.72 -2.94,-6.23 0.4,-3 2.42,2.79 4.05,2.12 2.74,-1.66 -2.65,-2.66 0.28,-4.96 2.58,-2.29 3.12,-0.05 2.84,5.21 5.28,4.53 3.31,-3.17 1.5,-7.87 0.69,-11.7 -3.3,-1.55 -7.04,-2.54 -10.22,-4.06 -1.5,-5.33 -6.29,-8.69 -8.4,-13.77 -0.44,-3.33 -4.71,-2.62 -5.75,-5.23 -2.32,-1.72 -2.7,-4.4 -4.56,-6.35 -1.65,-1.53 -5.22,0.95 -5.51,2.94 0.59,3.09 -3.23,3.04 -5.06,4.72 0.05,-4.27 -4.3,-6.15 -6.7,-9.1 -1.33,-1.99 -1.32,-5.36 -4.45,-2.34 -2.37,0.24 -6.38,-0.31 -5.34,-3.62 0.1,-27.7 0.2,-55.4 0.31,-83.09 -2.75,-1.88 -5.88,-4.17 -9.15,-4.4 -2.52,1.72 -5.07,1.09 -7.39,-0.62 -2.72,0.23 -5.12,-0.65 -7.7,-2.89 -3.08,-2.74 -8.58,0.17 -10.98,-3.65 1.13,-3.56 -3.22,-4.83 -5,-2.09 -2.09,0.26 -0.65,-4.31 -3.64,-4.93 -2.57,-2.85 -4.01,-1.28 -5.86,1.21z M36.38,480.63c-0.67,3.11 4.27,1.31 4.72,4.66 0.24,3.82 5.37,3.9 2.34,-0.08 -0.1,-3.22 -3.92,-1.83 -5.06,-4.43 -0.76,-2.02 -0.9,-1.86 -2,-0.16z m-17.16,23.16c2.57,4.06 1.45,1.37 0.13,-1.28 -0.36,0.01 0,1 -0.13,1.28z m21.84,14.81c1.27,1.79 4.99,5.58 6.22,2.03 2.26,-3.3 -3.27,-2.89 -5.23,-3.68 -1.83,-0.9 -0.88,0.54 -0.99,1.65z m91.72,18.78c0.06,3.21 2.81,-1.98 0,0z m-31.47,14.69c-3.2,2.91 -7.24,4.67 -10.56,7.38 0.22,2.75 0.99,7.64 4.67,5.15 2.5,-1.44 4.98,-2.9 7.45,-4.37 -1.84,-3.31 -0.81,-3.15 -4.55,-3.48 -4.15,0.09 1.06,-3.73 2.64,-1.62 3.74,-1.04 3.95,-2.36 1.5,-3.66 0.7,-1.08 -1,0.61 -1.16,0.59z M55.75,570.75c1.42,2.83 3.53,-1.99 0,0z m-35.78,0.34c0.53,2.46 -4.04,4.84 1.05,3.59 4.2,0.47 3.46,-4.35 0.01,-3.84 -0.35,0.08 -0.7,0.16 -1.06,0.24z m62.19,0.69c1.57,2.91 1.31,-2.03 0,0z M58.63,573.13c3.23,0.49 0.99,-3.05 0,0z m-49,0.09c-4.84,2.56 -0.44,1.81 2.29,0.58 2.89,0.16 5.05,-0.48 0.84,-1.46 -1.04,0.29 -2.08,0.58 -3.13,0.88z m7.25,1.38c1.28,0.21 -2.23,-0.59 0,0z\",\"name\":\"Alaska\"},\"fl\":{\"path\":\"m748.38,439.94c1.69,2.92 1.5,6.12 1.16,9.34 -4.12,0.54 -2.15,-4.69 -5.56,-3.99 -6.18,-0.07 -12.34,1.13 -18.54,1.19 -10.09,0.29 -20.37,2.14 -30.33,0.64 -2.57,-1.57 -2.84,-6.15 -6.5,-5.33 -9.12,-0.12 -18.18,1.79 -27.26,2.55 -5.82,0.63 -11.62,1.37 -17.43,2.12 -1.42,3.25 2.6,4.37 4.06,6.34 0.8,2.28 -1.56,8.42 2.19,7.1 4.11,-1.2 8.08,-2.93 12.48,-2.72 3.34,-0.82 6.63,-0.73 9.89,0.45 4.09,0.8 7.77,3.09 11.41,4.98 1.77,1.94 5.5,1.87 5.97,5 -0.14,3.27 4.32,-0.94 6.5,0.53 3.19,-0.8 5.24,-3.68 7.69,-5.5 4.86,1.69 0.62,-2.9 3.27,-3.97 3.13,-0.83 6.62,-1.39 9.35,0.79 3.04,0.57 5.43,2 6.57,4.99 3.68,0.02 2.88,4.13 5.48,5.3 2.96,0.49 2.98,4.52 6.3,4.3 2.91,0.36 5.45,1.15 5.84,4.45 2.05,2.11 3.92,4.26 3.09,7.41 0.18,3.68 0.12,7.33 -1.44,10.75 0.39,3.68 1.37,7.94 3.28,10.78 2.25,-3.46 0.17,-3.87 -1.74,-6.03 2.19,-1.76 4.86,-0.22 7.3,0.16 0.82,3.15 -2.16,5.6 -3.48,8.19 -3.3,2.21 1.65,4.09 2.73,6.3 3.11,3.34 4.35,7.94 7.53,11.26 0.78,2.29 2.51,7.47 4.63,3.09 2.54,-0.24 3.88,3.44 5.28,5.41 -0.02,2.26 1.93,7.04 3.59,6.44 2.88,-0.8 6.04,0.65 8.28,2.59 2.56,3.3 4.58,6.98 4.56,11.27 1.37,2.73 4.55,0.44 5.81,-1.14 3.74,0.45 7.26,-1.25 9.22,-4.47 -1.01,-2.36 -0.57,-4.83 -0.32,-7.17 -0.04,-2.18 4.33,-3.19 2.25,-6.51 -0.98,-6.33 -0.19,-12.96 -1.87,-19.25 -2.46,-6.93 -7.54,-12.74 -10.4,-19.56 -1.51,-2.41 -4.24,-3.92 -4.62,-7.04 -0.94,-2.28 -2.67,-4.95 -0.07,-6.71 -0.39,-3.56 -4.86,-5.42 -6.84,-8.41 -5.38,-5.57 -8.29,-12.94 -12.35,-19.44 -2.15,-5.53 -4.29,-11.07 -5.91,-16.78 -3.43,0.07 -7.3,-1.03 -10.46,-0.35l-0.34,0.37 -0.26,0.29z m52.91,109.22c-1.9,4.58 0.72,0.38 0.66,-1.91 -0.22,0.64 -0.44,1.27 -0.66,1.91z m-4.69,9.91c2.56,-1.97 3.68,-6.84 1.04,-1.68 -0.35,0.56 -0.69,1.12 -1.04,1.68z m-2.25,2.22c1.46,-1.22 2.04,-2.07 0.18,-0.18l-0.18,0.18z m-5.72,4.16c-5.23,3.69 4.03,-2.14 0.33,-0.19l-0.33,0.19z m-10.72,3.22c-3.41,3.16 5.71,-0.32 4.1,-0.81 -1.8,-0.56 -2.56,-0.71 -4.1,0.81z m-4.59,3.16c0.08,0.16 0.4,-0.3 0,0z\",\"name\":\"Florida\"},\"nh\":{\"path\":\"m862.56,94c-1.4,-0.41 -3.87,-0.72 -3.05,3 0.22,3.63 -0.73,7.84 2.23,10.59 0.33,2.78 0.08,5.36 -2.17,7.29 -0.19,2.83 -5.98,2.58 -3.35,5.32 1.16,7.35 -0.56,15.03 -0.62,22.51 1.2,1.95 0.98,4.39 0.76,6.75 -1.07,3.79 4.84,-0.05 6.89,0.06 3.93,-1.29 8.46,-1.74 12.04,-3.54 0.77,-3.1 4.37,-2.75 5.94,-4.96 2.59,-3.52 -3.01,-2.73 -2,-6.59 -3.83,0.01 -4.27,-2.46 -4.66,-5.62 -3.84,-11.98 -7.32,-24.45 -11.49,-36.1 -0.18,0.43 -0.35,0.85 -0.53,1.28z\",\"name\":\"New Hampshire\"},\"mi\":{\"path\":\"M697.86,177.24L694.63,168.99L692.36,159.94L689.94,156.71L687.35,154.93L685.74,156.06L681.86,157.84L679.92,162.85L677.17,166.57L676.04,167.21L674.58,166.57C674.58,166.57 671.99,165.11 672.16,164.47C672.32,163.82 672.64,159.45 672.64,159.45L676.04,158.16L676.84,154.77L677.49,152.18L679.92,150.56L679.59,140.54L677.98,138.28L676.68,137.47L675.87,135.37L676.68,134.56L678.3,134.88L678.46,133.27L676.04,131L674.74,128.42L672.16,128.42L667.63,126.96L662.13,123.57L659.38,123.57L658.74,124.21L657.77,123.73L654.7,121.46L651.79,123.24L648.88,125.51L649.2,129.06L650.17,129.39L652.27,129.87L652.76,130.68L650.17,131.49L647.58,131.81L646.13,133.59L645.81,135.69L646.13,137.31L646.45,142.8L642.9,144.9L642.25,144.74L642.25,140.54L643.54,138.12L644.19,135.69L643.38,134.88L641.44,135.69L640.47,139.89L637.72,141.02L635.94,142.96L635.78,143.93L636.43,144.74L635.78,147.33L633.52,147.81L633.52,148.95L634.33,151.37L633.2,157.51L631.58,161.56L632.23,166.24L632.71,167.38L631.9,169.8L631.58,170.61L631.26,173.36L634.81,179.34L637.72,185.8L639.18,190.65L638.37,195.34L637.4,201.32L634.97,206.5L634.65,209.25L631.39,212.33L635.8,212.17L657.22,209.91L664.5,208.92L664.59,210.58L671.45,209.37L681.74,207.87L685.6,207.41L685.74,206.82L685.9,205.37L688,201.65L690,199.91L689.78,194.86L691.37,193.26L692.46,192.92L692.69,189.36L694.22,186.33L695.27,186.94L695.44,187.58L696.24,187.74L698.18,186.77L697.86,177.24z M581.62,82.06L583.45,80L585.62,79.2L590.99,75.31L593.28,74.74L593.74,75.2L588.59,80.34L585.28,82.29L583.22,83.2L581.62,82.06z M667.79,114.19L668.44,116.69L671.67,116.85L672.97,115.64C672.97,115.64 672.89,114.19 672.56,114.03C672.24,113.86 670.95,112.17 670.95,112.17L668.76,112.41L667.15,112.57L666.82,113.7L667.79,114.19z M567.49,111.21L568.21,110.63L570.96,109.82L574.51,107.56L574.51,106.59L575.16,105.94L581.14,104.97L583.57,103.03L587.93,100.93L588.09,99.64L590.03,96.73L591.81,95.92L593.1,94.14L595.37,91.88L599.73,89.46L604.42,88.97L605.55,90.1L605.23,91.07L601.51,92.04L600.06,95.11L597.79,95.92L597.31,98.35L594.88,101.58L594.56,104.17L595.37,104.65L596.34,103.52L599.89,100.61L601.19,101.9L603.45,101.9L606.68,102.87L608.14,104L609.59,107.08L612.34,109.82L616.22,109.66L617.68,108.69L619.29,109.99L620.91,110.47L622.2,109.66L623.33,109.66L624.95,108.69L628.99,105.14L632.39,104L639.02,103.68L643.54,101.74L646.13,100.45L647.58,100.61L647.58,106.27L648.07,106.59L650.98,107.4L652.92,106.91L659.06,105.3L660.19,104.17L661.65,104.65L661.65,111.6L664.88,114.67L666.17,115.32L667.47,116.29L666.17,116.61L665.37,116.29L661.65,115.81L659.55,116.45L657.28,116.29L654.05,117.75L652.27,117.75L646.45,116.45L641.28,116.61L639.34,119.2L632.39,119.85L629.96,120.66L628.83,123.73L627.54,124.86L627.05,124.7L625.6,123.08L621.07,125.51L620.42,125.51L619.29,123.89L618.48,124.05L616.54,128.42L615.57,132.46L612.39,139.46L611.22,138.42L609.85,137.39L607.9,127.1L604.36,125.73L602.31,123.45L590.19,120.7L587.33,119.67L579.1,117.5L571.21,116.36L567.49,111.21z\",\"name\":\"Michigan\"},\"vt\":{\"path\":\"m833.16,106.59c0.19,6 4.65,11.21 3.72,17.28 -2.48,4.23 4.52,7.29 2.22,11.58 0.9,1.59 4.66,1.96 4.06,5.25 1.08,4.21 2.86,8.34 1.84,12.76 3.35,-0.51 7.06,-1.17 10.13,-1.97 -0.21,-2.13 1.51,-5.75 -0.53,-7.81 0.2,-7.64 1.01,-15.26 1.13,-22.91 -3.25,-2.41 0.32,-3.79 2.12,-5.18 1.96,-2.28 3.9,-5.07 2.6,-8.1 -2.62,-1.63 -1.02,-5.94 -2.39,-7.22 -8.3,2.1 -16.59,4.21 -24.89,6.31z\",\"name\":\"Vermont\"},\"me\":{\"path\":\"m889.88,40.22c-2.16,1.31 -3.69,2.74 -4.84,4.69 -2.29,0.6 -4.99,-1.37 -4.88,-3.94 -2.97,-0.82 -3.33,3.68 -4.37,5.71 -1.09,4.29 -3.27,8.39 -3.97,12.69 -0.06,3.04 1,6.63 -1.35,9.09 0.08,2.92 -0.75,6.18 2,8.16 -1.37,5.7 -6.23,10.36 -5.41,16.56 -4.27,-2.21 -1.74,2.47 -1.09,4.73 3.51,11.08 7.19,22.16 10.25,33.35 0.21,3.01 5.81,1.35 4.53,5.7 2.9,2 2.06,-3.92 2.66,-5.87 -1.01,-3.29 2.7,-4.63 0.66,-7.62 0.94,-1.05 2.92,-5.9 4.61,-3.46 2.03,1.03 5.28,-1.89 6.74,-3.19 -0.98,-4.02 4.21,-1.75 4.73,-5.32 -1.11,-2.61 0.74,-5.45 -0.57,-7.44 -2.42,-1.59 3.53,-4.63 3.31,-0.78 2.27,0.48 2.15,2.8 3.66,3.93 1.94,-2.82 -2.15,-3.81 0.35,-6.03 2.43,-0.81 3.1,-3.96 6,-3.31 -0.17,1.46 1.03,3.34 2.26,1.38 2.94,-2.9 5.24,-7.08 9.37,-8.34 1.17,-2.61 3.34,-5.74 0.71,-8.24 -0.55,-1.64 -3.68,-4.84 -4.15,-2.58 -0.75,2.6 -4.66,-0.65 -4.92,-2.22 0.1,-2.8 0.29,-7.17 -3.8,-5.81 -3.96,1.36 -3.64,-3.04 -4.69,-5.61C905.22,58.3 902.75,50.15 900.28,42c-2.86,-1.25 -5.71,-2.92 -8.81,-3.38 -0.53,0.53 -1.06,1.06 -1.59,1.59z m20.47,61c-2.81,1.7 1.87,5.16 1.13,1.22 1.48,-0.9 0.13,-2.4 -1.13,-1.22z m-7.81,7.81c3.16,6.67 2.63,-3.59 0,0z\",\"name\":\"Maine\"},\"ri\":{\"path\":\"m871,164.28c1.15,4.66 2.29,9.31 3.44,13.97 2.56,-0.49 4.66,-2.29 5.84,-4.56 4.17,0.76 4,-2.64 1.51,-4.97 -1.79,-1.94 -3.16,-5.31 -5.74,-5.92 -1.68,0.49 -3.37,0.99 -5.05,1.48z\",\"name\":\"Rhode Island\"},\"ny\":{\"path\":\"m825.56,108.66c-2.7,1.12 -5.45,1.68 -8.33,1.43 -5.07,0.72 -10.17,2.73 -12.92,7.31 -2.84,3.43 -4.89,7.49 -7.18,11.2 -1.65,2.36 -5.82,3.73 -5.55,6.84 -0.17,3.56 5.77,0.73 4.43,4.38 -2.69,2.3 0.8,4.23 0.56,6.59 0.5,3.47 -4.26,1.99 -5.36,4 -1.62,2.71 -3.35,6.62 -7.22,6.05 -3.04,-0.43 -5.35,2.05 -7.98,2.63 -2.5,-0.75 -4.7,-2.05 -7.59,-1.31 -5.31,0.21 -10.62,1.98 -15.23,4.53 -0.29,1.77 0.61,6.25 3.17,6.14 1.55,2.48 2.09,4.96 -0.63,6.72 -1.51,1.76 -1.8,4.25 -4.16,5.3 -1.93,1.14 -2.68,3.51 -4.8,4.54 0.33,3.07 -0.22,7.29 4.08,5.12 22.14,-4.26 44.26,-8.68 66.23,-13.74 0.98,3.85 5.67,1.32 6.44,4 0.64,2.93 1.36,7.4 5.33,6.88 3.14,1.9 6.9,3.68 10.69,4.22 2.71,0.47 7.18,1.43 6.44,5.06 -0.33,1.97 -1.62,7.56 1.97,5.93 5.3,-1.65 10.96,-2.84 15.06,-6.85 3.23,-2.49 6.76,-4.64 9.35,-7.86 -2.99,-2.44 -4.65,0.46 -6.81,2.42 -2.91,1.56 -6.01,3.51 -9.16,4.32 -2.6,-0.63 -4.83,-0.86 -6.18,2.07 -1.03,2.04 -4.86,2.98 -3.98,-0.15 4.26,-1.87 -2.17,-3.97 -0.33,-6.21 1.19,-3.13 0.56,-6.87 0.42,-10.21 -1.43,-7.38 -3.69,-14.76 -2.54,-22.36 -0.08,-4.46 1.55,-8.97 -0.51,-13.21 -1.22,-2.56 -0.47,-6.83 -4.05,-7.34 -2.99,-0.66 0.75,-4.31 -1.57,-6.2 -1.7,-2.43 -3.17,-4.91 -1.54,-7.81 0.38,-5.77 -3.83,-10.57 -3.55,-16.35 -2.32,0.65 -4.65,1.29 -6.97,1.94z\",\"name\":\"New York\"},\"pa\":{\"path\":\"m798.88,181.63c-17.5,3.38 -34.87,7.42 -52.47,10.28 -0.61,-2 0.48,-8.42 -2.41,-4.31 -2.18,2.73 -5.48,3.74 -8.09,5.97 1.52,9.75 2.63,19.57 5.44,29.05 1.14,6.09 2.27,12.17 3.41,18.26 8.85,-1.42 17.79,-2.25 26.51,-4.41 16.39,-3.45 33.03,-6.46 49.33,-9.87 2.48,-3.07 8.03,-1.69 8.97,-6.19 0.64,-2.36 4.86,-3.99 4.33,-5.9 -2.3,-1.89 -5.94,-2.77 -6.39,-6.13 -3.14,1.09 -4.42,-3.94 -3.12,-5.32 3.86,-1.1 -0.49,-3.68 0.55,-5.96 2.52,-1.88 1.12,-5.15 2.81,-7.07 3.87,-2.7 -2.98,-1.1 -3.72,-3.99 -1.35,-2.18 -0.28,-7.24 -4.16,-5.92 -2.34,-1.13 -3.87,-3.75 -7.09,-1.7 -4.64,1.07 -9.28,2.15 -13.92,3.22z\",\"name\":\"Pennsylvania\"},\"nj\":{\"path\":\"m827.84,191.34c1.03,2.99 -1.82,4.8 -2.06,7.47 2.86,1.63 0.49,4.87 -0.92,5.73 -0.41,3.86 4.01,1.68 4.16,5.14 1.37,2.19 4.72,3.02 6.26,4.94 -0.15,2.61 -3.85,3.5 -4.69,6.06 -0.26,3.07 -4.09,3.19 -4.18,5.96 -0.99,2.38 -0.74,5.09 1.7,6.47 2.85,2.76 6.86,3.99 10.73,4.38 0.48,1.55 -1.84,7.18 1.1,3.59 1.5,-2.42 0.59,-5.95 3.11,-8.01 2.5,-4.08 5.03,-8.84 4.88,-13.61 -1.35,-4.07 0.8,-9.01 -1.81,-12.82 -1.1,1.32 -6.17,1.23 -4.13,-0.8 2.39,-1.39 3.37,-3.62 2.39,-6.31 0.21,-2.31 1.58,-5.42 -1.69,-6.19 -4.35,-1.15 -8.82,-2.13 -12.88,-4.26 -0.66,0.75 -1.31,1.5 -1.97,2.25z\",\"name\":\"New Jersey\"},\"de\":{\"path\":\"m824.88,225.34c-3.72,0.25 -3.47,3.52 -1.91,6.13 3.35,6.89 3.86,14.58 6.03,21.81 3.45,0.11 6.81,-0.49 10.16,-1.25 -1.2,-2.17 -0.68,-6.38 -3.32,-6.38 -2.9,-1.2 -4.17,-3.69 -4.9,-6.58 -0.91,-3.11 -3.62,-4.96 -5.48,-7.35 -1.85,-1.82 0.94,-5.5 -0.26,-6.47l-0.33,0.09z\",\"name\":\"Delaware\"},\"md\":{\"path\":\"m813.59,229.19c-17.31,3.18 -34.53,6.83 -51.78,10.28 0.74,3.02 1.31,6.08 1.78,9.16 2.14,-1.9 3.29,-5.35 6.59,-5.34 2.14,-1.85 2.67,-5.25 5.77,-3.55 3.46,0.18 5.43,-5.35 9.01,-3.85 2.63,1.63 5.66,2.79 7.34,5.59 4.19,0.11 3.68,3.73 5.74,4.96 2.73,1.11 5.02,1.18 6.38,-0.53 4.29,1.38 2.24,3.74 1.44,6.9 0.09,2.97 -3.7,4.92 -1.66,7.97 3.1,1.31 6.4,1.2 9.63,1.4 2.17,1.58 6.83,1.03 3.79,-2.1 0.41,-2.74 -3.08,-3.35 -3.32,-6.04 -1.7,-2.67 -1.42,-5.47 -0.36,-8.32 1.68,-2.42 -2.83,-3.82 -0.4,-5.41 1.25,-1.53 0.43,-4.16 2.98,-4.7 1.62,-3.02 5.1,-1.45 2.35,1.02 -2.54,2.98 -0.81,4.5 0.57,6.3 1.41,3.55 -0.68,5.07 -1.53,7.31 -0.22,-0.81 3.62,-1.01 3.22,1.79 -3.15,1.64 -1.45,6.12 1.09,7.31 2.98,0.99 5.58,-1.8 6.98,2.14 1.5,3.75 4.92,0.81 7.41,-0.02 2.74,-1.21 3.47,-4.93 2.78,-7.7 -1.13,-1.58 -4.82,0.92 -7.13,0.4 -3.86,1.26 -4.9,-1.25 -5.28,-4.64 -1.68,-5.97 -2.14,-12.33 -5.16,-17.9 -0.04,-4.32 -2.71,-4.2 -6.07,-2.91 -0.73,0.16 -1.45,0.31 -2.18,0.47z m10.94,32.59c1.32,0.99 0.59,4.97 2.06,4.63 -0.48,-1.31 -0.36,-4.99 -2.06,-4.63z\",\"name\":\"Maryland\"},\"va\":{\"path\":\"m792.88,242.88c-0.16,1.46 0.24,5.89 -2.4,4.29 -2.58,-0.67 -6.42,-3.2 -8.23,-2.73 0.7,3.72 -1.46,6.77 -2.99,9.94 -3.05,1.14 -2.29,5.83 -5.84,5.58 -1.62,1.74 -1.47,5.31 -2.45,7.73 -3.09,1.14 -5.37,-0.48 -7.28,-1.75 0.11,6.5 -3.72,11.95 -5.91,17.84 -1.69,1.73 1.19,3.8 -0.74,5.77 -1.35,3.56 -3.79,2.72 -6.19,4.19 -2.72,1.1 -4.9,0.5 -5.4,4.61 -2.07,1.14 -4.83,2.63 -6.91,0.47 -2.38,1.51 -5.02,3.21 -7.81,1.6 -2.69,-0.01 -3.9,-6.55 -6.07,-2.94 -3.27,4.09 -7.89,7.48 -10.21,12.09 0.43,3.25 -4.46,3.32 -6.42,5.15 -4.27,1.95 3.62,-0.11 5.16,-0.07 5.56,-0.79 11.14,-1.37 16.76,-1.36 1.95,-2.65 4.98,-1.81 7.77,-1.65 7.86,-0.32 15.65,-2.12 23.48,-2.99 12.85,-1.4 25.44,-4.27 38.04,-7.05 11.65,-2.52 23.3,-5.03 34.96,-7.55 -1.64,-2.66 -2.75,-6.67 -6.42,-4.14 -1.99,2.03 -6.61,-1.82 -2.7,-2.48 2.65,-1.62 -1.75,-4.07 -1.8,-5.97 -2.73,-0.62 -2.88,-5.12 0.54,-3.6 -0.17,-1.37 -1.24,-3.62 -1.62,-5.68 1.47,-3.51 -0.84,-4.97 -3.72,-5.16 0.31,-3.42 -2.9,-2.93 -5.22,-3.97 -3.33,0.21 -7.06,-0.25 -9.91,-1.66 -1.22,-2.41 -0.91,-5.12 1.25,-6.88 1.39,-2.83 -0.28,-5.7 -3.3,-6.27 -2.65,-0.83 -6.97,-0.29 -5.73,-4.3 -0.83,-0.3 -2.05,-1.06 -2.69,-1.06z m39.16,21.59c0.44,4.71 -3.15,8.7 -2.62,13.48 -0.34,4.11 2.64,5.72 3.48,0.92 1.71,-3.04 -0.23,-6.47 0.8,-9.73 0.4,-2.53 3.66,-3.88 3.52,-6.73 -1.73,0.69 -3.46,1.38 -5.19,2.06z\",\"name\":\"Virginia\"},\"wv\":{\"path\":\"m739.75,223.25c-1.6,2.23 1.3,5.02 0.25,7.75 -0.18,4.04 -0.63,8.11 -0.84,12.13 -1.94,3.58 -4.43,7.35 -8.16,9.13 -3.15,-1.33 -3.92,3.25 -5.76,4.98 -1.56,2.28 2.64,4.93 -0.3,6.69 -2.57,3.58 -2.6,-4.8 -4.46,-0.71 -1.32,2.59 0.02,6.02 -1.35,8.33 -1.82,1.54 -0.53,5.19 -4.16,4.81 -2.23,0.13 -1.45,6.19 1,6.81 2.24,1.47 2.49,4.74 5.5,5.92 1.92,1.96 2.28,5.18 5.39,6.05 1.64,2.19 3.07,4.96 6.25,4.88 2.63,0.5 4.77,-3.86 7.22,-1.35 1.49,0.81 3.93,-0.57 4.58,-1.83 0.43,-4.57 3.42,-2.71 6.03,-4.39 2.39,-0.94 4.82,-0.98 5.62,-4.44 -1.26,-2.59 0.3,-5 1.56,-7.64 2.23,-4.81 4.72,-9.61 4.67,-15.05 2.65,-2.31 3.72,3.56 7.05,1.41 1.64,-1.77 1.12,-5.67 2.6,-7.59 3.47,0.39 2.97,-3.96 5.76,-5.21 2.29,-3.11 3.52,-6.8 3.06,-10.7 1.06,-1.29 5.1,1.62 7.23,2.15 3.3,3.35 4.34,-1.98 2.85,-4.05 -2,-2.28 -5.12,-3.7 -7.62,-4.75 -3.31,0.98 -5.44,5.47 -9.38,3.97 -1.86,-0.23 -2.38,3.98 -4.86,3.88 -2.89,0.71 -3.79,4.38 -6.03,6.22 -1.1,-0.06 -0.99,-4.82 -1.62,-6.64 -0.01,-3.93 -1.77,-5.3 -5.48,-3.82 -4.21,0.6 -8.41,1.23 -12.61,1.91 -1.17,-6.45 -2.29,-12.92 -3.44,-19.38l-0.35,0.35 -0.18,0.18z\",\"name\":\"West Virginia\"},\"oh\":{\"path\":\"m729.5,197.78c-4.85,2.06 -7.38,6.9 -11.47,9.97 -4.08,0.86 -8.09,1.75 -11.72,3.88 -3.41,1.61 -4.39,-4.09 -7.67,-2.63 -3.13,1.35 -5.49,-1.1 -8.11,-2.41 -8.6,1.15 -17.15,2.64 -25.66,4.38 1.45,17.83 4.12,35.53 5.87,53.33 -0.69,3.82 4.06,2.26 6.23,1.48 2.74,0.41 4.83,2.16 5.48,4.94 1.26,2.48 5.82,-0.87 6.96,2.54 2.19,1.53 4.46,-2.33 7.03,-0.58 2.52,0.04 5.62,1.51 6.84,-1.56 1.49,-0.55 5.37,-3.85 5.41,-0.71 0.38,2.53 3.82,3.57 5.77,4.7 3.53,0.63 2.32,-3.91 4.21,-5.51 -0.11,-2.74 0.21,-5.73 1.39,-8.13 2.53,-2.81 3.8,4.53 4.98,0.39 -2.02,-2.27 -0.99,-5.41 0.93,-7.41 1.07,-4.06 4.05,-2.41 6.5,-4.39 2.93,-3.16 6.59,-6.57 5.97,-11.27 0.44,-4.71 1.18,-9.75 -0.53,-14.23 1.47,-2.48 2.58,-4.29 0.96,-7.33 -2.04,-7.53 -2.56,-15.37 -3.93,-23.04 -1.81,1.2 -3.63,2.4 -5.44,3.59z\",\"name\":\"Ohio\"},\"in\":{\"path\":\"m658.66,210.31c-9.12,0.93 -18.35,1.98 -27.41,2.68 -2.6,0.39 -4.21,5.08 -6.89,2.98 -3.83,-2.84 -2.64,1.83 -2.41,4.45 1.1,14.81 2.73,29.61 3.44,44.42 -0.76,3.69 -1.39,7.89 1.36,10.91 0.1,2.99 1.4,6.28 -1.14,8.65 -1.83,2.73 -2.55,6.09 -5.02,8.42 0.09,2.08 -2.02,8.2 1.63,5.16 3.49,-0.6 7.25,-1.53 10.69,-1.34 2.36,4.08 2.67,-0.62 5.26,-1.29 2.03,-2.62 4.78,2.05 5.34,1.04 -1.26,-3.41 3.05,-3.77 5.1,-5.22 1.09,0.63 6.05,3.38 5.3,-0.64 -0.46,-2.47 2.02,-4.71 3.65,-6.34 3.11,-1.39 4.33,-3.9 4.16,-7.23 1.83,-1 4.93,-1.01 6.97,-2.47 4.23,-1.03 0.26,-3.48 1.22,-5.92 -0.83,-12.56 -2.8,-25.13 -4.08,-37.69 -0.85,-6.99 -1.44,-14.01 -2.14,-21.02 -1.68,0.16 -3.35,0.31 -5.03,0.47z\",\"name\":\"Indiana\"},\"il\":{\"path\":\"m569.75,200.44c-0.29,2.58 4.2,1.83 3.73,5.07 2.07,2.09 5.71,4.21 4.38,7.77 -0.31,3.04 -2.61,5.44 -3.08,8.4 -2.38,2.71 -6.06,2.98 -9.31,3.94 -1.61,2.47 -1.05,4.91 1.28,6.47 0.63,3.25 -1.08,5.07 -2.74,7.38 1.41,3.63 -2.39,2.86 -3.56,5.02 1.08,3.12 -2.11,3.8 -2.53,6.64 0.19,3.95 1.33,8.21 3.28,11.58 3.68,3.96 7.38,7.9 12.21,10.47 -0.61,2.88 -0.64,6.7 3.43,5.71 2.05,0 6.18,0.38 6.26,2.68 -0.19,4.39 -3.6,8.24 -3.28,12.53 1.6,3.83 5.33,6.26 8.59,8.42 3.37,-0.29 5.36,1.27 5.9,4.6 1.01,2.64 3.84,4.73 1.73,7.67 0.55,1.74 2.58,7.7 4.31,4.05 1.21,-2.98 5.41,-4.78 8.07,-2.46 3.1,2.46 5.94,0.47 3.13,-2.8 -0.98,-3.39 2.61,-4.96 5.37,-5.33 1.01,-1.55 -1.6,-4.46 1.4,-5.97 1.8,-3.97 -0.56,-9.39 3.32,-12.49 1.43,-2.97 3.23,-5.97 4.4,-8.97 0.13,-3 -0.7,-5.7 -2.34,-8.16 -0.45,-4.59 1.31,-9.09 0.02,-13.65 -1.16,-15 -2.22,-30.05 -3.67,-45.01 -1.02,-3.1 -1.61,-6.46 -4.04,-8.77 -2.27,-1.83 -0.51,-5.93 -1.97,-7.32 -14.76,0.83 -29.52,1.67 -44.28,2.5z\",\"name\":\"Illinois\"},\"ct\":{\"path\":\"m865.78,165.41c-6.91,1.54 -13.81,3.08 -20.72,4.63 2.17,6.2 2.74,12.83 2.44,19.34 -2.62,4.3 2.61,2.38 3.97,-0.21 2.09,-1.89 4.19,-3.71 5.99,-5.88 2.06,1.35 4.78,-1.86 7.44,-1.46 2.98,-0.68 5.69,-2.24 8.56,-3.26 -1.15,-4.67 -2.29,-9.33 -3.44,-14 -1.42,0.28 -2.83,0.56 -4.25,0.84z\",\"name\":\"Connecticut\"},\"wi\":{\"path\":\"m559.53,104.97c-4.06,2.75 -8.71,4.92 -13.53,5.84 -2.88,-1.08 -5.54,-1.12 -5.57,2.68 -0.48,3.34 0.51,7.03 -0.47,10.17 -2.02,3.26 -6.91,4.03 -7.36,8.38 -2.63,2.78 2.21,3.06 2.23,5.53 1.79,2.9 -2.13,4.74 -1.33,7.65 0.29,2.93 -0.4,6.49 1.14,8.93 1.33,3.48 5.88,0.21 6.64,3.93 1.56,2.26 5.47,1.03 6.19,4.78 2.15,5.1 9.7,4.85 11.21,10.39 0.68,3.38 0.35,7.34 1.94,10.32 3.26,1.05 1.94,4.34 0.25,6.21 -0.79,3.96 2.53,8.34 6.75,8.25 2.28,1.6 4.86,1.65 7.83,1.19 13.03,-0.77 26.07,-1.53 39.1,-2.3 -0.02,-4.45 -1.98,-8.61 -1.86,-13.13 -1.7,-2.04 -0.86,-4.17 -0.04,-6.39 0.32,-2.84 3.07,-4.93 1.51,-7.87 -1.05,-2.94 -0.88,-6.21 1.73,-8.27 -0.2,-2.83 -0.5,-5.03 -0.16,-7.93 -1.14,-4.2 2.64,-7.5 3.69,-11.36 0.92,-1.13 3.15,-8.34 0.73,-4.93 -2.65,3.81 -4.99,8.01 -8.18,11.29 -0.86,2.06 -3.21,4.55 -5.21,4.5 -2.57,-1.26 0.28,-4.49 0.9,-6.41 0.47,-2.94 3.2,-4.25 4.09,-6.85 -3.31,-1.29 -2.77,-5.03 -3.54,-7.92 0.02,-3.09 -1.23,-5.08 -4.29,-5.57 -2.14,-3.67 -7.04,-2.78 -10.59,-4.12 -7.13,-1.87 -14.21,-4.39 -21.67,-4.99 -2.48,-0.54 -2.84,-5.51 -5.51,-4.73 -1.71,-1.54 -3.85,-0.7 -5.82,0.13 -2.8,-1.32 0.68,-4.59 1.5,-6.38 2.18,-1.34 -1.53,-2.14 -2.31,-1z\",\"name\":\"Wisconsin\"},\"nc\":{\"path\":\"m830.06,295.97c-18.3,3.8 -36.53,8 -54.86,11.65 -12.74,1.51 -25.38,4.07 -38.18,4.94 -3.32,-0.82 -1.17,3.72 -2.5,5.53 -2.62,1.34 -3.49,4.59 -5.03,6.38 -3.24,-1.36 -5.07,1.46 -6.34,3.97 -1.09,-0.57 -2.96,0.03 -3.41,-1.41 -2.02,1.96 -4.37,3.73 -4.31,6.81 -3.66,1.1 -6.31,3.82 -9.28,5.96 -2.64,0.94 -5.76,2.16 -7.4,4.35 0.73,4.06 -2.98,3.3 -5.1,5.29 -1.98,4.69 2.74,2.66 5.58,2.5 6.41,-1.19 13.32,-0.49 19.18,-3.73 5.04,-1.9 9.41,-5.9 15.06,-5.67 6.5,-0.64 13.15,-0.6 19.62,-0.69 2.99,0.53 3.36,4.79 5.58,5.01 5.37,-0.81 10.87,-1.67 16.25,-1.79 5.38,1.36 9.61,5.45 14.52,7.93 3.59,2.64 6.93,5.66 10.43,8.44 3.15,-0.86 6.32,-1.58 9.59,-1.72 1.06,-4.55 2.04,-9.29 5.39,-12.78 4.2,-4.27 9.23,-8.29 15.33,-9.29 2.91,1.95 3.69,-2.9 5.27,-4.53 2.72,-5 -2.44,3.91 -2.46,-1.22 -3.87,0.7 -5.43,-0.26 -3.29,-4 2.77,-4.25 -2.73,-2.51 -2.12,-6.02 -1.42,-3.76 2.84,2.19 5.06,0.81 2.81,0.12 5.1,-1.87 5.59,-4.6 0.45,-2.9 4.59,-2.7 3.28,-6.48 -4.02,-2.43 4.25,-0.66 0.4,-3.93 -3.52,-3.44 -5.24,-8.33 -7.23,-12.76 -1.54,0.35 -3.08,0.71 -4.63,1.06z m17.13,23.72c1.55,2.61 -4.64,4.26 -0.52,2.69 1.38,-1.92 0.21,-5.22 0.24,-7.62 -0.74,-2.05 0.37,4.57 0.28,4.94z\",\"name\":\"North Carolina\"},\"dc\":{\"path\":\"m803.44,248.16c2.67,3.43 3.85,-1.02 0.55,-0.75l-0.29,0.4 -0.25,0.35z\",\"name\":\"District of Columbia\"},\"ma\":{\"path\":\"m877.59,144.41c-1.04,3.1 -4.01,3.5 -6.79,4.13 -8.62,2.32 -17.17,4.6 -25.96,6.12 -0.11,4.77 -1.17,9.59 -0.03,14.31 10.66,-2.6 21.54,-4.29 32,-7.44 3.57,2.81 6.01,6.73 8.28,10.59 2.13,-0.78 0.01,-5.15 3.77,-5.38 2.93,-3.28 1.83,4.78 3.17,2.62 2.13,-3.09 6.1,-3.9 9.41,-5.21 -0.11,-3.41 -2.21,-8.55 -6.38,-7.53 1.64,-0.1 4.89,0.87 4.91,3.82 0.85,2.24 -2.55,3.71 -4.35,4.24 -3.37,0.51 -4.99,-1.76 -6.32,-4.47 -1.38,-2.05 -3.58,-6.56 -6.3,-3.6 -1.89,-1.72 -3.13,-4.04 -1.33,-6.3 2.3,-2.34 1.23,-6.2 -1.28,-7.16 -0.93,0.41 -1.86,0.82 -2.79,1.24z M902.25,172.69c-1.6,2.76 3.05,-2.44 0.08,-0.32l-0.08,0.32z m-11.28,1.28c1.59,0.78 6.09,-2.26 1.78,-2.03 -0.59,0.68 -1.19,1.35 -1.78,2.03z\",\"name\":\"Massachusetts\"},\"tn\":{\"path\":\"m730.41,314.34c-8.87,-0.11 -17.76,1.5 -26.57,2.73 -10.24,2.86 -20.99,2.66 -31.48,4.02 -16.34,1.45 -32.65,3.29 -48.96,4.95 -4.57,-1.71 -0.43,5.74 -5.06,4.14 -6.97,0.06 -13.87,1.23 -20.84,0.71 -0.95,4.26 -1.37,9.04 -3.6,12.76 -3.45,1.82 -4.01,5.81 -4.43,9.33 -3.1,1.1 -4.68,2.61 -2.53,5.59 -1.75,3.9 -0.58,5.24 3.51,3.98 33.91,-3.26 67.83,-6.53 101.74,-9.79 -0.23,-2.54 0.72,-5.31 3.53,-5.69 3.11,-0.4 0.99,-5.41 4.88,-5.81 2.77,-2.02 6.49,-2.19 8.62,-5.18 1.76,-2.26 6.31,-1.64 5.78,-5.38 1.19,-1.77 3.1,-3.84 5.03,-4.85 1.04,-0.39 0.28,1.78 1.72,1.19 2.38,0.56 2.2,-4.36 5.22,-3.86 3.3,1.27 2.68,-2.92 4.96,-4.18 2.05,-0.94 3.81,-6.68 0.92,-6.59 -0.81,0.64 -1.63,1.27 -2.44,1.91z\",\"name\":\"Tennessee\"},\"ar\":{\"path\":\"m509.47,335.31c1.73,4.9 1.5,10.02 1.53,15.12 2.15,12.21 1.13,24.64 1.47,36.97 0.02,3.71 0.04,7.42 0.06,11.13 2.06,3.2 5.05,-1.45 7.69,1.47 1.53,1.76 -0.88,7.54 2.97,6.49 17.61,-0.36 35.23,-0.72 52.84,-1.08 1.97,-2.6 0.41,-5.9 -1.28,-8.22 3.3,-1.61 -1.59,-3.96 0.84,-6.53 0.75,-2.77 0.62,-6.34 3.78,-7.69 -1.88,-3.07 2.08,-5.24 3.19,-7.88 3.77,-0.38 1.58,-3.3 2.64,-5.42 1.12,-2.67 2.56,-5.28 4.85,-6.58 1.2,-4.12 0.21,-2.67 -1.53,-5.61 -2.76,-3.32 1.95,-3.96 2.36,-6.84 -0.05,-1.94 3.31,-6.69 1.22,-6.75 -2.65,0.85 -5.34,-0.18 -8.02,-0.33 -0.09,-3.38 4.4,-3.88 4.22,-7.3 0.58,-3.87 -3.58,-3.68 -6.34,-3.26 -24.17,0.77 -48.34,1.54 -72.5,2.31z\",\"name\":\"Arkansas\"},\"mo\":{\"path\":\"m490.44,245.63c-2.39,-0.46 -0.19,4.05 0.07,5.6 2.45,3.32 4.51,7.86 8.55,9.22 2.81,-0.24 3.61,2.67 2.79,4.84 -3.22,1.64 -1.72,5.03 0.19,7.07 0.9,2.55 4.61,3.05 4.89,5.61 2.1,12.97 1.12,26.14 1.51,39.22 0,5.72 0.08,11.44 0.72,17.13 24.99,-0.94 49.98,-1.8 74.97,-2.51 3.02,-1.12 4.35,1.72 5.31,3.98 0.52,3.48 -2.86,4.46 -4.14,6.86 2.37,0.64 5.57,0.65 8.21,-0.08 1.46,-3.59 1.87,-7.45 2.38,-11.22 0.84,-2.83 5.27,-2.89 4.61,-6.03 1.37,-2.94 0.14,-4.6 -2.22,-4.28 -2.15,-1.81 -2.84,-5.03 -2.86,-7.6 1.45,-2.84 -2.08,-5.07 -2.44,-7.89 -0.66,-3.24 -5.34,-0.87 -6.89,-3.66 -2.64,-2.34 -6.24,-3.94 -6.91,-7.76 -0.94,-3.21 1.52,-6.47 2.17,-9.64 2.2,-3.53 -1.34,-4.7 -4.33,-4.5 -2.66,0.39 -5.34,-1.15 -4.81,-4.1 0.86,-4.07 -4.71,-4.05 -6.43,-6.93 -2.7,-3.4 -6.72,-6.05 -7.25,-10.67 -1.1,-3.16 -2.12,-6.86 -0.62,-10.06 -2.3,-1.34 -2.28,-5.77 -5.37,-4.89 -20.69,0.77 -41.38,1.53 -62.06,2.3z\",\"name\":\"Missouri\"},\"ga\":{\"path\":\"m672.78,356c-0.74,7.06 4.28,12.69 5.29,19.4 1.36,6.57 3.44,12.96 5.03,19.44 0.94,4.88 2.17,9.95 5.53,13.75 -0.85,3.5 3.37,3.17 2.59,6.44 -1.89,4.45 -3.57,9.65 -0.84,14.13 0.05,2.63 0.94,5.4 -0.38,7.88 2.95,0.94 1.45,4.01 3.07,6.01 1.35,2.67 3.68,4.75 6.83,4 12.35,-0.01 24.69,-1.31 37.03,-1.92 3.32,-0.58 6.67,-0.74 10.04,-0.59 -0.78,4.24 3.04,4.15 2.09,-0.09 -0.9,-2.14 -2.94,-6.23 0.59,-6.62 3.2,0.5 6.42,0.91 9.66,1.02 -0.84,-3.8 -0.8,-7.57 0.5,-11.27 0.2,-3.54 2.62,-6.73 2.21,-10.21 -0.72,-2.93 3.26,-5.26 2.85,-8.05 -2.19,1.37 -5.29,-0.71 -5.34,-3.19 -0.56,-3.12 -2.71,-5.83 -6.03,-6.06 -1.33,-3.9 -2.62,-8.17 -4.99,-11.43 -3.12,-1.07 -6.13,-2.99 -7.17,-6.29 -2.06,-2.33 -5.23,-3.21 -6.66,-6.16 -2.08,-2.2 -5.24,-2.83 -7.66,-4.19 -0.76,-2.53 -3.21,-4.09 -3.94,-6.67 -1.36,-2.63 -2.97,-4.65 -6.15,-3.77 -2.33,-1.57 -7.15,-3.38 -5.31,-6.97 2.02,-2.01 3.76,-4.11 -0.8,-3.11 -12.68,1.51 -25.37,3.01 -38.05,4.52z\",\"name\":\"Georgia\"},\"sc\":{\"path\":\"m737.03,343.19c-4.26,0.4 -8.64,0.43 -12.24,3.07 -3.2,1.75 -6.48,3.19 -9.88,4.49 2.21,3.31 -4.28,2.74 -2.34,6.44 2.27,2.24 5.2,4.13 8.5,3.28 2.53,3.15 3.83,6.94 6.53,9.88 0.91,2.76 5.13,2.06 6.85,4.46 2.18,1.38 2.96,4.25 5.62,5.01 2.99,1.95 3.36,6.38 7.26,7.24 3.61,0.62 3.77,4.77 5.34,7.38 0.38,3.35 2.02,4.84 4.79,5.96 3.36,1.79 1.76,7.23 5.67,8.16 3.63,-1.38 5.8,-4.63 8.38,-7.34 -2.35,-3.93 0.29,-3.32 3.01,-4.44 1.95,-2.4 5.02,-3.3 6.25,-6.28 2.17,-2 3.86,-4.52 5.4,-6.9 2.81,-0.17 3.42,-3.58 4.92,-5.03 -0.28,-4.13 1.3,-7.89 3.12,-11.47 1.03,-2.11 7.03,-4.5 3.47,-6.34 -5.97,-5.35 -12.78,-9.5 -19.71,-13.47 -4.45,-2.68 -9.74,-0.07 -14.57,-0.06 -2.57,-0.23 -6.63,2.48 -7.32,-1.28 -1.66,-4.5 -6.93,-2.82 -10.63,-2.96 -2.8,0.07 -5.61,0.14 -8.41,0.21z\",\"name\":\"South Carolina\"},\"ky\":{\"path\":\"m675,267.5c-2.76,-0.77 -6,1.11 -3.38,3.78 1.52,3.15 -3.12,4.12 -5.19,5.27 -2.94,0.53 -4.71,1.29 -4.3,4.82 -1.15,2.66 -5.3,3.24 -6.32,6.32 -2.16,1.4 0.74,6.22 -2.84,5.92 -3.06,0.61 -4.36,-2.79 -7.09,0.11 -2.26,0.51 -1.1,6.98 -3.85,3.1 -2.27,-2.54 -5.57,0.14 -6.16,2.81 -1.91,1.07 -3.4,-3.73 -6.02,-1.91 -3.32,0.61 -7.48,0.47 -9.92,2.91 0.08,2.65 -3.39,3.78 -1.7,6.05 2.34,2.66 -2.23,2.68 -3.86,3.3 -3.57,1.35 -0.68,4.35 -0.76,6.72 0.33,3.45 -3.76,1.44 -5.49,0.72 -2.5,-2.29 -6.26,-0.38 -7.13,2.53 2.86,2.28 -0.04,4.76 0.41,7.66 -3.47,2.04 -3.19,2.73 0.94,2.35 5.84,0.01 11.64,-0.95 17.5,-0.76 -0.7,-3.74 0.98,-4.99 4.56,-4.19 24.33,-3.01 48.82,-4.7 73.16,-7.43 4.3,-0.7 8.2,-2.38 11.75,-4.88 3.3,-0.8 4.04,-2.71 5.12,-5.35 3.46,-4.09 7.13,-8.06 10.79,-12 -3.27,-1.24 -3.03,-5.51 -6.21,-6.95 -2.6,-1.25 -2.07,-4.66 -5.16,-5.36 -2.38,-2.64 0.8,-7.28 -3.02,-8.87 -3.02,-0.01 -2.37,-4.65 -4.57,-3.51 -2.95,0.61 -3.67,4.78 -7.02,3.29 -2.69,-0.23 -5.51,-1.19 -7.82,0.71 -3,0.83 -3.99,-3.61 -7.44,-2.06 -3.51,0.82 -2.17,-5.19 -5.65,-5.26C677.17,266.43 676.21,267.17 675,267.5z\",\"name\":\"Kentucky\"},\"al\":{\"path\":\"m628.53,359.63c-0.2,14.37 0.12,28.75 -0.54,43.12 -0.04,9.01 -0.88,18.1 -0.07,27.07 1.55,10 2.94,20.01 3.85,30.09 3.07,1.09 3.69,-1.92 4.4,-4.18 -0.3,-3.89 4.27,-3.02 4.89,-0.04 0.72,2.06 4.08,5.27 0.77,6.65 -0.15,0.92 6.17,-0.9 5.88,-2.89 -0.44,-3.01 0.64,-6.86 -2.87,-8.19 -2.29,-0.88 -3.03,-5.59 -0.32,-5.67 14.08,-1.86 28.21,-3.59 42.35,-4.8 2.7,1.07 6.76,-0.25 2.97,-2.5 -1.8,-2 0.95,-5.03 -0.27,-7.65 -0.31,-3.1 -2.63,-5.9 -1.31,-9.15 0.01,-2.92 2.49,-5.36 1.93,-8.3 -3.52,-0.45 -1.34,-5.11 -4.26,-6.7 -3.48,-5.82 -3.36,-13.04 -5.96,-19.21 -2.02,-8.09 -3.34,-16.41 -7.25,-23.88 -0.51,-2.39 -1.08,-4.85 -0.72,-7.31 -14.49,1.18 -28.98,2.35 -43.47,3.53z\",\"name\":\"Alabama\"},\"la\":{\"path\":\"m521.09,407.28c0.1,7.53 -0.24,15.32 1.67,22.61 2.08,2.49 2.82,5.51 3.15,8.67 1.87,2.78 5.27,4.95 4.59,8.72 1.61,2.18 -0.21,5.69 0.08,8.38 0.42,2.64 -4.36,4.89 -2.01,7.12 1.07,2.26 -0.92,5.31 -0.53,7.95 0.38,3.22 -2.37,5.7 -1.55,8.93 5.18,-2.4 10.98,-0.86 16.47,-1.09 5.72,1.7 11.56,4.87 17.56,4.26 2.93,-2.25 5.94,0.36 8.98,0.93 1.08,-3.4 -4.22,-0.81 -5.8,-2.2 -1.91,-0.36 -2.89,-2.3 -1.17,-3.4 2.08,-1.1 4.08,-1.09 5.66,0.04 2.15,-1.39 5.6,-0.24 6.26,2.38 -0.33,3.62 3.42,1.7 5.28,3.15 3.83,1.5 -1.41,4.07 0.83,5.37 2.88,0.97 5.73,2.94 8.62,3.29 3.51,-0.05 2.81,-4.53 6.47,-4.17 1.83,-2.9 4.44,-0.25 4.39,2.31 1.53,1.64 4,-3.68 1.98,-3.66 0.22,-3.37 2.17,-3.21 4.31,-5.41 1.59,0.95 0.91,2.82 1.41,4.16 3.33,0.39 7.44,1.09 9.34,4.06 2.79,0.08 5.17,1.1 5.56,-2.56 -2.68,-0.27 -4.15,-3.88 -7.35,-3.19 -2.31,0.06 -6.3,-1.62 -6.15,-3.77 1.62,-3.62 2.23,-1.74 2.03,-4.38 2.88,1.09 5.69,-2.27 3.22,-4.47 0.46,-4.62 -3.73,-0.15 -3.34,2.19 -1.36,1.21 -6.35,-0.96 -4.6,-3.27 1.71,-1.84 4.2,-4.5 2.19,-6.95 -0.13,-3.26 -2.69,-5.21 -4.47,-7.38 0.52,-2.7 2.26,-7.35 -2.36,-5.46 -10.43,1.28 -20.97,0.69 -31.45,1.12 -1.61,-3.72 -0.02,-7.76 0.16,-11.59 2.66,-4.86 5.46,-9.65 8.25,-14.44 -2.04,-2.82 3.52,-4.45 -0.74,-6.48 -0.53,-2.15 -1.29,-4.65 -2.32,-6.83 -0.08,-3.1 0.9,-7.3 -3.62,-5.79 -17,0.28 -34,0.57 -51,0.85z\",\"name\":\"Louisiana\"},\"ms\":{\"path\":\"m591.03,363.5c-1.45,1.74 -4.03,3.15 -4.63,6.03 -1.4,2.22 1.43,5.74 -2.69,6.07 -1.48,1.97 -4.77,4.42 -3.4,7.17 -1.36,1.83 -3.59,3.95 -3.48,7.01 -2.16,2.66 1.55,5.28 -0.27,7.12 -0.45,1.84 2.25,4.42 1.35,7.03 -1.92,2.71 -1.63,6.55 -0.61,9.53 1.6,2.4 0.78,5.54 3.73,6.94 -0.95,2.53 -1.41,3.75 -1.87,6.31 -2.55,4.96 -6.07,9.62 -7.89,14.84 0.01,2.98 -1.44,6.14 -0.14,8.97 11.4,-0.36 22.87,0.25 34.19,-1.5 2.75,2.21 -2.19,6.39 1.33,8.15 2.82,1.62 2.28,5.18 3.89,7.63 2.07,-1.86 2.51,-6.19 5.82,-4.07 3.21,-0.67 6.85,-3.02 9.89,-0.64 3.62,0.73 6.01,-0.27 4.42,-4.26 -0.81,-10.1 -2.99,-20.07 -3.84,-30.15 0.14,-21.99 1.48,-43.98 0.64,-65.97 -12.15,1.26 -24.29,2.52 -36.44,3.78z\",\"name\":\"Mississippi\"},\"ia\":{\"path\":\"m476.25,181.16c-3.42,-0.05 -2.16,5.68 0.72,6.29 0.54,2.07 -0.75,5.06 -1.41,7.35 -2.13,2.82 -0.93,5.45 1.04,7.92 1.22,4.34 2.24,8.85 4.05,13.06 0.6,3.22 1.29,6.38 3.41,9 0.02,3.49 1.27,6.69 2.3,9.91 -0.04,3.54 0.03,7.05 2.08,10.09 22.2,-1.02 44.44,-1.75 66.66,-2.63 0.77,1.43 3.25,7.11 4.37,4.25 -0.96,-2.5 1.19,-4.52 3.57,-4.72 -0.88,-2.62 1.19,-4.59 2.5,-6.28 1.27,-2.92 -1.39,-4.02 -2.41,-6.31 0.69,-2.9 1.79,-5.3 5.13,-5.46 2.88,-0.83 6.57,-1.81 6.65,-5.41 1.76,-3.04 3.73,-8.01 -0.26,-10.18 -2.74,-1.06 -1.75,-5.27 -5.21,-5.14 -0.64,-1.97 -0.85,-4.76 -4.19,-4.21 -2.75,-0.8 -4.55,-3.47 -5.37,-6 -1.36,-2.89 2.01,-4.72 1.65,-7.28 -3.82,-0.4 -1.19,-6.5 -5.03,-5.47 -26.75,0.41 -53.5,0.81 -80.25,1.22z\",\"name\":\"Iowa\"},\"mn\":{\"path\":\"m497.03,53.84c-0.69,2.52 0.93,7.42 -1.31,8.34 -9.65,-0.01 -19.29,-0.02 -28.94,-0.03 1.16,2.87 2.18,5.76 0.97,8.81 0.05,5.74 -0.79,11.86 2.51,16.95 2.04,3.78 0.64,8.47 1.5,12.6 0.82,6.84 1.76,13.67 3.55,20.32 0.05,3.83 0.88,7.8 0.03,11.53 -1.57,1.74 -4.91,3.29 -2.22,5.78 1.89,1.83 5.05,2.94 4.58,6.1 0.28,11.9 0.25,23.83 0.42,35.75 26.72,-0.38 53.44,-0.75 80.16,-1.13 -0.15,-3.62 -0.46,-7.93 -4.36,-9.47 -3.02,-1.66 -6.24,-3.1 -7.63,-6.5 -0.72,-3.61 -5.32,-1.16 -6.05,-4.61 -1.56,-2.09 -5.29,-0.37 -6.57,-3.78 -1.66,-2.1 -0.52,-5.5 -1.1,-8.1 -1.34,-2.93 1.65,-4.99 1.47,-7.54 -0.2,-3.22 -5.36,-3.85 -2.24,-7.43 0.41,-4.47 5.39,-5.33 7.61,-8.59 0.24,-3.87 -0.73,-8.14 0.52,-11.77 1.76,-3.14 5.17,-5.1 8.28,-6.26 1.92,-2.08 3.66,-4.57 6.13,-5.81 2.54,-4.97 6.04,-9.99 11.81,-11.4 4.55,-1.98 9.12,-3.92 13.6,-6.04 0.73,-3.15 -3.7,-0.18 -5.06,0.03 -0.82,-3.87 -4.2,-3.09 -7.28,-2.87 -2.25,-0.87 -5.34,2.83 -6,-0.66 -1.13,-3.5 -4.51,0.72 -5.88,2.13 -2.33,1.63 -6.22,1.16 -8.06,-0.56 0.94,-3.05 -4.61,-0.39 -4.53,-3.96 -0.16,-2.3 -3.48,1.3 -5.77,-1.2 -3.04,-0.91 -5.5,-3.22 -8.29,-4.38 -2.49,0.4 -5.86,-2.38 -6.7,1.5 -1.17,0.79 -7.15,1.83 -5.93,-1.54 -2.99,0.03 -6.03,-0.05 -7.53,-1.75 -2.6,0.59 -5.72,-0.41 -5.9,-3.43 -0.88,-3.28 -1.44,-6.61 -1.88,-9.98 -1.23,-0.6 -2.54,-1.02 -3.91,-1.06z\",\"name\":\"Minnesota\"},\"ok\":{\"path\":\"m363.31,330.03c17.51,1.12 35.04,1.73 52.56,2.47 -1.37,13.62 -2.89,27.23 -2.83,40.93 -0.92,3.93 3.48,5.78 6.14,7.66 0.56,-5.56 2.96,1.46 4.25,-1.31 0.93,-1.5 5.57,1.68 3.39,4.42 1.59,0.66 4.76,0.51 6.73,1.82 2.79,-0.99 5.16,3.32 7.03,1.26 1.82,-1.93 5.59,-0.31 6.5,2.02 2.44,0.79 1.71,5.84 4.76,3.05 1.39,-1.65 6.25,-1.17 6.69,1.21 1.28,1.5 5.69,3.72 7.39,1.92 0.33,-2.75 3.38,-5.95 4.59,-1.83 3.59,0.38 6.96,2 10.46,3 2.28,-1.86 2.44,-4.68 6.53,-3.41 2.53,1.92 3.8,-1.41 6.31,-1.16 0.85,2.42 5.2,2.41 6.19,-0.5 3.2,-0.2 3.66,3.71 6.55,4.35 1.86,0.4 6.31,3.63 5.36,0.18 -0.32,-12.27 0.1,-24.59 -0.7,-36.82 -1.15,-6.03 -1.01,-12.18 -1.43,-18.25 -1.32,-5.29 -2.05,-10.73 -2.07,-16.18 -20.01,0.66 -40.04,-0.04 -60.06,-0.22 -27.85,-1.32 -55.73,-2.3 -83.53,-4.56 -0.27,3.31 -0.54,6.63 -0.81,9.94z\",\"name\":\"Oklahoma\"},\"tx\":{\"path\":\"m359.47,330.97c2.34,-0.11 -0.86,-1.81 0,0z m0.72,18.31c-1.64,20.84 -2.52,41.75 -4.68,62.55 -0.51,4.33 -0.99,8.66 -1.51,12.98 -17.84,-0.87 -35.67,-1.93 -53.42,-3.89 -4.16,-0.41 -8.32,-0.76 -12.48,-1.11 -0.67,3.74 2.27,3.68 4.04,6.12 2.26,1.83 1.13,6.03 4.65,6.5 3.52,0.48 2.9,4.6 5.45,6.34 3.38,3.15 5.5,7.91 10.27,9.06 1.91,1.27 4,3.22 4.53,5.46 0.69,3.96 4.53,7.02 3.47,11.33 -0.88,5.15 2.22,9.63 5.93,12.88 2.18,2.95 5.14,4.76 8.63,5.78 1.88,1.95 3.01,3.88 5.72,4.88 2.59,0.18 5.38,4.34 7.35,1.18 2.59,-3.14 5.48,-6.41 6.05,-10.55 1.26,-2.82 3.58,-4.32 6.5,-5.06 2.72,-1.59 5.32,-2.13 7.47,0.62 4.91,0.57 10.2,0.53 14.79,2.22 2.83,1.43 2.56,4.53 5.17,6.33 1.73,2.05 4.83,3.37 5.81,5.82 1.37,2.07 2.66,4.26 2.69,7.03 1.62,4.34 4.17,8.51 5.31,12.94 -0.24,2.77 4.65,2.49 4.95,5.51 2.24,4.08 4.37,9.17 9.21,10.49 3.28,2 0.03,5.04 0.91,7.5 3.28,0.87 -0.01,4.68 0.94,6.67 2.53,1.36 4.37,3.2 4.22,6.44 0.39,3.34 2.13,6.83 5.69,7.54 3.01,1.93 6.69,2.13 9.87,3.4 2.28,1.79 5.15,4.09 8.16,2.83 3.46,0.46 6.77,1.29 9.37,3.75 1.43,2.54 6.51,-0.91 4.31,-2.89 -2.04,-3.39 -1.3,-7.79 -2.83,-11.46 -0.63,-3.07 -2.39,-5.95 -0.99,-9.1 1.17,-4.9 2.87,-9.76 4.04,-14.71 -3.37,-1.01 -2.07,-5.47 1.21,-4.71 3.99,0.42 3.65,-6.43 7.81,-6.05 5.25,-1.56 9.07,-6 14.16,-8.05 6.91,-2.81 13.62,-6.46 18.72,-12.05 2.58,-2.98 7.09,-3.95 8.69,-7.75 5,-2.22 9.8,-4.93 15.22,-6 -0.97,-2.64 0.52,-4.86 1.32,-7.22 0.39,-2.99 0.19,-6.07 1.18,-8.94 -3.15,-2.27 0.38,-4.91 1.38,-7.41 -0.2,-2.8 1.42,-6.25 0.09,-8.66 0.3,-2.93 -1.49,-5.14 -3.35,-7.29 -2.46,-2.64 -1.11,-6.91 -3.87,-9.52 -2.53,-4.57 -1.59,-10.19 -2.25,-15.22 0.02,-5 0.19,-10 -0.5,-14.97 -2.63,-2.31 -5.52,2.33 -7.52,-1.37 -3.1,-2.07 -7.66,-2.1 -9.73,-5.68 -2.31,-2.48 -3.82,2.84 -7.18,0.96 -1.91,-2.73 -3.59,0.03 -5.98,0.18 -2.27,-1.15 -6.07,-1.48 -6.09,1.76 -2.76,2.37 -5.95,-0.93 -8.94,-1.28 -3,1.38 -5.23,-3.83 -6.3,-1.87 -0.15,2.66 -2.52,5.1 -5.13,3.34 -3.23,-0.15 -4.91,-2.49 -6.57,-3.89 -2.95,-1.74 -4.3,2.32 -6.94,0.88 -1.48,-1.39 -1.87,-3.6 -3.92,-5.65 -3.06,-2.83 -5.03,3.17 -7.13,0.23 -2.05,-2.11 -5.57,-0.83 -7.94,-2.69 -3.56,0.59 -5.54,-0.24 -4.13,-4.11 -1.89,-1.85 -2.28,1.21 -4.77,-0.14 -0.59,-0.41 -3.45,1.78 -5,-1.11 -1.9,-1.9 -5.13,-3.22 -4.18,-6.45 0.03,-10.58 0.25,-21.15 1.66,-31.65 0.3,-2.99 0.6,-5.98 0.89,-8.98 -17.65,-0.63 -35.3,-1.27 -52.94,-2.22 -0.52,6.07 -1.04,12.15 -1.56,18.22z M466.53,518.63c-5.2,7.17 2.93,-3.27 0,0z\",\"name\":\"Texas\"},\"nm\":{\"path\":\"m242.72,428.78c4.82,0.63 9.65,1.25 14.47,1.88 0.43,-3.33 0.85,-6.67 1.28,-10 9.7,0.89 19.4,1.86 29.09,2.78 -0.9,-3.14 -1.39,-5.98 2.84,-4.5 18.29,1.28 36.48,3.79 54.81,4.49 2.45,-0.6 7.66,2.13 7.99,-1.01 3.06,-22.93 3.75,-46.09 5.59,-69.14 0.54,-7.79 1.39,-15.56 2.02,-23.34 3.21,0.65 1.17,-4.81 2.07,-6.86 1.79,-4.38 -2.87,-3.37 -5.73,-3.85 -32.35,-3.3 -64.71,-6.59 -97.06,-9.89 -5.79,39.81 -11.58,79.63 -17.38,119.44z\",\"name\":\"New Mexico\"},\"ks\":{\"path\":\"m380.53,320.34c25.06,1.17 50.11,2.71 75.19,3.35 17.22,0.07 34.44,0.63 51.66,0.18 -0.25,-12.69 0.23,-25.42 -0.47,-38.08 -0.61,-2.83 -0.17,-6.27 -1.38,-8.74 -3.04,-2.03 -6.02,-5.19 -6.68,-8.77 -0.43,-2.51 4.3,-4.59 1.29,-6.64 -3.02,0.54 -4.05,-3.34 -7.17,-2.43 -36.21,-0.82 -72.43,-1.33 -108.63,-2.5 -1.27,21.21 -2.54,42.42 -3.81,63.63z\",\"name\":\"Kansas\"},\"ne\":{\"path\":\"m353.38,230.59c10.76,0.96 21.27,2.72 32.03,3.66 -0.37,7.11 -0.71,14.23 -1.06,21.34 36.49,1.29 73,1.84 109.5,2.56 -0.31,-1.17 -3.13,-4.05 -4.03,-6.15 -1.99,-2.11 -0.36,-5.13 -2.45,-7.34 -2.42,-3.19 -1.66,-7.14 -2.2,-10.79 -1.66,-2.86 -1.45,-6.25 -2.29,-9.26 -2.94,-2.85 -2.34,-7.01 -3.95,-10.49 -1.13,-3.1 -2.18,-6.19 -2.62,-9.47 -3.51,1.32 -2.89,-3.07 -4.85,-4.29 -2.4,-1.68 -5.57,-1.85 -7.72,-3.93 -3.79,0.07 -7.65,1.04 -11.13,1.94 -2.52,-2.2 -6.03,-3.13 -7.91,-6.06 -13.61,0.96 -27.23,-0.49 -40.83,-1.11 -15.5,-1.05 -31.02,-1.79 -46.51,-2.86 -1.67,14.08 -2.83,28.17 -4,42.25z\",\"name\":\"Nebraska\"},\"sd\":{\"path\":\"m357.44,187.41c25.68,1.58 51.37,3.15 77.06,4.26 3.58,-0.01 7.34,-0.51 10.81,-0.23 1.8,2.9 5.24,3.85 7.69,6 3.55,-1.45 7.52,-1.89 11.25,-1.91 2.45,2.67 7.26,2.29 9.15,5.33 1.32,4.76 3.27,1.86 0.18,-1.15 -1.53,-2.17 1.46,-4.6 1.56,-6.99 1.2,-2.87 1.38,-5.28 -1.58,-6.75 -0.5,-2.04 -0.73,-6.65 2.41,-5.84 2.62,-0.28 0.39,-5.28 1.06,-7.5 -0.32,-9.7 0.19,-19.47 -0.64,-29.13 -0.24,-3.58 -6.26,-4.19 -5.42,-8.4 1.09,-1.22 5.81,-4.38 2.75,-5.4 -27.23,-0.89 -54.5,-1.01 -81.67,-3.15 -9.79,-0.62 -19.57,-1.24 -29.36,-1.86 -1.75,20.91 -3.5,41.81 -5.25,62.72z\",\"name\":\"South Dakota\"},\"nd\":{\"path\":\"m362.88,123.72c26.46,1.49 52.89,3.7 79.4,3.91 10.84,0.26 21.67,0.52 32.51,0.78 0.01,-5.53 -1.38,-10.82 -2.5,-16.17 -1.27,-7.42 -2.05,-14.89 -2.13,-22.42 -2.61,-4.16 -4.11,-9 -3.48,-13.94 -0.44,-3.25 0.67,-6.57 0.3,-9.7 -0.15,-4.01 -2.83,-4.61 -6.31,-4.12 -25.15,-0.47 -50.33,-1.05 -75.41,-3.06 -5.17,-0.49 -10.33,-0.98 -15.5,-1.47 -2.29,22.06 -4.58,44.13 -6.88,66.19z\",\"name\":\"North Dakota\"},\"wy\":{\"path\":\"m240.16,217.84c37.4,4.49 74.29,8.23 111.69,12.72 2.5,-29.2 5.5,-57.65 8,-86.84 -35.26,-4.45 -70.52,-8.9 -105.78,-13.34 -4.64,29.16 -9.27,58.31 -13.91,87.47z\",\"name\":\"Wyoming\"},\"mt\":{\"path\":\"m192.59,52.19c0.84,2.76 3.25,5.4 3.2,8.23 -1.5,2.79 -1,5.49 0.52,8.15 3.4,0.39 4.18,3.44 5.26,6.16 1.43,3.34 2.55,6.88 5.37,9.34 0.88,2.21 5.27,1.18 4.34,4.72 -2.23,6.21 -5.45,12.23 -7.06,18.56 0.02,3.34 3.4,5.25 5.73,2.22 1.61,-2.43 5.63,-3.04 4.69,0.97 -0.5,5.3 1.81,10.35 2.59,15.53 1.9,2 5.27,3.44 5.68,6.31 -0.71,1.91 -0.39,8.78 2.32,5.14 1.85,-1.89 4.93,-0.29 6.85,0.86 3.28,-1.63 7.26,-1.21 10.34,0.69 3.69,0.41 1.52,-5 5.95,-4.08 2.71,-0.42 2.01,6.69 3.21,4.1 0.56,-3.26 1.09,-6.54 1.68,-9.8 35.57,4.49 71.15,8.96 106.72,13.44 2.9,-28.44 5.79,-56.88 8.69,-85.31 -28.84,-2.29 -57.55,-5.91 -86.19,-9.99 -26.71,-4.12 -53.36,-8.71 -79.73,-14.68 -3.05,-0.61 -6.99,-2.59 -6.53,2.19 -1.21,5.75 -2.42,11.51 -3.62,17.26z\",\"name\":\"Montana\"},\"co\":{\"path\":\"m260.17,308.53c39.89,4.09 79.51,8.26 119.39,11.91 1.61,-28.46 3.23,-56.92 4.84,-85.38 -37.47,-4.17 -74.94,-8.33 -112.41,-12.5 -4.03,28.98 -7.8,56.99 -11.83,85.97z\",\"name\":\"Colorado\"},\"id\":{\"path\":\"m169.84,91.72c0.52,3.07 2.27,5.25 4.94,6.78 0.4,3.02 -0.61,5.46 -3.03,7.31 -2.3,2.7 -4.38,5.97 -6.09,8.83 0.39,2.93 -2.57,3.54 -4.23,4.8 -1.77,2.31 -4.28,4.3 -3.93,7.5 -0.64,2.43 4.69,0.57 4.09,4.34 -5.19,11.17 -6.78,23.51 -10.13,35.32 -0.79,3.16 -1.22,4.91 -2.01,8.08 56.92,12.84 62.26,13.45 93.58,19.41 2.75,-17.6 5.5,-35.21 8.25,-52.81 -2.66,-0.84 -0.58,-6.52 -4.23,-4.97 -1.24,1.7 -1.62,4.95 -5.17,3.47 -3.11,-1.99 -6.81,-1.34 -10.13,-0.56 -2.53,-1.76 -5.91,-2.01 -7.69,0.88 -1.75,-0.05 -3.29,-3.39 -2.79,-5.36 1.91,-3.98 -2.85,-5.89 -5.05,-8.27 -0.98,-5.88 -3.48,-11.64 -2.5,-17.69 -1.86,-0.01 -4.25,2.69 -6.47,3.63 -2.21,0.18 -4.52,-3.09 -4.1,-5.31 1.19,-5.37 4.07,-10.37 5.88,-15.6 1.95,-2.64 1.12,-5.57 -2.41,-5.62 -1.55,-3.37 -4.92,-5.66 -5.61,-9.53 -1.31,-2.63 -1.42,-6.47 -5.06,-6.76 -0.99,-1.85 -3.18,-4.47 -1.91,-6.73 2.09,-2.98 -0.34,-5.7 -1.53,-8.5 -2.13,-3.05 0.55,-6.68 0.67,-10.01 0.9,-4.35 1.8,-8.69 2.69,-13.04 -4.18,-0.78 -8.35,-1.56 -12.53,-2.34 -4.5,20.92 -9,41.83 -13.5,62.75z\",\"name\":\"Idaho\"},\"ut\":{\"path\":\"m176.34,297.78c27.57,3.92 55.15,7.83 82.72,11.75 4.04,-29.08 8.08,-58.17 12.13,-87.25 -10.83,-1.14 -21.65,-2.33 -32.47,-3.59 1.43,-7.93 2.82,-15.85 3.84,-23.84 -15.27,-2.85 -30.54,-5.71 -45.81,-8.56 -6.8,37.17 -13.6,74.33 -20.41,111.5z\",\"name\":\"Utah\"},\"az\":{\"path\":\"m173.19,314.66c-2.49,-0.06 -3.05,4.43 -6.38,2.94 -0.74,-2.87 -3.59,-2.82 -5.59,-4.22 -3.74,0.74 -2.37,4.58 -2.68,7.41 -0.52,5.04 -0.42,10.21 -0.89,15.22 -2.19,2.33 -2.44,5.78 -0.24,8.19 2.32,2.62 0.58,7.52 4.09,9.09 0.98,3.59 -2.89,4.83 -5.41,6.09 -3.29,2.46 -3.28,6.86 -3.88,10.47 -1.25,2.44 -4.81,2.39 -4.92,4.97 0.47,2.18 6.18,0.38 3.42,4.54 -0.65,2.75 -3.14,3.45 -5.62,3.78 -3.6,1.45 -2.69,4.7 0.77,5.44 14.69,7.84 28.52,17.13 43.01,25.32 5.79,3.19 11.27,7.21 17.27,9.88 11.71,2.83 23.75,3.45 35.68,4.87 5.71,-39.38 11.42,-78.75 17.13,-118.13 -27.58,-3.93 -55.17,-7.85 -82.75,-11.78 -1,5.31 -2,10.63 -3,15.94z\",\"name\":\"Arizona\"},\"nv\":{\"path\":\"m84.84,232.41c22.96,34.61 45.92,69.23 68.88,103.84 3.66,2.65 3.19,-3.47 3.27,-5.71 0.37,-5.43 0.36,-11.24 1.08,-16.44 2.05,-2.03 4.26,-2 6.08,-0.39 2.62,-0.16 3.86,5.9 6.03,1.27 2.74,-0.82 2.66,-3.64 3.13,-6.41 7.5,-40.87 15,-81.75 22.51,-122.62 -30.72,-6.81 -61.44,-13.63 -92.16,-20.44 -6.27,22.3 -12.54,44.6 -18.81,66.91z\",\"name\":\"Nevada\"},\"or\":{\"path\":\"M67.16,62.81C64.24,70.42 62.73,78.57 58.5,85.63c-2.86,8.53 -5.96,16.93 -10.17,24.89 -3.06,6.61 -8,12.31 -11.32,18.7 -1.03,6.5 -0.64,13.05 -0.36,19.6 37.23,8.7 74.46,16.69 111.69,25.39 3.45,-13.15 6.51,-25.75 10.19,-38.81 1.2,-2.48 3.15,-6.06 -1.1,-5.42 -2.58,-1.78 -0.23,-4.45 -0.38,-6.91 2.3,-2.82 4.36,-5.82 7.47,-7.75 1.75,-5.08 5.43,-9.19 9.03,-13.06 1.66,-3.48 -2.46,-3.92 -3.39,-6.47 -0.25,-3.79 -3.56,-4.26 -6.62,-4.99 -7.63,-2.2 -15.38,-4.2 -23.21,-5.54 -4.9,0.03 -9.79,0.06 -14.69,0.09 -0.95,-2.84 -4.67,1.86 -7.11,0.5 -2.61,0.82 -4.42,-2.63 -6.57,-1.28 -2.61,-0.06 -5.23,0.11 -7.15,-1.87 -3.09,-1.53 -6.33,-1.81 -9.5,-3.1 -1.87,3.03 -5.69,1.22 -8.53,1.31 -1.65,-1.64 -5.79,-3.02 -6.03,-4.81 1.1,-2.44 0.78,-5.93 0.53,-8.59 -0.42,-3.92 -4.72,-2.63 -6.25,-4.49C74.59,58.67 69.45,62.45 67.16,62.81z\",\"name\":\"Oregon\"},\"wa\":{\"path\":\"m101.38,8.72c0.05,2.75 2.93,5.39 3.25,8.16 -1.92,2.33 -1.78,5.19 -1.32,7.71 -1.81,2.64 1.63,4.82 0.67,7.42 -3.6,1.52 -2.43,-3.7 -4.86,-4.99 -3.34,-2.24 1.47,-3.87 1.17,-5.42 -2.5,-1.11 -2.24,3.88 -3.69,4.17C92.33,26.39 88.86,23.04 84.76,22.57 79.82,20.66 75.28,17.69 72.25,13.25c-3.13,-0.98 -1.96,4.97 -3.25,6.95 -0.63,2.8 2.59,5.06 1.41,8.21 0.52,3.86 -1.29,7.55 0.18,11.29 -1.06,2.88 4.75,5.54 2.94,6.39 -3.45,-1.05 -6.2,3.2 -2.25,4.34 1.57,0.97 -0.61,6.32 -3.3,5.43 -1.83,2.15 1.28,6.86 4.14,4.17 3.77,-1.55 2.75,3.51 5.83,3.13 2.81,-0.24 4.26,3.31 4.54,5.61 0.04,2.48 -0.15,6.02 -0.26,7.78 2.63,1.76 5.01,4.26 8.46,3.62 3.2,0.66 4.7,-3.26 7.97,-0.5 3.01,0.48 6.37,1.55 8.79,3.66 3.03,0.92 6.02,-1.78 8.19,1.05 3.44,1.3 6.67,0.03 9.84,-1.4 0.99,1.78 4.42,1.32 7,1.3 5.35,-0.19 10.68,-0.16 15.82,1.55 6.99,1.44 13.78,3.45 20.65,5.4 4.47,-20.85 8.94,-41.71 13.41,-62.56 -19.81,-3.93 -39.37,-9.21 -58.73,-14.66 -7.27,-1.53 -14.4,-3.52 -21.46,-5.87L101.75,8.45 101.38,8.72z M95.5,15.16C94.05,13.72 92.15,14.26 94.72,17.63 94.39,13.84 99.19,18.11 98.98,14.18 98.24,12.75 96.05,14.08 95.5,15.16z m2.31,1.91c-3.13,3.04 1.36,2.18 0.16,-0.25l-0.16,0.25z\",\"name\":\"Washington\"},\"ca\":{\"path\":\"m35.06,153.94c-0.1,4.04 0.4,8.21 -1.99,11.75 -1.86,3.68 -2.55,8.24 -6.48,10.38 -1.19,2.11 -3.49,3.38 -3.59,6.45 -1.94,3.49 2.49,5.65 2.91,8.98 1.54,3.39 2.34,6.94 1.63,10.65 0,2.92 -2.79,5.01 -2.24,8.14 0.05,2.97 -2.24,5.87 0.04,8.54 2.58,5 6.38,9.93 6.71,15.69 -0.54,2.77 -0.99,5.37 1.81,7.17 1.6,1.95 4.49,3.66 2.79,6.46 -1.73,3.87 -1.14,8.04 -1.09,12.16 1.68,2.67 2.83,6.76 6.66,6.53 1.48,2.33 0.97,4.84 -0.22,7.13 -2.5,1.53 -4.36,2.73 -3.66,6.08 0.27,3.49 4.27,5.34 4.36,9.01 1.46,6.2 4.13,11.92 7.59,17.25 0.71,2.57 2.16,4.34 2.9,6.41 -0.24,3.33 -1.93,6.49 -2.41,9.87 -1.66,2.61 1.19,5.52 3.99,5.12 4.03,0.15 7.27,3.31 11.01,4.04 3,-0.55 4.74,2.9 6.07,5.11 1.54,2.71 2.37,6 5.76,6.88 2.51,1.14 6.19,0.05 7.17,3.45 2.41,2.72 -2.39,5.05 1.41,5.17 2.73,1.87 5.56,-1.74 7.56,-0.74 2.13,2.06 4.05,4.2 4.93,7.05 4.3,4.9 1.44,11.77 2.79,17.52 14.73,1.94 29.44,4.72 44.27,5.38 2.78,1.19 6.19,-4.43 2.84,-4.65 -3.13,0.64 -2.83,-4.02 -1.36,-4.66 3.15,-0.88 4.92,-3.83 4.65,-7.04 0.47,-3.98 3.27,-7.43 7.22,-8.4 3.43,-2.04 -0.33,-3.58 -0.79,-5.79 -0.23,-3.65 -1.95,-6.81 -3.62,-9.89 2.02,-3.66 -2.22,-3.32 -3.16,-6.24 -22.6,-34.1 -45.2,-68.19 -67.81,-102.29 6.27,-22.44 12.54,-44.88 18.81,-67.31 -22.04,-5.16 -44.08,-10.31 -66.13,-15.47 -0.45,1.38 -0.9,2.75 -1.34,4.13z m24.13,184.72c-0.27,3.05 7.99,3.06 4.7,2.07 -1.63,-0.35 -3.17,-2.46 -4.7,-2.07z m-5.16,0.38c0.33,3.71 5.81,0.51 1.31,-0.04 -0.44,0.01 -0.88,0.02 -1.31,0.04z M79.69,357.5c-0.2,1.58 4.42,6 3.16,2.37C82.22,358.91 80.8,357.6 79.69,357.5z M77.75,369.13c-0.14,1.55 3.2,3.89 1.32,1.26C78.6,369.72 77.39,366.55 77.75,369.13z\",\"name\":\"California\"}}});\n"
  },
  {
    "path": "target/mongo/assets/jqvmap/jqvmap/maps/jquery.vmap.world.js",
    "content": "/** Add World Map Data Points */\njQuery.fn.vectorMap('addMap', 'world_en', {\"width\":950,\"height\":550,\"pathes\":{\"id\":{\"path\":\"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z\",\"name\":\"Indonesia\"},\"pg\":{\"path\":\"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z\",\"name\":\"Papua New Guinea\"},\"mx\":{\"path\":\"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z\",\"name\":\"Mexico\"},\"ee\":{\"path\":\"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z\",\"name\":\"Estonia\"},\"dz\":{\"path\":\"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z\",\"name\":\"Algeria\"},\"ma\":{\"path\":\"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z\",\"name\":\"Morocco\"},\"mr\":{\"path\":\"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z\",\"name\":\"Mauritania\"},\"sn\":{\"path\":\"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z\",\"name\":\"Senegal\"},\"gm\":{\"path\":\"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z\",\"name\":\"Gambia\"},\"gw\":{\"path\":\"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z\",\"name\":\"Guinea-Bissau\"},\"gn\":{\"path\":\"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z\",\"name\":\"Guinea\"},\"sl\":{\"path\":\"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z\",\"name\":\"Sierra Leone\"},\"lr\":{\"path\":\"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z\",\"name\":\"Liberia\"},\"ci\":{\"path\":\"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z\",\"name\":\"Cote d'Ivoire\"},\"ml\":{\"path\":\"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z\",\"name\":\"Mali\"},\"bf\":{\"path\":\"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z\",\"name\":\"Burkina Faso\"},\"ne\":{\"path\":\"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z\",\"name\":\"Niger\"},\"gh\":{\"path\":\"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z\",\"name\":\"Ghana\"},\"tg\":{\"path\":\"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z\",\"name\":\"Togo\"},\"bj\":{\"path\":\"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z\",\"name\":\"Benin\"},\"ng\":{\"path\":\"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z\",\"name\":\"Nigeria\"},\"tn\":{\"path\":\"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z\",\"name\":\"Tunisia\"},\"ly\":{\"path\":\"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z\",\"name\":\"Libya\"},\"eg\":{\"path\":\"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z\",\"name\":\"Egypt\"},\"td\":{\"path\":\"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z\",\"name\":\"Chad\"},\"sd\":{\"path\":\"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z\",\"name\":\"Sudan\"},\"cm\":{\"path\":\"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z\",\"name\":\"Cameroon\"},\"er\":{\"path\":\"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z\",\"name\":\"Eritrea\"},\"dj\":{\"path\":\"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z\",\"name\":\"Djibouti\"},\"et\":{\"path\":\"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z\",\"name\":\"Ethiopia\"},\"so\":{\"path\":\"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z\",\"name\":\"Somalia\"},\"ye\":{\"path\":\"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z\",\"name\":\"Yemen\"},\"cf\":{\"path\":\"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z\",\"name\":\"Central African Republic\"},\"st\":{\"path\":\"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z\",\"name\":\"Sao Tome and Principe\"},\"gq\":{\"path\":\"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z\",\"name\":\"Equatorial Guinea\"},\"ga\":{\"path\":\"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z\",\"name\":\"Gabon\"},\"cg\":{\"path\":\"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z\",\"name\":\"Congo\"},\"ao\":{\"path\":\"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z\",\"name\":\"Angola\"},\"cd\":{\"path\":\"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z\",\"name\":\"Congo\"},\"rw\":{\"path\":\"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z\",\"name\":\"Rwanda\"},\"bi\":{\"path\":\"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z\",\"name\":\"Burundi\"},\"ug\":{\"path\":\"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z\",\"name\":\"Uganda\"},\"ke\":{\"path\":\"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z\",\"name\":\"Kenya\"},\"tz\":{\"path\":\"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z\",\"name\":\"Tanzania\"},\"zm\":{\"path\":\"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z\",\"name\":\"Zambia\"},\"mw\":{\"path\":\"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z\",\"name\":\"Malawi\"},\"mz\":{\"path\":\"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z\",\"name\":\"Mozambique\"},\"zw\":{\"path\":\"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z\",\"name\":\"Zimbabwe\"},\"na\":{\"path\":\"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z\",\"name\":\"Namibia\"},\"bw\":{\"path\":\"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z\",\"name\":\"Botswana\"},\"sz\":{\"path\":\"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z\",\"name\":\"Swaziland\"},\"ls\":{\"path\":\"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z\",\"name\":\"Lesotho\"},\"za\":{\"path\":\"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z\",\"name\":\"South Africa\"},\"gl\":{\"path\":\"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z\",\"name\":\"Greenland\"},\"au\":{\"path\":\"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z\",\"name\":\"Australia\"},\"nz\":{\"path\":\"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z\",\"name\":\"New Zealand\"},\"nc\":{\"path\":\"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z\",\"name\":\"New Caledonia\"},\"my\":{\"path\":\"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z\",\"name\":\"Malaysia\"},\"bn\":{\"path\":\"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z\",\"name\":\"Brunei Darussalam\"},\"tl\":{\"path\":\"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z\",\"name\":\"Timor-Leste\"},\"sb\":{\"path\":\"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z\",\"name\":\"Solomon Islands\"},\"vu\":{\"path\":\"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z\",\"name\":\"Vanuatu\"},\"fj\":{\"path\":\"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z\",\"name\":\"Fiji\"},\"ph\":{\"path\":\"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z\",\"name\":\"Philippines\"},\"cn\":{\"path\":\"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z\",\"name\":\"China\"},\"tw\":{\"path\":\"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z\",\"name\":\"Taiwan\"},\"jp\":{\"path\":\"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z\",\"name\":\"Japan\"},\"ru\":{\"path\":\"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z\",\"name\":\"Russian Federation\"},\"us\":{\"path\":\"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z\",\"name\":\"United States of America\"},\"mu\":{\"path\":\"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z\",\"name\":\"Mauritius\"},\"re\":{\"path\":\"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z\",\"name\":\"Reunion\"},\"mg\":{\"path\":\"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z\",\"name\":\"Madagascar\"},\"km\":{\"path\":\"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z\",\"name\":\"Comoros\"},\"sc\":{\"path\":\"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z\",\"name\":\"Seychelles\"},\"mv\":{\"path\":\"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z\",\"name\":\"Maldives\"},\"pt\":{\"path\":\"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z\",\"name\":\"Portugal\"},\"es\":{\"path\":\"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z\",\"name\":\"Spain\"},\"cv\":{\"path\":\"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z\",\"name\":\"Cape Verde\"},\"pf\":{\"path\":\"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z\",\"name\":\"French Polynesia\"},\"kn\":{\"path\":\"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z\",\"name\":\"Saint Kitts and Nevis\"},\"ag\":{\"path\":\"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z\",\"name\":\"Antigua and Barbuda\"},\"dm\":{\"path\":\"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z\",\"name\":\"Dominica\"},\"lc\":{\"path\":\"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z\",\"name\":\"Saint Lucia\"},\"bb\":{\"path\":\"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z\",\"name\":\"Barbados\"},\"gd\":{\"path\":\"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z\",\"name\":\"Grenada\"},\"tt\":{\"path\":\"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z\",\"name\":\"Trinidad and Tobago\"},\"do\":{\"path\":\"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z\",\"name\":\"Dominican Republic\"},\"ht\":{\"path\":\"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z\",\"name\":\"Haiti\"},\"fk\":{\"path\":\"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z\",\"name\":\"Falkland Islands\"},\"is\":{\"path\":\"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z\",\"name\":\"Iceland\"},\"no\":{\"path\":\"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z\",\"name\":\"Norway\"},\"lk\":{\"path\":\"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z\",\"name\":\"Sri Lanka\"},\"cu\":{\"path\":\"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z\",\"name\":\"Cuba\"},\"bs\":{\"path\":\"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z\",\"name\":\"Bahamas\"},\"jm\":{\"path\":\"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z\",\"name\":\"Jamaica\"},\"ec\":{\"path\":\"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z\",\"name\":\"Ecuador\"},\"ca\":{\"path\":\"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z\",\"name\":\"Canada\"},\"gt\":{\"path\":\"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z\",\"name\":\"Guatemala\"},\"hn\":{\"path\":\"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z\",\"name\":\"Honduras\"},\"sv\":{\"path\":\"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z\",\"name\":\"El Salvador\"},\"ni\":{\"path\":\"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z\",\"name\":\"Nicaragua\"},\"cr\":{\"path\":\"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z\",\"name\":\"Costa Rica\"},\"pa\":{\"path\":\"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z\",\"name\":\"Panama\"},\"co\":{\"path\":\"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z\",\"name\":\"Colombia\"},\"ve\":{\"path\":\"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z\",\"name\":\"Venezuela\"},\"gy\":{\"path\":\"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z\",\"name\":\"Guyana\"},\"sr\":{\"path\":\"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z\",\"name\":\"Suriname\"},\"gf\":{\"path\":\"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z\",\"name\":\"French Guiana\"},\"pe\":{\"path\":\"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z\",\"name\":\"Peru\"},\"bo\":{\"path\":\"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z\",\"name\":\"Bolivia\"},\"py\":{\"path\":\"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z\",\"name\":\"Paraguay\"},\"uy\":{\"path\":\"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z\",\"name\":\"Uruguay\"},\"ar\":{\"path\":\"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z\",\"name\":\"Argentina\"},\"cl\":{\"path\":\"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z\",\"name\":\"Chile\"},\"br\":{\"path\":\"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z\",\"name\":\"Brazil\"},\"bz\":{\"path\":\"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z\",\"name\":\"Belize\"},\"mn\":{\"path\":\"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z\",\"name\":\"Mongolia\"},\"kp\":{\"path\":\"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z\",\"name\":\"North Korea\"},\"kr\":{\"path\":\"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z\",\"name\":\"South Korea\"},\"kz\":{\"path\":\"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z\",\"name\":\"Kazakhstan\"},\"tm\":{\"path\":\"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z\",\"name\":\"Turkmenistan\"},\"uz\":{\"path\":\"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z\",\"name\":\"Uzbekistan\"},\"tj\":{\"path\":\"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z\",\"name\":\"Tajikistan\"},\"kg\":{\"path\":\"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z\",\"name\":\"Kyrgyz Republic\"},\"af\":{\"path\":\"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z\",\"name\":\"Afghanistan\"},\"pk\":{\"path\":\"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z\",\"name\":\"Pakistan\"},\"in\":{\"path\":\"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z\",\"name\":\"India\"},\"np\":{\"path\":\"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z\",\"name\":\"Nepal\"},\"bt\":{\"path\":\"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z\",\"name\":\"Bhutan\"},\"bd\":{\"path\":\"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z\",\"name\":\"Bangladesh\"},\"mm\":{\"path\":\"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z\",\"name\":\"Myanmar\"},\"th\":{\"path\":\"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z\",\"name\":\"Thailand\"},\"kh\":{\"path\":\"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z\",\"name\":\"Cambodia\"},\"la\":{\"path\":\"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z\",\"name\":\"Lao People's Democratic Republic\"},\"vn\":{\"path\":\"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z\",\"name\":\"Vietnam\"},\"ge\":{\"path\":\"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z\",\"name\":\"Georgia\"},\"am\":{\"path\":\"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z\",\"name\":\"Armenia\"},\"az\":{\"path\":\"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z\",\"name\":\"Azerbaijan\"},\"ir\":{\"path\":\"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z\",\"name\":\"Iran\"},\"tr\":{\"path\":\"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z\",\"name\":\"Turkey\"},\"om\":{\"path\":\"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z\",\"name\":\"Oman\"},\"ae\":{\"path\":\"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z\",\"name\":\"United Arab Emirates\"},\"qa\":{\"path\":\"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z\",\"name\":\"Qatar\"},\"kw\":{\"path\":\"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z\",\"name\":\"Kuwait\"},\"sa\":{\"path\":\"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z\",\"name\":\"Saudi Arabia\"},\"sy\":{\"path\":\"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z\",\"name\":\"Syrian Arab Republic\"},\"iq\":{\"path\":\"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z\",\"name\":\"Iraq\"},\"jo\":{\"path\":\"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z\",\"name\":\"Jordan\"},\"lb\":{\"path\":\"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z\",\"name\":\"Lebanon\"},\"il\":{\"path\":\"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z\",\"name\":\"Israel\"},\"cy\":{\"path\":\"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z\",\"name\":\"Cyprus\"},\"gb\":{\"path\":\"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z\",\"name\":\"United Kingdom\"},\"ie\":{\"path\":\"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z\",\"name\":\"Ireland\"},\"se\":{\"path\":\"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z\",\"name\":\"Sweden\"},\"fi\":{\"path\":\"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z\",\"name\":\"Finland\"},\"lv\":{\"path\":\"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z\",\"name\":\"Latvia\"},\"lt\":{\"path\":\"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z\",\"name\":\"Lithuania\"},\"by\":{\"path\":\"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z\",\"name\":\"Belarus\"},\"pl\":{\"path\":\"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z\",\"name\":\"Poland\"},\"it\":{\"path\":\"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z\",\"name\":\"Italy\"},\"fr\":{\"path\":\"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z\",\"name\":\"France\"},\"nl\":{\"path\":\"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z\",\"name\":\"Netherlands\"},\"be\":{\"path\":\"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z\",\"name\":\"Belgium\"},\"de\":{\"path\":\"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z\",\"name\":\"Germany\"},\"dk\":{\"path\":\"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z\",\"name\":\"Denmark\"},\"ch\":{\"path\":\"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z\",\"name\":\"Switzerland\"},\"cz\":{\"path\":\"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z\",\"name\":\"Czech Republic\"},\"sk\":{\"path\":\"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z\",\"name\":\"Slovakia\"},\"at\":{\"path\":\"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z\",\"name\":\"Austria\"},\"hu\":{\"path\":\"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z\",\"name\":\"Hungary\"},\"si\":{\"path\":\"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z\",\"name\":\"Slovenia\"},\"hr\":{\"path\":\"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z\",\"name\":\"Croatia\"},\"ba\":{\"path\":\"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z\",\"name\":\"Bosnia and Herzegovina\"},\"mt\":{\"path\":\"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z\",\"name\":\"Malta\"},\"ua\":{\"path\":\"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z\",\"name\":\"Ukraine\"},\"md\":{\"path\":\"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z\",\"name\":\"Moldova\"},\"ro\":{\"path\":\"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z\",\"name\":\"Romania\"},\"rs\":{\"path\":\"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z\",\"name\":\"Serbia\"},\"bg\":{\"path\":\"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z\",\"name\":\"Bulgaria\"},\"al\":{\"path\":\"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z\",\"name\":\"Albania\"},\"mk\":{\"path\":\"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z\",\"name\":\"Macedonia\"},\"gr\":{\"path\":\"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z\",\"name\":\"Greece\"}}});\n"
  },
  {
    "path": "target/mongo/assets/metr-folio/css/metro-gallery.css",
    "content": "/*-\tFANCY BOX TRICKS -*/\n\n.fancybox-lock .fancybox-overlay {\n    overflow-x: auto;\n    overflow-y: hidden !important;\n}\n\n/*-\tBASIC CAPTIONS AND COVERS PER ENTRY-*/\n\n.mega-covercaption {\n    padding: 21px 20px;\n    box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    width: 100%;\n    position: absolute;\n    left: 0px;\n    min-height: 0px;\n    max-width: 100%;\n    max-height: 100%;\n    overflow: hidden;\n}\n\n.mega-white {\n    background: #fff;\n}\n\n.mega-white.mega-transparent {\n    background: rgba(255,255,255,0.80);\n}\n\n.mega-black {\n    background: rgba(0,0,0,0.8);\n}\n\n.mega-black.mega-transparent {\n    background: rgba(0,0,0,0.80);\n}\n\n.mega-turquoise {\n    background: rgba(81,176,184,0.8);\n}\n\n.mega-orange {\n    background: rgba(229,162,33,0.8);\n}\n\n.mega-green {\n    background: rgba(170,191,67,0.8);\n}\n\n.mega-red {\n    background: rgba(225,102,68,0.8);\n}\n\n.mega-violet {\n    background: rgba(141,44,124,0.8);\n}\n\n.mega-blue {\n    background: rgba(17,99,163,0.8);\n}\n\n\n/*- DIRECTIONS OF CAPTIONS -*/\n.mega-square .mega-square-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-square .mega-square-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-square .mega-square-left {\n    top: 0px;\n    left: 0px;\n    max-width: 50%;\n    height: 100%;\n}\n\n.mega-square .mega-square-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-portrait .mega-portrait-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-portrait .mega-portrait-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-portrait .mega-portrait-left {\n    top: 0px;\n    left: 0px;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-portrait .mega-portrait-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-landscape .mega-landscape-top {\n    top: 0px;\n    left: 0px;\n    bottom: auto;\n}\n\n.mega-landscape .mega-landscape-bottom {\n    bottom: 0px;\n    left: 0px;\n    top: auto;\n}\n\n.mega-landscape .mega-landscape-left {\n    top: 0px;\n    left: 0px;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-landscape .mega-landscape-right {\n    top: 0px;\n    right: 0px;\n    left: auto;\n    width: 50%;\n    height: 100%;\n}\n\n.mega-title {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 24px;\n    line-height: 24px;\n    color: #fff;\n    font-weight: 400;\n}\n\n.mega-date {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 15px;\n    color: #666;\n    font-weight: 300;\n    margin-top: 0px;\n}\n\n.mega-covercaption p {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 13px;\n    color: #555;\n    font-weight: 400;\n    margin-top: 12px;\n}\n\n.mega-covercaption a {\n    color: #fff;\n    text-decoration: none;\n    border-bottom: 1px dotted #fff;\n}\n\n.mega-covercaption a:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n.mega-withsocialbar.mega-covercaption {\n    margin-bottom: 16px;\n}\n\n.mega-smallcaptions .mega-title {\n    font-size: 18px;\n    font-weight: 700;\n    text-transform: uppercase;\n}\n\n.mega-smallcaptions .mega-date {\n    font-size: 12px;\n    font-weight: 400;\n    text-transform: uppercase;\n    color: #888;\n}\n\n.mega-white .mega-title {\n    color: #000;\n}\n\n.mega-white .mega-date {\n    color: #666;\n}\n\n.mega-white p {\n    color: #555;\n}\n\n.mega-white.mega-covercaption a {\n    color: #555;\n    text-decoration: none;\n    border-bottom: 1px dotted #555;\n}\n\n.mega-white.mega-covercaption a:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n.mega-black .mega-title {\n    color: #fff;\n}\n\n.mega-black .mega-date {\n    color: #fff;\n}\n\n.mega-black p {\n    color: #fff;\n}\n\n.mega-turquoise .mega-title,\n.mega-turquoise .mega-date,\n.mega-turquoise p {\n    color: #fff;\n}\n\n.mega-orange .mega-title,\n.mega-orange .mega-date,\n.mega-orange p {\n    color: #fff;\n}\n\n.mega-green .mega-title,\n.mega-green .mega-date,\n.mega-green p {\n    color: #fff;\n}\n\n.mega-red .mega-title,\n.mega-red .mega-date,\n.mega-red p {\n    color: #fff;\n}\n\n.mega-violet .mega-title,\n.mega-violet .mega-date,\n.mega-violet p {\n    color: #fff;\n}\n\n.mega-blue .mega-title,\n.mega-blue .mega-date,\n.mega-blue p {\n    color: #fff;\n}\n\n.fatcaption-top {\n    position: absolute;\n    top: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.fatcaption-bottom {\n    position: absolute;\n    bottom: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.gallerycaption-bottom {\n    position: absolute;\n    bottom: 0;\n    width: 100%;\n    text-align: center;\n    padding: 15px 0px;\n    font-size: 17px;\n    line-height: 20px;\n    font-weight: 700;\n    color: #fff;\n    margin-top: 0px;\n    background: rgb(0,0,0);\n    background: rgba(0,0,0,0.8);\n}\n\n.gallerysubline {\n    width: 100%;\n    text-align: center;\n    font-size: 13px;\n    line-height: 20px;\n    font-weight: 400;\n    color: #ccc;\n    margin-top: 2px;\n}\n\n\n/*- SET THE CAPTION SETTIGS UNDER LOWSIZE ENTRIES  -*/\n\n.mega-lowsize .mega-covercaption p {\n    display: none;\n}\n\n.mega-lowsize .mega-title {\n    font-size: 18px;\n}\n\n.mega-lowsize .mega-date {\n    font-size: 13px;\n}\n\n\n/*-\tCAPTION NORMAL LINKS -*/\n.mega-coverbuttons {\n    max-width: 68px;\n    max-height: 34px;\n    position: absolute;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0.0;\n    -khtml-opacity: 0.0;\n    opacity: 0.0;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    left: 0px !important;\n    top: 0px !important;\n    bottom: auto !important;\n}\n\n.mega-entry-innerwrap:hover .mega-coverbuttons {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n.mega-link {\n    background-image: url(../assets/link_clean.png);\n    background-repeat: no-repeat;\n    background-position: center center;\n    width: 34px;\n    height: 34px;\n    float: left;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n    filter: alpha(opacity=50);\n    -moz-opacity: 0.5;\n    -khtml-opacity: 0.5;\n    opacity: 0.5;\n    cursor: pointer;\n}\n\n.mega-view {\n    background-image: url(../assets/zoom_clean.png);\n    background-repeat: no-repeat;\n    background-position: center center;\n    width: 34px;\n    height: 34px;\n    float: left;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n    filter: alpha(opacity=50);\n    -moz-opacity: 0.5;\n    -khtml-opacity: 0.5;\n    opacity: 0.5;\n    cursor: pointer;\n}\n\n.mega-link:hover,\n.mega-view:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n/*-\tSOCIAL BAR AT THE BOTTOM PER mega-entry\t-*/\n\n.mega-square .mega-square-bottom.mega-withsocialbar,\n.mega-portrait .mega-portrait-bottom.mega-withsocialbar,\n.mega-landscape .mega-landscape-bottom.mega-withsocialbar {\n    padding-bottom: 25px;\n}\n\n.mega-socialbar {\n    position: absolute;\n    height: 16px;\n    z-index: 10;\n    bottom: 0px;\n    margin-left: 0px;\n    margin-right: 0px;\n    left: 0px;\n    right: 0px;\n    box-sizing: content-box;\n    -moz-box-sizing: content-box;\n    -webkit-box-sizing: content-box;\n    background: url(../assets/socialbar-bg.png) repeat-x;\n    border-top: 0;\n    border-bottom: 0;\n    border-radius: 0;\n    -moz-border-radius: 0;\n    -webkit-border-radius: 0;\n    padding: 2px 10px;\n    overflow: hidden;\n}\n\n.mega-socialbar span {\n    text-align: left;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 11px;\n    color: #777;\n    font-weight: 400;\n    line-height: 16px;\n    text-shadow: 0px 1px 0px #fff;\n}\n\n.mega-soc {\n    cursor: pointer;\n    background-position: left 2px !important;\n    min-width: 16px;\n    height: 18px;\n    margin-top: -2px;\n}\n\n.mega-soc:hover {\n    background-position: left -14px !important;\n}\n\n.mega-soc span {\n    margin-left: 20px;\n    margin-right: 20px;\n}\n\n.mega-facebook {\n    background: url(../icons/facebook.png) no-repeat;\n}\n\n.mega-comments {\n    background: url(../icons/comments.png) no-repeat;\n}\n\n.mega-twitter {\n    background: url(../icons/twitter.png) no-repeat;\n}\n\n.mega-more {\n    background: url(../icons/more.png) no-repeat;\n}\n\n.mega-like {\n    background: url(../icons/like.png) no-repeat;\n}\n\n.mega-leftfloat {\n    float: left;\n    margin-right: 5px;\n}\n\n.mega-rightfloat {\n    float: right;\n}\n\n.ie8 .mega-socialbar .mega-rightfloat,\n.ie9 .mega-socialbar .mega-rightfloat {\n    margin-right: 25px;\n}\n\n\n\n\n\n/*-\tBASIC SETTINGS FOR GALLERY GRIDS\t-*/\n\n\n.mega-entry .mega-entry-innerwrap {\n    border: 5px solid #fff;\n}\n\n.noborder .mega-entry .mega-entry-innerwrap {\n    border: 0px solid #fff;\n}\n\n.noborder .mega-entry .mega-entry-innerwrap {\n    border: 0px solid #fff;\n}\n\n.light-bg-entries .mega-entry .mega-entry-innerwrap {\n    background-color: #ccc !important;\n}\n\n.dark-bg-entries .mega-entry .mega-entry-innerwrap {\n    background-color: rgb(0,0,0) !important;\n    background-color: rgba(0,0,0,0.3) !important;\n}\n\n.mega-entry {\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    position: absolute;\n    -webkit-transition: all 0.6s ease-out;\n    -moz-transition: all 0.6s ease-out;\n    -o-transition: all 0.6s ease-out;\n    -ms-transition: all 0.6s ease-out;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n    z-index: 2;\n}\n\n.mega-entry .mega-entry-innerwrap {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    overflow: visible;\n    z-index: 2;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    border-radius: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.ie8 .mega-entry,\n.ie8 .mega-entry .mega-entry-innerwrap,\n.ie9 .mega-entry,\n.ie9 .mega-entry .mega-entry-innerwrap {\n    overflow: hidden;\n}\n\n.mega-entry-innerwrap.pagetop {\n    -webkit-transform-origin: 50% 0% 0;\n    -moz-transform-origin: 50% 0% 0;\n    transform-origin: 50% 0% 0;\n}\n\n.mega-entry-innerwrap.pagebottom {\n    -webkit-transform-origin: 50% 100% 0;\n    -moz-transform-origin: 50% 100% 0;\n    transform-origin: 50% 100% 0;\n}\n\n.mega-entry-innerwrap.pagemiddle {\n    -webkit-transform-origin: 50% 50% 0;\n    -moz-transform-origin: 50% 50% 0;\n    transform-origin: 50% 50% 0;\n}\n\n.megafolio-container.norounded .mega-entry .mega-entry-innerwrap {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.megafolio-container-splash.norounded .mega-entry .mega-entry-innerwrap {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.mega-lightbox, .oldmegalightbox {\n    position: absolute;\n    overflow: hidden;\n    box-shadow: 0px 0px 10px 5px rgba(0,0,0,0.6);\n    border: 1px solid #333;\n    z-index: 1000;\n    padding: 100px;\n    background: url(../assets/grain.png) repeat;\n    background-color: rgba(20,20,20,0.9);\n    margin-left: -100px;\n    margin-top: -100px;\n}\n\n.mega-lightbox .mediaholder,\n.oldmegalightbox .mediaholder {\n    border: 2px solid #fff;\n    position: relative;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0px 0px 3px 1px rgba(40,40,40,0.6);\n}\n\n\n\n/** IE HACKS **/\n\n.ieimg {\n    position: absolute;\n    width: 100%;\n    top: 0px;\n    left: 0px;\n    z-index: 0;\n}\n\n.mega-mega-entry-added {\n    visibility: hidden;\n}\n\n.mega-mega-entry-added .mega-socialbar,\n.mega-mega-entry-added .mega-covercaption {\n    visibility: hidden;\n}\n\n\n\n/*-     PORTFOLIO HOVER EFFECTS     -*/\n\n/* -\tBASIC SETTINGS -*/\n.mega-hover {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    background: url(../assets/grain.png) repeat;\n    background-color: rgba(0,0,0,0.8);\n    border-radius: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.norounded .mega-hover {\n    border-radius: 0px;\n    -moz-border-radius: 0px;\n    -webkit-border-radius: 0px;\n}\n\n.mega-divider {\n    position: absolute;\n    top: 50%;\n    width: 80%;\n    left: 10%;\n    border-bottom: 1px dashed #7b7c7e;\n    border-top: 1px dashed #111;\n}\n\n.mega-hovertitle,\n.mega-hoverlink,\n.mega-hoverview {\n    -webkit-transition: all 0.2s ease-out;\n    -moz-transition: all 0.2s ease-out;\n    -o-transition: all 0.2s ease-out;\n    -ms-transition: all 0.2s ease-out;\n    transition-delay: 0.2s;\n    -moz-transition-delay: 0.2s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.2s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.2s;\n    /* Opera */;\n}\n\n.mega-hovertitle {\n    position: absolute;\n    color: #fff;\n    font-family: 'Open Sans', sans-serif;\n    font-size: 14px;\n    font-weight: 700;\n    text-align: center;\n    width: 60%;\n    padding: 0px 0px 15px;\n    left: 20%;\n    bottom: 40%;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.mega-hovertitle .mega-hoversubtitle {\n    color: #aaa;\n    font-size: 12px;\n    line-height: 13px;\n    font-weight: 400;\n    margin-top: 5px;\n}\n\n.mega-hoverlink {\n    right: 50%;\n    margin-right: 33px;\n    background: url(../assets/link.png) no-repeat center;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.mega-hoverview {\n    left: 50%;\n    margin-left: 33px;\n    background: url(../assets/lupe.png) no-repeat center;\n    -webkit-transform: translateZ(10);\n    -webkit-backface-visibility: hidden;\n    -webkit-perspective: 1000;\n}\n\n.mega-hoverlink,\n.mega-hoverview {\n    width: 33px;\n    height: 33px;\n    position: absolute;\n    top: 50%;\n    text-align: center;\n    margin-top: 0px;\n    cursor: pointer;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n    filter: alpha(opacity=0);\n    -moz-opacity: 0;\n    -khtml-opacity: 0;\n    opacity: 0;\n}\n\n.mega-hover.alone .mega-hoverview {\n    margin-left: -16px;\n    margin-top: -20px;\n}\n\n.mega-hover.alone .mega-hoverlink {\n    margin-right: -16px;\n    margin-top: -20px;\n}\n\n\n\n\n\n\n\n/*-\t THE HOVER EFFECT -*/\n\n.mega-hover:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hovertitle {\n    bottom: 50%;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hovertitle,\n.mega-hover:hover .mega-hoverlink,\n.mega-hover:hover .mega-hoverview {\n    transform: rotate(0deg);\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n    filter: alpha(opacity=100);\n    -moz-opacity: 1;\n    -khtml-opacity: 1;\n    opacity: 1;\n}\n\n.mega-hover:hover .mega-hoverlink {\n    right: 50%;\n    margin-right: 5px;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover:hover .mega-hoverview {\n    left: 50%;\n    margin-left: 5px;\n    transition-delay: 0.1s;\n    -moz-transition-delay: 0.1s;\n    /* Firefox 4 */\n    -webkit-transition-delay: 0.1s;\n    /* Safari and Chrome */\n    -o-transition-delay: 0.1s;\n    /* Opera */;\n}\n\n.mega-hover.alone:hover .mega-hoverview {\n    margin-left: -16px;\n    margin-top: 0px;\n}\n\n.mega-hover.notitle.alone:hover .mega-hoverview {\n    margin-left: -16px;\n    margin-top: -16px;\n}\n\n.mega-hover.notitle.alone:hover .mega-hoverlink {\n    margin-right: -16px;\n    margin-top: -16px;\n}\n\n.mega-hover:hover .mega-hoverlink:hover,\n.mega-hover:hover .mega-hoverview:hover {\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)\";\n    filter: alpha(opacity=60);\n    -moz-opacity: 0.6;\n    -khtml-opacity: 0.6;\n    opacity: 0.6;\n}\n\n.mega-hover.notitle .mega-hoverlink,\n.mega-hover.notitle .mega-hoverview {\n    margin-top: -16px;\n}\n\n\n\n\n/*-\t FILTERS\t-*/\n.clear {\n    clear: both;\n}\n\n.filter_padder {\n    margin: 10px auto 25px;\n    box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    width: 100%;\n}\n\n.filter_wrapper {\n    border-radius: 20px;\n    -moz-border-radius: 20px;\n    -webkit-border-radius: 20px;\n    /*padding:0px 35px;*/\n    position: relative;\n    min-height: 40px;\n    margin: auto;\n}\n\n.ie9 .filter_wrapper {\n    max-width: 650px;\n}\n\n.filter_wrapper.floated {\n    float: left;\n    margin-right: 50px;\n}\n\n.filter_list_wrapper {\n    width: 150px;\n    position: relative;\n    margin: auto;\n}\n\n.filter {\n    background: #E5E5E5;\n    margin-right: 10px;\n    line-height: 33px;\n    padding: 0 15px;\n    font-size: 12px;\n    color: #999;\n    float: left;\n    font-weight: normal;\n    cursor: pointer;\n    transition: all 0.5s ease-in-out 0s;\n}\n\n.filter:hover, .filter.selected {\n    background: #4A8BC2;\n    color: #FFFFFF;\n    transition: all 0.5s ease-in-out 0s;\n}\n\n.filter.last-child {\n    margin-right: 0px !important;\n}\n\n.filter_list_button {\n    background: url(../assets/tiles/list.png) no-repeat 15px center, url(../assets/tiles/topgradient.png);\n    background-color: #040404;\n    border-radius: 20px 20px 20px 20px;\n    -moz-border-radius: 20px 20px 20px 20px;\n    -webkit-border-radius: 20px 20px 20px 20px;\n    padding: 0px 30px 0px 60px;\n    position: relative;\n    min-height: 40px;\n    margin: auto;\n    width: 100%;\n    z-index: 1;\n}\n\nul.filter_list {\n    background: #040404;\n    padding: 0px 45px 0px 45px;\n    position: absolute;\n    z-index: 0;\n    width: 100%;\n    top: 15px;\n    border-radius: 0px 0px 20px 20px;\n    -moz-border-radius: 0px 0px 20px 20px;\n    -webkit-border-radius: 0px 0px 20px 20px;\n    display: none;\n    list-style: none;\n}\n\nli.filter {\n    list-style: none;\n    max-width: 156px;\n    background: #040404;\n    line-height: 30px;\n    font-size: 14px;\n    color: #999;\n    font-weight: 700;\n    cursor: pointer;\n    float: none;\n    margin-right: 0px !important;\n}\n\n.current-filter {\n    max-width: 156px;\n    line-height: 40px;\n    font-size: 14px;\n    color: #999;\n    font-weight: 700;\n    cursor: pointer;\n    float: none;\n    margin-right: 0px !important;\n}\n\n.filter_wrapper_list li.filter:hover,\n.current-filter,\n.filter_wrapper_list li.filter.selected {\n    color: #fff;\n}\n\n@media only screen and (max-width: 961px) {\n\n    .filter_wrapper.floated {\n        margin: auto;\n        float: none;\n    }\n\n    .filter_list_wrapper {\n        width: 216px;\n        float: none;\n        clear: both;\n        margin-top: 30px;\n    };\n    }\n\n@media only screen and (max-width: 420px) {\n    .filter {\n        float: none;\n        text-align: center;\n        margin-right: 0px;\n        line-height: 30px;\n    };\n    }\n\n\n/*-  EXAMPLES FOR COLORED BG  -*/\n\n.mega-entry.mega-bg-1 .mega-entry-innerwrap {\n    background-color: #f32390 !important;\n}\n\n.mega-entry.mega-bg-2 .mega-entry-innerwrap {\n    background-color: #d69b12 !important;\n}\n\n.mega-entry.mega-bg-3 .mega-entry-innerwrap {\n    background-color: #7bce8b !important;\n}\n\n"
  },
  {
    "path": "target/mongo/assets/metr-folio/js/jquery.metro-gal.megafoliopro.js",
    "content": "\n\n(function($,undefined){\n\n\n\t////////////////////////////////////////\n\t// THE REVOLUTION PLUGIN STARTS HERE //\n\t///////////////////////////////////////\n\n\t$.fn.extend({\n\n\t\t///////////////////////////\n\t\t// MAIN PLUGIN  FUNCTION //\n\t\t///////////////////////////\n\t\tmegafoliopro: function(options) {\n\n\t\t\t\tvar defaults = {\n\t\t\t\t\tfilterChangeAnimation:\"rotatescale\",\t\t\t// fade, rotate, scale, rotatescale, pagetop, pagebottom,pagemiddle\n\t\t\t\t\tfilterChangeSpeed:400,\t\t\t\t\t\t\t// Speed of Transition\n\t\t\t\t\tfilterChangeRotate:99,\t\t\t\t\t\t\t// If you ue scalerotate or rotate you can set the rotation (99 = random !!)\n\t\t\t\t\tfilterChangeScale:0.6,\t\t\t\t\t\t\t// Scale Animation Endparameter\n\t\t\t\t\tdelay:20,\n\t\t\t\t\tdefaultWidth:980,\n\t\t\t\t\tpaddingHorizontal:10,\n\t\t\t\t\tpaddingVertical:10,\n\t\t\t\t\tlayoutarray:[11],\n\t\t\t\t\tlowSize:50,\n\t\t\t\t\tstartFilter:\"*\"\n\t\t\t\t};\n\n\t\t\t\toptions = $.extend({}, defaults, options);\n\n\n\t\t\t\treturn this.each(function() {\n\n\t\t\t\t\t\t// Delegate .transition() calls to .animate()\n\t\t\t\t\t\t// if the browser can't do CSS transitions.\n\t\t\t\t\t\tif (!$.support.transition)\n\t\t\t\t\t\t\t$.fn.transition = $.fn.animate;\n\n\t\t\t\t\t\tvar opt=options;\n\t\t\t\t\t\topt.detaiview=\"off\";\n\t\t\t\t\t\topt.firststart=1;\n\t\t\t\t\t\tif (opt.filter==undefined) opt.filter=\"*\";\n\n\t\t\t\t\t\tif (opt.delay==undefined) opt.delay=0;\n\n\t\t\t\t\t\t//opt.savetrans = opt.filterChangeAnimation;\n\t\t\t\t\t\t//opt.filterChangeAnimation=\"fade\";\n\n\t\t\t\t\t\t// CHECK IF FIREFOX 13 IS ON WAY.. IT HAS A STRANGE BUG, CSS ANIMATE SHOULD NOT BE USED\n\t\t\t\t\t\tvar firefox = opt.firefox13 = false;\n\t\t\t\t\t\tvar ie = opt.ie = !$.support.opacity;\n\t\t\t\t\t\tvar ie9 = opt.ie9 = !$.support.htmlSerialize\n\n\n\t\t\t\t\t\tif (ie) $('body').addClass(\"ie8\");\n\t\t\t\t\t\tif (ie9) $('body').addClass(\"ie9\");\n\n\t\t\t\t\t\tvar container=$(this);\n\t\t\t\t\t\tcontainer.data('defaultwidth',opt.defaultWidth);\n\t\t\t\t\t\tcontainer.data('paddingh',opt.paddingHorizontal);\n\t\t\t\t\t\tcontainer.data('paddingv',opt.paddingVertical);\n\t\t\t\t\t\tcontainer.data('order',opt.layoutarray);\n\t\t\t\t\t\tcontainer.data('ie',ie);\n\t\t\t\t\t\tcontainer.data('ie9',ie9);\n\t\t\t\t\t\tcontainer.data('ff',firefox);\n\t\t\t\t\t\tcontainer.data('opt',opt);\n\n\n\t\t\t\t\t\tprepairEntries(container,opt);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\taddFilter(container,\"*\");\n\t\t\t\t\t\tpreparingLazyLoad(container);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t},400)\n\n\n\t\t\t\t\t\t// START WITH AN ALTERNATIVE FILTER BY BUILDING THE CONTAINERS\n\t\t\t\t\t\tif ( opt.startFilter!=\"*\" && opt.startFilter !=undefined) {\n\t\t\t\t\t\t\taddFilter(container,opt.startFilter);\n\t\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t$(window).resize(function() {\n\t\t\t\t\t\t\tclearTimeout(container.data('resized'));\n\n\t\t\t\t\t\t\tcontainer.data('resized',setTimeout(function() {\n\t\t\t\t\t\t\t\treOrderOrdered(container,0,container.find('>.mega-entry.tp-ordered').length);\n\n\t\t\t\t\t\t\t},150));\n\t\t\t\t\t\t});\n\n\t\t\t\t\t/****************************************************\n\t\t\t\t\t\t-\tAPPLE IPAD AND IPHONE WORKAROUNDS HERE\t-\n\t\t\t\t\t******************************************************/\n\n\t\t\t\t\tif((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {\n\t\t\t\t\t    $(\".mega-entry\").click(function(){\n\t\t\t\t\t        //we just need to attach a click event listener to provoke iPhone/iPod/iPad's hover event\n\t\t\t\t\t        //strange\n\t\t\t\t\t    });\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t///////////////////////\n\t\t// METHODE RESUME    //\n\t\t//////////////////////\n\t\tmegamethode: function(option) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t})\n\t\t},\n\n\t\tmegagetcurrentorder: function() {\n\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\treturn container.data('lastorder');\n\n\t\t},\n\n\t\tmegaappendentry: function(entry) {\n\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tvar newentry=$(entry);\n\t\t\t\t\tnewentry.addClass(\"mega-entry-added\");\n\t\t\t\t\tcontainer.append(newentry);\n\t\t\t\t\tvar opt=container.data('opt');\n\n\t\t\t\t\tprepairNewEntries(container,opt);\n\n\t\t\t\t\treOrder(container,0);\n\n\t\t\t\t\trePosition(container,1);\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\taddFilter(container,opt.filter);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container,1);\n\t\t\t\t\t},200);\n\n\n\t\t},\n\n\t\tmegaremix: function(order) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tif (order!=undefined)\n\t\t\t\t\t\tcontainer.data('order',order);\n\t\t\t\t\tnotOrdered(container);\n\t\t\t\t\treOrder(container,0);\n\t\t\t\t\trePosition(container);\n\n\t\t\t\t})\n\t\t},\n\n\t\tmegafilter: function(filter) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\n\t\t\t\t\tif (container.data('nofilterinaction')!=1) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tcontainer.data('nofilterinaction',1);\n\t\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tcontainer.data('nofilterinaction',0);\n\n\t\t\t\t\t\t},1200)\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclearInterval(container.data('nextfiltertimer'));\n\t\t\t\t\t\tcontainer.data('nextfiltertimer',setInterval(function() {\n\t\t\t\t\t\t\tif (container.data('nofilterinaction')!=1) {\n\t\t\t\t\t\t\t\tclearInterval(container.data('nextfiltertimer'));\n\t\t\t\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t\t\t\tcontainer.data('nofilterinaction',1);\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tcontainer.data('nofilterinaction',0);\n\n\t\t\t\t\t\t\t\t},1200)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},10));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tmegaanimchange: function(anim,speed,rotate,scale) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\t// CATCH THE CONTAINER\n\t\t\t\t\tvar container=$(this);\n\t\t\t\t\tvar opt=container.data('opt');\n\t\t\t\t\tvar filter=opt.filter;\n\t\t\t\t\topt.filterChangeAnimation=anim;\n\t\t\t\t\topt.filterChangeSpeed=speed;\n\t\t\t\t\topt.filterChangeRotate=rotate;\n\t\t\t\t\topt.filterChangeScale=scale;\n\t\t\t\t\taddFilter(container,\"\");\n\t\t\t\t\taddFilter(container,filter);\n\t\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t\treOrder(container,0);\n\t\t\t\t\t\trePosition(container);\n\t\t\t\t\t},2*opt.filterChangeSpeed);\n\t\t\t\t\tcontainer.data('opt',opt);\n\t\t\t\t})\n\t\t}\n\t})\n\n\n\n\t////////////////////////////////////////////////////////\n\t//\tWRAP THE DIVS DEPENDING ON THE AMOUNT OF ENTRIES //\n\t////////////////////////////////////////////////////////\n\tfunction prepairEntries(container,opt) {\n\n\t\tcontainer.find('>.mega-entry').each(function() {\n\t\t\t\tvar ent=$(this);\n\t\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\t\t\t\tent.addClass(\"tp-notordered\").addClass(\"mega-entry-added\");\n\t\t\t\tent.wrapInner('<div class=\"mega-entry-innerwrap\"></div>');\n\t\t\t\t//ent.find('.mega-socialbar').appendTo(ent)\n\t\t\t\tvar iw = ent.find('.mega-entry-innerwrap')\n\t\t\t\t/*if (opt.ie) {\n\t\t\t\t\tiw.append('<img class=\"ieimg\" src='+ent.data(\"src\")+'>');\n\t\t\t\t} else {*/\n\t\t\t\t\tiw.css({'background':'url('+ent.data(\"src\")+')','backgroundPosition':'50% 49%', 'backgroundSize':'cover', 'background-repeat':'no-repeat'});\n//\t\t\t\t}\n\n\t\t\t\t// LET ACT ON THE CLICK ON ITEM SOMEWAY\n\t\t\t\tent.find('.mega-show-more').each(function() {\n\t\t\t\t\tvar msm = $(this);\n\n\t\t\t\t\t// SAVE THE ID OF THE mega-entry WHICH IS CORRESPONDING ON THE BUTTON\n\t\t\t\t\tmsm.data('entid',ent.attr('id'));\n\n\t\t\t\t\t// HANDLING OF THE CLICK\n\t\t\t\t\tmsm.click(function() {\n\t\t\t\t\t\tvar msm=$(this);\n\t\t\t\t\t\tvar ent=container.find('#'+msm.data('entid'));\n\t\t\t\t\t\tent.addClass(\"mega-in-detailview\");\n\t\t\t\t\t\topt.detailview=\"on\";\n\t\t\t\t\t});\n\n\t\t\t\t});\n\t\t});\n\n\n\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tWRAP THE DIVS DEPENDING ON THE AMOUNT OF ENTRIES //\n\t////////////////////////////////////////////////////////\n\tfunction prepairNewEntries(container,opt) {\n\n\t\tcontainer.find('>.mega-entry-added').each(function(i) {\n\t\t\t\tvar ent=$(this);\n\t\t\t\tif (!ent.hasClass('tp-layout')) {\n\n\t\t\t\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\t\t\t\t\t\tent.addClass(\"tp-notordered\")\n\t\t\t\t\t\tent.wrapInner('<div class=\"mega-entry-innerwrap\"></div>');\n\t\t\t\t\t\t//ent.find('.mega-socialbar').appendTo(ent)\n\t\t\t\t\t\tvar iw = ent.find('.mega-entry-innerwrap')\n\t\t\t\t\t\t/*if (opt.ie) {\n\t\t\t\t\t\t\tiw.append('<img class=\"ieimg\" src='+ent.data(\"src\")+'>');\n\t\t\t\t\t\t} else {*/\n\t\t\t\t\t\t\tiw.css({'background':'url('+ent.data(\"src\")+')','backgroundPosition':'50% 49%', 'backgroundSize':'cover', 'background-repeat':'no-repeat'});\n\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t// LET ACT ON THE CLICK ON ITEM SOMEWAY\n\t\t\t\t\t\tent.find('.mega-show-more').each(function() {\n\t\t\t\t\t\t\tvar msm = $(this);\n\n\t\t\t\t\t\t\t// SAVE THE ID OF THE mega-entry WHICH IS CORRESPONDING ON THE BUTTON\n\t\t\t\t\t\t\tmsm.data('entid',ent.attr('id'));\n\n\t\t\t\t\t\t\t// HANDLING OF THE CLICK\n\t\t\t\t\t\t\tmsm.click(function() {\n\t\t\t\t\t\t\t\tvar msm=$(this);\n\t\t\t\t\t\t\t\tvar ent=container.find('#'+msm.data('entid'));\n\t\t\t\t\t\t\t\tent.addClass(\"mega-in-detailview\");\n\t\t\t\t\t\t\t\topt.detailview=\"on\";\n\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t});\n\n\n\n\t}\n\n\t///////////////////////////////////////\n\t//\tADD NOT ORDERED TO THE ENTRIES   //\n\t///////////////////////////////////////\n\tfunction notOrdered(container) {\n\t\tcontainer.find('>.mega-entry.tp-layout').each(function() {\n\t\t\tvar ent=$(this);\n\t\t\tent.removeClass('tp-layout').addClass('tp-notordered');\n\t\t});\n\t}\n\n\n\n\t///////////////////////////////////////\n\t//\tADD FILTER FOR THE ENTRIES       //\n\t///////////////////////////////////////\n\tfunction addFilter(container,filter) {\n\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\t\tvar opt = container.data('opt');\n\t\tif (opt.filterChangeSpeed == undefined) opt.filterChangeSpeed = Math.round(Math.random()*500+100);\n\t\topt.filter=filter;\n\t\tvar outi=1;\n\t\tvar ini=1;\n\t\t\n\t\t\n\n\t\tcontainer.find('>.mega-entry').each(function(i) {\n\t\t\tvar ent=$(this);\n\n\t\t\tvar rot = opt.filterChangeRotate;\n\t\t\tif (rot==undefined) rot=30;\n\n\t\t\tif (rot==99) rot = Math.round(Math.random()*50-25);\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t\tvar subfilters = filter.split(',');\n\t\t\t\tvar hasfilter =false;\n\n\t\t\t\tfor (var u=0;u<subfilters.length;u++) {\n\n\t\t\t\t\tif (ent.hasClass(subfilters[u])) {\n\t\t\t\t\t\thasfilter=true;\n\t\t\t\t\t\tconsole.log(\"has class\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t  \n\t\t\t\tif (hasfilter || filter==\"*\") {\n\n\n\t\t\t\t\t\tent.removeClass('tp-layout').addClass('tp-notordered');\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tent.removeClass('tp-ordered').removeClass('tp-layout');\n\t\t\t\t\t\t  setTimeout(function() {\n\t\t\t\t\t\t\t\tif (ie || ie9) {\n\t\t\t\t\t\t\t\t\tent.animate({'scale':0, 'opacity':0},{queue:false,duration:opt.filterChangeSpeed});\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"fade\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"scale\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"rotate\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':rot},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"rotatescale\") {\n\t\t\t\t\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':rot},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '0deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').removeClass(\"pagemiddle\").removeClass(\"pagetop\").removeClass(\"pagebottom\").addClass(opt.filterChangeAnimation);\n\t\t\t\t\t\t\t\t\t\tent.transition({'opacity':0},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':0,perspective: '10000px',rotateX: '90deg'},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetTimeout(function() {\tent.css({visibility:'hidden'})},opt.filterChangeSpeed);\n\n\t\t\t\t\t\t},ini*opt.delay/2);\n\t\t\t\t\t\tini++;\n\n\t\t\t\t\t}\n\n\n\n\t\t});\n\n\n\n\t}\n\n\n\t///////////////////////////////////////////\n\t// PREPARE FOR THE FIRST START THE ITEMS //\n\t//////////////////////////////////////////\n\tfunction preparingLazyLoad(container) {\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\t\tvar opt = container.data('opt');\n\t\tif (opt.filterChangeSpeed == undefined) opt.filterChangeSpeed = Math.round(Math.random()*500+100);\n\t\tif (opt.filterChangeScale == undefined) opt.filterChangeScale = 0.8;\n\n\n\t\tvar outi=0;\n\t\tvar ini=0;\n\n\t\tcontainer.find('>.mega-entry').each(function(i) {\n\t\t\tvar ent=$(this);\n\n\t\t\tvar rot = opt.filterChangeRotate;\n\t\t\tif (rot==undefined) rot=30;\n\t\t\tif (rot==99) rot = Math.round(Math.random()*360);\n\n\t\t\t\tif (ie || ie9) {\n\t\t\t\t\tent.css({'opacity':0});\n\t\t\t\t} else {\n\t\t\t\t\tif (opt.filterChangeAnimation==\"fade\")\n\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':0,duration:1,queue:false});\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"scale\") {\n\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':0,duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"rotate\")\n\t\t\t\t\t\tent.transition({'scale':1, 'opacity':0,'rotate':rot,duration:1,queue:false});\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"rotatescale\") {\n\n\t\t\t\t\t\tent.transition({'scale':opt.filterChangeScale, 'opacity':0,'rotate':rot,duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').addClass(opt.filterChangeAnimation);\n\t\t\t\t\t\t\tent.transition({'opacity':0,duration:1,queue:false});\n\t\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':1, 'opacity':1,perspective: '10000px',rotateX: '90deg',duration:1,queue:false});\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t});\n\t\t//opt.filterChangeAnimation = opt.savetrans;\n\n\n\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tREORDER THE CONTAINER DEPENDING ON THE SETTINGS   //\n\t////////////////////////////////////////////////////////\n\tfunction reOrder(container,deep) {\n\n\n\t\t// TO SAVE THE LAST ORDER FOR THE GALLERY, TO BE ABLE TO REPRODUCE IT\n\t\tif (deep==0) {\n\t\t\tvar lastorder=new Array();\n\t\t} else\n\t\t\tvar lastorder=container.data('lastorder');\n\n\n\t\tvar cw = container.width();\n\n\t\t// THIS IS THE CURRENT REQUESTED ORDER\n\t\tvar order=container.data('order');\n\n\t\t// IF ORDER ARRIVED TO THE END, SHOULD START FROM THE BEGINNING\n\t\tif (deep>order.length-1) deep=0;\n\n\n\t\t// SAVE THE ENTRIES IN AN ARRAY\n\t\tvar entries=container.find('>.mega-entry.tp-notordered');\n\n\t\t// LET SEE HOW MANY LAYOUT ART WE HAVE 2-9 ARE THE PREMIUM GRIDS\n\t\tvar max_layout_art=12;\n\t\tif (entries.length<9) max_layout_art=entries.length;\n\n\t\t//SAVE THE NEXT LAYOUT HERE\n\t\tvar next_layout  = order[deep];\n\t\t\n\n\n\t\tvar firefox =  false;\n\t\tvar ie = !$.support.opacity;\n\t\tvar ie9 = !$.support.htmlSerialize\n\n\t\tif (order[deep]==0 || next_layout<2 || next_layout>23)\n\t\t\tif (ie) {\n\t\t\t\tnext_layout=9;\n\t\t\t} else {\n\t\t\t\tnext_layout=Math.round(Math.random()*max_layout_art+1);\n\t\t\t}\n\n\n\t\tif (next_layout<2) next_layout=2;\n\t\tif (next_layout>23) next_layout=23;\n\n\t\t// PUSH THE NEXT LAYOUT INTO THE SAVED ORDER (IN CASE IT NEEDED SOMEWHERE)\n\t\tlastorder.push(next_layout);\n\n\t\tvar element_amount=next_layout;\n\t\tif (next_layout==10 || next_layout==14) element_amount=3;\n\t\tif (next_layout==11 || next_layout==15) element_amount=4;\n\t\tif (next_layout==12 || next_layout==16) element_amount=5;\n\t\tif (next_layout==13 || next_layout==17) element_amount=6;\n\n\n\t\tif (next_layout==11 || next_layout==12 || next_layout==13 || next_layout==15 || next_layout==16 || next_layout==17)\n\t\t\tif (cw<840  && cw>721) element_amount=4\n\t\t\t  else\n\t\t\tif (cw<720) element_amount=3;\n\n\t\tif (next_layout==18 || next_layout==19 || next_layout==20) element_amount = 1;\n\t\tif (next_layout==21 || next_layout==22 || next_layout==23) element_amount = 2;\n\n\t\t// SET THE NEXT ITEM AS THE NEXT LAYOUT INDICATES\n\t\tentries.slice(0,element_amount).each(function(i) {\n\n\t\t\tvar ent=$(this);\n\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t// tp-layout SHOWS THAT THE ITEM HAS ALREADY A LAYOUT\n\t\t\tent.addClass('tp-ordered tp-layout');\n\t\t\t// SAVE THE LAYOUT TYPE IN EACH mega-entry\n\t\t\tent.data('layout',next_layout)\n\t\t\t//SAVE THE CHILD INDEX IN THE mega-entry\n\t\t\tent.data('child',i)\n\t\t\t// MARK FIRST AND LAST ITEMS HERE\n\t\t\tif (i==0) ent.addClass(\"tp-layout-first-item\");\n\n\t\t\tif (i==element_amount-1) {\n\n\t\t\t\t\tent.addClass(\"tp-layout-last-item\");\n\t\t\t}\n\n\t\t\t//ITEM IS ORDERED, SO NOT ORDERED CLASS CAN BE REMOVED\n\t\t\tent.removeClass('tp-notordered');\n\n\t\t});\n\n\t\t// WE GO ONE FURTHER; DEEPER IN THE REKURSIVE FUNCTION\n\t\tdeep=deep+1;\n\t\t//SAVE THE LAST ORDER !!\n\t\tcontainer.data('lastorder',lastorder);\n\n\t\t//IF WE HAVE MORE ITEM TO ORDER, WE CAN CALL THE REKURSIVE FUNCTION AGAIN\n\t\tif (container.find('>.mega-entry.tp-notordered').length>0)\n\t\t\treOrder(container,deep);\n\t\telse\n\t\t\t{\n\t\t\t\ttry{\n\t\t\t\t  findLastOrdered(container).addClass('very-last-item');\n\t\t\t\t  } catch(e) {}\n\t\t\t\treturn container;\n\t\t\t}\n\t}\n\n\n\t////////////////////////////////////////////////////////\n\t//\tREORDER THE CONTAINER DEPENDING ON THE SETTINGS   //\n\t////////////////////////////////////////////////////////\n\tfunction reOrderOrdered(container,deep,itemtogo) {\n\n\n\n\t\t// TO SAVE THE LAST ORDER FOR THE GALLERY, TO BE ABLE TO REPRODUCE IT\n\t\tif (deep==0) {\n\t\t\tvar lastorder=new Array();\n\t\t} else\n\t\t\tvar lastorder=container.data('lastorder');\n\n\n\t\tvar cw = container.width();\n\n\t\t// THIS IS THE CURRENT REQUESTED ORDER\n\t\tvar order=container.data('order');\n\n\t\t// IF ORDER ARRIVED TO THE END, SHOULD START FROM THE BEGINNING\n\t\tif (deep>order.length-1) deep=0;\n\n\n\t\t// SAVE THE ENTRIES IN AN ARRAY\n\t\tvar entries=container.find('>.mega-entry.tp-ordered');\n\n\t\t// LET SEE HOW MANY LAYOUT ART WE HAVE 2-9 ARE THE PREMIUM GRIDS\n\t\tvar max_layout_art=12;\n\t\tif (entries.length<9) max_layout_art=entries.length;\n\n\t\t//SAVE THE NEXT LAYOUT HERE\n\t\tvar next_layout  = order[deep];\n\n\t\tvar firefox =  false;\n\t\tvar ie = !$.support.opacity;\n\t\tvar ie9 = !$.support.htmlSerialize\n\n\t\tif (order[deep]==0 || next_layout<2 || next_layout>23)\n\t\t\tif (ie) {\n\t\t\t\tnext_layout=9;\n\t\t\t} else {\n\t\t\t\tnext_layout=Math.round(Math.random()*max_layout_art+1);\n\t\t\t}\n\n\t\tif (next_layout<2) next_layout=2;\n\t\tif (next_layout>23) next_layout=23;\n\n\t\t// PUSH THE NEXT LAYOUT INTO THE SAVED ORDER (IN CASE IT NEEDED SOMEWHERE)\n\t\tlastorder.push(next_layout);\n\n\t\tvar element_amount=next_layout;\n\t\tif (next_layout==10 || next_layout==14) element_amount=3;\n\t\tif (next_layout==11 || next_layout==15) element_amount=4;\n\t\tif (next_layout==12 || next_layout==16) element_amount=5;\n\t\tif (next_layout==13 || next_layout==17) element_amount=6;\n\n\n\t\tif (next_layout==11 || next_layout==12 || next_layout==13 || next_layout==15 || next_layout==16 || next_layout==17)\n\t\t\t\tif (cw<840  && cw>721) element_amount=4\n\t\t\t\t  else\n\t\t\t\tif (cw<720) element_amount=3;\n\n\t\tif (next_layout==18 || next_layout==19 || next_layout==20) element_amount = 1;\n\t\tif (next_layout==21 || next_layout==22 || next_layout==23) element_amount = 2;\t\t\n\t\t\n\t\tvar firstent = entries.length-itemtogo;\n\n\t\t// SET THE NEXT ITEM AS THE NEXT LAYOUT INDICATES\n\t\tentries.slice(firstent,firstent+element_amount).each(function(i) {\n\n\t\t\tvar ent=$(this);\n\n\t\t\tent.removeClass('tp-layout-first-item').removeClass('tp-layout-last-item').removeClass('very-last-item');\n\n\t\t\t// tp-layout SHOWS THAT THE ITEM HAS ALREADY A LAYOUT\n\t\t\tent.addClass('tp-ordered tp-layout');\n\t\t\t// SAVE THE LAYOUT TYPE IN EACH mega-entry\n\t\t\tent.data('layout',next_layout)\n\t\t\t//SAVE THE CHILD INDEX IN THE mega-entry\n\t\t\tent.data('child',i)\n\t\t\t// MARK FIRST AND LAST ITEMS HERE\n\t\t\tif (i==0) ent.addClass(\"tp-layout-first-item\");\n\n\t\t\tif (i==element_amount-1) {\n\n\t\t\t\t\tent.addClass(\"tp-layout-last-item\");\n\t\t\t}\n\n\t\t\t//ITEM IS ORDERED, SO NOT ORDERED CLASS CAN BE REMOVED\n\t\t\tent.removeClass('tp-notordered');\n\n\t\t});\n\n\t\t// WE GO ONE FURTHER; DEEPER IN THE REKURSIVE FUNCTION\n\t\tdeep=deep+1;\n\t\t//SAVE THE LAST ORDER !!\n\t\tcontainer.data('lastorder',lastorder);\n\t\titemtogo=itemtogo-element_amount;\n\n\t\t//IF WE HAVE MORE ITEM TO ORDER, WE CAN CALL THE REKURSIVE FUNCTION AGAIN\n\t\tif (itemtogo>0)\n\t\t\treOrderOrdered(container,deep,itemtogo);\n\t\telse\n\t\t\t{\n\t\t\t\tfindLastOrdered(container).addClass('very-last-item');\n\t\t\t\trePosition(container);\n\t\t\t\treturn container;\n\t\t\t}\n\t}\n\n\n\n\t/////////////////////////////\n\t// FIND LAST ORDERED ITEM //\n\t///////////////////////////\n\tfunction findLastOrdered(container) {\n\t   var lastitem;\n\n\t   container.find('>.mega-entry.tp-layout.tp-ordered').each(function() {\n\t\t\tlastitem=$(this);\n\t\t});\n\n\n\t   return lastitem;\n\t}\n\n\n\t/////////////////////////////\n\t// ROUND ME TO RIGHT VALUE //\n\t////////////////////////////\n\tfunction roundme(val) {\n\t\treturn val;\n\t}\n\n\t//////////////////////////\n\t//\tPUT IT IN POSITION\t//\n\t//////////////////////////\n\tfunction rePosition(container,maxdelay) {\n\n\t\tvar topp=0;\n\t\tvar startwidth = container.data('defaultwidth');\n\t\tvar opt=container.data('opt');\n\t\tvar optdelay=opt.delay;\n\n\t\tvar firststart=0;\n\t\tif (opt.firststart==1) {\n\t\t\tfirststart=1;\n\t\t\topt.firststart=0;\n\t\t}\n\n\n\n\t\tvar cw = container.width();\n\t\tvar prop = cw / startwidth;\n\t\tvar basicheight = 185;\n\t\tvar paddingh = container.data('paddingh');\n\t\tvar paddingv = container.data('paddingv');\n\n\n\t\tvar outi=1;\n\t\tvar ini=1;\n\n\t\tvar ie=container.data('ie');\n\t\tvar ie9=container.data('ie9');\n\n\t\t// CALCULATE THE BASI PROPORTIONS\n\t\tvar w5 = 5*prop;\n\n\t\t// THE MAX HEIGHT OF THE ITEM\n\t\tvar maxhh=0;\n\n\t\t// THE NEW BASIC VALUES\n\t\t//w5 = Math.floor(w5)+dec;\n\n\t\t// Calculate the Basic Grid Sizes\n\t\tvar w980 = cw;\n\t\tvar w790 = roundme(w5 * 160);\n\t\tvar w780 = roundme(w5 * 158);\n\t\tvar w760 = roundme(w5 * 152);\n\t\tvar w740 = roundme(w5 * 148);\n\t\tvar w660 = roundme(w5 * 132);\n\t\tvar w615 = roundme(w5 * 123);\n\t\tvar w610 = roundme(w5 * 122);\n\t\tvar w595 = roundme(w5 * 119);\n\t\tvar w565 = roundme(w5 * 113);\n\t\tvar w560 = roundme(w5 * 112);\n\t\tvar w490 = roundme(w5 * 98);\n\t\tvar w420 = roundme(w5 * 84);\n\t\tvar w415 = roundme(w5 * 83);\n\t\tvar w395 = roundme(w5 * 79);\n\t\tvar w390 = roundme(w5 * 78);\n\t\tvar w385 = roundme(w5 * 77);\n\t\tvar w370 = roundme(w5 * 74);\n\t\tvar w365 = roundme(w5 * 73);\n\t\tvar w345 = roundme(w5 * 69);\n\t\tvar w340 = roundme(w5 * 68);\n\t\tvar w335 = roundme(w5 * 67);\n\t\tvar w326 = roundme(w5 * 65.3);\n\t\tvar w245 = roundme(w5 * 49);\n\t\tvar w240 = roundme(w5 * 48);\n\t\tvar w225 = roundme(w5 * 45);\n\t\tvar w220 = roundme(w5 * 44);\n\t\tvar w196 = roundme(w5 * 39.2);\n\t\tvar w195 = roundme(w5 * 39);\n\t\tvar w190 = roundme(w5 * 38);\n\t\tvar w185 = roundme(w5 * 37);\n\t\tvar w180 = roundme(w5 * 36);\n\t\tvar w163 = roundme(w5 * 32.66);\n\n\t\t// The Basic Heights\n\t\tvar h1110 = roundme(w5 * 222);\n\t\tvar h740 = w740;\n\t\tvar h555 = roundme(w5*111);\n\t\tvar h370 = w370;\n\t\tvar h365 = w365;\n\t\tvar h245 = w245;\n\t\tvar h240 = w240;\n\t\tvar h185 = w185;\n\t\tvar h180 = w180;\n\n\t\tvar heights = new Array(0,0,0,0,0,0,0,0,0);\n\t\tvar lastheights = new Array(0,0,0,0,0,0,0,0,0);\n\n\t\tvar currentcolumn=0;\n\t\tvar layout=0;\n\n\t\tvar allelements=container.find('>.mega-entry.tp-layout').length;\n\n\t\t// LET CREATE THE GIRDS\n\t\tcontainer.find('>.mega-entry.tp-layout').each(function(i) {\n\t\t\tvar ent=$(this);\n\t\t\tvar iw = ent.find('.mega-entry-innerwrap');\n\t\t\tlayout=ent.data('layout');\n\n\n\t\t\tif (layout==11 || layout==12 || layout==13 )\n\t\t\t\tif (cw<840 && cw>721) layout=11\n\t\t\t\t else\n\t\t\t\tif (cw<720) layout=10;\n\n\t\t\tif (layout==15 || layout==16 || layout==17)\n\t\t\t\tif (cw<840 && cw>721) layout=15\n\t\t\t\t else\n\t\t\t\tif (cw<720) layout=14;\n\n\n\t\t\t// SET THE SPEED\n\t\t\tvar dur=500;\n\n\t\t\t// SET THE BASIC POSITIONS AND SIZES\n\t\t\tvar w,h,xp;\n\t\t\tvar ph=paddingh;\n\t\t\tvar pv=paddingv;\n\t\t\tvar yp=topp;\n\t\t\tvar lasth=h185;\n\n\t\t\tif (cw>480) {\n\t\t\t\t\t\t// THE GRID TYPE 3 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==2) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) {\tw=w415; h=h370; xp=w565;  ph=0; topp=topp+h370; lasth=h370}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) {\tw=w560; h=h370; xp=w420;  ph=0; topp=topp+h370; lasth=h370}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 3 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==3) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w390; h=h370; xp=0; \t lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w225; h=h370; xp=w390; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) {\tw=w365; h=h370; xp=w615;  topp=topp+h370; lasth=h370;ph=0;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) {\tw=w370; h=h370; xp=0; \t\tlasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w390; h=h370; xp=w370;  \tlasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w220; h=h370; xp=w760; \tlasth=h370; topp=topp+h370; ph=0;}\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 4 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==4) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h370; xp=0; \t lasth=370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h370; xp=w615; ph=0;  topp=topp+h185; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) {\tw=w195; h=h185; xp=w420;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w420; h=h370; xp=0; \t topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) {\tw=w195; h=h185; xp=w420; topp=topp-h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w365; h=h370; xp=w615; ph=0; topp=topp+h370;  lasth=h370}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 5 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==5) {\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h370; xp=w615; ph=0;  topp=topp+h185; lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) {\tw=w395; h=h185; xp=w220;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w420; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w420; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w365; h=h185; xp=w615; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w490; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) {\tw=w490; h=h185; xp=w490;  \tph=0; topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 5 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==6) {\n\n\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w370; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w225; h=h185; xp=w370; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w385; h=h185; xp=w595; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w225; h=h185; xp=w370; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w195; h=h185; xp=w595; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) {\tw=w190; h=h185; xp=w780;  \tph=0; topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w225; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w340; h=h370; xp=w225; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) {\tw=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 7 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==7) {\n\n\n\n\n\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185;lasth=h370}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h185; xp=w225; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w195; h=h185; xp=w565;   topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h185; xp=w760; \tph=0; topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h185; xp=w225; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185;}\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// THE GRID TYPE 8 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==8) {\n\n\n\n\t\t\t\t\t\t\tif (cw>767) {\n\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w415; h=h185; xp=0; \t }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w345; h=h370; xp=w415; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w195; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w220; h=h185; xp=w195; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185; lasth=h185;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w345; h=h185; xp=w415; \t topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w195; h=h185; xp=w415; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w370; h=h185; xp=w610; \tph=0; topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w195; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w415; h=h185; xp=w195; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w415; h=h185; xp=0; \t \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w195; h=h185; xp=w415; \t topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// THE GRID TYPE 9 POSITIONS SHOULD BE CALCULATED HERE\n\t\t\t\t\t\tif (layout==9) {\n\n\n\n\t\t\t\t\t\t\t\tif (cw>767) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w565; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w415; h=h185; xp=w565; \tph=0;  topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w195; h=h185; xp=w565; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w220; h=h370; xp=w760; \tph=0;  topp=topp+h185; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w225; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w340; h=h370; xp=w225; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w195; h=h185; xp=w565; \t topp=topp+h185; }\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w195; h=h185; xp=w565; \t}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==8) {\tw=w220; h=h185; xp=w760; \tph=0;  topp=topp+h185; }\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (cw>480 && cw<768) {\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==0) { w=w370; h=h370; xp=0; \t \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==1) { w=w240; h=h370; xp=w370; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==2) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h370; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==3) { w=w240; h=h370; xp=0;    \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==4) { w=w370; h=h370; xp=w240; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==5) { w=w370; h=h370; xp=w610; \tph=0;  topp=topp+h370; lasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==6) { w=w370; h=h370; xp=0;   \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==7) { w=w370; h=h370; xp=w370; \tlasth=h370;}\n\t\t\t\t\t\t\t\t\t\tif (ent.data('child')==8) {\tw=w240; h=h370; xp=w740;  \tph=0;  topp=topp+h370; lasth=h370;}\n\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- BASIC GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\tif (layout>9 && layout<14) {\n\t\t\t\t\t\t\t if (layout==10) {\n\t\t\t\t\t\t\t\tw=Math.round(w326);\n\n\t\t\t\t\t\t\t\tw=w + (ph/3);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==11) {\n\t\t\t\t\t\t\t\tw=Math.round(w245);\n\n\t\t\t\t\t\t\t\tw=w + (ph/4);\n\t\t\t\t\t\t\t  } else\n\t\t\t\t\t\t\t if (layout==12) {\n\t\t\t\t\t\t\t\tw=Math.round(w196);\n\t\t\t\t\t\t\t\tw=w  + (ph/5);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==13) {\n\t\t\t\t\t\t\t\tw=Math.round(w163);\n\t\t\t\t\t\t\t\tw=w + (ph/6);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\tif ( (chil==2 && layout==10) ||\n\t\t\t\t\t\t\t\t (chil==3 && layout==11) ||\n\t\t\t\t\t\t\t\t (chil==4 && layout==12) ||\n\t\t\t\t\t\t\t\t (chil==5 && layout==13) ||\n\t\t\t\t\t\t\t\t (ent.hasClass('tp-layout-last-item'))\n\t\t\t\t\t\t\t\t) {\t\t// ph=0;\n\t\t\t\t\t\t\t\t\t\ttopp=topp+h; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- 1 GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==18) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==19) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w/ 2;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==20) {\n\t\t\t\t\t\t\t\tw=Math.round(w980);\n\t\t\t\t\t\t\t\tw=w + (ph);\n\n\t\t\t\t\t\t\tvar h=w/ 3;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\n\n\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- 2 GRID OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==21) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==22) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w/2;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// 1 COLUMN GRIDS\n\t\t\t\t\t\tif (layout==23) {\n\t\t\t\t\t\t\tw=Math.round(w490);\n\t\t\t\t\t\t\tw=w + (ph/2);\n\t\t\t\t\t\t\tvar h=w/3;\n\t\t\t\t\t\t\tvar chil=ent.data('child');\n\t\t\t\t\t\t\txp=w*chil;\n\t\t\t\t\t\t\tlasth=h;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( chil==1) topp=topp+h; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/*********************************\n\t\t\t\t\t\t\t- DIFFERENT HEIGHT OPTIONS -\n\t\t\t\t\t\t**********************************/\n\t\t\t\t\t\tif (layout>13 && layout<18) {\n\t\t\t\t\t\t\t if (layout==14) {\n\t\t\t\t\t\t\t\tw=Math.round(w326);\n\n\t\t\t\t\t\t\t\tw=w + (ph/3);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==15) {\n\t\t\t\t\t\t\t\tw=Math.round(w245);\n\n\t\t\t\t\t\t\t\tw=w + (ph/4);\n\t\t\t\t\t\t\t  } else\n\t\t\t\t\t\t\t if (layout==16) {\n\t\t\t\t\t\t\t\tw=Math.round(w196);\n\t\t\t\t\t\t\t\tw=w  + (ph/5);\n\t\t\t\t\t\t\t } else\n\t\t\t\t\t\t\t if (layout==17) {\n\t\t\t\t\t\t\t\tw=Math.round(w163);\n\t\t\t\t\t\t\t\tw=w + (ph/6);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar chil = ent.data('child');\n\t\t\t\t\t\t\tvar prop =w/ent.data('width');\n\n\t\t\t\t\t\t\th=ent.data('height') * prop;\n\t\t\t\t\t\t\txp=w*ent.data('child');\n\t\t\t\t\t\t\typ=heights[chil];\n\t\t\t\t\t\t\tlasth=h*prop;\n\t\t\t\t\t\t\tlastheights[chil]=lasth;\n\t\t\t\t\t\t\ttopp=yp+h;\n\t\t\t\t\t\t\theights[chil] = topp;\n\t\t\t\t\t\t}\n\n\n\t\t\t} else { // IF THE CONTAINER IS TOO SMALL THAN LET\n\n\t\t\t\t\t\t\t\th=Math.round(ent.data('height')*(cw/ent.data('width')));\n\t\t\t\t\t\t\t\tw=cw;\n\t\t\t\t\t\t\t\tph=0;\n\t\t\t\t\t\t\t\txp=0;\n\t\t\t\t\t\t\t\typ=topp;\n\t\t\t\t\t\t\t\ttopp=topp+h;\n\t\t\t}\n\n\n\n\t\t\tvar scal=1;\n\t\t\tvar opaa=1;\n\t\t\tvar rx = 0;\n\t\t\tvar rot = 0;\n\n\t\t\tvar orot = opt.filterChangeRotate;\n\t\t\tif (orot==undefined) rot=30;\n\n\t\t\tif (orot==99) orot = Math.round(Math.random()*360);\n\n\n\n\t\t\t// FILTER DEPENDEND SETTINGS\n\t\t\tvar subfilters = opt.filter.split(',');\n\t\t\tvar hasfilter =false;\n\n\t\t\tfor (var u=0;u<subfilters.length;u++) {\n\n\t\t\t\tif (ent.hasClass(subfilters[u])) {\n\t\t\t\t\thasfilter=true;\n\t\t\t\t\tconsole.log(\"has class\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t  \n\n\t\t\tif (hasfilter || opt.filter==\"*\") {\n\n\t\t\t\t\t\t\t\tent.css({visibility:'visible'});\n\t\t\t\t\t\t\t\tif (ie || ie9) {\n\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\topaa=1;\n\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (opt.filterChangeAnimation==\"pagetop\" || opt.filterChangeAnimation==\"pagebottom\" || opt.filterChangeAnimation==\"pagemiddle\") {\n\t\t\t\t\t\t\t\t\t\trot=0;\n\t\t\t\t\t\t\t\t\t\trx=0;\n\t\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\t\topaa=1;\n\t\t\t\t\t\t\t\t\t\teiscal=1;\n\t\t\t\t\t\t\t\t\t\teiopaa=1;\n\t\t\t\t\t\t\t\t\t\teirx=0;\n\n\t\t\t\t\t\t\t\t\t\t//ent.transition({rotate:0,'opacity':1},opt.filterChangeSpeed);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tscal=1;\n\t\t\t\t\t\t\t\t\t\trot=0;\n\t\t\t\t\t\t\t\t\t\topaa=1;\n\t\t\t\t\t\t\t\t\t\teiscal=1;\n\t\t\t\t\t\t\t\t\t\teiopaa=1;\n\t\t\t\t\t\t\t\t\t\teirx=0;\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\tif (opt.detailview==\"on\" && opaa==1) opaa=0.4;\n\t\t\tif (ent.hasClass('mega-in-detailview')) opaa=1;\n\n\t\t\tent.removeClass(\"mega-square\").removeClass(\"mega-portrait\").removeClass(\"mega-landscape\");\n\t\t\tvar wround=Math.floor(w/100);\n\t\t\tvar hround=Math.floor(h/100);\n\t\t\tif (wround>hround) ent.addClass(\"mega-landscape\");\n\t\t\tif (hround>wround) ent.addClass(\"mega-portrait\");\n\t\t\tif (wround==hround) ent.addClass(\"mega-square\");\n\n\n\t\t\tvar timer_delay=i*opt.delay;\n\t\t\t/*if (maxdelay!=undefined) {\n\t\t\t\tif (allelements-i<6)\n\t\t\t\t\ttimer_delay=(allelements-i)*opt.delay;\n\t\t\t}*/\n\n\t\t\t// PUT THE mega-entry IN THE RIGHT POSITION\n\t\t\tif (ie || ie9) {\n\t\t\t\tent.find('.mega-socialbar').animate({'width':w+'px'});\n\t\t\t\tent.animate({ 'scale':scal, 'opacity':opaa, width:w+\"px\", height:h+\"px\", left:xp+\"px\", top:yp+\"px\", 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\"},{queue:false,duration:400});\n\t\t\t\tiw.animate({'background-position':'50% 49%', 'background-size':'cover'},{queue:false,duration:400});\n\t\t\t\tif (ie) {\n\t\t\t\t\tvar img=iw.find('.ieimg');\n\t\t\t\t\tvar imgratio=Math.round(ent.data('width')) / Math.round(ent.data('height'));\n\t\t\t\t\tvar conratio=Math.round(w)/Math.round(h);\n\n\t\t\t\t\tvar nw=w;\n\t\t\t\t\tvar nh=nw/ent.data('width')*ent.data('height');\n\n\n\t\t\t\t\tif (nh<h) {\n\n\t\t\t\t\t\tnh=h;\n\t\t\t\t\t\tnw=nh/ent.data('height')*ent.data('width');\n\t\t\t\t\t}\n\n\t\t\t\t\timg.css({'width':nw+'px','height':nh+'px'});\n\n\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\n\t\t\t\tvar prop = (cw / startwidth)*100 -16;\n\n\n\t\t\t\tif (ent.data('lowsize')!=undefined )\n\t\t\t\tif (prop<=ent.data('lowsize'))\n\t\t\t\t\tent.addClass(\"mega-lowsize\")\n\t\t\t\telse\n\t\t\t\t\tent.removeClass(\"mega-lowsize\");\n\n\t\t\t\tif (firststart) {\n\t\t\t\t\t\t  timer_delay=timer_delay+100;\n\t\t\t\t\t\t  ent.transition({  'opacity':0, \"top\":yp+\"px\",\"left\":xp+\"px\", width:w, height:h, 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\",duration:1,queue:false});\n\t\t\t\t\t}\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tent.transition({ 'scale':scal, 'opacity':opaa,'rotate':rot, 'z-index':1,width:w, height:h, \"top\":yp+\"px\",\"left\":xp+\"px\", 'paddingBottom':pv+\"px\", 'paddingRight':ph+\"px\",duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tent.find('.mega-entry-innerwrap').transition({'scale':eiscal, 'opacity':eiopaa,perspective: '10000px',rotateX: eirx,duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t\t\tent.removeClass('mega-entry-added');\n\t\t\t\t\t},50);\n\t\t\t\t\tiw.transition({'background-position':'50% 49%', 'background-size':'cover',duration:opt.filterChangeSpeed,queue:false});\n\t\t\t\t},timer_delay);\n\n\t\t\t}\n\n\n\t\t\tif (ent.hasClass('very-last-item') && !ent.hasClass('tp-layout-last-item')) {\n\n\t\t\t\ttopp=topp+lasth;\n\n\t\t\t} else {\n\t\t\t\t\t//$('.debug').html($('.debug').html()+\"<br>\"+topp);\n\t\t\t}\n\n\t\t\tif (maxhh<yp+h) maxhh=yp+h;\n\n\t\t})\n\n\t\t// IF THE LAST LAYOUT HAD A DIFFERENT HEIGHT ATTRIBUTE, WE NEED TO CALCULATE THE HEIGHETS ROW\n\t\tif (layout>13 && layout<18) {\n\n\t\t\t\t\ttopp=heights[0];\n\t\t\t\t\tfor (allh=0;allh<heights.length;allh++) {\n\n\t\t\t\t\t\tif (topp<heights[allh]) topp=heights[allh];\n\t\t\t\t\t }\n\t\t\t\t}\n\n\n\t\tcontainer.css({height:maxhh+\"px\"})\n\n\n\t}\n\n\n})(jQuery);\n\n\n\n\n"
  },
  {
    "path": "target/mongo/assets/nestable/jquery.nestable.css",
    "content": "/**\n * Nestable\n */\n\n.dd { position: relative; display: block; margin: 0; padding: 0; max-width: 600px; list-style: none; font-size: 13px; line-height: 20px; }\n\n.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }\n.dd-list .dd-list { padding-left: 30px; }\n.dd-collapsed .dd-list { display: none; }\n\n.dd-item,\n.dd-empty,\n.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; }\n\n.dd-handle { display: block; height: 30px; margin: 5px 0; padding: 5px 10px; cursor: move; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;\n    background: #F5F5F5;\n    /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:         linear-gradient(top, #fafafa 0%, #eee 100%);*/\n\n    box-sizing: border-box; -moz-box-sizing: border-box;\n}\n.dd-handle:hover { color: #2ea8e5; background: #fff; }\n\n.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; }\n.dd-item > button:before { content: '+'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; }\n.dd-item > button[data-action=\"collapse\"]:before { content: '-'; }\n\n.dd-placeholder,\n.dd-empty { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; }\n.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5;\n    background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                      -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-image:    -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                         -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-image:         linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), \n                              linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);\n    background-size: 60px 60px;\n    background-position: 0 0, 30px 30px;\n}\n\n.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }\n.dd-dragel > .dd-item .dd-handle { margin-top: 0; }\n.dd-dragel .dd-handle {\n    -webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\n            box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\n}\n\n\n.dd3-content { display: block; height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #333; text-decoration: none; font-weight: bold; border: 1px solid #ccc;\n    background: #F5F5F5;\n    /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:    -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/\n    /*background:         linear-gradient(top, #fafafa 0%, #eee 100%);*/\n\n    box-sizing: border-box; -moz-box-sizing: border-box;\n}\n.dd3-content:hover { color: #2ea8e5; background: #d5d5d5; }\n\n.dd-dragel > .dd3-item > .dd3-content { margin: 0; }\n\n.dd3-item > button { margin-left: 30px; }\n\n.dd3-handle { position: absolute; margin: 0; left: 0; top: 0; cursor: pointer; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden;\n    border: 1px solid #ccc;\n    background: #d5d5d5;\n    /*background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    /*background:    -moz-linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    /*background:         linear-gradient(top, #ddd 0%, #bbb 100%);*/\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n}\n.dd3-handle:before { content: '≡'; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 20px; font-weight: normal; }\n.dd3-handle:hover { background: #404040; border:1px solid #404040; }"
  },
  {
    "path": "target/mongo/assets/nestable/jquery.nestable.js",
    "content": "/*!\n * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/\n * Dual-licensed under the BSD or MIT licenses\n */\n;(function($, window, document, undefined)\n{\n    var hasTouch = 'ontouchstart' in window;\n\n    /**\n     * Detect CSS pointer-events property\n     * events are normally disabled on the dragging element to avoid conflicts\n     * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js\n     */\n    var hasPointerEvents = (function()\n    {\n        var el    = document.createElement('div'),\n            docEl = document.documentElement;\n        if (!('pointerEvents' in el.style)) {\n            return false;\n        }\n        el.style.pointerEvents = 'auto';\n        el.style.pointerEvents = 'x';\n        docEl.appendChild(el);\n        var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';\n        docEl.removeChild(el);\n        return !!supports;\n    })();\n\n    var eStart  = hasTouch ? 'touchstart'  : 'mousedown',\n        eMove   = hasTouch ? 'touchmove'   : 'mousemove',\n        eEnd    = hasTouch ? 'touchend'    : 'mouseup';\n        eCancel = hasTouch ? 'touchcancel' : 'mouseup';\n\n    var defaults = {\n            listNodeName    : 'ol',\n            itemNodeName    : 'li',\n            rootClass       : 'dd',\n            listClass       : 'dd-list',\n            itemClass       : 'dd-item',\n            dragClass       : 'dd-dragel',\n            handleClass     : 'dd-handle',\n            collapsedClass  : 'dd-collapsed',\n            placeClass      : 'dd-placeholder',\n            noDragClass     : 'dd-nodrag',\n            emptyClass      : 'dd-empty',\n            expandBtnHTML   : '<button data-action=\"expand\" type=\"button\">Expand</button>',\n            collapseBtnHTML : '<button data-action=\"collapse\" type=\"button\">Collapse</button>',\n            group           : 0,\n            maxDepth        : 5,\n            threshold       : 20\n        };\n\n    function Plugin(element, options)\n    {\n        this.w  = $(window);\n        this.el = $(element);\n        this.options = $.extend({}, defaults, options);\n        this.init();\n    }\n\n    Plugin.prototype = {\n\n        init: function()\n        {\n            var list = this;\n\n            list.reset();\n\n            list.el.data('nestable-group', this.options.group);\n\n            list.placeEl = $('<div class=\"' + list.options.placeClass + '\"/>');\n\n            $.each(this.el.find(list.options.itemNodeName), function(k, el) {\n                list.setParent($(el));\n            });\n\n            list.el.on('click', 'button', function(e) {\n                if (list.dragEl || (!hasTouch && e.button !== 0)) {\n                    return;\n                }\n                var target = $(e.currentTarget),\n                    action = target.data('action'),\n                    item   = target.parent(list.options.itemNodeName);\n                if (action === 'collapse') {\n                    list.collapseItem(item);\n                }\n                if (action === 'expand') {\n                    list.expandItem(item);\n                }\n            });\n\n            var onStartEvent = function(e)\n            {\n                var handle = $(e.target);\n                if (!handle.hasClass(list.options.handleClass)) {\n                    if (handle.closest('.' + list.options.noDragClass).length) {\n                        return;\n                    }\n                    handle = handle.closest('.' + list.options.handleClass);\n                }\n                if (!handle.length || list.dragEl || (!hasTouch && e.button !== 0) || (hasTouch && e.touches.length !== 1)) {\n                    return;\n                }\n                e.preventDefault();\n                list.dragStart(hasTouch ? e.touches[0] : e);\n            };\n\n            var onMoveEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragMove(hasTouch ? e.touches[0] : e);\n                }\n            };\n\n            var onEndEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragStop(hasTouch ? e.touches[0] : e);\n                }\n            };\n\n            if (hasTouch) {\n                list.el[0].addEventListener(eStart, onStartEvent, false);\n                window.addEventListener(eMove, onMoveEvent, false);\n                window.addEventListener(eEnd, onEndEvent, false);\n                window.addEventListener(eCancel, onEndEvent, false);\n            } else {\n                list.el.on(eStart, onStartEvent);\n                list.w.on(eMove, onMoveEvent);\n                list.w.on(eEnd, onEndEvent);\n            }\n\n        },\n\n        serialize: function()\n        {\n            var data,\n                depth = 0,\n                list  = this;\n                step  = function(level, depth)\n                {\n                    var array = [ ],\n                        items = level.children(list.options.itemNodeName);\n                    items.each(function()\n                    {\n                        var li   = $(this),\n                            item = $.extend({}, li.data()),\n                            sub  = li.children(list.options.listNodeName);\n                        if (sub.length) {\n                            item.children = step(sub, depth + 1);\n                        }\n                        array.push(item);\n                    });\n                    return array;\n                };\n            data = step(list.el.find(list.options.listNodeName).first(), depth);\n            return data;\n        },\n\n        serialise: function()\n        {\n            return this.serialize();\n        },\n\n        reset: function()\n        {\n            this.mouse = {\n                offsetX   : 0,\n                offsetY   : 0,\n                startX    : 0,\n                startY    : 0,\n                lastX     : 0,\n                lastY     : 0,\n                nowX      : 0,\n                nowY      : 0,\n                distX     : 0,\n                distY     : 0,\n                dirAx     : 0,\n                dirX      : 0,\n                dirY      : 0,\n                lastDirX  : 0,\n                lastDirY  : 0,\n                distAxX   : 0,\n                distAxY   : 0\n            };\n            this.moving     = false;\n            this.dragEl     = null;\n            this.dragRootEl = null;\n            this.dragDepth  = 0;\n            this.hasNewRoot = false;\n            this.pointEl    = null;\n        },\n\n        expandItem: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action=\"expand\"]').hide();\n            li.children('[data-action=\"collapse\"]').show();\n            li.children(this.options.listNodeName).show();\n        },\n\n        collapseItem: function(li)\n        {\n            var lists = li.children(this.options.listNodeName);\n            if (lists.length) {\n                li.addClass(this.options.collapsedClass);\n                li.children('[data-action=\"collapse\"]').hide();\n                li.children('[data-action=\"expand\"]').show();\n                li.children(this.options.listNodeName).hide();\n            }\n        },\n\n        expandAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.expandItem($(this));\n            });\n        },\n\n        collapseAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.collapseItem($(this));\n            });\n        },\n\n        setParent: function(li)\n        {\n            if (li.children(this.options.listNodeName).length) {\n                li.prepend($(this.options.expandBtnHTML));\n                li.prepend($(this.options.collapseBtnHTML));\n            }\n            li.children('[data-action=\"expand\"]').hide();\n        },\n\n        unsetParent: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action]').remove();\n            li.children(this.options.listNodeName).remove();\n        },\n\n        dragStart: function(e)\n        {\n            var mouse    = this.mouse,\n                target   = $(e.target),\n                dragItem = target.closest(this.options.itemNodeName);\n\n            this.placeEl.css('height', dragItem.height());\n\n            mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;\n            mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;\n            mouse.startX = mouse.lastX = e.pageX;\n            mouse.startY = mouse.lastY = e.pageY;\n\n            this.dragRootEl = this.el;\n\n            this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);\n            this.dragEl.css('width', dragItem.width());\n\n            // fix for zepto.js\n            //dragItem.after(this.placeEl).detach().appendTo(this.dragEl);\n            dragItem.after(this.placeEl);\n            dragItem[0].parentNode.removeChild(dragItem[0]);\n            dragItem.appendTo(this.dragEl);\n\n            $(document.body).append(this.dragEl);\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n            // total depth of dragging item\n            var i, depth,\n                items = this.dragEl.find(this.options.itemNodeName);\n            for (i = 0; i < items.length; i++) {\n                depth = $(items[i]).parents(this.options.listNodeName).length;\n                if (depth > this.dragDepth) {\n                    this.dragDepth = depth;\n                }\n            }\n        },\n\n        dragStop: function(e)\n        {\n            // fix for zepto.js\n            //this.placeEl.replaceWith(this.dragEl.children(this.options.itemNodeName + ':first').detach());\n            var el = this.dragEl.children(this.options.itemNodeName).first();\n            el[0].parentNode.removeChild(el[0]);\n            this.placeEl.replaceWith(el);\n\n            this.dragEl.remove();\n            this.el.trigger('change');\n            if (this.hasNewRoot) {\n                this.dragRootEl.trigger('change');\n            }\n            this.reset();\n        },\n\n        dragMove: function(e)\n        {\n            var list, parent, prev, next, depth,\n                opt   = this.options,\n                mouse = this.mouse;\n\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n\n            // mouse position last events\n            mouse.lastX = mouse.nowX;\n            mouse.lastY = mouse.nowY;\n            // mouse position this events\n            mouse.nowX  = e.pageX;\n            mouse.nowY  = e.pageY;\n            // distance mouse moved between events\n            mouse.distX = mouse.nowX - mouse.lastX;\n            mouse.distY = mouse.nowY - mouse.lastY;\n            // direction mouse was moving\n            mouse.lastDirX = mouse.dirX;\n            mouse.lastDirY = mouse.dirY;\n            // direction mouse is now moving (on both axis)\n            mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;\n            mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;\n            // axis mouse is now moving on\n            var newAx   = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;\n\n            // do nothing on first move\n            if (!mouse.moving) {\n                mouse.dirAx  = newAx;\n                mouse.moving = true;\n                return;\n            }\n\n            // calc distance moved on this axis (and direction)\n            if (mouse.dirAx !== newAx) {\n                mouse.distAxX = 0;\n                mouse.distAxY = 0;\n            } else {\n                mouse.distAxX += Math.abs(mouse.distX);\n                if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {\n                    mouse.distAxX = 0;\n                }\n                mouse.distAxY += Math.abs(mouse.distY);\n                if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {\n                    mouse.distAxY = 0;\n                }\n            }\n            mouse.dirAx = newAx;\n\n            /**\n             * move horizontal\n             */\n            if (mouse.dirAx && mouse.distAxX >= opt.threshold) {\n                // reset move distance on x-axis for new phase\n                mouse.distAxX = 0;\n                prev = this.placeEl.prev(opt.itemNodeName);\n                // increase horizontal level if previous sibling exists and is not collapsed\n                if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {\n                    // cannot increase level when item above is collapsed\n                    list = prev.find(opt.listNodeName).last();\n                    // check if depth limit has reached\n                    depth = this.placeEl.parents(opt.listNodeName).length;\n                    if (depth + this.dragDepth <= opt.maxDepth) {\n                        // create new sub-level if one doesn't exist\n                        if (!list.length) {\n                            list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);\n                            list.append(this.placeEl);\n                            prev.append(list);\n                            this.setParent(prev);\n                        } else {\n                            // else append to next level up\n                            list = prev.children(opt.listNodeName).last();\n                            list.append(this.placeEl);\n                        }\n                    }\n                }\n                // decrease horizontal level\n                if (mouse.distX < 0) {\n                    // we can't decrease a level if an item preceeds the current one\n                    next = this.placeEl.next(opt.itemNodeName);\n                    if (!next.length) {\n                        parent = this.placeEl.parent();\n                        this.placeEl.closest(opt.itemNodeName).after(this.placeEl);\n                        if (!parent.children().length) {\n                            this.unsetParent(parent.parent());\n                        }\n                    }\n                }\n            }\n\n            var isEmpty = false;\n\n            // find list item under cursor\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'hidden';\n            }\n            this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'visible';\n            }\n            if (this.pointEl.hasClass(opt.handleClass)) {\n                this.pointEl = this.pointEl.parent(opt.itemNodeName);\n            }\n            if (this.pointEl.hasClass(opt.emptyClass)) {\n                isEmpty = true;\n            }\n            else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {\n                return;\n            }\n\n            // find parent list of item under cursor\n            var pointElRoot = this.pointEl.closest('.' + opt.rootClass),\n                isNewRoot   = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');\n\n            /**\n             * move vertical\n             */\n            if (!mouse.dirAx || isNewRoot || isEmpty) {\n                // check if groups match if dragging over new root\n                if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {\n                    return;\n                }\n                // check depth limit\n                depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;\n                if (depth > opt.maxDepth) {\n                    return;\n                }\n                var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);\n                    parent = this.placeEl.parent();\n                // if empty create new list to replace empty placeholder\n                if (isEmpty) {\n                    list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);\n                    list.append(this.placeEl);\n                    this.pointEl.replaceWith(list);\n                }\n                else if (before) {\n                    this.pointEl.before(this.placeEl);\n                }\n                else {\n                    this.pointEl.after(this.placeEl);\n                }\n                if (!parent.children().length) {\n                    this.unsetParent(parent.parent());\n                }\n                if (!this.dragRootEl.find(opt.itemNodeName).length) {\n                    this.dragRootEl.append('<div class=\"' + opt.emptyClass + '\"/>');\n                }\n                // parent root list has changed\n                if (isNewRoot) {\n                    this.dragRootEl = pointElRoot;\n                    this.hasNewRoot = this.el[0] !== this.dragRootEl[0];\n                }\n            }\n        }\n\n    };\n\n    $.fn.nestable = function(params)\n    {\n        var lists  = this,\n            retval = this;\n\n        lists.each(function()\n        {\n            var plugin = $(this).data(\"nestable\");\n\n            if (!plugin) {\n                $(this).data(\"nestable\", new Plugin(this, params));\n                $(this).data(\"nestable-id\", new Date().getTime());\n            } else {\n                if (typeof params === 'string' && typeof plugin[params] === 'function') {\n                    retval = plugin[params]();\n                }\n            }\n        });\n\n        return retval || lists;\n    };\n\n})(window.jQuery || window.Zepto, window, document);\n"
  },
  {
    "path": "target/mongo/error/404.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<div>错误代码：404</div>\n<div>错误描述：资源未找到</div>"
  },
  {
    "path": "target/mongo/error/500.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%>\n<div>错误代码：500</div>\n<div>错误描述：系统内部错误</div>"
  },
  {
    "path": "target/mongo/error/noSecurity.jsp",
    "content": "<%@ page language=\"java\" pageEncoding=\"UTF-8\" contentType=\"text/html; charset=UTF-8\"%>\n${msg}"
  },
  {
    "path": "target/mongo/error/noSession.jsp",
    "content": "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<c:set var=\"ctx\" value=\"${pageContext.request.contextPath}\"/>\n${msg}\n<script type=\"text/javascript\" charset=\"utf-8\">\n\tsetTimeout(\"parent.location.href='${ctx}/admin/index'\",1500);\n</script>"
  },
  {
    "path": "target/mongo/error/noSessionFront.jsp",
    "content": "{\"success\":\"false\",\"message\":\"Session is overTime\"}"
  },
  {
    "path": "target/mongo/index.jsp",
    "content": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/jslib/bs_js/all-chartjs.js",
    "content": "var Script = function () {\n\n\n    var doughnutData = [\n        {\n            value: 30,\n            color:\"#F7464A\"\n        },\n        {\n            value : 50,\n            color : \"#46BFBD\"\n        },\n        {\n            value : 100,\n            color : \"#FDB45C\"\n        },\n        {\n            value : 40,\n            color : \"#949FB1\"\n        },\n        {\n            value : 120,\n            color : \"#4D5360\"\n        }\n\n    ];\n    var lineChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    var pieData = [\n        {\n            value: 30,\n            color:\"#F38630\"\n        },\n        {\n            value : 50,\n            color : \"#E0E4CC\"\n        },\n        {\n            value : 100,\n            color : \"#69D2E7\"\n        }\n\n    ];\n    var barChartData = {\n        labels : [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    var chartData = [\n        {\n            value : Math.random(),\n            color: \"#D97041\"\n        },\n        {\n            value : Math.random(),\n            color: \"#C7604C\"\n        },\n        {\n            value : Math.random(),\n            color: \"#21323D\"\n        },\n        {\n            value : Math.random(),\n            color: \"#9D9B7F\"\n        },\n        {\n            value : Math.random(),\n            color: \"#7D4F6D\"\n        },\n        {\n            value : Math.random(),\n            color: \"#584A5E\"\n        }\n    ];\n    var radarChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n    new Chart(document.getElementById(\"doughnut\").getContext(\"2d\")).Doughnut(doughnutData);\n    new Chart(document.getElementById(\"line\").getContext(\"2d\")).Line(lineChartData);\n    new Chart(document.getElementById(\"radar\").getContext(\"2d\")).Radar(radarChartData);\n    new Chart(document.getElementById(\"polarArea\").getContext(\"2d\")).PolarArea(chartData);\n    new Chart(document.getElementById(\"bar\").getContext(\"2d\")).Bar(barChartData);\n    new Chart(document.getElementById(\"pie\").getContext(\"2d\")).Pie(pieData);\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/common-scripts.js",
    "content": "var Script = function () {\n\n//    sidebar dropdown menu\n\n    jQuery('#sidebar .sub-menu > a').click(function () {\n        var last = jQuery('.sub-menu.open', $('#sidebar'));\n        last.removeClass(\"open\");\n        jQuery('.arrow', last).removeClass(\"open\");\n        jQuery('.sub', last).slideUp(200);\n        var sub = jQuery(this).next();\n        if (sub.is(\":visible\")) {\n            jQuery('.arrow', jQuery(this)).removeClass(\"open\");\n            jQuery(this).parent().removeClass(\"open\");\n            sub.slideUp(200);\n        } else {\n            jQuery('.arrow', jQuery(this)).addClass(\"open\");\n            jQuery(this).parent().addClass(\"open\");\n            sub.slideDown(200);\n        }\n        var o = ($(this).offset());\n        diff = 200 - o.top;\n        if(diff>0)\n            $(\".sidebar-scroll\").scrollTo(\"-=\"+Math.abs(diff),500);\n        else\n            $(\".sidebar-scroll\").scrollTo(\"+=\"+Math.abs(diff),500);\n    });\n\n//    sidebar toggle\n\n    $('.icon-reorder').click(function () {\n        if ($('#sidebar > ul').is(\":visible\") === true) {\n            $('#main-content').css({\n                'margin-left': '0px'\n            });\n            $('#sidebar').css({\n                'margin-left': '-180px'\n            });\n            $('#sidebar > ul').hide();\n            $(\"#container\").addClass(\"sidebar-closed\");\n        } else {\n            $('#main-content').css({\n                'margin-left': '180px'\n            });\n            $('#sidebar > ul').show();\n            $('#sidebar').css({\n                'margin-left': '0'\n            });\n            $(\"#container\").removeClass(\"sidebar-closed\");\n        }\n    });\n\n// custom scrollbar\n    $(\".sidebar-scroll\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', cursorborder: ''});\n\n    $(\".portlet-scroll-1\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', cursorborder: ''});\n\n    $(\".portlet-scroll-2\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', autohidemode: false, cursorborder: ''});\n\n    $(\".portlet-scroll-3\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '5', cursorborderradius: '0px', background: '#404040', autohidemode: false, cursorborder: ''});\n\n    $(\"html\").niceScroll({styler:\"fb\",cursorcolor:\"#4A8BC2\", cursorwidth: '8', cursorborderradius: '0px', background: '#404040', cursorborder: '', zindex: '1000'});\n\n\n// theme switcher\n\n    var scrollHeight = '60px';\n    jQuery('#theme-change').click(function () {\n        if ($(this).attr(\"opened\") && !$(this).attr(\"opening\") && !$(this).attr(\"closing\")) {\n            $(this).removeAttr(\"opened\");\n            $(this).attr(\"closing\", \"1\");\n\n            $(\"#theme-change\").css(\"overflow\", \"hidden\").animate({\n                width: '20px',\n                height: '22px',\n                'padding-top': '3px'\n            }, {\n                complete: function () {\n                    $(this).removeAttr(\"closing\");\n                    $(\"#theme-change .settings\").hide();\n                }\n            });\n        } else if (!$(this).attr(\"closing\") && !$(this).attr(\"opening\")) {\n            $(this).attr(\"opening\", \"1\");\n            $(\"#theme-change\").css(\"overflow\", \"visible\").animate({\n                width: '226px',\n                height: scrollHeight,\n                'padding-top': '3px'\n            }, {\n                complete: function () {\n                    $(this).removeAttr(\"opening\");\n                    $(this).attr(\"opened\", 1);\n                }\n            });\n            $(\"#theme-change .settings\").show();\n        }\n    });\n\n    jQuery('#theme-change .colors span').click(function () {\n        var color = $(this).attr(\"data-style\");\n        setColor(color);\n    });\n\n    jQuery('#theme-change .layout input').change(function () {\n        setLayout();\n    });\n\n    var setColor = function (color) {\n        $('#style_color').attr(\"href\", \"css/style-\" + color + \".css\");\n    }\n\n// widget tools\n\n    jQuery('.widget .tools .icon-chevron-down').click(function () {\n        var el = jQuery(this).parents(\".widget\").children(\".widget-body\");\n        if (jQuery(this).hasClass(\"icon-chevron-down\")) {\n            jQuery(this).removeClass(\"icon-chevron-down\").addClass(\"icon-chevron-up\");\n            el.slideUp(200);\n        } else {\n            jQuery(this).removeClass(\"icon-chevron-up\").addClass(\"icon-chevron-down\");\n            el.slideDown(200);\n        }\n    });\n\n    jQuery('.widget .tools .icon-remove').click(function () {\n        jQuery(this).parents(\".widget\").parent().remove();\n    });\n\n//    tool tips\n\n    $('.element').tooltip();\n\n    $('.tooltips').tooltip();\n\n//    popovers\n\n    $('.popovers').popover();\n\n// scroller\n\n    $('.scroller').slimscroll({\n        height: 'auto'\n    });\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/custom-flot-chart.js",
    "content": "var Script = function () {\n\n//    flot chart (Sin and Cos)\n\n    var metro = {\n        showTooltip: function (x, y, contents) {\n            $('<div class=\"metro_tips\">' + contents + '</div>').css( {\n                position: 'absolute',\n                display: 'none',\n                top: y + 5,\n                left: x + 5\n            }).appendTo(\"body\").fadeIn(200);\n        }\n\n    }\n\n    if (!!$(\".plots\").offset() ) {\n        var sin = [];\n        var cos = [];\n\n        for (var i = 0; i <= 20; i += 0.5){\n            sin.push([i, Math.sin(i)]);\n            cos.push([i, Math.cos(i)]);\n        }\n\n        // Display the Sin and Cos Functions\n        $.plot($(\".plots\"), [ { label: \"Cos\", data: cos }, { label: \"Sin\", data: sin } ],\n            {\n                colors: [\"#4a8bc2\", \"#de577b\"],\n\n                series: {\n                    lines: {\n                        show: true,\n                        lineWidth: 2\n                    },\n                    points: {show: true},\n                    shadowSize: 2\n                },\n\n                grid: {\n                    hoverable: true,\n                    show: true,\n                    borderWidth: 0,\n                    labelMargin: 12\n                },\n\n                legend: {\n                    show: true,\n                    margin: [0,-24],\n                    noColumns: 0,\n                    labelBoxBorderColor: null\n                },\n\n                yaxis: { min: -1.2, max: 1.2},\n                xaxis: {}\n            });\n\n        // plot tooltip show\n        var previousPoint = null;\n        $(\".plots\").bind(\"plothover\", function (event, pos, item) {\n            if (item) {\n                if (previousPoint != item.dataIndex) {\n                    previousPoint = item.dataIndex;\n                    $(\".charts_tooltip\").fadeOut(\"fast\").promise().done(function(){\n                        $(this).remove();\n                    });\n                    var x = item.datapoint[0].toFixed(2),\n                        y = item.datapoint[1].toFixed(2);\n                    metro.showTooltip(item.pageX, item.pageY, item.series.label + \" of \" + x + \" = \" + y);\n                }\n            }\n            else {\n                $(\".metro_tips\").fadeOut(\"fast\").promise().done(function(){\n                    $(this).remove();\n                });\n                previousPoint = null;\n            }\n        });\n    }\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/draggable-portlet.js",
    "content": "var DraggablePortlet = function () {\n\n    return {\n        //main function to initiate the module\n        init: function () {\n\n            if (!jQuery().sortable) {\n                return;\n            }\n\n            $(\"#draggable_portlets\").sortable({\n                connectWith: \".widget\",\n                items: \".widget\",\n                opacity: 0.8,\n                coneHelperSize: true,\n                placeholder: 'sortable-box-placeholder round-all',\n                forcePlaceholderSize: true,\n                tolerance: \"pointer\"\n            });\n\n            $(\".column\").disableSelection();\n\n        }\n\n    };\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/dynamic-table.js",
    "content": "var Script = function () {\n\n        // begin first table\n        $('#sample_1').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ records per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_1 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_1_wrapper .dataTables_filter input').addClass(\"input-medium\"); // modify table search input\n        jQuery('#sample_1_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n        // begin second table\n        $('#sample_2').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_2 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_2_wrapper .dataTables_filter input').addClass(\"input-small\"); // modify table search input\n        jQuery('#sample_2_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n        // begin: third table\n        $('#sample_3').dataTable({\n            \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n            \"sPaginationType\": \"bootstrap\",\n            \"oLanguage\": {\n                \"sLengthMenu\": \"_MENU_ per page\",\n                \"oPaginate\": {\n                    \"sPrevious\": \"Prev\",\n                    \"sNext\": \"Next\"\n                }\n            },\n            \"aoColumnDefs\": [{\n                'bSortable': false,\n                'aTargets': [0]\n            }]\n        });\n\n        jQuery('#sample_3 .group-checkable').change(function () {\n            var set = jQuery(this).attr(\"data-set\");\n            var checked = jQuery(this).is(\":checked\");\n            jQuery(set).each(function () {\n                if (checked) {\n                    $(this).attr(\"checked\", true);\n                } else {\n                    $(this).attr(\"checked\", false);\n                }\n            });\n            jQuery.uniform.update(set);\n        });\n\n        jQuery('#sample_3_wrapper .dataTables_filter input').addClass(\"input-small\"); // modify table search input\n        jQuery('#sample_3_wrapper .dataTables_length select').addClass(\"input-mini\"); // modify table per page dropdown\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/easy-pie-chart.js",
    "content": "var Script = function () {\n\n// easy pie chart\n\n    $('.percentage').easyPieChart({\n        animate: 1000,\n        size: 95,\n        barColor:'#4a8bc2'\n    });\n    $('.percentage-light').easyPieChart({\n        barColor: function(percent) {\n            percent /= 100;\n            return \"rgb(\" + Math.round(255 * (1-percent)) + \", \" + Math.round(255 * percent) + \", 0)\";\n        },\n        trackColor: '#666',\n        scaleColor: false,\n        lineCap: 'butt',\n        lineWidth: 15,\n        animate: 1000\n    });\n\n    $('.update-easy-pie-chart').click(function(){\n        $('.easy-pie-chart .percentage').each(function() {\n            var newValue = Math.floor(100*Math.random());\n            $(this).data('easyPieChart').update(newValue);\n            $('span', this).text(newValue);\n        });\n    });\n\n    $('.updateEasyPieChart').on('click', function(e) {\n        e.preventDefault();\n        $('.percentage, .percentage-light').each(function() {\n            var newValue = Math.round(100*Math.random());\n            $(this).data('easyPieChart').update(newValue);\n            $('span', this).text(newValue);\n        });\n    });\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/editable-table.js",
    "content": "var EditableTable = function () {\n\n    return {\n\n        //main function to initiate the module\n        init: function () {\n            function restoreRow(oTable, nRow) {\n                var aData = oTable.fnGetData(nRow);\n                var jqTds = $('>td', nRow);\n\n                for (var i = 0, iLen = jqTds.length; i < iLen; i++) {\n                    oTable.fnUpdate(aData[i], nRow, i, false);\n                }\n\n                oTable.fnDraw();\n            }\n\n            function editRow(oTable, nRow) {\n                var aData = oTable.fnGetData(nRow);\n                var jqTds = $('>td', nRow);\n                jqTds[0].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[0] + '\">';\n                jqTds[1].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[1] + '\">';\n                jqTds[2].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[2] + '\">';\n                jqTds[3].innerHTML = '<input type=\"text\" class=\" small\" value=\"' + aData[3] + '\">';\n                jqTds[4].innerHTML = '<a class=\"edit\" href=\"\">Save</a>';\n                jqTds[5].innerHTML = '<a class=\"cancel\" href=\"\">Cancel</a>';\n            }\n\n            function saveRow(oTable, nRow) {\n                var jqInputs = $('input', nRow);\n                oTable.fnUpdate(jqInputs[0].value, nRow, 0, false);\n                oTable.fnUpdate(jqInputs[1].value, nRow, 1, false);\n                oTable.fnUpdate(jqInputs[2].value, nRow, 2, false);\n                oTable.fnUpdate(jqInputs[3].value, nRow, 3, false);\n                oTable.fnUpdate('<a class=\"edit\" href=\"\">Edit</a>', nRow, 4, false);\n                oTable.fnUpdate('<a class=\"delete\" href=\"\">Delete</a>', nRow, 5, false);\n                oTable.fnDraw();\n            }\n\n            function cancelEditRow(oTable, nRow) {\n                var jqInputs = $('input', nRow);\n                oTable.fnUpdate(jqInputs[0].value, nRow, 0, false);\n                oTable.fnUpdate(jqInputs[1].value, nRow, 1, false);\n                oTable.fnUpdate(jqInputs[2].value, nRow, 2, false);\n                oTable.fnUpdate(jqInputs[3].value, nRow, 3, false);\n                oTable.fnUpdate('<a class=\"edit\" href=\"\">Edit</a>', nRow, 4, false);\n                oTable.fnDraw();\n            }\n\n            var oTable = $('#editable-sample').dataTable({\n                \"aLengthMenu\": [\n                    [5, 15, 20, -1],\n                    [5, 15, 20, \"All\"] // change per page values here\n                ],\n                // set the initial value\n                \"iDisplayLength\": 5,\n                \"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n                \"sPaginationType\": \"bootstrap\",\n                \"oLanguage\": {\n                    \"sLengthMenu\": \"_MENU_ records per page\",\n                    \"oPaginate\": {\n                        \"sPrevious\": \"Prev\",\n                        \"sNext\": \"Next\"\n                    }\n                },\n                \"aoColumnDefs\": [{\n                        'bSortable': false,\n                        'aTargets': [0]\n                    }\n                ]\n            });\n\n            jQuery('#editable-sample_wrapper .dataTables_filter input').addClass(\" medium\"); // modify table search input\n            jQuery('#editable-sample_wrapper .dataTables_length select').addClass(\" xsmall\"); // modify table per page dropdown\n\n            var nEditing = null;\n\n            $('#editable-sample_new').click(function (e) {\n                e.preventDefault();\n                var aiNew = oTable.fnAddData(['', '', '', '',\n                        '<a class=\"edit\" href=\"\">Edit</a>', '<a class=\"cancel\" data-mode=\"new\" href=\"\">Cancel</a>'\n                ]);\n                var nRow = oTable.fnGetNodes(aiNew[0]);\n                editRow(oTable, nRow);\n                nEditing = nRow;\n            });\n\n            $('#editable-sample a.delete').live('click', function (e) {\n                e.preventDefault();\n\n                if (confirm(\"Are you sure to delete this row ?\") == false) {\n                    return;\n                }\n\n                var nRow = $(this).parents('tr')[0];\n                oTable.fnDeleteRow(nRow);\n                alert(\"Deleted! Do not forget to do some ajax to sync with backend :)\");\n            });\n\n            $('#editable-sample a.cancel').live('click', function (e) {\n                e.preventDefault();\n                if ($(this).attr(\"data-mode\") == \"new\") {\n                    var nRow = $(this).parents('tr')[0];\n                    oTable.fnDeleteRow(nRow);\n                } else {\n                    restoreRow(oTable, nEditing);\n                    nEditing = null;\n                }\n            });\n\n            $('#editable-sample a.edit').live('click', function (e) {\n                e.preventDefault();\n\n                /* Get the row as a parent of the link that was clicked on */\n                var nRow = $(this).parents('tr')[0];\n\n                if (nEditing !== null && nEditing != nRow) {\n                    /* Currently editing - but not this row - restore the old before continuing to edit mode */\n                    restoreRow(oTable, nEditing);\n                    editRow(oTable, nRow);\n                    nEditing = nRow;\n                } else if (nEditing == nRow && this.innerHTML == \"Save\") {\n                    /* Editing this row and want to save it */\n                    saveRow(oTable, nEditing);\n                    nEditing = null;\n                    alert(\"Updated! Do not forget to do some ajax to sync with backend :)\");\n                } else {\n                    /* No edit in progress - let's start one */\n                    editRow(oTable, nRow);\n                    nEditing = nRow;\n                }\n            });\n        }\n\n    };\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\ndocument.createElement(\"canvas\").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement(\"canvas\");a.attachEvent(\"onreadystatechange\",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||\nb.namespaces.add(\"g_vml_\",\"urn:schemas-microsoft-com:vml\",\"#default#VML\");b.namespaces.g_o_||b.namespaces.add(\"g_o_\",\"urn:schemas-microsoft-com:office:office\",\"#default#VML\");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id=\"ex_canvas_\";a.cssText=\"canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:*{behavior:url(#default#VML)}g_o_\\\\:*{behavior:url(#default#VML)}\"}var c=b.getElementsByTagName(\"canvas\"),d=0;for(;d<c.length;d++)this.initElement(c[d])},\ninitElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML=\"\";b.attachEvent(\"onpropertychange\",Z);b.attachEvent(\"onresize\",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+\"px\";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+\"px\";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case \"width\":a.style.width=a.attributes.width.nodeValue+\"px\";a.getContext().clearRect();\nbreak;case \"height\":a.style.height=a.attributes.height.nodeValue+\"px\";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+\"px\";a.firstChild.style.height=a.clientHeight+\"px\"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=\nh}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)==\"rgb\"){var d=b.indexOf(\"(\",3),f=b.indexOf(\")\",d+\n1),h=b.substring(d+1,f).split(\",\");a=\"#\";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)==\"a\")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case \"butt\":return\"flat\";case \"round\":return\"round\";case \"square\":default:return\"square\"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;\nvar a=b.ownerDocument.createElement(\"div\");a.style.width=b.clientWidth+\"px\";a.style.height=b.clientHeight+\"px\";a.style.overflow=\"hidden\";a.style.position=\"absolute\";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=\"\"};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"moveTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};\ni.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"lineTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:\"bezierCurveTo\",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+\n0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?\"at\":\"wa\",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,\na);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,\na,c,d){var f=new D(\"gradient\");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D(\"gradientradial\");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width=\"auto\";b.runtimeStyle.height=\"auto\";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==\n5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error(\"Invalid number of arguments\");var q=this.getCoords_(a,c),t=[];t.push(\" <g_vml_:group\",' coordsize=\"',k*10,\",\",k*10,'\"',' coordorigin=\"0,0\"',' style=\"width:',10,\"px;height:\",10,\"px;position:absolute;\");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push(\"M11=\",\nthis.m_[0][0],\",\",\"M12=\",this.m_[1][0],\",\",\"M21=\",this.m_[0][1],\",\",\"M22=\",this.m_[1][1],\",\",\"Dx=\",j(q.x/k),\",\",\"Dy=\",j(q.y/k),\"\");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push(\"padding:0 \",j(p.x/k),\"px \",j(p.y/k),\"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(\",E.join(\"\"),\", sizingmethod='clip');\")}else t.push(\"top:\",j(q.y/k),\"px;left:\",j(q.x/k),\"px;\");t.push(' \">','<g_vml_:image src=\"',b.src,\n'\"',' style=\"width:',k*d,\"px;\",\" height:\",k*f,'px;\"',' cropleft=\"',h/n,'\"',' croptop=\"',g/o,'\"',' cropright=\"',(n-h-l)/n,'\"',' cropbottom=\"',(o-g-e)/o,'\"',\" />\",\"</g_vml_:group>\");this.element_.insertAdjacentHTML(\"BeforeEnd\",t.join(\"\"))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push(\"<g_vml_:shape\",' filled=\"',!!b,'\"',' style=\"position:absolute;width:',10,\"px;height:\",10,'px;\"',' coordorigin=\"0 0\" coordsize=\"',k*10,\" \",k*10,'\"',' stroked=\"',\n!b,'\"',' path=\"');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case \"moveTo\":a.push(\" m \",j(e.x),\",\",j(e.y));break;case \"lineTo\":a.push(\" l \",j(e.x),\",\",j(e.y));break;case \"close\":a.push(\" x \");e=null;break;case \"bezierCurveTo\":a.push(\" c \",j(e.cp1x),\",\",j(e.cp1y),\",\",j(e.cp2x),\",\",j(e.cp2y),\",\",j(e.x),\",\",j(e.y));break;case \"at\":case \"wa\":a.push(\" \",e.type,\" \",j(e.x-this.arcScaleX_*e.radius),\",\",j(e.y-this.arcScaleY_*e.radius),\n\" \",j(e.x+this.arcScaleX_*e.radius),\",\",j(e.y+this.arcScaleY_*e.radius),\" \",j(e.xStart),\",\",j(e.yStart),\" \",j(e.xEnd),\",\",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' \">');if(b)if(typeof this.fillStyle==\"object\"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_==\"gradient\"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),\nz=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+\no+\" \"+T.color)}a.push('<g_vml_:fill type=\"',m.type_,'\"',' method=\"none\" focus=\"100%\"',' color=\"',da,'\"',' color2=\"',ea,'\"',' colors=\"',S.join(\",\"),'\"',' opacity=\"',ga,'\"',' g_o_:opacity2=\"',fa,'\"',' angle=\"',r,'\"',' focusposition=\"',n.x,\",\",n.y,'\" />')}else a.push('<g_vml_:fill color=\"',d,'\" opacity=\"',f,'\" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push(\"<g_vml_:stroke\",' opacity=\"',f,'\"',' joinstyle=\"',this.lineJoin,'\"',' miterlimit=\"',this.miterLimit,'\"',' endcap=\"',aa(this.lineCap),\n'\"',' weight=\"',K,'px\"',' color=\"',d,'\" />')}a.push(\"</g_vml_:shape>\");this.element_.insertAdjacentHTML(\"beforeEnd\",a.join(\"\"))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:\"close\"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),\nthis);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,\n0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=\nM;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();\n"
  },
  {
    "path": "target/mongo/jslib/bs_js/external-dragging-calendar.js",
    "content": "var Script = function () {\n\n\n    /* initialize the external events\n     -----------------------------------------------------------------*/\n\n    $('#external-events div.external-event').each(function() {\n\n        // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)\n        // it doesn't need to have a start or end\n        var eventObject = {\n            title: $.trim($(this).text()) // use the element's text as the event title\n        };\n\n        // store the Event Object in the DOM element so we can get to it later\n        $(this).data('eventObject', eventObject);\n\n        // make the event draggable using jQuery UI\n        $(this).draggable({\n            zIndex: 999,\n            revert: true,      // will cause the event to go back to its\n            revertDuration: 0  //  original position after the drag\n        });\n\n    });\n\n\n    /* initialize the calendar\n     -----------------------------------------------------------------*/\n\n    var date = new Date();\n    var d = date.getDate();\n    var m = date.getMonth();\n    var y = date.getFullYear();\n\n    $('#calendar').fullCalendar({\n        header: {\n            left: 'prev,next today',\n            center: 'title',\n            right: 'month,basicWeek,basicDay'\n        },\n        editable: true,\n        droppable: true, // this allows things to be dropped onto the calendar !!!\n        drop: function(date, allDay) { // this function is called when something is dropped\n\n            // retrieve the dropped element's stored Event Object\n            var originalEventObject = $(this).data('eventObject');\n\n            // we need to copy it, so that multiple events don't have a reference to the same object\n            var copiedEventObject = $.extend({}, originalEventObject);\n\n            // assign it the date that was reported\n            copiedEventObject.start = date;\n            copiedEventObject.allDay = allDay;\n\n            // render the event on the calendar\n            // the last `true` argument determines if the event \"sticks\" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)\n            $('#calendar').fullCalendar('renderEvent', copiedEventObject, true);\n\n            // is the \"remove after drop\" checkbox checked?\n            if ($('#drop-remove').is(':checked')) {\n                // if so, remove the element from the \"Draggable Events\" list\n                $(this).remove();\n            }\n\n        },\n        events: [\n            {\n                title: 'All Day Event',\n                start: new Date(y, m, 1)\n            },\n            {\n                title: 'Long Event',\n                start: new Date(y, m, d-5),\n                end: new Date(y, m, d-2)\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d-3, 16, 0),\n                allDay: false\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d+4, 16, 0),\n                allDay: false\n            },\n            {\n                title: 'Meeting',\n                start: new Date(y, m, d, 10, 30),\n                allDay: false\n            },\n            {\n                title: 'Lunch',\n                start: new Date(y, m, d, 12, 0),\n                end: new Date(y, m, d, 14, 0),\n                allDay: false\n            },\n            {\n                title: 'Birthday Party',\n                start: new Date(y, m, d+1, 19, 0),\n                end: new Date(y, m, d+1, 22, 30),\n                allDay: false\n            },\n            {\n                title: 'Click for Google',\n                start: new Date(y, m, 28),\n                end: new Date(y, m, 29),\n                url: '../../../../google.com/default.htm'\n            }\n        ]\n    });\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/flot-chart.js",
    "content": "var Script = function () {\n\n//  tracking chart\n\n    var plot;\n    $(function () {\n        var sin = [], cos = [];\n        for (var i = 0; i < 14; i += 0.1) {\n            sin.push([i, Math.sin(i)]);\n            cos.push([i, Math.cos(i)]);\n        }\n\n        plot = $.plot($(\"#chart-1\"),\n            [ { data: sin, label: \"sin(x) = -0.00\"},\n                { data: cos, label: \"cos(x) = -0.00\" } ], {\n                series: {\n                    lines: { show: true }\n                },\n                crosshair: { mode: \"x\" },\n                grid: { hoverable: true, autoHighlight: false },\n                yaxis: { min: -1.2, max: 1.2 }\n            });\n        var legends = $(\"#chart-1 .legendLabel\");\n        legends.each(function () {\n            // fix the widths so they don't jump around\n            $(this).css('width', $(this).width());\n        });\n\n        var updateLegendTimeout = null;\n        var latestPosition = null;\n\n        function updateLegend() {\n            updateLegendTimeout = null;\n\n            var pos = latestPosition;\n\n            var axes = plot.getAxes();\n            if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||\n                pos.y < axes.yaxis.min || pos.y > axes.yaxis.max)\n                return;\n\n            var i, j, dataset = plot.getData();\n            for (i = 0; i < dataset.length; ++i) {\n                var series = dataset[i];\n\n                // find the nearest points, x-wise\n                for (j = 0; j < series.data.length; ++j)\n                    if (series.data[j][0] > pos.x)\n                        break;\n\n                // now interpolate\n                var y, p1 = series.data[j - 1], p2 = series.data[j];\n                if (p1 == null)\n                    y = p2[1];\n                else if (p2 == null)\n                    y = p1[1];\n                else\n                    y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);\n\n                legends.eq(i).text(series.label.replace(/=.*/, \"= \" + y.toFixed(2)));\n            }\n        }\n\n        $(\"#chart-1\").bind(\"plothover\",  function (event, pos, item) {\n            latestPosition = pos;\n            if (!updateLegendTimeout)\n                updateLegendTimeout = setTimeout(updateLegend, 50);\n        });\n    });\n\n//    selection chart\n\n    $(function () {\n        var data = [\n            {\n                label: \"United States\",\n                data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]\n            },\n            {\n                label: \"Russia\",\n                data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]\n            },\n            {\n                label: \"United Kingdom\",\n                data: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]\n            },\n            {\n                label: \"Germany\",\n                data: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]\n            },\n            {\n                label: \"Denmark\",\n                data: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]\n            },\n            {\n                label: \"Sweden\",\n                data: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]\n            },\n            {\n                label: \"Norway\",\n                data: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]\n            }\n        ];\n\n        var options = {\n            series: {\n                lines: { show: true },\n                points: { show: true }\n            },\n            legend: { noColumns: 2 },\n            xaxis: { tickDecimals: 0 },\n            yaxis: { min: 0 },\n            selection: { mode: \"x\" }\n        };\n\n        var placeholder = $(\"#chart-2\");\n\n        placeholder.bind(\"plotselected\", function (event, ranges) {\n            $(\"#selection\").text(ranges.xaxis.from.toFixed(1) + \" to \" + ranges.xaxis.to.toFixed(1));\n\n            var zoom = $(\"#zoom\").attr(\"checked\");\n            if (zoom)\n                plot = $.plot(placeholder, data,\n                    $.extend(true, {}, options, {\n                        xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                    }));\n        });\n\n        placeholder.bind(\"plotunselected\", function (event) {\n            $(\"#selection\").text(\"\");\n        });\n\n        var plot = $.plot(placeholder, data, options);\n\n        $(\"#clearSelection\").click(function () {\n            plot.clearSelection();\n        });\n\n        $(\"#setSelection\").click(function () {\n            plot.setSelection({ xaxis: { from: 1994, to: 1995 } });\n        });\n    });\n\n//    live chart\n\n    $(function () {\n        // we use an inline data source in the example, usually data would\n        // be fetched from a server\n        var data = [], totalPoints = 300;\n        function getRandomData() {\n            if (data.length > 0)\n                data = data.slice(1);\n\n            // do a random walk\n            while (data.length < totalPoints) {\n                var prev = data.length > 0 ? data[data.length - 1] : 50;\n                var y = prev + Math.random() * 10 - 5;\n                if (y < 0)\n                    y = 0;\n                if (y > 100)\n                    y = 100;\n                data.push(y);\n            }\n\n            // zip the generated y values with the x values\n            var res = [];\n            for (var i = 0; i < data.length; ++i)\n                res.push([i, data[i]])\n            return res;\n        }\n\n        // setup control widget\n        var updateInterval = 30;\n        $(\"#updateInterval\").val(updateInterval).change(function () {\n            var v = $(this).val();\n            if (v && !isNaN(+v)) {\n                updateInterval = +v;\n                if (updateInterval < 1)\n                    updateInterval = 1;\n                if (updateInterval > 2000)\n                    updateInterval = 2000;\n                $(this).val(\"\" + updateInterval);\n            }\n        });\n\n        // setup plot\n        var options = {\n            series: { shadowSize: 0 }, // drawing is faster without shadows\n            yaxis: { min: 0, max: 100 },\n            xaxis: { show: false }\n        };\n        var plot = $.plot($(\"#chart-3\"), [ getRandomData() ], options);\n\n        function update() {\n            plot.setData([ getRandomData() ]);\n            // since the axes don't change, we don't need to call plot.setupGrid()\n            plot.draw();\n\n            setTimeout(update, updateInterval);\n        }\n\n        update();\n    });\n    \n//    support chart\n\n    $(function () {\n        var d1 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d1.push([i, Math.sin(i)]);\n\n        var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n        var d3 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d3.push([i, Math.cos(i)]);\n\n        var d4 = [];\n        for (var i = 0; i < 14; i += 0.1)\n            d4.push([i, Math.sqrt(i * 10)]);\n\n        var d5 = [];\n        for (var i = 0; i < 14; i += 0.5)\n            d5.push([i, Math.sqrt(i)]);\n\n        var d6 = [];\n        for (var i = 0; i < 14; i += 0.5 + Math.random())\n            d6.push([i, Math.sqrt(2*i + Math.sin(i) + 5)]);\n\n        $.plot($(\"#chart-4\"), [\n            {\n                data: d1,\n                lines: { show: true, fill: true }\n            },\n            {\n                data: d2,\n                bars: { show: true }\n            },\n            {\n                data: d3,\n                points: { show: true }\n            },\n            {\n                data: d4,\n                lines: { show: true }\n            },\n            {\n                data: d5,\n                lines: { show: true },\n                points: { show: true }\n            },\n            {\n                data: d6,\n                lines: { show: true, steps: true }\n            }\n        ]);\n    });\n\n//    bar chart\n\n    $(function () {\n        var d1 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d1.push([i, parseInt(Math.random() * 30)]);\n\n        var d2 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d2.push([i, parseInt(Math.random() * 30)]);\n\n        var d3 = [];\n        for (var i = 0; i <= 10; i += 1)\n            d3.push([i, parseInt(Math.random() * 30)]);\n\n        var stack = 0, bars = true, lines = false, steps = false;\n\n        function plotWithOptions() {\n            $.plot($(\"#chart-5\"), [ d1, d2, d3 ], {\n                series: {\n                    stack: stack,\n                    lines: { show: lines, fill: true, steps: steps },\n                    bars: { show: bars, barWidth: 0.6 }\n                }\n            });\n        }\n\n        plotWithOptions();\n\n        $(\".stackControls input\").click(function (e) {\n            e.preventDefault();\n            stack = $(this).val() == \"With stacking\" ? true : null;\n            plotWithOptions();\n        });\n        $(\".graphControls input\").click(function (e) {\n            e.preventDefault();\n            bars = $(this).val().indexOf(\"Bars\") != -1;\n            lines = $(this).val().indexOf(\"Lines\") != -1;\n            steps = $(this).val().indexOf(\"steps\") != -1;\n            plotWithOptions();\n        });\n    });\n\n//    graph chart\n\n\n    $(function () {\n        // data\n        /*var data = [\n         { label: \"Series1\",  data: 10},\n         { label: \"Series2\",  data: 30},\n         { label: \"Series3\",  data: 90},\n         { label: \"Series4\",  data: 70},\n         { label: \"Series5\",  data: 80},\n         { label: \"Series6\",  data: 110}\n         ];*/\n        /*var data = [\n         { label: \"Series1\",  data: [[1,10]]},\n         { label: \"Series2\",  data: [[1,30]]},\n         { label: \"Series3\",  data: [[1,90]]},\n         { label: \"Series4\",  data: [[1,70]]},\n         { label: \"Series5\",  data: [[1,80]]},\n         { label: \"Series6\",  data: [[1,0]]}\n         ];*/\n        var data = [];\n        var series = Math.floor(Math.random()*10)+1;\n        for( var i = 0; i<series; i++)\n        {\n            data[i] = { label: \"Series\"+(i+1), data: Math.floor(Math.random()*100)+1 }\n        }\n\n\n\n        // GRAPH 1\n        $.plot($(\"#graph1\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n        // GRAPH 2\n        $.plot($(\"#graph2\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true,\n                        radius: 1,\n                        label: {\n                            show: true,\n                            radius: 1,\n                            formatter: function(label, series){\n                                return '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n                            },\n                            background: { opacity: 0.8 }\n                        }\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n        // GRAPH 3\n        $.plot($(\"#graph3\"), data,\n            {\n                series: {\n                    pie: {\n                        show: true,\n                        radius: 1,\n                        label: {\n                            show: true,\n                            radius: 3/4,\n                            formatter: function(label, series){\n                                return '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n                            },\n                            background: { opacity: 0.5 }\n                        }\n                    }\n                },\n                legend: {\n                    show: false\n                }\n            });\n\n\n        // DONUT\n        $.plot($(\"#donut\"), data,\n            {\n                series: {\n                    pie: {\n                        innerRadius: 0.5,\n                        show: true\n                    }\n                }\n            });\n\n\n\n    });\n\n    function pieHover(event, pos, obj)\n    {\n        if (!obj)\n            return;\n        percent = parseFloat(obj.series.percent).toFixed(2);\n        $(\"#hover\").html('<span style=\"font-weight: bold; color: '+obj.series.color+'\">'+obj.series.label+' ('+percent+'%)</span>');\n    }\n\n    function pieClick(event, pos, obj)\n    {\n        if (!obj)\n            return;\n        percent = parseFloat(obj.series.percent).toFixed(2);\n        alert(''+obj.series.label+': '+percent+'%');\n    }\n\n    \n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/form-component.js",
    "content": "var Script = function () {\n\n    //chosen select\n    $(\".chzn-select\").chosen(); $(\".chzn-select-deselect\").chosen({allow_single_deselect:true});\n\n\n    //tag input\n\n    function onAddTag(tag) {\n        alert(\"Added a tag: \" + tag);\n    }\n    function onRemoveTag(tag) {\n        alert(\"Removed a tag: \" + tag);\n    }\n\n    function onChangeTag(input,tag) {\n        alert(\"Changed a tag: \" + tag);\n    }\n\n    $(function() {\n\n        $('#tags_1').tagsInput({width:'auto'});\n        $('#tags_2').tagsInput({\n            width: '250',\n            onChange: function(elem, elem_tags)\n            {\n                var languages = ['php','ruby','javascript'];\n                $('.tag', elem_tags).each(function()\n                {\n                    if($(this).text().search(new RegExp('\\\\b(' + languages.join('|') + ')\\\\b')) >= 0)\n                        $(this).css('background-color', 'yellow');\n                });\n            }\n        });\n\n        // Uncomment this line to see the callback functions in action\n        //\t\t\t$('input.tags').tagsInput({onAddTag:onAddTag,onRemoveTag:onRemoveTag,onChange: onChangeTag});\n\n        // Uncomment this line to see an input with no interface for adding new tags.\n        //\t\t\t$('input.tags').tagsInput({interactive:false});\n    });\n\n\n\n    //color picker\n\n    $('.cp1').colorpicker({\n        format: 'hex'\n    });\n    $('.cp2').colorpicker();\n\n\n\n    //time picker\n\n    $('#timepicker1, #timepicker3').timepicker();\n\n    $('#timepicker2, #timepicker4').timepicker({\n        minuteStep: 1,\n        template: 'modal',\n        showSeconds: true,\n        showMeridian: false\n    });\n\n\n    //clock face time picker\n\n    $('#clockface_1').clockface();\n\n    $('#clockface_2').clockface({\n        format: 'HH:mm',\n        trigger: 'manual'\n    });\n\n    $('#clockface_2_toggle-btn').click(function (e) {\n        e.stopPropagation();\n        $('#clockface_2').clockface('toggle');\n    });\n\n\n    //date picker\n\n    if (top.location != location) {\n        top.location.href = document.location.href ;\n    }\n    $(function(){\n        window.prettyPrint && prettyPrint();\n        $('#dp1').datepicker({\n            format: 'mm-dd-yyyy'\n        });\n        $('#dp2').datepicker();\n        $('#dp3').datepicker();\n        $('#dp3').datepicker();\n        $('#dpYears').datepicker();\n        $('#dpMonths').datepicker();\n\n\n        var startDate = new Date(2012,1,20);\n        var endDate = new Date(2012,1,25);\n        $('#dp4').datepicker()\n            .on('changeDate', function(ev){\n                if (ev.date.valueOf() > endDate.valueOf()){\n                    $('#alert').show().find('strong').text('The start date can not be greater then the end date');\n                } else {\n                    $('#alert').hide();\n                    startDate = new Date(ev.date);\n                    $('#startDate').text($('#dp4').data('date'));\n                }\n                $('#dp4').datepicker('hide');\n            });\n        $('#dp5').datepicker()\n            .on('changeDate', function(ev){\n                if (ev.date.valueOf() < startDate.valueOf()){\n                    $('#alert').show().find('strong').text('The end date can not be less then the start date');\n                } else {\n                    $('#alert').hide();\n                    endDate = new Date(ev.date);\n                    $('#endDate').text($('#dp5').data('date'));\n                }\n                $('#dp5').datepicker('hide');\n            });\n\n        // disabling dates\n        var nowTemp = new Date();\n        var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);\n\n        var checkin = $('#dpd1').datepicker({\n            onRender: function(date) {\n                return date.valueOf() < now.valueOf() ? 'disabled' : '';\n            }\n        }).on('changeDate', function(ev) {\n                if (ev.date.valueOf() > checkout.date.valueOf()) {\n                    var newDate = new Date(ev.date)\n                    newDate.setDate(newDate.getDate() + 1);\n                    checkout.setValue(newDate);\n                }\n                checkin.hide();\n                $('#dpd2')[0].focus();\n            }).data('datepicker');\n        var checkout = $('#dpd2').datepicker({\n            onRender: function(date) {\n                return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';\n            }\n        }).on('changeDate', function(ev) {\n                checkout.hide();\n            }).data('datepicker');\n    });\n\n\n\n    //daterange picker\n\n    $('#reservation').daterangepicker();\n\n    $('#reportrange').daterangepicker(\n        {\n            ranges: {\n                'Today': ['today', 'today'],\n                'Yesterday': ['yesterday', 'yesterday'],\n                'Last 7 Days': [Date.today().add({ days: -6 }), 'today'],\n                'Last 30 Days': [Date.today().add({ days: -29 }), 'today'],\n                'This Month': [Date.today().moveToFirstDayOfMonth(), Date.today().moveToLastDayOfMonth()],\n                'Last Month': [Date.today().moveToFirstDayOfMonth().add({ months: -1 }), Date.today().moveToFirstDayOfMonth().add({ days: -1 })]\n            },\n            opens: 'left',\n            format: 'MM/dd/yyyy',\n            separator: ' to ',\n            startDate: Date.today().add({ days: -29 }),\n            endDate: Date.today(),\n            minDate: '01/01/2012',\n            maxDate: '12/31/2013',\n            locale: {\n                applyLabel: 'Submit',\n                fromLabel: 'From',\n                toLabel: 'To',\n                customRangeLabel: 'Custom Range',\n                daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'],\n                monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n                firstDay: 1\n            },\n            showWeekNumbers: true,\n            buttonClasses: ['btn-danger']\n        },\n        function(start, end) {\n            $('#reportrange span').html(start.toString('MMMM d, yyyy') + ' - ' + end.toString('MMMM d, yyyy'));\n        }\n    );\n\n    //Set the initial state of the picker label\n    $('#reportrange span').html(Date.today().add({ days: -29 }).toString('MMMM d, yyyy') + ' - ' + Date.today().toString('MMMM d, yyyy'));\n\n\n    //toggle button\n\n    window.prettyPrint && prettyPrint();\n\n    $('#normal-toggle-button').toggleButtons();\n\n    $('#text-toggle-button').toggleButtons({\n        width: 220,\n        label: {\n            enabled: \"Lorem Ipsum\",\n            disabled: \"Dolor Sit\"\n        }\n    });\n\n    $('#not-animated-toggle-button').toggleButtons({\n        animated: false\n    });\n\n    $('#transition-percent-toggle-button').toggleButtons({\n        transitionspeed: \"500%\"\n    });\n\n    $('#transition-value-toggle-button').toggleButtons({\n        transitionspeed: 1 // default value: 0.05\n    });\n\n    $('#danger-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"danger\",\n            disabled: \"info\"\n        }\n    });\n    $('#info-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"info\",\n            disabled: \"info\"\n        }\n    });\n    $('#success-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"success\",\n            disabled: \"info\"\n        }\n    });\n    $('#warning-toggle-button').toggleButtons({\n        style: {\n            // Accepted values [\"primary\", \"danger\", \"info\", \"success\", \"warning\"] or nothing\n            enabled: \"warning\",\n            disabled: \"info\"\n        }\n    });\n\n    $('#height-text-style-toggle-button').toggleButtons({\n        height: 100,\n        font: {\n            'line-height': '100px',\n            'font-size': '18px',\n            'font-style': 'regular'\n        }\n    });\n\n\n    //WYSIWYG Editor\n\n    $('.wysihtmleditor5').wysihtml5();\n\n\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/form-validation-script.js",
    "content": "var Script = function () {\n\n    $.validator.setDefaults({\n        submitHandler: function() { alert(\"submitted!\"); }\n    });\n\n    $().ready(function() {\n        // validate the comment form when it is submitted\n        $(\"#commentForm\").validate();\n\n        // validate signup form on keyup and submit\n        $(\"#signupForm\").validate({\n            rules: {\n                firstname: \"required\",\n                lastname: \"required\",\n                username: {\n                    required: true,\n                    minlength: 2\n                },\n                password: {\n                    required: true,\n                    minlength: 5\n                },\n                confirm_password: {\n                    required: true,\n                    minlength: 5,\n                    equalTo: \"#password\"\n                },\n                email: {\n                    required: true,\n                    email: true\n                },\n                topic: {\n                    required: \"#newsletter:checked\",\n                    minlength: 2\n                },\n                agree: \"required\"\n            },\n            messages: {\n                firstname: \"Please enter your firstname\",\n                lastname: \"Please enter your lastname\",\n                username: {\n                    required: \"Please enter a username\",\n                    minlength: \"Your username must consist of at least 2 characters\"\n                },\n                password: {\n                    required: \"Please provide a password\",\n                    minlength: \"Your password must be at least 5 characters long\"\n                },\n                confirm_password: {\n                    required: \"Please provide a password\",\n                    minlength: \"Your password must be at least 5 characters long\",\n                    equalTo: \"Please enter the same password as above\"\n                },\n                email: \"Please enter a valid email address\",\n                agree: \"Please accept our policy\"\n            }\n        });\n\n        // propose username by combining first- and lastname\n        $(\"#username\").focus(function() {\n            var firstname = $(\"#firstname\").val();\n            var lastname = $(\"#lastname\").val();\n            if(firstname && lastname && !this.value) {\n                this.value = firstname + \".\" + lastname;\n            }\n        });\n\n        //code to hide topic selection, disable for demo\n        var newsletter = $(\"#newsletter\");\n        // newsletter topics are optional, hide at first\n        var inital = newsletter.is(\":checked\");\n        var topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n        var topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n        // show when newsletter is checked\n        newsletter.click(function() {\n            topics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n            topicInputs.attr(\"disabled\", !this.checked);\n        });\n    });\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/form-wizard.js",
    "content": "var Script = function () {\n\n    $('#pills').bootstrapWizard({'tabClass': 'nav nav-pills', 'debug': false, onShow: function(tab, navigation, index) {\n        console.log('onShow');\n    }, onNext: function(tab, navigation, index) {\n        console.log('onNext');\n    }, onPrevious: function(tab, navigation, index) {\n        console.log('onPrevious');\n    }, onLast: function(tab, navigation, index) {\n        console.log('onLast');\n    }, onTabClick: function(tab, navigation, index) {\n        console.log('onTabClick');\n        alert('on tab click disabled');\n    }, onTabShow: function(tab, navigation, index) {\n        console.log('onTabShow');\n        var $total = navigation.find('li').length;\n        var $current = index+1;\n        var $percent = ($current/$total) * 100;\n        $('#pills').find('.bar').css({width:$percent+'%'});\n    }});\n\n    $('#tabsleft').bootstrapWizard({'tabClass': 'nav nav-tabs', 'debug': false, onShow: function(tab, navigation, index) {\n        console.log('onShow');\n    }, onNext: function(tab, navigation, index) {\n        console.log('onNext');\n    }, onPrevious: function(tab, navigation, index) {\n        console.log('onPrevious');\n    }, onLast: function(tab, navigation, index) {\n        console.log('onLast');\n    }, onTabClick: function(tab, navigation, index) {\n        console.log('onTabClick');\n\n    }, onTabShow: function(tab, navigation, index) {\n        console.log('onTabShow');\n        var $total = navigation.find('li').length;\n        var $current = index+1;\n        var $percent = ($current/$total) * 100;\n        $('#tabsleft').find('.bar').css({width:$percent+'%'});\n\n        // If it's the last tab then hide the last button and show the finish instead\n        if($current >= $total) {\n            $('#tabsleft').find('.pager .next').hide();\n            $('#tabsleft').find('.pager .finish').show();\n            $('#tabsleft').find('.pager .finish').removeClass('disabled');\n        } else {\n            $('#tabsleft').find('.pager .next').show();\n            $('#tabsleft').find('.pager .finish').hide();\n        }\n\n    }});\n\n\n    $('#tabsleft .finish').click(function() {\n        alert('Finished!, Starting over!');\n        $('#tabsleft').find(\"a[href*='tabsleft-tab1']\").trigger('click');\n    });\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/gmaps-scripts.js",
    "content": "var GoogleMaps = function () {\n\n    var mapBasic = function () {\n        new GMaps({\n            div: '#gmap_basic',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n    }\n\n    var mapMarker = function () {\n        var map = new GMaps({\n            div: '#gmap_marker',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n        map.addMarker({\n            lat: -12.043333,\n            lng: -77.03,\n            title: 'Lima',\n            details: {\n                database_id: 42,\n                author: 'HPNeo'\n            },\n            click: function (e) {\n                if (console.log) console.log(e);\n                alert('You clicked in this marker');\n            }\n        });\n        map.addMarker({\n            lat: -12.042,\n            lng: -77.028333,\n            title: 'Marker with InfoWindow',\n            infoWindow: {\n                content: 'HTML Content!!!!'\n            }\n        });\n    }\n\n    var mapPolylines = function() {\n        var map = new GMaps({\n            div: '#gmap_polylines',\n            lat: -12.043333,\n            lng: -77.028333,\n            click: function(e){\n              console.log(e);\n            }\n          });\n\n          path = [[-12.044012922866312, -77.02470665341184], [-12.05449279282314, -77.03024273281858], [-12.055122327623378, -77.03039293652341], [-12.075917129727586, -77.02764635449216], [-12.07635776902266, -77.02792530422971], [-12.076819390363665, -77.02893381481931], [-12.088527520066453, -77.0241058385925], [-12.090814532191756, -77.02271108990476]];\n\n          map.drawPolyline({\n            path: path,\n            strokeColor: '#131540',\n            strokeOpacity: 0.6,\n            strokeWeight: 6\n        });\n    }    \n    \n    var mapGeolocation = function() {\n        \n        var map = new GMaps({\n            div: '#gmap_geo',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n\n        GMaps.geolocate({\n          success: function(position) {\n            map.setCenter(position.coords.latitude, position.coords.longitude);\n          },\n          error: function(error) {\n            alert('Geolocation failed: '+error.message);\n          },\n          not_supported: function() {\n            alert(\"Your browser does not support geolocation\");\n          },\n          always: function() {\n            //alert(\"Geolocation Done!\");\n          }\n        });\n    }\n\n     var mapGeocoding = function() {\n\n        var map = new GMaps({\n            div: '#gmap_geocoding',\n            lat: -12.043333,\n            lng: -77.028333\n        });\n\n        var handleAction = function() {\n            var text = $.trim($('#gmap_geocoding_address').val());\n            GMaps.geocode({\n              address: text,\n              callback: function(results, status){\n                if(status=='OK'){\n                  var latlng = results[0].geometry.location;\n                  map.setCenter(latlng.lat(), latlng.lng());\n                  map.addMarker({\n                    lat: latlng.lat(),\n                    lng: latlng.lng()\n                  });\n                  App.scrollTo($('#gmap_geocoding'));\n                }\n              }\n            });\n        }\n\n        $('#gmap_geocoding_btn').click(function(e){\n            e.preventDefault();\n            handleAction();\n        });\n\n        $(\"#gmap_geocoding_address\").keypress(function(e){\n            var keycode = (e.keyCode ? e.keyCode : e.which);\n            if(keycode == '13') {\n                e.preventDefault();               \n                handleAction();\n            }           \n        });\n\n     }   \n\n     var mapPolygone = function() {\n        var map = new GMaps({\n            div: '#gmap_polygons',\n            lat: -12.043333,\n            lng: -77.028333\n          });\n\n        var path = [[-12.040397656836609,-77.03373871559225], [-12.040248585302038,-77.03993927003302],\n                                    [-12.050047116528843,-77.02448169303511],\n                                    [-12.044804866577001,-77.02154422636042]];\n\n         var polygon = map.drawPolygon({\n              paths: path,\n              strokeColor: '#BBD8E9',\n              strokeOpacity: 1,\n              strokeWeight: 3,\n              fillColor: '#BBD8E9',\n              fillOpacity: 0.6\n            });\n     }\n\n     var mapRoutes = function() {\n\n        var map = new GMaps({\n            div: '#gmap_routes',\n            lat: -12.043333,\n            lng: -77.028333\n          });\n          $('#gmap_routes_start').click(function(e){\n            e.preventDefault();\n            map.travelRoute({\n              origin: [-12.044012922866312, -77.02470665341184],\n              destination: [-12.090814532191756, -77.02271108990476],\n              travelMode: 'driving',\n              step: function(e){\n                $('#gmap_routes_instructions').append('<li>'+e.instructions+'</li>');\n                $('#gmap_routes_instructions li:eq('+e.step_number+')').delay(800*e.step_number).fadeIn(500, function(){\n                  map.setCenter(e.end_location.lat(), e.end_location.lng());\n                  map.drawPolyline({\n                    path: e.path,\n                    strokeColor: '#131540',\n                    strokeOpacity: 0.6,\n                    strokeWeight: 6\n                  });\n                  App.scrollTo($(this));\n                });\n              }\n            });\n         });   \n     }\n\n    return {\n        //main function to initiate map samples\n        init: function () {\n            mapBasic();\n            mapMarker();\n            mapGeolocation();\n            mapGeocoding();\n            mapPolylines();\n            mapPolygone();\n            mapRoutes();\n        }\n\n    };\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/gmaps.js",
    "content": "/*!\n * GMaps.js v0.2.30\n * http://hpneo.github.com/gmaps/\n *\n * Copyright 2012, Gustavo Leon\n * Released under the MIT License.\n */\n\nif(window.google && window.google.maps){\n\n  var GMaps = (function(global) {\n    \"use strict\";\n\n    var doc = document;\n    var getElementById = function(id, context) {\n      var ele\n      if('jQuery' in global && context){\n        ele = $(\"#\"+id.replace('#', ''), context)[0]\n      }else{\n        ele = doc.getElementById(id.replace('#', ''));\n      };\n      return ele;\n    };\n\n    var GMaps = function(options) {\n      var self = this;\n      var events_that_hide_context_menu = ['bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', 'resize', 'tilesloaded', 'zoom_changed'];\n      var events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'];\n\n      window.context_menu = {};\n\n      if (typeof(options.el) === 'string' || typeof(options.div) === 'string') {\n        this.el = getElementById(options.el || options.div, options.context);\n      } else {\n        this.el = options.el || options.div;\n      };\n      this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth;\n      this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight;\n\n      this.controls = [];\n      this.overlays = [];\n      this.layers = []; // array with kml and ft layers, can be as many\n      this.singleLayers = {}; // object with the other layers, only one per layer\n      this.markers = [];\n      this.polylines = [];\n      this.routes = [];\n      this.polygons = [];\n      this.infoWindow = null;\n      this.overlay_el = null;\n      this.zoom = options.zoom || 15;\n\n      var markerClusterer = options.markerClusterer;\n\n      //'Hybrid', 'Roadmap', 'Satellite' or 'Terrain'\n      var mapType;\n\n      if (options.mapType) {\n        mapType = google.maps.MapTypeId[options.mapType.toUpperCase()];\n      }\n      else {\n        mapType = google.maps.MapTypeId.ROADMAP;\n      }\n\n      var map_center = new google.maps.LatLng(options.lat, options.lng);\n\n      delete options.el;\n      delete options.lat;\n      delete options.lng;\n      delete options.mapType;\n      delete options.width;\n      delete options.height;\n      delete options.markerClusterer;\n\n      var zoomControlOpt = options.zoomControlOpt || {\n        style: 'DEFAULT',\n        position: 'TOP_LEFT'\n      };\n\n      var zoomControl = options.zoomControl || true,\n          zoomControlStyle = zoomControlOpt.style || 'DEFAULT',\n          zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT',\n          panControl = options.panControl || true,\n          mapTypeControl = options.mapTypeControl || true,\n          scaleControl = options.scaleControl || true,\n          streetViewControl = options.streetViewControl || true,\n          overviewMapControl = overviewMapControl || true;\n\n      var map_options = {};\n\n      var map_base_options = {\n        zoom: this.zoom,\n        center: map_center,\n        mapTypeId: mapType\n      };\n\n      var map_controls_options = {\n        panControl: panControl,\n        zoomControl: zoomControl,\n        zoomControlOptions: {\n          style: google.maps.ZoomControlStyle[zoomControlStyle], // DEFAULT LARGE SMALL\n          position: google.maps.ControlPosition[zoomControlPosition]\n        },\n        mapTypeControl: mapTypeControl,\n        scaleControl: scaleControl,\n        streetViewControl: streetViewControl,\n        overviewMapControl: overviewMapControl\n      }\n\n      if(options.disableDefaultUI != true)\n        map_base_options = extend_object(map_base_options, map_controls_options);\n\n      map_options = extend_object(map_base_options, options);\n\n      for(var i = 0; i < events_that_hide_context_menu.length; i++) {\n        delete map_options[events_that_hide_context_menu[i]];\n      }\n\n      for(var i = 0; i < events_that_doesnt_hide_context_menu.length; i++) {\n        delete map_options[events_that_doesnt_hide_context_menu[i]];\n      }\n\n      this.map = new google.maps.Map(this.el, map_options);\n\n      if(markerClusterer) {\n        this.markerClusterer = markerClusterer.apply(this, [this.map]);\n      }\n\n      // Context menus\n      var buildContextMenuHTML = function(control, e) {\n        var html = '';\n        var options = window.context_menu[control];\n        for (var i in options){\n          if (options.hasOwnProperty(i)){\n            var option = options[i];\n            html += '<li><a id=\"' + control + '_' + i + '\" href=\"#\">' +\n              option.title + '</a></li>';\n          }\n        }\n\n        if(!getElementById('gmaps_context_menu')) return;\n          \n        var context_menu_element = getElementById('gmaps_context_menu');\n        context_menu_element.innerHTML = html;\n\n        var context_menu_items = context_menu_element.getElementsByTagName('a');\n\n        var context_menu_items_count = context_menu_items.length;\n\n        for(var i = 0; i < context_menu_items_count; i++){\n          var context_menu_item = context_menu_items[i];\n\n          var assign_menu_item_action = function(ev){\n            ev.preventDefault();\n\n            options[this.id.replace(control + '_', '')].action.apply(self, [e]);\n            self.hideContextMenu();\n          };\n\n          google.maps.event.clearListeners(context_menu_item, 'click');\n          google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false);\n        }\n\n        var left = self.el.offsetLeft + e.pixel.x - 15;\n        var top = self.el.offsetTop + e.pixel.y - 15;\n\n        context_menu_element.style.left = left + \"px\";\n        context_menu_element.style.top = top + \"px\";\n\n        context_menu_element.style.display = 'block';\n      };\n\n      var buildContextMenu = function(control, e) {\n        if (control === 'marker') {\n          e.pixel = {};\n          var overlay = new google.maps.OverlayView();\n          overlay.setMap(self.map);\n          overlay.draw = function() {\n            var projection = overlay.getProjection();\n            var position = e.marker.getPosition();\n            e.pixel = projection.fromLatLngToContainerPixel(position);\n\n            buildContextMenuHTML(control, e);\n          };\n        }\n        else {\n          buildContextMenuHTML(control, e);\n        }\n      };\n\n      this.setContextMenu = function(options) {\n        window.context_menu[options.control] = {};\n\n        for (var i in options.options){\n          if (options.options.hasOwnProperty(i)){\n            var option = options.options[i];\n            window.context_menu[options.control][option.name] = {\n              title: option.title,\n              action: option.action\n            };\n          }\n        }\n\n        var ul = doc.createElement('ul');\n        \n        ul.id = 'gmaps_context_menu';\n        ul.style.display = 'none';\n        ul.style.position = 'absolute';\n        ul.style.minWidth = '100px';\n        ul.style.background = 'white';\n        ul.style.listStyle = 'none';\n        ul.style.padding = '8px';\n        ul.style.boxShadow = '2px 2px 6px #ccc';\n\n        doc.body.appendChild(ul);\n\n        var context_menu_element = getElementById('gmaps_context_menu');\n\n        google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) {\n          if(!ev.relatedTarget || !this.contains(ev.relatedTarget)){\n            window.setTimeout(function(){\n              context_menu_element.style.display = 'none';\n            }, 400);\n          }\n        }, false);\n      };\n\n      this.hideContextMenu = function() {\n        var context_menu_element = getElementById('gmaps_context_menu');\n        if(context_menu_element)\n          context_menu_element.style.display = 'none';\n      };\n\n      //Events\n\n      var setupListener = function(object, name) {\n        google.maps.event.addListener(object, name, function(e){\n          if(e == undefined) {\n            e = this;\n          }\n\n          options[name].apply(this, [e]);\n\n          self.hideContextMenu();\n        });\n      }\n\n      for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) {\n        var name = events_that_hide_context_menu[ev];\n\n        if (name in options) {\n          setupListener(this.map, name);\n        }\n      }\n\n      for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) {\n        var name = events_that_doesnt_hide_context_menu[ev];\n\n        if (name in options) {\n          setupListener(this.map, name);\n        }\n      }\n\n      google.maps.event.addListener(this.map, 'rightclick', function(e) {\n        if (options.rightclick) {\n          options.rightclick.apply(this, [e]);\n        }\n\n        if(window.context_menu['map'] != undefined) {\n          buildContextMenu('map', e);\n        }\n      });\n\n      this.refresh = function() {\n        google.maps.event.trigger(this.map, 'resize');\n      };\n\n      this.fitZoom = function() {\n        var latLngs = [];\n        var markers_length = this.markers.length;\n\n        for(var i=0; i < markers_length; i++) {\n          latLngs.push(this.markers[i].getPosition());\n        }\n\n        this.fitLatLngBounds(latLngs);\n      };\n\n      this.fitLatLngBounds = function(latLngs) {\n        var total = latLngs.length;\n        var bounds = new google.maps.LatLngBounds();\n\n        for(var i=0; i < total; i++) {\n          bounds.extend(latLngs[i]);\n        }\n\n        this.map.fitBounds(bounds);\n      };\n\n      // Map methods\n      this.setCenter = function(lat, lng, callback) {\n        this.map.panTo(new google.maps.LatLng(lat, lng));\n        if (callback) {\n          callback();\n        }\n      };\n\n      this.getElement = function() {\n        return this.el;\n      };\n\n      this.zoomIn = function(value) {\n        this.zoom = this.map.getZoom() + value;\n        this.map.setZoom(this.zoom);\n      };\n\n      this.zoomOut = function(value) {\n        this.zoom = this.map.getZoom() - value;\n        this.map.setZoom(this.zoom);\n      };\n\n      var native_methods = [];\n\n      for(var method in this.map){\n        if(typeof(this.map[method]) == 'function' && !this[method]){\n          native_methods.push(method);\n        }\n      }\n\n      for(var i=0; i < native_methods.length; i++){\n        (function(gmaps, scope, method_name) {\n          gmaps[method_name] = function(){\n            return scope[method_name].apply(scope, arguments);\n          };\n        })(this, this.map, native_methods[i]);\n      }\n\n      this.createControl = function(options) {\n        var control = doc.createElement('div');\n\n        control.style.cursor = 'pointer';\n        control.style.fontFamily = 'Arial, sans-serif';\n        control.style.fontSize = '13px';\n        control.style.boxShadow = 'rgba(0, 0, 0, 0.398438) 0px 2px 4px';\n\n        for(var option in options.style)\n          control.style[option] = options.style[option];\n\n        if(options.id) {\n          control.id = options.id;\n        }\n\n        if(options.classes) {\n          control.className = options.classes;\n        }\n\n        if(options.content) {\n          control.innerHTML = options.content;\n        }\n\n        for (var ev in options.events) {\n          (function(object, name) {\n            google.maps.event.addDomListener(object, name, function(){\n              options.events[name].apply(this, [this]);\n            });\n          })(control, ev);\n        }\n\n        control.index = 1;\n\n        return control;\n      };\n\n      this.addControl = function(options) {\n        var position = google.maps.ControlPosition[options.position.toUpperCase()];\n\n        delete options.position;\n\n        var control = this.createControl(options);\n        this.controls.push(control);\n        this.map.controls[position].push(control);\n\n        return control;\n      };\n\n      // Markers\n      this.createMarker = function(options) {\n        if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {\n          var self = this;\n          var details = options.details;\n          var fences = options.fences;\n          var outside = options.outside;\n\n          var base_options = {\n            position: new google.maps.LatLng(options.lat, options.lng),\n            map: null\n          };\n\n          delete options.lat;\n          delete options.lng;\n          delete options.fences;\n          delete options.outside;\n\n          var marker_options = extend_object(base_options, options);\n\n          var marker = new google.maps.Marker(marker_options);\n\n          marker.fences = fences;\n\n          if (options.infoWindow) {\n            marker.infoWindow = new google.maps.InfoWindow(options.infoWindow);\n\n            var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'];\n\n            for (var ev = 0; ev < info_window_events.length; ev++) {\n              (function(object, name) {\n                google.maps.event.addListener(object, name, function(e){\n                  if (options.infoWindow[name])\n                    options.infoWindow[name].apply(this, [e]);\n                });\n              })(marker.infoWindow, info_window_events[ev]);\n            }\n          }\n\n          var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed'];\n\n          var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'];\n\n          for (var ev = 0; ev < marker_events.length; ev++) {\n            (function(object, name) {\n              google.maps.event.addListener(object, name, function(){\n                if (options[name])\n                  options[name].apply(this, [this]);\n              });\n            })(marker, marker_events[ev]);\n          }\n\n          for (var ev = 0; ev < marker_events_with_mouse.length; ev++) {\n            (function(map, object, name) {\n              google.maps.event.addListener(object, name, function(me){\n                if(!me.pixel){\n                  me.pixel = map.getProjection().fromLatLngToPoint(me.latLng)\n                }\n                if (options[name])\n                  options[name].apply(this, [me]);\n              });\n            })(this.map, marker, marker_events_with_mouse[ev]);\n          }\n\n          google.maps.event.addListener(marker, 'click', function() {\n            this.details = details;\n\n            if (options.click) {\n              options.click.apply(this, [this]);\n            }\n\n            if (marker.infoWindow) {\n              self.hideInfoWindows();\n              marker.infoWindow.open(self.map, marker);\n            }\n          });\n\n          google.maps.event.addListener(marker, 'rightclick', function(e) {\n            e.marker = this;\n\n            if (options.rightclick) {\n              options.rightclick.apply(this, [e]);\n            }\n\n            if (window.context_menu['marker'] != undefined) {\n              buildContextMenu('marker', e);\n            }\n          });\n\n          if (options.dragend || marker.fences) {\n            google.maps.event.addListener(marker, 'dragend', function() {\n              if (marker.fences) {\n                self.checkMarkerGeofence(marker, function(m, f) {\n                  outside(m, f);\n                });\n              }\n            });\n          }\n\n          return marker;\n        }\n        else {\n          throw 'No latitude or longitude defined';\n        }\n      };\n\n      this.addMarker = function(options) {\n        var marker;\n        if(options.hasOwnProperty('gm_accessors_')) {\n          // Native google.maps.Marker object\n          marker = options;\n        }\n        else {\n          if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {\n            marker = this.createMarker(options);\n          }\n          else {\n            throw 'No latitude or longitude defined';\n          }\n        }\n\n        marker.setMap(this.map);\n\n        if(this.markerClusterer)\n          this.markerClusterer.addMarker(marker);\n\n        this.markers.push(marker);\n\n        return marker;\n      };\n\n      this.addMarkers = function(array) {\n        for (var i=0, marker; marker=array[i]; i++) {\n          this.addMarker(marker);\n        }\n        return this.markers;\n      };\n\n      this.hideInfoWindows = function() {\n        for (var i=0, marker; marker=this.markers[i]; i++){\n          if (marker.infoWindow){\n            marker.infoWindow.close();\n          }\n        }\n      };\n\n      this.removeMarker = function(marker) {\n        for(var i = 0; i < this.markers.length; i++) {\n          if(this.markers[i] === marker) {\n            this.markers[i].setMap(null);\n            this.markers.splice(i, 1);\n\n            break;\n          }\n        }\n\n        return marker;\n      };\n\n      this.removeMarkers = function(collection) {\n        var collection = (collection || this.markers);\n          \n        for(var i=0;i < this.markers.length; i++){\n          if(this.markers[i] === collection[i])\n            this.markers[i].setMap(null);\n        }\n\n        var new_markers = [];\n\n        for(var i=0;i < this.markers.length; i++){\n          if(this.markers[i].getMap() != null)\n            new_markers.push(this.markers[i]);\n        }\n\n        this.markers = new_markers;\n      };\n\n      // Overlays\n\n      this.drawOverlay = function(options) {\n        var overlay = new google.maps.OverlayView();\n        overlay.setMap(self.map);\n\n        var auto_show = true;\n\n        if(options.auto_show != null)\n          auto_show = options.auto_show;\n\n        overlay.onAdd = function() {\n          var el = doc.createElement('div');\n          el.style.borderStyle = \"none\";\n          el.style.borderWidth = \"0px\";\n          el.style.position = \"absolute\";\n          el.style.zIndex = 100;\n          el.innerHTML = options.content;\n\n          overlay.el = el;\n\n          var panes = this.getPanes();\n          if (!options.layer) {\n            options.layer = 'overlayLayer';\n          }\n          var overlayLayer = panes[options.layer];\n          overlayLayer.appendChild(el);\n\n          var stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown'];\n\n          for (var ev = 0; ev < stop_overlay_events.length; ev++) {\n            (function(object, name) {\n              google.maps.event.addDomListener(object, name, function(e){\n                if(navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {\n                  e.cancelBubble = true;\n                  e.returnValue = false;\n                }\n                else {\n                  e.stopPropagation();\n                }\n              });\n            })(el, stop_overlay_events[ev]);\n          }\n\n          google.maps.event.trigger(this, 'ready');\n        };\n\n        overlay.draw = function() {\n          var projection = this.getProjection();\n          var pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng));\n\n          options.horizontalOffset = options.horizontalOffset || 0;\n          options.verticalOffset = options.verticalOffset || 0;\n\n          var el = overlay.el;\n          var content = el.children[0];\n\n          var content_height = content.clientHeight;\n          var content_width = content.clientWidth;\n\n          switch (options.verticalAlign) {\n            case 'top':\n              el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px';\n              break;\n            default:\n            case 'middle':\n              el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px';\n              break;\n            case 'bottom':\n              el.style.top = (pixel.y + options.verticalOffset) + 'px';\n              break;\n          }\n\n          switch (options.horizontalAlign) {\n            case 'left':\n              el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px';\n              break;\n            default:\n            case 'center':\n              el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px';\n              break;\n            case 'right':\n              el.style.left = (pixel.x + options.horizontalOffset) + 'px';\n              break;\n          }\n\n          el.style.display = auto_show ? 'block' : 'none';\n\n          if(!auto_show){\n            options.show.apply(this, [el]);\n          }\n        };\n\n        overlay.onRemove = function() {\n          var el = overlay.el;\n\n          if(options.remove){\n            options.remove.apply(this, [el]);\n          }\n          else{\n            overlay.el.parentNode.removeChild(overlay.el);\n            overlay.el = null;\n          }\n        };\n\n        self.overlays.push(overlay);\n        return overlay;\n      };\n\n      this.removeOverlay = function(overlay) {\n        for(var i = 0; i < this.overlays.length; i++) {\n          if(this.overlays[i] === overlay) {\n            this.overlays[i].setMap(null);\n            this.overlays.splice(i, 1);\n\n            break;\n          }\n        }\n      };\n\n      this.removeOverlays = function() {\n        for (var i=0, item; item=self.overlays[i]; i++){\n          item.setMap(null);\n        }\n        self.overlays = [];\n      };\n\n      // Geometry\n\n      this.drawPolyline = function(options) {\n        var path = [];\n        var points = options.path;\n\n        if (points.length){\n          if (points[0][0] === undefined){\n            path = points;\n          }\n          else {\n            for (var i=0, latlng; latlng=points[i]; i++){\n              path.push(new google.maps.LatLng(latlng[0], latlng[1]));\n            }\n          }\n        }\n\n        var polyline_options = {\n          map: this.map,\n          path: path,\n          strokeColor: options.strokeColor,\n          strokeOpacity: options.strokeOpacity,\n          strokeWeight: options.strokeWeight,\n          geodesic: options.geodesic,\n          clickable: true,\n          editable: false,\n          visible: true\n        };\n\n        if(options.hasOwnProperty(\"clickable\"))\n          polyline_options.clickable = options.clickable;\n\n        if(options.hasOwnProperty(\"editable\"))\n          polyline_options.editable = options.editable;\n\n        if(options.hasOwnProperty(\"icons\"))\n          polyline_options.icons = options.icons;\n\n        if(options.hasOwnProperty(\"zIndex\"))\n          polyline_options.zIndex = options.zIndex;\n\n        var polyline = new google.maps.Polyline(polyline_options);\n\n        var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polyline_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polyline, polyline_events[ev]);\n        }\n\n        this.polylines.push(polyline);\n\n        return polyline;\n      };\n\n      this.removePolyline = function(polyline) {\n        for(var i = 0; i < this.polylines.length; i++) {\n          if(this.polylines[i] === polyline) {\n            this.polylines[i].setMap(null);\n            this.polylines.splice(i, 1);\n            \n            break;\n          }\n        }\n      };\n\n      this.removePolylines = function() {\n        for (var i=0, item; item=self.polylines[i]; i++){\n          item.setMap(null);\n        }\n        self.polylines = [];\n      };\n\n      this.drawCircle = function(options) {\n        options =  extend_object({\n          map: this.map,\n          center: new google.maps.LatLng(options.lat, options.lng)\n        }, options);\n\n        delete options.lat;\n        delete options.lng;\n        var polygon = new google.maps.Circle(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n\n        this.polygons.push(polygon);\n\n        return polygon;\n      };\n      \n      this.drawRectangle = function(options) {\n        options = extend_object({\n          map: this.map\n        }, options);\n\n        var latLngBounds = new google.maps.LatLngBounds(\n          new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]),\n          new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1])\n        );\n        \n        options.bounds = latLngBounds;\n\n        var polygon = new google.maps.Rectangle(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n        \n        this.polygons.push(polygon);\n        \n        return polygon;\n      };\n\n      this.drawPolygon = function(options) {\n        var useGeoJSON = false;\n        if(options.hasOwnProperty(\"useGeoJSON\"))\n          useGeoJSON = options.useGeoJSON;\n\n        delete options.useGeoJSON;\n\n        options = extend_object({\n          map: this.map\n        }, options);\n\n        if(useGeoJSON == false)\n          options.paths = [options.paths.slice(0)];\n\n        if(options.paths.length > 0) {\n          if(options.paths[0].length > 0) {\n            options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON));\n          }\n        }\n\n        var polygon = new google.maps.Polygon(options);\n\n        var polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n        for (var ev = 0; ev < polygon_events.length; ev++) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              if (options[name])\n                options[name].apply(this, [e]);\n            });\n          })(polygon, polygon_events[ev]);\n        }\n\n        this.polygons.push(polygon);\n\n        return polygon;\n      };\n\n      this.removePolygon = function(polygon) {\n        for(var i = 0; i < this.polygons.length; i++) {\n          if(this.polygons[i] === polygon) {\n            this.polygons[i].setMap(null);\n            this.polygons.splice(i, 1);\n            \n            break;\n          }\n        }\n      };\n\n      this.removePolygons = function() {\n        for (var i=0, item; item=self.polygons[i]; i++){\n          item.setMap(null);\n        }\n        self.polygons = [];\n      };\n\n      // Fusion Tables\n\n      this.getFromFusionTables = function(options) {\n        var events = options.events;\n\n        delete options.events;\n\n        var fusion_tables_options = options;\n\n        var layer = new google.maps.FusionTablesLayer(fusion_tables_options);\n\n        for (var ev in events) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              events[name].apply(this, [e]);\n            });\n          })(layer, ev);\n        }\n\n        this.layers.push(layer);\n\n        return layer;\n      };\n\n      this.loadFromFusionTables = function(options) {\n        var layer = this.getFromFusionTables(options);\n        layer.setMap(this.map);\n\n        return layer;\n      };\n\n      // KML\n\n      this.getFromKML = function(options) {\n        var url = options.url;\n        var events = options.events;\n\n        delete options.url;\n        delete options.events;\n\n        var kml_options = options;\n\n        var layer = new google.maps.KmlLayer(url, kml_options);\n\n        for (var ev in events) {\n          (function(object, name) {\n            google.maps.event.addListener(object, name, function(e){\n              events[name].apply(this, [e]);\n            });\n          })(layer, ev);\n        }\n\n        this.layers.push(layer);\n\n        return layer;\n      };\n\n      this.loadFromKML = function(options) {\n        var layer = this.getFromKML(options);\n        layer.setMap(this.map);\n\n        return layer;\n      };\n\n      // Routes\n\n      var travelMode, unitSystem;\n      this.getRoutes = function(options) {\n        switch (options.travelMode) {\n        case 'bicycling':\n          travelMode = google.maps.TravelMode.BICYCLING;\n          break;\n        case 'transit':\n          travelMode = google.maps.TravelMode.TRANSIT;\n          break;\n        case 'driving':\n          travelMode = google.maps.TravelMode.DRIVING;\n          break;\n        // case 'walking':\n        default:\n          travelMode = google.maps.TravelMode.WALKING;\n          break;\n        }\n\n        if (options.unitSystem === 'imperial') {\n          unitSystem = google.maps.UnitSystem.IMPERIAL;\n        }\n        else {\n          unitSystem = google.maps.UnitSystem.METRIC;\n        }\n\n        var base_options = {\n          avoidHighways: false,\n          avoidTolls: false,\n          optimizeWaypoints: false,\n          waypoints: []\n        };\n\n        var request_options =  extend_object(base_options, options);\n\n        request_options.origin = new google.maps.LatLng(options.origin[0], options.origin[1]);\n        request_options.destination = new google.maps.LatLng(options.destination[0], options.destination[1]);\n        request_options.travelMode = travelMode;\n        request_options.unitSystem = unitSystem;\n\n        delete request_options.callback;\n\n        var self = this;\n        var service = new google.maps.DirectionsService();\n\n        service.route(request_options, function(result, status) {\n          if (status === google.maps.DirectionsStatus.OK) {\n            for (var r in result.routes) {\n              if (result.routes.hasOwnProperty(r)) {\n                self.routes.push(result.routes[r]);\n              }\n            }\n          }\n          if (options.callback) {\n            options.callback(self.routes);\n          }\n        });\n      };\n\n      this.removeRoutes = function() {\n        this.routes = [];\n      };\n\n      this.getElevations = function(options) {\n        options = extend_object({\n          locations: [],\n          path : false,\n          samples : 256\n        }, options);\n\n        if(options.locations.length > 0) {\n          if(options.locations[0].length > 0) {\n            options.locations = array_flat(array_map([options.locations], arrayToLatLng,  false));\n          }\n        }\n\n        var callback = options.callback;\n        delete options.callback;\n\n        var service = new google.maps.ElevationService();\n\n        //location request\n        if (!options.path) {\n          delete options.path;\n          delete options.samples;\n          service.getElevationForLocations(options, function(result, status){\n            if (callback && typeof(callback) === \"function\") {\n              callback(result, status);\n            }\n          });\n        //path request\n        } else {\n          var pathRequest = {\n            path : options.locations,\n            samples : options.samples\n          };\n\n          service.getElevationAlongPath(pathRequest, function(result, status){\n           if (callback && typeof(callback) === \"function\") {\n              callback(result, status);\n            }\n          });\n        }\n      };\n\n      // Alias for the method \"drawRoute\"\n      this.cleanRoute = this.removePolylines;\n\n      this.drawRoute = function(options) {\n        var self = this;\n        this.getRoutes({\n          origin: options.origin,\n          destination: options.destination,\n          travelMode: options.travelMode,\n          waypoints: options.waypoints,\n          unitSystem: options.unitSystem,\n          callback: function(e) {\n            if (e.length > 0) {\n              self.drawPolyline({\n                path: e[e.length - 1].overview_path,\n                strokeColor: options.strokeColor,\n                strokeOpacity: options.strokeOpacity,\n                strokeWeight: options.strokeWeight\n              });\n              if (options.callback) {\n                options.callback(e[e.length - 1]);\n              }\n            }\n          }\n        });\n      };\n\n      this.travelRoute = function(options) {\n        if (options.origin && options.destination) {\n          this.getRoutes({\n            origin: options.origin,\n            destination: options.destination,\n            travelMode: options.travelMode,\n            waypoints : options.waypoints,\n            callback: function(e) {\n              //start callback\n              if (e.length > 0 && options.start) {\n                options.start(e[e.length - 1]);\n              }\n\n              //step callback\n              if (e.length > 0 && options.step) {\n                var route = e[e.length - 1];\n                if (route.legs.length > 0) {\n                  var steps = route.legs[0].steps;\n                  for (var i=0, step; step=steps[i]; i++) {\n                    step.step_number = i;\n                    options.step(step, (route.legs[0].steps.length - 1));\n                  }\n                }\n              }\n\n              //end callback\n              if (e.length > 0 && options.end) {\n                 options.end(e[e.length - 1]);\n              }\n            }\n          });\n        }\n        else if (options.route) {\n          if (options.route.legs.length > 0) {\n            var steps = options.route.legs[0].steps;\n            for (var i=0, step; step=steps[i]; i++) {\n              step.step_number = i;\n              options.step(step);\n            }\n          }\n        }\n      };\n\n      this.drawSteppedRoute = function(options) {\n        if (options.origin && options.destination) {\n          this.getRoutes({\n            origin: options.origin,\n            destination: options.destination,\n            travelMode: options.travelMode,\n            waypoints : options.waypoints,\n            callback: function(e) {\n              //start callback\n              if (e.length > 0 && options.start) {\n                options.start(e[e.length - 1]);\n              }\n\n              //step callback\n              if (e.length > 0 && options.step) {\n                var route = e[e.length - 1];\n                if (route.legs.length > 0) {\n                  var steps = route.legs[0].steps;\n                  for (var i=0, step; step=steps[i]; i++) {\n                    step.step_number = i;\n                    self.drawPolyline({\n                      path: step.path,\n                      strokeColor: options.strokeColor,\n                      strokeOpacity: options.strokeOpacity,\n                      strokeWeight: options.strokeWeight\n                    });\n                    options.step(step, (route.legs[0].steps.length - 1));\n                  }\n                }\n              }\n\n              //end callback\n              if (e.length > 0 && options.end) {\n                 options.end(e[e.length - 1]);\n              }\n            }\n          });\n        }\n        else if (options.route) {\n          if (options.route.legs.length > 0) {\n            var steps = options.route.legs[0].steps;\n            for (var i=0, step; step=steps[i]; i++) {\n              step.step_number = i;\n              self.drawPolyline({\n                path: step.path,\n                strokeColor: options.strokeColor,\n                strokeOpacity: options.strokeOpacity,\n                strokeWeight: options.strokeWeight\n              });\n              options.step(step);\n            }\n          }\n        }\n      };\n\n      // Geofence\n\n      this.checkGeofence = function(lat, lng, fence) {\n        return fence.containsLatLng(new google.maps.LatLng(lat, lng));\n      };\n\n      this.checkMarkerGeofence = function(marker, outside_callback) {\n        if (marker.fences) {\n          for (var i=0, fence; fence=marker.fences[i]; i++) {\n            var pos = marker.getPosition();\n            if (!self.checkGeofence(pos.lat(), pos.lng(), fence)) {\n              outside_callback(marker, fence);\n            }\n          }\n        }\n      };\n\n      // Layers\n\n      this.addLayer = function(layerName, options) {\n        //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places'];\n        options = options || {};\n        var layer;\n          \n        switch(layerName) {\n          case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); \n            break;\n          case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); \n            break;\n          case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); \n            break;\n          case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); \n            break;\n          case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); \n            break;\n          case 'panoramio': \n              this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer();\n              layer.setTag(options.filter);\n              delete options.filter;\n\n              //click event\n              if(options.click) {\n                google.maps.event.addListener(layer, 'click', function(event) {\n                  options.click(event);\n                  delete options.click;\n                });\n              }\n            break;\n            case 'places': \n              this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map);\n\n              //search and  nearbySearch callback, Both are the same\n              if(options.search || options.nearbySearch) {\n                var placeSearchRequest  = {\n                  bounds : options.bounds || null,\n                  keyword : options.keyword || null,\n                  location : options.location || null,\n                  name : options.name || null,\n                  radius : options.radius || null,\n                  rankBy : options.rankBy || null,\n                  types : options.types || null\n                };\n\n                if(options.search) {\n                  layer.search(placeSearchRequest, options.search);\n                }\n\n                if(options.nearbySearch) {\n                  layer.nearbySearch(placeSearchRequest, options.nearbySearch);\n                }\n              }\n\n              //textSearch callback\n              if(options.textSearch) {\n                var textSearchRequest  = {\n                  bounds : options.bounds || null,\n                  location : options.location || null,\n                  query : options.query || null,\n                  radius : options.radius || null\n                };\n                \n                layer.textSearch(textSearchRequest, options.textSearch);\n              }\n            break;\n        }\n\n        if(layer !== undefined) {\n          if(typeof layer.setOptions == 'function') {\n            layer.setOptions(options);\n          }\n          if(typeof layer.setMap == 'function') {\n            layer.setMap(this.map);\n          }\n\n          return layer;\n        }\n      };\n\n      this.removeLayer = function(layerName) {\n        if(this.singleLayers[layerName] !== undefined) {\n           this.singleLayers[layerName].setMap(null);\n           delete this.singleLayers[layerName];\n        }\n      };\n      \n      // Static Maps\n\n      this.toImage = function(options) {\n        var options = options || {};\n        var static_map_options = {};\n        static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight];\n        static_map_options['lat'] = this.getCenter().lat();\n        static_map_options['lng'] = this.getCenter().lng();\n\n        if(this.markers.length > 0) {\n          static_map_options['markers'] = [];\n          for(var i=0; i < this.markers.length; i++) {\n            static_map_options['markers'].push({\n              lat: this.markers[i].getPosition().lat(),\n              lng: this.markers[i].getPosition().lng()\n            });\n          }\n        }\n\n        if(this.polylines.length > 0) {\n          var polyline = this.polylines[0];\n          static_map_options['polyline'] = {};\n          static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath());\n          static_map_options['polyline']['strokeColor'] = polyline.strokeColor\n          static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity\n          static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight\n        }\n        \n        return GMaps.staticMapURL(static_map_options);\n      };\n\n      // Map Types\n\n      this.addMapType = function(mapTypeId, options) {\n        if(options.hasOwnProperty(\"getTileUrl\") && typeof(options[\"getTileUrl\"]) == \"function\") {\n          options.tileSize = options.tileSize || new google.maps.Size(256, 256);\n          \n          var mapType = new google.maps.ImageMapType(options);\n\n          this.map.mapTypes.set(mapTypeId, mapType);\n        }\n        else {\n          throw \"'getTileUrl' function required\";\n        }\n      };\n\n      this.addOverlayMapType = function(options) {\n        if(options.hasOwnProperty(\"getTile\") && typeof(options[\"getTile\"]) == \"function\") {\n          var overlayMapTypeIndex = options.index;\n\n          delete options.index;\n\n          this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options);\n        }\n        else {\n          throw \"'getTile' function required\";\n        }\n      };\n\n      this.removeOverlayMapType = function(overlayMapTypeIndex) {\n        this.map.overlayMapTypes.removeAt(overlayMapTypeIndex);\n      };\n\n      // Styles\n      \n      this.addStyle = function(options) {       \n        var styledMapType = new google.maps.StyledMapType(options.styles, options.styledMapName);\n        \n        this.map.mapTypes.set(options.mapTypeId, styledMapType);\n      };\n      \n      this.setStyle = function(mapTypeId) {     \n        this.map.setMapTypeId(mapTypeId);\n      };\n\n      // StreetView\n\n      this.createPanorama = function(streetview_options) {\n        if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) {\n          streetview_options.lat = this.getCenter().lat();\n          streetview_options.lng = this.getCenter().lng();\n        }\n\n        this.panorama = GMaps.createPanorama(streetview_options);\n\n        this.map.setStreetView(this.panorama);\n\n        return this.panorama;\n      };\n    };\n\n    GMaps.createPanorama = function(options) {\n      var el = getElementById(options.el, options.context);\n\n      options.position = new google.maps.LatLng(options.lat, options.lng);\n\n      delete options.el;\n      delete options.context;\n      delete options.lat;\n      delete options.lng;\n\n      var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'];\n\n      var streetview_options = extend_object({visible : true}, options);\n\n      for(var i = 0; i < streetview_events.length; i++) {\n        delete streetview_options[streetview_events[i]];\n      }\n\n      var panorama = new google.maps.StreetViewPanorama(el, streetview_options);\n\n      for(var i = 0; i < streetview_events.length; i++) {\n        (function(object, name) {\n          google.maps.event.addListener(object, name, function(){\n            if (options[name]) {\n              options[name].apply(this);\n            }\n          });\n        })(panorama, streetview_events[i]);\n      }\n\n      return panorama;\n    };\n\n    GMaps.Route = function(options) {\n      this.map = options.map;\n      this.route = options.route;\n      this.step_count = 0;\n      this.steps = this.route.legs[0].steps;\n      this.steps_length = this.steps.length;\n\n      this.polyline = this.map.drawPolyline({\n        path: new google.maps.MVCArray(),\n        strokeColor: options.strokeColor,\n        strokeOpacity: options.strokeOpacity,\n        strokeWeight: options.strokeWeight\n      }).getPath();\n\n      this.back = function() {\n        if (this.step_count > 0) {\n          this.step_count--;\n          var path = this.route.legs[0].steps[this.step_count].path;\n          for (var p in path){\n            if (path.hasOwnProperty(p)){\n              this.polyline.pop();\n            }\n          }\n        }\n      };\n\n      this.forward = function() {\n        if (this.step_count < this.steps_length) {\n          var path = this.route.legs[0].steps[this.step_count].path;\n          for (var p in path){\n            if (path.hasOwnProperty(p)){\n              this.polyline.push(path[p]);\n            }\n          }\n          this.step_count++;\n        }\n      };\n    };\n\n    // Geolocation (Modern browsers only)\n    GMaps.geolocate = function(options) {\n      var complete_callback = options.always || options.complete;\n\n      if (navigator.geolocation) {\n        navigator.geolocation.getCurrentPosition(function(position) {\n          options.success(position);\n\n          if (complete_callback) {\n            complete_callback();\n          }\n        }, function(error) {\n          options.error(error);\n\n          if (complete_callback) {\n            complete_callback();\n          }\n        }, options.options);\n      }\n      else {\n        options.not_supported();\n\n        if (complete_callback) {\n          complete_callback();\n        }\n      }\n    };\n\n    // Geocoding\n    GMaps.geocode = function(options) {\n      this.geocoder = new google.maps.Geocoder();\n      var callback = options.callback;\n      if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) {\n        options.latLng = new google.maps.LatLng(options.lat, options.lng);\n      }\n\n      delete options.lat;\n      delete options.lng;\n      delete options.callback;\n      this.geocoder.geocode(options, function(results, status) {\n        callback(results, status);\n      });\n    };\n\n    // Static maps\n    GMaps.staticMapURL = function(options){\n      var parameters = [];\n      var data;\n\n      var static_root = '../../../../maps.googleapis.com/maps/api/staticmap';\n      if (options.url){\n        static_root = options.url;\n        delete options.url;\n      }\n      static_root += '?';\n\n      var markers = options.markers;\n      delete options.markers;\n      if (!markers && options.marker){\n        markers = [options.marker];\n        delete options.marker;\n      }\n\n      var polyline = options.polyline;\n      delete options.polyline;\n\n      /** Map options **/\n      if (options.center){\n        parameters.push('center=' + options.center);\n        delete options.center;\n      }\n      else if (options.address){\n        parameters.push('center=' + options.address);\n        delete options.address;\n      }\n      else if (options.lat){\n        parameters.push(['center=', options.lat, ',', options.lng].join(''));\n        delete options.lat;\n        delete options.lng;\n      }\n      else if (options.visible){\n        var visible = encodeURI(options.visible.join('|'));\n        parameters.push('visible=' + visible);\n      }\n\n      var size = options.size;\n      if (size){\n        if (size.join){\n          size = size.join('x');\n        }\n        delete options.size;\n      }\n      else {\n        size = '630x300';\n      }\n      parameters.push('size=' + size);\n\n      if (!options.zoom){\n        options.zoom = 15;\n      }\n\n      var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true;\n      delete options.sensor;\n      parameters.push('sensor=' + sensor);\n\n      for (var param in options){\n        if (options.hasOwnProperty(param)){\n          parameters.push(param + '=' + options[param]);\n        }\n      }\n\n      /** Markers **/\n      if (markers){\n        var marker, loc;\n\n        for (var i=0; data=markers[i]; i++){\n          marker = [];\n\n          if (data.size && data.size !== 'normal'){\n            marker.push('size:' + data.size);\n          }\n          else if (data.icon){\n            marker.push('icon:' + encodeURI(data.icon));\n          }\n\n          if (data.color){\n            marker.push('color:' + data.color.replace('#', '0x'));\n          }\n\n          if (data.label){\n            marker.push('label:' + data.label[0].toUpperCase());\n          }\n\n          loc = (data.address ? data.address : data.lat + ',' + data.lng);\n\n          if (marker.length || i === 0){\n            marker.push(loc);\n            marker = marker.join('|');\n            parameters.push('markers=' + encodeURI(marker));\n          }\n          // New marker without styles\n          else {\n            marker = parameters.pop() + encodeURI('|' + loc);\n            parameters.push(marker);\n          }\n        }\n      }\n\n      /** Polylines **/\n      function parseColor(color, opacity){\n        if (color[0] === '#'){\n          color = color.replace('#', '0x');\n\n          if (opacity){\n            opacity = parseFloat(opacity);\n            opacity = Math.min(1, Math.max(opacity, 0));\n            if (opacity === 0){\n              return '0x00000000';\n            }\n            opacity = (opacity * 255).toString(16);\n            if (opacity.length === 1){\n              opacity += opacity;\n            }\n\n            color = color.slice(0,8) + opacity;\n          }\n        }\n        return color;\n      }\n\n      if (polyline){\n        data = polyline;\n        polyline = [];\n\n        if (data.strokeWeight){\n          polyline.push('weight:' + parseInt(data.strokeWeight, 10));\n        }\n\n        if (data.strokeColor){\n          var color = parseColor(data.strokeColor, data.strokeOpacity);\n          polyline.push('color:' + color);\n        }\n\n        if (data.fillColor){\n          var fillcolor = parseColor(data.fillColor, data.fillOpacity);\n          polyline.push('fillcolor:' + fillcolor);\n        }\n\n        var path = data.path;\n        if (path.join){\n          for (var j=0, pos; pos=path[j]; j++){\n            polyline.push(pos.join(','));\n          }\n        }\n        else {\n          polyline.push('enc:' + path);\n        }\n\n        polyline = polyline.join('|');\n        parameters.push('path=' + encodeURI(polyline));\n      }\n\n      parameters = parameters.join('&');\n      return static_root + parameters;\n    };\n\n    //==========================\n    // Polygon containsLatLng\n    // https://github.com/tparkin/Google-Maps-Point-in-Polygon\n    // Poygon getBounds extension - google-maps-extensions\n    // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js\n    if (!google.maps.Polygon.prototype.getBounds) {\n      google.maps.Polygon.prototype.getBounds = function(latLng) {\n        var bounds = new google.maps.LatLngBounds();\n        var paths = this.getPaths();\n        var path;\n\n        for (var p = 0; p < paths.getLength(); p++) {\n          path = paths.getAt(p);\n          for (var i = 0; i < path.getLength(); i++) {\n            bounds.extend(path.getAt(i));\n          }\n        }\n\n        return bounds;\n      };\n    }\n\n    if (!google.maps.Polygon.prototype.containsLatLng) {\n      // Polygon containsLatLng - method to determine if a latLng is within a polygon\n      google.maps.Polygon.prototype.containsLatLng = function(latLng) {\n        // Exclude points outside of bounds as there is no way they are in the poly\n        var bounds = this.getBounds();\n\n        if (bounds !== null && !bounds.contains(latLng)) {\n          return false;\n        }\n\n        // Raycast point in polygon method\n        var inPoly = false;\n\n        var numPaths = this.getPaths().getLength();\n        for (var p = 0; p < numPaths; p++) {\n          var path = this.getPaths().getAt(p);\n          var numPoints = path.getLength();\n          var j = numPoints - 1;\n\n          for (var i = 0; i < numPoints; i++) {\n            var vertex1 = path.getAt(i);\n            var vertex2 = path.getAt(j);\n\n            if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {\n              if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {\n                inPoly = !inPoly;\n              }\n            }\n\n            j = i;\n          }\n        }\n\n        return inPoly;\n      };\n    }\n\n    google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {\n      return this.contains(latLng);\n    };\n\n    google.maps.Marker.prototype.setFences = function(fences) {\n      this.fences = fences;\n    };\n\n    google.maps.Marker.prototype.addFence = function(fence) {\n      this.fences.push(fence);\n    };\n\n    return GMaps;\n  }(this));\n\n  var coordsToLatLngs = function(coords, useGeoJSON) {\n    var first_coord = coords[0];\n    var second_coord = coords[1];\n\n    if(useGeoJSON) {\n      first_coord = coords[1];\n      second_coord = coords[0];\n    }\n\n    return new google.maps.LatLng(first_coord, second_coord);\n  };\n\n  var arrayToLatLng = function(coords, useGeoJSON) {\n    for(var i=0; i < coords.length; i++) {\n      if(coords[i].length > 0 && typeof(coords[i][0]) != \"number\") {\n        coords[i] = arrayToLatLng(coords[i], useGeoJSON);\n      }\n      else {\n        coords[i] = coordsToLatLngs(coords[i], useGeoJSON);\n      }\n    }\n\n    return coords;\n  };\n\n  var extend_object = function(obj, new_obj) {\n    if(obj === new_obj) return obj;\n\n    for(var name in new_obj) {\n      obj[name] = new_obj[name];\n    }\n\n    return obj;\n  };\n\n  var replace_object = function(obj, replace) {\n    if(obj === replace) return obj;\n\n    for(var name in replace) {\n      if(obj[name] != undefined)\n        obj[name] = replace[name];\n    }\n\n    return obj;\n  };\n\n  var array_map = function(array, callback) {\n    var original_callback_params = Array.prototype.slice.call(arguments, 2);\n\n    if (Array.prototype.map && array.map === Array.prototype.map) {\n      return Array.prototype.map.call(array, function(item) {\n        callback_params = original_callback_params;\n        callback_params.splice(0, 0, item);\n\n        return callback.apply(this, callback_params);\n      });\n    }\n    else {\n      var array_return = [];\n      var array_length = array.length;\n\n      for(var i = 0; i < array_length; i++) {\n        callback_params = original_callback_params;\n        callback_params = callback_params.splice(0, 0, array[i]);\n        array_return.push(callback.apply(this, callback_params));\n      }\n\n      return array_return;\n    }\n  };\n\n  var array_flat = function(array) {\n    new_array = [];\n\n    for(var i=0; i < array.length; i++) {\n      new_array = new_array.concat(array[i]);\n    }\n\n    return new_array;\n  };\n\n}"
  },
  {
    "path": "target/mongo/jslib/bs_js/gritter.js",
    "content": "var Gritter = function () {\n\n    $('#add-sticky').click(function(){\n\n        var unique_id = $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a sticky notice!',\n            // (string | mandatory) the text inside the notification\n            text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: true,\n            // (int | optional) the time you want it to be alive for before fading out\n            time: '',\n            // (string | optional) the class name you want to apply to that specific message\n            class_name: 'my-sticky-class'\n        });\n\n        // You can have it return a unique id, this can be used to manually remove it later using\n        /*\n         setTimeout(function(){\n\n         $.gritter.remove(unique_id, {\n         fade: true,\n         speed: 'slow'\n         });\n\n         }, 6000)\n         */\n\n        return false;\n\n    });\n\n    $('#add-regular').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a regular notice!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (int | optional) the time you want it to be alive for before fading out\n            time: ''\n        });\n\n        return false;\n\n    });\n\n    $('#add-max').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice with a max of 3 on screen at one time!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'img/avatar-mini.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (function) before the gritter notice is opened\n            before_open: function(){\n                if($('.gritter-item-wrapper').length == 3)\n                {\n                    // Returning false prevents a new gritter from opening\n                    return false;\n                }\n            }\n        });\n\n        return false;\n\n    });\n\n    $('#add-without-image').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice without an image!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\" style=\"color:#ccc\">magnis dis parturient</a> montes, nascetur ridiculus mus.'\n        });\n\n        return false;\n    });\n\n    $('#add-gritter-light').click(function(){\n\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a light notification',\n            // (string | mandatory) the text inside the notification\n            text: 'Just add a \"gritter-light\" class_name to your $.gritter.add or globally to $.gritter.options.class_name',\n            class_name: 'gritter-light'\n        });\n\n        return false;\n    });\n\n    $(\"#remove-all\").click(function(){\n\n        $.gritter.removeAll();\n        return false;\n\n    });\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/home-chartjs.js",
    "content": "var Script = function () {\n\n\n    var doughnutData = [\n        {\n            value: 30,\n            color:\"#F7464A\"\n        },\n        {\n            value : 50,\n            color : \"#46BFBD\"\n        },\n        {\n            value : 100,\n            color : \"#FDB45C\"\n        },\n        {\n            value : 40,\n            color : \"#949FB1\"\n        },\n        {\n            value : 120,\n            color : \"#4D5360\"\n        }\n\n    ];\n    var lineChartData = {\n        labels : [\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\n        datasets : [\n            {\n                fillColor : \"rgba(220,220,220,0.5)\",\n                strokeColor : \"rgba(220,220,220,1)\",\n                pointColor : \"rgba(220,220,220,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [65,59,90,81,56,55,40]\n            },\n            {\n                fillColor : \"rgba(151,187,205,0.5)\",\n                strokeColor : \"rgba(151,187,205,1)\",\n                pointColor : \"rgba(151,187,205,1)\",\n                pointStrokeColor : \"#fff\",\n                data : [28,48,40,19,96,27,100]\n            }\n        ]\n\n    };\n\n    new Chart(document.getElementById(\"doughnut\").getContext(\"2d\")).Doughnut(doughnutData);\n    new Chart(document.getElementById(\"line\").getContext(\"2d\")).Line(lineChartData);\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/home-page-calender.js",
    "content": "var Script = function () {\n\n//    calender\n\n    var date = new Date();\n    var d = date.getDate();\n    var m = date.getMonth();\n    var y = date.getFullYear();\n\n    $('#calendar').fullCalendar({\n        header: {\n            left: 'prev,next today',\n            center: 'title',\n            right: 'month,basicWeek,basicDay'\n        },\n        editable: true,\n        events: [\n            {\n                title: 'All Day Event',\n                start: new Date(y, m, 1)\n            },\n            {\n                title: 'Long Event',\n                start: new Date(y, m, d-5),\n                end: new Date(y, m, d-2)\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d-3, 16, 0),\n                allDay: false\n            },\n            {\n                id: 999,\n                title: 'Repeating Event',\n                start: new Date(y, m, d+4, 16, 0),\n                allDay: false\n            },\n            {\n                title: 'Meeting',\n                start: new Date(y, m, d, 10, 30),\n                allDay: false\n            },\n            {\n                title: 'Lunch',\n                start: new Date(y, m, d, 12, 0),\n                end: new Date(y, m, d, 14, 0),\n                allDay: false\n            },\n            {\n                title: 'Birthday Party',\n                start: new Date(y, m, d+1, 19, 0),\n                end: new Date(y, m, d+1, 22, 30),\n                allDay: false\n            },\n            {\n                title: 'Click for Google',\n                start: new Date(y, m, 28),\n                end: new Date(y, m, 29),\n                url: '../../../../google.com/default.htm'\n            }\n        ]\n    });\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/jQuery.dualListBox-1.3.js",
    "content": "﻿/*\n*       Developed by Justin Mead\n*       ©2011 MeadMiracle\n*\t\twww.meadmiracle.com / meadmiracle@gmail.com\n*       Version 1.3\n*       Testing: IE8/Windows XP\n*                Firefox/Windows XP\n*                Chrome/Windows XP\n*       Licensed under the Creative Commons GPL http://creativecommons.org/licenses/GPL/2.0/\n*\n*       OPTIONS LISTING:\n*           *box1View, box2View         - the id attributes of the VISIBLE listboxes\n*           *box1Storage, box2Storage   - the id attributes of the HIDDEN listboxes (used for filtering)\n*           *box1Filter, box2Filter     - the id attributes of the textboxes used to filter the lists\n*           *box1Clear, box2Clear       - the id attributes of the elements used to clear/reset the filters\n*           *box1Counter, box2Counter   - the id attributes of the elements used to display counts of visible/total items (used when filtering)\n*           *to1, to2                   - the id attributes of the elements used to transfer only selected items between boxes\n*           *allTo1, allTo2             - the id attributes of the elements used to transfer ALL (visible) items between boxes\n*           *transferMode               - the type of transfer to perform on items (see heading TRANSFER MODES)\n*           *sortBy                     - the attribute to use when sorting items (values: 'text' or 'value')\n*           *useFilters                 - allow the filtering of items in either box (true/false)\n*           *useCounters                - use the visible/total counters (true/false)\n*           *useSorting                 - sort items after executing a transfer (true/false)\n*           *selectOnSubmit             - select items in box 2 when the form is submitted (true/false)\n*\n*       All options have default values, and as such, are optional.  Check the 'settings' JSON object below to see the defaults.\n*\n*       TRANSFER MODES:\n*           * 'move' - In this mode, items will be removed from the box in which they currently reside and moved to the other box. This is the default.\n*           * 'copy' - In this mode, items in box 1 will ALWAYS remain in box 1 (unless they are hidden by filtering).  When they are selected for transfer\n*                      they will be copied to box 2 and will be given the class 'copiedOption' in box 1 (my default styling for this class is yellow background\n*                      but you may choose whatever styling suits you).  If they are then transferred from box 2, they disappear from box 2, and the 'copiedOption'\n*                      class is removed from the corresponding option in box 1.\n*\n*/\n\n(function($) {\n    var settings = new Array();\n    var group1 = new Array();\n    var group2 = new Array();\n    var onSort = new Array();\n\n    //the main method that the end user will execute to setup the DLB\n    $.configureBoxes = function(options) {\n        //define default settings\n        var index = settings.push({\n            box1View: 'box1View',\n            box1Storage: 'box1Storage',\n            box1Filter: 'box1Filter',\n            box1Clear: 'box1Clear',\n            box1Counter: 'box1Counter',\n            box2View: 'box2View',\n            box2Storage: 'box2Storage',\n            box2Filter: 'box2Filter',\n            box2Clear: 'box2Clear',\n            box2Counter: 'box2Counter',\n            to1: 'to1',\n            allTo1: 'allTo1',\n            to2: 'to2',\n            allTo2: 'allTo2',\n            transferMode: 'move',\n            sortBy: 'text',\n            useFilters: true,\n            useCounters: true,\n            useSorting: true,\n            selectOnSubmit: true\n        });\n\n        index--;\n\n        //merge default settings w/ user defined settings (with user-defined settings overriding defaults)\n        $.extend(settings[index], options);\n\n        //define box groups\n        group1.push({\n            view: settings[index].box1View,\n            storage: settings[index].box1Storage,\n            filter: settings[index].box1Filter,\n            clear: settings[index].box1Clear,\n            counter: settings[index].box1Counter,\n            index: index\n        });\n        group2.push({\n            view: settings[index].box2View,\n            storage: settings[index].box2Storage,\n            filter: settings[index].box2Filter,\n            clear: settings[index].box2Clear,\n            counter: settings[index].box2Counter,\n            index: index\n        });\n\n        //define sort function\n        if (settings[index].sortBy == 'text') {\n            onSort.push(function(a, b) {\n                var aVal = a.text.toLowerCase();\n                var bVal = b.text.toLowerCase();\n                if (aVal < bVal) { return -1; }\n                if (aVal > bVal) { return 1; }\n                return 0;\n            });\n        } else {\n            onSort.push(function(a, b) {\n                var aVal = a.value.toLowerCase();\n                var bVal = b.value.toLowerCase();\n                if (aVal < bVal) { return -1; }\n                if (aVal > bVal) { return 1; }\n                return 0;\n            });\n        }\n\n        //configure events\n        if (settings[index].useFilters) {\n            $('#' + group1[index].filter).keyup(function() {\n                Filter(group1[index]);\n            });\n            $('#' + group2[index].filter).keyup(function() {\n                Filter(group2[index]);\n            });\n            $('#' + group1[index].clear).click(function() {\n                ClearFilter(group1[index]);\n            });\n            $('#' + group2[index].clear).click(function() {\n                ClearFilter(group2[index]);\n            });\n        }\n        if (IsMoveMode(settings[index])) {\n            $('#' + group2[index].view).dblclick(function() {\n                MoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].to1).click(function() {\n                MoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].allTo1).click(function() {\n                MoveAll(group2[index], group1[index]);\n            });\n        } else {\n            $('#' + group2[index].view).dblclick(function() {\n                RemoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].to1).click(function() {\n                RemoveSelected(group2[index], group1[index]);\n            });\n            $('#' + settings[index].allTo1).click(function() {\n                RemoveAll(group2[index], group1[index]);\n            });\n        }\n        $('#' + group1[index].view).dblclick(function() {\n            MoveSelected(group1[index], group2[index]);\n        });\n        $('#' + settings[index].to2).click(function() {\n            MoveSelected(group1[index], group2[index]);\n        });\n        $('#' + settings[index].allTo2).click(function() {\n            MoveAll(group1[index], group2[index]);\n        });\n\n        //initialize the counters\n        if (settings[index].useCounters) {\n            UpdateLabel(group1[index]);\n            UpdateLabel(group2[index]);\n        }\n\n        //pre-sort item sets\n        if (settings[index].useSorting) {\n            SortOptions(group1[index]);\n            SortOptions(group2[index]);\n        }\n\n        //hide the storage boxes\n        $('#' + group1[index].storage + ',#' + group2[index].storage).css('display', 'none');\n\n        //attach onSubmit functionality if desired\n        if (settings[index].selectOnSubmit) {\n            $('#' + settings[index].box2View).closest('form').submit(function() {\n                $('#' + settings[index].box2View).children('option').attr('selected', 'selected');\n            });\n        }\n    };\n\n    function UpdateLabel(group) {\n        var showingCount = $(\"#\" + group.view + \" option\").size();\n        var hiddenCount = $(\"#\" + group.storage + \" option\").size();\n        $(\"#\" + group.counter).text('Showing ' + showingCount + ' of ' + (showingCount + hiddenCount));\n    }\n\n    function Filter(group) {\n        var index = group.index;\n        var filterLower;\n        if (settings[index].useFilters) {\n            filterLower = $('#' + group.filter).val().toString().toLowerCase();\n        } else {\n            filterLower = '';\n        }\n        $('#' + group.view + ' option').filter(function(i) {\n            var toMatch = $(this).text().toString().toLowerCase();\n            return toMatch.indexOf(filterLower) == -1;\n        }).appendTo('#' + group.storage);\n        $('#' + group.storage + ' option').filter(function(i) {\n            var toMatch = $(this).text().toString().toLowerCase();\n            return toMatch.indexOf(filterLower) != -1;\n        }).appendTo('#' + group.view);\n        try {\n            $('#' + group.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        if (settings[index].useSorting) { SortOptions(group); }\n        if (settings[index].useCounters) { UpdateLabel(group); }\n    }\n\n    function SortOptions(group) {\n        var $toSortOptions = $('#' + group.view + ' option');\n        $toSortOptions.sort(onSort[group.index]);\n        $('#' + group.view).empty().append($toSortOptions);\n    }\n\n    function MoveSelected(fromGroup, toGroup) {\n        if (IsMoveMode(settings[fromGroup.index])) {\n            $('#' + fromGroup.view + ' option:selected').appendTo('#' + toGroup.view);\n        } else {\n            $('#' + fromGroup.view + ' option:selected:not([class*=copiedOption])').clone().appendTo('#' + toGroup.view).end().end().addClass('copiedOption');\n        }\n        try {\n            $('#' + fromGroup.view + ' option,#' + toGroup.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(toGroup);\n        if (settings[fromGroup.index].useCounters) { UpdateLabel(fromGroup); }\n    }\n\n    function MoveAll(fromGroup, toGroup) {\n        if (IsMoveMode(settings[fromGroup.index])) {\n            $('#' + fromGroup.view + ' option').appendTo('#' + toGroup.view);\n        } else {\n            $('#' + fromGroup.view + ' option:not([class*=copiedOption])').clone().appendTo('#' + toGroup.view).end().end().addClass('copiedOption');\n        }\n        try {\n            $('#' + fromGroup.view + ' option,#' + toGroup.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(toGroup);\n        if (settings[fromGroup.index].useCounters) { UpdateLabel(fromGroup); }\n    }\n\n    function RemoveSelected(removeGroup, otherGroup) {\n        $('#' + otherGroup.view + ' option.copiedOption').add('#' + otherGroup.storage + ' option.copiedOption').remove();\n        try {\n            $('#' + removeGroup.view + ' option:selected').appendTo('#' + otherGroup.view).removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        $('#' + removeGroup.view + ' option').add('#' + removeGroup.storage + ' option').clone().addClass('copiedOption').appendTo('#' + otherGroup.view);\n        Filter(otherGroup);\n        if (settings[removeGroup.index].useCounters) { UpdateLabel(removeGroup); }\n    }\n\n    function RemoveAll(removeGroup, otherGroup) {\n        $('#' + otherGroup.view + ' option.copiedOption').add('#' + otherGroup.storage + ' option.copiedOption').remove();\n        try {\n            $('#' + removeGroup.storage + ' option').clone().addClass('copiedOption').add('#' + removeGroup.view + ' option').appendTo('#' + otherGroup.view).removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        Filter(otherGroup);\n        if (settings[removeGroup.index].useCounters) { UpdateLabel(removeGroup); }\n    }\n\n    function ClearFilter(group) {\n        $('#' + group.filter).val('');\n        $('#' + group.storage + ' option').appendTo('#' + group.view);\n        try {\n            $('#' + group.view + ' option').removeAttr('selected');\n        }\n        catch (ex) {\n            //swallow the error for IE6\n        }\n        if (settings[group.index].useSorting) { SortOptions(group); }\n        if (settings[group.index].useCounters) { UpdateLabel(group); }\n    }\n\n    function IsMoveMode(currSettings) {\n        return currSettings.transferMode == 'move';\n    }\n})(jQuery);"
  },
  {
    "path": "target/mongo/jslib/bs_js/jquery.blockui.js",
    "content": "/*!\n * jQuery blockUI plugin\n * Version 2.53 (01-NOV-2012)\n * @requires jQuery v1.3 or later\n *\n * Examples at: http://malsup.com/jquery/block/\n * Copyright (c) 2007-2012 M. Alsup\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n * Thanks to Amir-Hossein Sobhi for some excellent contributions!\n */\n\n;(function() {\n\"use strict\";\n\n\tfunction setup($) {\n\t\tif (/^1\\.(0|1|2)/.test($.fn.jquery)) {\n\t\t\t/*global alert:true */\n\t\t\talert('blockUI requires jQuery v1.3 or later!  You are using v' + $.fn.jquery);\n\t\t\treturn;\n\t\t}\n\n\t\t$.fn._fadeIn = $.fn.fadeIn;\n\n\t\tvar noOp = $.noop || function() {};\n\n\t\t// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle\n\t\t// retarded userAgent strings on Vista)\n\t\tvar msie = /MSIE/.test(navigator.userAgent);\n\t\tvar ie6  = /MSIE 6.0/.test(navigator.userAgent);\n\t\tvar mode = document.documentMode || 0;\n\t\t// var setExpr = msie && (($.browser.version < 8 && !mode) || mode < 8);\n\t\tvar setExpr = $.isFunction( document.createElement('div').style.setExpression );\n\n\t\t// global $ methods for blocking/unblocking the entire page\n\t\t$.blockUI   = function(opts) { install(window, opts); };\n\t\t$.unblockUI = function(opts) { remove(window, opts); };\n\n\t\t// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)\n\t\t$.growlUI = function(title, message, timeout, onClose) {\n\t\t\tvar $m = $('<div class=\"growlUI\"></div>');\n\t\t\tif (title) $m.append('<h1>'+title+'</h1>');\n\t\t\tif (message) $m.append('<h2>'+message+'</h2>');\n\t\t\tif (timeout === undefined) timeout = 3000;\n\t\t\t$.blockUI({\n\t\t\t\tmessage: $m, fadeIn: 700, fadeOut: 1000, centerY: false,\n\t\t\t\ttimeout: timeout, showOverlay: false,\n\t\t\t\tonUnblock: onClose,\n\t\t\t\tcss: $.blockUI.defaults.growlCSS\n\t\t\t});\n\t\t};\n\n\t\t// plugin method for blocking element content\n\t\t$.fn.block = function(opts) {\n\t\t\tvar fullOpts = $.extend({}, $.blockUI.defaults, opts || {});\n\t\t\tthis.each(function() {\n\t\t\t\tvar $el = $(this);\n\t\t\t\tif (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))\n\t\t\t\t\treturn;\n\t\t\t\t$el.unblock({ fadeOut: 0 });\n\t\t\t});\n\n\t\t\treturn this.each(function() {\n\t\t\t\tif ($.css(this,'position') == 'static')\n\t\t\t\t\tthis.style.position = 'relative';\n\t\t\t\tthis.style.zoom = 1; // force 'hasLayout' in ie\n\t\t\t\tinstall(this, opts);\n\t\t\t});\n\t\t};\n\n\t\t// plugin method for unblocking element content\n\t\t$.fn.unblock = function(opts) {\n\t\t\treturn this.each(function() {\n\t\t\t\tremove(this, opts);\n\t\t\t});\n\t\t};\n\n\t\t$.blockUI.version = 2.53; // 2nd generation blocking at no extra cost!\n\n\t\t// override these in your code to change the default behavior and style\n\t\t$.blockUI.defaults = {\n\t\t\t// message displayed when blocking (use null for no message)\n\t\t\tmessage:  '<h1>Please wait...</h1>',\n\n\t\t\ttitle: null,\t\t// title string; only used when theme == true\n\t\t\tdraggable: true,\t// only used when theme == true (requires jquery-ui.js to be loaded)\n\n\t\t\ttheme: false, // set to true to use with jQuery UI themes\n\n\t\t\t// styles for the message when blocking; if you wish to disable\n\t\t\t// these and use an external stylesheet then do this in your code:\n\t\t\t// $.blockUI.defaults.css = {};\n\t\t\tcss: {\n\t\t\t\tpadding:\t0,\n\t\t\t\tmargin:\t\t0,\n\t\t\t\twidth:\t\t'30%',\n\t\t\t\ttop:\t\t'40%',\n\t\t\t\tleft:\t\t'35%',\n\t\t\t\ttextAlign:\t'center',\n\t\t\t\tcolor:\t\t'#000',\n\t\t\t\tborder:\t\t'3px solid #aaa',\n\t\t\t\tbackgroundColor:'#fff',\n\t\t\t\tcursor:\t\t'wait'\n\t\t\t},\n\n\t\t\t// minimal style set used when themes are used\n\t\t\tthemedCSS: {\n\t\t\t\twidth:\t'30%',\n\t\t\t\ttop:\t'40%',\n\t\t\t\tleft:\t'35%'\n\t\t\t},\n\n\t\t\t// styles for the overlay\n\t\t\toverlayCSS:  {\n\t\t\t\tbackgroundColor:\t'#000',\n\t\t\t\topacity:\t\t\t\t0.6,\n\t\t\t\tcursor:\t\t\t\t'wait'\n\t\t\t},\n\n\t\t\t// style to replace wait cursor before unblocking to correct issue\n\t\t\t// of lingering wait cursor\n\t\t\tcursorReset: 'default',\n\n\t\t\t// styles applied when using $.growlUI\n\t\t\tgrowlCSS: {\n\t\t\t\twidth:\t\t'350px',\n\t\t\t\ttop:\t\t'10px',\n\t\t\t\tleft:\t\t'',\n\t\t\t\tright:\t\t'10px',\n\t\t\t\tborder:\t\t'none',\n\t\t\t\tpadding:\t'5px',\n\t\t\t\topacity:\t0.6,\n\t\t\t\tcursor:\t\t'default',\n\t\t\t\tcolor:\t\t'#fff',\n\t\t\t\tbackgroundColor: '#000',\n\t\t\t\t'-webkit-border-radius':'10px',\n\t\t\t\t'-moz-border-radius':\t'10px',\n\t\t\t\t'border-radius':\t\t'10px'\n\t\t\t},\n\n\t\t\t// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w\n\t\t\t// (hat tip to Jorge H. N. de Vasconcelos)\n\t\t\t/*jshint scripturl:true */\n\t\t\tiframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',\n\n\t\t\t// force usage of iframe in non-IE browsers (handy for blocking applets)\n\t\t\tforceIframe: false,\n\n\t\t\t// z-index for the blocking overlay\n\t\t\tbaseZ: 1000,\n\n\t\t\t// set these to true to have the message automatically centered\n\t\t\tcenterX: true, // <-- only effects element blocking (page block controlled via css above)\n\t\t\tcenterY: true,\n\n\t\t\t// allow body element to be stetched in ie6; this makes blocking look better\n\t\t\t// on \"short\" pages.  disable if you wish to prevent changes to the body height\n\t\t\tallowBodyStretch: true,\n\n\t\t\t// enable if you want key and mouse events to be disabled for content that is blocked\n\t\t\tbindEvents: true,\n\n\t\t\t// be default blockUI will supress tab navigation from leaving blocking content\n\t\t\t// (if bindEvents is true)\n\t\t\tconstrainTabKey: true,\n\n\t\t\t// fadeIn time in millis; set to 0 to disable fadeIn on block\n\t\t\tfadeIn:  200,\n\n\t\t\t// fadeOut time in millis; set to 0 to disable fadeOut on unblock\n\t\t\tfadeOut:  400,\n\n\t\t\t// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock\n\t\t\ttimeout: 0,\n\n\t\t\t// disable if you don't want to show the overlay\n\t\t\tshowOverlay: true,\n\n\t\t\t// if true, focus will be placed in the first available input field when\n\t\t\t// page blocking\n\t\t\tfocusInput: true,\n\n\t\t\t// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)\n\t\t\t// no longer needed in 2012\n\t\t\t// applyPlatformOpacityRules: true,\n\n\t\t\t// callback method invoked when fadeIn has completed and blocking message is visible\n\t\t\tonBlock: null,\n\n\t\t\t// callback method invoked when unblocking has completed; the callback is\n\t\t\t// passed the element that has been unblocked (which is the window object for page\n\t\t\t// blocks) and the options that were passed to the unblock call:\n\t\t\t//\tonUnblock(element, options)\n\t\t\tonUnblock: null,\n\n\t\t\t// callback method invoked when the overlay area is clicked.\n\t\t\t// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.\n\t\t\tonOverlayClick: null,\n\n\t\t\t// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493\n\t\t\tquirksmodeOffsetHack: 4,\n\n\t\t\t// class name of the message block\n\t\t\tblockMsgClass: 'blockMsg',\n\n\t\t\t// if it is already blocked, then ignore it (don't unblock and reblock)\n\t\t\tignoreIfBlocked: false\n\t\t};\n\n\t\t// private data and functions follow...\n\n\t\tvar pageBlock = null;\n\t\tvar pageBlockEls = [];\n\n\t\tfunction install(el, opts) {\n\t\t\tvar css, themedCSS;\n\t\t\tvar full = (el == window);\n\t\t\tvar msg = (opts && opts.message !== undefined ? opts.message : undefined);\n\t\t\topts = $.extend({}, $.blockUI.defaults, opts || {});\n\n\t\t\tif (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))\n\t\t\t\treturn;\n\n\t\t\topts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});\n\t\t\tcss = $.extend({}, $.blockUI.defaults.css, opts.css || {});\n\t\t\tif (opts.onOverlayClick)\n\t\t\t\topts.overlayCSS.cursor = 'pointer';\n\n\t\t\tthemedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});\n\t\t\tmsg = msg === undefined ? opts.message : msg;\n\n\t\t\t// remove the current block (if there is one)\n\t\t\tif (full && pageBlock)\n\t\t\t\tremove(window, {fadeOut:0});\n\n\t\t\t// if an existing element is being used as the blocking content then we capture\n\t\t\t// its current place in the DOM (and current display style) so we can restore\n\t\t\t// it when we unblock\n\t\t\tif (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {\n\t\t\t\tvar node = msg.jquery ? msg[0] : msg;\n\t\t\t\tvar data = {};\n\t\t\t\t$(el).data('blockUI.history', data);\n\t\t\t\tdata.el = node;\n\t\t\t\tdata.parent = node.parentNode;\n\t\t\t\tdata.display = node.style.display;\n\t\t\t\tdata.position = node.style.position;\n\t\t\t\tif (data.parent)\n\t\t\t\t\tdata.parent.removeChild(node);\n\t\t\t}\n\n\t\t\t$(el).data('blockUI.onUnblock', opts.onUnblock);\n\t\t\tvar z = opts.baseZ;\n\n\t\t\t// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;\n\t\t\t// layer1 is the iframe layer which is used to supress bleed through of underlying content\n\t\t\t// layer2 is the overlay layer which has opacity and a wait cursor (by default)\n\t\t\t// layer3 is the message content that is displayed while blocking\n\t\t\tvar lyr1, lyr2, lyr3, s;\n\t\t\tif (msie || opts.forceIframe)\n\t\t\t\tlyr1 = $('<iframe class=\"blockUI\" style=\"z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0\" src=\"'+opts.iframeSrc+'\"></iframe>');\n\t\t\telse\n\t\t\t\tlyr1 = $('<div class=\"blockUI\" style=\"display:none\"></div>');\n\n\t\t\tif (opts.theme)\n\t\t\t\tlyr2 = $('<div class=\"blockUI blockOverlay ui-widget-overlay\" style=\"z-index:'+ (z++) +';display:none\"></div>');\n\t\t\telse\n\t\t\t\tlyr2 = $('<div class=\"blockUI blockOverlay\" style=\"z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0\"></div>');\n\n\t\t\tif (opts.theme && full) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all\" style=\"z-index:'+(z+10)+';display:none;position:fixed\">';\n\t\t\t\tif ( opts.title ) {\n\t\t\t\t\ts += '<div class=\"ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle\">'+(opts.title || '&nbsp;')+'</div>';\n\t\t\t\t}\n\t\t\t\ts += '<div class=\"ui-widget-content ui-dialog-content\"></div>';\n\t\t\t\ts += '</div>';\n\t\t\t}\n\t\t\telse if (opts.theme) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all\" style=\"z-index:'+(z+10)+';display:none;position:absolute\">';\n\t\t\t\tif ( opts.title ) {\n\t\t\t\t\ts += '<div class=\"ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle\">'+(opts.title || '&nbsp;')+'</div>';\n\t\t\t\t}  \n\t\t\t\ts += '<div class=\"ui-widget-content ui-dialog-content\"></div>';\n\t\t\t\ts += '</div>';\n\t\t\t}\n\t\t\telse if (full) {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockPage\" style=\"z-index:'+(z+10)+';display:none;position:fixed\"></div>';\n\t\t\t}\n\t\t\telse {\n\t\t\t\ts = '<div class=\"blockUI ' + opts.blockMsgClass + ' blockElement\" style=\"z-index:'+(z+10)+';display:none;position:absolute\"></div>';\n\t\t\t}\n\t\t\tlyr3 = $(s);\n\n\t\t\t// if we have a message, style it\n\t\t\tif (msg) {\n\t\t\t\tif (opts.theme) {\n\t\t\t\t\tlyr3.css(themedCSS);\n\t\t\t\t\tlyr3.addClass('ui-widget-content');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tlyr3.css(css);\n\t\t\t}\n\n\t\t\t// style the overlay\n\t\t\tif (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)\n\t\t\t\tlyr2.css(opts.overlayCSS);\n\t\t\tlyr2.css('position', full ? 'fixed' : 'absolute');\n\n\t\t\t// make iframe layer transparent in IE\n\t\t\tif (msie || opts.forceIframe)\n\t\t\t\tlyr1.css('opacity',0.0);\n\n\t\t\t//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);\n\t\t\tvar layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);\n\t\t\t$.each(layers, function() {\n\t\t\t\tthis.appendTo($par);\n\t\t\t});\n\n\t\t\tif (opts.theme && opts.draggable && $.fn.draggable) {\n\t\t\t\tlyr3.draggable({\n\t\t\t\t\thandle: '.ui-dialog-titlebar',\n\t\t\t\t\tcancel: 'li'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)\n\t\t\tvar expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);\n\t\t\tif (ie6 || expr) {\n\t\t\t\t// give body 100% height\n\t\t\t\tif (full && opts.allowBodyStretch && $.support.boxModel)\n\t\t\t\t\t$('html,body').css('height','100%');\n\n\t\t\t\t// fix ie6 issue when blocked element has a border width\n\t\t\t\tif ((ie6 || !$.support.boxModel) && !full) {\n\t\t\t\t\tvar t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');\n\t\t\t\t\tvar fixT = t ? '(0 - '+t+')' : 0;\n\t\t\t\t\tvar fixL = l ? '(0 - '+l+')' : 0;\n\t\t\t\t}\n\n\t\t\t\t// simulate fixed position\n\t\t\t\t$.each(layers, function(i,o) {\n\t\t\t\t\tvar s = o[0].style;\n\t\t\t\t\ts.position = 'absolute';\n\t\t\t\t\tif (i < 2) {\n\t\t\t\t\t\tif (full)\n\t\t\t\t\t\t\ts.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + \"px\"');\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ts.setExpression('height','this.parentNode.offsetHeight + \"px\"');\n\t\t\t\t\t\tif (full)\n\t\t\t\t\t\t\ts.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + \"px\"');\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ts.setExpression('width','this.parentNode.offsetWidth + \"px\"');\n\t\t\t\t\t\tif (fixL) s.setExpression('left', fixL);\n\t\t\t\t\t\tif (fixT) s.setExpression('top', fixT);\n\t\t\t\t\t}\n\t\t\t\t\telse if (opts.centerY) {\n\t\t\t\t\t\tif (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + \"px\"');\n\t\t\t\t\t\ts.marginTop = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!opts.centerY && full) {\n\t\t\t\t\t\tvar top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;\n\t\t\t\t\t\tvar expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + \"px\"';\n\t\t\t\t\t\ts.setExpression('top',expression);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// show the message\n\t\t\tif (msg) {\n\t\t\t\tif (opts.theme)\n\t\t\t\t\tlyr3.find('.ui-widget-content').append(msg);\n\t\t\t\telse\n\t\t\t\t\tlyr3.append(msg);\n\t\t\t\tif (msg.jquery || msg.nodeType)\n\t\t\t\t\t$(msg).show();\n\t\t\t}\n\n\t\t\tif ((msie || opts.forceIframe) && opts.showOverlay)\n\t\t\t\tlyr1.show(); // opacity is zero\n\t\t\tif (opts.fadeIn) {\n\t\t\t\tvar cb = opts.onBlock ? opts.onBlock : noOp;\n\t\t\t\tvar cb1 = (opts.showOverlay && !msg) ? cb : noOp;\n\t\t\t\tvar cb2 = msg ? cb : noOp;\n\t\t\t\tif (opts.showOverlay)\n\t\t\t\t\tlyr2._fadeIn(opts.fadeIn, cb1);\n\t\t\t\tif (msg)\n\t\t\t\t\tlyr3._fadeIn(opts.fadeIn, cb2);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (opts.showOverlay)\n\t\t\t\t\tlyr2.show();\n\t\t\t\tif (msg)\n\t\t\t\t\tlyr3.show();\n\t\t\t\tif (opts.onBlock)\n\t\t\t\t\topts.onBlock();\n\t\t\t}\n\n\t\t\t// bind key and mouse events\n\t\t\tbind(1, el, opts);\n\n\t\t\tif (full) {\n\t\t\t\tpageBlock = lyr3[0];\n\t\t\t\tpageBlockEls = $(':input:enabled:visible',pageBlock);\n\t\t\t\tif (opts.focusInput)\n\t\t\t\t\tsetTimeout(focus, 20);\n\t\t\t}\n\t\t\telse\n\t\t\t\tcenter(lyr3[0], opts.centerX, opts.centerY);\n\n\t\t\tif (opts.timeout) {\n\t\t\t\t// auto-unblock\n\t\t\t\tvar to = setTimeout(function() {\n\t\t\t\t\tif (full)\n\t\t\t\t\t\t$.unblockUI(opts);\n\t\t\t\t\telse\n\t\t\t\t\t\t$(el).unblock(opts);\n\t\t\t\t}, opts.timeout);\n\t\t\t\t$(el).data('blockUI.timeout', to);\n\t\t\t}\n\t\t}\n\n\t\t// remove the block\n\t\tfunction remove(el, opts) {\n\t\t\tvar full = (el == window);\n\t\t\tvar $el = $(el);\n\t\t\tvar data = $el.data('blockUI.history');\n\t\t\tvar to = $el.data('blockUI.timeout');\n\t\t\tif (to) {\n\t\t\t\tclearTimeout(to);\n\t\t\t\t$el.removeData('blockUI.timeout');\n\t\t\t}\n\t\t\topts = $.extend({}, $.blockUI.defaults, opts || {});\n\t\t\tbind(0, el, opts); // unbind events\n\n\t\t\tif (opts.onUnblock === null) {\n\t\t\t\topts.onUnblock = $el.data('blockUI.onUnblock');\n\t\t\t\t$el.removeData('blockUI.onUnblock');\n\t\t\t}\n\n\t\t\tvar els;\n\t\t\tif (full) // crazy selector to handle odd field errors in ie6/7\n\t\t\t\tels = $('body').children().filter('.blockUI').add('body > .blockUI');\n\t\t\telse\n\t\t\t\tels = $el.find('>.blockUI');\n\n\t\t\t// fix cursor issue\n\t\t\tif ( opts.cursorReset ) {\n\t\t\t\tif ( els.length > 1 )\n\t\t\t\t\tels[1].style.cursor = opts.cursorReset;\n\t\t\t\tif ( els.length > 2 )\n\t\t\t\t\tels[2].style.cursor = opts.cursorReset;\n\t\t\t}\n\n\t\t\tif (full)\n\t\t\t\tpageBlock = pageBlockEls = null;\n\n\t\t\tif (opts.fadeOut) {\n\t\t\t\tels.fadeOut(opts.fadeOut);\n\t\t\t\tsetTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);\n\t\t\t}\n\t\t\telse\n\t\t\t\treset(els, data, opts, el);\n\t\t}\n\n\t\t// move blocking element back into the DOM where it started\n\t\tfunction reset(els,data,opts,el) {\n\t\t\tels.each(function(i,o) {\n\t\t\t\t// remove via DOM calls so we don't lose event handlers\n\t\t\t\tif (this.parentNode)\n\t\t\t\t\tthis.parentNode.removeChild(this);\n\t\t\t});\n\n\t\t\tif (data && data.el) {\n\t\t\t\tdata.el.style.display = data.display;\n\t\t\t\tdata.el.style.position = data.position;\n\t\t\t\tif (data.parent)\n\t\t\t\t\tdata.parent.appendChild(data.el);\n\t\t\t\t$(el).removeData('blockUI.history');\n\t\t\t}\n\n\t\t\tif (typeof opts.onUnblock == 'function')\n\t\t\t\topts.onUnblock(el,opts);\n\n\t\t\t// fix issue in Safari 6 where block artifacts remain until reflow\n\t\t\tvar body = $(document.body), w = body.width(), cssW = body[0].style.width;\n\t\t\tbody.width(w-1).width(w);\n\t\t\tbody[0].style.width = cssW;\n\t\t}\n\n\t\t// bind/unbind the handler\n\t\tfunction bind(b, el, opts) {\n\t\t\tvar full = el == window, $el = $(el);\n\n\t\t\t// don't bother unbinding if there is nothing to unbind\n\t\t\tif (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))\n\t\t\t\treturn;\n\n\t\t\t$el.data('blockUI.isBlocked', b);\n\n\t\t\t// don't bind events when overlay is not in use or if bindEvents is false\n\t\t\tif (!opts.bindEvents || (b && !opts.showOverlay))\n\t\t\t\treturn;\n\n\t\t\t// bind anchors and inputs for mouse and key events\n\t\t\tvar events = 'mousedown mouseup keydown keypress touchstart touchend touchmove';\n\t\t\tif (b)\n\t\t\t\t$(document).bind(events, opts, handler);\n\t\t\telse\n\t\t\t\t$(document).unbind(events, handler);\n\n\t\t// former impl...\n\t\t//\t\tvar $e = $('a,:input');\n\t\t//\t\tb ? $e.bind(events, opts, handler) : $e.unbind(events, handler);\n\t\t}\n\n\t\t// event handler to suppress keyboard/mouse events when blocking\n\t\tfunction handler(e) {\n\t\t\t// allow tab navigation (conditionally)\n\t\t\tif (e.keyCode && e.keyCode == 9) {\n\t\t\t\tif (pageBlock && e.data.constrainTabKey) {\n\t\t\t\t\tvar els = pageBlockEls;\n\t\t\t\t\tvar fwd = !e.shiftKey && e.target === els[els.length-1];\n\t\t\t\t\tvar back = e.shiftKey && e.target === els[0];\n\t\t\t\t\tif (fwd || back) {\n\t\t\t\t\t\tsetTimeout(function(){focus(back);},10);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar opts = e.data;\n\t\t\tvar target = $(e.target);\n\t\t\tif (target.hasClass('blockOverlay') && opts.onOverlayClick)\n\t\t\t\topts.onOverlayClick();\n\n\t\t\t// allow events within the message content\n\t\t\tif (target.parents('div.' + opts.blockMsgClass).length > 0)\n\t\t\t\treturn true;\n\n\t\t\t// allow events for content that is not being blocked\n\t\t\treturn target.parents().children().filter('div.blockUI').length === 0;\n\t\t}\n\n\t\tfunction focus(back) {\n\t\t\tif (!pageBlockEls)\n\t\t\t\treturn;\n\t\t\tvar e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];\n\t\t\tif (e)\n\t\t\t\te.focus();\n\t\t}\n\n\t\tfunction center(el, x, y) {\n\t\t\tvar p = el.parentNode, s = el.style;\n\t\t\tvar l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');\n\t\t\tvar t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');\n\t\t\tif (x) s.left = l > 0 ? (l+'px') : '0';\n\t\t\tif (y) s.top  = t > 0 ? (t+'px') : '0';\n\t\t}\n\n\t\tfunction sz(el, p) {\n\t\t\treturn parseInt($.css(el,p),10)||0;\n\t\t}\n\n\t}\n\n\n\t/*global define:true */\n\tif (typeof define === 'function' && define.amd && define.amd.jQuery) {\n\t\tdefine(['jquery'], setup);\n\t} else {\n\t\tsetup(jQuery);\n\t}\n\n})();"
  },
  {
    "path": "target/mongo/jslib/bs_js/jquery.nicescroll.js",
    "content": "/* jquery.nicescroll 3.5.0 InuYaksa*2013 MIT http://areaaperta.com/nicescroll */(function(e){var z=!1,E=!1,L=5E3,M=2E3,y=0,N=function(){var e=document.getElementsByTagName(\"script\"),e=e[e.length-1].src.split(\"?\")[0];return 0<e.split(\"/\").length?e.split(\"/\").slice(0,-1).join(\"/\")+\"/\":\"\"}(),H=[\"ms\",\"moz\",\"webkit\",\"o\"],v=window.requestAnimationFrame||!1,w=window.cancelAnimationFrame||!1;if(!v)for(var O in H){var F=H[O];v||(v=window[F+\"RequestAnimationFrame\"]);w||(w=window[F+\"CancelAnimationFrame\"]||window[F+\"CancelRequestAnimationFrame\"])}var A=window.MutationObserver||window.WebKitMutationObserver||\n    !1,I={zindex:\"auto\",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:\"#424242\",cursorwidth:\"5px\",cursorborder:\"1px solid #fff\",cursorborderradius:\"5px\",scrollspeed:60,mousescrollstep:24,touchbehavior:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:\"\",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,\n    horizrailenabled:!0,railalign:\"right\",railvalign:\"bottom\",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:0.3,rtlmode:!1,cursordragontouch:!1,oneaxismousemode:\"auto\"},G=!1,P=function(){if(G)return G;var e=document.createElement(\"DIV\"),c={haspointerlock:\"pointerLockElement\"in document||\n    \"mozPointerLockElement\"in document||\"webkitPointerLockElement\"in document};c.isopera=\"opera\"in window;c.isopera12=c.isopera&&\"getUserMedia\"in navigator;c.isoperamini=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);c.isie=\"all\"in document&&\"attachEvent\"in e&&!c.isopera;c.isieold=c.isie&&!(\"msInterpolationMode\"in e.style);c.isie7=c.isie&&!c.isieold&&(!(\"documentMode\"in document)||7==document.documentMode);c.isie8=c.isie&&\"documentMode\"in document&&8==document.documentMode;c.isie9=\n    c.isie&&\"performance\"in window&&9<=document.documentMode;c.isie10=c.isie&&\"performance\"in window&&10<=document.documentMode;c.isie9mobile=/iemobile.9/i.test(navigator.userAgent);c.isie9mobile&&(c.isie9=!1);c.isie7mobile=!c.isie9mobile&&c.isie7&&/iemobile/i.test(navigator.userAgent);c.ismozilla=\"MozAppearance\"in e.style;c.iswebkit=\"WebkitAppearance\"in e.style;c.ischrome=\"chrome\"in window;c.ischrome22=c.ischrome&&c.haspointerlock;c.ischrome26=c.ischrome&&\"transition\"in e.style;c.cantouch=\"ontouchstart\"in\n    document.documentElement||\"ontouchstart\"in window;c.hasmstouch=window.navigator.msPointerEnabled||!1;c.ismac=/^mac$/i.test(navigator.platform);c.isios=c.cantouch&&/iphone|ipad|ipod/i.test(navigator.platform);c.isios4=c.isios&&!(\"seal\"in Object);c.isandroid=/android/i.test(navigator.userAgent);c.trstyle=!1;c.hastransform=!1;c.hastranslate3d=!1;c.transitionstyle=!1;c.hastransition=!1;c.transitionend=!1;for(var k=[\"transform\",\"msTransform\",\"webkitTransform\",\"MozTransform\",\"OTransform\"],l=0;l<k.length;l++)if(\"undefined\"!=\n    typeof e.style[k[l]]){c.trstyle=k[l];break}c.hastransform=!1!=c.trstyle;c.hastransform&&(e.style[c.trstyle]=\"translate3d(1px,2px,3px)\",c.hastranslate3d=/translate3d/.test(e.style[c.trstyle]));c.transitionstyle=!1;c.prefixstyle=\"\";c.transitionend=!1;for(var k=\"transition webkitTransition MozTransition OTransition OTransition msTransition KhtmlTransition\".split(\" \"),q=\" -webkit- -moz- -o- -o -ms- -khtml-\".split(\" \"),t=\"transitionend webkitTransitionEnd transitionend otransitionend oTransitionEnd msTransitionEnd KhtmlTransitionEnd\".split(\" \"),\n                                                                                                                                                                                                                                                                     l=0;l<k.length;l++)if(k[l]in e.style){c.transitionstyle=k[l];c.prefixstyle=q[l];c.transitionend=t[l];break}c.ischrome26&&(c.prefixstyle=q[1]);c.hastransition=c.transitionstyle;a:{k=[\"-moz-grab\",\"-webkit-grab\",\"grab\"];if(c.ischrome&&!c.ischrome22||c.isie)k=[];for(l=0;l<k.length;l++)if(q=k[l],e.style.cursor=q,e.style.cursor==q){k=q;break a}k=\"url(http://www.google.com/intl/en_ALL/mapfiles/openhand.cur),n-resize\"}c.cursorgrabvalue=k;c.hasmousecapture=\"setCapture\"in e;c.hasMutationObserver=!1!==A;return G=\n    c},Q=function(h,c){function k(){var d=b.win;if(\"zIndex\"in d)return d.zIndex();for(;0<d.length&&9!=d[0].nodeType;){var c=d.css(\"zIndex\");if(!isNaN(c)&&0!=c)return parseInt(c);d=d.parent()}return!1}function l(d,c,f){c=d.css(c);d=parseFloat(c);return isNaN(d)?(d=u[c]||0,f=3==d?f?b.win.outerHeight()-b.win.innerHeight():b.win.outerWidth()-b.win.innerWidth():1,b.isie8&&d&&(d+=1),f?d:0):d}function q(d,c,f,g){b._bind(d,c,function(b){b=b?b:window.event;var g={original:b,target:b.target||b.srcElement,type:\"wheel\",\n    deltaMode:\"MozMousePixelScroll\"==b.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){b.preventDefault?b.preventDefault():b.returnValue=!1;return!1},stopImmediatePropagation:function(){b.stopImmediatePropagation?b.stopImmediatePropagation():b.cancelBubble=!0}};\"mousewheel\"==c?(g.deltaY=-0.025*b.wheelDelta,b.wheelDeltaX&&(g.deltaX=-0.025*b.wheelDeltaX)):g.deltaY=b.detail;return f.call(d,g)},g)}function t(d,c,f){var g,e;0==d.deltaMode?(g=-Math.floor(d.deltaX*(b.opt.mousescrollstep/54)),e=-Math.floor(d.deltaY*\n    (b.opt.mousescrollstep/54))):1==d.deltaMode&&(g=-Math.floor(d.deltaX*b.opt.mousescrollstep),e=-Math.floor(d.deltaY*b.opt.mousescrollstep));c&&(b.opt.oneaxismousemode&&0==g&&e)&&(g=e,e=0);g&&(b.scrollmom&&b.scrollmom.stop(),b.lastdeltax+=g,b.debounced(\"mousewheelx\",function(){var d=b.lastdeltax;b.lastdeltax=0;b.rail.drag||b.doScrollLeftBy(d)},120));if(e){if(b.opt.nativeparentscrolling&&f&&!b.ispage&&!b.zoomactive)if(0>e){if(b.getScrollTop()>=b.page.maxh)return!0}else if(0>=b.getScrollTop())return!0;\n    b.scrollmom&&b.scrollmom.stop();b.lastdeltay+=e;b.debounced(\"mousewheely\",function(){var d=b.lastdeltay;b.lastdeltay=0;b.rail.drag||b.doScrollBy(d)},120)}d.stopImmediatePropagation();return d.preventDefault()}var b=this;this.version=\"3.5.0\";this.name=\"nicescroll\";this.me=c;this.opt={doc:e(\"body\"),win:!1};e.extend(this.opt,I);this.opt.snapbackspeed=80;if(h)for(var p in b.opt)\"undefined\"!=typeof h[p]&&(b.opt[p]=h[p]);this.iddoc=(this.doc=b.opt.doc)&&this.doc[0]?this.doc[0].id||\"\":\"\";this.ispage=/BODY|HTML/.test(b.opt.win?\n    b.opt.win[0].nodeName:this.doc[0].nodeName);this.haswrapper=!1!==b.opt.win;this.win=b.opt.win||(this.ispage?e(window):this.doc);this.docscroll=this.ispage&&!this.haswrapper?e(window):this.win;this.body=e(\"body\");this.iframe=this.isfixed=this.viewport=!1;this.isiframe=\"IFRAME\"==this.doc[0].nodeName&&\"IFRAME\"==this.win[0].nodeName;this.istextarea=\"TEXTAREA\"==this.win[0].nodeName;this.forcescreen=!1;this.canshowonmouseevent=\"scroll\"!=b.opt.autohidemode;this.page=this.view=this.onzoomout=this.onzoomin=\n    this.onscrollcancel=this.onscrollend=this.onscrollstart=this.onclick=this.ongesturezoom=this.onkeypress=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=!1;this.scroll={x:0,y:0};this.scrollratio={x:0,y:0};this.cursorheight=20;this.scrollvaluemax=0;this.observerremover=this.observer=this.scrollmom=this.scrollrunning=this.checkrtlmode=!1;do this.id=\"ascrail\"+M++;while(document.getElementById(this.id));this.hasmousefocus=this.hasfocus=this.zoomactive=this.zoom=this.selectiondrag=this.cursorfreezed=\n    this.cursor=this.rail=!1;this.visibility=!0;this.hidden=this.locked=!1;this.cursoractive=!0;this.overflowx=b.opt.overflowx;this.overflowy=b.opt.overflowy;this.nativescrollingarea=!1;this.checkarea=0;this.events=[];this.saved={};this.delaylist={};this.synclist={};this.lastdeltay=this.lastdeltax=0;this.detected=P();var g=e.extend({},this.detected);this.ishwscroll=(this.canhwscroll=g.hastransform&&b.opt.hwacceleration)&&b.haswrapper;this.istouchcapable=!1;g.cantouch&&(g.ischrome&&!g.isios&&!g.isandroid)&&\n(this.istouchcapable=!0,g.cantouch=!1);g.cantouch&&(g.ismozilla&&!g.isios&&!g.isandroid)&&(this.istouchcapable=!0,g.cantouch=!1);b.opt.enablemouselockapi||(g.hasmousecapture=!1,g.haspointerlock=!1);this.delayed=function(d,c,f,g){var e=b.delaylist[d],k=(new Date).getTime();if(!g&&e&&e.tt)return!1;e&&e.tt&&clearTimeout(e.tt);if(e&&e.last+f>k&&!e.tt)b.delaylist[d]={last:k+f,tt:setTimeout(function(){b.delaylist[d].tt=0;c.call()},f)};else if(!e||!e.tt)b.delaylist[d]={last:k,tt:0},setTimeout(function(){c.call()},\n    0)};this.debounced=function(d,c,f){var g=b.delaylist[d];(new Date).getTime();b.delaylist[d]=c;g||setTimeout(function(){var c=b.delaylist[d];b.delaylist[d]=!1;c.call()},f)};this.synched=function(d,c){b.synclist[d]=c;(function(){b.onsync||(v(function(){b.onsync=!1;for(d in b.synclist){var c=b.synclist[d];c&&c.call(b);b.synclist[d]=!1}}),b.onsync=!0)})();return d};this.unsynched=function(d){b.synclist[d]&&(b.synclist[d]=!1)};this.css=function(d,c){for(var f in c)b.saved.css.push([d,f,d.css(f)]),d.css(f,\n    c[f])};this.scrollTop=function(d){return\"undefined\"==typeof d?b.getScrollTop():b.setScrollTop(d)};this.scrollLeft=function(d){return\"undefined\"==typeof d?b.getScrollLeft():b.setScrollLeft(d)};BezierClass=function(b,c,f,g,e,k,l){this.st=b;this.ed=c;this.spd=f;this.p1=g||0;this.p2=e||1;this.p3=k||0;this.p4=l||1;this.ts=(new Date).getTime();this.df=this.ed-this.st};BezierClass.prototype={B2:function(b){return 3*b*b*(1-b)},B3:function(b){return 3*b*(1-b)*(1-b)},B4:function(b){return(1-b)*(1-b)*(1-b)},\n    getNow:function(){var b=1-((new Date).getTime()-this.ts)/this.spd,c=this.B2(b)+this.B3(b)+this.B4(b);return 0>b?this.ed:this.st+Math.round(this.df*c)},update:function(b,c){this.st=this.getNow();this.ed=b;this.spd=c;this.ts=(new Date).getTime();this.df=this.ed-this.st;return this}};if(this.ishwscroll){this.doc.translate={x:0,y:0,tx:\"0px\",ty:\"0px\"};g.hastranslate3d&&g.isios&&this.doc.css(\"-webkit-backface-visibility\",\"hidden\");var s=function(){var d=b.doc.css(g.trstyle);return d&&\"matrix\"==d.substr(0,\n    6)?d.replace(/^.*\\((.*)\\)$/g,\"$1\").replace(/px/g,\"\").split(/, +/):!1};this.getScrollTop=function(d){if(!d){if(d=s())return 16==d.length?-d[13]:-d[5];if(b.timerscroll&&b.timerscroll.bz)return b.timerscroll.bz.getNow()}return b.doc.translate.y};this.getScrollLeft=function(d){if(!d){if(d=s())return 16==d.length?-d[12]:-d[4];if(b.timerscroll&&b.timerscroll.bh)return b.timerscroll.bh.getNow()}return b.doc.translate.x};this.notifyScrollEvent=document.createEvent?function(b){var c=document.createEvent(\"UIEvents\");\n    c.initUIEvent(\"scroll\",!1,!0,window,1);b.dispatchEvent(c)}:document.fireEvent?function(b){var c=document.createEventObject();b.fireEvent(\"onscroll\");c.cancelBubble=!0}:function(b,c){};g.hastranslate3d&&b.opt.enabletranslate3d?(this.setScrollTop=function(d,c){b.doc.translate.y=d;b.doc.translate.ty=-1*d+\"px\";b.doc.css(g.trstyle,\"translate3d(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\",0px)\");c||b.notifyScrollEvent(b.win[0])},this.setScrollLeft=function(d,c){b.doc.translate.x=d;b.doc.translate.tx=-1*\n    d+\"px\";b.doc.css(g.trstyle,\"translate3d(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\",0px)\");c||b.notifyScrollEvent(b.win[0])}):(this.setScrollTop=function(d,c){b.doc.translate.y=d;b.doc.translate.ty=-1*d+\"px\";b.doc.css(g.trstyle,\"translate(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\")\");c||b.notifyScrollEvent(b.win[0])},this.setScrollLeft=function(d,c){b.doc.translate.x=d;b.doc.translate.tx=-1*d+\"px\";b.doc.css(g.trstyle,\"translate(\"+b.doc.translate.tx+\",\"+b.doc.translate.ty+\")\");c||b.notifyScrollEvent(b.win[0])})}else this.getScrollTop=\n    function(){return b.docscroll.scrollTop()},this.setScrollTop=function(d){return b.docscroll.scrollTop(d)},this.getScrollLeft=function(){return b.docscroll.scrollLeft()},this.setScrollLeft=function(d){return b.docscroll.scrollLeft(d)};this.getTarget=function(b){return!b?!1:b.target?b.target:b.srcElement?b.srcElement:!1};this.hasParent=function(b,c){if(!b)return!1;for(var f=b.target||b.srcElement||b||!1;f&&f.id!=c;)f=f.parentNode||!1;return!1!==f};var u={thin:1,medium:3,thick:5};this.getOffset=function(){if(b.isfixed)return{top:parseFloat(b.win.css(\"top\")),\n    left:parseFloat(b.win.css(\"left\"))};if(!b.viewport)return b.win.offset();var d=b.win.offset(),c=b.viewport.offset();return{top:d.top-c.top+b.viewport.scrollTop(),left:d.left-c.left+b.viewport.scrollLeft()}};this.updateScrollBar=function(d){if(b.ishwscroll)b.rail.css({height:b.win.innerHeight()}),b.railh&&b.railh.css({width:b.win.innerWidth()});else{var c=b.getOffset(),f=c.top,g=c.left,f=f+l(b.win,\"border-top-width\",!0);b.win.outerWidth();b.win.innerWidth();var g=g+(b.rail.align?b.win.outerWidth()-\n    l(b.win,\"border-right-width\")-b.rail.width:l(b.win,\"border-left-width\")),e=b.opt.railoffset;e&&(e.top&&(f+=e.top),b.rail.align&&e.left&&(g+=e.left));b.locked||b.rail.css({top:f,left:g,height:d?d.h:b.win.innerHeight()});b.zoom&&b.zoom.css({top:f+1,left:1==b.rail.align?g-20:g+b.rail.width+4});b.railh&&!b.locked&&(f=c.top,g=c.left,d=b.railh.align?f+l(b.win,\"border-top-width\",!0)+b.win.innerHeight()-b.railh.height:f+l(b.win,\"border-top-width\",!0),g+=l(b.win,\"border-left-width\"),b.railh.css({top:d,left:g,\n    width:b.railh.width}))}};this.doRailClick=function(d,c,f){var g;b.locked||(b.cancelEvent(d),c?(c=f?b.doScrollLeft:b.doScrollTop,g=f?(d.pageX-b.railh.offset().left-b.cursorwidth/2)*b.scrollratio.x:(d.pageY-b.rail.offset().top-b.cursorheight/2)*b.scrollratio.y,c(g)):(c=f?b.doScrollLeftBy:b.doScrollBy,g=f?b.scroll.x:b.scroll.y,d=f?d.pageX-b.railh.offset().left:d.pageY-b.rail.offset().top,f=f?b.view.w:b.view.h,g>=d?c(f):c(-f)))};b.hasanimationframe=v;b.hascancelanimationframe=w;b.hasanimationframe?b.hascancelanimationframe||\n    (w=function(){b.cancelAnimationFrame=!0}):(v=function(b){return setTimeout(b,15-Math.floor(+new Date/1E3)%16)},w=clearInterval);this.init=function(){b.saved.css=[];if(g.isie7mobile||g.isoperamini)return!0;g.hasmstouch&&b.css(b.ispage?e(\"html\"):b.win,{\"-ms-touch-action\":\"none\"});b.zindex=\"auto\";b.zindex=!b.ispage&&\"auto\"==b.opt.zindex?k()||\"auto\":b.opt.zindex;!b.ispage&&\"auto\"!=b.zindex&&b.zindex>y&&(y=b.zindex);b.isie&&(0==b.zindex&&\"auto\"==b.opt.zindex)&&(b.zindex=\"auto\");if(!b.ispage||!g.cantouch&&\n    !g.isieold&&!g.isie9mobile){var d=b.docscroll;b.ispage&&(d=b.haswrapper?b.win:b.doc);g.isie9mobile||b.css(d,{\"overflow-y\":\"hidden\"});b.ispage&&g.isie7&&(\"BODY\"==b.doc[0].nodeName?b.css(e(\"html\"),{\"overflow-y\":\"hidden\"}):\"HTML\"==b.doc[0].nodeName&&b.css(e(\"body\"),{\"overflow-y\":\"hidden\"}));g.isios&&(!b.ispage&&!b.haswrapper)&&b.css(e(\"body\"),{\"-webkit-overflow-scrolling\":\"touch\"});var c=e(document.createElement(\"div\"));c.css({position:\"relative\",top:0,\"float\":\"right\",width:b.opt.cursorwidth,height:\"0px\",\n    \"background-color\":b.opt.cursorcolor,border:b.opt.cursorborder,\"background-clip\":\"padding-box\",\"-webkit-border-radius\":b.opt.cursorborderradius,\"-moz-border-radius\":b.opt.cursorborderradius,\"border-radius\":b.opt.cursorborderradius});c.hborder=parseFloat(c.outerHeight()-c.innerHeight());b.cursor=c;var f=e(document.createElement(\"div\"));f.attr(\"id\",b.id);f.addClass(\"nicescroll-rails\");var l,h,x=[\"left\",\"right\"],q;for(q in x)h=x[q],(l=b.opt.railpadding[h])?f.css(\"padding-\"+h,l+\"px\"):b.opt.railpadding[h]=\n    0;f.append(c);f.width=Math.max(parseFloat(b.opt.cursorwidth),c.outerWidth())+b.opt.railpadding.left+b.opt.railpadding.right;f.css({width:f.width+\"px\",zIndex:b.zindex,background:b.opt.background,cursor:\"default\"});f.visibility=!0;f.scrollable=!0;f.align=\"left\"==b.opt.railalign?0:1;b.rail=f;c=b.rail.drag=!1;b.opt.boxzoom&&(!b.ispage&&!g.isieold)&&(c=document.createElement(\"div\"),b.bind(c,\"click\",b.doZoom),b.zoom=e(c),b.zoom.css({cursor:\"pointer\",\"z-index\":b.zindex,backgroundImage:\"url(\"+N+\"zoomico.png)\",\n    height:18,width:18,backgroundPosition:\"0px 0px\"}),b.opt.dblclickzoom&&b.bind(b.win,\"dblclick\",b.doZoom),g.cantouch&&b.opt.gesturezoom&&(b.ongesturezoom=function(d){1.5<d.scale&&b.doZoomIn(d);0.8>d.scale&&b.doZoomOut(d);return b.cancelEvent(d)},b.bind(b.win,\"gestureend\",b.ongesturezoom)));b.railh=!1;if(b.opt.horizrailenabled){b.css(d,{\"overflow-x\":\"hidden\"});c=e(document.createElement(\"div\"));c.css({position:\"relative\",top:0,height:b.opt.cursorwidth,width:\"0px\",\"background-color\":b.opt.cursorcolor,\n    border:b.opt.cursorborder,\"background-clip\":\"padding-box\",\"-webkit-border-radius\":b.opt.cursorborderradius,\"-moz-border-radius\":b.opt.cursorborderradius,\"border-radius\":b.opt.cursorborderradius});c.wborder=parseFloat(c.outerWidth()-c.innerWidth());b.cursorh=c;var m=e(document.createElement(\"div\"));m.attr(\"id\",b.id+\"-hr\");m.addClass(\"nicescroll-rails\");m.height=Math.max(parseFloat(b.opt.cursorwidth),c.outerHeight());m.css({height:m.height+\"px\",zIndex:b.zindex,background:b.opt.background});m.append(c);\n    m.visibility=!0;m.scrollable=!0;m.align=\"top\"==b.opt.railvalign?0:1;b.railh=m;b.railh.drag=!1}b.ispage?(f.css({position:\"fixed\",top:\"0px\",height:\"100%\"}),f.align?f.css({right:\"0px\"}):f.css({left:\"0px\"}),b.body.append(f),b.railh&&(m.css({position:\"fixed\",left:\"0px\",width:\"100%\"}),m.align?m.css({bottom:\"0px\"}):m.css({top:\"0px\"}),b.body.append(m))):(b.ishwscroll?(\"static\"==b.win.css(\"position\")&&b.css(b.win,{position:\"relative\"}),d=\"HTML\"==b.win[0].nodeName?b.body:b.win,b.zoom&&(b.zoom.css({position:\"absolute\",\n    top:1,right:0,\"margin-right\":f.width+4}),d.append(b.zoom)),f.css({position:\"absolute\",top:0}),f.align?f.css({right:0}):f.css({left:0}),d.append(f),m&&(m.css({position:\"absolute\",left:0,bottom:0}),m.align?m.css({bottom:0}):m.css({top:0}),d.append(m))):(b.isfixed=\"fixed\"==b.win.css(\"position\"),d=b.isfixed?\"fixed\":\"absolute\",b.isfixed||(b.viewport=b.getViewport(b.win[0])),b.viewport&&(b.body=b.viewport,!1==/fixed|relative|absolute/.test(b.viewport.css(\"position\"))&&b.css(b.viewport,{position:\"relative\"})),\n    f.css({position:d}),b.zoom&&b.zoom.css({position:d}),b.updateScrollBar(),b.body.append(f),b.zoom&&b.body.append(b.zoom),b.railh&&(m.css({position:d}),b.body.append(m))),g.isios&&b.css(b.win,{\"-webkit-tap-highlight-color\":\"rgba(0,0,0,0)\",\"-webkit-touch-callout\":\"none\"}),g.isie&&b.opt.disableoutline&&b.win.attr(\"hideFocus\",\"true\"),g.iswebkit&&b.opt.disableoutline&&b.win.css({outline:\"none\"}));!1===b.opt.autohidemode?(b.autohidedom=!1,b.rail.css({opacity:b.opt.cursoropacitymax}),b.railh&&b.railh.css({opacity:b.opt.cursoropacitymax})):\n    !0===b.opt.autohidemode||\"leave\"===b.opt.autohidemode?(b.autohidedom=e().add(b.rail),g.isie8&&(b.autohidedom=b.autohidedom.add(b.cursor)),b.railh&&(b.autohidedom=b.autohidedom.add(b.railh)),b.railh&&g.isie8&&(b.autohidedom=b.autohidedom.add(b.cursorh))):\"scroll\"==b.opt.autohidemode?(b.autohidedom=e().add(b.rail),b.railh&&(b.autohidedom=b.autohidedom.add(b.railh))):\"cursor\"==b.opt.autohidemode?(b.autohidedom=e().add(b.cursor),b.railh&&(b.autohidedom=b.autohidedom.add(b.cursorh))):\"hidden\"==b.opt.autohidemode&&\n        (b.autohidedom=!1,b.hide(),b.locked=!1);if(g.isie9mobile)b.scrollmom=new J(b),b.onmangotouch=function(d){d=b.getScrollTop();var c=b.getScrollLeft();if(d==b.scrollmom.lastscrolly&&c==b.scrollmom.lastscrollx)return!0;var f=d-b.mangotouch.sy,g=c-b.mangotouch.sx;if(0!=Math.round(Math.sqrt(Math.pow(g,2)+Math.pow(f,2)))){var n=0>f?-1:1,e=0>g?-1:1,k=+new Date;b.mangotouch.lazy&&clearTimeout(b.mangotouch.lazy);80<k-b.mangotouch.tm||b.mangotouch.dry!=n||b.mangotouch.drx!=e?(b.scrollmom.stop(),b.scrollmom.reset(c,\n    d),b.mangotouch.sy=d,b.mangotouch.ly=d,b.mangotouch.sx=c,b.mangotouch.lx=c,b.mangotouch.dry=n,b.mangotouch.drx=e,b.mangotouch.tm=k):(b.scrollmom.stop(),b.scrollmom.update(b.mangotouch.sx-g,b.mangotouch.sy-f),b.mangotouch.tm=k,f=Math.max(Math.abs(b.mangotouch.ly-d),Math.abs(b.mangotouch.lx-c)),b.mangotouch.ly=d,b.mangotouch.lx=c,2<f&&(b.mangotouch.lazy=setTimeout(function(){b.mangotouch.lazy=!1;b.mangotouch.dry=0;b.mangotouch.drx=0;b.mangotouch.tm=0;b.scrollmom.doMomentum(30)},100)))}},f=b.getScrollTop(),\n    m=b.getScrollLeft(),b.mangotouch={sy:f,ly:f,dry:0,sx:m,lx:m,drx:0,lazy:!1,tm:0},b.bind(b.docscroll,\"scroll\",b.onmangotouch);else{if(g.cantouch||b.istouchcapable||b.opt.touchbehavior||g.hasmstouch){b.scrollmom=new J(b);b.ontouchstart=function(d){if(d.pointerType&&2!=d.pointerType)return!1;if(!b.locked){if(g.hasmstouch)for(var c=d.target?d.target:!1;c;){var f=e(c).getNiceScroll();if(0<f.length&&f[0].me==b.me)break;if(0<f.length)return!1;if(\"DIV\"==c.nodeName&&c.id==b.id)break;c=c.parentNode?c.parentNode:\n    !1}b.cancelScroll();if((c=b.getTarget(d))&&/INPUT/i.test(c.nodeName)&&/range/i.test(c.type))return b.stopPropagation(d);!(\"clientX\"in d)&&\"changedTouches\"in d&&(d.clientX=d.changedTouches[0].clientX,d.clientY=d.changedTouches[0].clientY);b.forcescreen&&(f=d,d={original:d.original?d.original:d},d.clientX=f.screenX,d.clientY=f.screenY);b.rail.drag={x:d.clientX,y:d.clientY,sx:b.scroll.x,sy:b.scroll.y,st:b.getScrollTop(),sl:b.getScrollLeft(),pt:2,dl:!1};if(b.ispage||!b.opt.directionlockdeadzone)b.rail.drag.dl=\n    \"f\";else{var f=e(window).width(),n=e(window).height(),k=Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),l=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),n=Math.max(0,l-n),f=Math.max(0,k-f);b.rail.drag.ck=!b.rail.scrollable&&b.railh.scrollable?0<n?\"v\":!1:b.rail.scrollable&&!b.railh.scrollable?0<f?\"h\":!1:!1;b.rail.drag.ck||(b.rail.drag.dl=\"f\")}b.opt.touchbehavior&&(b.isiframe&&g.isie)&&(f=b.win.position(),b.rail.drag.x+=f.left,b.rail.drag.y+=f.top);\n    b.hasmoving=!1;b.lastmouseup=!1;b.scrollmom.reset(d.clientX,d.clientY);if(!g.cantouch&&!this.istouchcapable&&!g.hasmstouch){if(!c||!/INPUT|SELECT|TEXTAREA/i.test(c.nodeName))return!b.ispage&&g.hasmousecapture&&c.setCapture(),b.opt.touchbehavior?b.cancelEvent(d):b.stopPropagation(d);/SUBMIT|CANCEL|BUTTON/i.test(e(c).attr(\"type\"))&&(pc={tg:c,click:!1},b.preventclick=pc)}}};b.ontouchend=function(d){if(d.pointerType&&2!=d.pointerType)return!1;if(b.rail.drag&&2==b.rail.drag.pt&&(b.scrollmom.doMomentum(),\n    b.rail.drag=!1,b.hasmoving&&(b.hasmoving=!1,b.lastmouseup=!0,b.hideCursor(),g.hasmousecapture&&document.releaseCapture(),!g.cantouch)))return b.cancelEvent(d)};var t=b.opt.touchbehavior&&b.isiframe&&!g.hasmousecapture;b.ontouchmove=function(d,c){if(d.pointerType&&2!=d.pointerType)return!1;if(b.rail.drag&&2==b.rail.drag.pt){if(g.cantouch&&\"undefined\"==typeof d.original)return!0;b.hasmoving=!0;b.preventclick&&!b.preventclick.click&&(b.preventclick.click=b.preventclick.tg.onclick||!1,b.preventclick.tg.onclick=\n    b.onpreventclick);d=e.extend({original:d},d);\"changedTouches\"in d&&(d.clientX=d.changedTouches[0].clientX,d.clientY=d.changedTouches[0].clientY);if(b.forcescreen){var f=d;d={original:d.original?d.original:d};d.clientX=f.screenX;d.clientY=f.screenY}f=ofy=0;if(t&&!c){var n=b.win.position(),f=-n.left;ofy=-n.top}var k=d.clientY+ofy,n=k-b.rail.drag.y,l=d.clientX+f,h=l-b.rail.drag.x,r=b.rail.drag.st-n;b.ishwscroll&&b.opt.bouncescroll?0>r?r=Math.round(r/2):r>b.page.maxh&&(r=b.page.maxh+Math.round((r-b.page.maxh)/\n    2)):(0>r&&(k=r=0),r>b.page.maxh&&(r=b.page.maxh,k=0));if(b.railh&&b.railh.scrollable){var m=b.rail.drag.sl-h;b.ishwscroll&&b.opt.bouncescroll?0>m?m=Math.round(m/2):m>b.page.maxw&&(m=b.page.maxw+Math.round((m-b.page.maxw)/2)):(0>m&&(l=m=0),m>b.page.maxw&&(m=b.page.maxw,l=0))}f=!1;if(b.rail.drag.dl)f=!0,\"v\"==b.rail.drag.dl?m=b.rail.drag.sl:\"h\"==b.rail.drag.dl&&(r=b.rail.drag.st);else{var n=Math.abs(n),h=Math.abs(h),x=b.opt.directionlockdeadzone;if(\"v\"==b.rail.drag.ck){if(n>x&&h<=0.3*n)return b.rail.drag=\n    !1,!0;h>x&&(b.rail.drag.dl=\"f\",e(\"body\").scrollTop(e(\"body\").scrollTop()))}else if(\"h\"==b.rail.drag.ck){if(h>x&&n<=0.3*h)return b.rail.drag=!1,!0;n>x&&(b.rail.drag.dl=\"f\",e(\"body\").scrollLeft(e(\"body\").scrollLeft()))}}b.synched(\"touchmove\",function(){b.rail.drag&&2==b.rail.drag.pt&&(b.prepareTransition&&b.prepareTransition(0),b.rail.scrollable&&b.setScrollTop(r),b.scrollmom.update(l,k),b.railh&&b.railh.scrollable?(b.setScrollLeft(m),b.showCursor(r,m)):b.showCursor(r),g.isie10&&document.selection.clear())});\n    g.ischrome&&b.istouchcapable&&(f=!1);if(f)return b.cancelEvent(d)}}}b.onmousedown=function(d,c){if(!(b.rail.drag&&1!=b.rail.drag.pt)){if(b.locked)return b.cancelEvent(d);b.cancelScroll();b.rail.drag={x:d.clientX,y:d.clientY,sx:b.scroll.x,sy:b.scroll.y,pt:1,hr:!!c};var f=b.getTarget(d);!b.ispage&&g.hasmousecapture&&f.setCapture();b.isiframe&&!g.hasmousecapture&&(b.saved.csspointerevents=b.doc.css(\"pointer-events\"),b.css(b.doc,{\"pointer-events\":\"none\"}));return b.cancelEvent(d)}};b.onmouseup=function(d){if(b.rail.drag&&\n    (g.hasmousecapture&&document.releaseCapture(),b.isiframe&&!g.hasmousecapture&&b.doc.css(\"pointer-events\",b.saved.csspointerevents),1==b.rail.drag.pt))return b.rail.drag=!1,b.cancelEvent(d)};b.onmousemove=function(d){if(b.rail.drag&&1==b.rail.drag.pt){if(g.ischrome&&0==d.which)return b.onmouseup(d);b.cursorfreezed=!0;if(b.rail.drag.hr){b.scroll.x=b.rail.drag.sx+(d.clientX-b.rail.drag.x);0>b.scroll.x&&(b.scroll.x=0);var c=b.scrollvaluemaxw;b.scroll.x>c&&(b.scroll.x=c)}else b.scroll.y=b.rail.drag.sy+\n    (d.clientY-b.rail.drag.y),0>b.scroll.y&&(b.scroll.y=0),c=b.scrollvaluemax,b.scroll.y>c&&(b.scroll.y=c);b.synched(\"mousemove\",function(){b.rail.drag&&1==b.rail.drag.pt&&(b.showCursor(),b.rail.drag.hr?b.doScrollLeft(Math.round(b.scroll.x*b.scrollratio.x),b.opt.cursordragspeed):b.doScrollTop(Math.round(b.scroll.y*b.scrollratio.y),b.opt.cursordragspeed))});return b.cancelEvent(d)}};if(g.cantouch||b.opt.touchbehavior)b.onpreventclick=function(d){if(b.preventclick)return b.preventclick.tg.onclick=b.preventclick.click,\n    b.preventclick=!1,b.cancelEvent(d)},b.bind(b.win,\"mousedown\",b.ontouchstart),b.onclick=g.isios?!1:function(d){return b.lastmouseup?(b.lastmouseup=!1,b.cancelEvent(d)):!0},b.opt.grabcursorenabled&&g.cursorgrabvalue&&(b.css(b.ispage?b.doc:b.win,{cursor:g.cursorgrabvalue}),b.css(b.rail,{cursor:g.cursorgrabvalue}));else{var p=function(d){if(b.selectiondrag){if(d){var c=b.win.outerHeight();d=d.pageY-b.selectiondrag.top;0<d&&d<c&&(d=0);d>=c&&(d-=c);b.selectiondrag.df=d}0!=b.selectiondrag.df&&(b.doScrollBy(2*\n    -Math.floor(b.selectiondrag.df/6)),b.debounced(\"doselectionscroll\",function(){p()},50))}};b.hasTextSelected=\"getSelection\"in document?function(){return 0<document.getSelection().rangeCount}:\"selection\"in document?function(){return\"None\"!=document.selection.type}:function(){return!1};b.onselectionstart=function(d){b.ispage||(b.selectiondrag=b.win.offset())};b.onselectionend=function(d){b.selectiondrag=!1};b.onselectiondrag=function(d){b.selectiondrag&&b.hasTextSelected()&&b.debounced(\"selectionscroll\",\n    function(){p(d)},250)}}g.hasmstouch&&(b.css(b.rail,{\"-ms-touch-action\":\"none\"}),b.css(b.cursor,{\"-ms-touch-action\":\"none\"}),b.bind(b.win,\"MSPointerDown\",b.ontouchstart),b.bind(document,\"MSPointerUp\",b.ontouchend),b.bind(document,\"MSPointerMove\",b.ontouchmove),b.bind(b.cursor,\"MSGestureHold\",function(b){b.preventDefault()}),b.bind(b.cursor,\"contextmenu\",function(b){b.preventDefault()}));this.istouchcapable&&(b.bind(b.win,\"touchstart\",b.ontouchstart),b.bind(document,\"touchend\",b.ontouchend),b.bind(document,\n    \"touchcancel\",b.ontouchend),b.bind(document,\"touchmove\",b.ontouchmove));b.bind(b.cursor,\"mousedown\",b.onmousedown);b.bind(b.cursor,\"mouseup\",b.onmouseup);b.railh&&(b.bind(b.cursorh,\"mousedown\",function(d){b.onmousedown(d,!0)}),b.bind(b.cursorh,\"mouseup\",function(d){if(!(b.rail.drag&&2==b.rail.drag.pt))return b.rail.drag=!1,b.hasmoving=!1,b.hideCursor(),g.hasmousecapture&&document.releaseCapture(),b.cancelEvent(d)}));if(b.opt.cursordragontouch||!g.cantouch&&!b.opt.touchbehavior)b.rail.css({cursor:\"default\"}),\n    b.railh&&b.railh.css({cursor:\"default\"}),b.jqbind(b.rail,\"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),b.jqbind(b.rail,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}),b.opt.sensitiverail&&(b.bind(b.rail,\"click\",function(d){b.doRailClick(d,!1,!1)}),b.bind(b.rail,\"dblclick\",function(d){b.doRailClick(d,!0,!1)}),b.bind(b.cursor,\"click\",function(d){b.cancelEvent(d)}),b.bind(b.cursor,\"dblclick\",function(d){b.cancelEvent(d)})),b.railh&&(b.jqbind(b.railh,\n    \"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),b.jqbind(b.railh,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}),b.opt.sensitiverail&&(b.bind(b.railh,\"click\",function(d){b.doRailClick(d,!1,!0)}),b.bind(b.railh,\"dblclick\",function(d){b.doRailClick(d,!0,!0)}),b.bind(b.cursorh,\"click\",function(d){b.cancelEvent(d)}),b.bind(b.cursorh,\"dblclick\",function(d){b.cancelEvent(d)})));!g.cantouch&&!b.opt.touchbehavior?(b.bind(g.hasmousecapture?b.win:document,\n    \"mouseup\",b.onmouseup),b.bind(document,\"mousemove\",b.onmousemove),b.onclick&&b.bind(document,\"click\",b.onclick),!b.ispage&&b.opt.enablescrollonselection&&(b.bind(b.win[0],\"mousedown\",b.onselectionstart),b.bind(document,\"mouseup\",b.onselectionend),b.bind(b.cursor,\"mouseup\",b.onselectionend),b.cursorh&&b.bind(b.cursorh,\"mouseup\",b.onselectionend),b.bind(document,\"mousemove\",b.onselectiondrag)),b.zoom&&(b.jqbind(b.zoom,\"mouseenter\",function(){b.canshowonmouseevent&&b.showCursor();b.rail.active=!0}),\n    b.jqbind(b.zoom,\"mouseleave\",function(){b.rail.active=!1;b.rail.drag||b.hideCursor()}))):(b.bind(g.hasmousecapture?b.win:document,\"mouseup\",b.ontouchend),b.bind(document,\"mousemove\",b.ontouchmove),b.onclick&&b.bind(document,\"click\",b.onclick),b.opt.cursordragontouch&&(b.bind(b.cursor,\"mousedown\",b.onmousedown),b.bind(b.cursor,\"mousemove\",b.onmousemove),b.cursorh&&b.bind(b.cursorh,\"mousedown\",function(d){b.onmousedown(d,!0)}),b.cursorh&&b.bind(b.cursorh,\"mousemove\",b.onmousemove)));b.opt.enablemousewheel&&\n(b.isiframe||b.bind(g.isie&&b.ispage?document:b.win,\"mousewheel\",b.onmousewheel),b.bind(b.rail,\"mousewheel\",b.onmousewheel),b.railh&&b.bind(b.railh,\"mousewheel\",b.onmousewheelhr));!b.ispage&&(!g.cantouch&&!/HTML|BODY/.test(b.win[0].nodeName))&&(b.win.attr(\"tabindex\")||b.win.attr({tabindex:L++}),b.jqbind(b.win,\"focus\",function(d){z=b.getTarget(d).id||!0;b.hasfocus=!0;b.canshowonmouseevent&&b.noticeCursor()}),b.jqbind(b.win,\"blur\",function(d){z=!1;b.hasfocus=!1}),b.jqbind(b.win,\"mouseenter\",function(d){E=\n    b.getTarget(d).id||!0;b.hasmousefocus=!0;b.canshowonmouseevent&&b.noticeCursor()}),b.jqbind(b.win,\"mouseleave\",function(){E=!1;b.hasmousefocus=!1;b.rail.drag||b.hideCursor()}))}b.onkeypress=function(d){if(b.locked&&0==b.page.maxh)return!0;d=d?d:window.e;var c=b.getTarget(d);if(c&&/INPUT|TEXTAREA|SELECT|OPTION/.test(c.nodeName)&&(!c.getAttribute(\"type\")&&!c.type||!/submit|button|cancel/i.tp))return!0;if(b.hasfocus||b.hasmousefocus&&!z||b.ispage&&!z&&!E){c=d.keyCode;if(b.locked&&27!=c)return b.cancelEvent(d);\n    var f=d.ctrlKey||!1,n=d.shiftKey||!1,g=!1;switch(c){case 38:case 63233:b.doScrollBy(72);g=!0;break;case 40:case 63235:b.doScrollBy(-72);g=!0;break;case 37:case 63232:b.railh&&(f?b.doScrollLeft(0):b.doScrollLeftBy(72),g=!0);break;case 39:case 63234:b.railh&&(f?b.doScrollLeft(b.page.maxw):b.doScrollLeftBy(-72),g=!0);break;case 33:case 63276:b.doScrollBy(b.view.h);g=!0;break;case 34:case 63277:b.doScrollBy(-b.view.h);g=!0;break;case 36:case 63273:b.railh&&f?b.doScrollPos(0,0):b.doScrollTo(0);g=!0;break;\n        case 35:case 63275:b.railh&&f?b.doScrollPos(b.page.maxw,b.page.maxh):b.doScrollTo(b.page.maxh);g=!0;break;case 32:b.opt.spacebarenabled&&(n?b.doScrollBy(b.view.h):b.doScrollBy(-b.view.h),g=!0);break;case 27:b.zoomactive&&(b.doZoom(),g=!0)}if(g)return b.cancelEvent(d)}};b.opt.enablekeyboard&&b.bind(document,g.isopera&&!g.isopera12?\"keypress\":\"keydown\",b.onkeypress);b.bind(window,\"resize\",b.lazyResize);b.bind(window,\"orientationchange\",b.lazyResize);b.bind(window,\"load\",b.lazyResize);if(g.ischrome&&\n    !b.ispage&&!b.haswrapper){var s=b.win.attr(\"style\"),f=parseFloat(b.win.css(\"width\"))+1;b.win.css(\"width\",f);b.synched(\"chromefix\",function(){b.win.attr(\"style\",s)})}b.onAttributeChange=function(d){b.lazyResize(250)};!b.ispage&&!b.haswrapper&&(!1!==A?(b.observer=new A(function(d){d.forEach(b.onAttributeChange)}),b.observer.observe(b.win[0],{childList:!0,characterData:!1,attributes:!0,subtree:!1}),b.observerremover=new A(function(d){d.forEach(function(d){if(0<d.removedNodes.length)for(var c in d.removedNodes)if(d.removedNodes[c]==\n    b.win[0])return b.remove()})}),b.observerremover.observe(b.win[0].parentNode,{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(b.bind(b.win,g.isie&&!g.isie9?\"propertychange\":\"DOMAttrModified\",b.onAttributeChange),g.isie9&&b.win[0].attachEvent(\"onpropertychange\",b.onAttributeChange),b.bind(b.win,\"DOMNodeRemoved\",function(d){d.target==b.win[0]&&b.remove()})));!b.ispage&&b.opt.boxzoom&&b.bind(window,\"resize\",b.resizeZoom);b.istextarea&&b.bind(b.win,\"mouseup\",b.lazyResize);b.checkrtlmode=!0;\n    b.lazyResize(30)}if(\"IFRAME\"==this.doc[0].nodeName){var K=function(d){b.iframexd=!1;try{var c=\"contentDocument\"in this?this.contentDocument:this.contentWindow.document}catch(f){b.iframexd=!0,c=!1}if(b.iframexd)return\"console\"in window&&console.log(\"NiceScroll error: policy restriced iframe\"),!0;b.forcescreen=!0;b.isiframe&&(b.iframe={doc:e(c),html:b.doc.contents().find(\"html\")[0],body:b.doc.contents().find(\"body\")[0]},b.getContentSize=function(){return{w:Math.max(b.iframe.html.scrollWidth,b.iframe.body.scrollWidth),\n    h:Math.max(b.iframe.html.scrollHeight,b.iframe.body.scrollHeight)}},b.docscroll=e(b.iframe.body));!g.isios&&(b.opt.iframeautoresize&&!b.isiframe)&&(b.win.scrollTop(0),b.doc.height(\"\"),d=Math.max(c.getElementsByTagName(\"html\")[0].scrollHeight,c.body.scrollHeight),b.doc.height(d));b.lazyResize(30);g.isie7&&b.css(e(b.iframe.html),{\"overflow-y\":\"hidden\"});b.css(e(b.iframe.body),{\"overflow-y\":\"hidden\"});g.isios&&b.haswrapper&&b.css(e(c.body),{\"-webkit-transform\":\"translate3d(0,0,0)\"});\"contentWindow\"in\n    this?b.bind(this.contentWindow,\"scroll\",b.onscroll):b.bind(c,\"scroll\",b.onscroll);b.opt.enablemousewheel&&b.bind(c,\"mousewheel\",b.onmousewheel);b.opt.enablekeyboard&&b.bind(c,g.isopera?\"keypress\":\"keydown\",b.onkeypress);if(g.cantouch||b.opt.touchbehavior)b.bind(c,\"mousedown\",b.ontouchstart),b.bind(c,\"mousemove\",function(d){b.ontouchmove(d,!0)}),b.opt.grabcursorenabled&&g.cursorgrabvalue&&b.css(e(c.body),{cursor:g.cursorgrabvalue});b.bind(c,\"mouseup\",b.ontouchend);b.zoom&&(b.opt.dblclickzoom&&b.bind(c,\n    \"dblclick\",b.doZoom),b.ongesturezoom&&b.bind(c,\"gestureend\",b.ongesturezoom))};this.doc[0].readyState&&\"complete\"==this.doc[0].readyState&&setTimeout(function(){K.call(b.doc[0],!1)},500);b.bind(this.doc,\"load\",K)}};this.showCursor=function(d,c){b.cursortimeout&&(clearTimeout(b.cursortimeout),b.cursortimeout=0);if(b.rail){b.autohidedom&&(b.autohidedom.stop().css({opacity:b.opt.cursoropacitymax}),b.cursoractive=!0);if(!b.rail.drag||1!=b.rail.drag.pt)\"undefined\"!=typeof d&&!1!==d&&(b.scroll.y=Math.round(1*\n    d/b.scrollratio.y)),\"undefined\"!=typeof c&&(b.scroll.x=Math.round(1*c/b.scrollratio.x));b.cursor.css({height:b.cursorheight,top:b.scroll.y});b.cursorh&&(!b.rail.align&&b.rail.visibility?b.cursorh.css({width:b.cursorwidth,left:b.scroll.x+b.rail.width}):b.cursorh.css({width:b.cursorwidth,left:b.scroll.x}),b.cursoractive=!0);b.zoom&&b.zoom.stop().css({opacity:b.opt.cursoropacitymax})}};this.hideCursor=function(d){!b.cursortimeout&&(b.rail&&b.autohidedom&&!(b.hasmousefocus&&\"leave\"==b.opt.autohidemode))&&\n(b.cursortimeout=setTimeout(function(){if(!b.rail.active||!b.showonmouseevent)b.autohidedom.stop().animate({opacity:b.opt.cursoropacitymin}),b.zoom&&b.zoom.stop().animate({opacity:b.opt.cursoropacitymin}),b.cursoractive=!1;b.cursortimeout=0},d||b.opt.hidecursordelay))};this.noticeCursor=function(d,c,f){b.showCursor(c,f);b.rail.active||b.hideCursor(d)};this.getContentSize=b.ispage?function(){return{w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),h:Math.max(document.body.scrollHeight,\n    document.documentElement.scrollHeight)}}:b.haswrapper?function(){return{w:b.doc.outerWidth()+parseInt(b.win.css(\"paddingLeft\"))+parseInt(b.win.css(\"paddingRight\")),h:b.doc.outerHeight()+parseInt(b.win.css(\"paddingTop\"))+parseInt(b.win.css(\"paddingBottom\"))}}:function(){return{w:b.docscroll[0].scrollWidth,h:b.docscroll[0].scrollHeight}};this.onResize=function(d,c){if(!b.win)return!1;if(!b.haswrapper&&!b.ispage){if(\"none\"==b.win.css(\"display\"))return b.visibility&&b.hideRail().hideRailHr(),!1;!b.hidden&&\n    !b.visibility&&b.showRail().showRailHr()}var f=b.page.maxh,g=b.page.maxw,e=b.view.w;b.view={w:b.ispage?b.win.width():parseInt(b.win[0].clientWidth),h:b.ispage?b.win.height():parseInt(b.win[0].clientHeight)};b.page=c?c:b.getContentSize();b.page.maxh=Math.max(0,b.page.h-b.view.h);b.page.maxw=Math.max(0,b.page.w-b.view.w);if(b.page.maxh==f&&b.page.maxw==g&&b.view.w==e){if(b.ispage)return b;f=b.win.offset();if(b.lastposition&&(g=b.lastposition,g.top==f.top&&g.left==f.left))return b;b.lastposition=f}0==\n    b.page.maxh?(b.hideRail(),b.scrollvaluemax=0,b.scroll.y=0,b.scrollratio.y=0,b.cursorheight=0,b.setScrollTop(0),b.rail.scrollable=!1):b.rail.scrollable=!0;0==b.page.maxw?(b.hideRailHr(),b.scrollvaluemaxw=0,b.scroll.x=0,b.scrollratio.x=0,b.cursorwidth=0,b.setScrollLeft(0),b.railh.scrollable=!1):b.railh.scrollable=!0;b.locked=0==b.page.maxh&&0==b.page.maxw;if(b.locked)return b.ispage||b.updateScrollBar(b.view),!1;!b.hidden&&!b.visibility?b.showRail().showRailHr():!b.hidden&&!b.railh.visibility&&b.showRailHr();\n    b.istextarea&&(b.win.css(\"resize\")&&\"none\"!=b.win.css(\"resize\"))&&(b.view.h-=20);b.cursorheight=Math.min(b.view.h,Math.round(b.view.h*(b.view.h/b.page.h)));b.cursorheight=b.opt.cursorfixedheight?b.opt.cursorfixedheight:Math.max(b.opt.cursorminheight,b.cursorheight);b.cursorwidth=Math.min(b.view.w,Math.round(b.view.w*(b.view.w/b.page.w)));b.cursorwidth=b.opt.cursorfixedheight?b.opt.cursorfixedheight:Math.max(b.opt.cursorminheight,b.cursorwidth);b.scrollvaluemax=b.view.h-b.cursorheight-b.cursor.hborder;\n    b.railh&&(b.railh.width=0<b.page.maxh?b.view.w-b.rail.width:b.view.w,b.scrollvaluemaxw=b.railh.width-b.cursorwidth-b.cursorh.wborder);b.checkrtlmode&&b.railh&&(b.checkrtlmode=!1,b.opt.rtlmode&&0==b.scroll.x&&b.setScrollLeft(b.page.maxw));b.ispage||b.updateScrollBar(b.view);b.scrollratio={x:b.page.maxw/b.scrollvaluemaxw,y:b.page.maxh/b.scrollvaluemax};b.getScrollTop()>b.page.maxh?b.doScrollTop(b.page.maxh):(b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y)),b.scroll.x=Math.round(b.getScrollLeft()*\n        (1/b.scrollratio.x)),b.cursoractive&&b.noticeCursor());b.scroll.y&&0==b.getScrollTop()&&b.doScrollTo(Math.floor(b.scroll.y*b.scrollratio.y));return b};this.resize=b.onResize;this.lazyResize=function(d){d=isNaN(d)?30:d;b.delayed(\"resize\",b.resize,d);return b};this._bind=function(d,c,f,g){b.events.push({e:d,n:c,f:f,b:g,q:!1});d.addEventListener?d.addEventListener(c,f,g||!1):d.attachEvent?d.attachEvent(\"on\"+c,f):d[\"on\"+c]=f};this.jqbind=function(d,c,f){b.events.push({e:d,n:c,f:f,q:!0});e(d).bind(c,f)};\n    this.bind=function(d,c,f,e){var k=\"jquery\"in d?d[0]:d;\"mousewheel\"==c?\"onwheel\"in b.win?b._bind(k,\"wheel\",f,e||!1):(d=\"undefined\"!=typeof document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\",q(k,d,f,e||!1),\"DOMMouseScroll\"==d&&q(k,\"MozMousePixelScroll\",f,e||!1)):k.addEventListener?(g.cantouch&&/mouseup|mousedown|mousemove/.test(c)&&b._bind(k,\"mousedown\"==c?\"touchstart\":\"mouseup\"==c?\"touchend\":\"touchmove\",function(b){if(b.touches){if(2>b.touches.length){var d=b.touches.length?b.touches[0]:b;d.original=\n        b;f.call(this,d)}}else b.changedTouches&&(d=b.changedTouches[0],d.original=b,f.call(this,d))},e||!1),b._bind(k,c,f,e||!1),g.cantouch&&\"mouseup\"==c&&b._bind(k,\"touchcancel\",f,e||!1)):b._bind(k,c,function(d){if((d=d||window.event||!1)&&d.srcElement)d.target=d.srcElement;\"pageY\"in d||(d.pageX=d.clientX+document.documentElement.scrollLeft,d.pageY=d.clientY+document.documentElement.scrollTop);return!1===f.call(k,d)||!1===e?b.cancelEvent(d):!0})};this._unbind=function(b,c,f,g){b.removeEventListener?b.removeEventListener(c,\n        f,g):b.detachEvent?b.detachEvent(\"on\"+c,f):b[\"on\"+c]=!1};this.unbindAll=function(){for(var d=0;d<b.events.length;d++){var c=b.events[d];c.q?c.e.unbind(c.n,c.f):b._unbind(c.e,c.n,c.f,c.b)}};this.cancelEvent=function(b){b=b.original?b.original:b?b:window.event||!1;if(!b)return!1;b.preventDefault&&b.preventDefault();b.stopPropagation&&b.stopPropagation();b.preventManipulation&&b.preventManipulation();b.cancelBubble=!0;b.cancel=!0;return b.returnValue=!1};this.stopPropagation=function(b){b=b.original?\n        b.original:b?b:window.event||!1;if(!b)return!1;if(b.stopPropagation)return b.stopPropagation();b.cancelBubble&&(b.cancelBubble=!0);return!1};this.showRail=function(){if(0!=b.page.maxh&&(b.ispage||\"none\"!=b.win.css(\"display\")))b.visibility=!0,b.rail.visibility=!0,b.rail.css(\"display\",\"block\");return b};this.showRailHr=function(){if(!b.railh)return b;if(0!=b.page.maxw&&(b.ispage||\"none\"!=b.win.css(\"display\")))b.railh.visibility=!0,b.railh.css(\"display\",\"block\");return b};this.hideRail=function(){b.visibility=\n        !1;b.rail.visibility=!1;b.rail.css(\"display\",\"none\");return b};this.hideRailHr=function(){if(!b.railh)return b;b.railh.visibility=!1;b.railh.css(\"display\",\"none\");return b};this.show=function(){b.hidden=!1;b.locked=!1;return b.showRail().showRailHr()};this.hide=function(){b.hidden=!0;b.locked=!0;return b.hideRail().hideRailHr()};this.toggle=function(){return b.hidden?b.show():b.hide()};this.remove=function(){b.stop();b.cursortimeout&&clearTimeout(b.cursortimeout);b.doZoomOut();b.unbindAll();g.isie9&&\n    b.win[0].detachEvent(\"onpropertychange\",b.onAttributeChange);!1!==b.observer&&b.observer.disconnect();!1!==b.observerremover&&b.observerremover.disconnect();b.events=null;b.cursor&&b.cursor.remove();b.cursorh&&b.cursorh.remove();b.rail&&b.rail.remove();b.railh&&b.railh.remove();b.zoom&&b.zoom.remove();for(var d=0;d<b.saved.css.length;d++){var c=b.saved.css[d];c[0].css(c[1],\"undefined\"==typeof c[2]?\"\":c[2])}b.saved=!1;b.me.data(\"__nicescroll\",\"\");var f=e.nicescroll;f.each(function(d){if(this&&this.id===\n        b.id){delete f[d];for(var c=++d;c<f.length;c++,d++)f[d]=f[c];f.length--;f.length&&delete f[f.length]}});for(var k in b)b[k]=null,delete b[k];b=null};this.scrollstart=function(d){this.onscrollstart=d;return b};this.scrollend=function(d){this.onscrollend=d;return b};this.scrollcancel=function(d){this.onscrollcancel=d;return b};this.zoomin=function(d){this.onzoomin=d;return b};this.zoomout=function(d){this.onzoomout=d;return b};this.isScrollable=function(b){b=b.target?b.target:b;if(\"OPTION\"==b.nodeName)return!0;\n        for(;b&&1==b.nodeType&&!/BODY|HTML/.test(b.nodeName);){var c=e(b),c=c.css(\"overflowY\")||c.css(\"overflowX\")||c.css(\"overflow\")||\"\";if(/scroll|auto/.test(c))return b.clientHeight!=b.scrollHeight;b=b.parentNode?b.parentNode:!1}return!1};this.getViewport=function(b){for(b=b&&b.parentNode?b.parentNode:!1;b&&1==b.nodeType&&!/BODY|HTML/.test(b.nodeName);){var c=e(b);if(/fixed|absolute/.test(c.css(\"position\")))return c;var f=c.css(\"overflowY\")||c.css(\"overflowX\")||c.css(\"overflow\")||\"\";if(/scroll|auto/.test(f)&&\n        b.clientHeight!=b.scrollHeight||0<c.getNiceScroll().length)return c;b=b.parentNode?b.parentNode:!1}return!1};this.onmousewheel=function(d){if(b.locked)return b.debounced(\"checkunlock\",b.resize,250),!0;if(b.rail.drag)return b.cancelEvent(d);\"auto\"==b.opt.oneaxismousemode&&0!=d.deltaX&&(b.opt.oneaxismousemode=!1);if(b.opt.oneaxismousemode&&0==d.deltaX&&!b.rail.scrollable)return b.railh&&b.railh.scrollable?b.onmousewheelhr(d):!0;var c=+new Date,f=!1;b.opt.preservenativescrolling&&b.checkarea+600<c&&\n    (b.nativescrollingarea=b.isScrollable(d),f=!0);b.checkarea=c;if(b.nativescrollingarea)return!0;if(d=t(d,!1,f))b.checkarea=0;return d};this.onmousewheelhr=function(d){if(b.locked||!b.railh.scrollable)return!0;if(b.rail.drag)return b.cancelEvent(d);var c=+new Date,f=!1;b.opt.preservenativescrolling&&b.checkarea+600<c&&(b.nativescrollingarea=b.isScrollable(d),f=!0);b.checkarea=c;return b.nativescrollingarea?!0:b.locked?b.cancelEvent(d):t(d,!0,f)};this.stop=function(){b.cancelScroll();b.scrollmon&&b.scrollmon.stop();\n        b.cursorfreezed=!1;b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y));b.noticeCursor();return b};this.getTransitionSpeed=function(d){var c=Math.round(10*b.opt.scrollspeed);d=Math.min(c,Math.round(d/20*b.opt.scrollspeed));return 20<d?d:0};b.opt.smoothscroll?b.ishwscroll&&g.hastransition&&b.opt.usetransition?(this.prepareTransition=function(d,c){var f=c?20<d?d:0:b.getTransitionSpeed(d),e=f?g.prefixstyle+\"transform \"+f+\"ms ease-out\":\"\";if(!b.lasttransitionstyle||b.lasttransitionstyle!=e)b.lasttransitionstyle=\n        e,b.doc.css(g.transitionstyle,e);return f},this.doScrollLeft=function(c,g){var f=b.scrollrunning?b.newscrolly:b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,g){var f=b.scrollrunning?b.newscrollx:b.getScrollLeft();b.doScrollPos(f,c,g)},this.doScrollPos=function(c,e,f){var k=b.getScrollTop(),l=b.getScrollLeft();(0>(b.newscrolly-k)*(e-k)||0>(b.newscrollx-l)*(c-l))&&b.cancelScroll();!1==b.opt.bouncescroll&&(0>e?e=0:e>b.page.maxh&&(e=b.page.maxh),0>c?c=0:c>b.page.maxw&&(c=b.page.maxw));\n        if(b.scrollrunning&&c==b.newscrollx&&e==b.newscrolly)return!1;b.newscrolly=e;b.newscrollx=c;b.newscrollspeed=f||!1;if(b.timer)return!1;b.timer=setTimeout(function(){var f=b.getScrollTop(),k=b.getScrollLeft(),l,h;l=c-k;h=e-f;l=Math.round(Math.sqrt(Math.pow(l,2)+Math.pow(h,2)));l=b.newscrollspeed&&1<b.newscrollspeed?b.newscrollspeed:b.getTransitionSpeed(l);b.newscrollspeed&&1>=b.newscrollspeed&&(l*=b.newscrollspeed);b.prepareTransition(l,!0);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);\n            0<l&&(!b.scrollrunning&&b.onscrollstart&&b.onscrollstart.call(b,{type:\"scrollstart\",current:{x:k,y:f},request:{x:c,y:e},end:{x:b.newscrollx,y:b.newscrolly},speed:l}),g.transitionend?b.scrollendtrapped||(b.scrollendtrapped=!0,b.bind(b.doc,g.transitionend,b.onScrollEnd,!1)):(b.scrollendtrapped&&clearTimeout(b.scrollendtrapped),b.scrollendtrapped=setTimeout(b.onScrollEnd,l)),b.timerscroll={bz:new BezierClass(f,b.newscrolly,l,0,0,0.58,1),bh:new BezierClass(k,b.newscrollx,l,0,0,0.58,1)},b.cursorfreezed||\n                (b.timerscroll.tm=setInterval(function(){b.showCursor(b.getScrollTop(),b.getScrollLeft())},60)));b.synched(\"doScroll-set\",function(){b.timer=0;b.scrollendtrapped&&(b.scrollrunning=!0);b.setScrollTop(b.newscrolly);b.setScrollLeft(b.newscrollx);if(!b.scrollendtrapped)b.onScrollEnd()})},50)},this.cancelScroll=function(){if(!b.scrollendtrapped)return!0;var c=b.getScrollTop(),e=b.getScrollLeft();b.scrollrunning=!1;g.transitionend||clearTimeout(g.transitionend);b.scrollendtrapped=!1;b._unbind(b.doc,g.transitionend,\n        b.onScrollEnd);b.prepareTransition(0);b.setScrollTop(c);b.railh&&b.setScrollLeft(e);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);b.timerscroll=!1;b.cursorfreezed=!1;b.showCursor(c,e);return b},this.onScrollEnd=function(){b.scrollendtrapped&&b._unbind(b.doc,g.transitionend,b.onScrollEnd);b.scrollendtrapped=!1;b.prepareTransition(0);b.timerscroll&&b.timerscroll.tm&&clearInterval(b.timerscroll.tm);b.timerscroll=!1;var c=b.getScrollTop(),e=b.getScrollLeft();b.setScrollTop(c);b.railh&&\n    b.setScrollLeft(e);b.noticeCursor(!1,c,e);b.cursorfreezed=!1;0>c?c=0:c>b.page.maxh&&(c=b.page.maxh);0>e?e=0:e>b.page.maxw&&(e=b.page.maxw);if(c!=b.newscrolly||e!=b.newscrollx)return b.doScrollPos(e,c,b.opt.snapbackspeed);b.onscrollend&&b.scrollrunning&&b.onscrollend.call(b,{type:\"scrollend\",current:{x:e,y:c},end:{x:b.newscrollx,y:b.newscrolly}});b.scrollrunning=!1}):(this.doScrollLeft=function(c,g){var f=b.scrollrunning?b.newscrolly:b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          g){var f=b.scrollrunning?b.newscrollx:b.getScrollLeft();b.doScrollPos(f,c,g)},this.doScrollPos=function(c,g,f){function e(){if(b.cancelAnimationFrame)return!0;b.scrollrunning=!0;if(p=1-p)return b.timer=v(e)||1;var c=0,d=sy=b.getScrollTop();if(b.dst.ay){var d=b.bzscroll?b.dst.py+b.bzscroll.getNow()*b.dst.ay:b.newscrolly,f=d-sy;if(0>f&&d<b.newscrolly||0<f&&d>b.newscrolly)d=b.newscrolly;b.setScrollTop(d);d==b.newscrolly&&(c=1)}else c=1;var g=sx=b.getScrollLeft();if(b.dst.ax){g=b.bzscroll?b.dst.px+b.bzscroll.getNow()*\n        b.dst.ax:b.newscrollx;f=g-sx;if(0>f&&g<b.newscrollx||0<f&&g>b.newscrollx)g=b.newscrollx;b.setScrollLeft(g);g==b.newscrollx&&(c+=1)}else c+=1;2==c?(b.timer=0,b.cursorfreezed=!1,b.bzscroll=!1,b.scrollrunning=!1,0>d?d=0:d>b.page.maxh&&(d=b.page.maxh),0>g?g=0:g>b.page.maxw&&(g=b.page.maxw),g!=b.newscrollx||d!=b.newscrolly?b.doScrollPos(g,d):b.onscrollend&&b.onscrollend.call(b,{type:\"scrollend\",current:{x:sx,y:sy},end:{x:b.newscrollx,y:b.newscrolly}})):b.timer=v(e)||1}g=\"undefined\"==typeof g||!1===g?b.getScrollTop(!0):\n        g;if(b.timer&&b.newscrolly==g&&b.newscrollx==c)return!0;b.timer&&w(b.timer);b.timer=0;var k=b.getScrollTop(),l=b.getScrollLeft();(0>(b.newscrolly-k)*(g-k)||0>(b.newscrollx-l)*(c-l))&&b.cancelScroll();b.newscrolly=g;b.newscrollx=c;if(!b.bouncescroll||!b.rail.visibility)0>b.newscrolly?b.newscrolly=0:b.newscrolly>b.page.maxh&&(b.newscrolly=b.page.maxh);if(!b.bouncescroll||!b.railh.visibility)0>b.newscrollx?b.newscrollx=0:b.newscrollx>b.page.maxw&&(b.newscrollx=b.page.maxw);b.dst={};b.dst.x=c-l;b.dst.y=\n        g-k;b.dst.px=l;b.dst.py=k;var h=Math.round(Math.sqrt(Math.pow(b.dst.x,2)+Math.pow(b.dst.y,2)));b.dst.ax=b.dst.x/h;b.dst.ay=b.dst.y/h;var m=0,q=h;0==b.dst.x?(m=k,q=g,b.dst.ay=1,b.dst.py=0):0==b.dst.y&&(m=l,q=c,b.dst.ax=1,b.dst.px=0);h=b.getTransitionSpeed(h);f&&1>=f&&(h*=f);b.bzscroll=0<h?b.bzscroll?b.bzscroll.update(q,h):new BezierClass(m,q,h,0,1,0,1):!1;if(!b.timer){(k==b.page.maxh&&g>=b.page.maxh||l==b.page.maxw&&c>=b.page.maxw)&&b.checkContentSize();var p=1;b.cancelAnimationFrame=!1;b.timer=1;\n        b.onscrollstart&&!b.scrollrunning&&b.onscrollstart.call(b,{type:\"scrollstart\",current:{x:l,y:k},request:{x:c,y:g},end:{x:b.newscrollx,y:b.newscrolly},speed:h});e();(k==b.page.maxh&&g>=k||l==b.page.maxw&&c>=l)&&b.checkContentSize();b.noticeCursor()}},this.cancelScroll=function(){b.timer&&w(b.timer);b.timer=0;b.bzscroll=!1;b.scrollrunning=!1;return b}):(this.doScrollLeft=function(c,g){var f=b.getScrollTop();b.doScrollPos(c,f,g)},this.doScrollTop=function(c,g){var f=b.getScrollLeft();b.doScrollPos(f,\n        c,g)},this.doScrollPos=function(c,g,f){var e=c>b.page.maxw?b.page.maxw:c;0>e&&(e=0);var k=g>b.page.maxh?b.page.maxh:g;0>k&&(k=0);b.synched(\"scroll\",function(){b.setScrollTop(k);b.setScrollLeft(e)})},this.cancelScroll=function(){});this.doScrollBy=function(c,g){var f=0,f=g?Math.floor((b.scroll.y-c)*b.scrollratio.y):(b.timer?b.newscrolly:b.getScrollTop(!0))-c;if(b.bouncescroll){var e=Math.round(b.view.h/2);f<-e?f=-e:f>b.page.maxh+e&&(f=b.page.maxh+e)}b.cursorfreezed=!1;py=b.getScrollTop(!0);if(0>f&&\n        0>=py)return b.noticeCursor();if(f>b.page.maxh&&py>=b.page.maxh)return b.checkContentSize(),b.noticeCursor();b.doScrollTop(f)};this.doScrollLeftBy=function(c,g){var f=0,f=g?Math.floor((b.scroll.x-c)*b.scrollratio.x):(b.timer?b.newscrollx:b.getScrollLeft(!0))-c;if(b.bouncescroll){var e=Math.round(b.view.w/2);f<-e?f=-e:f>b.page.maxw+e&&(f=b.page.maxw+e)}b.cursorfreezed=!1;px=b.getScrollLeft(!0);if(0>f&&0>=px||f>b.page.maxw&&px>=b.page.maxw)return b.noticeCursor();b.doScrollLeft(f)};this.doScrollTo=\n        function(c,g){g&&Math.round(c*b.scrollratio.y);b.cursorfreezed=!1;b.doScrollTop(c)};this.checkContentSize=function(){var c=b.getContentSize();(c.h!=b.page.h||c.w!=b.page.w)&&b.resize(!1,c)};b.onscroll=function(c){b.rail.drag||b.cursorfreezed||b.synched(\"scroll\",function(){b.scroll.y=Math.round(b.getScrollTop()*(1/b.scrollratio.y));b.railh&&(b.scroll.x=Math.round(b.getScrollLeft()*(1/b.scrollratio.x)));b.noticeCursor()})};b.bind(b.docscroll,\"scroll\",b.onscroll);this.doZoomIn=function(c){if(!b.zoomactive){b.zoomactive=\n        !0;b.zoomrestore={style:{}};var k=\"position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight\".split(\" \"),f=b.win[0].style,l;for(l in k){var h=k[l];b.zoomrestore.style[h]=\"undefined\"!=typeof f[h]?f[h]:\"\"}b.zoomrestore.style.width=b.win.css(\"width\");b.zoomrestore.style.height=b.win.css(\"height\");b.zoomrestore.padding={w:b.win.outerWidth()-b.win.width(),h:b.win.outerHeight()-b.win.height()};g.isios4&&(b.zoomrestore.scrollTop=e(window).scrollTop(),e(window).scrollTop(0));\n        b.win.css({position:g.isios4?\"absolute\":\"fixed\",top:0,left:0,\"z-index\":y+100,margin:\"0px\"});k=b.win.css(\"backgroundColor\");(\"\"==k||/transparent|rgba\\(0, 0, 0, 0\\)|rgba\\(0,0,0,0\\)/.test(k))&&b.win.css(\"backgroundColor\",\"#fff\");b.rail.css({\"z-index\":y+101});b.zoom.css({\"z-index\":y+102});b.zoom.css(\"backgroundPosition\",\"0px -18px\");b.resizeZoom();b.onzoomin&&b.onzoomin.call(b);return b.cancelEvent(c)}};this.doZoomOut=function(c){if(b.zoomactive)return b.zoomactive=!1,b.win.css(\"margin\",\"\"),b.win.css(b.zoomrestore.style),\n        g.isios4&&e(window).scrollTop(b.zoomrestore.scrollTop),b.rail.css({\"z-index\":b.zindex}),b.zoom.css({\"z-index\":b.zindex}),b.zoomrestore=!1,b.zoom.css(\"backgroundPosition\",\"0px 0px\"),b.onResize(),b.onzoomout&&b.onzoomout.call(b),b.cancelEvent(c)};this.doZoom=function(c){return b.zoomactive?b.doZoomOut(c):b.doZoomIn(c)};this.resizeZoom=function(){if(b.zoomactive){var c=b.getScrollTop();b.win.css({width:e(window).width()-b.zoomrestore.padding.w+\"px\",height:e(window).height()-b.zoomrestore.padding.h+\"px\"});\n        b.onResize();b.setScrollTop(Math.min(b.page.maxh,c))}};this.init();e.nicescroll.push(this)},J=function(e){var c=this;this.nc=e;this.steptime=this.lasttime=this.speedy=this.speedx=this.lasty=this.lastx=0;this.snapy=this.snapx=!1;this.demuly=this.demulx=0;this.lastscrolly=this.lastscrollx=-1;this.timer=this.chky=this.chkx=0;this.time=function(){return+new Date};this.reset=function(e,l){c.stop();var h=c.time();c.steptime=0;c.lasttime=h;c.speedx=0;c.speedy=0;c.lastx=e;c.lasty=l;c.lastscrollx=-1;c.lastscrolly=\n    -1};this.update=function(e,l){var h=c.time();c.steptime=h-c.lasttime;c.lasttime=h;var h=l-c.lasty,t=e-c.lastx,b=c.nc.getScrollTop(),p=c.nc.getScrollLeft(),b=b+h,p=p+t;c.snapx=0>p||p>c.nc.page.maxw;c.snapy=0>b||b>c.nc.page.maxh;c.speedx=t;c.speedy=h;c.lastx=e;c.lasty=l};this.stop=function(){c.nc.unsynched(\"domomentum2d\");c.timer&&clearTimeout(c.timer);c.timer=0;c.lastscrollx=-1;c.lastscrolly=-1};this.doSnapy=function(e,l){var h=!1;0>l?(l=0,h=!0):l>c.nc.page.maxh&&(l=c.nc.page.maxh,h=!0);0>e?(e=0,h=\n    !0):e>c.nc.page.maxw&&(e=c.nc.page.maxw,h=!0);h&&c.nc.doScrollPos(e,l,c.nc.opt.snapbackspeed)};this.doMomentum=function(e){var l=c.time(),h=e?l+e:c.lasttime;e=c.nc.getScrollLeft();var t=c.nc.getScrollTop(),b=c.nc.page.maxh,p=c.nc.page.maxw;c.speedx=0<p?Math.min(60,c.speedx):0;c.speedy=0<b?Math.min(60,c.speedy):0;h=h&&60>=l-h;if(0>t||t>b||0>e||e>p)h=!1;e=c.speedx&&h?c.speedx:!1;if(c.speedy&&h&&c.speedy||e){var g=Math.max(16,c.steptime);50<g&&(e=g/50,c.speedx*=e,c.speedy*=e,g=50);c.demulxy=0;c.lastscrollx=\n    c.nc.getScrollLeft();c.chkx=c.lastscrollx;c.lastscrolly=c.nc.getScrollTop();c.chky=c.lastscrolly;var s=c.lastscrollx,u=c.lastscrolly,d=function(){var e=600<c.time()-l?0.04:0.02;if(c.speedx&&(s=Math.floor(c.lastscrollx-c.speedx*(1-c.demulxy)),c.lastscrollx=s,0>s||s>p))e=0.1;if(c.speedy&&(u=Math.floor(c.lastscrolly-c.speedy*(1-c.demulxy)),c.lastscrolly=u,0>u||u>b))e=0.1;c.demulxy=Math.min(1,c.demulxy+e);c.nc.synched(\"domomentum2d\",function(){c.speedx&&(c.nc.getScrollLeft()!=c.chkx&&c.stop(),c.chkx=\n    s,c.nc.setScrollLeft(s));c.speedy&&(c.nc.getScrollTop()!=c.chky&&c.stop(),c.chky=u,c.nc.setScrollTop(u));c.timer||(c.nc.hideCursor(),c.doSnapy(s,u))});1>c.demulxy?c.timer=setTimeout(d,g):(c.stop(),c.nc.hideCursor(),c.doSnapy(s,u))};d()}else c.doSnapy(c.nc.getScrollLeft(),c.nc.getScrollTop())}},B=e.fn.scrollTop;e.cssHooks.pageYOffset={get:function(h,c,k){return(c=e.data(h,\"__nicescroll\")||!1)&&c.ishwscroll?c.getScrollTop():B.call(h)},set:function(h,c){var k=e.data(h,\"__nicescroll\")||!1;k&&k.ishwscroll?\n    k.setScrollTop(parseInt(c)):B.call(h,c);return this}};e.fn.scrollTop=function(h){if(\"undefined\"==typeof h){var c=this[0]?e.data(this[0],\"__nicescroll\")||!1:!1;return c&&c.ishwscroll?c.getScrollTop():B.call(this)}return this.each(function(){var c=e.data(this,\"__nicescroll\")||!1;c&&c.ishwscroll?c.setScrollTop(parseInt(h)):B.call(e(this),h)})};var C=e.fn.scrollLeft;e.cssHooks.pageXOffset={get:function(h,c,k){return(c=e.data(h,\"__nicescroll\")||!1)&&c.ishwscroll?c.getScrollLeft():C.call(h)},set:function(h,\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            c){var k=e.data(h,\"__nicescroll\")||!1;k&&k.ishwscroll?k.setScrollLeft(parseInt(c)):C.call(h,c);return this}};e.fn.scrollLeft=function(h){if(\"undefined\"==typeof h){var c=this[0]?e.data(this[0],\"__nicescroll\")||!1:!1;return c&&c.ishwscroll?c.getScrollLeft():C.call(this)}return this.each(function(){var c=e.data(this,\"__nicescroll\")||!1;c&&c.ishwscroll?c.setScrollLeft(parseInt(h)):C.call(e(this),h)})};var D=function(h){var c=this;this.length=0;this.name=\"nicescrollarray\";this.each=function(e){for(var h=\n    0,k=0;h<c.length;h++)e.call(c[h],k++);return c};this.push=function(e){c[c.length]=e;c.length++};this.eq=function(e){return c[e]};if(h)for(a=0;a<h.length;a++){var k=e.data(h[a],\"__nicescroll\")||!1;k&&(this[this.length]=k,this.length++)}return this};(function(e,c,k){for(var l=0;l<c.length;l++)k(e,c[l])})(D.prototype,\"show hide toggle onResize resize remove stop doScrollPos\".split(\" \"),function(e,c){e[c]=function(){var e=arguments;return this.each(function(){this[c].apply(this,e)})}});e.fn.getNiceScroll=\n    function(h){return\"undefined\"==typeof h?new D(this):this[h]&&e.data(this[h],\"__nicescroll\")||!1};e.extend(e.expr[\":\"],{nicescroll:function(h){return e.data(h,\"__nicescroll\")?!0:!1}});e.fn.niceScroll=function(h,c){\"undefined\"==typeof c&&(\"object\"==typeof h&&!(\"jquery\"in h))&&(c=h,h=!1);var k=new D;\"undefined\"==typeof c&&(c={});h&&(c.doc=e(h),c.win=e(this));var l=!(\"doc\"in c);!l&&!(\"win\"in c)&&(c.win=e(this));this.each(function(){var h=e(this).data(\"__nicescroll\")||!1;h||(c.doc=l?e(this):c.doc,h=new Q(c,\n    e(this)),e(this).data(\"__nicescroll\",h));k.push(h)});return 1==k.length?k[0]:k};window.NiceScroll={getjQuery:function(){return e}};e.nicescroll||(e.nicescroll=new D,e.nicescroll.options=I)})(jQuery);\n"
  },
  {
    "path": "target/mongo/jslib/bs_js/jquery.sparkline.js",
    "content": "/**\n*\n* jquery.sparkline.js\n*\n* v2.0\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n*     * Redistributions of source code must retain the above copyright notice,\n*       this list of conditions and the following disclaimer.\n*     * Redistributions in binary form must reproduce the above copyright notice,\n*       this list of conditions and the following disclaimer in the documentation\n*       and/or other materials provided with the distribution.\n*     * Neither the name of Splunk Inc nor the names of its contributors may\n*       be used to endorse or promote products derived from this software without\n*       specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n*  $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*   <p>Sparkline: <span class=\"sparkline\">1,4,6,6,8,5,3,5</span></p>\n*   $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*    <p>Sparkline: <span id=\"sparkline1\">This text replaced if the browser is compatible</span></p>\n*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*    <p>Sparkline: <span class=\"sparkline\"><!--1,4,6,6,8,5,3,5 --></span></p>\n*    <p>Sparkline: <span class=\"sparkline\" values=\"1,4,6,6,8,5,3,5\"></span></p>\n*    $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*   <p>Sparkline: <span class=\"sparkline\">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>\n*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as teh second argument to the sparkline function:\n*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself.  This feature is disabled by default though\n* as there's a slight performance overhead:\n*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*   <p>Sparkline: <span class=\"sparkline\" sparkType=\"bar\" sparkBarColor=\"red\">loading</span></p>\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionPrefix)\n*\n* Supported options:\n*   lineColor - Color of the line used for the chart\n*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n*   width - Width of the chart - Defaults to 3 times the number of values in pixels\n*   height - Height of the chart - Defaults to the height of the containing element\n*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n*   composite - If true then don't erase any existing chart attached to the tag, but draw\n*           another chart over the top - Note that width and height are ignored if an\n*           existing chart is detected.\n*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n*   enableTagOptions - Whether to check tags for sparkline options\n*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n*           hidden dom element, avoding a browser reflow\n*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n*       making the plugin perform much like it did in 1.x\n*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n*       defaults to false (highlights enabled)\n*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip\n*       callback is given arguments of (sparkline, options, fields)\n*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)\n*       to control the format of the tooltip\n*   tooltipPrefix - A string to prepend to each field displayed in a tooltip\n*   tooltipSuffix - A string to append to each field displayed in a tooltip\n*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n*   tooltipValueLookups - An object or range map to map field values to tooltip strings\n*       (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n*   numberFormatter - Optional callback for formatting numbers in tooltips\n*   numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n*    line - Line chart.  Options:\n*       spotColor - Set to '' to not end each line in a circular spot\n*       minSpotColor - If set, color of spot at minimum value\n*       maxSpotColor - If set, color of spot at maximum value\n*       spotRadius - Radius in pixels\n*       lineWidth - Width of line in pixels\n*       normalRangeMin\n*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n*                      or expected range of values\n*       normalRangeColor - Color to use for the above bar\n*       drawNormalOnTop - Draw the normal range above the chart fill color if true\n*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map\n*\n*   bar - Bar chart.  Options:\n*       barColor - Color of bars for postive values\n*       negBarColor - Color of bars for negative values\n*       zeroColor - Color of bars with zero values\n*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n*       barWidth - Width of bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*       barSpacing - Gap between bars in pixels\n*       zeroAxis - Centers the y-axis around zero if true\n*\n*   tristate - Charts values of win (>0), lose (<0) or draw (=0)\n*       posBarColor - Color of win values\n*       negBarColor - Color of lose values\n*       zeroBarColor - Color of draw values\n*       barWidth - Width of bars in pixels\n*       barSpacing - Gap between bars in pixels\n*       colorMap - Optional mappnig of values to colors to override the *BarColor values above\n*                  can be an Array of values to control the color of individual bars or a range map\n*                  to specify colors for individual ranges of values\n*\n*   discrete - Options:\n*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n*       thresholdColor\n*\n*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n*       options:\n*       targetColor - The color of the vertical target marker\n*       targetWidth - The width of the target marker in pixels\n*       performanceColor - The color of the performance measure horizontal bar\n*       rangeColors - Colors to use for each qualitative range background color\n*\n*   pie - Pie chart. Options:\n*       sliceColors - An array of colors to use for pie slices\n*       offset - Angle in degrees to offset the first slice - Try -90 or +90\n*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n*       borderColor - Color to use for the pie chart border - Defaults to #000\n*\n*   box - Box plot. Options:\n*       raw - Set to true to supply pre-computed plot points as values\n*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n*             When set to false you can supply any number of values and the box plot will\n*             be computed for you.  Default is false.\n*       showOutliers - Set to true (default) to display outliers as circles\n*       outlierIRQ - Interquartile range used to determine outliers.  Default 1.5\n*       boxLineColor - Outline color of the box\n*       boxFillColor - Fill color for the box\n*       whiskerColor - Line color used for whiskers\n*       outlierLineColor - Outline color of outlier circles\n*       outlierFillColor - Fill color of the outlier circles\n*       spotRadius - Radius of outlier circles\n*       medianColor - Line color of the median line\n*       target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n*   Examples:\n*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n*   $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function ($) {\n    'use strict';\n\n    var UNSET_OPTION = {},\n        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n        MouseHandler, Tooltip, barHighlightMixin,\n        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n         VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n    /**\n     * Default configuration settings\n     */\n    getDefaults = function () {\n        return {\n            // Settings common to most/all chart types\n            common: {\n                type: 'line',\n                lineColor: '#00f',\n                fillColor: '#cdf',\n                defaultPixelsPerValue: 3,\n                width: 'auto',\n                height: 'auto',\n                composite: false,\n                tagValuesAttribute: 'values',\n                tagOptionsPrefix: 'spark',\n                enableTagOptions: false,\n                enableHighlight: true,\n                highlightLighten: 1.4,\n                tooltipSkipNull: true,\n                tooltipPrefix: '',\n                tooltipSuffix: '',\n                disableHiddenCheck: false,\n                numberFormatter: false,\n                numberDigitGroupCount: 3,\n                numberDigitGroupSep: ',',\n                numberDecimalMark: '.',\n                disableTooltips: false,\n                disableInteraction: false\n            },\n            // Defaults for line charts\n            line: {\n                spotColor: '#f80',\n                highlightSpotColor: '#5f5',\n                highlightLineColor: '#f22',\n                spotRadius: 1.5,\n                minSpotColor: '#f80',\n                maxSpotColor: '#f80',\n                lineWidth: 1,\n                normalRangeMin: undefined,\n                normalRangeMax: undefined,\n                normalRangeColor: '#ccc',\n                drawNormalOnTop: false,\n                chartRangeMin: undefined,\n                chartRangeMax: undefined,\n                chartRangeMinX: undefined,\n                chartRangeMaxX: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')\n            },\n            // Defaults for bar charts\n            bar: {\n                barColor: '#3366cc',\n                negBarColor: '#f44',\n                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                zeroColor: undefined,\n                nullColor: undefined,\n                zeroAxis: true,\n                barWidth: 4,\n                barSpacing: 1,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                colorMap: undefined,\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for tristate charts\n            tristate: {\n                barWidth: 4,\n                barSpacing: 1,\n                posBarColor: '#6f6',\n                negBarColor: '#f44',\n                zeroBarColor: '#999',\n                colorMap: {},\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),\n                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n            },\n            // Defaults for discrete charts\n            discrete: {\n                lineHeight: 'auto',\n                thresholdColor: undefined,\n                thresholdValue: 0,\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                chartRangeClip: false,\n                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n            },\n            // Defaults for bullet charts\n            bullet: {\n                targetColor: '#f33',\n                targetWidth: 3, // width of the target bar in pixels\n                performanceColor: '#33f',\n                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n                base: undefined, // set this to a number to change the base start number\n                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n            },\n            // Defaults for pie charts\n            pie: {\n                offset: 0,\n                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n                    '#dd4477', '#0099c6', '#990099'],\n                borderWidth: 0,\n                borderColor: '#000',\n                tooltipFormat: new SPFormat('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')\n            },\n            // Defaults for box plots\n            box: {\n                raw: false,\n                boxLineColor: '#000',\n                boxFillColor: '#cdf',\n                whiskerColor: '#000',\n                outlierLineColor: '#333',\n                outlierFillColor: '#fff',\n                medianColor: '#f00',\n                showOutliers: true,\n                outlierIQR: 1.5,\n                spotRadius: 1.5,\n                target: undefined,\n                targetColor: '#4a2',\n                chartRangeMax: undefined,\n                chartRangeMin: undefined,\n                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n                tooltipFormatFieldlistKey: 'field',\n                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n                    lw: 'Left Whisker', rw: 'Right Whisker'} }\n            }\n        };\n    };\n\n    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n    defaultStyles = '.jqstooltip { ' +\n            'position: absolute;' +\n            'left: 0px;' +\n            'top: 0px;' +\n            'visibility: hidden;' +\n            'background: rgb(0, 0, 0) transparent;' +\n            'background-color: rgba(0,0,0,0.6);' +\n            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n            '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            'white-space: nowrap;' +\n            'padding: 5px;' +\n            'border: 1px solid white;' +\n            '}' +\n            '.jqsfield { ' +\n            'color: white;' +\n            'font: 10px arial, san serif;' +\n            'text-align: left;' +\n            '}';\n\n    initStyles = function() {\n        addCSS(defaultStyles);\n    };\n\n    $(initStyles);\n\n    /**\n     * Utilities\n     */\n\n    createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n        var Class, args;\n        Class = function () {\n            this.init.apply(this, arguments);\n        };\n        if (arguments.length > 1) {\n            if (arguments[0]) {\n                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n                Class._super = arguments[0].prototype;\n            } else {\n                Class.prototype = arguments[arguments.length - 1];\n            }\n            if (arguments.length > 2) {\n                args = Array.prototype.slice.call(arguments, 1, -1);\n                args.unshift(Class.prototype);\n                $.extend.apply($, args);\n            }\n        } else {\n            Class.prototype = arguments[0];\n        }\n        Class.prototype.cls = Class;\n        return Class;\n    };\n\n    /**\n     * Wraps a format string for tooltips\n     * {{x}}\n     * {{x.2}\n     * {{x:months}}\n     */\n    $.SPFormatClass = SPFormat = createClass({\n        fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n        precre: /(\\w+)\\.(\\d+)/,\n\n        init: function (format, fclass) {\n            this.format = format;\n            this.fclass = fclass;\n        },\n\n        render: function (fieldset, lookups, options) {\n            var self = this,\n                fields = fieldset,\n                match, token, lookupkey, fieldvalue, prec;\n            return this.format.replace(this.fre, function () {\n                var lookup;\n                token = arguments[1];\n                lookupkey = arguments[3];\n                match = self.precre.exec(token);\n                if (match) {\n                    prec = match[2];\n                    token = match[1];\n                } else {\n                    prec = false;\n                }\n                fieldvalue = fields[token];\n                if (fieldvalue === undefined) {\n                    return '';\n                }\n                if (lookupkey && lookups && lookups[lookupkey]) {\n                    lookup = lookups[lookupkey];\n                    if (lookup.get) { // RangeMap\n                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n                    } else {\n                        return lookups[lookupkey][fieldvalue] || fieldvalue;\n                    }\n                }\n                if (isNumber(fieldvalue)) {\n                    if (options.get('numberFormatter')) {\n                        fieldvalue = options.get('numberFormatter')(fieldvalue);\n                    } else {\n                        fieldvalue = formatNumber(fieldvalue, prec,\n                            options.get('numberDigitGroupCount'),\n                            options.get('numberDigitGroupSep'),\n                            options.get('numberDecimalMark'));\n                    }\n                }\n                return fieldvalue;\n            });\n        }\n    });\n\n    // convience method to avoid needing the new operator\n    $.spformat = function(format, fclass) {\n        return new SPFormat(format, fclass);\n    };\n\n    clipval = function (val, min, max) {\n        if (val < min) {\n            return min;\n        }\n        if (val > max) {\n            return max;\n        }\n        return val;\n    };\n\n    quartile = function (values, q) {\n        var vl;\n        if (q === 2) {\n            vl = Math.floor(values.length / 2);\n            return values.length % 2 ? values[vl] : (values[vl] + values[vl + 1]) / 2;\n        } else {\n            vl = Math.floor(values.length / 4);\n            return values.length % 2 ? (values[vl * q] + values[vl * q + 1]) / 2 : values[vl * q];\n        }\n    };\n\n    normalizeValue = function (val) {\n        var nf;\n        switch (val) {\n            case 'undefined':\n                val = undefined;\n                break;\n            case 'null':\n                val = null;\n                break;\n            case 'true':\n                val = true;\n                break;\n            case 'false':\n                val = false;\n                break;\n            default:\n                nf = parseFloat(val);\n                if (val == nf) {\n                    val = nf;\n                }\n        }\n        return val;\n    };\n\n    normalizeValues = function (vals) {\n        var i, result = [];\n        for (i = vals.length; i--;) {\n            result[i] = normalizeValue(vals[i]);\n        }\n        return result;\n    };\n\n    remove = function (vals, filter) {\n        var i, vl, result = [];\n        for (i = 0, vl = vals.length; i < vl; i++) {\n            if (vals[i] !== filter) {\n                result.push(vals[i]);\n            }\n        }\n        return result;\n    };\n\n    isNumber = function (num) {\n        return !isNaN(parseFloat(num)) && isFinite(num);\n    };\n\n    formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n        var p, i;\n        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n        p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n        if (p < num.length) {\n            num[p] = decsep;\n        }\n        for (i = p - groupsize; i > 0; i -= groupsize) {\n            num.splice(i, 0, groupsep);\n        }\n        return num.join('');\n    };\n\n    // determine if all values of an array match a value\n    // returns true if the array is empty\n    all = function (val, arr, ignoreNull) {\n        var i;\n        for (i = arr.length; i--; ) {\n            if (arr[i] !== val || (!ignoreNull && val === null)) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    // sums the numeric values in an array, ignoring other values\n    sum = function (vals) {\n        var total = 0, i;\n        for (i = vals.length; i--;) {\n            total += typeof vals[i] === 'number' ? vals[i] : 0;\n        }\n        return total;\n    };\n\n    ensureArray = function (val) {\n        return $.isArray(val) ? val : [val];\n    };\n\n    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n    addCSS = function(css) {\n        var tag;\n        //if ('\\v' == 'v') /* ie only */ {\n        if (document.createStyleSheet) {\n            document.createStyleSheet().cssText = css;\n        } else {\n            tag = document.createElement('style');\n            tag.type = 'text/css';\n            document.getElementsByTagName('head')[0].appendChild(tag);\n            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n        }\n    };\n\n    // Provide a cross-browser interface to a few simple drawing primitives\n    $.fn.simpledraw = function (width, height, useExisting, interact) {\n        var target, mhandler;\n        if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n            return target;\n        }\n        if (width === undefined) {\n            width = $(this).innerWidth();\n        }\n        if (height === undefined) {\n            height = $(this).innerHeight();\n        }\n        if ($.browser.hasCanvas) {\n            target = new VCanvas_canvas(width, height, this, interact);\n        } else if ($.browser.msie) {\n            target = new VCanvas_vml(width, height, this);\n        } else {\n            return false;\n        }\n        mhandler = $(this).data('_jqs_mhandler');\n        if (mhandler) {\n            mhandler.registerCanvas(target);\n        }\n        return target;\n    };\n\n    $.fn.cleardraw = function () {\n        var target = this.data('_jqs_vcanvas');\n        if (target) {\n            target.reset();\n        }\n    };\n\n    $.RangeMapClass = RangeMap = createClass({\n        init: function (map) {\n            var key, range, rangelist = [];\n            for (key in map) {\n                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n                    range = key.split(':');\n                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n                    range[2] = map[key];\n                    rangelist.push(range);\n                }\n            }\n            this.map = map;\n            this.rangelist = rangelist || false;\n        },\n\n        get: function (value) {\n            var rangelist = this.rangelist,\n                i, range, result;\n            if ((result = this.map[value]) !== undefined) {\n                return result;\n            }\n            if (rangelist) {\n                for (i = rangelist.length; i--;) {\n                    range = rangelist[i];\n                    if (range[0] <= value && range[1] >= value) {\n                        return range[2];\n                    }\n                }\n            }\n            return undefined;\n        }\n    });\n\n    // Convenience function\n    $.range_map = function(map) {\n        return new RangeMap(map);\n    };\n\n    MouseHandler = createClass({\n        init: function (el, options) {\n            var $el = $(el);\n            this.$el = $el;\n            this.options = options;\n            this.currentPageX = 0;\n            this.currentPageY = 0;\n            this.el = el;\n            this.splist = [];\n            this.tooltip = null;\n            this.over = false;\n            this.displayTooltips = !options.get('disableTooltips');\n            this.highlightEnabled = !options.get('disableHighlight');\n        },\n\n        registerSparkline: function (sp) {\n            this.splist.push(sp);\n            if (this.over) {\n                this.updateDisplay();\n            }\n        },\n\n        registerCanvas: function (canvas) {\n            var $canvas = $(canvas.canvas);\n            this.canvas = canvas;\n            this.$canvas = $canvas;\n            $canvas.mouseenter($.proxy(this.mouseenter, this));\n            $canvas.mouseleave($.proxy(this.mouseleave, this));\n            $canvas.click($.proxy(this.mouseclick, this));\n        },\n\n        reset: function (removeTooltip) {\n            this.splist = [];\n            if (this.tooltip && removeTooltip) {\n                this.tooltip.remove();\n                this.tooltip = undefined;\n            }\n        },\n\n        mouseclick: function (e) {\n            var clickEvent = $.Event('sparklineClick');\n            clickEvent.originalEvent = e;\n            clickEvent.sparklines = this.splist;\n            this.$el.trigger(clickEvent);\n        },\n\n        mouseenter: function (e) {\n            $(document.body).unbind('mousemove.jqs');\n            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n            this.over = true;\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (!this.tooltip && this.displayTooltips) {\n                this.tooltip = new Tooltip(this.options);\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        mouseleave: function () {\n            $(document.body).unbind('mousemove.jqs');\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 sp, i;\n            this.over = false;\n            this.currentEl = null;\n\n            if (this.tooltip) {\n                this.tooltip.remove();\n                this.tooltip = null;\n            }\n\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                if (sp.clearRegionHighlight()) {\n                    needsRefresh = true;\n                }\n            }\n\n            if (needsRefresh) {\n                this.canvas.render();\n            }\n        },\n\n        mousemove: function (e) {\n            this.currentPageX = e.pageX;\n            this.currentPageY = e.pageY;\n            this.currentEl = e.target;\n            if (this.tooltip) {\n                this.tooltip.updatePosition(e.pageX, e.pageY);\n            }\n            this.updateDisplay();\n        },\n\n        updateDisplay: function () {\n            var splist = this.splist,\n                 spcount = splist.length,\n                 needsRefresh = false,\n                 offset = this.$canvas.offset(),\n                 localX = this.currentPageX - offset.left,\n                 localY = this.currentPageY - offset.top,\n                 tooltiphtml, sp, i, result, changeEvent;\n            if (!this.over) {\n                return;\n            }\n            for (i = 0; i < spcount; i++) {\n                sp = splist[i];\n                result = sp.setRegionHighlight(this.currentEl, localX, localY);\n                if (result) {\n                    needsRefresh = true;\n                }\n            }\n            if (needsRefresh) {\n                changeEvent = $.Event('sparklineRegionChange');\n                changeEvent.sparklines = this.splist;\n                this.$el.trigger(changeEvent);\n                if (this.tooltip) {\n                    tooltiphtml = '';\n                    for (i = 0; i < spcount; i++) {\n                        sp = splist[i];\n                        tooltiphtml += sp.getCurrentRegionTooltip();\n                    }\n                    this.tooltip.setContent(tooltiphtml);\n                }\n                if (!this.disableHighlight) {\n                    this.canvas.render();\n                }\n            }\n            if (result === null) {\n                this.mouseleave();\n            }\n        }\n    });\n\n\n    Tooltip = createClass({\n        sizeStyle: 'position: static !important;' +\n            'display: block !important;' +\n            'visibility: hidden !important;' +\n            'float: left !important;',\n\n        init: function (options) {\n            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n                sizetipStyle = this.sizeStyle,\n                offset;\n            this.container = options.get('tooltipContainer') || document.body;\n            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n            // remove any previous lingering tooltip\n            $('#jqssizetip').remove();\n            $('#jqstooltip').remove();\n            this.sizetip = $('<div/>', {\n                id: 'jqssizetip',\n                style: sizetipStyle,\n                'class': tooltipClassname\n            });\n            this.tooltip = $('<div/>', {\n                id: 'jqstooltip',\n                'class': tooltipClassname\n            }).appendTo(this.container);\n            // account for the container's location\n            offset = this.tooltip.offset();\n            this.offsetLeft = offset.left;\n            this.offsetTop = offset.top;\n            this.hidden = true;\n            $(window).unbind('resize.jqs scroll.jqs');\n            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n            this.updateWindowDims();\n        },\n\n        updateWindowDims: function () {\n            this.scrollTop = $(window).scrollTop();\n            this.scrollLeft = $(window).scrollLeft();\n            this.scrollRight = this.scrollLeft + $(window).width();\n            this.updatePosition();\n        },\n\n        getSize: function (content) {\n            this.sizetip.html(content).appendTo(this.container);\n            this.width = this.sizetip.width() + 1;\n            this.height = this.sizetip.height();\n            this.sizetip.remove();\n        },\n\n        setContent: function (content) {\n            if (!content) {\n                this.tooltip.css('visibility', 'hidden');\n                this.hidden = true;\n                return;\n            }\n            this.getSize(content);\n            this.tooltip.html(content)\n                .css({\n                    'width': this.width,\n                    'height': this.height,\n                    'visibility': 'visible'\n                });\n            if (this.hidden) {\n                this.hidden = false;\n                this.updatePosition();\n            }\n        },\n\n        updatePosition: function (x, y) {\n            if (x === undefined) {\n                if (this.mousex === undefined) {\n                    return;\n                }\n                x = this.mousex - this.offsetLeft;\n                y = this.mousey - this.offsetTop;\n\n            } else {\n                this.mousex = x = x - this.offsetLeft;\n                this.mousey = y = y - this.offsetTop;\n            }\n            if (!this.height || !this.width || this.hidden) {\n                return;\n            }\n\n            y -= this.height + this.tooltipOffsetY;\n            x += this.tooltipOffsetX;\n\n            if (y < this.scrollTop) {\n                y = this.scrollTop;\n            }\n            if (x < this.scrollLeft) {\n                x = this.scrollLeft;\n            } else if (x + this.width > this.scrollRight) {\n                x = this.scrollRight - this.width;\n            }\n\n            this.tooltip.css({\n                'left': x,\n                'top': y\n            });\n        },\n\n        remove: function () {\n            this.tooltip.remove();\n            this.sizetip.remove();\n            this.sizetip = this.tooltip = undefined;\n            $(window).unbind('resize.jqs scroll.jqs');\n        }\n    });\n\n    pending = [];\n    $.fn.sparkline = function (userValues, userOptions) {\n        return this.each(function () {\n            var options = new $.fn.sparkline.options(this, userOptions),\n                 $this = $(this),\n                 render, i;\n            render = function () {\n                var values, width, height, tmp, mhandler, sp, vals;\n                if (userValues === 'html' || userValues === undefined) {\n                    vals = this.getAttribute(options.get('tagValuesAttribute'));\n                    if (vals === undefined || vals === null) {\n                        vals = $this.html();\n                    }\n                    values = vals.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g, '').split(',');\n                } else {\n                    values = userValues;\n                }\n\n                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n                if (options.get('height') === 'auto') {\n                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n                        // must be a better way to get the line height\n                        tmp = document.createElement('span');\n                        tmp.innerHTML = 'a';\n                        $this.html(tmp);\n                        height = $(tmp).innerHeight() || $(tmp).height();\n                        $(tmp).remove();\n                        tmp = null;\n                    }\n                } else {\n                    height = options.get('height');\n                }\n\n                if (!options.get('disableInteraction')) {\n                    mhandler = $.data(this, '_jqs_mhandler');\n                    if (!mhandler) {\n                        mhandler = new MouseHandler(this, options);\n                        $.data(this, '_jqs_mhandler', mhandler);\n                    } else if (!options.get('composite')) {\n                        mhandler.reset();\n                    }\n                } else {\n                    mhandler = false;\n                }\n\n                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n                    if (!$.data(this, '_jqs_errnotify')) {\n                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n                        $.data(this, '_jqs_errnotify', true);\n                    }\n                    return;\n                }\n\n                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n                sp.render();\n\n                if (mhandler) {\n                    mhandler.registerSparkline(sp);\n                }\n            };\n            // jQuery 1.3.0 completely changed the meaning of :hidden :-/\n            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || ($.fn.jquery < '1.3.0' && $(this).parents().is(':hidden')) || !$(this).parents('body').length) {\n                if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n                    // remove any existing references to the element\n                    for (i = pending.length; i; i--) {\n                        if (pending[i - 1][0] == this) {\n                            pending.splice(i - 1, 1);\n                        }\n                    }\n                }\n                pending.push([this, render]);\n                $.data(this, '_jqs_pending', true);\n            } else {\n                render.call(this);\n            }\n        });\n    };\n\n    $.fn.sparkline.defaults = getDefaults();\n\n\n    $.sparkline_display_visible = function () {\n        var el, i, pl;\n        var done = [];\n        for (i = 0, pl = pending.length; i < pl; i++) {\n            el = pending[i][0];\n            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n                pending[i][1].call(el);\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n                // element has been inserted and removed from the DOM\n                // If it was not yet inserted into the dom then the .data request\n                // will return true.\n                // removing from the dom causes the data to be removed.\n                $.data(pending[i][0], '_jqs_pending', false);\n                done.push(i);\n            }\n        }\n        for (i = done.length; i; i--) {\n            pending.splice(done[i - 1], 1);\n        }\n    };\n\n\n    /**\n     * User option handler\n     */\n    $.fn.sparkline.options = createClass({\n        init: function (tag, userOptions) {\n            var extendedOptions, defaults, base, tagOptionType;\n            this.userOptions = userOptions = userOptions || {};\n            this.tag = tag;\n            this.tagValCache = {};\n            defaults = $.fn.sparkline.defaults;\n            base = defaults.common;\n            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n            tagOptionType = this.getTagSetting('type');\n            if (tagOptionType === UNSET_OPTION) {\n                extendedOptions = defaults[userOptions.type || base.type];\n            } else {\n                extendedOptions = defaults[tagOptionType];\n            }\n            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n        },\n\n\n        getTagSetting: function (key) {\n            var prefix = this.tagOptionsPrefix,\n                val, i, pairs, keyval;\n            if (prefix === false || prefix === undefined) {\n                return UNSET_OPTION;\n            }\n            if (this.tagValCache.hasOwnProperty(key)) {\n                val = this.tagValCache.key;\n            } else {\n                val = this.tag.getAttribute(prefix + key);\n                if (val === undefined || val === null) {\n                    val = UNSET_OPTION;\n                } else if (val.substr(0, 1) === '[') {\n                    val = val.substr(1, val.length - 2).split(',');\n                    for (i = val.length; i--;) {\n                        val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else if (val.substr(0, 1) === '{') {\n                    pairs = val.substr(1, val.length - 2).split(',');\n                    val = {};\n                    for (i = pairs.length; i--;) {\n                        keyval = pairs[i].split(':', 2);\n                        val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n                    }\n                } else {\n                    val = normalizeValue(val);\n                }\n                this.tagValCache.key = val;\n            }\n            return val;\n        },\n\n        get: function (key, defaultval) {\n            var tagOption = this.getTagSetting(key),\n                result;\n            if (tagOption !== UNSET_OPTION) {\n                return tagOption;\n            }\n            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n        }\n    });\n\n\n    $.fn.sparkline._base = createClass({\n        disabled: false,\n\n        init: function (el, values, options, width, height) {\n            this.el = el;\n            this.$el = $(el);\n            this.values = values;\n            this.options = options;\n            this.width = width;\n            this.height = height;\n            this.currentRegion = undefined;\n        },\n\n        /**\n         * Setup the canvas\n         */\n        initTarget: function () {\n            var interactive = !this.options.get('disableInteraction');\n            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n                this.disabled = true;\n            } else {\n                this.canvasWidth = this.target.pixelWidth;\n                this.canvasHeight = this.target.pixelHeight;\n            }\n        },\n\n        /**\n         * Actually render the chart to the canvas\n         */\n        render: function () {\n            if (this.disabled) {\n                this.el.innerHTML = '';\n                return false;\n            }\n            return true;\n        },\n\n        /**\n         * Return a region id for a given x/y co-ordinate\n         */\n        getRegion: function (x, y) {\n        },\n\n        /**\n         * Highlight an item based on the moused-over x,y co-ordinate\n         */\n        setRegionHighlight: function (el, x, y) {\n            var currentRegion = this.currentRegion,\n                highlightEnabled = !this.options.get('disableHighlight'),\n                newRegion;\n            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n                return null;\n            }\n            newRegion = this.getRegion(el, x, y);\n            if (currentRegion !== newRegion) {\n                if (currentRegion !== undefined && highlightEnabled) {\n                    this.removeHighlight();\n                }\n                this.currentRegion = newRegion;\n                if (newRegion !== undefined && highlightEnabled) {\n                    this.renderHighlight();\n                }\n                return true;\n            }\n            return false;\n        },\n\n        /**\n         * Reset any currently highlighted item\n         */\n        clearRegionHighlight: function () {\n            if (this.currentRegion !== undefined) {\n                this.removeHighlight();\n                this.currentRegion = undefined;\n                return true;\n            }\n            return false;\n        },\n\n        renderHighlight: function () {\n            this.changeHighlight(true);\n        },\n\n        removeHighlight: function () {\n            this.changeHighlight(false);\n        },\n\n        changeHighlight: function (highlight)  {},\n\n        /**\n         * Fetch the HTML to display as a tooltip\n         */\n        getCurrentRegionTooltip: function () {\n            var options = this.options,\n                header = '',\n                entries = [],\n                fields, formats, formatlen, fclass, text, i,\n                showFields, showFieldsKey, newFields, fv,\n                formatter, format, fieldlen, j;\n            if (this.currentRegion === undefined) {\n                return '';\n            }\n            fields = this.getCurrentRegionFields();\n            formatter = options.get('tooltipFormatter');\n            if (formatter) {\n                return formatter(this, options, fields);\n            }\n            if (options.get('tooltipChartTitle')) {\n                header += '<div class=\"jqs jqstitle\">' + options.get('tooltipChartTitle') + '</div>\\n';\n            }\n            formats = this.options.get('tooltipFormat');\n            if (!formats) {\n                return '';\n            }\n            if (!$.isArray(formats)) {\n                formats = [formats];\n            }\n            if (!$.isArray(fields)) {\n                fields = [fields];\n            }\n            showFields = this.options.get('tooltipFormatFieldlist');\n            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n            if (showFields && showFieldsKey) {\n                // user-selected ordering of fields\n                newFields = [];\n                for (i = fields.length; i--;) {\n                    fv = fields[i][showFieldsKey];\n                    if ((j = $.inArray(fv, showFields)) != -1) {\n                        newFields[j] = fields[i];\n                    }\n                }\n                fields = newFields;\n            }\n            formatlen = formats.length;\n            fieldlen = fields.length;\n            for (i = 0; i < formatlen; i++) {\n                format = formats[i];\n                if (typeof format === 'string') {\n                    format = new SPFormat(format);\n                }\n                fclass = format.fclass || 'jqsfield';\n                for (j = 0; j < fieldlen; j++) {\n                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n                        $.extend(fields[j], {\n                            prefix: options.get('tooltipPrefix'),\n                            suffix: options.get('tooltipSuffix')\n                        });\n                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n                        entries.push('<div class=\"' + fclass + '\">' + text + '</div>');\n                    }\n                }\n            }\n            if (entries.length) {\n                return header + entries.join('\\n');\n            }\n            return '';\n        },\n\n        getCurrentRegionFields: function () {},\n\n        calcHighlightColor: function (color, options) {\n            var highlightColor = options.get('highlightColor'),\n                lighten = options.get('highlightLighten'),\n                parse, mult, rgbnew, i;\n            if (highlightColor) {\n                return highlightColor;\n            }\n            if (lighten) {\n                // extract RGB values\n                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n                if (parse) {\n                    rgbnew = [];\n                    mult = color.length === 4 ? 16 : 1;\n                    for (i = 0; i < 3; i++) {\n                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n                    }\n                    return 'rgb(' + rgbnew.join(',') + ')';\n                }\n\n            }\n            return color;\n        }\n\n    });\n\n    barHighlightMixin = {\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                shapeids = this.regionShapes[currentRegion],\n                newShapes;\n            // will be null if the region value was null\n            if (shapeids) {\n                newShapes = this.renderRegion(currentRegion, highlight);\n                if ($.isArray(newShapes) || $.isArray(shapeids)) {\n                    target.replaceWithShapes(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n                        return newShape.id;\n                    });\n                } else {\n                    target.replaceWithShape(shapeids, newShapes);\n                    this.regionShapes[currentRegion] = newShapes.id;\n                }\n            }\n        },\n\n        render: function () {\n            var values = this.values,\n                target = this.target,\n                regionShapes = this.regionShapes,\n                shapes, ids, i, j;\n\n            if (!this.cls._super.render.call(this)) {\n                return;\n            }\n            for (i = values.length; i--;) {\n                shapes = this.renderRegion(i);\n                if (shapes) {\n                    if ($.isArray(shapes)) {\n                        ids = [];\n                        for (j = shapes.length; j--;) {\n                            shapes[j].append();\n                            ids.push(shapes[j].id);\n                        }\n                        regionShapes[i] = ids;\n                    } else {\n                        shapes.append();\n                        regionShapes[i] = shapes.id; // store just the shapeid\n                    }\n                } else {\n                    // null value\n                    regionShapes[i] = null;\n                }\n            }\n            target.render();\n        }\n    };\n\n    /**\n     * Line charts\n     */\n    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n        type: 'line',\n\n        init: function (el, values, options, width, height) {\n            line._super.init.call(this, el, values, options, width, height);\n            this.vertices = [];\n            this.regionMap = [];\n            this.xvalues = [];\n            this.yvalues = [];\n            this.yminmax = [];\n            this.hightlightSpotId = null;\n            this.lastShapeId = null;\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var i,\n                regionMap = this.regionMap; // maps regions to value positions\n            for (i = regionMap.length; i--;) {\n                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n                    return regionMap[i][2];\n                }\n            }\n            return undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.yvalues[currentRegion] === null,\n                x: this.xvalues[currentRegion],\n                y: this.yvalues[currentRegion],\n                color: this.options.get('lineColor'),\n                fillColor: this.options.get('fillColor'),\n                offset: currentRegion\n            };\n        },\n\n        renderHighlight: function () {\n            var currentRegion = this.currentRegion,\n                target = this.target,\n                vertex = this.vertices[currentRegion],\n                options = this.options,\n                spotRadius = options.get('spotRadius'),\n                highlightSpotColor = options.get('highlightSpotColor'),\n                highlightLineColor = options.get('highlightLineColor'),\n                highlightSpot, highlightLine;\n\n            if (!vertex) {\n                return;\n            }\n            if (spotRadius && highlightSpotColor) {\n                highlightSpot = target.drawCircle(vertex[0], vertex[1],\n                    spotRadius, undefined, highlightSpotColor);\n                this.highlightSpotId = highlightSpot.id;\n                target.insertAfterShape(this.lastShapeId, highlightSpot);\n            }\n            if (highlightLineColor) {\n                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n                    this.canvasTop + this.canvasHeight, highlightLineColor);\n                this.highlightLineId = highlightLine.id;\n                target.insertAfterShape(this.lastShapeId, highlightLine);\n            }\n        },\n\n        removeHighlight: function () {\n            var target = this.target;\n            if (this.highlightSpotId) {\n                target.removeShapeId(this.highlightSpotId);\n                this.highlightSpotId = null;\n            }\n            if (this.highlightLineId) {\n                target.removeShapeId(this.highlightLineId);\n                this.highlightLineId = null;\n            }\n        },\n\n        scanValues: function () {\n            var values = this.values,\n                valcount = values.length,\n                xvalues = this.xvalues,\n                yvalues = this.yvalues,\n                yminmax = this.yminmax,\n                i, val, isStr, isArray, sp;\n            for (i = 0; i < valcount; i++) {\n                val = values[i];\n                isStr = typeof(values[i]) === 'string';\n                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n                sp = isStr && values[i].split(':');\n                if (isStr && sp.length === 2) { // x:y\n                    xvalues.push(Number(sp[0]));\n                    yvalues.push(Number(sp[1]));\n                    yminmax.push(Number(sp[1]));\n                } else if (isArray) {\n                    xvalues.push(val[0]);\n                    yvalues.push(val[1]);\n                    yminmax.push(val[1]);\n                } else {\n                    xvalues.push(i);\n                    if (values[i] === null || values[i] === 'null') {\n                        yvalues.push(null);\n                    } else {\n                        yvalues.push(Number(val));\n                        yminmax.push(Number(val));\n                    }\n                }\n            }\n            if (this.options.get('xvalues')) {\n                xvalues = this.options.get('xvalues');\n            }\n\n            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n            this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n            this.maxx = Math.max.apply(Math, xvalues);\n            this.minx = Math.min.apply(Math, xvalues);\n\n            this.xvalues = xvalues;\n            this.yvalues = yvalues;\n            this.yminmax = yminmax;\n\n        },\n\n        processRangeOptions: function () {\n            var options = this.options,\n                normalRangeMin = options.get('normalRangeMin'),\n                normalRangeMax = options.get('normalRangeMax');\n\n            if (normalRangeMin !== undefined) {\n                if (normalRangeMin < this.miny) {\n                    this.miny = normalRangeMin;\n                }\n                if (normalRangeMax > this.maxy) {\n                    this.maxy = normalRangeMax;\n                }\n            }\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n                this.miny = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n                this.maxy = options.get('chartRangeMax');\n            }\n            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n                this.minx = options.get('chartRangeMinX');\n            }\n            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n                this.maxx = options.get('chartRangeMaxX');\n            }\n\n        },\n\n        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n            var normalRangeMin = this.options.get('normalRangeMin'),\n                normalRangeMax = this.options.get('normalRangeMax'),\n                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n        },\n\n        render: function () {\n            var options = this.options,\n                target = this.target,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                vertices = this.vertices,\n                spotRadius = options.get('spotRadius'),\n                regionMap = this.regionMap,\n                rangex, rangey, yvallast,\n                canvasTop, canvasLeft,\n                vertex, path, paths, x, y, xnext, xpos, xposnext,\n                last, next, yvalcount, lineShapes, fillShapes, plen,\n                valueSpots, color, xvalues, yvalues, i;\n\n            if (!line._super.render.call(this)) {\n                return;\n            }\n\n            this.scanValues();\n            this.processRangeOptions();\n\n            xvalues = this.xvalues;\n            yvalues = this.yvalues;\n\n            if (!this.yminmax.length || this.yvalues.length < 2) {\n                // empty or all null valuess\n                return;\n            }\n\n            canvasTop = canvasLeft = 0;\n\n            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n            yvallast = this.yvalues.length - 1;\n\n            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n                spotRadius = 0;\n            }\n            if (spotRadius) {\n                // adjust the canvas size as required so that spots will fit\n                if (options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                }\n                if (options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n                    canvasHeight -= Math.ceil(spotRadius);\n                    canvasTop += Math.ceil(spotRadius);\n                }\n                if ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy)) {\n                    canvasLeft += Math.ceil(spotRadius);\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n                if (options.get('spotColor') ||\n                    (options.get('minSpotColor') || options.get('maxSpotColor') &&\n                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n                    canvasWidth -= Math.ceil(spotRadius);\n                }\n            }\n\n\n            canvasHeight--;\n\n            if (options.get('normalRangeMin') && !options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            path = [];\n            paths = [path];\n            last = next = null;\n            yvalcount = yvalues.length;\n            for (i = 0; i < yvalcount; i++) {\n                x = xvalues[i];\n                xnext = xvalues[i + 1];\n                y = yvalues[i];\n                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n                next = xpos + ((xposnext - xpos) / 2);\n                regionMap[i] = [last || 0, next, i];\n                last = next;\n                if (y === null) {\n                    if (i) {\n                        if (yvalues[i - 1] !== null) {\n                            path = [];\n                            paths.push(path);\n                            vertices.push(null);\n                        }\n                    }\n                } else {\n                    if (y < this.miny) {\n                        y = this.miny;\n                    }\n                    if (y > this.maxy) {\n                        y = this.maxy;\n                    }\n                    if (!path.length) {\n                        // previous value was null\n                        path.push([xpos, canvasTop + canvasHeight]);\n                    }\n                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n                    path.push(vertex);\n                    vertices.push(vertex);\n                }\n            }\n\n            lineShapes = [];\n            fillShapes = [];\n            plen = paths.length;\n            for (i = 0; i < plen; i++) {\n                path = paths[i];\n                if (path.length) {\n                    if (options.get('fillColor')) {\n                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n                        fillShapes.push(path.slice(0));\n                        path.pop();\n                    }\n                    // if there's only a single point in this path, then we want to display it\n                    // as a vertical line which means we keep path[0]  as is\n                    if (path.length > 2) {\n                        // else we want the first value\n                        path[0] = [path[0][0], path[1][1]];\n                    }\n                    lineShapes.push(path);\n                }\n            }\n\n            // draw the fill first, then optionally the normal range, then the line on top of that\n            plen = fillShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(fillShapes[i],\n                    options.get('fillColor'), options.get('fillColor')).append();\n            }\n\n            if (options.get('normalRangeMin') && options.get('drawNormalOnTop')) {\n                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n            }\n\n            plen = lineShapes.length;\n            for (i = 0; i < plen; i++) {\n                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n                    options.get('lineWidth')).append();\n            }\n\n            if (spotRadius && options.get('valueSpots')) {\n                valueSpots = options.get('valueSpots');\n                if (valueSpots.get === undefined) {\n                    valueSpots = new RangeMap(valueSpots);\n                }\n                for (i = 0; i < yvalcount; i++) {\n                    color = valueSpots.get(yvalues[i]);\n                    if (color) {\n                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n                            spotRadius, undefined,\n                            color).append();\n                    }\n                }\n\n            }\n            if (spotRadius && options.get('spotColor')) {\n                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n                    spotRadius, undefined,\n                    options.get('spotColor')).append();\n            }\n            if (this.maxy !== this.minyorg) {\n                if (spotRadius && options.get('minSpotColor')) {\n                    x = xvalues[$.inArray(this.minyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('minSpotColor')).append();\n                }\n                if (spotRadius && options.get('maxSpotColor')) {\n                    x = xvalues[$.inArray(this.maxyorg, yvalues)];\n                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n                        spotRadius, undefined,\n                        options.get('maxSpotColor')).append();\n                }\n            }\n\n            this.lastShapeId = target.getLastShapeId();\n            this.canvasTop = canvasTop;\n            target.render();\n        }\n    });\n\n    /**\n     * Bar charts\n     */\n    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'bar',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10),\n                chartRangeMin = options.get('chartRangeMin'),\n                chartRangeMax = options.get('chartRangeMax'),\n                chartRangeClip = options.get('chartRangeClip'),\n                stackMin = Infinity,\n                stackMax = -Infinity,\n                isStackString, groupMin, groupMax, stackRanges,\n                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n            bar._super.init.call(this, el, values, options, width, height);\n\n            // scan values to determine whether to stack bars\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                val = values[i];\n                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n                if (isStackString || $.isArray(val)) {\n                    stacked = true;\n                    if (isStackString) {\n                        val = values[i] = normalizeValues(val.split(':'));\n                    }\n                    val = remove(val, null); // min/max will treat null as zero\n                    groupMin = Math.min.apply(Math, val);\n                    groupMax = Math.max.apply(Math, val);\n                    if (groupMin < stackMin) {\n                        stackMin = groupMin;\n                    }\n                    if (groupMax > stackMax) {\n                        stackMax = groupMax;\n                    }\n                }\n            }\n\n            this.stacked = stacked;\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            this.initTarget();\n\n            if (chartRangeClip) {\n                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n            }\n\n            numValues = [];\n            stackRanges = stacked ? [] : numValues;\n            var stackTotals = [];\n            var stackRangesNeg = [];\n            for (i = 0, vlen = values.length; i < vlen; i++) {\n                if (stacked) {\n                    vlist = values[i];\n                    values[i] = svals = [];\n                    stackTotals[i] = 0;\n                    stackRanges[i] = stackRangesNeg[i] = 0;\n                    for (j = 0, slen = vlist.length; j < slen; j++) {\n                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n                        if (val !== null) {\n                            if (val > 0) {\n                                stackTotals[i] += val;\n                            }\n                            if (stackMin < 0 && stackMax > 0) {\n                                if (val < 0) {\n                                    stackRangesNeg[i] += Math.abs(val);\n                                } else {\n                                    stackRanges[i] += val;\n                                }\n                            } else {\n                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n                            }\n                            numValues.push(val);\n                        }\n                    }\n                } else {\n                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n                    val = values[i] = normalizeValue(val);\n                    if (val !== null) {\n                        numValues.push(val);\n                    }\n                }\n            }\n            this.max = max = Math.max.apply(Math, numValues);\n            this.min = min = Math.min.apply(Math, numValues);\n            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n                min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n                max = options.get('chartRangeMax');\n            }\n\n            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n            if (min <= 0 && max >= 0 && zeroAxis) {\n                xaxisOffset = 0;\n            } else if (zeroAxis == false) {\n                xaxisOffset = min;\n            } else if (min > 0) {\n                xaxisOffset = min;\n            } else {\n                xaxisOffset = max;\n            }\n            this.xaxisOffset = xaxisOffset;\n\n            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n            // as we plot zero/min values a single pixel line, we add a pixel to all other\n            // values - Reduce the effective canvas size to suit\n            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n            if (min < xaxisOffset) {\n                yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n                if (yoffset !== Math.ceil(yoffset)) {\n                    this.canvasHeightEf -= 2;\n                    yoffset = Math.ceil(yoffset);\n                }\n            } else {\n                yoffset = this.canvasHeight;\n            }\n            this.yoffset = yoffset;\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n\n            this.range = range;\n        },\n\n        getRegion: function (el, x, y) {\n            var result = Math.floor(x / this.totalBarWidth);\n            return (result < 0 || result >= this.values.length) ? undefined : result;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion,\n                values = ensureArray(this.values[currentRegion]),\n                result = [],\n                value, i;\n            for (i = values.length; i--;) {\n                value = values[i];\n                result.push({\n                    isNull: value === null,\n                    value: value,\n                    color: this.calcColor(i, value, currentRegion),\n                    offset: currentRegion\n                });\n            }\n            return result;\n        },\n\n        calcColor: function (stacknum, value, valuenum) {\n            var colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                options = this.options,\n                color, newColor;\n            if (this.stacked) {\n                color = options.get('stackedBarColor');\n            } else {\n                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n            }\n            if (value === 0 && options.get('zeroColor') !== undefined) {\n                color = options.get('zeroColor');\n            }\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            }\n            return $.isArray(color) ? color[stacknum % color.length] : color;\n        },\n\n        /**\n         * Render bar(s) for a region\n         */\n        renderRegion: function (valuenum, highlight) {\n            var vals = this.values[valuenum],\n                options = this.options,\n                xaxisOffset = this.xaxisOffset,\n                result = [],\n                range = this.range,\n                stacked = this.stacked,\n                target = this.target,\n                x = valuenum * this.totalBarWidth,\n                canvasHeightEf = this.canvasHeightEf,\n                yoffset = this.yoffset,\n                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n            vals = $.isArray(vals) ? vals : [vals];\n            valcount = vals.length;\n            val = vals[0];\n            isNull = all(null, vals);\n            allMin = all(xaxisOffset, vals, true);\n\n            if (isNull) {\n                if (options.get('nullColor')) {\n                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n                    y = (yoffset > 0) ? yoffset - 1 : yoffset;\n                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n                } else {\n                    return undefined;\n                }\n            }\n            yoffsetNeg = yoffset;\n            for (i = 0; i < valcount; i++) {\n                val = vals[i];\n\n                if (stacked && val === xaxisOffset) {\n                    if (!allMin || minPlotted) {\n                        continue;\n                    }\n                    minPlotted = true;\n                }\n\n                if (range > 0) {\n                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n                } else {\n                    height = 1;\n                }\n                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n                    y = yoffsetNeg;\n                    yoffsetNeg += height;\n                } else {\n                    y = yoffset - height;\n                    yoffset -= height;\n                }\n                color = this.calcColor(i, val, valuenum);\n                if (highlight) {\n                    color = this.calcHighlightColor(color, options);\n                }\n                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n            }\n            if (result.length === 1) {\n                return result[0];\n            }\n            return result;\n        }\n    });\n\n    /**\n     * Tristate charts\n     */\n    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'tristate',\n\n        init: function (el, values, options, width, height) {\n            var barWidth = parseInt(options.get('barWidth'), 10),\n                barSpacing = parseInt(options.get('barSpacing'), 10);\n            tristate._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.barWidth = barWidth;\n            this.barSpacing = barSpacing;\n            this.totalBarWidth = barWidth + barSpacing;\n            this.values = $.map(values, Number);\n            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n            if ($.isArray(options.get('colorMap'))) {\n                this.colorMapByIndex = options.get('colorMap');\n                this.colorMapByValue = null;\n            } else {\n                this.colorMapByIndex = null;\n                this.colorMapByValue = options.get('colorMap');\n                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n                    this.colorMapByValue = new RangeMap(this.colorMapByValue);\n                }\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.totalBarWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                color: this.calcColor(this.values[currentRegion], currentRegion),\n                offset: currentRegion\n            };\n        },\n\n        calcColor: function (value, valuenum) {\n            var values = this.values,\n                options = this.options,\n                colorMapByIndex = this.colorMapByIndex,\n                colorMapByValue = this.colorMapByValue,\n                color, newColor;\n\n            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n                color = newColor;\n            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n                color = colorMapByIndex[valuenum];\n            } else if (values[valuenum] < 0) {\n                color = options.get('negBarColor');\n            } else if (values[valuenum] > 0) {\n                color = options.get('posBarColor');\n            } else {\n                color = options.get('zeroBarColor');\n            }\n            return color;\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                target = this.target,\n                canvasHeight, height, halfHeight,\n                x, y, color;\n\n            canvasHeight = target.pixelHeight;\n            halfHeight = Math.round(canvasHeight / 2);\n\n            x = valuenum * this.totalBarWidth;\n            if (values[valuenum] < 0) {\n                y = halfHeight;\n                height = halfHeight - 1;\n            } else if (values[valuenum] > 0) {\n                y = 0;\n                height = halfHeight - 1;\n            } else {\n                y = halfHeight - 1;\n                height = 2;\n            }\n            color = this.calcColor(values[valuenum], valuenum);\n            if (color === null) {\n                return;\n            }\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n        }\n    });\n\n    /**\n     * Discrete charts\n     */\n    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n        type: 'discrete',\n\n        init: function (el, values, options, width, height) {\n            discrete._super.init.call(this, el, values, options, width, height);\n\n            this.regionShapes = {};\n            this.values = values = $.map(values, Number);\n            this.min = Math.min.apply(Math, values);\n            this.max = Math.max.apply(Math, values);\n            this.range = this.max - this.min;\n            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n            this.interval = Math.floor(width / values.length);\n            this.itemWidth = width / values.length;\n            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n                this.min = options.get('chartRangeMin');\n            }\n            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n                this.max = options.get('chartRangeMax');\n            }\n            this.initTarget();\n            if (this.target) {\n                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n            }\n        },\n\n        getRegion: function (el, x, y) {\n            return Math.floor(x / this.itemWidth);\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                offset: currentRegion\n            };\n        },\n\n        renderRegion: function (valuenum, highlight) {\n            var values = this.values,\n                options = this.options,\n                min = this.min,\n                max = this.max,\n                range = this.range,\n                interval = this.interval,\n                target = this.target,\n                canvasHeight = this.canvasHeight,\n                lineHeight = this.lineHeight,\n                pheight = canvasHeight - lineHeight,\n                ytop, val, color, x;\n\n            val = clipval(values[valuenum], min, max);\n            x = valuenum * interval;\n            ytop = Math.round(pheight - pheight * ((val - min) / range));\n            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, options);\n            }\n            return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n        }\n    });\n\n    /**\n     * Bullet charts\n     */\n    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n        type: 'bullet',\n\n        init: function (el, values, options, width, height) {\n            var min, max;\n            bullet._super.init.call(this, el, values, options, width, height);\n\n            // values: target, performance, range1, range2, range3\n            values = $.map(values, Number);\n            min = Math.min.apply(Math, values);\n            max = Math.max.apply(Math, values);\n            if (options.get('base') === undefined) {\n                min = min < 0 ? min : 0;\n            } else {\n                min = options.get('base');\n            }\n            this.min = min;\n            this.max = max;\n            this.range = max - min;\n            this.shapes = {};\n            this.valueShapes = {};\n            this.regiondata = {};\n            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.target = this.$el.simpledraw(width, height, options.get('composite'));\n            if (!values.length) {\n                this.disabled = true;\n            }\n            this.initTarget();\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                fieldkey: currentRegion.substr(0, 1),\n                value: this.values[currentRegion.substr(1)],\n                region: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                shapeid = this.valueShapes[currentRegion],\n                shape;\n            delete this.shapes[shapeid];\n            switch (currentRegion.substr(0, 1)) {\n                case 'r':\n                    shape = this.renderRange(currentRegion.substr(1), highlight);\n                    break;\n                case 'p':\n                    shape = this.renderPerformance(highlight);\n                    break;\n                case 't':\n                    shape = this.renderTarget(highlight);\n                    break;\n            }\n            this.valueShapes[currentRegion] = shape.id;\n            this.shapes[shape.id] = currentRegion;\n            this.target.replaceWithShape(shapeid, shape);\n        },\n\n        renderRange: function (rn, highlight) {\n            var rangeval = this.values[rn],\n                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n                color = this.options.get('rangeColors')[rn - 2];\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n        },\n\n        renderPerformance: function (highlight) {\n            var perfval = this.values[1],\n                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n                color = this.options.get('performanceColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n                Math.round(this.canvasHeight * 0.4) - 1, color, color);\n        },\n\n        renderTarget: function (highlight) {\n            var targetval = this.values[0],\n                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n                targettop = Math.round(this.canvasHeight * 0.10),\n                targetheight = this.canvasHeight - (targettop * 2),\n                color = this.options.get('targetColor');\n            if (highlight) {\n                color = this.calcHighlightColor(color, this.options);\n            }\n            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n        },\n\n        render: function () {\n            var vlen = this.values.length,\n                target = this.target,\n                i, shape;\n            if (!bullet._super.render.call(this)) {\n                return;\n            }\n            for (i = 2; i < vlen; i++) {\n                shape = this.renderRange(i).append();\n                this.shapes[shape.id] = 'r' + i;\n                this.valueShapes['r' + i] = shape.id;\n            }\n            shape = this.renderPerformance().append();\n            this.shapes[shape.id] = 'p1';\n            this.valueShapes.p1 = shape.id;\n            shape = this.renderTarget().append();\n            this.shapes[shape.id] = 't0';\n            this.valueShapes.t0 = shape.id;\n            target.render();\n        }\n    });\n\n    /**\n     * Pie charts\n     */\n    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n        type: 'pie',\n\n        init: function (el, values, options, width, height) {\n            var total = 0, i;\n\n            pie._super.init.call(this, el, values, options, width, height);\n\n            this.shapes = {}; // map shape ids to value offsets\n            this.valueShapes = {}; // maps value offsets to shape ids\n            this.values = values = $.map(values, Number);\n\n            if (options.get('width') === 'auto') {\n                this.width = this.height;\n            }\n\n            if (values.length > 0) {\n                for (i = values.length; i--;) {\n                    total += values[i];\n                }\n            }\n            this.total = total;\n            this.initTarget();\n            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n        },\n\n        getRegion: function (el, x, y) {\n            var shapeid = this.target.getShapeAt(el, x, y);\n            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n        },\n\n        getCurrentRegionFields: function () {\n            var currentRegion = this.currentRegion;\n            return {\n                isNull: this.values[currentRegion] === undefined,\n                value: this.values[currentRegion],\n                percent: this.values[currentRegion] / this.total * 100,\n                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n                offset: currentRegion\n            };\n        },\n\n        changeHighlight: function (highlight) {\n            var currentRegion = this.currentRegion,\n                 newslice = this.renderSlice(currentRegion, highlight),\n                 shapeid = this.valueShapes[currentRegion];\n            delete this.shapes[shapeid];\n            this.target.replaceWithShape(shapeid, newslice);\n            this.valueShapes[currentRegion] = newslice.id;\n            this.shapes[newslice.id] = currentRegion;\n        },\n\n        renderSlice: function (valuenum, highlight) {\n            var target = this.target,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                offset = options.get('offset'),\n                circle = 2 * Math.PI,\n                values = this.values,\n                total = this.total,\n                next = offset ? (2*Math.PI)*(offset/360) : 0,\n                start, end, i, vlen, color;\n\n            vlen = values.length;\n            for (i = 0; i < vlen; i++) {\n                start = next;\n                end = next;\n                if (total > 0) {  // avoid divide by zero\n                    end = next + (circle * (values[i] / total));\n                }\n                if (valuenum === i) {\n                    color = options.get('sliceColors')[i % options.get('sliceColors').length];\n                    if (highlight) {\n                        color = this.calcHighlightColor(color, options);\n                    }\n\n                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n                }\n                next = end;\n            }\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                options = this.options,\n                radius = this.radius,\n                borderWidth = options.get('borderWidth'),\n                shape, i;\n\n            if (!pie._super.render.call(this)) {\n                return;\n            }\n            if (borderWidth) {\n                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n                    options.get('borderColor'), undefined, borderWidth).append();\n            }\n            for (i = values.length; i--;) {\n                shape = this.renderSlice(i).append();\n                this.valueShapes[i] = shape.id; // store just the shapeid\n                this.shapes[shape.id] = i;\n            }\n            target.render();\n        }\n    });\n\n    /**\n     * Box plots\n     */\n    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n        type: 'box',\n\n        init: function (el, values, options, width, height) {\n            box._super.init.call(this, el, values, options, width, height);\n            this.values = $.map(values, Number);\n            this.width = options.get('width') === 'auto' ? '4.0em' : width;\n            this.initTarget();\n            if (!this.values.length) {\n                this.disabled = 1;\n            }\n        },\n\n        /**\n         * Simulate a single region\n         */\n        getRegion: function () {\n            return 1;\n        },\n\n        getCurrentRegionFields: function () {\n            var result = [\n                { field: 'lq', value: this.quartiles[0] },\n                { field: 'med', value: this.quartiles[1] },\n                { field: 'uq', value: this.quartiles[2] },\n                { field: 'lo', value: this.loutlier },\n                { field: 'ro', value: this.routlier }\n            ];\n            if (this.lwhisker !== undefined) {\n                result.push({ field: 'lw', value: this.lwhisker});\n            }\n            if (this.rwhisker !== undefined) {\n                result.push({ field: 'rw', value: this.rwhisker});\n            }\n            return result;\n        },\n\n        render: function () {\n            var target = this.target,\n                values = this.values,\n                vlen = values.length,\n                options = this.options,\n                canvasWidth = this.canvasWidth,\n                canvasHeight = this.canvasHeight,\n                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n                canvasLeft = 0,\n                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n                size, unitSize;\n\n            if (!box._super.render.call(this)) {\n                return;\n            }\n\n            if (options.get('raw')) {\n                if (options.get('showOutliers') && values.length > 5) {\n                    loutlier = values[0];\n                    lwhisker = values[1];\n                    q1 = values[2];\n                    q2 = values[3];\n                    q3 = values[4];\n                    rwhisker = values[5];\n                    routlier = values[6];\n                } else {\n                    lwhisker = values[0];\n                    q1 = values[1];\n                    q2 = values[2];\n                    q3 = values[3];\n                    rwhisker = values[4];\n                }\n            } else {\n                values.sort(function (a, b) { return a - b; });\n                q1 = quartile(values, 1);\n                q2 = quartile(values, 2);\n                q3 = quartile(values, 3);\n                iqr = q3 - q1;\n                if (options.get('showOutliers')) {\n                    lwhisker = rwhisker = undefined;\n                    for (i = 0; i < vlen; i++) {\n                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n                            lwhisker = values[i];\n                        }\n                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n                            rwhisker = values[i];\n                        }\n                    }\n                    loutlier = values[0];\n                    routlier = values[vlen - 1];\n                } else {\n                    lwhisker = values[0];\n                    rwhisker = values[vlen - 1];\n                }\n            }\n            this.quartiles = [q1, q2, q3];\n            this.lwhisker = lwhisker;\n            this.rwhisker = rwhisker;\n            this.loutlier = loutlier;\n            this.routlier = routlier;\n\n            unitSize = canvasWidth / (maxValue - minValue + 1);\n            if (options.get('showOutliers')) {\n                canvasLeft = Math.ceil(options.get('spotRadius'));\n                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n                unitSize = canvasWidth / (maxValue - minValue + 1);\n                if (loutlier < lwhisker) {\n                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n                if (routlier > rwhisker) {\n                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n                        canvasHeight / 2,\n                        options.get('spotRadius'),\n                        options.get('outlierLineColor'),\n                        options.get('outlierFillColor')).append();\n                }\n            }\n\n            // box\n            target.drawRect(\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q3 - q1) * unitSize),\n                Math.round(canvasHeight * 0.8),\n                options.get('boxLineColor'),\n                options.get('boxFillColor')).append();\n            // left whisker\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q1 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // right whisker\n            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                Math.round((q3 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 2),\n                options.get('lineColor')).append();\n            target.drawLine(\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight / 4),\n                Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight - canvasHeight / 4),\n                options.get('whiskerColor')).append();\n            // median line\n            target.drawLine(\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.1),\n                Math.round((q2 - minValue) * unitSize + canvasLeft),\n                Math.round(canvasHeight * 0.9),\n                options.get('medianColor')).append();\n            if (options.get('target')) {\n                size = Math.ceil(options.get('spotRadius'));\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) - size),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n                    Math.round((canvasHeight / 2) + size),\n                    options.get('targetColor')).append();\n                target.drawLine(\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n                    Math.round(canvasHeight / 2),\n                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n                    Math.round(canvasHeight / 2),\n                    options.get('targetColor')).append();\n            }\n            target.render();\n        }\n    });\n\n    // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n    // This is accessible as $(foo).simpledraw()\n\n    if ($.browser.msie && !document.namespaces.v) {\n        document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n    }\n\n    if ($.browser.hasCanvas === undefined) {\n        $.browser.hasCanvas = document.createElement('canvas').getContext !== undefined;\n    }\n\n    VShape = createClass({\n        init: function (target, id, type, args) {\n            this.target = target;\n            this.id = id;\n            this.type = type;\n            this.args = args;\n        },\n        append: function () {\n            this.target.appendShape(this);\n            return this;\n        }\n    });\n\n    VCanvas_base = createClass({\n        _pxregex: /(\\d+)(px)?\\s*$/i,\n\n        init: function (width, height, target) {\n            if (!width) {\n                return;\n            }\n            this.width = width;\n            this.height = height;\n            this.target = target;\n            this.lastShapeId = null;\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n        },\n\n        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n        },\n\n        drawShape: function (path, lineColor, fillColor, lineWidth) {\n            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n        },\n\n        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n        },\n\n        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n        },\n\n        drawRect: function (x, y, width, height, lineColor, fillColor) {\n            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n        },\n\n        getElement: function () {\n            return this.canvas;\n        },\n\n        /**\n         * Return the most recently inserted shape id\n         */\n        getLastShapeId: function () {\n            return this.lastShapeId;\n        },\n\n        /**\n         * Clear and reset the canvas\n         */\n        reset: function () {\n            alert('reset not implemented');\n        },\n\n        _insert: function (el, target) {\n            $(target).html(el);\n        },\n\n        /**\n         * Calculate the pixel dimensions of the canvas\n         */\n        _calculatePixelDims: function (width, height, canvas) {\n            // XXX This should probably be a configurable option\n            var match;\n            match = this._pxregex.exec(height);\n            if (match) {\n                this.pixelHeight = match[1];\n            } else {\n                this.pixelHeight = $(canvas).height();\n            }\n            match = this._pxregex.exec(width);\n            if (match) {\n                this.pixelWidth = match[1];\n            } else {\n                this.pixelWidth = $(canvas).width();\n            }\n        },\n\n        /**\n         * Generate a shape object and id for later rendering\n         */\n        _genShape: function (shapetype, shapeargs) {\n            var id = shapeCount++;\n            shapeargs.unshift(id);\n            return new VShape(this, id, shapetype, shapeargs);\n        },\n\n        /**\n         * Add a shape to the end of the render queue\n         */\n        appendShape: function (shape) {\n            alert('appendShape not implemented');\n        },\n\n        /**\n         * Replace one shape with another\n         */\n        replaceWithShape: function (shapeid, shape) {\n            alert('replaceWithShape not implemented');\n        },\n\n        /**\n         * Insert one shape after another in the render queue\n         */\n        insertAfterShape: function (shapeid, shape) {\n            alert('insertAfterShape not implemented');\n        },\n\n        /**\n         * Remove a shape from the queue\n         */\n        removeShapeId: function (shapeid) {\n            alert('removeShapeId not implemented');\n        },\n\n        /**\n         * Find a shape at the specified x/y co-ordinates\n         */\n        getShapeAt: function (el, x, y) {\n            alert('getShapeAt not implemented');\n        },\n\n        /**\n         * Render all queued shapes onto the canvas\n         */\n        render: function () {\n            alert('render not implemented');\n        }\n    });\n\n    VCanvas_canvas = createClass(VCanvas_base, {\n        init: function (width, height, target, interact) {\n            VCanvas_canvas._super.init.call(this, width, height, target);\n            this.canvas = document.createElement('canvas');\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            this.interact = interact;\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n        },\n\n        _getContext: function (lineColor, fillColor, lineWidth) {\n            var context = this.canvas.getContext('2d');\n            if (lineColor !== undefined) {\n                context.strokeStyle = lineColor;\n            }\n            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            if (fillColor !== undefined) {\n                context.fillStyle = fillColor;\n            }\n            return context;\n        },\n\n        reset: function () {\n            var context = this._getContext();\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            this.shapes = {};\n            this.shapeseq = [];\n            this.currentTargetShapeId = undefined;\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth),\n                i, plen;\n            context.beginPath();\n            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n            for (i = 1, plen = path.length; i < plen; i++) {\n                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var context = this._getContext(lineColor, fillColor, lineWidth);\n            context.beginPath();\n            context.arc(x, y, radius, 0, 2 * Math.PI, false);\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor !== undefined) {\n                context.fill();\n            }\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var context = this._getContext(lineColor, fillColor);\n            context.beginPath();\n            context.moveTo(x, y);\n            context.arc(x, y, radius, startAngle, endAngle, false);\n            context.lineTo(x, y);\n            context.closePath();\n            if (lineColor !== undefined) {\n                context.stroke();\n            }\n            if (fillColor) {\n                context.fill();\n            }\n            if (this.targetX !== undefined && this.targetY !== undefined &&\n                context.isPointInPath(this.targetX, this.targetY)) {\n                this.currentTargetShapeId = shapeid;\n            }\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n        },\n\n        appendShape: function (shape) {\n            this.shapes[shape.id] = shape;\n            this.shapeseq.push(shape.id);\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            this.shapes[shape.id] = shape;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] == shapeid) {\n                    shapeseq[i] = shape.id;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            var shapeseq = this.shapeseq,\n                shapemap = {},\n                sid, i, first;\n\n            for (i = shapeids.length; i--;) {\n                shapemap[shapeids[i]] = true;\n            }\n            for (i = shapeseq.length; i--;) {\n                sid = shapeseq[i];\n                if (shapemap[sid]) {\n                    shapeseq.splice(i, 1);\n                    delete this.shapes[sid];\n                    first = i;\n                }\n            }\n            for (i = shapes.length; i--;) {\n                shapeseq.splice(first, 0, shapes[i].id);\n                this.shapes[shapes[i].id] = shapes[i];\n            }\n\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i + 1, 0, shape.id);\n                    this.shapes[shape.id] = shape;\n                    return;\n                }\n            }\n        },\n\n        removeShapeId: function (shapeid) {\n            var shapeseq = this.shapeseq,\n                i;\n            for (i = shapeseq.length; i--;) {\n                if (shapeseq[i] === shapeid) {\n                    shapeseq.splice(i, 1);\n                    break;\n                }\n            }\n            delete this.shapes[shapeid];\n        },\n\n        getShapeAt: function (el, x, y) {\n            this.targetX = x;\n            this.targetY = y;\n            this.render();\n            return this.currentTargetShapeId;\n        },\n\n        render: function () {\n            var shapeseq = this.shapeseq,\n                shapes = this.shapes,\n                shapeCount = shapeseq.length,\n                context = this._getContext(),\n                shapeid, shape, i;\n            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n            for (i = 0; i < shapeCount; i++) {\n                shapeid = shapeseq[i];\n                shape = shapes[shapeid];\n                this['_draw' + shape.type].apply(this, shape.args);\n            }\n            if (!this.interact) {\n                // not interactive so no need to keep the shapes array\n                this.shapes = {};\n                this.shapeseq = [];\n            }\n        }\n\n    });\n\n    VCanvas_vml = createClass(VCanvas_base, {\n        init: function (width, height, target) {\n            var groupel;\n            VCanvas_vml._super.init.call(this, width, height, target);\n            if (target[0]) {\n                target = target[0];\n            }\n            $.data(target, '_jqs_vcanvas', this);\n            this.canvas = document.createElement('span');\n            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n            this._insert(this.canvas, target);\n            this._calculatePixelDims(width, height, this.canvas);\n            this.canvas.width = this.pixelWidth;\n            this.canvas.height = this.pixelHeight;\n            groupel = '<v:group coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\"' +\n                    ' style=\"position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;\"></v:group>';\n            this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n            this.group = $(this.canvas).children()[0];\n            this.rendered = false;\n            this.prerender = '';\n        },\n\n        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n            var vpath = [],\n                initial, stroke, fill, closed, vel, plen, i;\n            for (i = 0, plen = path.length; i < plen; i++) {\n                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n            }\n            initial = vpath.splice(0, 1);\n            lineWidth = lineWidth === undefined ? 1 : lineWidth;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n            var stroke, fill, vel;\n            x -= radius;\n            y -= radius;\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:oval ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                stroke +\n                fill +\n                ' style=\"position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px\"></v:oval>';\n            return vel;\n\n        },\n\n        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n            var vpath, startx, starty, endx, endy, stroke, fill, vel;\n            if (startAngle === endAngle) {\n                return;  // VML seems to have problem when start angle equals end angle.\n            }\n            if ((endAngle - startAngle) === (2 * Math.PI)) {\n                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0\n                endAngle = (2 * Math.PI);\n            }\n\n            startx = x + Math.round(Math.cos(startAngle) * radius);\n            starty = y + Math.round(Math.sin(startAngle) * radius);\n            endx = x + Math.round(Math.cos(endAngle) * radius);\n            endy = y + Math.round(Math.sin(endAngle) * radius);\n\n            // Prevent very small slices from being mistaken as a whole pie\n            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n                return;\n            }\n\n            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n            stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n            fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n            vel = '<v:shape coordorigin=\"0 0\" coordsize=\"' + this.pixelWidth + ' ' + this.pixelHeight + '\" ' +\n                 ' id=\"jqsshape' + shapeid + '\" ' +\n                 stroke +\n                 fill +\n                ' style=\"position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;\" ' +\n                ' path=\"m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e\">' +\n                ' </v:shape>';\n            return vel;\n        },\n\n        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n        },\n\n        reset: function () {\n            this.group.innerHTML = '';\n        },\n\n        appendShape: function (shape) {\n            var vel = this['_draw' + shape.type].apply(this, shape.args);\n            if (this.rendered) {\n                this.group.insertAdjacentHTML('beforeEnd', vel);\n            } else {\n                this.prerender += vel;\n            }\n            this.lastShapeId = shape.id;\n            return shape.id;\n        },\n\n        replaceWithShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].outerHTML = vel;\n        },\n\n        replaceWithShapes: function (shapeids, shapes) {\n            // replace the first shapeid with all the new shapes then toast the remaining old shapes\n            var existing = $('#jqsshape' + shapeids[0]),\n                replace = '',\n                slen = shapes.length,\n                i;\n            for (i = 0; i < slen; i++) {\n                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n            }\n            existing[0].outerHTML = replace;\n            for (i = 1; i < shapeids.length; i++) {\n                $('#jqsshape' + shapeids[i]).remove();\n            }\n        },\n\n        insertAfterShape: function (shapeid, shape) {\n            var existing = $('#jqsshape' + shapeid),\n                 vel = this['_draw' + shape.type].apply(this, shape.args);\n            existing[0].insertAdjacentHTML('afterEnd', vel);\n        },\n\n        removeShapeId: function (shapeid) {\n            var existing = $('#jqsshape' + shapeid);\n            this.group.removeChild(existing[0]);\n        },\n\n        getShapeAt: function (el, x, y) {\n            var shapeid = el.id.substr(8);\n            return shapeid;\n        },\n\n        render: function () {\n            if (!this.rendered) {\n                // batch the intial render into a single repaint\n                this.group.innerHTML = this.prerender;\n                this.rendered = true;\n            }\n        }\n    });\n\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/jslib/bs_js/nestable.js",
    "content": "var Nestable = function () {\n\n    var updateOutput = function (e) {\n        var list = e.length ? e : $(e.target),\n            output = list.data('output');\n        if (window.JSON) {\n            output.val(window.JSON.stringify(list.nestable('serialize'))); //, null, 2));\n        } else {\n            output.val('JSON browser support required for this demo.');\n        }\n    };\n\n\n\n    // activate Nestable for list 1\n    $('#nestable_list_1').nestable({\n        group: 1\n    })\n        .on('change', updateOutput);\n\n    // activate Nestable for list 2\n    $('#nestable_list_2').nestable({\n        group: 1\n    })\n        .on('change', updateOutput);\n\n    // output initial serialised data\n    updateOutput($('#nestable_list_1').data('output', $('#nestable_list_1_output')));\n    updateOutput($('#nestable_list_2').data('output', $('#nestable_list_2_output')));\n\n    $('#nestable_list_menu').on('click', function (e) {\n        var target = $(e.target),\n            action = target.data('action');\n        if (action === 'expand-all') {\n            $('.dd').nestable('expandAll');\n        }\n        if (action === 'collapse-all') {\n            $('.dd').nestable('collapseAll');\n        }\n    });\n\n    $('#nestable_list_3').nestable();\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/pulstate.js",
    "content": "var Pulstate = function () {\n\n//    pulstate\n\n    jQuery('#pulsate-regular').pulsate({\n        color: \"#E74955\"\n    });\n\n    jQuery('#pulsate-once').click(function () {\n        $(this).pulsate({\n            color: \"#A5D16C\",\n            repeat: false\n        });\n    });\n\n    jQuery('#pulsate-hover').pulsate({\n        color: \"#4A8BC2\",\n        repeat: false,\n        onHover: true\n    });\n\n    jQuery('#pulsate-crazy').click(function () {\n        $(this).pulsate({\n            color: \"#FCB322\",\n            reach: 50,\n            repeat: 10,\n            speed: 100,\n            glow: true\n        });\n    });\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/respond.js",
    "content": "\n/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */\n/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */\nwindow.matchMedia = window.matchMedia || (function(doc, undefined){\n  \n  var bool,\n      docElem  = doc.documentElement,\n      refNode  = docElem.firstElementChild || docElem.firstChild,\n      // fakeBody required for <FF4 when executed in <head>\n      fakeBody = doc.createElement('body'),\n      div      = doc.createElement('div');\n  \n  div.id = 'mq-test-1';\n  div.style.cssText = \"position:absolute;top:-100em\";\n  fakeBody.style.background = \"none\";\n  fakeBody.appendChild(div);\n  \n  return function(q){\n    \n    div.innerHTML = '&shy;<style media=\"'+q+'\"> #mq-test-1 { width: 42px; }</style>';\n    \n    docElem.insertBefore(fakeBody, refNode);\n    bool = div.offsetWidth == 42;  \n    docElem.removeChild(fakeBody);\n    \n    return { matches: bool, media: q };\n  };\n  \n})(document);\n\n\n\n\n/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */\n(function( win ){\n\t//exposed namespace\n\twin.respond\t\t= {};\n\t\n\t//define update even in native-mq-supporting browsers, to avoid errors\n\trespond.update\t= function(){};\n\t\n\t//expose media query support flag for external use\n\trespond.mediaQueriesSupported\t= win.matchMedia && win.matchMedia( \"only all\" ).matches;\n\t\n\t//if media queries are supported, exit here\n\tif( respond.mediaQueriesSupported ){ return; }\n\t\n\t//define vars\n\tvar doc \t\t\t= win.document,\n\t\tdocElem \t\t= doc.documentElement,\n\t\tmediastyles\t\t= [],\n\t\trules\t\t\t= [],\n\t\tappendedEls \t= [],\n\t\tparsedSheets \t= {},\n\t\tresizeThrottle\t= 30,\n\t\thead \t\t\t= doc.getElementsByTagName( \"head\" )[0] || docElem,\n\t\tbase\t\t\t= doc.getElementsByTagName( \"base\" )[0],\n\t\tlinks\t\t\t= head.getElementsByTagName( \"link\" ),\n\t\trequestQueue\t= [],\n\t\t\n\t\t//loop stylesheets, send text content to translate\n\t\tripCSS\t\t\t= function(){\n\t\t\tvar sheets \t= links,\n\t\t\t\tsl \t\t= sheets.length,\n\t\t\t\ti\t\t= 0,\n\t\t\t\t//vars for loop:\n\t\t\t\tsheet, href, media, isCSS;\n\n\t\t\tfor( ; i < sl; i++ ){\n\t\t\t\tsheet\t= sheets[ i ],\n\t\t\t\thref\t= sheet.href,\n\t\t\t\tmedia\t= sheet.media,\n\t\t\t\tisCSS\t= sheet.rel && sheet.rel.toLowerCase() === \"stylesheet\";\n\n\t\t\t\t//only links plz and prevent re-parsing\n\t\t\t\tif( !!href && isCSS && !parsedSheets[ href ] ){\n\t\t\t\t\t// selectivizr exposes css through the rawCssText expando\n\t\t\t\t\tif (sheet.styleSheet && sheet.styleSheet.rawCssText) {\n\t\t\t\t\t\ttranslate( sheet.styleSheet.rawCssText, href, media );\n\t\t\t\t\t\tparsedSheets[ href ] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( (!/^([a-zA-Z:]*\\/\\/)/.test( href ) && !base)\n\t\t\t\t\t\t\t|| href.replace( RegExp.$1, \"\" ).split( \"../../../default.htm\" )[0] === win.location.host ){\n\t\t\t\t\t\t\trequestQueue.push( {\n\t\t\t\t\t\t\t\thref: href,\n\t\t\t\t\t\t\t\tmedia: media\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tmakeRequests();\n\t\t},\n\t\t\n\t\t//recurse through request queue, get css text\n\t\tmakeRequests\t= function(){\n\t\t\tif( requestQueue.length ){\n\t\t\t\tvar thisRequest = requestQueue.shift();\n\t\t\t\t\n\t\t\t\tajax( thisRequest.href, function( styles ){\n\t\t\t\t\ttranslate( styles, thisRequest.href, thisRequest.media );\n\t\t\t\t\tparsedSheets[ thisRequest.href ] = true;\n\t\t\t\t\tmakeRequests();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t\n\t\t//find media blocks in css text, convert to style blocks\n\t\ttranslate\t\t\t= function( styles, href, media ){\n\t\t\tvar qs\t\t\t= styles.match(  /@media[^\\{]+\\{([^\\{\\}]*\\{[^\\}\\{]*\\})+/gi ),\n\t\t\t\tql\t\t\t= qs && qs.length || 0,\n\t\t\t\t//try to get CSS path\n\t\t\t\thref\t\t= href.substring( 0, href.lastIndexOf( \"../../../default.htm\" )),\n\t\t\t\trepUrls\t\t= function( css ){\n\t\t\t\t\treturn css.replace( /(url\\()['\"]?([^\\/\\)'\"][^:\\)'\"]+)['\"]?(\\))/g, \"$1\" + href + \"$2$3\" );\n\t\t\t\t},\n\t\t\t\tuseMedia\t= !ql && media,\n\t\t\t\t//vars used in loop\n\t\t\t\ti\t\t\t= 0,\n\t\t\t\tj, fullq, thisq, eachq, eql;\n\n\t\t\t//if path exists, tack on trailing slash\n\t\t\tif( href.length ){ href += \"../../../default.htm\"; }\t\n\t\t\t\t\n\t\t\t//if no internal queries exist, but media attr does, use that\t\n\t\t\t//note: this currently lacks support for situations where a media attr is specified on a link AND\n\t\t\t\t//its associated stylesheet has internal CSS media queries.\n\t\t\t\t//In those cases, the media attribute will currently be ignored.\n\t\t\tif( useMedia ){\n\t\t\t\tql = 1;\n\t\t\t}\n\t\t\t\n\n\t\t\tfor( ; i < ql; i++ ){\n\t\t\t\tj\t= 0;\n\t\t\t\t\n\t\t\t\t//media attr\n\t\t\t\tif( useMedia ){\n\t\t\t\t\tfullq = media;\n\t\t\t\t\trules.push( repUrls( styles ) );\n\t\t\t\t}\n\t\t\t\t//parse for styles\n\t\t\t\telse{\n\t\t\t\t\tfullq\t= qs[ i ].match( /@media *([^\\{]+)\\{([\\S\\s]+?)$/ ) && RegExp.$1;\n\t\t\t\t\trules.push( RegExp.$2 && repUrls( RegExp.$2 ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\teachq\t= fullq.split( \",\" );\n\t\t\t\teql\t\t= eachq.length;\n\t\t\t\t\t\n\t\t\t\tfor( ; j < eql; j++ ){\n\t\t\t\t\tthisq\t= eachq[ j ];\n\t\t\t\t\tmediastyles.push( { \n\t\t\t\t\t\tmedia\t: thisq.split( \"(\" )[ 0 ].match( /(only\\s+)?([a-zA-Z]+)\\s?/ ) && RegExp.$2 || \"all\",\n\t\t\t\t\t\trules\t: rules.length - 1,\n\t\t\t\t\t\thasquery: thisq.indexOf(\"(\") > -1,\n\t\t\t\t\t\tminw\t: thisq.match( /\\(min\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || \"\" ), \n\t\t\t\t\t\tmaxw\t: thisq.match( /\\(max\\-width:[\\s]*([\\s]*[0-9\\.]+)(px|em)[\\s]*\\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || \"\" )\n\t\t\t\t\t} );\n\t\t\t\t}\t\n\t\t\t}\n\n\t\t\tapplyMedia();\n\t\t},\n        \t\n\t\tlastCall,\n\t\t\n\t\tresizeDefer,\n\t\t\n\t\t// returns the value of 1em in pixels\n\t\tgetEmValue\t\t= function() {\n\t\t\tvar ret,\n\t\t\t\tdiv = doc.createElement('div'),\n\t\t\t\tbody = doc.body,\n\t\t\t\tfakeUsed = false;\n\t\t\t\t\t\t\t\t\t\n\t\t\tdiv.style.cssText = \"position:absolute;font-size:1em;width:1em\";\n\t\t\t\t\t\n\t\t\tif( !body ){\n\t\t\t\tbody = fakeUsed = doc.createElement( \"body\" );\n\t\t\t\tbody.style.background = \"none\";\n\t\t\t}\n\t\t\t\t\t\n\t\t\tbody.appendChild( div );\n\t\t\t\t\t\t\t\t\n\t\t\tdocElem.insertBefore( body, docElem.firstChild );\n\t\t\t\t\t\t\t\t\n\t\t\tret = div.offsetWidth;\n\t\t\t\t\t\t\t\t\n\t\t\tif( fakeUsed ){\n\t\t\t\tdocElem.removeChild( body );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbody.removeChild( div );\n\t\t\t}\n\t\t\t\n\t\t\t//also update eminpx before returning\n\t\t\tret = eminpx = parseFloat(ret);\n\t\t\t\t\t\t\t\t\n\t\t\treturn ret;\n\t\t},\n\t\t\n\t\t//cached container for 1em value, populated the first time it's needed \n\t\teminpx,\n\t\t\n\t\t//enable/disable styles\n\t\tapplyMedia\t\t\t= function( fromResize ){\n\t\t\tvar name\t\t= \"clientWidth\",\n\t\t\t\tdocElemProp\t= docElem[ name ],\n\t\t\t\tcurrWidth \t= doc.compatMode === \"CSS1Compat\" && docElemProp || doc.body[ name ] || docElemProp,\n\t\t\t\tstyleBlocks\t= {},\n\t\t\t\tlastLink\t= links[ links.length-1 ],\n\t\t\t\tnow \t\t= (new Date()).getTime();\n\n\t\t\t//throttle resize calls\t\n\t\t\tif( fromResize && lastCall && now - lastCall < resizeThrottle ){\n\t\t\t\tclearTimeout( resizeDefer );\n\t\t\t\tresizeDefer = setTimeout( applyMedia, resizeThrottle );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlastCall\t= now;\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\tfor( var i in mediastyles ){\n\t\t\t\tvar thisstyle = mediastyles[ i ],\n\t\t\t\t\tmin = thisstyle.minw,\n\t\t\t\t\tmax = thisstyle.maxw,\n\t\t\t\t\tminnull = min === null,\n\t\t\t\t\tmaxnull = max === null,\n\t\t\t\t\tem = \"em\";\n\t\t\t\t\n\t\t\t\tif( !!min ){\n\t\t\t\t\tmin = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );\n\t\t\t\t}\n\t\t\t\tif( !!max ){\n\t\t\t\t\tmax = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true\n\t\t\t\tif( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){\n\t\t\t\t\t\tif( !styleBlocks[ thisstyle.media ] ){\n\t\t\t\t\t\t\tstyleBlocks[ thisstyle.media ] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//remove any existing respond style element(s)\n\t\t\tfor( var i in appendedEls ){\n\t\t\t\tif( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){\n\t\t\t\t\thead.removeChild( appendedEls[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//inject active styles, grouped by media type\n\t\t\tfor( var i in styleBlocks ){\n\t\t\t\tvar ss\t\t= doc.createElement( \"style\" ),\n\t\t\t\t\tcss\t\t= styleBlocks[ i ].join( \"\\n\" );\n\t\t\t\t\n\t\t\t\tss.type = \"text/css\";\t\n\t\t\t\tss.media\t= i;\n\t\t\t\t\n\t\t\t\t//originally, ss was appended to a documentFragment and sheets were appended in bulk.\n\t\t\t\t//this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!\n\t\t\t\thead.insertBefore( ss, lastLink.nextSibling );\n\t\t\t\t\n\t\t\t\tif ( ss.styleSheet ){ \n\t\t        \tss.styleSheet.cssText = css;\n\t\t        } \n\t\t        else {\n\t\t\t\t\tss.appendChild( doc.createTextNode( css ) );\n\t\t        }\n\t\t        \n\t\t\t\t//push to appendedEls to track for later removal\n\t\t\t\tappendedEls.push( ss );\n\t\t\t}\n\t\t},\n\t\t//tweaked Ajax functions from Quirksmode\n\t\tajax = function( url, callback ) {\n\t\t\tvar req = xmlHttp();\n\t\t\tif (!req){\n\t\t\t\treturn;\n\t\t\t}\t\n\t\t\treq.open( \"GET\", url, true );\n\t\t\treq.onreadystatechange = function () {\n\t\t\t\tif ( req.readyState != 4 || req.status != 200 && req.status != 304 ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcallback( req.responseText );\n\t\t\t}\n\t\t\tif ( req.readyState == 4 ){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treq.send( null );\n\t\t},\n\t\t//define ajax obj \n\t\txmlHttp = (function() {\n\t\t\tvar xmlhttpmethod = false;\t\n\t\t\ttry {\n\t\t\t\txmlhttpmethod = new XMLHttpRequest();\n\t\t\t}\n\t\t\tcatch( e ){\n\t\t\t\txmlhttpmethod = new ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t\t\t}\n\t\t\treturn function(){\n\t\t\t\treturn xmlhttpmethod;\n\t\t\t};\n\t\t})();\n\t\n\t//translate CSS\n\tripCSS();\n\t\n\t//expose update for re-running respond later on\n\trespond.update = ripCSS;\n\t\n\t//adjust on resize\n\tfunction callMedia(){\n\t\tapplyMedia( true );\n\t}\n\tif( win.addEventListener ){\n\t\twin.addEventListener( \"resize\", callMedia, false );\n\t}\n\telse if( win.attachEvent ){\n\t\twin.attachEvent( \"onresize\", callMedia );\n\t}\n})(this);"
  },
  {
    "path": "target/mongo/jslib/bs_js/sliders.js",
    "content": "var Sliders = function () {\n\n    // default sliders\n    $(\"#default-slider\").slider();\n\n    // snap inc\n    $(\"#snap-inc-slider\").slider({\n        value: 50,\n        min: 0,\n        max: 1000,\n        step: 100,\n        slide: function (event, ui) {\n            $(\"#snap-inc-slider-amount\").text(\"$\" + ui.value);\n        }\n    });\n\n    $(\"#snap-inc-slider-amount\").text(\"$\" + $(\"#snap-inc-slider\").slider(\"value\"));\n\n    // range slider\n    $(\"#slider-range\").slider({\n        range: true,\n        min: 0,\n        max: 500,\n        values: [75, 300],\n        slide: function (event, ui) {\n            $(\"#slider-range-amount\").text(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n        }\n    });\n\n    $(\"#slider-range-amount\").text(\"$\" + $(\"#slider-range\").slider(\"values\", 0) + \" - $\" + $(\"#slider-range\").slider(\"values\", 1));\n\n    //range max\n\n    $(\"#slider-range-max\").slider({\n        range: \"max\",\n        min: 1,\n        max: 10,\n        value: 2,\n        slide: function (event, ui) {\n            $(\"#slider-range-max-amount\").text(ui.value);\n        }\n    });\n\n    $(\"#slider-range-max-amount\").text($(\"#slider-range-max\").slider(\"value\"));\n\n    // range min\n    $(\"#slider-range-min\").slider({\n        range: \"min\",\n        value: 37,\n        min: 1,\n        max: 700,\n        slide: function (event, ui) {\n            $(\"#slider-range-min-amount\").text(\"$\" + ui.value);\n        }\n    });\n\n    $(\"#slider-range-min-amount\").text(\"$\" + $(\"#slider-range-min\").slider(\"value\"));\n\n    //\n    // setup graphic EQ\n    $( \"#eq > span\" ).each(function() {\n    // read initial values from markup and remove that\n        var value = parseInt( $( this ).text(), 10 );\n        $( this ).empty().slider({\n            value: value,\n            range: \"min\",\n            animate: true,\n            orientation: \"vertical\"\n        });\n    });\n\n    // bound to select\n\n    var select = $( \"#minbeds\" );\n    var slider = $( \"<div id='slider'></div>\" ).insertAfter( select ).slider({\n        min: 1,\n        max: 6,\n        range: \"min\",\n        value: select[ 0 ].selectedIndex + 1,\n        slide: function( event, ui ) {\n            select[ 0 ].selectedIndex = ui.value - 1;\n        }\n    });\n    $( \"#minbeds\" ).change(function() {\n        slider.slider( \"value\", this.selectedIndex + 1 );\n    });\n\n    // vertical slider\n    $(\"#slider-vertical\").slider({\n        orientation: \"vertical\",\n        range: \"min\",\n        min: 0,\n        max: 100,\n        value: 60,\n        slide: function (event, ui) {\n            $(\"#slider-vertical-amount\").text(ui.value);\n        }\n    });\n    $(\"#slider-vertical-amount\").text($(\"#slider-vertical\").slider(\"value\"));\n\n    // vertical range sliders\n    $(\"#slider-range-vertical\").slider({\n        orientation: \"vertical\",\n        range: true,\n        values: [17, 67],\n        slide: function (event, ui) {\n            $(\"#slider-range-vertical-amount\").text(\"$\" + ui.values[0] + \" - $\" + ui.values[1]);\n        }\n    });\n\n    $(\"#slider-range-vertical-amount\").text(\"$\" + $(\"#slider-range-vertical\").slider(\"values\", 0) + \" - $\" + $(\"#slider-range-vertical\").slider(\"values\", 1));\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/sparkline-chart.js",
    "content": "var Script = function () {\n\n//sparkline chart\n\n    $(\"table.chart-line\").each(function () {\n        var colors = [];\n        $(\"table.chart-line thead th:not(:first)\").each(function () {\n            colors.push($(this).css(\"color\"));\n        });\n        $(this).graphTable({\n            series:'columns',\n            position:'replace',\n            width:'100%',\n            height:'205px',\n            colors:colors,\n            legend:false,\n            marginLeft:\"40px\"\n        }, {\n            legend:{\n                position:\"ne\"\n            },\n            series:{\n                lines:{ show:true },\n                points:{ show:true }\n            }\n        })\n    });\n\n    $(\"table.chart-bar\").each(function () {\n        var colors = [];\n        $(\"table.chart-line thead th:not(:first)\").each(function () {\n            colors.push($(this).css(\"color\"));\n        });\n        $(this).graphTable(\n            {\n                series:'columns',\n                position:'replace',\n                width:'100%',\n                height:'205px',\n                colors:colors,\n                legend:false,\n                marginLeft:\"40px\"\n            }, {\n                series:{\n                    lines: {\n                        show: false,\n                        lineWidth: 2\n                    },\n                    points: {show: false},\n                    shadowSize: 2,\n                    bars:{\n                        show:true,\n                        lineWidth:1,\n                        barWidth:0.8,\n                        fill:true,\n                        align:\"left\",\n                        multiplebars:false\n                    }\n                },\n                grid: {\n                    hoverable: false,\n                    show: true,\n                    borderWidth: 0,\n                    labelMargin: 12\n                },\n\n                legend: {\n                    show: false,\n                    position:\"ne\"\n                }\n            });\n    });\n\n    /* spark line start */\n    $(\"#metro-sparkline-type1\").sparkline(\n        [5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7],\n        {\n            type:\"line\",\n            height:60,\n            lineColor: '#457bb2',\n            fillColor: '#dff1ff',\n            spotColor: '#de577b',\n            minSpotColor: '#de577b',\n            highlightLineColor: '#de577b'\n        });\n    $(\"#metro-sparkline-type2\").sparkline(\n        [5, 6, 7, 2, 0, -4, -2, 4, 5, 6, 7, 2, 0, -4, -2, 4 ],\n        {\n            type:\"bar\",\n            height:60,\n            barColor: '#4f8ac7',\n            negBarColor: '#da587c'\n        });\n    $(\"#metro-sparkline-type3\").sparkline(\n        [5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 5, 3, 2, 2, 4, 6, 7, 5, 6, 7, 9, 9, 5, 3],\n        {\n            type:\"discrete\",\n            height:60,\n            lineColor: '#7e9d43'\n        });\n    /* spark line end */\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/tree.js",
    "content": "var TreeView = function () {\n\n        // handle collapse/expand for tree_1\n        $('#tree_1_collapse').click(function () {\n            $('.tree-toggle', $('#tree_1 > li > ul')).addClass(\"closed\");\n            $('.branch', $('#tree_1 > li > ul')).removeClass(\"in\");\n        });\n\n        $('#tree_1_expand').click(function () {\n            $('.tree-toggle', $('#tree_1 > li > ul')).removeClass(\"closed\");\n            $('.branch', $('#tree_1 > li > ul')).addClass(\"in\");\n        });\n\n        // handle collapse/expand for tree_2\n        $('#tree_2_collapse').click(function () {\n            $('.tree-toggle', $('#tree_2 > li > ul')).addClass(\"closed\");\n            $('.branch', $('#tree_2 > li > ul')).removeClass(\"in\");\n        });\n\n        $('#tree_2_expand').click(function () {\n            //$('.tree-toggle', $('#tree_2 > li > ul')).removeClass(\"closed\");\n            // iterate tree nodes and exppand all nodes\n            $('.tree-toggle', $('#tree_2 > li > ul')).each(function () {\n                $(this).click(); //trigger tree node click\n            });\n            $('.branch', $('#tree_2 > li > ul')).addClass(\"in\");\n        });\n\n        //This is a quick example of capturing the select event on tree leaves, not branches\n        $(\"#tree_1\").on(\"nodeselect.tree.data-api\", \"[data-role=leaf]\", function (e) {\n            var output = \"\";\n\n            output += \"Node nodeselect event fired:\\n\";\n            output += \"Node Type: leaf\\n\";\n            output += \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\";\n            output += \"Parentage: \" + e.node.parentage.join(\"/\");\n\n            alert(output);\n        });\n\n        //This is a quick example of capturing the select event on tree branches, not leaves\n        $(\"#tree_1\").on(\"nodeselect.tree.data-api\", \"[role=branch]\", function (e) {\n            var output = \"Node nodeselect event fired:\\n\"; + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n        //Listening for the 'openbranch' event. Look for e.node, which is the actual node the user opens\n\n        $(\"#tree_1\").on(\"openbranch.tree\", \"[data-toggle=branch]\", function (e) {\n\n            var output = \"Node openbranch event fired:\\n\" + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n\n        //Listening for the 'closebranch' event. Look for e.node, which is the actual node the user closed\n\n        $(\"#tree_1\").on(\"closebranch.tree\", \"[data-toggle=branch]\", function (e) {\n\n            var output = \"Node closebranch event fired:\\n\" + \"Node Type: branch\\n\" + \"Value: \" + ((e.node.value) ? e.node.value : e.node.el.text()) + \"\\n\" + \"Parentage: \" + e.node.parentage.join(\"/\") + \"\\n\"\n\n            alert(output);\n        });\n\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/bs_js/vmaps-scripts.js",
    "content": "var Script = function () {\n\n    //    world vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_world').vectorMap({\n            map: 'world_en',\n            backgroundColor: '#333333',\n            color: '#ffffff',\n            hoverOpacity: 0.7,\n            selectedColor: '#666666',\n            enableZoom: true,\n            showTooltip: true,\n            values: sample_data,\n            scaleColors: ['#C8EEFF', '#006491'],\n            normalizeFunction: 'polynomial'\n        });\n    });\n\n    //    russia vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_russia').vectorMap({\n            map: 'russia_en',\n            backgroundColor: '#333333',\n            color: '#ffffff',\n            hoverOpacity: 0.7,\n            selectedColor: '#999999',\n            enableZoom: true,\n            showTooltip: true,\n            values: sample_data,\n            scaleColors: ['#C8EEFF', '#006491'],\n            normalizeFunction: 'polynomial'\n        });\n    });\n\n    //    germany vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_germany').vectorMap({\n            map: 'germany_en',\n            onRegionClick: function(element, code, region)\n            {\n                var message = 'You clicked \"'\n                    + region\n                    + '\" which has the code: '\n                    + code.toUpperCase();\n\n                alert(message);\n            }\n        });\n    });\n\n    //    usa vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_usa').vectorMap({\n            map: 'usa_en',\n            enableZoom: true,\n            showTooltip: true,\n            selectedRegion: 'MO'\n        });\n    });\n\n    //    europe vmap\n    jQuery(document).ready(function() {\n        jQuery('#vmap_europe').vectorMap({\n            map: 'europe_en',\n            enableZoom: false,\n            showTooltip: false\n        });\n    });\n\n\n}();"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/WdatePicker.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta1\n * License: http://www.my97.net/dp/license.asp\n */\nvar $dp,WdatePicker;(function(){var $={\n$langList:[{name:\"en\",charset:\"UTF-8\"},{name:\"zh-cn\",charset:\"gb2312\"},{name:\"zh-tw\",charset:\"GBK\"}],\n$skinList:[\n\t{name:\"default\",charset:\"gb2312\"},\n\t{name:\"whyGreen\",charset:\"gb2312\"},\n\t{name:\"blue\",charset:\"gb2312\"},\n\t{name:\"green\",charset:\"gb2312\"},\n\t{name:\"simple\",charset:\"gb2312\"},\n\t{name:\"ext\",charset:\"gb2312\"},\n\t{name:\"blueFresh\",charset:\"gb2312\"},\n\t{name:\"YcloudRed\",charset:\"gb2312\"}\n],\n$wdate:true,\n$crossFrame:true,\n$preLoad:false,\ndoubleCalendar:false,\nenableKeyboard:true,\nenableInputMask:true,\nautoUpdateOnChanged:null,\nwhichDayIsfirstWeek:4,\nposition:{},\nlang:\"auto\",\nskin:\"default\",\ndateFmt:\"yyyy-MM-dd\",\nrealDateFmt:\"yyyy-MM-dd\",\nrealTimeFmt:\"HH:mm:ss\",\nrealFullFmt:\"%Date %Time\",\nminDate:\"1900-01-01 00:00:00\",\nmaxDate:\"2099-12-31 23:59:59\",\nstartDate:\"\",\nalwaysUseStartDate:false,\nyearOffset:1911,\nfirstDayOfWeek:0,\nisShowWeek:false,\nhighLineWeekDay:true,\nisShowClear:true,\nisShowToday:true,\nisShowOK:true,\nisShowOthers:true,\nreadOnly:false,\nerrDealMode:0,\nautoPickDate:null,\nqsEnabled:true,\nautoShowQS:false,\n\nspecialDates:null,specialDays:null,disabledDates:null,disabledDays:null,opposite:false,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<A.length;B++){var _=parseInt(A[B].style.zIndex);if(_>$)$=_}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<D.length;F++){try{if(D[F].contentWindow==$){var E=V(D[F]);A+=E.left;_+=E.top;break}}catch(B){}}$=$.parent}return{\"leftM\":A,\"topM\":_}}function V(F){if(F.getBoundingClientRect)return F.getBoundingClientRect();else{var A={ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i},E=false,H=null,_=F.offsetTop,G=F.offsetLeft,D=F.offsetWidth,B=F.offsetHeight,C=F.offsetParent;if(C!=F)while(C){G+=C.offsetLeft;_+=C.offsetTop;if(Q(C,\"position\").toLowerCase()==\"fixed\")E=true;else if(C.tagName.toLowerCase()==\"body\")H=C.ownerDocument.defaultView;C=C.offsetParent}C=F.parentNode;while(C.tagName&&!A.ROOT_TAG.test(C.tagName)){if(C.scrollTop||C.scrollLeft)if(!A.OP_SCROLL.test(O(C)))if(!a||C.style.overflow!==\"visible\"){G-=C.scrollLeft;_-=C.scrollTop}C=C.parentNode}if(!E){var $=Z(H);G-=$.left;_-=$.top}D+=G;B+=_;return{\"left\":G,\"top\":_,\"right\":D,\"bottom\":B}}}function L($){$=$||U;var B=$[M],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H].clientWidth)?B[H].clientWidth:B.body.offsetWidth,_=($.innerHeight)?$.innerHeight:(B[H]&&B[H].clientHeight)?B[H].clientHeight:B.body.offsetHeight;return{\"width\":A,\"height\":_}}function Z($){$=$||U;var B=$[M],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&&(A.scrollTop>_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{\"top\":B.scrollTop,\"left\":B.scrollLeft}}function D($){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(L,D){$dp.win=X;B();L=L||{};for(var J in $)if(J.substring(0,1)!=\"$\"&&L[J]===undefined)L[J]=$[J];if(D){if(!K()){_=_||setInterval(function(){if(U[M].readyState==\"complete\")clearInterval(_);T(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=S;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=S;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var H=F();if(H){L.srcEl=H.srcElement||H.target;H.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el[\"My97Mark\"]===true||L.el.disabled||($dp.dd&&O($dp.dd)!=\"none\"&&$dp.dd.style.left!=\"-970px\")){L.el[\"My97Mark\"]=false;return}I(L);if(H&&L.el.nodeType==1&&L.el[\"My97Mark\"]===undefined){L.el[\"My97Mark\"]=false;var A,C;if(H.type==\"focus\"){A=\"onclick\";C=\"onfocus\"}else{A=\"onfocus\";C=\"onclick\"}E(L.el,A,L.el[C])}}function K(){if(R&&U!=X&&U[M].readyState!=\"complete\")return false;return true}function F(){if(G){func=F.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=\"<iframe hideFocus=true width=97 height=9 frameborder=0 border=0 scrolling=no></iframe>\";var D=F.lastChild.contentWindow[M],_=$.$langList,C=$.$skinList,H=E.getRealLang();F.lang=H.name;F.skin=E.skin;var G=[\"<head><script>document.oncontextmenu=function(){return false;};\",\"var $d, $dp, $cfg=document.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;\",\"if($cfg.eCont) {$dp = {};for(var p in $pdp) {$dp[p] = $pdp[p];}}else{$dp = $pdp;};for (var p in $cfg) {$dp[p] = $cfg[p];};\",\"</script><script src=\",A,\"lang/\",H.name,\".js charset=\",H.charset,\"></script>\"];for(var I=0;I<C.length;I++)if(C[I].name==E.skin)G.push(\"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\"+A+\"skin/\"+C[I].name+\"/datepicker.css\\\" charset=\\\"\"+C[I].charset+\"\\\"/>\");G.push(\"<script type=\\\"text/javascript\\\" src=\\\"\"+A+\"calendar.js?\\\"+Math.random()+\\\" charset=\\\"gb2312\\\"></script>\");G.push(\"</head><body leftmargin=\\\"0\\\" topmargin=\\\"0\\\" tabindex=0></body></html>\");G.push(\"<script>var t;t=t||setInterval(function(){if(document.ready){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);if($FF||$OPERA)document.close();</script>\");E.setPos=B;E.onload=Y;D.write(\"<html>\");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(B!=\"under\"&&(($.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\"}}})()"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/calendar.js",
    "content": "/*\n * My97 DatePicker 4.8 Beta1\n * License: http://www.my97.net/dp/license.asp\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('o $c;k($5E){6E.3c.84(\"6a\",l($){k(!$)h.2c();t $});6E.3c.6Z(\"6n\",l(){o $=h.6k;3m($.56!=1)$=$.7b;t $});79.3c.3k=l($,b){o A=$.1l(/67/,\"\");b.6O=l($){5G.1X=$;t b()};h.76(A,b.6O,1n)}}l 6c(){$c=h;h.3l=[];$d=1O.78(\"x\");$d.1d=\"4b\";$d.1P=\"<x 1D=6T><x Y=\\\\\"3S 6R\\\\\"><a></a></x><x Y=\\\\\"3S 6U\\\\\"><a></a></x><x 1c=\\\\\"2J:2z\\\\\"><x Y=\\\\\"2Y 6Y\\\\\"></x><1u Y=42></x><x 1c=\\\\\"2J:2z\\\\\"><x Y=\\\\\"2Y 6S\\\\\"></x><1u Y=42></x><x Y=\\\\\"3S 71\\\\\"><a></a></x><x Y=\\\\\"3S 7e\\\\\"><a></a></x><x 1c=\\\\\"2J:5R\\\\\"></x></x><x 1c=\\\\\"72:77;75:6I\\\\\"></x><x></x><x 1D=73><x Y=\\\\\"2Y 74\\\\\"></x><x Y=\\\\\"2Y 7f\\\\\"></x><x Y=\\\\\"2Y 7g\\\\\"></x><1x 2x=0 2q=0 2s=0><1j><18 7d=2><4n 1D=7a></4n>&4c;<1u Y=7c 4d=2><1u 1g=\\\\\":\\\\\" Y=6p 6j><1u Y=6d 4d=2><1u 1g=\\\\\":\\\\\" Y=6p 6j><1u Y=6d 4d=2></18><18><1K 1D=6W></1K></18></1j><1j><18><1K 1D=6X></1K></18></1j></1x></x><x 1D=70></x><x 1D=7h><1u Y=4l 1D=7G 3h=1K><1u Y=4l 1D=7F 3h=1K><1u Y=4l 1D=7I 3h=1K></x>\";6J($d,l(){3w()});A();h.6e();$f.20=[1O,$d.1J,$d.1w,$d.3e,$d.3G,$d.43,$d.2H,$d.2f,$d.1R];1b(o B=0;B<$f.20.u;B++){o b=$f.20[B];b.34=B==$f.20.u-1?$f.20[1]:$f.20[B+1];$f.3k(b,\"53\",4K)}$();4k(\"y,M,H,m,s\");$d.6f.1s=l(){58(1)};$d.6i.1s=l(){58(-1)};$d.54.1s=l(){k($d.1G.1c.2e!=\"6P\"){$c.4D();3J($d.1G)}q 1m($d.1G)};1O.5J.4j($d);l A(){o b=$(\"a\");1p=$(\"x\"),1N=$(\"1u\"),4i=$(\"1K\"),6h=$(\"4n\");$d.3Z=b[0];$d.3X=b[1];$d.3M=b[3];$d.3W=b[2];$d.3F=1p[9];$d.1J=1N[0];$d.1w=1N[1];$d.4h=1p[0];$d.3x=1p[4];$d.35=1p[6];$d.1G=1p[10];$d.3i=1p[11];$d.2V=1p[12];$d.64=1p[13];$d.65=1p[14];$d.62=1p[15];$d.54=1p[16];$d.3r=1p[17];$d.3e=1N[2];$d.3G=1N[4];$d.43=1N[6];$d.2H=1N[7];$d.2f=1N[8];$d.1R=1N[9];$d.6f=4i[0];$d.6i=4i[1];$d.6l=6h[0];l $($){t $d.5L($)}}l $(){$d.3Z.1s=l(){$1L=$1L<=0?$1L-1:-1;k($1L%5==0){$d.1w.24();t}$d.1w.1g=$n.y-1;$d.1w.2u()};$d.3X.1s=l(){$n.2n(\"M\",-1);$d.1J.2u()};$d.3M.1s=l(){$n.2n(\"M\",1);$d.1J.2u()};$d.3W.1s=l(){$1L=$1L>=0?$1L+1:1;k($1L%5==0){$d.1w.24();t}$d.1w.1g=$n.y+1;$d.1w.2u()}}}6c.3c={6e:l(){$1L=0;$f.5X=h;k($f.3K&&$f.z.3K!=1i){$f.z.3K=1a;$f.z.4y()}h.5w();$n=h.6H=19 1C();$1z=19 1C();$1v=h.2w=19 1C();h.1B=h.2P($f.1B);h.3o=$f.3o==1i?($f.Z.28&&$f.Z.28?1n:1a):$f.3o;$f.2m=$f.2m==1i?($f.4L&&$f.Z.d?1n:1a):$f.2m;h.4S=h.3j(\"7H\");h.5D=h.3j(\"7E\");h.5O=h.3j(\"7B\");h.5Q=h.3j(\"7A\");h.22=h.3t($f.22,$f.22!=$f.6r?$f.1Q:$f.2N,$f.6r);h.1U=h.3t($f.1U,$f.1U!=$f.6q?$f.1Q:$f.2N,$f.6q);k(h.22.2t(h.1U)>0)$f.44=$1k.7D;k(h.1T()){h.5U();h.3P=$f.z[$f.1y]}q h.3p(1n,2);4f($n);$d.6l.1P=$1k.7C;$d.2H.1g=$1k.7P;$d.2f.1g=$1k.7O;$d.1R.1g=$1k.7R;$d.1R.25=!$c.1t($1v);h.5x();h.5g();k($f.44)7N($f.44);h.47();k($f.z.56==1&&$f.z[\"3H\"]===6K){$f.3k($f.z,\"53\",4K);$f.3k($f.z,\"2u\",l(){k($f&&$f.1M.1c.2e==\"2r\"){$c.3L();k($f.5X.3P!=$f.z[$f.1y]&&$f.z.7J)55($f.z,\"7M\")}});$f.z[\"3H\"]=1n}$c.1f=$f.z;3w()},5U:l(){o b=h.2I();k(b!=0){o $;k(b>0)$=h.1U;q $=h.22;k($f.Z.3T){$n.y=$.y;$n.M=$.M;$n.d=$.d}k($f.Z.28){$n.H=$.H;$n.m=$.m;$n.s=$.s}}},2O:l(J,C,Q,E,B,G,F,K,L){o $;k(J&&J.1T)$=J;q{$=19 1C();k(J!=\"\"){C=C||$f.1B;o H,P=0,O,A=/3g|2l|3b|y|2v|2W|3N|M|1M|d|%2h|51|H|52|m|4Z|s|2X|D|4g|W|w/g,b=C.3a(A);A.2E=0;k(L)O=J.49(/\\\\W+/);q{o D=0,M=\"^\";3m((O=A.33(C))!==1i){k(D>=0)M+=C.1E(D,O.3Y);D=A.2E;3f(O[0]){1e\"3g\":M+=\"(\\\\\\\\d{4})\";1h;1e\"2l\":M+=\"(\\\\\\\\d{3})\";1h;1e\"2v\":1e\"2W\":1e\"2X\":1e\"D\":M+=\"(\\\\\\\\D+)\";1h;61:M+=\"(\\\\\\\\d\\\\\\\\d?)\";1h}}M+=\".*$\";O=19 4e(M).33(J);P=1}k(O){1b(H=0;H<b.u;H++){o I=O[H+P];k(I)3f(b[H]){1e\"2v\":1e\"2W\":$.M=N(b[H],I);1h;1e\"y\":1e\"3b\":I=3B(I,0);k(I<50)I+=5j;q I+=7L;$.y=I;1h;1e\"2l\":$.y=3B(I,0)+$f.5f;1h;61:$[b[H].4X(-1)]=I;1h}}}q $.d=32}}$.68(Q,E,B,G,F,K);t $;l N(A,$){o b=A==\"2v\"?$1k.5z:$1k.2g;1b(o B=0;B<12;B++)k(b[B].3I()==$.7n(0,b[B].u).3I())t B+1;t-1}},3j:l(b){o B,$=$f[b],A=\"(?:\";k($){1b(B=0;B<$.u;B++){A+=h.2P($[B]);k(B!=$.u-1)A+=\"|\"}A=19 4e(A+\")\")}q A=1i;t A},2p:l(){o $=h.4N();k($f.z[$f.1y]!=$)$f.z[$f.1y]=$;h.3E()},3E:l($){o b=$f.$($f.7q),$=2M($,h.4N($f.1Q));k(b)b.1g=$;$f.z[\"3A\"]=$},2P:l(s){o 3C=\"2K\",1r,2D,6L=/#?\\\\{(.*?)\\\\}/;s=s+\"\";1b(o i=0;i<3C.u;i++)s=s.1l(\"%\"+3C.1I(i),h.1V(3C.1I(i),1i,$1z));k(s.1E(0,3)==\"#F{\"){s=s.1E(3,s.u-1);k(s.1q(\"t \")<0)s=\"t \"+s;s=$f.4A.2T(\"19 7p(\\\\\"\"+s+\"\\\\\");\");s=s()}q 3m((1r=6L.33(s))!=1i){1r.2E=1r.3Y+1r[1].u+1r[0].u-1r[1].u-1;2D=2i(2T(1r[1]));k(2D<0)2D=\"2j\"+(-2D);s=s.1E(0,1r.3Y)+2D+s.1E(1r.2E+1)}t s},3t:l(A,B,b){o $;A=h.2P(A);k(!A||A==\"\")A=b;k(7m A==\"7j\")$=A;q{$=h.2O(A,B,1i,1i,1,0,0,0,1a);$.y=(\"\"+$.y).1l(/^2j/,\"-\");$.M=(\"\"+$.M).1l(/^2j/,\"-\");$.d=(\"\"+$.d).1l(/^2j/,\"-\");$.H=(\"\"+$.H).1l(/^2j/,\"-\");$.m=(\"\"+$.m).1l(/^2j/,\"-\");$.s=(\"\"+$.s).1l(/^2j/,\"-\");k(A.1q(\"%2h\")>=0){A=A.1l(/%2h/g,\"0\");$.d=0;$.M=2i($.M)+1}$.1S()}t $},1T:l(){o b,$;k($f.7k||($f.6z!=\"\"&&$f.z[$f.1y]==\"\")){b=h.2P($f.6z);$=$f.1Q}q{b=$f.z[$f.1y];$=h.1B}$n.2a(h.2O(b,$));k(b!=\"\"){o A=1;k($f.Z.3T&&!h.4s($n)){$n.y=$1z.y;$n.M=$1z.M;$n.d=$1z.d;A=0}k($f.Z.28&&!h.4q($n)){$n.H=$1z.H;$n.m=$1z.m;$n.s=$1z.s;A=0}t A&&h.1t($n)}t 1},4s:l($){k($.y!=1i)$=3d($.y,4)+\"-\"+$.M+\"-\"+$.d;t $.3a(/^((\\\\d{2}(([6t][7z])|([6s][26]))[\\\\-\\\\/\\\\s]?((((0?[6v])|(1[6u]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[6A])))|(((0?[6G])|(11))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])))))|(\\\\d{2}(([6t][7y])|([6s][7v]))[\\\\-\\\\/\\\\s]?((((0?[6v])|(1[6u]))[\\\\-\\\\/\\\\s]?((0?[1-9])|([1-2][0-9])|(3[6A])))|(((0?[6G])|(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])))))?$/)},4q:l($){k($.H!=1i)$=$.H+\":\"+$.m+\":\"+$.s;t $.3a(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},2I:l($,A){$=$||$n;o b=$.2t(h.22,A);k(b>0){b=$.2t(h.1U,A);k(b<0)b=0}t b},1t:l($,A,B){A=A||$f.Z.3O;o b=h.2I($,A);k(b==0){b=1;k(A==\"d\"&&B==1i)B=2B.5A((19 1F($.y,$.M-1,$.d).1W()-$f.41+7)%7);b=!h.5I(B)&&!h.5q($,A)}q b=0;t b},6B:l(){o b=$f.z,A=h,$=$f.z[$f.1y];k($f.4U>=0&&$f.4U<=2&&$!=1i){k($!=\"\")A.2w.2a(A.2O($,A.1B));k($==\"\"||(A.4s(A.2w)&&A.4q(A.2w)&&A.1t(A.2w))){k($!=\"\"){A.6H.2a(A.2w);A.2p()}q A.3E(\"\")}q t 1n}t 1a},3L:l($){3w();k(h.6B()){h.3p(1a);$f.1m()}q{k($){2R($);h.3p(1n,2)}q h.3p(1n);$f.1Y()}},3s:l(){o E,C,D,K,A,H=19 2C(),F=$1k.5l,G=$f.41,I=\"\",$=\"\",b=19 1C($n.y,$n.M,$n.d,0,0,0),J=b.y,B=b.M;A=1-19 1F(J,B-1,1).1W()+G;k(A>1)A-=7;H.a(\"<1x Y=5F 2L=2F% 2s=0 2x=0 2q=0>\");H.a(\"<1j Y=5H 4p=5p>\");k($f.5b)H.a(\"<18>\"+F[0]+\"</18>\");1b(E=0;E<7;E++)H.a(\"<18>\"+F[(G+E)%7+1]+\"</18>\");H.a(\"</1j>\");1b(E=1,C=A;E<7;E++){H.a(\"<1j>\");1b(D=0;D<7;D++){b.1T(J,B,C++);b.1S();k(b.M==B){K=1a;k(b.2t($1v,\"d\")==0)I=\"7u\";q k(b.2t($1z,\"d\")==0)I=\"7t\";q I=($f.5a&&(0==(G+D)%7||6==(G+D)%7)?\"7r\":\"7s\");$=($f.5a&&(0==(G+D)%7||6==(G+D)%7)?\"7w\":\"7x\")}q k($f.5K){K=1a;I=\"7l\";$=\"7i\"}q K=1n;k($f.5b&&D==0&&(E<4||K))H.a(\"<18 Y=7o>\"+4B(b,$f.41==0?1:0)+\"</18>\");H.a(\"<18 \");k(K){k(h.1t(b,\"d\",D)){k(h.5N(2B.5A((19 1F(b.y,b.M-1,b.d).1W()-$f.41+7)%7))||h.5r(b))I=\"7K\";H.a(\"1s=\\\\\"3q(\"+b.y+\",\"+b.M+\",\"+b.d+\");\\\\\" \");H.a(\"2A=\\\\\"h.1d=\\'\"+$+\"\\'\\\\\" \");H.a(\"2y=\\\\\"h.1d=\\'\"+I+\"\\'\\\\\" \")}q I=\"7Q\";H.a(\"Y=\"+I);H.a(\">\"+b.d+\"</18>\")}q H.a(\"></18>\")}H.a(\"</1j>\")}H.a(\"</1x>\");t H.j()},5q:l(b,A){o $=h.4H(b,h.4S,A);t(h.4S&&$f.5e)?!$:$},5I:l($){t h.4I($,h.5D)},5r:l($){t h.4H($,h.5O)},5N:l($){t h.4I($,h.5Q)},4H:l($,B,A){o b=A==\"d\"?$f.4a:$f.1Q;t B?B.4o(h.3y(b,$)):0},4I:l(b,$){t $?$.4o(b):0},2U:l(p,c,r,e,2d){o s=19 2C(),4t=2d?\"r\"+p:p;5k=$n[p];s.a(\"<1x 2x=0 2q=3 2s=0\");1b(o i=0;i<r;i++){s.a(\"<1j 2Q=\\\\\"2Q\\\\\">\");1b(o j=0;j<c;j++){s.a(\"<18 2Q \");$n[p]=2T(e);k(($f.5e&&h.2I($n,p)==0)||h.1t($n,p)){s.a(\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\\\\"\");s.a(\"1m($d.\"+p+\"D);$d.\"+4t+\"I.1g=\"+$n[p]+\";$d.\"+4t+\"I.4y();\\\\\"\")}q s.a(\"Y=\\'4u\\'\");s.a(\">\"+(p==\"M\"?$1k.2g[$n[p]-1]:$n[p])+\"</18>\")}s.a(\"</1j>\")}s.a(\"</1x>\");$n[p]=5k;t s.j()},4z:l($,b){k($){o A=$.6V;k($66)A=$.7S().2z;b.1c.2z=A}},8L:l($){h.4z($,$d.3x);$d.3x.1P=h.2U(\"M\",2,6,\"i+j*6+1\",$==$d.2k)},4x:l(b,A){o $=19 2C();A=2M(A,$n.y-5);$.a(h.2U(\"y\",2,5,A+\"+i+j*5\",b==$d.2o));$.a(\"<1x 2x=0 2q=3 2s=0 4p=5p><1j><18 \");$.a(h.22.y<A?\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\'k(1X.2c)1X.2c();1X.4m=1a;$c.4x(0,\"+(A-10)+\")\\'\":\"Y=\\'4u\\'\");$.a(\">\\\\8R</18><18 Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\\\\"1m($d.35);$d.1w.4y();\\\\\">\\\\5u</18><18 \");$.a(h.1U.y>A+10?\"Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 3U=\\'k(1X.2c)1X.2c();1X.4m=1a;$c.4x(0,\"+(A+10)+\")\\'\":\"Y=\\'4u\\'\");$.a(\">\\\\8A</18></1j></1x>\");h.4z(b,$d.35);$d.35.1P=$.j()},3V:l(A,b,$){$d[A+\"D\"].1P=h.2U(A,6,b,$)},8z:l(){h.3V(\"H\",4,\"i * 6 + j\")},8q:l(){h.3V(\"m\",2,\"i * 30 + j * 5\")},8x:l(){h.3V(\"s\",1,\"j * 10\")},4D:l(A){h.6D();o b=h.3l,C=b.1c,$=19 2C();$.a(\"<1x Y=5F 2L=2F% 2b=2F% 2s=0 2x=0 2q=0>\");$.a(\"<1j Y=5H><18><x 1c=\\\\\"2J:2z\\\\\">\"+$1k.8C+\"</x>\");k(!A)$.a(\"<x 1c=\\\\\"2J:5R;8B:8y\\\\\" 1s=\\\\\"1m($d.1G);\\\\\">\\\\5u</x>\");$.a(\"</18></1j>\");1b(o B=0;B<b.u;B++)k(b[B]){$.a(\"<1j><18 1c=\\'4F-4p:2z\\' 2Q=\\'2Q\\' Y=\\'1A\\' 2A=\\\\\"h.1d=\\'2Z\\'\\\\\" 2y=\\\\\"h.1d=\\'1A\\'\\\\\" 1s=\\\\\"\");$.a(\"3q(\"+b[B].y+\", \"+b[B].M+\", \"+b[B].d+\",\"+b[B].H+\",\"+b[B].m+\",\"+b[B].s+\");\\\\\">\");$.a(\"&4c;\"+h.3y(1i,b[B]));$.a(\"</18></1j>\")}q $.a(\"<1j><18 Y=\\'1A\\'>&4c;</18></1j>\");$.a(\"</1x>\");$d.1G.1P=$.j()},5w:l(){$(/w/);$(/4g|W/);$(/2X|D/);$(/3g|2l|3b|y/);$(/2v|2W|3N|M/);$(/1M|d/);$(/51|H/);$(/52|m/);$(/4Z|s/);$f.Z.3T=($f.Z.y||$f.Z.M||$f.Z.d)?1a:1n;$f.Z.28=($f.Z.H||$f.Z.m||$f.Z.s)?1a:1n;$f.2N=$f.2N.1l(/%1F/,$f.4a).1l(/%8E/,$f.5t);k($f.Z.3T){k($f.Z.28)$f.1Q=$f.2N;q $f.1Q=$f.4a}q $f.1Q=$f.5t;l $(b){o $=(b+\"\").4X(1,2);$f.Z[$]=b.33($f.1B)?($f.Z.3O=$,1a):1n}},5x:l(){o $=0;$f.Z.y?($=1,1Y($d.1w,$d.3Z,$d.3W)):1m($d.1w,$d.3Z,$d.3W);$f.Z.M?($=1,1Y($d.1J,$d.3X,$d.3M)):1m($d.1J,$d.3X,$d.3M);$?1Y($d.4h):1m($d.4h);k($f.Z.28){1Y($d.2V);3v($d.3e,$f.Z.H);3v($d.3G,$f.Z.m);3v($d.43,$f.Z.s)}q 1m($d.2V);2S($d.2H,$f.5B);2S($d.2f,$f.5v);2S($d.1R,$f.4L);2S($d.54,!$f.5M&&$f.Z.d&&$f.8F);k($f.5m||!($f.5B||$f.5v||$f.4L))1m($d.3r);q 1Y($d.3r)},3p:l(B,D){o A=$f.z,b=$5E?\"Y\":\"1d\";k(B)C(A);q{k(D==1i)D=$f.4U;3f(D){1e 0:k(8D($1k.8r)){A[$f.1y]=h.3P;C(A)}q $(A);1h;1e 1:A[$f.1y]=h.3P;C(A);1h;1e 2:$(A);1h}}l C(A){o B=A.1d;k(B){o $=B.1l(/5o/g,\"\");k(B!=$)A.5n(b,$)}}l $($){$.5n(b,$.1d+\" 5o\")}},1V:l(D,b,$){$=$||$1v;o H,C=[D+D,D],E,A=$[D],F=l($){t 3d(A,$.u)};3f(D){1e\"w\":A=1W($);1h;1e\"D\":o G=1W($)+1;F=l($){t $.u==2?$1k.8s[G]:$1k.5l[G]};1h;1e\"W\":A=4B($);1h;1e\"y\":C=[\"3g\",\"2l\",\"3b\",\"y\"];b=b||C[0];F=l(b){t 3d((b.u<4)?(b.u<3?$.y%2F:($.y+5j-$f.5f)%8p):A,b.u)};1h;1e\"M\":C=[\"2v\",\"2W\",\"3N\",\"M\"];F=l($){t($.u==4)?$1k.5z[A-1]:($.u==3)?$1k.2g[A-1]:3d(A,$.u)};1h}b=b||D+D;k(\"2K\".1q(D)>-1&&D!=\"y\"&&!$f.Z[D])k(\"8I\".1q(D)>-1)A=0;q A=1;o B=[];1b(H=0;H<C.u;H++){E=C[H];k(b.1q(E)>=0){B[H]=F(E);b=b.1l(E,\"{\"+H+\"}\")}}1b(H=0;H<B.u;H++)b=b.1l(19 4e(\"\\\\\\\\{\"+H+\"\\\\\\\\}\",\"g\"),B[H]);t b},3y:l(b,$){$=$||h.2O($f.z[$f.1y],h.1B)||$1v;b=b||h.1B;k(b.1q(\"%2h\")>=0){o A=19 1C();A.2a($);A.d=0;A.M=2i(A.M)+1;A.1S();b=b.1l(/%2h/g,A.d)}o B=\"8v\";1b(o D=0;D<B.u;D++){o C=B.1I(D);b=h.1V(C,b,$)}k($f.Z[\"D\"]){b=b.1l(/2X/g,\"%1M\").1l(/D/g,\"%d\");b=h.1V(\"M\",b,$);b=b.1l(/\\\\%1M/g,h.1V(\"D\",\"2X\")).1l(/\\\\%d/g,h.1V(\"D\",\"D\"))}q b=h.1V(\"M\",b,$);t b},8w:l(b,$){t h.1V(b,$,$n)},4N:l($){t h.3y($,$n)},47:l(){$d.3F.1P=\"\";k($f.5M){$c.3o=1a;$f.5K=1n;$d.1d=\"4b 8u\";o $=19 2C();$.a(\"<1x Y=8G 2L=2F% 2x=0 2q=0 2s=1><1j><18 5s=5C>\");$.a(h.3s());$.a(\"</18><18 5s=5C>\");$n.2n(\"M\",1);$.a(h.3s());$d.2k=$d.1J.5y(1a);$d.2o=$d.1w.5y(1a);$d.3F.4j($d.2k);$d.3F.4j($d.2o);$d.2k.1g=$1k.2g[$n.M-1];$d.2k[\"3A\"]=$n.M;$d.2o.1g=$n.y;4k(\"5S,5V\");$d.2k.1d=$d.2o.1d=\"42\";$n.2n(\"M\",-1);$.a(\"</18></1j></1x>\");$d.3i.1P=$.j()}q{$d.1d=\"4b\";$d.3i.1P=h.3s()}k(!$f.Z.d||$f.8P){h.4D(1a);3J($d.1G)}q 1m($d.1G);h.5P()},5P:l(){o b=8Q.1O.5L(\"8S\");1b(o C=0;C<b.u;C++){o $=$d.1c.2b;$d.1c.2b=\"\";o A=$d.36;k(b[C].8J==5G&&A){b[C].1c.2L=$d.5c+\"5d\";o B=$d.2V.36;k(B&&$d.3r.1c.2e==\"2r\"&&$d.2V.1c.2e!=\"2r\"&&1O.5J.8O-A>=B){A+=B;$d.1c.2b=A}q $d.1c.2b=$;b[C].1c.2b=2B.6g(A,$d.36)+\"5d\"}}$d.1G.1c.2L=$d.3i.5c;$d.1G.1c.2b=$d.3i.36},4P:l(){$n.d=2B.8H(19 1F($n.y,$n.M,0).2G(),$n.d);$1v.2a($n);h.2p();k(!$f.5m)k(h.1t($n)){4r();1m($f.1M)}k($f.5h)29(\"5h\")},5g:l(){$d.2H.1s=l(){k(!29(\"8K\")){$f.z[$f.1y]=\"\";$c.3E(\"\");4r();1m($f.1M);k($f.5i)29(\"5i\")}};$d.1R.1s=l(){3q()};k(h.1t($1z)){$d.2f.25=1n;$d.2f.1s=l(){$n.2a($1z);3q()}}q $d.2f.25=1a},6D:l(){o H,G,A,F,C=[],$=5,E=$f.6C.u,b=$f.Z.3O;k(E>$)E=$;q k(b==\"m\"||b==\"s\")C=[-60,-30,0,30,60,-15,15,-45,45];q 1b(H=0;H<$;H++)C[H]=$n[b]-2+H;1b(H=G=0;H<E;H++){A=h.3t($f.6C[H]);k(h.1t(A))h.3l[G++]=A}o B=\"2K\",D=[1,1,1,0,0,0];1b(H=0;H<=B.1q(b);H++)D[H]=$n[B.1I(H)];1b(H=0;G<$;H++)k(H<C.u){A=19 1C(D[0],D[1],D[2],D[3],D[4],D[5]);A[b]=C[H];A.1S();k(h.1t(A))h.3l[G++]=A}q h.3l[G++]=1i}};l 4r(){o b=$f.z;83{k(b.1c.2e!=\"2r\"&&b.3h!=\"6I\"&&(b.63.3I()==\"1u\"||b.63.3I()==\"81\")){k($f.82==b)$f.z[\"3H\"]=1a;$f.z.24();t}}87($){}b[\"3H\"]=1n}l 2C(){h.s=19 88();h.i=0;h.a=l($){h.s[h.i++]=$};h.j=l(){t h.s.86(\"\")}}l 4B($,B){B=B||0;o b=19 1F($.y,$.M-1,$.d+B);b.6w(b.2G()-(b.1W()+6)%7+$f.7V-1);o A=b.6N();b.7W(0);b.6w(4);t 2B.7T((A-b.6N())/(7*7U))+1}l 1W($){o b=19 1F($.y,$.M-1,$.d);t b.1W()}l 1Y(){3u(3n,\"\")}l 3J(){3u(3n,\"6P\")}l 1m(){3u(3n,\"2r\")}l 3u(b,$){1b(i=0;i<b.u;i++)b[i].1c.2e=$}l 2S(b,$){$?1Y(b):1m(b)}l 3v(b,$){k($)b.25=1n;q{b.25=1a;b.1g=\"7Z\"}}l c(p,1H){k(p==\"M\")1H=3z(1H,1,12);q k(p==\"H\")1H=3z(1H,0,23);q k(\"6o\".1q(p)>=0)1H=3z(1H,0,59);k($1v[p]!=1H&&!29(p+\"80\")){o 6M=\"21(\\\\\"\"+p+\"\\\\\",\"+1H+\")\",3D=$c.2I();k(3D==0)2T(6M);q k(3D<0)4Y($c.22);q k(3D>0)4Y($c.1U);$d.1R.25=!$c.1t($1v);k(\"7X\".1q(p)>=0)$c.47();29(p+\"7Y\")}l 4Y($){4f($c.1t($)?$:$1v)}}l 4f($){21(\"y\",$.y);21(\"M\",$.M);21(\"d\",$.d);21(\"H\",$.H);21(\"m\",$.m);21(\"s\",$.s)}l 3q(F,B,b,D,C,A){o $=19 1C($n.y,$n.M,$n.d,$n.H,$n.m,$n.s);$n.1T(F,B,b,D,C,A);k(!29(\"8j\")){o E=$.y==F&&$.M==B&&$.d==b;k(!E&&3n.u!=0){c(\"y\",F);c(\"M\",B);c(\"d\",b);$c.1f=$f.z;k($f.2m)$c.2p()}k($c.3o||E||3n.u==0)$c.4P()}q $n=$}l 29($){o b;k($f[$])b=$f[$].4M($f.z,$f);t b}l 21(b,$){k($==1i)$=$n[b];$1v[b]=$n[b]=$;k(\"8k\".1q(b)>=0)$d[b+\"I\"].1g=$;k(b==\"M\"){$d.1J[\"3A\"]=$;$d.1J.1g=$1k.2g[$-1]}}l 3z(b,$,A){k(b<$)b=$;q k(b>A)b=A;t b}l 6J($,b){$f.3k($,\"53\",l(){o $=1X,A=($.4O==6K)?$.4J:$.4O;k(A==9)b()})}l 3d($,b){$=$+\"\";3m($.u<b)$=\"0\"+$;t $}l 3w(){1m($d.35,$d.3x,$d.64,$d.65,$d.62)}l 58($){k($c.1f.56!=1)$c.1f=$d.3e;3f($c.1f){1e $d.3e:c(\"H\",$n.H+$);1h;1e $d.3G:c(\"m\",$n.m+$);1h;1e $d.43:c(\"s\",$n.s+$);1h}k($f.2m)$c.2p()}l 1C(D,A,$,C,B,b){h.1T(D,A,$,C,B,b)}1C.3c={1T:l(E,B,b,D,C,A){o $=19 1F();h.y=1o(E,h.y,$.4R());h.M=1o(B,h.M,$.4Q()+1);h.d=$f.Z.d?1o(b,h.d,$.2G()):1;h.H=1o(D,h.H,$.4T());h.m=1o(C,h.m,$.4W());h.s=1o(A,h.s,$.4V())},2a:l($){k($)h.1T($.y,$.M,$.d,$.H,$.m,$.s)},68:l(E,B,b,D,C,A){o $=19 1F();h.y=1o(h.y,E,$.4R());h.M=1o(h.M,B,$.4Q()+1);h.d=$f.Z.d?1o(h.d,b,$.2G()):1;h.H=1o(h.H,D,$.4T());h.m=1o(h.m,C,$.4W());h.s=1o(h.s,A,$.4V())},2t:l($,C){o A=\"2K\",b,B;C=A.1q(C);C=C>=0?C:5;1b(o D=0;D<=C;D++){B=A.1I(D);b=h[B]-$[B];k(b>0)t 1;q k(b<0)t-1}t 0},1S:l(){o $=19 1F(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.4R();h.M=$.4Q()+1;h.d=$.2G();h.H=$.4T();h.m=$.4W();h.s=$.4V();t!69(h.y)},2n:l(b,$){k(\"2K\".1q(b)>=0){o A=h.d;k(b==\"M\")h.d=1;h[b]+=$;h.1S();h.d=A}}};l 2i($){t 8h($,10)}l 3B($,b){t 2M(2i($),b)}l 1o($,A,b){t 3B($,2M(A,b))}l 2M($,b){t $==1i||69($)?b:$}l 55(A,$){k($66)A.55(\"67\"+$);q{o b=1O.8i(\"8n\");b.8o($,1a,1a);A.8l(b)}}l 3R($){o A,B,b=\"y,M,H,m,s,5V,5S\".49(\",\");1b(B=0;B<b.u;B++){A=b[B];k($d[A+\"I\"]==$)t A.4X(A.u-1,A.u)}t 0}l 6m($){o b=3R(h);k(!b)t;$c.1f=h;k(b==\"y\")h.1d=\"5T\";q k(b==\"M\"){h.1d=\"5T\";h.1g=h[\"3A\"]}h.4w();$c[\"2U\"+b](h);3J($d[b+\"D\"])}l 3Q(5W){o p=3R(h),2d,4E,v=h.1g,5Z=$n[p];k(p==0)t;$n[p]=5Y(v)>=0?5Y(v):$n[p];k(p==\"y\"){2d=h==$d.2o;k(2d&&$n.M==12)$n.y-=1}q k(p==\"M\"){2d=h==$d.2k;k(2d){4E=$1k.2g[$n[p]-1];k(5Z==12)$n.y+=1;$n.2n(\"M\",-1)}k($1v.M==$n.M)h.1g=4E||$1k.2g[$n[p]-1];k(($1v.y!=$n.y))c(\"y\",$n.y)}2T(\"c(\\\\\"\"+p+\"\\\\\",\"+$n[p]+\")\");k(5W!==1a){k(p==\"y\"||p==\"M\")h.1d=\"42\";1m($d[p+\"D\"])}k($f.2m)$c.2p()}l 2R($){k($.2c){$.2c();$.8m()}q{$.4m=1a;$.6a=1n}k($6b)$.4J=0}l 4k($){o A=$.49(\",\");1b(o B=0;B<A.u;B++){o b=A[B]+\"I\";$d[b].8b=6m;$d[b].2u=3Q}}l 4K(M){o H=M.6n||M.6k,Q=M.4O||M.4J;4C=$f.1M.1c.2e!=\"2r\";k(Q>=8c&&Q<=89)Q-=48;k($f.8a&&4C){k(!H.34){H.34=$f.20[1];$c.1f=$f.z}k(H==$f.z)$c.1f=$f.z;k(Q==27)k(H==$f.z){$c.3L();t}q $f.z.24();k(Q>=37&&Q<=40){o U;k($c.1f==$f.z||$c.1f==$d.1R)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]);2R(M);t}q{U=$f.Z.3O;$d[U+\"I\"].24()}U=U||3R($c.1f);k(U){k(Q==38||Q==39)$n[U]+=1;q $n[U]-=1;$n.1S();$c.1f.1g=$n[U];3Q.4M($c.1f,1a);$c.1f.4w()}}q k(Q==9){o D=H.34;1b(o R=0;R<$f.20.u;R++)k(D.25==1a||D.36==0)D=D.34;q 1h;k($c.1f!=D){$c.1f=D;D.24()}}q k(Q==13){3Q.4M($c.1f);k($c.1f.3h==\"1K\")$c.1f.8f();q $c.4P();$c.1f=$f.z}}q k(Q==9&&H==$f.z)$c.3L();k($f.8g&&!$6b&&!$f.3K&&$c.1f==$f.z&&(Q>=48&&Q<=57)){o T=$f.z,S=T.1g,F=E(T),I={1Z:\"\",1r:[]},R=0,K,N=0,X=0,O=0,J,b=/3g|2l|3b|y|3N|M|1M|d|%2h|51|H|52|m|4Z|s|4g|W|w/g,L=$f.1B.3a(b),B,A,$,V,W,G,J=0;k(S!=\"\"){O=S.3a(/[0-9]/g);O=O==1i?0:O.u;1b(R=0;R<L.u;R++)O-=2B.6g(L[R].u,2);O=O>=0?1:0;k(O==1&&F>=S.u)F=S.u-1}S=S.1E(0,F)+8d.8e(Q)+S.1E(F+O);F++;1b(R=0;R<S.u;R++){o C=S.1I(R);k(/[0-9]/.4o(C))I.1Z+=C;q I.1r[R]=1}S=\"\";b.2E=0;3m((K=b.33($f.1B))!==1i){X=K.3Y-(K[0]==\"%2h\"?1:0);k(N>=0){S+=$f.1B.1E(N,X);k(F>=N+J&&F<=X+J)F+=X-N}N=b.2E;G=N-X;B=I.1Z.1E(0,G);A=K[0].1I(0);$=2i(B.1I(0));k(I.1Z.u>1){V=I.1Z.1I(1);W=$*10+2i(V)}q{V=\"\";W=$}k(I.1r[X+1]||A==\"M\"&&W>12||A==\"d\"&&W>31||A==\"H\"&&W>23||\"6o\".1q(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.1Z=I.1Z.1E(G);k(I.1Z==\"\")1h}T.1g=S;P(T,F);2R(M)}k(4C&&$c.1f!=$f.z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2R(M);l E(A){o b=0;k($f.4A.1O.6Q){o B=$f.4A.1O.6Q.85(),$=B.4F.u;B.6F(\"4v\",-A.1g.u);b=B.4F.u-$}q k(A.4G||A.4G==\"0\")b=A.4G;t b}l P(b,A){k(b.6x){b.24();b.6x(A,A)}q k(b.6y){o $=b.6y();$.8M(1a);$.8N(\"4v\",A);$.6F(\"4v\",A);$.4w()}}}1O.8t=1',62,551,'|||||||||||_||||dp||this|||if|function||dt|var||else|||return|length|||div||el|||||||||||||||||||||||||class|has|||||||||td|new|true|for|style|className|case|currFocus|value|break|null|tr|lang|replace|hide|false|pInt3|divs|indexOf|arr|onclick|checkValid|input|sdt|yI|table|elProp|tdt|menu|dateFmt|DPDate|id|substring|Date|qsDivSel|pv|charAt|MI|button|ny|dd|ipts|document|innerHTML|realFmt|okI|refresh|loadDate|maxDate|getP|getDay|event|show|str|focusArr|sv|minDate||focus|disabled|||st|callFunc|loadFromDate|height|preventDefault|isR|display|todayI|aMonStr|ld|pInt|9700|rMI|yyy|autoUpdateOnChanged|attr|ryI|update|cellpadding|none|border|compareWith|onblur|MMMM|date|cellspacing|onmouseout|left|onmouseover|Math|sb|tmpEval|lastIndex|100|getDate|clearI|checkRange|float|yMdHms|width|rtn|realFullFmt|splitDate|doExp|nowrap|_cancelKey|shorH|eval|_f|tDiv|MMM|DD|menuSel|menuOn||||exec|nextCtrl|yD|offsetHeight||||match|yy|prototype|doStr|HI|switch|yyyy|type|dDiv|_initRe|attachEvent|QS|while|arguments|autoPickDate|mark|day_Click|bDiv|_fd|doCustomDate|setDisp|disHMS|hideSel|MD|getDateStr|makeInRange|realValue|pInt2|ps|rv|setRealValue|rMD|mI|My97Mark|toLowerCase|showB|readOnly|close|rightImg|MM|minUnit|oldValue|_blur|_foundInput|navImg|sd|onmousedown|_fHMS|navRightImg|leftImg|index|navLeftImg||firstDayOfWeek|yminput|sI|errMsg|||draw||split|realDateFmt|WdateDiv|nbsp|maxlength|RegExp|_setAll|WW|titleDiv|btns|appendChild|_inputBindEvent|dpButton|cancelBubble|span|test|align|isTime|elFocus|isDate|fp|invalidMenu|character|select|_fy|blur|_fMyPos|win|getWeek|isShow|_fillQS|mStr|text|selectionStart|testDate|testDay|keyCode|_tab|isShowOK|call|getNewDateStr|which|pickDate|getMonth|getFullYear|ddateRe|getHours|errDealMode|getSeconds|getMinutes|slice|_setFrom|ss||HH|mm|onkeydown|qsDiv|fireEvent|nodeType||updownEvent||highLineWeekDay|isShowWeek|offsetWidth|px|opposite|yearOffset|initBtn|onpicked|oncleared|2000|bak|aWeekStr|eCont|setAttribute|WdateFmtErr|center|testDisDate|testSpeDate|valign|realTimeFmt|xd7|isShowToday|_dealFmt|initShowAndHide|cloneNode|aLongMonStr|abs|isShowClear|top|ddayRe|FF|WdayTable|window|MTitle|testDisDay|body|isShowOthers|getElementsByTagName|doubleCalendar|testSpeDay|sdateRe|autoSize|sdayRe|right|rM|yminputfocus|_makeDateInRange|ry|showDiv|cal|Number|oldv||default|sD|nodeName|HD|mD|IE|on|coverDate|isNaN|returnValue|OPERA|My97DP|tE|init|upButton|max|spans|downButton|readonly|target|timeSpan|_focus|srcElement|ms|tm|defMaxDate|defMinDate|13579|02468|02|13578|setDate|setSelectionRange|createTextRange|startDate|01|checkAndUpdate|quickSel|initQS|Event|moveStart|469|newdate|hidden|attachTabEvent|undefined|re|func|valueOf|_ieEmuEventHandler|block|selection|NavImgll|YMenu|dpTitle|NavImgl|offsetLeft|dpTimeUp|dpTimeDown|MMenu|__defineGetter__|dpQS|NavImgrr|position|dpTime|hhMenu|overflow|addEventListener|absolute|createElement|HTMLElement|dpTimeStr|parentNode|tB|rowspan|NavImgr|mmMenu|ssMenu|dpControl|WotherDayOn|object|alwaysUseStartDate|WotherDay|typeof|substr|Wweek|Function|vel|Wwday|Wday|Wtoday|Wselday|01345789|WwdayOn|WdayOn|1235679|048|specialDays|specialDates|timeStr|err_1|disabledDays|dpTodayInput|dpClearInput|disabledDates|dpOkInput|onchange|WspecialDay|1900|change|alert|todayStr|clearStr|WinvalidDay|okStr|getBoundingClientRect|round|86400000|whichDayIsfirstWeek|setMonth|yMd|changed|00|changing|textarea|srcEl|try|__defineSetter__|createRange|join|catch|Array|105|enableKeyboard|onfocus|96|String|fromCharCode|click|enableInputMask|parseInt|createEvent|onpicking|yHms|dispatchEvent|stopPropagation|HTMLEvents|initEvent|1000|_fm|errAlertMsg|aLongWeekStr|ready|WdateDiv2|ydHmswW|getNewP|_fs|pointer|_fH|u2192|cursor|quickStr|confirm|Time|qsEnabled|WdayTable2|min|Hms|contentWindow|onclearing|_fM|collapse|moveEnd|scrollHeight|autoShowQS|parent|u2190|iframe'.split('|'),0,{}))"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/lang/en.js",
    "content": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\naLongWeekStr:[\"wk\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\naMonStr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\naLongMonStr: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\nclearStr: \"Clear\",\ntodayStr: \"Today\",\nokStr: \"OK\",\nupdateStr: \"OK\",\ntimeStr: \"Time\",\nquickStr: \"Quick Selection\",\nerr_1: 'MinDate Cannot be bigger than MaxDate!'\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/lang/zh-cn.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u8303\\u56F4,\\u9700\\u8981\\u64A4\\u9500\\u5417?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u786E\\u5B9A\",\nupdateStr: \"\\u786E\\u5B9A\",\ntimeStr: \"\\u65F6\\u95F4\",\nquickStr: \"\\u5FEB\\u901F\\u9009\\u62E9\", \nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u4E8E\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/lang/zh-tw.js",
    "content": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B9A\\u7BC4\\u570D,\\u9700\\u8981\\u64A4\\u92B7\\u55CE?\",\naWeekStr: [\"\\u5468\",\"\\u65E5\",\"\\u4E00\",\"\\u4E8C\",\"\\u4E09\",\"\\u56DB\",\"\\u4E94\",\"\\u516D\"],\naLongWeekStr:[\"\\u5468\",\"\\u661F\\u671F\\u65E5\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\"],\naMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\",\"\\u5341\\u4E8C\"],\naLongMonStr: [\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\"],\nclearStr: \"\\u6E05\\u7A7A\",\ntodayStr: \"\\u4ECA\\u5929\",\nokStr: \"\\u78BA\\u5B9A\",\nupdateStr: \"\\u78BA\\u5B9A\",\ntimeStr: \"\\u6642\\u9593\",\nquickStr: \"\\u5FEB\\u901F\\u9078\\u64C7\",\nerr_1: '\\u6700\\u5C0F\\u65E5\\u671F\\u4E0D\\u80FD\\u5927\\u65BC\\u6700\\u5927\\u65E5\\u671F!'\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/skin/WdatePicker.css",
    "content": ".Wdate{\n\tborder:#999 1px solid;\n\theight:20px;\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n\n.WdateFmtErr{\n\tfont-weight:bold;\n\tcolor:red;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/skin/default/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.7\n */\n\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#FFFFFF;\n\tborder:#bbb 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tdisplay:block;\n\tcursor:pointer;\n\theight:16px;\n\twidth:16px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll 0 0;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:transparent url(img.gif) no-repeat scroll -16px 0;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -32px 0;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:transparent url(img.gif) no-repeat scroll -48px 0;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tmargin-bottom:2px;\n\tpadding:1px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\theight:20px;\n\tborder:0px;\n\twidth:50px;\n\tcursor:pointer;\t\t\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tfont-weight:bold;\n\theight:20px;\n\tcolor:blue;\n\tborder:#ccc 1px solid;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\t\n\tborder:#ccc 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n\t\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tbackground-color:#BDEBEE;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\n\tborder:#c5d9e8 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#FF2F2F;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tcolor:#000;\n\tbackground-color:#C0EBEF;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A9E4E9;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#6A6AFF;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n}\n\n.WdateDiv #dpTime input{\n\twidth:18px;\n\theight:20px;\n\ttext-align:center;\n\tborder:#ccc 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n    background:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\t\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tborder:#ccc 1px solid;\n\tmargin-top:2px;\n\tmargin-right:1px;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/My97DatePicker/skin/whyGreen/datepicker.css",
    "content": "/* \n * My97 DatePicker 4.7 Skin:whyGreen\n */ \n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid;\n\tpadding:2px;\n}\n\n.WdateDiv2{\n\twidth:360px;\n}\n.WdateDiv *{font-size:9pt;}\n\n.WdateDiv .NavImg a{\n\tcursor:pointer;\n\tdisplay:block;\n\twidth:16px;\n\theight:16px;\n\tmargin-top:1px;\n}\n\n.WdateDiv .NavImgll a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat;\n}\n.WdateDiv .NavImgl a{\n\tfloat:left;\n\tbackground:url(img.gif) no-repeat -16px 0px;\n}\n.WdateDiv .NavImgr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -32px 0px;\n}\n.WdateDiv .NavImgrr a{\n\tfloat:right;\n\tbackground:url(img.gif) no-repeat -48px 0px;\n}\n\n.WdateDiv #dpTitle{\n\theight:24px;\n\tpadding:1px;\n\tborder:#c5d9e8 1px solid;\n\tbackground:url(bg.jpg);\n\tmargin-bottom:2px;\n}\n\n.WdateDiv .yminput{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:0px;\n\theight:20px;\n\twidth:50px;\n\tcolor:#034c50;\n\tbackground-color:transparent;\n\tcursor:pointer;\n}\n\n.WdateDiv .yminputfocus{\n\tmargin-top:2px;\n\ttext-align:center;\n\tborder:#939393 1px solid;\n\tfont-weight:bold;\n\tcolor:#034c50;\t\n\theight:20px;\n\twidth:50px;\n}\n\n.WdateDiv .menuSel{\n\tz-index:1;\n\tposition:absolute;\n\tbackground-color:#FFFFFF;\n\tborder:#A3C6C8 1px solid;\n\tdisplay:none;\n}\n\n.WdateDiv .menu{\n\tcursor:pointer;\n\tbackground-color:#fff;\n\tcolor:#11777C;\n}\n\n.WdateDiv .menuOn{\n\tcursor:pointer;\n\tbackground-color:#BEEBEE;\n}\n\n.WdateDiv .invalidMenu{\n\tcolor:#aaa;\n}\n\n.WdateDiv .YMenu{\n\tmargin-top:20px;\n}\n\n.WdateDiv .MMenu{\n\tmargin-top:20px;\n\t*width:62px;\n}\n\n.WdateDiv .hhMenu{\n\tmargin-top:-90px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .mmMenu{\n\tmargin-top:-46px; \n\tmargin-left:26px;\n}\n\n.WdateDiv .ssMenu{\n\tmargin-top:-24px; \n\tmargin-left:26px;\n}\n\n .WdateDiv .Wweek {\n \ttext-align:center;\n\tbackground:#DAF3F5;\n\tborder-right:#BDEBEE 1px solid;\n }\n\n.WdateDiv .MTitle{\n\tcolor:#13777e;\n\tbackground-color:#bdebee;\n}\n.WdateDiv .WdayTable2{\n\tborder-collapse:collapse;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable2 table{\n\tborder:0;\n}\n\n.WdateDiv .WdayTable{\n\tline-height:20px;\t\n\tcolor:#13777e;\n\tbackground-color:#edfbfb;\n\tborder:#BEE9F0 1px solid;\n}\n.WdateDiv .WdayTable td{\n\ttext-align:center;\n}\n\n.WdateDiv .Wday{\n\tcursor:pointer;\n}\n\n.WdateDiv .WdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9 ;\n}\n\n.WdateDiv .Wwday{\n\tcursor:pointer;\n\tcolor:#ab1e1e;\n}\n\n.WdateDiv .WwdayOn{\n\tcursor:pointer;\n\tbackground-color:#74d2d9;\n}\n.WdateDiv .Wtoday{\n\tcursor:pointer;\n\tcolor:blue;\n}\n.WdateDiv .Wselday{\n\tbackground-color:#A7E2E7;\n}\n.WdateDiv .WspecialDay{\n\tbackground-color:#66F4DF;\n}\n\n.WdateDiv .WotherDay{ \n\tcursor:pointer;\n\tcolor:#0099CC;\t\n}\n\n.WdateDiv .WotherDayOn{ \n\tcursor:pointer;\n\tbackground-color:#C0EBEF;\t\n}\n\n.WdateDiv .WinvalidDay{\n\tcolor:#aaa;\n}\n\n.WdateDiv #dpTime{\n\tfloat:left;\n\tmargin-top:3px;\n\tmargin-right:30px;\n}\n\n.WdateDiv #dpTime #dpTimeStr{\n\tmargin-left:1px;\n\tcolor:#497F7F;\n}\n\n.WdateDiv #dpTime input{\n\theight:20px;\n\twidth:18px;\n\ttext-align:center;\n\tcolor:#333;\n\tborder:#61CAD0 1px solid;\t\n}\n\n.WdateDiv #dpTime .tB{\n\tborder-right:0px;\n}\n\n.WdateDiv #dpTime .tE{\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime .tm{\n\twidth:7px;\n\tborder-left:0;\n\tborder-right:0;\n}\n\n.WdateDiv #dpTime #dpTimeUp{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -32px -16px;\n}\n\n.WdateDiv #dpTime #dpTimeDown{\n\theight:10px;\n\twidth:13px;\n\tborder:0px;\n\tbackground:url(img.gif) no-repeat -48px -16px;\n}\n\n .WdateDiv #dpQS {\n \tfloat:left;\n\tmargin-right:3px;\n\tmargin-top:3px;\n\tbackground:url(img.gif) no-repeat 0px -16px;\n\twidth:20px;\n\theight:20px;\n\tcursor:pointer;\n }\n.WdateDiv #dpControl {\n\ttext-align:right;\n\tmargin-top:3px;\n}\n.WdateDiv .dpButton{ \n\theight:20px;\n\twidth:45px;\n\tmargin-top:2px;\n\tborder:#38B1B9 1px solid;\n\tbackground-color:#CFEBEE;\n\tcolor:#08575B;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/locale/easyui-lang-en.js",
    "content": "if ($.fn.pagination){\n\t$.fn.pagination.defaults.beforePageText = 'Page';\n\t$.fn.pagination.defaults.afterPageText = 'of {pages}';\n\t$.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items';\n}\nif ($.fn.datagrid){\n\t$.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...';\n}\nif ($.fn.treegrid && $.fn.datagrid){\n\t$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;\n}\nif ($.messager){\n\t$.messager.defaults.ok = 'Ok';\n\t$.messager.defaults.cancel = 'Cancel';\n}\nif ($.fn.validatebox){\n\t$.fn.validatebox.defaults.missingMessage = 'This field is required.';\n\t$.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.';\n\t$.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.';\n\t$.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.';\n\t$.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.';\n}\nif ($.fn.numberbox){\n\t$.fn.numberbox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combobox){\n\t$.fn.combobox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combotree){\n\t$.fn.combotree.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.combogrid){\n\t$.fn.combogrid.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.calendar){\n\t$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];\n\t$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n}\nif ($.fn.datebox){\n\t$.fn.datebox.defaults.currentText = 'Today';\n\t$.fn.datebox.defaults.closeText = 'Close';\n\t$.fn.datebox.defaults.okText = 'Ok';\n\t$.fn.datebox.defaults.missingMessage = 'This field is required.';\n}\nif ($.fn.datetimebox && $.fn.datebox){\n\t$.extend($.fn.datetimebox.defaults,{\n\t\tcurrentText: $.fn.datebox.defaults.currentText,\n\t\tcloseText: $.fn.datebox.defaults.closeText,\n\t\tokText: $.fn.datebox.defaults.okText,\n\t\tmissingMessage: $.fn.datebox.defaults.missingMessage\n\t});\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/locale/easyui-lang-zh_CN.js",
    "content": "if ($.fn.pagination){\n\t$.fn.pagination.defaults.beforePageText = '第';\n\t$.fn.pagination.defaults.afterPageText = '共{pages}页';\n\t$.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录';\n}\nif ($.fn.datagrid){\n\t$.fn.datagrid.defaults.loadMsg = '正在处理，请稍待。。。';\n}\nif ($.fn.treegrid && $.fn.datagrid){\n\t$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;\n}\nif ($.messager){\n\t$.messager.defaults.ok = '确定';\n\t$.messager.defaults.cancel = '取消';\n}\nif ($.fn.validatebox){\n\t$.fn.validatebox.defaults.missingMessage = '该输入项为必输项';\n\t$.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址';\n\t$.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址';\n\t$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间';\n\t$.fn.validatebox.defaults.rules.remote.message = '请修正该字段';\n}\nif ($.fn.numberbox){\n\t$.fn.numberbox.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combobox){\n\t$.fn.combobox.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combotree){\n\t$.fn.combotree.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.combogrid){\n\t$.fn.combogrid.defaults.missingMessage = '该输入项为必输项';\n}\nif ($.fn.calendar){\n\t$.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六'];\n\t$.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];\n}\nif ($.fn.datebox){\n\t$.fn.datebox.defaults.currentText = '今天';\n\t$.fn.datebox.defaults.closeText = '关闭';\n\t$.fn.datebox.defaults.okText = '确定';\n\t$.fn.datebox.defaults.missingMessage = '该输入项为必输项';\n\t$.fn.datebox.defaults.formatter = function(date){\n\t\tvar y = date.getFullYear();\n\t\tvar m = date.getMonth()+1;\n\t\tvar d = date.getDate();\n\t\treturn y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);\n\t};\n\t$.fn.datebox.defaults.parser = function(s){\n\t\tif (!s) return new Date();\n\t\tvar ss = s.split('-');\n\t\tvar y = parseInt(ss[0],10);\n\t\tvar m = parseInt(ss[1],10);\n\t\tvar d = parseInt(ss[2],10);\n\t\tif (!isNaN(y) && !isNaN(m) && !isNaN(d)){\n\t\t\treturn new Date(y,m-1,d);\n\t\t} else {\n\t\t\treturn new Date();\n\t\t}\n\t};\n}\nif ($.fn.datetimebox && $.fn.datebox){\n\t$.extend($.fn.datetimebox.defaults,{\n\t\tcurrentText: $.fn.datebox.defaults.currentText,\n\t\tcloseText: $.fn.datebox.defaults.closeText,\n\t\tokText: $.fn.datebox.defaults.okText,\n\t\tmissingMessage: $.fn.datebox.defaults.missingMessage\n\t});\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #95B8E7;\n}\n.accordion .accordion-header {\n  background: #E0ECFF;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #FBEC88;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-color: #95B8E7;\n}\n.calendar-header {\n  background: #E0ECFF;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #F4F4F4;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #b7d2ff;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #FBEC88;\n  color: #000000;\n  border: 1px solid #E2C608;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #95B8E7;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #E0ECFF;\n}\n.combo-arrow-hover {\n  background-color: #eaf2ff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #efefef;\n  background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #aac5e7;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #95B8E7;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #F4F4F4;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dddddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #eaf2ff;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #95B8E7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #F4F4F4;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #F4F4F4;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dddddd;\n}\n.dialog-button {\n  border-top: 1px solid #dddddd;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #eaf2ff;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #95B8E7;\n}\n.panel-header {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #0E2D5F;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #95B8E7;\n}\n.accordion .accordion-header {\n  background: #E0ECFF;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #FBEC88;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #000000;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #95B8E7;\n}\n.window {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #95B8E7;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #F4F4F4;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dddddd;\n}\n.dialog-button {\n  border-top: 1px solid #dddddd;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #95B8E7;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #E0ECFF;\n}\n.combo-arrow-hover {\n  background-color: #eaf2ff;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #FBEC88;\n  color: #000000;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #aac5e7;\n}\n.layout-split-north {\n  border-bottom: 5px solid #E6EEF8;\n}\n.layout-split-south {\n  border-top: 5px solid #E6EEF8;\n}\n.layout-split-east {\n  border-left: 5px solid #E6EEF8;\n}\n.layout-split-west {\n  border-right: 5px solid #E6EEF8;\n}\n.layout-expand {\n  background-color: #E0ECFF;\n}\n.layout-expand-over {\n  background-color: #E0ECFF;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #eaf2ff;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #0E2D5F;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #0E2D5F;\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #E0ECFF;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #95B8E7;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #eaf2ff;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #eaf2ff;\n  color: #000000;\n  border: 1px solid #b7d2ff;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #efefef;\n  background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%);\n  background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #aac5e7;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #95B8E7;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #F4F4F4;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dddddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #eaf2ff;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #95B8E7;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #E0ECFF;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #E0ECFF;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #95B8E7;\n}\n.calendar {\n  border-color: #95B8E7;\n}\n.calendar-header {\n  background: #E0ECFF;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #F4F4F4;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #b7d2ff;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #FBEC88;\n  color: #000000;\n  border: 1px solid #E2C608;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #F4F4F4;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #95B8E7;\n}\n.spinner-arrow {\n  background-color: #E0ECFF;\n}\n.spinner-arrow-hover {\n  background-color: #eaf2ff;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #95B8E7;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #FBEC88;\n  color: #000000;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #95B8E7;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #E0ECFF;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #95B8E7;\n  background: #E0ECFF;\n}\n.slider-rule span {\n  border-color: #95B8E7;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #ddd;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #b7d2ff;\n  color: #000000;\n  background: #eaf2ff;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #aac5e7;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #95B8E7;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #95B8E7;\n}\n.tree-node-hover {\n  background: #eaf2ff;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #95B8E7;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #95B8E7;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #95B8E7;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #95B8E7;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #95B8E7;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #aac5e7;\n}\n.layout-split-north {\n  border-bottom: 5px solid #E6EEF8;\n}\n.layout-split-south {\n  border-top: 5px solid #E6EEF8;\n}\n.layout-split-east {\n  border-left: 5px solid #E6EEF8;\n}\n.layout-split-west {\n  border-right: 5px solid #E6EEF8;\n}\n.layout-expand {\n  background-color: #E0ECFF;\n}\n.layout-expand-over {\n  background-color: #E0ECFF;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #eaf2ff;\n  color: #000000;\n  border: 1px solid #b7d2ff;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #ddd;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #b7d2ff;\n  color: #000000;\n  background: #eaf2ff;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #95B8E7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #95B8E7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #eaf2ff;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #95B8E7;\n}\n.panel-header {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #0E2D5F;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #95B8E7;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #E0ECFF;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dddddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #E0ECFF;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #95B8E7;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #E0ECFF;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #95B8E7;\n  background: #E0ECFF;\n}\n.slider-rule span {\n  border-color: #95B8E7;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #95B8E7;\n}\n.spinner-arrow {\n  background-color: #E0ECFF;\n}\n.spinner-arrow-hover {\n  background-color: #eaf2ff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #aac5e7;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #b7d2ff;\n  background-color: #eaf2ff;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #eaf2ff;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #0E2D5F;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%);\n  background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%);\n  background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #0E2D5F;\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #E0ECFF;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #95B8E7;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #eaf2ff;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #95B8E7;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #95B8E7;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #95B8E7;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #95B8E7;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #95B8E7;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #95B8E7;\n}\n.tree-node-hover {\n  background: #eaf2ff;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #FBEC88;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/default/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #95B8E7;\n}\n.window {\n  background-color: #E0ECFF;\n  background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%);\n  background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #95B8E7;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #D3D3D3;\n}\n.accordion .accordion-header {\n  background: #f3f3f3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #0092DC;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-color: #D3D3D3;\n}\n.calendar-header {\n  background: #f3f3f3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #fafafa;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #ccc;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #0092DC;\n  color: #fff;\n  border: 1px solid #0070a9;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #D3D3D3;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #f3f3f3;\n}\n.combo-arrow-hover {\n  background-color: #e2e2e2;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #fafafa;\n  background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #bfbfbf;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #D3D3D3;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #fafafa;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #ddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #e2e2e2;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #D3D3D3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #fafafa;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #fafafa;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #ddd;\n}\n.dialog-button {\n  border-top: 1px solid #ddd;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #e2e2e2;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #D3D3D3;\n}\n.panel-header {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #575765;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #ffffff;\n  border-color: #D3D3D3;\n}\n.accordion .accordion-header {\n  background: #f3f3f3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #0092DC;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #D3D3D3;\n}\n.window {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #D3D3D3;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #fafafa;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #ddd;\n}\n.dialog-button {\n  border-top: 1px solid #ddd;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #ffffff;\n}\n.combo {\n  border-color: #D3D3D3;\n  background-color: #ffffff;\n}\n.combo-arrow {\n  background-color: #f3f3f3;\n}\n.combo-arrow-hover {\n  background-color: #e2e2e2;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.combobox-item-selected {\n  background-color: #0092DC;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #bfbfbf;\n}\n.layout-split-north {\n  border-bottom: 5px solid #efefef;\n}\n.layout-split-south {\n  border-top: 5px solid #efefef;\n}\n.layout-split-east {\n  border-left: 5px solid #efefef;\n}\n.layout-split-west {\n  border-right: 5px solid #efefef;\n}\n.layout-expand {\n  background-color: #f3f3f3;\n}\n.layout-expand-over {\n  background-color: #f3f3f3;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #e2e2e2;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #575765;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #575765;\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f3f3f3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #D3D3D3;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #e2e2e2;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #e2e2e2;\n  color: #000000;\n  border: 1px solid #ccc;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #ffffff url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #fafafa;\n  background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%);\n  background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0);\n}\n.datagrid-cell-rownumber {\n  color: #000000;\n}\n.datagrid-resize-proxy {\n  background: #bfbfbf;\n}\n.datagrid-mask {\n  background: #ccc;\n}\n.datagrid-mask-msg {\n  border-color: #D3D3D3;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #fafafa;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #ddd;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #000000;\n}\n.datagrid-row-alt {\n  background: #fafafa;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #e2e2e2;\n  color: #000000;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #D3D3D3;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f3f3f3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f3f3f3;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #4d4d4d;\n}\n.calendar-day {\n  color: #000000;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #D3D3D3;\n}\n.calendar {\n  border-color: #D3D3D3;\n}\n.calendar-header {\n  background: #f3f3f3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #ffffff;\n}\n.calendar-body th {\n  background: #fafafa;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.calendar-hover {\n  border: 1px solid #ccc;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #0092DC;\n  color: #fff;\n  border: 1px solid #0070a9;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #fafafa;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #444;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #D3D3D3;\n}\n.spinner-arrow {\n  background-color: #f3f3f3;\n}\n.spinner-arrow-hover {\n  background-color: #e2e2e2;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #D3D3D3;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #0092DC;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #D3D3D3;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f3f3f3;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #D3D3D3;\n  background: #f3f3f3;\n}\n.slider-rule span {\n  border-color: #D3D3D3;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #f3f3f3;\n  border-color: #D3D3D3;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #f3f3f3;\n}\n.menu-active {\n  border-color: #ccc;\n  color: #000000;\n  background: #e2e2e2;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #bfbfbf;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #D3D3D3;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #D3D3D3;\n}\n.tree-node-hover {\n  background: #e2e2e2;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #0092DC;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #D3D3D3;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #D3D3D3;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #D3D3D3;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #D3D3D3;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #D3D3D3;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #bfbfbf;\n}\n.layout-split-north {\n  border-bottom: 5px solid #efefef;\n}\n.layout-split-south {\n  border-top: 5px solid #efefef;\n}\n.layout-split-east {\n  border-left: 5px solid #efefef;\n}\n.layout-split-west {\n  border-right: 5px solid #efefef;\n}\n.layout-expand {\n  background-color: #f3f3f3;\n}\n.layout-expand-over {\n  background-color: #f3f3f3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #444;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #e2e2e2;\n  color: #000000;\n  border: 1px solid #ccc;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #444;\n  filter: alpha(opacity=50);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #ddd;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ccc;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #f3f3f3;\n  border-color: #D3D3D3;\n  color: #444;\n}\n.menu-content {\n  background: #ffffff;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #f3f3f3;\n}\n.menu-active {\n  border-color: #ccc;\n  color: #000000;\n  background: #e2e2e2;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #444;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #D3D3D3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #D3D3D3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #e2e2e2;\n  -moz-border-radius: 3px 3px 3px 3px;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #D3D3D3;\n}\n.panel-header {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.panel-body {\n  background-color: #ffffff;\n  color: #000000;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #575765;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.progressbar {\n  border-color: #D3D3D3;\n}\n.progressbar-text {\n  color: #000000;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f3f3f3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #ddd;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f3f3f3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #D3D3D3;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f3f3f3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #D3D3D3;\n  background: #f3f3f3;\n}\n.slider-rule span {\n  border-color: #D3D3D3;\n}\n.slider-rulelabel span {\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #D3D3D3;\n}\n.spinner-arrow {\n  background-color: #f3f3f3;\n}\n.spinner-arrow-hover {\n  background-color: #e2e2e2;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #bfbfbf;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #ccc;\n  background-color: #e2e2e2;\n  color: #000000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 5px 5px 0 0;\n  -webkit-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 5px 5px;\n  -webkit-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 5px 0 0 5px;\n  -webkit-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 5px 5px 0;\n  -webkit-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #e2e2e2;\n  color: #000000;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #ffffff;\n  color: #575765;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0);\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0);\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%);\n  background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1);\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%);\n  background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%);\n  background-repeat: repeat-y;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1);\n}\n.tabs li a.tabs-inner {\n  color: #575765;\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f3f3f3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #D3D3D3;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #e2e2e2;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #ffffff;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #ffffff;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #ffffff;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #ffffff;\n  border-color: #D3D3D3;\n  color: #000000;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #D3D3D3;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #ffffff;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #D3D3D3;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #ffffff;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #D3D3D3;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #ffffff;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #D3D3D3;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #ffffff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #ffffff;\n  color: #000000;\n  border-color: #D3D3D3;\n}\n.tree-node-hover {\n  background: #e2e2e2;\n  color: #000000;\n}\n.tree-node-selected {\n  background: #0092DC;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #000;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/gray/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 5px 5px 5px 5px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.window-shadow {\n  background: #ccc;\n  -moz-box-shadow: 2px 2px 3px #cccccc;\n  -webkit-box-shadow: 2px 2px 3px #cccccc;\n  box-shadow: 2px 2px 3px #cccccc;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #D3D3D3;\n}\n.window {\n  background-color: #f3f3f3;\n  background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%);\n  background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0);\n}\n.window-proxy {\n  border: 1px dashed #D3D3D3;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #ccc;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/icon.css",
    "content": ".icon-blank{\n\tbackground:url('icons/blank.gif') no-repeat center center;\n}\n.icon-add{\n\tbackground:url('icons/edit_add.png') no-repeat center center;\n}\n.icon-edit{\n\tbackground:url('icons/pencil.png') no-repeat center center;\n}\n.icon-remove{\n\tbackground:url('icons/edit_remove.png') no-repeat center center;\n}\n.icon-save{\n\tbackground:url('icons/filesave.png') no-repeat center center;\n}\n.icon-cut{\n\tbackground:url('icons/cut.png') no-repeat center center;\n}\n.icon-ok{\n\tbackground:url('icons/ok.png') no-repeat center center;\n}\n.icon-no{\n\tbackground:url('icons/no.png') no-repeat center center;\n}\n.icon-cancel{\n\tbackground:url('icons/cancel.png') no-repeat center center;\n}\n.icon-reload{\n\tbackground:url('icons/reload.png') no-repeat center center;\n}\n.icon-search{\n\tbackground:url('icons/search.png') no-repeat center center;\n}\n.icon-print{\n\tbackground:url('icons/print.png') no-repeat center center;\n}\n.icon-help{\n\tbackground:url('icons/help.png') no-repeat center center;\n}\n.icon-undo{\n\tbackground:url('icons/undo.png') no-repeat center center;\n}\n.icon-redo{\n\tbackground:url('icons/redo.png') no-repeat center center;\n}\n.icon-back{\n\tbackground:url('icons/back.png') no-repeat center center;\n}\n.icon-sum{\n\tbackground:url('icons/sum.png') no-repeat center center;\n}\n.icon-tip{\n\tbackground:url('icons/tip.png') no-repeat center center;\n}\n\n.icon-mini-add{\n\tbackground:url('icons/mini_add.png') no-repeat center center;\n}\n.icon-mini-edit{\n\tbackground:url('icons/mini_edit.png') no-repeat center center;\n}\n.icon-mini-refresh{\n\tbackground:url('icons/mini_refresh.png') no-repeat center center;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #c3d9e0;\n}\n.accordion .accordion-header {\n  background: #daeef5;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #6caef5;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-color: #c3d9e0;\n}\n.calendar-header {\n  background: #daeef5;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #6caef5;\n  color: #fff;\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #c3d9e0;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #daeef5;\n}\n.combo-arrow-hover {\n  background-color: #9cc8f7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #1a7bc9;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #c3d9e0;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #9cc8f7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #c3d9e0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #9cc8f7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #c3d9e0;\n}\n.panel-header {\n  background-color: #daeef5;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #c3d9e0;\n}\n.accordion .accordion-header {\n  background: #daeef5;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #6caef5;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #c3d9e0;\n}\n.window {\n  background-color: #daeef5;\n}\n.window-proxy {\n  border: 1px dashed #c3d9e0;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #c3d9e0;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #daeef5;\n}\n.combo-arrow-hover {\n  background-color: #9cc8f7;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #6caef5;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #1a7bc9;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #daeef5;\n}\n.layout-expand-over {\n  background-color: #daeef5;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #9cc8f7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #daeef5;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #daeef5;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #c3d9e0;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #9cc8f7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #1a7bc9;\n  background-repeat: repeat-x;\n  border: 1px solid #1a7bc9;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #1a7bc9;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #daeef5;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #daeef5;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #1a7bc9;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #c3d9e0;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #9cc8f7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #c3d9e0;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #daeef5;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #daeef5;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #c3d9e0;\n}\n.calendar {\n  border-color: #c3d9e0;\n}\n.calendar-header {\n  background: #daeef5;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #6caef5;\n  color: #fff;\n  border: 1px solid #9cc8f7;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #c3d9e0;\n}\n.spinner-arrow {\n  background-color: #daeef5;\n}\n.spinner-arrow-hover {\n  background-color: #9cc8f7;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #c3d9e0;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #6caef5;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #c3d9e0;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #daeef5;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #c3d9e0;\n  background: #daeef5;\n}\n.slider-rule span {\n  border-color: #c3d9e0;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #9cc8f7;\n  color: #404040;\n  background: #9cc8f7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #1a7bc9;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #c3d9e0;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #c3d9e0;\n}\n.tree-node-hover {\n  background: #9cc8f7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #6caef5;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #c3d9e0;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #c3d9e0;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #c3d9e0;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #c3d9e0;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #6caef5;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #1a7bc9;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #daeef5;\n}\n.layout-expand-over {\n  background-color: #daeef5;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #1a7bc9;\n  background-repeat: repeat-x;\n  border: 1px solid #1a7bc9;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #9cc8f7;\n  color: #404040;\n  border: 1px solid #9cc8f7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #1a7bc9;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -moz-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: -o-linear-gradient(top,#1a7bc9 0,#1a7bc9 100%);\n  background: linear-gradient(to bottom,#1a7bc9 0,#1a7bc9 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#1a7bc9,endColorstr=#1a7bc9,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #daeef5;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #9cc8f7;\n  color: #404040;\n  background: #9cc8f7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #c3d9e0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #c3d9e0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #9cc8f7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #c3d9e0;\n}\n.panel-header {\n  background-color: #daeef5;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #c3d9e0;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #daeef5;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #c3d9e0;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #daeef5;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #c3d9e0;\n  background: #daeef5;\n}\n.slider-rule span {\n  border-color: #c3d9e0;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #c3d9e0;\n}\n.spinner-arrow {\n  background-color: #daeef5;\n}\n.spinner-arrow-hover {\n  background-color: #9cc8f7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #1a7bc9;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #9cc8f7;\n  background-color: #9cc8f7;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #daeef5 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #9cc8f7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #daeef5;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #daeef5;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #c3d9e0;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #9cc8f7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #c3d9e0;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #c3d9e0;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #c3d9e0;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #c3d9e0;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #c3d9e0;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #c3d9e0;\n}\n.tree-node-hover {\n  background: #9cc8f7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #6caef5;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-blue/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #c3d9e0;\n}\n.window {\n  background-color: #daeef5;\n}\n.window-proxy {\n  border: 1px dashed #c3d9e0;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #abafb8;\n}\n.accordion .accordion-header {\n  background: #c7ccd1;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #84909c;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #abafb8;\n}\n.calendar {\n  border-color: #abafb8;\n}\n.calendar-header {\n  background: #c7ccd1;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E6E6E6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #84909c;\n  color: #fff;\n  border: 1px solid #84909c;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #abafb8;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #c7ccd1;\n}\n.combo-arrow-hover {\n  background-color: #E6E6E6;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #84909c;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #abafb8;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E6E6E6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #84909c;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #abafb8;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E6E6E6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #abafb8;\n}\n.panel-header {\n  background-color: #c7ccd1;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #abafb8;\n}\n.accordion .accordion-header {\n  background: #c7ccd1;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #84909c;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #fff;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #abafb8;\n}\n.window {\n  background-color: #c7ccd1;\n}\n.window-proxy {\n  border: 1px dashed #abafb8;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #abafb8;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #c7ccd1;\n}\n.combo-arrow-hover {\n  background-color: #E6E6E6;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #84909c;\n  color: #fff;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #84909c;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #c7ccd1;\n}\n.layout-expand-over {\n  background-color: #c7ccd1;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E6E6E6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #c7ccd1;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #c7ccd1;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #abafb8;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E6E6E6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #84909c;\n  background-repeat: repeat-x;\n  border: 1px solid #84909c;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #84909c;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #c7ccd1;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #c7ccd1;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #84909c;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #abafb8;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E6E6E6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #84909c;\n  color: #fff;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #abafb8;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #c7ccd1;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #c7ccd1;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #abafb8;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #abafb8;\n}\n.calendar {\n  border-color: #abafb8;\n}\n.calendar-header {\n  background: #c7ccd1;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E6E6E6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #84909c;\n  color: #fff;\n  border: 1px solid #84909c;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #abafb8;\n}\n.spinner-arrow {\n  background-color: #c7ccd1;\n}\n.spinner-arrow-hover {\n  background-color: #E6E6E6;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #abafb8;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #84909c;\n  color: #fff;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #abafb8;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #c7ccd1;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #abafb8;\n  background: #c7ccd1;\n}\n.slider-rule span {\n  border-color: #abafb8;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E6E6E6;\n  color: #404040;\n  background: #E6E6E6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #84909c;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #abafb8;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #abafb8;\n}\n.tree-node-hover {\n  background: #E6E6E6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #84909c;\n  color: #fff;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #abafb8;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #abafb8;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #abafb8;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #abafb8;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #84909c;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #c7ccd1;\n}\n.layout-expand-over {\n  background-color: #c7ccd1;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #84909c;\n  background-repeat: repeat-x;\n  border: 1px solid #84909c;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E6E6E6;\n  color: #404040;\n  border: 1px solid #E6E6E6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #84909c;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -moz-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: -o-linear-gradient(top,#84909c 0,#84909c 100%);\n  background: linear-gradient(to bottom,#84909c 0,#84909c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#84909c,endColorstr=#84909c,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #c7ccd1;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E6E6E6;\n  color: #404040;\n  background: #E6E6E6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #abafb8;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #abafb8;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E6E6E6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #abafb8;\n}\n.panel-header {\n  background-color: #c7ccd1;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #abafb8;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #c7ccd1;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #abafb8;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #c7ccd1;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #abafb8;\n  background: #c7ccd1;\n}\n.slider-rule span {\n  border-color: #abafb8;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #abafb8;\n}\n.spinner-arrow {\n  background-color: #c7ccd1;\n}\n.spinner-arrow-hover {\n  background-color: #E6E6E6;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #84909c;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E6E6E6;\n  background-color: #E6E6E6;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #c7ccd1 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E6E6E6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #c7ccd1;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #c7ccd1;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #abafb8;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E6E6E6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #abafb8;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #abafb8;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #abafb8;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #abafb8;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #abafb8;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #abafb8;\n}\n.tree-node-hover {\n  background: #E6E6E6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #84909c;\n  color: #fff;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-gray/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #abafb8;\n}\n.window {\n  background-color: #c7ccd1;\n}\n.window-proxy {\n  border: 1px dashed #abafb8;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #b1c242;\n}\n.accordion .accordion-header {\n  background: #e5f0c9;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #c8d47b;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #b1c242;\n}\n.calendar {\n  border-color: #b1c242;\n}\n.calendar-header {\n  background: #e5f0c9;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E0F892;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #c8d47b;\n  color: #404040;\n  border: 1px solid #c8d47b;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #b1c242;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #e5f0c9;\n}\n.combo-arrow-hover {\n  background-color: #E0F892;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #859416;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #b1c242;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E0F892;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #b1c242;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E0F892;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #b1c242;\n}\n.panel-header {\n  background-color: #e5f0c9;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #b1c242;\n}\n.accordion .accordion-header {\n  background: #e5f0c9;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #c8d47b;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #b1c242;\n}\n.window {\n  background-color: #e5f0c9;\n}\n.window-proxy {\n  border: 1px dashed #b1c242;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #b1c242;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #e5f0c9;\n}\n.combo-arrow-hover {\n  background-color: #E0F892;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #c8d47b;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #859416;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #e5f0c9;\n}\n.layout-expand-over {\n  background-color: #e5f0c9;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E0F892;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #e5f0c9;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #e5f0c9;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #b1c242;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E0F892;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #9ba842;\n  background-repeat: repeat-x;\n  border: 1px solid #9ba842;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #9ba842;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #e5f0c9;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #e5f0c9;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #859416;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #b1c242;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #E0F892;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #b1c242;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #e5f0c9;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #e5f0c9;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #b1c242;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #b1c242;\n}\n.calendar {\n  border-color: #b1c242;\n}\n.calendar-header {\n  background: #e5f0c9;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #E0F892;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #E0F892;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #c8d47b;\n  color: #404040;\n  border: 1px solid #c8d47b;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #b1c242;\n}\n.spinner-arrow {\n  background-color: #e5f0c9;\n}\n.spinner-arrow-hover {\n  background-color: #E0F892;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #b1c242;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #c8d47b;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #b1c242;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #e5f0c9;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #b1c242;\n  background: #e5f0c9;\n}\n.slider-rule span {\n  border-color: #b1c242;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E0F892;\n  color: #404040;\n  background: #E0F892;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #859416;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #b1c242;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #b1c242;\n}\n.tree-node-hover {\n  background: #E0F892;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #b1c242;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #b1c242;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #b1c242;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #b1c242;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #b1c242;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #859416;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #e5f0c9;\n}\n.layout-expand-over {\n  background-color: #e5f0c9;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #9ba842;\n  background-repeat: repeat-x;\n  border: 1px solid #9ba842;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #E0F892;\n  color: #404040;\n  border: 1px solid #E0F892;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #9ba842;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -moz-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: -o-linear-gradient(top,#9ba842 0,#9ba842 100%);\n  background: linear-gradient(to bottom,#9ba842 0,#9ba842 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#9ba842,endColorstr=#9ba842,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #e5f0c9;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #E0F892;\n  color: #404040;\n  background: #E0F892;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #b1c242;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #b1c242;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #E0F892;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #b1c242;\n}\n.panel-header {\n  background-color: #e5f0c9;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #b1c242;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #e5f0c9;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #b1c242;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #e5f0c9;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #b1c242;\n  background: #e5f0c9;\n}\n.slider-rule span {\n  border-color: #b1c242;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #b1c242;\n}\n.spinner-arrow {\n  background-color: #e5f0c9;\n}\n.spinner-arrow-hover {\n  background-color: #E0F892;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #859416;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #E0F892;\n  background-color: #E0F892;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #e5f0c9 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #E0F892;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #e5f0c9;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #e5f0c9;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #b1c242;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #E0F892;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #b1c242;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #b1c242;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #b1c242;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #b1c242;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #b1c242;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #b1c242;\n}\n.tree-node-hover {\n  background: #E0F892;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #c8d47b;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-green/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #b1c242;\n}\n.window {\n  background-color: #e5f0c9;\n}\n.window-proxy {\n  border: 1px dashed #b1c242;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #d4a375;\n}\n.accordion .accordion-header {\n  background: #f0e3bf;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f7cc8f;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #d4a375;\n}\n.calendar {\n  border-color: #d4a375;\n}\n.calendar-header {\n  background: #f0e3bf;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff7d6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n  border: 1px solid #f7cc8f;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #d4a375;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e3bf;\n}\n.combo-arrow-hover {\n  background-color: #fff7d6;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #de8033;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #d4a375;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff7d6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #d4a375;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff7d6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #d4a375;\n}\n.panel-header {\n  background-color: #f0e3bf;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #d4a375;\n}\n.accordion .accordion-header {\n  background: #f0e3bf;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f7cc8f;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #d4a375;\n}\n.window {\n  background-color: #f0e3bf;\n}\n.window-proxy {\n  border: 1px dashed #d4a375;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #d4a375;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e3bf;\n}\n.combo-arrow-hover {\n  background-color: #fff7d6;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #de8033;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e3bf;\n}\n.layout-expand-over {\n  background-color: #f0e3bf;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff7d6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e3bf;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e3bf;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #d4a375;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff7d6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #de8033;\n  background-repeat: repeat-x;\n  border: 1px solid #de8033;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #de8033;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e3bf;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e3bf;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #de8033;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #d4a375;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff7d6;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #d4a375;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e3bf;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e3bf;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #d4a375;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #d4a375;\n}\n.calendar {\n  border-color: #d4a375;\n}\n.calendar-header {\n  background: #f0e3bf;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff7d6;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff7d6;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f7cc8f;\n  color: #404040;\n  border: 1px solid #f7cc8f;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #d4a375;\n}\n.spinner-arrow {\n  background-color: #f0e3bf;\n}\n.spinner-arrow-hover {\n  background-color: #fff7d6;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #d4a375;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #d4a375;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e3bf;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #d4a375;\n  background: #f0e3bf;\n}\n.slider-rule span {\n  border-color: #d4a375;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff7d6;\n  color: #404040;\n  background: #fff7d6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #de8033;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #d4a375;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #d4a375;\n}\n.tree-node-hover {\n  background: #fff7d6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #d4a375;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #d4a375;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #d4a375;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #d4a375;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #de8033;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #de8033;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e3bf;\n}\n.layout-expand-over {\n  background-color: #f0e3bf;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #de8033;\n  background-repeat: repeat-x;\n  border: 1px solid #de8033;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff7d6;\n  color: #404040;\n  border: 1px solid #fff7d6;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #de8033;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -moz-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: -o-linear-gradient(top,#de8033 0,#de8033 100%);\n  background: linear-gradient(to bottom,#de8033 0,#de8033 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#de8033,endColorstr=#de8033,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e3bf;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff7d6;\n  color: #404040;\n  background: #fff7d6;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #d4a375;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #d4a375;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff7d6;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #d4a375;\n}\n.panel-header {\n  background-color: #f0e3bf;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #d4a375;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e3bf;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #d4a375;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e3bf;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #d4a375;\n  background: #f0e3bf;\n}\n.slider-rule span {\n  border-color: #d4a375;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #d4a375;\n}\n.spinner-arrow {\n  background-color: #f0e3bf;\n}\n.spinner-arrow-hover {\n  background-color: #fff7d6;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #de8033;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff7d6;\n  background-color: #fff7d6;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e3bf url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff7d6;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e3bf;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e3bf;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #d4a375;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff7d6;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #d4a375;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #d4a375;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #d4a375;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #d4a375;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #d4a375;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #d4a375;\n}\n.tree-node-hover {\n  background: #fff7d6;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f7cc8f;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-orange/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #d4a375;\n}\n.window {\n  background-color: #f0e3bf;\n}\n.window-proxy {\n  border: 1px dashed #d4a375;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/accordion.css",
    "content": ".accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #f6c1bc;\n}\n.accordion .accordion-header {\n  background: #f0e1e3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f09090;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/calendar.css",
    "content": ".calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-color: #f6c1bc;\n}\n.calendar-header {\n  background: #f0e1e3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff0e7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f09090;\n  color: #404040;\n  border: 1px solid #f09090;\n  padding: 0;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/combo.css",
    "content": ".combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #f6c1bc;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e1e3;\n}\n.combo-arrow-hover {\n  background-color: #fff0e7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/combobox.css",
    "content": ".combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/datagrid.css",
    "content": ".datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #c75252;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #f6c1bc;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff0e7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f09090;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #f6c1bc;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/datebox.css",
    "content": ".datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/dialog.css",
    "content": ".dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/easyui.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff0e7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #f6c1bc;\n}\n.panel-header {\n  background-color: #f0e1e3;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n.accordion {\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.accordion .accordion-header {\n  border-width: 0 0 1px;\n  cursor: pointer;\n}\n.accordion .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-noborder {\n  border-width: 0;\n}\n.accordion-noborder .accordion-header {\n  border-width: 0 0 1px;\n}\n.accordion-noborder .accordion-body {\n  border-width: 0 0 1px;\n}\n.accordion-collapse {\n  background: url('images/accordion_arrows.png') no-repeat 0 0;\n}\n.accordion-expand {\n  background: url('images/accordion_arrows.png') no-repeat -16px 0;\n}\n.accordion {\n  background: #fafafa;\n  border-color: #f6c1bc;\n}\n.accordion .accordion-header {\n  background: #f0e1e3;\n  filter: none;\n}\n.accordion .accordion-header-selected {\n  background: #f09090;\n}\n.accordion .accordion-header-selected .panel-title {\n  color: #404040;\n}\n.window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #f6c1bc;\n}\n.window {\n  background-color: #f0e1e3;\n}\n.window-proxy {\n  border: 1px dashed #f6c1bc;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n.dialog-content {\n  overflow: auto;\n}\n.dialog-toolbar {\n  padding: 2px 5px;\n}\n.dialog-tool-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.dialog-button {\n  padding: 5px;\n  text-align: right;\n}\n.dialog-button .l-btn {\n  margin-left: 5px;\n}\n.dialog-toolbar,\n.dialog-button {\n  background: #f5f5f5;\n}\n.dialog-toolbar {\n  border-bottom: 1px solid #dedede;\n}\n.dialog-button {\n  border-top: 1px solid #dedede;\n}\n.combo {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.combo .combo-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0px 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.combo-arrow {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.combo-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.combo-panel {\n  overflow: auto;\n}\n.combo-arrow {\n  background: url('images/combo_arrow.png') no-repeat center center;\n}\n.combo,\n.combo-panel {\n  background-color: #fafafa;\n}\n.combo {\n  border-color: #f6c1bc;\n  background-color: #fafafa;\n}\n.combo-arrow {\n  background-color: #f0e1e3;\n}\n.combo-arrow-hover {\n  background-color: #fff0e7;\n}\n.combobox-item {\n  padding: 2px;\n  font-size: 12px;\n  padding: 3px;\n  padding-right: 0px;\n}\n.combobox-item-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.combobox-item-selected {\n  background-color: #f09090;\n  color: #404040;\n}\n.layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #c75252;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e1e3;\n}\n.layout-expand-over {\n  background-color: #f0e1e3;\n}\n.tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff0e7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e1e3;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e1e3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #f6c1bc;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff0e7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\na.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #c75252;\n  background-repeat: repeat-x;\n  border: 1px solid #c75252;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #c75252;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e1e3;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e1e3;\n}\n.datagrid .panel-body {\n  overflow: hidden;\n  position: relative;\n}\n.datagrid-view {\n  position: relative;\n  overflow: hidden;\n}\n.datagrid-view1,\n.datagrid-view2 {\n  position: absolute;\n  overflow: hidden;\n  top: 0;\n}\n.datagrid-view1 {\n  left: 0;\n}\n.datagrid-view2 {\n  right: 0;\n}\n.datagrid-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n  display: none;\n}\n.datagrid-mask-msg {\n  position: absolute;\n  top: 50%;\n  margin-top: -20px;\n  padding: 12px 5px 10px 30px;\n  width: auto;\n  height: 16px;\n  border-width: 2px;\n  border-style: solid;\n  display: none;\n}\n.datagrid-sort-icon {\n  padding: 0;\n}\n.datagrid-toolbar {\n  height: auto;\n  padding: 1px 2px;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 2px 1px;\n}\n.datagrid .datagrid-pager {\n  margin: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.datagrid .datagrid-pager-top {\n  border-width: 0 0 1px 0;\n}\n.datagrid-header {\n  overflow: hidden;\n  cursor: default;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.datagrid-header-inner {\n  float: left;\n  width: 10000px;\n}\n.datagrid-header-row,\n.datagrid-row {\n  height: 25px;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-width: 0 1px 1px 0;\n  border-style: dotted;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-cell,\n.datagrid-cell-group,\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  margin: 0;\n  padding: 0 4px;\n  white-space: nowrap;\n  word-wrap: normal;\n  overflow: hidden;\n  height: 18px;\n  line-height: 18px;\n  font-weight: normal;\n  font-size: 12px;\n}\n.datagrid-header .datagrid-cell {\n  height: auto;\n}\n.datagrid-header .datagrid-cell span {\n  font-size: 12px;\n}\n.datagrid-cell-group {\n  text-align: center;\n}\n.datagrid-header-rownumber,\n.datagrid-cell-rownumber {\n  width: 25px;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body {\n  margin: 0;\n  padding: 0;\n  overflow: auto;\n  zoom: 1;\n}\n.datagrid-view1 .datagrid-body-inner {\n  padding-bottom: 20px;\n}\n.datagrid-view1 .datagrid-body {\n  overflow: hidden;\n}\n.datagrid-footer {\n  overflow: hidden;\n}\n.datagrid-footer-inner {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  width: 10000px;\n  float: left;\n}\n.datagrid-row-editing .datagrid-cell {\n  height: auto;\n}\n.datagrid-header-check,\n.datagrid-cell-check {\n  padding: 0;\n  width: 27px;\n  height: 18px;\n  font-size: 1px;\n  text-align: center;\n  overflow: hidden;\n}\n.datagrid-header-check input,\n.datagrid-cell-check input {\n  margin: 0;\n  padding: 0;\n  width: 15px;\n  height: 18px;\n}\n.datagrid-resize-proxy {\n  position: absolute;\n  width: 1px;\n  height: 10000px;\n  top: 0;\n  cursor: e-resize;\n  display: none;\n}\n.datagrid-body .datagrid-editable {\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable table {\n  width: 100%;\n  height: 100%;\n}\n.datagrid-body .datagrid-editable td {\n  border: 0;\n  margin: 0;\n  padding: 0;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n}\n.datagrid-sort-desc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat -16px center;\n}\n.datagrid-sort-asc .datagrid-sort-icon {\n  padding: 0 13px 0 0;\n  background: url('images/datagrid_icons.png') no-repeat 0px center;\n}\n.datagrid-row-collapse {\n  background: url('images/datagrid_icons.png') no-repeat -48px center;\n}\n.datagrid-row-expand {\n  background: url('images/datagrid_icons.png') no-repeat -32px center;\n}\n.datagrid-mask-msg {\n  background: #fafafa url('images/loading.gif') no-repeat scroll 5px center;\n}\n.datagrid-header,\n.datagrid-td-rownumber {\n  background-color: #ebeced;\n}\n.datagrid-cell-rownumber {\n  color: #404040;\n}\n.datagrid-resize-proxy {\n  background: #c75252;\n}\n.datagrid-mask {\n  background: #eee;\n}\n.datagrid-mask-msg {\n  border-color: #f6c1bc;\n}\n.datagrid-toolbar,\n.datagrid-pager {\n  background: #f5f5f5;\n}\n.datagrid-header,\n.datagrid-toolbar,\n.datagrid-pager,\n.datagrid-footer-inner {\n  border-color: #dedede;\n}\n.datagrid-header td,\n.datagrid-body td,\n.datagrid-footer td {\n  border-color: #ccc;\n}\n.datagrid-htable,\n.datagrid-btable,\n.datagrid-ftable {\n  color: #404040;\n}\n.datagrid-row-alt {\n  background: #f5f5f5;\n}\n.datagrid-row-over,\n.datagrid-header td.datagrid-header-over {\n  background: #fff0e7;\n  color: #404040;\n  cursor: default;\n}\n.datagrid-row-selected {\n  background: #f09090;\n  color: #404040;\n}\n.datagrid-body .datagrid-editable .datagrid-editable-input {\n  border-color: #f6c1bc;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e1e3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e1e3;\n}\n.pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-width: 1px;\n  border-style: solid;\n  padding: 1px;\n  overflow: hidden;\n}\n.calendar table {\n  border-collapse: separate;\n  font-size: 12px;\n  width: 100%;\n  height: 100%;\n}\n.calendar table td,\n.calendar table th {\n  font-size: 12px;\n}\n.calendar-noborder {\n  border: 0;\n}\n.calendar-header {\n  position: relative;\n  height: 22px;\n}\n.calendar-title {\n  text-align: center;\n  height: 22px;\n}\n.calendar-title span {\n  position: relative;\n  display: inline-block;\n  top: 2px;\n  padding: 0 3px;\n  height: 18px;\n  line-height: 18px;\n  font-size: 12px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth,\n.calendar-nextmonth,\n.calendar-prevyear,\n.calendar-nextyear {\n  position: absolute;\n  top: 50%;\n  margin-top: -7px;\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  font-size: 1px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-prevmonth {\n  left: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -18px -2px;\n}\n.calendar-nextmonth {\n  right: 20px;\n  background: url('images/calendar_arrows.png') no-repeat -34px -2px;\n}\n.calendar-prevyear {\n  left: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -1px -2px;\n}\n.calendar-nextyear {\n  right: 3px;\n  background: url('images/calendar_arrows.png') no-repeat -49px -2px;\n}\n.calendar-body {\n  position: relative;\n}\n.calendar-body th,\n.calendar-body td {\n  text-align: center;\n}\n.calendar-day {\n  border: 0;\n  padding: 1px;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-other-month {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.calendar-menu {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 180px;\n  height: 150px;\n  padding: 5px;\n  font-size: 12px;\n  display: none;\n  overflow: hidden;\n}\n.calendar-menu-year-inner {\n  text-align: center;\n  padding-bottom: 5px;\n}\n.calendar-menu-year {\n  width: 40px;\n  text-align: center;\n  border-width: 1px;\n  border-style: solid;\n  margin: 0;\n  padding: 2px;\n  font-weight: bold;\n  font-size: 12px;\n}\n.calendar-menu-prev,\n.calendar-menu-next {\n  display: inline-block;\n  width: 21px;\n  height: 21px;\n  vertical-align: top;\n  cursor: pointer;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-menu-prev {\n  margin-right: 10px;\n  background: url('images/calendar_arrows.png') no-repeat 2px 2px;\n}\n.calendar-menu-next {\n  margin-left: 10px;\n  background: url('images/calendar_arrows.png') no-repeat -45px 2px;\n}\n.calendar-menu-month {\n  text-align: center;\n  cursor: pointer;\n  font-weight: bold;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.calendar-body th,\n.calendar-menu-month {\n  color: #8d8d8d;\n}\n.calendar-day {\n  color: #404040;\n}\n.calendar-sunday {\n  color: #CC2222;\n}\n.calendar-saturday {\n  color: #00ee00;\n}\n.calendar-today {\n  color: #0000ff;\n}\n.calendar-menu-year {\n  border-color: #f6c1bc;\n}\n.calendar {\n  border-color: #f6c1bc;\n}\n.calendar-header {\n  background: #f0e1e3;\n}\n.calendar-body,\n.calendar-menu {\n  background: #fafafa;\n}\n.calendar-body th {\n  background: #f5f5f5;\n}\n.calendar-hover,\n.calendar-nav-hover,\n.calendar-menu-hover {\n  background-color: #fff0e7;\n  color: #404040;\n}\n.calendar-hover {\n  border: 1px solid #fff0e7;\n  padding: 0;\n}\n.calendar-selected {\n  background-color: #f09090;\n  color: #404040;\n  border: 1px solid #f09090;\n  padding: 0;\n}\n.datebox-calendar-inner {\n  height: 180px;\n}\n.datebox-button {\n  height: 18px;\n  padding: 2px 5px;\n  text-align: center;\n}\n.datebox-button a {\n  font-size: 12px;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  text-decoration: none;\n  font-weight: bold;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.datebox-current,\n.datebox-close {\n  float: left;\n}\n.datebox-close {\n  float: right;\n}\n.datebox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.datebox .combo-arrow {\n  background-image: url('images/datebox_arrow.png');\n  background-position: center center;\n}\n.datebox-button {\n  background-color: #f5f5f5;\n}\n.datebox-current,\n.datebox-close,\n.datebox-ok {\n  color: #404040;\n}\n.spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #f6c1bc;\n}\n.spinner-arrow {\n  background-color: #f0e1e3;\n}\n.spinner-arrow-hover {\n  background-color: #fff0e7;\n}\n.progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #f6c1bc;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f09090;\n  color: #404040;\n}\n.searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #f6c1bc;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e1e3;\n}\n.slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #f6c1bc;\n  background: #f0e1e3;\n}\n.slider-rule span {\n  border-color: #f6c1bc;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n.menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff0e7;\n  color: #404040;\n  background: #fff0e7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n.m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n.s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #c75252;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n.messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #f6c1bc;\n}\n.tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #f6c1bc;\n}\n.tree-node-hover {\n  background: #fff0e7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f09090;\n  color: #404040;\n}\n.validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n.tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #f6c1bc;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #f6c1bc;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #f6c1bc;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #f6c1bc;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\na.l-btn,\na:hover.l-btn-disabled {\n  color: #fff;\n}\na.l-btn-plain,\na.l-btn-selected {\n  color: #404040;\n}\n.window {\n  background-color: #eb6565;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/layout.css",
    "content": ".layout {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  z-index: 0;\n}\n.layout-panel {\n  position: absolute;\n  overflow: hidden;\n}\n.layout-panel-east,\n.layout-panel-west {\n  z-index: 2;\n}\n.layout-panel-north,\n.layout-panel-south {\n  z-index: 3;\n}\n.layout-expand {\n  position: absolute;\n  padding: 0px;\n  font-size: 1px;\n  cursor: pointer;\n  z-index: 1;\n}\n.layout-expand .panel-header,\n.layout-expand .panel-body {\n  background: transparent;\n  filter: none;\n  overflow: hidden;\n}\n.layout-expand .panel-header {\n  border-bottom-width: 0px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  position: absolute;\n  font-size: 1px;\n  display: none;\n  z-index: 5;\n}\n.layout-split-proxy-h {\n  width: 5px;\n  cursor: e-resize;\n}\n.layout-split-proxy-v {\n  height: 5px;\n  cursor: n-resize;\n}\n.layout-mask {\n  position: absolute;\n  background: #fafafa;\n  filter: alpha(opacity=10);\n  opacity: 0.10;\n  z-index: 4;\n}\n.layout-button-up {\n  background: url('images/layout_arrows.png') no-repeat -16px -16px;\n}\n.layout-button-down {\n  background: url('images/layout_arrows.png') no-repeat -16px 0;\n}\n.layout-button-left {\n  background: url('images/layout_arrows.png') no-repeat 0 0;\n}\n.layout-button-right {\n  background: url('images/layout_arrows.png') no-repeat 0 -16px;\n}\n.layout-split-proxy-h,\n.layout-split-proxy-v {\n  background-color: #c75252;\n}\n.layout-split-north {\n  border-bottom: 5px solid #fafafa;\n}\n.layout-split-south {\n  border-top: 5px solid #fafafa;\n}\n.layout-split-east {\n  border-left: 5px solid #fafafa;\n}\n.layout-split-west {\n  border-right: 5px solid #fafafa;\n}\n.layout-expand {\n  background-color: #f0e1e3;\n}\n.layout-expand-over {\n  background-color: #f0e1e3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/linkbutton.css",
    "content": "a.l-btn {\n  background-position: right 0;\n  text-decoration: none;\n  display: inline-block;\n  zoom: 1;\n  height: 24px;\n  padding-right: 18px;\n  cursor: pointer;\n  outline: none;\n}\na.l-btn-plain {\n  padding-right: 5px;\n  border: 0;\n  padding: 1px 6px 1px 1px;\n}\na.l-btn-disabled {\n  color: #ccc;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\na.l-btn span.l-btn-left {\n  display: inline-block;\n  background-position: 0 -48px;\n  padding: 4px 0px 4px 18px;\n  line-height: 16px;\n  height: 16px;\n}\na.l-btn-plain span.l-btn-left {\n  padding-left: 5px;\n}\na.l-btn span span.l-btn-text {\n  display: inline-block;\n  vertical-align: baseline;\n  width: auto;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  padding: 0;\n  margin: 0;\n}\na.l-btn span span.l-btn-icon-left {\n  padding: 0 0 0 20px;\n  background-position: left center;\n}\na.l-btn span span.l-btn-icon-right {\n  padding: 0 20px 0 0;\n  background-position: right center;\n}\na.l-btn span span span.l-btn-empty {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n  width: 16px;\n}\na:hover.l-btn {\n  background-position: right -24px;\n  outline: none;\n  text-decoration: none;\n}\na:hover.l-btn span.l-btn-left {\n  background-position: 0 bottom;\n}\na:hover.l-btn-plain {\n  padding: 0 5px 0 0;\n}\na:hover.l-btn-disabled {\n  background-position: right 0;\n}\na:hover.l-btn-disabled span.l-btn-left {\n  background-position: 0 -48px;\n}\na.l-btn .l-btn-focus {\n  outline: #0000FF dotted thin;\n}\na.l-btn {\n  color: #404040;\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background: #c75252;\n  background-repeat: repeat-x;\n  border: 1px solid #c75252;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn span.l-btn-left {\n  background-image: url('images/linkbutton_bg.png');\n  background-repeat: no-repeat;\n  background-image: none;\n}\na:hover.l-btn {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  filter: none;\n}\na.l-btn-plain,\na.l-btn-plain span.l-btn-left {\n  background: transparent;\n  border: 0;\n  filter: none;\n}\na:hover.l-btn-plain {\n  background: #fff0e7;\n  color: #404040;\n  border: 1px solid #fff0e7;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\na.l-btn-disabled,\na:hover.l-btn-disabled {\n  color: #404040;\n  filter: alpha(opacity=50);\n  background: #c75252;\n  color: #404040;\n  background: -webkit-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -moz-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: -o-linear-gradient(top,#c75252 0,#c75252 100%);\n  background: linear-gradient(to bottom,#c75252 0,#c75252 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n  filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#c75252,endColorstr=#c75252,GradientType=0);\n}\na.l-btn-plain-disabled,\na:hover.l-btn-plain-disabled {\n  background: transparent;\n  filter: alpha(opacity=50);\n}\na.l-btn-selected,\na:hover.l-btn-selected {\n  background-position: right -24px;\n  background: #f0e1e3;\n  filter: none;\n}\na.l-btn-selected span.l-btn-left,\na:hover.l-btn-selected span.l-btn-left {\n  background-position: 0 bottom;\n  background-image: none;\n}\na.l-btn-plain-selected,\na:hover.l-btn-plain-selected {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/menu.css",
    "content": ".menu {\n  position: absolute;\n  margin: 0;\n  padding: 2px;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.menu-item {\n  position: relative;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.menu-text {\n  height: 20px;\n  line-height: 20px;\n  float: left;\n  padding-left: 28px;\n}\n.menu-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 2px;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-rightarrow {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  right: 0;\n  top: 50%;\n  margin-top: -8px;\n}\n.menu-line {\n  position: absolute;\n  left: 26px;\n  top: 0;\n  height: 2000px;\n  font-size: 1px;\n}\n.menu-sep {\n  margin: 3px 0px 3px 25px;\n  font-size: 1px;\n}\n.menu-active {\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.menu-item-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default;\n}\n.menu-text,\n.menu-text span {\n  font-size: 12px;\n}\n.menu-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.menu-rightarrow {\n  background: url('images/menu_arrows.png') no-repeat -32px center;\n}\n.menu-line {\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n}\n.menu-sep {\n  border-top: 1px solid #ddd;\n  border-bottom: 1px solid #fff;\n}\n.menu {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.menu-content {\n  background: #fafafa;\n}\n.menu-item {\n  border-color: transparent;\n  _border-color: #fafafa;\n}\n.menu-active {\n  border-color: #fff0e7;\n  color: #404040;\n  background: #fff0e7;\n}\n.menu-active-disabled {\n  border-color: transparent;\n  background: transparent;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/menubutton.css",
    "content": ".m-btn-downarrow {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  line-height: 16px;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.m-btn-active {\n  background-position: bottom right;\n}\na.m-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.m-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.m-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n}\na.m-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/messager.css",
    "content": ".messager-body {\n  padding: 10px;\n  overflow: hidden;\n}\n.messager-button {\n  text-align: center;\n  padding-top: 10px;\n}\n.messager-icon {\n  float: left;\n  width: 32px;\n  height: 32px;\n  margin: 0 10px 10px 0;\n}\n.messager-error {\n  background: url('images/messager_icons.png') no-repeat scroll -64px 0;\n}\n.messager-info {\n  background: url('images/messager_icons.png') no-repeat scroll 0 0;\n}\n.messager-question {\n  background: url('images/messager_icons.png') no-repeat scroll -32px 0;\n}\n.messager-warning {\n  background: url('images/messager_icons.png') no-repeat scroll -96px 0;\n}\n.messager-progress {\n  padding: 10px;\n}\n.messager-p-msg {\n  margin-bottom: 5px;\n}\n.messager-body .messager-input {\n  width: 100%;\n  padding: 1px 0;\n  border: 1px solid #f6c1bc;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/pagination.css",
    "content": ".pagination {\n  zoom: 1;\n}\n.pagination table {\n  float: left;\n  height: 30px;\n}\n.pagination td {\n  border: 0;\n}\n.pagination-btn-separator {\n  float: left;\n  height: 24px;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #fff;\n  margin: 3px 1px;\n}\n.pagination .pagination-num {\n  border-width: 1px;\n  border-style: solid;\n  margin: 0 2px;\n  padding: 2px;\n  width: 2em;\n  height: auto;\n}\n.pagination-page-list {\n  margin: 0px 6px;\n  padding: 1px 2px;\n  width: auto;\n  height: auto;\n  border-width: 1px;\n  border-style: solid;\n}\n.pagination-info {\n  float: right;\n  margin: 0 6px 0 0;\n  padding: 0;\n  height: 30px;\n  line-height: 30px;\n  font-size: 12px;\n}\n.pagination span {\n  font-size: 12px;\n}\n.pagination-first {\n  background: url('images/pagination_icons.png') no-repeat 0 0;\n}\n.pagination-prev {\n  background: url('images/pagination_icons.png') no-repeat -16px 0;\n}\n.pagination-next {\n  background: url('images/pagination_icons.png') no-repeat -32px 0;\n}\n.pagination-last {\n  background: url('images/pagination_icons.png') no-repeat -48px 0;\n}\n.pagination-load {\n  background: url('images/pagination_icons.png') no-repeat -64px 0;\n}\n.pagination-loading {\n  background: url('images/loading.gif') no-repeat;\n}\n.pagination-page-list,\n.pagination .pagination-num {\n  border-color: #f6c1bc;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/panel.css",
    "content": ".panel {\n  overflow: hidden;\n  text-align: left;\n}\n.panel-header,\n.panel-body {\n  border-width: 1px;\n  border-style: solid;\n}\n.panel-header {\n  padding: 5px;\n  position: relative;\n}\n.panel-title {\n  background: url('images/blank.gif') no-repeat;\n}\n.panel-header-noborder {\n  border-width: 0 0 1px 0;\n}\n.panel-body {\n  overflow: auto;\n  border-top-width: 0px;\n}\n.panel-body-noheader {\n  border-top-width: 1px;\n}\n.panel-body-noborder {\n  border-width: 0px;\n}\n.panel-with-icon {\n  padding-left: 18px;\n}\n.panel-icon,\n.panel-tool {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  height: 16px;\n  overflow: hidden;\n}\n.panel-icon {\n  left: 5px;\n  width: 16px;\n}\n.panel-tool {\n  right: 5px;\n  width: auto;\n}\n.panel-tool a {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  margin: 0 0 0 2px;\n  vertical-align: top;\n}\n.panel-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background-color: #fff0e7;\n  -moz-border-radius: -2px -2px -2px -2px;\n  -webkit-border-radius: -2px -2px -2px -2px;\n  border-radius: -2px -2px -2px -2px;\n}\n.panel-loading {\n  padding: 11px 0px 10px 30px;\n}\n.panel-noscroll {\n  overflow: hidden;\n}\n.panel-fit,\n.panel-fit body {\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n}\n.panel-loading {\n  background: url('images/loading.gif') no-repeat 10px 10px;\n}\n.panel-tool-close {\n  background: url('images/panel_tools.png') no-repeat -16px 0px;\n}\n.panel-tool-min {\n  background: url('images/panel_tools.png') no-repeat 0px 0px;\n}\n.panel-tool-max {\n  background: url('images/panel_tools.png') no-repeat 0px -16px;\n}\n.panel-tool-restore {\n  background: url('images/panel_tools.png') no-repeat -16px -16px;\n}\n.panel-tool-collapse {\n  background: url('images/panel_tools.png') no-repeat -32px 0;\n}\n.panel-tool-expand {\n  background: url('images/panel_tools.png') no-repeat -32px -16px;\n}\n.panel-header,\n.panel-body {\n  border-color: #f6c1bc;\n}\n.panel-header {\n  background-color: #f0e1e3;\n}\n.panel-body {\n  background-color: #fafafa;\n  color: #404040;\n  font-size: 12px;\n}\n.panel-title {\n  font-size: 12px;\n  font-weight: bold;\n  color: #404040;\n  height: 16px;\n  line-height: 16px;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/progressbar.css",
    "content": ".progressbar {\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n  overflow: hidden;\n}\n.progressbar-text {\n  text-align: center;\n  position: absolute;\n}\n.progressbar-value {\n  position: relative;\n  overflow: hidden;\n  width: 0;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.progressbar {\n  border-color: #f6c1bc;\n}\n.progressbar-text {\n  color: #404040;\n  font-size: 12px;\n}\n.progressbar-value .progressbar-text {\n  background-color: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/propertygrid.css",
    "content": ".propertygrid .datagrid-view1 .datagrid-body td {\n  padding-bottom: 1px;\n  border-width: 0 1px 0 0;\n}\n.propertygrid .datagrid-group {\n  height: 21px;\n  overflow: hidden;\n  border-width: 0 0 1px 0;\n  border-style: solid;\n}\n.propertygrid .datagrid-group span {\n  font-weight: bold;\n}\n.propertygrid .datagrid-view1 .datagrid-body td {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-view1 .datagrid-group {\n  border-color: #f0e1e3;\n}\n.propertygrid .datagrid-view2 .datagrid-group {\n  border-color: #dedede;\n}\n.propertygrid .datagrid-group,\n.propertygrid .datagrid-view1 .datagrid-body,\n.propertygrid .datagrid-view1 .datagrid-row-over,\n.propertygrid .datagrid-view1 .datagrid-row-selected {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/searchbox.css",
    "content": ".searchbox {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n}\n.searchbox .searchbox-text {\n  font-size: 12px;\n  border: 0;\n  margin: 0;\n  padding: 0;\n  line-height: 20px;\n  height: 20px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.searchbox .searchbox-prompt {\n  font-size: 12px;\n  color: #ccc;\n}\n.searchbox-button {\n  width: 18px;\n  height: 20px;\n  overflow: hidden;\n  display: inline-block;\n  vertical-align: top;\n  cursor: pointer;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox-button-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.l-btn-plain {\n  height: 20px;\n  border: 0;\n  padding: 0 6px 0 0;\n  vertical-align: top;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.searchbox a.l-btn .l-btn-left {\n  padding: 2px 0 2px 4px;\n}\n.searchbox a.l-btn-plain:hover {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  border: 0;\n  padding: 0 6px 0 0;\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.searchbox a.m-btn-plain-active {\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.searchbox-button {\n  background: url('images/searchbox_button.png') no-repeat center center;\n}\n.searchbox {\n  border-color: #f6c1bc;\n  background-color: #fff;\n}\n.searchbox a.l-btn-plain {\n  background: #f0e1e3;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/slider.css",
    "content": ".slider-disabled {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.slider-h {\n  height: 22px;\n}\n.slider-v {\n  width: 22px;\n}\n.slider-inner {\n  position: relative;\n  height: 6px;\n  top: 7px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 0px;\n}\n.slider-handle {\n  position: absolute;\n  display: block;\n  outline: none;\n  width: 20px;\n  height: 20px;\n  top: -7px;\n  margin-left: -10px;\n}\n.slider-tip {\n  position: absolute;\n  display: inline-block;\n  line-height: 12px;\n  font-size: 12px;\n  white-space: nowrap;\n  top: -22px;\n}\n.slider-rule {\n  position: relative;\n  top: 15px;\n}\n.slider-rule span {\n  position: absolute;\n  display: inline-block;\n  font-size: 0;\n  height: 5px;\n  border-width: 0 0 0 1px;\n  border-style: solid;\n}\n.slider-rulelabel {\n  position: relative;\n  top: 20px;\n}\n.slider-rulelabel span {\n  position: absolute;\n  display: inline-block;\n  font-size: 12px;\n}\n.slider-v .slider-inner {\n  width: 6px;\n  left: 7px;\n  top: 0;\n  float: left;\n}\n.slider-v .slider-handle {\n  left: 3px;\n  margin-top: -10px;\n}\n.slider-v .slider-tip {\n  left: -10px;\n  margin-top: -6px;\n}\n.slider-v .slider-rule {\n  float: left;\n  top: 0;\n  left: 16px;\n}\n.slider-v .slider-rule span {\n  width: 5px;\n  height: 'auto';\n  border-left: 0;\n  border-width: 1px 0 0 0;\n  border-style: solid;\n}\n.slider-v .slider-rulelabel {\n  float: left;\n  top: 0;\n  left: 23px;\n}\n.slider-handle {\n  background: url('images/slider_handle.png') no-repeat;\n}\n.slider-inner {\n  border-color: #f6c1bc;\n  background: #f0e1e3;\n}\n.slider-rule span {\n  border-color: #f6c1bc;\n}\n.slider-rulelabel span {\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/spinner.css",
    "content": ".spinner {\n  display: inline-block;\n  white-space: nowrap;\n  margin: 0;\n  padding: 0;\n  border-width: 1px;\n  border-style: solid;\n  overflow: hidden;\n  vertical-align: middle;\n}\n.spinner .spinner-text {\n  font-size: 12px;\n  border: 0px;\n  line-height: 20px;\n  height: 20px;\n  margin: 0;\n  padding: 0 2px;\n  *margin-top: -1px;\n  *height: 18px;\n  *line-height: 18px;\n  _height: 18px;\n  _line-height: 18px;\n  vertical-align: baseline;\n}\n.spinner-arrow {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: top;\n  margin: 0;\n  padding: 0;\n}\n.spinner-arrow-up,\n.spinner-arrow-down {\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n  display: block;\n  font-size: 1px;\n  width: 18px;\n  height: 10px;\n}\n.spinner-arrow-hover {\n  opacity: 1.0;\n  filter: alpha(opacity=100);\n}\n.spinner-arrow-up {\n  background: url('images/spinner_arrows.png') no-repeat 1px center;\n}\n.spinner-arrow-down {\n  background: url('images/spinner_arrows.png') no-repeat -15px center;\n}\n.spinner {\n  border-color: #f6c1bc;\n}\n.spinner-arrow {\n  background-color: #f0e1e3;\n}\n.spinner-arrow-hover {\n  background-color: #fff0e7;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/splitbutton.css",
    "content": ".s-btn-downarrow {\n  display: inline-block;\n  margin: 0 0 0 4px;\n  padding: 0 0 0 1px;\n  width: 14px;\n  height: 16px;\n  line-height: 16px;\n  border-width: 0;\n  border-style: solid;\n  font-size: 12px;\n  _vertical-align: middle;\n}\na.s-btn-active {\n  background-position: bottom right;\n}\na.s-btn-active span.l-btn-left {\n  background-position: bottom left;\n}\na.s-btn-plain-active {\n  background: transparent;\n  padding: 0 5px 0 0;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.s-btn-downarrow {\n  background: url('images/menu_arrows.png') no-repeat 2px center;\n  border-color: #c75252;\n}\na:hover.l-btn .s-btn-downarrow,\na.s-btn-active .s-btn-downarrow,\na.s-btn-plain-active .s-btn-downarrow {\n  background-position: 1px center;\n  padding: 0;\n  border-width: 0 0 0 1px;\n}\na.s-btn-plain-active {\n  border-color: #fff0e7;\n  background-color: #fff0e7;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tabs.css",
    "content": ".tabs-container {\n  overflow: hidden;\n}\n.tabs-header {\n  border-width: 1px;\n  border-style: solid;\n  border-bottom-width: 0;\n  position: relative;\n  padding: 0;\n  padding-top: 2px;\n  overflow: hidden;\n}\n.tabs-header-plain {\n  border: 0;\n  background: transparent;\n}\n.tabs-scroller-left,\n.tabs-scroller-right {\n  position: absolute;\n  top: auto;\n  bottom: 0;\n  width: 18px;\n  height: 28px !important;\n  height: 30px;\n  font-size: 1px;\n  display: none;\n  cursor: pointer;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-scroller-left {\n  left: 0;\n}\n.tabs-scroller-right {\n  right: 0;\n}\n.tabs-header-plain .tabs-scroller-left,\n.tabs-header-plain .tabs-scroller-right {\n  height: 25px !important;\n  height: 27px;\n}\n.tabs-tool {\n  position: absolute;\n  bottom: 0;\n  padding: 1px;\n  overflow: hidden;\n  border-width: 1px;\n  border-style: solid;\n}\n.tabs-header-plain .tabs-tool {\n  padding: 0 1px;\n}\n.tabs-wrap {\n  position: relative;\n  left: 0;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.tabs-scrolling {\n  margin-left: 18px;\n  margin-right: 18px;\n}\n.tabs-disabled {\n  opacity: 0.3;\n  filter: alpha(opacity=30);\n}\n.tabs {\n  list-style-type: none;\n  height: 26px;\n  margin: 0px;\n  padding: 0px;\n  padding-left: 4px;\n  width: 5000px;\n  border-style: solid;\n  border-width: 0 0 1px 0;\n}\n.tabs li {\n  float: left;\n  display: inline-block;\n  margin: 0 4px -1px 0;\n  padding: 0;\n  position: relative;\n  border: 0;\n}\n.tabs li a.tabs-inner {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0 10px;\n  height: 25px;\n  line-height: 25px;\n  text-align: center;\n  white-space: nowrap;\n  border-width: 1px;\n  border-style: solid;\n  -moz-border-radius: 0px 0px 0 0;\n  -webkit-border-radius: 0px 0px 0 0;\n  border-radius: 0px 0px 0 0;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  font-weight: bold;\n  outline: none;\n}\n.tabs li.tabs-selected a:hover.tabs-inner {\n  cursor: default;\n  pointer: default;\n}\n.tabs li a.tabs-close,\n.tabs-p-tool {\n  position: absolute;\n  font-size: 1px;\n  display: block;\n  height: 12px;\n  padding: 0;\n  top: 50%;\n  margin-top: -6px;\n  overflow: hidden;\n}\n.tabs li a.tabs-close {\n  width: 12px;\n  right: 5px;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs-p-tool {\n  right: 16px;\n}\n.tabs-p-tool a {\n  display: inline-block;\n  font-size: 1px;\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  opacity: 0.6;\n  filter: alpha(opacity=60);\n}\n.tabs li a:hover.tabs-close,\n.tabs-p-tool a:hover {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  cursor: hand;\n  cursor: pointer;\n}\n.tabs-with-icon {\n  padding-left: 18px;\n}\n.tabs-icon {\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  left: 10px;\n  top: 50%;\n  margin-top: -8px;\n}\n.tabs-title {\n  font-size: 12px;\n}\n.tabs-closable {\n  padding-right: 8px;\n}\n.tabs-panels {\n  margin: 0px;\n  padding: 0px;\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0;\n  overflow: hidden;\n}\n.tabs-header-bottom {\n  border-width: 0 1px 1px 1px;\n  padding: 0 0 2px 0;\n}\n.tabs-header-bottom .tabs {\n  border-width: 1px 0 0 0;\n}\n.tabs-header-bottom .tabs li {\n  margin: -1px 4px 0 0;\n}\n.tabs-header-bottom .tabs li a.tabs-inner {\n  -moz-border-radius: 0 0 0px 0px;\n  -webkit-border-radius: 0 0 0px 0px;\n  border-radius: 0 0 0px 0px;\n}\n.tabs-header-bottom .tabs-tool {\n  top: 0;\n}\n.tabs-header-bottom .tabs-scroller-left,\n.tabs-header-bottom .tabs-scroller-right {\n  top: 0;\n  bottom: auto;\n}\n.tabs-panels-top {\n  border-width: 1px 1px 0 1px;\n}\n.tabs-header-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n  padding: 0;\n}\n.tabs-header-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n  padding: 0;\n}\n.tabs-header-left .tabs-wrap,\n.tabs-header-right .tabs-wrap {\n  height: 100%;\n}\n.tabs-header-left .tabs {\n  height: 100%;\n  padding: 4px 0 0 4px;\n  border-width: 0 1px 0 0;\n}\n.tabs-header-right .tabs {\n  height: 100%;\n  padding: 4px 4px 0 0;\n  border-width: 0 0 0 1px;\n}\n.tabs-header-left .tabs li,\n.tabs-header-right .tabs li {\n  display: block;\n  width: 100%;\n  position: relative;\n}\n.tabs-header-left .tabs li {\n  left: auto;\n  right: 0;\n  margin: 0 -1px 4px 0;\n  float: right;\n}\n.tabs-header-right .tabs li {\n  left: 0;\n  right: auto;\n  margin: 0 0 4px -1px;\n  float: left;\n}\n.tabs-header-left .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0px 0 0 0px;\n  -webkit-border-radius: 0px 0 0 0px;\n  border-radius: 0px 0 0 0px;\n}\n.tabs-header-right .tabs li a.tabs-inner {\n  display: block;\n  text-align: left;\n  -moz-border-radius: 0 0px 0px 0;\n  -webkit-border-radius: 0 0px 0px 0;\n  border-radius: 0 0px 0px 0;\n}\n.tabs-panels-right {\n  float: right;\n  border-width: 1px 1px 1px 0;\n}\n.tabs-panels-left {\n  float: left;\n  border-width: 1px 0 1px 1px;\n}\n.tabs-header-noborder,\n.tabs-panels-noborder {\n  border: 0px;\n}\n.tabs-header-plain {\n  border: 0px;\n  background: transparent;\n}\n.tabs-scroller-left {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat 1px center;\n}\n.tabs-scroller-right {\n  background: #f0e1e3 url('images/tabs_icons.png') no-repeat -15px center;\n}\n.tabs li a.tabs-close {\n  background: url('images/tabs_icons.png') no-repeat -34px center;\n}\n.tabs li a.tabs-inner:hover {\n  background: #fff0e7;\n  color: #404040;\n  filter: none;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  background-color: #fafafa;\n  color: #404040;\n}\n.tabs li a.tabs-inner {\n  color: #404040;\n  background-color: #f0e1e3;\n}\n.tabs-header,\n.tabs-tool {\n  background-color: #f0e1e3;\n}\n.tabs-header-plain {\n  background: transparent;\n}\n.tabs-header,\n.tabs-scroller-left,\n.tabs-scroller-right,\n.tabs-tool,\n.tabs,\n.tabs-panels,\n.tabs li a.tabs-inner,\n.tabs li.tabs-selected a.tabs-inner,\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner,\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-color: #f6c1bc;\n}\n.tabs-p-tool a:hover,\n.tabs li a:hover.tabs-close,\n.tabs-scroller-over {\n  background-color: #fff0e7;\n}\n.tabs li.tabs-selected a.tabs-inner {\n  border-bottom: 1px solid #fafafa;\n}\n.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner {\n  border-top: 1px solid #fafafa;\n}\n.tabs-header-left .tabs li.tabs-selected a.tabs-inner {\n  border-right: 1px solid #fafafa;\n}\n.tabs-header-right .tabs li.tabs-selected a.tabs-inner {\n  border-left: 1px solid #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tooltip.css",
    "content": ".tooltip {\n  position: absolute;\n  display: none;\n  z-index: 9900000;\n  outline: none;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n  border-radius: 5px;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.tooltip-content {\n  font-size: 12px;\n}\n.tooltip-arrow-outer,\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  line-height: 0;\n  font-size: 0;\n  border-style: solid;\n  border-width: 6px;\n  border-color: transparent;\n  _border-color: tomato;\n  _filter: chroma(color=tomato);\n}\n.tooltip-right .tooltip-arrow-outer {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -13px;\n}\n.tooltip-right .tooltip-arrow {\n  left: 0;\n  top: 50%;\n  margin: -6px 0 0 -12px;\n}\n.tooltip-left .tooltip-arrow-outer {\n  right: 0;\n  top: 50%;\n  margin: -6px -13px 0 0;\n}\n.tooltip-left .tooltip-arrow {\n  right: 0;\n  top: 50%;\n  margin: -6px -12px 0 0;\n}\n.tooltip-top .tooltip-arrow-outer {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -13px -6px;\n}\n.tooltip-top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin: 0 0 -12px -6px;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  top: 0;\n  left: 50%;\n  margin: -13px 0 0 -6px;\n}\n.tooltip-bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin: -12px 0 0 -6px;\n}\n.tooltip {\n  background-color: #fafafa;\n  border-color: #f6c1bc;\n  color: #404040;\n}\n.tooltip-right .tooltip-arrow-outer {\n  border-right-color: #f6c1bc;\n}\n.tooltip-right .tooltip-arrow {\n  border-right-color: #fafafa;\n}\n.tooltip-left .tooltip-arrow-outer {\n  border-left-color: #f6c1bc;\n}\n.tooltip-left .tooltip-arrow {\n  border-left-color: #fafafa;\n}\n.tooltip-top .tooltip-arrow-outer {\n  border-top-color: #f6c1bc;\n}\n.tooltip-top .tooltip-arrow {\n  border-top-color: #fafafa;\n}\n.tooltip-bottom .tooltip-arrow-outer {\n  border-bottom-color: #f6c1bc;\n}\n.tooltip-bottom .tooltip-arrow {\n  border-bottom-color: #fafafa;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/tree.css",
    "content": ".tree {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n.tree li {\n  white-space: nowrap;\n}\n.tree li ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.tree-node {\n  height: 18px;\n  white-space: nowrap;\n  cursor: pointer;\n}\n.tree-hit {\n  cursor: pointer;\n}\n.tree-expanded,\n.tree-collapsed,\n.tree-folder,\n.tree-file,\n.tree-checkbox,\n.tree-indent {\n  display: inline-block;\n  width: 16px;\n  height: 18px;\n  vertical-align: top;\n  overflow: hidden;\n}\n.tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -18px 0px;\n}\n.tree-expanded-hover {\n  background: url('images/tree_icons.png') no-repeat -50px 0px;\n}\n.tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat 0px 0px;\n}\n.tree-collapsed-hover {\n  background: url('images/tree_icons.png') no-repeat -32px 0px;\n}\n.tree-lines .tree-expanded,\n.tree-lines .tree-root-first .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -144px 0;\n}\n.tree-lines .tree-collapsed,\n.tree-lines .tree-root-first .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -128px 0;\n}\n.tree-lines .tree-node-last .tree-expanded,\n.tree-lines .tree-root-one .tree-expanded {\n  background: url('images/tree_icons.png') no-repeat -80px 0;\n}\n.tree-lines .tree-node-last .tree-collapsed,\n.tree-lines .tree-root-one .tree-collapsed {\n  background: url('images/tree_icons.png') no-repeat -64px 0;\n}\n.tree-line {\n  background: url('images/tree_icons.png') no-repeat -176px 0;\n}\n.tree-join {\n  background: url('images/tree_icons.png') no-repeat -192px 0;\n}\n.tree-joinbottom {\n  background: url('images/tree_icons.png') no-repeat -160px 0;\n}\n.tree-folder {\n  background: url('images/tree_icons.png') no-repeat -208px 0;\n}\n.tree-folder-open {\n  background: url('images/tree_icons.png') no-repeat -224px 0;\n}\n.tree-file {\n  background: url('images/tree_icons.png') no-repeat -240px 0;\n}\n.tree-loading {\n  background: url('images/loading.gif') no-repeat center center;\n}\n.tree-checkbox0 {\n  background: url('images/tree_icons.png') no-repeat -208px -18px;\n}\n.tree-checkbox1 {\n  background: url('images/tree_icons.png') no-repeat -224px -18px;\n}\n.tree-checkbox2 {\n  background: url('images/tree_icons.png') no-repeat -240px -18px;\n}\n.tree-title {\n  font-size: 12px;\n  display: inline-block;\n  text-decoration: none;\n  vertical-align: top;\n  white-space: nowrap;\n  padding: 0 2px;\n  height: 18px;\n  line-height: 18px;\n}\n.tree-node-proxy {\n  font-size: 12px;\n  line-height: 20px;\n  padding: 0 2px 0 20px;\n  border-width: 1px;\n  border-style: solid;\n  z-index: 9900000;\n}\n.tree-dnd-icon {\n  display: inline-block;\n  position: absolute;\n  width: 16px;\n  height: 18px;\n  left: 2px;\n  top: 50%;\n  margin-top: -9px;\n}\n.tree-dnd-yes {\n  background: url('images/tree_icons.png') no-repeat -256px 0;\n}\n.tree-dnd-no {\n  background: url('images/tree_icons.png') no-repeat -256px -18px;\n}\n.tree-node-top {\n  border-top: 1px dotted red;\n}\n.tree-node-bottom {\n  border-bottom: 1px dotted red;\n}\n.tree-node-append .tree-title {\n  border: 1px dotted red;\n}\n.tree-editor {\n  border: 1px solid #ccc;\n  font-size: 12px;\n  height: 14px !important;\n  height: 18px;\n  line-height: 14px;\n  padding: 1px 2px;\n  width: 80px;\n  position: absolute;\n  top: 0;\n}\n.tree-node-proxy {\n  background-color: #fafafa;\n  color: #404040;\n  border-color: #f6c1bc;\n}\n.tree-node-hover {\n  background: #fff0e7;\n  color: #404040;\n}\n.tree-node-selected {\n  background: #f09090;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/validatebox.css",
    "content": ".validatebox-invalid {\n  background-image: url('images/validatebox_warning.png');\n  background-repeat: no-repeat;\n  background-position: right center;\n  border-color: #ffa8a8;\n  background-color: #fff3f3;\n  color: #404040;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/easyui1.3.3/themes/metro-red/window.css",
    "content": ".window {\n  overflow: hidden;\n  padding: 5px;\n  border-width: 1px;\n  border-style: solid;\n}\n.window .window-header {\n  background: transparent;\n  padding: 0px 0px 6px 0px;\n}\n.window .window-body {\n  border-width: 1px;\n  border-style: solid;\n  border-top-width: 0px;\n}\n.window .window-body-noheader {\n  border-top-width: 1px;\n}\n.window .window-header .panel-icon,\n.window .window-header .panel-tool {\n  top: 50%;\n  margin-top: -11px;\n}\n.window .window-header .panel-icon {\n  left: 1px;\n}\n.window .window-header .panel-tool {\n  right: 1px;\n}\n.window .window-header .panel-with-icon {\n  padding-left: 18px;\n}\n.window-proxy {\n  position: absolute;\n  overflow: hidden;\n}\n.window-proxy-mask {\n  position: absolute;\n  filter: alpha(opacity=5);\n  opacity: 0.05;\n}\n.window-mask {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  filter: alpha(opacity=40);\n  opacity: 0.40;\n  font-size: 1px;\n  *zoom: 1;\n  overflow: hidden;\n}\n.window,\n.window-shadow {\n  position: absolute;\n  -moz-border-radius: 0px 0px 0px 0px;\n  -webkit-border-radius: 0px 0px 0px 0px;\n  border-radius: 0px 0px 0px 0px;\n}\n.window-shadow {\n  background: #fafafa;\n  -moz-box-shadow: 2px 2px 3px #fafafa;\n  -webkit-box-shadow: 2px 2px 3px #fafafa;\n  box-shadow: 2px 2px 3px #fafafa;\n  filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2);\n}\n.window,\n.window .window-body {\n  border-color: #f6c1bc;\n}\n.window {\n  background-color: #f0e1e3;\n}\n.window-proxy {\n  border: 1px dashed #f6c1bc;\n}\n.window-proxy-mask,\n.window-mask {\n  background: #eee;\n}\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/extEasyUI.js",
    "content": "/**\n * 使panel和datagrid在加载时提示\n * \n * @requires jQuery,EasyUI\n * \n */\n$.fn.panel.defaults.loadingMessage = '加载中....';\n$.fn.datagrid.defaults.loadMsg = '加载中....';\n\n/**\n * @requires jQuery,EasyUI\n * \n * panel关闭时回收内存，主要用于layout使用iframe嵌入网页时的内存泄漏问题\n */\n$.fn.panel.defaults.onBeforeDestroy = function() {\n\tvar frame = $('iframe', this);\n\ttry {\n\t\tif (frame.length > 0) {\n\t\t\tfor ( var i = 0; i < frame.length; i++) {\n\t\t\t\tframe[i].src = '';\n\t\t\t\tframe[i].contentWindow.document.write('');\n\t\t\t\tframe[i].contentWindow.close();\n\t\t\t}\n\t\t\tframe.remove();\n\t\t\tif (navigator.userAgent.indexOf(\"MSIE\") > 0) {// IE特有回收内存方法\n\t\t\t\ttry {\n\t\t\t\t\tCollectGarbage();\n\t\t\t\t} catch (e) {\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t}\n};\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 防止panel/window/dialog组件超出浏览器边界\n * @param left\n * @param top\n */\nvar easyuiPanelOnMove = function(left, top) {\n\tvar l = left;\n\tvar t = top;\n\tif (l < 1) {\n\t\tl = 1;\n\t}\n\tif (t < 1) {\n\t\tt = 1;\n\t}\n\tvar width = parseInt($(this).parent().css('width')) + 14;\n\tvar height = parseInt($(this).parent().css('height')) + 14;\n\tvar right = l + width;\n\tvar buttom = t + height;\n\tvar browserWidth = $(window).width();\n\tvar browserHeight = $(window).height();\n\tif (right > browserWidth) {\n\t\tl = browserWidth - width;\n\t}\n\tif (buttom > browserHeight) {\n\t\tt = browserHeight - height;\n\t}\n\t$(this).parent().css({/* 修正面板位置 */\n\t\tleft : l,\n\t\ttop : t\n\t});\n};\n$.fn.dialog.defaults.onMove = easyuiPanelOnMove;\n$.fn.window.defaults.onMove = easyuiPanelOnMove;\n$.fn.panel.defaults.onMove = easyuiPanelOnMove;\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 通用错误提示\n * \n * 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作\n */\nvar easyuiErrorFunction = function(XMLHttpRequest) {\n\tparent.$.messager.alert('错误', XMLHttpRequest.responseText);\n};\n$.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.tree.defaults.onLoadError = easyuiErrorFunction;\n$.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;\n$.fn.combobox.defaults.onLoadError = easyuiErrorFunction;\n$.fn.form.defaults.onLoadError = easyuiErrorFunction;\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 为datagrid、treegrid增加表头菜单，用于显示或隐藏列，注意：冻结列不在此菜单中\n */\nvar createGridHeaderContextMenu = function(e, field) {\n\te.preventDefault();\n\tvar grid = $(this);/* grid本身 */\n\tvar headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */\n\tif (!headerContextMenu) {\n\t\tvar tmenu = $('<div style=\"width:100px;\"></div>').appendTo('body');\n\t\tvar fields = grid.datagrid('getColumnFields');\n\t\tfor ( var i = 0; i < fields.length; i++) {\n\t\t\tvar fildOption = grid.datagrid('getColumnOption', fields[i]);\n\t\t\tif (!fildOption.hidden) {\n\t\t\t\t$('<div iconCls=\"tick\" field=\"' + fields[i] + '\"/>').html(fildOption.title).appendTo(tmenu);\n\t\t\t} else {\n\t\t\t\t$('<div iconCls=\"bullet_blue\" field=\"' + fields[i] + '\"/>').html(fildOption.title).appendTo(tmenu);\n\t\t\t}\n\t\t}\n\t\theaderContextMenu = this.headerContextMenu = tmenu.menu({\n\t\t\tonClick : function(item) {\n\t\t\t\tvar field = $(item.target).attr('field');\n\t\t\t\tif (item.iconCls == 'tick') {\n\t\t\t\t\tgrid.datagrid('hideColumn', field);\n\t\t\t\t\t$(this).menu('setIcon', {\n\t\t\t\t\t\ttarget : item.target,\n\t\t\t\t\t\ticonCls : 'bullet_blue'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tgrid.datagrid('showColumn', field);\n\t\t\t\t\t$(this).menu('setIcon', {\n\t\t\t\t\t\ttarget : item.target,\n\t\t\t\t\t\ticonCls : 'tick'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\theaderContextMenu.menu('show', {\n\t\tleft : e.pageX,\n\t\ttop : e.pageY\n\t});\n};\n$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;\n$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;\n\n/**\n * grid tooltip参数\n * \n *  \n */\nvar gridTooltipOptions = {\n\ttooltip : function(jq, fields) {\n\t\treturn jq.each(function() {\n\t\t\tvar panel = $(this).datagrid('getPanel');\n\t\t\tif (fields && typeof fields == 'object' && fields.sort) {\n\t\t\t\t$.each(fields, function() {\n\t\t\t\t\tvar field = this;\n\t\t\t\t\tbindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbindEvent($(\".datagrid-body .datagrid-cell\", panel));\n\t\t\t}\n\t\t});\n\n\t\tfunction bindEvent(jqs) {\n\t\t\tjqs.mouseover(function() {\n\t\t\t\tvar content = $(this).text();\n\t\t\t\tif (content.replace(/(^\\s*)|(\\s*$)/g, '').length > 5) {\n\t\t\t\t\t$(this).tooltip({\n\t\t\t\t\t\tcontent : content,\n\t\t\t\t\t\ttrackMouse : true,\n\t\t\t\t\t\tposition : 'bottom',\n\t\t\t\t\t\tonHide : function() {\n\t\t\t\t\t\t\t$(this).tooltip('destroy');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonUpdate : function(p) {\n\t\t\t\t\t\t\tvar tip = $(this).tooltip('tip');\n\t\t\t\t\t\t\tif (parseInt(tip.css('width')) > 500) {\n\t\t\t\t\t\t\t\ttip.css('width', 500);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}).tooltip('show');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\n/**\n * Datagrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+\n * \n * 简单实现，如需高级功能，可以自由修改\n * \n * 使用说明:\n * \n * 在easyui.min.js之后导入本js\n * \n * 代码案例:\n * \n * $(\"#dg\").datagrid('tooltip'); 所有列\n * \n * $(\"#dg\").datagrid('tooltip',['productid','listprice']); 指定列\n * \n *  \n */\n$.extend($.fn.datagrid.methods, gridTooltipOptions);\n\n/**\n * Treegrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+\n * \n * 简单实现，如需高级功能，可以自由修改\n * \n * 使用说明:\n * \n * 在easyui.min.js之后导入本js\n * \n * 代码案例:\n * \n * $(\"#dg\").treegrid('tooltip'); 所有列\n * \n * $(\"#dg\").treegrid('tooltip',['productid','listprice']); 指定列\n * \n *  \n */\n$.extend($.fn.treegrid.methods, gridTooltipOptions);\n\n/**\n *  \n * \n * @requires jQuery,EasyUI\n * \n * 扩展validatebox，添加验证两次密码功能\n */\n$.extend($.fn.validatebox.defaults.rules, {\n\teqPwd : {\n\t\tvalidator : function(value, param) {\n\t\t\treturn value == $(param[0]).val();\n\t\t},\n\t\tmessage : '密码不一致！'\n\t}\n});\n\n//扩展tree，使其可以获取实心节点\n$.extend($.fn.tree.methods, {\n\tgetCheckedExt : function(jq) {// 获取checked节点(包括实心)\n\t\tvar checked = $(jq).tree(\"getChecked\");\n\t\tvar checkbox2 = $(jq).find(\"span.tree-checkbox2\").parent();\n\t\t$.each(checkbox2, function() {\n\t\t\tvar node = $.extend({}, $.data(this, \"tree-node\"), {\n\t\t\t\ttarget : this\n\t\t\t});\n\t\t\tchecked.push(node);\n\t\t});\n\t\treturn checked;\n\t},\n\tgetSolidExt : function(jq) {// 获取实心节点\n\t\tvar checked = [];\n\t\tvar checkbox2 = $(jq).find(\"span.tree-checkbox2\").parent();\n\t\t$.each(checkbox2, function() {\n\t\t\tvar node = $.extend({}, $.data(this, \"tree-node\"), {\n\t\t\t\ttarget : this\n\t\t\t});\n\t\t\tchecked.push(node);\n\t\t});\n\t\treturn checked;\n\t}\n});\n\n//扩展tree，使其支持平滑数据格式\n$.fn.tree.defaults.loadFilter = function(data, parent) {\n\tvar opt = $(this).data().tree.options;\n\tvar idFiled, textFiled, parentField;\n\tif (opt.parentField) {\n\t\tidFiled = opt.idFiled || 'id';\n\t\ttextFiled = opt.textFiled || 'text';\n\t\tparentField = opt.parentField;\n\t\tvar i, l, treeData = [], tmpMap = [];\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttmpMap[data[i][idFiled]] = data[i];\n\t\t}\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\tif (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {\n\t\t\t\tif (!tmpMap[data[i][parentField]]['children'])\n\t\t\t\t\ttmpMap[data[i][parentField]]['children'] = [];\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttmpMap[data[i][parentField]]['children'].push(data[i]);\n\t\t\t} else {\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttreeData.push(data[i]);\n\t\t\t}\n\t\t}\n\t\treturn treeData;\n\t}\n\treturn data;\n};\n\n// 扩展treegrid，使其支持平滑数据格式\n$.fn.treegrid.defaults.loadFilter = function(data, parentId) {\n\tvar opt = $(this).data().treegrid.options;\n\tvar idFiled, textFiled, parentField;\n\tif (opt.parentField) {\n\t\tidFiled = opt.idFiled || 'id';\n\t\ttextFiled = opt.textFiled || 'text';\n\t\tparentField = opt.parentField;\n\t\tvar i, l, treeData = [], tmpMap = [];\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttmpMap[data[i][idFiled]] = data[i];\n\t\t}\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\tif (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {\n\t\t\t\tif (!tmpMap[data[i][parentField]]['children'])\n\t\t\t\t\ttmpMap[data[i][parentField]]['children'] = [];\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttmpMap[data[i][parentField]]['children'].push(data[i]);\n\t\t\t} else {\n\t\t\t\tdata[i]['text'] = data[i][textFiled];\n\t\t\t\ttreeData.push(data[i]);\n\t\t\t}\n\t\t}\n\t\treturn treeData;\n\t}\n\treturn data;\n};\n\n// 扩展combotree，使其支持平滑数据格式\n$.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter;\n\n/**\n * \n * @requires jQuery,EasyUI\n * \n * 创建一个模式化的dialog\n * \n * @returns $.modalDialog.handler 这个handler代表弹出的dialog句柄\n * \n * @returns $.modalDialog.xxx 这个xxx是可以自己定义名称，主要用在弹窗关闭时，刷新某些对象的操作，可以将xxx这个对象预定义好\n */\n$.modalDialog = function(options) {\n\tif ($.modalDialog.handler == undefined) {// 避免重复弹出\n\t\tvar opts = $.extend({\n\t\t\ttitle : '',\n\t\t\twidth : 840,\n\t\t\theight : 680,\n\t\t\tmodal : true,\n\t\t\tonClose : function() {\n\t\t\t\t$.modalDialog.handler = undefined;\n\t\t\t\t$(this).dialog('destroy');\n\t\t\t},\n\t\t\tonOpen : function() {\n\t\t\t}\n\t\t}, options);\n\t\topts.modal = true;// 强制此dialog为模式化，无视传递过来的modal参数\n\t\treturn $.modalDialog.handler = $('<div/>').dialog(opts);\n\t}\n};\n\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/extJquery.js",
    "content": "/**\n * Create a cookie with the given key and value and other optional parameters.\n * \n * @example $.cookie('the_cookie', 'the_value');\n * @desc Set the value of a cookie.\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\n * @desc Create a cookie with all available options.\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Create a session cookie.\n * @example $.cookie('the_cookie', null);\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain used when the cookie was set.\n * \n * @param String\n *            key The key of the cookie.\n * @param String\n *            value The value of the cookie.\n * @param Object\n *            options An object literal containing key/value pairs to provide optional cookie attributes.\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. If a negative value is specified (e.g. a date in the past), the cookie will be deleted. If set to null or omitted, the cookie will be a session cookie and will not be retained when the the browser exits.\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will require a secure protocol (like HTTPS).\n * @type undefined\n * \n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n * \n * Get the value of a cookie with the given key.\n * \n * @example $.cookie('the_cookie');\n * @desc Get the value of a cookie.\n * \n * @param String\n *            key The key of the cookie.\n * @return The value of the cookie.\n * @type String\n * \n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\n$.cookie = function(key, value, options) {\n\tif (arguments.length > 1 && (value === null || typeof value !== \"object\")) {\n\t\toptions = $.extend({}, options);\n\t\tif (value === null) {\n\t\t\toptions.expires = -1;\n\t\t}\n\t\tif (typeof options.expires === 'number') {\n\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\tt.setDate(t.getDate() + days);\n\t\t}\n\t\treturn (document.cookie = [ encodeURIComponent(key), '=', options.raw ? String(value) : encodeURIComponent(String(value)), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join(''));\n\t}\n\toptions = value || {};\n\tvar result, decode = options.raw ? function(s) {\n\t\treturn s;\n\t} : decodeURIComponent;\n\treturn (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;\n};\n\n/**\n * @author 孙宇\n * \n * @requires jQuery\n * \n * 将form表单元素的值序列化成对象\n * \n * @returns object\n */\n$.serializeObject = function(form) {\n\tvar o = {};\n\t$.each(form.serializeArray(), function(index) {\n\t\tif (o[this['name']]) {\n\t\t\to[this['name']] = o[this['name']] + \",\" + this['value'];\n\t\t} else {\n\t\t\to[this['name']] = this['value'];\n\t\t}\n\t});\n\treturn o;\n};\n\n/**\n * @author 孙宇\n * \n * 增加formatString功能\n * \n * 使用方法：$.formatString('字符串{0}字符串{1}字符串','第一个变量','第二个变量');\n * \n * @returns 格式化后的字符串\n */\n$.formatString = function(str) {\n\tfor ( var i = 0; i < arguments.length - 1; i++) {\n\t\tstr = str.replace(\"{\" + i + \"}\", arguments[i + 1]);\n\t}\n\treturn str;\n};\n\n/**\n * @author 孙宇\n * \n * 接收一个以逗号分割的字符串，返回List，list里每一项都是一个字符串\n * \n * @returns list\n */\n$.stringToList = function(value) {\n\tif (value != undefined && value != '') {\n\t\tvar values = [];\n\t\tvar t = value.split(',');\n\t\tfor ( var i = 0; i < t.length; i++) {\n\t\t\tvalues.push('' + t[i]);/* 避免他将ID当成数字 */\n\t\t}\n\t\treturn values;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/**\n * @author 孙宇\n * \n * @requires jQuery\n * \n * 改变jQuery的AJAX默认属性和方法\n */\n$.ajaxSetup({\n\ttype : 'POST',\n\terror : function(XMLHttpRequest, textStatus, errorThrown) {\n\t\ttry {\n\t\t\tparent.$.messager.progress('close');\n\t\t\tparent.$.messager.alert('错误', XMLHttpRequest.responseText);\n\t\t} catch (e) {\n\t\t\talert(XMLHttpRequest.responseText);\n\t\t}\n\t}\n});\n\n/**\n * @author 孙宇\n * \n * 去字符串空格\n * \n * @returns\n */\nString.prototype.trim = function() {\n\treturn this.replace(/(^\\s*)|(\\s*$)/g, '');\n};\nString.prototype.ltrim = function() {\n\treturn this.replace(/(^\\s*)/g, '');\n};\nString.prototype.rtrim = function() {\n\treturn this.replace(/(\\s*$)/g, '');\n};\n\nfunction progressLoad(){  \n    $(\"<div class=\\\"datagrid-mask\\\" style=\\\"position:absolute;z-index: 9999;\\\"></div>\").css({display:\"block\",width:\"100%\",height:$(window).height()}).appendTo(\"body\");  \n    $(\"<div class=\\\"datagrid-mask-msg\\\" style=\\\"position:absolute;z-index: 9999;\\\"></div>\").html(\"正在处理，请稍候。。。\").appendTo(\"body\").css({display:\"block\",left:($(document.body).outerWidth(true) - 190) / 2,top:($(window).height() - 45) / 2});  \n}\n\nfunction progressClose(){\n\t$(\".datagrid-mask\").remove();  \n\t$(\".datagrid-mask-msg\").remove();\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/lightmvc.js",
    "content": "\n/**\n * @author 鸵鸟\n * \n * @requires jQuery\n * \n * 当页面加载完毕关闭加载进度\n * **/\n$(window).load(function(){\n\t$(\"#loading\").fadeOut();\n});\n\n/**\n * @author 鸵鸟\n * \n * @requires jQuery\n * \n * 防止退格键导致页面回退\n */\n$(document).keydown(function (e) { \n\tvar doPrevent; \n\tif (e.keyCode == 8) { \n\t\tvar d = e.srcElement || e.target; \n\t\tif (d.tagName.toUpperCase() == 'INPUT' || d.tagName.toUpperCase() == 'TEXTAREA') { \n\t\t\tdoPrevent = d.readOnly || d.disabled; \n\t\t}else{\n\t\t\tdoPrevent = true; \n\t\t}\n\t}else{ \n\t\tdoPrevent = false; \n\t}\n\tif (doPrevent) \n\te.preventDefault(); \n});\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_emot/default/config.txt",
    "content": "'default':{name:'Ĭ��',width:24,height:24,line:7,list:{'smile':'΢Ц','tongue':'����ͷ','titter':'͵Ц','laugh':'��Ц','sad':'�ѹ�','wronged':'ί��','fastcry':'������','cry':'��','wail':'����','mad':'����','knock':'�ô�','curse':'����','crazy':'ץ��','angry':'����','ohmy':'����','awkward':'����','panic':'����','shy':'����','cute':'����','envy':'��Ľ','proud':'����','struggle':'�ܶ�','quiet':'����','shutup':'����','doubt':'����','despise':'����','sleep':'˯��','bye':'�ټ�'}}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_emot/ipb/config.txt",
    "content": "ipb:{name:'IPB',width:20,height:25,line:8,list:{smile:'΢Ц',joyful:'����',laugh:'Ц',biglaugh:'��Ц',w00t:'����',wub:'��ϲ',depres:'��ɥ',sad:'����',cry:'����',angry:'����',devil:'ħ��',blush:'����',kiss:'��',surprised:'����',wondering:'�ɻ�',unsure:'��ȷ��',tongue:'����ͷ',cool:'ˣ��',blink:'գ��',whistling:'������',glare:'����',pinch:'��',sideways:'����',sleep:'˯��',sick:'����',ninja:'����',bandit:'ǿ��',police:'����',angel:'��ʹ',magician:'ħ��ʦ',alien:'������',heart:'�Ķ�'}}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_emot/pidgin/config.txt",
    "content": "pidgin:{name:'Pidgin',width:22,height:25,line:8,list:{smile:'΢Ц',cute:'�ɰ�',wink:'գ��',laugh:'��Ц',victory:'ʤ��',sad:'����',cry:'����',angry:'����',shout:'����',curse:'����',devil:'ħ��',blush:'����',tongue:'����ͷ',envy:'��Ľ',cool:'ˣ��',kiss:'��',shocked:'����',sweat:'��',sick:'����',bye:'�ټ�',tired:'��',sleepy:'˯��',question:'����',rose:'õ��',gift:'����',coffee:'����',music:'����',soccer:'����',good:'��ͬ',bad:'����',love:'��',brokenheart:'����'}}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_lang/en.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': 'Default',\n    'none': 'None',\n    'defaultReadTip': 'WYSIWYG Editor,press alt+1-9,toogle to tool area,press tab,select button,press esc,return editor',\n\n    'Cut': 'Cut (Ctrl+X)',\n    'Copy': 'Copy (Ctrl+C)',\n    'Paste': 'Paste (Ctrl+V)',\n    'Pastetext': 'Paste as plain text',\n    'PastetextTip': 'Use Ctrl+V on your keyboard to paste the text.',\n    'Blocktag': 'Block tag',\n    'Fontface': 'Font family',\n    'FontSize': 'Font size',\n    'Bold': 'Bold (Ctrl+B)',\n    'Italic': 'Italic (Ctrl+I)',\n    'Underline': 'Underline (Ctrl+U)',\n    'Strikethrough': 'Strikethrough',\n    'FontColor': 'Select text color',\n    'BackColor': 'Select background color',\n    'SelectAll': 'SelectAll (Ctrl+A)',\n    'Removeformat': 'Remove formatting',\n    'Align': 'Align',\n    'List': 'List',\n    'Outdent': 'Outdent',\n    'Indent': 'Indent',\n    'Link': 'Insert/edit link (Ctrl+L)',\n    'Unlink': 'Unlink',\n    'Anchor': 'Anchor',\n    'Img': 'Insert/edit image',\n    'Flash': 'Insert/edit flash',\n    'Media': 'Insert/edit media',\n    'Hr': 'Horizontal rule',\n    'Emot': 'Emotions',\n    'Table': 'Insert a new table',\n    'Source': 'Edit source code',\n    'WYSIWYG': 'WYSIWYG mode',\n    'Preview': 'Preview',\n    'Print': 'Print (Ctrl+P)',\n    'Fullscreen': 'Toggle fullscreen (Esc)',\n    'About': 'About xhEditor',\n\n    'dialogOk': 'Ok',\n    'dialogCancel': 'Cancel',\n    'cutDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+X) instead.',\n    'copyDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+C) instead.',\n    'pasteDisabledTip': 'Currently not supported by your browser, use keyboard shortcuts(Ctrl+V) instead.',\n    'close': 'Close',\n\n    'listFontname': [{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': 'Paragraph',\n        'h1': 'Heading 1',\n        'h2': 'Heading 2',\n        'h3': 'Heading 3',\n        'h4': 'Heading 4',\n        'h5': 'Heading 5',\n        'h6': 'Heading 6',\n        'pre': 'Preformatted',\n        'address': 'Address'\n    },\n\n    'fontsize': {\n        'x-small': '1',\n        'small': '2',\n        'medium': '3',\n        'large': '4',\n        'x-large': '5',\n        'xx-large': '6',\n        '-webkit-xxx-large': '7'\n    },\n\n    'align': {\n        'justifyleft': 'Align left',\n        'justifycenter': 'Align center',\n        'justifyright': 'Align right',\n        'justifyfull': 'Align full'\n    },\n\n    'list': {\n        'insertOrderedList': 'Ordered list',\n        'insertUnorderedList': 'Unordered list'\n    },\n\n    'link': {\n        'url': 'Link URL: ',\n        'target': 'Target:&nbsp;&nbsp; ',\n        'targetBlank': 'New window',\n        'targetSelf': 'Same window',\n        'targetParent': 'Parent window',\n        'linkText': 'Link Text:',\n        'defText': 'Click here',\n        'anchor': 'Anchor: &nbsp;&nbsp;',\n        'anchorNone': 'None selected'\n    },\n\n    'anchor': {\n        'name': 'Anchor name: '\n    },\n\n    'img': {\n        'url': 'Img URL:&nbsp; ',\n        'alt': 'Alt text: ',\n        'align': 'Alignment:',\n        'alignLeft': 'Left',\n        'alignRight': 'Right',\n        'alignTop': 'Top',\n        'alignMiddle': 'Middle',\n        'alignBaseline': 'Baseline',\n        'alignBottom': 'Bottom',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;',\n        'border': 'Border:&nbsp; &nbsp;',\n        'hspace': 'Hspace:&nbsp;&nbsp;&nbsp;',\n        'vspace': 'Vspace:&nbsp; &nbsp;'\n    },\n\n    'flash': {\n        'url': 'Flash URL:',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;'\n    },\n\n    'media': {\n        'url': 'Media URL:',\n        'width': 'Width:&nbsp; &nbsp; ',\n        'height': 'Height:&nbsp; &nbsp;'\n    },\n\n    'emot.default': {\n        'smile': 'Smile',\n        'tongue': 'Tongue',\n        'titter': 'Titter',\n        'laugh': 'Laugh',\n        'sad': 'Sad',\n        'wronged': 'Wronged',\n        'fastcry': 'Fast cry',\n        'cry': 'Cry',\n        'wail': 'Wail',\n        'mad': 'Mad',\n        'knock': 'Knock',\n        'curse': 'Curse',\n        'crazy': 'Crazy',\n        'angry': 'Angry',\n        'ohmy': 'Oh my',\n        'awkward': 'Awkward',\n        'panic': 'Panic',\n        'shy': 'Shy',\n        'cute': 'Cute',\n        'envy': 'Envy',\n        'proud': 'Proud',\n        'struggle': 'Struggle',\n        'quiet': 'Quiet',\n        'shutup': 'Shut up',\n        'doubt': 'Doubt',\n        'despise': 'Despise',\n        'sleep': 'Sleep',\n        'bye': 'Bye'\n    },\n\n    'table': {\n        'rows': 'Rows:&nbsp; &nbsp; &nbsp; &nbsp;',\n        'columns': 'Cols:&nbsp; &nbsp; &nbsp; &nbsp;',\n        'headers': 'Headers:&nbsp; &nbsp;&nbsp;',\n        'headersRow': 'First row',\n        'headersCol': 'First column',\n        'headersBoth': 'Both',\n        'width': 'Width: &nbsp; &nbsp; &nbsp;',\n        'height': 'Height:&nbsp; &nbsp; &nbsp;',\n        'border': 'Border:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',\n        'cellSpacing': 'CellSpacing:',\n        'cellPadding': 'CellPadding:',\n        'align': 'Align:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',\n        'alignLeft': 'Left',\n        'alignCenter': 'Center',\n        'alignRight': 'Right',\n        'caption': 'Caption:&nbsp;&nbsp;&nbsp;&nbsp;'\n    },\n\n    'upload': {\n        'btnText' : 'Upload',\n        'browserTitle': 'Browser file',\n        'progressTitle': 'File uploading(Esc cancel)',\n        'progressTip': 'File uploading,please wait...',\n        'countLimit': 'Please do not upload more then {$0} files.',\n        'extLimit': 'Upload file extension required for this: {$0}',\n        'typeLimit': 'You can only drag and drop the same type of files.',\n        'apiError': '{$0} upload interface error!\\r\\n\\r\\nreturn error:\\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor is a platform independent WYSWYG XHTML editor based by jQuery,released as Open Source under <a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>.'\n});"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_lang/zh-cn.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': '默认',\n    'none': '无',\n    'defaultReadTip': '可视化编辑器,alt+1到9键,切换到工具区,tab键,选择按钮,esc键,返回编辑',\n\n    'Cut': '剪切 (Ctrl+X)',\n    'Copy': '复制 (Ctrl+C)',\n    'Paste': '粘贴 (Ctrl+V)',\n    'Pastetext': '粘贴文本',\n    'PastetextTip': '使用键盘快捷键(Ctrl+V)把内容粘贴到方框里，按 确定',\n    'Blocktag': '段落标签',\n    'Fontface': '字体',\n    'FontSize': '字体大小',\n    'Bold': '加粗 (Ctrl+B)',\n    'Italic': '斜体 (Ctrl+I)',\n    'Underline': '下划线 (Ctrl+U)',\n    'Strikethrough': '删除线',\n    'FontColor': '字体颜色',\n    'BackColor': '背景颜色',\n    'SelectAll': '全选 (Ctrl+A)',\n    'Removeformat': '删除文字格式',\n    'Align': '对齐',\n    'List': '列表',\n    'Outdent': '减少缩进',\n    'Indent': '增加缩进',\n    'Link': '超链接 (Ctrl+L)',\n    'Unlink': '取消超链接',\n    'Anchor': '锚点',\n    'Img': '图片',\n    'Flash': 'Flash动画',\n    'Media': '多媒体文件',\n    'Hr': '插入水平线',\n    'Emot': '表情',\n    'Table': '表格',\n    'Source': '源代码',\n    'WYSIWYG': '可视化编辑',\n    'Preview': '预览',\n    'Print': '打印 (Ctrl+P)',\n    'Fullscreen': '全屏编辑 (Esc)',\n    'About': '关于 xhEditor',\n\n    'dialogOk': '确定',\n    'dialogCancel': '取消',\n    'cutDisabledTip': '您的浏览器安全设置不允许使用剪切操作，请使用键盘快捷键(Ctrl + X)来完成',\n    'copyDisabledTip': '您的浏览器安全设置不允许使用复制操作，请使用键盘快捷键(Ctrl + C)来完成',\n    'pasteDisabledTip': '您的浏览器安全设置不允许使用粘贴操作，请使用键盘快捷键(Ctrl + V)来完成',\n    'close': '关闭',\n\n    'listFontname': [{n:'宋体',c:'SimSun'},{n:'仿宋体',c:'FangSong_GB2312'},{n:'黑体',c:'SimHei'},{n:'楷体',c:'KaiTi_GB2312'},{n:'微软雅黑',c:'Microsoft YaHei'},{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': '普通段落',\n        'h1': '标题1',\n        'h2': '标题2',\n        'h3': '标题3',\n        'h4': '标题4',\n        'h5': '标题5',\n        'h6': '标题6',\n        'pre': '已编排格式',\n        'address': '地址'\n    },\n\n    'fontsize': {\n        'x-small': '极小',\n        'small': '特小',\n        'medium': '小',\n        'large': '中',\n        'x-large': '大',\n        'xx-large': '特大',\n        '-webkit-xxx-large': '极大'\n    },\n\n    'align': {\n        'justifyleft': '左对齐',\n        'justifycenter': '居中',\n        'justifyright': '右对齐',\n        'justifyfull': '两端对齐'\n    },\n\n    'list': {\n        'insertOrderedList': '数字列表',\n        'insertUnorderedList': '符号列表'\n    },\n\n    'link': {\n        'url': '链接地址: ',\n        'target': '打开方式: ',\n        'targetBlank': '新窗口',\n        'targetSelf': '当前窗口',\n        'targetParent': '父窗口',\n        'linkText': '链接文字: ',\n        'defText': '点击打开链接',\n        'anchor': '页内锚点: ',\n        'anchorNone': '未选择'\n    },\n\n    'anchor': {\n        'name': '锚点名称: '\n    },\n\n    'img': {\n        'url': '图片文件: ',\n        'alt': '替换文本: ',\n        'align': '对齐方式: ',\n        'alignLeft': '左对齐',\n        'alignRight': '右对齐',\n        'alignTop': '顶端',\n        'alignMiddle': '居中',\n        'alignBaseline': '基线',\n        'alignBottom': '底边',\n        'width': '宽　　度: ',\n        'height': '高　　度: ',\n        'border': '边框大小: ',\n        'hspace': '水平间距: ',\n        'vspace': '垂直间距: '\n    },\n\n    'flash': {\n        'url': '动画文件: ',\n        'width': '宽　　度: ',\n        'height': '高　　度: '\n    },\n\n    'media': {\n        'url': '媒体文件: ',\n        'width': '宽　　度: ',\n        'height': '高　　度: '\n    },\n\n    'emot.default': {\n        'smile': '微笑',\n        'tongue': '吐舌头',\n        'titter': '偷笑',\n        'laugh': '大笑',\n        'sad': '难过',\n        'wronged': '委屈',\n        'fastcry': '快哭了',\n        'cry': '哭',\n        'wail': '大哭',\n        'mad': '生气',\n        'knock': '敲打',\n        'curse': '骂人',\n        'crazy': '抓狂',\n        'angry': '发火',\n        'ohmy': '惊讶',\n        'awkward': '尴尬',\n        'panic': '惊恐',\n        'shy': '害羞',\n        'cute': '可怜',\n        'envy': '羡慕',\n        'proud': '得意',\n        'struggle': '奋斗',\n        'quiet': '安静',\n        'shutup': '闭嘴',\n        'doubt': '疑问',\n        'despise': '鄙视',\n        'sleep': '睡觉',\n        'bye': '再见'\n    },\n\n    'table': {\n        'rows': '行　　数: ',\n        'columns': '列　　数: ',\n        'headers': '标题单元: ',\n        'headersRow': '第一行',\n        'headersCol': '第一列',\n        'headersBoth': '第一行和第一列',\n        'width': '宽　　度: ',\n        'height': '高　　度: ',\n        'border': '边框大小: ',\n        'cellSpacing': '表格间距: ',\n        'cellPadding': '表格填充: ',\n        'align': '对齐方式: ',\n        'alignLeft': '左对齐',\n        'alignCenter': '居中',\n        'alignRight': '右对齐',\n        'caption': '表格标题: '\n    },\n\n    'upload': {\n        'btnText' : '上传',\n        'browserTitle': '浏览文件',\n        'progressTitle': '文件上传中(Esc取消上传)',\n        'progressTip': '文件上传中，请稍候……',\n        'countLimit': '请不要一次上传超过{$0}个文件',\n        'extLimit': '文件的扩展名必需为：{$0}',\n        'typeLimit': '每次只能拖放上传同一类型文件',\n        'apiError': '{$0} 上传接口发生错误！\\r\\n\\r\\n返回的错误内容为: \\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor是基于jQuery开发的跨平台轻量可视化XHTML编辑器，基于<a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>开源协议发布。'\n});"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_lang/zh-tw.js",
    "content": "/**\n * @license Copyright (c) 2009-2013, xhEditor.com. All rights reserved.\n * For licensing, see LGPL-LICENSE.txt or http://xheditor.com/license/lgpl.txt\n */\nXHEDITOR.setLang({\n    'default': '預設',\n    'none': '無',\n    'defaultReadTip': '可視化編輯器,alt+1到9鍵,切換到工具區,tab鍵,選擇按鈕,esc鍵,返回編輯',\n\n    'Cut': '剪下 (Ctrl+X)',\n    'Copy': '複製 (Ctrl+C)',\n    'Paste': '貼上 (Ctrl+V)',\n    'Pastetext': '貼上文本',\n    'PastetextTip': '使用鍵盤快捷鍵(Ctrl+V)把內容貼上到方框裡，按 確定',\n    'Blocktag': '段落標籤',\n    'Fontface': '字型',\n    'FontSize': '字型大小',\n    'Bold': '粗體 (Ctrl+B)',\n    'Italic': '斜體 (Ctrl+I)',\n    'Underline': '底線 (Ctrl+U)',\n    'Strikethrough': '刪除線',\n    'FontColor': '字型顏色',\n    'BackColor': '背景顏色',\n    'SelectAll': '全選 (Ctrl+A)',\n    'Removeformat': '刪除文字格式',\n    'Align': '對齊',\n    'List': '列表',\n    'Outdent': '減少縮排',\n    'Indent': '增加縮排',\n    'Link': '超連結 (Ctrl+L)',\n    'Unlink': '取消超連結',\n    'Anchor': '錨點',\n    'Img': '圖片',\n    'Flash': 'Flash動畫',\n    'Media': '多媒體文件',\n    'Hr': '插入水平線',\n    'Emot': '表情',\n    'Table': '表格',\n    'Source': '原始碼',\n    'WYSIWYG': '可視化編輯',\n    'Preview': '預覽',\n    'Print': '打印 (Ctrl+P)',\n    'Fullscreen': '全螢幕編輯 (Esc)',\n    'About': '關於 xhEditor',\n\n    'dialogOk': '確定',\n    'dialogCancel': '取消',\n    'cutDisabledTip': '您的瀏覽器安全設置不允許使用剪下操作，請使用鍵盤快捷鍵(Ctrl + X)來完成',\n    'copyDisabledTip': '您的瀏覽器安全設置不允許使用複製操作，請使用鍵盤快捷鍵(Ctrl + C)來完成',\n    'pasteDisabledTip': '您的瀏覽器安全設置不允許使用貼上操作，請使用鍵盤快捷鍵(Ctrl + V)來完成',\n    'close': '關閉',\n\n    'listFontname': [{n:'新細明體',c:'PMingLiu'},{n:'細明體',c:'mingliu'},{n:'標楷體',c:'DFKai-SB'},{n:'微軟正黑體',c:'Microsoft JhengHei'},{n:'Arial'},{n:'Arial Black'},{n:'Comic Sans MS'},{n:'Courier New'},{n:'System'},{n:'Times New Roman'},{n:'Tahoma'},{n:'Verdana'}],\n    \n    'listBlocktag': {\n        'p': '普通段落',\n        'h1': '標題1',\n        'h2': '標題2',\n        'h3': '標題3',\n        'h4': '標題4',\n        'h5': '標題5',\n        'h6': '標題6',\n        'pre': '已編排格式',\n        'address': '地址'\n    },\n\n    'fontsize': {\n        'x-small': '極小',\n        'small': '特小',\n        'medium': '小',\n        'large': '中',\n        'x-large': '大',\n        'xx-large': '特大',\n        '-webkit-xxx-large': '極大'\n    },\n\n    'align': {\n        'justifyleft': '靠左對齊',\n        'justifycenter': '置中',\n        'justifyright': '靠右對齊',\n        'justifyfull': '左右對齊'\n    },\n\n    'list': {\n        'insertOrderedList': '數字列表',\n        'insertUnorderedList': '符號列表'\n    },\n\n    'link': {\n        'url': '鏈接地址: ',\n        'target': '打開方式: ',\n        'targetBlank': '新窗口',\n        'targetSelf': '當前窗口',\n        'targetParent': '父窗口',\n        'linkText': '鏈接文字: ',\n        'defText': '點擊打開鏈接',\n        'anchor': '頁內錨點: ',\n        'anchorNone': '未選擇'\n    },\n\n    'anchor': {\n        'name': '錨點名稱: '\n    },\n\n    'img': {\n        'url': '圖片文件: ',\n        'alt': '替換文本: ',\n        'align': '對齊方式: ',\n        'alignLeft': '靠左對齊',\n        'alignRight': '靠右對齊',\n        'alignTop': '頂端',\n        'alignMiddle': '置中',\n        'alignBaseline': '基線',\n        'alignBottom': '底邊',\n        'width': '寬　　度: ',\n        'height': '高　　度: ',\n        'border': '邊框大小: ',\n        'hspace': '水平間距: ',\n        'vspace': '垂直間距: '\n    },\n\n    'flash': {\n        'url': '動畫文件: ',\n        'width': '寬　　度: ',\n        'height': '高　　度: '\n    },\n\n    'media': {\n        'url': '媒體文件: ',\n        'width': '寬　　度: ',\n        'height': '高　　度: '\n    },\n\n    'emot.default': {\n        'smile': '微笑',\n        'tongue': '吐舌頭',\n        'titter': '偷笑',\n        'laugh': '大笑',\n        'sad': '難過',\n        'wronged': '委屈',\n        'fastcry': '快哭了',\n        'cry': '哭',\n        'wail': '大哭',\n        'mad': '生氣',\n        'knock': '敲打',\n        'curse': '罵人',\n        'crazy': '抓狂',\n        'angry': '發火',\n        'ohmy': '驚訝',\n        'awkward': '尷尬',\n        'panic': '驚恐',\n        'shy': '害羞',\n        'cute': '可憐',\n        'envy': '羨慕',\n        'proud': '得意',\n        'struggle': '奮鬥',\n        'quiet': '安靜',\n        'shutup': '閉嘴',\n        'doubt': '疑問',\n        'despise': '鄙視',\n        'sleep': '睡覺',\n        'bye': '再見'\n    },\n\n    'table': {\n        'rows': '行　　數: ',\n        'columns': '列　　數: ',\n        'headers': '標題單元: ',\n        'headersRow': '第一行',\n        'headersCol': '第一列',\n        'headersBoth': '第一行和第一列',\n        'width': '寬　　度: ',\n        'height': '高　　度: ',\n        'border': '邊框大小: ',\n        'cellSpacing': '表格間距: ',\n        'cellPadding': '表格填充: ',\n        'align': '對齊方式: ',\n        'alignLeft': '靠左對齊',\n        'alignCenter': '置中',\n        'alignRight': '靠右對齊',\n        'caption': '表格標題: '\n    },\n\n    'upload': {\n        'btnText' : '上傳',\n        'browserTitle': '瀏覽文件',\n        'progressTitle': '文件上傳中(Esc取消上傳)',\n        'progressTip': '文件上傳中，請稍候……',\n        'countLimit': '請不要一次上傳超過{$0}個文件',\n        'extLimit': '文件的擴展名必需為：{$0}',\n        'typeLimit': '每次只能拖放上傳同一類型文件',\n        'apiError': '{$0} 上傳接口發生錯誤！\\r\\n\\r\\n返回的錯誤內容為: \\r\\n\\r\\n{$1}'\n    },\n\n    'aboutXheditor': 'xhEditor是基於jQuery開發的跨平台輕量可視化XHTML編輯器，基於<a href=\"http://www.gnu.org/licenses/lgpl.html\" target=\"_blank\">LGPL</a>開源協議發佈。'\n});"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/html2markdown.js",
    "content": "/**\n * HTML2Markdown - An HTML to Markdown converter.\n * \n * This implementation uses HTML DOM parsing for conversion. Parsing code was\n * abstracted out in a parsing function which should be easy to remove in favor\n * of other parsing libraries.\n * \n * Converted MarkDown was tested with ShowDown library for HTML rendering. And\n * it tries to create MarkDown that does not confuse ShowDown when certain\n * combination of HTML tags come together.\n * \n * @author Himanshu Gilani\n * @author Kates Gasis (original author)\n * \n */\n\nif (typeof require != \"undefined\") {\n\tvar htmlparser = require(\"./htmldomparser\");\n\tvar HTMLParser = htmlparser.HTMLParser;\n}\n\n/**\n * HTML2Markdown\n * @param html - html string to convert\n * @return converted markdown text\n */\nfunction HTML2Markdown(html, opts) {\n\tvar logging = false;\n\tvar nodeList = [];\n\tvar listTagStack = [];\n\tvar linkAttrStack = [];\n\tvar blockquoteStack = [];\n\tvar preStack = [];\n\t\n\tvar links = [];\n\t\n\topts = opts || {};\n\tvar inlineStyle = opts['inlineStyle'] || false;\n\n\tvar markdownTags = {\n\t\t\"hr\": \"- - -\\n\\n\",\n\t\t\"br\": \"  \\n\",\n\t\t\"title\": \"# \",\n\t\t\"h1\": \"# \",\n\t\t\"h2\": \"## \",\n\t\t\"h3\": \"### \",\n\t\t\"h4\": \"#### \",\n\t\t\"h5\": \"##### \",\n\t\t\"h6\": \"###### \",\n\t\t\"b\": \"**\",\n\t\t\"strong\": \"**\",\n\t\t\"i\": \"_\",\n\t\t\"em\": \"_\",\n\t\t\"dfn\": \"_\",\n\t\t\"var\": \"_\",\t\n\t\t\"cite\": \"_\",\n\t\t\"span\": \" \",\n\t\t\"ul\": \"* \",\n\t\t\"ol\": \"1. \",\n\t\t\"dl\": \"- \",\n\t\t\"blockquote\": \"> \"\n\t};\n\n\tfunction getListMarkdownTag() {\n\t\tvar listItem = \"\";\t\t\n\t\tif(listTagStack) {\n\t\t\tfor ( var i = 0; i < listTagStack.length - 1; i++) {\n\t\t\t\tlistItem += \"  \";\n\t\t\t}\t\t\t\n\t\t}\n\t\tlistItem += peek(listTagStack);\t\t\n\t\treturn listItem;\n\t}\n\t\n\tfunction convertAttrs(attrs) {\n\t\tvar attributes = {};\n\t\tfor(var k in attrs) {\n\t\t\tvar attr = attrs[k];\n\t\t\tattributes[attr.name] = attr;\n\t\t}\n\t\treturn attributes;\n\t}\n\n\tfunction peek(list) {\n\t\tif(list && list.length > 0) {\n\t\t\treturn list.slice(-1)[0];\t\n\t\t} \n\t\treturn \"\";\t\t\n\t}\n\n\tfunction peekTillNotEmpty(list) {\n\t\tif(!list) {\n\t\t\treturn \"\";\n\t\t}\n\t\t\t\t\n\t\tfor(var i = list.length - 1; i>=0; i-- ){\n\t\t\tif(list[i] != \"\") {\n\t\t\t\treturn list[i];\n\t\t\t} \t\t\n\t\t}\t\t\n\t\treturn \"\";\n\t}\n\t\n\tfunction removeIfEmptyTag(start) {\n\t\tvar cleaned = false;\n\t\tif(start == peekTillNotEmpty(nodeList)) {\n\t\t\twhile(peek(nodeList) != start) {\n\t\t\t\tnodeList.pop();\n\t\t\t}\n\t\t\tnodeList.pop();\n\t\t\tcleaned = true;\n\t\t} \n\t\treturn cleaned;\n\t}\n\t\n\tfunction sliceText(start) {\n\t\tvar text = [];\n\t\twhile(nodeList.length > 0 && peek(nodeList) != start) {\n\t\t\tvar t = nodeList.pop();\n\t\t\ttext.unshift(t);\n\t\t}\n\t\treturn text.join(\"\");\n\t}\n\t\n\tfunction block(isEndBlock) {\n\t\tvar lastItem = nodeList.pop();\n\t\tif (!lastItem) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!isEndBlock) {\n\t\t\tvar block;\n\t\t\tif(/\\s*\\n\\n\\s*$/.test(lastItem)) {\n\t\t\t\tlastItem = lastItem.replace(/\\s*\\n\\n\\s*$/, \"\\n\\n\");\n\t\t\t\tblock = \"\";\n\t\t\t} else if(/\\s*\\n\\s*$/.test(lastItem)) {\n\t\t\t\tlastItem = lastItem.replace(/\\s*\\n\\s*$/, \"\\n\");\n\t\t\t\tblock = \"\\n\";\n\t\t\t} else if(/\\s+$/.test(lastItem)) {\t\t\t\t\n\t\t\t\tblock = \"\\n\\n\";\n\t\t\t} else {\n\t\t\t\tblock = \"\\n\\n\";\n\t\t\t} \n\t\t\t\n\t\t\tnodeList.push(lastItem);\n\t\t\tnodeList.push(block);\t\n\t\t} else {\n\t\t\tnodeList.push(lastItem);\n\t\t\tif(!lastItem.endsWith(\"\\n\")) {\n\t\t\t\tnodeList.push(\"\\n\\n\");\n\t\t\t}\n\t\t}\n \t}\n\t\n\tfunction listBlock() {\n\t\tif(nodeList.length > 0) {\n\t\t\tvar li = peek(nodeList);\n\n\t\t\tif(!li.endsWith(\"\\n\")) {\n\t\t\t\tnodeList.push(\"\\n\");\n\t\t\t} \n\t\t} else {\n\t\t\tnodeList.push(\"\\n\");\n\t\t}\n\t}\n\t\n\ttry {\n\t\tvar dom;\n\t\tif(html) {\n\t\tvar e = document.createElement('div');\n\t\t\te.innerHTML = html;\n\t\t\tdom = e;\n\t\t} else {\n\t\t\tdom = window.document.body;\n\t\t}\n\n\t\tHTMLParser(dom,{\n\t\t\tstart: function(tag, attrs, unary) {\n\t\t\t\ttag = tag.toLowerCase();\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"start: \"+ tag);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(unary && (tag != \"br\" && tag != \"hr\" && tag != \"img\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tswitch (tag) {\n\t\t\t\tcase \"br\":\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"hr\":\n\t\t\t\t\tblock();\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"title\":\t\n\t\t\t\tcase \"h1\":\n\t\t\t\tcase \"h2\":\n\t\t\t\tcase \"h3\":\n\t\t\t\tcase \"h4\":\n\t\t\t\tcase \"h5\":\n\t\t\t\tcase \"h6\":\n\t\t\t\t\tblock();\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"b\":\n\t\t\t\tcase \"strong\":\n\t\t\t\tcase \"i\":\n\t\t\t\tcase \"em\":\n\t\t\t\tcase \"dfn\": \n\t\t\t\tcase \"var\": \t\n\t\t\t\tcase \"cite\":\n\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"span\":\n\t\t\t\t\tif(! /\\s+$/.test(peek(nodeList))) {\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\t\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"p\":\n\t\t\t\tcase \"div\":\t\t\t\t\n\t\t\t\tcase \"td\":\n\t\t\t\t\tblock();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ul\":\n\t\t\t\tcase \"ol\":\n\t\t\t\tcase \"dl\":\t\n\t\t\t\t\tlistTagStack.push(markdownTags[tag]);\n\t\t\t\t\t// lists are block elements\n\t\t\t\t\tif(listTagStack.length > 1) {\n\t\t\t\t\t\tlistBlock();\n\t\t\t\t\t} else {\t\t\t\t\t\t\n\t\t\t\t\t\tblock();\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"li\":\n\t\t\t\tcase \"dt\":\n\t\t\t\t\tvar li = getListMarkdownTag();\n\t\t\t\t\tnodeList.push(li);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"a\":\t\t\t\t\t\n\t\t\t\t\tvar attribs = convertAttrs(attrs);\n\t\t\t\t\tlinkAttrStack.push(attribs);\n\t\t\t\t\tnodeList.push(\"[\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"img\":\n\t\t\t\t\tvar attribs = convertAttrs(attrs);\n\t\t\t\t\tvar alt, title, url; \n\t\t\t\t\t\n\t\t\t\t\tattribs[\"src\"] ? url = getNormalizedUrl(attribs[\"src\"].value) : url = \"\";\n\t\t\t\t\tif(!url) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tattribs['alt'] ? alt = attribs['alt'].value.trim() : alt = \"\";\n\t\t\t\t\tattribs['title'] ? title = attribs['title'].value.trim() : title = \"\";\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// if parent of image tag is nested in anchor tag use inline style\n\t\t\t\t\tif(!inlineStyle && !peekTillNotEmpty(nodeList).startsWith(\"[\")) {\t\t\t\t\t\t\n\t\t\t\t\t\tvar l = links.indexOf(url);\n\t\t\t\t\t\tif(l == -1) {\n\t\t\t\t\t\t\tlinks.push(url);\n\t\t\t\t\t\t\tl=links.length-1;\t\t\t\t\t\t\t \n\t\t\t\t\t\t}\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tblock();\n\t\t\t\t\t\tnodeList.push(\"![\");\n\t\t\t\t\t\tif(alt!= \"\") {\n\t\t\t\t\t\t\tnodeList.push(alt);\n\t\t\t\t\t\t} else if (title != null) {\n\t\t\t\t\t\t\tnodeList.push(title);\n\t\t\t\t\t\t} \n\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"][\" + l + \"]\");\n\t\t\t\t\t\tblock();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//if image is not a link image then treat images as block elements\n\t\t\t\t\t\tif(!peekTillNotEmpty(nodeList).startsWith(\"[\")) {\n\t\t\t\t\t\t\tblock();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"![\" + alt + \"](\" + url + (title ? \" \\\"\" + title + \"\\\"\" : \"\") + \")\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!peekTillNotEmpty(nodeList).startsWith(\"[\")) {\n\t\t\t\t\t\t\tblock(true);\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\n\t\t\t\tcase \"blockquote\":\n\t\t\t\t\tblock();\n\t\t\t\t\tblockquoteStack.push(markdownTags[tag]);\n\t\t\t\t\tnodeList.push(blockquoteStack.join(\"\"));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\":\n\t\t\t\tcase \"code\":\n\t\t\t\t\tblock();\n\t\t\t\t\tpreStack.push(true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\t\t\t\t\n\t\t\t},\n\t\t\tchars: function(text) {\t\t\t\n\t\t\t\tif(preStack.length > 0) {\n\t\t\t\t\ttext = \"    \" + text.replace(/\\n/g,\"\\n    \");\n\t\t\t\t} else if(text.trim() != \"\") {\n\t\t\t\t\ttext = text.replace(/\\s+/g, \" \");\n\t\t\t\t\t\n\t\t\t\t\tvar prevText = peekTillNotEmpty(nodeList);\n\t\t\t\t\tif(/\\s+$/.test(prevText)) {\n\t\t\t\t\t\ttext = text.replace(/^\\s+/g, \"\");\n\t\t\t\t\t}\t\n\t\t\t\t} else {\n\t\t\t\t\tnodeList.push(\"\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"text: \"+ text);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnodeList.push(text);\n\t\t\t},\n\t\t\tend: function(tag) {\n\t\t\t\ttag = tag.toLowerCase();\n\t\t\t\tif(logging) {\n\t\t\t\t\tconsole.log(\"end: \"+ tag);\n\t\t\t\t}\n\t\t\t\tswitch (tag) {\t\t\t\t\n\t\t\t\tcase \"title\":\t\n\t\t\t\tcase \"h1\":\n\t\t\t\tcase \"h2\":\n\t\t\t\tcase \"h3\":\n\t\t\t\tcase \"h4\":\n\t\t\t\tcase \"h5\":\n\t\t\t\tcase \"h6\":\n\t\t\t\t\tif(!removeIfEmptyTag(markdownTags[tag])) {\n\t\t\t\t\t\tblock(true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"p\":\n\t\t\t\tcase \"div\":\n\t\t\t\tcase \"td\":\n\t\t\t\t\twhile(nodeList.length > 0 && peek(nodeList).trim() == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t}\n\t\t\t\t\tblock(true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"b\":\n\t\t\t\tcase \"strong\":\n\t\t\t\tcase \"i\":\n\t\t\t\tcase \"em\":\n\t\t\t\tcase \"dfn\": \n\t\t\t\tcase \"var\": \t\n\t\t\t\tcase \"cite\":\n\t\t\t\t\tif(!removeIfEmptyTag(markdownTags[tag])) {\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(sliceText(markdownTags[tag]).trim());\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tvar text = sliceText(\"[\");\n\t\t\t\t\ttext = text.replace(/\\s+/g, \" \");\t\t\t\t\t\n\t\t\t\t\ttext = text.trim();\n\t\t\t\t\t\n\t\t\t\t\tif(text == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar attrs = linkAttrStack.pop();\n\t\t\t\t\tvar url;\n\t\t\t\t\tattrs[\"href\"] &&  attrs[\"href\"].value != \"\" ? url = getNormalizedUrl(attrs[\"href\"].value) : url = \"\";\n\t\t\t\t\t\n\t\t\t\t\tif(url == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\n\t\t\t\t\tif(!inlineStyle && !peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\tvar l = links.indexOf(url);\n\t\t\t\t\t\tif(l == -1) {\n\t\t\t\t\t\t\tlinks.push(url);\n\t\t\t\t\t\t\tl=links.length-1;\n\t\t\t\t\t\t}\t\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"][\" + l + \"]\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\t\tvar text = nodeList.pop();\n\t\t\t\t\t\t\ttext = nodeList.pop() + text;\n\t\t\t\t\t\t\tblock();\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar title = attrs[\"title\"];\t\t\t\t\t\t\n\t\t\t\t\t\tnodeList.push(\"](\" + url + (title ? \" \\\"\" + title.value.trim().replace(/\\s+/g, \" \") + \"\\\"\" : \"\") + \")\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(peek(nodeList).startsWith(\"!\")){\n\t\t\t\t\t\t\tblock(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\t\t\t\t\n\t\t\t\tcase \"ul\":\n\t\t\t\tcase \"ol\":\n\t\t\t\tcase \"dl\":\t\n\t\t\t\t\tlistBlock();\n\t\t\t\t\tlistTagStack.pop();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"li\":\n\t\t\t\tcase \"dt\":\n\t\t\t\t\tvar li = getListMarkdownTag();\n\t\t\t\t\tif(!removeIfEmptyTag(li)) {\n\t\t\t\t\t\tvar text = sliceText(li).trim();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(text.startsWith(\"[![\")) {\n\t\t\t\t\t\t\tnodeList.pop();\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tblock();\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t\tblock(true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnodeList.push(text);\n\t\t\t\t\t\t\tlistBlock();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"blockquote\":\n\t\t\t\t\tblockquoteStack.pop();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pre\":\n\t\t\t\tcase \"code\":\n\t\t\t\t\tblock(true);\n\t\t\t\t\tpreStack.pop();\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"span\":\n\t\t\t\t\tif(peek(nodeList).trim() == \"\") {\n\t\t\t\t\t\tnodeList.pop();\n\t\t\t\t\t\tif(peek(nodeList) == \" \") {\n\t\t\t\t\t\t\tnodeList.pop();\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\n\t\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar text = nodeList.pop();\n\t\t\t\t\t\tnodeList.push(text.trim());\n\t\t\t\t\t\tnodeList.push(markdownTags[tag]);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\t\t\t\t\t\n\t\t\t\tcase \"br\":\n\t\t\t\tcase \"hr\":\n\t\t\t\tcase \"img\":\n\t\t\t\tcase \"table\":\t\n\t\t\t\tcase \"tr\":\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}, {\"nodesToIgnore\": [\"script\", \"noscript\", \"object\", \"iframe\", \"frame\", \"head\", \"style\", \"label\"]});\n\t\t\n\t\tif(!inlineStyle) {\t\t\t\t\t\t\t\n\t\t\tfor ( var i = 0; i < links.length; i++) {\n\t\t\t\tif(i == 0) {\n\t\t\t\t\tvar lastItem = nodeList.pop();\n\t\t\t\t\tnodeList.push(lastItem.replace(/\\s+$/g, \"\"));\n\t\t\t\t\tnodeList.push(\"\\n\\n[\" + i + \"]: \" + links[i]);\n\t\t\t\t} else {\n\t\t\t\t\tnodeList.push(\"\\n[\" + i + \"]: \" + links[i]);\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch(e) {\n\t\tconsole.log(e.stack);\n\t\tconsole.trace();\n\t}\n\t\n\treturn nodeList.join(\"\");\n\t\n}\n\nfunction getNormalizedUrl(s) {\n\tvar urlBase = location.href;\n\tvar urlDir  = urlBase.replace(/\\/[^\\/]*$/, '/');\n\tvar urlPage = urlBase.replace(/#[^\\/#]*$/, '');\n\n\tvar url;\n\tif(/^[a-zA-Z]([a-zA-Z0-9 -.])*:/.test(s)) {\n\t\t// already absolute url\n\t\turl = s;\n\t} else if(/^\\x2f/.test(s)) {// %2f --> /\n\t\t// url is relative to site\n\t\tlocation.protocol != \"\" ? url = location.protocol + \"//\" : url =\"\";\t\t\n\t\turl+= location.hostname;\t\t\n\t\tif(location.port != \"80\") {\n\t\t\turl+=\":\"+location.port;\n\t\t}\t\t\t\t\n\t\turl += s;\n\t} else if(/^#/.test(s)) {\n\t\t// url is relative to page\n\t\turl = urlPage + s;\n\t} else {\n\t\turl = urlDir + s;\n\t}\n\treturn encodeURI(url);\n}\n\nif (typeof exports != \"undefined\") {\n\texports.HTML2Markdown = HTML2Markdown;\n}\n\t\t\nif (typeof exports != \"undefined\") {\n\texports.HTML2MarkDown = HTML2MarkDown;\n}\n\n/* add the useful functions to String object*/\nif (typeof String.prototype.trim != 'function') {\n\tString.prototype.trim = function() {\n\t\treturn replace(/^\\s+|\\s+$/g,\"\");\n\t};\t\n}\n\nif (typeof String.prototype.isNotEmpty != 'function') {\n\tString.prototype.isNotEmpty = function() {\n\t\tif (/\\S/.test(this)) {\n\t\t    return true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\t\t\n\t};\t\n}\n\nif (typeof String.prototype.replaceAll != 'function') {\n\tString.prototype.replaceAll = function(stringToFind,stringToReplace){\n\t    var temp = this;\n\t    var index = temp.indexOf(stringToFind);\n\t        while(index != -1){\n\t            temp = temp.replace(stringToFind,stringToReplace);\n\t            index = temp.indexOf(stringToFind);\n\t        }\n\t        return temp;\n\t};\t\n}\n\nif (typeof String.prototype.startsWith != 'function') {\n\tString.prototype.startsWith = function(str) {\n\t\treturn this.indexOf(str) == 0;\n\t};\n}\n\nif (typeof String.prototype.endsWith != 'function') {\n\tString.prototype.endsWith = function(suffix) {\n\t    return this.match(suffix+\"$\") == suffix;\n\t};\t\n}\n\nif (typeof Array.prototype.indexOf != 'function') {\n\tArray.prototype.indexOf = function(obj, fromIndex) {\n\t\tif (fromIndex == null) {\n\t\t\tfromIndex = 0;\n\t\t} else if (fromIndex < 0) {\n\t\t\tfromIndex = Math.max(0, this.length + fromIndex);\n\t\t}\n\t\tfor ( var i = fromIndex, j = this.length; i < j; i++) {\n\t\t\tif (this[i] === obj)\n\t\t\t\treturn i;\n\t\t}\n\t\treturn -1;\n\t};\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/htmldomparser.js",
    "content": "/*\n * HTMLParser - This implementation of parser assumes we are parsing HTML in browser\n * and user DOM methods available in browser for parsing HTML.\n * \n * @author Himanshu Gilani\n * \n */\n\nvar HTMLParser = function(node, handler, opts) {\n\topts = opts || {};\n\tvar nodesToIgnore = opts['nodesToIgnore'] || [];\n\tvar parseHiddenNodes = opts['parseHiddenNodes'] || 'false';\n\t\n\tvar c = node.childNodes;\n\tfor ( var i = 0; i < c.length; i++) {\n\t\ttry {\n\t\t\tvar ignore = false;\n\t\t\tfor(var k=0; k< nodesToIgnore.length; k++) {\n\t\t\t\tif(c[i].nodeName.toLowerCase() == nodesToIgnore[k]) {\n\t\t\t\t\tignore= true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//NOTE hidden node testing is expensive in FF.\n\t\t\tif (ignore || (!parseHiddenNodes && isHiddenNode(c[i]))  ){\n\t\t\t\tcontinue;\n\t\t\t} \n\t\t\t\n\t\t\tif (c[i].nodeName.toLowerCase() != \"#text\" && c[i].nodeName.toLowerCase() != \"#comment\") {\n\t\t\t\tvar attrs = [];\n\n\t\t\t\tif (c[i].hasAttributes()) {\n\t\t\t\t\tvar attributes = c[i].attributes;\n\t\t\t\t\tfor ( var a = 0; a < attributes.length; a++) {\n\t\t\t\t\t\tvar attribute = attributes.item(a);\n\n\t\t\t\t\t\tattrs.push({\n\t\t\t\t\t\t\tname : attribute.nodeName,\n\t\t\t\t\t\t\tvalue : attribute.nodeValue,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (handler.start) {\n\t\t\t\t\tif (c[i].hasChildNodes()) {\n\t\t\t\t\t\thandler.start(c[i].nodeName, attrs, false);\n\n\t\t\t\t\t\tif (c[i].nodeName.toLowerCase() == \"pre\" || c[i].nodeName.toLowerCase() == \"code\") {\n\t\t\t\t\t\t\thandler.chars(c[i].innerHTML);\n\t\t\t\t\t\t} else if (c[i].nodeName.toLowerCase() == \"iframe\" || c[i].nodeName.toLowerCase() == \"frame\") {\n\t\t\t\t\t\t\tif (c[i].contentDocument && c[i].contentDocument.documentElement) {\n\t\t\t\t\t\t\t\treturn HTMLParser(c[i].contentDocument.documentElement, handler, opts);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (c[i].hasChildNodes()) {\n\t\t\t\t\t\t\tHTMLParser(c[i], handler, opts);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (handler.end) {\n\t\t\t\t\t\t\thandler.end(c[i].nodeName);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandler.start(c[i].nodeName, attrs, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (c[i].nodeName.toLowerCase() == \"#text\") {\n\t\t\t\tif (handler.chars) {\n\t\t\t\t\thandler.chars(c[i].nodeValue);\n\t\t\t\t}\n\t\t\t} else if (c[i].nodeName.toLowerCase() == \"#comment\") {\n\t\t\t\tif (handler.comment) {\n\t\t\t\t\thandler.comment(c[i].nodeValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t//properly log error\t\n\t\t\tconsole.log(\"error while parsing node: \" + c[i].nodeName.toLowerCase());\n\t\t}\n\t}\n};\n\nfunction isHiddenNode(node) {\n\tif(node.nodeName.toLowerCase() == \"title\"){\n\t\treturn false;\n\t}\n\t\n\tif (window.getComputedStyle) {\n\t\ttry {\n\t\t\tvar style = window.getComputedStyle(node, null);\n\t\t\tif (style.getPropertyValue && style.getPropertyValue('display') == 'none') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// consume and ignore. node styles are not accessible\n\t\t}\n\t\treturn false;\n\t}\n} "
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.css",
    "content": "html,body{\n\tfont-size:12px;\n\tpadding:0px;margin:0;\n\toverflow:hidden;\n\twidth:100%;height:100%;\n}\n#buttonArea{\n\tbackground:url(img/bg1.gif);\n\tborder-top:1px solid #F0F5FA;\n\tborder-bottom:1px solid #99BBE8;\n\tpadding:3px;\n}\n#controlBtns{\n\tfloat:right;\n}\n.btn{\n\tdisplay:inline-block;\n\tcolor:#000;\n\ttext-decoration:none;\n\tpadding-right:3px;\n\tcursor:pointer;\n}\n.btn span{\n\tdisplay:inline-block;\n\theight:17px;\n\tline-height:17px;\n\tpadding:2px;\n}\n.btn img{border:0;vertical-align:text-bottom;}\n.btn:hover{background:url(img/btnbgr.gif) top right;}\n.btn:hover span{background:url(img/btnbg.gif);}\n#listArea{\n\toverflow-x:hidden;\n\toverflow-y:auto;\n}\n#listTitle tr{background:url(img/bg2.gif);}\n#listTitle td{padding:5px;border-top:1px solid #F0F5FA;border-left:1px solid #fff;border-right:1px solid #ccc;border-bottom:1px solid #D0D0D0;}\n#listBody tr{cursor:pointer;}\n#listBody .hover{background:#F0F0F0;}\n#listBody .select{background:#DFE8F6;}\n#listBody td{padding:5px;border-bottom:1px solid #EDEDED;}\n#progressArea{\n\tbackground:#D4E1F2;\n\tborder-top:1px solid #99BBE8;\n\tpadding:3px;\n}\n#progressBar{\n\tposition: relative;\n\tborder:1px solid #6593CF;\n\tpadding:1px;\n}\n#progress{\n\theight:16px;\n\tbackground:#8FB5E8 url(img/progressbg.gif);\n}\n#progressBar span{\n\tposition: absolute;\n\ttext-align: center;\n\twidth:100%;line-height:16px;\n\tcolor:#396095;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\n<head>\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>MultiUpload Demo</title>\n<link href=\"multiupload.css\" rel=\"stylesheet\" type=\"text/css\" />\n<script type=\"text/javascript\" src=\"../../jquery/jquery-1.4.4.min.js\"></script>\n<script type=\"text/javascript\" src=\"swfupload/swfupload.js\"></script>\n<script type=\"text/javascript\" src=\"multiupload.js\"></script>\n<script type=\"text/javascript\">\n$(window).load(pageInit);\nfunction pageInit()\n{\n\tvar uploadurl='../upload.php',ext='所有文件 (*.*)',size='2 MB',count=5,useget=0,params={}//默认值 \n\n\tuploadurl=getQuery('uploadurl')||uploadurl;ext=getQuery('ext')||ext;size=getQuery('size')||size;count=getQuery('count')||count;useget=getQuery('useget')||useget;\n\tvar tmpParams=getQuery('params');\n\tif(tmpParams)\n\t{\n\t\ttry{eval(\"tmpParams=\" + tmpParams);}catch(ex){};\n\t\tparams=$.extend({},params,tmpParams);\n\t}\n\text=ext.match(/([^\\(]+?)\\s*\\(\\s*([^\\)]+?)\\s*\\)/i);\n\tsetTimeout(fixHeight,10);\n\tswfu = new SWFUpload({\n\t\t// Flash组件\n\t\tflash_url : \"swfupload/swfupload.swf\",\n\t\tprevent_swf_caching : false,//是否缓存SWF文件\n\t\t\n\t\t// 服务器端\n\t\tupload_url: uploadurl,\n\t\tfile_post_name : \"filedata\",\n\t\tpost_params: params,//随文件上传一同向上传接收程序提交的Post数据\n\t\tuse_query_string : useget=='1'?true:false,//是否用GET方式发送参数\n\n\t\t// 文件设置\n\t\tfile_types : ext[2],//文件格式限制\n\t\tfile_types_description : ext[1],//文件格式描述\n\t\tfile_size_limit : size,\t// 文件大小限制\n\t\tfile_upload_limit : count,//上传文件总数\n\t\tfile_queue_limit:0,//上传队列总数\n\t\tcustom_settings : {\n\t\t\ttest : \"aaa\"\n\t\t},\n\t\t\t\n\t\t// 事件处理\n\t\tfile_queued_handler : fileQueued,//添加成功\n\t\tfile_queue_error_handler : fileQueueError,//添加失败\n\t\tupload_start_handler : uploadStart,//上传开始\n\t\tupload_progress_handler : uploadProgress,//上传进度\n\t\tupload_error_handler : uploadError,//上传失败\n\t\tupload_success_handler : uploadSuccess,//上传成功\n\t\tupload_complete_handler : uploadComplete,//上传结束\n\n\t\t// 按钮设置\n\t\tbutton_placeholder_id : \"divAddFiles\",\n\t\tbutton_width: 69,\n\t\tbutton_height: 17,\n\t\tbutton_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,\n\t\tbutton_cursor: SWFUpload.CURSOR.HAND,\n\t\tbutton_image_url : \"img/add.gif\",\n\t\tbutton_text: '<span class=\"theFont\">添加文件</span>',\n\t\tbutton_text_style: \".theFont { font-size: 12px; }\",\n\t\tbutton_text_left_padding: 20,\n\t\tbutton_text_top_padding: 0,\n\t\t\n\t\t// 调试设置\n\t\tdebug: false\n\t});\n}\nfunction fixHeight(){$('#listArea').css('height',(document.body.clientHeight-56)+'px');}\nfunction getQuery(item){var svalue = location.search.match(new RegExp('[\\?\\&]' + item + '=([^\\&]*)(\\&?)','i'));return svalue?decodeURIComponent(svalue[1]):'';} \n\n//----------------跨域支持代码开始(非跨域环境请删除这段代码)----------------\nvar JSON = JSON || {};\nJSON.stringify = JSON.stringify || function (obj) {\n\tvar t = typeof (obj);\n\tif (t != \"object\" || obj === null) {\n\t\tif (t == \"string\")obj = '\"'+obj+'\"';\n\t\treturn String(obj);\n\t}\n\telse {\n\t\tvar n, v, json = [], arr = (obj && obj.constructor == Array);\n\t\tfor (n in obj) {\n\t\t\tv = obj[n]; t = typeof(v);\n\t\t\tif (t == \"string\") v = '\"'+v+'\"';\n\t\t\telse if (t == \"object\" && v !== null) v = JSON.stringify(v);\n\t\t\tjson.push((arr ? \"\" : '\"' + n + '\":') + String(v));\n\t\t}\n\t\treturn (arr ? \"[\" : \"{\") + String(json) + (arr ? \"]\" : \"}\");\n\t}\n};\nvar callback= callback || function(v){\n\tv=JSON.stringify(v);\n\twindow.name=escape(v);\n\twindow.location='http://'+location.search.match(/[\\?&]parenthost=(.*)(&|$)/i)[1]+'/xheditorproxy.html';//这个文件最好是一个0字节文件，如果无此文件也会正常工作\n}\n//----------------跨域支持代码结束----------------\n</script>\n</head>\n<body>\n\t<div id=\"upload\">\n\t\t<div id=\"buttonArea\">\n\t\t\t<div id=\"controlBtns\" style=\"display:none;\"><a href=\"javascript:void(0);\" id=\"btnClear\" onclick=\"removeFile();\" class=\"btn\" style=\"display:none;\"><span><img src=\"img/clear.gif\" /> 删除文件</span></a> <a href=\"javascript:void(0);\" id=\"btnStart\" onclick=\"startUploadFiles();\" class=\"btn\"><span><img src=\"img/start.gif\" /> 开始上传</span></a></div>\n\t\t\t<a href=\"javascript:void(0);\" id=\"addFiles\" class=\"btn\"><span><div id=\"divAddFiles\">添加文件</div></span></a>\n\t\t</div>\n\t\t<div id=\"listArea\">\n\t\t\t<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n\t\t\t\t<thead id=\"listTitle\"><tr><td width=\"53%\">文件名</td><td width=\"25%\">大小</td><td width=\"22%\">状态</td></tr></thead>\n\t\t\t\t<tbody id=\"listBody\">\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t\t<div id=\"progressArea\">\n\t\t\t<div id=\"progressBar\"><span>0%</span><div id=\"progress\" style=\"width:1px;\"></div></div>\n\t\t</div>\n\t</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/multiupload.js",
    "content": "/*!\n * MultiUpload for xheditor\n * @requires xhEditor\n * \n * @author Yanis.Wang<yanis.wang@gmail.com>\n * @site http://xheditor.com/\n * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)\n * \n * @Version: 0.9.2 (build 100505)\n */\nvar swfu,selQueue=[],selectID,arrMsg=[],allSize=0,uploadSize=0;\nfunction removeFile()\n{\n\tvar file;\n\tif(!selectID)return;\n\tfor(var i in selQueue)\n\t{\n\t\tfile=selQueue[i];\n\t\tif(file.id==selectID)\n\t\t{\n\t\t\tselQueue.splice(i,1);\n\t\t\tallSize-=file.size;\n\t\t\tswfu.cancelUpload(file.id);\n\t\t\t$('#'+file.id).remove();\n\t\t\tselectID=null;\n\t\t\tbreak;\n\t\t}\n\t}\n\t$('#btnClear').hide();\n\tif(selQueue.length==0)$('#controlBtns').hide();\n}\nfunction startUploadFiles()\n{\n\tif(swfu.getStats().files_queued>0)\n\t{\n\t\t$('#controlBtns').hide();\n\t\tswfu.startUpload();\n\t}\n\telse alert('上传前请先添加文件');\n}\nfunction setFileState(fileid,txt)\n{\n\t$('#'+fileid+'_state').text(txt);\n}\nfunction fileQueued(file)//队列添加成功\n{\n\tfor(var i in selQueue)if(selQueue[i].name==file.name){swfu.cancelUpload(file.id);return false;}//防止同名文件重复添加\n\tif(selQueue.length==0)$('#controlBtns').show();\n\tselQueue.push(file);\n\tallSize+=file.size;\n\t$('#listBody').append('<tr id=\"'+file.id+'\"><td>'+file.name+'</td><td>'+formatBytes(file.size)+'</td><td id=\"'+file.id+'_state\">就绪</td></tr>');\n\t$('#'+file.id).hover(function(){$(this).addClass('hover');},function(){$(this).removeClass('hover');})\n\t.click(function(){selectID=file.id;$('#listBody tr').removeClass('select');$(this).removeClass('hover').addClass('select');$('#btnClear').show();})\n}\nfunction fileQueueError(file, errorCode, message)//队列添加失败\n{\n\tvar errorName='';\n\tswitch (errorCode)\n\t{\n\t\tcase SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:\n\t\t\terrorName = \"只能同时上传 \"+this.settings.file_upload_limit+\" 个文件\";\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:\n\t\t\terrorName = \"选择的文件超过了当前大小限制：\"+this.settings.file_size_limit;\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:\n\t\t\terrorName = \"零大小文件\";\n\t\t\tbreak;\n\t\tcase SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:\n\t\t\terrorName = \"文件扩展名必需为：\"+this.settings.file_types_description+\" (\"+this.settings.file_types+\")\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\terrorName = \"未知错误\";\n\t\t\tbreak;\n\t}\n\talert(errorName);\n}\nfunction uploadStart(file)//单文件上传开始\n{\n\tsetFileState(file.id,'上传中…');\n}\nfunction uploadProgress(file, bytesLoaded, bytesTotal)//单文件上传进度\n{\n\tvar percent=Math.ceil((uploadSize+bytesLoaded)/allSize*100);\n\t$('#progressBar span').text(percent+'% ('+formatBytes(uploadSize+bytesLoaded)+' / '+formatBytes(allSize)+')');\n\t$('#progressBar div').css('width',percent+'%');\n}\nfunction uploadSuccess(file, serverData)//单文件上传成功\n{\n\tvar data=Object;\n\ttry{eval(\"data=\" + serverData);}catch(ex){};\n\tif(data.err!=undefined&&data.msg!=undefined)\n\t{\n\t\tif(!data.err)\n\t\t{\n\t\t\tuploadSize+=file.size;\n\t\t\tarrMsg.push(data.msg);\n\t\t\tsetFileState(file.id,'上传成功');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetFileState(file.id,'上传失败');\n\t\t\talert(data.err);\n\t\t}\n\t}\n\telse setFileState(file.id,'上传失败！');\n}\nfunction uploadError(file, errorCode, message)//单文件上传错误\n{\n\tsetFileState(file.id,'上传失败！');\n}\nfunction uploadComplete(file)//文件上传周期结束\n{\n\tif(swfu.getStats().files_queued>0)swfu.startUpload();\n\telse uploadAllComplete();\n}\nfunction uploadAllComplete()//全部文件上传成功\n{\n\tcallback(arrMsg);\n}\nfunction formatBytes(bytes) {\n\tvar s = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\tvar e = Math.floor(Math.log(bytes)/Math.log(1024));\n\treturn (bytes/Math.pow(1024, Math.floor(e))).toFixed(2)+\" \"+s[e];\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/multiupload/swfupload/swfupload.js",
    "content": "/**\n * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com\n *\n * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/\n *\n * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz�n and Mammon Media and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:\n * http://www.opensource.org/licenses/mit-license.php\n *\n */\n\n\n/* ******************* */\n/* Constructor & Init  */\n/* ******************* */\nvar SWFUpload;\n\nif (SWFUpload == undefined) {\n\tSWFUpload = function (settings) {\n\t\tthis.initSWFUpload(settings);\n\t};\n}\n\nSWFUpload.prototype.initSWFUpload = function (settings) {\n\ttry {\n\t\tthis.customSettings = {};\t// A container where developers can place their own settings associated with this instance.\n\t\tthis.settings = settings;\n\t\tthis.eventQueue = [];\n\t\tthis.movieName = \"SWFUpload_\" + SWFUpload.movieCount++;\n\t\tthis.movieElement = null;\n\n\n\t\t// Setup global control tracking\n\t\tSWFUpload.instances[this.movieName] = this;\n\n\t\t// Load the settings.  Load the Flash movie.\n\t\tthis.initSettings();\n\t\tthis.loadFlash();\n\t\tthis.displayDebugInfo();\n\t} catch (ex) {\n\t\tdelete SWFUpload.instances[this.movieName];\n\t\tthrow ex;\n\t}\n};\n\n/* *************** */\n/* Static Members  */\n/* *************** */\nSWFUpload.instances = {};\nSWFUpload.movieCount = 0;\nSWFUpload.version = \"2.2.0 2009-03-25\";\nSWFUpload.QUEUE_ERROR = {\n\tQUEUE_LIMIT_EXCEEDED\t  \t\t: -100,\n\tFILE_EXCEEDS_SIZE_LIMIT  \t\t: -110,\n\tZERO_BYTE_FILE\t\t\t  \t\t: -120,\n\tINVALID_FILETYPE\t\t  \t\t: -130\n};\nSWFUpload.UPLOAD_ERROR = {\n\tHTTP_ERROR\t\t\t\t  \t\t: -200,\n\tMISSING_UPLOAD_URL\t      \t\t: -210,\n\tIO_ERROR\t\t\t\t  \t\t: -220,\n\tSECURITY_ERROR\t\t\t  \t\t: -230,\n\tUPLOAD_LIMIT_EXCEEDED\t  \t\t: -240,\n\tUPLOAD_FAILED\t\t\t  \t\t: -250,\n\tSPECIFIED_FILE_ID_NOT_FOUND\t\t: -260,\n\tFILE_VALIDATION_FAILED\t  \t\t: -270,\n\tFILE_CANCELLED\t\t\t  \t\t: -280,\n\tUPLOAD_STOPPED\t\t\t\t\t: -290\n};\nSWFUpload.FILE_STATUS = {\n\tQUEUED\t\t : -1,\n\tIN_PROGRESS\t : -2,\n\tERROR\t\t : -3,\n\tCOMPLETE\t : -4,\n\tCANCELLED\t : -5\n};\nSWFUpload.BUTTON_ACTION = {\n\tSELECT_FILE  : -100,\n\tSELECT_FILES : -110,\n\tSTART_UPLOAD : -120\n};\nSWFUpload.CURSOR = {\n\tARROW : -1,\n\tHAND : -2\n};\nSWFUpload.WINDOW_MODE = {\n\tWINDOW : \"window\",\n\tTRANSPARENT : \"transparent\",\n\tOPAQUE : \"opaque\"\n};\n\n// Private: takes a URL, determines if it is relative and converts to an absolute URL\n// using the current site. Only processes the URL if it can, otherwise returns the URL untouched\nSWFUpload.completeURL = function(url) {\n\tif (typeof(url) !== \"string\" || url.match(/^https?:\\/\\//i) || url.match(/^\\//)) {\n\t\treturn url;\n\t}\n\t\n\tvar currentURL = window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? \":\" + window.location.port : \"\");\n\t\n\tvar indexSlash = window.location.pathname.lastIndexOf(\"/\");\n\tif (indexSlash <= 0) {\n\t\tpath = \"/\";\n\t} else {\n\t\tpath = window.location.pathname.substr(0, indexSlash) + \"/\";\n\t}\n\t\n\treturn /*currentURL +*/ path + url;\n\t\n};\n\n\n/* ******************** */\n/* Instance Members  */\n/* ******************** */\n\n// Private: initSettings ensures that all the\n// settings are set, getting a default value if one was not assigned.\nSWFUpload.prototype.initSettings = function () {\n\tthis.ensureDefault = function (settingName, defaultValue) {\n\t\tthis.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];\n\t};\n\t\n\t// Upload backend settings\n\tthis.ensureDefault(\"upload_url\", \"\");\n\tthis.ensureDefault(\"preserve_relative_urls\", false);\n\tthis.ensureDefault(\"file_post_name\", \"Filedata\");\n\tthis.ensureDefault(\"post_params\", {});\n\tthis.ensureDefault(\"use_query_string\", false);\n\tthis.ensureDefault(\"requeue_on_error\", false);\n\tthis.ensureDefault(\"http_success\", []);\n\tthis.ensureDefault(\"assume_success_timeout\", 0);\n\t\n\t// File Settings\n\tthis.ensureDefault(\"file_types\", \"*.*\");\n\tthis.ensureDefault(\"file_types_description\", \"All Files\");\n\tthis.ensureDefault(\"file_size_limit\", 0);\t// Default zero means \"unlimited\"\n\tthis.ensureDefault(\"file_upload_limit\", 0);\n\tthis.ensureDefault(\"file_queue_limit\", 0);\n\n\t// Flash Settings\n\tthis.ensureDefault(\"flash_url\", \"swfupload.swf\");\n\tthis.ensureDefault(\"prevent_swf_caching\", true);\n\t\n\t// Button Settings\n\tthis.ensureDefault(\"button_image_url\", \"\");\n\tthis.ensureDefault(\"button_width\", 1);\n\tthis.ensureDefault(\"button_height\", 1);\n\tthis.ensureDefault(\"button_text\", \"\");\n\tthis.ensureDefault(\"button_text_style\", \"color: #000000; font-size: 16pt;\");\n\tthis.ensureDefault(\"button_text_top_padding\", 0);\n\tthis.ensureDefault(\"button_text_left_padding\", 0);\n\tthis.ensureDefault(\"button_action\", SWFUpload.BUTTON_ACTION.SELECT_FILES);\n\tthis.ensureDefault(\"button_disabled\", false);\n\tthis.ensureDefault(\"button_placeholder_id\", \"\");\n\tthis.ensureDefault(\"button_placeholder\", null);\n\tthis.ensureDefault(\"button_cursor\", SWFUpload.CURSOR.ARROW);\n\tthis.ensureDefault(\"button_window_mode\", SWFUpload.WINDOW_MODE.WINDOW);\n\t\n\t// Debug Settings\n\tthis.ensureDefault(\"debug\", false);\n\tthis.settings.debug_enabled = this.settings.debug;\t// Here to maintain v2 API\n\t\n\t// Event Handlers\n\tthis.settings.return_upload_start_handler = this.returnUploadStart;\n\tthis.ensureDefault(\"swfupload_loaded_handler\", null);\n\tthis.ensureDefault(\"file_dialog_start_handler\", null);\n\tthis.ensureDefault(\"file_queued_handler\", null);\n\tthis.ensureDefault(\"file_queue_error_handler\", null);\n\tthis.ensureDefault(\"file_dialog_complete_handler\", null);\n\t\n\tthis.ensureDefault(\"upload_start_handler\", null);\n\tthis.ensureDefault(\"upload_progress_handler\", null);\n\tthis.ensureDefault(\"upload_error_handler\", null);\n\tthis.ensureDefault(\"upload_success_handler\", null);\n\tthis.ensureDefault(\"upload_complete_handler\", null);\n\t\n\tthis.ensureDefault(\"debug_handler\", this.debugMessage);\n\n\tthis.ensureDefault(\"custom_settings\", {});\n\n\t// Other settings\n\tthis.customSettings = this.settings.custom_settings;\n\t\n\t// Update the flash url if needed\n\tif (!!this.settings.prevent_swf_caching) {\n\t\tthis.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + \"preventswfcaching=\" + new Date().getTime();\n\t}\n\t\n\tif (!this.settings.preserve_relative_urls) {\n\t\t//this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url);\t// Don't need to do this one since flash doesn't look at it\n\t\tthis.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);\n\t\tthis.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);\n\t}\n\t\n\tdelete this.ensureDefault;\n};\n\n// Private: loadFlash replaces the button_placeholder element with the flash movie.\nSWFUpload.prototype.loadFlash = function () {\n\tvar targetElement, tempParent;\n\n\t// Make sure an element with the ID we are going to use doesn't already exist\n\tif (document.getElementById(this.movieName) !== null) {\n\t\tthrow \"ID \" + this.movieName + \" is already in use. The Flash Object could not be added\";\n\t}\n\n\t// Get the element where we will be placing the flash movie\n\ttargetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;\n\n\tif (targetElement == undefined) {\n\t\tthrow \"Could not find the placeholder element: \" + this.settings.button_placeholder_id;\n\t}\n\n\t// Append the container and load the flash\n\ttempParent = document.createElement(\"div\");\n\ttempParent.innerHTML = this.getFlashHTML();\t// Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)\n\ttargetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);\n\n\t// Fix IE Flash/Form bug\n\tif (window[this.movieName] == undefined) {\n\t\twindow[this.movieName] = this.getMovieElement();\n\t}\n\t\n};\n\n// Private: getFlashHTML generates the object tag needed to embed the flash in to the document\nSWFUpload.prototype.getFlashHTML = function () {\n\t// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay\n\treturn ['<object id=\"', this.movieName, '\" type=\"application/x-shockwave-flash\" data=\"', this.settings.flash_url, '\" width=\"', this.settings.button_width, '\" height=\"', this.settings.button_height, '\" class=\"swfupload\">',\n\t\t\t\t'<param name=\"wmode\" value=\"', this.settings.button_window_mode, '\" />',\n\t\t\t\t'<param name=\"movie\" value=\"', this.settings.flash_url, '\" />',\n\t\t\t\t'<param name=\"quality\" value=\"high\" />',\n\t\t\t\t'<param name=\"menu\" value=\"false\" />',\n\t\t\t\t'<param name=\"allowScriptAccess\" value=\"always\" />',\n\t\t\t\t'<param name=\"flashvars\" value=\"' + this.getFlashVars() + '\" />',\n\t\t\t\t'</object>'].join(\"\");\n};\n\n// Private: getFlashVars builds the parameter string that will be passed\n// to flash in the flashvars param.\nSWFUpload.prototype.getFlashVars = function () {\n\t// Build a string from the post param object\n\tvar paramString = this.buildParamString();\n\tvar httpSuccessString = this.settings.http_success.join(\",\");\n\t\n\t// Build the parameter string\n\treturn [\"movieName=\", encodeURIComponent(this.movieName),\n\t\t\t\"&amp;uploadURL=\", encodeURIComponent(this.settings.upload_url),\n\t\t\t\"&amp;useQueryString=\", encodeURIComponent(this.settings.use_query_string),\n\t\t\t\"&amp;requeueOnError=\", encodeURIComponent(this.settings.requeue_on_error),\n\t\t\t\"&amp;httpSuccess=\", encodeURIComponent(httpSuccessString),\n\t\t\t\"&amp;assumeSuccessTimeout=\", encodeURIComponent(this.settings.assume_success_timeout),\n\t\t\t\"&amp;params=\", encodeURIComponent(paramString),\n\t\t\t\"&amp;filePostName=\", encodeURIComponent(this.settings.file_post_name),\n\t\t\t\"&amp;fileTypes=\", encodeURIComponent(this.settings.file_types),\n\t\t\t\"&amp;fileTypesDescription=\", encodeURIComponent(this.settings.file_types_description),\n\t\t\t\"&amp;fileSizeLimit=\", encodeURIComponent(this.settings.file_size_limit),\n\t\t\t\"&amp;fileUploadLimit=\", encodeURIComponent(this.settings.file_upload_limit),\n\t\t\t\"&amp;fileQueueLimit=\", encodeURIComponent(this.settings.file_queue_limit),\n\t\t\t\"&amp;debugEnabled=\", encodeURIComponent(this.settings.debug_enabled),\n\t\t\t\"&amp;buttonImageURL=\", encodeURIComponent(this.settings.button_image_url),\n\t\t\t\"&amp;buttonWidth=\", encodeURIComponent(this.settings.button_width),\n\t\t\t\"&amp;buttonHeight=\", encodeURIComponent(this.settings.button_height),\n\t\t\t\"&amp;buttonText=\", encodeURIComponent(this.settings.button_text),\n\t\t\t\"&amp;buttonTextTopPadding=\", encodeURIComponent(this.settings.button_text_top_padding),\n\t\t\t\"&amp;buttonTextLeftPadding=\", encodeURIComponent(this.settings.button_text_left_padding),\n\t\t\t\"&amp;buttonTextStyle=\", encodeURIComponent(this.settings.button_text_style),\n\t\t\t\"&amp;buttonAction=\", encodeURIComponent(this.settings.button_action),\n\t\t\t\"&amp;buttonDisabled=\", encodeURIComponent(this.settings.button_disabled),\n\t\t\t\"&amp;buttonCursor=\", encodeURIComponent(this.settings.button_cursor)\n\t\t].join(\"\");\n};\n\n// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload\n// The element is cached after the first lookup\nSWFUpload.prototype.getMovieElement = function () {\n\tif (this.movieElement == undefined) {\n\t\tthis.movieElement = document.getElementById(this.movieName);\n\t}\n\n\tif (this.movieElement === null) {\n\t\tthrow \"Could not find Flash element\";\n\t}\n\t\n\treturn this.movieElement;\n};\n\n// Private: buildParamString takes the name/value pairs in the post_params setting object\n// and joins them up in to a string formatted \"name=value&amp;name=value\"\nSWFUpload.prototype.buildParamString = function () {\n\tvar postParams = this.settings.post_params; \n\tvar paramStringPairs = [];\n\n\tif (typeof(postParams) === \"object\") {\n\t\tfor (var name in postParams) {\n\t\t\tif (postParams.hasOwnProperty(name)) {\n\t\t\t\tparamStringPairs.push(encodeURIComponent(name.toString()) + \"=\" + encodeURIComponent(postParams[name].toString()));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn paramStringPairs.join(\"&amp;\");\n};\n\n// Public: Used to remove a SWFUpload instance from the page. This method strives to remove\n// all references to the SWF, and other objects so memory is properly freed.\n// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.\n// Credits: Major improvements provided by steffen\nSWFUpload.prototype.destroy = function () {\n\ttry {\n\t\t// Make sure Flash is done before we try to remove it\n\t\tthis.cancelUpload(null, false);\n\t\t\n\n\t\t// Remove the SWFUpload DOM nodes\n\t\tvar movieElement = null;\n\t\tmovieElement = this.getMovieElement();\n\t\t\n\t\tif (movieElement && typeof(movieElement.CallFunction) === \"unknown\") { // We only want to do this in IE\n\t\t\t// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)\n\t\t\tfor (var i in movieElement) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof(movieElement[i]) === \"function\") {\n\t\t\t\t\t\tmovieElement[i] = null;\n\t\t\t\t\t}\n\t\t\t\t} catch (ex1) {}\n\t\t\t}\n\n\t\t\t// Remove the Movie Element from the page\n\t\t\ttry {\n\t\t\t\tmovieElement.parentNode.removeChild(movieElement);\n\t\t\t} catch (ex) {}\n\t\t}\n\t\t\n\t\t// Remove IE form fix reference\n\t\twindow[this.movieName] = null;\n\n\t\t// Destroy other references\n\t\tSWFUpload.instances[this.movieName] = null;\n\t\tdelete SWFUpload.instances[this.movieName];\n\n\t\tthis.movieElement = null;\n\t\tthis.settings = null;\n\t\tthis.customSettings = null;\n\t\tthis.eventQueue = null;\n\t\tthis.movieName = null;\n\t\t\n\t\t\n\t\treturn true;\n\t} catch (ex2) {\n\t\treturn false;\n\t}\n};\n\n\n// Public: displayDebugInfo prints out settings and configuration\n// information about this SWFUpload instance.\n// This function (and any references to it) can be deleted when placing\n// SWFUpload in production.\nSWFUpload.prototype.displayDebugInfo = function () {\n\tthis.debug(\n\t\t[\n\t\t\t\"---SWFUpload Instance Info---\\n\",\n\t\t\t\"Version: \", SWFUpload.version, \"\\n\",\n\t\t\t\"Movie Name: \", this.movieName, \"\\n\",\n\t\t\t\"Settings:\\n\",\n\t\t\t\"\\t\", \"upload_url:               \", this.settings.upload_url, \"\\n\",\n\t\t\t\"\\t\", \"flash_url:                \", this.settings.flash_url, \"\\n\",\n\t\t\t\"\\t\", \"use_query_string:         \", this.settings.use_query_string.toString(), \"\\n\",\n\t\t\t\"\\t\", \"requeue_on_error:         \", this.settings.requeue_on_error.toString(), \"\\n\",\n\t\t\t\"\\t\", \"http_success:             \", this.settings.http_success.join(\", \"), \"\\n\",\n\t\t\t\"\\t\", \"assume_success_timeout:   \", this.settings.assume_success_timeout, \"\\n\",\n\t\t\t\"\\t\", \"file_post_name:           \", this.settings.file_post_name, \"\\n\",\n\t\t\t\"\\t\", \"post_params:              \", this.settings.post_params.toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_types:               \", this.settings.file_types, \"\\n\",\n\t\t\t\"\\t\", \"file_types_description:   \", this.settings.file_types_description, \"\\n\",\n\t\t\t\"\\t\", \"file_size_limit:          \", this.settings.file_size_limit, \"\\n\",\n\t\t\t\"\\t\", \"file_upload_limit:        \", this.settings.file_upload_limit, \"\\n\",\n\t\t\t\"\\t\", \"file_queue_limit:         \", this.settings.file_queue_limit, \"\\n\",\n\t\t\t\"\\t\", \"debug:                    \", this.settings.debug.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"prevent_swf_caching:      \", this.settings.prevent_swf_caching.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"button_placeholder_id:    \", this.settings.button_placeholder_id.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_placeholder:       \", (this.settings.button_placeholder ? \"Set\" : \"Not Set\"), \"\\n\",\n\t\t\t\"\\t\", \"button_image_url:         \", this.settings.button_image_url.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_width:             \", this.settings.button_width.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_height:            \", this.settings.button_height.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text:              \", this.settings.button_text.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_style:        \", this.settings.button_text_style.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_top_padding:  \", this.settings.button_text_top_padding.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_text_left_padding: \", this.settings.button_text_left_padding.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_action:            \", this.settings.button_action.toString(), \"\\n\",\n\t\t\t\"\\t\", \"button_disabled:          \", this.settings.button_disabled.toString(), \"\\n\",\n\n\t\t\t\"\\t\", \"custom_settings:          \", this.settings.custom_settings.toString(), \"\\n\",\n\t\t\t\"Event Handlers:\\n\",\n\t\t\t\"\\t\", \"swfupload_loaded_handler assigned:  \", (typeof this.settings.swfupload_loaded_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_dialog_start_handler assigned: \", (typeof this.settings.file_dialog_start_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_queued_handler assigned:       \", (typeof this.settings.file_queued_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"file_queue_error_handler assigned:  \", (typeof this.settings.file_queue_error_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_start_handler assigned:      \", (typeof this.settings.upload_start_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_progress_handler assigned:   \", (typeof this.settings.upload_progress_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_error_handler assigned:      \", (typeof this.settings.upload_error_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_success_handler assigned:    \", (typeof this.settings.upload_success_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"upload_complete_handler assigned:   \", (typeof this.settings.upload_complete_handler === \"function\").toString(), \"\\n\",\n\t\t\t\"\\t\", \"debug_handler assigned:             \", (typeof this.settings.debug_handler === \"function\").toString(), \"\\n\"\n\t\t].join(\"\")\n\t);\n};\n\n/* Note: addSetting and getSetting are no longer used by SWFUpload but are included\n\tthe maintain v2 API compatibility\n*/\n// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.\nSWFUpload.prototype.addSetting = function (name, value, default_value) {\n    if (value == undefined) {\n        return (this.settings[name] = default_value);\n    } else {\n        return (this.settings[name] = value);\n\t}\n};\n\n// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.\nSWFUpload.prototype.getSetting = function (name) {\n    if (this.settings[name] != undefined) {\n        return this.settings[name];\n\t}\n\n    return \"\";\n};\n\n\n\n// Private: callFlash handles function calls made to the Flash element.\n// Calls are made with a setTimeout for some functions to work around\n// bugs in the ExternalInterface library.\nSWFUpload.prototype.callFlash = function (functionName, argumentArray) {\n\targumentArray = argumentArray || [];\n\t\n\tvar movieElement = this.getMovieElement();\n\tvar returnValue, returnString;\n\n\t// Flash's method if calling ExternalInterface methods (code adapted from MooTools).\n\ttry {\n\t\treturnString = movieElement.CallFunction('<invoke name=\"' + functionName + '\" returntype=\"javascript\">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');\n\t\treturnValue = eval(returnString);\n\t} catch (ex) {\n\t\tthrow \"Call to \" + functionName + \" failed\";\n\t}\n\t\n\t// Unescape file post param values\n\tif (returnValue != undefined && typeof returnValue.post === \"object\") {\n\t\treturnValue = this.unescapeFilePostParams(returnValue);\n\t}\n\n\treturn returnValue;\n};\n\n/* *****************************\n\t-- Flash control methods --\n\tYour UI should use these\n\tto operate SWFUpload\n   ***************************** */\n\n// WARNING: this function does not work in Flash Player 10\n// Public: selectFile causes a File Selection Dialog window to appear.  This\n// dialog only allows 1 file to be selected.\nSWFUpload.prototype.selectFile = function () {\n\tthis.callFlash(\"SelectFile\");\n};\n\n// WARNING: this function does not work in Flash Player 10\n// Public: selectFiles causes a File Selection Dialog window to appear/ This\n// dialog allows the user to select any number of files\n// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.\n// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around\n// for this bug.\nSWFUpload.prototype.selectFiles = function () {\n\tthis.callFlash(\"SelectFiles\");\n};\n\n\n// Public: startUpload starts uploading the first file in the queue unless\n// the optional parameter 'fileID' specifies the ID \nSWFUpload.prototype.startUpload = function (fileID) {\n\tthis.callFlash(\"StartUpload\", [fileID]);\n};\n\n// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.\n// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.\n// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.\nSWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {\n\tif (triggerErrorEvent !== false) {\n\t\ttriggerErrorEvent = true;\n\t}\n\tthis.callFlash(\"CancelUpload\", [fileID, triggerErrorEvent]);\n};\n\n// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.\n// If nothing is currently uploading then nothing happens.\nSWFUpload.prototype.stopUpload = function () {\n\tthis.callFlash(\"StopUpload\");\n};\n\n/* ************************\n * Settings methods\n *   These methods change the SWFUpload settings.\n *   SWFUpload settings should not be changed directly on the settings object\n *   since many of the settings need to be passed to Flash in order to take\n *   effect.\n * *********************** */\n\n// Public: getStats gets the file statistics object.\nSWFUpload.prototype.getStats = function () {\n\treturn this.callFlash(\"GetStats\");\n};\n\n// Public: setStats changes the SWFUpload statistics.  You shouldn't need to \n// change the statistics but you can.  Changing the statistics does not\n// affect SWFUpload accept for the successful_uploads count which is used\n// by the upload_limit setting to determine how many files the user may upload.\nSWFUpload.prototype.setStats = function (statsObject) {\n\tthis.callFlash(\"SetStats\", [statsObject]);\n};\n\n// Public: getFile retrieves a File object by ID or Index.  If the file is\n// not found then 'null' is returned.\nSWFUpload.prototype.getFile = function (fileID) {\n\tif (typeof(fileID) === \"number\") {\n\t\treturn this.callFlash(\"GetFileByIndex\", [fileID]);\n\t} else {\n\t\treturn this.callFlash(\"GetFile\", [fileID]);\n\t}\n};\n\n// Public: addFileParam sets a name/value pair that will be posted with the\n// file specified by the Files ID.  If the name already exists then the\n// exiting value will be overwritten.\nSWFUpload.prototype.addFileParam = function (fileID, name, value) {\n\treturn this.callFlash(\"AddFileParam\", [fileID, name, value]);\n};\n\n// Public: removeFileParam removes a previously set (by addFileParam) name/value\n// pair from the specified file.\nSWFUpload.prototype.removeFileParam = function (fileID, name) {\n\tthis.callFlash(\"RemoveFileParam\", [fileID, name]);\n};\n\n// Public: setUploadUrl changes the upload_url setting.\nSWFUpload.prototype.setUploadURL = function (url) {\n\tthis.settings.upload_url = url.toString();\n\tthis.callFlash(\"SetUploadURL\", [url]);\n};\n\n// Public: setPostParams changes the post_params setting\nSWFUpload.prototype.setPostParams = function (paramsObject) {\n\tthis.settings.post_params = paramsObject;\n\tthis.callFlash(\"SetPostParams\", [paramsObject]);\n};\n\n// Public: addPostParam adds post name/value pair.  Each name can have only one value.\nSWFUpload.prototype.addPostParam = function (name, value) {\n\tthis.settings.post_params[name] = value;\n\tthis.callFlash(\"SetPostParams\", [this.settings.post_params]);\n};\n\n// Public: removePostParam deletes post name/value pair.\nSWFUpload.prototype.removePostParam = function (name) {\n\tdelete this.settings.post_params[name];\n\tthis.callFlash(\"SetPostParams\", [this.settings.post_params]);\n};\n\n// Public: setFileTypes changes the file_types setting and the file_types_description setting\nSWFUpload.prototype.setFileTypes = function (types, description) {\n\tthis.settings.file_types = types;\n\tthis.settings.file_types_description = description;\n\tthis.callFlash(\"SetFileTypes\", [types, description]);\n};\n\n// Public: setFileSizeLimit changes the file_size_limit setting\nSWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {\n\tthis.settings.file_size_limit = fileSizeLimit;\n\tthis.callFlash(\"SetFileSizeLimit\", [fileSizeLimit]);\n};\n\n// Public: setFileUploadLimit changes the file_upload_limit setting\nSWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {\n\tthis.settings.file_upload_limit = fileUploadLimit;\n\tthis.callFlash(\"SetFileUploadLimit\", [fileUploadLimit]);\n};\n\n// Public: setFileQueueLimit changes the file_queue_limit setting\nSWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {\n\tthis.settings.file_queue_limit = fileQueueLimit;\n\tthis.callFlash(\"SetFileQueueLimit\", [fileQueueLimit]);\n};\n\n// Public: setFilePostName changes the file_post_name setting\nSWFUpload.prototype.setFilePostName = function (filePostName) {\n\tthis.settings.file_post_name = filePostName;\n\tthis.callFlash(\"SetFilePostName\", [filePostName]);\n};\n\n// Public: setUseQueryString changes the use_query_string setting\nSWFUpload.prototype.setUseQueryString = function (useQueryString) {\n\tthis.settings.use_query_string = useQueryString;\n\tthis.callFlash(\"SetUseQueryString\", [useQueryString]);\n};\n\n// Public: setRequeueOnError changes the requeue_on_error setting\nSWFUpload.prototype.setRequeueOnError = function (requeueOnError) {\n\tthis.settings.requeue_on_error = requeueOnError;\n\tthis.callFlash(\"SetRequeueOnError\", [requeueOnError]);\n};\n\n// Public: setHTTPSuccess changes the http_success setting\nSWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {\n\tif (typeof http_status_codes === \"string\") {\n\t\thttp_status_codes = http_status_codes.replace(\" \", \"\").split(\",\");\n\t}\n\t\n\tthis.settings.http_success = http_status_codes;\n\tthis.callFlash(\"SetHTTPSuccess\", [http_status_codes]);\n};\n\n// Public: setHTTPSuccess changes the http_success setting\nSWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {\n\tthis.settings.assume_success_timeout = timeout_seconds;\n\tthis.callFlash(\"SetAssumeSuccessTimeout\", [timeout_seconds]);\n};\n\n// Public: setDebugEnabled changes the debug_enabled setting\nSWFUpload.prototype.setDebugEnabled = function (debugEnabled) {\n\tthis.settings.debug_enabled = debugEnabled;\n\tthis.callFlash(\"SetDebugEnabled\", [debugEnabled]);\n};\n\n// Public: setButtonImageURL loads a button image sprite\nSWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {\n\tif (buttonImageURL == undefined) {\n\t\tbuttonImageURL = \"\";\n\t}\n\t\n\tthis.settings.button_image_url = buttonImageURL;\n\tthis.callFlash(\"SetButtonImageURL\", [buttonImageURL]);\n};\n\n// Public: setButtonDimensions resizes the Flash Movie and button\nSWFUpload.prototype.setButtonDimensions = function (width, height) {\n\tthis.settings.button_width = width;\n\tthis.settings.button_height = height;\n\t\n\tvar movie = this.getMovieElement();\n\tif (movie != undefined) {\n\t\tmovie.style.width = width + \"px\";\n\t\tmovie.style.height = height + \"px\";\n\t}\n\t\n\tthis.callFlash(\"SetButtonDimensions\", [width, height]);\n};\n// Public: setButtonText Changes the text overlaid on the button\nSWFUpload.prototype.setButtonText = function (html) {\n\tthis.settings.button_text = html;\n\tthis.callFlash(\"SetButtonText\", [html]);\n};\n// Public: setButtonTextPadding changes the top and left padding of the text overlay\nSWFUpload.prototype.setButtonTextPadding = function (left, top) {\n\tthis.settings.button_text_top_padding = top;\n\tthis.settings.button_text_left_padding = left;\n\tthis.callFlash(\"SetButtonTextPadding\", [left, top]);\n};\n\n// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button\nSWFUpload.prototype.setButtonTextStyle = function (css) {\n\tthis.settings.button_text_style = css;\n\tthis.callFlash(\"SetButtonTextStyle\", [css]);\n};\n// Public: setButtonDisabled disables/enables the button\nSWFUpload.prototype.setButtonDisabled = function (isDisabled) {\n\tthis.settings.button_disabled = isDisabled;\n\tthis.callFlash(\"SetButtonDisabled\", [isDisabled]);\n};\n// Public: setButtonAction sets the action that occurs when the button is clicked\nSWFUpload.prototype.setButtonAction = function (buttonAction) {\n\tthis.settings.button_action = buttonAction;\n\tthis.callFlash(\"SetButtonAction\", [buttonAction]);\n};\n\n// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button\nSWFUpload.prototype.setButtonCursor = function (cursor) {\n\tthis.settings.button_cursor = cursor;\n\tthis.callFlash(\"SetButtonCursor\", [cursor]);\n};\n\n/* *******************************\n\tFlash Event Interfaces\n\tThese functions are used by Flash to trigger the various\n\tevents.\n\t\n\tAll these functions a Private.\n\t\n\tBecause the ExternalInterface library is buggy the event calls\n\tare added to a queue and the queue then executed by a setTimeout.\n\tThis ensures that events are executed in a determinate order and that\n\tthe ExternalInterface bugs are avoided.\n******************************* */\n\nSWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {\n\t// Warning: Don't call this.debug inside here or you'll create an infinite loop\n\t\n\tif (argumentArray == undefined) {\n\t\targumentArray = [];\n\t} else if (!(argumentArray instanceof Array)) {\n\t\targumentArray = [argumentArray];\n\t}\n\t\n\tvar self = this;\n\tif (typeof this.settings[handlerName] === \"function\") {\n\t\t// Queue the event\n\t\tthis.eventQueue.push(function () {\n\t\t\tthis.settings[handlerName].apply(this, argumentArray);\n\t\t});\n\t\t\n\t\t// Execute the next queued event\n\t\tsetTimeout(function () {\n\t\t\tself.executeNextEvent();\n\t\t}, 0);\n\t\t\n\t} else if (this.settings[handlerName] !== null) {\n\t\tthrow \"Event handler \" + handlerName + \" is unknown or is not a function\";\n\t}\n};\n\n// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout\n// we must queue them in order to garentee that they are executed in order.\nSWFUpload.prototype.executeNextEvent = function () {\n\t// Warning: Don't call this.debug inside here or you'll create an infinite loop\n\n\tvar  f = this.eventQueue ? this.eventQueue.shift() : null;\n\tif (typeof(f) === \"function\") {\n\t\tf.apply(this);\n\t}\n};\n\n// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have\n// properties that contain characters that are not valid for JavaScript identifiers. To work around this\n// the Flash Component escapes the parameter names and we must unescape again before passing them along.\nSWFUpload.prototype.unescapeFilePostParams = function (file) {\n\tvar reg = /[$]([0-9a-f]{4})/i;\n\tvar unescapedPost = {};\n\tvar uk;\n\n\tif (file != undefined) {\n\t\tfor (var k in file.post) {\n\t\t\tif (file.post.hasOwnProperty(k)) {\n\t\t\t\tuk = k;\n\t\t\t\tvar match;\n\t\t\t\twhile ((match = reg.exec(uk)) !== null) {\n\t\t\t\t\tuk = uk.replace(match[0], String.fromCharCode(parseInt(\"0x\" + match[1], 16)));\n\t\t\t\t}\n\t\t\t\tunescapedPost[uk] = file.post[k];\n\t\t\t}\n\t\t}\n\n\t\tfile.post = unescapedPost;\n\t}\n\n\treturn file;\n};\n\n// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)\nSWFUpload.prototype.testExternalInterface = function () {\n\ttry {\n\t\treturn this.callFlash(\"TestExternalInterface\");\n\t} catch (ex) {\n\t\treturn false;\n\t}\n};\n\n// Private: This event is called by Flash when it has finished loading. Don't modify this.\n// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.\nSWFUpload.prototype.flashReady = function () {\n\t// Check that the movie element is loaded correctly with its ExternalInterface methods defined\n\tvar movieElement = this.getMovieElement();\n\n\tif (!movieElement) {\n\t\tthis.debug(\"Flash called back ready but the flash movie can't be found.\");\n\t\treturn;\n\t}\n\n\tthis.cleanUp(movieElement);\n\t\n\tthis.queueEvent(\"swfupload_loaded_handler\");\n};\n\n// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.\n// This function is called by Flash each time the ExternalInterface functions are created.\nSWFUpload.prototype.cleanUp = function (movieElement) {\n\t// Pro-actively unhook all the Flash functions\n\ttry {\n\t\tif (this.movieElement && typeof(movieElement.CallFunction) === \"unknown\") { // We only want to do this in IE\n\t\t\tthis.debug(\"Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)\");\n\t\t\tfor (var key in movieElement) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof(movieElement[key]) === \"function\") {\n\t\t\t\t\t\tmovieElement[key] = null;\n\t\t\t\t\t}\n\t\t\t\t} catch (ex) {\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (ex1) {\n\t\n\t}\n\n\t// Fix Flashes own cleanup code so if the SWFMovie was removed from the page\n\t// it doesn't display errors.\n\twindow[\"__flash__removeCallback\"] = function (instance, name) {\n\t\ttry {\n\t\t\tif (instance) {\n\t\t\t\tinstance[name] = null;\n\t\t\t}\n\t\t} catch (flashEx) {\n\t\t\n\t\t}\n\t};\n\n};\n\n\n/* This is a chance to do something before the browse window opens */\nSWFUpload.prototype.fileDialogStart = function () {\n\tthis.queueEvent(\"file_dialog_start_handler\");\n};\n\n\n/* Called when a file is successfully added to the queue. */\nSWFUpload.prototype.fileQueued = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"file_queued_handler\", file);\n};\n\n\n/* Handle errors that occur when an attempt to queue a file fails. */\nSWFUpload.prototype.fileQueueError = function (file, errorCode, message) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"file_queue_error_handler\", [file, errorCode, message]);\n};\n\n/* Called after the file dialog has closed and the selected files have been queued.\n\tYou could call startUpload here if you want the queued files to begin uploading immediately. */\nSWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {\n\tthis.queueEvent(\"file_dialog_complete_handler\", [numFilesSelected, numFilesQueued, numFilesInQueue]);\n};\n\nSWFUpload.prototype.uploadStart = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"return_upload_start_handler\", file);\n};\n\nSWFUpload.prototype.returnUploadStart = function (file) {\n\tvar returnValue;\n\tif (typeof this.settings.upload_start_handler === \"function\") {\n\t\tfile = this.unescapeFilePostParams(file);\n\t\treturnValue = this.settings.upload_start_handler.call(this, file);\n\t} else if (this.settings.upload_start_handler != undefined) {\n\t\tthrow \"upload_start_handler must be a function\";\n\t}\n\n\t// Convert undefined to true so if nothing is returned from the upload_start_handler it is\n\t// interpretted as 'true'.\n\tif (returnValue === undefined) {\n\t\treturnValue = true;\n\t}\n\t\n\treturnValue = !!returnValue;\n\t\n\tthis.callFlash(\"ReturnUploadStart\", [returnValue]);\n};\n\n\n\nSWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_progress_handler\", [file, bytesComplete, bytesTotal]);\n};\n\nSWFUpload.prototype.uploadError = function (file, errorCode, message) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_error_handler\", [file, errorCode, message]);\n};\n\nSWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_success_handler\", [file, serverData, responseReceived]);\n};\n\nSWFUpload.prototype.uploadComplete = function (file) {\n\tfile = this.unescapeFilePostParams(file);\n\tthis.queueEvent(\"upload_complete_handler\", file);\n};\n\n/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the\n   internal debug console.  You can override this event and have messages written where you want. */\nSWFUpload.prototype.debug = function (message) {\n\tthis.queueEvent(\"debug_handler\", message);\n};\n\n\n/* **********************************\n\tDebug Console\n\tThe debug console is a self contained, in page location\n\tfor debug message to be sent.  The Debug Console adds\n\titself to the body if necessary.\n\n\tThe console is automatically scrolled as messages appear.\n\t\n\tIf you are using your own debug handler or when you deploy to production and\n\thave debug disabled you can remove these functions to reduce the file size\n\tand complexity.\n********************************** */\n   \n// Private: debugMessage is the default debug_handler.  If you want to print debug messages\n// call the debug() function.  When overriding the function your own function should\n// check to see if the debug setting is true before outputting debug information.\nSWFUpload.prototype.debugMessage = function (message) {\n\tif (this.settings.debug) {\n\t\tvar exceptionMessage, exceptionValues = [];\n\n\t\t// Check for an exception object and print it nicely\n\t\tif (typeof message === \"object\" && typeof message.name === \"string\" && typeof message.message === \"string\") {\n\t\t\tfor (var key in message) {\n\t\t\t\tif (message.hasOwnProperty(key)) {\n\t\t\t\t\texceptionValues.push(key + \": \" + message[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\texceptionMessage = exceptionValues.join(\"\\n\") || \"\";\n\t\t\texceptionValues = exceptionMessage.split(\"\\n\");\n\t\t\texceptionMessage = \"EXCEPTION: \" + exceptionValues.join(\"\\nEXCEPTION: \");\n\t\t\tSWFUpload.Console.writeLine(exceptionMessage);\n\t\t} else {\n\t\t\tSWFUpload.Console.writeLine(message);\n\t\t}\n\t}\n};\n\nSWFUpload.Console = {};\nSWFUpload.Console.writeLine = function (message) {\n\tvar console, documentForm;\n\n\ttry {\n\t\tconsole = document.getElementById(\"SWFUpload_Console\");\n\n\t\tif (!console) {\n\t\t\tdocumentForm = document.createElement(\"form\");\n\t\t\tdocument.getElementsByTagName(\"body\")[0].appendChild(documentForm);\n\n\t\t\tconsole = document.createElement(\"textarea\");\n\t\t\tconsole.id = \"SWFUpload_Console\";\n\t\t\tconsole.style.fontFamily = \"monospace\";\n\t\t\tconsole.setAttribute(\"wrap\", \"off\");\n\t\t\tconsole.wrap = \"off\";\n\t\t\tconsole.style.overflow = \"auto\";\n\t\t\tconsole.style.width = \"700px\";\n\t\t\tconsole.style.height = \"350px\";\n\t\t\tconsole.style.margin = \"5px\";\n\t\t\tdocumentForm.appendChild(console);\n\t\t}\n\n\t\tconsole.value += message + \"\\n\";\n\n\t\tconsole.scrollTop = console.scrollHeight - console.clientHeight;\n\t} catch (ex) {\n\t\talert(\"Exception: \" + ex.name + \" Message: \" + ex.message);\n\t}\n};\n"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/showdown.js",
    "content": "//\n// showdown.js -- A javascript port of Markdown.\n//\n// Copyright (c) 2007 John Fraser.\n//\n// Original Markdown Copyright (c) 2004-2005 John Gruber\n//   <http://daringfireball.net/projects/markdown/>\n//\n// Redistributable under a BSD-style open source license.\n// See license.txt for more information.\n//\n// The full source distribution is at:\n//\n//\t\t\t\tA A L\n//\t\t\t\tT C A\n//\t\t\t\tT K B\n//\n//   <http://www.attacklab.net/>\n//\n//\n// Wherever possible, Showdown is a straight, line-by-line port\n// of the Perl version of Markdown.\n//\n// This is not a normal parser design; it's basically just a\n// series of string substitutions.  It's hard to read and\n// maintain this way,  but keeping Showdown close to the original\n// design makes it easier to port new features.\n//\n// More importantly, Showdown behaves like markdown.pl in most\n// edge cases.  So web applications can do client-side preview\n// in Javascript, and then build identical HTML on the server.\n//\n// This port needs the new RegExp functionality of ECMA 262,\n// 3rd Edition (i.e. Javascript 1.5).  Most modern web browsers\n// should do fine.  Even with the new regular expression features,\n// We do a lot of work to emulate Perl's regex functionality.\n// The tricky changes in this file mostly have the \"attacklab:\"\n// label.  Major or self-explanatory changes don't.\n//\n// Smart diff tools like Araxis Merge will be able to match up\n// this file with markdown.pl in a useful way.  A little tweaking\n// helps: in a copy of markdown.pl, replace \"#\" with \"//\" and\n// replace \"$text\" with \"text\".  Be sure to ignore whitespace\n// and line endings.\n//\n//\n// Showdown usage:\n//\n//   var text = \"Markdown *rocks*.\";\n//\n//   var converter = new Showdown.converter();\n//   var html = converter.makeHtml(text);\n//\n//   alert(html);\n//\n// Note: move the sample code to the bottom of this\n// file before uncommenting it.\n//\n//\n// Showdown namespace\n//\nvar Showdown={extensions:{}},forEach=Showdown.forEach=function(a,b){if(typeof a.forEach==\"function\")a.forEach(b);else{var c,d=a.length;for(c=0;c<d;c++)b(a[c],c,a)}},stdExtName=function(a){return a.replace(/[_-]||\\s/g,\"\").toLowerCase()};Showdown.converter=function(a){var b,c,d,e=0,f=[],g=[];if(typeof module!=\"undefind\"&&typeof exports!=\"undefined\"&&typeof require!=\"undefind\"){var h=require(\"fs\");if(h){var i=h.readdirSync((__dirname||\".\")+\"/extensions\").filter(function(a){return~a.indexOf(\".js\")}).map(function(a){return a.replace(/\\.js$/,\"\")});Showdown.forEach(i,function(a){var b=stdExtName(a);Showdown.extensions[b]=require(\"./extensions/\"+a)})}}this.makeHtml=function(a){return b={},c={},d=[],a=a.replace(/~/g,\"~T\"),a=a.replace(/\\$/g,\"~D\"),a=a.replace(/\\r\\n/g,\"\\n\"),a=a.replace(/\\r/g,\"\\n\"),a=\"\\n\\n\"+a+\"\\n\\n\",a=M(a),a=a.replace(/^[ \\t]+$/mg,\"\"),Showdown.forEach(f,function(b){a=k(b,a)}),a=z(a),a=m(a),a=l(a),a=o(a),a=K(a),a=a.replace(/~D/g,\"$$\"),a=a.replace(/~T/g,\"~\"),Showdown.forEach(g,function(b){a=k(b,a)}),a};if(a&&a.extensions){var j=this;Showdown.forEach(a.extensions,function(a){typeof a==\"string\"&&(a=Showdown.extensions[stdExtName(a)]);if(typeof a!=\"function\")throw\"Extension '\"+a+\"' could not be loaded.  It was either not found or is not a valid extension.\";Showdown.forEach(a(j),function(a){a.type?a.type===\"language\"||a.type===\"lang\"?f.push(a):(a.type===\"output\"||a.type===\"html\")&&g.push(a):g.push(a)})})}var k=function(a,b){if(a.regex){var c=new RegExp(a.regex,\"g\");return b.replace(c,a.replace)}if(a.filter)return a.filter(b)},l=function(a){return a+=\"~0\",a=a.replace(/^[ ]{0,3}\\[(.+)\\]:[ \\t]*\\n?[ \\t]*<?(\\S+?)>?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,function(a,d,e,f,g){return d=d.toLowerCase(),b[d]=G(e),f?f+g:(g&&(c[d]=g.replace(/\"/g,\"&quot;\")),\"\")}),a=a.replace(/~0/,\"\"),a},m=function(a){a=a.replace(/\\n/g,\"\\n\\n\");var b=\"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside\",c=\"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside\";return a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b[^\\r]*?\\n<\\/\\2>[ \\t]*(?=\\n+))/gm,n),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm,n),a=a.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/(\\n\\n[ ]{0,3}<!(--[^\\r]*?--\\s*)+>[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,n),a=a.replace(/\\n\\n/g,\"\\n\"),a},n=function(a,b){var c=b;return c=c.replace(/\\n\\n/g,\"\\n\"),c=c.replace(/^\\n/,\"\"),c=c.replace(/\\n+$/g,\"\"),c=\"\\n\\n~K\"+(d.push(c)-1)+\"K\\n\\n\",c},o=function(a){a=v(a);var b=A(\"<hr />\");return a=a.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\\_[ ]?){3,}[ \\t]*$/gm,b),a=x(a),a=y(a),a=E(a),a=m(a),a=F(a),a},p=function(a){return a=B(a),a=q(a),a=H(a),a=t(a),a=r(a),a=I(a),a=G(a),a=D(a),a=a.replace(/  +\\n/g,\" <br />\\n\"),a},q=function(a){var b=/(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|<!(--.*?--\\s*)+>)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\\/?code>(?=.)/g,\"$1`\");return b=N(b,\"\\\\`*_\"),b}),a},r=function(a){return a=a.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g,s),a=a.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]\\([ \\t]*()<?(.*?(?:\\(.*?\\).*?)?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,s),a=a.replace(/(\\[([^\\[\\]]+)\\])()()()()()/g,s),a},s=function(a,d,e,f,g,h,i,j){j==undefined&&(j=\"\");var k=d,l=e,m=f.toLowerCase(),n=g,o=j;if(n==\"\"){m==\"\"&&(m=l.toLowerCase().replace(/ ?\\n/g,\" \")),n=\"#\"+m;if(b[m]!=undefined)n=b[m],c[m]!=undefined&&(o=c[m]);else{if(!(k.search(/\\(\\s*\\)$/m)>-1))return k;n=\"\"}}n=N(n,\"*_\");var p='<a href=\"'+n+'\"';return o!=\"\"&&(o=o.replace(/\"/g,\"&quot;\"),o=N(o,\"*_\"),p+=' title=\"'+o+'\"'),p+=\">\"+l+\"</a>\",p},t=function(a){return a=a.replace(/(!\\[(.*?)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g,u),a=a.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()<?(\\S+?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,u),a},u=function(a,d,e,f,g,h,i,j){var k=d,l=e,m=f.toLowerCase(),n=g,o=j;o||(o=\"\");if(n==\"\"){m==\"\"&&(m=l.toLowerCase().replace(/ ?\\n/g,\" \")),n=\"#\"+m;if(b[m]==undefined)return k;n=b[m],c[m]!=undefined&&(o=c[m])}l=l.replace(/\"/g,\"&quot;\"),n=N(n,\"*_\");var p='<img src=\"'+n+'\" alt=\"'+l+'\"';return o=o.replace(/\"/g,\"&quot;\"),o=N(o,\"*_\"),p+=' title=\"'+o+'\"',p+=\" />\",p},v=function(a){function b(a){return a.replace(/[^\\w]/g,\"\").toLowerCase()}return a=a.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,function(a,c){return A('<h1 id=\"'+b(c)+'\">'+p(c)+\"</h1>\")}),a=a.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,function(a,c){return A('<h2 id=\"'+b(c)+'\">'+p(c)+\"</h2>\")}),a=a.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,function(a,c,d){var e=c.length;return A(\"<h\"+e+' id=\"'+b(d)+'\">'+p(d)+\"</h\"+e+\">\")}),a},w,x=function(a){a+=\"~0\";var b=/^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;return e?a=a.replace(b,function(a,b,c){var d=b,e=c.search(/[*+-]/g)>-1?\"ul\":\"ol\";d=d.replace(/\\n{2,}/g,\"\\n\\n\\n\");var f=w(d);return f=f.replace(/\\s+$/,\"\"),f=\"<\"+e+\">\"+f+\"</\"+e+\">\\n\",f}):(b=/(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/g,a=a.replace(b,function(a,b,c,d){var e=b,f=c,g=d.search(/[*+-]/g)>-1?\"ul\":\"ol\",f=f.replace(/\\n{2,}/g,\"\\n\\n\\n\"),h=w(f);return h=e+\"<\"+g+\">\\n\"+h+\"</\"+g+\">\\n\",h})),a=a.replace(/~0/,\"\"),a};w=function(a){return e++,a=a.replace(/\\n{2,}$/,\"\\n\"),a+=\"~0\",a=a.replace(/(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+([^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,function(a,b,c,d,e){var f=e,g=b,h=c;return g||f.search(/\\n{2,}/)>-1?f=o(L(f)):(f=x(L(f)),f=f.replace(/\\n$/,\"\"),f=p(f)),\"<li>\"+f+\"</li>\\n\"}),a=a.replace(/~0/g,\"\"),e--,a};var y=function(a){return a+=\"~0\",a=a.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,function(a,b,c){var d=b,e=c;return d=C(L(d)),d=M(d),d=d.replace(/^\\n+/g,\"\"),d=d.replace(/\\n+$/g,\"\"),d=\"<pre>\"+d+\"\\n</pre>\",A(d)+e}),a=a.replace(/~0/,\"\"),a},z=function(a){return a+=\"~0\",a=a.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g,function(a,b,c){var d=b,e=c;return e=C(e),e=M(e),e=e.replace(/^\\n+/g,\"\"),e=e.replace(/\\n+$/g,\"\"),e=\"<pre>\"+e+\"\\n</pre>\",A(e)}),a=a.replace(/~0/,\"\"),a},A=function(a){return a=a.replace(/(^\\n+|\\n+$)/g,\"\"),\"\\n\\n~K\"+(d.push(a)-1)+\"K\\n\\n\"},B=function(a){return a=a.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,function(a,b,c,d,e){var f=d;return f=f.replace(/^([ \\t]*)/g,\"\"),f=f.replace(/[ \\t]*$/g,\"\"),f=C(f),b+\"<code>\"+f+\"</code>\"}),a},C=function(a){return a=a.replace(/&/g,\"&amp;\"),a=a.replace(/</g,\"&lt;\"),a=a.replace(/>/g,\"&gt;\"),a=N(a,\"*_{}[]\\\\\",!1),a},D=function(a){return a=a.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\"<strong>$2</strong>\"),a=a.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\"<em>$2</em>\"),a},E=function(a){return a=a.replace(/((^[ \\t]*>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm,function(a,b){var c=b;return c=c.replace(/^[ \\t]*>[ \\t]?/gm,\"~0\"),c=c.replace(/~0/g,\"\"),c=c.replace(/^[ \\t]+$/gm,\"\"),c=o(c),c=c.replace(/(^|\\n)/g,\"$1  \"),c=c.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /mg,\"~0\"),c=c.replace(/~0/g,\"\"),c}),A(\"<blockquote>\\n\"+c+\"\\n</blockquote>\")}),a},F=function(a){a=a.replace(/^\\n+/g,\"\"),a=a.replace(/\\n+$/g,\"\");var b=a.split(/\\n{2,}/g),c=[],e=b.length;for(var f=0;f<e;f++){var g=b[f];g.search(/~K(\\d+)K/g)>=0?c.push(g):g.search(/\\S/)>=0&&(g=p(g),g=g.replace(/^([ \\t]*)/g,\"<p>\"),g+=\"</p>\",c.push(g))}e=c.length;for(var f=0;f<e;f++)while(c[f].search(/~K(\\d+)K/)>=0){var h=d[RegExp.$1];h=h.replace(/\\$/g,\"$$$$\"),c[f]=c[f].replace(/~K\\d+K/,h)}return c.join(\"\\n\\n\")},G=function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g,\"&amp;\"),a=a.replace(/<(?![a-z\\/?\\$!])/gi,\"&lt;\"),a},H=function(a){return a=a.replace(/\\\\(\\\\)/g,O),a=a.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g,O),a},I=function(a){return a=a.replace(/<((https?|ftp|dict):[^'\">\\s]+)>/gi,'<a href=\"$1\">$1</a>'),a=a.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,function(a,b){return J(K(b))}),a},J=function(a){var b=[function(a){return\"&#\"+a.charCodeAt(0)+\";\"},function(a){return\"&#x\"+a.charCodeAt(0).toString(16)+\";\"},function(a){return a}];return a=\"mailto:\"+a,a=a.replace(/./g,function(a){if(a==\"@\")a=b[Math.floor(Math.random()*2)](a);else if(a!=\":\"){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a='<a href=\"'+a+'\">'+a+\"</a>\",a=a.replace(/\">.+:/g,'\">'),a},K=function(a){return a=a.replace(/~E(\\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)}),a},L=function(a){return a=a.replace(/^(\\t|[ ]{1,4})/gm,\"~0\"),a=a.replace(/~0/g,\"\"),a},M=function(a){return a=a.replace(/\\t(?=\\t)/g,\"    \"),a=a.replace(/\\t/g,\"~A~B\"),a=a.replace(/~B(.+?)~A/g,function(a,b,c){var d=b,e=4-d.length%4;for(var f=0;f<e;f++)d+=\" \";return d}),a=a.replace(/~A/g,\"    \"),a=a.replace(/~B/g,\"\"),a},N=function(a,b,c){var d=\"([\"+b.replace(/([\\[\\]\\\\])/g,\"\\\\$1\")+\"])\";c&&(d=\"\\\\\\\\\"+d);var e=new RegExp(d,\"g\");return a=a.replace(e,O),a},O=function(a,b){var c=b.charCodeAt(0);return\"~E\"+c+\"E\"}},typeof module!=\"undefined\"&&(module.exports=Showdown),typeof define==\"function\"&&define.amd&&define(\"showdown\",function(){return Showdown});"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_plugins/ubb.js",
    "content": "/*!\n * WYSIWYG UBB Editor support for xhEditor\n * @requires xhEditor\n * \n * @author Yanis.Wang<yanis.wang@gmail.com>\n * @site http://xheditor.com/\n * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)\n * \n * @Version: 0.9.12 (build 120228)\n */\nfunction ubb2html(sUBB)\n{\n\tvar i,sHtml=String(sUBB),arrcode=new Array(),cnum=0;\n\tvar arrFontsize=['10px','13px','16px','18px','24px','32px','48px'];\n\n\tsHtml=sHtml.replace(/[<>&\"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','\"':'&quot;'}[c];});\n\tsHtml=sHtml.replace(/\\r?\\n/g,\"<br />\");\n\t\n\tsHtml=sHtml.replace(/\\[code\\s*(?:=\\s*([^\\]]+?))?\\]([\\s\\S]*?)\\[\\/code\\]/ig,function(all,t,c){//code特殊处理\n\t\tcnum++;arrcode[cnum]=all;\n\t\treturn \"[\\tubbcodeplace_\"+cnum+\"\\t]\";\n\t});\n\n\tsHtml=sHtml.replace(/\\[(\\/?)(b|u|i|s|sup|sub)\\]/ig,'<$1$2>');\n\tsHtml=sHtml.replace(/\\[color\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<font color=\"$1\">');\n\tsHtml=sHtml.replace(/\\[font\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<font face=\"$1\">');\n\tsHtml=sHtml.replace(/\\[\\/(color|font)\\]/ig,'</font>');\n\tsHtml=sHtml.replace(/\\[size\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,function(all,size){\n\t\tif(size.match(/^\\d+$/))size=arrFontsize[size-1];\n\t\treturn '<span style=\"font-size:'+size+';\">';\n\t});\n\tsHtml=sHtml.replace(/\\[back\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]/ig,'<span style=\"background-color:$1;\">');\n\tsHtml=sHtml.replace(/\\[\\/(size|back)\\]/ig,'</span>');\n\tfor(i=0;i<3;i++)sHtml=sHtml.replace(/\\[align\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\](((?!\\[align(?:\\s+[^\\]]+)?\\])[\\s\\S])*?)\\[\\/align\\]/ig,'<p align=\"$1\">$2</p>');\n\tsHtml=sHtml.replace(/\\[img\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/img\\]/ig,'<img src=\"$1\" alt=\"\" />');\n\tsHtml=sHtml.replace(/\\[img\\s*=([^,\\]]*)(?:\\s*,\\s*(\\d*%?)\\s*,\\s*(\\d*%?)\\s*)?(?:,?\\s*(\\w+))?\\s*\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*)?\\s*\\[\\/img\\]/ig,function(all,alt,p1,p2,p3,src){\n\t\tvar str='<img src=\"'+src+'\" alt=\"'+alt+'\"',a=p3?p3:(!isNum(p1)?p1:'');\n\t\tif(isNum(p1))str+=' width=\"'+p1+'\"';\n\t\tif(isNum(p2))str+=' height=\"'+p2+'\"'\n\t\tif(a)str+=' align=\"'+a+'\"';\n\t\tstr+=' />';\n\t\treturn str;\n\t});\n\tsHtml=sHtml.replace(/\\[emot\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\/\\]/ig,'<img emot=\"$1\" />');\n\tsHtml=sHtml.replace(/\\[url\\]\\s*(((?!\")[\\s\\S])*?)(?:\"[\\s\\S]*?)?\\s*\\[\\/url\\]/ig,'<a href=\"$1\">$1</a>');\n\tsHtml=sHtml.replace(/\\[url\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]\\s*([\\s\\S]*?)\\s*\\[\\/url\\]/ig,'<a href=\"$1\">$2</a>');\n\tsHtml=sHtml.replace(/\\[email\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/email\\]/ig,'<a href=\"mailto:$1\">$1</a>');\n\tsHtml=sHtml.replace(/\\[email\\s*=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?\\s*\\]\\s*([\\s\\S]+?)\\s*\\[\\/email\\]/ig,'<a href=\"mailto:$1\">$2</a>');\n\tsHtml=sHtml.replace(/\\[quote\\]/ig,'<blockquote>');\n\tsHtml=sHtml.replace(/\\[\\/quote\\]/ig,'</blockquote>');\n\tsHtml=sHtml.replace(/\\[flash\\s*(?:=\\s*(\\d+)\\s*,\\s*(\\d+)\\s*)?\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/flash\\]/ig,function(all,w,h,url){\n\t\tif(!w)w=480;if(!h)h=400;\n\t\treturn '<embed type=\"application/x-shockwave-flash\" src=\"'+url+'\" wmode=\"opaque\" quality=\"high\" bgcolor=\"#ffffff\" menu=\"false\" play=\"true\" loop=\"true\" width=\"'+w+'\" height=\"'+h+'\"/>';\n\t});\n\tsHtml=sHtml.replace(/\\[media\\s*(?:=\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d+)\\s*)?)?\\]\\s*(((?!\")[\\s\\S])+?)(?:\"[\\s\\S]*?)?\\s*\\[\\/media\\]/ig,function(all,w,h,play,url){\n\t\tif(!w)w=480;if(!h)h=400;\n\t\treturn '<embed type=\"application/x-mplayer2\" src=\"'+url+'\" enablecontextmenu=\"false\" autostart=\"'+(play=='1'?'true':'false')+'\" width=\"'+w+'\" height=\"'+h+'\"/>';\n\t});\n\tsHtml=sHtml.replace(/\\[table\\s*(?:=\\s*(\\d{1,4}%?)\\s*(?:,\\s*([^\\]\"]+)(?:\"[^\\]]*?)?)?)?\\s*\\]/ig,function(all,w,b){\n\t\tvar str='<table';\n\t\tif(w)str+=' width=\"'+w+'\"';\n\t\tif(b)str+=' bgcolor=\"'+b+'\"';\n\t\treturn str+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[tr\\s*(?:=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?)?\\s*\\]/ig,function(all,bg){\n\t\treturn '<tr'+(bg?' bgcolor=\"'+bg+'\"':'')+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[td\\s*(?:=\\s*(\\d{1,2})\\s*,\\s*(\\d{1,2})\\s*(?:,\\s*(\\d{1,4}%?))?)?\\s*\\]/ig,function(all,col,row,w){\n\t\treturn '<td'+(col>1?' colspan=\"'+col+'\"':'')+(row>1?' rowspan=\"'+row+'\"':'')+(w?' width=\"'+w+'\"':'')+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[\\/(table|tr|td)\\]/ig,'</$1>');\n\t\n\tsHtml=sHtml.replace(/\\[\\*\\]((?:(?!\\[\\*\\]|\\[\\/list\\]|\\[list\\s*(?:=[^\\]]+)?\\])[\\s\\S])+)/ig,'<li>$1</li>');\n\tsHtml=sHtml.replace(/\\[list\\s*(?:=\\s*([^\\]\"]+?)(?:\"[^\\]]*?)?)?\\s*\\]/ig,function(all,type){\n\t\tvar str='<ul';\n\t\tif(type)str+=' type=\"'+type+'\"';\n\t\treturn str+'>';\n\t});\n\tsHtml=sHtml.replace(/\\[\\/list\\]/ig,'</ul>');\n\tsHtml=sHtml.replace(/\\[hr\\/\\]/ig,'<hr />');\n\t\n\tfor(i=1;i<=cnum;i++)sHtml=sHtml.replace(\"[\\tubbcodeplace_\"+i+\"\\t]\", arrcode[i]);\n\n\tsHtml=sHtml.replace(/(^|<\\/?\\w+(?:\\s+[^>]*?)?>)([^<$]+)/ig, function(all,tag,text){\n\t\treturn tag+text.replace(/[\\t ]/g,function(c){return {'\\t':'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',' ':'&nbsp;'}[c];});\n\t});\n\tfunction isNum(s){if(s!=null&&s!='')return !isNaN(s);else return false;}\n\t\n\treturn sHtml;\n}\n\nfunction html2ubb(sHtml)\n{\n\n\tvar regSrc=/\\s+src\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i,regWidth=/\\s+width\\s*=\\s*([\"']?)\\s*(\\d+(?:\\.\\d+)?%?)\\s*\\1(\\s|$)/i,regHeight=/\\s+height\\s*=\\s*([\"']?)\\s*(\\d+(?:\\.\\d+)?%?)\\s*\\1(\\s|$)/i,regBg=/(?:background|background-color|bgcolor)\\s*[:=]\\s*([\"']?)\\s*((rgb\\s*\\(\\s*\\d{1,3}%?,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\))|(#[0-9a-f]{3,6})|([a-z]{1,20}))\\s*\\1/i\n\tvar i,sUBB=String(sHtml),arrcode=new Array(),cnum=0;\n\n\tsUBB=sUBB.replace(/[ \\t]*\\r?\\n[ \\t]*/g,'');\n\t\n\tsUBB = sUBB.replace(/<(script|style)(\\s+[^>]*?)?>[\\s\\S]*?<\\/\\1>/ig, '');\n\tsUBB = sUBB.replace(/<!--[\\s\\S]*?-->/ig,'');\n\n\tsUBB=sUBB.replace(/<br(\\s+[^>]*)?\\/?>/ig,\"\\r\\n\");\n\t\n\tsUBB=sUBB.replace(/\\[code\\s*(=\\s*([^\\]]+?))?\\]([\\s\\S]*?)\\[\\/code\\]/ig,function(all,t,c){//code特殊处理\n\t\tcnum++;arrcode[cnum]=all;\n\t\treturn \"[\\tubbcodeplace_\"+cnum+\"\\t]\";\n\t});\n\t\n\tsUBB=sUBB.replace(/<(\\/?)(b|u|i|s)(\\s+[^>]*?)?>/ig,'[$1$2]');\n\tsUBB=sUBB.replace(/<(\\/?)strong(\\s+[^>]*?)?>/ig,'[$1b]');\n\tsUBB=sUBB.replace(/<(\\/?)em(\\s+[^>]*?)?>/ig,'[$1i]');\n\tsUBB=sUBB.replace(/<(\\/?)(strike|del)(\\s+[^>]*?)?>/ig,'[$1s]');\n\tsUBB=sUBB.replace(/<(\\/?)(sup|sub)(\\s+[^>]*?)?>/ig,'[$1$2]');\n\n\t//font转ubb\n\tfunction font2ubb(all,tag,attrs,content)\n\t{\n\t\tif(!attrs)return content;\n\t\tvar arrStart=[],arrEnd=[];\n\t\tvar match;\n\t\tmatch=attrs.match(/ face\\s*=\\s*\"\\s*([^\"]+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[font='+match[1]+']');\n\t\t\tarrEnd.push('[/font]');\n\t\t}\n\t\tmatch=attrs.match(/ size\\s*=\\s*\"\\s*(\\d+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[size='+match[1]+']');\n\t\t\tarrEnd.push('[/size]');\n\t\t}\n\t\tmatch=attrs.match(/ color\\s*=\\s*\"\\s*([^\"]+)\\s*\"/i);\n\t\tif(match){\n\t\t\tarrStart.push('[color='+formatColor(match[1])+']');\n\t\t\tarrEnd.push('[/color]');\n\t\t}\n\t\treturn arrStart.join('')+content+arrEnd.join('');\n\t}\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,font2ubb);//第3层\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?)<\\/\\1>/ig,font2ubb);//第2层\n\tsUBB = sUBB.replace(/<(font)(\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?)<\\/\\1>/ig,font2ubb);//最里层\n\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(span)(?:\\s+[^>]*?)?\\s+style\\s*=\\s*\"((?:[^\"]*?;)*\\s*(?:font-family|font-size|color|background|background-color)\\s*:[^\"]*)\"(?: [^>]+)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,function(all,tag,style,content){\n\t\tvar face=style.match(/(?:^|;)\\s*font-family\\s*:\\s*([^;]+)/i),size=style.match(/(?:^|;)\\s*font-size\\s*:\\s*([^;]+)/i),color=style.match(/(?:^|;)\\s*color\\s*:\\s*([^;]+)/i),back=style.match(/(?:^|;)\\s*(?:background|background-color)\\s*:\\s*([^;]+)/i),str=content;\n\t\tvar arrStart=[],arrEnd=[];\n\t\tif(face){\n\t\t\tarrStart.push('[font='+face[1]+']');\n\t\t\tarrEnd.push('[/font]');\n\t\t}\n\t\tif(size){\n\t\t\tarrStart.push('[size='+size[1]+']');\n\t\t\tarrEnd.push('[/size]');\n\t\t}\n\t\tif(color){\n\t\t\tarrStart.push('[color='+formatColor(color[1])+']');\n\t\t\tarrEnd.push('[/color]');\n\t\t}\n\t\tif(back){\n\t\t\tarrStart.push('[back='+formatColor(back[1])+']');\n\t\t\tarrEnd.push('[/back]');\n\t\t}\n\t\treturn arrStart.join('')+str+arrEnd.join('');\n\t});\n\tfunction formatColor(c)\n\t{\n\t\tvar matchs;\n\t\tif(matchs=c.match(/\\s*rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i)){c=(matchs[1]*65536+matchs[2]*256+matchs[3]*1).toString(16);while(c.length<6)c='0'+c;c='#'+c;}\n\t\tc=c.replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,'#$1$1$2$2$3$3');\n\t\treturn c;\n\t}\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(div|p)(?:\\s+[^>]*?)?[\\s\"';]\\s*(?:text-)?align\\s*[=:]\\s*([\"']?)\\s*(left|center|right)\\s*\\2[^>]*>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])+?)<\\/\\1>/ig,'[align=$3]$4[/align]');\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(center)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?)<\\/\\1>/ig,'[align=center]$2[/align]');\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(p|div)(?:\\s+[^>]*?)?\\s+style\\s*=\\s*\"(?:[^;\"]*;)*\\s*text-align\\s*:([^;\"]*)[^\"]*\"(?: [^>]+)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,function(all,tag,align,content){\n\t\treturn '[align='+align+']'+content+'[/align]';\n\t});\n\tsUBB=sUBB.replace(/<a(?:\\s+[^>]*?)?\\s+href=([\"'])\\s*(.+?)\\s*\\1[^>]*>\\s*([\\s\\S]*?)\\s*<\\/a>/ig,function(all,q,url,text){\n\t\tif(!(url&&text))return '';\n\t\tvar tag='url',str;\n\t\tif(url.match(/^mailto:/i))\n\t\t{\n\t\t\ttag='email';\n\t\t\turl=url.replace(/mailto:(.+?)/i,'$1');\n\t\t}\n\t\tstr='['+tag;\n\t\tif(url!=text)str+='='+url;\n\t\treturn str+']'+text+'[/'+tag+']';\n\t});\n\tsUBB=sUBB.replace(/<img(\\s+[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar emot=attr.match(/\\s+emot\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i);\n\t\tif(emot)return '[emot='+emot[2]+'/]';\n\t\tvar url=attr.match(regSrc),alt=attr.match(/\\s+alt\\s*=\\s*([\"']?)\\s*(.*?)\\s*\\1(\\s|$)/i),w=attr.match(regWidth),h=attr.match(regHeight),align=attr.match(/\\s+align\\s*=\\s*([\"']?)\\s*(\\w+)\\s*\\1(\\s|$)/i),str='[img',p='';\n\t\tif(!url)return '';\n\t\tp+=alt[2];\n\t\tif(w||h)p+=','+(w?w[2]:'')+','+(h?h[2]:'');\n\t\tif(align)p+=','+align[2];\n\t\tif(p)str+='='+p;\n\t\tstr+=']'+url[2]+'[/img]';\n\t\treturn str;\n\t});\n\tsUBB=sUBB.replace(/<blockquote(?:\\s+[^>]*?)?>/ig,'[quote]');\n\tsUBB=sUBB.replace(/<\\/blockquote>/ig,'[/quote]');\n\tsUBB=sUBB.replace(/<embed((?:\\s+[^>]*?)?(?:\\s+type\\s*=\\s*\"\\s*application\\/x-shockwave-flash\\s*\"|\\s+classid\\s*=\\s*\"\\s*clsid:d27cdb6e-ae6d-11cf-96b8-4445535400000\\s*\")[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),str='[flash';\n\t\tif(!url)return '';\n\t\tif(w&&h)str+='='+w[2]+','+h[2];\n\t\tstr+=']'+url[2];\n\t\treturn str+'[/flash]';\n\t});\n\tsUBB=sUBB.replace(/<embed((?:\\s+[^>]*?)?(?:\\s+type\\s*=\\s*\"\\s*application\\/x-mplayer2\\s*\"|\\s+classid\\s*=\\s*\"\\s*clsid:6bf52a52-394a-11d3-b153-00c04f79faa6\\s*\")[^>]*?)\\/?>/ig,function(all,attr){\n\t\tvar url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),p=attr.match(/\\s+autostart\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i),str='[media',auto='0';\n\t\tif(!url)return '';\n\t\tif(p)if(p[2]=='true')auto='1';\n\t\tif(w&&h)str+='='+w[2]+','+h[2]+','+auto;\n\t\tstr+=']'+url[2];\n\t\treturn str+'[/media]';\n\t});\n\tsUBB=sUBB.replace(/<table(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[table';\n\t\tif(attr)\n\t\t{\n\t\t\tvar w=attr.match(regWidth),b=attr.match(regBg);\n\t\t\tif(w)\n\t\t\t{\n\t\t\t\tstr+='='+w[2];\n\t\t\t\tif(b)str+=','+b[2];\n\t\t\t}\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<tr(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[tr';\n\t\tif(attr)\n\t\t{\n\t\t\tvar bg=attr.match(regBg)\n\t\t\tif(bg)str+='='+bg[2];\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<(?:th|td)(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar str='[td';\n\t\tif(attr)\n\t\t{\n\t\t\tvar col=attr.match(/\\s+colspan\\s*=\\s*([\"']?)\\s*(\\d+)\\s*\\1(\\s|$)/i),row=attr.match(/\\s+rowspan\\s*=\\s*([\"']?)\\s*(\\d+)\\s*\\1(\\s|$)/i),w=attr.match(regWidth);\n\t\t\tcol=col?col[2]:1;\n\t\t\trow=row?row[2]:1;\n\t\t\tif(col>1||row>1||w)str+='='+col+','+row;\n\t\t\tif(w)str+=','+w[2];\n\t\t}\n\t\treturn str+']';\n\t});\n\tsUBB=sUBB.replace(/<\\/(table|tr)>/ig,'[/$1]');\n\tsUBB=sUBB.replace(/<\\/(th|td)>/ig,'[/td]');\n\t\n\tsUBB=sUBB.replace(/<ul(\\s+[^>]*?)?>/ig,function(all,attr){\n\t\tvar t;\n\t\tif(attr)t=attr.match(/\\s+type\\s*=\\s*([\"']?)\\s*(.+?)\\s*\\1(\\s|$)/i);\n\t\treturn '[list'+(t?'='+t[2]:'')+']';\n\t});\n\tsUBB=sUBB.replace(/<ol(\\s+[^>]*?)?>/ig,'[list=1]');\n\tsUBB=sUBB.replace(/<li(\\s+[^>]*?)?>/ig,'[*]');\n\tsUBB=sUBB.replace(/<\\/li>/ig,'');\n\tsUBB=sUBB.replace(/<\\/(ul|ol)>/ig,'[/list]');\n\tsUBB=sUBB.replace(/<h([1-6])(\\s+[^>]*?)?>/ig,function(all,n){return '\\r\\n\\r\\n[size='+(7-n)+'][b]'});\n\tsUBB=sUBB.replace(/<\\/h[1-6]>/ig,'[/b][/size]\\r\\n\\r\\n');\n\tsUBB=sUBB.replace(/<address(\\s+[^>]*?)?>/ig,'\\r\\n[i]');\n\tsUBB=sUBB.replace(/<\\/address>/ig,'[i]\\r\\n');\n\tsUBB=sUBB.replace(/<hr(\\s+[^>]*?)?\\/>/ig,'[hr/]');\n\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(p)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,\"\\r\\n\\r\\n$2\\r\\n\\r\\n\");\n\tfor(i=0;i<3;i++)sUBB=sUBB.replace(/<(div)(?:\\s+[^>]*?)?>(((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S]|<\\1(\\s+[^>]*?)?>((?!<\\1(\\s+[^>]*?)?>)[\\s\\S])*?<\\/\\1>)*?<\\/\\1>)*?)<\\/\\1>/ig,\"\\r\\n$2\\r\\n\");\n\t\n\tsUBB=sUBB.replace(/((\\s|&nbsp;)*\\r?\\n){3,}/g,\"\\r\\n\\r\\n\");//限制最多2次换行\n\tsUBB=sUBB.replace(/^((\\s|&nbsp;)*\\r?\\n)+/g,'');//清除开头换行\n\tsUBB=sUBB.replace(/((\\s|&nbsp;)*\\r?\\n)+$/g,'');//清除结尾换行\n\t\n\tfor(i=1;i<=cnum;i++)sUBB=sUBB.replace(\"[\\tubbcodeplace_\"+i+\"\\t]\", arrcode[i]);\n\n\tsUBB=sUBB.replace(/<[^<>]+?>/g,'');//删除所有HTML标签\n\tvar arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'\"'};\n\tsUBB=sUBB.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});\n\t\n\t//清除空内容的UBB标签\n\tsUBB=sUBB.replace(/\\[([a-z]+)(?:=[^\\[\\]]+)?\\]\\s*\\[\\/\\1\\]/ig,'');\n\t\n\treturn sUBB;\n}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n.wordImage{border:1px dotted #c00;background:url(img/wordimg.gif) #ffc center center no-repeat;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dotted #c00;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) #ffc center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/default/ui.css",
    "content": ".xhe_default table, .xhe_default tr, .xhe_default td, .xhe_default iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_default table.xheLayout {display:inline-table;background:#F0F0EE; border:1px solid #C5C5C5;width:100%;height:100%;}\n.xhe_default td.xheTool{padding:0px 3px;border-bottom:1px solid #C5C5C5;}\n.xhe_default td.xheTool span{float:left;margin:2px 0px;}\n.xhe_default td.xheTool br{clear:left;}\n\n.xhe_default span.xheGStart{display:none;}\n.xhe_default span.xheGEnd{display:none;}\n.xhe_default span.xheSeparator{display:block;height:22px;width:4px;margin:2px 2px !important;background:url(img/icons.gif) no-repeat -660px 0;}\n\n.xhe_default a.xheButton{display:inline-block;margin:1px;border:0px;cursor:pointer;text-decoration:none;}\n.xhe_default a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_default a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_default a.xheEnabled:hover {margin:0px;border:1px solid #999;background:#fff;}\n.xhe_default a.xheActive{margin:0px;border:1px solid #999; background:#fff;}\n\n.xhe_default a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_default span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_default span.xheBtnCut {background-position:0 0}\n.xhe_default span.xheBtnCopy {background-position:-20px 0}\n.xhe_default span.xheBtnPaste {background-position:-40px 0}\n.xhe_default span.xheBtnPastetext {background-position:-60px 0}\n.xhe_default span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_default span.xheBtnFontface {background-position:-100px 0}\n.xhe_default span.xheBtnFontSize {background-position:-120px 0}\n.xhe_default span.xheBtnBold {background-position:-140px 0}\n.xhe_default span.xheBtnItalic {background-position:-160px 0}\n.xhe_default span.xheBtnUnderline {background-position:-180px 0}\n.xhe_default span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_default span.xheBtnFontColor {background-position:-220px 0}\n.xhe_default span.xheBtnBackColor {background-position:-240px 0}\n.xhe_default span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_default span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_default span.xheBtnAlign {background-position:-300px 0}\n.xhe_default span.xheBtnList {background-position:-320px 0}\n.xhe_default span.xheBtnOutdent {background-position:-340px 0}\n.xhe_default span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_default span.xheBtnLink {background-position:-380px 0}\n.xhe_default span.xheBtnUnlink {background-position:-400px 0}\n.xhe_default span.xheBtnAnchor {background-position:-420px 0}\n.xhe_default span.xheBtnImg {background-position:-440px 0}\n.xhe_default span.xheBtnFlash {background-position:-460px 0}\n.xhe_default span.xheBtnMedia {background-position:-480px 0}\n.xhe_default span.xheBtnHr {background-position:-500px 0}\n.xhe_default span.xheBtnEmot {background-position:-520px 0}\n.xhe_default span.xheBtnTable {background-position:-540px 0}\n\n.xhe_default span.xheBtnSource {background-position:-560px 0}\n.xhe_default span.xheBtnPreview {background-position:-580px 0}\n.xhe_default span.xheBtnPrint {background-position:-600px 0}\n.xhe_default span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_default span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_default .xheIframeArea{height:100%;}\n.xhe_default iframe {display:block;background:#fff;width:100%;height:100%;}\n\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#999 1px solid;background:#fff;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #999;padding:2px;}\n.xheEmot ul{border-top:1px solid #999;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #999;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;padding:1px;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #BBB;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\t\n}\n.xheModalTitle{padding:5px;background:#F0F0EE;border-bottom:1px solid #BBB;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#222;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/nostyle/ui.css",
    "content": ".xhe_nostyle table, .xhe_nostyle tr, .xhe_nostyle td, .xhe_nostyle iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_nostyle table.xheLayout {display:inline-table;background:#FFF; border:1px solid #C5C5C5;width:100%;height:100%;}\n.xhe_nostyle td.xheTool{padding:0px 3px;border-bottom:1px solid #C5C5C5;}\n.xhe_nostyle td.xheTool span{float:left;margin:2px 0px;}\n.xhe_nostyle td.xheTool br{clear:left;}\n\n.xhe_nostyle span.xheGStart{display:none;}\n.xhe_nostyle span.xheGEnd{display:none;}\n.xhe_nostyle span.xheSeparator{display:block;height:22px;width:4px;margin:2px 2px !important;background:url(img/icons.gif) no-repeat -660px 0;}\n\n.xhe_nostyle a.xheButton{display:inline-block;margin:1px;border:0px;cursor:pointer;text-decoration:none;}\n.xhe_nostyle a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_nostyle a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_nostyle a.xheEnabled:hover {margin:0px;border:1px solid #999;background:#fff;}\n.xhe_nostyle a.xheActive{margin:0px;border:1px solid #999; background:#fff;}\n\n.xhe_nostyle a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_nostyle span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_nostyle span.xheBtnCut {background-position:0 0}\n.xhe_nostyle span.xheBtnCopy {background-position:-20px 0}\n.xhe_nostyle span.xheBtnPaste {background-position:-40px 0}\n.xhe_nostyle span.xheBtnPastetext {background-position:-60px 0}\n.xhe_nostyle span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_nostyle span.xheBtnFontface {background-position:-100px 0}\n.xhe_nostyle span.xheBtnFontSize {background-position:-120px 0}\n.xhe_nostyle span.xheBtnBold {background-position:-140px 0}\n.xhe_nostyle span.xheBtnItalic {background-position:-160px 0}\n.xhe_nostyle span.xheBtnUnderline {background-position:-180px 0}\n.xhe_nostyle span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_nostyle span.xheBtnFontColor {background-position:-220px 0}\n.xhe_nostyle span.xheBtnBackColor {background-position:-240px 0}\n.xhe_nostyle span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_nostyle span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_nostyle span.xheBtnAlign {background-position:-300px 0}\n.xhe_nostyle span.xheBtnList {background-position:-320px 0}\n.xhe_nostyle span.xheBtnOutdent {background-position:-340px 0}\n.xhe_nostyle span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_nostyle span.xheBtnLink {background-position:-380px 0}\n.xhe_nostyle span.xheBtnUnlink {background-position:-400px 0}\n.xhe_nostyle span.xheBtnAnchor {background-position:-420px 0}\n.xhe_nostyle span.xheBtnImg {background-position:-440px 0}\n.xhe_nostyle span.xheBtnFlash {background-position:-460px 0}\n.xhe_nostyle span.xheBtnMedia {background-position:-480px 0}\n.xhe_nostyle span.xheBtnHr {background-position:-500px 0}\n.xhe_nostyle span.xheBtnEmot {background-position:-520px 0}\n.xhe_nostyle span.xheBtnTable {background-position:-540px 0}\n\n.xhe_nostyle span.xheBtnSource {background-position:-560px 0}\n.xhe_nostyle span.xheBtnPreview {background-position:-580px 0}\n.xhe_nostyle span.xheBtnPrint {background-position:-600px 0}\n.xhe_nostyle span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_nostyle span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_nostyle .xheIframeArea{height:100%;}\n.xhe_nostyle iframe {display:block;background:#fff;width:100%;height:100%;}\n\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#999 1px solid;background:#fff;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #999;padding:2px;}\n.xheEmot ul{border-top:1px solid #999;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #999;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #BBB;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#F0F0EE;border-bottom:1px solid #BBB;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#222;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007blue/ui.css",
    "content": ".xhe_o2007blue table, .xhe_o2007blue tr, .xhe_o2007blue td, .xhe_o2007blue iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_o2007blue table.xheLayout {display:inline-table;background:#E5EFFD; border:1px solid #ABC6DD;width:100%;height:100%;}\n.xhe_o2007blue td.xheTool {padding:1px 3px;border-bottom:1px solid #ABC6DD;}\n.xhe_o2007blue td.xheTool span{float:left;margin:2px 0px;}\n.xhe_o2007blue td.xheTool br{clear:left;}\n\n.xhe_o2007blue span.xheGStart{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007blue span.xheGEnd{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007blue span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_o2007blue a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_o2007blue a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_o2007blue a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100)}\n.xhe_o2007blue a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_o2007blue a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important;}\n\n.xhe_o2007blue a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_o2007blue span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_o2007blue span.xheBtnCut {background-position:0 0}\n.xhe_o2007blue span.xheBtnCopy {background-position:-20px 0}\n.xhe_o2007blue span.xheBtnPaste {background-position:-40px 0}\n.xhe_o2007blue span.xheBtnPastetext {background-position:-60px 0}\n.xhe_o2007blue span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_o2007blue span.xheBtnFontface {background-position:-100px 0}\n.xhe_o2007blue span.xheBtnFontSize {background-position:-120px 0}\n.xhe_o2007blue span.xheBtnBold {background-position:-140px 0}\n.xhe_o2007blue span.xheBtnItalic {background-position:-160px 0}\n.xhe_o2007blue span.xheBtnUnderline {background-position:-180px 0}\n.xhe_o2007blue span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_o2007blue span.xheBtnFontColor {background-position:-220px 0}\n.xhe_o2007blue span.xheBtnBackColor {background-position:-240px 0}\n.xhe_o2007blue span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_o2007blue span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_o2007blue span.xheBtnAlign {background-position:-300px 0}\n.xhe_o2007blue span.xheBtnList {background-position:-320px 0}\n.xhe_o2007blue span.xheBtnOutdent {background-position:-340px 0}\n.xhe_o2007blue span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_o2007blue span.xheBtnLink {background-position:-380px 0}\n.xhe_o2007blue span.xheBtnUnlink {background-position:-400px 0}\n.xhe_o2007blue span.xheBtnAnchor {background-position:-420px 0}\n.xhe_o2007blue span.xheBtnImg {background-position:-440px 0}\n.xhe_o2007blue span.xheBtnFlash {background-position:-460px 0}\n.xhe_o2007blue span.xheBtnMedia {background-position:-480px 0}\n.xhe_o2007blue span.xheBtnHr {background-position:-500px 0}\n.xhe_o2007blue span.xheBtnEmot {background-position:-520px 0}\n.xhe_o2007blue span.xheBtnTable {background-position:-540px 0}\n\n.xhe_o2007blue span.xheBtnSource {background-position:-560px 0}\n.xhe_o2007blue span.xheBtnPreview {background-position:-580px 0}\n.xhe_o2007blue span.xheBtnPrint {background-position:-600px 0}\n.xhe_o2007blue span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_o2007blue span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_o2007blue .xheIframeArea{height:100%;}\n.xhe_o2007blue iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#ABC6DD 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#C6DAE9;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #ABC6DD;padding:2px;}\n.xheEmot ul{border-top:1px solid #ABC6DD;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #ABC6DD;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #ABC6DD;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#D1DEEF;border-bottom:1px solid #ABC6DD;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/o2007silver/ui.css",
    "content": ".xhe_o2007silver table, .xhe_o2007silver tr, .xhe_o2007silver td, .xhe_o2007silver iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_o2007silver table.xheLayout {display:inline-table;background:#EEEEEE; border:1px solid #BBBBBB;width:100%;height:100%;}\n.xhe_o2007silver td.xheTool {padding:1px 3px;border-bottom:1px solid #BBBBBB;}\n.xhe_o2007silver td.xheTool span{float:left;margin:2px 0px;}\n.xhe_o2007silver td.xheTool br{clear:left;}\n\n.xhe_o2007silver span.xheGStart{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007silver span.xheGEnd{display:block;width:1px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_o2007silver span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_o2007silver a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_o2007silver a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_o2007silver a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100)}\n.xhe_o2007silver a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_o2007silver a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important}\n\n.xhe_o2007silver a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_o2007silver span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_o2007silver span.xheBtnCut {background-position:0 0}\n.xhe_o2007silver span.xheBtnCopy {background-position:-20px 0}\n.xhe_o2007silver span.xheBtnPaste {background-position:-40px 0}\n.xhe_o2007silver span.xheBtnPastetext {background-position:-60px 0}\n.xhe_o2007silver span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_o2007silver span.xheBtnFontface {background-position:-100px 0}\n.xhe_o2007silver span.xheBtnFontSize {background-position:-120px 0}\n.xhe_o2007silver span.xheBtnBold {background-position:-140px 0}\n.xhe_o2007silver span.xheBtnItalic {background-position:-160px 0}\n.xhe_o2007silver span.xheBtnUnderline {background-position:-180px 0}\n.xhe_o2007silver span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_o2007silver span.xheBtnFontColor {background-position:-220px 0}\n.xhe_o2007silver span.xheBtnBackColor {background-position:-240px 0}\n.xhe_o2007silver span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_o2007silver span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_o2007silver span.xheBtnAlign {background-position:-300px 0}\n.xhe_o2007silver span.xheBtnList {background-position:-320px 0}\n.xhe_o2007silver span.xheBtnOutdent {background-position:-340px 0}\n.xhe_o2007silver span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_o2007silver span.xheBtnLink {background-position:-380px 0}\n.xhe_o2007silver span.xheBtnUnlink {background-position:-400px 0}\n.xhe_o2007silver span.xheBtnAnchor {background-position:-420px 0}\n.xhe_o2007silver span.xheBtnImg {background-position:-440px 0}\n.xhe_o2007silver span.xheBtnFlash {background-position:-460px 0}\n.xhe_o2007silver span.xheBtnMedia {background-position:-480px 0}\n.xhe_o2007silver span.xheBtnHr {background-position:-500px 0}\n.xhe_o2007silver span.xheBtnEmot {background-position:-520px 0}\n.xhe_o2007silver span.xheBtnTable {background-position:-540px 0}\n\n.xhe_o2007silver span.xheBtnSource {background-position:-560px 0}\n.xhe_o2007silver span.xheBtnPreview {background-position:-580px 0}\n.xhe_o2007silver span.xheBtnPrint {background-position:-600px 0}\n.xhe_o2007silver span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_o2007silver span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_o2007silver .xheIframeArea{height:100%;}\n.xhe_o2007silver iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#BBBBBB 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#e5e5e5;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #BBBBBB;padding:2px;}\n.xheEmot ul{border-top:1px solid #BBBBBB;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #BBBBBB;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #AAA;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:5px;background:#DDD;border-bottom:1px solid #AAA;}\n.xheModalClose{float:right;width:16px;height:16px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height: expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/iframe.css",
    "content": "html{height:100%;background-color:#FFFFFF;}\nbody,td,th{font-family:Arial,Helvetica,sans-serif;font-size:12px;}\nbody{height:100%;*height:90%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}\n\n.xhe-border{border:1px dotted #d3d3d3;}\n.xhe-border th,.xhe-border td{border:1px dotted #d3d3d3;}\n\n.editMode{margin:0px;padding:5px;overflow-y:auto;word-break:break-word;word-wrap:break-word;}\n.editMode img:-moz-broken {-moz-force-broken-image-icon:1;height:24px;width:24px;}\n.editMode embed{display:inline-block;border:1px dashed #FF4E4E;}\n.editMode embed[type=\"application/x-shockwave-flash\"]{background:url(img/flash.gif) center center no-repeat;}\n.editMode embed[type=\"application/x-mplayer2\"]{background:url(img/wmp.gif) center center no-repeat;}\n.editMode .xhe-paste{position:absolute;left:-1000px;overflow:hidden;width:1px;height:1px;}\n.editMode .xhe-anchor{display:inline-block;background: url(img/anchor.gif) no-repeat;border: 1px dotted #0000FF;width:16px;height:15px;overflow:hidden;}\n\n.sourceMode{margin:0px;padding:0px;overflow:hidden;height:100%;}\n.sourceMode textarea{*position:absolute;border:0px;margin:0px;padding:0px;width:100%;height:100%;overflow-y:auto;font-family:'Courier New',Courier,monospace !important;font-size:10pt;resize:none;outline:0;}\n\n.previewMode{margin:5px;padding:0px;}\n\n.showBlocktag p,.showBlocktag h1,.showBlocktag h2,.showBlocktag h3,.showBlocktag h4,.showBlocktag h5,.showBlocktag h6,.showBlocktag pre,.showBlocktag address,.showBlocktag div{background:none no-repeat scroll right top;border:1px dotted gray;}\n.showBlocktag p{background-image:url(img/tag-p.gif);}\n.showBlocktag h1{background-image:url(img/tag-h1.gif);}\n.showBlocktag h2{background-image:url(img/tag-h2.gif);}\n.showBlocktag h3{background-image:url(img/tag-h3.gif);}\n.showBlocktag h4{background-image:url(img/tag-h4.gif);}\n.showBlocktag h5{background-image:url(img/tag-h5.gif);}\n.showBlocktag h6{background-image:url(img/tag-h6.gif);}\n.showBlocktag pre{background-image:url(img/tag-pre.gif);}\n.showBlocktag address{background-image:url(img/tag-address.gif);}\n.showBlocktag div{background-image:url(img/tag-div.gif);}"
  },
  {
    "path": "target/mongo/jslib/eu_js/xheditor/xheditor_skin/vista/ui.css",
    "content": ".xhe_vista table, .xhe_vista tr, .xhe_vista td, .xhe_vista iframe {border:0; margin:0; padding:0; background:transparent;text-decoration:none; font-weight:normal; color:#000}\n\n.xhe_vista table.xheLayout {display:inline-table;background:#E0E8F5; border:1px solid #99BBE8;width:100%;height:100%;}\n.xhe_vista td.xheTool {padding:1px 3px;border-bottom:1px solid #99BBE8;}\n.xhe_vista td.xheTool span{float:left;margin:2px 0px;}\n.xhe_vista td.xheTool br{clear:left;}\n\n.xhe_vista span.xheGStart{display:block;width:4px;height:22px;background:url(img/buttonbg.gif) -22px 0;}\n.xhe_vista span.xheGEnd{display:block;width:4px;height:22px;background:url(img/buttonbg.gif) -26px 0;}\n.xhe_vista span.xheSeparator{display:block;height:22px;width:4px;}\n\n.xhe_vista a.xheButton{display:inline-block;padding:1px;border:0px;background:url(img/buttonbg.gif);cursor:pointer;text-decoration:none;}\n.xhe_vista a.xheButton span{opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);}\n.xhe_vista a.xheEnabled span{opacity:1; -ms-filter:'alpha(opacity=100)'; filter:alpha(opacity=100);}\n.xhe_vista a.xheEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\n.xhe_vista a.xheActive{background-color:#B2BBD0; background-position:0 -44px !important;}\n\n.xhe_vista a.xheButton span{display:block;margin:0px;height:20px;width:20px;overflow:hidden;}\n.xhe_vista span.xheIcon{background:url(img/icons.gif) no-repeat 20px 20px}\n\n.xhe_vista span.xheBtnCut {background-position:0 0}\n.xhe_vista span.xheBtnCopy {background-position:-20px 0}\n.xhe_vista span.xheBtnPaste {background-position:-40px 0}\n.xhe_vista span.xheBtnPastetext {background-position:-60px 0}\n.xhe_vista span.xheBtnBlocktag {background-position:-80px 0}\n.xhe_vista span.xheBtnFontface {background-position:-100px 0}\n.xhe_vista span.xheBtnFontSize {background-position:-120px 0}\n.xhe_vista span.xheBtnBold {background-position:-140px 0}\n.xhe_vista span.xheBtnItalic {background-position:-160px 0}\n.xhe_vista span.xheBtnUnderline {background-position:-180px 0}\n.xhe_vista span.xheBtnStrikethrough {background-position:-200px 0}\n.xhe_vista span.xheBtnFontColor {background-position:-220px 0}\n.xhe_vista span.xheBtnBackColor {background-position:-240px 0}\n.xhe_vista span.xheBtnSelectAll {background-position:-260px 0}\n.xhe_vista span.xheBtnRemoveformat {background-position:-280px 0}\n\n.xhe_vista span.xheBtnAlign {background-position:-300px 0}\n.xhe_vista span.xheBtnList {background-position:-320px 0}\n.xhe_vista span.xheBtnOutdent {background-position:-340px 0}\n.xhe_vista span.xheBtnIndent {background-position:-360px 0}\n\n.xhe_vista span.xheBtnLink {background-position:-380px 0}\n.xhe_vista span.xheBtnUnlink {background-position:-400px 0}\n.xhe_vista span.xheBtnAnchor {background-position:-420px 0}\n.xhe_vista span.xheBtnImg {background-position:-440px 0}\n.xhe_vista span.xheBtnFlash {background-position:-460px 0}\n.xhe_vista span.xheBtnMedia {background-position:-480px 0}\n.xhe_vista span.xheBtnHr {background-position:-500px 0}\n.xhe_vista span.xheBtnEmot {background-position:-520px 0}\n.xhe_vista span.xheBtnTable {background-position:-540px 0}\n\n.xhe_vista span.xheBtnSource {background-position:-560px 0}\n.xhe_vista span.xheBtnPreview {background-position:-580px 0}\n.xhe_vista span.xheBtnPrint {background-position:-600px 0}\n.xhe_vista span.xheBtnFullscreen {background-position:-620px 0}\n\n.xhe_vista span.xheBtnAbout {background-position:-640px 0}\n\n.xhe_vista .xheIframeArea{height:100%;}\n.xhe_vista iframe {display:block;background:#fff;width:100%;height:100%;}\n\n#xheCntLine{display:none;position:absolute;z-index:1000001;background:#fff;height:1px;font-size:0;}\n#xhePanel{display:none;position:absolute;z-index:1000000;border:#99BBE8 1px solid;background:#FDFEFF;text-align:left;}\n#xheShadow{display:none;position:absolute;z-index:999999;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);}\n.xheFixCancel{position:absolute;z-index:999998;background-color:#FFF;opacity:0; -ms-filter:'alpha(opacity=0)'; filter:alpha(opacity=0);}\n\n.xheMenu{padding:2px;overflow-x:hidden;overflow-y:auto;max-height:230px;}\n.xheMenu .xheMenuSeparator{margin:3px 0;border-top:1px solid #D8D8D8;}\n.xheMenu a{display:block;padding:3px 20px 3px 3px;line-height:normal;font-size:12px;color:#000;text-decoration:none;white-space:nowrap;}\n.xheMenu a:hover{background:#B8CFEE;text-decoration:none;color:#000;}\n.xheMenu p,.xheMenu h1,.xheMenu h2,.xheMenu h3,.xheMenu h4,.xheMenu h5,.xheMenu h6,.xheMenu pre,.xheMenu address,.xheMenu div{margin:0}\n\n.xheEmot div{padding:5px;overflow-x:hidden;overflow-y:auto;}\n.xheEmot div a{display:inline-block;margin:3px;padding:3px;overflow:hidden;background-repeat:no-repeat;background-position:center;text-decoration:none;}\n.xheEmot div a:hover{border:1px solid #99BBE8;padding:2px;}\n.xheEmot ul{border-top:1px solid #99BBE8;list-style:none;padding:0 10px;margin:0;font-size:12px;}\n.xheEmot li{float:left;margin:0 2px 5px 0;}\n.xheEmot li a{background:#fff;display:block;padding:0 8px;text-decoration:none;color:#000;line-height:20px;}\n.xheEmot li a:hover{text-decoration:underline;}\n.xheEmot li.cur{border:1px solid #99BBE8;border-top:none;position:relative;bottom:1px;}\n.xheEmot li.cur a{cursor:text;padding-top:1px;}\n.xheEmot li.cur a:hover{text-decoration:none;}\n\n\n.xheColor{padding:5px;}\n.xheColor a{display:inline-block;margin:1px;border:#999 1px solid;width:17px;height:9px;font-size:0;}\n.xheColor a:hover{border:#000 1px solid;}\n.xheColor a img{display:none;}\n\n.xheDialog{padding:10px;font-size:12px;font-family:monospace;}\n.xheDialog a{text-decoration:underline;color:#00f;}\n.xheDialog a:hover{text-decoration:underline;color:#00f}\n.xheDialog div{padding:2px 0px;}\n.xheDialog input{\n\tmargin:0;border-width:1px;border-style:solid;font-size:12px;\n\t*border-width:expression((type!=\"checkbox\")?'1px':0);*padding:expression((type==\"text\")?'1px':'auto');*width:expression((type==\"text\")?'160px':'auto');*border-color:expression((type==\"text\")?'#ABADB3':'#fff #888 #888 #fff');*background:expression((type==\"button\")?'#F0F0F0':'#FFFFFF');*cursor:expression((type==\"button\")?'pointer':'');*font-size:expression((type==\"button\")?'13px':'12px');\n}\n.xheDialog textarea{font-size:12px;resize:none;border:1px solid #ccc;}\n.xheDialog input[type=text]{padding:1px;width:160px;border-color:#ABADB3;}\n.xheDialog input[type=button]{margin:0;border-color:#fff #888 #888 #fff;background:#F0F0F0;cursor:pointer;font-size:13px;}\n.xheDialog input[type=file]{font-size:13px;}\n.xheDialog input[type=checkbox]{border:0;}\n.xheDialog select{margin:0;border:1px #ABADB3 solid;}\n.xheDialog input,.xheDialog select,.xheDialog textarea{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}\n.xheDialog input:focus,.xheDialog select:focus,.xheDialog textarea:focus{outline: 0;border-color: #EEC068;-webkit-box-shadow: 0 0 1px #EEC068;-moz-box-shadow: 0 0 1px #EEC068;box-shadow: 0 0 1px #EEC068;}\n.xheDialog .xheUpload{position: relative;display:inline-block;width:164px;}\n.xheDialog .xheUpload .xheBtn{position: absolute;top: 0px;left: 114px;width:50px;z-index: 1000001;padding:0;}\n.xheDialog .xheUpload .xheFile{cursor:pointer;position: absolute;top: 0px;left: 0px;width:164px;opacity:0;-ms-filter:'alpha(opacity=0)';filter:alpha(opacity=0);z-index: 1000002;}\n.xheDialog .xheUpload .xheText {position: absolute;width:107px;top: 0px;left: 0px;z-index: 1000003;}\n\n.xheModal{\n\tposition: fixed;z-index: 1000010;text-align:left;top:50%;left:50%;background:#FFF;border:1px solid #99BBE8;font-size:12px;\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');\n}\n.xheModalTitle{padding:3px;line-height:18px;background:url(img/titlebg.gif) repeat-x;border-bottom:1px solid #99BBE8;}\n.xheModalClose{float:right;width:30px;height:18px;background:url(img/close.gif);cursor:pointer;}\n.xheModalIfmWait{width:100%;height:100%;background:url(img/waiting.gif) no-repeat 50% 50%;margin:-16 0 0 -16;}\n.xheModalShadow{\n\tposition:fixed;z-index:1000009;top:50%;left:50%;background:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_margin-top:expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 5 + 'px');\n}\n.xheModalOverlay{\n\tposition: fixed;z-index:1000008;top: 0px;left: 0px;height:100%;width:100%;background-color:#000;opacity:0.2; -ms-filter:'alpha(opacity=20)'; filter:alpha(opacity=20);\n\t_position:absolute;_height:expression(Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight)+'px');_width:expression(Math.max(document.documentElement.clientWidth,document.documentElement.scrollWidth)+'px');\n}\n*html{\n\tbackground-image:url(about:blank);\n\tbackground-attachment:fixed;\n}\n\n.xheProgress{position:relative;width:280px;margin:auto;border:1px solid #C1C1C1;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:url(img/progressbg.gif) #E9E9E9;}\n.xheProgress span{position:absolute;left:0;top:0;width:100%;text-align:center;line-height:15px;font-size:12px;color:#000;text-shadow: 1px 1px 0 #eee;}\n.xheProgress div{height:15px;width:1px;background:url(img/progress.gif) #31C135;}\n\n.xhe_Fullfix{overflow:hidden;}\n.xhe_Fullfix body{width:100%;height:100%;}\n.xhe_Fullscreen{\n\ttop:0px;left:0px;position:fixed;z-index:100000;width:100%;height:100%;background:#fff;\n\t_position:absolute;_top:expression((document.compatMode?documentElement.scrollTop:document.body.scrollTop)+'px');_width:expression((document.compatMode?documentElement.offsetWidth:document.body.offsetWidth) + 'px');_height:expression((document.compatMode?documentElement.offsetHeight:document.body.offsetHeight) + 'px');\n}\n\n.xheHideArea{position:absolute;top:-1000px;left:-1000px;visibility:hidden;}"
  },
  {
    "path": "target/mongo/style/eu/index/article.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searcharticle{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searcharticle input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n.searchdate{ position: relative; margin-bottom: 10px;}\n.searchdate input{ width: 150px; outline: none;}\n\n\n.categorySearch { margin-top: 20px; border: 1px solid #19840E; padding: 5px; width: 220px;}\n.categoryHead { border-bottom: solid 1px #89CDAC;}\n.categoryHead span b{ font-size: 18px;}\ntable.categoryList tr{ height: 30px; overflow: hidden;}\ntable.categoryList tr td{ vertical-align: middle;}\ntable.categoryList span.categoryicon{ display: block; width: 16px; height:16px; background: url(\"../images/index/category_icon.png\") no-repeat;}\ntable.categoryList a { cursor: pointer;}\n\n\n\n.articlelist{ width:680px;}\n.articlelist ul li .pic{  float:left; display:block; overflow:hidden;}\n.articlelist li .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em; }\n.articlelist li a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n.articlelist ul li p{ font-size:12px; color:#999;}\n.articlelist ul li{ width:670px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n.articlelist table{}\n.articlelist table tr{ height: 32px; line-height: 32px;}\n.articlelist table a{ line-height: 32px;}\n\n\n.articletitle{ width: 100%; border-bottom: dashed #D5D5D5 1px; padding 10px; display: block; text-align: center;}\n.articletitle .title{ font-size: 28px; line-height: 1.5em; color: #333; font-weight: bold;}\n.articletitle .time{ font-size: 18px; line-height: 2em; color: #333;}\n\n.news_model ul li{ width: 256px; float: left; padding: 4px 0; border-bottom: dashed #D5D5D5 1px; }\n.news_model ul li a { font-size: 12px; color: #333; text-decoration: none; float: left;}\n.news_model ul li .time { float: right; width: 50px; }"
  },
  {
    "path": "target/mongo/style/eu/index/comment.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searchquestion{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searchquestion input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n.askquestion{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/askquestion.png\"); }\n.askquestion:hover{ background: url(\"../images/index/askquestion_s.png\"); }\n.myquestion{ width: 120px; height: 35px; line-height: 30px; margin-top: 15px; margin-right: 15px; border: 1px solid #045bb2; border-radius: 4px; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); color: #fff; font-size: 24px; text-align: center; text-shadow: 0 1px 1px rgba(0,0,0,.12); outline: 0; cursor: pointer;}\n\n.comment_list{width: 620px;}\n.comment_list ul{ border: 1px solid #ddd; border-radius: 4px; box-shadow: 0 1px 1px rgba(0,0,0,.05);}\n.comment_list ul li.commentitem{ list-style: none; display: block; background: none; width: 100%; overflow: hidden; clear: both; margin: 0;}\n.comment_list textarea{ outline:none; resize: none; font-size: 13px; line-height: 20px;}\n\n.comment_list .comment_post{ position: relative; padding: 0px 10px;}\n.comment_list .comment_post .avatar{box-shadow: 0 1px 1px rgba(255,255,255,0.75); position: relative; border-radius: 3px; background-color: #fff; float: left;}\n.comment_list .comment_post .avatar img{ display: block; width: 50px; height: 50px; max-width: none; box-shadow: 0 1px 3px rgba(0,0,0,0.22); -webkit-border-radius: 3px; border-radius: 3px;}\n\n.comment_list .comment_post .comment_body{ padding-left: 60px;}\n.comment_list .comment_post .comment_body .comment_header{ padding-top: 1px;}\n.comment_list .comment_post .comment_body .comment_header .user_name{ font-size: 14px; margin-right: 8px; color: #d32 !important;}\n.comment_list .comment_post .comment_body p{ font-size: 13px; line-height: 1.5em; margin: .5em 0; word-wrap: break-word; text-indent: 0; clear: none;}\n.comment_list .comment_post .comment_body .comment_footer{ line-height: 1.5em; font-size: 12px; color: #999;}\n.comment_list .comment_post .comment_body .comment_footer .comment_time{ margin-right: 8px;}\n.comment_list .comment_post .comment_body .comment_footer a{ margin: 0 6px 0 0; padding: 0 6px 0 0; color: #999;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon{ vertical-align: middle; display: inline-block; overflow: hidden; background: transparent url(\"../images/Sprites_Embed.png\") no-repeat; position: relative; top: -1px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon_reply{ width: 18px; height: 13px; background-position: 0 -105px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_icon_like{ width: 14px; height: 13px; background-position: 0 -117px;}\n.comment_list .comment_post .comment_body .comment_footer .comment_likes_count{ float:right; color: #999; font-size: 13px;}\n.comment_list .comment_post .comment_body .comment_replylittlebox{ padding: 3px 30px;}\n.comment_list .comment_post .comment_body .replylittlebox_textarea{ position: relative; border: 1px solid #ccc; border-bottom: none; padding-right: 20px; background: #fff; overflow: hidden; border-top-right-radius: 3px; border-top-left-radius: 3px;}\n.comment_list .comment_post .comment_body .replylittlebox_textarea textarea{ display: block; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; border: none; box-shadow: none; -webkit-appearance: none; overflow: auto; padding: 10px; height: 20px; margin: 0; color: #999; width: 100%;}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar .replylittlebox_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n.comment_list .comment_post .comment_body .replylittlebox_toolbar .replylittlebox_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 14px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\n.comment_list .comment_paginator{ text-align: right; padding: 10px 0px; clear: both; line-height: 1em;}\n.comment_list .comment_paginator a{ font-size: 12px; margin: 0 3px; padding: 2px 5px; border: 1px solid transparent; cursor: pointer; text-decoration: none; color: #777;}\n.comment_list .comment_paginator a.paginator_current{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; color: #d32; }\n.comment_list .comment_paginator a:hover{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; }\n\n.comment_list .comment_replybox{width: auto; font-size: 12px; z-index: 3; margin: 0;  padding: 0 0 0 60px; position: relative;}\n.comment_list .comment_replybox .replybox_avatar{ position: absolute; top: 0; left: 0; float: left; box-shadow: 0 1px 3px rgba(0,0,0,0.22); -webkit-border-radius: 3px; border-radius: 3px;}\n.comment_list .comment_replybox .replybox_textarea{ position: relative; border: 1px solid #ccc; border-bottom: none; padding-right: 20px; background: #fff; overflow: hidden; border-top-right-radius: 3px; border-top-left-radius: 3px;}\n.comment_list .comment_replybox .replybox_textarea textarea{ display: block; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; border: none; box-shadow: none; -webkit-appearance: none; overflow: auto; padding: 10px; height: 54px; margin: 0; color: #999; width: 100%;}\n.comment_list .comment_replybox .replybox_toolbar{position: relative; width: 100%; box-shadow: 0 1px 0 rgba(255,255,255,0.6);}\n.comment_list .comment_replybox .replybox_toolbar .replybox_gradient{position: relative; margin-right: 100px; height: 30px; border: 1px solid #ccc; border-right: none; border-bottom-color: #aaa; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px;}\n.comment_list .comment_replybox .replybox_toolbar .replybox_button{outline:none;cursor: pointer; font-family: \"Helvetica Neue\",Helvetica,Arial,sans-serif; position: absolute; right: 0; top: 0; height: 32px; width: 100px; text-align: center; text-shadow: 0 1px 0 #fff; color: #555; font-size: 14px; font-weight: bold; border: 1px solid #ccc; border-bottom-color: #aaa; border-bottom-right-radius: 3px;  -webkit-border-bottom-right-radius: 3px; background-color: #e6e6e6; background-repeat: no-repeat; background-image: linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6); transition: all .15s linear; box-shadow: inset 0 0 1px #fff;}\n\n.answerlist{ width:630px;}\n.answerlist li .time{ float: right; width: 50px; padding-right: 18px}\n.answerlist li a{ font-size: 14px;color: #333;text-decoration: none;float: left;}\n.answerlist li p{ margin-top: 20px; margin-left: 10px; font-size: 13px; line-height: 1.5; color: #999;}\n.answerlist ul li{ width:620px;float:left; padding: 3px 0; border-bottom: dashed #D5D5D5 1px;}\n.answerlist ul li .highline{ color: red;}"
  },
  {
    "path": "target/mongo/style/eu/index/commpany.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.applycommpany{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/applycompany.png\"); }\n.applycommpany:hover{ background: url(\"../images/index/applycompany_s.png\"); }\n\n.btn_applycompany{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/publish.png\"); }\n.btn_applycompany:hover{ background: url(\"../images/index/publish_s.png\"); }\n\n.companylist{ width:630px;}\n.companylist ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.companylist li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.companylist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.companylist li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n.companylist li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n.companylist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.companylist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}"
  },
  {
    "path": "target/mongo/style/eu/index/countryside.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.applycountryside{ width: 173px; height: 43px; cursor: pointer; background: url(\"../images/index/applyxiaxiang.png\"); }\n.applycountryside:hover{ background: url(\"../images/index/applyxiaxiang_s.png\"); }\n\n.countrysidelist{ width:630px;}\n.countrysidelist ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.countrysidelist li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.countrysidelist li a{ font-size:18px; color:#333; text-decoration:none; line-height:2em;}\n.countrysidelist li p{ font-size: 12px; color: #999; line-height: 1.4em;}\n.countrysidelist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.countrysidelist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n#provincecity label { width: 20px; height: 30px; line-height: 30px; text-align: right; float: left; font-weight: bold; color: #666; margin: 12px 10px 0 0;}\n\n#tpersonlist thead th { background-color: rgb(81, 130, 187); color: #fff; border-bottom-width: 0; text-align: center;}\n#tpersonlist td { color: #000; position: relative;}\n#tpersonlist tr, #tpersonlist th { border: 1px solid rgb(81, 130, 187);}\n#tpersonlist td, #tpersonlist th { padding: 5px 8px; font-size: 12px; font-family: Verdana; font-weight: bold;}\n\n.del_btn{ width: 18px; display: block; position: absolute; right: -13px; top: -2px; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\ni.del_icon { width: 18px;height: 18px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -145px -201px; position: absolute; left: 0px;}\n"
  },
  {
    "path": "target/mongo/style/eu/index/css.css",
    "content": "html, body {\n    height: 100%;\n    }\n    .wrapper{\n    min-height: 100%;\n    height: auto !important;\n    height: 100%;\n    }\n    .z_footerk{\n    margin: -90px auto 0;\n    }\n    .re_index{\n      padding-bottom: 90px;\n    }\n    .z_indexk{\n     padding-bottom: 90px;\n    }\n    .z_indexk:after {\n    clear: both;\n    display: block;\n    height: 0;\n    visibility: hidden;\n    content: \".\";\n    }\n    .re_index:after {\n    clear: both;\n    display: block;\n    height: 0;\n    visibility: hidden;\n    content: \".\";\n    }\n.z_gap{\n\theight:10px;\n\tclear:both;\n\tbackground:#FFF;\n\twidth:100%;\n\tmargin:0px;\n\tdisplay:block;\n\tpadding:0px;\n}\n.container1{\n\twidth:951px;\n\tmargin:0 auto;\n}\n@font-face\n{\nfont-family: Hiragino;\nsrc: url('../Hiragino Sans GB W3.otf')\n,url('../HiraginoSansGB-W3-Alphabetic.eot');\n}\n.z_clear{\n\tpadding: 0px;\n\tmargin: 0px;\n}\n.z_color{\n\tcolor:#3b4d63;\n}\n.green{\n\tcolor:#5dbd06;\t\n}\n.yellow{\n\tcolor:#feb825;\t\n}\n.red{\n\tcolor:#e63c53;\t\n}\n.gray{\n\tcolor:#323232;\t\n}\n.orange{\n\tcolor: #ec5221;\n\t}\n/*start:濠电偛顦崝宀勫船閿燂拷*/\n.re_bg{\n\tbackground: url(../img/re-bg.png) no-repeat  center top;\n\tbackground-size: 100% auto;\n\twidth:100%;\n\theight:225px;\n\tpadding-top:20px;\n}\n.re_logo{\n\tfloat: left;\n\tpadding-top: 45px;\n\tpadding-bottom: 10px;\n}\n.re_conntent{\n\twidth:590px;\n\theight: 120px;\n\tpadding-top: 253px;\n\tfloat: left;\n\tfont-size:11px;\n}\n.re_box{\n\twidth:322px;\n\t/**height:350px;**/\n\tbackground: url(../img/re-box.png) no-repeat;\n\tfloat: right;\n\tbackground-size: 322px 350px;\n\tpadding-top: 40px;\n}\n.re_box ul li input{\n\tpadding-top:0px;\n\tpadding-bottom:0px;\n}\n.re_box ul li label{\n\tline-height: 30px;\n}\n.z_input{\n\tborder:1px solid #3b4d63; \n}\n.re-btn{\n\tbackground:url(../img/zhuce.png) no-repeat 0px 0px; \n\twidth:100px; \n\theight:34px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right: 30px;\n\t}\n.re-btn:hover{\n\tbackground:url(../img/zhuce.png) no-repeat 0px -35px; \n\twidth:100px; \n\theight:34px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right: 30px;\n\t}\n/*end:濠电偛顦崝宀勫船閿燂拷*/\n/*start:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�閹凤拷*/\n.logo{\n\tfloat: left;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n.nav-pad{\n\tpadding-top: 20px;\n\tpadding-bottom: 15px;\n}\n.logo-right{\n\tfont-size: 13px;\n\theight:80px;\n\tfloat: right;\n}\n.logo-right ul li img{\n\tfont: left;\n}\n.z_per {\n\tpadding-top: 20px;\n\tpadding-bottom: 10px;\n\tfloat: right;\n}\n.z_per, .z_per li ul{\n\tlist-style: none;\n}\n.z_per li ,.z_per li ul li{\n\tfloat: left;\n}\n\n.z_notice{\n\tbackground: url(../img/notice.png) no-repeat;\n\twidth: 21px;\n\theight: 15px;\n\tcolor: #FFF;\n\tdisplay: inline-block;\n\ttext-align: center;\n\tfont-size: 11px;\n\tline-height: 15px;\n\tposition: absolute;\n\ttop:-15px;\n\tright:135px;\n}\n.heng{\n\tbackground: url(../img/index-heng.png) no-repeat  center top;\n\tbackground-size: 100% 100%;\n\theight:5px;\n}\n.re_index{\n\tmargin-top: 15px;\n}\n.re_indexbg{\n\tbackground: #e8edf0;\n\toverflow:hidden;\n\tzoom:1;\n}\n.content-left{\n\tfloat: left;\n\twidth: 210px;\n}\n.content-rightk{\n\tfloat: right;\n\twidth: 741px;\n\tbackground: green;\n\tmin-height:710px;\n\tbackground: #FFF;\n\toverflow:hidden;\n\tzoom:1;\n}\n.left-top{\n\t/*padding: 10px 20px 2px 20px;*/\n\tpadding:10px;\n\tbackground: #e8edf0;\n}\n.left-top table tr td{\n\tpadding:5px;\n}\n.touxk {\n\tlist-style: none;\n\twidth: 190px;\n\tmargin:0px;\n\tpadding:0px;\n\tfont-size: 14px;\n\ttext-align: center;\n}\n.touxk li{\n\ttext-align:left;\n\tlist-style:none;\n}\n.touxk .toux {\n\twidth: 190px;\n\tdisplay: inline-block;\n\ttext-align: center;\n}\n.touxk .toux li{\n\tfont-size: 14px;\n}\n.touxk .toux  p{\n\tfloat: right;\n\tdisplay: inline-block;\n\twidth: 110px;\n}\n.touxk .toux img{\n\twidth: 120px;\n\theight: 120px;\n}\n.touxk .toux span{\n\tfont-size:15px;\n}\n.z_size{\n\tfont-size: 18px;\n}\n\n.left_candan{\n\twidth:210px; \n\tfloat:left;\n\tmargin:0px;\n}\n.left_candan li{\n\tlist-style:none;\n\twidth:210px; \n\theight:43px;\n\tbackground:url(../img/left_caidan.png) \n\tno-repeat; \n\tcursor:pointer;\n\tfloat:left;\n\t}\n.left_candan a{\n\twidth:210px; \n\theight:45px; \n\tfloat:left; \n\tpadding:0px; \n\tmargin:0px;\n}\n.left_candan a em{\n\tdisplay:none;\n}\n.left_candan .zhuye{background-position:0px 0px;}\n.left_candan .zhuye:hover{background-position:0px -260px;}\n.left_candan .zhuti{background-position:0px -43px;}\n.left_candan .zhuti:hover{background-position:0px -304px;}\n.left_candan .xinban{background-position:0px -86px;}\n.left_candan .xinban:hover{background-position:0px -347px;}\n.left_candan .renling{background-position:0px -129px;}\n.left_candan .renling:hover{background-position:0px -390px;}\n.left_candan .biangeng{background-position:0px -172px;}\n.left_candan .biangeng:hover{background-position:0px -433px;}\n.left_candan .zhuxiao{background-position:0px -215px;}\n.left_candan .zhuxiao:hover{background-position:0px -476px;}\n\n.download{\n\tbackground: #f7f7f7;\n\theight:200px;\n\tclear: both;\n\tpadding: 20px;\n\tborder-bottom: 2px solid #bbbbbb;\n\tmargin:0px;\n}\n.download p{\n\tborder-bottom:1px solid #abafb2;\n\tline-height: 30px;\n}\n.download li{\n\tbackground: url(../img/xztb.png) no-repeat 0px 5px;\n\tline-height: 28px;\n\tpadding-left:24px;\n}\n.download li:hover{\n\tbackground: url(../img/xztb.png) no-repeat 0px -23px;\n\tcolor:#ec4e1b;\n\tcursor: pointer;\n}\n/*start:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�濞佳嗐亹閸涘﹦鐟归柨鐕傛嫹*/\n.content-right{\n\tfloat: right;\n\twidth:730px;\n}\n.tab_tablek{\n\tpadding: 0 10px;\n}\n.z_tab_table thead tr{\n\tborder-bottom: 2px solid #81878c;\n\tcolor:#3b4d63;\n}\n.z_tab_table thead tr th{\n\tcolor:#3b4d63;\n\tfont-weight: 400;\n\tfont-size: 13px;\n}\n.z_tab_table tbody tr{\n\tborder: 0px;\n}\n.z_tab_table tbody tr td{\n\tfont-size: 12px;\n}\n\n/*end:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�濞佳嗐亹閸涘﹦鐟归柨鐕傛嫹*/\n.z_footerk{\n\theight:85px;\n\tposition: relative;\n    z-index: 10;\n}\n.z_footer{\n\twidth:100%;\n\tbackground: #efefef;\n\tpadding:10px 0 5px 0;\n\theight:90px;\n\tdisplay: block;\n}\n.z_footer{\n\tfont-size: 11px;\n\tline-height: 15px;\n}\n.z_footer p{\n\tmargin:0px;\n\tpadding: 0px;\n\tline-height:20px;\n}\n/*end:闂佽皫鍡╁殭缂傚秴绉瑰畷銉︽償椤垶绠芥俊鐐�閹凤拷*/\n/***************start:闂佸搫鍊瑰妯绘叏濞嗘垹纾鹃柟瀵稿Х瑜版煡鏌ｉ姀鐘垫瀮妞ゆ洩鎷�*********************/\n.z_content{\n\tborder: 1px solid #e8edf0;\n\tborder-bottom:3px solid #e8edf0 ;\n\tmin-height: 706px;\n}\n.z_content h5{\n\tbackground: #e8edf0;\n\tline-height: 25px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n}\n.z_from{\n\tpadding: 10px 25px;\n\tclear: both;\n}\n.z_from input{\n\tpadding-top:2px;\n\tpadding-bottom: 3px;\n}\n.prog2\n{\n\tbackground: url(../img/p2.png) no-repeat ;\n\theight:61px;\n\twidth:680px;\n}\n.z_from h4{\n\tbackground: url(../img/yuan.png) no-repeat 0  30px ;\n\tfont-size: 16px;\n\tpadding: 25px 0 0 16px;\n\tborder-top:1px solid #6f7c8d;\n\tcolor:#3b4d63;\n\tfont-weight: 400;\n\tmargin-top:20px;\n}\n.z_from h4 .tb{\n\tfont-size:12px;\n\tcolor:#999999;\n}\n.z_from h4 .tb input[type=\"checkbox\"]{\n\tborder: 1px solid #999999;\n\tvertical-align:sub;\n}\n.z_from .form-horizontal .control-group{\n\tmargin-bottom:10px;\n}\n.z_from .form-horizontal .control-group .control-label{\n\tpadding-top: 2px;\n}\n.z_from .form-horizontal .control{\n\tmargin-left: 170px;\n}\n.must{\n\tcolor:#fe0101;\n\tfont-size:18px;\n\tdisplay: inline-block;\n}\n.notic_info{\n\tfont-size: 12px;\n\tcolor:#999999;\n}\n.z_add a{\n\tfont-size:14px;\n\tcolor: #3b4d63;\n\ttext-decoration: underline;\n}\n.z_select{\n\twidth:480px;\n}\n.z_select select{\n\tpadding: 0px;\n\tmargin:0px;\n\tfloat:left;\n\tmargin-right:5px; \n\twidth:80px;\n\tline-height:20px;\n\tpadding:3px;\n}\n.z_checkbox{\n\twidth:660px;\n\tmargin-left:20px;\n}\n.login_person{\n\tbackground: #e8edf0;\n\tline-height: 25px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n}\n.login_person_con{\n\twidth: 740px;\n\theight:142px;\n\tpadding-top: 20px;\n\tborder-bottom: 3px solid #bbbbbb;\n\tmargin-bottom: 20px;\n\tpadding-left: 20px;\n}\n.login_person_no{\n\twidth:170px;\n\theight: 122px;\n\tfloat: left;\n\tborder-right:3px solid #e1e1e1;\n\tpadding-right: 25px;\n}\n.no1{\n\twidth:140px;\n\tpadding-left: 30px;\n}\n.no2{\n\tpadding-right:0px;\n\tmargin-right: 0px;\n}\n.login_person_no .text-right img{\n\tmargin-right: 15px;\n} \n.login_person_no .xing{\n\tmargin:25px 0 10px 40px;\n}\n.login_person_no .z_ul{\n\tmargin:25px 0 10px 15px;\n}\n.sq_btn{\n\tbackground: url(../img/renzheng_01.png) no-repeat;\n\tfloat: left;\n\twidth: 106px;\n\theight: 106px;\n\tmargin: 10px 0 0 20px;\n\tcursor: pointer;\n}\n.sq_btn:hover{\n\tbackground: url(../img/renzheng_02.png) no-repeat;\n}\n/***************end:闂佸搫鍊瑰妯绘叏濞嗘垹纾鹃柟瀵稿Х瑜版煡鏌ｉ姀鐘垫瀮妞ゆ洩鎷�*********************/\n.index-top{\n\tmargin-top: 20px;\n}\n.z-index{\n\tmargin-bottom:0px;\n\tclear:both;\n\tfloat: right;\n}\n.z-index li a{\n\tcolor: #3b4d63;\n}\n.z_adbg{\n\tbackground: url(../img/adbg.png) no-repeat  center top;\n\tbackground-size: 100% 100%;\n\theight:385px;\n}\n.loginbg{\n\twidth:318px;\n\t/**height:307px;**/\n\tborder-bottom: 3px solid #dcdde2;\n\tfloat: right;\n\tmargin: 8px 20px 0 0;\n\tborder-radius: 5px;\n\tbackground: #ffffff;\n\tpadding-top:16px;\n}\n.login_tab li{\n\twidth: 60%;\n\ttext-align: center;\n\tmargin-right: 0px;\n}\n\n.nav-tabs > li > a{\n\tline-height: 30px;\n}\n.login_tab li a:hover{\n\tline-height: 30px;\n}\n.login_tab .active a{\n\tborder-top: 4px solid #e63c53;\n\tline-height: 27px;\n}\n.logink li label{\n\tline-height: 30px;\n\twidth:80px;\n\tfloat:left;\n}\n.logink li input{\n\twidth:160px;\n\tfloat:left;\n\tmargin-left:10px;\n}\n.logink{\n\tpadding-top: 10px;\n}\n.login-btn{\n\tbackground:url(../img/login1.png) no-repeat; \n\twidth:100px; \n\theight:35px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right:30px;\n\t}\n.login-btn:hover{\n\tbackground:url(../img/login2.png) no-repeat; \n\twidth:100px; \n\theight:35px; \n\tfloat:right; \n\tborder:0px; \n\tcursor:pointer;\n\tdisplay: block;\n\tmargin-right:30px;\n\t}\n.z_adleft{\n\tfloat: left;\n\tmargin:20px 0 0 15px;\n}\n.z_adleft .xuanch{\n\tmargin-bottom: 40px;\n}\n.z_adleft .liucheng{\n\tmargin-left: 60px;\n}\n.index_content{\n\tpadding-top: 30px;\n\tmin-height: 450px;\n}\n.index_left{\n\twidth:650px;\n\tfloat: left;\n\tmargin-top: -5px;\n}\n.tongzhi{\n\tbackground: url(../img/tongzhi.png) no-repeat; \n\twidth: 292px;\n\theight:186px;\n\tmargin-left: -5px;\n\tpadding:30px 5px 20px;\n}\n.gongshi{\n\tborder: 1px solid #e8edf0; \n\twidth: 310px;\n\theight: 230px;\n\tmargin-top: -5px;\n}\n.gongshi h5{\n\tbackground: #e8edf0;\n    line-height: 30px;\n    padding-left: 10px;\n    margin: 0px;\n    font-weight: 400;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px;\n}\n.gongshi h5 span{\n\tfloat: right;\n\tmargin-right: 10px;\n    margin-top: 10px;\n}\n.z_p{\n\tdisplay: block;\n\toverflow: hidden;\n\tzoom:1;\n}\n.z_p .tit{\n\twidth: 80px;\n\tbackground: #3b4d63;\n\theight:25px;\n\tdisplay: inline-block;\n\tline-height: 25px;\n\tcolor: #FFF;\n\tpadding-left: 15px;\n\tfloat: left;\n}\n.more{\n\tfloat: right;\n\twidth:42px;\n\tmargin-right: 10px;\n\tmargin-top:5px;\n}\n.tz_list {\n\tclear:both;\n\tlist-style: none;\n\tmargin: 10px 5px 0px 15px; \n\theight:150px;\n}\n.tz_list li{\n\tpadding: 4px 0;\n}\n.tz_list li .tz_tit{\n\tdisplay: inline-block;\n\twidth: 162px;\n\twhite-space:nowrap;/* 婵炴垶鎸哥粔闈涚暦閼碱剚鍋橀柨鐕傛嫹*/\n\toverflow:hidden;/* 闂佸憡鍔曢幊搴敊閹邦喗鎯ラ柛娑卞幖濮ｅ鎮楃涵鍛棄閻庤濞婂顕�醇閺囩噥鍚呴梺鑺ッ换妤冪矓閹绢喖绀勬繛宸簻閸斻儵鏌涢幒鎴烆棤婵炲牊鍨垮畷姗�川椤撗冩櫍 */\n\ttext-overflow:ellipsis;\n}\n.index_right{\n\twidth: 290px;\n\tfloat: right;\n\theight: 20px;\n}\n.index_left .content{\n\twidth: 310px;\n\theight: 230px;\n\tborder: 1px solid #e8edf0;\n\tfloat: right;\n\tmargin-left: 10px;\n\tborder-radius:3px; \n}\n.index_left .content h5{\n\tbackground: #e8edf0;\n\tline-height: 30px;\n\tpadding-left: 10px;\n\tmargin: 0px;\n\tfont-weight: 400;\n\tborder-top-left-radius:3px; \n\tborder-top-right-radius:3px; \n}\n.index_left .content h5 span{\n\tfloat: right;\n\tmargin-right: 10px;\n\tmargin-top:10px;\n}\n.listr{\n\tpadding-bottom: 20px;\n}\n.listr li{\n\twidth:280px;\n\tdisplay: inline-block;\n\twhite-space:nowrap;/* 婵炴垶鎸哥粔闈涚暦閼碱剚鍋橀柨鐕傛嫹*/\n\toverflow:hidden;/* 闂佸憡鍔曢幊搴敊閹邦喗鎯ラ柛娑卞幖濮ｅ鎮楃涵鍛棄閻庤濞婂顕�醇閺囩噥鍚呴梺鑺ッ换妤冪矓閹绢喖绀勬繛宸簻閸斻儵鏌涢幒鎴烆棤婵炲牊鍨垮畷姗�川椤撗冩櫍 */\n\ttext-overflow:ellipsis;\n}\n.lianjie {\n\tcolor: #3b4d63;\n}\n.lianjie_a a{\n\tfont-size: 12px;\n}\n.z_shangchuan{\n\tbackground: url(../img/shangchuan.png) no-repeat;\n\twidth: 92px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_yulan{\n\tbackground: url(../img/yulan.png) no-repeat;\n\twidth: 82px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_shangchuan:hover{\n\tbackground: url(../img/shangchuan2.png) no-repeat;\n\twidth: 92px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n\tcursor: pointer;\n}\n.z_fasong{\n\tbackground: url(../img/fasong.png) no-repeat;\n\twidth: 108px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n}\n.z_fasong:hover{\n\tbackground: url(../img/fasong2.png) no-repeat;\n\twidth: 108px;\n\theight: 20px;\n\tdisplay: inline-block;\n\tvertical-align:-5px;\n\tcursor: pointer;\n}\n.tshi_content{\n\tfont-size: 12px;\n}\n.tshi_content h6{\n\tfont-weight: 400;\n\tfont-size: 14px;\n}\n.tshi_content p{\n\ttext-indent:2em;\n}\n.z_tijiao{\n\tborder: 0px;\n\twidth: 63px;\n\theight: 20px;\n\tbackground: url(../img/baocuntijiao.png) no-repeat  -68px -28px;\n\tdisplay: inline-block;\n}\n.z_tijiao:hover{\n\tborder: 0px;\n\twidth: 63px;\n\theight: 20px;\n\tbackground: url(../img/baocuntijiao.png) no-repeat  -68px 0px;\n\tdisplay: inline-block;\n\tcursor: pointer;\n}\n.zt_table,.zt_table td{\n\tfont-size: 12px;\n}\n.zt_table tr td{\n\twidth: 25%;\n}\n.zt_table .zt_table_left{\n\ttext-align: right;\n}\n/*start閻庢鍠氶幊鎾诲吹椤撶儐娴栭柛婵堟儷s*/\n.t_shangchuan{\n\twidth:860px;\n\theight:560px;\n\tmargin-left:-420px;\n}\n.shangchuan_left{\n\twidth: 550px;\n\theight:480px;\n\tfloat: left;\n}\n.shangchuan_right\n{\n\tfloat: right;\n\twidth: 280px;\n\theight:480px;\n}\n.shangchuan_left .z_tc_img{\n\tdisplay: block;\n\tmargin:40px;\n\twidth: 450px;\n\theight: 300px;\n\ttext-align: center;\n}\n.shangchuan_left .z_tc_img img{\n\tmax-height:300px;\n\tmax-width:450px;\n}\n.z_tc_btn{\n\twidth: 100%;\n\ttext-align: center;\n}\n.z_tc_shili li{\n\tborder: 1px solid #bbbbbb;\n\twidth:270px;\n\theight: 180px;\n\tdisplay: block;\n\tmargin-top: 20px;\n}\n/*end閻庢鍠氶幊鎾诲吹椤撶儐娴栭柛婵堟儷s*/\n.z_yes{\n\tcolor:#666666;\n}\n.z_no{\n\tcolor:#b3b3b3;\n}\n.pager .z_anniu a{\n\tborder:1px solid #b3b3b3;\n\tcolor:#b3b3b3;\n}\n\n.z_container{\n\twidth: 684px;\n\tmargin: 0 auto;\n\tmargin-top: 20px;\n\t\n}\n\n\n\n.z_img_s{\n\toverflow:hidden;\n\tborder:1px solid #c2c2c2;\n\tfloat:left;\n\tbackground:#d6d6d6;\n\t}\n.z_one{\n\twidth:120px;\n\theight:120px;\n}\n.z_two{\n\twidth:110px;\n\theight:110px;\n\tmargin:10px 0  0px  20px;\n\t}\n.z_three{\n\twidth:90px;\n\theight:90px;\n\tmargin:30px 0  0px  20px;\n\t}\n.z_img_s img{\n\tmax-width:none;\n\tmargin:5px;\n}\n\n/* 开办主体Loading */\n.over {\n    display: none;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background-color: #f5f5f5;\n    filter:alpha(opacity=50); /*IE滤镜，透明度50%*/\n    -moz-opacity:0.5; /*Firefox私有，透明度50%*/\n    opacity:0.5;/*其他，透明度50%*/\n    z-index: 1000;\n}\n\n.layout {\n    display: none;\n    position: absolute;\n    bottom: 30%;\n    left: 40%;\n    width: 20%;\n    height: 20%;\n    z-index: 1001;\n    text-align:center;\n}\n#memberSelection{\n\twidth: 100px;\n}\n.row-fluid p{\n\tmargin-left: 40px;\n\tdisplay: inline-block;\n}"
  },
  {
    "path": "target/mongo/style/eu/index/default.css",
    "content": "/*the main demo bar (div)*/\n/*set the position of demo bar at plugin page > Look & Feel*/\nhtml{ }  /*padding-top:43px;*/\n#wpthemedemobar {\n  position:absolute;\n  /*top:0px;*/\n  left:0px;\n  width:100%;\n  height:43px;\n  padding:0px;\n  margin:0px;\n  background-color:#f1f1f1;\n  border-bottom:1px solid #cccccc;\n  color:#444444;\n  font-weight: bold;\n  font-family: tahoma;\n  font-size: 11px;\n  text-align:center;\n  z-index:100;\n}\n#openthemesbar{\n\t position: fixed;\n top:0px;\n  right:0px;\n  width:29px;\n  height:20px;\n  padding:0px;\n  margin:0px;\n  background-color:#f1f1f1;\n  border-bottom:1px solid #cccccc;\n  color:#444444;\n  cursor:pointer;\n  font-weight: bold;\n  font-family: tahoma;\n  font-size: 11px;\n  text-align:center;\n  z-index:99999999999999999999;\n  background:url(http://www.themepark.com.cn/demo/wp-content/plugins/wordpress-theme-demo-bar/images/bar.jpg)\n\t}\n\t#ad_thmemesbar{ position:absolute; left:20px; top:10px; font-size:14px; color:#06C;}\n.wpthemedemobar_wrapper {\n  width:100%;\n  position:relative;\n  padding-top:7px;\n}\n.wptdb_left a{ line-height:53px;}#gbds_thmemesbar{ cursor:pointer;}\n/*currently not in used (a)*/\n#wpthemedemobar a,#wpthemedemobar a:link,#wpthemedemobar a:visited {\n  font-weight: bold;\n  font-family: tahoma;\n}\n  \n/*the theme's name (span)*/\n.wptdb_themename {\n  border-bottom:1px solid #cccccc;\n}\n  \n/*the left content including close button and etc (div)*/\n.wptdb_left {\n  position:absolute;\n  top:3px;\n  right:5px;\n  z-index:99999999999;\n}\n\n/*the images in the left content including close button and etc (img)*/\n.wptdb_left img {\n  margin-right:4px;\n}\n  \n/*the \"currently previewing theme (previewed x times)\" part (div)*/\n.wptdb_current {\n  margin:0 auto; \n  text-align:center;\n  font-size:14px;\n  line-height:34px;\n  \n}\n  \n/*the text : previewed x times (span)*/\n.wptdb_popularity { \n  color:#888888;\n  font-weight:normal\n}\n\n/*quick jump area (div)*/\n.wptdb_jumpbar_wrapper {\n  position:absolute;\n  top:3px;\n  right:15px;\n}\n\n/*quick jump : select menu (select)*/\n.wptdb_jumpbar_select { \n  background-color:#f1f1f1;\n  border:1px solid #cccccc;\n  font-size:11px;\n  font-weight:bold;\n  font-family:tahoma;\n  color:#333333;\n  vertical-align:top;\n  margin-top:3px;\n}\n\n/*quick jump : select menu > option (option)*/\n.wptdb_jumpbar_select option {\n  padding:1px;\n}\n\n/*quick jump (input type=button)*/\n#wpthemedemobar .wptdb_jumpbar_preview_button {\n  background-color:#2885B7;\n  border:1px solid #cccccc;\n  font:bold 11px tahoma;\n  color:#fff;\n  margin-left:5px;\n  padding:4px;\n  padding-left:9px;\n  padding-right:9px;\n  -moz-border-radius:5px;\n}\n\n\n/* qTip - Tooltip script */\ndiv#wptdb_qTip {\n padding: 6px;\n border: 1px solid #cccccc;\n display: none;\n background: #fff;\n color: #333333;\n font: 11px Verdana, Arial, sans-serif;\n text-align: left;\n position: absolute;\n z-index: 1000;\n}"
  },
  {
    "path": "target/mongo/style/eu/index/detailinputunit.css",
    "content": ".into_unit { width: 600px; border: 1px solid #ccc; padding: 10px 10px; overflow: hidden; background: #fff; margin-bottom: 10px; position: relative; box-shadow: 0 0 20px rgba(0,0,0,.15); border-radius: 4px; }\n.info_title{ background-color: #ffffff;  height: 30px;  line-height: 30px;  position: absolute; z-index: 1000; text-align: center; letter-spacing: 1px; font-size: 13px;}\n.info_detail { width: 500px; margin: 20px 30px; padding: 10px 20px 10px 20px; border: 1px dashed #dddddd; float: left; text-align: left; position: relative;}\n\n.info_detail div{ overflow: hidden; table-layout: fixed; word-wrap: break-word; font-size: 14px; color: #333;}\n.info_detail p{ margin-top: 15px;}\n.info_detail span input, .info_detail span textarea, .info_detail select{ outline: none; border-radius: 3px; -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 0.5s ease, box-shadow 0.5s ease; -moz-transition: border 0.5s ease, box-shadow 0.5s ease; -o-transition: border 0.5s ease, box-shadow 0.5s ease; transition: border 0.5s ease, box-shadow 0.5s ease;}\n.info_detail span input{ width: 200px; height: 14px; line-height: 20px; float: left; padding: 6px; border: 1px solid #bbb; text-align: left; font-size: 16px;}\n.info_detail span{ float: left; width: 100%; margin-top: 2px; clear: both;}\n.info_detail strong{ font-size: 14px; font-weight: bold; color: #666; float: left;}\n.info_detail select{ height: 28px; float: left; padding: 4px; border: 1px solid #bbb; text-align: left; font-size: 16px;}\n.info_detail select option, .info_detail span textarea{ font-size: 16px;}\n\n\n.edit_password_btn { width: 120px; height: 36px; padding: 0; background: #fff; zoom: 1; cursor: pointer; color: #fff; font-size: 20px; font-family: \"΢ź\"; text-shadow: 0 1px 0 #fff, 0 2px 0 #333; border-radius: 4px; border: 1px solid #0095d8; border-color: #009de4 #0095d8 #0073a7; box-shadow: 0 2px 2px rgba(0, 0, 0, .15), inset 0 1px 0 rgba(255, 255, 255, .5), 0 0 15px rgba(0,0,0,.3); background: #0095d8;}\n.edit_password_btn:hover{ border-color: #00b0ff #009fe6 #0081bb; background: #009fe6; background: -webkit-gradient(linear, left top, left bottom, from(#00a3ec),to(#0093d5));}\n\n\n.edit_publish_btn { width: 120px; height: 36px; padding: 0; background: #fff; zoom: 1; cursor: pointer; color: #fff; font-size: 20px; font-family: \"΢ź\"; text-shadow: 0 1px 0 #fff, 0 2px 0 #333; border-radius: 4px; border: 1px solid #0095d8; border-color: #009de4 #0095d8 #0073a7; box-shadow: 0 2px 2px rgba(0, 0, 0, .15), inset 0 1px 0 rgba(255, 255, 255, .5), 0 0 15px rgba(0,0,0,.3); background: #0095d8;}\n.edit_publish_btn:hover{ border-color: #00b0ff #009fe6 #0081bb; background: #009fe6; background: -webkit-gradient(linear, left top, left bottom, from(#00a3ec),to(#0093d5));}"
  },
  {
    "path": "target/mongo/style/eu/index/embed.default.css",
    "content": "#ds-ssr{display:none !important}#ds-reset,#ds-related-reads{font-weight:normal;font-size:13px;font-size-adjust:none;color:#333;line-height:1;text-align:left}#ds-reset *,#ds-related-reads *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#ds-reset input[type=button],#ds-related-reads input[type=button],#ds-reset input[type=submit],#ds-related-reads input[type=submit],#ds-reset input[type=reset],#ds-related-reads input[type=reset],#ds-reset button,#ds-related-reads button{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#ds-reset div,#ds-related-reads div,#ds-reset ul,#ds-related-reads ul,#ds-reset ol,#ds-related-reads ol,#ds-reset li,#ds-related-reads li,#ds-reset ul li,#ds-related-reads ul li,#ds-reset ol li,#ds-related-reads ol li,#ds-reset iframe,#ds-related-reads iframe,#ds-reset h1,#ds-related-reads h1,#ds-reset h2,#ds-related-reads h2,#ds-reset h3,#ds-related-reads h3,#ds-reset h4,#ds-related-reads h4,#ds-reset h5,#ds-related-reads h5,#ds-reset h6,#ds-related-reads h6,#ds-reset p,#ds-related-reads p,#ds-reset img,#ds-related-reads img,#ds-reset blockquote,#ds-related-reads blockquote,#ds-reset a,#ds-related-reads a,#ds-reset span,#ds-related-reads span,#ds-reset pre,#ds-related-reads pre,#ds-reset code,#ds-related-reads code,#ds-reset strong,#ds-related-reads strong,#ds-reset sub,#ds-related-reads sub,#ds-reset sup,#ds-related-reads sup,#ds-reset fieldset,#ds-related-reads fieldset,#ds-reset form,#ds-related-reads form,#ds-reset label,#ds-related-reads label,#ds-reset input,#ds-related-reads input,#ds-reset textarea,#ds-related-reads textarea,#ds-reset header,#ds-related-reads header,#ds-reset section,#ds-related-reads section,#ds-reset article,#ds-related-reads article,#ds-reset select,#ds-related-reads select{border:0;padding:0;margin:0;vertical-align:baseline;font:inherit;line-height:inherit;background:none;width:auto;height:auto;float:none;overflow:visible;transition:none}#ds-reset strong,#ds-related-reads strong{font-weight:bold}#ds-reset p,#ds-related-reads p{text-indent:0;clear:none}#ds-reset span,#ds-related-reads span,#ds-reset strong,#ds-related-reads strong,#ds-reset label,#ds-related-reads label,#ds-reset input,#ds-related-reads input{display:inline;margin:0}#ds-reset textarea:focus,#ds-related-reads textarea:focus,#ds-reset input:focus,#ds-related-reads input:focus{outline:none}#ds-reset ul,#ds-related-reads ul,#ds-reset ol,#ds-related-reads ol,#ds-reset ul li,#ds-related-reads ul li,#ds-reset ol li,#ds-related-reads ol li{list-style:none;display:block}#ds-reset input,#ds-related-reads input,#ds-reset button,#ds-related-reads button{-webkit-border-radius:3px;border-radius:3px}#ds-indicator{display:none;position:fixed;z-index:99999;top:150px;left:0;padding:8px;border-bottom-right-radius:3px;border-top-right-radius:3px;width:16px;height:16px;background:#666 url(\"data:image/gif;base64,R0lGODlhEAAQAPQAAGZmZv///2lpadzc3K+vr/r6+ufn5319fZmZmfDw8Le3t8DAwHV1daOjo4eHh9LS0srKygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==\") 8px 8px no-repeat;*background-image:url(\"../images/loading.gif\");*position:absolute;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}#ds-waiting{cursor:wait;display:block;width:16px;height:11px;padding:0 0 3px 5px;margin:0;background:url(\"data:image/gif;base64,R0lGODlhEAALAPQAAP///z2LqeLt8dvp7u7090GNqz2LqV+fuJ/F1IW2ycrf51aatHWswaXJ14i4ys3h6FmctUCMqniuw+vz9eHs8fb5+meku+Tu8vT4+cfd5bbT3tbm7PH2+AAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA\") 0 0 no-repeat;*background-image:url(\"../images/waiting.gif\")}#ds-reset .ds-highlight{color:#d32 !important}#ds-reset .ds-rounded{-webkit-border-radius:3px;border-radius:3px}#ds-reset .ds-rounded-top{-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}#ds-reset .ds-rounded-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px}#ds-reset .ds-gradient-bg{background:url(\"../images/bg_sprites.png\") 0 -60px repeat-x}#ds-reset .ds-avatar{box-shadow:0 1px 1px rgba(255,255,255,0.75);position:relative;-webkit-border-radius:3px;border-radius:3px;background-color:#fff;float:left}#ds-reset .ds-avatar img{display:block;width:50px;height:50px;max-width:none;box-shadow:0 1px 3px rgba(0,0,0,0.22);-webkit-border-radius:3px;border-radius:3px}#ds-reset .ds-avatar .ds-service-icon{display:block;position:absolute;bottom:-4px;right:-4px}#ds-reset img.ds-smiley{margin:0;padding:0;display:inline;border:none}#ds-reset .ds-icon{vertical-align:middle;display:inline-block;overflow:hidden;background:transparent url(\"../images/Sprites_Embed.png\") no-repeat;_background-image:url(\"../images/sprites.gif\")}#ds-reset a .ds-icon{opacity:.6;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear}#ds-reset a:hover .ds-icon{opacity:1}#ds-reset .ds-service-list a{vertical-align:middle;padding-right:3px}#ds-reset .ds-service-list li:hover a{color:#333}#ds-reset .ds-service-icon,#ds-reset .ds-service-icon-grey{width:16px !important;height:16px !important;line-height:100px;display:inline-block;background:url(\"../images/service-icons-color.png?v=2\") no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\");overflow:hidden}#ds-reset .ds-service-icon-grey{background-image:url(\"../images/service-icons-grey.png\");_background-image:url(\"../images/service-icons-grey.gif\")}#ds-reset .ds-service-link{height:16px !important;line-height:16px;padding-left:20px;display:block;background:url(\"../images/service-icons-color.png?v=2\") no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\");overflow:hidden}#ds-reset .ds-weibo{background-position:0 0}#ds-reset .ds-renren{background-position:0 -32px}#ds-reset .ds-qqt{background-position:0 -64px}#ds-reset .ds-kaixin{background-position:0 -80px}#ds-reset .ds-douban{background-position:0 -96px}#ds-reset .ds-qzone{background-position:0 -128px}#ds-reset .ds-duoshuo{background-position:0 -144px}#ds-reset .ds-qq{background-position:0 -192px}#ds-reset .ds-baidu{background-position:0 -208px}#ds-reset .ds-google{background-position:0 -240px}#ds-reset .ds-weixin{background-position:0 -272px}#ds-reset .ds-wechat{background-position:0 -272px}.ds-icons-32 a{display:block;cursor:pointer;width:32px !important;height:32px !important;background:url(\"../images/icons_large.png\") no-repeat !important;overflow:hidden;text-indent:-9999px}.ds-icons-32 a.ds-weibo{background-position:-37px 0 !important}.ds-icons-32 a.ds-qzone{background-position:0 0 !important}.ds-icons-32 a.ds-qqt{background-position:-74px 0 !important}.ds-icons-32 a.ds-renren{background-position:-148px 0 !important}.ds-icons-32 a.ds-kaixin{background-position:-111px 0 !important}.ds-icons-32 a.ds-weixin{background-position:-224px 0 !important}.ds-icons-32 a.ds-wechat{background-position:-224px 0 !important}.ds-icons-32 a.ds-qq{background-position:-488px 0 !important}.ds-icons-32 a.ds-douban{background-position:-186px 0 !important}.ds-icons-32 a.ds-baidu{background-position:-262px 0 !important}#ds-reset #ds-ctx{padding:0;margin:8px 0;max-width:640px}#ds-reset #ds-ctx .ds-ctx-entry{padding:6px;margin:0;border-bottom:1px solid #e6e6e6}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a{color:#e77064}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a:hover{color:#d32}#ds-reset #ds-ctx .ds-ctx-entry .ds-avatar{margin:0;width:30px;height:30px}#ds-reset #ds-ctx .ds-ctx-entry .ds-avatar img{width:30px;height:30px;box-shadow:none}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-body{margin-left:38px}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head{position:relative;_zoom:1;line-height:1em;padding:1px 0 0;margin:0 0 .25em}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-nth{color:#999;font-size:12px;position:absolute;top:2px;right:0}#ds-reset #ds-ctx .ds-ctx-entry .ds-time{font-size:12px;*font-size:12px;margin-left:8px;color:#999;_zoom:1}#ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-content{position:relative;_zoom:1;padding:0;margin:0;overflow:hidden;line-height:1.5em}#ds-reset #ds-ctx .ds-ctx-entry:hover .ds-comment-actions{display:block}#ds-reset #ds-ctx .ds-comment-actions{bottom:0;right:0;line-height:18px;position:absolute;display:none;*display:block}#ds-reset #ds-ctx .ds-comment-actions a{margin:0 0 0 6px}#ds-reset.ds-touch #ds-ctx .ds-ctx-entry .ds-comment-actions{display:block}#ds-reset .ds-comment-body #ds-ctx{border-left:3px solid #ccc;background-color:rgba(0,0,0,0.03)}#ds-reset.ds-no-opacity .ds-comment-body #ds-ctx{background:#f8f8f8}#ds-reset .ds-dialog-body #ds-ctx .ds-ctx-entry:hover .ds-comment-actions{display:none}#ds-thread{clear:both;position:relative;overflow:visible;_zoom:1}#ds-thread #ds-reset a{cursor:pointer;text-decoration:none;color:#777;background-color:transparent;-webkit-transition:color .15s linear;-moz-transition:color .15s linear;transition:color .15s linear}#ds-thread #ds-reset a:hover{color:#333}#ds-thread #ds-reset ul,#ds-thread #ds-reset ul li{background:none;margin:0;padding:0}#ds-thread #ds-reset .ds-arrow{position:absolute;width:0;height:0;font-size:0 !important;line-height:0 !important;_border-right-color:#ffc0cb !important;_border-left-color:#ffc0cb !important;_filter:chroma(color=#ffc0cb) !important}#ds-thread #ds-reset .ds-arrow-down{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #fff}#ds-thread #ds-reset button{cursor:pointer;margin:0;padding:0;border-radius:0}#ds-thread #ds-reset .ds-meta{position:relative;padding:8px 0;line-height:24px;border-bottom:1px solid rgba(0,0,0,0.13)}#ds-thread #ds-reset .ds-like-tooltip{position:absolute;z-index:9999;background-color:#fcfcfc;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fcfcfc), to(#f9f9f9));background:-moz-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcfcfc), color-stop(100%, #f9f9f9));background:-webkit-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:-ms-linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);background:linear-gradient(top, #fcfcfc 0, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc',endColorstr='#f9f9f9',GradientType=0);border:1px solid #aaa;box-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 1px 0 #fff;font-size:12px;padding:8px 14px}#ds-thread #ds-reset .ds-like-tooltip ul{width:84px;float:left}#ds-thread #ds-reset .ds-like-tooltip li{line-height:16px;margin:6px 0}#ds-thread #ds-reset .ds-like-tooltip p{clear:both;margin:6px 0}#ds-thread #ds-reset .ds-like-tooltip .ds-like-tooltip-footer{text-align:right}#ds-thread #ds-reset a.ds-like-thread-button{color:#555;padding:4px 8px;border:1px solid #ccc;border-bottom-color:#aaa;box-shadow:inset 0 0 1px #fff;margin-right:15px;text-shadow:0 1px 0 #fff;background-color:#e0e0e0;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e0e0e0));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e0e0e0);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e0e0e0);background-image:-ms-linear-gradient(#fff, #fff 25%, #e0e0e0);background-image:linear-gradient(#fff, #fff 25%, #e0e0e0)}#ds-thread #ds-reset a.ds-like-thread-button .ds-icon-heart{position:relative;top:-2px;opacity:1}#ds-thread #ds-reset a.ds-like-thread-button span{color:#555}#ds-thread #ds-reset .ds-thread-cancel-like{display:none}#ds-thread #ds-reset a.ds-thread-liked{background:#e9e9e9}#ds-thread #ds-reset a.ds-thread-liked:hover .ds-thread-cancel-like{display:inline}#ds-thread #ds-reset a.ds-thread-liked:hover .ds-thread-like-text{display:none}#ds-thread #ds-reset #ds-hot-posts{border:1px solid #ccc;overflow:hidden;margin:8px 0;padding:0;_height:100%}#ds-thread #ds-reset .ds-header{font-weight:bold;font-size:14px;color:#555;line-height:30px;padding:0 12px}#ds-thread #ds-reset .ds-toolbar{position:relative;z-index:5;font-size:12px;padding:8px 0;width:100%;clear:both}#ds-thread #ds-reset .ds-toolbar:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-visitor{float:right;line-height:1.5em;margin-right:6px}#ds-thread #ds-reset .ds-account-control{float:right;position:relative;font-size:12px;cursor:pointer;text-align:right;line-height:18px;padding-bottom:3px;width:75px}#ds-thread #ds-reset .ds-account-control span{display:block;float:left;color:#999}#ds-thread #ds-reset .ds-account-control ul{display:none;position:absolute;top:19px;left:0;border:1px solid #aaa;background:#f8f8f8;box-shadow:inset 0 1px 1px #fff,0 1px 1px rgba(0,0,0,0.3);border-radius:3px;text-align:center}#ds-thread #ds-reset .ds-account-control ul li a{border-top:1px solid #fff;border-bottom:1px solid #ddd;display:block;padding:3px 10px;text-shadow:0 1px 0 #fff}#ds-thread #ds-reset .ds-account-control ul li a:hover{color:#555}#ds-thread #ds-reset .ds-account-control.ds-active span{color:#555}#ds-thread #ds-reset .ds-account-control.ds-active ul{display:block}#ds-thread #ds-reset .ds-alert{margin:.5em 0;border:1px solid #fbeed5;border-radius:3px;padding:6px 6px;color:#c09853;background-color:#fcf8e3;line-height:1.5em}#ds-thread #ds-reset .ds-login-buttons{width:100%;position:relative;padding:10px 0 6px}#ds-thread #ds-reset .ds-login-buttons p{float:left;line-height:24px;margin:0}#ds-thread #ds-reset .ds-login-buttons .ds-service-list li{float:left;height:16px;width:54px;padding:4px 0;margin:0 0 0 6px}#ds-thread #ds-reset .ds-login-buttons .ds-more-services{color:#d32 !important;line-height:16px;display:block}#ds-thread #ds-reset .ds-login-buttons .ds-more-services:hover{color:#e77064 !important}#ds-thread #ds-reset .ds-login-buttons .ds-additional-services{display:none}#ds-thread #ds-reset .ds-login-buttons .ds-social-links{float:left;width:306px}#ds-thread #ds-reset .ds-login-buttons:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset a.ds-unread-comments-count{display:none;background-color:#d32;color:#fff !important;margin-right:6px;padding:1px 5px;font-weight:bold;-webkit-border-radius:5px;border-radius:5px;box-shadow:inset 0 1px 1px rgba(255,255,255,0.4),0 1px 1px rgba(0,0,0,0.3);text-shadow:0 1px 1px rgba(0,0,0,0.3)}#ds-thread #ds-reset a.ds-unread-comments-count:hover{background:#f00}#ds-thread #ds-reset .ds-replybox{width:auto;font-size:12px;z-index:3;margin:8px 0;padding:0 0 0 60px;position:relative;_zoom:1}#ds-thread #ds-reset .ds-replybox:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-replybox .ds-avatar{position:absolute;top:0;left:0}#ds-thread #ds-reset .ds-replybox .ds-avatar img{width:50px;height:50px;visibility:visible;margin:0}#ds-thread #ds-reset .ds-inline-replybox{margin:8px 0 2px 0;padding-left:38px}#ds-thread #ds-reset .ds-inline-replybox .ds-avatar img{width:30px;height:30px;box-shadow:0 1px 2px rgba(0,0,0,0.22)}#ds-thread #ds-reset .ds-textarea-wrapper{position:relative;border:1px solid #ccc;border-bottom:none;padding-right:20px;background:#fff url(\"../images/bg_sprites.png\") 0 -90px repeat-x;overflow:hidden}#ds-thread #ds-reset .ds-textarea-wrapper textarea{box-shadow:none;-webkit-appearance:none;overflow:auto;padding:10px;height:54px;margin:0;resize:none;color:#999;width:100%}#ds-thread #ds-reset .ds-textarea-wrapper textarea:focus{color:#333}#ds-thread #ds-reset .ds-textarea-wrapper .ds-hidden-text{word-wrap:break-word;visibility:hidden;position:absolute;top:0;left:10px;right:10px}#ds-thread #ds-reset .ds-textarea-wrapper textarea,#ds-thread #ds-reset .ds-textarea-wrapper .ds-hidden-text{display:block;font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;border:none}#ds-thread #ds-reset .ds-post-toolbar{position:relative;width:100%;box-shadow:0 1px 0 rgba(255,255,255,0.6)}#ds-thread #ds-reset .ds-post-toolbar span,#ds-thread #ds-reset .ds-post-toolbar input,#ds-thread #ds-reset .ds-post-toolbar label,#ds-thread #ds-reset .ds-post-toolbar a{vertical-align:middle;width:auto}#ds-thread #ds-reset .ds-post-options{position:relative;margin-right:100px;height:30px;border:1px solid #ccc;border-right:none;border-bottom-color:#aaa;border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px}#ds-thread #ds-reset .ds-toolbar-buttons{position:absolute;top:5px;left:6px}#ds-thread #ds-reset .ds-toolbar-button{display:block;width:19px !important;height:19px;float:left;margin-right:4px;background:transparent url(\"../images/Sprites_Embed.png\") no-repeat;_background-image:url(\"../images/sprites.gif\");vertical-align:middle;opacity:.6;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear}#ds-thread #ds-reset .ds-toolbar-button:hover{opacity:1}#ds-thread #ds-reset .ds-add-image{background-position:0 -48px}#ds-thread #ds-reset .ds-add-image:hover{background-position:0 -66px}#ds-thread #ds-reset .ds-add-emote{background-position:0 -12px}#ds-thread #ds-reset .ds-add-emote:hover{background-position:0 -30px}#ds-thread #ds-reset .ds-sync{font-size:12px;color:#999;line-height:30px;position:absolute;right:5px}#ds-thread #ds-reset .ds-sync label{color:#777;cursor:pointer;-webkit-transition:color .15s linear;-moz-transition:color .15s linear;transition:color .15s linear}#ds-thread #ds-reset .ds-sync label:hover{color:#555}#ds-thread #ds-reset .ds-sync a.ds-service-icon,#ds-thread #ds-reset .ds-sync a.ds-service-icon-grey{margin:7px 2px 7px 3px}#ds-thread #ds-reset .ds-post-button{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;position:absolute;right:0;top:0;height:32px;width:100px;text-align:center;text-shadow:0 1px 0 #fff;color:#555;font-size:14px;font-weight:bold;border:1px solid #ccc;border-bottom-color:#aaa;border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fcfcfc), color-stop(25%, #fcfcfc), to(#e6e6e6));background-image:-webkit-linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:-ms-linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);background-image:linear-gradient(#fcfcfc, #fcfcfc 25%, #e6e6e6);-webkit-transition:all .15s linear;-moz-transition:all .15s linear;transition:all .15s linear;box-shadow:inset 0 0 1px #fff}#ds-thread #ds-reset .ds-post-button:hover{background-position:0 -15px;color:#333}#ds-thread #ds-reset .ds-post-button:active{-webkit-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)}#ds-thread #ds-reset .ds-comments-info{width:100%;font-size:13px;margin-top:10px;padding:8px 0;line-height:25px;position:relative}#ds-thread #ds-reset .ds-sort{position:absolute;right:0;top:8px}#ds-thread #ds-reset .ds-sort a{color:#999;padding:0 4px;margin:0 2px}#ds-thread #ds-reset .ds-sort a:hover{color:#333}#ds-thread #ds-reset .ds-sort a.ds-current,#ds-thread #ds-reset .ds-sort a:active{color:#d32}#ds-thread #ds-reset ul.ds-comments-tabs .ds-highlight{margin:0 2px 0 0}#ds-thread #ds-reset ul.ds-comments-tabs .ds-service-icon{vertical-align:middle;margin:0 2px 1px 0}#ds-thread #ds-reset li.ds-tab{display:inline;font-size:13px;margin:0 5px 0 0;padding:0}#ds-thread #ds-reset li.ds-tab a{text-shadow:0 1px 0 #fff;padding:3px 5px;display:inline;-webkit-border-radius:5px;border-radius:5px}#ds-thread #ds-reset li.ds-tab a.ds-current{border:1px solid #ccc;background-color:rgba(0,0,0,0.04)}#ds-thread #ds-reset li.ds-tab a:hover{background-color:rgba(0,0,0,0.04)}#ds-thread #ds-reset .ds-comments{width:100%;border-bottom:1px solid rgba(0,0,0,0.13)}#ds-thread #ds-reset .ds-comments:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset li.ds-post{width:100%;overflow:hidden;clear:both;border-top:1px solid rgba(0,0,0,0.13);margin:0;padding:0;list-style:none}#ds-thread #ds-reset li.ds-post-placeholder{text-align:center;color:#999;padding:1em 0}#ds-thread #ds-reset .ds-post-self{position:relative;padding:10px;border-top:1px solid rgba(255,255,255,0.7)}#ds-thread #ds-reset .ds-post-self:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-thread #ds-reset .ds-post-self:hover .ds-post-delete,#ds-thread #ds-reset .ds-post-self:hover .ds-post-report{display:inline-block}#ds-thread #ds-reset.ds-touch .ds-post-self .ds-post-delete,#ds-thread #ds-reset.ds-touch .ds-post-self .ds-post-report{display:inline-block}#ds-thread #ds-reset .ds-comment-body{padding-left:60px}#ds-thread #ds-reset .ds-comment-body p{font-size:13px;line-height:1.5em;margin:.5em 0;word-wrap:break-word}#ds-thread #ds-reset .ds-comment-body img{max-width:100%;vertical-align:text-bottom;box-shadow:none}#ds-thread #ds-reset .ds-comment-body embed{max-width:100%}#ds-thread #ds-reset .ds-comment-body code{display:block;font-size:12px;font-family:Monaco,Menlo,Consolas,\"Courier New\",monospace;padding:8px 12px;background-color:#f0f0f0;margin:8px 0;border-radius:3px;border:1px solid #ddd;color:#666}#ds-thread #ds-reset .ds-comment-body a{color:#777}#ds-thread #ds-reset .ds-comment-body a:hover{color:#555}#ds-thread #ds-reset a.ds-comment-context{position:relative;margin:.5em 0;color:#e77064}#ds-thread #ds-reset a.ds-comment-context:hover{color:#d32}#ds-thread #ds-reset #ds-bubble{position:absolute;background-color:#fff;-webkit-border-radius:5px;border-radius:5px;padding:10px;color:#333;border:1px solid #aaa;box-shadow:0 0 2px rgba(0,0,0,0.2);z-index:9999;font-size:13px}#ds-thread #ds-reset #ds-bubble a{color:#e77064}#ds-thread #ds-reset #ds-bubble a:hover{color:#d32}#ds-thread #ds-reset #ds-bubble p{line-height:18px}#ds-thread #ds-reset #ds-bubble .ds-arrow-border{border-top-color:#aaa;bottom:-6px}#ds-thread #ds-reset #ds-bubble .ds-arrow{left:32px;bottom:-5px}#ds-thread #ds-reset #ds-ctx-bubble{width:300px}#ds-thread #ds-reset #ds-ctx-bubble .ds-bubble-footer{padding:6px 0 0 0;line-height:18px}#ds-thread #ds-reset #ds-user-card{width:276px;min-height:50px}#ds-thread #ds-reset #ds-user-card .ds-avatar{margin-right:10px}#ds-thread #ds-reset #ds-user-card .ds-avatar img{width:50px;height:50px}#ds-thread #ds-reset #ds-user-card .ds-user-name{vertical-align:top;display:inline-block;max-width:8em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14px}#ds-thread #ds-reset #ds-user-card .ds-user-card-meta{margin:14px 0 0 62px}#ds-thread #ds-reset #ds-user-card .ds-user-description{border-top:1px dotted #ddd;margin-top:.5em;color:#aaa}#ds-thread #ds-reset #ds-user-card .ds-service-icon{margin-right:3px}#ds-thread #ds-reset .ds-comment-header{padding-top:1px}#ds-thread #ds-reset .ds-comment-footer{line-height:1.5em}#ds-thread #ds-reset .ds-comment-footer a{margin:0 6px 0 0;padding:0 6px 0 0}#ds-thread #ds-reset .ds-comment-actions a{font-size:12px;color:#999}#ds-thread #ds-reset .ds-comment-actions a .ds-icon{position:relative;top:-1px}#ds-thread #ds-reset .ds-user-name{color:#777;font-size:13px;margin-right:8px}#ds-thread #ds-reset .ds-post-liked .ds-icon-like{background-position:0 -130px}#ds-thread #ds-reset .ds-post-liked a.ds-post-likes{color:#d32}#ds-thread #ds-reset .ds-reply-active{display:block}#ds-thread #ds-reset .ds-reply-active .ds-post-reply{color:#333}#ds-thread #ds-reset .ds-reply-active .ds-post-reply .ds-icon{opacity:1}#ds-thread #ds-reset .ds-post-delete,#ds-thread #ds-reset .ds-post-report{display:none}#ds-thread #ds-reset .ds-icon-heart{width:14px;height:13px;background-position:0 -130px}#ds-thread #ds-reset .ds-icon-settings{width:12px;height:12px;margin:3px 4px 0;opacity:1}#ds-thread #ds-reset .ds-icon-like{width:14px;height:13px;background-position:0 -117px}#ds-thread #ds-reset .ds-icon-share{width:18px;height:13px;background-position:0 -234px}#ds-thread #ds-reset .ds-icon-reply{width:18px;height:13px;background-position:0 -105px}#ds-thread #ds-reset .ds-icon-delete{width:13px;height:13px;background-position:0 -176px}#ds-thread #ds-reset .ds-icon-report{width:12px;height:12px;background-position:0 -189px}#ds-thread #ds-reset .ds-time{font-size:12px;*font-size:12px;margin-right:8px;color:#999;_zoom:1}#ds-thread #ds-reset ul.ds-children{margin-left:38px}#ds-thread #ds-reset ul.ds-children .ds-avatar{width:30px;height:30px}#ds-thread #ds-reset ul.ds-children .ds-avatar img{width:30px;height:30px}#ds-thread #ds-reset ul.ds-children .ds-post-self{padding-left:0}#ds-thread #ds-reset ul.ds-children .ds-comment-body{padding-left:38px}#ds-thread #ds-reset .ds-paginator{border-bottom:1px solid rgba(0,0,0,0.13);text-align:right;padding-bottom:15px;clear:both;line-height:1em}#ds-thread #ds-reset .ds-paginator div.ds-border{border-top:1px solid rgba(255,255,255,0.7);margin-bottom:15px}#ds-thread #ds-reset .ds-paginator a{font-size:12px;margin:0 3px;padding:2px 5px;border:1px solid transparent}#ds-thread #ds-reset .ds-paginator a:hover,#ds-thread #ds-reset .ds-paginator a.ds-current{-webkit-border-radius:3px;border-radius:3px;background-color:rgba(0,0,0,0.03)}#ds-thread #ds-reset .ds-paginator a.ds-current{color:#d32;border:1px solid #ccc}#ds-thread #ds-reset .ds-powered-by{font-size:12px;text-align:right;padding:10px 0}#ds-thread #ds-reset .ds-powered-by a{color:#999;text-decoration:none}#ds-thread #ds-reset .ds-powered-by a:hover{color:#555}#ds-thread #ds-reset.ds-no-transition .ds-post-button,#ds-thread #ds-reset.ds-no-transition .ds-more a{background:url(\"../images/bg_sprites.png\") repeat-x !important}#ds-thread #ds-reset.ds-no-transition .ds-post-button:hover,#ds-thread #ds-reset.ds-no-transition .ds-more a:hover{background-position:0 -30px !important}#ds-thread #ds-reset.ds-no-transition .ds-like-thread-button{background:url(\"../images/bg_sprites.png\") repeat-x}#ds-thread #ds-reset.ds-no-opacity li.ds-post{border-top:1px solid #ddd}#ds-thread #ds-reset.ds-no-opacity .ds-comments,#ds-thread #ds-reset.ds-no-opacity .ds-paginator{border-bottom:1px solid #ddd}#ds-thread #ds-reset.ds-no-opacity .ds-post-self{border-top:none}#ds-thread #ds-reset.ds-no-opacity .ds-tab a.ds-current{background:#f8f8f8}#ds-thread #ds-reset.ds-ie6 .ds-post-report,#ds-thread #ds-reset.ds-ie6 .ds-post-delete{display:inline !important}#ds-thread #ds-reset.ds-ie6 .ds-textarea-wrapper{padding:10px 10px}#ds-thread #ds-reset.ds-ie6 .ds-textarea-wrapper textarea{width:95%;color:#333;padding:0}#ds-thread #ds-reset.ds-ie6 .ds-post{width:100%;float:left}#ds-thread #ds-reset.ds-ie6 .ds-tab a.ds-current{padding-bottom:5px}#ds-thread #ds-reset.ds-ie6 #ds-ctx-bubble .ds-arrow{bottom:-8px}#ds-thread #ds-reset.ds-ie6 #ds-ctx-bubble .ds-arrow-border{bottom:-9px}#ds-thread.ds-narrow #ds-reset .ds-post-self{padding:8px}#ds-thread.ds-narrow #ds-reset .ds-comment-body,#ds-thread.ds-narrow #ds-reset .ds-replybox{padding-left:38px}#ds-thread.ds-narrow #ds-reset .ds-avatar img{width:30px;height:30px}#ds-thread.ds-narrow #ds-reset .ds-post-button{width:70px}#ds-thread.ds-narrow #ds-reset .ds-post-options{margin-right:70px}#ds-smilies-tooltip{border:1px solid #aaa;position:absolute;width:400px;background-color:#fff;z-index:9999;box-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}#ds-smilies-tooltip a{cursor:pointer}#ds-smilies-tooltip ul{list-style-type:none;padding:0;margin:0}#ds-smilies-tooltip ul.ds-smilies-tabs{width:119px;position:absolute;top:0;left:0;height:159px;overflow-y:auto;background:#f8f8f8;border-right:1px solid #ccc;border-top-left-radius:3px;border-bottom-left-radius:3px}#ds-smilies-tooltip ul.ds-smilies-tabs li a{color:#999;padding:6px 10px;display:block;border-bottom:1px solid #ccc;background-color:#fff;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fff), to(#e9e9e9));background:-moz-linear-gradient(top, #fff 0, #e9e9e9 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(100%, #e9e9e9));background:-webkit-linear-gradient(top, #fff 0, #e9e9e9 100%);background:-ms-linear-gradient(top, #fff 0, #e9e9e9 100%);background:linear-gradient(top, #fff 0, #e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e9e9e9',GradientType=0);font-size:12px;line-height:1.3em}#ds-smilies-tooltip ul.ds-smilies-tabs li:first-child a{border-top-left-radius:3px}#ds-smilies-tooltip ul.ds-smilies-tabs li a.ds-current{color:#666;background:#e3e3e3;filter:none;box-shadow:inset 0 0 4px rgba(0,0,0,0.1)}#ds-smilies-tooltip .ds-smilies-container{padding:10px 5px;height:140px;margin-left:125px;overflow-y:auto}#ds-smilies-tooltip .ds-smilies-container li{list-style:none;float:left;width:26px;height:26px;text-align:center;cursor:pointer}#ds-smilies-tooltip .ds-smilies-container li img{visibility:visible}#ds-smilies-tooltip .ds-smilies-container li:hover{position:relative;top:-1px}#ds-wrapper{left:0;right:0;top:20%;bottom:0;width:100%;margin:auto;z-index:9999;position:fixed;_position:absolute;text-align:center;color:#777}#ds-wrapper .ds-dialog,#ds-wrapper #ds-reset.ds-dialog{margin:0 auto;text-align:left;_zoom:1;width:480px;max-width:100%}#ds-wrapper #ds-reset.ds-dialog-bind-more .ds-service-list{width:50%}#ds-wrapper #ds-reset a{cursor:pointer;text-decoration:none;color:#777}#ds-wrapper #ds-reset .ds-dialog-inner{width:100%;position:relative;border:1px solid #aaa;background:#fff url(\"../images/bg_sprites.png\") 0 -90px repeat-x;text-shadow:0 1px 0 #fff;box-shadow:inset 0 1px 1px #fff,0 2px 6px rgba(0,0,0,0.4)}#ds-wrapper #ds-reset .ds-dialog-inner .ds-unread-list{max-height:300px;overflow-y:auto}#ds-wrapper #ds-reset .ds-control-group{margin:18px 0;position:relative;padding-right:80px;max-width:166px}#ds-wrapper #ds-reset .ds-control-group input{color:#777;width:100%;font-size:13px;border:1px solid #ccc;padding:4px 80px 6px 6px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.1)}#ds-wrapper #ds-reset .ds-control-group input:focus{border-color:#08b5fb}#ds-wrapper #ds-reset .ds-control-group label{font-size:13px;color:#ccc;letter-spacing:1px;position:absolute;right:0;top:8px}#ds-wrapper #ds-reset tr{height:45px}#ds-wrapper #ds-reset button{cursor:pointer;color:#555;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), color-stop(25%, #fff), to(#e6e6e6));background-image:-webkit-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #fff, #fff 25%, #e6e6e6);background-image:-ms-linear-gradient(#fff, #fff 25%, #e6e6e6);background-image:linear-gradient(#fff, #fff 25%, #e6e6e6);-webkit-transition:all .15s linear;-moz-transition:all .15s linear;transition:all .15s linear;border:1px solid #aaa;display:inline-block;font-size:15px;height:30px;width:100px;padding:0}#ds-wrapper #ds-reset button:hover{background-position:0 -15px;color:#333}#ds-wrapper #ds-reset button:active{top:0;-webkit-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)}#ds-wrapper #ds-reset h2{display:block;font-weight:normal;font-size:16px;margin:0 0 15px 0;color:#555}#ds-wrapper #ds-reset .ds-dialog-body{padding:30px 30px 25px;position:relative;overflow:hidden}#ds-wrapper #ds-reset .ds-icons-32{height:32px;margin-bottom:20px;overflow:hidden}#ds-wrapper #ds-reset .ds-icons-32 a{float:left;margin:0 5px 0 0}#ds-wrapper #ds-reset ul li{margin:10px 0}#ds-wrapper #ds-reset .ds-service-list{width:45%;float:left}#ds-wrapper #ds-reset .ds-service-list .ds-more-services{display:none}#ds-wrapper #ds-reset .ds-icon-ok{background-position:0 -203px;width:12px;height:12px}#ds-wrapper #ds-reset .ds-quote{margin:10px 0;padding:6px 10px;background:#f8f8f8;line-height:1.5em;font-size:12px;overflow-y:auto;max-height:180px}#ds-wrapper #ds-reset .ds-textarea-wrapper{border:1px solid #ccc;padding:0 20px 0 0;position:relative;margin:12px 0}#ds-wrapper #ds-reset .ds-textarea-wrapper textarea{width:100%;height:54px;margin:0;resize:none;padding:6px 10px;overflow:auto}#ds-wrapper #ds-reset .ds-textarea-wrapper .ds-hidden-text{top:0;left:10px;right:10px;position:absolute;visibility:hidden;word-wrap:break-word}#ds-wrapper #ds-reset .ds-textarea-wrapper textarea,#ds-wrapper #ds-reset .ds-textarea-wrapper .ds-hidden-text{font-size:13px;line-height:1.5em}#ds-wrapper #ds-reset .ds-actions{position:relative;height:30px}#ds-wrapper #ds-reset .ds-actions button{display:block;position:absolute;top:0;right:0}#ds-wrapper #ds-reset .ds-dialog-close{position:absolute;bottom:13px;right:11px;display:block;width:13px;height:13px;overflow:hidden;background:transparent url(\"../images/Sprites_Embed.png\") 0 -163px no-repeat;_background-image:url(\"../images/sprites.gif\")}#ds-wrapper #ds-reset .ds-dialog-close:hover{background-position:0 -176px}#ds-wrapper #ds-reset .ds-logo{display:inline-block;width:64px;height:21px;margin-right:10px;background:url(\"../images/logo.png\") 0 0 no-repeat}#ds-wrapper #ds-reset .ds-dialog-footer{clear:both;border-top:1px dotted #ccc;padding:10px 15px 6px}#ds-wrapper #ds-reset .ds-dialog-footer span{color:#999;position:relative;top:-6px}#ds-wrapper #ds-reset .ds-connect{display:none}#ds-wrapper #ds-reset .ds-unread-list li{position:relative;margin:0;padding:8px 0;border-top:1px solid #eee;line-height:1.5em;color:#777}#ds-wrapper #ds-reset .ds-unread-list li a{color:#d32}#ds-wrapper #ds-reset .ds-unread-list li a:hover{color:#e45c4e}#ds-wrapper #ds-reset .ds-unread-list li a[rel~=\"author\"]{color:#777}#ds-wrapper #ds-reset .ds-unread-list li .ds-delete{display:none;position:absolute;right:0;bottom:10px;text-indent:-9999px;width:14px;height:14px;overflow:hidden;background:transparent url(\"../images/delete.gif\") no-repeat scroll 0 -14px}#ds-wrapper #ds-reset .ds-unread-list li:hover .ds-delete{display:block}#ds-wrapper #ds-reset.ds-touch .ds-unread-list li .ds-delete{display:block}#ds-wrapper.ds-no-transition #ds-reset button{background:url(\"../images/bg_sprites.png\") repeat-x !important}#ds-wrapper.ds-no-transition #ds-reset button:hover{background-position:0 -30px !important}#ds-wrapper.ds-no-transition #ds-reset.ds-dialog{background-image:url(\"../images/black.png\")}#ds-wrapper.ds-ie6 #ds-reset{margin-top:0}#ds-wrapper.ds-ie6 #ds-reset .ds-dialog-footer span{top:-3px}#ds-notify{position:fixed;*position:absolute;z-index:9999;max-width:144px;_width:130px;display:block;float:none;padding:8px 12px;background-color:#fff;-webkit-border-radius:5px;border-radius:5px;box-shadow:0 1px 1px rgba(0,0,0,0.25);border:1px solid #aaa}#ds-notify #ds-reset{line-height:14px}#ds-notify #ds-reset a.ds-logo{width:18px;height:14px;background:transparent url(\"../images/Sprites_Embed.png\") 0 -220px no-repeat;_background-image:url(\"../images/sprites.gif\");position:absolute;display:block;top:8px;left:12px}#ds-notify #ds-reset span.ds-unread-count{font-weight:bold;color:#e32}#ds-notify #ds-reset ul.ds-notify-unread{line-height:150%;display:inline-block;margin:0 0 0 22px;padding:0}#ds-notify #ds-reset ul.ds-notify-unread li a{color:#d32;text-decoration:none}#ds-recent-comments li.ds-comment{list-style-type:none;position:relative !important;margin:0 !important;padding:6px 0 !important;_zoom:1;border-top:1px solid #dcdcdc;word-wrap:break-word;font-size:13px}#ds-recent-comments li.ds-comment a{display:inline}#ds-recent-comments li.ds-comment div{padding:0;margin:0}#ds-recent-comments li.ds-comment .ds-avatar{position:absolute !important;top:6px !important;left:0 !important}#ds-recent-comments li.ds-comment .ds-avatar a{display:block}#ds-recent-comments li.ds-comment .ds-meta{*margin-left:-15px;_margin-left:0}#ds-recent-comments li.ds-comment .ds-time{font-size:10px;color:#999;margin-left:5px}#ds-recent-comments li.ds-comment .ds-thread-title{margin:0 0 4px 0;line-height:13px;font-size:12px;color:#777}#ds-recent-comments li.ds-comment .ds-thread-title a{font-size:12px}#ds-recent-comments li.ds-comment .ds-excerpt{line-height:18px}#ds-recent-comments li.ds-comment.ds-show-avatars{padding-left:38px !important}#ds-recent-visitors .ds-avatar{display:inline;padding:0 !important;margin:4px !important}#ds-login .ds-icons-32 a{float:left;margin:0 5px 0 0}#ds-share #ds-reset.ds-share-aside-left ul,#ds-share #ds-reset.ds-share-aside-right ul,#ds-share #ds-reset.ds-share-inline ul{list-style:none;margin:0;padding:0;*zoom:1}#ds-share #ds-reset.ds-share-aside-left ul:after,#ds-share #ds-reset.ds-share-aside-right ul:after,#ds-share #ds-reset.ds-share-inline ul:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}#ds-share #ds-reset.ds-share-aside-left ul li,#ds-share #ds-reset.ds-share-aside-right ul li,#ds-share #ds-reset.ds-share-inline ul li{list-style:none;float:left;font-size:14px;padding:7px 0}#ds-share #ds-reset.ds-share-inline{position:relative}#ds-share #ds-reset.ds-share-inline ul li{margin-left:8px}#ds-share #ds-reset.ds-share-inline ul li:first-child{margin-left:0}#ds-share #ds-reset.ds-share-aside-left,#ds-share #ds-reset.ds-share-aside-right{position:fixed;top:50%;z-index:1000;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;transition:all .2s linear}#ds-share #ds-reset.ds-share-aside-left{left:0;-webkit-transform:translate(-100%, -50%);-ms-transform:translate(-100%, -50%);-o-transform:translate(-100%, -50%);transform:translate(-100%, -50%)}#ds-share #ds-reset.ds-share-aside-right{right:0;-webkit-transform:translate(100%, -50%);-ms-transform:translate(100%, -50%);-o-transform:translate(100%, -50%);transform:translate(100%, -50%)}#ds-share #ds-reset .ds-share-aside-toggle{width:28px;padding:23px 2px;background:#e94c4c;color:#fff;position:absolute;top:0;text-align:center;font-size:16px;font-weight:bolder;cursor:pointer}#ds-share #ds-reset.ds-share-aside-left .ds-share-aside-toggle{right:-32px;border-top-right-radius:3px;border-bottom-right-radius:3px}#ds-share #ds-reset.ds-share-aside-left .ds-share-icons{border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}#ds-share #ds-reset.ds-share-aside-right .ds-share-aside-toggle{left:-32px;border-top-left-radius:3px;border-bottom-left-radius:3px}#ds-share #ds-reset.ds-share-aside-right .ds-share-icons{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#ds-share #ds-reset.slide-to-left{-webkit-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);transform:translate(0, -50%)}#ds-share #ds-reset.slide-to-right{-webkit-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);transform:translate(0, -50%)}#ds-share #ds-reset .ds-share-icons-32 .ds-weibo,#ds-share #ds-reset .ds-share-icons-32 .ds-sohu,#ds-share #ds-reset .ds-share-icons-32 .ds-renren,#ds-share #ds-reset .ds-share-icons-32 .ds-netease,#ds-share #ds-reset .ds-share-icons-32 .ds-qqt,#ds-share #ds-reset .ds-share-icons-32 .ds-kaixin,#ds-share #ds-reset .ds-share-icons-32 .ds-douban,#ds-share #ds-reset .ds-share-icons-32 .ds-msn,#ds-share #ds-reset .ds-share-icons-32 .ds-qzone,#ds-share #ds-reset .ds-share-icons-32 .ds-duoshuo,#ds-share #ds-reset .ds-share-icons-32 .ds-360,#ds-share #ds-reset .ds-share-icons-32 .ds-alipay,#ds-share #ds-reset .ds-share-icons-32 .ds-qq,#ds-share #ds-reset .ds-share-icons-32 .ds-baidu,#ds-share #ds-reset .ds-share-icons-32 .ds-taobao,#ds-share #ds-reset .ds-share-icons-32 .ds-google,#ds-share #ds-reset .ds-share-icons-32 .ds-more,#ds-share #ds-reset .ds-share-icons-32 .ds-wechat,#ds-share #ds-reset .ds-share-icons-32 .ds-diandian,#ds-share #ds-reset .ds-share-icons-32 .ds-huaban,#ds-share #ds-reset .ds-share-icons-32 .ds-duitang,#ds-share #ds-reset .ds-share-icons-32 .ds-youdao,#ds-share #ds-reset .ds-share-icons-32 .ds-pengyou,#ds-share #ds-reset .ds-share-icons-32 .ds-facebook,#ds-share #ds-reset .ds-share-icons-32 .ds-twitter,#ds-share #ds-reset .ds-share-icons-32 .ds-linkedin,#ds-share #ds-reset .ds-share-icons-32 .ds-meilishuo,#ds-share #ds-reset .ds-share-icons-32 .ds-mogujie{height:32px;width:32px;text-decoration:none;color:#999;display:block;overflow:hidden;background-image:url(\"../images/service-icons-color-32.png\");background-repeat:no-repeat;_background-image:url(\"../images/service-icons-color-32.gif\")}#ds-share #ds-reset .ds-share-icons-32 .ds-weibo{background-position:0 0}#ds-share #ds-reset .ds-share-icons-32 .ds-sohu{background-position:0 -32px}#ds-share #ds-reset .ds-share-icons-32 .ds-renren{background-position:0 -64px}#ds-share #ds-reset .ds-share-icons-32 .ds-netease{background-position:0 -96px}#ds-share #ds-reset .ds-share-icons-32 .ds-qqt{background-position:0 -128px}#ds-share #ds-reset .ds-share-icons-32 .ds-kaixin{background-position:0 -160px}#ds-share #ds-reset .ds-share-icons-32 .ds-douban{background-position:0 -192px}#ds-share #ds-reset .ds-share-icons-32 .ds-msn{background-position:0 -224px}#ds-share #ds-reset .ds-share-icons-32 .ds-qzone{background-position:0 -256px}#ds-share #ds-reset .ds-share-icons-32 .ds-duoshuo{background-position:0 -288px}#ds-share #ds-reset .ds-share-icons-32 .ds-360{background-position:0 -320px}#ds-share #ds-reset .ds-share-icons-32 .ds-alipay{background-position:0 -352px}#ds-share #ds-reset .ds-share-icons-32 .ds-qq{background-position:0 -384px}#ds-share #ds-reset .ds-share-icons-32 .ds-baidu{background-position:0 -416px}#ds-share #ds-reset .ds-share-icons-32 .ds-taobao{background-position:0 -448px}#ds-share #ds-reset .ds-share-icons-32 .ds-google{background-position:0 -480px}#ds-share #ds-reset .ds-share-icons-32 .ds-more{background-position:0 -512px}#ds-share #ds-reset .ds-share-icons-32 .ds-wechat{background-position:0 -544px}#ds-share #ds-reset .ds-share-icons-32 .ds-diandian{background-position:0 -576px}#ds-share #ds-reset .ds-share-icons-32 .ds-huaban{background-position:0 -608px}#ds-share #ds-reset .ds-share-icons-32 .ds-duitang{background-position:0 -640px}#ds-share #ds-reset .ds-share-icons-32 .ds-youdao{background-position:0 -672px}#ds-share #ds-reset .ds-share-icons-32 .ds-pengyou{background-position:0 -704px}#ds-share #ds-reset .ds-share-icons-32 .ds-facebook{background-position:0 -736px}#ds-share #ds-reset .ds-share-icons-32 .ds-twitter{background-position:0 -768px}#ds-share #ds-reset .ds-share-icons-32 .ds-linkedin{background-position:0 -800px}#ds-share #ds-reset .ds-share-icons-32 .ds-meilishuo{background-position:0 -832px}#ds-share #ds-reset .ds-share-icons-32 .ds-mogujie{background-position:0 -864px}#ds-share #ds-reset .ds-share-icons-32 .flat{background-image:url(\"../images/service-icons-color-flat-32.png\");_background-image:url(\"../images/service-icons-color-flat-32.gif\")}#ds-share #ds-reset .ds-share-icons-16 .ds-weibo,#ds-share #ds-reset .ds-share-icons-16 .ds-sohu,#ds-share #ds-reset .ds-share-icons-16 .ds-renren,#ds-share #ds-reset .ds-share-icons-16 .ds-netease,#ds-share #ds-reset .ds-share-icons-16 .ds-qqt,#ds-share #ds-reset .ds-share-icons-16 .ds-kaixin,#ds-share #ds-reset .ds-share-icons-16 .ds-douban,#ds-share #ds-reset .ds-share-icons-16 .ds-msn,#ds-share #ds-reset .ds-share-icons-16 .ds-qzone,#ds-share #ds-reset .ds-share-icons-16 .ds-duoshuo,#ds-share #ds-reset .ds-share-icons-16 .ds-360,#ds-share #ds-reset .ds-share-icons-16 .ds-alipay,#ds-share #ds-reset .ds-share-icons-16 .ds-qq,#ds-share #ds-reset .ds-share-icons-16 .ds-baidu,#ds-share #ds-reset .ds-share-icons-16 .ds-taobao,#ds-share #ds-reset .ds-share-icons-16 .ds-google,#ds-share #ds-reset .ds-share-icons-16 .ds-more,#ds-share #ds-reset .ds-share-icons-16 .ds-wechat,#ds-share #ds-reset .ds-share-icons-16 .ds-diandian,#ds-share #ds-reset .ds-share-icons-16 .ds-huaban,#ds-share #ds-reset .ds-share-icons-16 .ds-duitang,#ds-share #ds-reset .ds-share-icons-16 .ds-youdao,#ds-share #ds-reset .ds-share-icons-16 .ds-pengyou,#ds-share #ds-reset .ds-share-icons-16 .ds-facebook,#ds-share #ds-reset .ds-share-icons-16 .ds-twitter,#ds-share #ds-reset .ds-share-icons-16 .ds-linkedin,#ds-share #ds-reset .ds-share-icons-16 .ds-meilishuo,#ds-share #ds-reset .ds-share-icons-16 .ds-mogujie{line-height:16px;padding-left:20px;text-decoration:none;color:#999;display:block;overflow:hidden;background-image:url(\"../images/service-icons-color.png?v=2\");background-repeat:no-repeat;_background-image:url(\"../images/service-icons-color.gif?v=2\")}#ds-share #ds-reset .ds-share-icons-16 .ds-weibo{background-position:0 0}#ds-share #ds-reset .ds-share-icons-16 .ds-sohu{background-position:0 -16px}#ds-share #ds-reset .ds-share-icons-16 .ds-renren{background-position:0 -32px}#ds-share #ds-reset .ds-share-icons-16 .ds-netease{background-position:0 -48px}#ds-share #ds-reset .ds-share-icons-16 .ds-qqt{background-position:0 -64px}#ds-share #ds-reset .ds-share-icons-16 .ds-kaixin{background-position:0 -80px}#ds-share #ds-reset .ds-share-icons-16 .ds-douban{background-position:0 -96px}#ds-share #ds-reset .ds-share-icons-16 .ds-msn{background-position:0 -112px}#ds-share #ds-reset .ds-share-icons-16 .ds-qzone{background-position:0 -128px}#ds-share #ds-reset .ds-share-icons-16 .ds-duoshuo{background-position:0 -144px}#ds-share #ds-reset .ds-share-icons-16 .ds-360{background-position:0 -160px}#ds-share #ds-reset .ds-share-icons-16 .ds-alipay{background-position:0 -176px}#ds-share #ds-reset .ds-share-icons-16 .ds-qq{background-position:0 -192px}#ds-share #ds-reset .ds-share-icons-16 .ds-baidu{background-position:0 -208px}#ds-share #ds-reset .ds-share-icons-16 .ds-taobao{background-position:0 -224px}#ds-share #ds-reset .ds-share-icons-16 .ds-google{background-position:0 -240px}#ds-share #ds-reset .ds-share-icons-16 .ds-more{background-position:0 -256px}#ds-share #ds-reset .ds-share-icons-16 .ds-wechat{background-position:0 -272px}#ds-share #ds-reset .ds-share-icons-16 .ds-diandian{background-position:0 -288px}#ds-share #ds-reset .ds-share-icons-16 .ds-huaban{background-position:0 -304px}#ds-share #ds-reset .ds-share-icons-16 .ds-duitang{background-position:0 -320px}#ds-share #ds-reset .ds-share-icons-16 .ds-youdao{background-position:0 -336px}#ds-share #ds-reset .ds-share-icons-16 .ds-pengyou{background-position:0 -352px}#ds-share #ds-reset .ds-share-icons-16 .ds-facebook{background-position:0 -368px}#ds-share #ds-reset .ds-share-icons-16 .ds-twitter{background-position:0 -384px}#ds-share #ds-reset .ds-share-icons-16 .ds-linkedin{background-position:0 -400px}#ds-share #ds-reset .ds-share-icons-16 .ds-meilishuo{background-position:0 -416px}#ds-share #ds-reset .ds-share-icons-16 .ds-mogujie{background-position:0 -432px}#ds-share #ds-reset .ds-share-icons-16 .flat{background-image:url(\"../images/service-icons-color-flat.png\");_background-image:url(\"../images/service-icons-color-flat.gif\")}#ds-share #ds-reset .ds-share-icons{border:1px solid #ccc;background:#fff;border-radius:3px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner{width:208px;padding:10px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul{margin:0;padding:0}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li{padding-left:8px;margin-left:0;width:92px;font-size:12px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li:hover{border-radius:3px;background:#eee}#ds-share #ds-reset .ds-share-icons .ds-share-icons-inner ul li:nth-child(even){margin-left:8px}#ds-share #ds-reset .ds-share-icons .ds-share-icons-footer{text-align:right;line-height:30px;font-size:12px;color:#ccc;background-color:#eee;padding-right:10px}#ds-share #ds-reset .ds-share-icons-more{top:30px;left:0;position:absolute;z-index:1000}#ds-share.ds-no-transition #ds-reset.ds-share-aside-left{left:-229px;transform:none}#ds-share.ds-no-transition #ds-reset.ds-share-aside-right{right:-229px;transform:none}#ds-share .ds-share-aside-left,#ds-share .ds-share-aside-right{width:230px;_position:absolute;_bottom:auto;_top:expression(eval(document.documentElement.scrollTop+200))}#ds-share .ds-share-aside-left{_left:expression(eval(document.documentElement.scrollLeft-230))}#ds-share .ds-share-aside-right{_right:auto;_left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0 - 230))}#ds-related-reads .ds-reads-expand{margin:1rem 0 0}#ds-related-reads .ds-reads-expand h2,#ds-related-reads .ds-reads-expand .ds-header{display:inline-block}#ds-related-reads .ds-reads-expand .ds-header{border-left:6px solid #f94a47;padding-left:9px;font-size:18px;line-height:1.5;color:#999}#ds-related-reads .ds-reads-expand section{margin-top:15px}#ds-related-reads .ds-reads-expand .ds-reads-item{display:block;-webkit-user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);margin-bottom:16.5px}#ds-related-reads .ds-reads-expand .ds-reads-item:last-child{margin-bottom:0}#ds-related-reads .ds-reads-expand .ds-reads-item:after{content:\"\";display:table;clear:both}#ds-related-reads .ds-reads-expand h2,#ds-related-reads .ds-reads-expand .ds-reads-title{font-size:18px;font-weight:bold;color:#333;line-height:1.125}#ds-related-reads .ds-reads-expand .ds-reads-item:visited h2,#ds-related-reads .ds-reads-expand .ds-reads-item:visited .ds-reads-title{color:#999}#ds-related-reads .ds-reads-expand .ds-reads-pics{margin-top:12px}#ds-related-reads .ds-reads-expand ul:after{content:\"\";display:table;clear:both}#ds-related-reads .ds-reads-expand li{float:left;box-sizing:border-box;width:33.3%;position:relative;overflow:hidden}#ds-related-reads .ds-reads-expand li:first-child{border-right:3px solid transparent}#ds-related-reads .ds-reads-expand li:last-child{border-left:3px solid transparent}#ds-related-reads .ds-reads-expand li:nth-child(2){border-right:1.5px solid transparent;border-left:1.5px solid transparent}#ds-related-reads .ds-reads-expand .ds-reads-pic-wrap{position:absolute;top:0;left:0;bottom:0;right:0;background-position:center center;background-size:cover;background-repeat:none}#ds-related-reads .ds-reads-expand .ds-reads-dumb{width:100%;margin-top:65.26%}#ds-related-reads .ds-reads-expand .ds-reads-info{margin-top:12px}#ds-related-reads .ds-reads-expand .ds-reads-info span{vertical-align:middle;font-size:12px;color:#999;display:inline-block;line-height:18px;height:18px}#ds-related-reads .ds-reads-expand .ds-reads-info span.ds-reads-app-special{width:7em;background:#f94a47;color:#fff;text-align:center;border-radius:3px;margin-right:3px}#ds-related-reads .ds-reads-expand .ds-reads-info span.ds-reads-from{margin-right:9px}#ds-related-reads .ds-reads-expand .ds-reads-desc{float:left;width:66.6%}#ds-related-reads .ds-reads-expand .ds-reads-desc .ds-reads-title{display:-webkit-box;display:box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;box-orient:vertical;line-height:1.125em;-webkit-line-clamp:2}#ds-related-reads .ds-reads-expand .ds-reads-desc.ds-reads-only{float:none;width:100%}#ds-related-reads .ds-reads-expand .ds-reads-pic-right{float:left;width:33.3%;position:relative;border-left:3px solid transparent;box-sizing:border-box;overflow:hidden}#ds-related-reads .ds-reads-expand .ds-reads-pic-right .ds-reads-vid-info{position:absolute;height:16px;font-size:10px;bottom:0;right:0;padding:4px 8px 4px 30px;z-index:1;color:#fff;background:rgba(0,0,0,0.5) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAkCAYAAADPRbkKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZVJREFUWMNj+P//P8NQxgyjHhhEHmAF4lIgvgrEP//TB3wH4tNAnAjEjJR4gA2Id/8fWDCfHE/AGDX/BwcII9LhoBjbAsR+MIFbSIZMBWJuOqVhISDehGT3VgLqOYB4DpL6jzCJP0iCSnTOiM5Idl/Co04OiE+hRxlMEhnI0dkDNkR4wAmIX2FLc4PBA6JA/AEpIyPLgTJ1CVoK+TvYPADC0kDsAsQsSGI8QLwKzW0vgNh3MHoAHatD6yNkcAzqUf7B7gF/UOmC5qZpQMwOlR+0HmAG4hYg/odWUyegqRuUHmjAkmQeALERFrWDzgOGWEpHULNGGId6/sFcD4CKyDZocmIYih64RIT6UQ+MemDUA0PEA2pAPBOIU9F6akPGA1uRxFdCG3dDygPT0dx1BRorQ8YD7Fg8Aeo3xA61TJwEbdT9H6w9MmJKIWMgfojPA0OhUy8CxHtweeA22rAK1yAdVgE18jqR+gxvh+rAljcQLwRix2EztAgb3C0D4mtA/ItOjv4BxGegJQ1Fg7uj8wOjHiATAwCwU/nx3nM/GAAAAABJRU5ErkJggg==) no-repeat;background-position:8px center;background-size:16px;line-height:1.5}"
  },
  {
    "path": "target/mongo/style/eu/index/expert.css",
    "content": ".searchexpert{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: relative; cursor: pointer;}\n.searchexpert input{ width: 190px; height: 35px; border: 0px transparent; padding: 0px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n\n\n.categorySearch { margin-top: 20px; border: 1px solid #19840E; padding: 5px; width: 220px;}\n.categoryHead { border-bottom: solid 1px #89CDAC;}\n.categoryHead span b{ font-size: 18px;}\ntable.categoryList tr{ height: 30px; overflow: hidden;}\ntable.categoryList tr td{ vertical-align: middle;}\ntable.categoryList span.categoryicon{ display: block; width: 16px; height:16px; background: url(\"../images/index/category_icon.png\") no-repeat;}\ntable.categoryList a { cursor: pointer;}\n\n\n\n.expertlist{ width:680px;}\n.expertlist ul li .pic{  float:left; display:block; overflow:hidden;}\n.expertlist li .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em; }\n.expertlist li a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n.expertlist ul li p{ font-size:12px; color:#999;}\n.expertlist ul li{ width:670px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.expertlist img { width: 150px !important; height: 150px !important; float: left; border-radius: 4px; margin: 1px 10px 5px 0;}\n.expertlist .expertname { font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\"; font-size:16px;}\n.expertlist .expertcontent { font-size: 13px; color: #888;}\n\n.expertlist table{}\n.expertlist table tr{ height: 32px; line-height: 32px;}\n.expertlist table a{ line-height: 32px;}\n\n\n.articletitle{ width: 100%; border-bottom: dashed #D5D5D5 1px; padding 10px; display: block; text-align: center;}\n.articletitle .title{ font-size: 28px; line-height: 1.5em; color: #333; font-weight: bold;}\n.articletitle .time{ font-size: 18px; line-height: 2em; color: #333;}\n\n.news_model ul li{ width: 256px; float: left; padding: 4px 0; border-bottom: dashed #D5D5D5 1px; }\n.news_model ul li a { font-size: 12px; color: #333; text-decoration: none; float: left;}\n.news_model ul li .time { float: right; width: 50px; }"
  },
  {
    "path": "target/mongo/style/eu/index/information.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.searchdate{ position: relative; margin-bottom: 10px;}\n.searchdate input{ width: 150px; outline: none;}\n\n\n.informationlist{ width:630px;}\n.informationlist li .time{ float: right; width: 150px; font-size: 14px; line-height: 2em; color: #eb302f; margin-top: 4px; }\n.informationlist li a{ font-size: 16px;line-height: 2em;color: #333;text-decoration: none;float: left;}\n.informationlist ul li{ width:620px;float:left; padding: 10px 0; border-bottom: dashed #D5D5D5 1px;}\n\n"
  },
  {
    "path": "target/mongo/style/eu/index/knowledgedata.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n.knowledgecontent{ width: 960px; height: auto; padding: 20px 0; margin: 0 auto; overflow: hidden;}\n.knowledgecontent .widget{ width: 960px;}\n\n.selectknowledge{ width: 960px; height: 41px; background: url(\"../images/index/basis.png\") no-repeat; position:relative}\n.selectknowledge ul{ width: 960px; height: 41px; display: block; list-style: none; padding: 0px;}\n.selectknowledge ul li{ float: left; width: 145px; height: 41px; display: block; position: relative;  margin-top: -5px;  cursor: pointer;}\n.selectknowledge .itemlabel{ width: 145px; height: 41px; z-index: -999; background: url(\"../images/index/label_s.png\") no-repeat; position: relative;}\n.selectknowledge .selectedlabel1{ background: url(\"../images/index/label1.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel2{ background: url(\"../images/index/label2.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel3{ background: url(\"../images/index/label3.png\") no-repeat; z-index: 100;}\n.selectknowledge .selectedlabel4{ background: url(\"../images/index/label4.png\") no-repeat; z-index: 100;}\n.selectknowledge .searchknowledge{ width: 240px; height: 35px; background: url(\"../images/index/sss.png\") no-repeat; position: absolute; top: -3px; right: 0px; cursor: pointer;}\n.selectknowledge .searchknowledge input{ width: 210px; height: 35px; border: 0px transparent; padding: 3px 10px; font-size: 16px; background: transparent; outline: none; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\";}\n\n\n.knowledgelist ul li{ float: left; width:100%; padding:10px 0; border-bottom: dashed #D5D5D5 1px;}\n.knowledge_title{ color:  #259; font-size:14px; display:block; width:100%;}\n.knowledge_expandable{ margin-top:5px; font-size:13px; line-height: 1.5;color:#999;cursor: pointer;}\n.knowledge_expandable img{ width:98px !important; height:73px !important; float:left; border-radius: 4px;margin: 1px 10px 5px 0; position: inherit !important;}\n.knowledge_expandable .toggle-expand{display: inline-block; padding: 0 3px; color: #0c5897; border-radius: 2px; font-size: .9em;}\n.knowledge_collapse{ color: #fff; float:right; z-index: 1; margin: 0; background-color: #81baeb; padding: 1px 6px; border-radius: 3px; cursor: pointer;opacity: 0.9;border: 0;}\n.knowledge_collapse i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon2.png) !important;background-repeat: no-repeat;margin-right: 5px; background-position: -70px -38px; width: 8px; height: 9px;}\n.knowledge_content{color: #333; margin: 10px 0px; line-height: 20px;}\n.knowledge_actions{ margin-top:3px; display:block;}\n.knowledge_actions a{ margin: 0 5px;}\n.knowledge_actions .highlight{ color: red; padding: 0 2px;}\n.knowledge_actions a{text-shadow: 0 1px 0 #fff;display: inline;text-decoration: none;color: #777;}\n\n\n.knowledgecategory { position:relative; width:950px; text-align:center;overflow: hidden; border: 2px dashed #89CDAC; margin: 0 auto;}\n.knowledgecategory ul { float:left; left:50%; padding: 8px 0px; position: relative; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li { float: left; position:relative; right:50%; text-align: center; list-style-type: none; position: relative; padding: 0px 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li a{ border: 1px solid #ccc; padding: 5px 10px; text-decoration: none; color: #666; font-family: arial, verdana, tahoma; font-size: 11px; display: inline-block; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.knowledgecategory li a:hover{ background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n.knowledgecategory li a.selected{ background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n\n.knowledgecategory div.separate { clear: both; border: 1px dashed #89CDAC;}\n\n.knowledgecategory div.categoryname { position: absolute; margin-top: 10px; left: 10px;color: #666;font-family: '微软雅黑', '宋体', 'Times New Roman';}\n\n\n.tree ul { padding-top: 20px; position: relative; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n.tree li { float: left; text-align: center; list-style-type: none; position: relative; padding: 20px 5px 0 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n/*We will use ::before and ::after to draw the connectors*/\n.tree li::before, .tree li::after{ content: ''; position: absolute; top: 0; right: 50%; border-top: 1px solid #ccc; width:50%; height: 20px;}\n.tree li::after{ right: auto; left: 50%; border-left: 1px solid #ccc;}\n/*We need to remove left-right connectors from elements without \nany siblings*/\n.tree li:only-child::after, .tree li:only-child::before { display: none;}\n/*Remove space from the top of single children*/\n.tree li:only-child{ padding-top: 0;}\n/*Remove left connector from first child and \nright connector from last child*/\n.tree li:first-child::before, .tree li:last-child::after{ border: 0 none;}\n/*Adding back the vertical connector to the last nodes*/\n.tree li:last-child::before{ border-right: 1px solid #ccc; border-radius: 0 5px 0 0; -webkit-border-radius: 0 5px 0 0; -moz-border-radius: 0 5px 0 0;}\n.tree li:first-child::after{ border-radius: 5px 0 0 0; -webkit-border-radius: 5px 0 0 0; -moz-border-radius: 5px 0 0 0;}\n/*Time to add downward connectors from parents*/\n.tree ul ul::before{ content: ''; position: absolute; top: 0; left: 50%; border-left: 1px solid #ccc; width: 0; height: 20px;}\n.tree li a{ border: 1px solid #ccc; padding: 5px 10px; text-decoration: none; color: #666; font-family: arial, verdana, tahoma; font-size: 11px; display: inline-block; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s;}\n/*Time for some hover effects*/\n/*We will apply the hover effect the the lineage of the element also*/\n.tree li a:hover, .tree li a:hover+ul li a { background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n.tree li a.selectedchild { background: #c8e4f8; color: #000; border: 1px solid #94a0b4;}\n/*Connector styles on hover*/\n.tree li a:hover+ul li::after, \n.tree li a:hover+ul li::before, \n.tree li a:hover+ul::before, \n.tree li a:hover+ul ul::before{ border-color:  #94a0b4;}\n"
  },
  {
    "path": "target/mongo/style/eu/index/login.css",
    "content": ".login{ margin: 0px; padding: 100px 0 0 0; background: #F8FFFD;}\n\n.loginform{ margin: 0px auto; width:326px; height: 292px; background:url(\"../images/index/Group.png\") no-repeat;}\n.loginform label{ font-family: \"΢ź\", \"\", \"Times New Roman\"; font-size: 13px; font-weight: 600;}\n.loginform input{ margin-top: 5px; width: 250px; height: auto; font-size: 13px; padding: 2px 5px; vertical-align: middle; line-height: 20px;}\n\n.username{ display: block; margin: 0px auto; width: 260px; padding-top: 85px;}\n.password{ display: block; margin: 0px auto; width: 260px; margin-top: 15px;}\n.button{ display: block; margin-top: 20px;}\n.forgetpassword{ color: #7c7c7c; text-decoration: none; float: right; font-size: 13px; font-weight: 400;}\n\n.Login_Button{width: 78px; height: 43px; background:url(\"../images/index/login_b.png\"); cursor: pointer; margin-left: 20px; float: left; }\n.Login_Button:hover{background:url(\"../images/index/login_bs.png\");}\n.Register_Button{width: 173px; height: 43px; background:url(\"../images/index/register_e.png\"); cursor: pointer; margin-left: 25px; float: left;}\n.Register_Button:hover{background:url(\"../images/index/register_es.png\");}"
  },
  {
    "path": "target/mongo/style/eu/index/performance.css",
    "content": ".searchbox{ position: relative;}\n.searchbox input{ padding: 7px 50px 7px 10px; width: 100%; color: #49525c; font-size: 14px; line-height: 17px; background-color: #e1eaf2; border: 1px solid #045bb2; border-radius: 4px; box-shadow: inset 0 1px 3px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.1); outline: 0; box-sizing: border-box;}\n.searchbox button{ position: absolute; top: 0; right: 0; width: 40px; height: 100%; background: #0e78e7; background: -webkit-linear-gradient(top,#0e7bef,#0d73da); background: linear-gradient(to bottom,#0e7bef,#0d73da); border: 1px solid #045bb2; border-top-right-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,.05),inset 0 1px 1px rgba(255,255,255,.15); box-sizing: border-box; outline: 0; cursor: pointer;}\n.searchbox button i{ background: transparent url(\"../images/littleicon2.png\") no-repeat; }\n.searchbox button .search_icon{ background-position: -82px 0; width: 15px; height: 15px; position:absolute; top: 8px; left: 10px;}\n\n\n.performancelist{ width:630px; margin: 10px 0px; border-bottom: dashed 1px #CCCCCC; }\n.performancelist ul li .pic{ width: 120px; height: 155px; float: left; display: block; overflow: hidden;}\n.performancelist ul li .pic img{ width: 120px; height: 155px; border: none;}\n.performancelist ul li  .performance_title{ float: left;display: block; width: 164px; margin-left: 10px;}\n.performancelist li { float:left; display:block; margin-left:10px; overflow:hidden; height:16px;width: 320px; margin-right: 10px;}\n.performancelist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.performancelist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.performancelist .loop_big_caj_nav{ width: 380px; margin: 10px 0px;}\n.performancelist .widge_hd p{ margin: 0px;}\n.performancelist .performance_title{ margin-left: 150px; font-size: 16px; line-height: 25px;}\n.performancelist .performance_days{ margin-left: 5px;line-height: 25px;font-size: 16px;color: red;}\n.performancelist ul li .del_btn{ width: 27px; display: block; position: absolute; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\n.performancelist ul li i.del_icon { width: 27px;height: 27px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -12px -168px; position: absolute; left: 0px;}\n\n\n.performancelist2{ width: 660px; height: auto; padding: 10px; }\n.performancelist2 ul{ padding: 10px 0 0 0!important; float: left;}\n.performancelist2 ul li{ width: 200px; height: 190px; margin: 7px 10px; overflow: hidden; float: left; position: relative;}\n.performancelist2 ul li img{ width: 100%; height: 100%;}\n.performancelist2 ul li .del_btn{ width: 27px; display: block; position: absolute; cursor: pointer; padding: 3px 0; text-align: center; border-radius: 4px;  line-height: 25px; font-size: 18px; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8;}\n.performancelist2 ul li i.del_icon { width: 27px;height: 27px; background-image: url(../images/littleicon.png); background-repeat: no-repeat; background-position: -12px -168px; position: absolute; left: 0px;}\n\n.performancelist2 .dateselect a.date { font-size: 12px; margin: 2px; padding: 2px 5px; border: 1px solid #ccc; cursor: pointer; text-decoration: none; color: #777; border-radius: 3px; float: left;}\n.performancelist2 .dateselect a.emptydate { color: red !important; border: 1px solid red !important;}\n.performancelist2 .dateselect a:hover{ background-color: #89CDAC;}\n.performancelist2 .dateselect a.selected{ background-color: #89CDAC;}\n\n.performancedetail ul li{ width: 100%; margin: 3px 0px;}\n.performancedetail ul li span{ display: block;}"
  },
  {
    "path": "target/mongo/style/eu/index/personalquestionlist.css",
    "content": ".personaltabs { width: 100%; outline: 0;}\n.personaltabs .personal_message_head{ margin: 0 auto; padding: 0; width: 350px; border: 1px solid #ABE9F1; border-radius: 10px; box-shadow: 0 1px 4px rgba(0,0,0,.3);}\n.personal_message_container{ outline: 0;}\n\n.personal_message_item { float: left; width: 50%; text-align: center; vertical-align: middle; position: relative; cursor: pointer; background: 0 0; border: 0; outline: 0;}\nbutton.personal_message_item{ padding: 0; line-height: 1.7; border-radius: 10px;}\n.personal_message_item .icon { position: relative; width: 22px; line-height: 40px; margin: 9px; opacity: .6; font-size: 14pt; font-weight: bold; color: #11798C;}\n.personal_message_item.current{ background-color: #40ADAD; box-shadow: 0 1px 3px rgba(0,0,0,.3);}\n.personal_message_item.current span{ color: white;}\n\n.personal_message_border{ height: 3px; width: 100%; position: relative; background: linear-gradient(to right,rgba(250,250,250,.1) 0,rgba(240,240,240,.8) 1%,#ddd 4%,#ddd 96%,rgba(240,240,240,.8) 99%,rgba(250,250,250,.1) 100%); box-shadow: 0 1px 1px rgba(0,0,0,.05);}\n\n.clearfix:before, .clearfix:after { display: table; content: \"\";}\n.clearfix:after { clear: both;}\n\n.personal_message_frame{ width: 100%; position: relative;}"
  },
  {
    "path": "target/mongo/style/eu/index/play.css",
    "content": "@charset \"utf-8\";\n.x-player {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\tbackground: #000000;\n\t-webkit-user-select: none;\n    overflow: hidden;\n}\n.x-player p, .x-player li, .x-player ul, .x-player h1,.x-player button {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n.x-mask {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\topacity: 0.7;\n\tbackground: #000;\n\tz-index: 10;\n}\n.x-trigger {\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n    z-index:50;\n}\n.x-fs-console {\n    zoom:1.5;\n}\n.x-fs-console .x-control-btn .x-playing{\n    background:url(./img/ico_playbtn@2x.png) no-repeat center center;;\n    background-size:contain;\n}\n.x-fs-console .x-control-btn .x-pause{\n    background:url(./img/ico_pausebtn@2x.png) no-repeat center center;;\n    background-size:16px 16px;\n}\n.x-fs-console .x-control-btn .x-zoomout{\n    background:url(./img/ico_zoomout@2x.png) no-repeat center center;;\n    background-size:16px 16px;\n}\n.x-fs-console .x-settings .x-panel li{\n    font-size:14px;\n}\n.x-console {\n    display:none;\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\twidth: 100%;\n}\n.x-showmore a {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 15px;\n\tcolor: #bbbbbb;\n\ttext-decoration: none;\n\tfont-size: 14px;\n\tz-index: 20;\n    line-height: 35px;\n}\n.x-video-poster,.x-video-logo{\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n.x-video-poster img {\n\twidth: 100%;\n\theight: 100%;\n}\n.x-video-logo{\n    display: none;\n}\n.x-icon-exclusive{\n    position:absolute;\n    width:15%;\n    height:7.5%;\n    max-height: 54px;\n    max-width: 196px;\n    right: 3%;\n    top: 4%;\n    background: url(./img/icon-exclusive-min.png) no-repeat center center;\n    background-size: contain;\n}\n.x-video-player {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\tpadding: 0;\n\tmargin: 0;\n}\n.x-video-button {\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 85;\n}\n.x-video-button .x-video-play-ico {\n\twidth: 86px;\n\theight: 86px;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -43px;\n\tmargin-top: -43px;\n\tbackground: url(./img/xplayerv4.png) no-repeat 0 0;\n}\n.x-player .x-btn {\n\tdisplay: inline-block;\n\tpadding: 2px 8px;\n\tmargin-bottom: 0;\n\tfont-size: 12px;\n\tline-height: 20px;\n\ttext-align: center;\n\tvertical-align: middle;\n\tcolor: #333333;\n\tbackground-color: #f5f5f5;\n\tbackground-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n\tbackground-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n\tbackground-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n\tbackground-repeat: repeat-x;\n\tborder-color: #e6e6e6 #e6e6e6 #bfbfbf;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n\tborder: 1px solid #bbbbbb;\n\tborder-bottom-color: #a2a2a2;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\t-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\t-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n\tbox-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);\n}\n.x-player .x-btn-pay {\n\tcolor: #ffffff;\n\tbackground-color: #ff822e;\n\tbackground-image: -moz-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff944d), to(#ff6600));\n\tbackground-image: -webkit-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: -o-linear-gradient(top, #ff944d, #ff6600);\n\tbackground-image: linear-gradient(to bottom, #ff944d, #ff6600);\n\tbackground-repeat: repeat-x;\n\tborder-color: #ff6600 #ff6600 #b34700;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n}\n.x-player .x-btn-major {\n\tcolor: #ffffff;\n    background-color: #2c8ce0;\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47a4f4), color-stop(5%, #2e8ee2), to(#2683d8));\n    background-image: -webkit-linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: -moz-linear-gradient(top, #47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: -o-linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n    background-image: linear-gradient(#47a4f4, #2e8ee2 5%, #2683d8);\n\tbackground-repeat: repeat-x;\n\tborder-color: #ff6600 #ff6600 #b34700;\n\tborder-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n}\n.x-video-info {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tz-index: 20;\n}\n.x-video-info .x-title {\n\tposition: relative;\n\tfont-size: 14px;\n\tcolor: #bbbbbb;\n\tpadding: 0 15px;\n\tz-index: 20;\n    line-height: 35px;\n}\n.x-feedback {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tz-index: 60;\n}\n.x-message {\n\twidth: auto;\n\theight: 35px;\n\tpadding: 0 15px;\n\tposition: relative;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n}\n.x-message-btn {\n\tposition: absolute;\n\tright: 15px;\n\ttop: 0px;\n}\n.x-message-input {\n\tposition: absolute;\n\tright: 65px;\n\ttop: 3px;\n\theight: 25px;\n\tpadding: 0 3px;\n\twidth: 150px;\n}\n.x-dashboard {\n\twidth: 100%;\n\theight: 60px;\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 80;\n}\n.x-progress {\n\twidth: 100%;\n\theight: 20px;\n\tposition: relative;\n}\n.x-progress-track {\n\twidth: 100%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #555555;\n}\n.x-progress-load {\n\twidth: 80%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #909090;\n}\n.x-progress-play {\n\twidth: 30%;\n\theight: 10px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #eb3c10;\n}\n.x-controls {\n\twidth: 100%;\n\theight: 40px;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-moz-box-orient: horizontal;\n\t-webkit-box-orient: horizontal;\n\tbox-orient: horizontal;\n\tbackground: #222222;\n}\n.x-control-btn {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: none;\n\tborder: none;\n}\n.x-control-btn em {\n\tdisplay: none;\n}\n.x-control-btn b {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: block;\n\tbackground: url(./img/xplayerv4.png) no-repeat -85px 0;\n}\n.x-control-btn .x-playing {\n\tbackground-position: -85px 0;\n}\n.x-control-btn .x-pause {\n\tbackground-position: -260px 12px;\n}\n.x-control-btn .x-zoomin {\n\tbackground-position: -142px 11px;\n}\n.x-control-btn .x-zoomout {\n\tbackground-position: -206px 11px;\n}\n.x-play-control {\n\twidth: 70px;\n\theight: 40px;\n}\n.x-time-display {\n\twidth: 100px;\n\tline-height: 40px;\n\tcolor: #555555;\n\tfont-size: 14px;\n\ttext-align: center;\n\tfont-family: Arial, sans-serif\n}\n.x-settings {\n\t-moz-box-flex: 1;\n\t-webkit-box-flex: 1;\n\tbox-flex: 1;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-moz-box-orient: horizontal;\n\t-webkit-box-orient: horizontal;\n\tbox-orient: horizontal;\n\tposition: relative;\n    padding-right:50px;\n     -moz-box-pack:end;\n     -webkit-box-pack:end;\n     -o-box-pack:end;\n     box-pack:end;\n}\n.x-fullscreen {\n\twidth: 50px;\n\theight: 40px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n}\n.x-quality,.x-localization,.x-playshow,.x-playspeed {\n\twidth: 60px;\n\theight: 30px;\n\ttext-align: center;\n\ttext-align: center;\n    padding-top:10px;\n}\n.x-playspeed{\n    display:none;\n   /* margin-right:10px;*/\n}\n.x-quality .x-control-btn,.x-localization .x-control-btn,.x-playshow .x-control-btn,.x-playspeed .x-control-btn{\n\tdisplay: inline-block;\n\twidth: 35px;\n\theight: 20px;\n    padding:0 3px;\n\tbackground: none;\n\tbackground: #626262;\n\t-webkit-border-radius: 3px;\n\t-moz-border-radius: 3px;\n\tborder-radius: 3px;\n\tcolor: #e5e5e5;\n\tfont-size: 12px;\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#7f7f7f), color-stop(0.5, #757575), to(#565656));\n}\n.x-playspeed .x-control-btn{/*width:56px;*/padding:0;}\n.x-fs-console .x-quality .x-control-btn,.x-fs-console .x-localization .x-control-btn,.x-fs-console .x-playshow .x-control-btn ,.x-fs-console .x-playspeed .x-control-btn{\n    font-size:14px;\n}\n.x-progress-seek {\n\twidth: 18px;\n\theight: 24px;\n\tdisplay: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-webkit-box-align: center;\n\t-moz-box-align: center;\n\t-webkit-box-pack: center;\n\t-moz-box-pack: center;\n\tposition: absolute;\n\tleft: 0;\n\ttop: -8px;\n\tline-height: 25px;\n}\n.x-seek-handle {\n\twidth: 16px;\n\theight: 16px;\n\t-webkit-border-radius: 22px;\n\t-moz-border-radius: 22px;\n\tborder-radius: 22px;\n\tborder: 3px solid #eb3c10;\n\tbackground: #ececec;\n}\n.x-settings .x-panel {\n    display:none;\n\twidth: 60px;\n\theight: auto;\n\tposition: absolute;\n\tbottom: 40px;\n}\n.x-settings .x-panel ul {\n\twidth: 100%;\n\theight: 100%;\n\tposition: relative;\n\ttop: -2px;\n\tz-index: 20;\n}\n.x-settings .x-panel li {\n\tcolor: #bbbbbb;\n\tfont-size: 12px;\n\theight: 24px;\n\tlist-style: none;\n\tmargin-bottom: 5px;\n\tline-height: 24px;\n}\n.x-settings .x-panel li:last-child {\n\tmargin: 0;\n}\n.x-settings .x-panel .selected {\n\tbackground: #2ea5e4;\n\tcolor: #222222;\n}\n.x-settings .x-mask {\n\ttop: -4px;\n\tleft: -2px;\n\tpadding: 2px;\n}\n.x-settings .pressed .x-control-btn {\n\tbackground: #06a7e1;\n\tcolor: #ffffff;\n}\n.x-progress-mini {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n}\n.x-progress-track-mini {\n\twidth: 100%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #555555;\n}\n.x-progress-load-mini {\n\twidth: 80%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #909090;\n}\n.x-progress-play-mini {\n\twidth: 30%;\n\theight: 3px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: #eb3c10;\n}\n.x-prompt {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 40;\n}\n.x-prompt-mode {\n\twidth: 80px;\n\theight: 45px;\n\tposition: absolute;\n\tbottom: 44%;\n\tleft: 50%;\n\tmargin-left: -50px;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n\tline-height: 22px;\n\tpadding: 5px 10px;\n\ttext-align: center;\n}\n.x-prompt-forward {\n\tposition: relative;\n\ttext-align: left;\n\tbackground: url(./img/xplayerv4.png) no-repeat 45px -142px;\n\tfont-size: 18px;\n\tz-index: 20;\n}\n.x-prompt-time {\n\tposition: relative;\n\tz-index: 20;\n}\n.x-prompt-current {\n\tline-height: 45px;\n\tfont-size: 18px;\n}\n.x-prompt-back {\n\tposition: relative;\n\ttext-align: right;\n\tbackground: url(./img/xplayerv4.png) no-repeat -91px -142px;\n\tfont-size: 18px;\n\tz-index: 20;\n}\n.x-prompt-status {\n\twidth: 75px;\n\theight: 40px;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -38px;\n\tbottom: 80px;\n\tline-height: 40px;\n\ttext-align: center;\n}\n.x-prompt-txt {\n\tposition: relative;\n\tz-index: 20;\n\tcolor: #bbbbbb;\n\tfont-size: 18px;\n    line-height: 40px;\n}\n.x-tips {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 50px;\n\tz-index: 70;\n}\n.x-tips-txt {\n\tline-height: 35px;\n\tpadding: 0 15px;\n\tcolor: #bbbbbb;\n\tposition: relative;\n\tz-index: 20;\n\tfont-size: 14px;\n}\n.x-tips-txt a {\n\tmargin-left: 5px;\n\tcolor: #06a7e1;\n}\n.x-tips-close {\n\twidth: 35px;\n\theight: 35px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tz-index: 20;\n}\n.x-tips-close a {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: url(./img/xplayerv4.png) no-repeat -23px -86px;\n}\n.x-tips-close em {\n\tdisplay: none;\n}\n.x-pay {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 35px;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0px;\n    z-index:90;\n}\n.x-pay-txt {\n\twidth: auto;\n\theight: 35px;\n\toverflow: hidden;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tline-height: 35px;\n\tpadding-right: 200px;\n\tfont-size: 18px;\n\tcolor: #bbbbbb;\n\tz-index: 20;\n}\n.x-pay-txt h1 {\n\tfont-size: 14px;\n\tpadding: 0 15px;\n    line-height:35px;\n}\n.x-pay-txt .x-vip,.x-pay-panel .x-vip {\n\tfont-style: normal;\n\tcolor: #ff6600;\n}\n.x-pay-tips {\n\tfont-size: 14px;\n\tpadding: 0 15px;\n}\n.x-pay-btn {\n\twidth: 180px;\n\theight: 35px;\n\tline-height: 35px;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tz-index: 20;\n}\n.x-pay-btn .x-btn {\n\tmargin-right: 10px;\n}\n.x-pay-trial {\n\tfont-size: 12px;\n\tcolor: #bbbbbb;\n\tmargin: 0 10px;\n}\n.x-showlist {\n    display:none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 60;\n    -webkit-backface-visibility:hidden;\n    -moz-backface-visibility:hidden;\n    -ms-backface-visibility:hidden;\n    -o-backface-visibility:hidden;\n    backface-visibility:hidden\n}\n.x-showlist-inner {\n\twidth: 500px;\n\theight: 360px;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -250px;\n\tmargin-top: -180px;\n\tz-index: 20;\n    -webkit-backface-visibility:hidden;\n    -moz-backface-visibility:hidden;\n    -ms-backface-visibility:hidden;\n    -o-backface-visibility:hidden;\n    backface-visibility:hidden\n}\n.x-showlist-hd {\n\tposition: relative;\n\tz-index: 20;\n}\n.x-showlist-hd label {\n\tposition: absolute;\n\ttop: 5px;\n\tleft: 5px;\n\tfont-size: 14px;\n\tcolor: #bbbbbb;\n}\n.x-showlist-close {\n\twidth: 32px;\n\theight: 32px;\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbackground: url(./img/xplayerv4.png) no-repeat 8px -88px;\n\tz-index: 20;\n}\n.x-showlist-bd {\n\twidth: 410px;\n\theight: auto;\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tmargin-left: -200px;\n\tmargin-top: -130px;\n    overflow: hidden;\n\tz-index: 20;\n}\n.x-showlist-bullet{\n\twidth: 410px;\n    height: 265px;\n\toverflow-y: scroll;\n    overflow-x: hidden;\n}\n.x-showlist-bd a{\n    text-decoration:none;\n    color:white;\n}\n.x-showlist-bullet li {\n\twidth: 100%;\n\theight: 40px;\n\tbackground: #000000;\n\tmargin-bottom: 1px;\n\tline-height: 40px;\n\tcolor: #bbbbbb;\n    text-indent:10px;\n    overflow:hidden;\n}\n.x-showlist-bullet .selected {\n\tbackground: #06a7e1;\n\tcolor: #222222;\n}\n.x-showlist-grid {\n\twidth: 420px;\n\tposition: relative;\n\tz-index: 20;\n}\n.x-showlist-grid li {\n\twidth: 40px;\n\theight: 40px;\n\tmargin: 0 1px 1px 0;\n\tbackground: #000000;\n\tfloat: left;\n\tcolor: #ffffff;\n\ttext-align: center;\n\tline-height: 40px;\n\tfont-size: 14px;\n}\n.x-showlist-grid .disabled {\n\tcolor: #555555;\n}\n.x-showlist-grid .visited {\n\tcolor: #911891;\n}\n.x-showlist-ft {\n\twidth: 100%;\n\theight: 65px;\n\tline-height: 65px;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tz-index: 20;\n}\n.x-showlist-pages {\n\twidth: 100%;\n\theight: 100%;\n\ttext-align: center;\n}\n.x-showlist-pages ul,.x-showlist-pages li,.x-showlist-pages span {\n\tdisplay: inline-block;\n}\n.x-showlist-pages li {\n\twidth: 12px;\n\theight: 12px;\n\tbackground: url(./img/xplayerv4.png) no-repeat -288px -96px;\n\tmargin: 0 5px;\n}\n.x-showlist-pages li em {\n\tdisplay: none;\n}\n.x-showlist-pages .current {\n\tbackground-position: -256px -96px\n}\n.x-showlist-pages .x-showlist-pre {\n\twidth: 32px;\n\theight: 32px;\n\tvertical-align: middle;\n\tbackground: url(./img/xplayerv4.png) no-repeat -192px -94px;\n}\n.x-showlist-pages .x-showlist-next {\n\twidth: 32px;\n\theight: 32px;\n\tvertical-align: middle;\n\tbackground: url(./img/xplayerv4.png) no-repeat -208px -94px;\n}\n.x-showlist-pages .x-disabled-pre {\n\tbackground-position: -128px -94px;\n}\n.x-showlist-pages .x-disabled-next {\n\tbackground-position: -146px -94px;\n}\n.x-advert {\n\tdisplay: none;\n\twidth: 100%;\n\theight: 100%;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 80;\n\tfont-size: 12px;\n\tcolor: #bbbbbb;\n\t-webkit-user-select: none;\n}\n.x-advert-skip {\n\twidth: 70px;\n\theight: 35px;\n\tposition: relative;\n\ttext-align: center;\n\tfloat: right;\n\tmargin-left: 3px;\n}\n.x-advert-countdown {\n\twidth: 80px;\n\theight: 35px;\n\tposition: relative;\n\ttext-align: center;\n\tfloat: right;\n}\n.x-advert-txt {\n\tposition: relative;\n\tz-index: 20;\n\tline-height: 35px;\n}\n.x-advert-sec {\n    color: #d83e26;\n}\n.x-advert-detail {\n\twidth: 120px;\n\theight: 35px;\n\tline-height: 50px;\n\tposition: absolute;\n\tright: 0;\n\tbottom: 50px;\n\ttext-align: center;\n}\n.x-advert-detail .x-advert-txt {\n\tfont-size: 14px;\n}\n.x-ico-detail {\n\tdisplay: inline-block;\n\twidth: 15px;\n\theight: 15px;\n\tbackground: url(./img/xplayerv4.png) no-repeat -96px -96px;\n\tposition: relative;\n\ttop: 3px;\n\tleft: 5px;\n}\n.x-video-loading {\n\tdisplay: none;\n\twidth: 64px;\n\theight: 64px;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tz-index: 60;\n\tmargin-left: -32px;\n\tmargin-top: -32px;\n\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGODdGMTE3NDA3MjA2ODExODIyQUJFM0Q2NThGMUE2NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5QUJGREFFRTMxNjcxMUUyQTdGQ0MzMTAyNDYwOEM0MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNjMxMEJBODMxNjUxMUUyQTdGQ0MzMTAyNDYwOEM0MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkFCRjExNDMyNzIwNjgxMTgwODNEQjJGMEFDNDg0NjYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjg3RjExNzQwNzIwNjgxMTgyMkFCRTNENjU4RjFBNjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6kvxsdAAANkElEQVR42uxbe2xUVRq/5955tJ2ZtjB9QWkpUp6WKIiLLrS7UgK0QhYTuxoNuOIqZotKuiYmm9XgixgSjTH8o3+sr+h2E0LcUJVXwIBQHj4QLCiU0u2WFkrfdDrtzNy5+5273xlPT++9c6dMu7txJ/kyt9N7z9zv9/2+57lDNE2Tfs4vWfqZvxzsgBAyHusT7l0USr0oHqt43oTRkTHfMY5Ky5wowjs7J4THwwhCdCJBSCYAvKVlXFfBdycK/5mCCg9wawxzymv/SwAQwdJUWTeIC9/5YwYEPTcMkoqKR1CiCIyRP2r/bQAQweJMyRSQNFROf1+/fv3Me++99/bi4uJbsrOz8zIzM/2pqakRp9M5ALGnCq+nEvb5fJqqqiQUCkmRSMSIZVrSg8EYUiHhlPaCZIEUgMwFWQxyz6ZNm/5QX1//9/7+/nZYfxgkBBIGieBxEGQQzl0IUgiSQddj90MFQJPy8vKIw+EwCqLJ0TtBAAinfAre9BSQWSB3wI2Wv/7661tbW1vPUuVQySACIIKgglDKLwGZCTJZBICXsrIyAuxIGghjAYDRnfqxB8SPllsAUvrMM8883dbWdgbWugEyABLgQBiyAGAZyGxcz20GAJO1a9dKXq/3phmRKABMeRcqnw1yC7U6ULTy2LFju6LRaC+s0z8GAMpA5uCacQGg0tXVJZWUlNwUCIkAwCtP/T0HKb/kwQcf3Hjt2jVK9x4QCkCfBQhmANwFUmyXAbxUV1eTlJQUmastyHgBwGifg3S9+7nnnqsJBoMtcG0XSLcBCGYsEAFYBDIDZJJVDDCTTz/9lEBWkRNlgl0AWMBjtKeWv3v79u1/DofDbXDddZBOBMGKBaIbRFg2wMyRD5JOgU4UACpnz54l4IoJMcEOAAQLmxSkJ/X5JTU1NVtA+Va4pkMAwA4LGAAh/PwKrDkd0yitGZSxAABCGhoaiN/vtw0Cu9YRh/oKFjeUAZOqqqrmvfLKK09DunPYKEgId45+DPGipbGx8cempqaW5ubmSxDMGvEcFQoiTVEUGtykuro6qaioKKGYNn/+fLJz505tzZo1JBAIsO8mce/ThAGM+l7M8yVQwVVcvXr1FJxLqU+Lm6sg10yYEGMB3My1PXv2/K2ysvL3sM4qkF+B/AJjSRbm/zSMMxRwWvjIWVlZZOvWrZZWF4512bZtm359PCZYuQBP/Sz0+9KjR4/+Fc6j1L+CIPBAiCD0gJt0guK1hYWF98P1v8YKsQSLHgqqD5VO4RokWSix5YKCAgJp1pbyTFavXs13ooYgxAPAiUGJlrd3QLqphjzfDOf9E4UHYhQIHR0d5x966KHNcO1yej1auwCzyCS0uENomYlwwzEg3G63TFOeoLCh8lQGBwdJbm6uYtB+2wJARqvQqD+XlrdXrlw5Cuf8A6XFCgTw8aMzZsygDc4vQeaBTMMg6sN1XQY3RoT7GAUCxAf5gQceIGZKi/Lqq6/ybfkoFpgBwHzfhxZb/Nprr/0J/n8ZpdkKhEuXLh2FSLwOfbwYLe7DQOpgN2IV0eN0ncrDDz9sFwR55syZDjMWWAHAfJ+Wp/e0tLR8Af+/BNLEgTAKCKD96fz8/PtR+VtwDQ+6kxxPcQsQeCYo9AWBTo6nPBWoVxQuuI4AwQwABW96Ksjtjz322Cb430WQRgRBBEIHAXr3ZiiLq5H2xah8ql2rJ8AEnQXp6ekOYJup4rxMnTqVH8KMAkA2+AIHUjYN6LaEG15GheOY7Nu371Btbe15OO4B6QcJ4sSHlrv6K0lzCv2D/v5+acOGDbKNZogsXbpUsjpPNhiTs5FW6uLFixfgl2qc8vxxFPJ84Mknn6yD4z6QG6h8iCmfrOmtMC/Ujh8/Ln/55Zfx5hbS5s2bNat6QDbI/xQAFyA8w+fzeQXLj2LAwYMH61tbW7tE5cd7mKmqqvTiiy8qJlkj9iorK5NycnJM6wEjAHQXKC8vLzaiO+8OtKPbsWPHMZzu8sprWhK3nAQWxJhw8uRJMjw8TCwYoP/v1ltvlQxqDEMAWAxwzp49Oz+O9dX29vYO8H/a0AzhdDecLOpbgMDHAvLhhx9axQL977lz50p2GcBG2w5oL/1mQY/J+fPnmzjl2Vh7Ql+HDh2STXaeYkWWAAAxG4sT3g0yMjJ8nEKjOjt6cPHixXa0epjt7GjjuNtKl+a28PT7hTqFCAFStDJZuHChKQMcBozQmeDxeJwWOzUEAehCy/9HtrXoq7OzUxEMNSoeFBcXM3ZHrRgwAlmXy+WMQ2nS29sbFFLjRADAW5luoFgNP/TPp0yZIpl1hlYDkQn35zHuSslxtvlpdygZBEfN7PkA3ZIhujcVJwhCSeo2Sy/jrHwsaHu9XsWg9+cBIm1tbbbqAIlPdwMDA0Gr8pf6PXRbmQbDjIligJ6xoAGTBSaIQrq7uxU7ADAfpgEtAv7dZ9ED6EFv1qxZWdz2tw4CGacnLXSt/700n66VOXPmGD1/wDNCgcZJsVMKa5xyEaBNV5xKMDp//vyp2D67uY5roqyvb86uWrWKpW4eBF7kH374QTHbajcCgKa18IULF66a0J+lPHXatGnpUGvnciDoTBgPFuCSMqe8g7a6K1asIMKDFyIL5IaGBsVsXREAFQEI7d+/vykeA+CmotXV1QtwhpDKjbtIMkHAtfidab1jve++++iEXjFwgREs+OqrrxSDXuKnWRz3JS4cYVHfzu/r6/sjRPpUsQnhj2/cuDEMhcZfOjo6WuDva9gW0/I4kqyqEO+Nn1V40tLSPOfOnYtOnz5dLMJGKAnlOqF7BnAYwPtirbppFghjbR+sr6+/ECcQqtAyK2+99dZd+KyAj2dCMljAWZ89kKE/efLEE0+4QHmZe7qEfwYpdgzNkttgqEPixQAKwCBcfCZOKtQFqDi3oqKiCEfe6XiTsXgwFiC462RBeQ80N76XXnpJ4TKQSxr5MBZzE8fu3bsdBqW6ZlUHqEiT4EcffXS5qanperxYAGWz9s4779yTk5OThzs96RgXYtPgREDgzlW4zRO6l+AD6md+8MEHTso8afTTZyOU/+yzz1zff/8936uM6leM0laMAXTK8+67756IBwAVyAhpBw4cWAk3locxJBNBSLHLBhOrp+AWXYbb7Z5UW1ubduedd8qCtQ3lzTffdEg/PYGmGpX3fBDkQWHB0A9RNr+xsfF34G+T48wH9ffvvvvu+sqVKw9CULyKQ1J+VBYWLKEJ5e2INMeGsxQAADYDLJ+ybt26sGBRoxhF5wRk+fLl1JC9XACMsO80C4J8OqQXByKRSO8LL7xwiI6/LL4wJrfddtukU6dOrYIvp9thlA25uDOUia7hRWakST89TsceqfPg/9MxntDrskpKSnKPHDmSCcqbWd7JuYFTVVXHs88+q3BTKtNhjWzRCYbQcv2A/EWoC360QH0EGIWFhSmff/55KbjPMr/fX4Cbobm4U+RH5TJRMlDhTPw8C7flcsDqU15++eVpJ06cyABg+a0up0X0d7zxxhvub775JsilvYhZq27kAuIOsV4XZGdnT/v6669/W1BQkGGguGmWgJ5ieNeuXW07duxo+vbbb3vwpnirqMJA1gX1vffRRx9NB5EhsDL/VfkqVIjssc8BLFJeXj4YCAS6uT2KkBgAY3qbACBxvpiKVspevXr17J07d/7G4/EoNkGI3VgUXlBeB8AyvVCbByCuBHp6evRxGhRbSlFRkQuaKwUCnGPBggVRWZZVrjKNcoFM5f7mv1OFrk9aunTpMKzfhb4/wE2qo0ZDVisAeKt4GAiPPPJICaS8FZD6iB0GiEAYyBB3zEfsiKC0kfVjcQnadw2CbwiKt+uc8kGzcZ1VEDTqDYYwmne///77559//vkj4XBYNWCAHTFimix0erJJZyfW/Lr/Dw0NOdavX6+B8r14n4OC5TU7zZAVCCFclNb5ndu3bz+9ZcuWL8DPwiZp0Up5EQij8ZZs0N+LjY4eCLu6upxQiYY/+eSTTiHlhe0Maq1cQLxBVpikoTtMBsrNAHcohRrBEy89GtGWY5gqFCsR4V2kv26Y06dPR8Ele8+cOcOUH7ExazWoteMC4qQowjGBftn1ffv2XVy0aNHuurq6Zohxdq0vmYzaZWFvggiPzsSsD3lefvvtt7Vly5ZdB+VpB8oi/pAd5RNlgNHGCStRWXDMrKqqKtq2bRv9TYDXRunMsyBiECDNWKNCKo7U1NT0HD58uBNdsh9pP5yI8naygNVEVhFLVVrMQNmc+dRTT818/PHHi+fNm5dmp4eIo3jsb6guI1Db93788ccd3FZ8ABk5zK0h2bH8WAEQU6TMsSGVK2V9lZWVeRs3bpxeWlrqh2JGsQGA+Hmkvb09AhVl8L333uuGUrgblR5ApYNCsFMT2Zi5WQDE6G35k5mysjJ/RUVFFvTxXqgk3bm5uQ4ofgi0tnrQHBwcVKFiDIPC4cuXLw81NDQM7t27tw+s3oeKDnLvrLwNce6T8K5UMgCQDHK33R9NKUL+F7NCiPNpXmHez6M3sx+ZTABG7dZI9n42x29UaELhxd7DXN+gChaXpJvYi0z2Dyc1A0Xi/XDSdFfKpGaI3qzSRq/x+OUou0FV2La28/MWO/VDcvcb/v/r8Z/5618CDACSrI8YsjnaagAAAABJRU5ErkJggg==) no-repeat 0 0;\n\t-moz-animation-name: loadingAnimations;\n\t-moz-animation-duration: 1.2s;\n\t-moz-animation-iteration-count: infinite;\n\t-moz-animation-timing-function: linear;\n\t-webkit-animation-name: loadingAnimations;\n\t-webkit-animation-duration: 1.2s;\n\t-webkit-animation-iteration-count: infinite;\n\t-webkit-animation-timing-function: linear;\n\t-o-animation-name: loadingAnimations;\n\t-o-animation-duration: 1.2s;\n\t-o-animation-iteration-count: infinite;\n\t-o-animation-timing-function: linear;\n}\n@-webkit-keyframes loadingAnimations {\n\t12.5% {\n\t-webkit-transform: rotate(45deg);\n\t-moz-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\t-o-transform: rotate(45deg);\n\ttransform: rotate(45deg)\n}\n25% {\n\t-webkit-transform: rotate(90deg);\n\t-moz-transform: rotate(90deg);\n\t-ms-transform: rotate(90deg);\n\t-o-transform: rotate(90deg);\n\ttransform: rotate(90deg)\n}\n37.5% {\n\t-webkit-transform: rotate(135deg);\n\t-moz-transform: rotate(135deg);\n\t-ms-transform: rotate(135deg);\n\t-o-transform: rotate(135deg);\n\ttransform: rotate(135deg)\n}\n50% {\n\t-webkit-transform: rotate(180deg);\n\t-moz-transform: rotate(180deg);\n\t-ms-transform: rotate(180deg);\n\t-o-transform: rotate(180deg);\n\ttransform: rotate(180deg)\n}\n62.5% {\n\t-webkit-transform: rotate(225deg);\n\t-moz-transform: rotate(225deg);\n\t-ms-transform: rotate(225deg);\n\t-o-transform: rotate(225deg);\n\ttransform: rotate(225deg)\n}\n75% {\n\t-webkit-transform: rotate(270deg);\n\t-moz-transform: rotate(270deg);\n\t-ms-transform: rotate(270deg);\n\t-o-transform: rotate(270deg);\n\ttransform: rotate(270deg)\n}\n87.5% {\n\t-webkit-transform: rotate(315deg);\n\t-moz-transform: rotate(315deg);\n\t-ms-transform: rotate(315deg);\n\t-o-transform: rotate(315deg);\n\ttransform: rotate(315deg)\n}\n100% {\n\t-webkit-transform: rotate(360deg);\n\t-moz-transform: rotate(360deg);\n\t-ms-transform: rotate(360deg);\n\t-o-transform: rotate(360deg);\n\ttransform: rotate(360deg)\n}\n}\n\n/*recommend begin*/\n.x-recommend {\n//display: none;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 90;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: #222222;\n    overflow:hidden;\n    display: -moz-box;\n\tdisplay: -webkit-box;\n\tdisplay: box;\n\t-webkit-box-align: center;\n\t-moz-box-align: center;\n\t-webkit-box-pack: center;\n    -moz-box-pack: center\n}\n.x-recommend .x-pages{\n    width:auto;\n    height:auto;\n    overflow:hidden;\n    position:relative;\n    text-align:center;\n    padding: 30px 30px;\n}\n.x-recommend .x-replay{\n    position: absolute;\n    z-index: 20;\n    right: 0px;\n    top:0px;\n    width: 150px;\n    height: 85px;\n}\n.x-recommend .x-item{\n    position:relative;\n    z-index: 10;\n    width: 150px;\n    height: 85px;\n    margin: 0 12px 12px 0;\n    overflow: hidden;\n    display: inline-block;\n    vertical-align:middle;\n}\n.x-recommend .x-item-noimg img{\n    width:150px;\n    height:85px;\n}\n.x-recommend .x-item-img img{\n    width:100%;\n}\n.x-recommend .x-item-bg {\n\tz-index: 1;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\theight: 100%;\n\twidth: 100%;\n\tbackground: url(./img/item_bg.png) no-repeat left  top;\n}\n.x-recommend .x-item-title {\n\tz-index: 10;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\twidth: 100%;\n\theight: 40px;\n\toverflow: hidden;\n    text-align: left;\n    padding: 0 1px;\n    font-size: 14px;\n    font-weight: normal;\n    color:#ffffff;\n    text-shadow:1px 1px 1px #000000;\n}\n.x-recommend .x-item-url {\n\tz-index: 20;\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tleft: 0;\n\ttop: 0\n}\n.x-recommend .x-item-url a {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n    font-size: 14px;\n\twidth: 100%;\n\theight: 100%\n}\n.x-recommend .x-play-loading {\n\tdisplay: none;\n\tbackground-size: 32px 32px;\n\twidth: 32px;\n\theight: 32px;\n\tmargin-left: -16px;\n\tmargin-top: -16px\n}\n\n.x-ad-pause{\n    display:none;\n    position:absolute;\n    left:50%;\n    top:50%;\n    margin-left:-300px;\n    margin-top:-225px;\n    z-index: 90; /* > trigger */\n}\n.x-ad-pause .x-pause-close{\n    position:absolute;\n    width:44px;\n    height:44px;\n    right:0;\n    top:0;\n\tbackground: url(./img/xplayerv4.png) no-repeat -17px -83px;\n}\n\n.x-ad-pause .x-pause-prompt{\n    position: absolute;\n    left: 0;\n    bottom: 3px;\n    width: 29px;\n    height: 16px;\n    background: url(http://r2.ykimg.com/051000005604C79D67BC3D7CA2063AD4) no-repeat center;\n    background-size: contain;\n}\n/*2016.4.18 PlayLimit-----edit by vanery 10分钟限播s*/\n.x-app-guide, .x-app-guide-other, .x-app-guide-5min{\n\tbackground: url(http://player.youku.com/h5player/img/onlytip.png) no-repeat;\n    background-size:contain;\n\twidth:220px;\n\theight: 159px;\n\tborder-radius: 3px;\n    position:absolute;\n    left:50%;\n    top:50%;\n    margin-left:-110px;\n    margin-top:-74px;\n    z-index:100;\n}\n.x-app-guide-other{\n\theight:183px;\n\tbackground: url(http://player.youku.com/h5player/img/onlytipother.png) no-repeat;\n    background-size:contain;\n}\n.x-app-guide-5min{\n\theight: 160px;\n\tbackground: url(http://player.youku.com/h5player/img/tip5min.png) no-repeat;\n\tbackground-size:contain;\n}\n.x-app-guide .x-app-guide-par{\n\tposition: relative;\n\theight:100%;\n}\n.x-app-guide p{\n\twidth:44px;\n\theight:44px;\n\tposition: absolute;\n\tright:12px;\n\ttop: -12px;\n    z-index:102;\n}\n.x-app-openapp{\n    display: block;\n    width:100%;\n    height:40px;\n    position: absolute;\n    left:0;\n    bottom: 0;\n    z-index:101;\n}\n\n.x-app-bg{\n    width:100%;\n    height:100%;\n    position:absolute;\n    left:0;\n    top:0;\n    background:#000;\n    z-index:90;\n    opacity: .8;\n}\n/*e end*/\n.x-pay-panel{\n    width: 100%;\n    height: 100%;\n    margin: auto;\n    position: absolute;\n    top: 0; left: 0; bottom: 0; right: 0;\n    z-index:90;\n    background-color: #000000;\n}\n.x-pay-content{\n    margin: auto;\n    width: 80%;\n    height: 40%;\n    text-align: center;\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n}\n\n.x-pay-title{\n    color: #ffffff;\n    text-align: center;\n    font-size: 18px;\n    line-height: 30px;\n    margin: 30px;\n}\n.x-icon-prompt{\n    display: inline-block;\n    vertical-align: middle;\n    position: relative;\n    font-style: normal;\n    direction: ltr;\n    height: 14px;\n    width: 14px;\n    margin: 2px;\n    border: 1px solid #ff6000;\n    overflow: visible;\n    -webkit-border-radius: 50%;\n    -moz-border-radius: 50%;\n    -o-border-radius: 50%;\n    border-radius: 50%;\n    color: #eee;\n}\n.x-icon-prompt:after{\n    position: absolute;\n    left: 50%;\n    -webkit-transform: translateX(-50%);\n    -moz-transform: translateX(-50%);\n    -ms-transform: translateX(-50%);\n    -o-transform: translateX(-50%);\n    transform: translateX(-50%);\n    width: 2px;\n    height: 2px;\n    content: '';\n    pointer-events: none;\n    box-shadow: inset 0 0 0 1px,0 1px,0 2px,0 5px;\n    top: 4px;\n    color: #ff6000;\n}\n.x-pay-panel .x-button{\n    padding: 0 10px;\n    height: 40px;\n    line-height: 40px;\n    font-size: 18px;\n    cursor: pointer;\n    border: none;\n    margin: 0 10px;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n}\n.x-pay-panel .x-try{\n    color: #4a5159;\n    background-color: #b4b4b4;\n}\n.x-pay-panel .x-buy{\n    color: #ffffff;\n    background-color: #ff6000;\n}\n@media screen and (max-width: 640px) {\n    .x-showlist {\n        zoom: 0.8;\n    }\n    .x-showlist-grid li {\n        font-size: 16px;\n    }\n}\n@media screen and (max-width: 480px) {\n    .x-showlist {\n        zoom: 0.7;\n    }\n    .x-showlist-grid li {\n        font-size: 18px;\n    }\n}\n\n@media all and (min-width:620px) {\n    .x-ad-pause{display:block;}\n}"
  },
  {
    "path": "target/mongo/style/eu/index/themepark.css",
    "content": "/*   \nTheme Name: 超级门户\nTheme URI:http://www.themepark.com.cn/\nDescription: WEB主题公园出品的一款内容站主题，也可以用于企业seo优化站，全站小工具布局，模块可重复使用，灵活性超强！\nAuthor:WEB主题公园\nAuthor URI: http://www.themepark.com.cn/\nVersion: 1.35\n*/\n\n* { margin: 0; padding: 0; }\nimg{ border:none;}\nbody { background: white; font: 14px/1.4 Georgia, Serif; font-family:微软雅黑, Arial, Helvetica, sans-serif;background:url(\"../images/home_b.gif\"); padding: 0px; }\n.screen-reader-text { position: absolute; left: -9999px; top: -9999px; }\n.clear { clear: both; }\n.group:after { visibility: hidden; display: block; font-size: 0; content: \" \"; clear: both; height: 0; }\n* html .group, *:first-child+html .group { zoom: 1; } /* First selector = IE6, Second Selector = IE 7 */\n#index_model { width: 960px; margin: 10px auto; overflow:hidden; }\n#index_model_in{ width:980px; margin:0; padding:0; overflow:hidden; height:auto;}\nh1, h2, h3 { font-weight: normal; margin: 0 0 10px 0 ; }\np { margin: 0 0 5px 0; }\nul,li,ol{ list-style:none; display:block;}\na{ text-decoration:none;}\n#header{ width:100%; height:180px; position:relative;background:url(\"../images/nav_b.png\"); padding-bottom:8px;z-index:9999;}\n#header .top{ width:100%;  height:34px; border-top:solid 2px #fff;}\n#header .top .top_in{ width:960px; height:34px; margin:0  auto;}\n#header .top .top_gonggao{ width:504px; height:34px; float:left; position: relative; overflow:hidden; padding-left:30px; }\n#header .top .top_gonggao_bd{ position:absolute; left:0; top:0;background:no-repeat 0px 0px url(\"../images/Sprites.png\"); width:124px; height:34px;}\n#header .top  .top_gonggao_bd_r{ position:absolute; right:0; top:0; background:no-repeat 0px -37px url(\"../images/Sprites.png\"); width:30px; height:34px;}\n#header .top .top_gonggao_bd b{ font-size:12px; font-weight:normal; color:#FFF; line-height:34px; padding-left:43px;}\n#header .top .top_gonggao marquee a{ display:block; padding:2px 5px; background:#7a7a7a; border-left: #9bcb18 solid 1px;border-radius:4px; color:#FFF; font-size:12px; margin-top:7px; float:left; margin-right:20px;}\n\n#header .top .top_gonggao marquee a:hover{ background:#373737;}\n#header .top span{ display:block; float: right; height:34px; padding-left:25px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat; line-height:34px; color:#fff; font-size:12px; margin-right:30px;}\n#header .top .tel{ background-position:4px -103px;}\n#header .top .mail{ background-position:0 -75px;}\n\n\n#header #header_in{ width:960px; height:134px; margin:0 auto; overflow:hidden;}\n#header #header_in img{ max-width:100%;}\n#header #header_in .logo{ width:auto; height:74px; display:block; overflow:hidden; float:left;}\n#header #header_in .logo img{ height:74px; width:auto;}\n#header #header_in .header_ad{ float:right; width:636px; height:66px; padding:8px; position:relative; overflow:hidden;}\n#header #header_in .header_ad span{ width:32px; height:34px; position:absolute;background-image:url(\"../images/Sprites.png\");}\n#header #header_in .header_ad .left{ left:0; top:0; background-position:0 -139px;}\n#header #header_in .header_ad .right{ right:0; bottom:0; background-position:0 -232px;}\n#header #header_in .header_ad a{ display:block; width:636px; height:66px; overflow:hidden;}\n/* nav */\n#header #nav{ width:960px; height:46px; margin:0 auto; }\n#header #nav .menu_nav{ width:896px; height:45px; margin:0 auto; display:block; float: left;}\n#header #nav .menu_nav li{  float:left; width:auto; height:45px; display:block; line-height:45px; margin-right:1px; position:relative; z-index:99;white-space:nowrap;}\n#header #nav .menu_nav li a{ font-size:16px; font-weight:normal; color:#1b1b1b; text-decoration:none; position:relative; z-index:20; width: auto; height:45px; display:block; float:left;padding:0 15px;}\n#header #nav .menu_nav li .hover{ width:100%; height:43px; position:absolute; top:0; left:0; z-index:8px; display:none; border-top:solid 2px #eb302f;}\n#nav .menu_nav .current-menu-item .hover,#nav .menu_nav  .current-category-ancestor .hover,#nav .menu_nav  .current-menu-ancestor .hover,#nav .menu_nav  .current-post-parent .hover{ display:block !important;}\n#nav .menu_nav li .sub-menu{ display:none;  height:auto; width:130px; border:solid 5px #FFFFFF; position:absolute; top:44px; left:0; background:#f7f7f7;box-shadow: 0 1px 3px #333333; overflow:hidden; z-index:10; padding:5px;}\n#nav .menu_nav li .sub-menu li .sub-menu,#nav .menu_nav li .sub-menu li .sub-menu li .sub-menu,#nav .menu_nav li .sub-menu li .sub-menu li .sub-menu{ display:block !important;}\n#nav .menu_nav li .sub-menu li .current-menu-item a,#nav .menu_nav li .sub-menu li a{ color: #eb302f!important; text-shadow:none !important;}\n#nav .menu_nav li .sub-menu li a{ width:110px !important; padding:0 10px !important; display:inline; height:auto !important; float:left;}\n#nav .menu_nav li .sub-menu li a:hover{ background:#333 !important; color:#FFF !important;}\n#nav .menu_nav li .sub-menu li{ float:left; width:130px; height:auto !important; padding:0; line-height:28px !important; margin:2px 0; border-bottom:dotted 1px #CCCCCC;}\n#nav .home_url{ width:62px; height:46px; float:left;background:no-repeat 0px -309px url(\"../images/Sprites.png\");}\n\n\n\n/* pic */\n#pic_out{ width:960px; height:359px; overflow:hidden; margin:20px auto; border:solid 1px #CCCCCC; position:relative;}\n#pic{ width:940px; height:335px; overflow:hidden; position:relative; margin:0 auto; border:10px #FFFFFF solid; background:#FFF;}\n#pic ul li a{ display:block; width:100%; height:367px; overflow:hidden; position:relative; z-index:2;}\n#pic ul li {display:block; width:100%; height:421px; position:relative;}\n#pic .pic_text{ width:100%; height:40px; position:absolute;background:url(\"../images/black_b2.png\"); bottom:86px;  right:0; z-index:3;}\n#pic .pic_text span{ width:44px; height:40px; display:block;background:no-repeat 0px -387px url(\"../images/Sprites.png\"); float:left;}\n#pic .pic_text b{ font-size:12px; color:#fff; font-weight:normal; line-height:18px;}\n#pic .prve,#pic .next{ width:80px; height:80px; background-image:url(\"../images/Sprites.png\"); position:absolute; top:131px; display: block;z-index:1000; cursor:pointer;}\n#pic .prve{ background-position:80px -1px; left:-100px;}\n#pic .next{background-position:80px -80px; right:-100px;}\n\n/* pic */\n#pic_out2{ width:100%; height:435px; overflow:hidden; margin-top:-8px; margin-bottom:20px; border-bottom: solid 10px #EBEBEB; position:relative;*margin-top:-8px;_margin-top:-8px; z-index:100; z-index:10;}\n#pic2{ width:100%; height:435px; overflow:hidden; position:relative; margin:0 auto;  background:#FFF;}\n#pic2 ul li a{ display:block; width:100%; height:435px; overflow:hidden; position:relative; z-index:2;}\n#pic2 ul li {display:block; width:100%; height:435px; position:relative;}\n#pic2 .pic_text{ width:100%; height:40px; position:absolute;background:url(\"../images/black_b2.png\"); bottom:0;  right:0; z-index:3;}\n#pic2 .pic_text span{ width:44px; height:40px; display:block;background:no-repeat 0px -387px url(\"../images/Sprites.png\"); float:left;}\n#pic2 .pic_text b{ font-size:12px; color:#fff; font-weight:normal; line-height:18px;}\n#pic2 .prve,#pic2 .next{ width:80px; height:80px; background-image:url(\"../images/Sprites.png\"); position:absolute; top:161px; display: block;z-index:1000; cursor:pointer;}\n#pic2 .prve{ background-position:80px -1px; left:-100px;}\n#pic2 .next{background-position:80px -80px; right:-100px;}\n.test_inf{ margin:0 auto; width:960px;height:40px;}\n\n/* widget */\n.widget{ height:auto; overflow:hidden; float:left; margin: 5px 15px 5px 0px;}\n.widget .widge_hd{ width:100%; height:34px; float:left; border-bottom:solid 1px #89CDAC;}\n.widget .widge_hd span{ float:left; display:block; height:34px; width:auto;}\n.widget .widge_hd span b{ width:100%; display:block; font-size:14px; color:#303030;line-height: 20px;}\n.widget .widge_hd span p{ display:block; font-size:9px; color: #eb302f;  text-transform:uppercase;}\n.widget .widge_hd a{ width:52px; height:18px;background:0 -435px url(\"../images/Sprites.png\"); display: block; float: right; color: #eb302f; padding:16px 0 0 20px; font-weight:bold; text-decoration:none; font-size:14px;line-height: 14px;}\n.widget .widge_hd a:hover{ color:#CCC;}\n#vedio{ width:500px;}\n.widget ul{ width:100%; height:auto; padding:10px 0 0 0!important; float:left; margin: 0px !important;}\n.widget ul li{ display:block; float:left;}\n.widget .time{ width:100%; display:block;color:#eb302f; font-size:14px; line-height:1.5em;}\n.widget p{ font-size:12px; color:#999;}\n.widget img{ max-width:100%;}\n\n.widget_nav_menu ul li{ width:100%; height: auto; padding:5px 0; display:block;  border-bottom:dashed 1px #d6d6d6;  background:#fff;}\n.widget_nav_menu ul li a{  padding:5px 0 5px 20px; color:#666; display:block; width:100%; background:#F5F5F5; border-left:#ccc solid 3px; text-decoration:none;}\n.widget_nav_menu ul li a:hover{border-left:#eb302f solid 3px;color:#eb302f}\n.widget_nav_menu  ul .current_page_item a,.widget_nav_menu  ul .current-cat a{ color:#eb302f;border-left:#eb302f solid 3px;}\n.widget_nav_menu ul  .current-cat  .children li a,.widget_nav_menu ul  .current_page_item  .children li a,.widget_nav_menu ul  .current_page_item  .sub-menu li a,.widget_nav_menu ul  .current-cat .sub-menu li a{color:#666 !important; }\n.widget_nav_menu  ul  li .sub-menu,.widget_nav_menu  ul  li .children{ margin-left:10px; display:block;}\n.widget_nav_menu  ul  li .sub-menu li,.widget_nav_menu  ul  li .children li{ border:none; padding:5px 0 !important;}\n.widget_nav_menu  ul  li .sub-menu li a,.widget_nav_menu  ul  li .children li a{ border:none !important; background:none !important; padding:0 !important; margin-left:20px; }\n.case525,#new525,#vedios,.case525,.table1,#vedio{ height:370px;}\n\n\n.widget_border{ width: 780px; height: 5px; margin: 3 0px; float: left; background: url(\"../images/index/headbg.png\") repeat;}\n\n.widget table{}\n.widget table span.articleicon{ display: block; width: 9px; height:15px; margin-top: -5px; background: url(\"../images/index/index_article_icon.gif\") no-repeat;}\n.widget table a{ margin-left: 5px; font-family: \"微软雅黑\", \"宋体\", \"Times New Roman\"; font-size: 14px; line-height: 24px; color: #266AAB; text-decoration:none;}\n.widget table a b{ color:#eb302f;text-transform:uppercase;}\n.widget table a:hover{ color: red;}\n.widget table td{ overflow: hidden; white-space: nowrap; color: #999999;}\n\n\n#widget_news{width:370px; height:220px; border: 1px solid #19840E; padding: 5px;}\n#widget_news ul li#first{ margin:0;width:228px; height:295px; border:none; }\n#widget_news ul li#first a{ width:228px; height:295px; overflow:hidden; position:relative; display:block; overflow:hidden;}\n#widget_news ul li#first a span{ display:block; width:42px; height:40px; position:absolute; left:0l top:0; background:-281px -446px url(\"../images/Sprites.png\");}\n#widget_news ul li#first div{ width:218px; height: auto; background: no-repeat url(\"../images/first.png\"); position:absolute; bottom:-90px; padding:65px 5px 0 5px;}\n#widget_news ul li#first div p{ font-size:14px; color:#fff;}\n#widget_news ul li a,#vedio #bottom_text a{ font-size:18px; line-height:2em; color:#333; text-decoration:none;}\n#widget_news ul li a:hover,#vedio #bottom_text a:hover{ text-decoration:underline;}\n#widget_news ul li#first div p b,#widget_news ul li  a b,#vedio ul li a b,#vedio #bottom_text a b{ color:#eb302f;text-transform:uppercase;}\n#widget_news ul li{ width:600px; float:left; padding :3px 0; margin-left:10px; border-bottom: dashed #D5D5D5 1px;}\n\n\n#widget_expert{ width:780px; height: auto;}\n#widget_expert ul{ width:780px;}\n#widget_expert ul li{width:230px; height:300px; margin:0 13px 13px 0;}\n#widget_expert ul li a{ position:relative; display:block; width:230px; height:300px; overflow:hidden;}\n#widget_expert ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n#widget_expert ul li a .case_title b ,#widget_expert ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n#widget_expert ul li a .case_title b{ background-position:-5px -559px;float:left;}\n#widget_expert ul li a .case_title p{ background-position:-5px -601px;float:right;}\n#widget_expert ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n#widget_expert ul li a .case_t b{ color:#fff; font-size:14px;}\n\n.loop_big_caj_nav{ width:780px; height:auto; text-align: end; float:left;}\n.loop_big_caj_nav a{ display:inline-block; padding:0px 10px; margin-right:2px; background:#666; color:#FFF; font-size:14px; cursor:pointer;}\n.loop_big_caj_nav a:hover{ background:#eb302f;}\n\n\n#new525{ width:625px;}\n#new525 ul li#first{ margin:0;width:228px; height:295px; border:none; }\n#new525 ul li#first a{ width:228px; height:295px; overflow:hidden; position:relative; display:block; overflow:hidden;}\n#new525 ul li.scond a{ font-size:16px; margin-bottom:10px; overflow:hidden; display:block; }\n#new525 ul li#first a span{ display:block; width:42px; height:40px; position:absolute; left:0l top:0; background:-281px -446px url(\"../images/Sprites.png\");}\n#new525 ul li#first div{ width:218px; height: auto; background: no-repeat url(\"../images/first.png\"); position:absolute; bottom:-90px; padding:65px 5px 0 5px;}\n#new525 ul li#first div p{ font-size:14px; color:#fff;}\n#new525 ul li a{ font-size:14px; color:#333; text-decoration:none;}\n#new525 ul li a:hover,#vedio #bottom_text a:hover{ text-decoration:underline;}\n#new525 ul li#first div p b,#new525 ul li  a b,#vedio ul li a b,#vedio #bottom_text a b{ color:#eb302f;text-transform:uppercase;}\n#new525 ul li{ width:386px; float:left; padding :5px 0 5px 0; margin-left:10px; border-bottom:dashed #D5D5D5 1px;}\n\n\n#vedio .vidio_fam{  width:290px; height:215px; float:right;}\n#vedio ul{ width:470px; height:295px;}\n#vedio ul li{ width:170px; height:48px; overflow:hidden; display:block;  margin-bottom:8px;}\n#vedio ul li a{ font-size:12px; color:#333; text-decoration:none;  width:158px; height:36px;display:block;border:1px solid #CCC; padding:5px;}\n#vedio ul li a:hover,#vedio ul li .in{ border:1px solid #eb302f;}\n#vedio #bottom_text{ width:471px; height:auto; float:left;}\n\n#vedios{ width:315px;}\n#vedios ul{  width:315px; height:295px;}\n#vedios ul li{ width:315px; float:left; padding :5px 0 5px 0; margin-left:10px; border-bottom:dashed #D5D5D5 1px;}\n#vedios ul li a{ font-size:14px; color:#333; text-decoration:none;}\n#vedios .vedio_kuang{ width:303px; height:200px; padding:5px; background:#FFF; border:#CCC solid 1px;}\n#vedios .vedio_kuang iframe { width:303px !important; height:200px !important; }\n\n.case1{ width:960px !important; height:auto;}\n.case1 ul{ width:980px;}\n.case1 ul li{width:230px; height:300px; margin:0 13px 13px 0;}\n.case1 ul li a{ position:relative; display:block; width:230px; height:300px; overflow:hidden;}\n.case1 ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n.case1 ul li a .case_title b ,.case1 ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n.case1 ul li a .case_title b{ background-position:-5px -559px;float:left;}\n.case1 ul li a .case_title p{ background-position:-5px -601px;float:right;}\n.case1 ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n.case1 ul li a .case_t b{ color:#fff; font-size:14px;}\n\n\n.news_modle1,.news_modle2,.news_modle3{ width:306px;}\n.news_modle1 ul li#fiest .pic{ width:124px; height:93px; float:left; display:block; overflow:hidden;}\n.news_modle1 ul li#fiest .pic img{ width:124px; height:93px;}\n.news_modle1 ul li .news_modle1_title,.news_modle1 ul li p,.news_modle1 ul li#fiest .time{ float:left; display:block; width:154px; margin-left:10px; overflow:hidden; height:16px;}\n.news_modle1 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.news_modle1 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.news_modle1 ul li{ width:306px;float:left; padding :4px 0; border-bottom: dashed #D5D5D5 1px;}\n.news_modle1 ul li a:hover{ text-decoration:underline;}\n.news_modle1 ul li .time{ float:right; width:50px; padding-right:18px;}\n.news_modle1 ul li#fiest{ padding-bottom:12px;}\n\n.func_nav{ width:125px; border: 1px solid #19840E; padding: 5px;}\n.func_nav ul{ width:125px;}\n.func_nav li{ width:104px; height:130px; margin: 0px 10px; position:relative; overflow:hidden; border-bottom: 1px dashed #89CDAC;}\n.func_nav li b{ display:block; width:133px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:-90px; color:#FFF; font-size:12px; font-weight:normal;}\n.func_nav li b a{color:#FFF; text-decoration:none;}\n.func_nav li b a:hover{ text-decoration:underline;}\n\n#widget_inform{ width:370px; height:220px; border: 1px solid #19840E; padding: 5px;}\n#widget_inform ul li a{ font-size:18px; color:#333; text-decoration:none; float:left;}\n#widget_inform ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_inform ul li{ width:620px;float:left; padding :3px 0; border-bottom: dashed #D5D5D5 1px;}\n#widget_inform ul li a:hover{ text-decoration:underline;}\n#widget_inform ul li .time{ float:right; width:100px; padding-right:18px;}\n\n#widget_link{ width:800px;}\n#widget_link ul li a{ font-family: \"宋体\"; font-size:12px; color: #266AAB; text-decoration:none; float:left; text-decoration: none;}\n#widget_link ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_link ul li{ width:200px;float:left; padding :3px 0; background: url(\"../images/index/index_nav_icon.gif\") no-repeat 8px 8px; text-indent: 20px;}\n#widget_link ul li a:hover{ color: red;}\n\n#widget_question{ width:630px;}\n#widget_question ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n#widget_questionul li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n#widget_questionul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n#widget_question ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_question ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.question_title{ color:  #259; font-size:14px; display:block; width:100%;}\n.question_expandable{ margin-top:5px; font-size:13px; line-height: 1.5;color:#999;cursor: pointer;}\n.question_expandable img{width:98px !important; height:73px !important; float:left; border-radius: 4px;margin: 1px 10px 5px 0;}\n.question_expandable .toggle-expand{display: inline-block; padding: 0 3px; color: #0c5897; border-radius: 2px; font-size: .9em;}\n.question_collapse{ color: #fff; float:right; z-index: 1; margin: 0; background-color: #81baeb; padding: 1px 6px; border-radius: 3px; cursor: pointer;opacity: 0.9;border: 0;}\n.question_collapse i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon2.png) !important;background-repeat: no-repeat;margin-right: 5px; background-position: -70px -38px; width: 8px; height: 9px;}\n.question_content{color: #333; margin: 10px 0px; line-height: 20px;}\n.question_actions{ margin-top:3px; display:block;}\n.question_actions a{ margin: 0 5px;}\n.question_actions .highlight{ color: red; padding: 0 2px;}\n.question_actions i{display: inline-block;line-height: 10px;vertical-align: 0;background-image: url(../images/littleicon.png);background-repeat: no-repeat;margin-right: 5px;}\n.question_actions a{text-shadow: 0 1px 0 #fff;display: inline;text-decoration: none;color: #777;}\n.question_actions .comments_count .icon_comment{width: 9px;height: 10px;background-position: -28px -22px;}\n.question_actions .like_count .icon_like{width: 10px;height: 10px;background-position: -41px -22px;}\n\n#widget_company{ width:306px; max-height:370px;}\n#widget_company ul li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n#widget_company li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n#widget_company ul li a b{ color:#eb302f;text-transform:uppercase;}\n#widget_company ul li{ width:295px;float:left; padding :3px 0; border-bottom: dashed #D5D5D5 1px;}\n#widget_company ul li a:hover{ text-decoration:underline; color: red;}\n\n.companylist li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.companylist li span{ font-size: 20px; line-height: 2em; color:#333; text-decoration:none;}\n.companylist li p{ font-size:14px; line-height: 1.2em; color:#999;; text-decoration:none;}\n.companylist ul li a b{ color:#eb302f;text-transform:uppercase;}\n.companylist ul li{ width:620px;float:left; padding :10px 0 ; border-bottom: dashed #D5D5D5 1px;}\n\n.list_paginator{text-align: right; padding: 10px 0px;clear: both;line-height: 1em;}\n.list_paginator a{font-size: 12px; margin: 0 3px;padding: 2px 5px; border: 1px solid transparent; cursor: pointer; text-decoration: none; color: #777;}\n.list_paginator a.paginator_current { border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; color: #d32;}\n.list_paginator a:hover{ border-radius: 3px; background-color: rgba(0,0,0,0.03); border: 1px solid #ccc; }\n\n.table1{ width:415px;}\n.table1 .widge_hd2{width:100%; height:34px; float:left; border-bottom:solid 1px #cecece;}\n.table1 .widge_hd2 a{ font-size:14px;  color:#999; margin-right:10px; display:block; padding:2px 10px; float:left; margin-top:10px; cursor:pointer;}\n.table1 .widge_hd2 a.inopen{ background:#eb302f; box-shadow:0 1px 5px #7d1110 inset; color:#FFF;} \n.table1 ul{ display:none;}\n.table1 ul.show{ display:block;}\n.table1 ul li .table1_title,.table1 ul li p,.table1 ul li#fiest .time{ float:left; display:block; width:154px; margin-left:10px;}\n.table1 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.table1 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.table1 ul li{ width:406px;float:left; padding :6px 0; border-bottom: dashed #D5D5D5 1px;}\n.table1 ul li a:hover{ text-decoration:underline;}\n.table1 ul li .time{ float:right; width:50px; padding-right:18px;}\n#ss1{ display:block;}\n\n\n.case525{ width:625px;}\n.case525 ul{ width:661px;}\n.case525 ul li#fiest .pic{ width:120px; height:155px; float:left; display:block; overflow:hidden;}\n.case525 ul li#fiest .pic img{ width:120px; height:155px;}\n.case525 ul li .news_modle1_title,.case525 ul li p,.case525 ul li#fiest .time{ float:left; display:block; width:164px; margin-left:10px;}\n.case525 ul li#fiest{ padding-bottom:12px;}\n.case525  ul li a{ font-size:14px; color:#333; text-decoration:none; float:left;}\n.case525 ul li#fiest{ width:320px; margin-right:10px;}\n.case525 ul li#fiest .btn{ width:100px; float:left; display:block; background:#eb302f; color: #FFF; padding:3px 0; text-align:center;     border-radius: 4px;margin-left:10px;}\n.case525 ul li#fiest .btn:hover{ background: #666;}\n\n.news_modle2 ul li #pics,.news_modle2 ul li#fiest .pic img{ width:98px !important; height:73px !important; }\n.news_modle2 ul li #pics img{ width:98px; height:73px;}\n.news_modle2 ul li#fiest .pic{  float:left; display:block; overflow:hidden;}\n.news_modle2 ul li .news_modle1_title,.news_modle2 ul li p,.news_modle2 ul li#fiest .time{ float:left; display:block; width:196px; margin-left:10px;overflow:hidden; height:16px;}\n.news_modle2 ul li a{ font-size:12px; color:#333; text-decoration:none; float:left;}\n.news_modle2 ul li a b{ color:#eb302f;text-transform:uppercase;}\n.news_modle2 ul li{ width:306px;float:left; padding :1px 0 ; border-bottom: dashed #D5D5D5 1px;}\n.news_modle2 ul li a:hover{ text-decoration:underline;}\n\n.news_modle3 ul{ width:321px;}\n.news_modle3 li{ width:143px; height:108px; margin:7px; position:relative; overflow:hidden;}\n.news_modle3 li b{ display:block; width:133px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:-90px; color:#FFF; font-size:12px; font-weight:normal;}\n.news_modle3 li b a{color:#FFF; text-decoration:none;}\n.news_modle3 li b a:hover{ text-decoration:underline;}\n\n.case2,.case3{ width:960px; height:auto;}\n.case2 ul{ width:980px;}\n.case2 ul li{width:230px; height:180px; margin-right:13px;}\n.case2 ul li a{ position:relative; display:block; width:230px; height:173px; overflow:hidden;}\n.case2 ul li a .case_title{ width:220px; height:20px; padding:5px; background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; z-index:10;}\n.case2 ul li a .case_title b ,.case2 ul li a .case_title p{ font-size:12px; color:#FFF; display:block;  margin-right:15px; padding-left:20px; background-image:url(\"../images/Sprites.png\"); background-repeat:no-repeat;} \n.case2 ul li a .case_title b{ background-position:-5px -559px;float:left;}\n.case2 ul li a .case_title p{ background-position:-5px -601px;float:right;}\n.case2 ul li a .case_t{ position:absolute;background:url(\"../images/first.png\"); bottom:-90px; width:220px;height:41px;  padding:18px 5px 30px 5px; z-index:11;}\n.case2 ul li a .case_t b{ color:#fff; font-size:14px;}\n\n\n.case3 ul{ width:980px;}\n.case3 li#big{ width:485px; height:361px; margin-left:0;overflow:hidden;}\n.case3 li{ width:230px; height:173px; margin:7px 4px; position:relative;overflow:hidden;}\n.case3 li#big b{ width:475px;}\n.case3 li b{ display:block; width:220px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; color:#FFF; font-size:12px; font-weight:normal;}\n.case3 li b a{color:#FFF; text-decoration:none;}\n.case3 li b a:hover{ text-decoration:underline;}\n\n.case4 { width:960px;}\n.case4 ul{ width:980px;}\n.case4 li{ width:133px; height:100px; margin:1px; position:relative; border: solid 1px #CCCCCC;}\n.case4 li b{ display:block; width:216px; padding:5px;  background:url(\"../images/black_b2.png\"); position:absolute; bottom:0; color:#FFF; font-size:12px; font-weight:normal;}\n.case4 li b a{color:#FFF; text-decoration:none;}\n.case4 li b a:hover{ text-decoration:underline;}\n\n\n\n#footer{ width:100%; height:auto;;  border-top: solid 10px #dadada; background:#3c3c3c; padding:10px 0; position:relative;}\n#footer_in{ width:960px; height:auto; margin:0 auto; position:relative;}\n#footer_in .footer_shadow{ width:960px; height:10px; position:absolute; top:-30px;}\n#footer_in .footer_modle{ width:100%; height:auto; padding:10px 0 20px 0; margin:5px 0; border-bottom:solid 1px #CCCCCC; overflow:hidden; }\n#footer_in .footer_modle .title{ width:100%; height:auto; float:left; padding-bottom:5px;}\n#footer_in .footer_modle .title b{   color:#fff;display: block; font-size: 14px; width: 100%;}\n#footer_in .footer_modle .title  a{   color: #eb302f;display: block;font-size: 9px;text-transform: uppercase;}\n\n#footer_in .footer_modle .link{ width:211px; height:auto; float:left; overflow:hidden; margin-right:28px;}\n#footer_in .footer_modle .link ul{ width:100%; height:auto; display:block; overflow:hidden; float:left; border-top: 1px dashed #767676;}\n#footer_in .footer_modle .link ul li{    border-bottom: 1px dashed #767676;float: left;  width:100%; }\n#footer_in .footer_modle .link ul li a{ color:#ccc; font-size:12px; text-decoration:none; display:block; width:100%;padding: 5px 0; }\n#footer_in .footer_modle .link ul li a:hover{ background:#767676;}\n#footer_in .footer_modle .subscription{ float:left; width:262px; height:190px; margin-right:28px;}\n#footer_in .footer_modle .subscription .rssbook{ background:#2d2d2d !important; border:1px solid #4a4a4a !important; padding:21px 17px !important;}\n#footer_in .footer_modle .subscription .rssbook input.rsstxt{ width:97% !important; }\n\n#footer_in .footer_modle .icon{ width:260px; height:auto; overflow:hidden; float:left; margin-right:28px;}\n#footer_in .footer_modle .icon ul{ width:280px; height:auto; display: block;}\n#footer_in .footer_modle .icon ul li{ display:block; width:78px; height:61px; float:left; margin:0 10px 10px 0; border: solid 1px #666;}\n#footer_in .footer_modle .icon ul li:hover{border: solid 1px  #333; }\n\n#footer_in .footer_modle .dimensional{ width:138px; float:left;}\n#footer_in .footer_modle .dimensional img{ width:138px; height:138px;}\n\n#footer_in .links{ width:960px; height:auto; display:block;}\n#footer_in .links li{ display:inline; padding-right:15px;}\n#footer_in .links li a{ font-size:12px; color:#cacaca; text-decoration:none;}\n#footer_in .links li a:hover{ color:#FFF;}\n\n#footer_in p{ font-size:12px; color:#cacaca;}\n#footer_in p a{font-size:12px; color:#cacaca; text-decoration:none;}\n#footer_in p a:hover{ color:#eb302f}\n\n\n\n\n/* page_top */\n#page_top{ width:100%; height:56px; padding-top:20px; overflow:hidden; background-image: url(\"../images/pic_b.jpg\"); background-position:center; margin-top:-7px;}\n#page_top .page_top_in{ width:960px; height:76px; margin:0 auto;}\n#page_top .page_top_in h3{ display:block; width:100%; font-size:24px; color:#fff; font-weight:normal;text-transform:uppercase;}\n#page_top .page_top_in h3 a{ font-size:14px; color:#FFF; text-transform:uppercase;}\n#page_top .page_top_in p{ font-size:9px; color:#FFF;}\n#page_muen_nav{ width:960px; height:auto; padding:10px; margin:0 auto 10px auto ; border-bottom: dashed #D5D5D5 1px;}\n#page_muen_nav b,#page_muen_nav a{ font-size:12px; color:#666; text-decoration:none;}\n#page_muen_nav a:hover{color:#eb302f}\n\n\n/* content */\n#content{ width:960px; height: auto; padding:20px 0; margin:0 auto; overflow:hidden;}\n#content .left_mian{ width:240px; height:auto; overflow:hidden; float:left; padding:10px; border:solid 1px #EEE; }\n#content .right_mian{ width:680px; height:auto; overflow:hidden; float:right;}\n#content .case_pic{ position:relative; top:0; left:0;}\n#content .case_pic ul li{  position:relative; }\n#content .case_pic ul li .bottom_tucase{ width:319px; height:15px; position:absolute; bottom:-15px;background:url(\"../images/bottom.png\");}\n#content .case_pic ul li a{ overflow:hidden;position:relative;}\n#content .case_pic ul li .hover_case{ width:319px; height:190px; overflow:hidden; position:absolute; left:0; top:190px; background:url(\"../images/black_b.png\");}\n#test_list_b{ background:#FFF; margin-top:5px; box-shadow:0 0  3px #CCCCCC; margin-right:3px;}#test_list_b ul{ padding:0;}\n\n/* left */\n#content .left_mian .widget{ padding-bottom:15px; }\n#content .left_mian .widget,#content .left_mian .news_modle2 li{ width:240px !important; }\n#content .left_mian .news_modle2 li .news_modle1_title,#content .left_mian .news_modle2 li p{ width:159px;}\n#content .left_mian .news_modle1 li .news_modle1_title,#content .left_mian .news_modle1 li p{ width:142px;}\n#content .left_mian .news_modle3 li,#content .left_mian .news_modle3 li b, #content .left_mian .news_modle3 li a img{ width:124px; height:auto;}\n#content .left_mian .news_modle2 li .time,#content .left_mian .news_modle1 li .time,#content .left_mian  #vedio,#content .left_mian  #widget_news,#content .left_mian  #new525,,#content .left_mian #vedios ,#content .left_mian .case525,#content .left_mian .table1{ display:none;}\n#content .left_mian .case4 ul{ width:272px !important; }\n#content .left_mian .case4 ul li{ border: none;}\n#content .left_mian .case1 ul,#content .left_mian .case2 ul{ width:270px}\n#content .left_mian .case1 .caseleft,#content .left_mian .case2 .caseleft{ margin-left:20px;}\n#content .left_mian .case1 .caseleft ul li,#content .left_mian .case2 .caseleft ul li{ margin-right:20px;}\n#content .left_mian .case1 .caseleft .loop_big_caj_nav,#content .left_mian .case2 .caseleft .loop_big_caj_nav{ width:191px;}\n#content .left_mian .case3  ul li#big,#content .left_mian .case3  ul li#big img{ width:270px; height:203px;}\n#content .left_mian .case3  ul li#big b,#content .left_mian  .case3 ul{width:270px; display:block;}\n#content .left_mian .case3  ul li,#content .left_mian .case3  ul li a,#content .left_mian .case3  ul li a img{ width:127px; height:96px;}\n#content .left_mian .case3  ul li b{ display: none;}\n\n.pager {width:95%;overflow:hidden;white-space:nowrap;padding:4px;float:left;text-align:left; margin:20px 0;}\n.pager a { background:#333; color:#FFF; font-size:12px;margin:2px;padding:6px 12px; text-decoration:none; float:left;}\n.pager a.current {background:#eb302f; font-size:12px;margin:2px;padding:6px 12px;}\n.pager a:hover {background:#eb302f;font-size:12px;color:#fff;text-decoration:none;}\n.hover_incase{ position:absolute; top:0; left:0; display:none;}\n\n/*news_loop_01*/\n.news_loop_01{ display:block; width:100%; height:auto; overflow:hidden;}\n.news_loop_01 li{ float:left; display:block; width:100%; padding:10px 0; border-bottom:dashed #999999 1px;}\n.news_loop_01 li .news_001_pic{ width:83px; height:83px; display:block; overflow:hidden; float:left; position:relative;}\n.news_loop_01 li span{ display:block; float:left; padding-left:15px; width:428px;}\n.news_loop_01 li .news_001_pic img{ width:88px; height:88px; position:absolute;}\n.news_loop_01 li#fist .news_001_pic,.news_loop_01 li#fist .news_001_pic img{ width:143px; height:108px;}\n.news_loop_01 li#fist .news_001_pic{ border:8px solid #fff; margin-left:3px; box-shadow: 0 1px 3px #E1E1E1;}\n.news_loop_01 li#fist a.news_001_pic:hover{border:8px solid #eb302f;}\n.news_loop_01 li#fist span{ width:450px;}\n.news_loop_01 li span b{ font-size:18px; color:#333; display:block;}\n.news_loop_01 li span b a{ color:#333; text-decoration:none;}.news_loop_01 li span b a:hover{ color:#eb302f;}\n.news_loop_01 li span a.time{ font-size:12px; color:#eb302f; margin:4px 0;}\n.news_loop_01 li span p{ display:block; font-size:12px; color:#333;}\n.news_loop_01 li span a.news_btn{ color:#eb302f; font-size:14px; display:block; padding-left:25px;background:0 -615px no-repeat url(\"../images/Sprites.png\"); margin-top:10px; }\n.news_loop_02 li{ float:left; display:block; width:100%; padding:6px 0; border-bottom:dashed #999999 1px;}\n.news_loop_02 li a{ font-size:14px; color:#666; padding-left:15px; background:0 -294px no-repeat url(\"../images/Sprites.png\"); text-decoration:none; float:left}\n.news_loop_02 li p{ float:right; font-size:12px; color:#999;}\n.news_loop_02 li a:hover{ color:#eb302f}\n\n.case_pic{ position:absolute; left:0; top:180px;}\n.case_pic ul{ width:1004px; height:auto; overflow:hidden; margin:0; padding:0;}\n.case_pic ul li{ width:290px; height:344px; background:#FFF; margin:0 17px 10px 3px; float:left; display:block; border:8px solid #fff;  box-shadow: 0 1px 3px #E1E1E1;}\n.case_pic ul li a{ display:block; overflow:hidden; width:290px; height:215px; float:left; border-bottom:3px solid #FFF;}\n.case_pic ul li a:hover{ border-bottom:3px solid  #eb302f}\n.case_pic ul li:hover{border:8px solid  #E4E4E4;}\n.case_pic ul li b{ float:left; padding:7px 10px; font-size:14px; color:#333; }\n.case_pic ul li p{ float:left; padding:0 10px; font-size:12px; color:#666; margin:0;}\n#text_list li span{ width:606px !important;}\n\n\n#pic_text_list li#big .news_001_pic,#pic_text_list li#big .news_001_pic img{ width:290px; height:215px;}\n#pic_text_list li#big .news_001_pic{ margin-left:3px;}\n#pic_text_list li#big span{ width:302px}\n#pic_text_list li#big a.news_001_pic:hover{ background:#DFDFDF;}\n#pic_text_list{ padding:0; margin:0;}\n#pic_text_list li#big .news_001_pic{ padding:10px; background:#FFF; box-shadow:0 0 3px #CCCCCC;}\n#pic_text_list .tag{ margin-top:10px;}\n\n/* page&single */\n.enter{ width:100%; height:auto; overflow:hidden;}\n.enter p{ font-size:12px; color:#666; line-height:22px;}\n.enter a{ color:#eb302f}\n.enter img{ max-width:100%; height:auto;}\n.title_page{ width:610px; border-left:solid 9px #eb302f; border-right:#CCC solid 1px; border-top:#CCC solid 1px;border-bottom:#CCC solid 1px;background:#FFF; padding:5px;}\n.enter_full .title_page,#nav_product_mue .title_page{ width:939px;}\n.title_page h1{ font-size:16px; margin:0;}\n#nav_product_mue .title_page{ margin-bottom:10px;}\n#nav_product_mue .title_page a{ font-size:12px; color:#eb302f; margin-left:5px;}\n\n.enter_full  .des_page{ width:936px;}\n.title_page h1 .title_page .title_page b{ font-size:16px; color:#333; font-weight:normal; margin:0;}\n.des_page{ width:650px; padding:10px; margin-bottom:10px; border-bottom:dashed #CCCCCC 1px;}\n.des_page a{ font-size:12px; color:#999;}\n.des_page ul{ display:inline-block; margin-left:10px;}\n.des_page ul li{margin-left:10px;}\n#nogallery_enter .gallery_xz,#nogallery_enter .list-h,#nogallery_enter #enter_xz{ display:none !important;}\n#enter_xz{ background:#FFF; border:10px solid #fff;box-shadow: 0 1px 3px #333333; margin:15px 0 10px 5px;border-radius: 5px;}\n.smaoll_xzs,.smaoll_xzs li{ width:600px !important; min-height:400px;}\n.big_xzs,.big_xzs li{ width:930px !important; min-height:500px;}\n#enter_xz ul li{ text-align:center;}\n#enter_xz .next{ position:absolute; width:91px; height:100%; background: no-repeat center url(\"../images/next.png\"); bottom:0; right:-91px; z-index:100; cursor:pointer;}\n#enter_xz .prve{ position:absolute; width:91px; height:100%; background:no-repeat center url(\"../images/prev.png\"); bottom:0; left:-91px;  z-index:100;cursor:pointer;}\n.bqc{ border-top:#CCC dotted 1px;}\n#bandds .list-h{ width:100%; display:block; overflow:hidden; padding:0; margin:0;}\n#bandds .list-h li{ float:left; margin:9px;}\n/* product */\n.enter_cs{ display:block; width:650px; padding:10px 0 10px 0; font-size:18px; color:#eb302f; margin:15px 0; border-bottom:#999 1px dashed;}\n.product_pic{  width:624px; height:400px; display:block; overflow:hidden; border:solid #d6d6d6 3px; float:left; position:relative;}\n.product_pic .loading{  width:624px; height:400px;position:absolute; background: center no-repeat url(\"../images/loading.gif\"); display:none;}\n.product_pic img{  width:624px; height:400px;}\n.product_text{ width:627px; height: auto; float:right; overflow:hidden;}\n.product_text h1{ font-size:18px; color:#333;}\n.product_text .time{ font-size:12px; color:#999; display:block; width:200px; margin:3px 0;}\n.tag_pro{ display:block; width:100%; height:auto; overflow:hidden;margin:10px 0;}\n.product_text ul li{ display:inline-block; margin-right:10px; text-decoration:none;}\n.product_text ul li a{ font-size:14px; color:#999;} .product_text ul li a:hover{ color:#eb302f;}\n.tag_pro a{ display:block; background:#666; color: #FFF; font-size:12px; text-decoration: none; margin:0 10px 5px 0; border-radius: 5px; float:left; padding:5px 5px; cursor: pointer;}\n.tag_pro a.selecttag{ background:#eb302f;}\n.tag_pro a:hover{ background:#eb302f;}\n.product_text span,.product_jianjie span{ display:block; width:100%;margin-bottom:0; color:#eb302f; font-size:16px; padding-bottom:5px; border-bottom:solid 1px #999; margin-top:0;}\n.product_text .de_product{ width:100%; height: auto; overflow:hidden;font-size:12px; color:#666; margin-bottom:5px;}.product_text .de_product span{ border:none;}\n.product_text .btn,.product_jianjie .btn{ display:block; width:260px; text-align:center; padding:10px 0; background:#ff9c00; border:3px solid #cecece; border-radius: 5px; font-size:18px; color:#FFF; text-decoration:none;}\n.product_jianjie .btn{ float:left;}\n.product_text .btn:hover{ background:#333;}\n.product .list{ width:624px; padding:2px; border:1px solid #CCC; height:79px; background:#FFF; float:left; margin-top:20px; }\n.product .list .prve,.product .list .next{ display:block; background:#e4e4e4; height:59px; padding:10px; font-size:12px; color:#FFF; float:left; line-height:55px; cursor:pointer; }\n.product .list .prve:hover,.product .list .next:hover{ background:#eb302f;}\n.product .list ul{ width: auto; float:left; display:block; height:81px; margin:0; padding:0;}\n.product .list .lsit_hover{ width:566px; float:left; display:block; height:81px; overflow:hidden;}\n.product .list ul li{ float:left; display:block; width:100px; height:75px; border:#CCC solid 2px; margin:0 5px;}\n.product .list ul li a img{ width:100px; height:75px;  }\n.product .list ul li:hover,.bodee{ border:solid 2px #eb302f !important;}\n.product .list ul li a{ cursor:pointer;}\n.aligncenter { display: block; margin-left: auto; margin-right: auto; }\n.aligncenter p.wp-caption-text {display: block;margin-left: auto;margin-right: auto;text-align: center;} \n#full_prodcts_single{ overflow:hidden; width:100%;}#full_prodcts_single .product{ width:628px;}\n#full_prodcts_single .product_text{ width:100%; text-align:left;}\n#full_prodcts_single .product_pic,#full_prodcts_single .list{ float:left; overflow:hidden;}\n.product_jianjie{ float:right; width:305px; overflow:hidden;}\n#full_prodcts_single .enter_cs{ width:100%;}\n#full_prodcts_single .product .list .lsit_hover{ width:894px; float:left; display:block; height:84px; overflow:hidden;}\n#full_prodcts_single .product .list{ width:952px;}\n#full_prodcts_single .de_product{ margin:10px 0;}\n.de_product p{ font-size:14px; color:#333;}\n.relevant li{ width:470px !important;}.relevant_right li{ width:300px !important;}\n.relevatright_div,.relevatright_div ul{width:630px !important;}\n.relevat_b{ display:block; font-size:14px; border-bottom:#CCC dotted 1px; color:#666;}\n.relevat_div{ padding-top:10px !important;} \n\n#respond{ padding:10px 0; border-top:dashed #999999 1px; margin-top:20px;}\n.liuy3{ padding:10px 0; color:#666; font-size:12px;}\n.liuy2{ float:left; padding-right:10px; width:50px; overflow: hidden}\n#commentform input ,#commentform  textarea { border:#ccc solid 1px; background:#FFF; padding:5px; }\n#commentform #submit{ padding:5px 20px; background:#eb302f ; color:#FFF; font-weight:bold; margin:0 0 0 60px; cursor:pointer;border-radius: 5px;}\n#commentform #submit:hover{ background:#333; }\n\n.kefu{ width:50px; height:auto; background:#fff; padding:2px; position:fixed; right:3px; top:200px; _position:absolute; _top:expression(eval(document.documentElement.scrollTop+200));\n_left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||3));\nborder:solid 1px #CCC; z-index:3;}\n.kefu .kefu_d{ width:50px; height:50px; background-image:url(../images/Sprites.png); border-bottom:dotted 1px #CCCCCC; position:relative;}\n.kefu .kefu_d:hover{ background-color:#F2F2F2; cursor:pointer;}\n.kefu #top{ background-position:9px -803px;}\n.kefu #top a,.kefu #homes a,.kefu #shoucang a{ display:block;width:50px; height:50px;}\n.kefu #weixin{ background-position:9px -846px;}\n.kefu #weixin div{ width:201px; height:auto; overflow:hidden;}\n.kefu #kefu_severs{ background-position:9px -892px;}\n.kefu #kefu_severs div{ width: auto; height:auto; padding:10px;}\n.kefu #kefu_severs div a{ display:block; width:100%; float:left; padding:5px 0; border-bottom:#CCC dashed 1px; color:#666; font-size:14px; line-height:24px;}\n.kefu #shoucang{ background-position:9px -936px;}\n.kefu #homes{ background-position:9px -981px;}\n.kefu .kefu_d div{ position:absolute; top:0; right:50px; background:url(../images/white.png); display:none; border:#CCC solid 1px;}\n/* END screen media */\n\n.left_mian  #vedios  ul{ width:279px !important; height:auto !important;}\n.left_mian  .vedio_kuang{width:258px !important;}\n.left_mian #vedios .vedio_kuang iframe { width:259px !important;}\n.left_mian #s{ width:187px;}\n.searchd{ width:100%; padding:5px 0; overflow:hidden;}\n.searchd h2{ font-size:14px; color:#666; margin:2px 0;}\n#s{ width:230px; padding:3px; border:#999 solid 1px; overflow:hidden; float:left;}\n#searchform select{ width: auto; padding:2px; border:#999 solid 1px;}\n#searchsubmit{ background:#eb302f; padding:3px 10px; color:#FFF; cursor:pointer; border:none;    text-transform: uppercase; float:left;}\n#searchsubmit:hover{ background:#333;}\n#searchform{ padding-bottom:7px; overflow:hidden;}\n.searchd b{ float:left; font-size:12px;}\n.searchd a{ font-size:12px;  text-decoration:none;border-radius:3px; padding:2px 5px; margin:0 3px 8px 0; float:left; border: solid 1px #999;color:#eb302f;}\n.searchd a:hover{ background:#eb302f; color:#FFF;}\n.seach23 #searchform{ float:right; }\n.seach23 { width:100%; height:23px;}\n.seach23 p{ float:left; font-size:12px; color:#666; line-height:23px;}\n/*Alignment*/\n.alignleft { display:inline; float:left; margin-right:1.625em;}\n.alignright {display:inline;float:right; margin-left:1.625em;}\n.aligncenter { clear:both; display:block; margin-left:auto; margin-right:auto;}\n.rssbook .btn,.rssbook  .subscribeButton{  color: #ffffff; cursor: pointer; display: block;font-weight: bold; height: 22px; line-height: 22px;  text-align: center;  width: 90px;background:#676767; border: 1px solid #777;float: right;}\n.rssbook label { width:35px; padding-right:10px; color:#CCC; font-size:12px; display:block; float:left; line-height:26px;}\n.rssbook .sml_nameinput,.rssbook .sml_emailinput{ width:170px;font-size: 14px;height: 20px;margin-bottom: 5px;padding: 2px 3px; background:#999; border:solid 1px #999999;}\n.rssbook .required th,.rssbook .required td{ width:128px; float:left; display:block; padding-bottom:5px;}\n.rssbook .required td input { width:221px; margin-bottom:5px;}\n.rssbook .required th label{ width:100%;}\n.nav_product_mu ,#nav_product_mue { display:block; width:960px; height:auto; overflow:hidden;}#nav_product_mue { margin:0 auto; padding:10px 0; border-bottom:1px solid #999;}\n.nav_product_mu li{ width: auto; height:auto; display:block; float:left;}\n.nav_product_mu li.menu-item-has-children{ width:100%; margin-bottom:10px;} \n.nav_product_mu li a{ display:block; width: auto; height:auto; font-size:14px; color:#333; font-weight:bold;  padding:2px; float:left; margin-right:10px; text-align:center; text-decoration:none;border-radius:5px;}\n.nav_product_mu li .sub-menu{ display:block; float:left;}\n.nav_product_mu li .sub-menu li{ display:inline-block; margin-right:10px;}\n.nav_product_mu li .sub-menu li a{ color:#999; font-size:12px ;  width:auto ; padding:3px; font-weight:normal; cursor:pointer; }\n.nav_product_mu li .sub-menu li a:hover{ color:#fff !important;background:#ff0000;}      \n\n\n#nav_product_mue  #choose{ padding:3px 30px; background:#ff0000; color:#FFF; border: none;text-transform: uppercase; cursor:pointer;}\n#nav_product_mue  #choose:hover{background:#333; }\n.select{ background:#ff0000; color:#FFF !important;font-weight:bold !important;}\n#tagesulg,#catsulg{ display: none;}\n#tagesname{ width:730px; background:#EAEAEA; border:none; font-size:14px; color:#666; padding:3px;}\n.s_search_ys{ background:#FFF; float:left; width:950px; padding:5px;}\n\n\n.order_list{ width:96%; padding:5px 2%; height:auto; display:block; overflow:hidden;}\n.order_list li{ display:block; width:100%; height:auto; padding-bottom:10px;  border:#ccc solid 1px; margin-bottom:10px; overflow:hidden;}\n.order_list li .order_top{ width:96%; height:auto; padding:5px 2%; background:#E1E1E1; overflow:hidden; border-bottom:1px solid #CCC;}\n.order_list li .order_top b{ font-size:14px; color:#333; float:left;}\n.order_list li .order_top .star{ font-size:12px; color:#fff; float:right; display:block; background:#F60; border:#CCC; border-radius:5px; padding:3px; text-decoration:none;}\n.order_list li .order_top .star:hover{ background:#F30;}\n.order_list li .order_top em{ float:right; font-size:12px; color:#333;}\n.order_list li .order_pic{ width:15%; height:auto; overflow:hidden; display:block; float:left; margin:2%; float: left;}\n.order_list li .order_more{ width:80%; float:left; margin-top:2%;}\n.order_list li .order_post_name { font-size:14px; color:#333; text-decoration:none; width:100%; font-weight:bold;}\n.order_list li .red{ font-size:14px; color:#F00;}\n.order_list li p{ margin:0; color:#333;}\n.order_list li a{ color:#03F;}\n.order_list li .orderstatus{ display:block; padding:2px;  border:#ccc solid 1px; margin:3px 0;}\n.order_comment{ width:96%; height:auto; overflow:hidden; padding:2%;}\n.order_comment p{ display:block; width:100%; overflow:hidden;}\n.order_star{ display:block; width:21px; height:17px; float:left; cursor:pointer;}\n#order_comment em{ float:left; margin-left:10px;}\n#order_stars{ width:107px; height:17px; background-image:url(../images/star_y.png); background-repeat:no-repeat; display:block;}\n.order_stars_4{ background-position:0 -21px ;}\n.order_stars_3{ background-position:0 -42px ;}\n.order_stars_2{ background-position:0 -63px ;}\n.order_stars_1{ background-position:0 -84px ;}\n.order_comment textarea{ border:solid #CCC 1px; background:#FFF;border-radius:5px; padding:2%; font-size:14px; color:#666; width:95%;}\n.order_comment .button-primary{ border:#FFF solid 1px; background:#F60; color:#FFF; padding:5px 8px; cursor:pointer;border-radius:5px; margin-top:10px; }\n.order_comment .button-primary:hover{ background:#F30;}\n.order-pagination{ width:96%; padding:2%; height:auto; overflow:hidden; }\n.order-pagination span{ font-size:14px; color:#333 ; padding:2px 5px; float:left; display: block;margin:0 2px;}\n.order-pagination a{ display:block; float:left; padding:2px 5px; border:solid #CCC 1px; margin:0 2px; color:#333; text-decoration:none;}\n.order-pagination a:hover{ color:#FFF; background:#666;}\n.per_title{ font-size:14px; display:block; width:100%; padding:2px 0; border-bottom:dashed 1px #CCCCCC; font-weight:bold;}\n.per{ display:block; width:95%; padding:5px 2%; background:#F7F7F7; border: none; font-size:14px; color:#666;  font-weight:bold; float:left;}\n.right_btn{ float:right; color:#069 !important; font-size:12px; font-weight:normal;}\n\n\n/* shop*/\n.shop_form{ width:100%; height:auto; overflow:hidden;}\n.information{ display:block; width:95%; padding:5px 2%; border:#F60 solid 1px; background:#FDEBC6; color:#F00; margin:5px 0 15px 0;font-size:14px; float:left; }\n.success{border:#9C0 solid 1px; background:#E7F4A8;}\n.shop_form div{ width:96%; padding:3px 2%; height: auto; float:left; overflow:hidden; margin-bottom:8px;}\n.shop_form label{ font-size:14px; color:#333; margin-right:10px; width:105px; display:block; float:left; }\n.shop_form input{ float:left; width:40%;}\n.shop_form input,.shop_form textarea { padding:3px; border:#999 solid 1px; font-size:14px; color:#666;border-radius:3px;} \n.shop_form textarea{ width:96%; padding:1.5%; margin:3px 0;}\n.shop_form div em{ font-size:12px; color:#999;line-height:18px; margin-left:10px;}\n.shop_form div a{ margin-right:10px;}\n.shop_form  #wp-submit{ padding:5px 25px; background:#F60; color:#FFF; cursor:pointer;float:right;} \n.shop_form  .wp-submit{ padding:5px 45px; background:#F60; color:#FFF; cursor:pointer; border:solid #FFF 1px; margin:5px 0 0 112px;} \n.shop_form  #wp-submit:hover,.shop_form  .wp-submit:hover{ background: #F30; }\n#rememberme{ width:17px; margin:5px 0 0 112px;}\n.captcha{margin:5px 0 0 112px; }\n.captcha img{ width:180px; height:auto; border: solid #CCC 1px;}\n#original{ font-size:14px; color:#666; text-decoration:line-through; margin:0 10px 0 0}\n#price_now,#price_all{ font-size:14px; color:#F00;}\n#shop_price{ width:100%; margin:10px 0;}\n#shop_price_all{ width:100%; margin:0 0 10px 0;}\n.shop_comment{ width:100%; height:auto; margin:20px 0;}\n.shop_comment .shop_comment_title{ width:100%; margin:10px 0; font-size:16px; color:#333; border-bottom:dashed 1px #CCCCCC; display:block;}\n.shop_comment li{ width:100%; height:auto; margin-bottom:5px; border-bottom:#E6E6E6 1px dotted;}\n.shop_comment li p{ width:100%; height:auto; display: block; overflow:hidden;font-size:12px; color:#666;}\n.shop_comment li p b{ font-size:14px; color:#333; float:left;}\n.shop_comment li p span{ font-size:12px; color:#999; float:right;}\n.btn{ cursor:pointer;}\n.close_order{ float: right; line-height:21px; color:#999; font-weight:normal; cursor:pointer; font-size:12px;}\n.de_product p .original_price{ color:#333; text-decoration:line-through; text-decoration:line-through; float:none}\n.de_product p .price{ color:#F60; font-size:18px;}\n.shop_form{ width:100%; height:auto; overflow:hidden; padding-top:20px; }\n.hidden_block{ display:none;}\n.information{ display:block; width:95%; padding:5px 2%; border:#F60 solid 1px; background:#FDEBC6; color:#F00; margin:5px 0 15px 0;font-size:14px; float:left; }\n.information a{ font-size:14px; color:#069; margin:0 3px; text-decoration:none;}\n.success{border:#9C0 solid 1px; background:#E7F4A8;}\n.enter_cs{ display:block; width:628px; padding:0;  margin:15px 0; border:#ccc 1px solid; overflow:hidden;background:#FFF;}\n.enter_cs a{font-size:14px;padding:5px 15px; float:left; cursor:pointer; color: #333; border-right:solid #ccc 1px; }\n.enter_cs a.cutyes{ background:#999; color:#FFF; font-weight:bold;}\n.tag_pro b{display:block; float:left; font-size:14px;}\n#shop_login{ float:right; height:34px; line-height:34px;}\n#shop_login a{ font-size:12px; color:#FFF; display:block; margin-right:10px; float:left;}\n#shop_login a:hover{ text-decoration:underline;}\na.btn_login{ display:block; padding:0 18px; background:#a8302f; color:#FFF; height:20px; line-height:20px; margin-top:5px;border-radius:5px; border:#FFF solid 1px; }\na.btn_login:hover{ color:#FFF; background:#000; color:#CCC; text-decoration: none !important;}\n.original_price{ color:#CCC; font-size:12px; float:left; display:block; text-decoration:line-through; margin-right:10px; line-height:20px; padding:1px 3px;}\n#price{ color:#FFF;  margin-left:0; padding:1px 3px; background:#eb302f; font-size:14px;border-radius:3px; float:left;font-weight:bold; font-style:normal;}\n#price_l{ color:#fff; float:left; margin:0 0 3px 0;padding:1px 5px; background:#333; font-size:14px;border-radius:3px; font-size:14px; }\n.shop_p  .original_price{ color:#666; font-size:12px; width:100px; margin:0;}\n.shop_p {margin:3px 0 3px 0; }\n.prices_p,.case_pic .time{ width:100%; display:block; overflow:hidden; padding:0 0 10px 10px;}\n#white{ color:#CCC; margin-right:5px;}\n#full_prodcts_single .de_product{ margin:10px 0; max-height:245px;}\n#black{ color:#333; margin-left:10px;}\n.case_pic ul li p{ height:55px;}\n#big #price,#big .original_price{  float:none; display:inline;}\n.ppre{ margin:5px 0;}\n\n\n/*2015-3-19 shop_community*/\n\n#cat_bbs_list{ width:99%;  overflow:hidden; float:left; background:#FFF; border:#CCC solid 1px;}\n#cat_bbs_list_title{ width:96%;padding:15px 2% 8px 2%;height:auto; background:#fff;border-bottom:#CCC solid 1px; overflow:hidden;}\n#cat_bbs_list_title span{ display:block; float:left;}\n#cat_bbs_list .btn_loop{ width:96%;padding:10px 2%; float:left;border-bottom:#CCC solid 1px; overflow:hidden; background:#F3F3F3}\n#cat_bbs_list .btn_loop a{ font-size:14px;  margin-right:15px; color:#333; text-decoration:none; background-image:url(../images/bbs_sp.png); background-repeat: no-repeat; padding-left:25px; line-height:30px;}\n#cat_bbs_list .btn_loop a:hover{ text-decoration:underline;}\n#cat_bbs_list .btn_loop a#all{ background-position:-2px -8px; }\n#cat_bbs_list .btn_loop a#jinghua{ background-position:-2px -44px; } \n#cat_bbs_list .btn_loop a#huitie{ background-position:-2px -84px; }\n\n#cat_bbs_list_title h1,#post_bbs_page_from_title h1{ font-size:16px; color:#666;  margin:5px 0; float:left; margin-right:10px;}\n#cat_bbs_list_title b{ font-size:12px; font-weight:normal; color:#666; float:left; line-height:30px; margin-left:10px;} \n#cat_bbs_list_title .post_btn,#post_bbs_page_from_title .post_btn{ float:right; display:block; padding:3px 5px; background:#3998C6; color:#FFF; font-size:14px;border-radius:5px; }\n#cat_bbs_list_title .post_btn:hover{ background:#333;}\n#cat_bbs_list ul li{ width:96%;padding:0 2%;height:auto; display:block; float:left; border-bottom:#CCC dashed 1px;}\n#cat_bbs_list ul li:hover{ background:#F3F3F3;}\n#author_bbs_avatar { width:80px; overflow:hidden; float:left; min-width:50px; text-align:center; padding-bottom:15px; padding-top:15px; position: relative;}\n#author_bbs_avatar #louzhu{ width:36px; height:36px; position:absolute; top:0; right:0; background: 0 -128px url(../images/bbs_sp.png);}\n#author_bbs_avatar #huifu{ width:36px; height:36px; position:absolute; top:0; right:0; background: 0 -183px url(../images/bbs_sp.png);}\n#author_bbs_avatar a{ display:inline-block; padding:3px; border:#999 1px solid; background:#FFF; overflow:hidden; font-size:0;border-radius:100%; }\n#author_bbs_avatar b{ font-size:14px; color:#999;}\n#author_bbs_avatar a img{ width:100%; height:auto;border-radius:100%;}\n#cat_bbs_list ul{ width:100%; padding:0; margin:0; overflow:hidden; display:block;}\n#cat_bbs_list ul li .left_bbs_single{  display:block; overflow:hidden; margin-left:100px;padding:15px 0;}\n#cat_bbs_list ul li #left_bbs_single{ margin-left:0; padding-left:20px; background:#FAFAFA; padding-right:10px; padding-bottom:120px; position:relative; }\n#cat_bbs_list ul li .left_bbs_single .bbs_a_title{ font-size:16px; color:#666; font-weight:bold; text-decoration:none;}\n#cat_bbs_list ul li .left_bbs_single .bbs_a_title:hover{ text-decoration:underline;}\n#cat_bbs_list ul li .left_bbs_single div,#cat_bbs_list ul li .author_bbs_avatar div{ width:100%; overflow:hidden; margin:5px 0;}\n#cat_bbs_list ul li .left_bbs_single div b{ display:block; padding:3px 5px; background:#A5A5A5; color:#FFF; font-size:12px; margin-right:10px; float:left;border-radius:5px; font-weight:normal;}\n#cat_bbs_list ul li #author_bbs_avatar div b{ font-size:12px; font-weight:normal; display:inline-block; margin-bottom:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.jinghua{ padding:3px 5px; background:#7ECDD3; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.bbs_over{ padding:3px 5px; background:#70AB1F; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li #author_bbs_avatar div b.admin_answer{ padding:3px 5px; background:#F60; color:#FFF; font-size:12px;border-radius:5px;}\n#cat_bbs_list ul li span div b.zhiding{ background:#FF7171;}\n#cat_bbs_list ul li span div b.jinghua{ background:#7ECDD3}\n#cat_bbs_list ul li span div b.bbs_over{ background:#70AB1F}\n#cat_bbs_list ul li span p{ margin-top:10px;text-indent:0 !important;word-break:break-all; /*支持IE，chrome，FF不支持*/\n　word-wrap:break-word;/*支持IE，chrome，FF*/}\n#cat_bbs_list ul li span a#zd_shop_bbs{ color:#F00;}\n.nav_bbs{ width:100%; height:auto; padding:10px 0; overflow:hidden;}\n.nav_bbs a{ display:block; padding:3px 8px; border:solid 1px #CCCCCC; margin-left:5px; float:left; color:#666; text-decoration:none;}\n.nav_bbs a:hover,.nav_bbs a.current{ background:#666; color:#FFF;}\n\n.post_bbs_page_from{ width:96%;padding:10px 1.5%; overflow:hidden; }\n.post_bbs_page_from #tougao_content_ifr{border:solid 1px #CCCCCC;}\n#post_bbs_page_from_title{width:96%;padding:10px 2%; overflow:hidden;background:#F3F3F3; margin-bottom:20px;}\n.post_bbs_page_from .cat{ width:100%; height:auto; padding:5px 0; margin-bottom:15px;}\n.post_bbs_page_from .cat label { font-size:14px; color:#666;}\n.post_bbs_page_from input#tougao_title,.post_bbs_page_from input#CAPTCHA{ padding:8px; border:solid 1px #CCCCCC; width:60%;}\n.error{ display:block; padding:5px; background:#FFD9D9; border:#F00; color:#F00; font-size:14px; text-indent:0 !important;}\n.post_bbs_page_from .submit{ float: left; display:block; padding:5px 60px; border: none; cursor:pointer; background:#3998C6; color:#FFF; font-size:16px;border-radius:5px; margin-right:20px;}\n.post_bbs_page_from  .reset{ float: left; display:block; padding:5px 60px; border: none; cursor:pointer; background:#ccc; color:#FFF; font-size:16px;border-radius:5px;}\n.yzmmmm{ display:block; width:100%;}\n.tijiao{ padding:10px 0 20px 50px; overflow:hidden;}\n.wp-editor-tabs{ display:none !important;}\n.single_bbs_avatar{ padding-right:10px; }\n#cat_bbs_list ul li#single_bbs_li{ padding:0 0 0 2% !important; width:98%;} \n#bbs_enter p,#bbs_enter a, #bbs_enter b{ font-size:14px;}\n#cat_bbs_list ul li  span .datetime{ position:absolute; display:block; right:10px; bottom:15px; width:200px;}\n#cat_bbs_list ul li  span .datetime a{ margin-left:10px;}\n.comment_ector{ width:100%; overflow:hidden; position:relative; padding-top:50px;}\n.comment_ector .tutle{position:absolute; left:10px; top:0; width:100%; height:60px;}\n.comment_ector .avatar_comment{ width:60px; height:60px;display:block; padding:3px; border:#999 1px solid; background:#FFF; overflow:hidden; font-size:0;border-radius:100%; float:left; margin-right:10px;}\n.comment_ector .avatar_comment img{width:60px; height:60px;border-radius:100%; }\n.comment_ector span{ width: auto; display: block; float:right; height:32px; padding:15px 15px 0 0}\n#comment_bbs{ width:98%; padding-top:30px !important; border:solid 1px #CCCCCC;}\n.comment_ector b{ font-size:14px; color:#999; line-height:51px;}\n#commentform #submit{ margin:0 !important; }\n.per b,.per a{ line-height:60px;}\n.per_title{ display:block; overflow:hidden; border-bottom:solid 1px #CCCCCC; padding:0;}\n.per_title a{ display:block; padding:5px 15px; background:#CCC; float:left; color:#fff; margin-right:1px; cursor:pointer; text-decoration: none;}\n.per img{ float:left; margin-right:20px; width:60px; height:60px; border-radius:60px; border:solid 4px #FFFFFF;}\n\n.wptdb_right{position: absolute;right: 5px;z-index: 99999999999;}\n/*#btnlogin{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #f80; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #f80; background: -webkit-gradient(linear, left top, left bottom, from(#ffbb33),to(#ff8800));}*/\n#btnlogin{ width: 78px; height: 43px; background:url(\"../images/index/login_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnlogin:hover{ background:url(\"../images/index/login_as.png\");}\n/*#btnregister{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #0095d8; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #0095d8; }*/\n#btnregister{ width: 173px; height: 43px; background:url(\"../images/index/register_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnregister:hover{ background:url(\"../images/index/register_as.png\");}\n/*#btnlogout{ font-size: 15px;padding: 4px;margin-right:10px;text-decoration: none;float: left; text-align: center; border: 1px solid #7d1110; border-radius: 4px; box-shadow: 0 1px 1px rgba(255,255,255,1), inset 0 1px 1px rgba(255,255,255,.6); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.3);background: #eb302f; }*/\n#btnlogout{ width: 78px; height: 43px; background:url(\"../images/index/logout_a.png\"); cursor: pointer; margin-top: -6px;}\n#btnlogout:hover{ background:url(\"../images/index/logout_as.png\");}"
  },
  {
    "path": "target/mongo/style/eu/index/thickbox.css",
    "content": "#TB_overlay {\n\tbackground: #000;\n\topacity: 0.7;\n\tfilter: alpha(opacity=70);\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 100050; /* Above DFW. */\n}\n\n#TB_window {\n\tposition: fixed;\n\tbackground-color: #fff;\n\tz-index: 100050; /* Above DFW. */\n\tvisibility: hidden;\n\ttext-align: left;\n\ttop: 50%;\n\tleft: 50%;\n\t-webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 );\n\tbox-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 );\n}\n\n#TB_window img#TB_Image {\n\tdisplay: block;\n\tmargin: 15px 0 0 15px;\n\tborder-right: 1px solid #ccc;\n\tborder-bottom: 1px solid #ccc;\n\tborder-top: 1px solid #666;\n\tborder-left: 1px solid #666;\n}\n\n#TB_caption{\n\theight: 25px;\n\tpadding: 7px 30px 10px 25px;\n\tfloat: left;\n}\n\n#TB_closeWindow {\n\theight: 25px;\n\tpadding: 11px 25px 10px 0;\n\tfloat: right;\n}\n\n#TB_closeWindowButton {\n\tposition: absolute;\n\tleft: auto;\n\tright: 0;\n\twidth: 29px;\n\theight: 29px;\n\tborder: 0;\n\tpadding: 0;\n\tbackground: none;\n\tcursor: pointer;\n\toutline: none;\n\t-webkit-transition: color .1s ease-in-out, background .1s ease-in-out;\n\ttransition: color .1s ease-in-out, background .1s ease-in-out;\n}\n\n#TB_ajaxWindowTitle {\n\tfloat: left;\n\tfont-weight: 600;\n\tline-height: 29px;\n\toverflow: hidden;\n\tpadding: 0 29px 0 10px;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\twidth: calc( 100% - 39px );\n}\n\n#TB_title {\n\tbackground: #fcfcfc;\n\tborder-bottom: 1px solid #ddd;\n\theight: 29px;\n}\n\n#TB_ajaxContent {\n\tclear: both;\n\tpadding: 2px 15px 15px 15px;\n\toverflow: auto;\n\ttext-align: left;\n\tline-height: 1.4em;\n}\n\n#TB_ajaxContent.TB_modal {\n\tpadding: 15px;\n}\n\n#TB_ajaxContent p {\n\tpadding: 5px 0px 5px 0px;\n}\n\n#TB_load {\n\tposition: fixed;\n\tdisplay: none;\n\tz-index: 103;\n\ttop: 50%;\n\tleft: 50%;\n\tbackground-color: #E8E8E8;\n\tborder: 1px solid #555;\n\tmargin: -45px 0 0 -125px;\n\tpadding: 40px 15px 15px;\n}\n\n#TB_HideSelect {\n\tz-index: 99;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tbackground-color: #fff;\n\tborder: none;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\theight: 100%;\n\twidth: 100%;\n}\n\n#TB_iframeContent {\n\tclear: both;\n\tborder: none;\n}\n\n.tb-close-icon {\n\tdisplay: block;\n\tcolor: #666;\n\ttext-align: center;\n\tline-height: 29px;\n\twidth: 29px;\n\theight: 29px;\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n.tb-close-icon:before {\n\tcontent: \"\\f158\";\n\tfont: normal 20px/29px dashicons;\n\tspeak: none;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n#TB_closeWindowButton:hover .tb-close-icon,\n#TB_closeWindowButton:focus .tb-close-icon {\n\tcolor: #00a0d2;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/css/style-default.css",
    "content": "@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n/*!\n * QuickAdmin v1.3.1\n *\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\nbody {\n  font-family: 'Open Sans', sans-serif;\n  background: #f0f0f0;\n  font-size: 13px;\n  color: #7c7c7c;\n  position: relative;\n}\n*,\na:focus {\n  outline: none !important;\n}\nbutton:focus {\n  outline: none !important;\n}\nbutton::-moz-focus-inner {\n  border: 0;\n}\na:hover {\n  color: #333333;\n}\na {\n  color: #4a8bc2;\n  outline: 0 !important;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: 'Open Sans', sans-serif;\n  margin: 0 0 5px;\n  font-weight: 400;\n  text-shadow: 0 1px 0 #ffffff;\n  color: #4d4d4d;\n}\nh1.glyphicons,\nh2.glyphicons,\nh3.glyphicons,\nh4.glyphicons,\nh5.glyphicons,\nh6.glyphicons {\n  color: #7c7c7c;\n}\nh1 span,\nh2 span,\nh3 span,\nh4 span,\nh5 span,\nh6 span {\n  color: #afafaf;\n  font-weight: 400;\n  padding: 0 5px;\n  font-style: italic;\n}\nh1 span,\nh2 span,\nh3 span {\n  font-size: 50%;\n  text-transform: none;\n  padding: 0;\n  position: relative;\n  top: -3px;\n  font-weight: 400;\n}\nh1 {\n  line-height: 40px;\n}\nh2,\nh3 {\n  line-height: 30px;\n}\nh2 {\n  font-size: 26px;\n}\n.heading-buttons h1,\n.heading-buttons h2,\n.heading-buttons h3,\n.heading-buttons h4,\n.heading-buttons h5,\n.heading-buttons h6 {\n  display: inline-block;\n  margin: 0 15px;\n}\n.heading-buttons h1.glyphicons,\n.heading-buttons h2.glyphicons,\n.heading-buttons h3.glyphicons,\n.heading-buttons h4.glyphicons,\n.heading-buttons h5.glyphicons,\n.heading-buttons h6.glyphicons {\n  display: inline-block;\n}\n.heading-buttons .buttons {\n  margin-top: 3px;\n  margin-right: 15px;\n  text-align: right;\n}\n.heading-buttons .btn {\n  margin-right: 15px;\n}\n.heading-buttons .btn:last-child {\n  margin-right: 0;\n}\np {\n  margin: 0 0 10px;\n  line-height: normal;\n}\n.lead {\n  margin: 0 0 10px;\n}\n.glyphicons {\n  color: #7c7c7c;\n}\nul.icons {\n  text-align: left;\n  padding: 0;\n}\nul.icons li {\n  display: block;\n  padding: 0 0 0 25px;\n  line-height: 22px;\n  color: #7c7c7c;\n}\nul.icons li i:before {\n  color: #7c7c7c;\n  font-size: 17px;\n  left: 0;\n  top: 4px;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: 'Open Sans', sans-serif;\n}\npre.prettyprint {\n  word-break: normal;\n  word-wrap: normal;\n  white-space: pre;\n  background-color: #f8f8f8;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f8f8f8), color-stop(50%, #eeeeee));\n  background-image: -webkit-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -moz-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -o-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  -moz-background-size: 38px 38px;\n  background-size: 38px 38px;\n  border: 1px solid #ebebeb;\n  display: block;\n  line-height: 19px;\n  margin-bottom: 15px;\n  overflow: visible;\n  overflow-y: hidden;\n  padding: 0 0 0 4px;\n}\npre.prettyprint .glyphicons {\n  padding: 0 0 0 20px;\n}\npre.prettyprint .glyphicons i:before {\n  font-size: 17px;\n  top: 1px;\n}\n#content pre.prettyprint,\n#content pre.prettyprint span {\n  color: #7c7c7c;\n}\nblockquote {\n  margin: 0;\n  padding: 0 0 0 5px;\n}\nblockquote,\nblockquote.pull-right {\n  border: none;\n}\nblockquote p {\n  font-weight: 400;\n  font-size: 13px;\n  margin: 0 0 10px;\n}\nblockquote small {\n  color: #4a8bc2;\n}\n.separator {\n  padding: 15px 0;\n  display: block;\n}\n.separator.bottom {\n  padding: 0 0 15px;\n}\n.separator.top {\n  padding: 15px 0 0;\n}\nhr {\n  border-top-color: #dbdbdb;\n  border-bottom: none;\n  margin: 15px 0;\n}\nhr.separator {\n  padding: 0;\n}\nhr.separator.top {\n  margin: 15px 0 0;\n}\nhr.separator.bottom {\n  margin: 0 0 15px;\n}\n@media print {\n  html,\n  body {\n    height: auto !important;\n    min-height: none !important;\n  }\n  @page  {\n    size: auto;\n    margin: 10mm 10mm 10mm 10mm;\n  }\n  #content {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  .breadcrumb,\n  #tlyPageGuideWrapper,\n  .filter-bar {\n    display: none !important;\n  }\n  .table td,\n  .table th {\n    vertical-align: middle;\n  }\n  .table th {\n    padding: 3px;\n    text-align: center;\n  }\n  .table img {\n    float: left;\n  }\n}\n.map_canvas img {\n  max-width: none !important;\n}\n.streetview {\n  width: 100%;\n  height: 300px;\n}\n.ui-dialog-vevent .dtstart {\n  display: none;\n}\n.ui-dialog-vevent .website {\n  margin: 0 0 1em;\n}\n#fontawesome [class^=\"icon-\"],\n#fontawesome [class*=\" icon-\"] {\n  font-size: 24px;\n  line-height: 24px;\n  vertical-align: middle;\n  margin: 0 5px 0 0;\n}\n#fontawesome a {\n  line-height: 40px;\n}\n.innerLR {\n  padding: 0 15px;\n  position: relative;\n}\n.innerTB {\n  padding: 15px 0;\n  position: relative;\n}\n.innerAll {\n  padding: 15px;\n  position: relative;\n}\n.innerL {\n  padding-left: 15px;\n  position: relative;\n}\n.innerR {\n  padding-right: 15px;\n  position: relative;\n}\n.innerT {\n  padding-top: 15px;\n  position: relative;\n}\n.innerB {\n  padding-bottom: 15px;\n  position: relative;\n}\n.center {\n  text-align: center !important;\n}\n.margin-bottom-none {\n  margin-bottom: 0 !important;\n}\n.margin-none {\n  margin: 0 !important;\n}\n.padding-none {\n  padding: 0 !important;\n}\n.border-none {\n  border: none !important;\n}\n.box-shadow-none {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.padding-none-TB {\n  padding-bottom: 0 !important;\n  padding-top: 0 !important;\n}\n.relativeWrap {\n  position: relative;\n}\n.text-primary {\n  color: #4a8bc2;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-faded {\n  color: #d7d7d7 !important;\n}\n.text-large {\n  font-size: 35px;\n  line-height: 40px;\n}\n.text-xlarge {\n  font-size: 50px;\n  line-height: 50px;\n}\n.text-xxlarge {\n  font-size: 70px;\n  line-height: 70px;\n}\n.text-underline {\n  text-decoration: underline;\n}\n.text-right {\n  text-align: right !important;\n}\n.containerBg {\n  background: #f0f0f0;\n}\n.whiteBg {\n  background: #fff;\n}\n.row-merge {\n  position: relative;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-left: 0;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 1px;\n  background: #dbdbdb;\n  content: \"\";\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span3\"] {\n  width: 25.26315789473684%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span4\"] {\n  width: 33.68421052631579%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span5\"] {\n  width: 42.10526315789473%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span6\"] {\n  width: 50.74626865671642%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span8\"] {\n  width: 67.66169154228855%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span9\"] {\n  width: 75.78947368421052%;\n}\n.row-merge.border-top,\n.row-merge ~ .row-merge {\n  border-top: 1px solid #dbdbdb;\n}\n.row-merge.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n#wrapper {\n  overflow: hidden;\n  overflow-y: auto;\n  float: left;\n  width: 100%;\n}\nbody > .container-fluid {\n  padding: 0;\n  background: #f0f0f0;\n}\nbody > .container-fluid.fixed {\n  margin: 30px auto 30px;\n  border-left: 1px solid #d8d8d8;\n  border-right: 1px solid #d8d8d8;\n  width: 94%;\n}\nbody > .container-fluid.documentation {\n  background: #fff;\n}\nbody > .container-fluid.fixed {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nbody > .container-fluid.fixed #wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nbody > .container-fluid.fixed #content {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nbody > .container-fluid.fixed #footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nbody > .container-fluid.fixed .navbar.main,\nbody > .container-fluid.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n#content {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  min-width: 320px;\n  min-height: 500px;\n  padding: 0 0 15px;\n  background: #f0f0f0;\n}\n#content > .menubar {\n  border-left: none;\n  border-right: none;\n}\n#content > p {\n  padding: 0 15px 5px;\n}\n#content > h1,\n#content > h2,\n#content > h3,\n#content > h4,\n#content > h5,\n#content > h6 {\n  margin: 18px 15px 15px;\n}\n#content > .filter-bar {\n  border-right: none;\n  border-left: none;\n}\n#content .heading-buttons {\n  margin-top: 15px;\n}\n#content .heading-arrow {\n  text-transform: uppercase;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 15px;\n  padding: 0 15px;\n  font-size: 11pt;\n  height: 35px;\n  line-height: 30px;\n  position: relative;\n}\n#content .heading-arrow:after {\n  content: \"\";\n  display: inline-block;\n  width: 0;\n  height: 0;\n  border-bottom: 8px solid #dbdbdb;\n  border-right: 8px solid transparent;\n  border-left: 8px solid transparent;\n  position: absolute;\n  bottom: 0;\n  left: 15px;\n}\n#content .heading-arrow.glyphicons {\n  padding: 0 10px 0 40px;\n}\n#content .heading-arrow.glyphicons i:before {\n  font-size: 17px;\n  left: 15px;\n}\n#content .heading-arrow.margin-bottom-none {\n  margin-bottom: 0;\n}\n#content > .widget {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget .widget-head,\n#content > .widget .widget-body {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget:last-child {\n  margin: 0;\n}\n#content > .table {\n  border-left: none;\n  border-right: none;\n}\n#content > .table tr td:first-child {\n  border-left: none;\n}\n#footer {\n  font-weight: 600;\n  position: relative;\n  overflow: hidden;\n  z-index: 10000;\n  border-bottom: 1px solid #dbdbdb;\n  border-top: 1px solid #dbdbdb;\n}\n#footer a:not(.btn) {\n  color: #7c7c7c;\n}\n#footer .copy {\n  background: #e5e5e5;\n  text-align: center;\n  padding: 5px 10px;\n  font-size: 12px;\n  height: 20px;\n}\n#footer .copy a {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nhtml.sidebar #content {\n  margin: 0 0 0 65px;\n}\nhtml.sidebar .menu-right #content {\n  margin: 0 65px 0 0;\n}\n@media (min-width: 768px) {\n  html.sticky-sidebar.sidebar:not(.fixed) body {\n    overflow: hidden;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed),\n  html.sticky-sidebar.sidebar:not(.fixed) body,\n  html.sticky-sidebar.sidebar:not(.fixed) body > .container-fluid,\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    min-height: 100%;\n    height: 100%;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    margin-bottom: -32px;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #menu {\n    position: fixed;\n    bottom: 0;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #content {\n    padding-bottom: 47px;\n  }\n}\n@media (min-width: 768px) {\n  html.sticky-top:not(.fixed) #content {\n    padding-top: 50px;\n  }\n  html.sticky-top:not(.fixed) .navbar.main {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 10000;\n  }\n  html.sticky-top:not(.fixed).sidebar .navbar.main {\n    left: 65px;\n  }\n  html.sticky-top:not(.fixed).sidebar .menu-right .navbar.main {\n    left: 0;\n    right: 65px;\n  }\n  html.sticky-top:not(.fixed) .menu-hidden .navbar.main {\n    left: 0 !important;\n    right: 0 !important;\n  }\n  html.sticky-top:not(.fixed).front #content {\n    padding-top: 100px;\n    margin: 0 !important;\n  }\n}\nhtml.fixed,\nhtml.fixed body {\n  min-height: auto;\n  height: auto;\n  overflow: visible;\n}\nbody > .container-fluid.fixed {\n  min-height: auto;\n  height: auto;\n}\nbody > .container-fluid.fixed #wrapper {\n  position: relative;\n  overflow: hidden;\n  min-height: auto;\n  height: auto;\n  margin: 0;\n}\nbody > .container-fluid.fixed #menu {\n  position: absolute;\n  height: 100%;\n  min-height: 100%;\n  bottom: auto;\n}\n.ui-resizable-helper.menu {\n  border: 1px dotted gray;\n  border-left: none;\n  background: rgba(0, 0, 0, 0.3);\n}\n.ui-resizable-handle {\n  width: 3px;\n  border-style: solid;\n  border-width: 0;\n  border-color: rgba(0, 0, 0, 0.4);\n}\n.dropdown-menu {\n  z-index: 100000;\n}\n#menu {\n  width: 65px;\n  float: left;\n  position: absolute;\n  left: 0;\n  top: 0;\n  overflow: hidden;\n  height: 100%;\n  min-height: 100%;\n  background: #1f2123;\n  font-size: 11px;\n}\n#menu .appbrand {\n  font-weight: 700;\n  display: block;\n  text-decoration: none;\n  line-height: 10px;\n  padding: 10px;\n  text-align: center;\n  color: #ffffff;\n  border-bottom: 1px solid #161718;\n}\n#menu .profile {\n  display: block;\n  padding: 10px 0;\n  border-bottom: 1px solid #161718;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .profile a {\n  border: 1px solid #161718;\n  display: inline-block;\n  width: 36px;\n  height: 36px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a:hover {\n  border-color: #000000;\n}\n#menu .slim-scroll > ul,\n#menu > ul {\n  list-style: none;\n  float: left;\n  margin: 0;\n  padding: 0;\n  display: block;\n  width: 100%;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .slim-scroll > ul > li,\n#menu > ul > li {\n  display: block;\n  border-bottom: 1px solid #161718;\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  position: relative;\n  overflow: hidden;\n  padding: 0;\n  margin: 0;\n}\n#menu .slim-scroll > ul > li a,\n#menu > ul > li a {\n  display: block;\n  width: auto;\n  padding: 10px;\n  margin: 0;\n  line-height: 10px;\n  text-decoration: none;\n  font-weight: 600;\n  color: #4c4d4f;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li a.glyphicons,\n#menu > ul > li a.glyphicons {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i,\n#menu > ul > li a.glyphicons i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i:before,\n#menu > ul > li a.glyphicons i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.glyphicons > a,\n#menu > ul > li.glyphicons > a {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i,\n#menu > ul > li.glyphicons > a i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i:before,\n#menu > ul > li.glyphicons > a i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.active,\n#menu > ul > li.active {\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  border-top: 1px solid #2a2c2e;\n  position: relative;\n  overflow: visible;\n}\n#menu .slim-scroll > ul > li.active > a,\n#menu > ul > li.active > a {\n  background: #161718;\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active.glyphicons a i:before,\n#menu > ul > li.active.glyphicons a i:before {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active:first-child,\n#menu > ul > li.active:first-child {\n  border-top: none;\n}\n#menu .slim-scroll > ul > li:hover > a,\n#menu > ul > li:hover > a {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li:hover.glyphicons a i:before,\n#menu > ul > li:hover.glyphicons a i:before {\n  color: #737474;\n}\n#menu.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.menu-left .ui-resizable-e {\n  background: rgba(255, 255, 255, 0.2);\n  right: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\n.menu-left .ui-resizable-e:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right .ui-resizable-w {\n  background: rgba(255, 255, 255, 0.2);\n  left: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\nbody .menu-right .ui-resizable-w:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right #menu {\n  left: auto;\n  right: 0;\n  border-right: none;\n  border-left: 1px solid #d8d8d8;\n}\nbody .menu-right.fixed #content {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\nbody .menu-right.fixed .navbar.main,\nbody .menu-right.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.menu-hidden #menu {\n  display: none;\n}\n.menu-hidden #content {\n  margin: 0 !important;\n}\n.menu-hidden .navbar.main .btn-navbar {\n  left: 0;\n  border-left: none;\n}\n.menu-hidden .navbar.main .topnav.tn1 {\n  left: 37px;\n}\n.menu-hidden.login .navbar.main .appbrand,\n.menu-hidden.documentation .navbar.main .appbrand {\n  display: inline-block;\n  border: none;\n}\n.menu-hidden.login .navbar.main .appbrand span,\n.menu-hidden.documentation .navbar.main .appbrand span {\n  border: none;\n}\n.navbar.main {\n  height: 49px;\n  background-color: #4a8bc2;\n  border-bottom: 1px solid #346d9d;\n  margin: 0;\n}\n.navbar.main .btn-navbar {\n  height: 49px;\n  line-height: 49px;\n  padding: 0 10px;\n  margin: 0;\n  float: left;\n  display: block;\n  border: none;\n  background: #4a8bc2;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .btn-navbar .icon-bar {\n  background: #ffffff;\n  box-shadow: 0 1px 0 #346d9d;\n}\n.navbar.main .btn-navbar:hover {\n  background: #4286bf;\n}\n.navbar.main .btn-navbar.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.navbar.main .topnav {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left {\n  border-left: none;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left > li:first-child {\n  border-left: none;\n}\n.navbar.main .topnav > li {\n  position: relative;\n  float: left;\n  height: 49px;\n  line-height: 49px;\n  display: block;\n  padding: 0 0 0 10px;\n}\n.navbar.main .topnav > li a {\n  cursor: pointer;\n}\n.navbar.main .topnav > li > a {\n  display: block;\n  color: #ffffff;\n  text-decoration: none;\n  padding: 1px 11px 0 9px;\n  height: 49px;\n  line-height: 50px;\n  /* &:hover { background: darken(@navbarBg, 2%); } */\n\n}\n.navbar.main .topnav > li > a > img {\n  margin: 0 0 3px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 11px 0 9px;\n}\n.navbar.main .topnav > li > a.glyphicons i {\n  padding: 0 10px 0 0;\n  display: block;\n  float: left;\n  width: 17px;\n  line-height: 49px;\n  height: 49px;\n}\n.navbar.main .topnav > li > a.glyphicons i:before {\n  color: #ffffff;\n  font-size: 17px;\n  position: relative;\n  width: 17px;\n  text-align: center;\n  line-height: 51px;\n  height: 49px;\n  left: auto;\n  right: auto;\n}\n.navbar.main .topnav > li > a.glyphicons.single-icon i {\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout i {\n  float: right;\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout span {\n  padding: 0 8px 0 0;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 8px;\n  height: 33px;\n  line-height: 33px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 8px;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a {\n  background: #346d9d;\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.active > a .caret,\n.navbar.main .topnav > li:hover > a .caret,\n.navbar.main .topnav > li.open > a .caret {\n  top: 2px;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i,\n.navbar.main .topnav > li:hover > a.glyphicons i,\n.navbar.main .topnav > li.open > a.glyphicons i {\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i:before,\n.navbar.main .topnav > li:hover > a.glyphicons i:before,\n.navbar.main .topnav > li.open > a.glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.glyphs ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: #346d9d;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  float: left;\n  display: block;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 1px 0 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  height: 22px;\n  line-height: 22px;\n  padding: 5px 10px;\n  display: block;\n  text-decoration: none;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i {\n  height: 22px;\n  line-height: 22px;\n  display: block;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n  position: relative;\n  left: auto;\n  top: auto;\n  display: block;\n  text-align: center;\n  font-size: 17px;\n  color: #538fc1;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover {\n  padding: 0;\n  background: #579ad2;\n  border-right: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons i:before,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons i:before {\n  color: #ffffff;\n}\n.navbar.main .topnav > li.glyphs ul li.active:first-child,\n.navbar.main .topnav > li.glyphs ul li:hover:first-child {\n  -webkit-border-radius: 5px 0 0 5px;\n  -moz-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n  border-right: none;\n  border-left: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child .glyphicons {\n  padding: 5px 11px 5px 9px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.search form {\n  margin: 0;\n  padding: 0;\n  background: #afcae2;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.search form input {\n  background: none;\n  border: none;\n  color: #628db3;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n  line-height: 32px;\n  width: 100px;\n  padding: 0 0 0 10px;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form button {\n  background: none;\n  border: none;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n}\n.navbar.main .topnav > li.search form button i:before {\n  display: block;\n  position: relative;\n  left: auto;\n  right: auto;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 5px;\n  font-size: 17px;\n  color: #346d9d;\n}\n.navbar.main .topnav > li.search form input,\n.navbar.main .topnav > li.search form button {\n  vertical-align: top;\n}\n.navbar.main .topnav > li.search,\n.navbar.main .topnav > li.glyphs {\n  margin-left: 10px;\n}\n.navbar.main .topnav > li.search + .glyphs {\n  margin-left: 0;\n}\n.navbar.main .topnav > li.glyphs + .search,\n.navbar.main .topnav > li.glyphs + .tooltip + .search {\n  margin-left: 0;\n}\n.navbar.main .topnav > li:last-child {\n  border-right: 1px solid #346d9d;\n  padding: 0 9px 0 10px;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  padding: 8px 9px;\n  box-shadow: -1px 0 0 0 #619aca;\n}\n.navbar.main .topnav > li:first-child {\n  border-left: 1px solid #619aca;\n}\n.navbar.main .topnav > li:last-child.open .dropdown-menu {\n  right: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu {\n  background: #363432;\n  border: none;\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  right: 0;\n  width: 180px;\n}\n.navbar.main .topnav > li.open .dropdown-menu.pull-left {\n  left: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li {\n  border-bottom: 1px solid #4a4947;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:last-child {\n  border-bottom: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > span {\n  border-top: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li > span {\n  height: 29px;\n  line-height: 29px;\n  padding: 0 10px;\n  display: block;\n  background: #363432;\n  color: #c8c8c8;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons i:before {\n  left: auto;\n  right: 10px;\n  top: 5px;\n  font-size: 17px;\n  color: #c4c4c4;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover {\n  background: #1c1a19;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active a {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li .btn {\n  margin: 3px 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > span {\n  background: rgba(0, 0, 0, 0.1);\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile a:hover {\n  color: #fff;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #272729;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #595959;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.account > .dropdown-menu {\n  width: 220px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.2);\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 11px solid transparent;\n  position: absolute;\n  display: block;\n  left: 7px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  top: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n  position: absolute;\n  display: block;\n  left: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  left: auto;\n  right: 7px;\n  margin: 0;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  right: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  margin-top: 13px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu.pull-right,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu.pull-right {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu {\n  background: #fff;\n  border: 1px solid #c8c8c8;\n  margin: 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span {\n  background: #fff;\n  color: #939494;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span i:before {\n  color: #cccccc;\n  font-size: 15px !important;\n  top: 7px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li.active > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li.active > a {\n  /*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\n  font-weight: 600;\n  color: #000;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile {\n  background: #fff;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile a:hover {\n  color: #7c7c7c;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #fdfdfd;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #ccc;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) {\n  padding: 10px 10px 10px 50px;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) i:before {\n  right: auto;\n  left: 10px;\n  top: 10px !important;\n  font-size: 30px !important;\n  color: #f2f2f2;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a {\n  background: rgba(74, 139, 194, 0.08);\n  color: #939494;\n  text-shadow: 0 1px 0 #fff;\n  border: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a i:before {\n  color: #4a8bc2;\n  left: 10px;\n  top: 10px;\n}\n.navbar.main .topnav > li.open.dd-flags .dropdown-menu img {\n  margin: -3px 4px 0 0;\n}\n.navbar.main .topnav .dropdown > a .caret {\n  border-top-color: #ffffff;\n  top: 16px;\n  position: relative;\n}\n.navbar.main .topnav .dropdown-menu {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav:last-of-type {\n  border-right: none;\n}\n.navbar.main .topnav:last-of-type li:last-child {\n  border: none;\n}\n.submenu-show {\n  display: block;\n  margin-top: -35px !important;\n  position: absolute;\n}\n.submenu-show.pull-left {\n  left: auto !important;\n  right: 100% !important;\n}\n.submenu-show.pull-right {\n  right: auto !important;\n  left: 100% !important;\n}\n.submenu-hide {\n  display: none !important;\n  position: relative;\n  top: auto;\n  float: left;\n}\n.filter-bar {\n  background: #e5e5e5;\n  margin: 0 auto 15px;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  line-height: 30px;\n  height: 40px;\n  padding: 0 10px;\n}\n.filter-bar.border-top-none {\n  border-top: none;\n}\n.filter-bar div {\n  padding: 5px 0;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar div div {\n  padding: 0;\n  margin: 0;\n}\n.filter-bar div div:not(.helper) {\n  margin: 0 15px 0 0;\n}\n.filter-bar div div input {\n  margin: 3px 0 0;\n}\n.filter-bar div div.input-append {\n  margin: 0;\n}\n.filter-bar div div.input-append .add-on {\n  padding: 1px 3px;\n  margin: 3px 0 0 -1px;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.filter-bar div div.input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\n.filter-bar div div.input-append button.add-on {\n  width: 24px;\n  height: 24px;\n}\n.filter-bar div div:last-child {\n  margin: 0;\n}\n.filter-bar div:not(.helper) {\n  float: left;\n}\n.filter-bar div.glyphicons {\n  padding: 0 0 0 35px;\n}\n.filter-bar div.glyphicons i:before {\n  top: 12px;\n  left: 9px;\n  font-size: 17px;\n  color: rgba(255, 255, 255, 0.8);\n}\n.filter-bar div.clearfix {\n  padding: 0;\n  clear: both;\n  float: none;\n  display: block;\n  height: 0;\n  margin: 0;\n}\n.filter-bar div.lbl {\n  padding: 0 10px 0 35px;\n  background: #4a8bc2;\n  height: 40px;\n  line-height: 40px;\n  margin-right: 10px;\n  color: #fff;\n}\n.filter-bar form {\n  margin: 0;\n}\n.filter-bar form input,\n.filter-bar form select {\n  margin: 0 5px 3px 0;\n  padding: 1px 5px;\n  color: #a7a7a7;\n}\n.filter-bar form select {\n  padding: 1px;\n  height: 23px;\n}\n.filter-bar form label {\n  float: left;\n  margin: 0 5px;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar.border-none {\n  border: none;\n}\n.filter-bar.dark {\n  background: #64625f;\n  color: #fff;\n}\n.filter-bar.dark div div.input-append .add-on {\n  background: #42403e;\n  color: #fff;\n  border-color: #42403e;\n}\n.filter-bar.dark div div.input-append .add-on i:before {\n  color: #767473;\n  text-shadow: none;\n}\n.filter-bar.dark form input:focus {\n  border-color: #42403e;\n}\n.filter-bar.dark form input,\n.filter-bar.dark form select {\n  border-color: #42403e;\n}\n.menubar {\n  height: 30px;\n  position: relative;\n  overflow: hidden;\n  border: 1px solid #dbdbdb;\n  background: #fafafa;\n  margin: 0;\n  font-size: 9pt;\n}\n.menubar ul {\n  margin: 0;\n  padding: 0 5px;\n  list-style: none;\n  height: 30px;\n}\n.menubar ul li {\n  float: left;\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  padding: 0 5px;\n}\n.menubar ul li.divider {\n  border-left: 1px solid #ebebeb;\n  width: 0px;\n  padding: 0;\n  margin: 0 8px;\n}\n.menubar ul li a {\n  color: #7c7c7c;\n  font-weight: 700;\n  font-size: 9pt;\n}\n.menubar.links {\n  border: none;\n  background: none;\n  height: 25px;\n  padding: 0 0 5px;\n}\n.menubar.links ul {\n  padding: 0;\n  height: 25px;\n}\n.menubar.links ul li {\n  height: 25px;\n  line-height: 25px;\n}\n.menubar.links ul li:first-child {\n  padding-left: 0;\n}\n.menubar.links.primary ul li a {\n  color: #4a8bc2;\n}\n.widget {\n  background: #ffffff;\n  margin: 0 auto 15px;\n  position: relative;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget .tab-content {\n  padding: 0;\n}\n.widget .widget-head {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  text-shadow: 0 1px 0 0 1px 0 #ffffff;\n  height: 35px;\n  line-height: 35px;\n  position: relative;\n  padding: 0 15px 0 0;\n  overflow: hidden;\n}\n.widget .widget-head.progress {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons,\n.widget .widget-head ul .glyphicons {\n  height: 30px;\n  width: 30px;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons i:before,\n.widget .widget-head ul .glyphicons i:before {\n  width: 30px;\n  height: 30px;\n  line-height: 23px;\n  text-align: center;\n  font-size: 16px;\n  color: rgba(255, 255, 255, 0.5);\n}\n.widget .widget-head .heading {\n  margin: 0;\n  color: #7c7c7c;\n  font-size: 14px;\n  height: 35px;\n  line-height: 35px;\n  padding: 0 15px;\n  float: left;\n}\n.widget .widget-head .heading.glyphicons {\n  width: auto;\n  display: block;\n  padding: 0 0 0 35px;\n}\n.widget .widget-head .heading.glyphicons i:before {\n  padding: 0;\n  margin: 0;\n  left: 0;\n  top: 0;\n  height: 35px;\n  line-height: 35px;\n  text-align: center;\n  width: 35px;\n  color: #7c7c7c;\n  font-size: 16px;\n  font-weight: normal;\n  text-shadow: none;\n}\n.widget .widget-head a {\n  text-shadow: none;\n}\n.widget .widget-head .dropdown-menu li > a:hover,\n.widget .widget-head .dropdown-menu li > a:focus,\n.widget .widget-head .dropdown-submenu:hover > a {\n  background-color: #4a8bc2;\n  background-image: -moz-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4a8bc2), to(#d24343));\n  background-image: -webkit-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -o-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: linear-gradient(to bottom, #4a8bc2, #d24343);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);\n}\n.widget .details {\n  font-size: 8pt;\n  color: #7c7c7c;\n}\n.widget .widget-body {\n  padding: 15px;\n}\n.widget .widget-body form {\n  margin: 0;\n}\n.widget .widget-body > pre:last-child,\n.widget .widget-body > p:last-child {\n  margin: 0;\n}\n.widget .widget-body.list {\n  color: #7c7c7c;\n  padding: 0;\n}\n.widget .widget-body.list .count {\n  font-size: 15pt;\n  font-weight: 400;\n}\n.widget .widget-body.list ul {\n  margin: 0;\n  list-style: none;\n}\n.widget .widget-body.list ul li {\n  padding: 0 10px;\n  height: 39px;\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  line-height: 39px;\n  text-align: left;\n  text-shadow: 0 1px 0 #ffffff;\n  clear: both;\n}\n.widget .widget-body.list ul li .badge {\n  position: absolute;\n  right: 8px;\n  top: 10px;\n}\n.widget .widget-body.list ul li:first-child {\n  border-top: none;\n}\n.widget .widget-body.list ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list ul li .count {\n  float: right;\n  color: #000000;\n}\n.widget .widget-body.list ul li .sparkline {\n  position: relative;\n  top: 5px;\n  margin-left: 5px;\n}\n.widget .widget-body.list ul li a {\n  color: #000000;\n  font-weight: bold;\n}\n.widget .widget-body.list.products li {\n  height: 60px;\n  line-height: 60px;\n}\n.widget .widget-body.list.products .img {\n  float: left;\n  display: inline-block;\n  width: 48px;\n  height: 44px;\n  line-height: 44px;\n  color: #fff;\n  text-align: center;\n  background: #272729;\n  margin: 8px 8px 0 0;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  text-shadow: none;\n  cursor: pointer;\n  font-size: 10pt;\n  font-weight: 600;\n}\n.widget .widget-body.list.products .title {\n  line-height: normal;\n  display: inline-block;\n  padding: 13px 0 0;\n  text-transform: uppercase;\n}\n.widget .widget-body.list.products .title strong {\n  font-family: \"Open Sans\", sans-serif;\n  text-transform: none;\n}\n.widget .widget-body.list.fluid ul li {\n  height: auto;\n  line-height: normal;\n  padding: 10px;\n}\n.widget .widget-body.list.list-2 ul li {\n  border-bottom: 1px solid #d8d9da;\n  border-top: none;\n  background: #f8f8f8;\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #dddddd;\n  background: #fff;\n}\n.widget .widget-body.list.list-2 ul li.active i:before {\n  font-weight: normal;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: none;\n}\n.widget .widget-body.list.list-2 ul li.active a {\n  color: #4a8bc2;\n}\n.widget .widget-body.list.list-2 ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list.list-2 ul li a {\n  display: block;\n  color: #222;\n  padding: 0 0 0 30px;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  color: #555;\n  width: 20px;\n  height: 17px;\n  font-size: 14px;\n  border: 1px solid #ccc;\n  background: #dddddd;\n  top: 9px;\n  left: 0;\n  text-align: center;\n  vertical-align: middle;\n  padding-top: 3px;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu {\n  height: auto;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul {\n  padding: 0 0 10px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li {\n  height: auto;\n  line-height: normal;\n  background: none;\n  border: none;\n  line-height: 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li a {\n  color: #333;\n  padding: 0 0 0 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li.active a {\n  font-weight: bold;\n}\n.widget .widget-footer {\n  background: #fafafa;\n  height: 25px;\n  line-height: 25px;\n  border-top: 1px solid #ebebeb;\n}\n.widget .widget-footer .glyphicons {\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n  padding: 0;\n  float: right;\n}\n.widget .widget-footer .glyphicons i:before {\n  font-size: 16px;\n  color: #c3c3c3;\n  text-align: center;\n  width: 20px;\n  height: 25px;\n  line-height: 25px;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget .widget-footer .glyphicons:hover i:before {\n  color: rgba(0, 0, 0, 0.5);\n}\n.widget.margin-bottom-none {\n  margin-bottom: 0;\n}\n.widget.widget-gray {\n  background: #f5f5f5;\n}\n.widget.widget-gray .widget-head {\n  background: #e9e9e9;\n  border-color: #d1d2d3;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.widget.widget-gray .widget-head .heading {\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget.widget-gray .widget-head .heading.glyphicons i:before {\n  background: none;\n  color: #555;\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2:before,\n.widget.widget-2:after {\n  display: none;\n}\n.widget.widget-2 .widget-head {\n  background: #e2e2e4;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  height: 36px;\n  line-height: 36px;\n  border-color: #d1d2d3;\n}\n.widget.widget-2 .widget-head .heading {\n  line-height: 36px;\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n  font-size: 12pt;\n}\n.widget.widget-2 .widget-head .heading i:before {\n  color: #555555;\n  background: none;\n  border: none;\n  left: 3px;\n  top: 2px;\n}\n.widget.widget-2 .widget-body {\n  border: 1px solid #d1d2d3;\n  border-top: 0;\n  background: #f5f5f5;\n}\n.widget.widget-2.primary .widget-head {\n  background: #4a8bc2;\n  border-color: #4a8bc2;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2.primary .widget-head .heading {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-2.primary .widget-head .heading i:before {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-3:before,\n.widget.widget-3:after {\n  display: none;\n}\n.widget.widget-3 .widget-head {\n  height: 36px;\n  line-height: 36px;\n}\n.widget.widget-3 .widget-head .heading {\n  display: block;\n  text-align: center;\n  float: none;\n  line-height: 36px;\n  height: 36px;\n  text-transform: uppercase;\n  font-size: 12pt;\n}\n.widget.widget-3 .widget-head .heading i:before {\n  background: none;\n  border: none;\n  left: 3px;\n  top: 5px;\n  font-size: 20px;\n  color: #45484d;\n}\n.widget.widget-3 .widget-head .heading .glyphicons {\n  vertical-align: middle;\n  width: 35px;\n  height: 36px;\n  padding: 0;\n}\n.widget.widget-3 .widget-body {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-body.large {\n  font-size: 26pt;\n  font-weight: bold;\n  text-align: center;\n  padding: 25px 0;\n  vertical-align: middle;\n  line-height: normal;\n}\n.widget.widget-3 .widget-body.large.cancellations span {\n  line-height: 20px;\n  text-align: left;\n  font-size: 17pt;\n  display: inline-block;\n  text-shadow: none;\n}\n.widget.widget-3 .widget-body.large.cancellations span span {\n  display: block;\n}\n.widget.widget-3 .widget-body.large.cancellations span span:first-child {\n  color: #4a8bc2;\n  text-transform: uppercase;\n  font-size: 13pt;\n}\n.widget.widget-3 .widget-body.large.dashboard {\n  padding: 15px 0;\n}\n.widget.widget-3 .widget-footer {\n  background: #fafafa;\n  border-top: none;\n}\n.widget.widget-3 .widget-footer a {\n  float: none;\n  color: #dddddd;\n  width: auto;\n  padding: 0 10px 0 30px;\n  border-right: 1px solid #dbdbdb;\n  text-decoration: none;\n}\n.widget.widget-3 .widget-footer a i:before {\n  color: #dddddd;\n  left: 5px;\n}\n.widget.widget-3 .widget-footer a:hover {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer a:hover i:before {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer.align-center {\n  text-align: center;\n}\n.widget.widget-3 .widget-footer.align-center a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right {\n  text-align: right;\n}\n.widget.widget-3 .widget-footer.align-right a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right a:last-child {\n  border-right: none;\n}\n.widget.widget-4 {\n  border: none;\n  background: none;\n}\n.widget.widget-4 .widget-head {\n  background: none;\n  padding: 10px;\n  border: none;\n}\n.widget.widget-4 .widget-head .heading {\n  color: #544f49;\n  text-shadow: none;\n  padding: 0;\n  margin: 0;\n}\n.widget.widget-4 .widget-body {\n  padding: 0 10px 10px;\n  border: none;\n}\n.widget.widget-4 .widget-body.list ul li {\n  padding: 0;\n}\n.widget.widget-heading-simple {\n  border: none;\n  background: none;\n}\n.widget.widget-heading-simple > .widget-head {\n  border: none;\n  background: none;\n  padding: 0 0 5px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading {\n  padding: 0;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons {\n  padding: 0 0 0 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons i:before {\n  text-align: left;\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-body {\n  border: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget.widget-body-simple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-simple > .widget-body {\n  background: none;\n  border: none;\n  padding: 0;\n}\n.widget.widget-body-white > .widget-body {\n  background: #ffffff;\n}\n.widget.widget-body-gray {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-gray > .widget-body {\n  background: #e5e5e5;\n}\n.widget.widget-body-primary {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-primary > .widget-body {\n  background: #4a8bc2;\n}\n.widget.widget-body-primary > .widget-body * {\n  color: #fff;\n  text-shadow: none;\n}\n.widget.widget-body-multiple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-multiple > .widget-body {\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  margin-bottom: 7.5px;\n}\n.widget.widget-body-multiple > .widget-body:last-of-type {\n  margin-bottom: 0;\n}\n.widget.widget-body-multiple.widget-body-gray > .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget-offers .price {\n  font-size: 14px;\n}\n.widget-offers .price strong {\n  color: #000;\n}\n.widget-offers .thumb {\n  padding: 0;\n}\n.widget-offers h5 {\n  border-bottom: 1px solid #cecece;\n  font-weight: 600;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 1px 0 0 #eeeeee;\n  padding: 0 0 5px;\n}\n.widget-activity > .widget-body {\n  padding: 0 15px;\n}\n.widget-activity ul.list {\n  list-style: none;\n  margin: 0 -15px;\n  padding: 0;\n}\n.widget-activity ul.list li {\n  height: 39px;\n  line-height: 39px;\n  position: relative;\n  overflow: hidden;\n  border-bottom: 1px solid #ebebeb;\n  padding: 0 15px;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.widget-activity ul.list li:hover,\n.widget-activity ul.list li.highlight {\n  background: #f2f2f2;\n  box-shadow: 0 1px 0 0 #ffffff inset;\n  -moz-box-shadow: 0 1px 0 0 #ffffff inset;\n  -webkit-box-shadow: 0 1px 0 0 #ffffff inset;\n  text-shadow: 0 1px 0 #ffffff;\n  cursor: pointer;\n}\n.widget-activity ul.list li:hover:after,\n.widget-activity ul.list li.highlight:after {\n  content: \"\\e212\";\n  display: block;\n  position: absolute;\n  right: 15px;\n  top: 0;\n  height: 39px;\n  line-height: 39px;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  color: #d5d5d5;\n}\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before {\n  color: #505050;\n}\n.widget-activity ul.list li > span {\n  display: block;\n  height: 39px;\n  line-height: 39px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-activity ul.list li > span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-activity ul.list li > span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon {\n  width: 30px;\n  height: 39px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon i {\n  height: 39px;\n  display: block;\n  position: relative;\n}\n.widget-activity ul.list li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #cbcbcb;\n  font-size: 18px;\n  line-height: 39px;\n}\n.widget-activity ul.list li.double {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span.ellipsis {\n  line-height: 15px;\n  padding: 7px 0 0;\n  font-weight: 600;\n  font-size: 11px;\n}\n.widget-activity ul.list li.double > span .meta {\n  display: block;\n  line-height: 15px;\n  font-weight: 400;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta i:before {\n  top: 1px;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta span {\n  font-style: italic;\n}\n.widget-activity ul.list li.double .activity-icon {\n  margin-left: 0;\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i {\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i:before {\n  line-height: 45px;\n}\n.widget-activity ul.list li.double:hover:after,\n.widget-activity ul.list li.double.highlight:after {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li:last-child {\n  border: none;\n}\n.widget-activity .view-all {\n  position: absolute;\n  top: 18px;\n  right: 15px;\n}\n.widget-messages ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.widget-messages ul li {\n  border: 1px solid #e5e5e5;\n  padding: 5px;\n  margin: 0 0 10px;\n  position: relative;\n}\n.widget-messages ul li .meta span {\n  color: #a3a3a3;\n  font-size: 12px;\n}\n.widget-messages ul li .glyphicons.single.bin {\n  position: relative;\n  text-decoration: none;\n  padding: 0;\n  width: 15px;\n  height: 20px;\n  top: 5px;\n}\n.widget-messages ul li .glyphicons.single.bin i {\n  display: block;\n  width: 15px;\n  height: 20px;\n  text-align: center;\n}\n.widget-messages ul li .glyphicons.single.bin i:before {\n  color: #cccccc;\n  position: relative;\n  line-height: 20px;\n  left: auto;\n  top: auto;\n}\n.widget-messages ul li:last-child {\n  margin: 0;\n}\n.widget-timeline .widget-body {\n  padding: 15px;\n  position: relative;\n}\n.widget-timeline .widget-body:before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline:not(.widget) {\n  position: relative;\n}\n.widget-timeline:not(.widget):before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline .view-all {\n  margin-left: 35px;\n}\n.widget-timeline ul.list-timeline {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\n.widget-timeline ul.list-timeline li {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  position: relative;\n  overflow: hidden;\n  background: #ffffff;\n  border: 1px solid #ebebeb;\n  margin: 0 0 10px;\n  padding: 0 10px;\n}\n.widget-timeline ul.list-timeline li:last-child {\n  margin: 0;\n}\n.widget-timeline ul.list-timeline li span {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-timeline ul.list-timeline li span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-timeline ul.list-timeline li span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon {\n  width: 30px;\n  height: 30px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon i {\n  height: 30px;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  position: relative;\n  background: #64625f;\n}\n.widget-timeline ul.list-timeline li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #fff;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget-chat {\n  padding-bottom: 60px !important;\n}\n.widget-chat .media {\n  position: relative;\n  min-height: 80px;\n}\n.widget-chat .media .media-object {\n  position: relative;\n}\n.widget-chat .media .thumb {\n  padding: 0;\n}\n.widget-chat .media small {\n  color: #cccccc;\n}\n.widget-chat .media small:before,\n.widget-chat .media small:after {\n  content: \"\";\n}\n.widget-chat .media small.author {\n  position: absolute;\n  left: 0;\n  width: 50px;\n  top: 60px;\n  text-align: center;\n  display: block;\n}\n.widget-chat .media small.date {\n  display: block;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 5px;\n  padding: 0 0 3px;\n  text-align: right;\n  width: 100%;\n}\n.widget-chat .media.right small.author {\n  left: auto;\n  right: 0;\n}\n.widget-chat .media.right small.date {\n  text-align: left;\n}\n.widget-chat .media .media-body {\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  padding: 0;\n}\n.widget-chat .media .media-body blockquote {\n  padding: 0;\n  width: 100%;\n}\n.widget-chat .media .media-body blockquote p:last-child {\n  margin: 0;\n}\n.widget-chat .media:last-of-type {\n  padding-bottom: 10px;\n}\n.widget-chat .chat-controls {\n  position: absolute;\n  height: 30px;\n  padding: 15px 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  border: 1px solid #dbdbdb;\n  border-top: none;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  background: #fff;\n}\n.widget-chat .widget-body {\n  padding-bottom: 0;\n}\n.widget-chat.widget-heading-simple > .widget-body {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.widget-stats {\n  background: #ffffff;\n  padding: 15px 0;\n  margin: 0;\n  height: 80px;\n  position: relative;\n  text-align: center;\n  display: block;\n  border: 1px solid #dbdbdb;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget-stats .count {\n  position: absolute;\n  top: 0;\n  left: 0;\n  font-size: 13px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget-stats .label {\n  font-weight: 600;\n  padding: 4px;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2) inset;\n}\n.widget-stats span {\n  display: inline-block;\n}\n.widget-stats .txt {\n  padding: 0;\n  color: #cecece;\n}\n.widget-stats .glyphicons {\n  padding: 0;\n  display: block;\n}\n.widget-stats .glyphicons i {\n  display: block;\n}\n.widget-stats .glyphicons i:before {\n  color: #cecece;\n  font-size: 30px;\n  top: 0;\n  left: 0;\n  position: relative;\n}\n.widget-stats,\n.widget-stats:hover,\n.widget-stats:focus {\n  text-decoration: none;\n}\n.widget-stats:hover {\n  background: #fdfdfd;\n}\n.widget-stats.small {\n  padding: 5px 0;\n}\n.widget-stats.small .glyphicons {\n  padding: 12px 0 0;\n}\n.widget-stats.small .glyphicons i:before {\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 {\n  padding: 8px 0;\n  height: 94px;\n}\n.widget-stats.widget-stats-1 .glyphicons {\n  display: block;\n  height: 35px;\n  line-height: 35px;\n  padding-bottom: 5px;\n}\n.widget-stats.widget-stats-1 .glyphicons .txt {\n  display: inline-block;\n  padding: 0 5px;\n  line-height: 35px;\n}\n.widget-stats.widget-stats-1 .glyphicons i {\n  display: inline-block;\n}\n.widget-stats.widget-stats-1 .glyphicons i:before {\n  top: 5px;\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  display: inline-block;\n  font-weight: 700;\n  padding: 0;\n  line-height: 40px;\n}\n.widget-stats.widget-stats-2 .txt {\n  font-size: 14px;\n}\n.widget-stats.widget-stats-2 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  font-weight: 700;\n  padding: 0 0 3px;\n  display: block;\n  line-height: 55px;\n}\n.widget-stats.widget-stats-gray.widget-stats-1 .txt,\n.widget-stats.widget-stats-gray.widget-stats-2 .txt {\n  color: #000;\n}\n.widget-stats.widget-stats-easy-pie .easy-pie {\n  display: block;\n  width: 50px;\n  margin: -5px auto 0;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .easy-pie {\n  margin: 0 auto;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .txt {\n  padding: 7px 0 0;\n}\n.widget-stats.widget-stats-3 .sparkline {\n  display: inline-block;\n}\n.widget-stats.widget-stats-3 .txt {\n  text-align: left;\n  vertical-align: middle;\n  padding: 13px 0 0 10px;\n}\n.widget-stats.widget-stats-3 .count {\n  padding: 0 0 5px;\n  display: block;\n}\n.widget-stats.widget-stats-gray {\n  background: #e5e5e5;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.box-generic {\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n  position: relative;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  margin: 0 0 15px;\n}\n.ribbon-wrapper {\n  width: 85px;\n  height: 88px;\n  overflow: hidden;\n  position: absolute;\n  top: -3px;\n  right: -3px;\n}\n.ribbon-wrapper .ribbon {\n  display: block;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  font-weight: 600;\n  color: #fff;\n  text-align: center;\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  position: relative;\n  padding: 7px 0;\n  left: -5px;\n  top: 15px;\n  width: 120px;\n  line-height: 20px;\n  background-color: #797979;\n  -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n}\n.ribbon-wrapper .ribbon:before,\n.ribbon-wrapper .ribbon:after {\n  content: \"\";\n  border-top: 2px solid #797979;\n  border-left: 2px solid transparent;\n  border-right: 2px solid transparent;\n  position: absolute;\n  bottom: -2px;\n}\n.ribbon-wrapper .ribbon:before {\n  left: 0;\n  bottom: -1px;\n}\n.ribbon-wrapper .ribbon:after {\n  right: 0;\n}\n.ribbon-wrapper .ribbon.primary {\n  background-color: #4a8bc2;\n}\n.ribbon-wrapper .ribbon.success {\n  background-color: #609450;\n}\n.ribbon-wrapper .ribbon.warning {\n  background-color: #ab7a4b;\n}\n.ribbon-wrapper .ribbon.danger {\n  background-color: #bd362f;\n}\n.ribbon-wrapper .ribbon.default {\n  background-color: #e5e5e5;\n  color: #595959;\n}\n.ribbon-wrapper .ribbon.default:before,\n.ribbon-wrapper .ribbon.default:after {\n  border-top: 2px solid #ccc;\n}\n.ribbon-wrapper.small {\n  width: 65px;\n  height: 68px;\n}\n.ribbon-wrapper.small .ribbon {\n  width: 90px;\n  padding: 0;\n  font-size: 13px;\n}\n.ribbon-wrapper.small .ribbon:before {\n  bottom: -2px;\n}\n.breadcrumb {\n  height: 38px;\n  line-height: 39px;\n  padding: 0 15px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  background: none;\n  border-bottom: 1px solid #dbdbdb;\n  box-shadow: 0 1px 0 0 #fff;\n  -moz-box-shadow: 0 1px 0 0 #fff;\n  -webkit-box-shadow: 0 1px 0 0 #fff;\n  color: #ababab;\n  font-size: 12px;\n  position: relative;\n  overflow: hidden;\n}\n.breadcrumb li {\n  text-shadow: 0 1px 0 #ffffff;\n  line-height: 38px;\n  height: 38px;\n}\n.breadcrumb li a {\n  color: #ababab;\n  font-weight: 600;\n}\n.breadcrumb li a.glyphicons {\n  color: #ababab;\n  padding: 0 0 0 25px;\n}\n.breadcrumb li a.glyphicons i:before {\n  color: #ababab;\n  font-size: 14px;\n  top: 12px;\n  left: 3px;\n}\n.breadcrumb li.divider {\n  margin: 0 5px 0 7px;\n  width: 0;\n  border-left: 1px solid #dbdbdb;\n  border-right: 1px solid #fff;\n  vertical-align: top;\n}\n.well {\n  z-index: 1;\n  position: relative;\n  padding: 15px;\n  margin: 0 0 15px;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #fafafa;\n  border-color: #dbdbdb;\n}\n.well.small {\n  padding: 10px;\n}\n.well .popover {\n  z-index: 2;\n  font-size: 13px;\n}\n.well.dark {\n  background: rgba(0, 0, 0, 0.2);\n}\n.well.white {\n  background: #fff;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle {\n  position: relative;\n  height: 35px;\n  width: 30px;\n  display: block;\n  cursor: pointer;\n  float: right;\n  margin-right: -10px;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle:before {\n  font-family: \"Glyphicons\";\n  font-size: 17px;\n  display: block;\n  width: 100%;\n  height: 35px;\n  line-height: 34px;\n  text-align: center;\n  color: #cccccc;\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle {\n  margin-right: 0;\n  height: 25px;\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle:before {\n  height: 25px;\n  line-height: 25px;\n}\n[data-toggle=\"collapse-widget\"] a ~ .collapse-toggle {\n  margin-right: 0;\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"false\"] .collapse-toggle:before {\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .collapse-toggle:before {\n  content: \"\\e191\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .widget-head {\n  border-bottom: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list) {\n  -webkit-transition: padding 0.1s ease;\n  -moz-transition: padding 0.1s ease;\n  -o-transition: padding 0.1s ease;\n  transition: padding 0.1s ease;\n  padding: 0px;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list).in {\n  padding: 15px;\n}\n.glyphicons.standard {\n  width: 24px;\n  height: 24px;\n  padding: 0;\n}\n.glyphicons.standard i {\n  display: block;\n  height: 24px;\n}\n.glyphicons.standard i:before {\n  color: #64625f;\n  position: relative;\n  top: auto;\n  left: auto;\n}\n.glyphicons.standard:not(.disabled):hover i:before {\n  color: #797979;\n}\n.glyphicons.standard.btn {\n  padding: 4px;\n}\n.glyphicons.standard.btn.btn-small {\n  padding: 2px 5px;\n  width: auto;\n  height: auto;\n}\n.glyphicons.standard.btn.btn-small i:before {\n  top: auto;\n  line-height: 22px;\n}\n.glyphicons.primary i:before {\n  color: #4a8bc2;\n}\n.glyphicons.single {\n  color: #4a8bc2;\n  padding: 0 0 0 20px;\n}\n.glyphicons.single i:before {\n  font-size: 13px;\n  top: 4px;\n  color: #4a8bc2;\n}\n.glyphicons.single + .single {\n  margin-left: 8px;\n}\n.glyphicons.single.regular {\n  color: #7c7c7c;\n}\n.glyphicons.single.regular i:before {\n  color: #7c7c7c;\n}\n.glyphicons.text-error {\n  color: #4a8bc2;\n}\n.glyphicons.text-error i:before {\n  color: #4a8bc2;\n}\n.glyphicons.text-info {\n  color: #5d92b3;\n}\n.glyphicons.text-info i:before {\n  color: #5d92b3;\n}\n.glyphicons.text-success {\n  color: #719d46;\n}\n.glyphicons.text-success i:before {\n  color: #719d46;\n}\n.glyphicons.btn-action {\n  width: 25px;\n  height: 25px;\n  padding: 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border-width: 1px;\n  border-style: solid;\n  vertical-align: middle;\n}\n.glyphicons.btn-action i:before {\n  font-size: 14px;\n  top: 5px;\n  left: 5px;\n  text-shadow: 0 1px 0 #fff;\n  color: #fff !important;\n}\n.glyphicons.btn-action.btn-default i:before {\n  color: #7c7c7c !important;\n}\n.glyphicons.btn-action.single {\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  border: none;\n  background: none;\n  margin-right: 10px;\n}\n.glyphicons.btn-icon {\n  text-align: left;\n  padding: 5px 7px 5px 40px;\n}\n.glyphicons.btn-icon i {\n  float: left;\n}\n.glyphicons.btn-icon i:before {\n  font-size: 15px;\n  top: 0;\n  left: 0;\n  width: 33px;\n  height: 23px;\n  -webkit-border-radius: 3px 0px 0px 3px;\n  -moz-border-radius: 3px 0px 0px 3px;\n  border-radius: 3px 0px 0px 3px;\n  vertical-align: middle;\n  padding: 7px 0 0;\n  text-align: center;\n}\n.glyphicons.btn-icon.right {\n  text-align: left;\n  padding: 5px 0 5px 7px;\n}\n.glyphicons.btn-icon.right i:before {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n  right: 0;\n  left: auto;\n  text-align: center;\n}\n.glyphicons.btn-large {\n  padding: 10px 10px 10px 40px;\n  font-weight: 600;\n}\n.glyphicons.btn-large i:before {\n  top: 12px;\n  left: 12px;\n  font-size: 17px;\n}\n.glyphicons.btn-large.btn-icon i:before {\n  top: 0;\n  left: 0;\n  height: 28px;\n  padding: 12px 0 0;\n}\n.glyphicons.btn-small {\n  padding: 2px 10px 2px 35px;\n}\n.glyphicons.btn-small i:before {\n  padding: 5px 0 0;\n  width: 28px;\n  height: 19px;\n  font-size: 14px;\n}\n.glyphicons.btn-mini {\n  padding: 1px 6px 1px 33px;\n}\n.glyphicons.btn-mini i:before {\n  padding: 5px 0 0;\n  width: 26px;\n  height: 17px;\n  font-size: 13px;\n}\n.glyphicons.orange i:before {\n  color: #EDB459;\n}\n.glyphicons.btn-default i:before {\n  color: #9e9e9e;\n  text-shadow: none;\n}\nh4.glyphicons {\n  padding: 0 0 0 35px;\n  display: block;\n}\nh4.glyphicons i:before {\n  font-size: 22px;\n  font-weight: normal;\n  color: #575655;\n}\nh3.glyphicons,\nh2.glyphicons {\n  padding: 0 0 0 45px;\n  display: block;\n}\nh3.glyphicons i:before,\nh2.glyphicons i:before {\n  font-size: 27px;\n  font-weight: normal;\n  left: 2px;\n  top: 3px;\n  color: #575655;\n}\nh3.glyphicons.cogwheels i:before,\nh2.glyphicons.cogwheels i:before {\n  left: 5px;\n}\n.finances_summary .well {\n  font-size: 16px;\n  text-align: center;\n}\n.finances_summary .well strong {\n  display: block;\n  font-size: 22pt;\n  color: #45494c;\n  line-height: normal;\n}\n.finances_summary .glyphicons.standard i:before {\n  color: #cccccc;\n}\ndiv.glyphicons {\n  padding: 0 0 0 35px;\n}\ndiv.glyphicons i:before {\n  color: #cccccc;\n}\ndiv.glyphicons.glyphicon-large {\n  padding: 0 0 0 75px;\n}\ndiv.glyphicons.glyphicon-large i:before {\n  font-size: 50px;\n  left: 0;\n}\ndiv.glyphicons.glyphicon-large.group-column {\n  padding: 0 0 0 85px;\n}\ndiv.glyphicons.glyphicon-large.group-column i:before {\n  font-size: 45px;\n  left: 12px;\n}\ndiv.glyphicons.glyphicon-top {\n  padding: 0;\n  text-align: center;\n}\ndiv.glyphicons.glyphicon-top i {\n  display: block;\n  position: relative;\n}\ndiv.glyphicons.glyphicon-top i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i {\n  padding: 0 0 10px;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i:before {\n  font-size: 70px;\n}\ndiv.glyphicons.glyphicon-primary i:before {\n  color: #4a8bc2;\n}\n.widget-body-primary div.glyphicons i:before {\n  color: #fff;\n}\n.social-large {\n  height: 97px;\n}\n.social-large a {\n  display: block;\n  height: 77px;\n  float: left;\n  padding: 10px 19px;\n  color: #d5d5d5;\n  background: #ffffff;\n  font-weight: bold;\n  text-align: center;\n  border-right: 1px solid #e5e5e5;\n  text-decoration: none;\n}\n.social-large a i {\n  display: block;\n  position: relative;\n  padding: 0 0 8px;\n}\n.social-large a i:before {\n  display: block;\n  text-align: center;\n  top: auto;\n  left: auto;\n  position: relative;\n  font-size: 50px;\n  color: #d5d5d5;\n}\n.social-large a.active,\n.social-large a:hover {\n  color: #fff;\n  background: #4a8bc2;\n}\n.social-large a.active i:before,\n.social-large a:hover i:before {\n  color: #fff;\n}\n.social-large a:last-child {\n  border: none;\n}\n.social-large.social-large-2 a {\n  display: inline-block;\n  font-weight: 400;\n  float: none;\n  border: none;\n  background: none;\n  color: #444444;\n}\n.social-large.social-large-2 a i:before {\n  color: #444444;\n}\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover {\n  color: #4a8bc2;\n}\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before {\n  color: #4a8bc2;\n}\n.widget-pinterest .widget-body {\n  padding: 0;\n}\n.widget-pinterest .widget-body .description {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.widget-pinterest .widget-body .thumb {\n  padding: 0;\n  border: none;\n}\n.widget-pinterest .widget-body .thumb img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter {\n  position: relative;\n}\n.jstwitter .item {\n  overflow: hidden;\n}\n.jstwitter .tweet-wrapper {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.jstwitter .widget-body {\n  padding: 0;\n}\n.jstwitter .item a {\n  text-decoration: none;\n}\n.jstwitter .item img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter .item .thumb {\n  padding: 0;\n  border: none;\n}\n.jstwitter .item a:hover {\n  text-decoration: underline;\n}\n.jstwitter .item .text {\n  display: block;\n}\n.jstwitter .item .time,\n.jstwitter .item .user {\n  font-style: italic;\n  color: #999;\n}\n.jstwitter .item.active {\n  display: block;\n}\n.rating {\n  unicode-bidi: bidi-override;\n  direction: rtl;\n}\n.rating.text-large {\n  margin: 7px 0;\n}\n.rating span.star {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  display: inline-block;\n}\n.rating span.star:before {\n  content: \"\\f006\";\n  padding-right: 5px;\n}\n.rating:not(.read-only) span.star:hover {\n  cursor: pointer;\n}\n.rating:not(.read-only) span.star:hover:before,\n.rating:not(.read-only) span.star:hover ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.rating span.star.active:before,\n.rating span.star.active ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.hero-unit {\n  background: none;\n  border: none;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n.widget.widget-tabs {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs .tab-content {\n  padding: 0;\n}\n.widget.widget-tabs > .widget-head {\n  background: #ffffff;\n  border-color: #dbdbdb;\n  overflow: visible;\n}\n.widget.widget-tabs > .widget-head ul {\n  position: relative;\n  overflow: visible;\n  list-style: none;\n  height: 35px;\n  margin: 0;\n  display: inline-block;\n}\n.widget.widget-tabs > .widget-head ul li {\n  height: 35px;\n  line-height: 35px;\n  float: left;\n  display: block;\n  border-right: 1px solid #dbdbdb;\n}\n.widget.widget-tabs > .widget-head ul li a {\n  width: auto;\n  height: 35px;\n  display: block;\n  padding: 0 15px;\n  position: relative;\n  overflow: hidden;\n  color: #7c7c7c;\n  text-decoration: none;\n}\n.widget.widget-tabs > .widget-head ul li a i:before {\n  left: 5px;\n  top: 5px;\n  color: #9d9d9d;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 15px 0 35px;\n}\n.widget.widget-tabs > .widget-head ul li.active {\n  height: 36px;\n  background: #fff;\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a i:before {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.widget.widget-tabs > .widget-body.large {\n  padding: 25px;\n}\n.widget.widget-tabs-double > .widget-head {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul li,\n.widget.widget-tabs-double > .widget-head ul li.active {\n  height: 40px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double > .widget-head ul li a,\n.widget.widget-tabs-double > .widget-head ul li.active a {\n  height: 35px;\n  padding: 5px 0 0;\n}\n.widget.widget-tabs-double > .widget-head ul li a span,\n.widget.widget-tabs-double > .widget-head ul li.active a span {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 15px 0 38px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons i:before,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons i:before {\n  left: 4px;\n  top: 9px;\n  font-size: 20px;\n}\n.widget.widget-tabs-double-2 {\n  border: none;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border: 1px solid #dbdbdb;\n  border-bottom: none;\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 > .widget-head ul {\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li {\n  height: 70px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a {\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n  height: 70px;\n  padding: 5px 0 0;\n  text-decoration: none;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a span {\n  display: block;\n  line-height: 30px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i {\n  display: block;\n  height: 24px;\n  padding: 13px 0 0;\n  line-height: 24px;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  left: auto;\n  top: auto;\n  font-size: 24px;\n  position: relative;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active {\n  height: 70px;\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover {\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-double-2 .widget-body-regular {\n  padding: 10px;\n  border: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 .widget-body-regular p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-vertical .widget-head {\n  border: none;\n  height: auto;\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-head ul {\n  display: block;\n  height: auto;\n}\n.widget.widget-tabs-vertical .widget-head ul li {\n  float: none;\n  display: block;\n  border-right: none;\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-vertical .widget-head ul li:last-child {\n  border: none;\n}\n.widget.widget-tabs-vertical .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-body .tab-content {\n  padding: 12px 15px;\n}\n.widget.widget-wizard-pills .widget-head {\n  height: 60px;\n  padding: 10px 0;\n}\n.widget.widget-wizard-pills .widget-head ul {\n  height: 60px;\n}\n.widget.widget-wizard-pills .widget-head ul li {\n  height: 60px;\n  line-height: 60px;\n  color: #7c7c7c;\n  padding: 0 0 0 10px;\n  border: none;\n  position: relative;\n}\n.widget.widget-wizard-pills .widget-head ul li.status {\n  height: 45px;\n  padding: 15px 15px 0;\n  font-weight: 600;\n}\n.widget.widget-wizard-pills .widget-head ul li.status span.r {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-wizard-pills .widget-head ul li a {\n  height: 58px;\n  line-height: 60px;\n  padding: 0;\n  width: 58px;\n  text-align: center;\n  background: #dbdbdb;\n  border: 1px solid #dbdbdb;\n  color: #c8c8c8;\n  font-weight: 600;\n  font-size: 16pt;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  position: relative;\n  z-index: 2;\n}\n.widget.widget-wizard-pills .widget-head ul li.active {\n  height: 60px;\n  background: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.active a {\n  width: 60px;\n  height: 60px;\n  background: #f4f4f4;\n  border: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.primary a {\n  width: 60px;\n  height: 60px;\n  background: #4a8bc2;\n  border: none;\n  color: #fff;\n}\n.widget.widget-wizard-pills .widget-head ul li:not(:first-child):before {\n  position: absolute;\n  background: #dbdbdb;\n  height: 1px;\n  left: 0;\n  right: 0;\n  top: 29px;\n  display: block;\n  content: \"\";\n  z-index: 1;\n}\n.widget.widget-wizard-pills .widget-head ul li.no-padding {\n  padding: 0;\n}\n.widget.widget-tabs-2 {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-2.border-bottom-none {\n  border-bottom: none;\n}\n.widget.widget-tabs-2 > .widget-head {\n  background: #fff;\n  border: none;\n  border-bottom: 1px solid #dbdbdb;\n  padding: 0 10px;\n}\n.widget.widget-tabs-2 > .widget-head ul {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs-2 > .widget-head ul li {\n  border: none;\n}\n.widget.widget-tabs-2 > .widget-head ul li.active {\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -o-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: linear-gradient(to bottom, #f7f7f7, #ffffff);\n  background-repeat: repeat-x;\n}\n.widget.widget-tabs-2 > .widget-head ul li a {\n  border: 1px solid #dddddd;\n  border-bottom: none;\n  border-right: none;\n  color: #222;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.widget.widget-tabs-2 > .widget-head ul li:first-child a {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget.widget-tabs-2 > .widget-body {\n  background: #fff;\n  border: none;\n  padding: 15px;\n}\n.widget.tabs-right .widget-head ul {\n  float: right;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons {\n  width: 38px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i {\n  width: 38px;\n  display: block;\n  line-height: 35px;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i:before {\n  width: 38px;\n  text-align: center;\n  left: auto;\n  top: auto;\n  position: relative;\n  display: block;\n  line-height: 35px;\n  color: #cbcbcb;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li.active a.glyphicons i:before {\n  color: #505050;\n}\n.widget.widget-tabs-icons-only .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-body p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-icons-only .widget-head {\n  padding: 0 0 10px;\n}\n.widget.widget-tabs-icons-only .widget-head ul {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  list-style: none;\n  margin: 0;\n  height: 30px;\n  line-height: 30px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-head ul li {\n  color: #dadada;\n  float: left;\n  display: block;\n  padding: 0 10px 0 0;\n  font-size: 8pt;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons {\n  width: 30px;\n  height: 30px;\n  padding: 0 3px;\n  text-align: center;\n  cursor: pointer;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i {\n  background: #e5e5e5;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  height: 30px;\n  position: relative;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #64625f;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:hover i {\n  background: #dedede;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i {\n  background: #64625f;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i:before {\n  color: #fff;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:last-child {\n  padding: 0;\n}\n.tabsbar {\n  height: 60px;\n  border: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n  margin: 0 0 15px;\n}\n.tabsbar ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  height: 60px;\n}\n.tabsbar ul li {\n  float: left;\n  display: block;\n  height: 54px;\n  border-right: 1px solid #dbdbdb;\n  background: #fdfdfd;\n  padding: 3px;\n}\n.tabsbar ul li a {\n  display: block;\n  height: 54px;\n  line-height: 54px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  color: #7c7c7c;\n  text-decoration: none;\n  -webkit-transition: background 1s ease;\n  -moz-transition: background 1s ease;\n  -o-transition: background 1s ease;\n  transition: background 1s ease;\n}\n.tabsbar ul li a i {\n  display: inline-block;\n  float: left;\n  width: 39px;\n  height: 54px;\n}\n.tabsbar ul li a i:before {\n  color: #7c7c7c;\n  position: relative;\n  top: auto;\n  left: auto;\n  line-height: 54px;\n  text-align: center;\n}\n.tabsbar ul li.active a {\n  background-color: #6ca1ce;\n  background-image: -moz-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#83b0d5), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -o-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: linear-gradient(to bottom, #83b0d5, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff83b0d5', endColorstr='#ff4a8bc2', GradientType=0);\n  color: #fff;\n}\n.tabsbar ul li.active a i:before {\n  color: #fff;\n}\n.tabsbar.tabsbar-2 {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul li {\n  height: 39px;\n  padding: 0;\n  background: none;\n  border: none;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a {\n  height: 39px;\n  line-height: 39px;\n  background: none;\n  -webkit-transition: color 0.5s ease;\n  -moz-transition: color 0.5s ease;\n  -o-transition: color 0.5s ease;\n  transition: color 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a i {\n  height: 39px;\n  width: 33px;\n}\n.tabsbar.tabsbar-2 ul li a i:before {\n  line-height: 39px;\n  font-size: 20px;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.tabsbar.tabsbar-2 ul li.active {\n  background: #fff;\n}\n.tabsbar.tabsbar-2 ul li.active a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li.active a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a {\n  background: #4a8bc2;\n  color: #fff;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a i:before {\n  color: #fff;\n}\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n  background: #4a8bc2;\n  border-bottom-color: #4a8bc2;\n  color: #fff;\n}\n.nav-tabs {\n  border-bottom-color: #4a8bc2;\n}\n.nav-tabs > li > a {\n  padding: 6px 8px;\n}\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover {\n  background: #4a8bc2;\n  border-top-color: #4a8bc2;\n  border-left-color: #4a8bc2;\n  border-right-color: #4a8bc2;\n  color: #fff;\n  font-weight: bold;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.nav-pills a {\n  cursor: pointer;\n}\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover {\n  background: #4a8bc2;\n  color: #fff;\n}\n.nav-pills .glyphicons {\n  padding-left: 25px;\n}\n.nav-pills .glyphicons i:before {\n  position: relative;\n  font-size: 14px;\n  left: -10px;\n  top: 2px;\n  color: #F5EADB;\n  font-weight: normal;\n  text-shadow: none;\n}\n.tab-content {\n  overflow: visible;\n  padding: 0;\n}\n.btn {\n  font-weight: 600;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n}\n.btn-block {\n  width: 100%;\n}\n.btn + .btn:not(.btn-block) {\n  margin: 0 0 0 5px;\n}\n.input-append .btn + .btn,\n.input-prepend .btn + .btn {\n  margin-left: -1px;\n}\n.btn-group .btn + .btn:not(.btn-block) {\n  margin-left: -1px;\n}\n.btn-group.dropup .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-default {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n  color: rgba(0, 0, 0, 0.6);\n  text-shadow: 0 1px 0 #fff;\n  font-weight: 600;\n  background-color: #efefef;\n  background-image: -moz-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#e7e7e7));\n  background-image: -webkit-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -o-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: linear-gradient(to bottom, #f4f4f4, #e7e7e7);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe7e7e7', GradientType=0);\n  border: 1px solid #cecece;\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled,\n.btn-default[disabled],\n.btn-default:hover,\n.btn-default:focus {\n  background: #e8e8e8;\n}\n.btn-default:active,\n.btn-default.active {\n  background: #e8e8e8;\n  color: #fff;\n  text-shadow: none;\n}\n.btn-default .caret {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n.btn-warning {\n  background-color: #b6895e;\n  background-image: -moz-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#be946b), to(#ab7a4b));\n  background-image: -webkit-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -o-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: linear-gradient(to bottom, #be946b, #ab7a4b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbe946b', endColorstr='#ffab7a4b', GradientType=0);\n  border: 1px solid #88613b;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-warning.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled,\n.btn-warning[disabled],\n.btn-warning:hover,\n.btn-warning:focus {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-info {\n  background: #93B9D8;\n  border: 1px solid #93B9D8;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-info.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled,\n.btn-info[disabled],\n.btn-info:hover,\n.btn-info:focus {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info:active,\n.btn-info.active {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-danger {\n  background-color: #ca4741;\n  background-image: -moz-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d3534c), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -o-linear-gradient(top, #d3534c, #bd362f);\n  background-image: linear-gradient(to bottom, #d3534c, #bd362f);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd3534c', endColorstr='#ffbd362f', GradientType=0);\n  border: 1px solid #942a25;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-danger.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled,\n.btn-danger[disabled],\n.btn-danger:hover,\n.btn-danger:focus {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-primary {\n  background-color: #619aca;\n  background-image: -moz-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#70a3cf), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -o-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: linear-gradient(to bottom, #70a3cf, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff70a3cf', endColorstr='#ff4a8bc2', GradientType=0);\n  border: 1px solid #3771a2;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-primary.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.4);\n  text-shadow: none;\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.btn-primary:focus {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.btn-inverse {\n  background-color: #53575d;\n  background-image: -moz-linear-gradient(top, #5d6168, #45484d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5d6168), to(#45484d));\n  background-image: -webkit-linear-gradient(top, #5d6168, #45484d);\n  background-image: -o-linear-gradient(top, #5d6168, #45484d);\n  background-image: linear-gradient(to bottom, #5d6168, #45484d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5d6168', endColorstr='#ff45484d', GradientType=0);\n  border: 1px solid #2d2f32;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-inverse.glyphicons i:before {\n  color: #919293;\n  text-shadow: none;\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled,\n.btn-inverse[disabled],\n.btn-inverse:hover,\n.btn-inverse:focus {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse:active,\n.btn-inverse.active {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-success {\n  background-color: #6fa45f;\n  background-image: -moz-linear-gradient(top, #79ae69, #609450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#79ae69), to(#609450));\n  background-image: -webkit-linear-gradient(top, #79ae69, #609450);\n  background-image: -o-linear-gradient(top, #79ae69, #609450);\n  background-image: linear-gradient(to bottom, #79ae69, #609450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff79ae69', endColorstr='#ff609450', GradientType=0);\n  border: 1px solid #4b733e;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-success.glyphicons i:before {\n  color: #a2bc9b;\n  text-shadow: none;\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled,\n.btn-success[disabled],\n.btn-success:hover,\n.btn-success:focus {\n  background: #609450;\n  color: #fff;\n}\n.btn-success:active,\n.btn-success.active {\n  background: #609450;\n  color: #fff;\n}\n.btn-success .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-group .btn-primary:not(.dropdown-toggle),\n.btn-group .btn-primary:not('[data-toggle*=\"\"]') {\n  margin-right: 2px;\n}\n.btn-group-vertical.block {\n  display: block;\n}\n.btn-group.btn-block {\n  padding: 0;\n  position: relative;\n}\n.btn-group.btn-block .leadcontainer {\n  left: 0;\n  position: absolute;\n  right: 29px;\n}\n.btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n  text-align: left;\n}\n.btn-group.btn-block .dropdown-lead {\n  box-sizing: border-box;\n  width: 100%;\n}\n.btn-group.btn-block .dropdown-toggle {\n  width: 30px;\n  float: right;\n  box-sizing: border-box;\n  text-align: center;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-icon-stacked {\n  text-align: left;\n  padding: 5px 5px 5px 45px;\n}\n.btn-icon-stacked i {\n  display: block;\n  width: 24px;\n  height: 24px;\n  position: absolute;\n  left: 10px;\n  top: 10px;\n}\n.btn-icon-stacked i:before {\n  left: auto;\n  top: auto;\n  position: relative;\n  text-align: center;\n}\n.btn-icon-stacked span {\n  display: block;\n  font-size: 13px;\n  line-height: normal;\n}\n.btn-facebook {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #728dc0;\n  background-image: -moz-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#8098c6), to(#5d7cb6));\n  background-image: -webkit-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -o-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: linear-gradient(to bottom, #8098c6, #5d7cb6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8098c6', endColorstr='#ff5d7cb6', GradientType=0);\n  border: 1px solid #5d7cb6;\n}\n.btn-facebook i:before {\n  color: #fff;\n}\n.btn-facebook:hover {\n  background: #8098c6;\n  color: #fff;\n}\n.btn-google {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #b24343;\n  background-image: -moz-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bf4a4a), to(#9e3838));\n  background-image: -webkit-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -o-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: linear-gradient(to bottom, #bf4a4a, #9e3838);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbf4a4a', endColorstr='#ff9e3838', GradientType=0);\n  border: 1px solid #9e3838;\n}\n.btn-google i:before {\n  color: #fff;\n}\n.btn-google:hover {\n  background: #bf4a4a;\n  color: #fff;\n}\n.btn-toggle-code {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  z-index: 1000;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-toggle-code.outside {\n  bottom: -24px;\n}\n#demo_buttons .btn-block {\n  max-width: 200px;\n  margin: 0 auto;\n}\n#demo_buttons thead th {\n  width: 25%;\n}\n.form-inline.small input,\n.form-inline.small select {\n  margin: 0 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  padding: 1px 5px;\n  border-color: #d8d9da;\n  color: #a7a7a7;\n}\n.form-inline.small select {\n  padding: 1px 0;\n  height: 23px;\n}\n.form-inline.small select:last-child {\n  margin-right: 0;\n}\n.form-inline.small label {\n  float: left;\n  margin: 0 5px 0 0;\n  display: block;\n}\n.form-inline.small .input-append.block {\n  display: block;\n}\n.form-inline.small .input-append input {\n  margin: 0;\n  width: 85%;\n}\n.form-inline.small .input-append .add-on {\n  padding: 1px 3px;\n  margin: 0 0 0 -1px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.form-inline.small .input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: #c1c1c1;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n}\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  font-size: 13px;\n}\n.uniformjs .radio .disabled input[type=\"radio\"],\n.uniformjs .checkbox .disabled input[type=\"checkbox\"] {\n  margin-left: 0;\n}\n.uniformjs .radio,\n.uniformjs .checkbox {\n  padding-left: 0;\n}\n.uniformjs .radio {\n  height: auto;\n}\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 3px;\n}\n.uniformjs label.radio {\n  margin-bottom: 0;\n}\n.uniformjs label.radio.inline {\n  margin: 0;\n}\n.checkbox.inline {\n  padding-bottom: 1px;\n}\n.uniformjs .radio span {\n  margin: 2px 0 0;\n}\n.uniformjs .checkbox span {\n  margin: -2px 0 0;\n}\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 13px;\n}\n.input-full input {\n  width: 83%;\n  height: 17px;\n}\nlegend {\n  line-height: normal;\n  height: auto;\n  font-size: 18px;\n  margin: 0 0 6px;\n  text-align: left;\n  padding: 0;\n  border: 0;\n  color: #797979;\n}\n.btn-group > .btn,\n.btn-group > .dropdown-menu {\n  font-size: 13px;\n}\n.strong {\n  font-weight: bold;\n}\ninput[type=text],\ninput[type=password],\nselect,\ntextarea {\n  border-color: #D8D9DA;\n  color: #A7A7A7;\n}\n.control-label.center {\n  text-align: center;\n}\n.form-actions {\n  background: none;\n  border: none;\n  margin: 0;\n}\n.form-horizontal .form-actions {\n  margin-top: 0;\n  padding: 0;\n}\n.form-horizontal .controls {\n  margin-left: 145px;\n}\n.form-horizontal .control-label {\n  width: 125px;\n}\n.form-horizontal .control-group:last-child {\n  margin: 0;\n}\n.input-prepend .add-on,\n.input-append .add-on {\n  background: #fff;\n}\n.input-prepend .add-on i:before,\n.input-append .add-on i:before {\n  color: #D0D1D1;\n}\n.input-prepend .add-on icon,\n.input-append .add-on icon {\n  margin-top: 0;\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n  background: #fff;\n}\n.input-prepend .add-on.glyphicons i:before,\n.input-append .add-on.glyphicons i:before {\n  font-size: 14px;\n  left: 7px;\n  top: 7px;\n  color: #D0D1D1;\n}\n.input-append .add-on.glyphicons i:before {\n  left: 6px;\n}\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover {\n  background: #4a8bc2;\n}\n.ms-container .custom-header {\n  height: 30px;\n  line-height: 30px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  font-weight: 600;\n  border: 1px solid #dbdbdb;\n}\n.ms-container .custom-header:not(.custom-footer) {\n  border-bottom: none;\n}\n.ms-container .custom-header.custom-footer {\n  border-top: none;\n}\n.select2-container img.flag,\n.select2-drop img.flag {\n  height: 10px;\n  width: 15px;\n  padding-right: 10px;\n}\n.select2-container .select2-choice {\n  border-color: #dbdbdb;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-container-multi .select2-choices {\n  border-color: #dbdbdb;\n  background: #fff;\n}\n.select2-container .select2-choice div {\n  border-color: #d8d8d8;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-drop {\n  border-color: #d8d8d8;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n  margin: 5px 0 3px 5px;\n  border-color: #d8d8d8;\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background: #4a8bc2;\n}\n.bootstrap-timepicker-widget table td {\n  font-size: 13px;\n}\n.bootstrap-timepicker > [class*=\"icon-\"] {\n  vertical-align: text-top;\n  margin: 0 0 0 -22.5px;\n  pointer-events: none;\n  position: relative;\n  cursor: pointer;\n}\n.table {\n  margin: 0 0 15px;\n  position: relative;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table.table-white {\n  background: #fff;\n}\n.table th,\n.table td {\n  border-top-color: #ebebeb;\n}\n.table td.center,\n.table th.center {\n  text-align: center;\n}\n.table td.right,\n.table th.right {\n  text-align: right;\n}\n.table-condensed {\n  font-size: 10pt;\n}\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 10px;\n}\n.table-borderless th,\n.table-borderless td {\n  border: none;\n}\n.table-striped tbody tr:nth-child(odd) td,\n.table-striped tbody tr:nth-child(odd) th {\n  background-color: #fafafa;\n}\n.table-bordered {\n  border-color: #dbdbdb;\n  /* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.table-bordered th,\n.table-bordered td {\n  border-color: #dbdbdb;\n}\n.table-fill td {\n  background: #F8F8F8;\n}\n.table .progress:last-child,\n.table .alert:last-child {\n  margin: 0;\n}\n.table .shortRight {\n  width: 25%;\n  text-align: right;\n  direction: rtl;\n  text-indent: 10px;\n}\n.table-large-spacing td {\n  padding: 20px 15px;\n}\n.table .thead td {\n  padding: 8px;\n  font-weight: bold;\n}\n.table-vertical-center td,\n.table-vertical-center th {\n  vertical-align: middle;\n}\n.table-thead-simple thead th {\n  background: none;\n  border-left: none;\n  border-right: none;\n  border-top: none;\n  border-bottom: 1px solid #ebebeb;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  text-shadow: none;\n  text-transform: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.table-thead-simple.table-thead-border-none {\n  border-top: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-thead-simple.table-thead-border-none thead th {\n  border-bottom: none;\n}\n.table-thead-simple.table-thead-border-none thead:first-child tr:first-child > th:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > td:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-primary {\n  border-color: #dbdbdb;\n  border-top: none;\n}\n.table-primary thead th {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  color: #fff;\n  font-size: 14px;\n}\n.table-primary tbody td {\n  color: #7c7c7c;\n  background: #fafafa;\n  border-width: 0px;\n}\n.table-primary tbody td.important {\n  color: #4a8bc2;\n  font-weight: 600;\n}\n.table-primary tbody td.actions {\n  padding-right: 1px;\n}\n.table-primary.table-bordered tbody td {\n  border-color: #dbdbdb;\n  border-width: 1px;\n  /*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\n}\n.table-primary tbody tr:nth-child(odd) td,\n.table-primary tbody tr:nth-child(odd) th {\n  background: #ffffff;\n}\n.table-primary tbody tr.selectable td {\n  cursor: pointer;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background: #cecece;\n  box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -webkit-box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -moz-box-shadow: 0 0 0 1px #a8a8a8 inset;\n}\n.table-pricing th,\n.table-pricing td {\n  padding: 10px;\n}\n.table-pricing .plan {\n  font-weight: 600;\n  font-size: 14px;\n  display: block;\n}\n.table-pricing .price {\n  font-weight: 600;\n  font-size: 24px;\n  display: block;\n}\n.table-pricing .heading {\n  font-weight: 600;\n  font-size: 24px;\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard {\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard.circle_ok i:before {\n  color: #9fc75f;\n}\n.table-pricing-2 th {\n  padding: 12px 0;\n  background: #64625f;\n  font-size: 14px;\n  color: #fff;\n  border-color: #5a5855;\n}\n.table-pricing-2 .pricing td {\n  padding: 12px 10px 10px;\n  background: #e5e5e5;\n  border-color: #cecece;\n}\ndiv.dataTables_filter label {\n  float: none;\n}\n.row-fluid [class*=\"span\"]:last-of-type .dataTables_filter {\n  text-align: right;\n}\n#DataTables_Table_0_length select {\n  width: 80px;\n}\n#DataTables_Table_0_info {\n  padding: 0;\n}\n.dataTables_paginate {\n  text-align: right;\n}\n.dataTables_length {\n  padding-top: 5px;\n}\n.ColVis {\n  margin: 0;\n}\n.google-visualization-table-div-page {\n  margin: 10px 0 0 0 !important;\n}\n.google-visualization-table-div-page .a-d-e-h-g {\n  padding: 0;\n  border: none;\n  margin: 0;\n}\n.google-visualization-table-div-page .a-d-e-f-g,\n.google-visualization-table-div-page .a-d-e-h-g {\n  border-style: none;\n}\n.google-visualization-table-div-page .a-d-e-o-q .a-d-e-h-g {\n  border: none;\n}\n.google-visualization-table-div-page .a-d-e {\n  background: none;\n  margin-left: 5px;\n}\n.google-visualization-table-div-page .a-d-e.a-d-e-o-p {\n  margin-left: 0;\n}\n.google-visualization-table-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n  border: 1px solid #e5e5e5;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  font-size: 10pt;\n  background: none !important;\n}\n.google-visualization-table-table td,\n.google-visualization-table-table .tableHeaderRow td {\n  padding: 4px 10px;\n  border: none;\n  border-left: 1px solid #e5e5e5;\n  border-top: 1px solid #e5e5e5;\n  line-height: 20px;\n}\n.google-visualization-table-table .tableHeaderRow td {\n  font-weight: bold;\n  vertical-align: bottom;\n}\n.google-visualization-table-table tbody tr:nth-child(odd) td,\n.google-visualization-table-table tbody tr:nth-child(odd) td {\n  background-color: rgba(255, 255, 255, 0.5);\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:first-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:last-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child td,\n.google-visualization-table-table tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n@media only screen and (max-width: 979px) {\n  .table-responsive.swipe-horizontal {\n    border-collapse: collapse;\n    border-spacing: 0;\n    display: block;\n    position: relative;\n    width: 100%;\n    border-left: 1px solid #DDD;\n  }\n  .table-responsive.swipe-horizontal th,\n  .table-responsive.swipe-horizontal td {\n    display: block;\n    margin: 0;\n    vertical-align: top;\n  }\n  .table-responsive.swipe-horizontal th {\n    text-align: right;\n    border-bottom: 0;\n    border-left: 0;\n  }\n  .table-responsive.swipe-horizontal td {\n    min-height: 1.25em;\n    text-align: left;\n    border-left: 0;\n    border-right: 0;\n    border-bottom: 0;\n    border-top: 0;\n    font-size: 13px;\n  }\n  .table-responsive.swipe-horizontal thead {\n    display: block;\n    float: left;\n  }\n  .table-responsive.swipe-horizontal thead tr {\n    display: block;\n  }\n  .table-responsive.swipe-horizontal tbody {\n    display: block;\n    width: auto;\n    position: relative;\n    overflow-x: auto;\n    white-space: nowrap;\n    word-spacing: 0;\n    letter-spacing: 0;\n    font-size: 0;\n  }\n  .table-responsive.swipe-horizontal tbody tr {\n    display: inline-block;\n    vertical-align: top;\n    border-left: 1px solid #e5e5e5;\n  }\n  .table-responsive.block {\n    /* Force table to not be like tables anymore */\n  \n    /* Hide table headers (but not display: none;, for accessibility) */\n  \n    /* Label the data */\n  \n  }\n  .table-responsive.block table,\n  .table-responsive.block thead,\n  .table-responsive.block tbody,\n  .table-responsive.block th,\n  .table-responsive.block td,\n  .table-responsive.block tr {\n    display: block;\n  }\n  .table-responsive.block thead tr {\n    position: absolute;\n    top: -9999px;\n    left: -9999px;\n  }\n  .table-responsive.block tr {\n    border: 1px solid #e5e5e5;\n  }\n  .table-responsive.block td {\n    /* Behave  like a \"row\" */\n  \n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n    position: relative;\n    padding-left: 50%;\n    white-space: normal;\n    text-align: left;\n  }\n  .table-responsive.block td:before {\n    /* Now like a table header */\n  \n    position: absolute;\n    /* Top/left values mimic padding */\n  \n    vertical-align: middle;\n    left: 6px;\n    width: 45%;\n    padding-right: 10px;\n    white-space: nowrap;\n    text-align: right;\n    font-weight: bold;\n  }\n  .table-responsive.block td:before {\n    content: attr(data-title);\n  }\n}\n.table-invoice td {\n  border: none;\n  padding: 0;\n}\n.table-projects .stats span {\n  display: block;\n  text-transform: uppercase;\n  padding: 2px 0;\n}\n.table-projects .stats span.count {\n  font-size: 18pt;\n  font-weight: normal;\n  color: #4a8bc2;\n}\n.label.large {\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n  background: #e5e5e5;\n  color: #64625f;\n  text-shadow: 0 1px 0 #fff;\n}\n.label.label-primary {\n  background: #4a8bc2;\n}\n.label.label-warning {\n  background: #ab7a4b;\n}\n.label.label-important {\n  background: #bd362f;\n}\n.label.label-success {\n  background: #609450;\n}\n.label.label-block {\n  display: block;\n}\n.tooltip-inner {\n  background: #272a2c;\n  color: #bab9b9;\n}\n.tooltip.bottom .tooltip-arrow {\n  border-bottom-color: #272a2c;\n}\n.tooltip.top .tooltip-arrow {\n  border-top-color: #272a2c;\n}\n.tooltip.left .tooltip-arrow {\n  border-left-color: #272a2c;\n}\n.tooltip.right .tooltip-arrow {\n  border-right-color: #272a2c;\n}\n.tooltip.left {\n  margin-left: -13px;\n}\n#flotTip {\n  white-space: nowrap;\n  border: 1px solid #4a8bc2;\n  padding: 3px 8px;\n  background: #4a8bc2;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  position: absolute;\n  z-index: 100;\n  color: #fff;\n}\n.popover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n}\n.popover .popover-title {\n  font-weight: 600;\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n}\n#demo_popovers .popover {\n  position: relative;\n  display: block;\n  width: 100%;\n  margin: 0;\n}\n.modal-backdrop {\n  z-index: 10000;\n  background: #000000;\n}\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.modal {\n  z-index: 10001;\n  border-color: #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  background: #ffffff;\n}\n.modal .modal-header {\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  border-color: #dbdbdb;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.modal .modal-header h3 {\n  font-size: 14px;\n}\n.modal .modal-header .close {\n  position: absolute;\n  top: 5px;\n  right: 10px;\n  padding: 0;\n  margin: 0;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #7c7c7c;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.modal .modal-body {\n  padding: 10px;\n}\n.modal .modal-body p:last-child {\n  margin: 0;\n}\n.modal .modal-footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  border-color: #ebebeb;\n  padding: 10px;\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n.alert {\n  margin: 0 0 15px;\n  color: #fff;\n  border-color: #ab7a4b;\n  background: #ab7a4b;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n}\n.alert h4 {\n  margin: 0 0 5px;\n  color: #fff;\n}\n.alert.alert-error {\n  background: #bd362f;\n  color: #fff;\n  border-color: #bd362f;\n}\n.alert.alert-error .close {\n  color: #fff;\n}\n.alert.alert-error h4 {\n  color: #fff;\n}\n.alert.alert-primary {\n  background: #4a8bc2;\n  color: #fff;\n  border-color: #4a8bc2;\n}\n.alert.alert-primary .close {\n  color: #fff;\n}\n.alert.alert-primary h4 {\n  color: #fff;\n}\n.alert.alert-info {\n  background: #dff3f8;\n  color: #7399b9;\n  border-color: #93b9d8;\n}\n.alert.alert-info .close {\n  color: #7399b9;\n}\n.alert.alert-success {\n  border-color: #609450;\n  background: #609450;\n  color: #fff;\n}\n.alert.alert-success .close,\n.alert.alert-success h4 {\n  color: #fff;\n}\n.alert .close {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #fff;\n}\n.progress {\n  background: #ffffff;\n  margin: 0 0 10px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.progress .bar {\n  background: #e8e8e8;\n}\n.progress .bar.right {\n  text-align: right;\n  text-indent: 10px;\n  direction: rtl;\n}\n.progress.white {\n  background: #fff;\n}\n.progress.progress-info .bar {\n  background: #93b9d8;\n}\n.progress.progress-success .bar {\n  background: #609450;\n}\n.progress.progress-warning .bar {\n  background: #ab7a4b;\n}\n.progress.progress-primary .bar {\n  background: #4a8bc2;\n}\n.progress.progress-danger .bar {\n  background: #bd362f;\n}\n.progress.progress-inverse .bar {\n  background: #45484d;\n}\n.progress.progress-small {\n  height: 15px;\n}\n.progress.progress-small .bar {\n  font-size: 8px;\n  line-height: 15px;\n}\n.progress.progress-small .bar.right {\n  text-indent: 2px;\n}\n.progress.progress-mini {\n  height: 5px;\n}\n.accordion {\n  margin: 0 0 10px;\n  position: relative;\n}\n.accordion .accordion-group {\n  border-color: #dbdbdb;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.accordion .accordion-inner {\n  font-size: 13px;\n  background: #ffffff;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  border-color: #dbdbdb;\n}\n.accordion .accordion-heading .accordion-toggle {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  color: #7c7c7c;\n  text-decoration: none;\n  font-weight: 600;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n}\n.accordion.accordion-2 {\n  border: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle {\n  border-bottom: 1px solid #dbdbdb;\n  background: #ffffff;\n  height: 38px;\n  line-height: 38px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons {\n  padding: 0 10px;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i {\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  display: block;\n  float: left;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i:before {\n  font-size: 20px;\n  color: #cccccc;\n  top: auto;\n  left: auto;\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  position: relative;\n  text-align: center;\n}\n.accordion.accordion-2 .accordion-body.in {\n  border-bottom: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-group {\n  border: none;\n  margin: 0;\n}\n.accordion.accordion-2 .accordion-group:last-child .accordion-body.in {\n  border-top: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-inner {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.pager li > a,\n.pager li > span {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.pagination ul {\n  background: #ffffff;\n}\n.pagination ul > li > a:hover {\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n  border-color: #70a3cf;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a,\n.pagination ul > li > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  font-weight: 600;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.pagination ul > .disabled > a:hover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.gritter-item-wrapper .gritter-item p {\n  margin: 0 0 10px;\n}\n.gritter-item-wrapper .gritter-item p:last-child {\n  margin: 0;\n}\n.gritter-item-wrapper.gritter-primary .gritter-top {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-bottom {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item {\n  background: rgba(74, 139, 194, 0.9);\n  padding: 10px 10px 15px;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  color: #fff;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item a {\n  color: #fff;\n  text-decoration: underline;\n}\n.notyfy_wrapper {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.notyfy_wrapper.notyfy_alert {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_error {\n  background: #bd362f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_success {\n  background: #51a351;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_warning {\n  background: #74614f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_information {\n  background: #57B7E2;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_confirm {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2;\n  border: none;\n}\n.notyfy_wrapper.notyfy_primary,\n.notyfy_wrapper.notyfy_primary * {\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_default {\n  background: #fafafa;\n}\n.notyfy_wrapper.notyfy_dark {\n  background: #4a4846;\n}\n.notyfy_wrapper.notyfy_dark,\n.notyfy_wrapper.notyfy_dark * {\n  color: #fff;\n}\n#notyfy_container_top {\n  top: 0;\n  left: 0;\n  width: 100%;\n}\n#notyfy_container_top .notyfy_wrapper {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper {\n  border: none;\n  box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper p {\n  margin: 0;\n}\n#content-notification .notyfy_wrapper .notyfy_message {\n  padding: 15px 10px;\n}\n#content-notification .notyfy_wrapper.notyfy_default {\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_dark {\n  background: #4a4846 url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2 url(\"../images/pattern1.png\") repeat;\n  box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -moz-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -webkit-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n}\n.sliders-vertical span {\n  height: 120px;\n  float: left;\n  margin: 15px;\n}\n.ui-slider-wrap {\n  display: block;\n  padding: 5px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider {\n  background: rgba(0, 0, 0, 0.1);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal {\n  height: 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal .ui-slider-handle {\n  top: -5px;\n}\n.ui-slider-wrap .ui-slider-vertical .ui-slider-handle {\n  left: -4px;\n}\n.ui-slider-wrap .ui-slider-handle {\n  -webkit-border-radius: 50% 50% 50% 50%;\n  -moz-border-radius: 50% 50% 50% 50%;\n  border-radius: 50% 50% 50% 50%;\n  background: #fff;\n  border-width: 3px;\n  border-style: solid;\n  border-color: rgba(0, 0, 0, 0.3);\n  width: 13px;\n  height: 13px;\n  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n}\n.ui-slider-wrap .ui-slider-range {\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  background: rgba(0, 0, 0, 0.2);\n}\n.ui-slider-wrap .slider-primary .ui-slider-handle {\n  border-color: #4a8bc2;\n}\n.ui-slider-wrap .slider-primary .ui-slider-range {\n  background: #4a8bc2;\n}\n.ui-slider-wrap .slider-warning .ui-slider-handle {\n  border-color: #FBB450;\n}\n.ui-slider-wrap .slider-warning .ui-slider-range {\n  background: #FBB450;\n}\n.ui-slider-wrap .slider-success .ui-slider-handle {\n  border-color: #609450;\n}\n.ui-slider-wrap .slider-success .ui-slider-range {\n  background: #609450;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-handle {\n  border-color: #3F4246;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-range {\n  background: #3F4246;\n}\n.ui-slider-wrap .slider-info .ui-slider-handle {\n  border-color: #93B9D8;\n}\n.ui-slider-wrap .slider-info .ui-slider-range {\n  background: #93B9D8;\n}\n.sliders-vertical {\n  position: relative;\n  margin: 0 auto;\n  display: inline-block;\n}\n.sliders-vertical .ui-slider-wrap {\n  margin: 0 5px;\n}\n.sliders-vertical .ui-slider {\n  margin: 0;\n}\n.vertical-range-slider .ui-slider-wrap {\n  display: inline-block;\n  margin: 0 auto;\n}\n.sliderContainer {\n  height: 35px;\n  margin-top: 50px;\n  width: 100%;\n}\n.sliderContainer select,\n.sliderContainer textarea,\n.sliderContainer input[type=\"text\"],\n.sliderContainer input[type=\"password\"],\n.sliderContainer input[type=\"datetime\"],\n.sliderContainer input[type=\"datetime-local\"],\n.sliderContainer input[type=\"date\"],\n.sliderContainer input[type=\"month\"],\n.sliderContainer input[type=\"time\"],\n.sliderContainer input[type=\"week\"],\n.sliderContainer input[type=\"number\"],\n.sliderContainer input[type=\"email\"],\n.sliderContainer input[type=\"url\"],\n.sliderContainer input[type=\"search\"],\n.sliderContainer input[type=\"tel\"],\n.sliderContainer input[type=\"color\"],\n.sliderContainer .uneditable-input {\n  margin: 0;\n  padding: 2px 4px;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container {\n  margin: 0 20px;\n}\n.sliderContainer .ui-rangeSlider-bar {\n  background: #4a8bc2;\n  height: 30px;\n  margin: 0;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-noArrow .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-bar {\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.sliderContainer .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-label {\n  background: #e5e5e5;\n  color: #7c7c7c;\n  font-size: 13px;\n}\n.sliderContainer .ui-rangeSlider-container {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-editRangeSlider .ui-rangeSlider-label {\n  padding: 5px;\n}\n.sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #e5e5e5;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4a8bc2;\n  margin-right: -4px;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4a8bc2;\n  margin-left: -4px;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  width: 20px;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale {\n  overflow: hidden;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label {\n  color: #7c7c7c;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-bar {\n  background: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #bd362f;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-bar {\n  background: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #609450;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-bar {\n  background: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #ab7a4b;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #cecece;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-container,\n.widget-body-gray .sliderContainer .ui-rangeSlider-arrow,\n.widget-body-gray .sliderContainer .ui-rangeSlider-label {\n  background: #cecece;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-bar {\n  background: #4d4d4d;\n}\n.ui-widget-header {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n  background: #fafafa;\n  border-color: #dddddd;\n  color: #797979;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-widget-content {\n  border: none;\n}\n.ui-datepicker {\n  padding: 10px;\n  background: #fff;\n  font-size: 12px;\n}\n.ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.widget-body-gray .ui-datepicker {\n  background: none;\n  padding: 0;\n  font-size: 12px;\n}\n.widget-body-gray .ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-datepicker-inline {\n  width: 100%;\n  padding: 0;\n}\n.datepicker-inline {\n  margin: 0 0 5px;\n}\n.wizard .wizard-head {\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-bottom: none;\n}\n.bwizard-steps .label {\n  position: relative;\n  top: -1px;\n  margin: 0 5px 0 0;\n  padding: 1px 5px 2px;\n}\n.bwizard-steps .active .label {\n  background-color: #333;\n}\n.bwizard-steps {\n  display: block;\n  margin: 0;\n  padding: 0;\n  height: 40px;\n  list-style: none;\n}\n.bwizard-steps li {\n  display: block;\n  float: left;\n  position: relative;\n  margin-right: 5px;\n  line-height: 40px;\n  height: 40px;\n  background: #fafafa;\n}\n.bwizard-steps li a {\n  display: block;\n  height: 40px;\n  line-height: 40px;\n  padding: 0 20px 0 40px;\n}\n.bwizard-steps li.active {\n  color: #fff;\n  background: #4a8bc2;\n}\n.bwizard-steps li.active:after {\n  border-left-color: #4a8bc2;\n}\n.bwizard-steps li.active a {\n  color: #fff;\n  cursor: default;\n}\n.bwizard-steps li:after {\n  position: absolute;\n  right: -20px;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fafafa;\n  border-top: 20px inset transparent;\n  content: \"\";\n  z-index: 2;\n}\n.bwizard-steps li:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fff;\n  border-top: 20px inset transparent;\n  content: \"\";\n}\n.bwizard-steps li:last-child {\n  margin-right: 0;\n}\n.bwizard-steps li:first-child:before {\n  border: none;\n}\n.bwizard-steps li:first-child a {\n  padding-left: 20px;\n}\n.bwizard-steps a:hover {\n  text-decoration: none;\n}\n.bwizard-steps.clickable li:not (.active ) {\n  cursor: pointer;\n}\n.bwizard-steps.clickable li:hover:not (.active ) {\n  background: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ):after {\n  border-left-color: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ) a {\n  color: #08c;\n}\n@media (max-width: 480px) {\n  /* badges only on small screens */\n  .bwizard-steps li:after,\n  .bwizard-steps li:before {\n    border: none;\n  }\n  .bwizard-steps li,\n  .bwizard-steps li.active,\n  .bwizard-steps li:first-child,\n  .bwizard-steps li:last-child {\n    margin-right: 0;\n    padding: 0;\n    background-color: transparent;\n  }\n}\n.layout-timeline {\n  border-top-color: #d2d1d0 !important;\n  border-top-width: 2px !important;\n}\n.layout-timeline > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  width: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline .media {\n  margin: 0 0 15px;\n}\n.layout-timeline .media .media-body {\n  padding: 10px 0 0;\n  line-height: 17px;\n}\n.layout-timeline .media .media-body .author {\n  font-size: 14px;\n}\n.layout-timeline .glyphicons.pencil {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  margin: 0;\n  padding: 0;\n  width: 20px;\n  height: 20px;\n}\n.layout-timeline .glyphicons.pencil i:before {\n  top: 0;\n  right: 0;\n  font-size: 17px;\n  color: #cccccc;\n}\n.layout-timeline ul.timeline {\n  list-style: none;\n  margin: 0;\n  padding: 15px 15px 15px 30px;\n}\n.layout-timeline ul.timeline > li {\n  position: relative;\n  padding: 0 0 15px;\n}\n.layout-timeline ul.timeline > li .date {\n  width: 50px;\n  padding: 5px 0;\n  text-align: center;\n  text-transform: uppercase;\n  font-weight: 600;\n  position: absolute;\n  left: -70px;\n  top: 0;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .date strong {\n  display: block;\n  line-height: 10px;\n  padding: 3px 0 0;\n}\n.layout-timeline ul.timeline > li .type {\n  position: absolute;\n  text-transform: uppercase;\n  color: #7c7c7c;\n  font-weight: 600;\n  padding: 0 35px 0 0;\n  top: 15px;\n  width: 100px;\n  text-align: right;\n  left: -195px;\n  line-height: 24px;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .type i:before {\n  left: auto;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type .time {\n  position: absolute;\n  top: 24px;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type:after {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -60px;\n  top: 12px;\n  width: 45px;\n  height: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .type:before {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -20px;\n  top: 9px;\n  width: 8px;\n  height: 8px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .separator .type {\n  top: 60px;\n}\n.layout-timeline ul.timeline > li .alert-gray {\n  background: #f8f8f8;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  border: none;\n  margin: 0;\n}\n.layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 0 5px 25px;\n}\n.layout-timeline ul.timeline > li p.glyphicons i:before {\n  color: #dfdfdf;\n  font-size: 17px;\n  top: 5px;\n  left: 0;\n}\n.layout-timeline ul.timeline > li .widget-body-gray .glyphicons i:before {\n  color: #7c7c7c;\n}\n.layout-timeline ul.timeline > li .widget-body-gray a {\n  color: #000;\n  text-decoration: underline;\n}\n.layout-timeline ul.timeline > li .widget-body-gray strong {\n  font-weight: 400;\n  color: #000;\n}\n.layout-timeline ul.timeline > li.active .type {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type i:before {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after {\n  background: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active:before {\n  display: block;\n  position: absolute;\n  content: \"\";\n  top: 0;\n  bottom: 0;\n  left: -45px;\n  width: 2px;\n  z-index: 2;\n  background: #4a8bc2;\n}\n.nav-timeline > li {\n  margin: 0 0 5px;\n}\n.nav-timeline > li > a {\n  background: #b3b3b3;\n  border: none;\n  margin: 0 !important;\n  font-weight: 600;\n}\n.nav-timeline > li > a.glyphicons {\n  padding: 8px 12px;\n}\n.nav-timeline > li > a.glyphicons i:before {\n  position: absolute;\n  left: auto;\n  right: 8px;\n  top: 8px;\n  color: #fff;\n}\n.nav-timeline > li.active > a {\n  background: #4a8bc2;\n}\nbody.login {\n  background: #f0f0f0;\n}\nbody.login #login {\n  padding: 40px 0 0;\n}\nbody.login #login a:not(.btn) {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nbody.login #login h1 {\n  font-size: 20pt;\n  text-align: center;\n  display: block;\n  padding: 0 0 20px;\n  text-shadow: 0 1px 0 #ffffff;\n}\nbody.login #login h1 i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n  color: #7c7c7c;\n}\nbody.login #login .wrapper {\n  max-width: 354px;\n  min-width: 300px;\n  margin: 0 auto;\n  position: relative;\n}\nbody.login #login .wrapper.signup {\n  max-width: 600px;\n}\nbody.login #login .widget .widget-head .btn {\n  margin: -4px 0 0 5px;\n}\nbody.login #login .widget .widget-head div {\n  font-size: 12px;\n}\nbody.login #login .widget .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  background: #fafafa;\n}\nbody.login #login .widget .widget-footer {\n  height: 40px;\n  line-height: 40px;\n  margin: 15px 0 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n}\nbody.login #login .widget .widget-footer p {\n  font-size: 12px;\n  color: #7c7c7c;\n  font-weight: 600;\n  margin: 0;\n  width: auto;\n  float: none;\n  padding: 0 10px 0 35px;\n  display: block;\n  height: 40px;\n  line-height: 40px;\n}\nbody.login #login .widget .widget-footer p i:before {\n  top: 7px;\n  left: 7px;\n}\nbody.login #login label {\n  font-size: 13px;\n  color: #7c7c7c;\n  font-weight: 600;\n}\nbody.login #login .checkbox {\n  margin-top: 5px;\n}\nbody.login #login .password {\n  float: right;\n  font-size: 12px;\n  font-weight: 400;\n}\nbody.login #login input[type=\"text\"],\nbody.login #login input[type=\"password\"] {\n  font-size: 13px;\n  height: auto;\n  margin-bottom: 10px;\n  padding: 5px 9px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n}\nbody.login #login ::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #ccc;\n}\nbody.login #login :-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #ccc;\n}\nbody.login #login ::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #ccc;\n}\nbody.login #login :-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #ccc;\n}\nbody.login #login form {\n  margin: 0;\n}\nbody.login #login p {\n  margin: 5px 0;\n}\nbody.login #login p:first-child {\n  margin: 0 0 10px;\n}\nbody.login #login p:last-child {\n  margin: 10px 0 0;\n}\nbody.login #login .form-signin {\n  position: relative;\n  max-width: 600px;\n  margin: 0 auto 20px;\n  background-color: #fff;\n  border: 1px solid #e5e5e5;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\nbody.login #login .form-signin .inner {\n  padding: 20px;\n}\n.gallery ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.gallery ul li .thumb {\n  position: relative;\n  display: block;\n  padding: 5px;\n  margin-bottom: 10px;\n  z-index: 1;\n  overflow: hidden;\n}\n.gallery ul li.span2:nth-child(6n+7) {\n  margin-left: 0;\n}\n.gallery ul li.span3:nth-child(4n+5) {\n  margin-left: 0;\n}\n.gallery ul li.span4:nth-child(3n+4) {\n  margin-left: 0;\n}\n.gallery.gallery-masonry li[class*=\"span\"] {\n  margin-left: 0;\n}\n.gallery.gallery-2 li .thumb {\n  padding: 0;\n  border-color: #4c4c4c;\n}\n.thumb {\n  display: block;\n  padding: 3px;\n  border: 1px solid #dbdbdb;\n}\n.thumb,\n.thumb img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails {\n  margin: 0;\n}\n.thumbnails > li {\n  margin-bottom: 15px;\n}\n.thumbnails > li .thumbnail {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails > li .thumbnail .caption {\n  color: #7c7c7c;\n}\n.thumbnails > li a.thumbnail:hover,\n.thumbnails > li a.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.thumbnail {\n  border-color: #dbdbdb;\n}\na.thumbnail .caption {\n  display: block;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.carousel {\n  margin-bottom: 15px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .carousel-control {\n  font-size: 45px;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background: #e5e5e5;\n  color: #000;\n  border-color: #000;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-control.right {\n  text-align: center;\n}\n.carousel .carousel-inner {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  border: 1px solid #dbdbdb;\n}\n.carousel .item {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .item img {\n  min-width: 100%;\n}\n.carousel .carousel-caption {\n  background: rgba(229, 229, 229, 0.95);\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-caption p {\n  color: #7c7c7c;\n}\n.carousel .carousel-caption h4 {\n  font-size: 12pt;\n  color: #000;\n  font-weight: 600;\n}\n.carousel .carousel-caption a {\n  text-decoration: underline;\n  color: #000;\n}\n.carousel.carousel-1 {\n  height: 223px;\n  margin-bottom: 33px;\n  background: #e5e5e5;\n}\n.carousel.carousel-1 .item {\n  height: 223px;\n  overflow: hidden;\n}\n.carousel.carousel-1 .item img {\n  min-height: 100%;\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.carousel.carousel-1 .carousel-indicators {\n  top: auto;\n  bottom: -23px;\n  right: 0;\n}\n.carousel.carousel-1 .carousel-indicators li {\n  background: #96bcdc;\n}\n.carousel.carousel-1 .carousel-indicators li.active {\n  background: #4a8bc2;\n}\n.carousel.carousel-1 .carousel-caption {\n  height: 193px;\n  background: #e5e5e5;\n  top: 0;\n}\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n.jcrop-holder {\n  margin: 0 auto;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.jcrop-holder img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.fc-state-highlight {\n  background: rgba(0, 0, 0, 0.2);\n}\n#external-events ul {\n  list-style: none;\n  margin: 0 0 20px;\n}\n#external-events li {\n  margin: 0 0 5px;\n  padding: 2px 5px;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  font-size: .85em;\n  cursor: pointer;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n#external-events li.glyphicons {\n  padding: 2px 5px 2px 30px;\n  display: block;\n}\n#external-events li.glyphicons i:before {\n  font-size: 14px;\n  color: #fff;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.3);\n  height: 24px;\n  width: 24px;\n  line-height: 24px;\n  text-align: center;\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  border-right: 1px solid rgba(255, 255, 255, 0.4);\n}\n.fc-header-title h2 {\n  font-size: 16pt;\n  line-height: 25px;\n}\n.fc-event-skin {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.fc-event-time,\n.fc-event-title {\n  padding: 0 5px;\n}\n#calendar .btn-group .btn-primary {\n  margin-right: 2px;\n}\n#guided-tour {\n  position: fixed;\n  z-index: 10000;\n  top: 100px;\n  right: -100%;\n  width: 40px;\n  height: 20px;\n  padding: 10px;\n  background: #4a8bc2;\n  font-size: 14pt;\n  color: #fff;\n  text-align: center;\n  box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n  -webkit-transition: width 0.5s ease;\n  -moz-transition: width 0.5s ease;\n  -o-transition: width 0.5s ease;\n  transition: width 0.5s ease;\n  overflow: hidden;\n  white-space: nowrap;\n}\n#guided-tour .hide {\n  float: left;\n  height: 0;\n  display: inline-block !important;\n  opacity: 0;\n  -webkit-transition: opacity 0.6s ease;\n  -moz-transition: opacity 0.6s ease;\n  -o-transition: opacity 0.6s ease;\n  transition: opacity 0.6s ease;\n}\n#guided-tour #close-tour {\n  display: none;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  padding: 10px;\n  color: rgba(0, 0, 0, 0.8);\n  text-shadow: 0 1px 0 #fff;\n  background: rgba(255, 255, 255, 0.6);\n}\n#guided-tour #close-tour:hover {\n  background: rgba(255, 255, 255, 0.9);\n}\n#guided-tour:hover {\n  width: 100px;\n  padding: 10px 40px 10px 10px;\n}\n#guided-tour:hover .hide {\n  padding: 0 5px 0 0;\n  opacity: 1;\n  height: auto;\n}\n#guided-tour:hover #close-tour {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  margin: 0;\n  width: 100%;\n  height: auto;\n  padding: 20px;\n  z-index: 9000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  margin: 0 90px 0 120px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages h4 {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages p:last-child {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(0, 0, 0, 0.4);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover:after {\n  border-top-color: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover:after {\n  border-bottom-color: rgba(0, 0, 0, 0.9);\n}\n.tlypageguide_shadow:after {\n  background: rgba(74, 139, 194, 0.2);\n  box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -moz-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -webkit-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  top: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  top: 20px;\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #4a8bc2;\n}\n#docs_icons {\n  text-align: center;\n  padding: 0 20px;\n}\n#docs_icons .glyphicons {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n  width: 125px;\n  font-size: 12px;\n  line-height: 48px;\n  overflow: hidden;\n  color: #7c7c7c;\n}\n#docs_icons .glyphicons i:before {\n  line-height: 55px !important;\n  color: #4a8bc2;\n}\n.documentation ul ul {\n  margin-bottom: 10px;\n}\n.documentation .span3 .menu.affix {\n  position: fixed;\n  top: 20px;\n  width: 220px;\n}\n.documentation .show-grid {\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n.documentation .show-grid [class*=\"span\"] {\n  background-color: #535a5e;\n  text-align: center;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  min-height: 40px;\n  line-height: 40px;\n  color: #fff;\n}\n.documentation .show-grid .show-grid {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.documentation .show-grid .show-grid [class*=\"span\"] {\n  background-color: #848d93;\n}\n#landing_1 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_1 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_1 .banner {\n  background: #000;\n  height: 321px;\n}\n#landing_1 .banner .banner-wrapper {\n  height: 321px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_1 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n  background: #000;\n}\n#landing_1 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 65px;\n  right: 27px;\n  position: absolute;\n  background: #fff;\n  color: #4a8bc2;\n  font-size: 22pt;\n  font-weight: bold;\n  padding: 0 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 126px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 370px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_1 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  top: 232px;\n  right: 27px;\n}\n#landing_2 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_2 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_2 .banner {\n  background: #1f2123;\n  height: 356px;\n}\n#landing_2 .banner .banner-wrapper {\n  height: 356px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_2 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 55px;\n  right: 27px;\n  position: absolute;\n  color: #fff;\n  font-size: 27pt;\n  font-weight: bold;\n  text-shadow: none;\n  padding: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 115px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 380px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  bottom: 40px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-primary {\n  right: 230px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-danger {\n  right: 27px;\n  bottom: 37px;\n}\n.container-960 {\n  width: 960px;\n  margin: 0 auto;\n}\n.separator-line {\n  width: 100%;\n  height: 1px;\n  background: #e5e5e5;\n  margin-bottom: 10px;\n}\n#choose-preview {\n  padding: 50px 0;\n}\n#choose-preview h2 {\n  margin-left: 0;\n}\n#choose-preview h2 span.text-primary {\n  font-size: 26pt;\n  font-weight: bold;\n  top: auto;\n}\n#choose-preview .control-group {\n  margin: 0 0 5px;\n}\n#choose-preview select {\n  color: #000;\n}\n#choose-preview .heading-buttons {\n  margin-bottom: 10px;\n}\n#choose-preview .box {\n  padding: 10px;\n}\n#choose-preview .box .options {\n  display: none;\n}\n#choose-preview .box .actions a {\n  display: none;\n}\n#choose-preview .box .actions a.btn-active {\n  display: inline-block;\n}\n#choose-preview .box h3 {\n  text-transform: uppercase;\n  margin: 0 0 12px;\n}\n#choose-preview .box.active {\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n}\n#choose-preview .box.active .options {\n  display: block;\n}\n#choose-preview .box.active h3 {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n}\n#choose-preview.style-dark .well {\n  background: #ffffff;\n}\n#choose-preview.style-dark .box.active {\n  background: #fafafa;\n  border-color: #ebebeb;\n}\n#choose-preview.style-dark .box.active h3 {\n  text-shadow: none;\n  color: #fff;\n}\n#choose-preview.style-dark .box.active hr {\n  border-top-color: #ebebeb;\n}\nhtml.front .menu-hidden .navbar.main {\n  height: 99px;\n}\nhtml.front .navbar.main {\n  height: auto;\n  left: 0 !important;\n}\nhtml.front .navbar.main .secondary {\n  height: 49px;\n  line-height: 49px;\n  position: relative;\n  overflow: hidden;\n  background-color: #275b87;\n  border-bottom: 1px solid #346d9d;\n}\nhtml.front .navbar.main .secondary .appbrand {\n  font-weight: 700;\n  font-size: 25pt;\n  color: #fff;\n  text-decoration: none;\n  padding: 0 8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type {\n  border-left: none;\n  margin-left: -8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type > li:first-of-type {\n  border-left: none;\n}\nhtml.front .navbar.main li.search {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\nhtml.front .navbar.main li.glyphs + .glyphs {\n  padding-left: 0;\n}\nhtml.front .navbar.main li.glyphs {\n  border: none;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  margin-left: 0;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons {\n  color: #538fc1;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons i {\n  display: inline-block;\n  width: 32px;\n  vertical-align: top;\n}\nhtml.front .navbar.main li.glyphs ul li.active .glyphicons,\nhtml.front .navbar.main li.glyphs ul li:hover .glyphicons {\n  color: #fff;\n}\nhtml.front .navbar.main li.glyphs ul li.single,\nhtml.front .navbar.main li.glyphs ul li.single:last-child {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nhtml.front #content {\n  margin: 0;\n}\nhtml.front #footer {\n  background: #1f2123;\n  color: #919192;\n}\nhtml.front #footer a:not(.btn) {\n  color: #4a8bc2;\n}\nhtml.front #footer .copy {\n  background: #000;\n  color: #2a2a2a;\n  text-align: left;\n}\nhtml.front #footer .copy a {\n  color: #2a2a2a;\n  text-decoration: none;\n}\nhtml.front #footer .copy .appbrand {\n  position: absolute;\n  right: 10px;\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n}\nhtml.front #footer .box-generic {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  background: #191a1c;\n  border: none;\n}\nhtml.front #footer h4 {\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n  text-shadow: none;\n  color: #fff;\n  margin: 0 0 8px;\n}\nhtml.front #footer ul {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\nhtml.front #footer ul li {\n  display: block;\n  background: #191a1c;\n  margin: 0 0 1px;\n  line-height: 30px;\n  height: 30px;\n}\nhtml.front #footer ul li a {\n  line-height: 30px;\n  height: 30px;\n  display: block;\n  padding: 0 10px;\n}\nhtml.front #footer ul li:first-of-type {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nhtml.front #footer ul li:last-of-type {\n  margin: 0;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nhtml.front #footer ul.icons li {\n  padding: 0 10px 0 35px;\n}\nhtml.front #footer ul.icons li i:before {\n  top: 7px;\n  left: 10px;\n}\nhtml.front #contact_gmap {\n  height: 400px;\n}\nhtml.rtl {\n  /* Buttons */\n\n  /* Typography */\n\n  /* Widgets */\n\n  /* Tabs */\n\n  /* Form elements */\n\n  /* Tables */\n\n  /* Menus */\n\n  /* UI elements */\n\n  /* Layout */\n\n  /* Timeline */\n\n  /* Login */\n\n  /* Front */\n\n}\nhtml.rtl .btn-group.btn-block .leadcontainer {\n  left: 29px;\n  right: 0;\n}\nhtml.rtl .btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\nhtml.rtl .btn-group.btn-block .dropdown-toggle {\n  float: left;\n}\nhtml.rtl .btn-toggle-code {\n  left: 0;\n  right: auto;\n}\nhtml.rtl h3.glyphicons,\nhtml.rtl h2.glyphicons {\n  padding: 0 45px 0 0;\n}\nhtml.rtl h3.glyphicons i:before,\nhtml.rtl h2.glyphicons i:before {\n  left: auto;\n  right: 2px;\n}\nhtml.rtl .widget .widget-head .heading {\n  float: right;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons {\n  padding: 0 35px 0 0;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget .widget-head {\n  padding: 0 0 0 15px;\n}\nhtml.rtl .widget .details.pull-right {\n  float: left;\n}\nhtml.rtl .breadcrumb li.pull-right {\n  float: left;\n}\nhtml.rtl [data-toggle=\"collapse-widget\"] .collapse-toggle {\n  float: left;\n}\nhtml.rtl .widget-activity ul.list li > span {\n  float: right;\n}\nhtml.rtl .widget-activity ul.list li.double .activity-icon {\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .widget-activity ul.list li:hover:after,\nhtml.rtl .widget-activity ul.list li.highlight:after {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .widget .widget-body.list ul li .count {\n  float: left;\n}\nhtml.rtl .widget .widget-body.list ul li {\n  text-align: right;\n}\nhtml.rtl .widget .widget-body.list ul li .badge {\n  left: 8px;\n  right: auto;\n}\nhtml.rtl .media > .pull-left {\n  float: right;\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .media > .pull-right {\n  float: left;\n  margin-right: 10px;\n  margin-left: 0;\n}\nhtml.rtl .widget-chat .media small.author {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget-chat .media.right small.author {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .breadcrumb li a.glyphicons {\n  padding: 0 25px 0 0;\n}\nhtml.rtl .breadcrumb li a.glyphicons i:before {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li {\n  border-right: none;\n  border-left: 1px solid #dbdbdb;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:last-child {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 35px 0 15px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a i:before {\n  left: auto;\n  right: 5px;\n}\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li a.glyphicons,\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 38px 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  right: auto;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head {\n  padding: 0;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head ul li {\n  border-left: none;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head {\n  padding: 10px 10px 10px 0;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head ul li {\n  border: none;\n}\nhtml.rtl .widget.widget-tabs-icons-only .widget-head ul.pull-right {\n  float: left;\n}\nhtml.rtl .tabsbar.tabsbar-2 ul li a {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .tabsbar ul li a i {\n  float: right;\n}\nhtml.rtl .bootstrap-select.btn-group,\nhtml.rtl .bootstrap-select.btn-group[class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .select2-container-multi .select2-search-choice-close {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .select2-container-multi .select2-choices .select2-search-choice {\n  padding: 3px 18px 3px 5px;\n}\nhtml.rtl .select2-container img.flag,\nhtml.rtl .select2-drop img.flag {\n  padding: 0 0 0 10px;\n}\nhtml.rtl .radio,\nhtml.rtl .checkbox {\n  padding: 0;\n}\nhtml.rtl div.checker {\n  margin: 0 0 0 5px;\n}\nhtml.rtl div.dataTables_paginate {\n  float: left;\n}\nhtml.rtl div.dataTables_filter label {\n  float: left;\n}\nhtml.rtl .table td.right,\nhtml.rtl .table th.right {\n  text-align: left;\n}\nhtml.rtl .navbar.main .topnav > li.search form input {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n  padding: 0 35px 0 10px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  left: auto;\n  right: 7px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  left: auto;\n  right: 8px;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n}\nhtml.rtl .navbar.main .topnav > li {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav > li:first-child {\n  border-left: none;\n}\nhtml.rtl .navbar.main .topnav > li.search,\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  margin: 0;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n  box-shadow: -1px 0 0 0 #346d9d, 1px 0 0 0 #619aca;\n}\nhtml.rtl .navbar.main .topnav.pull-left {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav.pull-left:first-of-type {\n  padding-right: 8px;\n}\nhtml.rtl .navbar.main .topnav.pull-right {\n  float: left;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left: 1px solid #346d9d;\n}\nhtml.rtl .navbar.main .topnav.open .dropdown-menu {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .navbar.main .topnav .submenu-show.pull-right {\n  left: auto !important;\n  right: 100% !important;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right {\n  float: left;\n}\nhtml.rtl .ribbon-wrapper {\n  right: auto;\n  left: -3px;\n}\nhtml.rtl .ribbon-wrapper .ribbon {\n  -webkit-transform: rotate(-45deg);\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  left: auto;\n  right: -5px;\n}\nhtml.rtl .ribbon-wrapper .ribbon:after {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .ribbon-wrapper .ribbon:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .innerLR {\n  padding: 0 15px;\n  position: relative;\n}\nhtml.rtl .innerL {\n  padding-right: 15px;\n  padding-left: 0;\n  position: relative;\n}\nhtml.rtl .innerR {\n  padding-left: 15px;\n  padding-right: 0;\n  position: relative;\n}\nhtml.rtl .layout-timeline ul.timeline {\n  padding: 15px 30px 15px 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .date {\n  right: -70px;\n  left: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type {\n  right: -195px;\n  left: auto;\n  text-align: left;\n  padding: 0 0 0 35px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type i:before {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type .time {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:before {\n  left: -20px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:after {\n  left: -60px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .glyphicons.pencil {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 25px 5px 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .layout-timeline .nav-timeline > li > a.glyphicons i:before {\n  right: auto;\n  left: 8px;\n}\nhtml.rtl body.login #login .password {\n  float: left;\n}\nhtml.rtl.front .navbar.main .secondary .appbrand.pull-left {\n  float: right;\n}\nhtml.rtl.front .navbar.main .topnav.pull-right > li:last-child {\n  border-left: none;\n}\nhtml.rtl.front .navbar.main .secondary ul.topnav:first-of-type {\n  margin-left: 0;\n  padding-left: 8px;\n}\n/* Responsive */\n@media (max-width: 767px) {\n  html.rtl .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  html.rtl .layout-timeline ul.timeline > li .date {\n    right: auto;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type {\n    right: auto;\n    margin: 0 0 10px 60px;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type .time {\n    left: -40px;\n    right: auto;\n  }\n  html.rtl .navbar.main .topnav > li {\n    float: none;\n    border-right: none;\n  }\n  html.rtl .navbar.main .topnav > li.search {\n    box-shadow: none !important;\n    -moz-box-shadow: none !important;\n    -webkit-box-shadow: none !important;\n  }\n  html.rtl .navbar.main .topnav > li.search form button {\n    right: auto;\n    left: 0;\n  }\n  html.rtl .navbar.main .topnav,\n  html.rtl .navbar.main .topnav.pull-left,\n  html.rtl .navbar.main .topnav.pull-right {\n    float: none;\n  }\n  html.rtl .navbar.main .topnav.pull-left:first-of-type {\n    padding-right: 0;\n  }\n  html.rtl .navbar.main .topnav.open .dropdown-menu {\n    right: auto;\n    left: auto;\n  }\n  html.rtl .navbar.main .topnav .submenu-show.pull-right {\n    left: auto !important;\n    right: auto !important;\n  }\n}\n.lt-ie9 .widget .widget-body.list ul li {\n  border-bottom: 1px solid #efefef;\n}\n.lt-ie9 .navbar.main .btn-navbar {\n  float: left;\n}\n.lt-ie9 .navbar.main .topnav {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 42px;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  margin-top: 0;\n  top: 8px;\n  left: 5px;\n}\n.lt-ie9 .heading-buttons h1.glyphicons,\n.lt-ie9 .heading-buttons h2.glyphicons,\n.lt-ie9 .heading-buttons h3.glyphicons,\n.lt-ie9 .heading-buttons h4.glyphicons,\n.lt-ie9 .heading-buttons h5.glyphicons,\n.lt-ie9 .heading-buttons h6.glyphicons {\n  float: left;\n}\n.lt-ie9 #guided-tour .hide {\n  display: none !important;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on {\n  width: 24px;\n  padding-right: 0;\n  padding-left: 0;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i {\n  width: 24px;\n  height: 24px;\n  display: block;\n  vertical-align: middle;\n  line-height: 24px;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i:before {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n  top: auto;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  vertical-align: middle;\n  margin-top: 0;\n  top: 0;\n}\n.lt-ie9 #footer {\n  background: #222;\n}\n.lt-ie9 #footer .copy {\n  background: #111;\n}\n.lt-ie9 .ribbon-wrapper {\n  display: none;\n}\n/* Desktop wide */\n@media (min-width: 1200px) {\n  .navbar.main .topnav > li.search form input {\n    width: 155px;\n  }\n}\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px) {\n  body > .container-fluid.fixed {\n    width: 98%;\n    margin: 10px auto 10px;\n  }\n  .hidden-desktop-1 {\n    display: none !important;\n  }\n}\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px) {\n  .navbar.main .topnav > li.search {\n    margin-left: 10px !important;\n  }\n}\n@media (max-width: 979px) {\n  body > .container-fluid.fixed {\n    width: auto;\n    border: none;\n    margin: 0;\n  }\n}\n@media (max-width: 767px) {\n  body {\n    padding: 0;\n  }\n  .nav-tabs > li > a {\n    font-size: 10pt;\n  }\n  .nav-tabs > li > a,\n  .nav-pills > li > a {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n  .documentation .span3 .menu.affix {\n    position: relative;\n    top: 0;\n    width: auto;\n  }\n  .phone-margin.bottom {\n    margin: 0 0 10px;\n  }\n  .well {\n    padding: 5px;\n  }\n  .widget .widget-body {\n    padding: 5px;\n  }\n  .widget.margin-bottom-none {\n    margin-bottom: 10px;\n  }\n  .widget.widget-tabs .widget-head {\n    height: auto;\n    padding: 0;\n  }\n  .widget.widget-tabs .widget-head ul {\n    display: block;\n    border-right: none;\n    height: auto;\n  }\n  .widget.widget-tabs .widget-head ul li {\n    float: none;\n    display: block;\n    width: 100%;\n  }\n  .widget.widget-tabs-icons-only .widget-head {\n    height: auto;\n  }\n  .widget-activity ul.list li > span.ellipsis {\n    max-width: 60%;\n  }\n  .widget-activity ul.list li.double > span.ellipsis {\n    max-width: 75%;\n  }\n  .widget-gallery .nav {\n    display: none;\n  }\n  .widget-gallery.widget-gallery-slide .gallery {\n    width: auto;\n  }\n  .widget-chat .media .pull-left,\n  .widget-chat .media .pull-right {\n    margin: 0;\n  }\n  .widget-chat .chat-controls {\n    height: 60px;\n  }\n  .widget-chat {\n    padding-bottom: 90px !important;\n  }\n  .widget-chat .media small.author {\n    position: relative;\n    top: auto;\n    left: auto;\n    right: auto;\n    width: auto;\n  }\n  .widget-chat .media small.date {\n    border: none;\n  }\n  .tabsbar,\n  .tabsbar.tabsbar-2 {\n    height: auto;\n  }\n  .tabsbar ul,\n  .tabsbar.tabsbar-2 ul {\n    height: auto;\n  }\n  .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  .layout-timeline ul.timeline > li .date {\n    position: relative;\n    left: auto;\n    display: block;\n    top: auto;\n  }\n  .layout-timeline ul.timeline > li .type {\n    position: relative;\n    left: auto;\n    top: auto;\n    width: auto;\n    margin: 0 60px 10px 0;\n  }\n  .layout-timeline ul.timeline > li .type:before,\n  .layout-timeline ul.timeline > li .type:after {\n    display: none;\n  }\n  .layout-timeline ul.timeline > li .type .time {\n    top: 0;\n    right: -40px;\n  }\n  .layout-timeline ul.timeline > li.active .separator .type {\n    margin-bottom: 0;\n  }\n  .layout-timeline ul.timeline > li .separator .type {\n    top: auto;\n  }\n  .widget-activity ul.list {\n    margin: 0;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n    height: 35px;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head ul li {\n    float: left;\n    width: auto;\n  }\n  .media {\n    text-align: center;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    border: none;\n    padding-bottom: 0;\n    margin: 0;\n  }\n  .media img.pull-left,\n  .media img.pull-right {\n    display: inline-block;\n  }\n  .media blockquote {\n    padding: 0;\n    text-align: center;\n  }\n  .media blockquote.pull-right p,\n  .media blockquote.pull-right small {\n    text-align: center;\n  }\n  .menu-right #menu {\n    left: 0;\n    right: auto;\n  }\n  .menu-right.menu-hidden #content {\n    margin: 0;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n    width: auto;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n    display: none;\n  }\n  .row-merge.border-top,\n  .row-merge ~ .row-merge {\n    border-top: 1px solid #e5e5e5;\n  }\n  body.login #login {\n    padding: 50px 5px;\n  }\n  #gritter-notice-wrapper {\n    display: none !important;\n  }\n  .topnav .dropdown.submenu {\n    height: auto;\n  }\n  .topnav .dropdown.submenu .submenu-show {\n    position: relative;\n    margin: 0 !important;\n    top: auto !important;\n    left: auto !important;\n    right: auto !important;\n  }\n  .navbar.main {\n    height: auto;\n  }\n  .navbar.main .topnav {\n    border-left: none;\n    border-right: none;\n    float: none;\n  }\n  .navbar.main .topnav > li {\n    float: none;\n    border-top: 1px solid #346d9d;\n    border-bottom: 1px solid #619aca;\n  }\n  .navbar.main .topnav > li.active,\n  .navbar.main .topnav > li:hover,\n  .navbar.main .topnav > li.open {\n    padding: 8px;\n  }\n  .navbar.main .topnav > li.search form {\n    position: relative;\n  }\n  .navbar.main .topnav > li.search form input {\n    width: 90%;\n  }\n  .navbar.main .topnav > li.search form button {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n  .navbar.main .topnav > li:first-child {\n    border-top: none;\n  }\n  .navbar.main .topnav > li .dropdown.submenu .dropdown-menu {\n    position: relative;\n    float: none;\n    display: block !important;\n    padding: 0;\n    border: none;\n    border-top: 1px solid #f3f3f3;\n  }\n  .navbar.main .topnav:first-of-type > li:first-child {\n    margin-left: 38px;\n  }\n  .menu-hidden .navbar.main {\n    height: 50px;\n    overflow: hidden;\n  }\n  .container-960 {\n    width: auto;\n  }\n  #landing_1 [class*=\"span\"] {\n    padding: 0 5px;\n  }\n  #landing_1 .banner-1 {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item img {\n    min-height: 0;\n    height: auto;\n  }\n  #landing_1 .banner-1 .carousel-caption {\n    height: auto;\n  }\n  #landing_1 .banner {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3,\n  #landing_1 .banner .banner-wrapper.banner-1 p,\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    position: relative;\n    top: auto;\n    right: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    display: block;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 p {\n    margin: 0 0 5px;\n    text-align: center;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3 {\n    font-size: 12pt;\n    line-height: 46px;\n    text-align: center;\n  }\n  .social-large {\n    height: auto;\n  }\n  .social-large a {\n    float: none;\n    display: block;\n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n  }\n  .social-large a:last-child {\n    border: none;\n  }\n  #content .heading-mosaic {\n    height: auto !important;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: normal !important;\n  }\n}\n@media (max-width: 480px) {\n  h1,\n  h2,\n  h3 {\n    line-height: 30px;\n    font-size: 18pt;\n  }\n  h3.glyphicons i:before,\n  h2.glyphicons i:before {\n    font-size: 24px;\n    top: 3px;\n    left: 5px;\n  }\n  .heading-buttons .buttons {\n    margin-top: 10px;\n    float: none;\n    padding: 0 10px;\n    text-align: center;\n  }\n  .heading-buttons .buttons .btn {\n    margin: 0;\n    float: none;\n  }\n  .separator {\n    padding: 5px 0;\n    margin: 0;\n  }\n  .table-condensed th,\n  .table-condensed td {\n    padding: 4px 5px;\n  }\n  p.glyphicons {\n    padding: 5px 0 10px 55px;\n  }\n  p.glyphicons i:before {\n    color: #D67170;\n    font-size: 35pt;\n    top: 0;\n  }\n  p.glyphicons.right {\n    padding: 0 55px 0 0;\n  }\n}\n@media (max-width: 320px) {\n  .nav-tabs > li,\n  .nav-tabs > li > a,\n  .nav-tabs > li > a:hover {\n    display: block;\n    float: none;\n    margin: 0 0 -1px;\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li:hover {\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li,\n  .nav-tabs > li > a {\n    border-color: #E0D5C6;\n    background: #F5EADB;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n}\n#themer {\n  position: fixed;\n  top: 40%;\n  left: 50%;\n  z-index: 1000;\n  width: 260px;\n  margin: -50px 0 0 -130px;\n  text-align: left;\n}\n#themer.in {\n  overflow: visible;\n}\n#themer .close2 {\n  position: absolute;\n  background: #DDD;\n  color: #222;\n  font-weight: 600;\n  height: 20px;\n  top: 14px;\n  right: 10px;\n  line-height: 20px;\n  text-align: center;\n  font-size: 10pt;\n  padding: 0 10px;\n  cursor: pointer;\n}\n#themer .wrapper {\n  position: relative;\n  background: #292c2e;\n  border: 1px solid #2f3235;\n  padding: 15px;\n  color: #fafafa;\n}\n#themer .wrapper hr.separator {\n  margin: 10px 0;\n  border-top-color: #5e646b;\n  border-bottom-color: #2f3235;\n}\n#themer .wrapper h4 {\n  border-bottom: 1px solid #5e6060;\n  padding: 0 0 10px;\n  margin: 0 0 10px;\n  color: #fff;\n}\n#themer .wrapper h4 span {\n  color: #5e6060;\n  font-weight: normal;\n  font-size: 10pt;\n  text-shadow: none;\n}\n#themer .wrapper .btn {\n  margin: 0;\n}\n#themer .wrapper #themer-getcode-less {\n  margin: 0 0 0 5px;\n}\n#themer .wrapper ul {\n  margin: 0;\n  list-style: none;\n}\n#themer .wrapper ul li {\n  height: 25px;\n  line-height: 25px;\n  position: relative;\n}\n#themer .wrapper ul li .minicolors {\n  line-height: normal;\n  border: none;\n  top: 2px;\n  right: 0;\n  position: absolute;\n}\n#themer .wrapper ul li .minicolors input {\n  border: none;\n  height: 20px;\n  width: 69px;\n  background: #414649;\n  color: #fff;\n  font-size: 9pt;\n  padding: 0 5px;\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li .minicolors-swatch {\n  cursor: pointer;\n  width: 18px;\n  height: 18px;\n}\n#themer .wrapper ul li .minicolors-panel {\n  z-index: 10000;\n  top: 24px;\n}\n#themer .wrapper ul li .minicolors-position-left .minicolors-panel {\n  left: -152px;\n}\n#themer .wrapper ul li select {\n  position: absolute;\n  top: 3px;\n  right: 0;\n  width: 100px;\n  height: 20px;\n  line-height: normal;\n  padding: 0;\n  margin: 0;\n  font-size: 9pt;\n  background: #414649;\n  border: 1px solid #2F3235;\n  color: #fff;\n}\n#themer .wrapper ul li .link {\n  text-decoration: underline;\n  cursor: pointer;\n}\n#themer .wrapper ul li label {\n  margin: 0;\n  line-height: 25px;\n  font-size: 9pt;\n}\n#themer .wrapper ul li label input {\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li.advanced {\n  display: none;\n}\n#themer.themer-advanced .wrapper ul li.advanced {\n  display: block;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/css/style-flat.css",
    "content": "@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n/*!\n *\n * QuickAdmin v1.3.1\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\nbody {\n  font-family: 'Open Sans', sans-serif;\n  background: #f0f0f0;\n  font-size: 13px;\n  color: #7c7c7c;\n  position: relative;\n}\n*,\na:focus {\n  outline: none !important;\n}\nbutton:focus {\n  outline: none !important;\n}\nbutton::-moz-focus-inner {\n  border: 0;\n}\na:hover {\n  color: #333333;\n}\na {\n  color: #4a8bc2;\n  outline: 0 !important;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: 'Open Sans', sans-serif;\n  margin: 0 0 5px;\n  font-weight: 400;\n  text-shadow: 0 1px 0 #ffffff;\n  color: #4d4d4d;\n}\nh1.glyphicons,\nh2.glyphicons,\nh3.glyphicons,\nh4.glyphicons,\nh5.glyphicons,\nh6.glyphicons {\n  color: #7c7c7c;\n}\nh1 span,\nh2 span,\nh3 span,\nh4 span,\nh5 span,\nh6 span {\n  color: #afafaf;\n  font-weight: 400;\n  padding: 0 5px;\n  font-style: italic;\n}\nh1 span,\nh2 span,\nh3 span {\n  font-size: 50%;\n  text-transform: none;\n  padding: 0;\n  position: relative;\n  top: -3px;\n  font-weight: 400;\n}\nh1 {\n  line-height: 40px;\n}\nh2,\nh3 {\n  line-height: 30px;\n}\nh2 {\n  font-size: 26px;\n}\n.heading-buttons h1,\n.heading-buttons h2,\n.heading-buttons h3,\n.heading-buttons h4,\n.heading-buttons h5,\n.heading-buttons h6 {\n  display: inline-block;\n  margin: 0 15px;\n}\n.heading-buttons h1.glyphicons,\n.heading-buttons h2.glyphicons,\n.heading-buttons h3.glyphicons,\n.heading-buttons h4.glyphicons,\n.heading-buttons h5.glyphicons,\n.heading-buttons h6.glyphicons {\n  display: inline-block;\n}\n.heading-buttons .buttons {\n  margin-top: 3px;\n  margin-right: 15px;\n  text-align: right;\n}\n.heading-buttons .btn {\n  margin-right: 15px;\n}\n.heading-buttons .btn:last-child {\n  margin-right: 0;\n}\np {\n  margin: 0 0 10px;\n  line-height: normal;\n}\n.lead {\n  margin: 0 0 10px;\n}\n.glyphicons {\n  color: #7c7c7c;\n}\nul.icons {\n  text-align: left;\n  padding: 0;\n}\nul.icons li {\n  display: block;\n  padding: 0 0 0 25px;\n  line-height: 22px;\n  color: #7c7c7c;\n}\nul.icons li i:before {\n  color: #7c7c7c;\n  font-size: 17px;\n  left: 0;\n  top: 4px;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: 'Open Sans', sans-serif;\n}\npre.prettyprint {\n  word-break: normal;\n  word-wrap: normal;\n  white-space: pre;\n  background-color: #f8f8f8;\n  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f8f8f8), color-stop(50%, #eeeeee));\n  background-image: -webkit-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -moz-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: -o-linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  background-image: linear-gradient(#f8f8f8 50%, #eeeeee 50%);\n  -moz-background-size: 38px 38px;\n  background-size: 38px 38px;\n  border: 1px solid #ebebeb;\n  display: block;\n  line-height: 19px;\n  margin-bottom: 15px;\n  overflow: visible;\n  overflow-y: hidden;\n  padding: 0 0 0 4px;\n}\npre.prettyprint .glyphicons {\n  padding: 0 0 0 20px;\n}\npre.prettyprint .glyphicons i:before {\n  font-size: 17px;\n  top: 1px;\n}\n#content pre.prettyprint,\n#content pre.prettyprint span {\n  color: #7c7c7c;\n}\nblockquote {\n  margin: 0;\n  padding: 0 0 0 5px;\n}\nblockquote,\nblockquote.pull-right {\n  border: none;\n}\nblockquote p {\n  font-weight: 400;\n  font-size: 13px;\n  margin: 0 0 10px;\n}\nblockquote small {\n  color: #4a8bc2;\n}\n.separator {\n  padding: 15px 0;\n  display: block;\n}\n.separator.bottom {\n  padding: 0 0 15px;\n}\n.separator.top {\n  padding: 15px 0 0;\n}\nhr {\n  border-top-color: #dbdbdb;\n  border-bottom: none;\n  margin: 15px 0;\n}\nhr.separator {\n  padding: 0;\n}\nhr.separator.top {\n  margin: 15px 0 0;\n}\nhr.separator.bottom {\n  margin: 0 0 15px;\n}\n@media print {\n  html,\n  body {\n    height: auto !important;\n    min-height: none !important;\n  }\n  @page  {\n    size: auto;\n    margin: 10mm 10mm 10mm 10mm;\n  }\n  #content {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  .breadcrumb,\n  #tlyPageGuideWrapper,\n  .filter-bar {\n    display: none !important;\n  }\n  .table td,\n  .table th {\n    vertical-align: middle;\n  }\n  .table th {\n    padding: 3px;\n    text-align: center;\n  }\n  .table img {\n    float: left;\n  }\n}\n.map_canvas img {\n  max-width: none !important;\n}\n.streetview {\n  width: 100%;\n  height: 300px;\n}\n.ui-dialog-vevent .dtstart {\n  display: none;\n}\n.ui-dialog-vevent .website {\n  margin: 0 0 1em;\n}\n#fontawesome [class^=\"icon-\"],\n#fontawesome [class*=\" icon-\"] {\n  font-size: 24px;\n  line-height: 24px;\n  vertical-align: middle;\n  margin: 0 5px 0 0;\n}\n#fontawesome a {\n  line-height: 40px;\n}\n.innerLR {\n  padding: 0 15px;\n  position: relative;\n}\n.innerTB {\n  padding: 15px 0;\n  position: relative;\n}\n.innerAll {\n  padding: 15px;\n  position: relative;\n}\n.innerL {\n  padding-left: 15px;\n  position: relative;\n}\n.innerR {\n  padding-right: 15px;\n  position: relative;\n}\n.innerT {\n  padding-top: 15px;\n  position: relative;\n}\n.innerB {\n  padding-bottom: 15px;\n  position: relative;\n}\n.center {\n  text-align: center !important;\n}\n.margin-bottom-none {\n  margin-bottom: 0 !important;\n}\n.margin-none {\n  margin: 0 !important;\n}\n.padding-none {\n  padding: 0 !important;\n}\n.border-none {\n  border: none !important;\n}\n.box-shadow-none {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.padding-none-TB {\n  padding-bottom: 0 !important;\n  padding-top: 0 !important;\n}\n.relativeWrap {\n  position: relative;\n}\n.text-primary {\n  color: #4a8bc2;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-faded {\n  color: #d7d7d7 !important;\n}\n.text-large {\n  font-size: 35px;\n  line-height: 40px;\n}\n.text-xlarge {\n  font-size: 50px;\n  line-height: 50px;\n}\n.text-xxlarge {\n  font-size: 70px;\n  line-height: 70px;\n}\n.text-underline {\n  text-decoration: underline;\n}\n.text-right {\n  text-align: right !important;\n}\n.containerBg {\n  background: #f0f0f0;\n}\n.whiteBg {\n  background: #fff;\n}\n.row-merge {\n  position: relative;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-left: 0;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 1px;\n  background: #dbdbdb;\n  content: \"\";\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span3\"] {\n  width: 25.26315789473684%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span4\"] {\n  width: 33.68421052631579%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span5\"] {\n  width: 42.10526315789473%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span6\"] {\n  width: 50.74626865671642%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span8\"] {\n  width: 67.66169154228855%;\n}\n.row-merge > [class*=\"span\"] ~ [class*=\"span9\"] {\n  width: 75.78947368421052%;\n}\n.row-merge.border-top,\n.row-merge ~ .row-merge {\n  border-top: 1px solid #dbdbdb;\n}\n.row-merge.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n#wrapper {\n  overflow: hidden;\n  overflow-y: auto;\n  float: left;\n  width: 100%;\n}\nbody > .container-fluid {\n  padding: 0;\n  background: #f0f0f0;\n}\nbody > .container-fluid.fixed {\n  margin: 30px auto 30px;\n  border-left: 1px solid #d8d8d8;\n  border-right: 1px solid #d8d8d8;\n  width: 94%;\n}\nbody > .container-fluid.documentation {\n  background: #fff;\n}\nbody > .container-fluid.fixed {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nbody > .container-fluid.fixed #wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nbody > .container-fluid.fixed #content {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nbody > .container-fluid.fixed #footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nbody > .container-fluid.fixed .navbar.main,\nbody > .container-fluid.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n#content {\n  position: relative;\n  overflow: hidden;\n  margin: 0;\n  min-width: 320px;\n  min-height: 500px;\n  padding: 0 0 15px;\n  background: #f0f0f0;\n}\n#content > .menubar {\n  border-left: none;\n  border-right: none;\n}\n#content > p {\n  padding: 0 15px 5px;\n}\n#content > h1,\n#content > h2,\n#content > h3,\n#content > h4,\n#content > h5,\n#content > h6 {\n  margin: 18px 15px 15px;\n}\n#content > .filter-bar {\n  border-right: none;\n  border-left: none;\n}\n#content .heading-buttons {\n  margin-top: 15px;\n}\n#content .heading-arrow {\n  text-transform: uppercase;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 15px;\n  padding: 0 15px;\n  font-size: 11pt;\n  height: 35px;\n  line-height: 30px;\n  position: relative;\n}\n#content .heading-arrow:after {\n  content: \"\";\n  display: inline-block;\n  width: 0;\n  height: 0;\n  border-bottom: 8px solid #dbdbdb;\n  border-right: 8px solid transparent;\n  border-left: 8px solid transparent;\n  position: absolute;\n  bottom: 0;\n  left: 15px;\n}\n#content .heading-arrow.glyphicons {\n  padding: 0 10px 0 40px;\n}\n#content .heading-arrow.glyphicons i:before {\n  font-size: 17px;\n  left: 15px;\n}\n#content .heading-arrow.margin-bottom-none {\n  margin-bottom: 0;\n}\n#content > .widget {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget .widget-head,\n#content > .widget .widget-body {\n  border-left: 0;\n  border-right: 0;\n}\n#content > .widget:last-child {\n  margin: 0;\n}\n#content > .table {\n  border-left: none;\n  border-right: none;\n}\n#content > .table tr td:first-child {\n  border-left: none;\n}\n#footer {\n  font-weight: 600;\n  position: relative;\n  overflow: hidden;\n  z-index: 10000;\n  border-bottom: 1px solid #dbdbdb;\n  border-top: 1px solid #dbdbdb;\n}\n#footer a:not(.btn) {\n  color: #7c7c7c;\n}\n#footer .copy {\n  background: #e5e5e5;\n  text-align: center;\n  padding: 5px 10px;\n  font-size: 12px;\n  height: 20px;\n}\n#footer .copy a {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nhtml.sidebar #content {\n  margin: 0 0 0 65px;\n}\nhtml.sidebar .menu-right #content {\n  margin: 0 65px 0 0;\n}\n@media (min-width: 768px) {\n  html.sticky-sidebar.sidebar:not(.fixed) body {\n    overflow: hidden;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed),\n  html.sticky-sidebar.sidebar:not(.fixed) body,\n  html.sticky-sidebar.sidebar:not(.fixed) body > .container-fluid,\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    min-height: 100%;\n    height: 100%;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #wrapper {\n    margin-bottom: -32px;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #menu {\n    position: fixed;\n    bottom: 0;\n  }\n  html.sticky-sidebar.sidebar:not(.fixed) #content {\n    padding-bottom: 47px;\n  }\n}\n@media (min-width: 768px) {\n  html.sticky-top:not(.fixed) #content {\n    padding-top: 50px;\n  }\n  html.sticky-top:not(.fixed) .navbar.main {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 10000;\n  }\n  html.sticky-top:not(.fixed).sidebar .navbar.main {\n    left: 65px;\n  }\n  html.sticky-top:not(.fixed).sidebar .menu-right .navbar.main {\n    left: 0;\n    right: 65px;\n  }\n  html.sticky-top:not(.fixed) .menu-hidden .navbar.main {\n    left: 0 !important;\n    right: 0 !important;\n  }\n  html.sticky-top:not(.fixed).front #content {\n    padding-top: 100px;\n    margin: 0 !important;\n  }\n}\nhtml.fixed,\nhtml.fixed body {\n  min-height: auto;\n  height: auto;\n  overflow: visible;\n}\nbody > .container-fluid.fixed {\n  min-height: auto;\n  height: auto;\n}\nbody > .container-fluid.fixed #wrapper {\n  position: relative;\n  overflow: hidden;\n  min-height: auto;\n  height: auto;\n  margin: 0;\n}\nbody > .container-fluid.fixed #menu {\n  position: absolute;\n  height: 100%;\n  min-height: 100%;\n  bottom: auto;\n}\n.ui-resizable-helper.menu {\n  border: 1px dotted gray;\n  border-left: none;\n  background: rgba(0, 0, 0, 0.3);\n}\n.ui-resizable-handle {\n  width: 3px;\n  border-style: solid;\n  border-width: 0;\n  border-color: rgba(0, 0, 0, 0.4);\n}\n.dropdown-menu {\n  z-index: 100000;\n}\n#menu {\n  width: 65px;\n  float: left;\n  position: absolute;\n  left: 0;\n  top: 0;\n  overflow: hidden;\n  height: 100%;\n  min-height: 100%;\n  background: #1f2123;\n  font-size: 11px;\n}\n#menu .appbrand {\n  font-weight: 700;\n  display: block;\n  text-decoration: none;\n  line-height: 10px;\n  padding: 10px;\n  text-align: center;\n  color: #ffffff;\n  border-bottom: 1px solid #161718;\n}\n#menu .profile {\n  display: block;\n  padding: 10px 0;\n  border-bottom: 1px solid #161718;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .profile a {\n  border: 1px solid #161718;\n  display: inline-block;\n  width: 36px;\n  height: 36px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n#menu .profile a:hover {\n  border-color: #000000;\n}\n#menu .slim-scroll > ul,\n#menu > ul {\n  list-style: none;\n  float: left;\n  margin: 0;\n  padding: 0;\n  display: block;\n  width: 100%;\n  border-top: 1px solid #2a2c2e;\n}\n#menu .slim-scroll > ul > li,\n#menu > ul > li {\n  display: block;\n  border-bottom: 1px solid #161718;\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  position: relative;\n  overflow: hidden;\n  padding: 0;\n  margin: 0;\n}\n#menu .slim-scroll > ul > li a,\n#menu > ul > li a {\n  display: block;\n  width: auto;\n  padding: 10px;\n  margin: 0;\n  line-height: 10px;\n  text-decoration: none;\n  font-weight: 600;\n  color: #4c4d4f;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li a.glyphicons,\n#menu > ul > li a.glyphicons {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i,\n#menu > ul > li a.glyphicons i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li a.glyphicons i:before,\n#menu > ul > li a.glyphicons i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.glyphicons > a,\n#menu > ul > li.glyphicons > a {\n  padding: 10px 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i,\n#menu > ul > li.glyphicons > a i {\n  display: block;\n  padding: 0 0 5px;\n}\n#menu .slim-scroll > ul > li.glyphicons > a i:before,\n#menu > ul > li.glyphicons > a i:before {\n  display: block;\n  font-size: 17px;\n  color: #4c4d4f;\n  top: auto;\n  left: auto;\n  position: relative;\n  text-align: center;\n}\n#menu .slim-scroll > ul > li.active,\n#menu > ul > li.active {\n  box-shadow: 0 1px 0 0 #2a2c2e;\n  border-top: 1px solid #2a2c2e;\n  position: relative;\n  overflow: visible;\n}\n#menu .slim-scroll > ul > li.active > a,\n#menu > ul > li.active > a {\n  background: #161718;\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active.glyphicons a i:before,\n#menu > ul > li.active.glyphicons a i:before {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li.active:first-child,\n#menu > ul > li.active:first-child {\n  border-top: none;\n}\n#menu .slim-scroll > ul > li:hover > a,\n#menu > ul > li:hover > a {\n  color: #737474;\n}\n#menu .slim-scroll > ul > li:hover.glyphicons a i:before,\n#menu > ul > li:hover.glyphicons a i:before {\n  color: #737474;\n}\n#menu.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.menu-left .ui-resizable-e {\n  background: rgba(255, 255, 255, 0.2);\n  right: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\n.menu-left .ui-resizable-e:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right .ui-resizable-w {\n  background: rgba(255, 255, 255, 0.2);\n  left: 0;\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\nbody .menu-right .ui-resizable-w:hover {\n  background: rgba(255, 255, 255, 0.4);\n}\nbody .menu-right #menu {\n  left: auto;\n  right: 0;\n  border-right: none;\n  border-left: 1px solid #d8d8d8;\n}\nbody .menu-right.fixed #content {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\nbody .menu-right.fixed .navbar.main,\nbody .menu-right.fixed .navbar.main .wrapper {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.menu-hidden #menu {\n  display: none;\n}\n.menu-hidden #content {\n  margin: 0 !important;\n}\n.menu-hidden .navbar.main .btn-navbar {\n  left: 0;\n  border-left: none;\n}\n.menu-hidden .navbar.main .topnav.tn1 {\n  left: 37px;\n}\n.menu-hidden.login .navbar.main .appbrand,\n.menu-hidden.documentation .navbar.main .appbrand {\n  display: inline-block;\n  border: none;\n}\n.menu-hidden.login .navbar.main .appbrand span,\n.menu-hidden.documentation .navbar.main .appbrand span {\n  border: none;\n}\n.navbar.main {\n  height: 49px;\n  background-color: #4a8bc2;\n  border-bottom: 1px solid #346d9d;\n  margin: 0;\n}\n.navbar.main .btn-navbar {\n  height: 49px;\n  line-height: 49px;\n  padding: 0 10px;\n  margin: 0;\n  float: left;\n  display: block;\n  border: none;\n  background: #4a8bc2;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .btn-navbar .icon-bar {\n  background: #ffffff;\n  box-shadow: 0 1px 0 #346d9d;\n}\n.navbar.main .btn-navbar:hover {\n  background: #4286bf;\n}\n.navbar.main .btn-navbar.ui-state-disabled {\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n.navbar.main .topnav {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left {\n  border-left: none;\n}\n.navbar.main .topnav.pull-left + .topnav.pull-left > li:first-child {\n  border-left: none;\n}\n.navbar.main .topnav > li {\n  position: relative;\n  float: left;\n  height: 49px;\n  line-height: 49px;\n  display: block;\n  padding: 0 0 0 10px;\n}\n.navbar.main .topnav > li a {\n  cursor: pointer;\n}\n.navbar.main .topnav > li > a {\n  display: block;\n  color: #ffffff;\n  text-decoration: none;\n  padding: 1px 11px 0 9px;\n  height: 49px;\n  line-height: 50px;\n  /* &:hover { background: darken(@navbarBg, 2%); } */\n\n}\n.navbar.main .topnav > li > a > img {\n  margin: 0 0 3px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 11px 0 9px;\n}\n.navbar.main .topnav > li > a.glyphicons i {\n  padding: 0 10px 0 0;\n  display: block;\n  float: left;\n  width: 17px;\n  line-height: 49px;\n  height: 49px;\n}\n.navbar.main .topnav > li > a.glyphicons i:before {\n  color: #ffffff;\n  font-size: 17px;\n  position: relative;\n  width: 17px;\n  text-align: center;\n  line-height: 51px;\n  height: 49px;\n  left: auto;\n  right: auto;\n}\n.navbar.main .topnav > li > a.glyphicons.single-icon i {\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout i {\n  float: right;\n  padding: 0;\n}\n.navbar.main .topnav > li > a.glyphicons.logout span {\n  padding: 0 8px 0 0;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 8px;\n  height: 33px;\n  line-height: 33px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 8px;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a {\n  background: #346d9d;\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.active > a .caret,\n.navbar.main .topnav > li:hover > a .caret,\n.navbar.main .topnav > li.open > a .caret {\n  top: 2px;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 5px 10px;\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i,\n.navbar.main .topnav > li:hover > a.glyphicons i,\n.navbar.main .topnav > li.open > a.glyphicons i {\n  height: 22px;\n  line-height: 22px;\n}\n.navbar.main .topnav > li.active > a.glyphicons i:before,\n.navbar.main .topnav > li:hover > a.glyphicons i:before,\n.navbar.main .topnav > li.open > a.glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.glyphs ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: #346d9d;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  float: left;\n  display: block;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 1px 0 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  height: 22px;\n  line-height: 22px;\n  padding: 5px 10px;\n  display: block;\n  text-decoration: none;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i {\n  height: 22px;\n  line-height: 22px;\n  display: block;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  line-height: 22px;\n  height: 22px;\n  position: relative;\n  left: auto;\n  top: auto;\n  display: block;\n  text-align: center;\n  font-size: 17px;\n  color: #538fc1;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover {\n  padding: 0;\n  background: #579ad2;\n  border-right: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons i:before,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons i:before {\n  color: #ffffff;\n}\n.navbar.main .topnav > li.glyphs ul li.active:first-child,\n.navbar.main .topnav > li.glyphs ul li:hover:first-child {\n  -webkit-border-radius: 5px 0 0 5px;\n  -moz-border-radius: 5px 0 0 5px;\n  border-radius: 5px 0 0 5px;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n  border-right: none;\n  border-left: 1px solid #296190;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child .glyphicons {\n  padding: 5px 11px 5px 9px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px;\n  height: 33px;\n  border-left: 1px solid #346d9d;\n  border-right: 1px solid #619aca;\n  box-shadow: -1px 0 0 0 #619aca, 1px 0 0 0 #346d9d;\n}\n.navbar.main .topnav > li.search form {\n  margin: 0;\n  padding: 0;\n  background: #afcae2;\n  height: 32px;\n  line-height: 32px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #296190;\n}\n.navbar.main .topnav > li.search form input {\n  background: none;\n  border: none;\n  color: #628db3;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n  line-height: 32px;\n  width: 100px;\n  padding: 0 0 0 10px;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #628db3;\n}\n.navbar.main .topnav > li.search form button {\n  background: none;\n  border: none;\n  margin: 0;\n  padding: 0;\n  height: 32px;\n}\n.navbar.main .topnav > li.search form button i:before {\n  display: block;\n  position: relative;\n  left: auto;\n  right: auto;\n  height: 32px;\n  line-height: 32px;\n  padding: 0 5px;\n  font-size: 17px;\n  color: #346d9d;\n}\n.navbar.main .topnav > li.search form input,\n.navbar.main .topnav > li.search form button {\n  vertical-align: top;\n}\n.navbar.main .topnav > li.search,\n.navbar.main .topnav > li.glyphs {\n  margin-left: 10px;\n}\n.navbar.main .topnav > li.search + .glyphs {\n  margin-left: 0;\n}\n.navbar.main .topnav > li.glyphs + .search,\n.navbar.main .topnav > li.glyphs + .tooltip + .search {\n  margin-left: 0;\n}\n.navbar.main .topnav > li:last-child {\n  border-right: 1px solid #346d9d;\n  padding: 0 9px 0 10px;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  padding: 8px 9px;\n  box-shadow: -1px 0 0 0 #619aca;\n}\n.navbar.main .topnav > li:first-child {\n  border-left: 1px solid #619aca;\n}\n.navbar.main .topnav > li:last-child.open .dropdown-menu {\n  right: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu {\n  background: #363432;\n  border: none;\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  right: 0;\n  width: 180px;\n}\n.navbar.main .topnav > li.open .dropdown-menu.pull-left {\n  left: 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li {\n  border-bottom: 1px solid #4a4947;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:last-child {\n  border-bottom: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li:first-child > span {\n  border-top: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li > span {\n  height: 29px;\n  line-height: 29px;\n  padding: 0 10px;\n  display: block;\n  background: #363432;\n  color: #c8c8c8;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons i:before,\n.navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons i:before {\n  left: auto;\n  right: 10px;\n  top: 5px;\n  font-size: 17px;\n  color: #c4c4c4;\n}\n.navbar.main .topnav > li.open .dropdown-menu li > a:hover {\n  background: #1c1a19;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.active a {\n  background: #0e0e0d;\n}\n.navbar.main .topnav > li.open .dropdown-menu li .btn {\n  margin: 3px 0;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.highlight > span {\n  background: rgba(0, 0, 0, 0.1);\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile a:hover {\n  color: #fff;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #272729;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #595959;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.account > .dropdown-menu {\n  width: 220px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu,\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.2);\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 11px solid transparent;\n  position: absolute;\n  display: block;\n  left: 7px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  top: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n  position: absolute;\n  display: block;\n  left: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  left: auto;\n  right: 7px;\n  margin: 0;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 > .dropdown-menu.pull-right:after,\n.navbar.main .topnav > li.open.dd-1 .typeahead.pull-right:after,\n.navbar.main .topnav > li.open .dd-1 .typeahead.pull-right:after {\n  right: 8px;\n}\n.navbar.main .topnav > li.open.dd-1 .typeahead,\n.navbar.main .topnav > li.open .dd-1 .typeahead {\n  margin-top: 13px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu.pull-right,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu.pull-right {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu {\n  background: #fff;\n  border: 1px solid #c8c8c8;\n  margin: 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn),\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span {\n  background: #fff;\n  color: #939494;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li a:not(.btn) i:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li span i:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li span i:before {\n  color: #cccccc;\n  font-size: 15px !important;\n  top: 7px !important;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li:not(.profile):hover > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu > li.active > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu > li.active > a {\n  /*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\n  font-weight: 600;\n  color: #000;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile {\n  background: #fff;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile a:hover {\n  color: #7c7c7c;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span {\n  height: auto;\n  line-height: normal;\n  padding: 5px 10px 10px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading {\n  display: block;\n  text-transform: uppercase;\n  font-weight: 600;\n  margin-bottom: 5px;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .heading a,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .heading a,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .heading a {\n  text-transform: none;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img {\n  display: inline-block;\n  float: left;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  background: #fdfdfd;\n  margin: 0 10px 0 0;\n  position: relative;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .img:before,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .img:before,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .img:before {\n  text-align: center;\n  width: 47px;\n  height: 45px;\n  line-height: 45px;\n  content: \"\\e004\";\n  color: #ccc;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  position: absolute;\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > a:hover .clearfix,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu li.profile > span .clearfix,\n.navbar.main .topnav > li.open .dd-1 .dropdown-menu li.profile > span .clearfix {\n  display: block;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) {\n  padding: 10px 10px 10px 50px;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu li a:not(.btn) i:before {\n  right: auto;\n  left: 10px;\n  top: 10px !important;\n  font-size: 30px !important;\n  color: #f2f2f2;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover {\n  border-color: #f3f3f3;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a {\n  background: rgba(74, 139, 194, 0.08);\n  color: #939494;\n  text-shadow: 0 1px 0 #fff;\n  border: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n.navbar.main .topnav > li.open.dd-2 .dropdown-menu > li:not(.profile):hover > a i:before {\n  color: #4a8bc2;\n  left: 10px;\n  top: 10px;\n}\n.navbar.main .topnav > li.open.dd-flags .dropdown-menu img {\n  margin: -3px 4px 0 0;\n}\n.navbar.main .topnav .dropdown > a .caret {\n  border-top-color: #ffffff;\n  top: 16px;\n  position: relative;\n}\n.navbar.main .topnav .dropdown-menu {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.navbar.main .topnav:last-of-type {\n  border-right: none;\n}\n.navbar.main .topnav:last-of-type li:last-child {\n  border: none;\n}\n.submenu-show {\n  display: block;\n  margin-top: -35px !important;\n  position: absolute;\n}\n.submenu-show.pull-left {\n  left: auto !important;\n  right: 100% !important;\n}\n.submenu-show.pull-right {\n  right: auto !important;\n  left: 100% !important;\n}\n.submenu-hide {\n  display: none !important;\n  position: relative;\n  top: auto;\n  float: left;\n}\n.filter-bar {\n  background: #e5e5e5;\n  margin: 0 auto 15px;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  line-height: 30px;\n  height: 40px;\n  padding: 0 10px;\n}\n.filter-bar.border-top-none {\n  border-top: none;\n}\n.filter-bar div {\n  padding: 5px 0;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar div div {\n  padding: 0;\n  margin: 0;\n}\n.filter-bar div div:not(.helper) {\n  margin: 0 15px 0 0;\n}\n.filter-bar div div input {\n  margin: 3px 0 0;\n}\n.filter-bar div div.input-append {\n  margin: 0;\n}\n.filter-bar div div.input-append .add-on {\n  padding: 1px 3px;\n  margin: 3px 0 0 -1px;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.filter-bar div div.input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\n.filter-bar div div.input-append button.add-on {\n  width: 24px;\n  height: 24px;\n}\n.filter-bar div div:last-child {\n  margin: 0;\n}\n.filter-bar div:not(.helper) {\n  float: left;\n}\n.filter-bar div.glyphicons {\n  padding: 0 0 0 35px;\n}\n.filter-bar div.glyphicons i:before {\n  top: 12px;\n  left: 9px;\n  font-size: 17px;\n  color: rgba(255, 255, 255, 0.8);\n}\n.filter-bar div.clearfix {\n  padding: 0;\n  clear: both;\n  float: none;\n  display: block;\n  height: 0;\n  margin: 0;\n}\n.filter-bar div.lbl {\n  padding: 0 10px 0 35px;\n  background: #4a8bc2;\n  height: 40px;\n  line-height: 40px;\n  margin-right: 10px;\n  color: #fff;\n}\n.filter-bar form {\n  margin: 0;\n}\n.filter-bar form input,\n.filter-bar form select {\n  margin: 0 5px 3px 0;\n  padding: 1px 5px;\n  color: #a7a7a7;\n}\n.filter-bar form select {\n  padding: 1px;\n  height: 23px;\n}\n.filter-bar form label {\n  float: left;\n  margin: 0 5px;\n  display: block;\n  line-height: 30px;\n}\n.filter-bar.border-none {\n  border: none;\n}\n.filter-bar.dark {\n  background: #64625f;\n  color: #fff;\n}\n.filter-bar.dark div div.input-append .add-on {\n  background: #42403e;\n  color: #fff;\n  border-color: #42403e;\n}\n.filter-bar.dark div div.input-append .add-on i:before {\n  color: #767473;\n  text-shadow: none;\n}\n.filter-bar.dark form input:focus {\n  border-color: #42403e;\n}\n.filter-bar.dark form input,\n.filter-bar.dark form select {\n  border-color: #42403e;\n}\n.menubar {\n  height: 30px;\n  position: relative;\n  overflow: hidden;\n  border: 1px solid #dbdbdb;\n  background: #fafafa;\n  margin: 0;\n  font-size: 9pt;\n}\n.menubar ul {\n  margin: 0;\n  padding: 0 5px;\n  list-style: none;\n  height: 30px;\n}\n.menubar ul li {\n  float: left;\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  padding: 0 5px;\n}\n.menubar ul li.divider {\n  border-left: 1px solid #ebebeb;\n  width: 0px;\n  padding: 0;\n  margin: 0 8px;\n}\n.menubar ul li a {\n  color: #7c7c7c;\n  font-weight: 700;\n  font-size: 9pt;\n}\n.menubar.links {\n  border: none;\n  background: none;\n  height: 25px;\n  padding: 0 0 5px;\n}\n.menubar.links ul {\n  padding: 0;\n  height: 25px;\n}\n.menubar.links ul li {\n  height: 25px;\n  line-height: 25px;\n}\n.menubar.links ul li:first-child {\n  padding-left: 0;\n}\n.menubar.links.primary ul li a {\n  color: #4a8bc2;\n}\n.widget {\n  background: #ffffff;\n  margin: 0 auto 15px;\n  position: relative;\n  border: 1px solid #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget .tab-content {\n  padding: 0;\n}\n.widget .widget-head {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  text-shadow: 0 1px 0 0 1px 0 #ffffff;\n  height: 35px;\n  line-height: 35px;\n  position: relative;\n  padding: 0 15px 0 0;\n  overflow: hidden;\n}\n.widget .widget-head.progress {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons,\n.widget .widget-head ul .glyphicons {\n  height: 30px;\n  width: 30px;\n  padding: 0;\n}\n.widget .widget-head > .glyphicons i:before,\n.widget .widget-head ul .glyphicons i:before {\n  width: 30px;\n  height: 30px;\n  line-height: 23px;\n  text-align: center;\n  font-size: 16px;\n  color: rgba(255, 255, 255, 0.5);\n}\n.widget .widget-head .heading {\n  margin: 0;\n  color: #7c7c7c;\n  font-size: 14px;\n  height: 35px;\n  line-height: 35px;\n  padding: 0 15px;\n  float: left;\n}\n.widget .widget-head .heading.glyphicons {\n  width: auto;\n  display: block;\n  padding: 0 0 0 35px;\n}\n.widget .widget-head .heading.glyphicons i:before {\n  padding: 0;\n  margin: 0;\n  left: 0;\n  top: 0;\n  height: 35px;\n  line-height: 35px;\n  text-align: center;\n  width: 35px;\n  color: #7c7c7c;\n  font-size: 16px;\n  font-weight: normal;\n  text-shadow: none;\n}\n.widget .widget-head a {\n  text-shadow: none;\n}\n.widget .widget-head .dropdown-menu li > a:hover,\n.widget .widget-head .dropdown-menu li > a:focus,\n.widget .widget-head .dropdown-submenu:hover > a {\n  background-color: #4a8bc2;\n  background-image: -moz-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4a8bc2), to(#d24343));\n  background-image: -webkit-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: -o-linear-gradient(top, #4a8bc2, #d24343);\n  background-image: linear-gradient(to bottom, #4a8bc2, #d24343);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c', endColorstr='#ffd24343', GradientType=0);\n}\n.widget .details {\n  font-size: 8pt;\n  color: #7c7c7c;\n}\n.widget .widget-body {\n  padding: 15px;\n}\n.widget .widget-body form {\n  margin: 0;\n}\n.widget .widget-body > pre:last-child,\n.widget .widget-body > p:last-child {\n  margin: 0;\n}\n.widget .widget-body.list {\n  color: #7c7c7c;\n  padding: 0;\n}\n.widget .widget-body.list .count {\n  font-size: 15pt;\n  font-weight: 400;\n}\n.widget .widget-body.list ul {\n  margin: 0;\n  list-style: none;\n}\n.widget .widget-body.list ul li {\n  padding: 0 10px;\n  height: 39px;\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  line-height: 39px;\n  text-align: left;\n  text-shadow: 0 1px 0 #ffffff;\n  clear: both;\n}\n.widget .widget-body.list ul li .badge {\n  position: absolute;\n  right: 8px;\n  top: 10px;\n}\n.widget .widget-body.list ul li:first-child {\n  border-top: none;\n}\n.widget .widget-body.list ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list ul li .count {\n  float: right;\n  color: #000000;\n}\n.widget .widget-body.list ul li .sparkline {\n  position: relative;\n  top: 5px;\n  margin-left: 5px;\n}\n.widget .widget-body.list ul li a {\n  color: #000000;\n  font-weight: bold;\n}\n.widget .widget-body.list.products li {\n  height: 60px;\n  line-height: 60px;\n}\n.widget .widget-body.list.products .img {\n  float: left;\n  display: inline-block;\n  width: 48px;\n  height: 44px;\n  line-height: 44px;\n  color: #fff;\n  text-align: center;\n  background: #272729;\n  margin: 8px 8px 0 0;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  text-shadow: none;\n  cursor: pointer;\n  font-size: 10pt;\n  font-weight: 600;\n}\n.widget .widget-body.list.products .title {\n  line-height: normal;\n  display: inline-block;\n  padding: 13px 0 0;\n  text-transform: uppercase;\n}\n.widget .widget-body.list.products .title strong {\n  font-family: \"Open Sans\", sans-serif;\n  text-transform: none;\n}\n.widget .widget-body.list.fluid ul li {\n  height: auto;\n  line-height: normal;\n  padding: 10px;\n}\n.widget .widget-body.list.list-2 ul li {\n  border-bottom: 1px solid #d8d9da;\n  border-top: none;\n  background: #f8f8f8;\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #dddddd;\n  background: #fff;\n}\n.widget .widget-body.list.list-2 ul li.active i:before {\n  font-weight: normal;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: none;\n}\n.widget .widget-body.list.list-2 ul li.active a {\n  color: #4a8bc2;\n}\n.widget .widget-body.list.list-2 ul li:last-child {\n  border-bottom: none;\n}\n.widget .widget-body.list.list-2 ul li a {\n  display: block;\n  color: #222;\n  padding: 0 0 0 30px;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  color: #555;\n  width: 20px;\n  height: 17px;\n  font-size: 14px;\n  border: 1px solid #ccc;\n  background: #dddddd;\n  top: 9px;\n  left: 0;\n  text-align: center;\n  vertical-align: middle;\n  padding-top: 3px;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu {\n  height: auto;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul {\n  padding: 0 0 10px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li {\n  height: auto;\n  line-height: normal;\n  background: none;\n  border: none;\n  line-height: 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li a {\n  color: #333;\n  padding: 0 0 0 20px;\n}\n.widget .widget-body.list.list-2 ul li.hasSubmenu ul li.active a {\n  font-weight: bold;\n}\n.widget .widget-footer {\n  background: #fafafa;\n  height: 25px;\n  line-height: 25px;\n  border-top: 1px solid #ebebeb;\n}\n.widget .widget-footer .glyphicons {\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n  padding: 0;\n  float: right;\n}\n.widget .widget-footer .glyphicons i:before {\n  font-size: 16px;\n  color: #c3c3c3;\n  text-align: center;\n  width: 20px;\n  height: 25px;\n  line-height: 25px;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget .widget-footer .glyphicons:hover i:before {\n  color: rgba(0, 0, 0, 0.5);\n}\n.widget.margin-bottom-none {\n  margin-bottom: 0;\n}\n.widget.widget-gray {\n  background: #f5f5f5;\n}\n.widget.widget-gray .widget-head {\n  background: #e9e9e9;\n  border-color: #d1d2d3;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.widget.widget-gray .widget-head .heading {\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n}\n.widget.widget-gray .widget-head .heading.glyphicons i:before {\n  background: none;\n  color: #555;\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2:before,\n.widget.widget-2:after {\n  display: none;\n}\n.widget.widget-2 .widget-head {\n  background: #e2e2e4;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  height: 36px;\n  line-height: 36px;\n  border-color: #d1d2d3;\n}\n.widget.widget-2 .widget-head .heading {\n  line-height: 36px;\n  color: #555555;\n  text-shadow: 0 1px 0 #fff;\n  font-size: 12pt;\n}\n.widget.widget-2 .widget-head .heading i:before {\n  color: #555555;\n  background: none;\n  border: none;\n  left: 3px;\n  top: 2px;\n}\n.widget.widget-2 .widget-body {\n  border: 1px solid #d1d2d3;\n  border-top: 0;\n  background: #f5f5f5;\n}\n.widget.widget-2.primary .widget-head {\n  background: #4a8bc2;\n  border-color: #4a8bc2;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.6), inset -1px -1px 1px rgba(0, 0, 0, 0.1);\n}\n.widget.widget-2.primary .widget-head .heading {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-2.primary .widget-head .heading i:before {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.widget.widget-3:before,\n.widget.widget-3:after {\n  display: none;\n}\n.widget.widget-3 .widget-head {\n  height: 36px;\n  line-height: 36px;\n}\n.widget.widget-3 .widget-head .heading {\n  display: block;\n  text-align: center;\n  float: none;\n  line-height: 36px;\n  height: 36px;\n  text-transform: uppercase;\n  font-size: 12pt;\n}\n.widget.widget-3 .widget-head .heading i:before {\n  background: none;\n  border: none;\n  left: 3px;\n  top: 5px;\n  font-size: 20px;\n  color: #45484d;\n}\n.widget.widget-3 .widget-head .heading .glyphicons {\n  vertical-align: middle;\n  width: 35px;\n  height: 36px;\n  padding: 0;\n}\n.widget.widget-3 .widget-body {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-body.large {\n  font-size: 26pt;\n  font-weight: bold;\n  text-align: center;\n  padding: 25px 0;\n  vertical-align: middle;\n  line-height: normal;\n}\n.widget.widget-3 .widget-body.large.cancellations span {\n  line-height: 20px;\n  text-align: left;\n  font-size: 17pt;\n  display: inline-block;\n  text-shadow: none;\n}\n.widget.widget-3 .widget-body.large.cancellations span span {\n  display: block;\n}\n.widget.widget-3 .widget-body.large.cancellations span span:first-child {\n  color: #4a8bc2;\n  text-transform: uppercase;\n  font-size: 13pt;\n}\n.widget.widget-3 .widget-body.large.dashboard {\n  padding: 15px 0;\n}\n.widget.widget-3 .widget-footer {\n  background: #fafafa;\n  border-top: none;\n}\n.widget.widget-3 .widget-footer a {\n  float: none;\n  color: #dddddd;\n  width: auto;\n  padding: 0 10px 0 30px;\n  border-right: 1px solid #dbdbdb;\n  text-decoration: none;\n}\n.widget.widget-3 .widget-footer a i:before {\n  color: #dddddd;\n  left: 5px;\n}\n.widget.widget-3 .widget-footer a:hover {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer a:hover i:before {\n  color: #4a8bc2;\n}\n.widget.widget-3 .widget-footer.align-center {\n  text-align: center;\n}\n.widget.widget-3 .widget-footer.align-center a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right {\n  text-align: right;\n}\n.widget.widget-3 .widget-footer.align-right a:first-child {\n  border-left: 1px solid #dbdbdb;\n}\n.widget.widget-3 .widget-footer.align-right a:last-child {\n  border-right: none;\n}\n.widget.widget-4 {\n  border: none;\n  background: none;\n}\n.widget.widget-4 .widget-head {\n  background: none;\n  padding: 10px;\n  border: none;\n}\n.widget.widget-4 .widget-head .heading {\n  color: #544f49;\n  text-shadow: none;\n  padding: 0;\n  margin: 0;\n}\n.widget.widget-4 .widget-body {\n  padding: 0 10px 10px;\n  border: none;\n}\n.widget.widget-4 .widget-body.list ul li {\n  padding: 0;\n}\n.widget.widget-heading-simple {\n  border: none;\n  background: none;\n}\n.widget.widget-heading-simple > .widget-head {\n  border: none;\n  background: none;\n  padding: 0 0 5px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading {\n  padding: 0;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons {\n  padding: 0 0 0 25px;\n}\n.widget.widget-heading-simple > .widget-head .heading.glyphicons i:before {\n  text-align: left;\n  width: 25px;\n  height: 25px;\n  line-height: 25px;\n}\n.widget.widget-heading-simple > .widget-body {\n  border: 1px solid #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget.widget-body-simple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-simple > .widget-body {\n  background: none;\n  border: none;\n  padding: 0;\n}\n.widget.widget-body-white > .widget-body {\n  background: #ffffff;\n}\n.widget.widget-body-gray {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-gray > .widget-body {\n  background: #e5e5e5;\n}\n.widget.widget-body-primary {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget.widget-body-primary > .widget-body {\n  background: #4a8bc2;\n}\n.widget.widget-body-primary > .widget-body * {\n  color: #fff;\n  text-shadow: none;\n}\n.widget.widget-body-multiple {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.widget.widget-body-multiple > .widget-body {\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  margin-bottom: 7.5px;\n}\n.widget.widget-body-multiple > .widget-body:last-of-type {\n  margin-bottom: 0;\n}\n.widget.widget-body-multiple.widget-body-gray > .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.widget-offers .price {\n  font-size: 14px;\n}\n.widget-offers .price strong {\n  color: #000;\n}\n.widget-offers .thumb {\n  padding: 0;\n}\n.widget-offers h5 {\n  border-bottom: 1px solid #cecece;\n  font-weight: 600;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 1px 0 0 #eeeeee;\n  padding: 0 0 5px;\n}\n.widget-activity > .widget-body {\n  padding: 0 15px;\n}\n.widget-activity ul.list {\n  list-style: none;\n  margin: 0 -15px;\n  padding: 0;\n}\n.widget-activity ul.list li {\n  height: 39px;\n  line-height: 39px;\n  position: relative;\n  overflow: hidden;\n  border-bottom: 1px solid #ebebeb;\n  padding: 0 15px;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.widget-activity ul.list li:hover,\n.widget-activity ul.list li.highlight {\n  background: #f2f2f2;\n  box-shadow: 0 1px 0 0 #ffffff inset;\n  -moz-box-shadow: 0 1px 0 0 #ffffff inset;\n  -webkit-box-shadow: 0 1px 0 0 #ffffff inset;\n  text-shadow: 0 1px 0 #ffffff;\n  cursor: pointer;\n}\n.widget-activity ul.list li:hover:after,\n.widget-activity ul.list li.highlight:after {\n  content: \"\\e212\";\n  display: block;\n  position: absolute;\n  right: 15px;\n  top: 0;\n  height: 39px;\n  line-height: 39px;\n  font-family: \"Glyphicons\";\n  font-size: 24px;\n  color: #d5d5d5;\n}\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before {\n  color: #505050;\n}\n.widget-activity ul.list li > span {\n  display: block;\n  height: 39px;\n  line-height: 39px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-activity ul.list li > span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-activity ul.list li > span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon {\n  width: 30px;\n  height: 39px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-activity ul.list li .activity-icon i {\n  height: 39px;\n  display: block;\n  position: relative;\n}\n.widget-activity ul.list li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #cbcbcb;\n  font-size: 18px;\n  line-height: 39px;\n}\n.widget-activity ul.list li.double {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li.double > span.ellipsis {\n  line-height: 15px;\n  padding: 7px 0 0;\n  font-weight: 600;\n  font-size: 11px;\n}\n.widget-activity ul.list li.double > span .meta {\n  display: block;\n  line-height: 15px;\n  font-weight: 400;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta i:before {\n  top: 1px;\n  color: #b7b7b7;\n}\n.widget-activity ul.list li.double > span .meta span {\n  font-style: italic;\n}\n.widget-activity ul.list li.double .activity-icon {\n  margin-left: 0;\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i {\n  height: 45px;\n}\n.widget-activity ul.list li.double .activity-icon i:before {\n  line-height: 45px;\n}\n.widget-activity ul.list li.double:hover:after,\n.widget-activity ul.list li.double.highlight:after {\n  height: 45px;\n  line-height: 45px;\n}\n.widget-activity ul.list li:last-child {\n  border: none;\n}\n.widget-activity .view-all {\n  position: absolute;\n  top: 18px;\n  right: 15px;\n}\n.widget-messages ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.widget-messages ul li {\n  border: 1px solid #e5e5e5;\n  padding: 5px;\n  margin: 0 0 10px;\n  position: relative;\n}\n.widget-messages ul li .meta span {\n  color: #a3a3a3;\n  font-size: 12px;\n}\n.widget-messages ul li .glyphicons.single.bin {\n  position: relative;\n  text-decoration: none;\n  padding: 0;\n  width: 15px;\n  height: 20px;\n  top: 5px;\n}\n.widget-messages ul li .glyphicons.single.bin i {\n  display: block;\n  width: 15px;\n  height: 20px;\n  text-align: center;\n}\n.widget-messages ul li .glyphicons.single.bin i:before {\n  color: #cccccc;\n  position: relative;\n  line-height: 20px;\n  left: auto;\n  top: auto;\n}\n.widget-messages ul li:last-child {\n  margin: 0;\n}\n.widget-timeline .widget-body {\n  padding: 15px;\n  position: relative;\n}\n.widget-timeline .widget-body:before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline:not(.widget) {\n  position: relative;\n}\n.widget-timeline:not(.widget):before {\n  display: block;\n  width: 1px;\n  background: #dbdbdb;\n  top: 15px;\n  bottom: 30px;\n  left: 75px;\n  content: \"\";\n  position: absolute;\n}\n.widget-timeline .view-all {\n  margin-left: 35px;\n}\n.widget-timeline ul.list-timeline {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\n.widget-timeline ul.list-timeline li {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  position: relative;\n  overflow: hidden;\n  background: #ffffff;\n  border: 1px solid #ebebeb;\n  margin: 0 0 10px;\n  padding: 0 10px;\n}\n.widget-timeline ul.list-timeline li:last-child {\n  margin: 0;\n}\n.widget-timeline ul.list-timeline li span {\n  display: block;\n  height: 30px;\n  line-height: 30px;\n  float: left;\n  position: relative;\n  overflow: hidden;\n}\n.widget-timeline ul.list-timeline li span.ellipsis {\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 75%;\n}\n.widget-timeline ul.list-timeline li span.date {\n  width: 40px;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon {\n  width: 30px;\n  height: 30px;\n  padding: 0;\n  margin: 0 10px;\n  display: inline-block;\n  text-align: center;\n}\n.widget-timeline ul.list-timeline li .activity-icon i {\n  height: 30px;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  position: relative;\n  background: #64625f;\n}\n.widget-timeline ul.list-timeline li .activity-icon i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #fff;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget-chat {\n  padding-bottom: 60px !important;\n}\n.widget-chat .media {\n  position: relative;\n  min-height: 80px;\n}\n.widget-chat .media .media-object {\n  position: relative;\n}\n.widget-chat .media .thumb {\n  padding: 0;\n}\n.widget-chat .media small {\n  color: #cccccc;\n}\n.widget-chat .media small:before,\n.widget-chat .media small:after {\n  content: \"\";\n}\n.widget-chat .media small.author {\n  position: absolute;\n  left: 0;\n  width: 50px;\n  top: 60px;\n  text-align: center;\n  display: block;\n}\n.widget-chat .media small.date {\n  display: block;\n  border-bottom: 1px solid #dbdbdb;\n  margin: 0 0 5px;\n  padding: 0 0 3px;\n  text-align: right;\n  width: 100%;\n}\n.widget-chat .media.right small.author {\n  left: auto;\n  right: 0;\n}\n.widget-chat .media.right small.date {\n  text-align: left;\n}\n.widget-chat .media .media-body {\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  padding: 0;\n}\n.widget-chat .media .media-body blockquote {\n  padding: 0;\n  width: 100%;\n}\n.widget-chat .media .media-body blockquote p:last-child {\n  margin: 0;\n}\n.widget-chat .media:last-of-type {\n  padding-bottom: 10px;\n}\n.widget-chat .chat-controls {\n  position: absolute;\n  height: 30px;\n  padding: 15px 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  border: 1px solid #dbdbdb;\n  border-top: none;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  background: #fff;\n}\n.widget-chat .widget-body {\n  padding-bottom: 0;\n}\n.widget-chat.widget-heading-simple > .widget-body {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.widget-stats {\n  background: #ffffff;\n  padding: 15px 0;\n  margin: 0;\n  height: 80px;\n  position: relative;\n  text-align: center;\n  display: block;\n  border: 1px solid #dbdbdb;\n  text-shadow: 0 1px 0 #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.widget-stats .count {\n  position: absolute;\n  top: 0;\n  left: 0;\n  font-size: 13px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget-stats .label {\n  font-weight: 600;\n  padding: 4px;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2) inset;\n}\n.widget-stats span {\n  display: inline-block;\n}\n.widget-stats .txt {\n  padding: 0;\n  color: #cecece;\n}\n.widget-stats .glyphicons {\n  padding: 0;\n  display: block;\n}\n.widget-stats .glyphicons i {\n  display: block;\n}\n.widget-stats .glyphicons i:before {\n  color: #cecece;\n  font-size: 30px;\n  top: 0;\n  left: 0;\n  position: relative;\n}\n.widget-stats,\n.widget-stats:hover,\n.widget-stats:focus {\n  text-decoration: none;\n}\n.widget-stats:hover {\n  background: #fdfdfd;\n}\n.widget-stats.small {\n  padding: 5px 0;\n}\n.widget-stats.small .glyphicons {\n  padding: 12px 0 0;\n}\n.widget-stats.small .glyphicons i:before {\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 {\n  padding: 8px 0;\n  height: 94px;\n}\n.widget-stats.widget-stats-1 .glyphicons {\n  display: block;\n  height: 35px;\n  line-height: 35px;\n  padding-bottom: 5px;\n}\n.widget-stats.widget-stats-1 .glyphicons .txt {\n  display: inline-block;\n  padding: 0 5px;\n  line-height: 35px;\n}\n.widget-stats.widget-stats-1 .glyphicons i {\n  display: inline-block;\n}\n.widget-stats.widget-stats-1 .glyphicons i:before {\n  top: 5px;\n  font-size: 25px;\n}\n.widget-stats.widget-stats-1 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  display: inline-block;\n  font-weight: 700;\n  padding: 0;\n  line-height: 40px;\n}\n.widget-stats.widget-stats-2 .txt {\n  font-size: 14px;\n}\n.widget-stats.widget-stats-2 .count {\n  position: relative;\n  top: auto;\n  right: auto;\n  font-size: 60px;\n  font-weight: 700;\n  padding: 0 0 3px;\n  display: block;\n  line-height: 55px;\n}\n.widget-stats.widget-stats-gray.widget-stats-1 .txt,\n.widget-stats.widget-stats-gray.widget-stats-2 .txt {\n  color: #000;\n}\n.widget-stats.widget-stats-easy-pie .easy-pie {\n  display: block;\n  width: 50px;\n  margin: -5px auto 0;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .easy-pie {\n  margin: 0 auto;\n}\n.widget-stats.widget-stats-easy-pie.txt-single .txt {\n  padding: 7px 0 0;\n}\n.widget-stats.widget-stats-3 .sparkline {\n  display: inline-block;\n}\n.widget-stats.widget-stats-3 .txt {\n  text-align: left;\n  vertical-align: middle;\n  padding: 13px 0 0 10px;\n}\n.widget-stats.widget-stats-3 .count {\n  padding: 0 0 5px;\n  display: block;\n}\n.widget-stats.widget-stats-gray {\n  background: #e5e5e5;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n}\n.box-generic {\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n  position: relative;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  margin: 0 0 15px;\n}\n.ribbon-wrapper {\n  width: 85px;\n  height: 88px;\n  overflow: hidden;\n  position: absolute;\n  top: -3px;\n  right: -3px;\n}\n.ribbon-wrapper .ribbon {\n  display: block;\n  font-family: Arial, sans-serif;\n  font-size: 15px;\n  font-weight: 600;\n  color: #fff;\n  text-align: center;\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  position: relative;\n  padding: 7px 0;\n  left: -5px;\n  top: 15px;\n  width: 120px;\n  line-height: 20px;\n  background-color: #797979;\n  -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n  box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n}\n.ribbon-wrapper .ribbon:before,\n.ribbon-wrapper .ribbon:after {\n  content: \"\";\n  border-top: 2px solid #797979;\n  border-left: 2px solid transparent;\n  border-right: 2px solid transparent;\n  position: absolute;\n  bottom: -2px;\n}\n.ribbon-wrapper .ribbon:before {\n  left: 0;\n  bottom: -1px;\n}\n.ribbon-wrapper .ribbon:after {\n  right: 0;\n}\n.ribbon-wrapper .ribbon.primary {\n  background-color: #4a8bc2;\n}\n.ribbon-wrapper .ribbon.success {\n  background-color: #609450;\n}\n.ribbon-wrapper .ribbon.warning {\n  background-color: #ab7a4b;\n}\n.ribbon-wrapper .ribbon.danger {\n  background-color: #bd362f;\n}\n.ribbon-wrapper .ribbon.default {\n  background-color: #e5e5e5;\n  color: #595959;\n}\n.ribbon-wrapper .ribbon.default:before,\n.ribbon-wrapper .ribbon.default:after {\n  border-top: 2px solid #ccc;\n}\n.ribbon-wrapper.small {\n  width: 65px;\n  height: 68px;\n}\n.ribbon-wrapper.small .ribbon {\n  width: 90px;\n  padding: 0;\n  font-size: 13px;\n}\n.ribbon-wrapper.small .ribbon:before {\n  bottom: -2px;\n}\n.breadcrumb {\n  height: 38px;\n  line-height: 39px;\n  padding: 0 15px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin: 0;\n  background: none;\n  border-bottom: 1px solid #dbdbdb;\n  box-shadow: 0 1px 0 0 #fff;\n  -moz-box-shadow: 0 1px 0 0 #fff;\n  -webkit-box-shadow: 0 1px 0 0 #fff;\n  color: #ababab;\n  font-size: 12px;\n  position: relative;\n  overflow: hidden;\n}\n.breadcrumb li {\n  text-shadow: 0 1px 0 #ffffff;\n  line-height: 38px;\n  height: 38px;\n}\n.breadcrumb li a {\n  color: #ababab;\n  font-weight: 600;\n}\n.breadcrumb li a.glyphicons {\n  color: #ababab;\n  padding: 0 0 0 25px;\n}\n.breadcrumb li a.glyphicons i:before {\n  color: #ababab;\n  font-size: 14px;\n  top: 12px;\n  left: 3px;\n}\n.breadcrumb li.divider {\n  margin: 0 5px 0 7px;\n  width: 0;\n  border-left: 1px solid #dbdbdb;\n  border-right: 1px solid #fff;\n  vertical-align: top;\n}\n.well {\n  z-index: 1;\n  position: relative;\n  padding: 15px;\n  margin: 0 0 15px;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  background: #fafafa;\n  border-color: #dbdbdb;\n}\n.well.small {\n  padding: 10px;\n}\n.well .popover {\n  z-index: 2;\n  font-size: 13px;\n}\n.well.dark {\n  background: rgba(0, 0, 0, 0.2);\n}\n.well.white {\n  background: #fff;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle {\n  position: relative;\n  height: 35px;\n  width: 30px;\n  display: block;\n  cursor: pointer;\n  float: right;\n  margin-right: -10px;\n}\n[data-toggle=\"collapse-widget\"] .collapse-toggle:before {\n  font-family: \"Glyphicons\";\n  font-size: 17px;\n  display: block;\n  width: 100%;\n  height: 35px;\n  line-height: 34px;\n  text-align: center;\n  color: #cccccc;\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle {\n  margin-right: 0;\n  height: 25px;\n}\n[data-toggle=\"collapse-widget\"].widget-heading-simple .collapse-toggle:before {\n  height: 25px;\n  line-height: 25px;\n}\n[data-toggle=\"collapse-widget\"] a ~ .collapse-toggle {\n  margin-right: 0;\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"false\"] .collapse-toggle:before {\n  content: \"\\e192\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .collapse-toggle:before {\n  content: \"\\e191\";\n}\n[data-toggle=\"collapse-widget\"][data-collapse-closed=\"true\"] .widget-head {\n  border-bottom: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list) {\n  -webkit-transition: padding 0.1s ease;\n  -moz-transition: padding 0.1s ease;\n  -o-transition: padding 0.1s ease;\n  transition: padding 0.1s ease;\n  padding: 0px;\n}\n[data-toggle=\"collapse-widget\"] .collapse:not(.list).in {\n  padding: 15px;\n}\n.glyphicons.standard {\n  width: 24px;\n  height: 24px;\n  padding: 0;\n}\n.glyphicons.standard i {\n  display: block;\n  height: 24px;\n}\n.glyphicons.standard i:before {\n  color: #64625f;\n  position: relative;\n  top: auto;\n  left: auto;\n}\n.glyphicons.standard:not(.disabled):hover i:before {\n  color: #797979;\n}\n.glyphicons.standard.btn {\n  padding: 4px;\n}\n.glyphicons.standard.btn.btn-small {\n  padding: 2px 5px;\n  width: auto;\n  height: auto;\n}\n.glyphicons.standard.btn.btn-small i:before {\n  top: auto;\n  line-height: 22px;\n}\n.glyphicons.primary i:before {\n  color: #4a8bc2;\n}\n.glyphicons.single {\n  color: #4a8bc2;\n  padding: 0 0 0 20px;\n}\n.glyphicons.single i:before {\n  font-size: 13px;\n  top: 4px;\n  color: #4a8bc2;\n}\n.glyphicons.single + .single {\n  margin-left: 8px;\n}\n.glyphicons.single.regular {\n  color: #7c7c7c;\n}\n.glyphicons.single.regular i:before {\n  color: #7c7c7c;\n}\n.glyphicons.text-error {\n  color: #4a8bc2;\n}\n.glyphicons.text-error i:before {\n  color: #4a8bc2;\n}\n.glyphicons.text-info {\n  color: #5d92b3;\n}\n.glyphicons.text-info i:before {\n  color: #5d92b3;\n}\n.glyphicons.text-success {\n  color: #719d46;\n}\n.glyphicons.text-success i:before {\n  color: #719d46;\n}\n.glyphicons.btn-action {\n  width: 25px;\n  height: 25px;\n  padding: 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border-width: 1px;\n  border-style: solid;\n  vertical-align: middle;\n}\n.glyphicons.btn-action i:before {\n  font-size: 14px;\n  top: 5px;\n  left: 5px;\n  text-shadow: 0 1px 0 #fff;\n  color: #fff !important;\n}\n.glyphicons.btn-action.btn-default i:before {\n  color: #7c7c7c !important;\n}\n.glyphicons.btn-action.single {\n  box-shadow: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  border: none;\n  background: none;\n  margin-right: 10px;\n}\n.glyphicons.btn-icon {\n  text-align: left;\n  padding: 5px 7px 5px 40px;\n}\n.glyphicons.btn-icon i {\n  float: left;\n}\n.glyphicons.btn-icon i:before {\n  font-size: 15px;\n  top: 0;\n  left: 0;\n  width: 33px;\n  height: 23px;\n  -webkit-border-radius: 3px 0px 0px 3px;\n  -moz-border-radius: 3px 0px 0px 3px;\n  border-radius: 3px 0px 0px 3px;\n  vertical-align: middle;\n  padding: 7px 0 0;\n  text-align: center;\n}\n.glyphicons.btn-icon.right {\n  text-align: left;\n  padding: 5px 0 5px 7px;\n}\n.glyphicons.btn-icon.right i:before {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n  right: 0;\n  left: auto;\n  text-align: center;\n}\n.glyphicons.btn-large {\n  padding: 10px 10px 10px 40px;\n  font-weight: 600;\n}\n.glyphicons.btn-large i:before {\n  top: 12px;\n  left: 12px;\n  font-size: 17px;\n}\n.glyphicons.btn-large.btn-icon i:before {\n  top: 0;\n  left: 0;\n  height: 28px;\n  padding: 12px 0 0;\n}\n.glyphicons.btn-small {\n  padding: 2px 10px 2px 35px;\n}\n.glyphicons.btn-small i:before {\n  padding: 5px 0 0;\n  width: 28px;\n  height: 19px;\n  font-size: 14px;\n}\n.glyphicons.btn-mini {\n  padding: 1px 6px 1px 33px;\n}\n.glyphicons.btn-mini i:before {\n  padding: 5px 0 0;\n  width: 26px;\n  height: 17px;\n  font-size: 13px;\n}\n.glyphicons.orange i:before {\n  color: #EDB459;\n}\n.glyphicons.btn-default i:before {\n  color: #9e9e9e;\n  text-shadow: none;\n}\nh4.glyphicons {\n  padding: 0 0 0 35px;\n  display: block;\n}\nh4.glyphicons i:before {\n  font-size: 22px;\n  font-weight: normal;\n  color: #575655;\n}\nh3.glyphicons,\nh2.glyphicons {\n  padding: 0 0 0 45px;\n  display: block;\n}\nh3.glyphicons i:before,\nh2.glyphicons i:before {\n  font-size: 27px;\n  font-weight: normal;\n  left: 2px;\n  top: 3px;\n  color: #575655;\n}\nh3.glyphicons.cogwheels i:before,\nh2.glyphicons.cogwheels i:before {\n  left: 5px;\n}\n.finances_summary .well {\n  font-size: 16px;\n  text-align: center;\n}\n.finances_summary .well strong {\n  display: block;\n  font-size: 22pt;\n  color: #45494c;\n  line-height: normal;\n}\n.finances_summary .glyphicons.standard i:before {\n  color: #cccccc;\n}\ndiv.glyphicons {\n  padding: 0 0 0 35px;\n}\ndiv.glyphicons i:before {\n  color: #cccccc;\n}\ndiv.glyphicons.glyphicon-large {\n  padding: 0 0 0 75px;\n}\ndiv.glyphicons.glyphicon-large i:before {\n  font-size: 50px;\n  left: 0;\n}\ndiv.glyphicons.glyphicon-large.group-column {\n  padding: 0 0 0 85px;\n}\ndiv.glyphicons.glyphicon-large.group-column i:before {\n  font-size: 45px;\n  left: 12px;\n}\ndiv.glyphicons.glyphicon-top {\n  padding: 0;\n  text-align: center;\n}\ndiv.glyphicons.glyphicon-top i {\n  display: block;\n  position: relative;\n}\ndiv.glyphicons.glyphicon-top i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i {\n  padding: 0 0 10px;\n}\ndiv.glyphicons.glyphicon-top.glyphicon-xlarge i:before {\n  font-size: 70px;\n}\ndiv.glyphicons.glyphicon-primary i:before {\n  color: #4a8bc2;\n}\n.widget-body-primary div.glyphicons i:before {\n  color: #fff;\n}\n.social-large {\n  height: 97px;\n}\n.social-large a {\n  display: block;\n  height: 77px;\n  float: left;\n  padding: 10px 19px;\n  color: #d5d5d5;\n  background: #ffffff;\n  font-weight: bold;\n  text-align: center;\n  border-right: 1px solid #e5e5e5;\n  text-decoration: none;\n}\n.social-large a i {\n  display: block;\n  position: relative;\n  padding: 0 0 8px;\n}\n.social-large a i:before {\n  display: block;\n  text-align: center;\n  top: auto;\n  left: auto;\n  position: relative;\n  font-size: 50px;\n  color: #d5d5d5;\n}\n.social-large a.active,\n.social-large a:hover {\n  color: #fff;\n  background: #4a8bc2;\n}\n.social-large a.active i:before,\n.social-large a:hover i:before {\n  color: #fff;\n}\n.social-large a:last-child {\n  border: none;\n}\n.social-large.social-large-2 a {\n  display: inline-block;\n  font-weight: 400;\n  float: none;\n  border: none;\n  background: none;\n  color: #444444;\n}\n.social-large.social-large-2 a i:before {\n  color: #444444;\n}\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover {\n  color: #4a8bc2;\n}\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before {\n  color: #4a8bc2;\n}\n.widget-pinterest .widget-body {\n  padding: 0;\n}\n.widget-pinterest .widget-body .description {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.widget-pinterest .widget-body .thumb {\n  padding: 0;\n  border: none;\n}\n.widget-pinterest .widget-body .thumb img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter {\n  position: relative;\n}\n.jstwitter .item {\n  overflow: hidden;\n}\n.jstwitter .tweet-wrapper {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  line-height: 16px;\n  padding: 15px;\n}\n.jstwitter .widget-body {\n  padding: 0;\n}\n.jstwitter .item a {\n  text-decoration: none;\n}\n.jstwitter .item img {\n  width: 100%;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.jstwitter .item .thumb {\n  padding: 0;\n  border: none;\n}\n.jstwitter .item a:hover {\n  text-decoration: underline;\n}\n.jstwitter .item .text {\n  display: block;\n}\n.jstwitter .item .time,\n.jstwitter .item .user {\n  font-style: italic;\n  color: #999;\n}\n.jstwitter .item.active {\n  display: block;\n}\n.rating {\n  unicode-bidi: bidi-override;\n  direction: rtl;\n}\n.rating.text-large {\n  margin: 7px 0;\n}\n.rating span.star {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  display: inline-block;\n}\n.rating span.star:before {\n  content: \"\\f006\";\n  padding-right: 5px;\n}\n.rating:not(.read-only) span.star:hover {\n  cursor: pointer;\n}\n.rating:not(.read-only) span.star:hover:before,\n.rating:not(.read-only) span.star:hover ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.rating span.star.active:before,\n.rating span.star.active ~ span.star:before {\n  content: \"\\f005\";\n  color: #4a8bc2;\n}\n.hero-unit {\n  background: none;\n  border: none;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n.widget.widget-tabs {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs .tab-content {\n  padding: 0;\n}\n.widget.widget-tabs > .widget-head {\n  background: #ffffff;\n  border-color: #dbdbdb;\n  overflow: visible;\n}\n.widget.widget-tabs > .widget-head ul {\n  position: relative;\n  overflow: visible;\n  list-style: none;\n  height: 35px;\n  margin: 0;\n  display: inline-block;\n}\n.widget.widget-tabs > .widget-head ul li {\n  height: 35px;\n  line-height: 35px;\n  float: left;\n  display: block;\n  border-right: 1px solid #dbdbdb;\n}\n.widget.widget-tabs > .widget-head ul li a {\n  width: auto;\n  height: 35px;\n  display: block;\n  padding: 0 15px;\n  position: relative;\n  overflow: hidden;\n  color: #7c7c7c;\n  text-decoration: none;\n}\n.widget.widget-tabs > .widget-head ul li a i:before {\n  left: 5px;\n  top: 5px;\n  color: #9d9d9d;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 15px 0 35px;\n}\n.widget.widget-tabs > .widget-head ul li.active {\n  height: 36px;\n  background: #fff;\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active a i:before {\n  color: #505050;\n}\n.widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 5px 0 0 0;\n  -moz-border-radius: 5px 0 0 0;\n  border-radius: 5px 0 0 0;\n}\n.widget.widget-tabs > .widget-body.large {\n  padding: 25px;\n}\n.widget.widget-tabs-double > .widget-head {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul {\n  height: 40px;\n}\n.widget.widget-tabs-double > .widget-head ul li,\n.widget.widget-tabs-double > .widget-head ul li.active {\n  height: 40px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double > .widget-head ul li a,\n.widget.widget-tabs-double > .widget-head ul li.active a {\n  height: 35px;\n  padding: 5px 0 0;\n}\n.widget.widget-tabs-double > .widget-head ul li a span,\n.widget.widget-tabs-double > .widget-head ul li.active a span {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 15px 0 38px;\n}\n.widget.widget-tabs-double > .widget-head ul li a.glyphicons i:before,\n.widget.widget-tabs-double > .widget-head ul li.active a.glyphicons i:before {\n  left: 4px;\n  top: 9px;\n  font-size: 20px;\n}\n.widget.widget-tabs-double-2 {\n  border: none;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border: 1px solid #dbdbdb;\n  border-bottom: none;\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head.border-bottom {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 > .widget-head ul {\n  height: 70px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li {\n  height: 70px;\n  line-height: 20px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a {\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n  height: 70px;\n  padding: 5px 0 0;\n  text-decoration: none;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a span {\n  display: block;\n  line-height: 30px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i {\n  display: block;\n  height: 24px;\n  padding: 13px 0 0;\n  line-height: 24px;\n  text-align: center;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  left: auto;\n  top: auto;\n  font-size: 24px;\n  position: relative;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active {\n  height: 70px;\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li.active a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover {\n  background: #ffffff;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head ul li:hover a i:before {\n  color: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-double-2 .widget-body-regular {\n  padding: 10px;\n  border: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-double-2 .widget-body-regular p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-vertical .widget-head {\n  border: none;\n  height: auto;\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-head ul {\n  display: block;\n  height: auto;\n}\n.widget.widget-tabs-vertical .widget-head ul li {\n  float: none;\n  display: block;\n  border-right: none;\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-vertical .widget-head ul li:last-child {\n  border: none;\n}\n.widget.widget-tabs-vertical .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-vertical .widget-body .tab-content {\n  padding: 12px 15px;\n}\n.widget.widget-wizard-pills .widget-head {\n  height: 60px;\n  padding: 10px 0;\n}\n.widget.widget-wizard-pills .widget-head ul {\n  height: 60px;\n}\n.widget.widget-wizard-pills .widget-head ul li {\n  height: 60px;\n  line-height: 60px;\n  color: #7c7c7c;\n  padding: 0 0 0 10px;\n  border: none;\n  position: relative;\n}\n.widget.widget-wizard-pills .widget-head ul li.status {\n  height: 45px;\n  padding: 15px 15px 0;\n  font-weight: 600;\n}\n.widget.widget-wizard-pills .widget-head ul li.status span.r {\n  display: block;\n  line-height: 15px;\n}\n.widget.widget-wizard-pills .widget-head ul li a {\n  height: 58px;\n  line-height: 60px;\n  padding: 0;\n  width: 58px;\n  text-align: center;\n  background: #dbdbdb;\n  border: 1px solid #dbdbdb;\n  color: #c8c8c8;\n  font-weight: 600;\n  font-size: 16pt;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  position: relative;\n  z-index: 2;\n}\n.widget.widget-wizard-pills .widget-head ul li.active {\n  height: 60px;\n  background: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.active a {\n  width: 60px;\n  height: 60px;\n  background: #f4f4f4;\n  border: none;\n}\n.widget.widget-wizard-pills .widget-head ul li.primary a {\n  width: 60px;\n  height: 60px;\n  background: #4a8bc2;\n  border: none;\n  color: #fff;\n}\n.widget.widget-wizard-pills .widget-head ul li:not(:first-child):before {\n  position: absolute;\n  background: #dbdbdb;\n  height: 1px;\n  left: 0;\n  right: 0;\n  top: 29px;\n  display: block;\n  content: \"\";\n  z-index: 1;\n}\n.widget.widget-wizard-pills .widget-head ul li.no-padding {\n  padding: 0;\n}\n.widget.widget-tabs-2 {\n  border-bottom: 1px solid #dbdbdb;\n}\n.widget.widget-tabs-2.border-bottom-none {\n  border-bottom: none;\n}\n.widget.widget-tabs-2 > .widget-head {\n  background: #fff;\n  border: none;\n  border-bottom: 1px solid #dbdbdb;\n  padding: 0 10px;\n}\n.widget.widget-tabs-2 > .widget-head ul {\n  border-color: #dbdbdb;\n}\n.widget.widget-tabs-2 > .widget-head ul li {\n  border: none;\n}\n.widget.widget-tabs-2 > .widget-head ul li.active {\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: -o-linear-gradient(top, #f7f7f7, #ffffff);\n  background-image: linear-gradient(to bottom, #f7f7f7, #ffffff);\n  background-repeat: repeat-x;\n}\n.widget.widget-tabs-2 > .widget-head ul li a {\n  border: 1px solid #dddddd;\n  border-bottom: none;\n  border-right: none;\n  color: #222;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.widget.widget-tabs-2 > .widget-head ul li:first-child a {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.widget.widget-tabs-2 > .widget-body {\n  background: #fff;\n  border: none;\n  padding: 15px;\n}\n.widget.tabs-right .widget-head ul {\n  float: right;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons {\n  width: 38px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i {\n  width: 38px;\n  display: block;\n  line-height: 35px;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li a.glyphicons i:before {\n  width: 38px;\n  text-align: center;\n  left: auto;\n  top: auto;\n  position: relative;\n  display: block;\n  line-height: 35px;\n  color: #cbcbcb;\n}\n.widget.widget-tabs-icons-only-2 > .widget-head ul li.active a.glyphicons i:before {\n  color: #505050;\n}\n.widget.widget-tabs-icons-only .widget-body {\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-body p:last-child {\n  margin: 0;\n}\n.widget.widget-tabs-icons-only .widget-head {\n  padding: 0 0 10px;\n}\n.widget.widget-tabs-icons-only .widget-head ul {\n  display: block;\n  overflow: hidden;\n  position: relative;\n  list-style: none;\n  margin: 0;\n  height: 30px;\n  line-height: 30px;\n  padding: 0;\n}\n.widget.widget-tabs-icons-only .widget-head ul li {\n  color: #dadada;\n  float: left;\n  display: block;\n  padding: 0 10px 0 0;\n  font-size: 8pt;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons {\n  width: 30px;\n  height: 30px;\n  padding: 0 3px;\n  text-align: center;\n  cursor: pointer;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i {\n  background: #e5e5e5;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n  display: block;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n  height: 30px;\n  position: relative;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons i:before {\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #64625f;\n  font-size: 17px;\n  line-height: 30px;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:hover i {\n  background: #dedede;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i {\n  background: #64625f;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons.active i:before {\n  color: #fff;\n}\n.widget.widget-tabs-icons-only .widget-head ul li.glyphicons:last-child {\n  padding: 0;\n}\n.tabsbar {\n  height: 60px;\n  border: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n  margin: 0 0 15px;\n}\n.tabsbar ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  height: 60px;\n}\n.tabsbar ul li {\n  float: left;\n  display: block;\n  height: 54px;\n  border-right: 1px solid #dbdbdb;\n  background: #fdfdfd;\n  padding: 3px;\n}\n.tabsbar ul li a {\n  display: block;\n  height: 54px;\n  line-height: 54px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  color: #7c7c7c;\n  text-decoration: none;\n  -webkit-transition: background 1s ease;\n  -moz-transition: background 1s ease;\n  -o-transition: background 1s ease;\n  transition: background 1s ease;\n}\n.tabsbar ul li a i {\n  display: inline-block;\n  float: left;\n  width: 39px;\n  height: 54px;\n}\n.tabsbar ul li a i:before {\n  color: #7c7c7c;\n  position: relative;\n  top: auto;\n  left: auto;\n  line-height: 54px;\n  text-align: center;\n}\n.tabsbar ul li.active a {\n  background-color: #6ca1ce;\n  background-image: -moz-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#83b0d5), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: -o-linear-gradient(top, #83b0d5, #4a8bc2);\n  background-image: linear-gradient(to bottom, #83b0d5, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff83b0d5', endColorstr='#ff4a8bc2', GradientType=0);\n  color: #fff;\n}\n.tabsbar ul li.active a i:before {\n  color: #fff;\n}\n.tabsbar.tabsbar-2 {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul {\n  height: 39px;\n}\n.tabsbar.tabsbar-2 ul li {\n  height: 39px;\n  padding: 0;\n  background: none;\n  border: none;\n  -webkit-transition: background 0.5s ease;\n  -moz-transition: background 0.5s ease;\n  -o-transition: background 0.5s ease;\n  transition: background 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a {\n  height: 39px;\n  line-height: 39px;\n  background: none;\n  -webkit-transition: color 0.5s ease;\n  -moz-transition: color 0.5s ease;\n  -o-transition: color 0.5s ease;\n  transition: color 0.5s ease;\n}\n.tabsbar.tabsbar-2 ul li a i {\n  height: 39px;\n  width: 33px;\n}\n.tabsbar.tabsbar-2 ul li a i:before {\n  line-height: 39px;\n  font-size: 20px;\n  -webkit-transition: color 1s ease;\n  -moz-transition: color 1s ease;\n  -o-transition: color 1s ease;\n  transition: color 1s ease;\n}\n.tabsbar.tabsbar-2 ul li.active {\n  background: #fff;\n}\n.tabsbar.tabsbar-2 ul li.active a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li.active a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2 ul li:not(.active):hover a i:before {\n  color: #4a8bc2;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a {\n  background: #4a8bc2;\n  color: #fff;\n}\n.tabsbar.tabsbar-2.active-fill ul li.active a i:before {\n  color: #fff;\n}\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n  background: #4a8bc2;\n  border-bottom-color: #4a8bc2;\n  color: #fff;\n}\n.nav-tabs {\n  border-bottom-color: #4a8bc2;\n}\n.nav-tabs > li > a {\n  padding: 6px 8px;\n}\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover {\n  background: #4a8bc2;\n  border-top-color: #4a8bc2;\n  border-left-color: #4a8bc2;\n  border-right-color: #4a8bc2;\n  color: #fff;\n  font-weight: bold;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.nav-pills a {\n  cursor: pointer;\n}\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover {\n  background: #4a8bc2;\n  color: #fff;\n}\n.nav-pills .glyphicons {\n  padding-left: 25px;\n}\n.nav-pills .glyphicons i:before {\n  position: relative;\n  font-size: 14px;\n  left: -10px;\n  top: 2px;\n  color: #F5EADB;\n  font-weight: normal;\n  text-shadow: none;\n}\n.tab-content {\n  overflow: visible;\n  padding: 0;\n}\n.btn {\n  font-weight: 600;\n  -webkit-border-radius: 2px 2px 2px 2px;\n  -moz-border-radius: 2px 2px 2px 2px;\n  border-radius: 2px 2px 2px 2px;\n}\n.btn-block {\n  width: 100%;\n}\n.btn + .btn:not(.btn-block) {\n  margin: 0 0 0 5px;\n}\n.input-append .btn + .btn,\n.input-prepend .btn + .btn {\n  margin-left: -1px;\n}\n.btn-group .btn + .btn:not(.btn-block) {\n  margin-left: -1px;\n}\n.btn-group.dropup .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-default {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n  color: rgba(0, 0, 0, 0.6);\n  text-shadow: 0 1px 0 #fff;\n  font-weight: 600;\n  background-color: #efefef;\n  background-image: -moz-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#e7e7e7));\n  background-image: -webkit-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: -o-linear-gradient(top, #f4f4f4, #e7e7e7);\n  background-image: linear-gradient(to bottom, #f4f4f4, #e7e7e7);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe7e7e7', GradientType=0);\n  border: 1px solid #cecece;\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled,\n.btn-default[disabled],\n.btn-default:hover,\n.btn-default:focus {\n  background: #e8e8e8;\n}\n.btn-default:active,\n.btn-default.active {\n  background: #e8e8e8;\n  color: #fff;\n  text-shadow: none;\n}\n.btn-default .caret {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n.btn-warning {\n  background-color: #b6895e;\n  background-image: -moz-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#be946b), to(#ab7a4b));\n  background-image: -webkit-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: -o-linear-gradient(top, #be946b, #ab7a4b);\n  background-image: linear-gradient(to bottom, #be946b, #ab7a4b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbe946b', endColorstr='#ffab7a4b', GradientType=0);\n  border: 1px solid #88613b;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-warning.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled,\n.btn-warning[disabled],\n.btn-warning:hover,\n.btn-warning:focus {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background: #ab7a4b;\n  color: #fff;\n}\n.btn-warning .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-info {\n  background: #93B9D8;\n  border: 1px solid #93B9D8;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-info.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled,\n.btn-info[disabled],\n.btn-info:hover,\n.btn-info:focus {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info:active,\n.btn-info.active {\n  background: #93B9D8;\n  color: #fff;\n}\n.btn-info .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-danger {\n  background-color: #ca4741;\n  background-image: -moz-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d3534c), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #d3534c, #bd362f);\n  background-image: -o-linear-gradient(top, #d3534c, #bd362f);\n  background-image: linear-gradient(to bottom, #d3534c, #bd362f);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd3534c', endColorstr='#ffbd362f', GradientType=0);\n  border: 1px solid #942a25;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-danger.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.5);\n  text-shadow: none;\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled,\n.btn-danger[disabled],\n.btn-danger:hover,\n.btn-danger:focus {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background: #bd362f;\n  color: #fff;\n}\n.btn-danger .caret {\n  border-top-color: rgba(255, 255, 255, 0.7);\n  border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.btn-primary {\n  background-color: #619aca;\n  background-image: -moz-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#70a3cf), to(#4a8bc2));\n  background-image: -webkit-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: -o-linear-gradient(top, #70a3cf, #4a8bc2);\n  background-image: linear-gradient(to bottom, #70a3cf, #4a8bc2);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff70a3cf', endColorstr='#ff4a8bc2', GradientType=0);\n  border: 1px solid #3771a2;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-primary.glyphicons i:before {\n  color: rgba(255, 255, 255, 0.4);\n  text-shadow: none;\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.btn-primary:focus {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.btn-primary .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n.btn-inverse {\n  background-color: #53575d;\n  background-image: -moz-linear-gradient(top, #5d6168, #45484d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5d6168), to(#45484d));\n  background-image: -webkit-linear-gradient(top, #5d6168, #45484d);\n  background-image: -o-linear-gradient(top, #5d6168, #45484d);\n  background-image: linear-gradient(to bottom, #5d6168, #45484d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5d6168', endColorstr='#ff45484d', GradientType=0);\n  border: 1px solid #2d2f32;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-inverse.glyphicons i:before {\n  color: #919293;\n  text-shadow: none;\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled,\n.btn-inverse[disabled],\n.btn-inverse:hover,\n.btn-inverse:focus {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse:active,\n.btn-inverse.active {\n  background: #45484d;\n  color: #fff;\n}\n.btn-inverse .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-success {\n  background-color: #6fa45f;\n  background-image: -moz-linear-gradient(top, #79ae69, #609450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#79ae69), to(#609450));\n  background-image: -webkit-linear-gradient(top, #79ae69, #609450);\n  background-image: -o-linear-gradient(top, #79ae69, #609450);\n  background-image: linear-gradient(to bottom, #79ae69, #609450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff79ae69', endColorstr='#ff609450', GradientType=0);\n  border: 1px solid #4b733e;\n  color: #ffffff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.btn-success.glyphicons i:before {\n  color: #a2bc9b;\n  text-shadow: none;\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled,\n.btn-success[disabled],\n.btn-success:hover,\n.btn-success:focus {\n  background: #609450;\n  color: #fff;\n}\n.btn-success:active,\n.btn-success.active {\n  background: #609450;\n  color: #fff;\n}\n.btn-success .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n.btn-group .btn-primary:not(.dropdown-toggle),\n.btn-group .btn-primary:not('[data-toggle*=\"\"]') {\n  margin-right: 2px;\n}\n.btn-group-vertical.block {\n  display: block;\n}\n.btn-group.btn-block {\n  padding: 0;\n  position: relative;\n}\n.btn-group.btn-block .leadcontainer {\n  left: 0;\n  position: absolute;\n  right: 29px;\n}\n.btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n  text-align: left;\n}\n.btn-group.btn-block .dropdown-lead {\n  box-sizing: border-box;\n  width: 100%;\n}\n.btn-group.btn-block .dropdown-toggle {\n  width: 30px;\n  float: right;\n  box-sizing: border-box;\n  text-align: center;\n  padding-left: 0;\n  padding-right: 0;\n}\n.btn-icon-stacked {\n  text-align: left;\n  padding: 5px 5px 5px 45px;\n}\n.btn-icon-stacked i {\n  display: block;\n  width: 24px;\n  height: 24px;\n  position: absolute;\n  left: 10px;\n  top: 10px;\n}\n.btn-icon-stacked i:before {\n  left: auto;\n  top: auto;\n  position: relative;\n  text-align: center;\n}\n.btn-icon-stacked span {\n  display: block;\n  font-size: 13px;\n  line-height: normal;\n}\n.btn-facebook {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #728dc0;\n  background-image: -moz-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#8098c6), to(#5d7cb6));\n  background-image: -webkit-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: -o-linear-gradient(top, #8098c6, #5d7cb6);\n  background-image: linear-gradient(to bottom, #8098c6, #5d7cb6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8098c6', endColorstr='#ff5d7cb6', GradientType=0);\n  border: 1px solid #5d7cb6;\n}\n.btn-facebook i:before {\n  color: #fff;\n}\n.btn-facebook:hover {\n  background: #8098c6;\n  color: #fff;\n}\n.btn-google {\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n  background-color: #b24343;\n  background-image: -moz-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bf4a4a), to(#9e3838));\n  background-image: -webkit-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: -o-linear-gradient(top, #bf4a4a, #9e3838);\n  background-image: linear-gradient(to bottom, #bf4a4a, #9e3838);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbf4a4a', endColorstr='#ff9e3838', GradientType=0);\n  border: 1px solid #9e3838;\n}\n.btn-google i:before {\n  color: #fff;\n}\n.btn-google:hover {\n  background: #bf4a4a;\n  color: #fff;\n}\n.btn-toggle-code {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  z-index: 1000;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.btn-toggle-code.outside {\n  bottom: -24px;\n}\n#demo_buttons .btn-block {\n  max-width: 200px;\n  margin: 0 auto;\n}\n#demo_buttons thead th {\n  width: 25%;\n}\n.form-inline.small input,\n.form-inline.small select {\n  margin: 0 5px 0 0;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  padding: 1px 5px;\n  border-color: #d8d9da;\n  color: #a7a7a7;\n}\n.form-inline.small select {\n  padding: 1px 0;\n  height: 23px;\n}\n.form-inline.small select:last-child {\n  margin-right: 0;\n}\n.form-inline.small label {\n  float: left;\n  margin: 0 5px 0 0;\n  display: block;\n}\n.form-inline.small .input-append.block {\n  display: block;\n}\n.form-inline.small .input-append input {\n  margin: 0;\n  width: 85%;\n}\n.form-inline.small .input-append .add-on {\n  padding: 1px 3px;\n  margin: 0 0 0 -1px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n  color: #d8d9da;\n  border-color: #d8d9da;\n}\n.form-inline.small .input-append .add-on i:before {\n  top: 4px;\n  left: 4px;\n  font-size: 14px;\n  color: #d0d1d1;\n}\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: #c1c1c1;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n}\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  font-size: 13px;\n}\n.uniformjs .radio .disabled input[type=\"radio\"],\n.uniformjs .checkbox .disabled input[type=\"checkbox\"] {\n  margin-left: 0;\n}\n.uniformjs .radio,\n.uniformjs .checkbox {\n  padding-left: 0;\n}\n.uniformjs .radio {\n  height: auto;\n}\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 3px;\n}\n.uniformjs label.radio {\n  margin-bottom: 0;\n}\n.uniformjs label.radio.inline {\n  margin: 0;\n}\n.checkbox.inline {\n  padding-bottom: 1px;\n}\n.uniformjs .radio span {\n  margin: 2px 0 0;\n}\n.uniformjs .checkbox span {\n  margin: -2px 0 0;\n}\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 13px;\n}\n.input-full input {\n  width: 83%;\n  height: 17px;\n}\nlegend {\n  line-height: normal;\n  height: auto;\n  font-size: 18px;\n  margin: 0 0 6px;\n  text-align: left;\n  padding: 0;\n  border: 0;\n  color: #797979;\n}\n.btn-group > .btn,\n.btn-group > .dropdown-menu {\n  font-size: 13px;\n}\n.strong {\n  font-weight: bold;\n}\ninput[type=text],\ninput[type=password],\nselect,\ntextarea {\n  border-color: #D8D9DA;\n  color: #A7A7A7;\n}\n.control-label.center {\n  text-align: center;\n}\n.form-actions {\n  background: none;\n  border: none;\n  margin: 0;\n}\n.form-horizontal .form-actions {\n  margin-top: 0;\n  padding: 0;\n}\n.form-horizontal .controls {\n  margin-left: 145px;\n}\n.form-horizontal .control-label {\n  width: 125px;\n}\n.form-horizontal .control-group:last-child {\n  margin: 0;\n}\n.input-prepend .add-on,\n.input-append .add-on {\n  background: #fff;\n}\n.input-prepend .add-on i:before,\n.input-append .add-on i:before {\n  color: #D0D1D1;\n}\n.input-prepend .add-on icon,\n.input-append .add-on icon {\n  margin-top: 0;\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n  background: #fff;\n}\n.input-prepend .add-on.glyphicons i:before,\n.input-append .add-on.glyphicons i:before {\n  font-size: 14px;\n  left: 7px;\n  top: 7px;\n  color: #D0D1D1;\n}\n.input-append .add-on.glyphicons i:before {\n  left: 6px;\n}\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover {\n  background: #4a8bc2;\n}\n.ms-container .custom-header {\n  height: 30px;\n  line-height: 30px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  padding: 0 15px;\n  font-weight: 600;\n  border: 1px solid #dbdbdb;\n}\n.ms-container .custom-header:not(.custom-footer) {\n  border-bottom: none;\n}\n.ms-container .custom-header.custom-footer {\n  border-top: none;\n}\n.select2-container img.flag,\n.select2-drop img.flag {\n  height: 10px;\n  width: 15px;\n  padding-right: 10px;\n}\n.select2-container .select2-choice {\n  border-color: #dbdbdb;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-container-multi .select2-choices {\n  border-color: #dbdbdb;\n  background: #fff;\n}\n.select2-container .select2-choice div {\n  border-color: #d8d8d8;\n  background: #fff;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.select2-drop {\n  border-color: #d8d8d8;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n  margin: 5px 0 3px 5px;\n  border-color: #d8d8d8;\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background: #4a8bc2;\n}\n.bootstrap-timepicker-widget table td {\n  font-size: 13px;\n}\n.bootstrap-timepicker > [class*=\"icon-\"] {\n  vertical-align: text-top;\n  margin: 0 0 0 -22.5px;\n  pointer-events: none;\n  position: relative;\n  cursor: pointer;\n}\n.table {\n  margin: 0 0 15px;\n  position: relative;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table.table-white {\n  background: #fff;\n}\n.table th,\n.table td {\n  border-top-color: #ebebeb;\n}\n.table td.center,\n.table th.center {\n  text-align: center;\n}\n.table td.right,\n.table th.right {\n  text-align: right;\n}\n.table-condensed {\n  font-size: 10pt;\n}\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 10px;\n}\n.table-borderless th,\n.table-borderless td {\n  border: none;\n}\n.table-striped tbody tr:nth-child(odd) td,\n.table-striped tbody tr:nth-child(odd) th {\n  background-color: #fafafa;\n}\n.table-bordered {\n  border-color: #dbdbdb;\n  /* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.table-bordered th,\n.table-bordered td {\n  border-color: #dbdbdb;\n}\n.table-fill td {\n  background: #F8F8F8;\n}\n.table .progress:last-child,\n.table .alert:last-child {\n  margin: 0;\n}\n.table .shortRight {\n  width: 25%;\n  text-align: right;\n  direction: rtl;\n  text-indent: 10px;\n}\n.table-large-spacing td {\n  padding: 20px 15px;\n}\n.table .thead td {\n  padding: 8px;\n  font-weight: bold;\n}\n.table-vertical-center td,\n.table-vertical-center th {\n  vertical-align: middle;\n}\n.table-thead-simple thead th {\n  background: none;\n  border-left: none;\n  border-right: none;\n  border-top: none;\n  border-bottom: 1px solid #ebebeb;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  text-shadow: none;\n  text-transform: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.table-thead-simple.table-thead-border-none {\n  border-top: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-thead-simple.table-thead-border-none thead th {\n  border-bottom: none;\n}\n.table-thead-simple.table-thead-border-none thead:first-child tr:first-child > th:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > td:last-child,\n.table-thead-simple.table-thead-border-none tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.table-primary {\n  border-color: #dbdbdb;\n  border-top: none;\n}\n.table-primary thead th {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  color: #fff;\n  font-size: 14px;\n}\n.table-primary tbody td {\n  color: #7c7c7c;\n  background: #fafafa;\n  border-width: 0px;\n}\n.table-primary tbody td.important {\n  color: #4a8bc2;\n  font-weight: 600;\n}\n.table-primary tbody td.actions {\n  padding-right: 1px;\n}\n.table-primary.table-bordered tbody td {\n  border-color: #dbdbdb;\n  border-width: 1px;\n  /*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\n}\n.table-primary tbody tr:nth-child(odd) td,\n.table-primary tbody tr:nth-child(odd) th {\n  background: #ffffff;\n}\n.table-primary tbody tr.selectable td {\n  cursor: pointer;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background: #cecece;\n  box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -webkit-box-shadow: 0 0 0 1px #a8a8a8 inset;\n  -moz-box-shadow: 0 0 0 1px #a8a8a8 inset;\n}\n.table-pricing th,\n.table-pricing td {\n  padding: 10px;\n}\n.table-pricing .plan {\n  font-weight: 600;\n  font-size: 14px;\n  display: block;\n}\n.table-pricing .price {\n  font-weight: 600;\n  font-size: 24px;\n  display: block;\n}\n.table-pricing .heading {\n  font-weight: 600;\n  font-size: 24px;\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard {\n  vertical-align: middle;\n}\n.table-pricing .glyphicons.standard.circle_ok i:before {\n  color: #9fc75f;\n}\n.table-pricing-2 th {\n  padding: 12px 0;\n  background: #64625f;\n  font-size: 14px;\n  color: #fff;\n  border-color: #5a5855;\n}\n.table-pricing-2 .pricing td {\n  padding: 12px 10px 10px;\n  background: #e5e5e5;\n  border-color: #cecece;\n}\ndiv.dataTables_filter label {\n  float: none;\n}\n.row-fluid [class*=\"span\"]:last-of-type .dataTables_filter {\n  text-align: right;\n}\n#DataTables_Table_0_length select {\n  width: 80px;\n}\n#DataTables_Table_0_info {\n  padding: 0;\n}\n.dataTables_paginate {\n  text-align: right;\n}\n.dataTables_length {\n  padding-top: 5px;\n}\n.ColVis {\n  margin: 0;\n}\n.google-visualization-table-div-page {\n  margin: 10px 0 0 0 !important;\n}\n.google-visualization-table-div-page .a-d-e-h-g {\n  padding: 0;\n  border: none;\n  margin: 0;\n}\n.google-visualization-table-div-page .a-d-e-f-g,\n.google-visualization-table-div-page .a-d-e-h-g {\n  border-style: none;\n}\n.google-visualization-table-div-page .a-d-e-o-q .a-d-e-h-g {\n  border: none;\n}\n.google-visualization-table-div-page .a-d-e {\n  background: none;\n  margin-left: 5px;\n}\n.google-visualization-table-div-page .a-d-e.a-d-e-o-p {\n  margin-left: 0;\n}\n.google-visualization-table-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n  border: 1px solid #e5e5e5;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  font-size: 10pt;\n  background: none !important;\n}\n.google-visualization-table-table td,\n.google-visualization-table-table .tableHeaderRow td {\n  padding: 4px 10px;\n  border: none;\n  border-left: 1px solid #e5e5e5;\n  border-top: 1px solid #e5e5e5;\n  line-height: 20px;\n}\n.google-visualization-table-table .tableHeaderRow td {\n  font-weight: bold;\n  vertical-align: bottom;\n}\n.google-visualization-table-table tbody tr:nth-child(odd) td,\n.google-visualization-table-table tbody tr:nth-child(odd) td {\n  background-color: rgba(255, 255, 255, 0.5);\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:first-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:first-child {\n  -webkit-border-top-left-radius: 4px;\n  border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child > td:last-child,\n.google-visualization-table-table tbody:first-child tr:first-child > td:last-child {\n  -webkit-border-top-right-radius: 4px;\n  border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n.google-visualization-table-table tbody:last-child tr:last-child > td:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n.google-visualization-table-table .tableHeaderRow:first-child tr:first-child td,\n.google-visualization-table-table tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n@media only screen and (max-width: 979px) {\n  .table-responsive.swipe-horizontal {\n    border-collapse: collapse;\n    border-spacing: 0;\n    display: block;\n    position: relative;\n    width: 100%;\n    border-left: 1px solid #DDD;\n  }\n  .table-responsive.swipe-horizontal th,\n  .table-responsive.swipe-horizontal td {\n    display: block;\n    margin: 0;\n    vertical-align: top;\n  }\n  .table-responsive.swipe-horizontal th {\n    text-align: right;\n    border-bottom: 0;\n    border-left: 0;\n  }\n  .table-responsive.swipe-horizontal td {\n    min-height: 1.25em;\n    text-align: left;\n    border-left: 0;\n    border-right: 0;\n    border-bottom: 0;\n    border-top: 0;\n    font-size: 13px;\n  }\n  .table-responsive.swipe-horizontal thead {\n    display: block;\n    float: left;\n  }\n  .table-responsive.swipe-horizontal thead tr {\n    display: block;\n  }\n  .table-responsive.swipe-horizontal tbody {\n    display: block;\n    width: auto;\n    position: relative;\n    overflow-x: auto;\n    white-space: nowrap;\n    word-spacing: 0;\n    letter-spacing: 0;\n    font-size: 0;\n  }\n  .table-responsive.swipe-horizontal tbody tr {\n    display: inline-block;\n    vertical-align: top;\n    border-left: 1px solid #e5e5e5;\n  }\n  .table-responsive.block {\n    /* Force table to not be like tables anymore */\n  \n    /* Hide table headers (but not display: none;, for accessibility) */\n  \n    /* Label the data */\n  \n  }\n  .table-responsive.block table,\n  .table-responsive.block thead,\n  .table-responsive.block tbody,\n  .table-responsive.block th,\n  .table-responsive.block td,\n  .table-responsive.block tr {\n    display: block;\n  }\n  .table-responsive.block thead tr {\n    position: absolute;\n    top: -9999px;\n    left: -9999px;\n  }\n  .table-responsive.block tr {\n    border: 1px solid #e5e5e5;\n  }\n  .table-responsive.block td {\n    /* Behave  like a \"row\" */\n  \n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n    position: relative;\n    padding-left: 50%;\n    white-space: normal;\n    text-align: left;\n  }\n  .table-responsive.block td:before {\n    /* Now like a table header */\n  \n    position: absolute;\n    /* Top/left values mimic padding */\n  \n    vertical-align: middle;\n    left: 6px;\n    width: 45%;\n    padding-right: 10px;\n    white-space: nowrap;\n    text-align: right;\n    font-weight: bold;\n  }\n  .table-responsive.block td:before {\n    content: attr(data-title);\n  }\n}\n.table-invoice td {\n  border: none;\n  padding: 0;\n}\n.table-projects .stats span {\n  display: block;\n  text-transform: uppercase;\n  padding: 2px 0;\n}\n.table-projects .stats span.count {\n  font-size: 18pt;\n  font-weight: normal;\n  color: #4a8bc2;\n}\n.label.large {\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n  background: #e5e5e5;\n  color: #64625f;\n  text-shadow: 0 1px 0 #fff;\n}\n.label.label-primary {\n  background: #4a8bc2;\n}\n.label.label-warning {\n  background: #ab7a4b;\n}\n.label.label-important {\n  background: #bd362f;\n}\n.label.label-success {\n  background: #609450;\n}\n.label.label-block {\n  display: block;\n}\n.tooltip-inner {\n  background: #272a2c;\n  color: #bab9b9;\n}\n.tooltip.bottom .tooltip-arrow {\n  border-bottom-color: #272a2c;\n}\n.tooltip.top .tooltip-arrow {\n  border-top-color: #272a2c;\n}\n.tooltip.left .tooltip-arrow {\n  border-left-color: #272a2c;\n}\n.tooltip.right .tooltip-arrow {\n  border-right-color: #272a2c;\n}\n.tooltip.left {\n  margin-left: -13px;\n}\n#flotTip {\n  white-space: nowrap;\n  border: 1px solid #4a8bc2;\n  padding: 3px 8px;\n  background: #4a8bc2;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  position: absolute;\n  z-index: 100;\n  color: #fff;\n}\n.popover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n}\n.popover .popover-title {\n  font-weight: 600;\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  border-bottom: 1px solid #dbdbdb;\n  position: relative;\n  overflow: hidden;\n}\n#demo_popovers .popover {\n  position: relative;\n  display: block;\n  width: 100%;\n  margin: 0;\n}\n.modal-backdrop {\n  z-index: 10000;\n  background: #000000;\n}\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.modal {\n  z-index: 10001;\n  border-color: #dbdbdb;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  background: #ffffff;\n}\n.modal .modal-header {\n  padding: 0 10px;\n  height: 29px;\n  line-height: 29px;\n  border-color: #dbdbdb;\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\n.modal .modal-header h3 {\n  font-size: 14px;\n}\n.modal .modal-header .close {\n  position: absolute;\n  top: 5px;\n  right: 10px;\n  padding: 0;\n  margin: 0;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #7c7c7c;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.modal .modal-body {\n  padding: 10px;\n}\n.modal .modal-body p:last-child {\n  margin: 0;\n}\n.modal .modal-footer {\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  border-color: #ebebeb;\n  padding: 10px;\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n.alert {\n  margin: 0 0 15px;\n  color: #fff;\n  border-color: #ab7a4b;\n  background: #ab7a4b;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n}\n.alert h4 {\n  margin: 0 0 5px;\n  color: #fff;\n}\n.alert.alert-error {\n  background: #bd362f;\n  color: #fff;\n  border-color: #bd362f;\n}\n.alert.alert-error .close {\n  color: #fff;\n}\n.alert.alert-error h4 {\n  color: #fff;\n}\n.alert.alert-primary {\n  background: #4a8bc2;\n  color: #fff;\n  border-color: #4a8bc2;\n}\n.alert.alert-primary .close {\n  color: #fff;\n}\n.alert.alert-primary h4 {\n  color: #fff;\n}\n.alert.alert-info {\n  background: #dff3f8;\n  color: #7399b9;\n  border-color: #93b9d8;\n}\n.alert.alert-info .close {\n  color: #7399b9;\n}\n.alert.alert-success {\n  border-color: #609450;\n  background: #609450;\n  color: #fff;\n}\n.alert.alert-success .close,\n.alert.alert-success h4 {\n  color: #fff;\n}\n.alert .close {\n  opacity: 1;\n  filter: alpha(opacity=100);\n  color: #fff;\n}\n.progress {\n  background: #ffffff;\n  margin: 0 0 10px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.progress .bar {\n  background: #e8e8e8;\n}\n.progress .bar.right {\n  text-align: right;\n  text-indent: 10px;\n  direction: rtl;\n}\n.progress.white {\n  background: #fff;\n}\n.progress.progress-info .bar {\n  background: #93b9d8;\n}\n.progress.progress-success .bar {\n  background: #609450;\n}\n.progress.progress-warning .bar {\n  background: #ab7a4b;\n}\n.progress.progress-primary .bar {\n  background: #4a8bc2;\n}\n.progress.progress-danger .bar {\n  background: #bd362f;\n}\n.progress.progress-inverse .bar {\n  background: #45484d;\n}\n.progress.progress-small {\n  height: 15px;\n}\n.progress.progress-small .bar {\n  font-size: 8px;\n  line-height: 15px;\n}\n.progress.progress-small .bar.right {\n  text-indent: 2px;\n}\n.progress.progress-mini {\n  height: 5px;\n}\n.accordion {\n  margin: 0 0 10px;\n  position: relative;\n}\n.accordion .accordion-group {\n  border-color: #dbdbdb;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.accordion .accordion-inner {\n  font-size: 13px;\n  background: #ffffff;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n  border-color: #dbdbdb;\n}\n.accordion .accordion-heading .accordion-toggle {\n  background-color: #f9f9f9;\n  background-image: -moz-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#f4f4f4));\n  background-image: -webkit-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: -o-linear-gradient(top, #fdfdfd, #f4f4f4);\n  background-image: linear-gradient(to bottom, #fdfdfd, #f4f4f4);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#fff4f4f4', GradientType=0);\n  color: #7c7c7c;\n  text-decoration: none;\n  font-weight: 600;\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n  height: 29px;\n  padding: 0 10px;\n  line-height: 29px;\n}\n.accordion.accordion-2 {\n  border: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle {\n  border-bottom: 1px solid #dbdbdb;\n  background: #ffffff;\n  height: 38px;\n  line-height: 38px;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons {\n  padding: 0 10px;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i {\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  display: block;\n  float: left;\n}\n.accordion.accordion-2 .accordion-heading .accordion-toggle.glyphicons i:before {\n  font-size: 20px;\n  color: #cccccc;\n  top: auto;\n  left: auto;\n  width: 30px;\n  line-height: 38px;\n  height: 38px;\n  position: relative;\n  text-align: center;\n}\n.accordion.accordion-2 .accordion-body.in {\n  border-bottom: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-group {\n  border: none;\n  margin: 0;\n}\n.accordion.accordion-2 .accordion-group:last-child .accordion-body.in {\n  border-top: 1px solid #dbdbdb;\n}\n.accordion.accordion-2 .accordion-inner {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.pager li > a,\n.pager li > span {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.pagination ul {\n  background: #ffffff;\n}\n.pagination ul > li > a:hover {\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n  border-color: #70a3cf;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n}\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n  font-weight: 600;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -webkit-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n  -moz-box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.2) inset;\n}\n.pagination ul > li > a,\n.pagination ul > li > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  font-weight: 600;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.pagination ul > .disabled > a:hover {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  color: #dddddd;\n  text-shadow: none;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.gritter-item-wrapper .gritter-item p {\n  margin: 0 0 10px;\n}\n.gritter-item-wrapper .gritter-item p:last-child {\n  margin: 0;\n}\n.gritter-item-wrapper.gritter-primary .gritter-top {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-bottom {\n  display: none;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item {\n  background: rgba(74, 139, 194, 0.9);\n  padding: 10px 10px 15px;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  color: #fff;\n}\n.gritter-item-wrapper.gritter-primary .gritter-item a {\n  color: #fff;\n  text-decoration: underline;\n}\n.notyfy_wrapper {\n  border: none;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n.notyfy_wrapper.notyfy_alert {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_error {\n  background: #bd362f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_success {\n  background: #51a351;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_warning {\n  background: #74614f;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_information {\n  background: #57B7E2;\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_confirm {\n  background: #ffffff;\n}\n.notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2;\n  border: none;\n}\n.notyfy_wrapper.notyfy_primary,\n.notyfy_wrapper.notyfy_primary * {\n  color: #fff;\n}\n.notyfy_wrapper.notyfy_default {\n  background: #fafafa;\n}\n.notyfy_wrapper.notyfy_dark {\n  background: #4a4846;\n}\n.notyfy_wrapper.notyfy_dark,\n.notyfy_wrapper.notyfy_dark * {\n  color: #fff;\n}\n#notyfy_container_top {\n  top: 0;\n  left: 0;\n  width: 100%;\n}\n#notyfy_container_top .notyfy_wrapper {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper {\n  border: none;\n  box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\n#content-notification .notyfy_wrapper p {\n  margin: 0;\n}\n#content-notification .notyfy_wrapper .notyfy_message {\n  padding: 15px 10px;\n}\n#content-notification .notyfy_wrapper.notyfy_default {\n  background: #fafafa url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_dark {\n  background: #4a4846 url(\"../images/pattern1.png\") repeat;\n}\n#content-notification .notyfy_wrapper.notyfy_primary {\n  background: #4a8bc2 url(\"../images/pattern1.png\") repeat;\n  box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -moz-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n  -webkit-box-shadow: inset 0 8px 8px -8px #0a141d, inset 0 -8px 8px -8px #2a567c;\n}\n.sliders-vertical span {\n  height: 120px;\n  float: left;\n  margin: 15px;\n}\n.ui-slider-wrap {\n  display: block;\n  padding: 5px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider {\n  background: rgba(0, 0, 0, 0.1);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal {\n  height: 10px;\n}\n.ui-slider-wrap .ui-slider-horizontal .ui-slider-handle {\n  top: -5px;\n}\n.ui-slider-wrap .ui-slider-vertical .ui-slider-handle {\n  left: -4px;\n}\n.ui-slider-wrap .ui-slider-handle {\n  -webkit-border-radius: 50% 50% 50% 50%;\n  -moz-border-radius: 50% 50% 50% 50%;\n  border-radius: 50% 50% 50% 50%;\n  background: #fff;\n  border-width: 3px;\n  border-style: solid;\n  border-color: rgba(0, 0, 0, 0.3);\n  width: 13px;\n  height: 13px;\n  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n  -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n}\n.ui-slider-wrap .ui-slider-range {\n  -webkit-border-radius: 10px 10px 10px 10px;\n  -moz-border-radius: 10px 10px 10px 10px;\n  border-radius: 10px 10px 10px 10px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n  background: rgba(0, 0, 0, 0.2);\n}\n.ui-slider-wrap .slider-primary .ui-slider-handle {\n  border-color: #4a8bc2;\n}\n.ui-slider-wrap .slider-primary .ui-slider-range {\n  background: #4a8bc2;\n}\n.ui-slider-wrap .slider-warning .ui-slider-handle {\n  border-color: #FBB450;\n}\n.ui-slider-wrap .slider-warning .ui-slider-range {\n  background: #FBB450;\n}\n.ui-slider-wrap .slider-success .ui-slider-handle {\n  border-color: #609450;\n}\n.ui-slider-wrap .slider-success .ui-slider-range {\n  background: #609450;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-handle {\n  border-color: #3F4246;\n}\n.ui-slider-wrap .slider-inverse .ui-slider-range {\n  background: #3F4246;\n}\n.ui-slider-wrap .slider-info .ui-slider-handle {\n  border-color: #93B9D8;\n}\n.ui-slider-wrap .slider-info .ui-slider-range {\n  background: #93B9D8;\n}\n.sliders-vertical {\n  position: relative;\n  margin: 0 auto;\n  display: inline-block;\n}\n.sliders-vertical .ui-slider-wrap {\n  margin: 0 5px;\n}\n.sliders-vertical .ui-slider {\n  margin: 0;\n}\n.vertical-range-slider .ui-slider-wrap {\n  display: inline-block;\n  margin: 0 auto;\n}\n.sliderContainer {\n  height: 35px;\n  margin-top: 50px;\n  width: 100%;\n}\n.sliderContainer select,\n.sliderContainer textarea,\n.sliderContainer input[type=\"text\"],\n.sliderContainer input[type=\"password\"],\n.sliderContainer input[type=\"datetime\"],\n.sliderContainer input[type=\"datetime-local\"],\n.sliderContainer input[type=\"date\"],\n.sliderContainer input[type=\"month\"],\n.sliderContainer input[type=\"time\"],\n.sliderContainer input[type=\"week\"],\n.sliderContainer input[type=\"number\"],\n.sliderContainer input[type=\"email\"],\n.sliderContainer input[type=\"url\"],\n.sliderContainer input[type=\"search\"],\n.sliderContainer input[type=\"tel\"],\n.sliderContainer input[type=\"color\"],\n.sliderContainer .uneditable-input {\n  margin: 0;\n  padding: 2px 4px;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container {\n  margin: 0 20px;\n}\n.sliderContainer .ui-rangeSlider-bar {\n  background: #4a8bc2;\n  height: 30px;\n  margin: 0;\n}\n.sliderContainer .ui-rangeSlider-withArrows .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-noArrow .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-bar {\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n}\n.sliderContainer .ui-rangeSlider-container,\n.sliderContainer .ui-rangeSlider-arrow,\n.sliderContainer .ui-rangeSlider-label {\n  background: #e5e5e5;\n  color: #7c7c7c;\n  font-size: 13px;\n}\n.sliderContainer .ui-rangeSlider-container {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-editRangeSlider .ui-rangeSlider-label {\n  padding: 5px;\n}\n.sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #e5e5e5;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4a8bc2;\n  margin-right: -4px;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4a8bc2;\n  margin-left: -4px;\n}\n.sliderContainer .ui-rangeSlider-arrow {\n  width: 20px;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale {\n  overflow: hidden;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner {\n  border-color: #dbdbdb;\n}\n.sliderContainer .ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label {\n  color: #7c7c7c;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-bar {\n  background: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #bd362f;\n}\n.sliderContainer .rangeslider-danger .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #bd362f;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-bar {\n  background: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #609450;\n}\n.sliderContainer .rangeslider-success .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #609450;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-bar {\n  background: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #ab7a4b;\n}\n.sliderContainer .rangeslider-warning .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #ab7a4b;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-label-inner {\n  border-top-color: #cecece;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider-container,\n.widget-body-gray .sliderContainer .ui-rangeSlider-arrow,\n.widget-body-gray .sliderContainer .ui-rangeSlider-label {\n  background: #cecece;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #4d4d4d;\n}\n.widget-body-gray .sliderContainer .ui-rangeSlider:not(.rangeslider-success) .ui-rangeSlider-bar {\n  background: #4d4d4d;\n}\n.ui-widget-header {\n  border-color: #4a8bc2;\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n  background: #fafafa;\n  border-color: #dddddd;\n  color: #797979;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-widget-content {\n  border: none;\n}\n.ui-datepicker {\n  padding: 10px;\n  background: #fff;\n  font-size: 12px;\n}\n.ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.widget-body-gray .ui-datepicker {\n  background: none;\n  padding: 0;\n  font-size: 12px;\n}\n.widget-body-gray .ui-datepicker .ui-widget-header {\n  background: none;\n  color: #4d4d4d;\n  border: none;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar {\n  border-collapse: collapse;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead {\n  background: #cecece;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar thead th {\n  padding: .5em .3em;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td {\n  padding: 0;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td span {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a {\n  text-align: center;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-default {\n  background: none;\n  color: #4d4d4d;\n  font-weight: 600;\n}\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active {\n  background: #4a8bc2;\n  color: #fff;\n}\n.ui-datepicker-inline {\n  width: 100%;\n  padding: 0;\n}\n.datepicker-inline {\n  margin: 0 0 5px;\n}\n.wizard .wizard-head {\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-bottom: none;\n}\n.bwizard-steps .label {\n  position: relative;\n  top: -1px;\n  margin: 0 5px 0 0;\n  padding: 1px 5px 2px;\n}\n.bwizard-steps .active .label {\n  background-color: #333;\n}\n.bwizard-steps {\n  display: block;\n  margin: 0;\n  padding: 0;\n  height: 40px;\n  list-style: none;\n}\n.bwizard-steps li {\n  display: block;\n  float: left;\n  position: relative;\n  margin-right: 5px;\n  line-height: 40px;\n  height: 40px;\n  background: #fafafa;\n}\n.bwizard-steps li a {\n  display: block;\n  height: 40px;\n  line-height: 40px;\n  padding: 0 20px 0 40px;\n}\n.bwizard-steps li.active {\n  color: #fff;\n  background: #4a8bc2;\n}\n.bwizard-steps li.active:after {\n  border-left-color: #4a8bc2;\n}\n.bwizard-steps li.active a {\n  color: #fff;\n  cursor: default;\n}\n.bwizard-steps li:after {\n  position: absolute;\n  right: -20px;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fafafa;\n  border-top: 20px inset transparent;\n  content: \"\";\n  z-index: 2;\n}\n.bwizard-steps li:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  height: 0;\n  width: 0;\n  border-bottom: 20px inset transparent;\n  border-left: 20px solid #fff;\n  border-top: 20px inset transparent;\n  content: \"\";\n}\n.bwizard-steps li:last-child {\n  margin-right: 0;\n}\n.bwizard-steps li:first-child:before {\n  border: none;\n}\n.bwizard-steps li:first-child a {\n  padding-left: 20px;\n}\n.bwizard-steps a:hover {\n  text-decoration: none;\n}\n.bwizard-steps.clickable li:not (.active ) {\n  cursor: pointer;\n}\n.bwizard-steps.clickable li:hover:not (.active ) {\n  background: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ):after {\n  border-left-color: #ccc;\n}\n.bwizard-steps.clickable li:hover:not (.active ) a {\n  color: #08c;\n}\n@media (max-width: 480px) {\n  /* badges only on small screens */\n  .bwizard-steps li:after,\n  .bwizard-steps li:before {\n    border: none;\n  }\n  .bwizard-steps li,\n  .bwizard-steps li.active,\n  .bwizard-steps li:first-child,\n  .bwizard-steps li:last-child {\n    margin-right: 0;\n    padding: 0;\n    background-color: transparent;\n  }\n}\n.layout-timeline {\n  border-top-color: #d2d1d0 !important;\n  border-top-width: 2px !important;\n}\n.layout-timeline > [class*=\"span\"] ~ [class*=\"span\"]:after {\n  width: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline .media {\n  margin: 0 0 15px;\n}\n.layout-timeline .media .media-body {\n  padding: 10px 0 0;\n  line-height: 17px;\n}\n.layout-timeline .media .media-body .author {\n  font-size: 14px;\n}\n.layout-timeline .glyphicons.pencil {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  margin: 0;\n  padding: 0;\n  width: 20px;\n  height: 20px;\n}\n.layout-timeline .glyphicons.pencil i:before {\n  top: 0;\n  right: 0;\n  font-size: 17px;\n  color: #cccccc;\n}\n.layout-timeline ul.timeline {\n  list-style: none;\n  margin: 0;\n  padding: 15px 15px 15px 30px;\n}\n.layout-timeline ul.timeline > li {\n  position: relative;\n  padding: 0 0 15px;\n}\n.layout-timeline ul.timeline > li .date {\n  width: 50px;\n  padding: 5px 0;\n  text-align: center;\n  text-transform: uppercase;\n  font-weight: 600;\n  position: absolute;\n  left: -70px;\n  top: 0;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .date strong {\n  display: block;\n  line-height: 10px;\n  padding: 3px 0 0;\n}\n.layout-timeline ul.timeline > li .type {\n  position: absolute;\n  text-transform: uppercase;\n  color: #7c7c7c;\n  font-weight: 600;\n  padding: 0 35px 0 0;\n  top: 15px;\n  width: 100px;\n  text-align: right;\n  left: -195px;\n  line-height: 24px;\n  z-index: 2;\n}\n.layout-timeline ul.timeline > li .type i:before {\n  left: auto;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type .time {\n  position: absolute;\n  top: 24px;\n  right: 0;\n  color: #c6c6c5;\n}\n.layout-timeline ul.timeline > li .type:after {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -60px;\n  top: 12px;\n  width: 45px;\n  height: 2px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .type:before {\n  display: block;\n  content: \"\";\n  position: absolute;\n  right: -20px;\n  top: 9px;\n  width: 8px;\n  height: 8px;\n  background: #d2d1d0;\n}\n.layout-timeline ul.timeline > li .separator .type {\n  top: 60px;\n}\n.layout-timeline ul.timeline > li .alert-gray {\n  background: #f8f8f8;\n  color: #7c7c7c;\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  border: none;\n  margin: 0;\n}\n.layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 0 5px 25px;\n}\n.layout-timeline ul.timeline > li p.glyphicons i:before {\n  color: #dfdfdf;\n  font-size: 17px;\n  top: 5px;\n  left: 0;\n}\n.layout-timeline ul.timeline > li .widget-body-gray .glyphicons i:before {\n  color: #7c7c7c;\n}\n.layout-timeline ul.timeline > li .widget-body-gray a {\n  color: #000;\n  text-decoration: underline;\n}\n.layout-timeline ul.timeline > li .widget-body-gray strong {\n  font-weight: 400;\n  color: #000;\n}\n.layout-timeline ul.timeline > li.active .type {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type i:before {\n  color: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after {\n  background: #4a8bc2;\n}\n.layout-timeline ul.timeline > li.active:before {\n  display: block;\n  position: absolute;\n  content: \"\";\n  top: 0;\n  bottom: 0;\n  left: -45px;\n  width: 2px;\n  z-index: 2;\n  background: #4a8bc2;\n}\n.nav-timeline > li {\n  margin: 0 0 5px;\n}\n.nav-timeline > li > a {\n  background: #b3b3b3;\n  border: none;\n  margin: 0 !important;\n  font-weight: 600;\n}\n.nav-timeline > li > a.glyphicons {\n  padding: 8px 12px;\n}\n.nav-timeline > li > a.glyphicons i:before {\n  position: absolute;\n  left: auto;\n  right: 8px;\n  top: 8px;\n  color: #fff;\n}\n.nav-timeline > li.active > a {\n  background: #4a8bc2;\n}\nbody.login {\n  background: #f0f0f0;\n}\nbody.login #login {\n  padding: 40px 0 0;\n}\nbody.login #login a:not(.btn) {\n  color: #7c7c7c;\n  text-decoration: underline;\n}\nbody.login #login h1 {\n  font-size: 20pt;\n  text-align: center;\n  display: block;\n  padding: 0 0 20px;\n  text-shadow: 0 1px 0 #ffffff;\n}\nbody.login #login h1 i:before {\n  position: relative;\n  left: auto;\n  top: auto;\n  color: #7c7c7c;\n}\nbody.login #login .wrapper {\n  max-width: 354px;\n  min-width: 300px;\n  margin: 0 auto;\n  position: relative;\n}\nbody.login #login .wrapper.signup {\n  max-width: 600px;\n}\nbody.login #login .widget .widget-head .btn {\n  margin: -4px 0 0 5px;\n}\nbody.login #login .widget .widget-head div {\n  font-size: 12px;\n}\nbody.login #login .widget .widget-body {\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  background: #fafafa;\n}\nbody.login #login .widget .widget-footer {\n  height: 40px;\n  line-height: 40px;\n  margin: 15px 0 0;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n}\nbody.login #login .widget .widget-footer p {\n  font-size: 12px;\n  color: #7c7c7c;\n  font-weight: 600;\n  margin: 0;\n  width: auto;\n  float: none;\n  padding: 0 10px 0 35px;\n  display: block;\n  height: 40px;\n  line-height: 40px;\n}\nbody.login #login .widget .widget-footer p i:before {\n  top: 7px;\n  left: 7px;\n}\nbody.login #login label {\n  font-size: 13px;\n  color: #7c7c7c;\n  font-weight: 600;\n}\nbody.login #login .checkbox {\n  margin-top: 5px;\n}\nbody.login #login .password {\n  float: right;\n  font-size: 12px;\n  font-weight: 400;\n}\nbody.login #login input[type=\"text\"],\nbody.login #login input[type=\"password\"] {\n  font-size: 13px;\n  height: auto;\n  margin-bottom: 10px;\n  padding: 5px 9px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0), inset -1px -1px 1px rgba(0, 0, 0, 0);\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n  background: #fff;\n}\nbody.login #login ::-webkit-input-placeholder {\n  /* WebKit browsers */\n  color: #ccc;\n}\nbody.login #login :-moz-placeholder {\n  /* Mozilla Firefox 4 to 18 */\n  color: #ccc;\n}\nbody.login #login ::-moz-placeholder {\n  /* Mozilla Firefox 19+ */\n  color: #ccc;\n}\nbody.login #login :-ms-input-placeholder {\n  /* Internet Explorer 10+ */\n  color: #ccc;\n}\nbody.login #login form {\n  margin: 0;\n}\nbody.login #login p {\n  margin: 5px 0;\n}\nbody.login #login p:first-child {\n  margin: 0 0 10px;\n}\nbody.login #login p:last-child {\n  margin: 10px 0 0;\n}\nbody.login #login .form-signin {\n  position: relative;\n  max-width: 600px;\n  margin: 0 auto 20px;\n  background-color: #fff;\n  border: 1px solid #e5e5e5;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\nbody.login #login .form-signin .inner {\n  padding: 20px;\n}\n.gallery ul {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.gallery ul li .thumb {\n  position: relative;\n  display: block;\n  padding: 5px;\n  margin-bottom: 10px;\n  z-index: 1;\n  overflow: hidden;\n}\n.gallery ul li.span2:nth-child(6n+7) {\n  margin-left: 0;\n}\n.gallery ul li.span3:nth-child(4n+5) {\n  margin-left: 0;\n}\n.gallery ul li.span4:nth-child(3n+4) {\n  margin-left: 0;\n}\n.gallery.gallery-masonry li[class*=\"span\"] {\n  margin-left: 0;\n}\n.gallery.gallery-2 li .thumb {\n  padding: 0;\n  border-color: #4c4c4c;\n}\n.thumb {\n  display: block;\n  padding: 3px;\n  border: 1px solid #dbdbdb;\n}\n.thumb,\n.thumb img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails {\n  margin: 0;\n}\n.thumbnails > li {\n  margin-bottom: 15px;\n}\n.thumbnails > li .thumbnail {\n  border-color: #dbdbdb;\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.thumbnails > li .thumbnail .caption {\n  color: #7c7c7c;\n}\n.thumbnails > li a.thumbnail:hover,\n.thumbnails > li a.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.thumbnail {\n  border-color: #dbdbdb;\n}\na.thumbnail .caption {\n  display: block;\n}\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #4a8bc2;\n  -webkit-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  -moz-box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  box-shadow: 0 1px 4px rgba(74, 139, 194, 0.25);\n  text-decoration: none;\n}\n.carousel {\n  margin-bottom: 15px;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .carousel-control {\n  font-size: 45px;\n  opacity: 1;\n  filter: alpha(opacity=100);\n  background: #e5e5e5;\n  color: #000;\n  border-color: #000;\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-control.right {\n  text-align: center;\n}\n.carousel .carousel-inner {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  box-shadow: 0 3px 0 0 #f6f6f6;\n  -moz-box-shadow: 0 3px 0 0 #f6f6f6;\n  -webkit-box-shadow: 0 3px 0 0 #f6f6f6;\n  border: 1px solid #dbdbdb;\n}\n.carousel .item {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.carousel .item img {\n  min-width: 100%;\n}\n.carousel .carousel-caption {\n  background: rgba(229, 229, 229, 0.95);\n  text-shadow: 0 1px 0 #ffffff;\n}\n.carousel .carousel-caption p {\n  color: #7c7c7c;\n}\n.carousel .carousel-caption h4 {\n  font-size: 12pt;\n  color: #000;\n  font-weight: 600;\n}\n.carousel .carousel-caption a {\n  text-decoration: underline;\n  color: #000;\n}\n.carousel.carousel-1 {\n  height: 223px;\n  margin-bottom: 33px;\n  background: #e5e5e5;\n}\n.carousel.carousel-1 .item {\n  height: 223px;\n  overflow: hidden;\n}\n.carousel.carousel-1 .item img {\n  min-height: 100%;\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\n.carousel.carousel-1 .carousel-indicators {\n  top: auto;\n  bottom: -23px;\n  right: 0;\n}\n.carousel.carousel-1 .carousel-indicators li {\n  background: #96bcdc;\n}\n.carousel.carousel-1 .carousel-indicators li.active {\n  background: #4a8bc2;\n}\n.carousel.carousel-1 .carousel-caption {\n  height: 193px;\n  background: #e5e5e5;\n  top: 0;\n}\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n.jcrop-holder {\n  margin: 0 auto;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.jcrop-holder img {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\n.fc-state-highlight {\n  background: rgba(0, 0, 0, 0.2);\n}\n#external-events ul {\n  list-style: none;\n  margin: 0 0 20px;\n}\n#external-events li {\n  margin: 0 0 5px;\n  padding: 2px 5px;\n  background: #4a8bc2;\n  color: #fff;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  font-size: .85em;\n  cursor: pointer;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n#external-events li.glyphicons {\n  padding: 2px 5px 2px 30px;\n  display: block;\n}\n#external-events li.glyphicons i:before {\n  font-size: 14px;\n  color: #fff;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.3);\n  height: 24px;\n  width: 24px;\n  line-height: 24px;\n  text-align: center;\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  border-right: 1px solid rgba(255, 255, 255, 0.4);\n}\n.fc-header-title h2 {\n  font-size: 16pt;\n  line-height: 25px;\n}\n.fc-event-skin {\n  border-color: #4a8bc2;\n  background-color: #4a8bc2;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);\n  box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, 0.2), inset -1px -1px 1px rgba(0, 0, 0, 0.2);\n}\n.fc-event-time,\n.fc-event-title {\n  padding: 0 5px;\n}\n#calendar .btn-group .btn-primary {\n  margin-right: 2px;\n}\n#guided-tour {\n  position: fixed;\n  z-index: 10000;\n  top: 100px;\n  right: -100%;\n  width: 40px;\n  height: 20px;\n  padding: 10px;\n  background: #4a8bc2;\n  font-size: 14pt;\n  color: #fff;\n  text-align: center;\n  box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: -1px 3px 5px rgba(0, 0, 0, 0.2);\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);\n  cursor: pointer;\n  -webkit-transition: width 0.5s ease;\n  -moz-transition: width 0.5s ease;\n  -o-transition: width 0.5s ease;\n  transition: width 0.5s ease;\n  overflow: hidden;\n  white-space: nowrap;\n}\n#guided-tour .hide {\n  float: left;\n  height: 0;\n  display: inline-block !important;\n  opacity: 0;\n  -webkit-transition: opacity 0.6s ease;\n  -moz-transition: opacity 0.6s ease;\n  -o-transition: opacity 0.6s ease;\n  transition: opacity 0.6s ease;\n}\n#guided-tour #close-tour {\n  display: none;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  padding: 10px;\n  color: rgba(0, 0, 0, 0.8);\n  text-shadow: 0 1px 0 #fff;\n  background: rgba(255, 255, 255, 0.6);\n}\n#guided-tour #close-tour:hover {\n  background: rgba(255, 255, 255, 0.9);\n}\n#guided-tour:hover {\n  width: 100px;\n  padding: 10px 40px 10px 10px;\n}\n#guided-tour:hover .hide {\n  padding: 0 5px 0 0;\n  opacity: 1;\n  height: auto;\n}\n#guided-tour:hover #close-tour {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  margin: 0;\n  width: 100%;\n  height: auto;\n  padding: 20px;\n  z-index: 9000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  margin: 0 90px 0 120px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages h4 {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages p:last-child {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(0, 0, 0, 0.4);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom-color: rgba(0, 0, 0, 0.3);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover:after {\n  border-top-color: rgba(0, 0, 0, 0.9);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover:after {\n  border-bottom-color: rgba(0, 0, 0, 0.9);\n}\n.tlypageguide_shadow:after {\n  background: rgba(74, 139, 194, 0.2);\n  box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -moz-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n  -webkit-box-shadow: 0 0 1px 1px rgba(74, 139, 194, 0.7);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  top: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  top: 20px;\n  background: #4a8bc2;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #4a8bc2;\n}\n#docs_icons {\n  text-align: center;\n  padding: 0 20px;\n}\n#docs_icons .glyphicons {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n  width: 125px;\n  font-size: 12px;\n  line-height: 48px;\n  overflow: hidden;\n  color: #7c7c7c;\n}\n#docs_icons .glyphicons i:before {\n  line-height: 55px !important;\n  color: #4a8bc2;\n}\n.documentation ul ul {\n  margin-bottom: 10px;\n}\n.documentation .span3 .menu.affix {\n  position: fixed;\n  top: 20px;\n  width: 220px;\n}\n.documentation .show-grid {\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n.documentation .show-grid [class*=\"span\"] {\n  background-color: #535a5e;\n  text-align: center;\n  -webkit-border-radius: 3px 3px 3px 3px;\n  -moz-border-radius: 3px 3px 3px 3px;\n  border-radius: 3px 3px 3px 3px;\n  min-height: 40px;\n  line-height: 40px;\n  color: #fff;\n}\n.documentation .show-grid .show-grid {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.documentation .show-grid .show-grid [class*=\"span\"] {\n  background-color: #848d93;\n}\n#landing_1 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_1 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_1 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_1 .banner {\n  background: #000;\n  height: 321px;\n}\n#landing_1 .banner .banner-wrapper {\n  height: 321px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_1 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n  background: #000;\n}\n#landing_1 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 65px;\n  right: 27px;\n  position: absolute;\n  background: #fff;\n  color: #4a8bc2;\n  font-size: 22pt;\n  font-weight: bold;\n  padding: 0 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 126px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 370px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_1 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_1 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  top: 232px;\n  right: 27px;\n}\n#landing_2 .mosaic-line {\n  height: 58px;\n  line-height: 58px;\n  border-bottom: 1px solid #e5e5e5;\n  background: #f9f9f9;\n}\n#landing_2 .mosaic-line.mosaic-line-2 {\n  line-height: 100px;\n  height: 100px;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 {\n  line-height: 100px;\n  text-shadow: 0 1px 0 #fff;\n}\n#landing_2 .mosaic-line.mosaic-line-2 h2 span {\n  color: #ccc;\n}\n#landing_2 .banner {\n  background: #1f2123;\n  height: 356px;\n}\n#landing_2 .banner .banner-wrapper {\n  height: 356px;\n  position: relative;\n  overflow: hidden;\n}\n#landing_2 .banner .banner-wrapper.banner-1 {\n  margin: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 h3 {\n  height: 46px;\n  line-height: 46px;\n  top: 55px;\n  right: 27px;\n  position: absolute;\n  color: #fff;\n  font-size: 27pt;\n  font-weight: bold;\n  text-shadow: none;\n  padding: 0;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p {\n  position: absolute;\n  top: 115px;\n  right: 27px;\n  background: #1f1e1e;\n  color: #fff;\n  line-height: 25px;\n  width: 380px;\n  text-align: right;\n  padding: 10px 15px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 p a {\n  text-decoration: underline;\n  color: #4a8bc2;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn {\n  position: absolute;\n  bottom: 40px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-primary {\n  right: 230px;\n}\n#landing_2 .banner .banner-wrapper.banner-1 .btn.btn-danger {\n  right: 27px;\n  bottom: 37px;\n}\n.container-960 {\n  width: 960px;\n  margin: 0 auto;\n}\n.separator-line {\n  width: 100%;\n  height: 1px;\n  background: #e5e5e5;\n  margin-bottom: 10px;\n}\n#choose-preview {\n  padding: 50px 0;\n}\n#choose-preview h2 {\n  margin-left: 0;\n}\n#choose-preview h2 span.text-primary {\n  font-size: 26pt;\n  font-weight: bold;\n  top: auto;\n}\n#choose-preview .control-group {\n  margin: 0 0 5px;\n}\n#choose-preview select {\n  color: #000;\n}\n#choose-preview .heading-buttons {\n  margin-bottom: 10px;\n}\n#choose-preview .box {\n  padding: 10px;\n}\n#choose-preview .box .options {\n  display: none;\n}\n#choose-preview .box .actions a {\n  display: none;\n}\n#choose-preview .box .actions a.btn-active {\n  display: inline-block;\n}\n#choose-preview .box h3 {\n  text-transform: uppercase;\n  margin: 0 0 12px;\n}\n#choose-preview .box.active {\n  background: #ffffff;\n  box-shadow: 0 3px 0 0 #dbdbdb;\n  -moz-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-box-shadow: 0 3px 0 0 #dbdbdb;\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n  border: 1px solid #dbdbdb;\n  padding: 15px;\n}\n#choose-preview .box.active .options {\n  display: block;\n}\n#choose-preview .box.active h3 {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n}\n#choose-preview.style-dark .well {\n  background: #ffffff;\n}\n#choose-preview.style-dark .box.active {\n  background: #fafafa;\n  border-color: #ebebeb;\n}\n#choose-preview.style-dark .box.active h3 {\n  text-shadow: none;\n  color: #fff;\n}\n#choose-preview.style-dark .box.active hr {\n  border-top-color: #ebebeb;\n}\nhtml.front .menu-hidden .navbar.main {\n  height: 99px;\n}\nhtml.front .navbar.main {\n  height: auto;\n  left: 0 !important;\n}\nhtml.front .navbar.main .secondary {\n  height: 49px;\n  line-height: 49px;\n  position: relative;\n  overflow: hidden;\n  background-color: #275b87;\n  border-bottom: 1px solid #346d9d;\n}\nhtml.front .navbar.main .secondary .appbrand {\n  font-weight: 700;\n  font-size: 25pt;\n  color: #fff;\n  text-decoration: none;\n  padding: 0 8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type {\n  border-left: none;\n  margin-left: -8px;\n}\nhtml.front .navbar.main ul.topnav:first-of-type > li:first-of-type {\n  border-left: none;\n}\nhtml.front .navbar.main li.search {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\nhtml.front .navbar.main li.glyphs + .glyphs {\n  padding-left: 0;\n}\nhtml.front .navbar.main li.glyphs {\n  border: none;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  margin-left: 0;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons {\n  color: #538fc1;\n}\nhtml.front .navbar.main li.glyphs ul li .glyphicons i {\n  display: inline-block;\n  width: 32px;\n  vertical-align: top;\n}\nhtml.front .navbar.main li.glyphs ul li.active .glyphicons,\nhtml.front .navbar.main li.glyphs ul li:hover .glyphicons {\n  color: #fff;\n}\nhtml.front .navbar.main li.glyphs ul li.single,\nhtml.front .navbar.main li.glyphs ul li.single:last-child {\n  -webkit-border-radius: 5px 5px 5px 5px;\n  -moz-border-radius: 5px 5px 5px 5px;\n  border-radius: 5px 5px 5px 5px;\n}\nhtml.front #content {\n  margin: 0;\n}\nhtml.front #footer {\n  background: #1f2123;\n  color: #919192;\n}\nhtml.front #footer a:not(.btn) {\n  color: #4a8bc2;\n}\nhtml.front #footer .copy {\n  background: #000;\n  color: #2a2a2a;\n  text-align: left;\n}\nhtml.front #footer .copy a {\n  color: #2a2a2a;\n  text-decoration: none;\n}\nhtml.front #footer .copy .appbrand {\n  position: absolute;\n  right: 10px;\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n}\nhtml.front #footer .box-generic {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n  background: #191a1c;\n  border: none;\n}\nhtml.front #footer h4 {\n  text-transform: uppercase;\n  font-size: 15px;\n  font-weight: 700;\n  text-shadow: none;\n  color: #fff;\n  margin: 0 0 8px;\n}\nhtml.front #footer ul {\n  list-style: none;\n  margin: 0 0 15px;\n  padding: 0;\n}\nhtml.front #footer ul li {\n  display: block;\n  background: #191a1c;\n  margin: 0 0 1px;\n  line-height: 30px;\n  height: 30px;\n}\nhtml.front #footer ul li a {\n  line-height: 30px;\n  height: 30px;\n  display: block;\n  padding: 0 10px;\n}\nhtml.front #footer ul li:first-of-type {\n  -webkit-border-radius: 5px 5px 0 0;\n  -moz-border-radius: 5px 5px 0 0;\n  border-radius: 5px 5px 0 0;\n}\nhtml.front #footer ul li:last-of-type {\n  margin: 0;\n  -webkit-border-radius: 0 0 5px 5px;\n  -moz-border-radius: 0 0 5px 5px;\n  border-radius: 0 0 5px 5px;\n}\nhtml.front #footer ul.icons li {\n  padding: 0 10px 0 35px;\n}\nhtml.front #footer ul.icons li i:before {\n  top: 7px;\n  left: 10px;\n}\nhtml.front #contact_gmap {\n  height: 400px;\n}\nhtml.rtl {\n  /* Buttons */\n\n  /* Typography */\n\n  /* Widgets */\n\n  /* Tabs */\n\n  /* Form elements */\n\n  /* Tables */\n\n  /* Menus */\n\n  /* UI elements */\n\n  /* Layout */\n\n  /* Timeline */\n\n  /* Login */\n\n  /* Front */\n\n}\nhtml.rtl .btn-group.btn-block .leadcontainer {\n  left: 29px;\n  right: 0;\n}\nhtml.rtl .btn-group.btn-block .leadcontainer > .btn:first-child {\n  -webkit-border-radius: 0 5px 5px 0;\n  -moz-border-radius: 0 5px 5px 0;\n  border-radius: 0 5px 5px 0;\n}\nhtml.rtl .btn-group.btn-block .dropdown-toggle {\n  float: left;\n}\nhtml.rtl .btn-toggle-code {\n  left: 0;\n  right: auto;\n}\nhtml.rtl h3.glyphicons,\nhtml.rtl h2.glyphicons {\n  padding: 0 45px 0 0;\n}\nhtml.rtl h3.glyphicons i:before,\nhtml.rtl h2.glyphicons i:before {\n  left: auto;\n  right: 2px;\n}\nhtml.rtl .widget .widget-head .heading {\n  float: right;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons {\n  padding: 0 35px 0 0;\n}\nhtml.rtl .widget .widget-head .heading.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget .widget-head {\n  padding: 0 0 0 15px;\n}\nhtml.rtl .widget .details.pull-right {\n  float: left;\n}\nhtml.rtl .breadcrumb li.pull-right {\n  float: left;\n}\nhtml.rtl [data-toggle=\"collapse-widget\"] .collapse-toggle {\n  float: left;\n}\nhtml.rtl .widget-activity ul.list li > span {\n  float: right;\n}\nhtml.rtl .widget-activity ul.list li.double .activity-icon {\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .widget-activity ul.list li:hover:after,\nhtml.rtl .widget-activity ul.list li.highlight:after {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .widget .widget-body.list ul li .count {\n  float: left;\n}\nhtml.rtl .widget .widget-body.list ul li {\n  text-align: right;\n}\nhtml.rtl .widget .widget-body.list ul li .badge {\n  left: 8px;\n  right: auto;\n}\nhtml.rtl .media > .pull-left {\n  float: right;\n  margin-left: 10px;\n  margin-right: 0;\n}\nhtml.rtl .media > .pull-right {\n  float: left;\n  margin-right: 10px;\n  margin-left: 0;\n}\nhtml.rtl .widget-chat .media small.author {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .widget-chat .media.right small.author {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .breadcrumb li a.glyphicons {\n  padding: 0 25px 0 0;\n}\nhtml.rtl .breadcrumb li a.glyphicons i:before {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li {\n  border-right: none;\n  border-left: 1px solid #dbdbdb;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:first-child {\n  -webkit-border-radius: 0 0 0 0;\n  -moz-border-radius: 0 0 0 0;\n  border-radius: 0 0 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li.active:last-child {\n  -webkit-border-radius: 0 5px 0 0;\n  -moz-border-radius: 0 5px 0 0;\n  border-radius: 0 5px 0 0;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a.glyphicons {\n  padding: 0 35px 0 15px;\n}\nhtml.rtl .widget.widget-tabs > .widget-head ul li a i:before {\n  left: auto;\n  right: 5px;\n}\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li a.glyphicons,\nhtml.rtl .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons {\n  padding: 5px 38px 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons {\n  padding: 0 15px;\n}\nhtml.rtl .widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before {\n  right: auto;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head {\n  padding: 0;\n}\nhtml.rtl .widget.widget-tabs-vertical .widget-head ul li {\n  border-left: none;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head {\n  padding: 10px 10px 10px 0;\n}\nhtml.rtl .widget.widget-wizard-pills .widget-head ul li {\n  border: none;\n}\nhtml.rtl .widget.widget-tabs-icons-only .widget-head ul.pull-right {\n  float: left;\n}\nhtml.rtl .tabsbar.tabsbar-2 ul li a {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .tabsbar ul li a i {\n  float: right;\n}\nhtml.rtl .bootstrap-select.btn-group,\nhtml.rtl .bootstrap-select.btn-group[class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .select2-container-multi .select2-search-choice-close {\n  left: auto;\n  right: 3px;\n}\nhtml.rtl .select2-container-multi .select2-choices .select2-search-choice {\n  padding: 3px 18px 3px 5px;\n}\nhtml.rtl .select2-container img.flag,\nhtml.rtl .select2-drop img.flag {\n  padding: 0 0 0 10px;\n}\nhtml.rtl .radio,\nhtml.rtl .checkbox {\n  padding: 0;\n}\nhtml.rtl div.checker {\n  margin: 0 0 0 5px;\n}\nhtml.rtl div.dataTables_paginate {\n  float: left;\n}\nhtml.rtl div.dataTables_filter label {\n  float: left;\n}\nhtml.rtl .table td.right,\nhtml.rtl .table th.right {\n  text-align: left;\n}\nhtml.rtl .navbar.main .topnav > li.search form input {\n  padding: 0 10px 0 0;\n}\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons,\nhtml.rtl .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n  padding: 0 35px 0 10px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:before,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n  left: auto;\n  right: 7px;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after,\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .typeahead:after,\nhtml.rtl .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n  left: auto;\n  right: 8px;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n}\nhtml.rtl .navbar.main .topnav > li {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav > li:first-child {\n  border-left: none;\n}\nhtml.rtl .navbar.main .topnav > li.search,\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  margin: 0;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #619aca;\n  border-right-color: #346d9d;\n  box-shadow: -1px 0 0 0 #346d9d, 1px 0 0 0 #619aca;\n}\nhtml.rtl .navbar.main .topnav.pull-left {\n  float: right;\n}\nhtml.rtl .navbar.main .topnav.pull-left:first-of-type {\n  padding-right: 8px;\n}\nhtml.rtl .navbar.main .topnav.pull-right {\n  float: left;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left: 1px solid #346d9d;\n}\nhtml.rtl .navbar.main .topnav.open .dropdown-menu {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .navbar.main .topnav .submenu-show.pull-right {\n  left: auto !important;\n  right: 100% !important;\n}\nhtml.rtl .navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right {\n  float: left;\n}\nhtml.rtl .ribbon-wrapper {\n  right: auto;\n  left: -3px;\n}\nhtml.rtl .ribbon-wrapper .ribbon {\n  -webkit-transform: rotate(-45deg);\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  left: auto;\n  right: -5px;\n}\nhtml.rtl .ribbon-wrapper .ribbon:after {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .ribbon-wrapper .ribbon:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n  margin-right: 0;\n}\nhtml.rtl .innerLR {\n  padding: 0 15px;\n  position: relative;\n}\nhtml.rtl .innerL {\n  padding-right: 15px;\n  padding-left: 0;\n  position: relative;\n}\nhtml.rtl .innerR {\n  padding-left: 15px;\n  padding-right: 0;\n  position: relative;\n}\nhtml.rtl .layout-timeline ul.timeline {\n  padding: 15px 30px 15px 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .date {\n  right: -70px;\n  left: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type {\n  right: -195px;\n  left: auto;\n  text-align: left;\n  padding: 0 0 0 35px;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type i:before {\n  left: 0;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type .time {\n  right: auto;\n  left: 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:before {\n  left: -20px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .type:after {\n  left: -60px;\n  right: auto;\n}\nhtml.rtl .layout-timeline ul.timeline > li .glyphicons.pencil {\n  right: auto;\n  left: 15px;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons {\n  padding: 5px 25px 5px 0;\n}\nhtml.rtl .layout-timeline ul.timeline > li p.glyphicons i:before {\n  left: auto;\n  right: 0;\n}\nhtml.rtl .layout-timeline .nav-timeline > li > a.glyphicons i:before {\n  right: auto;\n  left: 8px;\n}\nhtml.rtl body.login #login .password {\n  float: left;\n}\nhtml.rtl.front .navbar.main .secondary .appbrand.pull-left {\n  float: right;\n}\nhtml.rtl.front .navbar.main .topnav.pull-right > li:last-child {\n  border-left: none;\n}\nhtml.rtl.front .navbar.main .secondary ul.topnav:first-of-type {\n  margin-left: 0;\n  padding-left: 8px;\n}\n/* Responsive */\n@media (max-width: 767px) {\n  html.rtl .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  html.rtl .layout-timeline ul.timeline > li .date {\n    right: auto;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type {\n    right: auto;\n    margin: 0 0 10px 60px;\n  }\n  html.rtl .layout-timeline ul.timeline > li .type .time {\n    left: -40px;\n    right: auto;\n  }\n  html.rtl .navbar.main .topnav > li {\n    float: none;\n    border-right: none;\n  }\n  html.rtl .navbar.main .topnav > li.search {\n    box-shadow: none !important;\n    -moz-box-shadow: none !important;\n    -webkit-box-shadow: none !important;\n  }\n  html.rtl .navbar.main .topnav > li.search form button {\n    right: auto;\n    left: 0;\n  }\n  html.rtl .navbar.main .topnav,\n  html.rtl .navbar.main .topnav.pull-left,\n  html.rtl .navbar.main .topnav.pull-right {\n    float: none;\n  }\n  html.rtl .navbar.main .topnav.pull-left:first-of-type {\n    padding-right: 0;\n  }\n  html.rtl .navbar.main .topnav.open .dropdown-menu {\n    right: auto;\n    left: auto;\n  }\n  html.rtl .navbar.main .topnav .submenu-show.pull-right {\n    left: auto !important;\n    right: auto !important;\n  }\n}\n.lt-ie9 .widget .widget-body.list ul li {\n  border-bottom: 1px solid #efefef;\n}\n.lt-ie9 .navbar.main .btn-navbar {\n  float: left;\n}\n.lt-ie9 .navbar.main .topnav {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 42px;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  margin-top: 0;\n  top: 8px;\n  left: 5px;\n}\n.lt-ie9 .heading-buttons h1.glyphicons,\n.lt-ie9 .heading-buttons h2.glyphicons,\n.lt-ie9 .heading-buttons h3.glyphicons,\n.lt-ie9 .heading-buttons h4.glyphicons,\n.lt-ie9 .heading-buttons h5.glyphicons,\n.lt-ie9 .heading-buttons h6.glyphicons {\n  float: left;\n}\n.lt-ie9 #guided-tour .hide {\n  display: none !important;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on {\n  width: 24px;\n  padding-right: 0;\n  padding-left: 0;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i {\n  width: 24px;\n  height: 24px;\n  display: block;\n  vertical-align: middle;\n  line-height: 24px;\n}\n.lt-ie9 .filter-bar div div.input-append .add-on i:before {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n  top: auto;\n}\n.lt-ie9 .navbar.main .topnav .dropdown > a .caret {\n  vertical-align: middle;\n  margin-top: 0;\n  top: 0;\n}\n.lt-ie9 #footer {\n  background: #222;\n}\n.lt-ie9 #footer .copy {\n  background: #111;\n}\n.lt-ie9 .ribbon-wrapper {\n  display: none;\n}\n/* Desktop wide */\n@media (min-width: 1200px) {\n  .navbar.main .topnav > li.search form input {\n    width: 155px;\n  }\n}\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px) {\n  body > .container-fluid.fixed {\n    width: 98%;\n    margin: 10px auto 10px;\n  }\n  .hidden-desktop-1 {\n    display: none !important;\n  }\n}\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px) {\n  .navbar.main .topnav > li.search {\n    margin-left: 10px !important;\n  }\n}\n@media (max-width: 979px) {\n  body > .container-fluid.fixed {\n    width: auto;\n    border: none;\n    margin: 0;\n  }\n}\n@media (max-width: 767px) {\n  body {\n    padding: 0;\n  }\n  .nav-tabs > li > a {\n    font-size: 10pt;\n  }\n  .nav-tabs > li > a,\n  .nav-pills > li > a {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n  .documentation .span3 .menu.affix {\n    position: relative;\n    top: 0;\n    width: auto;\n  }\n  .phone-margin.bottom {\n    margin: 0 0 10px;\n  }\n  .well {\n    padding: 5px;\n  }\n  .widget .widget-body {\n    padding: 5px;\n  }\n  .widget.margin-bottom-none {\n    margin-bottom: 10px;\n  }\n  .widget.widget-tabs .widget-head {\n    height: auto;\n    padding: 0;\n  }\n  .widget.widget-tabs .widget-head ul {\n    display: block;\n    border-right: none;\n    height: auto;\n  }\n  .widget.widget-tabs .widget-head ul li {\n    float: none;\n    display: block;\n    width: 100%;\n  }\n  .widget.widget-tabs-icons-only .widget-head {\n    height: auto;\n  }\n  .widget-activity ul.list li > span.ellipsis {\n    max-width: 60%;\n  }\n  .widget-activity ul.list li.double > span.ellipsis {\n    max-width: 75%;\n  }\n  .widget-gallery .nav {\n    display: none;\n  }\n  .widget-gallery.widget-gallery-slide .gallery {\n    width: auto;\n  }\n  .widget-chat .media .pull-left,\n  .widget-chat .media .pull-right {\n    margin: 0;\n  }\n  .widget-chat .chat-controls {\n    height: 60px;\n  }\n  .widget-chat {\n    padding-bottom: 90px !important;\n  }\n  .widget-chat .media small.author {\n    position: relative;\n    top: auto;\n    left: auto;\n    right: auto;\n    width: auto;\n  }\n  .widget-chat .media small.date {\n    border: none;\n  }\n  .tabsbar,\n  .tabsbar.tabsbar-2 {\n    height: auto;\n  }\n  .tabsbar ul,\n  .tabsbar.tabsbar-2 ul {\n    height: auto;\n  }\n  .layout-timeline ul.timeline {\n    padding: 0;\n  }\n  .layout-timeline ul.timeline > li .date {\n    position: relative;\n    left: auto;\n    display: block;\n    top: auto;\n  }\n  .layout-timeline ul.timeline > li .type {\n    position: relative;\n    left: auto;\n    top: auto;\n    width: auto;\n    margin: 0 60px 10px 0;\n  }\n  .layout-timeline ul.timeline > li .type:before,\n  .layout-timeline ul.timeline > li .type:after {\n    display: none;\n  }\n  .layout-timeline ul.timeline > li .type .time {\n    top: 0;\n    right: -40px;\n  }\n  .layout-timeline ul.timeline > li.active .separator .type {\n    margin-bottom: 0;\n  }\n  .layout-timeline ul.timeline > li .separator .type {\n    top: auto;\n  }\n  .widget-activity ul.list {\n    margin: 0;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n    height: 35px;\n  }\n  .widget.widget-tabs.widget-tabs-icons-only-2 .widget-head ul li {\n    float: left;\n    width: auto;\n  }\n  .media {\n    text-align: center;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    border: none;\n    padding-bottom: 0;\n    margin: 0;\n  }\n  .media img.pull-left,\n  .media img.pull-right {\n    display: inline-block;\n  }\n  .media blockquote {\n    padding: 0;\n    text-align: center;\n  }\n  .media blockquote.pull-right p,\n  .media blockquote.pull-right small {\n    text-align: center;\n  }\n  .menu-right #menu {\n    left: 0;\n    right: auto;\n  }\n  .menu-right.menu-hidden #content {\n    margin: 0;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"] {\n    width: auto;\n  }\n  .row-merge > [class*=\"span\"] ~ [class*=\"span\"]:after {\n    display: none;\n  }\n  .row-merge.border-top,\n  .row-merge ~ .row-merge {\n    border-top: 1px solid #e5e5e5;\n  }\n  body.login #login {\n    padding: 50px 5px;\n  }\n  #gritter-notice-wrapper {\n    display: none !important;\n  }\n  .topnav .dropdown.submenu {\n    height: auto;\n  }\n  .topnav .dropdown.submenu .submenu-show {\n    position: relative;\n    margin: 0 !important;\n    top: auto !important;\n    left: auto !important;\n    right: auto !important;\n  }\n  .navbar.main {\n    height: auto;\n  }\n  .navbar.main .topnav {\n    border-left: none;\n    border-right: none;\n    float: none;\n  }\n  .navbar.main .topnav > li {\n    float: none;\n    border-top: 1px solid #346d9d;\n    border-bottom: 1px solid #619aca;\n  }\n  .navbar.main .topnav > li.active,\n  .navbar.main .topnav > li:hover,\n  .navbar.main .topnav > li.open {\n    padding: 8px;\n  }\n  .navbar.main .topnav > li.search form {\n    position: relative;\n  }\n  .navbar.main .topnav > li.search form input {\n    width: 90%;\n  }\n  .navbar.main .topnav > li.search form button {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n  .navbar.main .topnav > li:first-child {\n    border-top: none;\n  }\n  .navbar.main .topnav > li .dropdown.submenu .dropdown-menu {\n    position: relative;\n    float: none;\n    display: block !important;\n    padding: 0;\n    border: none;\n    border-top: 1px solid #f3f3f3;\n  }\n  .navbar.main .topnav:first-of-type > li:first-child {\n    margin-left: 38px;\n  }\n  .menu-hidden .navbar.main {\n    height: 50px;\n    overflow: hidden;\n  }\n  .container-960 {\n    width: auto;\n  }\n  #landing_1 [class*=\"span\"] {\n    padding: 0 5px;\n  }\n  #landing_1 .banner-1 {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item {\n    height: auto;\n  }\n  #landing_1 .banner-1 .item img {\n    min-height: 0;\n    height: auto;\n  }\n  #landing_1 .banner-1 .carousel-caption {\n    height: auto;\n  }\n  #landing_1 .banner {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper {\n    height: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3,\n  #landing_1 .banner .banner-wrapper.banner-1 p,\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    position: relative;\n    top: auto;\n    right: auto;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 .btn {\n    display: block;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 p {\n    margin: 0 0 5px;\n    text-align: center;\n  }\n  #landing_1 .banner .banner-wrapper.banner-1 h3 {\n    font-size: 12pt;\n    line-height: 46px;\n    text-align: center;\n  }\n  .social-large {\n    height: auto;\n  }\n  .social-large a {\n    float: none;\n    display: block;\n    border: none;\n    border-bottom: 1px solid #e5e5e5;\n  }\n  .social-large a:last-child {\n    border: none;\n  }\n  #content .heading-mosaic {\n    height: auto !important;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: normal !important;\n  }\n}\n@media (max-width: 480px) {\n  h1,\n  h2,\n  h3 {\n    line-height: 30px;\n    font-size: 18pt;\n  }\n  h3.glyphicons i:before,\n  h2.glyphicons i:before {\n    font-size: 24px;\n    top: 3px;\n    left: 5px;\n  }\n  .heading-buttons .buttons {\n    margin-top: 10px;\n    float: none;\n    padding: 0 10px;\n    text-align: center;\n  }\n  .heading-buttons .buttons .btn {\n    margin: 0;\n    float: none;\n  }\n  .separator {\n    padding: 5px 0;\n    margin: 0;\n  }\n  .table-condensed th,\n  .table-condensed td {\n    padding: 4px 5px;\n  }\n  p.glyphicons {\n    padding: 5px 0 10px 55px;\n  }\n  p.glyphicons i:before {\n    color: #D67170;\n    font-size: 35pt;\n    top: 0;\n  }\n  p.glyphicons.right {\n    padding: 0 55px 0 0;\n  }\n}\n@media (max-width: 320px) {\n  .nav-tabs > li,\n  .nav-tabs > li > a,\n  .nav-tabs > li > a:hover {\n    display: block;\n    float: none;\n    margin: 0 0 -1px;\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li:hover {\n    border-color: #4a8bc2;\n  }\n  .nav-tabs > li,\n  .nav-tabs > li > a {\n    border-color: #E0D5C6;\n    background: #F5EADB;\n    -webkit-border-radius: 0 0 0 0;\n    -moz-border-radius: 0 0 0 0;\n    border-radius: 0 0 0 0;\n  }\n}\n#themer {\n  position: fixed;\n  top: 40%;\n  left: 50%;\n  z-index: 1000;\n  width: 260px;\n  margin: -50px 0 0 -130px;\n  text-align: left;\n}\n#themer.in {\n  overflow: visible;\n}\n#themer .close2 {\n  position: absolute;\n  background: #DDD;\n  color: #222;\n  font-weight: 600;\n  height: 20px;\n  top: 14px;\n  right: 10px;\n  line-height: 20px;\n  text-align: center;\n  font-size: 10pt;\n  padding: 0 10px;\n  cursor: pointer;\n}\n#themer .wrapper {\n  position: relative;\n  background: #292c2e;\n  border: 1px solid #2f3235;\n  padding: 15px;\n  color: #fafafa;\n}\n#themer .wrapper hr.separator {\n  margin: 10px 0;\n  border-top-color: #5e646b;\n  border-bottom-color: #2f3235;\n}\n#themer .wrapper h4 {\n  border-bottom: 1px solid #5e6060;\n  padding: 0 0 10px;\n  margin: 0 0 10px;\n  color: #fff;\n}\n#themer .wrapper h4 span {\n  color: #5e6060;\n  font-weight: normal;\n  font-size: 10pt;\n  text-shadow: none;\n}\n#themer .wrapper .btn {\n  margin: 0;\n}\n#themer .wrapper #themer-getcode-less {\n  margin: 0 0 0 5px;\n}\n#themer .wrapper ul {\n  margin: 0;\n  list-style: none;\n}\n#themer .wrapper ul li {\n  height: 25px;\n  line-height: 25px;\n  position: relative;\n}\n#themer .wrapper ul li .minicolors {\n  line-height: normal;\n  border: none;\n  top: 2px;\n  right: 0;\n  position: absolute;\n}\n#themer .wrapper ul li .minicolors input {\n  border: none;\n  height: 20px;\n  width: 69px;\n  background: #414649;\n  color: #fff;\n  font-size: 9pt;\n  padding: 0 5px;\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li .minicolors-swatch {\n  cursor: pointer;\n  width: 18px;\n  height: 18px;\n}\n#themer .wrapper ul li .minicolors-panel {\n  z-index: 10000;\n  top: 24px;\n}\n#themer .wrapper ul li .minicolors-position-left .minicolors-panel {\n  left: -152px;\n}\n#themer .wrapper ul li select {\n  position: absolute;\n  top: 3px;\n  right: 0;\n  width: 100px;\n  height: 20px;\n  line-height: normal;\n  padding: 0;\n  margin: 0;\n  font-size: 9pt;\n  background: #414649;\n  border: 1px solid #2F3235;\n  color: #fff;\n}\n#themer .wrapper ul li .link {\n  text-decoration: underline;\n  cursor: pointer;\n}\n#themer .wrapper ul li label {\n  margin: 0;\n  line-height: 25px;\n  font-size: 9pt;\n}\n#themer .wrapper ul li label input {\n  margin: 0 0 1px;\n}\n#themer .wrapper ul li.advanced {\n  display: none;\n}\n#themer.themer-advanced .wrapper ul li.advanced {\n  display: block;\n}\n/* Reset box-shadow & borders */\n.btn,\n.widget,\n.widget-body,\n.widget-stats,\n.carousel-inner,\n.layout-timeline ul.timeline > li .date,\n.box-generic,\n.well,\n.accordion,\n.accordion .accordion-group {\n  border: none !important;\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n/* Reset box-shadow only */\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input,\n.dropdown-menu,\n.table-bordered,\n.progress .bar,\n.popover {\n  box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  -webkit-box-shadow: none !important;\n}\n/* Reset borders only */\n.chat-controls,\n.thumb,\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.menubar,\n.widget.widget-tabs-double-2 > .widget-head,\n.widget.widget-tabs-double-2 .widget-body-regular {\n  border: none !important;\n}\n/* Reset padding only */\n.thumb {\n  padding: 0 !important;\n}\n/* Reset rounded corners */\n#content,\n.navbar.main,\n#wrapper,\n.btn,\n.widget,\n.widget-head,\n.widget-body,\n.carousel,\n.carousel-inner,\n.carousel .item,\n.carousel .item img,\n.nav li a,\n.thumb,\n.thumb img,\n.widget-stats,\n.label,\n.badge,\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.layout-timeline ul.timeline > li .date,\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input,\n.alert,\n.tooltip-inner,\n.popover,\n.pagination ul,\n.pagination a,\n.pager a,\n.table-bordered,\n.table-bordered td,\n.table-bordered th,\n.box-generic,\n.progress,\n.progress .bar,\n.add-on,\n.well,\n.accordion .accordion-heading .accordion-toggle,\n.accordion .accordion-inner,\npre,\n.widget-chat .chat-controls {\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  border-radius: 0 !important;\n}\n/* Fix top menu */\n.navbar.main .topnav > li > a {\n  padding: 0 10px;\n}\n.navbar.main .topnav > li > a.glyphicons {\n  padding: 0 9px;\n}\n.navbar.main .topnav > li.glyphs ul li {\n  padding: 0;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons {\n  padding: 5px 10px;\n}\n.navbar.main .topnav > li.active,\n.navbar.main .topnav > li:hover,\n.navbar.main .topnav > li.open {\n  padding: 8px 0 8px 10px;\n}\n.navbar.main .topnav > li.active:last-child,\n.navbar.main .topnav > li:hover:last-child,\n.navbar.main .topnav > li.open:last-child {\n  padding: 8px 9px 8px 10px;\n}\n.navbar.main .topnav > li.search {\n  padding: 8px 9px !important;\n}\n.navbar.main .topnav > li.glyphs {\n  padding: 8px !important;\n}\n.navbar.main .topnav > li.active > a.glyphicons,\n.navbar.main .topnav > li:hover > a.glyphicons,\n.navbar.main .topnav > li.open > a.glyphicons {\n  padding: 6px 9px;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after {\n  display: none;\n}\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu {\n  top: 45px;\n}\n/* input + btn */\n.input-append .btn {\n  height: 30px;\n}\n.fileupload-new .input-append .btn-file {\n  height: 22px;\n}\n/* tabs */\n.tabsbar ul li a {\n  background: #f9f9f9;\n}\n.tabsbar:not(.tabsbar-2) ul li.active a {\n  background: #4a8bc2;\n}\n.widget.widget-tabs-double-2 > .widget-head {\n  border-bottom: 1px solid #dbdbdb !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome-ie7.css",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n.icon-large {\n  font-size: 1.3333333333333333em;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n.nav [class^=\"icon-\"],\n.nav [class*=\" icon-\"] {\n  vertical-align: inherit;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n}\n.nav [class^=\"icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  vertical-align: -25%;\n}\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large {\n  line-height: .75em;\n  margin-top: -7px;\n  padding-top: 5px;\n  margin-bottom: -5px;\n  padding-bottom: 4px;\n}\n.btn [class^=\"icon-\"].pull-left,\n.btn [class*=\" icon-\"].pull-left,\n.btn [class^=\"icon-\"].pull-right,\n.btn [class*=\" icon-\"].pull-right {\n  vertical-align: inherit;\n}\n.btn [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large {\n  margin-top: -0.5em;\n}\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n.icon-glass {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf000;');\n}\n.icon-music {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf001;');\n}\n.icon-search {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf002;');\n}\n.icon-envelope-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf003;');\n}\n.icon-heart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf004;');\n}\n.icon-star {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf005;');\n}\n.icon-star-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf006;');\n}\n.icon-user {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf007;');\n}\n.icon-film {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf008;');\n}\n.icon-th-large {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf009;');\n}\n.icon-th {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00a;');\n}\n.icon-th-list {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00b;');\n}\n.icon-ok {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00c;');\n}\n.icon-remove {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00d;');\n}\n.icon-zoom-in {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf00e;');\n}\n.icon-zoom-out {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf010;');\n}\n.icon-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');\n}\n.icon-power-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf011;');\n}\n.icon-signal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf012;');\n}\n.icon-cog {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf013;');\n}\n.icon-trash {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf014;');\n}\n.icon-home {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf015;');\n}\n.icon-file-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf016;');\n}\n.icon-time {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf017;');\n}\n.icon-road {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf018;');\n}\n.icon-download-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf019;');\n}\n.icon-download {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01a;');\n}\n.icon-upload {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01b;');\n}\n.icon-inbox {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01c;');\n}\n.icon-play-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01d;');\n}\n.icon-repeat {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');\n}\n.icon-rotate-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf01e;');\n}\n.icon-refresh {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf021;');\n}\n.icon-list-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf022;');\n}\n.icon-lock {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf023;');\n}\n.icon-flag {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf024;');\n}\n.icon-headphones {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf025;');\n}\n.icon-volume-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf026;');\n}\n.icon-volume-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf027;');\n}\n.icon-volume-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf028;');\n}\n.icon-qrcode {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf029;');\n}\n.icon-barcode {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02a;');\n}\n.icon-tag {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02b;');\n}\n.icon-tags {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02c;');\n}\n.icon-book {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02d;');\n}\n.icon-bookmark {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02e;');\n}\n.icon-print {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf02f;');\n}\n.icon-camera {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf030;');\n}\n.icon-font {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf031;');\n}\n.icon-bold {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf032;');\n}\n.icon-italic {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf033;');\n}\n.icon-text-height {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf034;');\n}\n.icon-text-width {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf035;');\n}\n.icon-align-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf036;');\n}\n.icon-align-center {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf037;');\n}\n.icon-align-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf038;');\n}\n.icon-align-justify {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf039;');\n}\n.icon-list {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03a;');\n}\n.icon-indent-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03b;');\n}\n.icon-indent-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03c;');\n}\n.icon-facetime-video {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03d;');\n}\n.icon-picture {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf03e;');\n}\n.icon-pencil {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf040;');\n}\n.icon-map-marker {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf041;');\n}\n.icon-adjust {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf042;');\n}\n.icon-tint {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf043;');\n}\n.icon-edit {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf044;');\n}\n.icon-share {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf045;');\n}\n.icon-check {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf046;');\n}\n.icon-move {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf047;');\n}\n.icon-step-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf048;');\n}\n.icon-fast-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf049;');\n}\n.icon-backward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04a;');\n}\n.icon-play {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04b;');\n}\n.icon-pause {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04c;');\n}\n.icon-stop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04d;');\n}\n.icon-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf04e;');\n}\n.icon-fast-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf050;');\n}\n.icon-step-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf051;');\n}\n.icon-eject {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf052;');\n}\n.icon-chevron-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf053;');\n}\n.icon-chevron-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf054;');\n}\n.icon-plus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf055;');\n}\n.icon-minus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf056;');\n}\n.icon-remove-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf057;');\n}\n.icon-ok-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf058;');\n}\n.icon-question-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf059;');\n}\n.icon-info-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05a;');\n}\n.icon-screenshot {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05b;');\n}\n.icon-remove-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05c;');\n}\n.icon-ok-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05d;');\n}\n.icon-ban-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf05e;');\n}\n.icon-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf060;');\n}\n.icon-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf061;');\n}\n.icon-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf062;');\n}\n.icon-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf063;');\n}\n.icon-share-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');\n}\n.icon-mail-forward {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf064;');\n}\n.icon-resize-full {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf065;');\n}\n.icon-resize-small {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf066;');\n}\n.icon-plus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf067;');\n}\n.icon-minus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf068;');\n}\n.icon-asterisk {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf069;');\n}\n.icon-exclamation-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06a;');\n}\n.icon-gift {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06b;');\n}\n.icon-leaf {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06c;');\n}\n.icon-fire {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06d;');\n}\n.icon-eye-open {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf06e;');\n}\n.icon-eye-close {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf070;');\n}\n.icon-warning-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf071;');\n}\n.icon-plane {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf072;');\n}\n.icon-calendar {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf073;');\n}\n.icon-random {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf074;');\n}\n.icon-comment {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf075;');\n}\n.icon-magnet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf076;');\n}\n.icon-chevron-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf077;');\n}\n.icon-chevron-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf078;');\n}\n.icon-retweet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf079;');\n}\n.icon-shopping-cart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07a;');\n}\n.icon-folder-close {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07b;');\n}\n.icon-folder-open {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07c;');\n}\n.icon-resize-vertical {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07d;');\n}\n.icon-resize-horizontal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf07e;');\n}\n.icon-bar-chart {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf080;');\n}\n.icon-twitter-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf081;');\n}\n.icon-facebook-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf082;');\n}\n.icon-camera-retro {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf083;');\n}\n.icon-key {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf084;');\n}\n.icon-cogs {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf085;');\n}\n.icon-comments {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf086;');\n}\n.icon-thumbs-up-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf087;');\n}\n.icon-thumbs-down-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf088;');\n}\n.icon-star-half {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf089;');\n}\n.icon-heart-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08a;');\n}\n.icon-signout {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08b;');\n}\n.icon-linkedin-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08c;');\n}\n.icon-pushpin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08d;');\n}\n.icon-external-link {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;');\n}\n.icon-signin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf090;');\n}\n.icon-trophy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf091;');\n}\n.icon-github-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf092;');\n}\n.icon-upload-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf093;');\n}\n.icon-lemon {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf094;');\n}\n.icon-phone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf095;');\n}\n.icon-check-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');\n}\n.icon-unchecked {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;');\n}\n.icon-bookmark-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;');\n}\n.icon-phone-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf098;');\n}\n.icon-twitter {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf099;');\n}\n.icon-facebook {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09a;');\n}\n.icon-github {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09b;');\n}\n.icon-unlock {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09c;');\n}\n.icon-credit-card {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09d;');\n}\n.icon-rss {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf09e;');\n}\n.icon-hdd {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a0;');\n}\n.icon-bullhorn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a1;');\n}\n.icon-bell {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a2;');\n}\n.icon-certificate {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a3;');\n}\n.icon-hand-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a4;');\n}\n.icon-hand-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a5;');\n}\n.icon-hand-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a6;');\n}\n.icon-hand-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a7;');\n}\n.icon-circle-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a8;');\n}\n.icon-circle-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0a9;');\n}\n.icon-circle-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0aa;');\n}\n.icon-circle-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ab;');\n}\n.icon-globe {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ac;');\n}\n.icon-wrench {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ad;');\n}\n.icon-tasks {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ae;');\n}\n.icon-filter {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b0;');\n}\n.icon-briefcase {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b1;');\n}\n.icon-fullscreen {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;');\n}\n.icon-group {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c0;');\n}\n.icon-link {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c1;');\n}\n.icon-cloud {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c2;');\n}\n.icon-beaker {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c3;');\n}\n.icon-cut {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c4;');\n}\n.icon-copy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c5;');\n}\n.icon-paper-clip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');\n}\n.icon-paperclip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c6;');\n}\n.icon-save {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c7;');\n}\n.icon-sign-blank {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c8;');\n}\n.icon-reorder {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;');\n}\n.icon-list-ul {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;');\n}\n.icon-list-ol {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;');\n}\n.icon-strikethrough {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;');\n}\n.icon-underline {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;');\n}\n.icon-table {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;');\n}\n.icon-magic {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d0;');\n}\n.icon-truck {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d1;');\n}\n.icon-pinterest {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d2;');\n}\n.icon-pinterest-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d3;');\n}\n.icon-google-plus-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d4;');\n}\n.icon-google-plus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d5;');\n}\n.icon-money {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d6;');\n}\n.icon-caret-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d7;');\n}\n.icon-caret-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d8;');\n}\n.icon-caret-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0d9;');\n}\n.icon-caret-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0da;');\n}\n.icon-columns {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;');\n}\n.icon-sort {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dc;');\n}\n.icon-sort-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0dd;');\n}\n.icon-sort-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0de;');\n}\n.icon-envelope {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;');\n}\n.icon-linkedin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e1;');\n}\n.icon-undo {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');\n}\n.icon-rotate-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e2;');\n}\n.icon-legal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e3;');\n}\n.icon-dashboard {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e4;');\n}\n.icon-comment-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;');\n}\n.icon-comments-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e6;');\n}\n.icon-bolt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e7;');\n}\n.icon-sitemap {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e8;');\n}\n.icon-umbrella {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e9;');\n}\n.icon-paste {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ea;');\n}\n.icon-lightbulb {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0eb;');\n}\n.icon-exchange {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ec;');\n}\n.icon-cloud-download {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;');\n}\n.icon-cloud-upload {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;');\n}\n.icon-user-md {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f0;');\n}\n.icon-stethoscope {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f1;');\n}\n.icon-suitcase {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f2;');\n}\n.icon-bell-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;');\n}\n.icon-coffee {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f4;');\n}\n.icon-food {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f5;');\n}\n.icon-file-text-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f6;');\n}\n.icon-building {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f7;');\n}\n.icon-hospital {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f8;');\n}\n.icon-ambulance {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f9;');\n}\n.icon-medkit {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fa;');\n}\n.icon-fighter-jet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fb;');\n}\n.icon-beer {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fc;');\n}\n.icon-h-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fd;');\n}\n.icon-plus-sign-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0fe;');\n}\n.icon-double-angle-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf100;');\n}\n.icon-double-angle-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf101;');\n}\n.icon-double-angle-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf102;');\n}\n.icon-double-angle-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf103;');\n}\n.icon-angle-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf104;');\n}\n.icon-angle-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf105;');\n}\n.icon-angle-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf106;');\n}\n.icon-angle-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf107;');\n}\n.icon-desktop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf108;');\n}\n.icon-laptop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf109;');\n}\n.icon-tablet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10a;');\n}\n.icon-mobile-phone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10b;');\n}\n.icon-circle-blank {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10c;');\n}\n.icon-quote-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;');\n}\n.icon-quote-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;');\n}\n.icon-spinner {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf110;');\n}\n.icon-circle {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf111;');\n}\n.icon-reply {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');\n}\n.icon-mail-reply {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;');\n}\n.icon-github-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf113;');\n}\n.icon-folder-close-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf114;');\n}\n.icon-folder-open-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf115;');\n}\n.icon-expand-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf116;');\n}\n.icon-collapse-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf117;');\n}\n.icon-smile {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf118;');\n}\n.icon-frown {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf119;');\n}\n.icon-meh {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11a;');\n}\n.icon-gamepad {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11b;');\n}\n.icon-keyboard {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11c;');\n}\n.icon-flag-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11d;');\n}\n.icon-flag-checkered {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf11e;');\n}\n.icon-terminal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf120;');\n}\n.icon-code {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;');\n}\n.icon-reply-all {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');\n}\n.icon-mail-reply-all {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;');\n}\n.icon-star-half-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');\n}\n.icon-star-half-full {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf123;');\n}\n.icon-location-arrow {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf124;');\n}\n.icon-crop {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf125;');\n}\n.icon-code-fork {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf126;');\n}\n.icon-unlink {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf127;');\n}\n.icon-question {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;');\n}\n.icon-info {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;');\n}\n.icon-exclamation {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;');\n}\n.icon-superscript {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;');\n}\n.icon-subscript {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;');\n}\n.icon-eraser {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12d;');\n}\n.icon-puzzle-piece {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12e;');\n}\n.icon-microphone {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf130;');\n}\n.icon-microphone-off {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf131;');\n}\n.icon-shield {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf132;');\n}\n.icon-calendar-empty {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf133;');\n}\n.icon-fire-extinguisher {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf134;');\n}\n.icon-rocket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf135;');\n}\n.icon-maxcdn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf136;');\n}\n.icon-chevron-sign-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf137;');\n}\n.icon-chevron-sign-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf138;');\n}\n.icon-chevron-sign-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf139;');\n}\n.icon-chevron-sign-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13a;');\n}\n.icon-html5 {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13b;');\n}\n.icon-css3 {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13c;');\n}\n.icon-anchor {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13d;');\n}\n.icon-unlock-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;');\n}\n.icon-bullseye {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf140;');\n}\n.icon-ellipsis-horizontal {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf141;');\n}\n.icon-ellipsis-vertical {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf142;');\n}\n.icon-rss-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf143;');\n}\n.icon-play-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf144;');\n}\n.icon-ticket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf145;');\n}\n.icon-minus-sign-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;');\n}\n.icon-check-minus {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf147;');\n}\n.icon-level-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf148;');\n}\n.icon-level-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf149;');\n}\n.icon-check-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;');\n}\n.icon-edit-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;');\n}\n.icon-external-link-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;');\n}\n.icon-share-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;');\n}\n.icon-compass {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14e;');\n}\n.icon-collapse {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf150;');\n}\n.icon-collapse-top {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf151;');\n}\n.icon-expand {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf152;');\n}\n.icon-eur {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');\n}\n.icon-euro {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf153;');\n}\n.icon-gbp {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf154;');\n}\n.icon-usd {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');\n}\n.icon-dollar {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf155;');\n}\n.icon-inr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');\n}\n.icon-rupee {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf156;');\n}\n.icon-jpy {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');\n}\n.icon-yen {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf157;');\n}\n.icon-cny {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');\n}\n.icon-renminbi {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf158;');\n}\n.icon-krw {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');\n}\n.icon-won {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf159;');\n}\n.icon-btc {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');\n}\n.icon-bitcoin {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15a;');\n}\n.icon-file {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;');\n}\n.icon-file-text {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;');\n}\n.icon-sort-by-alphabet {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15d;');\n}\n.icon-sort-by-alphabet-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15e;');\n}\n.icon-sort-by-attributes {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf160;');\n}\n.icon-sort-by-attributes-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf161;');\n}\n.icon-sort-by-order {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf162;');\n}\n.icon-sort-by-order-alt {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf163;');\n}\n.icon-thumbs-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;');\n}\n.icon-thumbs-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;');\n}\n.icon-youtube-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf166;');\n}\n.icon-youtube {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf167;');\n}\n.icon-xing {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf168;');\n}\n.icon-xing-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf169;');\n}\n.icon-youtube-play {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16a;');\n}\n.icon-dropbox {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16b;');\n}\n.icon-stackexchange {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16c;');\n}\n.icon-instagram {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16d;');\n}\n.icon-flickr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf16e;');\n}\n.icon-adn {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf170;');\n}\n.icon-bitbucket {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf171;');\n}\n.icon-bitbucket-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf172;');\n}\n.icon-tumblr {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf173;');\n}\n.icon-tumblr-sign {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf174;');\n}\n.icon-long-arrow-down {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf175;');\n}\n.icon-long-arrow-up {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf176;');\n}\n.icon-long-arrow-left {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf177;');\n}\n.icon-long-arrow-right {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf178;');\n}\n.icon-apple {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf179;');\n}\n.icon-windows {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17a;');\n}\n.icon-android {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17b;');\n}\n.icon-linux {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17c;');\n}\n.icon-dribble {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17d;');\n}\n.icon-skype {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf17e;');\n}\n.icon-foursquare {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf180;');\n}\n.icon-trello {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf181;');\n}\n.icon-female {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf182;');\n}\n.icon-male {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf183;');\n}\n.icon-gittip {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf184;');\n}\n.icon-sun {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf185;');\n}\n.icon-moon {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf186;');\n}\n.icon-archive {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf187;');\n}\n.icon-bug {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf188;');\n}\n.icon-vk {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf189;');\n}\n.icon-weibo {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18a;');\n}\n.icon-renren {\n  *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf18b;');\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/css/font-awesome.css",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../font/fontawesome-webfont.eot?v=3.2.0');\n  src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.0') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.0') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.0') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.0') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n/* FONT AWESOME CORE\n * -------------------------- */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em;\n}\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 1.3333333333333333em;\n}\n/* makes sure icons active on rollover in links */\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  display: inline;\n}\n/* increased font size for icon-large */\n[class^=\"icon-\"].icon-fixed-width,\n[class*=\" icon-\"].icon-fixed-width {\n  display: inline-block;\n  width: 1.1428571428571428em;\n  text-align: right;\n  padding-right: 0.2857142857142857em;\n}\n[class^=\"icon-\"].icon-fixed-width.icon-large,\n[class*=\" icon-\"].icon-fixed-width.icon-large {\n  width: 1.4285714285714286em;\n}\n.icons-ul {\n  margin-left: 2.142857142857143em;\n  list-style-type: none;\n}\n.icons-ul > li {\n  position: relative;\n}\n.icons-ul .icon-li {\n  position: absolute;\n  left: -2.142857142857143em;\n  width: 2.142857142857143em;\n  text-align: center;\n  line-height: inherit;\n}\n[class^=\"icon-\"].hide,\n[class*=\" icon-\"].hide {\n  display: none;\n}\n.icon-muted {\n  color: #eeeeee;\n}\n.icon-light {\n  color: #ffffff;\n}\n.icon-dark {\n  color: #333333;\n}\n.icon-border {\n  border: solid 1px #eeeeee;\n  padding: .2em .25em .15em;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n.icon-2x {\n  font-size: 2em;\n}\n.icon-2x.icon-border {\n  border-width: 2px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.icon-3x {\n  font-size: 3em;\n}\n.icon-3x.icon-border {\n  border-width: 3px;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n}\n.icon-4x {\n  font-size: 4em;\n}\n.icon-4x.icon-border {\n  border-width: 4px;\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n}\n.icon-5x {\n  font-size: 5em;\n}\n.icon-5x.icon-border {\n  border-width: 5px;\n  -webkit-border-radius: 7px;\n  -moz-border-radius: 7px;\n  border-radius: 7px;\n}\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n[class^=\"icon-\"].pull-left,\n[class*=\" icon-\"].pull-left {\n  margin-right: .3em;\n}\n[class^=\"icon-\"].pull-right,\n[class*=\" icon-\"].pull-right {\n  margin-left: .3em;\n}\n/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n/* keeps Bootstrap styles with and without icons the same */\n.btn [class^=\"icon-\"].icon-large,\n.nav [class^=\"icon-\"].icon-large,\n.btn [class*=\" icon-\"].icon-large,\n.nav [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].icon-spin,\n.nav [class^=\"icon-\"].icon-spin,\n.btn [class*=\" icon-\"].icon-spin,\n.nav [class*=\" icon-\"].icon-spin {\n  display: inline-block;\n}\n.nav-tabs [class^=\"icon-\"],\n.nav-pills [class^=\"icon-\"],\n.nav-tabs [class*=\" icon-\"],\n.nav-pills [class*=\" icon-\"],\n.nav-tabs [class^=\"icon-\"].icon-large,\n.nav-pills [class^=\"icon-\"].icon-large,\n.nav-tabs [class*=\" icon-\"].icon-large,\n.nav-pills [class*=\" icon-\"].icon-large {\n  line-height: .9em;\n}\n.btn [class^=\"icon-\"].pull-left.icon-2x,\n.btn [class*=\" icon-\"].pull-left.icon-2x,\n.btn [class^=\"icon-\"].pull-right.icon-2x,\n.btn [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .18em;\n}\n.btn [class^=\"icon-\"].icon-spin.icon-large,\n.btn [class*=\" icon-\"].icon-spin.icon-large {\n  line-height: .8em;\n}\n.btn.btn-small [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-small [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-small [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .25em;\n}\n.btn.btn-large [class^=\"icon-\"],\n.btn.btn-large [class*=\" icon-\"] {\n  margin-top: 0;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x,\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-top: .05em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-left.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-left.icon-2x {\n  margin-right: .2em;\n}\n.btn.btn-large [class^=\"icon-\"].pull-right.icon-2x,\n.btn.btn-large [class*=\" icon-\"].pull-right.icon-2x {\n  margin-left: .2em;\n}\n/* EXTRAS\n * -------------------------- */\n/* Stacked and layered icon */\n.icon-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: -35%;\n}\n.icon-stack [class^=\"icon-\"],\n.icon-stack [class*=\" icon-\"] {\n  display: block;\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  font-size: 1em;\n  line-height: inherit;\n  *line-height: 2em;\n}\n.icon-stack .icon-stack-base {\n  font-size: 2em;\n  *line-height: 1em;\n}\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n@-moz-keyframes spin {\n  0% {\n    -moz-transform: rotate(0deg);\n  }\n  100% {\n    -moz-transform: rotate(359deg);\n  }\n}\n@-webkit-keyframes spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n  }\n}\n@-o-keyframes spin {\n  0% {\n    -o-transform: rotate(0deg);\n  }\n  100% {\n    -o-transform: rotate(359deg);\n  }\n}\n@-ms-keyframes spin {\n  0% {\n    -ms-transform: rotate(0deg);\n  }\n  100% {\n    -ms-transform: rotate(359deg);\n  }\n}\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(359deg);\n  }\n}\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n/* ensure rotation occurs inside anchor tags */\na .icon-rotate-90:before,\na .icon-rotate-180:before,\na .icon-rotate-270:before,\na .icon-flip-horizontal:before,\na .icon-flip-vertical:before {\n  display: inline-block;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.icon-glass:before {\n  content: \"\\f000\";\n}\n.icon-music:before {\n  content: \"\\f001\";\n}\n.icon-search:before {\n  content: \"\\f002\";\n}\n.icon-envelope-alt:before {\n  content: \"\\f003\";\n}\n.icon-heart:before {\n  content: \"\\f004\";\n}\n.icon-star:before {\n  content: \"\\f005\";\n}\n.icon-star-empty:before {\n  content: \"\\f006\";\n}\n.icon-user:before {\n  content: \"\\f007\";\n}\n.icon-film:before {\n  content: \"\\f008\";\n}\n.icon-th-large:before {\n  content: \"\\f009\";\n}\n.icon-th:before {\n  content: \"\\f00a\";\n}\n.icon-th-list:before {\n  content: \"\\f00b\";\n}\n.icon-ok:before {\n  content: \"\\f00c\";\n}\n.icon-remove:before {\n  content: \"\\f00d\";\n}\n.icon-zoom-in:before {\n  content: \"\\f00e\";\n}\n.icon-zoom-out:before {\n  content: \"\\f010\";\n}\n.icon-power-off:before,\n.icon-off:before {\n  content: \"\\f011\";\n}\n.icon-signal:before {\n  content: \"\\f012\";\n}\n.icon-cog:before {\n  content: \"\\f013\";\n}\n.icon-trash:before {\n  content: \"\\f014\";\n}\n.icon-home:before {\n  content: \"\\f015\";\n}\n.icon-file-alt:before {\n  content: \"\\f016\";\n}\n.icon-time:before {\n  content: \"\\f017\";\n}\n.icon-road:before {\n  content: \"\\f018\";\n}\n.icon-download-alt:before {\n  content: \"\\f019\";\n}\n.icon-download:before {\n  content: \"\\f01a\";\n}\n.icon-upload:before {\n  content: \"\\f01b\";\n}\n.icon-inbox:before {\n  content: \"\\f01c\";\n}\n.icon-play-circle:before {\n  content: \"\\f01d\";\n}\n.icon-rotate-right:before,\n.icon-repeat:before {\n  content: \"\\f01e\";\n}\n.icon-refresh:before {\n  content: \"\\f021\";\n}\n.icon-list-alt:before {\n  content: \"\\f022\";\n}\n.icon-lock:before {\n  content: \"\\f023\";\n}\n.icon-flag:before {\n  content: \"\\f024\";\n}\n.icon-headphones:before {\n  content: \"\\f025\";\n}\n.icon-volume-off:before {\n  content: \"\\f026\";\n}\n.icon-volume-down:before {\n  content: \"\\f027\";\n}\n.icon-volume-up:before {\n  content: \"\\f028\";\n}\n.icon-qrcode:before {\n  content: \"\\f029\";\n}\n.icon-barcode:before {\n  content: \"\\f02a\";\n}\n.icon-tag:before {\n  content: \"\\f02b\";\n}\n.icon-tags:before {\n  content: \"\\f02c\";\n}\n.icon-book:before {\n  content: \"\\f02d\";\n}\n.icon-bookmark:before {\n  content: \"\\f02e\";\n}\n.icon-print:before {\n  content: \"\\f02f\";\n}\n.icon-camera:before {\n  content: \"\\f030\";\n}\n.icon-font:before {\n  content: \"\\f031\";\n}\n.icon-bold:before {\n  content: \"\\f032\";\n}\n.icon-italic:before {\n  content: \"\\f033\";\n}\n.icon-text-height:before {\n  content: \"\\f034\";\n}\n.icon-text-width:before {\n  content: \"\\f035\";\n}\n.icon-align-left:before {\n  content: \"\\f036\";\n}\n.icon-align-center:before {\n  content: \"\\f037\";\n}\n.icon-align-right:before {\n  content: \"\\f038\";\n}\n.icon-align-justify:before {\n  content: \"\\f039\";\n}\n.icon-list:before {\n  content: \"\\f03a\";\n}\n.icon-indent-left:before {\n  content: \"\\f03b\";\n}\n.icon-indent-right:before {\n  content: \"\\f03c\";\n}\n.icon-facetime-video:before {\n  content: \"\\f03d\";\n}\n.icon-picture:before {\n  content: \"\\f03e\";\n}\n.icon-pencil:before {\n  content: \"\\f040\";\n}\n.icon-map-marker:before {\n  content: \"\\f041\";\n}\n.icon-adjust:before {\n  content: \"\\f042\";\n}\n.icon-tint:before {\n  content: \"\\f043\";\n}\n.icon-edit:before {\n  content: \"\\f044\";\n}\n.icon-share:before {\n  content: \"\\f045\";\n}\n.icon-check:before {\n  content: \"\\f046\";\n}\n.icon-move:before {\n  content: \"\\f047\";\n}\n.icon-step-backward:before {\n  content: \"\\f048\";\n}\n.icon-fast-backward:before {\n  content: \"\\f049\";\n}\n.icon-backward:before {\n  content: \"\\f04a\";\n}\n.icon-play:before {\n  content: \"\\f04b\";\n}\n.icon-pause:before {\n  content: \"\\f04c\";\n}\n.icon-stop:before {\n  content: \"\\f04d\";\n}\n.icon-forward:before {\n  content: \"\\f04e\";\n}\n.icon-fast-forward:before {\n  content: \"\\f050\";\n}\n.icon-step-forward:before {\n  content: \"\\f051\";\n}\n.icon-eject:before {\n  content: \"\\f052\";\n}\n.icon-chevron-left:before {\n  content: \"\\f053\";\n}\n.icon-chevron-right:before {\n  content: \"\\f054\";\n}\n.icon-plus-sign:before {\n  content: \"\\f055\";\n}\n.icon-minus-sign:before {\n  content: \"\\f056\";\n}\n.icon-remove-sign:before {\n  content: \"\\f057\";\n}\n.icon-ok-sign:before {\n  content: \"\\f058\";\n}\n.icon-question-sign:before {\n  content: \"\\f059\";\n}\n.icon-info-sign:before {\n  content: \"\\f05a\";\n}\n.icon-screenshot:before {\n  content: \"\\f05b\";\n}\n.icon-remove-circle:before {\n  content: \"\\f05c\";\n}\n.icon-ok-circle:before {\n  content: \"\\f05d\";\n}\n.icon-ban-circle:before {\n  content: \"\\f05e\";\n}\n.icon-arrow-left:before {\n  content: \"\\f060\";\n}\n.icon-arrow-right:before {\n  content: \"\\f061\";\n}\n.icon-arrow-up:before {\n  content: \"\\f062\";\n}\n.icon-arrow-down:before {\n  content: \"\\f063\";\n}\n.icon-mail-forward:before,\n.icon-share-alt:before {\n  content: \"\\f064\";\n}\n.icon-resize-full:before {\n  content: \"\\f065\";\n}\n.icon-resize-small:before {\n  content: \"\\f066\";\n}\n.icon-plus:before {\n  content: \"\\f067\";\n}\n.icon-minus:before {\n  content: \"\\f068\";\n}\n.icon-asterisk:before {\n  content: \"\\f069\";\n}\n.icon-exclamation-sign:before {\n  content: \"\\f06a\";\n}\n.icon-gift:before {\n  content: \"\\f06b\";\n}\n.icon-leaf:before {\n  content: \"\\f06c\";\n}\n.icon-fire:before {\n  content: \"\\f06d\";\n}\n.icon-eye-open:before {\n  content: \"\\f06e\";\n}\n.icon-eye-close:before {\n  content: \"\\f070\";\n}\n.icon-warning-sign:before {\n  content: \"\\f071\";\n}\n.icon-plane:before {\n  content: \"\\f072\";\n}\n.icon-calendar:before {\n  content: \"\\f073\";\n}\n.icon-random:before {\n  content: \"\\f074\";\n}\n.icon-comment:before {\n  content: \"\\f075\";\n}\n.icon-magnet:before {\n  content: \"\\f076\";\n}\n.icon-chevron-up:before {\n  content: \"\\f077\";\n}\n.icon-chevron-down:before {\n  content: \"\\f078\";\n}\n.icon-retweet:before {\n  content: \"\\f079\";\n}\n.icon-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.icon-folder-close:before {\n  content: \"\\f07b\";\n}\n.icon-folder-open:before {\n  content: \"\\f07c\";\n}\n.icon-resize-vertical:before {\n  content: \"\\f07d\";\n}\n.icon-resize-horizontal:before {\n  content: \"\\f07e\";\n}\n.icon-bar-chart:before {\n  content: \"\\f080\";\n}\n.icon-twitter-sign:before {\n  content: \"\\f081\";\n}\n.icon-facebook-sign:before {\n  content: \"\\f082\";\n}\n.icon-camera-retro:before {\n  content: \"\\f083\";\n}\n.icon-key:before {\n  content: \"\\f084\";\n}\n.icon-cogs:before {\n  content: \"\\f085\";\n}\n.icon-comments:before {\n  content: \"\\f086\";\n}\n.icon-thumbs-up-alt:before {\n  content: \"\\f087\";\n}\n.icon-thumbs-down-alt:before {\n  content: \"\\f088\";\n}\n.icon-star-half:before {\n  content: \"\\f089\";\n}\n.icon-heart-empty:before {\n  content: \"\\f08a\";\n}\n.icon-signout:before {\n  content: \"\\f08b\";\n}\n.icon-linkedin-sign:before {\n  content: \"\\f08c\";\n}\n.icon-pushpin:before {\n  content: \"\\f08d\";\n}\n.icon-external-link:before {\n  content: \"\\f08e\";\n}\n.icon-signin:before {\n  content: \"\\f090\";\n}\n.icon-trophy:before {\n  content: \"\\f091\";\n}\n.icon-github-sign:before {\n  content: \"\\f092\";\n}\n.icon-upload-alt:before {\n  content: \"\\f093\";\n}\n.icon-lemon:before {\n  content: \"\\f094\";\n}\n.icon-phone:before {\n  content: \"\\f095\";\n}\n.icon-unchecked:before,\n.icon-check-empty:before {\n  content: \"\\f096\";\n}\n.icon-bookmark-empty:before {\n  content: \"\\f097\";\n}\n.icon-phone-sign:before {\n  content: \"\\f098\";\n}\n.icon-twitter:before {\n  content: \"\\f099\";\n}\n.icon-facebook:before {\n  content: \"\\f09a\";\n}\n.icon-github:before {\n  content: \"\\f09b\";\n}\n.icon-unlock:before {\n  content: \"\\f09c\";\n}\n.icon-credit-card:before {\n  content: \"\\f09d\";\n}\n.icon-rss:before {\n  content: \"\\f09e\";\n}\n.icon-hdd:before {\n  content: \"\\f0a0\";\n}\n.icon-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.icon-bell:before {\n  content: \"\\f0a2\";\n}\n.icon-certificate:before {\n  content: \"\\f0a3\";\n}\n.icon-hand-right:before {\n  content: \"\\f0a4\";\n}\n.icon-hand-left:before {\n  content: \"\\f0a5\";\n}\n.icon-hand-up:before {\n  content: \"\\f0a6\";\n}\n.icon-hand-down:before {\n  content: \"\\f0a7\";\n}\n.icon-circle-arrow-left:before {\n  content: \"\\f0a8\";\n}\n.icon-circle-arrow-right:before {\n  content: \"\\f0a9\";\n}\n.icon-circle-arrow-up:before {\n  content: \"\\f0aa\";\n}\n.icon-circle-arrow-down:before {\n  content: \"\\f0ab\";\n}\n.icon-globe:before {\n  content: \"\\f0ac\";\n}\n.icon-wrench:before {\n  content: \"\\f0ad\";\n}\n.icon-tasks:before {\n  content: \"\\f0ae\";\n}\n.icon-filter:before {\n  content: \"\\f0b0\";\n}\n.icon-briefcase:before {\n  content: \"\\f0b1\";\n}\n.icon-fullscreen:before {\n  content: \"\\f0b2\";\n}\n.icon-group:before {\n  content: \"\\f0c0\";\n}\n.icon-link:before {\n  content: \"\\f0c1\";\n}\n.icon-cloud:before {\n  content: \"\\f0c2\";\n}\n.icon-beaker:before {\n  content: \"\\f0c3\";\n}\n.icon-cut:before {\n  content: \"\\f0c4\";\n}\n.icon-copy:before {\n  content: \"\\f0c5\";\n}\n.icon-paperclip:before,\n.icon-paper-clip:before {\n  content: \"\\f0c6\";\n}\n.icon-save:before {\n  content: \"\\f0c7\";\n}\n.icon-sign-blank:before {\n  content: \"\\f0c8\";\n}\n.icon-reorder:before {\n  content: \"\\f0c9\";\n}\n.icon-list-ul:before {\n  content: \"\\f0ca\";\n}\n.icon-list-ol:before {\n  content: \"\\f0cb\";\n}\n.icon-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.icon-underline:before {\n  content: \"\\f0cd\";\n}\n.icon-table:before {\n  content: \"\\f0ce\";\n}\n.icon-magic:before {\n  content: \"\\f0d0\";\n}\n.icon-truck:before {\n  content: \"\\f0d1\";\n}\n.icon-pinterest:before {\n  content: \"\\f0d2\";\n}\n.icon-pinterest-sign:before {\n  content: \"\\f0d3\";\n}\n.icon-google-plus-sign:before {\n  content: \"\\f0d4\";\n}\n.icon-google-plus:before {\n  content: \"\\f0d5\";\n}\n.icon-money:before {\n  content: \"\\f0d6\";\n}\n.icon-caret-down:before {\n  content: \"\\f0d7\";\n}\n.icon-caret-up:before {\n  content: \"\\f0d8\";\n}\n.icon-caret-left:before {\n  content: \"\\f0d9\";\n}\n.icon-caret-right:before {\n  content: \"\\f0da\";\n}\n.icon-columns:before {\n  content: \"\\f0db\";\n}\n.icon-sort:before {\n  content: \"\\f0dc\";\n}\n.icon-sort-down:before {\n  content: \"\\f0dd\";\n}\n.icon-sort-up:before {\n  content: \"\\f0de\";\n}\n.icon-envelope:before {\n  content: \"\\f0e0\";\n}\n.icon-linkedin:before {\n  content: \"\\f0e1\";\n}\n.icon-rotate-left:before,\n.icon-undo:before {\n  content: \"\\f0e2\";\n}\n.icon-legal:before {\n  content: \"\\f0e3\";\n}\n.icon-dashboard:before {\n  content: \"\\f0e4\";\n}\n.icon-comment-alt:before {\n  content: \"\\f0e5\";\n}\n.icon-comments-alt:before {\n  content: \"\\f0e6\";\n}\n.icon-bolt:before {\n  content: \"\\f0e7\";\n}\n.icon-sitemap:before {\n  content: \"\\f0e8\";\n}\n.icon-umbrella:before {\n  content: \"\\f0e9\";\n}\n.icon-paste:before {\n  content: \"\\f0ea\";\n}\n.icon-lightbulb:before {\n  content: \"\\f0eb\";\n}\n.icon-exchange:before {\n  content: \"\\f0ec\";\n}\n.icon-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.icon-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.icon-user-md:before {\n  content: \"\\f0f0\";\n}\n.icon-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.icon-suitcase:before {\n  content: \"\\f0f2\";\n}\n.icon-bell-alt:before {\n  content: \"\\f0f3\";\n}\n.icon-coffee:before {\n  content: \"\\f0f4\";\n}\n.icon-food:before {\n  content: \"\\f0f5\";\n}\n.icon-file-text-alt:before {\n  content: \"\\f0f6\";\n}\n.icon-building:before {\n  content: \"\\f0f7\";\n}\n.icon-hospital:before {\n  content: \"\\f0f8\";\n}\n.icon-ambulance:before {\n  content: \"\\f0f9\";\n}\n.icon-medkit:before {\n  content: \"\\f0fa\";\n}\n.icon-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.icon-beer:before {\n  content: \"\\f0fc\";\n}\n.icon-h-sign:before {\n  content: \"\\f0fd\";\n}\n.icon-plus-sign-alt:before {\n  content: \"\\f0fe\";\n}\n.icon-double-angle-left:before {\n  content: \"\\f100\";\n}\n.icon-double-angle-right:before {\n  content: \"\\f101\";\n}\n.icon-double-angle-up:before {\n  content: \"\\f102\";\n}\n.icon-double-angle-down:before {\n  content: \"\\f103\";\n}\n.icon-angle-left:before {\n  content: \"\\f104\";\n}\n.icon-angle-right:before {\n  content: \"\\f105\";\n}\n.icon-angle-up:before {\n  content: \"\\f106\";\n}\n.icon-angle-down:before {\n  content: \"\\f107\";\n}\n.icon-desktop:before {\n  content: \"\\f108\";\n}\n.icon-laptop:before {\n  content: \"\\f109\";\n}\n.icon-tablet:before {\n  content: \"\\f10a\";\n}\n.icon-mobile-phone:before {\n  content: \"\\f10b\";\n}\n.icon-circle-blank:before {\n  content: \"\\f10c\";\n}\n.icon-quote-left:before {\n  content: \"\\f10d\";\n}\n.icon-quote-right:before {\n  content: \"\\f10e\";\n}\n.icon-spinner:before {\n  content: \"\\f110\";\n}\n.icon-circle:before {\n  content: \"\\f111\";\n}\n.icon-mail-reply:before,\n.icon-reply:before {\n  content: \"\\f112\";\n}\n.icon-github-alt:before {\n  content: \"\\f113\";\n}\n.icon-folder-close-alt:before {\n  content: \"\\f114\";\n}\n.icon-folder-open-alt:before {\n  content: \"\\f115\";\n}\n.icon-expand-alt:before {\n  content: \"\\f116\";\n}\n.icon-collapse-alt:before {\n  content: \"\\f117\";\n}\n.icon-smile:before {\n  content: \"\\f118\";\n}\n.icon-frown:before {\n  content: \"\\f119\";\n}\n.icon-meh:before {\n  content: \"\\f11a\";\n}\n.icon-gamepad:before {\n  content: \"\\f11b\";\n}\n.icon-keyboard:before {\n  content: \"\\f11c\";\n}\n.icon-flag-alt:before {\n  content: \"\\f11d\";\n}\n.icon-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.icon-terminal:before {\n  content: \"\\f120\";\n}\n.icon-code:before {\n  content: \"\\f121\";\n}\n.icon-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-mail-reply-all:before {\n  content: \"\\f122\";\n}\n.icon-star-half-full:before,\n.icon-star-half-empty:before {\n  content: \"\\f123\";\n}\n.icon-location-arrow:before {\n  content: \"\\f124\";\n}\n.icon-crop:before {\n  content: \"\\f125\";\n}\n.icon-code-fork:before {\n  content: \"\\f126\";\n}\n.icon-unlink:before {\n  content: \"\\f127\";\n}\n.icon-question:before {\n  content: \"\\f128\";\n}\n.icon-info:before {\n  content: \"\\f129\";\n}\n.icon-exclamation:before {\n  content: \"\\f12a\";\n}\n.icon-superscript:before {\n  content: \"\\f12b\";\n}\n.icon-subscript:before {\n  content: \"\\f12c\";\n}\n.icon-eraser:before {\n  content: \"\\f12d\";\n}\n.icon-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.icon-microphone:before {\n  content: \"\\f130\";\n}\n.icon-microphone-off:before {\n  content: \"\\f131\";\n}\n.icon-shield:before {\n  content: \"\\f132\";\n}\n.icon-calendar-empty:before {\n  content: \"\\f133\";\n}\n.icon-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.icon-rocket:before {\n  content: \"\\f135\";\n}\n.icon-maxcdn:before {\n  content: \"\\f136\";\n}\n.icon-chevron-sign-left:before {\n  content: \"\\f137\";\n}\n.icon-chevron-sign-right:before {\n  content: \"\\f138\";\n}\n.icon-chevron-sign-up:before {\n  content: \"\\f139\";\n}\n.icon-chevron-sign-down:before {\n  content: \"\\f13a\";\n}\n.icon-html5:before {\n  content: \"\\f13b\";\n}\n.icon-css3:before {\n  content: \"\\f13c\";\n}\n.icon-anchor:before {\n  content: \"\\f13d\";\n}\n.icon-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.icon-bullseye:before {\n  content: \"\\f140\";\n}\n.icon-ellipsis-horizontal:before {\n  content: \"\\f141\";\n}\n.icon-ellipsis-vertical:before {\n  content: \"\\f142\";\n}\n.icon-rss-sign:before {\n  content: \"\\f143\";\n}\n.icon-play-sign:before {\n  content: \"\\f144\";\n}\n.icon-ticket:before {\n  content: \"\\f145\";\n}\n.icon-minus-sign-alt:before {\n  content: \"\\f146\";\n}\n.icon-check-minus:before {\n  content: \"\\f147\";\n}\n.icon-level-up:before {\n  content: \"\\f148\";\n}\n.icon-level-down:before {\n  content: \"\\f149\";\n}\n.icon-check-sign:before {\n  content: \"\\f14a\";\n}\n.icon-edit-sign:before {\n  content: \"\\f14b\";\n}\n.icon-external-link-sign:before {\n  content: \"\\f14c\";\n}\n.icon-share-sign:before {\n  content: \"\\f14d\";\n}\n.icon-compass:before {\n  content: \"\\f14e\";\n}\n.icon-collapse:before {\n  content: \"\\f150\";\n}\n.icon-collapse-top:before {\n  content: \"\\f151\";\n}\n.icon-expand:before {\n  content: \"\\f152\";\n}\n.icon-euro:before,\n.icon-eur:before {\n  content: \"\\f153\";\n}\n.icon-gbp:before {\n  content: \"\\f154\";\n}\n.icon-dollar:before,\n.icon-usd:before {\n  content: \"\\f155\";\n}\n.icon-rupee:before,\n.icon-inr:before {\n  content: \"\\f156\";\n}\n.icon-yen:before,\n.icon-jpy:before {\n  content: \"\\f157\";\n}\n.icon-renminbi:before,\n.icon-cny:before {\n  content: \"\\f158\";\n}\n.icon-won:before,\n.icon-krw:before {\n  content: \"\\f159\";\n}\n.icon-bitcoin:before,\n.icon-btc:before {\n  content: \"\\f15a\";\n}\n.icon-file:before {\n  content: \"\\f15b\";\n}\n.icon-file-text:before {\n  content: \"\\f15c\";\n}\n.icon-sort-by-alphabet:before {\n  content: \"\\f15d\";\n}\n.icon-sort-by-alphabet-alt:before {\n  content: \"\\f15e\";\n}\n.icon-sort-by-attributes:before {\n  content: \"\\f160\";\n}\n.icon-sort-by-attributes-alt:before {\n  content: \"\\f161\";\n}\n.icon-sort-by-order:before {\n  content: \"\\f162\";\n}\n.icon-sort-by-order-alt:before {\n  content: \"\\f163\";\n}\n.icon-thumbs-up:before {\n  content: \"\\f164\";\n}\n.icon-thumbs-down:before {\n  content: \"\\f165\";\n}\n.icon-youtube-sign:before {\n  content: \"\\f166\";\n}\n.icon-youtube:before {\n  content: \"\\f167\";\n}\n.icon-xing:before {\n  content: \"\\f168\";\n}\n.icon-xing-sign:before {\n  content: \"\\f169\";\n}\n.icon-youtube-play:before {\n  content: \"\\f16a\";\n}\n.icon-dropbox:before {\n  content: \"\\f16b\";\n}\n.icon-stackexchange:before {\n  content: \"\\f16c\";\n}\n.icon-instagram:before {\n  content: \"\\f16d\";\n}\n.icon-flickr:before {\n  content: \"\\f16e\";\n}\n.icon-adn:before {\n  content: \"\\f170\";\n}\n.icon-bitbucket:before {\n  content: \"\\f171\";\n}\n.icon-bitbucket-sign:before {\n  content: \"\\f172\";\n}\n.icon-tumblr:before {\n  content: \"\\f173\";\n}\n.icon-tumblr-sign:before {\n  content: \"\\f174\";\n}\n.icon-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.icon-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.icon-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.icon-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.icon-apple:before {\n  content: \"\\f179\";\n}\n.icon-windows:before {\n  content: \"\\f17a\";\n}\n.icon-android:before {\n  content: \"\\f17b\";\n}\n.icon-linux:before {\n  content: \"\\f17c\";\n}\n.icon-dribble:before {\n  content: \"\\f17d\";\n}\n.icon-skype:before {\n  content: \"\\f17e\";\n}\n.icon-foursquare:before {\n  content: \"\\f180\";\n}\n.icon-trello:before {\n  content: \"\\f181\";\n}\n.icon-female:before {\n  content: \"\\f182\";\n}\n.icon-male:before {\n  content: \"\\f183\";\n}\n.icon-gittip:before {\n  content: \"\\f184\";\n}\n.icon-sun:before {\n  content: \"\\f185\";\n}\n.icon-moon:before {\n  content: \"\\f186\";\n}\n.icon-archive:before {\n  content: \"\\f187\";\n}\n.icon-bug:before {\n  content: \"\\f188\";\n}\n.icon-vk:before {\n  content: \"\\f189\";\n}\n.icon-weibo:before {\n  content: \"\\f18a\";\n}\n.icon-renren:before {\n  content: \"\\f18b\";\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/bootstrap.less",
    "content": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n\n\n/* keeps Bootstrap styles with and without icons the same */\n.btn, .nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n//    display: inline;\n    &.icon-large { line-height: .9em; }\n    &.icon-spin { display: inline-block; }\n  }\n}\n.nav-tabs, .nav-pills {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &, &.icon-large { line-height: .9em; }\n  }\n}\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .18em; }\n    }\n    &.icon-spin.icon-large { line-height: .8em; }\n  }\n}\n.btn.btn-small {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .25em; }\n    }\n  }\n}\n.btn.btn-large {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    margin-top: 0; // overrides bootstrap default\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .05em; }\n    }\n    &.pull-left.icon-2x { margin-right: .2em; }\n    &.pull-right.icon-2x { margin-left: .2em; }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/core.less",
    "content": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  .icon-FontAwesome();\n}\n\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: 4/3em;\n}\n\n/* makes sure icons active on rollover in links */\na {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    display: inline;\n  }\n}\n\n/* increased font size for icon-large */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.icon-fixed-width {\n    display: inline-block;\n    width: 16/14em;\n    text-align: right;\n    padding-right: 4/14em;\n    &.icon-large {\n      width: 20/14em;\n    }\n  }\n}\n\n.icons-ul {\n  margin-left: @icons-li-width;\n  list-style-type: none;\n\n  > li { position: relative; }\n\n  .icon-li {\n    position: absolute;\n    left: -@icons-li-width;\n    width: @icons-li-width;\n    text-align: center;\n    line-height: inherit;\n  }\n}\n\n// allows usage of the hide class directly on font awesome icons\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.hide {\n    display: none;\n  }\n}\n\n.icon-muted { color: @iconMuted; }\n.icon-light { color: @iconLight; }\n.icon-dark { color: @iconDark; }\n\n// Icon Borders\n// -------------------------\n\n.icon-border {\n  border: solid 1px @borderColor;\n  padding: .2em .25em .15em;\n  .border-radius(3px);\n}\n\n// Icon Sizes\n// -------------------------\n\n.icon-2x {\n  font-size: 2em;\n  &.icon-border {\n    border-width: 2px;\n    .border-radius(4px);\n  }\n}\n.icon-3x {\n  font-size: 3em;\n  &.icon-border {\n    border-width: 3px;\n    .border-radius(5px);\n  }\n}\n.icon-4x {\n  font-size: 4em;\n  &.icon-border {\n    border-width: 4px;\n    .border-radius(6px);\n  }\n}\n\n.icon-5x {\n  font-size: 5em;\n  &.icon-border {\n    border-width: 5px;\n    .border-radius(7px);\n  }\n}\n\n\n// Floats & Margins\n// -------------------------\n\n// Quick floats\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.pull-left {\n    margin-right: .3em;\n  }\n  &.pull-right {\n    margin-left: .3em;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/extras.less",
    "content": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n.icon-stack();\n\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n\n@-moz-keyframes spin {\n  0% { -moz-transform: rotate(0deg); }\n  100% { -moz-transform: rotate(359deg); }\n}\n@-webkit-keyframes spin {\n  0% { -webkit-transform: rotate(0deg); }\n  100% { -webkit-transform: rotate(359deg); }\n}\n@-o-keyframes spin {\n  0% { -o-transform: rotate(0deg); }\n  100% { -o-transform: rotate(359deg); }\n}\n@-ms-keyframes spin {\n  0% { -ms-transform: rotate(0deg); }\n  100% { -ms-transform: rotate(359deg); }\n}\n@keyframes spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(359deg); }\n}\n\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n/* ensure rotation occurs inside anchor tags */\na {\n  .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {\n    &:before { display: inline-block; }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/font-awesome-ie7.less",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n.icon-large {\n  font-size: 4/3em;\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n\n.nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    vertical-align: inherit;\n    margin-top: -4px;\n    padding-top: 3px;\n    margin-bottom: -4px;\n    padding-bottom: 3px;\n    &.icon-large {\n      vertical-align: -25%;\n    }\n  }\n}\n\n.nav-pills, .nav-tabs {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.icon-large {\n      line-height: .75em;\n      margin-top: -7px;\n      padding-top: 5px;\n      margin-bottom: -5px;\n      padding-bottom: 4px;\n    }\n  }\n}\n\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right { vertical-align: inherit; }\n    &.icon-large {\n      margin-top: -.5em;\n    }\n  }\n}\n\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n\n.ie7icon(@inner) { *zoom: ~\"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')\"; }\n\n\n.icon-glass {\n  .ie7icon('&#xf000;');\n}\n\n\n.icon-music {\n  .ie7icon('&#xf001;');\n}\n\n\n.icon-search {\n  .ie7icon('&#xf002;');\n}\n\n\n.icon-envelope-alt {\n  .ie7icon('&#xf003;');\n}\n\n\n.icon-heart {\n  .ie7icon('&#xf004;');\n}\n\n\n.icon-star {\n  .ie7icon('&#xf005;');\n}\n\n\n.icon-star-empty {\n  .ie7icon('&#xf006;');\n}\n\n\n.icon-user {\n  .ie7icon('&#xf007;');\n}\n\n\n.icon-film {\n  .ie7icon('&#xf008;');\n}\n\n\n.icon-th-large {\n  .ie7icon('&#xf009;');\n}\n\n\n.icon-th {\n  .ie7icon('&#xf00a;');\n}\n\n\n.icon-th-list {\n  .ie7icon('&#xf00b;');\n}\n\n\n.icon-ok {\n  .ie7icon('&#xf00c;');\n}\n\n\n.icon-remove {\n  .ie7icon('&#xf00d;');\n}\n\n\n.icon-zoom-in {\n  .ie7icon('&#xf00e;');\n}\n\n\n.icon-zoom-out {\n  .ie7icon('&#xf010;');\n}\n\n\n.icon-off {\n  .ie7icon('&#xf011;');\n}\n\n.icon-power-off {\n  .ie7icon('&#xf011;');\n}\n\n\n.icon-signal {\n  .ie7icon('&#xf012;');\n}\n\n\n.icon-cog {\n  .ie7icon('&#xf013;');\n}\n\n\n.icon-trash {\n  .ie7icon('&#xf014;');\n}\n\n\n.icon-home {\n  .ie7icon('&#xf015;');\n}\n\n\n.icon-file-alt {\n  .ie7icon('&#xf016;');\n}\n\n\n.icon-time {\n  .ie7icon('&#xf017;');\n}\n\n\n.icon-road {\n  .ie7icon('&#xf018;');\n}\n\n\n.icon-download-alt {\n  .ie7icon('&#xf019;');\n}\n\n\n.icon-download {\n  .ie7icon('&#xf01a;');\n}\n\n\n.icon-upload {\n  .ie7icon('&#xf01b;');\n}\n\n\n.icon-inbox {\n  .ie7icon('&#xf01c;');\n}\n\n\n.icon-play-circle {\n  .ie7icon('&#xf01d;');\n}\n\n\n.icon-repeat {\n  .ie7icon('&#xf01e;');\n}\n\n.icon-rotate-right {\n  .ie7icon('&#xf01e;');\n}\n\n\n.icon-refresh {\n  .ie7icon('&#xf021;');\n}\n\n\n.icon-list-alt {\n  .ie7icon('&#xf022;');\n}\n\n\n.icon-lock {\n  .ie7icon('&#xf023;');\n}\n\n\n.icon-flag {\n  .ie7icon('&#xf024;');\n}\n\n\n.icon-headphones {\n  .ie7icon('&#xf025;');\n}\n\n\n.icon-volume-off {\n  .ie7icon('&#xf026;');\n}\n\n\n.icon-volume-down {\n  .ie7icon('&#xf027;');\n}\n\n\n.icon-volume-up {\n  .ie7icon('&#xf028;');\n}\n\n\n.icon-qrcode {\n  .ie7icon('&#xf029;');\n}\n\n\n.icon-barcode {\n  .ie7icon('&#xf02a;');\n}\n\n\n.icon-tag {\n  .ie7icon('&#xf02b;');\n}\n\n\n.icon-tags {\n  .ie7icon('&#xf02c;');\n}\n\n\n.icon-book {\n  .ie7icon('&#xf02d;');\n}\n\n\n.icon-bookmark {\n  .ie7icon('&#xf02e;');\n}\n\n\n.icon-print {\n  .ie7icon('&#xf02f;');\n}\n\n\n.icon-camera {\n  .ie7icon('&#xf030;');\n}\n\n\n.icon-font {\n  .ie7icon('&#xf031;');\n}\n\n\n.icon-bold {\n  .ie7icon('&#xf032;');\n}\n\n\n.icon-italic {\n  .ie7icon('&#xf033;');\n}\n\n\n.icon-text-height {\n  .ie7icon('&#xf034;');\n}\n\n\n.icon-text-width {\n  .ie7icon('&#xf035;');\n}\n\n\n.icon-align-left {\n  .ie7icon('&#xf036;');\n}\n\n\n.icon-align-center {\n  .ie7icon('&#xf037;');\n}\n\n\n.icon-align-right {\n  .ie7icon('&#xf038;');\n}\n\n\n.icon-align-justify {\n  .ie7icon('&#xf039;');\n}\n\n\n.icon-list {\n  .ie7icon('&#xf03a;');\n}\n\n\n.icon-indent-left {\n  .ie7icon('&#xf03b;');\n}\n\n\n.icon-indent-right {\n  .ie7icon('&#xf03c;');\n}\n\n\n.icon-facetime-video {\n  .ie7icon('&#xf03d;');\n}\n\n\n.icon-picture {\n  .ie7icon('&#xf03e;');\n}\n\n\n.icon-pencil {\n  .ie7icon('&#xf040;');\n}\n\n\n.icon-map-marker {\n  .ie7icon('&#xf041;');\n}\n\n\n.icon-adjust {\n  .ie7icon('&#xf042;');\n}\n\n\n.icon-tint {\n  .ie7icon('&#xf043;');\n}\n\n\n.icon-edit {\n  .ie7icon('&#xf044;');\n}\n\n\n.icon-share {\n  .ie7icon('&#xf045;');\n}\n\n\n.icon-check {\n  .ie7icon('&#xf046;');\n}\n\n\n.icon-move {\n  .ie7icon('&#xf047;');\n}\n\n\n.icon-step-backward {\n  .ie7icon('&#xf048;');\n}\n\n\n.icon-fast-backward {\n  .ie7icon('&#xf049;');\n}\n\n\n.icon-backward {\n  .ie7icon('&#xf04a;');\n}\n\n\n.icon-play {\n  .ie7icon('&#xf04b;');\n}\n\n\n.icon-pause {\n  .ie7icon('&#xf04c;');\n}\n\n\n.icon-stop {\n  .ie7icon('&#xf04d;');\n}\n\n\n.icon-forward {\n  .ie7icon('&#xf04e;');\n}\n\n\n.icon-fast-forward {\n  .ie7icon('&#xf050;');\n}\n\n\n.icon-step-forward {\n  .ie7icon('&#xf051;');\n}\n\n\n.icon-eject {\n  .ie7icon('&#xf052;');\n}\n\n\n.icon-chevron-left {\n  .ie7icon('&#xf053;');\n}\n\n\n.icon-chevron-right {\n  .ie7icon('&#xf054;');\n}\n\n\n.icon-plus-sign {\n  .ie7icon('&#xf055;');\n}\n\n\n.icon-minus-sign {\n  .ie7icon('&#xf056;');\n}\n\n\n.icon-remove-sign {\n  .ie7icon('&#xf057;');\n}\n\n\n.icon-ok-sign {\n  .ie7icon('&#xf058;');\n}\n\n\n.icon-question-sign {\n  .ie7icon('&#xf059;');\n}\n\n\n.icon-info-sign {\n  .ie7icon('&#xf05a;');\n}\n\n\n.icon-screenshot {\n  .ie7icon('&#xf05b;');\n}\n\n\n.icon-remove-circle {\n  .ie7icon('&#xf05c;');\n}\n\n\n.icon-ok-circle {\n  .ie7icon('&#xf05d;');\n}\n\n\n.icon-ban-circle {\n  .ie7icon('&#xf05e;');\n}\n\n\n.icon-arrow-left {\n  .ie7icon('&#xf060;');\n}\n\n\n.icon-arrow-right {\n  .ie7icon('&#xf061;');\n}\n\n\n.icon-arrow-up {\n  .ie7icon('&#xf062;');\n}\n\n\n.icon-arrow-down {\n  .ie7icon('&#xf063;');\n}\n\n\n.icon-share-alt {\n  .ie7icon('&#xf064;');\n}\n\n.icon-mail-forward {\n  .ie7icon('&#xf064;');\n}\n\n\n.icon-resize-full {\n  .ie7icon('&#xf065;');\n}\n\n\n.icon-resize-small {\n  .ie7icon('&#xf066;');\n}\n\n\n.icon-plus {\n  .ie7icon('&#xf067;');\n}\n\n\n.icon-minus {\n  .ie7icon('&#xf068;');\n}\n\n\n.icon-asterisk {\n  .ie7icon('&#xf069;');\n}\n\n\n.icon-exclamation-sign {\n  .ie7icon('&#xf06a;');\n}\n\n\n.icon-gift {\n  .ie7icon('&#xf06b;');\n}\n\n\n.icon-leaf {\n  .ie7icon('&#xf06c;');\n}\n\n\n.icon-fire {\n  .ie7icon('&#xf06d;');\n}\n\n\n.icon-eye-open {\n  .ie7icon('&#xf06e;');\n}\n\n\n.icon-eye-close {\n  .ie7icon('&#xf070;');\n}\n\n\n.icon-warning-sign {\n  .ie7icon('&#xf071;');\n}\n\n\n.icon-plane {\n  .ie7icon('&#xf072;');\n}\n\n\n.icon-calendar {\n  .ie7icon('&#xf073;');\n}\n\n\n.icon-random {\n  .ie7icon('&#xf074;');\n}\n\n\n.icon-comment {\n  .ie7icon('&#xf075;');\n}\n\n\n.icon-magnet {\n  .ie7icon('&#xf076;');\n}\n\n\n.icon-chevron-up {\n  .ie7icon('&#xf077;');\n}\n\n\n.icon-chevron-down {\n  .ie7icon('&#xf078;');\n}\n\n\n.icon-retweet {\n  .ie7icon('&#xf079;');\n}\n\n\n.icon-shopping-cart {\n  .ie7icon('&#xf07a;');\n}\n\n\n.icon-folder-close {\n  .ie7icon('&#xf07b;');\n}\n\n\n.icon-folder-open {\n  .ie7icon('&#xf07c;');\n}\n\n\n.icon-resize-vertical {\n  .ie7icon('&#xf07d;');\n}\n\n\n.icon-resize-horizontal {\n  .ie7icon('&#xf07e;');\n}\n\n\n.icon-bar-chart {\n  .ie7icon('&#xf080;');\n}\n\n\n.icon-twitter-sign {\n  .ie7icon('&#xf081;');\n}\n\n\n.icon-facebook-sign {\n  .ie7icon('&#xf082;');\n}\n\n\n.icon-camera-retro {\n  .ie7icon('&#xf083;');\n}\n\n\n.icon-key {\n  .ie7icon('&#xf084;');\n}\n\n\n.icon-cogs {\n  .ie7icon('&#xf085;');\n}\n\n\n.icon-comments {\n  .ie7icon('&#xf086;');\n}\n\n\n.icon-thumbs-up-alt {\n  .ie7icon('&#xf087;');\n}\n\n\n.icon-thumbs-down-alt {\n  .ie7icon('&#xf088;');\n}\n\n\n.icon-star-half {\n  .ie7icon('&#xf089;');\n}\n\n\n.icon-heart-empty {\n  .ie7icon('&#xf08a;');\n}\n\n\n.icon-signout {\n  .ie7icon('&#xf08b;');\n}\n\n\n.icon-linkedin-sign {\n  .ie7icon('&#xf08c;');\n}\n\n\n.icon-pushpin {\n  .ie7icon('&#xf08d;');\n}\n\n\n.icon-external-link {\n  .ie7icon('&#xf08e;');\n}\n\n\n.icon-signin {\n  .ie7icon('&#xf090;');\n}\n\n\n.icon-trophy {\n  .ie7icon('&#xf091;');\n}\n\n\n.icon-github-sign {\n  .ie7icon('&#xf092;');\n}\n\n\n.icon-upload-alt {\n  .ie7icon('&#xf093;');\n}\n\n\n.icon-lemon {\n  .ie7icon('&#xf094;');\n}\n\n\n.icon-phone {\n  .ie7icon('&#xf095;');\n}\n\n\n.icon-check-empty {\n  .ie7icon('&#xf096;');\n}\n\n.icon-unchecked {\n  .ie7icon('&#xf096;');\n}\n\n\n.icon-bookmark-empty {\n  .ie7icon('&#xf097;');\n}\n\n\n.icon-phone-sign {\n  .ie7icon('&#xf098;');\n}\n\n\n.icon-twitter {\n  .ie7icon('&#xf099;');\n}\n\n\n.icon-facebook {\n  .ie7icon('&#xf09a;');\n}\n\n\n.icon-github {\n  .ie7icon('&#xf09b;');\n}\n\n\n.icon-unlock {\n  .ie7icon('&#xf09c;');\n}\n\n\n.icon-credit-card {\n  .ie7icon('&#xf09d;');\n}\n\n\n.icon-rss {\n  .ie7icon('&#xf09e;');\n}\n\n\n.icon-hdd {\n  .ie7icon('&#xf0a0;');\n}\n\n\n.icon-bullhorn {\n  .ie7icon('&#xf0a1;');\n}\n\n\n.icon-bell {\n  .ie7icon('&#xf0a2;');\n}\n\n\n.icon-certificate {\n  .ie7icon('&#xf0a3;');\n}\n\n\n.icon-hand-right {\n  .ie7icon('&#xf0a4;');\n}\n\n\n.icon-hand-left {\n  .ie7icon('&#xf0a5;');\n}\n\n\n.icon-hand-up {\n  .ie7icon('&#xf0a6;');\n}\n\n\n.icon-hand-down {\n  .ie7icon('&#xf0a7;');\n}\n\n\n.icon-circle-arrow-left {\n  .ie7icon('&#xf0a8;');\n}\n\n\n.icon-circle-arrow-right {\n  .ie7icon('&#xf0a9;');\n}\n\n\n.icon-circle-arrow-up {\n  .ie7icon('&#xf0aa;');\n}\n\n\n.icon-circle-arrow-down {\n  .ie7icon('&#xf0ab;');\n}\n\n\n.icon-globe {\n  .ie7icon('&#xf0ac;');\n}\n\n\n.icon-wrench {\n  .ie7icon('&#xf0ad;');\n}\n\n\n.icon-tasks {\n  .ie7icon('&#xf0ae;');\n}\n\n\n.icon-filter {\n  .ie7icon('&#xf0b0;');\n}\n\n\n.icon-briefcase {\n  .ie7icon('&#xf0b1;');\n}\n\n\n.icon-fullscreen {\n  .ie7icon('&#xf0b2;');\n}\n\n\n.icon-group {\n  .ie7icon('&#xf0c0;');\n}\n\n\n.icon-link {\n  .ie7icon('&#xf0c1;');\n}\n\n\n.icon-cloud {\n  .ie7icon('&#xf0c2;');\n}\n\n\n.icon-beaker {\n  .ie7icon('&#xf0c3;');\n}\n\n\n.icon-cut {\n  .ie7icon('&#xf0c4;');\n}\n\n\n.icon-copy {\n  .ie7icon('&#xf0c5;');\n}\n\n\n.icon-paper-clip {\n  .ie7icon('&#xf0c6;');\n}\n\n.icon-paperclip {\n  .ie7icon('&#xf0c6;');\n}\n\n\n.icon-save {\n  .ie7icon('&#xf0c7;');\n}\n\n\n.icon-sign-blank {\n  .ie7icon('&#xf0c8;');\n}\n\n\n.icon-reorder {\n  .ie7icon('&#xf0c9;');\n}\n\n\n.icon-list-ul {\n  .ie7icon('&#xf0ca;');\n}\n\n\n.icon-list-ol {\n  .ie7icon('&#xf0cb;');\n}\n\n\n.icon-strikethrough {\n  .ie7icon('&#xf0cc;');\n}\n\n\n.icon-underline {\n  .ie7icon('&#xf0cd;');\n}\n\n\n.icon-table {\n  .ie7icon('&#xf0ce;');\n}\n\n\n.icon-magic {\n  .ie7icon('&#xf0d0;');\n}\n\n\n.icon-truck {\n  .ie7icon('&#xf0d1;');\n}\n\n\n.icon-pinterest {\n  .ie7icon('&#xf0d2;');\n}\n\n\n.icon-pinterest-sign {\n  .ie7icon('&#xf0d3;');\n}\n\n\n.icon-google-plus-sign {\n  .ie7icon('&#xf0d4;');\n}\n\n\n.icon-google-plus {\n  .ie7icon('&#xf0d5;');\n}\n\n\n.icon-money {\n  .ie7icon('&#xf0d6;');\n}\n\n\n.icon-caret-down {\n  .ie7icon('&#xf0d7;');\n}\n\n\n.icon-caret-up {\n  .ie7icon('&#xf0d8;');\n}\n\n\n.icon-caret-left {\n  .ie7icon('&#xf0d9;');\n}\n\n\n.icon-caret-right {\n  .ie7icon('&#xf0da;');\n}\n\n\n.icon-columns {\n  .ie7icon('&#xf0db;');\n}\n\n\n.icon-sort {\n  .ie7icon('&#xf0dc;');\n}\n\n\n.icon-sort-down {\n  .ie7icon('&#xf0dd;');\n}\n\n\n.icon-sort-up {\n  .ie7icon('&#xf0de;');\n}\n\n\n.icon-envelope {\n  .ie7icon('&#xf0e0;');\n}\n\n\n.icon-linkedin {\n  .ie7icon('&#xf0e1;');\n}\n\n\n.icon-undo {\n  .ie7icon('&#xf0e2;');\n}\n\n.icon-rotate-left {\n  .ie7icon('&#xf0e2;');\n}\n\n\n.icon-legal {\n  .ie7icon('&#xf0e3;');\n}\n\n\n.icon-dashboard {\n  .ie7icon('&#xf0e4;');\n}\n\n\n.icon-comment-alt {\n  .ie7icon('&#xf0e5;');\n}\n\n\n.icon-comments-alt {\n  .ie7icon('&#xf0e6;');\n}\n\n\n.icon-bolt {\n  .ie7icon('&#xf0e7;');\n}\n\n\n.icon-sitemap {\n  .ie7icon('&#xf0e8;');\n}\n\n\n.icon-umbrella {\n  .ie7icon('&#xf0e9;');\n}\n\n\n.icon-paste {\n  .ie7icon('&#xf0ea;');\n}\n\n\n.icon-lightbulb {\n  .ie7icon('&#xf0eb;');\n}\n\n\n.icon-exchange {\n  .ie7icon('&#xf0ec;');\n}\n\n\n.icon-cloud-download {\n  .ie7icon('&#xf0ed;');\n}\n\n\n.icon-cloud-upload {\n  .ie7icon('&#xf0ee;');\n}\n\n\n.icon-user-md {\n  .ie7icon('&#xf0f0;');\n}\n\n\n.icon-stethoscope {\n  .ie7icon('&#xf0f1;');\n}\n\n\n.icon-suitcase {\n  .ie7icon('&#xf0f2;');\n}\n\n\n.icon-bell-alt {\n  .ie7icon('&#xf0f3;');\n}\n\n\n.icon-coffee {\n  .ie7icon('&#xf0f4;');\n}\n\n\n.icon-food {\n  .ie7icon('&#xf0f5;');\n}\n\n\n.icon-file-text-alt {\n  .ie7icon('&#xf0f6;');\n}\n\n\n.icon-building {\n  .ie7icon('&#xf0f7;');\n}\n\n\n.icon-hospital {\n  .ie7icon('&#xf0f8;');\n}\n\n\n.icon-ambulance {\n  .ie7icon('&#xf0f9;');\n}\n\n\n.icon-medkit {\n  .ie7icon('&#xf0fa;');\n}\n\n\n.icon-fighter-jet {\n  .ie7icon('&#xf0fb;');\n}\n\n\n.icon-beer {\n  .ie7icon('&#xf0fc;');\n}\n\n\n.icon-h-sign {\n  .ie7icon('&#xf0fd;');\n}\n\n\n.icon-plus-sign-alt {\n  .ie7icon('&#xf0fe;');\n}\n\n\n.icon-double-angle-left {\n  .ie7icon('&#xf100;');\n}\n\n\n.icon-double-angle-right {\n  .ie7icon('&#xf101;');\n}\n\n\n.icon-double-angle-up {\n  .ie7icon('&#xf102;');\n}\n\n\n.icon-double-angle-down {\n  .ie7icon('&#xf103;');\n}\n\n\n.icon-angle-left {\n  .ie7icon('&#xf104;');\n}\n\n\n.icon-angle-right {\n  .ie7icon('&#xf105;');\n}\n\n\n.icon-angle-up {\n  .ie7icon('&#xf106;');\n}\n\n\n.icon-angle-down {\n  .ie7icon('&#xf107;');\n}\n\n\n.icon-desktop {\n  .ie7icon('&#xf108;');\n}\n\n\n.icon-laptop {\n  .ie7icon('&#xf109;');\n}\n\n\n.icon-tablet {\n  .ie7icon('&#xf10a;');\n}\n\n\n.icon-mobile-phone {\n  .ie7icon('&#xf10b;');\n}\n\n\n.icon-circle-blank {\n  .ie7icon('&#xf10c;');\n}\n\n\n.icon-quote-left {\n  .ie7icon('&#xf10d;');\n}\n\n\n.icon-quote-right {\n  .ie7icon('&#xf10e;');\n}\n\n\n.icon-spinner {\n  .ie7icon('&#xf110;');\n}\n\n\n.icon-circle {\n  .ie7icon('&#xf111;');\n}\n\n\n.icon-reply {\n  .ie7icon('&#xf112;');\n}\n\n.icon-mail-reply {\n  .ie7icon('&#xf112;');\n}\n\n\n.icon-github-alt {\n  .ie7icon('&#xf113;');\n}\n\n\n.icon-folder-close-alt {\n  .ie7icon('&#xf114;');\n}\n\n\n.icon-folder-open-alt {\n  .ie7icon('&#xf115;');\n}\n\n\n.icon-expand-alt {\n  .ie7icon('&#xf116;');\n}\n\n\n.icon-collapse-alt {\n  .ie7icon('&#xf117;');\n}\n\n\n.icon-smile {\n  .ie7icon('&#xf118;');\n}\n\n\n.icon-frown {\n  .ie7icon('&#xf119;');\n}\n\n\n.icon-meh {\n  .ie7icon('&#xf11a;');\n}\n\n\n.icon-gamepad {\n  .ie7icon('&#xf11b;');\n}\n\n\n.icon-keyboard {\n  .ie7icon('&#xf11c;');\n}\n\n\n.icon-flag-alt {\n  .ie7icon('&#xf11d;');\n}\n\n\n.icon-flag-checkered {\n  .ie7icon('&#xf11e;');\n}\n\n\n.icon-terminal {\n  .ie7icon('&#xf120;');\n}\n\n\n.icon-code {\n  .ie7icon('&#xf121;');\n}\n\n\n.icon-reply-all {\n  .ie7icon('&#xf122;');\n}\n\n\n.icon-mail-reply-all {\n  .ie7icon('&#xf122;');\n}\n\n\n.icon-star-half-empty {\n  .ie7icon('&#xf123;');\n}\n\n.icon-star-half-full {\n  .ie7icon('&#xf123;');\n}\n\n\n.icon-location-arrow {\n  .ie7icon('&#xf124;');\n}\n\n\n.icon-crop {\n  .ie7icon('&#xf125;');\n}\n\n\n.icon-code-fork {\n  .ie7icon('&#xf126;');\n}\n\n\n.icon-unlink {\n  .ie7icon('&#xf127;');\n}\n\n\n.icon-question {\n  .ie7icon('&#xf128;');\n}\n\n\n.icon-info {\n  .ie7icon('&#xf129;');\n}\n\n\n.icon-exclamation {\n  .ie7icon('&#xf12a;');\n}\n\n\n.icon-superscript {\n  .ie7icon('&#xf12b;');\n}\n\n\n.icon-subscript {\n  .ie7icon('&#xf12c;');\n}\n\n\n.icon-eraser {\n  .ie7icon('&#xf12d;');\n}\n\n\n.icon-puzzle-piece {\n  .ie7icon('&#xf12e;');\n}\n\n\n.icon-microphone {\n  .ie7icon('&#xf130;');\n}\n\n\n.icon-microphone-off {\n  .ie7icon('&#xf131;');\n}\n\n\n.icon-shield {\n  .ie7icon('&#xf132;');\n}\n\n\n.icon-calendar-empty {\n  .ie7icon('&#xf133;');\n}\n\n\n.icon-fire-extinguisher {\n  .ie7icon('&#xf134;');\n}\n\n\n.icon-rocket {\n  .ie7icon('&#xf135;');\n}\n\n\n.icon-maxcdn {\n  .ie7icon('&#xf136;');\n}\n\n\n.icon-chevron-sign-left {\n  .ie7icon('&#xf137;');\n}\n\n\n.icon-chevron-sign-right {\n  .ie7icon('&#xf138;');\n}\n\n\n.icon-chevron-sign-up {\n  .ie7icon('&#xf139;');\n}\n\n\n.icon-chevron-sign-down {\n  .ie7icon('&#xf13a;');\n}\n\n\n.icon-html5 {\n  .ie7icon('&#xf13b;');\n}\n\n\n.icon-css3 {\n  .ie7icon('&#xf13c;');\n}\n\n\n.icon-anchor {\n  .ie7icon('&#xf13d;');\n}\n\n\n.icon-unlock-alt {\n  .ie7icon('&#xf13e;');\n}\n\n\n.icon-bullseye {\n  .ie7icon('&#xf140;');\n}\n\n\n.icon-ellipsis-horizontal {\n  .ie7icon('&#xf141;');\n}\n\n\n.icon-ellipsis-vertical {\n  .ie7icon('&#xf142;');\n}\n\n\n.icon-rss-sign {\n  .ie7icon('&#xf143;');\n}\n\n\n.icon-play-sign {\n  .ie7icon('&#xf144;');\n}\n\n\n.icon-ticket {\n  .ie7icon('&#xf145;');\n}\n\n\n.icon-minus-sign-alt {\n  .ie7icon('&#xf146;');\n}\n\n\n.icon-check-minus {\n  .ie7icon('&#xf147;');\n}\n\n\n.icon-level-up {\n  .ie7icon('&#xf148;');\n}\n\n\n.icon-level-down {\n  .ie7icon('&#xf149;');\n}\n\n\n.icon-check-sign {\n  .ie7icon('&#xf14a;');\n}\n\n\n.icon-edit-sign {\n  .ie7icon('&#xf14b;');\n}\n\n\n.icon-external-link-sign {\n  .ie7icon('&#xf14c;');\n}\n\n\n.icon-share-sign {\n  .ie7icon('&#xf14d;');\n}\n\n\n.icon-compass {\n  .ie7icon('&#xf14e;');\n}\n\n\n.icon-collapse {\n  .ie7icon('&#xf150;');\n}\n\n\n.icon-collapse-top {\n  .ie7icon('&#xf151;');\n}\n\n\n.icon-expand {\n  .ie7icon('&#xf152;');\n}\n\n\n.icon-eur {\n  .ie7icon('&#xf153;');\n}\n\n.icon-euro {\n  .ie7icon('&#xf153;');\n}\n\n\n.icon-gbp {\n  .ie7icon('&#xf154;');\n}\n\n\n.icon-usd {\n  .ie7icon('&#xf155;');\n}\n\n.icon-dollar {\n  .ie7icon('&#xf155;');\n}\n\n\n.icon-inr {\n  .ie7icon('&#xf156;');\n}\n\n.icon-rupee {\n  .ie7icon('&#xf156;');\n}\n\n\n.icon-jpy {\n  .ie7icon('&#xf157;');\n}\n\n.icon-yen {\n  .ie7icon('&#xf157;');\n}\n\n\n.icon-cny {\n  .ie7icon('&#xf158;');\n}\n\n.icon-renminbi {\n  .ie7icon('&#xf158;');\n}\n\n\n.icon-krw {\n  .ie7icon('&#xf159;');\n}\n\n.icon-won {\n  .ie7icon('&#xf159;');\n}\n\n\n.icon-btc {\n  .ie7icon('&#xf15a;');\n}\n\n.icon-bitcoin {\n  .ie7icon('&#xf15a;');\n}\n\n\n.icon-file {\n  .ie7icon('&#xf15b;');\n}\n\n\n.icon-file-text {\n  .ie7icon('&#xf15c;');\n}\n\n\n.icon-sort-by-alphabet {\n  .ie7icon('&#xf15d;');\n}\n\n\n.icon-sort-by-alphabet-alt {\n  .ie7icon('&#xf15e;');\n}\n\n\n.icon-sort-by-attributes {\n  .ie7icon('&#xf160;');\n}\n\n\n.icon-sort-by-attributes-alt {\n  .ie7icon('&#xf161;');\n}\n\n\n.icon-sort-by-order {\n  .ie7icon('&#xf162;');\n}\n\n\n.icon-sort-by-order-alt {\n  .ie7icon('&#xf163;');\n}\n\n\n.icon-thumbs-up {\n  .ie7icon('&#xf164;');\n}\n\n\n.icon-thumbs-down {\n  .ie7icon('&#xf165;');\n}\n\n\n.icon-youtube-sign {\n  .ie7icon('&#xf166;');\n}\n\n\n.icon-youtube {\n  .ie7icon('&#xf167;');\n}\n\n\n.icon-xing {\n  .ie7icon('&#xf168;');\n}\n\n\n.icon-xing-sign {\n  .ie7icon('&#xf169;');\n}\n\n\n.icon-youtube-play {\n  .ie7icon('&#xf16a;');\n}\n\n\n.icon-dropbox {\n  .ie7icon('&#xf16b;');\n}\n\n\n.icon-stackexchange {\n  .ie7icon('&#xf16c;');\n}\n\n\n.icon-instagram {\n  .ie7icon('&#xf16d;');\n}\n\n\n.icon-flickr {\n  .ie7icon('&#xf16e;');\n}\n\n\n.icon-adn {\n  .ie7icon('&#xf170;');\n}\n\n\n.icon-bitbucket {\n  .ie7icon('&#xf171;');\n}\n\n\n.icon-bitbucket-sign {\n  .ie7icon('&#xf172;');\n}\n\n\n.icon-tumblr {\n  .ie7icon('&#xf173;');\n}\n\n\n.icon-tumblr-sign {\n  .ie7icon('&#xf174;');\n}\n\n\n.icon-long-arrow-down {\n  .ie7icon('&#xf175;');\n}\n\n\n.icon-long-arrow-up {\n  .ie7icon('&#xf176;');\n}\n\n\n.icon-long-arrow-left {\n  .ie7icon('&#xf177;');\n}\n\n\n.icon-long-arrow-right {\n  .ie7icon('&#xf178;');\n}\n\n\n.icon-apple {\n  .ie7icon('&#xf179;');\n}\n\n\n.icon-windows {\n  .ie7icon('&#xf17a;');\n}\n\n\n.icon-android {\n  .ie7icon('&#xf17b;');\n}\n\n\n.icon-linux {\n  .ie7icon('&#xf17c;');\n}\n\n\n.icon-dribble {\n  .ie7icon('&#xf17d;');\n}\n\n\n.icon-skype {\n  .ie7icon('&#xf17e;');\n}\n\n\n.icon-foursquare {\n  .ie7icon('&#xf180;');\n}\n\n\n.icon-trello {\n  .ie7icon('&#xf181;');\n}\n\n\n.icon-female {\n  .ie7icon('&#xf182;');\n}\n\n\n.icon-male {\n  .ie7icon('&#xf183;');\n}\n\n\n.icon-gittip {\n  .ie7icon('&#xf184;');\n}\n\n\n.icon-sun {\n  .ie7icon('&#xf185;');\n}\n\n\n.icon-moon {\n  .ie7icon('&#xf186;');\n}\n\n\n.icon-archive {\n  .ie7icon('&#xf187;');\n}\n\n\n.icon-bug {\n  .ie7icon('&#xf188;');\n}\n\n\n.icon-vk {\n  .ie7icon('&#xf189;');\n}\n\n\n.icon-weibo {\n  .ie7icon('&#xf18a;');\n}\n\n\n.icon-renren {\n  .ie7icon('&#xf18b;');\n}\n\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/font-awesome.less",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n@import \"variables.less\";\n@import \"mixins.less\";\n@import \"path.less\";\n@import \"core.less\";\n@import \"bootstrap.less\";\n@import \"extras.less\";\n@import \"icons.less\";\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/icons.less",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n\n.icon-glass:before { content: @glass; }\n.icon-music:before { content: @music; }\n.icon-search:before { content: @search; }\n.icon-envelope-alt:before { content: @envelope-alt; }\n.icon-heart:before { content: @heart; }\n.icon-star:before { content: @star; }\n.icon-star-empty:before { content: @star-empty; }\n.icon-user:before { content: @user; }\n.icon-film:before { content: @film; }\n.icon-th-large:before { content: @th-large; }\n.icon-th:before { content: @th; }\n.icon-th-list:before { content: @th-list; }\n.icon-ok:before { content: @ok; }\n.icon-remove:before { content: @remove; }\n.icon-zoom-in:before { content: @zoom-in; }\n.icon-zoom-out:before { content: @zoom-out; }\n.icon-power-off:before,\n.icon-off:before { content: @off; }\n.icon-signal:before { content: @signal; }\n.icon-cog:before { content: @cog; }\n.icon-trash:before { content: @trash; }\n.icon-home:before { content: @home; }\n.icon-file-alt:before { content: @file-alt; }\n.icon-time:before { content: @time; }\n.icon-road:before { content: @road; }\n.icon-download-alt:before { content: @download-alt; }\n.icon-download:before { content: @download; }\n.icon-upload:before { content: @upload; }\n.icon-inbox:before { content: @inbox; }\n.icon-play-circle:before { content: @play-circle; }\n.icon-rotate-right:before,\n.icon-repeat:before { content: @repeat; }\n.icon-refresh:before { content: @refresh; }\n.icon-list-alt:before { content: @list-alt; }\n.icon-lock:before { content: @lock; }\n.icon-flag:before { content: @flag; }\n.icon-headphones:before { content: @headphones; }\n.icon-volume-off:before { content: @volume-off; }\n.icon-volume-down:before { content: @volume-down; }\n.icon-volume-up:before { content: @volume-up; }\n.icon-qrcode:before { content: @qrcode; }\n.icon-barcode:before { content: @barcode; }\n.icon-tag:before { content: @tag; }\n.icon-tags:before { content: @tags; }\n.icon-book:before { content: @book; }\n.icon-bookmark:before { content: @bookmark; }\n.icon-print:before { content: @print; }\n.icon-camera:before { content: @camera; }\n.icon-font:before { content: @font; }\n.icon-bold:before { content: @bold; }\n.icon-italic:before { content: @italic; }\n.icon-text-height:before { content: @text-height; }\n.icon-text-width:before { content: @text-width; }\n.icon-align-left:before { content: @align-left; }\n.icon-align-center:before { content: @align-center; }\n.icon-align-right:before { content: @align-right; }\n.icon-align-justify:before { content: @align-justify; }\n.icon-list:before { content: @list; }\n.icon-indent-left:before { content: @indent-left; }\n.icon-indent-right:before { content: @indent-right; }\n.icon-facetime-video:before { content: @facetime-video; }\n.icon-picture:before { content: @picture; }\n.icon-pencil:before { content: @pencil; }\n.icon-map-marker:before { content: @map-marker; }\n.icon-adjust:before { content: @adjust; }\n.icon-tint:before { content: @tint; }\n.icon-edit:before { content: @edit; }\n.icon-share:before { content: @share; }\n.icon-check:before { content: @check; }\n.icon-move:before { content: @move; }\n.icon-step-backward:before { content: @step-backward; }\n.icon-fast-backward:before { content: @fast-backward; }\n.icon-backward:before { content: @backward; }\n.icon-play:before { content: @play; }\n.icon-pause:before { content: @pause; }\n.icon-stop:before { content: @stop; }\n.icon-forward:before { content: @forward; }\n.icon-fast-forward:before { content: @fast-forward; }\n.icon-step-forward:before { content: @step-forward; }\n.icon-eject:before { content: @eject; }\n.icon-chevron-left:before { content: @chevron-left; }\n.icon-chevron-right:before { content: @chevron-right; }\n.icon-plus-sign:before { content: @plus-sign; }\n.icon-minus-sign:before { content: @minus-sign; }\n.icon-remove-sign:before { content: @remove-sign; }\n.icon-ok-sign:before { content: @ok-sign; }\n.icon-question-sign:before { content: @question-sign; }\n.icon-info-sign:before { content: @info-sign; }\n.icon-screenshot:before { content: @screenshot; }\n.icon-remove-circle:before { content: @remove-circle; }\n.icon-ok-circle:before { content: @ok-circle; }\n.icon-ban-circle:before { content: @ban-circle; }\n.icon-arrow-left:before { content: @arrow-left; }\n.icon-arrow-right:before { content: @arrow-right; }\n.icon-arrow-up:before { content: @arrow-up; }\n.icon-arrow-down:before { content: @arrow-down; }\n.icon-mail-forward:before,\n.icon-share-alt:before { content: @share-alt; }\n.icon-resize-full:before { content: @resize-full; }\n.icon-resize-small:before { content: @resize-small; }\n.icon-plus:before { content: @plus; }\n.icon-minus:before { content: @minus; }\n.icon-asterisk:before { content: @asterisk; }\n.icon-exclamation-sign:before { content: @exclamation-sign; }\n.icon-gift:before { content: @gift; }\n.icon-leaf:before { content: @leaf; }\n.icon-fire:before { content: @fire; }\n.icon-eye-open:before { content: @eye-open; }\n.icon-eye-close:before { content: @eye-close; }\n.icon-warning-sign:before { content: @warning-sign; }\n.icon-plane:before { content: @plane; }\n.icon-calendar:before { content: @calendar; }\n.icon-random:before { content: @random; }\n.icon-comment:before { content: @comment; }\n.icon-magnet:before { content: @magnet; }\n.icon-chevron-up:before { content: @chevron-up; }\n.icon-chevron-down:before { content: @chevron-down; }\n.icon-retweet:before { content: @retweet; }\n.icon-shopping-cart:before { content: @shopping-cart; }\n.icon-folder-close:before { content: @folder-close; }\n.icon-folder-open:before { content: @folder-open; }\n.icon-resize-vertical:before { content: @resize-vertical; }\n.icon-resize-horizontal:before { content: @resize-horizontal; }\n.icon-bar-chart:before { content: @bar-chart; }\n.icon-twitter-sign:before { content: @twitter-sign; }\n.icon-facebook-sign:before { content: @facebook-sign; }\n.icon-camera-retro:before { content: @camera-retro; }\n.icon-key:before { content: @key; }\n.icon-cogs:before { content: @cogs; }\n.icon-comments:before { content: @comments; }\n.icon-thumbs-up-alt:before { content: @thumbs-up-alt; }\n.icon-thumbs-down-alt:before { content: @thumbs-down-alt; }\n.icon-star-half:before { content: @star-half; }\n.icon-heart-empty:before { content: @heart-empty; }\n.icon-signout:before { content: @signout; }\n.icon-linkedin-sign:before { content: @linkedin-sign; }\n.icon-pushpin:before { content: @pushpin; }\n.icon-external-link:before { content: @external-link; }\n.icon-signin:before { content: @signin; }\n.icon-trophy:before { content: @trophy; }\n.icon-github-sign:before { content: @github-sign; }\n.icon-upload-alt:before { content: @upload-alt; }\n.icon-lemon:before { content: @lemon; }\n.icon-phone:before { content: @phone; }\n.icon-unchecked:before,\n.icon-check-empty:before { content: @check-empty; }\n.icon-bookmark-empty:before { content: @bookmark-empty; }\n.icon-phone-sign:before { content: @phone-sign; }\n.icon-twitter:before { content: @twitter; }\n.icon-facebook:before { content: @facebook; }\n.icon-github:before { content: @github; }\n.icon-unlock:before { content: @unlock; }\n.icon-credit-card:before { content: @credit-card; }\n.icon-rss:before { content: @rss; }\n.icon-hdd:before { content: @hdd; }\n.icon-bullhorn:before { content: @bullhorn; }\n.icon-bell:before { content: @bell; }\n.icon-certificate:before { content: @certificate; }\n.icon-hand-right:before { content: @hand-right; }\n.icon-hand-left:before { content: @hand-left; }\n.icon-hand-up:before { content: @hand-up; }\n.icon-hand-down:before { content: @hand-down; }\n.icon-circle-arrow-left:before { content: @circle-arrow-left; }\n.icon-circle-arrow-right:before { content: @circle-arrow-right; }\n.icon-circle-arrow-up:before { content: @circle-arrow-up; }\n.icon-circle-arrow-down:before { content: @circle-arrow-down; }\n.icon-globe:before { content: @globe; }\n.icon-wrench:before { content: @wrench; }\n.icon-tasks:before { content: @tasks; }\n.icon-filter:before { content: @filter; }\n.icon-briefcase:before { content: @briefcase; }\n.icon-fullscreen:before { content: @fullscreen; }\n.icon-group:before { content: @group; }\n.icon-link:before { content: @link; }\n.icon-cloud:before { content: @cloud; }\n.icon-beaker:before { content: @beaker; }\n.icon-cut:before { content: @cut; }\n.icon-copy:before { content: @copy; }\n.icon-paperclip:before,\n.icon-paper-clip:before { content: @paper-clip; }\n.icon-save:before { content: @save; }\n.icon-sign-blank:before { content: @sign-blank; }\n.icon-reorder:before { content: @reorder; }\n.icon-list-ul:before { content: @list-ul; }\n.icon-list-ol:before { content: @list-ol; }\n.icon-strikethrough:before { content: @strikethrough; }\n.icon-underline:before { content: @underline; }\n.icon-table:before { content: @table; }\n.icon-magic:before { content: @magic; }\n.icon-truck:before { content: @truck; }\n.icon-pinterest:before { content: @pinterest; }\n.icon-pinterest-sign:before { content: @pinterest-sign; }\n.icon-google-plus-sign:before { content: @google-plus-sign; }\n.icon-google-plus:before { content: @google-plus; }\n.icon-money:before { content: @money; }\n.icon-caret-down:before { content: @caret-down; }\n.icon-caret-up:before { content: @caret-up; }\n.icon-caret-left:before { content: @caret-left; }\n.icon-caret-right:before { content: @caret-right; }\n.icon-columns:before { content: @columns; }\n.icon-sort:before { content: @sort; }\n.icon-sort-down:before { content: @sort-down; }\n.icon-sort-up:before { content: @sort-up; }\n.icon-envelope:before { content: @envelope; }\n.icon-linkedin:before { content: @linkedin; }\n.icon-rotate-left:before,\n.icon-undo:before { content: @undo; }\n.icon-legal:before { content: @legal; }\n.icon-dashboard:before { content: @dashboard; }\n.icon-comment-alt:before { content: @comment-alt; }\n.icon-comments-alt:before { content: @comments-alt; }\n.icon-bolt:before { content: @bolt; }\n.icon-sitemap:before { content: @sitemap; }\n.icon-umbrella:before { content: @umbrella; }\n.icon-paste:before { content: @paste; }\n.icon-lightbulb:before { content: @lightbulb; }\n.icon-exchange:before { content: @exchange; }\n.icon-cloud-download:before { content: @cloud-download; }\n.icon-cloud-upload:before { content: @cloud-upload; }\n.icon-user-md:before { content: @user-md; }\n.icon-stethoscope:before { content: @stethoscope; }\n.icon-suitcase:before { content: @suitcase; }\n.icon-bell-alt:before { content: @bell-alt; }\n.icon-coffee:before { content: @coffee; }\n.icon-food:before { content: @food; }\n.icon-file-text-alt:before { content: @file-text-alt; }\n.icon-building:before { content: @building; }\n.icon-hospital:before { content: @hospital; }\n.icon-ambulance:before { content: @ambulance; }\n.icon-medkit:before { content: @medkit; }\n.icon-fighter-jet:before { content: @fighter-jet; }\n.icon-beer:before { content: @beer; }\n.icon-h-sign:before { content: @h-sign; }\n.icon-plus-sign-alt:before { content: @plus-sign-alt; }\n.icon-double-angle-left:before { content: @double-angle-left; }\n.icon-double-angle-right:before { content: @double-angle-right; }\n.icon-double-angle-up:before { content: @double-angle-up; }\n.icon-double-angle-down:before { content: @double-angle-down; }\n.icon-angle-left:before { content: @angle-left; }\n.icon-angle-right:before { content: @angle-right; }\n.icon-angle-up:before { content: @angle-up; }\n.icon-angle-down:before { content: @angle-down; }\n.icon-desktop:before { content: @desktop; }\n.icon-laptop:before { content: @laptop; }\n.icon-tablet:before { content: @tablet; }\n.icon-mobile-phone:before { content: @mobile-phone; }\n.icon-circle-blank:before { content: @circle-blank; }\n.icon-quote-left:before { content: @quote-left; }\n.icon-quote-right:before { content: @quote-right; }\n.icon-spinner:before { content: @spinner; }\n.icon-circle:before { content: @circle; }\n.icon-mail-reply:before,\n.icon-reply:before { content: @reply; }\n.icon-github-alt:before { content: @github-alt; }\n.icon-folder-close-alt:before { content: @folder-close-alt; }\n.icon-folder-open-alt:before { content: @folder-open-alt; }\n.icon-expand-alt:before { content: @expand-alt; }\n.icon-collapse-alt:before { content: @collapse-alt; }\n.icon-smile:before { content: @smile; }\n.icon-frown:before { content: @frown; }\n.icon-meh:before { content: @meh; }\n.icon-gamepad:before { content: @gamepad; }\n.icon-keyboard:before { content: @keyboard; }\n.icon-flag-alt:before { content: @flag-alt; }\n.icon-flag-checkered:before { content: @flag-checkered; }\n.icon-terminal:before { content: @terminal; }\n.icon-code:before { content: @code; }\n.icon-reply-all:before { content: @reply-all; }\n.icon-mail-reply-all:before { content: @mail-reply-all; }\n.icon-star-half-full:before,\n.icon-star-half-empty:before { content: @star-half-empty; }\n.icon-location-arrow:before { content: @location-arrow; }\n.icon-crop:before { content: @crop; }\n.icon-code-fork:before { content: @code-fork; }\n.icon-unlink:before { content: @unlink; }\n.icon-question:before { content: @question; }\n.icon-info:before { content: @info; }\n.icon-exclamation:before { content: @exclamation; }\n.icon-superscript:before { content: @superscript; }\n.icon-subscript:before { content: @subscript; }\n.icon-eraser:before { content: @eraser; }\n.icon-puzzle-piece:before { content: @puzzle-piece; }\n.icon-microphone:before { content: @microphone; }\n.icon-microphone-off:before { content: @microphone-off; }\n.icon-shield:before { content: @shield; }\n.icon-calendar-empty:before { content: @calendar-empty; }\n.icon-fire-extinguisher:before { content: @fire-extinguisher; }\n.icon-rocket:before { content: @rocket; }\n.icon-maxcdn:before { content: @maxcdn; }\n.icon-chevron-sign-left:before { content: @chevron-sign-left; }\n.icon-chevron-sign-right:before { content: @chevron-sign-right; }\n.icon-chevron-sign-up:before { content: @chevron-sign-up; }\n.icon-chevron-sign-down:before { content: @chevron-sign-down; }\n.icon-html5:before { content: @html5; }\n.icon-css3:before { content: @css3; }\n.icon-anchor:before { content: @anchor; }\n.icon-unlock-alt:before { content: @unlock-alt; }\n.icon-bullseye:before { content: @bullseye; }\n.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; }\n.icon-ellipsis-vertical:before { content: @ellipsis-vertical; }\n.icon-rss-sign:before { content: @rss-sign; }\n.icon-play-sign:before { content: @play-sign; }\n.icon-ticket:before { content: @ticket; }\n.icon-minus-sign-alt:before { content: @minus-sign-alt; }\n.icon-check-minus:before { content: @check-minus; }\n.icon-level-up:before { content: @level-up; }\n.icon-level-down:before { content: @level-down; }\n.icon-check-sign:before { content: @check-sign; }\n.icon-edit-sign:before { content: @edit-sign; }\n.icon-external-link-sign:before { content: @external-link-sign; }\n.icon-share-sign:before { content: @share-sign; }\n.icon-compass:before { content: @compass; }\n.icon-collapse:before { content: @collapse; }\n.icon-collapse-top:before { content: @collapse-top; }\n.icon-expand:before { content: @expand; }\n.icon-euro:before,\n.icon-eur:before { content: @eur; }\n.icon-gbp:before { content: @gbp; }\n.icon-dollar:before,\n.icon-usd:before { content: @usd; }\n.icon-rupee:before,\n.icon-inr:before { content: @inr; }\n.icon-yen:before,\n.icon-jpy:before { content: @jpy; }\n.icon-renminbi:before,\n.icon-cny:before { content: @cny; }\n.icon-won:before,\n.icon-krw:before { content: @krw; }\n.icon-bitcoin:before,\n.icon-btc:before { content: @btc; }\n.icon-file:before { content: @file; }\n.icon-file-text:before { content: @file-text; }\n.icon-sort-by-alphabet:before { content: @sort-by-alphabet; }\n.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; }\n.icon-sort-by-attributes:before { content: @sort-by-attributes; }\n.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; }\n.icon-sort-by-order:before { content: @sort-by-order; }\n.icon-sort-by-order-alt:before { content: @sort-by-order-alt; }\n.icon-thumbs-up:before { content: @thumbs-up; }\n.icon-thumbs-down:before { content: @thumbs-down; }\n.icon-youtube-sign:before { content: @youtube-sign; }\n.icon-youtube:before { content: @youtube; }\n.icon-xing:before { content: @xing; }\n.icon-xing-sign:before { content: @xing-sign; }\n.icon-youtube-play:before { content: @youtube-play; }\n.icon-dropbox:before { content: @dropbox; }\n.icon-stackexchange:before { content: @stackexchange; }\n.icon-instagram:before { content: @instagram; }\n.icon-flickr:before { content: @flickr; }\n.icon-adn:before { content: @adn; }\n.icon-bitbucket:before { content: @bitbucket; }\n.icon-bitbucket-sign:before { content: @bitbucket-sign; }\n.icon-tumblr:before { content: @tumblr; }\n.icon-tumblr-sign:before { content: @tumblr-sign; }\n.icon-long-arrow-down:before { content: @long-arrow-down; }\n.icon-long-arrow-up:before { content: @long-arrow-up; }\n.icon-long-arrow-left:before { content: @long-arrow-left; }\n.icon-long-arrow-right:before { content: @long-arrow-right; }\n.icon-apple:before { content: @apple; }\n.icon-windows:before { content: @windows; }\n.icon-android:before { content: @android; }\n.icon-linux:before { content: @linux; }\n.icon-dribble:before { content: @dribble; }\n.icon-skype:before { content: @skype; }\n.icon-foursquare:before { content: @foursquare; }\n.icon-trello:before { content: @trello; }\n.icon-female:before { content: @female; }\n.icon-male:before { content: @male; }\n.icon-gittip:before { content: @gittip; }\n.icon-sun:before { content: @sun; }\n.icon-moon:before { content: @moon; }\n.icon-archive:before { content: @archive; }\n.icon-bug:before { content: @bug; }\n.icon-vk:before { content: @vk; }\n.icon-weibo:before { content: @weibo; }\n.icon-renren:before { content: @renren; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/mixins.less",
    "content": "// Mixins\n// --------------------------\n\n.icon(@icon) {\n  .icon-FontAwesome();\n  content: @icon;\n}\n\n.icon-FontAwesome() {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em; // fixes ie7 issues\n}\n\n.border-radius(@radius) {\n  -webkit-border-radius: @radius;\n  -moz-border-radius: @radius;\n  border-radius: @radius;\n}\n\n.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) {\n  .icon-stack {\n    position: relative;\n    display: inline-block;\n    width: @width;\n    height: @height;\n    line-height: @width;\n    vertical-align: -35%;\n    [class^=\"icon-\"],\n    [class*=\" icon-\"] {\n      display: block;\n      text-align: center;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      font-size: @top-font-size;\n      line-height: inherit;\n      *line-height: @height;\n    }\n    .icon-stack-base {\n      font-size: @base-font-size;\n      *line-height: @height / @base-font-size;\n    }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/path.less",
    "content": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}');\n  src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'),\n    url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'),\n    url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'),\n    url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg');\n//  src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts\n  font-weight: normal;\n  font-style: normal;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/less/variables.less",
    "content": "// Variables\n// --------------------------\n\n@FontAwesomePath:    \"../font\";\n//@FontAwesomePath:    \"//netdna.bootstrapcdn.com/font-awesome/3.2.0/font\"; // for referencing Bootstrap CDN font files directly\n@FontAwesomeVersion: \"3.2.0\";\n@borderColor:        #eee;\n@iconMuted:          #eee;\n@iconLight:          #fff;\n@iconDark:           #333;\n@icons-li-width:     30/14em;\n\n\n  @glass: \"\\f000\";\n\n  @music: \"\\f001\";\n\n  @search: \"\\f002\";\n\n  @envelope-alt: \"\\f003\";\n\n  @heart: \"\\f004\";\n\n  @star: \"\\f005\";\n\n  @star-empty: \"\\f006\";\n\n  @user: \"\\f007\";\n\n  @film: \"\\f008\";\n\n  @th-large: \"\\f009\";\n\n  @th: \"\\f00a\";\n\n  @th-list: \"\\f00b\";\n\n  @ok: \"\\f00c\";\n\n  @remove: \"\\f00d\";\n\n  @zoom-in: \"\\f00e\";\n\n  @zoom-out: \"\\f010\";\n\n  @off: \"\\f011\";\n\n  @signal: \"\\f012\";\n\n  @cog: \"\\f013\";\n\n  @trash: \"\\f014\";\n\n  @home: \"\\f015\";\n\n  @file-alt: \"\\f016\";\n\n  @time: \"\\f017\";\n\n  @road: \"\\f018\";\n\n  @download-alt: \"\\f019\";\n\n  @download: \"\\f01a\";\n\n  @upload: \"\\f01b\";\n\n  @inbox: \"\\f01c\";\n\n  @play-circle: \"\\f01d\";\n\n  @repeat: \"\\f01e\";\n\n  @refresh: \"\\f021\";\n\n  @list-alt: \"\\f022\";\n\n  @lock: \"\\f023\";\n\n  @flag: \"\\f024\";\n\n  @headphones: \"\\f025\";\n\n  @volume-off: \"\\f026\";\n\n  @volume-down: \"\\f027\";\n\n  @volume-up: \"\\f028\";\n\n  @qrcode: \"\\f029\";\n\n  @barcode: \"\\f02a\";\n\n  @tag: \"\\f02b\";\n\n  @tags: \"\\f02c\";\n\n  @book: \"\\f02d\";\n\n  @bookmark: \"\\f02e\";\n\n  @print: \"\\f02f\";\n\n  @camera: \"\\f030\";\n\n  @font: \"\\f031\";\n\n  @bold: \"\\f032\";\n\n  @italic: \"\\f033\";\n\n  @text-height: \"\\f034\";\n\n  @text-width: \"\\f035\";\n\n  @align-left: \"\\f036\";\n\n  @align-center: \"\\f037\";\n\n  @align-right: \"\\f038\";\n\n  @align-justify: \"\\f039\";\n\n  @list: \"\\f03a\";\n\n  @indent-left: \"\\f03b\";\n\n  @indent-right: \"\\f03c\";\n\n  @facetime-video: \"\\f03d\";\n\n  @picture: \"\\f03e\";\n\n  @pencil: \"\\f040\";\n\n  @map-marker: \"\\f041\";\n\n  @adjust: \"\\f042\";\n\n  @tint: \"\\f043\";\n\n  @edit: \"\\f044\";\n\n  @share: \"\\f045\";\n\n  @check: \"\\f046\";\n\n  @move: \"\\f047\";\n\n  @step-backward: \"\\f048\";\n\n  @fast-backward: \"\\f049\";\n\n  @backward: \"\\f04a\";\n\n  @play: \"\\f04b\";\n\n  @pause: \"\\f04c\";\n\n  @stop: \"\\f04d\";\n\n  @forward: \"\\f04e\";\n\n  @fast-forward: \"\\f050\";\n\n  @step-forward: \"\\f051\";\n\n  @eject: \"\\f052\";\n\n  @chevron-left: \"\\f053\";\n\n  @chevron-right: \"\\f054\";\n\n  @plus-sign: \"\\f055\";\n\n  @minus-sign: \"\\f056\";\n\n  @remove-sign: \"\\f057\";\n\n  @ok-sign: \"\\f058\";\n\n  @question-sign: \"\\f059\";\n\n  @info-sign: \"\\f05a\";\n\n  @screenshot: \"\\f05b\";\n\n  @remove-circle: \"\\f05c\";\n\n  @ok-circle: \"\\f05d\";\n\n  @ban-circle: \"\\f05e\";\n\n  @arrow-left: \"\\f060\";\n\n  @arrow-right: \"\\f061\";\n\n  @arrow-up: \"\\f062\";\n\n  @arrow-down: \"\\f063\";\n\n  @share-alt: \"\\f064\";\n\n  @resize-full: \"\\f065\";\n\n  @resize-small: \"\\f066\";\n\n  @plus: \"\\f067\";\n\n  @minus: \"\\f068\";\n\n  @asterisk: \"\\f069\";\n\n  @exclamation-sign: \"\\f06a\";\n\n  @gift: \"\\f06b\";\n\n  @leaf: \"\\f06c\";\n\n  @fire: \"\\f06d\";\n\n  @eye-open: \"\\f06e\";\n\n  @eye-close: \"\\f070\";\n\n  @warning-sign: \"\\f071\";\n\n  @plane: \"\\f072\";\n\n  @calendar: \"\\f073\";\n\n  @random: \"\\f074\";\n\n  @comment: \"\\f075\";\n\n  @magnet: \"\\f076\";\n\n  @chevron-up: \"\\f077\";\n\n  @chevron-down: \"\\f078\";\n\n  @retweet: \"\\f079\";\n\n  @shopping-cart: \"\\f07a\";\n\n  @folder-close: \"\\f07b\";\n\n  @folder-open: \"\\f07c\";\n\n  @resize-vertical: \"\\f07d\";\n\n  @resize-horizontal: \"\\f07e\";\n\n  @bar-chart: \"\\f080\";\n\n  @twitter-sign: \"\\f081\";\n\n  @facebook-sign: \"\\f082\";\n\n  @camera-retro: \"\\f083\";\n\n  @key: \"\\f084\";\n\n  @cogs: \"\\f085\";\n\n  @comments: \"\\f086\";\n\n  @thumbs-up-alt: \"\\f087\";\n\n  @thumbs-down-alt: \"\\f088\";\n\n  @star-half: \"\\f089\";\n\n  @heart-empty: \"\\f08a\";\n\n  @signout: \"\\f08b\";\n\n  @linkedin-sign: \"\\f08c\";\n\n  @pushpin: \"\\f08d\";\n\n  @external-link: \"\\f08e\";\n\n  @signin: \"\\f090\";\n\n  @trophy: \"\\f091\";\n\n  @github-sign: \"\\f092\";\n\n  @upload-alt: \"\\f093\";\n\n  @lemon: \"\\f094\";\n\n  @phone: \"\\f095\";\n\n  @check-empty: \"\\f096\";\n\n  @bookmark-empty: \"\\f097\";\n\n  @phone-sign: \"\\f098\";\n\n  @twitter: \"\\f099\";\n\n  @facebook: \"\\f09a\";\n\n  @github: \"\\f09b\";\n\n  @unlock: \"\\f09c\";\n\n  @credit-card: \"\\f09d\";\n\n  @rss: \"\\f09e\";\n\n  @hdd: \"\\f0a0\";\n\n  @bullhorn: \"\\f0a1\";\n\n  @bell: \"\\f0a2\";\n\n  @certificate: \"\\f0a3\";\n\n  @hand-right: \"\\f0a4\";\n\n  @hand-left: \"\\f0a5\";\n\n  @hand-up: \"\\f0a6\";\n\n  @hand-down: \"\\f0a7\";\n\n  @circle-arrow-left: \"\\f0a8\";\n\n  @circle-arrow-right: \"\\f0a9\";\n\n  @circle-arrow-up: \"\\f0aa\";\n\n  @circle-arrow-down: \"\\f0ab\";\n\n  @globe: \"\\f0ac\";\n\n  @wrench: \"\\f0ad\";\n\n  @tasks: \"\\f0ae\";\n\n  @filter: \"\\f0b0\";\n\n  @briefcase: \"\\f0b1\";\n\n  @fullscreen: \"\\f0b2\";\n\n  @group: \"\\f0c0\";\n\n  @link: \"\\f0c1\";\n\n  @cloud: \"\\f0c2\";\n\n  @beaker: \"\\f0c3\";\n\n  @cut: \"\\f0c4\";\n\n  @copy: \"\\f0c5\";\n\n  @paper-clip: \"\\f0c6\";\n\n  @save: \"\\f0c7\";\n\n  @sign-blank: \"\\f0c8\";\n\n  @reorder: \"\\f0c9\";\n\n  @list-ul: \"\\f0ca\";\n\n  @list-ol: \"\\f0cb\";\n\n  @strikethrough: \"\\f0cc\";\n\n  @underline: \"\\f0cd\";\n\n  @table: \"\\f0ce\";\n\n  @magic: \"\\f0d0\";\n\n  @truck: \"\\f0d1\";\n\n  @pinterest: \"\\f0d2\";\n\n  @pinterest-sign: \"\\f0d3\";\n\n  @google-plus-sign: \"\\f0d4\";\n\n  @google-plus: \"\\f0d5\";\n\n  @money: \"\\f0d6\";\n\n  @caret-down: \"\\f0d7\";\n\n  @caret-up: \"\\f0d8\";\n\n  @caret-left: \"\\f0d9\";\n\n  @caret-right: \"\\f0da\";\n\n  @columns: \"\\f0db\";\n\n  @sort: \"\\f0dc\";\n\n  @sort-down: \"\\f0dd\";\n\n  @sort-up: \"\\f0de\";\n\n  @envelope: \"\\f0e0\";\n\n  @linkedin: \"\\f0e1\";\n\n  @undo: \"\\f0e2\";\n\n  @legal: \"\\f0e3\";\n\n  @dashboard: \"\\f0e4\";\n\n  @comment-alt: \"\\f0e5\";\n\n  @comments-alt: \"\\f0e6\";\n\n  @bolt: \"\\f0e7\";\n\n  @sitemap: \"\\f0e8\";\n\n  @umbrella: \"\\f0e9\";\n\n  @paste: \"\\f0ea\";\n\n  @lightbulb: \"\\f0eb\";\n\n  @exchange: \"\\f0ec\";\n\n  @cloud-download: \"\\f0ed\";\n\n  @cloud-upload: \"\\f0ee\";\n\n  @user-md: \"\\f0f0\";\n\n  @stethoscope: \"\\f0f1\";\n\n  @suitcase: \"\\f0f2\";\n\n  @bell-alt: \"\\f0f3\";\n\n  @coffee: \"\\f0f4\";\n\n  @food: \"\\f0f5\";\n\n  @file-text-alt: \"\\f0f6\";\n\n  @building: \"\\f0f7\";\n\n  @hospital: \"\\f0f8\";\n\n  @ambulance: \"\\f0f9\";\n\n  @medkit: \"\\f0fa\";\n\n  @fighter-jet: \"\\f0fb\";\n\n  @beer: \"\\f0fc\";\n\n  @h-sign: \"\\f0fd\";\n\n  @plus-sign-alt: \"\\f0fe\";\n\n  @double-angle-left: \"\\f100\";\n\n  @double-angle-right: \"\\f101\";\n\n  @double-angle-up: \"\\f102\";\n\n  @double-angle-down: \"\\f103\";\n\n  @angle-left: \"\\f104\";\n\n  @angle-right: \"\\f105\";\n\n  @angle-up: \"\\f106\";\n\n  @angle-down: \"\\f107\";\n\n  @desktop: \"\\f108\";\n\n  @laptop: \"\\f109\";\n\n  @tablet: \"\\f10a\";\n\n  @mobile-phone: \"\\f10b\";\n\n  @circle-blank: \"\\f10c\";\n\n  @quote-left: \"\\f10d\";\n\n  @quote-right: \"\\f10e\";\n\n  @spinner: \"\\f110\";\n\n  @circle: \"\\f111\";\n\n  @reply: \"\\f112\";\n\n  @github-alt: \"\\f113\";\n\n  @folder-close-alt: \"\\f114\";\n\n  @folder-open-alt: \"\\f115\";\n\n  @expand-alt: \"\\f116\";\n\n  @collapse-alt: \"\\f117\";\n\n  @smile: \"\\f118\";\n\n  @frown: \"\\f119\";\n\n  @meh: \"\\f11a\";\n\n  @gamepad: \"\\f11b\";\n\n  @keyboard: \"\\f11c\";\n\n  @flag-alt: \"\\f11d\";\n\n  @flag-checkered: \"\\f11e\";\n\n  @terminal: \"\\f120\";\n\n  @code: \"\\f121\";\n\n  @reply-all: \"\\f122\";\n\n  @mail-reply-all: \"\\f122\";\n\n  @star-half-empty: \"\\f123\";\n\n  @location-arrow: \"\\f124\";\n\n  @crop: \"\\f125\";\n\n  @code-fork: \"\\f126\";\n\n  @unlink: \"\\f127\";\n\n  @question: \"\\f128\";\n\n  @info: \"\\f129\";\n\n  @exclamation: \"\\f12a\";\n\n  @superscript: \"\\f12b\";\n\n  @subscript: \"\\f12c\";\n\n  @eraser: \"\\f12d\";\n\n  @puzzle-piece: \"\\f12e\";\n\n  @microphone: \"\\f130\";\n\n  @microphone-off: \"\\f131\";\n\n  @shield: \"\\f132\";\n\n  @calendar-empty: \"\\f133\";\n\n  @fire-extinguisher: \"\\f134\";\n\n  @rocket: \"\\f135\";\n\n  @maxcdn: \"\\f136\";\n\n  @chevron-sign-left: \"\\f137\";\n\n  @chevron-sign-right: \"\\f138\";\n\n  @chevron-sign-up: \"\\f139\";\n\n  @chevron-sign-down: \"\\f13a\";\n\n  @html5: \"\\f13b\";\n\n  @css3: \"\\f13c\";\n\n  @anchor: \"\\f13d\";\n\n  @unlock-alt: \"\\f13e\";\n\n  @bullseye: \"\\f140\";\n\n  @ellipsis-horizontal: \"\\f141\";\n\n  @ellipsis-vertical: \"\\f142\";\n\n  @rss-sign: \"\\f143\";\n\n  @play-sign: \"\\f144\";\n\n  @ticket: \"\\f145\";\n\n  @minus-sign-alt: \"\\f146\";\n\n  @check-minus: \"\\f147\";\n\n  @level-up: \"\\f148\";\n\n  @level-down: \"\\f149\";\n\n  @check-sign: \"\\f14a\";\n\n  @edit-sign: \"\\f14b\";\n\n  @external-link-sign: \"\\f14c\";\n\n  @share-sign: \"\\f14d\";\n\n  @compass: \"\\f14e\";\n\n  @collapse: \"\\f150\";\n\n  @collapse-top: \"\\f151\";\n\n  @expand: \"\\f152\";\n\n  @eur: \"\\f153\";\n\n  @gbp: \"\\f154\";\n\n  @usd: \"\\f155\";\n\n  @inr: \"\\f156\";\n\n  @jpy: \"\\f157\";\n\n  @cny: \"\\f158\";\n\n  @krw: \"\\f159\";\n\n  @btc: \"\\f15a\";\n\n  @file: \"\\f15b\";\n\n  @file-text: \"\\f15c\";\n\n  @sort-by-alphabet: \"\\f15d\";\n\n  @sort-by-alphabet-alt: \"\\f15e\";\n\n  @sort-by-attributes: \"\\f160\";\n\n  @sort-by-attributes-alt: \"\\f161\";\n\n  @sort-by-order: \"\\f162\";\n\n  @sort-by-order-alt: \"\\f163\";\n\n  @thumbs-up: \"\\f164\";\n\n  @thumbs-down: \"\\f165\";\n\n  @youtube-sign: \"\\f166\";\n\n  @youtube: \"\\f167\";\n\n  @xing: \"\\f168\";\n\n  @xing-sign: \"\\f169\";\n\n  @youtube-play: \"\\f16a\";\n\n  @dropbox: \"\\f16b\";\n\n  @stackexchange: \"\\f16c\";\n\n  @instagram: \"\\f16d\";\n\n  @flickr: \"\\f16e\";\n\n  @adn: \"\\f170\";\n\n  @bitbucket: \"\\f171\";\n\n  @bitbucket-sign: \"\\f172\";\n\n  @tumblr: \"\\f173\";\n\n  @tumblr-sign: \"\\f174\";\n\n  @long-arrow-down: \"\\f175\";\n\n  @long-arrow-up: \"\\f176\";\n\n  @long-arrow-left: \"\\f177\";\n\n  @long-arrow-right: \"\\f178\";\n\n  @apple: \"\\f179\";\n\n  @windows: \"\\f17a\";\n\n  @android: \"\\f17b\";\n\n  @linux: \"\\f17c\";\n\n  @dribble: \"\\f17d\";\n\n  @skype: \"\\f17e\";\n\n  @foursquare: \"\\f180\";\n\n  @trello: \"\\f181\";\n\n  @female: \"\\f182\";\n\n  @male: \"\\f183\";\n\n  @gittip: \"\\f184\";\n\n  @sun: \"\\f185\";\n\n  @moon: \"\\f186\";\n\n  @archive: \"\\f187\";\n\n  @bug: \"\\f188\";\n\n  @vk: \"\\f189\";\n\n  @weibo: \"\\f18a\";\n\n  @renren: \"\\f18b\";\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_bootstrap.scss",
    "content": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline;\n  width: auto;\n  height: auto;\n  line-height: normal;\n  vertical-align: baseline;\n  background-image: none;\n  background-position: 0% 0%;\n  background-repeat: repeat;\n  margin-top: 0;\n}\n\n/* more sprites.less reset */\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"] {\n  background-image: none;\n}\n\n\n/* keeps Bootstrap styles with and without icons the same */\n.btn, .nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    //    display: inline;\n    &.icon-large { line-height: .9em; }\n    &.icon-spin { display: inline-block; }\n  }\n}\n.nav-tabs, .nav-pills {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &, &.icon-large { line-height: .9em; }\n  }\n}\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .18em; }\n    }\n    &.icon-spin.icon-large { line-height: .8em; }\n  }\n}\n.btn.btn-small {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .25em; }\n    }\n  }\n}\n.btn.btn-large {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    margin-top: 0; // overrides bootstrap default\n    &.pull-left, &.pull-right {\n      &.icon-2x { margin-top: .05em; }\n    }\n    &.pull-left.icon-2x { margin-right: .2em; }\n    &.pull-right.icon-2x { margin-left: .2em; }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_core.scss",
    "content": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  @include icon-FontAwesome();\n}\n\n[class^=\"icon-\"]:before,\n[class*=\" icon-\"]:before {\n  text-decoration: inherit;\n  display: inline-block;\n  cursor: default;\n  speak: none;\n}\n\n/* makes the font 33% larger relative to the icon container */\n.icon-large:before {\n  vertical-align: -10%;\n  font-size: (4em/3);\n}\n\n/* makes sure icons active on rollover in links */\na {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    display: inline;\n  }\n}\n\n/* increased font size for icon-large */\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.icon-fixed-width {\n    display: inline-block;\n    width: (16em/14);\n    text-align: right;\n    padding-right: (4em/14);\n    &.icon-large {\n      width: (20em/14);\n    }\n  }\n}\n\n.icons-ul {\n  margin-left: $icons-li-width;\n  list-style-type: none;\n\n  > li { position: relative; }\n\n  .icon-li {\n    position: absolute;\n    left: -$icons-li-width;\n    width: $icons-li-width;\n    text-align: center;\n    line-height: inherit;\n  }\n}\n\n// allows usage of the hide class directly on font awesome icons\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.hide {\n    display: none;\n  }\n}\n\n.icon-muted { color: $iconMuted; }\n.icon-light { color: $iconLight; }\n.icon-dark { color: $iconDark; }\n\n// Icon Borders\n// -------------------------\n\n.icon-border {\n  border: solid 1px $borderColor;\n  padding: .2em .25em .15em;\n  @include border-radius(3px);\n}\n\n// Icon Sizes\n// -------------------------\n\n.icon-2x {\n  font-size: 2em;\n  &.icon-border {\n    border-width: 2px;\n    @include border-radius(4px);\n  }\n}\n.icon-3x {\n  font-size: 3em;\n  &.icon-border {\n    border-width: 3px;\n    @include border-radius(5px);\n  }\n}\n.icon-4x {\n  font-size: 4em;\n  &.icon-border {\n    border-width: 4px;\n    @include border-radius(6px);\n  }\n}\n\n.icon-5x {\n  font-size: 5em;\n  &.icon-border {\n    border-width: 5px;\n    @include border-radius(7px);\n  }\n}\n\n\n// Floats & Margins\n// -------------------------\n\n// Quick floats\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  &.pull-left {\n    margin-right: .3em;\n  }\n  &.pull-right {\n    margin-left: .3em;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_extras.scss",
    "content": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n@include icon-stack();\n\n/* Animated rotating icon */\n.icon-spin {\n  display: inline-block;\n  -moz-animation: spin 2s infinite linear;\n  -o-animation: spin 2s infinite linear;\n  -webkit-animation: spin 2s infinite linear;\n  animation: spin 2s infinite linear;\n}\na .icon-spin {\n  display: inline-block;\n  text-decoration: none;\n}\n\n@-moz-keyframes spin {\n  0% { -moz-transform: rotate(0deg); }\n  100% { -moz-transform: rotate(359deg); }\n}\n@-webkit-keyframes spin {\n  0% { -webkit-transform: rotate(0deg); }\n  100% { -webkit-transform: rotate(359deg); }\n}\n@-o-keyframes spin {\n  0% { -o-transform: rotate(0deg); }\n  100% { -o-transform: rotate(359deg); }\n}\n@-ms-keyframes spin {\n  0% { -ms-transform: rotate(0deg); }\n  100% { -ms-transform: rotate(359deg); }\n}\n@keyframes spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(359deg); }\n}\n\n/* Icon rotations and mirroring */\n.icon-rotate-90:before {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n}\n\n.icon-rotate-180:before {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n}\n\n.icon-rotate-270:before {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n}\n\n.icon-flip-horizontal:before {\n  -webkit-transform: scale(-1, 1);\n  -moz-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  -o-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.icon-flip-vertical:before {\n  -webkit-transform: scale(1, -1);\n  -moz-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  -o-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n/* ensure rotation occurs inside anchor tags */\na {\n  .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical {\n    &:before { display: inline-block; }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_icons.scss",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n * readers do not read off random characters that represent icons */\n\n.icon-glass:before { content: $glass; }\n.icon-music:before { content: $music; }\n.icon-search:before { content: $search; }\n.icon-envelope-alt:before { content: $envelope-alt; }\n.icon-heart:before { content: $heart; }\n.icon-star:before { content: $star; }\n.icon-star-empty:before { content: $star-empty; }\n.icon-user:before { content: $user; }\n.icon-film:before { content: $film; }\n.icon-th-large:before { content: $th-large; }\n.icon-th:before { content: $th; }\n.icon-th-list:before { content: $th-list; }\n.icon-ok:before { content: $ok; }\n.icon-remove:before { content: $remove; }\n.icon-zoom-in:before { content: $zoom-in; }\n.icon-zoom-out:before { content: $zoom-out; }\n.icon-power-off:before,\n.icon-off:before { content: $off; }\n.icon-signal:before { content: $signal; }\n.icon-cog:before { content: $cog; }\n.icon-trash:before { content: $trash; }\n.icon-home:before { content: $home; }\n.icon-file-alt:before { content: $file-alt; }\n.icon-time:before { content: $time; }\n.icon-road:before { content: $road; }\n.icon-download-alt:before { content: $download-alt; }\n.icon-download:before { content: $download; }\n.icon-upload:before { content: $upload; }\n.icon-inbox:before { content: $inbox; }\n.icon-play-circle:before { content: $play-circle; }\n.icon-rotate-right:before,\n.icon-repeat:before { content: $repeat; }\n.icon-refresh:before { content: $refresh; }\n.icon-list-alt:before { content: $list-alt; }\n.icon-lock:before { content: $lock; }\n.icon-flag:before { content: $flag; }\n.icon-headphones:before { content: $headphones; }\n.icon-volume-off:before { content: $volume-off; }\n.icon-volume-down:before { content: $volume-down; }\n.icon-volume-up:before { content: $volume-up; }\n.icon-qrcode:before { content: $qrcode; }\n.icon-barcode:before { content: $barcode; }\n.icon-tag:before { content: $tag; }\n.icon-tags:before { content: $tags; }\n.icon-book:before { content: $book; }\n.icon-bookmark:before { content: $bookmark; }\n.icon-print:before { content: $print; }\n.icon-camera:before { content: $camera; }\n.icon-font:before { content: $font; }\n.icon-bold:before { content: $bold; }\n.icon-italic:before { content: $italic; }\n.icon-text-height:before { content: $text-height; }\n.icon-text-width:before { content: $text-width; }\n.icon-align-left:before { content: $align-left; }\n.icon-align-center:before { content: $align-center; }\n.icon-align-right:before { content: $align-right; }\n.icon-align-justify:before { content: $align-justify; }\n.icon-list:before { content: $list; }\n.icon-indent-left:before { content: $indent-left; }\n.icon-indent-right:before { content: $indent-right; }\n.icon-facetime-video:before { content: $facetime-video; }\n.icon-picture:before { content: $picture; }\n.icon-pencil:before { content: $pencil; }\n.icon-map-marker:before { content: $map-marker; }\n.icon-adjust:before { content: $adjust; }\n.icon-tint:before { content: $tint; }\n.icon-edit:before { content: $edit; }\n.icon-share:before { content: $share; }\n.icon-check:before { content: $check; }\n.icon-move:before { content: $move; }\n.icon-step-backward:before { content: $step-backward; }\n.icon-fast-backward:before { content: $fast-backward; }\n.icon-backward:before { content: $backward; }\n.icon-play:before { content: $play; }\n.icon-pause:before { content: $pause; }\n.icon-stop:before { content: $stop; }\n.icon-forward:before { content: $forward; }\n.icon-fast-forward:before { content: $fast-forward; }\n.icon-step-forward:before { content: $step-forward; }\n.icon-eject:before { content: $eject; }\n.icon-chevron-left:before { content: $chevron-left; }\n.icon-chevron-right:before { content: $chevron-right; }\n.icon-plus-sign:before { content: $plus-sign; }\n.icon-minus-sign:before { content: $minus-sign; }\n.icon-remove-sign:before { content: $remove-sign; }\n.icon-ok-sign:before { content: $ok-sign; }\n.icon-question-sign:before { content: $question-sign; }\n.icon-info-sign:before { content: $info-sign; }\n.icon-screenshot:before { content: $screenshot; }\n.icon-remove-circle:before { content: $remove-circle; }\n.icon-ok-circle:before { content: $ok-circle; }\n.icon-ban-circle:before { content: $ban-circle; }\n.icon-arrow-left:before { content: $arrow-left; }\n.icon-arrow-right:before { content: $arrow-right; }\n.icon-arrow-up:before { content: $arrow-up; }\n.icon-arrow-down:before { content: $arrow-down; }\n.icon-mail-forward:before,\n.icon-share-alt:before { content: $share-alt; }\n.icon-resize-full:before { content: $resize-full; }\n.icon-resize-small:before { content: $resize-small; }\n.icon-plus:before { content: $plus; }\n.icon-minus:before { content: $minus; }\n.icon-asterisk:before { content: $asterisk; }\n.icon-exclamation-sign:before { content: $exclamation-sign; }\n.icon-gift:before { content: $gift; }\n.icon-leaf:before { content: $leaf; }\n.icon-fire:before { content: $fire; }\n.icon-eye-open:before { content: $eye-open; }\n.icon-eye-close:before { content: $eye-close; }\n.icon-warning-sign:before { content: $warning-sign; }\n.icon-plane:before { content: $plane; }\n.icon-calendar:before { content: $calendar; }\n.icon-random:before { content: $random; }\n.icon-comment:before { content: $comment; }\n.icon-magnet:before { content: $magnet; }\n.icon-chevron-up:before { content: $chevron-up; }\n.icon-chevron-down:before { content: $chevron-down; }\n.icon-retweet:before { content: $retweet; }\n.icon-shopping-cart:before { content: $shopping-cart; }\n.icon-folder-close:before { content: $folder-close; }\n.icon-folder-open:before { content: $folder-open; }\n.icon-resize-vertical:before { content: $resize-vertical; }\n.icon-resize-horizontal:before { content: $resize-horizontal; }\n.icon-bar-chart:before { content: $bar-chart; }\n.icon-twitter-sign:before { content: $twitter-sign; }\n.icon-facebook-sign:before { content: $facebook-sign; }\n.icon-camera-retro:before { content: $camera-retro; }\n.icon-key:before { content: $key; }\n.icon-cogs:before { content: $cogs; }\n.icon-comments:before { content: $comments; }\n.icon-thumbs-up-alt:before { content: $thumbs-up-alt; }\n.icon-thumbs-down-alt:before { content: $thumbs-down-alt; }\n.icon-star-half:before { content: $star-half; }\n.icon-heart-empty:before { content: $heart-empty; }\n.icon-signout:before { content: $signout; }\n.icon-linkedin-sign:before { content: $linkedin-sign; }\n.icon-pushpin:before { content: $pushpin; }\n.icon-external-link:before { content: $external-link; }\n.icon-signin:before { content: $signin; }\n.icon-trophy:before { content: $trophy; }\n.icon-github-sign:before { content: $github-sign; }\n.icon-upload-alt:before { content: $upload-alt; }\n.icon-lemon:before { content: $lemon; }\n.icon-phone:before { content: $phone; }\n.icon-unchecked:before,\n.icon-check-empty:before { content: $check-empty; }\n.icon-bookmark-empty:before { content: $bookmark-empty; }\n.icon-phone-sign:before { content: $phone-sign; }\n.icon-twitter:before { content: $twitter; }\n.icon-facebook:before { content: $facebook; }\n.icon-github:before { content: $github; }\n.icon-unlock:before { content: $unlock; }\n.icon-credit-card:before { content: $credit-card; }\n.icon-rss:before { content: $rss; }\n.icon-hdd:before { content: $hdd; }\n.icon-bullhorn:before { content: $bullhorn; }\n.icon-bell:before { content: $bell; }\n.icon-certificate:before { content: $certificate; }\n.icon-hand-right:before { content: $hand-right; }\n.icon-hand-left:before { content: $hand-left; }\n.icon-hand-up:before { content: $hand-up; }\n.icon-hand-down:before { content: $hand-down; }\n.icon-circle-arrow-left:before { content: $circle-arrow-left; }\n.icon-circle-arrow-right:before { content: $circle-arrow-right; }\n.icon-circle-arrow-up:before { content: $circle-arrow-up; }\n.icon-circle-arrow-down:before { content: $circle-arrow-down; }\n.icon-globe:before { content: $globe; }\n.icon-wrench:before { content: $wrench; }\n.icon-tasks:before { content: $tasks; }\n.icon-filter:before { content: $filter; }\n.icon-briefcase:before { content: $briefcase; }\n.icon-fullscreen:before { content: $fullscreen; }\n.icon-group:before { content: $group; }\n.icon-link:before { content: $link; }\n.icon-cloud:before { content: $cloud; }\n.icon-beaker:before { content: $beaker; }\n.icon-cut:before { content: $cut; }\n.icon-copy:before { content: $copy; }\n.icon-paperclip:before,\n.icon-paper-clip:before { content: $paper-clip; }\n.icon-save:before { content: $save; }\n.icon-sign-blank:before { content: $sign-blank; }\n.icon-reorder:before { content: $reorder; }\n.icon-list-ul:before { content: $list-ul; }\n.icon-list-ol:before { content: $list-ol; }\n.icon-strikethrough:before { content: $strikethrough; }\n.icon-underline:before { content: $underline; }\n.icon-table:before { content: $table; }\n.icon-magic:before { content: $magic; }\n.icon-truck:before { content: $truck; }\n.icon-pinterest:before { content: $pinterest; }\n.icon-pinterest-sign:before { content: $pinterest-sign; }\n.icon-google-plus-sign:before { content: $google-plus-sign; }\n.icon-google-plus:before { content: $google-plus; }\n.icon-money:before { content: $money; }\n.icon-caret-down:before { content: $caret-down; }\n.icon-caret-up:before { content: $caret-up; }\n.icon-caret-left:before { content: $caret-left; }\n.icon-caret-right:before { content: $caret-right; }\n.icon-columns:before { content: $columns; }\n.icon-sort:before { content: $sort; }\n.icon-sort-down:before { content: $sort-down; }\n.icon-sort-up:before { content: $sort-up; }\n.icon-envelope:before { content: $envelope; }\n.icon-linkedin:before { content: $linkedin; }\n.icon-rotate-left:before,\n.icon-undo:before { content: $undo; }\n.icon-legal:before { content: $legal; }\n.icon-dashboard:before { content: $dashboard; }\n.icon-comment-alt:before { content: $comment-alt; }\n.icon-comments-alt:before { content: $comments-alt; }\n.icon-bolt:before { content: $bolt; }\n.icon-sitemap:before { content: $sitemap; }\n.icon-umbrella:before { content: $umbrella; }\n.icon-paste:before { content: $paste; }\n.icon-lightbulb:before { content: $lightbulb; }\n.icon-exchange:before { content: $exchange; }\n.icon-cloud-download:before { content: $cloud-download; }\n.icon-cloud-upload:before { content: $cloud-upload; }\n.icon-user-md:before { content: $user-md; }\n.icon-stethoscope:before { content: $stethoscope; }\n.icon-suitcase:before { content: $suitcase; }\n.icon-bell-alt:before { content: $bell-alt; }\n.icon-coffee:before { content: $coffee; }\n.icon-food:before { content: $food; }\n.icon-file-text-alt:before { content: $file-text-alt; }\n.icon-building:before { content: $building; }\n.icon-hospital:before { content: $hospital; }\n.icon-ambulance:before { content: $ambulance; }\n.icon-medkit:before { content: $medkit; }\n.icon-fighter-jet:before { content: $fighter-jet; }\n.icon-beer:before { content: $beer; }\n.icon-h-sign:before { content: $h-sign; }\n.icon-plus-sign-alt:before { content: $plus-sign-alt; }\n.icon-double-angle-left:before { content: $double-angle-left; }\n.icon-double-angle-right:before { content: $double-angle-right; }\n.icon-double-angle-up:before { content: $double-angle-up; }\n.icon-double-angle-down:before { content: $double-angle-down; }\n.icon-angle-left:before { content: $angle-left; }\n.icon-angle-right:before { content: $angle-right; }\n.icon-angle-up:before { content: $angle-up; }\n.icon-angle-down:before { content: $angle-down; }\n.icon-desktop:before { content: $desktop; }\n.icon-laptop:before { content: $laptop; }\n.icon-tablet:before { content: $tablet; }\n.icon-mobile-phone:before { content: $mobile-phone; }\n.icon-circle-blank:before { content: $circle-blank; }\n.icon-quote-left:before { content: $quote-left; }\n.icon-quote-right:before { content: $quote-right; }\n.icon-spinner:before { content: $spinner; }\n.icon-circle:before { content: $circle; }\n.icon-mail-reply:before,\n.icon-reply:before { content: $reply; }\n.icon-github-alt:before { content: $github-alt; }\n.icon-folder-close-alt:before { content: $folder-close-alt; }\n.icon-folder-open-alt:before { content: $folder-open-alt; }\n.icon-expand-alt:before { content: $expand-alt; }\n.icon-collapse-alt:before { content: $collapse-alt; }\n.icon-smile:before { content: $smile; }\n.icon-frown:before { content: $frown; }\n.icon-meh:before { content: $meh; }\n.icon-gamepad:before { content: $gamepad; }\n.icon-keyboard:before { content: $keyboard; }\n.icon-flag-alt:before { content: $flag-alt; }\n.icon-flag-checkered:before { content: $flag-checkered; }\n.icon-terminal:before { content: $terminal; }\n.icon-code:before { content: $code; }\n.icon-reply-all:before { content: $reply-all; }\n.icon-mail-reply-all:before { content: $mail-reply-all; }\n.icon-star-half-full:before,\n.icon-star-half-empty:before { content: $star-half-empty; }\n.icon-location-arrow:before { content: $location-arrow; }\n.icon-crop:before { content: $crop; }\n.icon-code-fork:before { content: $code-fork; }\n.icon-unlink:before { content: $unlink; }\n.icon-question:before { content: $question; }\n.icon-info:before { content: $info; }\n.icon-exclamation:before { content: $exclamation; }\n.icon-superscript:before { content: $superscript; }\n.icon-subscript:before { content: $subscript; }\n.icon-eraser:before { content: $eraser; }\n.icon-puzzle-piece:before { content: $puzzle-piece; }\n.icon-microphone:before { content: $microphone; }\n.icon-microphone-off:before { content: $microphone-off; }\n.icon-shield:before { content: $shield; }\n.icon-calendar-empty:before { content: $calendar-empty; }\n.icon-fire-extinguisher:before { content: $fire-extinguisher; }\n.icon-rocket:before { content: $rocket; }\n.icon-maxcdn:before { content: $maxcdn; }\n.icon-chevron-sign-left:before { content: $chevron-sign-left; }\n.icon-chevron-sign-right:before { content: $chevron-sign-right; }\n.icon-chevron-sign-up:before { content: $chevron-sign-up; }\n.icon-chevron-sign-down:before { content: $chevron-sign-down; }\n.icon-html5:before { content: $html5; }\n.icon-css3:before { content: $css3; }\n.icon-anchor:before { content: $anchor; }\n.icon-unlock-alt:before { content: $unlock-alt; }\n.icon-bullseye:before { content: $bullseye; }\n.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; }\n.icon-ellipsis-vertical:before { content: $ellipsis-vertical; }\n.icon-rss-sign:before { content: $rss-sign; }\n.icon-play-sign:before { content: $play-sign; }\n.icon-ticket:before { content: $ticket; }\n.icon-minus-sign-alt:before { content: $minus-sign-alt; }\n.icon-check-minus:before { content: $check-minus; }\n.icon-level-up:before { content: $level-up; }\n.icon-level-down:before { content: $level-down; }\n.icon-check-sign:before { content: $check-sign; }\n.icon-edit-sign:before { content: $edit-sign; }\n.icon-external-link-sign:before { content: $external-link-sign; }\n.icon-share-sign:before { content: $share-sign; }\n.icon-compass:before { content: $compass; }\n.icon-collapse:before { content: $collapse; }\n.icon-collapse-top:before { content: $collapse-top; }\n.icon-expand:before { content: $expand; }\n.icon-euro:before,\n.icon-eur:before { content: $eur; }\n.icon-gbp:before { content: $gbp; }\n.icon-dollar:before,\n.icon-usd:before { content: $usd; }\n.icon-rupee:before,\n.icon-inr:before { content: $inr; }\n.icon-yen:before,\n.icon-jpy:before { content: $jpy; }\n.icon-renminbi:before,\n.icon-cny:before { content: $cny; }\n.icon-won:before,\n.icon-krw:before { content: $krw; }\n.icon-bitcoin:before,\n.icon-btc:before { content: $btc; }\n.icon-file:before { content: $file; }\n.icon-file-text:before { content: $file-text; }\n.icon-sort-by-alphabet:before { content: $sort-by-alphabet; }\n.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; }\n.icon-sort-by-attributes:before { content: $sort-by-attributes; }\n.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; }\n.icon-sort-by-order:before { content: $sort-by-order; }\n.icon-sort-by-order-alt:before { content: $sort-by-order-alt; }\n.icon-thumbs-up:before { content: $thumbs-up; }\n.icon-thumbs-down:before { content: $thumbs-down; }\n.icon-youtube-sign:before { content: $youtube-sign; }\n.icon-youtube:before { content: $youtube; }\n.icon-xing:before { content: $xing; }\n.icon-xing-sign:before { content: $xing-sign; }\n.icon-youtube-play:before { content: $youtube-play; }\n.icon-dropbox:before { content: $dropbox; }\n.icon-stackexchange:before { content: $stackexchange; }\n.icon-instagram:before { content: $instagram; }\n.icon-flickr:before { content: $flickr; }\n.icon-adn:before { content: $adn; }\n.icon-bitbucket:before { content: $bitbucket; }\n.icon-bitbucket-sign:before { content: $bitbucket-sign; }\n.icon-tumblr:before { content: $tumblr; }\n.icon-tumblr-sign:before { content: $tumblr-sign; }\n.icon-long-arrow-down:before { content: $long-arrow-down; }\n.icon-long-arrow-up:before { content: $long-arrow-up; }\n.icon-long-arrow-left:before { content: $long-arrow-left; }\n.icon-long-arrow-right:before { content: $long-arrow-right; }\n.icon-apple:before { content: $apple; }\n.icon-windows:before { content: $windows; }\n.icon-android:before { content: $android; }\n.icon-linux:before { content: $linux; }\n.icon-dribble:before { content: $dribble; }\n.icon-skype:before { content: $skype; }\n.icon-foursquare:before { content: $foursquare; }\n.icon-trello:before { content: $trello; }\n.icon-female:before { content: $female; }\n.icon-male:before { content: $male; }\n.icon-gittip:before { content: $gittip; }\n.icon-sun:before { content: $sun; }\n.icon-moon:before { content: $moon; }\n.icon-archive:before { content: $archive; }\n.icon-bug:before { content: $bug; }\n.icon-vk:before { content: $vk; }\n.icon-weibo:before { content: $weibo; }\n.icon-renren:before { content: $renren; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_mixins.scss",
    "content": "// Mixins\n// --------------------------\n\n@mixin icon($icon) {\n  @include icon-FontAwesome();\n  content: $icon;\n}\n\n@mixin icon-FontAwesome() {\n  font-family: FontAwesome;\n  font-weight: normal;\n  font-style: normal;\n  text-decoration: inherit;\n  -webkit-font-smoothing: antialiased;\n  *margin-right: .3em; // fixes ie7 issues\n}\n\n@mixin border-radius($radius) {\n  -webkit-border-radius: $radius;\n  -moz-border-radius: $radius;\n  border-radius: $radius;\n}\n\n@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) {\n  .icon-stack {\n    position: relative;\n    display: inline-block;\n    width: $width;\n    height: $height;\n    line-height: $width;\n    vertical-align: -35%;\n    [class^=\"icon-\"],\n    [class*=\" icon-\"] {\n      display: block;\n      text-align: center;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      font-size: $top-font-size;\n      line-height: inherit;\n      *line-height: $height;\n    }\n    .icon-stack-base {\n      font-size: $base-font-size;\n      *line-height: #{$height / $base-font-size}em;\n    }\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_path.scss",
    "content": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}');\n  src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'),\n    url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg');\n//  src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts\n  font-weight: normal;\n  font-style: normal;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/_variables.scss",
    "content": "// Variables\n// --------------------------\n\n$FontAwesomePath: \"../font\" !default;\n$FontAwesomeVersion: \"3.2.0\" !default;\n$borderColor: #eeeeee !default;\n$iconMuted: #eeeeee !default;\n$iconLight: white !default;\n$iconDark: #333333 !default;\n$icons-li-width: (30em/14);\n\n\n$glass: \"\\f000\";\n\n$music: \"\\f001\";\n\n$search: \"\\f002\";\n\n$envelope-alt: \"\\f003\";\n\n$heart: \"\\f004\";\n\n$star: \"\\f005\";\n\n$star-empty: \"\\f006\";\n\n$user: \"\\f007\";\n\n$film: \"\\f008\";\n\n$th-large: \"\\f009\";\n\n$th: \"\\f00a\";\n\n$th-list: \"\\f00b\";\n\n$ok: \"\\f00c\";\n\n$remove: \"\\f00d\";\n\n$zoom-in: \"\\f00e\";\n\n$zoom-out: \"\\f010\";\n\n$off: \"\\f011\";\n\n$signal: \"\\f012\";\n\n$cog: \"\\f013\";\n\n$trash: \"\\f014\";\n\n$home: \"\\f015\";\n\n$file-alt: \"\\f016\";\n\n$time: \"\\f017\";\n\n$road: \"\\f018\";\n\n$download-alt: \"\\f019\";\n\n$download: \"\\f01a\";\n\n$upload: \"\\f01b\";\n\n$inbox: \"\\f01c\";\n\n$play-circle: \"\\f01d\";\n\n$repeat: \"\\f01e\";\n\n$refresh: \"\\f021\";\n\n$list-alt: \"\\f022\";\n\n$lock: \"\\f023\";\n\n$flag: \"\\f024\";\n\n$headphones: \"\\f025\";\n\n$volume-off: \"\\f026\";\n\n$volume-down: \"\\f027\";\n\n$volume-up: \"\\f028\";\n\n$qrcode: \"\\f029\";\n\n$barcode: \"\\f02a\";\n\n$tag: \"\\f02b\";\n\n$tags: \"\\f02c\";\n\n$book: \"\\f02d\";\n\n$bookmark: \"\\f02e\";\n\n$print: \"\\f02f\";\n\n$camera: \"\\f030\";\n\n$font: \"\\f031\";\n\n$bold: \"\\f032\";\n\n$italic: \"\\f033\";\n\n$text-height: \"\\f034\";\n\n$text-width: \"\\f035\";\n\n$align-left: \"\\f036\";\n\n$align-center: \"\\f037\";\n\n$align-right: \"\\f038\";\n\n$align-justify: \"\\f039\";\n\n$list: \"\\f03a\";\n\n$indent-left: \"\\f03b\";\n\n$indent-right: \"\\f03c\";\n\n$facetime-video: \"\\f03d\";\n\n$picture: \"\\f03e\";\n\n$pencil: \"\\f040\";\n\n$map-marker: \"\\f041\";\n\n$adjust: \"\\f042\";\n\n$tint: \"\\f043\";\n\n$edit: \"\\f044\";\n\n$share: \"\\f045\";\n\n$check: \"\\f046\";\n\n$move: \"\\f047\";\n\n$step-backward: \"\\f048\";\n\n$fast-backward: \"\\f049\";\n\n$backward: \"\\f04a\";\n\n$play: \"\\f04b\";\n\n$pause: \"\\f04c\";\n\n$stop: \"\\f04d\";\n\n$forward: \"\\f04e\";\n\n$fast-forward: \"\\f050\";\n\n$step-forward: \"\\f051\";\n\n$eject: \"\\f052\";\n\n$chevron-left: \"\\f053\";\n\n$chevron-right: \"\\f054\";\n\n$plus-sign: \"\\f055\";\n\n$minus-sign: \"\\f056\";\n\n$remove-sign: \"\\f057\";\n\n$ok-sign: \"\\f058\";\n\n$question-sign: \"\\f059\";\n\n$info-sign: \"\\f05a\";\n\n$screenshot: \"\\f05b\";\n\n$remove-circle: \"\\f05c\";\n\n$ok-circle: \"\\f05d\";\n\n$ban-circle: \"\\f05e\";\n\n$arrow-left: \"\\f060\";\n\n$arrow-right: \"\\f061\";\n\n$arrow-up: \"\\f062\";\n\n$arrow-down: \"\\f063\";\n\n$share-alt: \"\\f064\";\n\n$resize-full: \"\\f065\";\n\n$resize-small: \"\\f066\";\n\n$plus: \"\\f067\";\n\n$minus: \"\\f068\";\n\n$asterisk: \"\\f069\";\n\n$exclamation-sign: \"\\f06a\";\n\n$gift: \"\\f06b\";\n\n$leaf: \"\\f06c\";\n\n$fire: \"\\f06d\";\n\n$eye-open: \"\\f06e\";\n\n$eye-close: \"\\f070\";\n\n$warning-sign: \"\\f071\";\n\n$plane: \"\\f072\";\n\n$calendar: \"\\f073\";\n\n$random: \"\\f074\";\n\n$comment: \"\\f075\";\n\n$magnet: \"\\f076\";\n\n$chevron-up: \"\\f077\";\n\n$chevron-down: \"\\f078\";\n\n$retweet: \"\\f079\";\n\n$shopping-cart: \"\\f07a\";\n\n$folder-close: \"\\f07b\";\n\n$folder-open: \"\\f07c\";\n\n$resize-vertical: \"\\f07d\";\n\n$resize-horizontal: \"\\f07e\";\n\n$bar-chart: \"\\f080\";\n\n$twitter-sign: \"\\f081\";\n\n$facebook-sign: \"\\f082\";\n\n$camera-retro: \"\\f083\";\n\n$key: \"\\f084\";\n\n$cogs: \"\\f085\";\n\n$comments: \"\\f086\";\n\n$thumbs-up-alt: \"\\f087\";\n\n$thumbs-down-alt: \"\\f088\";\n\n$star-half: \"\\f089\";\n\n$heart-empty: \"\\f08a\";\n\n$signout: \"\\f08b\";\n\n$linkedin-sign: \"\\f08c\";\n\n$pushpin: \"\\f08d\";\n\n$external-link: \"\\f08e\";\n\n$signin: \"\\f090\";\n\n$trophy: \"\\f091\";\n\n$github-sign: \"\\f092\";\n\n$upload-alt: \"\\f093\";\n\n$lemon: \"\\f094\";\n\n$phone: \"\\f095\";\n\n$check-empty: \"\\f096\";\n\n$bookmark-empty: \"\\f097\";\n\n$phone-sign: \"\\f098\";\n\n$twitter: \"\\f099\";\n\n$facebook: \"\\f09a\";\n\n$github: \"\\f09b\";\n\n$unlock: \"\\f09c\";\n\n$credit-card: \"\\f09d\";\n\n$rss: \"\\f09e\";\n\n$hdd: \"\\f0a0\";\n\n$bullhorn: \"\\f0a1\";\n\n$bell: \"\\f0a2\";\n\n$certificate: \"\\f0a3\";\n\n$hand-right: \"\\f0a4\";\n\n$hand-left: \"\\f0a5\";\n\n$hand-up: \"\\f0a6\";\n\n$hand-down: \"\\f0a7\";\n\n$circle-arrow-left: \"\\f0a8\";\n\n$circle-arrow-right: \"\\f0a9\";\n\n$circle-arrow-up: \"\\f0aa\";\n\n$circle-arrow-down: \"\\f0ab\";\n\n$globe: \"\\f0ac\";\n\n$wrench: \"\\f0ad\";\n\n$tasks: \"\\f0ae\";\n\n$filter: \"\\f0b0\";\n\n$briefcase: \"\\f0b1\";\n\n$fullscreen: \"\\f0b2\";\n\n$group: \"\\f0c0\";\n\n$link: \"\\f0c1\";\n\n$cloud: \"\\f0c2\";\n\n$beaker: \"\\f0c3\";\n\n$cut: \"\\f0c4\";\n\n$copy: \"\\f0c5\";\n\n$paper-clip: \"\\f0c6\";\n\n$save: \"\\f0c7\";\n\n$sign-blank: \"\\f0c8\";\n\n$reorder: \"\\f0c9\";\n\n$list-ul: \"\\f0ca\";\n\n$list-ol: \"\\f0cb\";\n\n$strikethrough: \"\\f0cc\";\n\n$underline: \"\\f0cd\";\n\n$table: \"\\f0ce\";\n\n$magic: \"\\f0d0\";\n\n$truck: \"\\f0d1\";\n\n$pinterest: \"\\f0d2\";\n\n$pinterest-sign: \"\\f0d3\";\n\n$google-plus-sign: \"\\f0d4\";\n\n$google-plus: \"\\f0d5\";\n\n$money: \"\\f0d6\";\n\n$caret-down: \"\\f0d7\";\n\n$caret-up: \"\\f0d8\";\n\n$caret-left: \"\\f0d9\";\n\n$caret-right: \"\\f0da\";\n\n$columns: \"\\f0db\";\n\n$sort: \"\\f0dc\";\n\n$sort-down: \"\\f0dd\";\n\n$sort-up: \"\\f0de\";\n\n$envelope: \"\\f0e0\";\n\n$linkedin: \"\\f0e1\";\n\n$undo: \"\\f0e2\";\n\n$legal: \"\\f0e3\";\n\n$dashboard: \"\\f0e4\";\n\n$comment-alt: \"\\f0e5\";\n\n$comments-alt: \"\\f0e6\";\n\n$bolt: \"\\f0e7\";\n\n$sitemap: \"\\f0e8\";\n\n$umbrella: \"\\f0e9\";\n\n$paste: \"\\f0ea\";\n\n$lightbulb: \"\\f0eb\";\n\n$exchange: \"\\f0ec\";\n\n$cloud-download: \"\\f0ed\";\n\n$cloud-upload: \"\\f0ee\";\n\n$user-md: \"\\f0f0\";\n\n$stethoscope: \"\\f0f1\";\n\n$suitcase: \"\\f0f2\";\n\n$bell-alt: \"\\f0f3\";\n\n$coffee: \"\\f0f4\";\n\n$food: \"\\f0f5\";\n\n$file-text-alt: \"\\f0f6\";\n\n$building: \"\\f0f7\";\n\n$hospital: \"\\f0f8\";\n\n$ambulance: \"\\f0f9\";\n\n$medkit: \"\\f0fa\";\n\n$fighter-jet: \"\\f0fb\";\n\n$beer: \"\\f0fc\";\n\n$h-sign: \"\\f0fd\";\n\n$plus-sign-alt: \"\\f0fe\";\n\n$double-angle-left: \"\\f100\";\n\n$double-angle-right: \"\\f101\";\n\n$double-angle-up: \"\\f102\";\n\n$double-angle-down: \"\\f103\";\n\n$angle-left: \"\\f104\";\n\n$angle-right: \"\\f105\";\n\n$angle-up: \"\\f106\";\n\n$angle-down: \"\\f107\";\n\n$desktop: \"\\f108\";\n\n$laptop: \"\\f109\";\n\n$tablet: \"\\f10a\";\n\n$mobile-phone: \"\\f10b\";\n\n$circle-blank: \"\\f10c\";\n\n$quote-left: \"\\f10d\";\n\n$quote-right: \"\\f10e\";\n\n$spinner: \"\\f110\";\n\n$circle: \"\\f111\";\n\n$reply: \"\\f112\";\n\n$github-alt: \"\\f113\";\n\n$folder-close-alt: \"\\f114\";\n\n$folder-open-alt: \"\\f115\";\n\n$expand-alt: \"\\f116\";\n\n$collapse-alt: \"\\f117\";\n\n$smile: \"\\f118\";\n\n$frown: \"\\f119\";\n\n$meh: \"\\f11a\";\n\n$gamepad: \"\\f11b\";\n\n$keyboard: \"\\f11c\";\n\n$flag-alt: \"\\f11d\";\n\n$flag-checkered: \"\\f11e\";\n\n$terminal: \"\\f120\";\n\n$code: \"\\f121\";\n\n$reply-all: \"\\f122\";\n\n$mail-reply-all: \"\\f122\";\n\n$star-half-empty: \"\\f123\";\n\n$location-arrow: \"\\f124\";\n\n$crop: \"\\f125\";\n\n$code-fork: \"\\f126\";\n\n$unlink: \"\\f127\";\n\n$question: \"\\f128\";\n\n$info: \"\\f129\";\n\n$exclamation: \"\\f12a\";\n\n$superscript: \"\\f12b\";\n\n$subscript: \"\\f12c\";\n\n$eraser: \"\\f12d\";\n\n$puzzle-piece: \"\\f12e\";\n\n$microphone: \"\\f130\";\n\n$microphone-off: \"\\f131\";\n\n$shield: \"\\f132\";\n\n$calendar-empty: \"\\f133\";\n\n$fire-extinguisher: \"\\f134\";\n\n$rocket: \"\\f135\";\n\n$maxcdn: \"\\f136\";\n\n$chevron-sign-left: \"\\f137\";\n\n$chevron-sign-right: \"\\f138\";\n\n$chevron-sign-up: \"\\f139\";\n\n$chevron-sign-down: \"\\f13a\";\n\n$html5: \"\\f13b\";\n\n$css3: \"\\f13c\";\n\n$anchor: \"\\f13d\";\n\n$unlock-alt: \"\\f13e\";\n\n$bullseye: \"\\f140\";\n\n$ellipsis-horizontal: \"\\f141\";\n\n$ellipsis-vertical: \"\\f142\";\n\n$rss-sign: \"\\f143\";\n\n$play-sign: \"\\f144\";\n\n$ticket: \"\\f145\";\n\n$minus-sign-alt: \"\\f146\";\n\n$check-minus: \"\\f147\";\n\n$level-up: \"\\f148\";\n\n$level-down: \"\\f149\";\n\n$check-sign: \"\\f14a\";\n\n$edit-sign: \"\\f14b\";\n\n$external-link-sign: \"\\f14c\";\n\n$share-sign: \"\\f14d\";\n\n$compass: \"\\f14e\";\n\n$collapse: \"\\f150\";\n\n$collapse-top: \"\\f151\";\n\n$expand: \"\\f152\";\n\n$eur: \"\\f153\";\n\n$gbp: \"\\f154\";\n\n$usd: \"\\f155\";\n\n$inr: \"\\f156\";\n\n$jpy: \"\\f157\";\n\n$cny: \"\\f158\";\n\n$krw: \"\\f159\";\n\n$btc: \"\\f15a\";\n\n$file: \"\\f15b\";\n\n$file-text: \"\\f15c\";\n\n$sort-by-alphabet: \"\\f15d\";\n\n$sort-by-alphabet-alt: \"\\f15e\";\n\n$sort-by-attributes: \"\\f160\";\n\n$sort-by-attributes-alt: \"\\f161\";\n\n$sort-by-order: \"\\f162\";\n\n$sort-by-order-alt: \"\\f163\";\n\n$thumbs-up: \"\\f164\";\n\n$thumbs-down: \"\\f165\";\n\n$youtube-sign: \"\\f166\";\n\n$youtube: \"\\f167\";\n\n$xing: \"\\f168\";\n\n$xing-sign: \"\\f169\";\n\n$youtube-play: \"\\f16a\";\n\n$dropbox: \"\\f16b\";\n\n$stackexchange: \"\\f16c\";\n\n$instagram: \"\\f16d\";\n\n$flickr: \"\\f16e\";\n\n$adn: \"\\f170\";\n\n$bitbucket: \"\\f171\";\n\n$bitbucket-sign: \"\\f172\";\n\n$tumblr: \"\\f173\";\n\n$tumblr-sign: \"\\f174\";\n\n$long-arrow-down: \"\\f175\";\n\n$long-arrow-up: \"\\f176\";\n\n$long-arrow-left: \"\\f177\";\n\n$long-arrow-right: \"\\f178\";\n\n$apple: \"\\f179\";\n\n$windows: \"\\f17a\";\n\n$android: \"\\f17b\";\n\n$linux: \"\\f17c\";\n\n$dribble: \"\\f17d\";\n\n$skype: \"\\f17e\";\n\n$foursquare: \"\\f180\";\n\n$trello: \"\\f181\";\n\n$female: \"\\f182\";\n\n$male: \"\\f183\";\n\n$gittip: \"\\f184\";\n\n$sun: \"\\f185\";\n\n$moon: \"\\f186\";\n\n$archive: \"\\f187\";\n\n$bug: \"\\f188\";\n\n$vk: \"\\f189\";\n\n$weibo: \"\\f18a\";\n\n$renren: \"\\f18b\";\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/font-awesome-ie7.scss",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n.icon-large {\n  font-size: (4em/3);\n  margin-top: -4px;\n  padding-top: 3px;\n  margin-bottom: -4px;\n  padding-bottom: 3px;\n  vertical-align: middle;\n}\n\n.nav {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    vertical-align: inherit;\n    margin-top: -4px;\n    padding-top: 3px;\n    margin-bottom: -4px;\n    padding-bottom: 3px;\n    &.icon-large {\n      vertical-align: -25%;\n    }\n  }\n}\n\n.nav-pills, .nav-tabs {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.icon-large {\n      line-height: .75em;\n      margin-top: -7px;\n      padding-top: 5px;\n      margin-bottom: -5px;\n      padding-bottom: 4px;\n    }\n  }\n}\n\n.btn {\n  [class^=\"icon-\"],\n  [class*=\" icon-\"] {\n    &.pull-left, &.pull-right { vertical-align: inherit; }\n    &.icon-large {\n      margin-top: -.5em;\n    }\n  }\n}\n\na [class^=\"icon-\"],\na [class*=\" icon-\"] {\n  cursor: pointer;\n}\n\n@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); }\n\n\n.icon-glass {\n  @include ie7icon('&#xf000;');\n}\n\n\n.icon-music {\n  @include ie7icon('&#xf001;');\n}\n\n\n.icon-search {\n  @include ie7icon('&#xf002;');\n}\n\n\n.icon-envelope-alt {\n  @include ie7icon('&#xf003;');\n}\n\n\n.icon-heart {\n  @include ie7icon('&#xf004;');\n}\n\n\n.icon-star {\n  @include ie7icon('&#xf005;');\n}\n\n\n.icon-star-empty {\n  @include ie7icon('&#xf006;');\n}\n\n\n.icon-user {\n  @include ie7icon('&#xf007;');\n}\n\n\n.icon-film {\n  @include ie7icon('&#xf008;');\n}\n\n\n.icon-th-large {\n  @include ie7icon('&#xf009;');\n}\n\n\n.icon-th {\n  @include ie7icon('&#xf00a;');\n}\n\n\n.icon-th-list {\n  @include ie7icon('&#xf00b;');\n}\n\n\n.icon-ok {\n  @include ie7icon('&#xf00c;');\n}\n\n\n.icon-remove {\n  @include ie7icon('&#xf00d;');\n}\n\n\n.icon-zoom-in {\n  @include ie7icon('&#xf00e;');\n}\n\n\n.icon-zoom-out {\n  @include ie7icon('&#xf010;');\n}\n\n\n.icon-off {\n  @include ie7icon('&#xf011;');\n}\n\n.icon-power-off {\n  @include ie7icon('&#xf011;');\n}\n\n\n.icon-signal {\n  @include ie7icon('&#xf012;');\n}\n\n\n.icon-cog {\n  @include ie7icon('&#xf013;');\n}\n\n\n.icon-trash {\n  @include ie7icon('&#xf014;');\n}\n\n\n.icon-home {\n  @include ie7icon('&#xf015;');\n}\n\n\n.icon-file-alt {\n  @include ie7icon('&#xf016;');\n}\n\n\n.icon-time {\n  @include ie7icon('&#xf017;');\n}\n\n\n.icon-road {\n  @include ie7icon('&#xf018;');\n}\n\n\n.icon-download-alt {\n  @include ie7icon('&#xf019;');\n}\n\n\n.icon-download {\n  @include ie7icon('&#xf01a;');\n}\n\n\n.icon-upload {\n  @include ie7icon('&#xf01b;');\n}\n\n\n.icon-inbox {\n  @include ie7icon('&#xf01c;');\n}\n\n\n.icon-play-circle {\n  @include ie7icon('&#xf01d;');\n}\n\n\n.icon-repeat {\n  @include ie7icon('&#xf01e;');\n}\n\n.icon-rotate-right {\n  @include ie7icon('&#xf01e;');\n}\n\n\n.icon-refresh {\n  @include ie7icon('&#xf021;');\n}\n\n\n.icon-list-alt {\n  @include ie7icon('&#xf022;');\n}\n\n\n.icon-lock {\n  @include ie7icon('&#xf023;');\n}\n\n\n.icon-flag {\n  @include ie7icon('&#xf024;');\n}\n\n\n.icon-headphones {\n  @include ie7icon('&#xf025;');\n}\n\n\n.icon-volume-off {\n  @include ie7icon('&#xf026;');\n}\n\n\n.icon-volume-down {\n  @include ie7icon('&#xf027;');\n}\n\n\n.icon-volume-up {\n  @include ie7icon('&#xf028;');\n}\n\n\n.icon-qrcode {\n  @include ie7icon('&#xf029;');\n}\n\n\n.icon-barcode {\n  @include ie7icon('&#xf02a;');\n}\n\n\n.icon-tag {\n  @include ie7icon('&#xf02b;');\n}\n\n\n.icon-tags {\n  @include ie7icon('&#xf02c;');\n}\n\n\n.icon-book {\n  @include ie7icon('&#xf02d;');\n}\n\n\n.icon-bookmark {\n  @include ie7icon('&#xf02e;');\n}\n\n\n.icon-print {\n  @include ie7icon('&#xf02f;');\n}\n\n\n.icon-camera {\n  @include ie7icon('&#xf030;');\n}\n\n\n.icon-font {\n  @include ie7icon('&#xf031;');\n}\n\n\n.icon-bold {\n  @include ie7icon('&#xf032;');\n}\n\n\n.icon-italic {\n  @include ie7icon('&#xf033;');\n}\n\n\n.icon-text-height {\n  @include ie7icon('&#xf034;');\n}\n\n\n.icon-text-width {\n  @include ie7icon('&#xf035;');\n}\n\n\n.icon-align-left {\n  @include ie7icon('&#xf036;');\n}\n\n\n.icon-align-center {\n  @include ie7icon('&#xf037;');\n}\n\n\n.icon-align-right {\n  @include ie7icon('&#xf038;');\n}\n\n\n.icon-align-justify {\n  @include ie7icon('&#xf039;');\n}\n\n\n.icon-list {\n  @include ie7icon('&#xf03a;');\n}\n\n\n.icon-indent-left {\n  @include ie7icon('&#xf03b;');\n}\n\n\n.icon-indent-right {\n  @include ie7icon('&#xf03c;');\n}\n\n\n.icon-facetime-video {\n  @include ie7icon('&#xf03d;');\n}\n\n\n.icon-picture {\n  @include ie7icon('&#xf03e;');\n}\n\n\n.icon-pencil {\n  @include ie7icon('&#xf040;');\n}\n\n\n.icon-map-marker {\n  @include ie7icon('&#xf041;');\n}\n\n\n.icon-adjust {\n  @include ie7icon('&#xf042;');\n}\n\n\n.icon-tint {\n  @include ie7icon('&#xf043;');\n}\n\n\n.icon-edit {\n  @include ie7icon('&#xf044;');\n}\n\n\n.icon-share {\n  @include ie7icon('&#xf045;');\n}\n\n\n.icon-check {\n  @include ie7icon('&#xf046;');\n}\n\n\n.icon-move {\n  @include ie7icon('&#xf047;');\n}\n\n\n.icon-step-backward {\n  @include ie7icon('&#xf048;');\n}\n\n\n.icon-fast-backward {\n  @include ie7icon('&#xf049;');\n}\n\n\n.icon-backward {\n  @include ie7icon('&#xf04a;');\n}\n\n\n.icon-play {\n  @include ie7icon('&#xf04b;');\n}\n\n\n.icon-pause {\n  @include ie7icon('&#xf04c;');\n}\n\n\n.icon-stop {\n  @include ie7icon('&#xf04d;');\n}\n\n\n.icon-forward {\n  @include ie7icon('&#xf04e;');\n}\n\n\n.icon-fast-forward {\n  @include ie7icon('&#xf050;');\n}\n\n\n.icon-step-forward {\n  @include ie7icon('&#xf051;');\n}\n\n\n.icon-eject {\n  @include ie7icon('&#xf052;');\n}\n\n\n.icon-chevron-left {\n  @include ie7icon('&#xf053;');\n}\n\n\n.icon-chevron-right {\n  @include ie7icon('&#xf054;');\n}\n\n\n.icon-plus-sign {\n  @include ie7icon('&#xf055;');\n}\n\n\n.icon-minus-sign {\n  @include ie7icon('&#xf056;');\n}\n\n\n.icon-remove-sign {\n  @include ie7icon('&#xf057;');\n}\n\n\n.icon-ok-sign {\n  @include ie7icon('&#xf058;');\n}\n\n\n.icon-question-sign {\n  @include ie7icon('&#xf059;');\n}\n\n\n.icon-info-sign {\n  @include ie7icon('&#xf05a;');\n}\n\n\n.icon-screenshot {\n  @include ie7icon('&#xf05b;');\n}\n\n\n.icon-remove-circle {\n  @include ie7icon('&#xf05c;');\n}\n\n\n.icon-ok-circle {\n  @include ie7icon('&#xf05d;');\n}\n\n\n.icon-ban-circle {\n  @include ie7icon('&#xf05e;');\n}\n\n\n.icon-arrow-left {\n  @include ie7icon('&#xf060;');\n}\n\n\n.icon-arrow-right {\n  @include ie7icon('&#xf061;');\n}\n\n\n.icon-arrow-up {\n  @include ie7icon('&#xf062;');\n}\n\n\n.icon-arrow-down {\n  @include ie7icon('&#xf063;');\n}\n\n\n.icon-share-alt {\n  @include ie7icon('&#xf064;');\n}\n\n.icon-mail-forward {\n  @include ie7icon('&#xf064;');\n}\n\n\n.icon-resize-full {\n  @include ie7icon('&#xf065;');\n}\n\n\n.icon-resize-small {\n  @include ie7icon('&#xf066;');\n}\n\n\n.icon-plus {\n  @include ie7icon('&#xf067;');\n}\n\n\n.icon-minus {\n  @include ie7icon('&#xf068;');\n}\n\n\n.icon-asterisk {\n  @include ie7icon('&#xf069;');\n}\n\n\n.icon-exclamation-sign {\n  @include ie7icon('&#xf06a;');\n}\n\n\n.icon-gift {\n  @include ie7icon('&#xf06b;');\n}\n\n\n.icon-leaf {\n  @include ie7icon('&#xf06c;');\n}\n\n\n.icon-fire {\n  @include ie7icon('&#xf06d;');\n}\n\n\n.icon-eye-open {\n  @include ie7icon('&#xf06e;');\n}\n\n\n.icon-eye-close {\n  @include ie7icon('&#xf070;');\n}\n\n\n.icon-warning-sign {\n  @include ie7icon('&#xf071;');\n}\n\n\n.icon-plane {\n  @include ie7icon('&#xf072;');\n}\n\n\n.icon-calendar {\n  @include ie7icon('&#xf073;');\n}\n\n\n.icon-random {\n  @include ie7icon('&#xf074;');\n}\n\n\n.icon-comment {\n  @include ie7icon('&#xf075;');\n}\n\n\n.icon-magnet {\n  @include ie7icon('&#xf076;');\n}\n\n\n.icon-chevron-up {\n  @include ie7icon('&#xf077;');\n}\n\n\n.icon-chevron-down {\n  @include ie7icon('&#xf078;');\n}\n\n\n.icon-retweet {\n  @include ie7icon('&#xf079;');\n}\n\n\n.icon-shopping-cart {\n  @include ie7icon('&#xf07a;');\n}\n\n\n.icon-folder-close {\n  @include ie7icon('&#xf07b;');\n}\n\n\n.icon-folder-open {\n  @include ie7icon('&#xf07c;');\n}\n\n\n.icon-resize-vertical {\n  @include ie7icon('&#xf07d;');\n}\n\n\n.icon-resize-horizontal {\n  @include ie7icon('&#xf07e;');\n}\n\n\n.icon-bar-chart {\n  @include ie7icon('&#xf080;');\n}\n\n\n.icon-twitter-sign {\n  @include ie7icon('&#xf081;');\n}\n\n\n.icon-facebook-sign {\n  @include ie7icon('&#xf082;');\n}\n\n\n.icon-camera-retro {\n  @include ie7icon('&#xf083;');\n}\n\n\n.icon-key {\n  @include ie7icon('&#xf084;');\n}\n\n\n.icon-cogs {\n  @include ie7icon('&#xf085;');\n}\n\n\n.icon-comments {\n  @include ie7icon('&#xf086;');\n}\n\n\n.icon-thumbs-up-alt {\n  @include ie7icon('&#xf087;');\n}\n\n\n.icon-thumbs-down-alt {\n  @include ie7icon('&#xf088;');\n}\n\n\n.icon-star-half {\n  @include ie7icon('&#xf089;');\n}\n\n\n.icon-heart-empty {\n  @include ie7icon('&#xf08a;');\n}\n\n\n.icon-signout {\n  @include ie7icon('&#xf08b;');\n}\n\n\n.icon-linkedin-sign {\n  @include ie7icon('&#xf08c;');\n}\n\n\n.icon-pushpin {\n  @include ie7icon('&#xf08d;');\n}\n\n\n.icon-external-link {\n  @include ie7icon('&#xf08e;');\n}\n\n\n.icon-signin {\n  @include ie7icon('&#xf090;');\n}\n\n\n.icon-trophy {\n  @include ie7icon('&#xf091;');\n}\n\n\n.icon-github-sign {\n  @include ie7icon('&#xf092;');\n}\n\n\n.icon-upload-alt {\n  @include ie7icon('&#xf093;');\n}\n\n\n.icon-lemon {\n  @include ie7icon('&#xf094;');\n}\n\n\n.icon-phone {\n  @include ie7icon('&#xf095;');\n}\n\n\n.icon-check-empty {\n  @include ie7icon('&#xf096;');\n}\n\n.icon-unchecked {\n  @include ie7icon('&#xf096;');\n}\n\n\n.icon-bookmark-empty {\n  @include ie7icon('&#xf097;');\n}\n\n\n.icon-phone-sign {\n  @include ie7icon('&#xf098;');\n}\n\n\n.icon-twitter {\n  @include ie7icon('&#xf099;');\n}\n\n\n.icon-facebook {\n  @include ie7icon('&#xf09a;');\n}\n\n\n.icon-github {\n  @include ie7icon('&#xf09b;');\n}\n\n\n.icon-unlock {\n  @include ie7icon('&#xf09c;');\n}\n\n\n.icon-credit-card {\n  @include ie7icon('&#xf09d;');\n}\n\n\n.icon-rss {\n  @include ie7icon('&#xf09e;');\n}\n\n\n.icon-hdd {\n  @include ie7icon('&#xf0a0;');\n}\n\n\n.icon-bullhorn {\n  @include ie7icon('&#xf0a1;');\n}\n\n\n.icon-bell {\n  @include ie7icon('&#xf0a2;');\n}\n\n\n.icon-certificate {\n  @include ie7icon('&#xf0a3;');\n}\n\n\n.icon-hand-right {\n  @include ie7icon('&#xf0a4;');\n}\n\n\n.icon-hand-left {\n  @include ie7icon('&#xf0a5;');\n}\n\n\n.icon-hand-up {\n  @include ie7icon('&#xf0a6;');\n}\n\n\n.icon-hand-down {\n  @include ie7icon('&#xf0a7;');\n}\n\n\n.icon-circle-arrow-left {\n  @include ie7icon('&#xf0a8;');\n}\n\n\n.icon-circle-arrow-right {\n  @include ie7icon('&#xf0a9;');\n}\n\n\n.icon-circle-arrow-up {\n  @include ie7icon('&#xf0aa;');\n}\n\n\n.icon-circle-arrow-down {\n  @include ie7icon('&#xf0ab;');\n}\n\n\n.icon-globe {\n  @include ie7icon('&#xf0ac;');\n}\n\n\n.icon-wrench {\n  @include ie7icon('&#xf0ad;');\n}\n\n\n.icon-tasks {\n  @include ie7icon('&#xf0ae;');\n}\n\n\n.icon-filter {\n  @include ie7icon('&#xf0b0;');\n}\n\n\n.icon-briefcase {\n  @include ie7icon('&#xf0b1;');\n}\n\n\n.icon-fullscreen {\n  @include ie7icon('&#xf0b2;');\n}\n\n\n.icon-group {\n  @include ie7icon('&#xf0c0;');\n}\n\n\n.icon-link {\n  @include ie7icon('&#xf0c1;');\n}\n\n\n.icon-cloud {\n  @include ie7icon('&#xf0c2;');\n}\n\n\n.icon-beaker {\n  @include ie7icon('&#xf0c3;');\n}\n\n\n.icon-cut {\n  @include ie7icon('&#xf0c4;');\n}\n\n\n.icon-copy {\n  @include ie7icon('&#xf0c5;');\n}\n\n\n.icon-paper-clip {\n  @include ie7icon('&#xf0c6;');\n}\n\n.icon-paperclip {\n  @include ie7icon('&#xf0c6;');\n}\n\n\n.icon-save {\n  @include ie7icon('&#xf0c7;');\n}\n\n\n.icon-sign-blank {\n  @include ie7icon('&#xf0c8;');\n}\n\n\n.icon-reorder {\n  @include ie7icon('&#xf0c9;');\n}\n\n\n.icon-list-ul {\n  @include ie7icon('&#xf0ca;');\n}\n\n\n.icon-list-ol {\n  @include ie7icon('&#xf0cb;');\n}\n\n\n.icon-strikethrough {\n  @include ie7icon('&#xf0cc;');\n}\n\n\n.icon-underline {\n  @include ie7icon('&#xf0cd;');\n}\n\n\n.icon-table {\n  @include ie7icon('&#xf0ce;');\n}\n\n\n.icon-magic {\n  @include ie7icon('&#xf0d0;');\n}\n\n\n.icon-truck {\n  @include ie7icon('&#xf0d1;');\n}\n\n\n.icon-pinterest {\n  @include ie7icon('&#xf0d2;');\n}\n\n\n.icon-pinterest-sign {\n  @include ie7icon('&#xf0d3;');\n}\n\n\n.icon-google-plus-sign {\n  @include ie7icon('&#xf0d4;');\n}\n\n\n.icon-google-plus {\n  @include ie7icon('&#xf0d5;');\n}\n\n\n.icon-money {\n  @include ie7icon('&#xf0d6;');\n}\n\n\n.icon-caret-down {\n  @include ie7icon('&#xf0d7;');\n}\n\n\n.icon-caret-up {\n  @include ie7icon('&#xf0d8;');\n}\n\n\n.icon-caret-left {\n  @include ie7icon('&#xf0d9;');\n}\n\n\n.icon-caret-right {\n  @include ie7icon('&#xf0da;');\n}\n\n\n.icon-columns {\n  @include ie7icon('&#xf0db;');\n}\n\n\n.icon-sort {\n  @include ie7icon('&#xf0dc;');\n}\n\n\n.icon-sort-down {\n  @include ie7icon('&#xf0dd;');\n}\n\n\n.icon-sort-up {\n  @include ie7icon('&#xf0de;');\n}\n\n\n.icon-envelope {\n  @include ie7icon('&#xf0e0;');\n}\n\n\n.icon-linkedin {\n  @include ie7icon('&#xf0e1;');\n}\n\n\n.icon-undo {\n  @include ie7icon('&#xf0e2;');\n}\n\n.icon-rotate-left {\n  @include ie7icon('&#xf0e2;');\n}\n\n\n.icon-legal {\n  @include ie7icon('&#xf0e3;');\n}\n\n\n.icon-dashboard {\n  @include ie7icon('&#xf0e4;');\n}\n\n\n.icon-comment-alt {\n  @include ie7icon('&#xf0e5;');\n}\n\n\n.icon-comments-alt {\n  @include ie7icon('&#xf0e6;');\n}\n\n\n.icon-bolt {\n  @include ie7icon('&#xf0e7;');\n}\n\n\n.icon-sitemap {\n  @include ie7icon('&#xf0e8;');\n}\n\n\n.icon-umbrella {\n  @include ie7icon('&#xf0e9;');\n}\n\n\n.icon-paste {\n  @include ie7icon('&#xf0ea;');\n}\n\n\n.icon-lightbulb {\n  @include ie7icon('&#xf0eb;');\n}\n\n\n.icon-exchange {\n  @include ie7icon('&#xf0ec;');\n}\n\n\n.icon-cloud-download {\n  @include ie7icon('&#xf0ed;');\n}\n\n\n.icon-cloud-upload {\n  @include ie7icon('&#xf0ee;');\n}\n\n\n.icon-user-md {\n  @include ie7icon('&#xf0f0;');\n}\n\n\n.icon-stethoscope {\n  @include ie7icon('&#xf0f1;');\n}\n\n\n.icon-suitcase {\n  @include ie7icon('&#xf0f2;');\n}\n\n\n.icon-bell-alt {\n  @include ie7icon('&#xf0f3;');\n}\n\n\n.icon-coffee {\n  @include ie7icon('&#xf0f4;');\n}\n\n\n.icon-food {\n  @include ie7icon('&#xf0f5;');\n}\n\n\n.icon-file-text-alt {\n  @include ie7icon('&#xf0f6;');\n}\n\n\n.icon-building {\n  @include ie7icon('&#xf0f7;');\n}\n\n\n.icon-hospital {\n  @include ie7icon('&#xf0f8;');\n}\n\n\n.icon-ambulance {\n  @include ie7icon('&#xf0f9;');\n}\n\n\n.icon-medkit {\n  @include ie7icon('&#xf0fa;');\n}\n\n\n.icon-fighter-jet {\n  @include ie7icon('&#xf0fb;');\n}\n\n\n.icon-beer {\n  @include ie7icon('&#xf0fc;');\n}\n\n\n.icon-h-sign {\n  @include ie7icon('&#xf0fd;');\n}\n\n\n.icon-plus-sign-alt {\n  @include ie7icon('&#xf0fe;');\n}\n\n\n.icon-double-angle-left {\n  @include ie7icon('&#xf100;');\n}\n\n\n.icon-double-angle-right {\n  @include ie7icon('&#xf101;');\n}\n\n\n.icon-double-angle-up {\n  @include ie7icon('&#xf102;');\n}\n\n\n.icon-double-angle-down {\n  @include ie7icon('&#xf103;');\n}\n\n\n.icon-angle-left {\n  @include ie7icon('&#xf104;');\n}\n\n\n.icon-angle-right {\n  @include ie7icon('&#xf105;');\n}\n\n\n.icon-angle-up {\n  @include ie7icon('&#xf106;');\n}\n\n\n.icon-angle-down {\n  @include ie7icon('&#xf107;');\n}\n\n\n.icon-desktop {\n  @include ie7icon('&#xf108;');\n}\n\n\n.icon-laptop {\n  @include ie7icon('&#xf109;');\n}\n\n\n.icon-tablet {\n  @include ie7icon('&#xf10a;');\n}\n\n\n.icon-mobile-phone {\n  @include ie7icon('&#xf10b;');\n}\n\n\n.icon-circle-blank {\n  @include ie7icon('&#xf10c;');\n}\n\n\n.icon-quote-left {\n  @include ie7icon('&#xf10d;');\n}\n\n\n.icon-quote-right {\n  @include ie7icon('&#xf10e;');\n}\n\n\n.icon-spinner {\n  @include ie7icon('&#xf110;');\n}\n\n\n.icon-circle {\n  @include ie7icon('&#xf111;');\n}\n\n\n.icon-reply {\n  @include ie7icon('&#xf112;');\n}\n\n.icon-mail-reply {\n  @include ie7icon('&#xf112;');\n}\n\n\n.icon-github-alt {\n  @include ie7icon('&#xf113;');\n}\n\n\n.icon-folder-close-alt {\n  @include ie7icon('&#xf114;');\n}\n\n\n.icon-folder-open-alt {\n  @include ie7icon('&#xf115;');\n}\n\n\n.icon-expand-alt {\n  @include ie7icon('&#xf116;');\n}\n\n\n.icon-collapse-alt {\n  @include ie7icon('&#xf117;');\n}\n\n\n.icon-smile {\n  @include ie7icon('&#xf118;');\n}\n\n\n.icon-frown {\n  @include ie7icon('&#xf119;');\n}\n\n\n.icon-meh {\n  @include ie7icon('&#xf11a;');\n}\n\n\n.icon-gamepad {\n  @include ie7icon('&#xf11b;');\n}\n\n\n.icon-keyboard {\n  @include ie7icon('&#xf11c;');\n}\n\n\n.icon-flag-alt {\n  @include ie7icon('&#xf11d;');\n}\n\n\n.icon-flag-checkered {\n  @include ie7icon('&#xf11e;');\n}\n\n\n.icon-terminal {\n  @include ie7icon('&#xf120;');\n}\n\n\n.icon-code {\n  @include ie7icon('&#xf121;');\n}\n\n\n.icon-reply-all {\n  @include ie7icon('&#xf122;');\n}\n\n\n.icon-mail-reply-all {\n  @include ie7icon('&#xf122;');\n}\n\n\n.icon-star-half-empty {\n  @include ie7icon('&#xf123;');\n}\n\n.icon-star-half-full {\n  @include ie7icon('&#xf123;');\n}\n\n\n.icon-location-arrow {\n  @include ie7icon('&#xf124;');\n}\n\n\n.icon-crop {\n  @include ie7icon('&#xf125;');\n}\n\n\n.icon-code-fork {\n  @include ie7icon('&#xf126;');\n}\n\n\n.icon-unlink {\n  @include ie7icon('&#xf127;');\n}\n\n\n.icon-question {\n  @include ie7icon('&#xf128;');\n}\n\n\n.icon-info {\n  @include ie7icon('&#xf129;');\n}\n\n\n.icon-exclamation {\n  @include ie7icon('&#xf12a;');\n}\n\n\n.icon-superscript {\n  @include ie7icon('&#xf12b;');\n}\n\n\n.icon-subscript {\n  @include ie7icon('&#xf12c;');\n}\n\n\n.icon-eraser {\n  @include ie7icon('&#xf12d;');\n}\n\n\n.icon-puzzle-piece {\n  @include ie7icon('&#xf12e;');\n}\n\n\n.icon-microphone {\n  @include ie7icon('&#xf130;');\n}\n\n\n.icon-microphone-off {\n  @include ie7icon('&#xf131;');\n}\n\n\n.icon-shield {\n  @include ie7icon('&#xf132;');\n}\n\n\n.icon-calendar-empty {\n  @include ie7icon('&#xf133;');\n}\n\n\n.icon-fire-extinguisher {\n  @include ie7icon('&#xf134;');\n}\n\n\n.icon-rocket {\n  @include ie7icon('&#xf135;');\n}\n\n\n.icon-maxcdn {\n  @include ie7icon('&#xf136;');\n}\n\n\n.icon-chevron-sign-left {\n  @include ie7icon('&#xf137;');\n}\n\n\n.icon-chevron-sign-right {\n  @include ie7icon('&#xf138;');\n}\n\n\n.icon-chevron-sign-up {\n  @include ie7icon('&#xf139;');\n}\n\n\n.icon-chevron-sign-down {\n  @include ie7icon('&#xf13a;');\n}\n\n\n.icon-html5 {\n  @include ie7icon('&#xf13b;');\n}\n\n\n.icon-css3 {\n  @include ie7icon('&#xf13c;');\n}\n\n\n.icon-anchor {\n  @include ie7icon('&#xf13d;');\n}\n\n\n.icon-unlock-alt {\n  @include ie7icon('&#xf13e;');\n}\n\n\n.icon-bullseye {\n  @include ie7icon('&#xf140;');\n}\n\n\n.icon-ellipsis-horizontal {\n  @include ie7icon('&#xf141;');\n}\n\n\n.icon-ellipsis-vertical {\n  @include ie7icon('&#xf142;');\n}\n\n\n.icon-rss-sign {\n  @include ie7icon('&#xf143;');\n}\n\n\n.icon-play-sign {\n  @include ie7icon('&#xf144;');\n}\n\n\n.icon-ticket {\n  @include ie7icon('&#xf145;');\n}\n\n\n.icon-minus-sign-alt {\n  @include ie7icon('&#xf146;');\n}\n\n\n.icon-check-minus {\n  @include ie7icon('&#xf147;');\n}\n\n\n.icon-level-up {\n  @include ie7icon('&#xf148;');\n}\n\n\n.icon-level-down {\n  @include ie7icon('&#xf149;');\n}\n\n\n.icon-check-sign {\n  @include ie7icon('&#xf14a;');\n}\n\n\n.icon-edit-sign {\n  @include ie7icon('&#xf14b;');\n}\n\n\n.icon-external-link-sign {\n  @include ie7icon('&#xf14c;');\n}\n\n\n.icon-share-sign {\n  @include ie7icon('&#xf14d;');\n}\n\n\n.icon-compass {\n  @include ie7icon('&#xf14e;');\n}\n\n\n.icon-collapse {\n  @include ie7icon('&#xf150;');\n}\n\n\n.icon-collapse-top {\n  @include ie7icon('&#xf151;');\n}\n\n\n.icon-expand {\n  @include ie7icon('&#xf152;');\n}\n\n\n.icon-eur {\n  @include ie7icon('&#xf153;');\n}\n\n.icon-euro {\n  @include ie7icon('&#xf153;');\n}\n\n\n.icon-gbp {\n  @include ie7icon('&#xf154;');\n}\n\n\n.icon-usd {\n  @include ie7icon('&#xf155;');\n}\n\n.icon-dollar {\n  @include ie7icon('&#xf155;');\n}\n\n\n.icon-inr {\n  @include ie7icon('&#xf156;');\n}\n\n.icon-rupee {\n  @include ie7icon('&#xf156;');\n}\n\n\n.icon-jpy {\n  @include ie7icon('&#xf157;');\n}\n\n.icon-yen {\n  @include ie7icon('&#xf157;');\n}\n\n\n.icon-cny {\n  @include ie7icon('&#xf158;');\n}\n\n.icon-renminbi {\n  @include ie7icon('&#xf158;');\n}\n\n\n.icon-krw {\n  @include ie7icon('&#xf159;');\n}\n\n.icon-won {\n  @include ie7icon('&#xf159;');\n}\n\n\n.icon-btc {\n  @include ie7icon('&#xf15a;');\n}\n\n.icon-bitcoin {\n  @include ie7icon('&#xf15a;');\n}\n\n\n.icon-file {\n  @include ie7icon('&#xf15b;');\n}\n\n\n.icon-file-text {\n  @include ie7icon('&#xf15c;');\n}\n\n\n.icon-sort-by-alphabet {\n  @include ie7icon('&#xf15d;');\n}\n\n\n.icon-sort-by-alphabet-alt {\n  @include ie7icon('&#xf15e;');\n}\n\n\n.icon-sort-by-attributes {\n  @include ie7icon('&#xf160;');\n}\n\n\n.icon-sort-by-attributes-alt {\n  @include ie7icon('&#xf161;');\n}\n\n\n.icon-sort-by-order {\n  @include ie7icon('&#xf162;');\n}\n\n\n.icon-sort-by-order-alt {\n  @include ie7icon('&#xf163;');\n}\n\n\n.icon-thumbs-up {\n  @include ie7icon('&#xf164;');\n}\n\n\n.icon-thumbs-down {\n  @include ie7icon('&#xf165;');\n}\n\n\n.icon-youtube-sign {\n  @include ie7icon('&#xf166;');\n}\n\n\n.icon-youtube {\n  @include ie7icon('&#xf167;');\n}\n\n\n.icon-xing {\n  @include ie7icon('&#xf168;');\n}\n\n\n.icon-xing-sign {\n  @include ie7icon('&#xf169;');\n}\n\n\n.icon-youtube-play {\n  @include ie7icon('&#xf16a;');\n}\n\n\n.icon-dropbox {\n  @include ie7icon('&#xf16b;');\n}\n\n\n.icon-stackexchange {\n  @include ie7icon('&#xf16c;');\n}\n\n\n.icon-instagram {\n  @include ie7icon('&#xf16d;');\n}\n\n\n.icon-flickr {\n  @include ie7icon('&#xf16e;');\n}\n\n\n.icon-adn {\n  @include ie7icon('&#xf170;');\n}\n\n\n.icon-bitbucket {\n  @include ie7icon('&#xf171;');\n}\n\n\n.icon-bitbucket-sign {\n  @include ie7icon('&#xf172;');\n}\n\n\n.icon-tumblr {\n  @include ie7icon('&#xf173;');\n}\n\n\n.icon-tumblr-sign {\n  @include ie7icon('&#xf174;');\n}\n\n\n.icon-long-arrow-down {\n  @include ie7icon('&#xf175;');\n}\n\n\n.icon-long-arrow-up {\n  @include ie7icon('&#xf176;');\n}\n\n\n.icon-long-arrow-left {\n  @include ie7icon('&#xf177;');\n}\n\n\n.icon-long-arrow-right {\n  @include ie7icon('&#xf178;');\n}\n\n\n.icon-apple {\n  @include ie7icon('&#xf179;');\n}\n\n\n.icon-windows {\n  @include ie7icon('&#xf17a;');\n}\n\n\n.icon-android {\n  @include ie7icon('&#xf17b;');\n}\n\n\n.icon-linux {\n  @include ie7icon('&#xf17c;');\n}\n\n\n.icon-dribble {\n  @include ie7icon('&#xf17d;');\n}\n\n\n.icon-skype {\n  @include ie7icon('&#xf17e;');\n}\n\n\n.icon-foursquare {\n  @include ie7icon('&#xf180;');\n}\n\n\n.icon-trello {\n  @include ie7icon('&#xf181;');\n}\n\n\n.icon-female {\n  @include ie7icon('&#xf182;');\n}\n\n\n.icon-male {\n  @include ie7icon('&#xf183;');\n}\n\n\n.icon-gittip {\n  @include ie7icon('&#xf184;');\n}\n\n\n.icon-sun {\n  @include ie7icon('&#xf185;');\n}\n\n\n.icon-moon {\n  @include ie7icon('&#xf186;');\n}\n\n\n.icon-archive {\n  @include ie7icon('&#xf187;');\n}\n\n\n.icon-bug {\n  @include ie7icon('&#xf188;');\n}\n\n\n.icon-vk {\n  @include ie7icon('&#xf189;');\n}\n\n\n.icon-weibo {\n  @include ie7icon('&#xf18a;');\n}\n\n\n.icon-renren {\n  @include ie7icon('&#xf18b;');\n}\n\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/font-awesome/scss/font-awesome.scss",
    "content": "/*!\n *  Font Awesome 3.2.0\n *  the iconic font designed for Bootstrap\n *  ------------------------------------------------------------------------------\n *  The full suite of pictographic icons, examples, and documentation can be\n *  found at http://fontawesome.io.  Stay up to date on Twitter at\n *  http://twitter.com/fontawesome.\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - The Font Awesome font is licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Font Awesome documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n *\n *  Author - Dave Gandy\n *  ------------------------------------------------------------------------------\n *  Email: dave@fontawesome.io\n *  Twitter: http://twitter.com/byscuits\n *  Work: Lead Product Designer @ Kyruus - http://kyruus.com\n */\n\n@import \"variables\";\n@import \"mixins\";\n@import \"path\";\n@import \"core\";\n@import \"bootstrap\";\n@import \"extras\";\n@import \"icons\";\n"
  },
  {
    "path": "target/mongo/style/eu/theme/fonts/glyphicons/css/glyphicons.css",
    "content": "/*!\n *\n *  Project:  GLYPHICONS\n *  Author:   Jan Kovarik - www.glyphicons.com\n *  Twitter:  @jankovarik\n *\n */\nhtml,\nhtml .halflings {\n  -webkit-font-smoothing: antialiased !important;\n}\n@font-face {\n  font-family: 'Glyphicons';\n  src: url('../fonts/glyphicons-regular.eot');\n  src: url('../fonts/glyphicons-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-regular.woff') format('woff'), url('../fonts/glyphicons-regular.ttf') format('truetype'), url('../fonts/glyphicons-regular.svg#glyphicons_halflingsregular') format('svg'), url('../fonts/glyphicons-regular.otf') format('opentype');\n  font-weight: normal;\n  font-style: normal;\n}\n.glyphicons {\n  display: inline-block;\n  position: relative;\n  padding: 5px 0 5px 35px;\n  color: #1d1d1b;\n  text-decoration: none;\n  *display: inline;\n  *zoom: 1;\n}\n.glyphicons i:before {\n  position: absolute;\n  left: 0;\n  top: 0;\n  font: 24px/1em 'Glyphicons';\n  font-style: normal;\n  color: #1d1d1b;\n}\n.glyphicons.white i:before {\n  color: #fff;\n}\n.glyphicons.glass i:before {\n  content: \"\\e001\";\n}\n.glyphicons.leaf i:before {\n  content: \"\\e002\";\n}\n.glyphicons.dog i:before {\n  content: \"\\e003\";\n}\n.glyphicons.user i:before {\n  content: \"\\e004\";\n}\n.glyphicons.girl i:before {\n  content: \"\\e005\";\n}\n.glyphicons.car i:before {\n  content: \"\\e006\";\n}\n.glyphicons.user_add i:before {\n  content: \"\\e007\";\n}\n.glyphicons.user_remove i:before {\n  content: \"\\e008\";\n}\n.glyphicons.film i:before {\n  content: \"\\e009\";\n}\n.glyphicons.magic i:before {\n  content: \"\\e010\";\n}\n.glyphicons.envelope i:before {\n  content: \"\\2709\";\n}\n.glyphicons.camera i:before {\n  content: \"\\e012\";\n}\n.glyphicons.heart i:before {\n  content: \"\\e013\";\n}\n.glyphicons.beach_umbrella i:before {\n  content: \"\\e014\";\n}\n.glyphicons.train i:before {\n  content: \"\\e015\";\n}\n.glyphicons.print i:before {\n  content: \"\\e016\";\n}\n.glyphicons.bin i:before {\n  content: \"\\e017\";\n}\n.glyphicons.music i:before {\n  content: \"\\e018\";\n}\n.glyphicons.note i:before {\n  content: \"\\e019\";\n}\n.glyphicons.heart_empty i:before {\n  content: \"\\e020\";\n}\n.glyphicons.home i:before {\n  content: \"\\e021\";\n}\n.glyphicons.snowflake i:before {\n  content: \"\\2744\";\n}\n.glyphicons.fire i:before {\n  content: \"\\e023\";\n}\n.glyphicons.magnet i:before {\n  content: \"\\e024\";\n}\n.glyphicons.parents i:before {\n  content: \"\\e025\";\n}\n.glyphicons.binoculars i:before {\n  content: \"\\e026\";\n}\n.glyphicons.road i:before {\n  content: \"\\e027\";\n}\n.glyphicons.search i:before {\n  content: \"\\e028\";\n}\n.glyphicons.cars i:before {\n  content: \"\\e029\";\n}\n.glyphicons.notes_2 i:before {\n  content: \"\\e030\";\n}\n.glyphicons.pencil i:before {\n  content: \"\\270F\";\n}\n.glyphicons.bus i:before {\n  content: \"\\e032\";\n}\n.glyphicons.wifi_alt i:before {\n  content: \"\\e033\";\n}\n.glyphicons.luggage i:before {\n  content: \"\\e034\";\n}\n.glyphicons.old_man i:before {\n  content: \"\\e035\";\n}\n.glyphicons.woman i:before {\n  content: \"\\e036\";\n}\n.glyphicons.file i:before {\n  content: \"\\e037\";\n}\n.glyphicons.coins i:before {\n  content: \"\\e038\";\n}\n.glyphicons.airplane i:before {\n  content: \"\\2708\";\n}\n.glyphicons.notes i:before {\n  content: \"\\e040\";\n}\n.glyphicons.stats i:before {\n  content: \"\\e041\";\n}\n.glyphicons.charts i:before {\n  content: \"\\e042\";\n}\n.glyphicons.pie_chart i:before {\n  content: \"\\e043\";\n}\n.glyphicons.group i:before {\n  content: \"\\e044\";\n}\n.glyphicons.keys i:before {\n  content: \"\\e045\";\n}\n.glyphicons.calendar i:before {\n  content: \"\\e046\";\n}\n.glyphicons.router i:before {\n  content: \"\\e047\";\n}\n.glyphicons.camera_small i:before {\n  content: \"\\e048\";\n}\n.glyphicons.dislikes i:before {\n  content: \"\\e049\";\n}\n.glyphicons.star i:before {\n  content: \"\\e050\";\n}\n.glyphicons.link i:before {\n  content: \"\\e051\";\n}\n.glyphicons.eye_open i:before {\n  content: \"\\e052\";\n}\n.glyphicons.eye_close i:before {\n  content: \"\\e053\";\n}\n.glyphicons.alarm i:before {\n  content: \"\\e054\";\n}\n.glyphicons.clock i:before {\n  content: \"\\e055\";\n}\n.glyphicons.stopwatch i:before {\n  content: \"\\e056\";\n}\n.glyphicons.projector i:before {\n  content: \"\\e057\";\n}\n.glyphicons.history i:before {\n  content: \"\\e058\";\n}\n.glyphicons.truck i:before {\n  content: \"\\e059\";\n}\n.glyphicons.cargo i:before {\n  content: \"\\e060\";\n}\n.glyphicons.compass i:before {\n  content: \"\\e061\";\n}\n.glyphicons.keynote i:before {\n  content: \"\\e062\";\n}\n.glyphicons.paperclip i:before {\n  content: \"\\e063\";\n}\n.glyphicons.power i:before {\n  content: \"\\e064\";\n}\n.glyphicons.lightbulb i:before {\n  content: \"\\e065\";\n}\n.glyphicons.tag i:before {\n  content: \"\\e066\";\n}\n.glyphicons.tags i:before {\n  content: \"\\e067\";\n}\n.glyphicons.cleaning i:before {\n  content: \"\\e068\";\n}\n.glyphicons.ruller i:before {\n  content: \"\\e069\";\n}\n.glyphicons.gift i:before {\n  content: \"\\e070\";\n}\n.glyphicons.umbrella i:before {\n  content: \"\\2602\";\n}\n.glyphicons.book i:before {\n  content: \"\\e072\";\n}\n.glyphicons.bookmark i:before {\n  content: \"\\e073\";\n}\n.glyphicons.wifi i:before {\n  content: \"\\e074\";\n}\n.glyphicons.cup i:before {\n  content: \"\\e075\";\n}\n.glyphicons.stroller i:before {\n  content: \"\\e076\";\n}\n.glyphicons.headphones i:before {\n  content: \"\\e077\";\n}\n.glyphicons.headset i:before {\n  content: \"\\e078\";\n}\n.glyphicons.warning_sign i:before {\n  content: \"\\e079\";\n}\n.glyphicons.signal i:before {\n  content: \"\\e080\";\n}\n.glyphicons.retweet i:before {\n  content: \"\\e081\";\n}\n.glyphicons.refresh i:before {\n  content: \"\\e082\";\n}\n.glyphicons.roundabout i:before {\n  content: \"\\e083\";\n}\n.glyphicons.random i:before {\n  content: \"\\e084\";\n}\n.glyphicons.heat i:before {\n  content: \"\\e085\";\n}\n.glyphicons.repeat i:before {\n  content: \"\\e086\";\n}\n.glyphicons.display i:before {\n  content: \"\\e087\";\n}\n.glyphicons.log_book i:before {\n  content: \"\\e088\";\n}\n.glyphicons.adress_book i:before {\n  content: \"\\e089\";\n}\n.glyphicons.building i:before {\n  content: \"\\e090\";\n}\n.glyphicons.eyedropper i:before {\n  content: \"\\e091\";\n}\n.glyphicons.adjust i:before {\n  content: \"\\e092\";\n}\n.glyphicons.tint i:before {\n  content: \"\\e093\";\n}\n.glyphicons.crop i:before {\n  content: \"\\e094\";\n}\n.glyphicons.vector_path_square i:before {\n  content: \"\\e095\";\n}\n.glyphicons.vector_path_circle i:before {\n  content: \"\\e096\";\n}\n.glyphicons.vector_path_polygon i:before {\n  content: \"\\e097\";\n}\n.glyphicons.vector_path_line i:before {\n  content: \"\\e098\";\n}\n.glyphicons.vector_path_curve i:before {\n  content: \"\\e099\";\n}\n.glyphicons.vector_path_all i:before {\n  content: \"\\e100\";\n}\n.glyphicons.font i:before {\n  content: \"\\e101\";\n}\n.glyphicons.italic i:before {\n  content: \"\\e102\";\n}\n.glyphicons.bold i:before {\n  content: \"\\e103\";\n}\n.glyphicons.text_underline i:before {\n  content: \"\\e104\";\n}\n.glyphicons.text_strike i:before {\n  content: \"\\e105\";\n}\n.glyphicons.text_height i:before {\n  content: \"\\e106\";\n}\n.glyphicons.text_width i:before {\n  content: \"\\e107\";\n}\n.glyphicons.text_resize i:before {\n  content: \"\\e108\";\n}\n.glyphicons.left_indent i:before {\n  content: \"\\e109\";\n}\n.glyphicons.right_indent i:before {\n  content: \"\\e110\";\n}\n.glyphicons.align_left i:before {\n  content: \"\\e111\";\n}\n.glyphicons.align_center i:before {\n  content: \"\\e112\";\n}\n.glyphicons.align_right i:before {\n  content: \"\\e113\";\n}\n.glyphicons.justify i:before {\n  content: \"\\e114\";\n}\n.glyphicons.list i:before {\n  content: \"\\e115\";\n}\n.glyphicons.text_smaller i:before {\n  content: \"\\e116\";\n}\n.glyphicons.text_bigger i:before {\n  content: \"\\e117\";\n}\n.glyphicons.embed i:before {\n  content: \"\\e118\";\n}\n.glyphicons.embed_close i:before {\n  content: \"\\e119\";\n}\n.glyphicons.table i:before {\n  content: \"\\e120\";\n}\n.glyphicons.message_full i:before {\n  content: \"\\e121\";\n}\n.glyphicons.message_empty i:before {\n  content: \"\\e122\";\n}\n.glyphicons.message_in i:before {\n  content: \"\\e123\";\n}\n.glyphicons.message_out i:before {\n  content: \"\\e124\";\n}\n.glyphicons.message_plus i:before {\n  content: \"\\e125\";\n}\n.glyphicons.message_minus i:before {\n  content: \"\\e126\";\n}\n.glyphicons.message_ban i:before {\n  content: \"\\e127\";\n}\n.glyphicons.message_flag i:before {\n  content: \"\\e128\";\n}\n.glyphicons.message_lock i:before {\n  content: \"\\e129\";\n}\n.glyphicons.message_new i:before {\n  content: \"\\e130\";\n}\n.glyphicons.inbox i:before {\n  content: \"\\e131\";\n}\n.glyphicons.inbox_plus i:before {\n  content: \"\\e132\";\n}\n.glyphicons.inbox_minus i:before {\n  content: \"\\e133\";\n}\n.glyphicons.inbox_lock i:before {\n  content: \"\\e134\";\n}\n.glyphicons.inbox_in i:before {\n  content: \"\\e135\";\n}\n.glyphicons.inbox_out i:before {\n  content: \"\\e136\";\n}\n.glyphicons.cogwheel i:before {\n  content: \"\\e137\";\n}\n.glyphicons.cogwheels i:before {\n  content: \"\\e138\";\n}\n.glyphicons.picture i:before {\n  content: \"\\e139\";\n}\n.glyphicons.adjust_alt i:before {\n  content: \"\\e140\";\n}\n.glyphicons.database_lock i:before {\n  content: \"\\e141\";\n}\n.glyphicons.database_plus i:before {\n  content: \"\\e142\";\n}\n.glyphicons.database_minus i:before {\n  content: \"\\e143\";\n}\n.glyphicons.database_ban i:before {\n  content: \"\\e144\";\n}\n.glyphicons.folder_open i:before {\n  content: \"\\e145\";\n}\n.glyphicons.folder_plus i:before {\n  content: \"\\e146\";\n}\n.glyphicons.folder_minus i:before {\n  content: \"\\e147\";\n}\n.glyphicons.folder_lock i:before {\n  content: \"\\e148\";\n}\n.glyphicons.folder_flag i:before {\n  content: \"\\e149\";\n}\n.glyphicons.folder_new i:before {\n  content: \"\\e150\";\n}\n.glyphicons.edit i:before {\n  content: \"\\e151\";\n}\n.glyphicons.new_window i:before {\n  content: \"\\e152\";\n}\n.glyphicons.check i:before {\n  content: \"\\e153\";\n}\n.glyphicons.unchecked i:before {\n  content: \"\\e154\";\n}\n.glyphicons.more_windows i:before {\n  content: \"\\e155\";\n}\n.glyphicons.show_big_thumbnails i:before {\n  content: \"\\e156\";\n}\n.glyphicons.show_thumbnails i:before {\n  content: \"\\e157\";\n}\n.glyphicons.show_thumbnails_with_lines i:before {\n  content: \"\\e158\";\n}\n.glyphicons.show_lines i:before {\n  content: \"\\e159\";\n}\n.glyphicons.playlist i:before {\n  content: \"\\e160\";\n}\n.glyphicons.imac i:before {\n  content: \"\\e161\";\n}\n.glyphicons.macbook i:before {\n  content: \"\\e162\";\n}\n.glyphicons.ipad i:before {\n  content: \"\\e163\";\n}\n.glyphicons.iphone i:before {\n  content: \"\\e164\";\n}\n.glyphicons.iphone_transfer i:before {\n  content: \"\\e165\";\n}\n.glyphicons.iphone_exchange i:before {\n  content: \"\\e166\";\n}\n.glyphicons.ipod i:before {\n  content: \"\\e167\";\n}\n.glyphicons.ipod_shuffle i:before {\n  content: \"\\e168\";\n}\n.glyphicons.ear_plugs i:before {\n  content: \"\\e169\";\n}\n.glyphicons.phone i:before {\n  content: \"\\e170\";\n}\n.glyphicons.step_backward i:before {\n  content: \"\\e171\";\n}\n.glyphicons.fast_backward i:before {\n  content: \"\\e172\";\n}\n.glyphicons.rewind i:before {\n  content: \"\\e173\";\n}\n.glyphicons.play i:before {\n  content: \"\\e174\";\n}\n.glyphicons.pause i:before {\n  content: \"\\e175\";\n}\n.glyphicons.stop i:before {\n  content: \"\\e176\";\n}\n.glyphicons.forward i:before {\n  content: \"\\e177\";\n}\n.glyphicons.fast_forward i:before {\n  content: \"\\e178\";\n}\n.glyphicons.step_forward i:before {\n  content: \"\\e179\";\n}\n.glyphicons.eject i:before {\n  content: \"\\e180\";\n}\n.glyphicons.facetime_video i:before {\n  content: \"\\e181\";\n}\n.glyphicons.download_alt i:before {\n  content: \"\\e182\";\n}\n.glyphicons.mute i:before {\n  content: \"\\e183\";\n}\n.glyphicons.volume_down i:before {\n  content: \"\\e184\";\n}\n.glyphicons.volume_up i:before {\n  content: \"\\e185\";\n}\n.glyphicons.screenshot i:before {\n  content: \"\\e186\";\n}\n.glyphicons.move i:before {\n  content: \"\\e187\";\n}\n.glyphicons.more i:before {\n  content: \"\\e188\";\n}\n.glyphicons.brightness_reduce i:before {\n  content: \"\\e189\";\n}\n.glyphicons.brightness_increase i:before {\n  content: \"\\e190\";\n}\n.glyphicons.circle_plus i:before {\n  content: \"\\e191\";\n}\n.glyphicons.circle_minus i:before {\n  content: \"\\e192\";\n}\n.glyphicons.circle_remove i:before {\n  content: \"\\e193\";\n}\n.glyphicons.circle_ok i:before {\n  content: \"\\e194\";\n}\n.glyphicons.circle_question_mark i:before {\n  content: \"\\e195\";\n}\n.glyphicons.circle_info i:before {\n  content: \"\\e196\";\n}\n.glyphicons.circle_exclamation_mark i:before {\n  content: \"\\e197\";\n}\n.glyphicons.remove i:before {\n  content: \"\\e198\";\n}\n.glyphicons.ok i:before {\n  content: \"\\e199\";\n}\n.glyphicons.ban i:before {\n  content: \"\\e200\";\n}\n.glyphicons.download i:before {\n  content: \"\\e201\";\n}\n.glyphicons.upload i:before {\n  content: \"\\e202\";\n}\n.glyphicons.shopping_cart i:before {\n  content: \"\\e203\";\n}\n.glyphicons.lock i:before {\n  content: \"\\e204\";\n}\n.glyphicons.unlock i:before {\n  content: \"\\e205\";\n}\n.glyphicons.electricity i:before {\n  content: \"\\e206\";\n}\n.glyphicons.ok_2 i:before {\n  content: \"\\e207\";\n}\n.glyphicons.remove_2 i:before {\n  content: \"\\e208\";\n}\n.glyphicons.cart_out i:before {\n  content: \"\\e209\";\n}\n.glyphicons.cart_in i:before {\n  content: \"\\e210\";\n}\n.glyphicons.left_arrow i:before {\n  content: \"\\e211\";\n}\n.glyphicons.right_arrow i:before {\n  content: \"\\e212\";\n}\n.glyphicons.down_arrow i:before {\n  content: \"\\e213\";\n}\n.glyphicons.up_arrow i:before {\n  content: \"\\e214\";\n}\n.glyphicons.resize_small i:before {\n  content: \"\\e215\";\n}\n.glyphicons.resize_full i:before {\n  content: \"\\e216\";\n}\n.glyphicons.circle_arrow_left i:before {\n  content: \"\\e217\";\n}\n.glyphicons.circle_arrow_right i:before {\n  content: \"\\e218\";\n}\n.glyphicons.circle_arrow_top i:before {\n  content: \"\\e219\";\n}\n.glyphicons.circle_arrow_down i:before {\n  content: \"\\e220\";\n}\n.glyphicons.play_button i:before {\n  content: \"\\e221\";\n}\n.glyphicons.unshare i:before {\n  content: \"\\e222\";\n}\n.glyphicons.share i:before {\n  content: \"\\e223\";\n}\n.glyphicons.chevron-right i:before {\n  content: \"\\e224\";\n}\n.glyphicons.chevron-left i:before {\n  content: \"\\e225\";\n}\n.glyphicons.bluetooth i:before {\n  content: \"\\e226\";\n}\n.glyphicons.euro i:before {\n  content: \"\\20AC\";\n}\n.glyphicons.usd i:before {\n  content: \"\\e228\";\n}\n.glyphicons.gbp i:before {\n  content: \"\\e229\";\n}\n.glyphicons.retweet_2 i:before {\n  content: \"\\e230\";\n}\n.glyphicons.moon i:before {\n  content: \"\\e231\";\n}\n.glyphicons.sun i:before {\n  content: \"\\2609\";\n}\n.glyphicons.cloud i:before {\n  content: \"\\2601\";\n}\n.glyphicons.direction i:before {\n  content: \"\\e234\";\n}\n.glyphicons.brush i:before {\n  content: \"\\e235\";\n}\n.glyphicons.pen i:before {\n  content: \"\\e236\";\n}\n.glyphicons.zoom_in i:before {\n  content: \"\\e237\";\n}\n.glyphicons.zoom_out i:before {\n  content: \"\\e238\";\n}\n.glyphicons.pin i:before {\n  content: \"\\e239\";\n}\n.glyphicons.albums i:before {\n  content: \"\\e240\";\n}\n.glyphicons.rotation_lock i:before {\n  content: \"\\e241\";\n}\n.glyphicons.flash i:before {\n  content: \"\\e242\";\n}\n.glyphicons.google_maps i:before {\n  content: \"\\e243\";\n}\n.glyphicons.anchor i:before {\n  content: \"\\2693\";\n}\n.glyphicons.conversation i:before {\n  content: \"\\e245\";\n}\n.glyphicons.chat i:before {\n  content: \"\\e246\";\n}\n.glyphicons.male i:before {\n  content: \"\\e247\";\n}\n.glyphicons.female i:before {\n  content: \"\\e248\";\n}\n.glyphicons.asterisk i:before {\n  content: \"\\002A\";\n}\n.glyphicons.divide i:before {\n  content: \"\\00F7\";\n}\n.glyphicons.snorkel_diving i:before {\n  content: \"\\e251\";\n}\n.glyphicons.scuba_diving i:before {\n  content: \"\\e252\";\n}\n.glyphicons.oxygen_bottle i:before {\n  content: \"\\e253\";\n}\n.glyphicons.fins i:before {\n  content: \"\\e254\";\n}\n.glyphicons.fishes i:before {\n  content: \"\\e255\";\n}\n.glyphicons.boat i:before {\n  content: \"\\e256\";\n}\n.glyphicons.delete i:before {\n  content: \"\\e257\";\n}\n.glyphicons.sheriffs_star i:before {\n  content: \"\\e258\";\n}\n.glyphicons.qrcode i:before {\n  content: \"\\e259\";\n}\n.glyphicons.barcode i:before {\n  content: \"\\e260\";\n}\n.glyphicons.pool i:before {\n  content: \"\\e261\";\n}\n.glyphicons.buoy i:before {\n  content: \"\\e262\";\n}\n.glyphicons.spade i:before {\n  content: \"\\e263\";\n}\n.glyphicons.bank i:before {\n  content: \"\\e264\";\n}\n.glyphicons.vcard i:before {\n  content: \"\\e265\";\n}\n.glyphicons.electrical_plug i:before {\n  content: \"\\e266\";\n}\n.glyphicons.flag i:before {\n  content: \"\\e267\";\n}\n.glyphicons.credit_card i:before {\n  content: \"\\e268\";\n}\n.glyphicons.keyboard-wireless i:before {\n  content: \"\\e269\";\n}\n.glyphicons.keyboard-wired i:before {\n  content: \"\\e270\";\n}\n.glyphicons.shield i:before {\n  content: \"\\e271\";\n}\n.glyphicons.ring i:before {\n  content: \"\\02DA\";\n}\n.glyphicons.cake i:before {\n  content: \"\\e273\";\n}\n.glyphicons.drink i:before {\n  content: \"\\e274\";\n}\n.glyphicons.beer i:before {\n  content: \"\\e275\";\n}\n.glyphicons.fast_food i:before {\n  content: \"\\e276\";\n}\n.glyphicons.cutlery i:before {\n  content: \"\\e277\";\n}\n.glyphicons.pizza i:before {\n  content: \"\\e278\";\n}\n.glyphicons.birthday_cake i:before {\n  content: \"\\e279\";\n}\n.glyphicons.tablet i:before {\n  content: \"\\e280\";\n}\n.glyphicons.settings i:before {\n  content: \"\\e281\";\n}\n.glyphicons.bullets i:before {\n  content: \"\\e282\";\n}\n.glyphicons.cardio i:before {\n  content: \"\\e283\";\n}\n.glyphicons.t-shirt i:before {\n  content: \"\\e284\";\n}\n.glyphicons.pants i:before {\n  content: \"\\e285\";\n}\n.glyphicons.sweater i:before {\n  content: \"\\e286\";\n}\n.glyphicons.fabric i:before {\n  content: \"\\e287\";\n}\n.glyphicons.leather i:before {\n  content: \"\\e288\";\n}\n.glyphicons.scissors i:before {\n  content: \"\\e289\";\n}\n.glyphicons.bomb i:before {\n  content: \"\\e290\";\n}\n.glyphicons.skull i:before {\n  content: \"\\e291\";\n}\n.glyphicons.celebration i:before {\n  content: \"\\e292\";\n}\n.glyphicons.tea_kettle i:before {\n  content: \"\\e293\";\n}\n.glyphicons.french_press i:before {\n  content: \"\\e294\";\n}\n.glyphicons.coffe_cup i:before {\n  content: \"\\e295\";\n}\n.glyphicons.pot i:before {\n  content: \"\\e296\";\n}\n.glyphicons.grater i:before {\n  content: \"\\e297\";\n}\n.glyphicons.kettle i:before {\n  content: \"\\e298\";\n}\n.glyphicons.hospital i:before {\n  content: \"\\e299\";\n}\n.glyphicons.hospital_h i:before {\n  content: \"\\e300\";\n}\n.glyphicons.microphone i:before {\n  content: \"\\e301\";\n}\n.glyphicons.webcam i:before {\n  content: \"\\e302\";\n}\n.glyphicons.temple_christianity_church i:before {\n  content: \"\\e303\";\n}\n.glyphicons.temple_islam i:before {\n  content: \"\\e304\";\n}\n.glyphicons.temple_hindu i:before {\n  content: \"\\e305\";\n}\n.glyphicons.temple_buddhist i:before {\n  content: \"\\e306\";\n}\n.glyphicons.bicycle i:before {\n  content: \"\\e307\";\n}\n.glyphicons.life_preserver i:before {\n  content: \"\\e308\";\n}\n.glyphicons.share_alt i:before {\n  content: \"\\e309\";\n}\n.glyphicons.comments i:before {\n  content: \"\\e310\";\n}\n.glyphicons.flower i:before {\n  content: \"\\2698\";\n}\n.glyphicons.baseball i:before {\n  content: \"\\e312\";\n}\n.glyphicons.rugby i:before {\n  content: \"\\e313\";\n}\n.glyphicons.ax i:before {\n  content: \"\\e314\";\n}\n.glyphicons.table_tennis i:before {\n  content: \"\\e315\";\n}\n.glyphicons.bowling i:before {\n  content: \"\\e316\";\n}\n.glyphicons.tree_conifer i:before {\n  content: \"\\e317\";\n}\n.glyphicons.tree_deciduous i:before {\n  content: \"\\e318\";\n}\n.glyphicons.more_items i:before {\n  content: \"\\e319\";\n}\n.glyphicons.sort i:before {\n  content: \"\\e320\";\n}\n.glyphicons.filter i:before {\n  content: \"\\e321\";\n}\n.glyphicons.gamepad i:before {\n  content: \"\\e322\";\n}\n.glyphicons.playing_dices i:before {\n  content: \"\\e323\";\n}\n.glyphicons.calculator i:before {\n  content: \"\\e324\";\n}\n.glyphicons.tie i:before {\n  content: \"\\e325\";\n}\n.glyphicons.wallet i:before {\n  content: \"\\e326\";\n}\n.glyphicons.piano i:before {\n  content: \"\\e327\";\n}\n.glyphicons.sampler i:before {\n  content: \"\\e328\";\n}\n.glyphicons.podium i:before {\n  content: \"\\e329\";\n}\n.glyphicons.soccer_ball i:before {\n  content: \"\\e330\";\n}\n.glyphicons.blog i:before {\n  content: \"\\e331\";\n}\n.glyphicons.dashboard i:before {\n  content: \"\\e332\";\n}\n.glyphicons.certificate i:before {\n  content: \"\\e333\";\n}\n.glyphicons.bell i:before {\n  content: \"\\e334\";\n}\n.glyphicons.candle i:before {\n  content: \"\\e335\";\n}\n.glyphicons.pushpin i:before {\n  content: \"\\e336\";\n}\n.glyphicons.iphone_shake i:before {\n  content: \"\\e337\";\n}\n.glyphicons.pin_flag i:before {\n  content: \"\\e338\";\n}\n.glyphicons.turtle i:before {\n  content: \"\\e339\";\n}\n.glyphicons.rabbit i:before {\n  content: \"\\e340\";\n}\n.glyphicons.globe i:before {\n  content: \"\\e341\";\n}\n.glyphicons.briefcase i:before {\n  content: \"\\e342\";\n}\n.glyphicons.hdd i:before {\n  content: \"\\e343\";\n}\n.glyphicons.thumbs_up i:before {\n  content: \"\\e344\";\n}\n.glyphicons.thumbs_down i:before {\n  content: \"\\e345\";\n}\n.glyphicons.hand_right i:before {\n  content: \"\\e346\";\n}\n.glyphicons.hand_left i:before {\n  content: \"\\e347\";\n}\n.glyphicons.hand_up i:before {\n  content: \"\\e348\";\n}\n.glyphicons.hand_down i:before {\n  content: \"\\e349\";\n}\n.glyphicons.fullscreen i:before {\n  content: \"\\e350\";\n}\n.glyphicons.shopping_bag i:before {\n  content: \"\\e351\";\n}\n.glyphicons.book_open i:before {\n  content: \"\\e352\";\n}\n.glyphicons.nameplate i:before {\n  content: \"\\e353\";\n}\n.glyphicons.nameplate_alt i:before {\n  content: \"\\e354\";\n}\n.glyphicons.vases i:before {\n  content: \"\\e355\";\n}\n.glyphicons.bullhorn i:before {\n  content: \"\\e356\";\n}\n.glyphicons.dumbbell i:before {\n  content: \"\\e357\";\n}\n.glyphicons.suitcase i:before {\n  content: \"\\e358\";\n}\n.glyphicons.file_import i:before {\n  content: \"\\e359\";\n}\n.glyphicons.file_export i:before {\n  content: \"\\e360\";\n}\n.glyphicons.bug i:before {\n  content: \"\\e361\";\n}\n.glyphicons.crown i:before {\n  content: \"\\e362\";\n}\n.glyphicons.smoking i:before {\n  content: \"\\e363\";\n}\n.glyphicons.cloud-upload i:before {\n  content: \"\\e364\";\n}\n.glyphicons.cloud-download i:before {\n  content: \"\\e365\";\n}\n.glyphicons.restart i:before {\n  content: \"\\e366\";\n}\n.glyphicons.security_camera i:before {\n  content: \"\\e367\";\n}\n.glyphicons.expand i:before {\n  content: \"\\e368\";\n}\n.glyphicons.collapse i:before {\n  content: \"\\e369\";\n}\n.glyphicons.collapse_top i:before {\n  content: \"\\e370\";\n}\n.glyphicons.globe_af i:before {\n  content: \"\\e371\";\n}\n.glyphicons.global i:before {\n  content: \"\\e372\";\n}\n.glyphicons.spray i:before {\n  content: \"\\e373\";\n}\n.glyphicons.nails i:before {\n  content: \"\\e374\";\n}\n.glyphicons.claw_hammer i:before {\n  content: \"\\e375\";\n}\n.glyphicons.classic_hammer i:before {\n  content: \"\\e376\";\n}\n.glyphicons.hand_saw i:before {\n  content: \"\\e377\";\n}\n.glyphicons.riflescope i:before {\n  content: \"\\e378\";\n}\n.glyphicons.electrical_socket_eu i:before {\n  content: \"\\e379\";\n}\n.glyphicons.electrical_socket_us i:before {\n  content: \"\\e380\";\n}\n.glyphicons.pinterest i:before {\n  content: \"\\e381\";\n}\n.glyphicons.dropbox i:before {\n  content: \"\\e382\";\n}\n.glyphicons.google_plus i:before {\n  content: \"\\e383\";\n}\n.glyphicons.jolicloud i:before {\n  content: \"\\e384\";\n}\n.glyphicons.yahoo i:before {\n  content: \"\\e385\";\n}\n.glyphicons.blogger i:before {\n  content: \"\\e386\";\n}\n.glyphicons.picasa i:before {\n  content: \"\\e387\";\n}\n.glyphicons.amazon i:before {\n  content: \"\\e388\";\n}\n.glyphicons.tumblr i:before {\n  content: \"\\e389\";\n}\n.glyphicons.wordpress i:before {\n  content: \"\\e390\";\n}\n.glyphicons.instapaper i:before {\n  content: \"\\e391\";\n}\n.glyphicons.evernote i:before {\n  content: \"\\e392\";\n}\n.glyphicons.xing i:before {\n  content: \"\\e393\";\n}\n.glyphicons.zootool i:before {\n  content: \"\\e394\";\n}\n.glyphicons.dribbble i:before {\n  content: \"\\e395\";\n}\n.glyphicons.deviantart i:before {\n  content: \"\\e396\";\n}\n.glyphicons.read_it_later i:before {\n  content: \"\\e397\";\n}\n.glyphicons.linked_in i:before {\n  content: \"\\e398\";\n}\n.glyphicons.forrst i:before {\n  content: \"\\e399\";\n}\n.glyphicons.pinboard i:before {\n  content: \"\\e400\";\n}\n.glyphicons.behance i:before {\n  content: \"\\e401\";\n}\n.glyphicons.github i:before {\n  content: \"\\e402\";\n}\n.glyphicons.youtube i:before {\n  content: \"\\e403\";\n}\n.glyphicons.skitch i:before {\n  content: \"\\e404\";\n}\n.glyphicons.foursquare i:before {\n  content: \"\\e405\";\n}\n.glyphicons.quora i:before {\n  content: \"\\e406\";\n}\n.glyphicons.badoo i:before {\n  content: \"\\e407\";\n}\n.glyphicons.spotify i:before {\n  content: \"\\e408\";\n}\n.glyphicons.stumbleupon i:before {\n  content: \"\\e409\";\n}\n.glyphicons.readability i:before {\n  content: \"\\e410\";\n}\n.glyphicons.facebook i:before {\n  content: \"\\e411\";\n}\n.glyphicons.twitter i:before {\n  content: \"\\e412\";\n}\n.glyphicons.instagram i:before {\n  content: \"\\e413\";\n}\n.glyphicons.posterous_spaces i:before {\n  content: \"\\e414\";\n}\n.glyphicons.vimeo i:before {\n  content: \"\\e415\";\n}\n.glyphicons.flickr i:before {\n  content: \"\\e416\";\n}\n.glyphicons.last_fm i:before {\n  content: \"\\e417\";\n}\n.glyphicons.rss i:before {\n  content: \"\\e418\";\n}\n.glyphicons.skype i:before {\n  content: \"\\e419\";\n}\n.glyphicons.e-mail i:before {\n  content: \"\\e420\";\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/accordions.less",
    "content": "//\n// Accordions\n// --------------------------------------------------\n\n// Accordion\n// ------------------------- //\n\n.accordion {\n\tmargin: 0 0 10px;\n\tposition: relative;\n\t.accordion-group { \n\t\tborder-color: @contentBorder; .rounded();\n\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t.rounded(5px,5px,5px,5px); \n\t}\n\t.accordion-inner { font-size: 13px; background: @widgetBg; .rounded(0,0,5px,5px); border-color: @contentBorder; }\n\t.accordion-heading .accordion-toggle {\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tcolor: @bodyText;\n\t\ttext-decoration: none;\n\t\tfont-weight: 600;\n\t\t.rounded(5px,5px,0,0);\n\t\theight: 29px;\n\t\tpadding: 0 10px;\n\t\tline-height: 29px;\n\t}\n\t\n\t&.accordion-2 {\n\t\tborder: 1px solid @contentBorder;\n\t\t.accordion-heading .accordion-toggle {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\tbackground: @widgetBg;\n\t\t\theight: 38px;\n\t\t\tline-height: 38px;\n\t\t\t.rounded();\n\t\t\t&.glyphicons {\n\t\t\t\tpadding: 0 10px;\n\t\t\t\ti {\n\t\t\t\t\twidth: 30px;\n\t\t\t\t\tline-height: 38px;\n\t\t\t\t\theight: 38px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\t\tcolor: #cccccc;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\twidth: 30px;\n\t\t\t\t\t\tline-height: 38px;\n\t\t\t\t\t\theight: 38px;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.accordion-body.in {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t}\n\t\t.accordion-group {\n\t\t\tborder: none;\n\t\t\tmargin: 0;\n\t\t\t&:last-child {\n\t\t\t\t.accordion-body.in { border-top: 1px solid @contentBorder; }\n\t\t\t}\n\t\t}\n\t\t.accordion-inner { \n\t\t\tborder: none;\n\t\t\t.rounded();\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/alerts.less",
    "content": "//\n// Alerts\n// --------------------------------------------------\n\n// Alert\n// ------------------------- //\n\n.alert { \n\tmargin: 0 0 @spacing;\n\tcolor: #fff;\n\th4 { margin: 0 0 5px; color: #fff; }\n\tborder-color: @warningColor;\n\tbackground: @warningColor;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t\n\t&.alert-error {\n\t\tbackground: @dangerColor;\n\t\tcolor: #fff;\n\t\tborder-color: @dangerColor;\n\t\t.close { color: #fff; }\n\t\th4 { color: #fff; }\n\t}\n\t&.alert-primary {\n\t\tbackground: @primaryColor;\n\t\tcolor: #fff;\n\t\tborder-color: @primaryColor;\n\t\t.close { color: #fff; }\n\t\th4 { color: #fff; }\n\t}\n\t&.alert-info {\n\t\tbackground: #dff3f8;\n\t\tcolor: #7399b9;\n\t\tborder-color: #93b9d8;\n\t\t.close { color: #7399b9; }\n\t}\n\t&.alert-success {\n\t\tborder-color: @successColor;\n\t\tbackground: @successColor;\n\t\tcolor: #fff;\n\t\t.close, h4 { color: #fff; }\n\t}\n\t.close {\n\t\topacity: 1;\n\t\tfilter: alpha(opacity=100);\n\t\tcolor: #fff;\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/buttons.less",
    "content": "//\n// Buttons\n// --------------------------------------------------\n\n// Button\n// -------------------------\n\n.btn { font-weight: 600; .rounded(2px,2px,2px,2px); }\n.btn-block { width: 100%; }\n.btn + .btn:not(.btn-block) { margin: 0 0 0 5px; }\n.input-append, .input-prepend { .btn + .btn { margin-left: -1px; } }\n.btn-group { \n\t.btn + .btn:not(.btn-block) { margin-left: -1px; } \n\t&.dropup { \n\t\t.btn:first-child { .rounded(); } \n\t} \n}\n\n// Default\n// -------------------------\n\n.btn-default {\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);\n\tcolor: rgba(0,0,0,.6);\n\ttext-shadow: 0 1px 0 #fff;\n\tfont-weight: 600;\n\t#gradient > .vertical(lighten(#e7e7e7, 5%),#e7e7e7);\n\tborder: 1px solid darken(#e7e7e7, 10%);\n}\n.btn-group.open .btn-default.dropdown-toggle,\n.btn-default.disabled, .btn-default[disabled],\n.btn-default:hover, .btn-default:focus { background: #e8e8e8; }\n.btn-default:active, .btn-default.active { background: #e8e8e8; color: #fff; text-shadow: none; }\n.btn-default .caret { border-top-color: rgba(0,0,0,.5); }\n\n// Warning\n// -------------------------\n\n.btn-warning {\n\t#gradient > .vertical(lighten(@warningColor, 10%),@warningColor);\n\tborder: 1px solid darken(@warningColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-warning.dropdown-toggle,\n.btn-warning.disabled, .btn-warning[disabled],\n.btn-warning:hover, .btn-warning:focus { background: @warningColor; color: #fff; }\n.btn-warning:active, .btn-warning.active { background: @warningColor; color: #fff; }\n.btn-warning .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Info\n// -------------------------\n\n.btn-info {\n\tbackground: #93B9D8;\n\tborder: 1px solid #93B9D8;\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-info.dropdown-toggle,\n.btn-info.disabled, .btn-info[disabled],\n.btn-info:hover, .btn-info:focus { background: #93B9D8; color: #fff; }\n.btn-info:active, .btn-info.active { background: #93B9D8; color: #fff; }\n.btn-info .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Danger\n// -------------------------\n\n.btn-danger {\n\t#gradient > .vertical(lighten(@dangerColor, 10%), @dangerColor);\n\tborder: 1px solid darken(@dangerColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.5); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-danger.dropdown-toggle,\n.btn-danger.disabled, .btn-danger[disabled],\n.btn-danger:hover, .btn-danger:focus { background: @dangerColor; color: #fff; }\n.btn-danger:active, .btn-danger.active { background: @dangerColor; color: #fff; }\n.btn-danger .caret { border-top-color: rgba(255,255,255,.7); border-bottom-color: rgba(255,255,255,.7); }\n\n// Primary\n// -------------------------\n\n.btn-primary {\n\t#gradient > .vertical(lighten(@primaryColor, 10%), @primaryColor);\n\tborder: 1px solid darken(@primaryColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: rgba(255,255,255,.4); text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled, .btn-primary[disabled],\n.btn-primary:hover, .btn-primary:focus { background: @primaryColor; color: #fff; }\n.btn-primary:active, .btn-primary.active { background: @primaryColor; color: #fff; }\n.btn-primary .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; }\n\n// Inverse\n// -------------------------\n\n.btn-inverse {\n\t#gradient > .vertical(lighten(@inverseColor, 10%), @inverseColor);\n\tborder: 1px solid darken(@inverseColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: #919293; text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-inverse.dropdown-toggle,\n.btn-inverse.disabled, .btn-inverse[disabled],\n.btn-inverse:hover, .btn-inverse:focus { background: @inverseColor; color: #fff; }\n.btn-inverse:active, .btn-inverse.active { background: @inverseColor; color: #fff; }\n.btn-inverse .caret { border-top-color: #fff; border-bottom-color: #fff; }\n\n// Success\n// -------------------------\n\n.btn-success {\n\t#gradient > .vertical(lighten(@successColor, 10%), @successColor);\n\tborder: 1px solid darken(@successColor, 10%);\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t&.glyphicons {\n\t\ti:before { color: #a2bc9b; text-shadow: none; }\n\t}\n}\n.btn-group.open .btn-success.dropdown-toggle,\n.btn-success.disabled, .btn-success[disabled],\n.btn-success:hover, .btn-success:focus { background: @successColor; color: #fff; }\n.btn-success:active, .btn-success.active { background: @successColor; color: #fff; }\n.btn-success .caret { border-top-color: #fff; border-bottom-color: #fff; }\n\n// Button groups\n// -------------------------\n\n.btn-group {\n\t.btn-primary {\n\t\t&:not(.dropdown-toggle),\n\t\t&:not('[data-toggle*=\"\"]') { margin-right: 2px; }\n\t}\n}\n.btn-group-vertical.block { display: block; }\n.btn-group.btn-block {\n\tpadding: 0;\n\tposition: relative;\n\t.leadcontainer {\n\t\tleft: 0;\n\t    position: absolute;\n\t    right: 29px;\n\t    > .btn:first-child {\n\t    \t.rounded();\n\t\t\tmargin-left: 0;\n\t\t\t-webkit-border-bottom-left-radius: 4px;\n\t\t\tborder-bottom-left-radius: 4px;\n\t\t\t-webkit-border-top-left-radius: 4px;\n\t\t\tborder-top-left-radius: 4px;\n\t\t\t-moz-border-radius-bottomleft: 4px;\n\t\t\t-moz-border-radius-topleft: 4px;\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\t.dropdown-lead {\n\t    box-sizing: border-box;\n\t    width: 100%;\n\t}\n\t.dropdown-toggle {\n\t\twidth: 30px;\n\t    float: right;\n\t    box-sizing: border-box;\n\t    text-align: center;\n\t    padding-left: 0;\n\t    padding-right: 0;\n\t}\n}\n\n// Button icon stacked\n// -------------------------\n\n.btn-icon-stacked {\n\ttext-align: left;\n\tpadding: 5px 5px 5px 45px;\n\ti {\n\t\tdisplay: block;\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tposition: absolute;\n\t\tleft: 10px;\n\t\ttop: 10px;\n\t\t&:before { left: auto; top: auto; position: relative; text-align: center; }\n\t}\n\tspan { \n\t\tdisplay: block; \n\t\tfont-size: 13px;\n\t\tline-height: normal;\n\t}\n}\n\n// Button other styles\n// -------------------------\n\n.btn-facebook {\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t#gradient > .vertical(lighten(#5d7cb6, 10%), #5d7cb6);\n\tborder: 1px solid #5d7cb6;\n\ti:before { color: #fff; }\n\t&:hover { background: lighten(#5d7cb6, 10%); color: #fff; }\n}\n.btn-google {\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.1);\n\t#gradient > .vertical(lighten(#9e3838, 10%), #9e3838);\n\tborder: 1px solid #9e3838;\n\ti:before { color: #fff; }\n\t&:hover { background: lighten(#9e3838, 10%); color: #fff; }\n}\n\n// Toggle view code Button\n// -------------------------\n\n.btn-toggle-code { position: absolute; bottom: 0; right: 0; z-index: 1000; .rounded(); &.outside { bottom: -24px; } }\n\n// ONLY Buttons on UI Demo Page (Table)\n// -------------------------\n\n#demo_buttons {\n\t.btn-block { max-width: 200px; margin: 0 auto; }\n\tthead th { width: 25%; }\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/less/calendar.less",
    "content": "//\n// Calendar\n// --------------------------------------------------\n\n// Calendar\n// ------------------------- //\n\n.fc-state-highlight { background: rgba(0,0,0,.2); }\n#external-events ul { list-style: none; margin: 0 0 20px; }\n#external-events li {\n\tmargin: 0 0 5px;\n\tpadding: 2px 5px;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\ttext-shadow: 0 1px 0 rgba(0,0,0, .5);\n\tfont-size: .85em;\n\tcursor: pointer;\n\t.rounded(3px,3px,3px,3px);\n\t.bevelEmboss();\n}\n#external-events li.glyphicons { \n\tpadding: 2px 5px 2px 30px;\n\tdisplay: block;\n\ti:before { font-size: 14px; color: #fff; top: 0; left: 0; background: rgba(0,0,0,.3); height: 24px; width: 24px; line-height: 24px; text-align: center; .rounded(3px, 0, 0, 3px); border-right: 1px solid rgba(255,255,255,.4); }\n}\n.fc-header-title h2 { font-size: 16pt; line-height: 25px; }\n.fc-event-skin { border-color: @primaryColor; background-color: @primaryColor; text-shadow: 0 1px 0 rgba(0,0,0, .5); .bevelEmboss(); }\n.fc-event-time, .fc-event-title { padding: 0 5px; }\n#calendar .btn-group .btn-primary {\n\tmargin-right: 2px;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/choose.less",
    "content": "// Choose Preview\n// -------------------------\n\n#choose-preview {\n    padding: 50px 0;\n    h2 {\n    \tspan.text-primary { font-size: 26pt; font-weight: bold; top: auto; }\n    \tmargin-left: 0;\n    }\n    .control-group { margin: 0 0 5px; }\n    select { color: #000; }\n    .heading-buttons { margin-bottom: 10px; }\n   \t.box {\n   \t\tpadding: 10px;\n   \t\t.options { display: none; }\n   \t\t.actions a { \n   \t\t\tdisplay: none;\n   \t\t\t&.btn-active { display: inline-block; }\n   \t\t}\n   \t\th3 { text-transform: uppercase; margin: 0 0 12px; }\n   \t\t&.active {\n   \t\t\tbackground: @widgetBg;\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tpadding: @spacing;\n   \t\t\t.options { display: block; }\n   \t\t\th3 { color: #000; text-shadow: 0 1px 0 #fff; }\n   \t\t} \n   \t}\n   \t&.style-dark {\n   \t\t.well {\n   \t\t\tbackground: @widgetBg;\n   \t\t}\n   \t\t.box {\n   \t\t\t&.active {\n   \t\t\t\tbackground: @contentBg1;\n   \t\t\t\tborder-color: @contentBorder2;\n   \t\t\t\th3 {\n   \t\t\t\t\ttext-shadow: none;\n   \t\t\t\t\tcolor: #fff;\n   \t\t\t\t}\n   \t\t\t\thr { border-top-color: @contentBorder2; }\n   \t\t\t}\n   \t\t}\n   \t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/documentation.less",
    "content": "//\n// Documentation\n// --------------------------------------------------\n\n// Icons\n// ------------------------- //\n\n#docs_icons {\n\ttext-align: center;\n\tpadding: 0 20px;\n\t.glyphicons {\n\t\tdisplay: inline-block;\n\t\t*display: inline;\n\t\t*zoom: 1;\n\t\twidth: 125px;\n\t\tfont-size: 12px;\n\t\tline-height: 48px;\n\t\toverflow: hidden;\n\t\tcolor: @bodyText;\n\t}\n\t.glyphicons i:before {\n\t\tline-height: 55px !important;\n\t\tcolor: @primaryColor;\n\t}\n}\n\n// Documentation\n// ------------------------- //\n\n.documentation {\n\tul {\n\t\tul { margin-bottom: 10px; }\n\t}\n\t.span3 .menu.affix { position: fixed; top: 20px; width: 220px; }\n\t\n\t.show-grid {\n\t\tmargin-top: 10px;\n\t\tmargin-bottom: 20px;\n\t\t[class*=\"span\"] {\n\t\t\tbackground-color: lighten(#232628, 20%);\n\t\t\ttext-align: center;\n\t\t\t.rounded(3px,3px,3px,3px);\n\t\t\tmin-height: 40px;\n\t\t\tline-height: 40px;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t.show-grid {\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\t[class*=\"span\"] {\n\t\t\t\tbackground-color: lighten(#232628, 40%);\n\t\t\t}\n\t\t}\t\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/form-wizards.less",
    "content": "//\n// Form Wizards\n// --------------------------------------------------\n\n// Wizards\n// ------------------------- //\n\n.wizard {\n\t.wizard-head {\n\t\tbackground: #fff;\n\t\tborder: 1px solid #e5e5e5;\n\t\tborder-bottom: none;\n\t}\n}\n\n.bwizard-steps .label {\n\tposition: relative;\n\ttop: -1px;\n\tmargin: 0 5px 0 0;\n\tpadding: 1px 5px 2px;\n}\n\n.bwizard-steps .active .label {\n\tbackground-color: #333;\n}\n\n.bwizard-steps {\n\tdisplay: block;\n\tmargin: 0;\n\tpadding: 0;\n\theight: 40px;\n\tlist-style: none;\n\tli {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tposition: relative;\n\t\tmargin-right: 5px;\n\t\tline-height: 40px;\n\t\theight: 40px;\n\t\tbackground: #fafafa;\n\t\ta {\n\t\t\tdisplay: block;\n\t\t\theight: 40px;\n\t\t\tline-height: 40px;\n\t\t\tpadding: 0 20px 0 40px;\n\t\t}\n\t\t&.active {\n\t\t\tcolor: #fff;\n\t\t\tbackground: @primaryColor;\n\t\t\t&:after { border-left-color: @primaryColor; }\n\t\t\ta { color: #fff; cursor: default; }\n\t\t}\n\t\t&:after {\n\t\t\tposition: absolute;\n\t\t\tright: -20px;\n\t\t\ttop: 0;\n\t\t\theight: 0;\n\t\t\twidth: 0;\n\t\t\tborder-bottom: 20px inset transparent;\n\t\t\tborder-left: 20px solid #fafafa;\n\t\t\tborder-top: 20px inset transparent;\n\t\t\tcontent: \"\";\n\t\t\tz-index: 2;\n\t\t}\n\t\t&:before {\n\t\t\tposition: absolute;\n\t\t\tleft: 0;\n\t\t\ttop: 0;\n\t\t\theight: 0;\n\t\t\twidth: 0;\n\t\t\tborder-bottom: 20px inset transparent;\n\t\t\tborder-left: 20px solid #fff;\n\t\t\tborder-top: 20px inset transparent;\n\t\t\tcontent: \"\";\n\t\t}\n\t\t&:last-child:after {\n\t\t\t\n\t\t}\n\t\t&:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t\t&:first-child:before {\n\t\t\tborder: none;\n\t\t}\n\t\t&:first-child a { padding-left: 20px; }\n\t}\n}\n\n.bwizard-steps a:hover {\n\ttext-decoration: none;\n}\n\n.bwizard-steps.clickable li:not (.active ) {\n\tcursor: pointer;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ) {\n\tbackground: #ccc;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ):after {\n\tborder-left-color: #ccc;\n}\n\n.bwizard-steps.clickable li:hover:not (.active ) a {\n\tcolor: #08c;\n}\n\n// Responsive\n// ------------------------- //\n\n@media ( max-width : 480px) { /* badges only on small screens */\n\t.bwizard-steps li:after,.bwizard-steps li:before {\n\t\tborder: none\n\t}\n\t.bwizard-steps li,.bwizard-steps li.active,.bwizard-steps li:first-child,.bwizard-steps li:last-child\n\t\t{\n\t\tmargin-right: 0;\n\t\tpadding: 0;\n\t\tbackground-color: transparent\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/forms.less",
    "content": "//\n// Forms\n// --------------------------------------------------\n\n// Inline\n// -------------------------\n\n.form-inline.small {\n\tinput,select { margin: 0 5px 0 0; .rounded(); padding: 1px 5px; border-color: #d8d9da; color: #a7a7a7; }\n\tselect { padding: 1px 0; height: 23px; &:last-child { margin-right: 0; } }\n\tlabel { float: left; margin: 0 5px 0 0; display: block; }\n\t.input-append \n\t{\n\t\t&.block { display: block; }\n\t\tinput { margin: 0; width: 85%; }\n\t\t.add-on {\n\t\t\tpadding: 1px 3px;\n\t\t\tmargin: 0 0 0 -1px;\n\t\t\t.rounded();\n\t\t\tbackground: #fff;\n\t\t\tcolor: #d8d9da;\n\t\t\tborder-color: #d8d9da;\n\t\t\ti:before { top: 4px; left: 4px; font-size: 14px; color: #d0d1d1; }\n\t\t}\n\t}\n}\n\n// General\n// -------------------------\n\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n\tborder-color: #c1c1c1;\n  \t-webkit-box-shadow: none;\n  \t-moz-box-shadow: none;\n  \tbox-shadow: none;\n}\nselect, 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 { font-size: 13px; }\n.uniformjs .radio .disabled input[type=\"radio\"], \n.uniformjs .checkbox .disabled input[type=\"checkbox\"] { margin-left: 0; }\n.uniformjs .radio, .uniformjs .checkbox { padding-left: 0; }\n.uniformjs .radio { height: auto; }\n.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 3px; }\n.uniformjs label.radio { margin-bottom: 0; }\n.uniformjs label.radio.inline { margin: 0; }\n.checkbox.inline { padding-bottom: 1px; }\n.uniformjs .radio span { margin: 2px 0 0; }\n.uniformjs .checkbox span { margin: -2px 0 0; }\nlabel, input, button, select, textarea { font-size: 13px; }\n.input-full input { width: 83%; height: 17px; }\nlegend {\n\tline-height: normal;\n\theight: auto;\n\tfont-size: 18px;\n\tmargin: 0 0 6px;\n\ttext-align: left;\n\tpadding: 0;\n\tborder: 0;\n\tcolor: #797979;\n}\n.btn-group > .btn, .btn-group > .dropdown-menu { font-size: 13px; }\n.strong { font-weight: bold; }\ninput[type=text],\ninput[type=password],\nselect, textarea { \n\tborder-color: #D8D9DA;\n\tcolor: #A7A7A7;\n}\n\n.control-label.center { text-align: center; }\n.form-actions { background: none; border: none; margin: 0; }\n.form-horizontal {\n\t.form-actions { margin-top: 0; padding: 0; }\n\t.controls { margin-left: 145px; }\n\t.control-label { width: 125px; }\n\t.control-group:last-child { margin: 0; }\n}\n.input-prepend .add-on,\n.input-append .add-on {\n\tbackground: #fff;\n\ti:before { color: #D0D1D1; }\n\ticon { margin-top: 0; }\n}\n.input-prepend .add-on.glyphicons,\n.input-append .add-on.glyphicons {\n\tbackground: #fff;\n\ti:before { font-size: 14px; left: 7px; top: 7px; color: #D0D1D1; }\n}\n.input-append .add-on.glyphicons i:before { left: 6px; }\n\n// Multiselect\n// -------------------------\n\n.ms-container .ms-selectable li.ms-hover, .ms-container .ms-selection li.ms-hover {\n\tbackground: @primaryColor;\n}\n.ms-container {\n\t.custom-header {\n\t\theight: 30px; \n\t\tline-height: 30px; \n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tpadding: 0 @spacing;\n\t\tfont-weight: 600;\n\t\tborder: 1px solid @contentBorder;\n\t\t&:not(.custom-footer) { border-bottom: none; }\n\t\t&.custom-footer { border-top: none; } \n\t}\n} \n\n// Select2 Templating\n// -------------------------\n\n.select2-container img.flag,\n.select2-drop img.flag {\n\theight: 10px;\n\twidth: 15px;\n\tpadding-right: 10px;\n}\n.select2-container .select2-choice {\n\tborder-color: @contentBorder;\n\tbackground: #fff;\n\t.rounded();\n}\n.select2-container-multi .select2-choices {\n\tborder-color: @contentBorder;\n\tbackground: #fff;\t\n}\n.select2-container .select2-choice div {\n\tborder-color: @containerBorder;\n\tbackground: #fff;\n\t.rounded();\n}\n.select2-drop {\n\tborder-color: @containerBorder;\n\t#reset .boxShadow();\n}\n.select2-container-multi .select2-choices .select2-search-choice {\n\tmargin: 5px 0 3px 5px;\n\tborder-color: @containerBorder;\n}\n\n// DateTimePicker\n// -------------------------\n\n.datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active:hover:hover, .datetimepicker table tr td span.active.disabled:hover, .datetimepicker table tr td span.active.disabled:hover:hover, .datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active:hover.disabled, .datetimepicker table tr td span.active.disabled.disabled, .datetimepicker table tr td span.active.disabled:hover.disabled, .datetimepicker table tr td span.active[disabled], .datetimepicker table tr td span.active:hover[disabled], .datetimepicker table tr td span.active.disabled[disabled], .datetimepicker table tr td span.active.disabled:hover[disabled],\n.datetimepicker table tr td.active:hover, .datetimepicker table tr td.active:hover:hover, .datetimepicker table tr td.active.disabled:hover, .datetimepicker table tr td.active.disabled:hover:hover, .datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active:hover.disabled, .datetimepicker table tr td.active.disabled.disabled, .datetimepicker table tr td.active.disabled:hover.disabled, .datetimepicker table tr td.active[disabled], .datetimepicker table tr td.active:hover[disabled], .datetimepicker table tr td.active.disabled[disabled], .datetimepicker table tr td.active.disabled:hover[disabled] {\n\tbackground: @primaryColor;\n}\n\n// Bootstrap TimePicker\n.bootstrap-timepicker-widget table td { font-size: 13px; }\n.bootstrap-timepicker {\n\t> [class*=\"icon-\"] { vertical-align: text-top; margin: 0 0 0 -22.5px; pointer-events: none; position: relative; cursor: pointer; }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/front.less",
    "content": "//\n// Front customizations\n// --------------------------------------------------\n\n// Top menu\n// ------------------------- //\n\nhtml.front {\n\t.menu-hidden {\n\t\t.navbar.main { height: 99px; }\n\t}\n\t.navbar.main {\n\t\theight: auto;\n\t\tleft: 0 !important;\n\t\t.secondary {\n\t\t\theight: 49px;\n\t\t\tline-height: 49px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tbackground-color: @navbarSecondaryBg;\n\t\t\tborder-bottom: 1px solid @topnavBorder1;\n\t\t\t.appbrand {\n\t\t\t\tfont-weight: 700;\n\t\t\t\tfont-size: 25pt;\n\t\t\t\tcolor: #fff;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0 8px;\n\t\t\t}\n\t\t}\n\t\tul.topnav:first-of-type {\n\t\t\tborder-left: none;\n\t\t\tmargin-left: -8px;\n\t\t\t> li:first-of-type {\n\t\t\t\tborder-left: none;\n\t\t\t}\n\t\t}\n\t\tli.search { \n\t\t\t#reset .boxShadow();  \n\t\t}\n\t\tli.glyphs + .glyphs {\n\t\t\tpadding-left: 0;\n\t\t}\n\t\tli.glyphs {\n\t\t\tborder: none; \n\t\t\t#reset .boxShadow(); \n\t\t\tmargin-left: 0;\n\t\t\tul li {\n\t\t\t\t.glyphicons {\n\t\t\t\t\tcolor: @navbarGlypsText;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\twidth: 32px;\n\t\t\t\t\t\tvertical-align: top;\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t&.active, &:hover {\n\t\t\t\t\t.glyphicons { color: #fff; }\n\t\t\t\t}\n\t\t\t\t&.single { \n\t\t\t\t\t&, &:last-child { .rounded(5px,5px,5px,5px); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t#content {\n\t\tmargin: 0;\n\t}\n\t#footer {\n\t\tbackground: #1f2123;\n\t\tcolor: #919192;\n\t\ta:not(.btn) { color: @primaryColor; }\n\t\t.copy { \n\t\t\tbackground: #000; \n\t\t\tcolor: #2a2a2a;\n\t\t\ta { color: #2a2a2a; text-decoration: none; }\n\t\t\ttext-align: left;\n\t\t\t.appbrand {\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 10px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-size: 15px;\n\t\t\t\tfont-weight: 700;\n\t\t\t} \n\t\t}\n\t\t.box-generic {\n\t\t\t#reset .boxShadow();\n\t\t\tbackground: #191a1c;\n\t\t\tborder: none;\n\t\t}\n\t\th4 {\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-size: 15px;\n\t\t\tfont-weight: 700;\n\t\t\ttext-shadow: none;\n\t\t\tcolor: #fff;\n\t\t\tmargin: 0 0 8px;\n\t\t}\n\t\tul {\n\t\t\tlist-style: none;\n\t\t\tmargin: 0 0 @spacing;\n\t\t\tpadding: 0;\n\t\t\tli {\n\t\t\t\tdisplay: block;\n\t\t\t\tbackground: #191a1c;\n\t\t\t\tmargin: 0 0 1px;\n\t\t\t\tline-height: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\ta {\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\theight: 30px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tpadding: 0 10px;\n\t\t\t\t}\n\t\t\t\t&:first-of-type { .rounded(5px,5px,0,0); }\n\t\t\t\t&:last-of-type { margin: 0; .rounded(0,0,5px,5px); }\n\t\t\t}\n\t\t\t&.icons {\n\t\t\t\tli {\n\t\t\t\t\tpadding: 0 10px 0 35px;\n\t\t\t\t\ti:before { top: 7px; left: 10px; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t#contact_gmap { height: 400px; }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/less/gallery.less",
    "content": "//\n// Gallery\n// --------------------------------------------------\n\n// Gallery\n// ------------------------- //\n\n.gallery {\n\tul { \n\t\tmargin: 0; \n\t\tpadding: 0; \n\t\tlist-style: none;\n\t\tli {\n\t\t\t.thumb {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 5px;\n\t\t\t\tmargin-bottom: 10px;\n\t\t\t\tz-index: 1;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t&.span2:nth-child(6n+7) { margin-left: 0; }\n\t\t\t&.span3:nth-child(4n+5) { margin-left: 0; }\n\t\t\t&.span4:nth-child(3n+4) { margin-left: 0; }\n\t\t}\n\t}\n\t&.gallery-masonry {\n\t\tli { &[class*=\"span\"] { margin-left: 0; } }\n\t}\n\t&.gallery-2 {\n\t\tli {\n\t\t\t.thumb { padding: 0; border-color: #4c4c4c; }\n\t\t}\n\t}\n}\n.thumb { \n\tdisplay: block; \n\tpadding: 3px; \n\tborder: 1px solid @contentBorder;\n\t&, img { .rounded(5px,5px,5px,5px); }\n}\n\n// Thumbnails\n// ------------------------- //\n\n.thumbnails {\n\tmargin: 0;\n\t> li {\n\t\tmargin-bottom: @spacing;\n\t\t.thumbnail {\n\t\t\tborder-color: @contentBorder;\n\t\t\tbackground: @widgetBg;\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t.caption { color: @bodyText; }\n\t\t}\n\t\ta.thumbnail:hover, a.thumbnail:focus {\n\t\t\tborder-color: @primaryColor;\n\t\t\t-webkit-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\t-moz-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\tbox-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t\t\ttext-decoration: none;\n\t\t}\n\t}\n}\n.thumbnail { border-color: @contentBorder; }\na.thumbnail { .caption { display: block; } }\na.thumbnail:hover, a.thumbnail:focus {\n\tborder-color: @primaryColor;\n\t-webkit-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\t-moz-box-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\tbox-shadow: 0 1px 4px fade(@primaryColor, 25%);\n\ttext-decoration: none;\n}\n\n// Carousels\n// ------------------------- //\n\n.carousel {\n\tmargin-bottom: @spacing;\n\t.rounded(5px, 5px, 5px, 5px);\n\t.carousel-control {\n\t\tfont-size: 45px;\n\t\topacity: 1;\n\t\tfilter: alpha(opacity=100);\n\t\tbackground: @widgetBgGray;\n\t\tcolor: #000;\n\t\tborder-color: #000;\n\t\ttext-shadow: @bodyTextShadow;\n\t\t&.right { text-align: center; }\n\t}\n\t.carousel-inner {\n\t\t.rounded(5px, 5px, 5px, 5px);\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\tborder: 1px solid @contentBorder;\n\t}\n\t.item {\n\t\t.rounded(5px, 5px, 5px, 5px);\n\t\timg { min-width: 100%; }\n\t}\n\t.carousel-caption {\n\t\tbackground: fade(@widgetBgGray, 95%);\n\t\ttext-shadow: @bodyTextShadow;\n\t\tp { color: @bodyText; }\n\t\th4 { font-size: 12pt; color: #000; font-weight: 600; }\n\t\ta { text-decoration: underline; color: #000; }\n\t}\n\t&.carousel-1 {\n\t\theight: 223px;\n\t\tmargin-bottom: 33px;\n\t\tbackground: @widgetBgGray;\n\t\t.item {\n\t\t\theight: 223px;\n\t\t\toverflow: hidden;\n\t\t\timg { min-height: 100%; .rounded(0, 5px, 5px, 0); }\n\t\t}\n\t\t.carousel-indicators {\n\t\t\ttop: auto;\n\t\t\tbottom: -23px;\n\t\t\tright: 0;\n\t\t\tli {\n\t\t\t\tbackground: lighten(@primaryColor, 20%);\n\t\t\t\t&.active { background: @primaryColor; }\n\t\t\t}\n\t\t}\n\t\t.carousel-caption {\n\t\t\theight: 223px-30px;\n\t\t\tbackground: @widgetBgGray;\n\t\t\ttop: 0;\n\t\t}\n\t}\n}\n\n// Jcrop\n// ---------------------------\n\n/* Apply these styles only when #preview-pane has\n   been placed within the Jcrop widget */\n.jcrop-holder #preview-pane {\n  display: block;\n  position: absolute;\n  z-index: 2000;\n  top: 10px;\n  right: 10px;\n  padding: 6px;\n  background-color: white;\n\n  .rounded(5px,5px,5px,5px);\n\n  -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n  box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2);\n}\n\n/* The Javascript code will set the aspect ratio of the crop\n   area based on the size of the thumbnail preview,\n   specified here */\n#preview-pane .preview-container {\n  width: 125px;\n  height: 85px;\n  overflow: hidden;\n}\n\n.jcrop-holder {\n\tmargin: 0 auto;\n\t.rounded(5px,5px,5px,5px);\n\timg { .rounded(5px,5px,5px,5px); }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/guidedtour.less",
    "content": "//\n// Guided Tour\n// --------------------------------------------------\n\n// Guided Tour Button\n// -------------------------\n\n#guided-tour {\n\tposition: fixed;\n\tz-index: 10000;\n\ttop: 100px; \n\tright: -100%;\n\twidth: 40px;\n\theight: 20px;\n\tpadding: 10px;\n\tbackground: @primaryColor;\n\tfont-size: 14pt;\n\tcolor: #fff;\n\ttext-align: center;\n\tbox-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\t-moz-box-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\t-webkit-box-shadow: -1px 3px 5px rgba(0,0,0,.2);\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.2);\n\tcursor: pointer;\n\t.transition(width .5s ease);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\t.hide { \n\t\tfloat: left; \n\t\theight: 0; \n\t\tdisplay: inline-block !important; \n\t\topacity: 0; \n\t\t.transition(opacity .6s ease);\n\t}\n\t#close-tour { \n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tpadding: 10px;\n\t\tcolor: rgba(0,0,0,.8);\n\t\ttext-shadow: 0 1px 0 #fff;\n\t\tbackground: rgba(255,255,255,.6);\n\t\t&:hover { background: rgba(255,255,255,.9); }\n\t}\n\t&:hover {\n\t\twidth: 100px;\n\t\tpadding: 10px 40px 10px 10px;\n\t\t.hide { padding: 0 5px 0 0; opacity: 1; height: auto; }\n\t\t#close-tour { display: block; }\n\t}\n}\n\n// Guided Tour\n// -------------------------\n\n#tlyPageGuideWrapper #tlyPageGuideMessages { \n\tmargin: 0; width: 100%; height: auto; padding: 20px; z-index: 9000;\n\tdiv { margin: 0 90px 0 120px; }\n\th4 { color: #fff; }\n\tp:last-child { margin: 0; }\n}\n#tlyPageGuideWrapper #tlyPageGuide li { background: rgba(0,0,0,.4); }\n#tlyPageGuideWrapper #tlyPageGuide li:hover { background: rgba(0,0,0,.9); }\n#tlyPageGuideWrapper #tlyPageGuide li {\n\t&.tlypageguide_right:after,\n\t&.tlypageguide_left:after,\n\t&.tlypageguide_top:after { border-top-color: rgba(0,0,0,.3); }\n\t&.tlypageguide_bottom:after { border-bottom-color: rgba(0,0,0,.3); }\n\t&.tlypageguide_right:hover,\n\t&.tlypageguide_left:hover,\n\t&.tlypageguide_top:hover { \n\t\tmargin: 0;\n\t\t&:after { border-top-color: rgba(0,0,0,.9); } \n\t}\n\t&.tlypageguide_bottom:hover { \n\t\tmargin: 0;\n\t\t&:after { border-bottom-color: rgba(0,0,0,.9); } \n\t}\n}\n.tlypageguide_shadow:after { \n\tbackground: fade(@primaryColor, 20%);\n\tbox-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n\t-moz-box-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n\t-webkit-box-shadow: 0 0 1px 1px fade(@primaryColor, 70%);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active { background: @primaryColor; }\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n\tborder-top-color: @primaryColor;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n\tborder-bottom-color: @primaryColor;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back, #tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n\ttop: 29px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span { top: 20px; background: @primaryColor; }\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close { background: @primaryColor; }"
  },
  {
    "path": "target/mongo/style/eu/theme/less/jquery-ui.less",
    "content": "//\n// jQueryUI\n// --------------------------------------------------\n\n// General\n// ------------------------- //\n\n.ui-widget-header {\n\tborder-color: @primaryColor;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default\n{\n\tbackground: #fafafa;\n\tborder-color: #dddddd;\n\tcolor: #797979;\n}\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active\n{\n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.ui-widget-content { border: none; }\n\n// Datepicker\n// ------------------------- //\n\n.ui-datepicker {\n\tpadding: 10px;\n\tbackground: #fff;\n\tfont-size: 12px;\n\t.ui-widget-header {\n\t\tbackground: none;\n\t\tcolor: #4d4d4d;\n\t\tborder: none;\n\t}\n\t.ui-datepicker-calendar {\n\t\tborder-collapse: collapse;\n\t\tthead { \n\t\t\tbackground: #cecece;\n\t\t\tth { padding: .5em .3em; } \n\t\t}\n\t\ttbody {\n\t\t\ttd { \n\t\t\t\tpadding: 0;\n\t\t\t\tspan { text-align: center; }\n\t\t\t\ta {\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\t&.ui-state-default { \n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tcolor: #4d4d4d;\n\t\t\t\t\t\tfont-weight: 600; \n\t\t\t\t\t}\n\t\t\t\t\t&.ui-state-active {\n\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t}\n}\n\n.widget-body-gray {\n\t.ui-datepicker {\n\t\tbackground: none;\n\t\tpadding: 0;\n\t\tfont-size: 12px;\n\t\t.ui-widget-header {\n\t\t\tbackground: none;\n\t\t\tcolor: #4d4d4d;\n\t\t\tborder: none;\n\t\t}\n\t\t.ui-datepicker-calendar {\n\t\t\tborder-collapse: collapse;\n\t\t\tthead { \n\t\t\t\tbackground: #cecece;\n\t\t\t\tth { padding: .5em .3em; } \n\t\t\t}\n\t\t\ttbody {\n\t\t\t\ttd { \n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tspan { text-align: center; }\n\t\t\t\t\ta {\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t&.ui-state-default { \n\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t\tcolor: #4d4d4d;\n\t\t\t\t\t\t\tfont-weight: 600; \n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.ui-state-active {\n\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ui-datepicker-inline { width: 100%; padding: 0; }\n.datepicker-inline { margin: 0 0 5px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/less/labels.less",
    "content": "//\n// Labels\n// --------------------------------------------------\n\n// Label\n// -------------------------\n\n.label {\n\t&.large {\n\t\theight: 29px;\n\t\tpadding: 0 10px;\n\t\tline-height: 29px;\n\t\tbackground: #e5e5e5;\n\t\tcolor: #64625f;\n\t\ttext-shadow: 0 1px 0 #fff;\n\t}\n\t&.label-primary { background: @primaryColor; }\n\t&.label-warning { background: @warningColor; }\n\t&.label-important { background: @dangerColor; }\n\t&.label-success { background: @successColor; }\n\t&.label-block { display: block; }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/landings.less",
    "content": "//\n// Landing pages\n// --------------------------------------------------\n\n#landing_1 {\n\t.mosaic-line {\n\t\theight: 58px;\n\t\tline-height: 58px;\n\t\tborder-bottom: 1px solid #e5e5e5;\n\t\tbackground: #f9f9f9;\n\t\t&.mosaic-line-2 {\n\t\t\tline-height: 100px;\n\t\t\theight: 100px;\n\t\t\th2 { \n\t\t\t\tline-height: 100px;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tspan { color: #ccc; } \n\t\t\t}\n\t\t}\n\t}\n\t.banner {\n\t\tbackground: #000;\n\t\theight: 321px;\n\t\t.banner-wrapper {\n\t\t\theight: 321px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\t&.banner-1 {\n\t\t\t\tmargin: 0;\n\t\t\t\tbackground: #000;\n\t\t\t\th3 {\n\t\t\t\t\theight: 46px;\n\t\t\t\t\tline-height: 46px;\n\t\t\t\t\ttop: 65px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\tfont-size: 22pt;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t}\n\t\t\t\tp {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 126px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tbackground: #1f1e1e;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tline-height: 25px;\n\t\t\t\t\twidth: 370px;\n\t\t\t\t\ttext-align: right;\n\t\t\t\t\tpadding: 10px 15px;\n\t\t\t\t\ta { text-decoration: underline; color: @primaryColor; }\n\t\t\t\t}\n\t\t\t\t.btn { \n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 232px;\n\t\t\t\t\tright: 27px; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n#landing_2 {\n\t.mosaic-line {\n\t\theight: 58px;\n\t\tline-height: 58px;\n\t\tborder-bottom: 1px solid #e5e5e5;\n\t\tbackground: #f9f9f9;\n\t\t&.mosaic-line-2 {\n\t\t\tline-height: 100px;\n\t\t\theight: 100px;\n\t\t\th2 { \n\t\t\t\tline-height: 100px;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tspan { color: #ccc; } \n\t\t\t}\n\t\t}\n\t}\n\t.banner {\n\t\tbackground: #1f2123;\n\t\theight: 356px;\n\t\t.banner-wrapper {\n\t\t\theight: 356px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\t&.banner-1 {\n\t\t\t\tmargin: 0;\n\t\t\t\th3 {\n\t\t\t\t\theight: 46px;\n\t\t\t\t\tline-height: 46px;\n\t\t\t\t\ttop: 55px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-size: 27pt;\n\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t\tp {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 115px;\n\t\t\t\t\tright: 27px;\n\t\t\t\t\tbackground: #1f1e1e;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tline-height: 25px;\n\t\t\t\t\twidth: 380px;\n\t\t\t\t\ttext-align: right;\n\t\t\t\t\tpadding: 10px 15px;\n\t\t\t\t\ta { text-decoration: underline; color: @primaryColor; }\n\t\t\t\t}\n\t\t\t\t.btn { \n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbottom: 40px;\n\t\t\t\t\t&.btn-primary { right: 230px; }\n\t\t\t\t\t&.btn-danger { right: 27px; bottom: 37px; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Other\n// -------------------------\n\n.container-960 { width: 960px; margin: 0 auto; }\n.separator-line { width: 100%; height: 1px; background: #e5e5e5; margin-bottom: 10px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/less/layout.less",
    "content": "//\n// Layout\n// --------------------------------------------------\n\n// General\n// -------------------------\n\n.innerLR { padding: 0 @spacing; position: relative; }\n.innerTB { padding: @spacing 0; position: relative; }\n.innerAll { padding: @spacing; position: relative; }\n.innerL { padding-left: @spacing; position: relative; }\n.innerR { padding-right: @spacing; position: relative; }\n.innerT { padding-top: @spacing; position: relative; }\n.innerB { padding-bottom: @spacing; position: relative; }\n\n// Other Utilities\n// -------------------------\n\n.center { text-align: center !important; }\n.margin-bottom-none { margin-bottom: 0 !important; }\n.margin-none { margin: 0 !important; }\n.padding-none { padding: 0 !important; }\n.border-none { border: none !important; }\n.box-shadow-none { #reset .boxShadow(); }\n.padding-none-TB { padding-bottom: 0 !important; padding-top: 0 !important; }\n.relativeWrap { position: relative; }\n.text-primary { color: @primaryColor; }\n.text-uppercase { text-transform: uppercase; }\n.text-faded { color: #d7d7d7 !important; }\n.text-large { font-size: 35px; line-height: 40px; }\n.text-xlarge { font-size: 50px; line-height: 50px; }\n.text-xxlarge { font-size: 70px; line-height: 70px; }\n.text-underline { text-decoration: underline; }\n.text-right { text-align: right !important; }\n.containerBg { background: @containerBg; }\n.whiteBg { background: #fff; }\n\n// Grid\n// -------------------------\n\n.row-merge {\n\tposition: relative;\n\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\tmargin-left: 0;\n\t\t&:after { position: absolute; top: 0; bottom: 0; width: 1px; background: @contentBorder; content: \"\"; }\n\t}\n\t> [class*=\"span\"] ~ [class*=\"span3\"] { width: 25.26315789473684%; }\n\t> [class*=\"span\"] ~ [class*=\"span4\"] { width: 33.68421052631579%; }\n\t> [class*=\"span\"] ~ [class*=\"span5\"] { width: 42.10526315789473%; }\n\t> [class*=\"span\"] ~ [class*=\"span6\"] { width: 50.74626865671642%; }\n\t> [class*=\"span\"] ~ [class*=\"span8\"] { width: 67.66169154228855%; }\n\t> [class*=\"span\"] ~ [class*=\"span9\"] { width: 75.78947368421052%; }\n\t&.border-top, & ~ & { border-top: 1px solid @contentBorder; }\n\t&.border-bottom { border-bottom: 1px solid @contentBorder; }\n}\n\n// Main Wrapper\n// -------------------------\n\n#wrapper {\n\toverflow: hidden; \n\toverflow-y: auto;\n\tfloat: left;\n\twidth: 100%;\n}\n\n// Content\n// -------------------------\n\nbody > .container-fluid { \n\tpadding: 0;\n\tbackground: @containerBg;\n\t&.fixed { \n\t\tmargin: 30px auto 30px;\n\t\tborder-left: 1px solid @containerBorder;\n\t\tborder-right: 1px solid @containerBorder;\n\t\twidth: 94%;\n\t}\n\t&.documentation {\n\t\tbackground: #fff;\n\t}\n}\n\nbody > .container-fluid.fixed { \n\t.rounded(5px, 5px, 5px, 5px);\n\t#wrapper { .rounded(5px, 5px, 0, 0); }\n\t#content { .rounded(0, 5px, 0, 0); }\n\t#footer { .rounded(0,0,5px,5px); }\n\t.navbar.main, .navbar.main .wrapper { .rounded(5px, 5px, 0, 0); }\n}\n\n#content { \n\tposition: relative;\n\toverflow: hidden;\n\tmargin: 0;\n\tmin-width: 320px;\n\tmin-height: 500px;\n\tpadding: 0 0 @spacing;\n\tbackground: @containerBg;\n\t> .menubar { border-left: none; border-right: none; }\n\t> p { padding: 0 @spacing 5px; }\n\t> h1, > h2, > h3, > h4, > h5, > h6 { margin: @spacing+3 @spacing @spacing; }\n\t> .filter-bar {\n\t\tborder-right: none;\n\t\tborder-left: none;\n\t}\n\t.heading-buttons { margin-top: @spacing; }\n\t.heading-arrow {\n\t\ttext-transform: uppercase;\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\tmargin: 0 0 @spacing;\n\t\tpadding: 0 @spacing;\n\t\tfont-size: 11pt;\n\t\theight: 35px;\n\t\tline-height: 30px;\n\t\tposition: relative;\n\t\t&:after {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-bottom: 8px solid @contentBorder;\n\t\t\tborder-right: 8px solid transparent;\n\t\t\tborder-left: 8px solid transparent;\n\t\t\tposition: absolute;\n\t\t\tbottom: 0;\n\t\t\tleft: 15px;\n\t\t}\n\t\t&.glyphicons { padding: 0 10px 0 40px; i:before { font-size: 17px; left: 15px; } }\n\t\t&.margin-bottom-none { margin-bottom: 0; }\n\t}\n\t\n\t> .widget { \n\t\tborder-left: 0; \n\t\tborder-right: 0;\n\t\t.widget-head,\n\t\t.widget-body {\n\t\t\tborder-left: 0; \n\t\t\tborder-right: 0;\n\t\t}\n\t\t&:last-child { margin: 0; }\n\t}\n\t\n\t> .table { \n\t\tborder-left: none; border-right: none;\n\t\ttr td:first-child { border-left: none; }\n\t}\n}\n\n// Footer\n// -------------------------\n \n#footer {\n\tfont-weight: 600;\n\tposition: relative;\n\toverflow: hidden;\n\tz-index: 10000;\n\ta:not(.btn) { color: @bodyText; }\n\tborder-bottom: 1px solid @contentBorder;\n\tborder-top: 1px solid @contentBorder;\n\t.copy {\n\t\tbackground: @widgetBgGray;\n\t\ttext-align: center;\n\t\tpadding: 5px 10px;\n\t\tfont-size: 12px;\n\t\ta { color: @bodyText; text-decoration: underline; }\n\t\theight: 20px;\n\t}\n}\n\nhtml.sidebar {\n\t#content { margin: 0 0 0 65px; }\n\t.menu-right { \n\t\t#content { margin: 0 65px 0 0; } \n\t}\n}\n\n// Sticky Sidebar & Footer always bottom\n// -------------------------\n@media (min-width: 768px)\n{\n\thtml.sticky-sidebar.sidebar:not(.fixed) {\n\t\tbody { overflow: hidden; }\n\t\t&, body, \n\t\tbody > .container-fluid,\n\t\t#wrapper {\n\t\t\tmin-height: 100%;\n\t\t\theight: 100%; \n\t\t}\n\t\t#wrapper { margin-bottom: -32px; }\n\t\t#menu { \n\t\t\tposition: fixed;\n\t\t\tbottom: 0;\n\t\t}\n\t\t#content { padding-bottom: 47px; }\n\t}\n}\n\n// Sticky Top Menu\n// -------------------------\n\n@media (min-width: 768px)\n{\n\thtml.sticky-top:not(.fixed) {\n\t\t#content { padding-top: 50px; }\n\t\t.navbar.main {\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tz-index: 10000;\n\t\t}\n\t\t&.sidebar {\n\t\t\t.navbar.main { left: 65px; }\n\t\t\t.menu-right {\n\t\t\t\t.navbar.main { left: 0; right: 65px; }\n\t\t\t}\n\t\t}\n\t\t.menu-hidden {\n\t\t\t.navbar.main { left: 0 !important; right: 0 !important; }\n\t\t}\n\t\t&.front {\n\t\t\t#content { padding-top: 100px; margin: 0 !important; }\n\t\t}\n\t}\n}\n\nhtml.fixed {\n\t&, body {\n\t\tmin-height: auto; \n\t\theight: auto;\n\t\toverflow: visible;\n\t}\n}\nbody > .container-fluid.fixed {\n\tmin-height: auto;\n\theight: auto;\n\t#wrapper {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tmin-height: auto;\n\t\theight: auto;\n\t\tmargin: 0;\n\t}\n\t#menu {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\tmin-height: 100%;\n\t\tbottom: auto;\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/login.less",
    "content": "//\n// Login section specific styles\n// --------------------------------------------------\n\n// Login\n// -------------------------\n\nbody.login {\n\tbackground: @containerBg;\n\t#login {\n\t\ta:not(.btn) { color: @bodyText; text-decoration: underline; }\n\t    padding: 40px 0 0;\n\t    h1 {\n\t    \tfont-size: 20pt;\n\t    \ttext-align: center;\n\t    \tdisplay: block;\n\t    \tpadding: 0 0 20px;\n\t    \ttext-shadow: @bodyTextShadow;\n\t    \ti {\n\t    \t\t&:before {\n\t    \t\t\tposition: relative;\n\t    \t\t\tleft: auto;\n\t    \t\t\ttop: auto;\n\t    \t\t\tcolor: @bodyText;\n\t    \t\t}\n\t    \t}\n\t    }\n\t    .wrapper {\n\t    \tmax-width: 354px;\n\t    \tmin-width: 300px;\n\t    \tmargin: 0 auto;\n\t    \tposition: relative;\n\t    \t&.signup {\n\t    \t\tmax-width: 600px;\n\t    \t}\n\t    }\n\t    .widget {\n\t    \t.widget-head {\n\t    \t\t.btn { margin: -4px 0 0 5px; }\n\t    \t\tdiv { font-size: 12px; }\n\t    \t}\n\t    \t.widget-body {\n\t    \t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\tbackground: #fafafa;\n\t    \t}\n\t    \t.widget-footer {\n\t    \t\theight: 40px;\n\t    \t\tline-height: 40px;\n\t    \t\tmargin: @spacing 0 0;\n\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\tborder: 1px solid @contentBorder;\n\t    \t\tp { font-size: 12px; color: @bodyText; font-weight: 600; margin: 0; width: auto; float: none; padding: 0 10px 0 35px; display: block; height: 40px; line-height: 40px; i:before { top: 7px; left: 7px; } }\n\t    \t}\n\t    }\n\t    label { font-size: 13px; color: #7c7c7c; font-weight: 600; }\n        .checkbox { margin-top: 5px; }\n        .password { float: right; font-size: 12px; font-weight: 400; }\n        input[type=\"text\"],\n\t    input[type=\"password\"] {\n\t     \tfont-size: 13px;\n\t        height: auto;\n\t        margin-bottom: 10px;\n\t        padding: 5px 9px;\n\t        .bevelEmboss(0,0);\n\t        .rounded();\n\t        background: #fff;\n\t\t}\n\t\t::-webkit-input-placeholder { /* WebKit browsers */ color: #ccc; }\n\t\t:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #ccc; }\n\t\t::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #ccc; }\n\t\t:-ms-input-placeholder { /* Internet Explorer 10+ */ color: #ccc; }\n\t\tform { margin: 0; }\n        p { \n\t        margin: 5px 0;\n\t        &:first-child { margin: 0 0 10px; }\n\t        &:last-child { margin: 10px 0 0; } \n\t    }\n\t   \t.form-signin {\n\t   \t\tposition: relative;\n\t        max-width: 600px;\n\t        margin: 0 auto 20px;\n\t        background-color: #fff;\n\t        border: 1px solid #e5e5e5;\n\t        -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        box-shadow: 0 1px 2px rgba(0,0,0,.05);\n\t        .inner { padding: 20px; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/lt-ie9.less",
    "content": "//\n// lt-ie9\n// --------------------------------------------------\n\n// lt-ie9\n// ------------------------- //\n\n.lt-ie9 {\n\t.widget .widget-body.list ul li {\n\t\tborder-bottom: 1px solid #efefef;\n\t}\n\t.navbar.main .btn-navbar { float: left; }\n\t.navbar.main .topnav { position: absolute; top: 0; right: 0; height: 42px; }\n\t.navbar.main .topnav .dropdown > a .caret { margin-top: 0; top: 8px; left: 5px; }\n\t.heading-buttons h1.glyphicons, .heading-buttons h2.glyphicons, .heading-buttons h3.glyphicons, .heading-buttons h4.glyphicons, .heading-buttons h5.glyphicons, .heading-buttons h6.glyphicons { float: left; }\n\t#guided-tour {\n\t\t.hide { display: none !important; }\n\t}\n\t.filter-bar div div.input-append .add-on {\n\t\twidth: 24px;\n\t\tpadding-right: 0;\n\t\tpadding-left: 0;\n\t\ti {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t\tdisplay: block;\n\t\t\tvertical-align: middle;\n\t\t\tline-height: 24px;\n\t\t\t&:before {\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tline-height: 24px;\n\t\t\t\ttop: auto;\n\t\t\t}\n\t\t}\n\t}\n\t.navbar.main .topnav .dropdown > a .caret {\n\t\tvertical-align: middle;\n\t\tmargin-top: 0;\n\t\ttop: 0;\n\t}\n\t#footer {\n\t\tbackground: #222;\n\t\t.copy { background: #111; }\n\t}\n\t.ribbon-wrapper { display: none; }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/menus.less",
    "content": "//\n// Menus\n// --------------------------------------------------\n\n// General\n// -------------------------\n\n.ui-resizable-helper { \n\t&.menu { border: 1px dotted gray; border-left: none; background: rgba(0,0,0,.3); }\n}\n.ui-resizable-handle { \n\twidth: 3px; \n\tborder-style: solid; \n\tborder-width: 0; \n\tborder-color: rgba(0,0,0,.4); \n}\n.dropdown-menu { z-index: 100000; }\n\n// Left menu\n// -------------------------\n\n#menu {\n\t.appbrand {\n\t\tfont-weight: 700;\n\t\tdisplay: block;\n\t\ttext-decoration: none;\n\t\tline-height: 10px;\n\t\tpadding: 10px;\n\t\ttext-align: center;\n\t\tcolor: @menuAppbrand;\n\t\tborder-bottom: 1px solid @menuBorder1;\n\t}\n\t.profile {\n\t\tdisplay: block;\n\t\tpadding: 10px 0;\n\t\tborder-bottom: 1px solid @menuBorder1;\n\t\tborder-top: 1px solid @menuBorder2;\n\t\ta {\n\t\t\tborder: 1px solid @menuBorder1;\n\t\t\tdisplay: inline-block;\n\t\t\twidth: 36px;\n\t\t\theight: 36px;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\timg { .rounded(5px,5px,5px,5px); }\n\t\t\t&:hover { border-color: darken(@menuBorder1, 10%); }\n\t\t}\n\t}\n\twidth: 65px;\n\tfloat: left;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\toverflow: hidden;\n\theight: 100%;\n\tmin-height: 100%;\n\tbackground: @menuBg;\n\tfont-size: 11px;\n\t.slim-scroll > ul, > ul {\n\t\tlist-style: none;\n\t\tfloat: left;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tborder-top: 1px solid @menuBorder2;\n\t\t> li { \n\t\t\tdisplay: block;\n\t\t\tborder-bottom: 1px solid @menuBorder1;\n\t\t\tbox-shadow: 0 1px 0 0 @menuBorder2;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\ta {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: auto;\n\t\t\t\tpadding: 10px;\n\t\t\t\tmargin: 0;\n\t\t\t\tline-height: 10px;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tcolor: @menuText;\n\t\t\t\ttext-align: center;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\tpadding: 10px 5px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 0 5px;\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\tcolor: @menuText;\n\t\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t\t&.glyphicons {\n\t\t\t\t> a { \n\t\t\t\t\tpadding: 10px 5px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 0 5px;\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\tcolor: @menuText;\n\t\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\tbox-shadow: 0 1px 0 0 @menuBorder2;\n\t\t\t\tborder-top: 1px solid @menuBorder2; \n\t\t\t\tposition: relative;\n\t\t\t\toverflow: visible;\n\t\t\t\t> a { \n\t\t\t\t\tbackground: @menuActiveBg;\n\t\t\t\t\tcolor: @menuActiveText;\n\t\t\t\t}\n\t\t\t\t&.glyphicons a i:before { color: @menuActiveText; }\n\t\t\t\t&:first-child { border-top: none; }\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\t> a { color: @menuActiveText; }\n\t\t\t\t&.glyphicons a i:before { color: @menuActiveText; }\n\t\t\t}\n\t\t}\n\t}\n\t&.ui-state-disabled {\n\t\topacity: 1;\n\t\tfilter: Alpha(Opacity=100);\n\t}\n}\n\n.menu-left .ui-resizable-e {\n\tbackground: rgba(255,255,255,.2);\n\tright: 0;\n\tborder-left-width: 1px;\n\tborder-right-width: 1px;\n\t&:hover { background: rgba(255,255,255,.4); }\n}\n\n// Right menu\n// -------------------------\n\nbody .menu-right {\n\t.ui-resizable-w {\n\t\tbackground: rgba(255,255,255,.2);\n\t\tleft: 0;\n\t\tborder-left-width: 1px;\n\t\tborder-right-width: 1px;\n\t\t&:hover { background: rgba(255,255,255,.4); }\n\t}\n\t#menu { \n\t\tleft: auto; \n\t\tright: 0;\n\t\tborder-right: none;\n\t\tborder-left: 1px solid #d8d8d8;\n\t}\n\t&.fixed {\n\t\t#content { \n\t\t\t.rounded(5px,0,0,0); \n\t\t}\n\t\t.navbar.main, .navbar.main .wrapper {\n\t\t\t.rounded(5px,0,0,0);\n\t\t}\n\t}\n}\n\n// Hidden menu\n// -------------------------\n\n.menu-hidden {\n\t#menu { display: none; }\n\t#content { margin: 0 !important; }\n\t.navbar.main .btn-navbar { left: 0; border-left: none; }\n\t.navbar.main .topnav {\n\t\t&.tn1 { left: 37px; }\n\t}\n\t&.login, &.documentation {\n\t\t.navbar.main .appbrand { \n\t\t\tdisplay: inline-block;\n\t\t\tborder: none;\n\t\t\tspan { border: none; } \n\t\t}\n\t}\n}\n\n// Top navbar\n// -------------------------\n\n.navbar.main { \n\theight: 49px;\n\tbackground-color: @navbarBg;\n\tborder-bottom: 1px solid @topnavBorder1; \n\tmargin: 0;\n\t.btn-navbar {\n\t\theight: 49px;\n\t\tline-height: 49px;\n\t\tpadding: 0 10px; \n\t\tmargin: 0; \n\t\tfloat: left; \n\t\tdisplay: block; \n\t\tborder: none;\n\t\tbackground: @navbarBg;\n\t\t.rounded();\n\t\t.icon-bar { \n\t\t\tbackground: @navbarText;\n\t\t\tbox-shadow: 0 1px 0 @topnavBorder1; \n\t\t}\n\t\t&:hover { background: darken(@navbarBg, 2%); }\n\t\t&.ui-state-disabled {\n\t\t\topacity: 1;\n\t\t\tfilter: Alpha(Opacity=100);\n\t\t}\n\t}\n\t.topnav {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tborder-left: 1px solid @topnavBorder1;\n\t\tborder-right: 1px solid @topnavBorder2;\n\t\t&.pull-left + .topnav.pull-left { \n\t\t\tborder-left: none; \n\t\t\t> li:first-child { border-left: none; } \n\t\t}\n\t\t> li {\n\t\t\tposition: relative; \n\t\t\tfloat: left; \n\t\t\theight: 49px; \n\t\t\tline-height: 49px;\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 0 0 10px;\n\t\t\ta { cursor: pointer; }\n\t\t\t> a {\n\t\t\t\tdisplay: block;\n\t\t\t\tcolor: @navbarText;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 1px 11px 0 9px;\n\t\t\t\theight: 49px;\n\t\t\t\tline-height: 50px;\n\t\t\t\t> img { margin: 0 0 3px; }\n\t\t\t\t&.glyphicons { \n\t\t\t\t\tpadding: 0 11px 0 9px;\n\t\t\t\t\ti {\n\t\t\t\t\t\tpadding: 0 10px 0 0;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\twidth: 17px;\n\t\t\t\t\t\tline-height: 49px; \n\t\t\t\t\t\theight: 49px;\n\t\t\t\t\t\t&:before { \n\t\t\t\t\t\t\tcolor: @navbarText; \n\t\t\t\t\t\t\tfont-size: 17px; \n\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\twidth: 17px; \n\t\t\t\t\t\t\ttext-align: center; \n\t\t\t\t\t\t\tline-height: 51px; \n\t\t\t\t\t\t\theight: 49px; \n\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\tright: auto; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.single-icon { \n\t\t\t\t\t\ti { padding: 0; } \n\t\t\t\t\t}\n\t\t\t\t\t&.logout {\n\t\t\t\t\t\ti { float: right; padding: 0; }\n\t\t\t\t\t\tspan { padding: 0 8px 0 0; }\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t/* &:hover { background: darken(@navbarBg, 2%); } */\n\t\t\t}\n\t\t\t&.active, &:hover, &.open {\n\t\t\t\tpadding: 8px 0 8px 8px;\n\t\t\t\t&:last-child { padding: 8px 9px 8px 8px; }\n\t\t\t\theight: 33px;\n\t\t\t\tline-height: 33px;\n\t\t\t\t> a {\n\t\t\t\t\t.caret { top: 2px; }\n\t\t\t\t\tbackground: @navbarActiveBg;\n\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\theight: 22px;\n\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\ti {\n\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\t&:before { line-height: 22px; height: 22px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.glyphs {\n\t\t\t\tpadding: 8px;\n\t\t\t\theight: 33px;\n\t\t\t\tborder-left: 1px solid @topnavBorder1;\n\t\t\t\tborder-right: 1px solid @topnavBorder2;\n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2, 1px 0 0 0 @topnavBorder1;\n\t\t\t\tul {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tlist-style: none;\n\t\t\t\t\tbackground: @navbarActiveBg;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\tli { \n\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t\tpadding: 0 1px 0 0;\n\t\t\t\t\t\t.glyphicons {\n\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\tpadding: 5px 10px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\theight: 22px;\n\t\t\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t&:before { \n\t\t\t\t\t\t\t\t\tline-height: 22px; \n\t\t\t\t\t\t\t\t\theight: 22px; \n\t\t\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\t\t\ttop: auto; \n\t\t\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\t\t\ttext-align: center; \n\t\t\t\t\t\t\t\t\tfont-size: 17px;\n\t\t\t\t\t\t\t\t\tcolor: @navbarGlypsText;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active, &:hover {\n\t\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\t\tbackground: @navbarGlypsActiveBg;\n\t\t\t\t\t\t\t.glyphicons i:before { color: @navbarText; }\n\t\t\t\t\t\t\tborder-right: 1px solid @topnavBorder3;\n\t\t\t\t\t\t\t&:first-child { .rounded(5px,0,0,5px); }\n\t\t\t\t\t\t\t&:last-child { \n\t\t\t\t\t\t\t\t.rounded(0,5px,5px,0); \n\t\t\t\t\t\t\t\tborder-right: none; \n\t\t\t\t\t\t\t\tborder-left: 1px solid @topnavBorder3;\n\t\t\t\t\t\t\t\t.glyphicons { padding: 5px 11px 5px 9px; } \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.search {\n\t\t\t\tpadding: 8px;\n\t\t\t\theight: 33px;\n\t\t\t\tborder-left: 1px solid @topnavBorder1;\n\t\t\t\tborder-right: 1px solid @topnavBorder2;\n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2, 1px 0 0 0 @topnavBorder1;\n\t\t\t\tform {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tbackground: @navbarSearchBg;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\tborder: 1px solid @topnavBorder3;\n\t\t\t\t\tinput {\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tcolor: @navbarSearchText;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\tline-height: 32px;\n\t\t\t\t\t\twidth: 100px;\n\t\t\t\t\t\tpadding: 0 0 0 10px;\n\t\t\t\t\t\t#reset .boxShadow();\n\t\t\t\t\t\t.placeholderColor(@navbarSearchText);\n\t\t\t\t\t}\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\theight: 32px;\n\t\t\t\t\t\ti:before { \n\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\tposition: relative; \n\t\t\t\t\t\t\tleft: auto; \n\t\t\t\t\t\t\tright: auto; \n\t\t\t\t\t\t\theight: 32px; \n\t\t\t\t\t\t\tline-height: 32px; \n\t\t\t\t\t\t\tpadding: 0 5px; \n\t\t\t\t\t\t\tfont-size: 17px; \n\t\t\t\t\t\t\tcolor: @topnavBorder1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tinput,button { vertical-align: top; }\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.search, &.glyphs { margin-left: 10px; }\n\t\t\t&.search + .glyphs { margin-left: 0; }\n\t\t\t&.glyphs + .search, &.glyphs + .tooltip + .search { margin-left: 0; }\n\t\t\t&:last-child { \n\t\t\t\tborder-right: 1px solid @topnavBorder1; \n\t\t\t\tpadding: 0 9px 0 10px; \n\t\t\t\t&.glyphs, &.search { \n\t\t\t\t\tpadding: 8px 9px;\n\t\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder2; \n\t\t\t\t} \n\t\t\t}\n\t\t\t&:first-child { border-left: 1px solid @topnavBorder2; }\n\t\t\t&:last-child.open .dropdown-menu { right: 0; }\n\t\t\t&.open {\n\t\t\t\t.dropdown-menu {\n\t\t\t\t\tbackground: #363432;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tbox-shadow: none;\n\t\t\t\t\t-webkit-box-shadow: none;\n\t\t\t\t\t-moz-box-shadow: none;\n\t\t\t\t\tright: 0;\n\t\t\t\t\t&.pull-left { left: 0; }\n\t\t\t\t\twidth: 180px;\n\t\t\t\t\tli {\n\t\t\t\t\t\tborder-bottom: 1px solid #4a4947;\n\t\t\t\t\t\t&:last-child {\n\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:first-child {\n\t\t\t\t\t\t\t> a, > a:hover, > span { border-top: none; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\theight: 29px;\n\t\t\t\t\t\t\tline-height: 29px;\n\t\t\t\t\t\t\tpadding: 0 10px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tbackground: #363432;\n\t\t\t\t\t\t\tcolor: #c8c8c8;\n\t\t\t\t\t\t\t&.glyphicons { i:before { left: auto; right: 10px; top: 5px; font-size: 17px; color: #c4c4c4; } }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> a:hover {\n\t\t\t\t\t\t\tbackground: darken(#363432, 10%);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground: darken(#363432, 15%);\n\t\t\t\t\t\t\ta { background: darken(#363432, 15%); }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.btn { margin: 3px 0; }\n\t\t\t\t\t\t&.highlight {\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\tbackground: rgba(0,0,0,.1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.profile {\n\t\t\t\t\t\t\ta:hover { color: #fff; }\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tpadding: 5px 10px 10px;\n\t\t\t\t\t\t\t\t.heading {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 5px;\n\t\t\t\t\t\t\t\t\ta { text-transform: none; }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.img {\n\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\tbackground: #272729;\n\t\t\t\t\t\t\t\t\tmargin: 0 10px 0 0;\n\t\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\t\tcontent: \"\\e004\";\n\t\t\t\t\t\t\t\t\t\tcolor: #595959;\n\t\t\t\t\t\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\t\t\t\t\t\tfont-size: 24px;\n\t\t\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.clearfix { display: block; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.account {\n\t\t\t\t\t> .dropdown-menu {\n\t\t\t\t\t\twidth: 220px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-1, .dd-1 {\n\t\t\t\t\t> .dropdown-menu, .typeahead {\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\t\twidth: 0;\n\t\t\t\t\t\t\theight: 0;\n\t\t\t\t\t\t\tborder: 11px solid transparent;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tleft: 7px;\n\t\t\t\t\t\t\tborder-top-width: 0;\n\t\t\t\t\t\t\tborder-bottom-color: #999;\n\t\t\t\t\t\t\tborder-bottom-color: rgba(0, 0, 0, 0.25);\n\t\t\t\t\t\t\ttop: -11px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:after {\n\t\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\t\twidth: 0;\n\t\t\t\t\t\t\theight: 0;\n\t\t\t\t\t\t\tborder: 10px solid transparent;\n\t\t\t\t\t\t\ttop: -10px;\n\t\t\t\t\t\t\tborder-top-width: 0;\n\t\t\t\t\t\t\tborder-bottom-color: #ffffff;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tleft: 8px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.pull-right:before, &.pull-right:after { left: auto; right: 7px; margin: 0; }\n\t\t\t\t\t\t&.pull-right:after { right: 8px; }\n\t\t\t\t\t\tbox-shadow: 0 0 10px 1px rgba(0,0,0,0.2);\n\t\t\t\t\t}\n\t\t\t\t\t.typeahead { margin-top: 13px !important; }\n\t\t\t\t\t.dropdown-menu.pull-right { .rounded(); }\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\tborder: 1px solid #c8c8c8;\n\t\t\t\t\t\tmargin: 5px 0 0;\n\t\t\t\t\t\t.rounded();\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\tborder-color: #f3f3f3;\n\t\t\t\t\t\t\ta:not(.btn), span {\n\t\t\t\t\t\t\t\tbackground: #fff; \n\t\t\t\t\t\t\t\tcolor: #939494;\n\t\t\t\t\t\t\t\ti:before { color: #cccccc; font-size: 15px !important; top: 7px !important; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> li:not(.profile):hover, > li.active {\n\t\t\t\t\t\t\t> a {\n\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\t\tborder: 1px solid darken(@primaryColor, 15%);\n\t\t\t\t\t\t\t\tborder-top: none;\n\t\t\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\t\tbox-shadow: 0 5px 5px -5px darken(@primaryColor, 20%) inset, 0 -5px 5px -5px darken(@primaryColor, 20%) inset;\n\t\t\t\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\tcolor: #000;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tli.profile {\n\t\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\t\ta:hover { color: #7c7c7c; }\n\t\t\t\t\t\t\t> a, > a:hover, > span {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tpadding: 5px 10px 10px;\n\t\t\t\t\t\t\t\t.heading {\n\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\t\t\tmargin-bottom: 5px;\n\t\t\t\t\t\t\t\t\ta { text-transform: none; }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.img {\n\t\t\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\t\t\tfloat: left;\n\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\tbackground: #fdfdfd;\n\t\t\t\t\t\t\t\t\tmargin: 0 10px 0 0;\n\t\t\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t\twidth: 47px;\n\t\t\t\t\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t\t\t\t\t\tcontent: \"\\e004\";\n\t\t\t\t\t\t\t\t\t\tcolor: #ccc;\n\t\t\t\t\t\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\t\t\t\t\t\tfont-size: 24px;\n\t\t\t\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.clearfix { display: block; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-2 {\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\ta:not(.btn) {\n\t\t\t\t\t\t\t\tpadding: 10px 10px 10px 50px;\n\t\t\t\t\t\t\t\ti:before {\n\t\t\t\t\t\t\t\t\tright: auto;\n\t\t\t\t\t\t\t\t\tleft: 10px;\n\t\t\t\t\t\t\t\t\ttop: 10px !important;\n\t\t\t\t\t\t\t\t\tfont-size: 30px !important;\n\t\t\t\t\t\t\t\t\tcolor: lighten(#ccc, 15%);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> li:not(.profile):hover {\n\t\t\t\t\t\t\tborder-color: #f3f3f3;\n\t\t\t\t\t\t\t> a {\n\t\t\t\t\t\t\t\tbackground: fade(@primaryColor, 8%);\n\t\t\t\t\t\t\t\tcolor: #939494;\n\t\t\t\t\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\t\tbox-shadow: none;\n\t\t\t\t\t\t\t\t-moz-box-shadow: none;\n\t\t\t\t\t\t\t\t-webkit-box-shadow: none;\n\t\t\t\t\t\t\t\ti:before { color: @primaryColor; left: 10px; top: 10px; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dd-flags {\n\t\t\t\t\t.dropdown-menu img { margin: -3px 4px 0 0; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.dropdown > a { .caret { border-top-color: @navbarText; top: 16px; position: relative; } }\n\t\t.dropdown-menu { .rounded(); }\n\t}\n\t.topnav:last-of-type { border-right: none; li:last-child { border: none; } }\n}\n\n.submenu-show {\n    display: block;\n    margin-top: -35px !important;\n    position: absolute;\n    &.pull-left {\n    \tleft: auto !important;\n    \tright: 100% !important;\n    }\n    &.pull-right {\n    \tright: auto !important;\n    \tleft: 100% !important;\n    }\n}\n.submenu-hide {\n    display: none !important;\n    position: relative;\n    top: auto;\n    float: left;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/mixins.less",
    "content": "#reset {\n\t.boxShadow()\n\t{\n\t\tbox-shadow: none !important;\n\t\t-moz-box-shadow: none !important;\n\t\t-webkit-box-shadow: none !important;\n\t}\n\t.rounded ()\n\t{\n\t\t-webkit-border-radius: 0 !important;\n\t\t-moz-border-radius: 0 !important;\n\t\tborder-radius: 0 !important;\n\t}\n}\n\n.bevelEmboss(@ol:0.2, @od:0.2)\n{\n\tbox-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n\t-moz-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n\t-webkit-box-shadow: inset 1px 1px 1px rgba(255, 255, 255, @ol), inset -1px -1px 1px rgba(0, 0, 0, @od);\n}\n\n.placeholderColor (@color: #ffffff)\n{\n\t&::-webkit-input-placeholder { color: @color; }\n\t&:-moz-placeholder { color: @color; }\n\t&::-moz-placeholder { color: @color; }\n\t&:-ms-input-placeholder { color: @color; }\n}\n\n.rounded (@a:0, @b:0, @c:0, @d:0)\n{\n\t-webkit-border-radius: @a @b @c @d;\n\t-moz-border-radius: @a @b @c @d;\n\tborder-radius: @a @b @c @d;\n}\n\n// Transitions\n.transition(@transition) {\n  -webkit-transition: @transition;\n     -moz-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n\n#gradient {\n\t.horizontal(@startColor: #555, @endColor: #333) {\n\t\tbackground-color: @endColor;\n\t    background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+\n\t    background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t    background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t    background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10\n\t    background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10\n\t    background-repeat: repeat-x;\n\t    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n\t.vertical(@startColor: #555, @endColor: #333) {\n\t    background-color: mix(@startColor, @endColor, 60%);\n\t    background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n\t    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t    background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t    background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n\t    background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n\t\tbackground-repeat: repeat-x;\n\t\tfilter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/modals.less",
    "content": "//\n// Modals\n// --------------------------------------------------\n\n// Backdrop\n// -------------------------\n\n.modal-backdrop {\n\tz-index: 10000;\n\tbackground: #000000;\n\t&, &.fade.in {\n\t\topacity: 0.9;\n\t\tfilter: alpha(opacity=90);\n\t}\n}\n\n// Modal\n// -------------------------\n\n.modal {\n\tz-index: 10001;\n\tborder-color: @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\tbackground: @widgetBg;\n\t.modal-header {\n\t\tpadding: 0 10px;\n\t\theight: 29px;\n\t\tline-height: 29px;\n\t\tborder-color: @contentBorder;\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\t.rounded(5px,5px,0,0);\n\t\th3 { font-size: 14px; }\n\t\t.close {\n\t\t\tposition: absolute;\n\t\t\ttop: 5px;\n\t\t\tright: 10px;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\topacity: 1;\n\t\t\tfilter: alpha(opacity=100); \n\t\t\tcolor: @bodyText;\n\t\t\ttext-shadow: @bodyTextShadow;\n\t\t}\n\t}\n\t.modal-body { padding: 10px; p:last-child { margin: 0; } }\n\t.modal-footer {\n\t\t.rounded(0,0,5px,5px);\n\t\t.bevelEmboss(0,0);\n\t\tborder-color: @contentBorder2;\n\t\tpadding: 10px;\n\t\tbackground: @contentBg1 url(\"../images/pattern1.png\") repeat;\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/notifications.less",
    "content": "//\n// Notifications\n// --------------------------------------------------\n\n// Gritter\n// -------------------------\n\n.gritter-item-wrapper {\n\t.gritter-item { \n\t\tp { \n\t\t\tmargin: 0 0 10px; \n\t\t\t&:last-child { margin: 0; } \n\t\t}\n\t}\n\t&.gritter-primary {\n\t\t.gritter-top { display: none; }\n\t\t.gritter-bottom { display: none; }\n\t\t.gritter-item {\n\t\t\tbackground: fade(@primaryColor, 90%);\n\t\t\tpadding: 10px 10px 15px;\n\t\t\t.rounded(10px, 10px, 10px, 10px);\n\t\t\tcolor: #fff;\n\t\t\ta { color: #fff; text-decoration: underline; }\n\t\t}\n\t}\n}\n\n// Notyfy\n// -------------------------\n\n.notyfy_wrapper {\n\tborder: none;\n\t.rounded();\n\t&.notyfy_alert { background: #ffffff; }\n\t&.notyfy_error { background: #bd362f; color: #fff; }\n\t&.notyfy_success { background: #51a351; color: #fff; }\n\t&.notyfy_warning { background: #74614f; color: #fff; }\n\t&.notyfy_information { background: #57B7E2; color: #fff; }\n\t&.notyfy_confirm { background: #ffffff; }\n\t&.notyfy_primary {\n\t\tbackground: @primaryColor;\n\t\tborder: none;\n\t\t&, * { color: #fff; }\n\t}\n\t&.notyfy_default {\n\t\tbackground: #fafafa;\n\t}\n\t&.notyfy_dark {\n\t\tbackground: darken(#64625f, 10%);\n\t\t&, * { color: #fff; }\n\t}\n}\n\n// Notyfy TOP\n// -------------------------\n\n#notyfy_container_top {\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\t.notyfy_wrapper { .rounded(); }\n}\n\n// Notyfy CONTENT (eg. Dashboard)\n// -------------------------\n\n#content-notification {\n\t.notyfy_wrapper {\n\t\tborder: none;\n\t\tbox-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t-moz-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t-webkit-box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.5), inset 0 -8px 8px -8px rgba(0, 0, 0, 0.2);\n\t\t.rounded();\n\t\tp { margin: 0; }\n\t\t.notyfy_message {\n\t\t\tpadding: 15px 10px;\n\t\t}\n\t\t&.notyfy_default {\n\t\t\tbackground: #fafafa url(\"../images/pattern1.png\") repeat;\n\t\t}\n\t\t&.notyfy_dark {\n\t\t\tbackground: darken(#64625f, 10%) url(\"../images/pattern1.png\") repeat;\n\t\t}\n\t\t&.notyfy_primary {\n\t\t\tbackground: @primaryColor url(\"../images/pattern1.png\") repeat;\n\t\t\tbox-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t\t-moz-box-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t\t-webkit-box-shadow: inset 0 8px 8px -8px darken(@primaryColor, 45%), inset 0 -8px 8px -8px darken(@primaryColor, 20%);\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/pagination.less",
    "content": "//\n// Pagination\n// --------------------------------------------------\n\n// Pagination\n// ------------------------- //\n\n.pager li > a, .pager li > span {\n\t.rounded(5px,5px,5px,5px);\n}\n.pagination ul {\n\tbackground: @widgetBg;\n}\n.pagination ul > li > a:hover {\n\tbox-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-webkit-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-moz-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n}\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a {\n\tborder-color: lighten(@primaryColor,10%);\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: 600;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n} \n.pagination ul > .active > a, \n.pagination ul > .active > span {\n\tborder-color: @primaryColor;\n\tbackground: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: 600;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\tbox-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-webkit-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n\t-moz-box-shadow: 0 0 6px 1px rgba(0,0,0,.2) inset;\n}\n.pagination ul > li > a, \n.pagination ul > li > span {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n}\n.pagination ul > .primary.disabled > a,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tcolor: #dddddd;\n\tfont-weight: 600;\n\ttext-shadow: none;\n\t.bevelEmboss(0,0);\n}\n.pagination ul > .disabled > a:hover {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tcolor: #dddddd;\n\ttext-shadow: none;\n\t.bevelEmboss(0,0);\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/popovers.less",
    "content": "//\n// Popovers\n// --------------------------------------------------\n\n// Popovers\n// -------------------------\n\n.popover {\n\tborder-color: @contentBorder;\n\tbackground: @widgetBg;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.popover-title {\n\t\tfont-weight: 600;\n\t\tpadding: 0 10px;\n\t\theight: 29px;\n\t\tline-height: 29px;\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n}\n\n// Popovers Demo ONLY (UI page)\n// -------------------------\n\n#demo_popovers {\n\t.popover {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/progress-bars.less",
    "content": "//\n// Progress bars\n// --------------------------------------------------\n\n// Progress bar\n// ------------------------- //\n\n.progress {\n\tbackground: @widgetBg;\n\tmargin: 0 0 10px;\n\t.bevelEmboss(0,0);\n\t.bar { background: #e8e8e8; }\n\t.bar.right { text-align: right; text-indent: 10px; direction: rtl; }\n\t&.white { background: #fff; }\n\t&.progress-info .bar { background: #93b9d8; }\n\t&.progress-success .bar { background: @successColor; }\n\t&.progress-warning .bar { background: @warningColor; }\n\t&.progress-primary .bar { background: @primaryColor; }\n\t&.progress-danger .bar { background: @dangerColor; }\n\t&.progress-inverse .bar { background: @inverseColor; }\n\t&.progress-small {\n\t\theight: 15px;\n\t\t.bar { font-size: 8px; line-height: 15px; &.right { text-indent: 2px; } }\n\t}\n\t&.progress-mini { height: 5px; }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/responsive.less",
    "content": "//\n// Responsive\n// --------------------------------------------------\n\n// Responsive\n// ------------------------- //\n\n/* Desktop wide */\n@media (min-width: 1200px)\n{\n\t.navbar.main .topnav > li.search form input { width: 155px; }\n}\n\n/* Desktop regular */\n@media (min-width: 980px) and (max-width: 1199px)\n{\n\tbody > .container-fluid.fixed {\n\t\twidth: 98%;\n\t\tmargin: 10px auto 10px;\n\t}\n\t.hidden-desktop-1 { display: none !important; }\n}\n\n/* Tablet */\n@media (max-width: 979px) and (min-width: 768px)\n{\n\t.navbar.main .topnav > li.search { margin-left: 10px !important; }\n}\n\n@media (max-width: 979px)\n{\n\tbody > .container-fluid.fixed { width: auto; border: none; margin: 0; }\n}\n@media (max-width: 767px)\n{\n\tbody { padding: 0; }\n\t\n\t.nav-tabs > li > a { font-size: 10pt; }\n\t.nav-tabs > li > a, .nav-pills > li > a { padding-left: 5px; padding-right: 5px; }\n\t\n\t.documentation .span3 .menu.affix { position: relative; top: 0; width: auto; }\n\t.phone-margin.bottom { margin: 0 0 10px; }\n\t.well { padding: 5px; }\n\t\n\t.widget {\n\t\t.widget-body { padding: 5px; }\n\t\t&.margin-bottom-none { margin-bottom: 10px; }\n\t\t&.widget-tabs {\n\t\t\t.widget-head {\n\t\t\t\theight: auto;\n\t\t\t\tpadding: 0;\n\t\t\t\tul {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: none;\n\t\t\t\t\theight: auto;\n\t\t\t\t\tli { float: none; display: block; width: 100%; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.widget-tabs-icons-only .widget-head { height: auto; }\n\t}\n\t.widget-activity ul.list li > span.ellipsis { max-width: 60%; }\n\t.widget-activity ul.list li.double > span.ellipsis { max-width: 75%; }\n\t.widget-gallery .nav { display: none; }\n\t.widget-gallery.widget-gallery-slide .gallery { width: auto; }\n\t.widget-chat .media .pull-left, .widget-chat .media .pull-right { margin: 0; }\n\t.widget-chat .chat-controls { height: 60px; }\n\t.widget-chat { padding-bottom: 90px !important; }\n\t.widget-chat .media small.author {\n\t\tposition: relative;\n\t\ttop: auto;\n\t\tleft: auto;\n\t\tright: auto;\n\t\twidth: auto;\n\t}\n\t.widget-chat .media small.date { border: none; }\n\t.tabsbar {\n\t\t&, &.tabsbar-2 {\n\t\t\theight: auto;\n\t\t\tul { height: auto; }\n\t\t}\n\t}\n\t.layout-timeline ul.timeline {\n\t\tpadding: 0;\n\t}\n\t.layout-timeline ul.timeline > li .date {\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tdisplay: block;\n\t\ttop: auto;\n\t}\n\t.layout-timeline ul.timeline > li .type {\n\t\tposition: relative;\n\t\tleft: auto;\n\t\ttop: auto;\n\t\twidth: auto;\n\t\tmargin: 0 60px 10px 0;\n\t\t&:before, &:after { display: none; }\n\t\t.time { \n\t\t\ttop: 0;\n\t\t\tright: -40px; \n\t\t}\n\t}\n\t.layout-timeline ul.timeline > li.active .separator .type { margin-bottom: 0; }\n\t.layout-timeline ul.timeline > li .separator .type { \n\t\ttop: auto; \n\t}\n\t.widget-activity ul.list { margin: 0; }\n\t.widget.widget-tabs.widget-tabs-icons-only-2 .widget-head {\n\t\theight: 35px;\n\t\tul li {\n\t\t\tfloat: left;\n\t\t\twidth: auto;\n\t\t}\n\t}\n\t\n\t.media {\n\t\ttext-align: center;\n\t\t.pull-left, .pull-right { border: none; padding-bottom: 0; margin: 0; }\n\t\timg.pull-left, img.pull-right { display: inline-block; }\n\t\tblockquote { padding: 0; text-align: center; &.pull-right p, &.pull-right small { text-align: center; } }\n\t}\n\t.menu-right {\n\t\t#menu { \n\t\t\tleft: 0; \n\t\t\tright: auto; \n\t\t}\n\t\t&.menu-hidden {\n\t\t\t#content { margin: 0; }\n\t\t}\n\t}\n\t.row-merge {\n\t\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\t\twidth: auto;\n\t\t\t&:after { display: none; }\n\t\t}\n\t\t&.border-top, & ~ & { border-top: 1px solid #e5e5e5; }\n\t}\n\tbody.login #login {\n\t\tpadding: 50px 5px;\n\t}\n\t#gritter-notice-wrapper { display: none !important; }\n\t.topnav .dropdown.submenu {\n\t\theight: auto;\n\t\t.submenu-show {\n\t\t\tposition: relative;\n\t\t\tmargin: 0 !important;\n\t\t\ttop: auto !important;\n\t\t\tleft: auto !important;\n\t\t\tright: auto !important;\n\t\t}\n\t}\n\t.navbar.main {\n\t\theight: auto;\n\t\t.topnav {\n\t\t\tborder-left: none;\n\t\t\tborder-right: none;\n\t\t\tfloat: none;\n\t\t\t> li {\n\t\t\t\tfloat: none;\n\t\t\t\tborder-top: 1px solid @topnavBorder1;\n\t\t\t\tborder-bottom: 1px solid @topnavBorder2;\n\t\t\t\t&.active, &:hover, &.open {\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t}\n\t\t\t\t&.search form {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tinput { width: 90%; }\n\t\t\t\t\tbutton { position: absolute; right: 0; top: 0; }\n\t\t\t\t}\n\t\t\t\t&:first-child { border-top: none; }\n\t\t\t\t.dropdown.submenu {\n\t\t\t\t\t.dropdown-menu {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\tfloat: none;\n\t\t\t\t\t\tdisplay: block !important;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tborder-top: 1px solid #f3f3f3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:first-of-type {\n\t\t\t\t> li:first-child { margin-left: 38px; }\n\t\t\t}\n\t\t}\n\t}\n\t.menu-hidden {\n\t\t.navbar.main {\n\t\t\theight: 50px;\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\t.container-960 { width: auto; }\n\t#landing_1 {\n\t\t[class*=\"span\"] { padding: 0 5px; }\n\t\t.banner-1 {\n\t\t\theight: auto;\n\t\t\t.item { \n\t\t\t\theight: auto;\n\t\t\t\timg {\n\t\t\t\t\tmin-height: 0;\n\t\t\t\t\theight: auto;\n\t\t\t\t} \n\t\t\t}\n\t\t\t.carousel-caption { height: auto; }\n\t\t}\n\t\t.banner {\n\t\t\theight: auto;\n\t\t\t.banner-wrapper {\n\t\t\t\theight: auto;\n\t\t\t\t&.banner-1 {\n\t\t\t\t\th3,p,.btn {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t\t.btn { display: block; .rounded(0,0,0,0); }\n\t\t\t\t\tp { margin: 0 0 5px; text-align: center; }\n\t\t\t\t\th3 { font-size: 12pt; line-height: 46px; text-align: center; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.social-large {\n\t\theight: auto;\n\t\ta { \n\t\t\tfloat: none; \n\t\t\tdisplay: block;\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid #e5e5e5;\n\t\t\t&:last-child { border: none; } \n\t\t}\n\t}\n\t#content .heading-mosaic { height: auto !important; padding-top: 10px; padding-bottom: 10px; line-height: normal !important; }\t\n}\n@media (max-width: 480px)\n{\n\th1, h2, h3 { line-height: 30px; font-size: 18pt; }\n\th3.glyphicons,\n\th2.glyphicons {\n\t\ti:before { font-size: 24px; top: 3px; left: 5px; }\n\t}\n\t.heading-buttons .buttons { margin-top: 10px; float: none; padding: 0 10px; .btn { margin: 0; float: none; } text-align: center; }\n\t.separator { padding: 5px 0; margin: 0; }\n\t.table-condensed th, .table-condensed td { padding: 4px 5px; }\n\tp.glyphicons {\n\t\tpadding: 5px 0 10px 55px;\n\t\ti:before { color: #D67170; font-size: 35pt; top: 0; }\n\t\t&.right { padding: 0 55px 0 0; }\n\t}\n}\n@media (max-width: 320px)\n{\n\t.nav-tabs > li,\n\t.nav-tabs > li > a,\n\t.nav-tabs > li > a:hover { \n\t\tdisplay: block;\n\t\tfloat: none; \n\t\tmargin: 0 0 -1px;\n\t\tborder-color: @primaryColor;\n\t}\n\t.nav-tabs > li:hover {\n\t\tborder-color: @primaryColor;\n\t}\n\t.nav-tabs > li,\n\t.nav-tabs > li > a {\n\t\tborder-color: #E0D5C6;\n\t\tbackground: #F5EADB;\n\t\t.rounded();\n\t}\n\t.nav-tabs > .active > a, .nav-tabs > .active > a:hover { \n\t\t\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/rtl.less",
    "content": "// RTL\n// -------------------------\n\nhtml.rtl {\n\t\n\t/* Buttons */\n\t.btn-group.btn-block .leadcontainer { left: 29px; right: 0; }\n\t.btn-group.btn-block .leadcontainer > .btn:first-child { .rounded(0,5px,5px,0); }\n\t.btn-group.btn-block .dropdown-toggle { float: left; }\n\t.btn-toggle-code { left: 0; right: auto; }\n\t\n\t/* Typography */\n\th3.glyphicons, h2.glyphicons { \n\t\tpadding: 0 45px 0 0;\n\t\ti:before { left: auto; right: 2px; }\n\t}\n\t\n\t/* Widgets */\n\t.widget .widget-head .heading { float: right; }\n\t.widget .widget-head .heading.glyphicons { padding: 0 35px 0 0; }\n\t.widget .widget-head .heading.glyphicons i:before { left: auto; right: 0; }\n\t.widget .widget-head { padding: 0 0 0 15px; }\n\t.widget .details.pull-right { float: left; }\n\t.breadcrumb li.pull-right { float: left; }\n\t[data-toggle=\"collapse-widget\"] .collapse-toggle { float: left; }\n\t.widget-activity ul.list li > span { float: right; }\n\t.widget-activity ul.list li.double .activity-icon { margin-left: 10px; margin-right: 0; }\n\t.widget-activity ul.list li:hover:after, .widget-activity ul.list li.highlight:after { right: auto; left: 15px; }\n\t.widget .widget-body.list ul li .count { float: left; }\n\t.widget .widget-body.list ul li { text-align: right; }\n\t.widget .widget-body.list ul li .badge { left: 8px; right: auto; }\n\t.media > .pull-left { float: right; margin-left: 10px; margin-right: 0; }\n\t.media > .pull-right { float: left; margin-right: 10px; margin-left: 0; }\n\t.widget-chat .media small.author { left: auto; right: 0; }\n\t.widget-chat .media.right small.author { left: 0; right: auto; }\n\t.breadcrumb li a.glyphicons { padding: 0 25px 0 0; }\n\t.breadcrumb li a.glyphicons i:before { left: auto; right: 3px; }\n\t\n\t/* Tabs */\n\t.widget.widget-tabs > .widget-head ul li { border-right: none; border-left: 1px solid @contentBorder; }\n\t.widget.widget-tabs > .widget-head ul li.active:first-child { .rounded(); }\n\t.widget.widget-tabs > .widget-head ul li.active:last-child { .rounded(0,5px,0,0); }\n\t.widget.widget-tabs > .widget-head ul li a.glyphicons { padding: 0 35px 0 15px; }\n\t.widget.widget-tabs > .widget-head ul li a i:before { left: auto; right: 5px; }\n\t.widget.widget-tabs-double > .widget-head ul li a.glyphicons, .widget.widget-tabs-double > .widget-head ul li.active a.glyphicons { padding: 5px 38px 0 15px; }\n\t.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons { padding: 0 15px; }\n\t.widget.widget-tabs-double-2 > .widget-head ul li a.glyphicons i:before { right: auto; }\n\t.widget.widget-tabs-vertical {\n\t\t.widget-head { \n\t\t\tpadding: 0;\n\t\t\tul li { border-left: none; } \n\t\t}\n\t}\n\t.widget.widget-wizard-pills .widget-head {\n\t\tpadding: 10px 10px 10px 0;\n\t\tul li { border: none; }\n\t}\n\t.widget.widget-tabs-icons-only .widget-head ul.pull-right { float: left; }\n\t.tabsbar.tabsbar-2 ul li a { padding: 0 10px 0 0; }\n\t.tabsbar ul li a i { float: right; }\n\t\n\t/* Form elements */\n\t.bootstrap-select.btn-group, .bootstrap-select.btn-group[class*=\"span\"] { margin-right: 0; }\n\t.select2-container-multi .select2-search-choice-close { left: auto; right: 3px; }\n\t.select2-container-multi .select2-choices .select2-search-choice { padding: 3px 18px 3px 5px; }\n\t.select2-container img.flag, .select2-drop img.flag { padding: 0 0 0 10px; }\n\t.radio, .checkbox { padding: 0; }\n\tdiv.checker { margin: 0 0 0 5px; }\n\t\n\t/* Tables */\n\tdiv.dataTables_paginate { float: left; }\n\tdiv.dataTables_filter label { float: left; }\n\t.table td.right, .table th.right { text-align: left; }\n\t\n\t/* Menus */\n\t.navbar.main .topnav > li.search form input { padding: 0 10px 0 0; }\n\t.navbar.main .topnav > li.open .dropdown-menu li > a.glyphicons, .navbar.main .topnav > li.open .dropdown-menu li > a:hover.glyphicons, .navbar.main .topnav > li.open .dropdown-menu li > span.glyphicons {\n\t\tpadding: 0 35px 0 10px;\n\t}\n\t.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before, .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:before, .navbar.main .topnav > li.open.dd-1 .typeahead:before, .navbar.main .topnav > li.open .dd-1 .typeahead:before {\n\t\tleft: auto;\n\t\tright: 7px;\n\t}\n\t.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after, .navbar.main .topnav > li.open .dd-1 > .dropdown-menu:after, .navbar.main .topnav > li.open.dd-1 .typeahead:after, .navbar.main .topnav > li.open .dd-1 .typeahead:after {\n\t\tleft: auto;\n\t\tright: 8px;\n\t}\n\t.navbar.main .topnav {\n\t\tborder-left-color: @topnavBorder2; \n\t\tborder-right-color: @topnavBorder1; \n\t\t> li { \n\t\t\tfloat: right;\n\t\t\t&:first-child { border-left: none; }\n\t\t\t&.search, &.glyphs { margin: 0; }\n\t\t\t&.glyphs { \n\t\t\t\tborder-left-color: @topnavBorder2; \n\t\t\t\tborder-right-color: @topnavBorder1; \n\t\t\t\tbox-shadow: -1px 0 0 0 @topnavBorder1, 1px 0 0 0 @topnavBorder2;\n\t\t\t} \n\t\t}\n\t\t&.pull-left { \n\t\t\tfloat: right;\n\t\t\t&:first-of-type { padding-right: 8px; } \n\t\t}\n\t\t&.pull-right {\n\t\t\tfloat: left; \n\t\t\t> li:last-child { border-left: 1px solid @topnavBorder1; }\n\t\t}\n\t\t&.open {\n\t\t\t.dropdown-menu { right: auto; left: 0; }\n\t\t}\n\t\t.submenu-show.pull-right { left: auto !important; right: 100% !important; }\n\t}\n\t.navbar.main .topnav > li.open.dd-1 .dropdown-menu li .pull-right { float: left; }\n\t\n\t/* UI elements */\n\t.ribbon-wrapper {\n\t\tright: auto;\n\t\tleft: -3px;\n\t\t.ribbon {\n\t\t\t-webkit-transform: rotate(-45deg);\n\t\t\t-moz-transform: rotate(-45deg);\n\t\t\t-ms-transform: rotate(-45deg);\n\t\t\t-o-transform: rotate(-45deg);\n\t\t\tleft: auto;\n\t\t\tright: -5px;\n\t\t\t&:after { right: auto; left: 0; }\n\t\t\t&:before { left: auto; right: 0; }\n\t\t}\n\t}\n\t\n\t/* Layout */\n\t.row-merge > [class*=\"span\"] ~ [class*=\"span\"] { margin-right: 0; }\n\t.innerLR { padding: 0 @spacing; position: relative; }\n\t.innerL { padding-right: @spacing; padding-left: 0; position: relative; }\n\t.innerR { padding-left: @spacing; padding-right: 0; position: relative; }\n\t\n\t/* Timeline */\n\t.layout-timeline {\n\t\tul.timeline {\n\t\t\tpadding: 15px 30px 15px 15px;\n\t\t\t> li {\n\t\t\t\t.date { right: -70px; left: auto; }\n\t\t\t\t.type { \n\t\t\t\t\tright: -195px; \n\t\t\t\t\tleft: auto; \n\t\t\t\t\ttext-align: left; \n\t\t\t\t\tpadding: 0 0 0 35px;;\n\t\t\t\t\ti:before { left: 0; right: auto; }\n\t\t\t\t\t.time { right: auto; left: 0; }\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tleft: -20px;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t\t&:after {\n\t\t\t\t\t\tleft: -60px;\n\t\t\t\t\t\tright: auto;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.glyphicons.pencil { right: auto; left: 15px; }\n\t\t\t\tp.glyphicons { \n\t\t\t\t\tpadding: 5px 25px 5px 0;\n\t\t\t\t\ti:before { left: auto; right: 0; } \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.nav-timeline > li > a.glyphicons i:before { right: auto; left: 8px; }\n\t}\n\t\n\t/* Login */\n\tbody.login #login .password { float: left; }\n\t\n\t/* Front */\n\t&.front .navbar.main .secondary .appbrand.pull-left { float: right; }\n\t&.front .navbar.main .topnav.pull-right > li:last-child { border-left: none; }\n\t&.front .navbar.main .secondary ul.topnav:first-of-type { margin-left: 0; padding-left: 8px; }\n}\n\n/* Responsive */\n@media (max-width: 767px)\n{\n\thtml.rtl {\n\t\t.layout-timeline ul.timeline { padding: 0; }\n\t\t.layout-timeline ul.timeline > li .date { right: auto; }\n\t\t.layout-timeline ul.timeline > li .type { right: auto; margin: 0 0 10px 60px; .time { left: -40px; right: auto; }}\n\t\t\n\t\t.navbar.main .topnav {\n\t\t\t> li { \n\t\t\t\tfloat: none;\n\t\t\t\t&.search {\n\t\t\t\t\t#reset .boxShadow();\n\t\t\t\t\tform button { right: auto; left: 0; }\n\t\t\t\t}\n\t\t\t\tborder-right: none;\n\t\t\t}\n\t\t\t&, &.pull-left, &.pull-right { float: none; }\n\t\t\t&.pull-left:first-of-type { padding-right: 0; }\n\t\t\t&.open .dropdown-menu { right: auto; left: auto; }\n\t\t\t.submenu-show.pull-right { left: auto !important; right: auto !important; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/scaffolding.less",
    "content": "//\n// Scaffolding\n// --------------------------------------------------\n\n// Body\n// -------------------------\n\nbody { \n\tfont-family: 'Open Sans', sans-serif; \n\tbackground: @bodyBg;\n\tfont-size: 13px;\n\tcolor: @bodyText;\n\tposition: relative;\n}\n\n// Outlines\n// -------------------------\n\n*, a:focus { outline: none !important; }\nbutton:focus { outline: none !important; }\nbutton::-moz-focus-inner { border: 0; }\n\n// Links\n// -------------------------\n\na:hover { color: @linkHover; }\na { color: @primaryColor; outline: 0 !important; }\n\n// Headings \n// -------------------------\n\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: 'Open Sans', sans-serif;\n\tmargin: 0 0 5px;\n\tfont-weight: 400; \n\ttext-shadow: @bodyTextShadow; \n\tcolor: #4d4d4d;\n\t&.glyphicons {\n\t\tcolor: @bodyText;\n\t}\n\tspan {\n\t\tcolor: @subheadingText;\n\t\tfont-weight: 400;\n\t\tpadding: 0 5px;\n\t\tfont-style: italic;\n\t}\n}\nh1 span, h2 span, h3 span {\n\tfont-size: 50%;\n\ttext-transform: none;\n\tpadding: 0;\n\tposition: relative;\n\ttop: -3px;\n\tfont-weight: 400;\n}\nh1 { line-height: 40px; }\nh2, h3 { line-height: 30px; }\nh2 { font-size: 26px; }\n\n// Heading with buttons\n// -------------------------\n\n.heading-buttons {\n\th1,h2,h3,h4,h5,h6 { display: inline-block; margin: 0 @spacing; &.glyphicons { display: inline-block; } }\n\t.buttons {\n\t\tmargin-top: 3px;\n\t\tmargin-right: @spacing;\n\t\ttext-align: right;\n\t}\n\t.btn { \n\t\tmargin-right: @spacing; \n\t\t&:last-child { margin-right: 0; } \n\t}\n}\n\n// Paragraphs\n// -------------------------\n\np { \n\tmargin: 0 0 10px; \n\tline-height: normal; \n}\n.lead { margin: 0 0 10px; }\n.glyphicons { color: @bodyText; }\n\n// Lists\n// -------------------------\n\nul.icons {\n\ttext-align: left; padding: 0;\n\tli { \n\t\tdisplay: block;\n\t\tpadding: 0 0 0 25px;\n\t\tline-height: 22px;\n\t\tcolor: @bodyText;\n\t\ti:before { color: @bodyText; font-size: 17px; left: 0; top: 4px; } \n\t}\n}\n\n// Other\n// -------------------------\n\ninput, button, select, textarea { font-family: 'Open Sans', sans-serif; }\n\n// Code\n// -------------------------\n\npre.prettyprint {\n\tword-break: normal;\n\tword-wrap: normal;\n\twhite-space: pre;\n\tbackground-color: @preBg1;\n\tbackground-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, @preBg1), color-stop(50%, @preBg2));\n\tbackground-image: -webkit-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: -moz-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: -o-linear-gradient(@preBg1 50%, @preBg2 50%);\n\tbackground-image: linear-gradient(@preBg1 50%, @preBg2 50%);\n\t-moz-background-size: 38px 38px;\n\tbackground-size: 38px 38px;\n\tborder: 1px solid @contentBorder2;\n\tdisplay: block;\n\tline-height: 19px;\n\tmargin-bottom: @spacing;\n\toverflow: visible;\n\toverflow-y: hidden;\n\tpadding: 0 0 0 4px;\n\t.glyphicons { \n\tpadding: 0 0 0 20px;\n\t\ti:before { font-size: 17px; top: 1px; }\n\t}\n}\n#content {\n\tpre.prettyprint {\n\t\t&, span { color: @bodyText; }\n\t}\n}\n\n// Blockquote\n// -------------------------\n\nblockquote { \n\t&, &.pull-right { border: none; }\n\tp { font-weight: 400; font-size: 13px; margin: 0 0 10px; }\n\tmargin: 0;\n\tpadding: 0 0 0 5px;\n}\nblockquote small { color: @primaryColor; }\n\n// Separators\n// -------------------------\n\n.separator { padding: @spacing 0; display: block; }\n.separator.bottom { padding: 0 0 @spacing; }\n.separator.top { padding: @spacing 0 0; }\nhr { \n\tborder-top-color: @contentBorder; border-bottom: none; margin: @spacing 0;\n\t&.separator {\n\t\tpadding: 0;\n\t\t&.top { margin: @spacing 0 0; }\n\t\t&.bottom { margin: 0 0 @spacing; }\n\t}\n}\n\n// Print\n// -------------------------\n\n@media print {\n\thtml, body { height: auto !important; min-height: none !important; }\n\t@page { \n\t    size: auto; \n\t\tmargin: 10mm 10mm 10mm 10mm;  \n\t} \n\t#content { margin: 0 !important; padding: 0 !important; }\n\t.breadcrumb,\n\t#tlyPageGuideWrapper,\n\t.filter-bar { display: none !important; }\n\t.table {\n\t\ttd, th { vertical-align: middle; }\n\t\tth { padding: 3px; text-align: center; }\n\t\timg { float: left; }\n\t}\n}\n\n// Google maps\n// -------------------------\n\n.map_canvas img { max-width: none !important; }\n.streetview { width:100%; height:300px; }\n.ui-dialog-vevent .dtstart { display:none; }\n.ui-dialog-vevent .website { margin:0 0 1em; }\n\n#fontawesome {\n\t[class^=\"icon-\"], [class*=\" icon-\"] {\n\t\tfont-size: 24px/1em;\n\t\tline-height: 24px;\n\t\tvertical-align: middle;\n\t\tmargin: 0 5px 0 0; \n\t}\n\ta { line-height: 40px; }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/sliders.less",
    "content": "//\n// Sliders\n// --------------------------------------------------\n\n// jQueryUI\n// ------------------------- //\n\n.sliders-vertical span {\n\theight: 120px;\n\tfloat: left;\n\tmargin: 15px\n}\n.ui-slider-wrap {\n\tdisplay: block;\n\tpadding: 5px;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset, 0 0 0 1px rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(255, 255, 255, 0.3) inset;\n\t.rounded(10px,10px,10px,10px);\n\t.ui-slider {\n\t\tbackground: rgba(0,0,0,.1);\n\t\t.bevelEmboss();\n\t\t.rounded(10px,10px,10px,10px);\n\t}\n\t.ui-slider-horizontal {\n\t\theight: 10px;\n\t\t.ui-slider-handle { top: -5px; }\n\t}\n\t.ui-slider-vertical {\n\t\t.ui-slider-handle { left: -4px; }\n\t}\n\t.ui-slider-handle {\n\t\t.rounded(50%,50%,50%,50%);\n\t\tbackground: #fff;\n\t\tborder-width: 3px;\n\t\tborder-style: solid;\n\t\tborder-color: rgba(0,0,0,.3);\n\t\twidth: 13px;\n\t\theight: 13px;\n\t\tbox-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t\t-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t\t-moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);\n\t}\n\t.ui-slider-range {\n\t\t.rounded(10px,10px,10px,10px);\n\t\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\t-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px rgba(0, 0, 0, 0.05) inset;\n\t\tbackground: rgba(0,0,0,.2);\n\t}\n\t.slider-primary {\n\t\t.ui-slider-handle { border-color: @primaryColor; }\n\t\t.ui-slider-range { background: @primaryColor; }\n\t}\n\t.slider-warning {\n\t\t.ui-slider-handle { border-color: #FBB450; }\n\t\t.ui-slider-range { background: #FBB450; }\n\t}\n\t.slider-success {\n\t\t.ui-slider-handle { border-color: #609450; }\n\t\t.ui-slider-range { background: #609450; }\n\t}\n\t.slider-inverse {\n\t\t.ui-slider-handle { border-color: #3F4246; }\n\t\t.ui-slider-range { background: #3F4246; }\n\t}\n\t.slider-info {\n\t\t.ui-slider-handle { border-color: #93B9D8; }\n\t\t.ui-slider-range { background: #93B9D8; }\n\t}\n}\n.sliders-vertical {\n\tposition: relative;\n\tmargin: 0 auto;\n\tdisplay: inline-block;\n\t.ui-slider-wrap { margin: 0 5px; }\n\t.ui-slider { margin: 0; }\n}\n.vertical-range-slider {\n\t.ui-slider-wrap { display: inline-block; margin: 0 auto; }\n\t.slider { }\n}\n\n// jQRangeSliders\n// ------------------------- //\n\n.sliderContainer {\n\theight: 35px;\n\tmargin-top: 50px;\n\twidth: 100%;\n\tselect, 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 {\n\t\tmargin: 0;\n\t\tpadding: 2px 4px;\n\t}\n\t.ui-rangeSlider-withArrows .ui-rangeSlider-container { margin: 0 20px; }\n\t.ui-rangeSlider-bar { background: @primaryColor; height: 30px; margin: 0; }\n\t.ui-rangeSlider-withArrows .ui-rangeSlider-container, \n\t.ui-rangeSlider-noArrow .ui-rangeSlider-container,\n\t.ui-rangeSlider-arrow,\n\t.ui-rangeSlider-bar { .bevelEmboss(0,0); }\n\t.ui-rangeSlider-container,\n\t.ui-rangeSlider-arrow,\n\t.ui-rangeSlider-label {\n\t\tbackground: @widgetBgGray;\n\t\tcolor: @bodyText;\n\t\tfont-size: 13px;\n\t}\n\t.ui-rangeSlider-container {\n\t\tborder-color: @contentBorder;\n\t}\n\t.ui-editRangeSlider .ui-rangeSlider-label { padding: 5px; }\n\t.ui-rangeSlider-label-inner { border-top-color: @widgetBgGray; }\n\t.ui-rangeSlider-arrow { border-color: @contentBorder; }\n\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @primaryColor; margin-right: -4px; }\n\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @primaryColor; margin-left: -4px; }\n\t.ui-rangeSlider-arrow { width: 20px; }\n\t.ui-rangeSlider .ui-ruler-scale { overflow: hidden; }\n\t.ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-inner { border-color: @contentBorder; }\n\t.ui-rangeSlider .ui-ruler-scale0 .ui-ruler-tick-label { color: @bodyText; }\n\t\n\t.rangeslider-danger {\n\t\t.ui-rangeSlider-bar { background: @dangerColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @dangerColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @dangerColor; }\n\t}\n\t.rangeslider-success {\n\t\t.ui-rangeSlider-bar { background: @successColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @successColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @successColor; }\n\t}\n\t.rangeslider-warning {\n\t\t.ui-rangeSlider-bar { background: @warningColor; }\n\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: @warningColor; }\n\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: @warningColor; }\n\t}\n}\n.widget-body-gray {\n\t.sliderContainer {\n\t\t.ui-rangeSlider-label-inner { border-top-color: #cecece; }\n\t\t.ui-rangeSlider-container,\n\t\t.ui-rangeSlider-arrow,\n\t\t.ui-rangeSlider-label { background: #cecece; color: #4d4d4d; font-weight: 600; }\n\t\t.ui-rangeSlider:not(.rangeslider-success) {\n\t\t\t.ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner { border-left-color: #4d4d4d; }\n\t\t\t.ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner { border-right-color: #4d4d4d; }\n\t\t\t.ui-rangeSlider-bar { background: #4d4d4d; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/style-default.less",
    "content": "/*!\n * QuickAdmin v1.3.1\n *\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\n\n@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n@import \"mixins.less\";\n\n// Variables\n// -------------------------\n\n@import \"variables.less\";\n\n// Scaffolding\n// -------------------------\n\n@import \"scaffolding.less\";\n\n// Layout\n// -------------------------\n\n@import \"layout.less\";\n\n// Menus\n// -------------------------\n\n@import \"menus.less\";\n\n// Widgets\n// -------------------------\n\n@import \"widgets.less\";\n\n// Tabs\n// -------------------------\n\n@import \"tabs.less\";\n\n// Buttons\n// -------------------------\n\n@import \"buttons.less\";\n\n// Forms\n// -------------------------\n\n@import \"forms.less\";\n\n// Tables\n// -------------------------\n\n@import \"tables.less\";\n\n// Labels\n// -------------------------\n\n@import \"labels.less\";\n\n// Tooltips\n// -------------------------\n\n@import \"tooltips.less\";\n\n// Popovers\n// -------------------------\n\n@import \"popovers.less\";\n\n// Modals\n// -------------------------\n\n@import \"modals.less\";\n\n// Alerts\n// -------------------------\n\n@import \"alerts.less\";\n\n// Progress bars\n// -------------------------\n\n@import \"progress-bars.less\";\n\n// Accordions\n// -------------------------\n\n@import \"accordions.less\";\n\n// Pagination\n// -------------------------\n\n@import \"pagination.less\";\n\n// Notifications\n// -------------------------\n\n@import \"notifications.less\";\n\n// Sliders\n// -------------------------\n\n@import \"sliders.less\";\n\n// jQueryUI\n// -------------------------\n\n@import \"jquery-ui.less\";\n\n// Form Wizards\n// -------------------------\n\n@import \"form-wizards.less\";\n\n// Timeline\n// -------------------------\n\n@import \"timeline.less\";\n\n// Login\n// -------------------------\n\n@import \"login.less\";\n\n// Gallery\n// -------------------------\n\n@import \"gallery.less\";\n\n// Calendar\n// -------------------------\n\n@import \"calendar.less\";\n\n// Guided Tour\n// -------------------------\n\n@import \"guidedtour.less\";\n\n// Documentation\n// -------------------------\n\n@import \"documentation.less\";\n\n// Landing pages\n// -------------------------\n\n@import \"landings.less\";\n\n// Choose (Start) Page\n// -------------------------\n\n@import \"choose.less\";\n\n// Front module customizations\n// -------------------------\n\n@import \"front.less\";\n\n// RTL\n// -------------------------\n\n@import \"rtl.less\";\n\n// lt-ie9\n// -------------------------\n\n@import \"lt-ie9.less\";\n\n// Responsive\n// -------------------------\n\n@import \"responsive.less\";\n\n// Themer\n// -------------------------\n\n@import \"themer.less\";"
  },
  {
    "path": "target/mongo/style/eu/theme/less/style-flat.less",
    "content": "/*!\n *\n * QuickAdmin v1.3.1\n * Copyright MosaicPro\n * http://www.mosaicpro.biz\n *\n * Designed and built exclusively for sale @Envato Marketplaces.\n */\n\n@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600&subset=latin,latin-ext);\n@import \"mixins.less\";\n\n// Variables\n// -------------------------\n\n@import \"variables.less\";\n\n// Scaffolding\n// -------------------------\n\n@import \"scaffolding.less\";\n\n// Layout\n// -------------------------\n\n@import \"layout.less\";\n\n// Menus\n// -------------------------\n\n@import \"menus.less\";\n\n// Widgets\n// -------------------------\n\n@import \"widgets.less\";\n\n// Tabs\n// -------------------------\n\n@import \"tabs.less\";\n\n// Buttons\n// -------------------------\n\n@import \"buttons.less\";\n\n// Forms\n// -------------------------\n\n@import \"forms.less\";\n\n// Tables\n// -------------------------\n\n@import \"tables.less\";\n\n// Labels\n// -------------------------\n\n@import \"labels.less\";\n\n// Tooltips\n// -------------------------\n\n@import \"tooltips.less\";\n\n// Popovers\n// -------------------------\n\n@import \"popovers.less\";\n\n// Modals\n// -------------------------\n\n@import \"modals.less\";\n\n// Alerts\n// -------------------------\n\n@import \"alerts.less\";\n\n// Progress bars\n// -------------------------\n\n@import \"progress-bars.less\";\n\n// Accordions\n// -------------------------\n\n@import \"accordions.less\";\n\n// Pagination\n// -------------------------\n\n@import \"pagination.less\";\n\n// Notifications\n// -------------------------\n\n@import \"notifications.less\";\n\n// Sliders\n// -------------------------\n\n@import \"sliders.less\";\n\n// jQueryUI\n// -------------------------\n\n@import \"jquery-ui.less\";\n\n// Form Wizards\n// -------------------------\n\n@import \"form-wizards.less\";\n\n// Timeline\n// -------------------------\n\n@import \"timeline.less\";\n\n// Login\n// -------------------------\n\n@import \"login.less\";\n\n// Gallery\n// -------------------------\n\n@import \"gallery.less\";\n\n// Calendar\n// -------------------------\n\n@import \"calendar.less\";\n\n// Guided Tour\n// -------------------------\n\n@import \"guidedtour.less\";\n\n// Documentation\n// -------------------------\n\n@import \"documentation.less\";\n\n// Landing pages\n// -------------------------\n\n@import \"landings.less\";\n\n// Choose (Start) Page\n// -------------------------\n\n@import \"choose.less\";\n\n// Front module customizations\n// -------------------------\n\n@import \"front.less\";\n\n// RTL\n// -------------------------\n\n@import \"rtl.less\";\n\n// lt-ie9\n// -------------------------\n\n@import \"lt-ie9.less\";\n\n// Responsive\n// -------------------------\n\n@import \"responsive.less\";\n\n// Themer\n// -------------------------\n\n@import \"themer.less\";\n\n// Customizations\n// -------------------------\n\n/* Reset box-shadow & borders */\n.btn,\n.widget, \n.widget-body,\n.widget-stats,\n.carousel-inner,\n.layout-timeline ul.timeline > li .date,\n.box-generic,\n.well,\n.accordion, .accordion .accordion-group { \n\tborder: none !important;\n\t#reset .boxShadow();\n}\n\n/* Reset box-shadow only */\nselect, 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,\n.dropdown-menu,\n.table-bordered,\n.progress .bar,\n.popover {\n\t#reset .boxShadow();\n}\n\n/* Reset borders only */\n.chat-controls,\n.thumb,\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.navbar.main .topnav > li.open.dd-1 .dropdown-menu,\n.menubar,\n.widget.widget-tabs-double-2 > .widget-head,\n.widget.widget-tabs-double-2 .widget-body-regular {\n\tborder: none !important;\n}\n\n/* Reset padding only */\n.thumb {\n\tpadding: 0 !important;\n}\n\n/* Reset rounded corners */\n#content,\n.navbar.main,\n#wrapper,\n.btn,\n.widget,\n.widget-head,\n.widget-body,\n.carousel,\n.carousel-inner,\n.carousel .item,\n.carousel .item img,\n.nav li a,\n.thumb,\n.thumb img,\n.widget-stats,\n.label, .badge,\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul,\n.navbar.main .topnav > li.glyphs ul li,\n.navbar.main .topnav > li.search form,\n.layout-timeline ul.timeline > li .date,\nselect, 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,\n.alert,\n.tooltip-inner, .popover, \n.pagination ul, .pagination a, .pager a,\n.table-bordered, .table-bordered td, .table-bordered th,\n.box-generic,\n.progress, .progress .bar,\n.add-on,\n.well,\n.accordion .accordion-heading .accordion-toggle, .accordion .accordion-inner,\npre,\n.widget-chat .chat-controls {\n\t#reset .rounded();\n}\n\n/* Fix top menu */\n.navbar.main .topnav > li > a { padding: 0 10px; }\n.navbar.main .topnav > li > a.glyphicons { padding: 0 9px; }\n.navbar.main .topnav > li.glyphs ul li { padding: 0; }\n.navbar.main .topnav > li.glyphs ul li .glyphicons { padding: 5px 10px; }\n.navbar.main .topnav > li.active, .navbar.main .topnav > li:hover, .navbar.main .topnav > li.open { padding: 8px 0 8px 10px; }\n.navbar.main .topnav > li.active:last-child, .navbar.main .topnav > li:hover:last-child, .navbar.main .topnav > li.open:last-child { padding: 8px 9px 8px 10px; }\n.navbar.main .topnav > li.search { padding: 8px 9px !important; }\n.navbar.main .topnav > li.glyphs { padding: 8px !important; }\n.navbar.main .topnav > li.active > a.glyphicons, .navbar.main .topnav > li:hover > a.glyphicons, .navbar.main .topnav > li.open > a.glyphicons { padding: 6px 9px; }\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:before,\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu:after { display: none; }\n.navbar.main .topnav > li.open.dd-1 > .dropdown-menu { top: 45px; }\n\n/* input + btn */\n.input-append .btn { height: 30px; }\n.fileupload-new .input-append .btn-file { height: 22px; }\n\n/* tabs */\n.tabsbar ul li a { background: #f9f9f9; }\n.tabsbar:not(.tabsbar-2) ul li.active a { background: @primaryColor; }\n.widget.widget-tabs-double-2 > .widget-head { border-bottom: 1px solid @contentBorder !important; }"
  },
  {
    "path": "target/mongo/style/eu/theme/less/tables.less",
    "content": "//\n// Tables\n// --------------------------------------------------\n\n// Regular Tables\n// -------------------------\n\n.table { \n\tmargin: 0 0 @spacing; \n\tposition: relative; \n\t.rounded(); \n\t&.table-white { background: #fff; }\n}\n.table th, .table td { border-top-color: @contentBorder2; }\n.table td.center, .table th.center { text-align: center; }\n.table td.right, .table th.right { text-align: right; }\n\n// Condensed\n// -------------------------\n\n.table-condensed { font-size: 10pt; }\n.table-condensed th, .table-condensed td { padding: 4px 10px; }\n\n// Borderless\n// -------------------------\n\n.table-borderless {\n\tth, td { border: none; }\n}\n\n// Striped\n// -------------------------\n\n.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { background-color: @contentBg1; }\n\n// Bordered\n// -------------------------\n\n.table-bordered { \n\tborder-color: @contentBorder; th, td { border-color: @contentBorder; }\n\t/* Reset rounded corners\n\tthead:first-child tr:first-child>th:first-child, \n\ttbody:first-child tr:first-child>td:first-child, \n\ttbody:first-child tr:first-child>th:first-child,\n\tthead:first-child tr:first-child>th:last-child, \n\ttbody:first-child tr:first-child>td:last-child, \n\ttbody:first-child tr:first-child>th:last-child,\n\tthead:last-child tr:last-child>th:first-child, \n\ttbody:last-child tr:last-child>td:first-child, \n\ttbody:last-child tr:last-child>th:first-child, \n\ttfoot:last-child tr:last-child>td:first-child, \n\ttfoot:last-child tr:last-child>th:first-child {\n\t\t.rounded();\n\t}\n\t*/\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n}\n\n// Utilities\n// -------------------------\n\n.table-fill td { background: #F8F8F8; }\n.table .progress:last-child,\n.table .alert:last-child { margin: 0; }\n.table .shortRight { width: 25%; text-align: right; direction: rtl; text-indent: 10px; }\n.table-large-spacing td { padding: 20px 15px; }\n.table .thead td { padding: 8px; font-weight: bold; }\n.table-vertical-center td,\n.table-vertical-center th { vertical-align: middle; }\n\n// table-thead-simple\n// -------------------------\n\n.table-thead-simple {\n\tthead {\n\t\tth {\n\t\t\tbackground: none;\n\t\t\tborder-left: none;\n\t\t\tborder-right: none;\n\t\t\tborder-top: none;\n\t\t\tborder-bottom: 1px solid @contentBorder2;\n\t\t\tcolor: @bodyText;\n\t\t\t.rounded();\n\t\t\ttext-shadow: none;\n\t\t\ttext-transform: none;\n\t\t\t.bevelEmboss(0,0);\n\t\t}\n\t}\n\t&.table-thead-border-none {\n\t\tborder-top: none;\n\t\t.rounded();\n\t\tthead {\n\t\t\tth {\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\t\t}\n\t\tthead:first-child tr:first-child > th:last-child, \n\t\ttbody:first-child tr:first-child > td:last-child, \n\t\ttbody:first-child tr:first-child > th:last-child { .rounded(); }\n\t}\n}\n\n// Table Primary\n// -------------------------\n\n.table-primary {\n\tborder-color: @contentBorder;\n\tborder-top: none;\n\tthead \n\t{\n\t\tth { \n\t\t\tborder-color: @primaryColor;\n\t\t\tbackground-color: @primaryColor;\n\t\t\tcolor: #fff;\n\t\t\tfont-size: 14px;\n\t\t}\n\t\t&:first-child tr:first-child > th:first-child,\n\t\t&:first-child tr:first-child > th:last-child {  }\n\t}\n\ttbody td {\n\t\tcolor: @bodyText;\n\t\tbackground: @contentBg1;\n\t\tborder-width: 0px; \n\t\t&.important { color: @primaryColor; font-weight: 600; }\n\t\t&.actions { padding-right: 1px; }\n\t}\n\t&.table-bordered {\n\t\ttbody td {\n\t\t\tborder-color: @contentBorder;\n\t\t\tborder-width: 1px;\n\t\t\t/*\n\t\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\t\t-webkit-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t-moz-box-shadow: 0 0 0 1px #fff inset;\n\t\t\t*/\n\t\t}\n\t}\n\ttbody tr:nth-child(odd) td, \n\ttbody tr:nth-child(odd) th {\n\t\tbackground: @widgetBg;\n\t}\n\ttbody tr.selectable td { cursor: pointer; }\n\ttbody tr.selected td,\n\ttbody tr.selectable:hover td {\n\t\tbackground: darken(@contentBorder, 5%);\n\t\tbox-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset;\n\t\t-webkit-box-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset;\n\t\t-moz-box-shadow: 0 0 0 1px darken(@contentBorder, 20%) inset; \n\t}\n}\n\n// Pricing tables\n// -------------------------\n\n.table-pricing {\n\tth, td {\n\t\tpadding: 10px;\n\t}\n\t.plan { font-weight: 600; font-size: 14px; display: block; }\n\t.price { font-weight: 600; font-size: 24px; display: block; }\n\t.heading { font-weight: 600; font-size: 24px; vertical-align: middle; }\n\t.glyphicons.standard {\n\t\tvertical-align: middle;\n\t\t&.circle_ok {\n\t\t\ti:before { color: #9fc75f; }\n\t\t}\n\t}\n}\n.table-pricing-2 {\n\tth { padding: 12px 0; background: #64625f; font-size: 14px; color: #fff; border-color: #5a5855; }\n\t.pricing {\n\t\ttd {\n\t\t\tpadding: 12px 10px 10px;\n\t\t\tbackground: #e5e5e5;\n\t\t\tborder-color: #cecece;\n\t\t}\n\t}\n}\n\n// DataTables\n// -------------------------\n\ndiv.dataTables_filter label { float: none; }\n.row-fluid [class*=\"span\"]:last-of-type { .dataTables_filter { text-align: right; } }\n#DataTables_Table_0_length select { width: 80px; }\n#DataTables_Table_0_info { padding: 0; }\n.dataTables_paginate { text-align: right; }\n.dataTables_length { padding-top: 5px; }\n.ColVis { margin: 0; }\n\n// Google Visualization Tables\n// -------------------------\n\n.google-visualization-table-div-page {\n\tmargin: 10px 0 0 0 !important;\n\t.a-d-e-h-g { padding: 0; border: none; margin: 0; }\n\t.a-d-e-f-g, .a-d-e-h-g { border-style: none; }\n\t.a-d-e-o-q .a-d-e-h-g { border: none; }\n\t.a-d-e { background: none; margin-left: 5px; }\n\t.a-d-e.a-d-e-o-p { margin-left: 0; }\n}\n.google-visualization-table-table {\n\twidth: 100%;\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\tborder: 1px solid #e5e5e5;\n\tborder-left: 0;\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\tborder-radius: 4px;\n\tfont-size: 10pt;\n\tbackground: none !important;\n\ttd, .tableHeaderRow td {\n\t\tpadding: 4px 10px;\n\t\tborder: none;\n\t\tborder-left: 1px solid #e5e5e5;\n\t\tborder-top: 1px solid #e5e5e5;\n\t\tline-height: 20px;\n\t}\n\t.tableHeaderRow td { font-weight: bold; vertical-align: bottom; }\n\ttbody tr:nth-child(odd) td, tbody tr:nth-child(odd) td {\n\t\tbackground-color: rgba(255,255,255,.5);\n\t}\n\t.tableHeaderRow:first-child tr:first-child > td:first-child, \n\ttbody:first-child tr:first-child > td:first-child {\n\t\t-webkit-border-top-left-radius: 4px;\n\t\tborder-top-left-radius: 4px;\n\t\t-moz-border-radius-topleft: 4px;\n\t}\n\t.tableHeaderRow:first-child tr:first-child > td:last-child, \n\ttbody:first-child tr:first-child > td:last-child {\n\t\t-webkit-border-top-right-radius: 4px;\n\t\tborder-top-right-radius: 4px;\n\t\t-moz-border-radius-topright: 4px;\n\t}\n\ttbody:last-child tr:last-child > td:first-child {\n\t\t-webkit-border-bottom-left-radius: 4px;\n\t\tborder-bottom-left-radius: 4px;\n\t\t-moz-border-radius-bottomleft: 4px;\n\t}\n\ttbody:last-child tr:last-child > td:last-child {\n\t\t-webkit-border-bottom-right-radius: 4px;\n\t\tborder-bottom-right-radius: 4px;\n\t\t-moz-border-radius-bottomright: 4px;\n\t}\n\t.tableHeaderRow:first-child tr:first-child td, \n\ttbody:first-child tr:first-child td {\n\t\tborder-top: 0;\n\t}\n}\n\n// Responsive Tables\n// -------------------------\n\n@media only screen and (max-width: 979px)\n{\t\n\t.table-responsive {\n\t\t&.swipe-horizontal {\n\t\t\twidth: 100%; border-collapse: collapse; border-spacing: 0;\n\t\t\tdisplay: block; position: relative; width: 100%;\n\t\t\tborder-left: 1px solid #DDD;\n\t\t\tth, td { \n\t\t\t\tdisplay: block; margin: 0; vertical-align: top;\n\t\t\t\t&:last-child { }\n\t\t\t}\n\t\t\tth { text-align: right; border-bottom: 0; border-left: 0; }\n\t\t\ttd { min-height: 1.25em; text-align: left; border-left: 0; border-right: 0; border-bottom: 0; border-top: 0; font-size: 13px; }\n\t\t\tthead { \n\t\t\t\tdisplay: block; float: left;\n\t\t\t\ttr { display: block; } \n\t\t\t}\n\t\t\ttbody {\n\t\t\t\tdisplay: block; width: auto; position: relative; overflow-x: auto; white-space: nowrap; word-spacing: 0; letter-spacing: 0; font-size: 0;\n\t\t\t\ttr { display: inline-block; vertical-align: top; border-left: 1px solid #e5e5e5; } \n\t\t\t}\n\t\t}\n\t\t&.block {\n\t\t\t/* Force table to not be like tables anymore */\n\t\t\ttable, thead, tbody, th, td, tr { \n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t/* Hide table headers (but not display: none;, for accessibility) */\n\t\t\tthead tr { \n\t\t\t\tposition: absolute;\n\t\t\t\ttop: -9999px;\n\t\t\t\tleft: -9999px;\n\t\t\t}\n\n\t\t\ttr { border: 1px solid #e5e5e5; }\n\t\t \ttd { \n\t\t\t\t/* Behave  like a \"row\" */\n\t\t\t\tborder: none;\n\t\t\t\tborder-bottom: 1px solid #e5e5e5; \n\t\t\t\tposition: relative;\n\t\t\t\tpadding-left: 50%; \n\t\t\t\twhite-space: normal;\n\t\t\t\ttext-align:left;\n\t\t\t}\n\t\t \n\t\t\ttd:before { \n\t\t\t\t/* Now like a table header */\n\t\t\t\tposition: absolute;\n\t\t\t\t/* Top/left values mimic padding */\n\t\t\t\tvertical-align: middle;\n\t\t\t\tleft: 6px;\n\t\t\t\twidth: 45%; \n\t\t\t\tpadding-right: 10px; \n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-align:right;\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t \n\t\t\t/* Label the data */\n\t\t\ttd:before { content: attr(data-title); }\n\t\t}\n\t}\n}\n\n// Invoice\n// -------------------------\n\n.table-invoice {\n\ttd { border: none; padding: 0; }\n}\n\n// Advanced profile / projects\n// -------------------------\n\n.table-projects {\n\t.stats {\n\t\tspan { \n\t\t\tdisplay: block; \n\t\t\ttext-transform: uppercase;\n\t\t\tpadding: 2px 0;\n\t\t\t&.count { font-size: 18pt; font-weight: normal; color: @primaryColor; }\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/tabs.less",
    "content": "//\n// Tabs\n// --------------------------------------------------\n\n.widget {\n\t&.widget-tabs {\n\t\tborder-color: @contentBorder;\n\t\t.tab-content { padding: 0; }\n\t\t> .widget-head {\n\t\t\tbackground: @widgetBg;\n\t\t\tborder-color: @contentBorder;\n\t\t\toverflow: visible;\n\t\t\tul {\n\t\t\t\tposition: relative;\n\t\t\t\toverflow: visible;\n\t\t\t\tlist-style: none;\n\t\t\t\theight: 35px;\n\t\t\t\tmargin: 0;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tli {\n\t\t\t\t\theight: 35px;\n\t\t\t\t\tline-height: 35px;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: 1px solid @contentBorder;\n\t\t\t\t\ta {\n\t\t\t\t\t\twidth: auto; \n\t\t\t\t\t\theight: 35px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\ti:before { left: 5px; top: 5px; color: #9d9d9d; text-shadow: @bodyTextShadow; }\n\t\t\t\t\t\t&.glyphicons { padding: 0 15px 0 35px; }\n\t\t\t\t\t}\n\t\t\t\t\t&.active {\n\t\t\t\t\t\theight: 36px;\n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\tcolor: #505050;\n\t\t\t\t\t\ta { color: #505050; i:before { color: #505050; } }\n\t\t\t\t\t\t&:first-child { .rounded(5px,0,0,0); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\t&.large { padding: 25px; }\n\t\t}\n\t}\n\t&.widget-tabs-double {\n\t\t> .widget-head {\n\t\t\theight: 40px;\n\t\t\tul {\n\t\t\t\theight: 40px;\n\t\t\t\tli, li.active {\n\t\t\t\t\theight: 40px;\n\t\t\t\t\tline-height: 20px;\n\t\t\t\t\ta {\n\t\t\t\t\t\theight: 35px;\n\t\t\t\t\t\tpadding: 5px 0 0;\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\t\tpadding: 5px 15px 0 38px;\n\t\t\t\t\t\t\ti:before { left: 4px; top: 9px; font-size: 20px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-double-2 {\n\t\tborder: none;\n\t\t> .widget-head {\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tborder-bottom: none;\n\t\t\theight: 70px;\n\t\t\t&.border-bottom {\n\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t}\n\t\t\tul {\n\t\t\t\theight: 70px;\n\t\t\t\tli {\n\t\t\t\t\theight: 70px;\n\t\t\t\t\tline-height: 20px;\n\t\t\t\t\ta {\n\t\t\t\t\t\t.transition(color 1s ease);\n\t\t\t\t\t\theight: 70px;\n\t\t\t\t\t\tpadding: 5px 0 0;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\t\tpadding: 0 15px;\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\t\t\tpadding: 13px 0 0;\n\t\t\t\t\t\t\t\tline-height: 24px;\n\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ti:before { left: auto; top: auto; font-size: 24px; position: relative; .transition(color 1s ease); }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&.active { \n\t\t\t\t\t\theight: 70px;\n\t\t\t\t\t\tbackground: @widgetBg;\n\t\t\t\t\t\ta { \n\t\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\t\ti:before { color: @primaryColor; } \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: @widgetBg;\n\t\t\t\t\t\ta {\n\t\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\t\ti:before { color: @primaryColor; } \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\tpadding: 0;\n\t\t}\n\t\t.widget-body-regular {\n\t\t\tpadding: 10px;\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\tp:last-child { margin: 0; }\n\t\t}\n\t}\n\t&.widget-tabs-vertical {\n\t\t.widget-head {\n\t\t\tborder: none;\n\t\t\theight: auto;\n\t\t\tpadding: 0;\n\t\t\tul {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: auto;\n\t\t\t\tli {\n\t\t\t\t\tfloat: none;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-right: none;\n\t\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t\t\t&:last-child { border: none; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tpadding: 0;\n\t\t\t.tab-content { padding: 12px 15px; }\n\t\t}\n\t}\n\t&.widget-wizard-pills {\n\t\t.widget-head {\n\t\t\theight: 60px;\n\t\t\tpadding: 10px 0;\n\t\t\tul {\n\t\t\t\theight: 60px;\n\t\t\t\tli {\n\t\t\t\t\theight: 60px;\n\t\t\t\t\tline-height: 60px;\n\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\tpadding: 0 0 0 10px;\n\t\t\t\t\tborder: none;\n\t\t\t\t\t&.status {\n\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\tpadding: 15px 15px 0;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tspan.r {\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta {\n\t\t\t\t\t\theight: 58px;\n\t\t\t\t\t\tline-height: 60px;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\twidth: 58px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tbackground: @contentBorder;\n\t\t\t\t\t\tborder: 1px solid @contentBorder;\n\t\t\t\t\t\tcolor: #c8c8c8;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tfont-size: 16pt;\n\t\t\t\t\t\t.rounded(5px,5px,5px,5px);\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\tz-index: 2;\n\t\t\t\t\t}\n\t\t\t\t\t&.active {\n\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\ta {\n\t\t\t\t\t\t\twidth: 60px;\n\t\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\t\tbackground: lighten(@contentBorder, 10%);\n\t\t\t\t\t\t\tborder: none; \n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\t&.primary {\n\t\t\t\t\t\ta { \n\t\t\t\t\t\t\twidth: 60px;\n\t\t\t\t\t\t\theight: 60px;\n\t\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\tcolor: #fff; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tposition: relative;\n\t\t\t\t\t&:not(:first-child):before {\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tbackground: @contentBorder;\n\t\t\t\t\t\theight: 1px;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\ttop: 29px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\tz-index: 1;\n\t\t\t\t\t}\n\t\t\t\t\t&.no-padding { padding: 0; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-2 {\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\t&.border-bottom-none { border-bottom: none; }\n\t\t> .widget-head {\n\t\t\tbackground: #fff;\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\tpadding: 0 10px;\n\t\t\tul {\n\t\t\t\tborder-color: @contentBorder;\n\t\t\t\tli {\n\t\t\t\t\tborder: none;\n\t\t\t\t\t&.active {\n\t\t\t\t\t\tbackground-color: #f7f7f7;\n\t\t\t\t\t\tbackground-image: -moz-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: -webkit-gradient(linear,0 0,0 100%,from(#f7f7f7),to(#ffffff));\n\t\t\t\t\t\tbackground-image: -webkit-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: -o-linear-gradient(top,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-image: linear-gradient(to bottom,#f7f7f7,#ffffff);\n\t\t\t\t\t\tbackground-repeat: repeat-x;\n\t\t\t\t\t}\n\t\t\t\t\ta {\n\t\t\t\t\t\tborder: 1px solid #dddddd;\n\t\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\t\tborder-right: none;\n\t\t\t\t\t\tcolor: #222;\n\t\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t}\n\t\t\t\t\t&:first-child a { .rounded(); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t> .widget-body { background: #fff; border: none; padding: 15px; }\n\t}\n\t&.tabs-right {\n\t\t.widget-head {\n\t\t\tul { float: right; }\n\t\t}\n\t}\n\t&.widget-tabs-icons-only-2 {\n\t\t> .widget-head {\n\t\t\tul li {\n\t\t\t\ta.glyphicons {\n\t\t\t\t\twidth: 38px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\ti {\n\t\t\t\t\t\twidth: 38px;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tline-height: 35px;\n\t\t\t\t\t\t&:before { width: 38px; text-align: center; left: auto; top: auto; position: relative; display: block; line-height: 35px; color: #cbcbcb; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.active a.glyphicons i:before { color: #505050; }\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-tabs-icons-only {\n\t\t.widget-body { \n\t\t\tpadding: 0;\n\t\t\tp:last-child { margin: 0; } \n\t\t}\n\t\t.widget-head {\n\t\t\tpadding: 0 0 10px;\n\t\t\tul {\n\t\t\t\tdisplay: block;\n\t\t\t\toverflow: hidden;\n\t\t\t\tposition: relative;\n\t\t\t\tlist-style: none;\n\t\t\t\tmargin: 0;\n\t\t\t\theight: 30px;\n\t\t\t\tline-height: 30px;\n\t\t\t\tpadding: 0;\n\t\t\t\tli {\n\t\t\t\t\tcolor: #dadada;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tpadding: 0 10px 0 0;\n\t\t\t\t\tfont-size: 8pt;\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t\t&.glyphicons {\n\t\t\t\t\t\twidth: 30px;\n\t\t\t\t\t\theight: 30px;\n\t\t\t\t\t\tpadding: 0 3px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\ti {\n\t\t\t\t\t\t\tbackground: #e5e5e5; \n\t\t\t\t\t\t\t.transition(background .5s ease);\n\t\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\t\t.rounded(2px,2px,2px,2px); \n\t\t\t\t\t\t\theight: 30px; \n\t\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\t\t&:before { position: relative; top: 0; left: 0; color: #64625f; font-size: 17px; line-height: 30px; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\ti { background: #dedede; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\ti {\n\t\t\t\t\t\t\t\tbackground: #64625f;\n\t\t\t\t\t\t\t\t&:before { color: #fff; } \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:last-child { padding: 0; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Tabsbar\n// -------------------------\n\n.tabsbar {\n\theight: 60px;\n\tborder: 1px solid @contentBorder;\n\tposition: relative;\n\toverflow: hidden;\n\tmargin: 0 0 @spacing;\n\tul {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\theight: 60px;\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tdisplay: block;\n\t\t\theight: 54px;\n\t\t\tborder-right: 1px solid @contentBorder;\n\t\t\tbackground: @contentGradient1;\n\t\t\tpadding: 3px;\n\t\t\ta {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: 54px;\n\t\t\t\tline-height: 54px;\n\t\t\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\t\t\tpadding: 0 15px;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\ttext-decoration: none;\n\t\t\t\t.transition(background 1s ease);\n\t\t\t\ti {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tfloat: left;\n\t\t\t\t\twidth: 39px;\n\t\t\t\t\theight: 54px;\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\ttop: auto;\n\t\t\t\t\t\tleft: auto;\n\t\t\t\t\t\tline-height: 54px;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\ta {\n\t\t\t\t\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\ti:before { color: #fff; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.tabsbar-2 {\n\t\theight: 39px;\n\t\tul {\n\t\t\theight: 39px;\n\t\t\tli {\n\t\t\t\theight: 39px;\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground: none;\n\t\t\t\tborder: none;\n\t\t\t\t.transition(background .5s ease);\n\t\t\t\ta {\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tline-height: 39px;\n\t\t\t\t\tbackground: none;\n\t\t\t\t\t.transition(color .5s ease);\n\t\t\t\t\ti {\n\t\t\t\t\t\theight: 39px;\n\t\t\t\t\t\twidth: 33px;\n\t\t\t\t\t\t&:before { line-height: 39px; font-size: 20px; .transition(color 1s ease); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.active {\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\ta {\n\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&:not(.active):hover {\n\t\t\t\t\ta {\n\t\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.active-fill {\n\t\t\tul li.active a {\n\t\t\t\tbackground: @primaryColor;\n\t\t\t\tcolor: #fff;\n\t\t\t\ti:before { color: #fff; }\n\t\t\t}\n\t\t}\n\t}\n}\n\n// nav-tabs & nav-pills\n// -------------------------\n\n.nav-tabs > li > a:hover,\n.nav-pills > li > a,\n.nav-pills > li > a:hover {\n\tbackground: @primaryColor;\n\tborder-bottom-color: @primaryColor;\n\tcolor: #fff;\n}\n.nav-tabs { border-bottom-color: @primaryColor; }\n.nav-tabs > li > a {\n\tpadding: 6px 8px;\n}\n.nav-tabs > .active > a, .nav-tabs > .active > a:hover { \n\tbackground: @primaryColor;\n\tborder-top-color: @primaryColor; \n\tborder-left-color: @primaryColor;\n\tborder-right-color: @primaryColor;\n\tcolor: #fff;\n\tfont-weight: bold;\n\ttext-shadow: 0 1px 0 rgba(0,0,0,.5);\n\t.bevelEmboss();\n}\n.nav-pills a { cursor: pointer; }\n.nav-pills > .active > a, .nav-pills > .active > a:hover { \n\tbackground: @primaryColor;\n\tcolor: #fff;\n}\n.nav-pills {\n\t.glyphicons { \n\t\tpadding-left: 25px;\n\t\ti:before { position: relative; font-size: 14px; left: -10px; top: 2px; color: #F5EADB; font-weight: normal; text-shadow: none; }\n\t}\n}\n.tab-content { overflow: visible; padding: 0; }"
  },
  {
    "path": "target/mongo/style/eu/theme/less/themer.less",
    "content": "// Themer\n// -------------------------\n\n#themer {\n\tposition: fixed;\n\ttop: 40%;\n\tleft: 50%;\n\tz-index: 1000;\n\twidth: 260px;\n\tmargin: -50px 0 0 -130px;\n\ttext-align: left;\n\t&.in { overflow: visible; }\n\t.close2 {\n\t\tposition: absolute; background: #DDD; color: #222; font-weight: 600; height: 20px; top: 14px; right: 10px;\n\t\tline-height: 20px; text-align: center; font-size: 10pt; padding: 0 10px;\n\t\tcursor: pointer;\n\t}\n\t.wrapper {\n\t\tposition: relative;\n\t\tbackground: #292c2e;\n\t\tborder: 1px solid #2f3235;\n\t\tpadding: 15px;\n\t\tcolor: #fafafa;\n\t\thr.separator {\n\t\t\tmargin: 10px 0;\n\t\t\tborder-top-color: #5e646b;\n\t\t\tborder-bottom-color: #2f3235;\n\t\t}\n\t\th4 { \n\t\t\tborder-bottom: 1px solid #5e6060;\n\t\t\tpadding: 0 0 10px;\n\t\t\tmargin: 0 0 10px;\n\t\t\tcolor: #fff;\n\t\t\tspan { color: #5e6060; font-weight: normal; font-size: 10pt; text-shadow: none; }\n\t\t}\n\t\t.btn {\n\t\t\tmargin: 0; \n\t\t}\n\t\t#themer-getcode-less { margin: 0 0 0 5px; }\n\t\tul {\n\t\t\tmargin: 0;\n\t\t\tlist-style: none;\n\t\t\tli {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\tposition: relative;\n\t\t\t\t.minicolors { line-height: normal; border: none; top: 2px; right: 0; position: absolute; }\n\t\t\t\t.minicolors input { border: none; height: 20px; width: 69px; background: #414649; color: #fff; font-size: 9pt; padding: 0 5px; margin: 0 0 1px; }\n\t\t\t\t.minicolors-swatch { cursor: pointer; width: 18px; height: 18px; }\n\t\t\t\t.minicolors-panel { z-index: 10000; top: 24px; }\n\t\t\t\t.minicolors-position-left .minicolors-panel { left: -152px; }\n\t\t\t\tselect { \n\t\t\t\t\tposition: absolute; top: 3px; right: 0; width: 100px; height: 20px; line-height: normal; padding: 0; margin: 0; font-size: 9pt;\n\t\t\t\t\tbackground: lighten(#292C2E, 10%);\n\t\t\t\t\tborder: 1px solid #2F3235;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t\t.link { text-decoration: underline; cursor: pointer; }\n\t\t\t\tlabel { margin: 0; line-height: 25px; font-size: 9pt; input { margin: 0 0 1px; } }\n\t\t\t\t&.advanced { display: none; }\n\t\t\t}\n\t\t}\n\t}\n\t&.themer-advanced {\n\t\t.wrapper ul li.advanced { display: block; }\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/timeline.less",
    "content": "//\n// Timeline page\n// --------------------------------------------------\n\n.layout-timeline {\n\tborder-top-color: #d2d1d0 !important;\n\tborder-top-width: 2px !important;\n\t> [class*=\"span\"] ~ [class*=\"span\"] {\n\t\t&:after {\n\t\t\twidth: 2px;\n\t\t\tbackground: #d2d1d0;\n\t\t}\n\t}\n\t.media {\n\t\tmargin: 0 0 @spacing;\n\t\t.media-body {\n\t\t\tpadding: 10px 0 0;\n\t\t\tline-height: 17px;\n\t\t\t.author { font-size: 14px; }\n\t\t}\n\t}\n\t.glyphicons.pencil {\n\t\tposition: absolute;\n\t\ttop: @spacing;\n\t\tright: @spacing;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\ti:before {\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfont-size: 17px;\n\t\t\tcolor: #cccccc;\n\t\t}\n\t}\n\tul.timeline {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: @spacing @spacing @spacing @spacing*2;\n\t\t> li {\n\t\t\tposition: relative;\n\t\t\tpadding: 0 0 @spacing;\n\t\t\t.date {\n\t\t\t\twidth: 50px;\n\t\t\t\tpadding: 5px 0;\n\t\t\t\ttext-align: center;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: -70px;\n\t\t\t\ttop: 0;\n\t\t\t\tz-index: 2;\n\t\t\t\tstrong {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tline-height: 10px;\n\t\t\t\t\tpadding: 3px 0 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.type {\n\t\t\t\tposition: absolute;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tpadding: 0 35px 0 0;\n\t\t\t\ttop: 15px;\n\t\t\t\twidth: 100px;\n\t\t\t\ttext-align: right;\n\t\t\t\tleft: -195px;\n\t\t\t\tline-height: 24px;\n\t\t\t\tz-index: 2;\n\t\t\t\ti:before { left: auto; right: 0; color: #c6c6c5; }\n\t\t\t\t.time { position: absolute; top: 24px; right: 0; color: #c6c6c5; }\n\t\t\t\t&:after {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: -60px;\n\t\t\t\t\ttop: 12px;\n\t\t\t\t\twidth: 45px;\n\t\t\t\t\theight: 2px;\n\t\t\t\t\tbackground: #d2d1d0;\n\t\t\t\t}\n\t\t\t\t&:before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: -20px;\n\t\t\t\t\ttop: 9px;\n\t\t\t\t\twidth: 8px;\n\t\t\t\t\theight: 8px;\n\t\t\t\t\tbackground: #d2d1d0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.separator {\n\t\t\t\t.type { top: 60px; }\n\t\t\t}\n\t\t\t.alert-gray {\n\t\t\t\tbackground: #f8f8f8;\n\t\t\t\tcolor: @bodyText;\n\t\t\t\t.rounded();\n\t\t\t\tborder: none;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\tp.glyphicons {\n\t\t\t\tpadding: 5px 0 5px 25px;\n\t\t\t\ti:before { color: #dfdfdf; font-size: 17px; top: 5px; left: 0; }\n\t\t\t}\n\t\t\t.widget-body-gray {\n\t\t\t\t.glyphicons i:before { color: @bodyText; }\n\t\t\t\ta { color: #000; text-decoration: underline; }\n\t\t\t\tstrong { font-weight: 400; color: #000; }\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\t.type { \n\t\t\t\t\tcolor: @primaryColor; \n\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t\t&:before, &:after {\n\t\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\t&:before {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tcontent: \"\";\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbottom: 0;\n\t\t\t\t\tleft: -45px;\n\t\t\t\t\twidth: 2px;\n\t\t\t\t\tz-index: 2;\n\t\t\t\t\tbackground: @primaryColor;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n.nav-timeline {\n\t> li {\n\t\tmargin: 0 0 5px;\n\t\t> a {\n\t\t\tbackground: #b3b3b3;\n\t\t\tborder: none;\n\t\t\tmargin: 0 !important;\n\t\t\tfont-weight: 600;\n\t\t\t&.glyphicons {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\ti:before { position: absolute; left: auto; right: 8px; top: 8px; color: #fff; }\n\t\t\t} \n\t\t}\n\t\t&.active {\n\t\t\t> a {\n\t\t\t\tbackground: @primaryColor;\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/tooltips.less",
    "content": "//\n// Tooltips\n// --------------------------------------------------\n\n// Tooltips\n// -------------------------\n\n.tooltip-inner { background: #272a2c; color: #bab9b9; }\n.tooltip.bottom .tooltip-arrow { border-bottom-color: #272a2c; }\n.tooltip.top .tooltip-arrow { border-top-color: #272a2c; }\n.tooltip.left .tooltip-arrow { border-left-color: #272a2c; }\n.tooltip.right .tooltip-arrow { border-right-color: #272a2c; }\n.tooltip.left { margin-left: -13px; }\n\n// Flot Charts Tooltips\n// -------------------------\n\n#flotTip { \n\twhite-space: nowrap; \n\tborder: 1px solid @primaryColor; \n\tpadding: 3px 8px; \n\tbackground: @primaryColor; \n\t.rounded(5px,5px,5px,5px); \n\t.bevelEmboss();\n\tposition: absolute;\n\tz-index: 100; \n\tcolor: #fff;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/less/variables.less",
    "content": "// Variables\n// -------------------------\n\n@primaryColor: #4a8bc2;\n@dangerColor: #bd362f;\n@successColor: #609450;\n@warningColor: #ab7a4b;\n@inverseColor: #45484d;\n@spacing: 15px;\n\n// General Layout\n// -------------------------\n\n@bodyBg: #f0f0f0;\n@bodyText: #7c7c7c;\n@bodyText2: #000;\n@containerBorder: #d8d8d8;\n@containerBg: #f0f0f0;\n@linkHover: #333333;\n@bodyTextShadow: 0 1px 0 #fff;\n\n// Top menus\n// -------------------------\n\n@topnavBorder1: #346d9d;\n@topnavBorder2: #619aca;\n@topnavBorder3: #296190;\n@navbarBg: @primaryColor;\n@navbarText: #ffffff;\n@navbarActiveBg: #346d9d;\n@navbarGlypsText: #538fc1;\n@navbarGlypsActiveBg: #579ad2;\n@navbarSearchBg: #afcae2;\n@navbarSearchText: #628db3;\n@navbarSecondaryBg: #275b87;\n\n// Sidebar Menu\n// -------------------------\n\n@menuBg: #1f2123;\n@menuAppbrand: #ffffff;\n@menuText: #4c4d4f;\n@menuBorder1: #161718;\n@menuBorder2: #2a2c2e;\n@menuActiveBg: #161718;\n@menuActiveText: #737474;\n\n// Content\n// -------------------------\n\n@contentGradient1: #fdfdfd;\n@contentGradient2: #f4f4f4;\n@contentBorder: #d8d8d8;\n@contentShadow1: #dbdbdb;\n@contentShadow2: #f6f6f6;\n@widgetBg: #ffffff;\n@widgetBgGray: #e5e5e5;\n@contentBg1: #fafafa;\n@contentBorder: #dbdbdb;\n@contentBorder2: #ebebeb;\n@subheadingText: lighten(@bodyText, 20%);\n\n// Widget specific\n// -------------------------\n\n@listActiveHoverBg: #f2f2f2;\n@listActiveHoverBoxShadow: 0 1px 0 0 #fff inset;\n@preBg1: #f8f8f8;\n@preBg2: #eeeeee;\n@wellBg: #fafafa;\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/less/widgets.less",
    "content": "//\n// Widgets\n// --------------------------------------------------\n\n// Filters Widget\n// -------------------------\n\n.filter-bar {\n\tbackground: @widgetBgGray;\n\tmargin: 0 auto @spacing;\n\tborder: 1px solid @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t.rounded(5px,5px,5px,5px);\n\t&.border-top-none { border-top: none; }\n\tline-height: 30px;\n\theight: 40px;\n\tpadding: 0 10px;\n\tdiv {\n\t\tdiv {\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\t&:not(.helper) {\n\t\t\t\tmargin: 0 15px 0 0;\n\t\t\t}\n\t\t\tinput { \n\t\t\t\tmargin: 3px 0 0;\n\t\t\t}\n\t\t\t&.input-append {\n\t\t\t\t.add-on {\n\t\t\t\t\tpadding: 1px 3px;\n\t\t\t\t\tmargin: 3px 0 0 -1px;\n\t\t\t\t\tbackground: #fff;\n\t\t\t\t\tcolor: #d8d9da;\n\t\t\t\t\tborder-color: #d8d9da;\n\t\t\t\t\ti:before { top: 4px; left: 4px; font-size: 14px; color: #d0d1d1; }\n\t\t\t\t}\n\t\t\t\tbutton.add-on { width: 24px; height: 24px; }\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\t&:last-child { margin: 0; }\n\t\t}\n\t\tpadding: 5px 0;\n\t\tdisplay: block;\n\t\t&:not(.helper) { float: left; }\n\t\tline-height: 30px;\n\t\t&.glyphicons {\n\t\t\tpadding: 0 0 0 35px;\n\t\t\ti:before {\n\t\t\t\ttop: 12px; left: 9px;\n\t\t\t\tfont-size: 17px;\n\t\t\t\tcolor: rgba(255,255,255,.8);\n\t\t\t}\n\t\t}\n\t\t&.clearfix {\n\t\t\tpadding: 0; clear: both; float: none; display: block; height: 0; margin: 0;\n\t\t}\n\t\t&.lbl {\n\t\t\tpadding: 0 10px 0 35px;\n\t\t\tbackground: @primaryColor; \n\t\t\theight: 40px;\n\t\t\tline-height: 40px;\n\t\t\tmargin-right: 10px;\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n\tform {\n\t\tmargin: 0;\n\t\tinput,select { margin: 0 5px 3px 0; padding: 1px 5px; color: #a7a7a7; }\n\t\tselect { padding: 1px; height: 23px; }\n\t\tlabel { float: left; margin: 0 5px; display: block; line-height: 30px; }\n\t}\n\t&.border-none { border: none; }\n\t&.dark {\n\t\tbackground: #64625f;\n\t\tcolor: #fff;\n\t\tdiv div.input-append .add-on { background: #42403e; color: #fff; border-color: #42403e; i:before { color: #767473; text-shadow: none; } }\n\t\tform {\n\t\t\tinput:focus { border-color: #42403e; }\n\t\t\tinput,select { border-color: #42403e; }\n\t\t}\n\t}\n}\n\n// Buttons widget\n// -------------------------\n\n.menubar {\n\theight: 30px;\n\tposition: relative;\n\toverflow: hidden;\n\tborder: 1px solid @contentBorder;\n\tbackground: @contentBg1;\n\tmargin: 0;\n\tfont-size: 9pt;\n\tul {\n\t\tmargin: 0;\n\t\tpadding: 0 5px;\n\t\tlist-style: none;\n\t\theight: 30px;\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tdisplay: block;\n\t\t\theight: 30px;\n\t\t\tline-height: 30px;\n\t\t\tpadding: 0 5px;\n\t\t\t&.divider {\n\t\t\t\tborder-left: 1px solid @contentBorder2;\n\t\t\t\twidth: 0px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 8px;\n\t\t\t}\n\t\t\ta {\n\t\t\t\tcolor: @bodyText;\n\t\t\t\tfont-weight: 700;\n\t\t\t\tfont-size: 9pt;\n\t\t\t}\n\t\t}\n\t}\n\t&.links {\n\t\tborder: none;\n\t\tbackground: none;\n\t\theight: 25px;\n\t\tpadding: 0 0 5px;\n\t\tul {\n\t\t\tpadding: 0;\n\t\t\theight: 25px;\n\t\t\tli {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\t&:first-child { padding-left: 0; } \n\t\t\t}\n\t\t}\n\t\t&.primary {\n\t\t\tul li a { color: @primaryColor; }\n\t\t}\n\t}\n}\n\n// Widgets\n// -------------------------\n\n.widget {\n\tbackground: @widgetBg;\n\tmargin: 0 auto @spacing;\n\tposition: relative;\n\tborder: 1px solid @contentBorder;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\t.tab-content { padding: 0; }\n\t.widget-head {\n\t\t#gradient > .vertical(@contentGradient1, @contentGradient2);\n\t\tborder-bottom: 1px solid @contentBorder;\n\t\t.rounded(5px,5px,0,0);\n\t\ttext-shadow: 0 1px 0 @bodyTextShadow;\n\t\theight: 35px;\n\t\tline-height: 35px;\n\t\tposition: relative;\n\t\tpadding: 0 @spacing 0 0;\n\t\toverflow: hidden;\n\t\t&.progress {\n\t\t\t.rounded();\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\t> .glyphicons, ul .glyphicons {\n\t\t\theight: 30px;\n\t\t\twidth: 30px;\n\t\t\tpadding: 0;\n\t\t\ti:before {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tline-height: 23px;\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: rgba(255,255,255,.5);\n\t\t\t}\n\t\t}\n\t\t.heading { \n\t\t\tmargin: 0; \n\t\t\tcolor: @bodyText;\n\t\t\tfont-size: 14px;\n\t\t\theight: 35px;\n\t\t\tline-height: 35px;\n\t\t\tpadding: 0 @spacing;\n\t\t\tfloat: left;\n\t\t\t&.glyphicons {\n\t\t\t\twidth: auto;\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 0 0 0 35px;\n\t\t\t\ti:before {\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\theight: 35px;\n\t\t\t\t\tline-height: 35px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\twidth: 35px;\n\t\t\t\t\tcolor: @bodyText;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t}\n\t\t\t} \n\t\t}\n\t\ta { text-shadow: none; }\n\t\t.dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a {\n\t\t\tbackground-color: @primaryColor;\n\t\t\tbackground-image: -moz-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: -webkit-gradient(linear,0 0,0 100%,from(@primaryColor),to(#d24343));\n\t\t\tbackground-image: -webkit-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: -o-linear-gradient(top,@primaryColor,#d24343);\n\t\t\tbackground-image: linear-gradient(to bottom,@primaryColor,#d24343);\n\t\t\tbackground-repeat: repeat-x;\n\t\t\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffda4c4c',endColorstr='#ffd24343',GradientType=0);\n\t\t}\n\t}\n\t.details { font-size: 8pt; color: @bodyText; }\n\t.widget-body {\n\t\tform { margin: 0; }\n\t\tpadding: @spacing;\n\t\t> pre:last-child, > p:last-child { margin: 0; }\n\t\t&.list {\n\t\t\t.count { font-size: 15pt; font-weight: 400; }\n\t\t\tcolor: @bodyText;\n\t\t\tpadding: 0;\n\t\t\tul {\n\t\t\t\tmargin: 0;\n\t\t\t\tlist-style: none;\n\t\t\t\tli {\n\t\t\t\t\t.badge { position: absolute; right: 8px; top: 10px; } \n\t\t\t\t\tpadding: 0 10px; \n\t\t\t\t\theight: 39px; \n\t\t\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tline-height: 39px; \n\t\t\t\t\ttext-align: left; \n\t\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t\t\tclear: both;\n\t\t\t\t\t&:first-child { border-top: none; }\n\t\t\t\t\t&:last-child { border-bottom: none; } \n\t\t\t\t\t.count { float: right; color: @bodyText2; } \n\t\t\t\t\t.sparkline { position: relative; top: 5px; margin-left: 5px; }\n\t\t\t\t\ta { color: @bodyText2; font-weight: bold; }\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.products {\n\t\t\t\tli {\n\t\t\t\t\theight: 60px;\n\t\t\t\t\tline-height: 60px;\n\t\t\t\t}\n\t\t\t\t.img {\n\t\t\t\t\tfloat: left;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\twidth: 48px;\n\t\t\t\t\theight: 44px;\n\t\t\t\t\tline-height: 44px;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tbackground: #272729;\n\t\t\t\t\tmargin: 8px 8px 0 0;\n\t\t\t\t\t.rounded(3px,3px,3px,3px);\n\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tfont-size: 10pt;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t}\n\t\t\t\t.title {\n\t\t\t\t\tline-height: normal;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tpadding: 13px 0 0;\n\t\t\t\t\ttext-transform: uppercase;\n\t\t\t\t\tstrong {\n\t\t\t\t\t\tfont-family: \"Open Sans\", sans-serif;\n\t\t\t\t\t\ttext-transform: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.fluid {\n\t\t\t\tul li { height: auto; line-height: normal; padding: 10px; }\n\t\t\t}\n\t\t\t&.list-2 {\n\t\t\t\tul li {\n\t\t\t\t\tborder-bottom: 1px solid #d8d9da;\n\t\t\t\t\tborder-top: none;\n\t\t\t\t\tbackground: #f8f8f8;\n\t\t\t\t\t&.active {\n\t\t\t\t\t\tborder-color: #dddddd; \n\t\t\t\t\t\tbackground: #fff;\n\t\t\t\t\t\ti:before { font-weight: normal; background: @primaryColor; color: #fff; text-shadow: none; }\n\t\t\t\t\t\ta { color: @primaryColor; } \n\t\t\t\t\t}\n\t\t\t\t\t&:last-child { border-bottom: none; }\n\t\t\t\t\ta {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tcolor: #222;\n\t\t\t\t\t\tpadding: 0 0 0 30px;\n\t\t\t\t\t\ti:before { color: #555; width: 20px; height: 17px; font-size: 14px; border: 1px solid #ccc; background: #dddddd; top: 9px; left: 0; text-align: center; vertical-align: middle; padding-top: 3px; text-shadow: 0 1px 0 #fff; } \n\t\t\t\t\t}\n\t\t\t\t\t&.hasSubmenu {\n\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t> a {  }\n\t\t\t\t\t\tul {\n\t\t\t\t\t\t\tpadding: 0 0 10px;\n\t\t\t\t\t\t\tli {\n\t\t\t\t\t\t\t\theight: auto;\n\t\t\t\t\t\t\t\tline-height: normal;\n\t\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\t\tline-height: 20px;\n\t\t\t\t\t\t\t\ta {\n\t\t\t\t\t\t\t\t\tcolor: #333;\n\t\t\t\t\t\t\t\t\tpadding: 0 0 0 20px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t&.active a { font-weight: bold; }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t.widget-footer {\n\t\tbackground: @contentBg1;\n\t\theight: 25px;\n\t\tline-height: 25px;\n\t\tborder-top: 1px solid @contentBorder2;\n\t\t.glyphicons {\n\t\t\twidth: 25px; height: 25px; line-height: 25px; padding: 0; float: right;\n\t\t\ti:before {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tcolor: #c3c3c3;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t}\n\t\t\t&:hover i:before {\n\t\t\t\tcolor: rgba(0,0,0,.5);\n\t\t\t}\n\t\t}\n\t}\n\t\n    &.margin-bottom-none { margin-bottom: 0; }\n\t&.widget-gray {\n\t\tbackground: #f5f5f5;\n\t\t.widget-head {\n\t\t\tbackground: #e9e9e9;\n\t\t\tborder-color: #d1d2d3;\n\t\t\t.bevelEmboss(0.6, 0);\n\t\t\t.heading {\n\t\t\t\tcolor: #555555; text-shadow: 0 1px 0 #fff;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\ti:before { background: none; color: #555; border-color: rgba(0,0,0,.1); }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-2 {\n\t\t&:before, &:after { display: none; }\n\t\t.widget-head {\n\t\t\tbackground: #e2e2e4;\n\t\t\t.bevelEmboss(0.6, 0);\n\t\t\theight: 36px;\n\t\t\tline-height: 36px;\n\t\t\tborder-color: #d1d2d3;\n\t\t\t.heading {\n\t\t\t\tline-height: 36px;\n\t\t\t\tcolor: #555555;\n\t\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\t\tfont-size: 12pt;\n\t\t\t\ti:before {\n\t\t\t\t\tcolor: #555555;\n\t\t\t\t\tbackground: none;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t\ttop: 2px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tborder: 1px solid #d1d2d3;\n\t\t\tborder-top: 0;\n\t\t\tbackground: #f5f5f5;\n\t\t}\n\t\t&.primary {\n\t\t\t.widget-head { \n\t\t\t\tbackground: @primaryColor;\n\t\t\t\tborder-color: @primaryColor;\n\t\t\t\t.bevelEmboss(0.6,0.1);\n\t\t\t\t.heading { color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.5); i:before { color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.5); } } \n\t\t\t}\n\t\t}\n\t}\n\t&.widget-3 {\n\t\t&:before, &:after { display: none; }\n\t\t.widget-head {\n\t\t\theight: 36px;\n\t\t\tline-height: 36px;\n\t\t\t.heading {\n\t\t\t\tdisplay: block;\n\t\t\t\ttext-align: center;\n\t\t\t\tfloat: none;\n\t\t\t\tline-height: 36px;\n\t\t\t\theight: 36px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tfont-size: 12pt;\n\t\t\t\ti:before {\n\t\t\t\t\tbackground: none;\n\t\t\t\t\tborder: none;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t\ttop: 5px;\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tcolor: #45484d;\n\t\t\t\t}\n\t\t\t\t.glyphicons {\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\twidth: 35px;\n\t\t\t\t\theight: 36px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tborder-bottom: 1px solid @contentBorder;\n\t\t\t&.large {\n\t\t\t\tfont-size: 26pt;\n\t\t\t\tfont-weight: bold;\n\t\t\t\ttext-align: center;\n\t\t\t\tpadding: 25px 0;\n\t\t\t\tvertical-align: middle;\n\t\t\t\tline-height: normal;\n\t\t\t\t&.cancellations {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tline-height: 20px;\n\t\t\t\t\t\ttext-align: left;\n\t\t\t\t\t\tfont-size: 17pt;\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\ttext-shadow: none;\n\t\t\t\t\t\tspan { display: block; }\n\t\t\t\t\t\tspan:first-child { color: @primaryColor; text-transform: uppercase; font-size: 13pt; }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t&.dashboard {\n\t\t\t\t\tpadding: 15px 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.widget-footer {\n\t\t\tbackground: @contentBg1;\n\t\t\tborder-top: none;\n\t\t\ta { \n\t\t\t\tfloat: none; color: #dddddd; width: auto; padding: 0 10px 0 30px; border-right: 1px solid @contentBorder; text-decoration: none; i:before { color: #dddddd; left: 5px; }\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: @primaryColor;\n\t\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t\t} \n\t\t\t}\n\t\t\t&.align-center { text-align: center; a:first-child { border-left: 1px solid @contentBorder; } }\n\t\t\t&.align-right { text-align: right; a:first-child { border-left: 1px solid @contentBorder; } a:last-child { border-right: none; } }\n\t\t}\n\t}\n\t&.widget-4 {\n\t\tborder: none;\n\t\tbackground: none;\n\t\t.widget-head {\n\t\t\tbackground: none;\n\t\t\tpadding: 10px;\n\t\t\tborder: none;\n\t\t\t.heading {\n\t\t\t\tcolor: #544f49;\n\t\t\t\ttext-shadow: none;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t.widget-body {\n\t\t\tpadding: 0 10px 10px;\n\t\t\tborder: none;\n\t\t\t&.list {\n\t\t\t\tul li { padding: 0; }\n\t\t\t}\n\t\t}\n\t}\n\t&.widget-heading-simple {\n\t\tborder: none;\n\t\tbackground: none;\n\t\t> .widget-head {\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tpadding: 0 0 5px;\n\t\t\theight: 25px;\n\t\t\tline-height: 25px;\n\t\t\t.heading { \n\t\t\t\tpadding: 0;\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t\t&.glyphicons {\n\t\t\t\t\tpadding: 0 0 0 25px;\n\t\t\t\t\ti:before { \n\t\t\t\t\t\ttext-align: left; \n\t\t\t\t\t\twidth: 25px;\n\t\t\t\t\t\theight: 25px;\n\t\t\t\t\t\tline-height: 25px; \n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\t> .widget-body {\n\t\t\tborder: 1px solid @contentBorder;\n\t\t\t.rounded(5px,5px,5px,5px);\n\t\t}\n\t}\n\t&.widget-body-simple {\n\t\t#reset .boxShadow();\n\t\t> .widget-body {\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t&.widget-body-white {\n\t\t> .widget-body { background: @widgetBg; }\n\t}\n\t&.widget-body-gray {\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t> .widget-body { background: @widgetBgGray; }\n\t}\n\t&.widget-body-primary {\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t> .widget-body { \n\t\t\tbackground: @primaryColor; \n\t\t\t* { color: #fff; text-shadow: none; } \n\t\t}\n\t}\n\t&.widget-body-multiple {\n\t\t#reset .boxShadow();\n\t\t> .widget-body {\n\t\t\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t\t\tmargin-bottom: @spacing/2;\n\t\t\t&:last-of-type { margin-bottom: 0; }\n\t\t}\n\t\t&.widget-body-gray {\n\t\t\t> .widget-body {\n\t\t\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2; \n\t\t\t}\n\t\t}\n\t}\n}\n\n// Dashboard widgets\n// -------------------------\n\n.widget-offers { \n\t.price { \n\t\tfont-size: 14px;\n\t\tstrong { color: #000; } \n\t}\n\t.thumb { padding: 0; }\n\th5 { \n\t\tborder-bottom: 1px solid #cecece; \n\t\tfont-weight: 600; \n\t\ttext-shadow: @bodyTextShadow; \n\t\tbox-shadow: 0 1px 0 0 #eeeeee;\n\t\tpadding: 0 0 5px;\n\t}\n}\n\n// dashboard recent activity widget\n// -------------------------\n\n.widget-activity {\n\t> .widget-body { padding: 0 @spacing; }\n\tul.list {\n\t\tlist-style: none;\n\t\tmargin: 0 -@spacing;\n\t\tpadding: 0;\n\t\tli {\n\t\t\theight: 39px;\n\t\t\tline-height: 39px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tborder-bottom: 1px solid @contentBorder2;\n\t\t\tpadding: 0 @spacing;\n\t\t\t.transition(background .5s ease);\n\t\t\t&:hover, &.highlight {\n\t\t\t\tbackground: @listActiveHoverBg;\n\t\t\t\tbox-shadow: @listActiveHoverBoxShadow;\n\t\t\t\t-moz-box-shadow: @listActiveHoverBoxShadow;\n\t\t\t\t-webkit-box-shadow: @listActiveHoverBoxShadow;\n\t\t\t\ttext-shadow: @bodyTextShadow;\n\t\t\t\tcursor: pointer;\n\t\t\t\t&:after {\n\t\t\t\t\tcontent: \"\\e212\";\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: @spacing;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tline-height: 39px;\n\t\t\t\t\tfont-family: \"Glyphicons\";\n\t\t\t\t\tfont-size: 24px/1em;\n\t\t\t\t\tcolor: #d5d5d5;\n\t\t\t\t}\n\t\t\t\t.activity-icon i:before { color: #505050; }\n\t\t\t}\n\t\t\t> span { \n\t\t\t\tdisplay: block; \n\t\t\t\theight: 39px; line-height: 39px; float: left; position: relative; overflow: hidden;\n\t\t\t\t&.ellipsis {\n\t\t\t\t\twhite-space:nowrap;\n\t\t    \t\ttext-overflow:ellipsis; \n\t\t    \t\tmax-width:75%;\n\t\t\t\t}\n\t\t\t\t&.date { width: 40px; text-align: center; }\n\t\t\t}\n\t\t\t.activity-icon {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 39px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 10px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttext-align: center;\n\t\t\t\ti {\n\t\t\t\t\theight: 39px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tposition: relative; \n\t\t\t\t}\n\t\t\t\ti:before { position: relative; top: 0; left: 0; color: #cbcbcb; font-size: 18px; line-height: 39px; }\n\t\t\t}\n\t\t\t&.double {\n\t\t\t\theight: 45px; \n\t\t\t\tline-height: 45px;\n\t\t\t\t> span {\n\t\t\t\t\theight: 45px; \n\t\t\t\t\tline-height: 45px; \n\t\t\t\t\t&.ellipsis {\n\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\tpadding: 7px 0 0;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\t}\n\t\t\t\t\t.meta { \n\t\t\t\t\t\tdisplay: block; \n\t\t\t\t\t\tline-height: 15px;\n\t\t\t\t\t\tfont-weight: 400;\n\t\t\t\t\t\tcolor: #b7b7b7;\n\t\t\t\t\t\ti:before { top: 1px; color: #b7b7b7; }\n\t\t\t\t\t\tspan { font-style: italic; } \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.activity-icon { margin-left: 0; height: 45px; i { height: 45px; &:before { line-height: 45px; } } }\n\t\t\t\t&:hover, &.highlight {\n\t\t\t\t\t&:after {\n\t\t\t\t\t\theight: 45px;\n\t\t\t\t\t\tline-height: 45px;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t&:last-child { border: none; }\n\t\t}\n\t}\n\t.view-all { position: absolute; top: @spacing+3; right: @spacing; }\n}\n\n.widget-messages {\n\tul {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tli {\n\t\t\tborder: 1px solid #e5e5e5;\n\t\t\tpadding: 5px;\n\t\t\tmargin: 0 0 10px;\n\t\t\tposition: relative;\n\t\t\t.meta span { color: #a3a3a3; font-size: 12px; }\n\t\t\t.glyphicons.single.bin {\n\t\t\t\tposition: relative;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tpadding: 0; width: 15px; height: 20px; top: 5px;\n\t\t\t\ti {\n\t\t\t\t\tdisplay: block; width: 15px; height: 20px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\t&:before { color: #cccccc; position: relative; line-height: 20px; left: auto; top: auto;  } \n\t\t\t\t} \n\t\t\t}\n\t\t\t&:last-child { margin: 0; }\n\t\t}\n\t}\n}\n\n// Widget Timeline\n// -------------------------\n\n.widget-timeline {\n\t.widget-body { \n\t\tpadding: 15px;\n\t\tposition: relative; \n\t\t&:before { display: block; width: 1px; background: @contentBorder; top: 15px; bottom: 30px; left: 75px; content: \"\"; position: absolute; }\n\t}\n\t&:not(.widget) {\n\t\tposition: relative;\n\t\t&:before { display: block; width: 1px; background: @contentBorder; top: 15px; bottom: 30px; left: 75px; content: \"\"; position: absolute; }\n\t}\n\t.view-all { margin-left: 35px; }\n\tul.list-timeline {\n\t\tlist-style: none;\n\t\tmargin: 0 0 15px;\n\t\tpadding: 0;\n\t\tli {\n\t\t\t&:last-child { margin: 0; }\n\t\t\tdisplay: block;\n\t\t\theight: 30px;\n\t\t\tline-height: 30px;\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\t\t\tbackground: @widgetBg;\n\t\t\tborder: 1px solid @contentBorder2;\n\t\t\tmargin: 0 0 10px;\n\t\t\tpadding: 0 10px;\n\t\t\tspan { \n\t\t\t\tdisplay: block; \n\t\t\t\theight: 30px; line-height: 30px; float: left; position: relative; overflow: hidden;\n\t\t\t\t&.ellipsis {\n\t\t\t\t\twhite-space:nowrap;\n\t\t    \t\ttext-overflow:ellipsis; \n\t\t    \t\tmax-width:75%;\n\t\t\t\t}\n\t\t\t\t&.date { width: 40px; text-align: center; }\n\t\t\t}\n\t\t\t.activity-icon {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0 10px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttext-align: center;\n\t\t\t\ti {\n\t\t\t\t\theight: 30px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\t.rounded(2px,2px,2px,2px);\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tbackground: #64625f; \n\t\t\t\t}\n\t\t\t\ti:before { position: relative; top: 0; left: 0; color: #fff; font-size: 17px; line-height: 30px; }\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Chat widgets\n// -------------------------\n\n.widget-chat {\n\t.media {\n\t\tposition: relative;\n\t\tmin-height: 80px;\n\t\t.media-object {\n\t\t\tposition: relative;\n\t\t}\n\t\t.thumb { padding: 0; }\n\t\tsmall { \n\t\t\tcolor: #cccccc;\n\t\t\t&:before, &:after { content: \"\"; }\n\t\t\t&.author { position: absolute; left: 0; width: 50px; top: 60px; text-align: center; display: block; }\n\t\t\t&.date { display: block; border-bottom: 1px solid @contentBorder; margin: 0 0 5px; padding: 0 0 3px; text-align: right; width: 100%; } \n\t\t}\n\t\t&.right { \n\t\t\tsmall {\n\t\t\t\t&.author { left: auto; right: 0; }\n\t\t\t\t&.date { text-align: left; }\n\t\t\t}\t\n\t\t}\n\t\t.media-body {\n\t\t\t.rounded(2px, 2px, 2px, 2px);\n\t\t\tpadding: 0;\n\t\t\tblockquote {\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\tp:last-child { margin: 0; }\n\t\t\t}\n\t\t}\n\t\t&:last-of-type { padding-bottom: 10px; }\n\t}\n\t.chat-controls {\n\t\tposition: absolute;\n\t\theight: 30px;\n\t\tpadding: @spacing 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tborder: 1px solid @contentBorder;\n\t\tborder-top: none;\n\t\t.rounded(0, 0, 5px, 5px);\n\t\tbackground: #fff;\n\t}\n\t.widget-body { padding-bottom: 0; }\n\t&.widget-heading-simple > .widget-body { .rounded(5px, 5px, 0, 0); }\n\tpadding-bottom: 60px !important;\n}\n\n// Stats widgets\n// -------------------------\n\n.widget-stats {\n\tbackground: @widgetBg;\n\tpadding: @spacing 0;\n\tmargin: 0;\n\theight: 80px;\n\tposition: relative;\n\ttext-align: center;\n\tdisplay: block;\n\tborder: 1px solid @contentBorder;\n\ttext-shadow: @bodyTextShadow;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\t.count {\n\t\tposition: absolute; \n\t\ttop: 0; \n\t\tleft: 0; \n\t\tfont-size: 13px; \n\t\t.rounded();\n\t}\n\t.label { font-weight: 600; padding: 4px; box-shadow: 0 0 0 1px rgba(0,0,0,.2) inset; }\n\tspan { display: inline-block; }\n\t.txt { padding: 0; color: #cecece; }\n\t.glyphicons {\n\t\tpadding: 0;\n\t\tdisplay: block;\n\t\ti { display: block; }\n\t\ti:before { color: #cecece; font-size: 30px; top: 0; left: 0; position: relative; }\n\t}\n\t&, &:hover, &:focus { text-decoration: none; }\n\t&:hover { background: @contentGradient1; }\n\t&.small {\n\t\tpadding: 5px 0;\n\t\t.glyphicons {\n\t\t\tpadding: 12px 0 0;\n\t\t\ti:before { font-size: 25px; }\n\t\t}\n\t}\n\t&.widget-stats-1 {\n\t\tpadding: 8px 0;\n\t\theight: 94px;\n\t\t.glyphicons {\n\t\t\tdisplay: block;\n\t\t\theight: 35px;\n\t\t\tline-height: 35px;\n\t\t\tpadding-bottom: 5px;\n\t\t\t.txt { display: inline-block; padding: 0 5px; line-height: 35px; }\n\t\t\ti {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\t&:before { top: 5px; font-size: 25px; }\n\t\t\t}\n\t\t}\n\t\t.count { position: relative; top: auto; right: auto; font-size: 60px; display: inline-block; font-weight: 700; padding: 0; line-height: 40px; }\n\t}\n\t&.widget-stats-2 {\n\t\t.txt { font-size: 14px; }\n\t\t.count { position: relative; top: auto; right: auto; font-size: 60px; font-weight: 700; padding: 0 0 3px; display: block; line-height: 55px; }\n\t}\n\t&.widget-stats-gray {\n\t\t&.widget-stats-1, &.widget-stats-2 {\n\t\t\t.txt { color: #000; }\n\t\t}\n\t}\n\t&.widget-stats-easy-pie {\n\t\t.easy-pie { display: block; width: 50px; margin: -5px auto 0; }\n\t\t&.txt-single {\n\t\t\t.easy-pie { margin: 0 auto; }\n\t\t\t.txt { padding: 7px 0 0; }\n\t\t}\n\t}\n\t&.widget-stats-3 {\n\t\t.sparkline { display: inline-block; }\n\t\t.txt {\n\t\t\ttext-align: left;\n\t\t\tvertical-align: middle;\n\t\t\tpadding: 13px 0 0 10px;\n\t\t}\n\t\t.count { padding: 0 0 5px; display: block; }\n\t}\n\t\n\t&.widget-stats-gray {\n\t\tbackground: @widgetBgGray;\n\t\tbox-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-moz-box-shadow: 0 3px 0 0 @contentShadow2;\n\t\t-webkit-box-shadow: 0 3px 0 0 @contentShadow2;\n\t}\n}\n\n// Generic Widget\n// -------------------------\n\n.box-generic { \n\tborder: 1px solid @contentBorder;\n\tpadding: @spacing; \n\tposition: relative; \n\tbackground: @widgetBg;\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\tmargin: 0 0 @spacing;\n}\n\n// Ribbons\n// -------------------------\n\n.ribbon-wrapper {\n\twidth: 85px;\n\theight: 88px;\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: -3px;\n\tright: -3px;\n\t.ribbon {\n\t\tdisplay: block;\n\t\tfont-family: Arial, sans-serif;\n\t\tfont-size: 15px;\n\t\tfont-weight: 600;\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\t-webkit-transform: rotate(45deg);\n\t\t-moz-transform: rotate(45deg);\n\t\t-ms-transform: rotate(45deg);\n\t\t-o-transform: rotate(45deg);\n\t\tposition: relative;\n\t\tpadding: 7px 0;\n\t\tleft: -5px;\n\t\ttop: 15px;\n\t\twidth: 120px;\n\t\tline-height: 20px;\n\t\tbackground-color: #797979;\n\t\t-webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\t-moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\tbox-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);\n\t\t&:before, &:after { \n\t\t\tcontent:  \"\";\n\t\t\tborder-top: 2px solid #797979;\n\t\t\tborder-left: 2px solid transparent;\n\t\t\tborder-right: 2px solid transparent;\n\t\t\tposition: absolute;\n\t\t\tbottom: -2px;\n\t\t}\n\t\t&:before { left: 0; bottom: -1px; }\n\t\t&:after { right: 0; }\n\t\t&.primary { background-color: @primaryColor; }\n\t\t&.success { background-color: @successColor; }\n\t\t&.warning { background-color: @warningColor; }\n\t\t&.danger { background-color: @dangerColor; }\n\t\t&.default { \n\t\t\tbackground-color: #e5e5e5;\n\t\t\tcolor: #595959;\n\t\t\t&:before, &:after { \n\t\t\t\tborder-top: 2px solid #ccc;\n\t\t\t} \n\t\t}\n\t}\n\t&.small {\n\t\twidth: 65px;\n\t\theight: 68px;\n\t\t.ribbon { \n\t\t\twidth: 90px; padding: 0; font-size: 13px;\n\t\t\t&:before {\n\t\t\t\tbottom: -2px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Breadcrumb\n// -------------------------\n\n.breadcrumb {\n\theight: 38px;\n\tline-height: 39px;\n\tpadding: 0 @spacing;\n\t.rounded();\n\tmargin: 0;\n\tbackground: none;\n\tborder-bottom: 1px solid @contentBorder;\n\tbox-shadow: 0 1px 0 0 #fff;\n\t-moz-box-shadow: 0 1px 0 0 #fff;\n\t-webkit-box-shadow: 0 1px 0 0 #fff;\n\tcolor: #ababab;\n\tfont-size: 12px;\n\tposition: relative;\n\toverflow: hidden;\n\tli { \n\t\ttext-shadow: @bodyTextShadow; \n\t\tline-height: 38px;\n\t\theight: 38px;\n\t\ta { \n\t\t\tcolor: #ababab; \n\t\t\tfont-weight: 600; \n\t\t\t&.glyphicons {\n\t\t\t\tcolor: #ababab;\n\t\t\t\tpadding: 0 0 0 25px;\n\t\t\t\ti:before {\n\t\t\t\t\tcolor: #ababab;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\ttop: 12px;\n\t\t\t\t\tleft: 3px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&.divider { \n\t\t\tmargin: 0 5px 0 7px;\n\t\t\twidth: 0;\n\t\t\tborder-left: 1px solid @contentBorder; \n\t\t\tborder-right: 1px solid #fff;\n\t\t\tvertical-align: top;\n\t\t}\n\t}\n}\n\n// Wells\n// -------------------------\n\n.well {\n\tz-index: 1;\n\tposition: relative;\n\tpadding: 15px;\n\tmargin: 0 0 @spacing;\n\t&.small { padding: 10px; }\n\t.popover { \n\t\tz-index: 2;\n\t\tfont-size: 13px; \n\t}\n\tbox-shadow: 0 3px 0 0 @contentShadow1;\n\t-moz-box-shadow: 0 3px 0 0 @contentShadow1;\n\t-webkit-box-shadow: 0 3px 0 0 @contentShadow1;\n\t.rounded(5px,5px,5px,5px);\n\tbackground: @wellBg;\n\tborder-color: @contentBorder;\n\t&.dark { background: rgba(0,0,0,.2); }\n\t&.white { background: #fff; }\n}\n\n// Collapsible Widgets\n// -------------------------\n\n[data-toggle=\"collapse-widget\"] {\n\t.collapse-toggle {\n\t\tposition: relative;\n\t\theight: 35px;\n\t\twidth: 30px;\n\t\tdisplay: block;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\t&:before {\n\t\t\tfont-family: \"Glyphicons\";\n\t\t\tfont-size: 17px;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\theight: 35px;\n\t\t\tline-height: 34px;\n\t\t\ttext-align: center;\n\t\t\tcolor: #cccccc;\n\t\t\tcontent: \"\\e192\";\n\t\t}\n\t\tmargin-right: -10px;\n\t}\n\t&.widget-heading-simple {\n\t\t.collapse-toggle { \n\t\t\tmargin-right: 0;\n\t\t\theight: 25px;\n\t\t\t&:before {\n\t\t\t\theight: 25px;\n\t\t\t\tline-height: 25px;\n\t\t\t} \n\t\t}\n\t}\n\ta ~ .collapse-toggle { margin-right: 0; }\n\t&[data-collapse-closed=\"false\"] {\n\t\t.collapse-toggle:before { content: \"\\e192\"; }\n\t}\n\t&[data-collapse-closed=\"true\"] {\n\t\t.collapse-toggle:before { content: \"\\e191\"; }\n\t\t.widget-head {\n\t\t\tborder-bottom: none;\n\t\t\tbox-shadow: none;\n\t\t\t-moz-box-shadow: none;\n\t\t\t-webkit-box-shadow: none;\n\t\t}\n\t}\n\t.collapse:not(.list) {\n\t\t.transition(padding .10s ease);\n\t\tpadding: 0px;\n\t\t&.in {\n\t\t\tpadding: @spacing;\n\t\t}\n\t}\n}\n\n// Glyphicons\n// -------------------------\n\n.glyphicons {\n\t&.standard {\n\t\twidth: 24px;\n\t\theight: 24px;\n\t\tpadding: 0;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\theight: 24px;\n\t\t\t&:before { color: #64625f; position: relative; top: auto; left: auto; }\n\t\t}\n\t\t&:not(.disabled):hover { i:before { color: #797979; } }\n\t\t&.btn { \n\t\t\tpadding: 4px;\n\t\t\t&.btn-small { padding: 2px 5px; width: auto; height: auto; i:before { top: auto; line-height: 22px; } } \n\t\t}\n\t}\n\t&.primary { i:before { color: @primaryColor; } }\n\t&.single {\n\t\tcolor: @primaryColor;\n\t\tpadding: 0 0 0 20px;\n\t\ti:before { font-size: 13px; top: 4px; color: @primaryColor; }\n\t\t+ .single { margin-left: 8px; }\n\t\t&.regular {\n\t\t\tcolor: @bodyText; \n\t\t\ti:before { \n\t\t\t\tcolor: @bodyText; \n\t\t\t} \n\t\t}\n\t}\n\t&.text-error { color: @primaryColor; i:before { color: @primaryColor; } }\n\t&.text-info { color: #5d92b3; i:before { color: #5d92b3; } }\n\t&.text-success { color: #719d46; i:before { color: #719d46; } }\n\t&.btn-action {\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tpadding: 0;\n\t\t.rounded(5px,5px,5px,5px);\n\t\tborder-width: 1px;\n\t\tborder-style: solid;\n\t\tvertical-align: middle;\n\t\ti:before {\n\t\t\tfont-size: 14px;\n\t\t\ttop: 5px;\n\t\t\tleft: 5px;\n\t\t\ttext-shadow: 0 1px 0 #fff;\n\t\t\tcolor: #fff !important;\n\t\t}\n\t\t&.btn-default i:before { color: #7c7c7c !important; }\n\t\t&.single {\n\t\t\tbox-shadow: none;\n\t\t\t-webkit-box-shadow: none;\n\t\t\t-moz-box-shadow: none;\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\t&.btn-icon {\n\t\ttext-align: left;\n\t\tpadding: 5px 7px 5px 40px;\n\t\ti {\n\t\t\tfloat: left;\n\t\t\t&:before { font-size: 15px; top: 0; left: 0; width: 33px; height: 23px; .rounded(3px, 0px, 0px, 3px); vertical-align: middle; padding: 7px 0 0; text-align: center; }\n\t\t}\n\t\t&.right {\n\t\t\ttext-align: left;\n\t\t\tpadding: 5px 0 5px 7px;\n\t\t\ti:before { .rounded(0, 3px, 3px, 0); right: 0; left: auto; text-align: center; }\n\t\t}\n\t}\n\t&.btn-large {\n\t\tpadding: 10px 10px 10px 40px; font-weight: 600;\n\t\ti:before { top: 12px; left: 12px; font-size: 17px; } \n\t\t&.btn-icon {\n\t\t\ti:before { top: 0; left: 0; height: 28px; padding: 12px 0 0; }\n\t\t}\n\t}\n\t&.btn-small { \n\t\tpadding: 2px 10px 2px 35px;\n\t\ti:before { padding: 5px 0 0; width: 28px; height: 19px; font-size: 14px; } \n\t}\n\t&.btn-mini { \n\t\tpadding: 1px 6px 1px 33px;\n\t\ti:before { padding: 5px 0 0; width: 26px; height: 17px; font-size: 13px; } \n\t}\n\t&.orange i:before {\n\t\tcolor: #EDB459;\n\t}\n\t&.btn-default i:before { color: #9e9e9e; text-shadow: none; }\n}\n\nh4.glyphicons {\n\tpadding: 0 0 0 35px;\n\tdisplay: block;\n\ti:before { font-size: 22px; font-weight: normal; color: #575655; }\n}\nh3.glyphicons,\nh2.glyphicons {\n\tpadding: 0 0 0 45px;\n\tdisplay: block;\n\ti:before { font-size: 27px; font-weight: normal; left: 2px; top: 3px; color: #575655; }\n\t&.cogwheels i:before { left: 5px; }\n}\n\n// Finances Summary\n// -------------------------\n\n.finances_summary {\n\t.well \n\t{\n\t\tfont-size: 16px;\n\t\ttext-align: center;\n\t\tstrong {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 22pt;\n\t\t\tcolor: #45494c;\n\t\t\tline-height: normal;\n\t\t}\n\t}\n\t.glyphicons.standard i:before { color: #cccccc; }\n}\n\n// Icons within content\n// -------------------------\n\ndiv.glyphicons {\n\tpadding: 0 0 0 35px;\n\ti:before { color: #cccccc; }\n\t&.glyphicon-large {\n\t\tpadding: 0 0 0 75px;\n\t\ti:before { font-size: 50px; left: 0; }\n\t\t&.group-column {\n\t\t\tpadding: 0 0 0 85px;\n\t\t\ti:before { font-size: 45px; left: 12px; }\n\t\t}\n\t}\n\t&.glyphicon-top {\n\t\tpadding: 0;\n\t\ttext-align: center;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\t&:before {\n\t\t\t\tposition: relative;\n\t\t\t\tleft: auto;\n\t\t\t\ttop: auto;\n\t\t\t}\n\t\t}\n\t\t&.glyphicon-xlarge {\n\t\t\ti { padding: 0 0 10px; }\n\t\t\ti:before { font-size: 70px; }\n\t\t}\n\t}\n\t&.glyphicon-primary {\n\t\ti:before { color: @primaryColor; }\n\t}\n}\n.widget-body-primary {\n\tdiv.glyphicons i:before { color: #fff; }\n}\n\n// Large social icons\n// -------------------------\n\n.social-large {\n\theight: 97px;\n\ta {\n\t\tdisplay: block;\n\t\theight: 77px;\n\t\tfloat: left;\n\t\tpadding: 10px 19px;\n\t\tcolor: #d5d5d5;\n\t\tbackground: #ffffff;\n\t\tfont-weight: bold;\n\t\ttext-align: center;\n\t\tborder-right: 1px solid #e5e5e5;\n\t\ttext-decoration: none;\n\t\ti {\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\t\t\tpadding: 0 0 8px;\n\t\t\t&:before { display: block; text-align: center; top: auto; left: auto; position: relative; font-size: 50px; color: #d5d5d5; }\n\t\t}\n\t\t&.active, &:hover {\n\t\t\tcolor: #fff;\n\t\t\tbackground: @primaryColor;\n\t\t\ti:before { color: #fff; }\n\t\t}\n\t\t&:last-child { border: none; }\n\t}\n\t&.social-large-2 {\n\t\ta {\n\t\t\tdisplay: inline-block;\n\t\t\tfont-weight: 400;\n\t\t\tfloat: none;\n\t\t\tborder: none;\n\t\t\tbackground: none;\n\t\t\tcolor: #444444;\n\t\t\ti:before { color: #444444; }\n\t\t\t&.active, &:hover {\n\t\t\t\tcolor: @primaryColor;\n\t\t\t\ti:before { color: @primaryColor; }\n\t\t\t} \n\t\t}\n\t}\n}\n\n// Pinterest style widget\n// ---------------------------\n.widget-pinterest {\n\t.widget-body {\n\t\tpadding: 0;\n\t\t.description {\n\t\t    -webkit-box-sizing:border-box;\n\t\t    -moz-box-sizing:border-box;\n\t\t    box-sizing:border-box;\n\t\t    line-height:16px;\n\t\t    padding: @spacing;\n\t\t}\n\t\t.thumb { \n\t\t\tpadding: 0; \n\t\t\tborder: none; \n\t\t\timg { \n\t\t\t\twidth:100%; \n\t\t\t\t.rounded(5px, 5px, 0, 0); \n\t\t\t} \n\t\t}\n\t}\n}\n\n// Twitter\n// ---------------------------\n\n.jstwitter {\n    position: relative;\n\t.item { overflow:hidden; }\n\t.tweet-wrapper {\n\t    -webkit-box-sizing:border-box;\n\t    -moz-box-sizing:border-box;\n\t    box-sizing:border-box;\n\t    line-height:16px;\n\t    padding: @spacing;\n\t}\n\t.widget-body { padding: 0; }\n\t.item a { text-decoration: none; }\n\t.item img { width:100%; .rounded(5px, 5px, 0, 0); }\n\t.item .thumb { padding: 0; border: none; }\n\t.item a:hover { text-decoration: underline; }\n\t.item .text { display:block; }\n\t.item .time,\n\t.item .user {\n\t    font-style: italic;\n\t    color: #999;\n\t}\n\t.item.active { display: block; }\n}\n\n// Star ratings\n// ---------------------------\n\n.rating {\n\tunicode-bidi: bidi-override;\n\tdirection: rtl;\n\t&.text-large { margin: 7px 0; }\n\tspan.star{\n\t\tfont-family:FontAwesome;\n\t\tfont-weight:normal;\n\t\tfont-style:normal;\n\t\tdisplay:inline-block;\n\t}\n\tspan.star:before { content:\"\\f006\"; padding-right:5px; }\n\t&:not(.read-only) \n\t{\n\t\tspan.star:hover { cursor:pointer; }\n\t\tspan.star:hover:before,\n\t\tspan.star:hover ~ span.star:before { content:\"\\f005\"; color: @primaryColor; }\n\t}\n\tspan.star.active:before,\n\tspan.star.active ~ span.star:before { content:\"\\f005\"; color: @primaryColor; }\n}\n\n// Hero unit\n// ---------------------------\n\n.hero-unit {\n\tbackground: none;\n\tborder: none;\n\t#reset .rounded();\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/calendar.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * calendar.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* initialize the external events\n\t-----------------------------------------------------------------*/\n\n\t$('#external-events ul li').each(function() \n\t{\n\t\n\t\t// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)\n\t\t// it doesn't need to have a start or end\n\t\tvar eventObject = {\n\t\t\ttitle: $.trim($(this).text()) // use the element's text as the event title\n\t\t};\n\t\t\n\t\t// store the Event Object in the DOM element so we can get to it later\n\t\t$(this).data('eventObject', eventObject);\n\t\t\n\t\t// make the event draggable using jQuery UI\n\t\t$(this).draggable(\n\t\t{\n\t\t\tzIndex: 999,\n\t\t\trevert: true,      // will cause the event to go back to its\n\t\t\trevertDuration: 0,  //  original position after the drag,\n\t\t\tstart: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t\t});\n\t\t\n\t});\n\n\t/* initialize the calendar\n\t-----------------------------------------------------------------*/\n\t\n\t$('#calendar').fullCalendar({\n\t\theader: {\n\t\t\tleft: 'prev,next today',\n\t\t\tcenter: 'title',\n\t\t\tright: 'month,agendaWeek,agendaDay'\n\t\t},\n\t\teditable: true,\n\t\tdroppable: true,\n\t\tevents: basePath + \"ajax.php?section=calendarEvents\",\n\t\tdrop: function(date, allDay) \n\t\t{\n\t\t\t// retrieve the dropped element's stored Event Object\n\t\t\tvar originalEventObject = $(this).data('eventObject');\n\t\t\t\n\t\t\t// we need to copy it, so that multiple events don't have a reference to the same object\n\t\t\tvar copiedEventObject = $.extend({}, originalEventObject);\n\t\t\t\n\t\t\t// assign it the date that was reported\n\t\t\tcopiedEventObject.start = date;\n\t\t\tcopiedEventObject.allDay = allDay;\n\t\t\t\n\t\t\t// render the event on the calendar\n\t\t\t// the last `true` argument determines if the event \"sticks\" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)\n\t\t\t$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);\n\t\t\t\n\t\t\t// is the \"remove after drop\" checkbox checked?\n\t\t\tif ($('#drop-remove').is(':checked')) {\n\t\t\t\t// if so, remove the element from the \"Draggable Events\" list\n\t\t\t\t$(this).remove();\n\t\t\t}\n\t\t\t\n\t\t}\n\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/charts.helper.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * charts.helper.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\nvar charts = \n{\n\t// init charts on finances page\n\tinitFinances: function()\n\t{\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\t},\n\t\n\t// init charts on Google Analytics page\n\tinitGoogleAnalytics: function()\n\t{\n\t\t// init lines chart with fill & without points\n\t\t//this.chart_lines_fill_nopoints.init();\n\t},\n\t\n\t// init charts on Charts page\n\tinitCharts: function()\n\t{\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\n\t\t// init lines chart with fill & without points\n\t\tthis.chart_lines_fill_nopoints.init();\n\n\t\t// init ordered bars chart\n\t\tthis.chart_ordered_bars.init();\n\n\t\t// init donut chart\n\t\tthis.chart_donut.init();\n\n\t\t// init stacked bars chart\n\t\tthis.chart_stacked_bars.init();\n\n\t\t// init pie chart\n\t\tthis.chart_pie.init();\n\n\t\t// init horizontal bars chart\n\t\tthis.chart_horizontal_bars.init();\n\n\t\t// init live chart\n\t\tthis.chart_live.init();\n\t},\n\t\n\t// init charts on dashboard\n\tinitIndex: function()\n\t{\t\n\t\t// init simple chart\n\t\tthis.chart_simple.init();\n\t},\n\n\t// utility class\n\tutility:\n\t{\n\t\tchartColors: [ themerPrimaryColor, \"#444\", \"#777\", \"#999\", \"#DDD\", \"#EEE\" ],\n\t\tchartBackgroundColors: [\"transparent\", \"transparent\"],\n\n\t\tapplyStyle: function(that)\n\t\t{\n\t\t\tthat.options.colors = charts.utility.chartColors;\n\t\t\tthat.options.grid.backgroundColor = { colors: charts.utility.chartBackgroundColors };\n\t\t\tthat.options.grid.borderColor = charts.utility.chartColors[0];\n\t\t\tthat.options.grid.color = charts.utility.chartColors[0];\n\t\t},\n\t\t\n\t\t// generate random number for charts\n\t\trandNum: function()\n\t\t{\n\t\t\treturn (Math.floor( Math.random()* (1+40-20) ) ) + 20;\n\t\t}\n\t},\n\n\ttraffic_sources_pie: \n\t{\n\t\t// data\n\t\tdata: [\n\t\t\t{ label: \"organic\",  data: 60 },\n\t\t\t{ label: \"direct\",  data: 22.1 },\n\t\t\t{ label: \"referral\",  data: 16.9 },\n\t\t\t{ label: \"cpc\",  data: 1 }\n\t\t],\n\t\t\n\t\t// chart object\n\t\tplot: null,\n\t\t\n\t\t// chart options\n\t\toptions: {\n\t\t\tseries: {\n\t            pie: {\n\t                show: true,\n\t                redraw: true,\n\t                radius: 1,\n\t                tilt: 0.6,\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div style=\"font-size:8pt;text-align:center;padding:5px;color:#fff;\">'+Math.round(series.percent)+'%</div>';\n\t                    },\n\t                    background: { opacity: 0.8 }\n\t                }\n\t            }\n\t        },\n\t        legend: { show: true, backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        grid: { hoverable: true },\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"<strong>%y% %s</strong>\",\n\t\t\t\tdateFormat: \"%y-%0m-%0d\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: 10,\n\t\t\t\t\ty: 20\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#pie\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// traffic sources dataTables\n\t// we are now using Google Charts instead of Flot\n\ttraffic_sources_dataTables:\n\t{\n\t\t// tables data\n\t\tdata: \n\t\t{\n\t\t\ttableSources:  \n\t\t\t{\n\t\t\t\tdata: null,\n\t\t\t\tinit: function()\n\t\t\t\t{\n\t\t\t\t\tvar data = new google.visualization.DataTable();\n\t\t\t        data.addColumn('string', 'source');\n\t\t\t        data.addColumn('string', 'medium');\n\t\t\t        data.addColumn('number', 'visits');\n\t\t\t        data.addColumn('number', 'pg_views');\n\t\t\t        data.addColumn('string', 'avg_time');\n\n\t\t\t        data.addRows(7);\n\t\t\t        data.setCell(0, 0, 'google', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 2, 89, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 3, 299, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(0, 4, '00:01:48', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 0, '(direct)', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 1, '(none)', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 2, 14, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 3, 34, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(1, 4, '00:03:15', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 0, 'yahoo', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 2, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 3, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(2, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 0, 'ask', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 3, 3, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(3, 4, '00:01:34', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 0, 'bing', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(4, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 0, 'conduit', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 1, 'organic', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(5, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 0, 'google', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 1, 'cpc', null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 2, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 3, 1, null, {'style': 'text-align: center;'});\n\t\t\t        data.setCell(6, 4, '00:00:00', null, {'style': 'text-align: center;'});\n\n\t\t\t        this.data = data;\n\t\t\t        return data;\n\t\t\t\t}\n\t\t\t},\n\t\t\ttableReffering:\n\t\t\t{\n\t\t\t\tdata: null,\n\t\t\t\tinit: function()\n\t\t\t\t{\n\t\t\t\t\tvar data = new google.visualization.DataTable();\n\t\t\t\t\tdata.addColumn('string', 'source');\n\t\t\t        data.addColumn('number', 'pg_views');\n\t\t\t        data.addColumn('string', 'avg_time');\n\t\t\t        data.addColumn('string', 'exits');\n\t\t\t        \n\t\t\t\t\tdata.addRows(6);\n\t\t\t\t\tdata.setCell(0, 0, 'google.ro');\n\t\t\t\t\tdata.setCell(0, 1, 14, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(0, 2, '00:05:51', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(0, 3, '3', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 0, 'search.sweetim.com');\n\t\t\t\t\tdata.setCell(1, 1, 5, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 2, '00:03:29', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(1, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 0, 'start.funmoods.com');\n\t\t\t\t\tdata.setCell(2, 1, 5, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 2, '00:01:02', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(2, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 0, 'google.md');\n\t\t\t\t\tdata.setCell(3, 1, 2, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 2, '00:03:56', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(3, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 0, 'searchmobileonline.com');\n\t\t\t\t\tdata.setCell(4, 1, 2, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 2, '00:02:21', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(4, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 0, 'google.com');\n\t\t\t\t\tdata.setCell(5, 1, 1, null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 2, '00:00:00', null, {'style': 'text-align: center;'});\n\t\t\t\t\tdata.setCell(5, 3, '1', null, {'style': 'text-align: center;'});\n\t\t\t\t\t\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t// chart\n\t\tchart: \n\t\t{\n\t\t\ttableSources: null,\n\t\t\ttableReffering: null\n\t\t},\n\t\t\n\t\t// options\n\t\toptions: \n\t\t{\n\t\t\ttableSources: \n\t\t\t{\n\t\t\t\tpage: 'enable',\n\t\t\t\tpageSize: 6,\n\t\t\t\tallowHtml: true,\n\t\t\t\tcssClassNames: {\n\t\t\t\t\theaderRow: 'tableHeaderRow',\n\t\t\t\t\ttableRow: 'tableRow',\n\t\t\t\t\tselectedTableRow: 'selectedTableRow',\n\t\t\t\t\thoverTableRow: 'hoverTableRow'\n\t\t\t\t},\n\t\t\t\twidth: '100%',\n\t\t\t\talternatingRowStyle: false,\n\t\t\t\tpagingSymbols: { prev: '<span class=\"btn btn-inverse\">prev</btn>', next: '<span class=\"btn btn-inverse\">next</span>' }\n\t\t\t},\n\t\t\t\n\t\t\ttableReffering:\n\t\t\t{\n\t\t\t\tpage: 'enable',\n\t\t\t\tpageSize: 6,\n\t\t\t\tallowHtml: true,\n\t\t\t\tcssClassNames: {\n\t\t\t\t\theaderRow: 'tableHeaderRow',\n\t\t\t\t\ttableRow: 'tableRow',\n\t\t\t\t\tselectedTableRow: 'selectedTableRow',\n\t\t\t\t\thoverTableRow: 'hoverTableRow'\n\t\t\t\t},\n\t\t\t\twidth: '100%',\n\t\t\t\talternatingRowStyle: false,\n\t\t\t\tpagingSymbols: { prev: '<span class=\"btn btn-inverse\">prev</btn>', next: '<span class=\"btn btn-inverse\">next</span>' }\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// data\n\t\t\tcharts.traffic_sources_dataTables.data.tableSources.init();\n\t\t\tcharts.traffic_sources_dataTables.data.tableReffering.init();\n\t\t\t\n\t\t\t// charts\n\t\t\tcharts.traffic_sources_dataTables.drawTableSources();\n\t\t\tcharts.traffic_sources_dataTables.drawTableReffering();\n\t\t},\n\n\t\t// draw Traffic Sources Table\n\t\tdrawTableSources: function()\n\t\t{\n\t\t\tthis.chart.tableSources = new google.visualization.Table(document.getElementById('dataTableSources'));\n\t\t\tthis.chart.tableSources.draw(this.data.tableSources.data, this.options.tableSources);\n\t\t},\n\n\t\t// draw Refferals Table\n\t\tdrawTableReffering: function()\n\t\t{\n\t\t\tthis.chart.tableReffering = new google.visualization.Table(document.getElementById('dataTableReffering'));\n\t\t\tthis.chart.tableReffering.draw(this.data.tableReffering.data, this.options.tableReffering);\n\t\t}\n\t},\n\t\n\t// simple chart\n\tchart_simple:\n\t{\n\t\t// data\n\t\tdata: \n\t\t{\n\t\t\tsin: [],\n\t\t\tcos: []\n\t\t},\n\t\t\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: \n\t\t\t{\n\t\t\t\tshow: true,\n\t\t\t    aboveData: true,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active: false},\n\t            lines: {\n            \t\tshow: true,\n            \t\tfill: false,\n            \t\tlineWidth: 4,\n            \t\tsteps: false\n            \t},\n\t            points: {\n\t            \tshow:true,\n\t            \tradius: 5,\n\t            \tsymbol: \"circle\",\n\t            \tfill: true,\n\t            \tborderColor: \"#fff\"\n\t            }\n\t        },\n\t        legend: { position: \"se\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true, //activate tooltip\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.3\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\n\t\t\tif (this.plot == null)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < 14; i += 0.5) \n\t\t\t\t{\n\t\t\t        this.data.sin.push([i, Math.sin(i)]);\n\t\t\t        this.data.cos.push([i, Math.cos(i)]);\n\t\t\t    }\n\t\t\t}\n\t\t\tthis.plot = $.plot(\n\t\t\t\t$(\"#chart_simple\"),\n\t           \t[{\n\t    \t\t\tlabel: \"Sin\", \n\t    \t\t\tdata: this.data.sin,\n\t    \t\t\tlines: {fillColor: \"#DA4C4C\"},\n\t    \t\t\tpoints: {fillColor: \"#fff\"}\n\t    \t\t}, \n\t    \t\t{\t\n\t    \t\t\tlabel: \"Cos\", \n\t    \t\t\tdata: this.data.cos,\n\t    \t\t\tlines: {fillColor: \"#444\"},\n\t    \t\t\tpoints: {fillColor: \"#fff\"}\n\t    \t\t}], this.options);\n\t\t}\n\t},\n\t\n\t// lines chart with fill & without points\n\tchart_lines_fill_nopoints: \n\t{\n\t\t// chart data\n\t\tdata: \n\t\t{\n\t\t\td1: [],\n\t\t\td2: []\n\t\t},\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: true,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t            lines: {\n            \t\tshow: true,\n            \t\tfill: true,\n            \t\tlineWidth: 2,\n            \t\tsteps: false\n            \t},\n\t            points: {show:false}\n\t        },\n\t        legend: { position: \"nw\", backgroundColor: null, backgroundOpacity: 0 },\n\t        yaxis: { min: 0 },\n\t        xaxis: {ticks:11, tickDecimals: 0},\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\t// generate some data\n\t\t\tthis.data.d1 = [[1, 3+charts.utility.randNum()], [2, 6+charts.utility.randNum()], [3, 9+charts.utility.randNum()], [4, 12+charts.utility.randNum()],[5, 15+charts.utility.randNum()],[6, 18+charts.utility.randNum()],[7, 21+charts.utility.randNum()],[8, 15+charts.utility.randNum()],[9, 18+charts.utility.randNum()],[10, 21+charts.utility.randNum()],[11, 24+charts.utility.randNum()],[12, 27+charts.utility.randNum()],[13, 30+charts.utility.randNum()],[14, 33+charts.utility.randNum()],[15, 24+charts.utility.randNum()],[16, 27+charts.utility.randNum()],[17, 30+charts.utility.randNum()],[18, 33+charts.utility.randNum()],[19, 36+charts.utility.randNum()],[20, 39+charts.utility.randNum()],[21, 42+charts.utility.randNum()],[22, 45+charts.utility.randNum()],[23, 36+charts.utility.randNum()],[24, 39+charts.utility.randNum()],[25, 42+charts.utility.randNum()],[26, 45+charts.utility.randNum()],[27,38+charts.utility.randNum()],[28, 51+charts.utility.randNum()],[29, 55+charts.utility.randNum()], [30, 60+charts.utility.randNum()]];\n\t\t\tthis.data.d2 = [[1, charts.utility.randNum()-5], [2, charts.utility.randNum()-4], [3, charts.utility.randNum()-4], [4, charts.utility.randNum()],[5, 4+charts.utility.randNum()],[6, 4+charts.utility.randNum()],[7, 5+charts.utility.randNum()],[8, 5+charts.utility.randNum()],[9, 6+charts.utility.randNum()],[10, 6+charts.utility.randNum()],[11, 6+charts.utility.randNum()],[12, 2+charts.utility.randNum()],[13, 3+charts.utility.randNum()],[14, 4+charts.utility.randNum()],[15, 4+charts.utility.randNum()],[16, 4+charts.utility.randNum()],[17, 5+charts.utility.randNum()],[18, 5+charts.utility.randNum()],[19, 2+charts.utility.randNum()],[20, 2+charts.utility.randNum()],[21, 3+charts.utility.randNum()],[22, 3+charts.utility.randNum()],[23, 3+charts.utility.randNum()],[24, 2+charts.utility.randNum()],[25, 4+charts.utility.randNum()],[26, 4+charts.utility.randNum()],[27,5+charts.utility.randNum()],[28, 2+charts.utility.randNum()],[29, 2+charts.utility.randNum()], [30, 3+charts.utility.randNum()]];\n\t\t\t\n\t\t\t// make chart\n\t\t\tthis.plot = $.plot(\n\t\t\t\t'#chart_lines_fill_nopoints', \n\t\t\t\t[{\n         \t\t\tlabel: \"Visits\", \n         \t\t\tdata: this.data.d1,\n         \t\t\tlines: {fillColor: \"rgba(0,0,0,0.01)\"},\n         \t\t\tpoints: {fillColor: \"#88bbc8\"}\n         \t\t}, \n         \t\t{\t\n         \t\t\tlabel: \"Unique Visits\", \n         \t\t\tdata: this.data.d2,\n         \t\t\tlines: {fillColor: \"rgba(0,0,0,0.1)\"},\n         \t\t\tpoints: {fillColor: \"#ed7a53\"}\n         \t\t}], \n         \t\tthis.options);\n\t\t}\n\t},\n\n\t// ordered bars chart\n\tchart_ordered_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions:\n\t\t{\n\t\t\tbars: {\n\t\t\t\tshow:true,\n\t\t\t\tbarWidth: 0.2,\n\t\t\t\tfill:1\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false}\n\t        },\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\t//some data\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d1.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d2.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d3.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var ds = new Array();\n\t\t \n\t\t    ds.push({\n\t\t     \tlabel: \"Data One\",\n\t\t        data:d1,\n\t\t        bars: {order: 1}\n\t\t    });\n\t\t    ds.push({\n\t\t    \tlabel: \"Data Two\",\n\t\t        data:d2,\n\t\t        bars: {order: 2}\n\t\t    });\n\t\t    ds.push({\n\t\t    \tlabel: \"Data Three\",\n\t\t        data:d3,\n\t\t        bars: {order: 3}\n\t\t    });\n\t\t\tthis.data = ds;\n\n\t\t\tthis.plot = $.plot($(\"#chart_ordered_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// donut chart\n\tchart_donut:\n\t{\n\t\t// chart data\n\t\tdata: [\n\t\t    { label: \"USA\",  data: 38 },\n\t\t    { label: \"Brazil\",  data: 23 },\n\t\t    { label: \"India\",  data: 15 },\n\t\t    { label: \"Turkey\",  data: 9 },\n\t\t    { label: \"France\",  data: 7 },\n\t\t    { label: \"China\",  data: 5 },\n\t\t    { label: \"Germany\",  data: 3 }\n\t\t],\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: {\n\t\t\t\tpie: { \n\t\t\t\t\tshow: true,\n\t\t\t\t\tinnerRadius: 0.4,\n\t\t\t\t\thighlight: {\n\t\t\t\t\t\topacity: 0.1\n\t\t\t\t\t},\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 8\n\t\t\t\t\t},\n\t\t\t\t\tstartAngle: 2,\n\t\t\t\t    combine: {\n\t                    color: '#EEE',\n\t                    threshold: 0.05\n\t                },\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div class=\"label label-inverse\">'+label+'&nbsp;'+Math.round(series.percent)+'%</div>';\n\t                    }\n\t                }\n\t\t\t\t},\n\t\t\t\tgrow: {\tactive: false}\n\t\t\t},\n\t\t\tlegend:{show:false},\n\t\t\tgrid: {\n\t            hoverable: true,\n\t            clickable: true,\n\t            backgroundColor : { }\n\t        },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.1\"+\"%\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_donut\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// horizontal bars chart\n\tchart_horizontal_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t\t        bars: {\n\t\t        \tshow:true,\n\t\t\t\t\thorizontal: true,\n\t\t\t\t\tbarWidth:0.2,\n\t\t\t\t\tfill:1\n\t\t\t\t}\n\t        },\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d1.push([parseInt(Math.random() * 30),i ]);\n\n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d2.push([parseInt(Math.random() * 30),i ]);\n\n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 5; i += 1)\n\t\t        d3.push([ parseInt(Math.random() * 30),i]);\n\n\t\t    this.data = new Array();\n\t\t    this.data.push({\n\t\t        data: d1,\n\t\t        bars: {\n\t\t            horizontal:true, \n\t\t            show: true, \n\t\t            barWidth: 0.2, \n\t\t            order: 1\n\t\t        }\n\t\t    });\n\t\t\tthis.data.push({\n\t\t\t    data: d2,\n\t\t\t    bars: {\n\t\t\t        horizontal:true, \n\t\t\t        show: true, \n\t\t\t        barWidth: 0.2, \n\t\t\t        order: 2\n\t\t\t    }\n\t\t\t});\n\t\t\tthis.data.push({\n\t\t\t    data: d3,\n\t\t\t    bars: {\n\t\t\t        horizontal:true, \n\t\t\t        show: true, \n\t\t\t        barWidth: 0.2, \n\t\t\t        order: 3\n\t\t\t    }\n\t\t\t});\n\n\t\t\tthis.plot = $.plot($(\"#chart_horizontal_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// pie chart\n\tchart_pie:\n\t{\n\t\t// chart data\n\t\tdata: [\n\t\t    { label: \"USA\",  data: 38 },\n\t\t    { label: \"Brazil\",  data: 23 },\n\t\t    { label: \"India\",  data: 15 },\n\t\t    { label: \"Turkey\",  data: 9 },\n\t\t    { label: \"France\",  data: 7 },\n\t\t    { label: \"China\",  data: 5 },\n\t\t    { label: \"Germany\",  data: 3 }\n\t\t],\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: {\n\t\t\t\tpie: { \n\t\t\t\t\tshow: true,\n\t\t\t\t\thighlight: {\n\t\t\t\t\t\topacity: 0.1\n\t\t\t\t\t},\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tstroke: {\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t},\n\t\t\t\t\tstartAngle: 2,\n\t\t\t\t    combine: {\n\t                    color: '#353535',\n\t                    threshold: 0.05\n\t                },\n\t                label: {\n\t                    show: true,\n\t                    radius: 1,\n\t                    formatter: function(label, series){\n\t                        return '<div class=\"label label-inverse\">'+label+'&nbsp;'+Math.round(series.percent)+'%</div>';\n\t                    }\n\t                }\n\t\t\t\t},\n\t\t\t\tgrow: {\tactive: false}\n\t\t\t},\n\t\t\tcolors: [],\n\t\t\tlegend:{show:false},\n\t\t\tgrid: {\n\t            hoverable: true,\n\t            clickable: true,\n\t            backgroundColor : { }\n\t        },\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.1\"+\"%\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_pie\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// stacked bars chart\n\tchart_stacked_bars:\n\t{\n\t\t// chart data\n\t\tdata: null,\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tgrid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\" ,\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: true,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t},\n\t        series: {\n\t        \tgrow: {active:false},\n\t        \tstack: 0,\n                lines: { show: false, fill: true, steps: false },\n                bars: { show: true, barWidth: 0.5, fill:1}\n\t\t    },\n\t        xaxis: {ticks:11, tickDecimals: 0},\n\t        legend: { position: \"ne\", backgroundColor: null, backgroundOpacity: 0 },\n\t        colors: [],\n\t        shadowSize:1,\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"%s : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tvar d1 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d1.push([i, parseInt(Math.random() * 30)]);\n\t\t \n\t\t    var d2 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d2.push([i, parseInt(Math.random() * 20)]);\n\t\t \n\t\t    var d3 = [];\n\t\t    for (var i = 0; i <= 10; i += 1)\n\t\t        d3.push([i, parseInt(Math.random() * 20)]);\n\t\t \n\t\t    this.data = new Array();\n\t\t \n\t\t    this.data.push({\n\t\t     \tlabel: \"Data One\",\n\t\t        data: d1\n\t\t    });\n\t\t    this.data.push({\n\t\t    \tlabel: \"Data Two\",\n\t\t        data: d2\n\t\t    });\n\t\t    this.data.push({\n\t\t    \tlabel: \"Data Tree\",\n\t\t        data: d3\n\t\t    });\n\n\t\t    this.plot = $.plot($(\"#chart_stacked_bars\"), this.data, this.options);\n\t\t}\n\t},\n\n\t// live chart\n\tchart_live:\n\t{\n\t\t// chart data\n\t\tdata: [],\n\t\ttotalPoints: 300,\n\t    updateInterval: 200,\n\n\t\t// we use an inline data source in the example, usually data would\n\t    // be fetched from a server\n\t\tgetRandomData: function()\n\t\t{\n\t\t\tif (this.data.length > 0)\n\t            this.data = this.data.slice(1);\n\n\t        // do a random walk\n\t        while (this.data.length < this.totalPoints) \n\t\t    {\n\t            var prev = this.data.length > 0 ? this.data[this.data.length - 1] : 50;\n\t            var y = prev + Math.random() * 10 - 5;\n\t            if (y < 0)\n\t                y = 0;\n\t            if (y > 100)\n\t                y = 100;\n\t            this.data.push(y);\n\t        }\n\n\t        // zip the generated y values with the x values\n\t        var res = [];\n\t        for (var i = 0; i < this.data.length; ++i)\n\t            res.push([i, this.data[i]])\n\t        return res;\n\t\t},\n\n\t\t// will hold the chart object\n\t\tplot: null,\n\n\t\t// chart options\n\t\toptions: \n\t\t{\n\t\t\tseries: { \n\t        \tgrow: { active: false },\n\t        \tshadowSize: 0,\n\t        \tlines: {\n            \t\tshow: true,\n            \t\tfill: true,\n            \t\tlineWidth: 2,\n            \t\tsteps: false\n\t            }\n\t        },\n\t        grid: {\n\t\t\t\tshow: true,\n\t\t\t    aboveData: false,\n\t\t\t    color: \"#3f3f3f\",\n\t\t\t    labelMargin: 5,\n\t\t\t    axisMargin: 0, \n\t\t\t    borderWidth: 0,\n\t\t\t    borderColor:null,\n\t\t\t    minBorderMargin: 5 ,\n\t\t\t    clickable: true, \n\t\t\t    hoverable: true,\n\t\t\t    autoHighlight: false,\n\t\t\t    mouseActiveRadius: 20,\n\t\t\t    backgroundColor : { }\n\t\t\t}, \n\t\t\tcolors: [],\n\t        tooltip: true,\n\t\t\ttooltipOpts: {\n\t\t\t\tcontent: \"Value is : %y.0\",\n\t\t\t\tshifts: {\n\t\t\t\t\tx: -30,\n\t\t\t\t\ty: -50\n\t\t\t\t},\n\t\t\t\tdefaultTheme: false\n\t\t\t},\t\n\t        yaxis: { min: 0, max: 100 },\n\t        xaxis: { show: true}\n\t\t},\n\t\t\n\t\t// initialize\n\t\tinit: function()\n\t\t{\n\t\t\t// apply styling\n\t\t\tcharts.utility.applyStyle(this);\n\t\t\t\n\t\t\tthis.plot = $.plot($(\"#chart_live\"), [ this.getRandomData() ], this.options);\n\t\t\tsetTimeout(this.update, charts.chart_live.updateInterval);\n\t\t},\n\n\t\t// update\n\t\tupdate: function()\n\t\t{\n\t\t\tcharts.chart_live.plot.setData([ charts.chart_live.getRandomData() ]);\n\t        charts.chart_live.plot.draw();\n\t        \n\t        setTimeout(charts.chart_live.update, charts.chart_live.updateInterval);\n\t\t}\n\t}\n};"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/charts.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * charts.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n * \n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initCharts();\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/choose.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * choose.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar url_default = [];\n\t\turl_default['admin'] = $('#choose-preview .options[data-for=\"admin\"] .actions a').attr('href');\n\t\turl_default['front'] = $('#choose-preview .options[data-for=\"front\"] .actions a').attr('href');\n\t\n\t$('#choose-preview')\n\t\t.find('.options select')\n\t\t.on('change', function()\n\t\t{\n\t\t\tvar box = $(this).parents('.box:first');\n\t\t\tvar $for = $(this).attr('data-for');\n\t\t\tvar select_layout = box.find('select[data-type=\"layout\"]');\n\t\t\tvar select_sidebar = box.find('select[data-type=\"sidebar\"]');\n\t\t\tvar select_sidebar_position = box.find('select[data-type=\"menu\"]');\n\t\t\tvar select_sidebar_sticky = box.find('select[data-type=\"sidebar-sticky\"]');\n\t\t\tvar select_top_sticky = box.find('select[data-type=\"top-sticky\"]');\n\t\t\tvar select_rtl = box.find('select[data-type=\"rtl\"]');\n\t\t\tvar select_style = box.find('select[data-type=\"style\"]');\n\t\t\t\n\t\t\tvar url = url_default[$for];\n\t\t\t\n\t\t\tif (select_layout.length)\n\t\t\t\turl += '&layout_type=' + select_layout.val();\n\t\t\tif (select_sidebar.length)\n\t\t\t\turl += '&sidebar=' + select_sidebar.val();\n\t\t\tif (select_sidebar_position.length)\n\t\t\t\turl += '&menu_position=' + select_sidebar_position.val();\n\t\t\tif (select_sidebar_sticky.length) \n\t\t\t\turl += '&sidebar-sticky=' + select_sidebar_sticky.val();\n\t\t\tif (select_top_sticky.length) \n\t\t\t\turl += '&top-sticky=' + select_top_sticky.val();\n\t\t\tif (select_rtl.length) \n\t\t\t\turl += '&rtl=' + select_rtl.val();\n\t\t\tif (select_style.length) \n\t\t\t\turl += '&style=' + select_style.val();\n\t\t\t\n\t\t\t$('#choose-preview .options[data-for=\"'+$for+'\"] .actions a').attr('href', url);\n\t\t\t\n\t\t\t/*\n\t\t\tvar selector = '#' + $for + '-' + select_style.val();\n\t\t\tif (select_layout.length) \n\t\t\t\tselector += '-' + select_layout.val();\n\t\t\tif (select_menu.length) \n\t\t\t\tselector += '-' + select_menu.val();\n\t\t\tif (select_rtl.length) \n\t\t\t\tselector += '-rtl-' + select_rtl.val();\n\t\t\t\n\t\t\tbox.find('.actions a').removeClass('btn-active');\n\t\t\t$(selector).addClass('btn-active');\n\t\t\t\n\t\t\tconsole.log(selector);\n\t\t\t*/\n\t\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/common.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * common.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/* Utility functions */\n\n// generate a random number\nfunction randNum()\n{\n\treturn (Math.floor( Math.random()* (1+40-20) ) ) + 20;\n}\n\nfunction PDFTarget(target)\n{\n\tvar doc = $('html').clone();\n\tvar target = $(target).clone();\n\tvar form = $('#PDFTargetForm');\n\tif (!form.length) {\n\t\t$('body').append('<form id=\"PDFTargetForm\"></form>');\n\t\tform = $('#PDFTargetForm');\n\t}\n\t\n\tform.attr('action', basePath + 'ajax.php?section=pdf');\n\tform.attr('method', 'POST');\n\tform.append('<input type=\"hidden\" name=\"target\" value=\"\" />');\n\t\n\ttarget.find('.hidden-print').remove();\n\tdoc.find('body').html(target);\n\tvar html = doc.html();\n\t\n\tform.find('input').val(html);\n\tform.submit();\n}\n\nfunction beautify(source)\n{\n\tvar output,\n\t\topts = {};\n\n    /*\n    opts.indent_size = $('#tabsize').val();\n    opts.indent_char = opts.indent_size == 1 ? '\\t' : ' ';\n    opts.max_preserve_newlines = $('#max-preserve-newlines').val();\n    opts.preserve_newlines = opts.max_preserve_newlines !== -1;\n    opts.keep_array_indentation = $('#keep-array-indentation').prop('checked');\n    opts.break_chained_methods = $('#break-chained-methods').prop('checked');\n    opts.indent_scripts = $('#indent-scripts').val();\n    opts.brace_style = $('#brace-style').val();\n    opts.space_before_conditional = $('#space-before-conditional').prop('checked');\n    opts.unescape_strings = $('#unescape-strings').prop('checked');\n    opts.wrap_line_length = $('#wrap-line-length').val();\n    opts.space_after_anon_function = true;\n    */\n\t\n\topts.preserve_newlines = false;\n\n\toutput = html_beautify(source, opts);\n    return output;\n}\n\n// generate a random number within a range (PHP's mt_rand JavaScript implementation)\nfunction mt_rand (min, max) \n{\n\t// http://kevin.vanzonneveld.net\n\t// +   original by: Onno Marsman\n\t// +   improved by: Brett Zamir (http://brett-zamir.me)\n\t// +   input by: Kongo\n\t// *     example 1: mt_rand(1, 1);\n\t// *     returns 1: 1\n\tvar argc = arguments.length;\n\tif (argc === 0) {\n\t\tmin = 0;\n\t\tmax = 2147483647;\n\t}\n\telse if (argc === 1) {\n\t\tthrow new Error('Warning: mt_rand() expects exactly 2 parameters, 1 given');\n\t}\n\telse {\n\t\tmin = parseInt(min, 10);\n\t\tmax = parseInt(max, 10);\n\t}\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n// scroll to element animation\nfunction scrollTo(id)\n{\n\tif ($(id).length)\n\t\t$('html,body').animate({scrollTop: $(id).offset().top},'slow');\n}\n\n// handle menu toggle button action\nfunction toggleMenuHidden()\n{\n\t//console.log('toggleMenuHidden');\n\t$('.container-fluid:first').toggleClass('menu-hidden');\n\t$('#menu').toggleClass('hidden-phone', function()\n\t{\n\t\tif ($('.container-fluid:first').is('.menu-hidden'))\n\t\t{\n\t\t\tif (typeof resetResizableMenu != 'undefined') \n\t\t\t\tresetResizableMenu(true);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tremoveMenuHiddenPhone();\n\t\t\t\n\t\t\tif (typeof lastResizableMenuPosition != 'undefined') \n\t\t\t\tlastResizableMenuPosition();\n\t\t}\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t\t$.cookie('menuHidden', $('.container-fluid:first').is('.menu-hidden'));\n\t});\n\t\n\tif (typeof masonryGallery != 'undefined') \n\t\tmasonryGallery();\t\n}\n\nfunction removeMenuHiddenPhone()\n{\n\tif (!$('.container-fluid:first').is('.menu-hidden') && $('#menu').is('.hidden-phone'))\n\t\t$('#menu').removeClass('hidden-phone');\n}\n\n// handle generate sparkline charts\nfunction genSparklines()\n{\n\tif ($('.sparkline').length)\n\t{\n\t\t$.each($('#content .sparkline'), function(k,v)\n\t\t{\n\t\t\tvar size = { w: 150, h: 28 };\n\t\t\tif ($(this).parent().is('.widget-stats'))\n\t\t\t\tsize = { w: 150, h: 35 }\n\t\t\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\tvar data = [[1, 3+randNum()], [2, 5+randNum()], [3, 8+randNum()], [4, 11+randNum()],[5, 14+randNum()],[6, 17+randNum()],[7, 20+randNum()], [8, 15+randNum()], [9, 18+randNum()], [10, 22+randNum()]];\n\t\t \t$(v).sparkline(data, \n\t\t\t{ \n\t\t\t\ttype: 'bar',\n\t\t\t\twidth: size.w,\n\t\t\t\theight: size.h,\n\t\t\t\tstackedBarColor: [\"#dadada\", color],\n\t\t\t\tlineWidth: 2\n\t\t\t});\n\t\t});\n\t\t$.each($('#menu .sparkline'), function(k,v)\n\t\t{\n\t\t\tvar size = { w: 150, h: 20 };\n\t\t\tif ($(this).parent().is('.widget-stats-3'))\n\t\t\t\tsize = { w: 150, h: 35 }\n\t\t\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\tvar data = [[1, 3+randNum()], [2, 5+randNum()], [3, 8+randNum()], [4, 11+randNum()],[5, 14+randNum()],[6, 17+randNum()],[7, 20+randNum()], [8, 15+randNum()], [9, 18+randNum()], [10, 22+randNum()]];\n\t\t \t$(v).sparkline(data, \n\t\t\t{ \n\t\t\t\ttype: 'bar',\n\t\t\t\twidth: size.w,\n\t\t\t\theight: size.h,\n\t\t\t\tstackedBarColor: [\"#dadada\", color],\n\t\t\t\tlineWidth: 2\n\t\t\t});\n\t\t});\n\t}\n}\n\n//handle generate easy-pie-charts\nfunction genEasyPie()\n{\n\tif ($('.easy-pie').length && $.fn.easyPieChart)\n\t{\n\t\t$.each($('.easy-pie'), function(k,v)\n\t\t{\t\n\t\t\tvar color = primaryColor;\n\t\t\tif ($(this).is('.danger')) color = dangerColor;\n\t\t\tif ($(this).is('.success')) color = successColor;\n\t\t\tif ($(this).is('.warning')) color = warningColor;\n\t\t\tif ($(this).is('.inverse')) color = inverseColor;\n\t\t\t\n\t\t\t$(v).easyPieChart({\n\t\t\t\tbarColor: color,\n\t\t\t\tanimate: ($('html').is('.ie') ? false : 3000),\n                lineWidth: 4,\n                size: 50\n\t\t\t});\n\t\t});\n\t}\n}\n\n/*\n * Helper function for JQueryUI Sliders Create event\n */\nfunction JQSliderCreate()\n{\n\t$(this)\n\t\t.removeClass('ui-corner-all ui-widget-content')\n\t\t.wrap('<span class=\"ui-slider-wrap\"></span>')\n\t\t.find('.ui-slider-handle')\n\t\t.removeClass('ui-corner-all ui-state-default');\n}\n\n$(function()\n{\n\t// Sidebar menu collapsibles\n\t$('#menu .collapse').on('show', function(e)\n\t{\n\t\te.stopPropagation();\n\t\t$(this).parents('.hasSubmenu:first').addClass('active');\n\t})\n\t.on('hidden', function(e)\n\t{\n\t\te.stopPropagation();\n\t\t$(this).parents('.hasSubmenu:first').removeClass('active');\n\t});\n\t\n\t// main menu visibility toggle\n\t$('.navbar.main .btn-navbar').click(function()\n\t{\n\t\tvar disabled = typeof toggleMenuButtonWhileTourOpen != 'undefined' ? toggleMenuButtonWhileTourOpen(true) : false;\n\t\tif (!disabled)\n\t\t\ttoggleMenuHidden();\n\t});\n\t\n\t// topnav toggle\n\t$('.navbar.main .toggle-navbar').click(function()\n\t{\n\t\tvar that = $(this);\n\t\t\n\t\tif ($('.navbar.main .wrapper').is(':hidden'))\n\t\t{\n\t\t\t$(this).slideUp(20, function(){\n\t\t\t\t$('.navbar.main .wrapper').show();\n\t\t\t\t$('.navbar.main').animate({ height: 34 }, 200, function(){\n\t\t\t\t\t$('.navbar.main').toggleClass('navbar-hidden');\n\t\t\t\t\tthat.slideDown();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$(this).slideUp(20, function(){\n\t\t\t\t$('.navbar.main').animate({ height: 0 }, 200, function(){\n\t\t\t\t\t$('.navbar.main .wrapper').hide();\n\t\t\t\t\t$('.navbar.main').toggleClass('navbar-hidden');\n\t\t\t\t\tthat.slideDown();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\t\n\t// multi-level top menu\n\t$('.submenu').hover(function()\n\t{\n        $(this).children('ul').removeClass('submenu-hide').addClass('submenu-show');\n    }, function()\n    {\n    \t$(this).children('ul').removeClass('.submenu-show').addClass('submenu-hide');\n    })\n    .find(\"a:first\").append(\" &raquo; \");\n\t\n\t// tooltips\n\t$('[data-toggle=\"tooltip\"]').tooltip();\n\t\n\t// popovers\n\t$('[data-toggle=\"popover\"]').popover();\n\t\n\t// save to PDF\n\t$('[data-toggle*=\"pdf\"]').on('click', function(e){\n\t\te.preventDefault();\n\t\tPDFTarget($(this).attr('data-target'));\n\t});\n\t\n\t// prettyphoto\n\tif ($('[data-toggle=\"prettyPhoto\"]').length) \n\t\t$('[data-toggle=\"prettyPhoto\"]').prettyPhoto();\n\t\n\t// loading state for buttons\n\t$('[data-toggle*=\"btn-loading\"]').click(function () {\n        var btn = $(this);\n        btn.button('loading');\n        setTimeout(function () {\n        \tbtn.button('reset')\n        }, 3000);\n    });\n\t$('[data-toggle*=\"button-loading\"]').click(function () {\n        var btn = $(this);\n        btn.button('loading');\n    });\n\t\n\t// typeahead\n\tif ($('[data-toggle=\"typeahead\"]').length)\n\t\t$('[data-toggle=\"typeahead\"]').typeahead({\n\t\t\tsource: [\"Alabama\",\"Alaska\",\"Arizona\",\"Arkansas\",\"California\",\"Colorado\",\"Connecticut\",\"Delaware\",\"Florida\",\"Georgia\",\"Hawaii\",\"Idaho\",\"Illinois\",\"Indiana\",\"Iowa\",\"Kansas\",\"Kentucky\",\"Louisiana\",\"Maine\",\"Maryland\",\"Massachusetts\",\"Michigan\",\"Minnesota\",\"Mississippi\",\"Missouri\",\"Montana\",\"Nebraska\",\"Nevada\",\"New Hampshire\",\"New Jersey\",\"New Mexico\",\"New York\",\"North Dakota\",\"North Carolina\",\"Ohio\",\"Oklahoma\",\"Oregon\",\"Pennsylvania\",\"Rhode Island\",\"South Carolina\",\"South Dakota\",\"Tennessee\",\"Texas\",\"Utah\",\"Vermont\",\"Virginia\",\"Washington\",\"West Virginia\",\"Wisconsin\",\"Wyoming\"],\n\t\t\titems: 4\n\t\t});\n\t\n\t// print\n\t$('[data-toggle=\"print\"]').click(function(e)\n\t{\n\t\te.preventDefault();\n\t\twindow.print();\n\t});\n\t\n\t// gridalicious\n\t$('[data-toggle*=\"gridalicious\"]').each(function(){\n\t\tvar $that = $(this);\n\t\t$(this).gridalicious({\n\t\t\tgutter: 13, \n\t\t\twidth: $that.attr('data-gridalicious-width') ? parseInt($that.attr('data-gridalicious-width')) : 200,\n\t\t\tanimate: true,\n\t\t\tselector: '.widget'\n\t\t}).removeClass('hide');\n\t});\n\t\n\t// collapsible widgets\n\t$('.widget[data-toggle=\"collapse-widget\"] .widget-body')\n\t\t.on('show', function(){\n\t\t\t$(this).parents('.widget:first').attr('data-collapse-closed', \"false\");\n\t\t})\n\t\t.on('shown', function(){\n\t\t\tsetTimeout(function(){ $(window).resize(); }, 500);\n\t\t})\n\t\t.on('hidden', function(){\n\t\t\t$(this).parents('.widget:first').attr('data-collapse-closed', \"true\");\n\t\t});\n\t\n\t$('.widget[data-toggle=\"collapse-widget\"]').each(function()\n\t{\n\t\t// append toggle button\n\t\t$(this).find('.widget-head').append('<span class=\"collapse-toggle\"></span>');\n\t\t\n\t\t// make the widget body collapsible\n\t\t$(this).find('.widget-body').addClass('collapse');\n\t\t\n\t\t// verify if the widget should be opened\n\t\tif ($(this).attr('data-collapse-closed') !== \"true\")\n\t\t\t$(this).find('.widget-body').addClass('in');\n\t\t\n\t\t// bind the toggle button\n\t\t$(this).find('.collapse-toggle').on('click', function(){\n\t\t\t$(this).parents('.widget:first').find('.widget-body').collapse('toggle');\n\t\t});\n\t});\n\t\n\t// generate sparkline charts\n\tgenSparklines();\n\t\n\t// generate easy-pie-charts\n\tgenEasyPie();\n\t\n\t// Google Code Prettify\n\tif ($('.prettyprint').length)\n\t\tprettyPrint();\n\t\n\t// bind window resize event\n\t$(window).resize(function()\n\t{\n\t\t\n\t});\n\t\n\t// trigger window resize event\n\t$(window).resize();\n\t\n\t// view source toggle buttons\n\t$('.btn-source-toggle').click(function(e){\n\t\te.preventDefault();\n\t\t$('.code:not(.show)').toggleClass('hide');\n\t});\n\t\n\t// source-code widgets\n\t$('[data-toggle=\"source-code\"]').each(function(){\n\t\tvar button = $('<span data-toggle=\"source-code-toggle\" class=\"hidden-phone btn btn-toggle-code btn-mini btn-primary btn-icon glyphicons embed_close\"><i></i> Source</span>');\n\t\tif ($(this).attr('data-placement') == 'outside') button.addClass('outside');\n\t\t$(this).append(button);\n\t\t$(this).css('overflow', 'visible');\n\t}).on('click', '[data-toggle=\"source-code-toggle\"]', function(){\n\t\tvar html = $(this).parent().clone();\n\t\t\thtml.find('[data-toggle=\"source-code-toggle\"]').remove();\n\t\t\thtml = beautify(html.html());\n\t\t\thtml = $('<pre class=\"prettyprint\"></pre>').text(html);\n\t\t\n\t\tbootbox.alert(html);\n\t\t\n\t\tif ($('.prettyprint').length)\n\t\t\tprettyPrint();\n\t});\n\t\n\t// reset themer\n\t$('[data-toggle=\"reset-themer\"]').click(function(e){\n\t\te.preventDefault();\n\t\tif (typeof updateTheme != 'undefined') {\n\t\t\tupdateTheme(0);\n\t\t}\n\t\tlocation = $(this).attr('href');\n\t});\n\t\n\t// show/hide toggle buttons\n\t$('[data-toggle=\"hide\"]').click(function()\n\t{\n\t\tif ($(this).is('.bootboxTarget'))\n\t\t\tbootbox.alert($($(this).attr('data-target')).html());\n\t\telse {\n\t\t\t$($(this).attr('data-target')).toggleClass('hide');\n\t\t\tif ($(this).is('.scrollTarget') && !$($(this).attr('data-target')).is('.hide'))\n\t\t\t\tscrollTo($(this).attr('data-target'));\n\t\t}\n\t});\n\t\n\t// handle menu position change\n\t$('#toggle-menu-position').on('change', function()\n\t{\n\t\t$('.container-fluid:first').toggleClass('menu-right');\n\t\t\n\t\tif ($(this).prop('checked')) \n\t\t\t$('.container-fluid:first').removeClass('menu-left');\n\t\telse\n\t\t\t$('.container-fluid:first').addClass('menu-left');\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t\t$.cookie('rightMenu', $(this).prop('checked') ? $(this).prop('checked') : null);\n\t\t\n\t\tif (typeof resetResizableMenu != 'undefined' && typeof lastResizableMenuPosition != 'undefined')\n\t\t{\n\t\t\tresetResizableMenu(true);\n\t\t\tlastResizableMenuPosition();\n\t\t}\n\t\tremoveMenuHiddenPhone();\n\t});\n\t\n\t// handle persistent menu position on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('rightMenu') && $('#toggle-menu-position').length)\n\t{\n\t\t$('#toggle-menu-position').prop('checked', true);\n\t\t$('.container-fluid:first').not('.menu-right').removeClass('menu-left').addClass('menu-right');\n\t}\n\t\n\t// handle layout type change\n\t$('#toggle-layout').on('change', function()\n\t{\n\t\tif ($(this).prop('checked'))\n\t\t{\n\t\t\t$('.container-fluid:first').addClass('fixed');\n\t\t}\n\t\telse\n\t\t\t$('.container-fluid:first').removeClass('fixed');\n\t\t\n\t\tif (typeof $.cookie != 'undefined')\n\t\t{\n\t\t\t$.cookie('layoutFixed', $(this).prop('checked') ? $(this).prop('checked') : null);\n\t\t\t$.cookie('layoutFluid', $(this).prop('checked') ? null : $(this).prop('checked'));\n\t\t}\n\t});\n\t\n\t// handle persistent layout type on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('layoutFixed') && $('#toggle-layout').length)\n\t{\n\t\t$('#toggle-layout').prop('checked', true);\n\t\t$('.container-fluid:first').addClass('fixed');\n\t}\n\telse if (!$('.container-fluid:first').is('.fixed') || (typeof $.cookie != 'undefined' && $.cookie('layoutFluid')))\n\t{\n\t\t$('#toggle-layout').prop('checked', false);\n\t\t$('.container-fluid:first').removeClass('fixed');\n\t}\n\t\n\t// handle persistent menu visibility on page load\n\tif (typeof $.cookie != 'undefined' && $.cookie('menuHidden') && $.cookie('menuHidden') == 'true' || (!$('.container-fluid').is('.menu-hidden') && !$('#menu').is(':visible')))\n\t\ttoggleMenuHidden();\n\telse if ($('#menu').is(':visible'))\n\t{\n\t\tremoveMenuHiddenPhone();\n\t\t\n\t\tif (typeof lastResizableMenuPosition != 'undefined') \n\t\t\tlastResizableMenuPosition();\n\t}\n\t\n\t// menu slim scroll max height\n\tsetTimeout(function()\n\t{\n\t\tvar menu_max_height = parseInt($('#menu .slim-scroll').attr('data-scroll-height'));\n\t\tvar menu_real_max_height = parseInt($('#wrapper').height());\n\t\t$('#menu .slim-scroll').slimScroll({\n\t\t\theight: (menu_max_height < menu_real_max_height ? (menu_real_max_height - 40) : menu_max_height) + \"px\",\n\t\t\tallowPageScroll : true,\n\t\t\trailDraggable: ($.fn.draggable ? true : false)\n\t    });\n\t\t\n\t\tif (Modernizr.touch)\n\t\t\treturn; \n\t\t\n\t\t// fixes weird bug when page loads and mouse over the sidebar (can't scroll)\n\t\t$('#menu .slim-scroll').trigger('mouseenter').trigger('mouseleave');\n\t}, 200);\n\t\n\t/* Slim Scroll Widgets */\n\t$('.widget-scroll').each(function(){\n\t\t$(this).find('.widget-body > div').slimScroll({\n\t\t\theight: $(this).attr('data-scroll-height')\n\t    });\n\t});\n\t\n\t/* Other non-widget Slim Scroll areas */\n\t$('#content .slim-scroll').each(function(){\n\t\tvar scrollSize = $(this).attr('data-scroll-size') ? $(this).attr('data-scroll-size') : \"7px\";\n\t\t$(this).slimScroll({\n\t\t\theight: $(this).attr('data-scroll-height'),\n\t\t\tallowPageScroll : false,\n\t\t\trailVisible: false,\n\t\t\tsize: '0',\n\t\t\trailDraggable: ($.fn.draggable ? true : false)\n\t    });\n\t});\n\n\t/* wysihtml5 */\n\tif ($('textarea.wysihtml5').size() > 0)\n\t\t$('textarea.wysihtml5').wysihtml5();\n\t\n\t/*\n\t * Boostrap Extended\n\t */\n\t// custom select for Boostrap using dropdowns\n\tif ($('.selectpicker').length) $('.selectpicker').selectpicker();\n\t\n\t// bootstrap-toggle-buttons\n\tif ($('.toggle-button').length) $('.toggle-button').toggleButtons();\n\t\n\t/*\n\t * UniformJS: Sexy form elements\n\t */\n\tif ($('.uniformjs').length) $('.uniformjs').find(\"select, input, button, textarea\").uniform();\n\t\n\t// colorpicker\n\tif ($('#colorpicker').length) $('#colorpicker').farbtastic('#colorpickerColor');\n\t\n\t// datepicker\n\tif ($('#datepicker').length) $(\"#datepicker\").datepicker({ showOtherMonths:true });\n\tif ($('#datepicker-inline').length) $('#datepicker-inline').datepicker({ inline: true, showOtherMonths:true });\n\t\n\t// daterange\n\tif ($('#dateRangeFrom').length && $('#dateRangeTo').length)\n\t{\n\t\t$( \"#dateRangeFrom\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: false,\n\t\t\tnumberOfMonths: 2,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#dateRangeTo\" ).datepicker( \"option\", \"minDate\", selectedDate );\n\t\t\t}\n\t\t}).datepicker( \"option\", \"maxDate\", $('#dateRangeTo').val() );\n\n\t\t$( \"#dateRangeTo\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: false,\n\t\t\tnumberOfMonths: 2,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#dateRangeFrom\" ).datepicker( \"option\", \"maxDate\", selectedDate );\n\t\t\t}\n\t\t}).datepicker( \"option\", \"minDate\", $('#dateRangeFrom').val() );\n\t}\n\t\n\t/* Table select / checkboxes utility */\n\t$('.checkboxs thead :checkbox').change(function(){\n\t\tif ($(this).is(':checked'))\n\t\t{\n\t\t\t$('.checkboxs tbody :checkbox').prop('checked', true).parent().addClass('checked');\n\t\t\t$('.checkboxs tbody tr.selectable').addClass('selected');\n\t\t\t$('.checkboxs_actions').show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$('.checkboxs tbody :checkbox').prop('checked', false).parent().removeClass('checked');\n\t\t\t$('.checkboxs tbody tr.selectable').removeClass('selected');\n\t\t\t$('.checkboxs_actions').hide();\n\t\t}\n\t});\n\t\n\t$('.checkboxs tbody').on('click', 'tr.selectable', function(e){\n\t\tvar c = $(this).find(':checkbox');\n\t\tvar s = $(e.srcElement);\n\t\t\n\t\tif (e.srcElement.nodeName == 'INPUT')\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t\t$(this).addClass('selected');\n\t\t\telse\n\t\t\t\t$(this).removeClass('selected');\n\t\t}\n\t\telse if (e.srcElement.nodeName != 'TD' && e.srcElement.nodeName != 'TR' && e.srcElement.nodeName != 'DIV')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t{\n\t\t\t\tc.prop('checked', false).parent().removeClass('checked');\n\t\t\t\t$(this).removeClass('selected');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tc.prop('checked', true).parent().addClass('checked');\n\t\t\t\t$(this).addClass('selected');\n\t\t\t}\n\t\t}\n\t\tif ($('.checkboxs tr.selectable :checked').size() == $('.checkboxs tr.selectable :checkbox').size())\n\t\t\t$('.checkboxs thead :checkbox').prop('checked', true).parent().addClass('checked');\n\t\telse\n\t\t\t$('.checkboxs thead :checkbox').prop('checked', false).parent().removeClass('checked');\n\n\t\tif ($('.checkboxs tr.selectable :checked').size() >= 1)\n\t\t\t$('.checkboxs_actions').show();\n\t\telse\n\t\t\t$('.checkboxs_actions').hide();\n\t});\n\t\n\tif ($('.checkboxs tbody :checked').size() == $('.checkboxs tbody :checkbox').size() && $('.checkboxs tbody :checked').length)\n\t\t$('.checkboxs thead :checkbox').prop('checked', true).parent().addClass('checked');\n\t\n\tif ($('.checkboxs tbody :checked').length)\n\t\t$('.checkboxs_actions').show();\n\t\n\t$('.radioboxs tbody tr.selectable').click(function(e){\n\t\tvar c = $(this).find(':radio');\n\t\tif (e.srcElement.nodeName == 'INPUT')\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t\t$(this).addClass('selected');\n\t\t\telse\n\t\t\t\t$(this).removeClass('selected');\n\t\t}\n\t\telse if (e.srcElement.nodeName != 'TD' && e.srcElement.nodeName != 'TR')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (c.is(':checked'))\n\t\t\t{\n\t\t\t\tc.attr('checked', false);\n\t\t\t\t$(this).removeClass('selected');\t\t\t\t\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tc.attr('checked', true);\n\t\t\t\t$('.radioboxs tbody tr.selectable').removeClass('selected');\n\t\t\t\t$(this).addClass('selected');\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// sortable tables\n\tif ($( \".js-table-sortable\" ).length)\n\t{\t\n\t\t$( \".js-table-sortable\" ).sortable(\n\t\t{\n\t\t\tplaceholder: \"ui-state-highlight\",\n\t\t\titems: \"tbody tr\",\n\t\t\thandle: \".js-sortable-handle\",\n\t\t\tforcePlaceholderSize: true,\n\t\t\thelper: function(e, ui) \n\t\t\t{\n\t\t\t\tui.children().each(function() {\n\t\t\t\t\t$(this).width($(this).width());\n\t\t\t\t});\n\t\t\t\treturn ui;\n\t\t\t},\n\t\t\tstart: function(event, ui) \n\t\t\t{\n\t\t\t\tif (typeof mainYScroller != 'undefined') mainYScroller.disable();\n\t\t\t\tui.placeholder.html('<td colspan=\"' + $(this).find('tbody tr:first td').size() + '\">&nbsp;</td>');\n\t\t\t},\n\t\t    stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t\t});\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/contact.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * contact.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/* Google Maps API */\nif (typeof google != 'undefined')\n{\n\tvar map_latlng = new google.maps.LatLng(47.06285,21.943721);\n\tvar map_options = {\n\t\t\tzoom: 1,\n\t\t\tcenter: map_latlng,\n\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP,\n\t\t\tpanControl: false,\n\t\t\tzoomControl: false,\n\t\t\tscaleControl: false,\n\t\t\tmapTypeControl: false,\n\t\t\tdisableDefaultUI: true,\n\t\t\tscrollwheel: false,\n\t\t\tstyles: [{\n\t\t\t\tstylers: [{ \n\t\t\t\t\tsaturation: -20\n\t\t\t\t}, { \n\t\t\t\t\thue: themerPrimaryColor \n\t\t\t\t}]\n\t\t\t}, {\n\t\t\t\telementType: \"labels.text.fill\",\n\t\t\t\tstylers: [{ color: \"#444444\" }]\n\t\t\t    //stylers: [{ color: primaryColor }]\n\t\t\t}]\n\t};\n\n\tvar markerIconDefault_image = new google.maps.MarkerImage(commonPath + \"theme/images/marker.png\",\n\t\t\t// This marker is 44 pixels wide by 56 pixels tall.\n\t\t\tnew google.maps.Size(44, 56),\n\t\t\t// The origin for this image is 0,0.\n\t\t\tnew google.maps.Point(0, 0),\n\t\t\t// The anchor for this image is the base of the flagpole at 0,32.\n\t\t\tnew google.maps.Point(22, 56));\n\n\tvar markerIconDefault_shadow = new google.maps.MarkerImage(commonPath + \"theme/images/marker_shadow.png\",\n\t\t\t// This marker is 44 pixels wide by 56 pixels tall.\n\t\t\tnew google.maps.Size(37, 21),\n\t\t\t// The origin for this image is 0,0.\n\t\t\tnew google.maps.Point(0,0),\n\t\t\t// The anchor for this image is the base of the flagpole at 0,32.\n\t\t\tnew google.maps.Point(20, 10));\n\n\tvar markerIconDefault_shape = {\n\t\t\tcoord: [1, 1, 1, 52, 42, 52, 42 , 1],\n\t\t\ttype: 'poly'\n\t};\n\n}\n\nfunction initializeMap(el, options)\n{\n\tif (typeof google == 'undefined') \n\t\treturn false;\n\n\tvar map = new google.maps.Map(document.getElementById(el), options);\n\tvar marker = new google.maps.Marker({\n\t\tposition: map_latlng,\n\t\ttitle: 'My Location',\n\t\tshadow: markerIconDefault_shadow,\n\t\ticon: markerIconDefault_image,\n\t\tmap: map\n\t});\n}\n\n$(function()\n{\n\t// Contact Page Google Maps\n    if ($('#contact_gmap').size() > 0 && typeof google != 'undefined')\n    {\n    \tmap_options.zoom = 13;\n    \tinitializeMap('contact_gmap', map_options);\n    }\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/file_managers.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * file_managers.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function() \n{\n\t/* Plupload */\n\t$(\"#pluploadUploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'gears,browserplus,html5',\n\t\turl : 'theme/scripts/plugins/forms/plupload/examples/upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : 'theme/scripts/plugins/forms/plupload/js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : 'theme/scripts/plugins/forms/plupload/js/plupload.silverlight.xap'\n\t});\n\n\t// Client side form validation\n\t$('#pluploadForm').submit(function(e) {\n        var uploader = $('#pluploadUploader').pluploadQueue();\n\n        // Files in queue upload them first\n        if (uploader.files.length > 0) {\n            // When all files are uploaded submit form\n            uploader.bind('StateChanged', function() {\n                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {\n                    $('#pluploadForm').submit();\n                }\n            });\n                \n            uploader.start();\n        } else {\n            alert('You must queue at least one file.');\n        }\n\n        return false;\n    });\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/finances.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * finances.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initFinances();\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/form_elements.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_elements.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// button state demo\n\t$('#btn-loading')\n\t    .click(function () {\n\t        var btn = $(this)\n\t        btn.button('loading')\n\t        setTimeout(function () {\n\t            btn.button('reset')\n\t        }, 3000)\n\t    });\n\t\n\t/* Select2 - Advanced Select Controls */\n\t\n\t// Basic\n\t$('#select2_1').select2();\n\t\n\t// Multiple\n\t$('#select2_2').select2();\n\t\n\t// Placeholders\n\t$(\"#select2_3\").select2({\n\t\tplaceholder: \"Select a State\",\n\t\tallowClear: true\n\t});\n\t$(\"#select2_4\").select2({\n\t    placeholder: \"Select a State\",\n\t    allowClear: true\n\t});\n\t\n\t// tagging support\n\t$(\"#select2_5\").select2({tags:[\"red\", \"green\", \"blue\"]});\n\t\n\t// enable/disable mode\n\t$(\"#select2_6_1\").select2();\n\t$(\"#select2_6_2\").select2();\n\t$(\"#select2_6_enable\").click(function() { $(\"#select2_6_1,#select2_6_2\").select2(\"enable\"); });\n\t$(\"#select2_6_disable\").click(function() { $(\"#select2_6_1,#select2_6_2\").select2(\"disable\"); });\n\t\n\t// templating\n\tfunction format(state) {\n\t    if (!state.id) return state.text; // optgroup\n\t    return \"<img class='flag' src='http://ivaynberg.github.com/select2/images/flags/\" + state.id.toLowerCase() + \".png'/>\" + state.text;\n\t}\n\t$(\"#select2_7\").select2({\n\t    formatResult: format,\n\t    formatSelection: format,\n\t    escapeMarkup: function(m) { return m; }\n\t});\n\t\n\t/* DateTimePicker */\n\t\n\t// default\n\t$(\"#datetimepicker1\").datetimepicker({\n\t\tformat: 'yyyy-mm-dd hh:ii',\n\t\tstartDate: \"2013-02-14 10:00\",\n\t\tminView: 0\n\t});\n\t\n\t// component\n\t$('#datetimepicker2').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n\t\tstartDate: \"2013-02-14 10:00\"\n\t});\n\t\n\t// positioning\n\t$('#datetimepicker3').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n        autoclose: true,\n        todayBtn: true,\n        startDate: \"2013-02-14 10:00\",\n        pickerPosition: \"bottom-left\"\n\t});\n\t\n\t// advanced\n\t$('#datetimepicker4').datetimepicker({\n\t\tformat: \"dd MM yyyy - hh:ii\",\n        autoclose: true,\n        todayBtn: true,\n        startDate: \"2013-02-14 10:00\",\n        minuteStep: 10\n\t});\n\t\n\t// meridian\n\t$('#datetimepicker5').datetimepicker({\n\t\tformat: \"dd MM yyyy - HH:ii P\",\n\t    showMeridian: true,\n\t    autoclose: true,\n\t    startDate: \"2013-02-14 10:00\",\n\t    todayBtn: true\n\t});\n\t\n\t// with date only\n\t$(\"#datetimepicker6\").datetimepicker({\n\t    format: 'yyyy-mm-dd',\n\t    startDate: \"2013-06-18\",\n\t    minView: 2, // this forces the picker to not go any further than days view\n\t    pickerPosition: \"bottom-left\"\n\t});\n\t\n\t/*\n\t * Input Masks\n\t */\n\t$.extend($.inputmask.defaults, {\n        'autounmask': true\n    });\n\n    $(\"#inputmask-date\").inputmask(\"d/m/y\", {autoUnmask: true});\n    $(\"#inputmask-date-1\").inputmask(\"d/m/y\",{ \"placeholder\": \"*\"});\n    $(\"#inputmask-date-2\").inputmask(\"d/m/y\",{ \"placeholder\": \"dd/mm/yyyy\" });\n    $(\"#inputmask-phone\").inputmask(\"mask\", {\"mask\": \"(999) 999-9999\"});\n    $(\"#inputmask-tax\").inputmask({\"mask\": \"99-9999999\"});\n    $(\"#inputmask-decimal\").inputmask('decimal', { rightAlignNumerics: false });\n    $(\"#inputmask-currency\").inputmask('\\u20AC 999,999,999.99', { numericInput: true, rightAlignNumerics: false, greedy: false});\n    $(\"#inputmask-ssn\").inputmask(\"999-99-9999\", {clearMaskOnLostFocus: true });\n    \n    /*\n     * Multiselect\n     */\n    $('#multiselect-optgroup').multiSelect({ selectableOptgroup: true });\n    $('#pre-selected-options').multiSelect();\n    $('#multiselect-custom').multiSelect({\n    \tselectableHeader: \"<div class='custom-header'>Selectable items</div>\",\n    \tselectionHeader: \"<div class='custom-header'>Selection items</div>\",\n    \tselectableFooter: \"<div class='custom-header custom-footer'>Selectable footer</div>\",\n    \tselectionFooter: \"<div class='custom-header custom-footer'>Selection footer</div>\"\n    });\n    \n    /*\n     * bootstrap-timepicker\n     */\n    $('#timepicker1').timepicker();\n    $('#timepicker2').timepicker({\n        minuteStep: 1,\n        template: 'modal',\n        showSeconds: true,\n        showMeridian: false,\n        modalBackdrop: true\n    });\n    $('#timepicker3').timepicker({\n        minuteStep: 5,\n        showInputs: false,\n        disableFocus: true\n    });\n    $('#timepicker4').timepicker({\n        minuteStep: 1,\n        secondStep: 5,\n        showInputs: false,\n        showSeconds: true,\n        showMeridian: false\n    });\n    $('#timepicker5').timepicker({\n        template: false,\n        showInputs: false,\n        minuteStep: 5\n    });\n\t\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/form_validator.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_validator.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$.validator.setDefaults(\n{\n\tsubmitHandler: function() { alert(\"submitted!\"); },\n\tshowErrors: function(map, list) \n\t{\n\t\tthis.currentElements.parents('label:first, .controls:first').find('.error').remove();\n\t\tthis.currentElements.parents('.control-group:first').removeClass('error');\n\t\t\n\t\t$.each(list, function(index, error) \n\t\t{\n\t\t\tvar ee = $(error.element);\n\t\t\tvar eep = ee.parents('label:first').length ? ee.parents('label:first') : ee.parents('.controls:first');\n\t\t\t\n\t\t\tee.parents('.control-group:first').addClass('error');\n\t\t\teep.find('.error').remove();\n\t\t\teep.append('<p class=\"error help-block\"><span class=\"label label-important\">' + error.message + '</span></p>');\n\t\t});\n\t\t//refreshScrollers();\n\t}\n});\n\n$(function()\n{\n\t// validate signup form on keyup and submit\n\t$(\"#validateSubmitForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/form_wizards.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * form_wizards.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar bWizardTabClass = '';\n\t$('.wizard').each(function()\n\t{\n\t\tif ($(this).is('#rootwizard'))\n\t\t\tbWizardTabClass = 'bwizard-steps';\n\t\telse\n\t\t\tbWizardTabClass = '';\n\n\t\tvar wiz = $(this);\n\t\t\n\t\t$(this).bootstrapWizard(\n\t\t{\n\t\t\tonNext: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\tif(index==1)\n\t\t\t\t{\n\t\t\t\t\t// Make sure we entered the title\n\t\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, \n\t\t\tonLast: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\t// Make sure we entered the title\n\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}, \n\t\t\tonTabClick: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\t// Make sure we entered the title\n\t\t\t\tif(!wiz.find('#inputTitle').val()) {\n\t\t\t\t\talert('You must enter the product title');\n\t\t\t\t\twiz.find('#inputTitle').focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTabShow: function(tab, navigation, index) \n\t\t\t{\n\t\t\t\tvar $total = navigation.find('li:not(.status)').length;\n\t\t\t\tvar $current = index+1;\n\t\t\t\tvar $percent = ($current/$total) * 100;\n\t\t\t\t\n\t\t\t\tif (wiz.find('.bar').length)\n\t\t\t\t{\n\t\t\t\t\twiz.find('.bar').css({width:$percent+'%'});\n\t\t\t\t\twiz.find('.bar')\n\t\t\t\t\t\t.find('.step-current').html($current)\n\t\t\t\t\t\t.parent().find('.steps-total').html($total)\n\t\t\t\t\t\t.parent().find('.steps-percent').html(Math.round($percent) + \"%\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// update status\n\t\t\t\tif (wiz.find('.step-current').length) wiz.find('.step-current').html($current);\n\t\t\t\tif (wiz.find('.steps-total').length) wiz.find('.steps-total').html($total);\n\t\t\t\tif (wiz.find('.steps-complete').length) wiz.find('.steps-complete').html(($current-1));\n\t\t\t\t\n\t\t\t\t// mark all previous tabs as complete\n\t\t\t\tnavigation.find('li:not(.status)').removeClass('primary');\n\t\t\t\tnavigation.find('li:not(.status):lt('+($current-1)+')').addClass('primary');\n\t\n\t\t\t\t// If it's the last tab then hide the last button and show the finish instead\n\t\t\t\tif($current >= $total) {\n\t\t\t\t\twiz.find('.pagination .next').hide();\n\t\t\t\t\twiz.find('.pagination .finish').show();\n\t\t\t\t\twiz.find('.pagination .finish').removeClass('disabled');\n\t\t\t\t} else {\n\t\t\t\t\twiz.find('.pagination .next').show();\n\t\t\t\t\twiz.find('.pagination .finish').hide();\n\t\t\t\t}\n\t\t\t},\n\t\t\ttabClass: bWizardTabClass,\n\t\t\tnextSelector: '.next', \n\t\t\tpreviousSelector: '.previous',\n\t\t\tfirstSelector: '.first', \n\t\t\tlastSelector: '.last'\n\t\t});\n\n\t\twiz.find('.finish').click(function() \n\t\t{\n\t\t\talert('Finished!, Starting over!');\n\t\t\twiz.find(\"a[data-toggle*='tab']:first\").trigger('click');\n\t\t});\n\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/google_analytics.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * google_analytics.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initGoogleAnalytics();\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/image_crop.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * image_crop.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#jcrop-target-1').Jcrop({},function(){\n\t\tapi = this;\n\t\tapi.setSelect([130,65,130+350,65+285]);\n\t\tapi.setOptions({ bgFade: true });\n\t\tapi.ui.selection.addClass('jcrop-selection');\n\t});\n\t\n\t/*\n\t * JCrop with preview Example\n\t */\n\t// Create variables (in this scope) to hold the API and image size\n    var jcrop_api,\n        boundx,\n        boundy,\n\n        // Grab some information about the preview pane\n        $preview = $('#preview-pane'),\n        $pcnt = $('#preview-pane .preview-container'),\n        $pimg = $('#preview-pane .preview-container img'),\n\n        xsize = $pcnt.width(),\n        ysize = $pcnt.height();\n\t\n\tfunction handleTarget2()\n\t{   \n\t    $('#jcrop-target-2').Jcrop({\n\t    \tonChange: updatePreview,\n\t    \tonSelect: updatePreview,\n\t    \taspectRatio: xsize / ysize\n\t    },function(){\n\t    \t// Use the API to get the real image size\n\t    \tvar bounds = this.getBounds();\n\t    \tboundx = bounds[0];\n\t    \tboundy = bounds[1];\n\t    \t// Store the API in the jcrop_api variable\n\t    \tjcrop_api = this;\n\t    \t\n\t    \tjcrop_api.setSelect([130,65,130+350,65+285]);\n\t    \tjcrop_api.setOptions({ bgFade: true });\n\t    \tjcrop_api.ui.selection.addClass('jcrop-selection');\n\n\t    \t// Move the preview into the jcrop container for css positioning\n\t    \t$preview.appendTo(jcrop_api.ui.holder);\n\t    });\n\t}\n\t\n\tfunction updatePreview(c)\n\t{\n\t\tif (parseInt(c.w) > 0)\n\t\t{\n\t\t\tvar rx = xsize / c.w;\n\t\t\tvar ry = ysize / c.h;\n\n\t\t\t$pimg.css({\n\t\t\t\twidth: Math.round(rx * boundx) + 'px',\n\t\t\t\theight: Math.round(ry * boundy) + 'px',\n\t\t\t\tmarginLeft: '-' + Math.round(rx * c.x) + 'px',\n\t\t\t\tmarginTop: '-' + Math.round(ry * c.y) + 'px'\n\t\t\t});\n\t\t}\n\t};\n\t\n\thandleTarget2();\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/index.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * index.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\t\n\t// initialize charts\n\tif (typeof charts != 'undefined') \n\t\tcharts.initIndex();\n\t\n\t/*\n\t * Chat widget\n\t */\n\tif ($('.widget-chat').length)\n\t{\n\t\t$('.widget-chat form').submit(function(e)\n\t\t{\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tvar direction = $(this).parents('.widget-chat').find('.media:first blockquote').is('.pull-right') ? 'left' : 'right';\n\t\t\tvar media = $(this).parents('.widget-chat').find('.media:first').clone();\n\t\t\tvar message = $(this).find('[name=\"message\"]');\n\t\t\t\n\t\t\t// prepare media\n\t\t\tmedia.hide();\n\t\t\tmedia.find('small.author a.strong').text('Awesome');\n\t\t\t\n\t\t\t// apply direction\n\t\t\tmedia.removeClass('right').addClass(direction);\n\t\t\tmedia.find('blockquote').attr('class', '').addClass('pull-' + direction);\n\t\t\tmedia.find('.media-object').removeClass('pull-left pull-right').addClass('pull-' + direction);\n\t\t\t\n\t\t\t// apply message\n\t\t\tmedia.find('blockquote p').text(message.val());\n\t\t\t\n\t\t\t// reset input\n\t\t\tmessage.val('');\n\t\t\t\n\t\t\t// jump slimScroll to top\n\t\t\t$(this).parents('.widget-chat:first').find('.slim-scroll').slimScroll({ scrollTo: '0' });\n\t\t\t\n\t\t\t// insert media in the conversation\n\t\t\t$(this).parents('.widget-chat:first').find('.chat-items').prepend(media).find('.media:hidden').slideDown();\n\t\t});\n\t}\n\t\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/infinite_scroll.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * infinite_scroll.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tvar isCustomScroll = $('body').css('overflow') === 'hidden';\n\n\t$('.jscroll').jscroll({\n\t    loadingHtml: '<div class=\"alert alert-primary center\">Loading ...</div>',\n\t    debug: false,\n\t    nextSelector: '.jscroll-next:last',\n\t    isCustomScroll: isCustomScroll,\n\t    isWindow: !isCustomScroll,\n\t    customScroll: isCustomScroll ? '#wrapper' : 'window'\n\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/maps_google.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * maps_google.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n/*\n * Extending Gmaps with pagination\n */\n( function($) {\n\t$.extend($.ui.gmap.prototype, {\n\t\tpagination: function(prop) {\n\t\t\tvar $el = $(\"<div id='pagination' class='navbar' style='width: 100%'><div class='navbar-inner' style='padding: 0;'><ul class='nav' style='width: 100%;'><li style='width: 33%;'><a href='#' style='font-size: 20pt;' class='back-btn left'>&lsaquo;</a></li><li style='width: 33%;' class='center'><a class='display' style='font-size: 14pt;'></a></li><li style='width: 33%;'><a href='#' class='fwd-btn right' style='font-size: 20pt;'>&rsaquo;</a></li></ul></div></div>\");\n\t\t\tvar self = this, i = 0, prop = prop || 'title';\n\t\t\tself.set('pagination', function(a, b) {\n\t\t\t\tif (a) {\n\t\t\t\t\ti = i + b;\n\t\t\t\t\t$el.find('.display').text(self.get('markers')[i][prop]);\n\t\t\t\t\tself.get('map').panTo(self.get('markers')[i].getPosition());\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.get('pagination')(true, 0);\n\t\t\t$el.find('.back-btn').click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.get('pagination')((i > 0), -1, this);\n\t\t\t});\n\t\t\t$el.find('.fwd-btn').click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.get('pagination')((i < self.get('markers').length - 1), 1, this);\n\t\t\t});\n\t\t\tself.addControl($el, google.maps.ControlPosition.TOP_LEFT);\t\t\t\n\t\t}\n\t});\n} (jQuery) );\n\n$(function()\n{\n\t\n\t/*\n\t * Clustering\n\t */\n\tif ($('#google-map-clustering').length)\n\t{\n\t\t// We need to bind the map with the \"init\" event otherwise bounds will be null\n\t\t$('#google-map-clustering').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', function(evt, map) { \n\t\t\tvar bounds = map.getBounds();\n\t\t\tvar southWest = bounds.getSouthWest();\n\t\t\tvar northEast = bounds.getNorthEast();\n\t\t\tvar lngSpan = northEast.lng() - southWest.lng();\n\t\t\tvar latSpan = northEast.lat() - southWest.lat();\n\t\t\tfor ( var i = 0; i < 1000; i++ ) {\n\t\t\t\tvar lat = southWest.lat() + latSpan * Math.random();\n\t\t\t\tvar lng = southWest.lng() + lngSpan * Math.random();\n\t\t\t\t$('#google-map-clustering').gmap('addMarker', { \n\t\t\t\t\t'position': new google.maps.LatLng(lat, lng) \n\t\t\t\t}).click(function() {\n\t\t\t\t\t$('#google-map-clustering').gmap('openInfoWindow', { content : 'Hello world!' }, this);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('#google-map-clustering').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers')));\n\t\t\t// To call methods in MarkerClusterer simply call \n\t\t\t// $('#google-map-clustering').gmap('get', 'MarkerClusterer').callingSomeMethod();\n\t\t});\n\t}\n\t\n\t/*\n\t * Extend with pagination\n\t */\n\tif ($('#google-map-extend-pagination').length)\n\t{\n\t\tvar markers = [\n\t\t\t{'position': '59.32893000000001,18.064910000000054', 'title': 'Stockholm, Sweden' },\n\t\t\t{'position': '35.6894875,139.69170639999993', 'title': 'Tokyo, Japan' },\n\t\t\t{'position': '13.7234186, 100.47623190000002', 'title': 'Bangkok, Thailand' },\n\t\t\t{'position': '51.508129,-0.12800500000003012', 'title': 'London, Great Britain' },\n\t\t\t{'position': '40.7143528,-74.0059731', 'title': 'New York, USA' },\n\t\t\t{'position': '48.856614,2.3522219000000177', 'title': 'Paris, France' },\n\t\t\t{'position': '34.0522342,-118.2436849', 'title': 'Los Angeles, USA' },\n\t\t\t{'position': '55.75,37.616666699999996', 'title': 'Moskva, Ryssia' }\n\t\t];\n\t\t\n\t\t$('#google-map-extend-pagination').gmap({'zoom': 5, 'disableDefaultUI':true, 'callback': function() {\n\t\t\tvar self = this;\n\t\t\t$.each(markers, function(i, marker) {\n\t\t\t\tself.addMarker(marker).click(function() {\n\t\t\t\t\tself.openInfoWindow({'content': this.title}, this);\n\t\t\t\t});\n\t\t\t});\n\t\t}}).gmap('pagination', 'title');\n\t}\n\t\n\t/*\n\t * Filtering\n\t */\n\tif ($('#google-map-filters').length)\n\t{\n\t\t// format\n\t\tString.prototype.format = function() { a = this; for ( k in arguments ) { a = a.replace(\"{\" + k + \"}\", arguments[k]); } return a; };\n\t\t\n\t\t$('#google-map-filters').gmap({'disableDefaultUI':true}).bind('init', function(evt, map) { \n\t\t\t//$('#google-map-filters').gmap('addControl', 'tags-control', google.maps.ControlPosition.TOP_LEFT);\n\t\t\t$('#google-map-filters').gmap('addControl', 'radios', google.maps.ControlPosition.TOP_LEFT);\n\t\t\tvar southWest = map.getBounds().getSouthWest();\n\t\t\tvar northEast = map.getBounds().getNorthEast();\n\t\t\tvar lngSpan = northEast.lng() - southWest.lng();\n\t\t\tvar latSpan = northEast.lat() - southWest.lat();\n\t\t\tvar images = ['http://google-maps-icons.googlecode.com/files/friends.png', 'http://google-maps-icons.googlecode.com/files/home.png', 'http://google-maps-icons.googlecode.com/files/girlfriend.png', 'http://google-maps-icons.googlecode.com/files/dates.png', 'http://google-maps-icons.googlecode.com/files/realestate.png', 'http://google-maps-icons.googlecode.com/files/apartment.png', 'http://google-maps-icons.googlecode.com/files/family.png'];\n\t\t\tvar tags = ['jQuery', 'Google maps', 'Plugin', 'SEO', 'Java', 'PHP', 'C#', 'Ruby', 'JavaScript', 'HTML'];\n\t\t\t//$('#tags').append('<option value=\"all\">All</option>');\n\t\t\t$.each(tags, function(i, tag) {\n\t\t\t\t//$('#tags').append(('<option value=\"{0}\">{1}</option>').format(tag, tag));\n\t\t\t\t$('#radios').append(('<label style=\"margin-right:5px;display:block;\"><input type=\"checkbox\" style=\"margin-right:3px\" value=\"{0}\"/>{1}</label>').format(tag, tag));\n\t\t\t});\n\t\t\tfor ( i = 0; i < 100; i++ ) {\n\t\t\t\tvar temp = [];\n\t\t\t\tfor ( j = 0; j < Math.random()*5; j++ ) {\n\t\t\t\t\ttemp.push(tags[Math.floor(Math.random()*10)]);\n\t\t\t\t}\n\t\t\t\t$('#google-map-filters').gmap('addMarker', { 'icon': images[(Math.floor(Math.random()*7))], 'tags':temp, 'bound':true, 'position': new google.maps.LatLng(southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random()) } ).click(function() {\n\t\t\t\t\tvar visibleInViewport = ( $('#google-map-filters').gmap('inViewport', $(this)[0]) ) ? 'I\\'m visible in the viewport.' : 'I\\'m sad and hidden.';\n\t\t\t\t\t$('#google-map-filters').gmap('openInfoWindow', { 'content': $(this)[0].tags + '<br/>' +visibleInViewport }, this);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('input:checkbox').click(function() {\n\t\t\t\t$('#google-map-filters').gmap('closeInfoWindow');\n\t\t\t\t$('#google-map-filters').gmap('set', 'bounds', null);\n\t\t\t\tvar filters = [];\n\t\t\t\t$('input:checkbox:checked').each(function(i, checkbox) {\n\t\t\t\t\tfilters.push($(checkbox).val());\n\t\t\t\t});\n\t\t\t\tif ( filters.length > 0 ) {\n\t\t\t\t\t$('#google-map-filters').gmap('find', 'markers', { 'property': 'tags', 'value': filters, 'operator': 'OR' }, function(marker, found) {\n\t\t\t\t\t\tif (found) {\n\t\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarker.setVisible(found); \n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each($('#google-map-filters').gmap('get', 'markers'), function(i, marker) {\n\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\tmarker.setVisible(true); \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t/*$(\"#tags\").change(function() {\n\t\t\t\t$('#google-map-filters').gmap('closeInfoWindow');\n\t\t\t\t$('#google-map-filters').gmap('set', 'bounds', null);\n\t\t\t\tif ( $(this).val() == 'all' ) {\n\t\t\t\t\t$.each($('#google-map-filters').gmap('get', 'markers'), function(i, marker) {\n\t\t\t\t\t\tmarker.setVisible(true); \n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$('#google-map-filters').gmap('find', 'markers', { 'property': 'tags', 'value': $(this).val() }, function(marker, found) {\n\t\t\t\t\t\tif (found) {\n\t\t\t\t\t\t\t$('#google-map-filters').gmap('addBounds', marker.position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarker.setVisible(found); \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});*/\n\t\t});\n\t}\n\t\n\t/*\n\t * Geocoding\n\t */\n\tif ($('#google-map-geocoding').length)\n\t{\n\t\t$('#google-map-geocoding').gmap({'zoom': 2 }).bind('init', function(event, map) { \n\t\t\t$(map).click( function(event) {\n\t\t\t\t$('#google-map-geocoding').gmap('addMarker', {\n\t\t\t\t\t'position': event.latLng, \n\t\t\t\t\t'draggable': true, \n\t\t\t\t\t'bounds': false\n\t\t\t\t}, function(map, marker) {\n\t\t\t\t\t$('#modals').append('<div id=\"dialog'+marker.__gm_id+'\" class=\"hide\">' + \n\t\t\t\t\t\t\t'<label for=\"country\">Country</label>'+ \n\t\t\t\t\t\t\t'<input id=\"country'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"country\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"state\">State</label>' + \n\t\t\t\t\t\t\t'<input id=\"state'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"state\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"address\">Address</label>' + \n\t\t\t\t\t\t\t'<input id=\"address'+marker.__gm_id+'\" type=\"text\" class=\"input input-block-level\" name=\"address\" value=\"\"/>' + \n\t\t\t\t\t\t\t'<label for=\"comment\">Comment</label>' + \n\t\t\t\t\t\t\t'<textarea id=\"comment\" name=\"comment\" class=\"input-block-level\" rows=\"5\"></textarea>' + \n\t\t\t\t\t'</div>');\n\t\t\t\t\tfindLocation(marker.getPosition(), marker);\n\t\t\t\t}).dragend( function(event) {\n\t\t\t\t\tfindLocation(event.latLng, this);\n\t\t\t\t}).click( function() {\n\t\t\t\t\topenDialog(this);\n\t\t\t\t})\n\t\t\t});\n\t\t});\n\n\t\tfunction findLocation(location, marker) {\n\t\t\t$('#google-map-geocoding').gmap('search', {'location': location}, function(results, status) {\n\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\t$.each(results[0].address_components, function(i,v) {\n\t\t\t\t\t\tif ( v.types[0] == \"administrative_area_level_1\" || \n\t\t\t\t\t\t\t v.types[0] == \"administrative_area_level_2\" ) {\n\t\t\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"state\"]').attr('value', v.long_name);\n\t\t\t\t\t\t} else if ( v.types[0] == \"country\") {\n\t\t\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"country\"]').attr('value', v.long_name);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tmarker.setTitle(results[0].formatted_address);\n\t\t\t\t\t$('#dialog'+marker.__gm_id + ' [name=\"address\"]').attr('value', results[0].formatted_address);\n\t\t\t\t\topenDialog(marker);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction openDialog(marker) {\n\t\t\tbootbox.dialog($('#dialog'+marker.__gm_id).html(), [{\n\t\t\t\t'label': 'Save',\n\t\t\t\t'class': 'btn-success',\n\t\t\t\t'callback': function(){}\n\t\t\t}, {\n\t\t\t\t'label': 'Remove',\n\t\t\t\t'class': 'btn-danger',\n\t\t\t\t'callback': function(){\n\t\t\t\t\tmarker.setMap(null);\n\t\t\t\t}\n\t\t\t}]);\n\t\t}\n\t}\n\t\n\t/*\n\t * JSON\n\t */\n\tif ($('#google-map-json').length)\n\t{\n\t\t$('#google-map-json').gmap().bind('init', function() { \n\t\t\t$.getJSON( basePath + 'theme/scripts/plugins/maps/jquery-ui-map/data/demo.json', function(data) { \n\t\t\t\t$.each( data.markers, function(i, marker) {\n\t\t\t\t\t$('#google-map-json').gmap('addMarker', { \n\t\t\t\t\t\t'position': new google.maps.LatLng(marker.latitude, marker.longitude), \n\t\t\t\t\t\t'bounds': true \n\t\t\t\t\t}).click(function() {\n\t\t\t\t\t\t$('#google-map-json').gmap('openInfoWindow', { 'content': marker.content }, this);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\t\n\t/*\n\t * Streetview\n\t */\n\tif ($('#google-map-streetview').length)\n\t{\n\t\t$('#google-map-streetview').gmap({ 'disableDefaultUI':true, 'callback': function() {\n\t\t\tvar self = this;\n\t\t\tself.microformat('.vevent', function(result, item, index) {\n\t\t\t\tvar clone = $(item).clone().addClass('ui-dialog-vevent').append('<div id=\"streetview{0}\" class=\"streetview\"></div>'.replace('{0}', index));\n\t\t\t\tclone.find('p').remove();\n\t\t\t\tvar latlng = new google.maps.LatLng(result.location[0].geo[0].latitude['value-title'], result.location[0].geo[0].longitude['value-title']);\n\t\t\t\tself.addMarker( { 'bounds':true, 'position': latlng, 'title': result.summary, 'icon': 'http://google-maps-icons.googlecode.com/files/music-rock.png' }, function(map, marker) {\n\t\t\t\t\t$(item).find('.summary').click( function() {\n\t\t\t\t\t\t$(marker).triggerEvent('click');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\t$(item).mouseover(function() {\n\t\t\t\t\t\tself.get('map').panTo(marker.getPosition());\n\t\t\t\t\t});\n\t\t\t\t}).click(function() {\n\t\t\t\t\tself.get('map').panTo( $(this)[0].getPosition());\n\t\t\t\t\t//$(clone).dialog({ 'modal': true, 'width': 530, 'title': result.summary, 'resizable': false, 'draggable': false });\n\t\t\t\t\tbootbox.alert($(clone).html());\n\t\t\t\t\tself.displayStreetView('streetview{0}'.replace('{0}', index), { 'position': $(this)[0].getPosition() });\n\t\t\t\t});\n\t\t\t});\n\t\t}});\n\t}\n\t\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/maps_vector.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * maps_vector.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t\n\t$('#maps_vector_tabs a[data-toggle=\"tab\"]').on('shown', function (e)\n\t{\n\t\tif ($(this).attr('data-init'))\n\t\t\treturn;\n\t\t\n\t\t$(this).attr('data-init', 1);\n\t\tswitch ($(this).attr('href'))\n\t\t{\n\t\t\tcase '#tab1':\n\t\t\t\tinitWorldMapGDP();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab2':\n\t\t\t\tinitWorldMapMarkers();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab3':\n\t\t\t\tinitUSAUnemployment();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab4':\n\t\t\t\tinitRegionSelection();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab5':\n\t\t\t\tinitFranceElections();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab6':\n\t\t\t\tinitRandomColors();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab7':\n\t\t\t\tinitMallMap();\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase '#tab8':\n\t\t\t\tinitProjectionMap();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\t// load this map by default\n\tinitWorldMapGDP();\n\t\n\t// GDP by country\n\tfunction initWorldMapGDP()\n\t{\n\t\t$('#world-map-gdp').vectorMap({\n\t\t\tmap: 'world_mill_en',\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tvalues: gdpData,\n\t\t\t\t\tscale: ['#C8EEFF', '#0071A4'],\n\t\t\t\t\tnormalizeFunction: 'polynomial'\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonLabelShow: function(e, el, code){\n\t\t\t\tel.html(el.html()+' (GDP - '+gdpData[code]+')');\n\t\t\t}\n\t\t});\n\t}\n\t\n\t// World map markers\n\tfunction initWorldMapMarkers()\n\t{\n\t\t$('#world-map-markers').vectorMap({\n\t\t\tmap: 'world_mill_en',\n\t\t\tscaleColors: ['#C8EEFF', '#0071A4'],\n\t\t\tnormalizeFunction: 'polynomial',\n\t\t\thoverOpacity: 0.7,\n\t\t\thoverColor: false,\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: primaryColor,\n\t\t\t\t\tstroke: '#383f47'\n\t\t\t\t}\n\t\t\t},\n\t\t\tbackgroundColor: '#383f47',\n\t\t\tmarkers: [\n\t\t\t          {latLng: [41.90, 12.45], name: 'Vatican City'},\n\t\t\t          {latLng: [43.73, 7.41], name: 'Monaco'},\n\t\t\t          {latLng: [-0.52, 166.93], name: 'Nauru'},\n\t\t\t          {latLng: [-8.51, 179.21], name: 'Tuvalu'},\n\t\t\t          {latLng: [43.93, 12.46], name: 'San Marino'},\n\t\t\t          {latLng: [47.14, 9.52], name: 'Liechtenstein'},\n\t\t\t          {latLng: [7.11, 171.06], name: 'Marshall Islands'},\n\t\t\t          {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'},\n\t\t\t          {latLng: [3.2, 73.22], name: 'Maldives'},\n\t\t\t          {latLng: [35.88, 14.5], name: 'Malta'},\n\t\t\t          {latLng: [12.05, -61.75], name: 'Grenada'},\n\t\t\t          {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'},\n\t\t\t          {latLng: [13.16, -59.55], name: 'Barbados'},\n\t\t\t          {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'},\n\t\t\t          {latLng: [-4.61, 55.45], name: 'Seychelles'},\n\t\t\t          {latLng: [7.35, 134.46], name: 'Palau'},\n\t\t\t          {latLng: [42.5, 1.51], name: 'Andorra'},\n\t\t\t          {latLng: [14.01, -60.98], name: 'Saint Lucia'},\n\t\t\t          {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'},\n\t\t\t          {latLng: [1.3, 103.8], name: 'Singapore'},\n\t\t\t          {latLng: [1.46, 173.03], name: 'Kiribati'},\n\t\t\t          {latLng: [-21.13, -175.2], name: 'Tonga'},\n\t\t\t          {latLng: [15.3, -61.38], name: 'Dominica'},\n\t\t\t          {latLng: [-20.2, 57.5], name: 'Mauritius'},\n\t\t\t          {latLng: [26.02, 50.55], name: 'Bahrain'},\n\t\t\t          {latLng: [0.33, 6.73], name: 'So Tom and Prncipe'}\n\t\t\t          ]\n\t\t});\n\t}\n\t\n\t// USA unemployment\n\tfunction initUSAUnemployment()\n\t{\n\t\t$.getJSON( basePath + 'theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json', function(data){\n\t\t\tvar val = 2009;\n\t\t\tstatesValues = jvm.values.apply({}, jvm.values(data.states)),\n\t\t\tmetroPopValues = Array.prototype.concat.apply([], jvm.values(data.metro.population)),\n\t\t\tmetroUnemplValues = Array.prototype.concat.apply([], jvm.values(data.metro.unemployment));\n\n\t\t\t$('#usa-unemployment').vectorMap({\n\t\t\t\tmap: 'us_aea_en',\n\t\t\t\tmarkers: data.metro.coords,\n\t\t\t\tseries: {\n\t\t\t\t\tmarkers: [{\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tscale: ['#FEE5D9', '#A50F15'],\n\t\t\t\t\t\tvalues: data.metro.unemployment[val],\n\t\t\t\t\t\tmin: jvm.min(metroUnemplValues),\n\t\t\t\t\t\tmax: jvm.max(metroUnemplValues)\n\t\t\t\t\t},{\n\t\t\t\t\t\tattribute: 'r',\n\t\t\t\t\t\tscale: [5, 20],\n\t\t\t\t\t\tvalues: data.metro.population[val],\n\t\t\t\t\t\tmin: jvm.min(metroPopValues),\n\t\t\t\t\t\tmax: jvm.max(metroPopValues)\n\t\t\t\t\t}],\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: ['#DEEBF7', '#08519C'],\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data.states[val],\n\t\t\t\t\t\tmin: jvm.min(statesValues),\n\t\t\t\t\t\tmax: jvm.max(statesValues)\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tonMarkerLabelShow: function(event, label, index){\n\t\t\t\t\tlabel.html(\n\t\t\t\t\t\t\t'<b>'+data.metro.names[index]+'</b><br/>'+\n\t\t\t\t\t\t\t'<b>Population: </b>'+data.metro.population[val][index]+'</br>'+\n\t\t\t\t\t\t\t'<b>Unemployment rate: </b>'+data.metro.unemployment[val][index]+'%'\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tonRegionLabelShow: function(event, label, code){\n\t\t\t\t\tlabel.html(\n\t\t\t\t\t\t\t'<b>'+label.html()+'</b></br>'+\n\t\t\t\t\t\t\t'<b>Unemployment rate: </b>'+data.states[val][code]+'%'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar mapObject = $('#usa-unemployment').vectorMap('get', 'mapObject');\n\n\t\t\t$(\"#usa-unemployment-slider\").slider({\n\t\t\t\tvalue: val,\n\t\t\t\tmin: 2005,\n\t\t\t\tmax: 2009,\n\t\t\t\tstep: 1,\n\t\t\t\tcreate: JQSliderCreate,\n\t\t\t\tslide: function( event, ui ) {\n\t\t\t\t\t$('#usa-unemployment-slider-year strong').html(ui.value);\n\t\t\t\t\tval = ui.value;\n\t\t\t\t\tmapObject.series.regions[0].setValues(data.states[ui.value]);\n\t\t\t\t\tmapObject.series.markers[0].setValues(data.metro.unemployment[ui.value]);\n\t\t\t\t\tmapObject.series.markers[1].setValues(data.metro.population[ui.value]);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\t// regions selection\n\tfunction initRegionSelection()\n\t{\n\t\tmap = new jvm.WorldMap({\n\t\t\tcontainer: $('#regions-selection'),\n\t\t\tmap: 'de_merc_en',\n\t\t\tregionsSelectable: true,\n\t\t\tmarkersSelectable: true,\n\t\t\tmarkers: [\n\t\t\t          {latLng: [52.50, 13.39], name: 'Berlin'},\n\t\t\t          {latLng: [53.56, 10.00], name: 'Hamburg'},\n\t\t\t          {latLng: [48.13, 11.56], name: 'Munich'},\n\t\t\t          {latLng: [50.95, 6.96], name: 'Cologne'},\n\t\t\t          {latLng: [50.11, 8.68], name: 'Frankfurt am Main'},\n\t\t\t          {latLng: [48.77, 9.17], name: 'Stuttgart'},\n\t\t\t          {latLng: [51.23, 6.78], name: 'Dusseldorf'},\n\t\t\t          {latLng: [51.51, 7.46], name: 'Dortmund'},\n\t\t\t          {latLng: [51.45, 7.01], name: 'Essen'},\n\t\t\t          {latLng: [53.07, 8.80], name: 'Bremen'}\n\t\t\t],\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: '#4DAC26'\n\t\t\t\t},\n\t\t\t    selected: {\n\t\t\t    \tfill: '#CA0020'\n\t\t\t    }\n\t\t\t},\n\t\t\tregionStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: '#B8E186'\n\t\t\t\t},\n\t\t\t    selected: {\n\t\t\t    \tfill: '#F4A582'\n\t\t\t    }\n\t\t\t},\n\t\t\tseries: {\n\t\t\t\tmarkers: [{\n\t\t\t\t\tattribute: 'r',\n\t\t\t        scale: [5, 15],\n\t\t\t        values: [\n\t\t\t                 887.70,\n\t\t\t        \t\t 755.16,\n\t\t\t        \t\t 310.69,\n\t\t\t        \t\t 405.17,\n\t\t\t        \t\t 248.31,\n\t\t\t        \t\t 207.35,\n\t\t\t        \t\t 217.22,\n\t\t\t        \t\t 280.71,\n\t\t\t        \t\t 210.32,\n\t\t\t        \t\t 325.42\n\t\t\t        ]\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonRegionSelected: function(){\n\t\t\t\tif (window.localStorage) {\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t'jvectormap-selected-regions',\n\t\t\t        \t\tJSON.stringify(map.getSelectedRegions())\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonMarkerSelected: function(){\n\t\t\t\tif (window.localStorage) {\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\t\t'jvectormap-selected-markers',\n\t\t\t        \t\tJSON.stringify(map.getSelectedMarkers())\n\t\t\t\t\t);\n\t\t\t        }\n\t\t\t}\n\t\t});\n\t\tmap.setSelectedRegions( JSON.parse( window.localStorage.getItem('jvectormap-selected-regions') || '[]' ) );\n\t\tmap.setSelectedMarkers( JSON.parse( window.localStorage.getItem('jvectormap-selected-markers') || '[]' ) );\n\t}\n\t\n\t// France elections\n\tfunction initFranceElections()\n\t{\n\t\t$.getJSON('theme/scripts/plugins/maps/jvectormap/data/france-elections.json', function(data){\n\t\t\tnew jvm.WorldMap({\n\t\t\t\tmap: 'fr_merc_en',\n\t\t\t\tcontainer: $('#france-2007'),\n\t\t\t\tseries: {\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: {\n\t\t\t\t\t\t\t'1': '#4169E1',\n\t\t\t\t\t\t\t'2': '#FF69B4'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data['year2007'].results\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnew jvm.WorldMap({\n\t\t\t\tmap: 'fr_merc_en',\n\t\t\t\tcontainer: $('#france-2012'),\n\t\t\t\tseries: {\n\t\t\t\t\tregions: [{\n\t\t\t\t\t\tscale: {\n\t\t\t\t\t\t\t'1': '#FF69B4',\n\t\t\t\t\t\t\t'2': '#4169E1'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattribute: 'fill',\n\t\t\t\t\t\tvalues: data['year2012'].results\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\t// random colors\n\tvar palette = ['#66C2A5', '#FC8D62', '#8DA0CB', '#E78AC3', '#A6D854'],\n\t\tgenerateColors = function(){\n\t        var colors = {},\n\t            key;\n\t\n\t        for (key in colorsMap.regions) {\n\t          colors[key] = palette[Math.floor(Math.random()*palette.length)];\n\t        }\n\t        return colors;\n\t      },\n\t      colorsMap;\n\t      \n\tfunction initRandomColors()\n\t{\n\t\tcolorsMap = new jvm.WorldMap({\n\t\t\tmap: 'es_merc_en',\n\t\t\tcontainer: $('#random-colors-map'),\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tattribute: 'fill'\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\t\tcolorsMap.series.regions[0].setValues(generateColors());\n\t\t$('#update-colors-button').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tcolorsMap.series.regions[0].setValues(generateColors());\n\t\t});\n\t}\n\t\n\t// mall map\n\tfunction initMallMap()\n\t{\n\t\t$('#mall-map').vectorMap({\n\t\t\tmap: 'mall',\n\t\t\tbackgroundColor: 'transparent',\n\t\t\tmarkers: [{\n\t\t\t\tcoords: [60, 110],\n\t\t\t\tname: 'Escalator 1',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [260, 95],\n\t\t\t\tname: 'Escalator 2',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [434, 95],\n\t\t\t\tname: 'Escalator 3',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t},{\n\t\t\t\tcoords: [634, 110],\n\t\t\t\tname: 'Escalator 4',\n\t\t\t\tstyle: {fill: 'yellow'}\n\t\t\t}],\n\t\t\tseries: {\n\t\t\t\tregions: [{\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tF102: 'SPORTS & OUTDOOR',\n\t\t\t\t\t\tF103: 'HOME DECOR',\n\t\t\t\t\t\tF105: 'FASHION',\n\t\t\t\t\t\tF106: 'OTHER',\n\t\t\t\t\t\tF108: 'BEAUTY & SPA',\n\t\t\t\t\t\tF109: 'FASHION',\n\t\t\t\t\t\tF110: 'BEAUTY & SPA',\n\t\t\t\t\t\tF111: 'URBAN FAVORITES',\n\t\t\t\t\t\tF114: 'SERVICES',\n\t\t\t\t\t\tF166: 'DINING',\n\t\t\t\t\t\tF167: 'FASHION',\n\t\t\t\t\t\tF169: 'DINING',\n\t\t\t\t\t\tF170: 'ENTERTAINMENT',\n\t\t\t\t\t\tF172: 'DINING',\n\t\t\t\t\t\tF174: 'DINING',\n\t\t\t\t\t\tF115: 'KIDS STUFF',\n\t\t\t\t\t\tF117: 'LIFESTYLE',\n\t\t\t\t\t\tF118: 'URBAN FAVORITES',\n\t\t\t\t\t\tF119: 'FASHION',\n\t\t\t\t\t\tF120: 'FASHION',\n\t\t\t\t\t\tF122: 'KIDS STUFF',\n\t\t\t\t\t\tF124: 'KIDS STUFF',\n\t\t\t\t\t\tF125: 'KIDS STUFF',\n\t\t\t\t\t\tF126: 'KIDS STUFF',\n\t\t\t\t\t\tF128: 'KIDS STUFF',\n\t\t\t\t\t\tF129: 'LIFESTYLE',\n\t\t\t\t\t\tF130: 'HOME DECOR',\n\t\t\t\t\t\tF132: 'DINING',\n\t\t\t\t\t\tF133: 'SPORTS & OUTDOOR',\n\t\t\t\t\t\tF134: 'KIDS STUFF',\n\t\t\t\t\t\tF135: 'LIFESTYLE',\n\t\t\t\t\t\tF136: 'LIFESTYLE',\n\t\t\t\t\t\tF139: 'KIDS STUFF',\n\t\t\t\t\t\tF153: 'DINING',\n\t\t\t\t\t\tF155: 'FASHION',\n\t\t\t\t\t\tF156: 'URBAN FAVORITES',\n\t\t\t\t\t\tF157: 'URBAN FAVORITES',\n\t\t\t\t\t\tF158: 'LINGERIE & UNDERWEAR',\n\t\t\t\t\t\tF159: 'FASHION',\n\t\t\t\t\t\tF160: 'FASHION',\n\t\t\t\t\t\tF162: 'FASHION',\n\t\t\t\t\t\tF164: 'FASHION',\n\t\t\t\t\t\tF165: 'FASHION',\n\t\t\t\t\t\tFR01: 'REST ROOMS',\n\t\t\t\t\t\tFR02: 'REST ROOMS',\n\t\t\t\t\t\tFR03: 'REST ROOMS',\n\t\t\t\t\t\tFR04: 'REST ROOMS',\n\t\t\t\t\t\tFFC: 'DINING'\n\t\t\t\t\t},\n\t\t\t\t\tscale: {\n\t\t\t\t\t\t\"FASHION\": \"#2761ad\",\n\t\t\t\t\t\t\"LINGERIE & UNDERWEAR\": \"#d58aa3\",\n\t\t\t\t\t\t\"BEAUTY & SPA\": \"#ee549f\",\n\t\t\t\t\t\t\"URBAN FAVORITES\": \"#15bbba\",\n\t\t\t\t\t\t\"SPORTS & OUTDOOR\": \"#8864ab\",\n\t\t\t\t\t\t\"KIDS STUFF\": \"#ef4e36\",\n\t\t\t\t\t\t\"ENTERTAINMENT\": \"#e47325\",\n\t\t\t\t\t\t\"HOME DECOR\": \"#a2614f\",\n\t\t\t\t\t\t\"LIFESTYLE\": \"#8a8934\",\n\t\t\t\t\t\t\"DINING\": \"#73bb43\",\n\t\t\t\t\t\t\"REST ROOMS\": \"#6c260f\",\n\t\t\t\t\t\t\"SERVICES\": \"#504d7c\",\n\t\t\t\t\t\t\"OTHER\": \"#c7b789\"\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t},\n\t\t\tonRegionLabelShow: function(e, el, code){\n\t\t\t\tif (el.html() === '') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\t// reverse projection map\n\tvar mapProjection,\n\t    markerIndex = 0,\n\t    markersCoords = {};\n\t\n\tfunction initProjectionMap()\n\t{\n\t\tmapProjection = new jvm.WorldMap({\n\t\t\tmap: 'us_lcc_en',\n\t\t\tmarkerStyle: {\n\t\t\t\tinitial: {\n\t\t\t\t\tfill: 'red'\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontainer: $('#projection-map'),\n\t\t\tonMarkerLabelShow: function(e, label, code){\n\t\t\t\tmapProjection.label.text(markersCoords[code].lat.toFixed(2)+', '+markersCoords[code].lng.toFixed(2));\n\t\t\t},\n\t\t\tonMarkerClick: function(e, code){\n\t\t\t\tmapProjection.removeMarkers([code]);\n\t\t\t\tmapProjection.label.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tmapProjection.container.click(function(e){\n\t\t\tvar latLng = mapProjection.pointToLatLng(e.offsetX, e.offsetY),\n\t\t\ttargetCls = $(e.target).attr('class');\n\n\t\t\tif (latLng && (!targetCls || (targetCls && $(e.target).attr('class').indexOf('jvectormap-marker') === -1))) {\n\t\t\t\tmarkersCoords[markerIndex] = latLng;\n\t\t\t\tmapProjection.addMarker(markerIndex, {latLng: [latLng.lat, latLng.lng]});\n\t\t\t\tmarkerIndex += 1;\n\t\t\t}\n\t\t});\n\t}\n\t\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/modals.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * modals.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#modals-bootbox-alert').click(function()\n\t{\n\t\tbootbox.alert(\"Hello World!\", function(result) \n\t\t{\n\t\t\t$.gritter.add({\n\t\t\t\ttitle: 'Callback!',\n\t\t\t\ttext: \"I'm just a BootBox Alert callback!\"\n\t\t\t});\n\t\t});\n\t});\n\t$('#modals-bootbox-confirm').click(function()\n\t{\n\t\tbootbox.confirm(\"Are you sure?\", function(result) \n\t\t{\n\t\t\t$.gritter.add({\n\t\t\t\ttitle: 'Callback!',\n\t\t\t\ttext: \"BootBox Confirm Callback with result: \"+ result\n\t\t\t});\n\t\t});\n\t});\n\t$('#modals-bootbox-prompt').click(function()\n\t{\n\t\tbootbox.prompt(\"What is your name?\", function(result) \n\t\t{                \n\t\t\tif (result === null) {                                             \n\t\t\t\t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"BootBox Prompt Dismissed!\"\n\t\t\t\t});                            \n\t\t\t} else {\n\t\t\t\t$.gritter.add({\n\t\t\t\t\ttitle: 'Hi ' + result,\n\t\t\t\t\ttext: \"BootBox Prompt Callback with result: \"+ result\n\t\t\t\t});                          \n\t\t\t}\n\t\t});\n\t});\n\t$('#modals-bootbox-custom').click(function()\n\t{\n\t\tbootbox.dialog(\"I am a custom dialog\", [{\n\t\t    \"label\" : \"Success!\",\n\t\t    \"class\" : \"btn-success\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Great success\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Danger!\",\n\t\t    \"class\" : \"btn-danger\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Uh oh, look out!\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Click ME!\",\n\t\t    \"class\" : \"btn-primary\",\n\t\t    \"callback\": function() {\n\t\t    \t$.gritter.add({\n\t\t\t\t\ttitle: 'Callback!',\n\t\t\t\t\ttext: \"Primary button!\"\n\t\t\t\t});\n\t\t    }\n\t\t}, {\n\t\t    \"label\" : \"Just a button...\"\n\t\t}]);\n\t});\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/notifications.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * notifications.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('[data-toggle=\"notyfy\"]').click(function () \n\t{\n\t\tvar self = $(this);\n\t\tif(self.data('layout') == 'inline') \n\t\t{\n\t\t\t$(self.data('custom')).notyfy(\n\t\t\t{\n\t\t\t\ttext: text[self.data('type')],\n\t\t\t\ttype: self.data('type'),\n\t\t\t\tdismissQueue: true,\n\t\t\t\tbuttons: (self.data('type') != 'confirm') ? false : [{\n\t\t\t\t\taddClass: 'btn btn-success btn-small glyphicons btn-icon ok_2',\n\t\t\t\t\ttext: '<i></i> Ok',\n\t\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t\t$notyfy.close();\n\t\t\t\t\t\t$(self.data('custom')).notyfy({\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t\ttext: 'You clicked \"<strong>Ok</strong>\" button.',\n\t\t\t\t\t\t\ttype: 'success'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\taddClass: 'btn btn-danger btn-small glyphicons btn-icon remove_2',\n\t\t\t\t\ttext: 'Cancel',\n\t\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t\t$notyfy.close();\n\t\t\t\t\t\t$(self.data('custom')).notyfy({\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t\ttext: 'You clicked \"Cancel\" button',\n\t\t\t\t\t\t\ttype: 'error'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\n\t\tnotyfy({\n\t\t\ttext: notification[self.data('type')],\n\t\t\ttype: self.data('type'),\n\t\t\tdismissQueue: true,\n\t\t\tlayout: self.data('layout'),\n\t\t\tbuttons: (self.data('type') != 'confirm') ? false : [{\n\t\t\t\taddClass: 'btn btn-success btn-small btn-icon glyphicons ok_2',\n\t\t\t\ttext: '<i></i> Ok',\n\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t$notyfy.close();\n\t\t\t\t\tnotyfy({\n\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\ttext: 'You clicked \"<strong>Ok</strong>\" button',\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t\tlayout: self.data('layout')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\taddClass: 'btn btn-danger btn-small btn-icon glyphicons remove_2',\n\t\t\t\ttext: '<i></i> Cancel',\n\t\t\t\tonClick: function ($notyfy) {\n\t\t\t\t\t$notyfy.close();\n\t\t\t\t\tnotyfy({\n\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\ttext: '<strong>You clicked \"Cancel\" button<strong>',\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tlayout: self.data('layout')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\treturn false;\n\t});\n\t\n\t/* Gritter Notifications */\n\t\n\t/* Global setting override\n\t$.extend($.gritter.options, {\n\t    class_name: 'gritter-light', // for light notifications (can be added directly to $.gritter.add too)\n\t    position: 'bottom-left', // possibilities: bottom-left, bottom-right, top-left, top-right\n\t\tfade_in_speed: 100, // how fast notifications fade in (string or int)\n\t\tfade_out_speed: 100, // how fast the notices fade out\n\t\ttime: 3000 // hang on the screen for...\n\t});\n    */\n\n\t$('.gritter-add-sticky').click(function()\n\t{\n\t\tvar unique_id = $.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a sticky notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: true,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: '',\n\t\t\t// (string | optional) the class name you want to apply to that specific message\n\t\t\tclass_name: 'my-sticky-class'\n\t\t});\n\t\t\n\t\t// You can have it return a unique id, this can be used to manually remove it later using\n\t\t/*\n\t\tsetTimeout(function(){\n\n\t\t\t$.gritter.remove(unique_id, {\n\t\t\t\tfade: true,\n\t\t\t\tspeed: 'slow'\n\t\t\t});\n\n\t\t}, 6000)\n\t\t*/\n\t\treturn false;\n\t});\n\n\t$('.gritter-add-regular').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a regular notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: false,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: ''\n\t\t});\n\n\t\treturn false;\n\n\t});\n\t\n\t$('.gritter-add-primary').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a primary notice!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n\t\t\t// (string | optional) the image to display on the left\n\t\t\timage: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n\t\t\t// (bool | optional) if you want it to fade out on its own or just sit there\n\t\t\tsticky: false,\n\t\t\t// (int | optional) the time you want it to be alive for before fading out\n\t\t\ttime: '',\n\t\t\t// (string | optional) the class name you want to apply to that specific message\n\t\t\tclass_name: 'gritter-primary'\n\t\t});\n\n\t\treturn false;\n\n\t});\n\n    $('.gritter-add-max').click(function()\n    {\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a notice with a max of 3 on screen at one time!',\n            // (string | mandatory) the text inside the notification\n            text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.',\n            // (string | optional) the image to display on the left\n            image: 'https://si0.twimg.com/profile_images/2873657673/f56ad0e8a62b588ad92b19969084b2ab_bigger.png',\n            // (bool | optional) if you want it to fade out on its own or just sit there\n            sticky: false,\n            // (function) before the gritter notice is opened\n            before_open: function(){\n                if($('.gritter-item-wrapper').length == 3)\n                {\n                    // Returning false prevents a new gritter from opening\n                    return false;\n                }\n            }\n        });\n        return false;\n    });\n\n\t$('.gritter-add-without-image').click(function()\n\t{\n\t\t$.gritter.add({\n\t\t\t// (string | mandatory) the heading of the notification\n\t\t\ttitle: 'This is a notice without an image!',\n\t\t\t// (string | mandatory) the text inside the notification\n\t\t\ttext: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href=\"#\">magnis dis parturient</a> montes, nascetur ridiculus mus.'\n\t\t});\n\t\treturn false;\n\t});\n\n    $('.gritter-add-white').click(function()\n    {\n        $.gritter.add({\n            // (string | mandatory) the heading of the notification\n            title: 'This is a light notification',\n            // (string | mandatory) the text inside the notification\n            text: 'Just add a \"gritter-light\" class_name to your $.gritter.add or globally to $.gritter.options.class_name',\n            class_name: 'gritter-light'\n        });\n        return false;\n    });\n\n});\n\nvar notification = [];\n\nnotification['alert'] = 'Best check yo self, you\\'<strong>re not looking too good</strong>.';\nnotification['primary'] = \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.\";\nnotification['error'] = '<strong>Change a few things up and try submitting again.</strong> This Error message.';\nnotification['success'] = 'You <strong>successfully</strong> read this important alert message.';\nnotification['information'] = 'This alert needs your attention, but it\\'s not super <strong>important</strong>.';\nnotification['warning'] = '<strong>Warning!</strong> Best check yo self, you\\'re not looking too good.';\nnotification['confirm'] = 'Do you want to continue?';"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/sliders.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * sliders.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* jQRangeSliders */\n\t\n\t// regular Range Slider\n\t$(\"#rangeSlider\").rangeSlider();\n\t\n\t// edit Range Slider\n\t$(\"#rangeSliderEdit\").editRangeSlider();\n\t\n\t// date Range Slider\n\t$(\"#rangeSliderDate\").dateRangeSlider();\n\t\n\t// Range Slider without Arrows\n    $(\"#rangeSliderWArrows\").rangeSlider({ arrows: false });\n    \n    // Range Slider Formatter\n    $(\"#rangeSliderFormatter\").rangeSlider({\n    \tformatter:function(val){\n    \t\tvar value = Math.round(val * 5) / 5,\n    \t\tdecimal = value - Math.round(val);\n    \t\treturn \"$\" + (decimal == 0 ? value.toString() + \".0\" : value.toString());\n    \t}\n    });\n    \n    // Range Slider Ruler\n    $(\"#rangeSliderRuler\").rangeSlider({\n    \tscales: [\n\t         // Primary scale\n\t         {\n\t        \t first: function(val){ return val; },\n\t        \t next: function(val){ return val + 10; },\n\t        \t stop: function(val){ return false; },\n\t        \t label: function(val){ return val; },\n\t        \t format: function(tickContainer, tickStart, tickEnd){ \n\t        \t\t tickContainer.addClass(\"myCustomClass\");\n\t        \t }\n\t         },\n\t         // Secondary scale\n\t         {\n\t        \t first: function(val){ return val; },\n\t        \t next: function(val){\n\t        \t\t if (val % 10 === 9){\n\t        \t\t\t return val + 2;\n\t        \t\t }\n\t        \t\t return val + 1;\n\t        \t },\n\t        \t stop: function(val){ return false; },\n\t        \t label: function(){ return null; }\n\t         }]\n    });\n    \n    // Date Range Slider Ruler\n    var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n    $(\"#rangeSliderRulerDate\").dateRangeSlider(\n    {\n    \tbounds: {min: new Date(2012, 0, 1), max: new Date(2012, 11, 31, 12, 59, 59)},\n    \tdefaultValues: {min: new Date(2012, 1, 10), max: new Date(2012, 4, 22)},\n    \tscales: [{\n    \t\tfirst: function(value){ return value; },\n    \t\tend: function(value) {return value; },\n    \t\tnext: function(value){\n    \t\t\tvar next = new Date(value);\n    \t\t\treturn new Date(next.setMonth(value.getMonth() + 1));\n    \t\t},\n    \t\tlabel: function(value){\n    \t\t\treturn months[value.getMonth()];\n    \t\t},\n    \t\tformat: function(tickContainer, tickStart, tickEnd){\n    \t\t\ttickContainer.addClass(\"myCustomClass\");\n    \t\t}\n    \t}]\n    });\n    \n    // Range Slider Step\n    $(\"#rangeSliderStep\").rangeSlider({step: 10});\n    \n    // Range Slider Wheel Zoom\n    $(\"#rangeSliderWheelZoom\").rangeSlider({wheelMode: \"zoom\"});\n    \n    // Range Slider Wheel Scroll\n    $(\"#rangeSliderWheelScroll\").rangeSlider({wheelMode: \"scroll\", wheelSpeed: 30});\n    \n    /*\n\t * JQueryUI Slider: Default slider\n\t */\n\tif ($('.slider-single').size() > 0)\n\t{\n\t\t$( \".slider-single\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\tvalue: 10,\n\t        animate: true,\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n\t}\n\t\n\t/*\n\t * JQueryUI Slider: Multiple Vertical Sliders\n\t */\n\t$( \".sliders-vertical > span\" ).each(function() \n\t{\n        var value = parseInt( $( this ).text(), 10 );\n        $( this ).empty().slider({\n        \tcreate: JQSliderCreate,\n            value: value,\n            range: \"min\",\n            animate: true,\n            orientation: \"vertical\",\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n    });\n\t\n\t/*\n\t * JQueryUI Slider: Range Slider\n\t */\n\tif ($('.range-slider').size() > 0)\n    {\n\t\t$( \".range-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t        range: true,\n\t        min: 0,\n\t        max: 500,\n\t        values: [ 75, 300 ],\n\t        slide: function( event, ui ) {\n\t            $( \".range-slider .amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n    \t$( \".range-slider .amount\" ).val( \"$\" + $( \".range-slider .slider\" ).slider( \"values\", 0 ) +\n    \t\t\t\" - $\" + $( \".range-slider .slider\" ).slider( \"values\", 1 ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Snap to Increments\n\t */\n\tif ($('.increments-slider').size() > 0)\n    {\n\t\t$( \".increments-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\tvalue:100,\n\t        min: 0,\n\t        max: 500,\n\t        step: 50,\n\t        slide: function( event, ui ) {\n\t            $( \".increments-slider .amount\" ).val( \"$\" + ui.value );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n\t\t$( \".increments-slider .amount\" ).val( \"$\" + $( \".increments-slider .slider\" ).slider( \"value\" ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Vertical Range Slider\n\t */\n\tif ($('.vertical-range-slider').size() > 0)\n    {\n\t\t$( \".vertical-range-slider .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n\t\t\torientation: \"vertical\",\n\t        range: true,\n\t        min: 0,\n\t        max: 500,\n\t        values: [ 100, 400 ],\n\t        slide: function( event, ui ) {\n\t            $( \".vertical-range-slider .amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t        },\n\t        start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n\t    });\n    \t$( \".vertical-range-slider .amount\" ).val( \"$\" + $( \".vertical-range-slider .slider\" ).slider( \"values\", 0 ) +\n    \t\t\t\" - $\" + $( \".vertical-range-slider .slider\" ).slider( \"values\", 1 ) );\n    }\n\t\n\t/*\n\t * JQueryUI Slider: Range fixed minimum\n\t */\n\tif ($('.slider-range-min').size() > 0)\n\t{\n\t\t$( \".slider-range-min .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n            range: \"min\",\n            value: 150,\n            min: 1,\n            max: 700,\n            slide: function( event, ui ) {\n                $( \".slider-range-min .amount\" ).val( \"$\" + ui.value );\n            },\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n        $( \".slider-range-min .amount\" ).val( \"$\" + $( \".slider-range-min .slider\" ).slider( \"value\" ) );\n\t}\n\t\n\t/*\n\t * JQueryUI Slider: Range fixed maximum\n\t */\n\tif ($('.slider-range-max').size() > 0)\n\t{\n\t\t$( \".slider-range-max .slider\" ).slider({\n\t\t\tcreate: JQSliderCreate,\n            range: \"max\",\n            min: 1,\n            max: 700,\n            value: 150,\n            slide: function( event, ui ) {\n                $( \".slider-range-max .amount\" ).val( \"$\" + ui.value );\n            },\n            start: function() { if (typeof mainYScroller != 'undefined') mainYScroller.disable(); },\n\t        stop: function() { if (typeof mainYScroller != 'undefined') mainYScroller.enable(); }\n        });\n        $( \".slider-range-max .amount\" ).val( \"$\" + $( \".slider-range-max .slider\" ).slider( \"value\" ) );\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/tables.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tables.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* DataTables */\n\tif ($('.dynamicTable').size() > 0)\n\t{\n\t\t$('.dynamicTable').each(function()\n\t\t{\n\t\t\t// DataTables with TableTools\n\t\t\tif ($(this).is('.tableTools'))\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span5'T><'span3'l><'span4'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t},\n\t\t\t\t\t\"oTableTools\": {\n\t\t\t\t        \"sSwfPath\": commonPath + \"theme/scripts/plugins/tables/DataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf\"\n\t\t\t\t    }\n\t\t\t\t});\n\t\t\t}\n\t\t\t// colVis extras initialization\n\t\t\telse if ($(this).is('.colVis'))\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span3'f><'span3'l><'span6'C>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t// default initialization\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(this).dataTable({\n\t\t\t\t\t\"sPaginationType\": \"bootstrap\",\n\t\t\t\t\t\"sDom\": \"<'row-fluid'<'span5'T><'span3'l><'span4'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sLengthMenu\": \"_MENU_ per page\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/tables_responsive.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tables_responsive.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* FooTable */\n\tif ($('.footable').length)\n\t\t$('.footable').footable();\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/themer.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * themer.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\nfunction themerUpdateColors(primary)\n{\n\tupdatePrimaryColor(primary, true, true);\n}\n\n//Converts an RGB object to a hex string\nfunction rgb2hex(rgb) \n{\n\tvar hex = [\n\t\trgb.r.toString(16),\n\t\trgb.g.toString(16),\n\t\trgb.b.toString(16)\n\t];\n\t$.each(hex, function(nr, val) {\n\t\tif (val.length === 1) hex[nr] = '0' + val;\n\t});\n\treturn '#' + hex.join('');\n}\n\n// converts a string to RGB object\nfunction rgbString2obj(string)\n{\n\tvar parts = string.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n\tvar rgbObj = { r: Number(parts[1]), g: Number(parts[2]), b: Number(parts[3]) };\n\treturn rgbObj;\n}\n\nfunction updatePrimaryColor(hex, attach, charts)\n{\n\tthemerPrimaryColor = hex;\n\t$('#themer-primary-cp').val(themerPrimaryColor);\n\t$.minicolors.refresh();\n\t\n\tif (attach === true)\n\t\tattachStylesheet();\n\t\n\tif (charts === true)\n\t\tupdateCharts();\n\t\n\tif (themerPrimaryColor != themerThemes[themerSelectedTheme].primaryColor)\n\t\tthemerCustom[themerSelectedTheme].primaryColor = themerPrimaryColor;\n\telse\n\t\tthemerCustom[themerSelectedTheme].primaryColor = null;\n\t\n\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n\t\n\ttoggleGetCode();\n}\n\nfunction toggleGetCode()\n{\n\tvar tcs = themerCustom[themerSelectedTheme];\n\t\n\tif (themerSelectedTheme != 0 || (themerSelectedTheme == 0 && tcs.primaryColor != null))\n\t{\n\t\tif ($('#themer-getcode').is(':hidden')) $('#themer-getcode').show();\n\t}\n\telse\n\t{\n\t\tif ($('#themer-getcode').is(':visible')) $('#themer-getcode').hide();\n\t}\n}\n\nvar themerAdvanced = $.cookie('themerAdvanced') != null ? $.cookie('themerAdvanced') == true : false;\nfunction themerAdvancedToggle()\n{\n\tvar cp = [$('#themer-primary-cp'), $('#themer-header-cp'), $('#themer-menu-cp')];\n\t\n\tif ($('#themer-advanced-toggle').is(':checked'))\n\t{\n\t\t$('#themer').addClass('themer-advanced');\n\t\t$.each(cp, function(k,v){ v.attr('data-textfield', true).removeClass('minicolors-hidden'); });\n\t}\n\telse\n\t{\n\t\t$('#themer').removeClass('themer-advanced');\n\t\t$.each(cp, function(k,v){ v.attr('data-textfield', false).addClass('minicolors-hidden'); });\n\t}\n}\n\nfunction generateCSS(basePath)\n{\n\tif(!basePath)\n\t\tbasePath = \"\";\n\t\t\n\tvar css =\n\t\t\"@primaryColor: \" + themerPrimaryColor + \";\\n\" +\n\t\t\"#gradient {\\n\" +\n\t\t\".vertical(@startColor: #555, @endColor: #333) {\\n\" +\n\t\t\"   background-color: mix(@startColor, @endColor, 60%);\\n\" +\n\t\t\"   background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\\n\" +\n\t\t\"   background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\\n\" +\n\t\t\"   background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\\n\" +\n\t\t\"   background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\\n\" +\n\t\t\"   background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\\n\" +\n\t\t\"   background-repeat: repeat-x;\\n\" +\n\t\t\"   filter: e(%(\\\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\\\",argb(@startColor),argb(@endColor))); // IE9 and down\\n\" +\n\t\t\"}\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryBgColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryGradientTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryTextColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tcolor: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\" +\n\t\t\n\t\tprimaryBorderColorTargets.join(\", \\n\") + \"\\n\" + \n\t\t\"{\\n\" +\n\t\t\"\tborder-color: @primaryColor;\\n\"+\n\t\t\"}\\n\\n\";\n\t\t\n\tcss += \n\t\t\".table-primary tbody td\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: lighten(@primaryColor, 50%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".table-primary tbody tr.selected td, .table-primary tbody tr.selectable:hover td\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: lighten(@primaryColor, 40%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".table-primary.table-bordered tbody td, .table-primary, .pagination ul > .disabled > a, .pagination ul > .disabled > span\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-color: lighten(@primaryColor, 50%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// header special\n\t\t\"@headerBorder0: darken(@primaryColor, 20%);\\n\" +\n\t\t\"@headerBorder1: darken(@primaryColor, 15%);\\n\" +\n\t\t\"@headerBorder2: lighten(@primaryColor, 20%);\\n\" +\n\t\t\".navbar.main {\\n\" +\n\t\t\"\tborder-bottom-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li:first-child {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs, .navbar.main .topnav > li.search {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder2;\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// rtl\n\t\t\"html.rtl .navbar.main .topnav.pull-right > li:last-child {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.rtl .navbar.main .topnav {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.rtl .navbar.main .topnav > li.glyphs {\\n\" +\n\t\t\"\tborder-left-color: @headerBorder2;\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li:last-child.glyphs, .navbar.main .topnav > li:last-child.search {\\n\" +\n\t\t\"\tbox-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-moz-box-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li:last-child {\\n\" +\n\t\t\"\tborder-right-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\\n\" + \n\t\t\".navbar.main .topnav > li.glyphs ul {\\n\" +\n\t\t\"\tbackground: @headerBorder1;\\n\" +\n\t\t\"\tborder-color: @headerBorder0;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover {\\n\" +\n\t\t\"\t&:last-child { border-color: @headerBorder0; }\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover, \\n\" +\n\t\t\".navbar.main .topnav > li.search form {\\n\" +\n\t\t\"\tbackground: @headerBorder2;\\n\" +\n\t\t\"\tborder-color: @headerBorder0;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\\n\" +\n\t\t\"\tcolor: @headerBorder2 !important;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li.active .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\\n\" +\n\t\t\".navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\\n\" +\n\t\t\"\tcolor: #fff !important;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\"html.front .navbar.main .secondary {\\n\" +\n\t\t\"\tbackground: @headerBorder0;\\n\" +\n\t\t\"\tborder-color: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.search form button i:before, .navbar.main .topnav > li.search form input {\\n\" +\n\t\t\"\tcolor: @headerBorder1;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\".navbar.main .topnav > li.search form input {\\n\" +\n\t\t\"\t&::-webkit-input-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&:-moz-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&::-moz-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"\t&:-ms-input-placeholder { color: @headerBorder1; }\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border left color\n\t\t\".bwizard-steps li.active:after, .sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-left-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border right color\n\t\t\".sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-right-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border top color\n\t\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-top-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// border bottom color\n\t\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tborder-bottom-color: @primaryColor;\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// active primary button\n\t\t\".btn-primary:active, .btn-primary.active\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: darken(@primaryColor, 20%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// hover/focus primary button\n\t\t\".btn-primary:hover, .btn-primary:focus\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: darken(@primaryColor, 5%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t// guide tour\n\t\t\".tlypageguide_shadow:after\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\tbackground-color: fade(@primaryColor, 20%);\\n\" +\n\t\t\"}\\n\\n\" +\n\t\t\n\t\t\".widget .widget-body.list.list-2 ul li\\n\" +\n\t\t\"{\\n\" +\n\t\t\"\t&.active { border-color: lighten(@primaryColor, 20%); }\\n\" +\n\t\t\"\ta { color: lighten(@primaryColor, 20%); i:before { background: lighten(@primaryColor, 50%); color: lighten(@primaryColor, 10%); border-color: lighten(@primaryColor, 20%); } }\\n\" +\n\t\t\"}\";\n\t\t\n\treturn css;\n}\n\nfunction attachStylesheet(basePath, reset)\n{\n\t/*if(!$(\"#themer-stylesheet\").length) $('body').append('<div id=\"themer-stylesheet\"></div>');\n\t$(\"#themer-stylesheet\").html($('<style type=\"text/less\">' + generateCSS(basePath) + '</style>'));*/\n\t\n\tif (themerSelectedTheme == 0)\n\t{\n\t\t$('#themer-stylesheet').empty();\n\t\tless.refreshStyles();\n\t\tif (reset === true) return false;\n\t}\n\t\n\tif(!$(\"#themer-stylesheet\").length) \n\t\t$('head').append('<style id=\"themer-stylesheet\"></style>');\n\t\n\tvar code = generateCSS(basePath);\n\tlatestCode.less = code;\n\t\n\t$('#themer-stylesheet').attr('type', 'text/x-less').text(code);\n\tless.refreshStyles();\n}\n\nfunction updateCharts()\n{\n\tif (typeof primaryColor != 'undefined')\n\t\tprimaryColor = themerPrimaryColor;\n\t\t\n\tif (typeof genSparklines != 'undefined') \n\t\tgenSparklines();\n\t\n\tif (typeof charts == 'undefined')\n\t\treturn false;\n\t\n\t// apply styling\n\tcharts.utility.chartColors.shift();\n\tcharts.utility.chartColors.unshift(themerPrimaryColor);\n\t\n\tif (typeof charts.website_traffic_graph != 'undefined' && charts.website_traffic_graph.plot != null)\n\t\tcharts.website_traffic_graph.init();\n\t\n\tif (typeof charts.website_traffic_overview != 'undefined' && charts.website_traffic_overview.plot != null)\n\t\tcharts.website_traffic_overview.init();\n\t\n\tif (typeof charts.traffic_sources_pie != 'undefined' && charts.traffic_sources_pie.plot != null)\n\t\tcharts.traffic_sources_pie.init();\n\t\n\tif (typeof charts.chart_simple != 'undefined' && charts.chart_simple.plot != null)\n\t\tcharts.chart_simple.init();\n\t\n\tif (typeof charts.chart_lines_fill_nopoints != 'undefined' && charts.chart_lines_fill_nopoints.plot != null)\n\t\tcharts.chart_lines_fill_nopoints.init();\n\t\n\tif (typeof charts.chart_ordered_bars != 'undefined' && charts.chart_ordered_bars.plot != null)\n\t\tcharts.chart_ordered_bars.init();\n\t\n\tif (typeof charts.chart_donut != 'undefined' && charts.chart_donut.plot != null)\n\t\tcharts.chart_donut.init();\n\t\n\tif (typeof charts.chart_stacked_bars != 'undefined' && charts.chart_stacked_bars.plot != null)\n\t\tcharts.chart_stacked_bars.init();\n\t\n\tif (typeof charts.chart_pie != 'undefined' && charts.chart_pie.plot != null)\n\t\tcharts.chart_pie.init();\n\t\n\tif (typeof charts.chart_horizontal_bars != 'undefined' && charts.chart_horizontal_bars.plot != null)\n\t\tcharts.chart_horizontal_bars.init();\n\t\n\tif (typeof charts.chart_live != 'undefined' && charts.chart_live.plot != null)\n\t\tcharts.chart_live.init();\n}\n\nfunction updateTheme(themeSelect)\n{\n\tif ($('#themer-theme').val() != themeSelect) $('#themer-theme').val(themeSelect);\n\t\n\tthemerSelectedTheme = themeSelect; // index\n\t$.cookie('themerSelectedTheme', themerSelectedTheme);\n\t\n\tvar uPrimaryColor = themerCustom[themeSelect].primaryColor != null ? themerCustom[themeSelect].primaryColor : themerThemes[themeSelect].primaryColor;\n\t\n\tupdatePrimaryColor(uPrimaryColor, false, true);\n\t\n\t// gmaps colored support\n\tif (typeof map_options != 'undefined')\n\t\tmap_options.styles[0].stylers[1].hue = themerPrimaryColor;\n\t\n\tif ($('#contact_gmap').size() > 0 && typeof google != 'undefined')\n    {\n    \tmap_options.zoom = 13;\n    \tinitializeMap('contact_gmap', map_options);\n    }\n\t\n\tif (themeSelect == 0 && themerCustom[themeSelect].primaryColor == null)\n\t\tattachStylesheet('', true); // reset\n\telse\n\t\tattachStylesheet();\n}\n\nfunction themerGetCode(less)\n{\n\tvar tlc;\n\tif (less === true)\n\t\ttlc = latestCode.less;\n\telse\n\t\ttlc = latestCode.css();\n\t\t\n\t//bootbox.alert($('<textarea class=\"input-block-level\" rows=\"10\"></textarea>').val(tlc));\n\tbootbox.alert($('<pre class=\"prettyprint lang-html\" id=\"themer-pretty\"></pre>').html(tlc));\n}\n\nvar primaryGradientTargets = \n[\n \t\"#menu .slim-scroll > ul.menu-0 > li.active > a\",\n \t\"#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover\",\n \t\"#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover\",\n \t\".widget-stats.primary\",\n \t\".btn-primary\",\n \t\".tabsbar:not(.tabsbar-2) ul li.active a\"\n];\n\nvar primaryBgColorTargets = \n[\n\t\".btn-primary\",\n\t\"#flotTip\",\n\t\".btn-group.open .btn-primary.dropdown-toggle, .btn-primary.disabled, .btn-primary[disabled], .btn-primary:hover\",\n\t\".label-primary\",\n\t\".table-primary thead th\",\n\t\".pagination ul > .active > a, .pagination ul > .active > span\",\n\t\".gallery ul li .thumb\",\n\t\".widget-activity ul.filters li.glyphicons.active i\",\n\t\".ui-slider-wrap .slider-primary .ui-slider-range\",\n\t\".accordion-heading .accordion-toggle\",\n\t\".ui-widget-header\",\n\t\".ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active\",\n\t\".fc-event-skin\",\n\t\"#external-events li\",\n\t\".notyfy_wrapper.notyfy_primary\",\n\t\".progress.progress-primary .bar\",\n\t\".alert.alert-primary\",\n\t\".pagination ul > li > a:hover, .pagination ul > li.primary > a\",\n\t\".gritter-item-wrapper.gritter-primary .gritter-item\",\n\t\"#content-notification .notyfy_wrapper.notyfy_primary\",\n\t\".ribbon-wrapper .ribbon.primary\",\n\t\".label.label-primary\",\n\t\".widget-stats.primary, .widget-stats.primary:hover\",\n\t\".tabsbar:not(.tabsbar-2) ul li.active a\",\n\t\".widget.widget-wizard-pills .widget-head ul li.primary a\",\n\t\".bwizard-steps li.active\",\n\t\".sliderContainer .ui-rangeSlider-bar\",\n\t\"#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active\",\n\t\"#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close\",\n\t\"#tlyPageGuideWrapper #tlyPageGuideMessages span\",\n\t\".tabsbar.tabsbar-2.active-fill ul li.active a\",\n\t\".shop-client-products.list ul li a .glyphicons i\",\n\t\".social-large:not(.social-large-2) a.active, .social-large:not(.social-large-2) a:hover\",\n\t\"#landing_1 .banner-1 .carousel-indicators li.active\",\n\t\".navbar.main\",\n\t\".navbar.main .btn-navbar, .navbar.main .btn-navbar:hover\",\n\t\".nav-timeline > li.active > a, .nav-timeline > li > a:hover, .nav-timeline > li.active > a:hover\",\n\t\".layout-timeline ul.timeline > li.active .type:before, .layout-timeline ul.timeline > li.active .type:after\",\n\t\".layout-timeline ul.timeline > li.active:before\",\n\t\".carousel.carousel-1 .carousel-indicators li.active\",\n\t\".widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active\",\n\t\".widget.widget-body-primary > .widget-body\"\n];\nvar primaryTextColorTargets = \n[\n \t\"a, p a\",\n\t\".widget .widget-body.list ul li .count\",\n\t\".widget-stats .txt strong\",\n\t\".glyphicons.single i:before\",\n\t\".glyphicons.single\",\n\t\".table-primary tbody td.important\",\n\t\".widget.widget-3 .widget-body.large.cancellations span span:first-child\",\n\t\".widget .widget-footer a:hover, .widget .widget-footer a:hover i:before\",\n\t\".widget.widget-3 .widget-footer a:hover, .widget.widget-3 .widget-footer a:hover i:before\",\n\t\"blockquote small\",\n\t\".tabsbar.tabsbar-2 ul li.active a\",\n\t\".tabsbar.tabsbar-2 ul li.active a i:before\",\n\t\".glyphicons.primary i:before, .glyphicons.standard:not(.disabled):hover i:before\",\n\t\".menubar.links.primary ul li a\",\n\t\".text-primary\",\n\t\"#docs_icons .glyphicons i:before\",\n\t\".widget.widget-tabs-double-2 .widget-head ul li.active a i:before, .widget.widget-tabs-double-2 .widget-head ul li.active a\",\n\t\".shop-client-products.product-details .form-horizontal .price\",\n\t\".widget-activity ul.list li:hover .activity-icon i:before, .widget-activity ul.list li.highlight .activity-icon i:before\",\n\t\"#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before\",\n\t\"#landing_1 .banner .banner-wrapper.banner-1 p a\",\n\t\"#landing_1 .banner .banner-wrapper.banner-1 h3\",\n\t\"#landing_2 .banner .banner-wrapper.banner-1 p a, #landing_2 .banner .banner-wrapper.banner-1 .buy a\",\n\t\"#landing_2 .banner .banner-wrapper.banner-1 h3\",\n\t\"#landing_1 .banner-1 .carousel-caption a\",\n\t\"div.glyphicons.glyphicon-primary i:before\",\n\t\".layout-timeline ul.timeline > li.active .type\",\n\t\".layout-timeline ul.timeline > li.active .type i:before\",\n\t\".social-large.social-large-2 a.active i:before, .social-large.social-large-2 a:hover i:before\",\n\t\".social-large.social-large-2 a.active, .social-large.social-large-2 a:hover\",\n\t\"html.front #footer a:not(.btn)\"\n];\nvar primaryBorderColorTargets = \n[\n\t\".btn-primary\",\n\t\".ui-slider-wrap .slider-primary .ui-slider-handle\",\n\t\"#flotTip\",\n\t\".widget.widget-2.primary .widget-head\",\n\t\".widget .widget-body.list.list-2 ul li.active a i:before\",\n\t\".table-primary thead th\",\n\t\".pagination ul > .active > a, .pagination ul > .active > span\",\n\t\".widget.widget-4 .widget-head .heading\",\n\t\".ui-widget-header\",\n\t\".fc-event-skin\",\n\t\".alert.alert-primary\",\n\t\".pagination ul > li > a:hover, .pagination ul > li.primary > a\",\n\t\".widget-stats.primary\",\n\t\"#menu .slim-scroll > ul.menu-0 > li.active > a\",\n\t\".widget-chat .media .media-body\",\n\t\".widget-chat .media .media-body.right\",\n\t\"#menu .slim-scroll > ul.menu-0 > li.active > a, #menu > ul.menu-0 > li.active > a\"\n];\n\n/*\n * Persistent Selected Theme\n */\nvar themerSelectedTheme = $.cookie('themerSelectedTheme') != null ? $.cookie('themerSelectedTheme') : 0;\n\n/*\n * Holds the latest CSS/LESS\n */\nvar latestCode = {\n\tcss: function(){ return $('#themer-stylesheet').text(); },\n\tless: null\n};\n\nvar themerThemes = [\n\t{\n\t\tname: \"Default\",\n\t\tprimaryColor: primaryColor,\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Brown\",\n\t\tprimaryColor: \"#ba5d32\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Purple-Gray\",\n\t\tprimaryColor: \"#86618f\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Purple-Wine\",\n\t\tprimaryColor: \"#b94b6f\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Blue-Gray\",\n\t\tprimaryColor: \"#496cad\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Green Army\",\n\t\tprimaryColor: \"#6f8745\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Black & White\",\n\t\tprimaryColor: \"#575757\",\n\t\tvisible: true\n\t},\n\t{\n\t\tname: \"Army\",\n\t\tprimaryColor: \"#7a7a3a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Evil Army\",\n\t\tprimaryColor: \"#567a3a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Forest\",\n\t\tprimaryColor: \"#947131\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Cold Blue\",\n\t\tprimaryColor: \"#676d8a\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Warm Blue\",\n\t\tprimaryColor: \"#cc5470\",\n\t\tvisible: false\n\t},\n\t{\n\t\tname: \"Experiment #2\",\n\t\tprimaryColor: \"#438080\",\n\t\tvisible: false\n\t}\n];\n\n/*\n * Persistent Custom Theme Colors\n */\nvar themerCustomDefault = [];\n$.each(themerThemes, function(k,v) { themerCustomDefault[k] = { primaryColor: null }; });\nvar themerCustom = $.cookie('themerCustom') != null ? $.parseJSON($.cookie('themerCustom')) : themerCustomDefault;\n\nif (themerThemes.length != themerCustom.length)\n{\n\t$.each(themerThemes, function(k,v){ if (typeof themerCustom[k] == 'undefined') themerCustom[k] = v; });\n\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n}\n\n$(function()\n{\n\tif ($('#themer').length)\n\t{\n\t\tvar themerOpened = $.cookie('themerOpened') ? $.cookie('themerOpened') : 0;\n\t\t\n\t\t$('#themer')\n\t\t\t.on('shown', function(){ $.cookie('themerOpened', 1); })\n\t\t\t.on('hidden', function(){ $.cookie('themerOpened', 0); });\n\t\t\n\t\t$('#themer .close2').on('click', function(){\n\t\t\t$('#themer').collapse('hide');\n\t\t});\n\t\t\n\t\tif (themerOpened == 1)\n\t\t\t$('#themer').collapse('show');\n\t\t\n\t\t$(\"#themer-primary-cp\")\n\t\t\t.attr('data-default', themerPrimaryColor)\n\t\t\t.on('change', function(){\n\t\t\t\tvar input = $(this),\n\t\t\t\thex = input.val();\n\t\t\t\tif (hex) updatePrimaryColor(hex, true, true);\n\t\t\t});\n\t\t\n\t\tvar themeSelect = $('#themer-theme');\n\t\t$.each(themerThemes, function( i, p ) {\n\t\t\tif (p.visible === true)\n\t\t\t{\n\t\t\t\tvar option = $(\"<option></option>\").text(p.name).val(i);\n\t\t\t\tthemeSelect.append(option);\n\t\t\t}\n\t\t});\n\t\tthemeSelect.on('change', function(e) \n\t\t{\n\t\t\te.preventDefault();\n\t\t\tupdateTheme(themeSelect.val());\n\t\t});\n\t\t\n\t\t$('#themer-getcode-less').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tthemerGetCode(true);\n\t\t});\n\t\t\n\t\t$('#themer-getcode-css').click(function(e){\n\t\t\te.preventDefault();\n\t\t\tthemerGetCode();\n\t\t});\n\t\t\n\t\t$('#themer-custom-reset').click(function()\n\t\t{\n\t\t\tthemerCustom[themerSelectedTheme].primaryColor = null;\n\t\t\t\n\t\t\t$.cookie('themerCustom', JSON.stringify(themerCustom));\n\t\t\tupdateTheme(themerSelectedTheme);\n\t\t});\n\t\t\n\t\t$('#themer-advanced-toggle').on('change', function()\n\t\t{\n\t\t\t$.cookie('themerAdvanced', $(this).is(':checked') ? \"1\" : \"0\");\n\t\t\tthemerAdvancedToggle();\n\t\t});\n\t\t\n\t\tif (themerAdvanced)\n\t\t\t$('#themer-advanced-toggle').prop('checked', true).trigger('change');\n\t\t\n\t\tupdateTheme(themerSelectedTheme);\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/tour_demo.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * tour_demo.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\tif (!$('#tlyPageGuide').length)\n\t\treturn false;\n\t\n\ttl.pg.init({\n\t\tcustom_open_button: '#tour-demo-start'\n\t});\n\t\n\tsetTimeout(function(){\n\t\t$('#tour-demo-start').click();\n\t}, 1000);\n\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/twitter.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * twitter.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function() {\t\t\n\n\tJQTWEET = {\n\n\t\t\t// Set twitter hash/user, number of tweets & id/class to append tweets\n\t\t\t// You need to clear tweet-date.txt before toggle between hash and user\n\t\t\t// for multiple hashtags, you can separate the hashtag with OR, eg:\n\t\t\t// hash: '%23jquery OR %23css'\t\t\t    \n\t\t\t//search: '%23heroes2013', //leave this blank if you want to show user's tweet\n\t\t\tsearch: '', //leave this blank if you want to show user's tweet\n\t\t    user: 'quenesstestacc', //username\n\t\t\tnumTweets: 18, //number of tweets\n\t\t\tappendTo: '.jstwitter',\n\t\t\tuseGridalicious: false,\n\t\t\ttemplate: '<div class=\"item\">{IMG}<div class=\"tweet-wrapper\"><span class=\"text\">{TEXT}</span>\\\n\t\t\t\t<span class=\"time\"><a href=\"{URL}\" target=\"_blank\">{AGO}</a></span>\\\n\t\t\t\tby <span class=\"user\">{USER}</span></div></div>',\n\n\t\t\t// core function of jqtweet\n\t\t\t// https://dev.twitter.com/docs/using-search\n\t\t\tloadTweets: function() {\n\n\t\t\t\tvar request;\n\n\t\t\t\t// different JSON request {hash|user}\n\t\t\t\tif (JQTWEET.search) {\n\t\t\t\t\trequest = {\n\t\t\t\t\t\tq: JQTWEET.search,\n\t\t\t\t\t\tcount: JQTWEET.numTweets,\n\t\t\t\t\t\tapi: 'search_tweets'\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trequest = {\n\t\t\t\t\t\tq: JQTWEET.user,\n\t\t\t\t\t\tcount: JQTWEET.numTweets,\n\t\t\t\t\t\tapi: 'statuses_userTimeline'\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: basePath + 'ajax.php?section=twitter',\n\t\t\t\t\ttype: 'POST',\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tdata: request,\n\t\t\t\t\tsuccess: function(data, textStatus, xhr) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(JQTWEET.appendTo).empty();\n\n\t\t\t\t\t\tif (data.httpstatus == 200) {\n\t\t\t\t\t\t\tif (JQTWEET.search) data = data.statuses;\n\n\t\t\t\t\t\t\tvar text, name, img;\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t// append tweets into page\n\t\t\t\t\t\t\t\tfor (var i = 0; i < JQTWEET.numTweets; i++) \n\t\t\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\timg = '';\n\t\t\t\t\t\t\t\t\turl = 'http://twitter.com/' + data[i].user.screen_name + '/status/' + data[i].id_str;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif (data[i].entities['media']) {\n\t\t\t\t\t\t\t\t\t\t\timg = '<a href=\"' + url + '\" target=\"_blank\" class=\"thumb\"><img src=\"' + data[i].entities['media'][0].media_url + '\" /></a>';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} catch (e) {  \n\t\t\t\t\t\t\t\t\t\t//no media\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t$(JQTWEET.appendTo).append( JQTWEET.template.replace('{TEXT}', JQTWEET.ify.clean(data[i].text) )\n\t\t\t\t\t\t\t\t\t\t.replace('{USER}', data[i].user.screen_name)\n\t\t\t\t\t\t\t\t\t\t.replace('{IMG}', img)                                \n\t\t\t\t\t\t\t\t\t\t.replace('{AGO}', JQTWEET.timeAgo(data[i].created_at) )\n\t\t\t\t\t\t\t\t\t\t.replace('{URL}', url )\t\t\t                            \n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$(JQTWEET.appendTo).each(function(index)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar $that = $(this);\n\t\t\t\t\t\t\t\t\tif (JQTWEET.useGridalicious || ($(this).attr('data-gridalicious') && $(this).attr('data-gridalicious') !== \"false\")) \n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$(this).find('.item').wrap('<div class=\"widget\"><div class=\"widget-body\"></div></div>');\n\t\t\t\t\t\t\t\t\t\t$(this).gridalicious({\n\t\t\t\t\t\t\t\t\t\t\tgutter: 13, \n\t\t\t\t\t\t\t\t\t\t\twidth: $that.attr('data-gridalicious-width') ? parseInt($that.attr('data-gridalicious-width')) : 200,\n\t\t\t\t\t\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t\t\t\t\t\t\tselector: '.widget'\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ((!JQTWEET.useGridalicious && !$(this).attr('data-gridalicious')) || $(this).attr('data-gridalicious') == \"false\")\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif ($(this).attr('data-type') == 'slide')\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif ($(this).find('.item').size() > 1)\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$(this).find('.item').hide();\n\t\t\t\t\t\t\t    \t            $(this).find('.item:first').show().addClass('active');\n\t\t\t\t\t\t\t    \t            var $that = $(this);\n\t\t\t\t\t\t\t    \t            \n\t\t\t\t\t\t\t    \t            setInterval(function()\n\t\t\t\t\t\t\t    \t\t\t \t{\n\t\t\t\t\t\t\t    \t            \tif ($that.find('.item').length <= 1)\n\t\t\t\t\t\t\t                \t\t\treturn;\n\t\t\t\t\t\t\t                \t\t\n\t\t\t\t\t\t\t                \t\tvar active_index = $that.find('.item.active').index(JQTWEET.appendTo + ':eq('+index+') .item');\n\t\t\t\t\t\t\t                \t\tvar next_index = $that.find('.item').eq(active_index+1).index(JQTWEET.appendTo + ':eq('+index+') .item');\n\t\t\t\t\t\t\t\t                \tif (next_index == -1) active_index = -1;\n\t\t\t\t\t\t\t\t                \t\n\t\t\t\t\t\t\t\t                \t$that.find('.item.active').hide().removeClass('active');\n\t\t\t\t\t\t\t\t                \t$that.find('.item').eq(active_index+1).show().addClass('active');\n\t\t\t\t\t\t    \t\t\t \t\t}, 3000);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ($(this).attr('data-images') === 'false')\n\t\t\t\t\t\t\t\t\t\t$(this).find('.thumb').remove();\n\t\t\t\t\t\t\t\t});\t\n\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t//item is less than item count\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else alert('no data returned');\n\n\t\t\t\t\t}   \n\n\t\t\t\t});\n\n\t\t\t}, \n\n\n\t\t\t/**\n\t\t\t * relative time calculator FROM TWITTER\n\t\t\t * @param {string} twitter date string returned from Twitter API\n\t\t\t * @return {string} relative time like \"2 minutes ago\"\n\t\t\t */\n\t\t\ttimeAgo: function(dateString) {\n\t\t\t\tvar rightNow = new Date();\n\t\t\t\tvar then = new Date(dateString);\n\n\t\t\t\tif ($.browser.msie) {\n\t\t\t\t\t// IE can't parse these crazy Ruby dates\n\t\t\t\t\tthen = Date.parse(dateString.replace(/( \\+)/, ' UTC$1'));\n\t\t\t\t}\n\n\t\t\t\tvar diff = rightNow - then;\n\n\t\t\t\tvar second = 1000,\n\t\t\t\tminute = second * 60,\n\t\t\t\thour = minute * 60,\n\t\t\t\tday = hour * 24,\n\t\t\t\tweek = day * 7;\n\n\t\t\t\tif (isNaN(diff) || diff < 0) {\n\t\t\t\t\treturn \"\"; // return blank string if unknown\n\t\t\t\t}\n\n\t\t\t\tif (diff < second * 2) {\n\t\t\t\t\t// within 2 seconds\n\t\t\t\t\treturn \"right now\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < minute) {\n\t\t\t\t\treturn Math.floor(diff / second) + \" seconds ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < minute * 2) {\n\t\t\t\t\treturn \"about 1 minute ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < hour) {\n\t\t\t\t\treturn Math.floor(diff / minute) + \" minutes ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < hour * 2) {\n\t\t\t\t\treturn \"about 1 hour ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < day) {\n\t\t\t\t\treturn  Math.floor(diff / hour) + \" hours ago\";\n\t\t\t\t}\n\n\t\t\t\tif (diff > day && diff < day * 2) {\n\t\t\t\t\treturn \"yesterday\";\n\t\t\t\t}\n\n\t\t\t\tif (diff < day * 365) {\n\t\t\t\t\treturn Math.floor(diff / day) + \" days ago\";\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\treturn \"over a year ago\";\n\t\t\t\t}\n\t\t\t}, // timeAgo()\n\n\n\t\t\t/**\n\t\t\t * The Twitalinkahashifyer!\n\t\t\t * http://www.dustindiaz.com/basement/ify.html\n\t\t\t * Eg:\n\t\t\t * ify.clean('your tweet text');\n\t\t\t */\n\t\t\tify:  {\n\t\t\t\tlink: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\b(((https*\\:\\/\\/)|www\\.)[^\\\"\\']+?)(([!?,.\\)]+)?(\\s|$))/g, function(link, m1, m2, m3, m4) {\n\t\t\t\t\t\tvar http = m2.match(/w/) ? 'http://' : '';\n\t\t\t\t\t\treturn '<a class=\"twtr-hyperlink\" target=\"_blank\" href=\"' + http + m1 + '\">' + ((m1.length > 25) ? m1.substr(0, 24) + '...' : m1) + '</a>' + m4;\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tat: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\B[@＠]([a-zA-Z0-9_]{1,20})/g, function(m, username) {\n\t\t\t\t\t\treturn '<a target=\"_blank\" class=\"twtr-atreply\" href=\"http://twitter.com/intent/user?screen_name=' + username + '\">@' + username + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tlist: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/\\B[@＠]([a-zA-Z0-9_]{1,20}\\/\\w+)/g, function(m, userlist) {\n\t\t\t\t\t\treturn '<a target=\"_blank\" class=\"twtr-atreply\" href=\"http://twitter.com/' + userlist + '\">@' + userlist + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\thash: function(tweet) {\n\t\t\t\t\treturn tweet.replace(/(^|\\s+)#(\\w+)/gi, function(m, before, hash) {\n\t\t\t\t\t\treturn before + '<a target=\"_blank\" class=\"twtr-hashtag\" href=\"http://twitter.com/search?q=%23' + hash + '\">#' + hash + '</a>';\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tclean: function(tweet) {\n\t\t\t\t\treturn this.hash(this.at(this.list(this.link(tweet))));\n\t\t\t\t}\n\t\t\t} // ify\n\n\n\t};\t\t\n\n});\n\n$(function () {\n    // start jqtweet!\n    JQTWEET.loadTweets();\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/ui.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * ui.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t/* \n\t * JQuery Pagination Examples \n\t */\n\t\n\t$('.jquery-bootpag-pagination').bootpag({\n\t   total: 23,\n\t   page: 1,\n\t   maxVisible: 10 \n\t}).on('page', function(event, num){\n\t    $(\".jquery-bootpag-content\").html(\"Page \" + num); // or some ajax content loading ...\n\t});\n\t\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/demo/widgets.js",
    "content": "/* ==========================================================\n * QuickAdmin v1.3.1\n * widgets.js\n * \n * http://www.mosaicpro.biz\n * Copyright MosaicPro\n *\n * Built exclusively for sale @Envato Marketplaces\n * ========================================================== */ \n\n$(function()\n{\n\t$('#widget-progress-bar .bar').width(\"50%\");\n\tsetInterval(function(){\n\t\tvar w = mt_rand(30, 100);\n\t\t$('#widget-progress-bar .steps-percent').html(w + \"%\");\n\t\t$('#widget-progress-bar .bar').width(w + \"%\");\n\t}, 2000);\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/Makefile",
    "content": "dist: all\n\t@echo Done\n\nall:\n\t@echo Compiling coffee script\n\tcoffee -c *.coffee\n\nwatch:\n\t@echo Watch coffee script files\n\tcoffee -w *.coffee\n\n.PHONY: dist all watch"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/Readme.md",
    "content": "easy pie chart\n==============\n\nEasy pie chart is a jQuery plugin that uses the canvas element to render simple pie charts for single values.\nThese charts are highly customizable, very easy to implement and **scale to the resolution of the display of the client to provide sharp charts even on retina displays**.\n\n![](https://github.com/rendro/easy-pie-chart/raw/master/img/easy-pie-chart.png)\n\nGet started\n-----------\n\nTo use the easy pie chart plugin you need to load the current version of jQuery (testet with 1.7.2) and the source (css+js) of the plugin.\nJust add the following lines to the `head` of your website:\n\n    <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>\n    <script type=\"text/javascript\" src=\"/path/to/jquery.easy-pie-chart.js\"></script>\n\n    <link rel=\"stylesheet\"type=\"text/css\" href=\"/path/to/jquery.easy-pie-chart.css\">\n\nThe second step is to add a element to your site to represent chart and add the `data-percent` attribute with the percent number the pie chart should have:\n\n    <div class=\"chart\" data-percent=\"73\">73%</div>\n\nFinally you have to initialize the plugin with your desired configuration:\n\n    <script type=\"text/javascript\">\n    $(function() {\n        $('.chart').easyPieChart({\n            //your configuration goes here\n        });\n    });\n    </script>\n\nConfiguration parameter\n-----------------------\n\nYou can pass a set of these options to the initialize function to set a custom behaviour and look for the plugin.\n\n<table>\n    <tr>\n        <th>Property (Type)</th>\n        <th>Default</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td><strong>barColor</strong></td>\n        <td>#ef1e25</td>\n        <td>The color of the curcular bar. You can pass either a css valid color string like rgb, rgba hex or string colors. But you can also pass a function that accepts the current percentage as a value to return a dynamically generated color.</td>\n    </tr>\n    <tr>\n        <td><strong>trackColor</strong></td>\n        <td>#f2f2f2</td>\n        <td>The color of the track for the bar, false to disable rendering.</td>\n    </tr>\n    <tr>\n        <td><strong>scaleColor</strong></td>\n        <td>#dfe0e0</td>\n        <td>The color of the scale lines, false to disable rendering.</td>\n    </tr>\n    <tr>\n        <td><strong>lineCap</strong></td>\n        <td>round</td>\n        <td>Defines how the ending of the bar line looks like. Possible values are: <code>butt</code>, <code>round</code> and <code>square</code>.</td>\n    </tr>\n    <tr>\n        <td><strong>lineWidth</strong></td>\n        <td>3</td>\n        <td>Width of the bar line in px.</td>\n    </tr>\n    <tr>\n        <td><strong>size</strong></td>\n        <td>110</td>\n        <td>Size of the pie chart in px. It will always be a square.</td>\n    </tr>\n    <tr>\n        <td><strong>animate</strong></td>\n        <td>false</td>\n        <td>Time in milliseconds for a eased animation of the bar growing, or false to deactivate.</td>\n    </tr>\n    <tr>\n        <td><strong>onStart</strong></td>\n        <td>$.noop</td>\n        <td>Callback function that is called at the start of any animation (only if animate is not false).</td>\n    </tr>\n    <tr>\n        <td><strong>onStop</strong></td>\n        <td>$.noop</td>\n        <td>Callback function that is called at the end of any animation (only if animate is not false).</td>\n    </tr>\n</table>\n\n\nPublic plugin methods\n---------------------\n\nIf you want to update the current percentage of the a pie chart, you can call the `update` method. The instance of the plugin is saved in the jQuery-data.\n\n    <script type=\"text/javascript\">\n    $(function() {\n        //create instance\n        $('.chart').easyPieChart({\n            animate: 2000\n        });\n        //update instance after 5 sec\n        setTimeout(function() {\n            $('.chart').data('easyPieChart').update(40);\n        }, 5000);\n    });\n    </script>\n\nCredits\n-------\n\nThanks to [Rafal Bromirski](http://www.paranoida.com/) for making [this dribble shot](http://drbl.in/ezuc) which inspired me and [Philip Thrasher](http://philipthrasher.com/) for his [CoffeeScript jQuery boilerplate](https://github.com/pthrasher/coffee-plate)\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns are not implemented.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // create xmlns\n      if (!doc.namespaces['g_vml_']) {\n        doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                           '#default#VML');\n\n      }\n      if (!doc.namespaces['g_o_']) {\n        doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                           '#default#VML');\n      }\n\n      // Setup default CSS.  Only add one style sheet per document\n      if (!doc.styleSheets['ex_canvas_']) {\n        var ss = doc.createStyleSheet();\n        ss.owningElement.id = 'ex_canvas_';\n        ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n            // default size is 300x150 in Gecko and Opera\n            'text-align:left;width:300px;height:150px}' +\n            'g_vml_\\\\:*{behavior:url(#default#VML)}' +\n            'g_o_\\\\:*{behavior:url(#default#VML)}';\n\n      }\n\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n\n        el.getContext = getContext;\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n      case 'height':\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var dec2hex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.substring(0, 3) == 'rgb') {\n      var start = styleString.indexOf('(', 3);\n      var end = styleString.indexOf(')', start + 1);\n      var guts = styleString.substring(start + 1, end).split(',');\n\n      str = '#';\n      for (var i = 0; i < 3; i++) {\n        str += dec2hex[Number(guts[i])];\n      }\n\n      if (guts.length == 4 && styleString.substr(3, 1) == 'a') {\n        alpha = guts[3];\n      }\n    } else {\n      str = styleString;\n    }\n\n    return {color: str, alpha: alpha};\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\")\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px;\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd',\n                                    vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var lineStr = [];\n    var lineOpen = false;\n    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * this.globalAlpha;\n\n    var W = 10;\n    var H = 10;\n\n    lineStr.push('<g_vml_:shape',\n                 ' filled=\"', !!aFill, '\"',\n                 ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                 ' coordorigin=\"0 0\" coordsize=\"', Z * W, ' ', Z * H, '\"',\n                 ' stroked=\"', !aFill, '\"',\n                 ' path=\"');\n\n    var newSeq = false;\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var i = 0; i < this.currentPath_.length; i++) {\n      var p = this.currentPath_[i];\n      var c;\n\n      switch (p.type) {\n        case 'moveTo':\n          c = p;\n          lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'lineTo':\n          lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'close':\n          lineStr.push(' x ');\n          p = null;\n          break;\n        case 'bezierCurveTo':\n          lineStr.push(' c ',\n                       mr(p.cp1x), ',', mr(p.cp1y), ',',\n                       mr(p.cp2x), ',', mr(p.cp2y), ',',\n                       mr(p.x), ',', mr(p.y));\n          break;\n        case 'at':\n        case 'wa':\n          lineStr.push(' ', p.type, ' ',\n                       mr(p.x - this.arcScaleX_ * p.radius), ',',\n                       mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                       mr(p.x + this.arcScaleX_ * p.radius), ',',\n                       mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                       mr(p.xStart), ',', mr(p.yStart), ' ',\n                       mr(p.xEnd), ',', mr(p.yEnd));\n          break;\n      }\n\n\n      // TODO: Following is broken for curves due to\n      //       move to proper paths.\n\n      // Figure out dimensions so we can do gradient fills\n      // properly\n      if (p) {\n        if (min.x == null || p.x < min.x) {\n          min.x = p.x;\n        }\n        if (max.x == null || p.x > max.x) {\n          max.x = p.x;\n        }\n        if (min.y == null || p.y < min.y) {\n          min.y = p.y;\n        }\n        if (max.y == null || p.y > max.y) {\n          max.y = p.y;\n        }\n      }\n    }\n    lineStr.push(' \">');\n\n    if (!aFill) {\n      var lineWidth = this.lineScale_ * this.lineWidth;\n\n      // VML cannot correctly render a line if the width is less than 1px.\n      // In that case, we dilute the color to make the line look thinner.\n      if (lineWidth < 1) {\n        opacity *= lineWidth;\n      }\n\n      lineStr.push(\n        '<g_vml_:stroke',\n        ' opacity=\"', opacity, '\"',\n        ' joinstyle=\"', this.lineJoin, '\"',\n        ' miterlimit=\"', this.miterLimit, '\"',\n        ' endcap=\"', processLineCap(this.lineCap), '\"',\n        ' weight=\"', lineWidth, 'px\"',\n        ' color=\"', color, '\" />'\n      );\n    } else if (typeof this.fillStyle == 'object') {\n      var fillStyle = this.fillStyle;\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / this.arcScaleX_;\n        var y0 = fillStyle.y0_ / this.arcScaleY_;\n        var x1 = fillStyle.x1_ / this.arcScaleX_;\n        var y1 = fillStyle.y1_ / this.arcScaleY_;\n        var p0 = this.getCoords_(x0, y0);\n        var p1 = this.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        var width  = max.x - min.x;\n        var height = max.y - min.y;\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= this.arcScaleX_ * Z;\n        height /= this.arcScaleY_ * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * this.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * this.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else {\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n\n    lineStr.push('</g_vml_:shape>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  }\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    }\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    copyState(this.aStack_.pop(), this);\n    this.m_ = this.mStack_.pop();\n  };\n\n  function matrixIsFinite(m) {\n    for (var j = 0; j < 3; j++) {\n      for (var k = 0; k < 2; k++) {\n        if (!isFinite(m[j][k]) || isNaN(m[j][k])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function() {\n    return new CanvasPattern_;\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_() {}\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n\n})();\n\n} // if\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/index.html",
    "content": "<!doctype html>\n<html>\n    <head>\n        <meta charset=\"utf-8\">\n        <title>Easy Pie Chart</title>\n        <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>\n        <script type=\"text/javascript\" src=\"http://html5shiv.googlecode.com/svn/trunk/html5.js\"></script>\n        <script type=\"text/javascript\" src=\"excanvas.js\"></script>\n        <script type=\"text/javascript\" src=\"../jquery.easy-pie-chart.js\"></script>\n\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" media=\"screen\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"../jquery.easy-pie-chart.css\" media=\"screen\">\n\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n        <script type=\"text/javascript\">\n            var initPieChart = function() {\n                $('.percentage').easyPieChart({\n                    animate: 1000\n                });\n                $('.percentage-light').easyPieChart({\n                    barColor: function(percent) {\n                        percent /= 100;\n                        return \"rgb(\" + Math.round(255 * (1-percent)) + \", \" + Math.round(255 * percent) + \", 0)\";\n                    },\n                    trackColor: '#666',\n                    scaleColor: false,\n                    lineCap: 'butt',\n                    lineWidth: 15,\n                    animate: 1000\n                });\n\n                $('.updateEasyPieChart').on('click', function(e) {\n                  e.preventDefault();\n                  $('.percentage, .percentage-light').each(function() {\n                    var newValue = Math.round(100*Math.random());\n                    $(this).data('easyPieChart').update(newValue);\n                    $('span', this).text(newValue);\n                  });\n                });\n            };\n        </script>\n    </head>\n    <body onload=\"initPieChart();\">\n        <div class=\"container\">\n            <h1>EASY PIE CHART</h1>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"55\"><span>55</span>%</div>\n                <div class=\"label\">New visits</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"46\"><span>46</span>%</div>\n                <div class=\"label\">Bounce rate</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"92\"><span>92</span>%</div>\n                <div class=\"label\">Server load</div>\n            </div>\n            <div class=\"chart\">\n                <div class=\"percentage\" data-percent=\"84\"><span>752</span>MB</div>\n                <div class=\"label\">Used RAM</div>\n            </div>\n            <div style=\"clear:both;\"></div>\n            <div class=\"dark\">\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"55\"><span>55</span>%</div>\n                    <div class=\"label\">New visits</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"46\"><span>46</span>%</div>\n                    <div class=\"label\">Bounce rate</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"92\"><span>92</span>%</div>\n                    <div class=\"label\">Server load</div>\n                </div>\n                <div class=\"chart\">\n                    <div class=\"percentage-light\" data-percent=\"84\"><span>752</span>MB</div>\n                    <div class=\"label\">Used RAM</div>\n                </div>\n                <div style=\"clear:both;\"></div>\n            </div>\n\n            <p><a href=\"#\" class=\"button updateEasyPieChart\">Update pie charts</a></p>\n\n            <p class=\"credits\">Inspired by: <a href=\"http://drbl.in/ezuc\" target=\"_blank\">Simple Pie Charts II by Rafal Bromirski on dribble</a></p>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/examples/style.css",
    "content": "body {\n    font: 13px/1.4 'Helvetica Neue', 'Helvetica','Arial', sans-serif;\n    color: #333;\n}\n\n.container {\n    width: 520px;\n    margin: auto;\n}\n\nh1 {\n    border-bottom: 1px solid #d9d9d9;\n}\n\na {\n    color: #be2221;\n    text-decoration: none;\n}\n\n.chart {\n    float: left;\n    margin: 10px;\n}\n\n.percentage,\n.label {\n    text-align: center;\n    color: #333;\n    font-weight: 100;\n    font-size: 1.2em;\n    margin-bottom: 0.3em;\n}\n\n.credits {\n    padding-top: 0.5em;\n    clear: both;\n    color: #999;\n}\n\n.credits a {\n    color: #333;\n}\n\n.dark {\n    background: #333;\n}\n\n.dark .percentage-light,\n.dark .label {\n    text-align: center;\n    color: #999;\n    font-weight: 100;\n    font-size: 1.2em;\n    margin-bottom: 0.3em;\n}\n\n\n.button {\n  -webkit-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  -moz-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5);\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  padding: 6px 20px;\n  font-weight: bold;\n  text-transform: uppercase;\n  display: block;\n  margin: auto;\n  max-width: 200px;\n  text-align: center;\n  background-color: #5c5c5c;\n  background-image: -moz-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -ms-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#666666), to(#4d4d4d));\n  background-image: -webkit-linear-gradient(top, #666666, #4d4d4d);\n  background-image: -o-linear-gradient(top, #666666, #4d4d4d);\n  background-image: linear-gradient(top, #666666, #4d4d4d);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#4d4d4d', GradientType=0);\n  color: #ffffff;\n  text-shadow: 0 1px 1px #333333;\n}\n.button:hover {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #616161;\n  background-image: -moz-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -ms-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6b6b6b), to(#525252));\n  background-image: -webkit-linear-gradient(top, #6b6b6b, #525252);\n  background-image: -o-linear-gradient(top, #6b6b6b, #525252);\n  background-image: linear-gradient(top, #6b6b6b, #525252);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b6b6b', endColorstr='#525252', GradientType=0);\n}\n.button:active {\n  background-color: #575757;\n  background-image: -moz-linear-gradient(top, #616161, #474747);\n  background-image: -ms-linear-gradient(top, #616161, #474747);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#616161), to(#474747));\n  background-image: -webkit-linear-gradient(top, #616161, #474747);\n  background-image: -o-linear-gradient(top, #616161, #474747);\n  background-image: linear-gradient(top, #616161, #474747);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#474747', GradientType=0);\n  -webkit-transform: translate(0, 1px);\n  -moz-transform: translate(0, 1px);\n  -ms-transform: translate(0, 1px);\n  -o-transform: translate(0, 1px);\n  transform: translate(0, 1px);\n}\n.button:disabled {\n  background-color: #dddddd;\n  background-image: -moz-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -ms-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e7e7e7), to(#cdcdcd));\n  background-image: -webkit-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: -o-linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-image: linear-gradient(top, #e7e7e7, #cdcdcd);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e7e7e7', endColorstr='#cdcdcd', GradientType=0);\n  color: #939393;\n  text-shadow: 0 1px 1px #fff;\n}\n\n@media screen and (max-device-width: 480px) {\n  .container{\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.coffee",
    "content": "###\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n###\n\n(($) ->\n  $.easyPieChart = (el, options) ->\n\n    @el = el\n    @$el = $ el\n    @$el.data \"easyPieChart\", @\n\n    @init = =>\n      @options = $.extend {}, $.easyPieChart.defaultOptions, options\n\n      #get relevant data\n      percent = parseInt @$el.data('percent'), 10\n      @percentage = 0\n\n      #create canvas element and set the origin to the center\n      @canvas = $(\"<canvas width='#{@options.size}' height='#{@options.size}'></canvas>\").get(0)\n      @$el.append @canvas\n      G_vmlCanvasManager.initElement @canvas if G_vmlCanvasManager?\n      @ctx = @canvas.getContext '2d'\n\n      if window.devicePixelRatio > 1\n        scaleBy = window.devicePixelRatio\n        $(@canvas).css({\n          width: @options.size\n          height: @options.size\n        })\n        @canvas.width *= scaleBy\n        @canvas.height *= scaleBy\n        @ctx.scale scaleBy, scaleBy\n\n      @ctx.translate @options.size/2, @options.size/2\n      @$el.addClass 'easyPieChart'\n      @$el.css {\n        width: @options.size\n        height: @options.size\n        lineHeight: \"#{@options.size}px\"\n      }\n\n\n\n      @update percent\n      @\n\n    @update = (percent) =>\n      if @options.animate == false\n        drawLine percent\n      else\n        animateLine @percentage, percent\n\n    renderScale = =>\n      @ctx.fillStyle = @options.scaleColor\n      @ctx.lineWidth = 1\n      addScaleLine i for i in [0..24]\n\n    addScaleLine = (i) =>\n      offset = if i%6==0 then 0 else @options.size*0.017\n      @ctx.save()\n      @ctx.rotate i * Math.PI / 12\n      @ctx.fillRect @options.size/2-offset, 0, -@options.size*0.05+offset, 1\n      @ctx.restore()\n\n    renderTrack = =>\n      offset = @options.size/2-@options.lineWidth/2\n      offset -= @options.size*0.08 if @options.scaleColor != false\n\n      @ctx.beginPath()\n      @ctx.arc 0, 0, offset, 0, Math.PI * 2, true\n      @ctx.closePath()\n      @ctx.strokeStyle = @options.trackColor\n      @ctx.lineWidth = @options.lineWidth\n      @ctx.stroke()\n\n    renderBackground = =>\n      do renderScale if @options.scaleColor != false\n      do renderTrack if @options.trackColor != false\n\n    drawLine = (percent) =>\n      do renderBackground\n\n      @ctx.strokeStyle = if $.isFunction @options.barColor  then @options.barColor percent else @options.barColor\n      @ctx.lineCap = @options.lineCap\n      @ctx.lineWidth = @options.lineWidth\n\n      offset = @options.size/2-@options.lineWidth/2\n      offset -= @options.size*0.08 if @options.scaleColor != false\n\n      @ctx.save()\n      @ctx.rotate -Math.PI/2\n      @ctx.beginPath()\n      @ctx.arc 0, 0, offset, 0, Math.PI * 2 * percent/100, false\n      @ctx.stroke()\n      @ctx.restore()\n\n    animateLine = (from, to) =>\n      fps = 30\n      steps = fps * @options.animate/1000\n      currentStep = 0\n\n      @options.onStart.call @\n      @percentage = to\n\n      if @animation\n        clearInterval @animation\n        @animation = false\n\n      @animation = setInterval =>\n        @ctx.clearRect -@options.size/2, -@options.size/2, @options.size, @options.size\n        renderBackground.call @\n        drawLine.call @, [easeInOutQuad currentStep, from, to-from, steps]\n\n        currentStep++\n\n        if (currentStep/steps) > 1\n          clearInterval @animation\n          @animation = false\n          @options.onStop.call @\n\n      , 1000/fps\n\n    #t=time;b=beginning value;c=change in value;d=duration\n    easeInOutQuad = (t, b, c, d) ->\n\n      easeIn = (t) ->\n        return Math.pow(t, 2) # Quad\n      easing = (t) ->\n        if (t < 1)\n          return easeIn(t)\n        else\n          return 2 - easeIn( (t/2) * -2 + 2 )\n\n      t /= d / 2\n      return c / 2 * easing(t) + b\n\n    @init()\n\n  $.easyPieChart.defaultOptions =\n    barColor:        '#ef1e25'\n    trackColor:      '#f2f2f2'\n    scaleColor:      '#dfe0e0'\n    lineCap:         'round'\n    size:            110\n    lineWidth:       3\n    animate:         false\n    onStart:         $.noop\n    onStop:          $.noop\n\n  $.fn.easyPieChart = (options) ->\n    $.each @, (i, el) ->\n      $el = ($ el)\n\n      unless $el.data 'easyPieChart'\n        $el.data 'easyPieChart', new $.easyPieChart el, options\n\n  undefined\n)(jQuery)\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.css",
    "content": ".easyPieChart {\n    position: relative;\n    text-align: center;\n}\n\n.easyPieChart canvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/easy-pie/jquery.easy-pie-chart.js",
    "content": "// Generated by CoffeeScript 1.4.0\n\n/*\nEasy pie chart is a jquery plugin to display simple animated pie charts for only one value\n\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\nand GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\nBuilt on top of the jQuery library (http://jquery.com)\n\n@source: http://github.com/rendro/easy-pie-chart/\n@autor: Robert Fleischmann\n@version: 1.0.1\n\nInspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210\nThanks to Philip Thrasher for the jquery plugin boilerplate for coffee script\n*/\n\n\n(function() {\n\n  (function($) {\n    $.easyPieChart = function(el, options) {\n      var addScaleLine, animateLine, drawLine, easeInOutQuad, renderBackground, renderScale, renderTrack,\n        _this = this;\n      this.el = el;\n      this.$el = $(el);\n      this.$el.data(\"easyPieChart\", this);\n      this.init = function() {\n        var percent;\n        _this.options = $.extend({}, $.easyPieChart.defaultOptions, options);\n        percent = parseInt(_this.$el.data('percent'), 10);\n        _this.percentage = 0;\n        _this.canvas = $(\"<canvas width='\" + _this.options.size + \"' height='\" + _this.options.size + \"'></canvas>\").get(0);\n        _this.$el.append(_this.canvas);\n        if (typeof G_vmlCanvasManager !== \"undefined\" && G_vmlCanvasManager !== null) {\n          G_vmlCanvasManager.initElement(_this.canvas);\n        }\n        _this.ctx = _this.canvas.getContext('2d');\n        if (window.devicePixelRatio > 1.5) {\n          $(_this.canvas).css({\n            width: _this.options.size,\n            height: _this.options.size\n          });\n          _this.canvas.width *= 2;\n          _this.canvas.height *= 2;\n          _this.ctx.scale(2, 2);\n        }\n        _this.ctx.translate(_this.options.size / 2, _this.options.size / 2);\n        _this.$el.addClass('easyPieChart');\n        _this.$el.css({\n          width: _this.options.size,\n          height: _this.options.size,\n          lineHeight: \"\" + _this.options.size + \"px\"\n        });\n        _this.update(percent);\n        return _this;\n      };\n      this.update = function(percent) {\n        if (_this.options.animate === false) {\n          return drawLine(percent);\n        } else {\n          return animateLine(_this.percentage, percent);\n        }\n      };\n      renderScale = function() {\n        var i, _i, _results;\n        _this.ctx.fillStyle = _this.options.scaleColor;\n        _this.ctx.lineWidth = 1;\n        _results = [];\n        for (i = _i = 0; _i <= 24; i = ++_i) {\n          _results.push(addScaleLine(i));\n        }\n        return _results;\n      };\n      addScaleLine = function(i) {\n        var offset;\n        offset = i % 6 === 0 ? 0 : _this.options.size * 0.017;\n        _this.ctx.save();\n        _this.ctx.rotate(i * Math.PI / 12);\n        _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1);\n        return _this.ctx.restore();\n      };\n      renderTrack = function() {\n        var offset;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true);\n        _this.ctx.closePath();\n        _this.ctx.strokeStyle = _this.options.trackColor;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        return _this.ctx.stroke();\n      };\n      renderBackground = function() {\n        if (_this.options.scaleColor !== false) {\n          renderScale();\n        }\n        if (_this.options.trackColor !== false) {\n          return renderTrack();\n        }\n      };\n      drawLine = function(percent) {\n        var offset;\n        renderBackground();\n        _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor;\n        _this.ctx.lineCap = _this.options.lineCap;\n        _this.ctx.lineWidth = _this.options.lineWidth;\n        offset = _this.options.size / 2 - _this.options.lineWidth / 2;\n        if (_this.options.scaleColor !== false) {\n          offset -= _this.options.size * 0.08;\n        }\n        _this.ctx.save();\n        _this.ctx.rotate(-Math.PI / 2);\n        _this.ctx.beginPath();\n        _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false);\n        _this.ctx.stroke();\n        return _this.ctx.restore();\n      };\n      animateLine = function(from, to) {\n        var currentStep, fps, steps;\n        fps = 30;\n        steps = fps * _this.options.animate / 1000;\n        currentStep = 0;\n        _this.options.onStart.call(_this);\n        _this.percentage = to;\n        if (_this.animation) {\n          clearInterval(_this.animation);\n          _this.animation = false;\n        }\n        return _this.animation = setInterval(function() {\n          _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size);\n          renderBackground.call(_this);\n          drawLine.call(_this, [easeInOutQuad(currentStep, from, to - from, steps)]);\n          currentStep++;\n          if ((currentStep / steps) > 1) {\n            clearInterval(_this.animation);\n            _this.animation = false;\n            return _this.options.onStop.call(_this);\n          }\n        }, 1000 / fps);\n      };\n      easeInOutQuad = function(t, b, c, d) {\n        var easeIn, easing;\n        easeIn = function(t) {\n          return Math.pow(t, 2);\n        };\n        easing = function(t) {\n          if (t < 1) {\n            return easeIn(t);\n          } else {\n            return 2 - easeIn((t / 2) * -2 + 2);\n          }\n        };\n        t /= d / 2;\n        return c / 2 * easing(t) + b;\n      };\n      return this.init();\n    };\n    $.easyPieChart.defaultOptions = {\n      barColor: '#ef1e25',\n      trackColor: '#f2f2f2',\n      scaleColor: '#dfe0e0',\n      lineCap: 'round',\n      size: 110,\n      lineWidth: 3,\n      animate: false,\n      onStart: $.noop,\n      onStop: $.noop\n    };\n    $.fn.easyPieChart = function(options) {\n      return $.each(this, function(i, el) {\n        var $el;\n        $el = $(el);\n        if (!$el.data('easyPieChart')) {\n          return $el.data('easyPieChart', new $.easyPieChart(el, options));\n        }\n      });\n    };\n    return void 0;\n  })(jQuery);\n\n}).call(this);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/API.txt",
    "content": "Flot Reference\n--------------\n\nConsider a call to the plot function:\n\n   var plot = $.plot(placeholder, data, options)\n\nThe placeholder is a jQuery object or DOM element or jQuery expression\nthat the plot will be put into. This placeholder needs to have its\nwidth and height set as explained in the README (go read that now if\nyou haven't, it's short). The plot will modify some properties of the\nplaceholder so it's recommended you simply pass in a div that you\ndon't use for anything else. Make sure you check any fancy styling\nyou apply to the div, e.g. background images have been reported to be a\nproblem on IE 7.\n\nThe format of the data is documented below, as is the available\noptions. The plot object returned from the call has some methods you\ncan call. These are documented separately below.\n\nNote that in general Flot gives no guarantees if you change any of the\nobjects you pass in to the plot function or get out of it since\nthey're not necessarily deep-copied.\n\n\nData Format\n-----------\n\nThe data is an array of data series:\n\n  [ series1, series2, ... ]\n\nA series can either be raw data or an object with properties. The raw\ndata format is an array of points:\n\n  [ [x1, y1], [x2, y2], ... ]\n\nE.g.\n\n  [ [1, 3], [2, 14.01], [3.5, 3.14] ]\n\nNote that to simplify the internal logic in Flot both the x and y\nvalues must be numbers (even if specifying time series, see below for\nhow to do this). This is a common problem because you might retrieve\ndata from the database and serialize them directly to JSON without\nnoticing the wrong type. If you're getting mysterious errors, double\ncheck that you're inputting numbers and not strings.\n\nIf a null is specified as a point or if one of the coordinates is null\nor couldn't be converted to a number, the point is ignored when\ndrawing. As a special case, a null value for lines is interpreted as a\nline segment end, i.e. the points before and after the null value are\nnot connected.\n\nLines and points take two coordinates. For filled lines and bars, you\ncan specify a third coordinate which is the bottom of the filled\narea/bar (defaults to 0).\n\nThe format of a single series object is as follows:\n\n  {\n    color: color or number\n    data: rawdata\n    label: string\n    lines: specific lines options\n    bars: specific bars options\n    points: specific points options\n    xaxis: number\n    yaxis: number\n    clickable: boolean\n    hoverable: boolean\n    shadowSize: number\n  }\n\nYou don't have to specify any of them except the data, the rest are\noptions that will get default values. Typically you'd only specify\nlabel and data, like this:\n\n  {\n    label: \"y = 3\",\n    data: [[0, 3], [10, 3]]\n  }\n\nThe label is used for the legend, if you don't specify one, the series\nwill not show up in the legend.\n\nIf you don't specify color, the series will get a color from the\nauto-generated colors. The color is either a CSS color specification\n(like \"rgb(255, 100, 123)\") or an integer that specifies which of\nauto-generated colors to select, e.g. 0 will get color no. 0, etc.\n\nThe latter is mostly useful if you let the user add and remove series,\nin which case you can hard-code the color index to prevent the colors\nfrom jumping around between the series.\n\nThe \"xaxis\" and \"yaxis\" options specify which axis to use. The axes\nare numbered from 1 (default), so { yaxis: 2} means that the series\nshould be plotted against the second y axis.\n\n\"clickable\" and \"hoverable\" can be set to false to disable\ninteractivity for specific series if interactivity is turned on in\nthe plot, see below.\n\nThe rest of the options are all documented below as they are the same\nas the default options passed in via the options parameter in the plot\ncommmand. When you specify them for a specific data series, they will\noverride the default options for the plot for that data series.\n\nHere's a complete example of a simple data specification:\n\n  [ { label: \"Foo\", data: [ [10, 1], [17, -14], [30, 5] ] },\n    { label: \"Bar\", data: [ [11, 13], [19, 11], [30, -7] ] } ]\n\n\nPlot Options\n------------\n\nAll options are completely optional. They are documented individually\nbelow, to change them you just specify them in an object, e.g.\n\n  var options = {\n    series: {\n      lines: { show: true },\n      points: { show: true }\n    }\n  };\n\n  $.plot(placeholder, data, options);\n\n\nCustomizing the legend\n======================\n\n  legend: {\n    show: boolean\n    labelFormatter: null or (fn: string, series object -> string)\n    labelBoxBorderColor: color\n    noColumns: number\n    position: \"ne\" or \"nw\" or \"se\" or \"sw\"\n    margin: number of pixels or [x margin, y margin]\n    backgroundColor: null or color\n    backgroundOpacity: number between 0 and 1\n    container: null or jQuery object/DOM element/jQuery expression\n  }\n\nThe legend is generated as a table with the data series labels and\nsmall label boxes with the color of the series. If you want to format\nthe labels in some way, e.g. make them to links, you can pass in a\nfunction for \"labelFormatter\". Here's an example that makes them\nclickable:\n\n  labelFormatter: function(label, series) {\n    // series is the series object for the label\n    return '<a href=\"#' + label + '\">' + label + '</a>';\n  }\n\n\"noColumns\" is the number of columns to divide the legend table into.\n\"position\" specifies the overall placement of the legend within the\nplot (top-right, top-left, etc.) and margin the distance to the plot\nedge (this can be either a number or an array of two numbers like [x,\ny]). \"backgroundColor\" and \"backgroundOpacity\" specifies the\nbackground. The default is a partly transparent auto-detected\nbackground.\n\nIf you want the legend to appear somewhere else in the DOM, you can\nspecify \"container\" as a jQuery object/expression to put the legend\ntable into. The \"position\" and \"margin\" etc. options will then be\nignored. Note that Flot will overwrite the contents of the container.\n\n\nCustomizing the axes\n====================\n\n  xaxis, yaxis: {\n    show: null or true/false\n    position: \"bottom\" or \"top\" or \"left\" or \"right\"\n    mode: null or \"time\"\n\n    color: null or color spec\n    tickColor: null or color spec\n    \n    min: null or number\n    max: null or number\n    autoscaleMargin: null or number\n    \n    transform: null or fn: number -> number\n    inverseTransform: null or fn: number -> number\n    \n    ticks: null or number or ticks array or (fn: range -> ticks array)\n    tickSize: number or array\n    minTickSize: number or array\n    tickFormatter: (fn: number, object -> string) or string\n    tickDecimals: null or number\n\n    labelWidth: null or number\n    labelHeight: null or number\n    reserveSpace: null or true\n    \n    tickLength: null or number\n\n    alignTicksWithAxis: null or number\n  }\n\nAll axes have the same kind of options. The following describes how to\nconfigure one axis, see below for what to do if you've got more than\none x axis or y axis.\n\nIf you don't set the \"show\" option (i.e. it is null), visibility is\nauto-detected, i.e. the axis will show up if there's data associated\nwith it. You can override this by setting the \"show\" option to true or\nfalse.\n\nThe \"position\" option specifies where the axis is placed, bottom or\ntop for x axes, left or right for y axes. The \"mode\" option determines\nhow the data is interpreted, the default of null means as decimal\nnumbers. Use \"time\" for time series data, see the time series data\nsection.\n\nThe \"color\" option determines the color of the labels and ticks for\nthe axis (default is the grid color). For more fine-grained control\nyou can also set the color of the ticks separately with \"tickColor\"\n(otherwise it's autogenerated as the base color with some\ntransparency).\n\nThe options \"min\"/\"max\" are the precise minimum/maximum value on the\nscale. If you don't specify either of them, a value will automatically\nbe chosen based on the minimum/maximum data values. Note that Flot\nalways examines all the data values you feed to it, even if a\nrestriction on another axis may make some of them invisible (this\nmakes interactive use more stable).\n\nThe \"autoscaleMargin\" is a bit esoteric: it's the fraction of margin\nthat the scaling algorithm will add to avoid that the outermost points\nends up on the grid border. Note that this margin is only applied when\na min or max value is not explicitly set. If a margin is specified,\nthe plot will furthermore extend the axis end-point to the nearest\nwhole tick. The default value is \"null\" for the x axes and 0.02 for y\naxes which seems appropriate for most cases.\n\n\"transform\" and \"inverseTransform\" are callbacks you can put in to\nchange the way the data is drawn. You can design a function to\ncompress or expand certain parts of the axis non-linearly, e.g.\nsuppress weekends or compress far away points with a logarithm or some\nother means. When Flot draws the plot, each value is first put through\nthe transform function. Here's an example, the x axis can be turned\ninto a natural logarithm axis with the following code:\n\n  xaxis: {\n    transform: function (v) { return Math.log(v); },\n    inverseTransform: function (v) { return Math.exp(v); }\n  }\n\nSimilarly, for reversing the y axis so the values appear in inverse\norder:\n  \n  yaxis: {\n    transform: function (v) { return -v; },\n    inverseTransform: function (v) { return -v; }\n  }\n\nNote that for finding extrema, Flot assumes that the transform\nfunction does not reorder values (it should be monotone).\n\nThe inverseTransform is simply the inverse of the transform function\n(so v == inverseTransform(transform(v)) for all relevant v). It is\nrequired for converting from canvas coordinates to data coordinates,\ne.g. for a mouse interaction where a certain pixel is clicked. If you\ndon't use any interactive features of Flot, you may not need it.\n\n\nThe rest of the options deal with the ticks.\n\nIf you don't specify any ticks, a tick generator algorithm will make\nsome for you. The algorithm has two passes. It first estimates how\nmany ticks would be reasonable and uses this number to compute a nice\nround tick interval size. Then it generates the ticks.\n\nYou can specify how many ticks the algorithm aims for by setting\n\"ticks\" to a number. The algorithm always tries to generate reasonably\nround tick values so even if you ask for three ticks, you might get\nfive if that fits better with the rounding. If you don't want any\nticks at all, set \"ticks\" to 0 or an empty array.\n\nAnother option is to skip the rounding part and directly set the tick\ninterval size with \"tickSize\". If you set it to 2, you'll get ticks at\n2, 4, 6, etc. Alternatively, you can specify that you just don't want\nticks at a size less than a specific tick size with \"minTickSize\".\nNote that for time series, the format is an array like [2, \"month\"],\nsee the next section.\n\nIf you want to completely override the tick algorithm, you can specify\nan array for \"ticks\", either like this:\n\n  ticks: [0, 1.2, 2.4]\n\nOr like this where the labels are also customized:\n\n  ticks: [[0, \"zero\"], [1.2, \"one mark\"], [2.4, \"two marks\"]]\n\nYou can mix the two if you like.\n  \nFor extra flexibility you can specify a function as the \"ticks\"\nparameter. The function will be called with an object with the axis\nmin and max and should return a ticks array. Here's a simplistic tick\ngenerator that spits out intervals of pi, suitable for use on the x\naxis for trigonometric functions:\n\n  function piTickGenerator(axis) {\n    var res = [], i = Math.floor(axis.min / Math.PI);\n    do {\n      var v = i * Math.PI;\n      res.push([v, i + \"\\u03c0\"]);\n      ++i;\n    } while (v < axis.max);\n    \n    return res;\n  }\n\nYou can control how the ticks look like with \"tickDecimals\", the\nnumber of decimals to display (default is auto-detected).\n\nAlternatively, for ultimate control over how ticks are formatted you can\nprovide a function to \"tickFormatter\". The function is passed two\nparameters, the tick value and an axis object with information, and\nshould return a string. The default formatter looks like this:\n\n  function formatter(val, axis) {\n    return val.toFixed(axis.tickDecimals);\n  }\n\nThe axis object has \"min\" and \"max\" with the range of the axis,\n\"tickDecimals\" with the number of decimals to round the value to and\n\"tickSize\" with the size of the interval between ticks as calculated\nby the automatic axis scaling algorithm (or specified by you). Here's\nan example of a custom formatter:\n\n  function suffixFormatter(val, axis) {\n    if (val > 1000000)\n      return (val / 1000000).toFixed(axis.tickDecimals) + \" MB\";\n    else if (val > 1000)\n      return (val / 1000).toFixed(axis.tickDecimals) + \" kB\";\n    else\n      return val.toFixed(axis.tickDecimals) + \" B\";\n  }\n\n\"labelWidth\" and \"labelHeight\" specifies a fixed size of the tick\nlabels in pixels. They're useful in case you need to align several\nplots. \"reserveSpace\" means that even if an axis isn't shown, Flot\nshould reserve space for it - it is useful in combination with\nlabelWidth and labelHeight for aligning multi-axis charts.\n\n\"tickLength\" is the length of the tick lines in pixels. By default, the\ninnermost axes will have ticks that extend all across the plot, while\nany extra axes use small ticks. A value of null means use the default,\nwhile a number means small ticks of that length - set it to 0 to hide\nthe lines completely.\n\nIf you set \"alignTicksWithAxis\" to the number of another axis, e.g.\nalignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks\nof this axis are aligned with the ticks of the other axis. This may\nimprove the looks, e.g. if you have one y axis to the left and one to\nthe right, because the grid lines will then match the ticks in both\nends. The trade-off is that the forced ticks won't necessarily be at\nnatural places.\n\n\nMultiple axes\n=============\n\nIf you need more than one x axis or y axis, you need to specify for\neach data series which axis they are to use, as described under the\nformat of the data series, e.g. { data: [...], yaxis: 2 } specifies\nthat a series should be plotted against the second y axis.\n\nTo actually configure that axis, you can't use the xaxis/yaxis options\ndirectly - instead there are two arrays in the options:\n\n   xaxes: []\n   yaxes: []\n\nHere's an example of configuring a single x axis and two y axes (we\ncan leave options of the first y axis empty as the defaults are fine):\n\n  {\n    xaxes: [ { position: \"top\" } ],\n    yaxes: [ { }, { position: \"right\", min: 20 } ]\n  }\n\nThe arrays get their default values from the xaxis/yaxis settings, so\nsay you want to have all y axes start at zero, you can simply specify\nyaxis: { min: 0 } instead of adding a min parameter to all the axes.\n\nGenerally, the various interfaces in Flot dealing with data points\neither accept an xaxis/yaxis parameter to specify which axis number to\nuse (starting from 1), or lets you specify the coordinate directly as\nx2/x3/... or x2axis/x3axis/... instead of \"x\" or \"xaxis\".\n\n  \nTime series data\n================\n\nTime series are a bit more difficult than scalar data because\ncalendars don't follow a simple base 10 system. For many cases, Flot\nabstracts most of this away, but it can still be a bit difficult to\nget the data into Flot. So we'll first discuss the data format.\n\nThe time series support in Flot is based on Javascript timestamps,\ni.e. everywhere a time value is expected or handed over, a Javascript\ntimestamp number is used. This is a number, not a Date object. A\nJavascript timestamp is the number of milliseconds since January 1,\n1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's\nin milliseconds, so remember to multiply by 1000!\n\nYou can see a timestamp like this\n\n  alert((new Date()).getTime())\n\nNormally you want the timestamps to be displayed according to a\ncertain time zone, usually the time zone in which the data has been\nproduced. However, Flot always displays timestamps according to UTC.\nIt has to as the only alternative with core Javascript is to interpret\nthe timestamps according to the time zone that the visitor is in,\nwhich means that the ticks will shift unpredictably with the time zone\nand daylight savings of each visitor.\n\nSo given that there's no good support for custom time zones in\nJavascript, you'll have to take care of this server-side.\n\nThe easiest way to think about it is to pretend that the data\nproduction time zone is UTC, even if it isn't. So if you have a\ndatapoint at 2002-02-20 08:00, you can generate a timestamp for eight\no'clock UTC even if it really happened eight o'clock UTC+0200.\n\nIn PHP you can get an appropriate timestamp with\n'strtotime(\"2002-02-20 UTC\") * 1000', in Python with\n'calendar.timegm(datetime_object.timetuple()) * 1000', in .NET with\nsomething like:\n\n  public static int GetJavascriptTimestamp(System.DateTime input)\n  {\n    System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse(\"1/1/1970\").Ticks);\n    System.DateTime time = input.Subtract(span);\n    return (long)(time.Ticks / 10000);\n  }\n\nJavascript also has some support for parsing date strings, so it is\npossible to generate the timestamps manually client-side.\n\nIf you've already got the real UTC timestamp, it's too late to use the\npretend trick described above. But you can fix up the timestamps by\nadding the time zone offset, e.g. for UTC+0200 you would add 2 hours\nto the UTC timestamp you got. Then it'll look right on the plot. Most\nprogramming environments have some means of getting the timezone\noffset for a specific date (note that you need to get the offset for\neach individual timestamp to account for daylight savings).\n\nOnce you've gotten the timestamps into the data and specified \"time\"\nas the axis mode, Flot will automatically generate relevant ticks and\nformat them. As always, you can tweak the ticks via the \"ticks\" option\n- just remember that the values should be timestamps (numbers), not\nDate objects.\n\nTick generation and formatting can also be controlled separately\nthrough the following axis options:\n\n  minTickSize: array\n  timeformat: null or format string\n  monthNames: null or array of size 12 of strings\n  twelveHourClock: boolean\n\nHere \"timeformat\" is a format string to use. You might use it like\nthis:\n\n  xaxis: {\n    mode: \"time\"\n    timeformat: \"%y/%m/%d\"\n  }\n  \nThis will result in tick labels like \"2000/12/24\". The following\nspecifiers are supported\n\n  %h: hours\n  %H: hours (left-padded with a zero)\n  %M: minutes (left-padded with a zero)\n  %S: seconds (left-padded with a zero)\n  %d: day of month (1-31), use %0d for zero-padding\n  %m: month (1-12), use %0m for zero-padding\n  %y: year (four digits)\n  %b: month name (customizable)\n  %p: am/pm, additionally switches %h/%H to 12 hour instead of 24\n  %P: AM/PM (uppercase version of %p)\n\nInserting a zero like %0m or %0d means that the specifier will be\nleft-padded with a zero if it's only single-digit. So %y-%0m-%0d\nresults in unambigious ISO timestamps like 2007-05-10 (for May 10th).\n\nYou can customize the month names with the \"monthNames\" option. For\ninstance, for Danish you might specify:\n\n  monthNames: [\"jan\", \"feb\", \"mar\", \"apr\", \"maj\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n\nIf you set \"twelveHourClock\" to true, the autogenerated timestamps\nwill use 12 hour AM/PM timestamps instead of 24 hour.\n  \nThe format string and month names are used by a very simple built-in\nformat function that takes a date object, a format string (and\noptionally an array of month names) and returns the formatted string.\nIf needed, you can access it as $.plot.formatDate(date, formatstring,\nmonthNames) or even replace it with another more advanced function\nfrom a date library if you're feeling adventurous.\n\nIf everything else fails, you can control the formatting by specifying\na custom tick formatter function as usual. Here's a simple example\nwhich will format December 24 as 24/12:\n\n  tickFormatter: function (val, axis) {\n    var d = new Date(val);\n    return d.getUTCDate() + \"/\" + (d.getUTCMonth() + 1);\n  }\n\nNote that for the time mode \"tickSize\" and \"minTickSize\" are a bit\nspecial in that they are arrays on the form \"[value, unit]\" where unit\nis one of \"second\", \"minute\", \"hour\", \"day\", \"month\" and \"year\". So\nyou can specify\n\n  minTickSize: [1, \"month\"]\n\nto get a tick interval size of at least 1 month and correspondingly,\nif axis.tickSize is [2, \"day\"] in the tick formatter, the ticks have\nbeen produced with two days in-between.\n\n\n\nCustomizing the data series\n===========================\n\n  series: {\n    lines, points, bars: {\n      show: boolean\n      lineWidth: number\n      fill: boolean or number\n      fillColor: null or color/gradient\n    }\n\n    points: {\n      radius: number\n      symbol: \"circle\" or function\n    }\n\n    bars: {\n      barWidth: number\n      align: \"left\" or \"center\"\n      horizontal: boolean\n    }\n\n    lines: {\n      steps: boolean\n    }\n\n    shadowSize: number\n  }\n  \n  colors: [ color1, color2, ... ]\n\nThe options inside \"series: {}\" are copied to each of the series. So\nyou can specify that all series should have bars by putting it in the\nglobal options, or override it for individual series by specifying\nbars in a particular the series object in the array of data.\n  \nThe most important options are \"lines\", \"points\" and \"bars\" that\nspecify whether and how lines, points and bars should be shown for\neach data series. In case you don't specify anything at all, Flot will\ndefault to showing lines (you can turn this off with\nlines: { show: false }). You can specify the various types\nindependently of each other, and Flot will happily draw each of them\nin turn (this is probably only useful for lines and points), e.g.\n\n  var options = {\n    series: {\n      lines: { show: true, fill: true, fillColor: \"rgba(255, 255, 255, 0.8)\" },\n      points: { show: true, fill: false }\n    }\n  };\n\n\"lineWidth\" is the thickness of the line or outline in pixels. You can\nset it to 0 to prevent a line or outline from being drawn; this will\nalso hide the shadow.\n\n\"fill\" is whether the shape should be filled. For lines, this produces\narea graphs. You can use \"fillColor\" to specify the color of the fill.\nIf \"fillColor\" evaluates to false (default for everything except\npoints which are filled with white), the fill color is auto-set to the\ncolor of the data series. You can adjust the opacity of the fill by\nsetting fill to a number between 0 (fully transparent) and 1 (fully\nopaque).\n\nFor bars, fillColor can be a gradient, see the gradient documentation\nbelow. \"barWidth\" is the width of the bars in units of the x axis (or\nthe y axis if \"horizontal\" is true), contrary to most other measures\nthat are specified in pixels. For instance, for time series the unit\nis milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of\na day. \"align\" specifies whether a bar should be left-aligned\n(default) or centered on top of the value it represents. When\n\"horizontal\" is on, the bars are drawn horizontally, i.e. from the y\naxis instead of the x axis; note that the bar end points are still\ndefined in the same way so you'll probably want to swap the\ncoordinates if you've been plotting vertical bars first.\n\nFor lines, \"steps\" specifies whether two adjacent data points are\nconnected with a straight (possibly diagonal) line or with first a\nhorizontal and then a vertical line. Note that this transforms the\ndata by adding extra points.\n\nFor points, you can specify the radius and the symbol. The only\nbuilt-in symbol type is circles, for other types you can use a plugin\nor define them yourself by specifying a callback:\n\n  function cross(ctx, x, y, radius, shadow) {\n      var size = radius * Math.sqrt(Math.PI) / 2;\n      ctx.moveTo(x - size, y - size);\n      ctx.lineTo(x + size, y + size);\n      ctx.moveTo(x - size, y + size);\n      ctx.lineTo(x + size, y - size);\n  }\n\nThe parameters are the drawing context, x and y coordinates of the\ncenter of the point, a radius which corresponds to what the circle\nwould have used and whether the call is to draw a shadow (due to\nlimited canvas support, shadows are currently faked through extra\ndraws). It's good practice to ensure that the area covered by the\nsymbol is the same as for the circle with the given radius, this\nensures that all symbols have approximately the same visual weight.\n\n\"shadowSize\" is the default size of shadows in pixels. Set it to 0 to\nremove shadows.\n\nThe \"colors\" array specifies a default color theme to get colors for\nthe data series from. You can specify as many colors as you like, like\nthis:\n\n  colors: [\"#d18b2c\", \"#dba255\", \"#919733\"]\n\nIf there are more data series than colors, Flot will try to generate\nextra colors by lightening and darkening colors in the theme.\n\n\nCustomizing the grid\n====================\n\n  grid: {\n    show: boolean\n    aboveData: boolean\n    color: color\n    backgroundColor: color/gradient or null\n    labelMargin: number\n    axisMargin: number\n    markings: array of markings or (fn: axes -> array of markings)\n    borderWidth: number\n    borderColor: color or null\n    minBorderMargin: number or null\n    clickable: boolean\n    hoverable: boolean\n    autoHighlight: boolean\n    mouseActiveRadius: number\n  }\n\nThe grid is the thing with the axes and a number of ticks. Many of the\nthings in the grid are configured under the individual axes, but not\nall. \"color\" is the color of the grid itself whereas \"backgroundColor\"\nspecifies the background color inside the grid area, here null means\nthat the background is transparent. You can also set a gradient, see\nthe gradient documentation below.\n\nYou can turn off the whole grid including tick labels by setting\n\"show\" to false. \"aboveData\" determines whether the grid is drawn\nabove the data or below (below is default).\n\n\"labelMargin\" is the space in pixels between tick labels and axis\nline, and \"axisMargin\" is the space in pixels between axes when there\nare two next to each other. Note that you can style the tick labels\nwith CSS, e.g. to change the color. They have class \"tickLabel\".\n\n\"borderWidth\" is the width of the border around the plot. Set it to 0\nto disable the border. You can also set \"borderColor\" if you want the\nborder to have a different color than the grid lines.\n\"minBorderMargin\" controls the default minimum margin around the\nborder - it's used to make sure that points aren't accidentally\nclipped by the canvas edge so by default the value is computed from\nthe point radius.\n\n\"markings\" is used to draw simple lines and rectangular areas in the\nbackground of the plot. You can either specify an array of ranges on\nthe form { xaxis: { from, to }, yaxis: { from, to } } (with multiple\naxes, you can specify coordinates for other axes instead, e.g. as\nx2axis/x3axis/...) or with a function that returns such an array given\nthe axes for the plot in an object as the first parameter.\n\nYou can set the color of markings by specifying \"color\" in the ranges\nobject. Here's an example array:\n\n  markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: \"#bb0000\" }, ... ]\n\nIf you leave out one of the values, that value is assumed to go to the\nborder of the plot. So for example if you only specify { xaxis: {\nfrom: 0, to: 2 } } it means an area that extends from the top to the\nbottom of the plot in the x range 0-2.\n\nA line is drawn if from and to are the same, e.g.\n\n  markings: [ { yaxis: { from: 1, to: 1 } }, ... ]\n\nwould draw a line parallel to the x axis at y = 1. You can control the\nline width with \"lineWidth\" in the range object.\n\nAn example function that makes vertical stripes might look like this:\n\n  markings: function (axes) {\n    var markings = [];\n    for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2)\n      markings.push({ xaxis: { from: x, to: x + 1 } });\n    return markings;\n  }\n\n\nIf you set \"clickable\" to true, the plot will listen for click events\non the plot area and fire a \"plotclick\" event on the placeholder with\na position and a nearby data item object as parameters. The coordinates\nare available both in the unit of the axes (not in pixels) and in\nglobal screen coordinates.\n\nLikewise, if you set \"hoverable\" to true, the plot will listen for\nmouse move events on the plot area and fire a \"plothover\" event with\nthe same parameters as the \"plotclick\" event. If \"autoHighlight\" is\ntrue (the default), nearby data items are highlighted automatically.\nIf needed, you can disable highlighting and control it yourself with\nthe highlight/unhighlight plot methods described elsewhere.\n\nYou can use \"plotclick\" and \"plothover\" events like this:\n\n    $.plot($(\"#placeholder\"), [ d ], { grid: { clickable: true } });\n\n    $(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n        alert(\"You clicked at \" + pos.x + \", \" + pos.y);\n        // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...\n        // if you need global screen coordinates, they are pos.pageX, pos.pageY\n\n        if (item) {\n          highlight(item.series, item.datapoint);\n          alert(\"You clicked a point!\");\n        }\n    });\n\nThe item object in this example is either null or a nearby object on the form:\n\n  item: {\n      datapoint: the point, e.g. [0, 2]\n      dataIndex: the index of the point in the data array\n      series: the series object\n      seriesIndex: the index of the series\n      pageX, pageY: the global screen coordinates of the point\n  }\n\nFor instance, if you have specified the data like this \n\n    $.plot($(\"#placeholder\"), [ { label: \"Foo\", data: [[0, 10], [7, 3]] } ], ...);\n\nand the mouse is near the point (7, 3), \"datapoint\" is [7, 3],\n\"dataIndex\" will be 1, \"series\" is a normalized series object with\namong other things the \"Foo\" label in series.label and the color in\nseries.color, and \"seriesIndex\" is 0. Note that plugins and options\nthat transform the data can shift the indexes from what you specified\nin the original data array.\n\nIf you use the above events to update some other information and want\nto clear out that info in case the mouse goes away, you'll probably\nalso need to listen to \"mouseout\" events on the placeholder div.\n\n\"mouseActiveRadius\" specifies how far the mouse can be from an item\nand still activate it. If there are two or more points within this\nradius, Flot chooses the closest item. For bars, the top-most bar\n(from the latest specified data series) is chosen.\n\nIf you want to disable interactivity for a specific data series, you\ncan set \"hoverable\" and \"clickable\" to false in the options for that\nseries, like this { data: [...], label: \"Foo\", clickable: false }.\n\n\nSpecifying gradients\n====================\n\nA gradient is specified like this:\n\n  { colors: [ color1, color2, ... ] }\n\nFor instance, you might specify a background on the grid going from\nblack to gray like this:\n\n  grid: {\n    backgroundColor: { colors: [\"#000\", \"#999\"] }\n  }\n\nFor the series you can specify the gradient as an object that\nspecifies the scaling of the brightness and the opacity of the series\ncolor, e.g.\n\n  { colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] }\n\nwhere the first color simply has its alpha scaled, whereas the second\nis also darkened. For instance, for bars the following makes the bars\ngradually disappear, without outline:\n\n  bars: {\n      show: true,\n      lineWidth: 0,\n      fill: true,\n      fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] }\n  }\n  \nFlot currently only supports vertical gradients drawn from top to\nbottom because that's what works with IE.\n\n\nPlot Methods\n------------\n\nThe Plot object returned from the plot function has some methods you\ncan call:\n\n  - highlight(series, datapoint)\n\n    Highlight a specific datapoint in the data series. You can either\n    specify the actual objects, e.g. if you got them from a\n    \"plotclick\" event, or you can specify the indices, e.g.\n    highlight(1, 3) to highlight the fourth point in the second series\n    (remember, zero-based indexing).\n\n  \n  - unhighlight(series, datapoint) or unhighlight()\n\n    Remove the highlighting of the point, same parameters as\n    highlight.\n\n    If you call unhighlight with no parameters, e.g. as\n    plot.unhighlight(), all current highlights are removed.\n\n\n  - setData(data)\n\n    You can use this to reset the data used. Note that axis scaling,\n    ticks, legend etc. will not be recomputed (use setupGrid() to do\n    that). You'll probably want to call draw() afterwards.\n\n    You can use this function to speed up redrawing a small plot if\n    you know that the axes won't change. Put in the new data with\n    setData(newdata), call draw(), and you're good to go. Note that\n    for large datasets, almost all the time is consumed in draw()\n    plotting the data so in this case don't bother.\n\n    \n  - setupGrid()\n\n    Recalculate and set axis scaling, ticks, legend etc.\n\n    Note that because of the drawing model of the canvas, this\n    function will immediately redraw (actually reinsert in the DOM)\n    the labels and the legend, but not the actual tick lines because\n    they're drawn on the canvas. You need to call draw() to get the\n    canvas redrawn.\n    \n  - draw()\n\n    Redraws the plot canvas.\n\n  - triggerRedrawOverlay()\n\n    Schedules an update of an overlay canvas used for drawing\n    interactive things like a selection and point highlights. This\n    is mostly useful for writing plugins. The redraw doesn't happen\n    immediately, instead a timer is set to catch multiple successive\n    redraws (e.g. from a mousemove). You can get to the overlay by\n    setting up a drawOverlay hook.\n\n  - width()/height()\n\n    Gets the width and height of the plotting area inside the grid.\n    This is smaller than the canvas or placeholder dimensions as some\n    extra space is needed (e.g. for labels).\n\n  - offset()\n\n    Returns the offset of the plotting area inside the grid relative\n    to the document, useful for instance for calculating mouse\n    positions (event.pageX/Y minus this offset is the pixel position\n    inside the plot).\n\n  - pointOffset({ x: xpos, y: ypos })\n\n    Returns the calculated offset of the data point at (x, y) in data\n    space within the placeholder div. If you are working with multiple axes, you\n    can specify the x and y axis references, e.g. \n\n      o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 })\n      // o.left and o.top now contains the offset within the div\n\n  - resize()\n\n    Tells Flot to resize the drawing canvas to the size of the\n    placeholder. You need to run setupGrid() and draw() afterwards as\n    canvas resizing is a destructive operation. This is used\n    internally by the resize plugin.\n\n  - shutdown()\n\n    Cleans up any event handlers Flot has currently registered. This\n    is used internally.\n\n\nThere are also some members that let you peek inside the internal\nworkings of Flot which is useful in some cases. Note that if you change\nsomething in the objects returned, you're changing the objects used by\nFlot to keep track of its state, so be careful.\n\n  - getData()\n\n    Returns an array of the data series currently used in normalized\n    form with missing settings filled in according to the global\n    options. So for instance to find out what color Flot has assigned\n    to the data series, you could do this:\n\n      var series = plot.getData();\n      for (var i = 0; i < series.length; ++i)\n        alert(series[i].color);\n\n    A notable other interesting field besides color is datapoints\n    which has a field \"points\" with the normalized data points in a\n    flat array (the field \"pointsize\" is the increment in the flat\n    array to get to the next point so for a dataset consisting only of\n    (x,y) pairs it would be 2).\n\n  - getAxes()\n\n    Gets an object with the axes. The axes are returned as the\n    attributes of the object, so for instance getAxes().xaxis is the\n    x axis.\n\n    Various things are stuffed inside an axis object, e.g. you could\n    use getAxes().xaxis.ticks to find out what the ticks are for the\n    xaxis. Two other useful attributes are p2c and c2p, functions for\n    transforming from data point space to the canvas plot space and\n    back. Both returns values that are offset with the plot offset.\n    Check the Flot source code for the complete set of attributes (or\n    output an axis with console.log() and inspect it).\n\n    With multiple axes, the extra axes are returned as x2axis, x3axis,\n    etc., e.g. getAxes().y2axis is the second y axis. You can check\n    y2axis.used to see whether the axis is associated with any data\n    points and y2axis.show to see if it is currently shown. \n \n  - getPlaceholder()\n\n    Returns placeholder that the plot was put into. This can be useful\n    for plugins for adding DOM elements or firing events.\n\n  - getCanvas()\n\n    Returns the canvas used for drawing in case you need to hack on it\n    yourself. You'll probably need to get the plot offset too.\n  \n  - getPlotOffset()\n\n    Gets the offset that the grid has within the canvas as an object\n    with distances from the canvas edges as \"left\", \"right\", \"top\",\n    \"bottom\". I.e., if you draw a circle on the canvas with the center\n    placed at (left, top), its center will be at the top-most, left\n    corner of the grid.\n\n  - getOptions()\n\n    Gets the options for the plot, normalized, with default values\n    filled in. You get a reference to actual values used by Flot, so\n    if you modify the values in here, Flot will use the new values.\n    If you change something, you probably have to call draw() or\n    setupGrid() or triggerRedrawOverlay() to see the change.\n    \n\nHooks\n=====\n\nIn addition to the public methods, the Plot object also has some hooks\nthat can be used to modify the plotting process. You can install a\ncallback function at various points in the process, the function then\ngets access to the internal data structures in Flot.\n\nHere's an overview of the phases Flot goes through:\n\n  1. Plugin initialization, parsing options\n  \n  2. Constructing the canvases used for drawing\n\n  3. Set data: parsing data specification, calculating colors,\n     copying raw data points into internal format,\n     normalizing them, finding max/min for axis auto-scaling\n\n  4. Grid setup: calculating axis spacing, ticks, inserting tick\n     labels, the legend\n\n  5. Draw: drawing the grid, drawing each of the series in turn\n\n  6. Setting up event handling for interactive features\n\n  7. Responding to events, if any\n\n  8. Shutdown: this mostly happens in case a plot is overwritten \n\nEach hook is simply a function which is put in the appropriate array.\nYou can add them through the \"hooks\" option, and they are also available\nafter the plot is constructed as the \"hooks\" attribute on the returned\nplot object, e.g.\n\n  // define a simple draw hook\n  function hellohook(plot, canvascontext) { alert(\"hello!\"); };\n\n  // pass it in, in an array since we might want to specify several\n  var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } });\n\n  // we can now find it again in plot.hooks.draw[0] unless a plugin\n  // has added other hooks\n\nThe available hooks are described below. All hook callbacks get the\nplot object as first parameter. You can find some examples of defined\nhooks in the plugins bundled with Flot.\n\n - processOptions  [phase 1]\n\n   function(plot, options)\n   \n   Called after Flot has parsed and merged options. Useful in the\n   instance where customizations beyond simple merging of default\n   values is needed. A plugin might use it to detect that it has been\n   enabled and then turn on or off other options.\n\n \n - processRawData  [phase 3]\n\n   function(plot, series, data, datapoints)\n \n   Called before Flot copies and normalizes the raw data for the given\n   series. If the function fills in datapoints.points with normalized\n   points and sets datapoints.pointsize to the size of the points,\n   Flot will skip the copying/normalization step for this series.\n   \n   In any case, you might be interested in setting datapoints.format,\n   an array of objects for specifying how a point is normalized and\n   how it interferes with axis scaling.\n\n   The default format array for points is something along the lines of:\n\n     [\n       { x: true, number: true, required: true },\n       { y: true, number: true, required: true }\n     ]\n\n   The first object means that for the first coordinate it should be\n   taken into account when scaling the x axis, that it must be a\n   number, and that it is required - so if it is null or cannot be\n   converted to a number, the whole point will be zeroed out with\n   nulls. Beyond these you can also specify \"defaultValue\", a value to\n   use if the coordinate is null. This is for instance handy for bars\n   where one can omit the third coordinate (the bottom of the bar)\n   which then defaults to 0.\n\n\n - processDatapoints  [phase 3]\n\n   function(plot, series, datapoints)\n \n   Called after normalization of the given series but before finding\n   min/max of the data points. This hook is useful for implementing data\n   transformations. \"datapoints\" contains the normalized data points in\n   a flat array as datapoints.points with the size of a single point\n   given in datapoints.pointsize. Here's a simple transform that\n   multiplies all y coordinates by 2:\n\n     function multiply(plot, series, datapoints) {\n         var points = datapoints.points, ps = datapoints.pointsize;\n         for (var i = 0; i < points.length; i += ps)\n             points[i + 1] *= 2;\n     }\n\n   Note that you must leave datapoints in a good condition as Flot\n   doesn't check it or do any normalization on it afterwards.\n\n\n - drawSeries  [phase 5]\n\n   function(plot, canvascontext, series)\n\n   Hook for custom drawing of a single series. Called just before the\n   standard drawing routine has been called in the loop that draws\n   each series.\n   \n \n - draw  [phase 5]\n\n   function(plot, canvascontext)\n \n   Hook for drawing on the canvas. Called after the grid is drawn\n   (unless it's disabled or grid.aboveData is set) and the series have\n   been plotted (in case any points, lines or bars have been turned\n   on). For examples of how to draw things, look at the source code.\n   \n \n - bindEvents  [phase 6]\n\n   function(plot, eventHolder)\n\n   Called after Flot has setup its event handlers. Should set any\n   necessary event handlers on eventHolder, a jQuery object with the\n   canvas, e.g.\n\n     function (plot, eventHolder) {\n         eventHolder.mousedown(function (e) {\n             alert(\"You pressed the mouse at \" + e.pageX + \" \" + e.pageY);\n         });\n     }\n\n   Interesting events include click, mousemove, mouseup/down. You can\n   use all jQuery events. Usually, the event handlers will update the\n   state by drawing something (add a drawOverlay hook and call\n   triggerRedrawOverlay) or firing an externally visible event for\n   user code. See the crosshair plugin for an example.\n     \n   Currently, eventHolder actually contains both the static canvas\n   used for the plot itself and the overlay canvas used for\n   interactive features because some versions of IE get the stacking\n   order wrong. The hook only gets one event, though (either for the\n   overlay or for the static canvas).\n\n   Note that custom plot events generated by Flot are not generated on\n   eventHolder, but on the div placeholder supplied as the first\n   argument to the plot call. You can get that with\n   plot.getPlaceholder() - that's probably also the one you should use\n   if you need to fire a custom event.\n\n\n - drawOverlay  [phase 7]\n\n   function (plot, canvascontext)\n\n   The drawOverlay hook is used for interactive things that need a\n   canvas to draw on. The model currently used by Flot works the way\n   that an extra overlay canvas is positioned on top of the static\n   canvas. This overlay is cleared and then completely redrawn\n   whenever something interesting happens. This hook is called when\n   the overlay canvas is to be redrawn.\n\n   \"canvascontext\" is the 2D context of the overlay canvas. You can\n   use this to draw things. You'll most likely need some of the\n   metrics computed by Flot, e.g. plot.width()/plot.height(). See the\n   crosshair plugin for an example.\n\n\n - shutdown  [phase 8]\n\n   function (plot, eventHolder)\n\n   Run when plot.shutdown() is called, which usually only happens in\n   case a plot is overwritten by a new plot. If you're writing a\n   plugin that adds extra DOM elements or event handlers, you should\n   add a callback to clean up after you. Take a look at the section in\n   PLUGINS.txt for more info.\n\n   \nPlugins\n-------\n\nPlugins extend the functionality of Flot. To use a plugin, simply\ninclude its Javascript file after Flot in the HTML page.\n\nIf you're worried about download size/latency, you can concatenate all\nthe plugins you use, and Flot itself for that matter, into one big file\n(make sure you get the order right), then optionally run it through a\nJavascript minifier such as YUI Compressor.\n\nHere's a brief explanation of how the plugin plumbings work:\n\nEach plugin registers itself in the global array $.plot.plugins. When\nyou make a new plot object with $.plot, Flot goes through this array\ncalling the \"init\" function of each plugin and merging default options\nfrom the \"option\" attribute of the plugin. The init function gets a\nreference to the plot object created and uses this to register hooks\nand add new public methods if needed.\n\nSee the PLUGINS.txt file for details on how to write a plugin. As the\nabove description hints, it's actually pretty easy.\n\n\nVersion number\n--------------\n\nThe version number of Flot is available in $.plot.version.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/FAQ.txt",
    "content": "Frequently asked questions\n--------------------------\n\nQ: How much data can Flot cope with?\n\nA: Flot will happily draw everything you send to it so the answer\ndepends on the browser. The excanvas emulation used for IE (built with\nVML) makes IE by far the slowest browser so be sure to test with that\nif IE users are in your target group.\n\n1000 points is not a problem, but as soon as you start having more\npoints than the pixel width, you should probably start thinking about\ndownsampling/aggregation as this is near the resolution limit of the\nchart anyway. If you downsample server-side, you also save bandwidth.\n\n\nQ: Flot isn't working when I'm using JSON data as source!\n\nA: Actually, Flot loves JSON data, you just got the format wrong.\nDouble check that you're not inputting strings instead of numbers,\nlike [[\"0\", \"-2.13\"], [\"5\", \"4.3\"]]. This is most common mistake, and\nthe error might not show up immediately because Javascript can do some\nconversion automatically.\n\n\nQ: Can I export the graph?\n\nA: This is a limitation of the canvas technology. There's a hook in\nthe canvas object for getting an image out, but you won't get the tick\nlabels. And it's not likely to be supported by IE. At this point, your\nbest bet is probably taking a screenshot, e.g. with PrtScn.\n\n\nQ: The bars are all tiny in time mode?\n\nA: It's not really possible to determine the bar width automatically.\nSo you have to set the width with the barWidth option which is NOT in\npixels, but in the units of the x axis (or the y axis for horizontal\nbars). For time mode that's milliseconds so the default value of 1\nmakes the bars 1 millisecond wide.\n\n\nQ: Can I use Flot with libraries like Mootools or Prototype?\n\nA: Yes, Flot supports it out of the box and it's easy! Just use jQuery\ninstead of $, e.g. call jQuery.plot instead of $.plot and use\njQuery(something) instead of $(something). As a convenience, you can\nput in a DOM element for the graph placeholder where the examples and\nthe API documentation are using jQuery objects.\n\nDepending on how you include jQuery, you may have to add one line of\ncode to prevent jQuery from overwriting functions from the other\nlibraries, see the documentation in jQuery (\"Using jQuery with other\nlibraries\") for details.\n\n\nQ: Flot doesn't work with [insert name of Javascript UI framework]!\n\nA: The only non-standard thing used by Flot is the canvas tag;\notherwise it is simply a series of absolute positioned divs within the\nplaceholder tag you put in. If this is not working, it's probably\nbecause the framework you're using is doing something weird with the\nDOM, or you're using it the wrong way.\n\nA common problem is that there's display:none on a container until the\nuser does something. Many tab widgets work this way, and there's\nnothing wrong with it - you just can't call Flot inside a display:none\ncontainer as explained in the README so you need to hold off the Flot\ncall until the container is actually displayed (or use\nvisibility:hidden instead of display:none or move the container\noff-screen).\n\nIf you find there's a specific thing we can do to Flot to help, feel\nfree to submit a bug report. Otherwise, you're welcome to ask for help\non the forum/mailing list, but please don't submit a bug report to\nFlot.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/LICENSE.txt",
    "content": "Copyright (c) 2007-2009 IOLA and Ole Laursen\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/Makefile",
    "content": "# Makefile for generating minified files\n\n.PHONY: all\n\n# we cheat and process all .js files instead of an exhaustive list\nall: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js)))\n\n%.min.js: %.js\n\tyui-compressor $< -o $@\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/NEWS.txt",
    "content": "Flot 0.7\n--------\n\nAPI changes:\n\nMultiple axes support. Code using dual axes should be changed from\nusing x2axis/y2axis in the options to using an array (although\nbackwards-compatibility hooks are in place). For instance,\n\n  {\n    xaxis: { ... }, x2axis: { ... },\n    yaxis: { ... }, y2axis: { ... }\n  }\n\nbecomes\n\n  {\n    xaxes: [ { ... }, { ... } ],\n    yaxes: [ { ... }, { ... } ]\n  }\n\nNote that if you're just using one axis, continue to use the\nxaxis/yaxis directly (it now sets the default settings for the\narrays). Plugins touching the axes must be ported to take the extra\naxes into account, check the source to see some examples.\n\nA related change is that the visibility of axes is now auto-detected.\nSo if you were relying on an axis to show up even without any data in\nthe chart, you now need to set the axis \"show\" option explicitly.\n\n\"tickColor\" on the grid options is now deprecated in favour of a\ncorresponding option on the axes, so { grid: { tickColor: \"#000\" }}\nbecomes { xaxis: { tickColor: \"#000\"}, yaxis: { tickColor: \"#000\"} },\nbut if you just configure a base color Flot will now autogenerate a\ntick color by adding transparency. Backwards-compatibility hooks are\nin place.\n\nFinal note: now that IE 9 is coming out with canvas support, you may\nwant to adapt the excanvas include to skip loading it in IE 9 (the\nexamples have been adapted thanks to Ryley Breiddal). An alternative\nto excanvas using Flash has also surfaced, if your graphs are slow in\nIE, you may want to give it a spin:\n\n  http://code.google.com/p/flashcanvas/\n\n\nChanges:\n\n- Support for specifying a bottom for each point for line charts when\n  filling them, this means that an arbitrary bottom can be used\n  instead of just the x axis (based on patches patiently provided by\n  Roman V. Prikhodchenko).\n- New fillbetween plugin that can compute a bottom for a series from\n  another series, useful for filling areas between lines (see new\n  example percentiles.html for a use case).\n- More predictable handling of gaps for the stacking plugin, now all\n  undefined ranges are skipped.\n- Stacking plugin can stack horizontal bar charts.\n- Navigate plugin now redraws the plot while panning instead of only\n  after the fact (can be disabled by setting the pan.frameRate option\n  to null), raised by lastthemy (issue 235).\n- Date formatter now accepts %0m and %0d to get a zero-padded month or\n  day (issue raised by Maximillian Dornseif).\n- Revamped internals to support an unlimited number of axes, not just\n  dual (sponsored by Flight Data Services,\n  www.flightdataservices.com).\n- New setting on axes, \"tickLength\", to control the size of ticks or\n  turn them off without turning off the labels.\n- Axis labels are now put in container divs with classes, for instance\n  labels in the x axes can be reached via \".xAxis .tickLabel\".\n- Support for setting the color of an axis (sponsored by Flight Data\n  Services, www.flightdataservices.com).\n- Tick color is now auto-generated as the base color with some\n  transparency (unless you override it).\n- Support for aligning ticks in the axes with \"alignTicksWithAxis\" to\n  ensure that they appear next to each other rather than in between,\n  at the expense of possibly awkward tick steps (sponsored by Flight\n  Data Services, www.flightdataservices.com).\n- Support for customizing the point type through a callback when\n  plotting points and new symbol plugin with some predefined point\n  types (sponsored by Utility Data Corporation).\n- Resize plugin for automatically redrawing when the placeholder\n  changes size, e.g. on window resizes (sponsored by Novus Partners).\n  A resize() method has been added to plot object facilitate this.\n- Support Infinity/-Infinity for plotting asymptotes by hacking it\n  into +/-Number.MAX_VALUE (reported by rabaea.mircea).\n- Support for restricting navigate plugin to not pan/zoom an axis (based\n  on patch by kkaefer).\n- Support for providing the drag cursor for the navigate plugin as an\n  option (based on patch by Kelly T. Moore).\n- Options for controlling whether an axis is shown or not (suggestion\n  by Timo Tuominen) and whether to reserve space for it even if it\n  isn't shown.\n- New attribute $.plot.version with the Flot version as a string.\n- The version comment is now included in the minified jquery.flot.min.js.\n- New options.grid.minBorderMargin for adjusting the minimum margin\n  provided around the border (based on patch by corani, issue 188).\n- Refactor replot behaviour so Flot tries to reuse the existing\n  canvas, adding shutdown() methods to the plot (based on patch by\n  Ryley Breiddal, issue 269). This prevents a memory leak in Chrome\n  and hopefully makes replotting faster for those who are using $.plot\n  instead of .setData()/.draw(). Also update jQuery to 1.5.1 to\n  prevent IE leaks fixed in jQuery.\n- New real-time line chart example.\n\n- New hooks: drawSeries, shutdown\n\nBug fixes:\n\n- Fixed problem with findNearbyItem and bars on top of each other\n  (reported by ragingchikn, issue 242).\n- Fixed problem with ticks and the border (based on patch from\n  ultimatehustler69, issue 236).\n- Fixed problem with plugins adding options to the series objects.\n- Fixed a problem introduced in 0.6 with specifying a gradient with {\n  brightness: x, opacity: y }.\n- Don't use $.browser.msie, check for getContext on the created canvas\n  element instead and try to use excanvas if it's not found (fixes IE\n  9 compatibility).\n- highlight(s, index) was looking up the point in the original s.data\n  instead of in the computed datapoints array, which breaks with\n  plugins that modify the datapoints (such as the stacking plugin).\n  Issue 316 reported by curlypaul924.\n- More robust handling of axis from data passed in from getData()\n  (problem reported by Morgan).\n- Fixed problem with turning off bar outline (issue 253, fix by Jordi\n  Castells).\n- Check the selection passed into setSelection in the selection\n  plugin, to guard against errors when synchronizing plots (fix by Lau\n  Bech Lauritzen).\n- Fix bug in crosshair code with mouseout resetting the crosshair even\n  if it is locked (fix by Lau Bech Lauritzen and Banko Adam).\n- Fix bug with points plotting using line width from lines rather than\n  points.\n- Fix bug with passing non-array 0 data (for plugins that don't expect\n  arrays, patch by vpapp1).\n- Fix errors in JSON in examples so they work with jQuery 1.4.2\n  (fix reported by honestbleeps, issue 357).\n- Fix bug with tooltip in interacting.html, this makes the tooltip\n  much smoother (fix by bdkahn). Fix related bug inside highlighting\n  handler in Flot.\n- Use closure trick to make inline colorhelpers plugin respect\n  jQuery.noConflict(true), renaming the global jQuery object (reported\n  by Nick Stielau).\n- Listen for mouseleave events and fire a plothover event with empty\n  item when it occurs to drop highlights when the mouse leaves the\n  plot (reported by by outspirit).\n- Fix bug with using aboveData with a background (reported by\n  amitayd).\n- Fix possible excanvas leak (report and suggested fix by tom9729).\n- Fix bug with backwards compatibility for shadowSize = 0 (report and\n  suggested fix by aspinak).\n- Adapt examples to skip loading excanvas (fix by Ryley Breiddal).\n- Fix bug that prevent a simple f(x) = -x transform from working\n  correctly (fix by Mike, issue 263).\n- Fix bug in restoring cursor in navigate plugin (reported by Matteo\n  Gattanini, issue 395).\n- Fix bug in picking items when transform/inverseTransform is in use\n  (reported by Ofri Raviv, and patches and analysis by Jan and Tom\n  Paton, issue 334 and 467).\n- Fix problem with unaligned ticks and hover/click events caused by\n  padding on the placeholder by hardcoding the placeholder padding to\n  0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some\n  other people, issue 301).\n- Update colorhelpers plugin to avoid dying when trying to parse an\n  invalid string (reported by cadavor, issue 483).\n\n\nFlot 0.6\n--------\n\nAPI changes:\n\n1. Selection support has been moved to a plugin. Thus if you're\npassing selection: { mode: something }, you MUST include the file\njquery.flot.selection.js after jquery.flot.js. This reduces the size\nof base Flot and makes it easier to customize the selection as well as\nimproving code clarity. The change is based on a patch from andershol.\n\n2. In the global options specified in the $.plot command,\n\"lines\", \"points\", \"bars\" and \"shadowSize\" have been moved to a\nsub-object called \"series\", i.e.\n\n  $.plot(placeholder, data, { lines: { show: true }})\n\nshould be changed to\n\n  $.plot(placeholder, data, { series: { lines: { show: true }}})\n\nAll future series-specific options will go into this sub-object to\nsimplify plugin writing. Backward-compatibility code is in place, so\nold code should not break.\n\n3. \"plothover\" no longer provides the original data point, but instead\na normalized one, since there may be no corresponding original point.\n\n4. Due to a bug in previous versions of jQuery, you now need at least\njQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some\nimprovements in event handling speed.\n\n\nChanges:\n\n- Added support for disabling interactivity for specific data series\n  (request from Ronald Schouten and Steve Upton).\n\n- Flot now calls $() on the placeholder and optional legend container\n  passed in so you can specify DOM elements or CSS expressions to make\n  it easier to use Flot with libraries like Prototype or Mootools or\n  through raw JSON from Ajax responses.\n\n- A new \"plotselecting\" event is now emitted while the user is making\n  a selection.\n\n- The \"plothover\" event is now emitted immediately instead of at most\n  10 times per second, you'll have to put in a setTimeout yourself if\n  you're doing something really expensive on this event.\n\n- The built-in date formatter can now be accessed as\n  $.plot.formatDate(...) (suggestion by Matt Manela) and even\n  replaced.\n\n- Added \"borderColor\" option to the grid (patch from Amaury Chamayou\n  and patch from Mike R. Williamson).\n\n- Added support for gradient backgrounds for the grid, take a look at\n  the \"setting options\" example (based on patch from Amaury Chamayou,\n  issue 90).\n\n- Gradient bars (suggestion by stefpet).\n  \n- Added a \"plotunselected\" event which is triggered when the selection\n  is removed, see \"selection\" example (suggestion by Meda Ugo);\n\n- The option legend.margin can now specify horizontal and vertical\n  margins independently (suggestion by someone who's annoyed).\n\n- Data passed into Flot is now copied to a new canonical format to\n  enable further processing before it hits the drawing routines. As a\n  side-effect, this should make Flot more robust in the face of bad\n  data (and fixes issue 112).\n\n- Step-wise charting: line charts have a new option \"steps\" that when\n  set to true connects the points with horizontal/vertical steps\n  instead of diagonal lines.\n\n- The legend labelFormatter now passes the series in addition to just\n  the label (suggestion by Vincent Lemeltier).\n\n- Horizontal bars (based on patch by Jason LeBrun).\n\n- Support for partial bars by specifying a third coordinate, i.e. they\n  don't have to start from the axis. This can be used to make stacked\n  bars.\n\n- New option to disable the (grid.show).\n\n- Added pointOffset method for converting a point in data space to an\n  offset within the placeholder.\n  \n- Plugin system: register an init method in the $.flot.plugins array\n  to get started, see PLUGINS.txt for details on how to write plugins\n  (it's easy). There are also some extra methods to enable access to\n  internal state.\n\n- Hooks: you can register functions that are called while Flot is\n  crunching the data and doing the plot. This can be used to modify\n  Flot without changing the source, useful for writing plugins. Some\n  hooks are defined, more are likely to come.\n  \n- Threshold plugin: you can set a threshold and a color, and the data\n  points below that threshold will then get the color. Useful for\n  marking data below 0, for instance.\n\n- Stack plugin: you can specify a stack key for each series to have\n  them summed. This is useful for drawing additive/cumulative graphs\n  with bars and (currently unfilled) lines.\n\n- Crosshairs plugin: trace the mouse position on the axes, enable with\n  crosshair: { mode: \"x\"} (see the new tracking example for a use).\n\n- Image plugin: plot prerendered images.\n\n- Navigation plugin for panning and zooming a plot.\n\n- More configurable grid.\n\n- Axis transformation support, useful for non-linear plots, e.g. log\n  axes and compressed time axes (like omitting weekends).\n\n- Support for twelve-hour date formatting (patch by Forrest Aldridge).\n\n- The color parsing code in Flot has been cleaned up and split out so\n  it's now available as a separate jQuery plugin. It's included inline\n  in the Flot source to make dependency managing easier. This also\n  makes it really easy to use the color helpers in Flot plugins.\n\nBug fixes:\n\n- Fixed two corner-case bugs when drawing filled curves (report and\n  analysis by Joshua Varner).\n- Fix auto-adjustment code when setting min to 0 for an axis where the\n  dataset is completely flat on that axis (report by chovy).\n- Fixed a bug with passing in data from getData to setData when the\n  secondary axes are used (issue 65, reported by nperelman).\n- Fixed so that it is possible to turn lines off when no other chart\n  type is shown (based on problem reported by Glenn Vanderburg), and\n  fixed so that setting lineWidth to 0 also hides the shadow (based on\n  problem reported by Sergio Nunes).\n- Updated mousemove position expression to the latest from jQuery (bug\n  reported by meyuchas).\n- Use CSS borders instead of background in legend (fix printing issue 25\n  and 45).\n- Explicitly convert axis min/max to numbers.\n- Fixed a bug with drawing marking lines with different colors\n  (reported by Khurram).\n- Fixed a bug with returning y2 values in the selection event (fix\n  by exists, issue 75).\n- Only set position relative on placeholder if it hasn't already a\n  position different from static (reported by kyberneticist, issue 95).\n- Don't round markings to prevent sub-pixel problems (reported by Dan\n  Lipsitt).\n- Make the grid border act similarly to a regular CSS border, i.e.\n  prevent it from overlapping the plot itself. This also fixes a\n  problem with anti-aliasing when the width is 1 pixel (reported by\n  Anthony Ettinger).\n- Imported version 3 of excanvas and fixed two issues with the newer\n  version. Hopefully, this will make Flot work with IE8 (nudge by\n  Fabien Menager, further analysis by Booink, issue 133).\n- Changed the shadow code for lines to hopefully look a bit better\n  with vertical lines.\n- Round tick positions to avoid possible problems with fractions\n  (suggestion by Fred, issue 130).\n- Made the heuristic for determining how many ticks to aim for a bit\n  smarter.\n- Fix for uneven axis margins (report and patch by Paul Kienzle) and\n  snapping to ticks (concurrent report and patch by lifthrasiir).\n- Fixed bug with slicing in findNearbyItems (patch by zollman).\n- Make heuristic for x axis label widths more dynamic (patch by\n  rickinhethuis).\n- Make sure points on top take precedence when finding nearby points\n  when hovering (reported by didroe, issue 224).\n\nFlot 0.5\n--------\n\nBackwards API change summary: Timestamps are now in UTC. Also\n\"selected\" event -> becomes \"plotselected\" with new data, the\nparameters for setSelection are now different (but backwards\ncompatibility hooks are in place), coloredAreas becomes markings with\na new interface (but backwards compatibility hooks are in place).\n\n\nInteractivity: added a new \"plothover\" event and this and the\n\"plotclick\" event now returns the closest data item (based on patch by\n/david, patch by Mark Byers for bar support). See the revamped\n\"interacting with the data\" example for some hints on what you can do.\n\nHighlighting: you can now highlight points and datapoints are\nautohighlighted when you hover over them (if hovering is turned on).\n\nSupport for dual axis has been added (based on patch by someone who's\nannoyed and /david). For each data series you can specify which axes\nit belongs to, and there are two more axes, x2axis and y2axis, to\ncustomize. This affects the \"selected\" event which has been renamed to\n\"plotselected\" and spews out { xaxis: { from: -10, to: 20 } ... },\nsetSelection in which the parameters are on a new form (backwards\ncompatible hooks are in place so old code shouldn't break) and\nmarkings (formerly coloredAreas).\n\nTimestamps in time mode are now displayed according to\nUTC instead of the time zone of the visitor. This affects the way the\ntimestamps should be input; you'll probably have to offset the\ntimestamps according to your local time zone. It also affects any\ncustom date handling code (which basically now should use the\nequivalent UTC date mehods, e.g. .setUTCMonth() instead of\n.setMonth().\n\nAdded support for specifying the size of tick labels (axis.labelWidth,\naxis.labelHeight). Useful for specifying a max label size to keep\nmultiple plots aligned.\n\nMarkings, previously coloredAreas, are now specified as ranges on the\naxes, like { xaxis: { from: 0, to: 10 }}. Furthermore with markings\nyou can now draw horizontal/vertical lines by setting from and to to\nthe same coordinate (idea from line support patch by by Ryan Funduk).\n\nThe \"fill\" option can now be a number that specifies the opacity of\nthe fill.\n\nYou can now specify a coordinate as null (like [2, null]) and Flot\nwill take the other coordinate into account when scaling the axes\n(based on patch by joebno).\n\nNew option for bars \"align\". Set it to \"center\" to center the bars on\nthe value they represent.\n\nsetSelection now takes a second parameter which you can use to prevent\nthe method from firing the \"plotselected\" handler. \n\nUsing the \"container\" option in legend now overwrites the container\nelement instead of just appending to it (fixes infinite legend bug,\nreported by several people, fix by Brad Dewey).\n\nFixed a bug in calculating spacing around the plot (reported by\ntimothytoe). Fixed a bug in finding max values for all-negative data\nsets. Prevent the possibility of eternal looping in tick calculations.\nFixed a bug when borderWidth is set to 0 (reported by\nRob/sanchothefat). Fixed a bug with drawing bars extending below 0\n(reported by James Hewitt, patch by Ryan Funduk). Fixed a\nbug with line widths of bars (reported by MikeM). Fixed a bug with\n'nw' and 'sw' legend positions. Improved the handling of axis\nauto-scaling with bars. Fixed a bug with multi-line x-axis tick\nlabels (reported by Luca Ciano). IE-fix help by Savage Zhang.\n\n\nFlot 0.4\n--------\n\nAPI changes: deprecated axis.noTicks in favor of just specifying the\nnumber as axis.ticks. So \"xaxis: { noTicks: 10 }\" becomes\n\"xaxis: { ticks: 10 }\"\n\nTime series support. Specify axis.mode: \"time\", put in Javascript\ntimestamps as data, and Flot will automatically spit out sensible\nticks. Take a look at the two new examples. The format can be\ncustomized with axis.timeformat and axis.monthNames, or if that fails\nwith axis.tickFormatter.\n\nSupport for colored background areas via grid.coloredAreas. Specify an\narray of { x1, y1, x2, y2 } objects or a function that returns these\ngiven { xmin, xmax, ymin, ymax }.\n\nMore members on the plot object (report by Chris Davies and others).\n\"getData\" for inspecting the assigned settings on data series (e.g.\ncolor) and \"setData\", \"setupGrid\" and \"draw\" for updating the contents\nwithout a total replot.\n\nThe default number of ticks to aim for is now dependent on the size of\nthe plot in pixels. Support for customizing tick interval sizes\ndirectly with axis.minTickSize and axis.tickSize.\n\nCleaned up the automatic axis scaling algorithm and fixed how it\ninteracts with ticks. Also fixed a couple of tick-related corner case\nbugs (one reported by mainstreetmark, another reported by timothytoe).\n\nThe option axis.tickFormatter now takes a function with two\nparameters, the second parameter is an optional object with\ninformation about the axis. It has min, max, tickDecimals, tickSize.\n\nAdded support for segmented lines (based on patch from Michael\nMacDonald) and for ignoring null and bad values (suggestion from Nick\nKonidaris and joshwaihi). \n\nAdded support for changing the border width (joebno and safoo).\nLabel colors can be changed via CSS by selecting the tickLabel class.\n\nFixed a bug in handling single-item bar series (reported by Emil\nFilipov). Fixed erratic behaviour when interacting with the plot\nwith IE 7 (reported by Lau Bech Lauritzen). Prevent IE/Safari text\nselection when selecting stuff on the canvas.\n\n\n\nFlot 0.3\n--------\n\nThis is mostly a quick-fix release because jquery.js wasn't included\nin the previous zip/tarball.\n\nSupport clicking on the plot. Turn it on with grid: { clickable: true },\nthen you get a \"plotclick\" event on the graph placeholder with the\nposition in units of the plot.\n\nFixed a bug in dealing with data where min = max, thanks to Michael\nMessinides.\n\nInclude jquery.js in the zip/tarball.\n\n\nFlot 0.2\n--------\n\nAdded support for putting a background behind the default legend. The\ndefault is the partly transparent background color. Added\nbackgroundColor and backgroundOpacity to the legend options to control\nthis.\n\nThe ticks options can now be a callback function that takes one\nparameter, an object with the attributes min and max. The function\nshould return a ticks array.\n\nAdded labelFormatter option in legend, useful for turning the legend\nlabels into links.\n\nFixed a couple of bugs.\n\nThe API should now be fully documented.\n\nPatch from Guy Fraser to make parts of the code smaller.\n\nAPI changes: Moved labelMargin option to grid from x/yaxis.\n\n\nFlot 0.1\n--------\n\nFirst public release.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/PLUGINS.txt",
    "content": "Writing plugins\n---------------\n\nAll you need to do to make a new plugin is creating an init function\nand a set of options (if needed), stuffing it into an object and\nputting it in the $.plot.plugins array. For example:\n\n  function myCoolPluginInit(plot) {\n    plot.coolstring = \"Hello!\";\n  };\n\n  $.plot.plugins.push({ init: myCoolPluginInit, options: { ... } });\n\n  // if $.plot is called, it will return a plot object with the\n  // attribute \"coolstring\"\n\nNow, given that the plugin might run in many different places, it's\na good idea to avoid leaking names. The usual trick here is wrap the\nabove lines in an anonymous function which is called immediately, like\nthis: (function () { inner code ... })(). To make it even more robust\nin case $ is not bound to jQuery but some other Javascript library, we\ncan write it as\n\n  (function ($) {\n    // plugin definition\n    // ...\n  })(jQuery);\n\nThere's a complete example below, but you should also check out the\nplugins bundled with Flot.\n\n\nComplete example\n----------------\n  \nHere is a simple debug plugin which alerts each of the series in the\nplot. It has a single option that control whether it is enabled and\nhow much info to output:\n\n  (function ($) {\n    function init(plot) {\n      var debugLevel = 1;\n    \n      function checkDebugEnabled(plot, options) {\n        if (options.debug) {\n          debugLevel = options.debug;\n            \n          plot.hooks.processDatapoints.push(alertSeries);\n        }\n      }\n\n      function alertSeries(plot, series, datapoints) {\n        var msg = \"series \" + series.label;\n        if (debugLevel > 1)\n          msg += \" with \" + series.data.length + \" points\";\n        alert(msg);\n      }\n    \n      plot.hooks.processOptions.push(checkDebugEnabled);\n    }\n\n    var options = { debug: 0 };\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: \"simpledebug\",\n        version: \"0.1\"\n    });\n  })(jQuery);\n\nWe also define \"name\" and \"version\". It's not used by Flot, but might\nbe helpful for other plugins in resolving dependencies.\n  \nPut the above in a file named \"jquery.flot.debug.js\", include it in an\nHTML page and then it can be used with:\n\n  $.plot($(\"#placeholder\"), [...], { debug: 2 });\n\nThis simple plugin illustrates a couple of points:\n\n - It uses the anonymous function trick to avoid name pollution.\n - It can be enabled/disabled through an option.\n - Variables in the init function can be used to store plot-specific\n   state between the hooks.\n\nThe two last points are important because there may be multiple plots\non the same page, and you'd want to make sure they are not mixed up.\n\n\nShutting down a plugin\n----------------------\n\nEach plot object has a shutdown hook which is run when plot.shutdown()\nis called. This usually mostly happens in case another plot is made on\ntop of an existing one.\n\nThe purpose of the hook is to give you a chance to unbind any event\nhandlers you've registered and remove any extra DOM things you've\ninserted.\n\nThe problem with event handlers is that you can have registered a\nhandler which is run in some point in the future, e.g. with\nsetTimeout(). Meanwhile, the plot may have been shutdown and removed,\nbut because your event handler is still referencing it, it can't be\ngarbage collected yet, and worse, if your handler eventually runs, it\nmay overwrite stuff on a completely different plot.\n\n \nSome hints on the options\n-------------------------\n   \nPlugins should always support appropriate options to enable/disable\nthem because the plugin user may have several plots on the same page\nwhere only one should use the plugin. In most cases it's probably a\ngood idea if the plugin is turned off rather than on per default, just\nlike most of the powerful features in Flot.\n\nIf the plugin needs options that are specific to each series, like the\npoints or lines options in core Flot, you can put them in \"series\" in\nthe options object, e.g.\n\n  var options = {\n    series: {\n      downsample: {\n        algorithm: null,\n        maxpoints: 1000\n      }\n    }\n  }\n\nThen they will be copied by Flot into each series, providing default\nvalues in case none are specified.\n\nThink hard and long about naming the options. These names are going to\nbe public API, and code is going to depend on them if the plugin is\nsuccessful.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/README.txt",
    "content": "About\n-----\n\nFlot is a Javascript plotting library for jQuery. Read more at the\nwebsite:\n\n  http://code.google.com/p/flot/\n\nTake a look at the examples linked from above, they should give a good\nimpression of what Flot can do and the source code of the examples is\nprobably the fastest way to learn how to use Flot.\n  \n\nInstallation\n------------\n\nJust include the Javascript file after you've included jQuery.\n\nGenerally, all browsers that support the HTML5 canvas tag are\nsupported.\n\nFor support for Internet Explorer < 9, you can use Excanvas, a canvas\nemulator; this is used in the examples bundled with Flot. You just\ninclude the excanvas script like this:\n\n  <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"excanvas.min.js\"></script><![endif]-->\n\nIf it's not working on your development IE 6.0, check that it has\nsupport for VML which Excanvas is relying on. It appears that some\nstripped down versions used for test environments on virtual machines\nlack the VML support.\n\nYou can also try using Flashcanvas (see\nhttp://code.google.com/p/flashcanvas/), which uses Flash to do the\nemulation. Although Flash can be a bit slower to load than VML, if\nyou've got a lot of points, the Flash version can be much faster\noverall. Flot contains some wrapper code for activating Excanvas which\nFlashcanvas is compatible with.\n\nYou need at least jQuery 1.2.6, but try at least 1.3.2 for interactive\ncharts because of performance improvements in event handling.\n\n\nBasic usage\n-----------\n\nCreate a placeholder div to put the graph in:\n\n   <div id=\"placeholder\"></div>\n\nYou need to set the width and height of this div, otherwise the plot\nlibrary doesn't know how to scale the graph. You can do it inline like\nthis:\n\n   <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\nYou can also do it with an external stylesheet. Make sure that the\nplaceholder isn't within something with a display:none CSS property -\nin that case, Flot has trouble measuring label dimensions which\nresults in garbled looks and might have trouble measuring the\nplaceholder dimensions which is fatal (it'll throw an exception).\n\nThen when the div is ready in the DOM, which is usually on document\nready, run the plot function:\n\n  $.plot($(\"#placeholder\"), data, options);\n\nHere, data is an array of data series and options is an object with\nsettings if you want to customize the plot. Take a look at the\nexamples for some ideas of what to put in or look at the reference\nin the file \"API.txt\". Here's a quick example that'll draw a line from\n(0, 0) to (1, 1):\n\n  $.plot($(\"#placeholder\"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });\n\nThe plot function immediately draws the chart and then returns a plot\nobject with a couple of methods.\n\n\nWhat's with the name?\n---------------------\n\nFirst: it's pronounced with a short o, like \"plot\". Not like \"flawed\".\n\nSo \"Flot\" rhymes with \"plot\".\n\nAnd if you look up \"flot\" in a Danish-to-English dictionary, some up\nthe words that come up are \"good-looking\", \"attractive\", \"stylish\",\n\"smart\", \"impressive\", \"extravagant\". One of the main goals with Flot\nis pretty looks.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/ajax.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Example of loading data dynamically with AJAX. Percentage change in GDP (source: <a href=\"http://epp.eurostat.ec.europa.eu/tgm/table.do?tab=table&init=1&plugin=1&language=en&pcode=tsieb020\">Eurostat</a>). Click the buttons below.</p>\n\n    <p>The data is fetched over HTTP, in this case directly from text\n    files. Usually the URL would point to some web server handler\n    (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that\n    extracts it from a database and serializes it to JSON.</p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"First dataset\"> -\n      <a href=\"data-eu-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"Second dataset\"> -\n      <a href=\"data-japan-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>\n      <input class=\"fetchSeries\" type=\"button\" value=\"Third dataset\"> -\n      <a href=\"data-usa-gdp-growth.json\">data</a> -\n      <span></span>\n    </p>\n\n    <p>If you combine AJAX with setTimeout, you can poll the server\n       for new data.</p>\n\n    <p>\n      <input class=\"dataUpdate\" type=\"button\" value=\"Poll for data\">\n    </p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var options = {\n        lines: { show: true },\n        points: { show: true },\n        xaxis: { tickDecimals: 0, tickSize: 1 }\n    };\n    var data = [];\n    var placeholder = $(\"#placeholder\");\n    \n    $.plot(placeholder, data, options);\n\n    \n    // fetch one series, adding to what we got\n    var alreadyFetched = {};\n    \n    $(\"input.fetchSeries\").click(function () {\n        var button = $(this);\n        \n        // find the URL in the link right next to us \n        var dataurl = button.siblings('a').attr('href');\n\n        // then fetch the data with jQuery\n        function onDataReceived(series) {\n            // extract the first coordinate pair so you can see that\n            // data is now an ordinary Javascript object\n            var firstcoordinate = '(' + series.data[0][0] + ', ' + series.data[0][1] + ')';\n\n            button.siblings('span').text('Fetched ' + series.label + ', first point: ' + firstcoordinate);\n\n            // let's add it to our current data\n            if (!alreadyFetched[series.label]) {\n                alreadyFetched[series.label] = true;\n                data.push(series);\n            }\n            \n            // and plot all we got\n            $.plot(placeholder, data, options);\n         }\n        \n        $.ajax({\n            url: dataurl,\n            method: 'GET',\n            dataType: 'json',\n            success: onDataReceived\n        });\n    });\n\n\n    // initiate a recurring data update\n    $(\"input.dataUpdate\").click(function () {\n        // reset data\n        data = [];\n        alreadyFetched = {};\n        \n        $.plot(placeholder, data, options);\n\n        var iteration = 0;\n        \n        function fetchData() {\n            ++iteration;\n\n            function onDataReceived(series) {\n                // we get all the data in one go, if we only got partial\n                // data, we could merge it with what we already got\n                data = [ series ];\n                \n                $.plot($(\"#placeholder\"), data, options);\n            }\n        \n            $.ajax({\n                // usually, we'll just call the same URL, a script\n                // connected to a database, but in this case we only\n                // have static example files so we need to modify the\n                // URL\n                url: \"data-eu-gdp-growth-\" + iteration + \".json\",\n                method: 'GET',\n                dataType: 'json',\n                success: onDataReceived\n            });\n            \n            if (iteration < 5)\n                setTimeout(fetchData, 1000);\n            else {\n                data = [];\n                alreadyFetched = {};\n            }\n        }\n\n        setTimeout(fetchData, 1000);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/annotating.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Flot has support for simple background decorations such as\n    lines and rectangles. They can be useful for marking up certain\n    areas. You can easily add any HTML you need with standard DOM\n    manipulation, e.g. for labels. For drawing custom shapes there is\n    also direct access to the canvas.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    // generate a dataset\n    var d1 = [];\n    for (var i = 0; i < 20; ++i)\n        d1.push([i, Math.sin(i)]);\n    \n    var data = [{ data: d1, label: \"Pressure\", color: \"#333\" }];\n\n    // setup background areas\n    var markings = [\n        { color: '#f6f6f6', yaxis: { from: 1 } },\n        { color: '#f6f6f6', yaxis: { to: -1 } },\n        { color: '#000', lineWidth: 1, xaxis: { from: 2, to: 2 } },\n        { color: '#000', lineWidth: 1, xaxis: { from: 8, to: 8 } }\n    ];\n    \n    var placeholder = $(\"#placeholder\");\n    \n    // plot it\n    var plot = $.plot(placeholder, data, {\n        bars: { show: true, barWidth: 0.5, fill: 0.9 },\n        xaxis: { ticks: [], autoscaleMargin: 0.02 },\n        yaxis: { min: -2, max: 2 },\n        grid: { markings: markings }\n    });\n\n    // add labels\n    var o;\n\n    o = plot.pointOffset({ x: 2, y: -1.2});\n    // we just append it to the placeholder which Flot already uses\n    // for positioning\n    placeholder.append('<div style=\"position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller\">Warming up</div>');\n\n    o = plot.pointOffset({ x: 8, y: -1.2});\n    placeholder.append('<div style=\"position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller\">Actual measurements</div>');\n\n    // draw a little arrow on top of the last label to demonstrate\n    // canvas drawing\n    var ctx = plot.getCanvas().getContext(\"2d\");\n    ctx.beginPath();\n    o.left += 4;\n    ctx.moveTo(o.left, o.top);\n    ctx.lineTo(o.left, o.top - 10);\n    ctx.lineTo(o.left + 10, o.top - 5);\n    ctx.lineTo(o.left, o.top);\n    ctx.fillStyle = \"#000\";\n    ctx.fill();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/basic.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <p>Simple example. You don't need to specify much to get an\n       attractive look. Put in a placeholder, make sure you set its\n       dimensions (otherwise the plot library will barf) and call the\n       plot function with the data. The axes are automatically\n       scaled.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n    // a null signifies separate line segments\n    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n    \n    $.plot($(\"#placeholder\"), [ d1, d2, d3 ]);\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-1.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-2.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-3.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-4.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth-5.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-eu-gdp-growth.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-japan-gdp-growth.json",
    "content": "{\n    \"label\": \"Japan\",\n    \"data\": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/data-usa-gdp-growth.json",
    "content": "{\n    \"label\": \"USA\",\n    \"data\": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]]\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/graph-types.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>Flot supports lines, points, filled areas, bars and any\n    combinations of these, in the same plot and even on the same data\n    series.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n    var d3 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d3.push([i, Math.cos(i)]);\n\n    var d4 = [];\n    for (var i = 0; i < 14; i += 0.1)\n        d4.push([i, Math.sqrt(i * 10)]);\n    \n    var d5 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d5.push([i, Math.sqrt(i)]);\n\n    var d6 = [];\n    for (var i = 0; i < 14; i += 0.5 + Math.random())\n        d6.push([i, Math.sqrt(2*i + Math.sin(i) + 5)]);\n                        \n    $.plot($(\"#placeholder\"), [\n        {\n            data: d1,\n            lines: { show: true, fill: true }\n        },\n        {\n            data: d2,\n            bars: { show: true }\n        },\n        {\n            data: d3,\n            points: { show: true }\n        },\n        {\n            data: d4,\n            lines: { show: true }\n        },\n        {\n            data: d5,\n            lines: { show: true },\n            points: { show: true }\n        },\n        {\n            data: d6,\n            lines: { show: true, steps: true }\n        }\n    ]);\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/image.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.image.js\"></script>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:400px;height:400px;\"></div>\n\n    <p>The Cat's Eye Nebula (<a href=\"http://hubblesite.org/gallery/album/nebula/pr2004027a/\">picture from Hubble</a>).</p>\n    \n    <p>With the image plugin, you can plot images. This is for example\n    useful for getting ticks on complex prerendered visualizations.\n    Instead of inputting data points, you put in the images and where\n    their two opposite corners are supposed to be in plot space.</p>\n\n    <p>Images represent a little further complication because you need\n    to make sure they are loaded before you can use them (Flot skips\n    incomplete images). The plugin comes with a couple of helpers\n    for doing that.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var data = [ [ [\"hs-2004-27-a-large_web.jpg\", -10, -10, 10, 10] ] ];\n    var options = {\n            series: { images: { show: true } },\n            xaxis: { min: -8, max: 4 },\n            yaxis: { min: -8, max: 4 }\n    };\n\n    $.plot.image.loadDataImages(data, options, function () {\n        $.plot($(\"#placeholder\"), data, options);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <p>Here are some examples for <a href=\"http://code.google.com/p/flot/\">Flot</a>, the Javascript charting library for jQuery:</p>\n\n    <ul>\n      <li><a href=\"basic.html\">Basic example</a></li>\n      <li><a href=\"graph-types.html\">Different graph types</a></li>\n      <li><a href=\"setting-options.html\">Setting various options</a> and <a href=\"annotating.html\">annotating a chart</a></li>\n      <li><a href=\"ajax.html\">Updating graphs with AJAX</a> and <a href=\"realtime.html\">real-time updates</a></li>\n    </ul>\n\n    <p>Being interactive:</p>\n    \n    <ul>\n      <li><a href=\"turning-series.html\">Turning series on/off</a></li>\n      <li><a href=\"selection.html\">Rectangular selection support and zooming</a> and <a href=\"zooming.html\">zooming with overview</a> (both with selection plugin)</li>\n      <li><a href=\"interacting.html\">Interacting with the data points</a></li>\n      <li><a href=\"navigate.html\">Panning and zooming</a> (with navigation plugin)</li>\n      <li><a href=\"resize.html\">Automatically redraw when window is resized</a> (with resize plugin)</li>\n    </ul>\n\n    <p>Various features:</p>\n    \n    <ul>\n      <li><a href=\"symbols.html\">Using other symbols than circles for points</a> (with symbol plugin)</li>\n      <li><a href=\"time.html\">Plotting time series</a> and <a href=\"visitors.html\">visitors per day with zooming and weekends</a> (with selection plugin)</li>\n      <li><a href=\"multiple-axes.html\">Multiple axes</a> and <a href=\"interacting-axes.html\">interacting with the axes</a></li>\n      <li><a href=\"thresholding.html\">Thresholding the data</a> (with threshold plugin)</li>\n      <li><a href=\"stacking.html\">Stacked charts</a> (with stacking plugin)</li>\n      <li><a href=\"percentiles.html\">Using filled areas to plot percentiles</a> (with fillbetween plugin)</li>\n      <li><a href=\"tracking.html\">Tracking curves with crosshair</a> (with crosshair plugin)</li>\n      <li><a href=\"image.html\">Plotting prerendered images</a> (with image plugin)</li>\n      <li><a href=\"pie.html\">Pie charts</a> (with pie plugin)</li>\n    </ul>\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/interacting-axes.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With multiple axes, you sometimes need to interact with them. A\n    simple way to do this is to draw the plot, deduce the axis\n    placements and insert a couple of divs on top to catch events.\n    Try clicking an axis.</p>\n\n    <p id=\"click\"></p>\n\n<script type=\"text/javascript\">\n$(function () {\n    function generate(start, end, fn) {\n        var res = [];\n        for (var i = 0; i <= 100; ++i) {\n            var x = start + i / 100 * (end - start);\n            res.push([x, fn(x)]);\n        }\n        return res;\n    }\n\n    var data = [\n        { data: generate(0, 10, function (x) { return Math.sqrt(x)}), xaxis: 1, yaxis:1 },\n        { data: generate(0, 10, function (x) { return Math.sin(x)}), xaxis: 1, yaxis:2 },\n        { data: generate(0, 10, function (x) { return Math.cos(x)}), xaxis: 1, yaxis:3 },\n        { data: generate(2, 10, function (x) { return Math.tan(x)}), xaxis: 2, yaxis: 4 }\n    ];\n\n    var plot = $.plot($(\"#placeholder\"),\n                      data,\n                      {\n                          xaxes: [\n                              { position: 'bottom' },\n                              { position: 'top'}\n                          ],\n                          yaxes: [\n                              { position: 'left' },\n                              { position: 'left' },\n                              { position: 'right' },\n                              { position: 'left' }\n                          ]\n                      });\n\n    // now for each axis, create a div\n\n    function getBoundingBoxForAxis(plot, axis) {\n        var left = axis.box.left, top = axis.box.top,\n            right = left + axis.box.width, bottom = top + axis.box.height;\n\n        // some ticks may stick out, enlarge the box to encompass all ticks\n        var cls = axis.direction + axis.n + 'Axis';\n        plot.getPlaceholder().find('.' + cls + ' .tickLabel').each(function () {\n            var pos = $(this).position();\n            left = Math.min(pos.left, left);\n            top = Math.min(pos.top, top);\n            right = Math.max(Math.round(pos.left) + $(this).outerWidth(), right);\n            bottom = Math.max(Math.round(pos.top) + $(this).outerHeight(), bottom);\n        });\n        \n        return { left: left, top: top, width: right - left, height: bottom - top };\n    }\n    \n    $.each(plot.getAxes(), function (i, axis) {\n        if (!axis.show)\n            return;\n        \n        var box = getBoundingBoxForAxis(plot, axis);\n        \n        $('<div class=\"axisTarget\" style=\"position:absolute;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n            .data('axis.direction', axis.direction)\n            .data('axis.n', axis.n)\n            .css({ backgroundColor: \"#f00\", opacity: 0, cursor: \"pointer\" })\n            .appendTo(plot.getPlaceholder())\n            .hover(\n                function () { $(this).css({ opacity: 0.10 }) },\n                function () { $(this).css({ opacity: 0 }) }\n            )\n            .click(function () {\n                $(\"#click\").text(\"You clicked the \" + axis.direction + axis.n + \"axis!\")\n            });\n    });\n});\n</script>\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/interacting.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>One of the goals of Flot is to support user interactions. Try\n    pointing and clicking on the points.</p>\n\n    <p id=\"hoverdata\">Mouse hovers at\n    (<span id=\"x\">0</span>, <span id=\"y\">0</span>). <span id=\"clickdata\"></span></p>\n\n    <p>A tooltip is easy to build with a bit of jQuery code and the\n    data returned from the plot.</p>\n\n    <p><input id=\"enableTooltip\" type=\"checkbox\">Enable tooltip</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    var plot = $.plot($(\"#placeholder\"),\n           [ { data: sin, label: \"sin(x)\"}, { data: cos, label: \"cos(x)\" } ], {\n               series: {\n                   lines: { show: true },\n                   points: { show: true }\n               },\n               grid: { hoverable: true, clickable: true },\n               yaxis: { min: -1.2, max: 1.2 }\n             });\n\n    function showTooltip(x, y, contents) {\n        $('<div id=\"tooltip\">' + contents + '</div>').css( {\n            position: 'absolute',\n            display: 'none',\n            top: y + 5,\n            left: x + 5,\n            border: '1px solid #fdd',\n            padding: '2px',\n            'background-color': '#fee',\n            opacity: 0.80\n        }).appendTo(\"body\").fadeIn(200);\n    }\n\n    var previousPoint = null;\n    $(\"#placeholder\").bind(\"plothover\", function (event, pos, item) {\n        $(\"#x\").text(pos.x.toFixed(2));\n        $(\"#y\").text(pos.y.toFixed(2));\n\n        if ($(\"#enableTooltip:checked\").length > 0) {\n            if (item) {\n                if (previousPoint != item.dataIndex) {\n                    previousPoint = item.dataIndex;\n                    \n                    $(\"#tooltip\").remove();\n                    var x = item.datapoint[0].toFixed(2),\n                        y = item.datapoint[1].toFixed(2);\n                    \n                    showTooltip(item.pageX, item.pageY,\n                                item.series.label + \" of \" + x + \" = \" + y);\n                }\n            }\n            else {\n                $(\"#tooltip\").remove();\n                previousPoint = null;            \n            }\n        }\n    });\n\n    $(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n        if (item) {\n            $(\"#clickdata\").text(\"You clicked point \" + item.dataIndex + \" in \" + item.series.label + \".\");\n            plot.highlight(item.series, item.datapoint);\n        }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/layout.css",
    "content": "body {\n  font-family: sans-serif;\n  font-size: 16px;\n  margin: 50px;\n  max-width: 800px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/multiple-axes.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Multiple axis support showing the raw oil price in US $/barrel of\n    crude oil vs. the exchange rate from US $ to €.</p>\n\n    <p>As illustrated, you can put in multiple axes if you\n    need to. For each data series, simply specify the axis number.\n    In the options, you can then configure where you want the extra\n    axes to appear.</p>\n\n    <p>Position axis <button>left</button> or <button>right</button>.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var oilprices = [[1167692400000,61.05], [1167778800000,58.32], [1167865200000,57.35], [1167951600000,56.31], [1168210800000,55.55], [1168297200000,55.64], [1168383600000,54.02], [1168470000000,51.88], [1168556400000,52.99], [1168815600000,52.99], [1168902000000,51.21], [1168988400000,52.24], [1169074800000,50.48], [1169161200000,51.99], [1169420400000,51.13], [1169506800000,55.04], [1169593200000,55.37], [1169679600000,54.23], [1169766000000,55.42], [1170025200000,54.01], [1170111600000,56.97], [1170198000000,58.14], [1170284400000,58.14], [1170370800000,59.02], [1170630000000,58.74], [1170716400000,58.88], [1170802800000,57.71], [1170889200000,59.71], [1170975600000,59.89], [1171234800000,57.81], [1171321200000,59.06], [1171407600000,58.00], [1171494000000,57.99], [1171580400000,59.39], [1171839600000,59.39], [1171926000000,58.07], [1172012400000,60.07], [1172098800000,61.14], [1172444400000,61.39], [1172530800000,61.46], [1172617200000,61.79], [1172703600000,62.00], [1172790000000,60.07], [1173135600000,60.69], [1173222000000,61.82], [1173308400000,60.05], [1173654000000,58.91], [1173740400000,57.93], [1173826800000,58.16], [1173913200000,57.55], [1173999600000,57.11], [1174258800000,56.59], [1174345200000,59.61], [1174518000000,61.69], [1174604400000,62.28], [1174860000000,62.91], [1174946400000,62.93], [1175032800000,64.03], [1175119200000,66.03], [1175205600000,65.87], [1175464800000,64.64], [1175637600000,64.38], [1175724000000,64.28], [1175810400000,64.28], [1176069600000,61.51], [1176156000000,61.89], [1176242400000,62.01], [1176328800000,63.85], [1176415200000,63.63], [1176674400000,63.61], [1176760800000,63.10], [1176847200000,63.13], [1176933600000,61.83], [1177020000000,63.38], [1177279200000,64.58], [1177452000000,65.84], [1177538400000,65.06], [1177624800000,66.46], [1177884000000,64.40], [1178056800000,63.68], [1178143200000,63.19], [1178229600000,61.93], [1178488800000,61.47], [1178575200000,61.55], [1178748000000,61.81], [1178834400000,62.37], [1179093600000,62.46], [1179180000000,63.17], [1179266400000,62.55], [1179352800000,64.94], [1179698400000,66.27], [1179784800000,65.50], [1179871200000,65.77], [1179957600000,64.18], [1180044000000,65.20], [1180389600000,63.15], [1180476000000,63.49], [1180562400000,65.08], [1180908000000,66.30], [1180994400000,65.96], [1181167200000,66.93], [1181253600000,65.98], [1181599200000,65.35], [1181685600000,66.26], [1181858400000,68.00], [1182117600000,69.09], [1182204000000,69.10], [1182290400000,68.19], [1182376800000,68.19], [1182463200000,69.14], [1182722400000,68.19], [1182808800000,67.77], [1182895200000,68.97], [1182981600000,69.57], [1183068000000,70.68], [1183327200000,71.09], [1183413600000,70.92], [1183586400000,71.81], [1183672800000,72.81], [1183932000000,72.19], [1184018400000,72.56], [1184191200000,72.50], [1184277600000,74.15], [1184623200000,75.05], [1184796000000,75.92], [1184882400000,75.57], [1185141600000,74.89], [1185228000000,73.56], [1185314400000,75.57], [1185400800000,74.95], [1185487200000,76.83], [1185832800000,78.21], [1185919200000,76.53], [1186005600000,76.86], [1186092000000,76.00], [1186437600000,71.59], [1186696800000,71.47], [1186956000000,71.62], [1187042400000,71.00], [1187301600000,71.98], [1187560800000,71.12], [1187647200000,69.47], [1187733600000,69.26], [1187820000000,69.83], [1187906400000,71.09], [1188165600000,71.73], [1188338400000,73.36], [1188511200000,74.04], [1188856800000,76.30], [1189116000000,77.49], [1189461600000,78.23], [1189548000000,79.91], [1189634400000,80.09], [1189720800000,79.10], [1189980000000,80.57], [1190066400000,81.93], [1190239200000,83.32], [1190325600000,81.62], [1190584800000,80.95], [1190671200000,79.53], [1190757600000,80.30], [1190844000000,82.88], [1190930400000,81.66], [1191189600000,80.24], [1191276000000,80.05], [1191362400000,79.94], [1191448800000,81.44], [1191535200000,81.22], [1191794400000,79.02], [1191880800000,80.26], [1191967200000,80.30], [1192053600000,83.08], [1192140000000,83.69], [1192399200000,86.13], [1192485600000,87.61], [1192572000000,87.40], [1192658400000,89.47], [1192744800000,88.60], [1193004000000,87.56], [1193090400000,87.56], [1193176800000,87.10], [1193263200000,91.86], [1193612400000,93.53], [1193698800000,94.53], [1193871600000,95.93], [1194217200000,93.98], [1194303600000,96.37], [1194476400000,95.46], [1194562800000,96.32], [1195081200000,93.43], [1195167600000,95.10], [1195426800000,94.64], [1195513200000,95.10], [1196031600000,97.70], [1196118000000,94.42], [1196204400000,90.62], [1196290800000,91.01], [1196377200000,88.71], [1196636400000,88.32], [1196809200000,90.23], [1196982000000,88.28], [1197241200000,87.86], [1197327600000,90.02], [1197414000000,92.25], [1197586800000,90.63], [1197846000000,90.63], [1197932400000,90.49], [1198018800000,91.24], [1198105200000,91.06], [1198191600000,90.49], [1198710000000,96.62], [1198796400000,96.00], [1199142000000,99.62], [1199314800000,99.18], [1199401200000,95.09], [1199660400000,96.33], [1199833200000,95.67], [1200351600000,91.90], [1200438000000,90.84], [1200524400000,90.13], [1200610800000,90.57], [1200956400000,89.21], [1201042800000,86.99], [1201129200000,89.85], [1201474800000,90.99], [1201561200000,91.64], [1201647600000,92.33], [1201734000000,91.75], [1202079600000,90.02], [1202166000000,88.41], [1202252400000,87.14], [1202338800000,88.11], [1202425200000,91.77], [1202770800000,92.78], [1202857200000,93.27], [1202943600000,95.46], [1203030000000,95.46], [1203289200000,101.74], [1203462000000,98.81], [1203894000000,100.88], [1204066800000,99.64], [1204153200000,102.59], [1204239600000,101.84], [1204498800000,99.52], [1204585200000,99.52], [1204671600000,104.52], [1204758000000,105.47], [1204844400000,105.15], [1205103600000,108.75], [1205276400000,109.92], [1205362800000,110.33], [1205449200000,110.21], [1205708400000,105.68], [1205967600000,101.84], [1206313200000,100.86], [1206399600000,101.22], [1206486000000,105.90], [1206572400000,107.58], [1206658800000,105.62], [1206914400000,101.58], [1207000800000,100.98], [1207173600000,103.83], [1207260000000,106.23], [1207605600000,108.50], [1207778400000,110.11], [1207864800000,110.14], [1208210400000,113.79], [1208296800000,114.93], [1208383200000,114.86], [1208728800000,117.48], [1208815200000,118.30], [1208988000000,116.06], [1209074400000,118.52], [1209333600000,118.75], [1209420000000,113.46], [1209592800000,112.52], [1210024800000,121.84], [1210111200000,123.53], [1210197600000,123.69], [1210543200000,124.23], [1210629600000,125.80], [1210716000000,126.29], [1211148000000,127.05], [1211320800000,129.07], [1211493600000,132.19], [1211839200000,128.85], [1212357600000,127.76], [1212703200000,138.54], [1212962400000,136.80], [1213135200000,136.38], [1213308000000,134.86], [1213653600000,134.01], [1213740000000,136.68], [1213912800000,135.65], [1214172000000,134.62], [1214258400000,134.62], [1214344800000,134.62], [1214431200000,139.64], [1214517600000,140.21], [1214776800000,140.00], [1214863200000,140.97], [1214949600000,143.57], [1215036000000,145.29], [1215381600000,141.37], [1215468000000,136.04], [1215727200000,146.40], [1215986400000,145.18], [1216072800000,138.74], [1216159200000,134.60], [1216245600000,129.29], [1216332000000,130.65], [1216677600000,127.95], [1216850400000,127.95], [1217282400000,122.19], [1217455200000,124.08], [1217541600000,125.10], [1217800800000,121.41], [1217887200000,119.17], [1217973600000,118.58], [1218060000000,120.02], [1218405600000,114.45], [1218492000000,113.01], [1218578400000,116.00], [1218751200000,113.77], [1219010400000,112.87], [1219096800000,114.53], [1219269600000,114.98], [1219356000000,114.98], [1219701600000,116.27], [1219788000000,118.15], [1219874400000,115.59], [1219960800000,115.46], [1220306400000,109.71], [1220392800000,109.35], [1220565600000,106.23], [1220824800000,106.34]];\n    var exchangerates = [[1167606000000,0.7580], [1167692400000,0.7580], [1167778800000,0.75470], [1167865200000,0.75490], [1167951600000,0.76130], [1168038000000,0.76550], [1168124400000,0.76930], [1168210800000,0.76940], [1168297200000,0.76880], [1168383600000,0.76780], [1168470000000,0.77080], [1168556400000,0.77270], [1168642800000,0.77490], [1168729200000,0.77410], [1168815600000,0.77410], [1168902000000,0.77320], [1168988400000,0.77270], [1169074800000,0.77370], [1169161200000,0.77240], [1169247600000,0.77120], [1169334000000,0.7720], [1169420400000,0.77210], [1169506800000,0.77170], [1169593200000,0.77040], [1169679600000,0.7690], [1169766000000,0.77110], [1169852400000,0.7740], [1169938800000,0.77450], [1170025200000,0.77450], [1170111600000,0.7740], [1170198000000,0.77160], [1170284400000,0.77130], [1170370800000,0.76780], [1170457200000,0.76880], [1170543600000,0.77180], [1170630000000,0.77180], [1170716400000,0.77280], [1170802800000,0.77290], [1170889200000,0.76980], [1170975600000,0.76850], [1171062000000,0.76810], [1171148400000,0.7690], [1171234800000,0.7690], [1171321200000,0.76980], [1171407600000,0.76990], [1171494000000,0.76510], [1171580400000,0.76130], [1171666800000,0.76160], [1171753200000,0.76140], [1171839600000,0.76140], [1171926000000,0.76070], [1172012400000,0.76020], [1172098800000,0.76110], [1172185200000,0.76220], [1172271600000,0.76150], [1172358000000,0.75980], [1172444400000,0.75980], [1172530800000,0.75920], [1172617200000,0.75730], [1172703600000,0.75660], [1172790000000,0.75670], [1172876400000,0.75910], [1172962800000,0.75820], [1173049200000,0.75850], [1173135600000,0.76130], [1173222000000,0.76310], [1173308400000,0.76150], [1173394800000,0.760], [1173481200000,0.76130], [1173567600000,0.76270], [1173654000000,0.76270], [1173740400000,0.76080], [1173826800000,0.75830], [1173913200000,0.75750], [1173999600000,0.75620], [1174086000000,0.7520], [1174172400000,0.75120], [1174258800000,0.75120], [1174345200000,0.75170], [1174431600000,0.7520], [1174518000000,0.75110], [1174604400000,0.7480], [1174690800000,0.75090], [1174777200000,0.75310], [1174860000000,0.75310], [1174946400000,0.75270], [1175032800000,0.74980], [1175119200000,0.74930], [1175205600000,0.75040], [1175292000000,0.750], [1175378400000,0.74910], [1175464800000,0.74910], [1175551200000,0.74850], [1175637600000,0.74840], [1175724000000,0.74920], [1175810400000,0.74710], [1175896800000,0.74590], [1175983200000,0.74770], [1176069600000,0.74770], [1176156000000,0.74830], [1176242400000,0.74580], [1176328800000,0.74480], [1176415200000,0.7430], [1176501600000,0.73990], [1176588000000,0.73950], [1176674400000,0.73950], [1176760800000,0.73780], [1176847200000,0.73820], [1176933600000,0.73620], [1177020000000,0.73550], [1177106400000,0.73480], [1177192800000,0.73610], [1177279200000,0.73610], [1177365600000,0.73650], [1177452000000,0.73620], [1177538400000,0.73310], [1177624800000,0.73390], [1177711200000,0.73440], [1177797600000,0.73270], [1177884000000,0.73270], [1177970400000,0.73360], [1178056800000,0.73330], [1178143200000,0.73590], [1178229600000,0.73590], [1178316000000,0.73720], [1178402400000,0.7360], [1178488800000,0.7360], [1178575200000,0.7350], [1178661600000,0.73650], [1178748000000,0.73840], [1178834400000,0.73950], [1178920800000,0.74130], [1179007200000,0.73970], [1179093600000,0.73960], [1179180000000,0.73850], [1179266400000,0.73780], [1179352800000,0.73660], [1179439200000,0.740], [1179525600000,0.74110], [1179612000000,0.74060], [1179698400000,0.74050], [1179784800000,0.74140], [1179871200000,0.74310], [1179957600000,0.74310], [1180044000000,0.74380], [1180130400000,0.74430], [1180216800000,0.74430], [1180303200000,0.74430], [1180389600000,0.74340], [1180476000000,0.74290], [1180562400000,0.74420], [1180648800000,0.7440], [1180735200000,0.74390], [1180821600000,0.74370], [1180908000000,0.74370], [1180994400000,0.74290], [1181080800000,0.74030], [1181167200000,0.73990], [1181253600000,0.74180], [1181340000000,0.74680], [1181426400000,0.7480], [1181512800000,0.7480], [1181599200000,0.7490], [1181685600000,0.74940], [1181772000000,0.75220], [1181858400000,0.75150], [1181944800000,0.75020], [1182031200000,0.74720], [1182117600000,0.74720], [1182204000000,0.74620], [1182290400000,0.74550], [1182376800000,0.74490], [1182463200000,0.74670], [1182549600000,0.74580], [1182636000000,0.74270], [1182722400000,0.74270], [1182808800000,0.7430], [1182895200000,0.74290], [1182981600000,0.7440], [1183068000000,0.7430], [1183154400000,0.74220], [1183240800000,0.73880], [1183327200000,0.73880], [1183413600000,0.73690], [1183500000000,0.73450], [1183586400000,0.73450], [1183672800000,0.73450], [1183759200000,0.73520], [1183845600000,0.73410], [1183932000000,0.73410], [1184018400000,0.7340], [1184104800000,0.73240], [1184191200000,0.72720], [1184277600000,0.72640], [1184364000000,0.72550], [1184450400000,0.72580], [1184536800000,0.72580], [1184623200000,0.72560], [1184709600000,0.72570], [1184796000000,0.72470], [1184882400000,0.72430], [1184968800000,0.72440], [1185055200000,0.72350], [1185141600000,0.72350], [1185228000000,0.72350], [1185314400000,0.72350], [1185400800000,0.72620], [1185487200000,0.72880], [1185573600000,0.73010], [1185660000000,0.73370], [1185746400000,0.73370], [1185832800000,0.73240], [1185919200000,0.72970], [1186005600000,0.73170], [1186092000000,0.73150], [1186178400000,0.72880], [1186264800000,0.72630], [1186351200000,0.72630], [1186437600000,0.72420], [1186524000000,0.72530], [1186610400000,0.72640], [1186696800000,0.7270], [1186783200000,0.73120], [1186869600000,0.73050], [1186956000000,0.73050], [1187042400000,0.73180], [1187128800000,0.73580], [1187215200000,0.74090], [1187301600000,0.74540], [1187388000000,0.74370], [1187474400000,0.74240], [1187560800000,0.74240], [1187647200000,0.74150], [1187733600000,0.74190], [1187820000000,0.74140], [1187906400000,0.73770], [1187992800000,0.73550], [1188079200000,0.73150], [1188165600000,0.73150], [1188252000000,0.7320], [1188338400000,0.73320], [1188424800000,0.73460], [1188511200000,0.73280], [1188597600000,0.73230], [1188684000000,0.7340], [1188770400000,0.7340], [1188856800000,0.73360], [1188943200000,0.73510], [1189029600000,0.73460], [1189116000000,0.73210], [1189202400000,0.72940], [1189288800000,0.72660], [1189375200000,0.72660], [1189461600000,0.72540], [1189548000000,0.72420], [1189634400000,0.72130], [1189720800000,0.71970], [1189807200000,0.72090], [1189893600000,0.7210], [1189980000000,0.7210], [1190066400000,0.7210], [1190152800000,0.72090], [1190239200000,0.71590], [1190325600000,0.71330], [1190412000000,0.71050], [1190498400000,0.70990], [1190584800000,0.70990], [1190671200000,0.70930], [1190757600000,0.70930], [1190844000000,0.70760], [1190930400000,0.7070], [1191016800000,0.70490], [1191103200000,0.70120], [1191189600000,0.70110], [1191276000000,0.70190], [1191362400000,0.70460], [1191448800000,0.70630], [1191535200000,0.70890], [1191621600000,0.70770], [1191708000000,0.70770], [1191794400000,0.70770], [1191880800000,0.70910], [1191967200000,0.71180], [1192053600000,0.70790], [1192140000000,0.70530], [1192226400000,0.7050], [1192312800000,0.70550], [1192399200000,0.70550], [1192485600000,0.70450], [1192572000000,0.70510], [1192658400000,0.70510], [1192744800000,0.70170], [1192831200000,0.70], [1192917600000,0.69950], [1193004000000,0.69940], [1193090400000,0.70140], [1193176800000,0.70360], [1193263200000,0.70210], [1193349600000,0.70020], [1193436000000,0.69670], [1193522400000,0.6950], [1193612400000,0.6950], [1193698800000,0.69390], [1193785200000,0.6940], [1193871600000,0.69220], [1193958000000,0.69190], [1194044400000,0.69140], [1194130800000,0.68940], [1194217200000,0.68910], [1194303600000,0.69040], [1194390000000,0.6890], [1194476400000,0.68340], [1194562800000,0.68230], [1194649200000,0.68070], [1194735600000,0.68150], [1194822000000,0.68150], [1194908400000,0.68470], [1194994800000,0.68590], [1195081200000,0.68220], [1195167600000,0.68270], [1195254000000,0.68370], [1195340400000,0.68230], [1195426800000,0.68220], [1195513200000,0.68220], [1195599600000,0.67920], [1195686000000,0.67460], [1195772400000,0.67350], [1195858800000,0.67310], [1195945200000,0.67420], [1196031600000,0.67440], [1196118000000,0.67390], [1196204400000,0.67310], [1196290800000,0.67610], [1196377200000,0.67610], [1196463600000,0.67850], [1196550000000,0.68180], [1196636400000,0.68360], [1196722800000,0.68230], [1196809200000,0.68050], [1196895600000,0.67930], [1196982000000,0.68490], [1197068400000,0.68330], [1197154800000,0.68250], [1197241200000,0.68250], [1197327600000,0.68160], [1197414000000,0.67990], [1197500400000,0.68130], [1197586800000,0.68090], [1197673200000,0.68680], [1197759600000,0.69330], [1197846000000,0.69330], [1197932400000,0.69450], [1198018800000,0.69440], [1198105200000,0.69460], [1198191600000,0.69640], [1198278000000,0.69650], [1198364400000,0.69560], [1198450800000,0.69560], [1198537200000,0.6950], [1198623600000,0.69480], [1198710000000,0.69280], [1198796400000,0.68870], [1198882800000,0.68240], [1198969200000,0.67940], [1199055600000,0.67940], [1199142000000,0.68030], [1199228400000,0.68550], [1199314800000,0.68240], [1199401200000,0.67910], [1199487600000,0.67830], [1199574000000,0.67850], [1199660400000,0.67850], [1199746800000,0.67970], [1199833200000,0.680], [1199919600000,0.68030], [1200006000000,0.68050], [1200092400000,0.6760], [1200178800000,0.6770], [1200265200000,0.6770], [1200351600000,0.67360], [1200438000000,0.67260], [1200524400000,0.67640], [1200610800000,0.68210], [1200697200000,0.68310], [1200783600000,0.68420], [1200870000000,0.68420], [1200956400000,0.68870], [1201042800000,0.69030], [1201129200000,0.68480], [1201215600000,0.68240], [1201302000000,0.67880], [1201388400000,0.68140], [1201474800000,0.68140], [1201561200000,0.67970], [1201647600000,0.67690], [1201734000000,0.67650], [1201820400000,0.67330], [1201906800000,0.67290], [1201993200000,0.67580], [1202079600000,0.67580], [1202166000000,0.6750], [1202252400000,0.6780], [1202338800000,0.68330], [1202425200000,0.68560], [1202511600000,0.69030], [1202598000000,0.68960], [1202684400000,0.68960], [1202770800000,0.68820], [1202857200000,0.68790], [1202943600000,0.68620], [1203030000000,0.68520], [1203116400000,0.68230], [1203202800000,0.68130], [1203289200000,0.68130], [1203375600000,0.68220], [1203462000000,0.68020], [1203548400000,0.68020], [1203634800000,0.67840], [1203721200000,0.67480], [1203807600000,0.67470], [1203894000000,0.67470], [1203980400000,0.67480], [1204066800000,0.67330], [1204153200000,0.6650], [1204239600000,0.66110], [1204326000000,0.65830], [1204412400000,0.6590], [1204498800000,0.6590], [1204585200000,0.65810], [1204671600000,0.65780], [1204758000000,0.65740], [1204844400000,0.65320], [1204930800000,0.65020], [1205017200000,0.65140], [1205103600000,0.65140], [1205190000000,0.65070], [1205276400000,0.6510], [1205362800000,0.64890], [1205449200000,0.64240], [1205535600000,0.64060], [1205622000000,0.63820], [1205708400000,0.63820], [1205794800000,0.63410], [1205881200000,0.63440], [1205967600000,0.63780], [1206054000000,0.64390], [1206140400000,0.64780], [1206226800000,0.64810], [1206313200000,0.64810], [1206399600000,0.64940], [1206486000000,0.64380], [1206572400000,0.63770], [1206658800000,0.63290], [1206745200000,0.63360], [1206831600000,0.63330], [1206914400000,0.63330], [1207000800000,0.6330], [1207087200000,0.63710], [1207173600000,0.64030], [1207260000000,0.63960], [1207346400000,0.63640], [1207432800000,0.63560], [1207519200000,0.63560], [1207605600000,0.63680], [1207692000000,0.63570], [1207778400000,0.63540], [1207864800000,0.6320], [1207951200000,0.63320], [1208037600000,0.63280], [1208124000000,0.63310], [1208210400000,0.63420], [1208296800000,0.63210], [1208383200000,0.63020], [1208469600000,0.62780], [1208556000000,0.63080], [1208642400000,0.63240], [1208728800000,0.63240], [1208815200000,0.63070], [1208901600000,0.62770], [1208988000000,0.62690], [1209074400000,0.63350], [1209160800000,0.63920], [1209247200000,0.640], [1209333600000,0.64010], [1209420000000,0.63960], [1209506400000,0.64070], [1209592800000,0.64230], [1209679200000,0.64290], [1209765600000,0.64720], [1209852000000,0.64850], [1209938400000,0.64860], [1210024800000,0.64670], [1210111200000,0.64440], [1210197600000,0.64670], [1210284000000,0.65090], [1210370400000,0.64780], [1210456800000,0.64610], [1210543200000,0.64610], [1210629600000,0.64680], [1210716000000,0.64490], [1210802400000,0.6470], [1210888800000,0.64610], [1210975200000,0.64520], [1211061600000,0.64220], [1211148000000,0.64220], [1211234400000,0.64250], [1211320800000,0.64140], [1211407200000,0.63660], [1211493600000,0.63460], [1211580000000,0.6350], [1211666400000,0.63460], [1211752800000,0.63460], [1211839200000,0.63430], [1211925600000,0.63460], [1212012000000,0.63790], [1212098400000,0.64160], [1212184800000,0.64420], [1212271200000,0.64310], [1212357600000,0.64310], [1212444000000,0.64350], [1212530400000,0.6440], [1212616800000,0.64730], [1212703200000,0.64690], [1212789600000,0.63860], [1212876000000,0.63560], [1212962400000,0.6340], [1213048800000,0.63460], [1213135200000,0.6430], [1213221600000,0.64520], [1213308000000,0.64670], [1213394400000,0.65060], [1213480800000,0.65040], [1213567200000,0.65030], [1213653600000,0.64810], [1213740000000,0.64510], [1213826400000,0.6450], [1213912800000,0.64410], [1213999200000,0.64140], [1214085600000,0.64090], [1214172000000,0.64090], [1214258400000,0.64280], [1214344800000,0.64310], [1214431200000,0.64180], [1214517600000,0.63710], [1214604000000,0.63490], [1214690400000,0.63330], [1214776800000,0.63340], [1214863200000,0.63380], [1214949600000,0.63420], [1215036000000,0.6320], [1215122400000,0.63180], [1215208800000,0.6370], [1215295200000,0.63680], [1215381600000,0.63680], [1215468000000,0.63830], [1215554400000,0.63710], [1215640800000,0.63710], [1215727200000,0.63550], [1215813600000,0.6320], [1215900000000,0.62770], [1215986400000,0.62760], [1216072800000,0.62910], [1216159200000,0.62740], [1216245600000,0.62930], [1216332000000,0.63110], [1216418400000,0.6310], [1216504800000,0.63120], [1216591200000,0.63120], [1216677600000,0.63040], [1216764000000,0.62940], [1216850400000,0.63480], [1216936800000,0.63780], [1217023200000,0.63680], [1217109600000,0.63680], [1217196000000,0.63680], [1217282400000,0.6360], [1217368800000,0.6370], [1217455200000,0.64180], [1217541600000,0.64110], [1217628000000,0.64350], [1217714400000,0.64270], [1217800800000,0.64270], [1217887200000,0.64190], [1217973600000,0.64460], [1218060000000,0.64680], [1218146400000,0.64870], [1218232800000,0.65940], [1218319200000,0.66660], [1218405600000,0.66660], [1218492000000,0.66780], [1218578400000,0.67120], [1218664800000,0.67050], [1218751200000,0.67180], [1218837600000,0.67840], [1218924000000,0.68110], [1219010400000,0.68110], [1219096800000,0.67940], [1219183200000,0.68040], [1219269600000,0.67810], [1219356000000,0.67560], [1219442400000,0.67350], [1219528800000,0.67630], [1219615200000,0.67620], [1219701600000,0.67770], [1219788000000,0.68150], [1219874400000,0.68020], [1219960800000,0.6780], [1220047200000,0.67960], [1220133600000,0.68170], [1220220000000,0.68170], [1220306400000,0.68320], [1220392800000,0.68770], [1220479200000,0.69120], [1220565600000,0.69140], [1220652000000,0.70090], [1220738400000,0.70120], [1220824800000,0.7010], [1220911200000,0.70050]];\n\n    function euroFormatter(v, axis) {\n        return v.toFixed(axis.tickDecimals) +\"€\";\n    }\n    \n    function doPlot(position) {\n        $.plot($(\"#placeholder\"),\n           [ { data: oilprices, label: \"Oil price ($)\" },\n             { data: exchangerates, label: \"USD/EUR exchange rate\", yaxis: 2 }],\n           { \n               xaxes: [ { mode: 'time' } ],\n               yaxes: [ { min: 0 },\n                        {\n                          // align if we are to the right\n                          alignTicksWithAxis: position == \"right\" ? 1 : null,\n                          position: position,\n                          tickFormatter: euroFormatter\n                        } ],\n               legend: { position: 'sw' }\n           });\n    }\n\n    doPlot(\"right\");\n    \n    $(\"button\").click(function () {\n        doPlot($(this).text());\n    });\n});\n</script>\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/navigate.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.navigate.js\"></script>\n    <style type=\"text/css\">\n    #placeholder .button {\n        position: absolute;\n        cursor: pointer;\n    }\n    #placeholder div.button {\n        font-size: smaller;\n        color: #999;\n        background-color: #eee;\n        padding: 2px;\n    }\n    .message {\n        padding-left: 50px;\n        font-size: smaller;\n    }\n    </style>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p class=\"message\"></p>\n\n    <p>With the navigate plugin it is easy to add panning and zooming.\n    Drag to pan, double click to zoom (or use the mouse scrollwheel).</p>\n\n    <p>The plugin fires events (useful for synchronizing several\n    plots) and adds a couple of public methods so you can easily build\n    a little user interface around it, like the little buttons at the\n    top right in the plot.</p>\n    \n\n<script type=\"text/javascript\">\n$(function () {\n    // generate data set from a parametric function with a fractal\n    // look\n    function sumf(f, t, m) {\n        var res = 0;\n        for (var i = 1; i < m; ++i)\n            res += f(i * i * t) / (i * i);\n        return res;\n    }\n    \n    var d1 = [];\n    for (var t = 0; t <= 2 * Math.PI; t += 0.01)\n        d1.push([sumf(Math.cos, t, 10), sumf(Math.sin, t, 10)]);\n    var data = [ d1 ];\n\n    \n    var placeholder = $(\"#placeholder\");\n    var options = {\n        series: { lines: { show: true }, shadowSize: 0 },\n        xaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },\n        yaxis: { zoomRange: [0.1, 10], panRange: [-10, 10] },\n        zoom: {\n            interactive: true\n        },\n        pan: {\n            interactive: true\n        }\n    };\n\n    var plot = $.plot(placeholder, data, options);\n\n    // show pan/zoom messages to illustrate events \n    placeholder.bind('plotpan', function (event, plot) {\n        var axes = plot.getAxes();\n        $(\".message\").html(\"Panning to x: \"  + axes.xaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.xaxis.max.toFixed(2)\n                           + \" and y: \" + axes.yaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.yaxis.max.toFixed(2));\n    });\n\n    placeholder.bind('plotzoom', function (event, plot) {\n        var axes = plot.getAxes();\n        $(\".message\").html(\"Zooming to x: \"  + axes.xaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.xaxis.max.toFixed(2)\n                           + \" and y: \" + axes.yaxis.min.toFixed(2)\n                           + \" &ndash; \" + axes.yaxis.max.toFixed(2));\n    });\n\n    // add zoom out button \n    $('<div class=\"button\" style=\"right:20px;top:20px\">zoom out</div>').appendTo(placeholder).click(function (e) {\n        e.preventDefault();\n        plot.zoomOut();\n    });\n\n    // and add panning buttons\n    \n    // little helper for taking the repetitive work out of placing\n    // panning arrows\n    function addArrow(dir, right, top, offset) {\n        $('<img class=\"button\" src=\"arrow-' + dir + '.gif\" style=\"right:' + right + 'px;top:' + top + 'px\">').appendTo(placeholder).click(function (e) {\n            e.preventDefault();\n            plot.pan(offset);\n        });\n    }\n\n    addArrow('left', 55, 60, { left: -100 });\n    addArrow('right', 25, 60, { left: 100 });\n    addArrow('up', 40, 45, { top: -100 });\n    addArrow('down', 40, 75, { top: 100 });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/percentiles.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.fillbetween.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:400px;\"></div>\n\n    <p>Height in centimeters of individuals from the US (2003-2006) as function of\n    age in years (source: <a href=\"http://www.cdc.gov/nchs/data/nhsr/nhsr010.pdf\">CDC</a>).\n    The 15%-85%, 25%-75% and 50% percentiles are indicated.</p>\n\n    <p>For each point of a filled curve, you can specify an arbitrary\n    bottom. As this example illustrates, this can be useful for\n    plotting percentiles. If you have the data sets available without\n    appropriate fill bottoms, you can use the fillbetween plugin to\n    compute the data point bottoms automatically.</p>\n    \n<script type=\"text/javascript\">\n$(function () {\n    var males = {'15%': [[2, 88.0], [3, 93.3], [4, 102.0], [5, 108.5], [6, 115.7], [7, 115.6], [8, 124.6], [9, 130.3], [10, 134.3], [11, 141.4], [12, 146.5], [13, 151.7], [14, 159.9], [15, 165.4], [16, 167.8], [17, 168.7], [18, 169.5], [19, 168.0]], '90%': [[2, 96.8], [3, 105.2], [4, 113.9], [5, 120.8], [6, 127.0], [7, 133.1], [8, 139.1], [9, 143.9], [10, 151.3], [11, 161.1], [12, 164.8], [13, 173.5], [14, 179.0], [15, 182.0], [16, 186.9], [17, 185.2], [18, 186.3], [19, 186.6]], '25%': [[2, 89.2], [3, 94.9], [4, 104.4], [5, 111.4], [6, 117.5], [7, 120.2], [8, 127.1], [9, 132.9], [10, 136.8], [11, 144.4], [12, 149.5], [13, 154.1], [14, 163.1], [15, 169.2], [16, 170.4], [17, 171.2], [18, 172.4], [19, 170.8]], '10%': [[2, 86.9], [3, 92.6], [4, 99.9], [5, 107.0], [6, 114.0], [7, 113.5], [8, 123.6], [9, 129.2], [10, 133.0], [11, 140.6], [12, 145.2], [13, 149.7], [14, 158.4], [15, 163.5], [16, 166.9], [17, 167.5], [18, 167.1], [19, 165.3]], 'mean': [[2, 91.9], [3, 98.5], [4, 107.1], [5, 114.4], [6, 120.6], [7, 124.7], [8, 131.1], [9, 136.8], [10, 142.3], [11, 150.0], [12, 154.7], [13, 161.9], [14, 168.7], [15, 173.6], [16, 175.9], [17, 176.6], [18, 176.8], [19, 176.7]], '75%': [[2, 94.5], [3, 102.1], [4, 110.8], [5, 117.9], [6, 124.0], [7, 129.3], [8, 134.6], [9, 141.4], [10, 147.0], [11, 156.1], [12, 160.3], [13, 168.3], [14, 174.7], [15, 178.0], [16, 180.2], [17, 181.7], [18, 181.3], [19, 182.5]], '85%': [[2, 96.2], [3, 103.8], [4, 111.8], [5, 119.6], [6, 125.6], [7, 131.5], [8, 138.0], [9, 143.3], [10, 149.3], [11, 159.8], [12, 162.5], [13, 171.3], [14, 177.5], [15, 180.2], [16, 183.8], [17, 183.4], [18, 183.5], [19, 185.5]], '50%': [[2, 91.9], [3, 98.2], [4, 106.8], [5, 114.6], [6, 120.8], [7, 125.2], [8, 130.3], [9, 137.1], [10, 141.5], [11, 149.4], [12, 153.9], [13, 162.2], [14, 169.0], [15, 174.8], [16, 176.0], [17, 176.8], [18, 176.4], [19, 177.4]]};\n    var females = {'15%': [[2, 84.8], [3, 93.7], [4, 100.6], [5, 105.8], [6, 113.3], [7, 119.3], [8, 124.3], [9, 131.4], [10, 136.9], [11, 143.8], [12, 149.4], [13, 151.2], [14, 152.3], [15, 155.9], [16, 154.7], [17, 157.0], [18, 156.1], [19, 155.4]], '90%': [[2, 95.6], [3, 104.1], [4, 111.9], [5, 119.6], [6, 127.6], [7, 133.1], [8, 138.7], [9, 147.1], [10, 152.8], [11, 161.3], [12, 166.6], [13, 167.9], [14, 169.3], [15, 170.1], [16, 172.4], [17, 169.2], [18, 171.1], [19, 172.4]], '25%': [[2, 87.2], [3, 95.9], [4, 101.9], [5, 107.4], [6, 114.8], [7, 121.4], [8, 126.8], [9, 133.4], [10, 138.6], [11, 146.2], [12, 152.0], [13, 153.8], [14, 155.7], [15, 158.4], [16, 157.0], [17, 158.5], [18, 158.4], [19, 158.1]], '10%': [[2, 84.0], [3, 91.9], [4, 99.2], [5, 105.2], [6, 112.7], [7, 118.0], [8, 123.3], [9, 130.2], [10, 135.0], [11, 141.1], [12, 148.3], [13, 150.0], [14, 150.7], [15, 154.3], [16, 153.6], [17, 155.6], [18, 154.7], [19, 153.1]], 'mean': [[2, 90.2], [3, 98.3], [4, 105.2], [5, 112.2], [6, 119.0], [7, 125.8], [8, 131.3], [9, 138.6], [10, 144.2], [11, 151.3], [12, 156.7], [13, 158.6], [14, 160.5], [15, 162.1], [16, 162.9], [17, 162.2], [18, 163.0], [19, 163.1]], '75%': [[2, 93.2], [3, 101.5], [4, 107.9], [5, 116.6], [6, 122.8], [7, 129.3], [8, 135.2], [9, 143.7], [10, 148.7], [11, 156.9], [12, 160.8], [13, 163.0], [14, 165.0], [15, 165.8], [16, 168.7], [17, 166.2], [18, 167.6], [19, 168.0]], '85%': [[2, 94.5], [3, 102.8], [4, 110.4], [5, 119.0], [6, 125.7], [7, 131.5], [8, 137.9], [9, 146.0], [10, 151.3], [11, 159.9], [12, 164.0], [13, 166.5], [14, 167.5], [15, 168.5], [16, 171.5], [17, 168.0], [18, 169.8], [19, 170.3]], '50%': [[2, 90.2], [3, 98.1], [4, 105.2], [5, 111.7], [6, 118.2], [7, 125.6], [8, 130.5], [9, 138.3], [10, 143.7], [11, 151.4], [12, 156.7], [13, 157.7], [14, 161.0], [15, 162.0], [16, 162.8], [17, 162.2], [18, 162.8], [19, 163.3]]};\n\n    var dataset = [\n       { label: 'Female mean', data: females['mean'], lines: { show: true }, color: \"rgb(255,50,50)\" },\n       { id: 'f15%', data: females['15%'], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(255,50,50)\" },\n       { id: 'f25%', data: females['25%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: 'f15%' },\n       { id: 'f50%', data: females['50%'], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(255,50,50)\", fillBetween: 'f25%' },\n       { id: 'f75%', data: females['75%'], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(255,50,50)\", fillBetween: 'f50%' },\n       { id: 'f85%', data: females['85%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: 'f75%' },\n       \n       { label: 'Male mean', data: males['mean'], lines: { show: true }, color: \"rgb(50,50,255)\" },\n       { id: 'm15%', data: males['15%'], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(50,50,255)\" },\n       { id: 'm25%', data: males['25%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: 'm15%' },\n       { id: 'm50%', data: males['50%'], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(50,50,255)\", fillBetween: 'm25%' },\n       { id: 'm75%', data: males['75%'], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(50,50,255)\", fillBetween: 'm50%' },\n       { id: 'm85%', data: males['85%'], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: 'm75%' }\n    ]\n\n    $.plot($(\"#placeholder\"), dataset, {\n            xaxis: { tickDecimals: 0 },\n            yaxis: { tickFormatter: function (v) { return v + \" cm\"; } },\n            legend: { position: 'se' }\n        });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/pie.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Pie Examples</title>\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.pie.js\"></script>\n\t\n<script type=\"text/javascript\">\n$(function () {\n\t// data\n\t/*var data = [\n\t\t{ label: \"Series1\",  data: 10},\n\t\t{ label: \"Series2\",  data: 30},\n\t\t{ label: \"Series3\",  data: 90},\n\t\t{ label: \"Series4\",  data: 70},\n\t\t{ label: \"Series5\",  data: 80},\n\t\t{ label: \"Series6\",  data: 110}\n\t];*/\n\t/*var data = [\n\t\t{ label: \"Series1\",  data: [[1,10]]},\n\t\t{ label: \"Series2\",  data: [[1,30]]},\n\t\t{ label: \"Series3\",  data: [[1,90]]},\n\t\t{ label: \"Series4\",  data: [[1,70]]},\n\t\t{ label: \"Series5\",  data: [[1,80]]},\n\t\t{ label: \"Series6\",  data: [[1,0]]}\n\t];*/\n\tvar data = [];\n\tvar series = Math.floor(Math.random()*10)+1;\n\tfor( var i = 0; i<series; i++)\n\t{\n\t\tdata[i] = { label: \"Series\"+(i+1), data: Math.floor(Math.random()*100)+1 }\n\t}\n\n\t// DEFAULT\n    $.plot($(\"#default\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// GRAPH 1\n\t$.plot($(\"#graph1\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 2\n\t$.plot($(\"#graph2\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.8 }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 3\n\t$.plot($(\"#graph3\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.5 }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 4\n\t$.plot($(\"#graph4\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { \n\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 5\n\t$.plot($(\"#graph5\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 3/4,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3/4,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { \n\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 6\n\t$.plot($(\"#graph6\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 2/3,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 7\n\t$.plot($(\"#graph7\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tcombine: {\n\t\t\t\t\tcolor: '#999',\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 8\n\t$.plot($(\"#graph8\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius:300,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// GRAPH 9\n\t$.plot($(\"#graph9\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true,\n\t\t\t\tradius: 1,\n\t\t\t\ttilt: 0.5,\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 1,\n\t\t\t\t\tformatter: function(label, series){\n\t\t\t\t\t\treturn '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n\t\t\t\t\t},\n\t\t\t\t\tbackground: { opacity: 0.8 }\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tcolor: '#999',\n\t\t\t\t\tthreshold: 0.1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlegend: {\n\t\t\tshow: false\n\t\t}\n\t});\n\t\n\t// DONUT\n    $.plot($(\"#donut\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tinnerRadius: 0.5,\n\t\t\t\tshow: true\n\t\t\t}\n\t\t}\n\t});\n\n\t// INTERACTIVE\n    $.plot($(\"#interactive\"), data, \n\t{\n\t\tseries: {\n\t\t\tpie: { \n\t\t\t\tshow: true\n\t\t\t}\n\t\t},\n\t\tgrid: {\n\t\t\thoverable: true,\n\t\t\tclickable: true\n\t\t}\n\t});\n\t$(\"#interactive\").bind(\"plothover\", pieHover);\n\t$(\"#interactive\").bind(\"plotclick\", pieClick);\n\n});\n\nfunction pieHover(event, pos, obj) \n{\n\tif (!obj)\n                return;\n\tpercent = parseFloat(obj.series.percent).toFixed(2);\n\t$(\"#hover\").html('<span style=\"font-weight: bold; color: '+obj.series.color+'\">'+obj.series.label+' ('+percent+'%)</span>');\n}\n\nfunction pieClick(event, pos, obj) \n{\n\tif (!obj)\n                return;\n\tpercent = parseFloat(obj.series.percent).toFixed(2);\n\talert(''+obj.series.label+': '+percent+'%');\n}\n</script>\n\t<style type=\"text/css\">\n\t\t* {\n\t\t  font-family: sans-serif;\n\t\t}\n\t\t\n\t\tbody\n\t\t{\n\t\t\tpadding: 0 1em 1em 1em;\n\t\t}\n\t\t\n\t\tdiv.graph\n\t\t{\n\t\t\twidth: 400px;\n\t\t\theight: 300px;\n\t\t\tfloat: left;\n\t\t\tborder: 1px dashed gainsboro;\n\t\t}\n\t\t\n\t\tlabel\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tmargin-left: 400px;\n\t\t\tpadding-left: 1em;\n\t\t}\n\t\t\n\t\th2\n\t\t{\n\t\t\tpadding-top: 1em;\n\t\t\tmargin-bottom: 0;\n\t\t\tclear: both;\n\t\t\tcolor: #ccc;\n\t\t}\n\t\t\n\t\tcode\n\t\t{\n\t\t\tdisplay: block;\n\t\t\tbackground-color: #eee;\n\t\t\tborder: 1px dashed #999;\n\t\t\tpadding: 0.5em;\n\t\t\tmargin: 0.5em;\n\t\t\tcolor: #666;\n\t\t\tfont-size: 10pt;\n\t\t}\n\t\t\n\t\tcode b\n\t\t{\n\t\t\tcolor: black;\n\t\t}\n\t\t\n\t\tul\n\t\t{\n\t\t\tfont-size: 10pt;\n\t\t}\n\t\t\n\t\tul li\n\t\t{\n\t\t\tmargin-bottom: 0.5em;\n\t\t}\n\t\t\n\t\tul.options li\n\t\t{\n\t\t\tlist-style: none;\n\t\t\tmargin-bottom: 1em;\n\t\t}\n\t\t\n\t\tul li i\n\t\t{\n\t\t\tcolor: #999;\n\t\t}\n\t</style>\n </head>\n    <body>\n    <h1>Flot Pie Examples</h1>\n\n\t<h2>Default with Legend</h2>\n    <div id=\"default\" class=\"graph\"></div>\n\t<label for=\"default\">\n\t\tDefault pie graph with no options set.\n\t\t<code>\n$.plot($(\"#default\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\n\t<h2>Default without Legend</h2>\n    <div id=\"graph1\" class=\"graph\"></div>\n\t<label for=\"graph1\">\n\t\tDefault pie graph when legend is disabled. Since the labels would normally be outside the container, the graph is resized to fit.\n\t\t<code>\n$.plot($(\"#graph1\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph2</h2>\n    <div id=\"graph2\" class=\"graph\"></div>\n\t<label for=\"graph2\">\n\t\tAdded a semi-transparent background to the labels and a custom labelFormatter function.\n\t\t<code>\n$.plot($(\"#graph2\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { opacity: 0.8 }<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph3</h2>\n    <div id=\"graph3\" class=\"graph\"></div>\n\t<label for=\"graph3\">\n\t\tSlightly more transparent label backgrounds and adjusted the radius values to place them within the pie.\n\t\t<code>\n$.plot($(\"#graph3\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 3/4,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>background: { opacity: 0.5 }</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph4</h2>\n    <div id=\"graph4\" class=\"graph\"></div>\n\t<label for=\"graph4\">\n\t\tSemi-transparent, black-colored label background.\n\t\t<code>\n$.plot($(\"#graph4\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 3/4,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity: 0.5,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>color: '#000'</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph5</h2>\n    <div id=\"graph5\" class=\"graph\"></div>\n\t<label for=\"graph5\">\n\t\tSemi-transparent, black-colored label background placed at pie edge.\n\t\t<code>\n$.plot($(\"#graph5\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 3/4,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 3/4,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity: 0.5,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#000'<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph6</h2>\n    <div id=\"graph6\" class=\"graph\"></div>\n\t<label for=\"graph6\">\n\t\tLabels can be hidden if the slice is less than a given percentage of the pie (10% in this case).\n\t\t<br><span style=\"color: red\">Note: you may need to refresh the page to see this effect.</span>\n\t\t<code>\n$.plot($(\"#graph6\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 1,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius: 2/3,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>threshold: 0.1</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph7</h2>\n    <div id=\"graph7\" class=\"graph\"></div>\n\t<label for=\"graph7\">\n\t\tAll slices less than a given percentage of the pie can be combined into a single, larger slice (10% in this case).\n\t\t<br><span style=\"color: red\">Note: you may need to refresh the page to see this effect.</span>\n\t\t<code>\n$.plot($(\"#graph7\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>combine: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#999',<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Graph8</h2>\n    <div id=\"graph8\" class=\"graph\"></div>\n\t<label for=\"graph8\">\n\t\tThe radius can also be set to a specific size (even larger than the container itself).\n\t\t<code>\n$.plot($(\"#graph8\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>radius:300,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\n\t<h2>Graph9</h2>\n    <div id=\"graph9\" class=\"graph\" style=\"height: 250px;\"></div>\n\t<label for=\"graph9\">\n\t\tThe pie can be tilted at an angle.\n\t\t<code>\n$.plot($(\"#graph9\"), data, <br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>tilt: 0.5,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius: 1,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter: function(label, series){<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '&lt;div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\"&gt;'+label+'&lt;br/&gt;'+Math.round(series.percent)+'%&lt;/div&gt;';<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: { opacity: 0.8 }<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combine: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#999',<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threshold: 0.1<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;legend: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: false<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Donut</h2>\n    <div id=\"donut\" class=\"graph\"></div>\n\t<label for=\"donut\">\n\t\tA donut hole can be added.\n\t\t<code>\n$.plot($(\"#donut\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>innerRadius: 0.5,</b><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n});<br/>\n\t\t</code>\n\t</label>\n\t\n\t<h2>Interactive</h2>\n    <div id=\"interactive\" class=\"graph\"></div>\n\t<label for=\"interactive\">\n\t\tThe pie can be made interactive with hover and click events.\n\t\t<code>\n$.plot($(\"#interactive\"), data,<br/>\n{<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;series: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pie: { <br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>grid: {<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hoverable: true,<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clickable: true<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</b><br/>\n});<br/>\n<b>$(\"#interactive\").bind(\"plothover\", pieHover);<br/>\n$(\"#interactive\").bind(\"plotclick\", pieClick);</b><br/>\n\t\t</code>\n\t\t<div id=\"hover\"></div>\n\t</label>\n\t\t\n\t<h2>Pie Options</h2>\n\t<ul class=\"options\">\n\t\t<li style=\"border-bottom: 1px dotted #ccc;\"><b>option:</b> <i>default value</i> - Description of option</li>\n\t\t<li><b>show:</b> <i>false</i> - Enable the plugin and draw as a pie.</li>\n\t\t<li><b>radius:</b> <i>'auto'</i> - Sets the radius of the pie. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length. If set to 'auto', it will be set to 1 if the legend is enabled and 3/4 if not.</li>\n\t\t<li><b>innerRadius:</b> <i>0</i> - Sets the radius of the donut hole. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the radius, otherwise it will use the value as a direct pixel length.</li>\n\t\t<li><b>startAngle:</b> <i>3/2</i> - Factor of PI used for the starting angle (in radians) It can range between 0 and 2 (where 0 and 2 have the same result).</li>\n\t\t<li><b>tilt:</b> <i>1</i> - Percentage of tilt ranging from 0 and 1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn).</li>\n\t\t<li><b>offset:</b> <ul>\n\t\t\t<li><b>top:</b> <i>0</i> - Pixel distance to move the pie up and down (relative to the center).</li>\n\t\t\t<li><b>left:</b> <i>'auto'</i> - Pixel distance to move the pie left and right (relative to the center).</li>\n\t\t</ul>\n\t\t<li><b>stroke:</b> <ul>\n\t\t\t<li><b>color:</b> <i>'#FFF'</i> - Color of the border of each slice. Hexadecimal color definitions are prefered (other formats may or may not work).</li>\n\t\t\t<li><b>width:</b> <i>1</i> - Pixel width of the border of each slice.</li>\n\t\t</ul>\n\t\t<li><b>label:</b> <ul>\n\t\t\t<li><b>show:</b> <i>'auto'</i> - Enable/Disable the labels. This can be set to true, false, or 'auto'. When set to 'auto', it will be set to false if the legend is enabled and true if not.</li>\n\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t<li><b>threshold:</b> <i>0</i> - Hides the labels of any pie slice that is smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will hide all slices 3% or less of the total.</li>\n\t\t\t<li><b>formatter:</b> <i>[function]</i> - This function specifies how the positioned labels should be formatted, and is applied after the legend's labelFormatter function. The labels can also still be styled using the class \"pieLabel\" (i.e. \".pieLabel\" or \"#graph1 .pieLabel\").</li>\n\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t<li><b>background:</b> <ul>\n\t\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the slice.</li>\n\t\t\t\t<li><b>opacity:</b> <i>0</i> - Opacity of the background for the positioned labels. Acceptable values range from 0 to 1, where 0 is completely transparent and 1 is completely opaque.</li>\n\t\t\t</ul>\n\t\t</ul>\n\t\t<li><b>combine:</b> <ul>\n\t\t\t<li><b>threshold:</b> <i>0</i> - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice).</li>\n\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the first slice to be combined.</li>\n\t\t\t<li><b>label:</b> <i>'Other'</i> - Label text for the combined slice.</li>\n\t\t</ul>\n\t\t<li><b>highlight:</b> <ul>\n\t\t\t<li><b>opacity:</b> <i>0.5</i> - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date.\n\t\t</ul>\n\t</ul>\n\t\n\t<h2>Changes/Features</h2>\n\t<ul>\n\t\t<li style=\"list-style: none;\"><i>v1.0 - November 20th, 2009 - Brian Medendorp</i></li>\n\t\t<li>The pie plug-in is now part of the Flot repository! This should make it a lot easier to deal with.</li>\n\t\t<li>Added a new option (innerRadius) to add a \"donut hole\" to the center of the pie, based on comtributions from Anthony Aragues. I was a little reluctant to add this feature because it doesn't work very well with the shadow created for the tilted pie, but figured it was worthwhile for non-tilted pies. Also, excanvas apparently doesn't support compositing, so it will fall back to using the stroke color to fill in the center (but I recommend setting the stroke color to the background color anyway).</li>\n\t\t<li>Changed the lineJoin for the border of the pie slices to use the 'round' option. This should make the center of the pie look better, particularly when there are numerous thin slices.</li>\n\t\t<li>Included a bug fix submitted by btburnett3 to display a slightly smaller slice in the event that the slice is 100% and being rendered with Internet Explorer. I haven't experienced this bug myself, but it doesn't seem to hurt anything so I've included it.</li>\n\t\t<li>The tilt value is now used when calculating the maximum radius of the pie in relation to the height of the container. This should prevent the pie from being smaller than it needed to in some cases, as well as reducing the amount of extra white space generated above and below the pie.</li>\n\t\t<li><b>Hover and Click functionality are now availabe!</b><ul>\n\t\t\t<li>Thanks to btburnett3 for the original hover functionality and Anthony Aragues for the modification that makes it compatable with excanvas, this was a huge help!</li>\n\t\t\t<li>Added a new option (highlight opacity) to modify the highlight created when mousing over a slice. Currently this just uses a white overlay, but an option to change the hightlight color will be added when the appropriate functionality becomes available.\n\t\t\t<li>I had a major setback that required me to practically rebuild the hover/click events from scratch one piece at a time (I discovered that it only worked with a single pie on a page at a time), but the end result ended up being virtually identical to the original, so I'm not quite sure what exactly made it work.</li>\n\t\t\t<li><span style=\"color: red;\">Warning:</span> There are some minor issues with using this functionality in conjuction with some of the other more advanced features (tilt and donut). When using a donut hole, the inner portion still triggers the events even though that portion of the pie is no longer visible. When tilted, the interactive portions still use the original, untilted version of the pie when determining mouse position (this is because the isPointInPath function apparently doesn't work with transformations), however hover and click both work this way, so the appropriate slice is still highlighted when clicking, and it isn't as noticable of a problem.</li>\n\t\t</ul></li>\n\t\t<li>Included a bug fix submitted by Xavi Ivars to fix array issues when other javascript libraries are included in addition to jQuery</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.4 - July 1st, 2009 - Brian Medendorp</i></li>\n\t\t<li>Each series will now be shown in the legend, even if it's value is zero. The series will not get a positioned label because it will overlap with the other labels present and often makes them unreadable.</li>\n\t\t<li>Data can now be passed in using the standard Flot method using an array of datapoints, the pie plugin will simply use the first y-value that it finds for each series in this case. The plugin uses this datastructure internally, but you can still use the old method of passing in a single numerical value for each series (the plugin will convert it as necessary). This should make it easier to transition from other types of graphs (such as a stacked bar graph) to a pie.</li>\n\t\t<li>The pie can now be tilted at an angle with a new \"tilt\" option. Acceptable values range from 0-1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn). If the plugin determines that it will fit within the canvas, a drop shadow will be drawn under the tilted pie (this also requires a tilt value of 0.8 or less).</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3.2 - June 25th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Fixed a bug that was causing the pie to be shifted too far left or right when the legend is showing in some cases.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3.1 - June 24th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Fixed a bug that was causing nothing to be drawn and generating a javascript error if any of the data values were set to zero.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.3 - June 23rd, 2009 - Brian Medendorp</i></li>\n\t\t<li>The legend now works without any modifications! Because of changes made to flot and the plugin system (thanks Ole Laursen!) I was able to simplify a number of things and am now able to use the legend without the direct access hack that was required in the previous version.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.2 - June 22nd, 2009 - Brian Medendorp</i></li>\n\t\t<li>The legend now works but only if you make the necessary changes to jquery.flot.js. Because of this, I changed the default values for pie.radius and pie.label.show to new 'auto' settings that change the default behavior of the size and labels depending on whether the legend functionality is available or not.</li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>v0.1 - June 18th, 2009 - Brian Medendorp</i></li>\n\t\t<li>Rewrote the entire pie code into a flot plugin (since that is now an option), so it should be much easier to use and the code is cleaned up a bit. However, the (standard flot) legend is no longer available because the only way to prevent the grid lines from being displayed also prevents the legend from being displayed. Hopefully this can be fixed at a later date.</li>\n\t\t<li>Restructured and combined some of the options. It should be much easier to deal with now.</li>\n\t\t<li>Added the ability to change the starting point of the pie (still defaults to the top).</li>\n\t\t<li>Modified the default options to show the labels to compensate for the lack of a legend.</li>\n\t\t<li>Modified this page to use a random dataset. <span style=\"color: red\">Note: you may need to refresh the page to see the effects of some of the examples.</span></li>\n\t\t<br/>\n\t\t<li style=\"list-style: none;\"><i>May 21st, 2009 - Brian Medendorp</i></li>\n\t\t<li>Merged original pie modifications by Sergey Nosenko into the latest SVN version <i>(as of May 15th, 2009)</i> so that it will work with ie8.</li>\n\t\t<li>Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.</li>\n\t\t<li>Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).</li>\n\t\t<li>Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.</li>\n\t\t<li>As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas</li>\n\t\t<li>Added new options \"radiusLimitFactor\" and \"radiusLimit\" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels \"outside\" the pie.</li>\n\t\t<li>Added a new option \"labelHidePercent\" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.</li>\n\t\t<li>Added a new option \"sliceCombinePercent\" that combines all slices smaller than the specified percentage into one larger slice. This is to help make the pie more attractive when there are a number of tiny slices. The options \"sliceCombineColor\" and \"sliceCombineLabel\" have also been added to change the color and name of the new slice if desired.</li>\n\t\t<li>Tested in Firefox (3.0.10, 3.5b4), Internet Explorer (6.0.2900, 7.0.5730, 8.0.6001), Chrome (1.0.154), Opera (9.64), and Safari (3.1.1, 4 beta 5528.16).\n\t</ul>\n\n\t\n </body>\n</html>\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/realtime.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>You can update a chart periodically to get a real-time effect\n    by using a timer to insert the new data in the plot and redraw it.</p>\n\n    <p>Time between updates: <input id=\"updateInterval\" type=\"text\" value=\"\" style=\"text-align: right; width:5em\"> milliseconds</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    // we use an inline data source in the example, usually data would\n    // be fetched from a server\n    var data = [], totalPoints = 300;\n    function getRandomData() {\n        if (data.length > 0)\n            data = data.slice(1);\n\n        // do a random walk\n        while (data.length < totalPoints) {\n            var prev = data.length > 0 ? data[data.length - 1] : 50;\n            var y = prev + Math.random() * 10 - 5;\n            if (y < 0)\n                y = 0;\n            if (y > 100)\n                y = 100;\n            data.push(y);\n        }\n\n        // zip the generated y values with the x values\n        var res = [];\n        for (var i = 0; i < data.length; ++i)\n            res.push([i, data[i]])\n        return res;\n    }\n\n    // setup control widget\n    var updateInterval = 30;\n    $(\"#updateInterval\").val(updateInterval).change(function () {\n        var v = $(this).val();\n        if (v && !isNaN(+v)) {\n            updateInterval = +v;\n            if (updateInterval < 1)\n                updateInterval = 1;\n            if (updateInterval > 2000)\n                updateInterval = 2000;\n            $(this).val(\"\" + updateInterval);\n        }\n    });\n\n    // setup plot\n    var options = {\n        series: { shadowSize: 0 }, // drawing is faster without shadows\n        yaxis: { min: 0, max: 100 },\n        xaxis: { show: false }\n    };\n    var plot = $.plot($(\"#placeholder\"), [ getRandomData() ], options);\n\n    function update() {\n        plot.setData([ getRandomData() ]);\n        // since the axes don't change, we don't need to call plot.setupGrid()\n        plot.draw();\n        \n        setTimeout(update, updateInterval);\n    }\n\n    update();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/resize.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.resize.js\"></script>\n    <style type=\"text/css\">\n    html, body {\n        height: 100%; /* make the percentage height on placeholder work */\n    }\n    .message {\n        padding-left: 50px;\n        font-size: smaller;\n    }\n    </style>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:80%;height:40%;\"></div>\n\n    <p class=\"message\"></p>\n\n    <p>Sometimes it makes more sense to just let the plot take up the\n    available space. In that case, we need to redraw the plot each\n    time the placeholder changes its size. If you include the resize\n    plugin, this is handled automatically.</p>\n\n    <p>Try resizing the window.</p>\n\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < 14; i += 0.5)\n        d1.push([i, Math.sin(i)]);\n\n    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n\n    var placeholder = $(\"#placeholder\");\n    \n    var plot = $.plot(placeholder, [d1, d2, d3]);\n    \n    // the plugin includes a jQuery plugin for adding resize events to\n    // any element, let's just add a callback so we can display the\n    // placeholder size\n    placeholder.resize(function () {\n        $(\".message\").text(\"Placeholder is now \"\n                           + $(this).width() + \"x\" + $(this).height()\n                           + \" pixels\");\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/selection.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>1000 kg. CO<sub>2</sub> emissions per year per capita for various countries (source: <a href=\"http://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions_per_capita\">Wikipedia</a>).</p>\n\n    <p>Flot supports selections through the selection plugin.\n       You can enable rectangular selection\n       or one-dimensional selection if the user should only be able to\n       select on one axis. Try left-click and drag on the plot above\n       where selection on the x axis is enabled.</p>\n\n    <p>You selected: <span id=\"selection\"></span></p>\n\n    <p>The plot command returns a plot object you can use to control\n       the selection. Click the buttons below.</p>\n\n    <p><input id=\"clearSelection\" type=\"button\" value=\"Clear selection\" />\n       <input id=\"setSelection\" type=\"button\" value=\"Select year 1994\" /></p>\n\n    <p>Selections are really useful for zooming. Just replot the\n       chart with min and max values for the axes set to the values\n       in the \"plotselected\" event triggered. Enable the checkbox\n       below and select a region again.</p>\n\n    <p><label><input id=\"zoom\" type=\"checkbox\" />Zoom to selection.</label></p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var data = [\n        {\n            label: \"United States\",\n            data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]\n        },\n        {\n            label: \"Russia\", \n            data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]\n        },\n        {\n            label: \"United Kingdom\",\n            data: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]\n        },\n        {\n            label: \"Germany\",\n            data: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]\n        },\n        {\n            label: \"Denmark\",\n \t    data: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]\n        },\n        {\n            label: \"Sweden\",\n            data: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]\n        },\n        {\n            label: \"Norway\",\n            data: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]\n        }\n    ];\n\n    var options = {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        legend: { noColumns: 2 },\n        xaxis: { tickDecimals: 0 },\n        yaxis: { min: 0 },\n        selection: { mode: \"x\" }\n    };\n\n    var placeholder = $(\"#placeholder\");\n\n    placeholder.bind(\"plotselected\", function (event, ranges) {\n        $(\"#selection\").text(ranges.xaxis.from.toFixed(1) + \" to \" + ranges.xaxis.to.toFixed(1));\n\n        var zoom = $(\"#zoom\").attr(\"checked\");\n        if (zoom)\n            plot = $.plot(placeholder, data,\n                          $.extend(true, {}, options, {\n                              xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                          }));\n    });\n\n    placeholder.bind(\"plotunselected\", function (event) {\n        $(\"#selection\").text(\"\");\n    });\n    \n    var plot = $.plot(placeholder, data, options);\n\n    $(\"#clearSelection\").click(function () {\n        plot.clearSelection();\n    });\n\n    $(\"#setSelection\").click(function () {\n        plot.setSelection({ xaxis: { from: 1994, to: 1995 } });\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/setting-options.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>There are plenty of options you can set to control the precise\n    looks of your plot. You can control the ticks on the axes, the\n    legend, the graph type, etc. The idea is that Flot goes to great\n    lengths to provide sensible defaults so that you don't have to\n    customize much for a good result.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.25)\n        d1.push([i, Math.sin(i)]);\n    \n    var d2 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.25)\n        d2.push([i, Math.cos(i)]);\n\n    var d3 = [];\n    for (var i = 0; i < Math.PI * 2; i += 0.1)\n        d3.push([i, Math.tan(i)]);\n    \n    $.plot($(\"#placeholder\"), [\n        { label: \"sin(x)\",  data: d1},\n        { label: \"cos(x)\",  data: d2},\n        { label: \"tan(x)\",  data: d3}\n    ], {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        xaxis: {\n            ticks: [0, [Math.PI/2, \"\\u03c0/2\"], [Math.PI, \"\\u03c0\"], [Math.PI * 3/2, \"3\\u03c0/2\"], [Math.PI * 2, \"2\\u03c0\"]]\n        },\n        yaxis: {\n            ticks: 10,\n            min: -2,\n            max: 2\n        },\n        grid: {\n            backgroundColor: { colors: [\"#fff\", \"#eee\"] }\n        }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/stacking.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.stack.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With the stack plugin, you can have Flot stack the\n    series. This is useful if you wish to display both a total and the\n    constituents it is made of. The only requirement is that you provide\n    the input sorted on x.</p>\n\n    <p class=\"stackControls\">\n    <input type=\"button\" value=\"With stacking\">\n    <input type=\"button\" value=\"Without stacking\">\n    </p>\n\n    <p class=\"graphControls\">\n    <input type=\"button\" value=\"Bars\">\n    <input type=\"button\" value=\"Lines\">\n    <input type=\"button\" value=\"Lines with steps\">\n    </p>\n\n<script id=\"source\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d1.push([i, parseInt(Math.random() * 30)]);\n\n    var d2 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d2.push([i, parseInt(Math.random() * 30)]);\n\n    var d3 = [];\n    for (var i = 0; i <= 10; i += 1)\n        d3.push([i, parseInt(Math.random() * 30)]);\n\n    var stack = 0, bars = true, lines = false, steps = false;\n    \n    function plotWithOptions() {\n        $.plot($(\"#placeholder\"), [ d1, d2, d3 ], {\n            series: {\n                stack: stack,\n                lines: { show: lines, fill: true, steps: steps },\n                bars: { show: bars, barWidth: 0.6 }\n            }\n        });\n    }\n\n    plotWithOptions();\n    \n    $(\".stackControls input\").click(function (e) {\n        e.preventDefault();\n        stack = $(this).val() == \"With stacking\" ? true : null;\n        plotWithOptions();\n    });\n    $(\".graphControls input\").click(function (e) {\n        e.preventDefault();\n        bars = $(this).val().indexOf(\"Bars\") != -1;\n        lines = $(this).val().indexOf(\"Lines\") != -1;\n        steps = $(this).val().indexOf(\"steps\") != -1;\n        plotWithOptions();\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/symbols.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.symbol.js\"></script>\n </head>\n <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>Various point types. Circles are built-in. For other\n    point types, you can define a little callback function to draw the\n    symbol; some common ones are available in the symbol plugin.</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    function generate(offset, amplitude) {\n        var res = [];\n        var start = 0, end = 10;\n        for (var i = 0; i <= 50; ++i) {\n            var x = start + i / 50 * (end - start);\n            res.push([x, amplitude * Math.sin(x + offset)]);\n        }\n        return res;\n    }\n\n    var data = [\n        { data: generate(2, 1.8), points: { symbol: \"circle\" } },\n        { data: generate(3, 1.5), points: { symbol: \"square\" } },\n        { data: generate(4, 0.9), points: { symbol: \"diamond\" } },\n        { data: generate(6, 1.4), points: { symbol: \"triangle\" } },\n        { data: generate(7, 1.1), points: { symbol: \"cross\" } }\n    ];\n\n    $.plot($(\"#placeholder\"), data, {\n        series: { points: { show: true, radius: 3 } },\n        grid: { hoverable: true }\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/thresholding.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.threshold.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>With the threshold plugin, you can apply a specific color to\n    the part of a data series below a threshold. This is can be useful\n    for highlighting negative values, e.g. when displaying net results\n    or what's in stock.</p>\n\n    <p class=\"controls\">\n    <input type=\"button\" value=\"Threshold at 5\">\n    <input type=\"button\" value=\"Threshold at 0\">\n    <input type=\"button\" value=\"Threshold at -2.5\">\n    </p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var d1 = [];\n    for (var i = 0; i <= 60; i += 1)\n        d1.push([i, parseInt(Math.random() * 30 - 10)]);\n\n    function plotWithOptions(t) {\n        $.plot($(\"#placeholder\"), [ {\n            data: d1,\n            color: \"rgb(30, 180, 20)\",\n            threshold: { below: t, color: \"rgb(200, 20, 30)\" },\n            lines: { steps: true }\n        } ]);\n    }\n\n    plotWithOptions(0);\n    \n    $(\".controls input\").click(function (e) {\n        e.preventDefault();\n        var t = parseFloat($(this).val().replace('Threshold at ', ''));\n        plotWithOptions(t);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/time.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Monthly mean atmospheric CO<sub>2</sub> in PPM at Mauna Loa, Hawaii (source: <a href=\"http://www.esrl.noaa.gov/gmd/ccgg/trends/\">NOAA/ESRL</a>).</p>\n\n    <p>If you tell Flot that an axis represents time, the data will\n      be interpreted as timestamps and the ticks adjusted and\n      formatted accordingly.</p>\n\n    <p>Zoom to: <button id=\"whole\">Whole period</button>\n      <button id=\"nineties\">1990-2000</button>\n      <button id=\"ninetynine\">1999</button></p>\n\n    <p>The timestamps must be specified as Javascript timestamps, as\n      milliseconds since January 1, 1970 00:00. This is like Unix\n      timestamps, but in milliseconds instead of seconds (remember to\n      multiply with 1000!).</p>\n\n    <p>As an extra caveat, the timestamps are interpreted according to\n      UTC to avoid having the graph shift with each visitor's local\n      time zone. So you might have to add your local time zone offset\n      to the timestamps or simply pretend that the data was produced\n      in UTC instead of your local time zone.</p>\n\n<script id=\"source\">\n$(function () {\n    var d = [[-373597200000, 315.71], [-370918800000, 317.45], [-368326800000, 317.50], [-363056400000, 315.86], [-360378000000, 314.93], [-357699600000, 313.19], [-352429200000, 313.34], [-349837200000, 314.67], [-347158800000, 315.58], [-344480400000, 316.47], [-342061200000, 316.65], [-339382800000, 317.71], [-336790800000, 318.29], [-334112400000, 318.16], [-331520400000, 316.55], [-328842000000, 314.80], [-326163600000, 313.84], [-323571600000, 313.34], [-320893200000, 314.81], [-318301200000, 315.59], [-315622800000, 316.43], [-312944400000, 316.97], [-310438800000, 317.58], [-307760400000, 319.03], [-305168400000, 320.03], [-302490000000, 319.59], [-299898000000, 318.18], [-297219600000, 315.91], [-294541200000, 314.16], [-291949200000, 313.83], [-289270800000, 315.00], [-286678800000, 316.19], [-284000400000, 316.89], [-281322000000, 317.70], [-278902800000, 318.54], [-276224400000, 319.48], [-273632400000, 320.58], [-270954000000, 319.78], [-268362000000, 318.58], [-265683600000, 316.79], [-263005200000, 314.99], [-260413200000, 315.31], [-257734800000, 316.10], [-255142800000, 317.01], [-252464400000, 317.94], [-249786000000, 318.56], [-247366800000, 319.69], [-244688400000, 320.58], [-242096400000, 321.01], [-239418000000, 320.61], [-236826000000, 319.61], [-234147600000, 317.40], [-231469200000, 316.26], [-228877200000, 315.42], [-226198800000, 316.69], [-223606800000, 317.69], [-220928400000, 318.74], [-218250000000, 319.08], [-215830800000, 319.86], [-213152400000, 321.39], [-210560400000, 322.24], [-207882000000, 321.47], [-205290000000, 319.74], [-202611600000, 317.77], [-199933200000, 316.21], [-197341200000, 315.99], [-194662800000, 317.07], [-192070800000, 318.36], [-189392400000, 319.57], [-178938000000, 322.23], [-176259600000, 321.89], [-173667600000, 320.44], [-170989200000, 318.70], [-168310800000, 316.70], [-165718800000, 316.87], [-163040400000, 317.68], [-160448400000, 318.71], [-157770000000, 319.44], [-155091600000, 320.44], [-152672400000, 320.89], [-149994000000, 322.13], [-147402000000, 322.16], [-144723600000, 321.87], [-142131600000, 321.21], [-139453200000, 318.87], [-136774800000, 317.81], [-134182800000, 317.30], [-131504400000, 318.87], [-128912400000, 319.42], [-126234000000, 320.62], [-123555600000, 321.59], [-121136400000, 322.39], [-118458000000, 323.70], [-115866000000, 324.07], [-113187600000, 323.75], [-110595600000, 322.40], [-107917200000, 320.37], [-105238800000, 318.64], [-102646800000, 318.10], [-99968400000, 319.79], [-97376400000, 321.03], [-94698000000, 322.33], [-92019600000, 322.50], [-89600400000, 323.04], [-86922000000, 324.42], [-84330000000, 325.00], [-81651600000, 324.09], [-79059600000, 322.55], [-76381200000, 320.92], [-73702800000, 319.26], [-71110800000, 319.39], [-68432400000, 320.72], [-65840400000, 321.96], [-63162000000, 322.57], [-60483600000, 323.15], [-57978000000, 323.89], [-55299600000, 325.02], [-52707600000, 325.57], [-50029200000, 325.36], [-47437200000, 324.14], [-44758800000, 322.11], [-42080400000, 320.33], [-39488400000, 320.25], [-36810000000, 321.32], [-34218000000, 322.90], [-31539600000, 324.00], [-28861200000, 324.42], [-26442000000, 325.64], [-23763600000, 326.66], [-21171600000, 327.38], [-18493200000, 326.70], [-15901200000, 325.89], [-13222800000, 323.67], [-10544400000, 322.38], [-7952400000, 321.78], [-5274000000, 322.85], [-2682000000, 324.12], [-3600000, 325.06], [2674800000, 325.98], [5094000000, 326.93], [7772400000, 328.13], [10364400000, 328.07], [13042800000, 327.66], [15634800000, 326.35], [18313200000, 324.69], [20991600000, 323.10], [23583600000, 323.07], [26262000000, 324.01], [28854000000, 325.13], [31532400000, 326.17], [34210800000, 326.68], [36630000000, 327.18], [39308400000, 327.78], [41900400000, 328.92], [44578800000, 328.57], [47170800000, 327.37], [49849200000, 325.43], [52527600000, 323.36], [55119600000, 323.56], [57798000000, 324.80], [60390000000, 326.01], [63068400000, 326.77], [65746800000, 327.63], [68252400000, 327.75], [70930800000, 329.72], [73522800000, 330.07], [76201200000, 329.09], [78793200000, 328.05], [81471600000, 326.32], [84150000000, 324.84], [86742000000, 325.20], [89420400000, 326.50], [92012400000, 327.55], [94690800000, 328.54], [97369200000, 329.56], [99788400000, 330.30], [102466800000, 331.50], [105058800000, 332.48], [107737200000, 332.07], [110329200000, 330.87], [113007600000, 329.31], [115686000000, 327.51], [118278000000, 327.18], [120956400000, 328.16], [123548400000, 328.64], [126226800000, 329.35], [128905200000, 330.71], [131324400000, 331.48], [134002800000, 332.65], [136594800000, 333.16], [139273200000, 332.06], [141865200000, 330.99], [144543600000, 329.17], [147222000000, 327.41], [149814000000, 327.20], [152492400000, 328.33], [155084400000, 329.50], [157762800000, 330.68], [160441200000, 331.41], [162860400000, 331.85], [165538800000, 333.29], [168130800000, 333.91], [170809200000, 333.40], [173401200000, 331.78], [176079600000, 329.88], [178758000000, 328.57], [181350000000, 328.46], [184028400000, 329.26], [189298800000, 331.71], [191977200000, 332.76], [194482800000, 333.48], [197161200000, 334.78], [199753200000, 334.78], [202431600000, 334.17], [205023600000, 332.78], [207702000000, 330.64], [210380400000, 328.95], [212972400000, 328.77], [215650800000, 330.23], [218242800000, 331.69], [220921200000, 332.70], [223599600000, 333.24], [226018800000, 334.96], [228697200000, 336.04], [231289200000, 336.82], [233967600000, 336.13], [236559600000, 334.73], [239238000000, 332.52], [241916400000, 331.19], [244508400000, 331.19], [247186800000, 332.35], [249778800000, 333.47], [252457200000, 335.11], [255135600000, 335.26], [257554800000, 336.60], [260233200000, 337.77], [262825200000, 338.00], [265503600000, 337.99], [268095600000, 336.48], [270774000000, 334.37], [273452400000, 332.27], [276044400000, 332.41], [278722800000, 333.76], [281314800000, 334.83], [283993200000, 336.21], [286671600000, 336.64], [289090800000, 338.12], [291769200000, 339.02], [294361200000, 339.02], [297039600000, 339.20], [299631600000, 337.58], [302310000000, 335.55], [304988400000, 333.89], [307580400000, 334.14], [310258800000, 335.26], [312850800000, 336.71], [315529200000, 337.81], [318207600000, 338.29], [320713200000, 340.04], [323391600000, 340.86], [325980000000, 341.47], [328658400000, 341.26], [331250400000, 339.29], [333928800000, 337.60], [336607200000, 336.12], [339202800000, 336.08], [341881200000, 337.22], [344473200000, 338.34], [347151600000, 339.36], [349830000000, 340.51], [352249200000, 341.57], [354924000000, 342.56], [357516000000, 343.01], [360194400000, 342.47], [362786400000, 340.71], [365464800000, 338.52], [368143200000, 336.96], [370738800000, 337.13], [373417200000, 338.58], [376009200000, 339.89], [378687600000, 340.93], [381366000000, 341.69], [383785200000, 342.69], [389052000000, 344.30], [391730400000, 343.43], [394322400000, 341.88], [397000800000, 339.89], [399679200000, 337.95], [402274800000, 338.10], [404953200000, 339.27], [407545200000, 340.67], [410223600000, 341.42], [412902000000, 342.68], [415321200000, 343.46], [417996000000, 345.10], [420588000000, 345.76], [423266400000, 345.36], [425858400000, 343.91], [428536800000, 342.05], [431215200000, 340.00], [433810800000, 340.12], [436489200000, 341.33], [439081200000, 342.94], [441759600000, 343.87], [444438000000, 344.60], [446943600000, 345.20], [452210400000, 347.36], [454888800000, 346.74], [457480800000, 345.41], [460159200000, 343.01], [462837600000, 341.23], [465433200000, 341.52], [468111600000, 342.86], [470703600000, 344.41], [473382000000, 345.09], [476060400000, 345.89], [478479600000, 347.49], [481154400000, 348.00], [483746400000, 348.75], [486424800000, 348.19], [489016800000, 346.54], [491695200000, 344.63], [494373600000, 343.03], [496969200000, 342.92], [499647600000, 344.24], [502239600000, 345.62], [504918000000, 346.43], [507596400000, 346.94], [510015600000, 347.88], [512690400000, 349.57], [515282400000, 350.35], [517960800000, 349.72], [520552800000, 347.78], [523231200000, 345.86], [525909600000, 344.84], [528505200000, 344.32], [531183600000, 345.67], [533775600000, 346.88], [536454000000, 348.19], [539132400000, 348.55], [541551600000, 349.52], [544226400000, 351.12], [546818400000, 351.84], [549496800000, 351.49], [552088800000, 349.82], [554767200000, 347.63], [557445600000, 346.38], [560041200000, 346.49], [562719600000, 347.75], [565311600000, 349.03], [567990000000, 350.20], [570668400000, 351.61], [573174000000, 352.22], [575848800000, 353.53], [578440800000, 354.14], [581119200000, 353.62], [583711200000, 352.53], [586389600000, 350.41], [589068000000, 348.84], [591663600000, 348.94], [594342000000, 350.04], [596934000000, 351.29], [599612400000, 352.72], [602290800000, 353.10], [604710000000, 353.65], [607384800000, 355.43], [609976800000, 355.70], [612655200000, 355.11], [615247200000, 353.79], [617925600000, 351.42], [620604000000, 349.81], [623199600000, 350.11], [625878000000, 351.26], [628470000000, 352.63], [631148400000, 353.64], [633826800000, 354.72], [636246000000, 355.49], [638920800000, 356.09], [641512800000, 357.08], [644191200000, 356.11], [646783200000, 354.70], [649461600000, 352.68], [652140000000, 351.05], [654735600000, 351.36], [657414000000, 352.81], [660006000000, 354.22], [662684400000, 354.85], [665362800000, 355.66], [667782000000, 357.04], [670456800000, 358.40], [673048800000, 359.00], [675727200000, 357.99], [678319200000, 356.00], [680997600000, 353.78], [683676000000, 352.20], [686271600000, 352.22], [688950000000, 353.70], [691542000000, 354.98], [694220400000, 356.09], [696898800000, 356.85], [699404400000, 357.73], [702079200000, 358.91], [704671200000, 359.45], [707349600000, 359.19], [709941600000, 356.72], [712620000000, 354.79], [715298400000, 352.79], [717894000000, 353.20], [720572400000, 354.15], [723164400000, 355.39], [725842800000, 356.77], [728521200000, 357.17], [730940400000, 358.26], [733615200000, 359.16], [736207200000, 360.07], [738885600000, 359.41], [741477600000, 357.44], [744156000000, 355.30], [746834400000, 353.87], [749430000000, 354.04], [752108400000, 355.27], [754700400000, 356.70], [757378800000, 358.00], [760057200000, 358.81], [762476400000, 359.68], [765151200000, 361.13], [767743200000, 361.48], [770421600000, 360.60], [773013600000, 359.20], [775692000000, 357.23], [778370400000, 355.42], [780966000000, 355.89], [783644400000, 357.41], [786236400000, 358.74], [788914800000, 359.73], [791593200000, 360.61], [794012400000, 361.58], [796687200000, 363.05], [799279200000, 363.62], [801957600000, 363.03], [804549600000, 361.55], [807228000000, 358.94], [809906400000, 357.93], [812502000000, 357.80], [815180400000, 359.22], [817772400000, 360.44], [820450800000, 361.83], [823129200000, 362.95], [825634800000, 363.91], [828309600000, 364.28], [830901600000, 364.94], [833580000000, 364.70], [836172000000, 363.31], [838850400000, 361.15], [841528800000, 359.40], [844120800000, 359.34], [846802800000, 360.62], [849394800000, 361.96], [852073200000, 362.81], [854751600000, 363.87], [857170800000, 364.25], [859845600000, 366.02], [862437600000, 366.46], [865116000000, 365.32], [867708000000, 364.07], [870386400000, 361.95], [873064800000, 360.06], [875656800000, 360.49], [878338800000, 362.19], [880930800000, 364.12], [883609200000, 364.99], [886287600000, 365.82], [888706800000, 366.95], [891381600000, 368.42], [893973600000, 369.33], [896652000000, 368.78], [899244000000, 367.59], [901922400000, 365.84], [904600800000, 363.83], [907192800000, 364.18], [909874800000, 365.34], [912466800000, 366.93], [915145200000, 367.94], [917823600000, 368.82], [920242800000, 369.46], [922917600000, 370.77], [925509600000, 370.66], [928188000000, 370.10], [930780000000, 369.08], [933458400000, 366.66], [936136800000, 364.60], [938728800000, 365.17], [941410800000, 366.51], [944002800000, 367.89], [946681200000, 369.04], [949359600000, 369.35], [951865200000, 370.38], [954540000000, 371.63], [957132000000, 371.32], [959810400000, 371.53], [962402400000, 369.75], [965080800000, 368.23], [967759200000, 366.87], [970351200000, 366.94], [973033200000, 368.27], [975625200000, 369.64], [978303600000, 370.46], [980982000000, 371.44], [983401200000, 372.37], [986076000000, 373.33], [988668000000, 373.77], [991346400000, 373.09], [993938400000, 371.51], [996616800000, 369.55], [999295200000, 368.12], [1001887200000, 368.38], [1004569200000, 369.66], [1007161200000, 371.11], [1009839600000, 372.36], [1012518000000, 373.09], [1014937200000, 373.81], [1017612000000, 374.93], [1020204000000, 375.58], [1022882400000, 375.44], [1025474400000, 373.86], [1028152800000, 371.77], [1030831200000, 370.73], [1033423200000, 370.50], [1036105200000, 372.18], [1038697200000, 373.70], [1041375600000, 374.92], [1044054000000, 375.62], [1046473200000, 376.51], [1049148000000, 377.75], [1051740000000, 378.54], [1054418400000, 378.20], [1057010400000, 376.68], [1059688800000, 374.43], [1062367200000, 373.11], [1064959200000, 373.10], [1067641200000, 374.77], [1070233200000, 375.97], [1072911600000, 377.03], [1075590000000, 377.87], [1078095600000, 378.88], [1080770400000, 380.42], [1083362400000, 380.62], [1086040800000, 379.70], [1088632800000, 377.43], [1091311200000, 376.32], [1093989600000, 374.19], [1096581600000, 374.47], [1099263600000, 376.15], [1101855600000, 377.51], [1104534000000, 378.43], [1107212400000, 379.70], [1109631600000, 380.92], [1112306400000, 382.18], [1114898400000, 382.45], [1117576800000, 382.14], [1120168800000, 380.60], [1122847200000, 378.64], [1125525600000, 376.73], [1128117600000, 376.84], [1130799600000, 378.29], [1133391600000, 380.06], [1136070000000, 381.40], [1138748400000, 382.20], [1141167600000, 382.66], [1143842400000, 384.69], [1146434400000, 384.94], [1149112800000, 384.01], [1151704800000, 382.14], [1154383200000, 380.31], [1157061600000, 378.81], [1159653600000, 379.03], [1162335600000, 380.17], [1164927600000, 381.85], [1167606000000, 382.94], [1170284400000, 383.86], [1172703600000, 384.49], [1175378400000, 386.37], [1177970400000, 386.54], [1180648800000, 385.98], [1183240800000, 384.36], [1185919200000, 381.85], [1188597600000, 380.74], [1191189600000, 381.15], [1193871600000, 382.38], [1196463600000, 383.94], [1199142000000, 385.44]]; \n\n    $.plot($(\"#placeholder\"), [d], { xaxis: { mode: \"time\" } });\n\n    $(\"#whole\").click(function () {\n        $.plot($(\"#placeholder\"), [d], { xaxis: { mode: \"time\" } });\n    });\n\n    $(\"#nineties\").click(function () {\n        $.plot($(\"#placeholder\"), [d], {\n            xaxis: {\n                mode: \"time\",\n                min: (new Date(1990, 1, 1)).getTime(),\n                max: (new Date(2000, 1, 1)).getTime()\n            }\n        });\n    });\n\n    $(\"#ninetynine\").click(function () {\n        $.plot($(\"#placeholder\"), [d], {\n            xaxis: {\n                mode: \"time\",\n                minTickSize: [1, \"month\"],\n                min: (new Date(1999, 1, 1)).getTime(),\n                max: (new Date(2000, 1, 1)).getTime()\n            }\n        });\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/tracking.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.crosshair.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n\n    <p>You can add crosshairs that'll track the mouse position, either\n    on both axes or as here on only one.</p>\n\n    <p>If you combine it with listening on hover events, you can use\n    it to track the intersection on the curves by interpolating\n    the data points (look at the legend).</p>\n\n    <p id=\"hoverdata\"></p>\n\n<script type=\"text/javascript\">\nvar plot;\n$(function () {\n    var sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.1) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    plot = $.plot($(\"#placeholder\"),\n                      [ { data: sin, label: \"sin(x) = -0.00\"},\n                        { data: cos, label: \"cos(x) = -0.00\" } ], {\n                            series: {\n                                lines: { show: true }\n                            },\n                            crosshair: { mode: \"x\" },\n                            grid: { hoverable: true, autoHighlight: false },\n                            yaxis: { min: -1.2, max: 1.2 }\n                        });\n    var legends = $(\"#placeholder .legendLabel\");\n    legends.each(function () {\n        // fix the widths so they don't jump around\n        $(this).css('width', $(this).width());\n    });\n\n    var updateLegendTimeout = null;\n    var latestPosition = null;\n    \n    function updateLegend() {\n        updateLegendTimeout = null;\n        \n        var pos = latestPosition;\n        \n        var axes = plot.getAxes();\n        if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||\n            pos.y < axes.yaxis.min || pos.y > axes.yaxis.max)\n            return;\n\n        var i, j, dataset = plot.getData();\n        for (i = 0; i < dataset.length; ++i) {\n            var series = dataset[i];\n\n            // find the nearest points, x-wise\n            for (j = 0; j < series.data.length; ++j)\n                if (series.data[j][0] > pos.x)\n                    break;\n            \n            // now interpolate\n            var y, p1 = series.data[j - 1], p2 = series.data[j];\n            if (p1 == null)\n                y = p2[1];\n            else if (p2 == null)\n                y = p1[1];\n            else\n                y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);\n\n            legends.eq(i).text(series.label.replace(/=.*/, \"= \" + y.toFixed(2)));\n        }\n    }\n    \n    $(\"#placeholder\").bind(\"plothover\",  function (event, pos, item) {\n        latestPosition = pos;\n        if (!updateLegendTimeout)\n            updateLegendTimeout = setTimeout(updateLegend, 50);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/turning-series.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Here is an example with real data: military budgets for\n        various countries in constant (2005) million US dollars (source: <a href=\"http://www.sipri.org/\">SIPRI</a>).</p>\n\n    <p>Since all data is available client-side, it's pretty easy to\n       make the plot interactive. Try turning countries on/off with the\n       checkboxes below.</p>\n\n    <p id=\"choices\">Show:</p>\n\n<script type=\"text/javascript\">\n$(function () {\n    var datasets = {\n        \"usa\": {\n            label: \"USA\",\n            data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]\n        },        \n        \"russia\": {\n            label: \"Russia\",\n            data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]\n        },\n        \"uk\": {\n            label: \"UK\",\n            data: [[1988, 62982], [1989, 62027], [1990, 60696], [1991, 62348], [1992, 58560], [1993, 56393], [1994, 54579], [1995, 50818], [1996, 50554], [1997, 48276], [1998, 47691], [1999, 47529], [2000, 47778], [2001, 48760], [2002, 50949], [2003, 57452], [2004, 60234], [2005, 60076], [2006, 59213]]\n        },\n        \"germany\": {\n            label: \"Germany\",\n            data: [[1988, 55627], [1989, 55475], [1990, 58464], [1991, 55134], [1992, 52436], [1993, 47139], [1994, 43962], [1995, 43238], [1996, 42395], [1997, 40854], [1998, 40993], [1999, 41822], [2000, 41147], [2001, 40474], [2002, 40604], [2003, 40044], [2004, 38816], [2005, 38060], [2006, 36984]]\n        },\n        \"denmark\": {\n            label: \"Denmark\",\n            data: [[1988, 3813], [1989, 3719], [1990, 3722], [1991, 3789], [1992, 3720], [1993, 3730], [1994, 3636], [1995, 3598], [1996, 3610], [1997, 3655], [1998, 3695], [1999, 3673], [2000, 3553], [2001, 3774], [2002, 3728], [2003, 3618], [2004, 3638], [2005, 3467], [2006, 3770]]\n        },\n        \"sweden\": {\n            label: \"Sweden\",\n            data: [[1988, 6402], [1989, 6474], [1990, 6605], [1991, 6209], [1992, 6035], [1993, 6020], [1994, 6000], [1995, 6018], [1996, 3958], [1997, 5780], [1998, 5954], [1999, 6178], [2000, 6411], [2001, 5993], [2002, 5833], [2003, 5791], [2004, 5450], [2005, 5521], [2006, 5271]]\n        },\n        \"norway\": {\n            label: \"Norway\",\n            data: [[1988, 4382], [1989, 4498], [1990, 4535], [1991, 4398], [1992, 4766], [1993, 4441], [1994, 4670], [1995, 4217], [1996, 4275], [1997, 4203], [1998, 4482], [1999, 4506], [2000, 4358], [2001, 4385], [2002, 5269], [2003, 5066], [2004, 5194], [2005, 4887], [2006, 4891]]\n        }\n    };\n\n    // hard-code color indices to prevent them from shifting as\n    // countries are turned on/off\n    var i = 0;\n    $.each(datasets, function(key, val) {\n        val.color = i;\n        ++i;\n    });\n    \n    // insert checkboxes \n    var choiceContainer = $(\"#choices\");\n    $.each(datasets, function(key, val) {\n        choiceContainer.append('<br/><input type=\"checkbox\" name=\"' + key +\n                               '\" checked=\"checked\" id=\"id' + key + '\">' +\n                               '<label for=\"id' + key + '\">'\n                                + val.label + '</label>');\n    });\n    choiceContainer.find(\"input\").click(plotAccordingToChoices);\n\n    \n    function plotAccordingToChoices() {\n        var data = [];\n\n        choiceContainer.find(\"input:checked\").each(function () {\n            var key = $(this).attr(\"name\");\n            if (key && datasets[key])\n                data.push(datasets[key]);\n        });\n\n        if (data.length > 0)\n            $.plot($(\"#placeholder\"), data, {\n                yaxis: { min: 0 },\n                xaxis: { tickDecimals: 0 }\n            });\n    }\n\n    plotAccordingToChoices();\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/visitors.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div id=\"placeholder\" style=\"width:600px;height:300px;\"></div>\n\n    <p>Visitors per day to the Flot homepage. Weekends are colored. Try zooming.\n      The plot below shows an overview.</p>\n\n    <div id=\"overview\" style=\"margin-left:50px;margin-top:20px;width:400px;height:50px\"></div>\n\n<script id=\"source\">\n$(function () {\n    var d = [[1196463600000, 0], [1196550000000, 0], [1196636400000, 0], [1196722800000, 77], [1196809200000, 3636], [1196895600000, 3575], [1196982000000, 2736], [1197068400000, 1086], [1197154800000, 676], [1197241200000, 1205], [1197327600000, 906], [1197414000000, 710], [1197500400000, 639], [1197586800000, 540], [1197673200000, 435], [1197759600000, 301], [1197846000000, 575], [1197932400000, 481], [1198018800000, 591], [1198105200000, 608], [1198191600000, 459], [1198278000000, 234], [1198364400000, 1352], [1198450800000, 686], [1198537200000, 279], [1198623600000, 449], [1198710000000, 468], [1198796400000, 392], [1198882800000, 282], [1198969200000, 208], [1199055600000, 229], [1199142000000, 177], [1199228400000, 374], [1199314800000, 436], [1199401200000, 404], [1199487600000, 253], [1199574000000, 218], [1199660400000, 476], [1199746800000, 462], [1199833200000, 448], [1199919600000, 442], [1200006000000, 403], [1200092400000, 204], [1200178800000, 194], [1200265200000, 327], [1200351600000, 374], [1200438000000, 507], [1200524400000, 546], [1200610800000, 482], [1200697200000, 283], [1200783600000, 221], [1200870000000, 483], [1200956400000, 523], [1201042800000, 528], [1201129200000, 483], [1201215600000, 452], [1201302000000, 270], [1201388400000, 222], [1201474800000, 439], [1201561200000, 559], [1201647600000, 521], [1201734000000, 477], [1201820400000, 442], [1201906800000, 252], [1201993200000, 236], [1202079600000, 525], [1202166000000, 477], [1202252400000, 386], [1202338800000, 409], [1202425200000, 408], [1202511600000, 237], [1202598000000, 193], [1202684400000, 357], [1202770800000, 414], [1202857200000, 393], [1202943600000, 353], [1203030000000, 364], [1203116400000, 215], [1203202800000, 214], [1203289200000, 356], [1203375600000, 399], [1203462000000, 334], [1203548400000, 348], [1203634800000, 243], [1203721200000, 126], [1203807600000, 157], [1203894000000, 288]];\n\n    // first correct the timestamps - they are recorded as the daily\n    // midnights in UTC+0100, but Flot always displays dates in UTC\n    // so we have to add one hour to hit the midnights in the plot\n    for (var i = 0; i < d.length; ++i)\n      d[i][0] += 60 * 60 * 1000;\n\n    // helper for returning the weekends in a period\n    function weekendAreas(axes) {\n        var markings = [];\n        var d = new Date(axes.xaxis.min);\n        // go to the first Saturday\n        d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))\n        d.setUTCSeconds(0);\n        d.setUTCMinutes(0);\n        d.setUTCHours(0);\n        var i = d.getTime();\n        do {\n            // when we don't set yaxis, the rectangle automatically\n            // extends to infinity upwards and downwards\n            markings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } });\n            i += 7 * 24 * 60 * 60 * 1000;\n        } while (i < axes.xaxis.max);\n\n        return markings;\n    }\n    \n    var options = {\n        xaxis: { mode: \"time\", tickLength: 5 },\n        selection: { mode: \"x\" },\n        grid: { markings: weekendAreas }\n    };\n    \n    var plot = $.plot($(\"#placeholder\"), [d], options);\n    \n    var overview = $.plot($(\"#overview\"), [d], {\n        series: {\n            lines: { show: true, lineWidth: 1 },\n            shadowSize: 0\n        },\n        xaxis: { ticks: [], mode: \"time\" },\n        yaxis: { ticks: [], min: 0, autoscaleMargin: 0.1 },\n        selection: { mode: \"x\" }\n    });\n\n    // now connect the two\n    \n    $(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n        // do the zooming\n        plot = $.plot($(\"#placeholder\"), [d],\n                      $.extend(true, {}, options, {\n                          xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }\n                      }));\n\n        // don't fire event on the overview to prevent eternal loop\n        overview.setSelection(ranges, true);\n    });\n    \n    $(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n        plot.setSelection(ranges);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/examples/zooming.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Flot Examples</title>\n    <link href=\"layout.css\" rel=\"stylesheet\" type=\"text/css\">\n    <!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../excanvas.min.js\"></script><![endif]-->\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n    <script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.selection.js\"></script>\n </head>\n    <body>\n    <h1>Flot Examples</h1>\n\n    <div style=\"float:left\">\n      <div id=\"placeholder\" style=\"width:500px;height:300px\"></div>\n    </div>\n    \n    <div id=\"miniature\" style=\"float:left;margin-left:20px\">\n      <div id=\"overview\" style=\"width:166px;height:100px\"></div>\n\n      <p id=\"overviewLegend\" style=\"margin-left:10px\"></p>\n    </div>\n\n    <p style=\"clear:left\">The selection support makes it easy to\n    construct flexible zooming schemes. With a few lines of code, the\n    small overview plot to the right has been connected to the large\n    plot. Try selecting a rectangle on either of them.</p>\n\n<script id=\"source\">\n$(function () {\n    // setup plot\n    function getData(x1, x2) {\n        var d = [];\n        for (var i = 0; i <= 100; ++i) {\n            var x = x1 + i * (x2 - x1) / 100;\n            d.push([x, Math.sin(x * Math.sin(x))]);\n        }\n\n        return [\n            { label: \"sin(x sin(x))\", data: d }\n        ];\n    }\n\n    var options = {\n        legend: { show: false },\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        yaxis: { ticks: 10 },\n        selection: { mode: \"xy\" }\n    };\n\n    var startData = getData(0, 3 * Math.PI);\n    \n    var plot = $.plot($(\"#placeholder\"), startData, options);\n\n    // setup overview\n    var overview = $.plot($(\"#overview\"), startData, {\n        legend: { show: true, container: $(\"#overviewLegend\") },\n        series: {\n            lines: { show: true, lineWidth: 1 },\n            shadowSize: 0\n        },\n        xaxis: { ticks: 4 },\n        yaxis: { ticks: 3, min: -2, max: 2 },\n        grid: { color: \"#999\" },\n        selection: { mode: \"xy\" }\n    });\n\n    // now connect the two\n    \n    $(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n        // clamp the zooming to prevent eternal zoom\n        if (ranges.xaxis.to - ranges.xaxis.from < 0.00001)\n            ranges.xaxis.to = ranges.xaxis.from + 0.00001;\n        if (ranges.yaxis.to - ranges.yaxis.from < 0.00001)\n            ranges.yaxis.to = ranges.yaxis.from + 0.00001;\n        \n        // do the zooming\n        plot = $.plot($(\"#placeholder\"), getData(ranges.xaxis.from, ranges.xaxis.to),\n                      $.extend(true, {}, options, {\n                          xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },\n                          yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }\n                      }));\n        \n        // don't fire event on the overview to prevent eternal loop\n        overview.setSelection(ranges, true);\n    });\n    $(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n        plot.setSelection(ranges);\n    });\n});\n</script>\n\n </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns only support repeat.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Filling very large shapes (above 5000 points) is buggy.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  function encodeHtmlAttribute(s) {\n    return String(s).replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n  }\n\n  function addNamespacesAndStylesheet(doc) {\n    // create xmlns\n    if (!doc.namespaces['g_vml_']) {\n      doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                         '#default#VML');\n\n    }\n    if (!doc.namespaces['g_o_']) {\n      doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                         '#default#VML');\n    }\n\n    // Setup default CSS.  Only add one style sheet per document\n    if (!doc.styleSheets['ex_canvas_']) {\n      var ss = doc.createStyleSheet();\n      ss.owningElement.id = 'ex_canvas_';\n      ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n          // default size is 300x150 in Gecko and Opera\n          'text-align:left;width:300px;height:150px}';\n    }\n  }\n\n  // Add namespaces and stylesheet at startup.\n  addNamespacesAndStylesheet(document);\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n        el.getContext = getContext;\n\n        // Add namespaces and stylesheet to document of the element.\n        addNamespacesAndStylesheet(el.ownerDocument);\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.getContext().clearRect();\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        // In IE8 this does not trigger onresize.\n        el.firstChild.style.width =  el.clientWidth + 'px';\n        break;\n      case 'height':\n        el.getContext().clearRect();\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.firstChild.style.height = el.clientHeight + 'px';\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var decToHex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      decToHex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.font          = o1.font;\n    o2.textAlign     = o1.textAlign;\n    o2.textBaseline  = o1.textBaseline;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  var colorData = {\n    aliceblue: '#F0F8FF',\n    antiquewhite: '#FAEBD7',\n    aquamarine: '#7FFFD4',\n    azure: '#F0FFFF',\n    beige: '#F5F5DC',\n    bisque: '#FFE4C4',\n    black: '#000000',\n    blanchedalmond: '#FFEBCD',\n    blueviolet: '#8A2BE2',\n    brown: '#A52A2A',\n    burlywood: '#DEB887',\n    cadetblue: '#5F9EA0',\n    chartreuse: '#7FFF00',\n    chocolate: '#D2691E',\n    coral: '#FF7F50',\n    cornflowerblue: '#6495ED',\n    cornsilk: '#FFF8DC',\n    crimson: '#DC143C',\n    cyan: '#00FFFF',\n    darkblue: '#00008B',\n    darkcyan: '#008B8B',\n    darkgoldenrod: '#B8860B',\n    darkgray: '#A9A9A9',\n    darkgreen: '#006400',\n    darkgrey: '#A9A9A9',\n    darkkhaki: '#BDB76B',\n    darkmagenta: '#8B008B',\n    darkolivegreen: '#556B2F',\n    darkorange: '#FF8C00',\n    darkorchid: '#9932CC',\n    darkred: '#8B0000',\n    darksalmon: '#E9967A',\n    darkseagreen: '#8FBC8F',\n    darkslateblue: '#483D8B',\n    darkslategray: '#2F4F4F',\n    darkslategrey: '#2F4F4F',\n    darkturquoise: '#00CED1',\n    darkviolet: '#9400D3',\n    deeppink: '#FF1493',\n    deepskyblue: '#00BFFF',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1E90FF',\n    firebrick: '#B22222',\n    floralwhite: '#FFFAF0',\n    forestgreen: '#228B22',\n    gainsboro: '#DCDCDC',\n    ghostwhite: '#F8F8FF',\n    gold: '#FFD700',\n    goldenrod: '#DAA520',\n    grey: '#808080',\n    greenyellow: '#ADFF2F',\n    honeydew: '#F0FFF0',\n    hotpink: '#FF69B4',\n    indianred: '#CD5C5C',\n    indigo: '#4B0082',\n    ivory: '#FFFFF0',\n    khaki: '#F0E68C',\n    lavender: '#E6E6FA',\n    lavenderblush: '#FFF0F5',\n    lawngreen: '#7CFC00',\n    lemonchiffon: '#FFFACD',\n    lightblue: '#ADD8E6',\n    lightcoral: '#F08080',\n    lightcyan: '#E0FFFF',\n    lightgoldenrodyellow: '#FAFAD2',\n    lightgreen: '#90EE90',\n    lightgrey: '#D3D3D3',\n    lightpink: '#FFB6C1',\n    lightsalmon: '#FFA07A',\n    lightseagreen: '#20B2AA',\n    lightskyblue: '#87CEFA',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#B0C4DE',\n    lightyellow: '#FFFFE0',\n    limegreen: '#32CD32',\n    linen: '#FAF0E6',\n    magenta: '#FF00FF',\n    mediumaquamarine: '#66CDAA',\n    mediumblue: '#0000CD',\n    mediumorchid: '#BA55D3',\n    mediumpurple: '#9370DB',\n    mediumseagreen: '#3CB371',\n    mediumslateblue: '#7B68EE',\n    mediumspringgreen: '#00FA9A',\n    mediumturquoise: '#48D1CC',\n    mediumvioletred: '#C71585',\n    midnightblue: '#191970',\n    mintcream: '#F5FFFA',\n    mistyrose: '#FFE4E1',\n    moccasin: '#FFE4B5',\n    navajowhite: '#FFDEAD',\n    oldlace: '#FDF5E6',\n    olivedrab: '#6B8E23',\n    orange: '#FFA500',\n    orangered: '#FF4500',\n    orchid: '#DA70D6',\n    palegoldenrod: '#EEE8AA',\n    palegreen: '#98FB98',\n    paleturquoise: '#AFEEEE',\n    palevioletred: '#DB7093',\n    papayawhip: '#FFEFD5',\n    peachpuff: '#FFDAB9',\n    peru: '#CD853F',\n    pink: '#FFC0CB',\n    plum: '#DDA0DD',\n    powderblue: '#B0E0E6',\n    rosybrown: '#BC8F8F',\n    royalblue: '#4169E1',\n    saddlebrown: '#8B4513',\n    salmon: '#FA8072',\n    sandybrown: '#F4A460',\n    seagreen: '#2E8B57',\n    seashell: '#FFF5EE',\n    sienna: '#A0522D',\n    skyblue: '#87CEEB',\n    slateblue: '#6A5ACD',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#FFFAFA',\n    springgreen: '#00FF7F',\n    steelblue: '#4682B4',\n    tan: '#D2B48C',\n    thistle: '#D8BFD8',\n    tomato: '#FF6347',\n    turquoise: '#40E0D0',\n    violet: '#EE82EE',\n    wheat: '#F5DEB3',\n    whitesmoke: '#F5F5F5',\n    yellowgreen: '#9ACD32'\n  };\n\n\n  function getRgbHslContent(styleString) {\n    var start = styleString.indexOf('(', 3);\n    var end = styleString.indexOf(')', start + 1);\n    var parts = styleString.substring(start + 1, end).split(',');\n    // add alpha if needed\n    if (parts.length == 4 && styleString.substr(3, 1) == 'a') {\n      alpha = Number(parts[3]);\n    } else {\n      parts[3] = 1;\n    }\n    return parts;\n  }\n\n  function percent(s) {\n    return parseFloat(s) / 100;\n  }\n\n  function clamp(v, min, max) {\n    return Math.min(max, Math.max(min, v));\n  }\n\n  function hslToRgb(parts){\n    var r, g, b;\n    h = parseFloat(parts[0]) / 360 % 360;\n    if (h < 0)\n      h++;\n    s = clamp(percent(parts[1]), 0, 1);\n    l = clamp(percent(parts[2]), 0, 1);\n    if (s == 0) {\n      r = g = b = l; // achromatic\n    } else {\n      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      var p = 2 * l - q;\n      r = hueToRgb(p, q, h + 1 / 3);\n      g = hueToRgb(p, q, h);\n      b = hueToRgb(p, q, h - 1 / 3);\n    }\n\n    return '#' + decToHex[Math.floor(r * 255)] +\n        decToHex[Math.floor(g * 255)] +\n        decToHex[Math.floor(b * 255)];\n  }\n\n  function hueToRgb(m1, m2, h) {\n    if (h < 0)\n      h++;\n    if (h > 1)\n      h--;\n\n    if (6 * h < 1)\n      return m1 + (m2 - m1) * 6 * h;\n    else if (2 * h < 1)\n      return m2;\n    else if (3 * h < 2)\n      return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    else\n      return m1;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.charAt(0) == '#') {\n      str = styleString;\n    } else if (/^rgb/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      var str = '#', n;\n      for (var i = 0; i < 3; i++) {\n        if (parts[i].indexOf('%') != -1) {\n          n = Math.floor(percent(parts[i]) * 255);\n        } else {\n          n = Number(parts[i]);\n        }\n        str += decToHex[clamp(n, 0, 255)];\n      }\n      alpha = parts[3];\n    } else if (/^hsl/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      str = hslToRgb(parts);\n      alpha = parts[3];\n    } else {\n      str = colorData[styleString] || styleString;\n    }\n    return {color: str, alpha: alpha};\n  }\n\n  var DEFAULT_STYLE = {\n    style: 'normal',\n    variant: 'normal',\n    weight: 'normal',\n    size: 10,\n    family: 'sans-serif'\n  };\n\n  // Internal text style cache\n  var fontStyleCache = {};\n\n  function processFontStyle(styleString) {\n    if (fontStyleCache[styleString]) {\n      return fontStyleCache[styleString];\n    }\n\n    var el = document.createElement('div');\n    var style = el.style;\n    try {\n      style.font = styleString;\n    } catch (ex) {\n      // Ignore failures to set to invalid font.\n    }\n\n    return fontStyleCache[styleString] = {\n      style: style.fontStyle || DEFAULT_STYLE.style,\n      variant: style.fontVariant || DEFAULT_STYLE.variant,\n      weight: style.fontWeight || DEFAULT_STYLE.weight,\n      size: style.fontSize || DEFAULT_STYLE.size,\n      family: style.fontFamily || DEFAULT_STYLE.family\n    };\n  }\n\n  function getComputedStyle(style, element) {\n    var computedStyle = {};\n\n    for (var p in style) {\n      computedStyle[p] = style[p];\n    }\n\n    // Compute the size\n    var canvasFontSize = parseFloat(element.currentStyle.fontSize),\n        fontSize = parseFloat(style.size);\n\n    if (typeof style.size == 'number') {\n      computedStyle.size = style.size;\n    } else if (style.size.indexOf('px') != -1) {\n      computedStyle.size = fontSize;\n    } else if (style.size.indexOf('em') != -1) {\n      computedStyle.size = canvasFontSize * fontSize;\n    } else if(style.size.indexOf('%') != -1) {\n      computedStyle.size = (canvasFontSize / 100) * fontSize;\n    } else if (style.size.indexOf('pt') != -1) {\n      computedStyle.size = fontSize / .75;\n    } else {\n      computedStyle.size = canvasFontSize;\n    }\n\n    // Different scaling between normal text and VML text. This was found using\n    // trial and error to get the same size as non VML text.\n    computedStyle.size *= 0.981;\n\n    return computedStyle;\n  }\n\n  function buildStyle(style) {\n    return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +\n        style.size + 'px ' + style.family;\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.font = '10px sans-serif';\n    this.textAlign = 'left';\n    this.textBaseline = 'alphabetic';\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    if (this.textMeasureEl_) {\n      this.textMeasureEl_.removeNode(true);\n      this.textMeasureEl_ = null;\n    }\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1] ||\n        this.m_[1][1] != 1 || this.m_[1][0]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\");\n\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var W = 10;\n    var H = 10;\n    // Divide the shape into chunks if it's too long because IE has a limit\n    // somewhere for how long a VML shape can be. This simple division does\n    // not work with fills, only strokes, unfortunately.\n    var chunkSize = 5000;\n\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var j = 0; j < this.currentPath_.length; j += chunkSize) {\n      var lineStr = [];\n      var lineOpen = false;\n\n      lineStr.push('<g_vml_:shape',\n                   ' filled=\"', !!aFill, '\"',\n                   ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                   ' coordorigin=\"0,0\"',\n                   ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                   ' stroked=\"', !aFill, '\"',\n                   ' path=\"');\n\n      var newSeq = false;\n\n      for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) {\n        if (i % chunkSize == 0 && i > 0) { // move into position for next chunk\n          lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y));\n        }\n\n        var p = this.currentPath_[i];\n        var c;\n\n        switch (p.type) {\n          case 'moveTo':\n            c = p;\n            lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'lineTo':\n            lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'close':\n            lineStr.push(' x ');\n            p = null;\n            break;\n          case 'bezierCurveTo':\n            lineStr.push(' c ',\n                         mr(p.cp1x), ',', mr(p.cp1y), ',',\n                         mr(p.cp2x), ',', mr(p.cp2y), ',',\n                         mr(p.x), ',', mr(p.y));\n            break;\n          case 'at':\n          case 'wa':\n            lineStr.push(' ', p.type, ' ',\n                         mr(p.x - this.arcScaleX_ * p.radius), ',',\n                         mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                         mr(p.x + this.arcScaleX_ * p.radius), ',',\n                         mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                         mr(p.xStart), ',', mr(p.yStart), ' ',\n                         mr(p.xEnd), ',', mr(p.yEnd));\n            break;\n        }\n  \n  \n        // TODO: Following is broken for curves due to\n        //       move to proper paths.\n  \n        // Figure out dimensions so we can do gradient fills\n        // properly\n        if (p) {\n          if (min.x == null || p.x < min.x) {\n            min.x = p.x;\n          }\n          if (max.x == null || p.x > max.x) {\n            max.x = p.x;\n          }\n          if (min.y == null || p.y < min.y) {\n            min.y = p.y;\n          }\n          if (max.y == null || p.y > max.y) {\n            max.y = p.y;\n          }\n        }\n      }\n      lineStr.push(' \">');\n  \n      if (!aFill) {\n        appendStroke(this, lineStr);\n      } else {\n        appendFill(this, lineStr, min, max);\n      }\n  \n      lineStr.push('</g_vml_:shape>');\n  \n      this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n    }\n  };\n\n  function appendStroke(ctx, lineStr) {\n    var a = processStyle(ctx.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * ctx.globalAlpha;\n    var lineWidth = ctx.lineScale_ * ctx.lineWidth;\n\n    // VML cannot correctly render a line if the width is less than 1px.\n    // In that case, we dilute the color to make the line look thinner.\n    if (lineWidth < 1) {\n      opacity *= lineWidth;\n    }\n\n    lineStr.push(\n      '<g_vml_:stroke',\n      ' opacity=\"', opacity, '\"',\n      ' joinstyle=\"', ctx.lineJoin, '\"',\n      ' miterlimit=\"', ctx.miterLimit, '\"',\n      ' endcap=\"', processLineCap(ctx.lineCap), '\"',\n      ' weight=\"', lineWidth, 'px\"',\n      ' color=\"', color, '\" />'\n    );\n  }\n\n  function appendFill(ctx, lineStr, min, max) {\n    var fillStyle = ctx.fillStyle;\n    var arcScaleX = ctx.arcScaleX_;\n    var arcScaleY = ctx.arcScaleY_;\n    var width = max.x - min.x;\n    var height = max.y - min.y;\n    if (fillStyle instanceof CanvasGradient_) {\n      // TODO: Gradients transformed with the transformation matrix.\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / arcScaleX;\n        var y0 = fillStyle.y0_ / arcScaleY;\n        var x1 = fillStyle.x1_ / arcScaleX;\n        var y1 = fillStyle.y1_ / arcScaleY;\n        var p0 = ctx.getCoords_(x0, y0);\n        var p1 = ctx.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = ctx.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= arcScaleX * Z;\n        height /= arcScaleY * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * ctx.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else if (fillStyle instanceof CanvasPattern_) {\n      if (width && height) {\n        var deltaLeft = -min.x;\n        var deltaTop = -min.y;\n        lineStr.push('<g_vml_:fill',\n                     ' position=\"',\n                     deltaLeft / width * arcScaleX * arcScaleX, ',',\n                     deltaTop / height * arcScaleY * arcScaleY, '\"',\n                     ' type=\"tile\"',\n                     // TODO: Figure out the correct size to fit the scale.\n                     //' size=\"', w, 'px ', h, 'px\"',\n                     ' src=\"', fillStyle.src_, '\" />');\n       }\n    } else {\n      var a = processStyle(ctx.fillStyle);\n      var color = a.color;\n      var opacity = a.alpha * ctx.globalAlpha;\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n  }\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  };\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    };\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    if (this.aStack_.length) {\n      copyState(this.aStack_.pop(), this);\n      this.m_ = this.mStack_.pop();\n    }\n  };\n\n  function matrixIsFinite(m) {\n    return isFinite(m[0][0]) && isFinite(m[0][1]) &&\n        isFinite(m[1][0]) && isFinite(m[1][1]) &&\n        isFinite(m[2][0]) && isFinite(m[2][1]);\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /**\n   * The text drawing function.\n   * The maxWidth argument isn't taken in account, since no browser supports\n   * it yet.\n   */\n  contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {\n    var m = this.m_,\n        delta = 1000,\n        left = 0,\n        right = delta,\n        offset = {x: 0, y: 0},\n        lineStr = [];\n\n    var fontStyle = getComputedStyle(processFontStyle(this.font),\n                                     this.element_);\n\n    var fontStyleString = buildStyle(fontStyle);\n\n    var elementStyle = this.element_.currentStyle;\n    var textAlign = this.textAlign.toLowerCase();\n    switch (textAlign) {\n      case 'left':\n      case 'center':\n      case 'right':\n        break;\n      case 'end':\n        textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';\n        break;\n      case 'start':\n        textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';\n        break;\n      default:\n        textAlign = 'left';\n    }\n\n    // 1.75 is an arbitrary number, as there is no info about the text baseline\n    switch (this.textBaseline) {\n      case 'hanging':\n      case 'top':\n        offset.y = fontStyle.size / 1.75;\n        break;\n      case 'middle':\n        break;\n      default:\n      case null:\n      case 'alphabetic':\n      case 'ideographic':\n      case 'bottom':\n        offset.y = -fontStyle.size / 2.25;\n        break;\n    }\n\n    switch(textAlign) {\n      case 'right':\n        left = delta;\n        right = 0.05;\n        break;\n      case 'center':\n        left = right = delta / 2;\n        break;\n    }\n\n    var d = this.getCoords_(x + offset.x, y + offset.y);\n\n    lineStr.push('<g_vml_:line from=\"', -left ,' 0\" to=\"', right ,' 0.05\" ',\n                 ' coordsize=\"100 100\" coordorigin=\"0 0\"',\n                 ' filled=\"', !stroke, '\" stroked=\"', !!stroke,\n                 '\" style=\"position:absolute;width:1px;height:1px;\">');\n\n    if (stroke) {\n      appendStroke(this, lineStr);\n    } else {\n      // TODO: Fix the min and max params.\n      appendFill(this, lineStr, {x: -left, y: 0},\n                 {x: right, y: fontStyle.size});\n    }\n\n    var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +\n                m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';\n\n    var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);\n\n    lineStr.push('<g_vml_:skew on=\"t\" matrix=\"', skewM ,'\" ',\n                 ' offset=\"', skewOffset, '\" origin=\"', left ,' 0\" />',\n                 '<g_vml_:path textpathok=\"true\" />',\n                 '<g_vml_:textpath on=\"true\" string=\"',\n                 encodeHtmlAttribute(text),\n                 '\" style=\"v-text-align:', textAlign,\n                 ';font:', encodeHtmlAttribute(fontStyleString),\n                 '\" /></g_vml_:line>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fillText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, false);\n  };\n\n  contextPrototype.strokeText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, true);\n  };\n\n  contextPrototype.measureText = function(text) {\n    if (!this.textMeasureEl_) {\n      var s = '<span style=\"position:absolute;' +\n          'top:-20000px;left:0;padding:0;margin:0;border:none;' +\n          'white-space:pre;\"></span>';\n      this.element_.insertAdjacentHTML('beforeEnd', s);\n      this.textMeasureEl_ = this.element_.lastChild;\n    }\n    var doc = this.element_.ownerDocument;\n    this.textMeasureEl_.innerHTML = '';\n    this.textMeasureEl_.style.font = this.font;\n    // Don't use innerHTML or innerText because they allow markup/whitespace.\n    this.textMeasureEl_.appendChild(doc.createTextNode(text));\n    return {width: this.textMeasureEl_.offsetWidth};\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function(image, repetition) {\n    return new CanvasPattern_(image, repetition);\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_(image, repetition) {\n    assertImageIsValid(image);\n    switch (repetition) {\n      case 'repeat':\n      case null:\n      case '':\n        this.repetition_ = 'repeat';\n        break\n      case 'repeat-x':\n      case 'repeat-y':\n      case 'no-repeat':\n        this.repetition_ = repetition;\n        break;\n      default:\n        throwException('SYNTAX_ERR');\n    }\n\n    this.src_ = image.src;\n    this.width_ = image.width;\n    this.height_ = image.height;\n  }\n\n  function throwException(s) {\n    throw new DOMException_(s);\n  }\n\n  function assertImageIsValid(img) {\n    if (!img || img.nodeType != 1 || img.tagName != 'IMG') {\n      throwException('TYPE_MISMATCH_ERR');\n    }\n    if (img.readyState != 'complete') {\n      throwException('INVALID_STATE_ERR');\n    }\n  }\n\n  function DOMException_(s) {\n    this.code = this[s];\n    this.message = s +': DOM Exception ' + this.code;\n  }\n  var p = DOMException_.prototype = new Error;\n  p.INDEX_SIZE_ERR = 1;\n  p.DOMSTRING_SIZE_ERR = 2;\n  p.HIERARCHY_REQUEST_ERR = 3;\n  p.WRONG_DOCUMENT_ERR = 4;\n  p.INVALID_CHARACTER_ERR = 5;\n  p.NO_DATA_ALLOWED_ERR = 6;\n  p.NO_MODIFICATION_ALLOWED_ERR = 7;\n  p.NOT_FOUND_ERR = 8;\n  p.NOT_SUPPORTED_ERR = 9;\n  p.INUSE_ATTRIBUTE_ERR = 10;\n  p.INVALID_STATE_ERR = 11;\n  p.SYNTAX_ERR = 12;\n  p.INVALID_MODIFICATION_ERR = 13;\n  p.NAMESPACE_ERR = 14;\n  p.INVALID_ACCESS_ERR = 15;\n  p.VALIDATION_ERR = 16;\n  p.TYPE_MISMATCH_ERR = 17;\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n  DOMException = DOMException_;\n})();\n\n} // if\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.colorhelpers.js",
    "content": "/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n\n(function($) {\n    $.color = {};\n\n    // construct color object with some convenient chainable helpers\n    $.color.make = function (r, g, b, a) {\n        var o = {};\n        o.r = r || 0;\n        o.g = g || 0;\n        o.b = b || 0;\n        o.a = a != null ? a : 1;\n\n        o.add = function (c, d) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] += d;\n            return o.normalize();\n        };\n        \n        o.scale = function (c, f) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] *= f;\n            return o.normalize();\n        };\n        \n        o.toString = function () {\n            if (o.a >= 1.0) {\n                return \"rgb(\"+[o.r, o.g, o.b].join(\",\")+\")\";\n            } else {\n                return \"rgba(\"+[o.r, o.g, o.b, o.a].join(\",\")+\")\";\n            }\n        };\n\n        o.normalize = function () {\n            function clamp(min, value, max) {\n                return value < min ? min: (value > max ? max: value);\n            }\n            \n            o.r = clamp(0, parseInt(o.r), 255);\n            o.g = clamp(0, parseInt(o.g), 255);\n            o.b = clamp(0, parseInt(o.b), 255);\n            o.a = clamp(0, o.a, 1);\n            return o;\n        };\n\n        o.clone = function () {\n            return $.color.make(o.r, o.b, o.g, o.a);\n        };\n\n        return o.normalize();\n    }\n\n    // extract CSS color property from element, going up in the DOM\n    // if it's \"transparent\"\n    $.color.extract = function (elem, css) {\n        var c;\n        do {\n            c = elem.css(css).toLowerCase();\n            // keep going until we find an element that has color, or\n            // we hit the body\n            if (c != '' && c != 'transparent')\n                break;\n            elem = elem.parent();\n        } while (!$.nodeName(elem.get(0), \"body\"));\n\n        // catch Safari's way of signalling transparent\n        if (c == \"rgba(0, 0, 0, 0)\")\n            c = \"transparent\";\n        \n        return $.color.parse(c);\n    }\n    \n    // parse CSS color string (like \"rgb(10, 32, 43)\" or \"#fff\"),\n    // returns color object, if parsing failed, you get black (0, 0,\n    // 0) out\n    $.color.parse = function (str) {\n        var res, m = $.color.make;\n\n        // Look for rgb(num,num,num)\n        if (res = /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10));\n        \n        // Look for rgba(num,num,num,num)\n        if (res = /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4]));\n            \n        // Look for rgb(num%,num%,num%)\n        if (res = /rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55);\n\n        // Look for rgba(num%,num%,num%,num)\n        if (res = /rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4]));\n        \n        // Look for #a0b1c2\n        if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))\n            return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16));\n\n        // Look for #fff\n        if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))\n            return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16));\n\n        // Otherwise, we're most likely dealing with a named color\n        var name = $.trim(str).toLowerCase();\n        if (name == \"transparent\")\n            return m(255, 255, 255, 0);\n        else {\n            // default to black\n            res = lookupColors[name] || [0, 0, 0];\n            return m(res[0], res[1], res[2]);\n        }\n    }\n    \n    var lookupColors = {\n        aqua:[0,255,255],\n        azure:[240,255,255],\n        beige:[245,245,220],\n        black:[0,0,0],\n        blue:[0,0,255],\n        brown:[165,42,42],\n        cyan:[0,255,255],\n        darkblue:[0,0,139],\n        darkcyan:[0,139,139],\n        darkgrey:[169,169,169],\n        darkgreen:[0,100,0],\n        darkkhaki:[189,183,107],\n        darkmagenta:[139,0,139],\n        darkolivegreen:[85,107,47],\n        darkorange:[255,140,0],\n        darkorchid:[153,50,204],\n        darkred:[139,0,0],\n        darksalmon:[233,150,122],\n        darkviolet:[148,0,211],\n        fuchsia:[255,0,255],\n        gold:[255,215,0],\n        green:[0,128,0],\n        indigo:[75,0,130],\n        khaki:[240,230,140],\n        lightblue:[173,216,230],\n        lightcyan:[224,255,255],\n        lightgreen:[144,238,144],\n        lightgrey:[211,211,211],\n        lightpink:[255,182,193],\n        lightyellow:[255,255,224],\n        lime:[0,255,0],\n        magenta:[255,0,255],\n        maroon:[128,0,0],\n        navy:[0,0,128],\n        olive:[128,128,0],\n        orange:[255,165,0],\n        pink:[255,192,203],\n        purple:[128,0,128],\n        violet:[128,0,128],\n        red:[255,0,0],\n        silver:[192,192,192],\n        white:[255,255,255],\n        yellow:[255,255,0]\n    };\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.crosshair.js",
    "content": "/*\nFlot plugin for showing crosshairs, thin lines, when the mouse hovers\nover the plot.\n\n  crosshair: {\n    mode: null or \"x\" or \"y\" or \"xy\"\n    color: color\n    lineWidth: number\n  }\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a\nvertical crosshair that lets you trace the values on the x axis, \"y\"\nenables a horizontal crosshair and \"xy\" enables them both. \"color\" is\nthe color of the crosshair (default is \"rgba(170, 0, 0, 0.80)\"),\n\"lineWidth\" is the width of the drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n  - setCrosshair(pos)\n\n    Set the position of the crosshair. Note that this is cleared if\n    the user moves the mouse. \"pos\" is in coordinates of the plot and\n    should be on the form { x: xpos, y: ypos } (you can use x2/x3/...\n    if you're using multiple axes), which is coincidentally the same\n    format as what you get from a \"plothover\" event. If \"pos\" is null,\n    the crosshair is cleared.\n\n  - clearCrosshair()\n\n    Clear the crosshair.\n\n  - lockCrosshair(pos)\n\n    Cause the crosshair to lock to the current location, no longer\n    updating if the user moves the mouse. Optionally supply a position\n    (passed on to setCrosshair()) to move it to.\n\n    Example usage:\n      var myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n      $(\"#graph\").bind(\"plothover\", function (evt, position, item) {\n        if (item) {\n          // Lock the crosshair to the data point being hovered\n          myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] });\n        }\n        else {\n          // Return normal crosshair operation\n          myFlot.unlockCrosshair();\n        }\n      });\n\n  - unlockCrosshair()\n\n    Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n    var options = {\n        crosshair: {\n            mode: null, // one of null, \"x\", \"y\" or \"xy\",\n            color: \"rgba(170, 0, 0, 0.80)\",\n            lineWidth: 1\n        }\n    };\n    \n    function init(plot) {\n        // position of crosshair in pixels\n        var crosshair = { x: -1, y: -1, locked: false };\n\n        plot.setCrosshair = function setCrosshair(pos) {\n            if (!pos)\n                crosshair.x = -1;\n            else {\n                var o = plot.p2c(pos);\n                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n            }\n            \n            plot.triggerRedrawOverlay();\n        };\n        \n        plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n        \n        plot.lockCrosshair = function lockCrosshair(pos) {\n            if (pos)\n                plot.setCrosshair(pos);\n            crosshair.locked = true;\n        }\n\n        plot.unlockCrosshair = function unlockCrosshair() {\n            crosshair.locked = false;\n        }\n\n        function onMouseOut(e) {\n            if (crosshair.locked)\n                return;\n\n            if (crosshair.x != -1) {\n                crosshair.x = -1;\n                plot.triggerRedrawOverlay();\n            }\n        }\n\n        function onMouseMove(e) {\n            if (crosshair.locked)\n                return;\n                \n            if (plot.getSelection && plot.getSelection()) {\n                crosshair.x = -1; // hide the crosshair while selecting\n                return;\n            }\n                \n            var offset = plot.offset();\n            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n            plot.triggerRedrawOverlay();\n        }\n        \n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n            if (!plot.getOptions().crosshair.mode)\n                return;\n\n            eventHolder.mouseout(onMouseOut);\n            eventHolder.mousemove(onMouseMove);\n        });\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            var c = plot.getOptions().crosshair;\n            if (!c.mode)\n                return;\n\n            var plotOffset = plot.getPlotOffset();\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            if (crosshair.x != -1) {\n                ctx.strokeStyle = c.color;\n                ctx.lineWidth = c.lineWidth;\n                ctx.lineJoin = \"round\";\n\n                ctx.beginPath();\n                if (c.mode.indexOf(\"x\") != -1) {\n                    ctx.moveTo(crosshair.x, 0);\n                    ctx.lineTo(crosshair.x, plot.height());\n                }\n                if (c.mode.indexOf(\"y\") != -1) {\n                    ctx.moveTo(0, crosshair.y);\n                    ctx.lineTo(plot.width(), crosshair.y);\n                }\n                ctx.stroke();\n            }\n            ctx.restore();\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mouseout\", onMouseOut);\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n        });\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'crosshair',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.fillbetween.js",
    "content": "/*\nFlot plugin for computing bottoms for filled line and bar charts.\n\nThe case: you've got two series that you want to fill the area\nbetween. In Flot terms, you need to use one as the fill bottom of the\nother. You can specify the bottom of each data point as the third\ncoordinate manually, or you can use this plugin to compute it for you.\n\nIn order to name the other series, you need to give it an id, like this\n\n  var dataset = [\n       { data: [ ... ], id: \"foo\" } ,         // use default bottom\n       { data: [ ... ], fillBetween: \"foo\" }, // use first dataset as bottom\n       ];\n\n  $.plot($(\"#placeholder\"), dataset, { line: { show: true, fill: true }});\n\nAs a convenience, if the id given is a number that doesn't appear as\nan id in the series, it is interpreted as the index in the array\ninstead (so fillBetween: 0 can also mean the first series).\n  \nInternally, the plugin modifies the datapoints in each series. For\nline series, extra data points might be inserted through\ninterpolation. Note that at points where the bottom line is not\ndefined (due to a null point or start/end of line), the current line\nwill show a gap too. The algorithm comes from the jquery.flot.stack.js\nplugin, possibly some code could be shared.\n*/\n\n(function ($) {\n    var options = {\n        series: { fillBetween: null } // or number\n    };\n    \n    function init(plot) {\n        function findBottomSeries(s, allseries) {\n            var i;\n            for (i = 0; i < allseries.length; ++i) {\n                if (allseries[i].id == s.fillBetween)\n                    return allseries[i];\n            }\n\n            if (typeof s.fillBetween == \"number\") {\n                i = s.fillBetween;\n            \n                if (i < 0 || i >= allseries.length)\n                    return null;\n\n                return allseries[i];\n            }\n            \n            return null;\n        }\n        \n        function computeFillBottoms(plot, s, datapoints) {\n            if (s.fillBetween == null)\n                return;\n\n            var other = findBottomSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                withbottom = ps > 2 && datapoints.format[2].y,\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i];\n                    py = points[i + 1];\n                    qx = otherpoints[j];\n                    qy = otherpoints[j + 1];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        //newpoints[l + 1] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + 1] - py) * (qx - px) / (points[i - ps] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery)\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + 1] - qy) * (px - qx) / (otherpoints[j - otherps] - qx);\n\n                        //newpoints[l + 1] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] = bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(computeFillBottoms);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'fillbetween',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.image.js",
    "content": "/*\nFlot plugin for plotting images, e.g. useful for putting ticks on a\nprerendered complex visualization.\n\nThe data syntax is [[image, x1, y1, x2, y2], ...] where (x1, y1) and\n(x2, y2) are where you intend the two opposite corners of the image to\nend up in the plot. Image must be a fully loaded Javascript image (you\ncan make one with new Image()). If the image is not complete, it's\nskipped when plotting.\n\nThere are two helpers included for retrieving images. The easiest work\nthe way that you put in URLs instead of images in the data (like\n[\"myimage.png\", 0, 0, 10, 10]), then call $.plot.image.loadData(data,\noptions, callback) where data and options are the same as you pass in\nto $.plot. This loads the images, replaces the URLs in the data with\nthe corresponding images and calls \"callback\" when all images are\nloaded (or failed loading). In the callback, you can then call $.plot\nwith the data set. See the included example.\n\nA more low-level helper, $.plot.image.load(urls, callback) is also\nincluded. Given a list of URLs, it calls callback with an object\nmapping from URL to Image object when all images are loaded or have\nfailed loading.\n\nOptions for the plugin are\n\n  series: {\n      images: {\n          show: boolean\n          anchor: \"corner\" or \"center\"\n          alpha: [0,1]\n      }\n  }\n\nwhich can be specified for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], images: { ... } ])\n\nNote that because the data format is different from usual data points,\nyou can't use images with anything else in a specific data series.\n\nSetting \"anchor\" to \"center\" causes the pixels in the image to be\nanchored at the corner pixel centers inside of at the pixel corners,\neffectively letting half a pixel stick out to each side in the plot.\n\n\nA possible future direction could be support for tiling for large\nimages (like Google Maps).\n\n*/\n\n(function ($) {\n    var options = {\n        series: {\n            images: {\n                show: false,\n                alpha: 1,\n                anchor: \"corner\" // or \"center\"\n            }\n        }\n    };\n\n    $.plot.image = {};\n\n    $.plot.image.loadDataImages = function (series, options, callback) {\n        var urls = [], points = [];\n\n        var defaultShow = options.series.images.show;\n        \n        $.each(series, function (i, s) {\n            if (!(defaultShow || s.images.show))\n                return;\n            \n            if (s.data)\n                s = s.data;\n\n            $.each(s, function (i, p) {\n                if (typeof p[0] == \"string\") {\n                    urls.push(p[0]);\n                    points.push(p);\n                }\n            });\n        });\n\n        $.plot.image.load(urls, function (loadedImages) {\n            $.each(points, function (i, p) {\n                var url = p[0];\n                if (loadedImages[url])\n                    p[0] = loadedImages[url];\n            });\n\n            callback();\n        });\n    }\n    \n    $.plot.image.load = function (urls, callback) {\n        var missing = urls.length, loaded = {};\n        if (missing == 0)\n            callback({});\n\n        $.each(urls, function (i, url) {\n            var handler = function () {\n                --missing;\n                \n                loaded[url] = this;\n                \n                if (missing == 0)\n                    callback(loaded);\n            };\n\n            $('<img />').load(handler).error(handler).attr('src', url);\n        });\n    }\n    \n    function drawSeries(plot, ctx, series) {\n        var plotOffset = plot.getPlotOffset();\n        \n        if (!series.images || !series.images.show)\n            return;\n        \n        var points = series.datapoints.points,\n            ps = series.datapoints.pointsize;\n        \n        for (var i = 0; i < points.length; i += ps) {\n            var img = points[i],\n                x1 = points[i + 1], y1 = points[i + 2],\n                x2 = points[i + 3], y2 = points[i + 4],\n                xaxis = series.xaxis, yaxis = series.yaxis,\n                tmp;\n\n            // actually we should check img.complete, but it\n            // appears to be a somewhat unreliable indicator in\n            // IE6 (false even after load event)\n            if (!img || img.width <= 0 || img.height <= 0)\n                continue;\n\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n            \n            // if the anchor is at the center of the pixel, expand the \n            // image by 1/2 pixel in each direction\n            if (series.images.anchor == \"center\") {\n                tmp = 0.5 * (x2-x1) / (img.width - 1);\n                x1 -= tmp;\n                x2 += tmp;\n                tmp = 0.5 * (y2-y1) / (img.height - 1);\n                y1 -= tmp;\n                y2 += tmp;\n            }\n            \n            // clip\n            if (x1 == x2 || y1 == y2 ||\n                x1 >= xaxis.max || x2 <= xaxis.min ||\n                y1 >= yaxis.max || y2 <= yaxis.min)\n                continue;\n\n            var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;\n            if (x1 < xaxis.min) {\n                sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);\n                x1 = xaxis.min;\n            }\n\n            if (x2 > xaxis.max) {\n                sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);\n                x2 = xaxis.max;\n            }\n\n            if (y1 < yaxis.min) {\n                sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);\n                y1 = yaxis.min;\n            }\n\n            if (y2 > yaxis.max) {\n                sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);\n                y2 = yaxis.max;\n            }\n            \n            x1 = xaxis.p2c(x1);\n            x2 = xaxis.p2c(x2);\n            y1 = yaxis.p2c(y1);\n            y2 = yaxis.p2c(y2);\n            \n            // the transformation may have swapped us\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n\n            tmp = ctx.globalAlpha;\n            ctx.globalAlpha *= series.images.alpha;\n            ctx.drawImage(img,\n                          sx1, sy1, sx2 - sx1, sy2 - sy1,\n                          x1 + plotOffset.left, y1 + plotOffset.top,\n                          x2 - x1, y2 - y1);\n            ctx.globalAlpha = tmp;\n        }\n    }\n\n    function processRawData(plot, series, data, datapoints) {\n        if (!series.images.show)\n            return;\n\n        // format is Image, x1, y1, x2, y2 (opposite corners)\n        datapoints.format = [\n            { required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true }\n        ];\n    }\n    \n    function init(plot) {\n        plot.hooks.processRawData.push(processRawData);\n        plot.hooks.drawSeries.push(drawSeries);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'image',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.js",
    "content": "/*! Javascript plotting library for jQuery, v. 0.7.\n *\n * Released under the MIT license by IOLA, December 2007.\n *\n */\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return\"rgb(\"+[G.r,G.g,G.b].join(\",\")+\")\"}else{return\"rgba(\"+[G.r,G.g,G.b,G.a].join(\",\")+\")\"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=\"\"&&E!=\"transparent\"){break}D=D.parent()}while(!B.nodeName(D.get(0),\"body\"));if(E==\"rgba(0, 0, 0, 0)\"){E=\"transparent\"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D==\"transparent\"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n        \n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85 // set to 0 to avoid background\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    \n                    // mode specific options\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null, // number or [number, \"unit\"]\n                    monthNames: null, // list of names of months\n                    timeformat: null, // format string to use\n                    twelveHourClock: false // 12 or 24 time in time mode\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled \n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // or \"center\" \n                        horizontal: false\n                    },\n                    shadowSize: 3\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                hooks: {}\n            },\n        canvas = null,      // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        canvasWidth = 0, canvasHeight = 0,\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return canvas; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.resize = function () {\n            getCanvasDimensions();\n            resizeCanvas(canvas);\n            resizeCanvas(overlay);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n        \n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n        \n        function parseOptions(opts) {\n            var i;\n            \n            $.extend(true, options, opts);\n            \n            if (options.xaxis.color == null)\n                options.xaxis.color = options.grid.color;\n            if (options.yaxis.color == null)\n                options.yaxis.color = options.grid.color;\n            \n            if (options.xaxis.tickColor == null) // backwards-compatibility\n                options.xaxis.tickColor = options.grid.tickColor;\n            if (options.yaxis.tickColor == null) // backwards-compatibility\n                options.yaxis.tickColor = options.grid.tickColor;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            \n            // fill in defaults in axes, copy at least always the\n            // first as the rest of the code assumes it'll be there\n            for (i = 0; i < Math.max(1, options.xaxes.length); ++i)\n                options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);\n            for (i = 0; i < Math.max(1, options.yaxes.length); ++i)\n                options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n        \n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n        \n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n        \n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes \n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n            \n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n        \n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n            \n            return res;\n        }\n        \n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n                \n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n            var i;\n            \n            // collect what we already got of colors\n            var neededColors = series.length,\n                usedColors = [],\n                assignedColors = [];\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    --neededColors;\n                    if (typeof sc == \"number\")\n                        assignedColors.push(sc);\n                    else\n                        usedColors.push($.color.parse(series[i].color));\n                }\n            }\n            \n            // we might need to generate more colors if higher indices\n            // are assigned\n            for (i = 0; i < assignedColors.length; ++i) {\n                neededColors = Math.max(neededColors, assignedColors[i] + 1);\n            }\n\n            // produce colors as needed\n            var colors = [], variation = 0;\n            i = 0;\n            while (colors.length < neededColors) {\n                var c;\n                if (options.colors.length == i) // check degenerate case\n                    c = $.color.make(100, 100, 100);\n                else\n                    c = $.color.parse(options.colors[i]);\n\n                // vary color if needed\n                var sign = variation % 2 == 1 ? -1 : 1;\n                c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)\n\n                // FIXME: if we're getting to close to something else,\n                // we should probably skip this one\n                colors.push(c);\n                \n                ++i;\n                if (i >= options.colors.length) {\n                    i = 0;\n                    ++variation;\n                }\n            }\n\n            // fill in the options\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n        \n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n            \n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n                \n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n            \n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                var data = s.data, format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        format.push({ y: true, number: true, required: false, defaultValue: 0 });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n                    \n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n                \n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n                \n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n                                    \n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n                            \n                            points[k + m] = val;\n                        }\n                    }\n                    \n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.x)\n                                    updateAxis(s.xaxis, val, val);\n                                if (f.y)\n                                    updateAxis(s.yaxis, val, val);\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                \n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points,\n                ps = s.datapoints.pointsize;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n                \n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n                        \n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n                \n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2;\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n                \n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function makeCanvas(skipPositioning, cls) {\n            var c = document.createElement('canvas');\n            c.className = cls;\n            c.width = canvasWidth;\n            c.height = canvasHeight;\n                    \n            if (!skipPositioning)\n                $(c).css({ position: 'absolute', left: 0, top: 0 });\n                \n            $(c).appendTo(placeholder);\n                \n            if (!c.getContext) // excanvas hack\n                c = window.G_vmlCanvasManager.initElement(c);\n\n            // used for resetting in case we get replotted\n            c.getContext(\"2d\").save();\n            \n            return c;\n        }\n\n        function getCanvasDimensions() {\n            canvasWidth = placeholder.width();\n            canvasHeight = placeholder.height();\n            \n            if (canvasWidth <= 0 || canvasHeight <= 0)\n                throw \"Invalid dimensions for plot, width = \" + canvasWidth + \", height = \" + canvasHeight;\n        }\n\n        function resizeCanvas(c) {\n            // resizing should reset the state (excanvas seems to be\n            // buggy though)\n            if (c.width != canvasWidth)\n                c.width = canvasWidth;\n\n            if (c.height != canvasHeight)\n                c.height = canvasHeight;\n\n            // so try to get back to the initial state (even if it's\n            // gone now, this should be safe according to the spec)\n            var cctx = c.getContext(\"2d\");\n            cctx.restore();\n\n            // and save again\n            cctx.save();\n        }\n        \n        function setupCanvases() {\n            var reused,\n                existingCanvas = placeholder.children(\"canvas.base\"),\n                existingOverlay = placeholder.children(\"canvas.overlay\");\n\n            if (existingCanvas.length == 0 || existingOverlay == 0) {\n                // init everything\n                \n                placeholder.html(\"\"); // make sure placeholder is clear\n            \n                placeholder.css({ padding: 0 }); // padding messes up the positioning\n                \n                if (placeholder.css(\"position\") == 'static')\n                    placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n                getCanvasDimensions();\n                \n                canvas = makeCanvas(true, \"base\");\n                overlay = makeCanvas(false, \"overlay\"); // overlay canvas for interactive features\n\n                reused = false;\n            }\n            else {\n                // reuse existing elements\n\n                canvas = existingCanvas.get(0);\n                overlay = existingOverlay.get(0);\n\n                reused = true;\n            }\n\n            ctx = canvas.getContext(\"2d\");\n            octx = overlay.getContext(\"2d\");\n\n            // we include the canvas in the event holder too, because IE 7\n            // sometimes has trouble with the stacking order\n            eventHolder = $([overlay, canvas]);\n\n            if (reused) {\n                // run shutdown in the old plot object\n                placeholder.data(\"plot\").shutdown();\n\n                // reset reused canvases\n                plot.resize();\n                \n                // make sure overlay pixels are cleared (canvas is cleared when we redraw)\n                octx.clearRect(0, 0, canvasWidth, canvasHeight);\n                \n                // then whack any remaining obvious garbage left\n                eventHolder.unbind();\n                placeholder.children().not([canvas, overlay]).remove();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mouseleave(onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n            \n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n            \n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n            \n            function identity(x) { return x; }\n            \n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n            \n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n            var opts = axis.options, i, ticks = axis.ticks || [], labels = [],\n                l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;\n\n            function makeDummyDiv(labels, width) {\n                return $('<div style=\"position:absolute;top:-10000px;' + width + 'font-size:smaller\">' +\n                         '<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\">'\n                         + labels.join(\"\") + '</div></div>')\n                    .appendTo(placeholder);\n            }\n            \n            if (axis.direction == \"x\") {\n                // to avoid measuring the widths of the labels (it's slow), we\n                // construct fixed-size boxes and put the labels inside\n                // them, we don't need the exact figures and the\n                // fixed-size box content is easy to center\n                if (w == null)\n                    w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));\n\n                // measure x label heights\n                if (h == null) {\n                    labels = [];\n                    for (i = 0; i < ticks.length; ++i) {\n                        l = ticks[i].label;\n                        if (l)\n                            labels.push('<div class=\"tickLabel\" style=\"float:left;width:' + w + 'px\">' + l + '</div>');\n                    }\n\n                    if (labels.length > 0) {\n                        // stick them all in the same div and measure\n                        // collective height\n                        labels.push('<div style=\"clear:left\"></div>');\n                        dummyDiv = makeDummyDiv(labels, \"width:10000px;\");\n                        h = dummyDiv.height();\n                        dummyDiv.remove();\n                    }\n                }\n            }\n            else if (w == null || h == null) {\n                // calculate y label dimensions\n                for (i = 0; i < ticks.length; ++i) {\n                    l = ticks[i].label;\n                    if (l)\n                        labels.push('<div class=\"tickLabel\">' + l + '</div>');\n                }\n                \n                if (labels.length > 0) {\n                    dummyDiv = makeDummyDiv(labels, \"\");\n                    if (w == null)\n                        w = dummyDiv.children().width();\n                    if (h == null)\n                        h = dummyDiv.find(\"div.tickLabel\").height();\n                    dummyDiv.remove();\n                }\n            }\n\n            if (w == null)\n                w = 0;\n            if (h == null)\n                h = 0;\n\n            axis.labelWidth = w;\n            axis.labelHeight = h;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                tickLength = axis.options.tickLength,\n                axismargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                all = axis.direction == \"x\" ? xaxes : yaxes,\n                index;\n\n            // determine axis margin\n            var samePosition = $.grep(all, function (a) {\n                return a && a.options.position == pos && a.reserveSpace;\n            });\n            if ($.inArray(axis, samePosition) == samePosition.length - 1)\n                axismargin = 0; // outermost\n\n            // determine tick length - if we're innermost, we can use \"full\"\n            if (tickLength == null)\n                tickLength = \"full\";\n\n            var sameDirection = $.grep(all, function (a) {\n                return a && a.reserveSpace;\n            });\n\n            var innermost = $.inArray(axis, sameDirection) == 0;\n            if (!innermost && tickLength == \"full\")\n                tickLength = 5;\n                \n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            // compute box\n            if (axis.direction == \"x\") {\n                lh += padding;\n                \n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axismargin;\n                    axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axismargin, height: lh };\n                    plotOffset.top += lh + axismargin;\n                }\n            }\n            else {\n                lw += padding;\n                \n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axismargin, width: lw };\n                    plotOffset.left += lw + axismargin;\n                }\n                else {\n                    plotOffset.right += lw + axismargin;\n                    axis.box = { left: canvasWidth - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // set remaining bounding box coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left;\n                axis.box.width = plotWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top;\n                axis.box.height = plotHeight;\n            }\n        }\n        \n        function setupGrid() {\n            var i, axes = allAxes();\n\n            // first calculate the plot and axis box dimensions\n\n            $.each(axes, function (_, axis) {\n                axis.show = axis.options.show;\n                if (axis.show == null)\n                    axis.show = axis.used; // by default an axis is visible if it's got data\n                \n                axis.reserveSpace = axis.show || axis.options.reserveSpace;\n\n                setRange(axis);\n            });\n\n            allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });\n\n            plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions in house, we can compute the\n                // axis boxes, start from the outside (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                var minMargin = options.grid.minBorderMargin;\n                if (minMargin == null) {\n                    minMargin = 0;\n                    for (i = 0; i < series.length; ++i)\n                        minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);\n                }\n                    \n                for (var a in plotOffset) {\n                    plotOffset[a] += options.grid.borderWidth;\n                    plotOffset[a] = Math.max(minMargin, plotOffset[a]);\n                }\n            }\n            \n            plotWidth = canvasWidth - plotOffset.left - plotOffset.right;\n            plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plotWidth/Height, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (options.grid.show) {\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n\n                insertAxisLabels();\n            }\n            \n            insertLegend();\n        }\n        \n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n                \n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? canvasWidth : canvasHeight);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                size, generator, unit, formatter, i, magn, norm;\n\n            if (opts.mode == \"time\") {\n                // pretty handling of time\n                \n                // map of app. size of time units in milliseconds\n                var timeUnitSize = {\n                    \"second\": 1000,\n                    \"minute\": 60 * 1000,\n                    \"hour\": 60 * 60 * 1000,\n                    \"day\": 24 * 60 * 60 * 1000,\n                    \"month\": 30 * 24 * 60 * 60 * 1000,\n                    \"year\": 365.2425 * 24 * 60 * 60 * 1000\n                };\n\n\n                // the allowed tick sizes, after 1 year we use\n                // an integer algorithm\n                var spec = [\n                    [1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n                    [30, \"second\"], \n                    [1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n                    [30, \"minute\"], \n                    [1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n                    [8, \"hour\"], [12, \"hour\"],\n                    [1, \"day\"], [2, \"day\"], [3, \"day\"],\n                    [0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n                    [2, \"month\"], [3, \"month\"], [6, \"month\"],\n                    [1, \"year\"]\n                ];\n\n                var minSize = 0;\n                if (opts.minTickSize != null) {\n                    if (typeof opts.tickSize == \"number\")\n                        minSize = opts.tickSize;\n                    else\n                        minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n                }\n\n                for (var i = 0; i < spec.length - 1; ++i)\n                    if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n                                 + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n                       && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)\n                        break;\n                size = spec[i][0];\n                unit = spec[i][1];\n                \n                // special-case the possibility of several years\n                if (unit == \"year\") {\n                    magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));\n                    norm = (delta / timeUnitSize.year) / magn;\n                    if (norm < 1.5)\n                        size = 1;\n                    else if (norm < 3)\n                        size = 2;\n                    else if (norm < 7.5)\n                        size = 5;\n                    else\n                        size = 10;\n\n                    size *= magn;\n                }\n\n                axis.tickSize = opts.tickSize || [size, unit];\n                \n                generator = function(axis) {\n                    var ticks = [],\n                        tickSize = axis.tickSize[0], unit = axis.tickSize[1],\n                        d = new Date(axis.min);\n                    \n                    var step = tickSize * timeUnitSize[unit];\n\n                    if (unit == \"second\")\n                        d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));\n                    if (unit == \"minute\")\n                        d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));\n                    if (unit == \"hour\")\n                        d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));\n                    if (unit == \"month\")\n                        d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));\n                    if (unit == \"year\")\n                        d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));\n                    \n                    // reset smaller components\n                    d.setUTCMilliseconds(0);\n                    if (step >= timeUnitSize.minute)\n                        d.setUTCSeconds(0);\n                    if (step >= timeUnitSize.hour)\n                        d.setUTCMinutes(0);\n                    if (step >= timeUnitSize.day)\n                        d.setUTCHours(0);\n                    if (step >= timeUnitSize.day * 4)\n                        d.setUTCDate(1);\n                    if (step >= timeUnitSize.year)\n                        d.setUTCMonth(0);\n\n\n                    var carry = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = d.getTime();\n                        ticks.push(v);\n                        if (unit == \"month\") {\n                            if (tickSize < 1) {\n                                // a bit complicated - we'll divide the month\n                                // up but we need to take care of fractions\n                                // so we don't end up in the middle of a day\n                                d.setUTCDate(1);\n                                var start = d.getTime();\n                                d.setUTCMonth(d.getUTCMonth() + 1);\n                                var end = d.getTime();\n                                d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n                                carry = d.getUTCHours();\n                                d.setUTCHours(0);\n                            }\n                            else\n                                d.setUTCMonth(d.getUTCMonth() + tickSize);\n                        }\n                        else if (unit == \"year\") {\n                            d.setUTCFullYear(d.getUTCFullYear() + tickSize);\n                        }\n                        else\n                            d.setTime(v + step);\n                    } while (v < axis.max && v != prev);\n\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    var d = new Date(v);\n\n                    // first check global format\n                    if (opts.timeformat != null)\n                        return $.plot.formatDate(d, opts.timeformat, opts.monthNames);\n                    \n                    var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n                    var span = axis.max - axis.min;\n                    var suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n                    \n                    if (t < timeUnitSize.minute)\n                        fmt = \"%h:%M:%S\" + suffix;\n                    else if (t < timeUnitSize.day) {\n                        if (span < 2 * timeUnitSize.day)\n                            fmt = \"%h:%M\" + suffix;\n                        else\n                            fmt = \"%b %d %h:%M\" + suffix;\n                    }\n                    else if (t < timeUnitSize.month)\n                        fmt = \"%b %d\";\n                    else if (t < timeUnitSize.year) {\n                        if (span < timeUnitSize.year)\n                            fmt = \"%b\";\n                        else\n                            fmt = \"%b %y\";\n                    }\n                    else\n                        fmt = \"%y\";\n                    \n                    return $.plot.formatDate(d, fmt, opts.monthNames);\n                };\n            }\n            else {\n                // pretty rounding of base-10 numbers\n                var maxDec = opts.tickDecimals;\n                var dec = -Math.floor(Math.log(delta) / Math.LN10);\n                if (maxDec != null && dec > maxDec)\n                    dec = maxDec;\n\n                magn = Math.pow(10, -dec);\n                norm = delta / magn; // norm is between 1.0 and 10.0\n                \n                if (norm < 1.5)\n                    size = 1;\n                else if (norm < 3) {\n                    size = 2;\n                    // special case for 2.5, requires an extra decimal\n                    if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                        size = 2.5;\n                        ++dec;\n                    }\n                }\n                else if (norm < 7.5)\n                    size = 5;\n                else\n                    size = 10;\n\n                size *= magn;\n                \n                if (opts.minTickSize != null && size < opts.minTickSize)\n                    size = opts.minTickSize;\n\n                axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n                axis.tickSize = opts.tickSize || size;\n\n                generator = function (axis) {\n                    var ticks = [];\n\n                    // spew out all possible ticks\n                    var start = floorInBase(axis.min, axis.tickSize),\n                        i = 0, v = Number.NaN, prev;\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n                formatter = function (v, axis) {\n                    return v.toFixed(axis.tickDecimals);\n                };\n            }\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = generator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n                    \n                    generator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n                    \n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (axis.mode != \"time\" && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),\n                            ts = generator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n\n            axis.tickGenerator = generator;\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n            else\n                axis.tickFormatter = formatter;\n        }\n        \n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks({ min: axis.min, max: axis.max });\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n      \n        function draw() {\n            ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n            \n            if (grid.show && !grid.aboveData)\n                drawGrid();\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n            \n            if (grid.show && grid.aboveData)\n                drawGrid();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i;\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    var axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n                    \n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    if (xrange.from == xrange.to && yrange.from == yrange.to)\n                        continue;\n\n                    // then draw\n                    xrange.from = xrange.axis.p2c(xrange.from);\n                    xrange.to = xrange.axis.p2c(xrange.to);\n                    yrange.from = yrange.axis.p2c(yrange.from);\n                    yrange.to = yrange.axis.p2c(yrange.to);\n                    \n                    if (xrange.from == xrange.to || yrange.from == yrange.to) {\n                        // draw line\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;\n                        ctx.moveTo(xrange.from, yrange.from);\n                        ctx.lineTo(xrange.to, yrange.to);\n                        ctx.stroke();\n                    }\n                    else {\n                        // fill area\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n            \n            // draw the ticks\n            var axes = allAxes(), bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue\n                \n                ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n                \n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth;\n                    else\n                        yoff = plotHeight;\n                    \n                    if (ctx.lineWidth == 1) {\n                        x = Math.floor(x) + 0.5;\n                        y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n                    \n                    xoff = yoff = 0;\n\n                    if (v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\" && bw > 0\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n                        \n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n                        \n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n                \n                ctx.stroke();\n            }\n            \n            \n            // draw border\n            if (bw) {\n                ctx.lineWidth = bw;\n                ctx.strokeStyle = options.grid.borderColor;\n                ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n            }\n\n            ctx.restore();\n        }\n\n        function insertAxisLabels() {\n            placeholder.find(\".tickLabels\").remove();\n            \n            var html = ['<div class=\"tickLabels\" style=\"font-size:smaller\">'];\n\n            var axes = allAxes();\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box;\n                if (!axis.show)\n                    continue;\n                //debug: html.push('<div style=\"position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width +  'px;height:' + box.height + 'px\"></div>')\n                html.push('<div class=\"' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis\" style=\"color:' + axis.options.color + '\">');\n                for (var i = 0; i < axis.ticks.length; ++i) {\n                    var tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    var pos = {}, align;\n                    \n                    if (axis.direction == \"x\") {\n                        align = \"center\";\n                        pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);\n                        if (axis.position == \"bottom\")\n                            pos.top = box.top + box.padding;\n                        else\n                            pos.bottom = canvasHeight - (box.top + box.height - box.padding);\n                    }\n                    else {\n                        pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);\n                        if (axis.position == \"left\") {\n                            pos.right = canvasWidth - (box.left + box.width - box.padding)\n                            align = \"right\";\n                        }\n                        else {\n                            pos.left = box.left + box.padding;\n                            align = \"left\";\n                        }\n                    }\n\n                    pos.width = axis.labelWidth;\n\n                    var style = [\"position:absolute\", \"text-align:\" + align ];\n                    for (var a in pos)\n                        style.push(a + \":\" + pos[a] + \"px\")\n                    \n                    html.push('<div class=\"tickLabel\" style=\"' + style.join(';') + '\">' + tick.label + '</div>');\n                }\n                html.push('</div>');\n            }\n\n            html.push('</div>');\n\n            placeholder.append(html.join(\"\"));\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n        \n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n                \n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n                    \n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n                    \n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n                    \n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n                    \n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n                    \n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n                    \n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n                    \n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n                    \n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n                    \n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n           \n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n            \n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n            \n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n            \n            // fill the bar\n            if (fillStyleCallback) {\n                c.beginPath();\n                c.moveTo(left, bottom);\n                c.lineTo(left, top);\n                c.lineTo(right, top);\n                c.lineTo(right, bottom);\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fill();\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom + offset);\n                if (drawLeft)\n                    c.lineTo(left, top + offset);\n                else\n                    c.moveTo(left, top + offset);\n                if (drawTop)\n                    c.lineTo(right, top + offset);\n                else\n                    c.moveTo(right, top + offset);\n                if (drawRight)\n                    c.lineTo(right, bottom + offset);\n                else\n                    c.moveTo(right, bottom + offset);\n                if (drawBottom)\n                    c.lineTo(left, bottom + offset);\n                else\n                    c.moveTo(left, bottom + offset);\n                c.stroke();\n            }\n        }\n        \n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n                \n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n            \n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n        \n        function insertLegend() {\n            placeholder.find(\".legend\").remove();\n\n            if (!options.legend.show)\n                return;\n            \n            var fragments = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                label = s.label;\n                if (!label)\n                    continue;\n                \n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                if (lf)\n                    label = lf(label, s);\n                \n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + label + '</td>');\n            }\n            if (rowStarted)\n                fragments.push('</tr>');\n            \n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n        \n        var highlights = [],\n            redrawTimeout = null;\n        \n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n                \n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    ps = s.datapoints.pointsize,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n                \n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n                        \n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n                    \n                if (s.bars.show && !item) { // no other point can be nearby\n                    var barLeft = s.bars.align == \"left\" ? 0 : -s.bars.barWidth/2,\n                        barRight = barLeft + s.bars.barWidth;\n                    \n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n  \n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ? \n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) && \n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n                \n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n            \n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n                \n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n            \n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, 30);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            octx.clearRect(0, 0, canvasWidth, canvasHeight);\n            octx.translate(plotOffset.left, plotOffset.top);\n            \n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n            \n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n        \n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n            \n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n            }\n            \n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\")\n                point = s.data[point];\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n        \n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n        \n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis;\n            \n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n            \n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var radius = 1.5 * pointRadius,\n                x = axisx.p2c(x),\n                y = axisy.p2c(y);\n            \n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString();\n            var barLeft = series.bars.align == \"left\" ? 0 : -series.bars.barWidth/2;\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n                \n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness)\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n                \n                return gradient;\n            }\n        }\n    }\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.7\";\n    \n    $.plot.plugins = [];\n\n    // returns a string with the date d formatted according to fmt\n    $.plot.formatDate = function(d, fmt, monthNames) {\n        var leftPad = function(n) {\n            n = \"\" + n;\n            return n.length == 1 ? \"0\" + n : n;\n        };\n        \n        var r = [];\n        var escape = false, padNext = false;\n        var hours = d.getUTCHours();\n        var isAM = hours < 12;\n        if (monthNames == null)\n            monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n        if (fmt.search(/%p|%P/) != -1) {\n            if (hours > 12) {\n                hours = hours - 12;\n            } else if (hours == 0) {\n                hours = 12;\n            }\n        }\n        for (var i = 0; i < fmt.length; ++i) {\n            var c = fmt.charAt(i);\n            \n            if (escape) {\n                switch (c) {\n                case 'h': c = \"\" + hours; break;\n                case 'H': c = leftPad(hours); break;\n                case 'M': c = leftPad(d.getUTCMinutes()); break;\n                case 'S': c = leftPad(d.getUTCSeconds()); break;\n                case 'd': c = \"\" + d.getUTCDate(); break;\n                case 'm': c = \"\" + (d.getUTCMonth() + 1); break;\n                case 'y': c = \"\" + d.getUTCFullYear(); break;\n                case 'b': c = \"\" + monthNames[d.getUTCMonth()]; break;\n                case 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n                case 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n                case '0': c = \"\"; padNext = true; break;\n                }\n                if (c && padNext) {\n                    c = leftPad(c);\n                    padNext = false;\n                }\n                r.push(c);\n                if (!padNext)\n                    escape = false;\n            }\n            else {\n                if (c == \"%\")\n                    escape = true;\n                else\n                    r.push(c);\n            }\n        }\n        return r.join(\"\");\n    };\n    \n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n    \n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.navigate.js",
    "content": "/*\nFlot plugin for adding panning and zooming capabilities to a plot.\n\nThe default behaviour is double click and scrollwheel up/down to zoom\nin, drag to pan. The plugin defines plot.zoom({ center }),\nplot.zoomOut() and plot.pan(offset) so you easily can add custom\ncontrols. It also fires a \"plotpan\" and \"plotzoom\" event when\nsomething happens, useful for synchronizing plots.\n\nOptions:\n\n  zoom: {\n    interactive: false\n    trigger: \"dblclick\" // or \"click\" for single click\n    amount: 1.5         // 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n  }\n  \n  pan: {\n    interactive: false\n    cursor: \"move\"      // CSS mouse cursor value used when dragging, e.g. \"pointer\"\n    frameRate: 20\n  }\n\n  xaxis, yaxis, x2axis, y2axis: {\n    zoomRange: null  // or [number, number] (min range, max range) or false\n    panRange: null   // or [number, number] (min, max) or false\n  }\n  \n\"interactive\" enables the built-in drag/click behaviour. If you enable\ninteractive for pan, then you'll have a basic plot that supports\nmoving around; the same for zoom.\n\n\"amount\" specifies the default amount to zoom in (so 1.5 = 150%)\nrelative to the current viewport.\n\n\"cursor\" is a standard CSS mouse cursor string used for visual\nfeedback to the user when dragging.\n\n\"frameRate\" specifies the maximum number of times per second the plot\nwill update itself while the user is panning around on it (set to null\nto disable intermediate pans, the plot will then not update until the\nmouse button is released).\n\n\"zoomRange\" is the interval in which zooming can happen, e.g. with\nzoomRange: [1, 100] the zoom will never scale the axis so that the\ndifference between min and max is smaller than 1 or larger than 100.\nYou can set either end to null to ignore, e.g. [1, null]. If you set\nzoomRange to false, zooming on that axis will be disabled.\n\n\"panRange\" confines the panning to stay within a range, e.g. with\npanRange: [-10, 20] panning stops at -10 in one end and at 20 in the\nother. Either can be null, e.g. [-10, null]. If you set\npanRange to false, panning on that axis will be disabled.\n\nExample API usage:\n\n  plot = $.plot(...);\n  \n  // zoom default amount in on the pixel (10, 20) \n  plot.zoom({ center: { left: 10, top: 20 } });\n\n  // zoom out again\n  plot.zoomOut({ center: { left: 10, top: 20 } });\n\n  // zoom 200% in on the pixel (10, 20) \n  plot.zoom({ amount: 2, center: { left: 10, top: 20 } });\n  \n  // pan 100 pixels to the left and 20 down\n  plot.pan({ left: -100, top: 20 })\n\nHere, \"center\" specifies where the center of the zooming should\nhappen. Note that this is defined in pixel space, not the space of the\ndata points (you can use the p2c helpers on the axes in Flot to help\nyou convert between these).\n\n\"amount\" is the amount to zoom the viewport relative to the current\nrange, so 1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is\n70% (zoom out). You can set the default in the options.\n  \n*/\n\n\n// First two dependencies, jquery.event.drag.js and\n// jquery.mousewheel.js, we put them inline here to save people the\n// effort of downloading them.\n\n/*\njquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)  \nLicensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt\n*/\n(function(E){E.fn.drag=function(L,K,J){if(K){this.bind(\"dragstart\",L)}if(J){this.bind(\"dragend\",J)}return !L?this.trigger(\"drag\"):this.bind(\"drag\",K?K:L)};var A=E.event,B=A.special,F=B.drag={not:\":input\",distance:0,which:1,dragging:false,setup:function(J){J=E.extend({distance:F.distance,which:F.which,not:F.not},J||{});J.distance=I(J.distance);A.add(this,\"mousedown\",H,J);if(this.attachEvent){this.attachEvent(\"ondragstart\",D)}},teardown:function(){A.remove(this,\"mousedown\",H);if(this===F.dragging){F.dragging=F.proxy=false}G(this,true);if(this.detachEvent){this.detachEvent(\"ondragstart\",D)}}};B.dragstart=B.dragend={setup:function(){},teardown:function(){}};function H(L){var K=this,J,M=L.data||{};if(M.elem){K=L.dragTarget=M.elem;L.dragProxy=F.proxy||K;L.cursorOffsetX=M.pageX-M.left;L.cursorOffsetY=M.pageY-M.top;L.offsetX=L.pageX-L.cursorOffsetX;L.offsetY=L.pageY-L.cursorOffsetY}else{if(F.dragging||(M.which>0&&L.which!=M.which)||E(L.target).is(M.not)){return }}switch(L.type){case\"mousedown\":E.extend(M,E(K).offset(),{elem:K,target:L.target,pageX:L.pageX,pageY:L.pageY});A.add(document,\"mousemove mouseup\",H,M);G(K,false);F.dragging=null;return false;case !F.dragging&&\"mousemove\":if(I(L.pageX-M.pageX)+I(L.pageY-M.pageY)<M.distance){break}L.target=M.target;J=C(L,\"dragstart\",K);if(J!==false){F.dragging=K;F.proxy=L.dragProxy=E(J||K)[0]}case\"mousemove\":if(F.dragging){J=C(L,\"drag\",K);if(B.drop){B.drop.allowed=(J!==false);B.drop.handler(L)}if(J!==false){break}L.type=\"mouseup\"}case\"mouseup\":A.remove(document,\"mousemove mouseup\",H);if(F.dragging){if(B.drop){B.drop.handler(L)}C(L,\"dragend\",K)}G(K,true);F.dragging=F.proxy=M.elem=false;break}return true}function C(M,K,L){M.type=K;var J=E.event.handle.call(L,M);return J===false?false:J||M.result}function I(J){return Math.pow(J,2)}function D(){return(F.dragging===false)}function G(K,J){if(!K){return }K.unselectable=J?\"off\":\"on\";K.onselectstart=function(){return J};if(K.style){K.style.MozUserSelect=J?\"\":\"none\"}}})(jQuery);\n\n\n/* jquery.mousewheel.min.js\n * Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n *\n * Version: 3.0.2\n * \n * Requires: 1.2.2+\n */\n(function(c){var a=[\"DOMMouseScroll\",\"mousewheel\"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind(\"mousewheel\",d):this.trigger(\"mousewheel\")},unmousewheel:function(d){return this.unbind(\"mousewheel\",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type=\"mousewheel\";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);\n\n\n\n\n(function ($) {\n    var options = {\n        xaxis: {\n            zoomRange: null, // or [number, number] (min range, max range)\n            panRange: null // or [number, number] (min, max)\n        },\n        zoom: {\n            interactive: false,\n            trigger: \"dblclick\", // or \"click\" for single click\n            amount: 1.5 // how much to zoom relative to current position, 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n        },\n        pan: {\n            interactive: false,\n            cursor: \"move\",\n            frameRate: 20\n        }\n    };\n\n    function init(plot) {\n        function onZoomClick(e, zoomOut) {\n            var c = plot.offset();\n            c.left = e.pageX - c.left;\n            c.top = e.pageY - c.top;\n            if (zoomOut)\n                plot.zoomOut({ center: c });\n            else\n                plot.zoom({ center: c });\n        }\n\n        function onMouseWheel(e, delta) {\n            onZoomClick(e, delta < 0);\n            return false;\n        }\n        \n        var prevCursor = 'default', prevPageX = 0, prevPageY = 0,\n            panTimeout = null;\n\n        function onDragStart(e) {\n            if (e.which != 1)  // only accept left-click\n                return false;\n            var c = plot.getPlaceholder().css('cursor');\n            if (c)\n                prevCursor = c;\n            plot.getPlaceholder().css('cursor', plot.getOptions().pan.cursor);\n            prevPageX = e.pageX;\n            prevPageY = e.pageY;\n        }\n        \n        function onDrag(e) {\n            var frameRate = plot.getOptions().pan.frameRate;\n            if (panTimeout || !frameRate)\n                return;\n\n            panTimeout = setTimeout(function () {\n                plot.pan({ left: prevPageX - e.pageX,\n                           top: prevPageY - e.pageY });\n                prevPageX = e.pageX;\n                prevPageY = e.pageY;\n                                                    \n                panTimeout = null;\n            }, 1 / frameRate * 1000);\n        }\n\n        function onDragEnd(e) {\n            if (panTimeout) {\n                clearTimeout(panTimeout);\n                panTimeout = null;\n            }\n                    \n            plot.getPlaceholder().css('cursor', prevCursor);\n            plot.pan({ left: prevPageX - e.pageX,\n                       top: prevPageY - e.pageY });\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.zoom.interactive) {\n                eventHolder[o.zoom.trigger](onZoomClick);\n                eventHolder.mousewheel(onMouseWheel);\n            }\n\n            if (o.pan.interactive) {\n                eventHolder.bind(\"dragstart\", { distance: 10 }, onDragStart);\n                eventHolder.bind(\"drag\", onDrag);\n                eventHolder.bind(\"dragend\", onDragEnd);\n            }\n        }\n\n        plot.zoomOut = function (args) {\n            if (!args)\n                args = {};\n            \n            if (!args.amount)\n                args.amount = plot.getOptions().zoom.amount\n\n            args.amount = 1 / args.amount;\n            plot.zoom(args);\n        }\n        \n        plot.zoom = function (args) {\n            if (!args)\n                args = {};\n            \n            var c = args.center,\n                amount = args.amount || plot.getOptions().zoom.amount,\n                w = plot.width(), h = plot.height();\n\n            if (!c)\n                c = { left: w / 2, top: h / 2 };\n                \n            var xf = c.left / w,\n                yf = c.top / h,\n                minmax = {\n                    x: {\n                        min: c.left - xf * w / amount,\n                        max: c.left + (1 - xf) * w / amount\n                    },\n                    y: {\n                        min: c.top - yf * h / amount,\n                        max: c.top + (1 - yf) * h / amount\n                    }\n                };\n\n            $.each(plot.getAxes(), function(_, axis) {\n                var opts = axis.options,\n                    min = minmax[axis.direction].min,\n                    max = minmax[axis.direction].max,\n                    zr = opts.zoomRange;\n\n                if (zr === false) // no zooming on this axis\n                    return;\n                    \n                min = axis.c2p(min);\n                max = axis.c2p(max);\n                if (min > max) {\n                    // make sure min < max\n                    var tmp = min;\n                    min = max;\n                    max = tmp;\n                }\n\n                var range = max - min;\n                if (zr &&\n                    ((zr[0] != null && range < zr[0]) ||\n                     (zr[1] != null && range > zr[1])))\n                    return;\n            \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotzoom\", [ plot ]);\n        }\n\n        plot.pan = function (args) {\n            var delta = {\n                x: +args.left,\n                y: +args.top\n            };\n\n            if (isNaN(delta.x))\n                delta.x = 0;\n            if (isNaN(delta.y))\n                delta.y = 0;\n\n            $.each(plot.getAxes(), function (_, axis) {\n                var opts = axis.options,\n                    min, max, d = delta[axis.direction];\n\n                min = axis.c2p(axis.p2c(axis.min) + d),\n                max = axis.c2p(axis.p2c(axis.max) + d);\n\n                var pr = opts.panRange;\n                if (pr === false) // no panning on this axis\n                    return;\n                \n                if (pr) {\n                    // check whether we hit the wall\n                    if (pr[0] != null && pr[0] > min) {\n                        d = pr[0] - min;\n                        min += d;\n                        max += d;\n                    }\n                    \n                    if (pr[1] != null && pr[1] < max) {\n                        d = pr[1] - max;\n                        min += d;\n                        max += d;\n                    }\n                }\n                \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotpan\", [ plot ]);\n        }\n\n        function shutdown(plot, eventHolder) {\n            eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick);\n            eventHolder.unbind(\"mousewheel\", onMouseWheel);\n            eventHolder.unbind(\"dragstart\", onDragStart);\n            eventHolder.unbind(\"drag\", onDrag);\n            eventHolder.unbind(\"dragend\", onDragEnd);\n            if (panTimeout)\n                clearTimeout(panTimeout);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'navigate',\n        version: '1.3'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.orderBars.js",
    "content": "/*\n * Flot plugin to order bars side by side.\n * \n * Released under the MIT license by Benjamin BUFFET, 20-Sep-2010.\n *\n * This plugin is an alpha version.\n *\n * To activate the plugin you must specify the parameter \"order\" for the specific serie :\n *\n *  $.plot($(\"#placeholder\"), [{ data: [ ... ], bars :{ order = null or integer }])\n *\n * If 2 series have the same order param, they are ordered by the position in the array;\n *\n * The plugin adjust the point by adding a value depanding of the barwidth\n * Exemple for 3 series (barwidth : 0.1) :\n *\n *          first bar décalage : -0.15\n *          second bar décalage : -0.05\n *          third bar décalage : 0.05\n *\n */\n\n(function($){\n    function init(plot){\n        var orderedBarSeries;\n        var nbOfBarsToOrder;\n        var borderWidth;\n        var borderWidthInXabsWidth;\n        var pixelInXWidthEquivalent = 1;\n        var isHorizontal = false;\n\n        /*\n         * This method add shift to x values\n         */\n        function reOrderBars(plot, serie, datapoints){\n            var shiftedPoints = null;\n            \n            if(serieNeedToBeReordered(serie)){                \n                checkIfGraphIsHorizontal(serie);\n                calculPixel2XWidthConvert(plot);\n                retrieveBarSeries(plot);\n                calculBorderAndBarWidth(serie);\n                \n                if(nbOfBarsToOrder >= 2){  \n                    var position = findPosition(serie);\n                    var decallage = 0;\n                    \n                    var centerBarShift = calculCenterBarShift();\n\n                    if (isBarAtLeftOfCenter(position)){\n                        decallage = -1*(sumWidth(orderedBarSeries,position-1,Math.floor(nbOfBarsToOrder / 2)-1)) - centerBarShift;\n                    }else{\n                        decallage = sumWidth(orderedBarSeries,Math.ceil(nbOfBarsToOrder / 2),position-2) + centerBarShift + borderWidthInXabsWidth*2;\n                    }\n\n                    shiftedPoints = shiftPoints(datapoints,serie,decallage);\n                    datapoints.points = shiftedPoints;\n               }\n           }\n           return shiftedPoints;\n        }\n\n        function serieNeedToBeReordered(serie){\n            return serie.bars != null\n                && serie.bars.show\n                && serie.bars.order != null;\n        }\n\n        function calculPixel2XWidthConvert(plot){\n            var gridDimSize = isHorizontal ? plot.getPlaceholder().innerHeight() : plot.getPlaceholder().innerWidth();\n            var minMaxValues = isHorizontal ? getAxeMinMaxValues(plot.getData(),1) : getAxeMinMaxValues(plot.getData(),0);\n            var AxeSize = minMaxValues[1] - minMaxValues[0];\n            pixelInXWidthEquivalent = AxeSize / gridDimSize;\n        }\n\n        function getAxeMinMaxValues(series,AxeIdx){\n            var minMaxValues = new Array();\n            for(var i = 0; i < series.length; i++){\n                minMaxValues[0] = series[i].data[0][AxeIdx];\n                minMaxValues[1] = series[i].data[series[i].data.length - 1][AxeIdx];\n            }\n            return minMaxValues;\n        }\n\n        function retrieveBarSeries(plot){\n            orderedBarSeries = findOthersBarsToReOrders(plot.getData());\n            nbOfBarsToOrder = orderedBarSeries.length;\n        }\n\n        function findOthersBarsToReOrders(series){\n            var retSeries = new Array();\n\n            for(var i = 0; i < series.length; i++){\n                if(series[i].bars.order != null && series[i].bars.show){\n                    retSeries.push(series[i]);\n                }\n            }\n\n            return retSeries.sort(sortByOrder);\n        }\n\n        function sortByOrder(serie1,serie2){\n            var x = serie1.bars.order;\n            var y = serie2.bars.order;\n            return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n        }\n\n        function  calculBorderAndBarWidth(serie){\n            borderWidth = serie.bars.lineWidth ? serie.bars.lineWidth  : 2;\n            borderWidthInXabsWidth = borderWidth * pixelInXWidthEquivalent;\n        }\n        \n        function checkIfGraphIsHorizontal(serie){\n            if(serie.bars.horizontal){\n                isHorizontal = true;\n            }\n        }\n\n        function findPosition(serie){\n            var pos = 0\n            for (var i = 0; i < orderedBarSeries.length; ++i) {\n                if (serie == orderedBarSeries[i]){\n                    pos = i;\n                    break;\n                }\n            }\n\n            return pos+1;\n        }\n\n        function calculCenterBarShift(){\n            var width = 0;\n\n            if(nbOfBarsToOrder%2 != 0)\n                width = (orderedBarSeries[Math.ceil(nbOfBarsToOrder / 2)].bars.barWidth)/2;\n\n            return width;\n        }\n\n        function isBarAtLeftOfCenter(position){\n            return position <= Math.ceil(nbOfBarsToOrder / 2);\n        }\n\n        function sumWidth(series,start,end){\n            var totalWidth = 0;\n\n            for(var i = start; i <= end; i++){\n                totalWidth += series[i].bars.barWidth+borderWidthInXabsWidth*2;\n            }\n\n            return totalWidth;\n        }\n\n        function shiftPoints(datapoints,serie,dx){\n            var ps = datapoints.pointsize;\n            var points = datapoints.points;\n            var j = 0;           \n            for(var i = isHorizontal ? 1 : 0;i < points.length; i += ps){\n                points[i] += dx;\n                //Adding the new x value in the serie to be abble to display the right tooltip value,\n                //using the index 3 to not overide the third index.\n                serie.data[j][3] = points[i];\n                j++;\n            }\n\n            return points;\n        }\n\n        plot.hooks.processDatapoints.push(reOrderBars);\n\n    }\n\n    var options = {\n        series : {\n            bars: {order: null} // or number/string\n        }\n    };\n\n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: \"orderBars\",\n        version: \"0.2\"\n    });\n\n})(jQuery)\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.pie.js",
    "content": "/*\nFlot plugin for rendering pie charts. The plugin assumes the data is \ncoming is as a single data value for each series, and each of those \nvalues is a positive value or zero (negative numbers don't make \nany sense and will cause strange effects). The data values do \nNOT need to be passed in as percentage values because it \ninternally calculates the total and percentages.\n\n* Created by Brian Medendorp, June 2009\n* Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars\n\n* Changes:\n\t2009-10-22: lineJoin set to round\n\t2009-10-23: IE full circle fix, donut\n\t2009-11-11: Added basic hover from btburnett3 - does not work in IE, and center is off in Chrome and Opera\n\t2009-11-17: Added IE hover capability submitted by Anthony Aragues\n\t2009-11-18: Added bug fix submitted by Xavi Ivars (issues with arrays when other JS libraries are included as well)\n\t\t\n\nAvailable options are:\nseries: {\n\tpie: {\n\t\tshow: true/false\n\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\toffset: {\n\t\t\ttop: integer value to move the pie up or down\n\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t},\n\t\tstroke: {\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\twidth: integer pixel width of the stroke\n\t\t},\n\t\tlabel: {\n\t\t\tshow: true/false, or 'auto'\n\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\tbackground: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\topacity: 0-1\n\t\t\t},\n\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t},\n\t\tcombine: {\n\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t}\n\t\thighlight: {\n\t\t\topacity: 0-1\n\t\t}\n\t}\n}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function ($) \n{\n\tfunction init(plot) // this is the \"body\" of the plugin\n\t{\n\t\tvar canvas = null;\n\t\tvar target = null;\n\t\tvar maxRadius = null;\n\t\tvar centerLeft = null;\n\t\tvar centerTop = null;\n\t\tvar total = 0;\n\t\tvar redraw = true;\n\t\tvar redrawAttempts = 10;\n\t\tvar shrink = 0.95;\n\t\tvar legendWidth = 0;\n\t\tvar processed = false;\n\t\tvar raw = false;\n\t\t\n\t\t// interactive variables\t\n\t\tvar highlights = [];\t\n\t\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\t\tplot.hooks.processOptions.push(checkPieEnabled);\n\t\tplot.hooks.bindEvents.push(bindEvents);\t\n\n\t\t// check to see if the pie plugin is enabled\n\t\tfunction checkPieEnabled(plot, options)\n\t\t{\n\t\t\tif (options.series.pie.show)\n\t\t\t{\n\t\t\t\t//disable grid\n\t\t\t\toptions.grid.show = false;\n\t\t\t\t\n\t\t\t\t// set labels.show\n\t\t\t\tif (options.series.pie.label.show=='auto')\n\t\t\t\t\tif (options.legend.show)\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius=='auto')\n\t\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\telse\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t\t\n\t\t\t\t// ensure sane tilt\n\t\t\t\tif (options.series.pie.tilt>1)\n\t\t\t\t\toptions.series.pie.tilt=1;\n\t\t\t\tif (options.series.pie.tilt<0)\n\t\t\t\t\toptions.series.pie.tilt=0;\n\t\t\t\n\t\t\t\t// add processData hook to do transformations on the data\n\t\t\t\tplot.hooks.processDatapoints.push(processDatapoints);\n\t\t\t\tplot.hooks.drawOverlay.push(drawOverlay);\t\n\t\t\t\t\n\t\t\t\t// add draw hook\n\t\t\t\tplot.hooks.draw.push(draw);\n\t\t\t}\n\t\t}\n\t\n\t\t// bind hoverable events\n\t\tfunction bindEvents(plot, eventHolder) \t\t\n\t\t{\t\t\n\t\t\tvar options = plot.getOptions();\n\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.hoverable)\n\t\t\t\teventHolder.unbind('mousemove').mousemove(onMouseMove);\n\t\t\t\t\n\t\t\tif (options.series.pie.show && options.grid.clickable)\n\t\t\t\teventHolder.unbind('click').click(onClick);\n\t\t}\t\n\t\t\n\n\t\t// debugging function that prints out an object\n\t\tfunction alertObject(obj)\n\t\t{\n\t\t\tvar msg = '';\n\t\t\tfunction traverse(obj, depth)\n\t\t\t{\n\t\t\t\tif (!depth)\n\t\t\t\t\tdepth = 0;\n\t\t\t\tfor (var i = 0; i < obj.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tfor (var j=0; j<depth; j++)\n\t\t\t\t\t\tmsg += '\\t';\n\t\t\t\t\n\t\t\t\t\tif( typeof obj[i] == \"object\")\n\t\t\t\t\t{\t// its an object\n\t\t\t\t\t\tmsg += ''+i+':\\n';\n\t\t\t\t\t\ttraverse(obj[i], depth+1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\t// its a value\n\t\t\t\t\t\tmsg += ''+i+': '+obj[i]+'\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttraverse(obj);\n\t\t\talert(msg);\n\t\t}\n\t\t\n\t\tfunction calcTotal(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tvar item = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (item)\n\t\t\t\t\ttotal += item;\n\t\t\t}\n\t\t}\t\n\t\t\n\t\tfunction processDatapoints(plot, series, data, datapoints) \n\t\t{\t\n\t\t\tif (!processed)\n\t\t\t{\n\t\t\t\tprocessed = true;\n\t\t\t\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction setupPie()\n\t\t{\n\t\t\tlegendWidth = target.children().filter('.legend').children().width();\n\t\t\n\t\t\t// calculate maximum radius and center point\n\t\t\tmaxRadius =  Math.min(canvas.width,(canvas.height/options.series.pie.tilt))/2;\n\t\t\tcenterTop = (canvas.height/2)+options.series.pie.offset.top;\n\t\t\tcenterLeft = (canvas.width/2);\n\t\t\t\n\t\t\tif (options.series.pie.offset.left=='auto')\n\t\t\t\tif (options.legend.position.match('w'))\n\t\t\t\t\tcenterLeft += legendWidth/2;\n\t\t\t\telse\n\t\t\t\t\tcenterLeft -= legendWidth/2;\n\t\t\telse\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t\t\t\n\t\t\tif (centerLeft<maxRadius)\n\t\t\t\tcenterLeft = maxRadius;\n\t\t\telse if (centerLeft>canvas.width-maxRadius)\n\t\t\t\tcenterLeft = canvas.width-maxRadius;\n\t\t}\n\t\t\n\t\tfunction fixData(data)\n\t\t{\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\tif (typeof(data[i].data)=='number')\n\t\t\t\t\tdata[i].data = [[1,data[i].data]];\n\t\t\t\telse if (typeof(data[i].data)=='undefined' || typeof(data[i].data[0])=='undefined')\n\t\t\t\t{\n\t\t\t\t\tif (typeof(data[i].data)!='undefined' && typeof(data[i].data.label)!='undefined')\n\t\t\t\t\t\tdata[i].label = data[i].data.label; // fix weirdness coming from flot\n\t\t\t\t\tdata[i].data = [[1,0]];\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t\t\n\t\tfunction combine(data)\n\t\t{\n\t\t\tdata = fixData(data);\n\t\t\tcalcTotal(data);\n\t\t\tvar combined = 0;\n\t\t\tvar numCombined = 0;\n\t\t\tvar color = options.series.pie.combine.color;\n\t\t\t\n\t\t\tvar newdata = [];\n\t\t\tfor (var i = 0; i < data.length; ++i)\n\t\t\t{\n\t\t\t\t// make sure its a number\n\t\t\t\tdata[i].data[0][1] = parseFloat(data[i].data[0][1]);\n\t\t\t\tif (!data[i].data[0][1])\n\t\t\t\t\tdata[i].data[0][1] = 0;\n\t\t\t\t\t\n\t\t\t\tif (data[i].data[0][1]/total<=options.series.pie.combine.threshold)\n\t\t\t\t{\n\t\t\t\t\tcombined += data[i].data[0][1];\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color)\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t}\t\t\t\t\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewdata.push({\n\t\t\t\t\t\tdata: [[1,data[i].data[0][1]]], \n\t\t\t\t\t\tcolor: data[i].color, \n\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\tangle: (data[i].data[0][1]*(Math.PI*2))/total,\n\t\t\t\t\t\tpercent: (data[i].data[0][1]/total*100)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (numCombined>0)\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1,combined]], \n\t\t\t\t\tcolor: color, \n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: (combined*(Math.PI*2))/total,\n\t\t\t\t\tpercent: (combined/total*100)\n\t\t\t\t});\n\t\t\treturn newdata;\n\t\t}\t\t\n\t\t\n\t\tfunction draw(plot, newCtx)\n\t\t{\n\t\t\tif (!target) return; // if no series were passed\n\t\t\tctx = newCtx;\n\t\t\n\t\t\tsetupPie();\n\t\t\tvar slices = plot.getData();\n\t\t\n\t\t\tvar attempts = 0;\n\t\t\tredraw = true;\n\t\t\twhile (redraw && attempts<redrawAttempts)\n\t\t\t{\n\t\t\t\tredraw = false;\n\t\t\t\tif (attempts>0)\n\t\t\t\t\tmaxRadius *= shrink;\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt<=0.8)\n\t\t\t\t\tdrawShadow();\n\t\t\t\tdrawPie();\n\t\t\t}\n\t\t\tif (attempts >= redrawAttempts) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend('<div class=\"error\">Could not draw pie with labels contained inside canvas</div>');\n\t\t\t}\n\t\t\t\n\t\t\tif ( plot.setSeries && plot.insertLegend )\n\t\t\t{\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\t\t\t\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\t\t\t\n\t\t\tfunction clear()\n\t\t\t{\n\t\t\t\tctx.clearRect(0,0,canvas.width,canvas.height);\n\t\t\t\ttarget.children().filter('.pieLabel, .pieLabelBackground').remove();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawShadow()\n\t\t\t{\n\t\t\t\tvar shadowLeft = 5;\n\t\t\t\tvar shadowTop = 15;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = 0.02;\n\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\t\n\t\t\t\tif (radius>=(canvas.width/2)-shadowLeft || radius*options.series.pie.tilt>=(canvas.height/2)-shadowTop || radius<=edge)\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = '#000';\n\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t\n\t\t\t\t//radius -= edge;\n\t\t\t\tfor (var i=1; i<=edge; i++)\n\t\t\t\t{\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0,0,radius,0,Math.PI*2,false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t\t\n\t\t\tfunction drawPie()\n\t\t\t{\n\t\t\t\tstartAngle = Math.PI*options.series.pie.startAngle;\n\t\t\t\t\n\t\t\t\t// set radius\n\t\t\t\tif (options.series.pie.radius>1)\n\t\t\t\t\tvar radius = options.series.pie.radius;\n\t\t\t\telse\n\t\t\t\t\tvar radius = maxRadius * options.series.pie.radius;\n\t\t\t\t\n\t\t\t\t// center and rotate to starting position\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\t\t\t\t\n\t\t\t\t// draw slices\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\t// draw slice outlines\n\t\t\t\tctx.save();\n\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\tctx.restore();\n\t\t\t\t\t\n\t\t\t\t// draw donut hole\n\t\t\t\tdrawDonutHole(ctx);\n\t\t\t\t\n\t\t\t\t// draw labels\n\t\t\t\tif (options.series.pie.label.show)\n\t\t\t\t\tdrawLabels();\n\t\t\t\t\n\t\t\t\t// restore to original state\n\t\t\t\tctx.restore();\n\t\t\t\t\n\t\t\t\tfunction drawSlice(angle, color, fill)\n\t\t\t\t{\t\n\t\t\t\t\tif (angle<=0)\n\t\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = 'round';\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\telse if ($.browser.msie)\n\t\t\t\t\t\tangle -= 0.0001;\n\t\t\t\t\t//ctx.arc(0,0,radius,0,angle,false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0,0,radius,currentAngle,currentAngle+angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\t\t\t\t\t\n\t\t\t\t\tif (fill)\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\telse\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfunction drawLabels()\n\t\t\t\t{\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\t\n\t\t\t\t\t// set radius\n\t\t\t\t\tif (options.series.pie.label.radius>1)\n\t\t\t\t\t\tvar radius = options.series.pie.label.radius;\n\t\t\t\t\telse\n\t\t\t\t\t\tvar radius = maxRadius * options.series.pie.label.radius;\n\t\t\t\t\t\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold*100)\n\t\t\t\t\t\t\tdrawLabel(slices[i], currentAngle, i);\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (slice.data[0][1]==0)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// format label text\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\t\t\t\t\t\tif (lf)\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\tif (plf)\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tvar halfAngle = ((startAngle+slice.angle) + startAngle)/2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar html = '<span class=\"pieLabel\" id=\"pieLabel'+index+'\" style=\"position:absolute;top:' + y + 'px;left:' + x + 'px;\">' + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\t\t\t\t\t\tvar label = target.children('#pieLabel'+index);\n\t\t\t\t\t\tvar labelTop = (y - label.height()/2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width()/2);\n\t\t\t\t\t\tlabel.css('top', labelTop);\n\t\t\t\t\t\tlabel.css('left', labelLeft);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\t\t\t\t\t\tif (0-labelTop>0 || 0-labelLeft>0 || canvas.height-(labelTop+label.height())<0 || canvas.width-(labelLeft+label.width())<0)\n\t\t\t\t\t\t\tredraw = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar pos = 'top:'+labelTop+'px;left:'+labelLeft+'px;';\n\t\t\t\t\t\t\t$('<div class=\"pieLabelBackground\" style=\"position:absolute;width:' + label.width() + 'px;height:' + label.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').insertBefore(label).css('opacity', options.series.pie.label.background.opacity);\n\t\t\t\t\t\t}\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\t\t\n\t\t// Placed here because it needs to be accessed from multiple locations \n\t\tfunction drawDonutHole(layer)\n\t\t{\n\t\t\t// draw donut hole\n\t\t\tif(options.series.pie.innerRadius > 0)\n\t\t\t{\n\t\t\t\t// subtract the center\n\t\t\t\tlayer.save();\n\t\t\t\tinnerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = 'destination-out'; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t\n\t\t\t\t// add inner stroke\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0,0,innerRadius,0,Math.PI*2,false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\t\t\n\t\t//-- Additional Interactive related functions --\n\t\t\n\t\tfunction isPointInPoly(poly, pt)\n\t\t{\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\t\t\n\t\tfunction findNearbySlice(mouseX, mouseY)\n\t\t{\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\t\t\t\n\t\t\tfor (var i = 0; i < slices.length; ++i) \n\t\t\t{\n\t\t\t\tvar s = slices[i];\t\n\t\t\t\t\n\t\t\t\tif(s.pie.show)\n\t\t\t\t{\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0,0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle,false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX-centerLeft;\n\t\t\t\t\ty = mouseY-centerTop;\n\t\t\t\t\tif(ctx.isPointInPath)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX-centerLeft, mouseY-centerTop))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t//alert('found slice!');\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround. \n\t\t\t\t\t\tp1X = (radius * Math.cos(s.startAngle));\n\t\t\t\t\t\tp1Y = (radius * Math.sin(s.startAngle));\n\t\t\t\t\t\tp2X = (radius * Math.cos(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp2Y = (radius * Math.sin(s.startAngle+(s.angle/4)));\n\t\t\t\t\t\tp3X = (radius * Math.cos(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp3Y = (radius * Math.sin(s.startAngle+(s.angle/2)));\n\t\t\t\t\t\tp4X = (radius * Math.cos(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp4Y = (radius * Math.sin(s.startAngle+(s.angle/1.5)));\n\t\t\t\t\t\tp5X = (radius * Math.cos(s.startAngle+s.angle));\n\t\t\t\t\t\tp5Y = (radius * Math.sin(s.startAngle+s.angle));\n\t\t\t\t\t\tarrPoly = [[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]];\n\t\t\t\t\t\tarrPoint = [x,y];\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\t\t\t\t\t\tif(isPointInPoly(arrPoly, arrPoint))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {datapoint: [s.percent, s.data], dataIndex: 0, series: s, seriesIndex: i};\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plothover', e);\n\t\t}\n\t\t\n        function onClick(e) \n\t\t{\n\t\t\ttriggerClickHoverEvent('plotclick', e);\n        }\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\t\tfunction triggerClickHoverEvent(eventname, e) \n\t\t{\n\t\t\tvar offset = plot.offset(),\n\t\t\t\tcanvasX = parseInt(e.pageX - offset.left),\n\t\t\t\tcanvasY =  parseInt(e.pageY - offset.top),\n\t\t\t\titem = findNearbySlice(canvasX, canvasY);\n\t\t\t\n\t\t\tif (options.grid.autoHighlight) \n\t\t\t{\n\t\t\t\t// clear auto-highlights\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t\t{\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series))\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// highlight the slice\n\t\t\tif (item) \n\t\t\t    highlight(item.series, eventname);\n\t\t\t\t\n\t\t\t// trigger any hover bind events\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [ pos, item ]);\t\n\t\t}\n\n\t\tfunction highlight(s, auto) \n\t\t{\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i == -1) \n\t\t\t{\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\telse if (!auto)\n\t\t\t\thighlights[i].auto = false;\n\t\t}\n\n\t\tfunction unhighlight(s) \n\t\t{\n\t\t\tif (s == null) \n\t\t\t{\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof s == \"number\")\n\t\t\t\ts = series[s];\n\n\t\t\tvar i = indexOfHighlight(s);\n\t\t\tif (i != -1) \n\t\t\t{\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) \n\t\t{\n\t\t\tfor (var i = 0; i < highlights.length; ++i) \n\t\t\t{\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) \n\t\t{\n\t\t\t//alert(options.series.pie.radius);\n\t\t\tvar options = plot.getOptions();\n\t\t\t//alert(options.series.pie.radius);\n\t\t\t\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\t\t\t\n\t\t\tfor (i = 0; i < highlights.length; ++i) \n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) \n\t\t\t{\n\t\t\t\tif (series.angle < 0) return;\n\t\t\t\t\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \"+options.series.pie.highlight.opacity+\")\"; // this is temporary until we have access to parseColor\n\t\t\t\t\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI*2) > 0.000000001)\n\t\t\t\t\toctx.moveTo(0,0); // Center of the pie\n\t\t\t\toctx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle,false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t\t\n\t\t}\t\n\t\t\n\t} // end init (plugin body)\n\t\n\t// define pie specific options and their default values\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: 'auto',\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius:0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 'auto'\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: '#FFF',\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: 'auto',\n\t\t\t\t\tformatter: function(label, slice){\n\t\t\t\t\t\treturn '<div style=\"font-size:x-small;text-align:center;padding:2px;color:'+slice.color+';\">'+label+'<br/>'+Math.round(slice.percent)+'%</div>';\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: 'Other'\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: '#FFF',\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.0\"\n\t});\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.resize.js",
    "content": "/*\nFlot plugin for automatically redrawing plots when the placeholder\nsize changes, e.g. on window resizes.\n\nIt works by listening for changes on the placeholder div (through the\njQuery resize event plugin) - if the size changes, it will redraw the\nplot.\n\nThere are no options. If you need to disable the plugin for some\nplots, you can just fix the size of their placeholders.\n*/\n\n\n/* Inline dependency: \n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k=\"setTimeout\",j=\"resize\",d=j+\"-special-event\",b=\"delay\",f=\"throttleWindow\";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);\n\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.selection.js",
    "content": "/*\nFlot plugin for selecting regions.\n\nThe plugin defines the following options:\n\n  selection: {\n    mode: null or \"x\" or \"y\" or \"xy\",\n    color: color\n  }\n\nSelection support is enabled by setting the mode to one of \"x\", \"y\" or\n\"xy\". In \"x\" mode, the user will only be able to specify the x range,\nsimilarly for \"y\" mode. For \"xy\", the selection becomes a rectangle\nwhere both ranges can be specified. \"color\" is color of the selection\n(if you need to change the color later on, you can get to it with\nplot.getOptions().selection.color).\n\nWhen selection support is enabled, a \"plotselected\" event will be\nemitted on the DOM element you passed into the plot function. The\nevent handler gets a parameter with the ranges selected on the axes,\nlike this:\n\n  placeholder.bind(\"plotselected\", function(event, ranges) {\n    alert(\"You selected \" + ranges.xaxis.from + \" to \" + ranges.xaxis.to)\n    // similar for yaxis - with multiple axes, the extra ones are in\n    // x2axis, x3axis, ...\n  });\n\nThe \"plotselected\" event is only fired when the user has finished\nmaking the selection. A \"plotselecting\" event is fired during the\nprocess with the same parameters as the \"plotselected\" event, in case\nyou want to know what's happening while it's happening,\n\nA \"plotunselected\" event with no arguments is emitted when the user\nclicks the mouse to remove the selection.\n\nThe plugin allso adds the following methods to the plot object:\n\n- setSelection(ranges, preventEvent)\n\n  Set the selection rectangle. The passed in ranges is on the same\n  form as returned in the \"plotselected\" event. If the selection mode\n  is \"x\", you should put in either an xaxis range, if the mode is \"y\"\n  you need to put in an yaxis range and both xaxis and yaxis if the\n  selection mode is \"xy\", like this:\n\n    setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } });\n\n  setSelection will trigger the \"plotselected\" event when called. If\n  you don't want that to happen, e.g. if you're inside a\n  \"plotselected\" handler, pass true as the second parameter. If you\n  are using multiple axes, you can specify the ranges on any of those,\n  e.g. as x2axis/x3axis/... instead of xaxis, the plugin picks the\n  first one it sees.\n  \n- clearSelection(preventEvent)\n\n  Clear the selection rectangle. Pass in true to avoid getting a\n  \"plotunselected\" event.\n\n- getSelection()\n\n  Returns the current selection in the same format as the\n  \"plotselected\" event. If there's currently no selection, the\n  function returns null.\n\n*/\n\n(function ($) {\n    function init(plot) {\n        var selection = {\n                first: { x: -1, y: -1}, second: { x: -1, y: -1},\n                show: false,\n                active: false\n            };\n\n        // FIXME: The drag handling implemented here should be\n        // abstracted out, there's some similar code from a library in\n        // the navigation plugin, this should be massaged a bit to fit\n        // the Flot cases here better and reused. Doing this would\n        // make this plugin much slimmer.\n        var savedhandlers = {};\n\n        var mouseUpHandler = null;\n        \n        function onMouseMove(e) {\n            if (selection.active) {\n                updateSelection(e);\n                \n                plot.getPlaceholder().trigger(\"plotselecting\", [ getSelection() ]);\n            }\n        }\n\n        function onMouseDown(e) {\n            if (e.which != 1)  // only accept left-click\n                return;\n            \n            // cancel out any text selections\n            document.body.focus();\n\n            // prevent text selection and drag in old-school browsers\n            if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) {\n                savedhandlers.onselectstart = document.onselectstart;\n                document.onselectstart = function () { return false; };\n            }\n            if (document.ondrag !== undefined && savedhandlers.ondrag == null) {\n                savedhandlers.ondrag = document.ondrag;\n                document.ondrag = function () { return false; };\n            }\n\n            setSelectionPos(selection.first, e);\n\n            selection.active = true;\n\n            // this is a bit silly, but we have to use a closure to be\n            // able to whack the same handler again\n            mouseUpHandler = function (e) { onMouseUp(e); };\n            \n            $(document).one(\"mouseup\", mouseUpHandler);\n        }\n\n        function onMouseUp(e) {\n            mouseUpHandler = null;\n            \n            // revert drag stuff for old-school browsers\n            if (document.onselectstart !== undefined)\n                document.onselectstart = savedhandlers.onselectstart;\n            if (document.ondrag !== undefined)\n                document.ondrag = savedhandlers.ondrag;\n\n            // no more dragging\n            selection.active = false;\n            updateSelection(e);\n\n            if (selectionIsSane())\n                triggerSelectedEvent();\n            else {\n                // this counts as a clear\n                plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n                plot.getPlaceholder().trigger(\"plotselecting\", [ null ]);\n            }\n\n            return false;\n        }\n\n        function getSelection() {\n            if (!selectionIsSane())\n                return null;\n\n            var r = {}, c1 = selection.first, c2 = selection.second;\n            $.each(plot.getAxes(), function (name, axis) {\n                if (axis.used) {\n                    var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); \n                    r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };\n                }\n            });\n            return r;\n        }\n\n        function triggerSelectedEvent() {\n            var r = getSelection();\n\n            plot.getPlaceholder().trigger(\"plotselected\", [ r ]);\n\n            // backwards-compat stuff, to be removed in future\n            if (r.xaxis && r.yaxis)\n                plot.getPlaceholder().trigger(\"selected\", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]);\n        }\n\n        function clamp(min, value, max) {\n            return value < min ? min: (value > max ? max: value);\n        }\n\n        function setSelectionPos(pos, e) {\n            var o = plot.getOptions();\n            var offset = plot.getPlaceholder().offset();\n            var plotOffset = plot.getPlotOffset();\n            pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width());\n            pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height());\n\n            if (o.selection.mode == \"y\")\n                pos.x = pos == selection.first ? 0 : plot.width();\n\n            if (o.selection.mode == \"x\")\n                pos.y = pos == selection.first ? 0 : plot.height();\n        }\n\n        function updateSelection(pos) {\n            if (pos.pageX == null)\n                return;\n\n            setSelectionPos(selection.second, pos);\n            if (selectionIsSane()) {\n                selection.show = true;\n                plot.triggerRedrawOverlay();\n            }\n            else\n                clearSelection(true);\n        }\n\n        function clearSelection(preventEvent) {\n            if (selection.show) {\n                selection.show = false;\n                plot.triggerRedrawOverlay();\n                if (!preventEvent)\n                    plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n            }\n        }\n\n        // function taken from markings support in Flot\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = plot.getAxes();\n\n            for (var k in axes) {\n                axis = axes[k];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? plot.getXAxes()[0] : plot.getYAxes()[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function setSelection(ranges, preventEvent) {\n            var axis, range, o = plot.getOptions();\n\n            if (o.selection.mode == \"y\") {\n                selection.first.x = 0;\n                selection.second.x = plot.width();\n            }\n            else {\n                range = extractRange(ranges, \"x\");\n\n                selection.first.x = range.axis.p2c(range.from);\n                selection.second.x = range.axis.p2c(range.to);\n            }\n\n            if (o.selection.mode == \"x\") {\n                selection.first.y = 0;\n                selection.second.y = plot.height();\n            }\n            else {\n                range = extractRange(ranges, \"y\");\n\n                selection.first.y = range.axis.p2c(range.from);\n                selection.second.y = range.axis.p2c(range.to);\n            }\n\n            selection.show = true;\n            plot.triggerRedrawOverlay();\n            if (!preventEvent && selectionIsSane())\n                triggerSelectedEvent();\n        }\n\n        function selectionIsSane() {\n            var minSize = 5;\n            return Math.abs(selection.second.x - selection.first.x) >= minSize &&\n                Math.abs(selection.second.y - selection.first.y) >= minSize;\n        }\n\n        plot.clearSelection = clearSelection;\n        plot.setSelection = setSelection;\n        plot.getSelection = getSelection;\n\n        plot.hooks.bindEvents.push(function(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.selection.mode != null) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mousedown(onMouseDown);\n            }\n        });\n\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            // draw selection\n            if (selection.show && selectionIsSane()) {\n                var plotOffset = plot.getPlotOffset();\n                var o = plot.getOptions();\n\n                ctx.save();\n                ctx.translate(plotOffset.left, plotOffset.top);\n\n                var c = $.color.parse(o.selection.color);\n\n                ctx.strokeStyle = c.scale('a', 0.8).toString();\n                ctx.lineWidth = 1;\n                ctx.lineJoin = \"round\";\n                ctx.fillStyle = c.scale('a', 0.4).toString();\n\n                var x = Math.min(selection.first.x, selection.second.x),\n                    y = Math.min(selection.first.y, selection.second.y),\n                    w = Math.abs(selection.second.x - selection.first.x),\n                    h = Math.abs(selection.second.y - selection.first.y);\n\n                ctx.fillRect(x, y, w, h);\n                ctx.strokeRect(x, y, w, h);\n\n                ctx.restore();\n            }\n        });\n        \n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mousedown\", onMouseDown);\n            \n            if (mouseUpHandler)\n                $(document).unbind(\"mouseup\", mouseUpHandler);\n        });\n\n    }\n\n    $.plot.plugins.push({\n        init: init,\n        options: {\n            selection: {\n                mode: null, // one of null, \"x\", \"y\" or \"xy\"\n                color: \"#e8cfac\"\n            }\n        },\n        name: 'selection',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.stack.js",
    "content": "/*\nFlot plugin for stacking data sets, i.e. putting them on top of each\nother, for accumulative graphs.\n\nThe plugin assumes the data is sorted on x (or y if stacking\nhorizontally). For line charts, it is assumed that if a line has an\nundefined gap (from a null point), then the line above it should have\nthe same gap - insert zeros instead of \"null\" if you want another\nbehaviour. This also holds for the start and end of the chart. Note\nthat stacking a mix of positive and negative values in most instances\ndoesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to\nthe same key (which can be any number or string or just \"true\"). To\nspecify the default stack, you can set\n\n  series: {\n    stack: null or true or key (number/string)\n  }\n\nor specify it for a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], stack: true }])\n  \nThe stacking order is determined by the order of the data series in\nthe array (later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding\nan offset to the y value. For line series, extra data points are\ninserted through interpolation. If there's a second y value, it's also\nadjusted (e.g for bar charts or filled areas).\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.symbol.js",
    "content": "/*\nFlot plugin that adds some extra symbols for plotting points.\n\nThe symbols are accessed as strings through the standard symbol\nchoice:\n\n  series: {\n      points: {\n          symbol: \"square\" // or \"diamond\", \"triangle\", \"cross\"\n      }\n  }\n\n*/\n\n(function ($) {\n    function processRawData(plot, series, datapoints) {\n        // we normalize the area of each symbol so it is approximately the\n        // same as a circle of the given radius\n\n        var handlers = {\n            square: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.rect(x - size, y - size, size + size, size + size);\n            },\n            diamond: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 2s^2  =>  s = r * sqrt(pi/2)\n                var size = radius * Math.sqrt(Math.PI / 2);\n                ctx.moveTo(x - size, y);\n                ctx.lineTo(x, y - size);\n                ctx.lineTo(x + size, y);\n                ctx.lineTo(x, y + size);\n                ctx.lineTo(x - size, y);\n            },\n            triangle: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))\n                var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));\n                var height = size * Math.sin(Math.PI / 3);\n                ctx.moveTo(x - size/2, y + height/2);\n                ctx.lineTo(x + size/2, y + height/2);\n                if (!shadow) {\n                    ctx.lineTo(x, y - height/2);\n                    ctx.lineTo(x - size/2, y + height/2);\n                }\n            },\n            cross: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.moveTo(x - size, y - size);\n                ctx.lineTo(x + size, y + size);\n                ctx.moveTo(x - size, y + size);\n                ctx.lineTo(x + size, y - size);\n            }\n        }\n\n        var s = series.points.symbol;\n        if (handlers[s])\n            series.points.symbol = handlers[s];\n    }\n    \n    function init(plot) {\n        plot.hooks.processDatapoints.push(processRawData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        name: 'symbols',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.threshold.js",
    "content": "/*\nFlot plugin for thresholding data. Controlled through the option\n\"threshold\" in either the global series options\n\n  series: {\n    threshold: {\n      below: number\n      color: colorspec\n    }\n  }\n\nor in a specific series\n\n  $.plot($(\"#placeholder\"), [{ data: [ ... ], threshold: { ... }}])\n\nThe data points below \"below\" are drawn with the specified color. This\nmakes it easy to mark points below 0, e.g. for budget data.\n\nInternally, the plugin works by splitting the data into two series,\nabove and below the threshold. The extra series below the threshold\nwill have its label cleared and the special \"originSeries\" attribute\nset to the original series. You may need to check for this in hover\nevents.\n*/\n\n(function ($) {\n    var options = {\n        series: { threshold: null } // or { below: number, color: color spec}\n    };\n    \n    function init(plot) {\n        function thresholdData(plot, s, datapoints) {\n            if (!s.threshold)\n                return;\n            \n            var ps = datapoints.pointsize, i, x, y, p, prevp,\n                thresholded = $.extend({}, s); // note: shallow copy\n\n            thresholded.datapoints = { points: [], pointsize: ps };\n            thresholded.label = null;\n            thresholded.color = s.threshold.color;\n            thresholded.threshold = null;\n            thresholded.originSeries = s;\n            thresholded.data = [];\n\n            var below = s.threshold.below,\n                origpoints = datapoints.points,\n                addCrossingPoints = s.lines.show;\n\n            threspoints = [];\n            newpoints = [];\n\n            for (i = 0; i < origpoints.length; i += ps) {\n                x = origpoints[i]\n                y = origpoints[i + 1];\n\n                prevp = p;\n                if (y < below)\n                    p = threspoints;\n                else\n                    p = newpoints;\n\n                if (addCrossingPoints && prevp != p && x != null\n                    && i > 0 && origpoints[i - ps] != null) {\n                    var interx = (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]) * (below - y) + x;\n                    prevp.push(interx);\n                    prevp.push(below);\n                    for (m = 2; m < ps; ++m)\n                        prevp.push(origpoints[i + m]);\n                    \n                    p.push(null); // start new segment\n                    p.push(null);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                    p.push(interx);\n                    p.push(below);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                }\n\n                p.push(x);\n                p.push(y);\n            }\n\n            datapoints.points = newpoints;\n            thresholded.datapoints.points = threspoints;\n            \n            if (thresholded.datapoints.points.length > 0)\n                plot.getData().push(thresholded);\n                \n            // FIXME: there are probably some edge cases left in bars\n        }\n        \n        plot.hooks.processDatapoints.push(thresholdData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'threshold',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.flot.tooltip.js",
    "content": "/*\n * jquery.flot.tooltip\n *\n * desc:\tcreate tooltip with values of hovered point on the graph, \n\t\t\t\t\tsupport many series, time mode, stacking and pie charts\n\t\t\t\t\tyou can set custom tip content (also with use of HTML tags) and precision of values\n * version:\t0.4.4\n * author: \tKrzysztof Urbas @krzysu [myviews.pl] with help of @ismyrnow\n * website:\thttps://github.com/krzysu/flot.tooltip\n * \n * released under MIT License, 2012\n*/\n\n(function ($) {\n\tvar options = {\n\t\ttooltip: false, //boolean\n\t\ttooltipOpts: {\n\t\t\tcontent: \"%s | X: %x | Y: %y.2\", //%s -> series label, %x -> X value, %y -> Y value, %x.2 -> precision of X value, %p -> percent\n\t\t\tdateFormat: \"%y-%0m-%0d\",\n\t\t\tshifts: {\n\t\t\t\tx: 10,\n\t\t\t\ty: 20\n\t\t\t},\n\t\t\tdefaultTheme: true\n\t\t}\n\t};\n\n\tvar init = function(plot) {\n\n\t\tvar tipPosition = {x: 0, y: 0};\n\t\tvar opts = plot.getOptions();\n\t\t\n\t\tvar updateTooltipPosition = function(pos) {\n\t\t\ttipPosition.x = pos.x;\n\t\t\ttipPosition.y = pos.y;\n\t\t};\n\t\t\n\t\tvar onMouseMove = function(e) {\n\t\t\t\t\t\t\n\t\t\tvar pos = {x: 0, y: 0};\n\n\t\t\tpos.x = e.pageX;\n\t\t\tpos.y = e.pageY;\n\n\t\t\tupdateTooltipPosition(pos);\n\t\t};\n\t\t\n\t\tvar timestampToDate = function(tmst) {\n\n\t\t\tvar theDate = new Date(tmst);\n\t\t\t\n\t\t\treturn $.plot.formatDate(theDate, opts.tooltipOpts.dateFormat);\n\t\t};\n\t\t\n\t\tplot.hooks.bindEvents.push(function (plot, eventHolder) {\n            \n\t\t\tvar to = opts.tooltipOpts;\n\t\t\tvar placeholder = plot.getPlaceholder();\n\t\t\tvar $tip;\n\t\t\t\n\t\t\tif (opts.tooltip === false) return;\n\n\t\t\tif( $('#flotTip').length > 0 ){\n\t\t\t\t$tip = $('#flotTip');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$tip = $('<div />').attr('id', 'flotTip');\n\t\t\t\t$tip.appendTo('body').hide().css({position: 'absolute'});\n\t\t\t\n\t\t\t\tif(to.defaultTheme) {\n\t\t\t\t\t$tip.css({\n\t\t\t\t\t\t'background': '#fff',\n\t\t\t\t\t\t'z-index': '100',\n\t\t\t\t\t\t'padding': '0.4em 0.6em',\n\t\t\t\t\t\t'border-radius': '0.5em',\n\t\t\t\t\t\t'font-size': '0.8em',\n\t\t\t\t\t\t'border': '1px solid #111'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t$(placeholder).bind(\"plothover\", function (event, pos, item) {\n\t\t\t\tif (item) {\t\t\t\t\t\n\t\t\t\t\tvar tipText;\n\n\t\t\t\t\tif(opts.xaxis.mode === \"time\" || opts.xaxes[0].mode === \"time\") {\n\t\t\t\t\t\ttipText = stringFormat(to.content, item, timestampToDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttipText = stringFormat(to.content, item);\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$tip.html( tipText ).css({left: tipPosition.x + to.shifts.x, top: tipPosition.y + to.shifts.y}).show();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$tip.hide().html('');\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\teventHolder.mousemove(onMouseMove);\n\t\t});\n\t\t\n\t\tvar stringFormat = function(content, item, fnct) {\n\t\t\n\t\t\tvar percentPattern = /%p\\.{0,1}(\\d{0,})/;\n\t\t\tvar seriesPattern = /%s/;\n\t\t\tvar xPattern = /%x\\.{0,1}(\\d{0,})/;\n\t\t\tvar yPattern = /%y\\.{0,1}(\\d{0,})/;\n\t\t\t\n\t\t\t//percent match\n\t\t\tif( typeof (item.series.percent) !== 'undefined' ) {\n\t\t\t\tcontent = adjustValPrecision(percentPattern, content, item.series.percent);\n\t\t\t}\n\t\t\t//series match\n\t\t\tif( typeof(item.series.label) !== 'undefined' ) {\n\t\t\t\tcontent = content.replace(seriesPattern, item.series.label);\n\t\t\t}\n\t\t\t// xVal match\n\t\t\tif( typeof(fnct) === 'function' ) {\n\t\t\t\tcontent = content.replace(xPattern, fnct(item.series.data[item.dataIndex][0]) );\n\t\t\t}\n\t\t\telse if( typeof item.series.data[item.dataIndex][0] === 'number' ) {\n\t\t\t\tcontent = adjustValPrecision(xPattern, content, item.series.data[item.dataIndex][0]);\n\t\t\t}\n\t\t\t// yVal match\n\t\t\tif( typeof item.series.data[item.dataIndex][1] === 'number' ) {\n\t\t\t\tcontent = adjustValPrecision(yPattern, content, item.series.data[item.dataIndex][1]);\n\t\t\t}\n\n\t\t\treturn content;\n\t\t};\n\t\t\n\t\tvar adjustValPrecision = function(pattern, content, value) {\n\t\t\n\t\t\tvar precision;\n\t\t\tif( content.match(pattern) !== 'null' ) {\n\t\t\t\tif(RegExp.$1 !== '') {\n\t\t\t\t\tprecision = RegExp.$1;\n\t\t\t\t\tvalue = value.toFixed(precision)\n\t\t\t\t}\n\t\t\t\tcontent = content.replace(pattern, value);\n\t\t\t}\n\t\t\n\t\t\treturn content;\n\t\t};\n\t}\n    \n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'tooltip',\n\t\tversion: '0.4.4'\n\t});\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/charts/flot/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/CHANGELOG.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html>\n<head><title>Farbtastic: Changelog</title></head>\n<body>\n  <h1 class=\"title\">Farbtastic: Changelog</h1>\n\n    <h2>1.2 - 2007/01/08</h2>\n    <ul>\n      <li>Fixed bug with linking multiple fields with the same value.</li>\n    </ul>\n    <h2>1.1 - 2006/10/27</h2>\n    <ul>\n      <li>Work around for the transparent PNGs in Internet Explorer.</li>\n      <li>Better mouse handling code to accomodate CSS-based layouts better.</li>\n    </ul>\n    <h2>1.0 - 2006/07/14</h2>\n    <ul>\n      <li>Initial release.</li>\n    </ul>\n\n    <p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n    <p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/LICENSE.txt",
    "content": "\n        GNU GENERAL PUBLIC LICENSE\n           Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n          Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n        GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n          NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n         END OF TERMS AND CONDITIONS\n\n      How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/README.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html>\n<head><title>Farbtastic: jQuery color picker plug-in</title></head>\n<body>\n        <h1 class=\"title\">Farbtastic: jQuery color picker plug-in</h1>\n    <div class=\"content\"><p>Farbtastic is a <a href=\"http://www.jquery.com/\">jQuery</a> plug-in that can add one or more color picker widgets into a page. Each widget is then linked to an existing element (e.g. a text field) and will update the element's value when a color is selected.</p>\n\n<p>Farbtastic uses layered transparent PNGs to render a saturation/luminance gradient inside of a hue circle. No Flash or pixel-sized divs are used.</p>\n\n<p>Farbtastic was written by <a href=\"http://www.acko.net/dev/farbtastic\">Steven Wittens</a> and is licensed under the GPL.</p>\n\n<h2>Basic Usage</h2>\n<ol>\n<li>Include farbtastic.js and farbtastic.css in your HTML:<br />\n<div class=\"codeblock\"><code>&lt;script type=&quot;text/javascript&quot; src=&quot;farbtastic.js&quot;&gt;&lt;/script&gt;<br />&lt;link rel=&quot;stylesheet&quot; href=&quot;farbtastic.css&quot; type=&quot;text/css&quot; /&gt;</code></div>\n</li>\n<li>Add a placeholder div and a text field to your HTML, and give each an ID:<br />\n<div class=\"codeblock\"><code>&lt;form&gt;&lt;input type=&quot;text&quot; id=&quot;color&quot; name=&quot;color&quot; value=&quot;#123456&quot; /&gt;&lt;/form&gt;<br />&lt;div id=&quot;colorpicker&quot;&gt;&lt;/div&gt;</code></div>\n</li>\n<li>Add a ready() handler to the document which initializes the color picker and link it to the text field with the following syntax:<br />\n<div class=\"codeblock\"><code>&lt;script type=&quot;text/javascript&quot;&gt;<br />&nbsp; $(document).ready(function() {<br />&nbsp; &nbsp; $(&#039;#colorpicker&#039;).farbtastic(&#039;#color&#039;);<br />&nbsp; });<br />&lt;/script&gt;</code></div>\n</li>\n</ol>\n<p>See demo1.html and demo2.html for an example (jquery.js is not included!).</p>\n<h2>Styling</h2>\n<p>The color picker is a block-level element and is 195x195 pixels large. You can control the position by styling your placeholder (e.g. floating it).</p>\n<p>Note that the black/white gradients inside wheel.png and mask.png were generated programmatically and cannot be recreated easily in an image editing program.</p>\n<h2>Advanced Usage</h2>\n<h3>jQuery Method</h3>\n<dl>\n<dt>$(...).farbtastic()<br />\n$(...).farbtastic(callback)</dt>\n<dd>This creates color pickers in the selected objects. <code>callback</code> is optional and can be a:</p>\n<ul>\n<li><em>DOM Node</em>, <em>jQuery object</em> or <em>jQuery selector</em>: the color picker will be linked to the selected element(s) by syncing the value (for form elements) and color (all elements).</li>\n<li><em>Function</em>: this function will be called whenever the user chooses a different color.</dd>\n</dl>\n<h3>Object</h3>\n<dl>\n<dt>$.farbtastic(placeholder)<br />\n$.farbtastic(placeholder, callback)<br />\n</dt>\n<dd>Invoking <code>$.farbtastic(placeholder)</code> is the same as using <code>$(placeholder).farbtastic()</code> except that the Farbtastic object is returned instead of the jQuery object. This allows you to use the Farbtastic methods and properties below.</p>\n<p>Note that there is only one Farbtastic object per placeholder. If you call <code>$.farbtastic(placeholder)</code> twice <em>with the same placeholder</em>, you will get the same object back each time.</p>\n<p>The optional <code>callback</code> argument behaves exactly as for the jQuery method.<br />\n</dd>\n</dl>\n</dd>\n</dl>\n<h3>Methods</h3>\n<dl>\n<dt>.linkTo(callback)</dt>\n<dd>Allows you to set a new callback. Any existing callbacks are removed. See above for the meaning of <code>callback</code>.</dd>\n<dt>.setColor(string)</dt>\n<dd>Sets the picker color to the given color in hex representation.</dd>\n<dt>.setColor([h, s, l])</dt>\n<dd>Sets the picker color to the given color in normalized HSL (0..1 scale).</dd>\n</dl>\n<h3>Properties</h3>\n<dl>\n<dt>.linked</dt>\n<dd>The elements (jQuery object) or callback function this picker is linked to.</dd>\n<dt>.color</dt>\n<dd>Current color in hex representation.</dd>\n<dt>.hsl</dt>\n<dd>Current color in normalized HSL.</dd>\n</dl>\n</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/demo1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html>\n<head>\n <title>Farbtastic</title>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"farbtastic.js\"></script>\n <link rel=\"stylesheet\" href=\"farbtastic.css\" type=\"text/css\" />\n <script type=\"text/javascript\" charset=\"utf-8\">\n  $(document).ready(function() {\n    $('#demo').hide();\n    $('#picker').farbtastic('#color');\n  });\n </script>\n</head>\n<body>\n<h1>jQuery Color Picker: Farbtastic</h1>\n\n<div id=\"demo\" style=\"color: red; font-size: 1.4em\">jQuery.js is not present. You must install jQuery in this folder for the demo to work.</div>\n\n<form action=\"\" style=\"width: 400px;\">\n  <div class=\"form-item\"><label for=\"color\">Color:</label><input type=\"text\" id=\"color\" name=\"color\" value=\"#123456\" /></div><div id=\"picker\"></div>\n</form>\n\n<p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n<p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/demo2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html>\n<head>\n <title>Farbtastic</title>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"farbtastic.js\"></script>\n <link rel=\"stylesheet\" href=\"farbtastic.css\" type=\"text/css\" />\n <style type=\"text/css\" media=\"screen\">\n   .colorwell {\n     border: 2px solid #fff;\n     width: 6em;\n     text-align: center;\n     cursor: pointer;\n   }\n   body .colorwell-selected {\n     border: 2px solid #000;\n     font-weight: bold;\n   }\n </style>\n \n <script type=\"text/javascript\" charset=\"utf-8\">\n  $(document).ready(function() {\n    $('#demo').hide();\n    var f = $.farbtastic('#picker');\n    var p = $('#picker').css('opacity', 0.25);\n    var selected;\n    $('.colorwell')\n      .each(function () { f.linkTo(this); $(this).css('opacity', 0.75); })\n      .focus(function() {\n        if (selected) {\n          $(selected).css('opacity', 0.75).removeClass('colorwell-selected');\n        }\n        f.linkTo(this);\n        p.css('opacity', 1);\n        $(selected = this).css('opacity', 1).addClass('colorwell-selected');\n      });\n  });\n </script>\n</head>\n<body>\n<h1>jQuery Color Picker: Farbtastic</h1>\n\n<div id=\"demo\" style=\"color: red; font-size: 1.4em\">jQuery.js is not present. You must install jQuery in this folder for the demo to work.</div>\n\n<form action=\"\" style=\"width: 500px;\">\n  <div id=\"picker\" style=\"float: right;\"></div>\n  <div class=\"form-item\"><label for=\"color1\">Color 1:</label><input type=\"text\" id=\"color1\" name=\"color1\" class=\"colorwell\" value=\"#123456\" /></div>\n  <div class=\"form-item\"><label for=\"color2\">Color 2:</label><input type=\"text\" id=\"color2\" name=\"color2\" class=\"colorwell\" value=\"#123456\" /></div>\n  <div class=\"form-item\"><label for=\"color3\">Color 3:</label><input type=\"text\" id=\"color3\" name=\"color3\" class=\"colorwell\" value=\"#123456\" /></div>\n  \n</form>\n\n<p>More info on <a href=\"http://www.acko.net/dev/farbtastic\">Acko.net</a>.</p>\n<p>Created by <a href=\"http://www.acko.net/\">Steven Wittens</a>.</p>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.css",
    "content": "/**\n * Farbtastic Color Picker 1.2\n * © 2008 Steven Wittens\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n */\n.farbtastic {\n  position: relative;\n  margin: 0 auto;\n}\n.farbtastic * {\n  position: absolute;\n  cursor: crosshair;\n}\n.farbtastic, .farbtastic .wheel {\n  width: 195px;\n  height: 195px;\n}\n.farbtastic .color, .farbtastic .overlay {\n  top: 47px;\n  left: 47px;\n  width: 101px;\n  height: 101px;\n}\n.farbtastic .wheel {\n  background: url(wheel.png) no-repeat;\n  width: 195px;\n  height: 195px;\n}\n.farbtastic .overlay {\n  background: url(mask.png) no-repeat;\n}\n.farbtastic .marker {\n  width: 17px;\n  height: 17px;\n  margin: -8px 0 0 -8px;\n  overflow: hidden; \n  background: url(marker.png) no-repeat;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/farbtastic/farbtastic.js",
    "content": "/**\n * Farbtastic Color Picker 1.2\n * © 2008 Steven Wittens\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n */\n\njQuery.fn.farbtastic = function (callback) {\n  $.farbtastic(this, callback);\n  return this;\n};\n\njQuery.farbtastic = function (container, callback) {\n  var container = $(container).get(0);\n  return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));\n}\n\njQuery._farbtastic = function (container, callback) {\n  // Store farbtastic object\n  var fb = this;\n\n  // Insert markup\n  $(container).html('<div class=\"farbtastic\"><div class=\"color\"></div><div class=\"wheel\"></div><div class=\"overlay\"></div><div class=\"h-marker marker\"></div><div class=\"sl-marker marker\"></div></div>');\n  var e = $('.farbtastic', container);\n  fb.wheel = $('.wheel', container).get(0);\n  // Dimensions\n  fb.radius = 84;\n  fb.square = 100;\n  fb.width = 194;\n\n  // Fix background PNGs in IE6\n  if (navigator.appVersion.match(/MSIE [0-6]\\./)) {\n    $('*', e).each(function () {\n      if (this.currentStyle.backgroundImage != 'none') {\n        var image = this.currentStyle.backgroundImage;\n        image = this.currentStyle.backgroundImage.substring(5, image.length - 2);\n        $(this).css({\n          'backgroundImage': 'none',\n          'filter': \"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='\" + image + \"')\"\n        });\n      }\n    });\n  }\n\n  /**\n   * Link to the given element(s) or callback.\n   */\n  fb.linkTo = function (callback) {\n    // Unbind previous nodes\n    if (typeof fb.callback == 'object') {\n      $(fb.callback).unbind('keyup', fb.updateValue);\n    }\n\n    // Reset color\n    fb.color = null;\n\n    // Bind callback or elements\n    if (typeof callback == 'function') {\n      fb.callback = callback;\n    }\n    else if (typeof callback == 'object' || typeof callback == 'string') {\n      fb.callback = $(callback);\n      fb.callback.bind('keyup', fb.updateValue);\n      if (fb.callback.get(0).value) {\n        fb.setColor(fb.callback.get(0).value);\n      }\n    }\n    return this;\n  }\n  fb.updateValue = function (event) {\n    if (this.value && this.value != fb.color) {\n      fb.setColor(this.value);\n    }\n  }\n\n  /**\n   * Change color with HTML syntax #123456\n   */\n  fb.setColor = function (color) {\n    var unpack = fb.unpack(color);\n    if (fb.color != color && unpack) {\n      fb.color = color;\n      fb.rgb = unpack;\n      fb.hsl = fb.RGBToHSL(fb.rgb);\n      fb.updateDisplay();\n    }\n    return this;\n  }\n\n  /**\n   * Change color with HSL triplet [0..1, 0..1, 0..1]\n   */\n  fb.setHSL = function (hsl) {\n    fb.hsl = hsl;\n    fb.rgb = fb.HSLToRGB(hsl);\n    fb.color = fb.pack(fb.rgb);\n    fb.updateDisplay();\n    return this;\n  }\n\n  /////////////////////////////////////////////////////\n\n  /**\n   * Retrieve the coordinates of the given event relative to the center\n   * of the widget.\n   */\n  fb.widgetCoords = function (event) {\n    var x, y;\n    var el = event.target || event.srcElement;\n    var reference = fb.wheel;\n\n    if (typeof event.offsetX != 'undefined') {\n      // Use offset coordinates and find common offsetParent\n      var pos = { x: event.offsetX, y: event.offsetY };\n\n      // Send the coordinates upwards through the offsetParent chain.\n      var e = el;\n      while (e) {\n        e.mouseX = pos.x;\n        e.mouseY = pos.y;\n        pos.x += e.offsetLeft;\n        pos.y += e.offsetTop;\n        e = e.offsetParent;\n      }\n\n      // Look for the coordinates starting from the wheel widget.\n      var e = reference;\n      var offset = { x: 0, y: 0 }\n      while (e) {\n        if (typeof e.mouseX != 'undefined') {\n          x = e.mouseX - offset.x;\n          y = e.mouseY - offset.y;\n          break;\n        }\n        offset.x += e.offsetLeft;\n        offset.y += e.offsetTop;\n        e = e.offsetParent;\n      }\n\n      // Reset stored coordinates\n      e = el;\n      while (e) {\n        e.mouseX = undefined;\n        e.mouseY = undefined;\n        e = e.offsetParent;\n      }\n    }\n    else {\n      // Use absolute coordinates\n      var pos = fb.absolutePosition(reference);\n      x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;\n      y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;\n    }\n    // Subtract distance to middle\n    return { x: x - fb.width / 2, y: y - fb.width / 2 };\n  }\n\n  /**\n   * Mousedown handler\n   */\n  fb.mousedown = function (event) {\n    // Capture mouse\n    if (!document.dragging) {\n      $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);\n      document.dragging = true;\n    }\n\n    // Check which area is being dragged\n    var pos = fb.widgetCoords(event);\n    fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;\n\n    // Process\n    fb.mousemove(event);\n    return false;\n  }\n\n  /**\n   * Mousemove handler\n   */\n  fb.mousemove = function (event) {\n    // Get coordinates relative to color picker center\n    var pos = fb.widgetCoords(event);\n\n    // Set new HSL parameters\n    if (fb.circleDrag) {\n      var hue = Math.atan2(pos.x, -pos.y) / 6.28;\n      if (hue < 0) hue += 1;\n      fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);\n    }\n    else {\n      var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));\n      var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));\n      fb.setHSL([fb.hsl[0], sat, lum]);\n    }\n    return false;\n  }\n\n  /**\n   * Mouseup handler\n   */\n  fb.mouseup = function () {\n    // Uncapture mouse\n    $(document).unbind('mousemove', fb.mousemove);\n    $(document).unbind('mouseup', fb.mouseup);\n    document.dragging = false;\n  }\n\n  /**\n   * Update the markers and styles\n   */\n  fb.updateDisplay = function () {\n    // Markers\n    var angle = fb.hsl[0] * 6.28;\n    $('.h-marker', e).css({\n      left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',\n      top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'\n    });\n\n    $('.sl-marker', e).css({\n      left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',\n      top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'\n    });\n\n    // Saturation/Luminance gradient\n    $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));\n\n    // Linked elements or callback\n    if (typeof fb.callback == 'object') {\n      // Set background/foreground color\n      $(fb.callback).css({\n        backgroundColor: fb.color,\n        color: fb.hsl[2] > 0.5 ? '#000' : '#fff'\n      });\n\n      // Change linked value\n      $(fb.callback).each(function() {\n        if (this.value && this.value != fb.color) {\n          this.value = fb.color;\n        }\n      });\n    }\n    else if (typeof fb.callback == 'function') {\n      fb.callback.call(fb, fb.color);\n    }\n  }\n\n  /**\n   * Get absolute position of element\n   */\n  fb.absolutePosition = function (el) {\n    var r = { x: el.offsetLeft, y: el.offsetTop };\n    // Resolve relative to offsetParent\n    if (el.offsetParent) {\n      var tmp = fb.absolutePosition(el.offsetParent);\n      r.x += tmp.x;\n      r.y += tmp.y;\n    }\n    return r;\n  };\n\n  /* Various color utility functions */\n  fb.pack = function (rgb) {\n    var r = Math.round(rgb[0] * 255);\n    var g = Math.round(rgb[1] * 255);\n    var b = Math.round(rgb[2] * 255);\n    return '#' + (r < 16 ? '0' : '') + r.toString(16) +\n           (g < 16 ? '0' : '') + g.toString(16) +\n           (b < 16 ? '0' : '') + b.toString(16);\n  }\n\n  fb.unpack = function (color) {\n    if (color.length == 7) {\n      return [parseInt('0x' + color.substring(1, 3)) / 255,\n        parseInt('0x' + color.substring(3, 5)) / 255,\n        parseInt('0x' + color.substring(5, 7)) / 255];\n    }\n    else if (color.length == 4) {\n      return [parseInt('0x' + color.substring(1, 2)) / 15,\n        parseInt('0x' + color.substring(2, 3)) / 15,\n        parseInt('0x' + color.substring(3, 4)) / 15];\n    }\n  }\n\n  fb.HSLToRGB = function (hsl) {\n    var m1, m2, r, g, b;\n    var h = hsl[0], s = hsl[1], l = hsl[2];\n    m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;\n    m1 = l * 2 - m2;\n    return [this.hueToRGB(m1, m2, h+0.33333),\n        this.hueToRGB(m1, m2, h),\n        this.hueToRGB(m1, m2, h-0.33333)];\n  }\n\n  fb.hueToRGB = function (m1, m2, h) {\n    h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);\n    if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n    if (h * 2 < 1) return m2;\n    if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;\n    return m1;\n  }\n\n  fb.RGBToHSL = function (rgb) {\n    var min, max, delta, h, s, l;\n    var r = rgb[0], g = rgb[1], b = rgb[2];\n    min = Math.min(r, Math.min(g, b));\n    max = Math.max(r, Math.max(g, b));\n    delta = max - min;\n    l = (min + max) / 2;\n    s = 0;\n    if (l > 0 && l < 1) {\n      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));\n    }\n    h = 0;\n    if (delta > 0) {\n      if (max == r && max != g) h += (g - b) / delta;\n      if (max == g && max != b) h += (2 + (b - r) / delta);\n      if (max == b && max != r) h += (4 + (r - g) / delta);\n      h /= 6;\n    }\n    return [h, s, l];\n  }\n\n  // Install mousedown handler (the others are set on the document on-demand)\n  $('*', e).mousedown(fb.mousedown);\n\n    // Init color\n  fb.setColor('#000000');\n\n  // Set linked elements/callback\n  if (callback) {\n    fb.linkTo(callback);\n  }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/component.json",
    "content": "{\n    \"name\"         : \"jquery-miniColors\",\n    \"version\"      : \"2.0 beta\",\n    \"description\"  : \"jQuery MiniColors Plugin\",\n    \"homepage\"     : \"\",\n    \"main\"         : [ \"./jquery.miniColors.js\", \"./jquery.miniColors.css\" ],\n    \"dependencies\" : {\n        \"jquery\" : \">= 1.7.x\"\n    },\n    \"keywords\"     : [\n    ],\n    \"author\" : {\n        \"name\" : \"Cory LaViska\",\n        \"web\"  : \"http://www.abeautifulsite.net/\"\n    },\n    \"license\": [\n        \"http://www.opensource.org/licenses/mit-license.php\",\n        \"http://opensource.org/licenses/gpl-2.0.php\"\n    ]\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>jQuery MiniColors</title>\n\t<meta name=\"description\" content=\"A tiny color picker built on jQuery\" />\n\t<meta charset=\"utf-8\" />\n\t<meta name=\"viewport\" content=\"initial-scale=1.0\" />\n\t<link rel=\"stylesheet\" href=\"jquery.minicolors.css\" />\n\t<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\"></script>\n\t<script src=\"jquery.minicolors.js\"></script>\n\t<style>\n\t\t\n\t\tHTML,\n\t\tBODY {\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t}\n\t\t\n\t\tBODY {\n\t\t\tfont: 14px sans-serif;\n\t\t\tcolor: #666;\n\t\t\tline-height: 1.7;\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 0 20px;\n\t\t\tpadding-bottom: 32px;\n\t\t}\n\t\t\n\t\tH1, H2, H3 {\n\t\t\tfont-family: Georgia, serif;\n\t\t\tfont-weight: normal;\n\t\t\tcolor: black;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t\n\t\tH1, H2, H3, P {\n\t\t\tmargin: 20px 0;\n\t\t}\n\t\t\n\t\tA {\n\t\t\tcolor: #08C;\n\t\t}\n\t\t\n\t\tA:hover {\n\t\t\tcolor: #0BE;\n\t\t}\n\t\t\n\t\tPRE,\n\t\tCODE {\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 2px;\n\t\t}\n\t\t\n\t\tPRE {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tpadding: 10px;\n\t\t\tmargin: 30px 0;\n\t\t}\n\t\t\n\t\t.alert {\n\t\t\tbackground: #FFFCCC;\n\t\t\tcolor: black;\n\t\t\tpadding: 1px 10px;\n\t\t\tmargin: 30px 0;\n\t\t}\n\t\t\n\t\t#main {\n\t\t\tmax-width: 800px;\n\t\t\tbackground: white;\n\t\t\tborder: solid 1px #DDD;\n\t\t\tbox-shadow: 0 0 30px rgba(0, 0, 0, .05);\n\t\t\tpadding: 30px;\n\t\t\tmargin: 20px auto;\n\t\t}\n\t\t\n\t\t.example {\n\t\t\tbackground: #F8F8F8;\n\t\t\tpadding: 10px;\n\t\t\tmargin: 20px 0;\n\t\t}\n\t\t\n\t\t#console {\n\t\t\tposition: fixed;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\theight: 32px;\n\t\t\tfont-family: monospace;\n\t\t\tline-height: 32px;\n\t\t\ttext-align: center;\n\t\t\tbackground: black;\n\t\t\tcolor: white;\n\t\t\tz-index: 100;\n\t\t\t-moz-transition: all .5s;\n\t\t\t-ms-transition: all .5s;\n\t\t\t-webkit-transition: all .5s;\n\t\t\ttransition: all .5s;\n\t\t\topacity: 0;\n\t\t}\n\t\t\n\t\t#console.busy {\n\t\t\topacity: .85;\n\t\t}\n\t\t\n\t</style>\n\t\n\t<script>\n\t\t\n\t\t$(document).ready( function() {\n\t\t\t\n\t\t\tvar consoleTimeout;\n\t\t\t\n\t\t\t// Display the results of the change callback on any minicolors input\n\t\t\t$('INPUT[type=minicolors]').on('change', function() {\n\t\t\t\t\n\t\t\t\tvar input = $(this),\n\t\t\t\t\thex = input.val(),\n\t\t\t\t\topacity = input.attr('data-opacity'),\n\t\t\t\t\ttext;\n\t\t\t\t\n\t\t\t\t// Generate text to show in console\n\t\t\t\ttext = hex ? hex : 'transparent';\n\t\t\t\tif( opacity ) text += ', ' + opacity;\n\t\t\t\ttext += ' / ' + $.minicolors.rgbString(input)\n\t\t\t\t\n\t\t\t\t// Show text in console; disappear after a few seconds\n\t\t\t\t$('#console').text(text).addClass('busy');\n\t\t\t\tclearTimeout(consoleTimeout);\n\t\t\t\tconsoleTimeout = setTimeout( function() {\n\t\t\t\t\t$('#console').removeClass('busy');\n\t\t\t\t}, 3000);\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t\t// Adding controls dynamically\n\t\t\t$('#add-one').on('click', function() {\n\t\t\t\t\n\t\t\t\t// Just add an <input type=\"minicolors\" /> control anywhere in your page\n\t\t\t\t$('#add-one-result').append('<input type=\"minicolors\" data-slider=\"' + $('#add-one-slider').val() + '\" value=\"#ff6600\" /><br /><br />');\n\t\t\t\t\n\t\t\t\t// ...then call $.minicolors.init() to activate the control\n\t\t\t\t$.minicolors.init();\n\t\t\t\t\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t\n\t</script>\n\t\n</head>\n<body>\n\t\n\t<div id=\"main\">\n\t\t<h1>jQuery MiniColors 2.0 beta</h1>\n\t\t<p>\n\t\t\tA project by Cory LaViska of <a href=\"http://www.abeautifulsite.net/\">A Beautiful Site</a>. \n\t\t</p>\n\t\t<p>\n\t\t\tMiniColors is a tiny color picker built on jQuery. It's easy to use and works \n\t\t\twell on touch-enabled devices. Completely re-written for 2.0.\n\t\t</p>\n\t\t<div class=\"alert\">\n\t\t\t<p>\n\t\t\t\tThe MiniColors API was completely overhauled in 2.0. You will need to change your \n\t\t\t\tcode if you are upgrading from a previous version!\n\t\t\t</p>\n\t\t</div>\n\t\t\n\t\t<!-- Download -->\n\t\t<h2 id=\"download\">Download</h2>\n\t\t<p>\n\t\t\tYou can <a href=\"https://github.com/claviska/jquery-miniColors\">download the source</a> \n\t\t\ton GitHub. Help contribute to this project by posting bug reports, feature requests, and \n\t\t\tcode improvements!\n\t\t</p>\n\t\t\n\t\t<h2 id=\"usage\">Usage</h2>\n\t\t<p>\n\t\t\tThe plugin will automatically initialize all inputs of type <code>minicolors</code>: \n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" /&gt;</pre>\n\t\t<p>\n\t\t\tThis results in the default color picker: \n\t\t\t<input type=\"minicolors\" />\n\t\t</p>\n\t\t<p>\n\t\t\tTo set an initial value, use the <code>value</code> attribute:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" value=\"#00cc00\" /&gt;</pre>\n\t\t<p>\n\t\t\tThis results in the default color picker with a preset value: \n\t\t\t<input type=\"minicolors\" value=\"#00cc00\" />\n\t\t</p>\n\t\t<p>\n\t\t\tYou can obtain the selected value any time by grabbing the original <code>input</code> \n\t\t\telement's <code>value</code>.\n\t\t</p>\n\t\t\n\t\t<!-- Options -->\n\t\t<h2 id=\"options\">Options</h2>\n\t\t<p>\n\t\t\tOptions are set for each control using one or more of the HTML5 <code>data-</code> \n\t\t\tattributes mentioned below.\n\t\t</p>\n\t\t\n\t\t<h3>Slider Variations</h3>\n\t\t<p>\n\t\t\tMiniColors has four slider variations. Set the <code>data-slider</code> attribute \n\t\t\tto use them.  Valid options are <code>hue</code> (default), <code>saturation</code>, \n\t\t\t<code>brightness</code>, and <code>wheel</code>.\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-slider=\"saturation\" /&gt;</pre>\n\t\t\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#d7e036\" data-slider=\"hue\" />\n\t\t\t<input type=\"minicolors\" value=\"#00a9bf\" data-slider=\"saturation\" />\n\t\t\t<input type=\"minicolors\" value=\"#b340ff\" data-slider=\"brightness\" />\n\t\t\t<input type=\"minicolors\" value=\"#e87262\" data-slider=\"wheel\" />\n\t\t</p>\n\t\t\n\t\t<h3>Default Values</h3>\n\t\t<p>\n\t\t\tUse the <code>data-default</code> attribute to force a default hex value. Try clearing \n\t\t\tthe box—it will revert to its default value. Note that the default value does not have \n\t\t\tto be the same as the initial value (set with the <code>value</code> attribute).\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-default=\"#ffffff\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-default=\"#ffffff\" />\n\t\t</p>\n\t\t\n\t\t<h3>No Text Field</h3>\n\t\t<p>\n\t\t\tTurn the color picker into a stand-alone color swatch by setting <code>data-textfield</code> \n\t\t\tto <code>false</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-textfield=\"false\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#ff6600\" data-textfield=\"false\" data-slider=\"hue\" />\n\t\t\t<input type=\"minicolors\" value=\"#29cf37\" data-textfield=\"false\" data-slider=\"saturation\" />\n\t\t\t<input type=\"minicolors\" value=\"#b437c7\" data-textfield=\"false\" data-slider=\"brightness\" />\n\t\t\t<input type=\"minicolors\" value=\"#00a4d1\" data-textfield=\"false\" data-slider=\"wheel\" />\n\t\t</p>\n\t\t\n\t\t<h3>Opacity Slider</h3>\n\t\t<p>\n\t\t\tEnable the opacity slider by adding the <code>data-opacity</code> attribute:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-opacity=\".75\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#4471a3\" data-opacity=\".75\" />\n\t\t</p>\n\t\t<p>\n\t\t\tTo obtain the opacity value, grab the <code>data-opacity</code> attribute of your input \n\t\t\telement. Keep in mind that this value will not submit along with other form data, so it's \n\t\t\tbest to use the <code>change</code> callback to update a hidden element in your form if \n\t\t\tyou need it to be submitted.\n\t\t</p>\n\t\t\n\t\t<h3>Inline Controls</h3>\n\t\t<p>\n\t\t\tForce the color picker to appear inline by setting <code>data-control</code> to <code>inline</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-control=\"inline\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" value=\"#3c9641\" data-control=\"inline\" data-slider=\"hue\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#d49f00\" data-control=\"inline\" data-slider=\"saturation\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#5cb8ff\" data-control=\"inline\" data-slider=\"brightness\" data-style=\"margin: 10px;\" />\n\t\t\t<input type=\"minicolors\" value=\"#5bbf4c\" data-control=\"inline\" data-slider=\"wheel\" data-style=\"margin: 10px;\" />\n\t\t</p>\n\t\t\n\t\t<h3>Dropdown Position</h3>\n\t\t<p>\n\t\t\tChange the position of the dropdown panel by setting the <code>data-position</code> \n\t\t\tattribute.  Valid options are <code>top</code>, <code>left</code>, and <code>top left</code>.\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-position=\"top\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-position=\"top\" data-opacity=\".5\" />\n\t\t</p>\n\t\t\n\t\t<h3>Swatch Position</h3>\n\t\t<p>\n\t\t\tForce the color swatch to appear on the left by setting <code>data-swatch-position</code> \n\t\t\tto <code>left</code>:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-swatch-position=\"left\" /&gt;</pre>\n\t\t<p>\n\t\t\t<input type=\"minicolors\" data-swatch-position=\"left\" />\n\t\t</p>\n\t\t\n\t\t<h3>Classes &amp; Styles</h3>\n\t\t<p>\n\t\t\tUse <code>data-class</code> and <code>data-style</code> to apply classes and styles \n\t\t\tto the parent element of the resulting control:\n\t\t</p>\n\t\t<pre>&lt;input type=\"minicolors\" data-class=\"my-class\" data-style=\"margin: 20px;\" /&gt;</pre>\n\t\t\n\t\t<!-- Utility Functions -->\n\t\t<h2 id=\"utility-functions\">Utility Functions</h2>\n\t\t<h3><code>$.minicolors.init()</code></h3>\n\t\t<p>\n\t\t\tCall this function to initialize controls that are created dynamically. You do not \n\t\t\tneed to specify a selector when calling this function.  Example:\n\t\t</p>\n\t\t\n\t\t<div class=\"example\">\n\t\t\t<p>\n\t\t\t\t<select id=\"add-one-slider\">\n\t\t\t\t\t<option value=\"hue\">Hue Picker</option>\n\t\t\t\t\t<option value=\"saturation\">Saturation Picker</option>\n\t\t\t\t\t<option value=\"brightness\">Brightness Picker</option>\n\t\t\t\t\t<option value=\"wheel\">Wheel Picker</option>\n\t\t\t\t</select>\n\t\t\t\t<button id=\"add-one\">Add it!</button>\n\t\t\t</p>\n\t\t\t<div id=\"add-one-result\"></div>\n\t\t</div>\n\t\t\n\t\t<h3><code>$.minicolors.remove(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tCall this function to remove a control from the DOM. (You can also remove any of the \n\t\t\tcontrol's parent elements with the same effect.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.refresh()</code></h3>\n\t\t<p>\n\t\t\tCall this function if you programmatically change the value of one or more controls.\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.show(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tShow the control attached to the specified <code>input</code> element. Only \n\t\t\tone control may be shown at once. (Doesn't apply to inline controls.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.hide()</code></h3>\n\t\t<p>\n\t\t\tHides any control that may be showing. (Doesn't apply to inline controls.)\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.rgbObject(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tReturns an object with <code>r</code>, <code>g</code>, <code>b</code>, and \n\t\t\t<code>a</code> properties. The <code>a</code> property will only be present \n\t\t\tif opacity is enabled on the specified control.\n\t\t</p>\n\t\t\n\t\t<h3><code>$.minicolors.rgbString(<em>input</em>)</code></h3>\n\t\t<p>\n\t\t\tReturns an RGB or RGBA string suitable for use in your CSS. If opacity is \n\t\t\tenabled on the specified control, an RGBA string will be returned.  Otherwise \n\t\t\tan RGB string will be returned.\n\t\t</p>\n\t\t\n\t\t<!-- Callbacks -->\n\t\t<h2 id=\"callbacks\">Callbacks</h2>\n\t\t<h3><code>change</code></h3>\n\t\t<p>\n\t\t\tAttach your <code>change</code> callback to the original <code>input</code> element. \n\t\t\tYou can access the value and opacity of the control using the <code>value</code> and \n\t\t\t<code>data-opacity</code> attributes, respectively.\n\t\t</p>\n\t\t<p>\n\t\t\tTo convert a control's hex value to RGB or RGBA, use the \n\t\t\t<code>$.minicolors.rgbObject()</code> or <code>$.minicolors.rgbString()</code> \n\t\t\tutility functions.\n\t\t</p>\n\t\t\n\t\t<!-- Settings -->\n\t\t<h2 id=\"settings\">Settings</h2>\n\t\t<p>\n\t\t\tAdjust plugin defaults by setting <code>$.minicolors.settings.<em>settingName</em></code>, \n\t\t\twhere <code><em>settingName</em></code> is one of the following:\n\t\t</p>\n\t\t\n\t\t<h3><code>animationSpeed</code> &amp; <code>animationEasing</code></h3>\n\t\t<p>\n\t\t\tThe animation speed and easing effect to use when making a color selection. \n\t\t\tDefaults to <code>100</code> (milliseconds) and <code>swing</code>, respectively.\n\t\t\tSet <code>animationSpeed</code> to <code>0</code> to disabled animation.\n\t\t</p>\n\t\t\n\t\t<h3><code>defaultSlider</code></h3>\n\t\t<p>\n\t\t\tSets the slider variation for all controls that don't specify it through \n\t\t\t<code>data-slider</code>. Default value is <code>hue</code>.\n\t\t</p>\n\t\t\n\t\t<h3><code>letterCase</code></h3>\n\t\t<p>\n\t\t\tForces the hex color's letter case to uppercase or lowercase.  Possible values \n\t\t\tare <code>lowercase</code> (default) and <code>uppercase</code>.\n\t\t</p>\n\t\t\n\t\t<h3><code>hideSpeed</code> &amp; <code>showSpeed</code></h3>\n\t\t<p>\n\t\t\tThe hide/show speed for dropdown controls. Default is <code>100</code> (milliseconds).\n\t\t</p>\n\t\t\n\t\t<!-- Styling Tips -->\n\t\t<h2 id=\"styling-tips\">Styling Tips</h2>\n\t\t<p>\n\t\t\tIf you change the <code>input</code> element's height or width via CSS, you'll also \n\t\t\tneed to adjust certain style properties in <code>.minicolors-swatch</code>, \n\t\t\t<code>.minicolors-panel</code>, <code>.minicolors-position-top</code>, and \n\t\t\t<code>.minicolors-position-left</code>.\n\t\t</p>\n\t</div>\n\t\n\t<div id=\"console\"></div>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.css",
    "content": ".minicolors {\n\tposition: relative;\n\tdisplay: inline-block;\n\tz-index: 1;\n}\n\n.minicolors-focus {\n\tz-index: 2;\n}\n\n.minicolors INPUT {\n\tmargin-right: 3px;\n\tborder: solid 1px #CCC;\n\tfont: 14px sans-serif;\n\twidth: 65px;\n\theight: 16px;\n\tvertical-align: middle;\n\tborder-radius: 0;\n\tbox-shadow: inset 0 2px 4px rgba(0, 0, 0, .04);\n\toutline: none;\n\tpadding: 2px;\n\tmargin-right: -1px;\n}\n\n.minicolors-swatch-left INPUT {\n\tmargin-left: -1px;\n\tmargin-right: auto;\n}\n\n.minicolors-focus INPUT,\n.minicolors-focus .minicolors-swatch {\n\tborder-color: #999;\n}\n\n.minicolors-hidden {\n\tposition: absolute;\n\tleft: -9999em;\n}\n\n.minicolors-swatch {\n\tposition: relative;\n\twidth: 20px;\n\theight: 20px;\n\tbackground: url(jquery.minicolors.png) -80px 0;\n\tborder: solid 1px #CCC;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.minicolors-swatch SPAN {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: none;\n\tbox-shadow: inset 0 9px 0 rgba(255, 255, 255, .1);\n\tdisplay: inline-block;\n}\n\n/* Panel */\n.minicolors-panel {\n\tposition: absolute;\n\ttop: 26px;\n\tleft: 0;\n\twidth: 173px;\n\theight: 152px;\n\tbackground: white;\n\tborder: solid 1px #CCC;\n\tbox-shadow: 0 0 20px rgba(0, 0, 0, .2);\n\tdisplay: none;\n}\n\n.minicolors-position-top .minicolors-panel {\n\ttop: -156px;\n}\n\n.minicolors-position-left .minicolors-panel {\n\tleft: -83px;\n}\n\n.minicolors-position-left.minicolors-with-opacity .minicolors-panel {\n\tleft: -104px;\n}\n\n.minicolors-with-opacity .minicolors-panel {\n\twidth: 194px;\n}\n\n.minicolors .minicolors-grid {\n\tposition: absolute;\n\ttop: 1px;\n\tleft: 1px;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: url(jquery.minicolors.png) -120px 0;\n\tcursor: crosshair;\n}\n\n.minicolors .minicolors-grid-inner {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: none;\n}\n\n.minicolors-slider-saturation .minicolors-grid {\n\tbackground-position: -420px 0;\n}\n\n.minicolors-slider-saturation .minicolors-grid-inner {\n\tbackground: url(jquery.minicolors.png) -270px 0;\n}\n\n.minicolors-slider-brightness .minicolors-grid {\n\tbackground-position: -570px 0;\n}\n\n.minicolors-slider-brightness .minicolors-grid-inner {\n\tbackground: black;\n}\n\n.minicolors-slider-wheel .minicolors-grid {\n\tbackground-position: -720px 0;\n}\n\n.minicolors-slider,\n.minicolors-opacity-slider {\n\tposition: absolute;\n\ttop: 1px;\n\tleft: 152px;\n\twidth: 20px;\n\theight: 150px;\n\tbackground: white url(jquery.minicolors.png) 0 0;\n\tcursor: crosshair;\n}\n\n.minicolors-slider-saturation .minicolors-slider {\n\tbackground-position: -60px 0;\n}\n\n.minicolors-slider-brightness .minicolors-slider {\n\tbackground-position: -20px 0;\n}\n\n.minicolors-slider-wheel .minicolors-slider {\n\tbackground-position: -20px 0;\n}\n\n.minicolors-opacity-slider {\n\tleft: 173px;\n\tbackground-position: -40px 0;\n\tdisplay: none;\n}\n\n.minicolors-with-opacity .minicolors-opacity-slider {\n\tdisplay: block;\n}\n\n/* Pickers */\n.minicolors-grid .minicolors-picker {\n\tposition: absolute;\n\ttop: 70px;\n\tleft: 70px;\n\twidth: 10px;\n\theight: 10px;\n\tborder: solid 1px black;\n\tborder-radius: 10px;\n\tmargin-top: -6px;\n\tmargin-left: -6px;\n\tbackground: none;\n}\n\n.minicolors-grid .minicolors-picker SPAN {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 6px;\n\theight: 6px;\n\tborder-radius: 6px;\n\tborder: solid 2px white;\n}\n\n.minicolors-picker {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 18px;\n\theight: 2px;\n\tbackground: white;\n\tborder: solid 1px black;\n\tmargin-top: -2px;\n}\n\n/* Inline controls */\n.minicolors-inline INPUT,\n.minicolors-inline .minicolors-swatch {\n\tdisplay: none;\n}\n\n.minicolors-inline .minicolors-panel {\n\tposition: relative;\n\ttop: auto;\n\tleft: auto;\n\tdisplay: inline-block;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/jquery.miniColors.js",
    "content": "/*\n * jQuery MiniColors: A tiny color picker built on jQuery\n *\n * Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)\n *\n * Dual-licensed under the MIT and GPL Version 2 licenses\n *\n*/\nif(jQuery) (function($) {\n\t\n\t// The minicolors object (public methods and settings)\n\t$.minicolors = {\n\t\t\n\t\t// Default settings\n\t\tsettings: {\n\t\t\tdefaultSlider: 'hue',\n\t\t\tletterCase: 'lowercase',\n\t\t\thideSpeed: 100,\n\t\t\tshowSpeed: 100,\n\t\t\tanimationSpeed: 100,\n\t\t\tanimationEasing: 'swing'\n\t\t},\n\t\t\n\t\t// Initialized all controls of type=minicolors\n\t\tinit: function() {\n\t\t\t$('INPUT[data-type=minicolors]').each( function() {\n\t\t\t\tinit( $(this) );\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Remove the specified control from the DOM\n\t\tremove: function(input) {\n\t\t\t$(input).each( function() {\n\t\t\t\tremove($(this));\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Refresh the controls\n\t\trefresh: function() {\n\t\t\t$('INPUT[data-type=minicolors]').each( function() {\n\t\t\t\trefresh($(this));\n\t\t\t});\n\t\t},\n\t\t\n\t\t// Shows the specified control\n\t\tshow: function(input) {\n\t\t\tshow( $(input).eq(0) );\n\t\t},\n\t\t\n\t\t// Hides all controls\n\t\thide: function() {\n\t\t\thide();\n\t\t},\n\t\t\n\t\t// Utility to convert a hex string to RGB(A) object\n\t\trgbObject: function(input) {\n\t\t\tvar hex = parseHex($(input).val(), true),\n\t\t\t\trgb = hex2rgb(hex),\n\t\t\t\topacity = input.attr('data-opacity');\n\t\t\tif( !rgb ) return null;\n\t\t\tif( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });\n\t\t\treturn rgb;\n\t\t},\n\t\t\n\t\t// Utility to convert a hex string to an RGB(A) string\n\t\trgbString: function(input) {\n\t\t\tvar hex = parseHex($(input).val(), true),\n\t\t\t\trgb = hex2rgb(hex),\n\t\t\t\topacity = input.attr('data-opacity');\n\t\t\tif( !rgb ) return null;\n\t\t\tif( opacity === undefined ) {\n\t\t\t\treturn 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n\t\t\t} else {\n\t\t\t\treturn 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\n\t\t\t}\n\t\t}\n\t\t\n\t};\n\t\n\t// Initialize all input[type=minicolors] elements\n\tfunction init(input) {\n\t\t\n\t\tvar minicolors = $('<span class=\"minicolors\" />'),\n\t\t\tsliderType = input.attr('data-slider') || $.minicolors.settings.defaultSlider;\n\t\t\n\t\tif( input.data('initialized') ) return;\n\t\t\n\t\t// The wrapper\n\t\tminicolors\n\t\t\t.attr('class', input.attr('data-class'))\n\t\t\t.attr('style', input.attr('data-style'))\n\t\t\t.toggleClass('minicolors-swatch-left', input.attr('data-swatch-position') === 'left' )\n\t\t\t.toggleClass('minicolors-with-opacity', input.attr('data-opacity') !== undefined );\n\t\t\n\t\t// Custom positioning\n\t\tif( input.attr('data-position') !== undefined ) {\n\t\t\t$.each(input.attr('data-position').split(' '), function() {\n\t\t\t\tminicolors.addClass('minicolors-position-' + this);\n\t\t\t});\n\t\t}\n\t\t\n\t\t// The input\n\t\tinput\n\t\t\t.data('initialized', true)\n\t\t\t.attr('data-default', input.attr('data-default') || '')\n\t\t\t.attr('data-slider', sliderType)\n\t\t\t.prop('size', 7)\n\t\t\t.prop('maxlength', 7)\n\t\t\t.wrap(minicolors)\n\t\t\t.after(\n\t\t\t\t'<span class=\"minicolors-panel minicolors-slider-' + sliderType + '\">' + \n\t\t\t\t\t'<span class=\"minicolors-slider\">' + \n\t\t\t\t\t\t'<span class=\"minicolors-picker\"></span>' +\n\t\t\t\t\t'</span>' + \n\t\t\t\t\t'<span class=\"minicolors-opacity-slider\">' + \n\t\t\t\t\t\t'<span class=\"minicolors-picker\"></span>' +\n\t\t\t\t\t'</span>' +\n\t\t\t\t\t'<span class=\"minicolors-grid\">' +\n\t\t\t\t\t\t'<span class=\"minicolors-grid-inner\"></span>' +\n\t\t\t\t\t\t'<span class=\"minicolors-picker\"><span></span></span>' +\n\t\t\t\t\t'</span>' +\n\t\t\t\t'</span>'\n\t\t\t);\n\t\t\n\t\t// Prevent text selection in IE\n\t\tinput.parent().find('.minicolors-panel').on('selectstart', function() { return false; }).end();\n\t\t\n\t\t// Detect swatch position\n\t\tif( input.attr('data-swatch-position') === 'left' ) {\n\t\t\t// Left\n\t\t\tinput.before('<span class=\"minicolors-swatch\"><span></span></span>');\n\t\t} else {\n\t\t\t// Right\n\t\t\tinput.after('<span class=\"minicolors-swatch\"><span></span></span>');\n\t\t}\n\t\t\n\t\t// Disable textfield\n\t\tif( input.attr('data-textfield') === 'false' ) input.addClass('minicolors-hidden');\n\t\t\n\t\t// Inline controls\n\t\tif( input.attr('data-control') === 'inline' ) input.parent().addClass('minicolors-inline');\n\t\t\n\t\tupdateFromInput(input);\n\t\t\n\t}\n\t\n\t// Refresh the specified control\n\tfunction refresh(input) {\n\t\tupdateFromInput(input);\n\t}\n\t\n\t// Removes the specified control\n\tfunction remove(input) {\n\t\tvar minicolors = input.parent();\n\t\tif( input.data('initialized') && minicolors.hasClass('minicolors') ) {\n\t\t\tminicolors.remove();\n\t\t}\n\t}\n\t\n\t// Shows the specified dropdown panel\n\tfunction show(input) {\n\t\t\n\t\tvar minicolors = input.parent(),\n\t\t\tpanel = minicolors.find('.minicolors-panel');\n\t\t\n\t\t// Do nothing if uninitialized, disabled, or already open\n\t\tif( !input.data('initialized') || input.prop('disabled') || minicolors.hasClass('minicolors-focus') ) return;\n\t\t\n\t\thide();\n\t\t\n\t\tminicolors.addClass('minicolors-focus');\n\t\tpanel\n\t\t\t.stop(true, true)\n\t\t\t.fadeIn($.minicolors.settings.showSpeed);\n\t\t\n\t}\n\t\n\t// Hides all dropdown panels\n\tfunction hide() {\n\t\t\n\t\t$('.minicolors:not(.minicolors-inline)').each( function() {\n\t\t\t\n\t\t\tvar minicolors = $(this),\n\t\t\t\tinput = minicolors.find('INPUT');\n\t\t\t\n\t\t\tminicolors.find('.minicolors-panel').fadeOut($.minicolors.settings.hideSpeed, function() {\n\t\t\t\tminicolors.removeClass('minicolors-focus');\n\t\t\t});\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n\t// Moves the selected picker\n\tfunction move(target, event, animate) {\n\t\t\n\t\tvar input = target.parents('.minicolors').find('INPUT'),\n\t\t\tpicker = target.find('[class$=-picker]'),\n\t\t\toffsetX = target.offset().left,\n\t\t\toffsetY = target.offset().top,\n\t\t\tx = Math.round(event.pageX - offsetX),\n\t\t\ty = Math.round(event.pageY - offsetY),\n\t\t\tduration = animate ? $.minicolors.settings.animationSpeed : 0,\n\t\t\twx, wy, r, phi;\n\t\t\t\n\t\t\n\t\t// Touch support\n\t\tif( event.originalEvent.changedTouches ) {\n\t\t\tx = event.originalEvent.changedTouches[0].pageX - offsetX;\n\t\t\ty = event.originalEvent.changedTouches[0].pageY - offsetY;\n\t\t}\n\t\t\n\t\t// Constrain picker to its container\n\t\tif( x < 0 ) x = 0;\n\t\tif( y < 0 ) y = 0;\n\t\tif( x > target.width() ) x = target.width();\n\t\tif( y > target.height() ) y = target.height();\n\t\t\n\t\t// Constrain color wheel values to the wheel\n\t\tif( target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid') ) {\n\t\t\twx = 75 - x;\n\t\t\twy = 75 - y;\n\t\t\tr = Math.sqrt(wx * wx + wy * wy);\n\t\t\tphi = Math.atan2(wy, wx);\n\t\t\tif( phi < 0 ) phi += Math.PI * 2;\n\t\t\tif( r > 75 ) {\n\t\t\t\tr = 75;\n\t\t\t\tx = 75 - (75 * Math.cos(phi));\n\t\t\t\ty = 75 - (75 * Math.sin(phi));\n\t\t\t}\n\t\t\tx = Math.round(x);\n\t\t\ty = Math.round(y);\n\t\t}\n\t\t\n\t\t// Move the picker\n\t\tif( target.is('.minicolors-grid') ) {\n\t\t\tpicker\n\t\t\t\t.stop(true)\n\t\t\t\t.animate({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t}, duration, $.minicolors.settings.animationEasing, function() {\n\t\t\t\t\tupdateFromControl(input);\n\t\t\t\t});\n\t\t} else {\n\t\t\tpicker\n\t\t\t\t.stop(true)\n\t\t\t\t.animate({\n\t\t\t\t\ttop: y + 'px'\n\t\t\t\t}, duration, $.minicolors.settings.animationEasing, function() {\n\t\t\t\t\tupdateFromControl(input);\n\t\t\t\t});\n\t\t}\n\t\t\n\t}\n\t\n\t// Sets the input based on the color picker values\n\tfunction updateFromControl(input) {\n\t\t\n\t\tfunction getCoords(picker, container) {\n\t\t\t\n\t\t\tvar left, top;\n\t\t\tif( !picker.length || !container ) return null;\n\t\t\tleft = picker.offset().left;\n\t\t\ttop = picker.offset().top;\n\t\t\t\n\t\t\treturn {\n\t\t\t\tx: left - container.offset().left + (picker.outerWidth() / 2),\n\t\t\t\ty: top - container.offset().top + (picker.outerHeight() / 2)\n\t\t\t};\n\t\t\t\n\t\t}\n\t\t\n\t\tvar hue, saturation, brightness, opacity, rgb, hex, x, y, r, phi,\n\t\t\t\n\t\t\t// Helpful references\n\t\t\tminicolors = input.parent(),\n\t\t\tpanel = minicolors.find('.minicolors-panel'),\n\t\t\tswatch = minicolors.find('.minicolors-swatch'),\n\t\t\thasOpacity = input.attr('data-opacity') !== undefined,\n\t\t\tsliderType = input.attr('data-slider'),\n\t\t\t\n\t\t\t// Panel objects\n\t\t\tgrid = minicolors.find('.minicolors-grid'),\n\t\t\tslider = minicolors.find('.minicolors-slider'),\n\t\t\topacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\t\t\t\n\t\t\t// Picker objects\n\t\t\tgridPicker = grid.find('[class$=-picker]'),\n\t\t\tsliderPicker = slider.find('[class$=-picker]'),\n\t\t\topacityPicker = opacitySlider.find('[class$=-picker]'),\n\t\t\t\n\t\t\t// Picker positions\n\t\t\tgridPos = getCoords(gridPicker, grid),\n\t\t\tsliderPos = getCoords(sliderPicker, slider),\n\t\t\topacityPos = getCoords(opacityPicker, opacitySlider);\n\t\t\n\t\t// Determine HSB values\n\t\tswitch(sliderType) {\n\t\t\t\n\t\t\tcase 'wheel':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\tx = (grid.width() / 2) - gridPos.x;\n\t\t\t\ty = (grid.height() / 2) - gridPos.y;\n\t\t\t\tr = Math.sqrt(x * x + y * y);\n\t\t\t\tphi = Math.atan2(y, x);\n\t\t\t\tif( phi < 0 ) phi += Math.PI * 2;\n\t\t\t\tif( r > 75 ) {\n\t\t\t\t\tr = 75;\n\t\t\t\t\tgridPos.x = 69 - (75 * Math.cos(phi));\n\t\t\t\t\tgridPos.y = 69 - (75 * Math.sin(phi));\n\t\t\t\t}\n\t\t\t\tsaturation = keepWithin(r / 0.75, 0, 100);\n\t\t\t\thue = keepWithin(phi * 180 / Math.PI, 0, 360);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'saturation':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(parseInt(gridPos.x * (360 / grid.width())), 0, 360);\n\t\t\t\tsaturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'brightness':\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(parseInt(gridPos.x * (360 / grid.width())), 0, 360);\n\t\t\t\tsaturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\t// Calculate hue, saturation, and brightness\n\t\t\t\thue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height())), 0, 360);\n\t\t\t\tsaturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\n\t\t\t\tbrightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n\t\t\t\thex = hsb2hex({\n\t\t\t\t\th: hue,\n\t\t\t\t\ts: saturation,\n\t\t\t\t\tb: brightness\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tgrid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\t// Determine opacity\n\t\tif( hasOpacity ) {\n\t\t\topacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);\n\t\t} else {\n\t\t\topacity = 1;\n\t\t}\n\t\t\n\t\t// Update input control\n\t\tinput.val(hex);\n\t\tif( hasOpacity ) input.attr('data-opacity', opacity);\n\t\t\n\t\t// Set swatch color\n\t\tswatch.find('SPAN').css({\n\t\t\tbackgroundColor: hex,\n\t\t\topacity: opacity\n\t\t});\n\t\t\n\t\t// Fire change event\n\t\tif( hex + opacity !== input.data('last-change') ) {\n\t\t\tinput\n\t\t\t\t.data('last-change', hex + opacity)\n\t\t\t\t.trigger('change', input);\n\t\t}\n\t\t\n\t}\n\t\n\t// Sets the color picker values from the input\n\tfunction updateFromInput(input, preserveInputValue) {\n\t\t\n\t\tvar hex,\n\t\t\thsb,\n\t\t\topacity,\n\t\t\tx, y, r, phi,\n\t\t\t\n\t\t\t// Helpful references\n\t\t\tminicolors = input.parent(),\n\t\t\tswatch = minicolors.find('.minicolors-swatch'),\n\t\t\thasOpacity = input.attr('data-opacity') !== undefined,\n\t\t\tsliderType = input.attr('data-slider'),\n\t\t\t\n\t\t\t\n\t\t\t// Panel objects\n\t\t\tgrid = minicolors.find('.minicolors-grid'),\n\t\t\tslider = minicolors.find('.minicolors-slider'),\n\t\t\topacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\t\t\t\n\t\t\t// Picker objects\n\t\t\tgridPicker = grid.find('[class$=-picker]'),\n\t\t\tsliderPicker = slider.find('[class$=-picker]'),\n\t\t\topacityPicker = opacitySlider.find('[class$=-picker]');\n\t\t\n\t\t// Determine hex/HSB values\n\t\thex = convertCase(parseHex(input.val(), true));\n\t\tif( !hex ) hex = convertCase(parseHex(input.attr('data-default'), true));\n\t\thsb = hex2hsb(hex);\n\t\t\n\t\t// Update input value\n\t\tif( !preserveInputValue ) input.val(hex);\n\t\t\n\t\t// Determine opacity value\n\t\tif( hasOpacity ) {\n\t\t\topacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\n\t\t\tinput.attr('data-opacity', opacity);\n\t\t\tswatch.find('SPAN').css('opacity', opacity);\n\t\t\t\n\t\t\t// Set opacity picker position\n\t\t\ty = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());\n\t\t\topacityPicker.css('top', y + 'px');\n\t\t}\n\t\t\n\t\t// Update swatch\n\t\tswatch.find('SPAN').css('backgroundColor', hex);\n\t\t\n\t\t// Determine picker locations\n\t\tswitch(sliderType) {\n\t\t\t\n\t\t\tcase 'wheel':\n\t\t\t\t// Set grid position\n\t\t\t\tr = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\n\t\t\t\tphi = hsb.h * Math.PI / 180;\n\t\t\t\tx = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\n\t\t\t\ty = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = 150 - (hsb.b / (100 / grid.height()));\n\t\t\t\tif( hex === '' ) y = 0;\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update panel color\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'saturation':\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin((5 * hsb.h) / 12, 0, 150);\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\n\t\t\t\t\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'brightness':\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin((5 * hsb.h) / 12, 0, 150);\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update UI\n\t\t\t\tslider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n\t\t\t\tminicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\t// Set grid position\n\t\t\t\tx = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\n\t\t\t\ty = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n\t\t\t\tgridPicker.css({\n\t\t\t\t\ttop: y + 'px',\n\t\t\t\t\tleft: x + 'px'\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Set slider position\n\t\t\t\ty = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());\n\t\t\t\tsliderPicker.css('top', y + 'px');\n\t\t\t\t\n\t\t\t\t// Update panel color\n\t\t\t\tgrid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t// Converts to the letter case specified in $.minicolors.settings.letterCase\n\tfunction convertCase(string) {\n\t\treturn $.minicolors.settings.letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\n\t}\n\t\n\t// Parses a string and returns a valid hex string when possible\n\tfunction parseHex(string, expand) {\n\t\tstring = string.replace(/[^A-F0-9]/ig, '');\n\t\tif( string.length !== 3 && string.length !== 6 ) return '';\n\t\tif( string.length === 3 && expand ) {\n\t\t\tstring = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n\t\t}\n\t\treturn '#' + string;\n\t}\n\t\n\t// Keeps value within min and max\n\tfunction keepWithin(value, min, max) {\n\t\tif( value < min ) value = min;\n\t\tif( value > max ) value = max;\n\t\treturn value;\n\t}\n\t\n\t// Converts an HSB object to an RGB object\n\tfunction hsb2rgb(hsb) {\n\t\tvar rgb = {};\n\t\tvar h = Math.round(hsb.h);\n\t\tvar s = Math.round(hsb.s * 255 / 100);\n\t\tvar v = Math.round(hsb.b * 255 / 100);\n\t\tif(s === 0) {\n\t\t\trgb.r = rgb.g = rgb.b = v;\n\t\t} else {\n\t\t\tvar t1 = v;\n\t\t\tvar t2 = (255 - s) * v / 255;\n\t\t\tvar t3 = (t1 - t2) * (h % 60) / 60;\n\t\t\tif( h === 360 ) h = 0;\n\t\t\tif( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }\n\t\t\telse if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }\n\t\t\telse if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }\n\t\t\telse if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }\n\t\t\telse if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }\n\t\t\telse if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }\n\t\t\telse { rgb.r = 0; rgb.g = 0; rgb.b = 0; }\n\t\t}\n\t\treturn {\n\t\t\tr: Math.round(rgb.r),\n\t\t\tg: Math.round(rgb.g),\n\t\t\tb: Math.round(rgb.b)\n\t\t};\n\t}\n\t\n\t// Converts an RGB object to a hex string\n\tfunction rgb2hex(rgb) {\n\t\tvar hex = [\n\t\t\trgb.r.toString(16),\n\t\t\trgb.g.toString(16),\n\t\t\trgb.b.toString(16)\n\t\t];\n\t\t$.each(hex, function(nr, val) {\n\t\t\tif (val.length === 1) hex[nr] = '0' + val;\n\t\t});\n\t\treturn '#' + hex.join('');\n\t}\n\t\n\t// Converts an HSB object to a hex string\n\tfunction hsb2hex(hsb) {\n\t\treturn rgb2hex(hsb2rgb(hsb));\n\t}\n\t\n\t// Converts a hex string to an HSB object\n\tfunction hex2hsb(hex) {\n\t\tvar hsb = rgb2hsb(hex2rgb(hex));\n\t\tif( hsb.s === 0 ) hsb.h = 360;\n\t\treturn hsb;\n\t}\n\t\n\t// Converts an RGB object to an HSB object\n\tfunction rgb2hsb(rgb) {\n\t\tvar hsb = { h: 0, s: 0, b: 0 };\n\t\tvar min = Math.min(rgb.r, rgb.g, rgb.b);\n\t\tvar max = Math.max(rgb.r, rgb.g, rgb.b);\n\t\tvar delta = max - min;\n\t\thsb.b = max;\n\t\thsb.s = max !== 0 ? 255 * delta / max : 0;\n\t\tif( hsb.s !== 0 ) {\n\t\t\tif( rgb.r === max ) {\n\t\t\t\thsb.h = (rgb.g - rgb.b) / delta;\n\t\t\t} else if( rgb.g === max ) {\n\t\t\t\thsb.h = 2 + (rgb.b - rgb.r) / delta;\n\t\t\t} else {\n\t\t\t\thsb.h = 4 + (rgb.r - rgb.g) / delta;\n\t\t\t}\n\t\t} else {\n\t\t\thsb.h = -1;\n\t\t}\n\t\thsb.h *= 60;\n\t\tif( hsb.h < 0 ) {\n\t\t\thsb.h += 360;\n\t\t}\n\t\thsb.s *= 100/255;\n\t\thsb.b *= 100/255;\n\t\treturn hsb;\n\t}\n\t\n\t// Converts a hex string to an RGB object\n\tfunction hex2rgb(hex) {\n\t\thex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n\t\treturn {\n\t\t\tr: hex >> 16,\n\t\t\tg: (hex & 0x00FF00) >> 8,\n\t\t\tb: (hex & 0x0000FF)\n\t\t};\n\t}\n\t\n\t// A bit of magic...\n\t$(window).on('load', function() {\n\t\t\n\t\t// Auto-initialize\n\t\t$.minicolors.init();\n\t\t\n\t\t$(document)\n\t\t\t// Hide on clicks outside of the control\n\t\t\t.on('mousedown touchstart', function(event) {\n\t\t\t\tif( !$(event.target).parents().add(event.target).hasClass('minicolors') ) {\n\t\t\t\t\thide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Start moving\n\t\t\t.on('mousedown touchstart', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {\n\t\t\t\tvar target = $(this);\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(document).data('minicolors-target', target);\n\t\t\t\tmove(target, event, true);\n\t\t\t})\n\t\t\t// Move pickers\n\t\t\t.on('mousemove touchmove', function(event) {\n\t\t\t\tvar target = $(document).data('minicolors-target');\n\t\t\t\tif( target ) move(target, event);\n\t\t\t})\n\t\t\t// Stop moving\n\t\t\t.on('mouseup touchend', function() {\n\t\t\t\t$(this).removeData('minicolors-target');\n\t\t\t})\n\t\t\t// Toggle panel when swatch is clicked\n\t\t\t.on('mousedown touchstart', '.minicolors-swatch', function(event) {\n\t\t\t\tvar input = $(this).parent().find('INPUT'),\n\t\t\t\t\tminicolors = input.parent();\n\t\t\t\tif( minicolors.hasClass('minicolors-focus') ) {\n\t\t\t\t\thide(input);\n\t\t\t\t} else {\n\t\t\t\t\tshow(input);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Show on focus\n\t\t\t.on('focus', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tshow(input);\n\t\t\t})\n\t\t\t// Fix hex and hide on blur\n\t\t\t.on('blur', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tinput.val( convertCase(parseHex(input.val() !== '' ? input.val() : convertCase(parseHex(input.attr('data-default'), true)), true)) );\n\t\t\t\thide(input);\n\t\t\t})\n\t\t\t// Handle keypresses\n\t\t\t.on('keydown', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tswitch(event.keyCode) {\n\t\t\t\t\tcase 9: // tab\n\t\t\t\t\t\thide();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 27: // esc\n\t\t\t\t\t\thide();\n\t\t\t\t\t\tinput.blur();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Update on keyup\n\t\t\t.on('keyup', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tupdateFromInput(input, true);\n\t\t\t})\n\t\t\t// Update on paste\n\t\t\t.on('paste', 'INPUT[data-type=minicolors]', function(event) {\n\t\t\t\tvar input = $(this);\n\t\t\t\tif( !input.data('initialized') ) return;\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\tupdateFromInput(input, true);\n\t\t\t\t}, 1);\n\t\t\t});\n\t\t\n\t});\n\t\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/color/jquery-miniColors/readme.md",
    "content": "# jQuery MiniColors: A tiny color picker built on jQuery\n\n_Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)_\n\n_Dual-licensed under the MIT and GPL Version 2 licenses_\n\n\n## Demo & Documentation\n\nhttp://labs.abeautifulsite.net/jquery-miniColors/\n\n## Quick Start\n\n```html\n<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\"></script>\n<script src=\"jquery.minicolors.js\"></script>\n<link rel=\"stylesheet\" href=\"jquery.minicolors.css\" />\n```\n\nTo create a color picker:\n\n```html\n<input type=\"minicolors\" name=\"color\" />\n```\n\nRefer to `index.html` for complete documentation and examples."
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/README.md",
    "content": "# Project : bootstrap-datetimepicker\n======================================\n\n[![Build Status](https://travis-ci.org/smalot/bootstrap-datetimepicker.png?branch=master)](https://travis-ci.org/smalot/bootstrap-datetimepicker)\n\n[Homepage](http://www.malot.fr/bootstrap-datetimepicker/)\n\n[Demo page](http://www.malot.fr/bootstrap-datetimepicker/demo.php)\n\n# Project forked\n\nThis project is a fork of [bootstrap-datepicker project](https://github.com/eternicode/bootstrap-datepicker).\n\n\n# Home\n\nAs 'bootstrap-datetimepicker' is restricted to the date scope (day, month, year), this project aims to support too the time picking (hour, minutes).\n\n\n# Screenshots\n\n## Decade year view\n\n![Datetimepicker decade year view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_decade.png)\n\nThis view allows to select the day in the selected month.\n\n## Year view\n\n![Datetimepicker year view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_year.png)\n\nThis view allows to select the month in the selected year.\n\n## Month view\n\n![Datetimepicker month view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_month.png)\n\nThis view allows to select the year in a range of 10 years.\n\n## Day view\n\n![Datetimepicker day view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_day.png)\n\nThis view allows to select the hour in the selected day.\n\n## Hour view\n\n![Datetimepicker hour view](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_hour.png)\n\nThis view allows to select the preset of minutes in the selected hour.\nThe range of 5 minutes (by default) has been selected to restrict buttons quantity to an acceptable value, but it can be overrided by the <code>minuteStep</code> property.\n\n## Day view - meridian\n\n![Datetimepicker day view meridian](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_day_meridian.png)\n\nMeridian is supported in both the day and hour views.\nTo use it, just enable the <code>showMeridian</code> property.\n\n## Hour view - meridian\n\n![Datetimepicker hour view meridian](https://raw.github.com/smalot/bootstrap-datetimepicker/master/screenshot/standard_hour_meridian.png)\n\n# Example\n\nAttached to a field with the format specified via options:\n\n```html\n<input type=\"text\" value=\"2012-05-15 21:05\" id=\"datetimepicker\">\n```\n```javascript\n$('#datetimepicker').datetimepicker({\n    format: 'yyyy-mm-dd hh:ii'\n});\n```\n\nAttached to a field with the format specified via markup:\n\n```html\n<input type=\"text\" value=\"2012-05-15 21:05\" id=\"datetimepicker\" data-date-format=\"yyyy-mm-dd hh:ii\">\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\nAs component:\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\nAs inline datetimepicker:\n\n```html\n<div id=\"datetimepicker\"></div>\n```\n```javascript\n$('#datetimepicker').datetimepicker();\n```\n\n# Using bootstrap-datetimepicker.js\n\nCall the datetimepicker via javascript:\n\n```javascript\n$('.datetimepicker').datetimepicker()\n```\n\n## Dependencies\n\nRequires bootstrap's dropdown component (`dropdowns.less`) for some styles, and bootstrap's sprites (`sprites.less` and associated images) for arrows.\n\nA standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running `build/build_standalone.less` through the `lessc` compiler:\n\n```bash\n$ lessc build/build_standalone.less datetimepicker.css\n```\n\n## Options\n\nAll options that take a \"Date\" can handle a `Date` object; a String formatted according to the given `format`; or a timedelta relative to today, eg '-1d', '+6m +1y', etc, where valid units are 'd' (day), 'w' (week), 'm' (month), and 'y' (year).\n\nYou can also specify an ISO-8601 valid datetime, despite of the given `format` :\n * yyyy-mm-dd\n * yyyy-mm-dd hh:ii\n * yyyy-mm-ddThh:ii\n * yyyy-mm-dd hh:ii:ss\n * yyyy-mm-ddThh:ii:ssZ\n\n### format\n\nString.  Default: 'mm/dd/yyyy'\n\nThe date format, combination of p, P, h, hh, i, ii, s, ss, d, dd, m, mm, M, MM, yy, yyyy.\n\n * p : meridian in lower case ('am' or 'pm') - according to locale file\n * P : meridian in upper case ('AM' or 'PM') - according to locale file\n * s : seconds without leading zeros\n * ss : seconds, 2 digits with leading zeros\n * i : minutes without leading zeros\n * ii : minutes, 2 digits with leading zeros\n * h : hour without leading zeros - 24-hour format\n * hh : hour, 2 digits with leading zeros - 24-hour format\n * H : hour without leading zeros - 12-hour format\n * HH : hour, 2 digits with leading zeros - 12-hour format\n * d : day of the month without leading zeros\n * dd : day of the month, 2 digits with leading zeros\n * m : numeric representation of month without leading zeros\n * mm : numeric representation of the month, 2 digits with leading zeros\n * M : short textual representation of a month, three letters\n * MM : full textual representation of a month, such as January or March\n * yy : two digit representation of a year\n * yyyy : full numeric representation of a year, 4 digits\n\n### weekStart\n\nInteger.  Default: 0\n\nDay of the week start. 0 (Sunday) to 6 (Saturday)\n\n### startDate\n\nDate.  Default: Beginning of time\n\nThe earliest date that may be selected; all earlier dates will be disabled.\n\n### endDate\n\nDate.  Default: End of time\n\nThe latest date that may be selected; all later dates will be disabled.\n\n### daysOfWeekDisabled\n\nString, Array.  Default: '', []\n\nDays of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: `'0,6'` or `[0,6]`.\n\n### autoclose\n\nBoolean.  Default: false\n\nWhether or not to close the datetimepicker immediately when a date is selected.\n\n### startView\n\nNumber, String.  Default: 2, 'month'\n\nThe view that the datetimepicker should show when it is opened.\nAccepts values of :\n * 0 or 'hour' for the hour view\n * 1 or 'day' for the day view\n * 2 or 'month' for month view (the default)\n * 3 or 'year' for the 12-month overview\n * 4 or 'decade' for the 10-year overview. Useful for date-of-birth datetimepickers.\n\n### minView\n\nNumber, String. Default: 0, 'hour'\n\nThe lowest view that the datetimepicker should show.\n\n### maxView\n\nNumber, String. Default: 4, 'decade'\n\nThe highest view that the datetimepicker should show.\n\n### todayBtn\n\nBoolean, \"linked\".  Default: false\n\nIf true or \"linked\", displays a \"Today\" button at the bottom of the datetimepicker to select the current date.  If true, the \"Today\" button will only move the current date into view; if \"linked\", the current date will also be selected.\n\n### todayHighlight\n\nBoolean.  Default: false\n\nIf true, highlights the current date.\n\n### keyboardNavigation\n\nBoolean.  Default: true\n\nWhether or not to allow date navigation by arrow keys.\n\n### language\n\nString.  Default: 'en'\n\nThe two-letter code of the language to use for month and day names.  These will also be used as the input's value (and subsequently sent to the server in the case of form submissions).  Currently ships with English ('en'), German ('de'), Brazilian ('br'), and Spanish ('es') translations, but others can be added (see I18N below).  If an unknown language code is given, English will be used.\n\n### forceParse\n\nBoolean.  Default: true\n\nWhether or not to force parsing of the input value when the picker is closed.  That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`.\n\n### minuteStep\n\nNumber.  Default: 5\n\nThe increment used to build the hour view. A button is created for each <code>minuteStep</code> minutes.\n\n### pickerReferer : deprecated\n\nString.  Default: 'default'\n\nThe referer element to place the picker for the component implementation. If you want to place the picker just under the input field, just specify <code>input</code>.\n\n### pickerPosition\n\nString. Default: 'bottom-right' (other supported value : 'bottom-left')\n\nThis option allows to place the picker just under the input field for the component implementation instead of the default position which is at the bottom right of the button.\n\n### viewSelect\n\nNumber or String. Default: <code>same as minView</code> (supported values are: 'decade', 'year', 'month', 'day', 'hour')\n\nWith this option you can select the view from which the date will be selected. By default it's the last one, however you can choose the first one, so at each click the date will be updated.\n\n### showMeridian\n\nBoolean. Default: false\n\nThis option will enable meridian views for day and hour views.\n\n### initialDate\n\nDate or String. Default: new Date()\n\nYou can initialize the viewer with a date. By default it's now, so you can specify yesterday or today at midnight ...\n\n## Markup\n\nFormat as component.\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input class=\"span2\" size=\"16\" type=\"text\" value=\"12-02-2012\">\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n\nFormat as component with reset button to clear the input field.\n\n```html\n<div class=\"input-append date\" id=\"datetimepicker\" data-date=\"12-02-2012\" data-date-format=\"dd-mm-yyyy\">\n    <input class=\"span2\" size=\"16\" type=\"text\" value=\"12-02-2012\">\n    <span class=\"add-on\"><i class=\"icon-remove\"></i></span>\n    <span class=\"add-on\"><i class=\"icon-th\"></i></span>\n</div>\n```\n\n## Methods\n\n### .datetimepicker(options)\n\nInitializes an datetimepicker.\n\n### remove\n\nArguments: None\n\nRemove the datetimepicker.  Removes attached events, internal attached objects, and\nadded HTML elements.\n\n    $('#datetimepicker').datetimepicker('remove');\n\n### show\n\nArguments: None\n\nShow the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('show');\n```\n\n### hide\n\nArguments: None\n\nHide the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('hide');\n```\n\n### update\n\nArguments: None\n\nUpdate the datetimepicker with the current input value.\n\n```javascript\n$('#datetimepicker').datetimepicker('update');\n```\n\n### setStartDate\n\nArguments:\n\n* startDate (String)\n\nSets a new lower date limit on the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('setStartDate', '2012-01-01');\n```\n\nOmit startDate (or provide an otherwise falsey value) to unset the limit.\n\n```javascript\n$('#datetimepicker').datetimepicker('setStartDate');\n$('#datetimepicker').datetimepicker('setStartDate', null);\n```\n\n### setEndDate\n\nArguments:\n\n* endDate (String)\n\nSets a new upper date limit on the datetimepicker.\n\n```javascript\n$('#datetimepicker').datetimepicker('setEndDate', '2012-12-31');\n```\n\nOmit endDate (or provide an otherwise falsey value) to unset the limit.\n\n```javascript\n$('#datetimepicker').datetimepicker('setEndDate');\n$('#datetimepicker').datetimepicker('setEndDate', null);\n```\n\n### setDaysOfWeekDisabled\n\nArguments:\n\n* daysOfWeekDisabled (String|Array)\n\nSets the days of week that should be disabled.\n\n```javascript\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', [0,6]);\n```\n\nOmit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days.\n\n```javascript\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled');\n$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', null);\n```\n\n## Events\n\nDatetimepicker class exposes a few events for manipulating the dates.\n\n### show\n\nFired when the date picker is displayed.\n\n### hide\n\nFired when the date picker is hidden.\n\n### changeDate\n\nFired when the date is changed.\n\n```javascript\n$('#date-end')\n    .datetimepicker()\n    .on('changeDate', function(ev){\n        if (ev.date.valueOf() < date-start-display.valueOf()){\n            ....\n        }\n    });\n```\n\n### changeYear\n\nFired when the *view* year is changed from decade view.\n\n### changeMonth\n\nFired when the *view* month is changed from year view.\n\n### outOfRange\n\nFired when you pick a date before the *startDate* or after the *endDate* or when you specify a date via the method *setDate* or *setUTCDate*..\n\n## Keyboard support\n\nThe datetimepicker includes some keyboard navigation:\n\n### up, down, left, right arrow keys\n\nBy themselves, left/right will move backward/forward one day, up/down will move back/forward one week.\n\nWith the shift key, up/left will move backward one month, down/right will move forward one month.\n\nWith the ctrl key, up/left will move backward one year, down/right will move forward oone year.\n\nShift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.\n\n### escape\n\nThe escape key can be used to hide and re-show the datetimepicker; this is necessary if the user wants to manually edit the value.\n\n### enter\n\nWhen the picker is visible, enter will simply hide it.  When the picker is not visible, enter will have normal effects -- submitting the current form, etc.\n\n## I18N\n\nThe plugin supports i18n for the month and weekday names and the `weekStart` option.  The default is English ('en'); other available translations are avilable in the `js/locales/` directory, simply include your desired locale after the plugin.  To add more languages, simply add a key to `$.fn.datetimepicker.dates`, before calling `.datetimepicker()`.  Example:\n\n```javascript\n$.fn.datetimepicker.dates['en'] = {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\"\n};\n```\n\nRight-to-left languages may also include `rtl: true` to make the calendar display appropriately.\n\nIf your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding.  Simply add `charset=\"UTF-8\"` to your `script` tag:\n\n```html\n<script type=\"text/javascript\" src=\"bootstrap-datetimepicker.de.js\" charset=\"UTF-8\"></script>\n```\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/css/datetimepicker.css",
    "content": "/*!\n * Datetimepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n */\n.datetimepicker {\n  padding: 4px;\n  margin-top: 1px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n  /*.dow {\n\t\tborder-top: 1px solid #ddd !important;\n\t}*/\n\n}\n.datetimepicker-inline {\n  width: 220px;\n}\n.datetimepicker.datetimepicker-rtl {\n  direction: rtl;\n}\n.datetimepicker.datetimepicker-rtl table tr td span {\n  float: right;\n}\n.datetimepicker-dropdown, .datetimepicker-dropdown-left {\n  top: 0;\n  left: 0;\n}\n.datetimepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: 6px;\n}\n.datetimepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: 7px;\n}\n.datetimepicker-dropdown-left:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  right: 6px;\n}\n.datetimepicker-dropdown-left:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  right: 7px;\n}\n.datetimepicker > div {\n  display: none;\n}\n.datetimepicker.minutes div.datetimepicker-minutes {\n    display: block;\n}\n.datetimepicker.hours div.datetimepicker-hours {\n    display: block;\n}\n.datetimepicker.days div.datetimepicker-days {\n    display: block;\n}\n.datetimepicker.months div.datetimepicker-months {\n  display: block;\n}\n.datetimepicker.years div.datetimepicker-years {\n  display: block;\n}\n.datetimepicker table {\n  margin: 0;\n}\n.datetimepicker  td,\n.datetimepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datetimepicker table tr td,\n.table-striped .datetimepicker table tr th {\n  background-color: transparent;\n}\n.datetimepicker table tr td.minute:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.hour:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.day:hover {\n    background: #eeeeee;\n    cursor: pointer;\n}\n.datetimepicker table tr td.old,\n.datetimepicker table tr td.new {\n  color: #999999;\n}\n.datetimepicker table tr td.disabled,\n.datetimepicker table tr td.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td.today,\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);\n  background-image: linear-gradient(top, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n.datetimepicker table tr td.today:hover,\n.datetimepicker table tr td.today:hover:hover,\n.datetimepicker table tr td.today.disabled:hover,\n.datetimepicker table tr td.today.disabled:hover:hover,\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active,\n.datetimepicker table tr td.today.disabled,\n.datetimepicker table tr td.today:hover.disabled,\n.datetimepicker table tr td.today.disabled.disabled,\n.datetimepicker table tr td.today.disabled:hover.disabled,\n.datetimepicker table tr td.today[disabled],\n.datetimepicker table tr td.today:hover[disabled],\n.datetimepicker table tr td.today.disabled[disabled],\n.datetimepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datetimepicker table tr td.today:active,\n.datetimepicker table tr td.today:hover:active,\n.datetimepicker table tr td.today.disabled:active,\n.datetimepicker table tr td.today.disabled:hover:active,\n.datetimepicker table tr td.today.active,\n.datetimepicker table tr td.today:hover.active,\n.datetimepicker table tr td.today.disabled.active,\n.datetimepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datetimepicker table tr td.active,\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td.active:hover,\n.datetimepicker table tr td.active:hover:hover,\n.datetimepicker table tr td.active.disabled:hover,\n.datetimepicker table tr td.active.disabled:hover:hover,\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active,\n.datetimepicker table tr td.active.disabled,\n.datetimepicker table tr td.active:hover.disabled,\n.datetimepicker table tr td.active.disabled.disabled,\n.datetimepicker table tr td.active.disabled:hover.disabled,\n.datetimepicker table tr td.active[disabled],\n.datetimepicker table tr td.active:hover[disabled],\n.datetimepicker table tr td.active.disabled[disabled],\n.datetimepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td.active:active,\n.datetimepicker table tr td.active:hover:active,\n.datetimepicker table tr td.active.disabled:active,\n.datetimepicker table tr td.active.disabled:hover:active,\n.datetimepicker table tr td.active.active,\n.datetimepicker table tr td.active:hover.active,\n.datetimepicker table tr td.active.disabled.active,\n.datetimepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datetimepicker .datetimepicker-hours span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker .datetimepicker-hours table tr td span.hour_am,\n.datetimepicker .datetimepicker-hours table tr td span.hour_pm {\n  width: 14.6%;\n}\n.datetimepicker .datetimepicker-hours fieldset legend,\n.datetimepicker .datetimepicker-minutes fieldset legend {\n  margin-bottom: inherit;\n  line-height: 30px;\n}\n.datetimepicker .datetimepicker-minutes span {\n  height: 26px;\n  line-height: 26px;\n}\n.datetimepicker table tr td span:hover {\n  background: #eeeeee;\n}\n.datetimepicker table tr td span.disabled,\n.datetimepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999999;\n  cursor: default;\n}\n.datetimepicker table tr td span.active,\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(top, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datetimepicker table tr td span.active:hover,\n.datetimepicker table tr td span.active:hover:hover,\n.datetimepicker table tr td span.active.disabled:hover,\n.datetimepicker table tr td span.active.disabled:hover:hover,\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active,\n.datetimepicker table tr td span.active.disabled,\n.datetimepicker table tr td span.active:hover.disabled,\n.datetimepicker table tr td span.active.disabled.disabled,\n.datetimepicker table tr td span.active.disabled:hover.disabled,\n.datetimepicker table tr td span.active[disabled],\n.datetimepicker table tr td span.active:hover[disabled],\n.datetimepicker table tr td span.active.disabled[disabled],\n.datetimepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datetimepicker table tr td span.active:active,\n.datetimepicker table tr td span.active:hover:active,\n.datetimepicker table tr td span.active.disabled:active,\n.datetimepicker table tr td span.active.disabled:hover:active,\n.datetimepicker table tr td span.active.active,\n.datetimepicker table tr td span.active:hover.active,\n.datetimepicker table tr td span.active.disabled.active,\n.datetimepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datetimepicker table tr td span.old {\n  color: #999999;\n}\n.datetimepicker th.switch {\n  width: 145px;\n}\n.datetimepicker thead tr:first-child th,\n.datetimepicker tfoot tr:first-child th {\n  cursor: pointer;\n}\n.datetimepicker thead tr:first-child th:hover,\n.datetimepicker tfoot tr:first-child th:hover {\n  background: #eeeeee;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js",
    "content": "﻿/* =========================================================\n * bootstrap-datetimepicker.js\n * =========================================================\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Improvements by Sébastien Malot\n * Project URL : http://www.malot.fr/bootstrap-datetimepicker\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function( $ ) {\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate(), today.getUTCHours(), today.getUTCMinutes(), today.getUTCSeconds(), 0);\n\t}\n\n\t// Picker object\n\n\tvar Datetimepicker = function(element, options) {\n\t\tvar that = this;\n\n\t\tthis.element = $(element);\n\t\tthis.language = options.language || this.element.data('date-language') || \"en\";\n\t\tthis.language = this.language in dates ? this.language : \"en\";\n\t\tthis.isRTL = dates[this.language].rtl || false;\n\t\tthis.formatType = options.formatType || this.element.data('format-type') || 'standard';\n\t\tthis.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType);\n\t\tthis.isInline = false;\n\t\tthis.isVisible = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.is('.date') ? this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar').parent() : false;\n\t\tthis.componentReset = this.element.is('.date') ? this.element.find('.add-on .icon-remove').parent() : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0) {\n\t\t\tthis.component = false;\n\t\t}\n\t\tthis.linkField = options.linkField || this.element.data('link-field') || false;\n\t\tthis.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType);\n\t\tthis.minuteStep = options.minuteStep || this.element.data('minute-step') || 5;\n\t\tthis.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right';\n        this.showMeridian = options.showMeridian || this.element.data('show-meridian') || false;\n        this.initialDate = options.initialDate || new Date();\n\n\t\tthis._attachEvents();\n\n\t\tthis.minView = 0;\n\t\tif ('minView' in options) {\n\t\t\tthis.minView = options.minView;\n\t\t} else if ('minView' in this.element.data()) {\n\t\t\tthis.minView = this.element.data('min-view');\n\t\t}\n\t\tthis.minView = DPGlobal.convertViewMode(this.minView);\n\n\t\tthis.maxView = DPGlobal.modes.length-1;\n\t\tif ('maxView' in options) {\n\t\t\tthis.maxView = options.maxView;\n\t\t} else if ('maxView' in this.element.data()) {\n\t\t\tthis.maxView = this.element.data('max-view');\n\t\t}\n\t\tthis.maxView = DPGlobal.convertViewMode(this.maxView);\n\n\t\tthis.startViewMode = 2;\n\t\tif ('startView' in options) {\n\t\t\tthis.startViewMode = options.startView;\n\t\t} else if ('startView' in this.element.data()) {\n\t\t\tthis.startViewMode = this.element.data('start-view');\n\t\t}\n\t\tthis.startViewMode = DPGlobal.convertViewMode(this.startViewMode);\n\t\tthis.viewMode = this.startViewMode;\n\n        this.viewSelect = this.minView;\n        if ('viewSelect' in options) {\n            this.viewSelect = options.viewSelect;\n        } else if ('viewSelect' in this.element.data()) {\n            this.viewSelect = this.element.data('view-select');\n        }\n        this.viewSelect = DPGlobal.convertViewMode(this.viewSelect);\n\n\t\tthis.forceParse = true;\n\t\tif ('forceParse' in options) {\n\t\t\tthis.forceParse = options.forceParse;\n\t\t} else if ('dateForceParse' in this.element.data()) {\n\t\t\tthis.forceParse = this.element.data('date-force-parse');\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template)\n\t\t\t\t\t\t\t.appendTo(this.isInline ? this.element : 'body')\n\t\t\t\t\t\t\t.on({\n\t\t\t\t\t\t\t\tclick: $.proxy(this.click, this),\n\t\t\t\t\t\t\t\tmousedown: $.proxy(this.mousedown, this)\n\t\t\t\t\t\t\t});\n\n\t\tif (this.isInline) {\n\t\t\tthis.picker.addClass('datetimepicker-inline');\n\t\t} else {\n\t\t\tif (this.component && this.pickerPosition == 'bottom-left') {\n\t\t\t\tthis.picker.addClass('datetimepicker-dropdown-left dropdown-menu');\n\t\t\t} else {\n\t\t\t\tthis.picker.addClass('datetimepicker-dropdown dropdown-menu');\n\t\t\t}\n\t\t}\n\t\tif (this.isRTL){\n\t\t\tthis.picker.addClass('datetimepicker-rtl');\n\t\t\tthis.picker.find('.prev i, .next i')\n\t\t\t\t\t\t.toggleClass('icon-arrow-left icon-arrow-right');\n\t\t}\n\t\t$(document).on('mousedown', function (e) {\n\t\t\t// Clicked outside the datetimepicker, hide it\n\t\t\tif ($(e.target).closest('.datetimepicker').length === 0) {\n\t\t\t\tthat.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis.autoclose = false;\n\t\tif ('autoclose' in options) {\n\t\t\tthis.autoclose = options.autoclose;\n\t\t} else if ('dateAutoclose' in this.element.data()) {\n\t\t\tthis.autoclose = this.element.data('date-autoclose');\n\t\t}\n\n\t\tthis.keyboardNavigation = true;\n\t\tif ('keyboardNavigation' in options) {\n\t\t\tthis.keyboardNavigation = options.keyboardNavigation;\n\t\t} else if ('dateKeyboardNavigation' in this.element.data()) {\n\t\t\tthis.keyboardNavigation = this.element.data('date-keyboard-navigation');\n\t\t}\n\n\t\tthis.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false);\n\t\tthis.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false);\n\n\t\tthis.weekStart = ((options.weekStart || this.element.data('date-weekstart') || dates[this.language].weekStart || 0) % 7);\n\t\tthis.weekEnd = ((this.weekStart + 6) % 7);\n\t\tthis.startDate = -Infinity;\n\t\tthis.endDate = Infinity;\n\t\tthis.daysOfWeekDisabled = [];\n\t\tthis.setStartDate(options.startDate || this.element.data('date-startdate'));\n\t\tthis.setEndDate(options.endDate || this.element.data('date-enddate'));\n\t\tthis.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled'));\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif(this.isInline) {\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatetimepicker.prototype = {\n\t\tconstructor: Datetimepicker,\n\n\t\t_events: [],\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tif (this.isInput) { // single input\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\telse if (this.component && this.hasInput){ // component: input + button\n\t\t\t\tthis._events = [\n\t\t\t\t\t// For components that are not readonly, allow keyboard nav\n\t\t\t\t\t[this.element.find('input'), {\n\t\t\t\t\t\tfocus: $.proxy(this.show, this),\n\t\t\t\t\t\tkeyup: $.proxy(this.update, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}],\n\t\t\t\t\t[this.component, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t\tif (this.componentReset) {\n\t\t\t\t\tthis._events.push([\n\t\t\t\t\t\tthis.componentReset,\n\t\t\t\t\t\t{click: $.proxy(this.reset, this)}\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.element.is('div')) {  // inline datetimepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.on(ev);\n\t\t\t}\n\t\t},\n\t\t\n\t\t_detachEvents: function(){\n\t\t\tfor (var i=0, el, ev; i<this._events.length; i++){\n\t\t\t\tel = this._events[i][0];\n\t\t\t\tev = this._events[i][1];\n\t\t\t\tel.off(ev);\n\t\t\t}\n\t\t\tthis._events = [];\n\t\t},\n\n\t\tshow: function(e) {\n\t\t\tthis.picker.show();\n\t\t\tthis.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n\t\t\tif (this.forceParse) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t\tthis.place();\n\t\t\t$(window).on('resize', $.proxy(this.place, this));\n\t\t\tif (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tthis.isVisible = true;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'show',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\thide: function(e){\n\t\t\tif(!this.isVisible) return;\n\t\t\tif(this.isInline) return;\n\t\t\tthis.picker.hide();\n\t\t\t$(window).off('resize', this.place);\n\t\t\tthis.viewMode = this.startViewMode;\n\t\t\tthis.showMode();\n\t\t\tif (!this.isInput) {\n\t\t\t\t$(document).off('mousedown', this.hide);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val()  || \n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis.isVisible = false;\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'hide',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t},\n\n\t\tremove: function() {\n\t\t\tthis._detachEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datetimepicker;\n\t\t},\n\n\t\tgetDate: function() {\n\t\t\tvar d = this.getUTCDate();\n\t\t\treturn new Date(d.getTime() + (d.getTimezoneOffset()*60000));\n\t\t},\n\n\t\tgetUTCDate: function() {\n\t\t\treturn this.date;\n\t\t},\n\n\t\tsetDate: function(d) {\n\t\t\tthis.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));\n\t\t},\n\n\t\tsetUTCDate: function(d) {\n\t\t\tif (d >= this.startDate && d <= this.endDate) {\n\t\t\t\tthis.date = d;\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.viewDate = this.date;\n\t\t\t\tthis.fill();\n\t\t\t} else {\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\tdate: d,\n\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\tendDate: this.endDate\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tsetValue: function() {\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput) {\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').prop('value', formatted);\n\t\t\t\t}\n\t\t\t\tthis.element.data('date', formatted);\n\t\t\t} else {\n\t\t\t\tthis.element.prop('value', formatted);\n\t\t\t}\n\t\t\tif (this.linkField) {\n\t\t\t\t$('#' + this.linkField).val(this.getFormattedDate(this.linkFormat));\n\t\t\t}\n\t\t},\n\n\t\tgetFormattedDate: function(format) {\n\t\t\tif(format == undefined) format = this.format;\n\t\t\treturn DPGlobal.formatDate(this.date, format, this.language, this.formatType);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis.startDate = startDate || -Infinity;\n\t\t\tif (this.startDate !== -Infinity) {\n\t\t\t\tthis.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis.endDate = endDate || Infinity;\n\t\t\tif (this.endDate !== Infinity) {\n\t\t\t\tthis.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType);\n\t\t\t}\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis.daysOfWeekDisabled = daysOfWeekDisabled || [];\n\t\t\tif (!$.isArray(this.daysOfWeekDisabled)) {\n\t\t\t\tthis.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\\s*/);\n\t\t\t}\n\t\t\tthis.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) {\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif(this.isInline) return;\n\t\t\tvar zIndex = parseInt(this.element.parents().filter(function() {\n\t\t\t\t\t\t\treturn $(this).css('z-index') != 'auto';\n\t\t\t\t\t\t}).first().css('z-index'))+10;\n\t\t\tvar offset, left;\n\t\t\tif (this.component) {\n\t\t\t\toffset = this.component.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t\tif (this.pickerPosition == 'bottom-left') {\n\t\t\t\t\tleft += this.component.outerWidth() - this.picker.outerWidth();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toffset = this.element.offset();\n\t\t\t\tleft = offset.left;\n\t\t\t}\n\t\t\tthis.picker.css({\n\t\t\t\ttop: offset.top + this.height,\n\t\t\t\tleft: left,\n\t\t\t\tzIndex: zIndex\n\t\t\t});\n\t\t},\n\n\t\tupdate: function(){\n\t\t\tvar date, fromArgs = false;\n\t\t\tif(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {\n\t\t\t\tdate = arguments[0];\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdate = this.isInput ? this.element.prop('value') : this.element.data('date') || this.element.find('input').prop('value') || this.initialDate;\n\t\t\t}\n\n\t\t\tif (!date) {\n\t\t\t\tdate = new Date();\n\t\t\t\tfromArgs = false;\n\t\t\t}\n\n\t\t\tthis.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType);\n\n\t\t\tif (fromArgs) this.setValue();\n\n\t\t\tif (this.date < this.startDate) {\n\t\t\t\tthis.viewDate = new Date(this.startDate);\n\t\t\t} else if (this.date > this.endDate) {\n\t\t\t\tthis.viewDate = new Date(this.endDate);\n\t\t\t} else {\n\t\t\t\tthis.viewDate = new Date(this.date);\n\t\t\t}\n\t\t\tthis.fill();\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.weekStart,\n\t\t\thtml = '<tr>';\n\t\t\twhile (dowCnt < this.weekStart + 7) {\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datetimepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12) {\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-months td').html(html);\n\t\t},\n\n\t\tfill: function() {\n\t\t\tif (this.date == null || this.viewDate == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tdayMonth = d.getUTCDate(),\n\t\t\t\thours = d.getUTCHours(),\n\t\t\t\tminutes = d.getUTCMinutes(),\n\t\t\t\tstartYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\n\t\t\t\tcurrentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(),\n\t\t\t\ttoday = new Date();\n\t\t\tthis.picker.find('.datetimepicker-days thead th:eq(1)')\n\t\t\t\t\t\t.text(dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('.datetimepicker-hours thead th:eq(1)')\n\t\t\t\t\t\t.text(dayMonth+' '+dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('.datetimepicker-minutes thead th:eq(1)')\n\t\t\t\t\t\t.text(dayMonth+' '+dates[this.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot th.today')\n\t\t\t\t\t\t.text(dates[this.language].today)\n\t\t\t\t\t\t.toggle(this.todayBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\t/*var prevMonth = UTCDate(year, month, 0,0,0,0,0);\n\t\t\tprevMonth.setUTCDate(prevMonth.getDate() - (prevMonth.getUTCDay() - this.weekStart + 7)%7);*/\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28,0,0,0,0),\n                day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t    prevMonth.setUTCDate(day);\n      \t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile(prevMonth.valueOf() < nextMonth) {\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekStart) {\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t}\n\t\t\t\tclsName = '';\n\t\t\t\tif (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\n\t\t\t\t\tclsName += ' old';\n\t\t\t\t} else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\n\t\t\t\t\tclsName += ' new';\n\t\t\t\t}\n\t\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\t\tif (this.todayHighlight &&\n\t\t\t\t\tprevMonth.getUTCFullYear() == today.getFullYear() &&\n\t\t\t\t\tprevMonth.getUTCMonth() == today.getMonth() &&\n\t\t\t\t\tprevMonth.getUTCDate() == today.getDate()) {\n\t\t\t\t\tclsName += ' today';\n\t\t\t\t}\n\t\t\t\tif (prevMonth.valueOf() == currentDate) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n\t\t\t\tif ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate ||\n\t\t\t\t\t$.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t}\n\t\t\t\thtml.push('<td class=\"day'+clsName+'\">'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\tif (prevMonth.getUTCDay() == this.weekEnd) {\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-days tbody').empty().append(html.join(''));\n\n\t\t\thtml = [];\n            var txt = '', meridian = '', meridianOld = '';\n\t\t\tfor (var i=0;i<24;i++) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, i);\n\t\t\t\tclsName = '';\n\t\t\t\t// We want the previous hour for the startDate\n\t\t\t\tif ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (hours == i) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n                if (this.showMeridian && dates[this.language].meridiem.length == 2) {\n                    meridian = (i<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n                    if (meridian != meridianOld) {\n                        if (meridianOld != '') {\n                            html.push('</fieldset>');\n                        }\n                        html.push('<fieldset class=\"hour\"><legend>'+meridian.toUpperCase()+'</legend>');\n                    }\n                    meridianOld = meridian;\n                    txt = (i%12?i%12:12);\n                    html.push('<span class=\"hour'+clsName+' hour_'+(i<12?'am':'pm')+'\">'+txt+'</span>');\n                    if (i == 23) {\n                        html.push('</fieldset>');\n                    }\n                } else {\n                    txt = i+':00';\n                    html.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n                }\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-hours td').html(html.join(''));\n\n\t\t\thtml = [];\n            txt = '', meridian = '', meridianOld = '';\n\t\t\tfor(var i=0;i<60;i+=this.minuteStep) {\n\t\t\t\tvar actual = UTCDate(year, month, dayMonth, hours, i, 0);\n\t\t\t\tclsName = '';\n\t\t\t\tif (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\n\t\t\t\t\tclsName += ' disabled';\n\t\t\t\t} else if (Math.floor(minutes/this.minuteStep) == Math.floor(i/this.minuteStep)) {\n\t\t\t\t\tclsName += ' active';\n\t\t\t\t}\n                if (this.showMeridian && dates[this.language].meridiem.length == 2) {\n                    meridian = (hours<12?dates[this.language].meridiem[0]:dates[this.language].meridiem[1]);\n                    if (meridian != meridianOld) {\n                        if (meridianOld != '') {\n                            html.push('</fieldset>');\n                        }\n                        html.push('<fieldset class=\"minute\"><legend>'+meridian.toUpperCase()+'</legend>');\n                    }\n                    meridianOld = meridian;\n                    txt = (hours%12?hours%12:12);\n                    //html.push('<span class=\"minute'+clsName+' minute_'+(hours<12?'am':'pm')+'\">'+txt+'</span>');\n                    html.push('<span class=\"minute'+clsName+'\">'+txt+':'+(i<10?'0'+i:i)+'</span>');\n                    if (i == 59) {\n                        html.push('</fieldset>');\n                    }\n                } else {\n                    txt = i+':00';\n                    //html.push('<span class=\"hour'+clsName+'\">'+txt+'</span>');\n                    html.push('<span class=\"minute'+clsName+'\">'+hours+':'+(i<10?'0'+i:i)+'</span>');\n                }\n\t\t\t}\n\t\t\tthis.picker.find('.datetimepicker-minutes td').html(html.join(''));\n\n\t\t\tvar currentYear = this.date.getUTCFullYear();\n\t\t\tvar months = this.picker.find('.datetimepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\t\t\tif (currentYear == year) {\n\t\t\t\tmonths.eq(this.date.getUTCMonth()).addClass('active');\n\t\t\t}\n\t\t\tif (year < startYear || year > endYear) {\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year == startYear) {\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year == endYear) {\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datetimepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tfor (var i = -1; i < 11; i++) {\n\t\t\t\thtml += '<span class=\"year'+(i == -1 || i == 10 ? ' old' : '')+(currentYear == year ? ' active' : '')+(year < startYear || year > endYear ? ' disabled' : '')+'\">'+year+'</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function() {\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tday = d.getUTCDate(),\n\t\t\t\thour = d.getUTCHours();\n\t\t\tswitch (this.viewMode) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && hour <= this.startDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t  && day >= this.endDate.getUTCDate()\n\t\t\t\t\t\t\t\t\t\t\t\t  && hour >= this.endDate.getUTCHours()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t\t && day <= this.startDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()\n\t\t\t\t\t\t\t\t\t\t\t\t  && day >= this.endDate.getUTCDate()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t\t && month <= this.startDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() \n\t\t\t\t\t\t\t\t\t\t\t\t  && month >= this.endDate.getUTCMonth()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 4:\n\t\t\t\t\tif (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th, legend');\n\t\t\tif (target.length == 1) {\n\t\t\t\tif (target.is('.disabled')) {\n\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\ttype: 'outOfRange',\n\t\t\t\t\t\tdate: this.viewDate,\n\t\t\t\t\t\tstartDate: this.startDate,\n\t\t\t\t\t\tendDate: this.endDate\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch(target[0].nodeName.toLowerCase()) {\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch(target[0].className) {\n\t\t\t\t\t\t\tcase 'switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch(this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveHour(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveDate(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n\n\t\t\t\t\t\t\t\tthis.viewMode = this.startViewMode;\n\t\t\t\t\t\t\t\tthis.showMode(0);\n\t\t\t\t\t\t\t\tthis._setDate(date);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.is('.disabled')) {\n                            var year    = this.viewDate.getUTCFullYear(),\n                                month   = this.viewDate.getUTCMonth(),\n                                day     = this.viewDate.getUTCDate(),\n                                hours   = this.viewDate.getUTCHours(),\n                                minutes = this.viewDate.getUTCMinutes(),\n                                seconds = this.viewDate.getUTCSeconds();\n\n\t\t\t\t\t\t\tif (target.is('.month')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n                                day   = this.viewDate.getUTCDate();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMonth',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 3) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.year')) {\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10) || 0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeYear',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 4) {\n                                    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.hour')){\n\t\t\t\t\t\t\t\thours = parseInt(target.text(), 10) || 0;\n                                if (target.hasClass('hour_am') || target.hasClass('hour_pm')) {\n                                    if (hours == 12 && target.hasClass('hour_am')) {\n                                        hours = 0;\n                                    } else if (hours != 12 && target.hasClass('hour_pm')) {\n                                        hours += 12;\n                                    }\n                                }\n                                this.viewDate.setUTCHours(hours);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeHour',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 1) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t} else if (target.is('.minute')){\n\t\t\t\t\t\t\t\tminutes = parseInt(target.text().substr(target.text().indexOf(':')+1), 10) || 0;\n                                this.viewDate.setUTCMinutes(minutes);\n\t\t\t\t\t\t\t\tthis.element.trigger({\n\t\t\t\t\t\t\t\t\ttype: 'changeMinute',\n\t\t\t\t\t\t\t\t\tdate: this.viewDate\n\t\t\t\t\t\t\t\t});\n                                if (this.viewSelect >= 0) {\n\t\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                                }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.viewMode != 0) {\n\t\t\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t\t\tif (this.autoclose) {\n\t\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.is('.day') && !target.is('.disabled')){\n\t\t\t\t\t\t\tvar day = parseInt(target.text(), 10) || 1;\n\t\t\t\t\t\t\tvar year = this.viewDate.getUTCFullYear(),\n\t\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\t\t\t\t\thours = this.viewDate.getUTCHours(),\n\t\t\t\t\t\t\t\tminutes = this.viewDate.getUTCMinutes(),\n\t\t\t\t\t\t\t\tseconds = this.viewDate.getUTCSeconds();\n\t\t\t\t\t\t\tif (target.is('.old')) {\n\t\t\t\t\t\t\t\tif (month === 0) {\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.is('.new')) {\n\t\t\t\t\t\t\t\tif (month == 11) {\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n                            this.viewDate.setUTCDate(day);\n                            this.viewDate.setUTCMonth(month);\n                            this.viewDate.setUTCFullYear(year);\n                            this.element.trigger({\n                                type: 'changeDay',\n                                date: this.viewDate\n                            });\n                            if (this.viewSelect >= 2) {\n\t\t\t\t\t\t\t    this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n                            }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar oldViewMode = this.viewMode;\n\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\tif (oldViewMode == this.viewMode && this.autoclose) {\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which == 'date')\n\t\t\t\tthis.date = date;\n\t\t\tif (!which || which  == 'view')\n\t\t\t\tthis.viewDate = date;\n\t\t\tthis.fill();\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: 'changeDate',\n\t\t\t\tdate: this.date\n\t\t\t});\n\t\t\tthis.setValue();\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element) {\n\t\t\t\telement.change();\n\t\t\t\tif (this.autoclose && (!which || which == 'date')) {\n\t\t\t\t\t//this.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tmoveMinute: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep));\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveHour: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCHours(new_date.getUTCHours() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveDate: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf());\n\t\t\t//dir = dir > 0 ? 1 : -1;\n\t\t\tnew_date.setUTCDate(new_date.getUTCDate() + dir);\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!dir) return date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag == 1){\n\t\t\t\ttest = dir == -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){ return new_date.getUTCMonth() == month; }\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){ return new_date.getUTCMonth() != new_month; };\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t} else {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i<mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){ return new_month != new_date.getUTCMonth(); };\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.startDate && date <= this.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (this.picker.is(':not(:visible)')){\n\t\t\t\tif (e.keyCode == 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, day, month,\n\t\t\t\tnewDate, newViewDate;\n\t\t\tswitch(e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 37 ? -1 : 1;\n                    viewMode = this.viewMode;\n                    if (e.ctrlKey) {\n                        viewMode += 2;\n                    } else if (e.shiftKey) {\n                        viewMode += 1;\n                    }\n                    if (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n                    } else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n                    } else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir);\n                    } else if (viewMode == 1) {\n\t\t\t\t\t\tnewDate = this.moveHour(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveHour(this.viewDate, dir);\n                    } else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir);\n                    }\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.keyboardNavigation) break;\n\t\t\t\t\tdir = e.keyCode == 38 ? -1 : 1;\n                    viewMode = this.viewMode;\n                    if (e.ctrlKey) {\n                        viewMode += 2;\n                    } else if (e.shiftKey) {\n                        viewMode += 1;\n                    }\n                    if (viewMode == 4) {\n\t\t\t\t\t\tnewDate = this.moveYear(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(this.viewDate, dir);\n                    } else if (viewMode == 3) {\n\t\t\t\t\t\tnewDate = this.moveMonth(this.date, dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(this.viewDate, dir);\n                    } else if (viewMode == 2) {\n\t\t\t\t\t\tnewDate = this.moveDate(this.date, dir * 7);\n\t\t\t\t\t\tnewViewDate = this.moveDate(this.viewDate, dir * 7);\n                    } else if (viewMode == 1) {\n                        if (this.showMeridian) {\n                            newDate = this.moveHour(this.date, dir * 6);\n                            newViewDate = this.moveHour(this.viewDate, dir * 6);\n                        } else {\n                            newDate = this.moveHour(this.date, dir * 4);\n                            newViewDate = this.moveHour(this.viewDate, dir * 4);\n                        }\n                    } else if (viewMode == 0) {\n\t\t\t\t\t\tnewDate = this.moveMinute(this.date, dir * 4);\n\t\t\t\t\t\tnewViewDate = this.moveMinute(this.viewDate, dir * 4);\n                    }\n\t\t\t\t\tif (this.dateWithinRange(newDate)){\n\t\t\t\t\t\tthis.date = newDate;\n\t\t\t\t\t\tthis.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n                    if (this.viewMode != 0) {\n                        var oldViewMode = this.viewMode;\n                        this.showMode(-1);\n                        this.fill();\n                        if (oldViewMode == this.viewMode && this.autoclose) {\n                            this.hide();\n                        }\n                    } else {\n                        this.fill();\n                        if (this.autoclose) {\n\t\t\t\t\t        this.hide();\n                        }\n                    }\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tthis.element.trigger({\n\t\t\t\t\ttype: 'changeDate',\n\t\t\t\t\tdate: this.date\n\t\t\t\t});\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput) {\n\t\t\t\t\telement = this.element;\n\t\t\t\t} else if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir) {\n\t\t\tif (dir) {\n\t\t\t\tvar newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));\n\t\t\t\tif (newViewMode >= this.minView && newViewMode <= this.maxView) {\n\t\t\t\t\tthis.viewMode = newViewMode;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/*\n\t\t\t  vitalets: fixing bug of very special conditions:\n\t\t\t  jquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover.\n\t\t\t  Method show() does not set display css correctly and datetimepicker is not shown.\n\t\t\t  Changed to .css('display', 'block') solve the problem.\n\t\t\t  See https://github.com/vitalets/x-editable/issues/37\n\n\t\t\t  In jquery 1.7.2+ everything works fine.\n\t\t\t*/\n\t\t\t//this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n\t\t\tthis.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t},\n\t\t\n\t\treset: function(e) {\n\t\t\tthis._setDate(null, 'date');\n\t\t}\n\t};\n\n\t$.fn.datetimepicker = function ( option ) {\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datetimepicker'),\n\t\t\t\toptions = typeof option == 'object' && option;\n\t\t\tif (!data) {\n\t\t\t\t$this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults,options))));\n\t\t\t}\n\t\t\tif (typeof option == 'string' && typeof data[option] == 'function') {\n\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n\t\t});\n\t};\n\n\t$.fn.datetimepicker.defaults = {\n\t};\n\t$.fn.datetimepicker.Constructor = Datetimepicker;\n\tvar dates = $.fn.datetimepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\tmeridiem: [\"am\", \"pm\"],\n\t\t\tsuffix: [\"st\", \"nd\", \"rd\", \"th\"],\n\t\t\ttoday: \"Today\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'minutes',\n\t\t\t\tnavFnc: 'Hours',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'hours',\n\t\t\t\tnavFnc: 'Date',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function (year) {\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\n\t\t},\n\t\tgetDaysInMonth: function (year, month) {\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\n\t\t},\n\t\tgetDefaultFormat: function (type, field) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii';\n\t\t\t\telse\n\t\t\t\t\treturn 'yyyy-mm-dd hh:ii:ss';\n\t\t\t} else if (type == \"php\") {\n\t\t\t\tif (field == 'input')\n\t\t\t\t\treturn 'Y-m-d H:i';\n\t\t\t\telse\n\t\t\t\t\treturn 'Y-m-d H:i:s';\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tvalidParts: function (type) {\n\t\t\tif (type == \"standard\") {\n\t\t\t\treturn /hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;\n\t\t\t} else if (type == \"php\") {\n\t\t\t\treturn /[dDjlNwzFmMnStyYaABgGhHis]/g;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t},\n\t\tnonpunctuation: /[^ -\\/:-@\\[-`{-~\\t\\n\\rTZ]+/g,\n\t\tparseFormat: function(format, type){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts(type), '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts(type));\n\t\t\tif (!separators || !separators.length || !parts || parts.length == 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, type) {\n\t\t\tif (date instanceof Date) {\n\t\t\t\tvar dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\n                dateUTC.setMilliseconds(0);\n\t\t\t\treturn dateUTC;\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii', type);\n\t\t\t}\n\t\t\tif (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\n\t\t\t\tformat = this.parseFormat('yyyy-mm-dd hh:ii:ss', type);\n\t\t\t}\n\t\t\tif (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\n\t\t\t\tvar part_re = /([-+]\\d+)([dmwy])/,\n\t\t\t\t\tparts = date.match(/([-+]\\d+)([dmwy])/g),\n\t\t\t\t\tpart, dir;\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (var i=0; i<parts.length; i++) {\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch(part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0);\n\t\t\t}\n\t\t\tvar parts = date && date.match(this.nonpunctuation) || [],\n\t\t\t\tdate = new Date(0, 0, 0, 0, 0, 0, 0),\n\t\t\t\tparsed = {},\n\t\t\t\tsetters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\thh: function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\th:  function(d,v){ return d.setUTCHours(v); },\n\t\t\t\t\tHH: function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tH:  function(d,v){ return d.setUTCHours(v==12?0:v); },\n\t\t\t\t\tii: function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\ti:  function(d,v){ return d.setUTCMinutes(v); },\n\t\t\t\t\tss: function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\ts:  function(d,v){ return d.setUTCSeconds(v); },\n\t\t\t\t\tyyyy: function(d,v){ return d.setUTCFullYear(v); },\n\t\t\t\t\tyy: function(d,v){ return d.setUTCFullYear(2000+v); },\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v<0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() != v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){ return d.setUTCDate(v); },\n\t\t\t\t\tp: function(d,v){ return d.setUTCHours(v==1?d.getUTCHours()+12:d.getUTCHours()); }\n\t\t\t\t},\n\t\t\t\tval, filtered, part;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t    \tsetters_map['P'] = setters_map['p'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n\t\t\tif (parts.length == format.parts.length) {\n\t\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = format.parts[i];\n\t\t\t\t\tif (isNaN(val)) {\n\t\t\t\t\t\tswitch(part) {\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(function(){\n\t\t\t\t\t\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\t\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\t\t\t\t\t\treturn m == p;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t    case 'p':\n\t\t\t\t\t\t    case 'P':\n\t\t\t\t\t\t        val = $.inArray(parts[i].toLowerCase(), dates[language].meridiem);\n\t\t\t\t\t\t        break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tfor (var i=0, s; i<setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s]))\n\t\t\t\t\t\tsetters_map[s](date, parsed[s])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language, type){\n\t\t\tif (date == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar val;\n\t\t\tif (type == 'standard') {\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tyyyy: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\t// day\n\t\t\t\t\td: date.getUTCDate(),\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tp: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\th: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n                val.H  = (val.h%12==0? 12 : val.h%12);\n                val.HH = (val.H < 10 ? '0' : '') + val.H;\n                val.P  = val.p.toUpperCase();\n\t\t\t\tval.hh = (val.h < 10 ? '0' : '') + val.h;\n\t\t\t\tval.ii = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.ss = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\t} else if (type == 'php') {\n\t\t\t\t// php format\n\t\t\t\tval = {\n\t\t\t\t\t// year\n\t\t\t\t\ty: date.getUTCFullYear().toString().substring(2),\n\t\t\t\t\tY: date.getUTCFullYear(),\n\t\t\t\t\t// month\n\t\t\t\t\tF: dates[language].months[date.getUTCMonth()],\n\t\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\t\tn: date.getUTCMonth() + 1,\n\t\t\t\t\tt: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()),\n\t\t\t\t\t// day\n\t\t\t\t\tj: date.getUTCDate(),\n\t\t\t\t\tl: dates[language].days[date.getUTCDay()],\n\t\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\t\tw: date.getUTCDay(), // 0 -> 6\n\t\t\t\t\tN: (date.getUTCDay()==0?7:date.getUTCDay()),       // 1 -> 7\n\t\t\t\t\tS: (date.getUTCDate()%10<=dates[language].suffix.length?dates[language].suffix[date.getUTCDate()%10-1]:''),\n\t\t\t\t\t// hour\n\t\t\t\t\ta: (dates[language].meridiem.length==2?dates[language].meridiem[date.getUTCHours()<12?0:1]:''),\n\t\t\t\t\tg: (date.getUTCHours()%12==0?12:date.getUTCHours()%12),\n\t\t\t\t\tG: date.getUTCHours(),\n\t\t\t\t\t// minute\n\t\t\t\t\ti: date.getUTCMinutes(),\n\t\t\t\t\t// second\n\t\t\t\t\ts: date.getUTCSeconds()\n\t\t\t\t};\n\t\t\t\tval.m = (val.n < 10 ? '0' : '') + val.n;\n\t\t\t\tval.d = (val.j < 10 ? '0' : '') + val.j;\n\t\t\t\tval.A = val.a.toString().toUpperCase();\n\t\t\t\tval.h = (val.g < 10 ? '0' : '') + val.g;\n\t\t\t\tval.H = (val.G < 10 ? '0' : '') + val.G;\n\t\t\t\tval.i = (val.i < 10 ? '0' : '') + val.i;\n\t\t\t\tval.s = (val.s < 10 ? '0' : '') + val.s;\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Invalid format type.\");\n\t\t\t}\n\t\t\tvar date = [],\n\t\t\t\tseps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i < cnt; i++) {\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift())\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\tconvertViewMode: function(viewMode){\n\t\t\tswitch (viewMode) {\n\t\t\t\tcase 4:\n\t\t\t\tcase 'decade':\n\t\t\t\t\tviewMode = 4;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\tcase 'year':\n\t\t\t\t\tviewMode = 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'month':\n\t\t\t\t\tviewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'day':\n\t\t\t\t\tviewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\tcase 'hour':\n\t\t\t\t\tviewMode = 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn viewMode;\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\"><i class=\"icon-arrow-left\"/></th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\"><i class=\"icon-arrow-right\"/></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr></tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datetimepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-minutes\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-hours\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datetimepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datetimepicker.DPGlobal = DPGlobal;\n\n}( window.jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js",
    "content": "/**\n * Bulgarian translation for bootstrap-datetimepicker\n * Apostol Apostolov <apostol.s.apostolov@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['bg'] = {\n\t\tdays: [\"Неделя\", \"Понеделник\", \"Вторник\", \"Сряда\", \"Четвъртък\", \"Петък\", \"Събота\", \"Неделя\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Вто\", \"Сря\", \"Чет\", \"Пет\", \"Съб\", \"Нед\"],\n\t\tdaysMin: [\"Н\", \"П\", \"В\", \"С\", \"Ч\", \"П\", \"С\", \"Н\"],\n\t\tmonths: [\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"],\n\t\tmonthsShort: [\"Ян\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Юни\", \"Юли\", \"Авг\", \"Сеп\", \"Окт\", \"Ное\", \"Дек\"],\n\t\ttoday: \"днес\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js",
    "content": "/**\n * Catalan translation for bootstrap-datetimepicker\n * J. Garcia <jogaco.en@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ca'] = {\n\t\tdays: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\", \"Diumenge\"],\n\t\tdaysShort: [\"Diu\",  \"Dil\", \"Dmt\", \"Dmc\", \"Dij\", \"Div\", \"Dis\", \"Diu\"],\n\t\tdaysMin: [\"dg\", \"dl\", \"dt\", \"dc\", \"dj\", \"dv\", \"ds\", \"dg\"],\n\t\tmonths: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n\t\ttoday: \"Avui\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js",
    "content": "/**\n * Czech translation for bootstrap-datetimepicker\n * Matěj Koubík <matej@koubik.name>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['cs'] = {\n\t\tdays: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\", \"Neděle\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Úte\", \"Stř\", \"Čtv\", \"Pát\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\", \"Ne\"],\n\t\tmonths: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tmonthsShort: [\"Led\", \"Úno\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čnc\", \"Srp\", \"Zář\", \"Říj\", \"Lis\", \"Pro\"],\n\t\ttoday: \"Dnes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js",
    "content": "/**\n * Danish translation for bootstrap-datetimepicker\n * Christian Pedersen <http://github.com/chripede>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['da'] = {\n\t\tdays: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\", \"Søndag\"],\n\t\tdaysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\", \"Søn\"],\n\t\tdaysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js",
    "content": "/**\n * German translation for bootstrap-datetimepicker\n * Sam Zurcher <sam@orelias.ch>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['de'] = {\n\t\tdays: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\", \"Sonntag\"],\n\t\tdaysShort: [\"Son\", \"Mon\", \"Die\", \"Mit\", \"Don\", \"Fre\", \"Sam\", \"Son\"],\n\t\tdaysMin: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Heute\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js",
    "content": "/**\n* Greek translation for bootstrap-datetimepicker\n*/\n;(function($){\n  $.fn.datetimepicker.dates['el'] = {\n\t    days: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\", \"Κυριακή\"],\n\t    daysShort: [\"Κυρ\", \"Δευ\", \"Τρι\", \"Τετ\", \"Πεμ\", \"Παρ\", \"Σαβ\", \"Κυρ\"],\n\t    daysMin: [\"Κυ\", \"Δε\", \"Τρ\", \"Τε\", \"Πε\", \"Πα\", \"Σα\", \"Κυ\"],\n\t    months: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάιος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n\t    monthsShort: [\"Ιαν\", \"Φεβ\", \"Μαρ\", \"Απρ\", \"Μάι\", \"Ιουν\", \"Ιουλ\", \"Αυγ\", \"Σεπ\", \"Οκτ\", \"Νοε\", \"Δεκ\"],\n\t    today: \"Σήμερα\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n  };\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js",
    "content": "/**\n * Spanish translation for bootstrap-datetimepicker\n * Bruno Bonamin <bruno.bonamin@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['es'] = {\n\t\tdays: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tmonthsShort: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Hoy\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js",
    "content": "/**\n * Finnish translation for bootstrap-datetimepicker\n * Jaakko Salonen <https://github.com/jsalonen>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['fi'] = {\n\t\tdays: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\", \"sunnuntai\"],\n\t\tdaysShort: [\"sun\", \"maa\", \"tii\", \"kes\", \"tor\", \"per\", \"lau\", \"sun\"],\n\t\tdaysMin: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\", \"su\"],\n\t\tmonths: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n\t\tmonthsShort: [\"tam\", \"hel\", \"maa\", \"huh\", \"tou\", \"kes\", \"hei\", \"elo\", \"syy\", \"lok\", \"mar\", \"jou\"],\n\t\ttoday: \"tänään\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js",
    "content": "/**\n * French translation for bootstrap-datetimepicker\n * Nico Mollet <nico.mollet@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['fr'] = {\n\t\tdays: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\", \"Dimanche\"],\n\t\tdaysShort: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\", \"Dim\"],\n\t\tdaysMin: [\"D\", \"L\", \"Ma\", \"Me\", \"J\", \"V\", \"S\", \"D\"],\n\t\tmonths: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Avr\", \"Mai\", \"Jui\", \"Jul\", \"Aou\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Aujourd'hui\",\n\t\tsuffix: [],\n\t\tmeridiem: [\"am\", \"pm\"],\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js",
    "content": "/**\n * Hebrew translation for bootstrap-datetimepicker\n * Sagie Maoz <sagie@maoz.info>\n */\n;(function($){\n  $.fn.datetimepicker.dates['he'] = {\n      days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\", \"ראשון\"],\n      daysShort: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      daysMin: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n      monthsShort: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\n      today: \"היום\",\n\t  suffix: [],\n\t  meridiem: [],\n      rtl: true\n  };\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js",
    "content": "/**\n * Croatian localisation\n */\n;(function($){\n\t$.fn.datetimepicker.dates['hr'] = {\n\t\tdays: [\"Nedjelja\", \"Ponedjelja\", \"Utorak\", \"Srijeda\", \"Četrtak\", \"Petak\", \"Subota\", \"Nedjelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Srr\", \"Čet\", \"Pet\", \"Sub\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"Sr\", \"Če\", \"Pe\", \"Su\", \"Ne\"],\n\t\tmonths: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n\t\tmonthsShort: [\"Sije\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Jul\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\n\t\ttoday: \"Danas\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js",
    "content": "/**\n * Hungarian translation for bootstrap-datetimepicker\n * darevish <http://github.com/darevish>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['hu'] = {\n\t\tdays: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\", \"Vasárnap\"],\n\t\tdaysShort: [\"Vas\", \"Hét\", \"Ked\", \"Sze\", \"Csü\", \"Pén\", \"Szo\", \"Vas\"],\n\t\tdaysMin: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\", \"V\"],\n\t\tmonths: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sze\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Ma\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js",
    "content": "/**\n * Bahasa translation for bootstrap-datetimepicker\n * Azwar Akbar <azwar.akbar@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['id'] = {\n\t\tdays: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\", \"Minggu\"],\n\t\tdaysShort: [\"Mgu\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\", \"Mgu\"],\n\t\tdaysMin: [\"Mg\", \"Sn\", \"Sl\", \"Ra\", \"Ka\", \"Ju\", \"Sa\", \"Mg\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js",
    "content": "/**\n * Icelandic translation for bootstrap-datetimepicker\n * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['is'] = {\n\t\tdays: [\"Sunnudagur\", \"Mánudagur\", \"Þriðjudagur\", \"Miðvikudagur\", \"Fimmtudagur\", \"Föstudagur\", \"Laugardagur\", \"Sunnudagur\"],\n\t\tdaysShort: [\"Sun\", \"Mán\", \"Þri\", \"Mið\", \"Fim\", \"Fös\", \"Lau\", \"Sun\"],\n\t\tdaysMin: [\"Su\", \"Má\", \"Þr\", \"Mi\", \"Fi\", \"Fö\", \"La\", \"Su\"],\n\t\tmonths: [\"Janúar\", \"Febrúar\", \"Mars\", \"Apríl\", \"Maí\", \"Júní\", \"Júlí\", \"Ágúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maí\", \"Jún\", \"Júl\", \"Ágú\", \"Sep\", \"Okt\", \"Nóv\", \"Des\"],\n\t\ttoday: \"Í Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js",
    "content": "/**\n * Italian translation for bootstrap-datetimepicker\n * Enrico Rubboli <rubboli@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['it'] = {\n\t\tdays: [\"Domenica\", \"Lunedi\", \"Martedi\", \"Mercoledi\", \"Giovedi\", \"Venerdi\", \"Sabato\", \"Domenica\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Oggi\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js",
    "content": "/**\n * Japanese translation for bootstrap-datetimepicker\n * Norio Suzuki <https://github.com/suzuki/>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ja'] = {\n\t\tdays: [\"日曜\", \"月曜\", \"火曜\", \"水曜\", \"木曜\", \"金曜\", \"土曜\", \"日曜\"],\n\t\tdaysShort: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"],\n\t\tdaysMin: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"],\n\t\tmonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tmonthsShort: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.kr.js",
    "content": "/**\n * Korean translation for bootstrap-datetimepicker\n * Gu Youn <http://github.com/guyoun>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['kr'] = {\n\t\tdays: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\", \"일요일\"],\n\t\tdaysShort: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\", \"일\"],\n\t\tdaysMin: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\", \"일\"],\n\t\tmonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tmonthsShort: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js",
    "content": "﻿/**\n * Lithuanian translation for bootstrap-datetimepicker\n * Šarūnas Gliebus <ssharunas@yahoo.co.uk>\n */\n\n;(function($){\n    $.fn.datetimepicker.dates['lt'] = {\n        days: [\"Sekmadienis\", \"Pirmadienis\", \"Antradienis\", \"Trečiadienis\", \"Ketvirtadienis\", \"Penktadienis\", \"Šeštadienis\", \"Sekmadienis\"],\n        daysShort: [\"S\", \"Pr\", \"A\", \"T\", \"K\", \"Pn\", \"Š\", \"S\"],\n        daysMin: [\"Sk\", \"Pr\", \"An\", \"Tr\", \"Ke\", \"Pn\", \"Št\", \"Sk\"],\n        months: [\"Sausis\", \"Vasaris\", \"Kovas\", \"Balandis\", \"Gegužė\", \"Birželis\", \"Liepa\", \"Rugpjūtis\", \"Rugsėjis\", \"Spalis\", \"Lapkritis\", \"Gruodis\"],\n        monthsShort: [\"Sau\", \"Vas\", \"Kov\", \"Bal\", \"Geg\", \"Bir\", \"Lie\", \"Rugp\", \"Rugs\", \"Spa\", \"Lap\", \"Gru\"],\n        today: \"Šiandien\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n    };\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js",
    "content": "/**\n * Latvian translation for bootstrap-datetimepicker\n * Artis Avotins <artis@apit.lv>\n */\n\n;(function($){\n    $.fn.datetimepicker.dates['lv'] = {\n        days: [\"Svētdiena\", \"Pirmdiena\", \"Otrdiena\", \"Trešdiena\", \"Ceturtdiena\", \"Piektdiena\", \"Sestdiena\", \"Svētdiena\"],\n        daysShort: [\"Sv\", \"P\", \"O\", \"T\", \"C\", \"Pk\", \"S\", \"Sv\"],\n        daysMin: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ce\", \"Pk\", \"St\", \"Sv\"],\n        months: [\"Janvāris\", \"Februāris\", \"Marts\", \"Aprīlis\", \"Maijs\", \"Jūnijs\", \"Jūlijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jūn\", \"Jūl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec.\"],\n        today: \"Šodien\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n    };\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js",
    "content": "/**\n * Malay translation for bootstrap-datetimepicker\n * Ateman Faiz <noorulfaiz@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ms'] = {\n\t\tdays: [\"Ahad\", \"Isnin\", \"Selasa\", \"Rabu\", \"Khamis\", \"Jumaat\", \"Sabtu\", \"Ahad\"],\n\t\tdaysShort: [\"Aha\", \"Isn\", \"Sel\", \"Rab\", \"Kha\", \"Jum\", \"Sab\", \"Aha\"],\n\t\tdaysMin: [\"Ah\", \"Is\", \"Se\", \"Ra\", \"Kh\", \"Ju\", \"Sa\", \"Ah\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Mac\", \"April\", \"Mei\", \"Jun\", \"Julai\", \"Ogos\", \"September\", \"Oktober\", \"November\", \"Disember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ogo\", \"Sep\", \"Okt\", \"Nov\", \"Dis\"],\n\t\ttoday: \"Hari Ini\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js",
    "content": "/**\n * Norwegian (bokmål) translation for bootstrap-datetimepicker\n * Fredrik Sundmyhr <http://github.com/fsundmyhr>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['nb'] = {\n\t\tdays: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\", \"Søndag\"],\n\t\tdaysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\", \"Søn\"],\n\t\tdaysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js",
    "content": "/**\n * Dutch translation for bootstrap-datetimepicker\n * Reinier Goltstein <mrgoltstein@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['nl'] = {\n\t\tdays: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\", \"Zondag\"],\n\t\tdaysShort: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\", \"Zo\"],\n\t\tdaysMin: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\", \"Zo\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Vandaag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js",
    "content": "/**\n * Polish translation for bootstrap-datetimepicker\n * Robert <rtpm@gazeta.pl>\n */\n;(function($){\n$.fn.datetimepicker.dates['pl'] = {\n        days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\", \"Niedziela\"],\n        daysShort: [\"Nie\", \"Pn\", \"Wt\", \"Śr\", \"Czw\", \"Pt\", \"So\", \"Nie\"],\n        daysMin: [\"N\", \"Pn\", \"Wt\", \"Śr\", \"Cz\", \"Pt\", \"So\", \"N\"],\n        months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n        monthsShort: [\"Sty\", \"Lu\", \"Mar\", \"Kw\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Pa\", \"Lis\", \"Gru\"],\n        today: \"Dzisiaj\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n        weekStart: 1\n};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js",
    "content": "/**\n * Brazilian translation for bootstrap-datetimepicker\n * Cauan Cabral <cauan@radig.com.br>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['pt-BR'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Hoje\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js",
    "content": "/**\n * Portuguese translation for bootstrap-datetimepicker\n * Original code: Cauan Cabral <cauan@radig.com.br>\n * Tiago Melo <tiago.blackcode@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['pt'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\", \"Domingo\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\", \"Dom\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\", \"Do\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js",
    "content": "/**\n * Romanian translation for bootstrap-datetimepicker\n * Cristian Vasile <cristi.mie@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ro'] = {\n\t\tdays: [\"Duminică\", \"Luni\", \"Marţi\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sâmbătă\", \"Duminică\"],\n\t\tdaysShort: [\"Dum\", \"Lun\", \"Mar\", \"Mie\", \"Joi\", \"Vin\", \"Sâm\", \"Dum\"],\n\t\tdaysMin: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sâ\", \"Du\"],\n\t\tmonths: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n\t\tmonthsShort: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Astăzi\",\n\t\tsuffix: [],\n\t\tmeridiem: [],\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js",
    "content": "/**\n * Serbian latin translation for bootstrap-datetimepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['rs'] = {\n\t\tdays: [\"Nedelja\",\"Ponedeljak\", \"Utorak\", \"Sreda\", \"Četvrtak\", \"Petak\", \"Subota\", \"Nedelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Čet\", \"Pet\", \"Sub\", \"Ned\"],\n\t\tdaysMin: [\"N\", \"Po\", \"U\", \"Sr\", \"Č\", \"Pe\", \"Su\", \"N\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js",
    "content": "/**\n * Serbian cyrillic translation for bootstrap-datetimepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['rs'] = {\n\t\tdays: [\"Недеља\",\"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\", \"Недеља\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Уто\", \"Сре\", \"Чет\", \"Пет\", \"Суб\", \"Нед\"],\n\t\tdaysMin: [\"Н\", \"По\", \"У\", \"Ср\", \"Ч\", \"Пе\", \"Су\", \"Н\"],\n\t\tmonths: [\"Јануар\", \"Фебруар\", \"Март\", \"Април\", \"Мај\", \"Јун\", \"Јул\", \"Август\", \"Септембар\", \"Октобар\", \"Новембар\", \"Децембар\"],\n\t\tmonthsShort: [\"Јан\", \"Феб\", \"Мар\", \"Апр\", \"Мај\", \"Јун\", \"Јул\", \"Авг\", \"Сеп\", \"Окт\", \"Нов\", \"Дец\"],\n\t\ttoday: \"Данас\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js",
    "content": "/**\n * Russian translation for bootstrap-datetimepicker\n * Victor Taranenko <darwin@snowdale.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['ru'] = {\n\t\tdays: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\", \"Воскресенье\"],\n\t\tdaysShort: [\"Вск\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\", \"Вск\"],\n\t\tdaysMin: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"],\n\t\tmonths: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\tmonthsShort: [\"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\ttoday: \"Сегодня\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js",
    "content": "/**\n * Slovak translation for bootstrap-datetimepicker\n * Marek Lichtner <marek@licht.sk>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates[\"sk\"] = {\n\t\tdays: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\", \"Nedeľa\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Str\", \"Štv\", \"Pia\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pia\", \"So\", \"Ne\"],\n\t\tmonths: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Dnes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sl.js",
    "content": "/**\n * Slovene translation for bootstrap-datetimepicker\n * Gregor Rudolf <gregor.rudolf@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['sl'] = {\n\t\tdays: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\", \"Nedelja\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\", \"Ned\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"To\", \"Sr\", \"Če\", \"Pe\", \"So\", \"Ne\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danes\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sv.js",
    "content": "/**\n * Swedish translation for bootstrap-datetimepicker\n * Patrik Ragnarsson <patrik@starkast.net>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['sv'] = {\n\t\tdays: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\", \"Söndag\"],\n\t\tdaysShort: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\", \"Sön\"],\n\t\tdaysMin: [\"Sö\", \"Må\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lö\", \"Sö\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"I Dag\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sw.js",
    "content": "/**\n * Swahili translation for bootstrap-datetimepicker\n * Edwin Mugendi <https://github.com/edwinmugendi>\n * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku\n */\n;(function($){\n    $.fn.datetimepicker.dates['sw'] = {\n        days: [\"Jumapili\", \"Jumatatu\", \"Jumanne\", \"Jumatano\", \"Alhamisi\", \"Ijumaa\", \"Jumamosi\", \"Jumapili\"],\n        daysShort: [\"J2\", \"J3\", \"J4\", \"J5\", \"Alh\", \"Ij\", \"J1\", \"J2\"],\n        daysMin: [\"2\", \"3\", \"4\", \"5\", \"A\", \"I\", \"1\", \"2\"],\n        months: [\"Januari\", \"Februari\", \"Machi\", \"Aprili\", \"Mei\", \"Juni\", \"Julai\", \"Agosti\", \"Septemba\", \"Oktoba\", \"Novemba\", \"Desemba\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mac\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n        today: \"Leo\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n    };\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.th.js",
    "content": "/**\n * Thai translation for bootstrap-datetimepicker\n * Suchau Jiraprapot <seroz24@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['th'] = {\n\t\tdays: [\"อาทิตย์\", \"จันทร์\", \"อังคาร\", \"พุธ\", \"พฤหัส\", \"ศุกร์\", \"เสาร์\", \"อาทิตย์\"],\n\t\tdaysShort: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tdaysMin: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tmonths: [\"มกราคม\", \"กุมภาพันธ์\", \"มีนาคม\", \"เมษายน\", \"พฤษภาคม\", \"มิถุนายน\", \"กรกฎาคม\", \"สิงหาคม\", \"กันยายน\", \"ตุลาคม\", \"พฤศจิกายน\", \"ธันวาคม\"],\n\t\tmonthsShort: [\"ม.ค.\", \"ก.พ.\", \"มี.ค.\", \"เม.ย.\", \"พ.ค.\", \"มิ.ย.\", \"ก.ค.\", \"ส.ค.\", \"ก.ย.\", \"ต.ค.\", \"พ.ย.\", \"ธ.ค.\"],\n\t\ttoday: \"วันนี้\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.tr.js",
    "content": "/**\n * Turkish translation for bootstrap-datetimepicker\n * Serkan Algur <kaisercrazy_2@hotmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['tr'] = {\n\t\tdays: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\", \"Pazar\"],\n\t\tdaysShort: [\"Pz\", \"Pzt\", \"Sal\", \"Çrş\", \"Prş\", \"Cu\", \"Cts\", \"Pz\"],\n\t\tdaysMin: [\"Pz\", \"Pzt\", \"Sa\", \"Çr\", \"Pr\", \"Cu\", \"Ct\", \"Pz\"],\n\t\tmonths: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n\t\tmonthsShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\n\t\ttoday: \"Bugün\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.uk.js",
    "content": "/**\n * Ukrainian translation for bootstrap-datetimepicker\n * Andrey Vityuk <andrey [dot] vityuk [at] gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['uk'] = {\n\t\tdays: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\", \"Неділя\"],\n\t\tdaysShort: [\"Нед\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\", \"Нед\"],\n\t\tdaysMin: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Нд\"],\n\t\tmonths: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\n\t\tmonthsShort: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\n\t\ttoday: \"Сьогодні\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js",
    "content": "/**\n * Simplified Chinese translation for bootstrap-datetimepicker\n * Yuan Cheung <advanimal@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-CN'] = {\n\t\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\ttoday: \"今日\",\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-TW.js",
    "content": "/**\n * Traditional Chinese translation for bootstrap-datetimepicker\n * Rung-Sheng Jang <daniel@i-trend.co.cc>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-TW'] = {\n\t\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tsuffix: [],\n\t\tmeridiem: []\n\t};\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.bowerrc",
    "content": "{\n  \"directory\" : \"spec/js/libs/\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.gitignore",
    "content": "*.swp\n_site\nnode_modules\n_SpecRunner.html\nspec/js/libs\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/.travis.yml",
    "content": "language: node_js\nnode_js:\n  - \"0.8\"\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/LICENSE",
    "content": "The MIT license\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/README.md",
    "content": "Timepicker for Twitter Bootstrap 2.x [![Build Status](https://secure.travis-ci.org/jdewit/bootstrap-timepicker.png)](http://travis-ci.org/jdewit/bootstrap-timepicker)\n------------------------------------\n\nA simple timepicker component for Twitter Bootstrap.\n\nDemos & Documentation\n=====================\n\nView <a href=\"http://jdewit.github.com/bootstrap-timepicker\">demos & documentation</a>.\n\nSupport\n=======\n\nIf you make money using this timepicker, please consider \nsupporting its development.\n\n<a href=\"http://www.pledgie.com/campaigns/19125\"><img alt=\"Click here to support bootstrap-timepicker!\" src=\"http://www.pledgie.com/campaigns/19125.png?skin_name=chrome\" border=\"0\" target=\"_blank\"/></a> <a class=\"FlattrButton\" style=\"display:none;\" rev=\"flattr;button:compact;\" href=\"http://jdewit.github.com/bootstrap-timepicker\"></a> <noscript><a href=\"http://flattr.com/thing/1116513/Bootstrap-Timepicker\" target=\"_blank\"> <img src=\"http://api.flattr.com/button/flattr-badge-large.png\" alt=\"Flattr this\" title=\"Flattr this\" border=\"0\" /></a></noscript>\n\nContributing\n============\n\n1. Install <a href=\"www.nodejs.org\">NodeJS</a> and <a href=\"www.npmjs.org\">Node Package Manager</a>.\n\n2. Install packages\n\n``` bash\n    npm install\n```\n\n3. Use <a href=\"https://github.com/twitter/bower\">Bower</a> to get the dev dependencies.\n\n``` bash \n$ bower install\n```\n\n4. Use <a href=\"www.gruntjs.com\">Grunt</a> to run tests, compress assets, etc. \n\n``` bash \n$ grunt test // run jshint and jasmine tests\n$ grunt watch // run jsHint and Jasmine tests whenever a file is changed\n$ grunt compile // minify the js and css files\n```\n\n- Please make it easy on me by covering any new features or issues \nwith <a href=\"http://pivotal.github.com/jasmine\">Jasmine</a> tests.\n- If your changes need documentation, please take the time to update the docs.\n\nAcknowledgements\n================\n\nThanks to everyone who have given feedback and submitted pull requests. A \nlist of all the contributors can be found <a href=\"https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\">here</a>.\n\nSpecial thanks to @eternicode and his <a href=\"https://github.com/eternicode/bootstrap-datepicker\">Twitter Datepicker</a> for inspiration.    \n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/css/bootstrap-timepicker.css",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n.bootstrap-timepicker {\n  position: relative;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu {\n  left: auto;\n  right: 0;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before {\n  left: auto;\n  right: 12px;\n}\n.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after {\n  left: auto;\n  right: 13px;\n}\n.bootstrap-timepicker .add-on {\n  cursor: pointer;\n}\n.bootstrap-timepicker .add-on i {\n  display: inline-block;\n  width: 16px;\n  height: 16px;\n}\n.bootstrap-timepicker-widget.dropdown-menu {\n  padding: 2px 3px 2px 2px;\n}\n.bootstrap-timepicker-widget.dropdown-menu.open {\n  display: inline-block;\n}\n.bootstrap-timepicker-widget.dropdown-menu:before {\n  border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  content: \"\";\n  display: inline-block;\n  left: 9px;\n  position: absolute;\n  top: -7px;\n}\n.bootstrap-timepicker-widget.dropdown-menu:after {\n  border-bottom: 6px solid #FFFFFF;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  content: \"\";\n  display: inline-block;\n  left: 10px;\n  position: absolute;\n  top: -6px;\n}\n.bootstrap-timepicker-widget a.btn,\n.bootstrap-timepicker-widget input {\n  border-radius: 4px;\n}\n.bootstrap-timepicker-widget table {\n  width: 100%;\n  margin: 0;\n}\n.bootstrap-timepicker-widget table td {\n  text-align: center;\n  height: 30px;\n  margin: 0;\n  padding: 2px;\n}\n.bootstrap-timepicker-widget table td:not(.separator) {\n  min-width: 30px;\n}\n.bootstrap-timepicker-widget table td span {\n  width: 100%;\n}\n.bootstrap-timepicker-widget table td a {\n  border: 1px transparent solid;\n  width: 100%;\n  display: inline-block;\n  margin: 0;\n  padding: 8px 0;\n  outline: 0;\n  color: #333;\n}\n.bootstrap-timepicker-widget table td a:hover {\n  text-decoration: none;\n  background-color: #eee;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border-color: #ddd;\n}\n.bootstrap-timepicker-widget table td a i {\n  margin-top: 2px;\n}\n.bootstrap-timepicker-widget table td input {\n  width: 25px;\n  margin: 0;\n  text-align: center;\n}\n.bootstrap-timepicker-widget .modal-content {\n  padding: 4px;\n}\n@media (min-width: 767px) {\n  .bootstrap-timepicker-widget.modal {\n    width: 200px;\n    margin-left: -100px;\n  }\n}\n@media (max-width: 767px) {\n  .bootstrap-timepicker {\n    width: 100%;\n  }\n  .bootstrap-timepicker .dropdown-menu {\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/js/bootstrap-timepicker.js",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n(function($, window, document, undefined) {\n  'use strict';\n\n  // TIMEPICKER PUBLIC CLASS DEFINITION\n  var Timepicker = function(element, options) {\n    this.widget = '';\n    this.$element = $(element);\n    this.defaultTime = options.defaultTime;\n    this.disableFocus = options.disableFocus;\n    this.isOpen = options.isOpen;\n    this.minuteStep = options.minuteStep;\n    this.modalBackdrop = options.modalBackdrop;\n    this.secondStep = options.secondStep;\n    this.showInputs = options.showInputs;\n    this.showMeridian = options.showMeridian;\n    this.showSeconds = options.showSeconds;\n    this.template = options.template;\n    this.appendWidgetTo = options.appendWidgetTo;\n\n    this._init();\n  };\n\n  Timepicker.prototype = {\n\n    constructor: Timepicker,\n\n    _init: function() {\n      var self = this;\n\n      if (this.$element.parent().hasClass('input-append') || this.$element.parent().hasClass('input-prepend')) {\n        this.$element.parent('.input-append, .input-prepend').find('.add-on').on({\n          'click.timepicker': $.proxy(this.showWidget, this)\n        });\n        this.$element.on({\n          'focus.timepicker': $.proxy(this.highlightUnit, this),\n          'click.timepicker': $.proxy(this.highlightUnit, this),\n          'keydown.timepicker': $.proxy(this.elementKeydown, this),\n          'blur.timepicker': $.proxy(this.blurElement, this)\n        });\n      } else {\n        if (this.template) {\n          this.$element.on({\n            'focus.timepicker': $.proxy(this.showWidget, this),\n            'click.timepicker': $.proxy(this.showWidget, this),\n            'blur.timepicker': $.proxy(this.blurElement, this)\n          });\n        } else {\n          this.$element.on({\n            'focus.timepicker': $.proxy(this.highlightUnit, this),\n            'click.timepicker': $.proxy(this.highlightUnit, this),\n            'keydown.timepicker': $.proxy(this.elementKeydown, this),\n            'blur.timepicker': $.proxy(this.blurElement, this)\n          });\n        }\n      }\n\n      if (this.template !== false) {\n        this.$widget = $(this.getTemplate()).prependTo(this.$element.parents(this.appendWidgetTo)).on('click', $.proxy(this.widgetClick, this));\n      } else {\n        this.$widget = false;\n      }\n\n      if (this.showInputs && this.$widget !== false) {\n        this.$widget.find('input').each(function() {\n          $(this).on({\n            'click.timepicker': function() { $(this).select(); },\n            'keydown.timepicker': $.proxy(self.widgetKeydown, self)\n          });\n        });\n      }\n\n      this.setDefaultTime(this.defaultTime);\n    },\n\n    blurElement: function() {\n      this.highlightedUnit = undefined;\n      this.updateFromElementVal();\n    },\n\n    decrementHour: function() {\n      if (this.showMeridian) {\n        if (this.hour === 1) {\n          this.hour = 12;\n        } else if (this.hour === 12) {\n          this.hour--;\n\n          return this.toggleMeridian();\n        } else if (this.hour === 0) {\n          this.hour = 11;\n\n          return this.toggleMeridian();\n        } else {\n          this.hour--;\n        }\n      } else {\n        if (this.hour === 0) {\n          this.hour = 23;\n        } else {\n          this.hour--;\n        }\n      }\n      this.update();\n    },\n\n    decrementMinute: function(step) {\n      var newVal;\n\n      if (step) {\n        newVal = this.minute - step;\n      } else {\n        newVal = this.minute - this.minuteStep;\n      }\n\n      if (newVal < 0) {\n        this.decrementHour();\n        this.minute = newVal + 60;\n      } else {\n        this.minute = newVal;\n      }\n      this.update();\n    },\n\n    decrementSecond: function() {\n      var newVal = this.second - this.secondStep;\n\n      if (newVal < 0) {\n        this.decrementMinute(true);\n        this.second = newVal + 60;\n      } else {\n        this.second = newVal;\n      }\n      this.update();\n    },\n\n    elementKeydown: function(e) {\n      switch (e.keyCode) {\n      case 9: //tab\n        this.updateFromElementVal();\n\n        switch (this.highlightedUnit) {\n        case 'hour':\n          e.preventDefault();\n          this.highlightNextUnit();\n          break;\n        case 'minute':\n          if (this.showMeridian || this.showSeconds) {\n            e.preventDefault();\n            this.highlightNextUnit();\n          }\n          break;\n        case 'second':\n          if (this.showMeridian) {\n            e.preventDefault();\n            this.highlightNextUnit();\n          }\n          break;\n        }\n        break;\n      case 27: // escape\n        this.updateFromElementVal();\n        break;\n      case 37: // left arrow\n        e.preventDefault();\n        this.highlightPrevUnit();\n        this.updateFromElementVal();\n        break;\n      case 38: // up arrow\n        e.preventDefault();\n        switch (this.highlightedUnit) {\n        case 'hour':\n          this.incrementHour();\n          this.highlightHour();\n          break;\n        case 'minute':\n          this.incrementMinute();\n          this.highlightMinute();\n          break;\n        case 'second':\n          this.incrementSecond();\n          this.highlightSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          this.highlightMeridian();\n          break;\n        }\n        break;\n      case 39: // right arrow\n        e.preventDefault();\n        this.updateFromElementVal();\n        this.highlightNextUnit();\n        break;\n      case 40: // down arrow\n        e.preventDefault();\n        switch (this.highlightedUnit) {\n        case 'hour':\n          this.decrementHour();\n          this.highlightHour();\n          break;\n        case 'minute':\n          this.decrementMinute();\n          this.highlightMinute();\n          break;\n        case 'second':\n          this.decrementSecond();\n          this.highlightSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          this.highlightMeridian();\n          break;\n        }\n        break;\n      }\n    },\n\n    formatTime: function(hour, minute, second, meridian) {\n      hour = hour < 10 ? '0' + hour : hour;\n      minute = minute < 10 ? '0' + minute : minute;\n      second = second < 10 ? '0' + second : second;\n\n      return hour + ':' + minute + (this.showSeconds ? ':' + second : '') + (this.showMeridian ? ' ' + meridian : '');\n    },\n\n    getCursorPosition: function() {\n      var input = this.$element.get(0);\n\n      if ('selectionStart' in input) {// Standard-compliant browsers\n\n        return input.selectionStart;\n      } else if (document.selection) {// IE fix\n        input.focus();\n        var sel = document.selection.createRange(),\n          selLen = document.selection.createRange().text.length;\n\n        sel.moveStart('character', - input.value.length);\n\n        return sel.text.length - selLen;\n      }\n    },\n\n    getTemplate: function() {\n      var template,\n        hourTemplate,\n        minuteTemplate,\n        secondTemplate,\n        meridianTemplate,\n        templateContent;\n\n      if (this.showInputs) {\n        hourTemplate = '<input type=\"text\" name=\"hour\" class=\"bootstrap-timepicker-hour\" maxlength=\"2\"/>';\n        minuteTemplate = '<input type=\"text\" name=\"minute\" class=\"bootstrap-timepicker-minute\" maxlength=\"2\"/>';\n        secondTemplate = '<input type=\"text\" name=\"second\" class=\"bootstrap-timepicker-second\" maxlength=\"2\"/>';\n        meridianTemplate = '<input type=\"text\" name=\"meridian\" class=\"bootstrap-timepicker-meridian\" maxlength=\"2\"/>';\n      } else {\n        hourTemplate = '<span class=\"bootstrap-timepicker-hour\"></span>';\n        minuteTemplate = '<span class=\"bootstrap-timepicker-minute\"></span>';\n        secondTemplate = '<span class=\"bootstrap-timepicker-second\"></span>';\n        meridianTemplate = '<span class=\"bootstrap-timepicker-meridian\"></span>';\n      }\n\n      templateContent = '<table>'+\n         '<tr>'+\n           '<td><a href=\"#\" data-action=\"incrementHour\"><i class=\"icon-chevron-up\"></i></a></td>'+\n           '<td class=\"separator\">&nbsp;</td>'+\n           '<td><a href=\"#\" data-action=\"incrementMinute\"><i class=\"icon-chevron-up\"></i></a></td>'+\n           (this.showSeconds ?\n             '<td class=\"separator\">&nbsp;</td>'+\n             '<td><a href=\"#\" data-action=\"incrementSecond\"><i class=\"icon-chevron-up\"></i></a></td>'\n           : '') +\n           (this.showMeridian ?\n             '<td class=\"separator\">&nbsp;</td>'+\n             '<td class=\"meridian-column\"><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-up\"></i></a></td>'\n           : '') +\n         '</tr>'+\n         '<tr>'+\n           '<td>'+ hourTemplate +'</td> '+\n           '<td class=\"separator\">:</td>'+\n           '<td>'+ minuteTemplate +'</td> '+\n           (this.showSeconds ?\n            '<td class=\"separator\">:</td>'+\n            '<td>'+ secondTemplate +'</td>'\n           : '') +\n           (this.showMeridian ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td>'+ meridianTemplate +'</td>'\n           : '') +\n         '</tr>'+\n         '<tr>'+\n           '<td><a href=\"#\" data-action=\"decrementHour\"><i class=\"icon-chevron-down\"></i></a></td>'+\n           '<td class=\"separator\"></td>'+\n           '<td><a href=\"#\" data-action=\"decrementMinute\"><i class=\"icon-chevron-down\"></i></a></td>'+\n           (this.showSeconds ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td><a href=\"#\" data-action=\"decrementSecond\"><i class=\"icon-chevron-down\"></i></a></td>'\n           : '') +\n           (this.showMeridian ?\n            '<td class=\"separator\">&nbsp;</td>'+\n            '<td><a href=\"#\" data-action=\"toggleMeridian\"><i class=\"icon-chevron-down\"></i></a></td>'\n           : '') +\n         '</tr>'+\n       '</table>';\n\n      switch(this.template) {\n      case 'modal':\n        template = '<div class=\"bootstrap-timepicker-widget modal hide fade in\" data-backdrop=\"'+ (this.modalBackdrop ? 'true' : 'false') +'\">'+\n          '<div class=\"modal-header\">'+\n            '<a href=\"#\" class=\"close\" data-dismiss=\"modal\">×</a>'+\n            '<h3>Pick a Time</h3>'+\n          '</div>'+\n          '<div class=\"modal-content\">'+\n            templateContent +\n          '</div>'+\n          '<div class=\"modal-footer\">'+\n            '<a href=\"#\" class=\"btn btn-primary\" data-dismiss=\"modal\">OK</a>'+\n          '</div>'+\n        '</div>';\n        break;\n      case 'dropdown':\n        template = '<div class=\"bootstrap-timepicker-widget dropdown-menu\">'+ templateContent +'</div>';\n        break;\n      }\n\n      return template;\n    },\n\n    getTime: function() {\n      return this.formatTime(this.hour, this.minute, this.second, this.meridian);\n    },\n\n    hideWidget: function() {\n      if (this.isOpen === false) {\n        return;\n      }\n\n\t\t\tif (this.showInputs) {\n\t\t\t\tthis.updateFromWidgetInputs();\n\t\t\t}\n\n      this.$element.trigger({\n        'type': 'hide.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      if (this.template === 'modal' && this.$widget.modal) {\n        this.$widget.modal('hide');\n      } else {\n        this.$widget.removeClass('open');\n      }\n\n      $(document).off('mousedown.timepicker');\n\n      this.isOpen = false;\n    },\n\n    highlightUnit: function() {\n      this.position = this.getCursorPosition();\n      if (this.position >= 0 && this.position <= 2) {\n        this.highlightHour();\n      } else if (this.position >= 3 && this.position <= 5) {\n        this.highlightMinute();\n      } else if (this.position >= 6 && this.position <= 8) {\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else {\n          this.highlightMeridian();\n        }\n      } else if (this.position >= 9 && this.position <= 11) {\n        this.highlightMeridian();\n      }\n    },\n\n    highlightNextUnit: function() {\n      switch (this.highlightedUnit) {\n      case 'hour':\n        this.highlightMinute();\n        break;\n      case 'minute':\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else if (this.showMeridian){\n          this.highlightMeridian();\n        } else {\n          this.highlightHour();\n        }\n        break;\n      case 'second':\n        if (this.showMeridian) {\n          this.highlightMeridian();\n        } else {\n          this.highlightHour();\n        }\n        break;\n      case 'meridian':\n        this.highlightHour();\n        break;\n      }\n    },\n\n    highlightPrevUnit: function() {\n      switch (this.highlightedUnit) {\n      case 'hour':\n        this.highlightMeridian();\n        break;\n      case 'minute':\n        this.highlightHour();\n        break;\n      case 'second':\n        this.highlightMinute();\n        break;\n      case 'meridian':\n        if (this.showSeconds) {\n          this.highlightSecond();\n        } else {\n          this.highlightMinute();\n        }\n        break;\n      }\n    },\n\n    highlightHour: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'hour';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(0,2);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightMinute: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'minute';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(3,5);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightSecond: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'second';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$element.setSelectionRange(6,8);\n\t\t\t\t}, 0);\n\t\t\t}\n    },\n\n    highlightMeridian: function() {\n      var $element = this.$element.get(0);\n\n      this.highlightedUnit = 'meridian';\n\n\t\t\tif ($element.setSelectionRange) {\n\t\t\t\tif (this.showSeconds) {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$element.setSelectionRange(9,11);\n\t\t\t\t\t}, 0);\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$element.setSelectionRange(6,8);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n    },\n\n    incrementHour: function() {\n      if (this.showMeridian) {\n        if (this.hour === 11) {\n          this.hour++;\n          return this.toggleMeridian();\n        } else if (this.hour === 12) {\n          this.hour = 0;\n        }\n      }\n      if (this.hour === 23) {\n        this.hour = 0;\n\n        return;\n      }\n      this.hour++;\n      this.update();\n    },\n\n    incrementMinute: function(step) {\n      var newVal;\n\n      if (step) {\n        newVal = this.minute + step;\n      } else {\n        newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep);\n      }\n\n      if (newVal > 59) {\n        this.incrementHour();\n        this.minute = newVal - 60;\n      } else {\n        this.minute = newVal;\n      }\n      this.update();\n    },\n\n    incrementSecond: function() {\n      var newVal = this.second + this.secondStep - (this.second % this.secondStep);\n\n      if (newVal > 59) {\n        this.incrementMinute(true);\n        this.second = newVal - 60;\n      } else {\n        this.second = newVal;\n      }\n      this.update();\n    },\n\n    remove: function() {\n      $('document').off('.timepicker');\n      if (this.$widget) {\n        this.$widget.remove();\n      }\n      delete this.$element.data().timepicker;\n    },\n\n    setDefaultTime: function(defaultTime){\n      if (!this.$element.val()) {\n        if (defaultTime === 'current') {\n          var dTime = new Date(),\n            hours = dTime.getHours(),\n            minutes = Math.floor(dTime.getMinutes() / this.minuteStep) * this.minuteStep,\n            seconds = Math.floor(dTime.getSeconds() / this.secondStep) * this.secondStep,\n            meridian = 'AM';\n\n          if (this.showMeridian) {\n            if (hours === 0) {\n              hours = 12;\n            } else if (hours >= 12) {\n              if (hours > 12) {\n                hours = hours - 12;\n              }\n              meridian = 'PM';\n            } else {\n              meridian = 'AM';\n            }\n          }\n\n          this.hour = hours;\n          this.minute = minutes;\n          this.second = seconds;\n          this.meridian = meridian;\n\n          this.update();\n\n        } else if (defaultTime === false) {\n          this.hour = 0;\n          this.minute = 0;\n          this.second = 0;\n          this.meridian = 'AM';\n        } else {\n          this.setTime(defaultTime);\n        }\n      } else {\n        this.updateFromElementVal();\n      }\n    },\n\n    setTime: function(time) {\n      var arr,\n        timeArray;\n\n      if (this.showMeridian) {\n        arr = time.split(' ');\n        timeArray = arr[0].split(':');\n        this.meridian = arr[1];\n      } else {\n        timeArray = time.split(':');\n      }\n\n      this.hour = parseInt(timeArray[0], 10);\n      this.minute = parseInt(timeArray[1], 10);\n      this.second = parseInt(timeArray[2], 10);\n\n      if (isNaN(this.hour)) {\n        this.hour = 0;\n      }\n      if (isNaN(this.minute)) {\n        this.minute = 0;\n      }\n\n      if (this.showMeridian) {\n        if (this.hour > 12) {\n          this.hour = 12;\n        } else if (this.hour < 1) {\n          this.hour = 12;\n        }\n\n        if (this.meridian === 'am' || this.meridian === 'a') {\n          this.meridian = 'AM';\n        } else if (this.meridian === 'pm' || this.meridian === 'p') {\n          this.meridian = 'PM';\n        }\n\n        if (this.meridian !== 'AM' && this.meridian !== 'PM') {\n          this.meridian = 'AM';\n        }\n      } else {\n        if (this.hour >= 24) {\n          this.hour = 23;\n        } else if (this.hour < 0) {\n          this.hour = 0;\n        }\n      }\n\n      if (this.minute < 0) {\n        this.minute = 0;\n      } else if (this.minute >= 60) {\n        this.minute = 59;\n      }\n\n      if (this.showSeconds) {\n        if (isNaN(this.second)) {\n          this.second = 0;\n        } else if (this.second < 0) {\n          this.second = 0;\n        } else if (this.second >= 60) {\n          this.second = 59;\n        }\n      }\n\n      this.update();\n    },\n\n    showWidget: function() {\n      if (this.isOpen) {\n        return;\n      }\n\n      if (this.$element.is(':disabled')) {\n        return;\n      }\n\n      var self = this;\n      $(document).on('mousedown.timepicker', function (e) {\n        // Clicked outside the timepicker, hide it\n        if ($(e.target).closest('.bootstrap-timepicker-widget').length === 0) {\n          self.hideWidget();\n        }\n      });\n\n      this.$element.trigger({\n        'type': 'show.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      if (this.disableFocus) {\n        this.$element.blur();\n      }\n\n      this.updateFromElementVal();\n\n      if (this.template === 'modal' && this.$widget.modal) {\n        this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this));\n      } else {\n        if (this.isOpen === false) {\n          this.$widget.addClass('open');\n        }\n      }\n\n      this.isOpen = true;\n    },\n\n    toggleMeridian: function() {\n      this.meridian = this.meridian === 'AM' ? 'PM' : 'AM';\n      this.update();\n    },\n\n    update: function() {\n      this.$element.trigger({\n        'type': 'changeTime.timepicker',\n        'time': {\n          'value': this.getTime(),\n          'hours': this.hour,\n          'minutes': this.minute,\n          'seconds': this.second,\n          'meridian': this.meridian\n        }\n      });\n\n      this.updateElement();\n      this.updateWidget();\n    },\n\n    updateElement: function() {\n      this.$element.val(this.getTime()).change();\n    },\n\n    updateFromElementVal: function() {\n\t\t\tvar val = this.$element.val();\n\n\t\t\tif (val) {\n\t\t\t\tthis.setTime(val);\n\t\t\t}\n    },\n\n    updateWidget: function() {\n      if (this.$widget === false) {\n        return;\n      }\n\n      var hour = this.hour < 10 ? '0' + this.hour : this.hour,\n          minute = this.minute < 10 ? '0' + this.minute : this.minute,\n          second = this.second < 10 ? '0' + this.second : this.second;\n\n      if (this.showInputs) {\n        this.$widget.find('input.bootstrap-timepicker-hour').val(hour);\n        this.$widget.find('input.bootstrap-timepicker-minute').val(minute);\n\n        if (this.showSeconds) {\n          this.$widget.find('input.bootstrap-timepicker-second').val(second);\n        }\n        if (this.showMeridian) {\n          this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian);\n        }\n      } else {\n        this.$widget.find('span.bootstrap-timepicker-hour').text(hour);\n        this.$widget.find('span.bootstrap-timepicker-minute').text(minute);\n\n        if (this.showSeconds) {\n          this.$widget.find('span.bootstrap-timepicker-second').text(second);\n        }\n        if (this.showMeridian) {\n          this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian);\n        }\n      }\n    },\n\n    updateFromWidgetInputs: function() {\n      if (this.$widget === false) {\n        return;\n      }\n      var time = $('input.bootstrap-timepicker-hour', this.$widget).val() + ':' +\n        $('input.bootstrap-timepicker-minute', this.$widget).val() +\n        (this.showSeconds ? ':' + $('input.bootstrap-timepicker-second', this.$widget).val() : '') +\n        (this.showMeridian ? ' ' + $('input.bootstrap-timepicker-meridian', this.$widget).val() : '');\n\n      this.setTime(time);\n    },\n\n    widgetClick: function(e) {\n      e.stopPropagation();\n      e.preventDefault();\n\n      var action = $(e.target).closest('a').data('action');\n      if (action) {\n        this[action]();\n      }\n    },\n\n    widgetKeydown: function(e) {\n      var $input = $(e.target).closest('input'),\n          name = $input.attr('name');\n\n      switch (e.keyCode) {\n      case 9: //tab\n        if (this.showMeridian) {\n          if (name === 'meridian') {\n            return this.hideWidget();\n          }\n        } else {\n          if (this.showSeconds) {\n            if (name === 'second') {\n              return this.hideWidget();\n            }\n          } else {\n            if (name === 'minute') {\n              return this.hideWidget();\n            }\n          }\n        }\n\n        this.updateFromWidgetInputs();\n        break;\n      case 27: // escape\n        this.hideWidget();\n        break;\n      case 38: // up arrow\n        e.preventDefault();\n        switch (name) {\n        case 'hour':\n          this.incrementHour();\n          break;\n        case 'minute':\n          this.incrementMinute();\n          break;\n        case 'second':\n          this.incrementSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          break;\n        }\n        break;\n      case 40: // down arrow\n        e.preventDefault();\n        switch (name) {\n        case 'hour':\n          this.decrementHour();\n          break;\n        case 'minute':\n          this.decrementMinute();\n          break;\n        case 'second':\n          this.decrementSecond();\n          break;\n        case 'meridian':\n          this.toggleMeridian();\n          break;\n        }\n        break;\n      }\n    }\n  };\n\n\n  //TIMEPICKER PLUGIN DEFINITION\n  $.fn.timepicker = function(option) {\n    var args = Array.apply(null, arguments);\n    args.shift();\n    return this.each(function() {\n      var $this = $(this),\n        data = $this.data('timepicker'),\n        options = typeof option === 'object' && option;\n\n      if (!data) {\n        $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data()))));\n      }\n\n      if (typeof option === 'string') {\n        data[option].apply(data, args);\n      }\n    });\n  };\n\n  $.fn.timepicker.defaults = {\n    defaultTime: 'current',\n    disableFocus: false,\n    isOpen: false,\n    minuteStep: 15,\n    modalBackdrop: false,\n    secondStep: 15,\n    showSeconds: false,\n    showInputs: true,\n    showMeridian: true,\n    template: 'dropdown',\n    appendWidgetTo: '.bootstrap-timepicker'\n  };\n\n  $.fn.timepicker.Constructor = Timepicker;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/less/timepicker.less",
    "content": "/*!\n * Timepicker Component for Twitter Bootstrap\n *\n * Copyright 2013 Joris de Wit\n *\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n.bootstrap-timepicker {\n    position: relative;\n\n    &.pull-right {\n        .bootstrap-timepicker-widget {\n            &.dropdown-menu {\n                left: auto;\n                right: 0;\n\n                &:before {\n                    left: auto;\n                    right: 12px;\n                }\n                &:after {\n                    left: auto;\n                    right: 13px;\n                }\n            }\n        }\n    }\n\n    .add-on { \n        cursor: pointer;\n        i {\n           display: inline-block;\n           width: 16px;\n           height: 16px;\n        }\n    }\n}\n.bootstrap-timepicker-widget {\n    &.dropdown-menu {\n        padding: 2px 3px 2px 2px; \n        &.open {\n            display: inline-block;\n        }\n        &:before {\n            border-bottom: 7px solid rgba(0, 0, 0, 0.2);\n            border-left: 7px solid transparent;\n            border-right: 7px solid transparent;\n            content: \"\";\n            display: inline-block;\n            left: 9px;\n            position: absolute;\n            top: -7px;\n        }\n        &:after {\n            border-bottom: 6px solid #FFFFFF;\n            border-left: 6px solid transparent;\n            border-right: 6px solid transparent;\n            content: \"\";\n            display: inline-block;\n            left: 10px;\n            position: absolute;\n            top: -6px;\n        }\n    }\n\n    a.btn, input {\n        border-radius: 4px;\n    }\n\n    table {\n        width: 100%;\n        margin: 0;\n\n        td { \n            text-align: center;\n            height: 30px;\n            margin: 0;\n            padding: 2px;\n\n            &:not(.separator) {\n                min-width: 30px;\n            }\n\n            span {\n                width: 100%;\n            }\n            a {\n                border: 1px transparent solid;\n                width: 100%;\n                display: inline-block;\n                margin: 0;\n                padding: 8px 0;\n                outline: 0;\n                color: #333;\n\n                &:hover {\n                    text-decoration: none;\n                    background-color: #eee;\n                    -webkit-border-radius: 4px;\n                    -moz-border-radius: 4px;\n                    border-radius: 4px;\n                    border-color: #ddd;\n                }\n\n                i {\n                    margin-top: 2px;\n                }\n            }\n            input {\n                width: 25px;\n                margin: 0;\n                text-align: center;\n            }\n        }\n    }\n}\n\n.bootstrap-timepicker-widget .modal-content {\n    padding: 4px;\n}\n\n@media (min-width: 767px) {\n    .bootstrap-timepicker-widget.modal {\n        width: 200px; \n        margin-left: -100px; \n    }\n}\n\n@media (max-width: 767px) {\n    .bootstrap-timepicker {\n        width: 100%;\n\n        .dropdown-menu {\n            width: 100%;\n        }\n    }\n}\n\n\n\n\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/KeyboardEventsSpec.js",
    "content": "describe('Keyboard events feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    tp1,\n    tp2,\n    tp3;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      defaultTime: '23:15:20',\n      showMeridian: false,\n      showSeconds: true,\n      template: false\n    });\n    tp3 = $timepicker3.data('timepicker');\n  });\n\n  afterEach(function () {\n    $input1.data('timepicker').remove();\n    $input2.data('timepicker').remove();\n    $input3.data('timepicker').remove();\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n  });\n\n  it('should be able to control element by the arrow keys', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\n    $input1.trigger('focus');\n\n    if (tp1.highlightedUnit !== 'hour') {\n      tp1.highlightHour();\n    }\n\n    expect(tp1.highlightedUnit).toBe('hour', 'hour should be highlighted by default');\n    // hours\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('12:30 PM', '1');\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '2');\n    expect(tp1.highlightedUnit).toBe('hour', 'hour should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 39 //right\n    });\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted');\n\n    //minutes\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('11:45 AM', '3');\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted 1');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '4');\n    expect(tp1.highlightedUnit).toBe('minute', 'minute should be highlighted 2');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 39 //right\n    });\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    //meridian\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 38 //up\n    });\n    expect(tp1.getTime()).toBe('11:30 PM', '5');\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:30 AM', '6');\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('minute', 'minutes should be highlighted');\n\n    // minutes\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('11:15 AM', '7');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('hour', 'hours should be highlighted');\n\n    // hours\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('10:15 AM', '8');\n\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 37 //left\n    });\n    expect(tp1.highlightedUnit).toBe('meridian', 'meridian should be highlighted');\n\n    // meridian\n    $input1.trigger({\n      'type': 'keydown',\n      'keyCode': 40 //down\n    });\n    expect(tp1.getTime()).toBe('10:15 PM', '9');\n  });\n\n  it('should be able to change time via widget inputs in a dropdown', function() {\n    var $hourInput = tp1.$widget.find('input.bootstrap-timepicker-hour'),\n        $minuteInput = tp1.$widget.find('input.bootstrap-timepicker-minute'),\n        $meridianInput = tp1.$widget.find('input.bootstrap-timepicker-meridian'),\n        eventCount = 0,\n        time;\n\n\n    tp1.setTime('9:30 AM');\n    tp1.update();\n    $input1.parents('div').find('.add-on').click();\n\n    $input1.timepicker().on('changeTime.timepicker', function(e) {\n      eventCount++;\n      time = e.time.value;\n    });\n\n    expect(tp1.isOpen).toBe(true);\n\n    $hourInput.trigger('focus');\n    $hourInput.autotype('{{back}}{{back}}11{{tab}}');\n\n    expect(tp1.hour).toBe(11);\n    expect(eventCount).toBe(1, 'incorrect update events thrown');\n    expect(time).toBe('11:30 AM');\n\n    $minuteInput.autotype('{{back}}{{back}}45{{tab}}');\n\n    expect(tp1.minute).toBe(45);\n    expect(eventCount).toBe(2, 'incorrect update events thrown');\n    expect(time).toBe('11:45 AM');\n\n    $meridianInput.autotype('{{back}}{{back}}pm{{tab}}');\n\n    expect(tp1.meridian).toBe('PM');\n    expect(eventCount).toBe(3, 'incorrect update events thrown');\n    expect(time).toBe('11:45 PM');\n  });\n\n  it('should still be empty if input is empty', function() {\n\t\t$input1.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{tab}}');\n\n\t\texpect($input1.val()).toBe('');\n\t});\n  it('should allow time to be changed via widget inputs in a modal', function() {\n    //tp2.setTime('9:30 AM');\n    //tp2.update();\n    //$input2.parents('div').find('.add-on').click();\n\n    //var $hourInput = $('body').find('input.bootstrap-timepicker-hour'),\n        //$minuteInput = $('body').find('input.bootstrap-timepicker-minute'),\n        //$secondInput = $('body').find('input.bootstrap-timepicker-second'),\n        //$meridianInput = $('body').find('input.bootstrap-timepicker-meridian');\n\n    //$hourInput.autotype('{{back}}{{back}}2');\n    //$hourInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:30:00 AM');\n\n\n    //$minuteInput.autotype('{{back}}{{back}}0');\n    //$minuteInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:00 AM');\n\n    //$secondInput.autotype('{{back}}{{back}}30');\n    //$secondInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:30 AM');\n\n    //$meridianInput.autotype('{{back}}{{back}}p');\n    //$meridianInput.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp2.getTime()).toBe('02:00:30 PM');\n  });\n\n  it('should be 12:00 AM if 00:00 AM is entered', function() {\n    //$input1.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}0:0 AM');\n    //$input1.trigger({\n      //'type': 'keydown',\n      //'keyCode': 9 //tab\n    //});\n\n    //expect(tp1.getTime()).toBe('12:00 AM');\n  });\n\n  it('should validate input', function() {\n    //var $hourInput = tp1.$widget.find('input.bootstrap-timepicker-hour'),\n        //$minuteInput = tp1.$widget.find('input.bootstrap-timepicker-minute'),\n        //$meridianInput = tp1.$widget.find('input.bootstrap-timepicker-meridian'),\n        //$input3 = tp3.$element;\n\n        //tp1.setTime('11:30 AM');\n        //tp1.update();\n\n        //$hourInput.autotype('{{back}}{{back}}13');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:30 AM');\n\n        //$minuteInput.autotype('{{back}}{{back}}60');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 AM');\n\n        //$meridianInput.autotype('{{back}}{{back}}dk');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 AM');\n\n        //$meridianInput.autotype('{{back}}{{back}}p');\n        //tp1.updateFromWidgetInputs();\n        //expect(tp1.getTime()).toBe('12:59 PM');\n\n        //$input3.autotype('{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}{{back}}25:60:60');\n        //tp3.updateFromElementVal();\n        //expect(tp3.getTime()).toBe('23:59:59');\n  });\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/MouseEventsSpec.js",
    "content": "describe('Mouse events feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $input4,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    $timepicker4,\n    tp1,\n    tp2,\n    tp3,\n    tp4;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      defaultTime: '23:15:20',\n      showMeridian: false,\n      showSeconds: true\n    });\n    tp3 = $timepicker3.data('timepicker');\n\n    $input4 = $('#timepicker4');\n    $timepicker4 = $input4.timepicker({\n\t\t\tminuteStep: 5,\n\t\t\tshowInputs: false,\n\t\t\tshowMeridian: true,\n\t\t\ttemplate: 'modal',\n\t\t\tdisableFocus: true\n    });\n    tp4 = $timepicker4.data('timepicker');\n  });\n\n  afterEach(function () {\n    $input1.data('timepicker').remove();\n    $input2.data('timepicker').remove();\n    $input3.data('timepicker').remove();\n    $input4.data('timepicker').remove();\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n    $input4.remove();\n  });\n\n  it('should be shown and trigger show events on input click', function() {\n    var showEvents = 0;\n\n    $input1.on('show.timepicker', function() {\n      showEvents++;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n\n    expect(tp1.isOpen).toBe(true);\n    expect(showEvents).toBe(1);\n  });\n\n  it('should be hidden and trigger hide events on click outside of widget', function() {\n    var hideEvents = 0,\n        time;\n    $input1.val('11:30 AM');\n\n    $input1.on('hide.timepicker', function(e) {\n      hideEvents++;\n\n      time = e.time.value;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n    expect(tp1.isOpen).toBe(true);\n\n    tp1.$widget.find('.bootstrap-timepicker-hour').trigger('mousedown');\n    $('body').trigger('mousedown');\n\n    expect(tp1.isOpen).toBe(false, 'widget is still open');\n    expect(hideEvents).toBe(1, 'hide event was not thrown once');\n    expect(time).toBe('11:30 AM');\n\n  });\n\n  it('should increment hour on button click', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n\n    expect(tp1.getTime()).toBe('12:30 PM');\n\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    expect(tp2.getTime()).toBe('01:00:00 AM');\n  });\n\n  it('should decrement hour on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n\n    expect(tp1.getTime()).toBe('11:30 AM', 'meridian isnt toggling');\n\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    tp2.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n    tp2.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n    expect(tp2.getTime()).toBe('01:00:00 AM');\n  });\n\n  it('should increment minute on button click', function() {\n    tp1.setTime('11:30 AM');\n    tp1.update();\n\t\ttp4.setTime('11:30 AM');\n\t\ttp4.update();\n\n    tp1.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    expect(tp1.getTime()).toBe('11:45 AM');\n\n    tp2.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('00:30:00 AM');\n\n\t\t$input4.trigger('click');\n    tp4.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n    tp4.$widget.find('a[data-action=\"decrementHour\"]').trigger('click');\n\t\t$input4.closest('modal').find('.btn-primary').trigger('click');\n    expect(tp4.getTime()).toBe('10:35 AM');\n\t\texpect($input4.val()).toBe('10:35 AM');\n  });\n\n  it('should decrement minute on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n    tp4.setTime('11:30 AM');\n    tp4.update();\n\n    tp1.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp1.getTime()).toBe('12:15 PM');\n\n    tp4.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp4.getTime()).toBe('11:25 AM');\n  });\n\n  it('should be 11:30:00 PM if minute is decremented on empty input', function() {\n    tp2.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('11:30:00 PM');\n  });\n\n  it('should increment second on button click', function() {\n    tp2.setTime('11:30:15 AM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"incrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('11:30:30 AM');\n  });\n\n  it('should decrement second on button click', function() {\n    tp2.setTime('12:30:15 PM');\n    tp2.update();\n\n  });\n\n  it('should be 11:30:00 PM if minute is decremented on empty input', function() {\n    tp2.$widget.find('a[data-action=\"decrementMinute\"]').trigger('click');\n    expect(tp2.getTime()).toBe('11:30:00 PM');\n  });\n\n  it('should increment second on button click', function() {\n    tp2.setTime('11:30:15 AM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"incrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('11:30:30 AM');\n  });\n\n  it('should decrement second on button click', function() {\n    tp2.setTime('12:30:15 PM');\n    tp2.update();\n\n    tp2.$widget.find('a[data-action=\"decrementSecond\"]').trigger('click');\n\n    expect(tp2.getTime()).toBe('12:29:45 PM');\n  });\n\n  it('should toggle meridian on button click', function() {\n    tp1.setTime('12:30 PM');\n    tp1.update();\n\n    tp1.$widget.find('a[data-action=\"toggleMeridian\"]').first().trigger('click');\n    expect(tp1.getTime()).toBe('12:30 AM');\n    tp1.$widget.find('a[data-action=\"toggleMeridian\"]').last().trigger('click');\n    expect(tp1.getTime()).toBe('12:30 PM');\n  });\n\n\n  it('should trigger changeTime event if time is changed', function() {\n    var eventCount = 0,\n        time;\n\n    $input1.timepicker().on('changeTime.timepicker', function(e) {\n      eventCount++;\n      time = e.time.value;\n    });\n\n    tp1.setTime('11:30 AM');\n\n    expect(eventCount).toBe(1);\n    expect(time).toBe('11:30 AM');\n\n    tp1.$widget.find('a[data-action=\"incrementHour\"]').trigger('click');\n\n    expect(eventCount).toBe(2);\n    expect(tp1.getTime()).toBe('12:30 PM');\n    expect(time).toBe('12:30 PM');\n\n    tp1.$widget.find('a[data-action=\"incrementMinute\"]').trigger('click');\n\n    expect(eventCount).toBe(3);\n    expect(tp1.getTime()).toBe('12:45 PM');\n  });\n\n  it('should highlight widget inputs on click', function() {\n      //TODO;\n      //tp1.setTime('11:55 AM');\n      //tp1.update();\n\n      //$input1.parents('.bootstrap-timepicker').find('.add-on').trigger('click');\n      //expect(tp1.isOpen).toBe(true);\n      //expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).toBe('11');\n      //tp1.$widget.find('.bootstrap-timepicker-hour').trigger('click');\n      //var hour1 = window.getSelection().toString();\n////var range = window.getSelection().getRangeAt(0);\n////var hour1 = range.extractContents();\n\n      //expect(hour1).toBe('11', 'hour input not being highlighted');\n\n      //tp1.$widget.find('.bootstrap-timepicker-minute').trigger('click');\n      //var minute1 = window.getSelection().toString();\n      //expect(minute1).toBe('55', 'minute input not being highlighted');\n\n      //tp1.$widget.find('.bootstrap-timepicker-meridian').trigger('click');\n      //var meridian1 = window.getSelection().toString();\n      //expect(meridian1).toBe('AM', 'meridian input not being highlighted');\n  });\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/TimepickerSpec.js",
    "content": "describe('Timepicker feature', function() {\n  'use strict';\n\n  var $input1,\n    $input2,\n    $input3,\n    $timepicker1,\n    $timepicker2,\n    $timepicker3,\n    tp1,\n    tp2,\n    tp3;\n\n  beforeEach(function () {\n    loadFixtures('timepicker.html');\n\n    $input1 = $('#timepicker1');\n    $timepicker1 = $input1.timepicker();\n    tp1 = $timepicker1.data('timepicker');\n\n    $input2 = $('#timepicker2');\n    $timepicker2 = $input2.timepicker({\n      template: 'modal',\n      showSeconds: true,\n      minuteStep: 30,\n      secondStep: 30,\n      defaultTime: false\n    });\n    tp2 = $timepicker2.data('timepicker');\n\n    $input3 = $('#timepicker3');\n    $timepicker3 = $input3.timepicker({\n      showMeridian: false,\n      showSeconds: true,\n      defaultTime: '13:25:15'\n    });\n    tp3 = $timepicker3.data('timepicker');\n  });\n\n  afterEach(function () {\n    if ($input1.data('timepicker') !== undefined) {\n      $input1.data('timepicker').remove();\n    }\n    if ($input2.data('timepicker') !== undefined) {\n      $input2.data('timepicker').remove();\n    }\n    if ($input3.data('timepicker') !== undefined) {\n      $input3.data('timepicker').remove();\n    }\n    $input1.remove();\n    $input2.remove();\n    $input3.remove();\n  });\n\n  it('should be available on the jquery object', function() {\n    expect($.fn.timepicker).toBeDefined();\n  });\n\n  it('should be chainable', function() {\n    expect($timepicker1).toBe($input1);\n  });\n\n  it('should have sensible defaults', function() {\n    expect(tp1.defaultTime).toBeTruthy();\n    expect(tp1.minuteStep).toBe(15);\n    expect(tp1.secondStep).toBe(15);\n    expect(tp1.disableFocus).toBe(false);\n    expect(tp1.showSeconds).toBe(false);\n    expect(tp1.showInputs).toBe(true);\n    expect(tp1.showMeridian).toBe(true);\n    expect(tp1.template).toBe('dropdown');\n    expect(tp1.modalBackdrop).toBe(false);\n    expect(tp1.modalBackdrop).toBe(false);\n    expect(tp1.isOpen).toBe(false);\n  });\n\n  it('should allow user to configure defaults', function() {\n    expect(tp2.template).toBe('modal');\n    expect(tp2.minuteStep).toBe(30);\n  });\n\n  it('should be configurable with data attributes', function() {\n    $('body').append('<div id=\"hi\" class=\"bootstrap-timepicker\"><input id=\"customTimepicker\" data-template=\"modal\" data-minute-step=\"30\" data-modal-backdrop=\"true\" data-show-meridian=\"true\" type=\"text\"/></div');\n\n    var $customInput = $('body').find('#customTimepicker'),\n        tpCustom = $customInput.timepicker().data('timepicker');\n\n    expect($('body').find('#customTimepicker').length).toBe(1);\n    expect(tpCustom.template).toBe('modal');\n    expect(tpCustom.minuteStep).toBe(30, 'data-minute-step not working');\n    expect(tpCustom.modalBackdrop).toBe(true, 'data-modal-backdrop not working');\n    expect(tpCustom.showMeridian).toBe(true, 'data-show-meridian not working');\n\n    tpCustom.remove();\n  });\n\n  it('should have current time by default', function() {\n    var dTime = new Date(),\n      hour = dTime.getHours(),\n      minute = Math.floor(dTime.getMinutes() / tp1.minuteStep) * tp1.minuteStep;\n\n    if (hour > 12) {\n      hour = hour - 12;\n    }\n\n    expect(tp1.hour).toBe(hour);\n    expect(tp1.minute).toBe(minute);\n  });\n\n  it('should not override time with current time if value is already set', function() {\n    $('body').append('<div id=\"timepickerCustom\"><input id=\"timepickerCustomInput\" type=\"text\" value=\"12:15 AM\" /></div>');\n    var $customInput = $('#timepickerCustomInput').timepicker(),\n      tpCustom = $customInput.data('timepicker');\n\n    expect($customInput.val()).toBe('12:15 AM');\n\n    tpCustom.remove();\n    $('#timepickerCustom').remove();\n  });\n\n  it('should have no value if defaultTime is set to false', function() {\n    expect($input2.val()).toBe('');\n  });\n\n  it('should be able to set default time with config option', function() {\n    expect(tp3.getTime()).toBe('13:25:15');\n  });\n\n  it('should update the element and widget with the setTime method', function() {\n    tp2.setTime('09:15:20 AM');\n\n    expect(tp2.hour).toBe(9);\n    expect(tp2.minute).toBe(15);\n    expect(tp2.second).toBe(20);\n    expect(tp2.meridian).toBe('AM');\n    expect($input2.val()).toBe('09:15:20 AM');\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('09');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('15');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('20');\n    expect(tp2.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');\n  });\n\n  it('should be able to format time values into a string', function() {\n    expect(tp2.formatTime(3, 15, 45, 'PM')).toBe('03:15:45 PM');\n  });\n\n  it('should be able get & set the pickers time', function() {\n    tp3.setTime('23:15:20');\n    expect(tp3.getTime()).toBe('23:15:20');\n  });\n\n  it('should update picker on blur', function() {\n    $input1.val('10:25 AM');\n    expect(tp1.getTime()).not.toBe('10:25 AM');\n    $input1.trigger('blur');\n    expect(tp1.getTime()).toBe('10:25 AM');\n  });\n\n  it('should update element with updateElement method', function() {\n    tp1.hour = 10;\n    tp1.minute = 30;\n    tp1.meridian = 'PM';\n    tp1.updateElement();\n    expect($input1.val()).toBe('10:30 PM');\n  });\n\n  it('should update widget with updateWidget method', function() {\n    tp2.hour = 10;\n    tp2.minute = 30;\n    tp2.second = 15;\n\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).not.toBe('15');\n\n    tp2.updateWidget();\n\n    expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');\n    expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');\n    expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('15');\n  });\n\n  it('should update picker with updateFromElementVal method', function() {\n    tp1.hour = 12;\n    tp1.minute = 12;\n    tp1.meridian = 'PM';\n    tp1.update();\n\n    $input1.val('10:30 AM');\n\n    expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');\n    expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');\n    expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).not.toBe('AM');\n    expect(tp1.hour).not.toBe(10);\n    expect(tp1.minute).not.toBe(30);\n    expect(tp1.meridian).not.toBe('AM');\n\n    tp1.updateFromElementVal();\n\n    expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');\n    expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');\n    expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(30);\n    expect(tp1.meridian).toBe('AM');\n  });\n\n  it('should update picker with updateFromWidgetInputs method', function() {\n    tp1.hour = 12;\n    tp1.minute = 12;\n    tp1.meridian = 'PM';\n    tp1.update();\n\n    tp1.$widget.find('.bootstrap-timepicker-hour').val(10);\n    tp1.$widget.find('.bootstrap-timepicker-minute').val(30);\n    tp1.$widget.find('.bootstrap-timepicker-meridian').val('AM');\n\n    expect(tp1.hour).not.toBe(10);\n    expect(tp1.minute).not.toBe(30);\n    expect(tp1.meridian).not.toBe('AM');\n    expect($input1.val()).not.toBe('10:30 AM');\n\n    tp1.updateFromWidgetInputs();\n\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(30);\n    expect(tp1.meridian).toBe('AM');\n    expect($input1.val()).toBe('10:30 AM');\n  });\n\n  it('should increment hours with incrementHour method', function() {\n    tp1.hour = 9;\n    tp1.incrementHour();\n    expect(tp1.hour).toBe(10);\n  });\n\n  it('should decrement hours with decrementHour method', function() {\n    tp1.hour = 9;\n    tp1.decrementHour();\n    expect(tp1.hour).toBe(8);\n  });\n\n  it('should toggle meridian if hour goes past 12', function() {\n    $input1.val('11:00 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n\n    expect(tp1.hour).toBe(12);\n    expect(tp1.minute).toBe(0);\n    expect(tp1.meridian).toBe('PM');\n  });\n\n  it('should toggle meridian if hour goes below 1', function() {\n    $input1.val('11:00 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n\n    expect(tp1.hour).toBe(12);\n    expect(tp1.minute).toBe(0);\n    expect(tp1.meridian).toBe('PM');\n  });\n\n  it('should set hour to 1 if hour increments on 12 for 12h clock', function() {\n    $input1.val('11:15 PM');\n    tp1.updateFromElementVal();\n    tp1.incrementHour();\n    tp1.incrementHour();\n\n    expect(tp1.getTime()).toBe('01:15 AM');\n  });\n\n  it('should set hour to 0 if hour increments on 23 for 24h clock', function() {\n    $input3.val('22:15:30');\n    tp3.updateFromElementVal();\n    tp3.incrementHour();\n    tp3.incrementHour();\n\n    expect(tp3.hour).toBe(0);\n    expect(tp3.minute).toBe(15);\n    expect(tp3.second).toBe(30);\n  });\n\n  it('should increment minutes with incrementMinute method', function() {\n    tp1.minute = 10;\n    tp1.incrementMinute();\n\n    expect(tp1.minute).toBe(15);\n\n    tp2.minute = 0;\n    tp2.incrementMinute();\n\n    expect(tp2.minute).toBe(30);\n  });\n\n  it('should decrement minutes with decrementMinute method', function() {\n    tp1.hour = 11;\n    tp1.minute = 0;\n    tp1.decrementMinute();\n\n    expect(tp1.hour).toBe(10);\n    expect(tp1.minute).toBe(45);\n\n    tp2.hour = 11;\n    tp2.minute = 0;\n    tp2.decrementMinute();\n\n    expect(tp2.hour).toBe(10);\n    expect(tp2.minute).toBe(30);\n  });\n\n\n  it('should increment hour if minutes increment past 59', function() {\n    $input1.val('11:55 AM');\n    tp1.updateFromElementVal();\n    tp1.incrementMinute();\n    tp1.update();\n\n    expect(tp1.getTime()).toBe('12:00 PM');\n  });\n\n  it('should toggle meridian with toggleMeridian method', function() {\n    tp1.meridian = 'PM';\n    tp1.toggleMeridian();\n\n    expect(tp1.meridian).toBe('AM');\n  });\n\n  it('should increment seconds with incrementSecond method', function() {\n    tp1.second = 0;\n    tp1.incrementSecond();\n\n    expect(tp1.second).toBe(15);\n\n    tp2.second = 0;\n    tp2.incrementSecond();\n\n    expect(tp2.second).toBe(30);\n  });\n\n  it('should decrement seconds with decrementSecond method', function() {\n    tp2.hour = 11;\n    tp2.minute = 0;\n    tp2.second = 0;\n    tp2.decrementSecond();\n\n    expect(tp2.minute).toBe(59);\n    expect(tp2.second).toBe(30);\n  });\n\n\n  it('should increment minute by 1 if seconds increment past 59', function() {\n    $input2.val('11:55:30 AM');\n    tp2.updateFromElementVal();\n    tp2.incrementSecond();\n    tp2.update();\n\n    expect(tp2.getTime()).toBe('11:56:00 AM');\n  });\n\n  it('should not have any remaining events if remove is called', function() {\n    var hideEvents = 0;\n\n    $input1.on('hide.timepicker', function() {\n      hideEvents++;\n    });\n\n    $input1.parents('div').find('.add-on').trigger('click');\n    $('body').trigger('mousedown');\n\n    expect(hideEvents).toBe(1);\n\n    tp1.remove();\n    tp2.remove();\n    tp3.remove();\n\n    $('body').trigger('click');\n    expect(hideEvents).toBe(1);\n  });\n\n  it('should not have the widget in the DOM if remove method is called', function() {\n    expect($('body')).toContain('.bootstrap-timepicker-widget');\n    tp1.remove();\n    tp2.remove();\n    tp3.remove();\n    expect($('body')).not.toContain('.bootstrap-timepicker-widget');\n  });\n\n  it('should be able to set time from a script', function() {\n    $input1.timepicker('setTime', '12:35 PM');\n    tp1.update();\n    expect(tp1.getTime()).toBe('12:35 PM');\n  });\n\n  it('should be able to opened from script', function() {\n    expect(tp1.isOpen).toBe(false);\n    $input1.timepicker('showWidget');\n    expect(tp1.isOpen).toBe(true);\n  });\n\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/fixtures/timepicker.html",
    "content": "<div class=\"input-append bootstrap-timepicker\">\n    <input id=\"timepicker1\" type=\"text\" class=\"input-small\">\n    <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n</div>\n<div class=\"input-append bootstrap-timepicker\">\n    <input id=\"timepicker2\" type=\"text\" class=\"input-small\">\n    <span class=\"add-on\"><i class=\"icon-time\"></i></span>\n</div>\n<div class=\"bootstrap-timepicker\">\n    <input id=\"timepicker3\" type=\"text\" />\n</div>\n<div class=\"bootstrap-timepicker\">\n    <input id=\"timepicker4\" type=\"text\" />\n</div>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/SpecHelper.js",
    "content": "\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/bootstrap-timepicker/spec/js/helpers/jasmine-jquery.js",
    "content": "var readFixtures = function() {\n  return jasmine.getFixtures().proxyCallTo_('read', arguments)\n}\n\nvar preloadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('preload', arguments)\n}\n\nvar loadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('load', arguments)\n}\n\nvar appendLoadFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('appendLoad', arguments)\n}\n\nvar setFixtures = function(html) {\n  jasmine.getFixtures().proxyCallTo_('set', arguments)\n}\n\nvar appendSetFixtures = function() {\n  jasmine.getFixtures().proxyCallTo_('appendSet', arguments)\n}\n\nvar sandbox = function(attributes) {\n  return jasmine.getFixtures().sandbox(attributes)\n}\n\nvar spyOnEvent = function(selector, eventName) {\n  return jasmine.JQuery.events.spyOn(selector, eventName)\n}\n\nvar preloadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('preload', arguments)\n}\n\nvar loadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('load', arguments)\n}\n\nvar appendLoadStyleFixtures = function() {\n  jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments)\n}\n\nvar setStyleFixtures = function(html) {\n  jasmine.getStyleFixtures().proxyCallTo_('set', arguments)\n}\n\nvar appendSetStyleFixtures = function(html) {\n  jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments)\n}\n\nvar loadJSONFixtures = function() {\n  return jasmine.getJSONFixtures().proxyCallTo_('load', arguments)\n}\n\nvar getJSONFixture = function(url) {\n  return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url]\n}\n\njasmine.spiedEventsKey = function (selector, eventName) {\n  return [$(selector).selector, eventName].toString()\n}\n\njasmine.getFixtures = function() {\n  return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures()\n}\n\njasmine.getStyleFixtures = function() {\n  return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures()\n}\n\njasmine.Fixtures = function() {\n  this.containerId = 'jasmine-fixtures'\n  this.fixturesCache_ = {}\n  this.fixturesPath = 'spec/js/fixtures'\n}\n\njasmine.Fixtures.prototype.set = function(html) {\n  this.cleanUp()\n  this.createContainer_(html)\n}\n\njasmine.Fixtures.prototype.appendSet= function(html) {\n  this.addToContainer_(html)\n}\n\njasmine.Fixtures.prototype.preload = function() {\n  this.read.apply(this, arguments)\n}\n\njasmine.Fixtures.prototype.load = function() {\n  this.cleanUp()\n  this.createContainer_(this.read.apply(this, arguments))\n}\n\njasmine.Fixtures.prototype.appendLoad = function() {\n  this.addToContainer_(this.read.apply(this, arguments))\n}\n\njasmine.Fixtures.prototype.read = function() {\n  var htmlChunks = []\n\n  var fixtureUrls = arguments\n  for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {\n    htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex]))\n  }\n\n  return htmlChunks.join('')\n}\n\njasmine.Fixtures.prototype.clearCache = function() {\n  this.fixturesCache_ = {}\n}\n\njasmine.Fixtures.prototype.cleanUp = function() {\n  $('#' + this.containerId).remove()\n}\n\njasmine.Fixtures.prototype.sandbox = function(attributes) {\n  var attributesToSet = attributes || {}\n  return $('<div id=\"sandbox\" />').attr(attributesToSet)\n}\n\njasmine.Fixtures.prototype.createContainer_ = function(html) {\n  var container\n  if(html instanceof $) {\n    container = $('<div id=\"' + this.containerId + '\" />')\n    container.html(html)\n  } else {\n    container = '<div id=\"' + this.containerId + '\">' + html + '</div>'\n  }\n  $(document.body).append(container)\n}\n\njasmine.Fixtures.prototype.addToContainer_ = function(html){\n  var container = $(document.body).find('#'+this.containerId).append(html)\n  if(!container.length){\n    this.createContainer_(html)\n  }\n}\n\njasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {\n  if (typeof this.fixturesCache_[url] === 'undefined') {\n    this.loadFixtureIntoCache_(url)\n  }\n  return this.fixturesCache_[url]\n}\n\njasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {\n  var url = this.makeFixtureUrl_(relativeUrl)\n  var request = $.ajax({\n    type: \"GET\",\n    url: url + \"?\" + new Date().getTime(),\n    async: false\n  })\n  this.fixturesCache_[relativeUrl] = request.responseText\n}\n\njasmine.Fixtures.prototype.makeFixtureUrl_ = function(relativeUrl){\n  return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl\n}\n\njasmine.Fixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {\n  return this[methodName].apply(this, passedArguments)\n}\n\n\njasmine.StyleFixtures = function() {\n  this.fixturesCache_ = {}\n  this.fixturesNodes_ = []\n  this.fixturesPath = 'spec/javascripts/fixtures'\n}\n\njasmine.StyleFixtures.prototype.set = function(css) {\n  this.cleanUp()\n  this.createStyle_(css)\n}\n\njasmine.StyleFixtures.prototype.appendSet = function(css) {\n  this.createStyle_(css)\n}\n\njasmine.StyleFixtures.prototype.preload = function() {\n  this.read_.apply(this, arguments)\n}\n\njasmine.StyleFixtures.prototype.load = function() {\n  this.cleanUp()\n  this.createStyle_(this.read_.apply(this, arguments))\n}\n\njasmine.StyleFixtures.prototype.appendLoad = function() {\n  this.createStyle_(this.read_.apply(this, arguments))\n}\n\njasmine.StyleFixtures.prototype.cleanUp = function() {\n  while(this.fixturesNodes_.length) {\n    this.fixturesNodes_.pop().remove()\n  }\n}\n\njasmine.StyleFixtures.prototype.createStyle_ = function(html) {\n  var styleText = $('<div></div>').html(html).text(),\n    style = $('<style>' + styleText + '</style>')\n\n  this.fixturesNodes_.push(style)\n\n  $('head').append(style)\n}\n\njasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache\n\njasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read\n\njasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_\n\njasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_\n\njasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_\n\njasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_\n\njasmine.getJSONFixtures = function() {\n  return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures()\n}\n\njasmine.JSONFixtures = function() {\n  this.fixturesCache_ = {}\n  this.fixturesPath = 'spec/javascripts/fixtures/json'\n}\n\njasmine.JSONFixtures.prototype.load = function() {\n  this.read.apply(this, arguments)\n  return this.fixturesCache_\n}\n\njasmine.JSONFixtures.prototype.read = function() {\n  var fixtureUrls = arguments\n  for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {\n    this.getFixtureData_(fixtureUrls[urlIndex])\n  }\n  return this.fixturesCache_\n}\n\njasmine.JSONFixtures.prototype.clearCache = function() {\n  this.fixturesCache_ = {}\n}\n\njasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {\n  this.loadFixtureIntoCache_(url)\n  return this.fixturesCache_[url]\n}\n\njasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {\n  var self = this\n  var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl\n  $.ajax({\n    async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded\n    cache: false,\n    dataType: 'json',\n    url: url,\n    success: function(data) {\n      self.fixturesCache_[relativeUrl] = data\n    },\n    fail: function(jqXHR, status, errorThrown) {\n        throw Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')')\n    }\n  })\n}\n\njasmine.JSONFixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {\n  return this[methodName].apply(this, passedArguments)\n}\n\njasmine.JQuery = function() {}\n\njasmine.JQuery.browserTagCaseIndependentHtml = function(html) {\n  return $('<div/>').append(html).html()\n}\n\njasmine.JQuery.elementToString = function(element) {\n  var domEl = $(element).get(0)\n  if (domEl == undefined || domEl.cloneNode)\n    return $('<div />').append($(element).clone()).html()\n  else\n    return element.toString()\n}\n\njasmine.JQuery.matchersClass = {}\n\n!function(namespace) {\n  var data = {\n    spiedEvents: {},\n    handlers:    []\n  }\n\n  namespace.events = {\n    spyOn: function(selector, eventName) {\n      var handler = function(e) {\n        data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = e\n      }\n      $(selector).bind(eventName, handler)\n      data.handlers.push(handler)\n      return {\n        selector: selector,\n        eventName: eventName,\n        handler: handler,\n        reset: function(){\n          delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]\n        }\n      }\n    },\n\n    wasTriggered: function(selector, eventName) {\n      return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)])\n    },\n\n    wasPrevented: function(selector, eventName) {\n      var e;\n      return (e = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]) && e.isDefaultPrevented()\n    },\n\n    cleanUp: function() {\n      data.spiedEvents = {}\n      data.handlers    = []\n    }\n  }\n}(jasmine.JQuery)\n\n!function(){\n  var jQueryMatchers = {\n    toHaveClass: function(className) {\n      return this.actual.hasClass(className)\n    },\n\n    toHaveCss: function(css){\n      for (var prop in css){\n        if (this.actual.css(prop) !== css[prop]) return false\n      }\n      return true\n    },\n\n    toBeVisible: function() {\n      return this.actual.is(':visible')\n    },\n\n    toBeHidden: function() {\n      return this.actual.is(':hidden')\n    },\n\n    toBeSelected: function() {\n      return this.actual.is(':selected')\n    },\n\n    toBeChecked: function() {\n      return this.actual.is(':checked')\n    },\n\n    toBeEmpty: function() {\n      return this.actual.is(':empty')\n    },\n\n    toExist: function() {\n      return $(document).find(this.actual).length\n    },\n\n    toHaveLength: function(length) {\n      return this.actual.length === length\n    },\n\n    toHaveAttr: function(attributeName, expectedAttributeValue) {\n      return hasProperty(this.actual.attr(attributeName), expectedAttributeValue)\n    },\n\n    toHaveProp: function(propertyName, expectedPropertyValue) {\n      return hasProperty(this.actual.prop(propertyName), expectedPropertyValue)\n    },\n\n    toHaveId: function(id) {\n      return this.actual.attr('id') == id\n    },\n\n    toHaveHtml: function(html) {\n      return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html)\n    },\n\n    toContainHtml: function(html){\n      var actualHtml = this.actual.html()\n      var expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html)\n      return (actualHtml.indexOf(expectedHtml) >= 0)\n    },\n\n    toHaveText: function(text) {\n      var trimmedText = $.trim(this.actual.text())\n      if (text && $.isFunction(text.test)) {\n        return text.test(trimmedText)\n      } else {\n        return trimmedText == text\n      }\n    },\n\n    toHaveValue: function(value) {\n      return this.actual.val() == value\n    },\n\n    toHaveData: function(key, expectedValue) {\n      return hasProperty(this.actual.data(key), expectedValue)\n    },\n\n    toBe: function(selector) {\n      return this.actual.is(selector)\n    },\n\n    toContain: function(selector) {\n      return this.actual.find(selector).length\n    },\n\n    toBeDisabled: function(selector){\n      return this.actual.is(':disabled')\n    },\n\n    toBeFocused: function(selector) {\n      return this.actual[0] === this.actual[0].ownerDocument.activeElement\n    },\n\n    toHandle: function(event) {\n\n      var events = $._data(this.actual.get(0), \"events\")\n\n      if(!events || !event || typeof event !== \"string\") {\n        return false\n      }\n\n      var namespaces = event.split(\".\")\n      var eventType = namespaces.shift()\n      var sortedNamespaces = namespaces.slice(0).sort()\n      var namespaceRegExp = new RegExp(\"(^|\\\\.)\" + sortedNamespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\")\n\n      if(events[eventType] && namespaces.length) {\n        for(var i = 0; i < events[eventType].length; i++) {\n          var namespace = events[eventType][i].namespace\n          if(namespaceRegExp.test(namespace)) {\n            return true\n          }\n        }\n      } else {\n        return events[eventType] && events[eventType].length > 0\n      }\n    },\n\n    // tests the existence of a specific event binding + handler\n    toHandleWith: function(eventName, eventHandler) {\n      var stack = $._data(this.actual.get(0), \"events\")[eventName]\n      for (var i = 0; i < stack.length; i++) {\n        if (stack[i].handler == eventHandler) return true\n      }\n      return false\n    }\n  }\n\n  var hasProperty = function(actualValue, expectedValue) {\n    if (expectedValue === undefined) return actualValue !== undefined\n    return actualValue == expectedValue\n  }\n\n  var bindMatcher = function(methodName) {\n    var builtInMatcher = jasmine.Matchers.prototype[methodName]\n\n    jasmine.JQuery.matchersClass[methodName] = function() {\n      if (this.actual\n        && (this.actual instanceof $\n          || jasmine.isDomNode(this.actual))) {\n            this.actual = $(this.actual)\n            var result = jQueryMatchers[methodName].apply(this, arguments)\n            var element\n            if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== \"HTML\")\n              this.actual = jasmine.JQuery.elementToString(this.actual)\n            return result\n          }\n\n          if (builtInMatcher) {\n            return builtInMatcher.apply(this, arguments)\n          }\n\n          return false\n    }\n  }\n\n  for(var methodName in jQueryMatchers) {\n    bindMatcher(methodName)\n  }\n}()\n\nbeforeEach(function() {\n  this.addMatchers(jasmine.JQuery.matchersClass)\n  this.addMatchers({\n    toHaveBeenTriggeredOn: function(selector) {\n      this.message = function() {\n        return [\n          \"Expected event \" + this.actual + \" to have been triggered on \" + selector,\n          \"Expected event \" + this.actual + \" not to have been triggered on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasTriggered(selector, this.actual)\n    }\n  })\n  this.addMatchers({\n    toHaveBeenTriggered: function(){\n      var eventName = this.actual.eventName,\n          selector = this.actual.selector\n      this.message = function() {\n        return [\n          \"Expected event \" + eventName + \" to have been triggered on \" + selector,\n          \"Expected event \" + eventName + \" not to have been triggered on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasTriggered(selector, eventName)\n     }\n  })\n  this.addMatchers({\n    toHaveBeenPreventedOn: function(selector) {\n      this.message = function() {\n        return [\n          \"Expected event \" + this.actual + \" to have been prevented on \" + selector,\n          \"Expected event \" + this.actual + \" not to have been prevented on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasPrevented(selector, this.actual)\n    }\n  })\n  this.addMatchers({\n    toHaveBeenPrevented: function() {\n      var eventName = this.actual.eventName,\n          selector = this.actual.selector\n      this.message = function() {\n        return [\n          \"Expected event \" + eventName + \" to have been prevented on \" + selector,\n          \"Expected event \" + eventName + \" not to have been prevented on \" + selector\n        ]\n      }\n      return jasmine.JQuery.events.wasPrevented(selector, eventName)\n    }\n  })\n})\n\nafterEach(function() {\n  jasmine.getFixtures().cleanUp()\n  jasmine.getStyleFixtures().cleanUp()\n  jasmine.JQuery.events.cleanUp()\n})\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/css/basic.css",
    "content": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 6px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n  margin-bottom: 22px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/css/dropzone.css",
    "content": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.dropzone {\n  position: relative;\n  border: 1px solid rgba(0,0,0,0.08);\n  background: rgba(0,0,0,0.02);\n  padding: 1em;\n}\n.dropzone.clickable {\n  cursor: pointer;\n}\n.dropzone.clickable .message {\n  cursor: pointer;\n}\n.dropzone.clickable * {\n  cursor: default;\n}\n.dropzone .message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone.drag-hover {\n  border-color: rgba(0,0,0,0.15);\n  background: rgba(0,0,0,0.04);\n}\n.dropzone.started .message {\n  display: none;\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  background: rgba(255,255,255,0.8);\n  position: relative;\n  display: inline-block;\n  margin: 17px;\n  vertical-align: top;\n  border: 1px solid #acacac;\n  padding: 6px 6px 6px 6px;\n}\n.dropzone .preview .details,\n.dropzone-previews .preview .details {\n  width: 100px;\n  height: 100px;\n  position: relative;\n  background: #ebebeb;\n  padding: 5px;\n  margin-bottom: 22px;\n}\n.dropzone .preview .details .filename,\n.dropzone-previews .preview .details .filename {\n  overflow: hidden;\n  height: 100%;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview .details .size,\n.dropzone-previews .preview .details .size {\n  position: absolute;\n  bottom: -28px;\n  left: 3px;\n  height: 28px;\n  line-height: 28px;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  display: block;\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  display: block;\n}\n.dropzone .preview:hover .details img,\n.dropzone-previews .preview:hover .details img {\n  display: none;\n}\n.dropzone .preview:hover .success-mark,\n.dropzone-previews .preview:hover .success-mark,\n.dropzone .preview:hover .error-mark,\n.dropzone-previews .preview:hover .error-mark {\n  display: none;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark,\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  display: none;\n  position: absolute;\n  width: 40px;\n  height: 40px;\n  font-size: 30px;\n  text-align: center;\n  right: -10px;\n  top: -10px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  color: #8cc657;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  color: #ee162d;\n}\n.dropzone .preview .progress,\n.dropzone-previews .preview .progress {\n  position: absolute;\n  top: 100px;\n  left: 6px;\n  right: 6px;\n  height: 6px;\n  background: #d7d7d7;\n  display: none;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 0%;\n  background-color: #8cc657;\n}\n.dropzone .preview.processing .progress,\n.dropzone-previews .preview.processing .progress {\n  display: block;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: none;\n  position: absolute;\n  top: -5px;\n  left: -20px;\n  background: rgba(245,245,245,0.8);\n  padding: 8px 10px;\n  color: #800;\n  min-width: 140px;\n  max-width: 500px;\n  z-index: 500;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  display: block;\n}\n.dropzone {\n  border: 1px solid rgba(0,0,0,0.03);\n  min-height: 360px;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n  background: rgba(0,0,0,0.03);\n  padding: 23px;\n}\n.dropzone .default.message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n  background-position: 0 0;\n  position: absolute;\n  width: 428px;\n  height: 123px;\n  margin-left: -214px;\n  margin-top: -61.5px;\n  top: 50%;\n  left: 50%;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .default.message {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .default.message span {\n  display: none;\n}\n.dropzone.square .default.message {\n  background-position: 0 -123px;\n  width: 268px;\n  margin-left: -134px;\n  height: 174px;\n  margin-top: -87px;\n}\n.dropzone.drag-hover .message {\n  opacity: 0.15;\n  filter: alpha(opacity=15);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=15)\";\n}\n.dropzone.started .message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n}\n.dropzone .preview,\n.dropzone-previews .preview {\n  -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  box-shadow: 1px 1px 4px rgba(0,0,0,0.16);\n  font-size: 14px;\n}\n.dropzone .preview .details img,\n.dropzone-previews .preview .details img {\n  width: 100px;\n  height: 100px;\n}\n.dropzone .preview.image-preview:hover .details img,\n.dropzone-previews .preview.image-preview:hover .details img {\n  display: block;\n  opacity: 0.1;\n  filter: alpha(opacity=10);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=10)\";\n}\n.dropzone .preview.success .success-mark,\n.dropzone-previews .preview.success .success-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .error-mark,\n.dropzone-previews .preview.error .error-mark {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n.dropzone .preview.error .progress .upload,\n.dropzone-previews .preview.error .progress .upload {\n  background: #ee1e2d;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark,\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: no-repeat;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .error-mark,\n  .dropzone-previews .preview .error-mark,\n  .dropzone .preview .success-mark,\n  .dropzone-previews .preview .success-mark {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview .error-mark span,\n.dropzone-previews .preview .error-mark span,\n.dropzone .preview .success-mark span,\n.dropzone-previews .preview .success-mark span {\n  display: none;\n}\n.dropzone .preview .error-mark,\n.dropzone-previews .preview .error-mark {\n  background-position: -268px -123px;\n}\n.dropzone .preview .success-mark,\n.dropzone-previews .preview .success-mark {\n  background-position: -268px -163px;\n}\n.dropzone .preview .progress .upload,\n.dropzone-previews .preview .progress .upload {\n  -webkit-animation: loading 0.4s linear infinite;\n  -moz-animation: loading 0.4s linear infinite;\n  -o-animation: loading 0.4s linear infinite;\n  -ms-animation: loading 0.4s linear infinite;\n  animation: loading 0.4s linear infinite;\n  -webkit-transition: width 0.3s ease-in-out;\n  -moz-transition: width 0.3s ease-in-out;\n  -o-transition: width 0.3s ease-in-out;\n  -ms-transition: width 0.3s ease-in-out;\n  transition: width 0.3s ease-in-out;\n  -webkit-border-radius: 2px;\n  border-radius: 2px;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0%;\n  height: 100%;\n  background-image: url(\"../images/spritemap.png\");\n  background-repeat: repeat-x;\n  background-position: 0px -400px;\n}\n@media all and (-webkit-min-device-pixel-ratio: 1.5) {\n  .dropzone .preview .progress .upload,\n  .dropzone-previews .preview .progress .upload {\n    background-image: url(\"../images/spritemap@2x.png\");\n    -webkit-background-size: 428px 406px;\n    -moz-background-size: 428px 406px;\n    background-size: 428px 406px;\n  }\n}\n.dropzone .preview.success .progress,\n.dropzone-previews .preview.success .progress {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.4s ease-in-out;\n  -moz-transition: opacity 0.4s ease-in-out;\n  -o-transition: opacity 0.4s ease-in-out;\n  -ms-transition: opacity 0.4s ease-in-out;\n  transition: opacity 0.4s ease-in-out;\n}\n.dropzone .preview .error-message,\n.dropzone-previews .preview .error-message {\n  display: block;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\n  -webkit-transition: opacity 0.3s ease-in-out;\n  -moz-transition: opacity 0.3s ease-in-out;\n  -o-transition: opacity 0.3s ease-in-out;\n  -ms-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n}\n.dropzone .preview:hover.error .error-message,\n.dropzone-previews .preview:hover.error .error-message {\n  opacity: 1;\n  -ms-filter: none;\n  filter: none;\n}\n@-moz-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-webkit-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-o-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@-ms-keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n@keyframes loading {\n  0% {\n    background-position: 0 -400px;\n  }\n\n  100% {\n    background-position: -7px -400px;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/dropzone.js",
    "content": ";(function(){\n\n\n/**\n * hasOwnProperty.\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Require the given path.\n *\n * @param {String} path\n * @return {Object} exports\n * @api public\n */\n\nfunction require(path, parent, orig) {\n  var resolved = require.resolve(path);\n\n  // lookup failed\n  if (null == resolved) {\n    orig = orig || path;\n    parent = parent || 'root';\n    var err = new Error('Failed to require \"' + orig + '\" from \"' + parent + '\"');\n    err.path = orig;\n    err.parent = parent;\n    err.require = true;\n    throw err;\n  }\n\n  var module = require.modules[resolved];\n\n  // perform real require()\n  // by invoking the module's\n  // registered function\n  if (!module.exports) {\n    module.exports = {};\n    module.client = module.component = true;\n    module.call(this, module.exports, require.relative(resolved), module);\n  }\n\n  return module.exports;\n}\n\n/**\n * Registered modules.\n */\n\nrequire.modules = {};\n\n/**\n * Registered aliases.\n */\n\nrequire.aliases = {};\n\n/**\n * Resolve `path`.\n *\n * Lookup:\n *\n *   - PATH/index.js\n *   - PATH.js\n *   - PATH\n *\n * @param {String} path\n * @return {String} path or null\n * @api private\n */\n\nrequire.resolve = function(path) {\n  if (path.charAt(0) === '/') path = path.slice(1);\n  var index = path + '/index.js';\n\n  var paths = [\n    path,\n    path + '.js',\n    path + '.json',\n    path + '/index.js',\n    path + '/index.json'\n  ];\n\n  for (var i = 0; i < paths.length; i++) {\n    var path = paths[i];\n    if (has.call(require.modules, path)) return path;\n  }\n\n  if (has.call(require.aliases, index)) {\n    return require.aliases[index];\n  }\n};\n\n/**\n * Normalize `path` relative to the current path.\n *\n * @param {String} curr\n * @param {String} path\n * @return {String}\n * @api private\n */\n\nrequire.normalize = function(curr, path) {\n  var segs = [];\n\n  if ('.' != path.charAt(0)) return path;\n\n  curr = curr.split('/');\n  path = path.split('/');\n\n  for (var i = 0; i < path.length; ++i) {\n    if ('..' == path[i]) {\n      curr.pop();\n    } else if ('.' != path[i] && '' != path[i]) {\n      segs.push(path[i]);\n    }\n  }\n\n  return curr.concat(segs).join('/');\n};\n\n/**\n * Register module at `path` with callback `definition`.\n *\n * @param {String} path\n * @param {Function} definition\n * @api private\n */\n\nrequire.register = function(path, definition) {\n  require.modules[path] = definition;\n};\n\n/**\n * Alias a module definition.\n *\n * @param {String} from\n * @param {String} to\n * @api private\n */\n\nrequire.alias = function(from, to) {\n  if (!has.call(require.modules, from)) {\n    throw new Error('Failed to alias \"' + from + '\", it does not exist');\n  }\n  require.aliases[to] = from;\n};\n\n/**\n * Return a require function relative to the `parent` path.\n *\n * @param {String} parent\n * @return {Function}\n * @api private\n */\n\nrequire.relative = function(parent) {\n  var p = require.normalize(parent, '..');\n\n  /**\n   * lastIndexOf helper.\n   */\n\n  function lastIndexOf(arr, obj) {\n    var i = arr.length;\n    while (i--) {\n      if (arr[i] === obj) return i;\n    }\n    return -1;\n  }\n\n  /**\n   * The relative require() itself.\n   */\n\n  function localRequire(path) {\n    var resolved = localRequire.resolve(path);\n    return require(resolved, parent, path);\n  }\n\n  /**\n   * Resolve relative to the parent.\n   */\n\n  localRequire.resolve = function(path) {\n    var c = path.charAt(0);\n    if ('/' == c) return path.slice(1);\n    if ('.' == c) return require.normalize(p, path);\n\n    // resolve deps by returning\n    // the dep in the nearest \"deps\"\n    // directory\n    var segs = parent.split('/');\n    var i = lastIndexOf(segs, 'deps') + 1;\n    if (!i) i = 0;\n    path = segs.slice(0, i + 1).join('/') + '/deps/' + path;\n    return path;\n  };\n\n  /**\n   * Check if module is defined at `path`.\n   */\n\n  localRequire.exists = function(path) {\n    return has.call(require.modules, localRequire.resolve(path));\n  };\n\n  return localRequire;\n};\nrequire.register(\"component-emitter/index.js\", function(exports, require, module){\n\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks[event] = this._callbacks[event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  var self = this;\n  this._callbacks = this._callbacks || {};\n\n  function on() {\n    self.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  fn._off = on;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  var callbacks = this._callbacks[event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks[event];\n    return this;\n  }\n\n  // remove specific handler\n  var i = callbacks.indexOf(fn._off || fn);\n  if (~i) callbacks.splice(i, 1);\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks[event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\n});\nrequire.register(\"dropzone/index.js\", function(exports, require, module){\n\n\n/**\n * Exposing dropzone\n */\nmodule.exports = require(\"./lib/dropzone.js\");\n\n});\nrequire.register(\"dropzone/lib/dropzone.js\", function(exports, require, module){\n/*\n#\n# More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n# \n# Copyright (c) 2012, Matias Meno  \n# \n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n# \n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n# \n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n# THE SOFTWARE.\n#\n*/\n\n\n(function() {\n  var Dropzone, Em, camelize, contentLoaded, createElement, noop, without,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    __slice = [].slice,\n    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n  Em = typeof Emitter !== \"undefined\" && Emitter !== null ? Emitter : require(\"emitter\");\n\n  noop = function() {};\n\n  Dropzone = (function(_super) {\n    __extends(Dropzone, _super);\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n    \n    You can register an event handler like this:\n    \n        dropzone.on(\"dragEnter\", function() { });\n    */\n\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"selectedfiles\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"processingfile\", \"uploadprogress\", \"sending\", \"success\", \"complete\", \"reset\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      parallelUploads: 2,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 2,\n      thumbnailWidth: 100,\n      thumbnailHeight: 100,\n      params: {},\n      clickable: true,\n      enqueueForUpload: true,\n      previewsContainer: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n\n        this.element.className = \"\" + this.element.className + \" browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = createElement(\"<div class=\\\"message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          span.textContent = this.options.dictFallbackMessage;\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n      */\n\n      drop: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"drag-hover\");\n      },\n      selectedfiles: function(files) {\n        if (this.element === this.previewsContainer) {\n          return this.element.classList.add(\"started\");\n        }\n      },\n      reset: function() {\n        return this.element.classList.remove(\"started\");\n      },\n      addedfile: function(file) {\n        file.previewTemplate = createElement(this.options.previewTemplate);\n        this.previewsContainer.appendChild(file.previewTemplate);\n        file.previewTemplate.querySelector(\".filename span\").textContent = file.name;\n        return file.previewTemplate.querySelector(\".details\").appendChild(createElement(\"<div class=\\\"size\\\">\" + (this.filesize(file.size)) + \"</div>\"));\n      },\n      removedfile: function(file) {\n        return file.previewTemplate.parentNode.removeChild(file.previewTemplate);\n      },\n      thumbnail: function(file, dataUrl) {\n        file.previewTemplate.classList.remove(\"file-preview\");\n        file.previewTemplate.classList.add(\"image-preview\");\n        return file.previewTemplate.querySelector(\".details\").appendChild(createElement(\"<img alt=\\\"\" + file.name + \"\\\" src=\\\"\" + dataUrl + \"\\\"/>\"));\n      },\n      error: function(file, message) {\n        file.previewTemplate.classList.add(\"error\");\n        return file.previewTemplate.querySelector(\".error-message span\").textContent = message;\n      },\n      processingfile: function(file) {\n        return file.previewTemplate.classList.add(\"processing\");\n      },\n      uploadprogress: function(file, progress) {\n        return file.previewTemplate.querySelector(\".progress .upload\").style.width = \"\" + progress + \"%\";\n      },\n      sending: noop,\n      success: function(file) {\n        return file.previewTemplate.classList.add(\"success\");\n      },\n      complete: noop,\n      previewTemplate: \"<div class=\\\"preview file-preview\\\">\\n  <div class=\\\"details\\\">\\n   <div class=\\\"filename\\\"><span></span></div>\\n  </div>\\n  <div class=\\\"progress\\\"><span class=\\\"upload\\\"></span></div>\\n  <div class=\\\"success-mark\\\"><span>✔</span></div>\\n  <div class=\\\"error-mark\\\"><span>✘</span></div>\\n  <div class=\\\"error-message\\\"><span></span></div>\\n</div>\"\n    };\n\n    function Dropzone(element, options) {\n      var elementId, elementOptions, extend, fallback, _ref;\n\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (Dropzone.forElement(this.element)) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      elementId = this.element.id;\n      elementOptions = (_ref = (elementId ? Dropzone.options[camelize(elementId)] : void 0)) != null ? _ref : {};\n      extend = function() {\n        var key, object, objects, target, val, _i, _len;\n\n        target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n        for (_i = 0, _len = objects.length; _i < _len; _i++) {\n          object = objects[_i];\n          for (key in object) {\n            val = object[key];\n            target[key] = val;\n          }\n        }\n        return target;\n      };\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.url == null) {\n        this.options.url = this.element.action;\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if (!Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer) {\n        if (typeof this.options.previewsContainer === \"string\") {\n          this.previewsContainer = document.querySelector(this.options.previewsContainer);\n        } else if (this.options.previewsContainer.nodeType != null) {\n          this.previewsContainer = this.options.previewsContainer;\n        }\n        if (this.previewsContainer == null) {\n          throw new Error(\"Invalid `previewsContainer` option provided. Please provide a CSS selector or a plain HTML element.\");\n        }\n      } else {\n        this.previewsContainer = this.element;\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, _i, _len, _ref, _ref1,\n        _this = this;\n\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".message\")) {\n        this.element.appendChild(createElement(\"<div class=\\\"default message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.options.clickable) {\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        this.hiddenFileInput.style.display = \"none\";\n        document.body.appendChild(this.hiddenFileInput);\n        this.hiddenFileInput.addEventListener(\"change\", function() {\n          var files;\n\n          files = _this.hiddenFileInput.files;\n          if (files.length) {\n            _this.emit(\"selectedfiles\", files);\n            return _this.handleFiles(files);\n          }\n        });\n      }\n      this.files = [];\n      this.filesQueue = [];\n      this.filesProcessing = [];\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = {\n        \"dragstart\": function(e) {\n          return _this.emit(\"dragstart\", e);\n        },\n        \"dragenter\": function(e) {\n          noPropagation(e);\n          return _this.emit(\"dragenter\", e);\n        },\n        \"dragover\": function(e) {\n          noPropagation(e);\n          return _this.emit(\"dragover\", e);\n        },\n        \"dragleave\": function(e) {\n          return _this.emit(\"dragleave\", e);\n        },\n        \"drop\": function(e) {\n          noPropagation(e);\n          _this.drop(e);\n          return _this.emit(\"drop\", e);\n        },\n        \"dragend\": function(e) {\n          return _this.emit(\"dragend\", e);\n        },\n        \"click\": function(evt) {\n          if (!_this.options.clickable) {\n            return;\n          }\n          if (evt.target === _this.element || evt.target === _this.element.querySelector(\".message\")) {\n            return _this.hiddenFileInput.click();\n          }\n        }\n      };\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + this.options.paramName + \"\\\" multiple=\\\"multiple\\\" /><button type=\\\"submit\\\">Upload!</button></div>\";\n      fields = createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n\n      getFallback = function(elements) {\n        var el, _i, _len;\n\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(\"div\"))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var event, listener, _ref, _results;\n\n      _ref = this.listeners;\n      _results = [];\n      for (event in _ref) {\n        listener = _ref[event];\n        _results.push(this.element.addEventListener(event, listener, false));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var event, listener, _ref, _results;\n\n      _ref = this.listeners;\n      _results = [];\n      for (event in _ref) {\n        listener = _ref[event];\n        _results.push(this.element.removeEventListener(event, listener, false));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      if (this.options.clickable) {\n        this.element.classList.remove(\"clickable\");\n      }\n      this.removeEventListeners();\n      this.filesProcessing = [];\n      return this.filesQueue = [];\n    };\n\n    Dropzone.prototype.enable = function() {\n      if (this.options.clickable) {\n        this.element.classList.add(\"clickable\");\n      }\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var string;\n\n      if (size >= 100000000000) {\n        size = size / 100000000000;\n        string = \"TB\";\n      } else if (size >= 100000000) {\n        size = size / 100000000;\n        string = \"GB\";\n      } else if (size >= 100000) {\n        size = size / 100000;\n        string = \"MB\";\n      } else if (size >= 100) {\n        size = size / 100;\n        string = \"KB\";\n      } else {\n        size = size * 10;\n        string = \"b\";\n      }\n      return \"<strong>\" + (Math.round(size) / 10) + \"</strong> \" + string;\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files;\n\n      if (!e.dataTransfer) {\n        return;\n      }\n      files = e.dataTransfer.files;\n      this.emit(\"selectedfiles\", files);\n      if (files.length) {\n        return this.handleFiles(files);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(\"File is too big (\" + (Math.round(file.size / 1024 / 10.24) / 100) + \"MB). Max filesize: \" + this.options.maxFilesize + \"MB\");\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      var _this = this;\n\n      this.files.push(file);\n      this.emit(\"addedfile\", file);\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this.createThumbnail(file);\n      }\n      return this.accept(file, function(error) {\n        if (error) {\n          return _this.errorProcessing(file, error);\n        } else {\n          if (_this.options.enqueueForUpload) {\n            _this.filesQueue.push(file);\n            return _this.processQueue();\n          }\n        }\n      });\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.processing) {\n        throw new Error(\"Can't remove file currently processing\");\n      }\n      this.files = without(this.files, file);\n      this.filesQueue = without(this.filesQueue, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function() {\n      var file, _i, _len, _ref;\n\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (__indexOf.call(this.filesProcessing, file) < 0) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file) {\n      var fileReader,\n        _this = this;\n\n      fileReader = new FileReader;\n      fileReader.onload = function() {\n        var img;\n\n        img = new Image;\n        img.onload = function() {\n          var canvas, ctx, srcHeight, srcRatio, srcWidth, srcX, srcY, thumbnail, trgHeight, trgRatio, trgWidth, trgX, trgY;\n\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          srcX = 0;\n          srcY = 0;\n          srcWidth = img.width;\n          srcHeight = img.height;\n          canvas.width = _this.options.thumbnailWidth;\n          canvas.height = _this.options.thumbnailHeight;\n          trgX = 0;\n          trgY = 0;\n          trgWidth = canvas.width;\n          trgHeight = canvas.height;\n          srcRatio = img.width / img.height;\n          trgRatio = canvas.width / canvas.height;\n          if (img.height < canvas.height || img.width < canvas.width) {\n            trgHeight = srcHeight;\n            trgWidth = srcWidth;\n          } else {\n            if (srcRatio > trgRatio) {\n              srcHeight = img.height;\n              srcWidth = srcHeight * trgRatio;\n            } else {\n              srcWidth = img.width;\n              srcHeight = srcWidth / trgRatio;\n            }\n          }\n          srcX = (img.width - srcWidth) / 2;\n          srcY = (img.height - srcHeight) / 2;\n          trgY = (canvas.height - trgHeight) / 2;\n          trgX = (canvas.width - trgWidth) / 2;\n          ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, trgX, trgY, trgWidth, trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          return _this.emit(\"thumbnail\", file, thumbnail);\n        };\n        return img.src = fileReader.result;\n      };\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength;\n\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.filesProcessing.length;\n      i = processingLength;\n      while (i < parallelUploads) {\n        if (!this.filesQueue.length) {\n          return;\n        }\n        this.processFile(this.filesQueue.shift());\n        i++;\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      this.filesProcessing.push(file);\n      file.processing = true;\n      this.emit(\"processingfile\", file);\n      return this.uploadFile(file);\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      var formData, handleError, input, inputName, inputType, key, progressObj, value, xhr, _i, _len, _ref, _ref1, _ref2,\n        _this = this;\n\n      xhr = new XMLHttpRequest();\n      xhr.open(this.options.method, this.options.url, true);\n      handleError = function() {\n        return _this.errorProcessing(file, xhr.responseText || (\"Server responded with \" + xhr.status + \" code.\"));\n      };\n      xhr.onload = function(e) {\n        var response, _ref;\n\n        if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n          return handleError();\n        } else {\n          _this.emit(\"uploadprogress\", file, 100);\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            response = JSON.parse(response);\n          }\n          return _this.finished(file, response, e);\n        }\n      };\n      xhr.onerror = function() {\n        return handleError();\n      };\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = function(e) {\n        return _this.emit(\"uploadprogress\", file, Math.max(0, Math.min(100, (e.loaded / e.total) * 100)));\n      };\n      xhr.setRequestHeader(\"Accept\", \"application/json\");\n      xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n      xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      xhr.setRequestHeader(\"X-File-Name\", file.name);\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\n          input = _ref2[_i];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (!inputType || inputType.toLowerCase() !== \"checkbox\" || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      this.emit(\"sending\", file, xhr, formData);\n      formData.append(this.options.paramName, file);\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype.finished = function(file, responseText, e) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"finished\", file, responseText, e);\n      return this.emit(\"complete\", file);\n    };\n\n    Dropzone.prototype.errorProcessing = function(file, message) {\n      this.filesProcessing = without(this.filesProcessing, file);\n      file.processing = false;\n      this.processQueue();\n      this.emit(\"error\", file, message);\n      return this.emit(\"complete\", file);\n    };\n\n    return Dropzone;\n\n  })(Em);\n\n  Dropzone.version = \"2.0.8\";\n\n  Dropzone.options = {};\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    var instance, _i, _len, _ref;\n\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    _ref = Dropzone.instances;\n    for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n      instance = _ref[_i];\n      if (instance.element === element) {\n        return instance;\n      }\n    }\n    return null;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match[1].toUpperCase();\n    });\n  };\n\n  createElement = function(string) {\n    var div;\n\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  contentLoaded(window, function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n\n    if (false) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      _results.push(new Dropzone(dropzone));\n    }\n    return _results;\n  });\n\n}).call(this);\n\n});\nrequire.alias(\"component-emitter/index.js\", \"dropzone/deps/emitter/index.js\");\n\nif (typeof exports == \"object\") {\n  module.exports = require(\"dropzone\");\n} else if (typeof define == \"function\" && define.amd) {\n  define(function(){ return require(\"dropzone\"); });\n} else {\n  window[\"Dropzone\"] = require(\"dropzone\");\n}})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/dropzone/upload.php",
    "content": "<?php\n/*\n * Simple PHP File Upload EXAMPLE\n */\n\n/* THIS FILE IS USED IN DROPZONE FILE UPLOAD AS THE FORM ACTION\n * UNCOMMENT TO ENABLE THE ACTUAL FILE UPLOAD\n * \n$uploaddir = '/var/www/uploads/';\n$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);\n\necho '<pre>';\nif (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {\n    echo \"File is valid, and was successfully uploaded.\\n\";\n} else {\n    echo \"Possible file upload attack!\\n\";\n}\n\necho 'Here is some more debugging info:';\nprint_r($_FILES);\n\nprint \"</pre>\";\n*/"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/.gitignore",
    "content": "InputMask\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/README.md",
    "content": "#jquery.inputmask\n\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n\njquery.inputmask is a jquery plugin which create an input mask.\n\nAn inputmask helps the user with the input by ensuring a predefined format. This can be usefull for dates, numerics, phone numbers, ...\n\nHighlights:\n- easy to use\n- optional parts anywere in the mask\n- possibility to define aliases which hide complexity\n- date / datetime masks\n- numeric masks\n- lots of callbacks\n- non-greedy masks\n- many features can be enabled/disabled/configured by options\n- supports readonly/disabled/dir=\"rtl\" attributes\n- support data-inputmask attribute  \n- multi-mask support  \n\n\n## Usage:\n\nInclude the js-files which you can find in the dist-folder. You have the bundled file which contains the main plugin code and also all extensions. (date, numerics, other) or if you prefer to only include some parts, use the separate js-files in the dist/min folder.\n\nThe minimum to include is the jquery.inputmask.js\n\n```html\n<script src=\"jquery.js\" type=\"text/javascript\"></script>\n<script src=\"jquery.inputmask.js\" type=\"text/javascript\"></script>\n```\n\nDefine your masks:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\");  //direct mask\n   $(\"#phone\").inputmask(\"mask\", {\"mask\": \"(999) 999-9999\"}); //specifying fn & options\n   $(\"#tin\").inputmask({\"mask\": \"99-9999999\"}); //specifying options only\n});\n```\n\nor\n\n```html\n<input data-inputmask=\"'alias': 'date'\" />\n<input data-inputmask=\"'mask': '9', 'repeat': 10, 'greedy' : false\" />\n<input data-inputmask=\"'mask': '99-9999999'\" />\n```\n```javascript\n$(document).ready(function(){\n    $(\":input\").inputmask();\n});\n```\n\n## Options:\n\n### change the placeholder\n\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"placeholder\": \"*\" });\n});\n```\n\nor a multi-char placeholder\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"placeholder\": \"dd/mm/yyyy\" });\n});\n```\n\n### execute a function when the mask is completed, incomplete or cleared\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"oncomplete\": function(){ alert('inputmask complete'); } });\n   $(\"#date\").inputmask(\"d/m/y\",{ \"onincomplete\": function(){ alert('inputmask incomplete'); } });\n   $(\"#date\").inputmask(\"d/m/y\",{ \"oncleared\": function(){ alert('inputmask cleared'); } });\n});\n```\n\n### clearIncomplete - clear the incomplete input on blur\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"d/m/y\",{ \"clearIncomplete\": true } });\n});\n```\n\n### mask repeat function\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask({ \"mask\": \"9\", \"repeat\": 10 });  // ~ mask \"9999999999\"\n});\n```\n\n### mask non-greedy repeat function\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask({ \"mask\": \"9\", \"repeat\": 10, \"greedy\": false });  // ~ mask \"9\" or mask \"99\" or ... mask \"9999999999\"\n});\n```\n\n### get the unmaskedvalue\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").inputmask('unmaskedvalue');\n});\n```\n\n### set a value and apply mask\n\nthis can be done with the traditionnal jquery.val function (all browsers) or javascript value property for browsers which implement lookupGetter or getOwnPropertyDescriptor\n\n```javascript\n$(document).ready(function(){\n   $(\"#number\").val(12345);\n\n   var number = document.getElementById(\"number\");\n   number.value = 12345;\n});\n```\n\nwith the autoUnmaskoption you can change the return of $.fn.val (or value property)  to unmaskedvalue or the maskedvalue\n\n```javascript\n$(document).ready(function(){\n   \t$('#<%= tbDate.ClientID%>').inputmask({ \"mask\": \"d/m/y\", 'autoUnmask' : true});\t//  value: 23/03/1973\n\talert($('#<%= tbDate.ClientID%>').val());\t// shows 23031973     (autoUnmask: true)\n\n\tvar tbDate = document.getElementById(\"<%= tbDate.ClientID%>\");\n    alert(tbDate.value);\t// shows 23031973     (autoUnmask: true)\n});\n```\n\n### add custom definitions\n\nYou can define your own definitions to use in your mask.  \nStart by choosing a masksymbol. \n\n##### validator\nNext define your validator.  The validator can be a regular expression or a function.\n\n##### cardinality\nCardinality specifies how many characters are represented and validated for the definition.\n\n##### prevalidator\n The prevalidator option is \nused to validate the characters before the definition cardinality is reached. (see 'j' example)\n\n##### definitionSymbol\nWhen you insert or delete characters, they are only shifted when the definition type is the same.  This behavior can be overridden\nby giving a definitionSymbol. (see example x, y, z, which can be used for ip-address masking, the validation is different, but it is allowed to shift the characteres between the definitions)\n\n```javascript\n$.extend($.inputmask.defaults.definitions, {\n    'f': {  //masksymbol\n        \"validator\": \"[0-9\\(\\)\\.\\+/ ]\",\n        \"cardinality\": 1,\n        'prevalidator': null\n    },\n\t'g': {\n        \"validator\": function (chrs, buffer, pos, strict, opts) { \n\t\t\t//do some logic and return true, false, or { \"pos\": new position, \"c\": character to place }\n\t\t}\t\t\n        \"cardinality\": 1,\n        'prevalidator': null\n    },\n\t'j': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n     }, \n\t 'x': {\n        validator: \"[0-2]\",\n        cardinality: 1,\n        definitionSymbol: \"i\" //this allows shifting values from other definitions, with the same masksymbol or definitionSymbol\n     },\n     'y': {\n        validator: function (chrs, buffer, pos, strict, opts) {\n                        var valExp2 = new RegExp(\"2[0-5]|[01][0-9]\");\n                        return valExp2.test(buffer[pos - 1] + chrs);\n                    },\n        cardinality: 1,\n        definitionSymbol: \"i\"\n     },\n     'z': {\n        validator: function (chrs, buffer, pos, strict, opts) {\n                       var valExp3 = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n                        return valExp3.test(buffer[pos - 2] + buffer[pos - 1] + chrs);\n        },\n        cardinality: 1,\n        definitionSymbol: \"i\"\n      }\n});\n```\n\n### set defaults\n\n```javascript\n$.extend($.inputmask.defaults, {\n    'autoUnmask': true\n});\n```\n\n### numeric input direction\n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('€ 999.999.999,99', { numericInput: true });    //123456  =>  € ___.__1.234,56\n});\n```\n\n#### skipRadixDance\n\nIf you define a radixPoint the caret will always jump to the integer part, until you type the radixpoint.  \n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('€ 999.999.999,99', { numericInput: true, radixPoint: \",\" });\n});\n```\n\nThis behavior can be skipped by setting the skipRadixDance to true.\n\n#### align the numerics to the right\n\nBy setting the rightAlignNumerics you can specify to right align a numeric inputmask.  Default is true.  \n\n```javascript\n$(document).ready(function(){\n    $(selector).inputmask('decimal', { rightAlignNumerics: false });  //disables the right alignment of the decimal input\n});\n```\n\n\n### remove the inputmask\n\n```javascript\n$(document).ready(function(){\n    $('selector').inputmask('remove');\n});\n```\n\n### escape special mask chars\n\n```javascript\n$(document).ready(function(){\n    $(\"#months\").inputmask(\"m \\\\months\");\n});\n```\n\n### clearMaskOnLostFocus\n\nremove the empty mask on blur or when not empty removes the optional trailing part\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{placeholder:\" \", clearMaskOnLostFocus: true }); //default\n});\n```\n\n### Optional Masks\n\nIt is possible to define some parts in the mask as optional.  This is done by using [ ].\n\nExample:\n\n```javascript\n$('#test').inputmask('(99) 9999[9]-9999');\n```\nThis mask wil allow input like (99) 99999-9999 or (99) 9999-9999.  \nInput => 12123451234      mask => (12) 12345-1234    (trigger complete)  \nInput => 121234-1234      mask => (12) 1234-1234     (trigger complete)  \nInput => 1212341234       mask => (12) 12341-234_    (trigger incomplete)  \n\n#### skipOptionalPartCharacter\nAs an extra there is another configurable character which is used to skip an optional part in the mask.  \n\n```javascript\nskipOptionalPartCharacter: \" \",\n```\nInput => 121234 1234      mask => (12) 1234-1234     (trigger complete)  \n\nWhen `clearMaskOnLostFocus: true` is set in the options (default), the mask will clearout the optional part when it is not filled in and this only in case the optional part is at the end of the mask.\n\nFor example, given:\n\n```javascript\n$('#test').inputmask('999[-AAA]');\n```\nWhile the field has focus and is blank, users will see the full mask `___-___`.\nWhen the required part of the mask is filled and the field loses focus, the user will see `123`.\nWhen both the required and optional parts of the mask are filled out and the field loses focus, the user will see `123-ABC`.\n\n### Multiple masks\n\nYou can define multiple mask for your input.  Depending on the input the masking will switch between the defined masks.  \nThis can be usefull when the masks are too different to solve it with optional parts.\n\n```javascript\n  $(selector).inputmask({ mask: [\"999.999\", \"aa-aa-aa\"]});\n```\n\n### aliases option\n\nFirst you have to create an alias definition (more examples can be found in jquery.inputmask.extensions.js)\n\n```javascript\n$.extend($.inputmask.defaults.aliases, {\n        'date': {\n            mask: \"d/m/y\"\n        },\n        'dd/mm/yyyy': {\n\t    alias: \"date\"\n\t}\n});\n```\n\nuse:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"date\");    //   => equals to    $(\"#date\").inputmask(\"d/m/y\");\n});\n```\n\nor use the dd/mm/yyyy alias of the date alias:\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"dd/mm/yyyy\");   //    => equals to    $(\"#date\").inputmask(\"d/m/y\");\n});\n```\n\n### auto upper/lower- casing inputmask\n\nsee jquery.inputmask.extensions.js for an example how to define \"auto\"-casing in a definition (definition A)\ncasing can be null, \"upper\" or \"lower\"\n\n```javascript\n$(document).ready(function(){\n   $(\"#test\").inputmask(\"999-AAA\");    //   => 123abc ===> 123-ABC\n});\n```\n### getemptymask command\n\nreturn the default (empty) mask value\n\n\n```javascript\n$(document).ready(function(){\n   $(\"#test\").inputmask(\"999-AAA\");\n   var initialValue = $(\"#test\").inputmask(\"getemptymask\");  // initialValue  => \"___-___\"\n});\n```\n\n### onKeyUp / onKeyDown option\n\nUse this to do some extra processing of the input when certain keys are pressed.\nThis can be usefull when implementing an alias, ex. decimal alias, autofill the digits when pressing tab.\n\nsee jquery.inputmask.extensions.js for some examples\n\n### hasMaskedValue\n\nCheck wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n\n```javascript\n$(document).ready(function(){\n\tfunction validateMaskedValue(val){}\n\tfunction validateValue(val){}\n\n\tvar val = $(\"#test\").val();\n    if($(\"#test\").inputmask(\"hasMaskedValue\"))\n\t  validateMaskedValue(val); \n   else validateValue(val); \n});\n```\n### showMaskOnFocus\n\nShows the mask when the input gets focus. (default = true)\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{ showMaskOnFocus: true }); //default\n});\n```\n\nTo make sure no mask is visible on focus also set the showMaskOnHover to false.  Otherwise hovering with the mouse will set the mask and will stay on focus.\n\n### showMaskOnHover\n\nShows the mask when hovering the mouse. (default = true)\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",{ showMaskOnHover: true }); //default\n});\n```\n### onKeyValidation\n\nCallback function is executed on every keyvalidation with the result as parameter.\n\n```javascript\n$(document).ready(function(){\n    $(\"#ssn\").inputmask(\"999-99-9999\",\n\t\t\t{ onKeyValidation: function (result) {\n\t\t\t\t\t\t\t\tconsole.log(result);\n\t\t\t\t\t\t\t\t} });\n});\n```\n### isComplete\n\nVerify wheter the current value is complete or not.\n\n```javascript\n$(document).ready(function(){\n    if($(\"#ssn\").inputmask(\"isComplete\")){\n\t\t//do something\n\t}\n});\n```\n\n### showTooltip\n\nShow the current mask definition as a tooltip.\n\n```javascript\n  $(selector).inputmask({ mask: [\"999-999-9999 [x99999]\", \"+099 99 99 9999[9]-9999\"], showTooltip: true });\n```\n\n\n## Supported markup options\n### RTL attribute\n\n```html\n<input id=\"test\" dir=\"rtl\" />\n```\n### readonly attribute\n\n```html\n<input id=\"test\" readonly=\"readonly\" />\n```\n### disabled attribute\n\n```html\n<input id=\"test\" disabled=\"disabled\" />\n```\n\n### maxlength attribute\n\n```html\n<input id=\"test\" maxlength=\"4\" />\n```\n### data-inputmask attribute\n\nYou can also apply an inputmask by using the data-inputmask attribute.  In the attribute you specify the options wanted for the inputmask.\nThis gets parsed with $.parseJSON (for the moment), so be sure to use a welformed json-string without the {}.\n\n```html\n<input data-inputmask=\"'alias': 'date'\" />\n<input data-inputmask=\"'mask': '9', 'repeat': 10, 'greedy' : false\" />\n```\n```javascript\n$(document).ready(function(){\n    $(\":input\").inputmask();\n});\n```\n\n## Compiling with Google Closure Compiler\n\nFirst grab the sources from github.  In the root you type ant.\nA new folder dist is created with the minified and optimized js-files\n\n## .NET Nuget Package Install\n```html\nPM> Install-Package jQuery.InputMask\n```\n\nIn App_Start, BundleConfig.cs\n```c#\nbundles.Add(new ScriptBundle(\"~/bundles/inputmask\").Include(\n                        \"~/Scripts/jquery.inputmask/jquery.inputmask-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.extensions-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.date.extensions-{version}.js\",\n\t\t\t\t\t\t\"~/Scripts/jquery.inputmask/jquery.inputmask.numeric.extensions-{version}.js\"));\n```\n\nIn Layout\n```html\n@Scripts.Render(\"~/bundles/inputmask\")\n```\n\n\n# jquery.inputmask extensions\n\n## Alias definitions\n\n### date & datetime aliases\n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"dd/mm/yyyy\");\n   $(\"#date\").inputmask(\"mm/dd/yyyy\");\n   $(\"#date\").inputmask(\"date\"); // alias for dd/mm/yyyy\n   $(\"#date\").inputmask(\"date\", {yearrange: { minyear: 1900, maxyear: 2099 }}); //specify year range\n});\n```\n\nThe date aliases take leapyears into account.  There is also autocompletion on day, month, year.\nFor example:\n\ninput:\t2/2/2012 \t\tresult: 02/02/2012  \ninput:  352012\t\t\tresult: 03/05/2012  \ninput:  3/530\t\t\tresult: 03/05/2030  \ninput:  ctrl rightarrow\t        result: the date from today  \n\n```javascript\n$(document).ready(function(){\n   $(\"#date\").inputmask(\"datetime\"); // 24h\n   $(\"#date\").inputmask(\"datetime12\"); // am/pm\n});\n```\n\n### numeric aliases\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\");\n   $(\"#numeric\").inputmask(\"decimal\", { allowMinus: false });\n   $(\"#numeric\").inputmask(\"integer\");\n});\n```\n\nRadixDance\n\nWith the decimal mask the caret will always jump to the integer part, until you type the radixpoint.  \nThere is autocompletion on tab with decimal numbers.  You can disable this behaviour by setting the skipRadixDance to true.\n\nDefine the radixpoint\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { radixPoint: \",\" });\n});\n```\nDefine the number of digits after the radixpoint\n\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { digits: 3 });\n});\n```\nWhen TAB out of the input the digits autocomplate with 0 if the digits option is given a valid number.\n\nGrouping support through:  autoGroup, groupSeparator, groupSize\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { radixPoint: \",\", autoGroup: true, groupSeparator: \".\", groupSize: 3 });\n});\n```\n\nAllow minus and/or plus symbol\n```javascript\n$(document).ready(function(){\n   $(\"#numeric\").inputmask(\"decimal\", { allowMinus: false });\n   $(\"#numeric\").inputmask(\"integer\", { allowMinus: false, allowPlus: true });\n});\n```\n\n### other aliases\n\nAn ip adress alias for entering valid ip-addresses.\n\n```javascript\n$(document).ready(function(){\n   $(selector).inputmask(\"ip\");\n});\n```\n\nYou can find/modify/extend this alias in the jquery.inputmask.extensions.js\n\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/jquery.inputmask.bundle.js",
    "content": "/**\n* @license Input Mask plugin for jquery\n* http://github.com/RobinHerbots/jquery.inputmask\n* Copyright (c) 2010 - 2013 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 2.2.42\n*/\n\n(function ($) {\n    if ($.fn.inputmask == undefined) {\n        $.inputmask = {\n            //options default\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                escapeChar: \"\\\\\",\n                mask: null,\n                oncomplete: $.noop, //executes when the mask is complete\n                onincomplete: $.noop, //executes when the mask is incomplete and focus is lost\n                oncleared: $.noop, //executes when the mask is cleared\n                repeat: 0, //repetitions of the mask\n                greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed\n                autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\n                clearMaskOnLostFocus: true,\n                insertMode: true, //insert the input or overwrite the input\n                clearIncomplete: false, //clear the incomplete input on blur\n                aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js\n                onKeyUp: $.noop, //override to implement autocomplete on certain keys for example\n                onKeyDown: $.noop, //override to implement autocomplete on certain keys for example\n                showMaskOnFocus: true, //show the mask-placeholder when the input has focus\n                showMaskOnHover: true, //show the mask-placeholder when hovering the empty input\n                onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts\n                skipOptionalPartCharacter: \" \", //a character which can be used to skip an optional part of a mask\n                showTooltip: false, //show the activemask as tooltip\n                //numeric basic properties\n                numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)\n                radixPoint: \"\", //\".\", // | \",\"\n                skipRadixDance: false, //disable radixpoint caret positioning\n                rightAlignNumerics: true, //align numerics to the right\n                //numeric basic properties\n                definitions: {\n                    '9': {\n                        validator: \"[0-9]\",\n                        cardinality: 1\n                    },\n                    'a': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451]\",\n                        cardinality: 1\n                    },\n                    '*': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n                        cardinality: 1\n                    }\n                },\n                keyCode: {\n                    ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,\n                    NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91\n                },\n                //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF\n                ignorables: [9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],\n                getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) {\n                    var calculatedLength = buffer.length;\n                    if (!greedy && repeat > 1) {\n                        calculatedLength += (buffer.length * (repeat - 1));\n                    }\n                    return calculatedLength;\n                }\n            },\n            val: $.fn.val, //store the original jquery val function\n            escapeRegex: function (str) {\n                var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n                return str.replace(new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim'), '\\\\$1');\n            }\n        };\n\n        $.fn.inputmask = function (fn, options) {\n            var opts = $.extend(true, {}, $.inputmask.defaults, options),\n                msie10 = navigator.userAgent.match(new RegExp(\"msie 10\", \"i\")) !== null,\n                iphone = navigator.userAgent.match(new RegExp(\"iphone\", \"i\")) !== null,\n                android = navigator.userAgent.match(new RegExp(\"android.*safari.*\", \"i\")) !== null,\n                pasteEvent = isInputEventSupported('paste') && !msie10 ? 'paste' : 'input',\n                android533,\n                masksets,\n                activeMasksetIndex = 0;\n\n            if (android) {\n                var browser = navigator.userAgent.match(/safari.*/i),\n                    version = parseInt(new RegExp(/[0-9]+/).exec(browser));\n                android533 = (version <= 533);\n                //android534 = (533 < version) && (version <= 534);\n            }\n            if (typeof fn === \"string\") {\n                switch (fn) {\n                    case \"mask\":\n                        //resolve possible aliases given by options\n                        resolveAlias(opts.alias, options);\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), 0).mask(this);\n                        });\n                    case \"unmaskedvalue\":\n                        var $input = $(this), input = this;\n                        masksets = $input.data('inputmask')['masksets'];\n                        activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        opts = $input.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).unmaskedvalue(this);\n                    case \"remove\":\n                        return this.each(function () {\n                            var $input = $(this), input = this;\n                            setTimeout(function () {\n                                if ($input.data('inputmask')) {\n                                    masksets = $input.data('inputmask')['masksets'];\n                                    activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                                    opts = $input.data('inputmask')['opts'];\n                                    //writeout the unmaskedvalue\n                                    input._valueSet(maskScope(masksets, activeMasksetIndex).unmaskedvalue($input, true));\n                                    //clear data\n                                    $input.removeData('inputmask');\n                                    //unbind all events\n                                    $input.unbind(\".inputmask\");\n                                    $input.removeClass('focus.inputmask');\n                                    //restore the value property\n                                    var valueProperty;\n                                    if (Object.getOwnPropertyDescriptor)\n                                        valueProperty = Object.getOwnPropertyDescriptor(input, \"value\");\n                                    if (valueProperty && valueProperty.get) {\n                                        if (input._valueGet) {\n                                            Object.defineProperty(input, \"value\", {\n                                                get: input._valueGet,\n                                                set: input._valueSet\n                                            });\n                                        }\n                                    } else if (document.__lookupGetter__ && input.__lookupGetter__(\"value\")) {\n                                        if (input._valueGet) {\n                                            input.__defineGetter__(\"value\", input._valueGet);\n                                            input.__defineSetter__(\"value\", input._valueSet);\n                                        }\n                                    }\n                                    delete input._valueGet;\n                                    delete input._valueSet;\n                                }\n                            }, 0);\n                        });\n                        break;\n                    case \"getemptymask\": //return the default (empty) mask value, usefull for setting the default value in validation\n                        if (this.data('inputmask')) {\n                            masksets = this.data('inputmask')['masksets'];\n                            activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                            return masksets[activeMasksetIndex]['_buffer'].join('');\n                        }\n                        else return \"\";\n                    case \"hasMaskedValue\": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n                        return this.data('inputmask') ? !this.data('inputmask')['opts'].autoUnmask : false;\n                    case \"isComplete\":\n                        masksets = this.data('inputmask')['masksets'];\n                        activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                        opts = this.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).isComplete(this[0]._valueGet().split(''));\n                    default:\n                        //check if the fn is an alias\n                        if (!resolveAlias(fn, options)) {\n                            //maybe fn is a mask so we try\n                            //set mask\n                            opts.mask = fn;\n                        }\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                        });\n\n                        break;\n                }\n            } else if (typeof fn == \"object\") {\n                opts = $.extend(true, {}, $.inputmask.defaults, fn);\n\n                resolveAlias(opts.alias, fn); //resolve aliases\n                masksets = generateMaskSets();\n\n                return this.each(function () {\n                    maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                });\n            } else if (fn == undefined) {\n                //look for data-inputmask atribute - the attribute should only contain optipns\n                return this.each(function () {\n                    var attrOptions = $(this).attr(\"data-inputmask\");\n                    if (attrOptions && attrOptions != \"\") {\n                        try {\n                            attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"');\n                            var dataoptions = $.parseJSON(\"{\" + attrOptions + \"}\");\n                            opts = $.extend(true, {}, $.inputmask.defaults, options);\n                            $.extend(true, opts, dataoptions);\n                            resolveAlias(opts.alias, dataoptions);\n                            opts.alias = undefined;\n                            $(this).inputmask(opts);\n                        } catch (ex) { } //need a more relax parseJSON\n                    }\n                });\n            }\n\n            //helper functions\n            function isInputEventSupported(eventName) {\n                var el = document.createElement('input'),\n\t\t        eventName = 'on' + eventName,\n\t\t        isSupported = (eventName in el);\n                if (!isSupported) {\n                    el.setAttribute(eventName, 'return;');\n                    isSupported = typeof el[eventName] == 'function';\n                }\n                el = null;\n                return isSupported;\n            }\n            function resolveAlias(aliasStr, options) {\n                var aliasDefinition = opts.aliases[aliasStr];\n                if (aliasDefinition) {\n                    if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias); //alias is another alias\n                    $.extend(true, opts, aliasDefinition);  //merge alias definition in the options\n                    $.extend(true, opts, options);  //reapply extra given options\n                    return true;\n                }\n                return false;\n            }\n            function getMaskTemplate(mask) {\n                var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;\n                if (mask.length == 1 && greedy == false) { opts.placeholder = \"\"; } //hide placeholder with single non-greedy mask\n                var singleMask = $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    }\n                    else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var i = 0; i < maskdef.cardinality; i++) {\n                                outElem.push(getPlaceHolder(outCount + i));\n                            }\n                        } else {\n                            outElem.push(element);\n                            escaped = false;\n                        }\n                        outCount += outElem.length;\n                        return outElem;\n                    }\n                });\n\n                //allocate repetitions\n                var repeatedMask = singleMask.slice();\n                for (var i = 1; i < repeat && greedy; i++) {\n                    repeatedMask = repeatedMask.concat(singleMask.slice());\n                }\n\n                return { \"mask\": repeatedMask, \"repeat\": repeat, \"greedy\": greedy };\n            }\n            //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}\n            function getTestingChain(mask) {\n                var isOptional = false, escaped = false;\n                var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated\n\n                return $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    } else if (element == opts.optionalmarker.start && !escaped) {\n                        isOptional = true;\n                        newBlockMarker = true;\n                    }\n                    else if (element == opts.optionalmarker.end && !escaped) {\n                        isOptional = false;\n                        newBlockMarker = true;\n                    }\n                    else {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            var prevalidators = maskdef[\"prevalidator\"], prevalidatorsL = prevalidators ? prevalidators.length : 0;\n                            for (var i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator[\"validator\"], cardinality = prevalidator[\"cardinality\"];\n                                outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp(\".\"), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                                if (isOptional == true) //reset newBlockMarker\n                                    newBlockMarker = false;\n                            }\n                            outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp(\".\"), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                        } else {\n                            outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element });\n                            escaped = false;\n                        }\n                        //reset newBlockMarker\n                        newBlockMarker = false;\n                        return outElem;\n                    }\n                });\n            }\n            function generateMaskSets() {\n                var ms = [];\n                var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates\n                function markOptional(maskPart) { //needed for the clearOptionalTail functionality\n                    return opts.optionalmarker.start + maskPart + opts.optionalmarker.end;\n                }\n                function splitFirstOptionalEndPart(maskPart) {\n                    var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            optionalStartMarkers++;\n                        }\n                        if (maskPart.charAt(i) == opts.optionalmarker.end) {\n                            optionalEndMarkers++;\n                        }\n                        if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers)\n                            break;\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function splitFirstOptionalStartPart(maskPart) {\n                    var mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            break;\n                        }\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function generateMask(maskPrefix, maskPart) {\n                    var maskParts = splitFirstOptionalEndPart(maskPart);\n                    var newMask, maskTemplate;\n\n                    var masks = splitFirstOptionalStartPart(maskParts[0]);\n                    if (masks.length > 1) {\n                        newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional\n                            generateMask(maskPrefix + masks[0], masks[1] + maskParts[1]);\n                        }\n                        if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) {\n                            generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1]);\n                            generateMask(maskPrefix + masks[0], maskParts[1]);\n                        }\n                    }\n                    else {\n                        newMask = maskPrefix + maskParts;\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                    }\n\n                }\n                if ($.isArray(opts.mask)) {\n                    $.each(opts.mask, function (ndx, lmnt) {\n                        generateMask(\"\", lmnt.toString());\n                    });\n                } else generateMask(\"\", opts.mask.toString());\n\n                return ms;\n            }\n            function getPlaceHolder(pos) {\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n\n            function maskScope(masksets, activeMasksetIndex) {\n                //maskset helperfunctions\n\n                function getActiveMaskSet() {\n                    return masksets[activeMasksetIndex];\n                }\n\n                function getActiveTests() {\n                    return getActiveMaskSet()['tests'];\n                }\n\n                function getActiveBufferTemplate() {\n                    return getActiveMaskSet()['_buffer'];\n                }\n\n                function getActiveBuffer() {\n                    return getActiveMaskSet()['buffer'];\n                }\n\n                function isValid(pos, c, strict, isRTL) { //strict true ~ no correction or autofill\n                    strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions \n\n                    function _isValid(position, activeMaskset) {\n                        var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset[\"buffer\"];\n                        for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) {\n                            chrs += getBufferElement(buffer, testPos - (i - 1));\n                        }\n\n                        if (c) {\n                            chrs += c;\n                        }\n\n                        //return is false or a json object => { pos: ??, c: ??} or true\n                        return activeMaskset['tests'][testPos].fn != null ? activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) : false;\n                    }\n\n                    if (strict) {\n                        var result = _isValid(pos, getActiveMaskSet()); //only check validity in current mask when validating strict\n                        if (result === true) {\n                            result = { \"pos\": pos }; //always take a possible corrected maskposition into account\n                        }\n                        return result;\n                    }\n\n                    var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        activeMasksetIndex = index;\n\n                        var maskPos = pos;\n                        if (currentActiveMasksetIndex != activeMasksetIndex && !isMask(pos)) {\n                            if (c == activeMaskset['_buffer'][maskPos] || c == opts.skipOptionalPartCharacter) { //match non-mask item\n                                results.push({ \"activeMasksetIndex\": index, \"result\": { \"refresh\": true, c: activeMaskset['_buffer'][maskPos] } }); //new command hack only rewrite buffer\n                                activeMaskset['lastValidPosition'] = maskPos;\n                                return false;\n                            } else activeMaskset['lastValidPosition'] = isRTL ? getMaskLength() + 1 : -1; //mark mask as validated and invalid\n                            //maskPos = isRTL ? seekPrevious(pos) : seekNext(pos);\n                        }\n                        if ((activeMaskset['lastValidPosition'] == undefined\n                                && maskPos == (isRTL ? seekPrevious(getMaskLength()) : seekNext(-1))\n                        )\n                            || (isRTL || opts.numericInput)\n                            ? activeMaskset['lastValidPosition'] <= opts.numericInput ? getMaskLength() : seekNext(maskPos)\n                            : activeMaskset['lastValidPosition'] >= seekPrevious(maskPos)) {\n                            if (maskPos >= 0 && maskPos < getMaskLength()) {\n                                result = _isValid(maskPos, activeMaskset);\n                                if (result !== false) {\n                                    if (result === true) {\n                                        result = { \"pos\": maskPos }; //always take a possible corrected maskposition into account\n                                    }\n                                    var newValidPosition = result.pos || maskPos;\n                                    if (activeMaskset['lastValidPosition'] == undefined ||\n                                        (isRTL ? (opts.greedy ? activeMaskset['lastValidPosition'] > newValidPosition : newValidPosition == getActiveBuffer().length - 1)\n                                            : activeMaskset['lastValidPosition'] < newValidPosition))\n                                        activeMaskset['lastValidPosition'] = newValidPosition; //set new position from isValid\n                                } else activeMaskset['lastValidPosition'] = isRTL ? pos == getMaskLength() ? undefined : seekNext(pos) : pos == 0 ? undefined : seekPrevious(pos); //autocorrect validposition from backspace etc  \t\n                                results.push({ \"activeMasksetIndex\": index, \"result\": result });\n                            }\n                        }\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex\n\n                    return results; //return results of the multiple mask validations\n                }\n\n                function determineActiveMasksetIndex(isRTL) {\n                    var currentMasksetIndex = activeMasksetIndex,\n                        highestValid = { \"activeMasksetIndex\": 0, \"lastValidPosition\": isRTL ? getMaskLength() + 1 : -1 };\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        if (activeMaskset['lastValidPosition'] != undefined) {\n                            if ((isRTL || opts.numericInput) ? (activeMaskset['lastValidPosition'] < highestValid['lastValidPosition']) : (activeMaskset['lastValidPosition'] > highestValid['lastValidPosition'])) {\n                                highestValid[\"activeMasksetIndex\"] = index;\n                                highestValid[\"lastValidPosition\"] = activeMaskset['lastValidPosition'];\n                            }\n                        }\n                    });\n                    activeMasksetIndex = highestValid[\"activeMasksetIndex\"];\n                    if (currentMasksetIndex != activeMasksetIndex) {\n                        if (isRTL) {\n                            clearBuffer(getActiveBuffer(), 0, seekPrevious(highestValid[\"lastValidPosition\"]));\n                        } else {\n                            clearBuffer(getActiveBuffer(), seekNext(highestValid[\"lastValidPosition\"]), getMaskLength());\n                        }\n                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                    }\n                }\n\n                function isMask(pos) {\n                    var testPos = determineTestPosition(pos);\n                    var test = getActiveTests()[testPos];\n\n                    return test != undefined ? test.fn : false;\n                }\n\n                function determineTestPosition(pos) {\n                    return pos % getActiveTests().length;\n                }\n\n\n\n                function getMaskLength() {\n                    return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts);\n                }\n\n                //pos: from position\n\n                function seekNext(pos) {\n                    var maskL = getMaskLength();\n                    if (pos >= maskL) return maskL;\n                    var position = pos;\n                    while (++position < maskL && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                //pos: from position\n\n                function seekPrevious(pos) {\n                    var position = pos;\n                    if (position <= 0) return 0;\n\n                    while (--position > 0 && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                function setBufferElement(buffer, position, element, autoPrepare, isRTL) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position, isRTL);\n\n                    var test = getActiveTests()[determineTestPosition(position)];\n                    var elem = element;\n                    if (elem != undefined) {\n                        switch (test.casing) {\n                            case \"upper\":\n                                elem = element.toUpperCase();\n                                break;\n                            case \"lower\":\n                                elem = element.toLowerCase();\n                                break;\n                        }\n                    }\n\n                    buffer[position] = elem;\n                }\n\n                function getBufferElement(buffer, position, autoPrepare) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position);\n                    return buffer[position];\n                }\n\n                //needed to handle the non-greedy mask repetitions\n\n                function prepareBuffer(buffer, position, isRTL) {\n                    var j;\n                    if (isRTL) {\n                        while (position < 0 && buffer.length < getMaskLength()) {\n                            j = getActiveBufferTemplate().length - 1;\n                            position = getActiveBufferTemplate().length;\n                            while (getActiveBufferTemplate()[j] !== undefined) {\n                                buffer.unshift(getActiveBufferTemplate()[j--]);\n                            }\n                        }\n                    } else {\n                        while (buffer[position] == undefined && buffer.length < getMaskLength()) {\n                            j = 0;\n                            while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer\n                                buffer.push(getActiveBufferTemplate()[j++]);\n                            }\n                        }\n                    }\n\n                    return position;\n                }\n\n                function writeBuffer(input, buffer, caretPos) {\n                    input._valueSet(buffer.join(''));\n                    if (caretPos != undefined) {\n                        caret(input, caretPos);\n                    }\n                }\n\n                ;\n\n                function clearBuffer(buffer, start, end) {\n                    for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {\n                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));\n                    }\n                }\n\n                ;\n\n                function setReTargetPlaceHolder(buffer, pos) {\n                    var testPos = determineTestPosition(pos);\n                    setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos));\n                }\n\n                function checkVal(input, writeOut, strict, nptvl) {\n                    var isRTL = $(input).data('inputmask')['isRTL'],\n                        inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet(), isRTL).split('');\n\n                    $.each(masksets, function (ndx, ms) {\n                        ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                        ms[\"lastValidPosition\"] = undefined;\n                        ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                    });\n                    if (strict !== true) activeMasksetIndex = 0;\n                    //caret(input, getActiveMaskSet()[\"p\"]);\n\n                    if (isRTL && !opts.numericInput)\n                        inputValue = inputValue.reverse();\n\n                    var ml = getMaskLength();\n                    $.each(inputValue, function (ndx, charCode) {\n                        var index = isRTL ? (opts.numericInput ? ml : ml - ndx - 1) : ndx;\n                        if (isMask(isRTL ? (opts.numericInput ? seekPrevious(ml) : ml - ndx - 1) : ndx)\n                        || (strict !== true && charCode != getBufferElement(getActiveBufferTemplate(), index, true))) {\n                            $(input).trigger(\"keypress\", [true, charCode.charCodeAt(0), writeOut, strict, index]);\n                        }\n                    });\n                    if (strict === true)\n                        getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"p\"]) : seekPrevious(getActiveMaskSet()[\"p\"]);\n                }\n\n                function escapeRegex(str) {\n                    return $.inputmask.escapeRegex.call(this, str);\n                }\n\n                function truncateInput(inputValue, rtl) {\n                    return rtl ? inputValue.replace(new RegExp(\"^(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*\"), \"\") : inputValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*$\"), \"\");\n                }\n\n                function clearOptionalTail(input) {\n                    var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos;\n                    if ($(input).data('inputmask')['isRTL']) {\n                        for (var pos = 0; pos <= tmpBuffer.length - 1; pos++) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.splice(0, 1);\n                                else break;\n                            } else break;\n                        }\n                    } else {\n                        for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.pop();\n                                else break;\n                            } else break;\n                        }\n                    }\n                    writeBuffer(input, tmpBuffer);\n                }\n\n                //functionality fn\n                this.unmaskedvalue = function ($input, skipDatepickerCheck) {\n                    return unmaskedvalue($input, skipDatepickerCheck);\n                };\n                function unmaskedvalue($input, skipDatepickerCheck) {\n                    var input = $input[0];\n                    if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {\n                        checkVal(input, false, true);\n                        return $.map(getActiveBuffer(), function (element, index) {\n                            return isMask(index) && isValid(index, element, true) ? element : null;\n                        }).join('');\n                    } else {\n                        return input._valueGet();\n                    }\n                }\n\n                var caretSavePoint;\n\n                function caret(input, begin, end) {\n                    var npt = input.jquery && input.length > 0 ? input[0] : input, range;\n                    if (typeof begin == 'number') {\n                        if (!$(input).is(':visible')) {\n                            return;\n                        }\n                        end = (typeof end == 'number') ? end : begin;\n                        if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode\n                        if (npt.setSelectionRange) {\n                            if (android) {\n                                setTimeout(function () {\n                                    npt.selectionStart = begin;\n                                    npt.selectionEnd = android ? begin : end;\n                                }, 10);\n                                caretSavePoint = { \"begin\": begin, \"end\": end };\n                            } else {\n                                npt.selectionStart = begin;\n                                npt.selectionEnd = end;\n                            }\n                        } else if (npt.createTextRange) {\n                            range = npt.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd('character', end);\n                            range.moveStart('character', begin);\n                            range.select();\n                        }\n                    } else {\n                        if (!$(input).is(':visible')) {\n                            return { \"begin\": 0, \"end\": 0 };\n                        }\n                        if (npt.setSelectionRange) {\n                            begin = npt.selectionStart;\n                            end = npt.selectionEnd;\n                        } else if (document.selection && document.selection.createRange) {\n                            range = document.selection.createRange();\n                            begin = 0 - range.duplicate().moveStart('character', -100000);\n                            end = begin + range.text.length;\n                        }\n                        return { \"begin\": begin, \"end\": end };\n                    }\n                };\n\n                this.isComplete = function (buffer) {\n                    return isComplete(buffer);\n                };\n                function isComplete(buffer) {\n                    var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (ndx, ms) {\n                        activeMasksetIndex = ndx;\n                        var aml = seekPrevious(getMaskLength());\n                        if (ms[\"lastValidPosition\"] != undefined && ms[\"lastValidPosition\"] >= highestValidPosition && ms[\"lastValidPosition\"] == aml) {\n                            var msComplete = true;\n                            for (var i = 0; i <= aml; i++) {\n                                var mask = isMask(i), testPos = determineTestPosition(i);\n                                if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) {\n                                    msComplete = false;\n                                    break;\n                                }\n                            }\n                            complete = complete || msComplete;\n                            if (complete) //break loop\n                                return false;\n                        }\n                        highestValidPosition = ms[\"lastValidPosition\"];\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset\n                    return complete;\n                }\n                this.mask = function (el) {\n                    var $input = $(el);\n                    if (!$input.is(\":input\")) return;\n\n                    //store tests & original buffer in the input element - used to get the unmasked value\n                    $input.data('inputmask', {\n                        'masksets': masksets,\n                        'activeMasksetIndex': activeMasksetIndex,\n                        'opts': opts,\n                        'isRTL': false\n                    });\n\n                    //show tooltip\n                    if (opts.showTooltip) {\n                        $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                    }\n\n                    //correct greedy setting if needed\n                    getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0;\n\n                    //handle maxlength attribute\n                    var maxLength = $input.prop('maxLength');\n                    if (getMaskLength() > maxLength && maxLength > -1) { //FF sets no defined max length to -1 \n                        if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength;\n                        if (getActiveMaskSet()['greedy'] == false) {\n                            getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length);\n                        }\n                        $input.prop('maxLength', getMaskLength() * 2);\n                    }\n\n                    patchValueProperty(el);\n\n                    //init vars\n                    getActiveMaskSet()[\"undoBuffer\"] = el._valueGet();\n                    var skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        ignorable = false,\n                        isRTL = false;\n                    if (el.dir == \"rtl\" || opts.numericInput) {\n                        if (el.dir == \"rtl\" || (opts.numericInput && opts.rightAlignNumerics))\n                            $input.css(\"text-align\", \"right\");\n                        el.dir = \"ltr\";\n                        $input.removeAttr(\"dir\");\n                        var inputData = $input.data('inputmask');\n                        inputData['isRTL'] = true;\n                        $input.data('inputmask', inputData);\n                        isRTL = true;\n                    }\n\n                    //unbind all events - to make sure that no other mask will interfere when re-masking\n                    $input.unbind(\".inputmask\");\n                    $input.removeClass('focus.inputmask');\n                    //bind events\n                    $input.bind(\"mouseenter.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer());\n                            }\n                        }\n                    }).bind(\"blur.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer();\n                        $input.removeClass('focus.inputmask');\n                        if (nptValue != getActiveMaskSet()[\"undoBuffer\"]) {\n                            $input.change();\n                        }\n                        if (opts.clearMaskOnLostFocus && nptValue != '') {\n                            if (nptValue == getActiveBufferTemplate().join(''))\n                                input._valueSet('');\n                            else { //clearout optional tail of the mask\n                                clearOptionalTail(input);\n                            }\n                        }\n                        if (!isComplete(buffer)) {\n                            $input.trigger(\"incomplete\");\n                            if (opts.clearIncomplete) {\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                                activeMasksetIndex = 0;\n                                if (opts.clearMaskOnLostFocus)\n                                    input._valueSet('');\n                                else {\n                                    buffer = getActiveBufferTemplate().slice();\n                                    writeBuffer(input, buffer);\n                                }\n                            }\n                        }\n                    }).bind(\"focus.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet();\n                        if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            }\n                        }\n                        $input.addClass('focus.inputmask');\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                    }).bind(\"mouseleave.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (opts.clearMaskOnLostFocus) {\n                            if (!$input.hasClass('focus.inputmask')) {\n                                if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '')\n                                    input._valueSet('');\n                                else { //clearout optional tail of the mask\n                                    clearOptionalTail(input);\n                                }\n                            }\n                        }\n                    }).bind(\"click.inputmask\", function () {\n                        var input = this;\n                        setTimeout(function () {\n                            var selectedCaret = caret(input), buffer = getActiveBuffer();\n                            if (selectedCaret.begin == selectedCaret.end) {\n                                var clickPosition = selectedCaret.begin,\n                                    lvp = getActiveMaskSet()[\"lastValidPosition\"],\n                                    lastPosition;\n\n                                determineInputDirection(input, selectedCaret);\n                                if (isRTL) {\n                                    if (opts.numericInput) {\n                                        lastPosition = opts.skipRadixDance === false && opts.radixPoint != \"\" && $.inArray(opts.radixPoint, buffer) != -1 ? $.inArray(opts.radixPoint, buffer) : getMaskLength();\n                                    } else {\n                                        lastPosition = seekPrevious((lvp == undefined ? getMaskLength() : lvp) + 1);\n                                    }\n                                    caret(input, clickPosition > lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                } else {\n                                    lastPosition = seekNext(lvp == undefined ? -1 : lvp);\n                                    caret(input, clickPosition < lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                }\n                            }\n                        }, 0);\n                    }).bind('dblclick.inputmask', function () {\n                        var input = this;\n                        if (getActiveMaskSet()[\"lastValidPosition\"] != undefined) {\n                            setTimeout(function () {\n                                isRTL ?\n                                    caret(input, seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]), getMaskLength()) :\n                                    caret(input, 0, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n                            }, 0);\n                        }\n                    }).bind(\"keydown.inputmask\", keydownEvent\n                    ).bind(\"keypress.inputmask\", keypressEvent\n                    ).bind(\"keyup.inputmask\", keyupEvent\n                    ).bind(pasteEvent + \".inputmask dragdrop.inputmask drop.inputmask\", function () {\n                        var input = this, $input = $(input);\n                        setTimeout(function () {\n                            checkVal(input, true, false);\n                            if (isComplete(getActiveBuffer()))\n                                $input.trigger(\"complete\");\n                            $input.click();\n                        }, 0);\n                    }).bind('setvalue.inputmask', function () {\n                        var input = this;\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        checkVal(input, true);\n                        if (input._valueGet() == getActiveBufferTemplate().join(''))\n                            input._valueSet('');\n                    }).bind('complete.inputmask', opts.oncomplete)\n                        .bind('incomplete.inputmask', opts.onincomplete)\n                        .bind('cleared.inputmask', opts.oncleared);\n\n                    //apply mask\n                    checkVal(el, true, false);\n                    // Wrap document.activeElement in a try/catch block since IE9 throw \"Unspecified error\" if document.activeElement is undefined when we are in an IFrame.\n                    var activeElement;\n                    try {\n                        activeElement = document.activeElement;\n                    } catch (e) {\n                    }\n                    if (activeElement === el) { //position the caret when in focus\n                        $input.addClass('focus.inputmask');\n                        caret(el, getActiveMaskSet()[\"lastValidPosition\"]);\n                    } else if (opts.clearMaskOnLostFocus) {\n                        if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) {\n                            el._valueSet('');\n                        } else {\n                            clearOptionalTail(el);\n                        }\n                    }\n\n                    installEventRuler(el);\n\n                    //private functions\n\n                    function installEventRuler(npt) {\n                        var events = $._data(npt).events;\n\n                        $.each(events, function (eventType, eventHandlers) {\n                            $.each(eventHandlers, function (ndx, eventHandler) {\n                                if (eventHandler.namespace == \"inputmask\") {\n                                    var handler = eventHandler.handler;\n                                    eventHandler.handler = function (e) {\n                                        if (this.readOnly || this.disabled)\n                                            e.preventDefault;\n                                        else\n                                            return handler.apply(this, arguments);\n                                    };\n                                }\n                            });\n                        });\n                    }\n\n                    function patchValueProperty(npt) {\n                        var valueProperty;\n                        if (Object.getOwnPropertyDescriptor)\n                            valueProperty = Object.getOwnPropertyDescriptor(npt, \"value\");\n                        if (valueProperty && valueProperty.get) {\n                            if (!npt._valueGet) {\n\n                                npt._valueGet = valueProperty.get;\n                                npt._valueSet = valueProperty.set;\n\n                                Object.defineProperty(npt, \"value\", {\n                                    get: function () {\n                                        var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                            activeMasksetIndex = inputData['activeMasksetIndex'];\n                                        return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                    },\n                                    set: function (value) {\n                                        this._valueSet(value);\n                                        $(this).triggerHandler('setvalue.inputmask');\n                                    }\n                                });\n                            }\n                        } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                            if (!npt._valueGet) {\n                                npt._valueGet = npt.__lookupGetter__(\"value\");\n                                npt._valueSet = npt.__lookupSetter__(\"value\");\n\n                                npt.__defineGetter__(\"value\", function () {\n                                    var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                        activeMasksetIndex = inputData['activeMasksetIndex'];\n                                    return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                });\n                                npt.__defineSetter__(\"value\", function (value) {\n                                    this._valueSet(value);\n                                    $(this).triggerHandler('setvalue.inputmask');\n                                });\n                            }\n                        } else {\n                            if (!npt._valueGet) {\n                                npt._valueGet = function () { return this.value; };\n                                npt._valueSet = function (value) { this.value = value; };\n                            }\n                            if ($.fn.val.inputmaskpatch != true) {\n                                $.fn.val = function () {\n                                    if (arguments.length == 0) {\n                                        var $self = $(this);\n                                        if ($self.data('inputmask')) {\n                                            if ($self.data('inputmask')['opts'].autoUnmask)\n                                                return $self.inputmask('unmaskedvalue');\n                                            else {\n                                                var result = $.inputmask.val.apply($self);\n                                                var inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                                    activeMasksetIndex = inputData['activeMasksetIndex'];\n                                                return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';\n                                            }\n                                        } else return $.inputmask.val.apply($self);\n                                    } else {\n                                        var args = arguments;\n                                        return this.each(function () {\n                                            var $self = $(this);\n                                            var result = $.inputmask.val.apply($self, args);\n                                            if ($self.data('inputmask')) $self.triggerHandler('setvalue.inputmask');\n                                            return result;\n                                        });\n                                    }\n                                };\n                                $.extend($.fn.val, {\n                                    inputmaskpatch: true\n                                });\n                            }\n                        }\n                    }\n\n                    function determineInputDirection(input, pos) {\n                        //set input direction according the position to the radixPoint\n                        if (opts.numericInput && opts.radixPoint != \"\" && opts.skipRadixDance === false) {\n                            var nptStr = input._valueGet();\n                            var radixPosition = nptStr.indexOf(opts.radixPoint);\n                            isRTL = pos.begin <= radixPosition || pos.end <= radixPosition || radixPosition == -1;\n                        }\n                    }\n\n                    //shift chars to left from start to end and put c at end position if defined\n\n                    function shiftL(start, end, c) {\n                        var buffer = getActiveBuffer();\n                        while (!isMask(start) && start - 1 >= 0) start--; //jumping over nonmask position\n                        for (var i = start; i < end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                setReTargetPlaceHolder(buffer, i);\n                                var j = seekNext(i);\n                                var p = getBufferElement(buffer, j);\n                                if (p != getPlaceHolder(j)) {\n                                    if (j < getMaskLength() && isValid(i, p, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n                                        setBufferElement(buffer, i, getBufferElement(buffer, j), true, isRTL);\n                                        if (j < end) {\n                                            setReTargetPlaceHolder(buffer, j); //cleanup next position\n                                        }\n                                    } else {\n                                        if (isMask(i))\n                                            break;\n                                    }\n                                } //else if (c == undefined) break;\n                            } else {\n                                setReTargetPlaceHolder(buffer, i);\n                            }\n                        }\n                        if (c != undefined)\n                            setBufferElement(buffer, isRTL ? end : seekPrevious(end), c);\n\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return start; //return the used start position\n                    }\n\n                    function shiftR(start, end, c, full) { //full => behave like a push right ~ do not stop on placeholders\n                        var buffer = getActiveBuffer();\n                        for (var i = start; i <= end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                var t = getBufferElement(buffer, i);\n                                setBufferElement(buffer, i, c, true, isRTL);\n                                if (t != getPlaceHolder(i)) {\n                                    var j = seekNext(i);\n                                    if (j < getMaskLength()) {\n                                        if (isValid(j, t, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def)\n                                            c = t;\n                                        else {\n                                            if (isMask(j))\n                                                break;\n                                            else c = t;\n                                        }\n                                    } else break;\n                                } else {\n                                    c = t;\n                                    if (full !== true) break;\n                                }\n                            } else\n                                setReTargetPlaceHolder(buffer, i);\n                        }\n                        var lengthBefore = buffer.length;\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return end - (lengthBefore - buffer.length); //return new start position\n                    }\n\n                    ;\n\n                    function keydownEvent(e) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        skipKeyPressEvent = false;\n\n                        var input = this, k = e.keyCode, pos = caret(input);\n                        determineInputDirection(input, pos);\n\n                        //backspace, delete, and escape get special treatment\n                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete\n                            e.preventDefault(); //stop default action but allow propagation\n                            var beginPos = pos.begin;\n                            if (pos.begin == 0 && pos.end == getMaskLength()) {\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                            } else if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) { //partial selection\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                var ml = getMaskLength();\n                                if (opts.greedy == false) {\n                                    isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                } else {\n                                    for (var i = pos.begin; i < pos.end; i++) {\n                                        if (isMask(i))\n                                            isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                    }\n                                }\n                                checkVal(input, false, true, getActiveBuffer());\n                            } else {\n                                $.each(masksets, function (ndx, ms) {\n                                    activeMasksetIndex = ndx;\n                                    beginPos = android533 ? pos.end : pos.begin;\n                                    var buffer = getActiveBuffer(), firstMaskPos = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1),\n                                        maskL = getMaskLength();\n                                    if (k == opts.keyCode.DELETE) { //handle delete\n                                        if (isRTL ? beginPos > firstMaskPos : beginPos < firstMaskPos)\n                                            beginPos = firstMaskPos;\n                                        if (beginPos < maskL) {\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : seekNext(beginPos);\n                                                beginPos = shiftL(beginPos, maskL);\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        }\n                                    } else if (k == opts.keyCode.BACKSPACE) { //handle backspace\n                                        if (isRTL ? beginPos <= firstMaskPos : beginPos > firstMaskPos) {\n                                            beginPos -= 1;\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = shiftR(0, (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : beginPos - 1, getPlaceHolder(beginPos), true);\n                                                beginPos++;\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = buffer[beginPos + 1] == opts.radixPoint ? beginPos + 1 : seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        } else if (activeMasksetIndex > 0) { //retry other masks\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                            getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                            getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                            //init first \n                                            activeMasksetIndex = 0;\n                                            getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                                            getActiveMaskSet()[\"p\"] = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1);\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                        }\n                                    }\n                                });\n\n                            }\n\n                            determineActiveMasksetIndex(isRTL);\n                            writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            if (input._valueGet() == getActiveBufferTemplate().join(''))\n                                $(input).trigger('cleared');\n\n                            if (opts.showTooltip) { //update tooltip\n                                $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                            }\n                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch\n                            setTimeout(function () {\n                                var caretPos = isRTL ? getActiveMaskSet()[\"lastValidPosition\"] : seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n                                if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;\n                                caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);\n                            }, 0);\n                        } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up\n                            caret(input, 0, e.shiftKey ? pos.begin : 0);\n                        } else if (k == opts.keyCode.ESCAPE) { //escape\n                            input._valueSet(getActiveMaskSet()[\"undoBuffer\"]);\n                            checkVal(input, true, true);\n                        } else if (k == opts.keyCode.INSERT) { //insert\n                            opts.insertMode = !opts.insertMode;\n                            caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);\n                        } else if (opts.insertMode == false && !e.shiftKey) {\n                            if (k == opts.keyCode.RIGHT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin);\n                                }, 0);\n                            } else if (k == opts.keyCode.LEFT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin - 1);\n                                }, 0);\n                            }\n                        }\n\n                        opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown\n                        ignorable = $.inArray(k, opts.ignorables) != -1;\n                    }\n\n                    function keypressEvent(e, checkval, k, writeOut, strict, ndx) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        if (k == undefined && skipKeyPressEvent) return false;\n                        skipKeyPressEvent = true;\n\n                        var input = this, $input = $(input);\n\n                        e = e || window.event;\n                        var k = k || e.which || e.charCode || e.keyCode,\n                            c = String.fromCharCode(k);\n\n                        if ((e.ctrlKey || e.metaKey || ignorable) && checkval !== true) {\n                            return true;\n                        } else {\n                            if (k) {\n                                var pos, results, result;\n                                if (checkval) {\n                                    var pcaret = strict ? ndx : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]);\n                                    pos = { begin: pcaret, end: pcaret };\n                                } else {\n                                    pos = caret(input);\n                                }\n\n                                //clear possible selection\n                                var initialIndex = activeMasksetIndex, selectionCleared = false;\n                                $.each(masksets, function (ndx, lmnt) {\n                                    activeMasksetIndex = ndx;\n                                    getActiveMaskSet()[\"undoBuffer\"] = getActiveBuffer().join('');\n                                    if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) {\n                                        var posend = pos.end < getMaskLength() ? pos.end : getMaskLength();\n                                        clearBuffer(getActiveBuffer(), pos.begin, posend);\n                                        var ml = getMaskLength();\n                                        if (opts.greedy == false) {\n                                            isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                        } else {\n                                            for (var i = pos.begin; i < posend; i++) {\n                                                if (isMask(i))\n                                                    isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                            }\n                                        }\n                                        selectionCleared = true;\n                                    }\n                                });\n                                activeMasksetIndex = initialIndex; //restore index\n\n                                if (isRTL) {\n                                    var p = seekPrevious(selectionCleared ? pos.begin : pos.end);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                var maskL = getMaskLength(); //update masklength to include possible groupSeparator offset\n                                                var firstMaskPos = seekNext(-1), firstUnmaskedPosition = firstMaskPos;\n                                                if (opts.insertMode == true) {\n                                                    if (getActiveMaskSet()['greedy'] == true) {\n                                                        var bfrClone = buffer.slice();\n                                                        while (getBufferElement(bfrClone, firstUnmaskedPosition, true) != getPlaceHolder(firstUnmaskedPosition) && firstUnmaskedPosition <= p) {\n                                                            firstUnmaskedPosition = firstUnmaskedPosition == maskL ? (maskL + 1) : seekNext(firstUnmaskedPosition);\n                                                        }\n                                                    }\n                                                    if (firstUnmaskedPosition <= p && (getActiveMaskSet()['greedy'] || (buffer.length < maskL || getBufferElement(buffer, p) == getPlaceHolder(p)))) {\n                                                        if (buffer[firstMaskPos] != getPlaceHolder(firstMaskPos) && buffer.length < maskL) {\n                                                            var offset = prepareBuffer(buffer, -1, isRTL);\n                                                            if ((selectionCleared ? pos.begin : pos.end) != 0) p = p + offset;\n                                                            maskL = buffer.length;\n                                                        }\n                                                        shiftL(firstUnmaskedPosition, p, c);\n                                                    } else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = p;\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]));\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                } else {\n                                    var p = seekNext(pos.begin - 1);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                if (opts.insertMode == true) {\n                                                    var lastUnmaskedPosition = getMaskLength();\n                                                    var bfrClone = buffer.slice();\n                                                    while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) {\n                                                        lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition);\n                                                    }\n                                                    if (lastUnmaskedPosition >= p)\n                                                        shiftR(p, buffer.length, c);\n                                                    else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = seekNext(p);\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var p = getActiveMaskSet()[\"p\"], buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : p);\n\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                }\n                                if (android && checkval !== true) {\n                                    caret(input, caretSavePoint.begin, caretSavePoint.end);\n                                }\n                                if (opts.showTooltip) { //update tooltip\n                                    $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                                }\n                                e.preventDefault();\n                            }\n                        }\n                    }\n\n                    function keyupEvent(e) {\n                        var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();\n                        opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup\n                        if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {\n                            buffer = getActiveBufferTemplate().slice();\n                            writeBuffer(input, buffer);\n                            if (!isRTL) caret(input, 0);\n                            getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        }\n                    }\n                };\n                return this;\n            };\n            return this;\n        };\n    }\n})(jQuery);\n/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //extra definitions\n    $.extend($.inputmask.defaults.definitions, {\n        'A': { //auto uppercasing\n            validator: \"[A-Za-z]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        '#': {\n            validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n            cardinality: 1,\n            casing: \"upper\"\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'url': {\n            mask: \"ir\",\n            placeholder: \"\",\n            separator: \"\",\n            defaultPrefix: \"http://\",\n            regex: {\n                urlpre1: new RegExp(\"[fh]\"),\n                urlpre2: new RegExp(\"(ft|ht)\"),\n                urlpre3: new RegExp(\"(ftp|htt)\"),\n                urlpre4: new RegExp(\"(ftp:|http|ftps)\"),\n                urlpre5: new RegExp(\"(ftp:/|ftps:|http:|https)\"),\n                urlpre6: new RegExp(\"(ftp://|ftps:/|http:/|https:)\"),\n                urlpre7: new RegExp(\"(ftp://|ftps://|http://|https:/)\"),\n                urlpre8: new RegExp(\"(ftp://|ftps://|http://|https://)\")\n            },\n            definitions: {\n                'i': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return true;\n                    },\n                    cardinality: 8,\n                    prevalidator: (function () {\n                        var result = [], prefixLimit = 8;\n                        for (var i = 0; i < prefixLimit; i++) {\n                            result[i] = (function () {\n                                var j = i;\n                                return {\n                                    validator: function (chrs, buffer, pos, strict, opts) {\n                                        if (opts.regex[\"urlpre\" + (j + 1)]) {\n                                            var tmp = chrs, k;\n                                            if (((j + 1) - chrs.length) > 0) {\n                                                tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + \"\" + tmp;\n                                            }\n                                            var isValid = opts.regex[\"urlpre\" + (j + 1)].test(tmp);\n                                            if (!strict && !isValid) {\n                                                pos = pos - j;\n                                                for (k = 0; k < opts.defaultPrefix.length; k++) {\n                                                    buffer[pos] = opts.defaultPrefix[k]; pos++;\n                                                }\n                                                for (k = 0; k < tmp.length - 1; k++) {\n                                                    buffer[pos] = tmp[k]; pos++;\n                                                }\n                                                return { \"pos\": pos };\n                                            }\n                                            return isValid;\n                                        } else {\n                                            return false;\n                                        }\n                                    }, cardinality: j\n                                };\n                            })();\n                        }\n                        return result;\n                    })()\n                },\n                \"r\": {\n                    validator: \".\",\n                    cardinality: 50\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        \"ip\": {\n            mask: \"i.i.i.i\",\n            definitions: {\n                'i': {\n                    validator: \"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",\n                    cardinality: 3,\n                    prevalidator: [\n                                { validator: \"[0-2]\", cardinality: 1 },\n                                { validator: \"2[0-5]|[01][0-9]\", cardinality: 2 }\n                    ]\n                }\n            }\n        }\n    });\n})(jQuery);/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2012 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //date & time aliases\n    $.extend($.inputmask.defaults.definitions, {\n        'h': { //hours\n            validator: \"[01][0-9]|2[0-3]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-2]\", cardinality: 1 }]\n        },\n        's': { //seconds || minutes\n            validator: \"[0-5][0-9]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-5]\", cardinality: 1 }]\n        },\n        'd': { //basic day\n            validator: \"0[1-9]|[12][0-9]|3[01]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-3]\", cardinality: 1 }]\n        },\n        'm': { //basic month\n            validator: \"0[1-9]|1[012]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[01]\", cardinality: 1 }]\n        },\n        'y': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'dd/mm/yyyy': {\n            mask: \"1/2/y\",\n            placeholder: \"dd/mm/yyyy\",\n            regex: {\n                val1pre: new RegExp(\"[0-3]\"), //daypre\n                val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"), //day\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\"); }, //monthpre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\"); }//month\n            },\n            leapday: \"29/02/\",\n            separator: '/',\n            yearrange: { minyear: 1900, maxyear: 2099 },\n            isInYearRange: function (chrs, minyear, maxyear) {\n                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length)));\n                var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) ||\n            \t\t   (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false);\n            },\n            determinebaseyear: function (minyear, maxyear) {\n                var currentyear = (new Date()).getFullYear();\n                if (minyear > currentyear) return minyear;\n                if (maxyear < currentyear) return maxyear;\n\n                return currentyear;\n            },\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());\n                }\n            },\n            definitions: {\n                '1': { //val1 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.val1.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.val1pre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(0, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(0, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                'y': { //year\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                            var dayMonthValue = buffer.join('').substr(0, 6);\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(chrs, 10);//detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        } else return false;\n                    },\n                    cardinality: 4,\n                    prevalidator: [\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 1);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                return { \"pos\": pos };\n                            }\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n                            if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                                var dayMonthValue = buffer.join('').substr(0, 6);\n                                if (dayMonthValue != opts.leapday)\n                                    isValid = true;\n                                else {\n                                    var year = parseInt(chrs, 10);//detect leap year\n                                    if (year % 4 === 0)\n                                        if (year % 100 === 0)\n                                            if (year % 400 === 0)\n                                                isValid = true;\n                                            else isValid = false;\n                                        else isValid = true;\n                                    else isValid = false;\n                                }\n                            } else isValid = false;\n                            if (isValid) {\n                                buffer[pos - 1] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                buffer[pos++] = chrs[0];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    }, cardinality: 2\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                    }, cardinality: 3\n                }\n                    ]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'mm/dd/yyyy': {\n            placeholder: \"mm/dd/yyyy\",\n            alias: \"dd/mm/yyyy\", //reuse functionality of dd/mm/yyyy alias\n            regex: {\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\"); }, //daypre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\"); }, //day\n                val1pre: new RegExp(\"[01]\"), //monthpre\n                val1: new RegExp(\"0[1-9]|1[012]\") //month\n            },\n            leapday: \"02/29/\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());\n                }\n            }\n        },\n        'yyyy/mm/dd': {\n            mask: \"y/1/2\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            leapday: \"/02/29\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());\n                }\n            },\n            definitions: {\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(5, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n\n                        //check leap yeap\n                        if (isValid) {\n                            var dayMonthValue = buffer.join('').substr(4, 4) + chrs;\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(buffer.join('').substr(0, 4), 10);  //detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(5, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            }\n        },\n        'dd.mm.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"dd.mm.yyyy\",\n            leapday: \"29.02.\",\n            separator: '.',\n            alias: \"dd/mm/yyyy\"\n        },\n        'dd-mm-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"dd-mm-yyyy\",\n            leapday: \"29-02-\",\n            separator: '-',\n            alias: \"dd/mm/yyyy\"\n        },\n        'mm.dd.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"mm.dd.yyyy\",\n            leapday: \"02.29.\",\n            separator: '.',\n            alias: \"mm/dd/yyyy\"\n        },\n        'mm-dd-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"mm-dd-yyyy\",\n            leapday: \"02-29-\",\n            separator: '-',\n            alias: \"mm/dd/yyyy\"\n        },\n        'yyyy.mm.dd': {\n            mask: \"y.1.2\",\n            placeholder: \"yyyy.mm.dd\",\n            leapday: \".02.29\",\n            separator: '.',\n            alias: \"yyyy/mm/dd\"\n        },\n        'yyyy-mm-dd': {\n            mask: \"y-1-2\",\n            placeholder: \"yyyy-mm-dd\",\n            leapday: \"-02-29\",\n            separator: '-',\n            alias: \"yyyy/mm/dd\"\n        },\n        'datetime': {\n            mask: \"1/2/y h:s\",\n            placeholder: \"dd/mm/yyyy hh:mm\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                hrspre: new RegExp(\"[012]\"), //hours pre\n                hrs24: new RegExp(\"2[0-9]|1[3-9]\"),\n                hrs: new RegExp(\"[01][0-9]|2[0-3]\"), //hours\n                ampmpre: new RegExp(\"[apAP]\"),\n                ampm: new RegExp(\"^[a|p|A|P][m|M]\")\n            },\n            timeseparator: ':',\n            hourFormat: \"24\", // or 12\n            definitions: {\n                'h': { //hours\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.hrs.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.timeseparator || \"-.:\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    buffer[pos] = chrs.charAt(0);\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                        }\n\n                        if (isValid && opts.hourFormat !== \"24\" && opts.regex.hrs24.test(chrs)) {\n\n                            var tmp = parseInt(chrs, 10);\n\n                            if (tmp == 24) {\n                                buffer[pos + 5] = \"a\";\n                                buffer[pos + 6] = \"m\";\n                            } else {\n                                buffer[pos + 5] = \"p\";\n                                buffer[pos + 6] = \"m\";\n                            }\n\n                            tmp = tmp - 12;\n\n                            if (tmp < 10) {\n                                buffer[pos] = tmp.toString();\n                                buffer[pos - 1] = \"0\";\n                            } else {\n                                buffer[pos] = tmp.toString().charAt(1);\n                                buffer[pos - 1] = tmp.toString().charAt(0);\n                            }\n\n                            return { \"pos\": pos, \"c\": buffer[pos] };\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.hrspre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                't': { //am/pm\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.ampm.test(chrs);\n                        if (!strict && !isValid) {\n                            isValid = opts.regex.ampm.test(chrs + 'm');\n                            if (isValid) {\n                                buffer[pos - 1] = chrs.charAt(0);\n                                buffer[pos] = \"m\";\n                                pos++;\n                                return pos;\n                            }\n                        }\n                        return isValid;\n                    },\n                    casing: \"lower\",\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.ampmpre.test(chrs);\n                            if (isValid) {\n                                isValid = opts.regex.ampm.test(chrs + \"m\");\n                                if (isValid) {\n                                    buffer[pos] = chrs;\n                                    buffer[pos + 1] = 'm';\n                                    return pos;\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'datetime12': {\n            mask: \"1/2/y h:s t\",\n            placeholder: \"dd/mm/yyyy hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'h:s t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm:ss': {\n            mask: \"h:s:s\",\n            autoUnmask: false\n        },\n        'hh:mm': {\n            mask: \"h:s\",\n            autoUnmask: false\n        },\n        'date': {\n            alias: \"dd/mm/yyyy\" // \"mm/dd/yyyy\"\n        }\n    });\n})(jQuery);/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //number aliases\n    $.extend($.inputmask.defaults.aliases, {\n        'decimal': {\n            mask: \"~\",\n            placeholder: \"\",\n            repeat: 10,\n            greedy: false,\n            numericInput: true,\n            digits: \"*\", //numer of digits\n            groupSeparator: \"\",//\",\", // | \".\"\n            radixPoint: \".\",\n            groupSize: 3,\n            autoGroup: false,\n            allowPlus: true,\n            allowMinus: true,\n            getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account\n                var calculatedLength = buffer.length;\n\n                if (!greedy && repeat > 1) {\n                    calculatedLength += (buffer.length * (repeat - 1));\n                }\n\n                var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);\n                var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), \"\").replace(new RegExp(escapedRadixPoint), \"\"),\n                groupOffset = currentBufferStr.length - strippedBufferStr.length;\n                return calculatedLength + groupOffset;\n            },\n            postFormat: function (buffer, pos, reformatOnly, opts) {\n                if (opts.groupSeparator == \"\") return pos;\n                var cbuf = buffer.slice(),\n                    radixPos = $.inArray(opts.radixPoint, buffer);\n                if (!reformatOnly) {\n                    cbuf.splice(pos == 0 || pos <= radixPos || opts.skipRadixDance ? pos + 1 : pos, 0, \"?\"); //set position indicator\n                }\n                var bufVal = cbuf.join('');\n                if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                    bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                    var radixSplit = bufVal.split(opts.radixPoint);\n                    bufVal = radixSplit[0];\n                    var reg = new RegExp('([-\\+]?[\\\\d\\?]+)([\\\\d\\?]{' + opts.groupSize + '})');\n                    while (reg.test(bufVal)) {\n                        bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');\n                        bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);\n                    }\n                    if (radixSplit.length > 1)\n                        bufVal += opts.radixPoint + radixSplit[1];\n                }\n                buffer.length = bufVal.length; //align the length\n                for (var i = 0, l = bufVal.length; i < l; i++) {\n                    buffer[i] = bufVal.charAt(i);\n                }\n                var newPos = $.inArray(\"?\", buffer);\n                if (!reformatOnly) buffer.splice(newPos, 1);\n\n                return reformatOnly ? pos : newPos <= radixPos || (opts.skipRadixDance && newPos != 0) ? newPos - 1 : newPos;\n            },\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var escapedRadixPoint = $.inputmask.escapeRegex.call(this, radixPoint);\n                    var digitExpression = isNaN(digits) ? digits : '{0,' + digits + '}';\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)(\" + escapedRadixPoint + \"\\\\d\" + digitExpression + \")?$\");\n                }\n            },\n            onKeyDown: function (e, buffer, opts) {\n                var $input = $(this), input = this;\n                if (e.keyCode == opts.keyCode.TAB) {\n                    var radixPosition = $.inArray(opts.radixPoint, buffer);\n                    if (radixPosition != -1) {\n                        var masksets = $input.data('inputmask')['masksets'];\n                        var activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex][\"_buffer\"], masksets[activeMasksetIndex][\"greedy\"], masksets[activeMasksetIndex][\"repeat\"], buffer, opts) ; i++) {\n                            if (buffer[radixPosition + i] == undefined) buffer[radixPosition + i] = \"0\";\n                        }\n                        input._valueSet(buffer.join(''));\n                    }\n                } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) {\n                    opts.postFormat(buffer, 0, true, opts);\n                    input._valueSet(buffer.join(''));\n                }\n            },\n            definitions: {\n                '~': { //real number\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (chrs == \"\") return false;\n                        if (pos <= 1 && buffer[0] === '0' && new RegExp(\"[\\\\d-]\").test(chrs)) { //handle first char\n                            buffer[0] = \"\";\n                            return { \"pos\": 0 };\n                        }\n\n                        var cbuf = strict ? buffer.slice(0, pos) : buffer.slice();\n\n                        cbuf.splice(pos == 0 ? pos : pos + 1, 0, chrs);\n                        var bufferStr = cbuf.join('');\n                        if (opts.autoGroup && !strict) { //strip groupseparator\n                            var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                            bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                        }\n                        var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                        if (!isValid) {\n                            //let's help the regex a bit\n                            bufferStr += \"0\";\n                            isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                            if (!isValid) {\n                                //make a valid group\n                                var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator);\n                                for (i = bufferStr.length - lastGroupSeparator; i <= 3; i++) {\n                                    bufferStr += \"0\";\n                                }\n\n                                isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                                if (!isValid && !strict) {\n                                    if (chrs == opts.radixPoint) {\n                                        isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(\"0\" + bufferStr + \"0\");\n                                        if (isValid) {\n                                            buffer[pos] = \"0\";\n                                            pos++;\n                                            return { \"pos\": pos };\n                                        }\n                                    }\n                                }\n                            }\n                        }\n\n                        if (isValid != false && !strict && chrs != opts.radixPoint) {\n                            var newPos = opts.postFormat(buffer, pos, false, opts);\n                            return { \"pos\": newPos };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    prevalidator: null\n                }\n            },\n            insertMode: true,\n            autoUnmask: false\n        },\n        'integer': {\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)$\");\n                }\n            },\n            alias: \"decimal\"\n        }\n    });\n})(jQuery);\n/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 2.2.42\n\nRegex extensions on the jquery.inputmask base\nAllows for using regular expressions as a mask\n*/\n(function ($) {\n    $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask(\"Regex\", { regex: \"[0-9]*\"}\n        'Regex': {\n            mask: \"r\",\n            greedy: false,\n            repeat: 10, //needs to be computed\n            regex: null,\n            regexSplit: null,\n            definitions: {\n                'r': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n\n                        function analyseRegex() {  //ENHANCE ME\n                            var regexSplitRegex = \"\\\\[.*?\\]\\\\*\";\n\n                            opts.regexSplit = opts.regex.match(new RegExp(regexSplitRegex, \"g\"));\n\n                            //if (opts.regex.indexOf(\"*\") != (opts.regex.length - 1)) {\n                            //    opts.regex += \"{1}\";\n                            //}\n                            //opts.regexSplit.push(opts.regex);\n                        }\n\n                        if (opts.regexSplit == null) {\n                            analyseRegex();\n                        }\n\n                        var cbuffer = buffer.slice(), regexPart = \"\", isValid = false;\n                        cbuffer.splice(pos, 0, chrs);\n                        var bufferStr = cbuffer.join('');\n                        for (var i = 0; i < opts.regexSplit.length; i++) {\n                            regexPart += opts.regexSplit[i];\n                            var exp = new RegExp(\"^\" + regexPart + \"$\");\n                            isValid = exp.test(bufferStr);\n                            console.log(bufferStr + ' ' + isValid + ' ' + regexPart);\n                            if (isValid) break;\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 1\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.date.extensions.js",
    "content": "(function(h){h.extend(h.inputmask.defaults.definitions,{h:{validator:\"[01][0-9]|2[0-3]\",cardinality:2,prevalidator:[{validator:\"[0-2]\",cardinality:1}]},s:{validator:\"[0-5][0-9]\",cardinality:2,prevalidator:[{validator:\"[0-5]\",cardinality:1}]},d:{validator:\"0[1-9]|[12][0-9]|3[01]\",cardinality:2,prevalidator:[{validator:\"[0-3]\",cardinality:1}]},m:{validator:\"0[1-9]|1[012]\",cardinality:2,prevalidator:[{validator:\"[01]\",cardinality:1}]},y:{validator:\"(19|20)\\\\d{2}\",cardinality:4,prevalidator:[{validator:\"[12]\",\ncardinality:1},{validator:\"(19|20)\",cardinality:2},{validator:\"(19|20)\\\\d\",cardinality:3}]}});h.extend(h.inputmask.defaults.aliases,{\"dd/mm/yyyy\":{mask:\"1/2/y\",placeholder:\"dd/mm/yyyy\",regex:{val1pre:/[0-3]/,val1:/0[1-9]|[12][0-9]|3[01]/,val2pre:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|[12][0-9]|3[01])\"+a+\"[01])\")},val2:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|[12][0-9])\"+a+\"(0[1-9]|1[012]))|(30\"+a+\"(0[13-9]|1[012]))|(31\"+a+\"(0[13578]|1[02]))\")}},\nleapday:\"29/02/\",separator:\"/\",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(a,d,c){var e=parseInt(a.concat(d.toString().slice(a.length))),a=parseInt(a.concat(c.toString().slice(a.length)));return(NaN!=e?d<=e&&e<=c:!1)||(NaN!=a?d<=a&&a<=c:!1)},determinebaseyear:function(a,d){var c=(new Date).getFullYear();return a>c?a:d<c?d:c},onKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val(a.getDate().toString()+(a.getMonth()+1).toString()+a.getFullYear().toString()))},\ndefinitions:{1:{validator:function(a,d,c,e,b){var f=b.regex.val1.test(a);if(!e&&!f&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(f=b.regex.val1.test(\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};return f},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=b.regex.val1pre.test(a);return!e&&!f&&(f=b.regex.val1.test(\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):f},cardinality:1}]},2:{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(0,3),g=b.regex.val2(b.separator).test(f+\na);if(!e&&!g&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(g=b.regex.val2(b.separator).test(f+\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};return g},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(0,3),g=b.regex.val2pre(b.separator).test(f+a);return!e&&!g&&(g=b.regex.val2(b.separator).test(f+\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):g},cardinality:1}]},y:{validator:function(a,d,c,e,b){if(b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear)){if(d.join(\"\").substr(0,\n6)!=b.leapday)return!0;a=parseInt(a,10);return 0===a%4?0===a%100?0===a%400?!0:!1:!0:!1}return!1},cardinality:4,prevalidator:[{validator:function(a,d,c,e,b){var f=b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear);if(!e&&!f){e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,1);if(f=b.isInYearRange(e+a,b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[0],{pos:c};e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);if(f=b.isInYearRange(e+\na,b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[0],d[c++]=e[1],{pos:c}}return f},cardinality:1},{validator:function(a,d,c,e,b){var f=b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear);if(!e&&!f){e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);if(f=b.isInYearRange(a[0]+e[1]+a[1],b.yearrange.minyear,b.yearrange.maxyear))return d[c++]=e[1],{pos:c};e=b.determinebaseyear(b.yearrange.minyear,b.yearrange.maxyear).toString().slice(0,2);b.isInYearRange(e+\na,b.yearrange.minyear,b.yearrange.maxyear)?d.join(\"\").substr(0,6)!=b.leapday?f=!0:(b=parseInt(a,10),f=0===b%4?0===b%100?0===b%400?!0:!1:!0:!1):f=!1;if(f)return d[c-1]=e[0],d[c++]=e[1],d[c++]=a[0],{pos:c}}return f},cardinality:2},{validator:function(a,d,c,e,b){return b.isInYearRange(a,b.yearrange.minyear,b.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},\"mm/dd/yyyy\":{placeholder:\"mm/dd/yyyy\",alias:\"dd/mm/yyyy\",regex:{val2pre:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[13-9]|1[012])\"+\na+\"[0-3])|(02\"+a+\"[0-2])\")},val2:function(a){a=h.inputmask.escapeRegex.call(this,a);return RegExp(\"((0[1-9]|1[012])\"+a+\"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\"+a+\"30)|((0[13578]|1[02])\"+a+\"31)\")},val1pre:/[01]/,val1:/0[1-9]|1[012]/},leapday:\"02/29/\",onKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val((a.getMonth()+1).toString()+a.getDate().toString()+a.getFullYear().toString()))}},\"yyyy/mm/dd\":{mask:\"y/1/2\",placeholder:\"yyyy/mm/dd\",alias:\"mm/dd/yyyy\",leapday:\"/02/29\",\nonKeyUp:function(a,d,c){d=h(this);a.ctrlKey&&a.keyCode==c.keyCode.RIGHT&&(a=new Date,d.val(a.getFullYear().toString()+(a.getMonth()+1).toString()+a.getDate().toString()))},definitions:{2:{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(5,3),g=b.regex.val2(b.separator).test(f+a);if(!e&&!g&&(a.charAt(1)==b.separator||-1!=\"-./\".indexOf(a.charAt(1))))if(g=b.regex.val2(b.separator).test(f+\"0\"+a.charAt(0)))return d[c-1]=\"0\",{pos:c,c:a.charAt(0)};if(g){if(d.join(\"\").substr(4,4)+a!=b.leapday)return!0;\na=parseInt(d.join(\"\").substr(0,4),10);return 0===a%4?0===a%100?0===a%400?!0:!1:!0:!1}return g},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=d.join(\"\").substr(5,3),g=b.regex.val2pre(b.separator).test(f+a);return!e&&!g&&(g=b.regex.val2(b.separator).test(f+\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):g},cardinality:1}]}}},\"dd.mm.yyyy\":{mask:\"1.2.y\",placeholder:\"dd.mm.yyyy\",leapday:\"29.02.\",separator:\".\",alias:\"dd/mm/yyyy\"},\"dd-mm-yyyy\":{mask:\"1-2-y\",placeholder:\"dd-mm-yyyy\",leapday:\"29-02-\",separator:\"-\",\nalias:\"dd/mm/yyyy\"},\"mm.dd.yyyy\":{mask:\"1.2.y\",placeholder:\"mm.dd.yyyy\",leapday:\"02.29.\",separator:\".\",alias:\"mm/dd/yyyy\"},\"mm-dd-yyyy\":{mask:\"1-2-y\",placeholder:\"mm-dd-yyyy\",leapday:\"02-29-\",separator:\"-\",alias:\"mm/dd/yyyy\"},\"yyyy.mm.dd\":{mask:\"y.1.2\",placeholder:\"yyyy.mm.dd\",leapday:\".02.29\",separator:\".\",alias:\"yyyy/mm/dd\"},\"yyyy-mm-dd\":{mask:\"y-1-2\",placeholder:\"yyyy-mm-dd\",leapday:\"-02-29\",separator:\"-\",alias:\"yyyy/mm/dd\"},datetime:{mask:\"1/2/y h:s\",placeholder:\"dd/mm/yyyy hh:mm\",alias:\"dd/mm/yyyy\",\nregex:{hrspre:/[012]/,hrs24:/2[0-9]|1[3-9]/,hrs:/[01][0-9]|2[0-3]/,ampmpre:/[apAP]/,ampm:/^[a|p|A|P][m|M]/},timeseparator:\":\",hourFormat:\"24\",definitions:{h:{validator:function(a,d,c,e,b){var f=b.regex.hrs.test(a);if(!e&&!f&&(a.charAt(1)==b.timeseparator||-1!=\"-.:\".indexOf(a.charAt(1))))if(f=b.regex.hrs.test(\"0\"+a.charAt(0)))return d[c-1]=\"0\",d[c]=a.charAt(0),c++,{pos:c};return f&&\"24\"!==b.hourFormat&&b.regex.hrs24.test(a)?(a=parseInt(a,10),d[c+5]=24==a?\"a\":\"p\",d[c+6]=\"m\",a-=12,10>a?(d[c]=a.toString(),\nd[c-1]=\"0\"):(d[c]=a.toString().charAt(1),d[c-1]=a.toString().charAt(0)),{pos:c,c:d[c]}):f},cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){var f=b.regex.hrspre.test(a);return!e&&!f&&(f=b.regex.hrs.test(\"0\"+a))?(d[c]=\"0\",c++,{pos:c}):f},cardinality:1}]},t:{validator:function(a,d,c,e,b){var f=b.regex.ampm.test(a);return!e&&!f&&(f=b.regex.ampm.test(a+\"m\"))?(d[c-1]=a.charAt(0),d[c]=\"m\",c++,c):f},casing:\"lower\",cardinality:2,prevalidator:[{validator:function(a,d,c,e,b){if(e=b.regex.ampmpre.test(a))if(e=\nb.regex.ampm.test(a+\"m\"))return d[c]=a,d[c+1]=\"m\",c;return e},cardinality:1}]}},insertMode:!1,autoUnmask:!1},datetime12:{mask:\"1/2/y h:s t\",placeholder:\"dd/mm/yyyy hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"hh:mm t\":{mask:\"h:s t\",placeholder:\"hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"h:s t\":{mask:\"h:s t\",placeholder:\"hh:mm xm\",alias:\"datetime\",hourFormat:\"12\"},\"hh:mm:ss\":{mask:\"h:s:s\",autoUnmask:!1},\"hh:mm\":{mask:\"h:s\",autoUnmask:!1},date:{alias:\"dd/mm/yyyy\"}})})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.extensions.js",
    "content": "(function(a){a.extend(a.inputmask.defaults.definitions,{A:{validator:\"[A-Za-z]\",cardinality:1,casing:\"upper\"},\"#\":{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u04510-9]\",cardinality:1,casing:\"upper\"}});a.extend(a.inputmask.defaults.aliases,{url:{mask:\"ir\",placeholder:\"\",separator:\"\",defaultPrefix:\"http://\",regex:{urlpre1:/[fh]/,urlpre2:/(ft|ht)/,urlpre3:/(ftp|htt)/,urlpre4:/(ftp:|http|ftps)/,urlpre5:/(ftp:\\/|ftps:|http:|https)/,urlpre6:/(ftp:\\/\\/|ftps:\\/|http:\\/|https:)/,urlpre7:/(ftp:\\/\\/|ftps:\\/\\/|http:\\/\\/|https:\\/)/,\nurlpre8:/(ftp:\\/\\/|ftps:\\/\\/|http:\\/\\/|https:\\/\\/)/},definitions:{i:{validator:function(){return!0},cardinality:8,prevalidator:function(){for(var a=[],c=0;8>c;c++)a[c]=function(){var a=c;return{validator:function(e,c,d,b,g){if(g.regex[\"urlpre\"+(a+1)]){var f=e;0<a+1-e.length&&(f=c.join(\"\").substring(0,a+1-e.length)+\"\"+f);e=g.regex[\"urlpre\"+(a+1)].test(f);if(!b&&!e){d-=a;for(b=0;b<g.defaultPrefix.length;b++)c[d]=g.defaultPrefix[b],d++;for(b=0;b<f.length-1;b++)c[d]=f[b],d++;return{pos:d}}return e}return!1},\ncardinality:a}}();return a}()},r:{validator:\".\",cardinality:50}},insertMode:!1,autoUnmask:!1},ip:{mask:\"i.i.i.i\",definitions:{i:{validator:\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",cardinality:3,prevalidator:[{validator:\"[0-2]\",cardinality:1},{validator:\"2[0-5]|[01][0-9]\",cardinality:2}]}}}})})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.js",
    "content": "/*\n Input Mask plugin for jquery\n http://github.com/RobinHerbots/jquery.inputmask\n Copyright (c) 2010 - 2013 Robin Herbots\n Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n Version: 2.2.42\n*/\n(function(c){void 0==c.fn.inputmask&&(c.inputmask={defaults:{placeholder:\"_\",optionalmarker:{start:\"[\",end:\"]\"},escapeChar:\"\\\\\",mask:null,oncomplete:c.noop,onincomplete:c.noop,oncleared:c.noop,repeat:0,greedy:!0,autoUnmask:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},onKeyUp:c.noop,onKeyDown:c.noop,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:c.noop,skipOptionalPartCharacter:\" \",showTooltip:!1,numericInput:!1,radixPoint:\"\",skipRadixDance:!1,rightAlignNumerics:!0,\ndefinitions:{9:{validator:\"[0-9]\",cardinality:1},a:{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u0451]\",cardinality:1},\"*\":{validator:\"[A-Za-z\\u0410-\\u044f\\u0401\\u04510-9]\",cardinality:1}},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,\nRIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},ignorables:[9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],getMaskLength:function(c,D,E){var K=c.length;!D&&1<E&&(K+=c.length*(E-1));return K}},val:c.fn.val,escapeRegex:function(c){return c.replace(RegExp(\"(\\\\/|\\\\.|\\\\*|\\\\+|\\\\?|\\\\||\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|\\\\\\\\)\",\"gim\"),\"\\\\$1\")}},c.fn.inputmask=function(L,D){function E(e,d){var g=b.aliases[e];return g?(g.alias&&E(g.alias),c.extend(!0,b,g),c.extend(!0,b,\nd),!0):!1}function K(e){var d=!1,g=0,t=b.greedy,a=b.repeat;1==e.length&&!1==t&&(b.placeholder=\"\");for(var e=c.map(e.split(\"\"),function(a){var c=[];if(a==b.escapeChar)d=true;else if(a!=b.optionalmarker.start&&a!=b.optionalmarker.end||d){var f=b.definitions[a];if(f&&!d)for(a=0;a<f.cardinality;a++)c.push(J(g+a));else{c.push(a);d=false}g=g+c.length;return c}}),x=e.slice(),f=1;f<a&&t;f++)x=x.concat(e.slice());return{mask:x,repeat:a,greedy:t}}function P(e){var d=!1,g=!1,t=!1;return c.map(e.split(\"\"),function(a){var c=\n[];if(a==b.escapeChar)g=!0;else if(a==b.optionalmarker.start&&!g)t=d=!0;else if(a==b.optionalmarker.end&&!g)d=!1,t=!0;else{var f=b.definitions[a];if(f&&!g){for(var k=f.prevalidator,e=k?k.length:0,B=1;B<f.cardinality;B++){var u=e>=B?k[B-1]:[],A=u.validator,u=u.cardinality;c.push({fn:A?\"string\"==typeof A?RegExp(A):new function(){this.test=A}:/./,cardinality:u?u:1,optionality:d,newBlockMarker:!0==d?t:!1,offset:0,casing:f.casing,def:f.definitionSymbol|a});!0==d&&(t=!1)}c.push({fn:f.validator?\"string\"==\ntypeof f.validator?RegExp(f.validator):new function(){this.test=f.validator}:/./,cardinality:f.cardinality,optionality:d,newBlockMarker:t,offset:0,casing:f.casing,def:f.definitionSymbol|a})}else c.push({fn:null,cardinality:0,optionality:d,newBlockMarker:t,offset:0,casing:null,def:a}),g=!1;t=!1;return c}})}function Q(){function e(a){var c=a.length;for(i=0;i<c&&a.charAt(i)!=b.optionalmarker.start;i++);var d=[a.substring(0,i)];i<c&&d.push(a.substring(i+1,c));return d}function d(a,x){var f=0,k=0,l=x.length;\nfor(i=0;i<l&&!(x.charAt(i)==b.optionalmarker.start&&f++,x.charAt(i)==b.optionalmarker.end&&k++,0<f&&f==k);i++);f=[x.substring(0,i)];i<l&&f.push(x.substring(i+1,l));var B=e(f[0]);if(1<B.length){if(l=a+B[0]+(b.optionalmarker.start+B[1]+b.optionalmarker.end)+(1<f.length?f[1]:\"\"),-1==c.inArray(l,t)&&(t.push(l),k=K(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat})),l=a+B[0]+(1<f.length?f[1]:\"\"),-1==c.inArray(l,t)&&(t.push(l),k=\nK(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat})),1<e(B[1]).length&&d(a+B[0],B[1]+f[1]),1<f.length&&1<e(f[1]).length)d(a+B[0]+(b.optionalmarker.start+B[1]+b.optionalmarker.end),f[1]),d(a+B[0],f[1])}else l=a+f,-1==c.inArray(l,t)&&(t.push(l),k=K(l),g.push({mask:l,_buffer:k.mask,buffer:k.mask.slice(),tests:P(l),lastValidPosition:void 0,greedy:k.greedy,repeat:k.repeat}))}var g=[],t=[];c.isArray(b.mask)?c.each(b.mask,function(a,\nb){d(\"\",b.toString())}):d(\"\",b.mask.toString());return g}function J(c){return b.placeholder.charAt(c%b.placeholder.length)}function F(e,d){var g,t;function a(){return e[d]}function x(){return a().tests}function f(){return a()._buffer}function k(){return a().buffer}function l(j,R,f,r){function y(a,j){for(var c=A(a),d=R?1:0,k=\"\",e=j.buffer,y=j.tests[c].cardinality;y>d;y--)k+=z(e,c-(y-1));R&&(k+=R);return null!=j.tests[c].fn?j.tests[c].fn.test(k,e,a,f,b):!1}if(f=!0===f){var g=y(j,a());!0===g&&(g={pos:j});\nreturn g}var l=[],g=!1,o=d;c.each(e,function(a){d=a;if(o!=d&&!u(j)){if(R==this._buffer[j]||R==b.skipOptionalPartCharacter)return l.push({activeMasksetIndex:a,result:{refresh:!0,c:this._buffer[j]}}),this.lastValidPosition=j,!1;this.lastValidPosition=r?p()+1:-1}if((void 0==this.lastValidPosition&&j==(r?H(p()):s(-1))||r||b.numericInput?this.lastValidPosition<=b.numericInput?p():s(j):this.lastValidPosition>=H(j))&&0<=j&&j<p()){g=y(j,this);if(!1!==g){!0===g&&(g={pos:j});var c=g.pos||j;if(void 0==this.lastValidPosition||\n(r?b.greedy?this.lastValidPosition>c:c==k().length-1:this.lastValidPosition<c))this.lastValidPosition=c}else this.lastValidPosition=r?j==p()?void 0:s(j):0==j?void 0:H(j);l.push({activeMasksetIndex:a,result:g})}});d=o;return l}function B(j){var f=d,M={activeMasksetIndex:0,lastValidPosition:j?p()+1:-1};c.each(e,function(a){if(void 0!=this.lastValidPosition&&(j||b.numericInput?this.lastValidPosition<M.lastValidPosition:this.lastValidPosition>M.lastValidPosition))M.activeMasksetIndex=a,M.lastValidPosition=\nthis.lastValidPosition});d=M.activeMasksetIndex;f!=d&&(j?K(k(),0,H(M.lastValidPosition)):K(k(),s(M.lastValidPosition),p()),a().writeOutBuffer=!0)}function u(a){a=A(a);a=x()[a];return void 0!=a?a.fn:!1}function A(a){return a%x().length}function p(){return b.getMaskLength(f(),a().greedy,a().repeat,k(),b)}function s(a){var b=p();if(a>=b)return b;for(;++a<b&&!u(a););return a}function H(a){if(0>=a)return 0;for(;0<--a&&!u(a););return a}function o(a,b,c,d,f){d&&(b=L(a,b,f));d=x()[A(b)];f=c;if(void 0!=f)switch(d.casing){case \"upper\":f=\nc.toUpperCase();break;case \"lower\":f=c.toLowerCase()}a[b]=f}function z(a,b,c){c&&(b=L(a,b));return a[b]}function L(a,b,c){if(c)for(;0>b&&a.length<p();){c=f().length-1;for(b=f().length;void 0!==f()[c];)a.unshift(f()[c--])}else for(;void 0==a[b]&&a.length<p();)for(c=0;void 0!==f()[c];)a.push(f()[c++]);return b}function E(a,b,c){a._valueSet(b.join(\"\"));void 0!=c&&C(a,c)}function K(a,b,c){for(var d=p();b<c&&b<d;b++)o(a,b,z(f().slice(),b,!0))}function I(a,b){var c=A(b);o(a,b,z(f(),c))}function D(j,k,g,\nr){var y=c(j).data(\"inputmask\").isRTL,r=void 0!=r?r.slice():P(j._valueGet(),y).split(\"\");c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=y?p():0});!0!==g&&(d=0);y&&!b.numericInput&&(r=r.reverse());var l=p();c.each(r,function(a,d){var e=y?b.numericInput?l:l-a-1:a;(u(y?b.numericInput?H(l):l-a-1:a)||!0!==g&&d!=z(f(),e,!0))&&c(j).trigger(\"keypress\",[!0,d.charCodeAt(0),k,g,e])});!0===g&&(a().lastValidPosition=y?s(a().p):H(a().p))}function F(a){return c.inputmask.escapeRegex.call(this,\na)}function P(a,b){return b?a.replace(RegExp(\"^(\"+F(f().join(\"\"))+\")*\"),\"\"):a.replace(RegExp(\"(\"+F(f().join(\"\"))+\")*$\"),\"\")}function Q(a){var b=k(),d=b.slice(),f,e;if(c(a).data(\"inputmask\").isRTL)for(e=0;e<=d.length-1;e++)if(f=A(e),x()[f].optionality)if(!u(e)||!l(e,b[e],!0))d.splice(0,1);else break;else break;else for(e=d.length-1;0<=e;e--)if(f=A(e),x()[f].optionality)if(!u(e)||!l(e,b[e],!0))d.pop();else break;else break;E(a,d)}function V(a,b){var d=a[0];return x()&&(!0===b||!a.hasClass(\"hasDatepicker\"))?\n(D(d,!1,!0),c.map(k(),function(a,b){return u(b)&&l(b,a,!0)?a:null}).join(\"\")):d._valueGet()}function C(a,d,f){var e=a.jquery&&0<a.length?a[0]:a;if(\"number\"==typeof d)c(a).is(\":visible\")&&(f=\"number\"==typeof f?f:d,!1==b.insertMode&&d==f&&f++,e.setSelectionRange?T?(setTimeout(function(){e.selectionStart=d;e.selectionEnd=T?d:f},10),g=d,t=f):(e.selectionStart=d,e.selectionEnd=f):e.createTextRange&&(a=e.createTextRange(),a.collapse(!0),a.moveEnd(\"character\",f),a.moveStart(\"character\",d),a.select()));else{if(!c(a).is(\":visible\"))return{begin:0,\nend:0};e.setSelectionRange?(d=e.selectionStart,f=e.selectionEnd):document.selection&&document.selection.createRange&&(a=document.selection.createRange(),d=0-a.duplicate().moveStart(\"character\",-1E5),f=d+a.text.length);return{begin:d,end:f}}}function S(a){var b=!1,k=0,g=d;c.each(e,function(c,e){d=c;var g=H(p());if(void 0!=e.lastValidPosition&&e.lastValidPosition>=k&&e.lastValidPosition==g){for(var l=!0,o=0;o<=g;o++){var s=u(o),t=A(o);if(s&&(void 0==a[o]||a[o]==J(o))||!s&&a[o]!=f()[t]){l=!1;break}}if(b=\nb||l)return!1}k=e.lastValidPosition});d=g;return b}this.unmaskedvalue=function(a,b){return V(a,b)};this.isComplete=function(a){return S(a)};this.mask=function(j){function F(a){a=c._data(a).events;c.each(a,function(a,b){c.each(b,function(a,b){if(\"inputmask\"==b.namespace){var c=b.handler;b.handler=function(a){if(this.readOnly||this.disabled)a.preventDefault;else return c.apply(this,arguments)}}})})}function M(a){var b;Object.getOwnPropertyDescriptor&&(b=Object.getOwnPropertyDescriptor(a,\"value\"));if(b&&\nb.get)a._valueGet||(a._valueGet=b.get,a._valueSet=b.set,Object.defineProperty(a,\"value\",{get:function(){var a=c(this),b=c(this).data(\"inputmask\"),d=b.masksets,f=b.activeMasksetIndex;return b&&b.opts.autoUnmask?a.inputmask(\"unmaskedvalue\"):this._valueGet()!=d[f]._buffer.join(\"\")?this._valueGet():\"\"},set:function(a){this._valueSet(a);c(this).triggerHandler(\"setvalue.inputmask\")}}));else if(document.__lookupGetter__&&a.__lookupGetter__(\"value\"))a._valueGet||(a._valueGet=a.__lookupGetter__(\"value\"),a._valueSet=\na.__lookupSetter__(\"value\"),a.__defineGetter__(\"value\",function(){var a=c(this),b=c(this).data(\"inputmask\"),d=b.masksets,f=b.activeMasksetIndex;return b&&b.opts.autoUnmask?a.inputmask(\"unmaskedvalue\"):this._valueGet()!=d[f]._buffer.join(\"\")?this._valueGet():\"\"}),a.__defineSetter__(\"value\",function(a){this._valueSet(a);c(this).triggerHandler(\"setvalue.inputmask\")}));else if(a._valueGet||(a._valueGet=function(){return this.value},a._valueSet=function(a){this.value=a}),!0!=c.fn.val.inputmaskpatch)c.fn.val=\nfunction(){if(arguments.length==0){var a=c(this);if(a.data(\"inputmask\")){if(a.data(\"inputmask\").opts.autoUnmask)return a.inputmask(\"unmaskedvalue\");var a=c.inputmask.val.apply(a),b=c(this).data(\"inputmask\");return a!=b.masksets[b.activeMasksetIndex]._buffer.join(\"\")?a:\"\"}return c.inputmask.val.apply(a)}var d=arguments;return this.each(function(){var a=c(this),b=c.inputmask.val.apply(a,d);a.data(\"inputmask\")&&a.triggerHandler(\"setvalue.inputmask\");return b})},c.extend(c.fn.val,{inputmaskpatch:!0})}\nfunction r(a,c){if(b.numericInput&&\"\"!=b.radixPoint&&!1===b.skipRadixDance){var d=a._valueGet().indexOf(b.radixPoint);n=c.begin<=d||c.end<=d||-1==d}}function y(b,c,d){for(var e=k();!u(b)&&0<=b-1;)b--;for(var h=b;h<c&&h<p();h++)if(u(h)){I(e,h);var g=s(h),j=z(e,g);if(j!=J(g))if(g<p()&&!1!==l(h,j,!0,n)&&x()[A(h)].def==x()[A(g)].def)o(e,h,z(e,g),!0,n),g<c&&I(e,g);else if(u(h))break}else I(e,h);void 0!=d&&o(e,n?c:H(c),d);if(!1==a().greedy){c=P(e.join(\"\"),n).split(\"\");e.length=c.length;h=0;for(d=e.length;h<\nd;h++)e[h]=c[h];0==e.length&&(a().buffer=f().slice())}return b}function O(b,c,d,e){for(var h=k();b<=c&&b<p();b++)if(u(b)){var g=z(h,b);o(h,b,d,!0,n);if(g!=J(b))if(d=s(b),d<p())if(!1!==l(d,g,!0,n)&&x()[A(b)].def==x()[A(d)].def)d=g;else if(u(d))break;else d=g;else break;else if(d=g,!0!==e)break}else I(h,b);e=h.length;if(!1==a().greedy){d=P(h.join(\"\"),n).split(\"\");h.length=d.length;b=0;for(g=h.length;b<g;b++)h[b]=d[b];0==h.length&&(a().buffer=f().slice())}return c-(e-h.length)}function V(g){U=!1;var j=\nthis,m=g.keyCode,q=C(j);r(j,q);if(m==b.keyCode.BACKSPACE||m==b.keyCode.DELETE||aa&&127==m||g.ctrlKey&&88==m){g.preventDefault();var h=q.begin;if(0==q.begin&&q.end==p())K(k(),q.begin,q.end),c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=n?p():0});else if(1<q.end-q.begin||1==q.end-q.begin&&b.insertMode){K(k(),q.begin,q.end);var l=p();if(!1==b.greedy)n?O(0,q.end-1,J(q.end),!0):y(q.begin,l);else for(var o=q.begin;o<q.end;o++)u(o)&&(n?O(0,q.end-1,J(q.end),!0):y(q.begin,\nl));D(j,!1,!0,k())}else c.each(e,function(c){d=c;h=Y?q.end:q.begin;var c=k(),e=n?H(p()+1):s(-1),g=p();if(m==b.keyCode.DELETE){if(n?h>e:h<e)h=e;if(h<g&&(b.numericInput&&\"\"!=b.radixPoint&&c[h]==b.radixPoint?(h=c.length-1==h?h:s(h),h=y(h,g)):n?(h=O(0,h,J(h),!0),h=s(h)):h=y(h,g),void 0!=a().lastValidPosition))-1!=a().lastValidPosition&&k()[a().lastValidPosition]==f()[a().lastValidPosition]&&(a().lastValidPosition=n?s(a().lastValidPosition):0==a().lastValidPosition?-1:H(a().lastValidPosition)),(n?a().lastValidPosition>\ne:a().lastValidPosition<e)?(a().lastValidPosition=void 0,a().p=e):(a().writeOutBuffer=!0,a().p=h)}else if(m==b.keyCode.BACKSPACE)if(n?h<=e:h>e){if(h-=1,b.numericInput&&\"\"!=b.radixPoint&&c[h]==b.radixPoint?(h=O(0,c.length-1==h?h:h-1,J(h),!0),h++):n?(h=O(0,h,J(h),!0),h=c[h+1]==b.radixPoint?h+1:s(h)):h=y(h,g),void 0!=a().lastValidPosition)-1!=a().lastValidPosition&&k()[a().lastValidPosition]==f()[a().lastValidPosition]&&(a().lastValidPosition=n?s(a().lastValidPosition):0==a().lastValidPosition?-1:H(a().lastValidPosition)),\n(n?a().lastValidPosition>e:a().lastValidPosition<e)?(a().lastValidPosition=void 0,a().p=e):(a().writeOutBuffer=!0,a().p=h)}else 0<d&&(a().lastValidPosition=void 0,a().writeOutBuffer=!0,a().p=e,d=0,a().buffer=f().slice(),a().p=n?H(p()+1):s(-1),a().lastValidPosition=void 0)});B(n);E(j,k(),a().p);j._valueGet()==f().join(\"\")&&c(j).trigger(\"cleared\");b.showTooltip&&v.prop(\"title\",a().mask)}else m==b.keyCode.END||m==b.keyCode.PAGE_DOWN?setTimeout(function(){var c=n?a().lastValidPosition:s(a().lastValidPosition);\n!b.insertMode&&(c==p()&&!g.shiftKey)&&c--;C(j,g.shiftKey?q.begin:c,c)},0):m==b.keyCode.HOME&&!g.shiftKey||m==b.keyCode.PAGE_UP?C(j,0,g.shiftKey?q.begin:0):m==b.keyCode.ESCAPE?(j._valueSet(a().undoBuffer),D(j,!0,!0)):m==b.keyCode.INSERT?(b.insertMode=!b.insertMode,C(j,!b.insertMode&&q.begin==p()?q.begin-1:q.begin)):!1==b.insertMode&&!g.shiftKey&&(m==b.keyCode.RIGHT?setTimeout(function(){var a=C(j);C(j,a.begin)},0):m==b.keyCode.LEFT&&setTimeout(function(){var a=C(j);C(j,a.begin-1)},0));b.onKeyDown.call(this,\ng,k(),b);W=-1!=c.inArray(m,b.ignorables)}function $(f,j,m,q,h,x){if(void 0==m&&U)return!1;U=!0;var A=c(this),f=f||window.event,m=m||f.which||f.charCode||f.keyCode,r=String.fromCharCode(m);if((f.ctrlKey||f.metaKey||W)&&!0!==j)return!0;if(m){var G,v;j?(m=h?x:b.numericInput?s(a().p):a().p,G={begin:m,end:m}):G=C(this);var m=d,D=!1;c.each(e,function(c){d=c;a().undoBuffer=k().join(\"\");if(G.end-G.begin>1||G.end-G.begin==1&&b.insertMode){c=G.end<p()?G.end:p();K(k(),G.begin,c);var e=p();if(b.greedy==false)n?\nO(0,c-1,J(c),true):y(G.begin,e);else for(var f=G.begin;f<c;f++)u(f)&&(n?O(0,c-1,J(c),true):y(G.begin,e));D=true}});d=m;if(n){var w=H(D?G.begin:G.end),m=l(w,r,h,n);!0===h&&(m=[{activeMasksetIndex:d,result:m}]);c.each(m,function(c,e){d=e.activeMasksetIndex;a().writeOutBuffer=true;var f=e.result;if(f!==false){var h=false,g=k();if(f!==true){h=f.refresh;w=f.pos!=void 0?f.pos:w;r=f.c!=void 0?f.c:r}if(h!==true){var h=p(),j=s(-1),f=j;if(b.insertMode==true){if(a().greedy==true)for(var m=g.slice();z(m,f,true)!=\nJ(f)&&f<=w;)f=f==h?h+1:s(f);if(f<=w&&(a().greedy||g.length<h||z(g,w)==J(w))){if(g[j]!=J(j)&&g.length<h){g=L(g,-1,n);if((D?G.begin:G.end)!=0)w=w+g}y(f,w,r)}else a().writeOutBuffer=false}else o(g,w,r,true,n)}a().p=w}});!0!==h&&B(n);if(!1!==q&&(c.each(m,function(a,b){if(b.activeMasksetIndex==d){v=b;return false}}),void 0!=v)){var I=this;setTimeout(function(){b.onKeyValidation.call(I,v.result,b)},0);if(a().writeOutBuffer&&!1!==v.result){var F=k();E(this,F,j?void 0:b.numericInput?s(a().p):a().p);setTimeout(function(){S(F)&&\nA.trigger(\"complete\")},0)}else a().buffer=a().undoBuffer.split(\"\")}}else w=s(G.begin-1),m=l(w,r,h,n),!0===h&&(m=[{activeMasksetIndex:d,result:m}]),c.each(m,function(c,f){d=f.activeMasksetIndex;a().writeOutBuffer=true;var e=f.result;if(e!==false){var h=false,g=k();if(e!==true){h=e.refresh;w=e.pos!=void 0?e.pos:w;r=e.c!=void 0?e.c:r}if(h!==true)if(b.insertMode==true){e=p();for(h=g.slice();z(h,e,true)!=J(e)&&e>=w;)e=e==0?-1:H(e);e>=w?O(w,g.length,r):a().writeOutBuffer=false}else o(g,w,r,true,n);a().p=\ns(w)}}),!0!==h&&B(n),!1!==q&&(c.each(m,function(a,b){if(b.activeMasksetIndex==d){v=b;return false}}),void 0!=v&&(I=this,setTimeout(function(){b.onKeyValidation.call(I,v.result,b)},0),a().writeOutBuffer&&!1!==v.result?(w=a().p,F=k(),E(this,F,j?void 0:w),setTimeout(function(){S(F)&&A.trigger(\"complete\")},0)):a().buffer=a().undoBuffer.split(\"\")));T&&!0!==j&&C(this,g,t);b.showTooltip&&A.prop(\"title\",a().mask);f.preventDefault()}}function Z(e){var d=c(this),g=e.keyCode,j=k();b.onKeyUp.call(this,e,j,b);\ng==b.keyCode.TAB&&(d.hasClass(\"focus.inputmask\")&&0==this._valueGet().length&&b.showMaskOnFocus)&&(j=f().slice(),E(this,j),n||C(this,0),a().undoBuffer=this._valueGet())}var v=c(j);if(v.is(\":input\")){v.data(\"inputmask\",{masksets:e,activeMasksetIndex:d,opts:b,isRTL:!1});b.showTooltip&&v.prop(\"title\",a().mask);a().greedy=a().greedy?a().greedy:0==a().repeat;var N=v.prop(\"maxLength\");p()>N&&-1<N&&(N<f().length&&(f().length=N),!1==a().greedy&&(a().repeat=Math.round(N/f().length)),v.prop(\"maxLength\",2*p()));\nM(j);a().undoBuffer=j._valueGet();var U=!1,W=!1,n=!1;if(\"rtl\"==j.dir||b.numericInput)(\"rtl\"==j.dir||b.numericInput&&b.rightAlignNumerics)&&v.css(\"text-align\",\"right\"),j.dir=\"ltr\",v.removeAttr(\"dir\"),N=v.data(\"inputmask\"),N.isRTL=!0,v.data(\"inputmask\",N),n=!0;v.unbind(\".inputmask\");v.removeClass(\"focus.inputmask\");v.bind(\"mouseenter.inputmask\",function(){!c(this).hasClass(\"focus.inputmask\")&&b.showMaskOnHover&&this._valueGet()!=k().join(\"\")&&E(this,k())}).bind(\"blur.inputmask\",function(){var g=c(this),\nj=this._valueGet(),m=k();g.removeClass(\"focus.inputmask\");j!=a().undoBuffer&&g.change();b.clearMaskOnLostFocus&&j!=\"\"&&(j==f().join(\"\")?this._valueSet(\"\"):Q(this));if(!S(m)){g.trigger(\"incomplete\");if(b.clearIncomplete){c.each(e,function(a,b){b.buffer=b._buffer.slice();b.lastValidPosition=void 0;b.p=n?p():0});d=0;if(b.clearMaskOnLostFocus)this._valueSet(\"\");else{m=f().slice();E(this,m)}}}}).bind(\"focus.inputmask\",function(){var e=c(this),d=this._valueGet();b.showMaskOnFocus&&!e.hasClass(\"focus.inputmask\")&&\n(!b.showMaskOnHover||b.showMaskOnHover&&d==\"\")&&this._valueGet()!=k().join(\"\")&&E(this,k(),a().p);e.addClass(\"focus.inputmask\");a().undoBuffer=this._valueGet()}).bind(\"mouseleave.inputmask\",function(){var a=c(this);b.clearMaskOnLostFocus&&(a.hasClass(\"focus.inputmask\")||(this._valueGet()==f().join(\"\")||this._valueGet()==\"\"?this._valueSet(\"\"):Q(this)))}).bind(\"click.inputmask\",function(){var e=this;setTimeout(function(){var d=C(e),f=k();if(d.begin==d.end){var g=d.begin,h=a().lastValidPosition;r(e,\nd);if(n){d=b.numericInput?b.skipRadixDance===false&&b.radixPoint!=\"\"&&c.inArray(b.radixPoint,f)!=-1?c.inArray(b.radixPoint,f):p():H((h==void 0?p():h)+1);C(e,g>d&&(l(g,f[g],true,n)!==false||!u(g))?g:d)}else{d=s(h==void 0?-1:h);C(e,g<d&&(l(g,f[g],true,n)!==false||!u(g))?g:d)}}},0)}).bind(\"dblclick.inputmask\",function(){var b=this;a().lastValidPosition!=void 0&&setTimeout(function(){n?C(b,H(a().lastValidPosition),p()):C(b,0,s(a().lastValidPosition))},0)}).bind(\"keydown.inputmask\",V).bind(\"keypress.inputmask\",\n$).bind(\"keyup.inputmask\",Z).bind(ba+\".inputmask dragdrop.inputmask drop.inputmask\",function(){var a=this,b=c(a);setTimeout(function(){D(a,true,false);S(k())&&b.trigger(\"complete\");b.click()},0)}).bind(\"setvalue.inputmask\",function(){a().undoBuffer=this._valueGet();D(this,true);this._valueGet()==f().join(\"\")&&this._valueSet(\"\")}).bind(\"complete.inputmask\",b.oncomplete).bind(\"incomplete.inputmask\",b.onincomplete).bind(\"cleared.inputmask\",b.oncleared);D(j,!0,!1);var X;try{X=document.activeElement}catch(ca){}X===\nj?(v.addClass(\"focus.inputmask\"),C(j,a().lastValidPosition)):b.clearMaskOnLostFocus&&(k().join(\"\")==f().join(\"\")?j._valueSet(\"\"):Q(j));F(j)}};return this}var b=c.extend(!0,{},c.inputmask.defaults,D),I=null!==navigator.userAgent.match(/msie 10/i),aa=null!==navigator.userAgent.match(/iphone/i),T=null!==navigator.userAgent.match(/android.*safari.*/i),ba=function(b){var c=document.createElement(\"input\"),b=\"on\"+b,g=b in c;g||(c.setAttribute(b,\"return;\"),g=\"function\"==typeof c[b]);return g}(\"paste\")&&!I?\n\"paste\":\"input\",Y,o,z=0;T&&(I=navigator.userAgent.match(/safari.*/i),Y=533>=parseInt(RegExp(/[0-9]+/).exec(I)));if(\"string\"===typeof L)switch(L){case \"mask\":return E(b.alias,D),o=Q(),this.each(function(){F(c.extend(true,{},o),0).mask(this)});case \"unmaskedvalue\":return I=c(this),o=I.data(\"inputmask\").masksets,z=I.data(\"inputmask\").activeMasksetIndex,b=I.data(\"inputmask\").opts,F(o,z).unmaskedvalue(this);case \"remove\":return this.each(function(){var e=c(this),d=this;setTimeout(function(){if(e.data(\"inputmask\")){o=\ne.data(\"inputmask\").masksets;z=e.data(\"inputmask\").activeMasksetIndex;b=e.data(\"inputmask\").opts;d._valueSet(F(o,z).unmaskedvalue(e,true));e.removeData(\"inputmask\");e.unbind(\".inputmask\");e.removeClass(\"focus.inputmask\");var c;Object.getOwnPropertyDescriptor&&(c=Object.getOwnPropertyDescriptor(d,\"value\"));if(c&&c.get)d._valueGet&&Object.defineProperty(d,\"value\",{get:d._valueGet,set:d._valueSet});else if(document.__lookupGetter__&&d.__lookupGetter__(\"value\")&&d._valueGet){d.__defineGetter__(\"value\",\nd._valueGet);d.__defineSetter__(\"value\",d._valueSet)}delete d._valueGet;delete d._valueSet}},0)});case \"getemptymask\":return this.data(\"inputmask\")?(o=this.data(\"inputmask\").masksets,z=this.data(\"inputmask\").activeMasksetIndex,o[z]._buffer.join(\"\")):\"\";case \"hasMaskedValue\":return this.data(\"inputmask\")?!this.data(\"inputmask\").opts.autoUnmask:!1;case \"isComplete\":return o=this.data(\"inputmask\").masksets,z=this.data(\"inputmask\").activeMasksetIndex,b=this.data(\"inputmask\").opts,F(o,z).isComplete(this[0]._valueGet().split(\"\"));\ndefault:return E(L,D)||(b.mask=L),o=Q(),this.each(function(){F(c.extend(true,{},o),z).mask(this)})}else{if(\"object\"==typeof L)return b=c.extend(!0,{},c.inputmask.defaults,L),E(b.alias,L),o=Q(),this.each(function(){F(c.extend(true,{},o),z).mask(this)});if(void 0==L)return this.each(function(){var e=c(this).attr(\"data-inputmask\");if(e&&e!=\"\")try{var e=e.replace(RegExp(\"'\",\"g\"),'\"'),d=c.parseJSON(\"{\"+e+\"}\");b=c.extend(true,{},c.inputmask.defaults,D);c.extend(true,b,d);E(b.alias,d);b.alias=void 0;c(this).inputmask(b)}catch(g){}})}return this})})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.numeric.extensions.js",
    "content": "(function(h){h.extend(h.inputmask.defaults.aliases,{decimal:{mask:\"~\",placeholder:\"\",repeat:10,greedy:!1,numericInput:!0,digits:\"*\",groupSeparator:\"\",radixPoint:\".\",groupSize:3,autoGroup:!1,allowPlus:!0,allowMinus:!0,getMaskLength:function(c,f,d,b,a){var e=c.length;!f&&1<d&&(e+=c.length*(d-1));c=h.inputmask.escapeRegex.call(this,a.groupSeparator);a=h.inputmask.escapeRegex.call(this,a.radixPoint);b=b.join(\"\");a=b.replace(RegExp(c,\"g\"),\"\").replace(RegExp(a),\"\");return e+(b.length-a.length)},postFormat:function(c,\nf,d,b){if(\"\"==b.groupSeparator)return f;var a=c.slice(),e=h.inArray(b.radixPoint,c);d||a.splice(0==f||f<=e||b.skipRadixDance?f+1:f,0,\"?\");a=a.join(\"\");if(b.autoGroup||d&&-1!=a.indexOf(b.groupSeparator)){for(var g=h.inputmask.escapeRegex.call(this,b.groupSeparator),a=a.replace(RegExp(g,\"g\"),\"\"),g=a.split(b.radixPoint),a=g[0],j=RegExp(\"([-+]?[\\\\d?]+)([\\\\d?]{\"+b.groupSize+\"})\");j.test(a);)a=a.replace(j,\"$1\"+b.groupSeparator+\"$2\"),a=a.replace(b.groupSeparator+b.groupSeparator,b.groupSeparator);1<g.length&&\n(a+=b.radixPoint+g[1])}c.length=a.length;g=0;for(j=a.length;g<j;g++)c[g]=a.charAt(g);a=h.inArray(\"?\",c);d||c.splice(a,1);return d?f:a<=e||b.skipRadixDance&&0!=a?a-1:a},regex:{number:function(c,f,d,b,a,e){c=h.inputmask.escapeRegex.call(this,c);d=h.inputmask.escapeRegex.call(this,d);b=isNaN(b)?b:\"{0,\"+b+\"}\";return RegExp(\"^\"+(\"[\"+(a?\"+\":\"\")+(e?\"-\":\"\")+\"]?\")+\"(\\\\d+|\\\\d{1,\"+f+\"}((\"+c+\"\\\\d{\"+f+\"})?)+)(\"+d+\"\\\\d\"+b+\")?$\")}},onKeyDown:function(c,f,d){var b=h(this);if(c.keyCode==d.keyCode.TAB){if(c=h.inArray(d.radixPoint,\nf),-1!=c){for(var a=b.data(\"inputmask\").masksets,b=b.data(\"inputmask\").activeMasksetIndex,e=1;e<=d.digits&&e<d.getMaskLength(a[b]._buffer,a[b].greedy,a[b].repeat,f,d);e++)void 0==f[c+e]&&(f[c+e]=\"0\");this._valueSet(f.join(\"\"))}}else if(c.keyCode==d.keyCode.DELETE||c.keyCode==d.keyCode.BACKSPACE)d.postFormat(f,0,!0,d),this._valueSet(f.join(\"\"))},definitions:{\"~\":{validator:function(c,f,d,b,a){if(\"\"==c)return!1;if(1>=d&&\"0\"===f[0]&&/[\\d-]/.test(c))return f[0]=\"\",{pos:0};var e=b?f.slice(0,d):f.slice();\ne.splice(0==d?d:d+1,0,c);e=e.join(\"\");if(a.autoGroup&&!b)var g=h.inputmask.escapeRegex.call(this,a.groupSeparator),e=e.replace(RegExp(g,\"g\"),\"\");g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(e);if(!g&&(e+=\"0\",g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(e),!g)){g=e.lastIndexOf(a.groupSeparator);for(i=e.length-g;3>=i;i++)e+=\"0\";g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,\na.allowPlus,a.allowMinus).test(e);if(!g&&!b&&c==a.radixPoint&&(g=a.regex.number(a.groupSeparator,a.groupSize,a.radixPoint,a.digits,a.allowPlus,a.allowMinus).test(\"0\"+e+\"0\")))return f[d]=\"0\",d++,{pos:d}}return!1!=g&&!b&&c!=a.radixPoint?{pos:a.postFormat(f,d,!1,a)}:g},cardinality:1,prevalidator:null}},insertMode:!0,autoUnmask:!1},integer:{regex:{number:function(c,f,d,b,a,e){c=h.inputmask.escapeRegex.call(this,c);return RegExp(\"^\"+(\"[\"+(a?\"+\":\"\")+(e?\"-\":\"\")+\"]?\")+\"(\\\\d+|\\\\d{1,\"+f+\"}((\"+c+\"\\\\d{\"+f+\"})?)+)$\")}},\nalias:\"decimal\"}})})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/dist/min/jquery.inputmask.regex.extensions.js",
    "content": "(function(b){b.extend(b.inputmask.defaults.aliases,{Regex:{mask:\"r\",greedy:!1,repeat:10,regex:null,regexSplit:null,definitions:{r:{validator:function(f,a,c,d,e){null==e.regexSplit&&(e.regexSplit=e.regex.match(RegExp(\"\\\\[.*?]\\\\*\",\"g\")));var b=a.slice(),a=\"\",d=!1;b.splice(c,0,f);f=b.join(\"\");for(c=0;c<e.regexSplit.length&&!(a+=e.regexSplit[c],d=RegExp(\"^\"+a+\"$\").test(f),console.log(f+\" \"+d+\" \"+a),d);c++);return d},cardinality:1}}}})})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.date.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2012 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //date & time aliases\n    $.extend($.inputmask.defaults.definitions, {\n        'h': { //hours\n            validator: \"[01][0-9]|2[0-3]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-2]\", cardinality: 1 }]\n        },\n        's': { //seconds || minutes\n            validator: \"[0-5][0-9]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-5]\", cardinality: 1 }]\n        },\n        'd': { //basic day\n            validator: \"0[1-9]|[12][0-9]|3[01]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[0-3]\", cardinality: 1 }]\n        },\n        'm': { //basic month\n            validator: \"0[1-9]|1[012]\",\n            cardinality: 2,\n            prevalidator: [{ validator: \"[01]\", cardinality: 1 }]\n        },\n        'y': { //basic year\n            validator: \"(19|20)\\\\d{2}\",\n            cardinality: 4,\n            prevalidator: [\n                        { validator: \"[12]\", cardinality: 1 },\n                        { validator: \"(19|20)\", cardinality: 2 },\n                        { validator: \"(19|20)\\\\d\", cardinality: 3 }\n            ]\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'dd/mm/yyyy': {\n            mask: \"1/2/y\",\n            placeholder: \"dd/mm/yyyy\",\n            regex: {\n                val1pre: new RegExp(\"[0-3]\"), //daypre\n                val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"), //day\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\"); }, //monthpre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\"); }//month\n            },\n            leapday: \"29/02/\",\n            separator: '/',\n            yearrange: { minyear: 1900, maxyear: 2099 },\n            isInYearRange: function (chrs, minyear, maxyear) {\n                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length)));\n                var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) ||\n            \t\t   (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false);\n            },\n            determinebaseyear: function (minyear, maxyear) {\n                var currentyear = (new Date()).getFullYear();\n                if (minyear > currentyear) return minyear;\n                if (maxyear < currentyear) return maxyear;\n\n                return currentyear;\n            },\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString());\n                }\n            },\n            definitions: {\n                '1': { //val1 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.val1.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.val1pre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val1.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(0, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(0, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                'y': { //year\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                            var dayMonthValue = buffer.join('').substr(0, 6);\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(chrs, 10);//detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        } else return false;\n                    },\n                    cardinality: 4,\n                    prevalidator: [\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 1);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                return { \"pos\": pos };\n                            }\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        if (!strict && !isValid) {\n                            var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n\n                            isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (isValid) {\n                                buffer[pos++] = yearPrefix[1];\n                                return { \"pos\": pos };\n                            }\n\n                            yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear).toString().slice(0, 2);\n                            if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {\n                                var dayMonthValue = buffer.join('').substr(0, 6);\n                                if (dayMonthValue != opts.leapday)\n                                    isValid = true;\n                                else {\n                                    var year = parseInt(chrs, 10);//detect leap year\n                                    if (year % 4 === 0)\n                                        if (year % 100 === 0)\n                                            if (year % 400 === 0)\n                                                isValid = true;\n                                            else isValid = false;\n                                        else isValid = true;\n                                    else isValid = false;\n                                }\n                            } else isValid = false;\n                            if (isValid) {\n                                buffer[pos - 1] = yearPrefix[0];\n                                buffer[pos++] = yearPrefix[1];\n                                buffer[pos++] = chrs[0];\n                                return { \"pos\": pos };\n                            }\n                        }\n                        return isValid;\n                    }, cardinality: 2\n                },\n                {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                    }, cardinality: 3\n                }\n                    ]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'mm/dd/yyyy': {\n            placeholder: \"mm/dd/yyyy\",\n            alias: \"dd/mm/yyyy\", //reuse functionality of dd/mm/yyyy alias\n            regex: {\n                val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\"); }, //daypre\n                val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\"); }, //day\n                val1pre: new RegExp(\"[01]\"), //monthpre\n                val1: new RegExp(\"0[1-9]|1[012]\") //month\n            },\n            leapday: \"02/29/\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString());\n                }\n            }\n        },\n        'yyyy/mm/dd': {\n            mask: \"y/1/2\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            leapday: \"/02/29\",\n            onKeyUp: function (e, buffer, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString());\n                }\n            },\n            definitions: {\n                '2': { //val2 ~ day or month\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var frontValue = buffer.join('').substr(5, 3);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.separator || \"-./\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    return { \"pos\": pos, \"c\": chrs.charAt(0) };\n                                }\n                            }\n                        }\n\n                        //check leap yeap\n                        if (isValid) {\n                            var dayMonthValue = buffer.join('').substr(4, 4) + chrs;\n                            if (dayMonthValue != opts.leapday)\n                                return true;\n                            else {\n                                var year = parseInt(buffer.join('').substr(0, 4), 10);  //detect leap year\n                                if (year % 4 === 0)\n                                    if (year % 100 === 0)\n                                        if (year % 400 === 0)\n                                            return true;\n                                        else return false;\n                                    else return true;\n                                else return false;\n                            }\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var frontValue = buffer.join('').substr(5, 3);\n                            var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            }\n        },\n        'dd.mm.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"dd.mm.yyyy\",\n            leapday: \"29.02.\",\n            separator: '.',\n            alias: \"dd/mm/yyyy\"\n        },\n        'dd-mm-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"dd-mm-yyyy\",\n            leapday: \"29-02-\",\n            separator: '-',\n            alias: \"dd/mm/yyyy\"\n        },\n        'mm.dd.yyyy': {\n            mask: \"1.2.y\",\n            placeholder: \"mm.dd.yyyy\",\n            leapday: \"02.29.\",\n            separator: '.',\n            alias: \"mm/dd/yyyy\"\n        },\n        'mm-dd-yyyy': {\n            mask: \"1-2-y\",\n            placeholder: \"mm-dd-yyyy\",\n            leapday: \"02-29-\",\n            separator: '-',\n            alias: \"mm/dd/yyyy\"\n        },\n        'yyyy.mm.dd': {\n            mask: \"y.1.2\",\n            placeholder: \"yyyy.mm.dd\",\n            leapday: \".02.29\",\n            separator: '.',\n            alias: \"yyyy/mm/dd\"\n        },\n        'yyyy-mm-dd': {\n            mask: \"y-1-2\",\n            placeholder: \"yyyy-mm-dd\",\n            leapday: \"-02-29\",\n            separator: '-',\n            alias: \"yyyy/mm/dd\"\n        },\n        'datetime': {\n            mask: \"1/2/y h:s\",\n            placeholder: \"dd/mm/yyyy hh:mm\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                hrspre: new RegExp(\"[012]\"), //hours pre\n                hrs24: new RegExp(\"2[0-9]|1[3-9]\"),\n                hrs: new RegExp(\"[01][0-9]|2[0-3]\"), //hours\n                ampmpre: new RegExp(\"[apAP]\"),\n                ampm: new RegExp(\"^[a|p|A|P][m|M]\")\n            },\n            timeseparator: ':',\n            hourFormat: \"24\", // or 12\n            definitions: {\n                'h': { //hours\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.hrs.test(chrs);\n                        if (!strict && !isValid) {\n                            if (chrs.charAt(1) == opts.timeseparator || \"-.:\".indexOf(chrs.charAt(1)) != -1) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0));\n                                if (isValid) {\n                                    buffer[pos - 1] = \"0\";\n                                    buffer[pos] = chrs.charAt(0);\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                        }\n\n                        if (isValid && opts.hourFormat !== \"24\" && opts.regex.hrs24.test(chrs)) {\n\n                            var tmp = parseInt(chrs, 10);\n\n                            if (tmp == 24) {\n                                buffer[pos + 5] = \"a\";\n                                buffer[pos + 6] = \"m\";\n                            } else {\n                                buffer[pos + 5] = \"p\";\n                                buffer[pos + 6] = \"m\";\n                            }\n\n                            tmp = tmp - 12;\n\n                            if (tmp < 10) {\n                                buffer[pos] = tmp.toString();\n                                buffer[pos - 1] = \"0\";\n                            } else {\n                                buffer[pos] = tmp.toString().charAt(1);\n                                buffer[pos - 1] = tmp.toString().charAt(0);\n                            }\n\n                            return { \"pos\": pos, \"c\": buffer[pos] };\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.hrspre.test(chrs);\n                            if (!strict && !isValid) {\n                                isValid = opts.regex.hrs.test(\"0\" + chrs);\n                                if (isValid) {\n                                    buffer[pos] = \"0\";\n                                    pos++;\n                                    return { \"pos\": pos };\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                },\n                't': { //am/pm\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        var isValid = opts.regex.ampm.test(chrs);\n                        if (!strict && !isValid) {\n                            isValid = opts.regex.ampm.test(chrs + 'm');\n                            if (isValid) {\n                                buffer[pos - 1] = chrs.charAt(0);\n                                buffer[pos] = \"m\";\n                                pos++;\n                                return pos;\n                            }\n                        }\n                        return isValid;\n                    },\n                    casing: \"lower\",\n                    cardinality: 2,\n                    prevalidator: [{\n                        validator: function (chrs, buffer, pos, strict, opts) {\n                            var isValid = opts.regex.ampmpre.test(chrs);\n                            if (isValid) {\n                                isValid = opts.regex.ampm.test(chrs + \"m\");\n                                if (isValid) {\n                                    buffer[pos] = chrs;\n                                    buffer[pos + 1] = 'm';\n                                    return pos;\n                                }\n                            }\n                            return isValid;\n                        }, cardinality: 1\n                    }]\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        'datetime12': {\n            mask: \"1/2/y h:s t\",\n            placeholder: \"dd/mm/yyyy hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'h:s t': {\n            mask: \"h:s t\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        'hh:mm:ss': {\n            mask: \"h:s:s\",\n            autoUnmask: false\n        },\n        'hh:mm': {\n            mask: \"h:s\",\n            autoUnmask: false\n        },\n        'date': {\n            alias: \"dd/mm/yyyy\" // \"mm/dd/yyyy\"\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //extra definitions\n    $.extend($.inputmask.defaults.definitions, {\n        'A': { //auto uppercasing\n            validator: \"[A-Za-z]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        '#': {\n            validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n            cardinality: 1,\n            casing: \"upper\"\n        }\n    });\n    $.extend($.inputmask.defaults.aliases, {\n        'url': {\n            mask: \"ir\",\n            placeholder: \"\",\n            separator: \"\",\n            defaultPrefix: \"http://\",\n            regex: {\n                urlpre1: new RegExp(\"[fh]\"),\n                urlpre2: new RegExp(\"(ft|ht)\"),\n                urlpre3: new RegExp(\"(ftp|htt)\"),\n                urlpre4: new RegExp(\"(ftp:|http|ftps)\"),\n                urlpre5: new RegExp(\"(ftp:/|ftps:|http:|https)\"),\n                urlpre6: new RegExp(\"(ftp://|ftps:/|http:/|https:)\"),\n                urlpre7: new RegExp(\"(ftp://|ftps://|http://|https:/)\"),\n                urlpre8: new RegExp(\"(ftp://|ftps://|http://|https://)\")\n            },\n            definitions: {\n                'i': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        return true;\n                    },\n                    cardinality: 8,\n                    prevalidator: (function () {\n                        var result = [], prefixLimit = 8;\n                        for (var i = 0; i < prefixLimit; i++) {\n                            result[i] = (function () {\n                                var j = i;\n                                return {\n                                    validator: function (chrs, buffer, pos, strict, opts) {\n                                        if (opts.regex[\"urlpre\" + (j + 1)]) {\n                                            var tmp = chrs, k;\n                                            if (((j + 1) - chrs.length) > 0) {\n                                                tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + \"\" + tmp;\n                                            }\n                                            var isValid = opts.regex[\"urlpre\" + (j + 1)].test(tmp);\n                                            if (!strict && !isValid) {\n                                                pos = pos - j;\n                                                for (k = 0; k < opts.defaultPrefix.length; k++) {\n                                                    buffer[pos] = opts.defaultPrefix[k]; pos++;\n                                                }\n                                                for (k = 0; k < tmp.length - 1; k++) {\n                                                    buffer[pos] = tmp[k]; pos++;\n                                                }\n                                                return { \"pos\": pos };\n                                            }\n                                            return isValid;\n                                        } else {\n                                            return false;\n                                        }\n                                    }, cardinality: j\n                                };\n                            })();\n                        }\n                        return result;\n                    })()\n                },\n                \"r\": {\n                    validator: \".\",\n                    cardinality: 50\n                }\n            },\n            insertMode: false,\n            autoUnmask: false\n        },\n        \"ip\": {\n            mask: \"i.i.i.i\",\n            definitions: {\n                'i': {\n                    validator: \"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\",\n                    cardinality: 3,\n                    prevalidator: [\n                                { validator: \"[0-2]\", cardinality: 1 },\n                                { validator: \"2[0-5]|[01][0-9]\", cardinality: 2 }\n                    ]\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.js",
    "content": "/**\n* @license Input Mask plugin for jquery\n* http://github.com/RobinHerbots/jquery.inputmask\n* Copyright (c) 2010 - 2013 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 0.0.0\n*/\n\n(function ($) {\n    if ($.fn.inputmask == undefined) {\n        $.inputmask = {\n            //options default\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                escapeChar: \"\\\\\",\n                mask: null,\n                oncomplete: $.noop, //executes when the mask is complete\n                onincomplete: $.noop, //executes when the mask is incomplete and focus is lost\n                oncleared: $.noop, //executes when the mask is cleared\n                repeat: 0, //repetitions of the mask\n                greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed\n                autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor\n                clearMaskOnLostFocus: true,\n                insertMode: true, //insert the input or overwrite the input\n                clearIncomplete: false, //clear the incomplete input on blur\n                aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js\n                onKeyUp: $.noop, //override to implement autocomplete on certain keys for example\n                onKeyDown: $.noop, //override to implement autocomplete on certain keys for example\n                showMaskOnFocus: true, //show the mask-placeholder when the input has focus\n                showMaskOnHover: true, //show the mask-placeholder when hovering the empty input\n                onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts\n                skipOptionalPartCharacter: \" \", //a character which can be used to skip an optional part of a mask\n                showTooltip: false, //show the activemask as tooltip\n                //numeric basic properties\n                numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)\n                radixPoint: \"\", //\".\", // | \",\"\n                skipRadixDance: false, //disable radixpoint caret positioning\n                rightAlignNumerics: true, //align numerics to the right\n                //numeric basic properties\n                definitions: {\n                    '9': {\n                        validator: \"[0-9]\",\n                        cardinality: 1\n                    },\n                    'a': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u0451]\",\n                        cardinality: 1\n                    },\n                    '*': {\n                        validator: \"[A-Za-z\\u0410-\\u044F\\u0401\\u04510-9]\",\n                        cardinality: 1\n                    }\n                },\n                keyCode: {\n                    ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,\n                    NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91\n                },\n                //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF\n                ignorables: [9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],\n                getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) {\n                    var calculatedLength = buffer.length;\n                    if (!greedy && repeat > 1) {\n                        calculatedLength += (buffer.length * (repeat - 1));\n                    }\n                    return calculatedLength;\n                }\n            },\n            val: $.fn.val, //store the original jquery val function\n            escapeRegex: function (str) {\n                var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n                return str.replace(new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim'), '\\\\$1');\n            }\n        };\n\n        $.fn.inputmask = function (fn, options) {\n            var opts = $.extend(true, {}, $.inputmask.defaults, options),\n                msie10 = navigator.userAgent.match(new RegExp(\"msie 10\", \"i\")) !== null,\n                iphone = navigator.userAgent.match(new RegExp(\"iphone\", \"i\")) !== null,\n                android = navigator.userAgent.match(new RegExp(\"android.*safari.*\", \"i\")) !== null,\n                pasteEvent = isInputEventSupported('paste') && !msie10 ? 'paste' : 'input',\n                android533,\n                masksets,\n                activeMasksetIndex = 0;\n\n            if (android) {\n                var browser = navigator.userAgent.match(/safari.*/i),\n                    version = parseInt(new RegExp(/[0-9]+/).exec(browser));\n                android533 = (version <= 533);\n                //android534 = (533 < version) && (version <= 534);\n            }\n            if (typeof fn === \"string\") {\n                switch (fn) {\n                    case \"mask\":\n                        //resolve possible aliases given by options\n                        resolveAlias(opts.alias, options);\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), 0).mask(this);\n                        });\n                    case \"unmaskedvalue\":\n                        var $input = $(this), input = this;\n                        masksets = $input.data('inputmask')['masksets'];\n                        activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        opts = $input.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).unmaskedvalue(this);\n                    case \"remove\":\n                        return this.each(function () {\n                            var $input = $(this), input = this;\n                            setTimeout(function () {\n                                if ($input.data('inputmask')) {\n                                    masksets = $input.data('inputmask')['masksets'];\n                                    activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                                    opts = $input.data('inputmask')['opts'];\n                                    //writeout the unmaskedvalue\n                                    input._valueSet(maskScope(masksets, activeMasksetIndex).unmaskedvalue($input, true));\n                                    //clear data\n                                    $input.removeData('inputmask');\n                                    //unbind all events\n                                    $input.unbind(\".inputmask\");\n                                    $input.removeClass('focus.inputmask');\n                                    //restore the value property\n                                    var valueProperty;\n                                    if (Object.getOwnPropertyDescriptor)\n                                        valueProperty = Object.getOwnPropertyDescriptor(input, \"value\");\n                                    if (valueProperty && valueProperty.get) {\n                                        if (input._valueGet) {\n                                            Object.defineProperty(input, \"value\", {\n                                                get: input._valueGet,\n                                                set: input._valueSet\n                                            });\n                                        }\n                                    } else if (document.__lookupGetter__ && input.__lookupGetter__(\"value\")) {\n                                        if (input._valueGet) {\n                                            input.__defineGetter__(\"value\", input._valueGet);\n                                            input.__defineSetter__(\"value\", input._valueSet);\n                                        }\n                                    }\n                                    delete input._valueGet;\n                                    delete input._valueSet;\n                                }\n                            }, 0);\n                        });\n                        break;\n                    case \"getemptymask\": //return the default (empty) mask value, usefull for setting the default value in validation\n                        if (this.data('inputmask')) {\n                            masksets = this.data('inputmask')['masksets'];\n                            activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                            return masksets[activeMasksetIndex]['_buffer'].join('');\n                        }\n                        else return \"\";\n                    case \"hasMaskedValue\": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value \n                        return this.data('inputmask') ? !this.data('inputmask')['opts'].autoUnmask : false;\n                    case \"isComplete\":\n                        masksets = this.data('inputmask')['masksets'];\n                        activeMasksetIndex = this.data('inputmask')['activeMasksetIndex'];\n                        opts = this.data('inputmask')['opts'];\n                        return maskScope(masksets, activeMasksetIndex).isComplete(this[0]._valueGet().split(''));\n                    default:\n                        //check if the fn is an alias\n                        if (!resolveAlias(fn, options)) {\n                            //maybe fn is a mask so we try\n                            //set mask\n                            opts.mask = fn;\n                        }\n                        masksets = generateMaskSets();\n\n                        return this.each(function () {\n                            maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                        });\n\n                        break;\n                }\n            } else if (typeof fn == \"object\") {\n                opts = $.extend(true, {}, $.inputmask.defaults, fn);\n\n                resolveAlias(opts.alias, fn); //resolve aliases\n                masksets = generateMaskSets();\n\n                return this.each(function () {\n                    maskScope($.extend(true, {}, masksets), activeMasksetIndex).mask(this);\n                });\n            } else if (fn == undefined) {\n                //look for data-inputmask atribute - the attribute should only contain optipns\n                return this.each(function () {\n                    var attrOptions = $(this).attr(\"data-inputmask\");\n                    if (attrOptions && attrOptions != \"\") {\n                        try {\n                            attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"');\n                            var dataoptions = $.parseJSON(\"{\" + attrOptions + \"}\");\n                            opts = $.extend(true, {}, $.inputmask.defaults, options);\n                            $.extend(true, opts, dataoptions);\n                            resolveAlias(opts.alias, dataoptions);\n                            opts.alias = undefined;\n                            $(this).inputmask(opts);\n                        } catch (ex) { } //need a more relax parseJSON\n                    }\n                });\n            }\n\n            //helper functions\n            function isInputEventSupported(eventName) {\n                var el = document.createElement('input'),\n\t\t        eventName = 'on' + eventName,\n\t\t        isSupported = (eventName in el);\n                if (!isSupported) {\n                    el.setAttribute(eventName, 'return;');\n                    isSupported = typeof el[eventName] == 'function';\n                }\n                el = null;\n                return isSupported;\n            }\n            function resolveAlias(aliasStr, options) {\n                var aliasDefinition = opts.aliases[aliasStr];\n                if (aliasDefinition) {\n                    if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias); //alias is another alias\n                    $.extend(true, opts, aliasDefinition);  //merge alias definition in the options\n                    $.extend(true, opts, options);  //reapply extra given options\n                    return true;\n                }\n                return false;\n            }\n            function getMaskTemplate(mask) {\n                var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;\n                if (mask.length == 1 && greedy == false) { opts.placeholder = \"\"; } //hide placeholder with single non-greedy mask\n                var singleMask = $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    }\n                    else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var i = 0; i < maskdef.cardinality; i++) {\n                                outElem.push(getPlaceHolder(outCount + i));\n                            }\n                        } else {\n                            outElem.push(element);\n                            escaped = false;\n                        }\n                        outCount += outElem.length;\n                        return outElem;\n                    }\n                });\n\n                //allocate repetitions\n                var repeatedMask = singleMask.slice();\n                for (var i = 1; i < repeat && greedy; i++) {\n                    repeatedMask = repeatedMask.concat(singleMask.slice());\n                }\n\n                return { \"mask\": repeatedMask, \"repeat\": repeat, \"greedy\": greedy };\n            }\n            //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}\n            function getTestingChain(mask) {\n                var isOptional = false, escaped = false;\n                var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated\n\n                return $.map(mask.split(\"\"), function (element, index) {\n                    var outElem = [];\n\n                    if (element == opts.escapeChar) {\n                        escaped = true;\n                    } else if (element == opts.optionalmarker.start && !escaped) {\n                        isOptional = true;\n                        newBlockMarker = true;\n                    }\n                    else if (element == opts.optionalmarker.end && !escaped) {\n                        isOptional = false;\n                        newBlockMarker = true;\n                    }\n                    else {\n                        var maskdef = opts.definitions[element];\n                        if (maskdef && !escaped) {\n                            var prevalidators = maskdef[\"prevalidator\"], prevalidatorsL = prevalidators ? prevalidators.length : 0;\n                            for (var i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator[\"validator\"], cardinality = prevalidator[\"cardinality\"];\n                                outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp(\".\"), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                                if (isOptional == true) //reset newBlockMarker\n                                    newBlockMarker = false;\n                            }\n                            outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp(\".\"), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef[\"casing\"], def: maskdef[\"definitionSymbol\"] | element });\n                        } else {\n                            outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element });\n                            escaped = false;\n                        }\n                        //reset newBlockMarker\n                        newBlockMarker = false;\n                        return outElem;\n                    }\n                });\n            }\n            function generateMaskSets() {\n                var ms = [];\n                var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates\n                function markOptional(maskPart) { //needed for the clearOptionalTail functionality\n                    return opts.optionalmarker.start + maskPart + opts.optionalmarker.end;\n                }\n                function splitFirstOptionalEndPart(maskPart) {\n                    var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            optionalStartMarkers++;\n                        }\n                        if (maskPart.charAt(i) == opts.optionalmarker.end) {\n                            optionalEndMarkers++;\n                        }\n                        if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers)\n                            break;\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function splitFirstOptionalStartPart(maskPart) {\n                    var mpl = maskPart.length;\n                    for (i = 0; i < mpl; i++) {\n                        if (maskPart.charAt(i) == opts.optionalmarker.start) {\n                            break;\n                        }\n                    }\n                    var maskParts = [maskPart.substring(0, i)];\n                    if (i < mpl) {\n                        maskParts.push(maskPart.substring(i + 1, mpl));\n                    }\n                    return maskParts;\n                }\n                function generateMask(maskPrefix, maskPart) {\n                    var maskParts = splitFirstOptionalEndPart(maskPart);\n                    var newMask, maskTemplate;\n\n                    var masks = splitFirstOptionalStartPart(maskParts[0]);\n                    if (masks.length > 1) {\n                        newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : \"\");\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                        if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional\n                            generateMask(maskPrefix + masks[0], masks[1] + maskParts[1]);\n                        }\n                        if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) {\n                            generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1]);\n                            generateMask(maskPrefix + masks[0], maskParts[1]);\n                        }\n                    }\n                    else {\n                        newMask = maskPrefix + maskParts;\n                        if ($.inArray(newMask, genmasks) == -1) {\n                            genmasks.push(newMask);\n                            maskTemplate = getMaskTemplate(newMask);\n                            ms.push({\n                                \"mask\": newMask,\n                                \"_buffer\": maskTemplate[\"mask\"],\n                                \"buffer\": maskTemplate[\"mask\"].slice(),\n                                \"tests\": getTestingChain(newMask),\n                                \"lastValidPosition\": undefined,\n                                \"greedy\": maskTemplate[\"greedy\"],\n                                \"repeat\": maskTemplate[\"repeat\"]\n                            });\n                        }\n                    }\n\n                }\n                if ($.isArray(opts.mask)) {\n                    $.each(opts.mask, function (ndx, lmnt) {\n                        generateMask(\"\", lmnt.toString());\n                    });\n                } else generateMask(\"\", opts.mask.toString());\n\n                return ms;\n            }\n            function getPlaceHolder(pos) {\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n\n            function maskScope(masksets, activeMasksetIndex) {\n                //maskset helperfunctions\n\n                function getActiveMaskSet() {\n                    return masksets[activeMasksetIndex];\n                }\n\n                function getActiveTests() {\n                    return getActiveMaskSet()['tests'];\n                }\n\n                function getActiveBufferTemplate() {\n                    return getActiveMaskSet()['_buffer'];\n                }\n\n                function getActiveBuffer() {\n                    return getActiveMaskSet()['buffer'];\n                }\n\n                function isValid(pos, c, strict, isRTL) { //strict true ~ no correction or autofill\n                    strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions \n\n                    function _isValid(position, activeMaskset) {\n                        var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset[\"buffer\"];\n                        for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) {\n                            chrs += getBufferElement(buffer, testPos - (i - 1));\n                        }\n\n                        if (c) {\n                            chrs += c;\n                        }\n\n                        //return is false or a json object => { pos: ??, c: ??} or true\n                        return activeMaskset['tests'][testPos].fn != null ? activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) : false;\n                    }\n\n                    if (strict) {\n                        var result = _isValid(pos, getActiveMaskSet()); //only check validity in current mask when validating strict\n                        if (result === true) {\n                            result = { \"pos\": pos }; //always take a possible corrected maskposition into account\n                        }\n                        return result;\n                    }\n\n                    var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        activeMasksetIndex = index;\n\n                        var maskPos = pos;\n                        if (currentActiveMasksetIndex != activeMasksetIndex && !isMask(pos)) {\n                            if (c == activeMaskset['_buffer'][maskPos] || c == opts.skipOptionalPartCharacter) { //match non-mask item\n                                results.push({ \"activeMasksetIndex\": index, \"result\": { \"refresh\": true, c: activeMaskset['_buffer'][maskPos] } }); //new command hack only rewrite buffer\n                                activeMaskset['lastValidPosition'] = maskPos;\n                                return false;\n                            } else activeMaskset['lastValidPosition'] = isRTL ? getMaskLength() + 1 : -1; //mark mask as validated and invalid\n                            //maskPos = isRTL ? seekPrevious(pos) : seekNext(pos);\n                        }\n                        if ((activeMaskset['lastValidPosition'] == undefined\n                                && maskPos == (isRTL ? seekPrevious(getMaskLength()) : seekNext(-1))\n                        )\n                            || (isRTL || opts.numericInput)\n                            ? activeMaskset['lastValidPosition'] <= opts.numericInput ? getMaskLength() : seekNext(maskPos)\n                            : activeMaskset['lastValidPosition'] >= seekPrevious(maskPos)) {\n                            if (maskPos >= 0 && maskPos < getMaskLength()) {\n                                result = _isValid(maskPos, activeMaskset);\n                                if (result !== false) {\n                                    if (result === true) {\n                                        result = { \"pos\": maskPos }; //always take a possible corrected maskposition into account\n                                    }\n                                    var newValidPosition = result.pos || maskPos;\n                                    if (activeMaskset['lastValidPosition'] == undefined ||\n                                        (isRTL ? (opts.greedy ? activeMaskset['lastValidPosition'] > newValidPosition : newValidPosition == getActiveBuffer().length - 1)\n                                            : activeMaskset['lastValidPosition'] < newValidPosition))\n                                        activeMaskset['lastValidPosition'] = newValidPosition; //set new position from isValid\n                                } else activeMaskset['lastValidPosition'] = isRTL ? pos == getMaskLength() ? undefined : seekNext(pos) : pos == 0 ? undefined : seekPrevious(pos); //autocorrect validposition from backspace etc  \t\n                                results.push({ \"activeMasksetIndex\": index, \"result\": result });\n                            }\n                        }\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex\n\n                    return results; //return results of the multiple mask validations\n                }\n\n                function determineActiveMasksetIndex(isRTL) {\n                    var currentMasksetIndex = activeMasksetIndex,\n                        highestValid = { \"activeMasksetIndex\": 0, \"lastValidPosition\": isRTL ? getMaskLength() + 1 : -1 };\n                    $.each(masksets, function (index, value) {\n                        var activeMaskset = this;\n                        if (activeMaskset['lastValidPosition'] != undefined) {\n                            if ((isRTL || opts.numericInput) ? (activeMaskset['lastValidPosition'] < highestValid['lastValidPosition']) : (activeMaskset['lastValidPosition'] > highestValid['lastValidPosition'])) {\n                                highestValid[\"activeMasksetIndex\"] = index;\n                                highestValid[\"lastValidPosition\"] = activeMaskset['lastValidPosition'];\n                            }\n                        }\n                    });\n                    activeMasksetIndex = highestValid[\"activeMasksetIndex\"];\n                    if (currentMasksetIndex != activeMasksetIndex) {\n                        if (isRTL) {\n                            clearBuffer(getActiveBuffer(), 0, seekPrevious(highestValid[\"lastValidPosition\"]));\n                        } else {\n                            clearBuffer(getActiveBuffer(), seekNext(highestValid[\"lastValidPosition\"]), getMaskLength());\n                        }\n                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                    }\n                }\n\n                function isMask(pos) {\n                    var testPos = determineTestPosition(pos);\n                    var test = getActiveTests()[testPos];\n\n                    return test != undefined ? test.fn : false;\n                }\n\n                function determineTestPosition(pos) {\n                    return pos % getActiveTests().length;\n                }\n\n\n\n                function getMaskLength() {\n                    return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts);\n                }\n\n                //pos: from position\n\n                function seekNext(pos) {\n                    var maskL = getMaskLength();\n                    if (pos >= maskL) return maskL;\n                    var position = pos;\n                    while (++position < maskL && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                //pos: from position\n\n                function seekPrevious(pos) {\n                    var position = pos;\n                    if (position <= 0) return 0;\n\n                    while (--position > 0 && !isMask(position)) {\n                    }\n                    ;\n                    return position;\n                }\n\n                function setBufferElement(buffer, position, element, autoPrepare, isRTL) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position, isRTL);\n\n                    var test = getActiveTests()[determineTestPosition(position)];\n                    var elem = element;\n                    if (elem != undefined) {\n                        switch (test.casing) {\n                            case \"upper\":\n                                elem = element.toUpperCase();\n                                break;\n                            case \"lower\":\n                                elem = element.toLowerCase();\n                                break;\n                        }\n                    }\n\n                    buffer[position] = elem;\n                }\n\n                function getBufferElement(buffer, position, autoPrepare) {\n                    if (autoPrepare) position = prepareBuffer(buffer, position);\n                    return buffer[position];\n                }\n\n                //needed to handle the non-greedy mask repetitions\n\n                function prepareBuffer(buffer, position, isRTL) {\n                    var j;\n                    if (isRTL) {\n                        while (position < 0 && buffer.length < getMaskLength()) {\n                            j = getActiveBufferTemplate().length - 1;\n                            position = getActiveBufferTemplate().length;\n                            while (getActiveBufferTemplate()[j] !== undefined) {\n                                buffer.unshift(getActiveBufferTemplate()[j--]);\n                            }\n                        }\n                    } else {\n                        while (buffer[position] == undefined && buffer.length < getMaskLength()) {\n                            j = 0;\n                            while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer\n                                buffer.push(getActiveBufferTemplate()[j++]);\n                            }\n                        }\n                    }\n\n                    return position;\n                }\n\n                function writeBuffer(input, buffer, caretPos) {\n                    input._valueSet(buffer.join(''));\n                    if (caretPos != undefined) {\n                        caret(input, caretPos);\n                    }\n                }\n\n                ;\n\n                function clearBuffer(buffer, start, end) {\n                    for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) {\n                        setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true));\n                    }\n                }\n\n                ;\n\n                function setReTargetPlaceHolder(buffer, pos) {\n                    var testPos = determineTestPosition(pos);\n                    setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos));\n                }\n\n                function checkVal(input, writeOut, strict, nptvl) {\n                    var isRTL = $(input).data('inputmask')['isRTL'],\n                        inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet(), isRTL).split('');\n\n                    $.each(masksets, function (ndx, ms) {\n                        ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                        ms[\"lastValidPosition\"] = undefined;\n                        ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                    });\n                    if (strict !== true) activeMasksetIndex = 0;\n                    //caret(input, getActiveMaskSet()[\"p\"]);\n\n                    if (isRTL && !opts.numericInput)\n                        inputValue = inputValue.reverse();\n\n                    var ml = getMaskLength();\n                    $.each(inputValue, function (ndx, charCode) {\n                        var index = isRTL ? (opts.numericInput ? ml : ml - ndx - 1) : ndx;\n                        if (isMask(isRTL ? (opts.numericInput ? seekPrevious(ml) : ml - ndx - 1) : ndx)\n                        || (strict !== true && charCode != getBufferElement(getActiveBufferTemplate(), index, true))) {\n                            $(input).trigger(\"keypress\", [true, charCode.charCodeAt(0), writeOut, strict, index]);\n                        }\n                    });\n                    if (strict === true)\n                        getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"p\"]) : seekPrevious(getActiveMaskSet()[\"p\"]);\n                }\n\n                function escapeRegex(str) {\n                    return $.inputmask.escapeRegex.call(this, str);\n                }\n\n                function truncateInput(inputValue, rtl) {\n                    return rtl ? inputValue.replace(new RegExp(\"^(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*\"), \"\") : inputValue.replace(new RegExp(\"(\" + escapeRegex(getActiveBufferTemplate().join('')) + \")*$\"), \"\");\n                }\n\n                function clearOptionalTail(input) {\n                    var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos;\n                    if ($(input).data('inputmask')['isRTL']) {\n                        for (var pos = 0; pos <= tmpBuffer.length - 1; pos++) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.splice(0, 1);\n                                else break;\n                            } else break;\n                        }\n                    } else {\n                        for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) {\n                            var testPos = determineTestPosition(pos);\n                            if (getActiveTests()[testPos].optionality) {\n                                if (!isMask(pos) || !isValid(pos, buffer[pos], true))\n                                    tmpBuffer.pop();\n                                else break;\n                            } else break;\n                        }\n                    }\n                    writeBuffer(input, tmpBuffer);\n                }\n\n                //functionality fn\n                this.unmaskedvalue = function ($input, skipDatepickerCheck) {\n                    return unmaskedvalue($input, skipDatepickerCheck);\n                };\n                function unmaskedvalue($input, skipDatepickerCheck) {\n                    var input = $input[0];\n                    if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {\n                        checkVal(input, false, true);\n                        return $.map(getActiveBuffer(), function (element, index) {\n                            return isMask(index) && isValid(index, element, true) ? element : null;\n                        }).join('');\n                    } else {\n                        return input._valueGet();\n                    }\n                }\n\n                var caretSavePoint;\n\n                function caret(input, begin, end) {\n                    var npt = input.jquery && input.length > 0 ? input[0] : input, range;\n                    if (typeof begin == 'number') {\n                        if (!$(input).is(':visible')) {\n                            return;\n                        }\n                        end = (typeof end == 'number') ? end : begin;\n                        if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode\n                        if (npt.setSelectionRange) {\n                            if (android) {\n                                setTimeout(function () {\n                                    npt.selectionStart = begin;\n                                    npt.selectionEnd = android ? begin : end;\n                                }, 10);\n                                caretSavePoint = { \"begin\": begin, \"end\": end };\n                            } else {\n                                npt.selectionStart = begin;\n                                npt.selectionEnd = end;\n                            }\n                        } else if (npt.createTextRange) {\n                            range = npt.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd('character', end);\n                            range.moveStart('character', begin);\n                            range.select();\n                        }\n                    } else {\n                        if (!$(input).is(':visible')) {\n                            return { \"begin\": 0, \"end\": 0 };\n                        }\n                        if (npt.setSelectionRange) {\n                            begin = npt.selectionStart;\n                            end = npt.selectionEnd;\n                        } else if (document.selection && document.selection.createRange) {\n                            range = document.selection.createRange();\n                            begin = 0 - range.duplicate().moveStart('character', -100000);\n                            end = begin + range.text.length;\n                        }\n                        return { \"begin\": begin, \"end\": end };\n                    }\n                };\n\n                this.isComplete = function (buffer) {\n                    return isComplete(buffer);\n                };\n                function isComplete(buffer) {\n                    var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex;\n                    $.each(masksets, function (ndx, ms) {\n                        activeMasksetIndex = ndx;\n                        var aml = seekPrevious(getMaskLength());\n                        if (ms[\"lastValidPosition\"] != undefined && ms[\"lastValidPosition\"] >= highestValidPosition && ms[\"lastValidPosition\"] == aml) {\n                            var msComplete = true;\n                            for (var i = 0; i <= aml; i++) {\n                                var mask = isMask(i), testPos = determineTestPosition(i);\n                                if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) {\n                                    msComplete = false;\n                                    break;\n                                }\n                            }\n                            complete = complete || msComplete;\n                            if (complete) //break loop\n                                return false;\n                        }\n                        highestValidPosition = ms[\"lastValidPosition\"];\n                    });\n                    activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset\n                    return complete;\n                }\n                this.mask = function (el) {\n                    var $input = $(el);\n                    if (!$input.is(\":input\")) return;\n\n                    //store tests & original buffer in the input element - used to get the unmasked value\n                    $input.data('inputmask', {\n                        'masksets': masksets,\n                        'activeMasksetIndex': activeMasksetIndex,\n                        'opts': opts,\n                        'isRTL': false\n                    });\n\n                    //show tooltip\n                    if (opts.showTooltip) {\n                        $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                    }\n\n                    //correct greedy setting if needed\n                    getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0;\n\n                    //handle maxlength attribute\n                    var maxLength = $input.prop('maxLength');\n                    if (getMaskLength() > maxLength && maxLength > -1) { //FF sets no defined max length to -1 \n                        if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength;\n                        if (getActiveMaskSet()['greedy'] == false) {\n                            getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length);\n                        }\n                        $input.prop('maxLength', getMaskLength() * 2);\n                    }\n\n                    patchValueProperty(el);\n\n                    //init vars\n                    getActiveMaskSet()[\"undoBuffer\"] = el._valueGet();\n                    var skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        ignorable = false,\n                        isRTL = false;\n                    if (el.dir == \"rtl\" || opts.numericInput) {\n                        if (el.dir == \"rtl\" || (opts.numericInput && opts.rightAlignNumerics))\n                            $input.css(\"text-align\", \"right\");\n                        el.dir = \"ltr\";\n                        $input.removeAttr(\"dir\");\n                        var inputData = $input.data('inputmask');\n                        inputData['isRTL'] = true;\n                        $input.data('inputmask', inputData);\n                        isRTL = true;\n                    }\n\n                    //unbind all events - to make sure that no other mask will interfere when re-masking\n                    $input.unbind(\".inputmask\");\n                    $input.removeClass('focus.inputmask');\n                    //bind events\n                    $input.bind(\"mouseenter.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer());\n                            }\n                        }\n                    }).bind(\"blur.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer();\n                        $input.removeClass('focus.inputmask');\n                        if (nptValue != getActiveMaskSet()[\"undoBuffer\"]) {\n                            $input.change();\n                        }\n                        if (opts.clearMaskOnLostFocus && nptValue != '') {\n                            if (nptValue == getActiveBufferTemplate().join(''))\n                                input._valueSet('');\n                            else { //clearout optional tail of the mask\n                                clearOptionalTail(input);\n                            }\n                        }\n                        if (!isComplete(buffer)) {\n                            $input.trigger(\"incomplete\");\n                            if (opts.clearIncomplete) {\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                                activeMasksetIndex = 0;\n                                if (opts.clearMaskOnLostFocus)\n                                    input._valueSet('');\n                                else {\n                                    buffer = getActiveBufferTemplate().slice();\n                                    writeBuffer(input, buffer);\n                                }\n                            }\n                        }\n                    }).bind(\"focus.inputmask\", function () {\n                        var $input = $(this), input = this, nptValue = input._valueGet();\n                        if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {\n                            if (input._valueGet() != getActiveBuffer().join('')) {\n                                writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            }\n                        }\n                        $input.addClass('focus.inputmask');\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                    }).bind(\"mouseleave.inputmask\", function () {\n                        var $input = $(this), input = this;\n                        if (opts.clearMaskOnLostFocus) {\n                            if (!$input.hasClass('focus.inputmask')) {\n                                if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '')\n                                    input._valueSet('');\n                                else { //clearout optional tail of the mask\n                                    clearOptionalTail(input);\n                                }\n                            }\n                        }\n                    }).bind(\"click.inputmask\", function () {\n                        var input = this;\n                        setTimeout(function () {\n                            var selectedCaret = caret(input), buffer = getActiveBuffer();\n                            if (selectedCaret.begin == selectedCaret.end) {\n                                var clickPosition = selectedCaret.begin,\n                                    lvp = getActiveMaskSet()[\"lastValidPosition\"],\n                                    lastPosition;\n\n                                determineInputDirection(input, selectedCaret);\n                                if (isRTL) {\n                                    if (opts.numericInput) {\n                                        lastPosition = opts.skipRadixDance === false && opts.radixPoint != \"\" && $.inArray(opts.radixPoint, buffer) != -1 ? $.inArray(opts.radixPoint, buffer) : getMaskLength();\n                                    } else {\n                                        lastPosition = seekPrevious((lvp == undefined ? getMaskLength() : lvp) + 1);\n                                    }\n                                    caret(input, clickPosition > lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                } else {\n                                    lastPosition = seekNext(lvp == undefined ? -1 : lvp);\n                                    caret(input, clickPosition < lastPosition && (isValid(clickPosition, buffer[clickPosition], true, isRTL) !== false || !isMask(clickPosition)) ? clickPosition : lastPosition);\n                                }\n                            }\n                        }, 0);\n                    }).bind('dblclick.inputmask', function () {\n                        var input = this;\n                        if (getActiveMaskSet()[\"lastValidPosition\"] != undefined) {\n                            setTimeout(function () {\n                                isRTL ?\n                                    caret(input, seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]), getMaskLength()) :\n                                    caret(input, 0, seekNext(getActiveMaskSet()[\"lastValidPosition\"]));\n                            }, 0);\n                        }\n                    }).bind(\"keydown.inputmask\", keydownEvent\n                    ).bind(\"keypress.inputmask\", keypressEvent\n                    ).bind(\"keyup.inputmask\", keyupEvent\n                    ).bind(pasteEvent + \".inputmask dragdrop.inputmask drop.inputmask\", function () {\n                        var input = this, $input = $(input);\n                        setTimeout(function () {\n                            checkVal(input, true, false);\n                            if (isComplete(getActiveBuffer()))\n                                $input.trigger(\"complete\");\n                            $input.click();\n                        }, 0);\n                    }).bind('setvalue.inputmask', function () {\n                        var input = this;\n                        getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        checkVal(input, true);\n                        if (input._valueGet() == getActiveBufferTemplate().join(''))\n                            input._valueSet('');\n                    }).bind('complete.inputmask', opts.oncomplete)\n                        .bind('incomplete.inputmask', opts.onincomplete)\n                        .bind('cleared.inputmask', opts.oncleared);\n\n                    //apply mask\n                    checkVal(el, true, false);\n                    // Wrap document.activeElement in a try/catch block since IE9 throw \"Unspecified error\" if document.activeElement is undefined when we are in an IFrame.\n                    var activeElement;\n                    try {\n                        activeElement = document.activeElement;\n                    } catch (e) {\n                    }\n                    if (activeElement === el) { //position the caret when in focus\n                        $input.addClass('focus.inputmask');\n                        caret(el, getActiveMaskSet()[\"lastValidPosition\"]);\n                    } else if (opts.clearMaskOnLostFocus) {\n                        if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) {\n                            el._valueSet('');\n                        } else {\n                            clearOptionalTail(el);\n                        }\n                    }\n\n                    installEventRuler(el);\n\n                    //private functions\n\n                    function installEventRuler(npt) {\n                        var events = $._data(npt).events;\n\n                        $.each(events, function (eventType, eventHandlers) {\n                            $.each(eventHandlers, function (ndx, eventHandler) {\n                                if (eventHandler.namespace == \"inputmask\") {\n                                    var handler = eventHandler.handler;\n                                    eventHandler.handler = function (e) {\n                                        if (this.readOnly || this.disabled)\n                                            e.preventDefault;\n                                        else\n                                            return handler.apply(this, arguments);\n                                    };\n                                }\n                            });\n                        });\n                    }\n\n                    function patchValueProperty(npt) {\n                        var valueProperty;\n                        if (Object.getOwnPropertyDescriptor)\n                            valueProperty = Object.getOwnPropertyDescriptor(npt, \"value\");\n                        if (valueProperty && valueProperty.get) {\n                            if (!npt._valueGet) {\n\n                                npt._valueGet = valueProperty.get;\n                                npt._valueSet = valueProperty.set;\n\n                                Object.defineProperty(npt, \"value\", {\n                                    get: function () {\n                                        var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                            activeMasksetIndex = inputData['activeMasksetIndex'];\n                                        return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                    },\n                                    set: function (value) {\n                                        this._valueSet(value);\n                                        $(this).triggerHandler('setvalue.inputmask');\n                                    }\n                                });\n                            }\n                        } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                            if (!npt._valueGet) {\n                                npt._valueGet = npt.__lookupGetter__(\"value\");\n                                npt._valueSet = npt.__lookupSetter__(\"value\");\n\n                                npt.__defineGetter__(\"value\", function () {\n                                    var $self = $(this), inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                        activeMasksetIndex = inputData['activeMasksetIndex'];\n                                    return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : this._valueGet() != masksets[activeMasksetIndex]['_buffer'].join('') ? this._valueGet() : '';\n                                });\n                                npt.__defineSetter__(\"value\", function (value) {\n                                    this._valueSet(value);\n                                    $(this).triggerHandler('setvalue.inputmask');\n                                });\n                            }\n                        } else {\n                            if (!npt._valueGet) {\n                                npt._valueGet = function () { return this.value; };\n                                npt._valueSet = function (value) { this.value = value; };\n                            }\n                            if ($.fn.val.inputmaskpatch != true) {\n                                $.fn.val = function () {\n                                    if (arguments.length == 0) {\n                                        var $self = $(this);\n                                        if ($self.data('inputmask')) {\n                                            if ($self.data('inputmask')['opts'].autoUnmask)\n                                                return $self.inputmask('unmaskedvalue');\n                                            else {\n                                                var result = $.inputmask.val.apply($self);\n                                                var inputData = $(this).data('inputmask'), masksets = inputData['masksets'],\n                                                    activeMasksetIndex = inputData['activeMasksetIndex'];\n                                                return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : '';\n                                            }\n                                        } else return $.inputmask.val.apply($self);\n                                    } else {\n                                        var args = arguments;\n                                        return this.each(function () {\n                                            var $self = $(this);\n                                            var result = $.inputmask.val.apply($self, args);\n                                            if ($self.data('inputmask')) $self.triggerHandler('setvalue.inputmask');\n                                            return result;\n                                        });\n                                    }\n                                };\n                                $.extend($.fn.val, {\n                                    inputmaskpatch: true\n                                });\n                            }\n                        }\n                    }\n\n                    function determineInputDirection(input, pos) {\n                        //set input direction according the position to the radixPoint\n                        if (opts.numericInput && opts.radixPoint != \"\" && opts.skipRadixDance === false) {\n                            var nptStr = input._valueGet();\n                            var radixPosition = nptStr.indexOf(opts.radixPoint);\n                            isRTL = pos.begin <= radixPosition || pos.end <= radixPosition || radixPosition == -1;\n                        }\n                    }\n\n                    //shift chars to left from start to end and put c at end position if defined\n\n                    function shiftL(start, end, c) {\n                        var buffer = getActiveBuffer();\n                        while (!isMask(start) && start - 1 >= 0) start--; //jumping over nonmask position\n                        for (var i = start; i < end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                setReTargetPlaceHolder(buffer, i);\n                                var j = seekNext(i);\n                                var p = getBufferElement(buffer, j);\n                                if (p != getPlaceHolder(j)) {\n                                    if (j < getMaskLength() && isValid(i, p, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) {\n                                        setBufferElement(buffer, i, getBufferElement(buffer, j), true, isRTL);\n                                        if (j < end) {\n                                            setReTargetPlaceHolder(buffer, j); //cleanup next position\n                                        }\n                                    } else {\n                                        if (isMask(i))\n                                            break;\n                                    }\n                                } //else if (c == undefined) break;\n                            } else {\n                                setReTargetPlaceHolder(buffer, i);\n                            }\n                        }\n                        if (c != undefined)\n                            setBufferElement(buffer, isRTL ? end : seekPrevious(end), c);\n\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return start; //return the used start position\n                    }\n\n                    function shiftR(start, end, c, full) { //full => behave like a push right ~ do not stop on placeholders\n                        var buffer = getActiveBuffer();\n                        for (var i = start; i <= end && i < getMaskLength() ; i++) {\n                            if (isMask(i)) {\n                                var t = getBufferElement(buffer, i);\n                                setBufferElement(buffer, i, c, true, isRTL);\n                                if (t != getPlaceHolder(i)) {\n                                    var j = seekNext(i);\n                                    if (j < getMaskLength()) {\n                                        if (isValid(j, t, true, isRTL) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def)\n                                            c = t;\n                                        else {\n                                            if (isMask(j))\n                                                break;\n                                            else c = t;\n                                        }\n                                    } else break;\n                                } else {\n                                    c = t;\n                                    if (full !== true) break;\n                                }\n                            } else\n                                setReTargetPlaceHolder(buffer, i);\n                        }\n                        var lengthBefore = buffer.length;\n                        if (getActiveMaskSet()[\"greedy\"] == false) {\n                            var trbuffer = truncateInput(buffer.join(''), isRTL).split('');\n                            buffer.length = trbuffer.length;\n                            for (var i = 0, bl = buffer.length; i < bl; i++) {\n                                buffer[i] = trbuffer[i];\n                            }\n                            if (buffer.length == 0) getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                        }\n                        return end - (lengthBefore - buffer.length); //return new start position\n                    }\n\n                    ;\n\n                    function keydownEvent(e) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        skipKeyPressEvent = false;\n\n                        var input = this, k = e.keyCode, pos = caret(input);\n                        determineInputDirection(input, pos);\n\n                        //backspace, delete, and escape get special treatment\n                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete\n                            e.preventDefault(); //stop default action but allow propagation\n                            var beginPos = pos.begin;\n                            if (pos.begin == 0 && pos.end == getMaskLength()) {\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                $.each(masksets, function (ndx, ms) {\n                                    ms[\"buffer\"] = ms[\"_buffer\"].slice();\n                                    ms[\"lastValidPosition\"] = undefined;\n                                    ms[\"p\"] = isRTL ? getMaskLength() : 0;\n                                });\n                            } else if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) { //partial selection\n                                clearBuffer(getActiveBuffer(), pos.begin, pos.end);\n                                var ml = getMaskLength();\n                                if (opts.greedy == false) {\n                                    isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                } else {\n                                    for (var i = pos.begin; i < pos.end; i++) {\n                                        if (isMask(i))\n                                            isRTL ? shiftR(0, pos.end - 1, getPlaceHolder(pos.end), true) : shiftL(pos.begin, ml);\n                                    }\n                                }\n                                checkVal(input, false, true, getActiveBuffer());\n                            } else {\n                                $.each(masksets, function (ndx, ms) {\n                                    activeMasksetIndex = ndx;\n                                    beginPos = android533 ? pos.end : pos.begin;\n                                    var buffer = getActiveBuffer(), firstMaskPos = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1),\n                                        maskL = getMaskLength();\n                                    if (k == opts.keyCode.DELETE) { //handle delete\n                                        if (isRTL ? beginPos > firstMaskPos : beginPos < firstMaskPos)\n                                            beginPos = firstMaskPos;\n                                        if (beginPos < maskL) {\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : seekNext(beginPos);\n                                                beginPos = shiftL(beginPos, maskL);\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        }\n                                    } else if (k == opts.keyCode.BACKSPACE) { //handle backspace\n                                        if (isRTL ? beginPos <= firstMaskPos : beginPos > firstMaskPos) {\n                                            beginPos -= 1;\n                                            if (opts.numericInput && opts.radixPoint != \"\" && buffer[beginPos] == opts.radixPoint) {\n                                                beginPos = shiftR(0, (buffer.length - 1 == beginPos) /* radixPoint is latest? delete it */ ? beginPos : beginPos - 1, getPlaceHolder(beginPos), true);\n                                                beginPos++;\n                                            } else {\n                                                if (isRTL) {\n                                                    beginPos = shiftR(0, beginPos, getPlaceHolder(beginPos), true);\n                                                    beginPos = buffer[beginPos + 1] == opts.radixPoint ? beginPos + 1 : seekNext(beginPos);\n                                                } else {\n                                                    beginPos = shiftL(beginPos, maskL);\n                                                }\n                                            }\n                                            if (getActiveMaskSet()['lastValidPosition'] != undefined) {\n                                                if (getActiveMaskSet()['lastValidPosition'] != -1 && getActiveBuffer()[getActiveMaskSet()['lastValidPosition']] == getActiveBufferTemplate()[getActiveMaskSet()['lastValidPosition']])\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = isRTL ? seekNext(getActiveMaskSet()[\"lastValidPosition\"]) : (getActiveMaskSet()[\"lastValidPosition\"] == 0 ? -1 : seekPrevious(getActiveMaskSet()[\"lastValidPosition\"]));\n                                                if (isRTL ? getActiveMaskSet()['lastValidPosition'] > firstMaskPos : getActiveMaskSet()['lastValidPosition'] < firstMaskPos) {\n                                                    getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                                    getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                                } else {\n                                                    getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                                    getActiveMaskSet()[\"p\"] = beginPos;\n                                                }\n                                            }\n                                        } else if (activeMasksetIndex > 0) { //retry other masks\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                            getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                            getActiveMaskSet()[\"p\"] = firstMaskPos;\n                                            //init first \n                                            activeMasksetIndex = 0;\n                                            getActiveMaskSet()[\"buffer\"] = getActiveBufferTemplate().slice();\n                                            getActiveMaskSet()[\"p\"] = isRTL ? seekPrevious(getMaskLength() + 1) : seekNext(-1);\n                                            getActiveMaskSet()[\"lastValidPosition\"] = undefined;\n                                        }\n                                    }\n                                });\n\n                            }\n\n                            determineActiveMasksetIndex(isRTL);\n                            writeBuffer(input, getActiveBuffer(), getActiveMaskSet()[\"p\"]);\n                            if (input._valueGet() == getActiveBufferTemplate().join(''))\n                                $(input).trigger('cleared');\n\n                            if (opts.showTooltip) { //update tooltip\n                                $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                            }\n                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch\n                            setTimeout(function () {\n                                var caretPos = isRTL ? getActiveMaskSet()[\"lastValidPosition\"] : seekNext(getActiveMaskSet()[\"lastValidPosition\"]);\n                                if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;\n                                caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);\n                            }, 0);\n                        } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up\n                            caret(input, 0, e.shiftKey ? pos.begin : 0);\n                        } else if (k == opts.keyCode.ESCAPE) { //escape\n                            input._valueSet(getActiveMaskSet()[\"undoBuffer\"]);\n                            checkVal(input, true, true);\n                        } else if (k == opts.keyCode.INSERT) { //insert\n                            opts.insertMode = !opts.insertMode;\n                            caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);\n                        } else if (opts.insertMode == false && !e.shiftKey) {\n                            if (k == opts.keyCode.RIGHT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin);\n                                }, 0);\n                            } else if (k == opts.keyCode.LEFT) {\n                                setTimeout(function () {\n                                    var caretPos = caret(input);\n                                    caret(input, caretPos.begin - 1);\n                                }, 0);\n                            }\n                        }\n\n                        opts.onKeyDown.call(this, e, getActiveBuffer(), opts); //extra stuff to execute on keydown\n                        ignorable = $.inArray(k, opts.ignorables) != -1;\n                    }\n\n                    function keypressEvent(e, checkval, k, writeOut, strict, ndx) {\n                        //Safari 5.1.x - modal dialog fires keypress twice workaround\n                        if (k == undefined && skipKeyPressEvent) return false;\n                        skipKeyPressEvent = true;\n\n                        var input = this, $input = $(input);\n\n                        e = e || window.event;\n                        var k = k || e.which || e.charCode || e.keyCode,\n                            c = String.fromCharCode(k);\n\n                        if ((e.ctrlKey || e.metaKey || ignorable) && checkval !== true) {\n                            return true;\n                        } else {\n                            if (k) {\n                                var pos, results, result;\n                                if (checkval) {\n                                    var pcaret = strict ? ndx : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]);\n                                    pos = { begin: pcaret, end: pcaret };\n                                } else {\n                                    pos = caret(input);\n                                }\n\n                                //clear possible selection\n                                var initialIndex = activeMasksetIndex, selectionCleared = false;\n                                $.each(masksets, function (ndx, lmnt) {\n                                    activeMasksetIndex = ndx;\n                                    getActiveMaskSet()[\"undoBuffer\"] = getActiveBuffer().join('');\n                                    if ((pos.end - pos.begin) > 1 || ((pos.end - pos.begin) == 1 && opts.insertMode)) {\n                                        var posend = pos.end < getMaskLength() ? pos.end : getMaskLength();\n                                        clearBuffer(getActiveBuffer(), pos.begin, posend);\n                                        var ml = getMaskLength();\n                                        if (opts.greedy == false) {\n                                            isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                        } else {\n                                            for (var i = pos.begin; i < posend; i++) {\n                                                if (isMask(i))\n                                                    isRTL ? shiftR(0, posend - 1, getPlaceHolder(posend), true) : shiftL(pos.begin, ml);\n                                            }\n                                        }\n                                        selectionCleared = true;\n                                    }\n                                });\n                                activeMasksetIndex = initialIndex; //restore index\n\n                                if (isRTL) {\n                                    var p = seekPrevious(selectionCleared ? pos.begin : pos.end);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                var maskL = getMaskLength(); //update masklength to include possible groupSeparator offset\n                                                var firstMaskPos = seekNext(-1), firstUnmaskedPosition = firstMaskPos;\n                                                if (opts.insertMode == true) {\n                                                    if (getActiveMaskSet()['greedy'] == true) {\n                                                        var bfrClone = buffer.slice();\n                                                        while (getBufferElement(bfrClone, firstUnmaskedPosition, true) != getPlaceHolder(firstUnmaskedPosition) && firstUnmaskedPosition <= p) {\n                                                            firstUnmaskedPosition = firstUnmaskedPosition == maskL ? (maskL + 1) : seekNext(firstUnmaskedPosition);\n                                                        }\n                                                    }\n                                                    if (firstUnmaskedPosition <= p && (getActiveMaskSet()['greedy'] || (buffer.length < maskL || getBufferElement(buffer, p) == getPlaceHolder(p)))) {\n                                                        if (buffer[firstMaskPos] != getPlaceHolder(firstMaskPos) && buffer.length < maskL) {\n                                                            var offset = prepareBuffer(buffer, -1, isRTL);\n                                                            if ((selectionCleared ? pos.begin : pos.end) != 0) p = p + offset;\n                                                            maskL = buffer.length;\n                                                        }\n                                                        shiftL(firstUnmaskedPosition, p, c);\n                                                    } else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = p;\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : (opts.numericInput ? seekNext(getActiveMaskSet()[\"p\"]) : getActiveMaskSet()[\"p\"]));\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                } else {\n                                    var p = seekNext(pos.begin - 1);\n                                    results = isValid(p, c, strict, isRTL);\n                                    if (strict === true) results = [{ \"activeMasksetIndex\": activeMasksetIndex, \"result\": results }];\n                                    $.each(results, function (index, result) {\n                                        activeMasksetIndex = result[\"activeMasksetIndex\"];\n                                        getActiveMaskSet()[\"writeOutBuffer\"] = true;\n                                        var np = result[\"result\"];\n                                        if (np !== false) {\n                                            var refresh = false, buffer = getActiveBuffer();\n                                            if (np !== true) {\n                                                refresh = np[\"refresh\"]; //only rewrite buffer from isValid\n                                                p = np.pos != undefined ? np.pos : p; //set new position from isValid\n                                                c = np.c != undefined ? np.c : c; //set new char from isValid\n                                            }\n                                            if (refresh !== true) {\n                                                if (opts.insertMode == true) {\n                                                    var lastUnmaskedPosition = getMaskLength();\n                                                    var bfrClone = buffer.slice();\n                                                    while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) {\n                                                        lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition);\n                                                    }\n                                                    if (lastUnmaskedPosition >= p)\n                                                        shiftR(p, buffer.length, c);\n                                                    else getActiveMaskSet()[\"writeOutBuffer\"] = false;\n                                                } else setBufferElement(buffer, p, c, true, isRTL);\n                                            }\n                                            getActiveMaskSet()[\"p\"] = seekNext(p);\n                                        }\n                                    });\n\n                                    if (strict !== true) determineActiveMasksetIndex(isRTL);\n                                    if (writeOut !== false) {\n                                        $.each(results, function (ndx, rslt) {\n                                            if (rslt[\"activeMasksetIndex\"] == activeMasksetIndex) {\n                                                result = rslt;\n                                                return false;\n                                            }\n                                        });\n                                        if (result != undefined) {\n                                        \tvar self = this;\n                                            setTimeout(function () { opts.onKeyValidation.call(self, result[\"result\"], opts); }, 0);\n                                            if (getActiveMaskSet()[\"writeOutBuffer\"] && result[\"result\"] !== false) {\n                                                var p = getActiveMaskSet()[\"p\"], buffer = getActiveBuffer();\n                                                writeBuffer(input, buffer, checkval ? undefined : p);\n\n                                                setTimeout(function () { //timeout needed for IE\n                                                    if (isComplete(buffer))\n                                                        $input.trigger(\"complete\");\n                                                }, 0);\n                                            } else {\n                                                getActiveMaskSet()[\"buffer\"] = getActiveMaskSet()[\"undoBuffer\"].split('');\n                                            }\n                                        }\n                                    }\n                                }\n                                if (android && checkval !== true) {\n                                    caret(input, caretSavePoint.begin, caretSavePoint.end);\n                                }\n                                if (opts.showTooltip) { //update tooltip\n                                    $input.prop(\"title\", getActiveMaskSet()[\"mask\"]);\n                                }\n                                e.preventDefault();\n                            }\n                        }\n                    }\n\n                    function keyupEvent(e) {\n                        var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer();\n                        opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup\n                        if (k == opts.keyCode.TAB && $input.hasClass('focus.inputmask') && input._valueGet().length == 0 && opts.showMaskOnFocus) {\n                            buffer = getActiveBufferTemplate().slice();\n                            writeBuffer(input, buffer);\n                            if (!isRTL) caret(input, 0);\n                            getActiveMaskSet()[\"undoBuffer\"] = input._valueGet();\n                        }\n                    }\n                };\n                return this;\n            };\n            return this;\n        };\n    }\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.numeric.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nOptional extensions on the jquery.inputmask base\n*/\n(function ($) {\n    //number aliases\n    $.extend($.inputmask.defaults.aliases, {\n        'decimal': {\n            mask: \"~\",\n            placeholder: \"\",\n            repeat: 10,\n            greedy: false,\n            numericInput: true,\n            digits: \"*\", //numer of digits\n            groupSeparator: \"\",//\",\", // | \".\"\n            radixPoint: \".\",\n            groupSize: 3,\n            autoGroup: false,\n            allowPlus: true,\n            allowMinus: true,\n            getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account\n                var calculatedLength = buffer.length;\n\n                if (!greedy && repeat > 1) {\n                    calculatedLength += (buffer.length * (repeat - 1));\n                }\n\n                var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint);\n                var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), \"\").replace(new RegExp(escapedRadixPoint), \"\"),\n                groupOffset = currentBufferStr.length - strippedBufferStr.length;\n                return calculatedLength + groupOffset;\n            },\n            postFormat: function (buffer, pos, reformatOnly, opts) {\n                if (opts.groupSeparator == \"\") return pos;\n                var cbuf = buffer.slice(),\n                    radixPos = $.inArray(opts.radixPoint, buffer);\n                if (!reformatOnly) {\n                    cbuf.splice(pos == 0 || pos <= radixPos || opts.skipRadixDance ? pos + 1 : pos, 0, \"?\"); //set position indicator\n                }\n                var bufVal = cbuf.join('');\n                if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                    bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                    var radixSplit = bufVal.split(opts.radixPoint);\n                    bufVal = radixSplit[0];\n                    var reg = new RegExp('([-\\+]?[\\\\d\\?]+)([\\\\d\\?]{' + opts.groupSize + '})');\n                    while (reg.test(bufVal)) {\n                        bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2');\n                        bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);\n                    }\n                    if (radixSplit.length > 1)\n                        bufVal += opts.radixPoint + radixSplit[1];\n                }\n                buffer.length = bufVal.length; //align the length\n                for (var i = 0, l = bufVal.length; i < l; i++) {\n                    buffer[i] = bufVal.charAt(i);\n                }\n                var newPos = $.inArray(\"?\", buffer);\n                if (!reformatOnly) buffer.splice(newPos, 1);\n\n                return reformatOnly ? pos : newPos <= radixPos || (opts.skipRadixDance && newPos != 0) ? newPos - 1 : newPos;\n            },\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var escapedRadixPoint = $.inputmask.escapeRegex.call(this, radixPoint);\n                    var digitExpression = isNaN(digits) ? digits : '{0,' + digits + '}';\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)(\" + escapedRadixPoint + \"\\\\d\" + digitExpression + \")?$\");\n                }\n            },\n            onKeyDown: function (e, buffer, opts) {\n                var $input = $(this), input = this;\n                if (e.keyCode == opts.keyCode.TAB) {\n                    var radixPosition = $.inArray(opts.radixPoint, buffer);\n                    if (radixPosition != -1) {\n                        var masksets = $input.data('inputmask')['masksets'];\n                        var activeMasksetIndex = $input.data('inputmask')['activeMasksetIndex'];\n                        for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex][\"_buffer\"], masksets[activeMasksetIndex][\"greedy\"], masksets[activeMasksetIndex][\"repeat\"], buffer, opts) ; i++) {\n                            if (buffer[radixPosition + i] == undefined) buffer[radixPosition + i] = \"0\";\n                        }\n                        input._valueSet(buffer.join(''));\n                    }\n                } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) {\n                    opts.postFormat(buffer, 0, true, opts);\n                    input._valueSet(buffer.join(''));\n                }\n            },\n            definitions: {\n                '~': { //real number\n                    validator: function (chrs, buffer, pos, strict, opts) {\n                        if (chrs == \"\") return false;\n                        if (pos <= 1 && buffer[0] === '0' && new RegExp(\"[\\\\d-]\").test(chrs)) { //handle first char\n                            buffer[0] = \"\";\n                            return { \"pos\": 0 };\n                        }\n\n                        var cbuf = strict ? buffer.slice(0, pos) : buffer.slice();\n\n                        cbuf.splice(pos == 0 ? pos : pos + 1, 0, chrs);\n                        var bufferStr = cbuf.join('');\n                        if (opts.autoGroup && !strict) { //strip groupseparator\n                            var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator);\n                            bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, \"g\"), '');\n                        }\n                        var isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                        if (!isValid) {\n                            //let's help the regex a bit\n                            bufferStr += \"0\";\n                            isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                            if (!isValid) {\n                                //make a valid group\n                                var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator);\n                                for (i = bufferStr.length - lastGroupSeparator; i <= 3; i++) {\n                                    bufferStr += \"0\";\n                                }\n\n                                isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(bufferStr);\n                                if (!isValid && !strict) {\n                                    if (chrs == opts.radixPoint) {\n                                        isValid = opts.regex.number(opts.groupSeparator, opts.groupSize, opts.radixPoint, opts.digits, opts.allowPlus, opts.allowMinus).test(\"0\" + bufferStr + \"0\");\n                                        if (isValid) {\n                                            buffer[pos] = \"0\";\n                                            pos++;\n                                            return { \"pos\": pos };\n                                        }\n                                    }\n                                }\n                            }\n                        }\n\n                        if (isValid != false && !strict && chrs != opts.radixPoint) {\n                            var newPos = opts.postFormat(buffer, pos, false, opts);\n                            return { \"pos\": newPos };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    prevalidator: null\n                }\n            },\n            insertMode: true,\n            autoUnmask: false\n        },\n        'integer': {\n            regex: {\n                number: function (groupSeparator, groupSize, radixPoint, digits, allowPlus, allowMinus) {\n                    var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, groupSeparator);\n                    var signedExpression = \"[\" + (allowPlus ? \"\\+\" : \"\") + (allowMinus ? \"-\" : \"\") + \"]?\";\n                    return new RegExp(\"^\" + signedExpression + \"(\\\\d+|\\\\d{1,\" + groupSize + \"}((\" + escapedGroupSeparator + \"\\\\d{\" + groupSize + \"})?)+)$\");\n                }\n            },\n            alias: \"decimal\"\n        }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-inputmask/js/jquery.inputmask.regex.extensions.js",
    "content": "/*\nInput Mask plugin extensions\nhttp://github.com/RobinHerbots/jquery.inputmask\nCopyright (c) 2010 - 2013 Robin Herbots\nLicensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\nVersion: 0.0.0\n\nRegex extensions on the jquery.inputmask base\nAllows for using regular expressions as a mask\n*/\n(function ($) {\n    $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask(\"Regex\", { regex: \"[0-9]*\"}\n        'Regex': {\n            mask: \"r\",\n            greedy: false,\n            repeat: 10, //needs to be computed\n            regex: null,\n            regexSplit: null,\n            definitions: {\n                'r': {\n                    validator: function (chrs, buffer, pos, strict, opts) {\n\n                        function analyseRegex() {  //ENHANCE ME\n                            var regexSplitRegex = \"\\\\[.*?\\]\\\\*\";\n\n                            opts.regexSplit = opts.regex.match(new RegExp(regexSplitRegex, \"g\"));\n\n                            //if (opts.regex.indexOf(\"*\") != (opts.regex.length - 1)) {\n                            //    opts.regex += \"{1}\";\n                            //}\n                            //opts.regexSplit.push(opts.regex);\n                        }\n\n                        if (opts.regexSplit == null) {\n                            analyseRegex();\n                        }\n\n                        var cbuffer = buffer.slice(), regexPart = \"\", isValid = false;\n                        cbuffer.splice(pos, 0, chrs);\n                        var bufferStr = cbuffer.join('');\n                        for (var i = 0; i < opts.regexSplit.length; i++) {\n                            regexPart += opts.regexSplit[i];\n                            var exp = new RegExp(\"^\" + regexPart + \"$\");\n                            isValid = exp.test(bufferStr);\n                            console.log(bufferStr + ' ' + isValid + ' ' + regexPart);\n                            if (isValid) break;\n                        }\n\n                        return isValid;\n                    },\n                    cardinality: 1\n                }\n            }\n        }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/README.md",
    "content": "[jQuery Validation Plugin](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) - Form validation made easy\n================================\n\nThe jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy.\n\n## [Help the project](http://pledgie.com/campaigns/18159)\n\nThis project is looking for help! [You can donate to the ongoing pledgie campaign](http://pledgie.com/campaigns/18159)\nand help spread the word. If you've used the plugin, or plan to use, consider a donation - any amount will help.\n\nYou can find the plan for how to spend the money on the [pledgie page](http://pledgie.com/campaigns/18159).\n\n## Getting Started\n\nInclude jQuery and the plugin on a page. Then select a form to validate and call the `validate` method.\n\n```html\n<form>\n\t<input required>\n</form>\n<script src=\"jquery.js\"></script>\n<script src=\"jquery.validation.js\"></script>\n<script>\n$(\"form\").validate();\n</script>\n```\n\nFor more information on how to setup a rules and customizations, [check the documentation](http://docs.jquery.com/Plugins/Validation).\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\nIf you've wrote custom methods that you'd like to contribute to additional-methods.js, create a branch, add the method there and send a pull request for that branch.\n\nIf you've wrote a patch for some bug listed on http://plugins.jquery.com/project/issues/validate, please provide a link to that issue in your commit message.\n\n## License\nCopyright (c) 2012 Jörn Zaefferer\nLicensed under the MIT license.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/changelog.txt",
    "content": "1.10.0 / 2012-09-07\n===================\n\n  * Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback.\n  * rename files for language_REGION according to the standard ISO_3166-1 (http://en.wikipedia.org/wiki/ISO_3166-1), for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW)\n  * Optimise RegEx patterns, especially for UK phone numbers.\n  * Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)\n  * Added croatian (HR) localization\n  * Existing French translations were edited and French translations for the additional methods were added.\n  * Merged in changes for specifying custom error messages in data attributes\n  * Updated UK Mobile phone number regex for new numbers. Fixes #154\n  * Add element to success call with test. Fixes #60\n  * Fixed regex for time additional method. Fixes #131\n  * resetForm now clears old previousValue on form elements. Fixes #312\n  * Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359\n  * Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405\n  * Added jQuery Mobile demo. Fixes #249\n  * Deoptimize findByName for correctness. Fixes #82 - $.validator.prototype.findByName breaks in IE7\n  * Added US zip code support and test. Fixes #90\n  * Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244\n  * Removed number stripping from stripHtml. Fixes #2\n  * Fixed invalid count on invalid to valid remote validation. Fixes #286\n  * Add link to file_input to demo index\n  * Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369\n  * Disables blur event when onfocusout is set to false. Test added.\n  * Fixed value issue for radio buttons and checkboxes. Fixes #363\n  * Added test for rangeWords and fixed regex and bounds in method. Fixes #308\n  * Fixed TinyMCE Demo and added link on demo page. Fixes #382\n  * Changed localization message for min/max. Fixes #273\n  * Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217\n  * Fixed delegate bug for dynamic-totals demo. Fixes #51\n  * Fix incorrect message for alphanumeric validator\n  * Removed incorrect false check on required attribute\n  * required attribute fix for non-html5 browsers. Fixes #301\n  * Added methods \"require_from_group\" and \"skip_or_fill_minimum\"\n  * Use correct iso code for swedish\n  * Updated demo HTML files to use HTML5 doctype\n  * Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41\n  * Introduce a elementValue method that normalizes only string values (don't touch array value of multi-select). Fixes #116\n  * Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9\n  * Fix bad double quote in test fixtures\n  * Fix maxWords method to include the upper bound, not exclude it. Fixes #284\n  * Fixed grammar error in german range validator message. Fixes #315\n  * Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280\n  * Fix jQuery.format usage, should be $.validator.format. Fixes #329\n  * Methods for 'all' UK phone numbers + UK postcodes\n  * Pattern method: Convert string param to RegExp. Fixes issue #223\n  * grammar error in german localization file\n  * Added Estonian localization for messages\n  * Improve tooltip handling on themerollered demo\n  * Add type=\"text\" to input fields without type attribute to please qSA\n  * Update themerollered demo to use tooltip to show errors as overlay.\n  * Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load.\n  * Fixed min error message broken in Japanese.\n  * Update form plugin to latest version. Enhance the ajaxSubmit demo.\n  * Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods\n  * Passing submit event to submitHandler callback\n  * Fixed #219 - Fix valid() on elements with dependency-callback or dependency-expression.\n  * Improve build to remove dist dir to ensure only the current release gets zipped up\n\n1.9.0\n---\n* Added Basque (EU) localization\n* Added Slovenian (SL) localization\n* Fixed issue #127 - Finnish translations has one : instead of ;\n* Fixed Russian localization, minor syntax issue\n* Added in support for HTML5 input types, fixes #97\n* Improved HTML5 support by setting novalidate attribute on the form, and reading the type attribute.\n* Fixed showLabel() removing all classes from error element. Remove only settings.validClass. Fixes #151.\n* Added 'pattern' to additional-methods to validate against arbitraty regular expressions.\n* Improved email method to not allow the dot at the end (valid by RFC, but unwanted here). Fixes #143\n* Fixed swedish and norwedian translations, min/max messages got switched. Fixes #181\n* Fixed #184 - resetForm: should unset lastElement\n* Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format\n* Fixed #177 - Fix validation of a single radio or checkbox input\n* Fixed #189 - :hidden elements are now ignored by default\n* Fixed #194 - Required as attribute fails if jQuery>=1.6 - Use .prop instead of .attr\n* Fixed #47, #39, #32 - Allowed credit card numbers to contain spaces as well as dashes (spaces are commonly input by users).\n\n1.8.1\n---\n* Added Thai (TH) localization, fixes #85\n* Added Vietnamese (VI) localization, thanks Ngoc\n* Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation.\n* Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form).\n\n1.8.0\n---\n* Improved NL localization (http://plugins.jquery.com/node/14120)\n* Added Georgian (GE) localization, thanks Avtandil Kikabidze\n* Added Serbian (SR) localization, thanks Aleksandar Milovac\n* Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal\n* Added Japanese (JA) localization, thanks Bryan Meyerovich\n* Added Catalan (CA) localization, thanks Xavier de Pedro\n* Fixed missing var statements within for-in loops\n* Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11)\n* Bugfixes for compability with jQuery 1.5.1, while maintaining backwards-compability\n\n1.7\n---\n* Added Lithuanian (LT) localization\n* Added Greek (EL) localization (http://plugins.jquery.com/node/12319)\n* Added Latvian (LV) localization (http://plugins.jquery.com/node/12349)\n* Added Hebrew (HE) localization (http://plugins.jquery.com/node/12039)\n* Fixed Spanish (ES) localization (http://plugins.jquery.com/node/12696)\n* Added jQuery UI themerolled demo\n* Removed cmxform.js\n* Fixed four missing semicolons (http://plugins.jquery.com/node/12639)\n* Renamed phone-method in additional-methods.js to phoneUS\n* Added phoneUK and mobileUK methods to additional-methods.js (http://plugins.jquery.com/node/12359)\n* Deep extend options to avoid modifying multiple forms when using the rules-method on a single element (http://plugins.jquery.com/node/12411)\n* Bugfixes for compability with jQuery 1.4.2, while maintaining backwards-compability\n\n1.6\n---\n* Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization\n* Updated Swedish (SE) localization (some missing html iso characters)\n* Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument\n* Fixed two accidental global variables\n* Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor\n* Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead)\n* Fixed remote form submit synchronization, kudos to Matas Petrikas\n* Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520\n* Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487\n* Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450\n* Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239\n* Fixed default message for digits (http://plugins.jquery.com/node/9853)\n* Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351)\n* Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233)\n* Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195)\n* Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144)\n* Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612)\n* Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611)\n\n1.5.5\n---\n* Fix for http://plugins.jquery.com/node/8659\n* Fixed trailing comma in messages_cs.js\n\n1.5.4\n---\n* Fixed remote method bug (http://plugins.jquery.com/node/8658)\n\n1.5.3\n---\n* Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624)\n* Updated multipart demo to use latest jQuery UI accordion\n* Added dateNL and time methods to additionalMethods.js\n* Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization\n* Moved jQuery.format (fomerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details)\n* Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4)\n* Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481)\n* Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443)\n* Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585)\n* Added option validClass, default \"valid\", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205)\n* Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635)\n* Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807)\n* Improved accept method to also accept a Drupal-style comma-seperated list of values (http://plugins.jquery.com/node/8580)\n\n1.5.2\n---\n* Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format\n* Fixed value passed to methods to exclude carriage return (\\r), same as jQuery's val() does\n* Added slovak (sk) localization\n* Added demo for intergration with jQuery UI tabs\n* Added selects-grouping example to tabs demo (see second tab, birthdate field)\n\n1.5.1\n---\n* Updated marketo demo to use invalidHandler option instead of binding invalid-form event\n* Added TinyMCE integration example\n* Added ukrainian (ua) localization\n* Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed)\n* Various small fixes for compability with both 1.2.6 and 1.3\n\n1.5\n---\n* Improved basic demo, validating confirm-password field after password changed\n* Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method that rely on the trimming\n* Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization\n* Fixed #3195: Two flaws in swedish localization\n* Fixed #3503: Extended rules(\"add\") to accept messages propery: use to specify add custom messages to an element via rules(\"add\", { messages: { required: \"Required! \" } });\n* Fixed #3356: Regression from #2908 when using meta-option\n* Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compability\n* Fixed #3516: Trigger invalid-form event even when remote validation is involved\n* Added invalidHandler option as a shortcut to bind(\"invalid-form\", function() {})\n* Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide)\n* Added test for creditcard validation and improved default message\n* Enhanced remote validation, accepting options to passthrough to $.ajax as paramter (either url string or options, including url property plus everything else that $.ajax supports)\n\n1.4\n---\n* Fixed #2931, validate elements in document order and ignore type=image inputs\n* Fixed usage of $ and jQuery variables, now fully comptible with all variations of noConflict usage\n* Implemented #2908, enabling custom messages via metadata ala class=\"{required:true,messages:{required:'required field'}}\", added demo/custom-messages-metadata-demo.html\n* Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength)\n* Fixed #2215 regression: Call unhighlight only for current elements, not everything\n* Implemented #2989, enabling image button to cancel validation\n* Fixed issue where IE incorrectly validates against maxlength=0\n* Added czech (cs) localization\n* Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary\n* Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0)\n* Added dutch (nl) localization (#3201)\n\n1.3\n---\n* Fixed invalid-form event, now only triggered when form is invalid\n* Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization\n* Added removeAttrs plugin to facilate adding and removing multiple attributes\n* Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: \"fieldName1 fieldName2[, fieldNameN\" }\n* Enhanced rules() for adding and removing (static) rules: rules(\"add\", \"method1[, methodN]\"/{method1:param[, method_n:param]}) and rules(\"remove\"[, \"method1[, method_n]\")\n* Enhanced rules-option, accepts space-seperated string-list of methods, eg. {birthdate: \"required date\"}\n* Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click\n* Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled as required:true so far)\n* Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success isn't applied for optional fields\n* Fixed url and email validation to not use trimmed values\n* Fixed creditcard validation to accept only digits and dashes (\"asdf\" is not a valid creditcard number)\n* Allow both button and input elements for cancel buttons (via class=\"cancel\")\n* Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted validator.checkForm to validate a form without UI sideeffects\n* Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compability with AIR\n\n1.2.1\n-----\n\n* Bundled delegeate plugin with validate plugin - its always required anyway\n* Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary)\n* Fixed stopRequest to prevent pendingRequest < 0\n* Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically fixes the issue introduced by automatically creating ranges in 1.2\n* Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success\n* Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted\n* Fixed validate() call with no elements selected, returning undefined instead of throwing an error\n* Improved demo, replacing metadata with classes/attributes for specifying rules\n* Fixed error when no custom message is used for remote validation\n* Modified email and url validation to require domain label and top label\n* Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additionals as url2 and email2\n* Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation\n* Added login form example with \"Email password\" link that makes the password field optional\n* Enhanced dynamic-totals demo with an example of a single message for two fields\n\n1.2\n---\n\n* Added AJAX-captcha validation example (based on http://psyrens.com/captcha/)\n* Added remember-the-milk-demo (thanks RTM team for the permission!)\n* Added marketo-demo (thanks Glen Lipka!)\n* Added support for ajax-validation, see method \"remote\"; serverside returns JSON, true for valid elements, false or a String for invalid, String is used as message\n* Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting\n* Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API\n* Added rules() plguin method to read and write rules for an element (currently read only)\n* Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/\n* Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js)\n* Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive examples for all methods\n* Removed validator.refresh(), validation is now completey dynamic\n* Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3)\n* Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3)\n* Added feature to merge min + max into and range and minlength + maxlength into rangelength\n* Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element\n* Allow to specify null or an empty string as a message to display nothing (see marketo demo)\n* Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details\n\n1.1.2\n---\n\n* Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/\n* Improved email method to better handle unicode characters\n* Fixed error container to hide when all elements are valid, not only on form submit\n* Fixed String.format to jQuery.format (moving into jQuery namespace)\n* Fixed accept method to accept both upper and lowercase extensions\n* Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times)\n* Changed debug-mode console log from \"error\" to \"warn\" level\n\n1.1.1\n-----\n\n* Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4\n* Fixed and improved String.format: Global search & replace, better handling of array arguments\n* Fixed cancel-button handling to use validator-object for storing state instead of form element\n* Fixed name selectors to handle \"complex\" names, eg. containing brackets (\"list[]\")\n* Added button and disabled elements to exclude from validation\n* Moved element event handlers to refresh to be able to add handlers to new elements\n* Fixed email validation to allow long top level domains (eg. \".travel\")\n* Moved showErrors() from valid() to form()\n* Added validator.size(): returns the number of current errors\n* Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element)\n* Compatible with jQuery 1.1.x and 1.2.x\n\n1.1\n---\n\n* Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option.\n* Fixed resetForm\n* Fixed custom-methods-demo\n\n1.0\n---\n\n* Improved number and numberDE methods to check for correct decimal numbers with delimiters\n* Only elements that have rules are checked (otherwise success-option is applied to all elements)\n* Added creditcard number method (thanks to Brian Klug)\n* Added ignore-option, eg. ignore: \"[@type=hidden]\", using that expression to exclude elements to validate. Default: none, though submit and reset buttons are always ignored\n* Heavily enhanced Functions-as-messages by providing a flexible String.format helper\n* Accept Functions as messages, providing runtime-custom-messages\n* Fixed exclusion of elements without rules from successList\n* Fixed custom-method-demo, replaced the alert with message displaying the number of errors\n* Fixed form-submit-prevention when using submitHandler\n* Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using\n  an array with {name, message, element} instead of an object with id:message pairs for the internal errorList.\n* Added support for specifying simple rules as simple strings, eg. \"required\" is equivalent to {required: true}\n* Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field.\n* Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused.\n* Added success option to show the a field was validated successfully\n* Fixed Opera select-issue (avoiding a attribute-collision)\n* Fixed problems with focussing hidden elements in IE\n* Added feature to skip validation for submit buttons with class \"cancel\"\n* Fixed potential issues with Google Toolbar by prefering plugin option messages over title attribute\n* submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms\n* Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur\n* IE6 error container layout issue is solved\n* Customize error element via errorElement option\n* Added validator.refresh() to find new inputs in the form\n* Added accept validation method, checks file extensions\n* Improved dependecy feature by adding two custom expressions: \":blank\" to select elements with an empty value and �:filled� to select elements with a value, both excluding whitespace\n* Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all error messages\n* Fixed docs for validator.showErrors()\n* Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages\n* Fixed error label creation to use specified error class\n* Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument\n* Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element)\n* Fixed two major bugs in IE (error containers) and Opera (metadata)\n* Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods)\n* Renamed \"min\" to \"minLength\", \"max\" to \"maxLength\", \"length\" to \"rangeLength\"\n* Added \"minValue\", \"maxValue\" and \"rangeValue\"\n* Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup\n* Added support for one-message-per-rule when defining messages via plugin settings\n* Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too.\n* Refactored tests and demos: Less files, better demos\n* Improved documentation: More examples for methods, more reference texts explaining some basics\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/ajaxSubmit-intergration-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<style type=\"text/css\">\n.warning { color: red; }\n</style>\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.form.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\tjQuery(function() {\n\t\t// show a simple loading indicator\n\t\tvar loader = jQuery('<div id=\"loader\"><img src=\"images/loading.gif\" alt=\"loading...\" /></div>')\n\t\t\t.css({position: \"relative\", top: \"1em\", left: \"25em\", display: \"inline\"})\n\t\t\t.appendTo(\"body\")\n\t\t\t.hide();\n\t\tjQuery().ajaxStart(function() {\n\t\t\tloader.show();\n\t\t}).ajaxStop(function() {\n\t\t\tloader.hide();\n\t\t}).ajaxError(function(a, b, e) {\n\t\t\tthrow e;\n\t\t});\n\n\t\tvar v = jQuery(\"#form\").validate({\n\t\t\tsubmitHandler: function(form) {\n\t\t\t\tjQuery(form).ajaxSubmit({\n\t\t\t\t\ttarget: \"#result\"\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tjQuery(\"#reset\").click(function() {\n\t\t\tv.resetForm();\n\t\t});\n\t});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form method=\"post\" class=\"cmxform\" id=\"form\" action=\"form.php\">\n\t<fieldset>\n\t\t<legend>Login Form (Enter \"foobar\" as password)</legend>\n\t\t<p>\n\t\t\t<label for=\"user\">Username</label>\n\t\t\t<input id=\"user\" name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"required\" minlength=\"3\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"pass\">Password</label>\n\t\t\t<input type=\"password\" name=\"password\" id=\"password\" class=\"required\" minlength\"5\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Login\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<div id=\"result\">Please login!</div>\n\n<br/>\n\n<button id=\"reset\">Programmatically reset above form!</button>\n\n<p>Backend file: <a href=\"form.phps\">form.phps</a></p>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/captcha.js",
    "content": "$(function(){\n\t$(\"#refreshimg\").click(function(){\n\t\t$.post('newsession.php');\n\t\t$(\"#captchaimage\").load('image_req.php');\n\t\treturn false;\n\t});\n\t\n\t$(\"#captchaform\").validate({\n\t\trules: {\n\t\t\tcaptcha: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"process.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tcaptcha: \"Correct captcha is required. Click the captcha to generate a new one\"\t\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\talert(\"Correct captcha!\");\n\t\t},\n\t\tsuccess: function(label) {\n\t\t\tlabel.addClass(\"valid\").text(\"Valid captcha!\")\n\t\t},\n\t\tonkeyup: false\n\t});\n\t\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/image_req.php",
    "content": "<?php\n\n// Echo the image - timestamp appended to prevent caching\necho '<a href=\"index.php\" onclick=\"refreshimg(); return false;\" title=\"Click to refresh image\"><img src=\"images/image.jpg?' . time() . '\" width=\"132\" height=\"46\" alt=\"Captcha image\" /></a>';\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/images/image.php",
    "content": "<?php\n\n// Begin the session\nsession_start();\n\n// If the session is not present, set the variable to an error message\nif(!isset($_SESSION['captcha_id']))\n\t$str = 'ERROR!';\n// Else if it is present, set the variable to the session contents\nelse\n\t$str = $_SESSION['captcha_id'];\n\n// Set the content type\n//header('Content-type: image/png');\nheader('Cache-control: no-cache');\n\n// Create an image from button.png\n$image = imagecreatefrompng('button.png');\n\n// Set the font colour\n$colour = imagecolorallocate($image, 183, 178, 152);\n\n// Set the font\n$font = '../fonts/Anorexia.ttf';\n\n// Set a random integer for the rotation between -15 and 15 degrees\n$rotate = rand(-15, 15);\n\n// Create an image using our original image and adding the detail\nimagettftext($image, 14, $rotate, 18, 30, $colour, $font, $str);\n\n// Output the image as a png\nimagepng($image);\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/index.php",
    "content": "<?php\n\n// Make the page validate\nini_set('session.use_trans_sid', '0');\n\n// Include the random string file\nrequire 'rand.php';\n\n// Begin the session\nsession_start();\n\n// Set the session contents\n$_SESSION['captcha_id'] = $str;\n\n?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n\n<head>\n <title>AJAX CAPTCHA</title>\n <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n <meta name=\"keywords\" content=\"AJAX,JHR,PHP,CAPTCHA,download,PHP CAPTCHA,AJAX CAPTCHA,AJAX PHP CAPTCHA,download AJAX CAPTCHA,download AJAX PHP CAPTCHA\" />\n <meta name=\"description\" content=\"An AJAX CAPTCHA script, written in PHP\" />\n \n <script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n <script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n <script type=\"text/javascript\" src=\"captcha.js\"></script>\n \n <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n <style type=\"text/css\">\n  img { border: 1px solid #eee; }\n  p#statusgreen { font-size: 1.2em; background-color: #fff; color: #0a0; }\n  p#statusred { font-size: 1.2em; background-color: #fff; color: #a00; }\n  fieldset label { display: block; }\n  fieldset div#captchaimage { float: left; margin-right: 15px; }\n  fieldset input#captcha { width: 25%; border: 1px solid #ddd; padding: 2px; }\n  fieldset input#submit { display: block; margin: 2% 0% 0% 0%; }\n  #captcha.success {\n  \tborder: 1px solid #49c24f;\n\tbackground: #bcffbf;\n  }\n  #captcha.error {\n  \tborder: 1px solid #c24949;\n\tbackground: #ffbcbc;\n  }\n </style>\n</head>\n\n<body>\n\n<h1><acronym title=\"Asynchronous JavaScript And XML\">AJAX</acronym> <acronym title=\"Completely Automated Public Turing test to tell Computers and Humans Apart\">CAPTCHA</acronym>, based on <a href=\"http://psyrens.com/captcha/\">http://psyrens.com/captcha/</a></h1>\n\n<form id=\"captchaform\" action=\"\">\n<fieldset>\n <div id=\"captchaimage\"><a href=\"<?php echo $_SERVER['PHP_SELF']; ?>\" id=\"refreshimg\" title=\"Click to refresh image\"><img src=\"images/image.php?<?php echo time(); ?>\" width=\"132\" height=\"46\" alt=\"Captcha image\" /></a></div>\n <label for=\"captcha\">Enter the characters as seen on the image above (case insensitive):</label>\n <input type=\"text\" maxlength=\"6\" name=\"captcha\" id=\"captcha\" />\n <input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Check\" />\n</fieldset>\n</form>\n\n<p>If you can&#39;t decipher the text on the image, click it to dynamically generate a new one.</p>\n\n</body>\n\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/newsession.php",
    "content": "<?php\n\n// Include the random string file\nrequire 'rand.php';\n\n// Begin a new session\nsession_start();\n\n// Set the session contents\n$_SESSION['captcha_id'] = $str;\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/process.php",
    "content": "<?php\n\n// Begin the session\nsession_start();\n\n// To avoid case conflicts, make the input uppercase and check against the session value\n// If it's correct, echo '1' as a string\nif(strtoupper($_GET['captcha']) == $_SESSION['captcha_id'])\n\techo 'true';\n// Else echo '0' as a string\nelse\n\techo 'false';\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/rand.php",
    "content": "<?php\n\n// Create a random string, leaving out 'o' to avoid confusion with '0'\n$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4));\n\n// Concatenate the random string onto the random numbers\n// The font 'Anorexia' doesn't have a character for '8', so the numbers will only go up to 7\n// '0' is left out to avoid confusion with 'O'\n$str = rand(1, 7) . rand(1, 7) . $char;\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/captcha/style.css",
    "content": "body {\n\tmargin: 3% 5%;\n\tpadding: 0;\n\tbackground-color: #fff;\n\tcolor: #333;\n\tfont: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif;\n}\n\na:link, a:visited {\n\tbackground-color: #fff;\n\tcolor: #333;\n\ttext-decoration: underline;\n}\n\na:hover, a:focus, a:active {\n\tbackground-color: #ffb;\n\tcolor: #454545;\n\ttext-decoration: underline;\n}\n\nh1 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.5em Helvetica, Arial, Verdana, Sans-serif;\n}\n\nh2 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.3em Helvetica, Arial, Verdana, Sans-serif;\n}\n\nh3 {\n\tmargin: 2% 0%;\n\tpadding: 1%;\n\tborder-bottom: 1px solid #ddd;\n\tbackground-color: #f8f8f8;\n\tcolor: #666;\n\tfont: normal 1.2em Helvetica, Arial, Verdana, Sans-serif;\n}\n\ntable {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n}\n\ntable th {\n\tborder: 1px solid #ddd;\n\tfont-weight: bold;\n\ttext-align: left;\n\tpadding: 1%;\n}\n\ntable td {\n\tborder: 1px solid #ddd;\n\tpadding: 1%;\n}\n\ndl, dt, dd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nform {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nfieldset {\n\tborder: 1px solid #ddd;\n\tmargin: 0% 0% 2% 0%;\n\tpadding: 2%;\n}\n\nfieldset legend {\n\tmargin: 0;\n\tpadding: 0 4px;\n\tbackground-color: inherit;\n\tcolor: #333;\n}\n\ncode {\n\tfont: 1em \"Courier New\", Courier, Monospace;\n}\n\npre code {\n\tfont: 1.1em \"Courier New\", Courier, Monospace;\n\tborder-bottom: 1px solid #eee;\n}\n\nimg {\n \tborder: 1px solid #eee;\n}\n\np#statusgreen {\n\tfont-size: 1.2em;\n\tbackground-color: #fff;\n\tcolor: #0a0;\n}\n\np#statusred {\n\tfont-size: 1.2em;\n\tbackground-color: #fff;\n\tcolor: #a00;\n}\n\nfieldset label {\n\tdisplay: block;\n}\n\nfieldset label.error {\n\tcolor: red;\t\n}\n\nfieldset label.valid {\n\tcolor: green;\n}\n\nfieldset div#captchaimage {\n\tfloat: left;\n\tmargin-right: 15px;\n}\n\nfieldset input#captcha {\n\twidth: 25%;\n\tborder: 1px solid #ddd;\n\tpadding: 2px;\n}\n\nfieldset input#submit {\n\tdisplay: block;\n\tmargin: 2% 0% 0% 0%;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/chili.css",
    "content": ".jscom, .mix htcom   { color: #4040c2; }\n.com      { color: green; }\n.regexp   { color: maroon; }\n.string   { color: teal; }\n.keywords { color: blue; }\n.global   { color: #008; }\n.numbers  { color: #880; }\n.comm     { color: green; }\n.tag      { color: blue; }\n.entity   { color: blue; }\n.string   { color: teal; }\n.aname    { color: maroon; }\n.avalue   { color: maroon; }\n.jquery   { color: #00a; }\n.plugin   { color: red; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxform.css",
    "content": "/**********************************\n\nName: cmxform Styles\n\n***********************************/\nform.cmxform {\n\twidth: 370px;\n\tfont-size: 1.0em;\n\tcolor: #333;\n}\n\nform.cmxform legend {\n\tpadding-left: 0;\n}\n\nform.cmxform legend, form.cmxform label {\n\tcolor: #333;\n}\n\nform.cmxform fieldset {\n\tborder: none;\n\tborder-top: 1px solid #C9DCA6;\n\tbackground: url(../images/cmxform-fieldset.gif) left bottom repeat-x;\n\tbackground-color: #F8FDEF;\n}\n\nform.cmxform fieldset fieldset {\n\tbackground: none;\n}\n\nform.cmxform fieldset p, form.cmxform fieldset fieldset {\n\tpadding: 5px 10px 7px;\n\tbackground: url(../images/cmxform-divider.gif) left bottom repeat-x;\n}\n\nform.cmxform label.error, label.error {\n\t/* remove the next line when you have trouble in IE6 with labels in list */\n\tcolor: red;\n\tfont-style: italic\n}\ndiv.error { display: none; }\ninput {\tborder: 1px solid black; }\ninput.checkbox { border: none }\ninput:focus { border: 1px dotted black; }\ninput.error { border: 1px dotted red; }\nform.cmxform .gray * { color: gray; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/cmxformTemplate.css",
    "content": "/**********************************\n\nUse: cmxform template\n\n***********************************/\nform.cmxform fieldset {\n\tmargin-bottom: 10px;\n}\n\nform.cmxform legend {\n\tpadding: 0 2px;\n\tfont-weight: bold;\n\t_margin: 0 -7px; /* IE Win */\n}\n\nform.cmxform label {\n\tdisplay: inline-block;\n\tline-height: 1.8;\n\tvertical-align: top;\n\tcursor: hand;\n}\n\nform.cmxform fieldset p {\n\tlist-style: none;\n\tpadding: 5px;\n\tmargin: 0;\n}\n\nform.cmxform fieldset fieldset {\n\tborder: none;\n\tmargin: 3px 0 0;\n}\n\nform.cmxform fieldset fieldset legend {\n\tpadding: 0 0 5px;\n\tfont-weight: normal;\n}\n\nform.cmxform fieldset fieldset label {\n\tdisplay: block;\n\twidth: auto;\n}\n\nform.cmxform label { width: 100px; } /* Width of labels */\nform.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */\nform.cmxform label.error {\n\tmargin-left: 103px;\n\twidth: 220px;\n}\n\nform.cmxform input.submit {\n\tmargin-left: 103px;\n}\n\n/*\\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/core.css",
    "content": "body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif }\nbody { margin: 0; padding: 0; font-size: small; color: #333 }\nh1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 }\nh1 { font-size: large }\n#main { padding: 1em; }\n#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc;\n    background: url(../images/bg.gif) repeat-x; text-align: center }\n#banner a { color: white; }\n\t\np { margin: 10px 0; }\n\nli { margin-left: 10px; }\n\nh3 { margin: 1em 0 0; }\n\nh1 { font-size: 2em; }\nh2 { font-size: 1.8em; }\nh3 { font-size: 1.6em; }\nh4 { font-size: 1.4em; }\nh5 { font-size: 1.2em; }\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/reset.css",
    "content": "/**********************************\n\nUse: Reset Styles for all browsers\n\n***********************************/\n\t\nbody, p, blockquote {\n\tmargin: 0;\n\tpadding: 0;\n}\n\na img, iframe { border: none; }\n\t\n/* Headers\n------------------------------*/\n\nh1, h2, h3, h4, h5, h6 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-size: 100%;\n}\n\t\n/* Lists\n------------------------------*/\n\t\nul, ol, dl, li, dt, dd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\t\n/* Links\n------------------------------*/\n\na, a:link {}\na:visited {}\na:hover {}\na:active {}\n\n/* Forms\n------------------------------*/\n\nform, fieldset {\n\tmargin: 0;\n\tpadding: 0;\n}\n\t\nfieldset { border: 1px solid #000; }\n\nlegend {\n\tpadding: 0;\n\tcolor: #000;\n}\n\ninput, textarea, select {\n\tmargin: 0;\n\tpadding: 1px;\n\tfont-size: 100%;\n\tfont-family: inherit;\n}\n\t\nselect { padding: 0; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/css/screen.css",
    "content": "/**********************************\n\nUse: Main Screen Import\n\n***********************************/\n\n@import \"reset.css\";\n@import \"core.css\";\n\n@import \"cmxformTemplate.css\";\n@import \"cmxform.css\";"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-messages-metadata-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - comment form example</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"#commentForm\").validate({meta: \"validate\"});\n\t$(\"#commentForm2\").validate();\n\t$(\"#commentForm3\").validate({\n\t\tmessages: {\n\t\t\temail: {\n\t\t\t\trequired: 'Enter this!'\n\t\t\t}\n\t\t}\t\t\n\t});\n\n});\n</script>\n\n<style type=\"text/css\">\nform { width: 500px; }\nform label { width: 250px; }\nform label.error, \nform input.submit { margin-left: 253px; }\n</style>\n\n</head>\n<body>\n\t\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<p>Take a look at the source to see how messages can be customized with metadata.</p>\t\n\n<!-- Custom messages with custom \"meta\" setting -->\n<form class=\"cmxform\" id=\"commentForm\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{validate:{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n<!-- Custom messages with default \"meta\" setting -->\n<form class=\"cmxform\" id=\"commentForm2\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n<!-- Custom message for \"required\" in metadata is overriden by a validate option -->\n<form class=\"cmxform\" id=\"commentForm3\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please enter your email address</legend>\n\t\t<p>\n\n\t\t\t<label for=\"cemail\">E-Mail *</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true, email:true, messages:{email:'Please enter a valid email address'}}\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<a href=\"index.html\">Back to main page</a>\n\n<script src=\"http://www.google-analytics.com/urchin.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\">_uacct = \"UA-2623402-1\";urchinTracker();</script>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/custom-methods-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\t// extend the current rules with new groovy ones\n\t\n\t// this one requires the text \"buga\", we define a default message, too\n\t$.validator.addMethod(\"buga\", function(value) {\n\t\treturn value == \"buga\";\n\t}, 'Please enter \"buga\"!');\n\t\n\t// this one requires the value to be the same as the first parameter\n\t$.validator.methods.equal = function(value, element, param) {\n\t\treturn value == param;\n\t};\n\t\n\t$().ready(function() {\n\t\tvar validator = $(\"#texttests\").bind(\"invalid-form.validate\", function() {\n\t\t\t$(\"#summary\").html(\"Your form contains \" + validator.numberOfInvalids() + \" errors, see details below.\");\n\t\t}).validate({\n\t\t\tdebug: true,\n\t\t\terrorElement: \"em\",\n\t\t\terrorContainer: $(\"#warning, #summary\"),\n\t\t\terrorPlacement: function(error, element) {\n\t\t\t\terror.appendTo( element.parent(\"td\").next(\"td\") );\n\t\t\t},\n\t\t\tsuccess: function(label) {\n\t\t\t\tlabel.text(\"ok!\").addClass(\"success\");\n\t\t\t},\n\t\t\trules: {\n\t\t\t\tnumber: {\n\t\t\t\t\trequired:true,\n\t\t\t\t\tminlength:3,\n\t\t\t\t\tmaxlength:15,\n\t\t\t\t\tnumber:true\t\n\t\t\t\t},\n\t\t\t\tsecret: \"buga\",\n\t\t\t\tmath: {\n\t\t\t\t\tequal: 11\t\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 50em; }\nem.error {\n  background:url(\"images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\nem.success {\n  background:url(\"images/checked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\n\nform.cmxform label.error {\n\tmargin-left: auto;\n\twidth: 250px;\n}\nem.error { color: black; }\n#warning { display: none; }\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form class=\"cmxform\" id=\"texttests\" method=\"get\" action=\"foo.html\">\n\t<h2 id=\"summary\"></h2>\n\n\t<fieldset>\n\t\t<legend>Example with custom methods and heavily customized error display</legend>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"number\">textarea</label></td>\n\t\t\t\t<td><input id=\"number\" name=\"number\"\n\t\t\t\t\ttitle=\"Please enter a number with at least 3 and max 15 characters!\" />\n\t\t\t\t</td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"secret\">Secret</label></td>\n\t\t\t\t<td><input name=\"secret\" id=\"secret\" /></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td><label for=\"math\">7 + 4 = </label></td>\n\t\t\t\t<td><input id=\"math\" name=\"math\" title=\"Please enter the correct result!\" /></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t</fieldset>\n</form>\n\n<h3 id=\"warning\">Your form contains tons of errors! Please try again.</h3>\n\n<p><a href=\"index.html\">Back to main page</a></p>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/dynamic-totals.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - dynamic forms demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted!\");\n\t}\n});\n$.validator.messages.max = jQuery.format(\"Your totals musn't exceed {0}!\");\n\n$.validator.addMethod(\"quantity\", function(value, element) {\n\treturn !this.optional(element) && !this.optional($(element).parent().prev().children(\"select\")[0]);\n}, \"Please select both the item and its amount.\");\n\n$().ready(function() {\n\t$(\"#orderform\").validate({\n\t\terrorPlacement: function(error, element) {\n\t\t\terror.appendTo( element.parent().next() );\n\t\t},\n\t\thighlight: function(element, errorClass) {\n\t\t\t$(element).addClass(errorClass).parent().prev().children(\"select\").addClass(errorClass);\n\t\t}\n\t});\n\t\n\tvar template = jQuery.format($(\"#template\").val());\n\tfunction addRow() {\n\t\t$(template(i++)).appendTo(\"#orderitems tbody\");\n\t}\n\t\n\tvar i = 1;\n\t// start with one row\n\taddRow();\n\t// add more rows on click\n\t$(\"#add\").click(addRow);\n\t\n\t// check keyup on quantity inputs to update totals field\n\t$(\"#orderform\").validateDelegate(\"input.quantity\", \"keyup\", function(event) {\n\t\tvar totals = 0;\n\t\t$(\"#orderitems input.quantity\").each(function() {\n\t\t\ttotals += +this.value;\n\t\t});\n\t\t$(\"#totals\").attr(\"value\", totals).valid();\n\t});\n\t\n});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 50em; }\nem.error {\n  background:url(\"images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\nem.success {\n  background:url(\"images/checked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n}\n\nform.cmxform label.error {\n\tmargin-left: auto;\n\twidth: 250px;\n}\nform.cmxform input.submit {\n\tmargin-left: 0;\n}\nem.error { color: black; }\n#warning { display: none; }\nselect.error {\n\tborder: 1px dotted red;\n}\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<textarea style=\"display:none\" id=\"template\">\n\t<tr>\n\t\t<td>\n\t\t\t<label>{0}. Item</label>\n\t\t</td>\n\t\t<td class='type'>\n\t\t\t<select name=\"item-type-{0}\">\n\t\t\t\t<option value=\"\">Select...</option>\n\t\t\t\t<option value=\"0\">Learning jQuery</option>\n\t\t\t\t<option value=\"1\">jQuery Reference Guide</option>\n\t\t\t\t<option value=\"2\">jQuery Cookbook</option>\n\t\t\t\t<option vlaue=\"3\">jQuery In Action</option>\n\t\t\t\t<option value=\"4\">jQuery For Designers</option>\n\t\t\t</select>\n\t\t</td>\n\t\t<td class='quantity'>\n\t\t\t<input size='4' class=\"quantity\" min=\"1\" id=\"item-quantity-{0}\" name=\"item-quantity-{0}\" />\n\t\t</td>\n\t\t<td class='quantity-error'></td>\n\t</tr>\n</textarea>\n\n<form id=\"orderform\" class=\"cmxform\" method=\"get\" action=\"foo.html\">\n\t<h2 id=\"summary\"></h2>\n\t\n\t<fieldset>\n\t\t<legend>Example with custom methods and heavily customized error display</legend>\n\t\t<table id=\"orderitems\">\n\t\t\t<tbody>\n\t\t\t\t\n\t\t\t</tbody>\n\t\t\t<tfoot>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\"><label>Totals (max 25)</label></td>\n\t\t\t\t\t<td class=\"totals\"><input id=\"totals\" name=\"totals\" value=\"0\" max=\"25\" readonly=\"readonly\" size='4' /></td>\n\t\t\t\t\t<td class=\"totals-error\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan=\"2\">&nbsp;</td>\n\t\t\t\t\t<td><input class=\"submit\" type=\"submit\" value=\"Submit\"/></td>\n\t\t\t\t</tr>\n\t\t\t</tfoot>\n\t\t</table>\n\t</fieldset>\n</form>\n\n<button id=\"add\">Add another input to the form</button>\n\n<h1 id=\"warning\">Your form contains tons of errors! Please try again.</h1>\n\n<p><a href=\"index.html\">Back to main page</a></p>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/errorcontainer-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<style type=\"text/css\">\n.cmxform fieldset p.error label { color: red; }\ndiv.container {\n\tbackground-color: #eee;\n\tborder: 1px solid red;\n\tmargin: 5px;\n\tpadding: 5px;\n}\ndiv.container ol li {\n\tlist-style-type: disc;\n\tmargin-left: 20px;\n}\ndiv.container { display: none }\n.container label.error {\n\tdisplay: inline;\n}\nform.cmxform { width: 30em; }\nform.cmxform label.error {\n\tdisplay: block;\n\tmargin-left: 1em;\n\twidth: auto;\n}\n</style>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted! (skipping validation for cancel button)\");\n\t}\n});\n\n$().ready(function() {\n\t$(\"#form1\").validate({\n\t\terrorLabelContainer: $(\"#form1 div.error\")\n\t});\n\t\n\tvar container = $('div.container');\n\t// validate the form when it is submitted\n\tvar validator = $(\"#form2\").validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: $(\"ol\", container),\n\t\twrapper: 'li',\n\t\tmeta: \"validate\"\n\t});\n\t\n\t$(\".cancel\").click(function() {\n\t\tvalidator.resetForm();\n\t});\n});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form method=\"get\" class=\"cmxform\" id=\"form1\" action=\"\">\n\t<fieldset>\n\t\t<legend>Login Form</legend>\n\t\t<p>\n\t\t\t<label>Username</label>\n\t\t\t<input name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"{required:true,minlength:3}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label>Password</label>\n\t\t\t<input type=\"password\" maxlength=\"12\" name=\"password\" title=\"Please enter your password, between 5 and 12 characters\" class=\"{required:true,minlength:5}\" />\n\t\t</p>\n\t\t<div class=\"error\">\n\t\t</div>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Login\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<!-- our error container -->\n<div class=\"container\">\n\t<h4>There are serious errors in your form submission, please see below for details.</h4>\n\t<ol>\n\t\t<li><label for=\"email\" class=\"error\">Please enter your email address</label></li>\n\t\t<li><label for=\"phone\" class=\"error\">Please enter your phone <b>number</b> (between 2 and 8 characters)</label></li>\n\t\t<li><label for=\"address\" class=\"error\">Please enter your address (at least 3 characters)</label></li>\n\t\t<li><label for=\"avatar\" class=\"error\">Please select an image (png, jpg, jpeg, gif)</label></li>\n\t\t<li><label for=\"cv\" class=\"error\">Please select a document (doc, docx, txt, pdf)</label></li>\n\t</ol>\n</div>\n\n<form class=\"cmxform\" id=\"form2\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" class=\"{validate:{required:true,email:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Favorite Color</label>\n\t\t\t<select id=\"color\" name=\"color\" title=\"Please select your favorite color!\" class=\"{validate:{required:true}}\">\n\t\t\t\t<option></option>\n\t\t\t\t<option>Red</option>\n\t\t\t\t<option>Blue</option>\n\t\t\t\t<option>Yellow</option>\n\t\t\t</select>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"phone\">Phone</label>\n\t\t\t<input id=\"phone\" name=\"phone\" class=\"some styles {validate:{required:true,number:true, rangelength:[2,8]}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"address\">Address</label>\n\t\t\t<input id=\"address\" name=\"address\" class=\"some other styles {validate:{required:true,minlength:3}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"avatar\">Avatar</label>\n\t\t\t<input type=\"file\" id=\"avatar\" name=\"avatar\" class=\"{validate:{required:true,accept:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" title=\"Please agree to our policy!\" name=\"agree\" class=\"{validate:{required:true}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cv\">CV</label>\n\t\t\t<input type=\"file\" id=\"cv\" name=\"cv\" class=\"{validate:{required:true,accept:'docx?|txt|pdf'}}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t\t<input class=\"cancel\" type=\"submit\" value=\"Cancel\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<div class=\"container\">\n\t<h4>There are serious errors in your form submission, please see details above the form!</h4>\n</div>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/file_input.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - comment form example</title>\n\n<link rel=\"stylesheet\" href=\"css/screen.css\" />\n<link rel=\"stylesheet\" href=\"css/cmxform.css\" />\n\n<script src=\"../lib/jquery.js\"></script>\n<script src=\"../jquery.validate.js\"></script>\n<script src=\"../additional-methods.js\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"#fileForm\").validate();\n});\n</script>\n\n</head>\n<body>\n\n<form class=\"cmxform\" id=\"fileForm\" method=\"post\" action=\"\">\n\t<fieldset>\n\t\t<legend>Select the indicated type of files?</legend>\n\t\t<p>\n\t\t\t<label for=\"file1\">Select a plain text file (e.g. *.txt)</label>\n\t\t\t<input type=\"file\" id=\"file1\" name=\"file1\" class=\"required\" accept=\"text/plain\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file2\">Select any image file</label>\n\t\t\t<input type=\"file\" id=\"file2\" name=\"file2\" class=\"required\" accept=\"image/*\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file3\">Select either a PDF or a EPS file</label>\n\t\t\t<input type=\"file\" id=\"file3\" name=\"file3\" class=\"required\" accept=\"image/x-eps,application/pdf\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file4\">Select any audio or image file</label>\n\t\t\t<input type=\"file\" id=\"file4\" name=\"file4\" class=\"required\" accept=\"image/*,audio/*\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"file5\">Select one or more plain text files (e.g. *.txt)</label>\n\t\t\t<input type=\"file\" id=\"file5\" name=\"file5\" class=\"required\" multiple accept=\"text/plain\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.php",
    "content": "<?php\n// wait a second to simulate a some latency\nusleep(500000);\n$user = $_REQUEST['user'];\n$pw = $_REQUEST['password'];\nif($user && $pw && $pw == \"foobar\")\n\techo \"Hi $user, welcome back.\";\nelse\n\techo \"Your password is wrong (must be foobar).\";\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/form.phps",
    "content": "<?php\n// wait a second to simulate a some latency\nusleep(500000);\n$user = $_REQUEST['user'];\n$pw = $_REQUEST['password'];\nif($user && $pw && $pw == \"foobar\")\n\techo \"Hi $user, welcome back.\";\nelse\n\techo \"Your password is wrong (must be foobar).\";\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/index.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - main demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery-1.7.2.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$.validator.setDefaults({\n\tsubmitHandler: function() { alert(\"submitted!\"); }\n});\n\n$().ready(function() {\n\t// validate the comment form when it is submitted\n\t$(\"#commentForm\").validate();\n\n\t// validate signup form on keyup and submit\n\t$(\"#signupForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n#signupForm { width: 670px; }\n#signupForm label.error {\n\tmargin-left: 10px;\n\twidth: auto;\n\tdisplay: inline;\n}\n#newsletter_topics label.error {\n\tdisplay: none;\n\tmargin-left: 103px;\n}\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<p>Default submitHandler is set to display an alert into of submitting the form</p>\n\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Please provide your name, email address (won't be published) and a comment</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" minlength=\"2\" type=\"text\" required />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" type=\"email\" name=\"email\" required />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" type=\"url\" name=\"url\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" required></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form class=\"cmxform\" id=\"signupForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"username\">Username</label>\n\t\t\t<input id=\"username\" name=\"username\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"password\">Password</label>\n\t\t\t<input id=\"password\" name=\"password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"confirm_password\">Confirm password</label>\n\t\t\t<input id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" type=\"email\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"newsletter\">I'd like to receive the newsletter</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n\t\t</p>\n\t\t<fieldset id=\"newsletter_topics\">\n\t\t\t<legend>Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>\n\t\t\t<label for=\"topic_marketflash\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_marketflash\" value=\"marketflash\" name=\"topic\" />\n\t\t\t\tMarketflash\n\t\t\t</label>\n\t\t\t<label for=\"topic_fuzz\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_fuzz\" value=\"fuzz\" name=\"topic\" />\n\t\t\t\tLatest fuzz\n\t\t\t</label>\n\t\t\t<label for=\"topic_digester\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_digester\" value=\"digester\" name=\"topic\" />\n\t\t\t\tMailing list digester\n\t\t\t</label>\n\t\t\t<label for=\"topic\" class=\"error\">Please select at least two topics you'd like to receive.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<h3>Syntetic examples</h3>\n<ul>\n\t<li><a href=\"errorcontainer-demo.html\">Error message containers in action</a></li>\n\t<li><a href=\"custom-messages-metadata-demo.html\">Custom Messages as Metadata</a></li>\n\t<li><a href=\"radio-checkbox-select-demo.html\">Radio and checkbox buttons and selects</a></li>\n\t<li><a href=\"ajaxSubmit-intergration-demo.html\">Integration with Form Plugin (AJAX submit)</a></li>\n\t<li><a href=\"custom-methods-demo.html\">Custom methods and message display.</a></li>\n\t<li><a href=\"dynamic-totals.html\">Dynamic forms</a></li>\n\t<li><a href=\"themerollered.html\">Forms styled with jQuery UI Themeroller</a></li>\n\t<li><a href=\"tinymce/\">TinyMCE Demo</a></li>\n\t<li><a href=\"file_input.html\">File inputs</a></li>\n\t<li><a href=\"jquerymobile.html\">jQuery Mobile Form Validation</a></li>\n</ul>\n<h3>Real-world examples</h3>\n<ul>\n\t<li><a href=\"milk/\">Remember The Milk signup form</a></li>\n\t<li><a href=\"marketo/\">Marketo signup form</a></li>\n\t<li><a href=\"multipart/\">Buy and Sell a House multipart form</a></li>\n\t<li><a href=\"captcha/\">Remote captcha validation</a></li>\n</ul>\n\n<h3>Testsuite</h3>\n<ul>\n\t<li><a href=\"../test/\">Validation Testsuite</a></li>\n</ul>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/jquerymobile.html",
    "content": "<!DOCTYPE html>\n<html>\n\t<head>\n\t<title>My Page</title>\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t<link rel=\"stylesheet\" href=\"http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css\" />\n\t<script src=\"http://code.jquery.com/jquery-1.7.1.min.js\"></script>\n\t<script src=\"http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js\"></script>\n\t<script src=\"../jquery.validate.js\"></script>\n\t<style>\n\t\tlabel.error {\n\t\t\t\tcolor: red;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tfont-weight: normal;\n\t\t\t\tline-height: 1.4;\n\t\t\t\tmargin-top: 0.5em;\n\t\t\t\twidth: 100%;\n\t\t\t\tfloat: none;\n\t\t}\n\n\t\t@media screen and (orientation: portrait){\n\t\t\t\tlabel.error { margin-left: 0; display: block; }\n\t\t}\n\n\t\t@media screen and (orientation: landscape){\n\t\t\t\tlabel.error { display: inline-block; margin-left: 22%; }\n\t\t}\n\n\t\tem { color: red; font-weight: bold; padding-right: .25em; }\n\t</style>\n</head>\n<body>\n\n\t<div id=\"page1\" data-role=\"page\">\n\n\t\t<div data-role=\"header\">\n\t\t\t<h1>Welcome</h1>\n\t\t</div>\n\n\t\t<div data-role=\"content\">\n\t\t\t<form method=\"GET\">\n\t\t\t\t<div data-role=\"fieldcontain\">\n\t\t\t\t\t<label for=\"email\">Email:</label>\n\t\t\t\t\t<input type=\"email\" name=\"email\" id=\"email\" />\n\t\t\t\t</div>\n\t\t\t\t<div data-role=\"fieldcontain\">\n\t\t\t\t\t<label for=\"password\">Password:</label>\n\t\t\t\t\t<input type=\"password\" name=\"password\" id=\"password\" />\n\t\t\t\t</div>\n\t\t\t\t<input data-role=\"submit\" type=\"submit\" value=\"Login\" />\n\t\t\t</form>\n\t\t</div>\n\n\t</div>\n\n\t<script>\n\t\t$('#page1').bind('pageinit', function(event) {\n\t\t\t$('form').validate({\n\t\t\t\trules: {\n\t\t\t\t\temail: {\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t},\n\t\t\t\t\tpassword: {\n\t\t\t\t\t\trequired: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t</script>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/js/chili-1.7.pack.js",
    "content": "eval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('8={3b:\"1.6\",2o:\"1B.1Y,1B.23,1B.2e\",2i:\"\",2H:1a,12:\"\",2C:1a,Z:\"\",2a:\\'<H V=\"$0\">$$</H>\\',R:\"&#F;\",1j:\"&#F;&#F;&#F;&#F;\",1f:\"&#F;<1W/>\",3c:5(){9 $(y).39(\"1k\")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3==\"1h\")?h.3:h.3.1w;k.1m({A:A,3:\"(\"+3+\")\",u:1+(3.c(/\\\\\\\\./g,\"%\").c(/\\\\[.*?\\\\]/g,\"%\").3a(/\\\\((?!\\\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i<k.u;i++){4 3=k[i].3;3=3.c(/\\\\\\\\\\\\\\\\|\\\\\\\\(\\\\d+)/g,5(m,1F){9!1F?m:\"\\\\\\\\\"+(1E+1+1t(1F))});1x.1m(3);1E+=k[i].u}4 1w=1x.3d(\"|\");9 x 1u(1w,(a.3g)?\"2j\":\"g\")}5 1S(o){9 o.c(/&/g,\"&3h;\").c(/</g,\"&3e;\")}5 1R(o){9 o.c(/ +/g,5(1X){9 1X.c(/ /g,R)})}5 G(o){o=1S(o);7(R){o=1R(o)}9 o}5 2m(2E){4 i=0;4 j=1;4 h;19(h=k[i++]){4 1b=D;7(1b[j]){4 1U=/(\\\\\\\\\\\\$)|(?:\\\\$\\\\$)|(?:\\\\$(\\\\d+))/g;4 z=h.z.c(1U,5(m,1V,K){4 3f=\\'\\';7(1V){9\"$\"}v 7(!K){9 G(1b[j])}v 7(K==\"0\"){9 h.A}v{9 G(1b[j+1t(K,10)])}});4 1A=D[D.u-2];4 2h=D[D.u-1];4 2G=2h.2v(11,1A);11=1A+2E.u;14+=G(2G)+z;9 z}v{j+=h.u}}}4 R=8.R;4 k=x 2A;Q(4 A 2r a.k){2I(A,a.k[A])}4 14=\"\";4 11=0;l.c(2z(),2m);4 2y=l.2v(11,l.u);14+=G(2y);9 14}5 2B(X){7(!8.N[X]){4 Y=\\'<Y 32=\"1p\" 33=\"p/2u\"\\'+\\' 30=\"\\'+X+\\'\">\\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$(\"2d\").1O($W)}v{$(\"2d\").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l=\"\";l=l.c(/\\\\r\\\\n?/g,\"\\\\n\");4 C=1J(l,a);7(8.1j){C=C.c(/\\\\t/g,8.1j)}7(8.1f){C=C.c(/\\\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+\".1d\",Z:8.Z,2w:q+\".2u\"};4 B;7(13&&1v 13==\"2l\")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:\"2l.15\"});4 2n=x 1u(\"\\\\\\\\b\"+8.2i+\"\\\\\\\\b\",\"2j\");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i(\"V\");7(!1n){9}4 q=$.3u(1n.c(2n,\"\"));7(\\'\\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$(\".\"+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t(\"a 3w Q: \"+q+\\'@\\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\\'\\'==p){9\"\"}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\\\<1W[^>]*?\\\\>/3y,16);4 e=J.1L(\\'<1k>\\');e.3l=p;p=e.3m.c(x 1u(16,\"g\"),\\'\\\\r\\\\n\\');9 p}4 T=\"\";4 18=1G;$(1e).3j().G(\"1k\").U(\"2c\",5(){18=y}).U(\"1M\",5(){7(18==y)T=J.1i.29().3k});$(\"3n\").U(\"3q\",5(){7(\\'\\'!=T){2p.3r.3o(\\'3p\\',22(T));2V.2R=1a}}).U(\"2c\",5(){T=\"\"}).U(\"1M\",5(){18=1G})}})})(1Z);8.I[\"1Y.1d\"]={k:{2M:{3:/\\\\/\\\\*[^*]*\\\\*+(?:[^\\\\/][^*]*\\\\*+)*\\\\//},25:{3:/\\\\<!--(?:.|\\\\n)*?--\\\\>/},2f:{3:/\\\\/\\\\/.*/},2P:{3:/2L|2T|2J|2O|2N|2X|2K|2Z|2U|2S|2W|2Y|2Q|51|c-50/},53:{3:/\\\\/[^\\\\/\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\/\\\\\\\\\\\\n]*)*\\\\/[52]*/},1h:{3:/(?:\\\\\\'[^\\\\\\'\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\\\\\n]*)*\\\\\\')|(?:\\\\\"[^\\\\\"\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\\\\\n]*)*\\\\\")/},27:{3:/\\\\b[+-]?(?:\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)(?:[1r][+-]?\\\\d+)?\\\\b/},4X:{3:/\\\\b(D|1N|1K|1I|2t|2s|4W|1z|v|1a|Q|5|7|2r|4Z|x|1G|9|1Q|y|1H|1D|1v|4|4Y|19|59)\\\\b/},1y:{3:/\\\\b(58|2k|2p|5b|5a|55|J|54|57|1t|56|4L|4K|4N|4M|4H|4G|4J)\\\\b/},1C:{3:/(?:\\\\<\\\\w+)|(?:\\\\>)|(?:\\\\<\\\\/\\\\w+\\\\>)|(?:\\\\/\\\\>)/},26:{3:/\\\\s+\\\\w+(?=\\\\s*=)/},20:{3:/([\\\\\"\\\\\\'])(?:(?:[^\\\\1\\\\\\\\\\\\r\\\\n]*?(?:\\\\1\\\\1|\\\\\\\\.))*[^\\\\1\\\\\\\\\\\\r\\\\n]*?)\\\\1/},21:{3:/&[\\\\w#]+?;/},4I:{3:/(\\\\$|1Z)/}}};8.I[\"23.1d\"]={k:{25:{3:/\\\\<!--(?:.|\\\\n)*?--\\\\>/},1h:{3:/(?:\\\\\\'[^\\\\\\'\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\\\\\n]*)*\\\\\\')|(?:\\\\\"[^\\\\\"\\\\\\\\\\\\n]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\\\\\n]*)*\\\\\")/},27:{3:/\\\\b[+-]?(?:\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)(?:[1r][+-]?\\\\d+)?\\\\b/},1C:{3:/(?:\\\\<\\\\w+)|(?:\\\\>)|(?:\\\\<\\\\/\\\\w+\\\\>)|(?:\\\\/\\\\>)/},26:{3:/\\\\s+\\\\w+(?=\\\\s*=)/},20:{3:/([\\\\\"\\\\\\'])(?:(?:[^\\\\1\\\\\\\\\\\\r\\\\n]*?(?:\\\\1\\\\1|\\\\\\\\.))*[^\\\\1\\\\\\\\\\\\r\\\\n]*?)\\\\1/},21:{3:/&[\\\\w#]+?;/}}};8.I[\"2e.1d\"]={k:{4S:{3:/\\\\/\\\\*[^*]*\\\\*+([^\\\\/][^*]*\\\\*+)*\\\\//},2f:{3:/(?:\\\\/\\\\/.*)|(?:[^\\\\\\\\]\\\\#.*)/},4V:{3:/\\\\\\'[^\\\\\\'\\\\\\\\]*(?:\\\\\\\\.[^\\\\\\'\\\\\\\\]*)*\\\\\\'/},4U:{3:/\\\\\"[^\\\\\"\\\\\\\\]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\]*)*\\\\\"/},4P:{3:/\\\\b(?:[4O][2b][1s][1s]|[4R][4Q][2b][1P]|[5c][5v][1s][5u][1P])\\\\b/},5x:{3:/\\\\b[+-]?(\\\\d*\\\\.?\\\\d+|\\\\d+\\\\.?\\\\d*)([1r][+-]?\\\\d+)?\\\\b/},5y:{3:/\\\\b(?:5z|5w(?:5A|5E(?:5F(?:17|1c)|5G(?:17|1c))|17|1T|5B|5C|5D(?:17|1T|1c)|1c)|P(?:5h(?:5k|5j)|5e(?:5d|5g(?:5f|5l)|5r|E(?:5t|5s)|5n(?:5m|5p)|L(?:3X|3W)|O(?:S|3Y(?:3T|3S|3V))|3U|S(?:44|47|46)|41))|40)\\\\b/},1y:{3:/(?:\\\\$43|\\\\$42|\\\\$3R|\\\\$3G|\\\\$3F|\\\\$3I|\\\\$3H|\\\\$3C|\\\\$3B|\\\\$3D)\\\\b/},28:{3:/\\\\b(?:3O|3N|3P|3K|3J|3M|3L|48|4v|1N|1K|1I|4u|V|4x|4w|2t|4r|2s|4q|1z|4t|v|4s|4D|4C|4F|4E|4z|4y|4B|4A|4p|4d|2F|2F|4g|Q|4f|5|1y|7|4a|4m|4l|4o|4i|4k|x|4j|4h|4n|4b|4c|49|4e|3Q|3E|9|45|1Q|y|3Z|1D|5o|5q|4|19|5i)\\\\b/},2g:{3:/\\\\$(\\\\w+)/,z:\\'<H V=\"28\">$</H><H V=\"2g\">$1</H>\\'},1C:{3:/(?:\\\\<\\\\?[24][4T][24])|(?:\\\\<\\\\?)|(?:\\\\?\\\\>)/}}}',62,353,'|||exp|var|function||if|ChiliBook|return|recipe||replace||el|path||step|||steps|ingredients|||str|text|recipeName||||length|else||new|this|replacement|stepName|settings|dish|arguments||160|filter|span|recipes|document|||recipeLoaded|required|||for|replaceSpace||insidePRE|bind|class|domLink|stylesheetPath|link|stylesheetFolder||lastIndex|recipeFolder|options|perfect|chili|newline|ERROR|downPRE|while|false|aux|WARNING|js|codes|replaceNewLine|childNodes|string|selection|replaceTab|pre|settingsDef|push|elClass|getPath|stylesheet|makeDish|eE|Ll|parseInt|RegExp|typeof|source|exps|global|do|offset|code|tag|try|prevLength|aNum|null|true|catch|cook|case|createElement|mouseup|break|append|Ee|switch|replaceSpaces|escapeHTML|NOTICE|pattern|escaped|br|spaces|mix|jQuery|avalue|entity|preformatted|xml|Pp|htcom|aname|numbers|keyword|createRange|defaultReplacement|Uu|mousedown|head|php|com|variable|input|elementClass|gi|valueOf|object|chef|selectClass|elementPath|window|metaobjects|in|default|continue|css|substring|stylesheetFile|recipeFile|lastUnmatched|knowHow|Array|checkCSS|stylesheetLoading|each|matched|extends|unmatched|recipeLoading|prepareStep|unblockUI|ajaxSubmit|silverlight|jscom|unblock|block|plugin|clearFields|returnValue|fieldValue|blockUI|formSerialize|event|resetForm|ajaxForm|clearForm|fieldSerialize|href|browser|rel|type|msie|extend|selector|data|html|next|match|version|getPRE|join|lt|bit|ignoreCase|amp|attr|parents|htmlText|innerHTML|innerText|body|setData|Text|copy|clipboardData|recipeNotAvailable|alert|trim|getJSON|unavailable|indexOf|ig|recipePath|Date|_SESSION|_SERVER|php_errormsg|require_once|_GET|_FILES|_REQUEST|_POST|__METHOD__|__LINE__|and|abstract|__FILE__|__CLASS__|__FUNCTION__|require|_ENV|END|CONT|PREFIX|START|OCALSTATEDIR|IBDIR|UTPUT_HANDLER_|throw|__COMPILER_HALT_OFFSET__|VERSION|_COOKIE|GLOBALS|API|static|YSCONFDIR|HLIB_SUFFIX|array|protected|implements|print|private|exit|public|foreach|final|or|isset|old_function|list|include_once|include|php_user_filter|interface|exception|die|declare|elseif|echo|cfunction|as|const|clone|endswitch|endif|eval|endwhile|enddeclare|empty|endforeach|endfor|isNaN|NaN|jquery|Infinity|clearTimeout|setTimeout|clearInterval|setInterval|Nn|value|Rr|Tt|mlcom|Hh|string2|string1|delete|keywords|void|instanceof|content|taconite|gim|regexp|escape|constructor|parseFloat|unescape|toString|with|prototype|element|Ff|BINDIR|HP_|PATH|CONFIG_FILE_|EAR_|xor|INSTALL_DIR|EXTENSION_DIR|SCAN_DIR|MAX|INT_|unset|SIZE|use|DATADIR|XTENSION_DIR|OL|Ss|Aa|E_|number|const1|DEFAULT_INCLUDE_PATH|ALL|PARSE|STRICT|USER_|CO|MPILE_|RE_'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\t<title>Login Form with Email Password Link</title>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"screen.css\" />\n\t\n\t<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n\t<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n\n\t<script type=\"text/javascript\">\n\t\t\n\t$(function() {\n\t\t// highlight \n\t\tvar elements = $(\"input[type!='submit'], textarea, select\");\n\t\telements.focus(function(){\n\t\t\t$(this).parents('li').addClass('highlight');\n\t\t});\n\t\telements.blur(function(){\n\t\t\t$(this).parents('li').removeClass('highlight');\n\t\t});\n\t\t\n\t\t$(\"#forgotpassword\").click(function() {\n\t\t\t$(\"#password\").removeClass(\"required\");\n\t\t\t$(\"#login\").submit();\n\t\t\t$(\"#password\").addClass(\"required\");\n\t\t\treturn false;\n\t\t});\n\t\t\n\t\t$(\"#login\").validate()\n\t});\n\t</script>\n\t\n</head>\n<body>\n\t<div id=\"page\">\n\n\t\t<div id=\"header\">\n\t\t\t<h1>Login</h1>\n\t\t</div>\n\n\t\t<div id=\"content\">\n\t\t\t<p id=\"status\"></p>\n\t\t\t<form action=\"\" method=\"get\" id=\"login\">\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>User details</legend>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label for=\"email\"><span class=\"required\">Email address</span></label>\n\t\t\t\t\t\t\t<input id=\"email\" name=\"email\" class=\"text required email\" type=\"text\" />\n\t\t\t\t\t\t\t<label for=\"email\" class=\"error\">This must be a valid email address</label>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label for=\"password\"><span class=\"required\">Password</span></label>\n\t\t\t\t\t\t\t<input name=\"password\" type=\"password\" class=\"text required\" id=\"password\" minlength=\"4\" maxlength=\"20\" />\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<label class=\"centered info\"><a id=\"forgotpassword\" href=\"#\">Email my password...</a></label>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</fieldset>\n\t\t\t\t\n\t\t\t\t<fieldset class=\"submit\">\n\t\t\t\t\t<input type=\"submit\" class=\"button\" value=\"Login...\" />\n\t\t\t\t</fieldset>\n\t\t\t\t\n\t\t\t\t<div class=\"clear\"></div>\n\t\t\t</form>\n\t\t\t\n\t\t\t</div>\n\t</div>\n\t\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/login/screen.css",
    "content": "/*******************************************************************************\n********************************************************************************\n**\n* - GENERAL\n*\n* - PAGE CONTAINERS\n*\n* - HEADER\n*\n* - CONTENT\n**\n********************************************************************************\n ******************************************************************************/\n\n\n\n\n/* GENERAL ------------------------------------------------------------------ */\n\n\thtml\n\t\t{\n\t\theight: 100%;\n\t}\n\t\n\t/* Zero default margin & padding around common elements */\n\tbody, dd, dl, dt, form, h1, h2, h3, h4, h5, h6, ul, ol, li, p\n\t\t{\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t\t}\n\t\n\tbody\n\t\t{\n\t\theight: 100%;\n\t\tbackground-color: #333333;\n\t\tbackground-image: url(images/bg.gif);\n\t\tbackground-position: 0% 0;\n\t\tcolor: #000000;\n\t\tline-height: 1.5;\n\t\tfont-family: Arial, Helvetica, sans-serif;\n\t\tfont-size: 62.5%;\n\t\ttext-align: center;\n\t\toverflow:auto;\n\t\t}\n\t\n\ta:link\n\t\t{\n\t\tcolor: #003399;\n\t\t}\n\t\n\ta:visited\n\t\t{\n\t\tcolor: #B266B2;\n\t\t}\n\t\n\ta:hover\n\t\t{\n\t\ttext-decoration: none;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* PAGE CONTAINERS ---------------------------------------------------------- */\n\t\n\t#page\n\t\t{\n\t\twidth: 636px;\n\t\tw\\idth: 600px;\n\t\tmin-height: 100%;\n\t\tmargin: 17px auto;\n\t\tpadding: 0 18px;\n\t\tbackground-image: url(images/page.gif);\n\t\tbackground-repeat: repeat-y;\n\t\ttext-align: left;\n\t\t}\n\t\n\t* html #page\n\t\t{\n\t\theight: 100%;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* HEADER ------------------------------------------------------------------- */\n\t\n\t#header\n\t\t{\n\t\theight: 90px;\n\t\tbackground-color: #B2DD32;\n\t\tbackground-image: url(images/header1.jpg);\n\t\tbackground-repeat: repeat-x;\n\t\t}\n\t\n\th1\n\t\t{\n\t\tpadding: 0 35px;\n\t\tfont-size: 2.2em;\n\t\tfont-weight: normal;\n\t\tline-height: 82px;\n\t\t}\n\t\n\t\n\t\n\t\n\t/* CONTENT ------------------------------------------------------------------ */\n\t\n\t#content\n\t\t{\n\t\tpadding: 0 25px;\n\t\t}\n\t\n\tp\n\t\t{\n\t\tfont-size:1.1em;\n\t\tmargin-top: 1.5em;\n\t\t}\n\t\n\tform\n\t\t{\n\t\tmargin-top: 1.5em;\n\t\t}\n\t\n\t\n\n\t/*** MASTER FORM WIDTHS - CUSTOMIZE THIS TO CHANGE THE FORM LAYOUT ***/\n\n\t/*\n\tform width:\t\t550px\n\tleft column:\t190px / 180px + 10px padding\n\tmid column:\t\t200px\n\tright column:\t160px\n\t*/\n\n\tform{\n\t\twidth:550px !important;\n\t\t}\n\n\tfieldset.submit\n\t\t{\n\t\tpadding-left: 190px !important;\n\t\t}\n\n\tform label{\n\t\tpadding:0px 10px;\n\t\twidth: 160px;\n\t\t}\n\n\tform label.error,\n\tform input.submit\n\t\t{\n\t\tmargin-left:180px !important;\n\t\t}\t\t\n\n\tform fieldset fieldset label.error\n\t\t{\n\t\tmargin-left:0px !important;\n\t\twidth:200px !important;\n\t\t}\t\t\n\n\n\tform .centered{\n\t\tmargin-left:180px !important;\n\t\twidth:200px !important;\n\t\t}\n\t\n\tform .text, \n\tform .button,\n\tform .group,\n\tform .control,\n\tform .submit,\n\tform textarea,\n\tform select\n\t\t{\n\t\twidth: 200px !important;\n\t\t}\n\t\t\n\n\n\n/*** FIELDSETS AND LEGENDS ***/\n\n\tform{\n\t\twidth:550px;\n\t\tmargin-bottom:25px;\n\t\tclear:both;\n\t\t}\n\n\tform fieldset\n\t\t{\n\t\tmargin: 0 0 1.5em 0;\n\t\tpadding: 0 0 10px 0px;\n\t\t\n\t\tborder: 1px solid #BFBAB0;\n\t\t\n\t\tbackground-color: #F2EFE9;\n\t\tbackground-image: url(images/fieldset_gradient.jpg);\n\t\tbackground-repeat: repeat-x;\n\t\t\n\t\tbackground-color: #fff;\n\t\tbackground-image: url(images/fieldset-gradient-02.jpg);\n\t\tbackground-position:bottom;\n\t\t\n\t\tfloat: left;\n\t\tclear: both;\n\t\twidth: 100%;\n\t\t\n\t\t}\n\t\n\tform fieldset.submit\n\t\t{\n\t\tpadding: 0px 10px 10px 190px;\n\t\tborder-style: none;\n\t\t\n\t\tbackground-color: transparent;\n\t\tbackground-image: none;\n\t\t\n\t\tfloat: none;\n\t\twidth: auto;\n\t\t\n\t\t}\n\t\n\tform legend\n\t\t{\n\t\tcolor: #000000;\n\t\t\n\t\tfont-size:1.3em;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\tmargin-left: 1em;\n\t\tpadding:0px 5px;\n\t\t}\n\t\t\n\tform fieldset p{\n \t\tmargin:10px 0px 0px 10px;\n \t\t}\n\t\n/*** FORM BLOCKS ***/\n\n\tform ul\n\t\t{\n\t\tpadding:5px 10px;\n\t\tlist-style: none;\n\t\t}\n\t\n\tform li\n\t\t{\n\t\twidth: 100%;\n\t\t\n\t\tpadding:5px 0px 10px 0;\n\t\tborder-top:1px dotted #ccc;\n\t\t\n\t\tdisplay:block;\n\t\tfloat: left;\n\t\tclear: left;\n\t}\n\t\n\tform li:first-child\n\t\t{\n\t\tborder:none;\n\t\t}\n\n\t\n/*** FORM BLOCK ELEMENTS ***/\n\n\tform label\n\t\t{\n\t\tpadding:0px 10px;\n\t\twidth: 160px;\n\t\tfloat: left;\n\t\t}\n\t\t\n\tform .error{\n\t\tcolor: #c00;\n\t\t}\n\t\t\n\tform label.error\n\t\t{\n\t\tcolor: #c00;\n\t\t\n\t\tfont-size: 100%;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\twidth:308px;\n\t\tdisplay: none;\n\n\t\tmargin:8px 0px 0px 180px;\n\t\tpadding:3px 0px 0px 5px;\n\t\tborder-top:1px dotted #ccc;\n\t\t\n\t\tclear:both;\n\t\t}\n\t\t\n\tform label.info{\n\t\tfont-size: 100%;\n\t\tfont-weight: bold;\n\t\tfont-variant:small-caps;\n\t\t\n\t\tmargin:8px 0px 0px 180px;\n\t\tpadding:3px 0px 0px 5px;\n\t\t}\n\n\tform fieldset fieldset,\n\tform .group\n\t\t{\n\t\twidth:200px;\n\t\t\n\t\tmargin: 0;\n\t\tborder:none;\n\t\t\n\t\tbackground:none;\n\t\t\n\t\tfloat:left;\n\t\tclear: none;\n\t\t\n\t\t}\n\t\t\n\tform fieldset fieldset label\n\t\t{\n\t\twidth:auto !important;\n\t\twhite-space:nowrap;\n\t\tpadding:0px;\n\t\tmargin:0px;\n\t\tdisplay:block;\n\t\tclear:both;\n\t\t}\n\t\t\n\tform label label.error{\n\t\tmargin-left:0px;\n\t\t}\n\n\tform label.centered{\n\t\tpadding:0px 0px;\n\t\twidth:200px !important;\n\t\t}\n\t\t\n\t/* see also the error class at the foot of the page */\n\t\n\tform fieldset fieldset label.spaced\n\t\t{\n\t\tmargin-bottom:3px;\n\t\t}\n\n/*** FORM ELEMENT COLUMNS ***/\n\n\t.col-1,\n\tfieldset fieldset.col-1 label\n\t\t{\n\t\twidth:100%;\n\t\t}\n\n\t.col-2,\n\tfieldset fieldset.col-2 label\n\t\t{\n\t\twidth:50%;\n\t\t}\n\n\t.col-3,\n\tfieldset fieldset.col-3 label\n\t\t{\n\t\twidth:33%;\n\t\t}\n\n\t.col-4,\n\tfieldset fieldset.col-4 label\n\t\t{\n\t\twidth:25%;\n\t\t}\n\n\n\n\n/*** FORM ELEMENTS ***/\n\n\tform input.submit{\n\t\tmargin:10px 0px 10px 180px;\n\t\tpadding:0px 2px;\n\t\t}\n\n\tform input, textarea, select, \n\tform label\n\t\t{\n\t\tfont-size:1.1em;\n\t\tline-height:1.6em;\n\t\t}\n\n\tform input, textarea, select\n\t\t{\n\t\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n\t\t}\n\n\tform .input[type=\"text\"],\n\tform textarea\n\t\t{\n\t\tpadding:1px;\n\t\t}\n\t\t\n\tform .input[type=\"radio\"],\n\tform .input[type=\"checkbox\"]\n\t\t{\n\t\tmargin:0px;\n\t\tpadding:0px;\n\t\tposition:relative;\n\t\ttop:3px;\n\t\t}\n\t\t\n/*** SUPPORTING CLASSES ***/\n\n\tform label.required{\n\t\tbackground-image:url(images/required_star.gif);\n\t\tbackground-position:right;\n\t\tbackground-repeat:no-repeat;\n\t\t}\n\t\n\tform span.required{\n\t\tpadding-right:15px;\n\t\t}\n\t\t\n\tform .clean\n\t\t{\n\t\tborder:none;\n\t\t}\n\t\t\n\tform .info{\n\t\tpadding-top:0.5em;\n\t\tfont-size:80%;\n\t\tline-height:100%;\n\t\tcolor:#aaa;\n\t\t}\n\t\t\n\tform .indent{\n \t\tpadding:2px 20px; \n\t\twidth:auto !important;\n\t\twhite-space:nowrap;\n\t\tpadding-left: 25px !important;\n \t\t}\n\t\t\n\tform label.disabled{\n\t\tcolor:#aaa;\n\t\t}\n\t\n\tform .highlight{\n\t\tbackground-color:#e2e2e2;\n\t\t}\n\t\n\t.off{\n\t\tdisplay:none !important;\n\t\t}\n\t\t\n\t.clear{\n\t\tclear:both;\n\t\t}\n\t\t"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['email']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/emails.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/ie6.css",
    "content": "img.png {\n    background-image: expression(\n        this.runtimeStyle.backgroundImage = \"none\",\n        this.runtimeStyle.filter = \"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='\" + this.src + \"', sizingMethod='image')\",\n        this.src = \"images/blank.gif\"\n    );\n}\n\n\n\n.hidden {\n  display:none\n}\n\n\n\ndiv.login { width: 120px;}\ndiv.nav-global LI,\ndiv.nav-global LI A {  display:inline !important;  zoom: 1;}\n\ndiv.nav-global LI A:hover,\ndiv.nav-left li a:hover {  text-decoration: none;}\n\ndiv.buttonSubmit {  height: 36px;}\n\ndiv.buttonSubmit input {  position: absolute;}\n\ndiv.offerHeader {margin-left: 3px;}\n\n#col-left {  height: 340px;}\n\nspan#cancellation {\n  position: relative;\n  top: 20px;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"title\" content=\"Subscription Signup | Marketo\" />\n<meta name=\"robots\" content=\"index, follow\" />\n<meta name=\"description\" content=\"Marketo Search Marketing application\" />\n<meta name=\"keywords\" content=\"Marketo, Search Marketing\" />\n<meta name=\"language\" content=\"en\" />\n<title>Subscription Signup | Marketo</title>\n\n<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\" src=\"jquery.maskedinput.js\"></script>\n<script type=\"text/javascript\" src=\"mktSignup.js\"></script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"stylesheet.css\" />\n</head>\n<body>\n<!--[if lte IE 6]>\n  <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"ie6.css\" />\n<![endif]-->\n\n<!-- start page wrapper --><div id=\"letterbox\">\n\n<!-- start header container -->\n<div id=\"header-background\">\n        <div class=\"nav-global-container\">\n\n                <div class=\"login\"><a href=\"#\"><span></span>Customer Login</a></div>\n                <div class=\"logo\"><a href=\"#\"><img src=\"images/logo_marketo.gif\" width=\"168\" height=\"73\"  alt=\"Marketo\" /></a></div>\n\t\t<div class=\"nav-global\">\n\t\t\t\t<ul>\n      \t\t<li><a href=\"#\" class=\"nav-g01\"><span></span>Home</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g02\"><span></span>Products</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g04\"><span></span>B2B Marketing Resources</a></li>\n\n    \t\t\t<li><a href=\"#\" class=\"nav-g05\"><span></span>About Marketo</a></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t</div>\n</div>\n<!-- end header container -->\n<div class=\"line-grey-tier\"></div>\n\n<!-- start page container 2 div-->\n<div id=\"page-container\" class=\"resize\"><div id=\"page-content-inner\" class=\"resize\">\n\n<!-- start col-main -->\n\n<div id=\"col-main\" class=\"resize\" style=\"\">\n\n\n\n  <!-- start main content  -->\n  <div class=\"main-content resize\">\n\n  <div class=\"action-container\" style=\"display:none;\"></div>\n\n\n<h1>Step 1 of 2 </h1>\n<p>\n</p>\n<br clear=\"all\" />\n<div>\n  <form id=\"profileForm\" type=\"actionForm\" action=\"step2.htm\" method=\"get\" >\n\n\n    <div class=\"error\" style=\"display:none;\">\n      <img src=\"images/warning.gif\" alt=\"Warning!\" width=\"24\" height=\"24\" style=\"float:left; margin: -5px 10px 0px 0px; \" />\n\n      <span></span>.<br clear=\"all\"/>\n    </div>\n\n\n    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td class=\"label\"><label for=\"co_name\">Company Name:</label></td>\n        <td class=\"field\">\n          <input id=\"co_name\" class=\"required\" maxlength=\"40\" name=\"co_name\" size=\"20\" type=\"text\" tabindex=\"1\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"co_url\">Company URL:</label></td>\n        <td class=\"field\">\n          <input id=\"co_url\" class=\"required defaultInvalid url\" maxlength=\"40\" name=\"co_url\" style=\"width:163px\" type=\"text\" tabindex=\"2\" value=\"http://\" />\n        </td>\n      </tr>\n      <tr>\n        <td/><td/>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"first_name\">First Name:</label></td>\n        <td class=\"field\">\n          <input id=\"first_name\" class=\"required\" maxlength=\"40\" name=\"first_name\" size=\"20\" type=\"text\" tabindex=\"3\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"last_name\">Last Name:</label></td>\n        <td class=\"field\">\n          <input id=\"last_name\" class=\"required\" maxlength=\"40\" name=\"last_name\" size=\"20\" type=\"text\" tabindex=\"4\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"address1\">Company Address:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" class=\"required\" name=\"address1\" size=\"20\" type=\"text\" tabindex=\"5\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" name=\"address2\" size=\"20\" type=\"text\" tabindex=\"6\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"city\">City:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"40\" class=\"required\" name=\"city\" size=\"20\" type=\"text\" tabindex=\"7\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"state\">State:</label></td>\n        <td class=\"field\">\n          <select id=\"state\" class=\"required\" name=\"state\" style=\"margin-left: 4px;\" tabindex=\"8\">\n            <option value=\"\">Choose State:</option>\n            <option value=\"AL\">Alabama</option><option value=\"AK\">Alaska</option><option value=\"AZ\">Arizona</option><option value=\"AR\">Arkansas</option><option value=\"CA\">California</option><option value=\"CO\">Colorado</option><option value=\"CT\">Connecticut</option><option value=\"DE\">Delaware</option><option value=\"FL\">Florida</option><option value=\"GA\">Georgia</option><option value=\"HI\">Hawaii</option><option value=\"ID\">Idaho</option><option value=\"IL\">Illinois</option><option value=\"IN\">Indiana</option><option value=\"IA\">Iowa</option><option value=\"KS\">Kansas</option><option value=\"KY\">Kentucky</option><option value=\"LA\">Louisiana</option><option value=\"ME\">Maine</option><option value=\"MD\">Maryland</option><option value=\"MA\">Massachusetts</option><option value=\"MI\">Michigan</option><option value=\"MN\">Minnesota</option><option value=\"MS\">Mississippi</option><option value=\"MO\">Missouri</option><option value=\"MT\">Montana</option><option value=\"NE\">Nebraska</option><option value=\"NV\">Nevada</option><option value=\"NH\">New Hampshire</option><option value=\"NJ\">New Jersey</option><option value=\"NM\">New Mexico</option><option value=\"NY\">New York</option><option value=\"NC\">North Carolina</option><option value=\"ND\">North Dakota</option><option value=\"OH\">Ohio</option><option value=\"OK\">Oklahoma</option><option value=\"OR\">Oregon</option><option value=\"PA\">Pennsylvania</option><option value=\"RI\">Rhode Island</option><option value=\"SC\">South Carolina</option><option value=\"SD\">South Dakota</option><option value=\"TN\">Tennessee</option><option value=\"TX\">Texas</option><option value=\"UT\">Utah</option><option value=\"VT\">Vermont</option><option value=\"VA\">Virginia</option><option value=\"WA\">Washington</option><option value=\"WV\">West Virginia</option><option value=\"WI\">Wisconsin</option><option value=\"WY\">Wyoming</option>\n          </select>\n        </td>\n      </tr>\n\n      <tr>\n        <td class=\"label\"><label for=\"zip\">Zip:</label></td>\n        <td class=\"field\">\n          <input  maxlength=\"10\" name=\"zip\" style=\"width: 100px\" type=\"text\" class=\"required zipcode\" tabindex=\"9\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"phone\">Phone:</label></td>\n        <td class=\"field\">\n          <input id=\"phone\" maxlength=\"14\" name=\"phone\" type=\"text\" class=\"required phone\" tabindex=\"10\" value=\"\" />\n        </td>\n      </tr>\n\n\n\n      <tr>\n        <td colspan=\"2\">\n          <h2 style=\"border-bottom: 1px solid #CCCCCC;\">Login Information</h2>\n        </td>\n      </tr>\n\n\n      <tr>\n        <td class=\"label\"><label for=\"email\">Email:</label></td>\n        <td class=\"field\">\n          <input id=\"email\" class=\"required email\" remote=\"emails.php\" maxlength=\"40\" name=\"email\" size=\"20\" type=\"text\" tabindex=\"11\" value=\"\" />\n        </td>\n      </tr>\n\n      <tr>\n        <td class=\"label\"><label for=\"password1\">Password:</label></td>\n        <td class=\"field\">\n        \t<input id=\"password1\" class=\"required password\" maxlength=\"40\" name=\"password1\" size=\"20\" type=\"password\" tabindex=\"12\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"password2\">Retype Password:</label></td>\n        <td class=\"field\">\n          <input id=\"password2\" class=\"required\" equalTo=\"#password1\" maxlength=\"40\" name=\"password2\"  size=\"20\" type=\"password\" tabindex=\"13\" value=\"\" />\n          <div class=\"formError\"></div>\n        </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td>\n          <div class=\"buttonSubmit\">\n            <span></span>\n            <input class=\"formButton\" type=\"submit\" value=\"Next\" style=\"width: 140px\" tabindex=\"14\" />\n          </div>\n\n        </td>\n      </tr>\n    </table><br /><br />\n  </form>\n  <br clear=\"all\"/>\n\n\n</div>\n\n\n\n\t</div>\t<!-- end main content  -->\n\t<br />\n</div> <!-- end col-main -->\n\n<!-- start left col -->\n<div id=\"col-left\" class=\"nav-left-back empty resize\" style=\"position: absolute; min-height: 450px;\">\n  <div class=\"col-left-header-tab\" style=\"position: absolute;\">Signup</div>\n  <div class=\"nav-left\">\n\n  </div>\n\n\n      <div class=\"left-nav-callout png\" style=\"top: 15px; margin-bottom: 100px;\">\n        <img src=\"images/left-nav-callout-long.png\"  class=\"png\" alt=\"\" />\n        <h6>Sign Up Process</h6>\n        <a style=\"background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Sign up with a valid credit card.</a>\n        <a style=\"background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Connect to your Google AdWords account.  You will need your AdWords Customer ID.</a>\n        <a style=\"background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Start your 30 day trial.  No payments until trial ends.</a>\n      </div>\n\n<div class=\"footerAddress\">\n<b>Marketo Inc.</b><br />\n1710 S. Amphlett Blvd.<br />\nSan Mateo, CA 94402 USA<br />\n</div>\n<br clear=\"all\"/>\n</div>\t<!-- end left col -->\n\n</div>  </div>  <!-- end page container 2 divs-->\n\n  <div id=\"footer-container\" align=\"center\">\n   <div class=\"footer\">\n    <ul>\n    <li><a href=\"..\">Home</a></li>\n    <li class=\"line-off\"><a href=\"step2.htm\">Second step</a></li>\n    </ul>\n    </div></div>\n\n\n\n<!-- end page wrapper -->\n</div>\n\n    </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/jquery.maskedinput.js",
    "content": "/*\n * Copyright (c) 2007 Josh Bush (digitalbush.com)\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE. \n */\n \n/*\n * Version: 1.1\n * Release: 2007-09-08\n */ \n(function($) {\n\t//Helper Functions for Caret positioning\n\tfunction getCaretPosition(ctl){\n\t\tvar res = {begin: 0, end: 0 };\n\t\tif (ctl.setSelectionRange){\n\t\t\tres.begin = ctl.selectionStart;\n\t\t\tres.end = ctl.selectionEnd;\n\t\t}else if (document.selection && document.selection.createRange){\n\t\t\tvar range = document.selection.createRange();\t\t\t\n\t\t\tres.begin = 0 - range.duplicate().moveStart('character', -100000);\n\t\t\tres.end = res.begin + range.text.length;\n\t\t}\n\t\treturn res;\n\t};\n\n\tfunction setCaretPosition(ctl, pos){\t\t\n\t\tif(ctl.setSelectionRange){\n\t\t\tctl.focus();\n\t\t\tctl.setSelectionRange(pos,pos);\n\t\t}else if (ctl.createTextRange){\n\t\t\tvar range = ctl.createTextRange();\n\t\t\trange.collapse(true);\n\t\t\trange.moveEnd('character', pos);\n\t\t\trange.moveStart('character', pos);\n\t\t\trange.select();\n\t\t}\n\t};\n\t\n\t//Predefined character definitions\n\tvar charMap={\n\t\t'9':\"[0-9]\",\n\t\t'a':\"[A-Za-z]\",\n\t\t'*':\"[A-Za-z0-9]\"\n\t};\n\t\n\t//Helper method to inject character definitions\n\t$.mask={\n\t\taddPlaceholder : function(c,r){\n\t\t\tcharMap[c]=r;\n\t\t}\n\t};\n\t\n\t$.fn.unmask=function(){\n\t\treturn this.trigger(\"unmask\");\n\t};\n\t\n\t//Main Method\n\t$.fn.mask = function(mask,settings) {\t\n\t\tsettings = $.extend({\n\t\t\tplaceholder: \"_\",\n\t\t\tcompleted: null\n\t\t}, settings);\n\t\t\t\n\t\t//Build Regex for format validation\n\t\tvar reString=\"^\";\t\n\t\tfor(var i=0;i<mask.length;i++)\n\t\t\treString+=(charMap[mask.charAt(i)] || (\"\\\\\"+mask.charAt(i)));\t\t\t\t\t\n\t\treString+=\"$\";\n\t\tvar re = new RegExp(reString);\n\n\t\treturn this.each(function(){\t\t\n\t\t\tvar input=$(this);\n\t\t\tvar buffer=new Array(mask.length);\n\t\t\tvar locked=new Array(mask.length);\t\t\n\n\t\t\t//Build buffer layout from mask\n\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\tlocked[i]=charMap[mask.charAt(i)]==null;\n\t\t\t\tbuffer[i]=locked[i]?mask.charAt(i):settings.placeholder;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/*Event Bindings*/\n\t\t\tfunction focusEvent(){\t\t\t\t\t\n\t\t\t\tcheckVal();\n\t\t\t\twriteBuffer();\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tsetCaretPosition(input[0],0);\n\t\t\t\t},0);\n\t\t\t};\t\t\t\n\t\t\tinput.bind(\"focus\",focusEvent);\n\n\t\t\tinput.bind(\"blur\",checkVal);\n\t\t\t\n\t\t\t//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson\n\t\t\tif ($.browser.msie) \n\t\t\t\tthis.onpaste= function(){setTimeout(checkVal,0);};                     \n\t\t\telse if ($.browser.mozilla)\n\t\t\t\tthis.addEventListener('input',checkVal,false);\n\t\t\t\n\t\t\tvar ignore=false;  //Variable for ignoring control keys\n\t\t\t\n\t\t\tfunction keydownEvent(e){\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tvar k = e.keyCode;\n\t\t\t\tignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));\n\t\t\t\t\n\t\t\t\t//delete selection before proceeding\n\t\t\t\tif((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){\n\t\t\t\t\tclearBuffer(pos.begin,pos.end);\n\t\t\t\t}\t\n\t\t\t\t//backspace and delete get special treatment\n\t\t\t\tif(k==8){//backspace\t\t\t\t\t\n\t\t\t\t\twhile(pos.begin-->=0){\n\t\t\t\t\t\tif(!locked[pos.begin]){\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuffer[pos.begin]=settings.placeholder;\n\t\t\t\t\t\t\tif($.browser.opera){\n\t\t\t\t\t\t\t\t//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\twriteBuffer(pos.begin);\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin+1);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\twriteBuffer();\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t}else if(k==46){//delete\n\t\t\t\t\tclearBuffer(pos.begin,pos.begin+1);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\treturn false;\n\t\t\t\t}else if (k==27){\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,0);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t};\n\t\t\tinput.bind(\"keydown\",keydownEvent);\n\n\t\t\tfunction keypressEvent(e){\t\t\t\t\t\n\t\t\t\tif(ignore){\n\t\t\t\t\tignore=false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\te=e||window.event;\n\t\t\t\tvar k=e.charCode||e.keyCode||e.which;\n\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\n\t\t\t\tvar caretPos=pos.begin;\t\n\t\t\t\t\n\t\t\t\tif(e.ctrlKey || e.altKey){//Ignore\n\t\t\t\t\treturn true;\n\t\t\t\t}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters\n\t\t\t\t\twhile(pos.begin<mask.length){\t\n\t\t\t\t\t\tvar reString=charMap[mask.charAt(pos.begin)];\n\t\t\t\t\t\tvar match;\n\t\t\t\t\t\tif(reString){\n\t\t\t\t\t\t\tvar reChar=new RegExp(reString);\n\t\t\t\t\t\t\tmatch=String.fromCharCode(k).match(reChar);\n\t\t\t\t\t\t}else{//we're on a mask char, go forward and try again\n\t\t\t\t\t\t\tpos.begin+=1;\n\t\t\t\t\t\t\tpos.end=pos.begin;\n\t\t\t\t\t\t\tcaretPos+=1;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(match)\n\t\t\t\t\t\t\tbuffer[pos.begin]=String.fromCharCode(k);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;//reject char\n\n\t\t\t\t\t\twhile(++caretPos<mask.length){//seek forward to next typable position\n\t\t\t\t\t\t\tif(!locked[caretPos])\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbreak;\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else\n\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\n\t\t\t\twriteBuffer();\n\t\t\t\tif(settings.completed && caretPos>=buffer.length)\n\t\t\t\t\tsettings.completed.call(input);\n\t\t\t\telse\n\t\t\t\t\tsetCaretPosition(this,caretPos);\n\t\t\t\t\n\t\t\t\treturn false;\t\t\t\t\n\t\t\t};\n\t\t\tinput.bind(\"keypress\",keypressEvent);\n\n\t\t\t/*Helper Methods*/\n\t\t\tfunction clearBuffer(start,end){\n\t\t\t\tfor(var i=start;i<end;i++){\n\t\t\t\t\tif(!locked[i])\n\t\t\t\t\t\tbuffer[i]=settings.placeholder;\n\t\t\t\t}\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tfunction writeBuffer(pos){\n\t\t\t\tvar s=\"\";\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\ts+=buffer[i];\n\t\t\t\t\tif(i==pos)\n\t\t\t\t\t\ts+=settings.placeholder;\n\t\t\t\t}\n\t\t\t\tinput.val(s);\n\t\t\t\treturn s;\n\t\t\t};\n\t\t\t\n\t\t\tfunction checkVal(){\t\n\t\t\t\t//try to place charcters where they belong\n\t\t\t\tvar test=input.val();\n\t\t\t\tvar pos=0;\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\tif(!locked[i]){\n\t\t\t\t\t\twhile(pos++<test.length){\n\t\t\t\t\t\t\t//Regex Test each char here.\n\t\t\t\t\t\t\tvar reChar=new RegExp(charMap[mask.charAt(i)]);\n\t\t\t\t\t\t\tif(test.charAt(pos-1).match(reChar)){\n\t\t\t\t\t\t\t\tbuffer[i]=test.charAt(pos-1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar s=writeBuffer();\n\t\t\t\tif(!s.match(re)){\t\t\t\t\t\t\t\n\t\t\t\t\tinput.val(\"\");\t\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t}\t\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tinput.one(\"unmask\",function(){\n\t\t\t\tinput.unbind(\"focus\",focusEvent);\n\t\t\t\tinput.unbind(\"blur\",checkVal);\n\t\t\t\tinput.unbind(\"keydown\",keydownEvent);\n\t\t\t\tinput.unbind(\"keypress\",keypressEvent);\n\t\t\t\tif ($.browser.msie) \n\t\t\t\t\tthis.onpaste= null;                     \n\t\t\t\telse if ($.browser.mozilla)\n\t\t\t\t\tthis.removeEventListener('input',checkVal,false);\n\t\t\t});\n\t\t\t\t\t\t\t\n\t\t});\n\t};\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/mktSignup.js",
    "content": " $(document).ready(function(){\n \t\n\tjQuery.validator.addMethod(\"password\", function( value, element ) {\n\t\tvar result = this.optional(element) || value.length >= 6 && /\\d/.test(value) && /[a-z]/i.test(value);\n\t\tif (!result) {\n\t\t\telement.value = \"\";\n\t\t\tvar validator = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tvalidator.blockFocusCleanup = true;\n\t\t\t\telement.focus();\n\t\t\t\tvalidator.blockFocusCleanup = false;\n\t\t\t}, 1);\n\t\t}\n\t\treturn result;\n\t}, \"Your password must be at least 6 characters long and contain at least one number and one character.\");\n\t\n\t// a custom method making the default value for companyurl (\"http://\") invalid, without displaying the \"invalid url\" message\n\tjQuery.validator.addMethod(\"defaultInvalid\", function(value, element) {\n\t\treturn value != element.defaultValue;\n\t}, \"\");\n\t\n\tjQuery.validator.addMethod(\"billingRequired\", function(value, element) {\n\t\tif ($(\"#bill_to_co\").is(\":checked\"))\n\t\t\treturn $(element).parents(\".subTable\").length;\n\t\treturn !this.optional(element);\n\t}, \"\");\n\t\n\tjQuery.validator.messages.required = \"\";\n\t$(\"form\").validate({\n\t\tinvalidHandler: function(e, validator) {\n\t\t\tvar errors = validator.numberOfInvalids();\n\t\t\tif (errors) {\n\t\t\t\tvar message = errors == 1\n\t\t\t\t\t? 'You missed 1 field. It has been highlighted below'\n\t\t\t\t\t: 'You missed ' + errors + ' fields.  They have been highlighted below';\n\t\t\t\t$(\"div.error span\").html(message);\n\t\t\t\t$(\"div.error\").show();\n\t\t\t} else {\n\t\t\t\t$(\"div.error\").hide();\n\t\t\t}\n\t\t},\n\t\tonkeyup: false,\n\t\tsubmitHandler: function() {\n\t\t\t$(\"div.error\").hide();\n\t\t\talert(\"submit! use link below to go to the other step\");\n\t\t},\n\t\tmessages: {\n\t\t\tpassword2: {\n\t\t\t\trequired: \" \",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\t\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: \" \",\n\t\t\t\temail: \"Please enter a valid email address, example: you@yourdomain.com\",\n\t\t\t\tremote: jQuery.validator.format(\"{0} is already taken, please enter a different address.\")\t\n\t\t\t}\n\t\t},\n\t\tdebug:true\n\t});\n\t\n  $(\".resize\").vjustify();\n  $(\"div.buttonSubmit\").hoverClass(\"buttonSubmitHover\");\n\n  if ($.browser.safari) {\n    $(\"body\").addClass(\"safari\");\n  }\n  \n  $(\"input.phone\").mask(\"(999) 999-9999\");\n  $(\"input.zipcode\").mask(\"99999\");\n  var creditcard = $(\"#creditcard\").mask(\"9999 9999 9999 9999\");\n\n  $(\"#cc_type\").change(\n    function() {\n      switch ($(this).val()){\n        case 'amex':\n          creditcard.unmask().mask(\"9999 999999 99999\");\n          break;\n        default:\n          creditcard.unmask().mask(\"9999 9999 9999 9999\");\n          break;\n      }\n    }\n  );\n\n  // toggle optional billing address\n  var subTableDiv = $(\"div.subTableDiv\");\n  var toggleCheck = $(\"input.toggleCheck\");\n  toggleCheck.is(\":checked\")\n  \t? subTableDiv.hide()\n\t: subTableDiv.show();\n  $(\"input.toggleCheck\").click(function() {\n      if (this.checked == true) {\n        subTableDiv.slideUp(\"medium\");\n        $(\"form\").valid();\n      } else {\n        subTableDiv.slideDown(\"medium\");\n      }\n  });\n\n\n});\n\n$.fn.vjustify = function() {\n    var maxHeight=0;\n    $(\".resize\").css(\"height\",\"auto\");\n    this.each(function(){\n        if (this.offsetHeight > maxHeight) {\n          maxHeight = this.offsetHeight;\n        }\n    });\n    this.each(function(){\n        $(this).height(maxHeight);\n        if (this.offsetHeight > maxHeight) {\n            $(this).height((maxHeight-(this.offsetHeight-maxHeight)));\n        }\n    });\n};\n\n$.fn.hoverClass = function(classname) {\n\treturn this.hover(function() {\n\t\t$(this).addClass(classname);\n\t}, function() {\n\t\t$(this).removeClass(classname);\n\t});\n};"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/step2.htm",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"title\" content=\"Subscription Signup | Marketo\" />\n<meta name=\"robots\" content=\"index, follow\" />\n<meta name=\"description\" content=\"Marketo Search Marketing application\" />\n<meta name=\"keywords\" content=\"Marketo, Search Marketing\" />\n<meta name=\"language\" content=\"en\" />\n<title>Subscription Signup | Marketo</title>\n\n<link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.ajaxQueue.js\" type=\"text/javascript\"></script>\n<script src=\"../../lib/jquery.delegate.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\" src=\"jquery.maskedinput.js\"></script>\n<script type=\"text/javascript\" src=\"mktSignup.js\"></script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"stylesheet.css\" />\n</head>\n<body>\n<!--[if lte IE 6]>\n  <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"ie6.css\" />\n<![endif]-->\n\n\n\n<!-- start page wrapper --><div id=\"letterbox\">\n\n<!-- start header container -->\n<div id=\"header-background\">\n        <div class=\"nav-global-container\">\n\n                <div class=\"login\"><a href=\"https://app.marketo.com\"><span></span>Customer Login</a></div>\n                <div class=\"logo\"><a href=\"#\"><img src=\"images/logo_marketo.gif\" width=\"168\" height=\"73\"  alt=\"Marketo\" /></a></div>\n\t\t<div class=\"nav-global\">\n\t\t\t\t<ul>\n      \t\t<li><a href=\"#\" class=\"nav-g01\"><span></span>Home</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g02\"><span></span>Products</a></li>\n    \t\t\t<li><a href=\"#\" class=\"nav-g04\"><span></span>B2B Marketing Resources</a></li>\n\n    \t\t\t<li><a href=\"#\" class=\"nav-g05\"><span></span>About Marketo</a></li>\n\t\t\t</ul>\n\t\t</div>\n\n\t</div>\n</div>\n<!-- end header container -->\n<div class=\"line-grey-tier\"></div>\n\n<!-- start page container 2 div-->\n<div id=\"page-container\" class=\"resize\"><div id=\"page-content-inner\" class=\"resize\">\n\n<!-- start col-main -->\n\n<div id=\"col-main\" class=\"resize\" style=\"\">\n\n\n\n  <!-- start main content  -->\n  <div class=\"main-content resize\">\n\n  <div class=\"action-container\" style=\"display:none;\"></div>\n\n\n<h1>Step 2 of 2</h1>\n<h2>Billing Information</h2>\n<p>\n</p>\n<br clear=\"all\" />\n<div>\n  <form id=\"billingForm\" action=\"\" method=\"get\" >\n\n    <div class=\"error\" style=\"display:none;\">\n      <img src=\"images/warning.gif\" alt=\"Warning!\" width=\"24\" height=\"24\" style=\"float:left; margin: -5px 10px 0px 0px; \" />\n\n      <span></span>.<br clear=\"all\" />\n    </div>\n    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td class=\"label\" style=\"vertical-align: top; padding-top: 8px;\">Billing Address:</td>\n        <td class=\"field\" style=\"font-weight: normal\">\n          <div class=\"billingAddressControl\">\n\n            <input type=\"checkbox\" id=\"bill_to_co\" name=\"bill_to_co\" class=\"toggleCheck\" checked=\"checked\" style=\"width: auto;\" tabindex=\"1\" />\n            <label for=\"bill_to_co\" style=\"cursor:pointer\">Same as Company Address</label>\n          </div>\n        </td>\n      </tr>\n      <tr class=\"subTable\">\n        <td colspan=\"2\">\n          <div style=\"background-color: #EEEEEE; border: 1px solid #CCCCCC; padding: 10px;\" class=\"subTableDiv\">\n            <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n              <tr>\n                <td class=\"label\"><label for=\"bill_first_name\">First Name:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_first_name\" size=\"20\" type=\"text\" tabindex=\"2\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_last_name\">Last Name:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_last_name\" size=\"20\" type=\"text\" tabindex=\"3\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_email\">Email:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired email\" remote=\"emails.php\" name=\"email\" size=\"20\" type=\"text\" tabindex=\"4\" value=\"\" />\n                  <div class=\"formError\"></div>\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_address1\">Address:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_address1\" size=\"20\" type=\"text\" tabindex=\"5\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" name=\"bill_address2\" size=\"20\" type=\"text\" tabindex=\"6\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_city\">City:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_city\" size=\"20\" type=\"text\" tabindex=\"7\" value=\"\" />\n                </td>\n              </tr>\n              <tr>\n                <td class=\"label\"><label for=\"bill_state\">State:</label></td>\n                <td class=\"field\">\n                  <select id=\"bill_state\" class=\"billingRequired\" name=\"bill_state\" style=\"margin-left: 4px;\" tabindex=\"8\">\n\t\t\t\t\t<option value=\"\">Choose State</option>\n                    <option value=\"AL\">Alabama</option><option value=\"AK\">Alaska</option><option value=\"AZ\">Arizona</option><option value=\"AR\">Arkansas</option><option value=\"CA\">California</option><option value=\"CO\">Colorado</option><option value=\"CT\">Connecticut</option><option value=\"DE\">Delaware</option><option value=\"FL\">Florida</option><option value=\"GA\">Georgia</option><option value=\"HI\">Hawaii</option><option value=\"ID\">Idaho</option><option value=\"IL\">Illinois</option><option value=\"IN\">Indiana</option><option value=\"IA\">Iowa</option><option value=\"KS\">Kansas</option><option value=\"KY\">Kentucky</option><option value=\"LA\">Louisiana</option><option value=\"ME\">Maine</option><option value=\"MD\">Maryland</option><option value=\"MA\">Massachusetts</option><option value=\"MI\">Michigan</option><option value=\"MN\">Minnesota</option><option value=\"MS\">Mississippi</option><option value=\"MO\">Missouri</option><option value=\"MT\">Montana</option><option value=\"NE\">Nebraska</option><option value=\"NV\">Nevada</option><option value=\"NH\">New Hampshire</option><option value=\"NJ\">New Jersey</option><option value=\"NM\">New Mexico</option><option value=\"NY\">New York</option><option value=\"NC\">North Carolina</option><option value=\"ND\">North Dakota</option><option value=\"OH\">Ohio</option><option value=\"OK\">Oklahoma</option><option value=\"OR\">Oregon</option><option value=\"PA\">Pennsylvania</option><option value=\"RI\">Rhode Island</option><option value=\"SC\">South Carolina</option><option value=\"SD\">South Dakota</option><option value=\"TN\">Tennessee</option><option value=\"TX\">Texas</option><option value=\"UT\">Utah</option><option value=\"VT\">Vermont</option><option value=\"VA\">Virginia</option><option value=\"WA\">Washington</option><option value=\"WV\">West Virginia</option><option value=\"WI\">Wisconsin</option><option value=\"WY\">Wyoming</option>\n                  </select>\n                </td>\n              </tr>\n\n              <tr>\n                <td class=\"label\"><label for=\"bill_zip\">Zip:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"10\" class=\"billingRequired zipcode\" name=\"bill_zip\"  style=\"width: 100px\" type=\"text\" class=\"zipcode\" tabindex=\"9\" value=\"\" />\n                </td>\n              </tr>\n\n              <tr>\n                <td class=\"label\"><label for=\"bill_phone\">Phone:</label></td>\n                <td class=\"field\">\n                  <input  maxlength=\"14\" class=\"billingRequired phone\" name=\"bill_phone\" style=\"width: 100px\" type=\"text\" class=\"phone\" tabindex=\"10\" value=\"\" />\n                </td>\n              </tr>\n            </table>\n          </div>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\">Credit Card Type:</td>\n        <td class=\"field\">\n          <select id=\"cc_type\" class=\"required\" name=\"cc_type\" class=\"creditCardType\" tabindex=\"11\">\n            <option value=\"\">Choose Credit Card</option>\n            <option value=\"amex\">American Express</option>\n            <option value=\"discover\">Discover</option>\n            <option value=\"mastercard\">MasterCard</option>\n            <option value=\"visa\">Visa</option>\n          </select>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\">Expiration:</td>\n        <td class=\"field\">\n          <select id=\"cc_exp_month\" name=\"cc_exp_month\" title=\"ExpirationMonth\" tabindex=\"12\">\n            <option value=\"01\">01 - Jan</option>\n            <option value=\"02\">02 - Feb</option>\n            <option value=\"03\">03 - Mar</option>\n            <option value=\"04\">04 - Apr</option>\n            <option value=\"05\">05 - May</option>\n            <option value=\"06\">06 - Jun</option>\n            <option value=\"07\">07 - Jul</option>\n            <option value=\"08\">08 - Aug</option>\n            <option value=\"09\">09 - Sep</option>\n            <option value=\"10\">10 - Oct</option>\n            <option value=\"11\">11 - Nov</option>\n            <option value=\"12\">12 - Dec</option>\n          </select>\n          <select id=\"cc_exp_year\" name=\"cc_exp_year\" title=\"ExpirationYear\" tabindex=\"13\">\n            <option value=\"2007\">2007</option>\n            <option value=\"2008\" selected=\"selected\">2008</option>\n            <option value=\"2009\">2009</option>\n            <option value=\"2010\">2010</option>\n            <option value=\"2011\">2011</option>\n            <option value=\"2012\">2012</option>\n            <option value=\"2013\">2013</option>\n            <option value=\"2014\">2014</option>\n            <option value=\"2015\">2015</option>\n            <option value=\"2016\">2016</option>\n          </select>\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"credit_card\">Credit Card Number:</label></td>\n        <td class=\"field\">\n          <input maxlength=\"40\" id=\"creditcard\" class=\"required\" name=\"credit_card\" size=\"20\" type=\"text\" tabindex=\"14\" />\n        </td>\n      </tr>\n      <tr>\n        <td class=\"label\"><label for=\"cc_cvv\">Security Code:</label></td>\n        <td class=\"field\">\n          <input id=\"ccNumber\" class=\"required\" maxlength=\"4\" name=\"cc_cvv\" style=\"width: 30px;\" type=\"text\" style=\"vertical-align: top;\" tabindex=\"16\" value=\"\" />\n        </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td>\n          <div class=\"buttonSubmit\">\n            <span></span>\n            <input class=\"formButton\" type=\"submit\" value=\"Finish\" style=\"width: 180px\" />\n          </div><br clear=\"all\"/>\n\n        </td>\n      </tr>\n    </table>\n  </form>\n  <br clear=\"all\" />\n\n</div>\n\n\n\n\t</div>\t<!-- end main content  -->\n\t<br />\n</div> <!-- end col-main -->\n\n<!-- start left col -->\n<div id=\"col-left\" class=\"nav-left-back empty resize\" style=\"position: absolute; min-height: 450px;\">\n  <div class=\"col-left-header-tab\" style=\"position: absolute;\">Signup</div>\n  <div class=\"nav-left\">\n\n\n  </div>\n\n\n      <div class=\"left-nav-callout png\" style=\"top: 15px; margin-bottom: 100px;\">\n        <img src=\"images/left-nav-callout-long.png\"  class=\"png\" alt=\"\" />\n        <h6>Sign Up Process</h6>\n        <a style=\"background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Sign up with a valid credit card.</a>\n        <a style=\"background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Connect to your Google AdWords account.  You will need your AdWords Customer ID.</a>\n\n        <a target=\"_blank\" style=\"background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;\">Start your 30 day trial.  No payments until trial ends.</a>\n      </div>\n\n<div class=\"footerAddress\">\n<b>Marketo Inc.</b><br />\n1710 S. Amphlett Blvd.<br />\nSan Mateo, CA 94402 USA<br />\n</div>\n<br clear=\"all\"/>\n</div>\t<!-- end left col -->\n\n</div>  </div>  <!-- end page container 2 divs-->\n\n  <div id=\"footer-container\" align=\"center\">\n   <div class=\"footer\">\n\t\t<ul>\n\t\t<li><a href=\"..\">Home</a></li>\n\t\t<li class=\"line-off\"><a href=\".\">Back to first step</a></li>\n\t\t</ul>\n\t\t</div></div>\n\n\n\n<!-- end page wrapper -->\n</div>\n\n\n<script src=\"http://www.google-analytics.com/urchin.js\" type=\"text/javascript\">\n</script>\n<script type=\"text/javascript\">\n_uacct = \"UA-2623402-1\";\nurchinTracker();\n</script>\n\n    </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/marketo/stylesheet.css",
    "content": ":-moz-any-link :focus {\n\toutline: none;\n}\n\n:focus {\n\t-moz-outline-style: none;\n\toutline: none;\n}\n\nbody {\n\tfont-size: 80%;\n\tmargin: 0;\n\tpadding: 0;\n\tfont-family: tahoma, geneva, sans-serif;\n\tbackground-color: #000000;\n}\n\na {\n\tcolor: #0653AB;\n\toutline: 0px;\n\ttext-decoration: none;\n}\n\na:hover {\n\toutline: 0px;\n\ttext-decoration: underline;\n}\n\nimg {\n\tborder: 0px;\n}\n\n/* s1.0 - Page Containers */\n#letterbox {\n\tmargin: 10px auto;\n\twidth: 883px;\n\tbackground-color: #364158;\n\tborder: 8px solid #D4D4D4;\n\tpadding: 1px 1px 10px 1px;\n}\n\n#header-background {\n\tbackground: url(images/back_nav_blue.gif) repeat-x;\n\tmargin: 0px auto;\n\tpadding: 0px;\n\theight: 73px;\n\twidth: 883px;\n\tborder-top: 4px solid #CCEAFE;\n\tborder-bottom: 4px solid #D4D4D4;\n}\n\n#page-container {\n\twidth: 866px;\n\tmargin: 0px auto;\n\tmargin-top: 33px; /* pad from top menu to actions buts*/\n\tmargin-bottom: -11px;\n\tpadding-top: 8px;\n\tpadding-bottom: 8px;\n\tbackground-color: #D4D4D4; /* light grey*/\n\tborder-right: 1px solid #464646;\n}\n\n#page-content-inner {\n\twidth: 849px;\n\tmargin: 0px auto;\n\tborder-top: 1px solid #9F9FA0;\n\tborder-left: 1px solid #A2A09A;\n\tbackground-color: #F4F1E9;\n\tposition: relative;\n}\n\n#page-content-inner #col-left {\n\twidth: 210px;\n\tfloat: left;\n\tbackground-color: #F4F1E9;\n}\n\n#page-content-inner #col-main {\n\twidth: 639px;\n\tbackground-color: #ffffff;\n\tposition: absolute;\n\tright: 0px;\n\ttop: 0px;\n}\n\n#footer-container {\n\twidth: 866px;\n\tposition: relative;\n\tleft: 8px;\n\tpadding: 2px 0px 10px 0px;\n\tbackground-color: #D4D4D4; /* light grey*/\n}\n\n/* s2.0 - Global navigation bar */\n.nav-global-container {\n\twidth: 880px;\n\tmargin: 0px auto;\n\tposition: relative;\n}\n\n* html .nav-global-container { /* ie6 fix*/\n\tmargin-bottom: -6px;\n}\n\n.login {\n\tposition: absolute;\n\tright: 20px;\n\ttext-align: center;\n}\n\n.login a,.login a span {\n\tdisplay: block;\n\theight: 18px;\n\tfont-size: 11px;\n\tbackground: url(images/login-sprite.gif) right -5px no-repeat;\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tpadding: 5px 10px 5px 10px;\n\tposition: relative;\n}\n\n.login a:hover {\n\tcolor: #000000;\n\ttext-decoration: underline;\n}\n\ndiv.login a span {\n\tbackground-position: left -105px;\n\twidth: 4px;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tpadding: 5px 0px 5px 0px;;\n}\n\ndiv.login a:hover span {\n\t\n}\n\n.logo {\n\tfloat: left;\n\tmargin: 0px 0px -5px 0px; /* neg marging for ie6 */\n}\n\n.logo img {\n\tborder: 0px;\n\tmargin-left: -1px;\n}\n\n.nav-global {\n\tfloat: left;\n\twidth: 645px;\n\tmargin: 40px 0px 0px 40px;\n\tbackground-color: transparent;\n}\n\n.nav-global ul {\n\tmargin: 0px;\n\tpadding: 0px;\n\tlist-style: none;\n}\n\n.nav-global li {\n\tfloat: left;\n\twhite-space: nowrap;\n}\n\ndiv.nav-global li a,div.nav-global li a span {\n\tbackground-image: url(images/tab-sprite.gif);\n\tbackground-position: right 100px;\n\tbackground-repeat: no-repeat;\n\theight: 32px;\n\tcolor: #666666;\n\ttext-decoration: none;\n\tfont: bold 16px 'trebuchet ms';\n\tmargin-right: 15px;\n\tdisplay: block;\n\tposition: relative;\n\tpadding: 7px 15px 0px 15px;\n}\n\ndiv.nav-global li a:hover {\n\tbackground-position: right 0px;\n\tcolor: #333333;\n}\n\ndiv.nav-global li a:hover span {\n\tbackground-position: left -100px;\n\tdisplay: block !important;\n}\n\ndiv.nav-global li a span {\n\tbackground-position: left 150px;\n\twidth: 4px;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\tpadding: 7px 0px 0px 0px;\n}\n\nbody.safari div.nav-global li a span {\n\tdisplay: none;\n}\n\ndiv.nav-global li a.on,div.nav-global li a.on:hover {\n\tbackground-position: right -55px;\n\tcolor: #FFFFFF;\n}\n\ndiv.nav-global li a.on span,div.nav-global li a.on:hover span {\n\tbackground-position: left -155px;\n\tdisplay: block !important;\n}\n\ndiv.action-container {\n\tposition: relative;\n\ttop: -45px;\n\tcursor: pointer;\n}\n\ndiv.action-icon-container {\n\tposition: absolute;\n\ttop: -17px;\n\tleft: -17px;\n\tz-index: 10;\n\twidth: 100px;\n\theight: 100px;\n\toverflow: hidden;\n}\n\ndiv.action-icon {\n\tborder: 0px;\n\tposition: absolute;\n\ttop: -0px;\n\tleft: 0px;\n}\n\ndiv.action-button-container {\n\theight: 106px;\n\twidth: 180px;\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tz-index: 5;\n}\n\nimg.action-icon {\n\tborder: 0px;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\tz-index: 0\n}\n\ndiv.action-text {\n\tz-index: 20;\n\tcolor: #FFFFFF;\n\tposition: absolute;\n\tleft: 40px;\n\ttop: 12px;\n\tfont: 14px tahoma, geneva;\n\tpadding-top: 30px;\n}\n\ndiv.bigbuttons {\n\ttop: -20px;\n}\n\ndiv.action-header {\n\tz-index: 21;\n\tposition: absolute;\n\tleft: 40px;\n\ttop: 10px;\n}\n\ndiv.action-header b {\n\tfont: bold 17px tahoma, geneva;\n\tdisplay: block;\n\tmargin-bottom: 10px;\n\tcolor: #0b2c89;\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\twidth: 130px;\n}\n\ndiv.action-header b.shadow {\n\ttop: 1px;\n\tleft: 1px;\n\tcolor: #d5d5d5;\n}\n\nimg.action-button {\n\tposition: relative;\n}\n\ndiv.hover img.action-button {\n\ttop: -131px;\n}\n\ndiv.on img.action-button {\n\ttop: -261px;\n}\n\n/* s3.0 - top of content Action Buttons */\n.action-buttons {\n\twidth: 100%; /* ie6 requires */\n}\n\n.action-buttons ul {\n\tposition: relative;\n\tpadding: 0px;\n}\n\n.action-buttons li {\n\tposition: relative; /* ie6 fix */\n\tfloat: left;\n\tlist-style: none;\n\ttext-align: center;\n\tline-height: 16px;\n\tmargin: -61px 0px 0px 0px;\n}\n\n.action-home li {\n\tmargin: -49px 0px 0px 0px;\n}\n\n.action-buttons  a {\n\tdisplay: block;\n\theight: 110px;\n\twidth: 175px;\n\tpadding: 14px 0px 0px 25px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n}\n\n.action-buttons li span {\n\tcolor: #053880;\n\tline-height: 47px;\n\tfont-size: 17px;\n}\n\ndiv.action-bottom {\n\tmargin: 15px 0px 10px 0px;\n\tfloat: left;\n}\n\ndiv.action-bottom a {\n\theight: 61px;\n\twidth: 178px;\n\tborder: 0px;\n\tbackground: url(images/action-bottom.gif) no-repeat 0px 0px;\n\tcolor: #0b2c89;\n\tfloat: left;\n\tposition: relative;\n\tfont: bold 17px tahoma, geneva;\n\ttext-decoration: none;\n\tmargin-right: 10px;\n}\n\ndiv.action-bottom a span {\n\tposition: absolute;\n\ttop: 15px;\n\tleft: 40px;\n}\n\ndiv.action-bottom a span.shadow {\n\ttop: 16px;\n\tleft: 41px;\n\tcolor: #d4d4d4;\n}\n\n.line-grey {\n\tbackground: url(images/line-grey.gif) 0 0 repeat-x;\n\theight: 2px;\n\tmargin: 8px 25px 20px 0;\n}\n\n/* s4.0 - Home Hero Area */\n.hero-background {\n\tposition: relative;\n\twidth: 880px;\n\tbackground: url(images/back_home-hero.jpg) 10px 0px no-repeat;\n\theight: 211px;\n\tmargin: -20px 0px 45px 0px;\n}\n\n.hero-text {\n\tfloat: right;\n\twidth: 626px;\n\tmargin-top: 26px;\n}\n\n.hero-text a { /* Sign Up Now Button */\n\tpadding: 5px 32px 0px 0px;\n\tfloat: right;\n}\n\n.hero-text h1 {\n\tfont-size: 2.3em;\n\tline-height: 1.2em;\n\tcolor: #333333;\n\tfont-family: Trebuchet MS;\n\tmargin: 12px 0px 10px 10px;\n}\n\n.hero-text h2 {\n\tmargin: 0px;\n\tfont-weight: normal;\n\tfont-size: 1.35em;\n\tmargin: 5px 0px 13px 10px\n}\n\n/* s4.1 - Home Left Header tab */\n.col-left-header-tab {\n\tposition: relative; /* ie6 fix */\n\tbackground: url(images/tab_green.gif) 0 0 no-repeat;\n\theight: 30px;\n\twidth: 166px;\n\ttext-align: center;\n\tcolor: #ffffff;\n\tfont: 20px 'trebuchet ms';\n\tpadding-top: 2px;\n\tmargin-top: -41px;\n\tmargin-left: 20px;\n\tline-height: 29px;\n\tmargin-bottom: 8px;\n\tdisplay: block;\n}\n\n.col-left-header-tab a {\n\tcolor: #FFFFFF;\n}\n\n.callout-green {\n\tbackground: url(images/back_green-fade.gif) 0 0 repeat-x;\n\tfont-size: 1.2em;\n\tpadding: 10px 15px 20px 13px;\n\tcolor: #303B52;\n\tline-height: 1.4em;\n}\n\n/* s4.2 - Home Left Quote */\n.callout-tan {\n\tcolor: #666666;\n}\n\n.callout-tan h1 {\n\tbackground: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y;\n\tfont-size: 1.1em;\n\ttext-align: center;\n\tmargin: 0px;\n\tpadding: 11px 5px 11px 2px;\n\tcolor: #333333;\n}\n\n.callout-tan p {\n\tmargin: 0px;\n\tmargin-top: 5px;\n\tline-height: 1.4em;\n\tpadding: 5px 10px 7px 13px;\n}\n\n.callout-tan p img {\n\tfloat: left;\n\tmargin: 5px 10px 5px 0px;\n}\n\n.callout-tan div {\n\ttext-align: left;\n\tpadding: 5px 10px 7px 0px;\n\tfont-weight: bold;\n}\n\n/* s4.3 - purple home boxes */\n.box-purple {\n\tbackground: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x;\n\tborder-left: 1px solid #ffffff;\n\tcolor: #333333;\n\twidth: 581px;\n\tpadding: 10px 15px 20px 15px;\n}\n\ndiv.box-purple a {\n\t\n}\n\n.box-purple h1 {\n\tfont-size: 1.5em;\n\tmargin: 10px 0px -15px 0px;\n}\n\n.box-purple li {\n\tmargin: 0px 0px 0px -23px;\n\tline-height: 1.6em;\n\tfont-size: 1em;\n}\n\n.box-purple  div {\n\tpadding: 0px 0px 0px 110px;\n}\n\n.icon-text01 {\n\tbackground-image: url(images/icon_search-engine-market.png);\n\tbackground-repeat: no-repeat;\n}\n\n* html .icon-text01 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_search-engine-market.png\",\n\t\tsizingMethod = \"crop\");\n}\n\n.icon-text02 {\n\tbackground: url(images/icon_landing-pages.png) 0 0 no-repeat;\n}\n\n* html .icon-text02 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_landing-pages.png\", sizingMethod =\n\t\t\"crop\");\n}\n\n.icon-text03 {\n\tbackground: url(images/icon_salesforce.png) 0 0 no-repeat;\n}\n\n* html .icon-text03 {\n\twidth: 460px; /* must have a width or heigh tag for ie6*/\n\tbackground-image: none;\n\tfilter: progid : DXImageTransform . Microsoft .\n\t\tAlphaImageLoader(src = \"images/icon_salesforce.png\", sizingMethod =\n\t\t\"crop\");\n}\n\n/* s4.4 - news home boxes */\n.callout-news {\n\tcolor: #555555;\n\tfloat: left;\n\twidth: 49%;\n\tmargin: 10px 1px 0px 0px;\n\tpadding-bottom: 20px;\n\ttext-align: left;\n}\n\n.line-news-r {\n\tborder-right: 1px solid #D4D4D4;\n}\n\n.callout-news h1 {\n\tbackground-color: #EEEEEE;\n\tfont-size: 1.2em;\n\tmargin: 0px;\n\tpadding: 11px 5px 11px 15px;\n\tcolor: #333333;\n}\n\n.callout-news p {\n\tmargin: 10px 0px 0px 10px;\n\tpadding: 0px 10px 7px 20px;\n\tbackground: url(images/news.gif) no-repeat left 1px;\n}\n\n.callout-news p a {\n\t\n}\n\n.callout-news ul {\n\tlist-style-type: none;\n\tpadding: 0;\n\tmargin: 10px 0 0 10px;\n}\n\n.callout-news li {\n\tbackground: url(images/icon_news.gif) no-repeat left 2px;\n\tpadding: 0px 5px 5px 20px;\n}\n\n.callout-news li a {\n\tdisplay: block;\n\tmargin-bottom: 5px;\n}\n\n.callout-news div {\n\ttext-align: right;\n}\n\n#scrollup {\n\tposition: relative;\n\toverflow: hidden;\n\theight: 440px;\n\twidth: 200px\n}\n\n.headline {\n\tposition: absolute;\n\ttop: 600px;\n\tleft: 5px;\n\theight: 585px;\n\twidth: 190px;\n\tfont: normal 12px tahoma, geneva !important;\n}\n\ndiv.more {\n\tmargin: 5px 0px 0px 0px;\n\tpadding: 0px 10px 0px 0px;\n\tletter-spacing: inherit;\n}\n\ndiv.more a {\n\tbackground: transparent url(images/arrow_r-blue.gif) no-repeat right 2px\n\t\t;\n\tfont-weight: bold;\n\tpadding: 0px 20px 0px 0px;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\ndiv.more a:hover {\n\ttext-decoration: underline;\n}\n\n/* sX.0 - Left Nav */\n.nav-left-back {\n\tbackground: url(images/back_nav_side.gif) 0 0 repeat-x;\n}\n\ndiv.empty {\n\tbackground: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x;\n}\n\ndiv.empty div.callout-green {\n\t\n}\n\n.nav-left {\n\tpadding-top: 12px;\n\t/*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/\n\twidth: 210px;\n}\n\n.nav-left ul {\n\tmargin: 0px;\n\tpadding: 0px;\n\tlist-style: none;\n}\n\n.nav-left li a {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tborder-top: 1px solid #B3D38D;\n\tborder-bottom: 1px solid #7CA84E;\n\tborder-left: 1px solid #97B973;\n\tpadding: 6px 0px 0px 20px;\n}\n\n.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover {\n\tcolor: #4C6F28;\n\tbackground-color: #F4F1E9;\n}\n\n.nav-left a.open {\n\tbackground-image: url(images/arrow_d-green.gif);\n\tbackground-repeat: no-repeat;\n\tbackground-position: 6px 11px;\n}\n\n.nav-left-header-tab {\n\tposition: relative; /* ie6 fix */\n\tbackground: url(images/tab_green.gif) 0 0 no-repeat;\n\theight: 32px;\n\twidth: 166px;\n\ttext-align: center;\n\tcolor: #ffffff;\n\tmargin: -41px 0px 0px 22px;\n\tline-height: 22px;\n\tmargin-bottom: 8px;\n\tdisplay: block;\n}\n\ndiv.empty div.nav-left-header-tab {\n\tbackground: url(images/tab_green2.gif) 0 0 no-repeat;\n}\n\n.nav-left a.active {\n\t/* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #F4F1E9;\n\tcolor: #4C6F28;\n\tborder-top: 1px solid #D1E5BB;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #DADADA;\n\tpadding: 6px 0px 0px 20px;\n}\n\n#nav-left-sub a {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #D6E8C4;\n\tcolor: #4C6F28;\n\tborder-top: 1px solid #D6E8C4;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #97B973;\n\tborder-right: 1px solid #8DBE5A;\n\tpadding: 6px 0px 0px 30px;\n}\n\n* html #nav-left-sub { /* ie6 fix */\n\tmargin-top: -1px;\n}\n\n*+html #nav-left-sub { /* ie7 fix */\n\tmargin-top: -1px;\n}\n\n#nav-left-sub a.active-page {\n\tdisplay: block;\n\theight: 24px;\n\ttext-decoration: none;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tbackground-color: #ffffff;\n\tcolor: #666666;\n\tborder-top: 0px solid #7CA84E;\n\tborder-bottom: 1px solid #B0CB95;\n\tborder-left: 1px solid #97B973;\n\tborder-right: 0px solid #8DBE5A;\n\tpadding: 6px 0px 0px 30px;\n\tcursor: default; /* turns off hand icon for link */\n}\n\n/* sX.0 -  Main Content */\n.main-content {\n\tcolor: #666666;\n\tposition: absolute;\n\tright: 20px;\n\tpadding-top: 20px;\n\twidth: 585px;\n\tpadding-bottom: 20px;\n}\n\ndiv.main-content div.main-content {\n\t\n}\n\n.main-content h1 {\n\tcolor: #5890D1;\n\tfont-size: 1.9em;\n\tfont-family: Trebuchet MS;\n\tborder-bottom: 1px solid #cccccc;\n\tmargin: 0px 10px 0px 0px;\n}\n\n.main-content h2 {\n\tcolor: #666666;\n\tfont-size: 1.3em;\n\tfont-weight: normal;\n\tmargin: 10px 10px 5px 0px;\n}\n\n.main-content p {\n\tmargin: 10px 10px 10px 0px;\n\tline-height: 1.55em;\n}\n\n/* sX.1 -  Main Content Sub Styles */\n.sub-grey {\n\tborder-top: 1px solid #D4D4D4;\n\tborder-bottom: 1px solid #D4D4D4;\n\tbackground-color: #F4F4F4;\n\tmargin: 10px 10px 0px 0px;\n\tpadding: 0px 10px 20px 15px;\n}\n\n.sub-white {\n\tmargin: 10px 10px 0px 0px;\n\tpadding: 0px 10px 20px 15px;\n}\n\nimg.screen-grab-r {\n\tmargin-right: -8px;\n\ttext-align: right;\n\tpadding: 0px 0px 0px 10px;\n}\n\ndiv.main-content a.screenshot {\n\tfloat: right;\n\tpadding: 10px 10px 0px 0px\n}\n\n.content-foot {\n\tborder-top: 1px solid #D4D4D4;\n\tfont-size: .9em;\n\tline-height: 1.45em;\n\tmargin: 10px 20px 0px 0px;\n\tpadding: 10px 10px 30px 0px;\n}\n\ndiv.main-content ul {\n\tposition: relative;\n\tleft: -25px;\n}\n\ndiv.main-content li {\n\tmargin-bottom: 5px;\n\tlist-style-type: disc\n}\n\ndiv.main-content li a {\n\tcolor: #6A6CB0;\n}\n\n/* sX.0 - Footer */\ndiv.footer {\n\tcolor: #666666;\n\tfont-size: .85em;\n\tfont-weight: normal;\n\theight: 18px;\n\tmargin: 0px auto;\n\tfont-family: Tahoma, Geneva, sans-serif;\n\tmargin-top: 10px;\n}\n\n.footer ul {\n\tlist-style-type: none;\n}\n\n.footer li {\n\tfloat: left;\n\tborder-right: 1px solid #666666;\n\tpadding: 0px 7px 0px 7px;\n\tmargin-top: 3px;\n}\n\n.footer a {\n\tcolor: #666666;\n\ttext-decoration: none;\n}\n\n.footer a:hover {\n\tcolor: #0653AB;\n\ttext-decoration: none;\n}\n\n.footer li.line-off {\n\tborder-right: 0px solid #ffffff;\n}\n\ndiv.footer strong {\n\tfont-weight: normal;\n}\n\n/* sX.0 - General Colors */\n.line-grey,.line-grey-tier {\n\tborder-top: 1px solid #A3A3A2;\n}\n\n.line-grey-tier {\n\tpadding-bottom: 25px;\n}\n\n.bottom {\n\theight: 10px;\n}\n\ndiv.p10bottom {\n\tpadding-bottom: 10px;\n}\n\n.clear {\n\tclear: both;\n}\n\ntable.grid {\n\tbackground: #EEEEEE;\n}\n\ntable.grid th {\n\tbackground-color: #F4F4F4;\n}\n\ntable.grid td {\n\tbackground-color: #FFFFFF;\n}\n\ndiv.buttonSubmit {\n\tposition: relative;\n}\n\ndiv.buttonSubmit input,div.buttonSubmit span {\n\theight: 36px;\n\tposition: relative;\n\tbackground-image: url(images/button-submit.gif);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right 0px;\n\tfloat: left;\n\tcolor: #FFFFFF;\n\tfont-weight: bold;\n\tpadding: 0px 15px 2px 15px;\n\tmargin: 20px 0px 20px 0px;\n\tborder: 0px;\n\tcursor: pointer;\n\tz-index: 5;\n}\n\ndiv.buttonSubmit input {\n\twidth: auto;\n}\n\ndiv.buttonSubmit span {\n\twidth: 4px;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\tbackground-position: left -36px;\n\tpadding: 0px 0px 0px 0px;\n\tz-index: 10;\n}\n\nbody.safari div.buttonSubmit span {\n\tdisplay: none\n}\n\ndiv.buttonSubmitHover input {\n\tbackground-position: right -72px;\n}\n\ndiv.buttonSubmitHover span {\n\tbackground-position: left -108px;\n}\n\na.demoLink {\n\tpadding: 1px 10px 0px 17px;\n\theight: 24px;\n\tbackground: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px;\n\tdisplay: block;\n\tfloat: left;\n}\n\ndiv.callout-tan a {\n\tbackground: none;\n\tcolor: #0653AB;\n\tmargin: auto;\n\tdisplay: block;\n}\n\ndiv.callout-tan a:hover {\n\tbackground: none;\n\tcolor: #0653AB;\n}\n\nlabel.error {\n\tdisplay: block;\n\tcolor: red;\n\tfont-style: italic;\n\tfont-weight: normal;\n}\n\ninput.error {\n\tborder: 2px solid red;\n}\n\np.demoBlock {\n\tborder-bottom: 1px solid #DDDDDD;\n\tpadding-bottom: 10px;\n}\n\ndiv.left-nav-callout {\n\theight: 200px;\n\twidth: 190px;\n\ttop: 55px;\n\tleft: 5px;\n\tposition: relative;\n\tpadding-left: 9px;\n\tpadding-top: 13px;\n}\n\ndiv.left-nav-callout img.png {\n\tposition: absolute;\n\tz-index: 0;\n\ttop: 0px;\n\tleft: 0px;\n}\n\ndiv.left-nav-callout h6 {\n\tfont: bold 14px tahoma, geneva;\n\tcolor: #333333;\n\theight: 36px;\n\tpadding-left: 5px;\n\tmargin: 0px;\n\tposition: relative;\n\tz-index: 10;\n}\n\ndiv.left-nav-callout a {\n\tbackground: url(images/monitor24.gif) no-repeat 0px center;\n\tpadding: 5px 0px 5px 30px;\n\tdisplay: block;\n\tfont: bold 12px tahoma, geneva;\n\tcolor: #336699;\n\tmargin-bottom: 5px;\n\tposition: relative;\n\tz-index: 10;\n\twidth: 140px;\n}\n\nform table td {\n\tpadding: 5px;\n}\n\nform table input {\n\twidth: 200px;\n\tpadding: 3px;\n\tmargin: 0px;\n}\n\ntextarea {\n\twidth: 400px\n}\n\ntd.label {\n\twidth: 150px;\n}\n\ntr.required td.label {\n\tfont-weight: bold;\n\tbackground: url(/images/forms/backRequiredGray.gif) no-repeat right\n\t\tcenter;\n}\n\ndiv.subTableDiv {\n\twidth: 500px;\n}\n\ndiv.subTableDiv td.label {\n\twidth: 135px;\n}\n\nul#homeBlog li div.description {\n\tdisplay: none;\n}\n\ntd.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select {\n\tborder: 2px solid red;\n\tbackground-color: #FFFFD5;\n\tmargin: 0px;\n\tcolor: red;\n}\n\ntr td.field div.formError {\n\tdisplay: none;\n\tcolor: #FF0000;\n}\n\ntr.errorRow td.field div.formError {\n\tdisplay: block;\n\tfont-weight: normal;\n}\n\ndiv.error {\n\tcolor: red;\n}\n\ndiv.error a {\n\tcolor: #336699;\n\tfont-size: 12px;\n\ttext-decoration: underline\n}\n\ndiv.tooltip {\n\tposition: absolute;\n\tleft: 30px;\n\tbottom: 0px;\n\tdisplay: none; /* in case javascript is disabled */\n\twidth: 170px;\n\tbackground-color: #F4F1E9;\n\tz-index: 100;\n\tpadding: 10px;\n\tborder: 1px solid #CCCCCC;\n}\n\ndiv.offerbox {\n\twidth: 125px;\n\tfloat: left;\n\tposition: relative;\n}\n\ndiv.offerbox h3 {\n\tfont: bold 17px tahoma, geneva;\n\tcolor: #333333;\n\theight: 55px;\n\tmargin: 0px auto;\n\ttext-align: center;\n}\n\ndiv.offerbox h4 {\n\theight: 100px;\n\tfont: normal 13px tahoma, geneva;\n\tmargin: 0px;\n}\n\ndiv.offerbox h5 {\n\tfont: bold 14px tahoma, geneva;\n\tmargin: 0px;\n\theight: 55px;\n}\n\ndiv.offerbox h5 small {\n\tfloat: left;\n\tfont-weight: normal;\n\tfont-size: 10px;\n}\n\ndiv.offerbox div.learnmore {\n\tpadding-left: 25px;\n}\n\ndiv#marketoEditions {\n\tbackground: url(images/buynowBack.gif) no-repeat;\n\twidth: 584px;\n\theight: 376px;\n\tfloat: left;\n\tposition: relative;\n\tmargin-bottom: 10px;\n}\n\ndiv.offerHeader {\n\tbackground: #0D8BBD;\n\tposition: absolute;\n\ttop: 20px;\n\twidth: 266px;\n\theight: 34px;\n\tborder: 1px solid #e1e4e2;\n}\n\ndiv.offerHeader span {\n\tfont: 20px 'trebuchet ms';\n\tcolor: #FFFFFF;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n}\n\ndiv.offerHeader span.shadow {\n\tfont: 20px 'trebuchet ms';\n\tcolor: #333333;\n\tposition: absolute;\n}\n\ndiv.offerbox div.buttonSubmit {\n\tmargin: 5px 0px 0px 10px;\n}\n\ndiv.footerAddress {\n\tposition: absolute;\n\tbottom: 30px;\n\tleft: 20px;\n\tcolor: #666666;\n\tfont-size: 11px;\n\tdisplay: none;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['email']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = '\"Thats already taken.\"';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/emails.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');\n$valid = 'true';\nforeach($emails as $email) {\n\tif( strtolower($email) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"milk.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/chili.css\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<style type=\"text/css\">\n\tpre { text-align: left; }\n</style>\n\n<script id=\"demo\" type=\"text/javascript\">\n$(document).ready(function() {\n\t// validate signup form on keyup and submit\n\tvar validator = $(\"#signupform\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2,\n\t\t\t\tremote: \"users.php\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tpassword_confirm: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true,\n\t\t\t\tremote: \"emails.php\"\n\t\t\t},\n\t\t\tdateformat: \"required\",\n\t\t\tterms: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Enter your firstname\",\n\t\t\tlastname: \"Enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Enter a username\",\n\t\t\t\tminlength: jQuery.format(\"Enter at least {0} characters\"),\n\t\t\t\tremote: jQuery.format(\"{0} is already in use\")\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Provide a password\",\n\t\t\t\trangelength: jQuery.format(\"Enter at least {0} characters\")\n\t\t\t},\n\t\t\tpassword_confirm: {\n\t\t\t\trequired: \"Repeat your password\",\n\t\t\t\tminlength: jQuery.format(\"Enter at least {0} characters\"),\n\t\t\t\tequalTo: \"Enter the same password as above\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: \"Please enter a valid email address\",\n\t\t\t\tminlength: \"Please enter a valid email address\",\n\t\t\t\tremote: jQuery.format(\"{0} is already in use\")\n\t\t\t},\n\t\t\tdateformat: \"Choose your preferred dateformat\",\n\t\t\tterms: \" \"\n\t\t},\n\t\t// the errorPlacement has to take the table layout into account\n\t\terrorPlacement: function(error, element) {\n\t\t\tif ( element.is(\":radio\") )\n\t\t\t\terror.appendTo( element.parent().next().next() );\n\t\t\telse if ( element.is(\":checkbox\") )\n\t\t\t\terror.appendTo ( element.next() );\n\t\t\telse\n\t\t\t\terror.appendTo( element.parent().next() );\n\t\t},\n\t\t// specifying a submitHandler prevents the default submit, good for the demo\n\t\tsubmitHandler: function() {\n\t\t\talert(\"submitted!\");\n\t\t},\n\t\t// set this class to error-labels to indicate valid fields\n\t\tsuccess: function(label) {\n\t\t\t// set &nbsp; as text for IE\n\t\t\tlabel.html(\"&nbsp;\").addClass(\"checked\");\n\t\t}\n\t});\n\t\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n});\n</script>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<div id=\"content\">\n\n<div id=\"header\">\n  <div id=\"headerlogo\"><img src=\"milk.png\" alt=\"Remember The Milk\" /></div>\n</div>\n<div style=\"clear: both;\"><div></div></div>\n\n\n<div class=\"content\">\n    <div id=\"signupbox\">\n       <div id=\"signuptab\">\n        <ul>\n          <li id=\"signupcurrent\"><a href=\" \">Signup</a></li>\n        </ul>\n      </div>\n      <div id=\"signupwrap\">\n      \t\t<form id=\"signupform\" autocomplete=\"off\" method=\"get\" action=\"\">\n\t  \t\t  <table>\n\t  \t\t  <tr>\n\t  \t\t  \t<td class=\"label\"><label id=\"lfirstname\" for=\"firstname\">First Name</label></td>\n\t  \t\t  \t<td class=\"field\"><input id=\"firstname\" name=\"firstname\" type=\"text\" value=\"\" maxlength=\"100\" /></td>\n\t  \t\t  \t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"llastname\" for=\"lastname\">Last Name</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"lastname\" name=\"lastname\" type=\"text\" value=\"\" maxlength=\"100\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lusername\" for=\"username\">Username</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"username\" name=\"username\" type=\"text\" value=\"\" maxlength=\"50\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lpassword\" for=\"password\">Password</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"password\" name=\"password\" type=\"password\" maxlength=\"50\" value=\"\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lpassword_confirm\" for=\"password_confirm\">Confirm Password</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"password_confirm\" name=\"password_confirm\" type=\"password\" maxlength=\"50\" value=\"\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lemail\" for=\"email\">Email Address</label></td>\n\t  \t\t\t<td class=\"field\"><input id=\"email\" name=\"email\" type=\"text\" value=\"\" maxlength=\"150\" /></td>\n\t  \t\t\t<td class=\"status\"></td>\n\t  \t\t  </tr>\n              \t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label>Which Looks Right</label></td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\" style=\"vertical-align: top; padding-top: 2px;\">\n\t  \t\t\t<table>\n\t  \t\t\t<tbody>\n\n\t  \t\t\t<tr>\n\t  \t\t\t\t<td style=\"padding-right: 5px;\">\n\t\t  \t\t\t\t<input id=\"dateformat_eu\" name=\"dateformat\" type=\"radio\" value=\"0\" />\n\t\t\t            <label id=\"ldateformat_eu\" for=\"dateformat_eu\">14/02/07</label>\n\t  \t\t\t\t</td>\n\t  \t\t\t\t<td style=\"padding-left: 5px;\">\n\t\t  \t\t\t\t<input id=\"dateformat_am\" name=\"dateformat\" type=\"radio\" value=\"1\"  />\n\t\t\t            <label id=\"ldateformat_am\" for=\"dateformat_am\">02/14/07</label>\n\t  \t\t\t\t</td>\n\t  \t\t\t\t<td>\n\t  \t\t\t\t</td>\n\t  \t\t\t</tr>\n\t  \t\t\t</tbody>\n\t  \t\t\t</table>\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\">&nbsp;</td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\">\n\t\t  \t\t\t<div id=\"termswrap\">\n\t\t\t  \t\t\t<input id=\"terms\" type=\"checkbox\" name=\"terms\" />\n\t\t\t            <label id=\"lterms\" for=\"terms\">I have read and accept the Terms of Use.</label>\n\t\t            </div> <!-- /termswrap -->\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\t  \t\t  <tr>\n\t  \t\t\t<td class=\"label\"><label id=\"lsignupsubmit\" for=\"signupsubmit\">Signup</label></td>\n\t  \t\t\t<td class=\"field\" colspan=\"2\">\n\t            <input id=\"signupsubmit\" name=\"signup\" type=\"submit\" value=\"Signup\" />\n\t  \t\t\t</td>\n\t  \t\t  </tr>\n\n\t  \t\t  </table>\n          </form>\n      </div>\n    </div>\n</div>\n\n</div>\n\n</div>\n\n\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n\t$(\"<a href='#'>Show script used on this page</a><br/>\").appendTo(\"body\").click(function() {\n\t\tscript.toggle();\n\t\treturn false;\n\t});\n\t$(\"<a href='#'>Show serverside script</a>\").appendTo(\"body\").click(function() {\n\t\t\tserverscript.toggle();\n\t\t\treturn false;\n\t\t});\n\tvar script = $(\"<code class='mix'>\").html( $(\"#demo\").html() ).wrap(\"<pre></pre>\").parent().hide().appendTo(\"body\");\n\tvar serverscript;\n\t$.get(\"users.phps\", function(response) {\n\t\tserverscript = $(\"<pre>\").hide().html( response ).appendTo(\"body\");\n\t})\n\t\n});\n</script>\n\n<script src=\"../js/chili-1.7.pack.js\" type=\"text/javascript\"></script>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/milk.css",
    "content": "/* GENERAL ELEMENTS */\n\n* { margin: 0; padding: 0; }\n\nbody, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; }\nbody { color: #333;  background-color: #fff; text-align: center; }\n\na:link { color:#0060BF; text-decoration: underline; }\na:visited { color:#0060BF; text-decoration: underline; }\na:active { color:#0060BF; text-decoration: underline; }\na:hover { color:#000000; text-decoration: underline; }\n\t\nh1, h2, h3, h4, h5, h6 { font-family: \"Lucida Grande\", \"Lucida Sans Unicode\", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; }\nh1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; }\nh2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; }\nh3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; }\nh4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; }\nh5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; }\nh6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; }\n\nimg { border: 0px; }\n\np { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; }\nli > p { margin-top: 0.2em; }\npre { font-family: monospace; font-size: 1.0em; }\nstrong, b { font-weight: bold; }\n\n/* PAGE ELEMENTS */\n\n/* Content */\n\n#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ }\n.content { margin-left: 4.5em; margin-right: 4.5em; }\n.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; }\n.content ol.terms li { margin-bottom: 1em; }\n\n/* Header */\n\n#header { padding-bottom: 10em; }\n#headerlogo { float: left; }\n#headerlogo img { width: 188px; height: 83px;  }\n#headernav { float: right; }\n\nlabel { font-weight: bold; }\n#reminders label { font-weight: normal; }\n\ntable.tabbedtable { padding-left: 3em; }\ntable.tabbedtable td { padding-bottom: 5px; }\ntable.tabbedtable label { text-align: right; padding-right: 9px; }\n.hiddenlabel { visibility: hidden; }\n.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; }\n.largelinkwrap { padding-top: 10px; padding-bottom: 10px; }\n\n\n\n#signuptab {\n  float:left;\n  width:100%;\n  background:#fff url(\"bg.gif\") repeat-x bottom;\n  font-size: 1.0em;\n  line-height: normal;\n}\n#signuptab ul {\n  margin:0;\n  padding: 0px 10px 0px 10px;\n  list-style:none;\n}\n#signuptab li {\n  float:left;\n  background:url(\"left_white.png\") no-repeat left top;\n  margin:0;\n  padding:0 3px 0 9px;\n  border-bottom:1px solid #CACACA;\n}\n#signuptab a {\n  float:left;\n  display:block;\n  width:.1em;\n  background:url(\"right_white.png\") no-repeat right top;\n  padding:2px 15px 0px 6px;\n  text-decoration:none;\n  font-weight:bold;\n  color:#fff;\n  white-space: nowrap;\n}\n#signuptab > ul a {width:auto;}\n/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n#signuptab a {float:none;}\n/* End IE5-Mac hack */\n#signuptab a:hover {\n  color:#333;\n}\n#signuptab #signupcurrent {\n  background-position:0 -150px;\n  border-width:0;\n}\n#signuptab #signupcurrent a {\n  background-position:100% -150px;\n  padding-bottom:1px;\n  color:#000;\n}\n#signuptab li:hover, #signuptab li:hover a {\n  background-position:0% -150px;\n  color:#000;\n}\n#signuptab li:hover a {\n  background-position:100% -150px;\n}\n\n/* Signup box */\n\n#signupbox {\n  width: 100%;\n  text-align: center;\n  margin: 0em auto;\n}\n\n#signupwrap {\n  border: 1px solid #CACACA;\n  border-top: 0;\n  text-align: left;\n  padding: 35px 10px 20px 30px;\n  clear: both;\n}\n\n/* Unsupported browsers */\n\n.orange_rbcontent { padding: 0.4em; }\n.orange_rbroundbox { width: 100%; }\n\n#unsupported {\n  font-weight: bold;\n  text-align: left;\n}\n\n/*#content {\n  padding-top: 15px;\n}*/\n\n/* Signup form */\n\n#signupform table {\n  border-spacing: 0px;\n  border-collapse: collapse;\n  empty-cells: show;\n}\n\n#signupform .label {\n  padding-top: 2px;\n  padding-right: 8px;\n  vertical-align: top;\n  text-align: right;\n  width: 125px;\n  white-space: nowrap;\n}\n\n#signupform .field {\n  padding-bottom: 10px;\n  white-space: nowrap;\n}\n\n#signupform .status {\n  padding-top: 2px;\n  padding-left: 8px;\n  vertical-align: top;\n  width: 246px;\n  white-space: nowrap;\n}\n\n#signupform .textfield {\n  width: 150px;\n}\n\n#signupform label.error {\n  background:url(\"../images/unchecked.gif\") no-repeat 0px 0px;\n  padding-left: 16px;\n  padding-bottom: 2px;\n  font-weight: bold;\n  color: #EA5200;\n}\n\n#signupform label.checked {\n  background:url(\"../images/checked.gif\") no-repeat 0px 0px;\n}\n\n#signupform .success_msg {\n  font-weight: bold;\n  color: #0060BF;\n  margin-left: 19px;\n}\n\n#signupform #dateformatStatus, #signupform #termsStatus {\n  margin-left: 6px;\n}\n\n#signupform #dateformat_eu {\n vertical-align: middle;\n}\n\n#signupform #ldateformat_eu {\n  font-weight: normal;\n  vertical-align: middle;\n}\n\n#signupform #dateformat_am {\n  vertical-align: middle;\n}\n\n#signupform #ldateformat_am {\n  font-weight: normal;\n  vertical-align: middle;\n}\n\n#signupform #termswrap {\n  float: left;\n}\n\n#signupform #terms {\n  vertical-align: middle;\n  float: left;\n  display: block;\n  margin-right: 5px;\n}\n\n#signupform #lterms {\n  font-weight: normal;\n  vertical-align: middle;\n  float: left;\n  display: block;\n  width: 350px;\n  white-space: normal;\n}\n\n#signupform #lsignupsubmit {\n  visibility: hidden;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.php",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['username']));\n//sleep(2);\nusleep(150000);\n$users = array('asdf', 'Peter', 'Peter2', 'George');\n$valid = 'true';\nforeach($users as $user) {\n\tif( strtolower($user) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/milk/users.phps",
    "content": "<?php\n$request = trim(strtolower($_REQUEST['value']));\n$users = array('asdf', 'Peter', 'Peter2', 'George');\n$valid = 'true';\nforeach($users as $user) {\n\tif( strtolower($user) == $request )\n\t\t$valid = 'false';\n}\necho $valid;\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n\n<title>jQuery accordion form with validation</title>\n\n<link rel=\"stylesheet\" href=\"../assets/demo_blue.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n<script type=\"text/javascript\" src=\"js/jquery.maskedinput-1.0.js\"></script>\n<script type=\"text/javascript\" src=\"js/ui.core.js\"></script>\n<script type=\"text/javascript\" src=\"js/ui.accordion.js\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function(){\n\n\t$(\"#recordClientPhone\").mask(\"(999) 999-9999\");\n\t$(\"#recordClientPhoneAlt\").mask(\"(999) 999-9999\");\n\t$(\"#recordClientZip\").mask(\"99999\");\n\t$(\"#recordPropertyZip\").mask(\"99999\");\t\n\t$(\"#recordPurchaseZip\").mask(\"99999\");\t\n\n\t// add * to required field labels\n\t$('label.required').append('&nbsp;<strong>*</strong>&nbsp;');\n\n\t// accordion functions\n\tvar accordion = $(\"#stepForm\").accordion(); \n\tvar current = 0;\n\t\n\t$.validator.addMethod(\"pageRequired\", function(value, element) {\n\t\tvar $element = $(element)\n\t\tfunction match(index) {\n\t\t\treturn current == index && $(element).parents(\"#sf\" + (index + 1)).length;\n\t\t}\n\t\tif (match(0) || match(1) || match(2)) {\n\t\t\treturn !this.optional(element);\n\t\t}\n\t\treturn \"dependency-mismatch\";\n\t}, $.validator.messages.required)\n\t\n\tvar v = $(\"#cmaForm\").validate({\n\t\terrorClass: \"warning\",\n\t\tonkeyup: false,\n\t\tonblur: false,\n\t\tsubmitHandler: function() {\n\t\t\talert(\"Submitted, thanks!\");\n\t\t}\n\t});\n\t\n\t// back buttons do not need to run validation\n\t$(\"#sf2 .prevbutton\").click(function(){\n\t\taccordion.accordion(\"activate\", 0);\n\t\tcurrent = 0;\n\t}); \n\t$(\"#sf3 .prevbutton\").click(function(){\n\t\taccordion.accordion(\"activate\", 1);\n\t\tcurrent = 1;\n\t}); \n\t// these buttons all run the validation, overridden by specific targets above\n\t$(\".open2\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 2);\n\t    current = 2;\n\t  }\n\t});\n\t$(\".open1\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 1);\n\t    current = 1;\n\t  }\n\t});\n\t$(\".open0\").click(function() {\n\t  if (v.form()) {\n\t    accordion.accordion(\"activate\", 0);\n\t    current = 0;\n\t  }\n\t});\n \n});\n</script>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"style.css\" />\n</head>\n<body>\n\n<div id=\"wrap\">\n<div id=\"main\">\n\n<h1 class=\"top bottom\"><span>Help me</span> Buy and Sell a House</h1>\n<h2>This form is quick &amp; easy to complete - in only 3 steps!</h2>\n<form name=\"cmaForm\" id=\"cmaForm\" method=\"post\">\n<input type=\"hidden\" name=\"recordRequestPrimaryServiceID\" id=\"recordRequestPrimaryServiceID\" value=\"100\" />\n<input type=\"hidden\" name=\"recordClientServices\" id=\"recordClientServices\" value=\"1,3\" />\n<ul id=\"stepForm\" class=\"ui-accordion-container\">\n\t<li id=\"sf1\"><a href='#' class=\"ui-accordion-link\"> </a>\n\t<div>\n\t<fieldset><legend> Step 1 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about the property you're buying</h3>\n\t<label for=\"recordPurchaseMetRealtor\" class=\"input required\">Are you currently working with a<br />\n\treal estate agent? </label> &nbsp;&nbsp;No: <input name=\"recordPurchaseMetRealtor\" type=\"radio\" checked=\"checked\" class=\"inputclass\" value=\"0\" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yes: <input name=\"recordPurchaseMetRealtor\" type=\"radio\" class=\"inputclass pageRequired\" value=\"1\" title=\"Please choose Yes or No\" />\n\t<div class=\"formspacer\"></div>\n\t<label for=\"recordPurchaseTimeFrameID\" class=\"input required\">When would you like to move?</label> <select name=\"recordPurchaseTimeFrameID\" id=\"recordPurchaseTimeFrameID\" class=\"inputclass pageRequired\" title=\"Select a Time Frame\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less than 3 months</option>\n\t\t<option value=\"2\">3-6 months</option>\n\t\t<option value=\"3\">6-9 months</option>\n\t\t<option value=\"4\">9-12 months</option>\n\t\t<option value=\"5\">Over 12 months</option>\n\t</select> <br />\n\t<label for=\"recordPurchasePriceRangeID\" class=\"input required\">Purchase price range:</label> <select name=\"recordPurchasePriceRangeID\" id=\"recordPurchasePriceRangeID\" class=\"inputclass pageRequired\" title=\"Select a Price Range\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\"></option>\n\t\t<option value=\"2\">$75,000 - $100,000</option>\n\t\t<option value=\"3\">$100,000 - $125,000</option>\n\t\t<option value=\"4\">$125,000 - $150,000</option>\n\t\t<option value=\"5\">$150,000 - $200,000</option>\n\t\t<option value=\"6\">$200,000 - $250,000</option>\n\t\t<option value=\"7\">$250,000 - $300,000</option>\n\t\t<option value=\"8\">$300,000 - $350,000</option>\n\t\t<option value=\"9\">$350,000 - $400,000</option>\n\t\t<option value=\"10\">$400,000 - $500,000</option>\n\t\t<option value=\"11\">$500,000 - $700,000</option>\n\t\t<option value=\"12\">$700,000 - $900,000</option>\n\t\t<option value=\"13\">> $900,000</option>\n\t</select> <br />\n\t<label for=\"recordPurchaseState\" class=\"input required\">State:</label> <select name=\"recordPurchaseState\" id=\"recordPurchaseState\" class=\"inputclass pageRequired\" title=\"Select a State\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\n\t<label for=\"recordPurchasePropertyTypeID\" class=\"input\">Desired property type:</label> <select name=\"recordPurchasePropertyTypeID\" id=\"recordPurchasePropertyTypeID\" class=\"inputclass\" title=\"Select a Property Type\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Single Family Detached</option>\n\t\t<option value=\"2\">Condo</option>\n\t\t<option value=\"3\">Townhouse</option>\n\t\t<option value=\"4\">Rental</option>\n\t\t<option value=\"5\">Multi-Family</option>\n\t\t<option value=\"6\">Vacation Home</option>\n\t\t<option value=\"7\">Other</option>\n\t</select> <br />\n\t<div class=\"buttonWrapper\"><input name=\"formNext1\" type=\"button\" class=\"open1 nextbutton\" value=\"Next\" alt=\"Next\" title=\"Next\" /></div>\n\t</fieldset>\n\t</div>\n\t</li>\n\t<li id=\"sf2\">\n\t<a href='#' class=\"ui-accordion-link\">\n\t</a>\n\t<div>\n\t<fieldset><legend> Step 2 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about the property you're selling</h3>\n\t<label for=\"recordClientTimeFrameID\" class=\"input required\">When would you like to sell?</label> <select name=\"recordClientTimeFrameID\" id=\"recordClientTimeFrameID\" class=\"inputclass pageRequired\" title=\"Select a Time Frame\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less than 3 months</option>\n\t\t<option value=\"2\">3-6 months</option>\n\t\t<option value=\"3\">6-9 months</option>\n\t\t<option value=\"4\">9-12 months</option>\n\t\t<option value=\"5\">Over 12 months</option>\n\t</select> <br />\n\t<label for=\"recordClientHomeTypeID\" class=\"input required\">Type of property you are selling:</label> <select name=\"recordClientHomeTypeID\" id=\"recordClientHomeTypeID\" class=\"inputclass pageRequired\" title=\"Select a Property Type\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Single Family Detached</option>\n\t\t<option value=\"2\">Condo</option>\n\t\t<option value=\"3\">Townhouse</option>\n\t\t<option value=\"4\">Rental</option>\n\t\t<option value=\"5\">Multi-Family</option>\n\t\t<option value=\"6\">Vacation Home</option>\n\t\t<option value=\"7\">Other</option>\n\t</select> <br />\n\t<label for=\"recordPropertyAddress1\" class=\"input required\">Property Street Address:</label> <input name=\"recordPropertyAddress1\" id=\"recordPropertyAddress1\" class=\"inputclass pageRequired\" title=\"Street Address is required\" maxlength=\"254\" onblur=\"recordClientAddress1.value = this.value\" /><br />\n\t<label for=\"recordPropertyAddress2\" class=\"input\">Address (2):</label> <input name=\"recordPropertyAddress2\" id=\"recordPropertyAddress2\" class=\"inputclass\" maxlength=\"254\" onblur=\"recordClientAddress2.value = this.value\" /><br />\n\t<label for=\"recordPropertyCity\" class=\"input required\">City:</label> <input name=\"recordPropertyCity\" id=\"recordPropertyCity\" class=\"inputclass pageRequired\" title=\"City is required\" maxlength=\"254\" onblur=\"recordClientCity.value = this.value\" /><br />\n\t<label for=\"recordPropertyState\" class=\"input required\">State:</label> <select name=\"recordPropertyState\" id=\"recordPropertyState\" class=\"inputclass pageRequired\" title=\"Select a State\" onchange=\"recordClientState.value = this.value\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\t<label for=\"recordPropertyZip\" class=\"input required\">Zip:</label> <input name=\"recordPropertyZip\" id=\"recordPropertyZip\" class=\"inputclass pageRequired\" title=\"Zip Code is required\" maxlength=\"254\" onblur=\"recordClientZip.value = this.value\" /><br />\n\n\t<label for=\"recordClientPropertyValueID\" class=\"input required\">Estimated Market Value:</label> <select name=\"recordClientPropertyValueID\" id=\"recordClientPropertyValueID\" class=\"inputclass pageRequired\" title=\"Select a Price Range\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less Than $75K</option>\n\t\t<option value=\"2\">$75-$100K</option>\n\t\t<option value=\"3\">$100-$125K</option>\n\t\t<option value=\"4\">$125-$150K</option>\n\t\t<option value=\"5\">$150-$200K</option>\n\t\t<option value=\"6\">$200-$250K</option>\n\t\t<option value=\"7\">$250-$300K</option>\n\t\t<option value=\"8\">$300-$350K</option>\n\t\t<option value=\"9\">$350-$400K</option>\n\t\t<option value=\"10\">$400-$500K</option>\n\t\t<option value=\"11\">$500-$700K</option>\n\t\t<option value=\"12\">$700-$900K</option>\n\t\t<option value=\"13\">Over $900K</option>\n\t</select> <br />\n\t<label for=\"recordPropertyBedroomsID\" class=\"input\">Bedrooms:</label> <select name=\"recordPropertyBedroomsID\" id=\"recordPropertyBedroomsID\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">1</option>\n\t\t<option value=\"2\">2</option>\n\t\t<option value=\"3\">3</option>\n\t\t<option value=\"4\">4</option>\n\t\t<option value=\"5\">5+</option>\n\t</select> <br />\n\t<label for=\"recordPropertyBathroomsId\" class=\"input\">Bathrooms:</label> <select name=\"recordPropertyBathroomsId\" id=\"recordPropertyBathroomsId\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">1</option>\n\t\t<option value=\"2\">1.5</option>\n\t\t<option value=\"3\">2</option>\n\t\t<option value=\"4\">2.5</option>\n\t\t<option value=\"5\">3</option>\n\t\t<option value=\"6\">3.5</option>\n\t\t<option value=\"7\">4+</option>\n\t</select> <br />\n\t<label for=\"recordPropertyAgeId\" class=\"input\">Approx. Age of Home:</label> <select name=\"recordPropertyAgeId\" id=\"recordPropertyAgeId\" class=\"inputclass\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"1\">Less Than 1 year</option>\n\t\t<option value=\"2\">1-5 years</option>\n\t\t<option value=\"3\">6-10 years</option>\n\t\t<option value=\"4\">11-15 years</option>\n\t\t<option value=\"5\">More than 15 years</option>\n\t</select> <br />\n\t<label for=\"recordPropertySqFt\" class=\"input\">Approx. Square Footage:</label> <input name=\"recordPropertySqFt\" id=\"recordPropertySqFt\" class=\"inputclass\" maxlength=\"254\" /><br />\n\t<div class=\"buttonWrapper\"><input name=\"formBack0\" type=\"button\" class=\"open0 prevbutton\" value=\"Back\" alt=\"Back\" title=\"Back\" /> <input name=\"formNext2\" type=\"button\" class=\"open2 nextbutton\" value=\"Next\" alt=\"Next\" title=\"Next\" /></div>\n\t</fieldset>\n\t</div>\n\t</li>\n\t<li id=\"sf3\">\n\t<a href='#' class=\"ui-accordion-link\">\n\t</a>\n\t<div>\n\t<fieldset><legend> Step 3 of 3 </legend>\n\t<div class=\"requiredNotice\">*Required Field</div>\n\t<h3 class=\"stepHeader\">Tell us about yourself</h3>\n\t<label for=\"recordClientNameFirst\" class=\"input required\">First Name:</label> <input name=\"recordClientNameFirst\" id=\"recordClientNameFirst\" class=\"inputclass pageRequired\" title=\"First Name is required\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientNameLast\" class=\"input required\">Last Name:</label> <input name=\"recordClientNameLast\" id=\"recordClientNameLast\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Last Name is required\" /> <br />\n\t<label for=\"recordClientAddress1\" class=\"input required\">Current Address:</label> <input name=\"recordClientAddress1\" id=\"recordClientAddress1\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Address is required\" /> <br />\n\t<label for=\"recordClientAddress2\" class=\"input\">Address (2):</label> <input name=\"recordClientAddress2\" id=\"recordClientAddress2\" class=\"inputclass\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientCity\" class=\"input required\">City:</label> <input name=\"recordClientCity\" id=\"recordClientCity\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"City is required\" /> <br />\n\t<label for=\"recordClientState\" class=\"input required\">State:</label> <select name=\"recordClientState\" id=\"recordClientState\" class=\"inputclass pageRequired\" title=\"Select a State\">\n\t\t<option value=\"\">-Select-</option>\n\t\t<option value=\"AL\">Alabama</option>\n\t\t<option value=\"AK\">Alaska</option>\n\t\t<option value=\"AZ\">Arizona</option>\n\t\t<option value=\"AR\">Arkansas</option>\n\t\t<option value=\"CA\">California</option>\n\t\t<option value=\"CO\">Colorado</option>\n\t\t<option value=\"CT\">Connecticut</option>\n\t\t<option value=\"DE\">Delaware</option>\n\t\t<option value=\"DC\">Dist of Columbia</option>\n\t\t<option value=\"FL\">Florida</option>\n\t\t<option value=\"GA\">Georgia</option>\n\t\t<option value=\"HI\">Hawaii</option>\n\t\t<option value=\"ID\">Idaho</option>\n\t\t<option value=\"IL\">Illinois</option>\n\t\t<option value=\"IN\">Indiana</option>\n\t\t<option value=\"IA\">Iowa</option>\n\t\t<option value=\"KS\">Kansas</option>\n\t\t<option value=\"KY\">Kentucky</option>\n\t\t<option value=\"LA\">Louisiana</option>\n\t\t<option value=\"ME\">Maine</option>\n\t\t<option value=\"MD\">Maryland</option>\n\t\t<option value=\"MA\">Massachusetts</option>\n\t\t<option value=\"MI\">Michigan</option>\n\t\t<option value=\"MN\">Minnesota</option>\n\t\t<option value=\"MS\">Mississippi</option>\n\t\t<option value=\"MO\">Missouri</option>\n\t\t<option value=\"MT\">Montana</option>\n\t\t<option value=\"NE\">Nebraska</option>\n\t\t<option value=\"NV\">Nevada</option>\n\t\t<option value=\"NH\">New Hampshire</option>\n\t\t<option value=\"NJ\">New Jersey</option>\n\t\t<option value=\"NM\">New Mexico</option>\n\t\t<option value=\"NY\">New York</option>\n\t\t<option value=\"NC\">North Carolina</option>\n\t\t<option value=\"ND\">North Dakota</option>\n\t\t<option value=\"OH\">Ohio</option>\n\t\t<option value=\"OK\">Oklahoma</option>\n\t\t<option value=\"OR\">Oregon</option>\n\t\t<option value=\"PA\" selected=\"selected\">Pennsylvania</option>\n\t\t<option value=\"RI\">Rhode Island</option>\n\t\t<option value=\"SC\">South Carolina</option>\n\t\t<option value=\"SD\">South Dakota</option>\n\t\t<option value=\"TN\">Tennessee</option>\n\t\t<option value=\"TX\">Texas</option>\n\t\t<option value=\"UT\">Utah</option>\n\t\t<option value=\"VT\">Vermont</option>\n\t\t<option value=\"VA\">Virginia</option>\n\t\t<option value=\"WA\">Washington</option>\n\t\t<option value=\"WV\">West Virginia</option>\n\t\t<option value=\"WI\">Wisconsin</option>\n\t\t<option value=\"WY\">Wyoming</option>\n\t</select> <br />\n\t<label for=\"recordClientZip\" class=\"input required\">Zip:</label> <input name=\"recordClientZip\" id=\"recordClientZip\" class=\"inputclass pageRequired\" maxlength=\"12\" title=\"Zip Code is required\" /> <br />\n\t<label for=\"recordClientPhone\" class=\"input required\">Phone Number:</label> <input name=\"recordClientPhone\" id=\"recordClientPhone\" class=\"inputclass pageRequired\" maxlength=\"254\" title=\"Phone Number is required\" /> <br />\n\t<label for=\"recordClientPhoneAlt\" class=\"input\">Alternate Number:</label> <input name=\"recordClientPhoneAlt\" id=\"recordClientPhoneAlt\" class=\"inputclass\" maxlength=\"254\" /> <br />\n\t<label for=\"recordClientEmail\" class=\"input required\">Email Address:</label> <input name=\"recordClientEmail\" id=\"recordClientEmail\" class=\"inputclass pageRequired email\" maxlength=\"254\" title=\"Email address is required\" /> <br />\n\t<label for=\"recordClientEmail1\" class=\"input required\">Confirm Email:</label> <input name=\"recordClientEmail1\" id=\"recordClientEmail1\" class=\"inputclass pageRequired\" equalTo:\"'#recordClientEmail\" maxlength=\"254\" title=\"Please confirm your email address\" /> <br />\n\t<br />\n\t<p class=\"formDisclaimer\">This is a sample form, no information is sent anywhere.</p>\n\t<div class=\"buttonWrapper\"><input name=\"formBack1\" type=\"button\" class=\"open1 prevbutton\" value=\"Back\" alt=\"Back\" title=\"Back\" /> <input name=\"submit\" type=\"submit\" id=\"submit\" value=\"Submit\" class=\"submitbutton\" alt=\"Submit\" title=\"Submit\"></div>\n\t</fieldset>\n\t</div>\n\t</li>\n</ul>\n</form>\n\n</div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/jquery.maskedinput-1.0.js",
    "content": "/*\n * Copyright (c) 2007 Josh Bush (digitalbush.com)\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE. \n */\n \n/*\n * Version: 1.0\n * Release: 2007-07-25\n */ \n(function($) {\n\t//Helper Functions for Caret positioning\n\tfunction getCaretPosition(ctl){\n\t\tvar res = {begin: 0, end: 0 };\n\t\tif (ctl.setSelectionRange){\n\t\t\tres.begin = ctl.selectionStart;\n\t\t\tres.end = ctl.selectionEnd;\n\t\t}else if (document.selection && document.selection.createRange){\n\t\t\tvar range = document.selection.createRange();\t\t\t\n\t\t\tres.begin = 0 - range.duplicate().moveStart('character', -100000);\n\t\t\tres.end = res.begin + range.text.length;\n\t\t}\n\t\treturn res;\n\t};\n\n\tfunction setCaretPosition(ctl, pos){\n\t\tif(ctl.setSelectionRange){\n\t\t\tctl.focus();\n\t\t\tctl.setSelectionRange(pos,pos);\n\t\t}else if (ctl.createTextRange){\n\t\t\tvar range = ctl.createTextRange();\n\t\t\trange.collapse(true);\n\t\t\trange.moveEnd('character', pos);\n\t\t\trange.moveStart('character', pos);\n\t\t\trange.select();\n\t\t}\n\t};\n\t\n\t//Predefined character definitions\n\tvar charMap={\n\t\t'9':\"[0-9]\",\n\t\t'a':\"[A-Za-z]\",\n\t\t'*':\"[A-Za-z0-9]\"\n\t};\n\t\n\t//Helper method to inject character definitions\n\t$.mask={\n\t\taddPlaceholder : function(c,r){\n\t\t\tcharMap[c]=r;\n\t\t}\n\t};\n\t\n\t//Main Method\n\t$.fn.mask = function(mask,settings) {\t\n\t\tsettings = $.extend({\n\t\t\tplaceholder: \"_\",\n\t\t\tcompleted: null\n\t\t}, settings);\n\t\t\t\n\t\t//Build Regex for format validation\n\t\tvar reString=\"^\";\t\n\t\tfor(var i=0;i<mask.length;i++)\n\t\t\treString+=(charMap[mask.charAt(i)] || (\"\\\\\"+mask.charAt(i)));\t\t\t\t\t\n\t\treString+=\"$\";\n\t\tvar re = new RegExp(reString);\n\n\t\treturn this.each(function(){\t\t\n\t\t\tvar input=$(this);\n\t\t\tvar buffer=new Array(mask.length);\n\t\t\tvar locked=new Array(mask.length);\t\t\n\n\t\t\t//Build buffer layout from mask\n\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\tlocked[i]=charMap[mask.charAt(i)]==null;\n\t\t\t\tbuffer[i]=locked[i]?mask.charAt(i):settings.placeholder;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/*Event Bindings*/\n\t\t\tinput.focus(function(){\t\t\t\t\t\n\t\t\t\tcheckVal();\n\t\t\t\twriteBuffer();\n\t\t\t\tsetCaretPosition(this,0);\t\t\n\t\t\t});\n\n\t\t\tinput.blur(checkVal);\n\t\t\t\n\t\t\t//Paste events for IE and Mozilla thanks to Kristinn Sigmundsson\n\t\t\tif ($.browser.msie) \n\t\t\t\tthis.onpaste= function(){setTimeout(checkVal,0);};                     \n\t\t\telse if ($.browser.mozilla)\n\t\t\t\tthis.addEventListener('input',checkVal,false);\n\t\t\t\n\t\t\tvar ignore=false;  //Variable for ignoring control keys\n\t\t\t\n\t\t\tinput.keydown(function(e){\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tvar k = e.keyCode;\n\t\t\t\tignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));\n\t\t\t\t\n\t\t\t\t//delete selection before proceeding\n\t\t\t\tif((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){\n\t\t\t\t\tclearBuffer(pos.begin,pos.end);\n\t\t\t\t}\t\n\t\t\t\t//backspace and delete get special treatment\n\t\t\t\tif(k==8){//backspace\t\t\t\t\t\n\t\t\t\t\twhile(pos.begin-->=0){\n\t\t\t\t\t\tif(!locked[pos.begin]){\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuffer[pos.begin]=settings.placeholder;\n\t\t\t\t\t\t\tif($.browser.opera){\n\t\t\t\t\t\t\t\t//Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\twriteBuffer(pos.begin);\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin+1);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\twriteBuffer();\n\t\t\t\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\t\t\t\t\t\t\n\t\t\t\t}else if(k==46){//delete\n\t\t\t\t\tclearBuffer(pos.begin,pos.begin+1);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,pos.begin);\n\t\t\t\t\treturn false;\n\t\t\t\t}else if (k==27){\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t\twriteBuffer();\n\t\t\t\t\tsetCaretPosition(this,0);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t});\n\n\t\t\tinput.keypress(function(e){\t\t\t\t\t\n\t\t\t\tif(ignore){\n\t\t\t\t\tignore=false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\te=e||window.event;\n\t\t\t\tvar k=e.charCode||e.keyCode||e.which;\n\n\t\t\t\tvar pos=getCaretPosition(this);\t\t\t\t\t\n\t\t\t\tvar caretPos=pos.begin;\t\n\t\t\t\t\n\t\t\t\tif(e.ctrlKey || e.altKey){//Ignore\n\t\t\t\t\treturn true;\n\t\t\t\t}else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters\n\t\t\t\t\twhile(pos.begin<mask.length){\t\n\t\t\t\t\t\tvar reString=charMap[mask.charAt(pos.begin)];\n\t\t\t\t\t\tvar match;\n\t\t\t\t\t\tif(reString){\n\t\t\t\t\t\t\tvar reChar=new RegExp(reString);\n\t\t\t\t\t\t\tmatch=String.fromCharCode(k).match(reChar);\n\t\t\t\t\t\t}else{//we're on a mask char, go forward and try again\n\t\t\t\t\t\t\tpos.begin+=1;\n\t\t\t\t\t\t\tpos.end=pos.begin;\n\t\t\t\t\t\t\tcaretPos+=1;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(match)\n\t\t\t\t\t\t\tbuffer[pos.begin]=String.fromCharCode(k);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;//reject char\n\n\t\t\t\t\t\twhile(++caretPos<mask.length){//seek forward to next typable position\n\t\t\t\t\t\t\tif(!locked[caretPos])\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbreak;\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else\n\t\t\t\t\treturn false;\t\t\t\t\t\t\t\t\n\n\t\t\t\twriteBuffer();\n\t\t\t\tif(settings.completed && caretPos>=buffer.length)\n\t\t\t\t\tsettings.completed.call(input);\n\t\t\t\telse\n\t\t\t\t\tsetCaretPosition(this,caretPos);\n\t\t\t\t\n\t\t\t\treturn false;\t\t\t\t\n\t\t\t});\n\n\t\t\t/*Helper Methods*/\n\t\t\tfunction clearBuffer(start,end){\n\t\t\t\tfor(var i=start;i<end;i++){\n\t\t\t\t\tif(!locked[i])\n\t\t\t\t\t\tbuffer[i]=settings.placeholder;\n\t\t\t\t}\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\tfunction writeBuffer(pos){\n\t\t\t\tvar s=\"\";\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\ts+=buffer[i];\n\t\t\t\t\tif(i==pos)\n\t\t\t\t\t\ts+=settings.placeholder;\n\t\t\t\t}\n\t\t\t\tinput.val(s);\n\t\t\t\treturn s;\n\t\t\t};\n\t\t\t\n\t\t\tfunction checkVal(){\t\n\t\t\t\t//try to place charcters where they belong\n\t\t\t\tvar test=input.val();\n\t\t\t\tvar pos=0;\n\t\t\t\tfor(var i=0;i<mask.length;i++){\n\t\t\t\t\tif(!locked[i]){\n\t\t\t\t\t\twhile(pos++<test.length){\n\t\t\t\t\t\t\t//Regex Test each char here.\n\t\t\t\t\t\t\tvar reChar=new RegExp(charMap[mask.charAt(i)]);\n\t\t\t\t\t\t\tif(test.charAt(pos-1).match(reChar)){\n\t\t\t\t\t\t\t\tbuffer[i]=test.charAt(pos-1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar s=writeBuffer();\n\t\t\t\tif(!s.match(re)){\t\t\t\t\t\t\t\n\t\t\t\t\tinput.val(\"\");\t\n\t\t\t\t\tclearBuffer(0,mask.length);\n\t\t\t\t}\t\t\t\t\t\n\t\t\t};\t\t\t\t\n\t\t});\n\t};\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.accordion.js",
    "content": "/*\n * jQuery UI Accordion 1.7.1\n *\n * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * http://docs.jquery.com/UI/Accordion\n *\n * Depends:\n *\tui.core.js\n */\n(function($) {\n\n$.widget(\"ui.accordion\", {\n\n\t_init: function() {\n\n\t\tvar o = this.options, self = this;\n\t\tthis.running = 0;\n\n\t\t// if the user set the alwaysOpen option on init\n\t\t// then we need to set the collapsible option\n\t\t// if they set both on init, collapsible will take priority\n\t\tif (o.collapsible == $.ui.accordion.defaults.collapsible &&\n\t\t\to.alwaysOpen != $.ui.accordion.defaults.alwaysOpen) {\n\t\t\to.collapsible = !o.alwaysOpen;\n\t\t}\n\n\t\tif ( o.navigation ) {\n\t\t\tvar current = this.element.find(\"a\").filter(o.navigationFilter);\n\t\t\tif ( current.length ) {\n\t\t\t\tif ( current.filter(o.header).length ) {\n\t\t\t\t\tthis.active = current;\n\t\t\t\t} else {\n\t\t\t\t\tthis.active = current.parent().parent().prev();\n\t\t\t\t\tcurrent.addClass(\"ui-accordion-content-active\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.addClass(\"ui-accordion ui-widget ui-helper-reset\");\n\t\t\n\t\t// in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix\n\t\tif (this.element[0].nodeName == \"UL\") {\n\t\t\tthis.element.children(\"li\").addClass(\"ui-accordion-li-fix\");\n\t\t}\n\n\t\tthis.headers = this.element.find(o.header).addClass(\"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\")\n\t\t\t.bind(\"mouseenter.accordion\", function(){ $(this).addClass('ui-state-hover'); })\n\t\t\t.bind(\"mouseleave.accordion\", function(){ $(this).removeClass('ui-state-hover'); })\n\t\t\t.bind(\"focus.accordion\", function(){ $(this).addClass('ui-state-focus'); })\n\t\t\t.bind(\"blur.accordion\", function(){ $(this).removeClass('ui-state-focus'); });\n\n\t\tthis.headers\n\t\t\t.next()\n\t\t\t\t.addClass(\"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\");\n\n\t\tthis.active = this._findActive(this.active || o.active).toggleClass(\"ui-state-default\").toggleClass(\"ui-state-active\").toggleClass(\"ui-corner-all\").toggleClass(\"ui-corner-top\");\n\t\tthis.active.next().addClass('ui-accordion-content-active');\n\n\t\t//Append icon elements\n\t\t$(\"<span/>\").addClass(\"ui-icon \" + o.icons.header).prependTo(this.headers);\n\t\tthis.active.find(\".ui-icon\").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);\n\n\t\t// IE7-/Win - Extra vertical space in lists fixed\n\t\tif ($.browser.msie) {\n\t\t\tthis.element.find('a').css('zoom', '1');\n\t\t}\n\n\t\tthis.resize();\n\n\t\t//ARIA\n\t\tthis.element.attr('role','tablist');\n\n\t\tthis.headers\n\t\t\t.attr('role','tab')\n\t\t\t.bind('keydown', function(event) { return self._keydown(event); })\n\t\t\t.next()\n\t\t\t.attr('role','tabpanel');\n\n\t\tthis.headers\n\t\t\t.not(this.active || \"\")\n\t\t\t.attr('aria-expanded','false')\n\t\t\t.attr(\"tabIndex\", \"-1\")\n\t\t\t.next()\n\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif (!this.active.length) {\n\t\t\tthis.headers.eq(0).attr('tabIndex','0');\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.attr('aria-expanded','true')\n\t\t\t\t.attr('tabIndex', '0');\n\t\t}\n\n\t\t// only need links in taborder for Safari\n\t\tif (!$.browser.safari)\n\t\t\tthis.headers.find('a').attr('tabIndex','-1');\n\n\t\tif (o.event) {\n\t\t\tthis.headers.bind((o.event) + \".accordion\", function(event) { return self._clickHandler.call(self, event, this); });\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tvar o = this.options;\n\n\t\tthis.element\n\t\t\t.removeClass(\"ui-accordion ui-widget ui-helper-reset\")\n\t\t\t.removeAttr(\"role\")\n\t\t\t.unbind('.accordion')\n\t\t\t.removeData('accordion');\n\n\t\tthis.headers\n\t\t\t.unbind(\".accordion\")\n\t\t\t.removeClass(\"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top\")\n\t\t\t.removeAttr(\"role\").removeAttr(\"aria-expanded\").removeAttr(\"tabindex\");\n\n\t\tthis.headers.find(\"a\").removeAttr(\"tabindex\");\n\t\tthis.headers.children(\".ui-icon\").remove();\n\t\tvar contents = this.headers.next().css(\"display\", \"\").removeAttr(\"role\").removeClass(\"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active\");\n\t\tif (o.autoHeight || o.fillHeight) {\n\t\t\tcontents.css(\"height\", \"\");\n\t\t}\n\t},\n\t\n\t_setData: function(key, value) {\n\t\tif(key == 'alwaysOpen') { key = 'collapsible'; value = !value; }\n\t\t$.widget.prototype._setData.apply(this, arguments);\t\n\t},\n\n\t_keydown: function(event) {\n\n\t\tvar o = this.options, keyCode = $.ui.keyCode;\n\n\t\tif (o.disabled || event.altKey || event.ctrlKey)\n\t\t\treturn;\n\n\t\tvar length = this.headers.length;\n\t\tvar currentIndex = this.headers.index(event.target);\n\t\tvar toFocus = false;\n\n\t\tswitch(event.keyCode) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[(currentIndex + 1) % length];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[(currentIndex - 1 + length) % length];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\treturn this._clickHandler({ target: event.target }, event.target);\n\t\t}\n\n\t\tif (toFocus) {\n\t\t\t$(event.target).attr('tabIndex','-1');\n\t\t\t$(toFocus).attr('tabIndex','0');\n\t\t\ttoFocus.focus();\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tresize: function() {\n\n\t\tvar o = this.options, maxHeight;\n\n\t\tif (o.fillSpace) {\n\t\t\t\n\t\t\tif($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }\n\t\t\tmaxHeight = this.element.parent().height();\n\t\t\tif($.browser.msie) { this.element.parent().css('overflow', defOverflow); }\n\t\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $(this).outerHeight();\n\t\t\t});\n\n\t\t\tvar maxPadding = 0;\n\t\t\tthis.headers.next().each(function() {\n\t\t\t\tmaxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());\n\t\t\t}).height(Math.max(0, maxHeight - maxPadding))\n\t\t\t.css('overflow', 'auto');\n\n\t\t} else if ( o.autoHeight ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next().each(function() {\n\t\t\t\tmaxHeight = Math.max(maxHeight, $(this).outerHeight());\n\t\t\t}).height(maxHeight);\n\t\t}\n\n\t},\n\n\tactivate: function(index) {\n\t\t// call clickHandler with custom event\n\t\tvar active = this._findActive(index)[0];\n\t\tthis._clickHandler({ target: active }, active);\n\t},\n\n\t_findActive: function(selector) {\n\t\treturn selector\n\t\t\t? typeof selector == \"number\"\n\t\t\t\t? this.headers.filter(\":eq(\" + selector + \")\")\n\t\t\t\t: this.headers.not(this.headers.not(selector))\n\t\t\t: selector === false\n\t\t\t\t? $([])\n\t\t\t\t: this.headers.filter(\":eq(0)\");\n\t},\n\n\t_clickHandler: function(event, target) {\n\n\t\tvar o = this.options;\n\t\tif (o.disabled) return false;\n\n\t\t// called only when using activate(false) to close all parts programmatically\n\t\tif (!event.target && o.collapsible) {\n\t\t\tthis.active.removeClass(\"ui-state-active ui-corner-top\").addClass(\"ui-state-default ui-corner-all\")\n\t\t\t\t.find(\".ui-icon\").removeClass(o.icons.headerSelected).addClass(o.icons.header);\n\t\t\tthis.active.next().addClass('ui-accordion-content-active');\n\t\t\tvar toHide = this.active.next(),\n\t\t\t\tdata = {\n\t\t\t\t\toptions: o,\n\t\t\t\t\tnewHeader: $([]),\n\t\t\t\t\toldHeader: o.active,\n\t\t\t\t\tnewContent: $([]),\n\t\t\t\t\toldContent: toHide\n\t\t\t\t},\n\t\t\t\ttoShow = (this.active = $([]));\n\t\t\tthis._toggle(toShow, toHide, data);\n\t\t\treturn false;\n\t\t}\n\n\t\t// get the click target\n\t\tvar clicked = $(event.currentTarget || target);\n\t\tvar clickedIsActive = clicked[0] == this.active[0];\n\n\t\t// if animations are still active, or the active header is the target, ignore click\n\t\tif (this.running || (!o.collapsible && clickedIsActive)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// switch classes\n\t\tthis.active.removeClass(\"ui-state-active ui-corner-top\").addClass(\"ui-state-default ui-corner-all\")\n\t\t\t.find(\".ui-icon\").removeClass(o.icons.headerSelected).addClass(o.icons.header);\n\t\tthis.active.next().addClass('ui-accordion-content-active');\n\t\tif (!clickedIsActive) {\n\t\t\tclicked.removeClass(\"ui-state-default ui-corner-all\").addClass(\"ui-state-active ui-corner-top\")\n\t\t\t\t.find(\".ui-icon\").removeClass(o.icons.header).addClass(o.icons.headerSelected);\n\t\t\tclicked.next().addClass('ui-accordion-content-active');\n\t\t}\n\n\t\t// find elements to show and hide\n\t\tvar toShow = clicked.next(),\n\t\t\ttoHide = this.active.next(),\n\t\t\tdata = {\n\t\t\t\toptions: o,\n\t\t\t\tnewHeader: clickedIsActive && o.collapsible ? $([]) : clicked,\n\t\t\t\toldHeader: this.active,\n\t\t\t\tnewContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'),\n\t\t\t\toldContent: toHide.find('> *')\n\t\t\t},\n\t\t\tdown = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );\n\n\t\tthis.active = clickedIsActive ? $([]) : clicked;\n\t\tthis._toggle(toShow, toHide, data, clickedIsActive, down);\n\n\t\treturn false;\n\n\t},\n\n\t_toggle: function(toShow, toHide, data, clickedIsActive, down) {\n\n\t\tvar o = this.options, self = this;\n\n\t\tthis.toShow = toShow;\n\t\tthis.toHide = toHide;\n\t\tthis.data = data;\n\n\t\tvar complete = function() { if(!self) return; return self._completed.apply(self, arguments); };\n\n\t\t// trigger changestart event\n\t\tthis._trigger(\"changestart\", null, this.data);\n\n\t\t// count elements to animate\n\t\tthis.running = toHide.size() === 0 ? toShow.size() : toHide.size();\n\n\t\tif (o.animated) {\n\n\t\t\tvar animOptions = {};\n\n\t\t\tif ( o.collapsible && clickedIsActive ) {\n\t\t\t\tanimOptions = {\n\t\t\t\t\ttoShow: $([]),\n\t\t\t\t\ttoHide: toHide,\n\t\t\t\t\tcomplete: complete,\n\t\t\t\t\tdown: down,\n\t\t\t\t\tautoHeight: o.autoHeight || o.fillSpace\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tanimOptions = {\n\t\t\t\t\ttoShow: toShow,\n\t\t\t\t\ttoHide: toHide,\n\t\t\t\t\tcomplete: complete,\n\t\t\t\t\tdown: down,\n\t\t\t\t\tautoHeight: o.autoHeight || o.fillSpace\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!o.proxied) {\n\t\t\t\to.proxied = o.animated;\n\t\t\t}\n\n\t\t\tif (!o.proxiedDuration) {\n\t\t\t\to.proxiedDuration = o.duration;\n\t\t\t}\n\n\t\t\to.animated = $.isFunction(o.proxied) ?\n\t\t\t\to.proxied(animOptions) : o.proxied;\n\n\t\t\to.duration = $.isFunction(o.proxiedDuration) ?\n\t\t\t\to.proxiedDuration(animOptions) : o.proxiedDuration;\n\n\t\t\tvar animations = $.ui.accordion.animations,\n\t\t\t\tduration = o.duration,\n\t\t\t\teasing = o.animated;\n\n\t\t\tif (!animations[easing]) {\n\t\t\t\tanimations[easing] = function(options) {\n\t\t\t\t\tthis.slide(options, {\n\t\t\t\t\t\teasing: easing,\n\t\t\t\t\t\tduration: duration || 700\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tanimations[easing](animOptions);\n\n\t\t} else {\n\n\t\t\tif (o.collapsible && clickedIsActive) {\n\t\t\t\ttoShow.toggle();\n\t\t\t} else {\n\t\t\t\ttoHide.hide();\n\t\t\t\ttoShow.show();\n\t\t\t}\n\n\t\t\tcomplete(true);\n\n\t\t}\n\n\t\ttoHide.prev().attr('aria-expanded','false').attr(\"tabIndex\", \"-1\").blur();\n\t\ttoShow.prev().attr('aria-expanded','true').attr(\"tabIndex\", \"0\").focus();\n\n\t},\n\n\t_completed: function(cancel) {\n\n\t\tvar o = this.options;\n\n\t\tthis.running = cancel ? 0 : --this.running;\n\t\tif (this.running) return;\n\n\t\tif (o.clearStyle) {\n\t\t\tthis.toShow.add(this.toHide).css({\n\t\t\t\theight: \"\",\n\t\t\t\toverflow: \"\"\n\t\t\t});\n\t\t}\n\n\t\tthis._trigger('change', null, this.data);\n\t}\n\n});\n\n\n$.extend($.ui.accordion, {\n\tversion: \"1.7.1\",\n\tdefaults: {\n\t\tactive: null,\n\t\talwaysOpen: true, //deprecated, use collapsible\n\t\tanimated: 'slide',\n\t\tautoHeight: true,\n\t\tclearStyle: false,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\tfillSpace: false,\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\ticons: {\n\t\t\theader: \"ui-icon-triangle-1-e\",\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tnavigation: false,\n\t\tnavigationFilter: function() {\n\t\t\treturn this.href.toLowerCase() == location.href.toLowerCase();\n\t\t}\n\t},\n\tanimations: {\n\t\tslide: function(options, additions) {\n\t\t\toptions = $.extend({\n\t\t\t\teasing: \"swing\",\n\t\t\t\tduration: 300\n\t\t\t}, options, additions);\n\t\t\tif ( !options.toHide.size() ) {\n\t\t\t\toptions.toShow.animate({height: \"show\"}, options);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !options.toShow.size() ) {\n\t\t\t\toptions.toHide.animate({height: \"hide\"}, options);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar overflow = options.toShow.css('overflow'),\n\t\t\t\tpercentDone,\n\t\t\t\tshowProps = {},\n\t\t\t\thideProps = {},\n\t\t\t\tfxAttrs = [ \"height\", \"paddingTop\", \"paddingBottom\" ],\n\t\t\t\toriginalWidth;\n\t\t\t// fix width before calculating height of hidden element\n\t\t\tvar s = options.toShow;\n\t\t\toriginalWidth = s[0].style.width;\n\t\t\ts.width( parseInt(s.parent().width(),10) - parseInt(s.css(\"paddingLeft\"),10) - parseInt(s.css(\"paddingRight\"),10) - (parseInt(s.css(\"borderLeftWidth\"),10) || 0) - (parseInt(s.css(\"borderRightWidth\"),10) || 0) );\n\t\t\t\n\t\t\t$.each(fxAttrs, function(i, prop) {\n\t\t\t\thideProps[prop] = 'hide';\n\t\t\t\t\n\t\t\t\tvar parts = ('' + $.css(options.toShow[0], prop)).match(/^([\\d+-.]+)(.*)$/);\n\t\t\t\tshowProps[prop] = {\n\t\t\t\t\tvalue: parts[1],\n\t\t\t\t\tunit: parts[2] || 'px'\n\t\t\t\t};\n\t\t\t});\n\t\t\toptions.toShow.css({ height: 0, overflow: 'hidden' }).show();\n\t\t\toptions.toHide.filter(\":hidden\").each(options.complete).end().filter(\":visible\").animate(hideProps,{\n\t\t\t\tstep: function(now, settings) {\n\t\t\t\t\t// only calculate the percent when animating height\n\t\t\t\t\t// IE gets very inconsistent results when animating elements\n\t\t\t\t\t// with small values, which is common for padding\n\t\t\t\t\tif (settings.prop == 'height') {\n\t\t\t\t\t\tpercentDone = (settings.now - settings.start) / (settings.end - settings.start);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\toptions.toShow[0].style[settings.prop] =\n\t\t\t\t\t\t(percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;\n\t\t\t\t},\n\t\t\t\tduration: options.duration,\n\t\t\t\teasing: options.easing,\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tif ( !options.autoHeight ) {\n\t\t\t\t\t\toptions.toShow.css(\"height\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\toptions.toShow.css(\"width\", originalWidth);\n\t\t\t\t\toptions.toShow.css({overflow: overflow});\n\t\t\t\t\toptions.complete();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tbounceslide: function(options) {\n\t\t\tthis.slide(options, {\n\t\t\t\teasing: options.down ? \"easeOutBounce\" : \"swing\",\n\t\t\t\tduration: options.down ? 1000 : 200\n\t\t\t});\n\t\t},\n\t\teaseslide: function(options) {\n\t\t\tthis.slide(options, {\n\t\t\t\teasing: \"easeinout\",\n\t\t\t\tduration: 700\n\t\t\t});\n\t\t}\n\t}\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/js/ui.core.js",
    "content": "/*\n * jQuery UI 1.7.1\n *\n * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * and GPL (GPL-LICENSE.txt) licenses.\n *\n * http://docs.jquery.com/UI\n */\n;jQuery.ui || (function($) {\n\nvar _remove = $.fn.remove,\n\tisFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);\n\n//Helper functions and ui object\n$.ui = {\n\tversion: \"1.7.1\",\n\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function(module, option, set) {\n\t\t\tvar proto = $.ui[module].prototype;\n\t\t\tfor(var i in set) {\n\t\t\t\tproto.plugins[i] = proto.plugins[i] || [];\n\t\t\t\tproto.plugins[i].push([option, set[i]]);\n\t\t\t}\n\t\t},\n\t\tcall: function(instance, name, args) {\n\t\t\tvar set = instance.plugins[name];\n\t\t\tif(!set || !instance.element[0].parentNode) { return; }\n\n\t\t\tfor (var i = 0; i < set.length; i++) {\n\t\t\t\tif (instance.options[set[i][0]]) {\n\t\t\t\t\tset[i][1].apply(instance.element, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: function(a, b) {\n\t\treturn document.compareDocumentPosition\n\t\t\t? a.compareDocumentPosition(b) & 16\n\t\t\t: a !== b && a.contains(b);\n\t},\n\n\thasScroll: function(el, a) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ($(el).css('overflow') == 'hidden') { return false; }\n\n\t\tvar scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',\n\t\t\thas = false;\n\n\t\tif (el[scroll] > 0) { return true; }\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[scroll] = 1;\n\t\thas = (el[scroll] > 0);\n\t\tel[scroll] = 0;\n\t\treturn has;\n\t},\n\n\tisOverAxis: function(x, reference, size) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn (x > reference) && (x < (reference + size));\n\t},\n\n\tisOver: function(y, x, top, left, height, width) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);\n\t},\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCAPS_LOCK: 20,\n\t\tCOMMA: 188,\n\t\tCONTROL: 17,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tINSERT: 45,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSHIFT: 16,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n};\n\n// WAI-ARIA normalization\nif (isFF2) {\n\tvar attr = $.attr,\n\t\tremoveAttr = $.fn.removeAttr,\n\t\tariaNS = \"http://www.w3.org/2005/07/aaa\",\n\t\tariaState = /^aria-/,\n\t\tariaRole = /^wairole:/;\n\n\t$.attr = function(elem, name, value) {\n\t\tvar set = value !== undefined;\n\n\t\treturn (name == 'role'\n\t\t\t? (set\n\t\t\t\t? attr.call(this, elem, name, \"wairole:\" + value)\n\t\t\t\t: (attr.apply(this, arguments) || \"\").replace(ariaRole, \"\"))\n\t\t\t: (ariaState.test(name)\n\t\t\t\t? (set\n\t\t\t\t\t? elem.setAttributeNS(ariaNS,\n\t\t\t\t\t\tname.replace(ariaState, \"aaa:\"), value)\n\t\t\t\t\t: attr.call(this, elem, name.replace(ariaState, \"aaa:\")))\n\t\t\t\t: attr.apply(this, arguments)));\n\t};\n\n\t$.fn.removeAttr = function(name) {\n\t\treturn (ariaState.test(name)\n\t\t\t? this.each(function() {\n\t\t\t\tthis.removeAttributeNS(ariaNS, name.replace(ariaState, \"\"));\n\t\t\t}) : removeAttr.call(this, name));\n\t};\n}\n\n//jQuery plugins\n$.fn.extend({\n\tremove: function() {\n\t\t// Safari has a native remove event which actually removes DOM elements,\n\t\t// so we have to use triggerHandler instead of trigger (#3037).\n\t\t$(\"*\", this).add(this).each(function() {\n\t\t\t$(this).triggerHandler(\"remove\");\n\t\t});\n\t\treturn _remove.apply(this, arguments );\n\t},\n\n\tenableSelection: function() {\n\t\treturn this\n\t\t\t.attr('unselectable', 'off')\n\t\t\t.css('MozUserSelect', '')\n\t\t\t.unbind('selectstart.ui');\n\t},\n\n\tdisableSelection: function() {\n\t\treturn this\n\t\t\t.attr('unselectable', 'on')\n\t\t\t.css('MozUserSelect', 'none')\n\t\t\t.bind('selectstart.ui', function() { return false; });\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t}\n});\n\n\n//Additional selectors\n$.extend($.expr[':'], {\n\tdata: function(elem, i, match) {\n\t\treturn !!$.data(elem, match[3]);\n\t},\n\n\tfocusable: function(element) {\n\t\tvar nodeName = element.nodeName.toLowerCase(),\n\t\t\ttabIndex = $.attr(element, 'tabindex');\n\t\treturn (/input|select|textarea|button|object/.test(nodeName)\n\t\t\t? !element.disabled\n\t\t\t: 'a' == nodeName || 'area' == nodeName\n\t\t\t\t? element.href || !isNaN(tabIndex)\n\t\t\t\t: !isNaN(tabIndex))\n\t\t\t// the element and all of its ancestors must be visible\n\t\t\t// the browser may report that the area is hidden\n\t\t\t&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;\n\t},\n\n\ttabbable: function(element) {\n\t\tvar tabIndex = $.attr(element, 'tabindex');\n\t\treturn (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');\n\t}\n});\n\n\n// $.widget is a factory to create jQuery plugins\n// taking some boilerplate code out of the plugin code\nfunction getter(namespace, plugin, method, args) {\n\tfunction getMethods(type) {\n\t\tvar methods = $[namespace][plugin][type] || [];\n\t\treturn (typeof methods == 'string' ? methods.split(/,?\\s+/) : methods);\n\t}\n\n\tvar methods = getMethods('getter');\n\tif (args.length == 1 && typeof args[0] == 'string') {\n\t\tmethods = methods.concat(getMethods('getterSetter'));\n\t}\n\treturn ($.inArray(method, methods) != -1);\n}\n\n$.widget = function(name, prototype) {\n\tvar namespace = name.split(\".\")[0];\n\tname = name.split(\".\")[1];\n\n\t// create plugin method\n\t$.fn[name] = function(options) {\n\t\tvar isMethodCall = (typeof options == 'string'),\n\t\t\targs = Array.prototype.slice.call(arguments, 1);\n\n\t\t// prevent calls to internal methods\n\t\tif (isMethodCall && options.substring(0, 1) == '_') {\n\t\t\treturn this;\n\t\t}\n\n\t\t// handle getter methods\n\t\tif (isMethodCall && getter(namespace, name, options, args)) {\n\t\t\tvar instance = $.data(this[0], name);\n\t\t\treturn (instance ? instance[options].apply(instance, args)\n\t\t\t\t: undefined);\n\t\t}\n\n\t\t// handle initialization and non-getter methods\n\t\treturn this.each(function() {\n\t\t\tvar instance = $.data(this, name);\n\n\t\t\t// constructor\n\t\t\t(!instance && !isMethodCall &&\n\t\t\t\t$.data(this, name, new $[namespace][name](this, options))._init());\n\n\t\t\t// method call\n\t\t\t(instance && isMethodCall && $.isFunction(instance[options]) &&\n\t\t\t\tinstance[options].apply(instance, args));\n\t\t});\n\t};\n\n\t// create widget constructor\n\t$[namespace] = $[namespace] || {};\n\t$[namespace][name] = function(element, options) {\n\t\tvar self = this;\n\n\t\tthis.namespace = namespace;\n\t\tthis.widgetName = name;\n\t\tthis.widgetEventPrefix = $[namespace][name].eventPrefix || name;\n\t\tthis.widgetBaseClass = namespace + '-' + name;\n\n\t\tthis.options = $.extend({},\n\t\t\t$.widget.defaults,\n\t\t\t$[namespace][name].defaults,\n\t\t\t$.metadata && $.metadata.get(element)[name],\n\t\t\toptions);\n\n\t\tthis.element = $(element)\n\t\t\t.bind('setData.' + name, function(event, key, value) {\n\t\t\t\tif (event.target == element) {\n\t\t\t\t\treturn self._setData(key, value);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind('getData.' + name, function(event, key) {\n\t\t\t\tif (event.target == element) {\n\t\t\t\t\treturn self._getData(key);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind('remove', function() {\n\t\t\t\treturn self.destroy();\n\t\t\t});\n\t};\n\n\t// add widget prototype\n\t$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);\n\n\t// TODO: merge getter and getterSetter properties from widget prototype\n\t// and plugin prototype\n\t$[namespace][name].getterSetter = 'option';\n};\n\n$.widget.prototype = {\n\t_init: function() {},\n\tdestroy: function() {\n\t\tthis.element.removeData(this.widgetName)\n\t\t\t.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')\n\t\t\t.removeAttr('aria-disabled');\n\t},\n\n\toption: function(key, value) {\n\t\tvar options = key,\n\t\t\tself = this;\n\n\t\tif (typeof key == \"string\") {\n\t\t\tif (value === undefined) {\n\t\t\t\treturn this._getData(key);\n\t\t\t}\n\t\t\toptions = {};\n\t\t\toptions[key] = value;\n\t\t}\n\n\t\t$.each(options, function(key, value) {\n\t\t\tself._setData(key, value);\n\t\t});\n\t},\n\t_getData: function(key) {\n\t\treturn this.options[key];\n\t},\n\t_setData: function(key, value) {\n\t\tthis.options[key] = value;\n\n\t\tif (key == 'disabled') {\n\t\t\tthis.element\n\t\t\t\t[value ? 'addClass' : 'removeClass'](\n\t\t\t\t\tthis.widgetBaseClass + '-disabled' + ' ' +\n\t\t\t\t\tthis.namespace + '-state-disabled')\n\t\t\t\t.attr(\"aria-disabled\", value);\n\t\t}\n\t},\n\n\tenable: function() {\n\t\tthis._setData('disabled', false);\n\t},\n\tdisable: function() {\n\t\tthis._setData('disabled', true);\n\t},\n\n\t_trigger: function(type, event, data) {\n\t\tvar callback = this.options[type],\n\t\t\teventName = (type == this.widgetEventPrefix\n\t\t\t\t? type : this.widgetEventPrefix + type);\n\n\t\tevent = $.Event(event);\n\t\tevent.type = eventName;\n\n\t\t// copy original event properties over to the new event\n\t\t// this would happen if we could call $.event.fix instead of $.Event\n\t\t// but we don't have a way to force an event to be fixed multiple times\n\t\tif (event.originalEvent) {\n\t\t\tfor (var i = $.event.props.length, prop; i;) {\n\t\t\t\tprop = $.event.props[--i];\n\t\t\t\tevent[prop] = event.originalEvent[prop];\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger(event, data);\n\n\t\treturn !($.isFunction(callback) && callback.call(this.element[0], event, data) === false\n\t\t\t|| event.isDefaultPrevented());\n\t}\n};\n\n$.widget.defaults = {\n\tdisabled: false\n};\n\n\n/** Mouse Interaction Plugin **/\n\n$.ui.mouse = {\n\t_mouseInit: function() {\n\t\tvar self = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn self._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif(self._preventClickEvent) {\n\t\t\t\t\tself._preventClickEvent = false;\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Prevent text selection in IE\n\t\tif ($.browser.msie) {\n\t\t\tthis._mouseUnselectable = this.element.attr('unselectable');\n\t\t\tthis.element.attr('unselectable', 'on');\n\t\t}\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\n\t\t// Restore text selection in IE\n\t\t($.browser.msie\n\t\t\t&& this.element.attr('unselectable', this._mouseUnselectable));\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\t// TODO: figure out why we have to use originalEvent\n\t\tevent.originalEvent = event.originalEvent || {};\n\t\tif (event.originalEvent.mouseHandled) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar self = this,\n\t\t\tbtnIsLeft = (event.which == 1),\n\t\t\telIsCancel = (typeof this.options.cancel == \"string\" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tself.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn self._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn self._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\t// preventDefault() is used to prevent the selection of text here -\n\t\t// however, in Safari, this causes select boxes not to be selectable\n\t\t// anymore, so this fix is needed\n\t\t($.browser.safari || event.preventDefault());\n\n\t\tevent.originalEvent.mouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.browser.msie && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\t\t\tthis._preventClickEvent = (event.target == this._mouseDownEvent.target);\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n};\n\n$.ui.mouse.defaults = {\n\tcancel: null,\n\tdistance: 1,\n\tdelay: 0\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/multipart/style.css",
    "content": "/********************************************\n   AUTHOR:  \t\t\tErwin Aligam \n   WEBSITE:   \t\t\thttp://www.styleshout.com/\n   TEMPLATE NAME: \tTechmania 1.0\n\tTEMPLATE CODE: \tS-0003\n    VERSION:         1.1          \t\n *******************************************/\n\t/********************************************\n   HTML ELEMENTS\n********************************************/ /* Top elements */\n\t/** { margin:0; padding: 0; }*/\nbody {\n\tbackground-color: #000;\n\tcolor: #555;\n\tfont: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif;\n\ttext-align: center;\n\tmargin: 15px 0;\n}\n\n/* links */\na {\n\tcolor: #213540;\n\tbackground: inherit;\n\ttext-decoration: none;\n}\n\na:hover {\n\tcolor: #3e4255;\n\ttext-decoration: underline;\n\tbackground: inherit;\n}\n\n/* headers */\nh1,h2,h3 {\n\tfont-family: 'Trebuchet MS', Arial, sans-serif;\n\tfont-weight: bold;\n}\n\nh1 {\n\tfont-size: 1.5em;\n\tmargin: 10px 15px;\n}\n\nh2 {\n\tfont-size: 1.3em;\n\ttext-transform: uppercase;\n\tcolor: #339900;\n\tmargin: 10px 15px;\n}\n\nh3 {\n\tfont-size: 1.1em;\n\tcolor: #333;\n\tmargin: 16px 0 0 18px;\n}\n\nh1,h2,h3 {\n\tpadding: 0;\n}\n\np {\n\tline-height: 1.4em;\n\tpadding: 0 15px;\n}\n\np.error {\n\tcolor: #CC0033;\n}\n\nul,ol {\n\tmargin: 10px 6px;\n\tpadding: 0 15px;\n\tcolor: #006699;\n}\n\nul span,ol span {\n\tcolor: #666666;\n}\n\n/* images */\nimg {\n\tborder: 2px solid #CCC;\n}\n\nimg.float-right {\n\tmargin: 5px 0px 10px 10px;\n}\n\nimg.float-left {\n\tmargin: 5px 10px 10px 0px;\n}\n\ncode {\n\tmargin: 5px 0;\n\tpadding: 10px;\n\ttext-align: left;\n\tdisplay: block;\n\toverflow: auto;\n\tfont: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;\n\t/* white-space: pre; */\n\tbackground: #FAFAFA;\n\tborder: 1px solid #EAEAEA;\n\tborder-left: 5px solid #72A545;\n}\n\nacronym {\n\tcursor: help;\n\tborder-bottom: 1px solid #777;\n}\n\nblockquote {\n\tmargin: 15px;\n\tpadding: 0 0 0 32px;\n\tbackground: #FAFAFA url(quote.gif) no-repeat 5px 10px !important;\n\tbackground-position: 8px 10px;\n\tborder: 1px solid #EAEAEA;\n\tborder-left: 5px solid #72A545;\n\tfont-weight: bold;\n}\n\n/* form elements */\nfieldset {\n\tmargin: 12px 12px 18px;\n\tpadding-left: 6px;\n\tborder: 1px solid #004080;\n\tcolor: #006699;\n}\n\nfieldset fieldset {\n\tborder: 1px solid #9ea190;\n\tmargin: 17px 14px;\n}\n\nform {\n\tmargin: 10px 15px;\n\tpadding: 0;\n}\n\nlabel {\n\tfont-weight: bold;\n\tmargin: 5px 3px 0 0;\n\twidth: 160px;\n\ttext-align: right;\n\tfloat: left;\n}\n\nlegend {\n\tfont-size: 1.2em;\n\tpadding: 0 12px;\n\tfont-weight: 900;\n\tbackground-color: #F9F9F9;\n}\n\nfieldset fieldset legend {\n\tfont-size: 1em;\n\tcolor: #1a2129;\n\tpadding: 0 18px;\n\tmargin-left: 75px;\n}\n\ninput {\n\tpadding: 3px;\n\tmargin: 4px 0;\n\tborder: 1px solid #CFCED3;\n\tfont: normal 1em Verdana, sans-serif;\n\tcolor: #777;\n}\n\ntextarea {\n\twidth: 400px;\n\tpadding: 4px;\n\tfont: normal 1em Verdana, sans-serif;\n\tborder: 1px solid #eee;\n\theight: 100px;\n\tdisplay: block;\n\tcolor: #777;\n}\n\ninput.button {\n\tmargin: 0;\n\tfont: bold 12px Arial, Sans-serif;\n\tborder: 1px solid #EAEAEA;\n\tpadding: 3px 4px;\n\tbackground: #CCC url(buttonbg.gif) repeat-x left bottom;\n\tcolor: #333; /* color: #339900; */\n\tcursor: pointer;\n}\n\ninput.submitbutton {\n\tbackground-color: #006699;\n\tcolor: #FFF;\n\tbackground-image: none;\n\tfont-weight: 900;\n\tborder: 1px solid #EAEAEA;\n\tmargin: 0 0 0 200px;\n}\n\n/* search */\n#sidebar #search {\n\tbackground: #f2f2f2;\n\tmargin: 0 15px;\n\tpadding: 5px 0;\n}\n\n#sidebar #search img {\n\tvertical-align: bottom;\n}\n\n#sidebar #search .textbox {\n\tbackground: #FFF url(input.png) no-repeat top left;\n\tborder: 1px solid #EAEAEA;\n\tfont-size: 11px;\n\tpadding: 3px;\n\twidth: 110px;\n}\n\n#sidebar #search input.searchbutton {\n\tmargin: 0;\n\tfont: bold 100% Arial, Sans-serif;\n\tborder: 1px solid #CCC;\n\tbackground: #CCC url(buttonbg.gif) repeat-x left bottom;\n\tpadding: 1px;\n\theight: 25px;\n\tcolor: #333;\n\twidth: 55px;\n}\n\n/*****************************\n      LAYOUT \n******************************/\n#wrap {\n\tmargin: 0 auto;\n\tpadding: 0;\n\ttext-align: left;\n\tbackground-color: #FFF;\n\twidth: 790px;\n}\n\n#content-wrap {\n\tclear: both;\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 790px;\n}\n\n/* header */\n#header {\n\tposition: relative;\n\tclear: left;\n\twidth: 790px;\n\theight: 137px;\n\tmargin: 0;\n\tpadding: 0;\n\tbackground: #000 url(headerbg.jpg) no-repeat left bottom;\n}\n\n#header h1#logo-text {\n\tfloat: right;\n\tmargin: 39px 58px 0 0;\n\tpadding: 0;\n\tfont: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif;\n\tletter-spacing: -2px;\n\tcolor: #FFF;\n\ttext-transform: none;\n\t/* change the values of top and right to adjust the position of the logo*/\n\ttop: 35px;\n\tright: 30px;\n}\n\n#header h2#slogan {\n\tfloat: right;\n\tmargin: 0 38px 0 0;\n\tpadding: 0;\n\tfont: bold 1.5em 'Trebuchet MS', Arial, Sans-serif;\n\ttext-transform: none;\n\tletter-spacing: 1px;\n\tcolor: #FFF;\n\tclear: both;\n\ttext-align: right;\n}\n\n#header h1#logo-text span {\n\tcolor: #CFCED3;\n}\n\n/* menu tabs */\n#header #header-tabs {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 25px;\n\tbackground: #000;\n\tfont: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif;\n}\n\n#header-tabs ul {\n\tmargin: 0;\n\tpadding: 2px 0px 0px 0px;\n\tlist-style: none;\n}\n\n#header-tabs li {\n\tdisplay: inline;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n#header-tabs a {\n\tfloat: left;\n\tbackground: url(tableft.gif) no-repeat left top;\n\tmargin: 0;\n\tpadding: 0 0 0 4px;\n\ttext-decoration: none;\n}\n\n#header-tabs a span {\n\tfloat: left;\n\tdisplay: block;\n\tbackground: url(tabright.gif) no-repeat right top;\n\tpadding: 7px 15px 4px 8px;\n\tcolor: #CCC;\n}\n\n/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n#header-tabs a span {\n\tfloat: none;\n}\n\n/* End IE5-Mac hack */\n#header-tabs a:hover span {\n\tcolor: #FFF;\n}\n\n#header-tabs a:hover {\n\tbackground-position: 0% -42px;\n}\n\n#header-tabs a:hover span {\n\tbackground-position: 100% -42px;\n}\n\n#header-tabs #current a {\n\tbackground-position: 0% -42px;\n}\n\n#header-tabs #current a span {\n\tbackground-position: 100% -42px;\n\tcolor: #FFF;\n}\n\n/* main content */\n#main {\n\twidth: 748px;\n\tmargin: 0;\n\tpadding: 8px 16px;\n\tbackground-color: #F9F9F9;\n\tborder-left: 5px solid #000;\n\tborder-right: 5px solid #000;\n}\n\n#main h1 {\n\tpadding: 8px 0 3px 25px;\n\ttext-transform: none;\n\tborder-bottom: 2px solid #f2f2f2;\n\tcolor: #339900;\n}\n\n/* sidebar */\n#sidebar { /*\tfloat: right;\n\twidth: 245px;\n\tmargin: 0 0 10px 0; padding: 0;\n\tbackground-color: inherit;\t*/\n\tdisplay: none;\n}\n\n#sidebar h1 {\n\tpadding: 8px 0px 3px 25px;\n\tbackground: url(square_arrow.gif) no-repeat 0% .7em;\n\ttext-transform: none;\n\tcolor: #339900;\n}\n\n#sidebar ul.sidemenu {\n\tlist-style: none;\n\tmargin: 10px 15px;\n\tpadding: 0;\n}\n\n#sidebar ul.sidemenu li {\n\tmargin-bottom: 1px;\n\tborder: 1px solid #f2f2f2;\n}\n\n#sidebar ul.sidemenu a {\n\tdisplay: block;\n\tfont-weight: bold;\n\tcolor: #333;\n\ttext-decoration: none;\n\tpadding: 2px 5px 2px 10px;\n\tbackground: #f2f2f2;\n\tborder-left: 5px solid #CCC;\n\tmin-height: 18px;\n}\n\n* html body #sidebar ul.sidemenu a {\n\theight: 18px;\n}\n\n#sidebar ul.sidemenu a:hover {\n\tpadding: 2px 5px 2px 10px;\n\tbackground: #f2f2f2;\n\tcolor: #339900;\n\tborder-left: 5px solid #72A545;\n}\n\n/* footer */\n#footer {\n\tclear: both;\n\theight: 40px;\n\tcolor: #CCC;\n\tbackground: #000;\n\tmargin: 0;\n\tfont-size: 92%;\n}\n\n#footer a {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: #FFF;\n}\n\n#footer #footer-left {\n\twidth: 68%;\n\tfloat: left;\n\ttext-align: left;\n\tmargin: 0;\n\tpadding: 10px;\n}\n\n#footer #footer-right {\n\twidth: 25%;\n\tfloat: right;\n\ttext-align: right;\n\tmargin: 0;\n\tpadding: 10px;\n}\n\n/* alignment classes */\n.float-left {\n\tfloat: left;\n}\n\n.float-right {\n\tfloat: right;\n}\n\n.align-left {\n\ttext-align: left;\n}\n\n.align-right {\n\ttext-align: right;\n}\n\n/* additional classes */\n.clear {\n\tclear: both;\n}\n\n.hide {\n\tdisplay: none;\n}\n\n.gray {\n\tcolor: #CCC;\n}\n\n.comments {\n\tcolor: #333;\n\tbackground: #FFF;\n\ttext-align: right;\n\tborder-top: 1px dashed #EFF0F1;\n\tborder-bottom: 1px dashed #EFF0F1;\n\tpadding: 5px 0;\n\tmargin-top: 20px;\n}\n\nhtml {\n\tmin-height: 100.1%;\n}\n\n/* ------ one ------------*/\nbody .mainText {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tfont-size: 12px;\n}\n\n#demoText h1,.mainText h1 {\n\tfont-size: 130%;\n\tcolor: #0099FF;\n\ttext-decoration: none;\n\tfont-family: Arial, Helvetica, sans-serif;\n\tmargin: 5px 4px 5px 24px;\n\tbackground: none;\n\tpadding: 0;\n\tborder: none;\n\ttext-transform: capitalize;\n}\n\n.mainText h2 {\n\tfont-size: 110%;\n\tcolor: #000033;\n\tfont-family: Arial, Helvetica, sans-serif;\n\ttext-decoration: none;\n\tbackground: none;\n\tmargin: 4px 32px 6px 22px;\n\ttext-transform: capitalize;\n}\n\n.mainText h3 {\n\tfont-size: 120%;\n\tfont-weight: 900;\n\tmargin: 14px 0 0 0;\n\ttext-align: center;\n\tcolor: #000033;\n}\n\n.mainText table {\n\twidth: 95%;\n\tborder: 1px solid #0099FF;\n\tborder-collapse: collapse;\n\tmargin: 18px 7px;\n}\n\n.mainText table td {\n\tbackground-color: #99CCFF;\n\tcolor: #000033;\n\tpadding: 4px;\n}\n\n.mainText table th {\n\tbackground-color: #000033;\n\tcolor: #99CCFF;\n\tpadding: 4px;\n}\n\n.mainText .linkPar a {\n\tcolor: #000033;\n\ttext-decoration: underline;\n}\n\n.mainText .linkPar a:hover {\n\tcolor: #660033;\n\ttext-decoration: none;\n\tfont-weight: 900;\n}\n\n.pusher {\n\tcursor: pointer;\n\tpadding: 3px 10px 3px 22px;\n\tfont-weight: 900;\n\tfont-size: 14px;\n}\n\n/* ------------- form specific styles are here  -------------- */\nfieldset {\n\tmargin: 0;\n\tborder: 1px solid #C3DE00;\n\tpadding: 10px;\n\t/*border:none;\npadding:0;*/\n\tcolor: #7563A5;\n}\n\nlegend {\n\tbackground-color: #FFFFFF;\n\ttext-align: center;\n\tcolor: #097981;\n\tpadding: 0 12px;\n}\n\nlabel {\n\ttext-align: right;\n\twidth: 298px;\n\tborder-right: 1px dotted #099;\n\tpadding-right: 5px;\n\tmargin: 0 0 8px 0;\n\tfloat: left;\n\tclear: left;\n\tdisplay: block;\n\tcolor: #7563A5;\n}\n\nlabel.checkbox,label.textarea {\n\tborder: none;\n}\n\nlabel.lgfield {\n\tborder: none;\n\ttext-align: center;\n\tclear: both;\n\tfloat: none;\n\twidth: 100%;\n}\n\nfieldset input,fieldset select,fieldset textarea {\n\tmargin-left: 10px;\n\tmargin-bottom: 8px;\n}\n\nselect.longfield {\n\tmargin: 0 0 0 115px;\n}\n\ninput [type=\"radio\"],input [type=\"checkbox\"] {\n\tmargin: 2px 0 0 4px;\n}\n\ntextarea {\n\twidth: 250px;\n\tfloat: left;\n}\n\n/*Get Help Form Styles*/\np.formDisclaimer {\n\ttext-align: center;\n\tmargin: 32px 24px 12px 0;\n\tfont-style: italic;\n}\n\ndiv.buttonWrapper {\n\tmargin: 28px 0 14px 0;\n\tclear: both;\n\ttext-align: center;\n}\n\n.formspacer {\n\theight: 1em;\n\tclear: both;\n}\n\n.hideField {\n\tdisplay: none;\n}\n\n.pushOpen {\n\theight: 18em;\n}\n\n/* ----- error message for field validation ----- */\n#stepForm label.warning {\n\ttext-align: left;\n\twidth: auto;\n\tpadding: 0;\n\tmargin: 0 0 0 10px;\n\tfloat: none;\n\tclear: none;\n\tdisplay: inline;\n\tcolor: #CC3366;\n\tfont-size: 10px;\n\tborder: none;\n\tborder-top: 1px dotted #CC3366;\n}\n\ndiv.requiredNotice {\n\twidth: 140px;\n\tfloat: right;\n\tmargin: 0 24px 0 0;\n\tpadding: 0;\n}\n\nh3.stepHeader {\n\ttext-align: left;\n\tfont-size: 16px;\n\tfont-weight: bold;\n\tmargin: 0 0 24px 24px;\n\tcolor: #676cac;\n}\n\nul#stepForm,ul#stepForm li {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nul#stepForm li {\n\tlist-style: none;\n}\n\n/* Form Buttons  */\ninput.submitbutton,.nextbutton,.prevbutton {\n\twidth: 100px;\n\theight: 40px;\n\tbackground-color: #663399;\n\tpadding: 4px;\n\tborder: 1px solid #339933;\n\tcursor: pointer;\n\ttext-align: center;\n\tcolor: #FFFFFF;\n\tmargin: 7px;\n}\n\ninput.submitbutton {\n\tbackground-color: #006699;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/radio-checkbox-select-demo.html",
    "content": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n// only for demo purposes\n$.validator.setDefaults({\n\tsubmitHandler: function() {\n\t\talert(\"submitted!\");\n\t}\n});\n\t\n$.metadata.setType(\"attr\", \"validate\");\n\n$(document).ready(function() {\n\t$(\"#form1\").validate();\n\t$(\"#selecttest\").validate();\n});\n</script>\n\n<style type=\"text/css\">\n.block { display: block; }\nform.cmxform label.error { display: none; }\t\n</style>\n\n</head>\n<body>\n\n<h1 id=\"banner\"><a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Demo</h1>\n<div id=\"main\">\n\n<form class=\"cmxform\" id=\"form1\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>Validating a form with a radio and checkbox buttons</legend>\n\t\t<fieldset>\n\t\t\t<legend>Gender</legend>\n\t\t\t<label for=\"gender_male\">\n\t\t\t\t<input  type=\"radio\" id=\"gender_male\" value=\"m\" name=\"gender\" validate=\"required:true\" />\n\t\t\t\tMale\n\t\t\t</label>\n\t\t\t<label for=\"gender_female\">\n\t\t\t\t<input  type=\"radio\" id=\"gender_female\" value=\"f\" name=\"gender\"/>\n\t\t\t\tFemale\n\t\t\t</label>\n\t\t\t<label for=\"gender\" class=\"error\">Please select your gender</label>\n\t\t</fieldset>\n\t\t<fieldset>\n\t\t\t<legend>Family</legend>\n\t\t\t<label for=\"family_single\">\n\t\t\t\t<input  type=\"radio\" id=\"family_single\" value=\"s\" name=\"family\" validate=\"required:true\" />\n\t\t\t\tSingle\n\t\t\t</label>\n\t\t\t<label for=\"family_married\">\n\t\t\t\t<input  type=\"radio\" id=\"family_married\" value=\"m\" name=\"family\" />\n\t\t\t\tMarried\n\t\t\t</label>\n\t\t\t<label for=\"family_other\">\n\t\t\t\t<input  type=\"radio\" id=\"family_other\" value=\"o\" name=\"family\" />\n\t\t\t\tOther\n\t\t\t</label>\n\t\t\t<label for=\"family\" class=\"error\">Please select your family status.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" validate=\"required:true\" />\n\t\t\t<br/>\n\t\t\t<label for=\"agree\" class=\"error block\">Please agree to our policy!</label>\n\t\t</p>\n\t\t<fieldset>\n\t\t\t<legend>Spam</legend>\n\t\t\t<label for=\"spam_email\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_email\" value=\"email\" name=\"spam[]\" validate=\"required:true, minlength:2\" />\n\t\t\t\tSpam via E-Mail\n\t\t\t</label>\n\t\t\t<label for=\"spam_phone\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_phone\" value=\"phone\" name=\"spam[]\" />\n\t\t\t\tSpam via Phone\n\t\t\t</label>\n\t\t\t<label for=\"spam_mail\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"spam_mail\" value=\"mail\" name=\"spam[]\" />\n\t\t\t\tSpam via Mail\n\t\t\t</label>\n\t\t\t<label for=\"spam[]\" class=\"error\">Please select at least two types of spam.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form id=\"selecttest\">\n\t<h2>Some tests with selects</h2>\n\t<p>\n\t\t<label for=\"jungle\">Please select a jungle noun</label><br/>\n\t\t<select id=\"jungle\" name=\"jungle\" title=\"Please select something!\" validate=\"required:true\">\n\t\t\t<option value=\"\"></option>\n\t\t\t<option value=\"1\">Buga</option>\n\t\t\t<option value=\"2\">Baga</option>\n\t\t\t<option value=\"3\">Oi</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"fruit\">Please select at least two fruits</label><br/>\n\t\t<select id=\"fruit\" name=\"fruit\" title=\"Please select at least two fruits\" validate=\"required:true, minlength:2\" multiple=\"multiple\">\n\t\t\t<option value=\"b\">Banana</option>\n\t\t\t<option value=\"a\">Apple</option>\n\t\t\t<option value=\"p\">Peach</option>\n\t\t\t<option value=\"t\">Turtle</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"vegetables\">Please select no more than two vergetables</label><br/>\n\t\t<select id=\"vegetables\" name=\"vegetables\" title=\"Please select no more than two vergetables\" validate=\"required:true, maxlength:2\" multiple=\"multiple\">\n\t\t\t<option value=\"p\">Potato</option>\n\t\t\t<option value=\"t\">Tomato</option>\n\t\t\t<option value=\"s\">Salad</option>\n\t\t</select>\n\t</p>\n\t\n\t<p>\n\t\t<label for=\"cars\">Please select at least two cars, but no more than three</label><br/>\n\t\t<select id=\"cars\" name=\"cars\" title=\"Please select at least two cars, but no more than three\" validate=\"required:true, rangelength:[2,3]\" multiple=\"multiple\">\n\t\t\t<option value=\"m_sl\">Mercedes SL</option>\n\t\t\t<option value=\"o_c\">Opel Corsa</option>\n\t\t\t<option value=\"vw_p\">VW Polo</option>\n\t\t\t<option value=\"t_s\">Titanic Skoda</option>\n\t\t</select>\n\t</p>\n\t\n\t<p><input type=\"submit\" value=\"Validate Selecttests\"/></p>\n</form>\n\n<a href=\"index.html\">Back to main page</a>\n\n</div>\n\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tabs/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>jQuery UI tabs integration demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css\" />\n\n<script src=\"../../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js\" type=\"text/javascript\"></script>\n<script src=\"../../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script id=\"demo\" type=\"text/javascript\">\n$(document).ready(function() {\n\tvar tabs = $(\"#tabs\").tabs();\n\tvar validator = $(\"#signupform\").validate({\n\t\tgroups: {\n\t\t\tbirthdate: \"birthdateDay birthdateMonth birthdateYear\"\n\t\t},\n\t\terrorPlacement: function(label, element) {\n\t\t\tif (/^birthdate/.test(element[0].name)) {\n\t\t\t\tlabel.insertAfter(\"#birthdateYear\");\n\t\t\t} else {\n\t\t\t\tlabel.insertAfter(element);\n\t\t\t}\n\t\t}\n\t});\n\t\n\t// validate the other two selects when one changes to update the whole group\n\tvar birthdaySelects = $(\"#birthdateGroup select\").click(function() {\n\t\tbirthdaySelects.not(this).valid();\n\t})\n\t\n\t// overwrite focusInvalid to activate tab with invalid elements\n\tvalidator.focusInvalid = function() {\n\t\tif( this.settings.focusInvalid ) {\n\t\t\ttry {\n\t\t\t\tvar focused = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(\":visible\");\n\t\t\t\ttabs.tabs(\"select\", tabs.find(\">div\").index(focused.parent().parent()));\n\t\t\t\tfocused.focus();\n\t\t\t} catch(e) {\n\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t}\n\t\t}\n\t};\n});\n</script>\n\n<style>\n\tbody { font-size: 65.2% }\n\tlabel { display: inline-block; width: 8em; }\n\tlabel.error { color: red; margin-left: 0.5em; width: 20em; }\n</style>\n\n</head>\n<body>\n\t\n<form id=\"signupform\">\n\t\n\t<div id=\"tabs\">\n\t\t<ul>\n\t\t\t<li><a href=\"#logindata\">Login data</a></li>\n\t\t\t<li><a href=\"#personaldata\">Personal data</a></li>\n\t\t\t<li><a href=\"#subscriptions\">Subscriptions</a></li>\n\t\t</ul>\n\t\t<div id=\"logindata\">\n\t\t\t<p>\n\t\t\t\t<label for=\"username\">Username</label>\n\t\t\t\t<input id=\"username\" name=\"username\" class=\"required\" minlength=\"3\" maxlength=\"20\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"email\">Email address</label>\n\t\t\t\t<input id=\"email\" name=\"email\" class=\"required email\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\">Password</label>\n\t\t\t\t<input name=\"password\" type=\"password\" class=\"required\" id=\"password\" minlength=\"4\" maxlength=\"50\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"confirmpassword\">Confirm Password</label>\n\t\t\t\t<input name=\"confirmpassword\" type=\"password\" class=\"required\" equalTo=\"#password\" id=\"confirmpassword\" />\n\t\t\t</p>\n\t\t</div>\n\t\t<div id=\"personaldata\">\n\t\t\t<p>\n\t\t\t\t<label for=\"street\">Street</label>\n\t\t\t\t<input id=\"street\" name=\"street\" class=\"required\" minlength=\"3\" maxlength=\"50\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"city\">City</label>\n\t\t\t\t<input id=\"city\" name=\"city\" class=\"required\" minlength=\"3\" maxlength=\"50\" type=\"text\" />\n\t\t\t</p>\n\t\t\t<p id=\"birthdateGroup\">\n\t\t\t\t<label for=\"birthdateDay\">Birthdate</label>\n\t\t\t\t<select id=\"birthdateDay\" name=\"birthdateDay\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Day</option>\n\t\t\t\t\t<option>1</option>\n\t\t\t\t\t<option>2</option>\n\t\t\t\t\t<option>3</option>\n\t\t\t\t\t<option>...</option>\n\t\t\t\t</select>\n\t\t\t\t<select id=\"birthdateMonth\" name=\"birthdateMonth\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Month</option>\n\t\t\t\t\t<option>1</option>\n\t\t\t\t\t<option>2</option>\n\t\t\t\t\t<option>3</option>\n\t\t\t\t\t<option>4</option>\n\t\t\t\t\t<option>5</option>\n\t\t\t\t\t<option>6</option>\n\t\t\t\t\t<option>7</option>\n\t\t\t\t\t<option>8</option>\n\t\t\t\t\t<option>9</option>\n\t\t\t\t\t<option>10</option>\n\t\t\t\t\t<option>11</option>\n\t\t\t\t\t<option>12</option>\n\t\t\t\t</select>\n\t\t\t\t<select id=\"birthdateYear\" name=\"birthdateYear\" class=\"required\">\n\t\t\t\t\t<option value=\"\">Year</option>\n\t\t\t\t\t<option>1950</option>\n\t\t\t\t\t<option>1951</option>\n\t\t\t\t\t<option>1952</option>\n\t\t\t\t\t<option>1953</option>\n\t\t\t\t\t<option>1954</option>\n\t\t\t\t\t<option>1955</option>\n\t\t\t\t\t<option>...</option>\n\t\t\t\t</select>\n\t\t\t</p>\n\t\t</div>\n\t\t<div id=\"subscriptions\">\n\t\t\t<p>\n\t\t\t\t<label for=\"weekly\">Weekly Newsletter</label>\n\t\t\t\t<input id=\"weekly\" name=\"weekly\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"updates\">Product Updates</label>\n\t\t\t\t<input id=\"updates\" name=\"updates\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<label for=\"terms\">Terms and conditions</label>\n\t\t\t\t<input id=\"terms\" name=\"terms\" class=\"required\" type=\"checkbox\" />\n\t\t\t</p>\n\t\t</div>\n\t</div>\n\n\t<input type=\"submit\" />\n</form>\n\n\n\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/themerollered.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>jQuery validation plug-in - ThemeRolldered demo</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"http://code.jquery.com/ui/jquery-ui-git.css\" />\n\n<style type=\"text/css\">\nbody { font-size: 62.5%; }\nlabel { display: inline-block; width: 100px; }\nlegend { padding: 0.5em; }\nfieldset fieldset label { display: block; }\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; }\n#commentForm label.error, #commentForm button.submit { margin-left: 253px; }\n#signupForm { width: 670px; }\n#signupForm label.error {\n\tmargin-left: 10px;\n\twidth: auto;\n\tdisplay: inline;\n}\n#newsletter_topics label.error {\n\tdisplay: none;\n\tmargin-left: 103px;\n}\n</style>\n\n</head>\n<body>\n\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<legend class=\"ui-widget ui-widget-header ui-corner-all\">Please provide your name, email address (won't be published) and a comment</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" class=\"ui-widget-content\" minlength=\"2\" required type=\"text\" />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"ui-widget-content\" type=\"email\" required />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" name=\"url\" class=\"ui-widget-content\" value=\"\" type=\"url\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"ui-widget-content\" required></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<button class=\"submit\" type=\"submit\">Submit</button>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<form class=\"cmxform\" id=\"signupForm\" method=\"get\" action=\"\">\n\t<fieldset class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<legend class=\"ui-widget ui-widget-header ui-corner-all\">Validating a complete form</legend>\n\t\t<p>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"username\">Username</label>\n\t\t\t<input id=\"username\" name=\"username\" type=\"text\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"password\">Password</label>\n\t\t\t<input id=\"password\" name=\"password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"confirm_password\">Confirm password</label>\n\t\t\t<input id=\"confirm_password\" name=\"confirm_password\" type=\"password\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"email\">Email</label>\n\t\t\t<input id=\"email\" name=\"email\" type=\"email\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"agree\">Please agree to our policy</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"agree\" name=\"agree\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"newsletter\">I'd like to receive the newsletter</label>\n\t\t\t<input type=\"checkbox\" class=\"checkbox\" id=\"newsletter\" name=\"newsletter\" />\n\t\t</p>\n\t\t<fieldset id=\"newsletter_topics\" class=\"ui-widget-content ui-corner-all\">\n\t\t\t<legend class=\"ui-widget-header ui-corner-all\">Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>\n\t\t\t<label for=\"topic_marketflash\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_marketflash\" value=\"marketflash\" name=\"topic\" />\n\t\t\t\tMarketflash\n\t\t\t</label>\n\t\t\t<label for=\"topic_fuzz\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_fuzz\" value=\"fuzz\" name=\"topic\" />\n\t\t\t\tLatest fuzz\n\t\t\t</label>\n\t\t\t<label for=\"topic_digester\">\n\t\t\t\t<input type=\"checkbox\" id=\"topic_digester\" value=\"digester\" name=\"topic\" />\n\t\t\t\tMailing list digester\n\t\t\t</label>\n\t\t\t<label for=\"topic\" class=\"error\">Please select at least two topics you'd like to receive.</label>\n\t\t</fieldset>\n\t\t<p>\n\t\t\t<button class=\"submit\" type=\"submit\">Submit</button>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<script src=\"../lib/jquery-1.6.1.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n<script src=\"http://code.jquery.com/ui/jquery-ui-git.js\"></script>\n<script type=\"text/javascript\">\n$.validator.setDefaults({\n\tsubmitHandler: function() { alert(\"submitted!\"); },\n\tshowErrors: function(map, list) {\n\t\t// there's probably a way to simplify this\n\t\tvar focussed = document.activeElement;\n\t\tif (focussed && $(focussed).is(\"input, textarea\")) {\n\t\t\t$(this.currentForm).tooltip(\"close\", { currentTarget: focussed }, true)\n\t\t}\n\t\tthis.currentElements.removeAttr(\"title\").removeClass(\"ui-state-highlight\");\n\t\t$.each(list, function(index, error) {\n\t\t\t$(error.element).attr(\"title\", error.message).addClass(\"ui-state-highlight\");\n\t\t});\n\t\tif (focussed && $(focussed).is(\"input, textarea\")) {\n\t\t\t$(this.currentForm).tooltip(\"open\", { target: focussed });\n\t\t}\n\t}\n});\n\n(function() {\n\t// use custom tooltip; disable animations for now to work around lack of refresh method on tooltip\n\t$(\"#commentForm, #signupForm\").tooltip({\n\t\tshow: false,\n\t\thide: false\n\t});\n\n\t// validate the comment form when it is submitted\n\t$(\"#commentForm\").validate();\n\n\t// validate signup form on keyup and submit\n\t$(\"#signupForm\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\",\n\t\t\tlastname: \"required\",\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 5,\n\t\t\t\tequalTo: \"#password\"\n\t\t\t},\n\t\t\temail: {\n\t\t\t\trequired: true,\n\t\t\t\temail: true\n\t\t\t},\n\t\t\ttopic: {\n\t\t\t\trequired: \"#newsletter:checked\",\n\t\t\t\tminlength: 2\n\t\t\t},\n\t\t\tagree: \"required\"\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: \"Please enter your firstname\",\n\t\t\tlastname: \"Please enter your lastname\",\n\t\t\tusername: {\n\t\t\t\trequired: \"Please enter a username\",\n\t\t\t\tminlength: \"Your username must consist of at least 2 characters\"\n\t\t\t},\n\t\t\tpassword: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\"\n\t\t\t},\n\t\t\tconfirm_password: {\n\t\t\t\trequired: \"Please provide a password\",\n\t\t\t\tminlength: \"Your password must be at least 5 characters long\",\n\t\t\t\tequalTo: \"Please enter the same password as above\"\n\t\t\t},\n\t\t\temail: \"Please enter a valid email address\",\n\t\t\tagree: \"Please accept our policy\"\n\t\t}\n\t});\n\n\t// propose username by combining first- and lastname\n\t$(\"#username\").focus(function() {\n\t\tvar firstname = $(\"#firstname\").val();\n\t\tvar lastname = $(\"#lastname\").val();\n\t\tif(firstname && lastname && !this.value) {\n\t\t\tthis.value = firstname + \".\" + lastname;\n\t\t}\n\t});\n\n\t//code to hide topic selection, disable for demo\n\tvar newsletter = $(\"#newsletter\");\n\t// newsletter topics are optional, hide at first\n\tvar inital = newsletter.is(\":checked\");\n\tvar topics = $(\"#newsletter_topics\")[inital ? \"removeClass\" : \"addClass\"](\"gray\");\n\tvar topicInputs = topics.find(\"input\").attr(\"disabled\", !inital);\n\t// show when newsletter is checked\n\tnewsletter.click(function() {\n\t\ttopics[this.checked ? \"removeClass\" : \"addClass\"](\"gray\");\n\t\ttopicInputs.attr(\"disabled\", !this.checked);\n\t});\n\n\t$(\"#signupForm input:not(:submit)\").addClass(\"ui-widget-content\");\n\n\t$(\":submit\").button();\n})();\n</script>\n<script src=\"http://jqueryui.com/themeroller/themeswitchertool/\"></script>\n<script>\n$.fn.themeswitcher && $('<div/>').css({\n\t\tposition: \"absolute\",\n\t\tright: 10,\n\t\ttop: 10\n\t}).appendTo(document.body).themeswitcher();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>jQuery Validation plugin: integration with TinyMCE</title>\n\n<script type=\"text/javascript\" src=\"../../lib/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"../../jquery.validate.js\"></script>\n<script type=\"text/javascript\" src=\"tiny_mce.js\"></script>\n<script type=\"text/javascript\">\n\ttinyMCE.init({\n\t\tmode : \"textareas\",\n\t\ttheme : \"simple\",\n\t\t// update validation status on change\n\t\tonchange_callback: function(editor) {\n\t\t\ttinyMCE.triggerSave();\n\t\t\t$(\"#\" + editor.id).valid();\n\t\t}\n\t});\n\t$(function() {\n\t\tvar validator = $(\"#myform\").submit(function() {\n\t\t\t// update underlying textarea before submit validation\n\t\t\ttinyMCE.triggerSave();\n\t\t}).validate({\n\t\t\tignore: \"\",\n\t\t\trules: {\n\t\t\t\ttitle: \"required\",\n\t\t\t\tcontent: \"required\"\n\t\t\t},\n\t\t\terrorPlacement: function(label, element) {\n\t\t\t\t// position error label after generated textarea\n\t\t\t\tif (element.is(\"textarea\")) {\n\t\t\t\t\tlabel.insertAfter(element.next());\n\t\t\t\t} else {\n\t\t\t\t\tlabel.insertAfter(element)\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tvalidator.focusInvalid = function() {\n\t\t\t// put focus on tinymce on submit validation\n\t\t\tif( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\tvar toFocus = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []);\n\t\t\t\t\tif (toFocus.is(\"textarea\")) {\n\t\t\t\t\t\ttinyMCE.get(toFocus.attr(\"id\")).focus();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttoFocus.filter(\":visible\").focus();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n</script>\n<!-- /TinyMCE -->\n\n</head>\n<body>\n\n<form id=\"myform\" action=\"\">\n\t<h3>TinyMCE and Validation Plugin integration example</h3>\n\n\t<label>Some other field</label>\n\t<input name=\"title\" />\n\n\t<br/>\n\t\n\t<label>Some richt text</label>\n\t<textarea id=\"content\" name=\"content\" rows=\"15\" cols=\"80\" style=\"width: 80%\"></textarea>\n\n\t<br />\n\t<input type=\"submit\" name=\"save\" value=\"Submit\" />\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/editor_template.js",
    "content": "(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+\"/skins/\"+s.skin+\"/content.css\");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+\"/skins/\"+s.skin+\"/ui.css\");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar(\"tools1\");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+\".\"+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/langs/en.js",
    "content": "tinyMCE.addI18n('en.simple',{\nbold_desc:\"Bold (Ctrl+B)\",\nitalic_desc:\"Italic (Ctrl+I)\",\nunderline_desc:\"Underline (Ctrl+U)\",\nstriketrough_desc:\"Strikethrough\",\nbullist_desc:\"Unordered list\",\nnumlist_desc:\"Ordered list\",\nundo_desc:\"Undo (Ctrl+Z)\",\nredo_desc:\"Redo (Ctrl+Y)\",\ncleanup_desc:\"Cleanup messy code\"\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/themes/simple/skins/default/ui.css",
    "content": "/* Reset */\n.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}\n\n/* Containers */\n.defaultSimpleSkin {position:relative}\n.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}\n.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}\n.defaultSimpleSkin .mceToolbar {height:24px;}\n\n/* Layout */\n.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}\n.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}\n\n/* Button */\n.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}\n.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\n.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}\n.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\n\n/* Separator */\n.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}\n\n/* Theme */\n.defaultSimpleSkin span.mce_bold {background-position:0 0}\n.defaultSimpleSkin span.mce_italic {background-position:-60px 0}\n.defaultSimpleSkin span.mce_underline {background-position:-140px 0}\n.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}\n.defaultSimpleSkin span.mce_undo {background-position:-160px 0}\n.defaultSimpleSkin span.mce_redo {background-position:-100px 0}\n.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}\n.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}\n.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/demo/tinymce/tiny_mce.js",
    "content": "var tinymce={majorVersion:'3',minorVersion:'2.1.1',releaseDate:'2008-11-27',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;t.isAir=/adobeair/i.test(ua);if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\\/\\/[^\\/]+$/.test(v))v+='/';base=v?v.match(/.*\\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\\s*|\\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);cn=s[3].match(/(^|\\.)(\\w+)$/i)[2];ns=t.createNS(s[3].replace(/\\.\\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\\.(\\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf(':/')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(u);each([\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"],function(v,i){var s=u[i];if(s)s=s.replace(/\\(mce_at\\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\\/?(\\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;if(u===\"./\")return u;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i,l;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0,l=base.length;i<l;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0,l=items.length;i<l;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i<l;i++)out+=\"../\";for(i=bp-1,l=items.length;i<l;i++){if(i!=bp-1)out+=\"/\"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==\".\")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+\"=\",b;if(!c)return;b=c.indexOf(\"; \"+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(\";\",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+\"=\"+escape(v)+((e)?\"; expires=\"+e.toGMTString():\"\")+((p)?\"; path=\"+escape(p):\"\")+((d)?\"; domain=\"+d:\"\")+((s)?\"; secure\":\"\");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\\bb\\tt\\nn\\ff\\rr\\\"\"\\'\\'\\\\\\\\';return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\\\u'+'0000'.substring(a.length)+a;})+'\"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',\"':'\"')+i+'\":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\\w]+$/,elmPattern:/^[\\w_*]+$/,elmClassPattern:/^([\\w_]*)\\.([\\w_]+)$/,props:{\"for\":\"htmlFor\",\"class\":\"className\",className:\"className\",checked:\"checked\",disabled:\"disabled\",maxlength:\"maxLength\",readonly:\"readOnly\",selected:\"selected\",value:\"value\",id:\"id\",name:\"name\",type:\"type\"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode==\"CSS1Compat\";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\\w\\\\*]+)?(?:#([\\w\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@([\\w\\\\]+)([\\^\\$\\*!]?=)([\\w\\\\]+)\\])?(?:\\:([\\w\\\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+=\"[@id='\"+v[2]+\"']\";if(v[3]){each(v[3].split('.'),function(n){xp+=\"[@class = '\"+n+\"' or contains(concat(' ', @class, ' '), ' \"+n+\" ')]\";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=t.selectorRe.exec(v);p[1]=p[1]||'*';cs+='find(\"'+p[1]+'\", function(n) {';if(p[2])cs+='if (n.id !== \"'+p[2]+'\") return;';if(p[3]){cs+='var c = \" \" + n.className + \" \";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(\" '+v+' \") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'=\"'+t.encode(a[k])+'\"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\\-0-9\\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':\"alpha(opacity=\"+(v*100)+\")\";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case\"style\":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case\"class\":e.className=v||'';break;case\"src\":case\"href\":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case\"shape\":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute(\"mce_\"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n===\"class\"&&v)v=v.replace(/(apple|webkit)\\-[a-z\\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\\s+anonymous\\(\\)\\s+\\{\\s+(.*)\\s+\\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,\"display\",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\\([^\\)]+\\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\\(([^\\)]+)\\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\\([^\\)]+\\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\\([\\'\\\"]?([^\\)\\'\\\"]+)[\\'\\\"]?\\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress(\"border\",\"\",\"border\");compress(\"border\",\"-width\",\"border-width\");compress(\"border\",\"-color\",\"border-color\");compress(\"border\",\"-style\",\"border-style\");compress(\"padding\",\"\",\"padding\");compress(\"margin\",\"\",\"margin\");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp(\"(^|\\\\s+)\"+c+\"(\\\\s+|$)\",\"g\");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\\/p>|<p([^>]+)><\\/p>|<p[^\\/+]\\/>/gi,'<p$1 mce_keep=\"true\">&nbsp;</p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName(\"p\");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp=\"1\">');h=h.replace(/<\\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName(\"DIV\");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/&apos;/g,'&#39;');h=h.replace(/\\s+(disabled|checked|readonly|selected)\\s*=\\s*[\\\"\\']?(false|0)[\\\"\\']?/gi,'');}h=h.replace(/<a( )([^>]+)\\/>|<a\\/>/gi,'<a$1$2></a>');if(s.keep_values){if(/<script|style/.test(h)){function trim(s){s=s.replace(/(<!--\\[CDATA\\[|\\]\\]-->)/g,'\\n');s=s.replace(/^[\\r\\n]*|[\\r\\n]*$/g,'');s=s.replace(/^\\s*(\\/\\/\\s*<!--|\\/\\/\\s*<!\\[CDATA\\[|<!--|<!\\[CDATA\\[)[\\r\\n]*/g,'');s=s.replace(/\\s*(\\/\\/\\s*\\]\\]>|\\/\\/\\s*-->|\\]\\]>|-->|\\]\\]-->)\\s*$/g,'');return s;};h=h.replace(/<script([^>]+|)>([\\s\\S]*?)<\\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type=\"text/javascript\"';if(b)b='<!--\\n'+b+'\\n// -->';return'<mce:script'+a+'>'+b+'</mce:script>';});h=h.replace(/<style([^>]+|)>([\\s\\S]*?)<\\/style>/g,function(v,a,b){b=trim(b);return'<mce:style'+a+'><!--\\n'+b+'\\n--></mce:style><style'+a+' mce_bogus=\"1\">'+b+'</style>';});}h=h.replace(/<!\\[CDATA\\[([\\s\\S]+)\\]\\]>/g,'<!--[CDATA[$1]]-->');h=h.replace(/<([\\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\\([^\\)]+\\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\\([\\'\\\"]?([^\\)\\'\\\"]+)\\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'=\"'+c+'\" mce_'+b+'=\"'+u+'\"';};a=a.replace(/ (src|href|style|coords|shape)=[\\\"]([^\\\"]+)[\\\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\\']([^\\']+)[\\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\\s\\\"\\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement(\"body\");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement(\"body\");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement(\"div\");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\\\"]/g,function(c,b){switch(c){case'&':return'&amp;';case'\"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\\s*rgb\\s*?\\(\\s*?([0-9]+)\\s*?,\\s*?([0-9]+)\\s*?,\\s*?([0-9]+)\\s*?\\)\\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\\s*|\\s*$|^\\s\\./g,\"\");if(/\\.mce/.test(v)||!/\\.[\\w\\-]+$/.test(v))return;ov=v;v=v.replace(/.*\\.([a-z0-9_\\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\\:\\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\\'javascript:\"\"\\';><\\/script>');DOM.get(\"__ie_onload\").onreadystatechange=function(){if(this.readyState==\"complete\"){Event._pageInit();DOM.get(\"__ie_onload\").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:\"\"'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\\n\\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;each(['onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent'],function(e){t[e]=new tinymce.util.Dispatcher(t);});tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create(\"body\"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';t.onBeforeGetContent.dispatch(t,s);if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\\s/.test(e.innerHTML))wb=' ';if(/\\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;s.content=t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;t.onGetContent.dispatch(t,s);return s.content;},setContent:function(h,s){var t=this,r=t.getRng(),c,d=t.win.document;s=s||{format:'html'};s.set=true;h=s.content=t.dom.processHTML(h);t.onBeforeSetContent.dispatch(t,s);h=s.content;if(r.insertNode){h+='<span id=\"__caret\">_</span>';r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));c=t.dom.get('__caret');r=d.createRange();r.setStartBefore(c);r.setEndAfter(c);t.setRng(r);d.execCommand('Delete',false,null);t.dom.remove('__caret');}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}t.onSetContent.dispatch(t,s);},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||r.collapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(tinymce.isWebKit&&s.anchorNode&&s.anchorNode.nodeType==1)return s.anchorNode.childNodes[s.anchorOffset];if(r.startContainer==r.endContainer){if(r.startOffset-r.endOffset<2){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement(\"html\"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(\"\"));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){if(tinymce.isIE)v=v.replace(/^\\-|\\-$/g,' ');this.node.appendChild(this.doc.createComment(v.replace(/\\-\\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\\?[^?]+\\?>|<html>|<\\/html>|<html\\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\\/>/g,' />');if(this.valid)h=h.replace(/\\%MCGT%/g,'&gt;');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str=\"\";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(\" \"+t.encode(n)+'=\"'+t.encode(v)+'\"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&\"]/g,function(v){switch(v){case'<':return'&lt;';case'>':return'&gt;';case'&':return'&amp;';case'\"':return'&quot;';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\\:\\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\\t',indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:'xhtml'},s);t.dom=s.dom;if(s.remove_redundant_brs){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<br \\/>(\\s*<\\/li>)/g,'$1');});}if(s.element_format=='html'){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<([^>]+) \\/>/g,'<$1>');});}if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\\[|\\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\\[|\\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\\-])?([\\w*.?~_\\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\\/pre>)/g,encode:1},{pattern:/(<!--\\[CDATA\\[)(.*?)(\\]\\]-->)/g}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\\s+<\\/p>|<p([^>]+)>\\s+<\\/p>/g,s.entity_encoding=='numeric'?'<p$1>&#160;</p>':'<p$1>&nbsp;</p>');if(s.remove_linebreaks){h=h.replace(/\\r?\\n|\\r/g,' ');h=h.replace(/(<[^>]+>)\\s+/g,'$1 ');h=h.replace(/\\s+(<\\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\\s+/g,'<$1>');h=h.replace(/\\s+<\\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\\s*/g,'\\n<$1$2$3>\\n');h=h.replace(/\\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\\n<$1$2>');h=h.replace(/<\\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\\s*/g,'</$1>\\n');h=h.replace(/\\n\\n/g,'\\n');}}h=t._unprotect(h,p);h=h.replace(/<!--\\[CDATA\\[([\\s\\S]+)\\]\\]-->/g,'<![CDATA[$1]]>');if(s.entity_encoding=='raw')h=h.replace(/<p>&nbsp;<\\/p>|<p([^>]+)>&nbsp;<\\/p>/g,'<p$1>\\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(ru.padd){if(hc&&(cn=n.firstChild)&&cn.nodeType===1&&n.childNodes.length===1){if(cn.hasAttribute?cn.hasAttribute('mce_bogus'):cn.getAttribute('mce_bogus'))w.writeText('\\u00a0');}else if(!hc)w.writeText('\\u00a0');}break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\\r\\n\\\\]/g,function(c){if(c==='\\n')return'\\\\n';else if(c==='\\\\')return'\\\\\\\\';return'\\\\r';});};function dec(s){return s.replace(/\\\\[\\\\rn]/g,function(c){if(c==='\\\\n')return'\\n';else if(c==='\\\\\\\\')return'\\\\';return'\\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\\<!--mce:([0-9]+)--\\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\\u007E-\\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);if(this.settings.bool_attrs.test(na)&&v){v=(''+v).toLowerCase();if(v==='false'||v==='0')return null;v=na;}switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\\s?mceItem\\w+\\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type=\"text/javascript\" src=\"'+tinymce._addVer(u)+'\"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone();});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange=\"';else ol=' onload=\"';ol+='tinymce.dom.ScriptLoader._onLoad(this,\\''+u+'\\','+ix+');\"';}document.write('<script type=\"text/javascript\" src=\"'+tinymce._addVer(u)+'\"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0;}};if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done();}});}else{e=tinymce.DOM.create('script',{id:id,type:'text/javascript',src:tinymce._addVer(u)});Event.add(e,'load',done);(document.getElementsByTagName('head')[0]||document.body).appendChild(e);}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+\": \"+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix,ic;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:\"return false;\",onmousedown:'return false;'});DOM.addClass(it,s['class']);ic=DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});if(s.icon_src)DOM.add(ic,'img',{src:s.icon_src});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id=\"'+this.id+'\" href=\"javascript:;\" class=\"'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'\" onmousedown=\"return false;\" onclick=\"return false;\" title=\"'+DOM.encode(s.title)+'\">';if(s.image)h+='<img class=\"mceIcon\" src=\"'+s.image+'\" />'+l+'</a>';else h+='<span class=\"mceIcon '+s['class']+'\"></span>'+(l?'<span class=\"'+cp+'Label\">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){var t=this,e,o;if(idx!=t.selectedIndex){e=DOM.get(t.id+'_text');o=t.items[idx];if(o){t.selectedValue=o.value;t.selectedIndex=idx;DOM.setHTML(e,DOM.encode(o.title));DOM.removeClass(e,'mceTitle');}else{DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');t.selectedValue=t.selectedIndex=null;}e=0;}else t.selectedValue=t.selectedIndex=null;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id=\"'+t.id+'\" cellpadding=\"0\" cellspacing=\"0\" class=\"'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'\"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:\"return false;\",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:\"return false;\",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){DOM.get(this.id).selectedIndex=idx+1;this.selectedValue=this.items[idx]?this.items[idx].value:null;},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=t.items[e.target.selectedIndex-1];if(v&&(v=v.value)){t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);}};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:\"return false;\",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:\"return false;\",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type==\"mousedown\"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});DOM.setStyle(t.id+'_preview','backgroundColor',t.value);},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style=\"position: relative\">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\\?#].*$/,'').replace(/[\\/\\\\][^\\/]+$/,'');if(!/[\\/\\\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\\.(.+\\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\\.\\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:\"simple\",language:\"en\",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case\"exact\":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case\"textareas\":case\"specific_textareas\":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case\"mceFocus\":ed.focus();return true;case\"mceAddEditor\":case\"mceAddControl\":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case\"mceAddFrameControl\":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case\"mceRemoveEditor\":case\"mceRemoveControl\":if(ed)ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px',keep_styles:1},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\\/$/,''));each(explode(s.plugins.replace(/\\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css!==false){if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute(\"themes/\"+s.theme+\"/skins/\"+s.skin+\"/dialog.css\");}if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+(typeof(h)=='number'?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns=\"http://www.w3.org/1999/xhtml\"><base href=\"'+t.documentBaseURI.getURI()+'\" />';t.iframeHTML+='<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type=\"text/javascript\">document.domain = \"'+tinymce.relaxedDomain+'\";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id=\"'+bi+'\" class=\"mceContentBody '+bc+'\"></body></html>';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain=\"'+document.domain+'\";var ed = window.parent.tinyMCE.get(\"'+t.id+'\");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain=\"'+document.domain+'\";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+\"_ifr\",src:u||'javascript:\"\"',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace=\"nowrap\";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name=\"$1\"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\\r?\\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\\s*<pre.*?>/,'');o.content=o.content.replace(/<\\/pre>\\s*$/,'');if(o.set)o.content='<pre class=\"mceItemHidden\">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\\bmceItem\\w+\\b|\\bmceTemp\\w+\\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\\s|\\u00a0|)<\\/p>[\\r\\n]*|<br \\/>[\\r\\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\\.\\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\\#([^}]+)\\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+\"_ifr\",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus=\"1\" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\\s*|\\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+\"_ifr\");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand(\"styleWithCSS\",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand(\"useCSS\",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\\/)?([^\\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\\{\\$selection\\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\\'\\\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand(\"styleWithCSS\",0,s);}catch(ex){d.execCommand(\"useCSS\",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\\s*|\\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\\\u00a0|&#160;|&nbsp;)<\\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\\\\/p>|<p( )([^>]+)\\\\\\/>|<p( )([^>]+)>\\\\s+<\\\\\\/p>|<p><\\\\\\/p>|<p\\\\\\/>|<p>\\\\s+<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\\\s\\\\u00a0]+<\\\\\\/p>|<p>[\\\\s\\\\u00a0]+<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\\\\/p>|<p>(&nbsp;|&#160;)<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\\\s*<br \\\\\\/>\\\\s*<\\\\\\/p>|<p>\\\\s*<br \\\\\\/>\\\\s*<\\\\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\\\s*<br \\\\/>\\\\s*<\\\\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id=\"__\" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute(\"id\");n.setAttribute(\"id\",\"__mce\");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \\t\\r\\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName==\"HTML\"?d.body:sn;sn=sn.nodeName==\"BODY\"?sn.firstChild:sn;en=en.nodeName==\"HTML\"?d.body:en;en=en.nodeName==\"BODY\"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn==\"DIV\"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?'&nbsp;':'<br />';return nl[0];}else e.innerHTML=isOpera?'&nbsp;':'<br />';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+25);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){var pr;e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){pr=e.previousSibling;Event.remove(b,'DOMNodeInserted',handler);if(pr&&pr.nodeType==3&&/\\s+$/.test(pr.nodeValue))return;if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case\"|\":case\"separator\":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s,cc){s=s||{};s.menu_button=1;return this.createButton(id,s,cc);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm){ed.selection.moveToBookmark(bm);bm=0;}});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s,w){w=w||window;cb.call(s||this,w.confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s,w){var t=this;w=w||window;w.alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\\\n/g,'\\n');}});}());"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/additional-methods.js",
    "content": "/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */\n\n/*!\n * jQuery Validation Plugin 1.10.0\n *\n * http://bassistance.de/jquery-plugins/jquery-plugin-validation/\n * http://docs.jquery.com/Plugins/Validation\n *\n * Copyright (c) 2006 - 2011 Jörn Zaefferer\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n */\n\n(function() {\n\n\tfunction stripHtml(value) {\n\t\t// remove html tags and space chars\n\t\treturn value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')\n\t\t// remove punctuation\n\t\t.replace(/[.(),;:!?%#$'\"_+=\\/-]*/g,'');\n\t}\n\tjQuery.validator.addMethod(\"maxWords\", function(value, element, params) {\n\t\treturn this.optional(element) || stripHtml(value).match(/\\b\\w+\\b/g).length <= params;\n\t}, jQuery.validator.format(\"Please enter {0} words or less.\"));\n\n\tjQuery.validator.addMethod(\"minWords\", function(value, element, params) {\n\t\treturn this.optional(element) || stripHtml(value).match(/\\b\\w+\\b/g).length >= params;\n\t}, jQuery.validator.format(\"Please enter at least {0} words.\"));\n\n\tjQuery.validator.addMethod(\"rangeWords\", function(value, element, params) {\n\t\tvar valueStripped = stripHtml(value);\n\t\tvar regex = /\\b\\w+\\b/g;\n\t\treturn this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1];\n\t}, jQuery.validator.format(\"Please enter between {0} and {1} words.\"));\n\n})();\n\njQuery.validator.addMethod(\"letterswithbasicpunc\", function(value, element) {\n\treturn this.optional(element) || /^[a-z\\-.,()'\\\"\\s]+$/i.test(value);\n}, \"Letters or punctuation only please\");\n\njQuery.validator.addMethod(\"alphanumeric\", function(value, element) {\n\treturn this.optional(element) || /^\\w+$/i.test(value);\n}, \"Letters, numbers, and underscores only please\");\n\njQuery.validator.addMethod(\"lettersonly\", function(value, element) {\n\treturn this.optional(element) || /^[a-z]+$/i.test(value);\n}, \"Letters only please\");\n\njQuery.validator.addMethod(\"nowhitespace\", function(value, element) {\n\treturn this.optional(element) || /^\\S+$/i.test(value);\n}, \"No white space please\");\n\njQuery.validator.addMethod(\"ziprange\", function(value, element) {\n\treturn this.optional(element) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test(value);\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx\");\n\njQuery.validator.addMethod(\"zipcodeUS\", function(value, element) {\n\treturn this.optional(element) || /\\d{5}-\\d{4}$|^\\d{5}$/.test(value)\n}, \"The specified US ZIP Code is invalid\");\n\njQuery.validator.addMethod(\"integer\", function(value, element) {\n\treturn this.optional(element) || /^-?\\d+$/.test(value);\n}, \"A positive or negative non-decimal number please\");\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name jQuery.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\njQuery.validator.addMethod(\"vinUS\", function(v) {\n\tif (v.length != 17) {\n\t\treturn false;\n\t}\n\tvar i, n, d, f, cd, cdv;\n\tvar LL = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"J\",\"K\",\"L\",\"M\",\"N\",\"P\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"];\n\tvar VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];\n\tvar FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];\n\tvar rs = 0;\n\tfor(i = 0; i < 17; i++){\n\t\tf = FL[i];\n\t\td = v.slice(i,i+1);\n\t\tif (i == 8) {\n\t\t\tcdv = d;\n\t\t}\n\t\tif (!isNaN(d)) {\n\t\t\td *= f;\n\t\t} else {\n\t\t\tfor (n = 0; n < LL.length; n++) {\n\t\t\t\tif (d.toUpperCase() === LL[n]) {\n\t\t\t\t\td = VL[n];\n\t\t\t\t\td *= f;\n\t\t\t\t\tif (isNaN(cdv) && n == 8) {\n\t\t\t\t\t\tcdv = LL[n];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trs += d;\n\t}\n\tcd = rs % 11;\n\tif (cd == 10) {\n\t\tcd = \"X\";\n\t}\n\tif (cd == cdv) {\n\t\treturn true;\n\t}\n\treturn false;\n}, \"The specified vehicle identification number (VIN) is invalid.\");\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example jQuery.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example jQuery.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example jQuery.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name jQuery.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\njQuery.validator.addMethod(\"dateITA\", function(value, element) {\n\tvar check = false;\n\tvar re = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\n\tif( re.test(value)){\n\t\tvar adata = value.split('/');\n\t\tvar gg = parseInt(adata[0],10);\n\t\tvar mm = parseInt(adata[1],10);\n\t\tvar aaaa = parseInt(adata[2],10);\n\t\tvar xdata = new Date(aaaa,mm-1,gg);\n\t\tif ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )\n\t\t\tcheck = true;\n\t\telse\n\t\t\tcheck = false;\n\t} else\n\t\tcheck = false;\n\treturn this.optional(element) || check;\n}, \"Please enter a correct date\");\n\njQuery.validator.addMethod(\"dateNL\", function(value, element) {\n\treturn this.optional(element) || /^\\d\\d?[\\.\\/-]\\d\\d?[\\.\\/-]\\d\\d\\d?\\d?$/.test(value);\n}, \"Vul hier een geldige datum in.\");\n\njQuery.validator.addMethod(\"time\", function(value, element) {\n\treturn this.optional(element) || /^([0-1]\\d|2[0-3]):([0-5]\\d)$/.test(value);\n}, \"Please enter a valid time, between 00:00 and 23:59\");\njQuery.validator.addMethod(\"time12h\", function(value, element) {\n\treturn this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\\d){0,2}(\\ [AP]M))$/i.test(value);\n}, \"Please enter a valid time, between 00:00 am and 12:00 pm\");\n\n/**\n * matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\njQuery.validator.addMethod(\"phoneUS\", function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+/g, \"\");\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(\\+?1-?)?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})-?[2-9]\\d{2}-?\\d{4}$/);\n}, \"Please specify a valid phone number\");\n\njQuery.validator.addMethod('phoneUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\(|\\)|\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:(?:\\d{5}\\)?\\s?\\d{4,5})|(?:\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3}))|(?:\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4})|(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}))$/);\n}, 'Please specify a valid phone number');\n\njQuery.validator.addMethod('mobileUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[45789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/);\n}, 'Please specify a valid mobile number');\n\n//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\njQuery.validator.addMethod('phonesUK', function(phone_number, element) {\n\tphone_number = phone_number.replace(/\\s+|-/g,'');\n\treturn this.optional(element) || phone_number.length > 9 &&\n\t\tphone_number.match(/^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[45789]\\d{8}|624\\d{6})))$/);\n}, 'Please specify a valid uk phone number');\n// On the above three UK functions, do the following server side processing:\n//  Compare with ^((?:00\\s?|\\+)(44)\\s?)?\\(?0?(?:\\)\\s?)?([1-9]\\d{1,4}\\)?[\\d\\s]+)\n//  Extract $2 and set $prefix to '+44<space>' if $2 is '44' otherwise set $prefix to '0'\n//  Extract $3 and remove spaces and parentheses. Phone number is combined $2 and $3.\n// A number of very detailed GB telephone number RegEx patterns can also be found at:\n// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_UK_Telephone_Numbers\n\n//Matches UK postcode. based on http://snipplr.com/view/3152/postcode-validation/\njQuery.validator.addMethod('postcodeUK', function(postcode, element) {\n\tpostcode = (postcode.toUpperCase()).replace(/\\s+/g,'');\n\treturn this.optional(element) || postcode.match(/^([^QZ][^IJZ]{0,1}\\d{1,2})(\\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV]\\d[ABCDEFGHJKSTUW])(\\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV][^IJZ]\\d[ABEHMNPRVWXY])(\\d[^CIKMOV]{2})$/) || postcode.match(/^(GIR)(0AA)$/) || postcode.match(/^(BFPO)(\\d{1,4})$/) || postcode.match(/^(BFPO)(C\\/O\\d{1,3})$/);\n}, 'Please specify a valid postcode');\n\n// TODO check if value starts with <, otherwise don't try stripping anything\njQuery.validator.addMethod(\"strippedminlength\", function(value, element, param) {\n\treturn jQuery(value).text().length >= param;\n}, jQuery.validator.format(\"Please enter at least {0} characters\"));\n\n// same as email, but TLD is optional\njQuery.validator.addMethod(\"email2\", function(value, element, param) {\n\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i.test(value);\n}, jQuery.validator.messages.email);\n\n// same as url, but TLD is optional\njQuery.validator.addMethod(\"url2\", function(value, element, param) {\n\treturn this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n}, jQuery.validator.messages.url);\n\n// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\njQuery.validator.addMethod(\"creditcardtypes\", function(value, element, param) {\n\tif (/[^0-9-]+/.test(value)) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace(/\\D/g, \"\");\n\n\tvar validTypes = 0x0000;\n\n\tif (param.mastercard)\n\t\tvalidTypes |= 0x0001;\n\tif (param.visa)\n\t\tvalidTypes |= 0x0002;\n\tif (param.amex)\n\t\tvalidTypes |= 0x0004;\n\tif (param.dinersclub)\n\t\tvalidTypes |= 0x0008;\n\tif (param.enroute)\n\t\tvalidTypes |= 0x0010;\n\tif (param.discover)\n\t\tvalidTypes |= 0x0020;\n\tif (param.jcb)\n\t\tvalidTypes |= 0x0040;\n\tif (param.unknown)\n\t\tvalidTypes |= 0x0080;\n\tif (param.all)\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\n\tif (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0002 && /^(4)/.test(value)) { //visa\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub\n\t\treturn value.length == 14;\n\t}\n\tif (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb\n\t\treturn value.length == 16;\n\t}\n\tif (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb\n\t\treturn value.length == 15;\n\t}\n\tif (validTypes & 0x0080) { //unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\");\n\njQuery.validator.addMethod(\"ipv4\", function(value, element, param) {\n\t\treturn this.optional(element) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test(value);\n}, \"Please enter a valid IP v4 address.\");\n\njQuery.validator.addMethod(\"ipv6\", function(value, element, param) {\n\t\treturn this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);\n}, \"Please enter a valid IP v6 address.\");\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example jQuery.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example jQuery.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name jQuery.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\njQuery.validator.addMethod(\"pattern\", function(value, element, param) {\n\tif (this.optional(element)) {\n\t\treturn true;\n\t}\n\tif (typeof param === 'string') {\n\t\tparam = new RegExp('^(?:' + param + ')$');\n\t}\n\treturn param.test(value);\n}, \"Invalid format.\");\n\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *  <input class=\"productinfo\" name=\"partnumber\">\n *  <input class=\"productinfo\" name=\"description\">\n *\n *  ...will validate unless at least one of them is filled.\n *\n * partnumber:  {require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n */\njQuery.validator.addMethod(\"require_from_group\", function(value, element, options) {\n\tvar validator = this;\n\tvar selector = options[1];\n\tvar validOrNot = $(selector, element.form).filter(function() {\n\t\treturn validator.elementValue(this);\n\t}).length >= options[0];\n\n\tif(!$(element).data('being_validated')) {\n\t\tvar fields = $(selector, element.form);\n\t\tfields.data('being_validated', true);\n\t\tfields.valid();\n\t\tfields.data('being_validated', false);\n\t}\n\treturn validOrNot;\n}, jQuery.format(\"Please fill at least {0} of these fields.\"));\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *  <input class=\"productinfo\" name=\"partnumber\">\n *  <input class=\"productinfo\" name=\"description\">\n *  <input class=\"productinfo\" name=\"color\">\n *\n *  ...will validate unless either at least two of them are filled,\n *  OR none of them are.\n *\n * partnumber:  {skip_or_fill_minimum: [2,\".productinfo\"]},\n *  description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:       {skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n */\njQuery.validator.addMethod(\"skip_or_fill_minimum\", function(value, element, options) {\n\tvar validator = this;\n\n\tnumberRequired = options[0];\n\tselector = options[1];\n\tvar numberFilled = $(selector, element.form).filter(function() {\n\t\treturn validator.elementValue(this);\n\t}).length;\n\tvar valid = numberFilled >= numberRequired || numberFilled === 0;\n\n\tif(!$(element).data('being_validated')) {\n\t\tvar fields = $(selector, element.form);\n\t\tfields.data('being_validated', true);\n\t\tfields.valid();\n\t\tfields.data('being_validated', false);\n\t}\n\treturn valid;\n}, jQuery.format(\"Please either skip these fields or fill at least {0} of them.\"));\n\n// Accept a value from a file input based on a required mimetype\njQuery.validator.addMethod(\"accept\", function(value, element, param) {\n\t// Split mime on commas incase we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace(/,/g, '|') : \"image/*\",\n\toptionalValue = this.optional(element),\n\ti, file;\n\n\t// Element is optional\n\tif(optionalValue) {\n\t\treturn optionalValue;\n\t}\n\n\tif($(element).attr(\"type\") === \"file\") {\n\t\t// If we are using a wildcard, make it regex friendly\n\t\ttypeParam = typeParam.replace(\"*\", \".*\");\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif(element.files && element.files.length) {\n\t\t\tfor(i = 0; i < element.files.length; i++) {\n\t\t\t\tfile = element.files[i];\n\n\t\t\t\t// Grab the mimtype from the loaded file, verify it matches\n\t\t\t\tif(!file.type.match(new RegExp( \".?(\" + typeParam + \")$\", \"i\"))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, jQuery.format(\"Please enter a value with a valid mimetype.\"));\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\njQuery.validator.addMethod(\"extension\", function(value, element, param) {\n\tparam = typeof param === \"string\" ? param.replace(/,/g, '|') : \"png|jpe?g|gif\";\n\treturn this.optional(element) || value.match(new RegExp(\".(\" + param + \")$\", \"i\"));\n}, jQuery.format(\"Please enter a value with a valid extension.\"));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/dist/jquery.validate.js",
    "content": "/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */\n\n(function($) {\n\n$.extend($.fn, {\n\t// http://docs.jquery.com/Plugins/Validation/validate\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can't chain anyway\n\t\tif (!this.length) {\n\t\t\tif (options && options.debug && window.console) {\n\t\t\t\tconsole.warn( \"nothing selected, can't validate, returning nothing\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data(this[0], 'validator');\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr('novalidate', 'novalidate');\n\n\t\tvalidator = new $.validator( options, this[0] );\n\t\t$.data(this[0], 'validator', validator);\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function(ev) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = ev.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $(ev.target).hasClass('cancel') ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif (validator.submitButton) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $(\"<input type='hidden'/>\").attr(\"name\", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif (validator.submitButton) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/valid\n\tvalid: function() {\n\t\tif ( $(this[0]).is('form')) {\n\t\t\treturn this.validate().form();\n\t\t} else {\n\t\t\tvar valid = true;\n\t\t\tvar validator = $(this[0].form).validate();\n\t\t\tthis.each(function() {\n\t\t\t\tvalid &= validator.element(this);\n\t\t\t});\n\t\t\treturn valid;\n\t\t}\n\t},\n\t// attributes: space seperated list of attributes to retrieve and remove\n\tremoveAttrs: function(attributes) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each(attributes.split(/\\s/), function(index, value) {\n\t\t\tresult[value] = $element.attr(value);\n\t\t\t$element.removeAttr(value);\n\t\t});\n\t\treturn result;\n\t},\n\t// http://docs.jquery.com/Plugins/Validation/rules\n\trules: function(command, argument) {\n\t\tvar element = this[0];\n\n\t\tif (command) {\n\t\t\tvar settings = $.data(element.form, 'validator').settings;\n\t\t\tvar staticRules = settings.rules;\n\t\t\tvar existingRules = $.validator.staticRules(element);\n\t\t\tswitch(command) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\n\t\t\t\tstaticRules[element.name] = existingRules;\n\t\t\t\tif (argument.messages) {\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif (!argument) {\n\t\t\t\t\tdelete staticRules[element.name];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tvar filtered = {};\n\t\t\t\t$.each(argument.split(/\\s/), function(index, method) {\n\t\t\t\t\tfiltered[method] = existingRules[method];\n\t\t\t\t\tdelete existingRules[method];\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tvar data = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.metadataRules(element),\n\t\t\t$.validator.classRules(element),\n\t\t\t$.validator.attributeRules(element),\n\t\t\t$.validator.staticRules(element)\n\t\t), element);\n\n\t\t// make sure required is at front\n\t\tif (data.required) {\n\t\t\tvar param = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend({required: param}, data);\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend($.expr[\":\"], {\n\t// http://docs.jquery.com/Plugins/Validation/blank\n\tblank: function(a) {return !$.trim(\"\" + a.value);},\n\t// http://docs.jquery.com/Plugins/Validation/filled\n\tfilled: function(a) {return !!$.trim(\"\" + a.value);},\n\t// http://docs.jquery.com/Plugins/Validation/unchecked\n\tunchecked: function(a) {return !a.checked;}\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n$.validator.format = function(source, params) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray(arguments);\n\t\t\targs.unshift(source);\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray(arguments).slice(1);\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each(params, function(i, n) {\n\t\tsource = source.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), n);\n\t});\n\treturn source;\n};\n\n$.extend($.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function(element, event) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\n\t\t\t}\n\t\t},\n\t\tonfocusout: function(element, event) {\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonkeyup: function(element, event) {\n\t\t\tif ( event.which === 9 && this.elementValue(element) === '' ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastActive ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonclick: function(element, event) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t\t// or option elements, check parent select in that case\n\t\t\telse if (element.parentNode.name in this.submitted) {\n\t\t\t\tthis.element(element.parentNode);\n\t\t\t}\n\t\t},\n\t\thighlight: function(element, errorClass, validClass) {\n\t\t\tif (element.type === 'radio') {\n\t\t\t\tthis.findByName(element.name).addClass(errorClass).removeClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).addClass(errorClass).removeClass(validClass);\n\t\t\t}\n\t\t},\n\t\tunhighlight: function(element, errorClass, validClass) {\n\t\t\tif (element.type === 'radio') {\n\t\t\t\tthis.findByName(element.name).removeClass(errorClass).addClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).removeClass(errorClass).addClass(validClass);\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults\n\tsetDefaults: function(settings) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tcreditcard: \"Please enter a valid credit card number.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\n\t\tminlength: $.validator.format(\"Please enter at least {0} characters.\"),\n\t\trangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\n\t\trange: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n\t\tmax: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\n\t\tmin: $.validator.format(\"Please enter a value greater than or equal to {0}.\")\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = (this.groups = {});\n\t\t\t$.each(this.settings.groups, function(key, value) {\n\t\t\t\t$.each(value.split(/\\s/), function(index, name) {\n\t\t\t\t\tgroups[name] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\tvar rules = this.settings.rules;\n\t\t\t$.each(rules, function(key, value) {\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\n\t\t\t});\n\n\t\t\tfunction delegate(event) {\n\t\t\t\tvar validator = $.data(this[0].form, \"validator\"),\n\t\t\t\t\teventType = \"on\" + event.type.replace(/^validate/, \"\");\n\t\t\t\tif (validator.settings[eventType]) {\n\t\t\t\t\tvalidator.settings[eventType].call(validator, this[0], event);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this.currentForm)\n\t\t\t\t.validateDelegate(\":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'] \",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\n\t\t\t\t.validateDelegate(\"[type='radio'], [type='checkbox'], select, option\", \"click\", delegate);\n\n\t\t\tif (this.settings.invalidHandler) {\n\t\t\t\t$(this.currentForm).bind(\"invalid-form.validate\", this.settings.invalidHandler);\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/form\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend(this.submitted, this.errorMap);\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\n\t\t\tif (!this.valid()) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n\t\t\t\tthis.check( elements[i] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/element\n\t\telement: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\t\t\tthis.lastElement = element;\n\t\t\tthis.prepareElement( element );\n\t\t\tthis.currentElements = $(element);\n\t\t\tvar result = this.check( element ) !== false;\n\t\t\tif (result) {\n\t\t\t\tdelete this.invalid[element.name];\n\t\t\t} else {\n\t\t\t\tthis.invalid[element.name] = true;\n\t\t\t}\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/showErrors\n\t\tshowErrors: function(errors) {\n\t\t\tif(errors) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[name],\n\t\t\t\t\t\telement: this.findByName(name)[0]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function(element) {\n\t\t\t\t\treturn !(element.name in errors);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.settings.showErrors) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Validator/resetForm\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements().removeClass( this.settings.errorClass ).removeData( \"previousValue\" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength(this.invalid);\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\tvar count = 0;\n\t\t\tfor ( var i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.addWrapper( this.toHide ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\n\t\t\t\t\t.filter(\":visible\")\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger(\"focusin\");\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep(this.errorList, function(n) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $(this.currentForm)\n\t\t\t.find(\"input, select, textarea\")\n\t\t\t.not(\":submit, :reset, :image, [disabled]\")\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter(function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this);\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[this.name] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[0];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.replace(' ', '.');\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $([]);\n\t\t\tthis.toHide = $([]);\n\t\t\tthis.currentElements = $([]);\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor(element);\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar type = $(element).attr('type'),\n\t\t\t\tval = $(element).val();\n\n\t\t\tif ( type === 'radio' || type === 'checkbox' ) {\n\t\t\t\treturn $('input[name=\"' + $(element).attr('name') + '\"]:checked').val();\n\t\t\t}\n\n\t\t\tif ( typeof val === 'string' ) {\n\t\t\t\treturn val.replace(/\\r/g, \"\");\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $(element).rules();\n\t\t\tvar dependencyMismatch = false;\n\t\t\tvar val = this.elementValue(element);\n\t\t\tvar result;\n\n\t\t\tfor (var method in rules ) {\n\t\t\t\tvar rule = { method: method, parameters: rules[method] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log(\"exception occured when checking element \" + element.id + \", check the '\" + rule.method + \"' method\", e);\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (dependencyMismatch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength(rules) ) {\n\t\t\t\tthis.successList.push(element);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's \"messages\" metadata\n\t\tcustomMetaMessage: function(element, method) {\n\t\t\tif (!$.metadata) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar meta = this.settings.meta ? $(element).metadata()[this.settings.meta] : $(element).metadata();\n\t\t\treturn meta && meta.messages && meta.messages[method];\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\tcustomDataMessage: function(element, method) {\n\t\t\treturn $(element).data('msg-' + method.toLowerCase()) || (element.attributes && $(element).attr('data-msg-' + method.toLowerCase()));\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[name];\n\t\t\treturn m && (m.constructor === String ? m : m[method]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor(var i = 0; i < arguments.length; i++) {\n\t\t\t\tif (arguments[i] !== undefined) {\n\t\t\t\t\treturn arguments[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\tthis.customMetaMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[method],\n\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\n\t\t\t} else if (theregex.test(message)) {\n\t\t\t\tmessage = $.validator.format(message.replace(theregex, '{$1}'), rule.parameters);\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element\n\t\t\t});\n\n\t\t\tthis.errorMap[element.name] = message;\n\t\t\tthis.submitted[element.name] = message;\n\t\t},\n\n\t\taddWrapper: function(toToggle) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements;\n\t\t\tfor ( i = 0; this.errorList[i]; i++ ) {\n\t\t\t\tvar error = this.errorList[i];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif (this.settings.success) {\n\t\t\t\tfor ( i = 0; this.successList[i]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.settings.unhighlight) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $(this.errorList).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function(element, message) {\n\t\t\tvar label = this.errorsFor( element );\n\t\t\tif ( label.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\tlabel.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// check if we have a generated label, replace the message then\n\t\t\t\tif ( label.attr(\"generated\") ) {\n\t\t\t\t\tlabel.html(message);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// create label\n\t\t\t\tlabel = $(\"<\" + this.settings.errorElement + \"/>\")\n\t\t\t\t\t.attr({\"for\":  this.idOrName(element), generated: true})\n\t\t\t\t\t.addClass(this.settings.errorClass)\n\t\t\t\t\t.html(message || \"\");\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tlabel = label.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\n\t\t\t\t}\n\t\t\t\tif ( !this.labelContainer.append(label).length ) {\n\t\t\t\t\tif ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement(label, $(element) );\n\t\t\t\t\t} else {\n\t\t\t\t\tlabel.insertAfter(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\tlabel.text(\"\");\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\tlabel.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( label, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add(label);\n\t\t},\n\n\t\terrorsFor: function(element) {\n\t\t\tvar name = this.idOrName(element);\n\t\t\treturn this.errors().filter(function() {\n\t\t\t\treturn $(this).attr('for') === name;\n\t\t\t});\n\t\t},\n\n\t\tidOrName: function(element) {\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n\t\t},\n\n\t\tvalidationTargetFor: function(element) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif (this.checkable(element)) {\n\t\t\t\telement = this.findByName( element.name ).not(this.settings.ignore)[0];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn (/radio|checkbox/i).test(element.type);\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $(this.currentForm).find('[name=\"' + name + '\"]');\n\t\t},\n\n\t\tgetLength: function(value, element) {\n\t\t\tswitch( element.nodeName.toLowerCase() ) {\n\t\t\tcase 'select':\n\t\t\t\treturn $(\"option:selected\", element).length;\n\t\t\tcase 'input':\n\t\t\t\tif( this.checkable( element) ) {\n\t\t\t\t\treturn this.findByName(element.name).filter(':checked').length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function(param, element) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function(param, element) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function(param, element) {\n\t\t\t\treturn !!$(param, element.form).length;\n\t\t\t},\n\t\t\t\"function\": function(param, element) {\n\t\t\t\treturn param(element);\n\t\t\t}\n\t\t},\n\n\t\toptional: function(element) {\n\t\t\tvar val = this.elementValue(element);\n\t\t\treturn !$.validator.methods.required.call(this, val, element) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function(element) {\n\t\t\tif (!this.pending[element.name]) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[element.name] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function(element, valid) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif (this.pendingRequest < 0) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[element.name];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$(this.currentForm).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n\t\t\t\t$(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function(element) {\n\t\t\treturn $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: {required: true},\n\t\temail: {email: true},\n\t\turl: {url: true},\n\t\tdate: {date: true},\n\t\tdateISO: {dateISO: true},\n\t\tnumber: {number: true},\n\t\tdigits: {digits: true},\n\t\tcreditcard: {creditcard: true}\n\t},\n\n\taddClassRules: function(className, rules) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[className] = rules;\n\t\t} else {\n\t\t\t$.extend(this.classRuleSettings, className);\n\t\t}\n\t},\n\n\tclassRules: function(element) {\n\t\tvar rules = {};\n\t\tvar classes = $(element).attr('class');\n\t\tif ( classes ) {\n\t\t\t$.each(classes.split(' '), function() {\n\t\t\t\tif (this in $.validator.classRuleSettings) {\n\t\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function(element) {\n\t\tvar rules = {};\n\t\tvar $element = $(element);\n\n\t\tfor (var method in $.validator.methods) {\n\t\t\tvar value;\n\n\t\t\t// support for <input required> in both html5 and older browsers\n\t\t\tif (method === 'required') {\n\t\t\t\tvalue = $element.get(0).getAttribute(method);\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif (value === \"\") {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr(method);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\trules[method] = value;\n\t\t\t} else if ($element[0].getAttribute(\"type\") === method) {\n\t\t\t\trules[method] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\n\t\tif (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tmetadataRules: function(element) {\n\t\tif (!$.metadata) {\n\t\t\treturn {};\n\t\t}\n\n\t\tvar meta = $.data(element.form, 'validator').settings.meta;\n\t\treturn meta ?\n\t\t\t$(element).metadata()[meta] :\n\t\t\t$(element).metadata();\n\t},\n\n\tstaticRules: function(element) {\n\t\tvar rules = {};\n\t\tvar validator = $.data(element.form, 'validator');\n\t\tif (validator.settings.rules) {\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function(rules, element) {\n\t\t// handle dependency check\n\t\t$.each(rules, function(prop, val) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif (val === false) {\n\t\t\t\tdelete rules[prop];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (val.param || val.depends) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch (typeof val.depends) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tkeepRule = val.depends.call(element, element);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (keepRule) {\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each(rules, function(rule, parameter) {\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each(['minlength', 'maxlength', 'min', 'max'], function() {\n\t\t\tif (rules[this]) {\n\t\t\t\trules[this] = Number(rules[this]);\n\t\t\t}\n\t\t});\n\t\t$.each(['rangelength', 'range'], function() {\n\t\t\tif (rules[this]) {\n\t\t\t\trules[this] = [Number(rules[this][0]), Number(rules[this][1])];\n\t\t\t}\n\t\t});\n\n\t\tif ($.validator.autoCreateRanges) {\n\t\t\t// auto-create ranges\n\t\t\tif (rules.min && rules.max) {\n\t\t\t\trules.range = [rules.min, rules.max];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif (rules.minlength && rules.maxlength) {\n\t\t\t\trules.rangelength = [rules.minlength, rules.maxlength];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\t// To support custom messages in metadata ignore rule methods titled \"messages\"\n\t\tif (rules.messages) {\n\t\t\tdelete rules.messages;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function(data) {\n\t\tif( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each(data.split(/\\s/), function() {\n\t\t\t\ttransformed[this] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://docs.jquery.com/Plugins/Validation/Validator/addMethod\n\taddMethod: function(name, method, message) {\n\t\t$.validator.methods[name] = method;\n\t\t$.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\t\tif (method.length < 3) {\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/required\n\t\trequired: function(value, element, param) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend(param, element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $(element).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\treturn this.getLength(value, element) > 0;\n\t\t\t}\n\t\t\treturn $.trim(value).length > 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/remote\n\t\tremote: function(value, element, param) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue(element);\n\t\t\tif (!this.settings.messages[element.name] ) {\n\t\t\t\tthis.settings.messages[element.name] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && {url:param} || param;\n\n\t\t\tif ( this.pending[element.name] ) {\n\t\t\t\treturn \"pending\";\n\t\t\t}\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvar validator = this;\n\t\t\tthis.startRequest(element);\n\t\t\tvar data = {};\n\t\t\tdata[element.name] = value;\n\t\t\t$.ajax($.extend(true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\n\t\t\t\t\tvar valid = response === true || response === \"true\";\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tvar submitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement(element);\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push(element);\n\t\t\t\t\t\tdelete validator.invalid[element.name];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errors = {};\n\t\t\t\t\t\tvar message = response || validator.defaultMessage( element, \"remote\" );\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\n\t\t\t\t\t\tvalidator.invalid[element.name] = true;\n\t\t\t\t\t\tvalidator.showErrors(errors);\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest(element, valid);\n\t\t\t\t}\n\t\t\t}, param));\n\t\t\treturn \"pending\";\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/minlength\n\t\tminlength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/maxlength\n\t\tmaxlength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/rangelength\n\t\trangelength: function(value, element, param) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/min\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value >= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/max\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value <= param;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/range\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/email\n\t\temail: function(value, element) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\treturn this.optional(element) || /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/url\n\t\turl: function(value, element) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional(element) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/date\n\t\tdate: function(value, element) {\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value));\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/dateISO\n\t\tdateISO: function(value, element) {\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/number\n\t\tnumber: function(value, element) {\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/digits\n\t\tdigits: function(value, element) {\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/creditcard\n\t\t// based on http://en.wikipedia.org/wiki/Luhn\n\t\tcreditcard: function(value, element) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif (/[^0-9 \\-]+/.test(value)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false;\n\n\t\t\tvalue = value.replace(/\\D/g, \"\");\n\n\t\t\tfor (var n = value.length - 1; n >= 0; n--) {\n\t\t\t\tvar cDigit = value.charAt(n);\n\t\t\t\tnDigit = parseInt(cDigit, 10);\n\t\t\t\tif (bEven) {\n\t\t\t\t\tif ((nDigit *= 2) > 9) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn (nCheck % 10) === 0;\n\t\t},\n\n\t\t// http://docs.jquery.com/Plugins/Validation/Methods/equalTo\n\t\tequalTo: function(value, element, param) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $(param);\n\t\t\tif (this.settings.onfocusout) {\n\t\t\t\ttarget.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\", function() {\n\t\t\t\t\t$(element).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t}\n\n\t}\n\n});\n\n// deprecated, use $.validator.format instead\n$.format = $.validator.format;\n\n}(jQuery));\n\n// ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n(function($) {\n\tvar pendingRequests = {};\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter(function(settings, _, xhr) {\n\t\t\tvar port = settings.port;\n\t\t\tif (settings.mode === \"abort\") {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = xhr;\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Proxy ajax\n\t\tvar ajax = $.ajax;\n\t\t$.ajax = function(settings) {\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif (mode === \"abort\") {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\treturn (pendingRequests[port] = ajax.apply(this, arguments));\n\t\t\t}\n\t\t\treturn ajax.apply(this, arguments);\n\t\t};\n\t}\n}(jQuery));\n\n// provides cross-browser focusin and focusout events\n// IE has native support, in other browsers, use event caputuring (neither bubbles)\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n(function($) {\n\t// only implement if not provided by jQuery core (since 1.4)\n\t// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs\n\tif (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {\n\t\t$.each({\n\t\t\tfocus: 'focusin',\n\t\t\tblur: 'focusout'\n\t\t}, function( original, fix ){\n\t\t\t$.event.special[fix] = {\n\t\t\t\tsetup:function() {\n\t\t\t\t\tthis.addEventListener( original, handler, true );\n\t\t\t\t},\n\t\t\t\tteardown:function() {\n\t\t\t\t\tthis.removeEventListener( original, handler, true );\n\t\t\t\t},\n\t\t\t\thandler: function(e) {\n\t\t\t\t\tvar args = arguments;\n\t\t\t\t\targs[0] = $.event.fix(e);\n\t\t\t\t\targs[0].type = fix;\n\t\t\t\t\treturn $.event.handle.apply(this, args);\n\t\t\t\t}\n\t\t\t};\n\t\t\tfunction handler(e) {\n\t\t\t\te = $.event.fix(e);\n\t\t\t\te.type = fix;\n\t\t\t\treturn $.event.handle.call(this, e);\n\t\t\t}\n\t\t});\n\t}\n\t$.extend($.fn, {\n\t\tvalidateDelegate: function(delegate, type, handler) {\n\t\t\treturn this.bind(type, function(event) {\n\t\t\t\tvar target = $(event.target);\n\t\t\t\tif (target.is(delegate)) {\n\t\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/grunt.js",
    "content": "/*global config:true, task:true*/\nmodule.exports = function(grunt) {\n\ngrunt.initConfig({\n\tpkg: '<json:package.json>',\n\tmeta: {\n\t\tbanner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +\n\t\t\t'<%= grunt.template.today(\"m/d/yyyy\") %>\\n' +\n\t\t\t'<%= pkg.homepage ? \"* \" + pkg.homepage + \"\\n\" : \"\" %>' +\n\t\t\t'* Copyright (c) <%= grunt.template.today(\"yyyy\") %> <%= pkg.author.name %>;' +\n\t\t\t' Licensed <%= _.pluck(pkg.licenses, \"type\").join(\", \") %> */'\n\t},\n\tconcat: {\n\t\t'dist/jquery.validate.js': ['<banner>', '<file_strip_banner:jquery.validate.js>'],\n\t\t'dist/additional-methods.js': ['<banner>', '<file_strip_banner:additional-methods.js>']\n\t},\n\tmin: {\n\t\t'dist/jquery.validate.min.js': ['<banner>', 'dist/jquery.validate.js'],\n\t\t'dist/additional-methods.min.js': ['<banner>', 'dist/additional-methods.js']\n\t},\n\tzip: {\n\t\tdist: {\n\t\t\tsrc: [\n\t\t\t\t'dist/additional-methods.js',\n\t\t\t\t'dist/additional-methods.min.js',\n\t\t\t\t'dist/jquery.validate.js',\n\t\t\t\t'dist/jquery.validate.min.js',\n\t\t\t\t'README.md',\n\t\t\t\t'changelog.txt',\n\t\t\t\t'grunt.js',\n\t\t\t\t'package.json',\n\t\t\t\t'demo/**/*.*',\n\t\t\t\t'lib/**/*.*',\n\t\t\t\t'localization/**/*.*',\n\t\t\t\t'test/**/*.*'\n\t\t\t],\n\t\t\tdest: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip'\n\t\t}\n\t},\n\tqunit: {\n\t\tfiles: ['test/index.html']\n\t},\n\tlint: {\n\t\tfiles: ['jquery.validate.js']\n\t},\n\tjshint: {\n\t\toptions: {\n\t\t\tcurly: true,\n\t\t\teqeqeq: true,\n\t\t\timmed: true,\n\t\t\tlatedef: true,\n\t\t\tnewcap: true,\n\t\t\tnoarg: true,\n\t\t\tsub: true,\n\t\t\tundef: true,\n\t\t\teqnull: true,\n\t\t\tbrowser: true\n\t\t},\n\t\tglobals: {\n\t\t\tjQuery: true,\n\t\t\t$: true,\n\t\t\tconsole: true\n\t\t}\n\t}\n});\n\ngrunt.registerMultiTask('zip', 'Create a zip file for release', function() {\n\tvar files = grunt.file.expand(this.file.src);\n\t// grunt.log.writeln(require('util').inspect(files));\n\tgrunt.log.writeln(\"Creating zip file \" + this.file.dest);\n\n\tvar done = this.async();\n\n\tvar zipstream = require('zipstream');\n\tvar fs = require('fs');\n\n\tvar out = fs.createWriteStream(this.file.dest);\n\tvar zip = zipstream.createZip({ level: 1 });\n\n\tzip.pipe(out);\n\n\tfunction addFile() {\n\t\tif (!files.length) {\n\t\t\tzip.finalize(function(written) {\n\t\t\t\tgrunt.log.writeln(written + ' total bytes written');\n\t\t\t\tdone();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tvar file = files.shift();\n\t\tgrunt.log.verbose.writeln('Zipping ' + file);\n\t\tzip.addFile(fs.createReadStream(file), { name: file }, addFile);\n\t}\n\taddFile();\n});\n\ngrunt.registerTask('default', 'lint qunit');\ngrunt.registerTask('release', 'default concat min zip');\n\n};"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.3.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.3.2\n * http://jquery.com/\n *\n * Copyright (c) 2009 John Resig\n * Dual licensed under the MIT and GPL licenses.\n * http://docs.jquery.com/License\n *\n * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)\n * Revision: 6246\n */\n(function(){\n\nvar \n\t// Will speed up references to window, and allows munging its name.\n\twindow = this,\n\t// Will speed up references to undefined, and allows munging its name.\n\tundefined,\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\tjQuery = window.jQuery = window.$ = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#([\\w-]+)$/,\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\tthis.context = selector;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t// by name instead of ID\n\t\t\t\t\tif ( elem && elem.id != match[3] )\n\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\tvar ret = jQuery( elem || [] );\n\t\t\t\t\tret.context = document;\n\t\t\t\t\tret.selector = selector;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document ).ready( selector );\n\n\t\t// Make sure that old selector state is passed along\n\t\tif ( selector.selector && selector.context ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn this.setArray(jQuery.isArray( selector ) ?\n\t\t\tselector :\n\t\t\tjQuery.makeArray(selector));\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.3.2\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num === undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tArray.prototype.slice.call( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" )\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\telse if ( name )\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( typeof name === \"string\" )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text !== \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).clone();\n\n\t\t\tif ( this[0].parentNode )\n\t\t\t\twrap.insertBefore( this[0] );\n\n\t\t\twrap.map(function(){\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: [].push,\n\tsort: [].sort,\n\tsplice: [].splice,\n\n\tfind: function( selector ) {\n\t\tif ( this.length === 1 ) {\n\t\t\tvar ret = this.pushStack( [], \"find\", selector );\n\t\t\tret.length = 0;\n\t\t\tjQuery.find( selector, this[0], ret );\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery.unique(jQuery.map(this, function(elem){\n\t\t\t\treturn jQuery.find( selector, elem );\n\t\t\t})), \"find\", selector );\n\t\t}\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = this.ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\").replace(/^\\s*/, \"\")])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tvar orig = this.find(\"*\").andSelf(), i = 0;\n\n\t\t\tret.find(\"*\").andSelf().each(function(){\n\t\t\t\tif ( this.nodeName !== orig[i].nodeName )\n\t\t\t\t\treturn;\n\n\t\t\t\tvar events = jQuery.data( orig[i], \"events\" );\n\n\t\t\t\tfor ( var type in events ) {\n\t\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ti++;\n\t\t\t});\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, jQuery.grep(this, function(elem){\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}) ), \"filter\", selector );\n\t},\n\n\tclosest: function( selector ) {\n\t\tvar pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,\n\t\t\tcloser = 0;\n\n\t\treturn this.map(function(){\n\t\t\tvar cur = this;\n\t\t\twhile ( cur && cur.ownerDocument ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {\n\t\t\t\t\tjQuery.data(cur, \"closest\", closer);\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tcloser++;\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( typeof selector === \"string\" )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ), \"not\", selector );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn !!selector && this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\t\t\t\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif( jQuery.nodeName( elem, 'option' ) )\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( typeof value === \"number\" )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value === undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\") :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, +i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ),\n\t\t\t\"slice\", Array.prototype.slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tif ( this[0] ) {\n\t\t\tvar fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),\n\t\t\t\tscripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),\n\t\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( first )\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ )\n\t\t\t\t\tcallback.call( root(this[i], first), this.length > 1 || i > 0 ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) : fragment );\n\t\t\n\t\t\tif ( scripts )\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t}\n\n\t\treturn this;\n\t\t\n\t\tfunction root( elem, cur ) {\n\t\t\treturn table && jQuery.nodeName(elem, \"table\") && jQuery.nodeName(cur, \"tr\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy === \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n// exclude the following css properties to add px\nvar\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {},\n\ttoString = Object.prototype.toString;\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t\t!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && /\\S/.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.support.scriptEval )\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\telse\n\t\t\t\tscript.text = data;\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn typeof value === \"number\" && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames !== undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" )\n\t\t\t\t\treturn;\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra )\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tif ( extra === \"margin\" )\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\telse\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && !jQuery.support.opacity ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context, fragment ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" )\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\t// If a single string is passed in and it's a single tag\n\t\t// just do a createElement and skip the rest\n\t\tif ( !fragment && elems.length === 1 && typeof elems[0] === \"string\" ) {\n\t\t\tvar match = /^<(\\w+)\\s*\\/?>$/.exec(elems[0]);\n\t\t\tif ( match )\n\t\t\t\treturn [ context.createElement( match[1] ) ];\n\t\t}\n\n\t\tvar ret = [], scripts = [], div = context.createElement(\"div\");\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( typeof elem === \"number\" )\n\t\t\t\telem += '';\n\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = elem.replace(/^\\s+/, \"\").substring(0, 10).toLowerCase();\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\t!jQuery.support.htmlSerialize &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = /<tbody/i.test(elem),\n\t\t\t\t\t\ttbody = !tags.indexOf(\"<table\") && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && /^\\s/.test( elem ) )\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\t\t\t\t\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.nodeType )\n\t\t\t\tret.push( elem );\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 )\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn scripts;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && elem.parentNode )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name == \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\t\t\t\t\treturn attributeNode && attributeNode.specified\n\t\t\t\t\t\t? attributeNode.value\n\t\t\t\t\t\t: elem.nodeName.match(/(button|input|object|select|textarea)/i)\n\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t: elem.nodeName.match(/^(a|area)$/i) && elem.href\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\tif( i == null || typeof array === \"string\" || jQuery.isFunction(array) || array.setInterval )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( !jQuery.support.getAll ) {\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\n// Use of jQuery.browser is deprecated.\n// It's included for backwards compatibility and plugins,\n// although they should work to migrate away.\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [0,'0'])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ), name, selector );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector );\n\n\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\tret = ret.concat( elems );\n\t\t}\n\n\t\treturn this.pushStack( ret, name, selector );\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames, state ) {\n\t\tif( typeof state !== \"boolean\" )\n\t\t\tstate = !jQuery.className.has( this, classNames );\n\t\tjQuery.className[ state ? \"add\" : \"remove\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add([this]).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery(this).children().remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ){\n\t\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\n\t\t\tvar q = jQuery.data( elem, type );\n\t\n\t\t\tif ( !q || jQuery.isArray(data) )\n\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\t\t\telse if( data )\n\t\t\t\tq.push( data );\n\t\n\t\t}\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ){\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\t\t\n\t\tif( !type || type === \"fx\" )\n\t\t\tfn = queue[0];\n\t\t\t\n\t\tif( fn !== undefined )\n\t\t\tfn.call(elem);\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\tqueue: function(type, data){\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined )\n\t\t\treturn jQuery.queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\t\t\t\n\t\t\t if( type == \"fx\" && queue.length == 1 )\n\t\t\t\tqueue[0].call(this);\n\t\t});\n\t},\n\tdequeue: function(type){\n\t\treturn this.each(function(){\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t}\n});/*!\n * Sizzle CSS Selector Engine - v0.9.3\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString;\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 )\n\t\treturn [];\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, check, mode, extra, prune = true;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tchunker.lastIndex = 0;\n\t\n\twhile ( (m = chunker.exec(selector)) !== null ) {\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = RegExp.rightContext;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] )\n\t\t\t\t\tselector += parts.shift();\n\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar ret = seed ?\n\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\tSizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );\n\t\tset = Sizzle.filter( ret.expr, ret.set );\n\n\t\tif ( parts.length > 0 ) {\n\t\t\tcheckSet = makeArray(set);\n\t\t} else {\n\t\t\tprune = false;\n\t\t}\n\n\t\twhile ( parts.length ) {\n\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\tcur = \"\";\n\t\t\t} else {\n\t\t\t\tpop = parts.pop();\n\t\t\t}\n\n\t\t\tif ( pop == null ) {\n\t\t\t\tpop = context;\n\t\t\t}\n\n\t\t\tExpr.relative[ cur ]( checkSet, pop, isXML(context) );\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tthrow \"Syntax error, unrecognized expression: \" + (cur || selector);\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, context, results, seed );\n\n\t\tif ( sortOrder ) {\n\t\t\thasDuplicate = false;\n\t\t\tresults.sort(sortOrder);\n\n\t\t\tif ( hasDuplicate ) {\n\t\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.match[ type ].exec( expr )) ) {\n\t\t\tvar left = RegExp.leftContext;\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.match[ type ].exec( expr )) != null ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item;\n\t\t\t\tanyFound = false;\n\n\t\t\t\tif ( curLoop == result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr == old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tthrow \"Syntax error, unrecognized expression: \" + expr;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*_-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)(?:\\((['\"]*)((?:\\([^\\)]+\\)|[^\\2\\(\\)]*)+)\\2\\))?/\n\t},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag && !isXML ) {\n\t\t\t\tpart = part.toUpperCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = isXML ? part : part.toUpperCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace )\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\tfor ( var i = 0; curLoop[i] === false; i++ ){}\n\t\t\treturn curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] == \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] == \"even\" && \"2n\" || match[2] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( match[3].match(chunker).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toUpperCase() === \"BUTTON\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile (node = node.previousSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == 'first') return true;\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile (node = node.nextSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first == 1 && last == 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\treturn diff == 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first == 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue != check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes );\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.selectNode(a);\n\t\taRange.collapse(true);\n\t\tbRange.selectNode(b);\n\t\tbRange.collapse(true);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"form\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<input name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( !!document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n})();\n\nif ( document.querySelectorAll ) (function(){\n\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t// Safari can't handle uppercase or unicode characters when\n\t// in quirks mode.\n\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\treturn;\n\t}\n\t\n\tSizzle = function(query, context, extra, seed){\n\t\tcontext = context || document;\n\n\t\t// Only use querySelectorAll on non-XML documents\n\t\t// (ID selectors don't work in non-HTML documents)\n\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\ttry {\n\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t} catch(e){}\n\t\t}\n\t\t\n\t\treturn oldSizzle(query, context, extra, seed);\n\t};\n\n\tSizzle.find = oldSizzle.find;\n\tSizzle.filter = oldSizzle.filter;\n\tSizzle.selectors = oldSizzle.selectors;\n\tSizzle.matches = oldSizzle.matches;\n})();\n\nif ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\n\tvar div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\tif ( div.getElementsByClassName(\"e\").length === 0 )\n\t\treturn;\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 )\n\t\treturn;\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ){\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ) {\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ?  function(a, b){\n\treturn a.compareDocumentPosition(b) & 16;\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t!!elem.ownerDocument && isXML( elem.ownerDocument );\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.filter = Sizzle.filter;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\n\nSizzle.selectors.filters.hidden = function(elem){\n\treturn elem.offsetWidth === 0 || elem.offsetHeight === 0;\n};\n\nSizzle.selectors.filters.visible = function(elem){\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0;\n};\n\nSizzle.selectors.filters.animated = function(elem){\n\treturn jQuery.grep(jQuery.timers, function(fn){\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\njQuery.multiFilter = function( expr, elems, not ) {\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn Sizzle.matches(expr, elems);\n};\n\njQuery.dir = function( elem, dir ){\n\tvar matched = [], cur = elem[dir];\n\twhile ( cur && cur != document ) {\n\t\tif ( cur.nodeType == 1 )\n\t\t\tmatched.push( cur );\n\t\tcur = cur[dir];\n\t}\n\treturn matched;\n};\n\njQuery.nth = function(cur, result, dir, elem){\n\tresult = result || 1;\n\tvar num = 0;\n\n\tfor ( ; cur; cur = cur[dir] )\n\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\tbreak;\n\n\treturn cur;\n};\n\njQuery.sibling = function(n, elem){\n\tvar r = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\tr.push( n );\n\t}\n\n\treturn r;\n};\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && elem != window )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif ( data !== undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn );\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply(arguments.callee.elem, arguments) :\n\t\t\t\t\tundefined;\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar namespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\thandler.type = namespaces.slice().sort().join(\".\");\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\t\t\t\n\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\tjQuery.event.specialAll[type].setup.call(elem, data, namespaces);\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types === undefined || (typeof types === \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar namespaces = type.split(\".\");\n\t\t\t\t\ttype = namespaces.shift();\n\t\t\t\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( var handle in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( namespace.test(events[type][handle].type) )\n\t\t\t\t\t\t\t\t\tdelete events[type][handle];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\t\t\t\tjQuery.event.specialAll[type].teardown.call(elem, namespaces);\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem, bubbling ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event;\n\n\t\tif( !bubbling ){\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( this.global[type] )\n\t\t\t\t\tjQuery.each( jQuery.cache, function(){\n\t\t\t\t\t\tif ( this.events && this.events[type] )\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\t\t\t\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\t\t\t\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray(data);\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\tif ( handle )\n\t\t\thandle.apply( elem, data );\n\n\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\tif ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\tevent.result = false;\n\n\t\t// Trigger the native events (except for clicks on links)\n\t\tif ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\tthis.triggered = true;\n\t\t\ttry {\n\t\t\t\telem[ type ]();\n\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\tthis.triggered = false;\n\n\t\tif ( !event.isPropagationStopped() ) {\n\t\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\t\t\tif ( parent )\n\t\t\t\tjQuery.event.trigger(event, data, parent, true);\n\t\t}\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\t\t\n\t\t// Namespaced event handlers\n\t\tvar namespaces = event.type.split(\".\");\n\t\tevent.type = namespaces.shift();\n\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespaces.length && !event.exclusive;\n\t\t\n\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || namespace.test(handler.type) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tvar ret = handler.apply(this, arguments);\n\n\t\t\t\tif( ret !== undefined ){\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( event.isImmediatePropagationStopped() )\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function(event) {\n\t\tif ( event[expando] )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ){\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\tproxy = proxy || function(){ return fn.apply(this, arguments); };\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: bindReady,\n\t\t\tteardown: function() {}\n\t\t}\n\t},\n\t\n\tspecialAll: {\n\t\tlive: {\n\t\t\tsetup: function( selector, namespaces ){\n\t\t\t\tjQuery.event.add( this, namespaces[0], liveHandler );\n\t\t\t},\n\t\t\tteardown:  function( namespaces ){\n\t\t\t\tif ( namespaces.length ) {\n\t\t\t\t\tvar remove = 0, name = RegExp(\"(^|\\\\.)\" + namespaces[0] + \"(\\\\.|$)\");\n\t\t\t\t\t\n\t\t\t\t\tjQuery.each( (jQuery.data(this, \"events\").live || {}), function(){\n\t\t\t\t\t\tif ( name.test(this.type) )\n\t\t\t\t\t\t\tremove++;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif ( remove < 1 )\n\t\t\t\t\t\tjQuery.event.remove( this, namespaces[0], liveHandler );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.Event = function( src ){\n\t// Allow instantiation without the 'new' keyword\n\tif( !this.preventDefault )\n\t\treturn new jQuery.Event(src);\n\t\n\t// Event object\n\tif( src && src.type ){\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t}else\n\t\tthis.type = src;\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\t\n\t// Mark it as fixed\n\tthis[expando] = true;\n};\n\nfunction returnFalse(){\n\treturn false;\n}\nfunction returnTrue(){\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if preventDefault exists run it on the original event\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if stopPropagation exists run it on the original event\n\t\tif (e.stopPropagation)\n\t\t\te.stopPropagation();\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation:function(){\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != this )\n\t\ttry { parent = parent.parentNode; }\n\t\tcatch(e) { parent = this; }\n\t\n\tif( parent != this ){\n\t\t// set the correct event type\n\t\tevent.type = event.data;\n\t\t// handle event if we actually just moused on to a non sub-element\n\t\tjQuery.event.handle.apply( this, arguments );\n\t}\n};\n\t\njQuery.each({ \n\tmouseover: 'mouseenter', \n\tmouseout: 'mouseleave'\n}, function( orig, fix ){\n\tjQuery.event.special[ fix ] = {\n\t\tsetup: function(){\n\t\t\tjQuery.event.add( this, orig, withinElement, fix );\n\t\t},\n\t\tteardown: function(){\n\t\t\tjQuery.event.remove( this, orig, withinElement );\n\t\t}\n\t};\t\t\t   \n});\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif( this[0] ){\n\t\t\tvar event = jQuery.Event(type);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\t\t\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.mouseenter(fnOver).mouseleave(fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( fn );\n\n\t\treturn this;\n\t},\n\t\n\tlive: function( type, fn ){\n\t\tvar proxy = jQuery.event.proxy( fn );\n\t\tproxy.guid += this.selector + type;\n\n\t\tjQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );\n\n\t\treturn this;\n\t},\n\t\n\tdie: function( type, fn ){\n\t\tjQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ){\n\tvar check = RegExp(\"(^|\\\\.)\" + event.type + \"(\\\\.|$)\"),\n\t\tstop = true,\n\t\telems = [];\n\n\tjQuery.each(jQuery.data(this, \"events\").live || [], function(i, fn){\n\t\tif ( check.test(fn.type) ) {\n\t\t\tvar elem = jQuery(event.target).closest(fn.data)[0];\n\t\t\tif ( elem )\n\t\t\t\telems.push({ elem: elem, fn: fn });\n\t\t}\n\t});\n\n\telems.sort(function(a,b) {\n\t\treturn jQuery.data(a.elem, \"closest\") - jQuery.data(b.elem, \"closest\");\n\t});\n\t\n\tjQuery.each(elems, function(){\n\t\tif ( this.fn.call(this.elem, event, this.fn.data) === false )\n\t\t\treturn (stop = false);\n\t});\n\n\treturn stop;\n}\n\nfunction liveConvert(type, selector){\n\treturn [\"live\", type, selector.replace(/\\./g, \"`\").replace(/ /g, \"|\")].join(\".\");\n}\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document, jQuery );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera and webkit nightlies currently support this event\n\tif ( document.addEventListener ) {\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function(){\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", arguments.callee, false );\n\t\t\tjQuery.ready();\n\t\t}, false );\n\n\t// If IE event model is used\n\t} else if ( document.attachEvent ) {\n\t\t// ensure firing before onload,\n\t\t// maybe late but safe also for iframes\n\t\tdocument.attachEvent(\"onreadystatechange\", function(){\n\t\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t\tdocument.detachEvent( \"onreadystatechange\", arguments.callee );\n\t\t\t\tjQuery.ready();\n\t\t\t}\n\t\t});\n\n\t\t// If IE and not an iframe\n\t\t// continually check to see if the document is ready\n\t\tif ( document.documentElement.doScroll && window == window.top ) (function(){\n\t\t\tif ( jQuery.isReady ) return;\n\n\t\t\ttry {\n\t\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t\t} catch( error ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,\" +\n\t\"change,select,submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery( window ).bind( 'unload', function(){ \n\tfor ( var id in jQuery.cache )\n\t\t// Skip the window\n\t\tif ( id != 1 && jQuery.cache[ id ].handle )\n\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n}); \n(function(){\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = '   <link/><table></table><a href=\"/a\" style=\"color:red;float:left;opacity:.5;\">a</a><select><option>text</option></select><object><param/></object>';\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType == 3,\n\t\t\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\t\t\n\t\t// Make sure that you can get all elements in an <object> element\n\t\t// IE 7 always returns no results\n\t\tobjectAll: !!div.getElementsByTagName(\"object\")[0]\n\t\t\t.getElementsByTagName(\"*\").length,\n\t\t\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\t\t\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\t\t\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\t\t\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\topacity: a.style.opacity === \"0.5\",\n\t\t\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Will be defined later\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\t\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e){}\n\n\troot.insertBefore( script, root.firstChild );\n\t\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function(){\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", arguments.callee);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function(){\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\t});\n})();\n\nvar styleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\";\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\t\"float\": styleFloat,\n\tcssFloat: styleFloat,\n\tstyleFloat: styleFloat,\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\ttabindex: \"tabIndex\"\n};\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tif( callback )\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password|search/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n  \n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr:function(){\n\t\t\treturn window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = /^(\\w+:)?\\/\\/([^\\/?#]+)/.exec( s.url );\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\" && parts\n\t\t\t&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){\n\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The request was aborted, clear the interval and decrement jQuery.active\n\t\t\tif (xhr.readyState == 0) {\n\t\t\t\tif (ival) {\n\t\t\t\t\t// clear poll interval\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" ? \"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ? \"error\" :\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ? \"notmodified\" :\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout )\n\t\t\t\t\txhr.abort();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr && !requestDone )\n\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url];\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s != null is checked to keep backwards compatibility\n\t\tif( s && s.dataFilter )\n\t\t\tdata = s.dataFilter( data, type );\n\n\t\t// The filter can actually parse the response\n\t\tif( typeof data === \"string\" ){\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\tif ( type == \"script\" )\n\t\t\t\tjQuery.globalEval( data );\n\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type == \"json\" )\n\t\t\t\tdata = window[\"eval\"](\"(\" + data + \")\");\n\t\t}\n\t\t\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [ ];\n\n\t\tfunction add( key, value ){\n\t\t\ts[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n\t\t};\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( jQuery.isArray(a) || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( jQuery.isArray(a[j]) )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\tadd( j, this );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\tadd( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\nvar elemdisplay = {},\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\nfunction genFx( type, num ){\n\tvar obj = {};\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){\n\t\tobj[ this ] = type;\n\t});\n\treturn obj;\n}\n\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\t\n\t\t\t\tthis[i].style.display = old || \"\";\n\t\t\t\t\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar tagName = this[i].tagName, display;\n\t\t\t\t\t\n\t\t\t\t\tif ( elemdisplay[ tagName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ tagName ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\t\t\t\t\t\tif ( display === \"none\" )\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t\t\n\t\t\t\t\t\telemdisplay[ tagName ] = display;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = jQuery.data(this[i], \"olddisplay\") || \"\";\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" )\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn == null || bool ?\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t\t}) :\n\t\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType == 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\t\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( ( p == \"height\" || p == \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ){\n\tjQuery.fn[ name ] = function( speed, callback ){\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop == \"height\" || this.prop == \"width\" ) && this.elem.style )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( timerId );\n\t\t\t\t\ttimerId = undefined;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop == \"width\" || this.prop == \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tjQuery(this.elem).hide();\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t\t\t\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\tstep: {\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null )\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\telse\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t}\n\t}\n});\nif ( document.documentElement[\"getBoundingClientRect\"] )\n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tvar box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\t\treturn { top: top, left: left };\n\t};\nelse \n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\n\t\tvar elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView.getComputedStyle(elem, null),\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tcomputedStyle = defaultView.getComputedStyle(elem, null);\n\t\t\ttop -= elem.scrollTop, left -= elem.scrollLeft;\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop += elem.offsetTop, left += elem.offsetLeft;\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )\n\t\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" )\n\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" )\n\t\t\ttop  += body.offsetTop,\n\t\t\tleft += body.offsetLeft;\n\n\t\tif ( prevComputedStyle.position === \"fixed\" )\n\t\t\ttop  += Math.max(docElem.scrollTop, body.scrollTop),\n\t\t\tleft += Math.max(docElem.scrollLeft, body.scrollLeft);\n\n\t\treturn { top: top, left: left };\n\t};\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tif ( this.initialized ) return;\n\t\tvar body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,\n\t\t\thtml = '<div style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\"><div></div></div><table style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\" cellpadding=\"0\" cellspacing=\"0\"><tr><td></td></tr></table>';\n\n\t\trules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };\n\t\tfor ( prop in rules ) container.style[prop] = rules[prop];\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore(container, body.firstChild);\n\t\tinnerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tinnerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tbody.style.marginTop = '1px';\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);\n\t\tbody.style.marginTop = bodyMarginTop;\n\n\t\tbody.removeChild(container);\n\t\tthis.initialized = true;\n\t},\n\n\tbodyOffset: function(body) {\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset )\n\t\t\ttop  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,\n\t\t\tleft += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;\n\t\treturn { top: top, left: left };\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop'  );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth'  );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent || document.body;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return null;\n\n\t\treturn val !== undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\", // bottom or right\n\t\tlower = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\t\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] ||\n\t\t\tdocument.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tdocument.documentElement[\"client\" + name],\n\t\t\t\t\tdocument.body[\"scroll\" + name], document.documentElement[\"scroll\" + name],\n\t\t\t\t\tdocument.body[\"offset\" + name], document.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n})(); "
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.4.2\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2010, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Sat Feb 13 22:33:48 2010 -0500\n */\n(function( window, undefined ) {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<[\\w\\W]+>)[^>]*$|^#([\\w-]+)$/,\n\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\trtrim = /^(\\s|\\u00A0)+|(\\s|\\u00A0)+$/g,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\t\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\t\n\t// The functions to execute on DOM ready\n\treadyList = [],\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwnProperty = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\tindexOf = Array.prototype.indexOf;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\t\t\t\t\t\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(\"TAG\")\n\t\t\t} else if ( !context && /^\\w+$/.test( selector ) ) {\n\t\t\t\tthis.selector = selector;\n\t\t\t\tthis.context = document;\n\t\t\t\tselector = document.getElementsByTagName( selector );\n\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn jQuery( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.4.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\t\t\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\t\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady ) {\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\t} else if ( readyList ) {\n\t\t\t// Add the function to the wait list\n\t\t\treadyList.push( fn );\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\t\n\tend: function() {\n\t\treturn this.prevObject || jQuery(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging object literal values or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {\n\t\t\t\t\tvar clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src\n\t\t\t\t\t\t: jQuery.isArray(copy) ? [] : {};\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\t\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\t\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 13 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tvar fn, i = 0;\n\t\t\t\twhile ( (fn = readyList[ i++ ]) ) {\n\t\t\t\t\tfn.call( document, jQuery );\n\t\t\t\t}\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\treadyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\t\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\treturn jQuery.ready();\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || toString.call(obj) !== \"[object Object]\" || obj.nodeType || obj.setInterval ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor\n\t\t\t&& !hasOwnProperty.call(obj, \"constructor\")\n\t\t\t&& !hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\t\t\n\t\treturn key === undefined || hasOwnProperty.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\t\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\t\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\t\t\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( /^[\\],:{}\\s]*$/.test(data.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\")\n\t\t\t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\")\n\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\n\t\t\tif ( jQuery.support.scriptEval ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\tif ( array.length == null || typeof array === \"string\" || jQuery.isFunction(array) || (typeof array !== \"function\" && array.setInterval) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length, j = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tif ( !inv !== !callback( elems[ i ], i ) ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = /(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(opera)(?:.*version)?[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\t\t!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\\w.]+))?/.exec( ua ) ||\n\t\t  \t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tbrowser: {}\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch( error ) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n// Mutifunctional method to get and set values to a collection\n// The value/s can be optionally by executed if its a function\nfunction access( elems, key, value, exec, fn, pass ) {\n\tvar length = elems.length;\n\t\n\t// Setting many attributes\n\tif ( typeof key === \"object\" ) {\n\t\tfor ( var k in key ) {\n\t\t\taccess( elems, k, key[k], exec, fn, value );\n\t\t}\n\t\treturn elems;\n\t}\n\t\n\t// Setting one attribute\n\tif ( value !== undefined ) {\n\t\t// Optionally, function values get executed if exec is true\n\t\texec = !pass && exec && jQuery.isFunction(value);\n\t\t\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t}\n\t\t\n\t\treturn elems;\n\t}\n\t\n\t// Getting an attribute\n\treturn length ? fn( elems[0], key ) : undefined;\n}\n\nfunction now() {\n\treturn (new Date).getTime();\n}\n(function() {\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + now();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: div.getElementsByTagName(\"input\")[0].value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: document.createElement(\"select\").appendChild( document.createElement(\"option\") ).selected,\n\n\t\tparentNode: div.removeChild( div.appendChild( document.createElement(\"div\") ) ).parentNode === null,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\tcheckClone: false,\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e) {}\n\n\troot.insertBefore( script, root.firstChild );\n\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete script.test;\n\t\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\n\t\tdiv = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) { \n\t\tvar el = document.createElement(\"div\"); \n\t\teventName = \"on\" + eventName; \n\n\t\tvar isSupported = (eventName in el); \n\t\tif ( !isSupported ) { \n\t\t\tel.setAttribute(eventName, \"return;\"); \n\t\t\tisSupported = typeof el[eventName] === \"function\"; \n\t\t} \n\t\tel = null; \n\n\t\treturn isSupported; \n\t};\n\t\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\troot = script = div = all = a = null;\n})();\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\t\n\texpando:expando,\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t\"object\": true,\n\t\t\"applet\": true\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache;\n\n\t\tif ( !id && typeof name === \"string\" && data === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id ) { \n\t\t\tid = ++uuid;\n\t\t}\n\n\t\t// Avoid generating a new cache unless none exists and we\n\t\t// want to manipulate it.\n\t\tif ( typeof name === \"object\" ) {\n\t\t\telem[ expando ] = id;\n\t\t\tthisCache = cache[ id ] = jQuery.extend(true, {}, name);\n\n\t\t} else if ( !cache[ id ] ) {\n\t\t\telem[ expando ] = id;\n\t\t\tcache[ id ] = {};\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\treturn typeof name === \"string\" ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( thisCache ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tif ( jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete cache[ id ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tif ( typeof key === \"undefined\" && this.length ) {\n\t\t\treturn jQuery.data( this[0] );\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t}\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else {\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery.data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ), fn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i, elem ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\nvar rclass = /[\\n\\t]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /href|src|style/,\n\trtype = /(button|input)/i,\n\trfocusable = /(button|input|object|select|textarea)/i,\n\trclickable = /^(a|area)$/i,\n\trradiocheck = /radio|checkbox/;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \", setClass = elem.className;\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split(rspace);\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value, isBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className, i = 0, self = jQuery(this),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery.data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery.data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Typecast each time if the value is a Function and the appended\n\t\t\t// value is therefore different each time.\n\t\t\tif ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\t\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\t\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\t\t// Using attr for specific style information is now deprecated. Use style instead.\n\t\treturn jQuery.style( elem, name, value );\n\t}\n});\nvar rnamespaces = /\\.(.*)$/,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(/[^\\w\\s\\.\\|`]/g, function( ch ) {\n\t\t\treturn \"\\\\\" + ch;\n\t\t});\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {\n\t\t\telem = window;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery.data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events = elemData.events || {},\n\t\t\teventHandle = elemData.handle, eventHandle;\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\thandleObj.guid = handler.guid;\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( special.add ) { \n\t\t\t\tspecial.add.call( elem, handleObj ); \n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + \n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\")\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( var j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( var j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tremoveEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\tif ( this.events && this.events[type] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (e) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar target = event.target, old,\n\t\t\t\tisClick = jQuery.nodeName(target, \"a\") && type === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) && \n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ type ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + type ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + type ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ type ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + type ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace, events;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + namespaces.slice(0).sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tvar events = jQuery.data(this, \"events\"), handlers = events[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, arguments );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {\n\t\t\tevent.which = event.charCode || event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); \n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tvar remove = true,\n\t\t\t\t\ttype = handleObj.origType.replace(rnamespaces, \"\");\n\t\t\t\t\n\t\t\t\tjQuery.each( jQuery.data(this, \"events\").live || [], function() {\n\t\t\t\t\tif ( type === this.origType.replace(rnamespaces, \"\") ) {\n\t\t\t\t\t\tremove = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ( remove ) {\n\t\t\t\t\tjQuery.event.remove( this, handleObj.origType, liveHandler );\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( this.setInterval ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\telem.removeEventListener( type, handle, false );\n\t} : \n\tfunction( elem, type, handle ) {\n\t\telem.detachEvent( \"on\" + type, handle );\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\n\t// Mark it as fixed\n\tthis[ expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\t \n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar formElems = /textarea|input|select/i,\n\n\tchangeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !formElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery.data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery.data( elem, \"_change_data\", val );\n\t\t}\n\t\t\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\treturn jQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange, \n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information/focus[in] is not needed anymore\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery.data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n}\n\nfunction trigger( type, elem, args ) {\n\targs[0].type = type;\n\treturn jQuery.event.handle.apply( elem, args );\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t}, \n\t\t\tteardown: function() { \n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) { \n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\t\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\t\t\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\t\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tcontext.each(function(){\n\t\t\t\t\tjQuery.event.add( this, liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ) {\n\tvar stop, elems = [], selectors = [], args = arguments,\n\t\trelated, match, handleObj, elem, j, i, l, data,\n\t\tevents = jQuery.data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861)\n\tif ( event.liveFired === this || !events || !events.live || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( match[i].selector === handleObj.selector ) {\n\t\t\t\telem = match[i].elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tif ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {\n\t\t\tstop = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn \"live.\" + (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(/\\./g, \"`\").replace(/ /g, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( fn ) {\n\t\treturn fn ? this.bind( name, fn ) : this.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n// Prevent memory leaks in IE\n// Window isn't included so as not to unbind existing unload events\n// More info:\n//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/\nif ( window.attachEvent && !window.addEventListener ) {\n\twindow.attachEvent(\"onunload\", function() {\n\t\tfor ( var id in jQuery.cache ) {\n\t\t\tif ( jQuery.cache[ id ].handle ) {\n\t\t\t\t// Try/Catch is to handle iframes being unloaded, see #4280\n\t\t\t\ttry {\n\t\t\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t}\n\t});\n}\n/*!\n * Sizzle CSS Selector Engine - v1.0\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function(){\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tvar origContext = context = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\twhile ( (chunker.exec(\"\"), m = chunker.exec(soFar)) !== null ) {\n\t\tsoFar = m[3];\n\t\t\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = m[3];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\t\t\tvar ret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tvar ret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\t\t\tset = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray(set);\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function(results){\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort(sortOrder);\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice(1,1);\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item, left = match[1];\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\tleftMatch: {},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\treturn match[1].toLowerCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tSizzle.error( \"Syntax error, unrecognized expression: \" + name );\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t}));\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.sourceIndex || !b.sourceIndex ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.sourceIndex ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.ownerDocument || !b.ownerDocument ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.ownerDocument ? -1 : 1;\n\t\t}\n\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.setStart(a, 0);\n\t\taRange.setEnd(a, 0);\n\t\tbRange.setStart(b, 0);\n\t\tbRange.setEnd(b, 0);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\troot = form = null; // release memory in IE\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n\n\tdiv = null; // release memory in IE\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function(query, context, extra, seed){\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t} catch(e){}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\tdiv = null; // release memory in IE\n\t})();\n}\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\tdiv = null; // release memory in IE\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ? function(a, b){\n\treturn !!(a.compareDocumentPosition(b) & 16);\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = getText;\njQuery.isXMLDoc = isXML;\njQuery.contains = contains;\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tslice = Array.prototype.slice;\n\n// Implement the identical functionality for filter and not\nvar winnow = function( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ), length = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\t\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar ret = [], cur = this[0], match, matches = {}, selector;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( var i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ? \n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur });\n\t\t\t\t\t\t\tdelete matches[selector];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = jQuery.expr.match.POS.test( selectors ) ? \n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\treturn this.map(function( i, cur ) {\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t},\n\t\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\t\t\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call(arguments).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn jQuery.find.matches(expr, elems);\n\t},\n\t\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [], cur = elem[dir];\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /(<([\\w:]+)[^>]*?)\\/>/g,\n\trselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<script|<object|<embed|<option|<style/i,\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,  // checked=\"checked\" or checked (html5)\n\tfcloseTag = function( all, front, tag ) {\n\t\treturn rselfClosing.test( tag ) ?\n\t\t\tall :\n\t\t\tfront + \"></\" + tag + \">\";\n\t},\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ), contents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\t\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t elem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function() {\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML, ownerDocument = this.ownerDocument;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(rinlinejQuery, \"\")\n\t\t\t\t\t// Handle the case in IE 8 where action=/test/> self-closes a tag\n\t\t\t\t\t.replace(/=([^=\"'>\\s]+\\/)>/g, '=\"$1\">')\n\t\t\t\t\t.replace(rleadingWhitespace, \"\")], ownerDocument)[0];\n\t\t\t} else {\n\t\t\t\treturn this.cloneNode(true);\n\t\t\t}\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tcloneCopyEvent( this, ret );\n\t\t\tcloneCopyEvent( this.find(\"*\"), ret.find(\"*\") );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, fcloseTag);\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\tself.empty().append(function(){\n\t\t\t\t\treturn value.call( this, i, old );\n\t\t\t\t});\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery(value).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling, parent = this.parentNode;\n\n\t\t\t\tjQuery(this).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, value = args[0], scripts = [], fragment, parent;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = buildFragment( args, this, scripts );\n\t\t\t}\n\t\t\t\n\t\t\tfragment = results.fragment;\n\t\t\t\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti > 0 || results.cacheable || this.length > 1  ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t\tfunction root( elem, cur ) {\n\t\t\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n});\n\nfunction cloneCopyEvent(orig, ret) {\n\tvar i = 0;\n\n\tret.each(function() {\n\t\tif ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction buildFragment( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\t!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n}\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\t\t\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t\t\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\t\t\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\njQuery.extend({\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, fcloseTag);\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\t\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\t\t\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tid = elem[ jQuery.expando ];\n\t\t\t\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\t\t\t\t\n\t\t\t\tif ( data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tremoveEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n// exclude the following css properties to add px\nvar rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\tralpha = /alpha\\([^)]*\\)/,\n\tropacity = /opacity=([^)]*)/,\n\trfloat = /float/i,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display:\"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\n\t// cache check for defaultView.getComputedStyle\n\tgetComputedStyle = document.defaultView && document.defaultView.getComputedStyle,\n\t// normalize float css property\n\tstyleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\",\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\treturn access( this, name, value, true, function( elem, name, value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn jQuery.curCSS( elem, name );\n\t\t}\n\t\t\n\t\tif ( typeof value === \"number\" && !rexclude.test(name) ) {\n\t\t\tvalue += \"px\";\n\t\t}\n\n\t\tjQuery.style( elem, name, value );\n\t});\n};\n\njQuery.extend({\n\tstyle: function( elem, name, value ) {\n\t\t// don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// ignore negative width and height values #1599\n\t\tif ( (name === \"width\" || name === \"height\") && parseFloat(value) < 0 ) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\tvar style = elem.style || elem, set = value !== undefined;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\tstyle.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\tvar opacity = parseInt( value, 10 ) + \"\" === \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\";\n\t\t\t\tvar filter = style.filter || jQuery.curCSS( elem, \"filter\" ) || \"\";\n\t\t\t\tstyle.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;\n\t\t\t}\n\n\t\t\treturn style.filter && style.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( ropacity.exec(style.filter)[1] ) / 100) + \"\":\n\t\t\t\t\"\";\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tname = name.replace(rdashAlpha, fcamelCase);\n\n\t\tif ( set ) {\n\t\t\tstyle[ name ] = value;\n\t\t}\n\n\t\treturn style[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name === \"width\" || name === \"height\" ) {\n\t\t\tvar val, props = cssShow, which = name === \"width\" ? cssWidth : cssHeight;\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra ) {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\tgetWH();\n\t\t\t} else {\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\t\t\t}\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style, filter;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" && elem.currentStyle ) {\n\t\t\tret = ropacity.test(elem.currentStyle.filter || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\t\"\";\n\n\t\t\treturn ret === \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tif ( !force && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\n\t\t} else if ( getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( rfloat.test( name ) ) {\n\t\t\t\tname = \"float\";\n\t\t\t}\n\n\t\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\t\tvar defaultView = elem.ownerDocument.defaultView;\n\n\t\t\tif ( !defaultView ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle ) {\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\t}\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name === \"opacity\" && ret === \"\" ) {\n\t\t\t\tret = \"1\";\n\t\t\t}\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(rdashAlpha, fcamelCase);\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = camelCase === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth, height = elem.offsetHeight,\n\t\t\tskip = elem.nodeName.toLowerCase() === \"tr\";\n\n\t\treturn width === 0 && height === 0 && !skip ?\n\t\t\ttrue :\n\t\t\twidth > 0 && height > 0 && !skip ?\n\t\t\t\tfalse :\n\t\t\t\tjQuery.curCSS(elem, \"display\") === \"none\";\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\nvar jsc = now(),\n\trscript = /<script(.|\\s)*?\\/script>/gi,\n\trselectTextarea = /select|textarea/i,\n\trinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,\n\tjsre = /=\\?(&|$)/,\n\trquery = /\\?/,\n\trts = /(\\?|&)_=.*?(&|$)/,\n\trurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\tr20 = /%20/g,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load;\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" ) {\n\t\t\treturn _load.call( this, url );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function( res, status ) {\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div />\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || rselectTextarea.test(this.nodeName) ||\n\t\t\t\t\trinput.test(this.type));\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery(this).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"), function( i, o ) {\n\tjQuery.fn[o] = function( f ) {\n\t\treturn this.bind(o, f);\n\t};\n});\n\njQuery.extend({\n\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\ttraditional: false,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7 (can't request local files),\n\t\t// so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr: window.XMLHttpRequest && (window.location.protocol !== \"file:\" || !window.ActiveXObject) ?\n\t\t\tfunction() {\n\t\t\t\treturn new window.XMLHttpRequest();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\ttry {\n\t\t\t\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t\t\t} catch(e) {}\n\t\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajax: function( origSettings ) {\n\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);\n\t\t\n\t\tvar jsonp, status, data,\n\t\t\tcallbackContext = origSettings && origSettings.context || s,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\tif ( type === \"GET\" ) {\n\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t}\n\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data ) {\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t}\n\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t} catch(e) {}\n\n\t\t\t\tif ( head ) {\n\t\t\t\t\thead.removeChild( script );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType === \"script\" && s.cache === null ) {\n\t\t\ts.cache = false;\n\t\t}\n\n\t\tif ( s.cache === false && type === \"GET\" ) {\n\t\t\tvar ts = now();\n\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(rts, \"$1_=\" + ts + \"$2\");\n\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type === \"GET\" ) {\n\t\t\ts.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.data;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = rurl.exec( s.url ),\n\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType === \"script\" && type === \"GET\" && remote ) {\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif ( s.scriptCharset ) {\n\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t}\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function() {\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\thead.insertBefore( script, head.firstChild );\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\tif ( !xhr ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif ( s.username ) {\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\t} else {\n\t\t\txhr.open(type, s.url, s.async);\n\t\t}\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data || origSettings && origSettings.contentType ) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[s.url]);\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.etag[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-None-Match\", jQuery.etag[s.url]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\t// Only send the header if it's not a remote XHR\n\t\t\tif ( !remote ) {\n\t\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e) {}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global ) {\n\t\t\ttrigger(\"ajaxSend\", [xhr, s]);\n\t\t}\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {\n\t\t\t// The request was aborted\n\t\t\tif ( !xhr || xhr.readyState === 0 || isTimeout === \"abort\" ) {\n\t\t\t\t// Opera doesn't call onreadystatechange before this point\n\t\t\t\t// so we simulate the call\n\t\t\t\tif ( !requestDone ) {\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\n\t\t\t\trequestDone = true;\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t}\n\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\tstatus = isTimeout === \"timeout\" ?\n\t\t\t\t\t\"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ?\n\t\t\t\t\t\t\"error\" :\n\t\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ?\n\t\t\t\t\t\t\t\"notmodified\" :\n\t\t\t\t\t\t\t\"success\";\n\n\t\t\t\tvar errMsg;\n\n\t\t\t\tif ( status === \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(err) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t\terrMsg = err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.handleError(s, xhr, status, errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout === \"timeout\" ) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async ) {\n\t\t\t\t\txhr = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Override the abort handler, if we can (IE doesn't allow it, but that's OK)\n\t\t// Opera doesn't fire onreadystatechange at all on abort\n\t\ttry {\n\t\t\tvar oldAbort = xhr.abort;\n\t\t\txhr.abort = function() {\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\toldAbort.call( xhr );\n\t\t\t\t}\n\n\t\t\t\tonreadystatechange( \"abort\" );\n\t\t\t};\n\t\t} catch(e) { }\n\n\t\t// Timeout checker\n\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t// Check to see if the request is still happening\n\t\t\t\tif ( xhr && !requestDone ) {\n\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}\n\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send( type === \"POST\" || type === \"PUT\" || type === \"DELETE\" ? s.data : null );\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t\t// Fire the complete handlers\n\t\t\tcomplete();\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async ) {\n\t\t\tonreadystatechange();\n\t\t}\n\n\t\tfunction success() {\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success ) {\n\t\t\t\ts.success.call( callbackContext, data, status, xhr );\n\t\t\t}\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxSuccess\", [xhr, s] );\n\t\t\t}\n\t\t}\n\n\t\tfunction complete() {\n\t\t\t// Process result\n\t\t\tif ( s.complete ) {\n\t\t\t\ts.complete.call( callbackContext, xhr, status);\n\t\t\t}\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxComplete\", [xhr, s] );\n\t\t\t}\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction trigger(type, args) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) {\n\t\t\ts.error.call( s.context || s, xhr, status, e );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger( \"ajaxError\", [xhr, s, e] );\n\t\t}\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol === \"file:\" ||\n\t\t\t\t// Opera returns 0 when status is 304\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) ||\n\t\t\t\txhr.status === 304 || xhr.status === 1223 || xhr.status === 0;\n\t\t} catch(e) {}\n\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\tvar lastModified = xhr.getResponseHeader(\"Last-Modified\"),\n\t\t\tetag = xhr.getResponseHeader(\"Etag\");\n\n\t\tif ( lastModified ) {\n\t\t\tjQuery.lastModified[url] = lastModified;\n\t\t}\n\n\t\tif ( etag ) {\n\t\t\tjQuery.etag[url] = etag;\n\t\t}\n\n\t\t// Opera returns 0 when status is 304\n\t\treturn xhr.status === 304 || xhr.status === 0;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\") || \"\",\n\t\t\txml = type === \"xml\" || !type && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"parsererror\" );\n\t\t}\n\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s is checked to keep backwards compatibility\n\t\tif ( s && s.dataFilter ) {\n\t\t\tdata = s.dataFilter( data, type );\n\t\t}\n\n\t\t// The filter can actually parse the response\n\t\tif ( typeof data === \"string\" ) {\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type === \"json\" || !type && ct.indexOf(\"json\") >= 0 ) {\n\t\t\t\tdata = jQuery.parseJSON( data );\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\t} else if ( type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0 ) {\n\t\t\t\tjQuery.globalEval( data );\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [];\n\t\t\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\t\t\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray(a) || a.jquery ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[prefix] );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(r20, \"+\");\n\n\t\tfunction buildParams( prefix, obj ) {\n\t\t\tif ( jQuery.isArray(obj) ) {\n\t\t\t\t// Serialize array item.\n\t\t\t\tjQuery.each( obj, function( i, v ) {\n\t\t\t\t\tif ( traditional || /\\[\\]$/.test( prefix ) ) {\n\t\t\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\t\t\tadd( prefix, v );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t\t\t// Serialize object item.\n\t\t\t\tjQuery.each( obj, function( k, v ) {\n\t\t\t\t\tbuildParams( prefix + \"[\" + k + \"]\", v );\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else {\n\t\t\t\t// Serialize scalar item.\n\t\t\t\tadd( prefix, obj );\n\t\t\t}\n\t\t}\n\n\t\tfunction add( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction(value) ? value() : value;\n\t\t\ts[ s.length ] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\t\t}\n\t}\n});\nvar elemdisplay = {},\n\trfxtypes = /toggle|show|hide/,\n\trfxnum = /^([+-]=)?([\\d+-.]+)(.*)$/,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, callback ) {\n\t\tif ( speed || speed === 0) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\n\t\t\t\tthis[i].style.display = old || \"\";\n\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar nodeName = this[i].nodeName, display;\n\n\t\t\t\t\tif ( elemdisplay[ nodeName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ nodeName ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + nodeName + \" />\").appendTo(\"body\");\n\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\n\t\t\t\t\t\tif ( display === \"none\" ) {\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telem.remove();\n\n\t\t\t\t\t\telemdisplay[ nodeName ] = display;\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = jQuery.data(this[j], \"olddisplay\") || \"\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" ) {\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType === 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = p.replace(rdashAlpha, fcamelCase);\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( ( p === \"height\" || p === \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, callback ) {\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop === \"height\" || this.prop === \"width\" ) && this.elem.style ) {\n\t\t\tthis.elem.style.display = \"block\";\n\t\t}\n\t},\n\n\t// Get the current size\n\tcur: function( force ) {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(jQuery.fx.tick, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tvar old = jQuery.data(this.elem, \"olddisplay\");\n\t\t\t\t\tthis.elem.style.display = old ? old : this.options.display;\n\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") === \"none\" ) {\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style(this.elem, p, this.options.orig[p]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\t\t\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\t\n\tspeeds: {\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style(fx.elem, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tvar box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, \"marginTop\", true) ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\", checkDiv.style.top = \"20px\";\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\", innerDiv.style.position = \"relative\";\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.curCSS(body, \"marginTop\",  true) ) || 0;\n\t\t\tleft += parseFloat( jQuery.curCSS(body, \"marginLeft\", true) ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\t\n\tsetOffset: function( elem, options, i ) {\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( /static/.test( jQuery.curCSS( elem, \"position\" ) ) ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\t\tvar curElem   = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurTop    = parseInt( jQuery.curCSS( elem, \"top\",  true ), 10 ) || 0,\n\t\t\tcurLeft   = parseInt( jQuery.curCSS( elem, \"left\", true ), 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tvar props = {\n\t\t\ttop:  (options.top  - curOffset.top)  + curTop,\n\t\t\tleft: (options.left - curOffset.left) + curLeft\n\t\t};\n\t\t\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.curCSS(elem, \"marginTop\",  true) ) || 0;\n\t\toffset.left -= parseFloat( jQuery.curCSS(elem, \"marginLeft\", true) ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.curCSS(offsetParent[0], \"borderTopWidth\",  true) ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], \"borderLeftWidth\", true) ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\t\t\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn (\"scrollTo\" in elem && elem.document) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\treturn (\"scrollTo\" in elem && elem.document) ? // does it walk and quack like a window?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\telem.document.compatMode === \"CSS1Compat\" && elem.document.documentElement[ \"client\" + name ] ||\n\t\t\telem.document.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\t(elem.nodeType === 9) ? // is it a document\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\tjQuery.css( elem, type ) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n})(window);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.4.4.js",
    "content": "/*!\n * jQuery JavaScript Library v1.4.4\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2010, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu Nov 11 19:04:53 2010 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\trwhite = /\\s/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for non-word characters\n\trnonword = /\\W/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\t\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\t\n\t// The functions to execute on DOM ready\n\treadyList = [],\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\t\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\t\t\t\t\t\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(\"TAG\")\n\t\t\t} else if ( !context && !rnonword.test( selector ) ) {\n\t\t\t\tthis.selector = selector;\n\t\t\t\tthis.context = document;\n\t\t\t\tselector = document.getElementsByTagName( selector );\n\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn jQuery( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.4.4\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\t\t\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\t\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady ) {\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\t} else if ( readyList ) {\n\t\t\t// Add the function to the wait list\n\t\t\treadyList.push( fn );\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\t\n\tend: function() {\n\t\treturn this.prevObject || jQuery(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\t var options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\t\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\t\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tvar fn,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tready = readyList;\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\treadyList = null;\n\n\t\t\t\twhile ( (fn = ready[ i++ ]) ) {\n\t\t\t\t\tfn.call( document, jQuery );\n\t\t\t\t}\n\n\t\t\t\t// Trigger any bound ready events\n\t\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\t\t\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\t\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\t\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\t\t\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\n\t\t\tif ( jQuery.support.scriptEval ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\t\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\t\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\t\t\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\t\t\n\t\t\treturn elems;\n\t\t}\n\t\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// Verify that \\s matches non-breaking spaces\n// (IE fails on this test)\nif ( !rwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn (window.jQuery = window.$ = jQuery);\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + jQuery.now();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") );\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: div.getElementsByTagName(\"input\")[0].value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e) {}\n\n\troot.insertBefore( script, root.firstChild );\n\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete script.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tdocument.body.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\troot = script = div = all = a = null;\n})();\n\n\n\nvar windowData = {},\n\trbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\t\n\texpando: \"jQuery\" + jQuery.now(),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar isNode = elem.nodeType,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : null,\n\t\t\tcache = jQuery.cache, thisCache;\n\n\t\tif ( isNode && !id && typeof name === \"string\" && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the data from the object directly\n\t\tif ( !isNode ) {\n\t\t\tcache = elem;\n\n\t\t// Compute a unique ID for the element\n\t\t} else if ( !id ) {\n\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t}\n\n\t\t// Avoid generating a new cache unless none exists and we\n\t\t// want to manipulate it.\n\t\tif ( typeof name === \"object\" ) {\n\t\t\tif ( isNode ) {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\n\t\t\t} else {\n\t\t\t\tjQuery.extend( cache, name );\n\t\t\t}\n\n\t\t} else if ( isNode && !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\t\t}\n\n\t\tthisCache = isNode ? cache[ id ] : cache;\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\treturn typeof name === \"string\" ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar isNode = elem.nodeType,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem,\n\t\t\tcache = jQuery.cache,\n\t\t\tthisCache = isNode ? cache[ id ] : id;\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( thisCache ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tif ( isNode && jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\tif ( isNode && jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\n\t\t\t// Completely remove the data cache\n\t\t\t} else if ( isNode ) {\n\t\t\t\tdelete cache[ id ];\n\n\t\t\t// Remove all fields from the object\n\t\t\t} else {\n\t\t\t\tfor ( var n in elem ) {\n\t\t\t\t\tdelete elem[ n ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery.data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery.data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery.data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) && \n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\t\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// These attributes require special treatment\n\t\tvar special = rspecialurl.test( name );\n\n\t\t// Safari mis-reports the default selected property of an option\n\t\t// Accessing the parent's selectedIndex property fixes it\n\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\tif ( set ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t}\n\n\t\t\t\tif ( value === null ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t}\n\n\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tattributeNode.value :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\treturn elem[ name ];\n\t\t}\n\n\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\tif ( set ) {\n\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t}\n\n\t\t\treturn elem.style.cssText;\n\t\t}\n\n\t\tif ( set ) {\n\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\telem.setAttribute( name, \"\" + value );\n\t\t}\n\n\t\t// Ensure that missing attributes return undefined\n\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\telem.getAttribute( name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn attr === null ? undefined : attr;\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t},\n\tfocusCounts = { focusin: 0, focusout: 0 };\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\telem = window;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t  return;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery.data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use a key less likely to result in collisions for plain JS objects.\n\t\t// Fixes bug #7150.\n\t\tvar eventKey = elem.nodeType ? \"events\" : \"__events__\",\n\t\t\tevents = elemData[ eventKey ],\n\t\t\teventHandle = elemData.handle;\n\t\t\t\n\t\tif ( typeof events === \"function\" ) {\n\t\t\t// On plain objects events is a fn that holds the the data\n\t\t\t// which prevents this data from being JSON serialized\n\t\t\t// the function does not need to be called, it just contains the data\n\t\t\teventHandle = events.handle;\n\t\t\tevents = events.events;\n\n\t\t} else if ( !events ) {\n\t\t\tif ( !elem.nodeType ) {\n\t\t\t\t// On plain objects, create a fn that acts as the holder\n\t\t\t\t// of the values to avoid JSON serialization of event data\n\t\t\t\telemData[ eventKey ] = elemData = function(){};\n\t\t\t}\n\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( special.add ) { \n\t\t\t\tspecial.add.call( elem, handleObj ); \n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\teventKey = elem.nodeType ? \"events\" : \"__events__\",\n\t\t\telemData = jQuery.data( elem ),\n\t\t\tevents = elemData && elemData[ eventKey ];\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( typeof events === \"function\" ) {\n\t\t\telemData = events;\n\t\t\tevents = events.events;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + \n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( typeof elemData === \"function\" ) {\n\t\t\t\tjQuery.removeData( elem, eventKey );\n\n\t\t\t} else if ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\tif ( this.events && this.events[type] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = elem.nodeType ?\n\t\t\tjQuery.data( elem, \"handle\" ) :\n\t\t\t(jQuery.data( elem, \"__events__\" ) || {}).handle;\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) && \n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery.data(this, this.nodeType ? \"events\" : \"__events__\");\n\n\t\tif ( typeof events === \"function\" ) {\n\t\t\tevents = events.events;\n\t\t}\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); \n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} : \n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\te.liveFired = undefined;\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\t \n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\te.liveFired = undefined;\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery.data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery.data( elem, \"_change_data\", val );\n\t\t}\n\t\t\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\treturn jQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange, \n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery.data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\targs[0].type = type;\n\treturn jQuery.event.handle.apply( elem, args );\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( focusCounts[fix]++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}, \n\t\t\tteardown: function() { \n\t\t\t\tif ( --focusCounts[fix] === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) { \n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.trigger( e, null, e.target );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\t\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\t\t\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\t\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\t\t\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery.data( this, this.nodeType ? \"events\" : \"__events__\" );\n\n\tif ( typeof events === \"function\" ) {\n\t\tevents = events.events;\n\t}\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861)\n\tif ( event.liveFired === this || !events || !events.live || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\t\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n// Prevent memory leaks in IE\n// Window isn't included so as not to unbind existing unload events\n// More info:\n//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/\nif ( window.attachEvent && !window.addEventListener ) {\n\tjQuery(window).bind(\"unload\", function() {\n\t\tfor ( var id in jQuery.cache ) {\n\t\t\tif ( jQuery.cache[ id ].handle ) {\n\t\t\t\t// Try/Catch is to handle iframes being unloaded, see #4280\n\t\t\t\ttry {\n\t\t\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t}\n\t});\n}\n\n\n/*!\n * Sizzle CSS Selector Engine - v1.0\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName( \"*\" );\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+\\-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !/\\W/.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( \"Syntax error, unrecognized expression: \" + name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\tquery = query.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar old = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id;\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"#\" + nid + \" \" + query ), extra );\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS;\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\t\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ? \n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ? \n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\t\t\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\t\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\t\t\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call(arguments).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\t\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked (html5)\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\traction = /\\=([^=\"'>\\s]+\\/)>/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\t\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t elem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function() {\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML,\n\t\t\t\t\townerDocument = this.ownerDocument;\n\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(rinlinejQuery, \"\")\n\t\t\t\t\t// Handle the case in IE 8 where action=/test/> self-closes a tag\n\t\t\t\t\t.replace(raction, '=\"$1\">')\n\t\t\t\t\t.replace(rleadingWhitespace, \"\")], ownerDocument)[0];\n\t\t\t} else {\n\t\t\t\treturn this.cloneNode(true);\n\t\t\t}\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tcloneCopyEvent( this, ret );\n\t\t\tcloneCopyEvent( this.find(\"*\"), ret.find(\"*\") );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\t\t\t\n\t\t\tfragment = results.fragment;\n\t\t\t\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti > 0 || results.cacheable || this.length > 1  ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent(orig, ret) {\n\tvar i = 0;\n\n\tret.each(function() {\n\t\tif ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar oldData = jQuery.data( orig[i++] ),\n\t\t\tcurData = jQuery.data( this, oldData ),\n\t\t\tevents = oldData && oldData.events;\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\t!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\t\t\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t\t\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\t\t\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\njQuery.extend({\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\t\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\t\t\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\t\t\t\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\t\t\t\t\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trbracket = /\\[\\]$/,\n\tjsre = /\\=\\?(&|$)/,\n\trquery = /\\?/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load;\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function( res, status ) {\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || rselectTextarea.test(this.nodeName) ||\n\t\t\t\t\trinput.test(this.type));\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery(this).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"), function( i, o ) {\n\tjQuery.fn[o] = function( f ) {\n\t\treturn this.bind(o, f);\n\t};\n});\n\njQuery.extend({\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\ttraditional: false,\n\t\t*/\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr: function() {\n\t\t\treturn new window.XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\tajax: function( origSettings ) {\n\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),\n\t\t\tjsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);\n\n\t\ts.url = s.url.replace( rhash, \"\" );\n\n\t\t// Use original (not extended) context object if it was provided\n\t\ts.context = origSettings && origSettings.context != null ? origSettings.context : s;\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\tif ( type === \"GET\" ) {\n\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t}\n\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data ) {\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t}\n\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\tvar customJsonp = window[ jsonp ];\n\n\t\t\twindow[ jsonp ] = function( tmp ) {\n\t\t\t\tif ( jQuery.isFunction( customJsonp ) ) {\n\t\t\t\t\tcustomJsonp( tmp );\n\n\t\t\t\t} else {\n\t\t\t\t\t// Garbage collect\n\t\t\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t\t} catch( jsonpError ) {}\n\t\t\t\t}\n\n\t\t\t\tdata = tmp;\n\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t\n\t\t\t\tif ( head ) {\n\t\t\t\t\thead.removeChild( script );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType === \"script\" && s.cache === null ) {\n\t\t\ts.cache = false;\n\t\t}\n\n\t\tif ( s.cache === false && noContent ) {\n\t\t\tvar ts = jQuery.now();\n\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(rts, \"$1_=\" + ts);\n\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for GET/HEAD requests\n\t\tif ( s.data && noContent ) {\n\t\t\ts.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.data;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = rurl.exec( s.url ),\n\t\t\tremote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType === \"script\" && type === \"GET\" && remote ) {\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tif ( s.scriptCharset ) {\n\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t}\n\t\t\tscript.src = s.url;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function() {\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\thead.insertBefore( script, head.firstChild );\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\tif ( !xhr ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif ( s.username ) {\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\t} else {\n\t\t\txhr.open(type, s.url, s.async);\n\t\t}\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set content-type if data specified and content-body is valid for this type\n\t\t\tif ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[s.url]);\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.etag[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-None-Match\", jQuery.etag[s.url]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\t// Only send the header if it's not a remote XHR\n\t\t\tif ( !remote ) {\n\t\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*; q=0.01\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch( headerError ) {}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && jQuery.active-- === 1 ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxSend\", [xhr, s] );\n\t\t}\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {\n\t\t\t// The request was aborted\n\t\t\tif ( !xhr || xhr.readyState === 0 || isTimeout === \"abort\" ) {\n\t\t\t\t// Opera doesn't call onreadystatechange before this point\n\t\t\t\t// so we simulate the call\n\t\t\t\tif ( !requestDone ) {\n\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t}\n\n\t\t\t\trequestDone = true;\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t}\n\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\tstatus = isTimeout === \"timeout\" ?\n\t\t\t\t\t\"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ?\n\t\t\t\t\t\t\"error\" :\n\t\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ?\n\t\t\t\t\t\t\t\"notmodified\" :\n\t\t\t\t\t\t\t\"success\";\n\n\t\t\t\tvar errMsg;\n\n\t\t\t\tif ( status === \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch( parserError ) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t\terrMsg = parserError;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\t\tjQuery.handleSuccess( s, xhr, status, data );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.handleError( s, xhr, status, errMsg );\n\t\t\t\t}\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t\t\t}\n\n\t\t\t\tif ( isTimeout === \"timeout\" ) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async ) {\n\t\t\t\t\txhr = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)\n\t\t// Opera doesn't fire onreadystatechange at all on abort\n\t\ttry {\n\t\t\tvar oldAbort = xhr.abort;\n\t\t\txhr.abort = function() {\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\t// oldAbort has no call property in IE7 so\n\t\t\t\t\t// just do it this way, which works in all\n\t\t\t\t\t// browsers\n\t\t\t\t\tFunction.prototype.call.call( oldAbort, xhr );\n\t\t\t\t}\n\n\t\t\t\tonreadystatechange( \"abort\" );\n\t\t\t};\n\t\t} catch( abortError ) {}\n\n\t\t// Timeout checker\n\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t// Check to see if the request is still happening\n\t\t\t\tif ( xhr && !requestDone ) {\n\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}\n\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send( noContent || s.data == null ? null : s.data );\n\n\t\t} catch( sendError ) {\n\t\t\tjQuery.handleError( s, xhr, null, sendError );\n\n\t\t\t// Fire the complete handlers\n\t\t\tjQuery.handleComplete( s, xhr, status, data );\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async ) {\n\t\t\tonreadystatechange();\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction(value) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\t\t\t};\n\t\t\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\t\t\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray(a) || a.jquery ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[prefix], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(r20, \"+\");\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray(obj) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\t\t\t\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\tif ( jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tjQuery.each( obj, function( k, v ) {\n\t\t\t\tbuildParams( prefix + \"[\" + k + \"]\", v, traditional, add );\n\t\t\t});\n\t\t}\n\t\t\t\t\t\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) {\n\t\t\ts.error.call( s.context, xhr, status, e );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxError\", [xhr, s, e] );\n\t\t}\n\t},\n\n\thandleSuccess: function( s, xhr, status, data ) {\n\t\t// If a local callback was specified, fire it and pass it the data\n\t\tif ( s.success ) {\n\t\t\ts.success.call( s.context, data, status, xhr );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\t},\n\n\thandleComplete: function( s, xhr, status ) {\n\t\t// Process result\n\t\tif ( s.complete ) {\n\t\t\ts.complete.call( s.context, xhr, status );\n\t\t}\n\n\t\t// The request was completed\n\t\tif ( s.global ) {\n\t\t\tjQuery.triggerGlobal( s, \"ajaxComplete\", [xhr, s] );\n\t\t}\n\n\t\t// Handle the global AJAX counter\n\t\tif ( s.global && jQuery.active-- === 1 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\t},\n\t\t\n\ttriggerGlobal: function( s, type, args ) {\n\t\t(s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t},\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol === \"file:\" ||\n\t\t\t\txhr.status >= 200 && xhr.status < 300 ||\n\t\t\t\txhr.status === 304 || xhr.status === 1223;\n\t\t} catch(e) {}\n\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\tvar lastModified = xhr.getResponseHeader(\"Last-Modified\"),\n\t\t\tetag = xhr.getResponseHeader(\"Etag\");\n\n\t\tif ( lastModified ) {\n\t\t\tjQuery.lastModified[url] = lastModified;\n\t\t}\n\n\t\tif ( etag ) {\n\t\t\tjQuery.etag[url] = etag;\n\t\t}\n\n\t\treturn xhr.status === 304;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\") || \"\",\n\t\t\txml = type === \"xml\" || !type && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"parsererror\" );\n\t\t}\n\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s is checked to keep backwards compatibility\n\t\tif ( s && s.dataFilter ) {\n\t\t\tdata = s.dataFilter( data, type );\n\t\t}\n\n\t\t// The filter can actually parse the response\n\t\tif ( typeof data === \"string\" ) {\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type === \"json\" || !type && ct.indexOf(\"json\") >= 0 ) {\n\t\t\t\tdata = jQuery.parseJSON( data );\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\t} else if ( type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0 ) {\n\t\t\t\tjQuery.globalEval( data );\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n});\n\n/*\n * Create the request object; Microsoft failed to properly\n * implement the XMLHttpRequest in IE7 (can't request local files),\n * so we use the ActiveXObject when it is available\n * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n * we need a fallback.\n */\nif ( window.ActiveXObject ) {\n\tjQuery.ajaxSettings.xhr = function() {\n\t\tif ( window.location.protocol !== \"file:\" ) {\n\t\t\ttry {\n\t\t\t\treturn new window.XMLHttpRequest();\n\t\t\t} catch(xhrError) {}\n\t\t}\n\n\t\ttry {\n\t\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t} catch(activeError) {}\n\t};\n}\n\n// Does this browser support XHR requests?\njQuery.support.ajax = !!jQuery.ajaxSettings.xhr();\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)(.*)$/,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery.data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery.data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery.data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" ) {\n\t\t\t\t\tjQuery.data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur() || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar r = parseFloat( jQuery.css( this.elem, this.prop ) );\n\t\treturn r && r > -10000 ? r : 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box || { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\t\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\t\t\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\t\t\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && elem.document.documentElement[ \"client\" + name ] ||\n\t\t\t\telem.document.body[ \"client\" + name ];\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.5.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu Mar 31 15:28:23 2011 -0400\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery._Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\nvar // Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\t// Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\t// make sure args are available (#8421)\n\t\t\t\t\t\targs = args || [];\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = arguments,\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tcount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t// Strange bug in FF4:\n\t\t\t\t\t// Values changed onto the arguments object sometimes end up as undefined values\n\t\t\t\t\t// outside the $.when method. Cloning the object into a fresh array solves the issue\n\t\t\t\t\tdeferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn deferred.promise();\n\t}\n});\n\n\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true,\n\t\treliableMarginRight: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.style.marginRight = \"0\";\n\t\t\tjQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0;\n\t\t}\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = event.type;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = undefined;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent && parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0;\n\t\t\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( donor ) {\n\t\t\t// Donor event is always a native one; fix it and switch its type.\n\t\t\t// Let focusin/out handler cancel the donor focus/blur event.\n\t\t\tvar e = jQuery.event.fix( donor );\n\t\t\te.type = fix;\n\t\t\te.originalEvent = {};\n\t\t\tjQuery.event.trigger( e, null, e.target );\n\t\t\tif ( e.isDefaultPrevented() ) {\n\t\t\t\tdonor.preventDefault();\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\tvar ret;\n\t\t\t\tjQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tret = curCSS( elem, \"margin-right\", \"marginRight\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" || position === \"fixed\") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.6.1.js",
    "content": "/*!\n * jQuery JavaScript Library v1.6.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Thu May 12 15:04:36 2011 -0400\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.6.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery._Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn (new Function( \"return \" + data ))();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\n\t\tif ( indexOf ) {\n\t\t\treturn indexOf.call( array, elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\nvar // Promise methods\n\tpromiseMethods = \"done fail isResolved isRejected promise then always pipe\".split( \" \" ),\n\t// Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\t// make sure args are available (#8421)\n\t\t\t\t\t\targs = args || [];\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\talways: function() {\n\t\t\t\treturn deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\tpipe: function( fnDone, fnFail ) {\n\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\tfail: [ fnFail, \"reject\" ]\n\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ action ]( returned );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}).promise();\n\t\t\t},\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t});\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = arguments,\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tcount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t// Strange bug in FF4:\n\t\t\t\t\t// Values changed onto the arguments object sometimes end up as undefined values\n\t\t\t\t\t// outside the $.when method. Cloning the object into a fresh array solves the issue\n\t\t\t\t\tdeferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn deferred.promise();\n\t}\n});\n\n\n\njQuery.support = (function() {\n\n\tvar div = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tmarginDiv,\n\t\tsupport,\n\t\tfragment,\n\t\tbody,\n\t\tbodyStyle,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName( \"tbody\" ).length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName( \"link\" ).length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute( \"href\" ) === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t\tdiv.detachEvent( \"onclick\", click );\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t}\n\n\t// Check if a radio maintains it's value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\tdiv.innerHTML = \"\";\n\n\t// Figure out if the W3C box model works as expected\n\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t// We use our own, invisible, body\n\tbody = document.createElement( \"body\" );\n\tbodyStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\t// Set background to avoid IE crashes when removing (#9028)\n\t\tbackground: \"none\"\n\t};\n\tfor ( i in bodyStyle ) {\n\t\tbody.style[ i ] = bodyStyle[ i ];\n\t}\n\tbody.appendChild( div );\n\tdocumentElement.insertBefore( body, documentElement.firstChild );\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tsupport.boxModel = div.offsetWidth === 2;\n\n\tif ( \"zoom\" in div.style ) {\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\t// (IE < 8 does this)\n\t\tdiv.style.display = \"inline\";\n\t\tdiv.style.zoom = 1;\n\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );\n\n\t\t// Check if elements with layout shrink-wrap their children\n\t\t// (IE 6 does this)\n\t\tdiv.style.display = \"\";\n\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 2 );\n\t}\n\n\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\ttds = div.getElementsByTagName( \"td\" );\n\n\t// Check if table cells still have offsetWidth/Height when they are set\n\t// to display:none and there are still other visible table cells in a\n\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t// determining if an element has been hidden directly using\n\t// display:none (it is still safe to use offsets if a parent element is\n\t// hidden; don safety goggles and see bug #4512 for more information).\n\t// (only IE 8 fails this test)\n\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\ttds[ 0 ].style.display = \"\";\n\ttds[ 1 ].style.display = \"none\";\n\n\t// Check if empty table cells still have offsetWidth/Height\n\t// (IE < 8 fail this test)\n\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\tdiv.innerHTML = \"\";\n\n\t// Check if div with explicit width and no margin-right incorrectly\n\t// gets computed margin-right based on width of container. For more\n\t// info see bug #3333\n\t// Fails in WebKit before Feb 2011 nightlies\n\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\tif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\t\tmarginDiv = document.createElement( \"div\" );\n\t\tmarginDiv.style.width = \"0\";\n\t\tmarginDiv.style.marginRight = \"0\";\n\t\tdiv.appendChild( marginDiv );\n\t\tsupport.reliableMarginRight =\n\t\t\t( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t}\n\n\t// Remove the body element we added\n\tbody.innerHTML = \"\";\n\tdocumentElement.removeChild( body );\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t} ) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\treturn support;\n})();\n\n// Keep track of boxModel\njQuery.boxModel = jQuery.support.boxModel;\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([a-z])([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t    var attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"$1-$2\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery.data( elem, deferDataKey, undefined, true );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&\n\t\t( src === \"mark\" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery.data( elem, queueDataKey, undefined, true ) &&\n\t\t\t\t!jQuery.data( elem, markDataKey, undefined, true ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.resolve();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = (type || \"fx\") + \"mark\";\n\t\t\tjQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery.data( elem, key, count, true );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ) {\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\t\tvar q = jQuery.data( elem, type, undefined, true );\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data), true );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\tdefer;\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.done( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise();\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\trinvalidChar = /\\:/,\n\tformHook, boolHook;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\t\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.prop );\n\t},\n\t\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\") || \"\") );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret,\n\t\t\telem = this[0];\n\t\t\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\n\tattrFix: {\n\t\t// Always normalize to ensure hook usage\n\t\ttabindex: \"tabIndex\"\n\t},\n\t\n\tattr: function( elem, name, value, pass ) {\n\t\tvar nType = elem.nodeType;\n\t\t\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( !(\"getAttribute\" in elem) ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tvar ret, hooks,\n\t\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// Normalize the name if needed\n\t\tname = notxml && jQuery.attrFix[ name ] || name;\n\n\t\thooks = jQuery.attrHooks[ name ];\n\n\t\tif ( !hooks ) {\n\t\t\t// Use boolHook for boolean attributes\n\t\t\tif ( rboolean.test( name ) &&\n\t\t\t\t(typeof value === \"boolean\" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {\n\n\t\t\t\thooks = boolHook;\n\n\t\t\t// Use formHook for forms and if the name contains certain characters\n\t\t\t} else if ( formHook && (jQuery.nodeName( elem, \"form\" ) || rinvalidChar.test( name )) ) {\n\t\t\t\thooks = formHook;\n\t\t\t}\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn undefined;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml ) {\n\t\t\treturn hooks.get( elem, name );\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, name ) {\n\t\tvar propName;\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tname = jQuery.attrFix[ name ] || name;\n\t\t\n\t\t\tif ( jQuery.support.getSetAttribute ) {\n\t\t\t\t// Use removeAttribute in browsers that support it\n\t\t\t\telem.removeAttribute( name );\n\t\t\t} else {\n\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\telem.removeAttributeNode( elem.getAttributeNode( name ) );\n\t\t\t}\n\n\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\tif ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {\n\t\t\t\telem[ propName ] = false;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabIndex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\t\n\tprop: function( elem, name, value ) {\n\t\tvar nType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar ret, hooks,\n\t\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.propFix[ name ] || name;\n\t\t\n\t\thooks = jQuery.propHooks[ name ];\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn (elem[ name ] = value);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\t\n\tpropHooks: {}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\treturn elem[ jQuery.propFix[ name ] || name ] ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = value;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// Use the value property for back compat\n// Use the formHook for button elements in IE6/7 (#1954)\njQuery.attrHooks.value = {\n\tget: function( elem, name ) {\n\t\tif ( formHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\treturn formHook.get( elem, name );\n\t\t}\n\t\treturn elem.value;\n\t},\n\tset: function( elem, value, name ) {\n\t\tif ( formHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\treturn formHook.set( elem, value, name );\n\t\t}\n\t\t// Does not return so that setAttribute is also used\n\t\telem.value = value;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !jQuery.support.getSetAttribute ) {\n\n\t// propFix is more comprehensive and contains all fixes\n\tjQuery.attrFix = jQuery.propFix;\n\t\n\t// Use this for any attribute on a form in IE6/7\n\tformHook = jQuery.attrHooks.name = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\t// Return undefined if nodeValue is empty string\n\t\t\treturn ret && ret.nodeValue !== \"\" ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Check form objects in IE (multiple bugs related)\n\t\t\t// Only use nodeValue if the attribute node exists on the form\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret ) {\n\t\t\t\tret.nodeValue = value;\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn (elem.style.cssText = \"\" + value);\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar hasOwn = Object.prototype.hasOwnProperty,\n\trnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspaces = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\t\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\texclusive;\n\n\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\n\t\t// triggerHandler() and global events don't bubble or run the default action\n\t\tif ( onlyHandlers || !elem ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t// points to jQuery.expando\n\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tevent.target = elem;\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\tvar cur = elem,\n\t\t\t// IE doesn't like method names with a colon (#3533, #8272)\n\t\t\tontype = type.indexOf(\":\") < 0 ? \"on\" + type : \"\";\n\n\t\t// Fire event on the current element, then bubble up the DOM tree\n\t\tdo {\n\t\t\tvar handle = jQuery._data( cur, \"handle\" );\n\n\t\t\tevent.currentTarget = cur;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Trigger an inline bound script\n\t\t\tif ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {\n\t\t\t\tevent.result = false;\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\t// Bubble up to document, then to window\n\t\t\tcur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;\n\t\t} while ( cur && !event.isPropagationStopped() );\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction)() check here because IE6/7 fails that test.\n\t\t\t\t// IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.\n\t\t\t\ttry {\n\t\t\t\t\tif ( ontype && elem[ type ] ) {\n\t\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t}\n\t\t\t\t} catch ( ieError ) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = undefined;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn event.result;\n\t},\n\n\thandle: function( event ) {\n\t\tevent = jQuery.event.fix( event || window.event );\n\t\t// Snapshot the handlers list since a called handler may add/remove events.\n\t\tvar handlers = ((jQuery._data( this, \"events\" ) || {})[ event.type ] || []).slice(0),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\targs = Array.prototype.slice.call( arguments, 0 );\n\n\t\t// Use the fix-ed Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.currentTarget = this;\n\n\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t// Triggered event must 1) be non-exclusive and have no namespace, or\n\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event.\n\t\t\tif ( run_all || event.namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\tevent.data = handleObj.data;\n\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar eventDocument = event.target.ownerDocument || document,\n\t\t\t\tdoc = eventDocument.documentElement,\n\t\t\t\tbody = eventDocument.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// set the correct event type\n\tevent.type = event.data;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent && parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( !jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = jQuery.nodeName( elem, \"input\" ) ? elem.type : \"\";\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = jQuery.nodeName( elem, \"input\" ) ? elem.type : \"\";\n\n\t\t\t\tif ( (e.keyCode === 13 && !jQuery.nodeName( elem, \"textarea\" ) ) ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0;\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( donor ) {\n\t\t\t// Donor event is always a native one; fix it and switch its type.\n\t\t\t// Let focusin/out handler cancel the donor focus/blur event.\n\t\t\tvar e = jQuery.event.fix( donor );\n\t\t\te.type = fix;\n\t\t\te.originalEvent = {};\n\t\t\tjQuery.event.trigger( e, null, e.target );\n\t\t\tif ( e.isDefaultPrevented() ) {\n\t\t\t\tdonor.preventDefault();\n\t\t\t}\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\tvar handler;\n\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( arguments.length === 2 || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tif ( name === \"one\" ) {\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\t\treturn fn.apply( this, arguments );\n\t\t\t};\n\t\t\thandler.guid = fn.guid || jQuery.guid++;\n\t\t} else {\n\t\t\thandler = fn;\n\t\t}\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( name === \"die\" && !types &&\n\t\t\t\t\torigSelector && origSelector.charAt(0) === \".\" ) {\n\n\t\t\tcontext.unbind( origSelector );\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data === false || jQuery.isFunction( data ) ) {\n\t\t\tfn = data || returnFalse;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( liveMap[ type ] ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\n\t\t\t\t\t// Make sure not to accidentally match a child element with the same selector\n\t\t\t\t\tif ( related && jQuery.contains( elem, related ) ) {\n\t\t\t\t\t\trelated = elem;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspaces, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && ( typeof selector === \"string\" ?\n\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\t\t\n\t\t// Array\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[ selector ] ) {\n\t\t\t\t\t\tmatches[ selector ] = POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[ selector ];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\tfixDefaultChecked( elem );\n\t} else if ( elem.getElementsByTagName ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType;\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [], j;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( ret[i].getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\trrelNum = /^[+\\-]=/,\n\trrelNumFilter = /[^+\\-\\.\\de]+/g,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true,\n\t\t\"widows\": true,\n\t\t\"orphans\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( type === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && rrelNum.test( value ) ) {\n\t\t\t\tvalue = +value.replace( rrelNumFilter, \"\" ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN( value ) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\tvar ret;\n\t\t\t\tjQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tret = curCSS( elem, \"margin-right\", \"marginRight\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = s.contentType === \"application/x-www-form-urlencoded\" &&\n\t\t( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow,\n\trequestAnimationFrame = window.webkitRequestAnimationFrame ||\n\t    window.mozRequestAnimationFrame ||\n\t    window.oRequestAnimationFrame;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p,\n\t\t\t\tdisplay, e,\n\t\t\t\tparts, start, end, unit;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\tfor ( p in prop ) {\n\n\t\t\t\t// property name normalization\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tval = prop[ name ];\n\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdisplay = defaultDisplay( this.nodeName );\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]();\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\tvar timers = jQuery.timers,\n\t\t\t\ti = timers.length;\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery.dequeue( this );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx,\n\t\t\traf;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\t// Use requestAnimationFrame instead of setInterval if available\n\t\t\tif ( requestAnimationFrame ) {\n\t\t\t\ttimerId = 1;\n\t\t\t\traf = function() {\n\t\t\t\t\t// When timerId gets set to null at any point, this stops\n\t\t\t\t\tif ( timerId ) {\n\t\t\t\t\t\trequestAnimationFrame( raf );\n\t\t\t\t\t\tfx.tick();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\trequestAnimationFrame( raf );\n\t\t\t} else {\n\t\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options,\n\t\t\ti, n;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( i in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery(elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( var p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\toptions.complete.call( elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tfor ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( \"body\" ),\n\t\t\tdisplay = elem.css( \"display\" );\n\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tdocument.body.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html\n\t\t\t// document to it, Webkit & Firefox won't allow reusing the iframe document\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( \"<!doctype><html><body></body></html>\" );\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\tdocument.body.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" || position === \"fixed\") && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\tvar elem, win;\n\n\t\tif ( val === undefined ) {\n\t\t\telem = this[ 0 ];\n\n\t\t\tif ( !elem ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\n\t\t// Set the scroll offset\n\t\treturn this.each(function() {\n\t\t\twin = getWindow( this );\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!i ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t i ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\tthis[ method ] = val;\n\t\t\t}\n\t\t});\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery-1.7.2.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Mar 21 12:46:34 2012 -0700\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document,\n\tnavigator = window.navigator,\n\tlocation = window.location;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\tquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Matches dashed string for camelizing\n\trdashAlpha = /-([a-z]|[0-9])/ig,\n\trmsPrefix = /^-ms-/,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = quickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.7.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.add( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// Either a released hold or an DOMready/load event and not yet ready\n\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.fireWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).off( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyList ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyList = jQuery.Callbacks( \"once memory\" );\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar xml, tmp;\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( object );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type( array );\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array, i ) {\n\t\tvar len;\n\n\t\tif ( array ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( array, elem, i );\n\t\t\t}\n\n\t\t\tlen = array.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in array && array[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key, ret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tif ( typeof context === \"string\" ) {\n\t\t\tvar tmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\tvar args = slice.call( arguments, 2 ),\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySub( selector, context ) {\n\t\t\treturn new jQuerySub.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySub, this );\n\t\tjQuerySub.superclass = this;\n\t\tjQuerySub.fn = jQuerySub.prototype = this();\n\t\tjQuerySub.fn.constructor = jQuerySub;\n\t\tjQuerySub.sub = this.sub;\n\t\tjQuerySub.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\t\tcontext = jQuerySub( context );\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t\t};\n\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\t\tvar rootjQuerySub = jQuerySub(document);\n\t\treturn jQuerySub;\n\t},\n\n\tbrowser: {}\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nreturn jQuery;\n\n})();\n\n\n// String to Object flags format cache\nvar flagsCache = {};\n\n// Convert String-formatted flags into Object-formatted ones and store in cache\nfunction createFlags( flags ) {\n\tvar object = flagsCache[ flags ] = {},\n\t\ti, length;\n\tflags = flags.split( /\\s+/ );\n\tfor ( i = 0, length = flags.length; i < length; i++ ) {\n\t\tobject[ flags[i] ] = true;\n\t}\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\tflags:\tan optional list of space-separated flags that will change how\n *\t\t\tthe callback list behaves\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible flags:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( flags ) {\n\n\t// Convert flags from String-formatted to Object-formatted\n\t// (we check in cache first)\n\tflags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};\n\n\tvar // Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = [],\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Add one or several callbacks to the list\n\t\tadd = function( args ) {\n\t\t\tvar i,\n\t\t\t\tlength,\n\t\t\t\telem,\n\t\t\t\ttype,\n\t\t\t\tactual;\n\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\telem = args[ i ];\n\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t// Inspect recursively\n\t\t\t\t\tadd( elem );\n\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t// Add if not in unique mode and callback is not in\n\t\t\t\t\tif ( !flags.unique || !self.has( elem ) ) {\n\t\t\t\t\t\tlist.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Fire callbacks\n\t\tfire = function( context, args ) {\n\t\t\targs = args || [];\n\t\t\tmemory = !flags.memory || [ context, args ];\n\t\t\tfired = true;\n\t\t\tfiring = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {\n\t\t\t\t\tmemory = true; // Mark as halted\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\tif ( stack && stack.length ) {\n\t\t\t\t\t\tmemory = stack.shift();\n\t\t\t\t\t\tself.fireWith( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t} else {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar length = list.length;\n\t\t\t\t\tadd( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away, unless previous\n\t\t\t\t\t// firing was halted (stopOnFalse)\n\t\t\t\t\t} else if ( memory && memory !== true ) {\n\t\t\t\t\t\tfiringStart = length;\n\t\t\t\t\t\tfire( memory[ 0 ], memory[ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\targIndex = 0,\n\t\t\t\t\t\targLength = args.length;\n\t\t\t\t\tfor ( ; argIndex < argLength ; argIndex++ ) {\n\t\t\t\t\t\tfor ( var i = 0; i < list.length; i++ ) {\n\t\t\t\t\t\t\tif ( args[ argIndex ] === list[ i ] ) {\n\t\t\t\t\t\t\t\t// Handle firingIndex and firingLength\n\t\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\t\tif ( i <= firingLength ) {\n\t\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t\t\tif ( i <= firingIndex ) {\n\t\t\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the element\n\t\t\t\t\t\t\t\tlist.splice( i--, 1 );\n\t\t\t\t\t\t\t\t// If we have some unicity property then\n\t\t\t\t\t\t\t\t// we only need to do this once\n\t\t\t\t\t\t\t\tif ( flags.unique ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tvar i = 0,\n\t\t\t\t\t\tlength = list.length;\n\t\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\t\tif ( fn === list[ i ] ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory || memory === true ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tif ( !flags.once ) {\n\t\t\t\t\t\t\tstack.push( [ context, args ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( !( flags.once && memory ) ) {\n\t\t\t\t\t\tfire( context, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\n\n\nvar // Static reference to slice\n\tsliceDeferred = [].slice;\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar doneList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tfailList = jQuery.Callbacks( \"once memory\" ),\n\t\t\tprogressList = jQuery.Callbacks( \"memory\" ),\n\t\t\tstate = \"pending\",\n\t\t\tlists = {\n\t\t\t\tresolve: doneList,\n\t\t\t\treject: failList,\n\t\t\t\tnotify: progressList\n\t\t\t},\n\t\t\tpromise = {\n\t\t\t\tdone: doneList.add,\n\t\t\t\tfail: failList.add,\n\t\t\t\tprogress: progressList.add,\n\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\n\t\t\t\t// Deprecated\n\t\t\t\tisResolved: doneList.fired,\n\t\t\t\tisRejected: failList.fired,\n\n\t\t\t\tthen: function( doneCallbacks, failCallbacks, progressCallbacks ) {\n\t\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tpipe: function( fnDone, fnFail, fnProgress ) {\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( {\n\t\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],\n\t\t\t\t\t\t\tfail: [ fnFail, \"reject\" ],\n\t\t\t\t\t\t\tprogress: [ fnProgress, \"notify\" ]\n\t\t\t\t\t\t}, function( handler, data ) {\n\t\t\t\t\t\t\tvar fn = data[ 0 ],\n\t\t\t\t\t\t\t\taction = data[ 1 ],\n\t\t\t\t\t\t\t\treturned;\n\t\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {\n\t\t\t\t\t\t\t\tdeferred[ handler ](function() {\n\t\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\tif ( obj == null ) {\n\t\t\t\t\t\tobj = promise;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( var key in promise ) {\n\t\t\t\t\t\t\tobj[ key ] = promise[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = promise.promise({}),\n\t\t\tkey;\n\n\t\tfor ( key in lists ) {\n\t\t\tdeferred[ key ] = lists[ key ].fire;\n\t\t\tdeferred[ key + \"With\" ] = lists[ key ].fireWith;\n\t\t}\n\n\t\t// Handle state\n\t\tdeferred.done( function() {\n\t\t\tstate = \"resolved\";\n\t\t}, failList.disable, progressList.lock ).fail( function() {\n\t\t\tstate = \"rejected\";\n\t\t}, doneList.disable, progressList.lock );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( firstParam ) {\n\t\tvar args = sliceDeferred.call( arguments, 0 ),\n\t\t\ti = 0,\n\t\t\tlength = args.length,\n\t\t\tpValues = new Array( length ),\n\t\t\tcount = length,\n\t\t\tpCount = length,\n\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?\n\t\t\t\tfirstParam :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\t\tfunction resolveFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfunction progressFunc( i ) {\n\t\t\treturn function( value ) {\n\t\t\t\tpValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;\n\t\t\t\tdeferred.notifyWith( promise, pValues );\n\t\t\t};\n\t\t}\n\t\tif ( length > 1 ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {\n\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( deferred, args );\n\t\t\t}\n\t\t} else if ( deferred !== firstParam ) {\n\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );\n\t\t}\n\t\treturn promise;\n\t}\n});\n\n\n\n\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\ttds,\n\t\tevents,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tdiv = document.createElement( \"div\" ),\n\t\tdocumentElement = document.documentElement;\n\n\t// Preliminary tests\n\tdiv.setAttribute(\"className\", \"t\");\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tall = div.getElementsByTagName( \"*\" );\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement( \"select\" );\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName( \"input\" )[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tpixelMargin: true\n\t};\n\n\t// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead\n\tjQuery.boxModel = support.boxModel = (document.compatMode === \"CSS1Compat\");\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent( \"onclick\" );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute(\"type\", \"radio\");\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute(\"checked\", \"checked\");\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: 1,\n\t\t\tchange: 1,\n\t\t\tfocusin: 1\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\tfragment.removeChild( div );\n\n\t// Null elements to avoid leaks in IE\n\tfragment = select = opt = div = input = null;\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, outer, inner, table, td, offsetSupport,\n\t\t\tmarginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,\n\t\t\tpaddingMarginBorderVisibility, paddingMarginBorder,\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tconMarginTop = 1;\n\t\tpaddingMarginBorder = \"padding:0;margin:0;border:\";\n\t\tpositionTopLeftWidthHeight = \"position:absolute;top:0;left:0;width:1px;height:1px;\";\n\t\tpaddingMarginBorderVisibility = paddingMarginBorder + \"0;visibility:hidden;\";\n\t\tstyle = \"style='\" + positionTopLeftWidthHeight + paddingMarginBorder + \"5px solid #000;\";\n\t\thtml = \"<div \" + style + \"display:block;'><div style='\" + paddingMarginBorder + \"0;display:block;overflow:hidden;'></div></div>\" +\n\t\t\t\"<table \" + style + \"' cellpadding='0' cellspacing='0'>\" +\n\t\t\t\"<tr><td></td></tr></table>\";\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = paddingMarginBorderVisibility + \"width:0;height:0;position:static;top:0;margin-top:\" + conMarginTop + \"px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td style='\" + paddingMarginBorder + \"0;display:none'></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName( \"td\" );\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t// gets computed margin-right based on width of container. For more\n\t\t// info see bug #3333\n\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tmarginDiv = document.createElement( \"div\" );\n\t\t\tmarginDiv.style.width = \"0\";\n\t\t\tmarginDiv.style.marginRight = \"0\";\n\t\t\tdiv.style.width = \"2px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.width = div.style.padding = \"1px\";\n\t\t\tdiv.style.border = 0;\n\t\t\tdiv.style.overflow = \"hidden\";\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div style='width:5px;'></div>\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\t\t}\n\n\t\tdiv.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;\n\t\tdiv.innerHTML = html;\n\n\t\touter = div.firstChild;\n\t\tinner = outer.firstChild;\n\t\ttd = outer.nextSibling.firstChild.firstChild;\n\n\t\toffsetSupport = {\n\t\t\tdoesNotAddBorder: ( inner.offsetTop !== 5 ),\n\t\t\tdoesAddBorderForTableAndCells: ( td.offsetTop === 5 )\n\t\t};\n\n\t\tinner.style.position = \"fixed\";\n\t\tinner.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\toffsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );\n\t\tinner.style.position = inner.style.top = \"\";\n\n\t\touter.style.overflow = \"hidden\";\n\t\touter.style.position = \"relative\";\n\n\t\toffsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );\n\t\toffsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );\n\n\t\tif ( window.getComputedStyle ) {\n\t\t\tdiv.style.marginTop = \"1%\";\n\t\t\tsupport.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== \"1%\";\n\t\t}\n\n\t\tif ( typeof container.style.zoom !== \"undefined\" ) {\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t\tmarginDiv = div = container = null;\n\n\t\tjQuery.extend( support, offsetSupport );\n\t});\n\n\treturn support;\n})();\n\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar privateCache, thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,\n\t\t\tisEvents = name === \"events\";\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tprivateCache = thisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Users should not attempt to inspect the internal events object using jQuery.data,\n\t\t// it is undocumented and subject to change. But does anyone listen? No.\n\t\tif ( isEvents && !thisCache[ name ] ) {\n\t\t\treturn privateCache.events;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\t// Reference to internal data cache key\n\t\t\tinternalKey = jQuery.expando,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ internalKey ] : internalKey;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split( \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\t// Ensure that `cache` is not a window object #10080\n\t\tif ( jQuery.support.deleteExpando || !cache.setInterval ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the cache and need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\tif ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ internalKey ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( internalKey );\n\t\t\t} else {\n\t\t\t\telem[ internalKey ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\tjQuery.isNumeric( data ) ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\nfunction handleQueueMarkDefer( elem, type, src ) {\n\tvar deferDataKey = type + \"defer\",\n\t\tqueueDataKey = type + \"queue\",\n\t\tmarkDataKey = type + \"mark\",\n\t\tdefer = jQuery._data( elem, deferDataKey );\n\tif ( defer &&\n\t\t( src === \"queue\" || !jQuery._data(elem, queueDataKey) ) &&\n\t\t( src === \"mark\" || !jQuery._data(elem, markDataKey) ) ) {\n\t\t// Give room for hard-coded callbacks to fire first\n\t\t// and eventually mark/queue something else on the element\n\t\tsetTimeout( function() {\n\t\t\tif ( !jQuery._data( elem, queueDataKey ) &&\n\t\t\t\t!jQuery._data( elem, markDataKey ) ) {\n\t\t\t\tjQuery.removeData( elem, deferDataKey, true );\n\t\t\t\tdefer.fire();\n\t\t\t}\n\t\t}, 0 );\n\t}\n}\n\njQuery.extend({\n\n\t_mark: function( elem, type ) {\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"mark\";\n\t\t\tjQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );\n\t\t}\n\t},\n\n\t_unmark: function( force, elem, type ) {\n\t\tif ( force !== true ) {\n\t\t\ttype = elem;\n\t\t\telem = force;\n\t\t\tforce = false;\n\t\t}\n\t\tif ( elem ) {\n\t\t\ttype = type || \"fx\";\n\t\t\tvar key = type + \"mark\",\n\t\t\t\tcount = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );\n\t\t\tif ( count ) {\n\t\t\t\tjQuery._data( elem, key, count );\n\t\t\t} else {\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t\thandleQueueMarkDefer( elem, type, \"mark\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tqueue: function( elem, type, data ) {\n\t\tvar q;\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tq = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tq.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn q || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift(),\n\t\t\thooks = {};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\tjQuery._data( elem, type + \".run\", hooks );\n\t\t\tfn.call( elem, function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, hooks );\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue \" + type + \".run\", true );\n\t\t\thandleQueueMarkDefer( elem, type, \"queue\" );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, object ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobject = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\t\tvar defer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = elements.length,\n\t\t\tcount = 1,\n\t\t\tdeferDataKey = type + \"defer\",\n\t\t\tqueueDataKey = type + \"queue\",\n\t\t\tmarkDataKey = type + \"mark\",\n\t\t\ttmp;\n\t\tfunction resolve() {\n\t\t\tif ( !( --count ) ) {\n\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t}\n\t\t}\n\t\twhile( i-- ) {\n\t\t\tif (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||\n\t\t\t\t\t( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||\n\t\t\t\t\t\tjQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&\n\t\t\t\t\tjQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( \"once memory\" ), true ) )) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( object );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute,\n\tnodeHook, boolHook, fixSpecified;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( !~setClass.indexOf( \" \" + classNames[ c ] + \" \" ) ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, i, l, elem, className, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tclassNames = ( value || \"\" ).split( rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[ c ] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar self = jQuery(this), val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, l, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\t\t\tattrNames = value.toLowerCase().split( rspace );\n\t\t\tl = attrNames.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)\njQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.nodeValue !== \"\" : ret.specified ) ?\n\t\t\t\tret.nodeValue :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.nodeValue = value + \"\" );\n\t\t}\n\t};\n\n\t// Apply the nodeHook to tabindex\n\tjQuery.attrHooks.tabindex.set = nodeHook.set;\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = \"\" + value );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\n\n\n\n\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*)?(?:\\.(.+))?$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+)?\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,\n\tquickParse = function( selector ) {\n\t\tvar quick = rquickIs.exec( selector );\n\t\tif ( quick ) {\n\t\t\t//   0  1    2   3\n\t\t\t// [ _, tag, id, class ]\n\t\t\tquick[1] = ( quick[1] || \"\" ).toLowerCase();\n\t\t\tquick[3] = quick[3] && new RegExp( \"(?:^|\\\\s)\" + quick[3] + \"(?:\\\\s|$)\" );\n\t\t}\n\t\treturn quick;\n\t},\n\tquickIs = function( elem, m ) {\n\t\tvar attrs = elem.attributes || {};\n\t\treturn (\n\t\t\t(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&\n\t\t\t(!m[2] || (attrs.id || {}).value === m[2]) &&\n\t\t\t(!m[3] || m[3].test( (attrs[ \"class\" ] || {}).value ))\n\t\t);\n\t},\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, quick, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tquick: selector && quickParse( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar elemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tt, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, handle, eventType, handleObj;\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\thandle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, [ \"events\", \"handle\" ], true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tnamespaces = [],\n\t\t\tcache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\told = null;\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old && old === elem.ownerDocument ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar handlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = [].slice.call( arguments, 0 ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [],\n\t\t\ti, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\t// Pregenerate a single jQuery object for reuse with .is()\n\t\t\tjqcur = jQuery(this);\n\t\t\tjqcur.context = this.ownerDocument || this;\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process events on disabled elements (#6911, #8165)\n\t\t\t\tif ( cur.disabled !== true ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tjqcur[0] = cur;\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = (\n\t\t\t\t\t\t\t\thandleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)\n\t\tif ( event.metaKey === undefined ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady\n\t\t},\n\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar target = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector,\n\t\t\t\tret;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !form._submit_attached ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tform._submit_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\t\t\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\telem._change_attached = true;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\tvar handleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( var type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length == 1? this.off( selector, \"**\" ) : this.off( types, selector, fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\texpando = \"sizcache\" + (Math.random() + '').replace('.', ''),\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trReturn = /\\r\\n/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\n\t\t\tparts.push( m[1] );\n\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context, seed );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\n\t\t\t\tset = posProcess( selector, set, seed );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set, i, len, match, type, left;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( i = 0, len = Expr.order.length; i < len; i++ ) {\n\t\ttype = Expr.order[i];\n\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tleft = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\ttype, found, item, filter, left,\n\t\ti, pass,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tfilter = Expr.filter[ type ];\n\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tpass = not ^ found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Utility function for retreiving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\nvar getText = Sizzle.getText = function( elem ) {\n    var i, node,\n\t\tnodeType = elem.nodeType,\n\t\tret = \"\";\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent || innerText for elements\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else if ( typeof elem.innerText === 'string' ) {\n\t\t\t\t// Replace IE's carriage returns\n\t\t\t\treturn elem.innerText.replace( rReturn, '' );\n\t\t\t} else {\n\t\t\t\t// Traverse it's children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( i = 0; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tif ( node.nodeType !== 8 ) {\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t}\n\t}\n\treturn ret;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr = elem.getAttribute( \"type\" ), type = elem.type;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"text\" === type && ( attr === type || attr === null );\n\t\t},\n\n\t\tradio: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"file\" === elem.type;\n\t\t},\n\n\t\tpassword: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" && \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && \"button\" === elem.type || name === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar first, last,\n\t\t\t\tdoneName, parent, cache,\n\t\t\t\tcount, diff,\n\t\t\t\ttype = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tfirst = match[2];\n\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdoneName = match[0];\n\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparent[ expando ] = doneName;\n\t\t\t\t\t}\n\n\t\t\t\t\tdiff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\n\t\t},\n\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Sizzle.attr ?\n\t\t\t\t\tSizzle.attr( elem, name ) :\n\t\t\t\t\tExpr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\t!type && Sizzle.attr ?\n\t\t\t\tresult != null :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n// Expose origPOS\n// \"global\" as in regardless of relation to brackets/parens\nExpr.match.globalPOS = origPOS;\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\n\n\tif ( matches ) {\n\t\t// Check to see if it's possible to do matchesSelector\n\t\t// on a disconnected node (IE 9 fails this)\n\t\tvar disconnectedMatch = !matches.call( document.createElement( \"div\" ), \"div\" ),\n\t\t\tpseudoWorks = false;\n\n\t\ttry {\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\n\t\t} catch( pseudoError ) {\n\t\t\tpseudoWorks = true;\n\t\t}\n\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\tvar ret = matches.call( node, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || !disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9, so check for that\n\t\t\t\t\t\t\t\tnode.document && node.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem[ expando ] === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem[ expando ] = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context, seed ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet, seed );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\nSizzle.selectors.attrMap = {};\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.globalPOS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar self = this,\n\t\t\ti, l;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength, n, r;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\tPOS.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\t// Array (deprecated as of jQuery 1.7)\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar level = 1;\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tfor ( i = 0; i < selectors.length; i++ ) {\n\n\t\t\t\t\tif ( jQuery( cur ).is( selectors[ i ] ) ) {\n\t\t\t\t\t\tret.push({ selector: selectors[ i ], elem: cur, level: level });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\t// String\n\t\tvar pos = POS.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\n\n\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery.clean(arguments) );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tnull;\n\t\t\t}\n\n\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.length ?\n\t\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\t\tthis;\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || ( l > 1 && i < lastIndex ) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\tdataType: \"script\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"/*$0*/\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n\n\t// Clear flags for bubbling special change/submit events, they must\n\t// be reattached when the newly cloned events are first activated\n\tdest.removeAttribute( \"_submit_attached\" );\n\tdest.removeAttribute( \"_change_attached\" );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults, doc,\n\tfirst = args[ 0 ];\n\n\t// nodes may contain either an explicit document object,\n\t// a jQuery collection or context object.\n\t// If nodes[0] contains a valid object to assign to doc\n\tif ( nodes && nodes[0] ) {\n\t\tdoc = nodes[0].ownerDocument || nodes[0];\n\t}\n\n\t// Ensure that an attr object doesn't incorrectly stand in as a document object\n\t// Chrome and Firefox seem to allow this to occur and will throw exception\n\t// Fixes #8950\n\tif ( !doc.createDocumentFragment ) {\n\t\tdoc = document;\n\t}\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && doc === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\tcacheable = true;\n\n\t\tcacheresults = jQuery.fragments[ first ];\n\t\tif ( cacheresults && cacheresults !== 1 ) {\n\t\t\tfragment = cacheresults;\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ first ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( elem.type === \"checkbox\" || elem.type === \"radio\" ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n// Finds all inputs and passes them to fixDefaultChecked\nfunction findInputs( elem ) {\n\tvar nodeName = ( elem.nodeName || \"\" ).toLowerCase();\n\tif ( nodeName === \"input\" ) {\n\t\tfixDefaultChecked( elem );\n\t// Skip scripts, get other children\n\t} else if ( nodeName !== \"script\" && typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t}\n}\n\n// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js\nfunction shimCloneNode( elem ) {\n\tvar div = document.createElement( \"div\" );\n\tsafeFragment.appendChild( div );\n\n\tdiv.innerHTML = elem.outerHTML;\n\treturn div.firstChild;\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t\tclone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ?\n\t\t\t\telem.cloneNode( true ) :\n\t\t\t\tshimCloneNode( elem );\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar checkScriptType, script, j,\n\t\t\t\tret = [];\n\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\t\tvar tag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase(),\n\t\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\t\tdiv = context.createElement(\"div\"),\n\t\t\t\t\t\tsafeChildNodes = safeFragment.childNodes,\n\t\t\t\t\t\tremove;\n\n\t\t\t\t\t// Append wrapper element to unknown element safe doc fragment\n\t\t\t\t\tif ( context === document ) {\n\t\t\t\t\t\t// Use the fragment we've already created for this document\n\t\t\t\t\t\tsafeFragment.appendChild( div );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use a fragment created with the owner document\n\t\t\t\t\t\tcreateSafeFragment( context ).appendChild( div );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Clear elements from DocumentFragment (safeFragment or otherwise)\n\t\t\t\t\t// to avoid hoarding elements. Fixes #11356\n\t\t\t\t\tif ( div ) {\n\t\t\t\t\t\tdiv.parentNode.removeChild( div );\n\n\t\t\t\t\t\t// Guard against -1 index exceptions in FF3.6\n\t\t\t\t\t\tif ( safeChildNodes.length > 0 ) {\n\t\t\t\t\t\t\tremove = safeChildNodes[ safeChildNodes.length - 1 ];\n\n\t\t\t\t\t\t\tif ( remove && remove.parentNode ) {\n\t\t\t\t\t\t\t\tremove.parentNode.removeChild( remove );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Resets defaultChecked for any radios and checkboxes\n\t\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\t\tvar len;\n\t\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\t\tif ( elem[0] && typeof (len = elem.length) === \"number\" ) {\n\t\t\t\t\tfor ( j = 0; j < len; j++ ) {\n\t\t\t\t\t\tfindInputs( elem[j] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfindInputs( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tcheckScriptType = function( elem ) {\n\t\t\t\treturn !elem.type || rscriptType.test( elem.type );\n\t\t\t};\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tscript = ret[i];\n\t\t\t\tif ( scripts && jQuery.nodeName( script, \"script\" ) && (!script.type || rscriptType.test( script.type )) ) {\n\t\t\t\t\tscripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( script.nodeType === 1 ) {\n\t\t\t\t\t\tvar jsTags = jQuery.grep( script.getElementsByTagName( \"script\" ), checkScriptType );\n\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( script );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id,\n\t\t\tcache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\t// fixed for IE9, see #8346\n\trupper = /([A-Z]|^ms)/g,\n\trnum = /^[\\-+]?(?:\\d*\\.)?\\d+$/i,\n\trnumnonpx = /^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,\n\trrelNum = /^([\\-+])=([\\-+.\\de]+)/,\n\trmargin = /^margin/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\n\t// order is important!\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle;\n\njQuery.fn.css = function( name, value ) {\n\treturn jQuery.access( this, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t}, name, value, arguments.length > 1 );\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\tvar ret, hooks;\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.camelCase( name );\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tname = jQuery.cssProps[ name ] || name;\n\n\t\t// cssFloat needs a special treatment\n\t\tif ( name === \"cssFloat\" ) {\n\t\t\tname = \"float\";\n\t\t}\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {},\n\t\t\tret, name;\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// DEPRECATED in 1.3, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, name ) {\n\t\tvar ret, defaultView, computedStyle, width,\n\t\t\tstyle = elem.style;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( (defaultView = elem.ownerDocument.defaultView) &&\n\t\t\t\t(computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// WebKit uses \"computed value (percentage if specified)\" instead of \"used value\" for margins\n\t\t// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {\n\t\t\twidth = style.width;\n\t\t\tstyle.width = ret;\n\t\t\tret = computedStyle.width;\n\t\t\tstyle.width = width;\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left, rsLeft, uncomputed,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && (uncomputed = style[ name ]) ) {\n\t\t\tret = uncomputed;\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( rnumnonpx.test( ret ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\ti = name === \"width\" ? 1 : 0,\n\t\tlen = 4;\n\n\tif ( val > 0 ) {\n\t\tif ( extra !== \"border\" ) {\n\t\t\tfor ( ; i < len; i += 2 ) {\n\t\t\t\tif ( !extra ) {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;\n\t\t\t\t} else {\n\t\t\t\t\tval -= parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val + \"px\";\n\t}\n\n\t// Fall back to computed then uncomputed css if necessary\n\tval = curCSS( elem, name );\n\tif ( val < 0 || val == null ) {\n\t\tval = elem.style[ name ];\n\t}\n\n\t// Computed unit is not pixels. Stop here and return.\n\tif ( rnumnonpx.test(val) ) {\n\t\treturn val;\n\t}\n\n\t// Normalize \"\", auto, and prepare for extra\n\tval = parseFloat( val ) || 0;\n\n\t// Add padding, border, margin\n\tif ( extra ) {\n\t\tfor ( ; i < len; i += 2 ) {\n\t\t\tval += parseFloat( jQuery.css( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val + \"px\";\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t} else {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\treturn rnum.test( value ) ?\n\t\t\t\tvalue + \"px\" :\n\t\t\t\tvalue;\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( parseFloat( RegExp.$1 ) / 100 ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery(function() {\n\t// This hook cannot be added until DOM ready because the support test\n\t// for it is not run until after DOM ready\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"margin-right\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.style.marginRight;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n});\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts,\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tstatusText = nativeStatusText,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = \"\" + ( nativeStatusText || statusText );\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( var name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor ( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor ( key in s.converters ) {\n\t\t\t\tif ( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif ( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor ( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|\\?\\?/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar inspectData = ( typeof s.data === \"string\" ) && /^application\\/x\\-www\\-form\\-urlencoded/.test( s.contentType );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tinspectData && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\";\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( inspectData ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Clean-up function\n\t\tjqXHR.always(function() {\n\t\t\t// Set callback back to previous value\n\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t}\n\t\t});\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar // #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0,\n\txhrCallbacks;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\tiframe, iframeDoc,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t],\n\tfxNow;\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t\t// for such an element\n\t\t\t\t\tif ( (display === \"\" && jQuery.css(elem, \"display\") === \"none\") ||\n\t\t\t\t\t\t!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\t\telem.style.display = jQuery._data( elem, \"olddisplay\" ) || \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tvar elem, display,\n\t\t\t\ti = 0,\n\t\t\t\tj = this.length;\n\n\t\t\tfor ( ; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tif ( elem.style ) {\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t\t\t\tif ( display !== \"none\" && !jQuery._data( elem, \"olddisplay\" ) ) {\n\t\t\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tif ( this[i].style ) {\n\t\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed( speed, easing, callback );\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete, [ false ] );\n\t\t}\n\n\t\t// Do not change referenced properties as per-property easing will be lost\n\t\tprop = jQuery.extend( {}, prop );\n\n\t\tfunction doAnimation() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tif ( optall.queue === false ) {\n\t\t\t\tjQuery._mark( this );\n\t\t\t}\n\n\t\t\tvar opt = jQuery.extend( {}, optall ),\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tname, val, p, e, hooks, replace,\n\t\t\t\tparts, start, end, unit,\n\t\t\t\tmethod;\n\n\t\t\t// will store per property easing and be used to determine when an animation is complete\n\t\t\topt.animatedProperties = {};\n\n\t\t\t// first pass over propertys to expand / normalize\n\t\t\tfor ( p in prop ) {\n\t\t\t\tname = jQuery.camelCase( p );\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t}\n\n\t\t\t\tif ( ( hooks = jQuery.cssHooks[ name ] ) && \"expand\" in hooks ) {\n\t\t\t\t\treplace = hooks.expand( prop[ name ] );\n\t\t\t\t\tdelete prop[ name ];\n\n\t\t\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t\t\t// also - reusing 'p' from above because we have the correct \"name\"\n\t\t\t\t\tfor ( p in replace ) {\n\t\t\t\t\t\tif ( ! ( p in prop ) ) {\n\t\t\t\t\t\t\tprop[ p ] = replace[ p ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( name in prop ) {\n\t\t\t\tval = prop[ name ];\n\t\t\t\t// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)\n\t\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\t\topt.animatedProperties[ name ] = val[ 1 ];\n\t\t\t\t\tval = prop[ name ] = val[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\topt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';\n\t\t\t\t}\n\n\t\t\t\tif ( val === \"hide\" && hidden || val === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call( this );\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( name === \"height\" || name === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === \"inline\" ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\te = new jQuery.fx( this, opt, p );\n\t\t\t\tval = prop[ p ];\n\n\t\t\t\tif ( rfxtypes.test( val ) ) {\n\n\t\t\t\t\t// Tracks whether to show or hide based on private\n\t\t\t\t\t// data attached to the element\n\t\t\t\t\tmethod = jQuery._data( this, \"toggle\" + p ) || ( val === \"toggle\" ? hidden ? \"show\" : \"hide\" : 0 );\n\t\t\t\t\tif ( method ) {\n\t\t\t\t\t\tjQuery._data( this, \"toggle\" + p, method === \"show\" ? \"hide\" : \"show\" );\n\t\t\t\t\t\te[ method ]();\n\t\t\t\t\t} else {\n\t\t\t\t\t\te[ val ]();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tparts = rfxnum.exec( val );\n\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tend = parseFloat( parts[2] );\n\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ p ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( this, p, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ( (end || 1) / e.cur() ) * start;\n\t\t\t\t\t\t\tjQuery.style( this, p, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ( (parts[ 1 ] === \"-=\" ? -1 : 1) * end ) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t}\n\n\t\treturn optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\thadTimers = false,\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\t// clear marker counters if we know they won't be\n\t\t\tif ( !gotoEnd ) {\n\t\t\t\tjQuery._unmark( true, this );\n\t\t\t}\n\n\t\t\tfunction stopQueue( elem, data, index ) {\n\t\t\t\tvar hooks = data[ index ];\n\t\t\t\tjQuery.removeData( elem, index, true );\n\t\t\t\thooks.stop( gotoEnd );\n\t\t\t}\n\n\t\t\tif ( type == null ) {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && index.indexOf(\".run\") === index.length - 4 ) {\n\t\t\t\t\t\tstopQueue( this, data, index );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( data[ index = type + \".run\" ] && data[ index ].stop ){\n\t\t\t\tstopQueue( this, data, index );\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\tif ( gotoEnd ) {\n\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[ index ]( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimers[ index ].saveState();\n\t\t\t\t\t}\n\t\t\t\t\thadTimers = true;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( !( gotoEnd && hadTimers ) ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n\n});\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout( clearFxNow, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction clearFxNow() {\n\tfxNow = undefined;\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx( \"show\", 1 ),\n\tslideUp: genFx( \"hide\", 1 ),\n\tslideToggle: genFx( \"toggle\", 1 ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function( noUnmark ) {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t} else if ( noUnmark !== false ) {\n\t\t\t\tjQuery._unmark( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\toptions.orig = options.orig || {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = fxNow || createFxNow();\n\t\tthis.end = to;\n\t\tthis.now = this.start = from;\n\t\tthis.pos = this.state = 0;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step( gotoEnd );\n\t\t}\n\n\t\tt.queue = this.options.queue;\n\t\tt.elem = this.elem;\n\t\tt.saveState = function() {\n\t\t\tif ( jQuery._data( self.elem, \"fxshow\" + self.prop ) === undefined ) {\n\t\t\t\tif ( self.options.hide ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.start );\n\t\t\t\t} else if ( self.options.show ) {\n\t\t\t\t\tjQuery._data( self.elem, \"fxshow\" + self.prop, self.end );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval( fx.tick, fx.interval );\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\tvar dataShow = jQuery._data( this.elem, \"fxshow\" + this.prop );\n\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any flash of content\n\t\tif ( dataShow !== undefined ) {\n\t\t\t// This show is picking up where a previous hide or show left off\n\t\t\tthis.custom( this.cur(), dataShow );\n\t\t} else {\n\t\t\tthis.custom( this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur() );\n\t\t}\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[ this.prop ] = jQuery._data( this.elem, \"fxshow\" + this.prop ) || jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom( this.cur(), 0 );\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar p, n, complete,\n\t\t\tt = fxNow || createFxNow(),\n\t\t\tdone = true,\n\t\t\telem = this.elem,\n\t\t\toptions = this.options;\n\n\t\tif ( gotoEnd || t >= options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\toptions.animatedProperties[ this.prop ] = true;\n\n\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\tif ( options.animatedProperties[ p ] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function( index, value ) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[ index ];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( options.hide ) {\n\t\t\t\t\tjQuery( elem ).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( options.hide || options.show ) {\n\t\t\t\t\tfor ( p in options.animatedProperties ) {\n\t\t\t\t\t\tjQuery.style( elem, p, options.orig[ p ] );\n\t\t\t\t\t\tjQuery.removeData( elem, \"fxshow\" + p, true );\n\t\t\t\t\t\t// Toggle data is no longer needed\n\t\t\t\t\t\tjQuery.removeData( elem, \"toggle\" + p, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\t// in the event that the complete function throws an exception\n\t\t\t\t// we must ensure it won't be called twice. #5684\n\n\t\t\t\tcomplete = options.complete;\n\t\t\t\tif ( complete ) {\n\n\t\t\t\t\toptions.complete = false;\n\t\t\t\t\tcomplete.call( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t// classical easing cannot be used with an Infinity duration\n\t\t\tif ( options.duration == Infinity ) {\n\t\t\t\tthis.now = t;\n\t\t\t} else {\n\t\t\t\tn = t - this.startTime;\n\t\t\t\tthis.state = n / options.duration;\n\n\t\t\t\t// Perform the easing function, defaults to swing\n\t\t\t\tthis.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );\n\t\t\t\tthis.now = this.start + ( (this.end - this.start) * this.pos );\n\t\t\t}\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timer,\n\t\t\ttimers = jQuery.timers,\n\t\t\ti = 0;\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Ensure props that can't be negative don't go there on undershoot easing\njQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {\n\t// exclude marginTop, marginLeft, marginBottom and marginRight from this list\n\tif ( prop.indexOf( \"margin\" ) ) {\n\t\tjQuery.fx.step[ prop ] = function( fx ) {\n\t\t\tjQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );\n\t\t};\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\n// Try to restore the default display value of an element\nfunction defaultDisplay( nodeName ) {\n\n\tif ( !elemdisplay[ nodeName ] ) {\n\n\t\tvar body = document.body,\n\t\t\telem = jQuery( \"<\" + nodeName + \">\" ).appendTo( body ),\n\t\t\tdisplay = elem.css( \"display\" );\n\t\telem.remove();\n\n\t\t// If the simple way fails,\n\t\t// get element's real default display by attaching it to a temp iframe\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\t// No iframe to use yet, so create it\n\t\t\tif ( !iframe ) {\n\t\t\t\tiframe = document.createElement( \"iframe\" );\n\t\t\t\tiframe.frameBorder = iframe.width = iframe.height = 0;\n\t\t\t}\n\n\t\t\tbody.appendChild( iframe );\n\n\t\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\t\tiframeDoc.write( ( jQuery.support.boxModel ? \"<!doctype html>\" : \"\" ) + \"<html><body>\" );\n\t\t\t\tiframeDoc.close();\n\t\t\t}\n\n\t\t\telem = iframeDoc.createElement( nodeName );\n\n\t\t\tiframeDoc.body.appendChild( elem );\n\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tbody.removeChild( iframe );\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar getOffset,\n\trtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tgetOffset = function( elem, doc, docElem, box ) {\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow( doc ),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,\n\t\t\tscrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tgetOffset = function( elem, doc, docElem ) {\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.support.fixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar elem = this[0],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn null;\n\t}\n\n\tif ( elem === doc.body ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\treturn getOffset( elem, doc, doc.documentElement );\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tvar clientProp = \"client\" + name,\n\t\tscrollProp = \"scroll\" + name,\n\t\toffsetProp = \"offset\" + name;\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[ \"inner\" + name ] = function() {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, \"padding\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[ \"outer\" + name ] = function( margin ) {\n\t\tvar elem = this[0];\n\t\treturn elem ?\n\t\t\telem.style ?\n\t\t\tparseFloat( jQuery.css( elem, type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tthis[ type ]() :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( value ) {\n\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\tvar doc, docElemProp, orig, ret;\n\n\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\t\tdoc = elem.document;\n\t\t\t\tdocElemProp = doc.documentElement[ clientProp ];\n\t\t\t\treturn jQuery.support.boxModel && docElemProp ||\n\t\t\t\t\tdoc.body && doc.body[ clientProp ] || docElemProp;\n\t\t\t}\n\n\t\t\t// Get document width or height\n\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]\n\t\t\t\t// so we can't use max, as it'll choose the incorrect offset[Width/Height]\n\t\t\t\t// instead we use the correct client[Width/Height]\n\t\t\t\t// support:IE6\n\t\t\t\tif ( doc[ clientProp ] >= doc[ scrollProp ] ) {\n\t\t\t\t\treturn doc[ clientProp ];\n\t\t\t\t}\n\n\t\t\t\treturn Math.max(\n\t\t\t\t\telem.body[ scrollProp ], doc[ scrollProp ],\n\t\t\t\t\telem.body[ offsetProp ], doc[ offsetProp ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Get width or height on the element\n\t\t\tif ( value === undefined ) {\n\t\t\t\torig = jQuery.css( elem, type );\n\t\t\t\tret = parseFloat( orig );\n\t\t\t\treturn jQuery.isNumeric( ret ) ? ret : orig;\n\t\t\t}\n\n\t\t\t// Set the width or height on the element\n\t\t\tjQuery( elem ).css( type, value );\n\t\t}, type, value, arguments.length, null );\n\t};\n});\n\n\n\n\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n\n\n})( window );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.form.js",
    "content": "/*!\n * jQuery Form Plugin\n * version: 2.87 (20-OCT-2011)\n * @requires jQuery v1.3.2 or later\n *\n * Examples and documentation at: http://malsup.com/jquery/form/\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n */\n;(function($) {\n\n/*\n\tUsage Note:\n\t-----------\n\tDo not use both ajaxSubmit and ajaxForm on the same form.  These\n\tfunctions are intended to be exclusive.  Use ajaxSubmit if you want\n\tto bind your own submit handler to the form.  For example,\n\n\t$(document).ready(function() {\n\t\t$('#myForm').bind('submit', function(e) {\n\t\t\te.preventDefault(); // <-- important\n\t\t\t$(this).ajaxSubmit({\n\t\t\t\ttarget: '#output'\n\t\t\t});\n\t\t});\n\t});\n\n\tUse ajaxForm when you want the plugin to manage all the event binding\n\tfor you.  For example,\n\n\t$(document).ready(function() {\n\t\t$('#myForm').ajaxForm({\n\t\t\ttarget: '#output'\n\t\t});\n\t});\n\n\tWhen using ajaxForm, the ajaxSubmit function will be invoked for you\n\tat the appropriate time.\n*/\n\n/**\n * ajaxSubmit() provides a mechanism for immediately submitting\n * an HTML form using AJAX.\n */\n$.fn.ajaxSubmit = function(options) {\n\t// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\n\tif (!this.length) {\n\t\tlog('ajaxSubmit: skipping submit process - no element selected');\n\t\treturn this;\n\t}\n\n\tvar method, action, url, $form = this;\n\n\tif (typeof options == 'function') {\n\t\toptions = { success: options };\n\t}\n\n\tmethod = this.attr('method');\n\taction = this.attr('action');\n\turl = (typeof action === 'string') ? $.trim(action) : '';\n\turl = url || window.location.href || '';\n\tif (url) {\n\t\t// clean url (don't include hash vaue)\n\t\turl = (url.match(/^([^#]+)/)||[])[1];\n\t}\n\n\toptions = $.extend(true, {\n\t\turl:  url,\n\t\tsuccess: $.ajaxSettings.success,\n\t\ttype: method || 'GET',\n\t\tiframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\n\t}, options);\n\n\t// hook for manipulating the form data before it is extracted;\n\t// convenient for use with rich editors like tinyMCE or FCKEditor\n\tvar veto = {};\n\tthis.trigger('form-pre-serialize', [this, options, veto]);\n\tif (veto.veto) {\n\t\tlog('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\n\t\treturn this;\n\t}\n\n\t// provide opportunity to alter form data before it is serialized\n\tif (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\n\t\tlog('ajaxSubmit: submit aborted via beforeSerialize callback');\n\t\treturn this;\n\t}\n\n   var traditional = options.traditional;\n   if ( traditional === undefined ) {\n      traditional = $.ajaxSettings.traditional;\n   }\n\n\tvar qx,n,v,a = this.formToArray(options.semantic);\n\tif (options.data) {\n\t\toptions.extraData = options.data;\n      qx = $.param(options.data, traditional);\n\t}\n\n\t// give pre-submit callback an opportunity to abort the submit\n\tif (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\n\t\tlog('ajaxSubmit: submit aborted via beforeSubmit callback');\n\t\treturn this;\n\t}\n\n\t// fire vetoable 'validate' event\n\tthis.trigger('form-submit-validate', [a, this, options, veto]);\n\tif (veto.veto) {\n\t\tlog('ajaxSubmit: submit vetoed via form-submit-validate trigger');\n\t\treturn this;\n\t}\n\n\tvar q = $.param(a, traditional);\n   if (qx)\n      q = ( q ? (q + '&' + qx) : qx );\n\n\tif (options.type.toUpperCase() == 'GET') {\n\t\toptions.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\n\t\toptions.data = null;  // data is null for 'get'\n\t}\n\telse {\n\t\toptions.data = q; // data is the query string for 'post'\n\t}\n\n\tvar callbacks = [];\n\tif (options.resetForm) {\n\t\tcallbacks.push(function() { $form.resetForm(); });\n\t}\n\tif (options.clearForm) {\n\t\tcallbacks.push(function() { $form.clearForm(options.includeHidden); });\n\t}\n\n\t// perform a load on the target only if dataType is not provided\n\tif (!options.dataType && options.target) {\n\t\tvar oldSuccess = options.success || function(){};\n\t\tcallbacks.push(function(data) {\n\t\t\tvar fn = options.replaceTarget ? 'replaceWith' : 'html';\n\t\t\t$(options.target)[fn](data).each(oldSuccess, arguments);\n\t\t});\n\t}\n\telse if (options.success) {\n\t\tcallbacks.push(options.success);\n\t}\n\n\toptions.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg\n\t\tvar context = options.context || options;   // jQuery 1.4+ supports scope context\n\t\tfor (var i=0, max=callbacks.length; i < max; i++) {\n\t\t\tcallbacks[i].apply(context, [data, status, xhr || $form, $form]);\n\t\t}\n\t};\n\n\t// are there files to upload?\n\tvar fileInputs = $('input:file', this).length > 0;\n\tvar mp = 'multipart/form-data';\n\tvar multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\n\n\t// options.iframe allows user to force iframe mode\n\t// 06-NOV-09: now defaulting to iframe mode if file input is detected\n   if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {\n\t   // hack to fix Safari hang (thanks to Tim Molendijk for this)\n\t   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\n\t   if (options.closeKeepAlive) {\n\t\t   $.get(options.closeKeepAlive, function() { fileUpload(a); });\n\t\t}\n\t   else {\n\t\t   fileUpload(a);\n\t\t}\n   }\n   else {\n\t\t// IE7 massage (see issue 57)\n\t\tif ($.browser.msie && method == 'get' && typeof options.type === \"undefined\") {\n\t\t\tvar ieMeth = $form[0].getAttribute('method');\n\t\t\tif (typeof ieMeth === 'string')\n\t\t\t\toptions.type = ieMeth;\n\t\t}\n\t\t$.ajax(options);\n   }\n\n\t// fire 'notify' event\n\tthis.trigger('form-submit-notify', [this, options]);\n\treturn this;\n\n\n\t// private function for handling file uploads (hat tip to YAHOO!)\n\tfunction fileUpload(a) {\n\t\tvar form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;\n        var useProp = !!$.fn.prop;\n\n        if (a) {\n            if ( useProp ) {\n            \t// ensure that every serialized input is still enabled\n              \tfor (i=0; i < a.length; i++) {\n                    el = $(form[a[i].name]);\n                    el.prop('disabled', false);\n              \t}\n            } else {\n              \tfor (i=0; i < a.length; i++) {\n                    el = $(form[a[i].name]);\n                    el.removeAttr('disabled');\n              \t}\n            };\n        }\n\n\t\tif ($(':input[name=submit],:input[id=submit]', form).length) {\n\t\t\t// if there is an input with a name or id of 'submit' then we won't be\n\t\t\t// able to invoke the submit fn on the form (at least not x-browser)\n\t\t\talert('Error: Form elements must not have name or id of \"submit\".');\n\t\t\treturn;\n\t\t}\n\n\t\ts = $.extend(true, {}, $.ajaxSettings, options);\n\t\ts.context = s.context || s;\n\t\tid = 'jqFormIO' + (new Date().getTime());\n\t\tif (s.iframeTarget) {\n\t\t\t$io = $(s.iframeTarget);\n\t\t\tn = $io.attr('name');\n\t\t\tif (n == null)\n\t\t\t \t$io.attr('name', id);\n\t\t\telse\n\t\t\t\tid = n;\n\t\t}\n\t\telse {\n\t\t\t$io = $('<iframe name=\"' + id + '\" src=\"'+ s.iframeSrc +'\" />');\n\t\t\t$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });\n\t\t}\n\t\tio = $io[0];\n\n\n\t\txhr = { // mock object\n\t\t\taborted: 0,\n\t\t\tresponseText: null,\n\t\t\tresponseXML: null,\n\t\t\tstatus: 0,\n\t\t\tstatusText: 'n/a',\n\t\t\tgetAllResponseHeaders: function() {},\n\t\t\tgetResponseHeader: function() {},\n\t\t\tsetRequestHeader: function() {},\n\t\t\tabort: function(status) {\n\t\t\t\tvar e = (status === 'timeout' ? 'timeout' : 'aborted');\n\t\t\t\tlog('aborting upload... ' + e);\n\t\t\t\tthis.aborted = 1;\n\t\t\t\t$io.attr('src', s.iframeSrc); // abort op in progress\n\t\t\t\txhr.error = e;\n\t\t\t\ts.error && s.error.call(s.context, xhr, e, status);\n\t\t\t\tg && $.event.trigger(\"ajaxError\", [xhr, s, e]);\n\t\t\t\ts.complete && s.complete.call(s.context, xhr, e);\n\t\t\t}\n\t\t};\n\n\t\tg = s.global;\n\t\t// trigger ajax global events so that activity/block indicators work like normal\n\t\tif (g && ! $.active++) {\n\t\t\t$.event.trigger(\"ajaxStart\");\n\t\t}\n\t\tif (g) {\n\t\t\t$.event.trigger(\"ajaxSend\", [xhr, s]);\n\t\t}\n\n\t\tif (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {\n\t\t\tif (s.global) {\n\t\t\t\t$.active--;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (xhr.aborted) {\n\t\t\treturn;\n\t\t}\n\n\t\t// add submitting element to data if we know it\n\t\tsub = form.clk;\n\t\tif (sub) {\n\t\t\tn = sub.name;\n\t\t\tif (n && !sub.disabled) {\n\t\t\t\ts.extraData = s.extraData || {};\n\t\t\t\ts.extraData[n] = sub.value;\n\t\t\t\tif (sub.type == \"image\") {\n\t\t\t\t\ts.extraData[n+'.x'] = form.clk_x;\n\t\t\t\t\ts.extraData[n+'.y'] = form.clk_y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar CLIENT_TIMEOUT_ABORT = 1;\n\t\tvar SERVER_ABORT = 2;\n\n\t\tfunction getDoc(frame) {\n\t\t\tvar doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;\n\t\t\treturn doc;\n\t\t}\n\n\t\t// take a breath so that pending repaints get some cpu time before the upload starts\n\t\tfunction doSubmit() {\n\t\t\t// make sure form attrs are set\n\t\t\tvar t = $form.attr('target'), a = $form.attr('action');\n\n\t\t\t// update form attrs in IE friendly way\n\t\t\tform.setAttribute('target',id);\n\t\t\tif (!method) {\n\t\t\t\tform.setAttribute('method', 'POST');\n\t\t\t}\n\t\t\tif (a != s.url) {\n\t\t\t\tform.setAttribute('action', s.url);\n\t\t\t}\n\n\t\t\t// ie borks in some cases when setting encoding\n\t\t\tif (! s.skipEncodingOverride && (!method || /post/i.test(method))) {\n\t\t\t\t$form.attr({\n\t\t\t\t\tencoding: 'multipart/form-data',\n\t\t\t\t\tenctype:  'multipart/form-data'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// support timout\n\t\t\tif (s.timeout) {\n\t\t\t\ttimeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);\n\t\t\t}\n\n\t\t\t// look for server aborts\n\t\t\tfunction checkState() {\n\t\t\t\ttry {\n\t\t\t\t\tvar state = getDoc(io).readyState;\n\t\t\t\t\tlog('state = ' + state);\n\t\t\t\t\tif (state.toLowerCase() == 'uninitialized')\n\t\t\t\t\t\tsetTimeout(checkState,50);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tlog('Server abort: ' , e, ' (', e.name, ')');\n\t\t\t\t\tcb(SERVER_ABORT);\n\t\t\t\t\ttimeoutHandle && clearTimeout(timeoutHandle);\n\t\t\t\t\ttimeoutHandle = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add \"extra\" data to form if provided in options\n\t\t\tvar extraInputs = [];\n\t\t\ttry {\n\t\t\t\tif (s.extraData) {\n\t\t\t\t\tfor (var n in s.extraData) {\n\t\t\t\t\t\textraInputs.push(\n\t\t\t\t\t\t\t$('<input type=\"hidden\" name=\"'+n+'\" />').attr('value',s.extraData[n])\n\t\t\t\t\t\t\t\t.appendTo(form)[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!s.iframeTarget) {\n\t\t\t\t\t// add iframe to doc and submit the form\n\t\t\t\t\t$io.appendTo('body');\n\t                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);\n\t\t\t\t}\n\t\t\t\tsetTimeout(checkState,15);\n\t\t\t\tform.submit();\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\t// reset attrs and remove \"extra\" input elements\n\t\t\t\tform.setAttribute('action',a);\n\t\t\t\tif(t) {\n\t\t\t\t\tform.setAttribute('target', t);\n\t\t\t\t} else {\n\t\t\t\t\t$form.removeAttr('target');\n\t\t\t\t}\n\t\t\t\t$(extraInputs).remove();\n\t\t\t}\n\t\t}\n\n\t\tif (s.forceSync) {\n\t\t\tdoSubmit();\n\t\t}\n\t\telse {\n\t\t\tsetTimeout(doSubmit, 10); // this lets dom updates render\n\t\t}\n\n\t\tvar data, doc, domCheckCount = 50, callbackProcessed;\n\n\t\tfunction cb(e) {\n\t\t\tif (xhr.aborted || callbackProcessed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tdoc = getDoc(io);\n\t\t\t}\n\t\t\tcatch(ex) {\n\t\t\t\tlog('cannot access response document: ', ex);\n\t\t\t\te = SERVER_ABORT;\n\t\t\t}\n\t\t\tif (e === CLIENT_TIMEOUT_ABORT && xhr) {\n\t\t\t\txhr.abort('timeout');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (e == SERVER_ABORT && xhr) {\n\t\t\t\txhr.abort('server abort');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!doc || doc.location.href == s.iframeSrc) {\n\t\t\t\t// response not received yet\n\t\t\t\tif (!timedOut)\n\t\t\t\t\treturn;\n\t\t\t}\n            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);\n\n\t\t\tvar status = 'success', errMsg;\n\t\t\ttry {\n\t\t\t\tif (timedOut) {\n\t\t\t\t\tthrow 'timeout';\n\t\t\t\t}\n\n\t\t\t\tvar isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);\n\t\t\t\tlog('isXml='+isXml);\n\t\t\t\tif (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {\n\t\t\t\t\tif (--domCheckCount) {\n\t\t\t\t\t\t// in some browsers (Opera) the iframe DOM is not always traversable when\n\t\t\t\t\t\t// the onload callback fires, so we loop a bit to accommodate\n\t\t\t\t\t\tlog('requeing onLoad callback, DOM not available');\n\t\t\t\t\t\tsetTimeout(cb, 250);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// let this fall through because server response could be an empty document\n\t\t\t\t\t//log('Could not access iframe DOM after mutiple tries.');\n\t\t\t\t\t//throw 'DOMException: not available';\n\t\t\t\t}\n\n\t\t\t\t//log('response detected');\n                var docRoot = doc.body ? doc.body : doc.documentElement;\n                xhr.responseText = docRoot ? docRoot.innerHTML : null;\n\t\t\t\txhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;\n\t\t\t\tif (isXml)\n\t\t\t\t\ts.dataType = 'xml';\n\t\t\t\txhr.getResponseHeader = function(header){\n\t\t\t\t\tvar headers = {'content-type': s.dataType};\n\t\t\t\t\treturn headers[header];\n\t\t\t\t};\n                // support for XHR 'status' & 'statusText' emulation :\n                if (docRoot) {\n                    xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;\n                    xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;\n                }\n\n\t\t\t\tvar dt = (s.dataType || '').toLowerCase();\n\t\t\t\tvar scr = /(json|script|text)/.test(dt);\n\t\t\t\tif (scr || s.textarea) {\n\t\t\t\t\t// see if user embedded response in textarea\n\t\t\t\t\tvar ta = doc.getElementsByTagName('textarea')[0];\n\t\t\t\t\tif (ta) {\n\t\t\t\t\t\txhr.responseText = ta.value;\n                        // support for XHR 'status' & 'statusText' emulation :\n                        xhr.status = Number( ta.getAttribute('status') ) || xhr.status;\n                        xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;\n\t\t\t\t\t}\n\t\t\t\t\telse if (scr) {\n\t\t\t\t\t\t// account for browsers injecting pre around json response\n\t\t\t\t\t\tvar pre = doc.getElementsByTagName('pre')[0];\n\t\t\t\t\t\tvar b = doc.getElementsByTagName('body')[0];\n\t\t\t\t\t\tif (pre) {\n\t\t\t\t\t\t\txhr.responseText = pre.textContent ? pre.textContent : pre.innerText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (b) {\n\t\t\t\t\t\t\txhr.responseText = b.textContent ? b.textContent : b.innerText;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (dt == 'xml' && !xhr.responseXML && xhr.responseText != null) {\n\t\t\t\t\txhr.responseXML = toXml(xhr.responseText);\n\t\t\t\t}\n\n                try {\n                    data = httpData(xhr, dt, s);\n                }\n                catch (e) {\n                    status = 'parsererror';\n                    xhr.error = errMsg = (e || status);\n                }\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tlog('error caught: ',e);\n\t\t\t\tstatus = 'error';\n                xhr.error = errMsg = (e || status);\n\t\t\t}\n\n\t\t\tif (xhr.aborted) {\n\t\t\t\tlog('upload aborted');\n\t\t\t\tstatus = null;\n\t\t\t}\n\n            if (xhr.status) { // we've set xhr.status\n                status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';\n            }\n\n\t\t\t// ordering of these callbacks/triggers is odd, but that's how $.ajax does it\n\t\t\tif (status === 'success') {\n\t\t\t\ts.success && s.success.call(s.context, data, 'success', xhr);\n\t\t\t\tg && $.event.trigger(\"ajaxSuccess\", [xhr, s]);\n\t\t\t}\n            else if (status) {\n\t\t\t\tif (errMsg == undefined)\n\t\t\t\t\terrMsg = xhr.statusText;\n\t\t\t\ts.error && s.error.call(s.context, xhr, status, errMsg);\n\t\t\t\tg && $.event.trigger(\"ajaxError\", [xhr, s, errMsg]);\n            }\n\n\t\t\tg && $.event.trigger(\"ajaxComplete\", [xhr, s]);\n\n\t\t\tif (g && ! --$.active) {\n\t\t\t\t$.event.trigger(\"ajaxStop\");\n\t\t\t}\n\n\t\t\ts.complete && s.complete.call(s.context, xhr, status);\n\n\t\t\tcallbackProcessed = true;\n\t\t\tif (s.timeout)\n\t\t\t\tclearTimeout(timeoutHandle);\n\n\t\t\t// clean up\n\t\t\tsetTimeout(function() {\n\t\t\t\tif (!s.iframeTarget)\n\t\t\t\t\t$io.remove();\n\t\t\t\txhr.responseXML = null;\n\t\t\t}, 100);\n\t\t}\n\n\t\tvar toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)\n\t\t\tif (window.ActiveXObject) {\n\t\t\t\tdoc = new ActiveXObject('Microsoft.XMLDOM');\n\t\t\t\tdoc.async = 'false';\n\t\t\t\tdoc.loadXML(s);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdoc = (new DOMParser()).parseFromString(s, 'text/xml');\n\t\t\t}\n\t\t\treturn (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;\n\t\t};\n\t\tvar parseJSON = $.parseJSON || function(s) {\n\t\t\treturn window['eval']('(' + s + ')');\n\t\t};\n\n\t\tvar httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4\n\n\t\t\tvar ct = xhr.getResponseHeader('content-type') || '',\n\t\t\t\txml = type === 'xml' || !type && ct.indexOf('xml') >= 0,\n\t\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\t\tif (xml && data.documentElement.nodeName === 'parsererror') {\n\t\t\t\t$.error && $.error('parsererror');\n\t\t\t}\n\t\t\tif (s && s.dataFilter) {\n\t\t\t\tdata = s.dataFilter(data, type);\n\t\t\t}\n\t\t\tif (typeof data === 'string') {\n\t\t\t\tif (type === 'json' || !type && ct.indexOf('json') >= 0) {\n\t\t\t\t\tdata = parseJSON(data);\n\t\t\t\t} else if (type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0) {\n\t\t\t\t\t$.globalEval(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn data;\n\t\t};\n\t}\n};\n\n/**\n * ajaxForm() provides a mechanism for fully automating form submission.\n *\n * The advantages of using this method instead of ajaxSubmit() are:\n *\n * 1: This method will include coordinates for <input type=\"image\" /> elements (if the element\n *\tis used to submit the form).\n * 2. This method will include the submit element's name/value data (for the element that was\n *\tused to submit the form).\n * 3. This method binds the submit() method to the form for you.\n *\n * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely\n * passes the options argument along after properly binding events for submit elements and\n * the form itself.\n */\n$.fn.ajaxForm = function(options) {\n\t// in jQuery 1.3+ we can fix mistakes with the ready state\n\tif (this.length === 0) {\n\t\tvar o = { s: this.selector, c: this.context };\n\t\tif (!$.isReady && o.s) {\n\t\t\tlog('DOM not ready, queuing ajaxForm');\n\t\t\t$(function() {\n\t\t\t\t$(o.s,o.c).ajaxForm(options);\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\t\t// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()\n\t\tlog('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));\n\t\treturn this;\n\t}\n\n\treturn this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {\n\t\tif (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed\n\t\t\te.preventDefault();\n\t\t\t$(this).ajaxSubmit(options);\n\t\t}\n\t}).bind('click.form-plugin', function(e) {\n\t\tvar target = e.target;\n\t\tvar $el = $(target);\n\t\tif (!($el.is(\":submit,input:image\"))) {\n\t\t\t// is this a child element of the submit el?  (ex: a span within a button)\n\t\t\tvar t = $el.closest(':submit');\n\t\t\tif (t.length == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttarget = t[0];\n\t\t}\n\t\tvar form = this;\n\t\tform.clk = target;\n\t\tif (target.type == 'image') {\n\t\t\tif (e.offsetX != undefined) {\n\t\t\t\tform.clk_x = e.offsetX;\n\t\t\t\tform.clk_y = e.offsetY;\n\t\t\t} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin\n\t\t\t\tvar offset = $el.offset();\n\t\t\t\tform.clk_x = e.pageX - offset.left;\n\t\t\t\tform.clk_y = e.pageY - offset.top;\n\t\t\t} else {\n\t\t\t\tform.clk_x = e.pageX - target.offsetLeft;\n\t\t\t\tform.clk_y = e.pageY - target.offsetTop;\n\t\t\t}\n\t\t}\n\t\t// clear form vars\n\t\tsetTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);\n\t});\n};\n\n// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm\n$.fn.ajaxFormUnbind = function() {\n\treturn this.unbind('submit.form-plugin click.form-plugin');\n};\n\n/**\n * formToArray() gathers form element data into an array of objects that can\n * be passed to any of the following ajax functions: $.get, $.post, or load.\n * Each object in the array has both a 'name' and 'value' property.  An example of\n * an array for a simple login form might be:\n *\n * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]\n *\n * It is this array that is passed to pre-submit callback functions provided to the\n * ajaxSubmit() and ajaxForm() methods.\n */\n$.fn.formToArray = function(semantic) {\n\tvar a = [];\n\tif (this.length === 0) {\n\t\treturn a;\n\t}\n\n\tvar form = this[0];\n\tvar els = semantic ? form.getElementsByTagName('*') : form.elements;\n\tif (!els) {\n\t\treturn a;\n\t}\n\n\tvar i,j,n,v,el,max,jmax;\n\tfor(i=0, max=els.length; i < max; i++) {\n\t\tel = els[i];\n\t\tn = el.name;\n\t\tif (!n) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (semantic && form.clk && el.type == \"image\") {\n\t\t\t// handle image inputs on the fly when semantic == true\n\t\t\tif(!el.disabled && form.clk == el) {\n\t\t\t\ta.push({name: n, value: $(el).val()});\n\t\t\t\ta.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tv = $.fieldValue(el, true);\n\t\tif (v && v.constructor == Array) {\n\t\t\tfor(j=0, jmax=v.length; j < jmax; j++) {\n\t\t\t\ta.push({name: n, value: v[j]});\n\t\t\t}\n\t\t}\n\t\telse if (v !== null && typeof v != 'undefined') {\n\t\t\ta.push({name: n, value: v});\n\t\t}\n\t}\n\n\tif (!semantic && form.clk) {\n\t\t// input type=='image' are not found in elements array! handle it here\n\t\tvar $input = $(form.clk), input = $input[0];\n\t\tn = input.name;\n\t\tif (n && !input.disabled && input.type == 'image') {\n\t\t\ta.push({name: n, value: $input.val()});\n\t\t\ta.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\n\t\t}\n\t}\n\treturn a;\n};\n\n/**\n * Serializes form data into a 'submittable' string. This method will return a string\n * in the format: name1=value1&amp;name2=value2\n */\n$.fn.formSerialize = function(semantic) {\n\t//hand off to jQuery.param for proper encoding\n\treturn $.param(this.formToArray(semantic));\n};\n\n/**\n * Serializes all field elements in the jQuery object into a query string.\n * This method will return a string in the format: name1=value1&amp;name2=value2\n */\n$.fn.fieldSerialize = function(successful) {\n\tvar a = [];\n\tthis.each(function() {\n\t\tvar n = this.name;\n\t\tif (!n) {\n\t\t\treturn;\n\t\t}\n\t\tvar v = $.fieldValue(this, successful);\n\t\tif (v && v.constructor == Array) {\n\t\t\tfor (var i=0,max=v.length; i < max; i++) {\n\t\t\t\ta.push({name: n, value: v[i]});\n\t\t\t}\n\t\t}\n\t\telse if (v !== null && typeof v != 'undefined') {\n\t\t\ta.push({name: this.name, value: v});\n\t\t}\n\t});\n\t//hand off to jQuery.param for proper encoding\n\treturn $.param(a);\n};\n\n/**\n * Returns the value(s) of the element in the matched set.  For example, consider the following form:\n *\n *  <form><fieldset>\n *\t  <input name=\"A\" type=\"text\" />\n *\t  <input name=\"A\" type=\"text\" />\n *\t  <input name=\"B\" type=\"checkbox\" value=\"B1\" />\n *\t  <input name=\"B\" type=\"checkbox\" value=\"B2\"/>\n *\t  <input name=\"C\" type=\"radio\" value=\"C1\" />\n *\t  <input name=\"C\" type=\"radio\" value=\"C2\" />\n *  </fieldset></form>\n *\n *  var v = $(':text').fieldValue();\n *  // if no values are entered into the text inputs\n *  v == ['','']\n *  // if values entered into the text inputs are 'foo' and 'bar'\n *  v == ['foo','bar']\n *\n *  var v = $(':checkbox').fieldValue();\n *  // if neither checkbox is checked\n *  v === undefined\n *  // if both checkboxes are checked\n *  v == ['B1', 'B2']\n *\n *  var v = $(':radio').fieldValue();\n *  // if neither radio is checked\n *  v === undefined\n *  // if first radio is checked\n *  v == ['C1']\n *\n * The successful argument controls whether or not the field element must be 'successful'\n * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).\n * The default value of the successful argument is true.  If this value is false the value(s)\n * for each element is returned.\n *\n * Note: This method *always* returns an array.  If no valid value can be determined the\n *\t   array will be empty, otherwise it will contain one or more values.\n */\n$.fn.fieldValue = function(successful) {\n\tfor (var val=[], i=0, max=this.length; i < max; i++) {\n\t\tvar el = this[i];\n\t\tvar v = $.fieldValue(el, successful);\n\t\tif (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {\n\t\t\tcontinue;\n\t\t}\n\t\tv.constructor == Array ? $.merge(val, v) : val.push(v);\n\t}\n\treturn val;\n};\n\n/**\n * Returns the value of the field element.\n */\n$.fieldValue = function(el, successful) {\n\tvar n = el.name, t = el.type, tag = el.tagName.toLowerCase();\n\tif (successful === undefined) {\n\t\tsuccessful = true;\n\t}\n\n\tif (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||\n\t\t(t == 'checkbox' || t == 'radio') && !el.checked ||\n\t\t(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||\n\t\ttag == 'select' && el.selectedIndex == -1)) {\n\t\t\treturn null;\n\t}\n\n\tif (tag == 'select') {\n\t\tvar index = el.selectedIndex;\n\t\tif (index < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tvar a = [], ops = el.options;\n\t\tvar one = (t == 'select-one');\n\t\tvar max = (one ? index+1 : ops.length);\n\t\tfor(var i=(one ? index : 0); i < max; i++) {\n\t\t\tvar op = ops[i];\n\t\t\tif (op.selected) {\n\t\t\t\tvar v = op.value;\n\t\t\t\tif (!v) { // extra pain for IE...\n\t\t\t\t\tv = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;\n\t\t\t\t}\n\t\t\t\tif (one) {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t\ta.push(v);\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n\treturn $(el).val();\n};\n\n/**\n * Clears the form data.  Takes the following actions on the form's input fields:\n *  - input text fields will have their 'value' property set to the empty string\n *  - select elements will have their 'selectedIndex' property set to -1\n *  - checkbox and radio inputs will have their 'checked' property set to false\n *  - inputs of type submit, button, reset, and hidden will *not* be effected\n *  - button elements will *not* be effected\n */\n$.fn.clearForm = function(includeHidden) {\n\treturn this.each(function() {\n\t\t$('input,select,textarea', this).clearFields(includeHidden);\n\t});\n};\n\n/**\n * Clears the selected form elements.\n */\n$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {\n\tvar re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list\n\treturn this.each(function() {\n\t\tvar t = this.type, tag = this.tagName.toLowerCase();\n\t\tif (re.test(t) || tag == 'textarea' || (includeHidden && /hidden/.test(t)) ) {\n\t\t\tthis.value = '';\n\t\t}\n\t\telse if (t == 'checkbox' || t == 'radio') {\n\t\t\tthis.checked = false;\n\t\t}\n\t\telse if (tag == 'select') {\n\t\t\tthis.selectedIndex = -1;\n\t\t}\n\t});\n};\n\n/**\n * Resets the form data.  Causes all form elements to be reset to their original value.\n */\n$.fn.resetForm = function() {\n\treturn this.each(function() {\n\t\t// guard against an input with the name of 'reset'\n\t\t// note that IE reports the reset function as an 'object'\n\t\tif (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {\n\t\t\tthis.reset();\n\t\t}\n\t});\n};\n\n/**\n * Enables or disables any matching elements.\n */\n$.fn.enable = function(b) {\n\tif (b === undefined) {\n\t\tb = true;\n\t}\n\treturn this.each(function() {\n\t\tthis.disabled = !b;\n\t});\n};\n\n/**\n * Checks/unchecks any matching checkboxes or radio buttons and\n * selects/deselects and matching option elements.\n */\n$.fn.selected = function(select) {\n\tif (select === undefined) {\n\t\tselect = true;\n\t}\n\treturn this.each(function() {\n\t\tvar t = this.type;\n\t\tif (t == 'checkbox' || t == 'radio') {\n\t\t\tthis.checked = select;\n\t\t}\n\t\telse if (this.tagName.toLowerCase() == 'option') {\n\t\t\tvar $sel = $(this).parent('select');\n\t\t\tif (select && $sel[0] && $sel[0].type == 'select-one') {\n\t\t\t\t// deselect all other options\n\t\t\t\t$sel.find('option').selected(false);\n\t\t\t}\n\t\t\tthis.selected = select;\n\t\t}\n\t});\n};\n\n// expose debug var\n$.fn.ajaxSubmit.debug = false;\n\n// helper fn for console logging\nfunction log() {\n\tif (!$.fn.ajaxSubmit.debug)\n\t\treturn;\n\tvar msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');\n\tif (window.console && window.console.log) {\n\t\twindow.console.log(msg);\n\t}\n\telse if (window.opera && window.opera.postError) {\n\t\twindow.opera.postError(msg);\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.3.2\n * http://jquery.com/\n *\n * Copyright (c) 2009 John Resig\n * Dual licensed under the MIT and GPL licenses.\n * http://docs.jquery.com/License\n *\n * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)\n * Revision: 6246\n */\n(function(){\n\nvar \n\t// Will speed up references to window, and allows munging its name.\n\twindow = this,\n\t// Will speed up references to undefined, and allows munging its name.\n\tundefined,\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\tjQuery = window.jQuery = window.$ = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#([\\w-]+)$/,\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\t// Make sure that a selection was provided\n\t\tselector = selector || document;\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\tthis.context = selector;\n\t\t\treturn this;\n\t\t}\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tvar match = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] )\n\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\telse {\n\t\t\t\t\tvar elem = document.getElementById( match[3] );\n\n\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t// by name instead of ID\n\t\t\t\t\tif ( elem && elem.id != match[3] )\n\t\t\t\t\t\treturn jQuery().find( selector );\n\n\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\tvar ret = jQuery( elem || [] );\n\t\t\t\t\tret.context = document;\n\t\t\t\t\tret.selector = selector;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, [context])\n\t\t\t// (which is just equivalent to: $(content).find(expr)\n\t\t\t} else\n\t\t\t\treturn jQuery( context ).find( selector );\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) )\n\t\t\treturn jQuery( document ).ready( selector );\n\n\t\t// Make sure that old selector state is passed along\n\t\tif ( selector.selector && selector.context ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn this.setArray(jQuery.isArray( selector ) ?\n\t\t\tselector :\n\t\t\tjQuery.makeArray(selector));\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.3.2\",\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num === undefined ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tArray.prototype.slice.call( this ) :\n\n\t\t\t// Return just the object\n\t\t\tthis[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery( elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" )\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\telse if ( name )\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Force the current matched set of elements to become\n\t// the specified array of elements (destroying the stack in the process)\n\t// You should use pushStack() in order to do this, but maintain the stack\n\tsetArray: function( elems ) {\n\t\t// Resetting the length to 0, then using the native Array push\n\t\t// is a super-fast way to populate an object with array-like properties\n\t\tthis.length = 0;\n\t\tArray.prototype.push.apply( this, elems );\n\n\t\treturn this;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem && elem.jquery ? elem[0] : elem\n\t\t, this );\n\t},\n\n\tattr: function( name, value, type ) {\n\t\tvar options = name;\n\n\t\t// Look for the case where we're accessing a style value\n\t\tif ( typeof name === \"string\" )\n\t\t\tif ( value === undefined )\n\t\t\t\treturn this[0] && jQuery[ type || \"attr\" ]( this[0], name );\n\n\t\t\telse {\n\t\t\t\toptions = {};\n\t\t\t\toptions[ name ] = value;\n\t\t\t}\n\n\t\t// Check to see if we're setting style values\n\t\treturn this.each(function(i){\n\t\t\t// Set all the styles\n\t\t\tfor ( name in options )\n\t\t\t\tjQuery.attr(\n\t\t\t\t\ttype ?\n\t\t\t\t\t\tthis.style :\n\t\t\t\t\t\tthis,\n\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\n\t\t\t\t);\n\t\t});\n\t},\n\n\tcss: function( key, value ) {\n\t\t// ignore negative width and height values\n\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\n\t\t\tvalue = undefined;\n\t\treturn this.attr( key, value, \"curCSS\" );\n\t},\n\n\ttext: function( text ) {\n\t\tif ( typeof text !== \"object\" && text != null )\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\n\t\tvar ret = \"\";\n\n\t\tjQuery.each( text || this, function(){\n\t\t\tjQuery.each( this.childNodes, function(){\n\t\t\t\tif ( this.nodeType != 8 )\n\t\t\t\t\tret += this.nodeType != 1 ?\n\t\t\t\t\t\tthis.nodeValue :\n\t\t\t\t\t\tjQuery.fn.text( [ this ] );\n\t\t\t});\n\t\t});\n\n\t\treturn ret;\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).clone();\n\n\t\t\tif ( this[0].parentNode )\n\t\t\t\twrap.insertBefore( this[0] );\n\n\t\t\twrap.map(function(){\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild )\n\t\t\t\t\telem = elem.firstChild;\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).contents().wrapAll( html );\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.appendChild( elem );\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function(elem){\n\t\t\tif (this.nodeType == 1)\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip(arguments, false, function(elem){\n\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t});\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || jQuery( [] );\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: [].push,\n\tsort: [].sort,\n\tsplice: [].splice,\n\n\tfind: function( selector ) {\n\t\tif ( this.length === 1 ) {\n\t\t\tvar ret = this.pushStack( [], \"find\", selector );\n\t\t\tret.length = 0;\n\t\t\tjQuery.find( selector, this[0], ret );\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery.unique(jQuery.map(this, function(elem){\n\t\t\t\treturn jQuery.find( selector, elem );\n\t\t\t})), \"find\", selector );\n\t\t}\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function(){\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = this.ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\").replace(/^\\s*/, \"\")])[0];\n\t\t\t} else\n\t\t\t\treturn this.cloneNode(true);\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tvar orig = this.find(\"*\").andSelf(), i = 0;\n\n\t\t\tret.find(\"*\").andSelf().each(function(){\n\t\t\t\tif ( this.nodeName !== orig[i].nodeName )\n\t\t\t\t\treturn;\n\n\t\t\t\tvar events = jQuery.data( orig[i], \"events\" );\n\n\t\t\t\tfor ( var type in events ) {\n\t\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ti++;\n\t\t\t});\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.isFunction( selector ) &&\n\t\t\tjQuery.grep(this, function(elem, i){\n\t\t\t\treturn selector.call( elem, i );\n\t\t\t}) ||\n\n\t\t\tjQuery.multiFilter( selector, jQuery.grep(this, function(elem){\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t}) ), \"filter\", selector );\n\t},\n\n\tclosest: function( selector ) {\n\t\tvar pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,\n\t\t\tcloser = 0;\n\n\t\treturn this.map(function(){\n\t\t\tvar cur = this;\n\t\t\twhile ( cur && cur.ownerDocument ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {\n\t\t\t\t\tjQuery.data(cur, \"closest\", closer);\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t\tcloser++;\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\tif ( typeof selector === \"string\" )\n\t\t\t// test special case where just one selector is passed in\n\t\t\tif ( isSimple.test( selector ) )\n\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ), \"not\", selector );\n\t\t\telse\n\t\t\t\tselector = jQuery.multiFilter( selector, this );\n\n\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\n\t\treturn this.filter(function() {\n\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\n\t\t});\n\t},\n\n\tadd: function( selector ) {\n\t\treturn this.pushStack( jQuery.unique( jQuery.merge(\n\t\t\tthis.get(),\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tjQuery.makeArray( selector )\n\t\t)));\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.multiFilter( selector, this ).length > 0;\n\t},\n\n\thasClass: function( selector ) {\n\t\treturn !!selector && this.is( \".\" + selector );\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\t\t\t\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif( jQuery.nodeName( elem, 'option' ) )\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type == \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 )\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one )\n\t\t\t\t\t\t\t\treturn value;\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(/\\r/g, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( typeof value === \"number\" )\n\t\t\tvalue += '';\n\n\t\treturn this.each(function(){\n\t\t\tif ( this.nodeType != 1 )\n\t\t\t\treturn;\n\n\t\t\tif ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )\n\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\n\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\n\n\t\t\telse if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(value);\n\n\t\t\t\tjQuery( \"option\", this ).each(function(){\n\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\n\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length )\n\t\t\t\t\tthis.selectedIndex = -1;\n\n\t\t\t} else\n\t\t\t\tthis.value = value;\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn value === undefined ?\n\t\t\t(this[0] ?\n\t\t\t\tthis[0].innerHTML.replace(/ jQuery\\d+=\"(?:\\d+|null)\"/g, \"\") :\n\t\t\t\tnull) :\n\t\t\tthis.empty().append( value );\n\t},\n\n\treplaceWith: function( value ) {\n\t\treturn this.after( value ).remove();\n\t},\n\n\teq: function( i ) {\n\t\treturn this.slice( i, +i + 1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ),\n\t\t\t\"slice\", Array.prototype.slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tif ( this[0] ) {\n\t\t\tvar fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),\n\t\t\t\tscripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),\n\t\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( first )\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ )\n\t\t\t\t\tcallback.call( root(this[i], first), this.length > 1 || i > 0 ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) : fragment );\n\t\t\n\t\t\tif ( scripts )\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t}\n\n\t\treturn this;\n\t\t\n\t\tfunction root( elem, cur ) {\n\t\t\treturn table && jQuery.nodeName(elem, \"table\") && jQuery.nodeName(cur, \"tr\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src )\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\n\telse\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\n\tif ( elem.parentNode )\n\t\telem.parentNode.removeChild( elem );\n}\n\nfunction now(){\n\treturn +new Date;\n}\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) )\n\t\ttarget = {};\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length == i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ )\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null )\n\t\t\t// Extend the base object\n\t\t\tfor ( var name in options ) {\n\t\t\t\tvar src = target[ name ], copy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy )\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// Recurse if we're merging object values\n\t\t\t\tif ( deep && copy && typeof copy === \"object\" && !copy.nodeType )\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, \n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsrc || ( copy.length != null ? [ ] : { } )\n\t\t\t\t\t, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\telse if ( copy !== undefined )\n\t\t\t\t\ttarget[ name ] = copy;\n\n\t\t\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n// exclude the following css properties to add px\nvar\texclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\t// cache defaultView\n\tdefaultView = document.defaultView || {},\n\ttoString = Object.prototype.toString;\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep )\n\t\t\twindow.jQuery = _jQuery;\n\n\t\treturn jQuery;\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\t// check if an element is in a (or is an) XML document\n\tisXMLDoc: function( elem ) {\n\t\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t\t!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );\n\t},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && /\\S/.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tif ( jQuery.support.scriptEval )\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\telse\n\t\t\t\tscript.text = data;\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0, length = object.length;\n\n\t\tif ( args ) {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( ; i < length; )\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false )\n\t\t\t\t\t\tbreak;\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( length === undefined ) {\n\t\t\t\tfor ( name in object )\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\n\t\t\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\tprop: function( elem, value, type, i, name ) {\n\t\t// Handle executable functions\n\t\tif ( jQuery.isFunction( value ) )\n\t\t\tvalue = value.call( elem, i );\n\n\t\t// Handle passing in a number to a CSS property\n\t\treturn typeof value === \"number\" && type == \"curCSS\" && !exclude.test( name ) ?\n\t\t\tvalue + \"px\" :\n\t\t\tvalue;\n\t},\n\n\tclassName: {\n\t\t// internal only, use addClass(\"class\")\n\t\tadd: function( elem, classNames ) {\n\t\t\tjQuery.each((classNames || \"\").split(/\\s+/), function(i, className){\n\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\n\t\t\t\t\telem.className += (elem.className ? \" \" : \"\") + className;\n\t\t\t});\n\t\t},\n\n\t\t// internal only, use removeClass(\"class\")\n\t\tremove: function( elem, classNames ) {\n\t\t\tif (elem.nodeType == 1)\n\t\t\t\telem.className = classNames !== undefined ?\n\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\n\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\n\t\t\t\t\t}).join(\" \") :\n\t\t\t\t\t\"\";\n\t\t},\n\n\t\t// internal only, use hasClass(\"class\")\n\t\thas: function( elem, className ) {\n\t\t\treturn elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options )\n\t\t\telem.style[ name ] = old[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name == \"width\" || name == \"height\" ) {\n\t\t\tvar val, props = { position: \"absolute\", visibility: \"hidden\", display:\"block\" }, which = name == \"width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ];\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name == \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" )\n\t\t\t\t\treturn;\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra )\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\tif ( extra === \"margin\" )\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\telse\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 )\n\t\t\t\tgetWH();\n\t\t\telse\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style;\n\n\t\t// We need to handle opacity special in IE\n\t\tif ( name == \"opacity\" && !jQuery.support.opacity ) {\n\t\t\tret = jQuery.attr( style, \"opacity\" );\n\n\t\t\treturn ret == \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( name.match( /float/i ) )\n\t\t\tname = styleFloat;\n\n\t\tif ( !force && style && style[ name ] )\n\t\t\tret = style[ name ];\n\n\t\telse if ( defaultView.getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( name.match( /float/i ) )\n\t\t\t\tname = \"float\";\n\n\t\t\tname = name.replace( /([A-Z])/g, \"-$1\" ).toLowerCase();\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle )\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name == \"opacity\" && ret == \"\" )\n\t\t\t\tret = \"1\";\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\n\t\t\t\treturn letter.toUpperCase();\n\t\t\t});\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !/^\\d+(px)?$/i.test( ret ) && /^\\d/.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = ret || 0;\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tclean: function( elems, context, fragment ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" )\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\n\t\t// If a single string is passed in and it's a single tag\n\t\t// just do a createElement and skip the rest\n\t\tif ( !fragment && elems.length === 1 && typeof elems[0] === \"string\" ) {\n\t\t\tvar match = /^<(\\w+)\\s*\\/?>$/.exec(elems[0]);\n\t\t\tif ( match )\n\t\t\t\treturn [ context.createElement( match[1] ) ];\n\t\t}\n\n\t\tvar ret = [], scripts = [], div = context.createElement(\"div\");\n\n\t\tjQuery.each(elems, function(i, elem){\n\t\t\tif ( typeof elem === \"number\" )\n\t\t\t\telem += '';\n\n\t\t\tif ( !elem )\n\t\t\t\treturn;\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\n\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?\n\t\t\t\t\t\tall :\n\t\t\t\t\t\tfront + \"></\" + tag + \">\";\n\t\t\t\t});\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tags = elem.replace(/^\\s+/, \"\").substring(0, 10).toLowerCase();\n\n\t\t\t\tvar wrap =\n\t\t\t\t\t// option or optgroup\n\t\t\t\t\t!tags.indexOf(\"<opt\") &&\n\t\t\t\t\t[ 1, \"<select multiple='multiple'>\", \"</select>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<leg\") &&\n\t\t\t\t\t[ 1, \"<fieldset>\", \"</fieldset>\" ] ||\n\n\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\n\t\t\t\t\t[ 1, \"<table>\", \"</table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<tr\") &&\n\t\t\t\t\t[ 2, \"<table><tbody>\", \"</tbody></table>\" ] ||\n\n\t\t\t\t \t// <thead> matched above\n\t\t\t\t\t(!tags.indexOf(\"<td\") || !tags.indexOf(\"<th\")) &&\n\t\t\t\t\t[ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ] ||\n\n\t\t\t\t\t!tags.indexOf(\"<col\") &&\n\t\t\t\t\t[ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ] ||\n\n\t\t\t\t\t// IE can't serialize <link> and <script> tags normally\n\t\t\t\t\t!jQuery.support.htmlSerialize &&\n\t\t\t\t\t[ 1, \"div<div>\", \"</div>\" ] ||\n\n\t\t\t\t\t[ 0, \"\", \"\" ];\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( wrap[0]-- )\n\t\t\t\t\tdiv = div.lastChild;\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = /<tbody/i.test(elem),\n\t\t\t\t\t\ttbody = !tags.indexOf(\"<table\") && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\twrap[1] == \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j )\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length )\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && /^\\s/.test( elem ) )\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( elem.match(/^\\s*/)[0] ), div.firstChild );\n\t\t\t\t\n\t\t\t\telem = jQuery.makeArray( div.childNodes );\n\t\t\t}\n\n\t\t\tif ( elem.nodeType )\n\t\t\t\tret.push( elem );\n\t\t\telse\n\t\t\t\tret = jQuery.merge( ret, elem );\n\n\t\t});\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 )\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn scripts;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tattr: function( elem, name, value ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif (!elem || elem.nodeType == 3 || elem.nodeType == 8)\n\t\t\treturn undefined;\n\n\t\tvar notxml = !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\t// IE elem.getAttribute passes even for style\n\t\tif ( elem.tagName ) {\n\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = /href|src|style/.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of a hidden option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name == \"selected\" && elem.parentNode )\n\t\t\t\telem.parentNode.selectedIndex;\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ){\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name == \"type\" && jQuery.nodeName( elem, \"input\" ) && elem.parentNode )\n\t\t\t\t\t\tthrow \"type property can't be changed\";\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) )\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name == \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\t\t\t\t\treturn attributeNode && attributeNode.specified\n\t\t\t\t\t\t? attributeNode.value\n\t\t\t\t\t\t: elem.nodeName.match(/(button|input|object|select|textarea)/i)\n\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t: elem.nodeName.match(/^(a|area)$/i) && elem.href\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml &&  name == \"style\" )\n\t\t\t\treturn jQuery.attr( elem.style, \"cssText\", value );\n\n\t\t\tif ( set )\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\t? elem.getAttribute( name, 2 )\n\t\t\t\t\t: elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name == \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\telem.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\telem.filter = (elem.filter || \"\").replace( /alpha\\([^)]*\\)/, \"\" ) +\n\t\t\t\t\t(parseInt( value ) + '' == \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\");\n\t\t\t}\n\n\t\t\treturn elem.filter && elem.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':\n\t\t\t\t\"\";\n\t\t}\n\n\t\tname = name.replace(/-([a-z])/ig, function(all, letter){\n\t\t\treturn letter.toUpperCase();\n\t\t});\n\n\t\tif ( set )\n\t\t\telem[ name ] = value;\n\n\t\treturn elem[ name ];\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( /^\\s+|\\s+$/g, \"\" );\n\t},\n\n\tmakeArray: function( array ) {\n\t\tvar ret = [];\n\n\t\tif( array != null ){\n\t\t\tvar i = array.length;\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\tif( i == null || typeof array === \"string\" || jQuery.isFunction(array) || array.setInterval )\n\t\t\t\tret[0] = array;\n\t\t\telse\n\t\t\t\twhile( i )\n\t\t\t\t\tret[--i] = array[i];\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tfor ( var i = 0, length = array.length; i < length; i++ )\n\t\t// Use === because on IE, window == document\n\t\t\tif ( array[ i ] === elem )\n\t\t\t\treturn i;\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\t// We have to loop this way because IE & Opera overwrite the length\n\t\t// expando of getElementsByTagName\n\t\tvar i = 0, elem, pos = first.length;\n\t\t// Also, we need to make sure that the correct elements are being returned\n\t\t// (IE returns comment nodes in a '*' query)\n\t\tif ( !jQuery.support.getAll ) {\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tif ( elem.nodeType != 8 )\n\t\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\t} else\n\t\t\twhile ( (elem = second[ i++ ]) != null )\n\t\t\t\tfirst[ pos++ ] = elem;\n\n\t\treturn first;\n\t},\n\n\tunique: function( array ) {\n\t\tvar ret = [], done = {};\n\n\t\ttry {\n\n\t\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\t\tvar id = jQuery.data( array[ i ] );\n\n\t\t\t\tif ( !done[ id ] ) {\n\t\t\t\t\tdone[ id ] = true;\n\t\t\t\t\tret.push( array[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch( e ) {\n\t\t\tret = array;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ )\n\t\t\tif ( !inv != !callback( elems[ i ], i ) )\n\t\t\t\tret.push( elems[ i ] );\n\n\t\treturn ret;\n\t},\n\n\tmap: function( elems, callback ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvar value = callback( elems[ i ], i );\n\n\t\t\tif ( value != null )\n\t\t\t\tret[ ret.length ] = value;\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t}\n});\n\n// Use of jQuery.browser is deprecated.\n// It's included for backwards compatibility and plugins,\n// although they should work to migrate away.\n\nvar userAgent = navigator.userAgent.toLowerCase();\n\n// Figure out what browser is being used\njQuery.browser = {\n\tversion: (userAgent.match( /.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/ ) || [0,'0'])[1],\n\tsafari: /webkit/.test( userAgent ),\n\topera: /opera/.test( userAgent ),\n\tmsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),\n\tmozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )\n};\n\njQuery.each({\n\tparent: function(elem){return elem.parentNode;},\n\tparents: function(elem){return jQuery.dir(elem,\"parentNode\");},\n\tnext: function(elem){return jQuery.nth(elem,2,\"nextSibling\");},\n\tprev: function(elem){return jQuery.nth(elem,2,\"previousSibling\");},\n\tnextAll: function(elem){return jQuery.dir(elem,\"nextSibling\");},\n\tprevAll: function(elem){return jQuery.dir(elem,\"previousSibling\");},\n\tsiblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},\n\tchildren: function(elem){return jQuery.sibling(elem.firstChild);},\n\tcontents: function(elem){return jQuery.nodeName(elem,\"iframe\")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = jQuery.map( this, fn );\n\n\t\tif ( selector && typeof selector == \"string\" )\n\t\t\tret = jQuery.multiFilter( selector, ret );\n\n\t\treturn this.pushStack( jQuery.unique( ret ), name, selector );\n\t};\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function(name, original){\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector );\n\n\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\tret = ret.concat( elems );\n\t\t}\n\n\t\treturn this.pushStack( ret, name, selector );\n\t};\n});\n\njQuery.each({\n\tremoveAttr: function( name ) {\n\t\tjQuery.attr( this, name, \"\" );\n\t\tif (this.nodeType == 1)\n\t\t\tthis.removeAttribute( name );\n\t},\n\n\taddClass: function( classNames ) {\n\t\tjQuery.className.add( this, classNames );\n\t},\n\n\tremoveClass: function( classNames ) {\n\t\tjQuery.className.remove( this, classNames );\n\t},\n\n\ttoggleClass: function( classNames, state ) {\n\t\tif( typeof state !== \"boolean\" )\n\t\t\tstate = !jQuery.className.has( this, classNames );\n\t\tjQuery.className[ state ? \"add\" : \"remove\" ]( this, classNames );\n\t},\n\n\tremove: function( selector ) {\n\t\tif ( !selector || jQuery.filter( selector, [ this ] ).length ) {\n\t\t\t// Prevent memory leaks\n\t\t\tjQuery( \"*\", this ).add([this]).each(function(){\n\t\t\t\tjQuery.event.remove(this);\n\t\t\t\tjQuery.removeData(this);\n\t\t\t});\n\t\t\tif (this.parentNode)\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t}\n\t},\n\n\tempty: function() {\n\t\t// Remove element nodes and prevent memory leaks\n\t\tjQuery(this).children().remove();\n\n\t\t// Remove any remaining nodes\n\t\twhile ( this.firstChild )\n\t\t\tthis.removeChild( this.firstChild );\n\t}\n}, function(name, fn){\n\tjQuery.fn[ name ] = function(){\n\t\treturn this.each( fn, arguments );\n\t};\n});\n\n// Helper function used by the dimensions and offset modules\nfunction num(elem, prop) {\n\treturn elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;\n}\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\n\tdata: function( elem, name, data ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id )\n\t\t\tid = elem[ expando ] = ++uuid;\n\n\t\t// Only generate the data cache if we're\n\t\t// trying to access or manipulate it\n\t\tif ( name && !jQuery.cache[ id ] )\n\t\t\tjQuery.cache[ id ] = {};\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined )\n\t\t\tjQuery.cache[ id ][ name ] = data;\n\n\t\t// Return the named cache data, or the ID for the element\n\t\treturn name ?\n\t\t\tjQuery.cache[ id ][ name ] :\n\t\t\tid;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( jQuery.cache[ id ] ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete jQuery.cache[ id ][ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tname = \"\";\n\n\t\t\t\tfor ( name in jQuery.cache[ id ] )\n\t\t\t\t\tbreak;\n\n\t\t\t\tif ( !name )\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\t// Clean up the element expando\n\t\t\ttry {\n\t\t\t\tdelete elem[ expando ];\n\t\t\t} catch(e){\n\t\t\t\t// IE has trouble directly removing the expando\n\t\t\t\t// but it's ok with using removeAttribute\n\t\t\t\tif ( elem.removeAttribute )\n\t\t\t\t\telem.removeAttribute( expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete jQuery.cache[ id ];\n\t\t}\n\t},\n\tqueue: function( elem, type, data ) {\n\t\tif ( elem ){\n\t\n\t\t\ttype = (type || \"fx\") + \"queue\";\n\t\n\t\t\tvar q = jQuery.data( elem, type );\n\t\n\t\t\tif ( !q || jQuery.isArray(data) )\n\t\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\t\t\telse if( data )\n\t\t\t\tq.push( data );\n\t\n\t\t}\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ){\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\t\t\n\t\tif( !type || type === \"fx\" )\n\t\t\tfn = queue[0];\n\t\t\t\n\t\tif( fn !== undefined )\n\t\t\tfn.call(elem);\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ){\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length )\n\t\t\t\tdata = jQuery.data( this[0], key );\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function(){\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t},\n\n\tremoveData: function( key ){\n\t\treturn this.each(function(){\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t},\n\tqueue: function(type, data){\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined )\n\t\t\treturn jQuery.queue( this[0], type );\n\n\t\treturn this.each(function(){\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\t\t\t\n\t\t\t if( type == \"fx\" && queue.length == 1 )\n\t\t\t\tqueue[0].call(this);\n\t\t});\n\t},\n\tdequeue: function(type){\n\t\treturn this.each(function(){\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t}\n});/*!\n * Sizzle CSS Selector Engine - v0.9.3\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString;\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 )\n\t\treturn [];\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, check, mode, extra, prune = true;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tchunker.lastIndex = 0;\n\t\n\twhile ( (m = chunker.exec(selector)) !== null ) {\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = RegExp.rightContext;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] )\n\t\t\t\t\tselector += parts.shift();\n\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar ret = seed ?\n\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\tSizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );\n\t\tset = Sizzle.filter( ret.expr, ret.set );\n\n\t\tif ( parts.length > 0 ) {\n\t\t\tcheckSet = makeArray(set);\n\t\t} else {\n\t\t\tprune = false;\n\t\t}\n\n\t\twhile ( parts.length ) {\n\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\tcur = \"\";\n\t\t\t} else {\n\t\t\t\tpop = parts.pop();\n\t\t\t}\n\n\t\t\tif ( pop == null ) {\n\t\t\t\tpop = context;\n\t\t\t}\n\n\t\t\tExpr.relative[ cur ]( checkSet, pop, isXML(context) );\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tthrow \"Syntax error, unrecognized expression: \" + (cur || selector);\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, context, results, seed );\n\n\t\tif ( sortOrder ) {\n\t\t\thasDuplicate = false;\n\t\t\tresults.sort(sortOrder);\n\n\t\t\tif ( hasDuplicate ) {\n\t\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.match[ type ].exec( expr )) ) {\n\t\t\tvar left = RegExp.leftContext;\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.match[ type ].exec( expr )) != null ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item;\n\t\t\t\tanyFound = false;\n\n\t\t\t\tif ( curLoop == result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr == old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tthrow \"Syntax error, unrecognized expression: \" + expr;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*_-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF_-]|\\\\.)+)(?:\\((['\"]*)((?:\\([^\\)]+\\)|[^\\2\\(\\)]*)+)\\2\\))?/\n\t},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag && !isXML ) {\n\t\t\t\tpart = part.toUpperCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part, isXML){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = isXML ? part : part.toUpperCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !part.match(/\\W/) ) {\n\t\t\t\tvar nodeCheck = part = isXML ? part : part.toUpperCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace )\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\tfor ( var i = 0; curLoop[i] === false; i++ ){}\n\t\t\treturn curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] == \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] == \"even\" && \"2n\" || match[2] == \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( match[3].match(chunker).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toUpperCase() === \"BUTTON\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 == i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile (node = node.previousSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( type == 'first') return true;\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile (node = node.nextSibling)  {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first == 1 && last == 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first == 0 ) {\n\t\t\t\t\t\treturn diff == 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first == 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue != check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes );\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.selectNode(a);\n\t\taRange.collapse(true);\n\t\tbRange.selectNode(b);\n\t\tbRange.collapse(true);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"form\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<input name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( !!document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n})();\n\nif ( document.querySelectorAll ) (function(){\n\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t// Safari can't handle uppercase or unicode characters when\n\t// in quirks mode.\n\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\treturn;\n\t}\n\t\n\tSizzle = function(query, context, extra, seed){\n\t\tcontext = context || document;\n\n\t\t// Only use querySelectorAll on non-XML documents\n\t\t// (ID selectors don't work in non-HTML documents)\n\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\ttry {\n\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t} catch(e){}\n\t\t}\n\t\t\n\t\treturn oldSizzle(query, context, extra, seed);\n\t};\n\n\tSizzle.find = oldSizzle.find;\n\tSizzle.filter = oldSizzle.filter;\n\tSizzle.selectors = oldSizzle.selectors;\n\tSizzle.matches = oldSizzle.matches;\n})();\n\nif ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\n\tvar div = document.createElement(\"div\");\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\tif ( div.getElementsByClassName(\"e\").length === 0 )\n\t\treturn;\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 )\n\t\treturn;\n\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ){\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tvar sibDir = dir == \"previousSibling\" && !isXML;\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\tif ( sibDir && elem.nodeType === 1 ) {\n\t\t\t\telem.sizcache = doneName;\n\t\t\t\telem.sizset = i;\n\t\t\t}\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ?  function(a, b){\n\treturn a.compareDocumentPosition(b) & 16;\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\treturn elem.nodeType === 9 && elem.documentElement.nodeName !== \"HTML\" ||\n\t\t!!elem.ownerDocument && isXML( elem.ownerDocument );\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.filter = Sizzle.filter;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\n\nSizzle.selectors.filters.hidden = function(elem){\n\treturn elem.offsetWidth === 0 || elem.offsetHeight === 0;\n};\n\nSizzle.selectors.filters.visible = function(elem){\n\treturn elem.offsetWidth > 0 || elem.offsetHeight > 0;\n};\n\nSizzle.selectors.filters.animated = function(elem){\n\treturn jQuery.grep(jQuery.timers, function(fn){\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\njQuery.multiFilter = function( expr, elems, not ) {\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn Sizzle.matches(expr, elems);\n};\n\njQuery.dir = function( elem, dir ){\n\tvar matched = [], cur = elem[dir];\n\twhile ( cur && cur != document ) {\n\t\tif ( cur.nodeType == 1 )\n\t\t\tmatched.push( cur );\n\t\tcur = cur[dir];\n\t}\n\treturn matched;\n};\n\njQuery.nth = function(cur, result, dir, elem){\n\tresult = result || 1;\n\tvar num = 0;\n\n\tfor ( ; cur; cur = cur[dir] )\n\t\tif ( cur.nodeType == 1 && ++num == result )\n\t\t\tbreak;\n\n\treturn cur;\n};\n\njQuery.sibling = function(n, elem){\n\tvar r = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType == 1 && n != elem )\n\t\t\tr.push( n );\n\t}\n\n\treturn r;\n};\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function(elem, types, handler, data) {\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && elem != window )\n\t\t\telem = window;\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid )\n\t\t\thandler.guid = this.guid++;\n\n\t\t// if data is passed, bind to handler\n\t\tif ( data !== undefined ) {\n\t\t\t// Create temporary function pointer to original handler\n\t\t\tvar fn = handler;\n\n\t\t\t// Create unique handler function, wrapped around original handler\n\t\t\thandler = this.proxy( fn );\n\n\t\t\t// Store data in unique handler\n\t\t\thandler.data = data;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar events = jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {}),\n\t\t\thandle = jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function(){\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply(arguments.callee.elem, arguments) :\n\t\t\t\t\tundefined;\n\t\t\t});\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native\n\t\t// event in IE.\n\t\thandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\tjQuery.each(types.split(/\\s+/), function(index, type) {\n\t\t\t// Namespaced event handlers\n\t\t\tvar namespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\thandler.type = namespaces.slice().sort().join(\".\");\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[type];\n\t\t\t\n\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\tjQuery.event.specialAll[type].setup.call(elem, data, namespaces);\n\n\t\t\t// Init the event handler queue\n\t\t\tif (!handlers) {\n\t\t\t\thandlers = events[type] = {};\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif (elem.addEventListener)\n\t\t\t\t\t\telem.addEventListener(type, handle, false);\n\t\t\t\t\telse if (elem.attachEvent)\n\t\t\t\t\t\telem.attachEvent(\"on\" + type, handle);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers[handler.guid] = handler;\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[type] = true;\n\t\t});\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tguid: 1,\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function(elem, types, handler) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\treturn;\n\n\t\tvar events = jQuery.data(elem, \"events\"), ret, index;\n\n\t\tif ( events ) {\n\t\t\t// Unbind all events for the element\n\t\t\tif ( types === undefined || (typeof types === \"string\" && types.charAt(0) == \".\") )\n\t\t\t\tfor ( var type in events )\n\t\t\t\t\tthis.remove( elem, type + (types || \"\") );\n\t\t\telse {\n\t\t\t\t// types is actually an event object here\n\t\t\t\tif ( types.type ) {\n\t\t\t\t\thandler = types.handler;\n\t\t\t\t\ttypes = types.type;\n\t\t\t\t}\n\n\t\t\t\t// Handle multiple events seperated by a space\n\t\t\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\t\t\tjQuery.each(types.split(/\\s+/), function(index, type){\n\t\t\t\t\t// Namespaced event handlers\n\t\t\t\t\tvar namespaces = type.split(\".\");\n\t\t\t\t\ttype = namespaces.shift();\n\t\t\t\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\t\t\t\tif ( events[type] ) {\n\t\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\t\tif ( handler )\n\t\t\t\t\t\t\tdelete events[type][handler.guid];\n\n\t\t\t\t\t\t// remove all handlers for the given type\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tfor ( var handle in events[type] )\n\t\t\t\t\t\t\t\t// Handle the removal of namespaced events\n\t\t\t\t\t\t\t\tif ( namespace.test(events[type][handle].type) )\n\t\t\t\t\t\t\t\t\tdelete events[type][handle];\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tif ( jQuery.event.specialAll[type] )\n\t\t\t\t\t\t\tjQuery.event.specialAll[type].teardown.call(elem, namespaces);\n\n\t\t\t\t\t\t// remove generic event handler if no more handlers exist\n\t\t\t\t\t\tfor ( ret in events[type] ) break;\n\t\t\t\t\t\tif ( !ret ) {\n\t\t\t\t\t\t\tif ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {\n\t\t\t\t\t\t\t\tif (elem.removeEventListener)\n\t\t\t\t\t\t\t\t\telem.removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n\t\t\t\t\t\t\t\telse if (elem.detachEvent)\n\t\t\t\t\t\t\t\t\telem.detachEvent(\"on\" + type, jQuery.data(elem, \"handle\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tret = null;\n\t\t\t\t\t\t\tdelete events[type];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Remove the expando if it's no longer used\n\t\t\tfor ( ret in events ) break;\n\t\t\tif ( !ret ) {\n\t\t\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\t\t\tif ( handle ) handle.elem = null;\n\t\t\t\tjQuery.removeData( elem, \"events\" );\n\t\t\t\tjQuery.removeData( elem, \"handle\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem, bubbling ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event;\n\n\t\tif( !bubbling ){\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( this.global[type] )\n\t\t\t\t\tjQuery.each( jQuery.cache, function(){\n\t\t\t\t\t\tif ( this.events && this.events[type] )\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )\n\t\t\t\treturn undefined;\n\t\t\t\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\t\t\t\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray(data);\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data(elem, \"handle\");\n\t\tif ( handle )\n\t\t\thandle.apply( elem, data );\n\n\t\t// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)\n\t\tif ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == \"click\")) && elem[\"on\"+type] && elem[\"on\"+type].apply( elem, data ) === false )\n\t\t\tevent.result = false;\n\n\t\t// Trigger the native events (except for clicks on links)\n\t\tif ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == \"click\") ) {\n\t\t\tthis.triggered = true;\n\t\t\ttry {\n\t\t\t\telem[ type ]();\n\t\t\t// prevent IE from throwing an error for some hidden elements\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\tthis.triggered = false;\n\n\t\tif ( !event.isPropagationStopped() ) {\n\t\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\t\t\tif ( parent )\n\t\t\t\tjQuery.event.trigger(event, data, parent, true);\n\t\t}\n\t},\n\n\thandle: function(event) {\n\t\t// returned undefined or false\n\t\tvar all, handlers;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\t\t\n\t\t// Namespaced event handlers\n\t\tvar namespaces = event.type.split(\".\");\n\t\tevent.type = namespaces.shift();\n\n\t\t// Cache this now, all = true means, any handler\n\t\tall = !namespaces.length && !event.exclusive;\n\t\t\n\t\tvar namespace = RegExp(\"(^|\\\\.)\" + namespaces.slice().sort().join(\".*\\\\.\") + \"(\\\\.|$)\");\n\n\t\thandlers = ( jQuery.data(this, \"events\") || {} )[event.type];\n\n\t\tfor ( var j in handlers ) {\n\t\t\tvar handler = handlers[j];\n\n\t\t\t// Filter the functions by class\n\t\t\tif ( all || namespace.test(handler.type) ) {\n\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t// So that we can later remove it\n\t\t\t\tevent.handler = handler;\n\t\t\t\tevent.data = handler.data;\n\n\t\t\t\tvar ret = handler.apply(this, arguments);\n\n\t\t\t\tif( ret !== undefined ){\n\t\t\t\t\tevent.result = ret;\n\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif( event.isImmediatePropagationStopped() )\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function(event) {\n\t\tif ( event[expando] )\n\t\t\treturn event;\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ){\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target )\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType == 3 )\n\t\t\tevent.target = event.target.parentNode;\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement )\n\t\t\tevent.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )\n\t\t\tevent.which = event.charCode || event.keyCode;\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey )\n\t\t\tevent.metaKey = event.ctrlKey;\n\n\t\t// Add which for click: 1 == left; 2 == middle; 3 == right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button )\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\n\t\treturn event;\n\t},\n\n\tproxy: function( fn, proxy ){\n\t\tproxy = proxy || function(){ return fn.apply(this, arguments); };\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: bindReady,\n\t\t\tteardown: function() {}\n\t\t}\n\t},\n\t\n\tspecialAll: {\n\t\tlive: {\n\t\t\tsetup: function( selector, namespaces ){\n\t\t\t\tjQuery.event.add( this, namespaces[0], liveHandler );\n\t\t\t},\n\t\t\tteardown:  function( namespaces ){\n\t\t\t\tif ( namespaces.length ) {\n\t\t\t\t\tvar remove = 0, name = RegExp(\"(^|\\\\.)\" + namespaces[0] + \"(\\\\.|$)\");\n\t\t\t\t\t\n\t\t\t\t\tjQuery.each( (jQuery.data(this, \"events\").live || {}), function(){\n\t\t\t\t\t\tif ( name.test(this.type) )\n\t\t\t\t\t\t\tremove++;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif ( remove < 1 )\n\t\t\t\t\t\tjQuery.event.remove( this, namespaces[0], liveHandler );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.Event = function( src ){\n\t// Allow instantiation without the 'new' keyword\n\tif( !this.preventDefault )\n\t\treturn new jQuery.Event(src);\n\t\n\t// Event object\n\tif( src && src.type ){\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t}else\n\t\tthis.type = src;\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\t\n\t// Mark it as fixed\n\tthis[expando] = true;\n};\n\nfunction returnFalse(){\n\treturn false;\n}\nfunction returnTrue(){\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if preventDefault exists run it on the original event\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif( !e )\n\t\t\treturn;\n\t\t// if stopPropagation exists run it on the original event\n\t\tif (e.stopPropagation)\n\t\t\te.stopPropagation();\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation:function(){\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function(event) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\t// Traverse up the tree\n\twhile ( parent && parent != this )\n\t\ttry { parent = parent.parentNode; }\n\t\tcatch(e) { parent = this; }\n\t\n\tif( parent != this ){\n\t\t// set the correct event type\n\t\tevent.type = event.data;\n\t\t// handle event if we actually just moused on to a non sub-element\n\t\tjQuery.event.handle.apply( this, arguments );\n\t}\n};\n\t\njQuery.each({ \n\tmouseover: 'mouseenter', \n\tmouseout: 'mouseleave'\n}, function( orig, fix ){\n\tjQuery.event.special[ fix ] = {\n\t\tsetup: function(){\n\t\t\tjQuery.event.add( this, orig, withinElement, fix );\n\t\t},\n\t\tteardown: function(){\n\t\t\tjQuery.event.remove( this, orig, withinElement );\n\t\t}\n\t};\t\t\t   \n});\n\njQuery.fn.extend({\n\tbind: function( type, data, fn ) {\n\t\treturn type == \"unload\" ? this.one(type, data, fn) : this.each(function(){\n\t\t\tjQuery.event.add( this, type, fn || data, fn && data );\n\t\t});\n\t},\n\n\tone: function( type, data, fn ) {\n\t\tvar one = jQuery.event.proxy( fn || data, function(event) {\n\t\t\tjQuery(this).unbind(event, one);\n\t\t\treturn (fn || data).apply( this, arguments );\n\t\t});\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.add( this, type, one, fn && data);\n\t\t});\n\t},\n\n\tunbind: function( type, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.remove( this, type, fn );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif( this[0] ){\n\t\t\tvar event = jQuery.Event(type);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\t\t\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile( i < args.length )\n\t\t\tjQuery.event.proxy( fn, args[i++] );\n\n\t\treturn this.click( jQuery.event.proxy( fn, function(event) {\n\t\t\t// Figure out which function to execute\n\t\t\tthis.lastToggle = ( this.lastToggle || 0 ) % i;\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ this.lastToggle++ ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function(fnOver, fnOut) {\n\t\treturn this.mouseenter(fnOver).mouseleave(fnOut);\n\t},\n\n\tready: function(fn) {\n\t\t// Attach the listeners\n\t\tbindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady )\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\telse\n\t\t\t// Add the function to the wait list\n\t\t\tjQuery.readyList.push( fn );\n\n\t\treturn this;\n\t},\n\t\n\tlive: function( type, fn ){\n\t\tvar proxy = jQuery.event.proxy( fn );\n\t\tproxy.guid += this.selector + type;\n\n\t\tjQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );\n\n\t\treturn this;\n\t},\n\t\n\tdie: function( type, fn ){\n\t\tjQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ){\n\tvar check = RegExp(\"(^|\\\\.)\" + event.type + \"(\\\\.|$)\"),\n\t\tstop = true,\n\t\telems = [];\n\n\tjQuery.each(jQuery.data(this, \"events\").live || [], function(i, fn){\n\t\tif ( check.test(fn.type) ) {\n\t\t\tvar elem = jQuery(event.target).closest(fn.data)[0];\n\t\t\tif ( elem )\n\t\t\t\telems.push({ elem: elem, fn: fn });\n\t\t}\n\t});\n\n\telems.sort(function(a,b) {\n\t\treturn jQuery.data(a.elem, \"closest\") - jQuery.data(b.elem, \"closest\");\n\t});\n\t\n\tjQuery.each(elems, function(){\n\t\tif ( this.fn.call(this.elem, event, this.fn.data) === false )\n\t\t\treturn (stop = false);\n\t});\n\n\treturn stop;\n}\n\nfunction liveConvert(type, selector){\n\treturn [\"live\", type, selector.replace(/\\./g, \"`\").replace(/ /g, \"|\")].join(\".\");\n}\n\njQuery.extend({\n\tisReady: false,\n\treadyList: [],\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( jQuery.readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tjQuery.each( jQuery.readyList, function(){\n\t\t\t\t\tthis.call( document, jQuery );\n\t\t\t\t});\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\tjQuery.readyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tjQuery(document).triggerHandler(\"ready\");\n\t\t}\n\t}\n});\n\nvar readyBound = false;\n\nfunction bindReady(){\n\tif ( readyBound ) return;\n\treadyBound = true;\n\n\t// Mozilla, Opera and webkit nightlies currently support this event\n\tif ( document.addEventListener ) {\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", function(){\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", arguments.callee, false );\n\t\t\tjQuery.ready();\n\t\t}, false );\n\n\t// If IE event model is used\n\t} else if ( document.attachEvent ) {\n\t\t// ensure firing before onload,\n\t\t// maybe late but safe also for iframes\n\t\tdocument.attachEvent(\"onreadystatechange\", function(){\n\t\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t\tdocument.detachEvent( \"onreadystatechange\", arguments.callee );\n\t\t\t\tjQuery.ready();\n\t\t\t}\n\t\t});\n\n\t\t// If IE and not an iframe\n\t\t// continually check to see if the document is ready\n\t\tif ( document.documentElement.doScroll && window == window.top ) (function(){\n\t\t\tif ( jQuery.isReady ) return;\n\n\t\t\ttry {\n\t\t\t\t// If IE is used, use the trick by Diego Perini\n\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\tdocument.documentElement.doScroll(\"left\");\n\t\t\t} catch( error ) {\n\t\t\t\tsetTimeout( arguments.callee, 0 );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// and execute any waiting functions\n\t\t\tjQuery.ready();\n\t\t})();\n\t}\n\n\t// A fallback to window.onload, that will always work\n\tjQuery.event.add( window, \"load\", jQuery.ready );\n}\n\njQuery.each( (\"blur,focus,load,resize,scroll,unload,click,dblclick,\" +\n\t\"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,\" +\n\t\"change,select,submit,keydown,keypress,keyup,error\").split(\",\"), function(i, name){\n\n\t// Handle event binding\n\tjQuery.fn[name] = function(fn){\n\t\treturn fn ? this.bind(name, fn) : this.trigger(name);\n\t};\n});\n\n// Prevent memory leaks in IE\n// And prevent errors on refresh with events like mouseover in other browsers\n// Window isn't included so as not to unbind existing unload events\njQuery( window ).bind( 'unload', function(){ \n\tfor ( var id in jQuery.cache )\n\t\t// Skip the window\n\t\tif ( id != 1 && jQuery.cache[ id ].handle )\n\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n}); \n(function(){\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = '   <link/><table></table><a href=\"/a\" style=\"color:red;float:left;opacity:.5;\">a</a><select><option>text</option></select><object><param/></object>';\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType == 3,\n\t\t\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\t\t\n\t\t// Make sure that you can get all elements in an <object> element\n\t\t// IE 7 always returns no results\n\t\tobjectAll: !!div.getElementsByTagName(\"object\")[0]\n\t\t\t.getElementsByTagName(\"*\").length,\n\t\t\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\t\t\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\t\t\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\t\t\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\topacity: a.style.opacity === \"0.5\",\n\t\t\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Will be defined later\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\t\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e){}\n\n\troot.insertBefore( script, root.firstChild );\n\t\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function(){\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", arguments.callee);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function(){\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\t});\n})();\n\nvar styleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\";\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\t\"float\": styleFloat,\n\tcssFloat: styleFloat,\n\tstyleFloat: styleFloat,\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\ttabindex: \"tabIndex\"\n};\njQuery.fn.extend({\n\t// Keep a copy of the old load\n\t_load: jQuery.fn.load,\n\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" )\n\t\t\treturn this._load( url );\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params )\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function(res, status){\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status == \"success\" || status == \"notmodified\" )\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div/>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(/<script(.|\\s)*?\\/script>/g, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\n\t\t\t\tif( callback )\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || /select|textarea/i.test(this.nodeName) ||\n\t\t\t\t\t/text|hidden|password|search/i.test(this.type));\n\t\t})\n\t\t.map(function(i, elem){\n\t\t\tvar val = jQuery(this).val();\n\t\t\treturn val == null ? null :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function(val, i){\n\t\t\t\t\t\treturn {name: elem.name, value: val};\n\t\t\t\t\t}) :\n\t\t\t\t\t{name: elem.name, value: val};\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend\".split(\",\"), function(i,o){\n\tjQuery.fn[o] = function(f){\n\t\treturn this.bind(o, f);\n\t};\n});\n\nvar jsc = now();\n\njQuery.extend({\n  \n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was ommited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr:function(){\n\t\t\treturn window.ActiveXObject ? new ActiveXObject(\"Microsoft.XMLHTTP\") : new XMLHttpRequest();\n\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\n\tajax: function( s ) {\n\t\t// Extend the settings, but re-extend 's' so that it can be\n\t\t// checked again later (in the test suite, specifically)\n\t\ts = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));\n\n\t\tvar jsonp, jsre = /=\\?(&|$)/g, status, data,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" )\n\t\t\ts.data = jQuery.param(s.data);\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType == \"jsonp\" ) {\n\t\t\tif ( type == \"GET\" ) {\n\t\t\t\tif ( !s.url.match(jsre) )\n\t\t\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t} else if ( !s.data || !s.data.match(jsre) )\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType == \"json\" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {\n\t\t\tjsonp = \"jsonp\" + jsc++;\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data )\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = function(tmp){\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\ttry{ delete window[ jsonp ]; } catch(e){}\n\t\t\t\tif ( head )\n\t\t\t\t\thead.removeChild( script );\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType == \"script\" && s.cache == null )\n\t\t\ts.cache = false;\n\n\t\tif ( s.cache === false && type == \"GET\" ) {\n\t\t\tvar ts = now();\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(/(\\?|&)_=.*?(&|$)/, \"$1_=\" + ts + \"$2\");\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret == s.url) ? (s.url.match(/\\?/) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type == \"GET\" ) {\n\t\t\ts.url += (s.url.match(/\\?/) ? \"&\" : \"?\") + s.data;\n\n\t\t\t// IE likes to send both get and post data, prevent this\n\t\t\ts.data = null;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ )\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = /^(\\w+:)?\\/\\/([^\\/?#]+)/.exec( s.url );\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType == \"script\" && type == \"GET\" && parts\n\t\t\t&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){\n\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif (s.scriptCharset)\n\t\t\t\tscript.charset = s.scriptCharset;\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function(){\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState == \"loaded\" || this.readyState == \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thead.appendChild(script);\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif( s.username )\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\telse\n\t\t\txhr.open(type, s.url, s.async);\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data )\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\n\t\t\t// Set the If-Modified-Since header, if ifModified mode.\n\t\t\tif ( s.ifModified )\n\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\",\n\t\t\t\t\tjQuery.lastModified[s.url] || \"Thu, 01 Jan 1970 00:00:00 GMT\" );\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e){}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend(xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger(\"ajaxSend\", [xhr, s]);\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = function(isTimeout){\n\t\t\t// The request was aborted, clear the interval and decrement jQuery.active\n\t\t\tif (xhr.readyState == 0) {\n\t\t\t\tif (ival) {\n\t\t\t\t\t// clear poll interval\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\n\t\t\t\t// clear poll interval\n\t\t\t\tif (ival) {\n\t\t\t\t\tclearInterval(ival);\n\t\t\t\t\tival = null;\n\t\t\t\t}\n\n\t\t\t\tstatus = isTimeout == \"timeout\" ? \"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ? \"error\" :\n\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ? \"notmodified\" :\n\t\t\t\t\t\"success\";\n\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status == \"success\" ) {\n\t\t\t\t\t// Cache Last-Modified header, if ifModified mode.\n\t\t\t\t\tvar modRes;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodRes = xhr.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\t} catch(e) {} // swallow exception thrown by FF if header is not available\n\n\t\t\t\t\tif ( s.ifModified && modRes )\n\t\t\t\t\t\tjQuery.lastModified[s.url] = modRes;\n\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp )\n\t\t\t\t\t\tsuccess();\n\t\t\t\t} else\n\t\t\t\t\tjQuery.handleError(s, xhr, status);\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout )\n\t\t\t\t\txhr.abort();\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async )\n\t\t\t\t\txhr = null;\n\t\t\t}\n\t\t};\n\n\t\tif ( s.async ) {\n\t\t\t// don't attach the handler to the request, just poll it instead\n\t\t\tvar ival = setInterval(onreadystatechange, 13);\n\n\t\t\t// Timeout checker\n\t\t\tif ( s.timeout > 0 )\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t// Check to see if the request is still happening\n\t\t\t\t\tif ( xhr && !requestDone )\n\t\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send(s.data);\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async )\n\t\t\tonreadystatechange();\n\n\t\tfunction success(){\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success )\n\t\t\t\ts.success( data, status );\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxSuccess\", [xhr, s] );\n\t\t}\n\n\t\tfunction complete(){\n\t\t\t// Process result\n\t\t\tif ( s.complete )\n\t\t\t\ts.complete(xhr, status);\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global )\n\t\t\t\tjQuery.event.trigger( \"ajaxComplete\", [xhr, s] );\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active )\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) s.error( xhr, status, e );\n\n\t\t// Fire the global callback\n\t\tif ( s.global )\n\t\t\tjQuery.event.trigger( \"ajaxError\", [xhr, s, e] );\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol == \"file:\" ||\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\ttry {\n\t\t\tvar xhrRes = xhr.getResponseHeader(\"Last-Modified\");\n\n\t\t\t// Firefox always returns 200. check Last-Modified date\n\t\t\treturn xhr.status == 304 || xhrRes == jQuery.lastModified[url];\n\t\t} catch(e){}\n\t\treturn false;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\"),\n\t\t\txml = type == \"xml\" || !type && ct && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.tagName == \"parsererror\" )\n\t\t\tthrow \"parsererror\";\n\t\t\t\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s != null is checked to keep backwards compatibility\n\t\tif( s && s.dataFilter )\n\t\t\tdata = s.dataFilter( data, type );\n\n\t\t// The filter can actually parse the response\n\t\tif( typeof data === \"string\" ){\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\tif ( type == \"script\" )\n\t\t\t\tjQuery.globalEval( data );\n\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type == \"json\" )\n\t\t\t\tdata = window[\"eval\"](\"(\" + data + \")\");\n\t\t}\n\t\t\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a ) {\n\t\tvar s = [ ];\n\n\t\tfunction add( key, value ){\n\t\t\ts[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n\t\t};\n\n\t\t// If an array was passed in, assume that it is an array\n\t\t// of form elements\n\t\tif ( jQuery.isArray(a) || a.jquery )\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function(){\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\n\t\t// Otherwise, assume that it's an object of key/value pairs\n\t\telse\n\t\t\t// Serialize the key/values\n\t\t\tfor ( var j in a )\n\t\t\t\t// If the value is an array then the key names need to be repeated\n\t\t\t\tif ( jQuery.isArray(a[j]) )\n\t\t\t\t\tjQuery.each( a[j], function(){\n\t\t\t\t\t\tadd( j, this );\n\t\t\t\t\t});\n\t\t\t\telse\n\t\t\t\t\tadd( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(/%20/g, \"+\");\n\t}\n\n});\nvar elemdisplay = {},\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\nfunction genFx( type, num ){\n\tvar obj = {};\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){\n\t\tobj[ this ] = type;\n\t});\n\treturn obj;\n}\n\njQuery.fn.extend({\n\tshow: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\t\n\t\t\t\tthis[i].style.display = old || \"\";\n\t\t\t\t\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar tagName = this[i].tagName, display;\n\t\t\t\t\t\n\t\t\t\t\tif ( elemdisplay[ tagName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ tagName ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + tagName + \" />\").appendTo(\"body\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\t\t\t\t\t\tif ( display === \"none\" )\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t\t\n\t\t\t\t\t\telemdisplay[ tagName ] = display;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = jQuery.data(this[i], \"olddisplay\") || \"\";\n\t\t\t}\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function(speed,callback){\n\t\tif ( speed ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" )\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ){\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ){\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\treturn jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?\n\t\t\tthis._toggle.apply( this, arguments ) :\n\t\t\tfn == null || bool ?\n\t\t\t\tthis.each(function(){\n\t\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t\t}) :\n\t\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t},\n\n\tfadeTo: function(speed,to,callback){\n\t\treturn this.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function(){\n\t\t\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType == 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\t\n\t\t\tfor ( p in prop ) {\n\t\t\t\tif ( prop[p] == \"hide\" && hidden || prop[p] == \"show\" && !hidden )\n\t\t\t\t\treturn opt.complete.call(this);\n\n\t\t\t\tif ( ( p == \"height\" || p == \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null )\n\t\t\t\tthis.style.overflow = \"hidden\";\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function(name, val){\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( /toggle|show|hide/.test(val) )\n\t\t\t\t\te[ val == \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\t\t\t\telse {\n\t\t\t\t\tvar parts = val.toString().match(/^([+-]=)?([\\d+-.]+)(.*)$/),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat(parts[2]),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit != \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] )\n\t\t\t\t\t\t\tend = ((parts[1] == \"-=\" ? -1 : 1) * end) + start;\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\t\t\t\t\t} else\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function(clearQueue, gotoEnd){\n\t\tvar timers = jQuery.timers;\n\n\t\tif (clearQueue)\n\t\t\tthis.queue([]);\n\n\t\tthis.each(function(){\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- )\n\t\t\t\tif ( timers[i].elem == this ) {\n\t\t\t\t\tif (gotoEnd)\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif (!gotoEnd)\n\t\t\tthis.dequeue();\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ){\n\tjQuery.fn[ name ] = function( speed, callback ){\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\n\tspeed: function(speed, easing, fn) {\n\t\tvar opt = typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function(){\n\t\t\tif ( opt.queue !== false )\n\t\t\t\tjQuery(this).dequeue();\n\t\t\tif ( jQuery.isFunction( opt.old ) )\n\t\t\t\topt.old.call( this );\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ){\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig )\n\t\t\toptions.orig = {};\n\t}\n\n});\n\njQuery.fx.prototype = {\n\n\t// Simple function for setting a style value\n\tupdate: function(){\n\t\tif ( this.options.step )\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop == \"height\" || this.prop == \"width\" ) && this.elem.style )\n\t\t\tthis.elem.style.display = \"block\";\n\t},\n\n\t// Get the current size\n\tcur: function(force){\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )\n\t\t\treturn this.elem[ this.prop ];\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function(from, to, unit){\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t(gotoEnd){\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(function(){\n\t\t\t\tvar timers = jQuery.timers;\n\n\t\t\t\tfor ( var i = 0; i < timers.length; i++ )\n\t\t\t\t\tif ( !timers[i]() )\n\t\t\t\t\t\ttimers.splice(i--, 1);\n\n\t\t\t\tif ( !timers.length ) {\n\t\t\t\t\tclearInterval( timerId );\n\t\t\t\t\ttimerId = undefined;\n\t\t\t\t}\n\t\t\t}, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop == \"width\" || this.prop == \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery(this.elem).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function(){\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function(gotoEnd){\n\t\tvar t = now();\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tvar done = true;\n\t\t\tfor ( var i in this.options.curAnim )\n\t\t\t\tif ( this.options.curAnim[i] !== true )\n\t\t\t\t\tdone = false;\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tthis.elem.style.display = this.options.display;\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") == \"none\" )\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide )\n\t\t\t\t\tjQuery(this.elem).hide();\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show )\n\t\t\t\t\tfor ( var p in this.options.curAnim )\n\t\t\t\t\t\tjQuery.attr(this.elem.style, p, this.options.orig[p]);\n\t\t\t\t\t\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tthis.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\")](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n\n};\n\njQuery.extend( jQuery.fx, {\n\tspeeds:{\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\tstep: {\n\n\t\topacity: function(fx){\n\t\t\tjQuery.attr(fx.elem.style, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function(fx){\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null )\n\t\t\t\tfx.elem.style[ fx.prop ] = fx.now + fx.unit;\n\t\t\telse\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t}\n\t}\n});\nif ( document.documentElement[\"getBoundingClientRect\"] )\n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tvar box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\t\treturn { top: top, left: left };\n\t};\nelse \n\tjQuery.fn.offset = function() {\n\t\tif ( !this[0] ) return { top: 0, left: 0 };\n\t\tif ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\n\t\tvar elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView.getComputedStyle(elem, null),\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tcomputedStyle = defaultView.getComputedStyle(elem, null);\n\t\t\ttop -= elem.scrollTop, left -= elem.scrollLeft;\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop += elem.offsetTop, left += elem.offsetLeft;\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )\n\t\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" )\n\t\t\t\ttop  += parseInt( computedStyle.borderTopWidth,  10) || 0,\n\t\t\t\tleft += parseInt( computedStyle.borderLeftWidth, 10) || 0;\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" )\n\t\t\ttop  += body.offsetTop,\n\t\t\tleft += body.offsetLeft;\n\n\t\tif ( prevComputedStyle.position === \"fixed\" )\n\t\t\ttop  += Math.max(docElem.scrollTop, body.scrollTop),\n\t\t\tleft += Math.max(docElem.scrollLeft, body.scrollLeft);\n\n\t\treturn { top: top, left: left };\n\t};\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tif ( this.initialized ) return;\n\t\tvar body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,\n\t\t\thtml = '<div style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\"><div></div></div><table style=\"position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;\" cellpadding=\"0\" cellspacing=\"0\"><tr><td></td></tr></table>';\n\n\t\trules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };\n\t\tfor ( prop in rules ) container.style[prop] = rules[prop];\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore(container, body.firstChild);\n\t\tinnerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tinnerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tbody.style.marginTop = '1px';\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);\n\t\tbody.style.marginTop = bodyMarginTop;\n\n\t\tbody.removeChild(container);\n\t\tthis.initialized = true;\n\t},\n\n\tbodyOffset: function(body) {\n\t\tjQuery.offset.initialized || jQuery.offset.initialize();\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset )\n\t\t\ttop  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,\n\t\t\tleft += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;\n\t\treturn { top: top, left: left };\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tvar left = 0, top = 0, results;\n\n\t\tif ( this[0] ) {\n\t\t\t// Get *real* offsetParent\n\t\t\tvar offsetParent = this.offsetParent(),\n\n\t\t\t// Get correct offsets\n\t\t\toffset       = this.offset(),\n\t\t\tparentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t\t// Subtract element margins\n\t\t\t// note: when an element has margin: auto the offsetLeft and marginLeft \n\t\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\t\toffset.top  -= num( this, 'marginTop'  );\n\t\t\toffset.left -= num( this, 'marginLeft' );\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top  += num( offsetParent, 'borderTopWidth'  );\n\t\t\tparentOffset.left += num( offsetParent, 'borderLeftWidth' );\n\n\t\t\t// Subtract the two offsets\n\t\t\tresults = {\n\t\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\t\tleft: offset.left - parentOffset.left\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t},\n\n\toffsetParent: function() {\n\t\tvar offsetParent = this[0].offsetParent || document.body;\n\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )\n\t\t\toffsetParent = offsetParent.offsetParent;\n\t\treturn jQuery(offsetParent);\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( ['Left', 'Top'], function(i, name) {\n\tvar method = 'scroll' + name;\n\t\n\tjQuery.fn[ method ] = function(val) {\n\t\tif (!this[0]) return null;\n\n\t\treturn val !== undefined ?\n\n\t\t\t// Set the scroll offset\n\t\t\tthis.each(function() {\n\t\t\t\tthis == window || this == document ?\n\t\t\t\t\twindow.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(window).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(window).scrollTop()\n\t\t\t\t\t) :\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t}) :\n\n\t\t\t// Return the scroll offset\n\t\t\tthis[0] == window || this[0] == document ?\n\t\t\t\tself[ i ? 'pageYOffset' : 'pageXOffset' ] ||\n\t\t\t\t\tjQuery.boxModel && document.documentElement[ method ] ||\n\t\t\t\t\tdocument.body[ method ] :\n\t\t\t\tthis[0][ method ];\n\t};\n});\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function(i, name){\n\n\tvar tl = i ? \"Left\"  : \"Top\",  // top or left\n\t\tbr = i ? \"Right\" : \"Bottom\", // bottom or right\n\t\tlower = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function(){\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function(margin) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], lower, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\t\n\tvar type = name.toLowerCase();\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\treturn this[0] == window ?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\tdocument.compatMode == \"CSS1Compat\" && document.documentElement[ \"client\" + name ] ||\n\t\t\tdocument.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\tthis[0] == document ?\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\tdocument.documentElement[\"client\" + name],\n\t\t\t\t\tdocument.body[\"scroll\" + name], document.documentElement[\"scroll\" + name],\n\t\t\t\t\tdocument.body[\"offset\" + name], document.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\t(this.length ? jQuery.css( this[0], type ) : null) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n})(); "
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.metadata.js",
    "content": "/*\n * Metadata - jQuery plugin for parsing metadata from elements\n *\n * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n *\n * Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $\n *\n */\n\n/**\n * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\n * in the JSON will become a property of the element itself.\n *\n * There are three supported types of metadata storage:\n *\n *   attr:  Inside an attribute. The name parameter indicates *which* attribute.\n *          \n *   class: Inside the class attribute, wrapped in curly braces: { }\n *   \n *   elem:  Inside a child element (e.g. a script tag). The\n *          name parameter indicates *which* element.\n *          \n * The metadata for an element is loaded the first time the element is accessed via jQuery.\n *\n * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\n * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\n * \n * @name $.metadata.setType\n *\n * @example <p id=\"one\" class=\"some_class {item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"class\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from the class attribute\n * \n * @example <p id=\"one\" class=\"some_class\" data=\"{item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"attr\", \"data\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a \"data\" attribute\n * \n * @example <p id=\"one\" class=\"some_class\"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>\n * @before $.metadata.setType(\"elem\", \"script\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a nested script element\n * \n * @param String type The encoding type\n * @param String name The name of the attribute to be used to get metadata (optional)\n * @cat Plugins/Metadata\n * @descr Sets the type of encoding to be used when loading metadata for the first time\n * @type undefined\n * @see metadata()\n */\n\n(function($) {\n\n$.extend({\n\tmetadata : {\n\t\tdefaults : {\n\t\t\ttype: 'class',\n\t\t\tname: 'metadata',\n\t\t\tcre: /({.*})/,\n\t\t\tsingle: 'metadata'\n\t\t},\n\t\tsetType: function( type, name ){\n\t\t\tthis.defaults.type = type;\n\t\t\tthis.defaults.name = name;\n\t\t},\n\t\tget: function( elem, opts ){\n\t\t\tvar settings = $.extend({},this.defaults,opts);\n\t\t\t// check for empty string in single property\n\t\t\tif ( !settings.single.length ) settings.single = 'metadata';\n\t\t\t\n\t\t\tvar data = $.data(elem, settings.single);\n\t\t\t// returned cached data if it already exists\n\t\t\tif ( data ) return data;\n\t\t\t\n\t\t\tdata = \"{}\";\n\t\t\t\n\t\t\tif ( settings.type == \"class\" ) {\n\t\t\t\tvar m = settings.cre.exec( elem.className );\n\t\t\t\tif ( m )\n\t\t\t\t\tdata = m[1];\n\t\t\t} else if ( settings.type == \"elem\" ) {\n\t\t\t\tif( !elem.getElementsByTagName )\n\t\t\t\t\treturn undefined;\n\t\t\t\tvar e = elem.getElementsByTagName(settings.name);\n\t\t\t\tif ( e.length )\n\t\t\t\t\tdata = $.trim(e[0].innerHTML);\n\t\t\t} else if ( elem.getAttribute != undefined ) {\n\t\t\t\tvar attr = elem.getAttribute( settings.name );\n\t\t\t\tif ( attr )\n\t\t\t\t\tdata = attr;\n\t\t\t}\n\t\t\t\n\t\t\tif ( data.indexOf( '{' ) <0 )\n\t\t\tdata = \"{\" + data + \"}\";\n\t\t\t\n\t\t\tdata = eval(\"(\" + data + \")\");\n\t\t\t\n\t\t\t$.data( elem, settings.single, data );\n\t\t\treturn data;\n\t\t}\n\t}\n});\n\n/**\n * Returns the metadata object for the first member of the jQuery object.\n *\n * @name metadata\n * @descr Returns element's metadata object\n * @param Object opts An object contianing settings to override the defaults\n * @type jQuery\n * @cat Plugins/Metadata\n */\n$.fn.metadata = function( opts ){\n\treturn $.metadata.get( this[0], opts );\n};\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/lib/jquery.mockjax.js",
    "content": "/*!\n * MockJax - jQuery Plugin to Mock Ajax requests\n *\n * Version:  1.4.0\n * Released: 2011-02-04\n * Source:   http://github.com/appendto/jquery-mockjax\n * Docs:     http://enterprisejquery.com/2010/07/mock-your-ajax-requests-with-mockjax-for-rapid-development\n * Plugin:   mockjax\n * Author:   Jonathan Sharp (http://jdsharp.com)\n * License:  MIT,GPL\n * \n * Copyright (c) 2010 appendTo LLC.\n * Dual licensed under the MIT or GPL licenses.\n * http://appendto.com/open-source-licenses\n */\n(function($) {\n\tvar _ajax = $.ajax,\n\t\tmockHandlers = [];\n\t\n\tfunction parseXML(xml) {\n\t\tif ( window['DOMParser'] == undefined && window.ActiveXObject ) {\n\t\t\tDOMParser = function() { };\n\t\t\tDOMParser.prototype.parseFromString = function( xmlString ) {\n\t\t\t\tvar doc = new ActiveXObject('Microsoft.XMLDOM');\n\t\t        doc.async = 'false';\n\t\t        doc.loadXML( xmlString );\n\t\t\t\treturn doc;\n\t\t\t};\n\t\t}\n\t\t\n\t\ttry {\n\t\t\tvar xmlDoc \t= ( new DOMParser() ).parseFromString( xml, 'text/xml' );\n\t\t\tif ( $.isXMLDoc( xmlDoc ) ) {\n\t\t\t\tvar err = $('parsererror', xmlDoc);\n\t\t\t\tif ( err.length == 1 ) {\n\t\t\t\t\tthrow('Error: ' + $(xmlDoc).text() );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow('Unable to parse XML');\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\tvar msg = ( e.name == undefined ? e : e.name + ': ' + e.message );\n\t\t\t$(document).trigger('xmlParseError', [ msg ]);\n\t\t\treturn undefined;\n\t\t}\n\t\treturn xmlDoc;\n\t}\n\t\n\t$.extend({\n\t\tajax: function(origSettings) {\n\t\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),\n\t\t\t    mock = false;\n\t\t\t// Iterate over our mock handlers (in registration order) until we find\n\t\t\t// one that is willing to intercept the request\n\t\t\t$.each(mockHandlers, function(k, v) {\n\t\t\t\tif ( !mockHandlers[k] ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar m = null;\n\t\t\t\t// If the mock was registered with a function, let the function decide if we \n\t\t\t\t// want to mock this request\n\t\t\t\tif ( $.isFunction(mockHandlers[k]) ) {\n\t\t\t\t\tm = mockHandlers[k](s);\n\t\t\t\t} else {\n\t\t\t\t\tm = mockHandlers[k];\n\t\t\t\t\t// Inspect the URL of the request and check if the mock handler's url \n\t\t\t\t\t// matches the url for this ajax request\n\t\t\t\t\tif ( $.isFunction(m.url.test) ) {\n\t\t\t\t\t\t// The user provided a regex for the url, test it\n\t\t\t\t\t\tif ( !m.url.test( s.url ) ) {\n\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a simple wildcard '*' or a direct URL match\n\t\t\t\t\t\tvar star = m.url.indexOf('*');\n\t\t\t\t\t\tif ( ( m.url != '*' && m.url != s.url && star == -1 ) ||\n\t\t\t\t\t\t\t( star > -1 && m.url.substr(0, star) != s.url.substr(0, star) ) ) {\n\t\t\t\t\t\t\t // The url we tested did not match the wildcard *\n\t\t\t\t\t\t\t m = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( m ) {\n\t\t\t\t\t\t// Inspect the data submitted in the request (either POST body or GET query string)\n\t\t\t\t\t\tif ( m.data && s.data ) {\n\t\t\t\t\t\t\tvar identical = false;\n\t\t\t\t\t\t\t// Deep inspect the identity of the objects\n\t\t\t\t\t\t\t(function ident(mock, live) {\n\t\t\t\t\t\t\t\t// Test for situations where the data is a querystring (not an object)\n\t\t\t\t\t\t\t\tif (typeof live === 'string') {\n\t\t\t\t\t\t\t\t\t// Querystring may be a regex\n\t\t\t\t\t\t\t\t\tidentical = $.isFunction( mock.test ) ? mock.test(live) : mock == live;\n\t\t\t\t\t\t\t\t\treturn identical;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t$.each(mock, function(k, v) {\n\t\t\t\t\t\t\t\t\tif ( live[k] === undefined ) {\n\t\t\t\t\t\t\t\t\t\tidentical = false;\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tidentical = true;\n\t\t\t\t\t\t\t\t\t\tif ( typeof live[k] == 'object' ) {\n\t\t\t\t\t\t\t\t\t\t\treturn ident(mock[k], live[k]);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction( mock[k].test ) ) {\n\t\t\t\t\t\t\t\t\t\t\t\tidentical = mock[k].test(live[k]);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tidentical = ( mock[k] == live[k] );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn identical;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})(m.data, s.data);\n\t\t\t\t\t\t\t// They're not identical, do not mock this request\n\t\t\t\t\t\t\tif ( identical == false ) {\n\t\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Inspect the request type\n\t\t\t\t\t\tif ( m && m.type && m.type != s.type ) {\n\t\t\t\t\t\t\t// The request type doesn't match (GET vs. POST)\n\t\t\t\t\t\t\tm = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( m ) {\n\t\t\t\t\tmock = true;\n\n\t\t\t\t\t// Handle console logging\n\t\t\t\t\tvar c = $.extend({}, $.mockjaxSettings, m);\n\t\t\t\t\tif ( c.log && $.isFunction(c.log) ) {\n\t\t\t\t\t\tc.log('MOCK ' + s.type.toUpperCase() + ': ' + s.url, $.extend({}, s));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar jsre = /=\\?(&|$)/, jsc = (new Date()).getTime();\n\n\t\t\t\t\t// Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here\n\t\t\t\t\t// because there isn't an easy hook for the cross domain script tag of jsonp\n\t\t\t\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\t\t\t\tif ( s.type.toUpperCase() === \"GET\" ) {\n\t\t\t\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\ts.dataType = \"json\";\n\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t// Build temporary JSONP function\n\t\t\t\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\t\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\t\t\t\n\t\t\t\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\t\t\t\tif ( s.data ) {\n\t\t\t\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t\t\t\t}\n\t\t\t\n\t\t\t\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t\n\t\t\t\t\t\t// We need to make sure\n\t\t\t\t\t\t// that a JSONP style response is executed properly\n\t\t\t\t\t\ts.dataType = \"script\";\n\t\t\t\n\t\t\t\t\t\t// Handle JSONP-style loading\n\t\t\t\t\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\t\t\t\t\tdata = tmp;\n\t\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t\t// Garbage collect\n\t\t\t\t\t\t\twindow[ jsonp ] = undefined;\n\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t\t\t\t} catch(e) {}\n\t\t\t\n\t\t\t\t\t\t\tif ( head ) {\n\t\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\t\t\t\t\t\tparts = rurl.exec( s.url ),\n\t\t\t\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\t\t\t\t\t\n\t\t\t\t\t// Test if we are going to create a script tag (if so, intercept & mock)\n\t\t\t\t\tif ( s.dataType === \"script\" && s.type.toUpperCase() === \"GET\" && remote ) {\n\t\t\t\t\t\t// Synthesize the mock request for adding a script tag\n\t\t\t\t\t\tvar callbackContext = origSettings && origSettings.context || s;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfunction success() {\n\t\t\t\t\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\t\t\t\t\tif ( s.success ) {\n\t\t\t\t\t\t\t\ts.success.call( callbackContext, ( m.response ? m.response.toString() : m.responseText || ''), status, {} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// Fire the global callback\n\t\t\t\t\t\t\tif ( s.global ) {\n\t\t\t\t\t\t\t\ttrigger( \"ajaxSuccess\", [{}, s] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\tfunction complete() {\n\t\t\t\t\t\t\t// Process result\n\t\t\t\t\t\t\tif ( s.complete ) {\n\t\t\t\t\t\t\t\ts.complete.call( callbackContext, {} , status );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// The request was completed\n\t\t\t\t\t\t\tif ( s.global ) {\n\t\t\t\t\t\t\t\ttrigger( \"ajaxComplete\", [{}, s] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tfunction trigger(type, args) {\n\t\t\t\t\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ( m.response && $.isFunction(m.response) ) {\n\t\t\t\t\t\t\tm.response(origSettings);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.globalEval(m.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tmock = _ajax.call($, $.extend(true, {}, origSettings, {\n\t\t\t\t\t\t// Mock the XHR object\n\t\t\t\t\t\txhr: function() {\n\t\t\t\t\t\t\t// Extend with our default mockjax settings\n\t\t\t\t\t\t\tm = $.extend({}, $.mockjaxSettings, m);\n\n\t\t\t\t\t\t\tif ( m.contentType ) {\n\t\t\t\t\t\t\t\tm.headers['content-type'] = m.contentType;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Return our mock xhr object\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstatus: m.status,\n\t\t\t\t\t\t\t\treadyState: 1,\n\t\t\t\t\t\t\t\topen: function() { },\n\t\t\t\t\t\t\t\tsend: function() {\n\t\t\t\t\t\t\t\t\t// This is a substitute for < 1.4 which lacks $.proxy\n\t\t\t\t\t\t\t\t\tvar process = (function(that) {\n\t\t\t\t\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\t\t\t\t\treturn (function() {\n\t\t\t\t\t\t\t\t\t\t\t\t// The request has returned\n\t\t\t\t\t\t\t\t\t\t\t \tthis.status \t\t= m.status;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.readyState \t= 4;\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t// We have an executable function, call it to give \n\t\t\t\t\t\t\t\t\t\t\t\t// the mock handler a chance to update it's data\n\t\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction(m.response) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tm.response(origSettings);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t// Copy over our mock to our xhr object before passing control back to \n\t\t\t\t\t\t\t\t\t\t\t\t// jQuery's onreadystatechange callback\n\t\t\t\t\t\t\t\t\t\t\t\tif ( s.dataType == 'json' && ( typeof m.responseText == 'object' ) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseText = JSON.stringify(m.responseText);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if ( s.dataType == 'xml' ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( typeof m.responseXML == 'string' ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseXML = parseXML(m.responseXML);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseXML = m.responseXML;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.responseText = m.responseText;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t// jQuery < 1.4 doesn't have onreadystate change for xhr\n\t\t\t\t\t\t\t\t\t\t\t\tif ( $.isFunction(this.onreadystatechange) ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.onreadystatechange( m.isTimeout ? 'timeout' : undefined );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}).apply(that);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t})(this);\n\n\t\t\t\t\t\t\t\t\tif ( m.proxy ) {\n\t\t\t\t\t\t\t\t\t\t// We're proxying this request and loading in an external file instead\n\t\t\t\t\t\t\t\t\t\t_ajax({\n\t\t\t\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\t\t\turl: m.proxy,\n\t\t\t\t\t\t\t\t\t\t\ttype: m.proxyType,\n\t\t\t\t\t\t\t\t\t\t\tdata: m.data,\n\t\t\t\t\t\t\t\t\t\t\tdataType: s.dataType,\n\t\t\t\t\t\t\t\t\t\t\tcomplete: function(xhr, txt) {\n\t\t\t\t\t\t\t\t\t\t\t\tm.responseXML = xhr.responseXML;\n\t\t\t\t\t\t\t\t\t\t\t\tm.responseText = xhr.responseText;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.responseTimer = setTimeout(process, m.responseTime || 0);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// type == 'POST' || 'GET' || 'DELETE'\n\t\t\t\t\t\t\t\t\t\tif ( s.async === false ) {\n\t\t\t\t\t\t\t\t\t\t\t// TODO: Blocking delay\n\t\t\t\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tthis.responseTimer = setTimeout(process, m.responseTime || 50);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tabort: function() {\n\t\t\t\t\t\t\t\t\tclearTimeout(this.responseTimer);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsetRequestHeader: function() { },\n\t\t\t\t\t\t\t\tgetResponseHeader: function(header) {\n\t\t\t\t\t\t\t\t\t// 'Last-modified', 'Etag', 'content-type' are all checked by jQuery\n\t\t\t\t\t\t\t\t\tif ( m.headers && m.headers[header] ) {\n\t\t\t\t\t\t\t\t\t\t// Return arbitrary headers\n\t\t\t\t\t\t\t\t\t\treturn m.headers[header];\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'last-modified' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.lastModified || (new Date()).toString();\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'etag' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.etag || '';\n\t\t\t\t\t\t\t\t\t} else if ( header.toLowerCase() == 'content-type' ) {\n\t\t\t\t\t\t\t\t\t\treturn m.contentType || 'text/plain';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\t\t\t\t\tvar headers = '';\n\t\t\t\t\t\t\t\t\t$.each(m.headers, function(k, v) {\n\t\t\t\t\t\t\t\t\t\theaders += k + ': ' + v + \"\\n\";\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\treturn headers;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// We don't have a mock request, trigger a normal request\n\t\t\tif ( !mock ) {\n\t\t\t\treturn _ajax.apply($, arguments);\n\t\t\t} else {\n\t\t\t\treturn mock;\n\t\t\t}\n\t\t}\n\t});\n\n\t$.mockjaxSettings = {\n\t\t//url:        null,\n\t\t//type:       'GET',\n\t\tlog:          function(msg) {\n\t\t              \twindow['console'] && window.console.log && window.console.log(msg);\n\t\t              },\n\t\tstatus:       200,\n\t\tresponseTime: 500,\n\t\tisTimeout:    false,\n\t\tcontentType:  'text/plain',\n\t\tresponse:     '', \n\t\tresponseText: '',\n\t\tresponseXML:  '',\n\t\tproxy:        '',\n\t\tproxyType:    'GET',\n\t\t\n\t\tlastModified: null,\n\t\tetag:         '',\n\t\theaders: {\n\t\t\tetag: 'IJF@H#@923uf8023hFO@I#H#',\n\t\t\t'content-type' : 'text/plain'\n\t\t}\n\t};\n\n\t$.mockjax = function(settings) {\n\t\tvar i = mockHandlers.length;\n\t\tmockHandlers[i] = settings;\n\t\treturn i;\n\t};\n\t$.mockjaxClear = function(i) {\n\t\tif ( arguments.length == 1 ) {\n\t\t\tmockHandlers[i] = null;\n\t\t} else {\n\t\t\tmockHandlers = [];\n\t\t}\n\t};\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ar.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: AR (Arabic; العربية)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"هذا الحقل إلزامي\",\n        remote: \"يرجى تصحيح هذا الحقل للمتابعة\",\n        email: \"رجاء إدخال عنوان بريد إلكتروني صحيح\",\n        url: \"رجاء إدخال عنوان موقع إلكتروني صحيح\",\n        date: \"رجاء إدخال تاريخ صحيح\",\n        dateISO: \"رجاء إدخال تاريخ صحيح (ISO)\",\n        number: \"رجاء إدخال عدد بطريقة صحيحة\",\n        digits: \"رجاء إدخال أرقام فقط\",\n        creditcard: \"رجاء إدخال رقم بطاقة ائتمان صحيح\",\n        equalTo: \"رجاء إدخال نفس القيمة\",\n        accept: \"رجاء إدخال ملف بامتداد موافق عليه\",\n        maxlength: jQuery.validator.format(\"الحد الأقصى لعدد الحروف هو {0}\"),\n        minlength: jQuery.validator.format(\"الحد الأدنى لعدد الحروف هو {0}\"),\n        rangelength: jQuery.validator.format(\"عدد الحروف يجب أن يكون بين {0} و {1}\"),\n        range: jQuery.validator.format(\"رجاء إدخال عدد قيمته بين {0} و {1}\"),\n        max: jQuery.validator.format(\"رجاء إدخال عدد أقل من أو يساوي (0}\"),\n        min: jQuery.validator.format(\"رجاء إدخال عدد أكبر من أو يساوي (0}\")\n});\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_bg.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: BG (Bulgarian; български език)\n */\njQuery.extend(jQuery.validator.messages, {\n\t\t required: \"Полето е задължително.\",\n\t\t remote: \"Моля, въведете правилната стойност.\",\n\t\t email: \"Моля, въведете валиден email.\",\n\t\t url: \"Моля, въведете валидно URL.\",\n\t\t date: \"Моля, въведете валидна дата.\",\n\t\t dateISO: \"Моля, въведете валидна дата (ISO).\",\n\t\t number: \"Моля, въведете валиден номер.\",\n\t\t digits: \"Моля, въведете само цифри\",\n\t\t creditcard: \"Моля, въведете валиден номер на кредитна карта.\",\n\t\t equalTo: \"Моля, въведете същата стойност отново.\",\n\t\t accept: \"Моля, въведете стойност с валидно разширение.\",\n\t\t maxlength: $.validator.format(\"Моля, въведете повече от {0} символа.\"),\n\t\t minlength: $.validator.format(\"Моля, въведете поне {0} символа.\"),\n\t\t rangelength: $.validator.format(\"Моля, въведете стойност с дължина между {0} и {1} символа.\"),\n\t\t range: $.validator.format(\"Моля, въведете стойност между {0} и {1}.\"),\n\t\t max: $.validator.format(\"Моля, въведете стойност по-малка или равна на {0}.\"),\n\t\t min: $.validator.format(\"Моля, въведете стойност по-голяма или равна на {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ca.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CA (Catalan; català)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Aquest camp és obligatori.\",\n  remote: \"Si us plau, omple aquest camp.\",\n  email: \"Si us plau, escriu una adreça de correu-e vàlida\",\n  url: \"Si us plau, escriu una URL vàlida.\",\n  date: \"Si us plau, escriu una data vàlida.\",\n  dateISO: \"Si us plau, escriu una data (ISO) vàlida.\",\n  number: \"Si us plau, escriu un número enter vàlid.\",\n  digits: \"Si us plau, escriu només dígits.\",\n  creditcard: \"Si us plau, escriu un número de tarjeta vàlid.\",\n  equalTo: \"Si us plau, escriu el maateix valor de nou.\",\n  accept: \"Si us plau, escriu un valor amb una extensió acceptada.\",\n  maxlength: jQuery.validator.format(\"Si us plau, no escriguis més de {0} caracters.\"),\n  minlength: jQuery.validator.format(\"Si us plau, no escriguis menys de {0} caracters.\"),\n  rangelength: jQuery.validator.format(\"Si us plau, escriu un valor entre {0} i {1} caracters.\"),\n  range: jQuery.validator.format(\"Si us plau, escriu un valor entre {0} i {1}.\"),\n  max: jQuery.validator.format(\"Si us plau, escriu un valor menor o igual a {0}.\"),\n  min: jQuery.validator.format(\"Si us plau, escriu un valor major o igual a {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_cs.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CS (Czech; čeština, český jazyk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Tento údaj je povinný.\",\n\tremote: \"Prosím, opravte tento údaj.\",\n\temail: \"Prosím, zadejte platný e-mail.\",\n\turl: \"Prosím, zadejte platné URL.\",\n\tdate: \"Prosím, zadejte platné datum.\",\n\tdateISO: \"Prosím, zadejte platné datum (ISO).\",\n\tnumber: \"Prosím, zadejte číslo.\",\n\tdigits: \"Prosím, zadávejte pouze číslice.\",\n\tcreditcard: \"Prosím, zadejte číslo kreditní karty.\",\n\tequalTo: \"Prosím, zadejte znovu stejnou hodnotu.\",\n\taccept: \"Prosím, zadejte soubor se správnou příponou.\",\n\tmaxlength: jQuery.validator.format(\"Prosím, zadejte nejvíce {0} znaků.\"),\n\tminlength: jQuery.validator.format(\"Prosím, zadejte nejméně {0} znaků.\"),\n\trangelength: jQuery.validator.format(\"Prosím, zadejte od {0} do {1} znaků.\"),\n\trange: jQuery.validator.format(\"Prosím, zadejte hodnotu od {0} do {1}.\"),\n\tmax: jQuery.validator.format(\"Prosím, zadejte hodnotu menší nebo rovnu {0}.\"),\n\tmin: jQuery.validator.format(\"Prosím, zadejte hodnotu větší nebo rovnu {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_da.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DA (Danish; dansk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Dette felt er påkrævet.\",\n\tmaxlength: jQuery.validator.format(\"Indtast højst {0} tegn.\"),\n\tminlength: jQuery.validator.format(\"Indtast mindst {0} tegn.\"),\n\trangelength: jQuery.validator.format(\"Indtast mindst {0} og højst {1} tegn.\"),\n\temail: \"Indtast en gyldig email-adresse.\",\n\turl: \"Indtast en gyldig URL.\",\n\tdate: \"Indtast en gyldig dato.\",\n\tnumber: \"Indtast et tal.\",\n\tdigits: \"Indtast kun cifre.\",\n\tequalTo: \"Indtast den samme værdi igen.\",\n\trange: jQuery.validator.format(\"Angiv en værdi mellem {0} og {1}.\"),\n\tmax: jQuery.validator.format(\"Angiv en værdi der højst er {0}.\"),\n\tmin: jQuery.validator.format(\"Angiv en værdi der mindst er {0}.\"),\n\tcreditcard: \"Indtast et gyldigt kreditkortnummer.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_de.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DE (German, Deutsch)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Dieses Feld ist ein Pflichtfeld.\",\n\tmaxlength: jQuery.validator.format(\"Geben Sie bitte maximal {0} Zeichen ein.\"),\n\tminlength: jQuery.validator.format(\"Geben Sie bitte mindestens {0} Zeichen ein.\"),\n\trangelength: jQuery.validator.format(\"Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein.\"),\n\temail: \"Geben Sie bitte eine gültige E-Mail Adresse ein.\",\n\turl: \"Geben Sie bitte eine gültige URL ein.\",\n\tdate: \"Bitte geben Sie ein gültiges Datum ein.\",\n\tnumber: \"Geben Sie bitte eine Nummer ein.\",\n\tdigits: \"Geben Sie bitte nur Ziffern ein.\",\n\tequalTo: \"Bitte denselben Wert wiederholen.\",\n\trange: jQuery.validator.format(\"Geben Sie bitte einen Wert zwischen {0} und {1} ein.\"),\n\tmax: jQuery.validator.format(\"Geben Sie bitte einen Wert kleiner oder gleich {0} ein.\"),\n\tmin: jQuery.validator.format(\"Geben Sie bitte einen Wert größer oder gleich {0} ein.\"),\n\tcreditcard: \"Geben Sie bitte eine gültige Kreditkarten-Nummer ein.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_el.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EL (Greek; ελληνικά)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Αυτό το πεδίο είναι υποχρεωτικό.\",\n\tremote: \"Παρακαλώ διορθώστε αυτό το πεδίο.\",\n\temail: \"Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.\",\n\turl: \"Παρακαλώ εισάγετε ένα έγκυρο URL.\",\n\tdate: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.\",\n\tdateISO: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).\",\n\tnumber: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό.\",\n\tdigits: \"Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.\",\n\tcreditcard: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.\",\n\tequalTo: \"Παρακαλώ εισάγετε την ίδια τιμή ξανά.\",\n\taccept: \"Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.\",\n\tmaxlength: $.validator.format(\"Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες.\"),\n\tminlength: $.validator.format(\"Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες.\"),\n\trangelength: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων.\"),\n\trange: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}.\"),\n\tmax: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}.\"),\n\tmin: $.validator.format(\"Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.\")\n});\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_es.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ES (Spanish; Español)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Este campo es obligatorio.\",\n  remote: \"Por favor, rellena este campo.\",\n  email: \"Por favor, escribe una dirección de correo válida\",\n  url: \"Por favor, escribe una URL válida.\",\n  date: \"Por favor, escribe una fecha válida.\",\n  dateISO: \"Por favor, escribe una fecha (ISO) válida.\",\n  number: \"Por favor, escribe un número entero válido.\",\n  digits: \"Por favor, escribe sólo dígitos.\",\n  creditcard: \"Por favor, escribe un número de tarjeta válido.\",\n  equalTo: \"Por favor, escribe el mismo valor de nuevo.\",\n  accept: \"Por favor, escribe un valor con una extensión aceptada.\",\n  maxlength: jQuery.validator.format(\"Por favor, no escribas más de {0} caracteres.\"),\n  minlength: jQuery.validator.format(\"Por favor, no escribas menos de {0} caracteres.\"),\n  rangelength: jQuery.validator.format(\"Por favor, escribe un valor entre {0} y {1} caracteres.\"),\n  range: jQuery.validator.format(\"Por favor, escribe un valor entre {0} y {1}.\"),\n  max: jQuery.validator.format(\"Por favor, escribe un valor menor o igual a {0}.\"),\n  min: jQuery.validator.format(\"Por favor, escribe un valor mayor o igual a {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_et.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ET (Estonian; eesti, eesti keel)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"See väli peab olema täidetud.\",\n\tmaxlength: jQuery.validator.format(\"Palun sisestage vähem kui {0} tähemärki.\"),\n\tminlength: jQuery.validator.format(\"Palun sisestage vähemalt {0} tähemärki.\"),\n\trangelength: jQuery.validator.format(\"Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki.\"),\n\temail: \"Palun sisestage korrektne e-maili aadress.\",\n\turl: \"Palun sisestage korrektne URL.\",\n\tdate: \"Palun sisestage korrektne kuupäev.\",\n\tdateISO: \"Palun sisestage korrektne kuupäev (YYYY-MM-DD).\",\n\tnumber: \"Palun sisestage korrektne number.\",\n\tdigits: \"Palun sisestage ainult numbreid.\",\n\tequalTo: \"Palun sisestage sama väärtus uuesti.\",\n\trange: jQuery.validator.format(\"Palun sisestage väärtus vahemikus {0} kuni {1}.\"),\n\tmax: jQuery.validator.format(\"Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}.\"),\n\tmin: jQuery.validator.format(\"Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}.\"),\n\tcreditcard: \"Palun sisestage korrektne krediitkaardi number.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_eu.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EU (Basque; euskara, euskera)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Eremu hau beharrezkoa da.\",\n  remote: \"Mesedez, bete eremu hau.\",\n  email: \"Mesedez, idatzi baliozko posta helbide bat.\",\n  url: \"Mesedez, idatzi baliozko URL bat.\",\n  date: \"Mesedez, idatzi baliozko data bat.\",\n  dateISO: \"Mesedez, idatzi baliozko (ISO) data bat.\",\n  number: \"Mesedez, idatzi baliozko zenbaki oso bat.\",\n  digits: \"Mesedez, idatzi digituak soilik.\",\n  creditcard: \"Mesedez, idatzi baliozko txartel zenbaki bat.\",\n  equalTo: \"Mesedez, idatzi berdina berriro ere.\",\n  accept: \"Mesedez, idatzi onartutako luzapena duen balio bat.\",\n  maxlength: jQuery.validator.format(\"Mesedez, ez idatzi {0} karaktere baino gehiago.\"),\n  minlength: jQuery.validator.format(\"Mesedez, ez idatzi {0} karaktere baino gutxiago.\"),\n  rangelength: jQuery.validator.format(\"Mesedez, idatzi {0} eta {1} karaktere arteko balio bat.\"),\n  range: jQuery.validator.format(\"Mesedez, idatzi {0} eta {1} arteko balio bat.\"),\n  max: jQuery.validator.format(\"Mesedez, idatzi {0} edo txikiagoa den balio bat.\"),\n  min: jQuery.validator.format(\"Mesedez, idatzi {0} edo handiagoa den balio bat.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fa.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FA (Persian; فارسی)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"تکمیل این فیلد اجباری است.\",\n       remote: \"لطفا این فیلد را تصحیح کنید.\",\n       email: \".لطفا یک ایمیل صحیح وارد کنید\",\n       url: \"لطفا آدرس صحیح وارد کنید.\",\n       date: \"لطفا یک تاریخ صحیح وارد کنید\",\n       dateISO: \"لطفا تاریخ صحیح وارد کنید (ISO).\",\n       number: \"لطفا عدد صحیح وارد کنید.\",\n       digits: \"لطفا تنها رقم وارد کنید\",\n       creditcard: \"لطفا کریدیت کارت صحیح وارد کنید.\",\n       equalTo: \"لطفا مقدار برابری وارد کنید\",\n       accept: \"لطفا مقداری وارد کنید که \",\n       maxlength: jQuery.validator.format(\"لطفا بیشتر از {0} حرف وارد نکنید.\"),\n       minlength: jQuery.validator.format(\"لطفا کمتر از {0} حرف وارد نکنید.\"),\n       rangelength: jQuery.validator.format(\"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\"),\n       range: jQuery.validator.format(\"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\"),\n       max: jQuery.validator.format(\"لطفا مقداری کمتر از {0} حرف وارد کنید.\"),\n       min: jQuery.validator.format(\"لطفا مقداری بیشتر از {0} حرف وارد کنید.\")\n}); \n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fi.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FI (Finnish; suomi, suomen kieli)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"T&auml;m&auml; kentt&auml; on pakollinen.\",\n\tmaxlength: jQuery.validator.format(\"Voit sy&ouml;tt&auml;&auml; enint&auml;&auml;n {0} merkki&auml;.\"),\n\tminlength: jQuery.validator.format(\"V&auml;hint&auml;&auml;n {0} merkki&auml;.\"),\n\trangelength: jQuery.validator.format(\"Sy&ouml;t&auml; v&auml;hint&auml;&auml;n {0} ja enint&auml;&auml;n {1} merkki&auml;.\"),\n\temail: \"Sy&ouml;t&auml; oikea s&auml;hk&ouml;postiosoite.\",\n\turl: \"Sy&ouml;t&auml; oikea URL osoite.\",\n\tdate: \"Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml;.\",\n\tdateISO: \"Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml; (VVVV-MM-DD).\",\n\tnumber: \"Sy&ouml;t&auml; numero.\",\n\tdigits: \"Sy&ouml;t&auml; pelk&auml;st&auml;&auml;n numeroita.\",\n\tequalTo: \"Sy&ouml;t&auml; sama arvo uudestaan.\",\n\trange: jQuery.validator.format(\"Sy&ouml;t&auml; arvo {0} ja {1} v&auml;lilt&auml;.\"),\n\tmax: jQuery.validator.format(\"Sy&ouml;t&auml; arvo joka on pienempi tai yht&auml; suuri kuin {0}.\"),\n\tmin: jQuery.validator.format(\"Sy&ouml;t&auml; arvo joka on yht&auml; suuri tai suurempi kuin {0}.\"),\n\tcreditcard: \"Sy&ouml;t&auml; voimassa oleva luottokorttinumero.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_fr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FR (French; français)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Ce champ est obligatoire.\",\n\tremote: \"Veuillez corriger ce champ.\",\n\temail: \"Veuillez fournir une adresse électronique valide.\",\n\turl: \"Veuillez fournir une adresse URL valide.\",\n\tdate: \"Veuillez fournir une date valide.\",\n\tdateISO: \"Veuillez fournir une date valide (ISO).\",\n\tnumber: \"Veuillez fournir un numéro valide.\",\n\tdigits: \"Veuillez fournir seulement des chiffres.\",\n\tcreditcard: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tequalTo: \"Veuillez fournir encore la même valeur.\",\n\taccept: \"Veuillez fournir une valeur avec une extension valide.\",\n\tmaxlength: $.validator.format(\"Veuillez fournir au plus {0} caractères.\"),\n\tminlength: $.validator.format(\"Veuillez fournir au moins {0} caractères.\"),\n\trangelength: $.validator.format(\"Veuillez fournir une valeur qui contient entre {0} et {1} caractères.\"),\n\trange: $.validator.format(\"Veuillez fournir une valeur entre {0} et {1}.\"),\n\tmax: $.validator.format(\"Veuillez fournir une valeur inférieur ou égal à {0}.\"),\n\tmin: $.validator.format(\"Veuillez fournir une valeur supérieur ou égal à {0}.\"),\n\tmaxWords: $.validator.format(\"Veuillez fournir au plus {0} mots.\"),\n\tminWords: $.validator.format(\"Veuillez fournir au moins {0} mots.\"),\n\trangeWords: $.validator.format(\"Veuillez fournir entre {0} et {1} mots.\"),\n\tletterswithbasicpunc: \"Veuillez fournir seulement des lettres et des signes de ponctuation.\",\n\talphanumeric: \"Veuillez fournir seulement des lettres, nombres, espaces et soulignages\",\n\tlettersonly: \"Veuillez fournir seulement des lettres.\",\n\tnowhitespace: \"Veuillez ne pas inscrire d'espaces blancs.\",\n\tziprange: \"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.\",\n\tinteger: \"Veuillez fournir un nombre non décimal qui est positif ou négatif.\",\n\tvinUS: \"Veuillez fournir un numéro d'identification du véhicule (VIN).\",\n\tdateITA: \"Veuillez fournir une date valide.\",\n\ttime: \"Veuillez fournir une heure valide entre 00:00 et 23:59.\",\n\tphoneUS: \"Veuillez fournir un numéro de téléphone valide.\",\n\tphoneUK: \"Veuillez fournir un numéro de téléphone valide.\",\n\tmobileUK: \"Veuillez fournir un numéro de téléphone mobile valide.\",\n\tstrippedminlength: jQuery.validator.format(\"Veuillez fournir au moins {0} caractères.\"),\n\temail2: \"Veuillez fournir une adresse électronique valide.\",\n\turl2: \"Veuillez fournir une adresse URL valide.\",\n\tcreditcardtypes: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tipv4: \"Veuillez fournir une adresse IP v4 valide.\",\n\tipv6: \"Veuillez fournir une adresse IP v6 valide.\"\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_he.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HE (Hebrew; עברית)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \".השדה הזה הינו שדה חובה\",\n\tremote: \"נא לתקן שדה זה.\",\n\temail: \"נא למלא כתובת דוא\\\"ל חוקית\",\n\turl: \"נא למלא כתובת אינטרנט חוקית.\",\n\tdate: \"נא למלא תאריך חוקי\",\n\tdateISO: \"נא למלא תאריך חוקי (ISO).\",\n\tnumber: \"נא למלא מספר.\",\n\tdigits: \".נא למלא רק מספרים\",\n\tcreditcard: \"נא למלא מספר כרטיס אשראי חוקי.\",\n\tequalTo: \"נא למלא את אותו ערך שוב.\",\n\taccept: \"נא למלא ערך עם סיומת חוקית.\",\n\tmaxlength: jQuery.validator.format(\".נא לא למלא יותר מ- {0} תווים\"),\n\tminlength: jQuery.validator.format(\"נא למלא לפחות {0} תווים.\"),\n\trangelength: jQuery.validator.format(\"נא למלא ערך בין {0} ל- {1} תווים.\"),\n\trange: jQuery.validator.format(\"נא למלא ערך בין {0} ל- {1}.\"),\n\tmax: jQuery.validator.format(\"נא למלא ערך קטן או שווה ל- {0}.\"),\n\tmin: jQuery.validator.format(\"נא למלא ערך גדול או שווה ל- {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HR (Croatia; hrvatski jezik)\n */\njQuery.extend(jQuery.validator.messages, {\n\t\trequired: \"Ovo polje je obavezno.\",\n\t\tremote: \"Ovo polje treba popraviti.\",\n\t\temail: \"Unesite ispravnu e-mail adresu.\",\n\t\turl: \"Unesite ispravan URL.\",\n\t\tdate: \"Unesite ispravan datum.\",\n\t\tdateISO: \"Unesite ispravan datum (ISO).\",\n\t\tnumber: \"Unesite ispravan broj.\",\n\t\tdigits: \"Unesite samo brojeve.\",\n\t\tcreditcard: \"Unesite ispravan broj kreditne kartice.\",\n\t\tequalTo: \"Unesite ponovo istu vrijednost.\",\n\t\taccept: \"Unesite vrijednost sa ispravnom ekstenzijom.\",\n\t\tmaxlength: $.validator.format(\"Maksimalni broj znakova je {0} .\"),\n\t\tminlength: $.validator.format(\"Minimalni broj znakova je {0} .\"),\n\t\trangelength: $.validator.format(\"Unesite vrijednost između {0} i {1} znakova.\"),\n\t\trange: $.validator.format(\"Unesite vrijednost između {0} i {1}.\"),\n\t\tmax: $.validator.format(\"Unesite vrijednost manju ili jednaku {0}.\"),\n\t\tmin: $.validator.format(\"Unesite vrijednost veću ili jednaku {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_hu.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HU (Hungarian; Magyar)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Kötelező megadni.\",\n\tmaxlength: jQuery.validator.format(\"Legfeljebb {0} karakter hosszú legyen.\"),\n\tminlength: jQuery.validator.format(\"Legalább {0} karakter hosszú legyen.\"),\n\trangelength: jQuery.validator.format(\"Legalább {0} és legfeljebb {1} karakter hosszú legyen.\"),\n\temail: \"Érvényes e-mail címnek kell lennie.\",\n\turl: \"Érvényes URL-nek kell lennie.\",\n\tdate: \"Dátumnak kell lennie.\",\n\tnumber: \"Számnak kell lennie.\",\n\tdigits: \"Csak számjegyek lehetnek.\",\n\tequalTo: \"Meg kell egyeznie a két értéknek.\",\n\trange: jQuery.validator.format(\"{0} és {1} közé kell esnie.\"),\n\tmax: jQuery.validator.format(\"Nem lehet nagyobb, mint {0}.\"),\n\tmin: jQuery.validator.format(\"Nem lehet kisebb, mint {0}.\"),\n\tcreditcard: \"Érvényes hitelkártyaszámnak kell lennie.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_it.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: IT (Italian; Italiano)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Campo obbligatorio.\",\n       remote: \"Controlla questo campo.\",\n       email: \"Inserisci un indirizzo email valido.\",\n       url: \"Inserisci un indirizzo web valido.\",\n       date: \"Inserisci una data valida.\",\n       dateISO: \"Inserisci una data valida (ISO).\",\n       number: \"Inserisci un numero valido.\",\n       digits: \"Inserisci solo numeri.\",\n       creditcard: \"Inserisci un numero di carta di credito valido.\",\n       equalTo: \"Il valore non corrisponde.\",\n       accept: \"Inserisci un valore con un&apos;estensione valida.\",\n       maxlength: jQuery.validator.format(\"Non inserire pi&ugrave; di {0} caratteri.\"),\n       minlength: jQuery.validator.format(\"Inserisci almeno {0} caratteri.\"),\n       rangelength: jQuery.validator.format(\"Inserisci un valore compreso tra {0} e {1} caratteri.\"),\n       range: jQuery.validator.format(\"Inserisci un valore compreso tra {0} e {1}.\"),\n       max: jQuery.validator.format(\"Inserisci un valore minore o uguale a {0}.\"),\n       min: jQuery.validator.format(\"Inserisci un valore maggiore o uguale a {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ja.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: JA (Japanese; 日本語)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"このフィールドは必須です。\",\n  remote: \"このフィールドを修正してください。\",\n  email: \"有効なEメールアドレスを入力してください。\",\n  url: \"有効なURLを入力してください。\",\n  date: \"有効な日付を入力してください。\",\n  dateISO: \"有効な日付（ISO）を入力してください。\",\n  number: \"有効な数字を入力してください。\",\n  digits: \"数字のみを入力してください。\",\n  creditcard: \"有効なクレジットカード番号を入力してください。\",\n  equalTo: \"同じ値をもう一度入力してください。\",\n  accept: \"有効な拡張子を含む値を入力してください。\",\n  maxlength: jQuery.format(\"{0} 文字以内で入力してください。\"),\n  minlength: jQuery.format(\"{0} 文字以上で入力してください。\"),\n  rangelength: jQuery.format(\"{0} 文字から {1} 文字までの値を入力してください。\"),\n  range: jQuery.format(\"{0} から {1} までの値を入力してください。\"),\n  max: jQuery.format(\"{0} 以下の値を入力してください。\"),\n  min: jQuery.format(\"{0} 以上の値を入力してください。\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ka.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KA (Georgian; ქართული)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"ამ ველის შევსება აუცილებელია.\",\n        remote: \"გთხოვთ მიუთითოთ სწორი მნიშვნელობა.\",\n        email: \"გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.\",\n        url: \"გთხოვთ მიუთითოთ კორექტული URL.\",\n        date: \"გთხოვთ მიუთითოთ კორექტული თარიღი.\",\n        dateISO: \"გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.\",\n        number: \"გთხოვთ მიუთითოთ ციფრი.\",\n        digits: \"გთხოვთ მიუთითოთ მხოლოდ ციფრები.\",\n        creditcard: \"გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.\",\n        equalTo: \"გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.\",\n        accept: \"გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.\",\n        maxlength: jQuery.validator.format(\"დასაშვებია არაუმეტეს {0} სიმბოლო.\"),\n        minlength: jQuery.validator.format(\"აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო.\"),\n        rangelength: jQuery.validator.format(\"ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე.\"),\n        range: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე.\"),\n        max: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს.\"),\n        min: jQuery.validator.format(\"გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_kk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KK (Kazakh; қазақ тілі)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Бұл өрісті міндетті түрде толтырыңыз.\",\n        remote: \"Дұрыс мағына енгізуіңізді сұраймыз.\",\n        email: \"Нақты электронды поштаңызды енгізуіңізді сұраймыз.\",\n        url: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n        date: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n        dateISO: \"Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.\",\n        number: \"Күнді енгізуіңізді сұраймыз.\",\n        digits: \"Тек қана сандарды енгізуіңізді сұраймыз.\",\n        creditcard: \"Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.\",\n        equalTo: \"Осы мәнді қайта енгізуіңізді сұраймыз.\",\n        accept: \"Файлдың кеңейтуін дұрыс таңдаңыз.\",\n        maxlength: jQuery.format(\"Ұзындығы {0} символдан  көр болмасын.\"),\n        minlength: jQuery.format(\"Ұзындығы {0} символдан аз болмасын.\"),\n        rangelength: jQuery.format(\"Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз.\"),\n        range: jQuery.format(\"Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз.\"),\n        max: jQuery.format(\"{0} аз немесе тең санын енгізуіңіді сұраймыз.\"),\n        min: jQuery.format(\"{0} көп немесе тең санын енгізуіңізді сұраймыз.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lt.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LT (Lithuanian; lietuvių kalba)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Šis laukas yra privalomas.\",\n       remote: \"Prašau pataisyti šį lauką.\",\n       email: \"Prašau įvesti teisingą elektroninio pašto adresą.\",\n       url: \"Prašau įvesti teisingą URL.\",\n       date: \"Prašau įvesti teisingą datą.\",\n       dateISO: \"Prašau įvesti teisingą datą (ISO).\",\n       number: \"Prašau įvesti teisingą skaičių.\",\n       digits: \"Prašau naudoti tik skaitmenis.\",\n       creditcard: \"Prašau įvesti teisingą kreditinės kortelės numerį.\",\n       equalTo: \"Prašau įvestį tą pačią reikšmę dar kartą.\",\n       accept: \"Prašau įvesti reikšmę su teisingu plėtiniu.\",\n       maxlength: $.format(\"Prašau įvesti ne daugiau kaip {0} simbolių.\"),\n       minlength: $.format(\"Prašau įvesti bent {0} simbolius.\"),\n       rangelength: $.format(\"Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių.\"),\n       range: $.format(\"Prašau įvesti reikšmę intervale nuo {0} iki {1}.\"),\n       max: $.format(\"Prašau įvesti reikšmę mažesnę arba lygią {0}.\"),\n       min: $.format(\"Prašau įvesti reikšmę didesnę arba lygią {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_lv.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LV (Latvian; latviešu valoda)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Šis lauks ir obligāts.\",\n        remote: \"Lūdzu, pārbaudiet šo lauku.\",\n        email: \"Lūdzu, ievadiet derīgu e-pasta adresi.\",\n        url: \"Lūdzu, ievadiet derīgu URL adresi.\",\n        date: \"Lūdzu, ievadiet derīgu datumu.\",\n        dateISO: \"Lūdzu, ievadiet derīgu datumu (ISO).\",\n        number: \"Lūdzu, ievadiet derīgu numuru.\",\n        digits: \"Lūdzu, ievadiet tikai ciparus.\",\n        creditcard: \"Lūdzu, ievadiet derīgu kredītkartes numuru.\",\n        equalTo: \"Lūdzu, ievadiet to pašu vēlreiz.\",\n        accept: \"Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.\",\n        maxlength: jQuery.validator.format(\"Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes.\"),\n        minlength: jQuery.validator.format(\"Lūdzu, ievadiet vismaz {0} rakstzīmes.\"),\n        rangelength: jQuery.validator.format(\"Lūdzu ievadiet {0} līdz {1} rakstzīmes.\"),\n        range: jQuery.validator.format(\"Lūdzu, ievadiet skaitli no {0} līdz {1}.\"),\n        max: jQuery.validator.format(\"Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}.\"),\n        min: jQuery.validator.format(\"Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_nl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NL (Dutch; Nederlands, Vlaams)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Dit is een verplicht veld.\",\n        remote: \"Controleer dit veld.\",\n        email: \"Vul hier een geldig e-mailadres in.\",\n        url: \"Vul hier een geldige URL in.\",\n        date: \"Vul hier een geldige datum in.\",\n        dateISO: \"Vul hier een geldige datum in (ISO-formaat).\",\n        number: \"Vul hier een geldig getal in.\",\n        digits: \"Vul hier alleen getallen in.\",\n        creditcard: \"Vul hier een geldig creditcardnummer in.\",\n        equalTo: \"Vul hier dezelfde waarde in.\",\n        accept: \"Vul hier een waarde in met een geldige extensie.\",\n        maxlength: jQuery.validator.format(\"Vul hier maximaal {0} tekens in.\"),\n        minlength: jQuery.validator.format(\"Vul hier minimaal {0} tekens in.\"),\n        rangelength: jQuery.validator.format(\"Vul hier een waarde in van minimaal {0} en maximaal {1} tekens.\"),\n        range: jQuery.validator.format(\"Vul hier een waarde in van minimaal {0} en maximaal {1}.\"),\n        max: jQuery.validator.format(\"Vul hier een waarde in kleiner dan of gelijk aan {0}.\"),\n        min: jQuery.validator.format(\"Vul hier een waarde in groter dan of gelijk aan {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_no.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NO (Norwegian; Norsk)\n */\njQuery.extend(jQuery.validator.messages, {\n       required: \"Dette feltet er obligatorisk.\",\n       maxlength: jQuery.validator.format(\"Maksimalt {0} tegn.\"),\n       minlength: jQuery.validator.format(\"Minimum {0} tegn.\"),\n       rangelength: jQuery.validator.format(\"Angi minimum {0} og maksimum {1} tegn.\"),\n       email: \"Oppgi en gyldig epostadresse.\",\n       url: \"Angi en gyldig URL.\",\n       date: \"Angi en gyldig dato.\",\n       dateISO: \"Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).\",\n       dateSE: \"Angi en gyldig dato.\",\n       number: \"Angi et gyldig nummer.\",\n       numberSE: \"Angi et gyldig nummer.\",\n       digits: \"Skriv kun tall.\",\n       equalTo: \"Skriv samme verdi igjen.\",\n       range: jQuery.validator.format(\"Angi en verdi mellom {0} og {1}.\"),\n       max: jQuery.validator.format(\"Angi en verdi som er mindre eller lik {0}.\"),\n       min: jQuery.validator.format(\"Angi en verdi som er st&oslash;rre eller lik {0}.\"),\n       creditcard: \"Angi et gyldig kredittkortnummer.\"\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PL (Polish; język polski, polszczyzna)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To pole jest wymagane.\",\n\tremote: \"Proszę o wypełnienie tego pola.\",\n\temail: \"Proszę o podanie prawidłowego adresu email.\",\n\turl: \"Proszę o podanie prawidłowego URL.\",\n\tdate: \"Proszę o podanie prawidłowej daty.\",\n\tdateISO: \"Proszę o podanie prawidłowej daty (ISO).\",\n\tnumber: \"Proszę o podanie prawidłowej liczby.\",\n\tdigits: \"Proszę o podanie samych cyfr.\",\n\tcreditcard: \"Proszę o podanie prawidłowej karty kredytowej.\",\n\tequalTo: \"Proszę o podanie tej samej wartości ponownie.\",\n\taccept: \"Proszę o podanie wartości z prawidłowym rozszerzeniem.\",\n\tmaxlength: jQuery.validator.format(\"Proszę o podanie nie więcej niż {0} znaków.\"),\n\tminlength: jQuery.validator.format(\"Proszę o podanie przynajmniej {0} znaków.\"),\n\trangelength: jQuery.validator.format(\"Proszę o podanie wartości o długości od {0} do {1} znaków.\"),\n\trange: jQuery.validator.format(\"Proszę o podanie wartości z przedziału od {0} do {1}.\"),\n\tmax: jQuery.validator.format(\"Proszę o podanie wartości mniejszej bądź równej {0}.\"),\n\tmin: jQuery.validator.format(\"Proszę o podanie wartości większej bądź równej {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_BR.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: BR (Brazil)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Este campo &eacute; requerido.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.\",\n\turl: \"Por favor, forne&ccedil;a uma URL v&aacute;lida.\",\n\tdate: \"Por favor, forne&ccedil;a uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, forne&ccedil;a somente d&iacute;gitos.\",\n\tcreditcard: \"Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, forne&ccedil;a o mesmo valor novamente.\",\n\taccept: \"Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.\",\n\tmaxlength: jQuery.validator.format(\"Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres.\"),\n\tminlength: jQuery.validator.format(\"Por favor, forne&ccedil;a ao menos {0} caracteres.\"),\n\trangelength: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento.\"),\n\trange: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor entre {0} e {1}.\"),\n\tmax: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor menor ou igual a {0}.\"),\n\tmin: jQuery.validator.format(\"Por favor, forne&ccedil;a um valor maior ou igual a {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_pt_PT.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: PT (Portugal)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Campo de preenchimento obrigat&oacute;rio.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, introduza um endere&ccedil;o eletr&oacute;nico v&aacute;lido.\",\n\turl: \"Por favor, introduza um URL v&aacute;lido.\",\n\tdate: \"Por favor, introduza uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, introduza uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, introduza um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, introduza apenas d&iacute;gitos.\",\n\tcreditcard: \"Por favor, introduza um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, introduza de novo o mesmo valor.\",\n\taccept: \"Por favor, introduza um ficheiro com uma extens&atilde;o v&aacute;lida.\",\n\tmaxlength: jQuery.validator.format(\"Por favor, n&atilde;o introduza mais do que {0} caracteres.\"),\n\tminlength: jQuery.validator.format(\"Por favor, introduza pelo menos {0} caracteres.\"),\n\trangelength: jQuery.validator.format(\"Por favor, introduza entre {0} e {1} caracteres.\"),\n\trange: jQuery.validator.format(\"Por favor, introduza um valor entre {0} e {1}.\"),\n\tmax: jQuery.validator.format(\"Por favor, introduza um valor menor ou igual a {0}.\"),\n\tmin: jQuery.validator.format(\"Por favor, introduza um valor maior ou igual a {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ro.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RO (Romanian, limba română)\n */\njQuery.extend(jQuery.validator.messages, {\n  required: \"Acest câmp este obligatoriu.\",\n  remote: \"Te rugăm să completezi acest câmp.\",\n  email: \"Te rugăm să introduci o adresă de email validă\",\n  url: \"Te rugăm sa introduci o adresă URL validă.\",\n  date: \"Te rugăm să introduci o dată corectă.\",\n  dateISO: \"Te rugăm să introduci o dată (ISO) corectă.\",\n  number: \"Te rugăm să introduci un număr întreg valid.\",\n  digits: \"Te rugăm să introduci doar cifre.\",\n  creditcard: \"Te rugăm să introduci un numar de carte de credit valid.\",\n  equalTo: \"Te rugăm să reintroduci valoarea.\",\n  accept: \"Te rugăm să introduci o valoare cu o extensie validă.\",\n  maxlength: jQuery.validator.format(\"Te rugăm să nu introduci mai mult de {0} caractere.\"),\n  minlength: jQuery.validator.format(\"Te rugăm să introduci cel puțin {0} caractere.\"),\n  rangelength: jQuery.validator.format(\"Te rugăm să introduci o valoare între {0} și {1} caractere.\"),\n  range: jQuery.validator.format(\"Te rugăm să introduci o valoare între {0} și {1}.\"),\n  max: jQuery.validator.format(\"Te rugăm să introduci o valoare egal sau mai mică decât {0}.\"),\n  min: jQuery.validator.format(\"Te rugăm să introduci o valoare egal sau mai mare decât {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_ru.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RU (Russian; русский язык)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"Это поле необходимо заполнить.\",\n        remote: \"Пожалуйста, введите правильное значение.\",\n        email: \"Пожалуйста, введите корректный адрес электронной почты.\",\n        url: \"Пожалуйста, введите корректный URL.\",\n        date: \"Пожалуйста, введите корректную дату.\",\n        dateISO: \"Пожалуйста, введите корректную дату в формате ISO.\",\n        number: \"Пожалуйста, введите число.\",\n        digits: \"Пожалуйста, вводите только цифры.\",\n        creditcard: \"Пожалуйста, введите правильный номер кредитной карты.\",\n        equalTo: \"Пожалуйста, введите такое же значение ещё раз.\",\n        accept: \"Пожалуйста, выберите файл с правильным расширением.\",\n        maxlength: jQuery.validator.format(\"Пожалуйста, введите не больше {0} символов.\"),\n        minlength: jQuery.validator.format(\"Пожалуйста, введите не меньше {0} символов.\"),\n        rangelength: jQuery.validator.format(\"Пожалуйста, введите значение длиной от {0} до {1} символов.\"),\n        range: jQuery.validator.format(\"Пожалуйста, введите число от {0} до {1}.\"),\n        max: jQuery.validator.format(\"Пожалуйста, введите число, меньшее или равное {0}.\"),\n        min: jQuery.validator.format(\"Пожалуйста, введите число, большее или равное {0}.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_si.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SI (Slovenian)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Vpis v tem polju ni v pravi obliki.\",\n\temail: \"Prosimo, vnesite pravi email naslov.\",\n\turl: \"Prosimo, vnesite pravi URL.\",\n\tdate: \"Prosimo, vnesite pravi datum.\",\n\tdateISO: \"Prosimo, vnesite pravi datum (ISO).\",\n\tnumber: \"Prosimo, vnesite pravo številko.\",\n\tdigits: \"Prosimo, vnesite samo številke.\",\n\tcreditcard: \"Prosimo, vnesite pravo številko kreditne kartice.\",\n\tequalTo: \"Prosimo, ponovno vnesite enako vsebino.\",\n\taccept: \"Prosimo, vnesite vsebino z pravo končnico.\",\n\tmaxlength: $.validator.format(\"Prosimo, da ne vnašate več kot {0} znakov.\"),\n\tminlength: $.validator.format(\"Prosimo, vnesite vsaj {0} znakov.\"),\n\trangelength: $.validator.format(\"Prosimo, vnesite od {0} do {1} znakov.\"),\n\trange: $.validator.format(\"Prosimo, vnesite vrednost med {0} in {1}.\"),\n\tmax: $.validator.format(\"Prosimo, vnesite vrednost manjšo ali enako {0}.\"),\n\tmin: $.validator.format(\"Prosimo, vnesite vrednost večjo ali enako {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SK (Slovak; slovenčina, slovenský jazyk)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Povinné zadať.\",\n\tmaxlength: jQuery.validator.format(\"Maximálne {0} znakov.\"),\n\tminlength: jQuery.validator.format(\"Minimálne {0} znakov.\"),\n\trangelength: jQuery.validator.format(\"Minimálne {0} a Maximálne {0} znakov.\"),\n\temail: \"E-mailová adresa musí byť platná.\",\n\turl: \"URL musí byť platný.\",\n\tdate: \"Musí byť dátum.\",\n\tnumber: \"Musí byť číslo.\",\n\tdigits: \"Môže obsahovať iba číslice.\",\n\tequalTo: \"Dva hodnoty sa musia rovnať.\",\n\trange: jQuery.validator.format(\"Musí byť medzi {0} a {1}.\"),\n\tmax: jQuery.validator.format(\"Nemôže byť viac ako{0}.\"),\n\tmin: jQuery.validator.format(\"Nemôže byť menej ako{0}.\"),\n\tcreditcard: \"Číslo platobnej karty musí byť platné.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sl.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Language: SL (Slovenian; slovenski jezik)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Prosimo popravite to polje.\",\n\temail: \"Prosimo vnesite veljaven email naslov.\",\n\turl: \"Prosimo vnesite veljaven URL naslov.\",\n\tdate: \"Prosimo vnesite veljaven datum.\",\n\tdateISO: \"Prosimo vnesite veljaven ISO datum.\",\n\tnumber: \"Prosimo vnesite veljavno število.\",\n\tdigits: \"Prosimo vnesite samo števila.\",\n\tcreditcard: \"Prosimo vnesite veljavno številko kreditne kartice.\",\n\tequalTo: \"Prosimo ponovno vnesite vrednost.\",\n\taccept: \"Prosimo vnesite vrednost z veljavno končnico.\",\n\tmaxlength: jQuery.validator.format(\"Prosimo vnesite največ {0} znakov.\"),\n\tminlength: jQuery.validator.format(\"Prosimo vnesite najmanj {0} znakov.\"),\n\trangelength: jQuery.validator.format(\"Prosimo vnesite najmanj {0} in največ {1} znakov.\"),\n\trange: jQuery.validator.format(\"Prosimo vnesite vrednost med {0} in {1}.\"),\n\tmax: jQuery.validator.format(\"Prosimo vnesite vrednost manjše ali enako {0}.\"),\n\tmin: jQuery.validator.format(\"Prosimo vnesite vrednost večje ali enako {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sr.js",
    "content": "﻿/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SR (Serbian; српски језик)\n */\njQuery.extend(jQuery.validator.messages, {\n    required: \"Поље је обавезно.\",\n    remote: \"Средите ово поље.\",\n    email: \"Унесите исправну и-мејл адресу\",\n    url: \"Унесите исправан URL.\",\n    date: \"Унесите исправан датум.\",\n    dateISO: \"Унесите исправан датум (ISO).\",\n    number: \"Унесите исправан број.\",\n    digits: \"Унесите само цифе.\",\n    creditcard: \"Унесите исправан број кредитне картице.\",\n    equalTo: \"Унесите исту вредност поново.\",\n    accept: \"Унесите вредност са одговарајућом екстензијом.\",\n    maxlength: $.validator.format(\"Унесите мање од {0}карактера.\"),\n    minlength: $.validator.format(\"Унесите барем {0} карактера.\"),\n    rangelength: $.validator.format(\"Унесите вредност дугачку између {0} и {1} карактера.\"),\n    range: $.validator.format(\"Унесите вредност између {0} и {1}.\"),\n    max: $.validator.format(\"Унесите вредност мању или једнаку {0}.\"),\n    min: $.validator.format(\"Унесите вредност већу или једнаку {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_sv.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SV (Swedish; Svenska)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Detta f&auml;lt &auml;r obligatoriskt.\",\n\tmaxlength: jQuery.validator.format(\"Du f&aring;r ange h&ouml;gst {0} tecken.\"),\n\tminlength: jQuery.validator.format(\"Du m&aring;ste ange minst {0} tecken.\"),\n\trangelength: jQuery.validator.format(\"Ange minst {0} och max {1} tecken.\"),\n\temail: \"Ange en korrekt e-postadress.\",\n\turl: \"Ange en korrekt URL.\",\n\tdate: \"Ange ett korrekt datum.\",\n\tdateISO: \"Ange ett korrekt datum (&ARING;&ARING;&ARING;&ARING;-MM-DD).\",\n\tnumber: \"Ange ett korrekt nummer.\",\n\tdigits: \"Ange endast siffror.\",\n\tequalTo: \"Ange samma v&auml;rde igen.\",\n\trange: jQuery.validator.format(\"Ange ett v&auml;rde mellan {0} och {1}.\"),\n\tmax: jQuery.validator.format(\"Ange ett v&auml;rde som &auml;r mindre eller lika med {0}.\"),\n\tmin: jQuery.validator.format(\"Ange ett v&auml;rde som &auml;r st&ouml;rre eller lika med {0}.\"),\n\tcreditcard: \"Ange ett korrekt kreditkortsnummer.\"\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_th.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TH (Thai; ไทย)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"โปรดระบุ\",\n\tremote: \"โปรดแก้ไขให้ถูกต้อง\",\n\temail: \"โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง\",\n\turl: \"โปรดระบุ URL ที่ถูกต้อง\",\n\tdate: \"โปรดระบุวันที่ ที่ถูกต้อง\",\n\tdateISO: \"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).\",\n\tnumber: \"โปรดระบุทศนิยมที่ถูกต้อง\",\n\tdigits: \"โปรดระบุจำนวนเต็มที่ถูกต้อง\",\n\tcreditcard: \"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง\",\n\tequalTo: \"โปรดระบุค่าเดิมอีกครั้ง\",\n\taccept: \"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง\",\n\tmaxlength: jQuery.validator.format(\"โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ\"),\n\tminlength: jQuery.validator.format(\"โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ\"),\n\trangelength: jQuery.validator.format(\"โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ\"),\n\trange: jQuery.validator.format(\"โปรดระบุค่าระหว่าง {0} และ {1}\"),\n\tmax: jQuery.validator.format(\"โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}\"),\n\tmin: jQuery.validator.format(\"โปรดระบุค่ามากกว่าหรือเท่ากับ {0}\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_tr.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TR (Turkish; Türkçe)\n */\njQuery.extend(jQuery.validator.messages, {\n\trequired: \"Bu alanın doldurulması zorunludur.\",\n\tremote: \"Lütfen bu alanı düzeltin.\",\n\temail: \"Lütfen geçerli bir e-posta adresi giriniz.\",\n\turl: \"Lütfen geçerli bir web adresi (URL) giriniz.\",\n\tdate: \"Lütfen geçerli bir tarih giriniz.\",\n\tdateISO: \"Lütfen geçerli bir tarih giriniz(ISO formatında)\",\n\tnumber: \"Lütfen geçerli bir sayı giriniz.\",\n\tdigits: \"Lütfen sadece sayısal karakterler giriniz.\",\n\tcreditcard: \"Lütfen geçerli bir kredi kartı giriniz.\",\n\tequalTo: \"Lütfen aynı değeri tekrar giriniz.\",\n\taccept: \"Lütfen geçerli uzantıya sahip bir değer giriniz.\",\n\tmaxlength: jQuery.validator.format(\"Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz.\"),\n\tminlength: jQuery.validator.format(\"Lütfen en az {0} karakter uzunluğunda bir değer giriniz.\"),\n\trangelength: jQuery.validator.format(\"Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz.\"),\n\trange: jQuery.validator.format(\"Lütfen {0} ile {1} arasında bir değer giriniz.\"),\n\tmax: jQuery.validator.format(\"Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz.\"),\n\tmin: jQuery.validator.format(\"Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_uk.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: UK (Ukrainian; українська мова)\n */\njQuery.extend(jQuery.validator.messages, {\n    required: \"Це поле необхідно заповнити.\",\n    remote: \"Будь ласка, введіть правильне значення.\",\n    email: \"Будь ласка, введіть коректну адресу електронної пошти.\",\n    url: \"Будь ласка, введіть коректний URL.\",\n    date: \"Будь ласка, введіть коректну дату.\",\n    dateISO: \"Будь ласка, введіть коректну дату у форматі ISO.\",\n    number: \"Будь ласка, введіть число.\",\n    digits: \"Вводите потрібно лише цифри.\",\n    creditcard: \"Будь ласка, введіть правильний номер кредитної карти.\",\n    equalTo: \"Будь ласка, введіть таке ж значення ще раз.\",\n    accept: \"Будь ласка, виберіть файл з правильним розширенням.\",\n    maxlength: jQuery.validator.format(\"Будь ласка, введіть не більше {0} символів.\"),\n    minlength: jQuery.validator.format(\"Будь ласка, введіть не менше {0} символів.\"),\n    rangelength: jQuery.validator.format(\"Будь ласка, введіть значення довжиною від {0} до {1} символів.\"),\n    range: jQuery.validator.format(\"Будь ласка, введіть число від {0} до {1}.\"),\n    max: jQuery.validator.format(\"Будь ласка, введіть число, менше або рівно {0}.\"),\n    min: jQuery.validator.format(\"Будь ласка, введіть число, більше або рівно {0}.\")\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_vi.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: VI (Vietnamese; Tiếng Việt)\n */\njQuery.extend(jQuery.validator.messages, {\n required: \"Hãy nhập.\",\n remote: \"Hãy sửa cho đúng.\",\n email: \"Hãy nhập email.\",\n url: \"Hãy nhập URL.\",\n date: \"Hãy nhập ngày.\",\n dateISO: \"Hãy nhập ngày (ISO).\",\n number: \"Hãy nhập số.\",\n digits: \"Hãy nhập chữ số.\",\n creditcard: \"Hãy nhập số thẻ tín dụng.\",\n equalTo: \"Hãy nhập thêm lần nữa.\",\n accept: \"Phần mở rộng không đúng.\",\n maxlength: jQuery.format(\"Hãy nhập từ {0} kí tự trở xuống.\"),\n minlength: jQuery.format(\"Hãy nhập từ {0} kí tự trở lên.\"),\n rangelength: jQuery.format(\"Hãy nhập từ {0} đến {1} kí tự.\"),\n range: jQuery.format(\"Hãy nhập từ {0} đến {1}.\"),\n max: jQuery.format(\"Hãy nhập từ {0} trở xuống.\"),\n min: jQuery.format(\"Hãy nhập từ {1} trở lên.\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"必选字段\",\n\t\tremote: \"请修正该字段\",\n\t\temail: \"请输入正确格式的电子邮件\",\n\t\turl: \"请输入合法的网址\",\n\t\tdate: \"请输入合法的日期\",\n\t\tdateISO: \"请输入合法的日期 (ISO).\",\n\t\tnumber: \"请输入合法的数字\",\n\t\tdigits: \"只能输入整数\",\n\t\tcreditcard: \"请输入合法的信用卡号\",\n\t\tequalTo: \"请再次输入相同的值\",\n\t\taccept: \"请输入拥有合法后缀名的字符串\",\n\t\tmaxlength: jQuery.validator.format(\"请输入一个长度最多是 {0} 的字符串\"),\n\t\tminlength: jQuery.validator.format(\"请输入一个长度最少是 {0} 的字符串\"),\n\t\trangelength: jQuery.validator.format(\"请输入一个长度介于 {0} 和 {1} 之间的字符串\"),\n\t\trange: jQuery.validator.format(\"请输入一个介于 {0} 和 {1} 之间的值\"),\n\t\tmax: jQuery.validator.format(\"请输入一个最大为 {0} 的值\"),\n\t\tmin: jQuery.validator.format(\"请输入一个最小为 {0} 的值\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/messages_zh_TW.js",
    "content": "/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)\n * Region: TW (Taiwan)\n */\njQuery.extend(jQuery.validator.messages, {\n        required: \"必填\",\n\t\tremote: \"請修正此欄位\",\n\t\temail: \"請輸入正確的電子信箱\",\n\t\turl: \"請輸入合法的URL\",\n\t\tdate: \"請輸入合法的日期\",\n\t\tdateISO: \"請輸入合法的日期 (ISO).\",\n\t\tnumber: \"請輸入數字\",\n\t\tdigits: \"請輸入整數\",\n\t\tcreditcard: \"請輸入合法的信用卡號碼\",\n\t\tequalTo: \"請重複輸入一次\",\n\t\taccept: \"請輸入有效的後缀字串\",\n\t\tmaxlength: jQuery.validator.format(\"請輸入長度不大於{0} 的字串\"),\n\t\tminlength: jQuery.validator.format(\"請輸入長度不小於 {0} 的字串\"),\n\t\trangelength: jQuery.validator.format(\"請輸入長度介於 {0} 和 {1} 之間的字串\"),\n\t\trange: jQuery.validator.format(\"請輸入介於 {0} 和 {1} 之間的數值\"),\n\t\tmax: jQuery.validator.format(\"請輸入不大於 {0} 的數值\"),\n\t\tmin: jQuery.validator.format(\"請輸入不小於 {0} 的數值\")\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_de.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: DE\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.test(value);\n\t},\n\tnumber: function(value, element) {\n\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.test(value);\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_nl.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: NL\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?[\\.\\/-]\\d\\d?[\\.\\/-]\\d\\d\\d?\\d?$/.test(value);\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/localization/methods_pt.js",
    "content": "/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: PT_BR\n */\njQuery.extend(jQuery.validator.methods, {\n\tdate: function(value, element) {\n\t\treturn this.optional(element) || /^\\d\\d?\\/\\d\\d?\\/\\d\\d\\d?\\d?$/.test(value);\n\t}\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/package.json",
    "content": "{\n  \"name\": \"jquery-validation\",\n  \"title\": \"jQuery Validation Plugin\",\n  \"description\": \"Form validation made easy\",\n  \"version\": \"1.10.0\",\n  \"homepage\": \"https://github.com/jzaefferer/jquery-validation\",\n  \"author\": {\n    \"name\": \"Jörn Zaefferer\",\n    \"email\": \"joern.zaefferer@gmail.com\",\n    \"url\": \"http://bassistance.de\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/jzaefferer/jquery-validation.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/jzaefferer/jquery-validation/issues\"\n  },\n  \"licenses\": [\n    {\n      \"type\": \"MIT\",\n      \"url\": \"http://www.opensource.org/licenses/MIT\"\n    },\n    {\n      \"type\": \"GPL\",\n      \"url\": \"http://www.opensource.org/licenses/GPL-2.0\"\n    }\n  ],\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"grunt\": \"0.3.x\",\n    \"zipstream\": \"0.2.x\"\n  },\n  \"keywords\": []\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/events.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"firebug/firebug.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$().ready(function() {\n\tvar handler = {\n\t\tfocusin: function() {\n\t\t\t$(this).addClass(\"focus\");\n\t\t},\n\t\tfocusout: function() {\n\t\t\t$(this).removeClass(\"focus\");\n\t\t}\n\t}\n\t$(\"#commentForm\").delegate(\"focusin focusout\", \":text, textarea\", function(event) {\n\t\t/*\n\t\tthis.addClass(\"focus\").one(\"blur\", function() {\n\t\t\t$(this).removeClass(\"focus\");\n\t\t});\n\t\t*/\n\t\thandler[event.type].call(this, arguments);\n\t});\n\t$(\"#remove\").click(function() {\n\t\t$(\"#commentForm\").unbind(\"focusin\");\n\t})\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; display: block; float: left; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n.focus { background-color: red; }\n</style>\n\n</head>\n<body>\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t<p>\n\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname\" name=\"name\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t<p>\n\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true,email:true}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t<input id=\"curl\" name=\"url\" class=\"{url:true}\" value=\"\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"{required:true}\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n<button id=\"remove\">Remove focus handler</button>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.css",
    "content": "\nhtml, body {\n    margin: 0;\n    background: #FFFFFF;\n    font-family: Lucida Grande, Tahoma, sans-serif;\n    font-size: 11px;\n    overflow: hidden;\n}\n\na {\n    text-decoration: none;\n}\n\na:hover {\n    text-decoration: underline;\n}\n\n.toolbar {\n    height: 14px;\n    border-top: 1px solid ThreeDHighlight;\n    border-bottom: 1px solid ThreeDShadow;\n    padding: 2px 6px;\n    background: ThreeDFace;\n}\n\n.toolbarRight {\n    position: absolute;\n    top: 4px;\n    right: 6px;\n}\n\n#log {\n    overflow: auto;\n    position: absolute;\n    left: 0;\n    width: 100%;\n}\n\n#commandLine {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 18px;\n    border: none;\n    border-top: 1px solid ThreeDShadow;\n}\n\n/************************************************************************************************/\n\n.logRow {\n    position: relative;\n    border-bottom: 1px solid #D7D7D7;\n    padding: 2px 4px 1px 6px;\n    background-color: #FFFFFF;\n}\n\n.logRow-command {\n    font-family: Monaco, monospace;\n    color: blue;\n}\n\n.objectBox-null {\n    padding: 0 2px;\n    border: 1px solid #666666;\n    background-color: #888888;\n    color: #FFFFFF;\n}\n\n.objectBox-string {\n    font-family: Monaco, monospace;\n    color: red;\n    white-space: pre;\n}\n\n.objectBox-number {\n    color: #000088;\n}\n\n.objectBox-function {\n    font-family: Monaco, monospace;\n    color: DarkGreen;\n}\n\n.objectBox-object {\n    color: DarkGreen;\n    font-weight: bold;\n}\n\n/************************************************************************************************/\n\n.logRow-info,\n.logRow-error,\n.logRow-warning {\n    background: #FFFFFF no-repeat 2px 2px;\n    padding-left: 20px;\n    padding-bottom: 3px;\n}\n\n.logRow-info {\n    background-image: url(infoIcon.png);\n}\n\n.logRow-warning {\n    background-color: cyan;\n    background-image: url(warningIcon.png);\n}\n\n.logRow-error {\n    background-color: LightYellow;\n    background-image: url(errorIcon.png);\n}\n\n.errorMessage {\n    vertical-align: top;\n    color: #FF0000;\n}\n\n.objectBox-sourceLink {\n    position: absolute;\n    right: 4px;\n    top: 2px;\n    padding-left: 8px;\n    font-family: Lucida Grande, sans-serif;\n    font-weight: bold;\n    color: #0000FF;\n}\n\n/************************************************************************************************/\n\n.logRow-group {\n    background: #EEEEEE;\n    border-bottom: none;\n}\n\n.logGroup {\n    background: #EEEEEE;\n}\n\n.logGroupBox {\n    margin-left: 24px;\n    border-top: 1px solid #D7D7D7;\n    border-left: 1px solid #D7D7D7;\n}\n\n/************************************************************************************************/\n\n.selectorTag,\n.selectorId,\n.selectorClass {\n    font-family: Monaco, monospace;\n    font-weight: normal;\n}\n\n.selectorTag {\n    color: #0000FF;\n}\n\n.selectorId {\n    color: DarkBlue;\n}\n\n.selectorClass {\n    color: red;\n}\n\n/************************************************************************************************/\n\n.objectBox-element {\n    font-family: Monaco, monospace;\n    color: #000088;\n}\n\n.nodeChildren {\n    margin-left: 16px;\n}\n\n.nodeTag {\n    color: blue;\n}\n\n.nodeValue {\n    color: #FF0000;\n    font-weight: normal;\n}\n\n.nodeText,\n.nodeComment {\n    margin: 0 2px;\n    vertical-align: top;\n}\n\n.nodeText {\n    color: #333333;\n}\n\n.nodeComment {\n    color: DarkGreen;\n}\n\n/************************************************************************************************/\n\n.propertyNameCell {\n    vertical-align: top;\n}\n\n.propertyName {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <title>Firebug</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"firebug.css\">\n</head>\n\n<body>\n    <div id=\"toolbar\" class=\"toolbar\">\n        <a href=\"#\" onclick=\"parent.console.clear()\">Clear</a>\n        <span class=\"toolbarRight\">\n            <a href=\"#\" onclick=\"parent.console.close()\">Close</a>\n        </span>\n    </div>\n    <div id=\"log\"></div>\n    <input type=\"text\" id=\"commandLine\">\n    \n    <script>parent.onFirebugReady(document);</script>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebug.js",
    "content": "\nif (!(\"console\" in window) || !(\"firebug\" in console)) {\n(function()\n{\n    window.console = \n    {\n        log: function()\n        {\n            logFormatted(arguments, \"\");\n        },\n        \n        debug: function()\n        {\n            logFormatted(arguments, \"debug\");\n        },\n        \n        info: function()\n        {\n            logFormatted(arguments, \"info\");\n        },\n        \n        warn: function()\n        {\n            logFormatted(arguments, \"warning\");\n        },\n        \n        error: function()\n        {\n            logFormatted(arguments, \"error\");\n        },\n        \n        assert: function(truth, message)\n        {\n            if (!truth)\n            {\n                var args = [];\n                for (var i = 1; i < arguments.length; ++i)\n                    args.push(arguments[i]);\n                \n                logFormatted(args.length ? args : [\"Assertion Failure\"], \"error\");\n                throw message ? message : \"Assertion Failure\";\n            }\n        },\n        \n        dir: function(object)\n        {\n            var html = [];\n                        \n            var pairs = [];\n            for (var name in object)\n            {\n                try\n                {\n                    pairs.push([name, object[name]]);\n                }\n                catch (exc)\n                {\n                }\n            }\n            \n            pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });\n            \n            html.push('<table>');\n            for (var i = 0; i < pairs.length; ++i)\n            {\n                var name = pairs[i][0], value = pairs[i][1];\n                \n                html.push('<tr>', \n                '<td class=\"propertyNameCell\"><span class=\"propertyName\">',\n                    escapeHTML(name), '</span></td>', '<td><span class=\"propertyValue\">');\n                appendObject(value, html);\n                html.push('</span></td></tr>');\n            }\n            html.push('</table>');\n            \n            logRow(html, \"dir\");\n        },\n        \n        dirxml: function(node)\n        {\n            var html = [];\n            \n            appendNode(node, html);\n            logRow(html, \"dirxml\");\n        },\n        \n        group: function()\n        {\n            logRow(arguments, \"group\", pushGroup);\n        },\n        \n        groupEnd: function()\n        {\n            logRow(arguments, \"\", popGroup);\n        },\n        \n        time: function(name)\n        {\n            timeMap[name] = (new Date()).getTime();\n        },\n        \n        timeEnd: function(name)\n        {\n            if (name in timeMap)\n            {\n                var delta = (new Date()).getTime() - timeMap[name];\n                logFormatted([name+ \":\", delta+\"ms\"]);\n                delete timeMap[name];\n            }\n        },\n        \n        count: function()\n        {\n            this.warn([\"count() not supported.\"]);\n        },\n        \n        trace: function()\n        {\n            this.warn([\"trace() not supported.\"]);\n        },\n        \n        profile: function()\n        {\n            this.warn([\"profile() not supported.\"]);\n        },\n        \n        profileEnd: function()\n        {\n        },\n        \n        clear: function()\n        {\n            consoleBody.innerHTML = \"\";\n        },\n\n        open: function()\n        {\n            toggleConsole(true);\n        },\n        \n        close: function()\n        {\n            if (frameVisible)\n                toggleConsole();\n        }\n    };\n \n    // ********************************************************************************************\n       \n    var consoleFrame = null;\n    var consoleBody = null;\n    var commandLine = null;\n    \n    var frameVisible = false;\n    var messageQueue = [];\n    var groupStack = [];\n    var timeMap = {};\n    \n    var clPrefix = \">>> \";\n    \n    var isFirefox = navigator.userAgent.indexOf(\"Firefox\") != -1;\n    var isIE = navigator.userAgent.indexOf(\"MSIE\") != -1;\n    var isOpera = navigator.userAgent.indexOf(\"Opera\") != -1;\n    var isSafari = navigator.userAgent.indexOf(\"AppleWebKit\") != -1;\n\n    // ********************************************************************************************\n\n    function toggleConsole(forceOpen)\n    {\n        frameVisible = forceOpen || !frameVisible;\n        if (consoleFrame)\n            consoleFrame.style.visibility = frameVisible ? \"visible\" : \"hidden\";\n        else\n            waitForBody();\n    }\n\n    function focusCommandLine()\n    {\n        toggleConsole(true);\n        if (commandLine)\n            commandLine.focus();\n    }\n\n    function waitForBody()\n    {\n        if (document.body)\n            createFrame();\n        else\n            setTimeout(waitForBody, 200);\n    }    \n\n    function createFrame()\n    {\n        if (consoleFrame)\n            return;\n        \n        window.onFirebugReady = function(doc)\n        {\n            window.onFirebugReady = null;\n\n            var toolbar = doc.getElementById(\"toolbar\");\n            toolbar.onmousedown = onSplitterMouseDown;\n\n            commandLine = doc.getElementById(\"commandLine\");\n            addEvent(commandLine, \"keydown\", onCommandLineKeyDown);\n\n            addEvent(doc, isIE || isSafari ? \"keydown\" : \"keypress\", onKeyDown);\n            \n            consoleBody = doc.getElementById(\"log\");\n            layout();\n            flush();\n        }\n\n        var baseURL = getFirebugURL();\n\n        consoleFrame = document.createElement(\"iframe\");\n        consoleFrame.setAttribute(\"src\", baseURL+\"/firebug.html\");\n        consoleFrame.setAttribute(\"frameBorder\", \"0\");\n        consoleFrame.style.visibility = (frameVisible ? \"visible\" : \"hidden\");    \n        consoleFrame.style.zIndex = \"2147483647\";\n        consoleFrame.style.position = \"fixed\";\n        consoleFrame.style.width = \"100%\";\n        consoleFrame.style.left = \"0\";\n        consoleFrame.style.bottom = \"0\";\n        consoleFrame.style.height = \"200px\";\n        document.body.appendChild(consoleFrame);\n    }\n    \n    function getFirebugURL()\n    {\n        var scripts = document.getElementsByTagName(\"script\");\n        for (var i = 0; i < scripts.length; ++i)\n        {\n            if (scripts[i].src.indexOf(\"firebug.js\") != -1)\n            {\n                var lastSlash = scripts[i].src.lastIndexOf(\"/\");\n                return scripts[i].src.substr(0, lastSlash);\n            }\n        }\n    }\n    \n    function evalCommandLine()\n    {\n        var text = commandLine.value;\n        commandLine.value = \"\";\n\n        logRow([clPrefix, text], \"command\");\n        \n        var value;\n        try\n        {\n            value = eval(text);\n        }\n        catch (exc)\n        {\n        }\n\n        console.log(value);\n    }\n    \n    function layout()\n    {\n        var toolbar = consoleBody.ownerDocument.getElementById(\"toolbar\");\n        var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);\n        consoleBody.style.top = toolbar.offsetHeight + \"px\";\n        consoleBody.style.height = height + \"px\";\n        \n        commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + \"px\";\n    }\n    \n    function logRow(message, className, handler)\n    {\n        if (consoleBody)\n            writeMessage(message, className, handler);\n        else\n        {\n            messageQueue.push([message, className, handler]);\n            waitForBody();\n        }\n    }\n    \n    function flush()\n    {\n        var queue = messageQueue;\n        messageQueue = [];\n        \n        for (var i = 0; i < queue.length; ++i)\n            writeMessage(queue[i][0], queue[i][1], queue[i][2]);\n    }\n\n    function writeMessage(message, className, handler)\n    {\n        var isScrolledToBottom =\n            consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;\n\n        if (!handler)\n            handler = writeRow;\n        \n        handler(message, className);\n        \n        if (isScrolledToBottom)\n            consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;\n    }\n    \n    function appendRow(row)\n    {\n        var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;\n        container.appendChild(row);\n    }\n\n    function writeRow(message, className)\n    {\n        var row = consoleBody.ownerDocument.createElement(\"div\");\n        row.className = \"logRow\" + (className ? \" logRow-\"+className : \"\");\n        row.innerHTML = message.join(\"\");\n        appendRow(row);\n    }\n\n    function pushGroup(message, className)\n    {\n        logFormatted(message, className);\n\n        var groupRow = consoleBody.ownerDocument.createElement(\"div\");\n        groupRow.className = \"logGroup\";\n        var groupRowBox = consoleBody.ownerDocument.createElement(\"div\");\n        groupRowBox.className = \"logGroupBox\";\n        groupRow.appendChild(groupRowBox);\n        appendRow(groupRowBox);\n        groupStack.push(groupRowBox);\n    }\n\n    function popGroup()\n    {\n        groupStack.pop();\n    }\n    \n    // ********************************************************************************************\n\n    function logFormatted(objects, className)\n    {\n        var html = [];\n\n        var format = objects[0];\n        var objIndex = 0;\n\n        if (typeof(format) != \"string\")\n        {\n            format = \"\";\n            objIndex = -1;\n        }\n\n        var parts = parseFormat(format);\n        for (var i = 0; i < parts.length; ++i)\n        {\n            var part = parts[i];\n            if (part && typeof(part) == \"object\")\n            {\n                var object = objects[++objIndex];\n                part.appender(object, html);\n            }\n            else\n                appendText(part, html);\n        }\n\n        for (var i = objIndex+1; i < objects.length; ++i)\n        {\n            appendText(\" \", html);\n            \n            var object = objects[i];\n            if (typeof(object) == \"string\")\n                appendText(object, html);\n            else\n                appendObject(object, html);\n        }\n        \n        logRow(html, className);\n    }\n\n    function parseFormat(format)\n    {\n        var parts = [];\n\n        var reg = /((^%|[^\\\\]%)(\\d+)?(\\.)([a-zA-Z]))|((^%|[^\\\\]%)([a-zA-Z]))/;    \n        var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};\n\n        for (var m = reg.exec(format); m; m = reg.exec(format))\n        {\n            var type = m[8] ? m[8] : m[5];\n            var appender = type in appenderMap ? appenderMap[type] : appendObject;\n            var precision = m[3] ? parseInt(m[3]) : (m[4] == \".\" ? -1 : 0);\n\n            parts.push(format.substr(0, m[0][0] == \"%\" ? m.index : m.index+1));\n            parts.push({appender: appender, precision: precision});\n\n            format = format.substr(m.index+m[0].length);\n        }\n\n        parts.push(format);\n\n        return parts;\n    }\n\n    function escapeHTML(value)\n    {\n        function replaceChars(ch)\n        {\n            switch (ch)\n            {\n                case \"<\":\n                    return \"&lt;\";\n                case \">\":\n                    return \"&gt;\";\n                case \"&\":\n                    return \"&amp;\";\n                case \"'\":\n                    return \"&#39;\";\n                case '\"':\n                    return \"&quot;\";\n            }\n            return \"?\";\n        };\n        return String(value).replace(/[<>&\"']/g, replaceChars);\n    }\n\n    function objectToString(object)\n    {\n        try\n        {\n            return object+\"\";\n        }\n        catch (exc)\n        {\n            return null;\n        }\n    }\n\n    // ********************************************************************************************\n\n    function appendText(object, html)\n    {\n        html.push(escapeHTML(objectToString(object)));\n    }\n\n    function appendNull(object, html)\n    {\n        html.push('<span class=\"objectBox-null\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendString(object, html)\n    {\n        html.push('<span class=\"objectBox-string\">&quot;', escapeHTML(objectToString(object)),\n            '&quot;</span>');\n    }\n\n    function appendInteger(object, html)\n    {\n        html.push('<span class=\"objectBox-number\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendFloat(object, html)\n    {\n        html.push('<span class=\"objectBox-number\">', escapeHTML(objectToString(object)), '</span>');\n    }\n\n    function appendFunction(object, html)\n    {\n        var reName = /function ?(.*?)\\(/;\n        var m = reName.exec(objectToString(object));\n        var name = m ? m[1] : \"function\";\n        html.push('<span class=\"objectBox-function\">', escapeHTML(name), '()</span>');\n    }\n    \n    function appendObject(object, html)\n    {\n        try\n        {\n            if (object == undefined)\n                appendNull(\"undefined\", html);\n            else if (object == null)\n                appendNull(\"null\", html);\n            else if (typeof object == \"string\")\n                appendString(object, html);\n            else if (typeof object == \"number\")\n                appendInteger(object, html);\n            else if (typeof object == \"function\")\n                appendFunction(object, html);\n            else if (object.nodeType == 1)\n                appendSelector(object, html);\n            else if (typeof object == \"object\")\n                appendObjectFormatted(object, html);\n            else\n                appendText(object, html);\n        }\n        catch (exc)\n        {\n        }\n    }\n        \n    function appendObjectFormatted(object, html)\n    {\n        var text = objectToString(object);\n        var reObject = /\\[object (.*?)\\]/;\n\n        var m = reObject.exec(text);\n        html.push('<span class=\"objectBox-object\">', m ? m[1] : text, '</span>')\n    }\n    \n    function appendSelector(object, html)\n    {\n        html.push('<span class=\"objectBox-selector\">');\n\n        html.push('<span class=\"selectorTag\">', escapeHTML(object.nodeName.toLowerCase()), '</span>');\n        if (object.id)\n            html.push('<span class=\"selectorId\">#', escapeHTML(object.id), '</span>');\n        if (object.className)\n            html.push('<span class=\"selectorClass\">.', escapeHTML(object.className), '</span>');\n\n        html.push('</span>');\n    }\n\n    function appendNode(node, html)\n    {\n        if (node.nodeType == 1)\n        {\n            html.push(\n                '<div class=\"objectBox-element\">',\n                    '&lt;<span class=\"nodeTag\">', node.nodeName.toLowerCase(), '</span>');\n\n            for (var i = 0; i < node.attributes.length; ++i)\n            {\n                var attr = node.attributes[i];\n                if (!attr.specified)\n                    continue;\n                \n                html.push('&nbsp;<span class=\"nodeName\">', attr.nodeName.toLowerCase(),\n                    '</span>=&quot;<span class=\"nodeValue\">', escapeHTML(attr.nodeValue),\n                    '</span>&quot;')\n            }\n\n            if (node.firstChild)\n            {\n                html.push('&gt;</div><div class=\"nodeChildren\">');\n\n                for (var child = node.firstChild; child; child = child.nextSibling)\n                    appendNode(child, html);\n                    \n                html.push('</div><div class=\"objectBox-element\">&lt;/<span class=\"nodeTag\">', \n                    node.nodeName.toLowerCase(), '&gt;</span></div>');\n            }\n            else\n                html.push('/&gt;</div>');\n        }\n        else if (node.nodeType == 3)\n        {\n            html.push('<div class=\"nodeText\">', escapeHTML(node.nodeValue),\n                '</div>');\n        }\n    }\n\n    // ********************************************************************************************\n    \n    function addEvent(object, name, handler)\n    {\n        if (document.all)\n            object.attachEvent(\"on\"+name, handler);\n        else\n            object.addEventListener(name, handler, false);\n    }\n    \n    function removeEvent(object, name, handler)\n    {\n        if (document.all)\n            object.detachEvent(\"on\"+name, handler);\n        else\n            object.removeEventListener(name, handler, false);\n    }\n    \n    function cancelEvent(event)\n    {\n        if (document.all)\n            event.cancelBubble = true;\n        else\n            event.stopPropagation();        \n    }\n\n    function onError(msg, href, lineNo)\n    {\n        var html = [];\n        \n        var lastSlash = href.lastIndexOf(\"/\");\n        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);\n        \n        html.push(\n            '<span class=\"errorMessage\">', msg, '</span>', \n            '<div class=\"objectBox-sourceLink\">', fileName, ' (line ', lineNo, ')</div>'\n        );\n        \n        logRow(html, \"error\");\n    };\n\n    function onKeyDown(event)\n    {\n        if (event.keyCode == 123)\n            toggleConsole();\n        else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey\n                 && (event.metaKey || event.ctrlKey))\n            focusCommandLine();\n        else\n            return;\n        \n        cancelEvent(event);\n    }\n\n    function onSplitterMouseDown(event)\n    {\n        if (isSafari || isOpera)\n            return;\n        \n        addEvent(document, \"mousemove\", onSplitterMouseMove);\n        addEvent(document, \"mouseup\", onSplitterMouseUp);\n\n        for (var i = 0; i < frames.length; ++i)\n        {\n            addEvent(frames[i].document, \"mousemove\", onSplitterMouseMove);\n            addEvent(frames[i].document, \"mouseup\", onSplitterMouseUp);\n        }\n    }\n    \n    function onSplitterMouseMove(event)\n    {\n        var win = document.all\n            ? event.srcElement.ownerDocument.parentWindow\n            : event.target.ownerDocument.defaultView;\n\n        var clientY = event.clientY;\n        if (win != win.parent)\n            clientY += win.frameElement ? win.frameElement.offsetTop : 0;\n        \n        var height = consoleFrame.offsetTop + consoleFrame.clientHeight;\n        var y = height - clientY;\n        \n        consoleFrame.style.height = y + \"px\";\n        layout();\n    }\n    \n    function onSplitterMouseUp(event)\n    {\n        removeEvent(document, \"mousemove\", onSplitterMouseMove);\n        removeEvent(document, \"mouseup\", onSplitterMouseUp);\n\n        for (var i = 0; i < frames.length; ++i)\n        {\n            removeEvent(frames[i].document, \"mousemove\", onSplitterMouseMove);\n            removeEvent(frames[i].document, \"mouseup\", onSplitterMouseUp);\n        }\n    }\n    \n    function onCommandLineKeyDown(event)\n    {\n        if (event.keyCode == 13)\n            evalCommandLine();\n        else if (event.keyCode == 27)\n            commandLine.value = \"\";\n    }\n    \n    window.onerror = onError;\n    addEvent(document, isIE || isSafari ? \"keydown\" : \"keypress\", onKeyDown);\n    \n    if (document.documentElement.getAttribute(\"debug\") == \"true\")\n        toggleConsole(true);\n})();\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/firebug/firebugx.js",
    "content": "\nif (!(\"console\" in window) || !(\"firebug\" in console))\n{\n    var names = [\"log\", \"debug\", \"info\", \"warn\", \"error\", \"assert\", \"dir\", \"dirxml\",\n    \"group\", \"groupEnd\", \"time\", \"timeEnd\", \"count\", \"trace\", \"profile\", \"profileEnd\"];\n\n    window.console = {};\n    for (var i = 0; i < names.length; ++i)\n        window.console[names[i]] = function() {}\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/index.html",
    "content": "<!DOCTYPE html>\n<html id=\"html\">\n<head>\n\t<title>jQuery - Validation Test Suite</title>\n\t<link rel=\"Stylesheet\" media=\"screen\" href=\"qunit/qunit.css\" />\n\t<script type=\"text/javascript\" src=\"jquery.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.form.js\"></script>\n\t<script type=\"text/javascript\" src=\"qunit/qunit.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.metadata.js\"></script>\n\t<script type=\"text/javascript\" src=\"../lib/jquery.mockjax.js\"></script>\n\t<script type=\"text/javascript\" src=\"../jquery.validate.js\"></script>\n\t<script type=\"text/javascript\" src=\"../additional-methods.js\"></script>\n\t<script type=\"text/javascript\" src=\"test.js\"></script>\n\t<script type=\"text/javascript\" src=\"rules.js\"></script>\n\t<script type=\"text/javascript\" src=\"messages.js\"></script>\n\t<script type=\"text/javascript\" src=\"methods.js\"></script>\n</head>\n<body id=\"body\">\n\t<h1 id=\"qunit-header\">\n\t\t<a href=\"http://bassistance.de/jquery-plugins/jquery-plugin-validation/\">jQuery Validation Plugin</a> Test Suite\n\t\t<a href=\"?jquery=1.3.2\">jQuery 1.3.2</a>\n\t\t<a href=\"?jquery=1.4.2\">jQuery 1.4.2</a>\n\t\t<a href=\"?jquery=1.4.4\">jQuery 1.4.4</a>\n\t\t<a href=\"?jquery=1.5.2\">jQuery 1.5.2</a>\n\t\t<a href=\"?jquery=1.6.1\">jQuery 1.6.1</a>\n\t\t<a href=\"?jquery=1.7.2\">jQuery 1.7.2</a>\n\t\t<a href=\"?jquery=git\">jQuery Latest (git)</a>\n\t\t</h1>\n\t<div>\n\t</div>\n\t<h2 id=\"qunit-banner\"></h2>\n\t<div id=\"qunit-testrunner-toolbar\"></div>\n\t<h2 id=\"qunit-userAgent\"></h2>\n\t<ol id=\"qunit-tests\"></ol>\n\n\t<!-- Test HTML -->\n\t<div id=\"other\" style=\"display:none;\">\n\t\t<input type=\"password\" name=\"pw1\" id=\"pw1\" value=\"engfeh\" />\n\t\t<input type=\"password\" name=\"pw2\" id=\"pw2\" value=\"\" />\n\t</div>\n\t<div id=\"qunit-fixture\">\n\t\t<p id=\"firstp\">See <a id=\"simon1\" href=\"http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector\" rel=\"bookmark\">this blog entry</a> for more information.</p>\n\t\t<p id=\"ap\">\n\t\t\tHere are some links in a normal paragraph: <a id=\"google\" href=\"http://www.google.com/\" title=\"Google!\">Google</a>,\n\t\t\t<a id=\"groups\" href=\"http://groups.google.com/\">Google Groups</a>.\n\t\t\tThis link has <code><a href=\"#\" id=\"anchor1\">class=\"blog\"</a></code>:\n\t\t\t<a href=\"http://diveintomark.org/\" class=\"blog\" hreflang=\"en\" id=\"mark\">diveintomark</a>\n\n\t\t</p>\n\t\t<div id=\"foo\">\n\t\t\t<p id=\"sndp\">Everything inside the red border is inside a div with <code>id=\"foo\"</code>.</p>\n\t\t\t<p lang=\"en\" id=\"en\">This is a normal link: <a id=\"yahoo\" href=\"http://www.yahoo.com/\" class=\"blogTest\">Yahoo</a></p>\n\t\t\t<p id=\"sap\">This link has <code><a href=\"#2\" id=\"anchor2\">class=\"blog\"</a></code>: <a href=\"http://simon.incutio.com/\" class=\"blog link\" id=\"simon\">Simon Willison's Weblog</a></p>\n\n\t\t</div>\n\t\t<p id=\"first\">Try them out:</p>\n\t\t<ul id=\"firstUL\"></ul>\n\t\t<ol id=\"empty\"></ol>\n\n\t\t<form id=\"testForm1\">\n\t\t\t<input type=\"text\" class=\"{required:true,minlength:2}\" title=\"buga\" name=\"firstname\" id=\"firstname\" />\n\t\t\t<label id=\"errorFirstname\" for=\"firstname\" class=\"error\">error for firstname</label>\n\t\t\t<input type=\"text\" class=\"{required:true}\" title=\"buga\" name=\"lastname\" id=\"lastname\" />\n\t\t\t<input type=\"text\" class=\"{required:true}\" title=\"something\" name=\"something\" id=\"something\" value=\"something\" />\n\t\t</form>\n\n\t\t<form id=\"testForm1clean\">\n\t\t\t<input title=\"buga\" name=\"firstname\" id=\"firstnamec\" />\n\t\t\t<label id=\"errorFirstname\" for=\"firstname\" class=\"error\">error for firstname</label>\n\t\t\t<input title=\"buga\" name=\"lastname\" id=\"lastnamec\" />\n\t\t\t<input name=\"username\" id=\"usernamec\" />\n\t\t</form>\n\n\t\t<form id=\"userForm\">\n\t\t\t<input type=\"text\" class=\"{required:true}\" name=\"username\" id=\"username\" />\n\t\t\t<input type=\"submit\" name=\"submitButton\" value=\"submitButtonValue\" />\n\t\t</form>\n\n\t\t<form id=\"signupForm\" action=\"form.php\">\n\t\t\t<input id=\"user\" name=\"user\" title=\"Please enter your username (at least 3 characters)\" class=\"{required:true,minlength:3}\" />\n\t\t\t<input type=\"password\" name=\"password\" id=\"password\" class=\"{required:true,minlength:5}\" />\n\t\t</form>\n\n\t\t<form id=\"testForm2\">\n\t\t\t<input class=\"{required:true}\" type=\"radio\" name=\"agree\" id=\"agb\" />\n\t\t\t<label for=\"agree\" id=\"agreeLabel\" class=\"xerror\">error for agb</label>\n\t\t</form>\n\n\t\t<form id=\"testForm3\">\n\t\t\t<select class=\"{required:true}\" name=\"meal\" id=\"meal\" >\n\t\t\t\t<option value=\"\">Please select...</option>\n\t\t\t\t<option value=\"1\">Food</option>\n\t\t\t\t<option value=\"2\">Milk</option>\n\t\t\t</select>\n\t\t</form>\n\t\t<div class=\"error\" id=\"errorContainer\">\n\t\t\t<ul>\n\t\t\t\t<li class=\"error\" id=\"errorWrapper\">\n\t\t\t\t\t<label for=\"meal\" id=\"mealLabel\" class=\"error\">error for meal</label>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<form id=\"testForm4\">\n\t\t\t<input class=\"{foo:true}\" name=\"f1\" id=\"f1\" />\n\t\t\t<input class=\"{bar:true}\" name=\"f2\" id=\"f2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm5\">\n\t\t\t<input class=\"{equalTo:'#x2'}\" value=\"x\" name=\"x1\" id=\"x1\" />\n\t\t\t<input class=\"{equalTo:'#x1'}\" value=\"y\" name=\"x2\" id=\"x2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm6\">\n\t\t\t<input class=\"{required:true,minlength:2}\" type=\"checkbox\" name=\"check\" id=\"form6check1\" />\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"form6check2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm7\">\n\t\t\t<select class=\"{required:true,minlength:2}\" name=\"selectf7\" id=\"selectf7\" multiple=\"multiple\">\n\t\t\t\t<option id=\"optionxa\" value=\"0\">0</option>\n\t\t\t\t<option id=\"optionxb\" value=\"1\">1</option>\n\t\t\t\t<option id=\"optionxc\" value=\"2\">2</option>\n\t\t\t\t<option id=\"optionxd\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t</form>\n\n\t\t<form id=\"dateRangeForm\">\n\t\t\t<input id=\"fromDate\" name=\"fromDate\" class=\"requiredDateRange\" value=\"x\" />\n\t\t\t<input id=\"toDate\" name=\"toDate\" class=\"requiredDateRange\" value=\"y\" />\n\t\t\t<span class=\"errorContainer\"></span>\n\t\t</form>\n\n\t\t<form id=\"testForm8\">\n\t\t\t<input id=\"form8input\" class=\"{required:true,number:true,rangelength:[2,8]}\" name=\"abc\" />\n\t\t\t<input type=\"radio\" name=\"radio1\"/>\n\t\t</form>\n\n\t\t<form id=\"testForm9\">\n\t\t\t<input id=\"testEmail9\" class=\"{required:true,email:true,messages:{required:'required',email:'email'}}\" />\n\t\t</form>\n\n\t\t<form id=\"testForm10\">\n\t\t\t<input type=\"radio\" name=\"testForm10Radio\" value=\"1\" id=\"testForm10Radio1\" />\n\t\t\t<input type=\"radio\" name=\"testForm10Radio\" value=\"2\" id=\"testForm10Radio2\" />\n\t\t</form>\n\n\t\t<form id=\"testForm11\">\n\t\t\t<!-- HTML5 -->\n\t\t\t<input required type=\"text\" name=\"testForm11Text\" id=\"testForm11text1\" />\n\t\t</form>\n\n\t\t<form id=\"testForm12\">\n\t\t\t<!-- empty \"type\" attribute -->\n\t\t\t<input name=\"testForm12text\" id=\"testForm12text\" class=\"{required:true}\" />\n\t\t</form>\n\n\t\t<form id=\"dataMessages\">\n\t\t\t<input name=\"dataMessagesName\" id=\"dataMessagesName\" class=\"required\" data-msg-required=\"You must enter a value here\" />\n\t\t</form>\n\n\t\t<div id=\"simplecontainer\">\n\t\t\t<h3></h3>\n\t\t</div>\n\n\t\t<div id=\"container\"></div>\n\n\t\t<ol id=\"labelcontainer\"></ol>\n\n\t\t<form id=\"elementsOrder\">\n\t\t\t<select class=\"required\" name=\"order1\" id=\"order1\"><option value=\"\">none</option></select>\n\t\t\t<input class=\"required\" name=\"order2\" id=\"order2\"/>\n\t\t\t<input class=\"required\" name=\"order3\" type=\"checkbox\" id=\"order3\"/>\n\t\t\t<input class=\"required\" name=\"order4\" id=\"order4\"/>\n\t\t\t<input class=\"required\" name=\"order5\" type=\"radio\" id=\"order5\"/>\n\t\t\t<input class=\"required\" name=\"order6\" id=\"order6\"/>\n\t\t\t<ul id=\"orderContainer\">\n\t\t\t</ul>\n\t\t</form>\n\n\t\t<form id=\"form\" action=\"formaction\">\n\t\t\t<input type=\"text\" name=\"action\" value=\"Test\" id=\"text1\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"   \" id=\"text1b\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"T \" id=\"text1c\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"T\" id=\"text2\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"TestTestTest\" id=\"text3\"/>\n\n\t\t\t<input type=\"text\" name=\"action\" value=\"0\" id=\"value1\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"10\" id=\"value2\"/>\n\t\t\t<input type=\"text\" name=\"text2\" value=\"1000\" id=\"value3\"/>\n\n\t\t\t<input type=\"radio\" name=\"radio1\" id=\"radio1\"/>\n\t\t\t<input type=\"radio\" name=\"radio1\" id=\"radio1a\"/>\n\t\t\t<input type=\"radio\" name=\"radio2\" id=\"radio2\" checked=\"checked\"/>\n\t\t\t<input type=\"radio\" name=\"radio\" id=\"radio3\"/>\n\t\t\t<input type=\"radio\" name=\"radio\" id=\"radio4\" checked=\"checked\"/>\n\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"check1\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check\" id=\"check1b\" />\n\n\t\t\t<input type=\"checkbox\" name=\"check2\" id=\"check2\"/>\n\n\t\t\t<input type=\"checkbox\" name=\"check3\" id=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"check3\" checked=\"checked\"/>\n\n\t\t\t<input type=\"hidden\" name=\"hidden\" id=\"hidden1\"/>\n\t\t\t<input type=\"text\" style=\"display:none;\" name=\"foo[bar]\" id=\"hidden2\"/>\n\n\t\t\t<input type=\"text\" readonly=\"readonly\" id=\"name\" name=\"name\" value=\"name\" />\n\n\t\t\t<button name=\"button\">Button</button>\n\n\t\t\t<textarea id=\"area1\" name=\"area1\">foobar</textarea>\n\n\n\t\t\t<textarea id=\"area2\" name=\"area2\"></textarea>\n\n\t\t\t<select name=\"select1\" id=\"select1\">\n\t\t\t\t<option id=\"option1a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option1b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option1c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option1d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select2\" id=\"select2\">\n\t\t\t\t<option id=\"option2a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option2b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option2c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option2d\" selected=\"selected\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select3\" id=\"select3\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option3a\" value=\"\">Nothing</option>\n\t\t\t\t<option id=\"option3b\" selected=\"selected\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option3c\" selected=\"selected\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option3d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t\t<select name=\"select4\" id=\"select4\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option4a\" selected=\"selected\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option4b\" selected=\"selected\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option4c\" selected=\"selected\" value=\"3\">3</option>\n\t\t\t\t<option id=\"option4d\" selected=\"selected\" value=\"4\">4</option>\n\t\t\t\t<option id=\"option4e\" selected=\"selected\" value=\"5\">5</option>\n\t\t\t</select>\n\t\t\t<select name=\"select5\" id=\"select5\" multiple=\"multiple\">\n\t\t\t\t<option id=\"option5a\" value=\"0\">0</option>\n\t\t\t\t<option id=\"option5b\" value=\"1\">1</option>\n\t\t\t\t<option id=\"option5c\" value=\"2\">2</option>\n\t\t\t\t<option id=\"option5d\" value=\"3\">3</option>\n\t\t\t</select>\n\t\t</form>\n\n\t\t<form id=\"v2\">\n\t\t\t<input id=\"v2-i1\" name=\"v2-i1\" class=\"required\" />\n\t\t\t<input id=\"v2-i2\" name=\"v2-i2\" class=\"required email\" />\n\t\t\t<input id=\"v2-i3\" name=\"v2-i3\" class=\"url\" />\n\t\t\t<input id=\"v2-i4\" name=\"v2-i4\" class=\"required\" minlength=\"2\" />\n\t\t\t<input id=\"v2-i5\" name=\"v2-i5\" class=\"required\" minlength=\"2\" maxlength=\"5\" customMethod1=\"123\" />\n\t\t\t<input id=\"v2-i6\" name=\"v2-i6\" class=\"required customMethod2 {maxlength: 5}\" minlength=\"2\" />\n\t\t\t<input id=\"v2-i7\" name=\"v2-i7\" />\n\t\t</form>\n\n\t\t<form id=\"checkables\">\n\t\t\t<input type=\"checkbox\" id=\"checkable1\" name=\"checkablesgroup\" class=\"required\" />\n\t\t\t<input type=\"checkbox\" id=\"checkable2\" name=\"checkablesgroup\" />\n\t\t\t<input type=\"checkbox\" id=\"checkable3\" name=\"checkablesgroup\" />\n\t\t</form>\n\n\n\t\t<form id=\"subformRequired\">\n\t\t\t<div class=\"billingAddressControl\">\n            \t<input type=\"checkbox\" id=\"bill_to_co\" name=\"bill_to_co\" class=\"toggleCheck\" checked=\"checked\" style=\"width: auto;\" tabindex=\"1\" />\n            \t<label for=\"bill_to_co\" style=\"cursor:pointer\">Same as Company Address</label>\n          \t</div>\n\t\t\t<div id=\"subform\">\n\t\t\t\t<input  maxlength=\"40\" class=\"billingRequired\" name=\"bill_first_name\" size=\"20\" type=\"text\" tabindex=\"2\" value=\"\" />\n\t\t\t</div>\n\t\t\t<input id=\"co_name\" class=\"required\" maxlength=\"40\" name=\"co_name\" size=\"20\" type=\"text\" tabindex=\"1\" value=\"\" />\n\t\t</form>\n\n\t\t<form id=\"withTitle\">\n\t\t\t<input class=\"required\" name=\"hastitle\" type=\"text\" title=\"fromtitle\" />\n\t\t</form>\n\n\t\t<form id=\"ccform\" method=\"get\" action=\"\">\n\t\t\t<input id=\"cardnumber\" name=\"cardnumber\" />\n\t\t</form>\n\n\t\t<form id=\"productInfo\">\n\t\t\t<input class=\"productInfo\" name=\"partnumber\">\n\t\t\t<input class=\"productInfo\" name=\"description\">\n\t\t\t<input class=\"productInfo\" name=\"color\">\n\t\t\t<input class=\"productInfo\" type=\"checkbox\" name=\"discount\" />\n\t\t</form>\n\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/jquery.js",
    "content": "(function() {\n\nvar parts = document.location.search.slice( 1 ).split( \"&\" ),\n\tlength = parts.length,\n\ti = 0,\n\tcurrent,\n\tversion = \"1.3.2\",\n\tfile = \"http://code.jquery.com/jquery-git.js\";\n\nfor ( ; i < length; i++ ) {\n\tcurrent = parts[ i ].split( \"=\" );\n\tif ( current[ 0 ] === \"jquery\" ) {\n\t\tversion = current[ 1 ];\n\t\tbreak;\n\t}\n}\n\nif (version != \"git\") {\n\tfile = \"../lib/jquery-\" + version + \".js\";\n}\n\n\ndocument.write( \"<script src='\" + file + \"'></script>\" );\n\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/large.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/screen.css\" />\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.metadata.js\" type=\"text/javascript\"></script>\n<script src=\"../lib/jquery.ajaxQueue.js\" type=\"text/javascript\"></script>\n<script src=\"../jquery.validate.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n$().ready(function() {\n\t$(\"#commentForm\").validate();\n});\n</script>\n\n<style type=\"text/css\">\n#commentForm { width: 500px; }\n#commentForm label { width: 250px; display: block; float: left; }\n#commentForm label.error, #commentForm input.submit { margin-left: 253px; }\n.focus { background-color: red; }\n</style>\n\n</head>\n<body>\n<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\t<fieldset>\n\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t<p>\n\t\t\t<label for=\"cname-x0\">Name (required, at least 2 characters)</label>\n\t\t\t<input id=\"cname-x0\" name=\"name-x0\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t<p>\n\t\t\t<label for=\"cemail-x0\">E-Mail (required)</label>\n\t\t\t<input id=\"cemail-x0\" name=\"email-x0\" class=\"{required:true,email:true}\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x0\">URL (optional)</label>\n\t\t\t<input id=\"curl-x0\" name=\"url-x0\" class=\"{url:true}\" value=\"\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x0\">Your comment (required)</label>\n\t\t\t<textarea id=\"ccomment-x0\" name=\"comment-x0\" class=\"{required:true}\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x1\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x1\" id=\"cname-x1\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x1\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x1\" id=\"cemail-x1\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x1\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x1\" id=\"curl-x1\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x1\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x1\" id=\"ccomment-x1\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x2\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x2\" id=\"cname-x2\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x2\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x2\" id=\"cemail-x2\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x2\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x2\" id=\"curl-x2\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x2\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x2\" id=\"ccomment-x2\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x3\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x3\" id=\"cname-x3\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x3\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x3\" id=\"cemail-x3\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x3\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x3\" id=\"curl-x3\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x3\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x3\" id=\"ccomment-x3\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x4\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x4\" id=\"cname-x4\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x4\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x4\" id=\"cemail-x4\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x4\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x4\" id=\"curl-x4\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x4\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x4\" id=\"ccomment-x4\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x5\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x5\" id=\"cname-x5\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x5\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x5\" id=\"cemail-x5\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x5\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x5\" id=\"curl-x5\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x5\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x5\" id=\"ccomment-x5\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x6\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x6\" id=\"cname-x6\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x6\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x6\" id=\"cemail-x6\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x6\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x6\" id=\"curl-x6\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x6\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x6\" id=\"ccomment-x6\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x7\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x7\" id=\"cname-x7\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x7\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x7\" id=\"cemail-x7\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x7\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x7\" id=\"curl-x7\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x7\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x7\" id=\"ccomment-x7\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x8\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x8\" id=\"cname-x8\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x8\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x8\" id=\"cemail-x8\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x8\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x8\" id=\"curl-x8\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x8\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x8\" id=\"ccomment-x8\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"cname-x9\">Name (required, at least 2 characters)</label>\n\t\t\t<input class=\"some other styles {required:true,minLength:2}\" name=\"name-x9\" id=\"cname-x9\"/>\n\t\t</p><p>\n\t\t\t<label for=\"cemail-x9\">E-Mail (required)</label>\n\t\t\t<input class=\"{required:true,email:true}\" name=\"email-x9\" id=\"cemail-x9\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"curl-x9\">URL (optional)</label>\n\t\t\t<input value=\"\" class=\"{url:true}\" name=\"url-x9\" id=\"curl-x9\"/>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"ccomment-x9\">Your comment (required)</label>\n\t\t\t<textarea class=\"{required:true}\" name=\"comment-x9\" id=\"ccomment-x9\"></textarea>\n\t\t</p>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\t</fieldset>\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/messages.js",
    "content": "module(\"messages\");\n\ntest(\"predefined message not overwritten by addMethod(a, b, undefined)\", function() {\n\tvar message = \"my custom message\";\n\t$.validator.messages.custom = message;\n\t$.validator.addMethod(\"custom\", function() {});\n\tdeepEqual(message, $.validator.messages.custom);\n\tdelete $.validator.messages.custom;\n\tdelete $.validator.methods.custom;\n});\n\ntest(\"group error messages\", function() {\n\t$.validator.addClassRules({\n\t\trequiredDateRange: {required:true, date:true, dateRange:true}\n\t});\n\t$.validator.addMethod(\"dateRange\", function() {\n\t\treturn new Date($(\"#fromDate\").val()) < new Date($(\"#toDate\").val());\n\t}, \"Please specify a correct date range.\");\n\tvar form = $(\"#dateRangeForm\");\n\tform.validate({\n\t\tgroups: {\n\t\t\tdateRange: \"fromDate toDate\"\n\t\t},\n\t\terrorPlacement: function(error) {\n\t\t\tform.find(\".errorContainer\").append(error);\n\t\t}\n\t});\n\tok( !form.valid() );\n\tequal( 1, form.find(\".errorContainer *\").length );\n\tequal( \"Please enter a valid date.\", form.find(\".errorContainer label.error\").text() );\n\n\t$(\"#fromDate\").val(\"12/03/2006\");\n\t$(\"#toDate\").val(\"12/01/2006\");\n\tok( !form.valid() );\n\tequal( \"Please specify a correct date range.\", form.find(\".errorContainer label.error\").text() );\n\n\t$(\"#toDate\").val(\"12/04/2006\");\n\tok( form.valid() );\n\tok( form.find(\".errorContainer label.error\").is(\":hidden\") );\n});\n\ntest(\"read messages from metadata\", function() {\n\tvar form = $(\"#testForm9\")\n\tform.validate();\n\tvar e = $(\"#testEmail9\")\n\te.valid();\n\tequal( form.find(\"label\").text(), \"required\" );\n\te.val(\"bla\").valid();\n\tequal( form.find(\"label\").text(), \"email\" );\n});\n\n\ntest(\"read messages from metadata, with meta option specified, but no metadata in there\", function() {\n\tvar form = $(\"#testForm1clean\")\n\tform.validate({\n\t\tmeta: \"validate\",\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\tok(!form.valid(), \"not valid\");\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/methods.js",
    "content": "(function($) {\n\nfunction methodTest( methodName ) {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods[methodName];\n\tvar element = $(\"#firstname\")[0];\n\treturn function(value, param) {\n\t\telement.value = value;\n\t\treturn method.call( v, value, element, param );\n\t};\n}\n\nmodule(\"methods\");\n\ntest(\"default messages\", function() {\n\tvar m = $.validator.methods;\n\t$.each(m, function(key) {\n\t\tok( jQuery.validator.messages[key], key + \" has a default message.\" );\n\t});\n});\n\ntest(\"digit\", function() {\n\tvar method = methodTest(\"digits\");\n\tok( method( \"123\" ), \"Valid digits\" );\n\tok(!method( \"123.000\" ), \"Invalid digits\" );\n\tok(!method( \"123.000,00\" ), \"Invalid digits\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid digits\" );\n\tok(!method( \"x123\" ), \"Invalid digits\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid digits\" );\n});\n\ntest(\"url\", function() {\n\tvar method = methodTest(\"url\");\n\tok( method( \"http://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"https://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"ftp://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"http://www.føtex.dk/\" ), \"Valid url, danish unicode characters\" );\n\tok( method( \"http://bösendorfer.de/\" ), \"Valid url, german unicode characters\" );\n\tok( method( \"http://192.168.8.5\" ), \"Valid IP Address\" )\n\tok(!method( \"http://192.168.8.\" ), \"Invalid IP Address\" )\n\tok(!method( \"http://bassistance\" ), \"Invalid url\" ); // valid\n\tok(!method( \"http://bassistance.\" ), \"Invalid url\" ); // valid\n\tok(!method( \"http://bassistance,de\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance;de\" ), \"Invalid url\" );\n\tok(!method( \"http://.bassistancede\" ), \"Invalid url\" );\n\tok(!method( \"bassistance.de\" ), \"Invalid url\" );\n});\n\ntest(\"url2 (tld optional)\", function() {\n\tvar method = methodTest(\"url2\");\n\tok( method( \"http://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"https://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"ftp://bassistance.de/jquery/plugin.php?bla=blu\" ), \"Valid url\" );\n\tok( method( \"http://www.føtex.dk/\" ), \"Valid url, danish unicode characters\" );\n\tok( method( \"http://bösendorfer.de/\" ), \"Valid url, german unicode characters\" );\n\tok( method( \"http://192.168.8.5\" ), \"Valid IP Address\" )\n\tok(!method( \"http://192.168.8.\" ), \"Invalid IP Address\" )\n\tok( method( \"http://bassistance\" ), \"Invalid url\" );\n\tok( method( \"http://bassistance.\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance,de\" ), \"Invalid url\" );\n\tok(!method( \"http://bassistance;de\" ), \"Invalid url\" );\n\tok(!method( \"http://.bassistancede\" ), \"Invalid url\" );\n\tok(!method( \"bassistance.de\" ), \"Invalid url\" );\n});\n\ntest(\"email\", function() {\n\tvar method = methodTest(\"email\");\n\tok( method( \"name@domain.tld\" ), \"Valid email\" );\n\tok( method( \"name@domain.tl\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.com\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.travel\" ), \"Valid email\" );\n\tok( method( \"n@d.tld\" ), \"Valid email\" );\n\tok( method( \"ole@føtex.dk\"), \"Valid email\" );\n\tok( method( \"jörn@bassistance.de\"), \"Valid email\" );\n\tok( method( \"bla.blu@g.mail.com\"), \"Valid email\" );\n\tok( method( \"\\\"Scott Gonzalez\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"Scott González\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"name.\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name,\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name;\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok(!method( \"name\" ), \"Invalid email\" );\n\tok(!method( \"name@\" ), \"Invalid email\" );\n\tok(!method( \"name@domain\" ), \"Invalid email\" );\n\tok(!method( \"name.@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name,@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld.\" ), \"Invalid email\" );\n});\n\ntest(\"email2 (tld optional)\", function() {\n\tvar method = methodTest(\"email2\");\n\tok( method( \"name@domain.tld\" ), \"Valid email\" );\n\tok( method( \"name@domain.tl\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.com\" ), \"Valid email\" );\n\tok( method( \"bart+bart@tokbox.travel\" ), \"Valid email\" );\n\tok( method( \"n@d.tld\" ), \"Valid email\" );\n\tok( method( \"ole@føtex.dk\"), \"Valid email\" );\n\tok( method( \"jörn@bassistance.de\"), \"Valid email\" );\n\tok( method( \"bla.blu@g.mail.com\"), \"Valid email\" );\n\tok( method( \"\\\"Scott Gonzalez\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"Scott González\\\"@example.com\" ), \"Valid email\" );\n\tok( method( \"\\\"name.\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name,\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok( method( \"\\\"name;\\\"@domain.tld\" ), \"Valid email\" ); // valid without top label\n\tok(!method( \"name\" ), \"Invalid email\" );\n\tok(!method( \"name@\" ), \"Invalid email\" );\n\tok( method( \"name@domain\" ), \"Invalid email\" );\n\tok(!method( \"name.@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name,@domain.tld\" ), \"Invalid email\" );\n\tok(!method( \"name;@domain.tld\" ), \"Invalid email\" );\n});\n\ntest(\"number\", function() {\n\tvar method = methodTest(\"number\");\n\tok( method( \"123\" ), \"Valid number\" );\n\tok( method( \"-123\" ), \"Valid number\" );\n\tok( method( \"123,000\" ), \"Valid number\" );\n\tok( method( \"-123,000\" ), \"Valid number\" );\n\tok( method( \"123,000.00\" ), \"Valid number\" );\n\tok( method( \"-123,000.00\" ), \"Valid number\" );\n\tok(!method( \"123.000,00\" ), \"Invalid number\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid number\" );\n\tok(!method( \"x123\" ), \"Invalid number\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid number\" );\n\n\tok( method( \"\" ), \"Blank is valid\" );\n\tok( method( \"123\" ), \"Valid decimal\" );\n\tok( method( \"123000\" ), \"Valid decimal\" );\n\tok( method( \"123000.12\" ), \"Valid decimal\" );\n\tok( method( \"-123000.12\" ), \"Valid decimal\" );\n\tok( method( \"123.000\" ), \"Valid decimal\" );\n\tok( method( \"123,000.00\" ), \"Valid decimal\" );\n\tok( method( \"-123,000.00\" ), \"Valid decimal\" );\n\tok( method( \".100\" ), \"Valid decimal\" );\n\tok(!method( \"1230,000.00\" ), \"Invalid decimal\" );\n\tok(!method( \"123.0.0,0\" ), \"Invalid decimal\" );\n\tok(!method( \"x123\" ), \"Invalid decimal\" );\n\tok(!method( \"100.100,0,0\" ), \"Invalid decimal\" );\n});\n\n/* disabled for now, need to figure out how to test localized methods\ntest(\"numberDE\", function() {\n\tvar method = methodTest(\"numberDE\");\n\tok( method( \"123\" ), \"Valid numberDE\" );\n\tok( method( \"-123\" ), \"Valid numberDE\" );\n\tok( method( \"123.000\" ), \"Valid numberDE\" );\n\tok( method( \"-123.000\" ), \"Valid numberDE\" );\n\tok( method( \"123.000,00\" ), \"Valid numberDE\" );\n\tok( method( \"-123.000,00\" ), \"Valid numberDE\" );\n\tok(!method( \"123,000.00\" ), \"Invalid numberDE\" );\n\tok(!method( \"123,0,0.0\" ), \"Invalid numberDE\" );\n\tok(!method( \"x123\" ), \"Invalid numberDE\" );\n\tok(!method( \"100,100.0.0\" ), \"Invalid numberDE\" );\n\n\tok( method( \"\" ), \"Blank is valid\" );\n\tok( method( \"123\" ), \"Valid decimalDE\" );\n\tok( method( \"123000\" ), \"Valid decimalDE\" );\n\tok( method( \"123000,12\" ), \"Valid decimalDE\" );\n\tok( method( \"-123000,12\" ), \"Valid decimalDE\" );\n\tok( method( \"123.000\" ), \"Valid decimalDE\" );\n\tok( method( \"123.000,00\" ), \"Valid decimalDE\" );\n\tok( method( \"-123.000,00\" ), \"Valid decimalDE\" )\n\tok(!method( \"123.0.0,0\" ), \"Invalid decimalDE\" );\n\tok(!method( \"x123\" ), \"Invalid decimalDE\" );\n\tok(!method( \"100,100.0.0\" ), \"Invalid decimalDE\" );\n});\n*/\n\ntest(\"date\", function() {\n\tvar method = methodTest(\"date\");\n\tok( method( \"06/06/1990\" ), \"Valid date\" );\n\tok( method( \"6/6/06\" ), \"Valid date\" );\n\tok(!method( \"1990x-06-06\" ), \"Invalid date\" );\n});\n\ntest(\"dateISO\", function() {\n\tvar method = methodTest(\"dateISO\");\n\tok( method( \"1990-06-06\" ), \"Valid date\" );\n\tok( method( \"1990/06/06\" ), \"Valid date\" );\n\tok( method( \"1990-6-6\" ), \"Valid date\" );\n\tok( method( \"1990/6/6\" ), \"Valid date\" );\n\tok(!method( \"1990-106-06\" ), \"Invalid date\" );\n\tok(!method( \"190-06-06\" ), \"Invalid date\" );\n});\n\n/* disabled for now, need to figure out how to test localized methods\ntest(\"dateDE\", function() {\n\tvar method = methodTest(\"dateDE\");\n\tok( method( \"03.06.1984\" ), \"Valid dateDE\" );\n\tok( method( \"3.6.84\" ), \"Valid dateDE\" );\n\tok(!method( \"6-6-06\" ), \"Invalid dateDE\" );\n\tok(!method( \"1990-06-06\" ), \"Invalid dateDE\" );\n\tok(!method( \"06/06/1990\" ), \"Invalid dateDE\" );\n\tok(!method( \"6/6/06\" ), \"Invalid dateDE\" );\n});\n*/\n\ntest(\"required\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.required,\n\t\te = $('#text1, #text1b, #hidden2, #select1, #select2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid text input\" );\n\tok(!method.call( v, e[1].value, e[2]), \"Invalid text input\" );\n\n\tok(!method.call( v, e[2].value, e[3]), \"Invalid select\" );\n\tok( method.call( v, e[3].value, e[4]), \"Valid select\" );\n\n\te = $('#area1, #area2, #pw1, #pw2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid textarea\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid textarea\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid password input\" );\n\tok(!method.call( v, e[3].value, e[3]), \"Invalid password input\" );\n\n\te = $('#radio1, #radio2, #radio3');\n\tok(!method.call( v, e[0].value, e[0]), \"Invalid radio\" );\n\tok( method.call( v, e[1].value, e[1]), \"Valid radio\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid radio\" );\n\n\te = $('#check1, #check2');\n\tok( method.call( v, e[0].value, e[0]), \"Valid checkbox\" );\n\tok(!method.call( v, e[1].value, e[1]), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4');\n\tok(!method.call( v, e[0].value, e[0]), \"Invalid select\" );\n\tok( method.call( v, e[1].value, e[1]), \"Valid select\" );\n\tok( method.call( v, e[2].value, e[2]), \"Valid select\" );\n\tok( method.call( v, e[3].value, e[3]), \"Valid select\" );\n});\n\ntest(\"required with dependencies\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.required,\n\t\te = $('#hidden2, #select1, #area2, #radio1, #check2');\n\tok( method.call( v, e[0].value, e[0], \"asffsaa\"), \"Valid text input due to depencie not met\" );\n\tok(!method.call( v, e[0].value, e[0], \"input\"), \"Invalid text input\" );\n\tok( method.call( v, e[0].value, e[0], function() { return false; }), \"Valid text input due to depencie not met\" );\n\tok(!method.call( v, e[0].value, e[0], function() { return true; }), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], \"asfsfa\"), \"Valid select due to dependency not met\" );\n\tok(!method.call( v, e[1].value, e[1], \"input\"), \"Invalid select\" );\n\tok( method.call( v, e[2].value, e[2], \"asfsafsfa\"), \"Valid textarea due to dependency not met\" );\n\tok(!method.call( v, e[2].value, e[2], \"input\"), \"Invalid textarea\" );\n\tok( method.call( v, e[3].value, e[3], \"asfsafsfa\"), \"Valid radio due to dependency not met\" );\n\tok(!method.call( v, e[3].value, e[3], \"input\"), \"Invalid radio\" );\n\tok( method.call( v, e[4].value, e[4], \"asfsafsfa\"), \"Valid checkbox due to dependency not met\" );\n\tok(!method.call( v, e[4].value, e[4], \"input\"), \"Invalid checkbox\" );\n});\n\ntest(\"minlength\", function() {\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = $.validator.methods.minlength,\n\t\tparam = 2,\n\t\te = $('#text1, #text1c, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n\tok( method.call( v, e[3].value, e[3], param), \"Valid text input\" );\n\n\te = $('#check1, #check2, #check3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Valid checkbox\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid checkbox\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4, #select5');\n\tok(method.call( v, e[0].value, e[0], param), \"Valid select \" + e[0].id );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid select \" + e[1].id );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid select \" + e[2].id );\n\tok( method.call( v, e[3].value, e[3], param), \"Valid select \" + e[3].id );\n\tok( method.call( v, e[4].value, e[4], param), \"Valid select \" + e[4].id );\n});\n\ntest(\"maxlength\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.maxlength,\n\t\tparam = 4,\n\t\te = $('#text1, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n\n\te = $('#check1, #check2, #check3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid checkbox\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Invalid checkbox\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid checkbox\" );\n\n\te = $('#select1, #select2, #select3, #select4');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid select\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid select\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid select\" );\n\tok(!method.call( v, e[3].value, e[3], param), \"Invalid select\" );\n});\n\ntest(\"rangelength\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.rangelength,\n\t\tparam = [2, 4],\n\t\te = $('#text1, #text2, #text3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok(!method.call( v, e[1].value, e[1], param), \"Invalid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"min\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.min,\n\t\tparam = 8,\n\t\te = $('#value1, #value2, #value3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok( method.call( v, e[2].value, e[2], param), \"Valid text input\" );\n});\n\ntest(\"max\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.max,\n\t\tparam = 12,\n\t\te = $('#value1, #value2, #value3');\n\tok( method.call( v, e[0].value, e[0], param), \"Valid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"range\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.range,\n\t\tparam = [4,12],\n\t\te = $('#value1, #value2, #value3');\n\tok(!method.call( v, e[0].value, e[0], param), \"Invalid text input\" );\n\tok( method.call( v, e[1].value, e[1], param), \"Valid text input\" );\n\tok(!method.call( v, e[2].value, e[2], param), \"Invalid text input\" );\n});\n\ntest(\"equalTo\", function() {\n\tvar v = jQuery(\"#form\").validate();\n\tvar method = $.validator.methods.equalTo,\n\t\te = $('#text1, #text2');\n\tok( method.call( v, \"Test\", e[0], \"#text1\"), \"Text input\" );\n\tok( method.call( v, \"T\", e[1], \"#text2\"), \"Another one\" );\n});\n\ntest(\"creditcard\", function() {\n\tvar method = methodTest(\"creditcard\");\n\tok( method( \"446-667-651\" ), \"Valid creditcard number\" );\n\tok( method( \"446 667 651\" ), \"Valid creditcard number\" );\n\tok( !method( \"asdf\" ), \"Invalid creditcard number\" );\n});\n\ntest(\"extension\", function() {\n\tvar method = methodTest(\"extension\");\n\tok( method( \"picture.gif\" ), \"Valid default accept type\" );\n\tok( method( \"picture.jpg\" ), \"Valid default accept type\" );\n\tok( method( \"picture.jpeg\" ), \"Valid default accept type\" );\n\tok( method( \"picture.png\" ), \"Valid default accept type\" );\n\tok( !method( \"picture.pgn\" ), \"Invalid default accept type\" );\n\n\tvar v = jQuery(\"#form\").validate(),\n\t\tmethod = function(value, param) {\n\t\t\treturn $.validator.methods.extension.call(v, value, $('#text1')[0], param);\n\t\t};\n\tok( method( \"picture.doc\", \"doc\"), \"Valid custom accept type\" );\n\tok( method( \"picture.pdf\", \"doc|pdf\"), \"Valid custom accept type\" );\n\tok( method( \"picture.pdf\", \"pdf|doc\"), \"Valid custom accept type\" );\n\tok( !method( \"picture.pdf\", \"doc\"), \"Invalid custom accept type\" );\n\tok( !method( \"picture.doc\", \"pdf\"), \"Invalid custom accept type\" );\n\n\tok( method( \"picture.pdf\", \"doc,pdf\"), \"Valid custom accept type, comma seperated\" );\n\tok( method( \"picture.pdf\", \"pdf,doc\"), \"Valid custom accept type, comma seperated\" );\n\tok( !method( \"picture.pdf\", \"gop,top\"), \"Invalid custom accept type, comma seperated\" );\n});\n\ntest(\"remote\", function() {\n\texpect(7);\n\tstop();\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"users.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"Please\",\n\t\t\t\tremote: jQuery.validator.format(\"{0} in use\")\n\t\t\t}\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\tok( false, \"submitHandler may never be called when validating only elements\");\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\t$(document).unbind(\"ajaxStop\");\n\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\tequal( \"Peter in use\", v.errorList[0].message );\n\n\t\t$(document).ajaxStop(function() {\n\t\t\t$(document).unbind(\"ajaxStop\");\n\t\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\t\tequal( \"Peter2 in use\", v.errorList[0].message );\n\t\t\tstart();\n\t\t});\n\t\te.val(\"Peter2\");\n\t\tstrictEqual( v.element(e), true, \"new value, new request; dependency-mismatch considered as valid though\" );\n\t});\n\tstrictEqual( v.element(e), false, \"invalid element, nothing entered yet\" );\n\te.val(\"Peter\");\n\tstrictEqual( v.element(e), true, \"still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though\" );\n});\n\ntest(\"remote, customized ajax options\", function() {\n\texpect(2);\n\tstop();\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"users.php\",\n\t\t\t\t\ttype: \"POST\",\n\t\t\t\t\tbeforeSend: function(request, settings) {\n\t\t\t\t\t\tdeepEqual(settings.type, \"POST\");\n\t\t\t\t\t\tdeepEqual(settings.data, \"username=asdf&email=email.com\");\n\t\t\t\t\t},\n\t\t\t\t\tdata: {\n\t\t\t\t\t\temail: function() {\n\t\t\t\t\t\t\treturn \"email.com\";\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tstart();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t$(\"#username\").val(\"asdf\");\n\t$(\"#userForm\").valid();\n});\n\n\ntest(\"remote extensions\", function() {\n\texpect(5);\n\tstop();\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: \"users2.php\"\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"Please\"\n\t\t\t}\n\t\t},\n\t\tsubmitHandler: function() {\n\t\t\tok( false, \"submitHandler may never be called when validating only elements\");\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\t$(document).unbind(\"ajaxStop\");\n\t\tequal( 1, v.size(), \"There must be one error\" );\n\t\tequal( v.errorList[0].message, \"asdf is already taken, please try something else\" );\n\t\tv.element(e);\n\t\tequal( v.errorList[0].message, \"asdf is already taken, please try something else\", \"message doesn't change on revalidation\" );\n\t\tstart();\n\t});\n\tstrictEqual( v.element(e), false, \"invalid element, nothing entered yet\" );\n\te.val(\"asdf\");\n\tstrictEqual( v.element(e), true, \"still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though\" );\n});\n\nasyncTest(\"remote radio correct value sent\", function() {\n\texpect(1);\n\tvar e = $(\"#testForm10Radio2\");\n\te.attr('checked', 'checked');\n\tvar v = $(\"#testForm10\").validate({\n\t\trules: {\n\t\t\ttestForm10Radio: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"echo.php\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function(data) {\n\t\t\t\t\t\tequal( data['testForm10Radio'], '2', ' correct radio value sent' );\n\t\t\t\t\t\tstart();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t});\n\n\tv.element(e);\n});\n\nasyncTest(\"remote reset clear old value\", function() {\n\texpect(1);\n\n\tvar e = $(\"#username\");\n\tvar v = $(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tremote: {\n\t\t\t\t\turl: \"echo.php\",\n\t\t\t\t\tdataFilter: function(data) {\n\t\t\t\t\t\tvar json = JSON.parse(data);\n\t\t\t\t\t\tif(json.username == 'asdf') {\n\t\t\t\t\t\t\treturn \"\\\"asdf is already taken\\\"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \"\\\"\" + true + \"\\\"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t$(document).ajaxStop(function() {\n\t\tvar waitTimeout;\n\n\t\t$(document).unbind(\"ajaxStop\");\n\n\n\t\t$(document).ajaxStop(function() {\n\t\t\tclearTimeout(waitTimeout);\n\t\t\tok( true, \"Remote request sent to server\" );\n\t\t\tstart();\n\t\t});\n\n\n\t\tv.resetForm();\n\t\te.val(\"asdf\");\n\t\twaitTimeout = setTimeout(function() {\n\t\t\tok( false, \"Remote server did not get request\");\n\t\t\tstart();\n\t\t}, 200);\n\t\tv.element(e);\n\t});\n\te.val(\"asdf\");\n\tv.element(e);\n});\n\nmodule(\"additional methods\");\n\ntest(\"phone (us)\", function() {\n\tvar method = methodTest(\"phoneUS\");\n\tok( method( \"1(212)-999-2345\" ), \"Valid us phone number\" );\n\tok( method( \"212 999 2344\" ), \"Valid us phone number\" );\n\tok( method( \"212-999-0983\" ), \"Valid us phone number\" );\n\tok(!method( \"111-123-5434\" ), \"Invalid us phone number\" );\n\tok(!method( \"212 123 4567\" ), \"Invalid us phone number\" );\n});\n\ntest(\"mobileUK\", function() {\n\tvar method = methodTest(\"mobileUK\");\n\tok( method( \"07734234323\" ), \"Valid UK Mobile Number\" );\n\tok( method( \"+447734234323\" ), \"Valid UK Mobile Number\" );\n\tok( !method( \"07034234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"0753423432\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"07604234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"077342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"044342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+44753423432\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+447604234323\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+4477342343234\" ), \"Invalid UK Mobile Number\" );\n\tok( !method( \"+4444342343234\" ), \"Invalid UK Mobile Number\" );\n});\n\ntest(\"dateITA\", function() {\n\tvar method = methodTest(\"dateITA\");\n\tok( method( \"01/01/1900\" ), \"Valid date ITA\" );\n\tok(!method( \"01/13/1990\" ), \"Invalid date ITA\" );\n\tok(!method( \"01.01.1900\" ), \"Invalid date ITA\" );\n});\n\ntest(\"time\", function() {\n\tvar method = methodTest(\"time\");\n\tok( method(\"00:00\"), \"Valid time, lower bound\" );\n\tok( method(\"23:59\"), \"Valid time, upper bound\" );\n\tok( !method(\"12\"), \"Invalid time\" );\n\tok( !method(\"00:60\"), \"Invalid time\" );\n\tok( !method(\"24:60\"), \"Invalid time\" );\n\tok( !method(\"24:00\"), \"Invalid time\" );\n\tok( !method(\"29:59\"), \"Invalid time\" );\n\tok( !method(\"30:00\"), \"Invalid time\" );\n});\n\ntest(\"time12h\", function() {\n\tvar method = methodTest(\"time12h\");\n\tok( method(\"12:00 AM\"), \"Valid time, lower bound, am\" );\n\tok( method(\"11:59 AM\"), \"Valid time, upper bound, am\" );\n\tok( method(\"12:00 PM\"), \"Valid time, lower bound, pm\" );\n\tok( method(\"11:59 PM\"), \"Valid time, upper bound, pm\" );\n\tok( method(\"11:59 am\"), \"Valid time, also accept lowercase\" );\n\tok( method(\"11:59 pm\"), \"Valid time, also accept lowercase\" );\n\tok( !method(\"12:00\"), \"Invalid time\" );\n\tok( !method(\"12:61 am\"), \"Invalid time\" );\n\tok( !method(\"13:00 am\"), \"Invalid time\" );\n});\n\ntest(\"minWords\", function() {\n\tvar method = methodTest(\"minWords\");\n\tok( method(\"hello worlds\", 2), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", 2), \"html, valid\" );\n\tok( !method(\"hello\", 2), \"plain text, invalid\" );\n\tok( !method(\"<b>world</b>\", 2), \"html, invalid\" );\n\tok( !method(\"world <br/>\", 2), \"html, invalid\" );\n});\n\ntest(\"maxWords\", function() {\n\tvar method = methodTest(\"maxWords\");\n\tok( method(\"hello\", 2), \"plain text, valid\" );\n\tok( method(\"<b>world</b>\", 2), \"html, valid\" );\n\tok( method(\"world <br/>\", 2), \"html, valid\" );\n\tok( method(\"hello worlds\", 2), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", 2), \"html, valid\" );\n\tok( !method(\"hello 123 world\", 2), \"plain text, invalid\" );\n\tok( !method(\"<b>hello</b> 123 world\", 2), \"html, invalid\" );\n});\n\ntest(\"rangeWords\", function() {\n\tvar method = methodTest(\"rangeWords\");\n\tok( method(\"hello\", [0, 2]), \"plain text, valid\" );\n\tok( method(\"hello worlds\", [0, 2]), \"plain text, valid\" );\n\tok( method(\"<b>hello</b> world\", [0, 2]), \"html, valid\" );\n\tok( !method(\"hello worlds what is up\", [0, 2]), \"plain text, invalid\" );\n\tok( !method(\"<b>Hello</b> <b>world</b> <b>hello</b>\", [0, 2]), \"html, invalid\" );\n});\n\ntest(\"pattern\", function() {\n\tvar method = methodTest(\"pattern\");\n\tok( method( \"AR1004\", \"AR\\\\d{4}\" ), \"Correct format for the given RegExp\" );\n\tok( method( \"AR1004\", /^AR\\d{4}$/ ), \"Correct format for the given RegExp\" );\n\tok( !method( \"BR1004\", /^AR\\d{4}$/ ), \"Invalid format for the given RegExp\" );\n});\n\nfunction testCardTypeByNumber(number, cardname, expected) {\n\t$(\"#cardnumber\").val(number);\n\tvar actual = $(\"#ccform\").valid();\n\tequal(actual, expected, $.format(\"Expect card number {0} to validate to {1}, actually validated to \", number, expected));\n}\n\ntest('creditcardtypes, all', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tall: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", true)\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", true)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", true)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", true);\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1110\", \"VISA\", false)\n\ttestCardTypeByNumber(\"5432-1111-1111-1111\", \"MasterCard\", false)\n\ttestCardTypeByNumber(\"6611-6611-6611-6611\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3777-7777-7777-7777\", \"AMEX\", false)\n\n});\n\ntest('creditcardtypes, visa', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tvisa: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", true)\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", false)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", false);\n});\n\ntest('creditcardtypes, mastercard', function() {\n\t$(\"#ccform\").validate({\n\t\trules: {\n\t\t\tcardnumber: {\n\t\t\t\tcreditcard: true,\n\t\t\t\tcreditcardtypes: {\n\t\t\t\t\tmastercard: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\ttestCardTypeByNumber(\"5111-1111-1111-1118\", \"MasterCard\", true)\n\ttestCardTypeByNumber(\"6111-1111-1111-1116\", \"Discover\", false)\n\ttestCardTypeByNumber(\"3400-0000-0000-009\", \"AMEX\", false);\n\ttestCardTypeByNumber(\"4111-1111-1111-1111\", \"VISA\", false);\n});\n\nfunction fillFormWithValuesAndExpect(formSelector, inputValues, expected) {\n\tfor (i=0; i < inputValues.length; i++) {\n\t\t$(formSelector + ' input:eq(' + i + ')').val(inputValues[i]);\n\t}\n\tvar actual = $(formSelector).valid();\n\tequal(actual, expected, $.format(\"Filled inputs of form '{0}' with {1} values ({2})\", formSelector, inputValues.length, inputValues.toString()));\n\n}\n\ntest('require_from_group', function() {\n\t$(\"#productInfo\").validate({\n\t\trules: {\n\t\t\tpartnumber:  {require_from_group: [2,\".productInfo\"]},\n\t\t\tdescription: {require_from_group: [2,\".productInfo\"]},\n\t\t\tdiscount: {require_from_group: [2,\".productInfo\"]}\n\t\t}\n\t});\n\n\tfillFormWithValuesAndExpect('#productInfo', [], false);\n\tfillFormWithValuesAndExpect('#productInfo', [123], false);\n\t$('#productInfo input[type=\"checkbox\"]').attr('checked', 'checked');\n\tfillFormWithValuesAndExpect('#productInfo', [123], true);\n\t$('#productInfo input[type=\"checkbox\"]').removeAttr('checked');\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n});\n\ntest('skip_or_fill_minimum', function() {\n\t$(\"#productInfo\").validate({\n\t\trules: {\n\t\t\tpartnumber:  {skip_or_fill_minimum: [2,\".productInfo\"]},\n\t\t\tdescription: {skip_or_fill_minimum: [2,\".productInfo\"]},\n\t\t\tcolor:       {skip_or_fill_minimum: [2,\".productInfo\"]}\n\t\t}\n\t});\n\n\tfillFormWithValuesAndExpect('#productInfo', [], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123], false);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true);\n\tfillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true);\n});\n\ntest(\"zipcodeUS\", function() {\n\tvar method = methodTest(\"zipcodeUS\");\n\tok( method( \"12345\" ), \"Valid zip\" );\n\tok( method( \"12345-2345\" ), \"Valid zip\" );\n\tok(!method( \"1\" ), \"Invalid zip\" );\n\tok(!method( \"1234\" ), \"Invalid zip\" );\n\tok(!method( \"123-23\" ), \"Invalid zip\" );\n\tok(!method( \"12345-43\" ), \"Invalid zip\" );\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.css",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n/** Font Family and Sizes */\n\n#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {\n\tfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n}\n\n#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }\n#qunit-tests { font-size: smaller; }\n\n\n/** Resets */\n\n#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n\n/** Header */\n\n#qunit-header {\n\tpadding: 0.5em 0 0.5em 1em;\n\n\tcolor: #8699a4;\n\tbackground-color: #0d3349;\n\n\tfont-size: 1.5em;\n\tline-height: 1em;\n\tfont-weight: normal;\n\n\tborder-radius: 15px 15px 0 0;\n\t-moz-border-radius: 15px 15px 0 0;\n\t-webkit-border-top-right-radius: 15px;\n\t-webkit-border-top-left-radius: 15px;\n}\n\n#qunit-header a {\n\ttext-decoration: none;\n\tcolor: #c2ccd1;\n}\n\n#qunit-header a:hover,\n#qunit-header a:focus {\n\tcolor: #fff;\n}\n\n#qunit-header label {\n\tdisplay: inline-block;\n}\n\n#qunit-banner {\n\theight: 5px;\n}\n\n#qunit-testrunner-toolbar {\n\tpadding: 0.5em 0 0.5em 2em;\n\tcolor: #5E740B;\n\tbackground-color: #eee;\n}\n\n#qunit-userAgent {\n\tpadding: 0.5em 0 0.5em 2.5em;\n\tbackground-color: #2b81af;\n\tcolor: #fff;\n\ttext-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;\n}\n\n\n/** Tests: Pass/Fail */\n\n#qunit-tests {\n\tlist-style-position: inside;\n}\n\n#qunit-tests li {\n\tpadding: 0.4em 0.5em 0.4em 2.5em;\n\tborder-bottom: 1px solid #fff;\n\tlist-style-position: inside;\n}\n\n#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {\n\tdisplay: none;\n}\n\n#qunit-tests li strong {\n\tcursor: pointer;\n}\n\n#qunit-tests li a {\n\tpadding: 0.5em;\n\tcolor: #c2ccd1;\n\ttext-decoration: none;\n}\n#qunit-tests li a:hover,\n#qunit-tests li a:focus {\n\tcolor: #000;\n}\n\n#qunit-tests ol {\n\tmargin-top: 0.5em;\n\tpadding: 0.5em;\n\n\tbackground-color: #fff;\n\n\tborder-radius: 15px;\n\t-moz-border-radius: 15px;\n\t-webkit-border-radius: 15px;\n\n\tbox-shadow: inset 0px 2px 13px #999;\n\t-moz-box-shadow: inset 0px 2px 13px #999;\n\t-webkit-box-shadow: inset 0px 2px 13px #999;\n}\n\n#qunit-tests table {\n\tborder-collapse: collapse;\n\tmargin-top: .2em;\n}\n\n#qunit-tests th {\n\ttext-align: right;\n\tvertical-align: top;\n\tpadding: 0 .5em 0 0;\n}\n\n#qunit-tests td {\n\tvertical-align: top;\n}\n\n#qunit-tests pre {\n\tmargin: 0;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n#qunit-tests del {\n\tbackground-color: #e0f2be;\n\tcolor: #374e0c;\n\ttext-decoration: none;\n}\n\n#qunit-tests ins {\n\tbackground-color: #ffcaca;\n\tcolor: #500;\n\ttext-decoration: none;\n}\n\n/*** Test Counts */\n\n#qunit-tests b.counts                       { color: black; }\n#qunit-tests b.passed                       { color: #5E740B; }\n#qunit-tests b.failed                       { color: #710909; }\n\n#qunit-tests li li {\n\tmargin: 0.5em;\n\tpadding: 0.4em 0.5em 0.4em 0.5em;\n\tbackground-color: #fff;\n\tborder-bottom: none;\n\tlist-style-position: inside;\n}\n\n/*** Passing Styles */\n\n#qunit-tests li li.pass {\n\tcolor: #5E740B;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #C6E746;\n}\n\n#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }\n#qunit-tests .pass .test-name               { color: #366097; }\n\n#qunit-tests .pass .test-actual,\n#qunit-tests .pass .test-expected           { color: #999999; }\n\n#qunit-banner.qunit-pass                    { background-color: #C6E746; }\n\n/*** Failing Styles */\n\n#qunit-tests li li.fail {\n\tcolor: #710909;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #EE5757;\n\twhite-space: pre;\n}\n\n#qunit-tests > li:last-child {\n\tborder-radius: 0 0 15px 15px;\n\t-moz-border-radius: 0 0 15px 15px;\n\t-webkit-border-bottom-right-radius: 15px;\n\t-webkit-border-bottom-left-radius: 15px;\n}\n\n#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }\n#qunit-tests .fail .test-name,\n#qunit-tests .fail .module-name             { color: #000000; }\n\n#qunit-tests .fail .test-actual             { color: #EE5757; }\n#qunit-tests .fail .test-expected           { color: green;   }\n\n#qunit-banner.qunit-fail                    { background-color: #EE5757; }\n\n\n/** Result */\n\n#qunit-testresult {\n\tpadding: 0.5em 0.5em 0.5em 2.5em;\n\n\tcolor: #2b81af;\n\tbackground-color: #D2E0E6;\n\n\tborder-bottom: 1px solid white;\n}\n#qunit-testresult .module-name {\n\tfont-weight: bold;\n}\n\n/** Fixture */\n\n#qunit-fixture {\n\tposition: absolute;\n\ttop: -10000px;\n\tleft: -10000px;\n\twidth: 1000px;\n\theight: 1000px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/qunit/qunit.js",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n(function(window) {\n\nvar defined = {\n\tsetTimeout: typeof window.setTimeout !== \"undefined\",\n\tsessionStorage: (function() {\n\t\tvar x = \"qunit-test-string\";\n\t\ttry {\n\t\t\tsessionStorage.setItem(x, x);\n\t\t\tsessionStorage.removeItem(x);\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}())\n};\n\nvar\ttestId = 0,\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty;\n\nvar Test = function(name, testName, expected, async, callback) {\n\tthis.name = name;\n\tthis.testName = testName;\n\tthis.expected = expected;\n\tthis.async = async;\n\tthis.callback = callback;\n\tthis.assertions = [];\n};\nTest.prototype = {\n\tinit: function() {\n\t\tvar tests = id(\"qunit-tests\");\n\t\tif (tests) {\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\t\tb.innerHTML = \"Running \" + this.name;\n\t\t\tvar li = document.createElement(\"li\");\n\t\t\t\tli.appendChild( b );\n\t\t\t\tli.className = \"running\";\n\t\t\t\tli.id = this.id = \"test-output\" + testId++;\n\t\t\ttests.appendChild( li );\n\t\t}\n\t},\n\tsetup: function() {\n\t\tif (this.module != config.previousModule) {\n\t\t\tif ( config.previousModule ) {\n\t\t\t\trunLoggingCallbacks('moduleDone', QUnit, {\n\t\t\t\t\tname: config.previousModule,\n\t\t\t\t\tfailed: config.moduleStats.bad,\n\t\t\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\t\t\ttotal: config.moduleStats.all\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconfig.previousModule = this.module;\n\t\t\tconfig.moduleStats = { all: 0, bad: 0 };\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t} else if (config.autorun) {\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t}\n\n\t\tconfig.current = this;\n\t\tthis.testEnvironment = extend({\n\t\t\tsetup: function() {},\n\t\t\tteardown: function() {}\n\t\t}, this.moduleTestEnvironment);\n\n\t\trunLoggingCallbacks( 'testStart', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module\n\t\t});\n\n\t\t// allow utility functions to access the current test environment\n\t\t// TODO why??\n\t\tQUnit.current_testEnvironment = this.testEnvironment;\n\n\t\tif ( !config.pollution ) {\n\t\t\tsaveGlobal();\n\t\t}\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Setup failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t}\n\t},\n\trun: function() {\n\t\tconfig.current = this;\n\n\t\tvar running = id(\"qunit-testresult\");\n\n\t\tif ( running ) {\n\t\t\trunning.innerHTML = \"Running: <br/>\" + this.name;\n\t\t}\n\n\t\tif ( this.async ) {\n\t\t\tQUnit.stop();\n\t\t}\n\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Died on test #\" + (this.assertions.length + 1) + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t// else next test will carry the responsibility\n\t\t\tsaveGlobal();\n\n\t\t\t// Restart the tests if they're blocking\n\t\t\tif ( config.blocking ) {\n\t\t\t\tQUnit.start();\n\t\t\t}\n\t\t}\n\t},\n\tteardown: function() {\n\t\tconfig.current = this;\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\treturn;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\t} catch(e) {\n\t\t\t\tQUnit.pushFailure( \"Teardown failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t}\n\t\t}\n\t\tcheckPollution();\n\t},\n\tfinish: function() {\n\t\tconfig.current = this;\n\t\tif ( this.expected != null && this.expected != this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected \" + this.expected + \" assertions, but \" + this.assertions.length + \" were run\" );\n\t\t} else if ( this.expected == null && !this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.\" );\n\t\t}\n\n\t\tvar good = 0, bad = 0,\n\t\t\tli, i,\n\t\t\ttests = id(\"qunit-tests\");\n\n\t\tconfig.stats.all += this.assertions.length;\n\t\tconfig.moduleStats.all += this.assertions.length;\n\n\t\tif ( tests ) {\n\t\t\tvar ol = document.createElement(\"ol\");\n\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tvar assertion = this.assertions[i];\n\n\t\t\t\tli = document.createElement(\"li\");\n\t\t\t\tli.className = assertion.result ? \"pass\" : \"fail\";\n\t\t\t\tli.innerHTML = assertion.message || (assertion.result ? \"okay\" : \"failed\");\n\t\t\t\tol.appendChild( li );\n\n\t\t\t\tif ( assertion.result ) {\n\t\t\t\t\tgood++;\n\t\t\t\t} else {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// store result when possible\n\t\t\tif ( QUnit.config.reorder && defined.sessionStorage ) {\n\t\t\t\tif (bad) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-test-\" + this.module + \"-\" + this.testName, bad);\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (bad === 0) {\n\t\t\t\tol.style.display = \"none\";\n\t\t\t}\n\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\tb.innerHTML = this.name + \" <b class='counts'>(<b class='failed'>\" + bad + \"</b>, <b class='passed'>\" + good + \"</b>, \" + this.assertions.length + \")</b>\";\n\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\ta.innerHTML = \"Rerun\";\n\t\t\ta.href = QUnit.url({ filter: getText([b]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\n\t\t\taddEvent(b, \"click\", function() {\n\t\t\t\tvar next = b.nextSibling.nextSibling,\n\t\t\t\t\tdisplay = next.style.display;\n\t\t\t\tnext.style.display = display === \"none\" ? \"block\" : \"none\";\n\t\t\t});\n\n\t\t\taddEvent(b, \"dblclick\", function(e) {\n\t\t\t\tvar target = e && e.target ? e.target : window.event.srcElement;\n\t\t\t\tif ( target.nodeName.toLowerCase() == \"span\" || target.nodeName.toLowerCase() == \"b\" ) {\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\t\t\t\tif ( window.location && target.nodeName.toLowerCase() === \"strong\" ) {\n\t\t\t\t\twindow.location = QUnit.url({ filter: getText([target]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tli = id(this.id);\n\t\t\tli.className = bad ? \"fail\" : \"pass\";\n\t\t\tli.removeChild( li.firstChild );\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild( a );\n\t\t\tli.appendChild( ol );\n\n\t\t} else {\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tif ( !this.assertions[i].result ) {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tQUnit.reset();\n\n\t\trunLoggingCallbacks( 'testDone', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module,\n\t\t\tfailed: bad,\n\t\t\tpassed: this.assertions.length - bad,\n\t\t\ttotal: this.assertions.length\n\t\t} );\n\t},\n\n\tqueue: function() {\n\t\tvar test = this;\n\t\tsynchronize(function() {\n\t\t\ttest.init();\n\t\t});\n\t\tfunction run() {\n\t\t\t// each of these can by async\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.setup();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.run();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.teardown();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.finish();\n\t\t\t});\n\t\t}\n\t\t// defer when previous test run passed, if storage is available\n\t\tvar bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\tif (bad) {\n\t\t\trun();\n\t\t} else {\n\t\t\tsynchronize(run, true);\n\t\t}\n\t}\n\n};\n\nvar QUnit = {\n\n\t// call on start of module test to prepend name to all tests\n\tmodule: function(name, testEnvironment) {\n\t\tconfig.currentModule = name;\n\t\tconfig.currentModuleTestEnviroment = testEnvironment;\n\t},\n\n\tasyncTest: function(testName, expected, callback) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tQUnit.test(testName, expected, callback, true);\n\t},\n\n\ttest: function(testName, expected, callback, async) {\n\t\tvar name = '<span class=\"test-name\">' + escapeInnerText(testName) + '</span>';\n\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tif ( config.currentModule ) {\n\t\t\tname = '<span class=\"module-name\">' + config.currentModule + \"</span>: \" + name;\n\t\t}\n\n\t\tif ( !validTest(config.currentModule + \": \" + testName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar test = new Test(name, testName, expected, async, callback);\n\t\ttest.module = config.currentModule;\n\t\ttest.moduleTestEnvironment = config.currentModuleTestEnviroment;\n\t\ttest.queue();\n\t},\n\n\t// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.\n\texpect: function(asserts) {\n\t\tconfig.current.expected = asserts;\n\t},\n\n\t// Asserts true.\n\t// @example ok( \"asdfasdf\".length > 5, \"There must be at least 5 chars\" );\n\tok: function(result, msg) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"ok() assertion outside test context, was \" + sourceFromStacktrace(2));\n\t\t}\n\t\tresult = !!result;\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t};\n\t\tmsg = escapeInnerText(msg || (result ? \"okay\" : \"failed\"));\n\t\tif ( !result ) {\n\t\t\tvar source = sourceFromStacktrace(2);\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\tmsg += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t\t}\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t});\n\t},\n\n\t// Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values.\n\t// @example equal( format(\"Received {0} bytes.\", 2), \"Received 2 bytes.\" );\n\tequal: function(actual, expected, message) {\n\t\tQUnit.push(expected == actual, actual, expected, message);\n\t},\n\n\tnotEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected != actual, actual, expected, message);\n\t},\n\n\tdeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tnotDeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tstrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected === actual, actual, expected, message);\n\t},\n\n\tnotStrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected !== actual, actual, expected, message);\n\t},\n\n\traises: function(block, expected, message) {\n\t\tvar actual, ok = false;\n\n\t\tif (typeof expected === 'string') {\n\t\t\tmessage = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\ttry {\n\t\t\tblock.call(config.current.testEnvironment);\n\t\t} catch (e) {\n\t\t\tactual = e;\n\t\t}\n\n\t\tif (actual) {\n\t\t\t// we don't want to validate thrown error\n\t\t\tif (!expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a regexp\n\t\t\t} else if (QUnit.objectType(expected) === \"regexp\") {\n\t\t\t\tok = expected.test(actual);\n\t\t\t// expected is a constructor\n\t\t\t} else if (actual instanceof expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a validation function which returns true is validation passed\n\t\t\t} else if (expected.call({}, actual) === true) {\n\t\t\t\tok = true;\n\t\t\t}\n\t\t}\n\n\t\tQUnit.ok(ok, message);\n\t},\n\n\tstart: function(count) {\n\t\tconfig.semaphore -= count || 1;\n\t\tif (config.semaphore > 0) {\n\t\t\t// don't start until equal number of stop-calls\n\t\t\treturn;\n\t\t}\n\t\tif (config.semaphore < 0) {\n\t\t\t// ignore if start is called more often then stop\n\t\t\tconfig.semaphore = 0;\n\t\t}\n\t\t// A slight delay, to avoid any current callbacks\n\t\tif ( defined.setTimeout ) {\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tif (config.semaphore > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( config.timeout ) {\n\t\t\t\t\tclearTimeout(config.timeout);\n\t\t\t\t}\n\n\t\t\t\tconfig.blocking = false;\n\t\t\t\tprocess(true);\n\t\t\t}, 13);\n\t\t} else {\n\t\t\tconfig.blocking = false;\n\t\t\tprocess(true);\n\t\t}\n\t},\n\n\tstop: function(count) {\n\t\tconfig.semaphore += count || 1;\n\t\tconfig.blocking = true;\n\n\t\tif ( config.testTimeout && defined.setTimeout ) {\n\t\t\tclearTimeout(config.timeout);\n\t\t\tconfig.timeout = window.setTimeout(function() {\n\t\t\t\tQUnit.ok( false, \"Test timed out\" );\n\t\t\t\tconfig.semaphore = 1;\n\t\t\t\tQUnit.start();\n\t\t\t}, config.testTimeout);\n\t\t}\n\t}\n};\n\n//We want access to the constructor's prototype\n(function() {\n\tfunction F(){}\n\tF.prototype = QUnit;\n\tQUnit = new F();\n\t//Make F QUnit's constructor so that we can add to the prototype later\n\tQUnit.constructor = F;\n}());\n\n// deprecated; still export them to window to provide clear error messages\n// next step: remove entirely\nQUnit.equals = function() {\n\tQUnit.push(false, false, false, \"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead\");\n};\nQUnit.same = function() {\n\tQUnit.push(false, false, false, \"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead\");\n};\n\n// Maintain internal state\nvar config = {\n\t// The queue of tests to run\n\tqueue: [],\n\n\t// block until document ready\n\tblocking: true,\n\n\t// when enabled, show only failing tests\n\t// gets persisted through sessionStorage and can be changed in UI via checkbox\n\thidepassed: false,\n\n\t// by default, run previously failed tests first\n\t// very useful in combination with \"Hide passed tests\" checked\n\treorder: true,\n\n\t// by default, modify document.title when suite is done\n\taltertitle: true,\n\n\turlConfig: ['noglobals', 'notrycatch'],\n\n\t//logging callback queues\n\tbegin: [],\n\tdone: [],\n\tlog: [],\n\ttestStart: [],\n\ttestDone: [],\n\tmoduleStart: [],\n\tmoduleDone: []\n};\n\n// Load paramaters\n(function() {\n\tvar location = window.location || { search: \"\", protocol: \"file:\" },\n\t\tparams = location.search.slice( 1 ).split( \"&\" ),\n\t\tlength = params.length,\n\t\turlParams = {},\n\t\tcurrent;\n\n\tif ( params[ 0 ] ) {\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tcurrent = params[ i ].split( \"=\" );\n\t\t\tcurrent[ 0 ] = decodeURIComponent( current[ 0 ] );\n\t\t\t// allow just a key to turn on a flag, e.g., test.html?noglobals\n\t\t\tcurrent[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;\n\t\t\turlParams[ current[ 0 ] ] = current[ 1 ];\n\t\t}\n\t}\n\n\tQUnit.urlParams = urlParams;\n\tconfig.filter = urlParams.filter;\n\n\t// Figure out if we're running the tests from a server or not\n\tQUnit.isLocal = location.protocol === 'file:';\n}());\n\n// Expose the API as global variables, unless an 'exports'\n// object exists, in that case we assume we're in CommonJS - export everything at the end\nif ( typeof exports === \"undefined\" || typeof require === \"undefined\" ) {\n\textend(window, QUnit);\n\twindow.QUnit = QUnit;\n}\n\n// define these after exposing globals to keep them in these QUnit namespace only\nextend(QUnit, {\n\tconfig: config,\n\n\t// Initialize the configuration options\n\tinit: function() {\n\t\textend(config, {\n\t\t\tstats: { all: 0, bad: 0 },\n\t\t\tmoduleStats: { all: 0, bad: 0 },\n\t\t\tstarted: +new Date(),\n\t\t\tupdateRate: 1000,\n\t\t\tblocking: false,\n\t\t\tautostart: true,\n\t\t\tautorun: false,\n\t\t\tfilter: \"\",\n\t\t\tqueue: [],\n\t\t\tsemaphore: 0\n\t\t});\n\n\t\tvar qunit = id( \"qunit\" );\n\t\tif ( qunit ) {\n\t\t\tqunit.innerHTML =\n\t\t\t\t'<h1 id=\"qunit-header\">' + escapeInnerText( document.title ) + '</h1>' +\n\t\t\t\t'<h2 id=\"qunit-banner\"></h2>' +\n\t\t\t\t'<div id=\"qunit-testrunner-toolbar\"></div>' +\n\t\t\t\t'<h2 id=\"qunit-userAgent\"></h2>' +\n\t\t\t\t'<ol id=\"qunit-tests\"></ol>';\n\t\t}\n\n\t\tvar tests = id( \"qunit-tests\" ),\n\t\t\tbanner = id( \"qunit-banner\" ),\n\t\t\tresult = id( \"qunit-testresult\" );\n\n\t\tif ( tests ) {\n\t\t\ttests.innerHTML = \"\";\n\t\t}\n\n\t\tif ( banner ) {\n\t\t\tbanner.className = \"\";\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult.parentNode.removeChild( result );\n\t\t}\n\n\t\tif ( tests ) {\n\t\t\tresult = document.createElement( \"p\" );\n\t\t\tresult.id = \"qunit-testresult\";\n\t\t\tresult.className = \"result\";\n\t\t\ttests.parentNode.insertBefore( result, tests );\n\t\t\tresult.innerHTML = 'Running...<br/>&nbsp;';\n\t\t}\n\t},\n\n\t// Resets the test setup. Useful for tests that modify the DOM.\n\t// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.\n\treset: function() {\n\t\tif ( window.jQuery ) {\n\t\t\tjQuery( \"#qunit-fixture\" ).html( config.fixture );\n\t\t} else {\n\t\t\tvar main = id( 'qunit-fixture' );\n\t\t\tif ( main ) {\n\t\t\t\tmain.innerHTML = config.fixture;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Trigger an event on an element.\n\t// @example triggerEvent( document.body, \"click\" );\n\ttriggerEvent: function( elem, type, event ) {\n\t\tif ( document.createEvent ) {\n\t\t\tevent = document.createEvent(\"MouseEvents\");\n\t\t\tevent.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,\n\t\t\t\t0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\t\t\telem.dispatchEvent( event );\n\n\t\t} else if ( elem.fireEvent ) {\n\t\t\telem.fireEvent(\"on\"+type);\n\t\t}\n\t},\n\n\t// Safe object type checking\n\tis: function( type, obj ) {\n\t\treturn QUnit.objectType( obj ) == type;\n\t},\n\n\tobjectType: function( obj ) {\n\t\tif (typeof obj === \"undefined\") {\n\t\t\t\treturn \"undefined\";\n\n\t\t// consider: typeof null === object\n\t\t}\n\t\tif (obj === null) {\n\t\t\t\treturn \"null\";\n\t\t}\n\n\t\tvar type = toString.call( obj ).match(/^\\[object\\s(.*)\\]$/)[1] || '';\n\n\t\tswitch (type) {\n\t\t\tcase 'Number':\n\t\t\t\tif (isNaN(obj)) {\n\t\t\t\t\treturn \"nan\";\n\t\t\t\t}\n\t\t\t\treturn \"number\";\n\t\t\tcase 'String':\n\t\t\tcase 'Boolean':\n\t\t\tcase 'Array':\n\t\t\tcase 'Date':\n\t\t\tcase 'RegExp':\n\t\t\tcase 'Function':\n\t\t\t\t\treturn type.toLowerCase();\n\t\t}\n\t\tif (typeof obj === \"object\") {\n\t\t\t\treturn \"object\";\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tpush: function(result, actual, expected, message) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"assertion outside test context, was \" + sourceFromStacktrace());\n\t\t}\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: message,\n\t\t\tactual: actual,\n\t\t\texpected: expected\n\t\t};\n\n\t\tmessage = escapeInnerText(message) || (result ? \"okay\" : \"failed\");\n\t\tmessage = '<span class=\"test-message\">' + message + \"</span>\";\n\t\tvar output = message;\n\t\tif (!result) {\n\t\t\texpected = escapeInnerText(QUnit.jsDump.parse(expected));\n\t\t\tactual = escapeInnerText(QUnit.jsDump.parse(actual));\n\t\t\toutput += '<table><tr class=\"test-expected\"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';\n\t\t\tif (actual != expected) {\n\t\t\t\toutput += '<tr class=\"test-actual\"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';\n\t\t\t\toutput += '<tr class=\"test-diff\"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';\n\t\t\t}\n\t\t\tvar source = sourceFromStacktrace();\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\toutput += '<tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';\n\t\t\t}\n\t\t\toutput += \"</table>\";\n\t\t}\n\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: !!result,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\tpushFailure: function(message, source) {\n\t\tvar details = {\n\t\t\tresult: false,\n\t\t\tmessage: message\n\t\t};\n\t\tvar output = escapeInnerText(message);\n\t\tif (source) {\n\t\t\tdetails.source = source;\n\t\t\toutput += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: false,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\turl: function( params ) {\n\t\tparams = extend( extend( {}, QUnit.urlParams ), params );\n\t\tvar querystring = \"?\",\n\t\t\tkey;\n\t\tfor ( key in params ) {\n\t\t\tif ( !hasOwn.call( params, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tquerystring += encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( params[ key ] ) + \"&\";\n\t\t}\n\t\treturn window.location.pathname + querystring.slice( 0, -1 );\n\t},\n\n\textend: extend,\n\tid: id,\n\taddEvent: addEvent\n});\n\n//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later\n//Doing this allows us to tell if the following methods have been overwritten on the actual\n//QUnit object, which is a deprecated way of using the callbacks.\nextend(QUnit.constructor.prototype, {\n\t// Logging callbacks; all receive a single argument with the listed properties\n\t// run test/logs.html for any related changes\n\tbegin: registerLoggingCallback('begin'),\n\t// done: { failed, passed, total, runtime }\n\tdone: registerLoggingCallback('done'),\n\t// log: { result, actual, expected, message }\n\tlog: registerLoggingCallback('log'),\n\t// testStart: { name }\n\ttestStart: registerLoggingCallback('testStart'),\n\t// testDone: { name, failed, passed, total }\n\ttestDone: registerLoggingCallback('testDone'),\n\t// moduleStart: { name }\n\tmoduleStart: registerLoggingCallback('moduleStart'),\n\t// moduleDone: { name, failed, passed, total }\n\tmoduleDone: registerLoggingCallback('moduleDone')\n});\n\nif ( typeof document === \"undefined\" || document.readyState === \"complete\" ) {\n\tconfig.autorun = true;\n}\n\nQUnit.load = function() {\n\trunLoggingCallbacks( 'begin', QUnit, {} );\n\n\t// Initialize the config, saving the execution queue\n\tvar oldconfig = extend({}, config);\n\tQUnit.init();\n\textend(config, oldconfig);\n\n\tconfig.blocking = false;\n\n\tvar urlConfigHtml = '', len = config.urlConfig.length;\n\tfor ( var i = 0, val; i < len; i++ ) {\n\t\tval = config.urlConfig[i];\n\t\tconfig[val] = QUnit.urlParams[val];\n\t\turlConfigHtml += '<label><input name=\"' + val + '\" type=\"checkbox\"' + ( config[val] ? ' checked=\"checked\"' : '' ) + '>' + val + '</label>';\n\t}\n\n\tvar userAgent = id(\"qunit-userAgent\");\n\tif ( userAgent ) {\n\t\tuserAgent.innerHTML = navigator.userAgent;\n\t}\n\tvar banner = id(\"qunit-header\");\n\tif ( banner ) {\n\t\tbanner.innerHTML = '<a href=\"' + QUnit.url({ filter: undefined }) + '\"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;\n\t\taddEvent( banner, \"change\", function( event ) {\n\t\t\tvar params = {};\n\t\t\tparams[ event.target.name ] = event.target.checked ? true : undefined;\n\t\t\twindow.location = QUnit.url( params );\n\t\t});\n\t}\n\n\tvar toolbar = id(\"qunit-testrunner-toolbar\");\n\tif ( toolbar ) {\n\t\tvar filter = document.createElement(\"input\");\n\t\tfilter.type = \"checkbox\";\n\t\tfilter.id = \"qunit-filter-pass\";\n\t\taddEvent( filter, \"click\", function() {\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tif ( filter.checked ) {\n\t\t\t\tol.className = ol.className + \" hidepass\";\n\t\t\t} else {\n\t\t\t\tvar tmp = \" \" + ol.className.replace( /[\\n\\t\\r]/g, \" \" ) + \" \";\n\t\t\t\tol.className = tmp.replace(/ hidepass /, \" \");\n\t\t\t}\n\t\t\tif ( defined.sessionStorage ) {\n\t\t\t\tif (filter.checked) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-filter-passed-tests\", \"true\");\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-filter-passed-tests\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem(\"qunit-filter-passed-tests\") ) {\n\t\t\tfilter.checked = true;\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tol.className = ol.className + \" hidepass\";\n\t\t}\n\t\ttoolbar.appendChild( filter );\n\n\t\tvar label = document.createElement(\"label\");\n\t\tlabel.setAttribute(\"for\", \"qunit-filter-pass\");\n\t\tlabel.innerHTML = \"Hide passed tests\";\n\t\ttoolbar.appendChild( label );\n\t}\n\n\tvar main = id('qunit-fixture');\n\tif ( main ) {\n\t\tconfig.fixture = main.innerHTML;\n\t}\n\n\tif (config.autostart) {\n\t\tQUnit.start();\n\t}\n};\n\naddEvent(window, \"load\", QUnit.load);\n\n// addEvent(window, \"error\") gives us a useless event object\nwindow.onerror = function( message, file, line ) {\n\tif ( QUnit.config.current ) {\n\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t} else {\n\t\tQUnit.test( \"global failure\", function() {\n\t\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t\t});\n\t}\n};\n\nfunction done() {\n\tconfig.autorun = true;\n\n\t// Log the last module results\n\tif ( config.currentModule ) {\n\t\trunLoggingCallbacks( 'moduleDone', QUnit, {\n\t\t\tname: config.currentModule,\n\t\t\tfailed: config.moduleStats.bad,\n\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\ttotal: config.moduleStats.all\n\t\t} );\n\t}\n\n\tvar banner = id(\"qunit-banner\"),\n\t\ttests = id(\"qunit-tests\"),\n\t\truntime = +new Date() - config.started,\n\t\tpassed = config.stats.all - config.stats.bad,\n\t\thtml = [\n\t\t\t'Tests completed in ',\n\t\t\truntime,\n\t\t\t' milliseconds.<br/>',\n\t\t\t'<span class=\"passed\">',\n\t\t\tpassed,\n\t\t\t'</span> tests of <span class=\"total\">',\n\t\t\tconfig.stats.all,\n\t\t\t'</span> passed, <span class=\"failed\">',\n\t\t\tconfig.stats.bad,\n\t\t\t'</span> failed.'\n\t\t].join('');\n\n\tif ( banner ) {\n\t\tbanner.className = (config.stats.bad ? \"qunit-fail\" : \"qunit-pass\");\n\t}\n\n\tif ( tests ) {\n\t\tid( \"qunit-testresult\" ).innerHTML = html;\n\t}\n\n\tif ( config.altertitle && typeof document !== \"undefined\" && document.title ) {\n\t\t// show ✖ for good, ✔ for bad suite result in title\n\t\t// use escape sequences in case file gets loaded with non-utf-8-charset\n\t\tdocument.title = [\n\t\t\t(config.stats.bad ? \"\\u2716\" : \"\\u2714\"),\n\t\t\tdocument.title.replace(/^[\\u2714\\u2716] /i, \"\")\n\t\t].join(\" \");\n\t}\n\n\t// clear own sessionStorage items if all tests passed\n\tif ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {\n\t\tvar key;\n\t\tfor ( var i = 0; i < sessionStorage.length; i++ ) {\n\t\t\tkey = sessionStorage.key( i++ );\n\t\t\tif ( key.indexOf(\"qunit-test-\") === 0 ) {\n\t\t\t\tsessionStorage.removeItem( key );\n\t\t\t}\n\t\t}\n\t}\n\n\trunLoggingCallbacks( 'done', QUnit, {\n\t\tfailed: config.stats.bad,\n\t\tpassed: passed,\n\t\ttotal: config.stats.all,\n\t\truntime: runtime\n\t} );\n}\n\nfunction validTest( name ) {\n\tvar filter = config.filter,\n\t\trun = false;\n\n\tif ( !filter ) {\n\t\treturn true;\n\t}\n\n\tvar not = filter.charAt( 0 ) === \"!\";\n\tif ( not ) {\n\t\tfilter = filter.slice( 1 );\n\t}\n\n\tif ( name.indexOf( filter ) !== -1 ) {\n\t\treturn !not;\n\t}\n\n\tif ( not ) {\n\t\trun = true;\n\t}\n\n\treturn run;\n}\n\n// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)\n// Later Safari and IE10 are supposed to support error.stack as well\n// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack\nfunction extractStacktrace( e, offset ) {\n\toffset = offset || 3;\n\tif (e.stacktrace) {\n\t\t// Opera\n\t\treturn e.stacktrace.split(\"\\n\")[offset + 3];\n\t} else if (e.stack) {\n\t\t// Firefox, Chrome\n\t\tvar stack = e.stack.split(\"\\n\");\n\t\tif (/^error$/i.test(stack[0])) {\n\t\t\tstack.shift();\n\t\t}\n\t\treturn stack[offset];\n\t} else if (e.sourceURL) {\n\t\t// Safari, PhantomJS\n\t\t// hopefully one day Safari provides actual stacktraces\n\t\t// exclude useless self-reference for generated Error objects\n\t\tif ( /qunit.js$/.test( e.sourceURL ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// for actual exceptions, this is useful\n\t\treturn e.sourceURL + \":\" + e.line;\n\t}\n}\nfunction sourceFromStacktrace(offset) {\n\ttry {\n\t\tthrow new Error();\n\t} catch ( e ) {\n\t\treturn extractStacktrace( e, offset );\n\t}\n}\n\nfunction escapeInnerText(s) {\n\tif (!s) {\n\t\treturn \"\";\n\t}\n\ts = s + \"\";\n\treturn s.replace(/[\\&<>]/g, function(s) {\n\t\tswitch(s) {\n\t\t\tcase \"&\": return \"&amp;\";\n\t\t\tcase \"<\": return \"&lt;\";\n\t\t\tcase \">\": return \"&gt;\";\n\t\t\tdefault: return s;\n\t\t}\n\t});\n}\n\nfunction synchronize( callback, last ) {\n\tconfig.queue.push( callback );\n\n\tif ( config.autorun && !config.blocking ) {\n\t\tprocess(last);\n\t}\n}\n\nfunction process( last ) {\n\tfunction next() {\n\t\tprocess( last );\n\t}\n\tvar start = new Date().getTime();\n\tconfig.depth = config.depth ? config.depth + 1 : 1;\n\n\twhile ( config.queue.length && !config.blocking ) {\n\t\tif ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {\n\t\t\tconfig.queue.shift()();\n\t\t} else {\n\t\t\twindow.setTimeout( next, 13 );\n\t\t\tbreak;\n\t\t}\n\t}\n\tconfig.depth--;\n\tif ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {\n\t\tdone();\n\t}\n}\n\nfunction saveGlobal() {\n\tconfig.pollution = [];\n\n\tif ( config.noglobals ) {\n\t\tfor ( var key in window ) {\n\t\t\tif ( !hasOwn.call( window, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconfig.pollution.push( key );\n\t\t}\n\t}\n}\n\nfunction checkPollution( name ) {\n\tvar old = config.pollution;\n\tsaveGlobal();\n\n\tvar newGlobals = diff( config.pollution, old );\n\tif ( newGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Introduced global variable(s): \" + newGlobals.join(\", \") );\n\t}\n\n\tvar deletedGlobals = diff( old, config.pollution );\n\tif ( deletedGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Deleted global variable(s): \" + deletedGlobals.join(\", \") );\n\t}\n}\n\n// returns a new Array with the elements that are in a but not in b\nfunction diff( a, b ) {\n\tvar result = a.slice();\n\tfor ( var i = 0; i < result.length; i++ ) {\n\t\tfor ( var j = 0; j < b.length; j++ ) {\n\t\t\tif ( result[i] === b[j] ) {\n\t\t\t\tresult.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction extend(a, b) {\n\tfor ( var prop in b ) {\n\t\tif ( b[prop] === undefined ) {\n\t\t\tdelete a[prop];\n\n\t\t// Avoid \"Member not found\" error in IE8 caused by setting window.constructor\n\t\t} else if ( prop !== \"constructor\" || a !== window ) {\n\t\t\ta[prop] = b[prop];\n\t\t}\n\t}\n\n\treturn a;\n}\n\nfunction addEvent(elem, type, fn) {\n\tif ( elem.addEventListener ) {\n\t\telem.addEventListener( type, fn, false );\n\t} else if ( elem.attachEvent ) {\n\t\telem.attachEvent( \"on\" + type, fn );\n\t} else {\n\t\tfn();\n\t}\n}\n\nfunction id(name) {\n\treturn !!(typeof document !== \"undefined\" && document && document.getElementById) &&\n\t\tdocument.getElementById( name );\n}\n\nfunction registerLoggingCallback(key){\n\treturn function(callback){\n\t\tconfig[key].push( callback );\n\t};\n}\n\n// Supports deprecated method of completely overwriting logging callbacks\nfunction runLoggingCallbacks(key, scope, args) {\n\t//debugger;\n\tvar callbacks;\n\tif ( QUnit.hasOwnProperty(key) ) {\n\t\tQUnit[key].call(scope, args);\n\t} else {\n\t\tcallbacks = config[key];\n\t\tfor( var i = 0; i < callbacks.length; i++ ) {\n\t\t\tcallbacks[i].call( scope, args );\n\t\t}\n\t}\n}\n\n// Test for equality any JavaScript type.\n// Author: Philippe Rathé <prathe@gmail.com>\nQUnit.equiv = (function() {\n\n\tvar innerEquiv; // the real equiv function\n\tvar callers = []; // stack to decide between skip/abort functions\n\tvar parents = []; // stack to avoiding loops from circular referencing\n\n\t// Call the o related callback with the given arguments.\n\tfunction bindCallbacks(o, callbacks, args) {\n\t\tvar prop = QUnit.objectType(o);\n\t\tif (prop) {\n\t\t\tif (QUnit.objectType(callbacks[prop]) === \"function\") {\n\t\t\t\treturn callbacks[prop].apply(callbacks, args);\n\t\t\t} else {\n\t\t\t\treturn callbacks[prop]; // or undefined\n\t\t\t}\n\t\t}\n\t}\n\n\tvar getProto = Object.getPrototypeOf || function (obj) {\n\t\treturn obj.__proto__;\n\t};\n\n\tvar callbacks = (function () {\n\n\t\t// for string, boolean, number and null\n\t\tfunction useStrictEquality(b, a) {\n\t\t\tif (b instanceof a.constructor || a instanceof b.constructor) {\n\t\t\t\t// to catch short annotaion VS 'new' annotation of a\n\t\t\t\t// declaration\n\t\t\t\t// e.g. var i = 1;\n\t\t\t\t// var j = new Number(1);\n\t\t\t\treturn a == b;\n\t\t\t} else {\n\t\t\t\treturn a === b;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"string\" : useStrictEquality,\n\t\t\t\"boolean\" : useStrictEquality,\n\t\t\t\"number\" : useStrictEquality,\n\t\t\t\"null\" : useStrictEquality,\n\t\t\t\"undefined\" : useStrictEquality,\n\n\t\t\t\"nan\" : function(b) {\n\t\t\t\treturn isNaN(b);\n\t\t\t},\n\n\t\t\t\"date\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"date\" && a.valueOf() === b.valueOf();\n\t\t\t},\n\n\t\t\t\"regexp\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"regexp\" &&\n\t\t\t\t\t// the regex itself\n\t\t\t\t\ta.source === b.source &&\n\t\t\t\t\t// and its modifers\n\t\t\t\t\ta.global === b.global &&\n\t\t\t\t\t// (gmi) ...\n\t\t\t\t\ta.ignoreCase === b.ignoreCase &&\n\t\t\t\t\ta.multiline === b.multiline;\n\t\t\t},\n\n\t\t\t// - skip when the property is a method of an instance (OOP)\n\t\t\t// - abort otherwise,\n\t\t\t// initial === would have catch identical references anyway\n\t\t\t\"function\" : function() {\n\t\t\t\tvar caller = callers[callers.length - 1];\n\t\t\t\treturn caller !== Object && typeof caller !== \"undefined\";\n\t\t\t},\n\n\t\t\t\"array\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar len;\n\n\t\t\t\t// b could be an object literal here\n\t\t\t\tif (QUnit.objectType(b) !== \"array\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlen = a.length;\n\t\t\t\tif (len !== b.length) { // safe and faster\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\tloop = true;// dont rewalk array\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\tparents.pop();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparents.pop();\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t\"object\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar eq = true; // unless we can proove it\n\t\t\t\tvar aProperties = [], bProperties = []; // collection of\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// strings\n\n\t\t\t\t// comparing constructors is more strict than using\n\t\t\t\t// instanceof\n\t\t\t\tif (a.constructor !== b.constructor) {\n\t\t\t\t\t// Allow objects with no prototype to be equivalent to\n\t\t\t\t\t// objects with Object as their constructor.\n\t\t\t\t\tif (!((getProto(a) === null && getProto(b) === Object.prototype) ||\n\t\t\t\t\t\t(getProto(b) === null && getProto(a) === Object.prototype)))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// stack constructor before traversing properties\n\t\t\t\tcallers.push(a.constructor);\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\n\t\t\t\tfor (i in a) { // be strict: don't ensures hasOwnProperty\n\t\t\t\t\t\t\t\t// and go deep\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\t// don't go down the same path twice\n\t\t\t\t\t\t\tloop = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\taProperties.push(i); // collect a's properties\n\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\teq = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallers.pop(); // unstack, we are done\n\t\t\t\tparents.pop();\n\n\t\t\t\tfor (i in b) {\n\t\t\t\t\tbProperties.push(i); // collect b's properties\n\t\t\t\t}\n\n\t\t\t\t// Ensures identical properties name\n\t\t\t\treturn eq && innerEquiv(aProperties.sort(), bProperties.sort());\n\t\t\t}\n\t\t};\n\t}());\n\n\tinnerEquiv = function() { // can take multiple arguments\n\t\tvar args = Array.prototype.slice.apply(arguments);\n\t\tif (args.length < 2) {\n\t\t\treturn true; // end transition\n\t\t}\n\n\t\treturn (function(a, b) {\n\t\t\tif (a === b) {\n\t\t\t\treturn true; // catch the most you can\n\t\t\t} else if (a === null || b === null || typeof a === \"undefined\" ||\n\t\t\t\t\ttypeof b === \"undefined\" ||\n\t\t\t\t\tQUnit.objectType(a) !== QUnit.objectType(b)) {\n\t\t\t\treturn false; // don't lose time with error prone cases\n\t\t\t} else {\n\t\t\t\treturn bindCallbacks(a, callbacks, [ b, a ]);\n\t\t\t}\n\n\t\t\t// apply transition with (1..n) arguments\n\t\t}(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)));\n\t};\n\n\treturn innerEquiv;\n\n}());\n\n/**\n * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |\n * http://flesler.blogspot.com Licensed under BSD\n * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008\n *\n * @projectDescription Advanced and extensible data dumping for Javascript.\n * @version 1.0.0\n * @author Ariel Flesler\n * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}\n */\nQUnit.jsDump = (function() {\n\tfunction quote( str ) {\n\t\treturn '\"' + str.toString().replace(/\"/g, '\\\\\"') + '\"';\n\t}\n\tfunction literal( o ) {\n\t\treturn o + '';\n\t}\n\tfunction join( pre, arr, post ) {\n\t\tvar s = jsDump.separator(),\n\t\t\tbase = jsDump.indent(),\n\t\t\tinner = jsDump.indent(1);\n\t\tif ( arr.join ) {\n\t\t\tarr = arr.join( ',' + s + inner );\n\t\t}\n\t\tif ( !arr ) {\n\t\t\treturn pre + post;\n\t\t}\n\t\treturn [ pre, inner + arr, base + post ].join(s);\n\t}\n\tfunction array( arr, stack ) {\n\t\tvar i = arr.length, ret = new Array(i);\n\t\tthis.up();\n\t\twhile ( i-- ) {\n\t\t\tret[i] = this.parse( arr[i] , undefined , stack);\n\t\t}\n\t\tthis.down();\n\t\treturn join( '[', ret, ']' );\n\t}\n\n\tvar reName = /^function (\\w+)/;\n\n\tvar jsDump = {\n\t\tparse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance\n\t\t\tstack = stack || [ ];\n\t\t\tvar parser = this.parsers[ type || this.typeOf(obj) ];\n\t\t\ttype = typeof parser;\n\t\t\tvar inStack = inArray(obj, stack);\n\t\t\tif (inStack != -1) {\n\t\t\t\treturn 'recursion('+(inStack - stack.length)+')';\n\t\t\t}\n\t\t\t//else\n\t\t\tif (type == 'function')  {\n\t\t\t\t\tstack.push(obj);\n\t\t\t\t\tvar res = parser.call( this, obj, stack );\n\t\t\t\t\tstack.pop();\n\t\t\t\t\treturn res;\n\t\t\t}\n\t\t\t// else\n\t\t\treturn (type == 'string') ? parser : this.parsers.error;\n\t\t},\n\t\ttypeOf: function( obj ) {\n\t\t\tvar type;\n\t\t\tif ( obj === null ) {\n\t\t\t\ttype = \"null\";\n\t\t\t} else if (typeof obj === \"undefined\") {\n\t\t\t\ttype = \"undefined\";\n\t\t\t} else if (QUnit.is(\"RegExp\", obj)) {\n\t\t\t\ttype = \"regexp\";\n\t\t\t} else if (QUnit.is(\"Date\", obj)) {\n\t\t\t\ttype = \"date\";\n\t\t\t} else if (QUnit.is(\"Function\", obj)) {\n\t\t\t\ttype = \"function\";\n\t\t\t} else if (typeof obj.setInterval !== undefined && typeof obj.document !== \"undefined\" && typeof obj.nodeType === \"undefined\") {\n\t\t\t\ttype = \"window\";\n\t\t\t} else if (obj.nodeType === 9) {\n\t\t\t\ttype = \"document\";\n\t\t\t} else if (obj.nodeType) {\n\t\t\t\ttype = \"node\";\n\t\t\t} else if (\n\t\t\t\t// native arrays\n\t\t\t\ttoString.call( obj ) === \"[object Array]\" ||\n\t\t\t\t// NodeList objects\n\t\t\t\t( typeof obj.length === \"number\" && typeof obj.item !== \"undefined\" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === \"undefined\" ) ) )\n\t\t\t) {\n\t\t\t\ttype = \"array\";\n\t\t\t} else {\n\t\t\t\ttype = typeof obj;\n\t\t\t}\n\t\t\treturn type;\n\t\t},\n\t\tseparator: function() {\n\t\t\treturn this.multiline ?\tthis.HTML ? '<br />' : '\\n' : this.HTML ? '&nbsp;' : ' ';\n\t\t},\n\t\tindent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing\n\t\t\tif ( !this.multiline ) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar chr = this.indentChar;\n\t\t\tif ( this.HTML ) {\n\t\t\t\tchr = chr.replace(/\\t/g,'   ').replace(/ /g,'&nbsp;');\n\t\t\t}\n\t\t\treturn new Array( this._depth_ + (extra||0) ).join(chr);\n\t\t},\n\t\tup: function( a ) {\n\t\t\tthis._depth_ += a || 1;\n\t\t},\n\t\tdown: function( a ) {\n\t\t\tthis._depth_ -= a || 1;\n\t\t},\n\t\tsetParser: function( name, parser ) {\n\t\t\tthis.parsers[name] = parser;\n\t\t},\n\t\t// The next 3 are exposed so you can use them\n\t\tquote: quote,\n\t\tliteral: literal,\n\t\tjoin: join,\n\t\t//\n\t\t_depth_: 1,\n\t\t// This is the list of parsers, to modify them, use jsDump.setParser\n\t\tparsers: {\n\t\t\twindow: '[Window]',\n\t\t\tdocument: '[Document]',\n\t\t\terror: '[ERROR]', //when no parser is found, shouldn't happen\n\t\t\tunknown: '[Unknown]',\n\t\t\t'null': 'null',\n\t\t\t'undefined': 'undefined',\n\t\t\t'function': function( fn ) {\n\t\t\t\tvar ret = 'function',\n\t\t\t\t\tname = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE\n\t\t\t\tif ( name ) {\n\t\t\t\t\tret += ' ' + name;\n\t\t\t\t}\n\t\t\t\tret += '(';\n\n\t\t\t\tret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');\n\t\t\t\treturn join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );\n\t\t\t},\n\t\t\tarray: array,\n\t\t\tnodelist: array,\n\t\t\t'arguments': array,\n\t\t\tobject: function( map, stack ) {\n\t\t\t\tvar ret = [ ], keys, key, val, i;\n\t\t\t\tQUnit.jsDump.up();\n\t\t\t\tif (Object.keys) {\n\t\t\t\t\tkeys = Object.keys( map );\n\t\t\t\t} else {\n\t\t\t\t\tkeys = [];\n\t\t\t\t\tfor (key in map) { keys.push( key ); }\n\t\t\t\t}\n\t\t\t\tkeys.sort();\n\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\tkey = keys[ i ];\n\t\t\t\t\tval = map[ key ];\n\t\t\t\t\tret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) );\n\t\t\t\t}\n\t\t\t\tQUnit.jsDump.down();\n\t\t\t\treturn join( '{', ret, '}' );\n\t\t\t},\n\t\t\tnode: function( node ) {\n\t\t\t\tvar open = QUnit.jsDump.HTML ? '&lt;' : '<',\n\t\t\t\t\tclose = QUnit.jsDump.HTML ? '&gt;' : '>';\n\n\t\t\t\tvar tag = node.nodeName.toLowerCase(),\n\t\t\t\t\tret = open + tag;\n\n\t\t\t\tfor ( var a in QUnit.jsDump.DOMAttrs ) {\n\t\t\t\t\tvar val = node[QUnit.jsDump.DOMAttrs[a]];\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\tret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret + close + open + '/' + tag + close;\n\t\t\t},\n\t\t\tfunctionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function\n\t\t\t\tvar l = fn.length;\n\t\t\t\tif ( !l ) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tvar args = new Array(l);\n\t\t\t\twhile ( l-- ) {\n\t\t\t\t\targs[l] = String.fromCharCode(97+l);//97 is 'a'\n\t\t\t\t}\n\t\t\t\treturn ' ' + args.join(', ') + ' ';\n\t\t\t},\n\t\t\tkey: quote, //object calls it internally, the key part of an item in a map\n\t\t\tfunctionCode: '[code]', //function calls it internally, it's the content of the function\n\t\t\tattribute: quote, //node calls it internally, it's an html attribute value\n\t\t\tstring: quote,\n\t\t\tdate: quote,\n\t\t\tregexp: literal, //regex\n\t\t\tnumber: literal,\n\t\t\t'boolean': literal\n\t\t},\n\t\tDOMAttrs:{//attributes to dump from nodes, name=>realName\n\t\t\tid:'id',\n\t\t\tname:'name',\n\t\t\t'class':'className'\n\t\t},\n\t\tHTML:false,//if true, entities are escaped ( <, >, \\t, space and \\n )\n\t\tindentChar:'  ',//indentation unit\n\t\tmultiline:true //if true, items in a collection, are separated by a \\n, else just a space.\n\t};\n\n\treturn jsDump;\n}());\n\n// from Sizzle.js\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n//from jquery.js\nfunction inArray( elem, array ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( elem );\n\t}\n\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[ i ] === elem ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/*\n * Javascript Diff Algorithm\n *  By John Resig (http://ejohn.org/)\n *  Modified by Chu Alan \"sprite\"\n *\n * Released under the MIT license.\n *\n * More Info:\n *  http://ejohn.org/projects/javascript-diff-algorithm/\n *\n * Usage: QUnit.diff(expected, actual)\n *\n * QUnit.diff(\"the quick brown fox jumped over\", \"the quick fox jumps over\") == \"the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over\"\n */\nQUnit.diff = (function() {\n\tfunction diff(o, n) {\n\t\tvar ns = {};\n\t\tvar os = {};\n\t\tvar i;\n\n\t\tfor (i = 0; i < n.length; i++) {\n\t\t\tif (ns[n[i]] == null) {\n\t\t\t\tns[n[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\to: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tns[n[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i = 0; i < o.length; i++) {\n\t\t\tif (os[o[i]] == null) {\n\t\t\t\tos[o[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\tn: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tos[o[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i in ns) {\n\t\t\tif ( !hasOwn.call( ns, i ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ns[i].rows.length == 1 && typeof(os[i]) != \"undefined\" && os[i].rows.length == 1) {\n\t\t\t\tn[ns[i].rows[0]] = {\n\t\t\t\t\ttext: n[ns[i].rows[0]],\n\t\t\t\t\trow: os[i].rows[0]\n\t\t\t\t};\n\t\t\t\to[os[i].rows[0]] = {\n\t\t\t\t\ttext: o[os[i].rows[0]],\n\t\t\t\t\trow: ns[i].rows[0]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < n.length - 1; i++) {\n\t\t\tif (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&\n\t\t\tn[i + 1] == o[n[i].row + 1]) {\n\t\t\t\tn[i + 1] = {\n\t\t\t\t\ttext: n[i + 1],\n\t\t\t\t\trow: n[i].row + 1\n\t\t\t\t};\n\t\t\t\to[n[i].row + 1] = {\n\t\t\t\t\ttext: o[n[i].row + 1],\n\t\t\t\t\trow: i + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = n.length - 1; i > 0; i--) {\n\t\t\tif (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&\n\t\t\tn[i - 1] == o[n[i].row - 1]) {\n\t\t\t\tn[i - 1] = {\n\t\t\t\t\ttext: n[i - 1],\n\t\t\t\t\trow: n[i].row - 1\n\t\t\t\t};\n\t\t\t\to[n[i].row - 1] = {\n\t\t\t\t\ttext: o[n[i].row - 1],\n\t\t\t\t\trow: i - 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\to: o,\n\t\t\tn: n\n\t\t};\n\t}\n\n\treturn function(o, n) {\n\t\to = o.replace(/\\s+$/, '');\n\t\tn = n.replace(/\\s+$/, '');\n\t\tvar out = diff(o === \"\" ? [] : o.split(/\\s+/), n === \"\" ? [] : n.split(/\\s+/));\n\n\t\tvar str = \"\";\n\t\tvar i;\n\n\t\tvar oSpace = o.match(/\\s+/g);\n\t\tif (oSpace == null) {\n\t\t\toSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\toSpace.push(\" \");\n\t\t}\n\t\tvar nSpace = n.match(/\\s+/g);\n\t\tif (nSpace == null) {\n\t\t\tnSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\tnSpace.push(\" \");\n\t\t}\n\n\t\tif (out.n.length === 0) {\n\t\t\tfor (i = 0; i < out.o.length; i++) {\n\t\t\t\tstr += '<del>' + out.o[i] + oSpace[i] + \"</del>\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (out.n[0].text == null) {\n\t\t\t\tfor (n = 0; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\tstr += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < out.n.length; i++) {\n\t\t\t\tif (out.n[i].text == null) {\n\t\t\t\t\tstr += '<ins>' + out.n[i] + nSpace[i] + \"</ins>\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar pre = \"\";\n\n\t\t\t\t\tfor (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\t\tpre += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += \" \" + out.n[i].text + nSpace[i] + pre;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n}());\n\n// for CommonJS enviroments, export everything\nif ( typeof exports !== \"undefined\" || typeof require !== \"undefined\" ) {\n\textend(exports, QUnit);\n}\n\n// get at whatever the global object is, like window in browsers\n}( (function() {return this;}.call()) ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/rules.js",
    "content": "module(\"rules\");\n\ntest(\"rules() - internal - input\", function() {\n\tvar element = $('#firstname');\n\tvar v = $('#testForm1').validate();\n\tdeepEqual( element.rules(), { required: true, minlength: 2 } );\n});\n\ntest(\"rules(), ignore method:false\", function() {\n\tvar element = $('#firstnamec');\n\tvar v = $('#testForm1clean').validate({\n\t\trules: {\n\t\t\tfirstname: { required: false, minlength: 2 }\n\t\t}\n\t});\n\tdeepEqual( element.rules(), { minlength: 2 } );\n});\n\ntest(\"rules() HTML5 required (no value)\", function() {\n\tvar element = $('#testForm11text1');\n\tvar v = $('#testForm11').validate();\n\tdeepEqual( element.rules(), { required: true } );\n});\n\ntest(\"rules() - internal - select\", function() {\n\tvar element = $('#meal');\n\tvar v = $('#testForm3').validate();\n\tdeepEqual( element.rules(), {required: true} );\n});\n\ntest(\"rules() - external\", function() {\n\tvar element = $('#text1');\n\tvar v = $('#form').validate({\n\t\trules: {\n\t\t\taction: {date: true, min: 5}\n\t\t}\n\t});\n\tdeepEqual( element.rules(), {date: true, min: 5} );\n});\n\ntest(\"rules() - external - complete form\", function() {\n\texpect(1);\n\n\tvar methods = $.extend({}, $.validator.methods);\n\tvar messages = $.extend({}, $.validator.messages);\n\n\t$.validator.addMethod(\"verifyTest\", function() {\n\t\tok( true, \"method executed\" );\n\t\treturn true;\n\t});\n\tvar v = $('#form').validate({\n\t\trules: {\n\t\t\taction: {verifyTest: true}\n\t\t}\n\t});\n\tv.form();\n\n\t$.validator.methods = methods;\n\t$.validator.messages = messages;\n});\n\ntest(\"rules() - internal - input\", function() {\n\tvar element = $('#form8input');\n\tvar v = $('#testForm8').validate();\n\tdeepEqual( element.rules(), {required: true, number: true, rangelength: [2, 8]});\n});\n\ntest(\"rules(), merge min/max to range, minlength/maxlength to rangelength\", function() {\n\tjQuery.validator.autoCreateRanges = true;\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: 5,\n\t\t\t\tmax: 12\n\t\t\t},\n\t\t\tlastname: {\n\t\t\t\tminlength: 2,\n\t\t\t\tmaxlength: 8\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), {range: [5, 12]});\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {rangelength: [2, 8]} );\n\tjQuery.validator.autoCreateRanges = false;\n});\n\ntest(\"rules(), gurantee that required is at front\", function() {\n\t$(\"#testForm1\").validate();\n\tvar v = $(\"#v2\").validate();\n\t$(\"#subformRequired\").validate();\n\tfunction flatRules(element) {\n\t\tvar result = [];\n\t\tjQuery.each($(element).rules(), function(key, value) { result.push(key) });\n\t\treturn result.join(\" \");\n\t}\n\tequal( \"required minlength\", flatRules(\"#firstname\") );\n\tequal( \"required maxlength minlength\", flatRules(\"#v2-i6\") );\n\tequal( \"required maxlength\", flatRules(\"#co_name\") );\n\n\tQUnit.reset();\n\tjQuery.validator.autoCreateRanges = true;\n\tv = $(\"#v2\").validate();\n\tequal( \"required rangelength\", flatRules(\"#v2-i6\") );\n\n\t$(\"#subformRequired\").validate({\n\t\trules: {\n\t\t\tco_name: \"required\"\n\t\t}\n\t});\n\t$(\"#co_name\").removeClass();\n\tequal( \"required maxlength\", flatRules(\"#co_name\") );\n\tjQuery.validator.autoCreateRanges = false;\n});\n\ntest(\"rules(), evaluate dynamic parameters\", function() {\n\texpect(2);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: function(element) {\n\t\t\t\t\tequal( $(\"#firstnamec\")[0], element );\n\t\t\t\t\treturn 12;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), {min:12});\n});\n\ntest(\"rules(), class and attribute combinations\", function() {\n\n\t$.validator.addMethod(\"customMethod1\", function() {\n\t\treturn false;\n\t}, \"\");\n\t$.validator.addMethod(\"customMethod2\", function() {\n\t\treturn false;\n\t}, \"\");\n\tvar v = $(\"#v2\").validate({\n\t\trules: {\n\t\t\t'v2-i7': {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2,\n\t\t\t\tcustomMethod: true\n\t\t\t}\n\t\t}\n\t});\n\tdeepEqual( $(\"#v2-i1\").rules(), { required: true });\n\tdeepEqual( $(\"#v2-i2\").rules(), { required: true, email: true });\n\tdeepEqual( $(\"#v2-i3\").rules(), { url: true });\n\tdeepEqual( $(\"#v2-i4\").rules(), { required: true, minlength: 2 });\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: \"123\" });\n\tjQuery.validator.autoCreateRanges = true;\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, customMethod1: \"123\", rangelength: [2, 5] });\n\tdeepEqual( $(\"#v2-i6\").rules(), { required: true, customMethod2: true, rangelength: [2, 5] });\n\tjQuery.validator.autoCreateRanges = false;\n\tdeepEqual( $(\"#v2-i7\").rules(), { required: true, minlength: 2, customMethod: true });\n\n\tdelete $.validator.methods.customMethod1;\n\tdelete $.validator.messages.customMethod1;\n\tdelete $.validator.methods.customMethod2;\n\tdelete $.validator.messages.customMethod2;\n});\n\ntest(\"rules(), dependency checks\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\tmin: {\n\t\t\t\t\tparam: 5,\n\t\t\t\t\tdepends: function(el) {\n\t\t\t\t\t\treturn /^a/.test($(el).val());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tlastname: {\n\t\t\t\tmax: {\n\t\t\t\t\tparam: 12\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\tdepends: function() { return true; }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tvar rules = $(\"#firstnamec\").rules();\n\tequal( 0, v.objectLength(rules) );\n\n\t$(\"#firstnamec\").val('ab');\n\tdeepEqual( $(\"#firstnamec\").rules(), {min:5});\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {max:12, email:true});\n});\n\ntest(\"rules(), add and remove\", function() {\n\t$.validator.addMethod(\"customMethod1\", function() {\n\t\treturn false;\n\t}, \"\");\n\t$(\"#v2\").validate();\n\tvar removedAttrs = $(\"#v2-i5\").removeClass(\"required\").removeAttrs(\"minlength maxlength\");\n\tdeepEqual( $(\"#v2-i5\").rules(), { customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").addClass(\"required\").attr(removedAttrs);\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").addClass(\"email\").attr({min: 5});\n\tdeepEqual( $(\"#v2-i5\").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: \"123\" });\n\n\t$(\"#v2-i5\").removeClass(\"required email\").removeAttrs(\"minlength maxlength customMethod1 min\");\n\tdeepEqual( $(\"#v2-i5\").rules(), {});\n\n\tdelete $.validator.methods.customMethod1;\n\tdelete $.validator.messages.customMethod1;\n});\n\ntest(\"rules(), add and remove static rules\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required date\"\n\t\t}\n\t});\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, date: true } );\n\n\t$(\"#firstnamec\").rules(\"remove\", \"date\")\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true } );\n\t$(\"#firstnamec\").rules(\"add\", \"email\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, email: true } );\n\n\t$(\"#firstnamec\").rules(\"remove\", \"required\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { email: true } );\n\n\tdeepEqual( $(\"#firstnamec\").rules(\"remove\"), { email: true } );\n\tdeepEqual( $(\"#firstnamec\").rules(), { } );\n\n\t$(\"#firstnamec\").rules(\"add\", \"required email\");\n\tdeepEqual( $(\"#firstnamec\").rules(), { required: true, email: true } );\n\n\n\tdeepEqual( $(\"#lastnamec\").rules(), {} );\n\t$(\"#lastnamec\").rules(\"add\", \"required\");\n\t$(\"#lastnamec\").rules(\"add\", {\n\t\tminlength: 2\n\t});\n\tdeepEqual( $(\"#lastnamec\").rules(), { required: true, minlength: 2 } );\n\n\n\tvar removedRules = $(\"#lastnamec\").rules(\"remove\", \"required email\");\n\tdeepEqual( $(\"#lastnamec\").rules(), { minlength: 2 } );\n\t$(\"#lastnamec\").rules(\"add\", removedRules);\n\tdeepEqual( $(\"#lastnamec\").rules(), { required: true, minlength: 2 } );\n});\n\ntest(\"rules(), add messages\", function() {\n\t$(\"#firstnamec\").attr(\"title\", null);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\t$(\"#testForm1clean\").valid();\n\t$(\"#firstnamec\").valid();\n\tdeepEqual( v.settings.messages.firstname, undefined );\n\n\t$(\"#firstnamec\").rules(\"add\", {\n\t\tmessages: {\n\t\t\trequired: \"required\"\n\t\t}\n\t});\n\n\t$(\"#firstnamec\").valid();\n\tdeepEqual( v.errorList[0] && v.errorList[0].message, \"required\" );\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/selects/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\n<title>Fun with jQuery</title>\n\n<script src=\"http://www.google.com/jsapi\"></script>\n<script>\n  google.load(\"jquery\", \"1\");\n</script>\n\n<script type=\"text/javascript\">\n\n$.fn.options = function(selector) {\n\treturn this.each(function() {\n\t\tfunction container(select) {\n\t\t\tif (select.next().is(\".option-container\")) {\n\t\t\t\treturn $(select).next();\n\t\t\t}\n\t\t\treturn $('<select class=\"option-container\" />').append(select.children()).insertAfter(select).hide();\n\t\t}\n\t\tvar container = container($(this));\n\t\t$(this).empty().append(container.children(selector).clone());\n\t});\n}\n\n$(document).ready(function(){\n\n\t$(\"#State\").hide()\n\n\t$(\"#Country\").change(function() {\n\t\tvar selected = this.options[this.selectedIndex].value;\n\t\tif (selected == \"US\") {\n\t\t\t$(\"#State\").show().options(\".state\");\n\t\t} else if (selected == \"CA\") {\n\t\t\t$(\"#State\").show().options(\".province\");\n\t\t} else {\n\t\t\t$(\"#State\").hide();\n\t\t}\n\t}).change();\n\n\n});\n</script>\n\n\n\n</head>\n\n<body>\nMission:\n\n<xmp>\nCODE\n\n</xmp>\n\n\n    <select size=\"1\" id=\"Country\" name=\"country\">\n      <option value=\"\">Select One</option>\n\n      <option value=\"US\" selected=\"selected\">United States</option>\n      <option value=\"CA\">Canada</option>\n      <option value=\"\">----------</option>\n      <option value=\"AF\">Afghanistan</option>\n      <option value=\"AL\">Albania</option>\n      <option value=\"DZ\">Algeria</option>\n\n      <option value=\"AS\">American Samoa</option>\n      <option value=\"AD\">Andorra</option>\n      <option value=\"AO\">Angola</option>\n      <option value=\"AI\">Anguilla</option>\n      <option value=\"AQ\">Antarctica</option>\n      <option value=\"AG\">Antigua and Barbuda</option>\n\n      <option value=\"AR\">Argentina</option>\n      <option value=\"AM\">Armenia</option>\n      <option value=\"AW\">Aruba</option>\n      <option value=\"AU\">Australia</option>\n      <option value=\"AT\">Austria</option>\n      <option value=\"AZ\">Azerbaidjan</option>\n\n      <option value=\"BS\">Bahamas</option>\n      <option value=\"BH\">Bahrain</option>\n      <option value=\"BD\">Bangladesh</option>\n      <option value=\"BB\">Barbados</option>\n      <option value=\"BY\">Belarus</option>\n      <option value=\"BE\">Belgium</option>\n\n      <option value=\"BZ\">Belize</option>\n      <option value=\"BJ\">Benin</option>\n      <option value=\"BM\">Bermuda</option>\n      <option value=\"BT\">Bhutan</option>\n      <option value=\"BO\">Bolivia</option>\n      <option value=\"BA\">Bosnia-Herzegovina</option>\n\n      <option value=\"BW\">Botswana</option>\n      <option value=\"BV\">Bouvet Island</option>\n      <option value=\"BR\">Brazil</option>\n      <option value=\"IO\">British Indian Ocean Territory</option>\n      <option value=\"BN\">Brunei Darussalam</option>\n      <option value=\"BG\">Bulgaria</option>\n\n      <option value=\"BF\">Burkina Faso</option>\n      <option value=\"BI\">Burundi</option>\n      <option value=\"KH\">Cambodia</option>\n      <option value=\"CM\">Cameroon</option>\n      <option value=\"CV\">Cape Verde</option>\n      <option value=\"KY\">Cayman Islands</option>\n\n      <option value=\"CF\">Central African Republic</option>\n      <option value=\"TD\">Chad</option>\n      <option value=\"CL\">Chile</option>\n      <option value=\"CN\">China</option>\n      <option value=\"CX\">Christmas Island</option>\n      <option value=\"CC\">Cocos (Keeling) Islands</option>\n\n      <option value=\"CO\">Colombia</option>\n      <option value=\"KM\">Comoros</option>\n      <option value=\"CG\">Congo</option>\n      <option value=\"CK\">Cook Islands</option>\n      <option value=\"CR\">Costa Rica</option>\n      <option value=\"HR\">Croatia</option>\n\n      <option value=\"CU\">Cuba</option>\n      <option value=\"CY\">Cyprus</option>\n      <option value=\"CZ\">Czech Republic</option>\n      <option value=\"DK\">Denmark</option>\n      <option value=\"DJ\">Djibouti</option>\n      <option value=\"DM\">Dominica</option>\n\n      <option value=\"DO\">Dominican Republic</option>\n      <option value=\"TP\">East Timor</option>\n      <option value=\"EC\">Ecuador</option>\n      <option value=\"EG\">Egypt</option>\n      <option value=\"SV\">El Salvador</option>\n      <option value=\"GQ\">Equatorial Guinea</option>\n\n      <option value=\"ER\">Eritrea</option>\n      <option value=\"EE\">Estonia</option>\n      <option value=\"ET\">Ethiopia</option>\n      <option value=\"FK\">Falkland Islands</option>\n      <option value=\"FO\">Faroe Islands</option>\n      <option value=\"FJ\">Fiji</option>\n\n      <option value=\"FI\">Finland</option>\n      <option value=\"CS\">Former Czechoslovakia</option>\n      <option value=\"SU\">Former USSR</option>\n      <option value=\"FR\">France</option>\n      <option value=\"FX\">France (European Territory)</option>\n      <option value=\"GF\">French Guyana</option>\n\n      <option value=\"TF\">French Southern Territories</option>\n      <option value=\"GA\">Gabon</option>\n      <option value=\"GM\">Gambia</option>\n      <option value=\"GE\">Georgia</option>\n      <option value=\"DE\">Germany</option>\n      <option value=\"GH\">Ghana</option>\n\n      <option value=\"GI\">Gibraltar</option>\n      <option value=\"GB\">Great Britain</option>\n      <option value=\"GR\">Greece</option>\n      <option value=\"GL\">Greenland</option>\n      <option value=\"GD\">Grenada</option>\n      <option value=\"GP\">Guadeloupe (French)</option>\n\n      <option value=\"GU\">Guam (USA)</option>\n      <option value=\"GT\">Guatemala</option>\n      <option value=\"GN\">Guinea</option>\n      <option value=\"GW\">Guinea Bissau</option>\n      <option value=\"GY\">Guyana</option>\n      <option value=\"HT\">Haiti</option>\n\n      <option value=\"HM\">Heard and McDonald Islands</option>\n      <option value=\"HN\">Honduras</option>\n      <option value=\"HK\">Hong Kong</option>\n      <option value=\"HU\">Hungary</option>\n      <option value=\"IS\">Iceland</option>\n      <option value=\"IN\">India</option>\n\n      <option value=\"ID\">Indonesia</option>\n      <option value=\"INT\">International</option>\n      <option value=\"IR\">Iran</option>\n      <option value=\"IQ\">Iraq</option>\n      <option value=\"IE\">Ireland</option>\n      <option value=\"IL\">Israel</option>\n\n      <option value=\"IT\">Italy</option>\n      <option value=\"CI\">Ivory Coast (Cote D&#39;Ivoire)</option>\n      <option value=\"JM\">Jamaica</option>\n      <option value=\"JP\">Japan</option>\n      <option value=\"JO\">Jordan</option>\n      <option value=\"KZ\">Kazakhstan</option>\n\n      <option value=\"KE\">Kenya</option>\n      <option value=\"KI\">Kiribati</option>\n      <option value=\"KW\">Kuwait</option>\n      <option value=\"KG\">Kyrgyzstan</option>\n      <option value=\"LA\">Laos</option>\n      <option value=\"LV\">Latvia</option>\n\n      <option value=\"LB\">Lebanon</option>\n      <option value=\"LS\">Lesotho</option>\n      <option value=\"LR\">Liberia</option>\n      <option value=\"LY\">Libya</option>\n      <option value=\"LI\">Liechtenstein</option>\n      <option value=\"LT\">Lithuania</option>\n\n      <option value=\"LU\">Luxembourg</option>\n      <option value=\"MO\">Macau</option>\n      <option value=\"MK\">Macedonia</option>\n      <option value=\"MG\">Madagascar</option>\n      <option value=\"MW\">Malawi</option>\n      <option value=\"MY\">Malaysia</option>\n\n      <option value=\"MV\">Maldives</option>\n      <option value=\"ML\">Mali</option>\n      <option value=\"MT\">Malta</option>\n      <option value=\"MH\">Marshall Islands</option>\n      <option value=\"MQ\">Martinique (French)</option>\n      <option value=\"MR\">Mauritania</option>\n\n      <option value=\"MU\">Mauritius</option>\n      <option value=\"YT\">Mayotte</option>\n      <option value=\"MX\">Mexico</option>\n      <option value=\"FM\">Micronesia</option>\n      <option value=\"MD\">Moldavia</option>\n      <option value=\"MC\">Monaco</option>\n\n      <option value=\"MN\">Mongolia</option>\n      <option value=\"MS\">Montserrat</option>\n      <option value=\"MA\">Morocco</option>\n      <option value=\"MZ\">Mozambique</option>\n      <option value=\"MM\">Myanmar</option>\n      <option value=\"NA\">Namibia</option>\n\n      <option value=\"NR\">Nauru</option>\n      <option value=\"NP\">Nepal</option>\n      <option value=\"NL\">Netherlands</option>\n      <option value=\"AN\">Netherlands Antilles</option>\n      <option value=\"NT\">Neutral Zone</option>\n      <option value=\"NC\">New Caledonia (French)</option>\n\n      <option value=\"NZ\">New Zealand</option>\n      <option value=\"NI\">Nicaragua</option>\n      <option value=\"NE\">Niger</option>\n      <option value=\"NG\">Nigeria</option>\n      <option value=\"NU\">Niue</option>\n      <option value=\"NF\">Norfolk Island</option>\n\n      <option value=\"KP\">North Korea</option>\n      <option value=\"MP\">Northern Mariana Islands</option>\n      <option value=\"NO\">Norway</option>\n      <option value=\"OM\">Oman</option>\n      <option value=\"PK\">Pakistan</option>\n      <option value=\"PW\">Palau</option>\n\n      <option value=\"PA\">Panama</option>\n      <option value=\"PG\">Papua New Guinea</option>\n      <option value=\"PY\">Paraguay</option>\n      <option value=\"PE\">Peru</option>\n      <option value=\"PH\">Philippines</option>\n      <option value=\"PN\">Pitcairn Island</option>\n\n      <option value=\"PL\">Poland</option>\n      <option value=\"PF\">Polynesia (French)</option>\n      <option value=\"PT\">Portugal</option>\n      <option value=\"PR\">Puerto Rico</option>\n      <option value=\"QA\">Qatar</option>\n      <option value=\"RE\">Reunion (French)</option>\n\n      <option value=\"RO\">Romania</option>\n      <option value=\"RU\">Russian Federation</option>\n      <option value=\"RW\">Rwanda</option>\n      <option value=\"GS\">S. Georgia & S. Sandwich Isls.</option>\n      <option value=\"SH\">Saint Helena</option>\n      <option value=\"KN\">Saint Kitts & Nevis Anguilla</option>\n\n      <option value=\"LC\">Saint Lucia</option>\n      <option value=\"PM\">Saint Pierre and Miquelon</option>\n      <option value=\"ST\">Saint Tome (Sao Tome) and Principe</option>\n      <option value=\"VC\">Saint Vincent & Grenadines</option>\n      <option value=\"WS\">Samoa</option>\n      <option value=\"SM\">San Marino</option>\n\n      <option value=\"SA\">Saudi Arabia</option>\n      <option value=\"SN\">Senegal</option>\n      <option value=\"SC\">Seychelles</option>\n      <option value=\"SL\">Sierra Leone</option>\n      <option value=\"SG\">Singapore</option>\n      <option value=\"SK\">Slovak Republic</option>\n\n      <option value=\"SI\">Slovenia</option>\n      <option value=\"SB\">Solomon Islands</option>\n      <option value=\"SO\">Somalia</option>\n      <option value=\"ZA\">South Africa</option>\n      <option value=\"KR\">South Korea</option>\n      <option value=\"ES\">Spain</option>\n\n      <option value=\"LK\">Sri Lanka</option>\n      <option value=\"SD\">Sudan</option>\n      <option value=\"SR\">Suriname</option>\n      <option value=\"SJ\">Svalbard and Jan Mayen Islands</option>\n      <option value=\"SZ\">Swaziland</option>\n      <option value=\"SE\">Sweden</option>\n\n      <option value=\"CH\">Switzerland</option>\n      <option value=\"SY\">Syria</option>\n      <option value=\"TJ\">Tadjikistan</option>\n      <option value=\"TW\">Taiwan</option>\n      <option value=\"TZ\">Tanzania</option>\n      <option value=\"TH\">Thailand</option>\n\n      <option value=\"TG\">Togo</option>\n      <option value=\"TK\">Tokelau</option>\n      <option value=\"TO\">Tonga</option>\n      <option value=\"TT\">Trinidad and Tobago</option>\n      <option value=\"TN\">Tunisia</option>\n      <option value=\"TR\">Turkey</option>\n\n      <option value=\"TM\">Turkmenistan</option>\n      <option value=\"TC\">Turks and Caicos Islands</option>\n      <option value=\"TV\">Tuvalu</option>\n      <option value=\"UG\">Uganda</option>\n      <option value=\"UA\">Ukraine</option>\n      <option value=\"AE\">United Arab Emirates</option>\n\n      <option value=\"GB\">United Kingdom</option>\n      <option value=\"UY\">Uruguay</option>\n      <option value=\"MIL\">USA Military</option>\n      <option value=\"UM\">USA Minor Outlying Islands</option>\n      <option value=\"UZ\">Uzbekistan</option>\n      <option value=\"VU\">Vanuatu</option>\n\n      <option value=\"VA\">Vatican City State</option>\n      <option value=\"VE\">Venezuela</option>\n      <option value=\"VN\">Vietnam</option>\n      <option value=\"VG\">Virgin Islands (British)</option>\n      <option value=\"VI\">Virgin Islands (USA)</option>\n      <option value=\"WF\">Wallis and Futuna Islands</option>\n\n      <option value=\"EH\">Western Sahara</option>\n      <option value=\"YE\">Yemen</option>\n      <option value=\"YU\">Yugoslavia</option>\n      <option value=\"ZR\">Zaire</option>\n      <option value=\"ZM\">Zambia</option>\n      <option value=\"ZW\">Zimbabwe</option>\n\n    </select>\n<br />\n\n<select  id=\"State\" name=\"State\">\n\n      <option value=\"\" class=\"selectone\">Select One</option>\n      <option value=\"AB\" class=\"province\">Alberta</option>\n      <option value=\"BC\" class=\"province\">British Columbia</option>\n      <option value=\"MB\" class=\"province\">Manitoba</option>\n\n      <option value=\"NB\" class=\"province\">New Brunswick</option>\n      <option value=\"NF\" class=\"province\">Newfoundland</option>\n      <option value=\"NT\" class=\"province\">Northwest Territories</option>\n      <option value=\"NS\" class=\"province\">Nova Scotia</option>\n      <option value=\"NU\" class=\"province\">Nunavut</option>\n      <option value=\"ON\" class=\"province\">Ontario</option>\n\n      <option value=\"PE\" class=\"province\">Prince Edward Island</option>\n      <option value=\"QC\" class=\"province\">Quebec</option>\n      <option value=\"SK\" class=\"province\">Saskatchewan</option>\n      <option value=\"YT\" class=\"province\">Yukon Territory</option>\n\n        <option value=\"AK\" class=\"state\">Alaska</option>\n        <option value=\"AL\" class=\"state\">Alabama</option>\n\n        <option value=\"AR\" class=\"state\">Arkansas</option>\n        <option value=\"AZ\" class=\"state\">Arizona</option>\n        <option value=\"CA\" class=\"state\">California</option>\n        <option value=\"CO\" class=\"state\">Colorado</option>\n        <option value=\"CT\" class=\"state\">Connecticut</option>\n        <option value=\"DC\" class=\"state\">District of Columbia</option>\n\n        <option value=\"DE\" class=\"state\">Delaware</option>\n        <option value=\"FL\" class=\"state\">Florida</option>\n        <option value=\"GA\" class=\"state\">Georgia</option>\n        <option value=\"HI\" class=\"state\">Hawaii</option>\n        <option value=\"IA\" class=\"state\">Iowa</option>\n        <option value=\"ID\" class=\"state\">Idaho</option>\n\n        <option value=\"IL\" class=\"state\">Illinois</option>\n        <option value=\"IN\" class=\"state\">Indiana</option>\n        <option value=\"KS\" class=\"state\">Kansas</option>\n        <option value=\"KY\" class=\"state\">Kentucky</option>\n        <option value=\"LA\" class=\"state\">Louisiana</option>\n        <option value=\"MA\" class=\"state\">Massachusetts</option>\n\n        <option value=\"MD\" class=\"state\">Maryland</option>\n        <option value=\"ME\" class=\"state\">Maine</option>\n        <option value=\"MI\" class=\"state\">Michigan</option>\n        <option value=\"MN\" class=\"state\">Minnesota</option>\n        <option value=\"MO\" class=\"state\">Missouri</option>\n        <option value=\"MS\" class=\"state\">Mississippi</option>\n\n        <option value=\"MT\" class=\"state\">Montana</option>\n        <option value=\"NC\" class=\"state\">North Carolina</option>\n        <option value=\"ND\" class=\"state\">North Dakota</option>\n        <option value=\"NE\" class=\"state\">Nebraska</option>\n        <option value=\"NH\" class=\"state\">New Hampshire</option>\n        <option value=\"NJ\" class=\"state\">New Jersey</option>\n\n        <option value=\"NM\" class=\"state\">New Mexico</option>\n        <option value=\"NV\" class=\"state\">Nevada</option>\n        <option value=\"NY\" class=\"state\">New York</option>\n        <option value=\"OH\" class=\"state\">Ohio</option>\n        <option value=\"OK\" class=\"state\">Oklahoma</option>\n        <option value=\"OR\" class=\"state\">Oregon</option>\n\n        <option value=\"PA\" class=\"state\">Pennsylvania</option>\n        <option value=\"PR\" class=\"state\">Puerto Rico</option>\n        <option value=\"RI\" class=\"state\">Rhode Island</option>\n        <option value=\"SC\" class=\"state\">South Carolina</option>\n        <option value=\"SD\" class=\"state\">South Dakota</option>\n        <option value=\"TN\" class=\"state\">Tennessee</option>\n\n        <option value=\"TX\" class=\"state\">Texas</option>\n        <option value=\"UT\" class=\"state\">Utah</option>\n        <option value=\"VA\" class=\"state\">Virginia</option>\n        <option value=\"VT\" class=\"state\">Vermont</option>\n        <option value=\"WA\" class=\"state\">Washington</option>\n        <option value=\"WI\" class=\"state\">Wisconsin</option>\n\n        <option value=\"WV\" class=\"state\">West Virginia</option>\n        <option value=\"WY\" class=\"state\">Wyoming</option>\n</select>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/tabs.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Test for jQuery validate() plugin</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../demo/css/screen.css\" />\n<link rel=\"stylesheet\" href=\"../../../themes/flora/flora.all.css\" type=\"text/css\" media=\"screen\" title=\"Flora (Default)\">\n\n<script src=\"../lib/jquery.js\" type=\"text/javascript\"></script>\n<script src=\"../../../ui/current/ui.tabs.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\" src=\"../lib/jquery.metadata.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.validate.js\"></script>\n<script src=\"firebug/firebug.js\" type=\"text/javascript\"></script>\n\n<script type=\"text/javascript\">\n\n$().ready(function() {\n\t$(\"#commentForm\").validate({debug:true});\n\t$(\"#example > ul\").tabs();\n});\n</script>\n\n<style type=\"text/css\">\nform.cmxform { width: 470px; }\n</style>\n\n</head>\n<body>\n\n\t<form class=\"cmxform\" id=\"commentForm\" method=\"get\" action=\"\">\n\n\t\t<div id=\"example\" class=\"flora\">\n\t        <ul>\n\n\t            <li><a href=\"#fragment-1\"><span>One</span></a></li>\n\t            <li><a href=\"#fragment-2\"><span>Two</span></a></li>\n\t            <li><a href=\"#fragment-3\"><span>Three</span></a></li>\n\t        </ul>\n\t        <div id=\"fragment-1\">\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<legend>A simple comment form with submit validation and default messages</legend>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"cname\">Name (required, at least 2 characters)</label>\n\t\t\t\t\t\t\t<input id=\"cname\" name=\"name\" class=\"some other styles {required:true,minLength:2}\" />\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"cemail\">E-Mail (required)</label>\n\t\t\t\t\t\t\t<input id=\"cemail\" name=\"email\" class=\"{required:true,email:true}\" />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"curl\">URL (optional)</label>\n\t\t\t\t\t\t\t<input id=\"curl\" name=\"url\" class=\"{url:true}\" value=\"\" />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<label for=\"ccomment\">Your comment (required)</label>\n\t\t\t\t\t\t\t<textarea id=\"ccomment\" name=\"comment\" class=\"{required:true}\"></textarea>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</fieldset>\n\n\t        </div>\n\t        <div id=\"fragment-2\">\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t        </div>\n\t        <div id=\"fragment-3\">\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t            Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n\t        </div>\n\t    </div>\n\t\t<p>\n\t\t\t<input class=\"submit\" type=\"submit\" value=\"Submit\"/>\n\t\t</p>\n\n\t</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/jquery-validation/test/test.js",
    "content": "window.sessionStorage && sessionStorage.clear();\njQuery.validator.defaults.debug = true;\n$.mockjaxSettings.log = $.noop;\n\n$.mockjax({\n\turl: \"form.php?user=Peter&password=foobar\",\n\tresponseText: 'Hi Peter, welcome back.',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"users.php\",\n\tdata: { username: /Peter2?|asdf/},\n\tresponseText: 'false',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"users2.php\",\n\tdata: { username: \"asdf\"},\n\tresponseText: '\"asdf is already taken, please try something else\"',\n\tresponseStatus: 200,\n\tresponseTime: 1\n});\n$.mockjax({\n\turl: \"echo.php\",\n\tresponse: function(data) {\n\t\tthis.responseText = JSON.stringify(data.data);\n\t},\n\tresponseTime: 100\n});\n\nmodule(\"validator\");\n\ntest(\"Constructor\", function() {\n\tvar v1 = $(\"#testForm1\").validate();\n\tvar v2 = $(\"#testForm1\").validate();\n\tequal( v1, v2, \"Calling validate() multiple times must return the same validator instance\" );\n\tequal( v1.elements().length, 3, \"validator elements\" );\n});\n\ntest(\"validate() without elements, with non-form elements\", 0, function() {\n\t$(\"#doesn'texist\").validate();\n});\n\ntest(\"valid() plugin method\", function() {\n\tvar form = $(\"#userForm\");\n\tform.validate();\n\tok ( !form.valid(), \"Form isn't valid yet\" );\n\tvar input = $(\"#username\");\n\tok ( !input.valid(), \"Input isn't valid either\" );\n\tinput.val(\"Hello world\");\n\tok ( form.valid(), \"Form is now valid\" );\n\tok ( input.valid(), \"Input is valid, too\" );\n});\n\ntest(\"valid() plugin method\", function() {\n\tvar form = $(\"#testForm1\");\n\tform.validate();\n\tvar inputs = form.find(\"input\");\n\tok( !inputs.valid(), \"all invalid\" );\n\tinputs.not(\":first\").val(\"ok\");\n\tok( !inputs.valid(), \"just one invalid\" );\n\tinputs.val(\"ok\");\n\tok( inputs.valid(), \"all valid\" );\n});\n\ntest(\"valid() plugin method, special handling for checkable groups\", function() {\n\t// rule is defined on first checkbox, must apply to others, too\n\tvar checkable = $(\"#checkable2\");\n\tok( !checkable.valid(), \"must be invalid, not checked yet\" );\n\tcheckable.attr(\"checked\", true);\n\tok( checkable.valid(), \"valid, is now checked\" );\n\tcheckable.attr(\"checked\", false);\n\tok( !checkable.valid(), \"invalid again\" );\n\t$(\"#checkable3\").attr(\"checked\", true);\n\tok( checkable.valid(), \"valid, third box is checked\" );\n});\n\ntest(\"addMethod\", function() {\n\texpect( 3 );\n\t$.validator.addMethod(\"hi\", function(value) {\n\t\treturn value == \"hi\";\n\t}, \"hi me too\");\n\tvar method = $.validator.methods.hi,\n\t\te = $('#text1')[0];\n\tok( !method(e.value, e), \"Invalid\" );\n\te.value = \"hi\";\n\tok( method(e.value, e), \"Invalid\" );\n\tok( jQuery.validator.messages.hi == \"hi me too\", \"Check custom message\" );\n});\n\ntest(\"addMethod2\", function() {\n\texpect( 4 );\n\t$.validator.addMethod(\"complicatedPassword\", function(value, element, param) {\n\t\treturn this.optional(element) || /\\D/.test(value) && /\\d/.test(value)\n\t}, \"Your password must contain at least one number and one letter\");\n\tvar v = jQuery(\"#form\").validate({\n\t\trules: {\n\t\t\taction: { complicatedPassword: true }\n\t\t}\n\t});\n\tvar rule = $.validator.methods.complicatedPassword,\n\t\te = $('#text1')[0];\n\te.value = \"\";\n\tstrictEqual( v.element(e), true, \"Rule is optional, valid\" );\n\tequal( 0, v.size() );\n\te.value = \"ko\";\n\tok( !v.element(e), \"Invalid, doesn't contain one of the required characters\" );\n\te.value = \"ko1\";\n\tok( v.element(e) );\n});\n\ntest(\"form(): simple\", function() {\n\texpect( 2 );\n\tvar form = $('#testForm1')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#firstname').val(\"hi\");\n\t$('#lastname').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): checkboxes: min/required\", function() {\n\texpect( 3 );\n\tvar form = $('#testForm6')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#form6check1').attr(\"checked\", true);\n\tok( !v.form(), 'Invalid form' );\n\t$('#form6check2').attr(\"checked\", true);\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): radio buttons: required\", function () {\n\texpect( 6 );\n\tvar form = $('#testForm10')[0];\n\n\tvar v = $(form).validate({ rules: { testForm10Radio: \"required\"} });\n\tok(!v.form(), 'Invalid Form');\n\tequal($('#testForm10Radio1').attr('class'), 'error');\n\tequal($('#testForm10Radio2').attr('class'), 'error');\n\n\t$('#testForm10Radio2').attr(\"checked\", true);\n\tok(v.form(), 'Valid form');\n\n\tequal($('#testForm10Radio1').attr('class'), 'valid');\n\tequal($('#testForm10Radio2').attr('class'), 'valid');\n});\n\ntest(\"form(): selects: min/required\", function() {\n\texpect( 3 );\n\tvar form = $('#testForm7')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$(\"#optionxa\").attr(\"selected\", true);\n\tok( !v.form(), 'Invalid form' );\n\t$(\"#optionxb\").attr(\"selected\", true);\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): with equalTo\", function() {\n\texpect( 2 );\n\tvar form = $('#testForm5')[0];\n\tvar v = $(form).validate();\n\tok( !v.form(), 'Invalid form' );\n\t$('#x1, #x2').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n});\n\ntest(\"form(): with equalTo and onfocusout=false\", function() {\n\texpect( 4 );\n\tvar form = $('#testForm5')[0];\n\tvar v = $(form).validate({\n\t\tonfocusout: false,\n\t\tshowErrors: function() {\n\t\t\tok(true, 'showErrors should only be called twice');\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\t$('#x1, #x2').val(\"hi\");\n\tok( v.form(), 'Valid form' );\n\t$('#x2').val('not equal').blur();\n\tok( !v.form(), 'Invalid form' );\n});\n\n\ntest(\"check(): simple\", function() {\n\texpect( 3 );\n\tvar element = $('#firstname')[0];\n\tvar v = $('#testForm1').validate();\n\tok( v.size() == 0, 'No errors yet' );\n\tv.check(element);\n\tok( v.size() == 1, 'error exists' );\n\tv.errorList = [];\n\t$('#firstname').val(\"hi\");\n\tv.check(element);\n\tok( !v.size() == 1, 'No more errors' );\n});\n\ntest(\"hide(): input\", function() {\n\texpect( 3 );\n\tvar errorLabel = $('#errorFirstname');\n\tvar element = $('#firstname')[0];\n\telement.value =\"bla\";\n\tvar v = $('#testForm1').validate();\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible before validation\" );\n\tok( v.element(element) );\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after validation\" );\n});\n\ntest(\"hide(): radio\", function() {\n\texpect( 2 );\n\tvar errorLabel = $('#agreeLabel');\n\tvar element = $('#agb')[0];\n\telement.checked = true;\n\tvar v = $('#testForm2').validate({ errorClass: \"xerror\" });\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\tv.element(element);\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"hide(): errorWrapper\", function() {\n\texpect(2);\n\tvar errorLabel = $('#errorWrapper');\n\tvar element = $('#meal')[0];\n\telement.selectedIndex = 1;\n\n\terrorLabel.show();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\tvar v = $('#testForm3').validate({ wrapper: \"li\", errorLabelContainer: $(\"#errorContainer\") });\n\tv.element(element);\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"hide(): container\", function() {\n\texpect(4);\n\tvar errorLabel = $('#errorContainer');\n\tvar element = $('#testForm3')[0];\n\tvar v = $('#testForm3').validate({ errorWrapper: \"li\", errorContainer: $(\"#errorContainer\") });\n\tv.form();\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\t$('#meal')[0].selectedIndex = 1;\n\tv.form();\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n\t$('#meal')[0].selectedIndex = -1;\n\tv.element(\"#meal\");\n\tok( errorLabel.is(\":visible\"), \"Error label visible after validation\" );\n\t$('#meal')[0].selectedIndex = 1;\n\tv.element(\"#meal\");\n\tok( errorLabel.is(\":hidden\"), \"Error label not visible after hiding it\" );\n});\n\ntest(\"valid()\", function() {\n\texpect(4);\n\tvar errorList = [{name:\"meal\",message:\"foo\", element:$(\"#meal\")[0]}];\n\tvar v = $('#testForm3').validate();\n\tok( v.valid(), \"No errors, must be valid\" );\n\tv.errorList = errorList;\n\tok( !v.valid(), \"One error, must be invalid\" );\n\tQUnit.reset();\n\tv = $('#testForm3').validate({ submitHandler: function() {\n\t\tok( false, \"Submit handler was called\" );\n\t}});\n\tok( v.valid(), \"No errors, must be valid and returning true, even with the submit handler\" );\n\tv.errorList = errorList;\n\tok( !v.valid(), \"One error, must be invalid, no call to submit handler\" );\n});\n\ntest(\"submitHandler keeps submitting button\", function() {\n\t$(\"#userForm\").validate({\n\t\tdebug: true,\n\t\tsubmitHandler: function(form) {\n\t\t\t// dunno how to test this better; this tests the implementation that uses a hidden input\n\t\t\tvar hidden = $(form).find(\"input:hidden\")[0];\n\t\t\tdeepEqual(hidden.value, button.value)\n\t\t\tdeepEqual(hidden.name, button.name)\n\t\t}\n\t});\n\t$(\"#username\").val(\"bla\");\n\tvar button = $(\"#userForm :submit\")[0]\n  var event = $.Event(\"click\");\n  event.preventDefault();\n  $.event.trigger(event, null, button);\n\t$(\"#userForm\").submit();\n});\n\ntest(\"showErrors()\", function() {\n\texpect( 4 );\n\tvar errorLabel = $('#errorFirstname').hide();\n\tvar element = $('#firstname')[0];\n\tvar v = $('#testForm1').validate();\n\tok( errorLabel.is(\":hidden\") );\n\tequal( 0, $(\"label.error[for=lastname]\").size() );\n\tv.showErrors({\"firstname\": \"required\", \"lastname\": \"bla\"});\n\tequal( true, errorLabel.is(\":visible\") );\n\tequal( true, $(\"label.error[for=lastname]\").is(\":visible\") );\n});\n\ntest(\"showErrors(), allow empty string and null as default message\", function() {\n\t$(\"#userForm\").validate({\n\t\trules: {\n\t\t\tusername: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 3\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tusername: {\n\t\t\t\trequired: \"\",\n\t\t\t\tminlength: \"too short\"\n\t\t\t}\n\t\t}\n\t});\n\tok( !$(\"#username\").valid() );\n\tequal( \"\", $(\"label.error[for=username]\").text() );\n\n\t$(\"#username\").val(\"ab\");\n\tok( !$(\"#username\").valid() );\n\tequal( \"too short\", $(\"label.error[for=username]\").text() );\n\n\t$(\"#username\").val(\"abc\");\n\tok( $(\"#username\").valid() );\n\tok( $(\"label.error[for=username]\").is(\":hidden\") );\n});\n\ntest(\"showErrors() - external messages\", function() {\n\texpect( 4 );\n\tvar methods = $.extend({}, $.validator.methods);\n\tvar messages = $.extend({}, $.validator.messages);\n\t$.validator.addMethod(\"foo\", function() { return false; });\n\t$.validator.addMethod(\"bar\", function() { return false; });\n\tequal( 0, $(\"#testForm4 label.error[for=f1]\").size() );\n\tequal( 0, $(\"#testForm4 label.error[for=f2]\").size() );\n\tvar form = $('#testForm4')[0];\n\tvar v = $(form).validate({\n\t\tmessages: {\n\t\t\tf1: \"Please!\",\n\t\t\tf2: \"Wohoo!\"\n\t\t}\n\t});\n\tv.form();\n\tequal( $(\"#testForm4 label.error[for=f1]\").text(), \"Please!\" );\n\tequal( $(\"#testForm4 label.error[for=f2]\").text(), \"Wohoo!\" );\n\n\t$.validator.methods = methods;\n\t$.validator.messages = messages;\n});\n\ntest(\"showErrors() - custom handler\", function() {\n\texpect(5);\n\tvar v = $('#testForm1').validate({\n\t\tshowErrors: function(errorMap, errorList) {\n\t\t\tequal( v, this );\n\t\t\tequal( v.errorList, errorList );\n\t\t\tequal( v.errorMap, errorMap );\n\t\t\tequal( \"buga\", errorMap.firstname );\n\t\t\tequal( \"buga\", errorMap.lastname );\n\t\t}\n\t});\n\tv.form();\n});\n\ntest(\"option: (un)highlight, default\", function() {\n\t$(\"#testForm1\").validate();\n\tvar e = $(\"#firstname\")\n\tok( !e.hasClass(\"error\") );\n\tok( !e.hasClass(\"valid\") );\n\te.valid()\n\tok( e.hasClass(\"error\") );\n\tok( !e.hasClass(\"valid\") );\n\te.val(\"hithere\").valid()\n\tok( !e.hasClass(\"error\") );\n\tok( e.hasClass(\"valid\") );\n});\n\ntest(\"option: (un)highlight, nothing\", function() {\n\texpect(3);\n\t$(\"#testForm1\").validate({\n\t\thighlight: false,\n\t\tunhighlight: false\n\t});\n\tvar e = $(\"#firstname\")\n\tok( !e.hasClass(\"error\") );\n\te.valid()\n\tok( !e.hasClass(\"error\") );\n\te.valid()\n\tok( !e.hasClass(\"error\") );\n});\n\ntest(\"option: (un)highlight, custom\", function() {\n\texpect(5);\n\t$(\"#testForm1clean\").validate({\n\t\thighlight: function(element, errorClass) {\n\t\t\tequal( \"invalid\", errorClass );\n\t\t\t$(element).hide();\n\t\t},\n\t\tunhighlight: function(element, errorClass) {\n\t\t\tequal( \"invalid\", errorClass )\n\t\t\t$(element).show();\n\t\t},\n\t\terrorClass: \"invalid\",\n\t\trules: {\n\t\t\tfirstname: \"required\"\n\t\t}\n\t});\n\tvar e = $(\"#firstnamec\")\n\tok( e.is(\":visible\") );\n\te.valid()\n\tok( !e.is(\":visible\") );\n\te.val(\"hithere\").valid()\n\tok( e.is(\":visible\") );\n});\n\ntest(\"option: (un)highlight, custom2\", function() {\n\texpect(6);\n\t$(\"#testForm1\").validate({\n\t\thighlight: function(element, errorClass) {\n\t\t\t$(element).addClass(errorClass);\n\t\t\t$(element.form).find(\"label[for=\" + element.id + \"]\").addClass(errorClass);\n\t\t},\n\t\tunhighlight: function(element, errorClass) {\n\t\t\t$(element).removeClass(errorClass);\n\t\t\t$(element.form).find(\"label[for=\" + element.id + \"]\").removeClass(errorClass);\n\t\t},\n\t\terrorClass: \"invalid\"\n\t});\n\tvar e = $(\"#firstname\")\n\tvar l = $(\"#errorFirstname\")\n\tok( !e.is(\".invalid\") );\n\tok( !l.is(\".invalid\") );\n\te.valid()\n\tok( e.is(\".invalid\") );\n\tok( l.is(\".invalid\") );\n\te.val(\"hithere\").valid()\n\tok( !e.is(\".invalid\") );\n\tok( !l.is(\".invalid\") );\n});\n\ntest(\"option: focusCleanup default false\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate();\n\tform.valid();\n\tok( form.is(\":has(label.error[for=username]:visible)\"));\n\t$(\"#username\").focus();\n\tok( form.is(\":has(label.error[for=username]:visible)\"));\n});\n\ntest(\"option: focusCleanup true\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true\n\t});\n\tform.valid();\n\tok( form.is(\":has(label.error[for=username]:visible)\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(label.error[for=username]:visible)\") );\n});\n\ntest(\"option: focusCleanup with wrapper\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true,\n\t\twrapper: \"span\"\n\t});\n\tform.valid();\n\tok( form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(span:visible:has(label.error[for=username]))\") );\n});\n\ntest(\"option: errorClass with multiple classes\", function() {\n\tvar form = $(\"#userForm\")\n\tform.validate({\n\t\tfocusCleanup: true,\n\t\twrapper: \"span\",\n\t\terrorClass: \"error error1\"\n\t});\n\tform.valid();\n\tok( form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\tok( form.is(\":has(span:visible:has(label.error1[for=username]))\") );\n\t$(\"#username\").focus().trigger(\"focusin\");\n\tok( !form.is(\":has(span:visible:has(label.error[for=username]))\") );\n\tok( !form.is(\":has(span:visible:has(label.error1[for=username]))\") );\n});\n\ntest(\"elements() order\", function() {\n\tvar container = $(\"#orderContainer\");\n\tvar v = $(\"#elementsOrder\").validate({\n\t\terrorLabelContainer: container,\n\t\twrap: \"li\"\n\t});\n\tdeepEqual( v.elements().map(function() {\n\t\treturn $(this).attr(\"id\");\n\t}).get(), [\"order1\", \"order2\", \"order3\", \"order4\", \"order5\", \"order6\"], \"elements must be in document order\" );\n\tv.form();\n\tdeepEqual( container.children().map(function() {\n\t\treturn $(this).attr(\"for\");\n\t}).get(), [\"order1\", \"order2\", \"order3\", \"order4\", \"order5\", \"order6\"], \"labels in error container must be in document order\" );\n});\n\ntest(\"defaultMessage(), empty title is ignored\", function() {\n\tvar v = $(\"#userForm\").validate();\n\tequal( \"This field is required.\", v.defaultMessage($(\"#username\")[0], \"required\") );\n});\n\ntest(\"formatAndAdd\", function() {\n\texpect(4);\n\tvar v = $(\"#form\").validate();\n\tvar fakeElement = { form: $(\"#form\")[0], name: \"bar\" };\n\tv.formatAndAdd(fakeElement, {method: \"maxlength\", parameters: 2})\n\tequal( \"Please enter no more than 2 characters.\", v.errorList[0].message );\n\tequal( \"bar\", v.errorList[0].element.name );\n\n\tv.formatAndAdd(fakeElement, {method: \"range\", parameters:[2,4]})\n\tequal( \"Please enter a value between 2 and 4.\", v.errorList[1].message );\n\n\tv.formatAndAdd(fakeElement, {method: \"range\", parameters:[0,4]})\n\tequal( \"Please enter a value between 0 and 4.\", v.errorList[2].message );\n});\n\ntest(\"formatAndAdd2\", function() {\n\texpect(3);\n\tvar v = $(\"#form\").validate();\n\tvar fakeElement = { form: $(\"#form\")[0], name: \"bar\" };\n\tjQuery.validator.messages.test1 = function(param, element) {\n\t\tequal( v, this );\n\t\tequal( 0, param );\n\t\treturn \"element \" + element.name + \" is not valid\";\n\t};\n\tv.formatAndAdd(fakeElement, {method: \"test1\", parameters: 0})\n\tequal( \"element bar is not valid\", v.errorList[0].message );\n});\n\ntest(\"formatAndAdd, auto detect substitution string\", function() {\n\tvar v = $(\"#testForm1clean\").validate({\n\t\trules: {\n\t\t\tfirstname: {\n\t\t\t\trequired: true,\n\t\t\t\trangelength: [5, 10]\n\t\t\t}\n\t\t},\n\t\tmessages: {\n\t\t\tfirstname: {\n\t\t\t\trangelength: \"at least ${0}, up to {1}\"\n\t\t\t}\n\t\t}\n\t});\n\t$(\"#firstnamec\").val(\"abc\");\n\tv.form();\n\tequal( \"at least 5, up to 10\", v.errorList[0].message );\n})\n\ntest(\"error containers, simple\", function() {\n\texpect(14);\n\tvar container = $(\"#simplecontainer\");\n\tvar v = $(\"#form\").validate({\n\t\terrorLabelContainer: container,\n\t\tshowErrors: function() {\n\t\t\tcontainer.find(\"h3\").html( jQuery.validator.format(\"There are {0} errors in your form.\", this.size()) );\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\n\tv.prepareForm();\n\tok( v.valid(), \"form is valid\" );\n\tequal( 0, container.find(\"label\").length, \"There should be no error labels\" );\n\tequal( \"\", container.find(\"h3\").html() );\n\n\tv.prepareForm();\n\tv.errorList = [{message:\"bar\", element: {name:\"foo\"}}, {message: \"necessary\", element: {name:\"required\"}}];\n\tok( !v.valid(), \"form is not valid after adding errors manually\" );\n\tv.showErrors();\n\tequal( container.find(\"label\").length, 2, \"There should be two error labels\" );\n\tok( container.is(\":visible\"), \"Check that the container is visible\" );\n\tcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":visible\"), \"Check that each label is visible\" );\n\t});\n\tequal( \"There are 2 errors in your form.\", container.find(\"h3\").html() );\n\n\tv.prepareForm();\n\tok( v.valid(), \"form is valid after a reset\" );\n\tv.showErrors();\n\tequal( container.find(\"label\").length, 2, \"There should still be two error labels\" );\n\tok( container.is(\":hidden\"), \"Check that the container is hidden\" );\n\tcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":hidden\"), \"Check that each label is hidden\" );\n\t});\n});\n\ntest(\"error containers, with labelcontainer I\", function() {\n\texpect(16);\n\tvar container = $(\"#container\"),\n\t\tlabelcontainer = $(\"#labelcontainer\");\n\tvar v = $(\"#form\").validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: labelcontainer,\n\t\twrapper: \"li\"\n\t});\n\n\tok( v.valid(), \"form is valid\" );\n\tequal( 0, container.find(\"label\").length, \"There should be no error labels in the container\" );\n\tequal( 0, labelcontainer.find(\"label\").length, \"There should be no error labels in the labelcontainer\" );\n\tequal( 0, labelcontainer.find(\"li\").length, \"There should be no lis labels in the labelcontainer\" );\n\n\tv.errorList = [{message:\"bar\", element: {name:\"foo\"}}, {name: \"required\", message: \"necessary\", element: {name:\"required\"}}];\n\tok( !v.valid(), \"form is not valid after adding errors manually\" );\n\tv.showErrors();\n\tequal( 0, container.find(\"label\").length, \"There should be no error label in the container\" );\n\tequal( 2, labelcontainer.find(\"label\").length, \"There should be two error labels in the labelcontainer\" );\n\tequal( 2, labelcontainer.find(\"li\").length, \"There should be two error lis in the labelcontainer\" );\n\tok( container.is(\":visible\"), \"Check that the container is visible\" );\n\tok( labelcontainer.is(\":visible\"), \"Check that the labelcontainer is visible\" );\n\tvar labels = labelcontainer.find(\"label\").each(function() {\n\t\tok( $(this).is(\":visible\"), \"Check that each label is visible1\" );\n\t\tequal( \"li\", $(this).parent()[0].tagName.toLowerCase(), \"Check that each label is wrapped in an li\" );\n\t\tok( $(this).parent(\"li\").is(\":visible\"), \"Check that each parent li is visible\" );\n\t});\n});\n\ntest(\"errorcontainer, show/hide only on submit\", function() {\n\texpect(14);\n\tvar container = $(\"#container\");\n\tvar labelContainer = $(\"#labelcontainer\");\n\tvar v = $(\"#testForm1\").bind(\"invalid-form.validate\", function() {\n\t\tok( true, \"invalid-form event triggered called\" );\n\t}).validate({\n\t\terrorContainer: container,\n\t\terrorLabelContainer: labelContainer,\n\t\tshowErrors: function() {\n\t\t\tcontainer.html( jQuery.validator.format(\"There are {0} errors in your form.\", this.numberOfInvalids()) );\n\t\t\tok( true, \"showErrors called\" );\n\t\t\tthis.defaultShowErrors();\n\t\t}\n\t});\n\tequal( \"\", container.html(), \"must be empty\" );\n\tequal( \"\", labelContainer.html(), \"must be empty\" );\n\t// validate whole form, both showErrors and invalidHandler must be called once\n\t// preferably invalidHandler first, showErrors second\n\tok( !v.form(), \"invalid form\" );\n\tequal( 2, labelContainer.find(\"label\").length );\n\tequal( \"There are 2 errors in your form.\", container.html() );\n\tok( labelContainer.is(\":visible\"), \"must be visible\" );\n\tok( container.is(\":visible\"), \"must be visible\" );\n\n\t$(\"#firstname\").val(\"hix\").keyup();\n\t$(\"#testForm1\").triggerHandler(\"keyup\", [jQuery.event.fix({ type: \"keyup\", target: $(\"#firstname\")[0] })]);\n\tequal( 1, labelContainer.find(\"label:visible\").length );\n\tequal( \"There are 1 errors in your form.\", container.html() );\n\n\t$(\"#lastname\").val(\"abc\");\n\tok( v.form(), \"Form now valid, trigger showErrors but not invalid-form\" );\n});\n\ntest(\"option invalidHandler\", function() {\n\texpect(1);\n\tvar v = $(\"#testForm1clean\").validate({\n\t\tinvalidHandler: function() {\n\t\t\tok( true, \"invalid-form event triggered called\" );\n\t\t\tstart();\n\t\t}\n\t});\n\t$(\"#usernamec\").val(\"asdf\").rules(\"add\", { required: true, minlength: 5 });\n\tstop();\n\t$(\"#testForm1clean\").submit();\n});\n\ntest(\"findByName()\", function() {\n\tdeepEqual( new $.validator({}, document.getElementById(\"form\")).findByName(document.getElementById(\"radio1\").name).get(), $(\"#form\").find(\"[name=radio1]\").get() );\n});\n\ntest(\"focusInvalid()\", function() {\n\t// TODO when using custom focusin, this is triggered just once\n\t// TODO when using 1.4 focusin, triggered twice; fix once not testing against 1.3 anymore\n\t// expect(1);\n\tvar inputs = $(\"#testForm1 input\").focus(function() {\n\t\tequal( inputs[0], this, \"focused first element\" );\n\t});\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\tv.focusInvalid();\n});\n\ntest(\"findLastActive()\", function() {\n\texpect(3);\n\tvar v = $(\"#testForm1\").validate();\n\tok( !v.findLastActive() );\n\tv.form();\n\tv.focusInvalid();\n\tequal( v.findLastActive(), $(\"#firstname\")[0] );\n\tvar lastActive = $(\"#lastname\").trigger(\"focus\").trigger(\"focusin\")[0];\n\tequal( v.lastActive, lastActive );\n});\n\ntest(\"validating multiple checkboxes with 'required'\", function() {\n\texpect(3);\n\tvar checkboxes = $(\"#form input[name=check3]\").attr(\"checked\", false);\n\tequal(checkboxes.size(), 5);\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck3: \"required\"\n\t\t}\n\t});\n\tv.form();\n\tequal(v.size(), 1);\n\tcheckboxes.filter(\":last\").attr(\"checked\", true);\n\tv.form();\n\tequal(v.size(), 0);\n});\n\ntest(\"dynamic form\", function() {\n\tvar counter = 0;\n\tfunction add() {\n\t\t$(\"<input class='{required:true}' name='list\" + counter++ + \"' />\").appendTo(\"#testForm2\");\n\t}\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm2\").validate();\n\tv.form();\n\terrors(1);\n\tadd();\n\tv.form();\n\terrors(2);\n\tadd();\n\tv.form();\n\terrors(3);\n\t$(\"#testForm2 input[name=list1]\").remove();\n\tv.form();\n\terrors(2);\n\tadd();\n\tv.form();\n\terrors(3);\n\t$(\"#testForm2 input[name^=list]\").remove();\n\tv.form();\n\terrors(1);\n\t$(\"#agb\").attr(\"disabled\", true);\n\tv.form();\n\terrors(0);\n\t$(\"#agb\").attr(\"disabled\", false);\n\tv.form();\n\terrors(1);\n});\n\ntest(\"idOrName()\", function() {\n\texpect(4);\n\tvar v = $(\"#testForm1\").validate();\n\tequal( \"form8input\", v.idOrName( $(\"#form8input\")[0] ) );\n\tequal( \"check\", v.idOrName( $(\"#form6check1\")[0] ) );\n\tequal( \"agree\", v.idOrName( $(\"#agb\")[0] ) );\n\tequal( \"button\", v.idOrName( $(\"#form :button\")[0] ) );\n});\n\ntest(\"resetForm()\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\terrors(2);\n\t$(\"#firstname\").val(\"hiy\");\n\tv.resetForm();\n\terrors(0);\n\tequal(\"\", $(\"#firstname\").val(), \"form plugin is included, therefor resetForm must also reset inputs, not only errors\");\n});\n\ntest(\"message from title\", function() {\n\tvar v = $(\"#withTitle\").validate();\n    v.checkForm();\n\tequal(v.errorList[0].message, \"fromtitle\", \"title not used\");\n});\n\ntest(\"ignoreTitle\", function() {\n\tvar v = $(\"#withTitle\").validate({ignoreTitle:true});\n    v.checkForm();\n\tequal(v.errorList[0].message, $.validator.messages[\"required\"], \"title used when it should have been ignored\");\n});\n\ntest(\"ajaxSubmit\", function() {\n\texpect(1);\n\tstop();\n\t$(\"#user\").val(\"Peter\");\n\t$(\"#password\").val(\"foobar\");\n\tjQuery(\"#signupForm\").validate({\n\t\tsubmitHandler: function(form) {\n\t\t\tjQuery(form).ajaxSubmit({\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tequal(\"Hi Peter, welcome back.\", response);\n\t\t\t\t\tstart();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\tjQuery(\"#signupForm\").triggerHandler(\"submit\");\n});\n\n\nmodule(\"misc\");\n\ntest(\"success option\", function() {\n\texpect(7);\n\tequal( \"\", $(\"#firstname\").val() );\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tvar label = $(\"#testForm1 label\");\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( label.is(\".valid\") );\n});\n\ntest(\"success option2\", function() {\n\texpect(5);\n\tequal( \"\", $(\"#firstname\").val() );\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tvar label = $(\"#testForm1 label\");\n\tok( label.is(\".error\") );\n\tok( !label.is(\".valid\") );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tok( label.is(\".error\") );\n\tok( label.is(\".valid\") );\n});\n\ntest(\"success option3\", function() {\n\texpect(5);\n\tequal( \"\", $(\"#firstname\").val() );\n\t$(\"#errorFirstname\").remove();\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: \"valid\"\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").val(\"hi\");\n\tv.form();\n\tvar labels = $(\"#testForm1 label\");\n\tequal( 3, labels.size() );\n\tok( labels.eq(0).is(\".valid\") );\n\tok( !labels.eq(1).is(\".valid\") );\n});\n\ntest(\"successlist\", function() {\n\tvar v = $(\"#form\").validate({ success: \"xyz\" });\n\tv.form();\n\tequal(0, v.successList.length);\n});\n\ntest(\"success isn't called for optional elements\", function() {\n\texpect(4);\n\tequal( \"\", $(\"#firstname\").removeClass().val() );\n\t$(\"#something\").remove();\n\t$(\"#lastname\").remove();\n\t$(\"#errorFirstname\").remove();\n\tvar v = $(\"#testForm1\").validate({\n\t\tsuccess: function() {\n\t\t\tok( false, \"don't call success for optional elements!\" );\n\t\t},\n\t\trules: {\n\t\t\tfirstname: \"email\"\n\t\t}\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\tv.form();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").valid();\n\tequal( 0, $(\"#testForm1 label\").size() );\n});\n\ntest(\"success callback with element\", function() {\n\texpect(1);\n\tvar v = $(\"#userForm\").validate({\n\t\tsuccess: function( label, element ) {\n\t\t\tequal( element, $('#username').get(0) );\n\t\t}\n\t});\n\t$(\"#username\").val(\"hi\");\n\tv.form();\n});\n\ntest(\"all rules are evaluated even if one returns a dependency-mistmatch\", function() {\n\texpect(6);\n\tequal( \"\", $(\"#firstname\").removeClass().val() );\n\t$(\"#lastname\").remove();\n\t$(\"#errorFirstname\").remove();\n\t$.validator.addMethod(\"custom1\", function() {\n\t\tok( true, \"custom method must be evaluated\" );\n\t\treturn true;\n\t}, \"\");\n\tvar v = $(\"#testForm1\").validate({\n\t\trules: {\n\t\t\tfirstname: {email:true, custom1: true}\n\t\t}\n\t});\n\tequal( 0, $(\"#testForm1 label\").size() );\n\tv.form();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\t$(\"#firstname\").valid();\n\tequal( 0, $(\"#testForm1 label\").size() );\n\n\tdelete $.validator.methods.custom1;\n\tdelete $.validator.messages.custom1;\n});\n\ntest(\"messages\", function() {\n\tvar m = jQuery.validator.messages;\n\tequal( \"Please enter no more than 0 characters.\", m.maxlength(0) );\n\tequal( \"Please enter at least 1 characters.\", m.minlength(1) );\n\tequal( \"Please enter a value between 1 and 2 characters long.\", m.rangelength([1, 2]) );\n\tequal( \"Please enter a value less than or equal to 1.\", m.max(1) );\n\tequal( \"Please enter a value greater than or equal to 0.\", m.min(0) );\n\tequal( \"Please enter a value between 1 and 2.\", m.range([1, 2]) );\n});\n\ntest(\"jQuery.validator.format\", function() {\n\tequal( \"Please enter a value between 0 and 1.\", jQuery.validator.format(\"Please enter a value between {0} and {1}.\", 0, 1) );\n\tequal( \"0 is too fast! Enter a value smaller then 0 and at least -15\", jQuery.validator.format(\"{0} is too fast! Enter a value smaller then {0} and at least {1}\", 0, -15) );\n\tvar template = jQuery.validator.format(\"{0} is too fast! Enter a value smaller then {0} and at least {1}\");\n\tequal( \"0 is too fast! Enter a value smaller then 0 and at least -15\", template(0, -15) );\n\ttemplate = jQuery.validator.format(\"Please enter a value between {0} and {1}.\");\n\tequal( \"Please enter a value between 1 and 2.\", template([1, 2]) );\n});\n\ntest(\"option: ignore\", function() {\n\tvar v = $(\"#testForm1\").validate({\n\t\tignore: \"[name=lastname]\"\n\t});\n\tv.form();\n\tequal( 1, v.size() );\n});\n\ntest(\"option: subformRequired\", function() {\n\tjQuery.validator.addMethod(\"billingRequired\", function(value, element) {\n\t\tif ($(\"#bill_to_co\").is(\":checked\"))\n\t\t\treturn $(element).parents(\"#subform\").length;\n\t\treturn !this.optional(element);\n\t}, \"\");\n\tvar v = $(\"#subformRequired\").validate();\n\tv.form();\n\tequal( 1, v.size() );\n\t$(\"#bill_to_co\").attr(\"checked\", false);\n\tv.form();\n\tequal( 2, v.size() );\n\n\tdelete $.validator.methods.billingRequired;\n\tdelete $.validator.messages.billingRequired;\n});\n\nmodule(\"expressions\");\n\ntest(\"expression: :blank\", function() {\n\tvar e = $(\"#lastname\")[0];\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value = \" \";\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value = \"   \"\n\tequal( 1, $(e).filter(\":blank\").length );\n\te.value= \" a \";\n\tequal( 0, $(e).filter(\":blank\").length );\n});\n\ntest(\"expression: :filled\", function() {\n\tvar e = $(\"#lastname\")[0];\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value = \" \";\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value = \"   \"\n\tequal( 0, $(e).filter(\":filled\").length );\n\te.value= \" a \";\n\tequal( 1, $(e).filter(\":filled\").length );\n});\n\ntest(\"expression: :unchecked\", function() {\n\tvar e = $(\"#check2\")[0];\n\tequal( 1, $(e).filter(\":unchecked\").length );\n\te.checked = true;\n\tequal( 0, $(e).filter(\":unchecked\").length );\n\te.checked = false;\n\tequal( 1, $(e).filter(\":unchecked\").length );\n});\n\nmodule(\"events\");\n\ntest(\"validate on blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(v.size(), expected, message );\n\t}\n\tfunction labels(expected) {\n\t\tequal(v.errors().filter(\":visible\").size(), expected);\n\t}\n\tfunction blur(target) {\n\t\ttarget.trigger(\"blur\").trigger(\"focusout\");\n\t}\n\t$(\"#errorFirstname\").hide();\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\t$(\"#something\").val(\"\");\n\tblur(e);\n\terrors(0, \"No value yet, required is skipped on blur\");\n\tlabels(0);\n\te.val(\"h\");\n\tblur(e);\n\terrors(1, \"Required was ignored, but as something was entered, check other rules, minlength isn't met\");\n\tlabels(1);\n\te.val(\"hh\");\n\tblur(e);\n\terrors(0, \"All is fine\");\n\tlabels(0);\n\te.val(\"\");\n\tv.form();\n\terrors(3, \"Submit checks all rules, both fields invalid\");\n\tlabels(3);\n\tblur(e);\n\terrors(1, \"Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error\" );\n\tlabels(3);\n\te.val(\"h\");\n\tblur(e);\n\terrors(1, \"Entering a single character fulfills required, but not minlength: 2, still invalid\");\n\tlabels(3);\n\te.val(\"hh\");\n\tblur(e);\n\terrors(0, \"Both required and minlength are met, no errors left\");\n\tlabels(2);\n});\n\ntest(\"validate on keyup\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction keyup(target) {\n\t\ttarget.trigger(\"keyup\");\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\tkeyup(e);\n\terrors(0, \"No value, no errors\");\n\te.val(\"a\");\n\tkeyup(e);\n\terrors(0, \"Value, but not invalid\");\n\te.val(\"\");\n\tv.form();\n\terrors(2, \"Both invalid\");\n\tkeyup(e);\n\terrors(1, \"Only one field validated, still invalid\");\n\te.val(\"hh\");\n\tkeyup(e);\n\terrors(0, \"Not invalid anymore\");\n\te.val(\"h\");\n\tkeyup(e);\n\terrors(1, \"Field didn't loose focus, so validate again, invalid\");\n\te.val(\"hh\");\n\tkeyup(e);\n\terrors(0, \"Valid\");\n});\n\ntest(\"validate on not keyup, only blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate({\n\t\tonkeyup: false\n\t});\n\terrors(0);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\te.keyup();\n\terrors(0);\n\te.trigger(\"blur\").trigger(\"focusout\");\n\terrors(1);\n});\n\ntest(\"validate on keyup and blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\terrors(0);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\terrors(0);\n\te.trigger(\"blur\").trigger(\"focusout\");\n\terrors(1);\n});\n\ntest(\"validate email on keyup and blur\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar e = $(\"#firstname\");\n\tvar v = $(\"#testForm1\").validate();\n\tv.form();\n\terrors(2);\n\te.val(\"a\");\n\te.trigger(\"keyup\");\n\terrors(1);\n\te.val(\"aa\");\n\te.trigger(\"keyup\");\n\terrors(0);\n});\n\ntest(\"validate checkbox on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e = $(\"#check2\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck2: \"required\"\n\t\t}\n\t});\n\ttrigger(e);\n\terrors(0);\n\ttrigger(e);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e);\n\terrors(0);\n\ttrigger(e);\n\terrors(1);\n});\n\ntest(\"validate multiple checkbox on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#check1\").attr(\"checked\", false);\n\tvar e2 = $(\"#check1b\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tcheck: {\n\t\t\t\trequired: true,\n\t\t\t\tminlength: 2\n\t\t\t}\n\t\t}\n\t});\n\ttrigger(e1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e2);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e2);\n\terrors(1);\n});\n\ntest(\"correct checkbox receives the error\", function(){\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#check1\").attr(\"checked\", false);\n\tvar e2 = $(\"#check1b\").attr(\"checked\", false);\n    var v = $(\"#form\").find('[type=checkbox]').attr('checked', false).end().validate({\n        rules:{\n            check: {\n                    required: true,\n                    minlength: 2\n            }\n        }\n    });\n    equal(false, v.form());\n    trigger(e1);\n    equal(false, v.form());\n    ok(v.errorList[0].element.id === v.currentElements[0].id, \"the proper checkbox has the error AND is present in currentElements\");\n});\n\ntest(\"validate radio on click\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tfunction trigger(element) {\n\t\telement.click();\n\t\t// triggered click event screws up checked-state in 1.4\n\t\telement.valid();\n\t}\n\tvar e1 = $(\"#radio1\");\n\tvar e2 = $(\"#radio1a\");\n\tvar v = $(\"#form\").validate({\n\t\trules: {\n\t\t\tradio1: \"required\"\n\t\t}\n\t});\n\terrors(0);\n\tequal( false, v.form() );\n\terrors(1);\n\ttrigger(e2);\n\terrors(0);\n\ttrigger(e1);\n\terrors(0);\n});\n\ntest(\"validate input with no type attribute, defaulting to text\", function() {\n\tfunction errors(expected, message) {\n\t\tequal(expected, v.size(), message );\n\t}\n\tvar v = $(\"#testForm12\").validate();\n\tvar e = $(\"#testForm12text\");\n\terrors(0);\n\te.valid();\n\terrors(1);\n\te.val('test');\n\te.trigger('keyup');\n\terrors(0);\n});\n\ntest(\"ignore hidden elements\", function(){\n    var form = $('#userForm');\n    var validate = form.validate({\n        rules:{\n            \"username\": \"required\"\n        }\n    });\n    form.get(0).reset();\n    ok(! validate.form(), \"form should be initially invalid\");\n    $('#userForm [name=username]').hide();\n    ok(validate.form(), \"hidden elements should be ignored by default\");\n});\n\ntest(\"ignore hidden elements at start\", function(){\n    var form = $('#userForm');\n    var validate = form.validate({\n        rules:{\n            \"username\": \"required\"\n        }\n    });\n    form.get(0).reset();\n    $('#userForm [name=username]').hide();\n    ok(validate.form(), \"hidden elements should be ignored by default\");\n    $('#userForm [name=username]').show();\n    ok(! validate.form(), \"form should be invalid when required element is visible\");\n});\n\ntest(\"Specify error messages through data attributes\", function() {\n\tvar form = $('#dataMessages');\n\tvar name = $('#dataMessagesName');\n\tvar v = form.validate();\n\n\tform.get(0).reset();\n\tname.valid();\n\n\tvar label = $('#dataMessages label');\n\tequal( label.text(), \"You must enter a value here\", \"Correct error label\" );\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/.gitignore",
    "content": ".DS_Store"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/LICENSE.txt",
    "content": "            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                    Version 2, December 2004\n\n Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>\n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. You just DO WHAT THE FUCK YOU WANT TO.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/css/multi-select.css",
    "content": ".ms-container{\n  background: transparent url('../img/switch.png') no-repeat 170px 80px;\n}\n\n.ms-container:after{\n  content: \".\"; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden;\n}\n\n.ms-container .ms-selectable, .ms-container .ms-selection{\n\n  background: #fff;\n  color: #555555;\n  float: left;\n}\n\n.ms-container .ms-list{\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;\n  -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n  transition: border linear 0.2s, box-shadow linear 0.2s;\n  border: 1px solid #ccc;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n}\n\n\n.ms-selected{\n  display:none;\n}\n.ms-container .ms-selectable{\n  margin-right: 40px;\n}\n\n.ms-container .ms-list.ms-focus{\n  border-color: rgba(82, 168, 236, 0.8);\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n  outline: 0;\n  outline: thin dotted \\9;\n}\n\n.ms-container ul{\n  margin: 0;\n  list-style-type: none;\n  padding: 0;\n}\n\n.ms-container .ms-optgroup-container{\n  width: 100%;\n}\n\n.ms-container ul.ms-list{\n  width: 160px;\n  height: 200px;\n  padding: 0;\n  overflow-y: auto;\n}\n\n.ms-container .ms-optgroup-label{\n  margin: 0;\n  padding: 5px 0px 0px 5px;\n  cursor: pointer;\n  color: #999;\n}\n\n.ms-container .ms-selectable li.ms-elem-selectable,\n.ms-container .ms-selection li.ms-elem-selection{\n  border-bottom: 1px #eee solid;\n  padding: 2px 10px;\n  color: #555;\n  font-size: 14px;\n}\n\n.ms-container .ms-selectable li.ms-hover,\n.ms-container .ms-selection li.ms-hover{\n  cursor: pointer;\n  color: #fff;\n  text-decoration: none;\n  background-color: #08c;\n}\n\n.ms-container .ms-selectable li.disabled,\n.ms-container .ms-selection li.disabled{\n  background-color: #eee;\n  color: #aaa;\n  cursor: text;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/multiselect/js/jquery.multi-select.js",
    "content": "/*\n* MultiSelect v0.9.5\n* Copyright (c) 2012 Louis Cuny\n*\n* This program is free software. It comes without any warranty, to\n* the extent permitted by applicable law. You can redistribute it\n* and/or modify it under the terms of the Do What The Fuck You Want\n* To Public License, Version 2, as published by Sam Hocevar. See\n* http://sam.zoy.org/wtfpl/COPYING for more details.\n*/\n\n!function ($) {\n\n  \"use strict\";\n\n\n /* MULTISELECT CLASS DEFINITION\n  * ====================== */\n\n  var MultiSelect = function (element, options) {\n    this.options = options;\n    this.$element = $(element);\n\n    var id = this.$element.attr('id');\n\n    this.$container = $('<div/>', { 'id': \"ms-\"+id, 'class': \"ms-container\" });\n    this.$selectableContainer = $('<div/>', { 'class': 'ms-selectable' });\n    this.$selectionContainer = $('<div/>', { 'class': 'ms-selection' });\n    this.$selectableUl = $('<ul/>', { 'class': \"ms-list\" });\n    this.$selectionUl = $('<ul/>', { 'class': \"ms-list\" });\n    this.scrollTo = 0;\n    this.sanitizeRegexp = new RegExp(\"\\\\W+\", 'gi');\n  };\n\n  MultiSelect.prototype = {\n    constructor: MultiSelect,\n\n    init: function(){\n      var that = this,\n          ms = this.$element;\n\n      if (ms.next('.ms-container').length === 0){\n        ms.css({ position: 'absolute', left: '-9999px' });\n        ms.attr('id', ms.attr('id') ? ms.attr('id') : 'ms-'+Math.ceil(Math.random()*1000));\n\n        var optgroupLabel = null,\n            optgroupId = null,\n            optgroupCpt = 0,\n            optgroupContainerTemplate = '<li class=\"ms-optgroup-container\"></li>',\n            optgroupUlTemplate = '<ul class=\"ms-optgroup\"></ul>',\n            optgroupLiTemplate = '<li class=\"ms-optgroup-label\"><span></span></li>';\n\n        ms.find('optgroup, option').each(function(){\n          if ($(this).is('optgroup')){\n            optgroupLabel = '<span>'+$(this).attr('label')+'</span>';\n            optgroupId = 'ms-'+ms.attr('id')+'-optgroup-'+optgroupCpt;\n\n            var optgroup = $(this),\n                optgroupSelectable = $(optgroupContainerTemplate),\n                optgroupSelection = $(optgroupContainerTemplate),\n                optgroupSelectionLi = $(optgroupLiTemplate),\n                optgroupSelectableLi = $(optgroupLiTemplate);\n\n            if (that.options.selectableOptgroup){\n              optgroupSelectableLi.on('click', function(){\n                var values = optgroup.children(':not(:selected)').map(function(){ return $(this).val(); }).get();\n                that.select(values);\n              });\n\n              optgroupSelectionLi.on('click', function(){\n                var values = optgroup.children(':selected').map(function(){ return $(this).val(); }).get();\n                that.deselect(values);\n              });\n            }\n\n            optgroupSelectableLi.html(optgroupLabel);\n\n            optgroupSelectable.attr('id', optgroupId+'-selectable')\n              .append($(optgroupUlTemplate)\n                .append(optgroupSelectableLi));\n\n            that.$selectableUl.append(optgroupSelectable);\n\n            optgroupSelectionLi.html(optgroupLabel);\n\n            optgroupSelection.attr('id', optgroupId+'-selection')\n              .append($(optgroupUlTemplate)\n                .append(optgroupSelectionLi));\n\n            that.$selectionUl.append(optgroupSelection);\n\n            optgroupCpt++;\n\n          } else {\n\n            var attributes = \"\";\n\n            for (var cpt = 0; cpt < this.attributes.length; cpt++){\n              var attr = this.attributes[cpt];\n\n              if(that.isDomNode(attr.name)){\n                attributes += attr.name+'=\"'+attr.value+'\" ';\n              }\n            }\n            var selectableLi = $('<li '+attributes+'><span>'+$(this).text()+'</span></li>'),\n                selectedLi = selectableLi.clone();\n\n            var value = $(this).val(),\n                msId = that.sanitize(value, that.sanitizeRegexp);\n\n            selectableLi\n              .data('ms-value', value)\n              .addClass('ms-elem-selectable')\n              .attr('id', msId+'-selectable');\n\n            selectedLi\n              .data('ms-value', value)\n              .addClass('ms-elem-selection')\n              .attr('id', msId+'-selection')\n              .hide();\n\n            that.$selectionUl.find('.ms-optgroup-label').hide();\n\n            if ($(this).prop('disabled') || ms.prop('disabled')){\n              if (this.selected) {\n                selectedLi.prop('disabled', true);\n                selectedLi.addClass(that.options.disabledClass);\n              } else {\n                selectableLi.prop('disabled', true);\n                selectableLi.addClass(that.options.disabledClass);\n              }\n            }\n\n            if (optgroupId){\n              that.$selectableUl.children('#'+optgroupId+'-selectable').find('ul').first().append(selectableLi);\n              that.$selectionUl.children('#'+optgroupId+'-selection').find('ul').first().append(selectedLi);\n            } else {\n              that.$selectableUl.append(selectableLi);\n              that.$selectionUl.append(selectedLi);\n            }\n          }\n        });\n\n        if (that.options.selectableHeader){\n          that.$selectableContainer.append(that.options.selectableHeader);\n        }\n        that.$selectableContainer.append(that.$selectableUl);\n        if (that.options.selectableFooter){\n          that.$selectableContainer.append(that.options.selectableFooter);\n        }\n\n        if (that.options.selectionHeader){\n          that.$selectionContainer.append(that.options.selectionHeader);\n        }\n        that.$selectionContainer.append(that.$selectionUl);\n        if (that.options.selectionFooter){\n          that.$selectionContainer.append(that.options.selectionFooter);\n        }\n\n        that.$container.append(that.$selectableContainer);\n        that.$container.append(that.$selectionContainer);\n        ms.after(that.$container);\n        that.$selectableUl.on('mouseenter', '.ms-elem-selectable', function(){\n          $('li', that.$container).removeClass('ms-hover');\n          $(this).addClass('ms-hover');\n        }).on('mouseleave', function(){\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        var action = that.options.dblClick ? 'dblclick' : 'click';\n\n        that.$selectableUl.on(action, '.ms-elem-selectable', function(){\n          that.select($(this).data('ms-value'));\n        });\n        that.$selectionUl.on(action, '.ms-elem-selection', function(){\n          that.deselect($(this).data('ms-value'));\n        });\n\n\n        that.$selectionUl.on('mouseenter', '.ms-elem-selection', function(){\n          $('li', that.$selectionUl).removeClass('ms-hover');\n          $(this).addClass('ms-hover');\n        }).on('mouseleave', function(){\n          $('li', that.$selectionUl).removeClass('ms-hover');\n        });\n\n        that.$selectableUl.on('focusin', function(){\n          $(this).addClass('ms-focus');\n          that.$selectionUl.focusout();\n        }).on('focusout', function(){\n          $(this).removeClass('ms-focus');\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        that.$selectionUl.on('focusin', function(){\n          $(this).addClass('ms-focus');\n        }).on('focusout', function(){\n          $(this).removeClass('ms-focus');\n          $('li', that.$container).removeClass('ms-hover');\n        });\n\n        ms.on('focusin', function(){\n          ms.focusout();\n          that.$selectableUl.focusin();\n        }).on('focusout', function(){\n          that.$selectableUl.removeClass('ms-focus');\n          that.$selectionUl.removeClass('ms-focus');\n        });\n\n        ms.onKeyDown = function(e, keyContainer){\n          var ul = that.$container.find('.'+keyContainer).find('.ms-list'),\n              lis = ul.find('li:visible:not(.ms-optgroup-label, .ms-optgroup-container)'),\n              lisNumber = lis.length,\n              liFocused = ul.find('li.ms-hover'),\n              liFocusedIndex = liFocused.length > 0 ? lis.index(liFocused) : -1,\n              ulHeight = ul.innerHeight(),\n              liHeight = lis.first().outerHeight(true),\n              numberOfLisDisplayed = Math.floor(ulHeight / liHeight),\n              ulPosition = null;\n\n          if (e.keyCode === 32){ // space\n            if (liFocused.length >0){\n              if (keyContainer === 'ms-selectable'){\n                that.select(liFocused.data('ms-value'));\n              } else {\n                that.deselect(liFocused.data('ms-value'));\n              }\n              lis.removeClass('ms-hover');\n              that.scrollTo = 0;\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 40){ // Down\n            if (lis.length > 0){\n              var nextLiIndex = liFocusedIndex+1,\n                  nextLi = (lisNumber !== nextLiIndex) ? lis.eq(nextLiIndex) : lis.first(),\n                  nextLiPosition = nextLi.position().top;\n\n              ulPosition = ul.position().top;\n              lis.removeClass('ms-hover');\n              nextLi.addClass('ms-hover');\n\n              if (lisNumber === nextLiIndex){\n                that.scrollTo = 0;\n              } else if (nextLiPosition >= (ulPosition + (numberOfLisDisplayed * liHeight))){\n                that.scrollTo += liHeight;\n              }\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 38){ // Up\n            if (lis.length > 0){\n              var prevLiIndex = Math.max(liFocusedIndex-1, -1),\n                  prevLi = lis.eq(prevLiIndex),\n                  prevLiPosition = prevLi.position().top;\n\n              ulPosition = ul.position().top;\n              lis.removeClass('ms-hover');\n              prevLi.addClass('ms-hover');\n              if (prevLiPosition <= ulPosition){\n                that.scrollTo -= liHeight;\n              } else if (prevLiIndex < 0){\n                that.scrollTo = (lisNumber - numberOfLisDisplayed) * liHeight;\n              }\n              ul.scrollTop(that.scrollTo);\n            }\n          } else if (e.keyCode === 37 || e.keyCode === 39){\n            if (that.$selectableUl.hasClass('ms-focus')){\n              that.$selectableUl.focusout();\n              that.$selectionUl.focusin();\n            } else {\n              that.$selectableUl.focusin();\n              that.$selectionUl.focusout();\n            }\n          }\n        };\n\n        ms.on('keydown', function(e){\n          if (ms.is(':focus')){\n            var keyContainer = that.$selectableUl.hasClass('ms-focus') ? 'ms-selectable' : 'ms-selection';\n            ms.onKeyDown(e, keyContainer);\n          }\n        });\n      }\n\n      var selectedValues = ms.find('option:selected').map(function(){ return $(this).val(); }).get();\n      that.select(selectedValues, 'init');\n\n      if (typeof that.options.afterInit === 'function') {\n        that.options.afterInit.call(this, this.$container);\n      }\n    },\n\n    'refresh' : function() {\n      this.destroy();\n      this.$element.multiSelect(this.options);\n    },\n\n    'destroy' : function(){\n      $(\"#ms-\"+this.$element.attr(\"id\")).remove();\n      this.$element.removeData('multiselect');\n    },\n\n    'select' : function(value, method){\n      if (typeof value === 'string'){ value = [value]; }\n\n      var that = this,\n          ms = this.$element,\n          msIds = $.map(value, function(val){ return(that.sanitize(val, that.sanitizeRegexp)); }),\n          selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'),\n          selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection'),\n          options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });\n\n      if (selectables.length > 0){\n        selectables.addClass('ms-selected').hide();\n        selections.addClass('ms-selected').show();\n        options.prop('selected', true);\n\n        var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');\n        if (selectableOptgroups.length > 0){\n          selectableOptgroups.each(function(){\n            var selectablesLi = $(this).find('.ms-elem-selectable');\n            if (selectablesLi.length === selectablesLi.filter('.ms-selected').length){\n              $(this).find('.ms-optgroup-label').hide();\n            }\n          });\n\n          var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');\n          selectionOptgroups.each(function(){\n            var selectionsLi = $(this).find('.ms-elem-selection');\n            if (selectionsLi.filter('.ms-selected').length > 0){\n              $(this).find('.ms-optgroup-label').show();\n            }\n          });\n        }\n        if (method !== 'init'){\n          that.$selectionUl.focusout();\n          that.$selectableUl.focusin();\n          ms.trigger('change');\n          if (typeof that.options.afterSelect === 'function') {\n            that.options.afterSelect.call(this, value);\n          }\n        }\n      }\n    },\n\n    'deselect' : function(value){\n      if (typeof value === 'string'){ value = [value]; }\n\n      var that = this,\n          ms = this.$element,\n          msIds = $.map(value, function(val){ return(that.sanitize(val, that.sanitizeRegexp)); }),\n          selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'),\n          selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected'),\n          options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); });\n\n      if (selections.length > 0){\n        selectables.removeClass('ms-selected').show();\n        selections.removeClass('ms-selected').hide();\n        options.prop('selected', false);\n\n        var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container');\n        if (selectableOptgroups.length > 0){\n          selectableOptgroups.each(function(){\n            var selectablesLi = $(this).find('.ms-elem-selectable');\n            if (selectablesLi.filter(':not(.ms-selected)').length > 0){\n              $(this).find('.ms-optgroup-label').show();\n            }\n          });\n\n          var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container');\n          selectionOptgroups.each(function(){\n            var selectionsLi = $(this).find('.ms-elem-selection');\n            if (selectionsLi.filter('.ms-selected').length === 0){\n              $(this).find('.ms-optgroup-label').hide();\n            }\n          });\n        }\n        this.$selectableUl.focusout();\n        this.$selectionUl.focusin();\n        ms.trigger('change');\n        if (typeof that.options.afterDeselect === 'function') {\n          that.options.afterDeselect.call(this, value);\n        }\n      }\n    },\n\n    'select_all' : function(){\n      var ms = this.$element,\n          values = ms.val();\n\n      ms.find('option').prop('selected', true);\n      this.$selectableUl.find('.ms-elem-selectable').addClass('ms-selected').hide();\n      this.$selectionUl.find('.ms-optgroup-label').show();\n      this.$selectableUl.find('.ms-optgroup-label').hide();\n      this.$selectionUl.find('.ms-elem-selection').addClass('ms-selected').show();\n      this.$selectionUl.focusin();\n      this.$selectableUl.focusout();\n      ms.trigger('change');\n      if (typeof this.options.afterSelect === 'function') {\n        var selectedValues = $.grep(ms.val(), function(item){\n          return $.inArray(item, values) < 0;\n        });\n        this.options.afterSelect.call(this, selectedValues);\n      }\n    },\n\n    'deselect_all' : function(){\n      var ms = this.$element,\n          values = ms.val();\n\n      ms.find('option').prop('selected', false);\n      this.$selectableUl.find('.ms-elem-selectable').removeClass('ms-selected').show();\n      this.$selectionUl.find('.ms-optgroup-label').hide();\n      this.$selectableUl.find('.ms-optgroup-label').show();\n      this.$selectionUl.find('.ms-elem-selection').removeClass('ms-selected').hide();\n      this.$selectableUl.focusin();\n      this.$selectionUl.focusout();\n      ms.trigger('change');\n      if (typeof this.options.afterDeselect === 'function') {\n        this.options.afterDeselect.call(this, values);\n      }\n    },\n\n    isDomNode: function (attr){\n      return (\n        attr &&\n        typeof attr === \"object\" &&\n        typeof attr.nodeType === \"number\" &&\n        typeof attr.nodeName === \"string\"\n      );\n    },\n\n    sanitize: function(value, reg){\n      return(value.replace(reg, '_'));\n    }\n  };\n\n  /* MULTISELECT PLUGIN DEFINITION\n   * ======================= */\n\n  $.fn.multiSelect = function () {\n    var option = arguments[0],\n        args = arguments;\n\n    return this.each(function () {\n      var $this = $(this),\n          data = $this.data('multiselect'),\n          options = $.extend({}, $.fn.multiSelect.defaults, $this.data(), typeof option === 'object' && option);\n\n      if (!data){ $this.data('multiselect', (data = new MultiSelect(this, options))); }\n\n      if (typeof option === 'string'){\n        data[option](args[1]);\n      } else {\n        data.init();\n      }\n    });\n  };\n\n  $.fn.multiSelect.defaults = {\n    selectableOptgroup: false,\n    disabledClass : 'disabled',\n    dblClick : false\n  };\n\n  $.fn.multiSelect.Constructor = MultiSelect;\n\n}(window.jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/README.textile",
    "content": "h1. Uniform\n\nSexy form elements with jQuery\n\nVersion 1.7.5\n\nRequires jQuery 1.4 or newer. \n\nLicensed under:\nMIT License - http://www.opensource.org/licenses/mit-license.php\n\nh2. Installation\n\nInstallation of Uniform is quite simple. First, make sure you have jQuery 1.4+ installed. Then you’ll want to link to the jquery.uniform.js file and uniform.default.css in the head area of your page:\n\nbc. <script src=\"jquery.uniform.js\" type=\"text/javascript\"></script>\n<link rel=\"stylesheet\" href=\"uniform.default.css\" type=\"text/css\" media=\"screen\" charset=\"utf-8\" />\n\nh2. Basic usage\n\nUsing Uniform can be quite easy as well. Simply call:\n\n$(\"select\").uniform();\n\nTo “uniform” all possible form elements, just do something like this:\n\n$(\"select, input[type=checkbox], input[type=radio], input[type=file], input[type=submit], a.button, button\").uniform();\n\nA complete tag in the HEAD section of your site can therefore look like this:\n\nbc. <script type='text/javascript'>\n  $(function(){\n    $(\"select, input:checkbox, input:radio, input:file\").uniform();\n  });\n</script>\n\nRemember that it is essential to first follow the steps in the Installation section here above.\n\nh2. Extra parameters\n\nYou can pass in extra parameters to control certain aspects of Uniform. To pass in parameters, use syntax like this:\n\nbc. $(\"select\").uniform({\n  param1: value,\n  param2: value,\n  param3: value\n});\n\nh3. _NEW!_ autoHide(boolean)\n\n*Default:* true\nIf this option is set to true, Uniform will hide the new elements if the existing elements are currently hidden using display: none;\n\n*REMEMBER*: If you want to show a select or checkbox you'll need to show the new Uniform div instead of the child element.\n\nh3. selectClass (string)\n\n*Default:* “selector”\nSets the class given to the wrapper div for select elements.\n\n@$(\"select\").uniform({selectClass: 'mySelectClass'});@\n\nh3. radioClass (string)\n\n*Default:* “radio”\nSets the class given to the wrapper div for radio elements.\n\n@$(\":radio\").uniform({radioClass: 'myRadioClass'});@\n\nh3. checkboxClass (string)\n\n*Default:* “checker”\nSets the class given to the wrapper div for checkbox elements.\n\n@$(\":checkbox\").uniform({checkboxClass: 'myCheckClass'});@\n\nh3. fileClass (string)\n\n*Default:* “uploader”\nSets the class given to the wrapper div for file upload elements.\n\n@$(\":file\").uniform({fileClass: 'myFileClass'});@\n\nh3. filenameClass (string)\n\n*Default:* “filename”\nSets the class given to div inside a file upload container that spits out the filename.\n\n@$(\":file\").uniform({filenameClass: 'myFilenameClass'});@\n\nh3. fileBtnClass (string)\n\n*Default:* “action”\nSets the class given to div inside a file upload container that acts as the “Choose file” button.\n\n@$(\":file\").uniform({fileBtnClass: 'myFileBtnClass'});@\n\nh3. fileDefaultText (string)\n\n*Default:* “No file selected”\nSets the text written in the filename div of a file upload input when there is no file selected.\n\n@$(\":file\").uniform({fileDefaultText: 'Select a file please'});@\n\nh3. fileBtnText(string)\n\n*Default:* “Choose File”\nSets the text written on the action button inside a file upload input.\n\n@$(\":file\").uniform({fileBtnText: 'Choose&hellip;'});@\n\nh3. buttonClass(string)\n\n*Default:* \"button\"\nSets the class given to a button that's been uniformed\n\n@$(\"input[type=button]\").uniform({buttonClass: 'myBtnClass'});@\n\nh3. checkedClass (string)\n\n*Default:* “checked”\nSets the class given to elements when they are checked (radios and checkboxes).\n\n@$(\":radio, :checkbox\").uniform({checkedClass: 'myCheckedClass'});@\n\nh3. focusClass (string)\n\n*Default:* “focus”\nSets the class given to elements when they are focused.\n\n@$(\"select\").uniform({focusClass: 'myFocusClass'});@\n\nh3. disabledClass (string)\n\n*Default:* “disabled”\nSets the class given to elements when they are disabled.\n\n@$(\"select\").uniform({disabledClass: 'myDisabledClass'});@\n\nh3. activeClass (string)\n\n*Default:* “active”\nSets the class given to elements when they are active (pressed).\n\n@$(\"select\").uniform({activeClass: 'myActiveClass'});@\n\nh3. hoverClass (string)\n\n*Default:* “hover”\nSets the class given to elements when they are currently hovered.\n\n@$(\"select\").uniform({hoverClass: 'myHoverClass'});@\n\nh3. useID (boolean)\n\n*Default:* true\nIf true, sets an ID on the container div of each form element. The ID is a prefixed version of the same ID of the form element.\n\n@$(\"select\").uniform({useID: false});@\n\nh3. idPrefix (string)\n\n*Default:* “uniform”\nIf useID is set to true, this string is prefixed to element ID’s and attached to the container div of each uniformed element. If you have a checkbox with the ID of “remember-me” the container div would have the ID “uniform-remember-me”.\n\n@$(\"select\").uniform({idPrefix: 'container'});@\n\nh3. resetSelector (boolean/string)\n\n*Default:* false\nThis parameter allows you to use a jQuery-style selector to point to a “reset” button in your form if you have one. Use false if you have no “reset” button, or a selector string that points to the reset button if you have one.\n\n@$(\"select\").uniform({resetSelector: 'input[type=\"reset\"]'});@\n\nh2. Additional functions\n\nIn addition to the parameters, there are a couple of other ways you can interact with Uniform.\n\nh3. $.uniform.update([elem/selector string]);\n\nIf you need to change values on the form dynamically you must tell Uniform to update that element’s style. Fortunately, it’s very simple. Just call this function, and Uniform will do the rest.\n\n@$.uniform.update(\"#myUpdatedCheckbox\");@\n\nIf you are lazy, or just don’t specifically know which element to update, you can just leave out the parameter (see below) and Uniform will update all Uniformed elements on the page:\n\n@$.uniform.update();@\n\nh3. $.uniform.restore([elem/selector string]);\n\nIf you want to \"un-uniform\" something, simply call this function. It will remove the inline styles, extra dom elements, and event handlers, effectively restoring the element to it's previous state.\n\n@$.uniform.restore(\"select\");@\n\nh3. $.uniform.elements[]\n\nYou can get an array of all the elements that have been Uniformed at any time using this public variable. Wouldn’t advise changing the contents though!\n\n@var uniforms = $.uniform.elements;@\n\nh2. Customizing CSS\n\nTo edit the CSS of Uniform it is highly recommended to not edit the theme files, but to override them using CSS. Make sure your CSS file comes after the uniform theme css file in the HEAD section.\n\nIt's common to want to resize the selects or other elements. The best way is to set the width property on the div element, span element and the form element itself. Look through the theme CSS in the _presentation_ section to see where the width property is currently set.\n\nh2. Tips & tricks\n\nUniform is supposed to be pretty simple, but there are a few things that can be tricky. Here are some tips that may make your experience simpler:\n\nRemember to change the CSS classes in the theme if you change the parameters for elements’ classes. This can be tedious work, but if you don’t do it, it’s not going to look correct. Find and Replace is your friend.\n\nUniform cannot automatically sniff out dynamic value changes. If you make changes to elements in Javascript or using a Reset button of some kind remember to call $.uniform.update(); to sync the changes with Uniform.\n\nUniform is disabled in IE6. It’s not possible to fix due to the way IE6 handles form elements. If you care about IE6 users, give it a quick look to make sure your “naked” form elements look alright in there.\n\nYou’re on your own for styling text inputs and more. Fortunately, things that are not handled by Uniform are pretty easy to skin. :)\n\nIf you have ideas, or bugs, please post them in GitHub. We rely on our users for ideas for improvements and bug reports. Otherwise Uniform will stay static."
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/css/uniform.default.css",
    "content": "/*\n\nUniform Theme: Uniform Default\nVersion: 1.6\nBy: Josh Pyles\nLicense: MIT License\n---\nFor use with the Uniform plugin:\nhttp://pixelmatrixdesign.com/uniform/\n---\nGenerated by Uniform Theme Generator:\nhttp://pixelmatrixdesign.com/uniform/themer.html\n\n*/\n\n/* Global Declaration */\n\ndiv.selector, \ndiv.selector span, \ndiv.checker span,\ndiv.radio span, \ndiv.uploader, \ndiv.uploader span.action,\ndiv.button,\ndiv.button span {\n  background-image: url(../images/sprite.png);\n  background-repeat: no-repeat;\n  -webkit-font-smoothing: antialiased;\n}\n\n.selector, \n.radio, \n.checker, \n.uploader,\n.button, \n.selector *, \n.radio *, \n.checker *, \n.uploader *,\n.button *{\n  margin: 0;\n  padding: 0;\n}\n\n/* INPUT & TEXTAREA */\n\ninput.text,\ninput.email, \ninput.password,\ntextarea.uniform {\n  font-size: 12px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-weight: normal;\n  padding: 3px;\n  color: #777;\n  background: url('../images/bg-input-focus.png') repeat-x 0px 0px;\n  background: url('../images/bg-input.png') repeat-x 0px 0px;\n  border-top: solid 1px #aaa;\n  border-left: solid 1px #aaa;\n  border-bottom: solid 1px #ccc;\n  border-right: solid 1px #ccc;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  border-radius: 3px;\n  outline: 0;\n}\n\ninput.text:focus,\ninput.email:focus,\ninput.password:focus,\ntextarea.uniform:focus {\n  -webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  -moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  box-shadow: 0px 0px 4px rgba(0,0,0,0.3);\n  border-color: #999;\n  background: url('../images/bg-input-focus.png') repeat-x 0px 0px;\n}\n\n/* SPRITES */\n\n/* Select */\n\ndiv.selector {\n  background-position: -483px -130px;\n  line-height: 26px;\n  height: 26px;\n}\n\ndiv.selector span {\n  background-position: right 0px;\n  height: 26px;\n  line-height: 26px;\n}\n\ndiv.selector select {\n  /* change these to adjust positioning of select element */\n  top: 0px;\n  left: 0px;\n}\n\ndiv.selector:active, \ndiv.selector.active {\n  background-position: -483px -156px;\n}\n\ndiv.selector:active span, \ndiv.selector.active span {\n  background-position: right -26px;\n}\n\ndiv.selector.focus, div.selector.hover, div.selector:hover {\n  background-position: -483px -182px;\n}\n\ndiv.selector.focus span, div.selector.hover span, div.selector:hover span {\n  background-position: right -52px;\n}\n\ndiv.selector.focus:active,\ndiv.selector.focus.active,\ndiv.selector:hover:active,\ndiv.selector.active:hover {\n  background-position: -483px -208px;\n}\n\ndiv.selector.focus:active span,\ndiv.selector:hover:active span,\ndiv.selector.active:hover span,\ndiv.selector.focus.active span {\n  background-position: right -78px;\n}\n\ndiv.selector.disabled {\n  background-position: -483px -234px;\n}\n\ndiv.selector.disabled span {\n  background-position: right -104px;\n}\n\n/* Checkbox */\n\ndiv.checker {\n  width: 19px;\n  height: 19px;\n}\n\ndiv.checker input {\n  width: 19px;\n  height: 19px;\n}\n\ndiv.checker span {\n  background-position: 0px -260px;\n  height: 19px;\n  width: 19px;\n}\n\ndiv.checker:active span, \ndiv.checker.active span {\n  background-position: -19px -260px;\n}\n\ndiv.checker.focus span,\ndiv.checker:hover span {\n  background-position: -38px -260px;\n}\n\ndiv.checker.focus:active span,\ndiv.checker:active:hover span,\ndiv.checker.active:hover span,\ndiv.checker.focus.active span {\n  background-position: -57px -260px;\n}\n\ndiv.checker span.checked {\n  background-position: -76px -260px;\n}\n\ndiv.checker:active span.checked, \ndiv.checker.active span.checked {\n  background-position: -95px -260px;\n}\n\ndiv.checker.focus span.checked,\ndiv.checker:hover span.checked {\n  background-position: -114px -260px;\n}\n\ndiv.checker.focus:active span.checked,\ndiv.checker:hover:active span.checked,\ndiv.checker.active:hover span.checked,\ndiv.checker.active.focus span.checked {\n  background-position: -133px -260px;\n}\n\ndiv.checker.disabled span,\ndiv.checker.disabled:active span,\ndiv.checker.disabled.active span {\n  background-position: -152px -260px;\n}\n\ndiv.checker.disabled span.checked,\ndiv.checker.disabled:active span.checked,\ndiv.checker.disabled.active span.checked {\n  background-position: -171px -260px;\n}\n\n/* Radio */\n\ndiv.radio {\n  width: 18px;\n  height: 18px;\n}\n\ndiv.radio input {\n  width: 18px;\n  height: 18px;\n}\n\ndiv.radio span {\n  height: 18px;\n  width: 18px;\n  background-position: 0px -279px;\n}\n\ndiv.radio:active span, \ndiv.radio.active span {\n  background-position: -18px -279px;\n}\n\ndiv.radio.focus span, \ndiv.radio:hover span {\n  background-position: -36px -279px;\n}\n\ndiv.radio.focus:active span,\ndiv.radio:active:hover span,\ndiv.radio.active:hover span,\ndiv.radio.active.focus span {\n  background-position: -54px -279px;\n}\n\ndiv.radio span.checked {\n  background-position: -72px -279px;\n}\n\ndiv.radio:active span.checked,\ndiv.radio.active span.checked {\n  background-position: -90px -279px;\n}\n\ndiv.radio.focus span.checked, div.radio:hover span.checked {\n  background-position: -108px -279px;\n}\n\ndiv.radio.focus:active span.checked, \ndiv.radio:hover:active span.checked,\ndiv.radio.focus.active span.checked,\ndiv.radio.active:hover span.checked {\n  background-position: -126px -279px;\n}\n\ndiv.radio.disabled span,\ndiv.radio.disabled:active span,\ndiv.radio.disabled.active span {\n  background-position: -144px -279px;\n}\n\ndiv.radio.disabled span.checked,\ndiv.radio.disabled:active span.checked,\ndiv.radio.disabled.active span.checked {\n  background-position: -162px -279px;\n}\n\n/* Uploader */\n\ndiv.uploader {\n  background-position: 0px -297px;\n  height: 28px;\n}\n\ndiv.uploader span.action {\n  background-position: right -409px;\n  height: 24px;\n  line-height: 24px;\n}\n\ndiv.uploader span.filename {\n  height: 24px;\n  /* change this line to adjust positioning of filename area */\n  margin: 2px 0px 2px 2px;\n  line-height: 24px;\n}\n\ndiv.uploader.focus,\ndiv.uploader.hover,\ndiv.uploader:hover {\n  background-position: 0px -353px;\n}\n\ndiv.uploader.focus span.action,\ndiv.uploader.hover span.action,\ndiv.uploader:hover span.action {\n  background-position: right -437px;\n}\n\ndiv.uploader.active span.action,\ndiv.uploader:active span.action {\n  background-position: right -465px;\n}\n\ndiv.uploader.focus.active span.action,\ndiv.uploader:focus.active span.action,\ndiv.uploader.focus:active span.action,\ndiv.uploader:focus:active span.action {\n  background-position: right -493px;\n}\n\ndiv.uploader.disabled {\n  background-position: 0px -325px;\n}\n\ndiv.uploader.disabled span.action {\n  background-position: right -381px;\n}\n\ndiv.button {\n  background-position: 0px -523px;\n}\n\ndiv.button span {\n  background-position: right -643px;\n}\n\ndiv.button.focus,\ndiv.button:focus,\ndiv.button:hover,\ndiv.button.hover {\n  background-position: 0px -553px;\n}\n\ndiv.button.focus span,\ndiv.button:focus span,\ndiv.button:hover span,\ndiv.button.hover span {\n  background-position: right -673px; \n}\n\ndiv.button.active,\ndiv.button:active {\n  background-position: 0px -583px;\n}\n\ndiv.button.active span,\ndiv.button:active span {\n  background-position: right -703px;\n  color: #555;\n}\n\ndiv.button.disabled,\ndiv.button:disabled {\n  background-position: 0px -613px;\n}\n\ndiv.button.disabled span,\ndiv.button:disabled span {\n  background-position: right -733px;\n  color: #bbb;\n  cursor: default;\n}\n\n/* PRESENTATION */\n\n/* Button */\n\ndiv.button {\n  height: 30px;\n}\n\ndiv.button span {\n  margin-left: 13px;\n  height: 22px;\n  padding-top: 8px;\n  font-weight: bold;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  padding-left: 2px;\n  padding-right: 15px;\n}\n\n/* Select */\ndiv.selector {\n  width: 190px;\n  font-size: 12px;\n}\n\ndiv.selector select {\n  min-width: 190px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  border: solid 1px #fff;\n}\n\ndiv.selector span {\n  padding: 0px 25px 0px 2px;\n  cursor: pointer;\n}\n\ndiv.selector span {\n  color: #666;\n  width: 158px;\n  text-shadow: 0 1px 0 #fff;\n}\n\ndiv.selector.disabled span {\n  color: #bbb;\n}\n\n/* Checker */\ndiv.checker {\n  margin-right: 5px;\n}\n\n/* Radio */\ndiv.radio {\n  margin-right: 3px;\n}\n\n/* Uploader */\ndiv.uploader {\n  width: 190px;\n  cursor: pointer;\n}\n\ndiv.uploader span.action {\n  width: 85px;\n  text-align: center;\n  text-shadow: #fff 0px 1px 0px;\n  background-color: #fff;\n  font-size: 11px;\n  font-weight: bold;\n}\n\ndiv.uploader span.filename {\n  color: #777;\n  width: 82px;\n  border-right: solid 1px #bbb;\n  font-size: 11px;\n}\n\ndiv.uploader input {\n  width: 190px;\n}\n\ndiv.uploader.disabled span.action {\n  color: #aaa;\n}\n\ndiv.uploader.disabled span.filename {\n  border-color: #ddd;\n  color: #aaa;\n}\n/*\n\nCORE FUNCTIONALITY \n\nNot advised to edit stuff below this line\n-----------------------------------------------------\n*/\n\n.selector, \n.checker, \n.button, \n.radio, \n.uploader {\n  display: -moz-inline-box;\n  display: inline-block;\n  vertical-align: middle;\n  zoom: 1;\n  *display: inline;\n}\n\n.selector select:focus, .radio input:focus, .checker input:focus, .uploader input:focus {\n  outline: 0;\n}\n\n/* Button */\n\ndiv.button a,\ndiv.button button,\ndiv.button input {\n  position: absolute;\n}\n\ndiv.button {\n  cursor: pointer;\n  position: relative;\n}\n\ndiv.button span {\n  display: -moz-inline-box;\n  display: inline-block;\n  line-height: 1;\n  text-align: center;\n}\n\n/* Select */\n\ndiv.selector {\n  position: relative;\n  padding-left: 10px;\n  overflow: hidden;\n}\n\ndiv.selector span {\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\ndiv.selector select {\n  position: absolute;\n  opacity: 0;\n  filter: alpha(opacity:0);\n  height: 25px;\n  border: none;\n  background: none;\n}\n\n/* Checker */\n\ndiv.checker {\n  position: relative;\n}\n\ndiv.checker span {\n  display: -moz-inline-box;\n  display: inline-block;\n  text-align: center;\n}\n\ndiv.checker input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  display: inline-block;\n  background: none;\n}\n\n/* Radio */\n\ndiv.radio {\n  position: relative;\n}\n\ndiv.radio span {\n  display: -moz-inline-box;\n  display: inline-block;\n  text-align: center;\n}\n\ndiv.radio input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  text-align: center;\n  display: inline-block;\n  background: none;\n}\n\n/* Uploader */\n\ndiv.uploader {\n  position: relative;\n  overflow: hidden;\n  cursor: default;\n}\n\ndiv.uploader span.action {\n  float: left;\n  display: inline;\n  padding: 2px 0px;\n  overflow: hidden;\n  cursor: pointer;\n}\n\ndiv.uploader span.filename {\n  padding: 0px 10px;\n  float: left;\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  cursor: default;\n}\n\ndiv.uploader input {\n  opacity: 0;\n  filter: alpha(opacity:0);\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  float: right;\n  height: 25px;\n  border: none;\n  cursor: default;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/demo/demo.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n    <script src=\"../jquery.uniform.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n    <script type=\"text/javascript\" charset=\"utf-8\">\n      $(function(){\n        $(\"input, textarea, select, button\").uniform();\n      });\n    </script>\n    <link rel=\"stylesheet\" href=\"../css/uniform.default.css\" type=\"text/css\" media=\"screen\">\n    <style type=\"text/css\" media=\"screen\">\n      body {\n        font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        color: #666;\n        padding: 40px;\n      }\n      h1 {\n        margin-top: 0;\n      }\n      ul {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n      }\n      li {\n        margin-bottom: 20px;\n        clear: both;\n      }\n      label {\n        font-size: 10px;\n        font-weight: bold;\n        text-transform: uppercase;\n        display: block;\n        margin-bottom: 3px;\n        clear: both;\n      }\n    </style>\n  </head>\n  <body>\n    <h1>Uniform Demo</h1>\n    <form>\n      <ul>\n        <li><label>Message:</label><textarea cols=\"40\" rows=\"5\"></textarea></li>\n        <li><label>Your Name:</label><input type=\"text\" size=\"40\"/></li>\n        <li><label>Your Email:</label><input type=\"email\" size=\"40\"/></li>\n        <li>\n          <label>I found your site:</label>\n          <select>\n            <option>Through Google</option>\n            <option>Through Twitter</option>\n            <option>Other&hellip;</option>\n            <option>&lt;Hi&gt;</option>\n          </select>\n        </li>\n        <li>\n          <label><input type=\"radio\" name=\"radio\" /> Saying hi</label>\n          <label><input type=\"radio\" name=\"radio\" /> Sending feedback</label>\n        </li>\n        <li>\n          <label><input type=\"checkbox\" /> Please contact me back</label>\n        </li>\n        <li>\n          <label>Upload a file:</label>\n          <input type=\"file\" />\n        </li>\n        <li>\n          <input type=\"submit\" />\n          <input type=\"reset\" />\n        </li>\n      </ul>\n    </form>\n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/pixelmatrix-uniform/jquery.uniform.js",
    "content": "/*\n\nUniform v1.7.5\nCopyright © 2009 Josh Pyles / Pixelmatrix Design LLC\nhttp://pixelmatrixdesign.com\n\nRequires jQuery 1.4 or newer\n\nMuch thanks to Thomas Reynolds and Buck Wilson for their help and advice on this\n\nDisabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>\nand his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>\n\nAlso, thanks to David Kaneda and Eugene Bond for their contributions to the plugin\n\nLicense:\nMIT License - http://www.opensource.org/licenses/mit-license.php\n\nEnjoy!\n\n*/\n\n(function($) {\n  $.uniform = {\n    options: {\n      selectClass:   'selector',\n      radioClass: 'radio',\n      checkboxClass: 'checker',\n      fileClass: 'uploader',\n      filenameClass: 'filename',\n      fileBtnClass: 'action',\n      fileDefaultText: 'No file selected',\n      fileBtnText: 'Choose File',\n      checkedClass: 'checked',\n      focusClass: 'focus',\n      disabledClass: 'disabled',\n      buttonClass: 'button',\n      activeClass: 'active',\n      hoverClass: 'hover',\n      useID: true,\n      idPrefix: 'uniform',\n      resetSelector: false,\n      autoHide: true\n    },\n    elements: []\n  };\n\n  if($.browser.msie && $.browser.version < 7){\n    $.support.selectOpacity = false;\n  }else{\n    $.support.selectOpacity = true;\n  }\n\n  $.fn.uniform = function(options) {\n\n    options = $.extend($.uniform.options, options);\n\n    var el = this;\n    //code for specifying a reset button\n    if(options.resetSelector != false){\n      $(options.resetSelector).mouseup(function(){\n        function resetThis(){\n          $.uniform.update(el);\n        }\n        setTimeout(resetThis, 10);\n      });\n    }\n    \n    function doInput(elem){\n      $el = $(elem);\n      $el.addClass($el.attr(\"type\"));\n      storeElement(elem);\n    }\n    \n    function doTextarea(elem){\n      $(elem).addClass(\"uniform\");\n      storeElement(elem);\n    }\n    \n    function doButton(elem){\n      var $el = $(elem);\n      \n      var divTag = $(\"<div>\"),\n          spanTag = $(\"<span>\");\n      \n      divTag.addClass(options.buttonClass);\n      \n      if(options.useID && $el.attr(\"id\") != \"\") divTag.attr(\"id\", options.idPrefix+\"-\"+$el.attr(\"id\"));\n      \n      var btnText;\n      \n      if($el.is(\"a\") || $el.is(\"button\")){\n        btnText = $el.text();\n      }else if($el.is(\":submit\") || $el.is(\":reset\") || $el.is(\"input[type=button]\")){\n        btnText = $el.attr(\"value\");\n      }\n      \n      btnText = btnText == \"\" ? $el.is(\":reset\") ? \"Reset\" : \"Submit\" : btnText;\n      \n      spanTag.html(btnText);\n      \n      $el.css(\"opacity\", 0);\n      $el.wrap(divTag);\n      $el.wrap(spanTag);\n      \n      //redefine variables\n      divTag = $el.closest(\"div\");\n      spanTag = $el.closest(\"span\");\n      \n      if($el.is(\":disabled\")) divTag.addClass(options.disabledClass);\n      \n      divTag.bind({\n        \"mouseenter.uniform\": function(){\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function(){\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"mousedown.uniform touchbegin.uniform\": function(){\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function(){\n          divTag.removeClass(options.activeClass);\n        },\n        \"click.uniform touchend.uniform\": function(e){\n          if($(e.target).is(\"span\") || $(e.target).is(\"div\")){    \n            if(elem[0].dispatchEvent){\n              var ev = document.createEvent('MouseEvents');\n              ev.initEvent( 'click', true, true );\n              elem[0].dispatchEvent(ev);\n            }else{\n              elem[0].click();\n            }\n          }\n        }\n      });\n      \n      elem.bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        }\n      });\n      \n      $.uniform.noSelect(divTag);\n      storeElement(elem);\n      \n    }\n\n    function doSelect(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.selectClass);\n\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n      \n      var selected = elem.find(\":selected:first\");\n      if(selected.length == 0){\n        selected = elem.find(\"option:first\");\n      }\n      spanTag.html(selected.html());\n      \n      elem.css('opacity', 0);\n      elem.wrap(divTag);\n      elem.before(spanTag);\n\n      //redefine variables\n      divTag = elem.parent(\"div\");\n      spanTag = elem.siblings(\"span\");\n\n      elem.bind({\n        \"change.uniform\": function() {\n          spanTag.text(elem.find(\":selected\").html());\n          divTag.removeClass(options.activeClass);\n        },\n        \"focus.uniform\": function() {\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function() {\n          divTag.removeClass(options.focusClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"mousedown.uniform touchbegin.uniform\": function() {\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        },\n        \"keyup.uniform\": function(){\n          spanTag.text(elem.find(\":selected\").html());\n        }\n      });\n      \n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n      $.uniform.noSelect(spanTag);\n      \n      storeElement(elem);\n\n    }\n\n    function doCheckbox(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n      \n      divTag.addClass(options.checkboxClass);\n\n      //assign the id of the element\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $(elem).wrap(divTag);\n      $(elem).wrap(spanTag);\n\n      //redefine variables\n      spanTag = elem.parent();\n      divTag = spanTag.parent();\n\n      //hide normal input and add focus classes\n      $(elem)\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          if(!$(elem).attr(\"checked\")){\n            //box was just unchecked, uncheck span\n            spanTag.removeClass(options.checkedClass);\n          }else{\n            //box was just checked, check span.\n            spanTag.addClass(options.checkedClass);\n          }\n        },\n        \"mousedown.uniform touchbegin.uniform\": function() {\n          divTag.addClass(options.activeClass);\n        },\n        \"mouseup.uniform touchend.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n      \n      //handle defaults\n      if($(elem).attr(\"checked\")){\n        //box is checked by default, check our box\n        spanTag.addClass(options.checkedClass);\n      }\n\n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n\n      storeElement(elem);\n    }\n\n    function doRadio(elem){\n      var $el = $(elem);\n      \n      var divTag = $('<div />'),\n          spanTag = $('<span />');\n          \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.radioClass);\n\n      if(options.useID && elem.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+elem.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $(elem).wrap(divTag);\n      $(elem).wrap(spanTag);\n\n      //redefine variables\n      spanTag = elem.parent();\n      divTag = spanTag.parent();\n\n      //hide normal input and add focus classes\n      $(elem)\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"click.uniform touchend.uniform\": function(){\n          if(!$(elem).attr(\"checked\")){\n            //box was just unchecked, uncheck span\n            spanTag.removeClass(options.checkedClass);\n          }else{\n            //box was just checked, check span\n            var classes = options.radioClass.split(\" \")[0];\n            $(\".\" + classes + \" span.\" + options.checkedClass + \":has([name='\" + $(elem).attr('name') + \"'])\").removeClass(options.checkedClass);\n            spanTag.addClass(options.checkedClass);\n          }\n        },\n        \"mousedown.uniform touchend.uniform\": function() {\n          if(!$(elem).is(\":disabled\")){\n            divTag.addClass(options.activeClass);\n          }\n        },\n        \"mouseup.uniform touchbegin.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform touchend.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n\n      //handle defaults\n      if($(elem).attr(\"checked\")){\n        //box is checked by default, check span\n        spanTag.addClass(options.checkedClass);\n      }\n      //handle disabled state\n      if($(elem).attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n\n      storeElement(elem);\n\n    }\n\n    function doFile(elem){\n      //sanitize input\n      var $el = $(elem);\n\n      var divTag = $('<div />'),\n          filenameTag = $('<span>'+options.fileDefaultText+'</span>'),\n          btnTag = $('<span>'+options.fileBtnText+'</span>');\n      \n      if(!$el.css(\"display\") == \"none\" && options.autoHide){\n        divTag.hide();\n      }\n\n      divTag.addClass(options.fileClass);\n      filenameTag.addClass(options.filenameClass);\n      btnTag.addClass(options.fileBtnClass);\n\n      if(options.useID && $el.attr(\"id\") != \"\"){\n        divTag.attr(\"id\", options.idPrefix+\"-\"+$el.attr(\"id\"));\n      }\n\n      //wrap with the proper elements\n      $el.wrap(divTag);\n      $el.after(btnTag);\n      $el.after(filenameTag);\n\n      //redefine variables\n      divTag = $el.closest(\"div\");\n      filenameTag = $el.siblings(\".\"+options.filenameClass);\n      btnTag = $el.siblings(\".\"+options.fileBtnClass);\n\n      //set the size\n      if(!$el.attr(\"size\")){\n        var divWidth = divTag.width();\n        //$el.css(\"width\", divWidth);\n        $el.attr(\"size\", divWidth/10);\n      }\n\n      //actions\n      var setFilename = function()\n      {\n        var filename = $el.val();\n        if (filename === '')\n        {\n          filename = options.fileDefaultText;\n        }\n        else\n        {\n          filename = filename.split(/[\\/\\\\]+/);\n          filename = filename[(filename.length-1)];\n        }\n        filenameTag.text(filename);\n      };\n\n      // Account for input saved across refreshes\n      setFilename();\n\n      $el\n      .css(\"opacity\", 0)\n      .bind({\n        \"focus.uniform\": function(){\n          divTag.addClass(options.focusClass);\n        },\n        \"blur.uniform\": function(){\n          divTag.removeClass(options.focusClass);\n        },\n        \"mousedown.uniform\": function() {\n          if(!$(elem).is(\":disabled\")){\n            divTag.addClass(options.activeClass);\n          }\n        },\n        \"mouseup.uniform\": function() {\n          divTag.removeClass(options.activeClass);\n        },\n        \"mouseenter.uniform\": function() {\n          divTag.addClass(options.hoverClass);\n        },\n        \"mouseleave.uniform\": function() {\n          divTag.removeClass(options.hoverClass);\n          divTag.removeClass(options.activeClass);\n        }\n      });\n\n      // IE7 doesn't fire onChange until blur or second fire.\n      if ($.browser.msie){\n        // IE considers browser chrome blocking I/O, so it\n        // suspends tiemouts until after the file has been selected.\n        $el.bind('click.uniform.ie7', function() {\n          setTimeout(setFilename, 0);\n        });\n      }else{\n        // All other browsers behave properly\n        $el.bind('change.uniform', setFilename);\n      }\n\n      //handle defaults\n      if($el.attr(\"disabled\")){\n        //box is checked by default, check our box\n        divTag.addClass(options.disabledClass);\n      }\n      \n      $.uniform.noSelect(filenameTag);\n      $.uniform.noSelect(btnTag);\n      \n      storeElement(elem);\n\n    }\n    \n    $.uniform.restore = function(elem){\n      if(elem == undefined){\n        elem = $($.uniform.elements);\n      }\n      \n      $(elem).each(function(){\n        if($(this).is(\":checkbox\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }else if($(this).is(\"select\")){\n          //remove sibling span\n          $(this).siblings(\"span\").remove();\n          //unwrap parent div\n          $(this).unwrap();\n        }else if($(this).is(\":radio\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }else if($(this).is(\":file\")){\n          //remove sibling spans\n          $(this).siblings(\"span\").remove();\n          //unwrap parent div\n          $(this).unwrap();\n        }else if($(this).is(\"button, :submit, :reset, a, input[type='button']\")){\n          //unwrap from span and div\n          $(this).unwrap().unwrap();\n        }\n        \n        //unbind events\n        $(this).unbind(\".uniform\");\n        \n        //reset inline style\n        $(this).css(\"opacity\", \"1\");\n        \n        //remove item from list of uniformed elements\n        var index = $.inArray($(elem), $.uniform.elements);\n        $.uniform.elements.splice(index, 1);\n      });\n    };\n\n    function storeElement(elem){\n      //store this element in our global array\n      elem = $(elem).get();\n      if(elem.length > 1){\n        $.each(elem, function(i, val){\n          $.uniform.elements.push(val);\n        });\n      }else{\n        $.uniform.elements.push(elem);\n      }\n    }\n    \n    //noSelect v1.0\n    $.uniform.noSelect = function(elem) {\n      function f() {\n       return false;\n      };\n      $(elem).each(function() {\n       this.onselectstart = this.ondragstart = f; // Webkit & IE\n       $(this)\n        .mousedown(f) // Webkit & Opera\n        .css({ MozUserSelect: 'none' }); // Firefox\n      });\n     };\n\n    $.uniform.update = function(elem){\n      if(elem == undefined){\n        elem = $($.uniform.elements);\n      }\n      //sanitize input\n      elem = $(elem);\n\n      elem.each(function(){\n        //do to each item in the selector\n        //function to reset all classes\n        var $e = $(this);\n\n        if($e.is(\"select\")){\n          //element is a select\n          var spanTag = $e.siblings(\"span\");\n          var divTag = $e.parent(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n\n          //reset current selected text\n          spanTag.html($e.find(\":selected\").html());\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n\n        }else if($e.is(\":checkbox\")){\n          //element is a checkbox\n          var spanTag = $e.closest(\"span\");\n          var divTag = $e.closest(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          spanTag.removeClass(options.checkedClass);\n\n          if($e.is(\":checked\")){\n            spanTag.addClass(options.checkedClass);\n          }\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n\n        }else if($e.is(\":radio\")){\n          //element is a radio\n          var spanTag = $e.closest(\"span\");\n          var divTag = $e.closest(\"div\");\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          spanTag.removeClass(options.checkedClass);\n\n          if($e.is(\":checked\")){\n            spanTag.addClass(options.checkedClass);\n          }\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n        }else if($e.is(\":file\")){\n          var divTag = $e.parent(\"div\");\n          var filenameTag = $e.siblings(options.filenameClass);\n          btnTag = $e.siblings(options.fileBtnClass);\n\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n\n          filenameTag.text($e.val());\n\n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n        }else if($e.is(\":submit\") || $e.is(\":reset\") || $e.is(\"button\") || $e.is(\"a\") || elem.is(\"input[type=button]\")){\n          var divTag = $e.closest(\"div\");\n          divTag.removeClass(options.hoverClass+\" \"+options.focusClass+\" \"+options.activeClass);\n          \n          if($e.is(\":disabled\")){\n            divTag.addClass(options.disabledClass);\n          }else{\n            divTag.removeClass(options.disabledClass);\n          }\n          \n        }\n        \n      });\n    };\n\n    return this.each(function() {\n      if($.support.selectOpacity){\n        var elem = $(this);\n\n        if(elem.is(\"select\")){\n          //element is a select\n          if(elem.attr(\"multiple\") != true){\n            //element is not a multi-select\n            if(elem.attr(\"size\") == undefined || elem.attr(\"size\") <= 1){\n              doSelect(elem);\n            }\n          }\n        }else if(elem.is(\":checkbox\")){\n          //element is a checkbox\n          doCheckbox(elem);\n        }else if(elem.is(\":radio\")){\n          //element is a radio\n          doRadio(elem);\n        }else if(elem.is(\":file\")){\n          //element is a file upload\n          doFile(elem);\n        }else if(elem.is(\":text, :password, input[type='email']\")){\n          doInput(elem);\n        }else if(elem.is(\"textarea\")){\n          doTextarea(elem);\n        }else if(elem.is(\"a\") || elem.is(\":submit\") || elem.is(\":reset\") || elem.is(\"button\") || elem.is(\"input[type=button]\")){\n          doButton(elem);\n        }\n          \n      }\n    });\n  };\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/changelog.txt",
    "content": "Version 1.5.4 (2012-04-12)\n\tFlash: Disable scripting if swf was loaded from another domain.\nVersion 1.5.3 (2012-04-05)\n\tHTML5: Check if xhr object is initialized, before calling abort() on it.\n\tHTML4: Postpone form removal until uploaders state changes, to avoid error on resuming stopped uploads.\n\tBrowserPlus: Fix mechanical typo, that caused error during mime type check.\n\tBrowserPlus: browserPlus.Uploader.Cancel() has two required parameters, dies with the error if not passed.\n\tFlash: Improve runtime's behaviour during upload cancellation.\n\tFlash: Survive the case when GPSVersionID contains unexpected value.\n\tFlash: Fix random freeze in Chrome's bundled Flash Player.\n\tFlash: Avoid the silent break when URLStream not yet open, but close is called on it.\n\tFlash: Move Destroy handler out of Flash:Init handler, since it might be called not only after Flash:Init but also before it.\n\tFlash: Avoid warning during build with mxmlc.\n\tTry removeEventListener first in IE and only if it fails - detachEvent.\n\tFix plupload.getPos to return proper value in IE8+.\n\tDo not initiate plupload.STARTED state, if file queue is empty.\n\tAdditional language packs: Estonian, Polish, Korean, French-Canadian, Greek, Persian/Farsi.\nVersion 1.5.2 (2012-01-06)\n\tUI Widget: Do not show UI if no runtime can be initialized.\n\tUI Widget: Timely update file size and total size if resize in action.\n\tUI Widget: Constrain renaming feature to queued files only.\n\tUI Widget: Disable Add button properly, if requested, rather then just hide.\n\tHTML4/HTML5/BrowserPlus: Avoid adding mime type twice to dialog trigger.\n\tHTML5: fix regression, when unresized images were failing on FF3.6.\n\tHTML5: Constrain Gecko 2,5,6 workaround to multipart mode only.\n\tHTML5/Flash: Take into account weird possibilities of ExifVersion being a string, rather then standard Undefined.\n\tFlash: Simplify event dispatching in BitmapDataUnlimited class, in order to avoid freezing on resizing in FP11.\n\tAdd ability to disable file dialog trigger on request (uploader.disableBrowse(true/false)).\n\tSupport for immediate abort of upload process, be it chunked upload or regular one.\n\tAbort all activity, before destroying uploader.\n\tRevive temporary file removal logic in upload.php.\n\tFix potential vulnerability in dump.php and upload.php.\n\tAdditional MIME types: application/vnd.openxmlformats-officedocument.*, application/x-javascript, application/json, text/css,css, application/vnd.oasis.opendocument.formula-templat.\n\tAdditional language packs: Hungarian, Croatian, Serbian, Romanian.\nVersion 1.5.1.1 (2011-09-27)\n\tHTML5: Fix mechanical typo, that successfully broke drag and drop, wherever could.\nVersion 1.5.1 (2011-09-26)\n\tHTML4: Add support for server responses in HTML format.\n\tHTML5: Disable multiple file selection in Safari 5.x for Windows (see #363).\n\tHTML5: Gecko 2/5/6 should upload chunks as binary strings when in chunking mode and client side resize is requested.\n\tFlash: Enforce URLStream mode when custom headers are passed.\n\tFlash: Fix embedding problems in IE9 (and all other IEs).\n\tFlash/Gears/BrowserPlus/SilverLight: Expose multi_selection feature, to be used in required_features (mainly to overcome Safari for Windows problem).\n\tSilverLight: Properly handle custom and null headers.\n\tUploadComplete moved to fire after the last StateChanged event.\n\tAdditional language packs: Finnish.\nVersion 1.5b (2011-09-11)\n\tUI Widget: Fix sortable logic.\n\tUI Widget: Fix bug, when message was displayed simultaneously across all Plupload UI instances on the page.\n\tUI Widget: notify() method is now public - users can throw their own messages into the widget header.\n\tHTML4/HTML5: Revise input[type=file] placement logic to support cursor styling on Geko 2+.\n\tHTML5: Revise Drag'n'Drop detection logic.\n\tHTML5: Make Exif and GPS information available to user, introduce two new events: ExifData and GpsData.\n\tHTML5: Add support for File.prototype.slice() method (mozSlice/webkitSlice) in order to be able to upload files in chunks without preloading.\n\tHTML5: Remove any JPEG headers before restoring them, 'cause user agent (like Chrome), might be inserting it's own.\n\tFlash: Remove a limit on the depth of image header check, since it still fails in some cases and performance gain is negligible.\n\tFlash: Fix regression, when runtime hanged when not images where passed in as images.\t\n\tSilverLight: Fix bug, when JSON serializer was failing on null.\n\tSilverLight: Remove cast to integer for chunk boundary, which resulted in a wrong size for last chunks on huge files.\n\tSilverLight: Increase read buffer, add disposal of ImageStream and FileStream, optimize for performance.\n\tUpdated build.xml to include language packs in release package under js/ folder.\n\tGears/BrowserPlus: Add support for * file filter.\n\tBeforeUpload now can cancel upload if required.\n\tAdditional MIME types: text/csv, image/photoshop, video/x-ms-wmv, video/avi, video/webm support\n\tAdditional language packs: Japanese\n\tCleaned examples.\nVersion 1.4.3.2 (2011-04-13)\n\tFixed bug in HTML5 runtime, when was reduced by a factor of 100 after every upload.\nVersion 1.4.3.1 (2011-04-12)\n\tFixed build script, mistakenly populating jquery.plupload.queue directory from jquery.ui.plupload sources.\n\tFixed script urls in all examples, build script now will alter them automatically from dev to release when needed.\n\tFixed isEmptyObj undefined error in HTML4 runtime.\n\tFixed bug in UI Widget preventing UploadComplete from triggering.\nVersion 1.4.3 (2011-04-11)\n\tAdded Latvian language pack and updated French.\n\tFixed bug in Flash runtime when JPEG header was not investigated deep enough to reach SOFn marker in large images.\n\tFixed bug, when PNGs were cropped to width in Flash runtimes, rather then resized. \n\tFixed Flash to allow multiple uploading of the same file, with different settings.\n\tFixed Flash runtime to clean anonymous listeners properly. \n\tFixed HTML5 runtime to resolve to mimeType in case-insensitive way.\n\tFixed HTML5/Flash/SilverLight/Gears runtimes for inconsistency in naming of chunks feature, comparing to other runtimes.\n\tFixed HTML4/HTML5 runtimes for input[type=file] to outsize contaner effectively enough to fill the whole click area.\n\tFixed all runtimes to preserve position (relative/absolute) rule on containers that already have it.\n\tFixed SilverLight runtime to support large files (over 2GB).\n\tRestructured the examples, src and build scripts to make it more clear that jQuery is optional.\n\tAdded support for *.* filter.\n\tAdded support for preserving ICC and IPTC headers when resizing JPEGs.\n\tAdded Image.onerror/onabort handlers to HTML5 in order to gracefully bypass faulty images.\n\tAdded ability to drop image size (by lowering quality), while preserving original dimension (HTML5/Flash/Gears).\n\tPorted EXIF, ICC, IPTC preservation code to Flash runtime. \nVersion 1.4.2 (2011-02-20)\n\tAdded Brazilian Portuguese, German, Russian and Spanish translations.\n\tAdded support for file_data_name option to SilverLight runtime.\n\tAdded support for better quality image resizing to Flash runtime.\n\tAdded support for properly handling images with dimensions up to 8191x8191 pixels to Flash runtime.\n\tAdded 'updatelist' event to UI Widget, which will be triggered every time file list will get redrawn. \n\tAdded support for dynamically changing options to UI Widget.\n\tFixed HTML4 runtime bug, when UploadFile handler was attached twice. \n\tFixed HTML5 to use FileReader.readAsBinaryString() instead of File.getAsBinary() on newer WebKit browsers (like Chrome 9).\n\tFixed Flash runtime from sending duplicate Filename param, when using FileReference.upload(). \n\tUpdated S3 example to illustrate support for a proper progress indication. \nVersion 1.4.1 (2011-02-01)\n\tAdded an example on how to use Plupload with Amazon S3 written in PHP but can easily be ported to other languages.\n\tFixed bug where hidden input elements wasn't created when the multiple_queues option wasn't used.\n\tFixed bug where FF4 would produce an exception about missing BlobBuilder.\nVersion 1.4.0 (2011-01-26)\n\tAdded removeEvent and removeAllEvents methods and modified addEvent accordingly, in order to support dynamic unload.\n\tAdded unbindAll method.\n\tAdded UploadComplete event, which fires when internal iterator reaches the end of the queue.\n\tAdded public destroy method to plupload object, new event - Destroy, and corresponding handlers to all runtimes.\n\tAdded Czech, Italian, French, Dutch translations.\n\tAdded support for translatable error messages.\n\tAdded two new options: browse_button_hover and browse_button_active, in order to support browse_button interactivity.\t\n\tAdded support for 'multi_selection: false' to Silverlight runtime.\n\tAdded support for video/mp4, video/x-m4v and audio/mp4 MIME Types. \n\tAdded artificial sendAsBinary method to XMLHttpRequest.prototype for browsers that have support for BlobBuilder and typed arrays.\n\tAdded version tracking variable into plupload object and version comment to the header of every file.\n\tFixed measurements of browse_button element in order to size and position input[type=file] element to fit it fully.\n\tFixed Flash runtime behavior for multiple_select=false and other simpleUpload usage cases: basically new FileReference has to be created for every select dialog. \n\tFixed browser sniffer to match only Safari, for fakeSafariDragDrop (seems like Safari on Mac doesn't require it either).\n\tFixed so that ExternalInterface escapes strings properly, before passing them to JS. \n\tFixed eventual reinitialization of flash/silverlight runtimes, especially for cases when object wrapper needed to be programmatically hidden and then shown again.\n\tFixed so that Plupload will now ignore files with duplicate names when adding to the queue, in one set. Mainly introduced to work around Safari on Windows bug (https://bugs.webkit.org/show_bug.cgi?id=37957).\n\tFixed bug, when final UploadProgress was firing after FileUploaded for Flash simpleUpload. \n\tFixed bug where upload would fail if an error was produced inside the FilesAdded event.\n\tFixed bug in Flash runtime when it used a wrong size when resizing, but not chunking.\n\tFixed bug in Silverlight runtime that would keep sending 0 byte packages when a picture was chunked before resized.\n\tDisabled blur filter (is going to be replaced with some bilinear resampling in next release).\n\tCompletely revised UI Widget, to be more jQuery UI oriented. Optionally depends on UI Button, UI Sortable, UI ProgressBar.\t\nVersion 1.3.0 (2010-11-24)\n\tAdded new jQuery UI widget that supports jQuery UI themes.\n\tAdded new multiple_queues option that enables you to upload multiple times in the queue widgets.\n\tAdded support for crossdomain loading of the XAP and SWF files and crossdomain upload.\n\tAdded new multiple_queues option that enables you to upload multiple times in the queue widgets.\n\tAdded support for crossdomain loading of the XAP and SWF files and crossdomain upload.\n\tAdded preinit/init options to to ease up the binding of custom events to queueWidget and the Uploader class.\n\tAdded drag/drop support for Safari until they fix the broken drag/drop support on Windows.\n\tAdded events example file that show how to bind all events and display event specific data.\n\tAdded support for retaining Exif data on images when they where resized using the HTML5 runtime.\n\tFixed logic issue with the upload.php example file. Chunking wasn't working correctly.\n\tFixed issue with HTML4 not handling the form encoding correctly on older IE versions. Patch contributed by jinxdone.\n\tFixed so the HTML4 runtime only submits the defined multipart_params arguments.\n\tFixes issue where it wasn't possible to dynamically override url or mutlipart_params for the HTML4 runtime.\n\tFixed so all runtimes pass the name, chunk and chunks parameters as multipart parameters instead of querystring parameters.\n\tFixed so files are read using the newer FileReader class if it's available if not it tries the older getAsXXX on Gecko.\n\tFixed bug where IE 9 beta 1 wouldn't render Silverlight properly.\n\tFixed bug where Flash would do extra empty requests if images below a specific size would be uploaded.\n\tFixed bug where Google Gears would resize and re-encode images even if the it wasn't changed in scale.\n\tFixed bug where the HTML5 runtime wouldn't free memory after each request on Gecko.\nVersion 1.2.4 (2010-09-08)\n\tAdded new BeforeUpload event to make it easier to override settings before a file is uploaded.\n\tAdded new automatic usage of FileReference in Flash if it's possible. Contributed by Marcel Jackwerth.\n\tAdded new chunking support for Chrome 5 and Firefox 3.6 using the HTML 5 runtime.\n\tAdded new multipart upload support for WebKit using the HTML 5 runtime and the FormData object.\n\tAdded new image scaling method for the Flash runtime contributed by rcoopman.\n\tAdded new alert error message if the user selected invalid files.\n\tAdded new automatic unique name generation to the example.php script. Contributed by Brandon Kelly.\n\tChanged so the default upload method is multipart and the default chunk size is 0.\n\tFixed progress issue with the HTML5 runtime running on Gecko.\n\tFixed so longer extensions can be used such as .tar.gz.\n\tFixed so the file extension is retained when using the unique_names option.\nVersion 1.2.3 (2010-05-27)\n\tAdded new drag/drop support for HTML5 running on Chrome beta.\n\tAdded new multipart state for the features object. It's now possible to detect multipart support.\n\tAdded new getFeatures function to all runtime. Basic concept by Javier Martinez Fernandez.\n\tFixed bug where runtimes where initialized even if they didn't match the required_features setting.\nVersion 1.2.2.1 (2010-05-04)\n\tAdded new headers option, enables you to set custom headers for the upload requests.\n\tFixed bug where the file extension checking was case sensitive.\nVersion 1.2.2 (2010-04-26)\n\tAdded new file_data_name option that enables you to set the multipart file data param. Patch contributed by Alex Ganov.\n\tAdded new FILE_SIZE_ERROR type that will be triggered if the user selected a file that is to large or zero bytes.\n\tAdded new FILE_EXTENSION_ERROR type that will be triggered if you add a file with an invalid file extension.\n\tAdded new required_features setting, enables you to specify a list of required features that the runtime must have.\n\tFixed so the plupload.buildUrl function uses the UTF compatible encodeURIComponent method instead of escape.\n\tFixed so that all file types can be selected if you don't specify a filter setting.\n\tFixed so more valid HTTP status codes are accepted as valid responses.\n\tFixed so all runtimes fills the features object with available features.\n\tFixed some issues with the HTML4 runtime if there wasn't any existing forms on the page.\n\tFixed some conflict issues with HTML4 runtime and forms with the input names of action or target.\n\tFixed bug where some Gecko versions would produce exceptions when checking the HTTP status of a XHR.\nVersion 1.2.1 (2010-03-22)\n\tFixed bug with incorrect aspect ratio in Flash image scaling.\n\tFixed bug where chunked uploads could get scrambled in the Flash runtime. Patch contributed by Grady Werner.\n\tFixed bug where a beta version of Chrome wouldn't handle drag/drop correctly because of missing drag effect.\n\tFixed so the HTML 4 runtime displays N/A for file sizes and the progress is based on uploaded files instead of bytes.\n\tFixed so chunking can be disabled properly in Flash but that will affect the progress bar.\n\tFixed so queue widget displays the drag/drop message if file queue is emptied.\n\tFixed small files are uploaded as one single chunk and not forced into 4 chunks in the Flash runtime.\nVersion 1.2 (2010-03-09)\n\tAdded new rename file support for jQuery queue widget, click on a file name to rename it if it's enabled.\n\tAdded official ChunkUploaded event, it similar to FileUploaded but executed for each chunk.\n\tAdded bytes per second support to total queue progress.\n\tAdded better error handling to core API using the new Error event.\n\tAdded better error handling to jQuery queue widget.\n\tFixed so chunking uploads is dispatch from JS not from inside Flash/Silverlight.\nVersion 1.1.1 (2010-02-25)\n\tAdded new setup setting to queue widget. Makes it easier to bind custom events to uploader instance.\n\tFixed so it's possible to disable chunking compleatly. It's now disabled by default.\n\tFixed bug where multipart mode was enabled all the time in the Flash runtime.\n\tFixed bug where chunked uploading in Silverlight would fail.\n\tFixed bug where the delete button was visible while uploading.\n\tFixed bug where unique_names setting wasn't working when the core API was used.\n\tFixed bug where the queue widget wouldn't display the currently uploaded file if the unique_names was enabled.\nVersion 1.1 (2010-02-24)\n\tAdded new multipart and multipart_params support.\n\tAdded new container option, enables you to specify where flash/silverlight objects would be added.\n\tAdded chunking support to BrowserPlus runtime, contributed by Steve Spencer.\n\tAdded FileUploaded event that fires when a file is uploaded.\n\tAdded more easily understandable buttons to queue widget.\n\tAdded html4 runtime, contributed by Ryan Demmer.\n\tFixed issues with i18n support and added a Swedish and Danish language pack.\n\tFixed bug where the Flash runtime could do empty requests if the image was scaled down.\n\tFixed bug where uploading small images in Silverlight would produce an exception.\n\tFixed so the runtime list can include whitespace or missing runtimes. Patch contributed by yvind Sean Kinsey.\n\tFixed so to large files are ignored and never dispatched to the FilesAdded event.\nVersion 1.0 (2010-02-03)\n\tFirst official release of Plupload.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.File.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.File</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.File</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">File</td>\n</tr>\n</table>\n<div class=\"classDescription\">File instance.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#id\">id</a> : String</div>\n<div class=\"summary\">File id this is a globally unique id for the specific file.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#loaded\">loaded</a> : Number</div>\n<div class=\"summary\">Number of bytes uploaded of the files total size.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#name\">name</a> : String</div>\n<div class=\"summary\">File name for example \"myfile.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#percent\">percent</a> : Number</div>\n<div class=\"summary\">Number of percentage uploaded of the file.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#size\">size</a> : Number</div>\n<div class=\"summary\">File size in bytes.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#status\">status</a> : Number</div>\n<div class=\"summary\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.File.html#File\">File</a>(id:String, name:String, size:Number)</div>\n<div class=\"summary\">Constructs a new file instance.</div>\n</td>\n<td class=\"last\">File</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"id\">\n<h3>id<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public id : String</code>\n<div class=\"memberDescription\">File id this is a globally unique id for the specific file.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"loaded\">\n<h3>loaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public loaded : Number</code>\n<div class=\"memberDescription\">Number of bytes uploaded of the files total size.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"name\">\n<h3>name<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public name : String</code>\n<div class=\"memberDescription\">File name for example \"myfile.gif\".\n</div>\n</div>\n<div class=\"memberDetails\" id=\"percent\">\n<h3>percent<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public percent : Number</code>\n<div class=\"memberDescription\">Number of percentage uploaded of the file.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"size\">\n<h3>size<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public size : Number</code>\n<div class=\"memberDescription\">File size in bytes.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"status\">\n<h3>status<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public status : Number</code>\n<div class=\"memberDescription\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\n</div>\n<h4>See Also</h4>\n<ul class=\"see\">\n<li>\n<a href=\"class_plupload.html\">plupload</a>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"File\">\n<h3>File<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction File(id:String, name:String, size:Number)</code>\n<div class=\"memberDescription\">Constructs a new file instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">id:String</td>\n<td class=\"last\">Unique file id.</td>\n</tr>\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">File name.</td>\n</tr>\n<tr>\n<td class=\"first\">size:Number</td>\n<td class=\"last\">File size in bytes.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.QueueProgress.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.QueueProgress</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.QueueProgress</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</table>\n<div class=\"classDescription\">Runtime class gets implemented by each upload runtime.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#bytesPerSec\">bytesPerSec</a> : Number</div>\n<div class=\"summary\">Bytes uploaded per second.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#failed\">failed</a> : Number</div>\n<div class=\"summary\">Number of files failed to upload.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#loaded\">loaded</a> : Number</div>\n<div class=\"summary\">Total bytes uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#percent\">percent</a> : Number</div>\n<div class=\"summary\">Total percent of the uploaded bytes.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#queued\">queued</a> : Number</div>\n<div class=\"summary\">Number of files yet to be uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#size\">size</a> : Number</div>\n<div class=\"summary\">Total queue file size.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#uploaded\">uploaded</a> : Number</div>\n<div class=\"summary\">Number of files uploaded.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#QueueProgress\">QueueProgress</a>()</div>\n<div class=\"summary\">Constructs a queue progress.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.QueueProgress.html#reset\">reset</a>():void</div>\n<div class=\"summary\">Resets the progress to it's initial values.</div>\n</td>\n<td class=\"last\">QueueProgress</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"bytesPerSec\">\n<h3>bytesPerSec<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public bytesPerSec : Number</code>\n<div class=\"memberDescription\">Bytes uploaded per second.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"failed\">\n<h3>failed<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public failed : Number</code>\n<div class=\"memberDescription\">Number of files failed to upload.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"loaded\">\n<h3>loaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public loaded : Number</code>\n<div class=\"memberDescription\">Total bytes uploaded.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"percent\">\n<h3>percent<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public percent : Number</code>\n<div class=\"memberDescription\">Total percent of the uploaded bytes.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"queued\">\n<h3>queued<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public queued : Number</code>\n<div class=\"memberDescription\">Number of files yet to be uploaded.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"size\">\n<h3>size<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public size : Number</code>\n<div class=\"memberDescription\">Total queue file size.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"uploaded\">\n<h3>uploaded<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public uploaded : Number</code>\n<div class=\"memberDescription\">Number of files uploaded.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"QueueProgress\">\n<h3>QueueProgress<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction QueueProgress()</code>\n<div class=\"memberDescription\">Constructs a queue progress.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"reset\">\n<h3>reset<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction reset():void</code>\n<div class=\"memberDescription\">Resets the progress to it's initial values.\n</div>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Runtime.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.Runtime</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.Runtime</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Runtime</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Subclasses</td>\n<td class=\"last subClassList\">\n<a href=\"class_plupload.runtimes.BrowserPlus.html\">BrowserPlus</a>, <a href=\"class_plupload.runtimes.Flash.html\">Flash</a>, <a href=\"class_plupload.runtimes.Gears.html\">Gears</a>, <a href=\"class_plupload.runtimes.Html4.html\">Html4</a>, <a href=\"class_plupload.runtimes.Html5.html\">Html5</a>, <a href=\"class_plupload.runtimes.Silverlight.html\">Silverlight</a>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Runtime class gets implemented by each upload runtime.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Runtime.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Runtime</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.Uploader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.Uploader</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.Uploader</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</table>\n<div class=\"classDescription\">Uploader class, an instance of this class will be created for each upload field.\n</div>\n<h4>Example</h4>\n<pre class=\"brush: js;\">var uploader = new plupload.Uploader({\n    runtimes : 'gears,html5,flash',\n    browse_button : 'button_id'\n});\n\nuploader.bind('Init', function(up) {\n    alert('Supports drag/drop: ' + (!!up.features.dragdrop));\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n    alert('Selected files: ' + files.length);\n});\n\nuploader.bind('QueueChanged', function(up) {\n    alert('Queued files: ' + uploader.files.length);\n});\n\nuploader.init();</pre>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#features\">features</a> : Object</div>\n<div class=\"summary\">Map of features that are available for the uploader runtime.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#files\">files</a> : Array</div>\n<div class=\"summary\">Current upload queue, an array of File instances.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#id\">id</a> : String</div>\n<div class=\"summary\">Unique id for the Uploader instance.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#runtime\">runtime</a> : String</div>\n<div class=\"summary\">Current runtime name.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#settings\">settings</a> : Object</div>\n<div class=\"summary\">Object with name/value settings.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#state\">state</a> : Number</div>\n<div class=\"summary\">Current state of the total uploading progress.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#total\">total</a> : <a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</div>\n<div class=\"summary\">Total progess information.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Uploader\">Uploader</a>(settings:Object)</div>\n<div class=\"summary\">Constructs a new uploader instance.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#bind\">bind</a>(name:String, func:function, scope:Object):void</div>\n<div class=\"summary\">Adds an event listener by name.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#destroy\">destroy</a>():void</div>\n<div class=\"summary\">Destroys Plupload instance and cleans after itself.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#getFile\">getFile</a>(id:String):<a href=\"class_plupload.File.html\">File</a>\n</div>\n<div class=\"summary\">Returns the specified file object by id.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#init\">init</a>():void</div>\n<div class=\"summary\">Initializes the Uploader instance and adds internal event listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#refresh\">refresh</a>():void</div>\n<div class=\"summary\">Refreshes the upload instance by dispatching out a refresh event to all runtimes.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#removeFile\">removeFile</a>(file:<a href=\"class_plupload.File.html\">File</a>):void</div>\n<div class=\"summary\">Removes a specific file.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#splice\">splice</a>(start:Number, length:Number):Array</div>\n<div class=\"summary\">Removes part of the queue and returns the files removed.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#start\">start</a>():void</div>\n<div class=\"summary\">Starts uploading the queued files.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#stop\">stop</a>():void</div>\n<div class=\"summary\">Stops the upload of the queued files.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#trigger\">trigger</a>(name:String, Multiple:Object..):void</div>\n<div class=\"summary\">Dispatches the specified event name and it's arguments to all listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#unbind\">unbind</a>(name:String, func:function):void</div>\n<div class=\"summary\">Removes the specified event listener.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#unbindAll\">unbindAll</a>():void</div>\n<div class=\"summary\">Removes all event listeners.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Events</h2>\n<table class=\"Events summary\">\n<thead>\n<tr>\n<th>Event</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#BeforeUpload\">BeforeUpload</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires when just before a file is uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#ChunkUploaded\">ChunkUploaded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</div>\n<div class=\"summary\">Fires when file chunk is uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Destroy\">Destroy</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when destroy method is called.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Error\">Error</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, error:Object)</div>\n<div class=\"summary\">Fires when a error occurs.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FilesAdded\">FilesAdded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires while when the user selects files to upload.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FilesRemoved\">FilesRemoved</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires while a file was removed from queue.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#FileUploaded\">FileUploaded</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</div>\n<div class=\"summary\">Fires when a file is successfully uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Init\">Init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the current RunTime has been initialized.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#PostInit\">PostInit</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires after the init event incase you need to perform actions there.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#QueueChanged\">QueueChanged</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the file queue is changed.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#Refresh\">Refresh</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the silverlight/flash or other shim needs to move.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#StateChanged\">StateChanged</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</div>\n<div class=\"summary\">Fires when the overall state is being changed for the upload queue.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadComplete\">UploadComplete</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</div>\n<div class=\"summary\">Fires when all files in a queue are uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadFile\">UploadFile</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires when a file is to be uploaded by the runtime.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.Uploader.html#UploadProgress\">UploadProgress</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</div>\n<div class=\"summary\">Fires while a file is being uploaded.</div>\n</td>\n<td class=\"last\">Uploader</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"features\">\n<h3>features<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public features : Object</code>\n<div class=\"memberDescription\">Map of features that are available for the uploader runtime. Features will be filled\nbefore the init event is called, these features can then be used to alter the UI for the end user.\nSome of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"files\">\n<h3>files<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public files : Array</code>\n<div class=\"memberDescription\">Current upload queue, an array of File instances.\n</div>\n<h4>See Also</h4>\n<ul class=\"see\">\n<li>\n<a href=\"class_plupload.File.html\">File</a>\n</li>\n</ul>\n</div>\n<div class=\"memberDetails\" id=\"id\">\n<h3>id<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public id : String</code>\n<div class=\"memberDescription\">Unique id for the Uploader instance.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"runtime\">\n<h3>runtime<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public runtime : String</code>\n<div class=\"memberDescription\">Current runtime name.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"settings\">\n<h3>settings<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public settings : Object</code>\n<div class=\"memberDescription\">Object with name/value settings.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"state\">\n<h3>state<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public state : Number</code>\n<div class=\"memberDescription\">Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED.\nThese states are controlled by the stop/start methods. The default value is STOPPED.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"total\">\n<h3>total<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public total : <a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</code>\n<div class=\"memberDescription\">Total progess information. How many files has been uploaded, total percent etc.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"Uploader\">\n<h3>Uploader<span class=\"memberType\">constructor</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction Uploader(settings:Object)</code>\n<div class=\"memberDescription\">Constructs a new uploader instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">settings:Object</td>\n<td class=\"last\">Initialization settings, to be used by the uploader instance and runtimes.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"bind\">\n<h3>bind<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction bind(name:String, func:function, scope:Object):void</code>\n<div class=\"memberDescription\">Adds an event listener by name.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Event name to listen for.</td>\n</tr>\n<tr>\n<td class=\"first\">func:function</td>\n<td class=\"last\">Function to call ones the event gets fired.</td>\n</tr>\n<tr>\n<td class=\"first\">scope:Object</td>\n<td class=\"last\">Optional scope to execute the specified function in.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"destroy\">\n<h3>destroy<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction destroy():void</code>\n<div class=\"memberDescription\">Destroys Plupload instance and cleans after itself.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"getFile\">\n<h3>getFile<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction getFile(id:String):<a href=\"class_plupload.File.html\">File</a>\n</code>\n<div class=\"memberDescription\">Returns the specified file object by id.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">id:String</td>\n<td class=\"last\">File id to look for.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">\n<a href=\"class_plupload.File.html\">File</a> - File object or undefined if it wasn't found;</div>\n</div>\n<div class=\"memberDetails\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction init():void</code>\n<div class=\"memberDescription\">Initializes the Uploader instance and adds internal event listeners.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"refresh\">\n<h3>refresh<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction refresh():void</code>\n<div class=\"memberDescription\">Refreshes the upload instance by dispatching out a refresh event to all runtimes.\nThis would for example reposition flash/silverlight shims on the page.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"removeFile\">\n<h3>removeFile<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction removeFile(file:<a href=\"class_plupload.File.html\">File</a>):void</code>\n<div class=\"memberDescription\">Removes a specific file.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to remove from queue.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"splice\">\n<h3>splice<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction splice(start:Number, length:Number):Array</code>\n<div class=\"memberDescription\">Removes part of the queue and returns the files removed. This will also trigger the FilesRemoved and QueueChanged events.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">start:Number</td>\n<td class=\"last\">(Optional) Start index to remove from.</td>\n</tr>\n<tr>\n<td class=\"first\">length:Number</td>\n<td class=\"last\">(Optional) Lengh of items to remove.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Array - Array of files that was removed.</div>\n</div>\n<div class=\"memberDetails\" id=\"start\">\n<h3>start<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction start():void</code>\n<div class=\"memberDescription\">Starts uploading the queued files.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"stop\">\n<h3>stop<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction stop():void</code>\n<div class=\"memberDescription\">Stops the upload of the queued files.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"trigger\">\n<h3>trigger<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction trigger(name:String, Multiple:Object..):void</code>\n<div class=\"memberDescription\">Dispatches the specified event name and it's arguments to all listeners.\n\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Event name to fire.</td>\n</tr>\n<tr>\n<td class=\"first\">Multiple:Object..</td>\n<td class=\"last\">arguments to pass along to the listener functions.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"unbind\">\n<h3>unbind<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction unbind(name:String, func:function):void</code>\n<div class=\"memberDescription\">Removes the specified event listener.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Name of event to remove.</td>\n</tr>\n<tr>\n<td class=\"first\">func:function</td>\n<td class=\"last\">Function to remove from listener.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails last\" id=\"unbindAll\">\n<h3>unbindAll<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tfunction unbindAll():void</code>\n<div class=\"memberDescription\">Removes all event listeners.\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Event details</h2>\n<div class=\"memberDetails\" id=\"BeforeUpload\">\n<h3>BeforeUpload<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent BeforeUpload(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires when just before a file is uploaded. This event enables you to override settings\non the uploader instance before the file is uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to be uploaded.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"ChunkUploaded\">\n<h3>ChunkUploaded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent ChunkUploaded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</code>\n<div class=\"memberDescription\">Fires when file chunk is uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that the chunk was uploaded for.</td>\n</tr>\n<tr>\n<td class=\"first\">response:Object</td>\n<td class=\"last\">Object with response properties.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Destroy\">\n<h3>Destroy<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Destroy(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when destroy method is called.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Error\">\n<h3>Error<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Error(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, error:Object)</code>\n<div class=\"memberDescription\">Fires when a error occurs.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">error:Object</td>\n<td class=\"last\">Contains code, message and sometimes file and other details.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FilesAdded\">\n<h3>FilesAdded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FilesAdded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires while when the user selects files to upload.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of file objects that was added to queue/selected by the user.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FilesRemoved\">\n<h3>FilesRemoved<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FilesRemoved(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires while a file was removed from queue.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of files that got removed.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"FileUploaded\">\n<h3>FileUploaded<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent FileUploaded(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>, response:Object)</code>\n<div class=\"memberDescription\">Fires when a file is successfully uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that was uploaded.</td>\n</tr>\n<tr>\n<td class=\"first\">response:Object</td>\n<td class=\"last\">Object with response properties.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Init\">\n<h3>Init<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the current RunTime has been initialized.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"PostInit\">\n<h3>PostInit<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent PostInit(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires after the init event incase you need to perform actions there.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"QueueChanged\">\n<h3>QueueChanged<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent QueueChanged(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"Refresh\">\n<h3>Refresh<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent Refresh(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the silverlight/flash or other shim needs to move.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"StateChanged\">\n<h3>StateChanged<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent StateChanged(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>)</code>\n<div class=\"memberDescription\">Fires when the overall state is being changed for the upload queue.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"UploadComplete\">\n<h3>UploadComplete<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadComplete(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, files:Array)</code>\n<div class=\"memberDescription\">Fires when all files in a queue are uploaded.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">files:Array</td>\n<td class=\"last\">Array of file objects that was added to queue/selected by the user.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"UploadFile\">\n<h3>UploadFile<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadFile(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires when a file is to be uploaded by the runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File to be uploaded.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails last\" id=\"UploadProgress\">\n<h3>UploadProgress<span class=\"memberType\">event</span>\n</h3>\n<code class=\"syntax\">public \n\t\t\t\t\t\tevent UploadProgress(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, file:<a href=\"class_plupload.File.html\">File</a>)</code>\n<div class=\"memberDescription\">Fires while a file is being uploaded. Use this event to update the current file upload progress.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance sending the event.</td>\n</tr>\n<tr>\n<td class=\"first\">file:<a href=\"class_plupload.File.html\">File</a>\n</td>\n<td class=\"last\">File that is currently being uploaded.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n</table>\n<div class=\"classDescription\">Plupload class with some global constants and functions.\n</div>\n<h4>Example</h4>\n<pre class=\"brush: js;\">// Encode entities\nconsole.log(plupload.xmlEncode(\"My string &lt;&gt;\"));\n\n// Generate unique id\nconsole.log(plupload.guid());</pre>\n<div class=\"summaryLists\">\n<h2>Public Properties</h2>\n<table class=\"Properties summary\">\n<thead>\n<tr>\n<th>Property</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#DONE\">DONE</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File has been uploaded successfully</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FAILED\">FAILED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File has failed to be uploaded</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FILE_EXTENSION_ERROR\">FILE_EXTENSION_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File extension error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#FILE_SIZE_ERROR\">FILE_SIZE_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File size error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#GENERIC_ERROR\">GENERIC_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic error for example if an exception is thrown inside Silverlight.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#HTTP_ERROR\">HTTP_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>HTTP transport error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#INIT_ERROR\">INIT_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initialization error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#IO_ERROR\">IO_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic I/O error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#mimeTypes\">mimeTypes</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Mime type lookup table.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#QUEUED\">QUEUED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File is queued for upload</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#SECURITY_ERROR\">SECURITY_ERROR</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generic I/O error.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#STARTED\">STARTED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Upload process is running</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#STOPPED\">STOPPED</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Inital state of the queue and also the state ones it's finished all it's uploads.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#UPLOADING\">UPLOADING</a> : Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>File is being uploaded</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n</tbody>\n</table>\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#addRuntime\">addRuntime</a>(name:String, obj:Object):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Adds a specific upload runtime like for example flash or gears.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#cleanName\">cleanName</a>(s:String):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Cleans the specified name from national characters (diacritics).</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#extend\">extend</a>(target:Object, obj:Object..):Object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Extends the specified object with another object.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#formatSize\">formatSize</a>(size:Number):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Formats the specified number as a size string for example 1024 becomes 1 KB.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#getPos\">getPos</a>(node:Element, root:Element):object</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Returns the absolute x, y position of an Element.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#guid\">guid</a>():String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Generates an unique ID.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#parseSize\">parseSize</a>(size:String/Number):Number</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Parses the specified size string into a byte value.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr class=\"even\">\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#toArray\">toArray</a>(obj:Object):Array</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Forces anything into an array.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.html#xmlEncode\">xmlEncode</a>(s:String):String</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Encodes the specified string.</div>\n</td>\n<td class=\"last\">plupload</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Property details</h2>\n<div class=\"memberDetails\" id=\"DONE\">\n<h3>DONE<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static DONE : Object</code>\n<div class=\"memberDescription\">File has been uploaded successfully\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FAILED\">\n<h3>FAILED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FAILED : Object</code>\n<div class=\"memberDescription\">File has failed to be uploaded\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FILE_EXTENSION_ERROR\">\n<h3>FILE_EXTENSION_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FILE_EXTENSION_ERROR : Object</code>\n<div class=\"memberDescription\">File extension error. If the user selects a file that isn't valid according to the filters setting.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"FILE_SIZE_ERROR\">\n<h3>FILE_SIZE_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static FILE_SIZE_ERROR : Object</code>\n<div class=\"memberDescription\">File size error. If the user selects a file that is to large it will be blocked and an error of this type will be triggered.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"GENERIC_ERROR\">\n<h3>GENERIC_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static GENERIC_ERROR : Object</code>\n<div class=\"memberDescription\">Generic error for example if an exception is thrown inside Silverlight.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"HTTP_ERROR\">\n<h3>HTTP_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static HTTP_ERROR : Object</code>\n<div class=\"memberDescription\">HTTP transport error. For example if the server produces a HTTP status other than 200.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"INIT_ERROR\">\n<h3>INIT_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static INIT_ERROR : Object</code>\n<div class=\"memberDescription\">Initialization error. Will be triggered if no runtime was initialized.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"IO_ERROR\">\n<h3>IO_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static IO_ERROR : Object</code>\n<div class=\"memberDescription\">Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"mimeTypes\">\n<h3>mimeTypes<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static mimeTypes : Object</code>\n<div class=\"memberDescription\">Mime type lookup table.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"QUEUED\">\n<h3>QUEUED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static QUEUED : Object</code>\n<div class=\"memberDescription\">File is queued for upload\n</div>\n</div>\n<div class=\"memberDetails\" id=\"SECURITY_ERROR\">\n<h3>SECURITY_ERROR<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static SECURITY_ERROR : Object</code>\n<div class=\"memberDescription\">Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</div>\n</div>\n<div class=\"memberDetails\" id=\"STARTED\">\n<h3>STARTED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static STARTED : Object</code>\n<div class=\"memberDescription\">Upload process is running\n</div>\n</div>\n<div class=\"memberDetails\" id=\"STOPPED\">\n<h3>STOPPED<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static STOPPED : Object</code>\n<div class=\"memberDescription\">Inital state of the queue and also the state ones it's finished all it's uploads.\n</div>\n</div>\n<div class=\"memberDetails last\" id=\"UPLOADING\">\n<h3>UPLOADING<span class=\"memberType\">property</span>\n</h3>\n<code class=\"syntax\">public static UPLOADING : Object</code>\n<div class=\"memberDescription\">File is being uploaded\n</div>\n</div>\n</div>\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails\" id=\"addRuntime\">\n<h3>addRuntime<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction addRuntime(name:String, obj:Object):void</code>\n<div class=\"memberDescription\">Adds a specific upload runtime like for example flash or gears.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">name:String</td>\n<td class=\"last\">Runtime name for example flash.</td>\n</tr>\n<tr>\n<td class=\"first\">obj:Object</td>\n<td class=\"last\">Object containing init/destroy method.</td>\n</tr>\n</table>\n</div>\n<div class=\"memberDetails\" id=\"cleanName\">\n<h3>cleanName<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction cleanName(s:String):String</code>\n<div class=\"memberDescription\">Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">s:String</td>\n<td class=\"last\">String to clean up.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Cleaned string.</div>\n</div>\n<div class=\"memberDetails\" id=\"extend\">\n<h3>extend<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction extend(target:Object, obj:Object..):Object</code>\n<div class=\"memberDescription\">Extends the specified object with another object.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">target:Object</td>\n<td class=\"last\">Object to extend.</td>\n</tr>\n<tr>\n<td class=\"first\">obj:Object..</td>\n<td class=\"last\">Multiple objects to extend with.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Object - Same as target, the extended object.</div>\n</div>\n<div class=\"memberDetails\" id=\"formatSize\">\n<h3>formatSize<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction formatSize(size:Number):String</code>\n<div class=\"memberDescription\">Formats the specified number as a size string for example 1024 becomes 1 KB.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">size:Number</td>\n<td class=\"last\">Size to format as string.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Formatted size string.</div>\n</div>\n<div class=\"memberDetails\" id=\"getPos\">\n<h3>getPos<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction getPos(node:Element, root:Element):object</code>\n<div class=\"memberDescription\">Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">node:Element</td>\n<td class=\"last\">HTML element or element id to get x, y position from.</td>\n</tr>\n<tr>\n<td class=\"first\">root:Element</td>\n<td class=\"last\">Optional root element to stop calculations at.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">object - Absolute position of the specified element object with x, y fields.</div>\n</div>\n<div class=\"memberDetails\" id=\"guid\">\n<h3>guid<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction guid():String</code>\n<div class=\"memberDescription\">Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.\nThe only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages\nto get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.\nIt's more probable for the earth to be hit with an ansteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property\nto an user unique key.\n</div>\n<h4>Returns</h4>\n<div class=\"returns\">String - Virtually unique id.</div>\n</div>\n<div class=\"memberDetails\" id=\"parseSize\">\n<h3>parseSize<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction parseSize(size:String/Number):Number</code>\n<div class=\"memberDescription\">Parses the specified size string into a byte value. For example 10kb becomes 10240.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">size:String/Number</td>\n<td class=\"last\">String to parse or number to just pass through.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Number - Size in bytes.</div>\n</div>\n<div class=\"memberDetails\" id=\"toArray\">\n<h3>toArray<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction toArray(obj:Object):Array</code>\n<div class=\"memberDescription\">Forces anything into an array.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">obj:Object</td>\n<td class=\"last\">Object with length field.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">Array - Array object containing all items.</div>\n</div>\n<div class=\"memberDetails last\" id=\"xmlEncode\">\n<h3>xmlEncode<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction xmlEncode(s:String):String</code>\n<div class=\"memberDescription\">Encodes the specified string.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">s:String</td>\n<td class=\"last\">String to encode.</td>\n</tr>\n</table>\n<h4>Returns</h4>\n<div class=\"returns\">String - Encoded string.</div>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.BrowserPlus.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.BrowserPlus</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.BrowserPlus</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">BrowserPlus</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>BrowserPlus</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Yahoo BrowserPlus implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.BrowserPlus.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the browserplus runtime.</div>\n</td>\n<td class=\"last\">BrowserPlus</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the browserplus runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Flash.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Flash</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Flash</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Flash</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Flash</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">FlashRuntime implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Flash.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Flash</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Gears.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Gears</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Gears</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Gears</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Gears</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Gears implementation. This runtime supports these features: dragdrop, jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Gears.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Gears</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Html4</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Html4</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Html4</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Html4</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">HTML4 implementation. This runtime has no special features it uses an form that posts files into an hidden iframe.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Html4.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Html4</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Html5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Html5</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Html5</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Html5</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Html5</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">HMTL5 implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Html5.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Html5</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/class_plupload.runtimes.Silverlight.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html>\n<head>\n<title>Class: plupload.runtimes.Silverlight</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n</head>\n<body>\n<div class=\"classDetailsContent\">\n<h1>plupload.runtimes.Silverlight</h1>\n<table class=\"classDetails\">\n<tr>\n<td class=\"first\">Namespace</td>\n<td class=\"last\">plupload.runtimes</td>\n</tr>\n<tr>\n<td class=\"first\">Class</td>\n<td class=\"last\">Silverlight</td>\n</tr>\n<tr>\n<td class=\"first\">Type</td>\n<td class=\"last\">Singleton</td>\n</tr>\n<tr>\n<td class=\"first\">Inheritance</td>\n<td class=\"last inheritageList\">\n<span>Silverlight</span>\n<span class=\"last\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</td>\n</tr>\n</table>\n<div class=\"classDescription\">Silverlight implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<div class=\"summaryLists\">\n<h2>Public Methods</h2>\n<table class=\"Methods summary\">\n<thead>\n<tr>\n<th>Method</th>\n<th>Defined By</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"first\">\n<div>\n<a class=\"memberName\" href=\"class_plupload.runtimes.Silverlight.html#init\">init</a>(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</div>\n<div class=\"summary\">\n<span class=\"static\">[static] </span>Initializes the upload runtime.</div>\n</td>\n<td class=\"last\">Silverlight</td>\n</tr>\n</tbody>\n</table>\n</div>\n<div class=\"detailsList\">\n<div class=\"details\">\n<h2>Method details</h2>\n<div class=\"memberDetails last\" id=\"init\">\n<h3>init<span class=\"memberType\">method</span>\n</h3>\n<code class=\"syntax\">public static \n\t\t\t\t\t\tfunction init(uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>, callback:function):void</code>\n<div class=\"memberDescription\">Initializes the upload runtime. This runtime supports these features: jpgresize, pngresize, chunks.\n</div>\n<h4>Parameters</h4>\n<table class=\"params\">\n<tr>\n<td class=\"first\">uploader:<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</td>\n<td class=\"last\">Uploader instance that needs to be initialized.</td>\n</tr>\n<tr>\n<td class=\"first\">callback:function</td>\n<td class=\"last\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</td>\n</tr>\n</table>\n</div>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/general.css",
    "content": "body, html {\n\toverflow: hidden;\n\tbackground-color: #DFE8F6;\n}\n\n#doc3 {\n\tmargin: 0;\n\n\t/* Fix for scrolling issue on Gecko */\n\tposition: fixed; width: 100%; top: 0; left: 0;\n}\n\n#bd, #bd, #yui-main, #detailsView, #classView {\n\theight: 100%;\n}\n\n#hd {\n\tbackground: #1E4176;\n\tborder-bottom: 1px solid #99BBE8;\n}\n\n#hd h1 {\n\tfont-family:Verdana,Arial,Helvetica,sans-serif;\n\tfont-size: 16px;\n\tpadding: 4px 0 4px 8px;\n\tcolor: #fff;\n}\n\n#yui-main #detailsView {\n\toverflow: auto;\n\tmargin: 4px;\n\tmargin-left: 260px;\n\tborder: 1px solid #99BBE8;\n\tbackground: #FFF;\n}\n\n#bd #classView {\n\toverflow: auto;\n\twidth: 250px;\n\tmargin: 4px;\n\tborder: 1px solid #99BBE8;\n\tbackground: #FFF;\n}\n\n.classDetailsContent, .memberDetailsContent {\n\tmargin: 10px;\n\tline-height: 150%;\n}\n\nbody, td, th {\n\tfont-family: \"Trebuchet MS\", \"Bitstream Vera Sans\", Tahoma,Verdana,Arial,Helvetica,sans-serif;\n\tfont-size: 13px;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: \"Trebuchet MS\", \"Bitstream Vera Sans\", verdana, lucida, arial, helvetica, sans-serif;\n\tfont-weight: bold;\n\tletter-spacing: 1px;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\twidth: 90%;\n}\n\nh1 {\n\tfont-size: 20px;\n}\n\nh2 {\n\tfont-size: 16px;\n}\n\nh3 {\n\tfont-size: 16px;\n}\n\nh4 {\n\tfont-size: 13px;\n}\n\na, a:visited, a:active, a:link {\n\tcolor: #0000CC;\n\ttext-decoration: none;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\ntable.summary {\n\tborder: 1px solid #999999;\n\tmargin-bottom: 20px;\n\tmargin-right: 10px;\n\tmargin-top: 10px;\n\twidth: 100%;\n\tborder-collapse: collapse;\n}\n\ntable.summary th {\n\tfont-weight: bold;\n\ttext-align: left;\n\tvertical-align: bottom;\n\tbackground-color: #627C9D;\n\tcolor: #FFFFFF;\n\twhite-space: nowrap;\n\tpadding: 4px;\n}\n\ntable.summary td {\n\tborder: 1px solid #999999;\n\tpadding: 4px;\n}\n\ntable.summary a.memberName {\n\tfont-weight: bold;\n}\n\ntable.summary tr.even {\n\tbackground: #f2f2f2;\n}\n\ntable.summary td.first div {\n\tmargin-left: 30px;\n}\n\ntable.summary td.first {\n\twidth: 95%;\n}\n\ntable.summary td.last {\n\twidth: 5%;\n}\n\ntable.summary .deprecated {\n\tmargin: 0;\n}\n\n.params, .returns, .see {\n\tmargin-left: 20px;\n\tmargin-bottom: 10px;\n}\n\n.params td.last {\n\tpadding-left: 10px;\n}\n\n.classDescription, .memberDescription, .deprecated {\n\tmargin: 10px 0 10px 0;\n}\n\n.inherited td.first {\n\tbackground: url(../img/inherited.gif) no-repeat 10px 5px;\n}\n\n.inheritageList span {\n\tpadding-right: 20px;\n\tmargin-right: 5px;\n\tbackground: url(../img/inherit-arrow.gif) no-repeat center right;\n}\n\n.inheritageList span.last {\n\tbackground: transparent;\n}\n\n.classDetails .first {\n\tfont-weight: bold;\n\tpadding-right: 20px;\n}\n\n.memberDetails {\n\tmargin-bottom: 10px;\n}\n\npre {\n\tbackground-color: #F2F2F2;\n\tfont-family: \"Lucida Console\",\"Courier New\",Courier,monospace;\n\tfont-size: 12px;\n\tmargin-bottom: 10px;\n\tmargin-top: 10px;\n\toverflow: auto;\n\tpadding: 5px 5px 5px 5px;\n}\n\n.memberType {\n\tpadding-left: 10px;\n\tfont-size: 13px;\n\tfont-weight: normal;\n}\n\n.selected {\n\tfont-weight: bold;\n}\n\n.memberDetails {\n\tborder-bottom: 1px solid gray;\n\tmargin-bottom: 10px;\n}\n\n.details {\n\tpadding-bottom: 10px;\n}\n\n.details .last {\n\tborder: 0;\n}\n\n.details h2 {\n\twidth: 100%;\n\tbackground-color: #627C9D;\n\tcolor: #FFF;\n\tpadding: 4px;\n}\n\n.memberDetails {\n\tpadding-left: 15px;\n}\n\ncode.syntax {\n\tbackground-color: #F2F2F2;\n}\n\n.deprecated {\n\tfont-weight: bold;\n}\n\n.static {\n\tcolor: gray;\n}\n\n.version span, .author span {\n\tfont-weight: bold;\n}\n\n#yui-main #detailsView.loading {\n\tbackground: #FFF url('../img/loader.gif') no-repeat center center; \n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/grids.css",
    "content": "/*\nCopyright (c) 2009, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 2.7.0\n*/\n/**\n * YUI Grids\n * @module grids\n * @namespace yui-\n * @requires reset, fonts\n */\n\n/**  \n * Note: Throughout this file, the *property (star-property) filter is used \n * to give a value to IE that other browsers do not see. _property is only seen \n * by IE7, so the combo of *prop and _prop can target between IE6 and IE7.\n * \n * More information on these filters and related validation errors:\n * http://tech.groups.yahoo.com/group/ydn-javascript/message/40059\n */\n\n/**\n * Section: General Rules\n */\n\nbody {\n\ttext-align: center;\n}\n\n/**\n * Section: Page Width Rules (#doc, #doc2, #doc3, #doc4)\n */\n\n#doc,#doc2,#doc3,#doc4,\n.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7 {\n\tmargin: auto;\n\ttext-align: left;\n\twidth: 57.69em;\n\t*width: 56.25em;\n}\n\n/* 950 Centered (doc2) */\n#doc2 {\n\twidth: 73.076em;\n\t*width: 71.25em;\n}\n\n/* 100% (doc3) */\n#doc3 {\n/**\n * Left and Right margins are not a structural part of Grids. Without them \n * Grids works fine, but content bleeds to the very edge of the document, which\n * often impairs readability and usability. They are provided because they \n * prevent the content from \"bleeding\" into the browser's chrome. \n */\n\tmargin: auto 10px;\n\twidth: auto;\n}\n\n/* 974 Centered (doc4) */\n#doc4 {\n\twidth: 74.923em;\n\t*width: 73.05em;\n}\n\n/**\n * Section: Preset Template Rules (.yui-t[1-6])\n */\n\n\n.yui-b {\n\t/* to preserve source-order independence for Gecko */\n\tposition: relative;\n}\n\n.yui-b {\n\t/* to preserve source-order independence for IE */\n\t_position: static;\n}\n\n#yui-main .yui-b {\n\t/* to preserve source-order independence for Gecko */\n\tposition: static;\n}\n\n#yui-main,\n.yui-g .yui-u .yui-g {\n\twidth: 100%;\n}\n\n.yui-t1 #yui-main,\n.yui-t2 #yui-main,\n.yui-t3 #yui-main {\n\tfloat: right;\n\t/* IE: preserve layout at narrow widths */\n\tmargin-left: -25em;\n}\n\n.yui-t4 #yui-main,\n.yui-t5 #yui-main,\n.yui-t6 #yui-main {\n\tfloat: left;\n\t/* IE: preserve layout at narrow widths */\n\tmargin-right: -25em;\n}\n\n/** \n * For Specific Template Presets\n */\n\n.yui-t1 .yui-b {\n\tfloat: left;\n\twidth: 12.30769em;\n\t*width: 12.00em;\n}\n\n.yui-t1 #yui-main .yui-b {\n\tmargin-left: 13.30769em;\n\t*margin-left: 13.05em;\n}\n\n.yui-t2 .yui-b {\n\tfloat: left;\n\twidth: 13.8461em;\n\t*width: 13.50em;\n}\n\n.yui-t2 #yui-main .yui-b {\n\tmargin-left: 14.8461em;\n\t*margin-left: 14.55em;\n}\n\n.yui-t3 .yui-b {\n\tfloat: left;\n\twidth: 23.0769em;\n\t*width: 22.50em;\n}\n\n.yui-t3 #yui-main .yui-b {\n\tmargin-left: 24.0769em;\n\t*margin-left: 23.62em;\n}\n\n.yui-t4 .yui-b {\n\tfloat: right;\n\twidth: 13.8456em;\n\t*width: 13.50em;\n}\n\n.yui-t4 #yui-main .yui-b {\n\tmargin-right: 14.8456em;\n\t*margin-right: 14.55em;\n}\n\n.yui-t5 .yui-b {\n\tfloat: right;\n\twidth: 18.4615em;\n\t*width: 18.00em;\n}\n\n.yui-t5 #yui-main .yui-b {\n\tmargin-right: 19.4615em;\n\t*margin-right: 19.125em;\n}\n\n.yui-t6 .yui-b {\n\tfloat: right;\n\twidth: 23.0769em;\n\t*width: 22.50em;\n}\n\n.yui-t6 #yui-main .yui-b {\n\tmargin-right: 24.0769em;\n\t*margin-right: 23.62em;\n}\n\n.yui-t7 #yui-main .yui-b {\n\tdisplay: block;\n\tmargin: 0 0 1em 0;\n}\n\n#yui-main .yui-b {\n\tfloat: none;\n\twidth: auto;\n}\n\n/**\n * Section: Grids and Nesting Grids\n */\n\n/* Children generally take half the available space */\n.yui-gb .yui-u,\n.yui-g .yui-gb .yui-u,\n.yui-gb .yui-g,\n.yui-gb .yui-gb,\n.yui-gb .yui-gc,\n.yui-gb .yui-gd,\n.yui-gb .yui-ge,\n.yui-gb .yui-gf,\n.yui-gc .yui-u, \n.yui-gc .yui-g,\n.yui-gd .yui-u {\n\tfloat: left;\n}\n\n/* Float units (and sub grids) to the right */\n.yui-g .yui-u,\n.yui-g .yui-g,\n.yui-g .yui-gb, \n.yui-g .yui-gc, \n.yui-g .yui-gd, \n.yui-g .yui-ge, \n.yui-g .yui-gf, \n.yui-gc .yui-u, \n.yui-gd .yui-g,\n.yui-g .yui-gc .yui-u,\n.yui-ge .yui-u, \n.yui-ge .yui-g, \n.yui-gf .yui-g,\n.yui-gf .yui-u {\n\tfloat: right;\n}\n\n/*Float units (and sub grids) to the left */\n.yui-g div.first, \n.yui-gb div.first,\n.yui-gc div.first,\n.yui-gd div.first, \n.yui-ge div.first, \n.yui-gf div.first,\n.yui-g .yui-gc div.first,\n.yui-g .yui-ge div.first,\n.yui-gc div.first div.first {\n\tfloat: left;\n}\n\n.yui-g .yui-u,\n.yui-g .yui-g,\n.yui-g .yui-gb,\n.yui-g .yui-gc,\n.yui-g .yui-gd,\n.yui-g .yui-ge,\n.yui-g .yui-gf {\n\twidth: 49.1%;\n}\n\n.yui-gb .yui-u,\n.yui-g .yui-gb .yui-u,\n.yui-gb .yui-g,\n.yui-gb .yui-gb,\n.yui-gb .yui-gc,\n.yui-gb .yui-gd,\n.yui-gb .yui-ge,\n.yui-gb .yui-gf,\n.yui-gc .yui-u, \n.yui-gc .yui-g,\n.yui-gd .yui-u {\n\twidth: 32%;\n\tmargin-left: 1.99%;\n}\n\n/* Give IE some extra breathing room for 1/3-based rounding issues */\n.yui-gb .yui-u {\n\t*margin-left: 1.9%;\n\t*width: 31.9%;\n}\n\n.yui-gc div.first, \n\t.yui-gd .yui-u {\n\twidth: 66%;\n}\n\n.yui-gd div.first {\n\twidth: 32%;\n}\n\n.yui-ge div.first, \n\t.yui-gf .yui-u {\n\twidth: 74.2%;\n}\n\n.yui-ge .yui-u,\n\t.yui-gf div.first {\n\twidth: 24%;\n}\n\n.yui-g .yui-gb div.first,\n.yui-gb div.first, \n.yui-gc div.first, \n.yui-gd div.first {\n\tmargin-left: 0;\n}\n\n/**\n * Section: Deep Nesting \n */\n\n.yui-g .yui-g .yui-u,\n.yui-gb .yui-g .yui-u,\n.yui-gc .yui-g .yui-u,\n.yui-gd .yui-g .yui-u,\n.yui-ge .yui-g .yui-u,\n.yui-gf .yui-g .yui-u {\n\twidth: 49%;\n\t*width: 48.1%;\n\t*margin-left: 0;\n}\n\n.yui-g .yui-g .yui-u {\n\twidth: 48.1%;\n}\n\n/*SF 1927599 from 1.14 to 2.6.0*/\n.yui-g .yui-gb div.first,\n\t.yui-gb .yui-gb div.first {\n\t*margin-right: 0;\n\t*width: 32%;\n\t_width: 31.7%;\n}\n\n.yui-g .yui-gc div.first, \n\t.yui-gd .yui-g {\n\twidth: 66%;\n}\n\n.yui-gb .yui-g div.first {\n\t*margin-right: 4%;\n\t_margin-right: 1.3%;\n}\n\n.yui-gb .yui-gc div.first, \n\t.yui-gb .yui-gd div.first {\n\t*margin-right: 0;\n}\n\n.yui-gb .yui-gb .yui-u,\n\t.yui-gb .yui-gc .yui-u {\n\t*margin-left: 1.8%;\n\t_margin-left: 4%;\n}\n\n.yui-g .yui-gb .yui-u {\n\t_margin-left: 1.0%;\n}\n\n.yui-gb .yui-gd .yui-u {\n\t*width: 66%;\n\t_width: 61.2%;\n}\n\n.yui-gb .yui-gd div.first {\n\t*width: 31%;\n\t_width: 29.5%;\n}\n\n.yui-g .yui-gc .yui-u, \n\t.yui-gb .yui-gc .yui-u {\n\twidth: 32%;\n\t_float: right;\n\tmargin-right: 0;\n\t_margin-left: 0;\n}\n\n.yui-gb .yui-gc div.first {\n\twidth: 66%;\n\t*float: left;\n\t*margin-left: 0;\n}\n\n.yui-gb .yui-ge .yui-u, \n\t.yui-gb .yui-gf .yui-u {\n\tmargin: 0;\n}\n\n.yui-gb .yui-gb .yui-u {\n\t_margin-left: .7%;\n}\n\n.yui-gb .yui-g div.first, \n\t.yui-gb .yui-gb div.first {\n\t*margin-left: 0;\n}\n\n.yui-gc .yui-g .yui-u,\n\t.yui-gd .yui-g .yui-u {\n\t*width: 48.1%;\n\t*margin-left: 0;\n}\n\n.yui-gb .yui-gd div.first {\n\twidth: 32%;\n}\n\n.yui-g .yui-gd div.first {\n\t_width: 29.9%;\n}\n\n.yui-ge .yui-g {\n\twidth: 24%;\n}\n\n.yui-gf .yui-g {\n\twidth: 74.2%;\n}\n\n.yui-gb .yui-ge div.yui-u,\n\t.yui-gb .yui-gf div.yui-u {\n\tfloat: right;\n}\n\n.yui-gb .yui-ge div.first,\n\t.yui-gb .yui-gf div.first {\n\tfloat: left;\n}\n\n/* Width Accommodation for Nested Contexts */\n.yui-gb .yui-ge .yui-u,\n\t.yui-gb .yui-gf div.first {\n\t*width: 24%;\n\t_width: 20%;\n}\n\n/* Width Accommodation for Nested Contexts */\n.yui-gb .yui-ge div.first, \n\t.yui-gb .yui-gf .yui-u {\n\t*width: 73.5%;\n\t_width: 65.5%;\n}\n\n/* Patch for GD within GE */\n.yui-ge div.first .yui-gd .yui-u {\n\twidth: 65%;\n}\n\n.yui-ge div.first .yui-gd div.first {\n\twidth: 32%;\n}\n\n/* @group Clearing */\n#hd:after,\n#bd:after,\n#ft:after,\n.yui-g:after, \n.yui-gb:after, \n.yui-gc:after, \n.yui-gd:after, \n.yui-ge:after, \n.yui-gf:after {\n\tcontent: \".\";\n\tdisplay: block;\n\theight: 0;\n\tclear: both;\n\tvisibility: hidden;\n}\n\n#hd,\n#bd,\n#ft,\n.yui-g, \n.yui-gb, \n.yui-gc, \n.yui-gd, \n.yui-ge, \n.yui-gf {\n\tzoom: 1;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/jquery.treeview.css",
    "content": ".treeview, .treeview ul { \npadding: 0;\nmargin: 0;\nlist-style: none;\n\n\n}\n\n\n\n.treeview ul {\nbackground-color: white;\nmargin-top: 4px;\n}\n\n.treeview .hitarea {\nbackground: transparent -64px -25px no-repeat;\nheight: 16px;\nwidth: 16px;\nmargin-left: -16px;\nfloat: left;\ncursor: pointer;\n}\n/* fix for IE6 */\n* html .hitarea {\n\tdisplay: inline;\n\tfloat: none;\n\n}\n\n.treeview li { \n\tmargin: 0;\n\tpadding: 3px 0pt 3px 16px;\n}\n\n.treeview a.selected {\n\tbackground-color: #eee;\n}\n\n#treecontrol { margin: 1em 0; display: none; }\n\n.treeview li { background: transparent 0 0 no-repeat; }\n.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }\n\n.treeview .expandable-hitarea { background-position: -80px -3px; }\n\n.treeview li.last { background-position: 0 -1766px }\n\n.treeview li.lastCollapsable { background-position: 0 -111px }\n\n.treeview li.lastExpandable { background-position: -32px -67px }\n\n.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }\n\n.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(../img/treeview-famfamfam.gif); } \n\n.classtree li {\n\tfont-family: arial,tahoma,helvetica,sans-serif;\n\tfont-size: 12px;\n}\n\n.classtree li { padding: 3px 0 2px 16px; }\n\n.classtree span {\n\tpadding: 1px 0 1px 18px;\n\tdisplay: block;\n}\n\n.classtree span.root { background: url(../img/root.gif) 0 3px no-repeat;}\n.classtree span.namespace { background: url(../img/namespace.gif) 0 0 no-repeat;}\n.classtree span.class { background: url(../img/class.gif) 0 0 no-repeat; }\n.classtree span.property { background: url(../img/property.gif) 0 0 no-repeat; }\n.classtree span.method { background: url(../img/method.gif) 0 0 no-repeat; }\n.classtree span.event { background: url(../img/event.gif) 0 0 no-repeat; }\n.classtree span.singleton { background: url(../img/static.gif) 0 0 no-repeat; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/reset.css",
    "content": "/*\nCopyright (c) 2009, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 2.7.0\n*/\n/**\n * YUI Reset\n * @module reset\n * @namespace\n * @requires \n */\nhtml {\n\tcolor: #000;\n\tbackground: #FFF;\n}\n\nbody,\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\npre,\ncode,\nform,\nfieldset,\nlegend,\ninput,\nbutton,\ntextarea,\np,\nblockquote,\nth,\ntd {\n\tmargin: 0;\n\tpadding: 0;\n}\n\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\nfieldset,\nimg {\n\tborder: 0;\n}\n\naddress,\ncaption,\ncite,\ncode,\ndfn,\nem,\nstrong,\nth,\nvar,\noptgroup {\n\tfont-style: inherit;\n\tfont-weight: inherit;\n}\n\ndel,\nins {\n\ttext-decoration: none;\n}\n\nli {\n\tlist-style: none;\n}\n\ncaption,\nth {\n\ttext-align: left;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n\tfont-size: 100%;\n\tfont-weight: normal;\n}\n\nq:before,\nq:after {\n\tcontent: '';\n}\n\nabbr,\nacronym {\n\tborder: 0;\n\tfont-variant: normal;\n}\n\nsup {\n\tvertical-align: baseline;\n}\n\nsub {\n\tvertical-align: baseline;\n}\n\n/*because legend doesn't inherit in IE */\nlegend {\n\tcolor: #000;\n}\n\ninput,\nbutton,\ntextarea,\nselect,\noptgroup,\noption {\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tfont-style: inherit;\n\tfont-weight: inherit;\n}\n\n/*@purpose To enable resizing for IE */\n/*@branch For IE6-Win, IE7-Win */\ninput,\nbutton,\ntextarea,\nselect {\n\t*font-size: 100%;\n}\n\n\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\n.syntaxhighlighter,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter span\n{\n\tmargin: 0 !important;\n\tpadding: 0 !important;\n\tborder: 0 !important;\n\toutline: 0 !important;\n\tbackground: none !important;\n\ttext-align: left !important;\n\tfloat: none !important;\n\tvertical-align: baseline !important;\n\tposition: static !important;\n\tleft: auto !important;\n\ttop: auto !important;\n\tright: auto !important;\n\tbottom: auto !important;\n\theight: auto !important;\n\twidth: auto !important;\n\tline-height: 1.1em !important;\n\tfont-family: \"Consolas\", \"Monaco\", \"Bitstream Vera Sans Mono\", \"Courier New\", Courier, monospace !important;\n\tfont-weight: normal !important;\n\tfont-style: normal !important;\n\tfont-size: 1em !important;\n}\n\n.syntaxhighlighter\n{\n\twidth: 100% !important;\n\tmargin: 1em 0 1em 0 !important;\n\tpadding: 1px !important; /* adds a little border on top and bottom */\n\tposition: relative !important;\n}\n\n.syntaxhighlighter code {\n\tdisplay: inline !important;\n}\n\n.syntaxhighlighter .bold {\n\tfont-weight: bold !important;\n}\n\n.syntaxhighlighter .italic {\n\tfont-style: italic !important;\n}\n\n.syntaxhighlighter .line .number\n{\n\tfloat: left !important; \n\twidth: 3em !important; \n\tpadding-right: .3em !important;\n\ttext-align: right !important;\n\tdisplay: block !important;\n}\n\n/* Disable numbers when no gutter option is set */\n.syntaxhighlighter.nogutter .line .number\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .line .content\n{\n\tmargin-left: 3.3em !important; \n\tpadding-left: .5em !important;\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter .line .content .block\n{\n\tdisplay: block !important;\n\tpadding-left: 1.5em !important;\n\ttext-indent: -1.5em !important;\n}\n\n.syntaxhighlighter .line .content .spaces\n{\n\tdisplay: none !important;\n}\n\n/* Disable border and margin on the lines when no gutter option is set */\n.syntaxhighlighter.nogutter .line .content\n{\n\tmargin-left: 0 !important; \n\tborder-left: none !important;\n}\n\n.syntaxhighlighter .bar\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .bar.show \n{\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter.collapsed .bar\n{\n\tdisplay: block !important;\n}\n\n.syntaxhighlighter.nogutter .ruler\n{\n\tmargin-left: 0 !important;\n\tpadding-left: 0 !important;\n}\n\n.syntaxhighlighter .ruler\n{\n\tpadding: 0 0 .5em .5em !important;\n\tmargin-left: 3.3em !important;\n\toverflow: hidden !important;\n}\n\n/* Adjust some properties when collapsed */\n\n.syntaxhighlighter.collapsed .lines,\n.syntaxhighlighter.collapsed .ruler\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter .lines.no-wrap\n{\n\toverflow: auto;\n\toverflow-y: hidden;\n}\n\n/* Styles for the toolbar */\n\n.syntaxhighlighter .toolbar\n{\n\tposition: absolute !important;\n\tright: 0px !important;\n\ttop: 0px !important;\n\tfont-size: 1px !important;\n\tpadding: 8px 8px 8px 0 !important; /* in px because images don't scale with ems */\n}\n\n.syntaxhighlighter.collapsed .toolbar\n{\n\tfont-size: 80% !important;\n\tpadding: .2em 0 .5em .5em !important;\n\tposition: static !important;\n}\n\n.syntaxhighlighter .toolbar a.item,\n.syntaxhighlighter .toolbar .item\n{\n\tdisplay: block !important;\n\tfloat: left !important;\n\tmargin-left: 8px !important;\n\tbackground-repeat: no-repeat !important;\n\toverflow: hidden !important;\n\ttext-indent: -5000px !important;\n}\n\n.syntaxhighlighter.collapsed .toolbar .item\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter.collapsed .toolbar .item.expandSource\n{\n\tbackground-image: url(../img/magnifier.png) !important;\n\tdisplay: inline !important;\n\ttext-indent: 0 !important;\n\twidth: auto !important;\n\tfloat: none !important;\n\theight: 16px !important;\n\tpadding-left: 20px !important;\n}\n\n.syntaxhighlighter .toolbar .item.viewSource\n{\n\tbackground-image: url(../img/page_white_code.png) !important;\n}\n\n.syntaxhighlighter .toolbar .item.printSource\n{\n\tbackground-image: url(../img/printer.png) !important;\n}\n\n.syntaxhighlighter .toolbar .item.copyToClipboard\n{\n\ttext-indent: 0 !important;\n\tbackground: none !important;\n\toverflow: visible !important;\n}\n\n.syntaxhighlighter .toolbar .item.about\n{\n\tbackground-image: url(../img/help.png) !important;\n}\n\n/** \n * Print view.\n * Colors are based on the default theme without background.\n */\n\n.syntaxhighlighter.printing,\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content,\n.syntaxhighlighter.printing .line .content .block\n{\n\tbackground: none !important;\n}\n\n.syntaxhighlighter .no-wrap .line .content .block\n{\n\twhite-space: nowrap !important;\n}\n\n/* Gutter line numbers */\n.syntaxhighlighter.printing .line .number\n{\n\tcolor: #bbb !important;\n}\n\n/* Add border to the lines */\n.syntaxhighlighter.printing .line .content\n{\n\tcolor: #000 !important;\n}\n\n/* Toolbar when visible */\n.syntaxhighlighter.printing .toolbar,\n.syntaxhighlighter.printing .ruler\n{\n\tdisplay: none !important;\n}\n\n.syntaxhighlighter.printing a\n{\n\ttext-decoration: none !important;\n}\n\n.syntaxhighlighter.printing .plain,\n.syntaxhighlighter.printing .plain a\n{ \n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter.printing .comments,\n.syntaxhighlighter.printing .comments a\n{ \n\tcolor: #008200 !important;\n}\n\n.syntaxhighlighter.printing .string,\n.syntaxhighlighter.printing .string a\n{\n\tcolor: blue !important; \n}\n\n.syntaxhighlighter.printing .keyword\n{ \n\tcolor: #069 !important; \n\tfont-weight: bold !important; \n}\n\n.syntaxhighlighter.printing .preprocessor \n{ \n\tcolor: gray !important; \n}\n\n.syntaxhighlighter.printing .variable \n{ \n\tcolor: #a70 !important; \n}\n\n.syntaxhighlighter.printing .value\n{ \n\tcolor: #090 !important; \n}\n\n.syntaxhighlighter.printing .functions\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter.printing .constants\n{ \n\tcolor: #0066CC !important; \n}\n\n.syntaxhighlighter.printing .script\n{\n\tfont-weight: bold !important;\n}\n\n.syntaxhighlighter.printing .color1,\n.syntaxhighlighter.printing .color1 a\n{ \n\tcolor: #808080 !important; \n}\n\n.syntaxhighlighter.printing .color2,\n.syntaxhighlighter.printing .color2 a\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter.printing .color3,\n.syntaxhighlighter.printing .color3 a\n{ \n\tcolor: red !important; \n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/css/shThemeMoxieDoc.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\n/************************************\n * Default Syntax Highlighter theme.\n * \n * Interface elements.\n ************************************/\n\n.syntaxhighlighter\n{\n\tbackground-color: #E7E5DC !important;\n}\n\n/* Highlighed line number */\n.syntaxhighlighter .line.highlighted .number\n{\n\tbackground-color: #6CE26C !important;\n\tcolor: black !important;\n}\n\n/* Highlighed line */\n.syntaxhighlighter .line.highlighted.alt1 .content,\n.syntaxhighlighter .line.highlighted.alt2 .content\n{\n\tbackground-color: #6CE26C !important;\n}\n\n/* Gutter line numbers */\n.syntaxhighlighter .line .number\n{\n\tcolor: #5C5C5C !important;\n}\n\n/* Add border to the lines */\n.syntaxhighlighter .line .content\n{\n\tborder-left: 3px solid #99BBE8 !important;\n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter.printing .line .content \n{\n\tborder: 0 !important;\n}\n\n/* First line */\n.syntaxhighlighter .line.alt1 .content\n{\n\tbackground-color: #fff !important;\n}\n\n/* Second line */\n.syntaxhighlighter .line.alt2 .content\n{\n\tbackground-color: #F8F8F8 !important;\n}\n\n.syntaxhighlighter .line .content .block\n{\n\tbackground: url(../img/wrapping.png) 0 1.1em no-repeat !important;\n}\n\n.syntaxhighlighter .ruler\n{\n\tcolor: silver !important;\n\tbackground-color: #F8F8F8 !important;\n\tborder-left: 3px solid #6CE26C !important;\n}\n\n.syntaxhighlighter.nogutter .ruler\n{\n\tborder: 0 !important;\n}\n\n.syntaxhighlighter .toolbar\n{\n\tbackground-color: #F8F8F8 !important;\n\tborder: #E7E5DC solid 1px !important;\n}\n\n.syntaxhighlighter .toolbar a\n{\n\tcolor: #a0a0a0 !important;\n}\n\n.syntaxhighlighter .toolbar a:hover\n{\n\tcolor: red !important;\n}\n\n/************************************\n * Actual syntax highlighter colors.\n ************************************/\n.syntaxhighlighter .plain,\n.syntaxhighlighter .plain a\n{ \n\tcolor: #000 !important;\n}\n\n.syntaxhighlighter .comments,\n.syntaxhighlighter .comments a\n{ \n\tcolor: #008200 !important;\n}\n\n.syntaxhighlighter .string,\n.syntaxhighlighter .string a\n{\n\tcolor: blue !important; \n}\n\n.syntaxhighlighter .keyword\n{ \n\tcolor: #069 !important; \n\tfont-weight: bold !important; \n}\n\n.syntaxhighlighter .preprocessor \n{ \n\tcolor: gray !important; \n}\n\n.syntaxhighlighter .variable \n{ \n\tcolor: #a70 !important; \n}\n\n.syntaxhighlighter .value\n{ \n\tcolor: #090 !important; \n}\n\n.syntaxhighlighter .functions\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter .constants\n{ \n\tcolor: #0066CC !important; \n}\n\n.syntaxhighlighter .script\n{ \n\tbackground-color: yellow !important;\n}\n\n.syntaxhighlighter .color1,\n.syntaxhighlighter .color1 a\n{ \n\tcolor: #808080 !important; \n}\n\n.syntaxhighlighter .color2,\n.syntaxhighlighter .color2 a\n{ \n\tcolor: #ff1493 !important; \n}\n\n.syntaxhighlighter .color3,\n.syntaxhighlighter .color3 a\n{ \n\tcolor: red !important; \n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Plupload API</title>\n<meta name=\"generator\" content=\"MoxieDoc\" />\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/reset.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/grids.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/general.css\" />\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/jquery.treeview.css\" />\n<link type=\"text/css\" rel=\"stylesheet\" href=\"css/shCore.css\" />\n<link type=\"text/css\" rel=\"stylesheet\" href=\"css/shThemeMoxieDoc.css\" />\n\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">\n\tgoogle.load(\"jquery\", \"1.3\");\n</script>\n<script type=\"text/javascript\" src=\"js/jquery.treeview.min.js\"></script>\n<script type=\"text/javascript\" src=\"js/general.js\"></script>\n<script type=\"text/javascript\" src=\"js/shCore.js\"></script>\n<script type=\"text/javascript\" src=\"js/shBrushJScript.js\"></script>\n</head>\n<body>\n<div id=\"doc3\" class=\"yui-t1\" style=\"height:500px\">\n<div id=\"hd\">\n<h1>Plupload API</h1>\n</div>\n<div id=\"bd\">\n<div id=\"yui-main\">\n<div id=\"detailsView\" class=\"yui-b\">\n<!--Gets filled using Ajax-->\n</div>\n</div>\n<div id=\"classView\" class=\"yui-b\">\n<ul id=\"browser\" class=\"classtree treeview-famfamfam\">\n<li>\n<span class=\"root\">API Documentation</span>\n<ul>\n<li class=\"closed\">\n<span class=\"namespace\" title=\"Namespace\">\n<a href=\"#\">plupload</a>\n</span>\n<ul>\n<li class=\"closed\">\n<span class=\"namespace\" title=\"Namespace\">\n<a href=\"#\">runtimes</a>\n</span>\n<ul>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.BrowserPlus.html\">BrowserPlus</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Flash.html\">Flash</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Gears.html\">Gears</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Html4.html\">Html4</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Html5.html\">Html5</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.runtimes.Silverlight.html\">Silverlight</a>\n</span>\n</li>\n</ul>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.Uploader.html\">Uploader</a>\n</span>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.File.html\">File</a>\n</span>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.Runtime.html\">Runtime</a>\n</span>\n</li>\n<li>\n<span class=\"class\" title=\"Class\">\n<a href=\"class_plupload.QueueProgress.html\">QueueProgress</a>\n</span>\n</li>\n</ul>\n</li>\n<li>\n<span class=\"singleton\" title=\"Singleton class\">\n<a href=\"class_plupload.html\">plupload</a>\n</span>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/general.js",
    "content": "(function($){\n\tvar currentPage, currentHash;\n\n\tfunction resizeUI() {\n\t\t$('#doc3').css('height', (window.innerHeight || document.documentElement.clientHeight) - $('#hd').height() - 12);\n\t}\n\n\tfunction scrollToHash(hash) {\n\t\tif (hash) {\n\t\t\t$(hash).each(function() {\n\t\t\t\t$(this)[0].scrollIntoView();\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction loadURL(url) {\n\t\tvar parts, hash;\n\n\t\t// Trim away everything but the file name\n\t\turl = /([^\\/]+)$/.exec(url)[0];\n\n\t\t// Parse out parts\n\t\tparts = /^([^#]+)(#.+)?$/.exec(url);\n\t\thash = parts[2];\n\n\t\t// In page link, no need to load anything\n\t\tif (parts[1] == currentPage) {\n\t\t\tif (hash)\n\t\t\t\tscrollToHash(hash);\n\t\t\telse\n\t\t\t\t $('#detailsView')[0].scrollTop = 0;\n\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentPage = parts[1];\n\n\t\t$(\"#classView a.selected\").removeClass('selected');\n\t\t$(\"#classView a[href='\" + currentPage.replace(/^.*\\/([^\\/]+)$/, '$1') + \"']\").addClass('selected').focus().parents(\"li.expandable\").each(function() {\n\t\t\tvar li = $(this).removeClass(\"expandable\").addClass(\"collapsable\");\n\n\t\t\tli.find(\"> div.expandable-hitarea\").removeClass(\"expandable-hitarea\").addClass(\"collapsable-hitarea\");\n\t\t\tli.find(\"> ul\").show();\n\t\t});\n\n\t\t$('#detailsView').find(\"div.page\").hide();\n\n\t\t// Check if the page has been loaded before\n\t\tif ($(\"#detailsView div[url='\" + currentPage + \"']\").show().length == 0) {\n\t\t\t$('#detailsView').addClass(\"loading\");\n\n\t\t\t// Load page and cache it in a div\n\t\t\t$.get(currentPage, \"\", function(data) {\n\t\t\t\tdata = /<body[^>]*>([\\s\\S]+)<\\/body>/.exec(data);\n\n\t\t\t\tif (data) {\n\t\t\t\t\t$('#detailsView').removeClass(\"loading\").append('<div url=\"' + currentPage + '\" class=\"page\">' + data[1] + '</div>')[0].scrollTop = 0;\n\n\t\t\t\t\tSyntaxHighlighter.config.clipboardSwf = 'js/clipboard.swf';\n\t\t\t\t\tSyntaxHighlighter.highlight({gutter : false});\n\n\t\t\t\t\tscrollToHash(hash);\n\t\t\t\t}\n\t\t\t});\n\t\t} else\n\t\t\tscrollToHash(hash);\n\t}\n\n\t$().ready(function(){\n\t\t$(\"#browser\").treeview();\n\t\t$(window).resize(resizeUI).trigger('resize');\n\n\t\twindow.setInterval(function() {\n\t\t\tvar hash = document.location.hash;\n\n\t\t\tif (hash != currentHash && hash) {\n\t\t\t\tloadURL(hash.replace(/\\-/g, '#').substring(1));\n\t\t\t\tcurrentHash = hash;\n\t\t\t}\n\t\t}, 100);\n\n\t\t$(\"a\").live(\"click\", function(e) {\n\t\t\tvar url = e.target.href;\n\n\t\t\tif (e.button == 0) {\n\t\t\t\tif (url.indexOf('class_') != -1 || url.indexOf('alias_') != -1 || url.indexOf('member_') != -1) {\n\t\t\t\t\tdocument.location.hash = e.target.href.replace(/^.*\\/([^\\/]+)/, '$1').replace(/#/g, '-');\n\n\t\t\t\t\tloadURL(url);\n\t\t\t\t}\n\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t});\n\t});\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\nSyntaxHighlighter.brushes.JScript = function()\n{\n\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t;\n\n\tthis.regexList = [\n\t\t{ regex: SyntaxHighlighter.regexLib.singleLineCComments,\tcss: 'comments' },\t\t\t// one line comments\n\t\t{ regex: SyntaxHighlighter.regexLib.multiLineCComments,\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t{ regex: SyntaxHighlighter.regexLib.singleQuotedString,\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\t\tcss: 'keyword' }\t\t\t// keywords\n\t\t];\n\t\n\tthis.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);\n};\n\nSyntaxHighlighter.brushes.JScript.prototype\t= new SyntaxHighlighter.Highlighter();\nSyntaxHighlighter.brushes.JScript.aliases\t= ['js', 'jscript', 'javascript'];\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate\n *\n * @version\n * 2.0.320 (May 03 2009)\n * \n * @copyright\n * Copyright (C) 2004-2009 Alex Gorbatchev.\n *\n * @license\n * This file is part of SyntaxHighlighter.\n * \n * SyntaxHighlighter is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * SyntaxHighlighter is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('f(!1q.2E){l 2E=h(){l p={77:{\"1e-1f\":\"\",\"79-2P\":1,\"1I\":u,\"6V-70\":U,\"1C-2A\":4,\"5f\":N,\"4Z\":U,\"1z\":U,\"56\":N,\"7G-7F\":U,\"6Z\":N,\"4S-1m\":U},M:{52:u,5P:16,5S:16,8k:N,8l:N,83:\"4R\",1k:{3Y:\"97 1c\",41:\"9b 1c\",5U:\"9O 93 7A\",6t:\"9B I 9E 23 8w 7A 8o\",34:\"34\",6P:\"?\",1v:\"2E\\\\n\\\\n\",6F:\"8p\\'t 8I 87 D: \",7X:\"8V 8v\\'t bD D 2u-2c bf: \",6H:\"<!be 2u aV \\\\\"-//9V//6U bz 1.0 bx//bI\\\\\" \\\\\"2g://6D.6v.6m/bi/7c/6U/7c-a4.aw\\\\\"><2u ay=\\\\\"2g://6D.6v.6m/as/8r\\\\\"><6l><8T 2g-92=\\\\\"8P-8L\\\\\" 5B=\\\\\"2d/2u; 8E=8s-8\\\\\" /><3B>8C 2E</3B></6l><2L 1n=\\\\\"3N-8x:8Z,9y,9H,9I-9Q;9S-4v:#9K;4v:#9J;3N-2A:9L;2d-6k:6i;\\\\\"><A 1n=\\\\\"2d-6k:6i;5D-43:99;\\\\\"><A 1n=\\\\\"3N-2A:9p-9o;\\\\\">2E</A><A 1n=\\\\\"3N-2A:.9m;5D-9l:9k;\\\\\"><A>6f 2.0.9j (9n 9s 6n)</A><A><a 2q=\\\\\"2g://6j.4U\\\\\" 9r=\\\\\"57\\\\\" 1n=\\\\\"4v:#9h;2d-9g:98;\\\\\">2g://6j.4U</a></A></A><A>96 I 94 95.</A><A>9f 9e-6n 9c 9t.</A></A></2L></2u>\"},6T:N},1t:{4D:u,3k:u,3P:u,5K:{}},2B:{},85:{9u:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//4k,9N:/\\\\/\\\\/.*$/4k,9M:/#.*$/4k,9P:/\"(?:\\\\.|(\\\\\\\\\\\\\")|[^\\\\\"\"\\\\n])*\"/g,9T:/\\'(?:\\\\.|(\\\\\\\\\\\\\\')|[^\\\\\\'\\'\\\\n])*\\'/g,9R:/\"(?:\\\\.|(\\\\\\\\\\\\\")|[^\\\\\"\"])*\"/g,9z:/\\'(?:\\\\.|(\\\\\\\\\\\\\\')|[^\\\\\\'\\'])*\\'/g,3p:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=]*/g,9x:{E:/(&1F;|<)\\\\?=?/g,13:/\\\\?(&2o;|>)/g},9v:{E:/(&1F;|<)%=?/g,13:/%(&2o;|>)/g},9w:{E:/(&1F;|<)\\\\s*2c.*?(&2o;|>)/4x,13:/(&1F;|<)\\\\/\\\\s*2c\\\\s*(&2o;|>)/4x}},1z:{12:h(3s){l 3y=L.1s(\"3j\"),4o=p.1z.65;3y.J=\"1z\";D(l 2Y 23 4o){l 6o=4o[2Y],4J=T 6o(3s),28=4J.12();3s.5I[2Y]=4J;f(28==u){1H}f(9G(28)==\"9F\"){28=p.1z.6s(28,3s.1g,2Y)}28.J+=\"5k \"+2Y;3y.1G(28)}q 3y},6s:h(4A,6r,4h){l a=L.1s(\"a\"),4Q=a.1n,4P=p.M,4F=4P.5P,48=4P.5S;a.2q=\"#\"+4h;a.3B=4A;a.5M=6r;a.6q=4h;a.1x=4A;f(55(4F)==N){4Q.1S=4F+\"5x\"}f(55(48)==N){4Q.2t=48+\"5x\"}a.8t=h(e){8D{p.1z.6p(c,e||1q.6w,c.5M,c.6q)}8m(e){p.B.1v(e.6u)}q N};q a},6p:h(69,68,6h,6g,67){l 3U=p.1t.5K[6h],3X;f(3U==u||(3X=3U.5I[6g])==u){q u}q 3X.2h(69,68,67)},65:{3Y:h(4b){c.12=h(){f(4b.V(\"56\")!=U){q}q p.M.1k.3Y};c.2h=h(42,8X,91){l A=4b.A;42.7T.5a(42);A.J=A.J.C(\"51\",\"\")}},41:h(66){c.12=h(){q p.M.1k.41};c.2h=h(8R,8Q,8J){l 3Q=p.B.3G(66.4W).C(/</g,\"&1F;\"),2i=p.B.54(\"\",\"57\",8H,8G,\"8K=0, 8O=1, 8N=0, 6O=1\");3Q=p.B.2D(3Q);2i.L.3h(\"<4R>\"+3Q+\"</4R>\");2i.L.5O()}},5U:h(5e){l 3S,8F,5L=5e.1g;c.12=h(){l 2S=p.M;f(2S.52==u){q u}h 1A(5E){l 5s=\"\";D(l 5y 23 5E){5s+=\"<8S 1f=\\'\"+5y+\"\\' 1U=\\'\"+5E[5y]+\"\\'/>\"}q 5s};h 2v(5t){l 5Q=\"\";D(l 5w 23 5t){5Q+=\" \"+5w+\"=\\'\"+5t[5w]+\"\\'\"}q 5Q};l 5m={1S:2S.5P,2t:2S.5S,1g:5L+\"b8\",6N:\"b7/x-6a-6b\",3B:p.M.1k.5U},5h={b6:\"b4\",b5:\"b9\",ba:\"5M=\"+5L,bd:\"N\"},5g=2S.52,3H;f(/bb/i.1R(5Z.5W)){3H=\"<6e\"+2v({bc:\"b3:b2-aU-aT-aS-aQ\",aR:\"2g://aW.b1.4U/b0/6a/aX/6b/bg.bh#6f=9,0,0,0\"})+2v(5m)+\">\"+1A(5h)+1A({bB:5g})+\"</6e>\"}F{3H=\"<bA\"+2v(5m)+2v(5h)+2v({bC:5g})+\"/>\"}3S=L.1s(\"A\");3S.1x=3H;q 3S};c.2h=h(bH,bG,5T){l 6d=5T.bE;6z(6d){2N\"7u\":l 53=p.B.2D(p.B.3G(5e.4W).C(/&1F;/g,\"<\").C(/&2o;/g,\">\").C(/&bw;/g,\"&\"));f(1q.6c){1q.6c.bm(\"2d\",53)}F{q p.B.2D(53)}2N\"bk\":p.B.1v(p.M.1k.6t);2m;2N\"bj\":p.B.1v(5T.6u);2m}}},bo:h(58){c.12=h(){q p.M.1k.34};c.2h=h(bu,bt,bs){l 1W=L.1s(\"bp\"),1O=u;f(p.1t.3P!=u){L.2L.5a(p.1t.3P)}p.1t.3P=1W;1W.1n.bq=\"aP:aO;1S:6L;2t:6L;E:-6K;43:-6K;\";L.2L.1G(1W);1O=1W.5c.L;6J(1O,1q.L);1O.3h(\"<A 1e=\\\\\"\"+58.A.J.C(\"51\",\"\")+\" ae\\\\\">\"+58.A.1x+\"</A>\");1O.5O();1W.5c.4d();1W.5c.34();h 6J(6M,64){l 2F=64.82(\"4Y\");D(l i=0;i<2F.v;i++){f(2F[i].6R.ac()==\"6Q\"&&/aa\\\\.19$/.1R(2F[i].2q)){6M.3h(\"<4Y 6N=\\\\\"2d/19\\\\\" 6R=\\\\\"6Q\\\\\" 2q=\\\\\"\"+2F[i].2q+\"\\\\\"></4Y>\")}}}}},af:h(ag){c.12=h(){q p.M.1k.6P};c.2h=h(aj,ah){l 2i=p.B.54(\"\",\"57\",ai,a9,\"6O=0\"),1O=2i.L;1O.3h(p.M.1k.6H);1O.5O();2i.4d()}}}},B:{5H:h(6G){q 6G+3J.9Y(3J.9W()*9X).2r()},5o:h(5R,5G){l 3m={},1T;D(1T 23 5R){3m[1T]=5R[1T]}D(1T 23 5G){3m[1T]=5G[1T]}q 3m},8d:h(5z){6z(5z){2N\"U\":q U;2N\"N\":q N}q 5z},54:h(3p,6x,44,4c,2J){l x=(6y.1S-44)/2,y=(6y.2t-4c)/2;2J+=\", E=\"+x+\", 43=\"+y+\", 1S=\"+44+\", 2t=\"+4c;2J=2J.C(/^,/,\"\");l 49=1q.a5(3p,6x,2J);49.4d();q 49},7Q:h(1M,25,24){f(1M.6A){1M[\"e\"+25+24]=24;1M[25+24]=h(){1M[\"e\"+25+24](1q.6w)};1M.6A(\"an\"+25,1M[25+24])}F{1M.aG(25,24,N)}},1v:h(z){1v(p.M.1k.1v+z)},4l:h(4M,6B){l 2k=p.1t.4D,3b=u;f(2k==u){2k={};D(l 4G 23 p.2B){l 37=p.2B[4G].aF;f(37==u){1H}D(l i=0;i<37.v;i++){2k[37[i]]=4G}}p.1t.4D=2k}3b=p.2B[2k[4M]];f(3b==u&&6B!=N){p.B.1v(p.M.1k.6F+4M)}q 3b},4n:h(z,6E){l 2U=z.1P(\"\\\\n\");D(l i=0;i<2U.v;i++){2U[i]=6E(2U[i])}q 2U.5u(\"\\\\n\")},74:h(){l A=L.1s(\"A\"),3e=L.1s(\"A\"),6C=10,i=1;29(i<=aD){f(i%6C===0){A.1x+=i;i+=(i+\"\").v}F{A.1x+=\"&aI;\";i++}}3e.J=\"5f 2P\";3e.1G(A);q 3e},6W:h(z){q z.C(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\")},84:h(z){l 3d,4u={},4p=T R(\"^\\\\\\\\[(?<4q>(.*?))\\\\\\\\]$\"),6S=T R(\"(?<1f>[\\\\\\\\w-]+)\"+\"\\\\\\\\s*:\\\\\\\\s*\"+\"(?<1U>\"+\"[\\\\\\\\w-%#]+|\"+\"\\\\\\\\[.*?\\\\\\\\]|\"+\"\\\\\".*?\\\\\"|\"+\"\\'.*?\\'\"+\")\\\\\\\\s*;?\",\"g\");29((3d=6S.Q(z))!=u){l 2f=3d.1U.C(/^[\\'\"]|[\\'\"]$/g,\"\");f(2f!=u&&4p.1R(2f)){l m=4p.Q(2f);2f=m.4q.v>0?m.4q.1P(/\\\\s*,\\\\s*/):[]}4u[3d.1f]=2f}q 4u},7g:h(z,19){f(z==u||z.v==0||z==\"\\\\n\"){q z}z=z.C(/</g,\"&1F;\");z=z.C(/ {2,}/g,h(m){l 4r=\"\";D(l i=0;i<m.v-1;i++){4r+=\"&1X;\"}q 4r+\" \"});f(19!=u){z=p.B.4n(z,h(2s){f(2s.v==0){q\"\"}l 3c=\"\";2s=2s.C(/^(&1X;| )+/,h(s){3c=s;q\"\"});f(2s.v==0){q 3c}q 3c+\"<I 1e=\\\\\"\"+19+\"\\\\\">\"+2s+\"</I>\"})}q z},7a:h(61,62){l 2I=61.2r();29(2I.v<62){2I=\"0\"+2I}q 2I},5p:h(){l 3x=L.1s(\"A\"),35,3r=0,5i=L.2L,1g=p.B.5H(\"5p\"),2Q=\"<A 1e=\\\\\"\",2V=\"</A>\",4H=\"</1V>\";3x.1x=2Q+\"7P\\\\\">\"+2Q+\"1m\\\\\">\"+2Q+\"2P\\\\\">\"+2Q+\"5B\"+\"\\\\\"><1V 1e=\\\\\"7i\\\\\"><1V 1g=\\\\\"\"+1g+\"\\\\\">&1X;\"+4H+4H+2V+2V+2V+2V;5i.1G(3x);35=L.ar(1g);f(/aq/i.1R(5Z.5W)){l 63=1q.ao(35,u);3r=7b(63.ap(\"1S\"))}F{3r=35.at}5i.5a(3x);q 3r},76:h(5Y,60){l 1C=\"\";D(l i=0;i<60;i++){1C+=\" \"}q 5Y.C(/\\\\t/g,1C)},71:h(2C,4w){l az=2C.1P(\"\\\\n\"),1C=\"\\\\t\",40=\"\";D(l i=0;i<50;i++){40+=\"                    \"}h 6I(3z,18,5X){q 3z.1Q(0,18)+40.1Q(0,5X)+3z.1Q(18+1,3z.v)};2C=p.B.4n(2C,h(2a){f(2a.1i(1C)==-1){q 2a}l 18=0;29((18=2a.1i(1C))!=-1){l 7r=4w-18%4w;2a=6I(2a,18,7r)}q 2a});q 2C},3G:h(z){l br=/<br\\\\s*\\\\/?>|&1F;br\\\\s*\\\\/?&2o;/4x;f(p.M.8k==U){z=z.C(br,\"\\\\n\")}f(p.M.8l==U){z=z.C(br,\"\")}q z},33:h(z){q z.C(/\\\\s*$/g,\"\").C(/^\\\\s*/,\"\")},2D:h(z){l 21=p.B.3G(z).1P(\"\\\\n\"),av=T 5V(),8a=/^\\\\s*/,1Z=ax;D(l i=0;i<21.v&&1Z>0;i++){l 3V=21[i];f(p.B.33(3V).v==0){1H}l 3W=8a.Q(3V);f(3W==u){q z}1Z=3J.1Z(3W[0].v,1Z)}f(1Z>0){D(l i=0;i<21.v;i++){21[i]=21[i].1Q(1Z)}}q 21.5u(\"\\\\n\")},7d:h(2K,2O){f(2K.G<2O.G){q-1}F{f(2K.G>2O.G){q 1}F{f(2K.v<2O.v){q-1}F{f(2K.v>2O.v){q 1}}}}q 0},30:h(7S,2H){h 7R(4V,7Y){q[T p.4i(4V[0],4V.G,7Y.19)]};l au=0,5N=u,39=[],7Z=2H.4L?2H.4L:7R;29((5N=2H.3q.Q(7S))!=u){39=39.31(7Z(5N,2H))}q 39},7C:h(86){q 86.C(p.85.3p,h(m){q\"<a 2q=\\\\\"\"+m+\"\\\\\">\"+m+\"</a>\"})}},1I:h(88,4T){h 81(5j){l 59=[];D(l i=0;i<5j.v;i++){59.K(5j[i])}q 59};l 3g=4T?[4T]:81(L.82(p.M.83)),80=\"1x\",2e=u;f(3g.v===0){q}D(l i=0;i<3g.v;i++){l 2G=3g[i],2l=p.B.84(2G.J),32;2l=p.B.5o(88,2l);32=2l[\"87\"];f(32==u){1H}f(2l[\"2u-2c\"]==\"U\"){2e=T p.4B(32)}F{l 4O=p.B.4l(32);f(4O){2e=T 4O()}F{1H}}2e.1I(2G[80],2l);l 2p=2e.A;f(p.M.6T){2p=L.1s(\"aA\");2p.1U=2e.A.1x;2p.1n.1S=\"aB\";2p.1n.2t=\"aK\"}2G.7T.aJ(2p,2G)}},aL:h(7U){p.B.7Q(1q,\"aM\",h(){p.1I(7U)})}};p.4i=h(4j,7V,19){c.1U=4j;c.G=7V;c.v=4j.v;c.19=19};p.4i.Y.2r=h(){q c.1U};p.4B=h(4y){l 1J=p.B.4l(4y),4z=T p.2B.aN(),aH=u;f(1J==u){q}1J=T 1J();c.4E=4z;f(1J.3O==u){p.B.1v(p.M.1k.7X+4y);q}4z.5n.K({3q:1J.3O.I,4L:89});h 3a(4K,7W){D(l j=0;j<4K.v;j++){4K[j].G+=7W}};h 89(17,aC){l 8f=17.I,1L=[],4N=1J.5n,8e=17.G+17.E.v,2Z=1J.3O,1l;D(l i=0;i<4N.v;i++){1l=p.B.30(8f,4N[i]);3a(1l,8e);1L=1L.31(1l)}f(2Z.E!=u&&17.E!=u){1l=p.B.30(17.E,2Z.E);3a(1l,17.G);1L=1L.31(1l)}f(2Z.13!=u&&17.13!=u){1l=p.B.30(17.13,2Z.13);3a(1l,17.G+17[0].aE(17.13));1L=1L.31(1l)}q 1L}};p.4B.Y.1I=h(8h,8i){c.4E.1I(8h,8i);c.A=c.4E.A};p.8b=h(){};p.8b.Y={V:h(8c,8g){l 3Z=c.1A[8c];q p.B.8d(3Z==u?8g:3Z)},12:h(8j){q L.1s(8j)},72:h(38,7O){l 2w=[];f(38!=u){D(l i=0;i<38.v;i++){2w=2w.31(p.B.30(7O,38[i]))}}2w=2w.am(p.B.7d);q 2w},73:h(){l 26=c.2R;D(l i=0;i<26.v;i++){f(26[i]===u){1H}l 2x=26[i],45=2x.G+2x.v;D(l j=i+1;j<26.v&&26[i]!==u;j++){l 20=26[j];f(20===u){1H}F{f(20.G>45){2m}F{f(20.G==2x.G&&20.v>2x.v){c.2R[i]=u}F{f(20.G>=2x.G&&20.G<45){c.2R[j]=u}}}}}}},7m:h(2M){l 36=2M.1P(/\\\\n/g),3f=7b(c.V(\"79-2P\")),7e=(3f+36.v).2r().v,7f=c.V(\"1I\",[]);2M=\"\";D(l i=0;i<36.v;i++){l 1r=36[i],2y=/^(&1X;|\\\\s)+/.Q(1r),5A=\"2P a3\"+(i%2==0?1:2),7j=p.B.7a(3f+i,7e),7k=7f.1i((3f+i).2r())!=-1,1E=u;f(2y!=u){1E=2y[0].2r();1r=1r.1Q(1E.v);1E=1E.C(/&1X;/g,\" \");2y=p.1t.3k*1E.v}F{2y=0}1r=p.B.33(1r);f(1r.v==0){1r=\"&1X;\"}f(7k){5A+=\" a6\"}2M+=\"<A 1e=\\\\\"\"+5A+\"\\\\\">\"+\"<I 1e=\\\\\"a7\\\\\">\"+7j+\".</I>\"+\"<1V 1e=\\\\\"5B\\\\\">\"+(1E!=u?\"<I 1e=\\\\\"a2\\\\\">\"+1E.C(/\\\\s/g,\"&1X;\")+\"</I>\":\"\")+\"<1V 1e=\\\\\"7i\\\\\" 1n=\\\\\"5D-E: \"+2y+\"5x !78;\\\\\">\"+1r+\"</1V>\"+\"</1V>\"+\"</A>\"}q 2M},7l:h(5v,5r){l 18=0,3o=\"\",3n=p.B.7g;D(l i=0;i<5r.v;i++){l 1N=5r[i];f(1N===u||1N.v===0){1H}3o+=3n(5v.1Q(18,1N.G-18),\"7h\")+3n(1N.1U,1N.19);18=1N.G+1N.v}3o+=3n(5v.1Q(18),\"7h\");q 3o},1I:h(1j,6Y){l a1=p.M,3l=p.1t,A,9Z,3i,a0=\"78\";c.1A={};c.A=u;c.1m=u;c.I=u;c.1h=u;c.5I={};c.1g=p.B.5H(\"a8\");3l.5K[c.1g]=c;f(1j===u){1j=\"\"}f(3l.3k===u){3l.3k=p.B.5p()}c.1A=p.B.5o(p.77,6Y||{});f(c.V(\"6Z\")==U){c.1A.1z=c.1A.4Z=N}c.A=A=c.12(\"3j\");c.1m=c.12(\"3j\");c.1m.J=\"1m\";J=\"7P\";A.1g=c.1g;f(c.V(\"56\")){J+=\" 51\"}f(c.V(\"4Z\")==N){J+=\" ak\"}f(c.V(\"4S-1m\")==N){c.1m.J+=\" al-4S\"}J+=\" \"+c.V(\"1e-1f\");A.J=J;c.4W=1j;c.I=p.B.6W(1j).C(/\\\\r/g,\" \");3i=c.V(\"1C-2A\");c.I=c.V(\"6V-70\")==U?p.B.71(c.I,3i):p.B.76(c.I,3i);c.I=p.B.2D(c.I);f(c.V(\"1z\")){c.1h=c.12(\"3j\");c.1h.J=\"1h\";c.1h.1G(p.1z.12(c));A.1G(c.1h);l 1h=c.1h;h 5d(){1h.J=1h.J.C(\"75\",\"\")};A.ab=h(){5d();1h.J+=\" 75\"};A.ad=h(){5d()}}f(c.V(\"5f\")){A.1G(p.B.74())}A.1G(c.1m);c.2R=c.72(c.5n,c.I);c.73();1j=c.7l(c.I,c.2R);1j=c.7m(p.B.33(1j));f(c.V(\"7G-7F\")){1j=p.B.7C(1j)}c.1m.1x=1j},bn:h(z){z=z.C(/^\\\\s+|\\\\s+$/g,\"\").C(/\\\\s+/g,\"\\\\\\\\b|\\\\\\\\b\");q\"\\\\\\\\b\"+z+\"\\\\\\\\b\"},bl:h(2W){c.3O={E:{3q:2W.E,19:\"2c\"},13:{3q:2W.13,19:\"2c\"},I:T R(\"(?<E>\"+2W.E.1c+\")\"+\"(?<I>.*?)\"+\"(?<13>\"+2W.13.1c+\")\",\"bv\")}}};q p}()}f(!5V.1i){5V.Y.1i=h(7M,3R){3R=3J.bF(3R||0,0);D(l i=3R;i<c.v;i++){f(c[i]==7M){q i}}q-1}}f(!1q.R){(h(){l 2z={Q:11.Y.Q,7K:5b.Y.7K,C:5b.Y.C,1P:5b.Y.1P},1K={W:/(?:[^\\\\\\\\([#\\\\s.]+|\\\\\\\\(?!k<[\\\\w$]+>|[7B]{[^}]+})[\\\\S\\\\s]?|\\\\((?=\\\\?(?!#|<[\\\\w$]+>)))+|(\\\\()(?:\\\\?(?:(#)[^)]*\\\\)|<([$\\\\w]+)>))?|\\\\\\\\(?:k<([\\\\w$]+)>|[7B]{([^}]+)})|(\\\\[\\\\^?)|([\\\\S\\\\s])/g,by:/(?:[^$]+|\\\\$(?![1-9$&`\\']|{[$\\\\w]+}))+|\\\\$(?:([1-9]\\\\d*|[$&`\\'])|{([$\\\\w]+)})/g,3M:/^(?:\\\\s+|#.*)+/,5F:/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})/,7x:/&&\\\\[\\\\^?/g,7v:/]/g},7n=h(5l,5k,4X){D(l i=4X||0;i<5l.v;i++){f(5l[i]===5k){q i}}q-1},7y=/()??/.Q(\"\")[1]!==3K,3w={};R=h(1d,1Y){f(1d 3T 11){f(1Y!==3K){3L 7N(\"4C\\'t 4I bJ 7H aY 7J 11 4X aZ\")}q 1d.3C()}l 1Y=1Y||\"\",7w=1Y.1i(\"s\")>-1,6X=1Y.1i(\"x\")>-1,5q=N,3u=[],14=[],W=1K.W,H,3D,3F,3E,3v;W.O=0;29(H=2z.Q.2n(W,1d)){f(H[2]){f(!1K.5F.1R(1d.15(W.O))){14.K(\"(?:)\")}}F{f(H[1]){3u.K(H[3]||u);f(H[3]){5q=U}14.K(\"(\")}F{f(H[4]){3E=7n(3u,H[4]);14.K(3E>-1?\"\\\\\\\\\"+(3E+1)+(55(1d.5J(W.O))?\"\":\"(?:)\"):H[0])}F{f(H[5]){14.K(3w.7t?3w.7t.7u(H[5],H[0].5J(1)===\"P\"):H[0])}F{f(H[6]){f(1d.5J(W.O)===\"]\"){14.K(H[6]===\"[\"?\"(?!)\":\"[\\\\\\\\S\\\\\\\\s]\");W.O++}F{3D=R.7q(\"&&\"+1d.15(H.G),1K.7x,1K.7v,\"\",{7s:\"\\\\\\\\\"})[0];14.K(H[6]+3D+\"]\");W.O+=3D.v+1}}F{f(H[7]){f(7w&&H[7]===\".\"){14.K(\"[\\\\\\\\S\\\\\\\\s]\")}F{f(6X&&1K.3M.1R(H[7])){3F=2z.Q.2n(1K.3M,1d.15(W.O-1))[0].v;f(!1K.5F.1R(1d.15(W.O-1+3F))){14.K(\"(?:)\")}W.O+=3F-1}F{14.K(H[7])}}}F{14.K(H[0])}}}}}}}3v=11(14.5u(\"\"),2z.C.2n(1Y,/[8y]+/g,\"\"));3v.1u={1c:1d,2j:5q?3u:u};q 3v};R.8B=h(1f,o){3w[1f]=o};11.Y.Q=h(z){l 1b=2z.Q.2n(c,z),1f,i,5C;f(1b){f(7y&&1b.v>1){5C=T 11(\"^\"+c.1c+\"$(?!\\\\\\\\s)\",c.4a());2z.C.2n(1b[0],5C,h(){D(i=1;i<7z.v-2;i++){f(7z[i]===3K){1b[i]=3K}}})}f(c.1u&&c.1u.2j){D(i=1;i<1b.v;i++){1f=c.1u.2j[i-1];f(1f){1b[1f]=1b[i]}}}f(c.3A&&c.O>(1b.G+1b[0].v)){c.O--}}q 1b}})()}11.Y.4a=h(){q(c.3A?\"g\":\"\")+(c.8M?\"i\":\"\")+(c.7D?\"m\":\"\")+(c.3M?\"x\":\"\")+(c.8Y?\"y\":\"\")};11.Y.3C=h(7o){l 4g=T R(c.1c,(7o||\"\")+c.4a());f(c.1u){4g.1u={1c:c.1u.1c,2j:c.1u.2j?c.1u.2j.15(0):u}}q 4g};11.Y.2n=h(90,z){q c.Q(z)};11.Y.8W=h(8U,7p){q c.Q(7p[0])};R.47=h(4f,4e){l 46=\"/\"+4f+\"/\"+(4e||\"\");q R.47[46]||(R.47[46]=T R(4f,4e))};R.3t=h(z){q z.C(/[-[\\\\]{}()*+?.\\\\\\\\^$|,#\\\\s]/g,\"\\\\\\\\$&\")};R.7q=h(z,E,Z,1a,2T){l 2T=2T||{},2X=2T.7s,X=2T.8A,1a=1a||\"\",4s=1a.1i(\"g\")>-1,7E=1a.1i(\"i\")>-1,7L=1a.1i(\"m\")>-1,4t=1a.1i(\"y\")>-1,1a=1a.C(/y/g,\"\"),E=E 3T 11?(E.3A?E:E.3C(\"g\")):T R(E,\"g\"+1a),Z=Z 3T 11?(Z.3A?Z:Z.3C(\"g\")):T R(Z,\"g\"+1a),1D=[],2b=0,1o=0,1p=0,1y=0,27,22,1w,1B,3I,4m;f(2X){f(2X.v>1){3L 8n(\"4C\\'t 4I 8q 8z 7J 3t 7I\")}f(7L){3L 7N(\"4C\\'t 4I 3t 7I 7H 9U 9D 7D 9C\")}3I=R.3t(2X);4m=T 11(\"^(?:\"+3I+\"[\\\\\\\\S\\\\\\\\s]|(?:(?!\"+E.1c+\"|\"+Z.1c+\")[^\"+3I+\"])+)+\",7E?\"i\":\"\")}29(U){E.O=Z.O=1p+(2X?(4m.Q(z.15(1p))||[\"\"])[0].v:0);1w=E.Q(z);1B=Z.Q(z);f(1w&&1B){f(1w.G<=1B.G){1B=u}F{1w=u}}f(1w||1B){1o=(1w||1B).G;1p=(1w?E:Z).O}F{f(!2b){2m}}f(4t&&!2b&&1o>1y){2m}f(1w){f(!2b++){27=1o;22=1p}}F{f(1B&&2b){f(!--2b){f(X){f(X[0]&&27>1y){1D.K([X[0],z.15(1y,27),1y,27])}f(X[1]){1D.K([X[1],z.15(27,22),27,22])}f(X[2]){1D.K([X[2],z.15(22,1o),22,1o])}f(X[3]){1D.K([X[3],z.15(1o,1p),1o,1p])}}F{1D.K(z.15(22,1o))}1y=1p;f(!4s){2m}}}F{E.O=Z.O=0;3L 9q(\"9A 9i 9a 9d 8u\")}}f(1o===1p){1p++}}f(4s&&!4t&&X&&X[0]&&z.v>1y){1D.K([X[0],z.15(1y),1y,z.v])}E.O=Z.O=0;q 1D};',62,728,'||||||||||||this|||if||function||||var||||sh|return||||null|length||||str|div|utils|replace|for|left|else|index|_10f|code|className|push|document|config|false|lastIndex||exec|XRegExp||new|true|getParam|part|vN|prototype|_127||RegExp|create|right|_10d|slice||_c4|pos|css|_128|_117|source|_107|class|name|id|bar|indexOf|_f0|strings|_cb|lines|style|_132|_133|window|_e3|createElement|vars|_x|alert|_137|innerHTML|_134|toolbar|params|_138|tab|_130|_e8|lt|appendChild|continue|highlight|_be|lib|_c7|obj|_ef|doc|split|substr|test|width|_4b|value|span|_3c|nbsp|_108|min|_dc|_98|_136|in|_57|_56|_d7|_135|_8|while|_91|_131|script|text|_b2|_6e|http|execute|wnd|captureNames|_5b|_b5|break|call|gt|_b8|href|toString|_75|height|html|attributes|_d5|_d9|_e4|_fe|size|brushes|_88|unindent|SyntaxHighlighter|_40|_b4|_a2|_7a|_51|m1|body|_dd|case|m2|line|_80|matches|_28|_129|_62|_81|_fa|_12a|_5|_ca|getMatches|concat|_b6|trim|print|_7c|_de|_5e|_d3|_a7|offsetMatches|_5c|_76|_6a|_65|_df|_b0|write|_f6|DIV|spaceWidth|_f3|_4a|_ed|_ec|url|regex|_7d|_2|escape|_10c|_113|_106|_7b|_3|_8e|global|title|addFlags|cc|_112|len|fixInputString|_32|_139|Math|undefined|throw|extended|font|htmlScript|printFrame|_22|_fc|_25|instanceof|_17|_9d|_9e|_18|expandSource|_d1|_8c|viewSource|_1a|top|_4f|_da|key|cache|_10|win|getNativeFlags|_19|_50|focus|_122|_121|_11c|_b|Match|_ba|gm|findBrush|esc|eachLine|_4|_6c|values|_73|_12c|_12f|_6b|color|_89|gi|_bd|_bf|_9|HtmlScript|can|discoveredBrushes|xmlBrush|_f|_5d|_82|supply|_7|_c1|func|_59|_c8|_b7|_e|_d|pre|wrap|_ac|com|_a3|originalCode|from|link|gutter||collapsed|clipboardSwf|_37|popup|isNaN|collapse|_blank|_38|_ae|removeChild|String|contentWindow|hide|_24|ruler|swf|_30|_7e|_ad|item|_101|_2f|regexList|merge|measureSpace|_10b|_ea|_2a|_2c|join|_e9|_2e|px|_2b|_4c|_e5|content|r2|margin|_29|quantifier|_49|guid|toolbarCommands|charAt|highlighters|_27|highlighterId|_a6|close|toolbarItemWidth|_2d|_48|toolbarItemHeight|_35|copyToClipboard|Array|userAgent|_90|_84|navigator|_85|_78|_79|_83|_3f|items|_1e|_16|_13|_12|shockwave|flash|clipboardData|_36|object|version|_15|_14|center|alexgorbatchev|align|head|org|2009|_6|executeCommand|commandName|_a|createButton|copyToClipboardConfirmation|message|w3|event|_4e|screen|switch|attachEvent|_5a|_66|www|_61|noBrush|_47|aboutDialog|insertSpaces|copyStyles|500px|0px|_3e|type|scrollbars|help|stylesheet|rel|_6d|debug|DTD|smart|trimFirstAndLastLines|_10a|_f1|light|tabs|processSmartTabs|findMatches|removeNestedMatches|createRuler|show|processTabs|defaults|important|first|padNumber|parseInt|xhtml1|matchesSortCallback|_e0|_e1|decorate|plain|block|_e6|_e7|processMatches|createDisplayLines|_100|_11b|args|matchRecursive|_93|escapeChar|unicode|get|classRight|_109|classLeft|_105|arguments|clipboard|pP|processUrls|multiline|_12d|links|auto|when|character|one|match|_12e|_fb|TypeError|_d4|syntaxhighlighter|addEvent|defaultAdd|_a1|parentNode|_b9|_bb|_c2|brushNotHtmlScript|_a4|_a8|_b1|toArray|getElementsByTagName|tagName|parseParams|regexLib|_a9|brush|_ab|process|_9a|Highlighter|_cf|toBoolean|_c9|_c6|_d0|_cd|_ce|_d2|bloggerMode|stripBrs|catch|SyntaxError|now|Can|more|xhtml|utf|onclick|delimiters|wasn|your|family|sx|than|valueNames|addPlugin|About|try|charset|_26|400|750|find|_21|location|Type|ignoreCase|menubar|resizable|Content|_20|_1f|param|meta|_11f|Brush|apply|_1b|sticky|Geneva|_11d|_1c|equiv|to|syntax|highlighter|JavaScript|expand|none|3em|contains|view|Alex|unbalanced|2004|Copyright|decoration|0099FF|data|320|4em|bottom|75em|May|large|xx|Error|target|03|Gorbatchev|multiLineCComments|aspScriptTags|scriptScriptTags|phpScriptTags|Arial|multiLineSingleQuotedString|subject|The|flag|the|is|string|typeof|Helvetica|sans|000|fff|1em|singleLinePerlComments|singleLineCComments|copy|doubleQuotedString|serif|multiLineDoubleQuotedString|background|singleQuotedString|using|W3C|random|1000000|round|_f5|_f7|_f2|spaces|alt|transitional|open|highlighted|number|highlighter_|250|shCore|onmouseover|toLowerCase|onmouseout|printing|about|_42|_44|500|_43|nogutter|no|sort|on|getComputedStyle|getPropertyValue|opera|getElementById|1999|offsetWidth|_a5|_99|dtd|1000|xmlns|_8a|textarea|70em|_c5|150|lastIndexOf|aliases|addEventListener|_c0|middot|replaceChild|30em|all|load|Xml|absolute|position|444553540000|codebase|96b8|11cf|ae6d|PUBLIC|download|cabs|constructing|another|pub|macromedia|d27cdb6e|clsid|always|wmode|allowScriptAccess|application|_clipboard|transparent|flashVars|msie|classid|menu|DOCTYPE|option|swflash|cab|TR|error|ok|forHtmlScript|setData|getKeywords|printSource|IFRAME|cssText||_3b|_3a|_39|sgi|amp|Transitional|replaceVar|XHTML|embed|movie|src|configured|command|max|_34|_33|EN|flags'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/model.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<model>\n<namespace fullname=\"plupload\" name=\"plupload\">\n<namespace fullname=\"plupload.runtimes\" name=\"runtimes\">\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.BrowserPlus\" name=\"BrowserPlus\" static=\"true\" summary=\"Yahoo BrowserPlus implementation.\">\n<description>Yahoo BrowserPlus implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the browserplus runtime.\">\n<description>Initializes the browserplus runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Flash\" name=\"Flash\" static=\"true\" summary=\"FlashRuntime implementation.\">\n<description>FlashRuntime implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Gears\" name=\"Gears\" static=\"true\" summary=\"Gears implementation.\">\n<description>Gears implementation. This runtime supports these features: dragdrop, jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Html4\" name=\"Html4\" static=\"true\" summary=\"HTML4 implementation.\">\n<description>HTML4 implementation. This runtime has no special features it uses an form that posts files into an hidden iframe.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Html5\" name=\"Html5\" static=\"true\" summary=\"HMTL5 implementation.\">\n<description>HMTL5 implementation. This runtime supports these features: dragdrop, jpgresize, pngresize.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n<class extends=\"plupload.Runtime\" fullname=\"plupload.runtimes.Silverlight\" name=\"Silverlight\" static=\"true\" summary=\"Silverlight implementation.\">\n<description>Silverlight implementation. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This runtime supports these features: jpgresize, pngresize, chunks.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n<super-classes>\n<class-ref class=\"plupload.Runtime\"/>\n</super-classes>\n</class>\n</namespace>\n<class fullname=\"plupload.Uploader\" name=\"Uploader\" summary=\"Uploader class, an instance of this class will be created for each upload field.\">\n<description>Uploader class, an instance of this class will be created for each upload field.\n</description>\n<example>\n<example>var uploader = new plupload.Uploader({\n    runtimes : 'gears,html5,flash',\n    browse_button : 'button_id'\n});\n\nuploader.bind('Init', function(up) {\n    alert('Supports drag/drop: ' + (!!up.features.dragdrop));\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n    alert('Selected files: ' + files.length);\n});\n\nuploader.bind('QueueChanged', function(up) {\n    alert('Queued files: ' + uploader.files.length);\n});\n\nuploader.init();</example>\n</example>\n<members>\n<method constructor=\"true\" name=\"Uploader\" summary=\"Constructs a new uploader instance.\">\n<description>Constructs a new uploader instance.\n</description>\n<param name=\"settings\" type=\"Object\">\n<description>Initialization settings, to be used by the uploader instance and runtimes.</description>\n</param>\n</method>\n<property name=\"state\" summary=\"Current state of the total uploading progress.\" type=\"Number\">\n<description>Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED.\nThese states are controlled by the stop/start methods. The default value is STOPPED.\n</description>\n</property>\n<property name=\"runtime\" summary=\"Current runtime name.\" type=\"String\">\n<description>Current runtime name.\n</description>\n</property>\n<property name=\"features\" summary=\"Map of features that are available for the uploader runtime.\" type=\"Object\">\n<description>Map of features that are available for the uploader runtime. Features will be filled\nbefore the init event is called, these features can then be used to alter the UI for the end user.\nSome of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.\n</description>\n</property>\n<property name=\"files\" summary=\"Current upload queue, an array of File instances.\" type=\"Array\">\n<description>Current upload queue, an array of File instances.\n</description>\n<see class=\"plupload.File\"/>\n</property>\n<property name=\"settings\" summary=\"Object with name/value settings.\" type=\"Object\">\n<description>Object with name/value settings.\n</description>\n</property>\n<property name=\"total\" summary=\"Total progess information.\" type=\"plupload.QueueProgress\">\n<description>Total progess information. How many files has been uploaded, total percent etc.\n</description>\n</property>\n<property name=\"id\" summary=\"Unique id for the Uploader instance.\" type=\"String\">\n<description>Unique id for the Uploader instance.\n</description>\n</property>\n<method name=\"init\" summary=\"Initializes the Uploader instance and adds internal event listeners.\">\n<description>Initializes the Uploader instance and adds internal event listeners.\n</description>\n</method>\n<method name=\"refresh\" summary=\"Refreshes the upload instance by dispatching out a refresh event to all runtimes.\">\n<description>Refreshes the upload instance by dispatching out a refresh event to all runtimes.\nThis would for example reposition flash/silverlight shims on the page.\n</description>\n</method>\n<method name=\"start\" summary=\"Starts uploading the queued files.\">\n<description>Starts uploading the queued files.\n</description>\n</method>\n<method name=\"stop\" summary=\"Stops the upload of the queued files.\">\n<description>Stops the upload of the queued files.\n</description>\n</method>\n<method name=\"getFile\" summary=\"Returns the specified file object by id.\">\n<description>Returns the specified file object by id.\n</description>\n<param name=\"id\" type=\"String\">\n<description>File id to look for.</description>\n</param>\n<return type=\"plupload.File\">\n<description>File object or undefined if it wasn't found;</description>\n</return>\n</method>\n<method name=\"removeFile\" summary=\"Removes a specific file.\">\n<description>Removes a specific file.\n</description>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to remove from queue.</description>\n</param>\n</method>\n<method name=\"splice\" summary=\"Removes part of the queue and returns the files removed.\">\n<description>Removes part of the queue and returns the files removed. This will also trigger the FilesRemoved and QueueChanged events.\n</description>\n<param name=\"start\" type=\"Number\">\n<description>(Optional) Start index to remove from.</description>\n</param>\n<param name=\"length\" type=\"Number\">\n<description>(Optional) Lengh of items to remove.</description>\n</param>\n<return type=\"Array\">\n<description>Array of files that was removed.</description>\n</return>\n</method>\n<method name=\"trigger\" summary=\"Dispatches the specified event name and it's arguments to all listeners.\">\n<description>Dispatches the specified event name and it's arguments to all listeners.\n\n</description>\n<param name=\"name\" type=\"String\">\n<description>Event name to fire.</description>\n</param>\n<param name=\"Multiple\" type=\"Object..\">\n<description>arguments to pass along to the listener functions.</description>\n</param>\n</method>\n<method name=\"bind\" summary=\"Adds an event listener by name.\">\n<description>Adds an event listener by name.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Event name to listen for.</description>\n</param>\n<param name=\"func\" type=\"function\">\n<description>Function to call ones the event gets fired.</description>\n</param>\n<param name=\"scope\" type=\"Object\">\n<description>Optional scope to execute the specified function in.</description>\n</param>\n</method>\n<method name=\"unbind\" summary=\"Removes the specified event listener.\">\n<description>Removes the specified event listener.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Name of event to remove.</description>\n</param>\n<param name=\"func\" type=\"function\">\n<description>Function to remove from listener.</description>\n</param>\n</method>\n<method name=\"unbindAll\" summary=\"Removes all event listeners.\">\n<description>Removes all event listeners.\n</description>\n</method>\n<method name=\"destroy\" summary=\"Destroys Plupload instance and cleans after itself.\">\n<description>Destroys Plupload instance and cleans after itself.\n</description>\n</method>\n<event name=\"Init\" summary=\"Fires when the current RunTime has been initialized.\">\n<description>Fires when the current RunTime has been initialized.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"PostInit\" summary=\"Fires after the init event incase you need to perform actions there.\">\n<description>Fires after the init event incase you need to perform actions there.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"Refresh\" summary=\"Fires when the silverlight/flash or other shim needs to move.\">\n<description>Fires when the silverlight/flash or other shim needs to move.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"StateChanged\" summary=\"Fires when the overall state is being changed for the upload queue.\">\n<description>Fires when the overall state is being changed for the upload queue.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"UploadFile\" summary=\"Fires when a file is to be uploaded by the runtime.\">\n<description>Fires when a file is to be uploaded by the runtime.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to be uploaded.</description>\n</param>\n</event>\n<event name=\"BeforeUpload\" summary=\"Fires when just before a file is uploaded.\">\n<description>Fires when just before a file is uploaded. This event enables you to override settings\non the uploader instance before the file is uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File to be uploaded.</description>\n</param>\n</event>\n<event name=\"QueueChanged\" summary=\"Fires when the file queue is changed.\">\n<description>Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n<event name=\"UploadProgress\" summary=\"Fires while a file is being uploaded.\">\n<description>Fires while a file is being uploaded. Use this event to update the current file upload progress.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that is currently being uploaded.</description>\n</param>\n</event>\n<event name=\"FilesRemoved\" summary=\"Fires while a file was removed from queue.\">\n<description>Fires while a file was removed from queue.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of files that got removed.</description>\n</param>\n</event>\n<event name=\"FilesAdded\" summary=\"Fires while when the user selects files to upload.\">\n<description>Fires while when the user selects files to upload.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of file objects that was added to queue/selected by the user.</description>\n</param>\n</event>\n<event name=\"FileUploaded\" summary=\"Fires when a file is successfully uploaded.\">\n<description>Fires when a file is successfully uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that was uploaded.</description>\n</param>\n<param name=\"response\" type=\"Object\">\n<description>Object with response properties.</description>\n</param>\n</event>\n<event name=\"ChunkUploaded\" summary=\"Fires when file chunk is uploaded.\">\n<description>Fires when file chunk is uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"file\" type=\"plupload.File\">\n<description>File that the chunk was uploaded for.</description>\n</param>\n<param name=\"response\" type=\"Object\">\n<description>Object with response properties.</description>\n</param>\n</event>\n<event name=\"UploadComplete\" summary=\"Fires when all files in a queue are uploaded.\">\n<description>Fires when all files in a queue are uploaded.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"files\" type=\"Array\">\n<description>Array of file objects that was added to queue/selected by the user.</description>\n</param>\n</event>\n<event name=\"Error\" summary=\"Fires when a error occurs.\">\n<description>Fires when a error occurs.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n<param name=\"error\" type=\"Object\">\n<description>Contains code, message and sometimes file and other details.</description>\n</param>\n</event>\n<event name=\"Destroy\" summary=\"Fires when destroy method is called.\">\n<description>Fires when destroy method is called.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance sending the event.</description>\n</param>\n</event>\n</members>\n</class>\n<class fullname=\"plupload.File\" name=\"File\" summary=\"File instance.\">\n<description>File instance.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Name of the file.</description>\n</param>\n<param name=\"size\" type=\"Number\">\n<description>File size.</description>\n</param>\n<members>\n<method constructor=\"true\" name=\"File\" summary=\"Constructs a new file instance.\">\n<description>Constructs a new file instance.\n</description>\n<param name=\"id\" type=\"String\">\n<description>Unique file id.</description>\n</param>\n<param name=\"name\" type=\"String\">\n<description>File name.</description>\n</param>\n<param name=\"size\" type=\"Number\">\n<description>File size in bytes.</description>\n</param>\n</method>\n<property name=\"id\" summary=\"File id this is a globally unique id for the specific file.\" type=\"String\">\n<description>File id this is a globally unique id for the specific file.\n</description>\n</property>\n<property name=\"name\" summary=\"File name for example &quot;myfile.\" type=\"String\">\n<description>File name for example \"myfile.gif\".\n</description>\n</property>\n<property name=\"size\" summary=\"File size in bytes.\" type=\"Number\">\n<description>File size in bytes.\n</description>\n</property>\n<property name=\"loaded\" summary=\"Number of bytes uploaded of the files total size.\" type=\"Number\">\n<description>Number of bytes uploaded of the files total size.\n</description>\n</property>\n<property name=\"percent\" summary=\"Number of percentage uploaded of the file.\" type=\"Number\">\n<description>Number of percentage uploaded of the file.\n</description>\n</property>\n<property name=\"status\" summary=\"Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\" type=\"Number\">\n<description>Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.\n</description>\n<see class=\"plupload\"/>\n</property>\n</members>\n</class>\n<class fullname=\"plupload.Runtime\" name=\"Runtime\" static=\"true\" summary=\"Runtime class gets implemented by each upload runtime.\">\n<description>Runtime class gets implemented by each upload runtime.\n</description>\n<members>\n<method name=\"init\" static=\"true\" summary=\"Initializes the upload runtime.\">\n<description>Initializes the upload runtime. This method should add necessary items to the DOM and register events needed for operation.\n</description>\n<param name=\"uploader\" type=\"plupload.Uploader\">\n<description>Uploader instance that needs to be initialized.</description>\n</param>\n<param name=\"callback\" type=\"function\">\n<description>Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</description>\n</param>\n</method>\n</members>\n</class>\n<class fullname=\"plupload.QueueProgress\" name=\"QueueProgress\" summary=\"Runtime class gets implemented by each upload runtime.\">\n<description>Runtime class gets implemented by each upload runtime.\n</description>\n<members>\n<method constructor=\"true\" name=\"QueueProgress\" summary=\"Constructs a queue progress.\">\n<description>Constructs a queue progress.\n</description>\n</method>\n<property name=\"size\" summary=\"Total queue file size.\" type=\"Number\">\n<description>Total queue file size.\n</description>\n</property>\n<property name=\"loaded\" summary=\"Total bytes uploaded.\" type=\"Number\">\n<description>Total bytes uploaded.\n</description>\n</property>\n<property name=\"uploaded\" summary=\"Number of files uploaded.\" type=\"Number\">\n<description>Number of files uploaded.\n</description>\n</property>\n<property name=\"failed\" summary=\"Number of files failed to upload.\" type=\"Number\">\n<description>Number of files failed to upload.\n</description>\n</property>\n<property name=\"queued\" summary=\"Number of files yet to be uploaded.\" type=\"Number\">\n<description>Number of files yet to be uploaded.\n</description>\n</property>\n<property name=\"percent\" summary=\"Total percent of the uploaded bytes.\" type=\"Number\">\n<description>Total percent of the uploaded bytes.\n</description>\n</property>\n<property name=\"bytesPerSec\" summary=\"Bytes uploaded per second.\" type=\"Number\">\n<description>Bytes uploaded per second.\n</description>\n</property>\n<method name=\"reset\" summary=\"Resets the progress to it's initial values.\">\n<description>Resets the progress to it's initial values.\n</description>\n</method>\n</members>\n</class>\n</namespace>\n<class fullname=\"plupload\" name=\"plupload\" static=\"true\" summary=\"Plupload class with some global constants and functions.\">\n<description>Plupload class with some global constants and functions.\n</description>\n<example>\n<example>// Encode entities\nconsole.log(plupload.xmlEncode(\"My string &amp;lt;&amp;gt;\"));\n\n// Generate unique id\nconsole.log(plupload.guid());</example>\n</example>\n<members>\n<property final=\"true\" name=\"STOPPED\" static=\"true\" summary=\"Inital state of the queue and also the state ones it's finished all it's uploads.\" type=\"Object\">\n<description>Inital state of the queue and also the state ones it's finished all it's uploads.\n</description>\n</property>\n<property final=\"true\" name=\"STARTED\" static=\"true\" summary=\"Upload process is running\" type=\"Object\">\n<description>Upload process is running\n</description>\n</property>\n<property final=\"true\" name=\"QUEUED\" static=\"true\" summary=\"File is queued for upload\" type=\"Object\">\n<description>File is queued for upload\n</description>\n</property>\n<property final=\"true\" name=\"UPLOADING\" static=\"true\" summary=\"File is being uploaded\" type=\"Object\">\n<description>File is being uploaded\n</description>\n</property>\n<property final=\"true\" name=\"FAILED\" static=\"true\" summary=\"File has failed to be uploaded\" type=\"Object\">\n<description>File has failed to be uploaded\n</description>\n</property>\n<property final=\"true\" name=\"DONE\" static=\"true\" summary=\"File has been uploaded successfully\" type=\"Object\">\n<description>File has been uploaded successfully\n</description>\n</property>\n<property final=\"true\" name=\"GENERIC_ERROR\" static=\"true\" summary=\"Generic error for example if an exception is thrown inside Silverlight.\" type=\"Object\">\n<description>Generic error for example if an exception is thrown inside Silverlight.\n</description>\n</property>\n<property final=\"true\" name=\"HTTP_ERROR\" static=\"true\" summary=\"HTTP transport error.\" type=\"Object\">\n<description>HTTP transport error. For example if the server produces a HTTP status other than 200.\n</description>\n</property>\n<property final=\"true\" name=\"IO_ERROR\" static=\"true\" summary=\"Generic I/O error.\" type=\"Object\">\n<description>Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</description>\n</property>\n<property final=\"true\" name=\"SECURITY_ERROR\" static=\"true\" summary=\"Generic I/O error.\" type=\"Object\">\n<description>Generic I/O error. For exampe if it wasn't possible to open the file stream on local machine.\n</description>\n</property>\n<property final=\"true\" name=\"INIT_ERROR\" static=\"true\" summary=\"Initialization error.\" type=\"Object\">\n<description>Initialization error. Will be triggered if no runtime was initialized.\n</description>\n</property>\n<property final=\"true\" name=\"FILE_SIZE_ERROR\" static=\"true\" summary=\"File size error.\" type=\"Object\">\n<description>File size error. If the user selects a file that is to large it will be blocked and an error of this type will be triggered.\n</description>\n</property>\n<property final=\"true\" name=\"FILE_EXTENSION_ERROR\" static=\"true\" summary=\"File extension error.\" type=\"Object\">\n<description>File extension error. If the user selects a file that isn't valid according to the filters setting.\n</description>\n</property>\n<property final=\"true\" name=\"mimeTypes\" static=\"true\" summary=\"Mime type lookup table.\" type=\"Object\">\n<description>Mime type lookup table.\n</description>\n</property>\n<method name=\"extend\" static=\"true\" summary=\"Extends the specified object with another object.\">\n<description>Extends the specified object with another object.\n</description>\n<param name=\"target\" type=\"Object\">\n<description>Object to extend.</description>\n</param>\n<param name=\"obj\" type=\"Object..\">\n<description>Multiple objects to extend with.</description>\n</param>\n<return type=\"Object\">\n<description>Same as target, the extended object.</description>\n</return>\n</method>\n<method name=\"cleanName\" static=\"true\" summary=\"Cleans the specified name from national characters (diacritics).\">\n<description>Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _.\n</description>\n<param name=\"s\" type=\"String\">\n<description>String to clean up.</description>\n</param>\n<return type=\"String\">\n<description>Cleaned string.</description>\n</return>\n</method>\n<method name=\"addRuntime\" static=\"true\" summary=\"Adds a specific upload runtime like for example flash or gears.\">\n<description>Adds a specific upload runtime like for example flash or gears.\n</description>\n<param name=\"name\" type=\"String\">\n<description>Runtime name for example flash.</description>\n</param>\n<param name=\"obj\" type=\"Object\">\n<description>Object containing init/destroy method.</description>\n</param>\n</method>\n<method name=\"guid\" static=\"true\" summary=\"Generates an unique ID.\">\n<description>Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.\nThe only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages\nto get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.\nIt's more probable for the earth to be hit with an ansteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property\nto an user unique key.\n</description>\n<return type=\"String\">\n<description>Virtually unique id.</description>\n</return>\n</method>\n<method name=\"formatSize\" static=\"true\" summary=\"Formats the specified number as a size string for example 1024 becomes 1 KB.\">\n<description>Formats the specified number as a size string for example 1024 becomes 1 KB.\n</description>\n<param name=\"size\" type=\"Number\">\n<description>Size to format as string.</description>\n</param>\n<return type=\"String\">\n<description>Formatted size string.</description>\n</return>\n</method>\n<method name=\"getPos\" static=\"true\" summary=\"Returns the absolute x, y position of an Element.\">\n<description>Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.\n</description>\n<param name=\"node\" type=\"Element\">\n<description>HTML element or element id to get x, y position from.</description>\n</param>\n<param name=\"root\" type=\"Element\">\n<description>Optional root element to stop calculations at.</description>\n</param>\n<return type=\"object\">\n<description>Absolute position of the specified element object with x, y fields.</description>\n</return>\n</method>\n<method name=\"parseSize\" static=\"true\" summary=\"Parses the specified size string into a byte value.\">\n<description>Parses the specified size string into a byte value. For example 10kb becomes 10240.\n</description>\n<param name=\"size\">\n<type fullname=\"String\"/>\n<type fullname=\"Number\"/>\n<description>String to parse or number to just pass through.</description>\n</param>\n<return type=\"Number\">\n<description>Size in bytes.</description>\n</return>\n</method>\n<method name=\"xmlEncode\" static=\"true\" summary=\"Encodes the specified string.\">\n<description>Encodes the specified string.\n</description>\n<param name=\"s\" type=\"String\">\n<description>String to encode.</description>\n</param>\n<return type=\"String\">\n<description>Encoded string.</description>\n</return>\n</method>\n<method name=\"toArray\" static=\"true\" summary=\"Forces anything into an array.\">\n<description>Forces anything into an array.\n</description>\n<param name=\"obj\" type=\"Object\">\n<description>Object with length field.</description>\n</param>\n<return type=\"Array\">\n<description>Array object containing all items.</description>\n</return>\n</method>\n</members>\n</class>\n</model>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/docs/api/plupload.vsdoc.js",
    "content": "// Namespaces\nplupload = {}\nplupload.runtimes = {}\n\n// Classes\nplupload.runtimes.BrowserPlus = function() {\n\t/// <summary>Yahoo BrowserPlus implementation.</summary>\n}\n\nplupload.runtimes.BrowserPlus.init = function(uploader, callback) {\n\t/// <summary>Initializes the browserplus runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Flash = function() {\n\t/// <summary>FlashRuntime implementation.</summary>\n}\n\nplupload.runtimes.Flash.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Gears = function() {\n\t/// <summary>Gears implementation.</summary>\n}\n\nplupload.runtimes.Gears.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Html4 = function() {\n\t/// <summary>HTML4 implementation.</summary>\n}\n\nplupload.runtimes.Html4.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Html5 = function() {\n\t/// <summary>HMTL5 implementation.</summary>\n}\n\nplupload.runtimes.Html5.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.runtimes.Silverlight = function() {\n\t/// <summary>Silverlight implementation.</summary>\n}\n\nplupload.runtimes.Silverlight.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.Uploader = function(settings) {\n\t/// <summary>Uploader class, an instance of this class will be created for each upload field.</summary>\n\t/// <param name=\"settings\" type=\"Object\">Initialization settings, to be used by the uploader instance and runtimes.</param>\n\t/// <field name=\"state\" type=\"Number\">Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED. These states are controlled by the stop/start methods. The default value is STOPPED.</field>\n\t/// <field name=\"runtime\" type=\"String\">Current runtime name.</field>\n\t/// <field name=\"features\" type=\"Object\">Map of features that are available for the uploader runtime. Features will be filled before the init event is called, these features can then be used to alter the UI for the end user. Some of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.</field>\n\t/// <field name=\"files\" type=\"Array\">Current upload queue, an array of File instances.</field>\n\t/// <field name=\"settings\" type=\"Object\">Object with name/value settings.</field>\n\t/// <field name=\"total\" type=\"plupload.QueueProgress\">Total progess information. How many files has been uploaded, total percent etc.</field>\n\t/// <field name=\"id\" type=\"String\">Unique id for the Uploader instance.</field>\n}\n\nplupload.Uploader.prototype.init = function() {\n\t/// <summary>Initializes the Uploader instance and adds internal event listeners.</summary>\n}\n\nplupload.Uploader.prototype.refresh = function() {\n\t/// <summary>Refreshes the upload instance by dispatching out a refresh event to all runtimes.</summary>\n}\n\nplupload.Uploader.prototype.start = function() {\n\t/// <summary>Starts uploading the queued files.</summary>\n}\n\nplupload.Uploader.prototype.stop = function() {\n\t/// <summary>Stops the upload of the queued files.</summary>\n}\n\nplupload.Uploader.prototype.getFile = function(id) {\n\t/// <summary>Returns the specified file object by id.</summary>\n\t/// <param name=\"id\" type=\"String\">File id to look for.</param>\n\t/// <returns type=\"plupload.File\">File object or undefined if it wasn't found;</returns>\n}\n\nplupload.Uploader.prototype.removeFile = function(file) {\n\t/// <summary>Removes a specific file.</summary>\n\t/// <param name=\"file\" type=\"plupload.File\">File to remove from queue.</param>\n}\n\nplupload.Uploader.prototype.splice = function(start, length) {\n\t/// <summary>Removes part of the queue and returns the files removed.</summary>\n\t/// <param name=\"start\" type=\"Number\" integer=\"true\">(Optional) Start index to remove from.</param>\n\t/// <param name=\"length\" type=\"Number\" integer=\"true\">(Optional) Lengh of items to remove.</param>\n\t/// <returns type=\"Array\">Array of files that was removed.</returns>\n}\n\nplupload.Uploader.prototype.trigger = function(name, Multiple) {\n\t/// <summary>Dispatches the specified event name and it's arguments to all listeners.</summary>\n\t/// <param name=\"name\" type=\"String\">Event name to fire.</param>\n\t/// <param name=\"Multiple\" type=\"Object..\">arguments to pass along to the listener functions.</param>\n}\n\nplupload.Uploader.prototype.bind = function(name, func, scope) {\n\t/// <summary>Adds an event listener by name.</summary>\n\t/// <param name=\"name\" type=\"String\">Event name to listen for.</param>\n\t/// <param name=\"func\" type=\"function\">Function to call ones the event gets fired.</param>\n\t/// <param name=\"scope\" type=\"Object\">Optional scope to execute the specified function in.</param>\n}\n\nplupload.Uploader.prototype.unbind = function(name, func) {\n\t/// <summary>Removes the specified event listener.</summary>\n\t/// <param name=\"name\" type=\"String\">Name of event to remove.</param>\n\t/// <param name=\"func\" type=\"function\">Function to remove from listener.</param>\n}\n\nplupload.Uploader.prototype.unbindAll = function() {\n\t/// <summary>Removes all event listeners.</summary>\n}\n\nplupload.Uploader.prototype.destroy = function() {\n\t/// <summary>Destroys Plupload instance and cleans after itself.</summary>\n}\n\nplupload.File = function(id, name, size) {\n\t/// <summary>File instance.</summary>\n\t/// <param name=\"id\" type=\"String\">Unique file id.</param>\n\t/// <param name=\"name\" type=\"String\">File name.</param>\n\t/// <param name=\"size\" type=\"Number\" integer=\"true\">File size in bytes.</param>\n\t/// <field name=\"id\" type=\"String\">File id this is a globally unique id for the specific file.</field>\n\t/// <field name=\"name\" type=\"String\">File name for example \"myfile.gif\".</field>\n\t/// <field name=\"size\" type=\"Number\">File size in bytes.</field>\n\t/// <field name=\"loaded\" type=\"Number\">Number of bytes uploaded of the files total size.</field>\n\t/// <field name=\"percent\" type=\"Number\">Number of percentage uploaded of the file.</field>\n\t/// <field name=\"status\" type=\"Number\">Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.</field>\n}\n\nplupload.Runtime = function() {\n\t/// <summary>Runtime class gets implemented by each upload runtime.</summary>\n}\n\nplupload.Runtime.init = function(uploader, callback) {\n\t/// <summary>Initializes the upload runtime.</summary>\n\t/// <param name=\"uploader\" type=\"plupload.Uploader\">Uploader instance that needs to be initialized.</param>\n\t/// <param name=\"callback\" type=\"function\">Callback function to execute when the runtime initializes or fails to initialize. If it succeeds an object with a parameter name success will be set to true.</param>\n}\n\nplupload.QueueProgress = function() {\n\t/// <summary>Runtime class gets implemented by each upload runtime.</summary>\n\t/// <field name=\"size\" type=\"Number\">Total queue file size.</field>\n\t/// <field name=\"loaded\" type=\"Number\">Total bytes uploaded.</field>\n\t/// <field name=\"uploaded\" type=\"Number\">Number of files uploaded.</field>\n\t/// <field name=\"failed\" type=\"Number\">Number of files failed to upload.</field>\n\t/// <field name=\"queued\" type=\"Number\">Number of files yet to be uploaded.</field>\n\t/// <field name=\"percent\" type=\"Number\">Total percent of the uploaded bytes.</field>\n\t/// <field name=\"bytesPerSec\" type=\"Number\">Bytes uploaded per second.</field>\n}\n\nplupload.QueueProgress.prototype.reset = function() {\n\t/// <summary>Resets the progress to it's initial values.</summary>\n}\n\n// Namespaces\nplupload.STOPPED = new Object();\nplupload.STARTED = new Object();\nplupload.QUEUED = new Object();\nplupload.UPLOADING = new Object();\nplupload.FAILED = new Object();\nplupload.DONE = new Object();\nplupload.GENERIC_ERROR = new Object();\nplupload.HTTP_ERROR = new Object();\nplupload.IO_ERROR = new Object();\nplupload.SECURITY_ERROR = new Object();\nplupload.INIT_ERROR = new Object();\nplupload.FILE_SIZE_ERROR = new Object();\nplupload.FILE_EXTENSION_ERROR = new Object();\nplupload.mimeTypes = new Object();\nplupload.extend = function(target, obj) {\n\t/// <summary>Extends the specified object with another object.</summary>\n\t/// <param name=\"target\" type=\"Object\">Object to extend.</param>\n\t/// <param name=\"obj\" type=\"Object..\">Multiple objects to extend with.</param>\n\t/// <returns type=\"Object\">Same as target, the extended object.</returns>\n}\n\nplupload.cleanName = function(s) {\n\t/// <summary>Cleans the specified name from national characters (diacritics).</summary>\n\t/// <param name=\"s\" type=\"String\">String to clean up.</param>\n\t/// <returns type=\"String\">Cleaned string.</returns>\n}\n\nplupload.addRuntime = function(name, obj) {\n\t/// <summary>Adds a specific upload runtime like for example flash or gears.</summary>\n\t/// <param name=\"name\" type=\"String\">Runtime name for example flash.</param>\n\t/// <param name=\"obj\" type=\"Object\">Object containing init/destroy method.</param>\n}\n\nplupload.guid = function() {\n\t/// <summary>Generates an unique ID.</summary>\n\t/// <returns type=\"String\">Virtually unique id.</returns>\n}\n\nplupload.formatSize = function(size) {\n\t/// <summary>Formats the specified number as a size string for example 1024 becomes 1 KB.</summary>\n\t/// <param name=\"size\" type=\"Number\" integer=\"true\">Size to format as string.</param>\n\t/// <returns type=\"String\">Formatted size string.</returns>\n}\n\nplupload.getPos = function(node, root) {\n\t/// <summary>Returns the absolute x, y position of an Element.</summary>\n\t/// <param name=\"node\" type=\"Element\" domElement=\"true\">HTML element or element id to get x, y position from.</param>\n\t/// <param name=\"root\" type=\"Element\" domElement=\"true\">Optional root element to stop calculations at.</param>\n\t/// <returns type=\"object\">Absolute position of the specified element object with x, y fields.</returns>\n}\n\nplupload.parseSize = function(size) {\n\t/// <summary>Parses the specified size string into a byte value.</summary>\n\t/// <param name=\"size\" type=\"\">String to parse or number to just pass through.</param>\n\t/// <returns type=\"Number\" integer=\"true\">Size in bytes.</returns>\n}\n\nplupload.xmlEncode = function(s) {\n\t/// <summary>Encodes the specified string.</summary>\n\t/// <param name=\"s\" type=\"String\">String to encode.</param>\n\t/// <returns type=\"String\">Encoded string.</returns>\n}\n\nplupload.toArray = function(obj) {\n\t/// <summary>Forces anything into an array.</summary>\n\t/// <param name=\"obj\" type=\"Object\">Object with length field.</param>\n\t/// <returns type=\"Array\">Array object containing all items.</returns>\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/custom.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n\n<title>Plupload - Custom example</title>\n\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(bg.jpg);\n\t}\n</style>\n\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../js/plupload.html5.js\"></script>\n\n<!-- <script type=\"text/javascript\"  src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script> -->\n\n</head>\n<body>\n\n<h1>Custom example</h1>\n\n<p>Shows you how to use the core plupload API.</p>\n\n<div id=\"container\">\n    <div id=\"filelist\">No runtime found.</div>\n    <br />\n    <a id=\"pickfiles\" href=\"javascript:;\">[Select files]</a> \n    <a id=\"uploadfiles\" href=\"javascript:;\">[Upload files]</a>\n</div>\n\n\n<script type=\"text/javascript\">\n// Custom example logic\nfunction $(id) {\n\treturn document.getElementById(id);\t\n}\n\n\nvar uploader = new plupload.Uploader({\n\truntimes : 'gears,html5,flash,silverlight,browserplus',\n\tbrowse_button : 'pickfiles',\n\tcontainer: 'container',\n\tmax_file_size : '10mb',\n\turl : 'upload.php',\n\tresize : {width : 320, height : 240, quality : 90},\n\tflash_swf_url : '../js/plupload.flash.swf',\n\tsilverlight_xap_url : '../js/plupload.silverlight.xap',\n\tfilters : [\n\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t]\n});\n\nuploader.bind('Init', function(up, params) {\n\t$('filelist').innerHTML = \"<div>Current runtime: \" + params.runtime + \"</div>\";\n});\n\nuploader.bind('FilesAdded', function(up, files) {\n\tfor (var i in files) {\n\t\t$('filelist').innerHTML += '<div id=\"' + files[i].id + '\">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';\n\t}\n});\n\nuploader.bind('UploadProgress', function(up, file) {\n\t$(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + \"%</span>\";\n});\n\n$('uploadfiles').onclick = function() {\n\tuploader.start();\n\treturn false;\n};\n\nuploader.init();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/dump.php",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - Form dump</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(bg.jpg);\n\t}\n</style>\n</head>\n<body>\n\n<h1>Post dump</h1>\n\n<p>Shows the form items posted.</p>\n\n<table>\n\t<tr>\n\t\t<th>Name</th>\n\t\t<th>Value</th>\n\t</tr>\n\t<?php $count = 0; foreach ($_POST as $name => $value) { ?>\n\t<tr class=\"<?php echo $count % 2 == 0 ? 'alt' : ''; ?>\">\n\t\t<td><?php echo htmlentities(stripslashes($name)) ?></td>\n\t\t<td><?php echo nl2br(htmlentities(stripslashes($value))) ?></td>\n\t</tr>\n\t<?php } ?>\n</table>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/events.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<link rel=\"stylesheet\" href=\"../../js/jquery.plupload.queue/css/jquery.plupload.queue.css\" type=\"text/css\" media=\"screen\" />\n<title>Plupload - Events example</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.plupload.queue/jquery.plupload.queue.js\"></script>\n\n</head>\n<body>\n\n<form method=\"post\" action=\"dump.php\">\n\t<h1>Events example</h1>\n\n\t<p>Shows how to bind and use all available events.</p>\n\n\t<h3>Log messages</h3>\n\t<textarea id=\"log\" style=\"width: 100%; height: 150px; font-size: 11px\" spellcheck=\"false\" wrap=\"off\"></textarea>\n\n\t<h3>Queue widget</h3>\n\t<div id=\"uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't support upload.</div>\n\t<a id=\"clear\" href=\"#\">Clear queue</a>\n</form>\n<script type=\"text/javascript\">\n$(function() {\n\tfunction log() {\n\t\tvar str = \"\";\n\n\t\tplupload.each(arguments, function(arg) {\n\t\t\tvar row = \"\";\n\n\t\t\tif (typeof(arg) != \"string\") {\n\t\t\t\tplupload.each(arg, function(value, key) {\n\t\t\t\t\t// Convert items in File objects to human readable form\n\t\t\t\t\tif (arg instanceof plupload.File) {\n\t\t\t\t\t\t// Convert status to human readable\n\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\tcase plupload.QUEUED:\n\t\t\t\t\t\t\t\tvalue = 'QUEUED';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.UPLOADING:\n\t\t\t\t\t\t\t\tvalue = 'UPLOADING';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.FAILED:\n\t\t\t\t\t\t\t\tvalue = 'FAILED';\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase plupload.DONE:\n\t\t\t\t\t\t\t\tvalue = 'DONE';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof(value) != \"function\") {\n\t\t\t\t\t\trow += (row ? ', ': '') + key + '=' + value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tstr += row + \" \";\n\t\t\t} else { \n\t\t\t\tstr += arg + \" \";\n\t\t\t}\n\t\t});\n\n\t\t$('#log').val($('#log').val() + str + \"\\r\\n\");\n\t}\n\n\t$(\"#uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes: 'html5,gears,browserplus,silverlight,flash,html4',\n\t\turl: '../upload.php',\n\t\tmax_file_size: '10mb',\n\t\tchunk_size: '1mb',\n\t\tunique_names: true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize: {width: 320, height: 240, quality: 90},\n\n\t\t// Specify what files to browse for\n\t\tfilters: [\n\t\t\t{title: \"Image files\", extensions: \"jpg,gif,png\"},\n\t\t\t{title: \"Zip files\", extensions: \"zip\"}\n\t\t],\n\n\t\t// Flash/Silverlight paths\n\t\tflash_swf_url: '../../js/plupload.flash.swf',\n\t\tsilverlight_xap_url: '../../js/plupload.silverlight.xap',\n\n\t\t// PreInit events, bound before any internal events\n\t\tpreinit: {\n\t\t\tInit: function(up, info) {\n\t\t\t\tlog('[Init]', 'Info:', info, 'Features:', up.features);\n\t\t\t},\n\n\t\t\tUploadFile: function(up, file) {\n\t\t\t\tlog('[UploadFile]', file);\n\n\t\t\t\t// You can override settings before the file is uploaded\n\t\t\t\t// up.settings.url = 'upload.php?id=' + file.id;\n\t\t\t\t// up.settings.multipart_params = {param1: 'value1', param2: 'value2'};\n\t\t\t}\n\t\t},\n\n\t\t// Post init events, bound after the internal events\n\t\tinit: {\n\t\t\tRefresh: function(up) {\n\t\t\t\t// Called when upload shim is moved\n\t\t\t\tlog('[Refresh]');\n\t\t\t},\n\n\t\t\tStateChanged: function(up) {\n\t\t\t\t// Called when the state of the queue is changed\n\t\t\t\tlog('[StateChanged]', up.state == plupload.STARTED ? \"STARTED\": \"STOPPED\");\n\t\t\t},\n\n\t\t\tQueueChanged: function(up) {\n\t\t\t\t// Called when the files in queue are changed by adding/removing files\n\t\t\t\tlog('[QueueChanged]');\n\t\t\t},\n\n\t\t\tUploadProgress: function(up, file) {\n\t\t\t\t// Called while a file is being uploaded\n\t\t\t\tlog('[UploadProgress]', 'File:', file, \"Total:\", up.total);\n\t\t\t},\n\n\t\t\tFilesAdded: function(up, files) {\n\t\t\t\t// Callced when files are added to queue\n\t\t\t\tlog('[FilesAdded]');\n\n\t\t\t\tplupload.each(files, function(file) {\n\t\t\t\t\tlog('  File:', file);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tFilesRemoved: function(up, files) {\n\t\t\t\t// Called when files where removed from queue\n\t\t\t\tlog('[FilesRemoved]');\n\n\t\t\t\tplupload.each(files, function(file) {\n\t\t\t\t\tlog('  File:', file);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tFileUploaded: function(up, file, info) {\n\t\t\t\t// Called when a file has finished uploading\n\t\t\t\tlog('[FileUploaded] File:', file, \"Info:\", info);\n\t\t\t},\n\n\t\t\tChunkUploaded: function(up, file, info) {\n\t\t\t\t// Called when a file chunk has finished uploading\n\t\t\t\tlog('[ChunkUploaded] File:', file, \"Info:\", info);\n\t\t\t},\n\n\t\t\tError: function(up, args) {\n\t\t\t\t// Called when a error has occured\n\n\t\t\t\t// Handle file specific error and general error\n\t\t\t\tif (args.file) {\n\t\t\t\t\tlog('[error]', args, \"File:\", args.file);\n\t\t\t\t} else {\n\t\t\t\t\tlog('[error]', args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t$('#log').val('');\n\t$('#clear').click(function(e) {\n\t\te.preventDefault();\n\t\t$(\"#uploader\").pluploadQueue().splice();\n\t});\n});\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/jquery_ui_widget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - jQuery UI Widget</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n<link rel=\"stylesheet\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css\" type=\"text/css\" />\n<link rel=\"stylesheet\" href=\"../../js/jquery.ui.plupload/css/jquery.ui.plupload.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.ui.plupload/jquery.ui.plupload.js\"></script>\n\n<!--<script type=\"text/javascript\" src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script>-->\n</head>\n<body>\n\n<h1>jQuery UI Widget</h1>\n\n<p>You can see this example with different themes on the <a href=\"http://plupload.com/example_jquery_ui.php\">www.plupload.com</a> website.</p>\n\n<form  method=\"post\" action=\"dump.php\">\n\t<div id=\"uploader\">\n\t\t<p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>\n\t</div>\n</form>\n<script type=\"text/javascript\">\n// Convert divs to queue widgets when the DOM is ready\n$(function() {\n\t$(\"#uploader\").plupload({\n\t\t// General settings\n\t\truntimes : 'flash,html5,browserplus,silverlight,gears,html4',\n\t\turl : '../upload.php',\n\t\tmax_file_size : '1000mb',\n\t\tmax_file_count: 20, // user can add no more then 20 files at a time\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tmultiple_queues : true,\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\t\t\n\t\t// Rename files by clicking on their titles\n\t\trename: true,\n\t\t\n\t\t// Sort files\n\t\tsortable: true,\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip,avi\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n\n\t// Client side form validation\n\t$('form').submit(function(e) {\n        var uploader = $('#uploader').plupload('getUploader');\n\n        // Files in queue upload them first\n        if (uploader.files.length > 0) {\n            // When all files are uploaded submit form\n            uploader.bind('StateChanged', function() {\n                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {\n                    $('form')[0].submit();\n                }\n            });\n                \n            uploader.start();\n        } else\n            alert('You must at least upload one file.');\n\n        return false;\n    });\n\t \n\n});\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/queue_widget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload - Queue widget example</title>\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n<link rel=\"stylesheet\" href=\"../../js/jquery.plupload.queue/css/jquery.plupload.queue.css\" type=\"text/css\" media=\"screen\" />\n\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://bp.yahooapis.com/2.4.21/browserplus-min.js\"></script>\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.plupload.queue/jquery.plupload.queue.js\"></script>\n\n<!-- <script type=\"text/javascript\"  src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script> -->\n</head>\n<body>\n\n<form method=\"post\" action=\"dump.php\">\n\t<h1>Queue widget example</h1>\n\n\t<p>Shows the jQuery Plupload Queue widget and under different runtimes.</p>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>Flash runtime</h3>\n\t\t<div id=\"flash_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Flash installed.</div>\n\n\t\t<h3>Gears runtime</h3>\n\t\t<div id=\"gears_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Gears installed.</div>\n\t</div>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>Silverlight runtime</h3>\n\t\t<div id=\"silverlight_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have Silverlight installed.</div>\n\n\t\t<h3>HTML 5 runtime</h3>\n\t\t<div id=\"html5_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't support native upload. Try Firefox 3 or Safari 4.</div>\n\t</div>\n\n\t<div style=\"float: left; margin-right: 20px\">\n\t\t<h3>BrowserPlus runtime</h3>\n\t\t<div id=\"browserplus_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have BrowserPlus installed.</div>\n\n\t\t<h3>HTML 4 runtime</h3>\n\t\t<div id=\"html4_uploader\" style=\"width: 450px; height: 330px;\">You browser doesn't have HTML 4 support.</div>\n\t</div>\n\n\t<br style=\"clear: both\" />\n\n\t<input type=\"submit\" value=\"Send\" />\n</form>\n\n<script type=\"text/javascript\">\n$(function() {\n\t// Setup flash version\n\t$(\"#flash_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'flash',\n\t\turl : '../upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf'\n\t});\n\n\t// Setup gears version\n\t$(\"#gears_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'gears',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup silverlight version\n\t$(\"#silverlight_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'silverlight',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90},\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n\n\t// Setup html5 version\n\t$(\"#html5_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'html5',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup browserplus version\n\t$(\"#browserplus_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'browserplus',\n\t\turl : 'upload.php',\n\t\tmax_file_size : '10mb',\n\t\tchunk_size : '1mb',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t],\n\n\t\t// Resize images on clientside if we can\n\t\tresize : {width : 320, height : 240, quality : 90}\n\t});\n\n\t// Setup html4 version\n\t$(\"#html4_uploader\").pluploadQueue({\n\t\t// General settings\n\t\truntimes : 'html4',\n\t\turl : 'upload.php',\n\t\tunique_names : true,\n\t\tfilters : [\n\t\t\t{title : \"Image files\", extensions : \"jpg,gif,png\"},\n\t\t\t{title : \"Zip files\", extensions : \"zip\"}\n\t\t]\n\t});\n});\n</script>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/jquery/s3.php",
    "content": "<?php \n/* \nIn order to upload files to S3 using Flash runtime, one should start by placing crossdomain.xml into the bucket.\ncrossdomain.xml can be as simple as this:\n\n<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">\n<cross-domain-policy>\n<allow-access-from domain=\"*\" secure=\"false\" />\n</cross-domain-policy>\n\nIn our tests SilverLight didn't require anything special and worked with this configuration just fine. It may fail back\nto the same crossdomain.xml as last resort.\n\n!!!Important!!! Plupload UI Widget here, is used only for demo purposes and is not required for uploading to S3.\n*/\n\n// important variables that will be used throughout this example\n$bucket = 'BUCKET';\n\n// these can be found on your Account page, under Security Credentials > Access Keys\n$accessKeyId = 'ACCESS_KEY_ID';\n$secret = 'SECRET_ACCESS_KEY';\n\n\n// hash_hmac — Generate a keyed hash value using the HMAC method \n// (PHP 5 >= 5.1.2, PECL hash >= 1.1)\nif (!function_exists('hash_hmac')) :\n// based on: http://www.php.net/manual/en/function.sha1.php#39492\nfunction hash_hmac($algo, $data, $key, $raw_output = false)\n{\n\t$blocksize = 64;\n    if (strlen($key) > $blocksize)\n        $key = pack('H*', $algo($key));\n    \n\t$key = str_pad($key, $blocksize, chr(0x00));\n    $ipad = str_repeat(chr(0x36), $blocksize);\n    $opad = str_repeat(chr(0x5c), $blocksize);\n    $hmac = pack('H*', $algo(($key^$opad) . pack('H*', $algo(($key^$ipad) . $data))));\n\t\n\treturn $raw_output ? $hmac : bin2hex($hmac);\n}\nendif;\n\n// prepare policy\n$policy = base64_encode(json_encode(array(\n\t// ISO 8601 - date('c'); generates uncompatible date, so better do it manually\n\t'expiration' => date('Y-m-d\\TH:i:s.000\\Z', strtotime('+1 day')),  \n\t'conditions' => array(\n\t\tarray('bucket' => $bucket),\n\t\tarray('acl' => 'public-read'),\n\t\tarray('starts-with', '$key', ''),\n\t\t// for demo purposes we are accepting only images\n\t\tarray('starts-with', '$Content-Type', 'image/'),\n\t\t// \"Some versions of the Adobe Flash Player do not properly handle HTTP responses that have an empty body. \n\t\t// To configure POST to return a response that does not have an empty body, set success_action_status to 201.\n\t\t// When set, Amazon S3 returns an XML document with a 201 status code.\" \n\t\t// http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTFlash.html\n\t\tarray('success_action_status' => '201'),\n\t\t// Plupload internally adds name field, so we need to mention it here\n\t\tarray('starts-with', '$name', ''), \t\n\t\t// One more field to take into account: Filename - gets silently sent by FileReference.upload() in Flash\n\t\t// http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTFlash.html\n\t\tarray('starts-with', '$Filename', ''), \n\t)\n)));\n\n// sign policy\n$signature = base64_encode(hash_hmac('sha1', $policy, $secret, true));\n\n?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" dir=\"ltr\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/>\n<title>Plupload to Amazon S3 Example</title>\n\n<style type=\"text/css\">\n\tbody {\n\t\tfont-family:Verdana, Geneva, sans-serif;\n\t\tfont-size:13px;\n\t\tcolor:#333;\n\t\tbackground:url(../bg.jpg);\n\t}\n</style>\n\n<link rel=\"stylesheet\" href=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css\" type=\"text/css\" />\n<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" type=\"text/javascript\"></script>\n<script src=\" https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js\"></script>\n\n<!-- Load plupload and all it's runtimes and finally the UI widget -->\n<link rel=\"stylesheet\" href=\"../../js/jquery.ui.plupload/css/jquery.ui.plupload.css\" type=\"text/css\" />\n\n<script type=\"text/javascript\" src=\"../../js/plupload.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.gears.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.silverlight.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.flash.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.browserplus.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html4.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/plupload.html5.js\"></script>\n<script type=\"text/javascript\" src=\"../../js/jquery.ui.plupload/jquery.ui.plupload.js\"></script>\n<!--<script type=\"text/javascript\" src=\"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js\"></script>-->\n\n</head>\n<body>\n\n<h1>Plupload to Amazon S3 Example</h1>\n\n<div id=\"uploader\">\n    <p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>\n</div>\n\n<script type=\"text/javascript\">\n// Convert divs to queue widgets when the DOM is ready\n$(function() {\n\t$(\"#uploader\").plupload({\n\t\truntimes : 'flash,silverlight',\n\t\turl : 'http://<?php echo $bucket; ?>.s3.amazonaws.com/',\n\t\tmax_file_size : '10mb',\n\t\t\n\t\tmultipart: true,\n\t\tmultipart_params: {\n\t\t\t'key': '${filename}', // use filename as a key\n\t\t\t'Filename': '${filename}', // adding this to keep consistency across the runtimes\n\t\t\t'acl': 'public-read',\n\t\t\t'Content-Type': 'image/jpeg',\n\t\t\t'success_action_status': '201',\n\t\t\t'AWSAccessKeyId' : '<?php echo $accessKeyId; ?>',\t\t\n\t\t\t'policy': '<?php echo $policy; ?>',\n\t\t\t'signature': '<?php echo $signature; ?>'\n\t\t},\n\t\t\n\t\t// !!!Important!!! \n\t\t// this is not recommended with S3, since it will force Flash runtime into the mode, with no progress indication\n\t\t//resize : {width : 800, height : 600, quality : 60},  // Resize images on clientside, if possible \n\t\t\n\t\t// optional, but better be specified directly\n\t\tfile_data_name: 'file',\n\t\t\n\t\t// re-use widget (not related to S3, but to Plupload UI Widget)\n\t\tmultiple_queues: true,\n\n\t\t// Specify what files to browse for\n\t\tfilters : [\n\t\t\t{title : \"JPEG files\", extensions : \"jpg\"}\n\t\t],\n\n\t\t// Flash settings\n\t\tflash_swf_url : '../../js/plupload.flash.swf',\n\n\t\t// Silverlight settings\n\t\tsilverlight_xap_url : '../../js/plupload.silverlight.xap'\n\t});\n});\n</script>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/examples/upload.php",
    "content": "<?php\n/**\n * upload.php\n *\n * Copyright 2009, Moxiecode Systems AB\n * Released under GPL License.\n *\n * License: http://www.plupload.com/license\n * Contributing: http://www.plupload.com/contributing\n */\n\n// HTTP headers for no cache etc\nheader(\"Expires: Mon, 26 Jul 1997 05:00:00 GMT\");\nheader(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\") . \" GMT\");\nheader(\"Cache-Control: no-store, no-cache, must-revalidate\");\nheader(\"Cache-Control: post-check=0, pre-check=0\", false);\nheader(\"Pragma: no-cache\");\n\n// Settings\n$targetDir = ini_get(\"upload_tmp_dir\") . DIRECTORY_SEPARATOR . \"plupload\";\n//$targetDir = 'uploads';\n\n$cleanupTargetDir = true; // Remove old files\n$maxFileAge = 5 * 3600; // Temp file age in seconds\n\n// 5 minutes execution time\n@set_time_limit(5 * 60);\n\n// Uncomment this one to fake upload time\n// usleep(5000);\n\n// Get parameters\n$chunk = isset($_REQUEST[\"chunk\"]) ? intval($_REQUEST[\"chunk\"]) : 0;\n$chunks = isset($_REQUEST[\"chunks\"]) ? intval($_REQUEST[\"chunks\"]) : 0;\n$fileName = isset($_REQUEST[\"name\"]) ? $_REQUEST[\"name\"] : '';\n\n// Clean the fileName for security reasons\n$fileName = preg_replace('/[^\\w\\._]+/', '_', $fileName);\n\n// Make sure the fileName is unique but only if chunking is disabled\nif ($chunks < 2 && file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {\n\t$ext = strrpos($fileName, '.');\n\t$fileName_a = substr($fileName, 0, $ext);\n\t$fileName_b = substr($fileName, $ext);\n\n\t$count = 1;\n\twhile (file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName_a . '_' . $count . $fileName_b))\n\t\t$count++;\n\n\t$fileName = $fileName_a . '_' . $count . $fileName_b;\n}\n\n$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;\n\n// Create target dir\nif (!file_exists($targetDir))\n\t@mkdir($targetDir);\n\n// Remove old temp files\t\nif ($cleanupTargetDir && is_dir($targetDir) && ($dir = opendir($targetDir))) {\n\twhile (($file = readdir($dir)) !== false) {\n\t\t$tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;\n\n\t\t// Remove temp file if it is older than the max age and is not the current file\n\t\tif (preg_match('/\\.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge) && ($tmpfilePath != \"{$filePath}.part\")) {\n\t\t\t@unlink($tmpfilePath);\n\t\t}\n\t}\n\n\tclosedir($dir);\n} else\n\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 100, \"message\": \"Failed to open temp directory.\"}, \"id\" : \"id\"}');\n\t\n\n// Look for the content type header\nif (isset($_SERVER[\"HTTP_CONTENT_TYPE\"]))\n\t$contentType = $_SERVER[\"HTTP_CONTENT_TYPE\"];\n\nif (isset($_SERVER[\"CONTENT_TYPE\"]))\n\t$contentType = $_SERVER[\"CONTENT_TYPE\"];\n\n// Handle non multipart uploads older WebKit versions didn't support multipart in HTML5\nif (strpos($contentType, \"multipart\") !== false) {\n\tif (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {\n\t\t// Open temp file\n\t\t$out = fopen(\"{$filePath}.part\", $chunk == 0 ? \"wb\" : \"ab\");\n\t\tif ($out) {\n\t\t\t// Read binary input stream and append it to temp file\n\t\t\t$in = fopen($_FILES['file']['tmp_name'], \"rb\");\n\n\t\t\tif ($in) {\n\t\t\t\twhile ($buff = fread($in, 4096))\n\t\t\t\t\tfwrite($out, $buff);\n\t\t\t} else\n\t\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}');\n\t\t\tfclose($in);\n\t\t\tfclose($out);\n\t\t\t@unlink($_FILES['file']['tmp_name']);\n\t\t} else\n\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 102, \"message\": \"Failed to open output stream.\"}, \"id\" : \"id\"}');\n\t} else\n\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 103, \"message\": \"Failed to move uploaded file.\"}, \"id\" : \"id\"}');\n} else {\n\t// Open temp file\n\t$out = fopen(\"{$filePath}.part\", $chunk == 0 ? \"wb\" : \"ab\");\n\tif ($out) {\n\t\t// Read binary input stream and append it to temp file\n\t\t$in = fopen(\"php://input\", \"rb\");\n\n\t\tif ($in) {\n\t\t\twhile ($buff = fread($in, 4096))\n\t\t\t\tfwrite($out, $buff);\n\t\t} else\n\t\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}');\n\n\t\tfclose($in);\n\t\tfclose($out);\n\t} else\n\t\tdie('{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 102, \"message\": \"Failed to open output stream.\"}, \"id\" : \"id\"}');\n}\n\n// Check if file has been uploaded\nif (!$chunks || $chunk == $chunks - 1) {\n\t// Strip the temp .part suffix off \n\trename(\"{$filePath}.part\", $filePath);\n}\n\n\n// Return JSON-RPC response\ndie('{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}');\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/cs.js",
    "content": "// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Vyberte soubory',\n\t'Add files to the upload queue and click the start button.' : 'Přidejte soubory do fronty a pak spusťte nahrávání.',\n\t'Filename' : 'Název souboru',\n\t'Status' : 'Status',\n\t'Size' : 'Velikost',\n\t'Add Files' : 'Přidat soubory',\n\t'Stop current upload' : 'Zastavit nahrávání',\n\t'Start uploading queue' : 'Spustit frontu nahrávání',\n\t'Drag files here.' : 'Sem přetáhněte soubory.',\n\t'Start Upload': 'Spustit nahrávání',\n\t'Uploaded %d/%d files': 'Nahráno %d/%d souborů'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/da.js",
    "content": "// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Vælg filer',\n\t'Add files to the upload queue and click the start button.' : 'Tilføj filer til køen, og tryk på start.',\n\t'Filename' : 'Filnavn',\n\t'Status' : 'Status',\n\t'Size' : 'Størrelse',\n\t'Add files' : 'Tilføj filer',\n\t'Stop current upload' : 'Stop upload',\n\t'Start uploading queue' : 'Start upload',\n\t'Drag files here.' : 'Træk filer her.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/de.js",
    "content": "// German\nplupload.addI18n({\n    'Select files' : 'Dateien hochladen',\n    'Add files to the upload queue and click the start button.' : 'Dateien hinzuf&uuml;gen und auf \\'Hochladen\\' klicken.',\n    'Filename' : 'Dateiname',\n    'Status' : 'Status',\n    'Size' : 'Gr&ouml;&szlig;e',\n    'Add files' : 'Dateien', // hinzuf&uuml;gen',\n    'Stop current upload' : 'Aktuelles Hochladen stoppen',\n    'Start uploading queue' : 'Hochladen starten',\n    'Uploaded %d/%d files': '%d/%d Dateien sind hochgeladen',\n    'N/A' : 'Nicht verf&uuml;gbar',\n    'Drag files here.' : 'Ziehen Sie die Dateien hier hin',\n    'File extension error.': 'Fehler bei Dateiendung',\n    'File size error.': 'Fehler bei Dateigr&ouml;ße',\n    'Init error.': 'Initialisierungsfehler',\n    'HTTP Error.': 'HTTP-Fehler',\n    'Security error.': 'Sicherheitsfehler',\n    'Generic error.': 'Typischer Fehler',\n    'IO error.': 'Ein/Ausgabe-Fehler',\n    'Stop Upload': 'Hochladen stoppen',\n    'Start upload': 'Hochladen',\n    '%d files queued': '%d Dateien in der Warteschlange'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/el.js",
    "content": "// Greek\nplupload.addI18n({\n    'Select files' : 'Επιλέξτε Αρχεία',\n    'Add files to the upload queue and click the start button.' : 'Προσθήκη αρχείων στην ουρά μεταφόρτωσης',\n    'Filename' : 'Όνομα αρχείου',\n    'Status' : 'Κατάσταση',\n    'Size' : 'Μέγεθος',\n    'Add Files' : 'Προσθέστε αρχεία',\n    'Stop current upload' : 'Διακοπή τρέχουσας μεταφόρτωσης',\n    'Start uploading queue' : 'Εκκίνηση μεταφόρτωσης ουράς αρχείων',\n    'Drag files here.' : 'Σύρετε αρχεία εδώ',\n    'Start Upload': 'Εκκίνηση μεταφόρτωσης',\n    'Uploaded %d/%d files': 'Ανέβηκαν %d/%d αρχεία'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/es.js",
    "content": "// Spanish\nplupload.addI18n({\n\t'Select files' : 'Elija archivos:',\n\t'Add files to the upload queue and click the start button.' : 'Agregue archivos a la cola de subida y haga click en el boton de iniciar.',\n\t'Filename' : 'Nombre de archivo',\n\t'Status' : 'Estado',\n\t'Size' : 'Tama&ntilde;o',\n\t'Add files' : 'Agregue archivos',\n\t'Stop current upload' : 'Detener subida actual',\n\t'Start uploading queue' : 'Iniciar subida de cola',\n\t'Uploaded %d/%d files': 'Subidos %d/%d archivos',\n\t'N/A' : 'No disponible',\n\t'Drag files here.' : 'Arrastre archivos aqu&iacute;',\n\t'File extension error.': 'Error de extensi&oacute;n de archivo.',\n\t'File size error.': 'Error de tama&ntilde;o de archivo.',\n\t'Init error.': 'Error de inicializaci&oacute;n.',\n\t'HTTP Error.': 'Error de HTTP.',\n\t'Security error.': 'Error de seguridad.',\n\t'Generic error.': 'Error gen&eacute;rico.',\n\t'IO error.': 'Error de entrada/salida.',\n\t'Stop Upload': 'Detener Subida.',\n\t'Add Files': 'Agregar Archivos',\n\t'Start Upload': 'Comenzar Subida.',\n\t'%d files queued': '%d archivos en cola.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/et.js",
    "content": "// Estonian translation, et.js\nplupload.addI18n({\n\t'Select files' : 'Vali faile',\n\t'Add files to the upload queue and click the start button.' : 'Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.',\n\t'Filename' : 'Failinimi',\n\t'Status' : 'Olek',\n\t'Size' : 'Suurus',\n\t'Add files' : 'Lisa faile',\n\t'Stop current upload' : 'Praeguse üleslaadimise peatamine',\n\t'Start uploading queue' : 'Järjekorras ootavate failide üleslaadimise alustamine',\n\t'Drag files here.' : 'Lohista failid siia.',\n\t'Start upload' : 'Alusta üleslaadimist',\n\t'Uploaded %d/%d files': 'Üles laaditud %d/%d',\n\t'Stop upload': 'Peata üleslaadimine',\n\t'Start upload': 'Alusta üleslaadimist',\n\t'%d files queued': 'Järjekorras on %d faili',\n\t'File: %s': 'Fail: %s',\n\t'Close': 'Sulge',\n\t'Using runtime: ': 'Kasutatakse varianti: ',\n\t'File: %f, size: %s, max file size: %m': 'Fail: %f, suurus: %s, suurim failisuurus: %m',\n\t'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.',\n\t'Upload URL might be wrong or doesn\\'t exist': 'Üleslaadimise URL võib olla vale või seda pole',\n\t'Error: File too large: ': 'Viga: fail on liiga suur: ',\n\t'Error: Invalid file extension: ': 'Viga: sobimatu faililaiend: ',\n\t'File extension error.': 'Faililaiendi viga.',\n\t'File size error.': 'Failisuuruse viga.',\n\t'File count error.': 'Failide arvu viga.',\n\t'Init error.': 'Lähtestamise viga.',\n\t'HTTP Error.': 'HTTP ühenduse viga.',\n\t'Security error.': 'Turvaviga.',\n\t'Generic error.': 'Üldine viga.',\n\t'IO error.': 'S/V (I/O) viga.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fa.js",
    "content": "// Persian\nplupload.addI18n({\n   'Select files' : 'انتخاب فایل',\n   'Add files to the upload queue and click the start button.' : 'اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.',\n   'Filename' : 'نام فایل',\n   'Status' : 'وضعیت',\n   'Size' : 'سایز',\n   'Add Files' : 'افزودن فایل',\n   'Stop Upload' : 'توقف انتقال',\n   'Start Upload' : 'شروع انتقال',\n   'Add files' : 'افزودن فایل',\n   'Add files.' : 'افزودن فایل',\n   'Stop current upload' : 'توقف انتقال جاری',\n   'Start uploading queue' : 'شروع صف انتقال',\n   'Stop upload' : 'توقف  انتقال',\n   'Start upload' : 'شروع انتقال',\n   'Uploaded %d/%d files': 'منتقل شد %d/%d از فایلها',\n   'N/A' : 'N/A',\n   'Drag files here.' : 'بکشید فایل ها رو به اینجا',\n   'File extension error.': 'خطا پیشوند فایل',\n   'File size error.': 'خطای سایز فایل',\n   'File count error.': 'خطای تعداد فایل',\n   'Init error.': 'خطا در استارت اسکریپت',\n   'HTTP Error.': 'HTTP خطای',\n   'Security error.': 'خطای امنیتی',\n   'Generic error.': 'خطای عمومی',\n   'IO error.': 'IO خطای',\n   'File: %s': ' فایل ها : %s',\n   'Close': 'بستن',\n   '%d files queued': '%d فایل در صف',\n   'Using runtime: ': 'استفاده میکنید از : ',\n   'File: %f, size: %s, max file size: %m': فایل: %f, سایز: %s, بزرگترین سایز فایل: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'عنصر بارگذار فقط %d فایل رو در یک زمان  می پذیرد. سایر فایل ها مجرد از این موضوع هستند.',\n   'Upload URL might be wrong or doesn\\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد',\n   'Error: File too large: ': 'خطا: فایل حجیم است :: ',\n   'Error: Invalid file extension: ': 'خطا پسوند فایل معتبر نمی باشد : '\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fi.js",
    "content": "// .fi file like language pack\nplupload.addI18n({\n\t'Select files' : 'Valitse tiedostoja',\n\t'Add files to the upload queue and click the start button.' : 'Lisää tiedostoja latausjonoon ja klikkaa aloita-nappia.',\n\t'Filename' : 'Tiedostonimi',\n\t'Status' : 'Tila',\n\t'Size' : 'Koko',\n\t'Add files' : 'Lisää tiedostoja',\n\t'Stop current upload' : 'Pysäytä nykyinen lataus',\n\t'Start uploading queue' : 'Aloita jonon lataus',\n\t'Drag files here.' : 'Raahaa tiedostot tänne.',\n\t'Start upload' : 'Aloita lataus',\n\t'Uploaded %d/%d files': 'Ladattu %d/%d tiedostoa',\n\t'Stop upload': 'Pysäytä lataus',\n\t'Start upload': 'Aloita lataus',\n\t'%d files queued': '%d tiedostoa jonossa',\n\t'File: %s': 'Tiedosto: %s',\n\t'Close': 'Sulje',\n\t'Using runtime: ': 'Käytetään ajonaikaista: ',\n\t'File: %f, size: %s, max file size: %m': 'Tiedosto: %f, koko: %s, maksimi tiedostokoko: %m',\n\t'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Latauselementti sallii ladata vain %d tiedosto(a) kerrallaan. Ylimääräiset tiedostot ohitettiin.',\n\t'Upload URL might be wrong or doesn\\'t exist': 'Lataus URL saattaa olla väärin tai ei ole olemassa',\n\t'Error: File too large: ': 'Virhe: Tiedosto liian suuri: ',\n\t'Error: Invalid file extension: ': 'Virhe: Kelpaamaton tiedostopääte: ',\n\t'File extension error.': 'Tiedostopäätevirhe.',\n\t'File size error.': 'Tiedostokokovirhe.',\n\t'File count error.': 'Tiedostolaskentavirhe.',\n\t'Init error.': 'Init virhe.',\n\t'HTTP Error.': 'HTTP virhe.',\n\t'Security error.': 'Tietoturvavirhe.',\n\t'Generic error.': 'Yleinen virhe.',\n\t'IO error.': 'I/O virhe.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr-ca.js",
    "content": "// French-Canadian\nplupload.addI18n({\n    'Select files' : 'Sélectionnez les fichiers',\n    'Add files to the upload queue and click the start button.' : 'Ajoutez des fichiers à la file d\\'attente et appuyez sur le bouton démarrer.',\n    'Filename' : 'Nom du fichier',\n    'Status' : 'Statut',\n    'Size' : 'Taille',\n    'Add files' : 'Ajouter Fichiers',\n    'Stop current upload' : 'Arrêter le téléversement actuel',\n    'Start uploading queue' : 'Démarrer le téléversement',\n    'Uploaded %d/%d files': '%d/%d fichiers envoyés',\n    'N/A' : 'Non applicable',\n    'Drag files here.' : 'Glisser-déposer les fichiers ici',\n    'File extension error.': 'Erreur d\\'extension de fichier',\n    'File size error.': 'Erreur de taille de fichier',\n    'Init error.': 'Erreur d\\'initialisation',\n    'HTTP Error.': 'Erreur HTTP',\n    'Security error.': 'Erreur de sécurité',\n    'Generic error.': 'Erreur commune',\n    'IO error.': 'Erreur E/S',\n    'Stop Upload': 'Arrêter le téléversement',\n    'Add Files': 'Ajouter des fichiers',\n    'Start upload': 'Démarrer le téléversement',\n    '%d files queued': '%d fichiers en attente',\n    'File: %s':'Fichier: %s',\n    'Close':'Fermer',\n    'Using runtime:':'Moteur logiciel:',\n    'File: %f, size: %s, max file size: %m':'Fichier: %f, poids: %s, poids maximal: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.':'La file accepte %d fichier(s) à la fois. Les fichiers en trop sont ignorés',\n    'Upload URL might be wrong or doesn\\'t exist':'L\\'URL de téléversement est erroné ou inexistant',\n    'Error: File to large: ':'Fichier trop volumineux: ',\n    'Error: Invalid file extension: ':'Extension de fichier invalide: ',\n    'File size error.':'Erreur de taile de fichier',\n    'File count error.':'Erreur de décompte des fichiers'    \n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/fr.js",
    "content": "// French\nplupload.addI18n({\n    'Select files' : 'Sélectionnez les fichiers',\n    'Add files to the upload queue and click the start button.' : 'Ajoutez des fichiers à la file et appuyez sur le bouton démarrer.',\n    'Filename' : 'Nom de fichier',\n    'Status' : 'Status',\n    'Size' : 'Taille',\n    'Add files' : 'Ajouter Fichiers',\n    'Stop current upload' : 'Arrêter l\\'envoi en cours',\n    'Start uploading queue' : 'Démarrer l\\'envoi',\n    'Uploaded %d/%d files': '%d/%d fichiers envoyés',\n    'N/A' : 'Non applicable',\n    'Drag files here.' : 'Déposer les fichiers ici.',\n    'File extension error.': 'Erreur extension fichier',\n    'File size error.': 'Erreur taille fichier.',\n    'Init error.': 'Erreur d\\'initialisation.',\n    'HTTP Error.': 'Erreur HTTP.',\n    'Security error.': 'Erreur de sécurité.',\n    'Generic error.': 'Erreur générique.',\n    'IO error.': 'Erreur E/S.',\n    'Stop Upload': 'Arrêter les envois.',\n    'Add Files': 'Ajouter des fichiers',\n    'Start Upload': 'Démarrer les envois.',\n    '%d files queued': '%d fichiers en attente.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hr.js",
    "content": "// Croatian\nplupload.addI18n({\n    'Select files': 'Izaberite datoteke:',\n    'Add files to the upload queue and click the start button.': 'Dodajte datoteke u listu i kliknite Upload.',\n    'Filename': 'Ime datoteke',\n    'Status': 'Status',\n    'Size': 'Veličina',\n    'Add files': 'Dodajte datoteke',\n    'Stop current upload': 'Zaustavi trenutan upload',\n    'Start uploading queue': 'Pokreni Upload',\n    'Uploaded %d/%d files': 'Uploadano %d/%d datoteka',\n    'N/A': 'N/A',\n    'Drag files here.': 'Dovucite datoteke ovdje',\n    'File extension error.': 'Greška ekstenzije datoteke.',\n    'File size error.': 'Greška veličine datoteke.',\n    'Init error.': 'Greška inicijalizacije.',\n    'HTTP Error.': 'HTTP greška.',\n    'Security error.': 'Sigurnosna greška.',\n    'Generic error.': 'Generička greška.',\n    'IO error.': 'I/O greška.',\n    'Stop Upload': 'Zaustavi upload.',\n    'Add Files': 'Dodaj datoteke',\n    'Start Upload': 'Pokreni upload.',\n    '%d files queued': '%d datoteka na čekanju.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/hu.js",
    "content": "// Hungarian\nplupload.addI18n({\n    'Select files' : 'Fájlok kiválasztása',\n    'Add files to the upload queue and click the start button.' : 'Válaszd ki a fájlokat, majd kattints az Indítás gombra.',\n    'Filename' : 'Fájlnév',\n    'Status' : 'Állapot',\n    'Size' : 'Méret',\n    'Add files' : 'Hozzáadás',\n    'Stop current upload' : 'Jelenlegi feltöltés megszakítása',\n    'Start uploading queue' : 'Várakozási sor feltöltésének indítása',\n    'Uploaded %d/%d files': 'Feltöltött fájlok: %d/%d',\n    'N/A': 'Nem elérhető',\n    'Drag files here.' : 'Húzd ide a fájlokat.',\n    'Stop upload': 'Feltöltés megszakítása',\n    'Start upload': 'Indítás',\n    '%d files queued': '%d fájl sorbaállítva',\n    'File: %s': 'Fájl: %s',\n    'Close': 'Bezárás',\n    'Using runtime: ': 'Használt runtime: ',\n    'File: %f, size: %s, max file size: %m': 'Fájl: %f, méret: %s, maximális fájlméret: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'A feltöltés egyszerre csak %d fájlt fogad el, a többi fájl nem lesz feltöltve.',\n    'Upload URL might be wrong or doesn\\'t exist': 'A megadott URL hibás vagy nem létezik',\n    'Error: File too large: ': 'Hiba: A fájl túl nagy: ',\n    'Error: Invalid file extension: ': 'Hiba: Érvénytelen fájlkiterjesztés: ',\n    'File extension error.': 'Hibás fájlkiterjesztés.',\n    'File size error.': 'Hibás fájlméret.',\n    'File count error.': 'A fájlok számával kapcsolatos hiba.',\n    'Init error.': 'Init hiba.',\n    'HTTP Error.': 'HTTP hiba.',\n    'Security error.': 'Biztonsági hiba.',\n    'Generic error.': 'Általános hiba.',\n    'IO error.': 'I/O hiba.'\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/it.js",
    "content": "// Italian\nplupload.addI18n({\n    'Select files' : 'Seleziona i files',\n    'Add files to the upload queue and click the start button.' : 'Aggiungi i file alla coda di caricamento e clicca il pulsante di avvio.',\n    'Filename' : 'Nome file',\n    'Status' : 'Stato',\n    'Size' : 'Dimensione',\n    'Add Files' : 'Aggiungi file',\n    'Stop current upload' : 'Interrompi il caricamento',\n    'Start uploading queue' : 'Avvia il caricamento',\n    'Uploaded %d/%d files': 'Caricati %d/%d file',\n    'N/A' : 'N/D',\n    'Drag files here.' : 'Trascina i file qui.',\n    'File extension error.': 'Errore estensione file.',\n    'File size error.': 'Errore dimensione file.',\n    'Init error.': 'Errore inizializzazione.',\n    'HTTP Error.': 'Errore HTTP.',\n    'Security error.': 'Errore sicurezza.',\n    'Generic error.': 'Errore generico.',\n    'IO error.': 'Errore IO.',\n\t'Stop Upload': 'Ferma Upload',\n\t'Start Upload': 'Inizia Upload',\n\t'%d files queued': '%d file in lista'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ja.js",
    "content": "// Japanese\nplupload.addI18n({\n   'Select files' : 'ファイル選択',\n   'Add files to the upload queue and click the start button.' : 'ファイルをアップロードキューに追加してスタートボタンをクリックしてください',\n   'Filename' : 'ファイル名',\n   'Status' : 'ステータス',\n   'Size' : 'サイズ',\n   'Add Files' : 'ファイルを追加',\n   'Stop Upload' : 'アップロード停止',\n   'Start Upload' : 'アップロード',\n   'Add files' : 'ファイルを追加',\n   'Add files.' : 'ファイルを追加',\n   'Stop current upload' : '現在のアップロードを停止',\n   'Start uploading queue' : 'アップロード',\n   'Stop upload' : 'アップロード停止',\n   'Start upload' : 'アップロード',\n   'Uploaded %d/%d files': 'アップロード中 %d/%d ファイル',\n   'N/A' : 'N/A',\n   'Drag files here.' : 'ここにファイルをドラッグ',\n   'File extension error.': 'ファイル拡張子エラー',\n   'File size error.': 'ファイルサイズエラー',\n   'File count error.': 'ファイル数エラー',\n   'Init error.': 'イニシャライズエラー',\n   'HTTP Error.': 'HTTP エラー',\n   'Security error.': 'セキュリティエラー',\n   'Generic error.': 'エラー',\n   'IO error.': 'IO エラー',\n   'File: %s': 'ファイル: %s',\n   'Close': '閉じる',\n   '%d files queued': '%d ファイルが追加されました',\n   'Using runtime: ': 'モード: ',\n   'File: %f, size: %s, max file size: %m': 'ファイル: %f, サイズ: %s, 最大ファイルサイズ: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'アップロード可能なファイル数は %d です。余分なファイルは削除されました',\n   'Upload URL might be wrong or doesn\\'t exist': 'アップロード先の URL が存在しません',\n   'Error: File too large: ': 'エラー: サイズが大きすぎます: ',\n   'Error: Invalid file extension: ': 'エラー: 拡張子が許可されていません: '\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ko.js",
    "content": "// Republic of Korea\nplupload.addI18n({\n   'Select files' : '파일 선택',\n   'Add files to the upload queue and click the start button.' : '파일을 업로드 큐에 추가하여 시작 버튼을 클릭하십시오.',\n   'Filename' : '파일 이름',\n   'Status' : '상태',\n   'Size' : '크기',\n   'Add Files' : '파일 추가',\n   'Stop Upload': '업로드 중지',\n   'Start Upload': '업로드',\n   'Add files': '파일 추가',\n   'Stop current upload': '현재 업로드를 정지',\n   'Start uploading queue': '업로드',\n   'Stop upload': '업로드 중지',\n   'Start upload': '업로드',\n   'Uploaded % d / % d files': '업로드 중 % d / % d 파일',\n   'N / A': 'N / A',\n   'Drag files here': '여기에 파일을 드래그',\n   'File extension error': '파일 확장자 오류',\n   'File size error': '파일 크기 오류',\n   'File count error': '이미지 : 오류',\n   'Init error': '초기화 오류',\n   'HTTP Error': 'HTTP 오류',\n   'Security error': '보안 오류',\n   'Generic error': '오류',\n   'IO error': 'IO 오류',\n   'File : % s': '파일 % s',\n   'Close': '닫기',\n   '% d files queued': '% d 파일이 추가되었습니다',\n   'Using runtime :': '모드',\n   'File : % f, size : % s, max file size : % m': '파일 : % f, 크기 : % s, 최대 파일 크기 : % m',\n   'Upload element accepts only % d file (s) at a time. Extra files were stripped': '업로드 가능한 파일의 수는 % d입니다. 불필요한 파일은 삭제되었습니다 ',\n   'Upload URL might be wrong or doesn \\'t exist ':'업로드할 URL이 존재하지 않습니다 ',\n   'Error : File too large :': '오류 : 크기가 너무 큽니다',\n   'Error : Invalid file extension :': '오류 : 확장자가 허용되지 않습니다 :'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/lv.js",
    "content": "// .lv file like language pack\nplupload.addI18n({\n    'Select files' : 'Izvēlieties failus',\n    'Add files to the upload queue and click the start button.' : 'Pieveinojiet failus rindai un klikšķiniet uz \"Sākt augšupielādi\" pogas.',\n    'Filename' : 'Faila nosaukums',\n    'Status' : 'Statuss',\n    'Size' : 'Izmērs',\n    'Add files' : 'Pievienot failus',\n    'Stop current upload' : 'Apturēt pašreizējo augšupielādi',\n    'Start uploading queue' : 'Sākt augšupielādi',\n    'Drag files here.' : 'Ievelciet failus šeit',\n    'Start upload' : 'Sākt augšupielādi',\n    'Uploaded %d/%d files': 'Augšupielādēti %d/%d faili',\n    'Stop upload': 'Pārtraukt augšupielādi',\n    'Start upload': 'Sākt augšupielādi',\n    '%d files queued': '%d faili pievienoti rindai',\n    'File: %s': 'Fails: %s',\n    'Close': 'Aizvērt',\n    'Using runtime: ': 'Lieto saskarni: ',\n    'File: %f, size: %s, max file size: %m': 'Fails: %f, izmērs: %s, maksimālais faila izmērs: %m',\n    'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Iespējams ielādēt tikai %d failus vienā reizē. Atlikušie faili netika pievienoti',\n    'Upload URL might be wrong or doesn\\'t exist': 'Augšupielādes URL varētu būt nepareizs vai neeksistē',\n    'Error: File too large: ': 'Kļūda: Fails pārāk liels: ',\n    'Error: Invalid file extension: ': 'Kļūda: Nekorekts faila paplašinājums:',\n    'File extension error.': 'Faila paplašinājuma kļūda.',\n    'File size error.': 'Faila izmēra kļūda.',\n    'File count error.': 'Failu skaita kļūda',\n    'Init error.': 'Inicializācijas kļūda.',\n    'HTTP Error.': 'HTTP kļūda.',\n    'Security error.': 'Drošības kļūda.',\n    'Generic error.': 'Vispārēja rakstura kļūda.',\n    'IO error.': 'Ievades/Izvades kļūda.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/nl.js",
    "content": "// Dutch\nplupload.addI18n({\n   'Select files' : 'Selecteer bestand(en):',\n   'Add files to the upload queue and click the start button.' : 'Voeg bestanden toe aan de wachtrij en druk op \\'Start\\'.',\n   'Filename' : 'Bestandsnaam',\n   'Status' : 'Status',\n   'Size' : 'Grootte',\n   'Add files' : 'Voeg bestanden toe',\n   'Stop current upload' : 'Stop upload',\n   'Start uploading queue' : 'Start upload',\n   'Uploaded %d/%d files': '%d/%d bestanden ge-upload',\n   'N/A' : 'Niet beschikbaar',\n   'Drag files here.' : 'Sleep bestanden hierheen.',\n   'File extension error.': 'Ongeldig bestandstype.',\n   'File size error.': 'Bestandsgrootte Error.',\n   'Init error.': 'Initialisatie error.',\n   'HTTP Error.': 'HTTP Error.',\n   'Security error.': 'Beveiliging error.',\n   'Generic error.': 'Onbekende error.',\n   'IO error.': 'IO error.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pl.js",
    "content": "plupload.addI18n({\n'Select files' : 'Wybierz pliki:',\n'Add files to the upload queue and click the start button.' : 'Dodaj pliki i kliknij \\'Rozpocznij transfer\\'.',\n'Filename' : 'Nazwa pliku',\n'Status' : 'Status',\n'Size' : 'Rozmiar',\n'Add files' : 'Dodaj pliki',\n'Stop current upload' : 'Przerwij aktualny transfer',\n'Start uploading queue' : 'Rozpocznij wysyłanie',\n'Uploaded %d/%d files': 'Wysłano %d/%d plików',\n'N/A' : 'Nie dostępne',\n'Drag files here.' : 'Przeciągnij tu pliki',\n'File extension error.': 'Nieobsługiwany format pliku.',\n'File size error.': 'Plik jest zbyt duży.',\n'Init error.': 'Błąd inicjalizacji.',\n'HTTP Error.': 'Błąd HTTP.',\n'Security error.': 'Błąd bezpieczeństwa.',\n'Generic error.': 'Błąd ogólny.',\n'IO error.': 'Błąd IO.',\n'Stop Upload': 'Przerwij transfer.',\n'Add Files': 'Dodaj pliki',\n'Start upload': 'Rozpocznij transfer.',\n'%d files queued': '%d plików w kolejce.'\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/pt-br.js",
    "content": "// Brazilian Portuguese\nplupload.addI18n({\n   'Select files' : 'Escolha os arquivos',\n   'Add files to the upload queue and click the start button.' : 'Adicione os arquivos abaixo e clique no botão \"Iniciar o envio\".',\n   'Filename' : 'Nome do arquivo',\n   'Status' : 'Status',\n   'Size' : 'Tamanho',\n   'Add Files' : 'Adicionar arquivo(s)',\n   'Stop Upload' : 'Parar o envio',\n   'Start Upload' : 'Iniciar o envio',\n   'Add files' : 'Adicionar arquivo(s)',\n   'Add files.' : 'Adicionar arquivo(s)',\n   'Stop upload' : 'Parar o envio',\n   'Start upload' : 'Iniciar o envio',\n   'Uploaded %d/%d files': 'Enviado(s) %d/%d arquivo(s)',\n   'N/A' : 'N/D',\n   'Drag files here.' : 'Arraste os arquivos pra cá',\n   'File extension error.': 'Tipo de arquivo não permitido.',\n   'File size error.': 'Tamanho de arquivo não permitido.',\n   'File count error.': 'Erro na contagem dos arquivos',\n   'Init error.': 'Erro inicializando.',\n   'HTTP Error.': 'Erro HTTP.',\n   'Security error.': 'Erro de segurança.',\n   'Generic error.': 'Erro genérico.',\n   'IO error.': 'Erro de E/S.',\n   'File: %s': 'Arquivo: %s',\n   'Close': 'Fechar',\n   '%d files queued': '%d arquivo(s)',\n   'Using runtime: ': 'Usando: ',\n   'File: %f, size: %s, max file size: %m': 'Arquivo: %f, tamanho: %s, máximo: %m',\n   'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Só são aceitos %d arquivos por vez. O que passou disso foi descartado.',\n   'Upload URL might be wrong or doesn\\'t exist': 'URL de envio está errada ou não existe',\n   'Error: File too large: ': 'Erro: Arquivo muito grande: ',\n   'Error: Invalid file extension: ': 'Erro: Tipo de arquivo não permitido: '\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ro.js",
    "content": "// Romanian\nplupload.addI18n({\n    'Select files' : 'Selectare fişiere',\n    'Add files to the upload queue and click the start button.' : 'Adaugă fişiere în lista apoi apasă butonul \\'Începe încărcare\\'.',\n    'Filename' : 'Nume fişier',\n    'Status' : 'Stare',\n    'Size' : 'Mărime',\n    'Add files' : 'Adăugare fişiere',\n    'Stop current upload' : 'Întrerupe încărcarea curentă',\n    'Start uploading queue' : 'Începe incărcarea',\n    'Uploaded %d/%d files': 'Fişiere încărcate %d/%d',\n    'N/A' : 'N/A',\n    'Drag files here.' : 'Trage aici fişierele',\n    'File extension error.': 'Extensie fişier eronată',\n    'File size error.': 'Eroare dimensiune fişier',\n    'Init error.': 'Eroare iniţializare',\n    'HTTP Error.': 'Eroare HTTP',\n    'Security error.': 'Eroare securitate',\n    'Generic error.': 'Eroare generică',\n    'IO error.': 'Eroare Intrare/Ieşire',\n    'Stop Upload': 'Oprire încărcare',\n    'Start upload': 'Începe încărcare',\n    '%d files queued': '%d fişiere listate'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/ru.js",
    "content": "// Russian\nplupload.addI18n({\n    'Select files' : 'Выберите файлы',\n    'Add files to the upload queue and click the start button.' : 'Добавьте файлы в очередь и нажмите кнопку \"Загрузить файлы\".',\n    'Filename' : 'Имя файла',\n    'Status' : 'Статус',\n    'Size' : 'Размер',\n    'Add files' : 'Добавить файлы',\n    'Stop current upload' : 'Остановить загрузку',\n    'Start uploading queue' : 'Загрузить файлы',\n    'Uploaded %d/%d files': 'Загружено %d из %d файлов',\n    'N/A' : 'N/D',\n    'Drag files here.' : 'Перетащите файлы сюда.',\n    'File extension error.': 'Неправильное расширение файла.',\n    'File size error.': 'Неправильный размер файла.',\n    'Init error.': 'Ошибка инициализации.',\n    'HTTP Error.': 'Ошибка HTTP.',\n    'Security error.': 'Ошибка безопасности.',\n    'Generic error.': 'Общая ошибка.',\n    'IO error.': 'Ошибка ввода-вывода.'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sr.js",
    "content": "﻿// Serbian\nplupload.addI18n({\n    'Select files' : 'Izaberite fajlove',\n    'Add files to the upload queue and click the start button.' : 'Dodajte fajlove u listu i kliknite na dugme Start.',\n    'Filename' : 'Naziv fajla',\n    'Status' : 'Status',\n    'Size' : 'Veličina',\n    'Add Files' : 'Dodaj fajlove',\n    'Stop current upload' : 'Zaustavi upload',\n    'Start uploading queue' : 'Počni upload',\n    'Drag files here.' : 'Prevucite fajlove ovde.',\n    'Start Upload': 'Počni upload',\n    'Uploaded %d/%d files': 'Snimljeno %d/%d fajlova'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/i18n/sv.js",
    "content": "﻿// .po file like language pack\nplupload.addI18n({\n\t'Select files' : 'Välj filer',\n\t'Add files to the upload queue and click the start button.' : 'Lägg till filer till kön och tryck på start.',\n\t'Filename' : 'Filnamn',\n\t'Status' : 'Status',\n\t'Size' : 'Storlek',\n\t'Add files' : 'Lägg till filer',\n\t'Stop current upload' : 'Stoppa uppladdningen',\n\t'Start uploading queue' : 'Starta uppladdningen',\n\t'Drag files here.' : 'Dra filer hit'\n});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css",
    "content": "/* \n   Plupload\n------------------------------------------------------------------- */\n\n.plupload_button {\n\tdisplay: -moz-inline-box; /* FF < 3*/\n\tdisplay: inline-block;\n\tfont: normal 12px sans-serif;\n\ttext-decoration: none;\n    color: #42454a;\n    border: 1px solid #bababa;\n    padding: 2px 8px 3px 20px;\n\tmargin-right: 4px;\n    background: #f3f3f3 url('../img/buttons.png') no-repeat 0 center;\n\toutline: 0;\n\n    /* Optional rounded corners for browsers that support it */\n    -moz-border-radius: 3px;\n    -khtml-border-radius: 3px;\n    -webkit-border-radius: 3px;\n    border-radius: 3px;\n}\n\n.plupload_button:hover {\n\tcolor: #000;\n\ttext-decoration: none;\n}\n\n.plupload_disabled, a.plupload_disabled:hover {\n    color: #737373;\n    border-color: #c5c5c5;\n    background: #ededed url('../img/buttons-disabled.png') no-repeat 0 center;\n\tcursor: default;\n}\n\n.plupload_add {\n\tbackground-position: -181px center;\n}\n\n.plupload_wrapper {\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 100%;\n}\n\n.plupload_container {\n\tpadding: 8px;\n\tbackground: url('../img/transp50.png');\n\t/*-moz-border-radius: 5px;*/\n}\n\n.plupload_container input {\n\tborder: 1px solid #DDD;\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 98%;\n}\n\n.plupload_header {background: #2A2C2E url('../img/backgrounds.gif') repeat-x;}\n.plupload_header_content {\n\tbackground: url('../img/backgrounds.gif') no-repeat 0 -317px;\n\tmin-height: 56px;\n\tpadding-left: 60px;\n\tcolor: #FFF;\n}\n.plupload_header_title {\n\tfont: normal 18px sans-serif;\n\tpadding: 6px 0 3px;\n}\n.plupload_header_text {\n\tfont: normal 12px sans-serif;\n}\n\n.plupload_filelist {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.plupload_scroll .plupload_filelist {\n\theight: 185px;\n\tbackground: #F5F5F5;\n\toverflow-y: scroll;\n}\n\n.plupload_filelist li {\n\tpadding: 10px 8px;\n\tbackground: #F5F5F5 url('../img/backgrounds.gif') repeat-x 0 -156px;\n\tborder-bottom: 1px solid #DDD;\n}\n\n.plupload_filelist_header, .plupload_filelist_footer {\n\tbackground: #DFDFDF;\n\tpadding: 8px 8px;\n\tcolor: #42454A;\n}\n.plupload_filelist_header {\t\n\tborder-top: 1px solid #EEE;\n\tborder-bottom: 1px solid #CDCDCD;\n}\n\n.plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;}\n.plupload_file_name {float: left; overflow: hidden}\n.plupload_file_status {color: #777;}\n.plupload_file_status span {color: #42454A;}\n.plupload_file_size, .plupload_file_status, .plupload_progress {\n\tfloat: right;\n\twidth: 80px;\n}\n.plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;}\n\n.plupload_filelist .plupload_file_name {width: 205px}\n\n.plupload_file_action {\n\tfloat: right;\n\twidth: 16px;\n\theight: 16px;\n\tmargin-left: 15px;\n}\n\n.plupload_file_action * {\n\tdisplay: none;\n\twidth: 16px;\n\theight: 16px;\n}\n\nli.plupload_uploading {background: #ECF3DC url('../img/backgrounds.gif') repeat-x 0 -238px;}\nli.plupload_done {color:#AAA}\n\nli.plupload_delete a {\n\tbackground: url('../img/delete.gif');\n}\n\nli.plupload_failed a {\n\tbackground: url('../img/error.gif');\n\tcursor: default;\n}\n\nli.plupload_done a {\n\tbackground: url('../img/done.gif');\n\tcursor: default;\n}\n\n.plupload_progress, .plupload_upload_status {\n\tdisplay: none;\n}\n\n.plupload_progress_container {\n\tmargin-top: 3px;\n\tborder: 1px solid #CCC;\n\tbackground: #FFF;\n\tpadding: 1px;\n}\n.plupload_progress_bar {\n\twidth: 0px;\n\theight: 7px;\n\tbackground: #CDEB8B;\n}\n\n.plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action {\n\tmargin-right: 17px;\n}\n\n/* Floats */\n\n.plupload_clear,.plupload_clearer {clear: both;}\n.plupload_clearer, .plupload_progress_bar {\n\tdisplay: block;\n\tfont-size: 0;\n\tline-height: 0;\t\n}\n\nli.plupload_droptext {\n\tbackground: transparent;\n\ttext-align: center;\n\tvertical-align: middle;\n\tborder: 0;\n\tline-height: 165px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js",
    "content": "(function(c){var d={};function a(e){return plupload.translate(e)||e}function b(f,e){e.contents().each(function(g,h){h=c(h);if(!h.is(\".plupload\")){h.remove()}});e.prepend('<div class=\"plupload_wrapper plupload_scroll\"><div id=\"'+f+'_container\" class=\"plupload_container\"><div class=\"plupload\"><div class=\"plupload_header\"><div class=\"plupload_header_content\"><div class=\"plupload_header_title\">'+a(\"Select files\")+'</div><div class=\"plupload_header_text\">'+a(\"Add files to the upload queue and click the start button.\")+'</div></div></div><div class=\"plupload_content\"><div class=\"plupload_filelist_header\"><div class=\"plupload_file_name\">'+a(\"Filename\")+'</div><div class=\"plupload_file_action\">&nbsp;</div><div class=\"plupload_file_status\"><span>'+a(\"Status\")+'</span></div><div class=\"plupload_file_size\">'+a(\"Size\")+'</div><div class=\"plupload_clearer\">&nbsp;</div></div><ul id=\"'+f+'_filelist\" class=\"plupload_filelist\"></ul><div class=\"plupload_filelist_footer\"><div class=\"plupload_file_name\"><div class=\"plupload_buttons\"><a href=\"#\" class=\"plupload_button plupload_add\">'+a(\"Add files\")+'</a><a href=\"#\" class=\"plupload_button plupload_start\">'+a(\"Start upload\")+'</a></div><span class=\"plupload_upload_status\"></span></div><div class=\"plupload_file_action\"></div><div class=\"plupload_file_status\"><span class=\"plupload_total_status\">0%</span></div><div class=\"plupload_file_size\"><span class=\"plupload_total_file_size\">0 b</span></div><div class=\"plupload_progress\"><div class=\"plupload_progress_container\"><div class=\"plupload_progress_bar\"></div></div></div><div class=\"plupload_clearer\">&nbsp;</div></div></div></div></div><input type=\"hidden\" id=\"'+f+'_count\" name=\"'+f+'_count\" value=\"0\" /></div>')}c.fn.pluploadQueue=function(e){if(e){this.each(function(){var j,i,k;i=c(this);k=i.attr(\"id\");if(!k){k=plupload.guid();i.attr(\"id\",k)}j=new plupload.Uploader(c.extend({dragdrop:true,container:k},e));d[k]=j;function h(l){var n;if(l.status==plupload.DONE){n=\"plupload_done\"}if(l.status==plupload.FAILED){n=\"plupload_failed\"}if(l.status==plupload.QUEUED){n=\"plupload_delete\"}if(l.status==plupload.UPLOADING){n=\"plupload_uploading\"}var m=c(\"#\"+l.id).attr(\"class\",n).find(\"a\").css(\"display\",\"block\");if(l.hint){m.attr(\"title\",l.hint)}}function f(){c(\"span.plupload_total_status\",i).html(j.total.percent+\"%\");c(\"div.plupload_progress_bar\",i).css(\"width\",j.total.percent+\"%\");c(\"span.plupload_upload_status\",i).text(a(\"Uploaded %d/%d files\").replace(/%d\\/%d/,j.total.uploaded+\"/\"+j.files.length))}function g(){var m=c(\"ul.plupload_filelist\",i).html(\"\"),n=0,l;c.each(j.files,function(p,o){l=\"\";if(o.status==plupload.DONE){if(o.target_name){l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_tmpname\" value=\"'+plupload.xmlEncode(o.target_name)+'\" />'}l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_name\" value=\"'+plupload.xmlEncode(o.name)+'\" />';l+='<input type=\"hidden\" name=\"'+k+\"_\"+n+'_status\" value=\"'+(o.status==plupload.DONE?\"done\":\"failed\")+'\" />';n++;c(\"#\"+k+\"_count\").val(n)}m.append('<li id=\"'+o.id+'\"><div class=\"plupload_file_name\"><span>'+o.name+'</span></div><div class=\"plupload_file_action\"><a href=\"#\"></a></div><div class=\"plupload_file_status\">'+o.percent+'%</div><div class=\"plupload_file_size\">'+plupload.formatSize(o.size)+'</div><div class=\"plupload_clearer\">&nbsp;</div>'+l+\"</li>\");h(o);c(\"#\"+o.id+\".plupload_delete a\").click(function(q){c(\"#\"+o.id).remove();j.removeFile(o);q.preventDefault()})});c(\"span.plupload_total_file_size\",i).html(plupload.formatSize(j.total.size));if(j.total.queued===0){c(\"span.plupload_add_text\",i).text(a(\"Add files.\"))}else{c(\"span.plupload_add_text\",i).text(j.total.queued+\" files queued.\")}c(\"a.plupload_start\",i).toggleClass(\"plupload_disabled\",j.files.length==(j.total.uploaded+j.total.failed));m[0].scrollTop=m[0].scrollHeight;f();if(!j.files.length&&j.features.dragdrop&&j.settings.dragdrop){c(\"#\"+k+\"_filelist\").append('<li class=\"plupload_droptext\">'+a(\"Drag files here.\")+\"</li>\")}}j.bind(\"UploadFile\",function(l,m){c(\"#\"+m.id).addClass(\"plupload_current_file\")});j.bind(\"Init\",function(l,m){b(k,i);if(!e.unique_names&&e.rename){c(\"#\"+k+\"_filelist div.plupload_file_name span\",i).live(\"click\",function(s){var q=c(s.target),o,r,n,p=\"\";o=l.getFile(q.parents(\"li\")[0].id);n=o.name;r=/^(.+)(\\.[^.]+)$/.exec(n);if(r){n=r[1];p=r[2]}q.hide().after('<input type=\"text\" />');q.next().val(n).focus().blur(function(){q.show().next().remove()}).keydown(function(u){var t=c(this);if(u.keyCode==13){u.preventDefault();o.name=t.val()+p;q.text(o.name);t.blur()}})})}c(\"a.plupload_add\",i).attr(\"id\",k+\"_browse\");l.settings.browse_button=k+\"_browse\";if(l.features.dragdrop&&l.settings.dragdrop){l.settings.drop_element=k+\"_filelist\";c(\"#\"+k+\"_filelist\").append('<li class=\"plupload_droptext\">'+a(\"Drag files here.\")+\"</li>\")}c(\"#\"+k+\"_container\").attr(\"title\",\"Using runtime: \"+m.runtime);c(\"a.plupload_start\",i).click(function(n){if(!c(this).hasClass(\"plupload_disabled\")){j.start()}n.preventDefault()});c(\"a.plupload_stop\",i).click(function(n){n.preventDefault();j.stop()});c(\"a.plupload_start\",i).addClass(\"plupload_disabled\")});j.init();j.bind(\"Error\",function(l,o){var m=o.file,n;if(m){n=o.message;if(o.details){n+=\" (\"+o.details+\")\"}if(o.code==plupload.FILE_SIZE_ERROR){alert(a(\"Error: File too large: \")+m.name)}if(o.code==plupload.FILE_EXTENSION_ERROR){alert(a(\"Error: Invalid file extension: \")+m.name)}m.hint=n;c(\"#\"+m.id).attr(\"class\",\"plupload_failed\").find(\"a\").css(\"display\",\"block\").attr(\"title\",n)}});j.bind(\"StateChanged\",function(){if(j.state===plupload.STARTED){c(\"li.plupload_delete a,div.plupload_buttons\",i).hide();c(\"span.plupload_upload_status,div.plupload_progress,a.plupload_stop\",i).css(\"display\",\"block\");c(\"span.plupload_upload_status\",i).text(\"Uploaded \"+j.total.uploaded+\"/\"+j.files.length+\" files\");if(e.multiple_queues){c(\"span.plupload_total_status,span.plupload_total_file_size\",i).show()}}else{g();c(\"a.plupload_stop,div.plupload_progress\",i).hide();c(\"a.plupload_delete\",i).css(\"display\",\"block\")}});j.bind(\"QueueChanged\",g);j.bind(\"FileUploaded\",function(l,m){h(m)});j.bind(\"UploadProgress\",function(l,m){c(\"#\"+m.id+\" div.plupload_file_status\",i).html(m.percent+\"%\");h(m);f();if(e.multiple_queues&&j.total.uploaded+j.total.failed==j.files.length){c(\".plupload_buttons,.plupload_upload_status\",i).css(\"display\",\"inline\");c(\".plupload_start\",i).addClass(\"plupload_disabled\");c(\"span.plupload_total_status,span.plupload_total_file_size\",i).hide()}});if(e.setup){e.setup(j)}});return this}else{return d[c(this[0]).attr(\"id\")]}}})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css",
    "content": "/*\n   Plupload\n------------------------------------------------------------------- */\n\n.plupload_button {cursor: pointer;}\n\n.plupload_wrapper {\n\tfont: normal 11px Verdana,sans-serif;\n\twidth: 100%;\n}\n\n.plupload .plupload_container input {width: 98%;}\n.plupload .plupload_filelist_footer {border-width: 1px 0 0 0}\n.plupload .plupload_filelist_header {border-width: 0 0 1px 0}\ndiv.plupload .plupload_file {border-width: 0 0 1px 0}\ndiv.plupload div.plupload_header {border-width: 0 0 1px 0; position: relative;}\n\n.plupload_file .ui-icon {\n\tcursor:pointer;\t\n}\n\n.plupload_header_content {\n\tbackground-image: url('../img/plupload.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 8px center;\n\tmin-height: 56px;\n\tpadding-left: 60px;\n\tposition:relative;\n}\n.plupload_header_content_bw {background-image: url('../img/plupload-bw.png');}\n.plupload_header_title {\n\tfont: normal 18px sans-serif;\n\tpadding: 6px 0 3px;\n}\n.plupload_header_text {font: normal 12px sans-serif;}\n\n.plupload_filelist,\n.plupload_filelist_content {\n\tborder-collapse: collapse;\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\t-moz-user-select:none;\n\t-webkit-user-select:none;\n\tuser-select:none;\n}\n\n.plupload_cell {padding: 8px 6px;}\n\n.plupload_file {\n\tborder-left: none;\n\tborder-right: none;\n}\n\n.plupload .ui-sortable-helper,\n.plupload .ui-sortable .plupload_file {\n\tcursor:move;\t\n}\n\n.plupload_scroll {\n\tmax-height: 180px;\n\tmin-height: 168px;\n\t_height: 168px;\n\toverflow-y: auto;\n}\n\n.plupload_file_size, .plupload_file_status {text-align: right;}\n.plupload_file_size, .plupload_file_status {width: 52px;}\n.plupload_file_action {width: 16px;}\n.plupload_file_name {\n\toverflow: hidden;\n\tpadding-left: 10px;\n}\n\n.plupload_file_rename {\n\twidth:95%;\t\n}\n\n.plupload_progress {width: 60px;}\n.plupload_progress_container {padding: 1px;}\n\n\n/* Floats */\n\n.plupload_right {float: right;}\n.plupload_left {float: left;}\n.plupload_clear,.plupload_clearer {clear: both;}\n.plupload_clearer, .plupload_progress_bar {\n\tdisplay: block;\n\tfont-size: 0;\n\tline-height: 0;\n}\n.plupload_clearer {height: 0;}\n\n/* Misc */\n.plupload_hidden {display: none;}\n.plupload_droptext {\n\tbackground: transparent;\n\ttext-align: center;\n\tvertical-align: middle;\n\tborder: 0;\n\tline-height: 165px;\n}\n\n.plupload_buttons, .plupload_upload_status {float: left}\n\n.plupload_message {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\t\n\theight: 100%;\n\twidth: 100%;\n}\n\n.plupload_message p {\n\tpadding:0.7em;\n\tmargin:0;\n}\n\n.plupload_message strong {\n\tfont-weight: bold;\t\n}\n\nplupload_message i {\n\tfont-style: italic;\t\n}\n\n.plupload_message p span.ui-icon {\n\tfloat: left;\n\tmargin-right: 0.3em;\t\n}\n\n.plupload_header_content .ui-state-error,\n.plupload_header_content .ui-state-highlight {\n\tborder:none;\t\n}\n\n.plupload_message_close {\n\tposition:absolute;\n\ttop:5px;\n\tright:5px;\n\tcursor:pointer;\t\n}\n\n.plupload .ui-sortable-placeholder {\n\theight:35px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js",
    "content": "(function(f,a,c,g,e){var h={};function b(i){return c.translate(i)||i}function d(i){i.html('<div class=\"plupload_wrapper\"><div class=\"ui-widget-content plupload_container\"><div class=\"plupload\"><div class=\"ui-state-default ui-widget-header plupload_header\"><div class=\"plupload_header_content\"><div class=\"plupload_header_title\">'+b(\"Select files\")+'</div><div class=\"plupload_header_text\">'+b(\"Add files to the upload queue and click the start button.\")+'</div></div></div><div class=\"plupload_content\"><table class=\"plupload_filelist\"><tr class=\"ui-widget-header plupload_filelist_header\"><td class=\"plupload_cell plupload_file_name\">'+b(\"Filename\")+'</td><td class=\"plupload_cell plupload_file_status\">'+b(\"Status\")+'</td><td class=\"plupload_cell plupload_file_size\">'+b(\"Size\")+'</td><td class=\"plupload_cell plupload_file_action\">&nbsp;</td></tr></table><div class=\"plupload_scroll\"><table class=\"plupload_filelist_content\"></table></div><table class=\"plupload_filelist\"><tr class=\"ui-widget-header ui-widget-content plupload_filelist_footer\"><td class=\"plupload_cell plupload_file_name\"><div class=\"plupload_buttons\"><!-- Visible --><a class=\"plupload_button plupload_add\">'+b(\"Add Files\")+'</a>&nbsp;<a class=\"plupload_button plupload_start\">'+b(\"Start Upload\")+'</a>&nbsp;<a class=\"plupload_button plupload_stop plupload_hidden\">'+b(\"Stop Upload\")+'</a>&nbsp;</div><div class=\"plupload_started plupload_hidden\"><!-- Hidden --><div class=\"plupload_progress plupload_right\"><div class=\"plupload_progress_container\"></div></div><div class=\"plupload_cell plupload_upload_status\"></div><div class=\"plupload_clearer\">&nbsp;</div></div></td><td class=\"plupload_file_status\"><span class=\"plupload_total_status\">0%</span></td><td class=\"plupload_file_size\"><span class=\"plupload_total_file_size\">0 kb</span></td><td class=\"plupload_file_action\"></td></tr></table></div></div></div><input class=\"plupload_count\" value=\"0\" type=\"hidden\"></div>')}g.widget(\"ui.plupload\",{contents_bak:\"\",runtime:null,options:{browse_button_hover:\"ui-state-hover\",browse_button_active:\"ui-state-active\",dragdrop:true,multiple_queues:true,buttons:{browse:true,start:true,stop:true},autostart:false,sortable:false,rename:false,max_file_count:0},FILE_COUNT_ERROR:-9001,_create:function(){var i=this,k,j;k=this.element.attr(\"id\");if(!k){k=c.guid();this.element.attr(\"id\",k)}this.id=k;this.contents_bak=this.element.html();d(this.element);this.container=g(\".plupload_container\",this.element).attr(\"id\",k+\"_container\");this.filelist=g(\".plupload_filelist_content\",this.container).attr({id:k+\"_filelist\",unselectable:\"on\"});this.browse_button=g(\".plupload_add\",this.container).attr(\"id\",k+\"_browse\");this.start_button=g(\".plupload_start\",this.container).attr(\"id\",k+\"_start\");this.stop_button=g(\".plupload_stop\",this.container).attr(\"id\",k+\"_stop\");if(g.ui.button){this.browse_button.button({icons:{primary:\"ui-icon-circle-plus\"}});this.start_button.button({icons:{primary:\"ui-icon-circle-arrow-e\"},disabled:true});this.stop_button.button({icons:{primary:\"ui-icon-circle-close\"}})}this.progressbar=g(\".plupload_progress_container\",this.container);if(g.ui.progressbar){this.progressbar.progressbar()}this.counter=g(\".plupload_count\",this.element).attr({id:k+\"_count\",name:k+\"_count\"});j=this.uploader=h[k]=new c.Uploader(g.extend({container:k,browse_button:k+\"_browse\"},this.options));j.bind(\"Error\",function(l,m){if(m.code===c.INIT_ERROR){i.destroy()}});j.bind(\"Init\",function(l,m){if(!i.options.buttons.browse){i.browse_button.button(\"disable\").hide();l.disableBrowse(true)}if(!i.options.buttons.start){i.start_button.button(\"disable\").hide()}if(!i.options.buttons.stop){i.stop_button.button(\"disable\").hide()}if(!i.options.unique_names&&i.options.rename){i._enableRenaming()}if(j.features.dragdrop&&i.options.dragdrop){i._enableDragAndDrop()}i.container.attr(\"title\",b(\"Using runtime: \")+(i.runtime=m.runtime));i.start_button.click(function(n){if(!g(this).button(\"option\",\"disabled\")){i.start()}n.preventDefault()});i.stop_button.click(function(n){i.stop();n.preventDefault()})});if(i.options.max_file_count){j.bind(\"FilesAdded\",function(l,n){var o=[],m=n.length;var p=l.files.length+m-i.options.max_file_count;if(p>0){o=n.splice(m-p,p);l.trigger(\"Error\",{code:i.FILE_COUNT_ERROR,message:b(\"File count error.\"),file:o})}})}j.init();j.bind(\"FilesAdded\",function(l,m){i._trigger(\"selected\",null,{up:l,files:m});if(i.options.autostart){setTimeout(function(){i.start()},10)}});j.bind(\"FilesRemoved\",function(l,m){i._trigger(\"removed\",null,{up:l,files:m})});j.bind(\"QueueChanged\",function(){i._updateFileList()});j.bind(\"StateChanged\",function(){i._handleState()});j.bind(\"UploadFile\",function(l,m){i._handleFileStatus(m)});j.bind(\"FileUploaded\",function(l,m){i._handleFileStatus(m);i._trigger(\"uploaded\",null,{up:l,file:m})});j.bind(\"UploadProgress\",function(l,m){g(\"#\"+m.id).find(\".plupload_file_status\").html(m.percent+\"%\").end().find(\".plupload_file_size\").html(c.formatSize(m.size));i._handleFileStatus(m);i._updateTotalProgress();i._trigger(\"progress\",null,{up:l,file:m})});j.bind(\"UploadComplete\",function(l,m){i._trigger(\"complete\",null,{up:l,files:m})});j.bind(\"Error\",function(l,p){var n=p.file,o,m;if(n){o=\"<strong>\"+p.message+\"</strong>\";m=p.details;if(m){o+=\" <br /><i>\"+p.details+\"</i>\"}else{switch(p.code){case c.FILE_EXTENSION_ERROR:m=b(\"File: %s\").replace(\"%s\",n.name);break;case c.FILE_SIZE_ERROR:m=b(\"File: %f, size: %s, max file size: %m\").replace(/%([fsm])/g,function(r,q){switch(q){case\"f\":return n.name;case\"s\":return n.size;case\"m\":return c.parseSize(i.options.max_file_size)}});break;case i.FILE_COUNT_ERROR:m=b(\"Upload element accepts only %d file(s) at a time. Extra files were stripped.\").replace(\"%d\",i.options.max_file_count);break;case c.IMAGE_FORMAT_ERROR:m=c.translate(\"Image format either wrong or not supported.\");break;case c.IMAGE_MEMORY_ERROR:m=c.translate(\"Runtime ran out of available memory.\");break;case c.IMAGE_DIMENSIONS_ERROR:m=c.translate(\"Resoultion out of boundaries! <b>%s</b> runtime supports images only up to %wx%hpx.\").replace(/%([swh])/g,function(r,q){switch(q){case\"s\":return l.runtime;case\"w\":return l.features.maxWidth;case\"h\":return l.features.maxHeight}});break;case c.HTTP_ERROR:m=b(\"Upload URL might be wrong or doesn't exist\");break}o+=\" <br /><i>\"+m+\"</i>\"}i.notify(\"error\",o);i._trigger(\"error\",null,{up:l,file:n,error:o})}})},_setOption:function(j,k){var i=this;if(j==\"buttons\"&&typeof(k)==\"object\"){k=g.extend(i.options.buttons,k);if(!k.browse){i.browse_button.button(\"disable\").hide();up.disableBrowse(true)}else{i.browse_button.button(\"enable\").show();up.disableBrowse(false)}if(!k.start){i.start_button.button(\"disable\").hide()}else{i.start_button.button(\"enable\").show()}if(!k.stop){i.stop_button.button(\"disable\").hide()}else{i.start_button.button(\"enable\").show()}}i.uploader.settings[j]=k},start:function(){this.uploader.start();this._trigger(\"start\",null)},stop:function(){this.uploader.stop();this._trigger(\"stop\",null)},getFile:function(j){var i;if(typeof j===\"number\"){i=this.uploader.files[j]}else{i=this.uploader.getFile(j)}return i},removeFile:function(j){var i=this.getFile(j);if(i){this.uploader.removeFile(i)}},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},_handleState:function(){var j=this,i=this.uploader;if(i.state===c.STARTED){g(j.start_button).button(\"disable\");g([]).add(j.stop_button).add(\".plupload_started\").removeClass(\"plupload_hidden\");g(\".plupload_upload_status\",j.element).text(b(\"Uploaded %d/%d files\").replace(\"%d/%d\",i.total.uploaded+\"/\"+i.files.length));g(\".plupload_header_content\",j.element).addClass(\"plupload_header_content_bw\")}else{g([]).add(j.stop_button).add(\".plupload_started\").addClass(\"plupload_hidden\");if(j.options.multiple_queues){g(j.start_button).button(\"enable\");g(\".plupload_header_content\",j.element).removeClass(\"plupload_header_content_bw\")}j._updateFileList()}},_handleFileStatus:function(l){var n,j;if(!g(\"#\"+l.id).length){return}switch(l.status){case c.DONE:n=\"plupload_done\";j=\"ui-icon ui-icon-circle-check\";break;case c.FAILED:n=\"ui-state-error plupload_failed\";j=\"ui-icon ui-icon-alert\";break;case c.QUEUED:n=\"plupload_delete\";j=\"ui-icon ui-icon-circle-minus\";break;case c.UPLOADING:n=\"ui-state-highlight plupload_uploading\";j=\"ui-icon ui-icon-circle-arrow-w\";var i=g(\".plupload_scroll\",this.container),m=i.scrollTop(),o=i.height(),k=g(\"#\"+l.id).position().top+g(\"#\"+l.id).height();if(o<k){i.scrollTop(m+k-o)}break}n+=\" ui-state-default plupload_file\";g(\"#\"+l.id).attr(\"class\",n).find(\".ui-icon\").attr(\"class\",j)},_updateTotalProgress:function(){var i=this.uploader;this.progressbar.progressbar(\"value\",i.total.percent);this.element.find(\".plupload_total_status\").html(i.total.percent+\"%\").end().find(\".plupload_total_file_size\").html(c.formatSize(i.total.size)).end().find(\".plupload_upload_status\").text(b(\"Uploaded %d/%d files\").replace(\"%d/%d\",i.total.uploaded+\"/\"+i.files.length))},_updateFileList:function(){var k=this,j=this.uploader,m=this.filelist,l=0,o,n=this.id+\"_\",i;if(g.ui.sortable&&this.options.sortable){g(\"tbody\",m).sortable(\"destroy\")}m.empty();g.each(j.files,function(q,p){i=\"\";o=n+l;if(p.status===c.DONE){if(p.target_name){i+='<input type=\"hidden\" name=\"'+o+'_tmpname\" value=\"'+c.xmlEncode(p.target_name)+'\" />'}i+='<input type=\"hidden\" name=\"'+o+'_name\" value=\"'+c.xmlEncode(p.name)+'\" />';i+='<input type=\"hidden\" name=\"'+o+'_status\" value=\"'+(p.status===c.DONE?\"done\":\"failed\")+'\" />';l++;k.counter.val(l)}m.append('<tr class=\"ui-state-default plupload_file\" id=\"'+p.id+'\"><td class=\"plupload_cell plupload_file_name\"><span>'+p.name+'</span></td><td class=\"plupload_cell plupload_file_status\">'+p.percent+'%</td><td class=\"plupload_cell plupload_file_size\">'+c.formatSize(p.size)+'</td><td class=\"plupload_cell plupload_file_action\"><div class=\"ui-icon\"></div>'+i+\"</td></tr>\");k._handleFileStatus(p);g(\"#\"+p.id+\".plupload_delete .ui-icon, #\"+p.id+\".plupload_done .ui-icon\").click(function(r){g(\"#\"+p.id).remove();j.removeFile(p);r.preventDefault()});k._trigger(\"updatelist\",null,m)});if(j.total.queued===0){g(\".ui-button-text\",k.browse_button).text(b(\"Add Files\"))}else{g(\".ui-button-text\",k.browse_button).text(b(\"%d files queued\").replace(\"%d\",j.total.queued))}if(j.files.length===(j.total.uploaded+j.total.failed)){k.start_button.button(\"disable\")}else{k.start_button.button(\"enable\")}m[0].scrollTop=m[0].scrollHeight;k._updateTotalProgress();if(!j.files.length&&j.features.dragdrop&&j.settings.dragdrop){g(\"#\"+o+\"_filelist\").append('<tr><td class=\"plupload_droptext\">'+b(\"Drag files here.\")+\"</td></tr>\")}else{if(k.options.sortable&&g.ui.sortable){k._enableSortingList()}}},_enableRenaming:function(){var i=this;g(\".plupload_delete .plupload_file_name span\",this.filelist).live(\"click\",function(o){var m=g(o.target),k,n,j,l=\"\";k=i.uploader.getFile(m.parents(\"tr\")[0].id);j=k.name;n=/^(.+)(\\.[^.]+)$/.exec(j);if(n){j=n[1];l=n[2]}m.hide().after('<input class=\"plupload_file_rename\" type=\"text\" />');m.next().val(j).focus().blur(function(){m.show().next().remove()}).keydown(function(q){var p=g(this);if(g.inArray(q.keyCode,[13,27])!==-1){q.preventDefault();if(q.keyCode===13){k.name=p.val()+l;m.text(k.name)}p.blur()}})})},_enableDragAndDrop:function(){this.filelist.append('<tr><td class=\"plupload_droptext\">'+b(\"Drag files here.\")+\"</td></tr>\");this.filelist.parent().attr(\"id\",this.id+\"_dropbox\");this.uploader.settings.drop_element=this.options.drop_element=this.id+\"_dropbox\"},_enableSortingList:function(){var j,i=this;if(g(\"tbody tr\",this.filelist).length<2){return}g(\"tbody\",this.filelist).sortable({containment:\"parent\",items:\".plupload_delete\",helper:function(l,k){return k.clone(true).find(\"td:not(.plupload_file_name)\").remove().end().css(\"width\",\"100%\")},stop:function(p,o){var l,n,k,m=[];g.each(g(this).sortable(\"toArray\"),function(q,r){m[m.length]=i.uploader.getFile(r)});m.unshift(m.length);m.unshift(0);Array.prototype.splice.apply(i.uploader.files,m)}})},notify:function(j,k){var i=g('<div class=\"plupload_message\"><span class=\"plupload_message_close ui-icon ui-icon-circle-close\" title=\"'+b(\"Close\")+'\"></span><p><span class=\"ui-icon\"></span>'+k+\"</p></div>\");i.addClass(\"ui-state-\"+(j===\"error\"?\"error\":\"highlight\")).find(\"p .ui-icon\").addClass(\"ui-icon-\"+(j===\"error\"?\"alert\":\"info\")).end().find(\".plupload_message_close\").click(function(){i.remove()}).end();g(\".plupload_header_content\",this.container).append(i)},destroy:function(){g(\".plupload_button\",this.element).unbind();if(g.ui.button){g(\".plupload_add, .plupload_start, .plupload_stop\",this.container).button(\"destroy\")}if(g.ui.progressbar){this.progressbar.progressbar(\"destroy\")}if(g.ui.sortable&&this.options.sortable){g(\"tbody\",this.filelist).sortable(\"destroy\")}this.uploader.destroy();this.element.empty().html(this.contents_bak);this.contents_bak=\"\";g.Widget.prototype.destroy.apply(this)}})}(window,document,plupload,jQuery));"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.browserplus.js",
    "content": "(function(a){a.runtimes.BrowserPlus=a.addRuntime(\"browserplus\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,i){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(n){var m,l,j=[],k,o;for(l=0;l<n.length;l++){k=n[l];o=a.guid();h[o]=k;j.push(new a.File(o,k.name,k.size))}if(l){g.trigger(\"FilesAdded\",j)}}function b(){var j=false;g.bind(\"PostInit\",function(){var n,l=d.drop_element,p=g.id+\"_droptarget\",k=document.getElementById(l),m;function q(s,r){e.DragAndDrop.AddDropTarget({id:s},function(t){e.DragAndDrop.AttachCallbacks({id:s,hover:function(u){if(!u&&r){r()}},drop:function(u){if(r){r()}f(u)}},function(){})})}function o(){document.getElementById(p).style.top=\"-1000px\"}if(k){if(document.attachEvent&&(/MSIE/gi).test(navigator.userAgent)){n=document.createElement(\"div\");n.setAttribute(\"id\",p);a.extend(n.style,{position:\"absolute\",top:\"-1000px\",background:\"red\",filter:\"alpha(opacity=0)\",opacity:0});document.body.appendChild(n);a.addEvent(k,\"dragenter\",function(s){var r,t;r=document.getElementById(l);t=a.getPos(r);a.extend(document.getElementById(p).style,{top:t.y+\"px\",left:t.x+\"px\",width:r.offsetWidth+\"px\",height:r.offsetHeight+\"px\"})});q(p,o)}else{q(l)}}a.addEvent(document.getElementById(d.browse_button),\"click\",function(x){var r=[],t,s,w=d.filters,v,u;x.preventDefault();if(j){return}no_type_restriction:for(t=0;t<w.length;t++){v=w[t].extensions.split(\",\");for(s=0;s<v.length;s++){if(v[s]===\"*\"){r=[];break no_type_restriction}u=a.mimeTypes[v[s]];if(u&&a.inArray(u,r)===-1){r.push(a.mimeTypes[v[s]])}}}e.FileBrowse.OpenBrowseDialog({mimeTypes:r},function(y){if(y.success){f(y.value)}})});k=n=null});g.bind(\"CancelUpload\",function(){e.Uploader.cancel({},function(){})});g.bind(\"DisableBrowse\",function(k,l){j=l});g.bind(\"UploadFile\",function(n,k){var m=h[k.id],s={},l=n.settings.chunk_size,o,p=[];function r(t,v){var u;if(k.status==a.FAILED){return}s.name=k.target_name||k.name;if(l){s.chunk=\"\"+t;s.chunks=\"\"+v}u=p.shift();e.Uploader.upload({url:n.settings.url,files:{file:u},cookies:document.cookies,postvars:a.extend(s,n.settings.multipart_params),progressCallback:function(y){var x,w=0;o[t]=parseInt(y.filePercent*u.size/100,10);for(x=0;x<o.length;x++){w+=o[x]}k.loaded=w;n.trigger(\"UploadProgress\",k)}},function(x){var w,y;if(x.success){w=x.value.statusCode;if(l){n.trigger(\"ChunkUploaded\",k,{chunk:t,chunks:v,response:x.value.body,status:w})}if(p.length>0){r(++t,v)}else{k.status=a.DONE;n.trigger(\"FileUploaded\",k,{response:x.value.body,status:w});if(w>=400){n.trigger(\"Error\",{code:a.HTTP_ERROR,message:a.translate(\"HTTP Error.\"),file:k,status:w})}}}else{n.trigger(\"Error\",{code:a.GENERIC_ERROR,message:a.translate(\"Generic Error.\"),file:k,details:x.error})}})}function q(t){k.size=t.size;if(l){e.FileAccess.chunk({file:t,chunkSize:l},function(w){if(w.success){var x=w.value,u=x.length;o=Array(u);for(var v=0;v<u;v++){o[v]=0;p.push(x[v])}r(0,u)}})}else{o=Array(1);p.push(t);r(0,1)}}if(c&&/\\.(png|jpg|jpeg)$/i.test(k.name)){BrowserPlus.ImageAlter.transform({file:m,quality:c.quality||90,actions:[{scale:{maxwidth:c.width,maxheight:c.height}}]},function(t){if(t.success){q(t.value.file)}})}else{q(m)}});i({success:true})}if(e){e.init(function(k){var j=[{service:\"Uploader\",version:\"3\"},{service:\"DragAndDrop\",version:\"1\"},{service:\"FileBrowse\",version:\"1\"},{service:\"FileAccess\",version:\"2\"}];if(c){j.push({service:\"ImageAlter\",version:\"4\"})}if(k.success){e.require({services:j},function(l){if(l.success){b()}else{i()}})}else{i()}})}else{i()}}})})(plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.flash.js",
    "content": "(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins[\"Shockwave Flash\"];h=h.description}catch(j){try{h=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\").GetVariable(\"$version\")}catch(i){h=\"0.0\"}}h=h.match(/\\d+/g);return parseFloat(h[0]+\".\"+h[1])}d.flash={trigger:function(j,h,i){setTimeout(function(){var m=a[j],l,k;if(m){m.trigger(\"Flash:\"+h,i)}},0)}};d.runtimes.Flash=d.addRuntime(\"flash\",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(m,o){var k,l,h=0,i=b.body;if(c()<10){o({success:false});return}g[m.id]=false;a[m.id]=m;k=b.getElementById(m.settings.browse_button);l=b.createElement(\"div\");l.id=m.id+\"_flash_container\";d.extend(l.style,{position:\"absolute\",top:\"0px\",background:m.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100%\",height:\"100%\"});l.className=\"plupload flash\";if(m.settings.container){i=b.getElementById(m.settings.container);if(d.getStyle(i,\"position\")===\"static\"){i.style.position=\"relative\"}}i.appendChild(l);(function(){var p,q;p='<object id=\"'+m.id+'_flash\" type=\"application/x-shockwave-flash\" data=\"'+m.settings.flash_swf_url+'\" ';if(d.ua.ie){p+='classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" '}p+='width=\"100%\" height=\"100%\" style=\"outline:0\"><param name=\"movie\" value=\"'+m.settings.flash_swf_url+'\" /><param name=\"flashvars\" value=\"id='+escape(m.id)+'\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"allowscriptaccess\" value=\"always\" /></object>';if(d.ua.ie){q=b.createElement(\"div\");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+\"_flash\")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind(\"Destroy\",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+\"_flash_container\");if(q){i.removeChild(q)}});m.bind(\"Flash:Init\",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind(\"UploadFile\",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\\.(jpg|jpeg)$/i.test(u.name)?\"jpg\":\"png\",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind(\"CancelUpload\",function(){n().cancelUpload()});m.bind(\"Flash:UploadProcess\",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger(\"UploadProgress\",u)}});m.bind(\"Flash:UploadChunkComplete\",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger(\"ChunkUploaded\",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger(\"FileUploaded\",t,{response:u.text})}});m.bind(\"Flash:SelectFiles\",function(s,v){var u,t,w=[],x;for(t=0;t<v.length;t++){u=v[t];x=d.guid();r[x]=u.id;r[u.id]=x;w.push(new d.File(x,u.name,u.size))}if(w.length){m.trigger(\"FilesAdded\",w)}});m.bind(\"Flash:SecurityError\",function(s,t){m.trigger(\"Error\",{code:d.SECURITY_ERROR,message:d.translate(\"Security error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:GenericError\",function(s,t){m.trigger(\"Error\",{code:d.GENERIC_ERROR,message:d.translate(\"Generic error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:IOError\",function(s,t){m.trigger(\"Error\",{code:d.IO_ERROR,message:d.translate(\"IO error.\"),details:t.message,file:m.getFile(r[t.id])})});m.bind(\"Flash:ImageError\",function(s,t){m.trigger(\"Error\",{code:parseInt(t.code,10),message:d.translate(\"Image error.\"),file:m.getFile(r[t.id])})});m.bind(\"Flash:StageEvent:rollOver\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});m.bind(\"Flash:StageEvent:rollOut\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});m.bind(\"Flash:StageEvent:mouseDown\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(t,u)},s.id)}});m.bind(\"Flash:StageEvent:mouseUp\",function(s){var t,u;t=b.getElementById(m.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});m.bind(\"Flash:ExifData\",function(s,t){m.trigger(\"ExifData\",m.getFile(r[t.id]),t.data)});m.bind(\"Flash:GpsData\",function(s,t){m.trigger(\"GpsData\",m.getFile(r[t.id]),t.data)});m.bind(\"QueueChanged\",function(s){m.refresh()});m.bind(\"FilesRemoved\",function(s,u){var t;for(t=0;t<u.length;t++){n().removeFile(r[u[t].id])}});m.bind(\"StateChanged\",function(s){m.refresh()});m.bind(\"Refresh\",function(s){var t,u,v;n().setFileFilters(m.settings.filters,m.settings.multi_selection);t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+\"_flash_container\").style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"})}});m.bind(\"DisableBrowse\",function(s,t){n().disableBrowse(t)});o({success:true})})}})})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.full.js",
    "content": "/*1.5.4*/\n(function(){var f=0,l=[],n={},j={},a={\"<\":\"lt\",\">\":\"gt\",\"&\":\"amp\",'\"':\"quot\",\"'\":\"#39\"},m=/[<>&\\\"\\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function k(){this.cancelBubble=true}(function(o){var p=o.split(/,/),q,s,r;for(q=0;q<p.length;q+=2){r=p[q+1].split(/ /);for(s=0;s<r.length;s++){j[r[s]]=p[q]}}})(\"application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe\");var g={VERSION:\"1.5.4\",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:j,ua:(function(){var s=navigator,r=s.userAgent,t=s.vendor,p,o,q;p=/WebKit/.test(r);q=p&&t.indexOf(\"Apple\")!==-1;o=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf(\"Win\")!==-1,ie:!p&&!o&&(/MSIE/gi).test(r)&&(/Explorer/gi).test(s.appName),webkit:p,gecko:!p&&/Gecko/.test(r),safari:q,opera:!!o}}()),typeOf:function(p){return({}).toString.call(p).match(/\\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(o){g.each(arguments,function(p,q){if(q>0){g.each(p,function(s,r){o[r]=s})}});return o},cleanName:function(o){var p,q;q=[/[\\300-\\306]/g,\"A\",/[\\340-\\346]/g,\"a\",/\\307/g,\"C\",/\\347/g,\"c\",/[\\310-\\313]/g,\"E\",/[\\350-\\353]/g,\"e\",/[\\314-\\317]/g,\"I\",/[\\354-\\357]/g,\"i\",/\\321/g,\"N\",/\\361/g,\"n\",/[\\322-\\330]/g,\"O\",/[\\362-\\370]/g,\"o\",/[\\331-\\334]/g,\"U\",/[\\371-\\374]/g,\"u\"];for(p=0;p<q.length;p+=2){o=o.replace(q[p],q[p+1])}o=o.replace(/\\s+/g,\"_\");o=o.replace(/[^a-z0-9_\\-\\.]+/gi,\"\");return o},addRuntime:function(o,p){p.name=o;l[o]=p;l.push(p);return p},guid:function(){var o=new Date().getTime().toString(32),p;for(p=0;p<5;p++){o+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||\"p\")+o+(f++).toString(32)},buildUrl:function(p,o){var q=\"\";g.each(o,function(s,r){q+=(q?\"&\":\"\")+encodeURIComponent(r)+\"=\"+encodeURIComponent(s)});if(q){p+=(p.indexOf(\"?\")>0?\"&\":\"?\")+q}return p},each:function(r,s){var q,p,o;if(r){q=r.length;if(q===b){for(p in r){if(r.hasOwnProperty(p)){if(s(r[p],p)===false){return}}}}else{for(o=0;o<q;o++){if(s(r[o],o)===false){return}}}}},formatSize:function(o){if(o===b||/\\D/.test(o)){return g.translate(\"N/A\")}if(o>1073741824){return Math.round(o/1073741824,1)+\" GB\"}if(o>1048576){return Math.round(o/1048576,1)+\" MB\"}if(o>1024){return Math.round(o/1024,1)+\" KB\"}return o+\" b\"},getPos:function(p,t){var u=0,s=0,w,v=document,q,r;p=p;t=t||v.body;function o(C){var A,B,z=0,D=0;if(C){B=C.getBoundingClientRect();A=v.compatMode===\"CSS1Compat\"?v.documentElement:v.body;z=B.left+A.scrollLeft;D=B.top+A.scrollTop}return{x:z,y:D}}if(p&&p.getBoundingClientRect&&((navigator.userAgent.indexOf(\"MSIE\")>0)&&(v.documentMode<8))){q=o(p);r=o(t);return{x:q.x-r.x,y:q.y-r.y}}w=p;while(w&&w!=t&&w.nodeType){u+=w.offsetLeft||0;s+=w.offsetTop||0;w=w.offsetParent}w=p.parentNode;while(w&&w!=t&&w.nodeType){u-=w.scrollLeft||0;s-=w.scrollTop||0;w=w.parentNode}return{x:u,y:s}},getSize:function(o){return{w:o.offsetWidth||o.clientWidth,h:o.offsetHeight||o.clientHeight}},parseSize:function(o){var p;if(typeof(o)==\"string\"){o=/^([0-9]+)([mgk]?)$/.exec(o.toLowerCase().replace(/[^0-9mkg]/g,\"\"));p=o[2];o=+o[1];if(p==\"g\"){o*=1073741824}if(p==\"m\"){o*=1048576}if(p==\"k\"){o*=1024}}return o},xmlEncode:function(o){return o?(\"\"+o).replace(m,function(p){return a[p]?\"&\"+a[p]+\";\":p}):o},toArray:function(q){var p,o=[];for(p=0;p<q.length;p++){o[p]=q[p]}return o},inArray:function(q,r){if(r){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(r,q)}for(var o=0,p=r.length;o<p;o++){if(r[o]===q){return o}}}return -1},addI18n:function(o){return g.extend(n,o)},translate:function(o){return n[o]||o},isEmptyObj:function(o){if(o===b){return true}for(var p in o){return false}return true},hasClass:function(q,p){var o;if(q.className==\"\"){return false}o=new RegExp(\"(^|\\\\s+)\"+p+\"(\\\\s+|$)\");return o.test(q.className)},addClass:function(p,o){if(!g.hasClass(p,o)){p.className=p.className==\"\"?o:p.className.replace(/\\s+$/,\"\")+\" \"+o}},removeClass:function(q,p){var o=new RegExp(\"(^|\\\\s+)\"+p+\"(\\\\s+|$)\");q.className=q.className.replace(o,function(s,r,t){return r===\" \"&&t===\" \"?\" \":\"\"})},getStyle:function(p,o){if(p.currentStyle){return p.currentStyle[o]}else{if(window.getComputedStyle){return window.getComputedStyle(p,null)[o]}}},addEvent:function(t,o,u){var s,r,q,p;p=arguments[3];o=o.toLowerCase();if(e===b){e=\"Plupload_\"+g.guid()}if(t.addEventListener){s=u;t.addEventListener(o,s,false)}else{if(t.attachEvent){s=function(){var v=window.event;if(!v.target){v.target=v.srcElement}v.preventDefault=h;v.stopPropagation=k;u(v)};t.attachEvent(\"on\"+o,s)}}if(t[e]===b){t[e]=g.guid()}if(!d.hasOwnProperty(t[e])){d[t[e]]={}}r=d[t[e]];if(!r.hasOwnProperty(o)){r[o]=[]}r[o].push({func:s,orig:u,key:p})},removeEvent:function(t,o){var r,u,q;if(typeof(arguments[2])==\"function\"){u=arguments[2]}else{q=arguments[2]}o=o.toLowerCase();if(t[e]&&d[t[e]]&&d[t[e]][o]){r=d[t[e]][o]}else{return}for(var p=r.length-1;p>=0;p--){if(r[p].key===q||r[p].orig===u){if(t.removeEventListener){t.removeEventListener(o,r[p].func,false)}else{if(t.detachEvent){t.detachEvent(\"on\"+o,r[p].func)}}r[p].orig=null;r[p].func=null;r.splice(p,1);if(u!==b){break}}}if(!r.length){delete d[t[e]][o]}if(g.isEmptyObj(d[t[e]])){delete d[t[e]];try{delete t[e]}catch(s){t[e]=b}}},removeAllEvents:function(p){var o=arguments[1];if(p[e]===b||!p[e]){return}g.each(d[p[e]],function(r,q){g.removeEvent(p,q,o)})}};g.Uploader=function(s){var p={},v,u=[],r,q=false;v=new g.QueueProgress();s=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:\"file\",filters:[]},s);function t(){var x,y=0,w;if(this.state==g.STARTED){for(w=0;w<u.length;w++){if(!x&&u[w].status==g.QUEUED){x=u[w];x.status=g.UPLOADING;if(this.trigger(\"BeforeUpload\",x)){this.trigger(\"UploadFile\",x)}}else{y++}}if(y==u.length){this.stop();this.trigger(\"UploadComplete\",u)}}}function o(){var x,w;v.reset();for(x=0;x<u.length;x++){w=u[x];if(w.size!==b){v.size+=w.size;v.loaded+=w.loaded}else{v.size=b}if(w.status==g.DONE){v.uploaded++}else{if(w.status==g.FAILED){v.failed++}else{v.queued++}}}if(v.size===b){v.percent=u.length>0?Math.ceil(v.uploaded/u.length*100):0}else{v.bytesPerSec=Math.ceil(v.loaded/((+new Date()-r||1)/1000));v.percent=v.size>0?Math.ceil(v.loaded/v.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:\"\",features:{},files:u,settings:s,total:v,id:g.guid(),init:function(){var B=this,C,y,x,A=0,z;if(typeof(s.preinit)==\"function\"){s.preinit(B)}else{g.each(s.preinit,function(E,D){B.bind(D,E)})}s.page_url=s.page_url||document.location.pathname.replace(/\\/[^\\/]+$/g,\"/\");if(!/^(\\w+:\\/\\/|\\/)/.test(s.url)){s.url=s.page_url+s.url}s.chunk_size=g.parseSize(s.chunk_size);s.max_file_size=g.parseSize(s.max_file_size);B.bind(\"FilesAdded\",function(D,G){var F,E,I=0,J,H=s.filters;if(H&&H.length){J=[];g.each(H,function(K){g.each(K.extensions.split(/,/),function(L){if(/^\\s*\\*\\s*$/.test(L)){J.push(\"\\\\.*\")}else{J.push(\"\\\\.\"+L.replace(new RegExp(\"[\"+(\"/^$.*+?|()[]{}\\\\\".replace(/./g,\"\\\\$&\"))+\"]\",\"g\"),\"\\\\$&\"))}})});J=new RegExp(J.join(\"|\")+\"$\",\"i\")}for(F=0;F<G.length;F++){E=G[F];E.loaded=0;E.percent=0;E.status=g.QUEUED;if(J&&!J.test(E.name)){D.trigger(\"Error\",{code:g.FILE_EXTENSION_ERROR,message:g.translate(\"File extension error.\"),file:E});continue}if(E.size!==b&&E.size>s.max_file_size){D.trigger(\"Error\",{code:g.FILE_SIZE_ERROR,message:g.translate(\"File size error.\"),file:E});continue}u.push(E);I++}if(I){c(function(){B.trigger(\"QueueChanged\");B.refresh()},1)}else{return false}});if(s.unique_names){B.bind(\"UploadFile\",function(D,E){var G=E.name.match(/\\.([^.]+)$/),F=\"tmp\";if(G){F=G[1]}E.target_name=E.id+\".\"+F})}B.bind(\"UploadProgress\",function(D,E){E.percent=E.size>0?Math.ceil(E.loaded/E.size*100):100;o()});B.bind(\"StateChanged\",function(D){if(D.state==g.STARTED){r=(+new Date())}else{if(D.state==g.STOPPED){for(C=D.files.length-1;C>=0;C--){if(D.files[C].status==g.UPLOADING){D.files[C].status=g.QUEUED;o()}}}}});B.bind(\"QueueChanged\",o);B.bind(\"Error\",function(D,E){if(E.file){E.file.status=g.FAILED;o();if(D.state==g.STARTED){c(function(){t.call(B)},1)}}});B.bind(\"FileUploaded\",function(D,E){E.status=g.DONE;E.loaded=E.size;D.trigger(\"UploadProgress\",E);c(function(){t.call(B)},1)});if(s.runtimes){y=[];z=s.runtimes.split(/\\s?,\\s?/);for(C=0;C<z.length;C++){if(l[z[C]]){y.push(l[z[C]])}}}else{y=l}function w(){var G=y[A++],F,D,E;if(G){F=G.getFeatures();D=B.settings.required_features;if(D){D=D.split(\",\");for(E=0;E<D.length;E++){if(!F[D[E]]){w();return}}}G.init(B,function(H){if(H&&H.success){B.features=F;B.runtime=G.name;B.trigger(\"Init\",{runtime:G.name});B.trigger(\"PostInit\");B.refresh()}else{w()}})}else{B.trigger(\"Error\",{code:g.INIT_ERROR,message:g.translate(\"Init error.\")})}}w();if(typeof(s.init)==\"function\"){s.init(B)}else{g.each(s.init,function(E,D){B.bind(D,E)})}},refresh:function(){this.trigger(\"Refresh\")},start:function(){if(u.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger(\"StateChanged\");t.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger(\"CancelUpload\");this.trigger(\"StateChanged\")}},disableBrowse:function(){q=arguments[0]!==b?arguments[0]:true;this.trigger(\"DisableBrowse\",q)},getFile:function(x){var w;for(w=u.length-1;w>=0;w--){if(u[w].id===x){return u[w]}}},removeFile:function(x){var w;for(w=u.length-1;w>=0;w--){if(u[w].id===x.id){return this.splice(w,1)[0]}}},splice:function(y,w){var x;x=u.splice(y===b?0:y,w===b?u.length:w);this.trigger(\"FilesRemoved\",x);this.trigger(\"QueueChanged\");return x},trigger:function(x){var z=p[x.toLowerCase()],y,w;if(z){w=Array.prototype.slice.call(arguments);w[0]=this;for(y=0;y<z.length;y++){if(z[y].func.apply(z[y].scope,w)===false){return false}}}return true},hasEventListener:function(w){return !!p[w.toLowerCase()]},bind:function(w,y,x){var z;w=w.toLowerCase();z=p[w]||[];z.push({func:y,scope:x||this});p[w]=z},unbind:function(w){w=w.toLowerCase();var z=p[w],x,y=arguments[1];if(z){if(y!==b){for(x=z.length-1;x>=0;x--){if(z[x].func===y){z.splice(x,1);break}}}else{z=[]}if(!z.length){delete p[w]}}},unbindAll:function(){var w=this;g.each(p,function(y,x){w.unbind(x)})},destroy:function(){this.stop();this.trigger(\"Destroy\");this.unbindAll()}})};g.File=function(r,p,q){var o=this;o.id=r;o.name=p;o.size=q;o.loaded=0;o.percent=0;o.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(o,p){}};g.QueueProgress=function(){var o=this;o.size=0;o.loaded=0;o.uploaded=0;o.failed=0;o.queued=0;o.percent=0;o.bytesPerSec=0;o.reset=function(){o.size=o.loaded=o.uploaded=o.failed=o.queued=o.percent=o.bytesPerSec=0}};g.runtimes={};window.plupload=g})();(function(){if(window.google&&google.gears){return}var a=null;if(typeof GearsFactory!=\"undefined\"){a=new GearsFactory()}else{try{a=new ActiveXObject(\"Gears.Factory\");if(a.getBuildInfo().indexOf(\"ie_mobile\")!=-1){a.privateSetGlobalObject(this)}}catch(b){if((typeof navigator.mimeTypes!=\"undefined\")&&navigator.mimeTypes[\"application/x-googlegears\"]){a=document.createElement(\"object\");a.style.display=\"none\";a.width=0;a.height=0;a.type=\"application/x-googlegears\";document.documentElement.appendChild(a)}}}if(!a){return}if(!window.google){window.google={}}if(!google.gears){google.gears={factory:a}}})();(function(e,b,c,d){var f={};function a(h,k,m){var g,j,l,o;j=google.gears.factory.create(\"beta.canvas\");try{j.decode(h);if(!k.width){k.width=j.width}if(!k.height){k.height=j.height}o=Math.min(width/j.width,height/j.height);if(o<1||(o===1&&m===\"image/jpeg\")){j.resize(Math.round(j.width*o),Math.round(j.height*o));if(k.quality){return j.encode(m,{quality:k.quality/100})}return j.encode(m)}}catch(n){}return h}c.runtimes.Gears=c.addRuntime(\"gears\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(l,n){var m,h,g=false;if(!e.google||!google.gears){return n({success:false})}try{m=google.gears.factory.create(\"beta.desktop\")}catch(k){return n({success:false})}function j(q){var p,o,r=[],s;for(o=0;o<q.length;o++){p=q[o];s=c.guid();f[s]=p.blob;r.push(new c.File(s,p.name,p.blob.length))}l.trigger(\"FilesAdded\",r)}l.bind(\"PostInit\",function(){var p=l.settings,o=b.getElementById(p.drop_element);if(o){c.addEvent(o,\"dragover\",function(q){m.setDropEffect(q,\"copy\");q.preventDefault()},l.id);c.addEvent(o,\"drop\",function(r){var q=m.getDragData(r,\"application/x-gears-files\");if(q){j(q.files)}r.preventDefault()},l.id);o=0}c.addEvent(b.getElementById(p.browse_button),\"click\",function(u){var t=[],r,q,s;u.preventDefault();if(g){return}no_type_restriction:for(r=0;r<p.filters.length;r++){s=p.filters[r].extensions.split(\",\");for(q=0;q<s.length;q++){if(s[q]===\"*\"){t=[];break no_type_restriction}t.push(\".\"+s[q])}}m.openFiles(j,{singleFile:!p.multi_selection,filter:t})},l.id)});l.bind(\"CancelUpload\",function(){if(h.abort){h.abort()}});l.bind(\"UploadFile\",function(u,r){var w=0,v,s,t=0,q=u.settings.resize,o;if(q&&/\\.(png|jpg|jpeg)$/i.test(r.name)){f[r.id]=a(f[r.id],q,/\\.png$/i.test(r.name)?\"image/png\":\"image/jpeg\")}r.size=f[r.id].length;s=u.settings.chunk_size;o=s>0;v=Math.ceil(r.size/s);if(!o){s=r.size;v=1}function p(){var C,y=u.settings.multipart,x=0,B={name:r.target_name||r.name},z=u.settings.url;function A(E){var D,J=\"----pluploadboundary\"+c.guid(),G=\"--\",I=\"\\r\\n\",F,H;if(y){h.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+J);D=google.gears.factory.create(\"beta.blobbuilder\");c.each(c.extend(B,u.settings.multipart_params),function(L,K){D.append(G+J+I+'Content-Disposition: form-data; name=\"'+K+'\"'+I+I);D.append(L+I)});H=c.mimeTypes[r.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";D.append(G+J+I+'Content-Disposition: form-data; name=\"'+u.settings.file_data_name+'\"; filename=\"'+r.name+'\"'+I+\"Content-Type: \"+H+I+I);D.append(E);D.append(I+G+J+G+I);F=D.getAsBlob();x=F.length-E.length;E=F}h.send(E)}if(r.status==c.DONE||r.status==c.FAILED||u.state==c.STOPPED){return}if(o){B.chunk=w;B.chunks=v}C=Math.min(s,r.size-(w*s));if(!y){z=c.buildUrl(u.settings.url,B)}h=google.gears.factory.create(\"beta.httprequest\");h.open(\"POST\",z);if(!y){h.setRequestHeader(\"Content-Disposition\",'attachment; filename=\"'+r.name+'\"');h.setRequestHeader(\"Content-Type\",\"application/octet-stream\")}c.each(u.settings.headers,function(E,D){h.setRequestHeader(D,E)});h.upload.onprogress=function(D){r.loaded=t+D.loaded-x;u.trigger(\"UploadProgress\",r)};h.onreadystatechange=function(){var D;if(h.readyState==4&&u.state!==c.STOPPED){if(h.status==200){D={chunk:w,chunks:v,response:h.responseText,status:h.status};u.trigger(\"ChunkUploaded\",r,D);if(D.cancelled){r.status=c.FAILED;return}t+=C;if(++w>=v){r.status=c.DONE;u.trigger(\"FileUploaded\",r,{response:h.responseText,status:h.status})}else{p()}}else{u.trigger(\"Error\",{code:c.HTTP_ERROR,message:c.translate(\"HTTP Error.\"),file:r,chunk:w,chunks:v,status:h.status})}}};if(w<v){A(f[r.id].slice(w*s,C))}}p()});l.bind(\"DisableBrowse\",function(o,p){g=p});l.bind(\"Destroy\",function(o){var p,q,r={browseButton:o.settings.browse_button,dropElm:o.settings.drop_element};for(p in r){q=b.getElementById(r[p]);if(q){c.removeAllEvents(q,o.id)}}});n({success:true})}})})(window,document,plupload);(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return\"null\"}if(m===\"string\"){n=\"\\bb\\tt\\nn\\ff\\rr\\\"\\\"''\\\\\\\\\";return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(r,q){var p=n.indexOf(q);if(p+1){return\"\\\\\"+n.charAt(p+1)}r=q.charCodeAt().toString(16);return\"\\\\u\"+\"0000\".substring(r.length)+r})+'\"'}if(m==\"object\"){j=o.length!==e;n=\"\";if(j){for(l=0;l<o.length;l++){if(n){n+=\",\"}n+=c(o[l])}n=\"[\"+n+\"]\"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=\",\"}n+=c(k)+\":\"+c(o[k])}}n=\"{\"+n+\"}\"}return n}return\"\"+o}function f(s){var v=false,j=null,o=null,k,l,m,u,n,q=0;try{try{o=new ActiveXObject(\"AgControl.AgControl\");if(o.IsVersionSupported(s)){v=true}o=null}catch(r){var p=navigator.plugins[\"Silverlight Plug-In\"];if(p){k=p.description;if(k===\"1.0.30226.2\"){k=\"2.0.30226.2\"}l=k.split(\".\");while(l.length>3){l.pop()}while(l.length<4){l.push(0)}m=s.split(\".\");while(m.length>4){m.pop()}do{u=parseInt(m[q],10);n=parseInt(l[q],10);q++}while(q<m.length&&u===n);if(u<=n&&!isNaN(u)){v=true}}}}catch(t){v=false}return v}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]=\"Silverlight:\"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime(\"silverlight\",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m=\"\",n=p.settings.filters,l,k=b.body;if(!f(\"2.0.31005.0\")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement(\"div\");o.id=p.id+\"_silverlight_container\";d.extend(o.style,{position:\"absolute\",top:\"0px\",background:p.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100px\",height:\"100px\",overflow:\"hidden\",opacity:p.settings.shim_bgcolor||b.documentMode>8?\"\":0.01});o.className=\"plupload silverlight\";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,\"position\")===\"static\"){k.style.position=\"relative\"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=\"\"?\"|\":\"\")+n[l].title+\" | *.\"+n[l].extensions.replace(/,/g,\";*.\")}o.innerHTML='<object id=\"'+p.id+'_silverlight\" data=\"data:application/x-silverlight,\" type=\"application/x-silverlight-2\" style=\"outline:none;\" width=\"1024\" height=\"1024\"><param name=\"source\" value=\"'+p.settings.silverlight_xap_url+'\"/><param name=\"background\" value=\"Transparent\"/><param name=\"windowless\" value=\"true\"/><param name=\"enablehtmlaccess\" value=\"true\"/><param name=\"initParams\" value=\"id='+p.id+\",filter=\"+m+\",multiselect=\"+p.settings.multi_selection+'\"/></object>';function j(){return b.getElementById(p.id+\"_silverlight\").content.Upload}p.bind(\"Silverlight:Init\",function(){var r,s={};if(h[p.id]){return}h[p.id]=true;p.bind(\"Silverlight:StartSelectFiles\",function(t){r=[]});p.bind(\"Silverlight:SelectFile\",function(t,w,u,v){var x;x=d.guid();s[x]=w;s[w]=x;r.push(new d.File(x,u,v))});p.bind(\"Silverlight:SelectSuccessful\",function(){if(r.length){p.trigger(\"FilesAdded\",r)}});p.bind(\"Silverlight:UploadChunkError\",function(t,w,u,x,v){p.trigger(\"Error\",{code:d.IO_ERROR,message:\"IO Error.\",details:v,file:t.getFile(s[w])})});p.bind(\"Silverlight:UploadFileProgress\",function(t,x,u,w){var v=t.getFile(s[x]);if(v.status!=d.FAILED){v.size=w;v.loaded=u;t.trigger(\"UploadProgress\",v)}});p.bind(\"Refresh\",function(t){var u,v,w;u=b.getElementById(t.settings.browse_button);if(u){v=d.getPos(u,b.getElementById(t.settings.container));w=d.getSize(u);d.extend(b.getElementById(t.id+\"_silverlight_container\").style,{top:v.y+\"px\",left:v.x+\"px\",width:w.w+\"px\",height:w.h+\"px\"})}});p.bind(\"Silverlight:UploadChunkSuccessful\",function(t,w,u,z,y){var x,v=t.getFile(s[w]);x={chunk:u,chunks:z,response:y};t.trigger(\"ChunkUploaded\",v,x);if(v.status!=d.FAILED&&t.state!==d.STOPPED){j().UploadNextChunk()}if(u==z-1){v.status=d.DONE;t.trigger(\"FileUploaded\",v,{response:y})}});p.bind(\"Silverlight:UploadSuccessful\",function(t,w,u){var v=t.getFile(s[w]);v.status=d.DONE;t.trigger(\"FileUploaded\",v,{response:u})});p.bind(\"FilesRemoved\",function(t,v){var u;for(u=0;u<v.length;u++){j().RemoveFile(s[v[u].id])}});p.bind(\"UploadFile\",function(t,v){var w=t.settings,u=w.resize||{};j().UploadFile(s[v.id],t.settings.url,c({name:v.target_name||v.name,mime:d.mimeTypes[v.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:w.chunk_size,image_width:u.width,image_height:u.height,image_quality:u.quality||90,multipart:!!w.multipart,multipart_params:w.multipart_params||{},file_data_name:w.file_data_name,headers:w.headers}))});p.bind(\"CancelUpload\",function(){j().CancelUpload()});p.bind(\"Silverlight:MouseEnter\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.addClass(u,v)}});p.bind(\"Silverlight:MouseLeave\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.removeClass(u,v)}});p.bind(\"Silverlight:MouseLeftButtonDown\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.addClass(u,v);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(u,v)})}});p.bind(\"Sliverlight:StartSelectFiles\",function(t){var u,v;u=b.getElementById(p.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.removeClass(u,v)}});p.bind(\"DisableBrowse\",function(t,u){j().DisableBrowse(u)});p.bind(\"Destroy\",function(t){var u;d.removeAllEvents(b.body,t.id);delete h[t.id];delete a[t.id];u=b.getElementById(t.id+\"_silverlight_container\");if(u){k.removeChild(u)}});q({success:true})})}})})(window,document,plupload);(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins[\"Shockwave Flash\"];h=h.description}catch(k){try{h=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\").GetVariable(\"$version\")}catch(j){h=\"0.0\"}}h=h.match(/\\d+/g);return parseFloat(h[0]+\".\"+h[1])}d.flash={trigger:function(k,h,j){setTimeout(function(){var n=a[k],m,l;if(n){n.trigger(\"Flash:\"+h,j)}},0)}};d.runtimes.Flash=d.addRuntime(\"flash\",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(n,p){var l,m,h=0,j=b.body;if(c()<10){p({success:false});return}g[n.id]=false;a[n.id]=n;l=b.getElementById(n.settings.browse_button);m=b.createElement(\"div\");m.id=n.id+\"_flash_container\";d.extend(m.style,{position:\"absolute\",top:\"0px\",background:n.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100%\",height:\"100%\"});m.className=\"plupload flash\";if(n.settings.container){j=b.getElementById(n.settings.container);if(d.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}j.appendChild(m);(function(){var q,r;q='<object id=\"'+n.id+'_flash\" type=\"application/x-shockwave-flash\" data=\"'+n.settings.flash_swf_url+'\" ';if(d.ua.ie){q+='classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" '}q+='width=\"100%\" height=\"100%\" style=\"outline:0\"><param name=\"movie\" value=\"'+n.settings.flash_swf_url+'\" /><param name=\"flashvars\" value=\"id='+escape(n.id)+'\" /><param name=\"wmode\" value=\"transparent\" /><param name=\"allowscriptaccess\" value=\"always\" /></object>';if(d.ua.ie){r=b.createElement(\"div\");m.appendChild(r);r.outerHTML=q;r=null}else{m.innerHTML=q}}());function o(){return b.getElementById(n.id+\"_flash\")}function k(){if(h++>5000){p({success:false});return}if(g[n.id]===false){setTimeout(k,1)}}k();l=m=null;n.bind(\"Destroy\",function(q){var r;d.removeAllEvents(b.body,q.id);delete g[q.id];delete a[q.id];r=b.getElementById(q.id+\"_flash_container\");if(r){j.removeChild(r)}});n.bind(\"Flash:Init\",function(){var s={},r;try{o().setFileFilters(n.settings.filters,n.settings.multi_selection)}catch(q){p({success:false});return}if(g[n.id]){return}g[n.id]=true;n.bind(\"UploadFile\",function(t,v){var w=t.settings,u=n.settings.resize||{};o().uploadFile(s[v.id],w.url,{name:v.target_name||v.name,mime:d.mimeTypes[v.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:w.chunk_size,width:u.width,height:u.height,quality:u.quality,multipart:w.multipart,multipart_params:w.multipart_params||{},file_data_name:w.file_data_name,format:/\\.(jpg|jpeg)$/i.test(v.name)?\"jpg\":\"png\",headers:w.headers,urlstream_upload:w.urlstream_upload})});n.bind(\"CancelUpload\",function(){o().cancelUpload()});n.bind(\"Flash:UploadProcess\",function(u,t){var v=u.getFile(s[t.id]);if(v.status!=d.FAILED){v.loaded=t.loaded;v.size=t.size;u.trigger(\"UploadProgress\",v)}});n.bind(\"Flash:UploadChunkComplete\",function(t,v){var w,u=t.getFile(s[v.id]);w={chunk:v.chunk,chunks:v.chunks,response:v.text};t.trigger(\"ChunkUploaded\",u,w);if(u.status!==d.FAILED&&t.state!==d.STOPPED){o().uploadNextChunk()}if(v.chunk==v.chunks-1){u.status=d.DONE;t.trigger(\"FileUploaded\",u,{response:v.text})}});n.bind(\"Flash:SelectFiles\",function(t,w){var v,u,x=[],y;for(u=0;u<w.length;u++){v=w[u];y=d.guid();s[y]=v.id;s[v.id]=y;x.push(new d.File(y,v.name,v.size))}if(x.length){n.trigger(\"FilesAdded\",x)}});n.bind(\"Flash:SecurityError\",function(t,u){n.trigger(\"Error\",{code:d.SECURITY_ERROR,message:d.translate(\"Security error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:GenericError\",function(t,u){n.trigger(\"Error\",{code:d.GENERIC_ERROR,message:d.translate(\"Generic error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:IOError\",function(t,u){n.trigger(\"Error\",{code:d.IO_ERROR,message:d.translate(\"IO error.\"),details:u.message,file:n.getFile(s[u.id])})});n.bind(\"Flash:ImageError\",function(t,u){n.trigger(\"Error\",{code:parseInt(u.code,10),message:d.translate(\"Image error.\"),file:n.getFile(s[u.id])})});n.bind(\"Flash:StageEvent:rollOver\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.addClass(u,v)}});n.bind(\"Flash:StageEvent:rollOut\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_hover;if(u&&v){d.removeClass(u,v)}});n.bind(\"Flash:StageEvent:mouseDown\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.addClass(u,v);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(u,v)},t.id)}});n.bind(\"Flash:StageEvent:mouseUp\",function(t){var u,v;u=b.getElementById(n.settings.browse_button);v=t.settings.browse_button_active;if(u&&v){d.removeClass(u,v)}});n.bind(\"Flash:ExifData\",function(t,u){n.trigger(\"ExifData\",n.getFile(s[u.id]),u.data)});n.bind(\"Flash:GpsData\",function(t,u){n.trigger(\"GpsData\",n.getFile(s[u.id]),u.data)});n.bind(\"QueueChanged\",function(t){n.refresh()});n.bind(\"FilesRemoved\",function(t,v){var u;for(u=0;u<v.length;u++){o().removeFile(s[v[u].id])}});n.bind(\"StateChanged\",function(t){n.refresh()});n.bind(\"Refresh\",function(t){var u,v,w;o().setFileFilters(n.settings.filters,n.settings.multi_selection);u=b.getElementById(t.settings.browse_button);if(u){v=d.getPos(u,b.getElementById(t.settings.container));w=d.getSize(u);d.extend(b.getElementById(t.id+\"_flash_container\").style,{top:v.y+\"px\",left:v.x+\"px\",width:w.w+\"px\",height:w.h+\"px\"})}});n.bind(\"DisableBrowse\",function(t,u){o().disableBrowse(u)});p({success:true})})}})})(window,document,plupload);(function(a){a.runtimes.BrowserPlus=a.addRuntime(\"browserplus\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,j){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(o){var n,m,k=[],l,p;for(m=0;m<o.length;m++){l=o[m];p=a.guid();h[p]=l;k.push(new a.File(p,l.name,l.size))}if(m){g.trigger(\"FilesAdded\",k)}}function b(){var k=false;g.bind(\"PostInit\",function(){var o,m=d.drop_element,q=g.id+\"_droptarget\",l=document.getElementById(m),n;function r(t,s){e.DragAndDrop.AddDropTarget({id:t},function(u){e.DragAndDrop.AttachCallbacks({id:t,hover:function(v){if(!v&&s){s()}},drop:function(v){if(s){s()}f(v)}},function(){})})}function p(){document.getElementById(q).style.top=\"-1000px\"}if(l){if(document.attachEvent&&(/MSIE/gi).test(navigator.userAgent)){o=document.createElement(\"div\");o.setAttribute(\"id\",q);a.extend(o.style,{position:\"absolute\",top:\"-1000px\",background:\"red\",filter:\"alpha(opacity=0)\",opacity:0});document.body.appendChild(o);a.addEvent(l,\"dragenter\",function(t){var s,u;s=document.getElementById(m);u=a.getPos(s);a.extend(document.getElementById(q).style,{top:u.y+\"px\",left:u.x+\"px\",width:s.offsetWidth+\"px\",height:s.offsetHeight+\"px\"})});r(q,p)}else{r(m)}}a.addEvent(document.getElementById(d.browse_button),\"click\",function(y){var s=[],u,t,x=d.filters,w,v;y.preventDefault();if(k){return}no_type_restriction:for(u=0;u<x.length;u++){w=x[u].extensions.split(\",\");for(t=0;t<w.length;t++){if(w[t]===\"*\"){s=[];break no_type_restriction}v=a.mimeTypes[w[t]];if(v&&a.inArray(v,s)===-1){s.push(a.mimeTypes[w[t]])}}}e.FileBrowse.OpenBrowseDialog({mimeTypes:s},function(z){if(z.success){f(z.value)}})});l=o=null});g.bind(\"CancelUpload\",function(){e.Uploader.cancel({},function(){})});g.bind(\"DisableBrowse\",function(l,m){k=m});g.bind(\"UploadFile\",function(o,l){var n=h[l.id],t={},m=o.settings.chunk_size,p,q=[];function s(u,w){var v;if(l.status==a.FAILED){return}t.name=l.target_name||l.name;if(m){t.chunk=\"\"+u;t.chunks=\"\"+w}v=q.shift();e.Uploader.upload({url:o.settings.url,files:{file:v},cookies:document.cookies,postvars:a.extend(t,o.settings.multipart_params),progressCallback:function(z){var y,x=0;p[u]=parseInt(z.filePercent*v.size/100,10);for(y=0;y<p.length;y++){x+=p[y]}l.loaded=x;o.trigger(\"UploadProgress\",l)}},function(y){var x,z;if(y.success){x=y.value.statusCode;if(m){o.trigger(\"ChunkUploaded\",l,{chunk:u,chunks:w,response:y.value.body,status:x})}if(q.length>0){s(++u,w)}else{l.status=a.DONE;o.trigger(\"FileUploaded\",l,{response:y.value.body,status:x});if(x>=400){o.trigger(\"Error\",{code:a.HTTP_ERROR,message:a.translate(\"HTTP Error.\"),file:l,status:x})}}}else{o.trigger(\"Error\",{code:a.GENERIC_ERROR,message:a.translate(\"Generic Error.\"),file:l,details:y.error})}})}function r(u){l.size=u.size;if(m){e.FileAccess.chunk({file:u,chunkSize:m},function(x){if(x.success){var y=x.value,v=y.length;p=Array(v);for(var w=0;w<v;w++){p[w]=0;q.push(y[w])}s(0,v)}})}else{p=Array(1);q.push(u);s(0,1)}}if(c&&/\\.(png|jpg|jpeg)$/i.test(l.name)){BrowserPlus.ImageAlter.transform({file:n,quality:c.quality||90,actions:[{scale:{maxwidth:c.width,maxheight:c.height}}]},function(u){if(u.success){r(u.value.file)}})}else{r(n)}});j({success:true})}if(e){e.init(function(l){var k=[{service:\"Uploader\",version:\"3\"},{service:\"DragAndDrop\",version:\"1\"},{service:\"FileBrowse\",version:\"1\"},{service:\"FileAccess\",version:\"2\"}];if(c){k.push({service:\"ImageAlter\",version:\"4\"})}if(l.success){e.require({services:k},function(m){if(m.success){b()}else{j()}})}else{j()}})}else{j()}}})})(plupload);(function(h,k,j,e){var c={},g;function m(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsDataURL(o);n.onload=function(){p(n.result)}}else{return p(o.getAsDataURL())}}function l(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsBinaryString(o);n.onload=function(){p(n.result)}}else{return p(o.getAsBinary())}}function d(r,p,n,v){var q,o,u,s,t=this;m(c[r.id],function(w){q=k.createElement(\"canvas\");q.style.display=\"none\";k.body.appendChild(q);o=q.getContext(\"2d\");u=new Image();u.onerror=u.onabort=function(){v({success:false})};u.onload=function(){var B,x,z,y,A;if(!p.width){p.width=u.width}if(!p.height){p.height=u.height}s=Math.min(p.width/u.width,p.height/u.height);if(s<1||(s===1&&n===\"image/jpeg\")){B=Math.round(u.width*s);x=Math.round(u.height*s);q.width=B;q.height=x;o.drawImage(u,0,0,B,x);if(n===\"image/jpeg\"){y=new f(atob(w.substring(w.indexOf(\"base64,\")+7)));if(y.headers&&y.headers.length){A=new a();if(A.init(y.get(\"exif\")[0])){A.setExif(\"PixelXDimension\",B);A.setExif(\"PixelYDimension\",x);y.set(\"exif\",A.getBinary());if(t.hasEventListener(\"ExifData\")){t.trigger(\"ExifData\",r,A.EXIF())}if(t.hasEventListener(\"GpsData\")){t.trigger(\"GpsData\",r,A.GPS())}}}if(p.quality){try{w=q.toDataURL(n,p.quality/100)}catch(C){w=q.toDataURL(n)}}}else{w=q.toDataURL(n)}w=w.substring(w.indexOf(\"base64,\")+7);w=atob(w);if(y&&y.headers&&y.headers.length){w=y.restore(w);y.purge()}q.parentNode.removeChild(q);v({success:true,data:w})}else{v({success:false})}};u.src=w})}j.runtimes.Html5=j.addRuntime(\"html5\",{getFeatures:function(){var s,o,r,q,p,n;o=r=p=n=false;if(h.XMLHttpRequest){s=new XMLHttpRequest();r=!!s.upload;o=!!(s.sendAsBinary||s.upload)}if(o){q=!!(s.sendAsBinary||(h.Uint8Array&&h.ArrayBuffer));p=!!(File&&(File.prototype.getAsDataURL||h.FileReader)&&q);n=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}g=j.ua.safari&&j.ua.windows;return{html5:o,dragdrop:(function(){var t=k.createElement(\"div\");return(\"draggable\" in t)||(\"ondragstart\" in t&&\"ondrop\" in t)}()),jpgresize:p,pngresize:p,multipart:p||!!h.FileReader||!!h.FormData,canSendBinary:q,cantSendBlobInFormData:!!(j.ua.gecko&&h.FormData&&h.FileReader&&!FileReader.prototype.readAsArrayBuffer),progress:r,chunks:n,multi_selection:!(j.ua.safari&&j.ua.windows),triggerDialog:(j.ua.gecko&&h.FormData||j.ua.webkit)}},init:function(p,r){var n,q;function o(w){var u,t,v=[],x,s={};for(t=0;t<w.length;t++){u=w[t];if(s[u.name]){continue}s[u.name]=true;x=j.guid();c[x]=u;v.push(new j.File(x,u.fileName||u.name,u.fileSize||u.size))}if(v.length){p.trigger(\"FilesAdded\",v)}}n=this.getFeatures();if(!n.html5){r({success:false});return}p.bind(\"Init\",function(w){var G,F,C=[],v,D,t=w.settings.filters,u,B,s=k.body,E;G=k.createElement(\"div\");G.id=w.id+\"_html5_container\";j.extend(G.style,{position:\"absolute\",background:p.settings.shim_bgcolor||\"transparent\",width:\"100px\",height:\"100px\",overflow:\"hidden\",zIndex:99999,opacity:p.settings.shim_bgcolor?\"\":0});G.className=\"plupload html5\";if(p.settings.container){s=k.getElementById(p.settings.container);if(j.getStyle(s,\"position\")===\"static\"){s.style.position=\"relative\"}}s.appendChild(G);no_type_restriction:for(v=0;v<t.length;v++){u=t[v].extensions.split(/,/);for(D=0;D<u.length;D++){if(u[D]===\"*\"){C=[];break no_type_restriction}B=j.mimeTypes[u[D]];if(B&&j.inArray(B,C)===-1){C.push(B)}}}G.innerHTML='<input id=\"'+p.id+'_html5\"  style=\"font-size:999px\" type=\"file\" accept=\"'+C.join(\",\")+'\" '+(p.settings.multi_selection&&p.features.multi_selection?'multiple=\"multiple\"':\"\")+\" />\";G.scrollTop=100;E=k.getElementById(p.id+\"_html5\");if(w.features.triggerDialog){j.extend(E.style,{position:\"absolute\",width:\"100%\",height:\"100%\"})}else{j.extend(E.style,{cssFloat:\"right\",styleFloat:\"right\"})}E.onchange=function(){o(this.files);this.value=\"\"};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,\"mouseover\",function(){j.addClass(F,z)},w.id);j.addEvent(x,\"mouseout\",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,\"mousedown\",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,\"mouseup\",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,\"click\",function(H){var y=k.getElementById(w.id+\"_html5\");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind(\"PostInit\",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,\"dragenter\",function(w){var v,t,u;v=k.getElementById(p.id+\"_drop\");if(!v){v=k.createElement(\"input\");v.setAttribute(\"type\",\"file\");v.setAttribute(\"id\",p.id+\"_drop\");v.setAttribute(\"multiple\",\"multiple\");j.addEvent(v,\"change\",function(){o(this.files);j.removeEvent(v,\"change\",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,\"position\")===\"static\"){j.extend(s.style,{position:\"relative\"})}j.extend(v.style,{position:\"absolute\",display:\"block\",top:0,left:0,width:u.w+\"px\",height:u.h+\"px\",opacity:0})},p.id);return}j.addEvent(s,\"dragover\",function(t){t.preventDefault()},p.id);j.addEvent(s,\"drop\",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind(\"Refresh\",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+\"_html5_container\");j.extend(x.style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"});if(p.features.triggerDialog){if(j.getStyle(t,\"position\")===\"static\"){j.extend(t.style,{position:\"relative\"})}w=parseInt(j.getStyle(t,\"z-index\"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind(\"DisableBrowse\",function(s,u){var t=k.getElementById(s.id+\"_html5\");if(t){t.disabled=u}});p.bind(\"CancelUpload\",function(){if(q&&q.abort){q.abort()}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=(\"FileReader\" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N=\"----pluploadboundary\"+j.guid(),O,P=\"--\",U=\"\\r\\n\",R=\"\";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger(\"UploadProgress\",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger(\"Error\",{code:j.HTTP_ERROR,message:j.translate(\"HTTP Error.\"),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger(\"ChunkUploaded\",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger(\"UploadProgress\",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger(\"FileUploaded\",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open(\"post\",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!==\"string\"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)===\"string\"){q.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name=\"'+W+'\"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";R+=P+N+U+'Content-Disposition: form-data; name=\"'+s.settings.file_data_name+'\"; filename=\"'+unescape(encodeURIComponent(u.name))+'\"'+U+\"Content-Type: \"+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Q<V.length;Q++){S[Q]=(V.charCodeAt(Q)&255)}q.send(S.buffer)}}return}}E=j.buildUrl(s.settings.url,j.extend(L,s.settings.multipart_params));q.open(\"post\",E,true);q.setRequestHeader(\"Content-Type\",\"application/octet-stream\");j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});q.send(V)}if(u.status==j.DONE||u.status==j.FAILED||s.state==j.STOPPED){return}L={name:u.target_name||u.name};if(v.chunk_size&&u.size>v.chunk_size&&(n.chunks||typeof(A)==\"string\")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)==\"string\"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!==\"string\"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\\.png$/i.test(u.name)?\"image/png\":\"image/jpeg\",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind(\"Destroy\",function(s){var u,v,t=k.body,w={inputContainer:s.id+\"_html5_container\",inputFile:s.id+\"_html5\",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u<v;u++){w|=(o.charCodeAt(t+u)<<Math.abs(s+u*8))}return w}function n(u,s,t){var t=arguments.length===3?t:o.length-s-1;o=o.substr(0,s)+u+o.substr(t+s)}function p(t,u,w){var x=\"\",s=q?0:-8*(w-1),v;for(v=0;v<w;v++){x+=String.fromCharCode((u>>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u=\"\";for(t+=s;s<t;s++){u+=String.fromCharCode(r(s,1))}return u}}}function f(s){var u={65505:{app:\"EXIF\",name:\"APP1\",signature:\"Exif\\0\"},65506:{app:\"ICC\",name:\"APP2\",signature:\"ICC_PROFILE\\0\"},65517:{app:\"IPTC\",name:\"APP13\",signature:\"Photoshop 3.0\\0\"}},t=[],r,n,p=e,q=0,o;r=new b();r.init(s);if(r.SHORT(0)!==65496){return}n=2;o=Math.min(1048576,s.length);while(n<=o){p=r.SHORT(n);if(p>=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,\"\")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x<v;x++){r.SEGMENT(n,0,t[x].segment);n+=t[x].length}return r.SEGMENT()},get:function(x){var y=[];for(var w=0,v=t.length;w<v;w++){if(t[w].app===x.toUpperCase()){y.push(t[w].segment)}}return y},set:function(y,x){var z=[];if(typeof(x)===\"string\"){z.push(x)}else{z=x}for(var w=ii=0,v=t.length;w<v;w++){if(t[w].app===y.toUpperCase()){t[w].segment=z[ii];t[w].length=z[ii].length;ii++}if(ii>=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:\"Orientation\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\"},exif:{36864:\"ExifVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",36867:\"DateTimeOriginal\",33434:\"ExposureTime\",33437:\"FNumber\",34855:\"ISOSpeedRatings\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41990:\"SceneCaptureType\",41988:\"DigitalZoomRatio\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\"},gps:{0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\"}};t={ColorSpace:{1:\"sRGB\",0:\"Uncalibrated\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{1:\"Daylight\",2:\"Fliorescent\",3:\"Tungsten\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 -5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire.\",1:\"Flash fired.\",5:\"Strobe return light not detected.\",7:\"Strobe return light detected.\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},ExposureMode:{0:\"Auto exposure\",1:\"Manual exposure\",2:\"Auto bracket\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},GPSLatitudeRef:{N:\"North latitude\",S:\"South latitude\"},GPSLongitudeRef:{E:\"East longitude\",W:\"West longitude\"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z<w;z++){x=v=u+12*z+2;G=C[q.SHORT(x)];if(G===e){continue}B=q.SHORT(x+=2);A=q.LONG(x+=2);x+=4;E=[];switch(B){case 1:case 7:if(A>4){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.BYTE(x+F)}break;case 2:if(A>4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.SHORT(x+F*2)}break;case 4:if(A>1){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)}break;case 5:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)/q.LONG(x+F*4+4)}break;case 9:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)}break;case 10:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)/q.SLONG(x+F*4+4)}break;default:continue}D=(A==1?E[0]:E);if(t.hasOwnProperty(G)&&typeof D!=\"object\"){y[G]=t[G][D]}else{y[G]=D}}return y}function s(){var v=e,u=o.tiffHeader;q.II(q.SHORT(u)==18761);if(q.SHORT(u+=2)!==42){return false}o.IFD0=o.tiffHeader+q.LONG(u+=2);v=p(o.IFD0,n.tiff);o.exifIFD=(\"ExifIFDPointer\" in v?o.tiffHeader+v.ExifIFDPointer:e);o.gpsIFD=(\"GPSInfoIFDPointer\" in v?o.tiffHeader+v.GPSInfoIFDPointer:e);return true}function r(w,u,z){var B,y,x,A=0;if(typeof(u)===\"string\"){var v=n[w.toLowerCase()];for(hex in v){if(v[hex]===u){u=hex;break}}}B=o[w.toLowerCase()+\"IFD\"];y=q.SHORT(B);for(i=0;i<y;i++){x=B+12*i+2;if(q.SHORT(x)==u){A=x+8;break}}if(!A){return false}q.LONG(A,z);return true}return{init:function(u){o={tiffHeader:10};if(u===e||!u.length){return false}q.init(u);if(q.SHORT(0)===65505&&q.STRING(4,5).toUpperCase()===\"EXIF\\0\"){return s()}return false},EXIF:function(){var v;v=p(o.exifIFD,n.exif);if(v.ExifVersion&&j.typeOf(v.ExifVersion)===\"array\"){for(var w=0,u=\"\";w<v.ExifVersion.length;w++){u+=String.fromCharCode(v.ExifVersion[w])}v.ExifVersion=u}return v},GPS:function(){var u;u=p(o.gpsIFD,n.gps);if(u.GPSVersionID){u.GPSVersionID=u.GPSVersionID.join(\".\")}return u},setExif:function(u,v){if(u!==\"PixelXDimension\"&&u!==\"PixelYDimension\"){return false}return r(\"exif\",u,v)},getBinary:function(){return q.SEGMENT()}}}})(window,document,plupload);(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime(\"html4\",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind(\"Init\",function(p){var j=a.body,n,h=\"javascript\",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]===\"*\"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(\",\");function v(){var C,A,y,B;q=b.guid();z.push(q);C=a.createElement(\"form\");C.setAttribute(\"id\",\"form_\"+q);C.setAttribute(\"method\",\"post\");C.setAttribute(\"enctype\",\"multipart/form-data\");C.setAttribute(\"encoding\",\"multipart/form-data\");C.setAttribute(\"target\",p.id+\"_iframe\");C.style.position=\"absolute\";A=a.createElement(\"input\");A.setAttribute(\"id\",\"input_\"+q);A.setAttribute(\"type\",\"file\");A.setAttribute(\"accept\",t);A.setAttribute(\"size\",1);B=e(p.settings.browse_button);if(p.features.triggerDialog&&B){b.addEvent(e(p.settings.browse_button),\"click\",function(D){if(!A.disabled){A.click()}D.preventDefault()},p.id)}b.extend(A.style,{width:\"100%\",height:\"100%\",opacity:0,fontSize:\"99px\",cursor:\"pointer\"});b.extend(C.style,{overflow:\"hidden\"});y=p.settings.shim_bgcolor;if(y){C.style.background=y}if(r){b.extend(A.style,{filter:\"alpha(opacity=0)\"})}b.addEvent(A,\"change\",function(G){var E=G.target,D,F=[],H;if(E.value){e(\"form_\"+q).style.top=-1048575+\"px\";D=E.value.replace(/\\\\/g,\"/\");D=D.substring(D.length,D.lastIndexOf(\"/\")+1);F.push(new b.File(q,D));if(!p.features.triggerDialog){b.removeAllEvents(C,p.id)}else{b.removeEvent(B,\"click\",p.id)}b.removeEvent(A,\"change\",p.id);v();if(F.length){f.trigger(\"FilesAdded\",F)}}},p.id);C.appendChild(A);j.appendChild(C);p.refresh()}function u(){var y=a.createElement(\"div\");y.innerHTML='<iframe id=\"'+p.id+'_iframe\" name=\"'+p.id+'_iframe\" src=\"'+h+':&quot;&quot;\" style=\"display:none\"></iframe>';n=y.firstChild;j.appendChild(n);b.addEvent(n,\"load\",function(D){var E=D.target,C,A;if(!k){return}try{C=E.contentWindow.document||E.contentDocument||d.frames[E.id].document}catch(B){p.trigger(\"Error\",{code:b.SECURITY_ERROR,message:b.translate(\"Security error.\"),file:k});return}A=C.body.innerHTML;if(A){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger(\"UploadProgress\",k);p.trigger(\"FileUploaded\",k,{response:A})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}p.bind(\"UploadFile\",function(y,B){var C,A;if(B.status==b.DONE||B.status==b.FAILED||y.state==b.STOPPED){return}C=e(\"form_\"+B.id);A=e(\"input_\"+B.id);A.setAttribute(\"name\",y.settings.file_data_name);C.setAttribute(\"action\",y.settings.url);b.each(b.extend({name:B.target_name||B.name},y.settings.multipart_params),function(F,D){var E=a.createElement(\"input\");b.extend(E,{type:\"hidden\",name:D,value:F});C.insertBefore(E,C.firstChild)});k=B;e(\"form_\"+q).style.top=-1048575+\"px\";C.submit()});p.bind(\"FileUploaded\",function(y){y.refresh()});p.bind(\"StateChanged\",function(y){if(y.state==b.STARTED){u()}else{if(y.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,\"load\",y.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(y.files,function(B,A){if(B.status===b.DONE||B.status===b.FAILED){var C=e(\"form_\"+B.id);if(C){C.parentNode.removeChild(C)}}})});p.bind(\"Refresh\",function(A){var G,B,C,D,y,H,I,F,E;G=e(A.settings.browse_button);if(G){y=b.getPos(G,e(A.settings.container));H=b.getSize(G);I=e(\"form_\"+q);F=e(\"input_\"+q);b.extend(I.style,{top:y.y+\"px\",left:y.x+\"px\",width:H.w+\"px\",height:H.h+\"px\"});if(A.features.triggerDialog){if(b.getStyle(G,\"position\")===\"static\"){b.extend(G.style,{position:\"relative\"})}E=parseInt(G.style.zIndex,10);if(isNaN(E)){E=0}b.extend(G.style,{zIndex:E});b.extend(I.style,{zIndex:E-1})}C=A.settings.browse_button_hover;D=A.settings.browse_button_active;B=A.features.triggerDialog?G:I;if(C){b.addEvent(B,\"mouseover\",function(){b.addClass(G,C)},A.id);b.addEvent(B,\"mouseout\",function(){b.removeClass(G,C)},A.id)}if(D){b.addEvent(B,\"mousedown\",function(){b.addClass(G,D)},A.id);b.addEvent(a.body,\"mouseup\",function(){b.removeClass(G,D)},A.id)}}});f.bind(\"FilesRemoved\",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e(\"form_\"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind(\"DisableBrowse\",function(y,B){var A=a.getElementById(\"input_\"+q);if(A){A.disabled=B}});f.bind(\"Destroy\",function(y){var A,B,C,D={inputContainer:\"form_\"+q,inputFile:\"input_\"+q,browseButton:y.settings.browse_button};for(A in D){B=e(D[A]);if(B){b.removeAllEvents(B,y.id)}}b.removeAllEvents(a.body,y.id);b.each(z,function(F,E){C=e(\"form_\"+F);if(C){j.removeChild(C)}})});v()});g({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.gears.js",
    "content": "(function(){if(window.google&&google.gears){return}var a=null;if(typeof GearsFactory!=\"undefined\"){a=new GearsFactory()}else{try{a=new ActiveXObject(\"Gears.Factory\");if(a.getBuildInfo().indexOf(\"ie_mobile\")!=-1){a.privateSetGlobalObject(this)}}catch(b){if((typeof navigator.mimeTypes!=\"undefined\")&&navigator.mimeTypes[\"application/x-googlegears\"]){a=document.createElement(\"object\");a.style.display=\"none\";a.width=0;a.height=0;a.type=\"application/x-googlegears\";document.documentElement.appendChild(a)}}}if(!a){return}if(!window.google){window.google={}}if(!google.gears){google.gears={factory:a}}})();(function(e,b,c,d){var f={};function a(h,j,l){var g,i,k,n;i=google.gears.factory.create(\"beta.canvas\");try{i.decode(h);if(!j.width){j.width=i.width}if(!j.height){j.height=i.height}n=Math.min(width/i.width,height/i.height);if(n<1||(n===1&&l===\"image/jpeg\")){i.resize(Math.round(i.width*n),Math.round(i.height*n));if(j.quality){return i.encode(l,{quality:j.quality/100})}return i.encode(l)}}catch(m){}return h}c.runtimes.Gears=c.addRuntime(\"gears\",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(k,m){var l,h,g=false;if(!e.google||!google.gears){return m({success:false})}try{l=google.gears.factory.create(\"beta.desktop\")}catch(j){return m({success:false})}function i(p){var o,n,q=[],r;for(n=0;n<p.length;n++){o=p[n];r=c.guid();f[r]=o.blob;q.push(new c.File(r,o.name,o.blob.length))}k.trigger(\"FilesAdded\",q)}k.bind(\"PostInit\",function(){var o=k.settings,n=b.getElementById(o.drop_element);if(n){c.addEvent(n,\"dragover\",function(p){l.setDropEffect(p,\"copy\");p.preventDefault()},k.id);c.addEvent(n,\"drop\",function(q){var p=l.getDragData(q,\"application/x-gears-files\");if(p){i(p.files)}q.preventDefault()},k.id);n=0}c.addEvent(b.getElementById(o.browse_button),\"click\",function(t){var s=[],q,p,r;t.preventDefault();if(g){return}no_type_restriction:for(q=0;q<o.filters.length;q++){r=o.filters[q].extensions.split(\",\");for(p=0;p<r.length;p++){if(r[p]===\"*\"){s=[];break no_type_restriction}s.push(\".\"+r[p])}}l.openFiles(i,{singleFile:!o.multi_selection,filter:s})},k.id)});k.bind(\"CancelUpload\",function(){if(h.abort){h.abort()}});k.bind(\"UploadFile\",function(t,q){var v=0,u,r,s=0,p=t.settings.resize,n;if(p&&/\\.(png|jpg|jpeg)$/i.test(q.name)){f[q.id]=a(f[q.id],p,/\\.png$/i.test(q.name)?\"image/png\":\"image/jpeg\")}q.size=f[q.id].length;r=t.settings.chunk_size;n=r>0;u=Math.ceil(q.size/r);if(!n){r=q.size;u=1}function o(){var B,x=t.settings.multipart,w=0,A={name:q.target_name||q.name},y=t.settings.url;function z(D){var C,I=\"----pluploadboundary\"+c.guid(),F=\"--\",H=\"\\r\\n\",E,G;if(x){h.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+I);C=google.gears.factory.create(\"beta.blobbuilder\");c.each(c.extend(A,t.settings.multipart_params),function(K,J){C.append(F+I+H+'Content-Disposition: form-data; name=\"'+J+'\"'+H+H);C.append(K+H)});G=c.mimeTypes[q.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";C.append(F+I+H+'Content-Disposition: form-data; name=\"'+t.settings.file_data_name+'\"; filename=\"'+q.name+'\"'+H+\"Content-Type: \"+G+H+H);C.append(D);C.append(H+F+I+F+H);E=C.getAsBlob();w=E.length-D.length;D=E}h.send(D)}if(q.status==c.DONE||q.status==c.FAILED||t.state==c.STOPPED){return}if(n){A.chunk=v;A.chunks=u}B=Math.min(r,q.size-(v*r));if(!x){y=c.buildUrl(t.settings.url,A)}h=google.gears.factory.create(\"beta.httprequest\");h.open(\"POST\",y);if(!x){h.setRequestHeader(\"Content-Disposition\",'attachment; filename=\"'+q.name+'\"');h.setRequestHeader(\"Content-Type\",\"application/octet-stream\")}c.each(t.settings.headers,function(D,C){h.setRequestHeader(C,D)});h.upload.onprogress=function(C){q.loaded=s+C.loaded-w;t.trigger(\"UploadProgress\",q)};h.onreadystatechange=function(){var C;if(h.readyState==4&&t.state!==c.STOPPED){if(h.status==200){C={chunk:v,chunks:u,response:h.responseText,status:h.status};t.trigger(\"ChunkUploaded\",q,C);if(C.cancelled){q.status=c.FAILED;return}s+=B;if(++v>=u){q.status=c.DONE;t.trigger(\"FileUploaded\",q,{response:h.responseText,status:h.status})}else{o()}}else{t.trigger(\"Error\",{code:c.HTTP_ERROR,message:c.translate(\"HTTP Error.\"),file:q,chunk:v,chunks:u,status:h.status})}}};if(v<u){z(f[q.id].slice(v*r,B))}}o()});k.bind(\"DisableBrowse\",function(n,o){g=o});k.bind(\"Destroy\",function(n){var o,p,q={browseButton:n.settings.browse_button,dropElm:n.settings.drop_element};for(o in q){p=b.getElementById(q[o]);if(p){c.removeAllEvents(p,n.id)}}});m({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html4.js",
    "content": "(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime(\"html4\",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind(\"Init\",function(p){var j=a.body,n,h=\"javascript\",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]===\"*\"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(\",\");function v(){var B,y,i,A;q=b.guid();z.push(q);B=a.createElement(\"form\");B.setAttribute(\"id\",\"form_\"+q);B.setAttribute(\"method\",\"post\");B.setAttribute(\"enctype\",\"multipart/form-data\");B.setAttribute(\"encoding\",\"multipart/form-data\");B.setAttribute(\"target\",p.id+\"_iframe\");B.style.position=\"absolute\";y=a.createElement(\"input\");y.setAttribute(\"id\",\"input_\"+q);y.setAttribute(\"type\",\"file\");y.setAttribute(\"accept\",t);y.setAttribute(\"size\",1);A=e(p.settings.browse_button);if(p.features.triggerDialog&&A){b.addEvent(e(p.settings.browse_button),\"click\",function(C){if(!y.disabled){y.click()}C.preventDefault()},p.id)}b.extend(y.style,{width:\"100%\",height:\"100%\",opacity:0,fontSize:\"99px\",cursor:\"pointer\"});b.extend(B.style,{overflow:\"hidden\"});i=p.settings.shim_bgcolor;if(i){B.style.background=i}if(r){b.extend(y.style,{filter:\"alpha(opacity=0)\"})}b.addEvent(y,\"change\",function(F){var D=F.target,C,E=[],G;if(D.value){e(\"form_\"+q).style.top=-1048575+\"px\";C=D.value.replace(/\\\\/g,\"/\");C=C.substring(C.length,C.lastIndexOf(\"/\")+1);E.push(new b.File(q,C));if(!p.features.triggerDialog){b.removeAllEvents(B,p.id)}else{b.removeEvent(A,\"click\",p.id)}b.removeEvent(y,\"change\",p.id);v();if(E.length){f.trigger(\"FilesAdded\",E)}}},p.id);B.appendChild(y);j.appendChild(B);p.refresh()}function u(){var i=a.createElement(\"div\");i.innerHTML='<iframe id=\"'+p.id+'_iframe\" name=\"'+p.id+'_iframe\" src=\"'+h+':&quot;&quot;\" style=\"display:none\"></iframe>';n=i.firstChild;j.appendChild(n);b.addEvent(n,\"load\",function(C){var D=C.target,B,y;if(!k){return}try{B=D.contentWindow.document||D.contentDocument||d.frames[D.id].document}catch(A){p.trigger(\"Error\",{code:b.SECURITY_ERROR,message:b.translate(\"Security error.\"),file:k});return}y=B.body.innerHTML;if(y){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger(\"UploadProgress\",k);p.trigger(\"FileUploaded\",k,{response:y})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,\"position\")===\"static\"){j.style.position=\"relative\"}}p.bind(\"UploadFile\",function(i,A){var B,y;if(A.status==b.DONE||A.status==b.FAILED||i.state==b.STOPPED){return}B=e(\"form_\"+A.id);y=e(\"input_\"+A.id);y.setAttribute(\"name\",i.settings.file_data_name);B.setAttribute(\"action\",i.settings.url);b.each(b.extend({name:A.target_name||A.name},i.settings.multipart_params),function(E,C){var D=a.createElement(\"input\");b.extend(D,{type:\"hidden\",name:C,value:E});B.insertBefore(D,B.firstChild)});k=A;e(\"form_\"+q).style.top=-1048575+\"px\";B.submit()});p.bind(\"FileUploaded\",function(i){i.refresh()});p.bind(\"StateChanged\",function(i){if(i.state==b.STARTED){u()}else{if(i.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,\"load\",i.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(i.files,function(A,y){if(A.status===b.DONE||A.status===b.FAILED){var B=e(\"form_\"+A.id);if(B){B.parentNode.removeChild(B)}}})});p.bind(\"Refresh\",function(y){var F,A,B,C,i,G,H,E,D;F=e(y.settings.browse_button);if(F){i=b.getPos(F,e(y.settings.container));G=b.getSize(F);H=e(\"form_\"+q);E=e(\"input_\"+q);b.extend(H.style,{top:i.y+\"px\",left:i.x+\"px\",width:G.w+\"px\",height:G.h+\"px\"});if(y.features.triggerDialog){if(b.getStyle(F,\"position\")===\"static\"){b.extend(F.style,{position:\"relative\"})}D=parseInt(F.style.zIndex,10);if(isNaN(D)){D=0}b.extend(F.style,{zIndex:D});b.extend(H.style,{zIndex:D-1})}B=y.settings.browse_button_hover;C=y.settings.browse_button_active;A=y.features.triggerDialog?F:H;if(B){b.addEvent(A,\"mouseover\",function(){b.addClass(F,B)},y.id);b.addEvent(A,\"mouseout\",function(){b.removeClass(F,B)},y.id)}if(C){b.addEvent(A,\"mousedown\",function(){b.addClass(F,C)},y.id);b.addEvent(a.body,\"mouseup\",function(){b.removeClass(F,C)},y.id)}}});f.bind(\"FilesRemoved\",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e(\"form_\"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind(\"DisableBrowse\",function(i,A){var y=a.getElementById(\"input_\"+q);if(y){y.disabled=A}});f.bind(\"Destroy\",function(i){var y,A,B,C={inputContainer:\"form_\"+q,inputFile:\"input_\"+q,browseButton:i.settings.browse_button};for(y in C){A=e(C[y]);if(A){b.removeAllEvents(A,i.id)}}b.removeAllEvents(a.body,i.id);b.each(z,function(E,D){B=e(\"form_\"+E);if(B){j.removeChild(B)}})});v()});g({success:true})}})})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.html5.js",
    "content": "(function(h,k,j,e){var c={},g;function m(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsDataURL(o);n.onload=function(){p(n.result)}}else{return p(o.getAsDataURL())}}function l(o,p){var n;if(\"FileReader\" in h){n=new FileReader();n.readAsBinaryString(o);n.onload=function(){p(n.result)}}else{return p(o.getAsBinary())}}function d(r,p,n,v){var q,o,u,s,t=this;m(c[r.id],function(w){q=k.createElement(\"canvas\");q.style.display=\"none\";k.body.appendChild(q);o=q.getContext(\"2d\");u=new Image();u.onerror=u.onabort=function(){v({success:false})};u.onload=function(){var B,x,z,y,A;if(!p.width){p.width=u.width}if(!p.height){p.height=u.height}s=Math.min(p.width/u.width,p.height/u.height);if(s<1||(s===1&&n===\"image/jpeg\")){B=Math.round(u.width*s);x=Math.round(u.height*s);q.width=B;q.height=x;o.drawImage(u,0,0,B,x);if(n===\"image/jpeg\"){y=new f(atob(w.substring(w.indexOf(\"base64,\")+7)));if(y.headers&&y.headers.length){A=new a();if(A.init(y.get(\"exif\")[0])){A.setExif(\"PixelXDimension\",B);A.setExif(\"PixelYDimension\",x);y.set(\"exif\",A.getBinary());if(t.hasEventListener(\"ExifData\")){t.trigger(\"ExifData\",r,A.EXIF())}if(t.hasEventListener(\"GpsData\")){t.trigger(\"GpsData\",r,A.GPS())}}}if(p.quality){try{w=q.toDataURL(n,p.quality/100)}catch(C){w=q.toDataURL(n)}}}else{w=q.toDataURL(n)}w=w.substring(w.indexOf(\"base64,\")+7);w=atob(w);if(y&&y.headers&&y.headers.length){w=y.restore(w);y.purge()}q.parentNode.removeChild(q);v({success:true,data:w})}else{v({success:false})}};u.src=w})}j.runtimes.Html5=j.addRuntime(\"html5\",{getFeatures:function(){var s,o,r,q,p,n;o=r=p=n=false;if(h.XMLHttpRequest){s=new XMLHttpRequest();r=!!s.upload;o=!!(s.sendAsBinary||s.upload)}if(o){q=!!(s.sendAsBinary||(h.Uint8Array&&h.ArrayBuffer));p=!!(File&&(File.prototype.getAsDataURL||h.FileReader)&&q);n=!!(File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice))}g=j.ua.safari&&j.ua.windows;return{html5:o,dragdrop:(function(){var t=k.createElement(\"div\");return(\"draggable\" in t)||(\"ondragstart\" in t&&\"ondrop\" in t)}()),jpgresize:p,pngresize:p,multipart:p||!!h.FileReader||!!h.FormData,canSendBinary:q,cantSendBlobInFormData:!!(j.ua.gecko&&h.FormData&&h.FileReader&&!FileReader.prototype.readAsArrayBuffer),progress:r,chunks:n,multi_selection:!(j.ua.safari&&j.ua.windows),triggerDialog:(j.ua.gecko&&h.FormData||j.ua.webkit)}},init:function(p,r){var n,q;function o(w){var u,t,v=[],x,s={};for(t=0;t<w.length;t++){u=w[t];if(s[u.name]){continue}s[u.name]=true;x=j.guid();c[x]=u;v.push(new j.File(x,u.fileName||u.name,u.fileSize||u.size))}if(v.length){p.trigger(\"FilesAdded\",v)}}n=this.getFeatures();if(!n.html5){r({success:false});return}p.bind(\"Init\",function(w){var G,F,C=[],v,D,t=w.settings.filters,u,B,s=k.body,E;G=k.createElement(\"div\");G.id=w.id+\"_html5_container\";j.extend(G.style,{position:\"absolute\",background:p.settings.shim_bgcolor||\"transparent\",width:\"100px\",height:\"100px\",overflow:\"hidden\",zIndex:99999,opacity:p.settings.shim_bgcolor?\"\":0});G.className=\"plupload html5\";if(p.settings.container){s=k.getElementById(p.settings.container);if(j.getStyle(s,\"position\")===\"static\"){s.style.position=\"relative\"}}s.appendChild(G);no_type_restriction:for(v=0;v<t.length;v++){u=t[v].extensions.split(/,/);for(D=0;D<u.length;D++){if(u[D]===\"*\"){C=[];break no_type_restriction}B=j.mimeTypes[u[D]];if(B&&j.inArray(B,C)===-1){C.push(B)}}}G.innerHTML='<input id=\"'+p.id+'_html5\"  style=\"font-size:999px\" type=\"file\" accept=\"'+C.join(\",\")+'\" '+(p.settings.multi_selection&&p.features.multi_selection?'multiple=\"multiple\"':\"\")+\" />\";G.scrollTop=100;E=k.getElementById(p.id+\"_html5\");if(w.features.triggerDialog){j.extend(E.style,{position:\"absolute\",width:\"100%\",height:\"100%\"})}else{j.extend(E.style,{cssFloat:\"right\",styleFloat:\"right\"})}E.onchange=function(){o(this.files);this.value=\"\"};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,\"mouseover\",function(){j.addClass(F,z)},w.id);j.addEvent(x,\"mouseout\",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,\"mousedown\",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,\"mouseup\",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,\"click\",function(H){var y=k.getElementById(w.id+\"_html5\");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind(\"PostInit\",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,\"dragenter\",function(w){var v,t,u;v=k.getElementById(p.id+\"_drop\");if(!v){v=k.createElement(\"input\");v.setAttribute(\"type\",\"file\");v.setAttribute(\"id\",p.id+\"_drop\");v.setAttribute(\"multiple\",\"multiple\");j.addEvent(v,\"change\",function(){o(this.files);j.removeEvent(v,\"change\",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,\"position\")===\"static\"){j.extend(s.style,{position:\"relative\"})}j.extend(v.style,{position:\"absolute\",display:\"block\",top:0,left:0,width:u.w+\"px\",height:u.h+\"px\",opacity:0})},p.id);return}j.addEvent(s,\"dragover\",function(t){t.preventDefault()},p.id);j.addEvent(s,\"drop\",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind(\"Refresh\",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+\"_html5_container\");j.extend(x.style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"});if(p.features.triggerDialog){if(j.getStyle(t,\"position\")===\"static\"){j.extend(t.style,{position:\"relative\"})}w=parseInt(j.getStyle(t,\"z-index\"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind(\"DisableBrowse\",function(s,u){var t=k.getElementById(s.id+\"_html5\");if(t){t.disabled=u}});p.bind(\"CancelUpload\",function(){if(q&&q.abort){q.abort()}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=(\"FileReader\" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N=\"----pluploadboundary\"+j.guid(),O,P=\"--\",U=\"\\r\\n\",R=\"\";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger(\"UploadProgress\",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger(\"Error\",{code:j.HTTP_ERROR,message:j.translate(\"HTTP Error.\"),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger(\"ChunkUploaded\",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger(\"UploadProgress\",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger(\"FileUploaded\",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open(\"post\",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!==\"string\"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)===\"string\"){q.setRequestHeader(\"Content-Type\",\"multipart/form-data; boundary=\"+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name=\"'+W+'\"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\";R+=P+N+U+'Content-Disposition: form-data; name=\"'+s.settings.file_data_name+'\"; filename=\"'+unescape(encodeURIComponent(u.name))+'\"'+U+\"Content-Type: \"+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Q<V.length;Q++){S[Q]=(V.charCodeAt(Q)&255)}q.send(S.buffer)}}return}}E=j.buildUrl(s.settings.url,j.extend(L,s.settings.multipart_params));q.open(\"post\",E,true);q.setRequestHeader(\"Content-Type\",\"application/octet-stream\");j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});q.send(V)}if(u.status==j.DONE||u.status==j.FAILED||s.state==j.STOPPED){return}L={name:u.target_name||u.name};if(v.chunk_size&&u.size>v.chunk_size&&(n.chunks||typeof(A)==\"string\")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)==\"string\"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!==\"string\"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\\.png$/i.test(u.name)?\"image/png\":\"image/jpeg\",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind(\"Destroy\",function(s){var u,v,t=k.body,w={inputContainer:s.id+\"_html5_container\",inputFile:s.id+\"_html5\",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u<v;u++){w|=(o.charCodeAt(t+u)<<Math.abs(s+u*8))}return w}function n(u,s,t){var t=arguments.length===3?t:o.length-s-1;o=o.substr(0,s)+u+o.substr(t+s)}function p(t,u,w){var x=\"\",s=q?0:-8*(w-1),v;for(v=0;v<w;v++){x+=String.fromCharCode((u>>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u=\"\";for(t+=s;s<t;s++){u+=String.fromCharCode(r(s,1))}return u}}}function f(s){var u={65505:{app:\"EXIF\",name:\"APP1\",signature:\"Exif\\0\"},65506:{app:\"ICC\",name:\"APP2\",signature:\"ICC_PROFILE\\0\"},65517:{app:\"IPTC\",name:\"APP13\",signature:\"Photoshop 3.0\\0\"}},t=[],r,n,p=e,q=0,o;r=new b();r.init(s);if(r.SHORT(0)!==65496){return}n=2;o=Math.min(1048576,s.length);while(n<=o){p=r.SHORT(n);if(p>=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,\"\")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x<v;x++){r.SEGMENT(n,0,t[x].segment);n+=t[x].length}return r.SEGMENT()},get:function(x){var y=[];for(var w=0,v=t.length;w<v;w++){if(t[w].app===x.toUpperCase()){y.push(t[w].segment)}}return y},set:function(y,x){var z=[];if(typeof(x)===\"string\"){z.push(x)}else{z=x}for(var w=ii=0,v=t.length;w<v;w++){if(t[w].app===y.toUpperCase()){t[w].segment=z[ii];t[w].length=z[ii].length;ii++}if(ii>=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:\"Orientation\",34665:\"ExifIFDPointer\",34853:\"GPSInfoIFDPointer\"},exif:{36864:\"ExifVersion\",40961:\"ColorSpace\",40962:\"PixelXDimension\",40963:\"PixelYDimension\",36867:\"DateTimeOriginal\",33434:\"ExposureTime\",33437:\"FNumber\",34855:\"ISOSpeedRatings\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41990:\"SceneCaptureType\",41988:\"DigitalZoomRatio\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\"},gps:{0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\"}};t={ColorSpace:{1:\"sRGB\",0:\"Uncalibrated\"},MeteringMode:{0:\"Unknown\",1:\"Average\",2:\"CenterWeightedAverage\",3:\"Spot\",4:\"MultiSpot\",5:\"Pattern\",6:\"Partial\",255:\"Other\"},LightSource:{1:\"Daylight\",2:\"Fliorescent\",3:\"Tungsten\",4:\"Flash\",9:\"Fine weather\",10:\"Cloudy weather\",11:\"Shade\",12:\"Daylight fluorescent (D 5700 - 7100K)\",13:\"Day white fluorescent (N 4600 -5400K)\",14:\"Cool white fluorescent (W 3900 - 4500K)\",15:\"White fluorescent (WW 3200 - 3700K)\",17:\"Standard light A\",18:\"Standard light B\",19:\"Standard light C\",20:\"D55\",21:\"D65\",22:\"D75\",23:\"D50\",24:\"ISO studio tungsten\",255:\"Other\"},Flash:{0:\"Flash did not fire.\",1:\"Flash fired.\",5:\"Strobe return light not detected.\",7:\"Strobe return light detected.\",9:\"Flash fired, compulsory flash mode\",13:\"Flash fired, compulsory flash mode, return light not detected\",15:\"Flash fired, compulsory flash mode, return light detected\",16:\"Flash did not fire, compulsory flash mode\",24:\"Flash did not fire, auto mode\",25:\"Flash fired, auto mode\",29:\"Flash fired, auto mode, return light not detected\",31:\"Flash fired, auto mode, return light detected\",32:\"No flash function\",65:\"Flash fired, red-eye reduction mode\",69:\"Flash fired, red-eye reduction mode, return light not detected\",71:\"Flash fired, red-eye reduction mode, return light detected\",73:\"Flash fired, compulsory flash mode, red-eye reduction mode\",77:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",79:\"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",89:\"Flash fired, auto mode, red-eye reduction mode\",93:\"Flash fired, auto mode, return light not detected, red-eye reduction mode\",95:\"Flash fired, auto mode, return light detected, red-eye reduction mode\"},ExposureMode:{0:\"Auto exposure\",1:\"Manual exposure\",2:\"Auto bracket\"},WhiteBalance:{0:\"Auto white balance\",1:\"Manual white balance\"},SceneCaptureType:{0:\"Standard\",1:\"Landscape\",2:\"Portrait\",3:\"Night scene\"},Contrast:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},Saturation:{0:\"Normal\",1:\"Low saturation\",2:\"High saturation\"},Sharpness:{0:\"Normal\",1:\"Soft\",2:\"Hard\"},GPSLatitudeRef:{N:\"North latitude\",S:\"South latitude\"},GPSLongitudeRef:{E:\"East longitude\",W:\"West longitude\"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z<w;z++){x=v=u+12*z+2;G=C[q.SHORT(x)];if(G===e){continue}B=q.SHORT(x+=2);A=q.LONG(x+=2);x+=4;E=[];switch(B){case 1:case 7:if(A>4){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.BYTE(x+F)}break;case 2:if(A>4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.SHORT(x+F*2)}break;case 4:if(A>1){x=q.LONG(x)+o.tiffHeader}for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)}break;case 5:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.LONG(x+F*4)/q.LONG(x+F*4+4)}break;case 9:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)}break;case 10:x=q.LONG(x)+o.tiffHeader;for(F=0;F<A;F++){E[F]=q.SLONG(x+F*4)/q.SLONG(x+F*4+4)}break;default:continue}D=(A==1?E[0]:E);if(t.hasOwnProperty(G)&&typeof D!=\"object\"){y[G]=t[G][D]}else{y[G]=D}}return y}function s(){var v=e,u=o.tiffHeader;q.II(q.SHORT(u)==18761);if(q.SHORT(u+=2)!==42){return false}o.IFD0=o.tiffHeader+q.LONG(u+=2);v=p(o.IFD0,n.tiff);o.exifIFD=(\"ExifIFDPointer\" in v?o.tiffHeader+v.ExifIFDPointer:e);o.gpsIFD=(\"GPSInfoIFDPointer\" in v?o.tiffHeader+v.GPSInfoIFDPointer:e);return true}function r(w,u,z){var B,y,x,A=0;if(typeof(u)===\"string\"){var v=n[w.toLowerCase()];for(hex in v){if(v[hex]===u){u=hex;break}}}B=o[w.toLowerCase()+\"IFD\"];y=q.SHORT(B);for(i=0;i<y;i++){x=B+12*i+2;if(q.SHORT(x)==u){A=x+8;break}}if(!A){return false}q.LONG(A,z);return true}return{init:function(u){o={tiffHeader:10};if(u===e||!u.length){return false}q.init(u);if(q.SHORT(0)===65505&&q.STRING(4,5).toUpperCase()===\"EXIF\\0\"){return s()}return false},EXIF:function(){var v;v=p(o.exifIFD,n.exif);if(v.ExifVersion&&j.typeOf(v.ExifVersion)===\"array\"){for(var w=0,u=\"\";w<v.ExifVersion.length;w++){u+=String.fromCharCode(v.ExifVersion[w])}v.ExifVersion=u}return v},GPS:function(){var u;u=p(o.gpsIFD,n.gps);if(u.GPSVersionID){u.GPSVersionID=u.GPSVersionID.join(\".\")}return u},setExif:function(u,v){if(u!==\"PixelXDimension\"&&u!==\"PixelYDimension\"){return false}return r(\"exif\",u,v)},getBinary:function(){return q.SEGMENT()}}}})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.js",
    "content": "/*1.5.4*/\n(function(){var f=0,k=[],m={},i={},a={\"<\":\"lt\",\">\":\"gt\",\"&\":\"amp\",'\"':\"quot\",\"'\":\"#39\"},l=/[<>&\\\"\\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function j(){this.cancelBubble=true}(function(n){var o=n.split(/,/),p,r,q;for(p=0;p<o.length;p+=2){q=o[p+1].split(/ /);for(r=0;r<q.length;r++){i[q[r]]=o[p]}}})(\"application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe\");var g={VERSION:\"1.5.4\",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:i,ua:(function(){var r=navigator,q=r.userAgent,s=r.vendor,o,n,p;o=/WebKit/.test(q);p=o&&s.indexOf(\"Apple\")!==-1;n=window.opera&&window.opera.buildNumber;return{windows:navigator.platform.indexOf(\"Win\")!==-1,ie:!o&&!n&&(/MSIE/gi).test(q)&&(/Explorer/gi).test(r.appName),webkit:o,gecko:!o&&/Gecko/.test(q),safari:p,opera:!!n}}()),typeOf:function(n){return({}).toString.call(n).match(/\\s([a-z|A-Z]+)/)[1].toLowerCase()},extend:function(n){g.each(arguments,function(o,p){if(p>0){g.each(o,function(r,q){n[q]=r})}});return n},cleanName:function(n){var o,p;p=[/[\\300-\\306]/g,\"A\",/[\\340-\\346]/g,\"a\",/\\307/g,\"C\",/\\347/g,\"c\",/[\\310-\\313]/g,\"E\",/[\\350-\\353]/g,\"e\",/[\\314-\\317]/g,\"I\",/[\\354-\\357]/g,\"i\",/\\321/g,\"N\",/\\361/g,\"n\",/[\\322-\\330]/g,\"O\",/[\\362-\\370]/g,\"o\",/[\\331-\\334]/g,\"U\",/[\\371-\\374]/g,\"u\"];for(o=0;o<p.length;o+=2){n=n.replace(p[o],p[o+1])}n=n.replace(/\\s+/g,\"_\");n=n.replace(/[^a-z0-9_\\-\\.]+/gi,\"\");return n},addRuntime:function(n,o){o.name=n;k[n]=o;k.push(o);return o},guid:function(){var n=new Date().getTime().toString(32),o;for(o=0;o<5;o++){n+=Math.floor(Math.random()*65535).toString(32)}return(g.guidPrefix||\"p\")+n+(f++).toString(32)},buildUrl:function(o,n){var p=\"\";g.each(n,function(r,q){p+=(p?\"&\":\"\")+encodeURIComponent(q)+\"=\"+encodeURIComponent(r)});if(p){o+=(o.indexOf(\"?\")>0?\"&\":\"?\")+p}return o},each:function(q,r){var p,o,n;if(q){p=q.length;if(p===b){for(o in q){if(q.hasOwnProperty(o)){if(r(q[o],o)===false){return}}}}else{for(n=0;n<p;n++){if(r(q[n],n)===false){return}}}}},formatSize:function(n){if(n===b||/\\D/.test(n)){return g.translate(\"N/A\")}if(n>1073741824){return Math.round(n/1073741824,1)+\" GB\"}if(n>1048576){return Math.round(n/1048576,1)+\" MB\"}if(n>1024){return Math.round(n/1024,1)+\" KB\"}return n+\" b\"},getPos:function(o,s){var t=0,r=0,v,u=document,p,q;o=o;s=s||u.body;function n(B){var z,A,w=0,C=0;if(B){A=B.getBoundingClientRect();z=u.compatMode===\"CSS1Compat\"?u.documentElement:u.body;w=A.left+z.scrollLeft;C=A.top+z.scrollTop}return{x:w,y:C}}if(o&&o.getBoundingClientRect&&((navigator.userAgent.indexOf(\"MSIE\")>0)&&(u.documentMode<8))){p=n(o);q=n(s);return{x:p.x-q.x,y:p.y-q.y}}v=o;while(v&&v!=s&&v.nodeType){t+=v.offsetLeft||0;r+=v.offsetTop||0;v=v.offsetParent}v=o.parentNode;while(v&&v!=s&&v.nodeType){t-=v.scrollLeft||0;r-=v.scrollTop||0;v=v.parentNode}return{x:t,y:r}},getSize:function(n){return{w:n.offsetWidth||n.clientWidth,h:n.offsetHeight||n.clientHeight}},parseSize:function(n){var o;if(typeof(n)==\"string\"){n=/^([0-9]+)([mgk]?)$/.exec(n.toLowerCase().replace(/[^0-9mkg]/g,\"\"));o=n[2];n=+n[1];if(o==\"g\"){n*=1073741824}if(o==\"m\"){n*=1048576}if(o==\"k\"){n*=1024}}return n},xmlEncode:function(n){return n?(\"\"+n).replace(l,function(o){return a[o]?\"&\"+a[o]+\";\":o}):n},toArray:function(p){var o,n=[];for(o=0;o<p.length;o++){n[o]=p[o]}return n},inArray:function(p,q){if(q){if(Array.prototype.indexOf){return Array.prototype.indexOf.call(q,p)}for(var n=0,o=q.length;n<o;n++){if(q[n]===p){return n}}}return -1},addI18n:function(n){return g.extend(m,n)},translate:function(n){return m[n]||n},isEmptyObj:function(n){if(n===b){return true}for(var o in n){return false}return true},hasClass:function(p,o){var n;if(p.className==\"\"){return false}n=new RegExp(\"(^|\\\\s+)\"+o+\"(\\\\s+|$)\");return n.test(p.className)},addClass:function(o,n){if(!g.hasClass(o,n)){o.className=o.className==\"\"?n:o.className.replace(/\\s+$/,\"\")+\" \"+n}},removeClass:function(p,o){var n=new RegExp(\"(^|\\\\s+)\"+o+\"(\\\\s+|$)\");p.className=p.className.replace(n,function(r,q,s){return q===\" \"&&s===\" \"?\" \":\"\"})},getStyle:function(o,n){if(o.currentStyle){return o.currentStyle[n]}else{if(window.getComputedStyle){return window.getComputedStyle(o,null)[n]}}},addEvent:function(s,n,t){var r,q,p,o;o=arguments[3];n=n.toLowerCase();if(e===b){e=\"Plupload_\"+g.guid()}if(s.addEventListener){r=t;s.addEventListener(n,r,false)}else{if(s.attachEvent){r=function(){var u=window.event;if(!u.target){u.target=u.srcElement}u.preventDefault=h;u.stopPropagation=j;t(u)};s.attachEvent(\"on\"+n,r)}}if(s[e]===b){s[e]=g.guid()}if(!d.hasOwnProperty(s[e])){d[s[e]]={}}q=d[s[e]];if(!q.hasOwnProperty(n)){q[n]=[]}q[n].push({func:r,orig:t,key:o})},removeEvent:function(s,n){var q,t,p;if(typeof(arguments[2])==\"function\"){t=arguments[2]}else{p=arguments[2]}n=n.toLowerCase();if(s[e]&&d[s[e]]&&d[s[e]][n]){q=d[s[e]][n]}else{return}for(var o=q.length-1;o>=0;o--){if(q[o].key===p||q[o].orig===t){if(s.removeEventListener){s.removeEventListener(n,q[o].func,false)}else{if(s.detachEvent){s.detachEvent(\"on\"+n,q[o].func)}}q[o].orig=null;q[o].func=null;q.splice(o,1);if(t!==b){break}}}if(!q.length){delete d[s[e]][n]}if(g.isEmptyObj(d[s[e]])){delete d[s[e]];try{delete s[e]}catch(r){s[e]=b}}},removeAllEvents:function(o){var n=arguments[1];if(o[e]===b||!o[e]){return}g.each(d[o[e]],function(q,p){g.removeEvent(o,p,n)})}};g.Uploader=function(r){var o={},u,t=[],q,p=false;u=new g.QueueProgress();r=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:\"file\",filters:[]},r);function s(){var w,x=0,v;if(this.state==g.STARTED){for(v=0;v<t.length;v++){if(!w&&t[v].status==g.QUEUED){w=t[v];w.status=g.UPLOADING;if(this.trigger(\"BeforeUpload\",w)){this.trigger(\"UploadFile\",w)}}else{x++}}if(x==t.length){this.stop();this.trigger(\"UploadComplete\",t)}}}function n(){var w,v;u.reset();for(w=0;w<t.length;w++){v=t[w];if(v.size!==b){u.size+=v.size;u.loaded+=v.loaded}else{u.size=b}if(v.status==g.DONE){u.uploaded++}else{if(v.status==g.FAILED){u.failed++}else{u.queued++}}}if(u.size===b){u.percent=t.length>0?Math.ceil(u.uploaded/t.length*100):0}else{u.bytesPerSec=Math.ceil(u.loaded/((+new Date()-q||1)/1000));u.percent=u.size>0?Math.ceil(u.loaded/u.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:\"\",features:{},files:t,settings:r,total:u,id:g.guid(),init:function(){var A=this,B,x,w,z=0,y;if(typeof(r.preinit)==\"function\"){r.preinit(A)}else{g.each(r.preinit,function(D,C){A.bind(C,D)})}r.page_url=r.page_url||document.location.pathname.replace(/\\/[^\\/]+$/g,\"/\");if(!/^(\\w+:\\/\\/|\\/)/.test(r.url)){r.url=r.page_url+r.url}r.chunk_size=g.parseSize(r.chunk_size);r.max_file_size=g.parseSize(r.max_file_size);A.bind(\"FilesAdded\",function(C,F){var E,D,H=0,I,G=r.filters;if(G&&G.length){I=[];g.each(G,function(J){g.each(J.extensions.split(/,/),function(K){if(/^\\s*\\*\\s*$/.test(K)){I.push(\"\\\\.*\")}else{I.push(\"\\\\.\"+K.replace(new RegExp(\"[\"+(\"/^$.*+?|()[]{}\\\\\".replace(/./g,\"\\\\$&\"))+\"]\",\"g\"),\"\\\\$&\"))}})});I=new RegExp(I.join(\"|\")+\"$\",\"i\")}for(E=0;E<F.length;E++){D=F[E];D.loaded=0;D.percent=0;D.status=g.QUEUED;if(I&&!I.test(D.name)){C.trigger(\"Error\",{code:g.FILE_EXTENSION_ERROR,message:g.translate(\"File extension error.\"),file:D});continue}if(D.size!==b&&D.size>r.max_file_size){C.trigger(\"Error\",{code:g.FILE_SIZE_ERROR,message:g.translate(\"File size error.\"),file:D});continue}t.push(D);H++}if(H){c(function(){A.trigger(\"QueueChanged\");A.refresh()},1)}else{return false}});if(r.unique_names){A.bind(\"UploadFile\",function(C,D){var F=D.name.match(/\\.([^.]+)$/),E=\"tmp\";if(F){E=F[1]}D.target_name=D.id+\".\"+E})}A.bind(\"UploadProgress\",function(C,D){D.percent=D.size>0?Math.ceil(D.loaded/D.size*100):100;n()});A.bind(\"StateChanged\",function(C){if(C.state==g.STARTED){q=(+new Date())}else{if(C.state==g.STOPPED){for(B=C.files.length-1;B>=0;B--){if(C.files[B].status==g.UPLOADING){C.files[B].status=g.QUEUED;n()}}}}});A.bind(\"QueueChanged\",n);A.bind(\"Error\",function(C,D){if(D.file){D.file.status=g.FAILED;n();if(C.state==g.STARTED){c(function(){s.call(A)},1)}}});A.bind(\"FileUploaded\",function(C,D){D.status=g.DONE;D.loaded=D.size;C.trigger(\"UploadProgress\",D);c(function(){s.call(A)},1)});if(r.runtimes){x=[];y=r.runtimes.split(/\\s?,\\s?/);for(B=0;B<y.length;B++){if(k[y[B]]){x.push(k[y[B]])}}}else{x=k}function v(){var F=x[z++],E,C,D;if(F){E=F.getFeatures();C=A.settings.required_features;if(C){C=C.split(\",\");for(D=0;D<C.length;D++){if(!E[C[D]]){v();return}}}F.init(A,function(G){if(G&&G.success){A.features=E;A.runtime=F.name;A.trigger(\"Init\",{runtime:F.name});A.trigger(\"PostInit\");A.refresh()}else{v()}})}else{A.trigger(\"Error\",{code:g.INIT_ERROR,message:g.translate(\"Init error.\")})}}v();if(typeof(r.init)==\"function\"){r.init(A)}else{g.each(r.init,function(D,C){A.bind(C,D)})}},refresh:function(){this.trigger(\"Refresh\")},start:function(){if(t.length&&this.state!=g.STARTED){this.state=g.STARTED;this.trigger(\"StateChanged\");s.call(this)}},stop:function(){if(this.state!=g.STOPPED){this.state=g.STOPPED;this.trigger(\"CancelUpload\");this.trigger(\"StateChanged\")}},disableBrowse:function(){p=arguments[0]!==b?arguments[0]:true;this.trigger(\"DisableBrowse\",p)},getFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w){return t[v]}}},removeFile:function(w){var v;for(v=t.length-1;v>=0;v--){if(t[v].id===w.id){return this.splice(v,1)[0]}}},splice:function(x,v){var w;w=t.splice(x===b?0:x,v===b?t.length:v);this.trigger(\"FilesRemoved\",w);this.trigger(\"QueueChanged\");return w},trigger:function(w){var y=o[w.toLowerCase()],x,v;if(y){v=Array.prototype.slice.call(arguments);v[0]=this;for(x=0;x<y.length;x++){if(y[x].func.apply(y[x].scope,v)===false){return false}}}return true},hasEventListener:function(v){return !!o[v.toLowerCase()]},bind:function(v,x,w){var y;v=v.toLowerCase();y=o[v]||[];y.push({func:x,scope:w||this});o[v]=y},unbind:function(v){v=v.toLowerCase();var y=o[v],w,x=arguments[1];if(y){if(x!==b){for(w=y.length-1;w>=0;w--){if(y[w].func===x){y.splice(w,1);break}}}else{y=[]}if(!y.length){delete o[v]}}},unbindAll:function(){var v=this;g.each(o,function(x,w){v.unbind(w)})},destroy:function(){this.stop();this.trigger(\"Destroy\");this.unbindAll()}})};g.File=function(q,o,p){var n=this;n.id=q;n.name=o;n.size=p;n.loaded=0;n.percent=0;n.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(n,o){}};g.QueueProgress=function(){var n=this;n.size=0;n.loaded=0;n.uploaded=0;n.failed=0;n.queued=0;n.percent=0;n.bytesPerSec=0;n.reset=function(){n.size=n.loaded=n.uploaded=n.failed=n.queued=n.percent=n.bytesPerSec=0}};g.runtimes={};window.plupload=g})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/js/plupload.silverlight.js",
    "content": "(function(g,b,d,e){var a={},h={};function c(o){var n,m=typeof o,j,l,k;if(o===e||o===null){return\"null\"}if(m===\"string\"){n=\"\\bb\\tt\\nn\\ff\\rr\\\"\\\"''\\\\\\\\\";return'\"'+o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"])/g,function(q,p){var i=n.indexOf(p);if(i+1){return\"\\\\\"+n.charAt(i+1)}q=p.charCodeAt().toString(16);return\"\\\\u\"+\"0000\".substring(q.length)+q})+'\"'}if(m==\"object\"){j=o.length!==e;n=\"\";if(j){for(l=0;l<o.length;l++){if(n){n+=\",\"}n+=c(o[l])}n=\"[\"+n+\"]\"}else{for(k in o){if(o.hasOwnProperty(k)){if(n){n+=\",\"}n+=c(k)+\":\"+c(o[k])}}n=\"{\"+n+\"}\"}return n}return\"\"+o}function f(r){var u=false,i=null,n=null,j,k,l,t,m,p=0;try{try{n=new ActiveXObject(\"AgControl.AgControl\");if(n.IsVersionSupported(r)){u=true}n=null}catch(q){var o=navigator.plugins[\"Silverlight Plug-In\"];if(o){j=o.description;if(j===\"1.0.30226.2\"){j=\"2.0.30226.2\"}k=j.split(\".\");while(k.length>3){k.pop()}while(k.length<4){k.push(0)}l=r.split(\".\");while(l.length>4){l.pop()}do{t=parseInt(l[p],10);m=parseInt(k[p],10);p++}while(p<l.length&&t===m);if(t<=m&&!isNaN(t)){u=true}}}}catch(s){u=false}return u}d.silverlight={trigger:function(n,k){var m=a[n],l,j;if(m){j=d.toArray(arguments).slice(1);j[0]=\"Silverlight:\"+k;setTimeout(function(){m.trigger.apply(m,j)},0)}}};d.runtimes.Silverlight=d.addRuntime(\"silverlight\",{getFeatures:function(){return{jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(p,q){var o,m=\"\",n=p.settings.filters,l,k=b.body;if(!f(\"2.0.31005.0\")||(g.opera&&g.opera.buildNumber)){q({success:false});return}h[p.id]=false;a[p.id]=p;o=b.createElement(\"div\");o.id=p.id+\"_silverlight_container\";d.extend(o.style,{position:\"absolute\",top:\"0px\",background:p.settings.shim_bgcolor||\"transparent\",zIndex:99999,width:\"100px\",height:\"100px\",overflow:\"hidden\",opacity:p.settings.shim_bgcolor||b.documentMode>8?\"\":0.01});o.className=\"plupload silverlight\";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,\"position\")===\"static\"){k.style.position=\"relative\"}}k.appendChild(o);for(l=0;l<n.length;l++){m+=(m!=\"\"?\"|\":\"\")+n[l].title+\" | *.\"+n[l].extensions.replace(/,/g,\";*.\")}o.innerHTML='<object id=\"'+p.id+'_silverlight\" data=\"data:application/x-silverlight,\" type=\"application/x-silverlight-2\" style=\"outline:none;\" width=\"1024\" height=\"1024\"><param name=\"source\" value=\"'+p.settings.silverlight_xap_url+'\"/><param name=\"background\" value=\"Transparent\"/><param name=\"windowless\" value=\"true\"/><param name=\"enablehtmlaccess\" value=\"true\"/><param name=\"initParams\" value=\"id='+p.id+\",filter=\"+m+\",multiselect=\"+p.settings.multi_selection+'\"/></object>';function j(){return b.getElementById(p.id+\"_silverlight\").content.Upload}p.bind(\"Silverlight:Init\",function(){var i,r={};if(h[p.id]){return}h[p.id]=true;p.bind(\"Silverlight:StartSelectFiles\",function(s){i=[]});p.bind(\"Silverlight:SelectFile\",function(s,v,t,u){var w;w=d.guid();r[w]=v;r[v]=w;i.push(new d.File(w,t,u))});p.bind(\"Silverlight:SelectSuccessful\",function(){if(i.length){p.trigger(\"FilesAdded\",i)}});p.bind(\"Silverlight:UploadChunkError\",function(s,v,t,w,u){p.trigger(\"Error\",{code:d.IO_ERROR,message:\"IO Error.\",details:u,file:s.getFile(r[v])})});p.bind(\"Silverlight:UploadFileProgress\",function(s,w,t,v){var u=s.getFile(r[w]);if(u.status!=d.FAILED){u.size=v;u.loaded=t;s.trigger(\"UploadProgress\",u)}});p.bind(\"Refresh\",function(s){var t,u,v;t=b.getElementById(s.settings.browse_button);if(t){u=d.getPos(t,b.getElementById(s.settings.container));v=d.getSize(t);d.extend(b.getElementById(s.id+\"_silverlight_container\").style,{top:u.y+\"px\",left:u.x+\"px\",width:v.w+\"px\",height:v.h+\"px\"})}});p.bind(\"Silverlight:UploadChunkSuccessful\",function(s,v,t,y,x){var w,u=s.getFile(r[v]);w={chunk:t,chunks:y,response:x};s.trigger(\"ChunkUploaded\",u,w);if(u.status!=d.FAILED&&s.state!==d.STOPPED){j().UploadNextChunk()}if(t==y-1){u.status=d.DONE;s.trigger(\"FileUploaded\",u,{response:x})}});p.bind(\"Silverlight:UploadSuccessful\",function(s,v,t){var u=s.getFile(r[v]);u.status=d.DONE;s.trigger(\"FileUploaded\",u,{response:t})});p.bind(\"FilesRemoved\",function(s,u){var t;for(t=0;t<u.length;t++){j().RemoveFile(r[u[t].id])}});p.bind(\"UploadFile\",function(s,u){var v=s.settings,t=v.resize||{};j().UploadFile(r[u.id],s.settings.url,c({name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\\.([^.]+)/,\"$1\").toLowerCase()]||\"application/octet-stream\",chunk_size:v.chunk_size,image_width:t.width,image_height:t.height,image_quality:t.quality||90,multipart:!!v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,headers:v.headers}))});p.bind(\"CancelUpload\",function(){j().CancelUpload()});p.bind(\"Silverlight:MouseEnter\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.addClass(t,u)}});p.bind(\"Silverlight:MouseLeave\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_hover;if(t&&u){d.removeClass(t,u)}});p.bind(\"Silverlight:MouseLeftButtonDown\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.addClass(t,u);d.addEvent(b.body,\"mouseup\",function(){d.removeClass(t,u)})}});p.bind(\"Sliverlight:StartSelectFiles\",function(s){var t,u;t=b.getElementById(p.settings.browse_button);u=s.settings.browse_button_active;if(t&&u){d.removeClass(t,u)}});p.bind(\"DisableBrowse\",function(s,t){j().DisableBrowse(t)});p.bind(\"Destroy\",function(s){var t;d.removeAllEvents(b.body,s.id);delete h[s.id];delete a[s.id];t=b.getElementById(s.id+\"_silverlight_container\");if(t){k.removeChild(t)}});q({success:true})})}})})(window,document,plupload);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/license.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/plupload/readme.md",
    "content": "Plupload - Cross browser and platform uploader API\n===================================================\n\nWhat is Plupload\n-----------------\nPlupload is a JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering,\nrequest chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight, Flash, Gears and BrowserPlus.\n\nWhat you need to build Plupload\n-------------------------------\n* Install the Java JDK or JRE packages you can find it at: [http://java.sun.com/javase/downloads/index.jsp](http://java.sun.com/javase/downloads/index.jsp)\n* Install Apache Ant you can find it at: [http://ant.apache.org/](http://ant.apache.org/)\n* Add Apache Ant to your systems path environment variable, this is not required but makes it easier to issue commands to Ant without having to type the full path for it.\n\nHow to build Plupload\n----------------------\n\nIn the root directory of Plupload where the build.xml file is you can run ant against different targets.\n\n`ant`\n\nWill combine, preprocess and minify the Plupload classes into the js directory. It will not build the Silverlight and Flash .xap and .swf files.\n\n`ant moxiedoc`\n\nWill generate API Documentation for the project using the Moxiedoc tool. The docs will be generated to the docs/api directory.\n\n`ant release`\n\nWill produce release packages. The release packages will be placed in the tmp directory.\n\nHow to build Flash runtime\n---------------------------\nThe Flash runtime uses a .swf file that can be built using the Flex SDK. This SDK can be downloaded from Adobe. [http://www.adobe.com/products/flex/flexdownloads/](http://www.adobe.com/products/flex/flexdownloads/)\n\nHow to build Silverlight runtime\n---------------------------------\nThe Silverlight runtime uses a .xap file that can be built using the Silverlight SDK or Visual Studio. [http://silverlight.net/getstarted/](http://silverlight.net/getstarted/)\n\nRunning the development version\n--------------------------------\nThe unminified development version of the javascript files can be executed by opening the examples/queue_widget_dev.html file running on a Web Server.\n\nContributing to the Plupload project\n-------------------------------------\nYou can read more about how to contribute to this project at [http://www.plupload.com/contributing](http://www.plupload.com/contributing)\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/LICENSE",
    "content": "Copyright 2012 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License\nor the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\neither express or implied. See the Apache License and the GPL License for the specific language governing\npermissions and limitations under the Apache License and the GPL License."
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/README.md",
    "content": "Select2\n=================\n\nSelect2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. Look and feel of Select2 is based on the excellent [Chosen](http://harvesthq.github.com/chosen/) library.\n\nTo get started -- checkout http://ivaynberg.github.com/select2!\n\nWhat Does Select2 Support That Chosen Does Not?\n-------------------------------------------------\n\n* Working with large datasets: Chosen requires the entire dataset to be loaded as `option` tags in the DOM, which limits\nit to working with small-ish datasets. Select2 uses a function to find results on-the-fly, which allows it to partially\nload results.\n* Paging of results: Since Select2 works with large datasets and only loads a small amount of matching results at a time\nit has to support paging. Select2 will call the search function when the user scrolls to the bottom of currently loaded\nresult set allowing for the 'infinite scrolling' of results.\n* Custom markup for results: Chosen only supports rendering text results because that is the only markup supported by\n`option` tags. Select2 provides an extension point which can be used to produce any kind of markup to represent results.\n* Ability to add results on the fly: Select2 provides the ability to add results from the search term entered by the user, which allows it to be used for\ntagging.\n\nBrowser Compatibility\n--------------------\n* IE 8+ (7 mostly works except for [issue with z-index](https://github.com/ivaynberg/select2/issues/37))\n* Chrome 8+\n* Firefox 3.5+\n* Safari 3+\n* Opera 10.6+\n\nIntegrations\n------------\n\n* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / Apache Wicket)\n* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)\n* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org))\n* [Django](https://github.com/applegrew/django-select2)\n\nBug tracker\n-----------\n\nHave a bug? Please create an issue here on GitHub!\n\nhttps://github.com/ivaynberg/select2/issues\n\n\nMailing list\n------------\n\nHave a question? Ask on our mailing list!\n\nselect2@googlegroups.com\n\nhttps://groups.google.com/d/forum/select2\n\n\nCopyright and License\n---------------------\n\nCopyright 2012 Igor Vaynberg\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU \nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your \nuse of this software only upon the condition that you accept all of the terms of either the Apache \nLicense or the GPL License. \n\nYou may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\nhttp://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the Apache License \nor the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, \neither express or implied. See the Apache License and the GPL License for the specific language governing \npermissions and limitations under the Apache License and the GPL License."
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/component.json",
    "content": "{\n    \"name\": \"select2\",\n    \"version\": \"3.3.1\",\n    \"main\": [\"select2.js\", \"select2.css\", \"select2.png\", \"select2x2.png\", \"spinner.gif\"],\n    \"dependencies\": {\n        \"jquery\": \"~1.4.4\"\n    }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/release.sh",
    "content": "#!/bin/bash\nset -e\n\necho -n \"Enter the version for this release: \"\n\nread ver\n\nif [ ! $ver ]; then \n\techo \"Invalid version.\"\n\texit\nfi\n\nname=\"select2\"\njs=\"$name.js\"\nmini=\"$name.min.js\"\ncss=\"$name.css\"\nrelease=\"$name-$ver\"\ntag=\"$ver\"\nbranch=\"build-$ver\"\ncurbranch=`git branch | grep \"*\" | sed \"s/* //\"`\ntimestamp=$(date)\ntokens=\"s/@@ver@@/$ver/g;s/\\@@timestamp@@/$timestamp/g\"\nremote=\"github\"\n\necho \"Updating Version Identifiers\"\n\nsed -E -e \"s/\\\"version\\\": \\\"([0-9\\.]+)\\\",/\\\"version\\\": \\\"$ver\\\",/g\" -i \"\" component.json select2.jquery.json\ngit add component.json\ngit add select2.jquery.json\ngit commit -m \"modified version identifiers in descriptors for release $ver\"\ngit push\n \ngit branch \"$branch\"\ngit checkout \"$branch\"\n\necho \"Tokenizing...\"\n\nfind . -name \"$js\" | xargs -I{} sed -e \"$tokens\" -i \"\" {} \nfind . -name \"$css\" | xargs -I{} sed -e \"$tokens\" -i \"\" {}\nsed -e \"s/latest/$ver/g\" -i \"\" component.json\n\ngit add \"$js\"\ngit add \"$css\"\n\necho \"Minifying...\"\n\necho \"/*\" > \"$mini\"\ncat LICENSE | sed \"$tokens\" >> \"$mini\"\necho \"*/\" >> \"$mini\"\n\ncurl -s \\\n\t-d compilation_level=SIMPLE_OPTIMIZATIONS \\\n\t-d output_format=text \\\n\t-d output_info=compiled_code \\\n\t--data-urlencode \"js_code@$js\" \\\n\thttp://closure-compiler.appspot.com/compile \\\n\t>> \"$mini\"\n\ngit add \"$mini\"\n\t\ngit commit -m \"release $ver\"\n\necho \"Tagging...\"\ngit tag -a \"$tag\" -m \"tagged version $ver\"\ngit push \"$remote\" --tags\n\necho \"Cleaning Up...\"\n\ngit checkout \"$curbranch\"\ngit branch -D \"$branch\"\n\necho \"Done\"\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.css",
    "content": "/*\nVersion: @@ver@@ Timestamp: @@timestamp@@\n*/\n.select2-container {\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: top;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input{\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n   -khtml-box-sizing: border-box; /* konqueror */\n     -moz-box-sizing: border-box; /* firefox */\n      -ms-box-sizing: border-box; /* ie */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    -webkit-border-radius: 4px;\n       -moz-border-radius: 4px;\n            border-radius: 4px;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    -webkit-border-radius:0 0 4px 4px;\n       -moz-border-radius:0 0 4px 4px;\n            border-radius:0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);\n    background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );\n    background-image: linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n}\n\n.select2-container .select2-choice span {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    -ms-text-overflow: ellipsis;\n     -o-text-overflow: ellipsis;\n        text-overflow: ellipsis;\n}\n\n.select2-container .select2-choice abbr {\n    display: block;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 26px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    position: absolute;\n    left: 0;\n    top: 0;\n    z-index: 9998;\n    background-color: #fff;\n    opacity: 0;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\"; /* works in IE 8 */\n        filter: \"alpha(opacity=0)\"; /* expected to work in IE 8 */\n        filter: alpha(opacity=0); /* IE 4-7 */\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top:-1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    -webkit-border-radius: 0 0 4px 4px;\n       -moz-border-radius: 0 0 4px 4px;\n            border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    -webkit-border-radius: 4px 4px 0 0;\n       -moz-border-radius: 4px 4px 0 0;\n            border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-container .select2-choice div {\n    display: block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    -webkit-border-radius: 0 4px 4px 0;\n       -moz-border-radius: 0 4px 4px 0;\n            border-radius: 0 4px 4px 0;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);\n    background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n}\n\n.select2-container .select2-choice div b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('select2.png') no-repeat 0 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search-hidden {\n    display: block;\n    position: absolute;\n    left: -10000px;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    -webkit-border-radius: 0;\n       -moz-border-radius: 0;\n            border-radius: 0;\n\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('select2.png') no-repeat 100% -22px;\n    background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100%;\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n       -moz-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    -webkit-border-bottom-left-radius: 0;\n        -moz-border-radius-bottomleft: 0;\n            border-bottom-left-radius: 0;\n\n    -webkit-border-bottom-right-radius: 0;\n        -moz-border-radius-bottomright: 0;\n            border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));\n    background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );\n    background-image: linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n}\n\n.select2-dropdown-open .select2-choice div {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\n.select2-dropdown-open .select2-choice div b {\n    background-position: -18px 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n}\n\n.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }\n.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: white;\n    color: #000;\n}\n\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice div {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));\n    background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    -webkit-border-radius: 3px;\n       -moz-border-radius: 3px;\n            border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n       -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n            box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0 );\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n}\n.select2-container-multi .select2-choices .select2-search-choice span {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('select2.png') right top no-repeat;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices{\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {\n    display: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen {\n    position: absolute;\n    left: -10000px;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi)  {\n  .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {\n      background-image: url('select2x2.png') !important;\n      background-repeat: no-repeat !important;\n      background-size: 60px 40px !important;\n  }\n  .select2-search input {\n      background-position: 100% -21px !important;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.jquery.json",
    "content": "{\n    \"name\": \"select2\",\n    \"title\": \"Select2\",\n    \"description\": \"Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.\",\n    \"keywords\": [\n        \"select\",\n        \"autocomplete\",\n        \"typeahead\",\n        \"dropdown\",\n        \"multiselect\",\n        \"tag\",\n        \"tagging\"\n    ],\n    \"version\": \"3.3.1\",\n    \"author\": {\n        \"name\": \"Igor Vaynberg\",\n        \"url\": \"https://github.com/ivaynberg\"\n    },\n    \"licenses\": [\n        {\n            \"type\": \"Apache\",\n            \"url\": \"http://www.apache.org/licenses/LICENSE-2.0\"\n        },\n        {\n            \"type\": \"GPL v2\",\n            \"url\": \"http://www.gnu.org/licenses/gpl-2.0.html\"\n        }\n    ],\n    \"bugs\": \"https://github.com/ivaynberg/select2/issues\",\n    \"homepage\": \"http://ivaynberg.github.com/select2\",\n    \"docs\": \"http://ivaynberg.github.com/select2/\",\n    \"download\": \"https://github.com/ivaynberg/select2/tags\",\n    \"dependencies\": {\n        \"jquery\": \">=1.4.6\"\n    }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2.js",
    "content": "/*\nCopyright 2012 Igor Vaynberg\n\nVersion: @@ver@@ Timestamp: @@timestamp@@\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n    http://www.apache.org/licenses/LICENSE-2.0\n    http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL Licesnse is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n (function ($) {\n \tif(typeof $.fn.each2 == \"undefined\"){\n \t\t$.fn.extend({\n \t\t\t/*\n\t\t\t* 4-10 times faster .each replacement\n\t\t\t* use it carefully, as it overrides jQuery context of element on each iteration\n\t\t\t*/\n\t\t\teach2 : function (c) {\n\t\t\t\tvar j = $([0]), i = -1, l = this.length;\n\t\t\t\twhile (\n\t\t\t\t\t++i < l\n\t\t\t\t\t&& (j.context = j[0] = this[i])\n\t\t\t\t\t&& c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n\t\t\t\t);\n\t\t\t\treturn this;\n\t\t\t}\n \t\t});\n \t}\n})(jQuery);\n\n(function ($, undefined) {\n    \"use strict\";\n    /*global document, window, jQuery, console */\n\n    if (window.Select2 !== undefined) {\n        return;\n    }\n\n    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n        lastMousePosition, $document;\n\n    KEY = {\n        TAB: 9,\n        ENTER: 13,\n        ESC: 27,\n        SPACE: 32,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        HOME: 36,\n        END: 35,\n        BACKSPACE: 8,\n        DELETE: 46,\n        isArrow: function (k) {\n            k = k.which ? k.which : k;\n            switch (k) {\n            case KEY.LEFT:\n            case KEY.RIGHT:\n            case KEY.UP:\n            case KEY.DOWN:\n                return true;\n            }\n            return false;\n        },\n        isControl: function (e) {\n            var k = e.which;\n            switch (k) {\n            case KEY.SHIFT:\n            case KEY.CTRL:\n            case KEY.ALT:\n                return true;\n            }\n\n            if (e.metaKey) return true;\n\n            return false;\n        },\n        isFunctionKey: function (k) {\n            k = k.which ? k.which : k;\n            return k >= 112 && k <= 123;\n        }\n    };\n\n    $document = $(document);\n\n    nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n    function indexOf(value, array) {\n        var i = 0, l = array.length;\n        for (; i < l; i = i + 1) {\n            if (equal(value, array[i])) return i;\n        }\n        return -1;\n    }\n\n    /**\n     * Compares equality of a and b\n     * @param a\n     * @param b\n     */\n    function equal(a, b) {\n        if (a === b) return true;\n        if (a === undefined || b === undefined) return false;\n        if (a === null || b === null) return false;\n        if (a.constructor === String) return a+'' === b+''; // IE requires a+'' instead of just a\n        if (b.constructor === String) return b+'' === a+''; // IE requires b+'' instead of just b\n        return false;\n    }\n\n    /**\n     * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\n     * strings\n     * @param string\n     * @param separator\n     */\n    function splitVal(string, separator) {\n        var val, i, l;\n        if (string === null || string.length < 1) return [];\n        val = string.split(separator);\n        for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\n        return val;\n    }\n\n    function getSideBorderPadding(element) {\n        return element.outerWidth(false) - element.width();\n    }\n\n    function installKeyUpChangeEvent(element) {\n        var key=\"keyup-change-value\";\n        element.bind(\"keydown\", function () {\n            if ($.data(element, key) === undefined) {\n                $.data(element, key, element.val());\n            }\n        });\n        element.bind(\"keyup\", function () {\n            var val= $.data(element, key);\n            if (val !== undefined && element.val() !== val) {\n                $.removeData(element, key);\n                element.trigger(\"keyup-change\");\n            }\n        });\n    }\n\n    $document.bind(\"mousemove\", function (e) {\n        lastMousePosition = {x: e.pageX, y: e.pageY};\n    });\n\n    /**\n     * filters mouse events so an event is fired only if the mouse moved.\n     *\n     * filters out mouse events that occur when mouse is stationary but\n     * the elements under the pointer are scrolled.\n     */\n    function installFilteredMouseMove(element) {\n\t    element.bind(\"mousemove\", function (e) {\n            var lastpos = lastMousePosition;\n            if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n                $(e.target).trigger(\"mousemove-filtered\", e);\n            }\n        });\n    }\n\n    /**\n     * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n     * within the last quietMillis milliseconds.\n     *\n     * @param quietMillis number of milliseconds to wait before invoking fn\n     * @param fn function to be debounced\n     * @param ctx object to be used as this reference within fn\n     * @return debounced version of fn\n     */\n    function debounce(quietMillis, fn, ctx) {\n        ctx = ctx || undefined;\n        var timeout;\n        return function () {\n            var args = arguments;\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function() {\n                fn.apply(ctx, args);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * A simple implementation of a thunk\n     * @param formula function used to lazily initialize the thunk\n     * @return {Function}\n     */\n    function thunk(formula) {\n        var evaluated = false,\n            value;\n        return function() {\n            if (evaluated === false) { value = formula(); evaluated = true; }\n            return value;\n        };\n    };\n\n    function installDebouncedScroll(threshold, element) {\n        var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n        element.bind(\"scroll\", function (e) {\n            if (indexOf(e.target, element.get()) >= 0) notify(e);\n        });\n    }\n\n    function focus($el) {\n        if ($el[0] === document.activeElement) return;\n\n        /* set the focus in a 0 timeout - that way the focus is set after the processing\n            of the current event has finished - which seems like the only reliable way\n            to set focus */\n        window.setTimeout(function() {\n            var el=$el[0], pos=$el.val().length, range;\n\n            $el.focus();\n\n            /* make sure el received focus so we do not error out when trying to manipulate the caret.\n                sometimes modals or others listeners may steal it after its set */\n            if ($el.is(\":visible\") && el === document.activeElement) {\n\n                /* after the focus is set move the caret to the end, necessary when we val()\n                    just before setting focus */\n                if(el.setSelectionRange)\n                {\n                    el.setSelectionRange(pos, pos);\n                }\n                else if (el.createTextRange) {\n                    range = el.createTextRange();\n                    range.collapse(false);\n                    range.select();\n                }\n            }\n        }, 0);\n    }\n\n    function killEvent(event) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n    function killEventImmediately(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n    function measureTextWidth(e) {\n        if (!sizer){\n        \tvar style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n        \tsizer = $(document.createElement(\"div\")).css({\n\t            position: \"absolute\",\n\t            left: \"-10000px\",\n\t            top: \"-10000px\",\n\t            display: \"none\",\n\t            fontSize: style.fontSize,\n\t            fontFamily: style.fontFamily,\n\t            fontStyle: style.fontStyle,\n\t            fontWeight: style.fontWeight,\n\t            letterSpacing: style.letterSpacing,\n\t            textTransform: style.textTransform,\n\t            whiteSpace: \"nowrap\"\n\t        });\n            sizer.attr(\"class\",\"select2-sizer\");\n        \t$(\"body\").append(sizer);\n        }\n        sizer.text(e.val());\n        return sizer.width();\n    }\n\n    function syncCssClasses(dest, src, adapter) {\n        var classes, replacements = [], adapted;\n\n        classes = dest.attr(\"class\");\n        if (typeof classes === \"string\") {\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") === 0) {\n                    replacements.push(this);\n                }\n            });\n        }\n        classes = src.attr(\"class\");\n        if (typeof classes === \"string\") {\n            $(classes.split(\" \")).each2(function() {\n                if (this.indexOf(\"select2-\") !== 0) {\n                    adapted = adapter(this);\n                    if (typeof adapted === \"string\" && adapted.length > 0) {\n                        replacements.push(this);\n                    }\n                }\n            });\n        }\n        dest.attr(\"class\", replacements.join(\" \"));\n    }\n\n\n    function markMatch(text, term, markup, escapeMarkup) {\n        var match=text.toUpperCase().indexOf(term.toUpperCase()),\n            tl=term.length;\n\n        if (match<0) {\n            markup.push(escapeMarkup(text));\n            return;\n        }\n\n        markup.push(escapeMarkup(text.substring(0, match)));\n        markup.push(\"<span class='select2-match'>\");\n        markup.push(escapeMarkup(text.substring(match, match + tl)));\n        markup.push(\"</span>\");\n        markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n    }\n\n    /**\n     * Produces an ajax-based query function\n     *\n     * @param options object containing configuration paramters\n     * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n     * @param options.url url for the data\n     * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n     * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified\n     * @param options.traditional a boolean flag that should be true if you wish to use the traditional style of param serialization for the ajax request\n     * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n     * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.\n     *      The expected format is an object containing the following keys:\n     *      results array of objects that will be used as choices\n     *      more (optional) boolean indicating whether there are more results available\n     *      Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n     */\n    function ajax(options) {\n        var timeout, // current scheduled but not yet executed request\n            requestSequence = 0, // sequence used to drop out-of-order responses\n            handler = null,\n            quietMillis = options.quietMillis || 100,\n            ajaxUrl = options.url,\n            self = this;\n\n        return function (query) {\n            window.clearTimeout(timeout);\n            timeout = window.setTimeout(function () {\n                requestSequence += 1; // increment the sequence\n                var requestNumber = requestSequence, // this request's sequence number\n                    data = options.data, // ajax data function\n                    url = ajaxUrl, // ajax url string or function\n                    transport = options.transport || $.ajax,\n                    type = options.type || 'GET', // set type of request (GET or POST)\n                    params = {};\n\n                data = data ? data.call(self, query.term, query.page, query.context) : null;\n                url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n                if( null !== handler) { handler.abort(); }\n\n                if (options.params) {\n                    if ($.isFunction(options.params)) {\n                        $.extend(params, options.params.call(self));\n                    } else {\n                        $.extend(params, options.params);\n                    }\n                }\n\n                $.extend(params, {\n                    url: url,\n                    dataType: options.dataType,\n                    data: data,\n                    type: type,\n                    cache: false,\n                    success: function (data) {\n                        if (requestNumber < requestSequence) {\n                            return;\n                        }\n                        // TODO - replace query.page with query so users have access to term, page, etc.\n                        var results = options.results(data, query.page);\n                        query.callback(results);\n                    }\n                });\n                handler = transport.call(self, params);\n            }, quietMillis);\n        };\n    }\n\n    /**\n     * Produces a query function that works with a local array\n     *\n     * @param options object containing configuration parameters. The options parameter can either be an array or an\n     * object.\n     *\n     * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n     *\n     * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n     * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n     * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n     * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n     * the text.\n     */\n    function local(options) {\n        var data = options, // data elements\n            dataText,\n            tmp,\n            text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n\t\t if ($.isArray(data)) {\n            tmp = data;\n            data = { results: tmp };\n        }\n\n\t\t if ($.isFunction(data) === false) {\n            tmp = data;\n            data = function() { return tmp; };\n        }\n\n        var dataItem = data();\n        if (dataItem.text) {\n            text = dataItem.text;\n            // if text is not a function we assume it to be a key name\n            if (!$.isFunction(text)) {\n                dataText = data.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n                text = function (item) { return item[dataText]; };\n            }\n        }\n\n        return function (query) {\n            var t = query.term, filtered = { results: [] }, process;\n            if (t === \"\") {\n                query.callback(data());\n                return;\n            }\n\n            process = function(datum, collection) {\n                var group, attr;\n                datum = datum[0];\n                if (datum.children) {\n                    group = {};\n                    for (attr in datum) {\n                        if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n                    }\n                    group.children=[];\n                    $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n                    if (group.children.length || query.matcher(t, text(group), datum)) {\n                        collection.push(group);\n                    }\n                } else {\n                    if (query.matcher(t, text(datum), datum)) {\n                        collection.push(datum);\n                    }\n                }\n            };\n\n            $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n            query.callback(filtered);\n        };\n    }\n\n    // TODO javadoc\n    function tags(data) {\n        var isFunc = $.isFunction(data);\n        return function (query) {\n            var t = query.term, filtered = {results: []};\n            $(isFunc ? data() : data).each(function () {\n                var isObject = this.text !== undefined,\n                    text = isObject ? this.text : this;\n                if (t === \"\" || query.matcher(t, text)) {\n                    filtered.results.push(isObject ? this : {id: this, text: this});\n                }\n            });\n            query.callback(filtered);\n        };\n    }\n\n    /**\n     * Checks if the formatter function should be used.\n     *\n     * Throws an error if it is not a function. Returns true if it should be used,\n     * false if no formatting should be performed.\n     *\n     * @param formatter\n     */\n    function checkFormatter(formatter, formatterName) {\n        if ($.isFunction(formatter)) return true;\n        if (!formatter) return false;\n        throw new Error(\"formatterName must be a function or a falsy value\");\n    }\n\n    function evaluate(val) {\n        return $.isFunction(val) ? val() : val;\n    }\n\n    function countResults(results) {\n        var count = 0;\n        $.each(results, function(i, item) {\n            if (item.children) {\n                count += countResults(item.children);\n            } else {\n                count++;\n            }\n        });\n        return count;\n    }\n\n    /**\n     * Default tokenizer. This function uses breaks the input on substring match of any string from the\n     * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n     * two options have to be defined in order for the tokenizer to work.\n     *\n     * @param input text user has typed so far or pasted into the search field\n     * @param selection currently selected choices\n     * @param selectCallback function(choice) callback tho add the choice to selection\n     * @param opts select2's opts\n     * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n     */\n    function defaultTokenizer(input, selection, selectCallback, opts) {\n        var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n            dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n            token, // token\n            index, // position at which the separator was found\n            i, l, // looping variables\n            separator; // the matched separator\n\n        if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n        while (true) {\n            index = -1;\n\n            for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n                separator = opts.tokenSeparators[i];\n                index = input.indexOf(separator);\n                if (index >= 0) break;\n            }\n\n            if (index < 0) break; // did not find any token separator in the input string, bail\n\n            token = input.substring(0, index);\n            input = input.substring(index + separator.length);\n\n            if (token.length > 0) {\n                token = opts.createSearchChoice(token, selection);\n                if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n                    dupe = false;\n                    for (i = 0, l = selection.length; i < l; i++) {\n                        if (equal(opts.id(token), opts.id(selection[i]))) {\n                            dupe = true; break;\n                        }\n                    }\n\n                    if (!dupe) selectCallback(token);\n                }\n            }\n        }\n\n        if (original!==input) return input;\n    }\n\n    /**\n     * Creates a new class\n     *\n     * @param superClass\n     * @param methods\n     */\n    function clazz(SuperClass, methods) {\n        var constructor = function () {};\n        constructor.prototype = new SuperClass;\n        constructor.prototype.constructor = constructor;\n        constructor.prototype.parent = SuperClass.prototype;\n        constructor.prototype = $.extend(constructor.prototype, methods);\n        return constructor;\n    }\n\n    AbstractSelect2 = clazz(Object, {\n\n        // abstract\n        bind: function (func) {\n            var self = this;\n            return function () {\n                func.apply(self, arguments);\n            };\n        },\n\n        // abstract\n        init: function (opts) {\n            var results, search, resultsSelector = \".select2-results\", mask;\n\n            // prepare options\n            this.opts = opts = this.prepareOpts(opts);\n\n            this.id=opts.id;\n\n            // destroy if called on an existing component\n            if (opts.element.data(\"select2\") !== undefined &&\n                opts.element.data(\"select2\") !== null) {\n                this.destroy();\n            }\n\n            this.enabled=true;\n            this.container = this.createContainer();\n\n            this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n            this.containerSelector=\"#\"+this.containerId.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n            this.container.attr(\"id\", this.containerId);\n\n            // cache the body so future lookups are cheap\n            this.body = thunk(function() { return opts.element.closest(\"body\"); });\n\n            syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n            this.container.css(evaluate(opts.containerCss));\n            this.container.addClass(evaluate(opts.containerCssClass));\n\n            this.elementTabIndex = this.opts.element.attr(\"tabIndex\");\n\n            // swap container for the element\n            this.opts.element\n                .data(\"select2\", this)\n                .addClass(\"select2-offscreen\")\n                .bind(\"focus.select2\", function() { $(this).select2(\"focus\"); })\n                .attr(\"tabIndex\", \"-1\")\n                .before(this.container);\n            this.container.data(\"select2\", this);\n\n            this.dropdown = this.container.find(\".select2-drop\");\n            this.dropdown.addClass(evaluate(opts.dropdownCssClass));\n            this.dropdown.data(\"select2\", this);\n\n            this.results = results = this.container.find(resultsSelector);\n            this.search = search = this.container.find(\"input.select2-input\");\n\n            search.attr(\"tabIndex\", this.elementTabIndex);\n\n            this.resultsPage = 0;\n            this.context = null;\n\n            // initialize the container\n            this.initContainer();\n\n            installFilteredMouseMove(this.results);\n            this.dropdown.delegate(resultsSelector, \"mousemove-filtered touchstart touchmove touchend\", this.bind(this.highlightUnderEvent));\n\n            installDebouncedScroll(80, this.results);\n            this.dropdown.delegate(resultsSelector, \"scroll-debounced\", this.bind(this.loadMoreIfNeeded));\n\n            // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n            if ($.fn.mousewheel) {\n                results.mousewheel(function (e, delta, deltaX, deltaY) {\n                    var top = results.scrollTop(), height;\n                    if (deltaY > 0 && top - deltaY <= 0) {\n                        results.scrollTop(0);\n                        killEvent(e);\n                    } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n                        results.scrollTop(results.get(0).scrollHeight - results.height());\n                        killEvent(e);\n                    }\n                });\n            }\n\n            installKeyUpChangeEvent(search);\n            search.bind(\"keyup-change input paste\", this.bind(this.updateResults));\n            search.bind(\"focus\", function () { search.addClass(\"select2-focused\"); });\n            search.bind(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n            this.dropdown.delegate(resultsSelector, \"mouseup\", this.bind(function (e) {\n                if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n                    this.highlightUnderEvent(e);\n                    this.selectHighlighted(e);\n                }\n            }));\n\n            // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n            // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n            // dom it will trigger the popup close, which is not what we want\n            this.dropdown.bind(\"click mouseup mousedown\", function (e) { e.stopPropagation(); });\n\n            if ($.isFunction(this.opts.initSelection)) {\n                // initialize selection based on the current value of the source element\n                this.initSelection();\n\n                // if the user has provided a function that can set selection based on the value of the source element\n                // we monitor the change event on the element and trigger it, allowing for two way synchronization\n                this.monitorSource();\n            }\n\n            if (opts.element.is(\":disabled\") || opts.element.is(\"[readonly='readonly']\")) this.disable();\n        },\n\n        // abstract\n        destroy: function () {\n            var select2 = this.opts.element.data(\"select2\");\n\n            if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n\n            if (select2 !== undefined) {\n\n                select2.container.remove();\n                select2.dropdown.remove();\n                select2.opts.element\n                    .removeClass(\"select2-offscreen\")\n                    .removeData(\"select2\")\n                    .unbind(\".select2\")\n                    .attr({\"tabIndex\": this.elementTabIndex})\n                    .show();\n            }\n        },\n\n        // abstract\n        prepareOpts: function (opts) {\n            var element, select, idKey, ajaxUrl;\n\n            element = opts.element;\n\n            if (element.get(0).tagName.toLowerCase() === \"select\") {\n                this.select = select = opts.element;\n            }\n\n            if (select) {\n                // these options are not allowed when attached to a select because they are picked up off the element itself\n                $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n                    if (this in opts) {\n                        throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a <select> element.\");\n                    }\n                });\n            }\n\n            opts = $.extend({}, {\n                populateResults: function(container, results, query) {\n                    var populate,  data, result, children, id=this.opts.id, self=this;\n\n                    populate=function(results, container, depth) {\n\n                        var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;\n\n                        results = opts.sortResults(results, container, query);\n\n                        for (i = 0, l = results.length; i < l; i = i + 1) {\n\n                            result=results[i];\n\n                            disabled = (result.disabled === true);\n                            selectable = (!disabled) && (id(result) !== undefined);\n\n                            compound=result.children && result.children.length > 0;\n\n                            node=$(\"<li></li>\");\n                            node.addClass(\"select2-results-dept-\"+depth);\n                            node.addClass(\"select2-result\");\n                            node.addClass(selectable ? \"select2-result-selectable\" : \"select2-result-unselectable\");\n                            if (disabled) { node.addClass(\"select2-disabled\"); }\n                            if (compound) { node.addClass(\"select2-result-with-children\"); }\n                            node.addClass(self.opts.formatResultCssClass(result));\n\n                            label=$(document.createElement(\"div\"));\n                            label.addClass(\"select2-result-label\");\n\n                            formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);\n                            if (formatted!==undefined) {\n                                label.html(formatted);\n                            }\n\n                            node.append(label);\n\n                            if (compound) {\n\n                                innerContainer=$(\"<ul></ul>\");\n                                innerContainer.addClass(\"select2-result-sub\");\n                                populate(result.children, innerContainer, depth+1);\n                                node.append(innerContainer);\n                            }\n\n                            node.data(\"select2-data\", result);\n                            container.append(node);\n                        }\n                    };\n\n                    populate(results, container, 0);\n                }\n            }, $.fn.select2.defaults, opts);\n\n            if (typeof(opts.id) !== \"function\") {\n                idKey = opts.id;\n                opts.id = function (e) { return e[idKey]; };\n            }\n\n            if ($.isArray(opts.element.data(\"select2Tags\"))) {\n                if (\"tags\" in opts) {\n                    throw \"tags specified as both an attribute 'data-select2-tags' and in options of Select2 \" + opts.element.attr(\"id\");\n                }\n                opts.tags=opts.element.attr(\"data-select2-tags\");\n            }\n\n            if (select) {\n                opts.query = this.bind(function (query) {\n                    var data = { results: [], more: false },\n                        term = query.term,\n                        children, firstChild, process;\n\n                    process=function(element, collection) {\n                        var group;\n                        if (element.is(\"option\")) {\n                            if (query.matcher(term, element.text(), element)) {\n                                collection.push({id:element.attr(\"value\"), text:element.text(), element: element.get(), css: element.attr(\"class\"), disabled: equal(element.attr(\"disabled\"), \"disabled\") });\n                            }\n                        } else if (element.is(\"optgroup\")) {\n                            group={text:element.attr(\"label\"), children:[], element: element.get(), css: element.attr(\"class\")};\n                            element.children().each2(function(i, elm) { process(elm, group.children); });\n                            if (group.children.length>0) {\n                                collection.push(group);\n                            }\n                        }\n                    };\n\n                    children=element.children();\n\n                    // ignore the placeholder option if there is one\n                    if (this.getPlaceholder() !== undefined && children.length > 0) {\n                        firstChild = children[0];\n                        if ($(firstChild).text() === \"\") {\n                            children=children.not(firstChild);\n                        }\n                    }\n\n                    children.each2(function(i, elm) { process(elm, data.results); });\n\n                    query.callback(data);\n                });\n                // this is needed because inside val() we construct choices from options and there id is hardcoded\n                opts.id=function(e) { return e.id; };\n                opts.formatResultCssClass = function(data) { return data.css; };\n            } else {\n                if (!(\"query\" in opts)) {\n\n                    if (\"ajax\" in opts) {\n                        ajaxUrl = opts.element.data(\"ajax-url\");\n                        if (ajaxUrl && ajaxUrl.length > 0) {\n                            opts.ajax.url = ajaxUrl;\n                        }\n                        opts.query = ajax.call(opts.element, opts.ajax);\n                    } else if (\"data\" in opts) {\n                        opts.query = local(opts.data);\n                    } else if (\"tags\" in opts) {\n                        opts.query = tags(opts.tags);\n                        if (opts.createSearchChoice === undefined) {\n                            opts.createSearchChoice = function (term) { return {id: term, text: term}; };\n                        }\n                        if (opts.initSelection === undefined) {\n                            opts.initSelection = function (element, callback) {\n                                var data = [];\n                                $(splitVal(element.val(), opts.separator)).each(function () {\n                                    var id = this, text = this, tags=opts.tags;\n                                    if ($.isFunction(tags)) tags=tags();\n                                    $(tags).each(function() { if (equal(this.id, id)) { text = this.text; return false; } });\n                                    data.push({id: id, text: text});\n                                });\n\n                                callback(data);\n                            };\n                        }\n                    }\n                }\n            }\n            if (typeof(opts.query) !== \"function\") {\n                throw \"query function not defined for Select2 \" + opts.element.attr(\"id\");\n            }\n\n            return opts;\n        },\n\n        /**\n         * Monitor the original element for changes and update select2 accordingly\n         */\n        // abstract\n        monitorSource: function () {\n            var el = this.opts.element, sync;\n\n            el.bind(\"change.select2\", this.bind(function (e) {\n                if (this.opts.element.data(\"select2-change-triggered\") !== true) {\n                    this.initSelection();\n                }\n            }));\n\n            sync = this.bind(function () {\n\n                var enabled, readonly, self = this;\n\n                // sync enabled state\n\n                enabled = this.opts.element.attr(\"disabled\") !== \"disabled\";\n                readonly = this.opts.element.attr(\"readonly\") === \"readonly\";\n\n                enabled = enabled && !readonly;\n\n                if (this.enabled !== enabled) {\n                    if (enabled) {\n                        this.enable();\n                    } else {\n                        this.disable();\n                    }\n                }\n\n\n                syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n                this.container.addClass(evaluate(this.opts.containerCssClass));\n\n                syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n                this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));\n\n            });\n\n            // mozilla and IE\n            el.bind(\"propertychange.select2 DOMAttrModified.select2\", sync);\n            // safari and chrome\n            if (typeof WebKitMutationObserver !== \"undefined\") {\n                if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }\n                this.propertyObserver = new WebKitMutationObserver(function (mutations) {\n                    mutations.forEach(sync);\n                });\n                this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });\n            }\n        },\n\n        /**\n         * Triggers the change event on the source element\n         */\n        // abstract\n        triggerChange: function (details) {\n\n            details = details || {};\n            details= $.extend({}, details, { type: \"change\", val: this.val() });\n            // prevents recursive triggering\n            this.opts.element.data(\"select2-change-triggered\", true);\n            this.opts.element.trigger(details);\n            this.opts.element.data(\"select2-change-triggered\", false);\n\n            // some validation frameworks ignore the change event and listen instead to keyup, click for selects\n            // so here we trigger the click event manually\n            this.opts.element.click();\n\n            // ValidationEngine ignorea the change event and listens instead to blur\n            // so here we trigger the blur event manually if so desired\n            if (this.opts.blurOnChange)\n                this.opts.element.blur();\n        },\n\n        // abstract\n        enable: function() {\n            if (this.enabled) return;\n\n            this.enabled=true;\n            this.container.removeClass(\"select2-container-disabled\");\n            this.opts.element.removeAttr(\"disabled\");\n        },\n\n        // abstract\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.close();\n\n            this.enabled=false;\n            this.container.addClass(\"select2-container-disabled\");\n            this.opts.element.attr(\"disabled\", \"disabled\");\n        },\n\n        // abstract\n        opened: function () {\n            return this.container.hasClass(\"select2-dropdown-open\");\n        },\n\n        // abstract\n        positionDropdown: function() {\n            var offset = this.container.offset(),\n                height = this.container.outerHeight(false),\n                width = this.container.outerWidth(false),\n                dropHeight = this.dropdown.outerHeight(false),\n\t            viewPortRight = $(window).scrollLeft() + $(window).width(),\n                viewportBottom = $(window).scrollTop() + $(window).height(),\n                dropTop = offset.top + height,\n                dropLeft = offset.left,\n                enoughRoomBelow = dropTop + dropHeight <= viewportBottom,\n                enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),\n\t            dropWidth = this.dropdown.outerWidth(false),\n\t            enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,\n                aboveNow = this.dropdown.hasClass(\"select2-drop-above\"),\n                bodyOffset,\n                above,\n                css;\n\n            //console.log(\"below/ droptop:\", dropTop, \"dropHeight\", dropHeight, \"sum\", (dropTop+dropHeight)+\" viewport bottom\", viewportBottom, \"enough?\", enoughRoomBelow);\n            //console.log(\"above/ offset.top\", offset.top, \"dropHeight\", dropHeight, \"top\", (offset.top-dropHeight), \"scrollTop\", this.body().scrollTop(), \"enough?\", enoughRoomAbove);\n\n            // fix positioning when body has an offset and is not position: static\n\n            if (this.body().css('position') !== 'static') {\n                bodyOffset = this.body().offset();\n                dropTop -= bodyOffset.top;\n                dropLeft -= bodyOffset.left;\n            }\n\n            // always prefer the current above/below alignment, unless there is not enough room\n\n            if (aboveNow) {\n                above = true;\n                if (!enoughRoomAbove && enoughRoomBelow) above = false;\n            } else {\n                above = false;\n                if (!enoughRoomBelow && enoughRoomAbove) above = true;\n            }\n\n            if (!enoughRoomOnRight) {\n               dropLeft = offset.left + width - dropWidth;\n            }\n\n            if (above) {\n                dropTop = offset.top - dropHeight;\n                this.container.addClass(\"select2-drop-above\");\n                this.dropdown.addClass(\"select2-drop-above\");\n            }\n            else {\n                this.container.removeClass(\"select2-drop-above\");\n                this.dropdown.removeClass(\"select2-drop-above\");\n            }\n\n            css = $.extend({\n                top: dropTop,\n                left: dropLeft,\n                width: width\n            }, evaluate(this.opts.dropdownCss));\n\n            this.dropdown.css(css);\n        },\n\n        // abstract\n        shouldOpen: function() {\n            var event;\n\n            if (this.opened()) return false;\n\n            event = $.Event(\"opening\");\n            this.opts.element.trigger(event);\n            return !event.isDefaultPrevented();\n        },\n\n        // abstract\n        clearDropdownAlignmentPreference: function() {\n            // clear the classes used to figure out the preference of where the dropdown should be opened\n            this.container.removeClass(\"select2-drop-above\");\n            this.dropdown.removeClass(\"select2-drop-above\");\n        },\n\n        /**\n         * Opens the dropdown\n         *\n         * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,\n         * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().\n         */\n        // abstract\n        open: function () {\n\n            if (!this.shouldOpen()) return false;\n\n            window.setTimeout(this.bind(this.opening), 1);\n\n            return true;\n        },\n\n        /**\n         * Performs the opening of the dropdown\n         */\n        // abstract\n        opening: function() {\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid,\n                mask;\n\n            this.clearDropdownAlignmentPreference();\n\n            this.container.addClass(\"select2-dropdown-open\").addClass(\"select2-container-active\");\n\n\n            if(this.dropdown[0] !== this.body().children().last()[0]) {\n                this.dropdown.detach().appendTo(this.body());\n            }\n\n            this.updateResults(true);\n\n            // create the dropdown mask if doesnt already exist\n            mask = $(\"#select2-drop-mask\");\n            if (mask.length == 0) {\n                mask = $(document.createElement(\"div\"));\n                mask.attr(\"id\",\"select2-drop-mask\").attr(\"class\",\"select2-drop-mask\");\n                mask.hide();\n                mask.appendTo(this.body());\n                mask.bind(\"mousedown touchstart\", function (e) {\n                    var dropdown = $(\"#select2-drop\"), self;\n                    if (dropdown.length > 0) {\n                        self=dropdown.data(\"select2\");\n                        if (self.opts.selectOnBlur) {\n                            self.selectHighlighted({noFocus: true});\n                        }\n                        self.close();\n                    }\n                });\n            }\n\n            // ensure the mask is always right before the dropdown\n            if (this.dropdown.prev()[0] !== mask[0]) {\n                this.dropdown.before(mask);\n            }\n\n            // move the global id to the correct dropdown\n            $(\"#select2-drop\").removeAttr(\"id\");\n            this.dropdown.attr(\"id\", \"select2-drop\");\n\n            // show the elements\n            mask.css(_makeMaskCss());\n            mask.show();\n            this.dropdown.show();\n            this.positionDropdown();\n\n            this.dropdown.addClass(\"select2-drop-active\");\n            this.ensureHighlightVisible();\n\n            // attach listeners to events that can change the position of the container and thus require\n            // the position of the dropdown to be updated as well so it does not come unglued from the container\n            var that = this;\n            this.container.parents().add(window).each(function () {\n                $(this).bind(resize+\" \"+scroll+\" \"+orient, function (e) {\n                    $(\"#select2-drop-mask\").css(_makeMaskCss());\n                    that.positionDropdown();\n                });\n            });\n\n            this.focusSearch();\n\n            function _makeMaskCss() {\n                return {\n                    width  : Math.max(document.documentElement.scrollWidth,  $(window).width()),\n                    height : Math.max(document.documentElement.scrollHeight, $(window).height())\n                }\n            }\n        },\n\n        // abstract\n        close: function () {\n            if (!this.opened()) return;\n\n            var cid = this.containerId,\n                scroll = \"scroll.\" + cid,\n                resize = \"resize.\"+cid,\n                orient = \"orientationchange.\"+cid;\n\n            // unbind event listeners\n            this.container.parents().add(window).each(function () { $(this).unbind(scroll).unbind(resize).unbind(orient); });\n\n            this.clearDropdownAlignmentPreference();\n\n            $(\"#select2-drop-mask\").hide();\n            this.dropdown.removeAttr(\"id\"); // only the active dropdown has the select2-drop id\n            this.dropdown.hide();\n            this.container.removeClass(\"select2-dropdown-open\");\n            this.results.empty();\n            this.clearSearch();\n\n            this.opts.element.trigger($.Event(\"close\"));\n        },\n\n        // abstract\n        clearSearch: function () {\n\n        },\n\n        //abstract\n        getMaximumSelectionSize: function() {\n            return evaluate(this.opts.maximumSelectionSize);\n        },\n\n        // abstract\n        ensureHighlightVisible: function () {\n            var results = this.results, children, index, child, hb, rb, y, more;\n\n            index = this.highlight();\n\n            if (index < 0) return;\n\n            if (index == 0) {\n\n                // if the first element is highlighted scroll all the way to the top,\n                // that way any unselectable headers above it will also be scrolled\n                // into view\n\n                results.scrollTop(0);\n                return;\n            }\n\n            children = this.findHighlightableChoices();\n\n            child = $(children[index]);\n\n            hb = child.offset().top + child.outerHeight(true);\n\n            // if this is the last child lets also make sure select2-more-results is visible\n            if (index === children.length - 1) {\n                more = results.find(\"li.select2-more-results\");\n                if (more.length > 0) {\n                    hb = more.offset().top + more.outerHeight(true);\n                }\n            }\n\n            rb = results.offset().top + results.outerHeight(true);\n            if (hb > rb) {\n                results.scrollTop(results.scrollTop() + (hb - rb));\n            }\n            y = child.offset().top - results.offset().top;\n\n            // make sure the top of the element is visible\n            if (y < 0 && child.css('display') != 'none' ) {\n                results.scrollTop(results.scrollTop() + y); // y is negative\n            }\n        },\n\n        // abstract\n        findHighlightableChoices: function() {\n            var h=this.results.find(\".select2-result-selectable:not(.select2-selected):not(.select2-disabled)\");\n            return this.results.find(\".select2-result-selectable:not(.select2-selected):not(.select2-disabled)\");\n        },\n\n        // abstract\n        moveHighlight: function (delta) {\n            var choices = this.findHighlightableChoices(),\n                index = this.highlight();\n\n            while (index > -1 && index < choices.length) {\n                index += delta;\n                var choice = $(choices[index]);\n                if (choice.hasClass(\"select2-result-selectable\") && !choice.hasClass(\"select2-disabled\") && !choice.hasClass(\"select2-selected\")) {\n                    this.highlight(index);\n                    break;\n                }\n            }\n        },\n\n        // abstract\n        highlight: function (index) {\n            var choices = this.findHighlightableChoices(),\n                choice,\n                data;\n\n            if (arguments.length === 0) {\n                return indexOf(choices.filter(\".select2-highlighted\")[0], choices.get());\n            }\n\n            if (index >= choices.length) index = choices.length - 1;\n            if (index < 0) index = 0;\n\n            this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n\n            choice = $(choices[index]);\n            choice.addClass(\"select2-highlighted\");\n\n            this.ensureHighlightVisible();\n\n            data = choice.data(\"select2-data\");\n            if (data) {\n                this.opts.element.trigger({ type: \"highlight\", val: this.id(data), choice: data });\n            }\n        },\n\n        // abstract\n        countSelectableResults: function() {\n            return this.findHighlightableChoices().length;\n        },\n\n        // abstract\n        highlightUnderEvent: function (event) {\n            var el = $(event.target).closest(\".select2-result-selectable\");\n            if (el.length > 0 && !el.is(\".select2-highlighted\")) {\n        \t\tvar choices = this.findHighlightableChoices();\n                this.highlight(choices.index(el));\n            } else if (el.length == 0) {\n                // if we are over an unselectable item remove al highlights\n                this.results.find(\".select2-highlighted\").removeClass(\"select2-highlighted\");\n            }\n        },\n\n        // abstract\n        loadMoreIfNeeded: function () {\n            var results = this.results,\n                more = results.find(\"li.select2-more-results\"),\n                below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible\n                offset = -1, // index of first element without data\n                page = this.resultsPage + 1,\n                self=this,\n                term=this.search.val(),\n                context=this.context;\n\n            if (more.length === 0) return;\n            below = more.offset().top - results.offset().top - results.height();\n\n            if (below <= this.opts.loadMorePadding) {\n                more.addClass(\"select2-active\");\n                this.opts.query({\n                        element: this.opts.element,\n                        term: term,\n                        page: page,\n                        context: context,\n                        matcher: this.opts.matcher,\n                        callback: this.bind(function (data) {\n\n                    // ignore a response if the select2 has been closed before it was received\n                    if (!self.opened()) return;\n\n\n                    self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});\n                    self.postprocessResults(data, false, false);\n                            \n                    if (data.more===true) {\n                        more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));\n                        window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                    } else {\n                        more.remove();\n                    }\n                    self.positionDropdown();\n                    self.resultsPage = page;\n                    self.context = data.context;\n                })});\n            }\n        },\n\n        /**\n         * Default tokenizer function which does nothing\n         */\n        tokenize: function() {\n\n        },\n\n        /**\n         * @param initial whether or not this is the call to this method right after the dropdown has been opened\n         */\n        // abstract\n        updateResults: function (initial) {\n            var search = this.search, results = this.results, opts = this.opts, data, self=this, input;\n\n            // if the search is currently hidden we do not alter the results\n            if (initial !== true && (this.showSearchInput === false || !this.opened())) {\n                return;\n            }\n\n            search.addClass(\"select2-active\");\n\n            function postRender() {\n                results.scrollTop(0);\n                search.removeClass(\"select2-active\");\n                self.positionDropdown();\n            }\n\n            function render(html) {\n                results.html(html);\n                postRender();\n            }\n\n            var maxSelSize = this.getMaximumSelectionSize();\n            if (maxSelSize >=1) {\n                data = this.data();\n                if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, \"formatSelectionTooBig\")) {\n            \t    render(\"<li class='select2-selection-limit'>\" + opts.formatSelectionTooBig(maxSelSize) + \"</li>\");\n            \t    return;\n                }\n            }\n\n            if (search.val().length < opts.minimumInputLength) {\n                if (checkFormatter(opts.formatInputTooShort, \"formatInputTooShort\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n            else if (opts.formatSearching() && initial===true) {\n                render(\"<li class='select2-searching'>\" + opts.formatSearching() + \"</li>\");\n            }\n\n            if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {\n                if (checkFormatter(opts.formatInputTooLong, \"formatInputTooLong\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + \"</li>\");\n                } else {\n                    render(\"\");\n                }\n                return;\n            }\n\n            // give the tokenizer a chance to pre-process the input\n            input = this.tokenize();\n            if (input != undefined && input != null) {\n                search.val(input);\n            }\n\n            this.resultsPage = 1;\n\n            opts.query({\n                element: opts.element,\n                    term: search.val(),\n                    page: this.resultsPage,\n                    context: null,\n                    matcher: opts.matcher,\n                    callback: this.bind(function (data) {\n                var def; // default choice\n\n                // ignore a response if the select2 has been closed before it was received\n                if (!this.opened()) return;\n\n                // save context, if any\n                this.context = (data.context===undefined) ? null : data.context;\n                // create a default choice and prepend it to the list\n                if (this.opts.createSearchChoice && search.val() !== \"\") {\n                    def = this.opts.createSearchChoice.call(null, search.val(), data.results);\n                    if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {\n                        if ($(data.results).filter(\n                            function () {\n                                return equal(self.id(this), self.id(def));\n                            }).length === 0) {\n                            data.results.unshift(def);\n                        }\n                    }\n                }\n\n                if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, \"formatNoMatches\")) {\n                    render(\"<li class='select2-no-results'>\" + opts.formatNoMatches(search.val()) + \"</li>\");\n                    return;\n                }\n\n                results.empty();\n                self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});\n\n                if (data.more === true && checkFormatter(opts.formatLoadMore, \"formatLoadMore\")) {\n                    results.append(\"<li class='select2-more-results'>\" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + \"</li>\");\n                    window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);\n                }\n\n                this.postprocessResults(data, initial);\n\n                postRender();\n            })});\n        },\n\n        // abstract\n        cancel: function () {\n            this.close();\n        },\n\n        // abstract\n        blur: function () {\n            // if selectOnBlur == true, select the currently highlighted option\n            if (this.opts.selectOnBlur)\n                this.selectHighlighted({noFocus: true});\n\n            this.close();\n            this.container.removeClass(\"select2-container-active\");\n            // synonymous to .is(':focus'), which is available in jquery >= 1.6\n            if (this.search[0] === document.activeElement) { this.search.blur(); }\n            this.clearSearch();\n            this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n        },\n\n        // abstract\n        focusSearch: function () {\n            focus(this.search);\n        },\n\n        // abstract\n        selectHighlighted: function (options) {\n            var index=this.highlight(),\n                highlighted=this.results.find(\".select2-highlighted\"),\n                data = highlighted.closest('.select2-result').data(\"select2-data\");\n\n            if (data) {\n                this.highlight(index);\n                this.onSelect(data, options);\n            }\n        },\n\n        // abstract\n        getPlaceholder: function () {\n            return this.opts.element.attr(\"placeholder\") ||\n                this.opts.element.attr(\"data-placeholder\") || // jquery 1.4 compat\n                this.opts.element.data(\"placeholder\") ||\n                this.opts.placeholder;\n        },\n\n        /**\n         * Get the desired width for the container element.  This is\n         * derived first from option `width` passed to select2, then\n         * the inline 'style' on the original element, and finally\n         * falls back to the jQuery calculated element width.\n         */\n        // abstract\n        initContainerWidth: function () {\n            function resolveContainerWidth() {\n                var style, attrs, matches, i, l;\n\n                if (this.opts.width === \"off\") {\n                    return null;\n                } else if (this.opts.width === \"element\"){\n                    return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';\n                } else if (this.opts.width === \"copy\" || this.opts.width === \"resolve\") {\n                    // check if there is inline style on the element that contains width\n                    style = this.opts.element.attr('style');\n                    if (style !== undefined) {\n                        attrs = style.split(';');\n                        for (i = 0, l = attrs.length; i < l; i = i + 1) {\n                            matches = attrs[i].replace(/\\s/g, '')\n                                .match(/width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/);\n                            if (matches !== null && matches.length >= 1)\n                                return matches[1];\n                        }\n                    }\n\n                    if (this.opts.width === \"resolve\") {\n                        // next check if css('width') can resolve a width that is percent based, this is sometimes possible\n                        // when attached to input type=hidden or elements hidden via css\n                        style = this.opts.element.css('width');\n                        if (style.indexOf(\"%\") > 0) return style;\n\n                        // finally, fallback on the calculated width of the element\n                        return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');\n                    }\n\n                    return null;\n                } else if ($.isFunction(this.opts.width)) {\n                    return this.opts.width();\n                } else {\n                    return this.opts.width;\n               }\n            };\n\n            var width = resolveContainerWidth.call(this);\n            if (width !== null) {\n                this.container.css(\"width\", width);\n            }\n        }\n    });\n\n    SingleSelect2 = clazz(AbstractSelect2, {\n\n        // single\n\n\t\tcreateContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container\"\n            }).html([\n                \"<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>\",\n                \"   <span></span><abbr class='select2-search-choice-close' style='display:none;'></abbr>\",\n                \"   <div><b></b></div>\" ,\n                \"</a>\",\n                \"<input class='select2-focusser select2-offscreen' type='text'/>\",\n                \"<div class='select2-drop' style='display:none'>\" ,\n                \"   <div class='select2-search'>\" ,\n                \"       <input type='text' autocomplete='off' class='select2-input'/>\" ,\n                \"   </div>\" ,\n                \"   <ul class='select2-results'>\" ,\n                \"   </ul>\" ,\n                \"</div>\"].join(\"\"));\n            return container;\n        },\n\n        // single\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.parent.disable.apply(this, arguments);\n\n            this.focusser.attr(\"disabled\", \"disabled\");\n        },\n\n        // single\n        enable: function() {\n            if (this.enabled) return;\n\n            this.parent.enable.apply(this, arguments);\n\n            this.focusser.removeAttr(\"disabled\");\n        },\n\n        // single\n        opening: function () {\n            this.parent.opening.apply(this, arguments);\n            this.focusser.attr(\"disabled\", \"disabled\");\n\n            this.opts.element.trigger($.Event(\"open\"));\n        },\n\n        // single\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n            this.focusser.removeAttr(\"disabled\");\n            focus(this.focusser);\n        },\n\n        // single\n        focus: function () {\n            if (this.opened()) {\n                this.close();\n            } else {\n                this.focusser.removeAttr(\"disabled\");\n                this.focusser.focus();\n            }\n        },\n\n        // single\n        isFocused: function () {\n            return this.container.hasClass(\"select2-container-active\");\n        },\n\n        // single\n        cancel: function () {\n            this.parent.cancel.apply(this, arguments);\n            this.focusser.removeAttr(\"disabled\");\n            this.focusser.focus();\n        },\n\n        // single\n        initContainer: function () {\n\n            var selection,\n                container = this.container,\n                dropdown = this.dropdown,\n                clickingInside = false;\n\n            this.showSearch(this.opts.minimumResultsForSearch >= 0);\n\n            this.selection = selection = container.find(\".select2-choice\");\n\n            this.focusser = container.find(\".select2-focusser\");\n\n            this.search.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                    return;\n                }\n\n                switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.TAB:\n                    case KEY.ENTER:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                }\n            }));\n\n            this.search.bind(\"blur\", this.bind(function(e) {\n                // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n                // without this the search field loses focus which is annoying\n                if (document.activeElement === this.body().get(0)) {\n                    window.setTimeout(this.bind(function() {\n                        this.search.focus();\n                    }), 0);\n                }\n            }));\n\n            this.focusser.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DOWN || e.which == KEY.UP\n                    || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n                    this.open();\n                    killEvent(e);\n                    return;\n                }\n\n                if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n                    if (this.opts.allowClear) {\n                        this.clear();\n                    }\n                    killEvent(e);\n                    return;\n                }\n            }));\n\n\n            installKeyUpChangeEvent(this.focusser);\n            this.focusser.bind(\"keyup-change input\", this.bind(function(e) {\n                if (this.opened()) return;\n                this.open();\n                if (this.showSearchInput !== false) {\n                    this.search.val(this.focusser.val());\n                }\n                this.focusser.val(\"\");\n                killEvent(e);\n            }));\n\n            selection.delegate(\"abbr\", \"mousedown\", this.bind(function (e) {\n                if (!this.enabled) return;\n                this.clear();\n                killEventImmediately(e);\n                this.close();\n                this.selection.focus();\n            }));\n\n            selection.bind(\"mousedown\", this.bind(function (e) {\n                clickingInside = true;\n\n                if (this.opened()) {\n                    this.close();\n                } else if (this.enabled) {\n                    this.open();\n                }\n\n                killEvent(e);\n\n                clickingInside = false;\n            }));\n\n            dropdown.bind(\"mousedown\", this.bind(function() { this.search.focus(); }));\n\n            selection.bind(\"focus\", this.bind(function(e) {\n                killEvent(e);\n            }));\n\n            this.focusser.bind(\"focus\", this.bind(function(){\n                this.container.addClass(\"select2-container-active\");\n            })).bind(\"blur\", this.bind(function() {\n                if (!this.opened()) {\n                    this.container.removeClass(\"select2-container-active\");\n                }\n            }));\n            this.search.bind(\"focus\", this.bind(function(){\n                this.container.addClass(\"select2-container-active\");\n            }))\n\n            this.initContainerWidth();\n            this.setPlaceholder();\n\n        },\n\n        // single\n        clear: function(triggerChange) {\n            var data=this.selection.data(\"select2-data\");\n            if (data) { // guard against queued quick consecutive clicks\n                this.opts.element.val(\"\");\n                this.selection.find(\"span\").empty();\n                this.selection.removeData(\"select2-data\");\n                this.setPlaceholder();\n\n                if (triggerChange !== false){\n                    this.opts.element.trigger({ type: \"removed\", val: this.id(data), choice: data });\n                    this.triggerChange({removed:data});\n                }\n            }\n        },\n\n        /**\n         * Sets selection based on source element's value\n         */\n        // single\n        initSelection: function () {\n            var selected;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.close();\n                this.setPlaceholder();\n            } else {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(selected){\n                    if (selected !== undefined && selected !== null) {\n                        self.updateSelection(selected);\n                        self.close();\n                        self.setPlaceholder();\n                    }\n                });\n            }\n        },\n\n        // single\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments);\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install the selection initializer\n                opts.initSelection = function (element, callback) {\n                    var selected = element.find(\":selected\");\n                    // a single select box always has a value, no need to null check 'selected'\n                    if ($.isFunction(callback))\n                        callback({id: selected.attr(\"value\"), text: selected.text(), element:selected});\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var id = element.val();\n                    //search in data by id, storing the actual matching item\n                    var match = null;\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = equal(id, opts.id(el));\n                            if (is_match) {\n                                match = el;\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(match);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // single\n        getPlaceholder: function() {\n            // if a placeholder is specified on a single select without the first empty option ignore it\n            if (this.select) {\n                if (this.select.find(\"option\").first().text() !== \"\") {\n                    return undefined;\n                }\n            }\n\n            return this.parent.getPlaceholder.apply(this, arguments);\n        },\n\n        // single\n        setPlaceholder: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (this.opts.element.val() === \"\" && placeholder !== undefined) {\n\n                // check for a first blank option if attached to a select\n                if (this.select && this.select.find(\"option:first\").text() !== \"\") return;\n\n                this.selection.find(\"span\").html(this.opts.escapeMarkup(placeholder));\n\n                this.selection.addClass(\"select2-default\");\n\n                this.selection.find(\"abbr\").hide();\n            }\n        },\n\n        // single\n        postprocessResults: function (data, initial, noHighlightUpdate) {\n            var selected = 0, self = this, showSearchInput = true;\n\n            // find the selected element in the result list\n\n            this.findHighlightableChoices().each2(function (i, elm) {\n                if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n                    selected = i;\n                    return false;\n                }\n            });\n\n            // and highlight it\n            if (noHighlightUpdate !== false) {\n                this.highlight(selected);\n            }\n\n            // hide the search box if this is the first we got the results and there are a few of them\n\n            if (initial === true) {\n                var min=this.opts.minimumResultsForSearch;\n                showSearchInput  = min < 0 ? false : countResults(data.results) >= min;\n                this.showSearch(showSearchInput);\n            }\n\n        },\n\n        // single\n        showSearch: function(showSearchInput) {\n            this.showSearchInput = showSearchInput;\n\n            this.dropdown.find(\".select2-search\")[showSearchInput ? \"removeClass\" : \"addClass\"](\"select2-search-hidden\");\n            //add \"select2-with-searchbox\" to the container if search box is shown\n            $(this.dropdown, this.container)[showSearchInput ? \"addClass\" : \"removeClass\"](\"select2-with-searchbox\");\n        },\n\n        // single\n        onSelect: function (data, options) {\n            var old = this.opts.element.val();\n\n            this.opts.element.val(this.id(data));\n            this.updateSelection(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            this.close();\n\n            if (!options || !options.noFocus)\n                this.selection.focus();\n\n            if (!equal(old, this.id(data))) { this.triggerChange(); }\n        },\n\n        // single\n        updateSelection: function (data) {\n\n            var container=this.selection.find(\"span\"), formatted;\n\n            this.selection.data(\"select2-data\", data);\n\n            container.empty();\n            formatted=this.opts.formatSelection(data, container);\n            if (formatted !== undefined) {\n                container.append(this.opts.escapeMarkup(formatted));\n            }\n\n            this.selection.removeClass(\"select2-default\");\n\n            if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n                this.selection.find(\"abbr\").show();\n            }\n        },\n\n        // single\n        val: function () {\n            var val, triggerChange = false, data = null, self = this;\n\n            if (arguments.length === 0) {\n                return this.opts.element.val();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            if (this.select) {\n                this.select\n                    .val(val)\n                    .find(\":selected\").each2(function (i, elm) {\n                        data = {id: elm.attr(\"value\"), text: elm.text(), element: elm.get(0)};\n                        return false;\n                    });\n                this.updateSelection(data);\n                this.setPlaceholder();\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"cannot call val() if initSelection() is not defined\");\n                }\n                // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n                if (!val && val !== 0) {\n                    this.clear(triggerChange);\n                    if (triggerChange) {\n                        this.triggerChange();\n                    }\n                    return;\n                }\n                this.opts.element.val(val);\n                this.opts.initSelection(this.opts.element, function(data){\n                    self.opts.element.val(!data ? \"\" : self.id(data));\n                    self.updateSelection(data);\n                    self.setPlaceholder();\n                    if (triggerChange) {\n                        self.triggerChange();\n                    }\n                });\n            }\n        },\n\n        // single\n        clearSearch: function () {\n            this.search.val(\"\");\n            this.focusser.val(\"\");\n        },\n\n        // single\n        data: function(value) {\n            var data;\n\n            if (arguments.length === 0) {\n                data = this.selection.data(\"select2-data\");\n                if (data == undefined) data = null;\n                return data;\n            } else {\n                if (!value || value === \"\") {\n                    this.clear();\n                } else {\n                    this.opts.element.val(!value ? \"\" : this.id(value));\n                    this.updateSelection(value);\n                }\n            }\n        }\n    });\n\n    MultiSelect2 = clazz(AbstractSelect2, {\n\n        // multi\n        createContainer: function () {\n            var container = $(document.createElement(\"div\")).attr({\n                \"class\": \"select2-container select2-container-multi\"\n            }).html([\n                \"    <ul class='select2-choices'>\",\n                //\"<li class='select2-search-choice'><span>California</span><a href=\"javascript:void(0)\" class=\"select2-search-choice-close\"></a></li>\" ,\n                \"  <li class='select2-search-field'>\" ,\n                \"    <input type='text' autocomplete='off' class='select2-input'>\" ,\n                \"  </li>\" ,\n                \"</ul>\" ,\n                \"<div class='select2-drop select2-drop-multi' style='display:none;'>\" ,\n                \"   <ul class='select2-results'>\" ,\n                \"   </ul>\" ,\n                \"</div>\"].join(\"\"));\n\t\t\treturn container;\n        },\n\n        // multi\n        prepareOpts: function () {\n            var opts = this.parent.prepareOpts.apply(this, arguments);\n\n            // TODO validate placeholder is a string if specified\n\n            if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                // install sthe selection initializer\n                opts.initSelection = function (element, callback) {\n\n                    var data = [];\n\n                    element.find(\":selected\").each2(function (i, elm) {\n                        data.push({id: elm.attr(\"value\"), text: elm.text(), element: elm[0]});\n                    });\n                    callback(data);\n                };\n            } else if (\"data\" in opts) {\n                // install default initSelection when applied to hidden input and data is local\n                opts.initSelection = opts.initSelection || function (element, callback) {\n                    var ids = splitVal(element.val(), opts.separator);\n                    //search in data by array of ids, storing matching items in a list\n                    var matches = [];\n                    opts.query({\n                        matcher: function(term, text, el){\n                            var is_match = $.grep(ids, function(id) {\n                                return equal(id, opts.id(el));\n                            }).length;\n                            if (is_match) {\n                                matches.push(el);\n                            }\n                            return is_match;\n                        },\n                        callback: !$.isFunction(callback) ? $.noop : function() {\n                            callback(matches);\n                        }\n                    });\n                };\n            }\n\n            return opts;\n        },\n\n        // multi\n        initContainer: function () {\n\n            var selector = \".select2-choices\", selection;\n\n            this.searchContainer = this.container.find(\".select2-search-field\");\n            this.selection = selection = this.container.find(selector);\n\n            this.search.bind(\"input paste\", this.bind(function() {\n                if (!this.enabled) return;\n                if (!this.opened()) {\n                    this.open();\n                }\n            }));\n\n            this.search.bind(\"keydown\", this.bind(function (e) {\n                if (!this.enabled) return;\n\n                if (e.which === KEY.BACKSPACE && this.search.val() === \"\") {\n                    this.close();\n\n                    var choices,\n                        selected = selection.find(\".select2-search-choice-focus\");\n                    if (selected.length > 0) {\n                        this.unselect(selected.first());\n                        this.search.width(10);\n                        killEvent(e);\n                        return;\n                    }\n\n                    choices = selection.find(\".select2-search-choice:not(.select2-locked)\");\n                    if (choices.length > 0) {\n                        choices.last().addClass(\"select2-search-choice-focus\");\n                    }\n                } else {\n                    selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                }\n\n                if (this.opened()) {\n                    switch (e.which) {\n                    case KEY.UP:\n                    case KEY.DOWN:\n                        this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n                        killEvent(e);\n                        return;\n                    case KEY.ENTER:\n                    case KEY.TAB:\n                        this.selectHighlighted();\n                        killEvent(e);\n                        return;\n                    case KEY.ESC:\n                        this.cancel(e);\n                        killEvent(e);\n                        return;\n                    }\n                }\n\n                if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n                 || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n                    return;\n                }\n\n                if (e.which === KEY.ENTER) {\n                    if (this.opts.openOnEnter === false) {\n                        return;\n                    } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n                        return;\n                    }\n                }\n\n                this.open();\n\n                if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n                    // prevent the page from scrolling\n                    killEvent(e);\n                }\n            }));\n\n            this.search.bind(\"keyup\", this.bind(this.resizeSearch));\n\n            this.search.bind(\"blur\", this.bind(function(e) {\n                this.container.removeClass(\"select2-container-active\");\n                this.search.removeClass(\"select2-focused\");\n                if (!this.opened()) this.clearSearch();\n                e.stopImmediatePropagation();\n            }));\n\n            this.container.delegate(selector, \"mousedown\", this.bind(function (e) {\n                if (!this.enabled) return;\n                if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n                    // clicked inside a select2 search choice, do not open\n                    return;\n                }\n                this.clearPlaceholder();\n                this.open();\n                this.focusSearch();\n                e.preventDefault();\n            }));\n\n            this.container.delegate(selector, \"focus\", this.bind(function () {\n                if (!this.enabled) return;\n                this.container.addClass(\"select2-container-active\");\n                this.dropdown.addClass(\"select2-drop-active\");\n                this.clearPlaceholder();\n            }));\n\n            this.initContainerWidth();\n\n            // set the placeholder if necessary\n            this.clearSearch();\n        },\n\n        // multi\n        enable: function() {\n            if (this.enabled) return;\n\n            this.parent.enable.apply(this, arguments);\n\n            this.search.removeAttr(\"disabled\");\n        },\n\n        // multi\n        disable: function() {\n            if (!this.enabled) return;\n\n            this.parent.disable.apply(this, arguments);\n\n            this.search.attr(\"disabled\", true);\n        },\n\n        // multi\n        initSelection: function () {\n            var data;\n            if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n                this.updateSelection([]);\n                this.close();\n                // set the placeholder if necessary\n                this.clearSearch();\n            }\n            if (this.select || this.opts.element.val() !== \"\") {\n                var self = this;\n                this.opts.initSelection.call(null, this.opts.element, function(data){\n                    if (data !== undefined && data !== null) {\n                        self.updateSelection(data);\n                        self.close();\n                        // set the placeholder if necessary\n                        self.clearSearch();\n                    }\n                });\n            }\n        },\n\n        // multi\n        clearSearch: function () {\n            var placeholder = this.getPlaceholder();\n\n            if (placeholder !== undefined  && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n                this.search.val(placeholder).addClass(\"select2-default\");\n                // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n                // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n                this.search.width(this.getMaxSearchWidth());\n            } else {\n                this.search.val(\"\").width(10);\n            }\n        },\n\n        // multi\n        clearPlaceholder: function () {\n            if (this.search.hasClass(\"select2-default\")) {\n                this.search.val(\"\").removeClass(\"select2-default\");\n            }\n        },\n\n        // multi\n        opening: function () {\n            this.parent.opening.apply(this, arguments);\n\n            this.clearPlaceholder();\n\t\t\tthis.resizeSearch();\n            this.focusSearch();\n\n            this.opts.element.trigger($.Event(\"open\"));\n        },\n\n        // multi\n        close: function () {\n            if (!this.opened()) return;\n            this.parent.close.apply(this, arguments);\n        },\n\n        // multi\n        focus: function () {\n            this.close();\n            this.search.focus();\n            this.opts.element.triggerHandler(\"focus\");\n        },\n\n        // multi\n        isFocused: function () {\n            return this.search.hasClass(\"select2-focused\");\n        },\n\n        // multi\n        updateSelection: function (data) {\n            var ids = [], filtered = [], self = this;\n\n            // filter out duplicates\n            $(data).each(function () {\n                if (indexOf(self.id(this), ids) < 0) {\n                    ids.push(self.id(this));\n                    filtered.push(this);\n                }\n            });\n            data = filtered;\n\n            this.selection.find(\".select2-search-choice\").remove();\n            $(data).each(function () {\n                self.addSelectedChoice(this);\n            });\n            self.postprocessResults();\n        },\n\n        tokenize: function() {\n            var input = this.search.val();\n            input = this.opts.tokenizer(input, this.data(), this.bind(this.onSelect), this.opts);\n            if (input != null && input != undefined) {\n                this.search.val(input);\n                if (input.length > 0) {\n                    this.open();\n                }\n            }\n\n        },\n\n        // multi\n        onSelect: function (data, options) {\n            this.addSelectedChoice(data);\n\n            this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n            if (this.select || !this.opts.closeOnSelect) this.postprocessResults();\n\n            if (this.opts.closeOnSelect) {\n                this.close();\n                this.search.width(10);\n            } else {\n                if (this.countSelectableResults()>0) {\n                    this.search.width(10);\n                    this.resizeSearch();\n                    if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n                        // if we reached max selection size repaint the results so choices\n                        // are replaced with the max selection reached message\n                        this.updateResults(true);\n                    }\n                    this.positionDropdown();\n                } else {\n                    // if nothing left to select close\n                    this.close();\n                    this.search.width(10);\n                }\n            }\n\n            // since its not possible to select an element that has already been\n            // added we do not need to check if this is a new element before firing change\n            this.triggerChange({ added: data });\n\n            if (!options || !options.noFocus)\n                this.focusSearch();\n        },\n\n        // multi\n        cancel: function () {\n            this.close();\n            this.focusSearch();\n        },\n\n        addSelectedChoice: function (data) {\n            var enableChoice = !data.locked,\n                enabledItem = $(\n                    \"<li class='select2-search-choice'>\" +\n                    \"    <div></div>\" +\n                    \"    <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>\" +\n                    \"</li>\"),\n                disabledItem = $(\n                    \"<li class='select2-search-choice select2-locked'>\" +\n                    \"<div></div>\" +\n                    \"</li>\");\n            var choice = enableChoice ? enabledItem : disabledItem,\n                id = this.id(data),\n                val = this.getVal(),\n                formatted;\n\n            formatted=this.opts.formatSelection(data, choice.find(\"div\"));\n            if (formatted != undefined) {\n                choice.find(\"div\").replaceWith(\"<div>\"+this.opts.escapeMarkup(formatted)+\"</div>\");\n            }\n\n            if(enableChoice){\n              choice.find(\".select2-search-choice-close\")\n                  .bind(\"mousedown\", killEvent)\n                  .bind(\"click dblclick\", this.bind(function (e) {\n                  if (!this.enabled) return;\n\n                  $(e.target).closest(\".select2-search-choice\").fadeOut('fast', this.bind(function(){\n                      this.unselect($(e.target));\n                      this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n                      this.close();\n                      this.focusSearch();\n                  })).dequeue();\n                  killEvent(e);\n              })).bind(\"focus\", this.bind(function () {\n                  if (!this.enabled) return;\n                  this.container.addClass(\"select2-container-active\");\n                  this.dropdown.addClass(\"select2-drop-active\");\n              }));\n            }\n\n            choice.data(\"select2-data\", data);\n            choice.insertBefore(this.searchContainer);\n\n            val.push(id);\n            this.setVal(val);\n        },\n\n        // multi\n        unselect: function (selected) {\n            var val = this.getVal(),\n                data,\n                index;\n\n            selected = selected.closest(\".select2-search-choice\");\n\n            if (selected.length === 0) {\n                throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n            }\n\n            data = selected.data(\"select2-data\");\n\n            if (!data) {\n                // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n                // and invoked on an element already removed\n                return;\n            }\n\n            index = indexOf(this.id(data), val);\n\n            if (index >= 0) {\n                val.splice(index, 1);\n                this.setVal(val);\n                if (this.select) this.postprocessResults();\n            }\n            selected.remove();\n\n            this.opts.element.trigger({ type: \"removed\", val: this.id(data), choice: data });\n            this.triggerChange({ removed: data });\n        },\n\n        // multi\n        postprocessResults: function () {\n            var val = this.getVal(),\n                choices = this.results.find(\".select2-result\"),\n                compound = this.results.find(\".select2-result-with-children\"),\n                self = this;\n\n            choices.each2(function (i, choice) {\n                var id = self.id(choice.data(\"select2-data\"));\n                if (indexOf(id, val) >= 0) {\n                    choice.addClass(\"select2-selected\");\n                    // mark all children of the selected parent as selected\n                    choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n                }\n            });\n\n            compound.each2(function(i, choice) {\n                // hide an optgroup if it doesnt have any selectable children\n                if (!choice.is('.select2-result-selectable')\n                    && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n                    choice.addClass(\"select2-selected\");\n                }\n            });\n\n            if (this.highlight() == -1){\n                self.highlight(0);\n            }\n\n        },\n\n        // multi\n        getMaxSearchWidth: function() {\n            return this.selection.width() - getSideBorderPadding(this.search);\n        },\n\n        // multi\n        resizeSearch: function () {\n            var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n            \tsideBorderPadding = getSideBorderPadding(this.search);\n\n            minimumWidth = measureTextWidth(this.search) + 10;\n\n            left = this.search.offset().left;\n\n            maxWidth = this.selection.width();\n            containerLeft = this.selection.offset().left;\n\n            searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n            if (searchWidth < minimumWidth) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth < 40) {\n                searchWidth = maxWidth - sideBorderPadding;\n            }\n\n            if (searchWidth <= 0) {\n              searchWidth = minimumWidth;\n            }\n\n            this.search.width(searchWidth);\n        },\n\n        // multi\n        getVal: function () {\n            var val;\n            if (this.select) {\n                val = this.select.val();\n                return val === null ? [] : val;\n            } else {\n                val = this.opts.element.val();\n                return splitVal(val, this.opts.separator);\n            }\n        },\n\n        // multi\n        setVal: function (val) {\n            var unique;\n            if (this.select) {\n                this.select.val(val);\n            } else {\n                unique = [];\n                // filter out duplicates\n                $(val).each(function () {\n                    if (indexOf(this, unique) < 0) unique.push(this);\n                });\n                this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n            }\n        },\n\n        // multi\n        val: function () {\n            var val, triggerChange = false, data = [], self=this;\n\n            if (arguments.length === 0) {\n                return this.getVal();\n            }\n\n            val = arguments[0];\n\n            if (arguments.length > 1) {\n                triggerChange = arguments[1];\n            }\n\n            // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n            if (!val && val !== 0) {\n                this.opts.element.val(\"\");\n                this.updateSelection([]);\n                this.clearSearch();\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n                return;\n            }\n\n            // val is a list of ids\n            this.setVal(val);\n\n            if (this.select) {\n                this.opts.initSelection(this.select, this.bind(this.updateSelection));\n                if (triggerChange) {\n                    this.triggerChange();\n                }\n            } else {\n                if (this.opts.initSelection === undefined) {\n                    throw new Error(\"val() cannot be called if initSelection() is not defined\");\n                }\n\n                this.opts.initSelection(this.opts.element, function(data){\n                    var ids=$(data).map(self.id);\n                    self.setVal(ids);\n                    self.updateSelection(data);\n                    self.clearSearch();\n                    if (triggerChange) {\n                        self.triggerChange();\n                    }\n                });\n            }\n            this.clearSearch();\n        },\n\n        // multi\n        onSortStart: function() {\n            if (this.select) {\n                throw new Error(\"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.\");\n            }\n\n            // collapse search field into 0 width so its container can be collapsed as well\n            this.search.width(0);\n            // hide the container\n            this.searchContainer.hide();\n        },\n\n        // multi\n        onSortEnd:function() {\n\n            var val=[], self=this;\n\n            // show search and move it to the end of the list\n            this.searchContainer.show();\n            // make sure the search container is the last item in the list\n            this.searchContainer.appendTo(this.searchContainer.parent());\n            // since we collapsed the width in dragStarted, we resize it here\n            this.resizeSearch();\n\n            // update selection\n\n            this.selection.find(\".select2-search-choice\").each(function() {\n                val.push(self.opts.id($(this).data(\"select2-data\")));\n            });\n            this.setVal(val);\n            this.triggerChange();\n        },\n\n        // multi\n        data: function(values) {\n            var self=this, ids;\n            if (arguments.length === 0) {\n                 return this.selection\n                     .find(\".select2-search-choice\")\n                     .map(function() { return $(this).data(\"select2-data\"); })\n                     .get();\n            } else {\n                if (!values) { values = []; }\n                ids = $.map(values, function(e) { return self.opts.id(e); });\n                this.setVal(ids);\n                this.updateSelection(values);\n                this.clearSearch();\n            }\n        }\n    });\n\n    $.fn.select2 = function () {\n\n        var args = Array.prototype.slice.call(arguments, 0),\n            opts,\n            select2,\n            value, multiple, allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"positionDropdown\", \"data\"];\n\n        this.each(function () {\n            if (args.length === 0 || typeof(args[0]) === \"object\") {\n                opts = args.length === 0 ? {} : $.extend({}, args[0]);\n                opts.element = $(this);\n\n                if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n                    multiple = opts.element.attr(\"multiple\");\n                } else {\n                    multiple = opts.multiple || false;\n                    if (\"tags\" in opts) {opts.multiple = multiple = true;}\n                }\n\n                select2 = multiple ? new MultiSelect2() : new SingleSelect2();\n                select2.init(opts);\n            } else if (typeof(args[0]) === \"string\") {\n\n                if (indexOf(args[0], allowedMethods) < 0) {\n                    throw \"Unknown method: \" + args[0];\n                }\n\n                value = undefined;\n                select2 = $(this).data(\"select2\");\n                if (select2 === undefined) return;\n                if (args[0] === \"container\") {\n                    value=select2.container;\n                } else {\n                    value = select2[args[0]].apply(select2, args.slice(1));\n                }\n                if (value !== undefined) {return false;}\n            } else {\n                throw \"Invalid arguments to select2 plugin: \" + args;\n            }\n        });\n        return (value === undefined) ? this : value;\n    };\n\n    // plugin defaults, accessible to users\n    $.fn.select2.defaults = {\n        width: \"copy\",\n        loadMorePadding: 0,\n        closeOnSelect: true,\n        openOnEnter: true,\n        containerCss: {},\n        dropdownCss: {},\n        containerCssClass: \"\",\n        dropdownCssClass: \"\",\n        formatResult: function(result, container, query, escapeMarkup) {\n            var markup=[];\n            markMatch(result.text, query.term, markup, escapeMarkup);\n            return markup.join(\"\");\n        },\n        formatSelection: function (data, container) {\n            return data ? data.text : undefined;\n        },\n        sortResults: function (results, container, query) {\n            return results;\n        },\n        formatResultCssClass: function(data) {return undefined;},\n        formatNoMatches: function () { return \"No matches found\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" more character\" + (n == 1? \"\" : \"s\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please enter \" + n + \" less character\" + (n == 1? \"\" : \"s\"); },\n        formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Loading more results...\"; },\n        formatSearching: function () { return \"Searching...\"; },\n        minimumResultsForSearch: 0,\n        minimumInputLength: 0,\n        maximumInputLength: null,\n        maximumSelectionSize: 0,\n        id: function (e) { return e.id; },\n        matcher: function(term, text) {\n            return text.toUpperCase().indexOf(term.toUpperCase()) >= 0;\n        },\n        separator: \",\",\n        tokenSeparators: [],\n        tokenizer: defaultTokenizer,\n        escapeMarkup: function (markup) {\n            var replace_map = {\n                '\\\\': '&#92;',\n                '&': '&amp;',\n                '<': '&lt;',\n                '>': '&gt;',\n                '\"': '&quot;',\n                \"'\": '&apos;',\n                \"/\": '&#47;'\n            };\n\n            return String(markup).replace(/[&<>\"'/\\\\]/g, function (match) {\n                    return replace_map[match[0]];\n            });\n        },\n        blurOnChange: false,\n        selectOnBlur: false,\n        adaptContainerCssClass: function(c) { return c; },\n        adaptDropdownCssClass: function(c) { return null; }\n    };\n\n    // exports\n    window.Select2 = {\n        query: {\n            ajax: ajax,\n            local: local,\n            tags: tags\n        }, util: {\n            debounce: debounce,\n            markMatch: markMatch\n        }, \"class\": {\n            \"abstract\": AbstractSelect2,\n            \"single\": SingleSelect2,\n            \"multi\": MultiSelect2\n        }\n    };\n\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_de.js",
    "content": "/**\n * Select2 German translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Keine Übereinstimmungen gefunden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Bitte \" + n + \" Zeichen mehr eingeben\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Bitte \" + n + \" Zeichen weniger eingeben\"; },\n        formatSelectionTooBig: function (limit) { return \"Sie können nur \" + limit + \" Eintr\" + (limit === 1 ? \"ag\" : \"äge\") + \" auswählen\"; },\n        formatLoadMore: function (pageNumber) { return \"Lade mehr Ergebnisse...\"; },\n        formatSearching: function () { return \"Suche...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_es.js",
    "content": "/**\n * Select2 Spanish translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"No se encontraron resultados\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Por favor adicione \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Por favor elimine \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Solo puede seleccionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Cargando más resultados...\"; },\n        formatSearching: function () { return \"Buscando...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_fr.js",
    "content": "/**\n * Select2 French translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Aucun résultat trouvé\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Merci de saisir \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" de plus\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Merci de saisir \" + n + \" caractère\" + (n == 1? \"\" : \"s\") + \" de moins\"; },\n        formatSelectionTooBig: function (limit) { return \"Vous pouvez seulement sélectionner \" + limit + \" élément\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Chargement de résultats supplémentaires...\"; },\n        formatSearching: function () { return \"Recherche en cours...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_hu.js",
    "content": "/**\n * Select2 Hungarian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nincs találat.\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Túl rövid. Még \" + n + \" karakter hiányzik.\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Túl hosszú. \" + n + \" kerekterrel több mint kellene.\"; },\n        formatSelectionTooBig: function (limit) { return \"Csak \" + limit + \" elemet lehet kiválasztani.\"; },\n        formatLoadMore: function (pageNumber) { return \"Töltés...\"; },\n        formatSearching: function () { return \"Keresés...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_it.js",
    "content": "/**\n * Select2 Italian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nessuna corrispondenza trovata\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Inserisci ancora \" + n + \" caratter\" + (n == 1? \"e\" : \"i\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Inserisci \" + n + \" caratter\" + (n == 1? \"e\" : \"i\") + \" in meno\"; },\n        formatSelectionTooBig: function (limit) { return \"Puoi selezionare solo \" + limit + \" element\" + (limit == 1 ? \"o\" : \"i\"); },\n        formatLoadMore: function (pageNumber) { return \"Caricamento in corso...\"; },\n        formatSearching: function () { return \"Ricerca...\"; }\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_nl.js",
    "content": "/**\n * Select2 Dutch translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Geen resultaten gevonden\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Vul \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" meer in\"; },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Vul \" + n + \" karakter\" + (n == 1? \"\" : \"s\") + \" minder in\"; },\n        formatSelectionTooBig: function (limit) { return \"Maximaal \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\") + \" toegestaan\"; },\n        formatLoadMore: function (pageNumber) { return \"Meer resultaten laden...\"; },\n        formatSearching: function () { return \"Zoeken...\"; },\n    });\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-BR.js",
    "content": "/**\n * Select2 Brazilian Portuguese translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Informe \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"Carregando mais resultados...\"; },\n        formatSearching: function () { return \"Buscando...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_pt-PT.js",
    "content": "/**\n * Select2 Portuguese (Portugal) translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Nenhum resultado encontrado\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Introduza \" + n + \" caracter\" + (n == 1 ? \"\" : \"es\"); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Apague \" + n + \" caracter\" + (n == 1 ? \"\" : \"es\"); },\n        formatSelectionTooBig: function (limit) { return \"Só é possível selecionar \" + limit + \" elemento\" + (limit == 1 ? \"\" : \"s\"); },\n        formatLoadMore: function (pageNumber) { return \"A carregar mais resultados...\"; },\n        formatSearching: function () { return \"A pesquisar...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_ru.js",
    "content": "/**\n * Select2 Russian translation\n */\n(function ($) {\n    \"use strict\";\n\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"Совпадений не найдено\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"Пожалуйста, введите еще \" + n + \" символ\" + (n == 1 ? \"\" : ((n > 1)&&(n < 5) ? \"а\" : \"ов\")); },\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"Пожалуйста, введите на \" + n + \" символ\" + (n == 1 ? \"\" : ((n > 1)&&(n < 5)? \"а\" : \"ов\")) + \" меньше\"; },\n        formatSelectionTooBig: function (limit) { return \"Вы можете выбрать не более \" + limit + \" элемент\" + (limit == 1 ? \"\" : ((limit > 1)&&(limit < 5)? \"а\" : \"ов\")); },\n        formatLoadMore: function (pageNumber) { return \"Загрузка данных...\"; },\n        formatSearching: function () { return \"Поиск...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/forms/select2/select2_locale_zh-CN.js",
    "content": "/**\n * Select2 Chinese translation\n */\n(function ($) {\n    \"use strict\";\n    $.extend($.fn.select2.defaults, {\n        formatNoMatches: function () { return \"没有找到匹配项\"; },\n        formatInputTooShort: function (input, min) { var n = min - input.length; return \"请再输入\" + n + \"个字符\";},\n        formatInputTooLong: function (input, max) { var n = input.length - max; return \"请删掉\" + n + \"个字符\";},\n        formatSelectionTooBig: function (limit) { return \"你只能选择最多\" + limit + \"项\"; },\n        formatLoadMore: function (pageNumber) { return \"加载结果中...\"; },\n        formatSearching: function () { return \"搜索中...\"; }\n    });\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/data/demo.json",
    "content": "{\"markers\":[\n\t{ \"latitude\":57.7973333, \"longitude\":12.0502107, \"title\":\"Angered\", \"content\":\"Representing :)\" },\n\t{ \"latitude\":57.6969943, \"longitude\":11.9865, \"title\":\"Gothenburg\", \"content\":\"Swedens second largest city\" }\n]}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.extensions.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *      jquery.ui.map.js\n */\n( function($) {\n\n\t$.extend($.ui.gmap.prototype, {\n\t\t \n\t\t/**\n\t\t * Gets the current position\n\t\t * @param callback:function(position, status)\n\t\t * @param geoPositionOptions:object, see https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMGeoPositionOptions\n\t\t */\n\t\tgetCurrentPosition: function(callback, geoPositionOptions) {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition ( \n\t\t\t\t\tfunction(result) {\n\t\t\t\t\t\tcallback(result, 'OK');\n\t\t\t\t\t}, \n\t\t\t\t\tfunction(error) {\n\t\t\t\t\t\tcallback(null, error);\n\t\t\t\t\t}, \n\t\t\t\t\tgeoPositionOptions \n\t\t\t\t);\t\n\t\t\t} else {\n\t\t\t\tcallback(null, 'NOT_SUPPORTED');\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Watches current position\n\t\t * To clear watch, call navigator.geolocation.clearWatch(this.get('watch'));\n\t\t * @param callback:function(position, status)\n\t\t * @param geoPositionOptions:object, see https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIDOMGeoPositionOptions\n\t\t */\n\t\twatchPosition: function(callback, geoPositionOptions) {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tthis.set('watch', navigator.geolocation.watchPosition ( \n\t\t\t\t\tfunction(result) {\n\t\t\t\t\t\tcallback(result, \"OK\");\n\t\t\t\t\t}, \n\t\t\t\t\tfunction(error) {\n\t\t\t\t\t\tcallback(null, error);\n\t\t\t\t\t}, \n\t\t\t\t\tgeoPositionOptions \n\t\t\t\t));\t\n\t\t\t} else {\n\t\t\t\tcallback(null, \"NOT_SUPPORTED\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Clears any watches\n\t\t */\n\t\tclearWatch: function() {\n\t\t\tif ( navigator.geolocation ) {\n\t\t\t\tnavigator.geolocation.clearWatch(this.get('watch'));\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Autocomplete using Google Geocoder\n\t\t * @param panel:string/node/jquery\n\t\t * @param callback:function(results, status)\n\t\t */\n\t\tautocomplete: function(panel, callback) {\n\t\t\tvar self = this;\n\t\t\t$(this._unwrap(panel)).autocomplete({\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\tself.search({'address':request.term}, function(results, status) {\n\t\t\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\t\t\tresponse( $.map( results, function(item) {\n\t\t\t\t\t\t\t\treturn { label: item.formatted_address, value: item.formatted_address, position: item.geometry.location }\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} else if ( status === 'OVER_QUERY_LIMIT' ) {\n\t\t\t\t\t\t\talert('Google said it\\'s too much!');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tminLength: 3,\n\t\t\t\tselect: function(event, ui) { \n\t\t\t\t\tself._call(callback, ui);\n\t\t\t\t},\n\t\t\t\topen: function() { $( this ).removeClass( \"ui-corner-all\" ).addClass( \"ui-corner-top\" ); },\n\t\t\t\tclose: function() { $( this ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-all\" ); }\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Retrieves a list of Places in a given area. The PlaceResultss passed to the callback are stripped-down versions of a full PlaceResult. A more detailed PlaceResult for each Place can be obtained by sending a Place Details request with the desired Place's reference value.\n\t\t * @param placeSearchRequest:google.maps.places.PlaceSearchRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceSearchRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\tplacesSearch: function(placeSearchRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).search(placeSearchRequest, callback);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Clears any directions\n\t\t */\n\t\tclearDirections: function() {\n\t\t\tvar directionsRenderer = this.get('services > DirectionsRenderer');\n\t\t\tif (directionsRenderer) {\n\t\t\t\tdirectionsRenderer.setMap(null);\n\t\t\t\tdirectionsRenderer.setPanel(null);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Page through the markers. Very simple version.\n\t\t * @param prop:the marker property to show in display, defaults to title\n\t\t */\n\t\tpagination: function(prop) {\n\t\t\tvar $el = $(\"<div id='pagination' class='pagination shadow gradient rounded clearfix'><div class='lt btn back-btn'></div><div class='lt display'></div><div class='rt btn fwd-btn'></div></div>\");\n\t\t\tvar self = this, i = 0, prop = prop || 'title';\n\t\t\tself.set('p_nav', function(a, b) {\n\t\t\t\tif (a) {\n\t\t\t\t\ti = i + b;\n\t\t\t\t\t$el.find('.display').text(self.get('markers')[i][prop]);\n\t\t\t\t\tself.get('map').panTo(self.get('markers')[i].getPosition());\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.get('p_nav')(true, 0);\n\t\t\t$el.find('.back-btn').click(function() {\n\t\t\t\tself.get('p_nav')((i > 0), -1, this);\n\t\t\t});\n\t\t\t$el.find('.fwd-btn').click(function() {\n\t\t\t\tself.get('p_nav')((i < self.get('markers').length - 1), 1, this);\n\t\t\t});\n\t\t\tself.addControl($el, google.maps.ControlPosition.TOP_LEFT);\t\t\t\n\t\t}\n\t\t\n\t\t/**\n\t\t * A layer that displays data from Panoramio.\n\t\t * @param panoramioLayerOptions:google.maps.panoramio.PanoramioLayerOptions, http://code.google.com/apis/maps/documentation/javascript/reference.html#PanoramioLayerOptions\n\t\t */\n\t\t/*loadPanoramio: function(panoramioLayerOptions) {\n\t\t\tif ( !this.get('overlays').PanoramioLayer ) {\n\t\t\t\tthis.get('overlays').PanoramioLayer = new google.maps.panoramio.PanoramioLayer();\n\t\t\t}\n\t\t\tthis.get('overlays').PanoramioLayer.setOptions(jQuery.extend({'map': this.get('map') }, panoramioLayerOptions));\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Makes an elevation request along a path, where the elevation data are returned as distance-based samples along that path.\n\t\t * @param pathElevationRequest:google.maps.PathElevationRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PathElevationRequest\n\t\t * @param callback:function(result:google.maps.ElevationResult, status:google.maps.ElevationStatus), http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ElevationResult\n\t\t */\n\t\t/*elevationPath: function(pathElevationRequest, callback) {\n\t\t\tthis.get('services > ElevationService', new google.maps.ElevationService()).getElevationAlongPath(pathElevationRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Makes an elevation request for a list of discrete locations.\n\t\t * @param pathElevationRequest:google.maps.PathElevationRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PathElevationRequest\n\t\t * @param callback:function(result:google.maps.ElevationResult, status:google.maps.ElevationStatus), http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ElevationResult\n\t\t */\n\t\t/*elevationLocations: function(pathElevationRequest, callback) {\n\t\t\tthis.get('services > ElevationService', new google.maps.ElevationService()).getElevationForLocations(pathElevationRequest, callback);\n\t\t},*/\n\t\t\n\t\t/* PLACES SERVICE */\t\t\n\t\t\n\t\t/**\n\t\t * Retrieves a list of Places in a given area. The PlaceResultss passed to the callback are stripped-down versions of a full PlaceResult. A more detailed PlaceResult for each Place can be obtained by sending a Place Details request with the desired Place's reference value.\n\t\t * @param placeSearchRequest:google.maps.places.PlaceSearchRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceSearchRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\t/*placesSearch: function(placeSearchRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).search(placeSearchRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * Retrieves details about the Place identified by the given reference.\n\t\t * @param placeDetailsRequest:google.maps.places.PlaceDetailsRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceDetailsRequest\n\t\t * @param callback:function(result:google.maps.places.PlaceResult, status:google.maps.places.PlacesServiceStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#PlaceResult\n\t\t */\n\t\t/*placesDetails: function(placeDetailsRequest, callback) {\n\t\t\tthis.get('services > PlacesService', new google.maps.places.PlacesService(this.get('map'))).getDetails(placeDetailsRequest, callback);\n\t\t},*/\n\t\t\n\t\t/**\n\t\t * A service to predict the desired Place based on user input. The service is attached to an <input> field in the form of a drop-down list. The list of predictions is updated dynamically as text is typed into the input field. \n\t\t * @param panel:jquery/node/string\n\t\t * @param autocompleteOptions:google.maps.places.AutocompleteOptions, http://code.google.com/apis/maps/documentation/javascript/reference.html#AutocompleteOptions\n\t\t */\t\t\n\t\t/*placesAutocomplete: function(panel, autocompleteOptions) {\n\t\t\tthis.get('services > Autocomplete', new google.maps.places.Autocomplete(this._unwrap(panel)));\n\t\t},*/\n\t\t\n\t\t/* DISTANCE MATRIX SERVICE */\n\t\t\n\t\t/**\n\t\t * Issues a distance matrix request.\n\t\t * @param distanceMatrixRequest:google.maps.DistanceMatrixRequest, http://code.google.com/apis/maps/documentation/javascript/reference.html#DistanceMatrixRequest \n\t\t * @param callback:function(result:google.maps.DistanceMatrixResponse, status: google.maps.DistanceMatrixStatus), http://code.google.com/apis/maps/documentation/javascript/reference.html#DistanceMatrixResponse\n\t\t */\n\t\t/*displayDistanceMatrix: function(distanceMatrixRequest, callback) {\n\t\t\tthis.get('services > DistanceMatrixService', new google.maps.DistanceMatrixService()).getDistanceMatrix(distanceMatrixRequest, callback);\n\t\t}*/\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.js",
    "content": " /*!\n * jQuery FN Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n */\n( function($) {\n\t\n\t/**\n\t * @param name:string\n\t * @param prototype:object\n\t */\n\t$.a = function(name, prototype) {\n\t\t\n\t\tvar namespace = name.split('.')[0];\n        name = name.split('.')[1];\n\t\t\n\t\t$[namespace] = $[namespace] || {};\n\t\t$[namespace][name] = function(options, element) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\tthis._setup(options, element);\n\t\t\t}\n\t\t};\n\t\t\n\t\t$[namespace][name].prototype = $.extend({\n\t\t\t'namespace': namespace,\n\t\t\t'pluginName': name\n        }, prototype);\n\t\t\n\t\t$.fn[name] = function(options) {\n\t\t\t\n\t\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\t\targs = Array.prototype.slice.call(arguments, 1),\n\t\t\t\treturnValue = this;\n\t\t\t\n\t\t\tif ( isMethodCall && options.substring(0, 1) === '_' ) { \n\t\t\t\treturn returnValue; \n\t\t\t}\n\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data(this, name);\n\t\t\t\tif (!instance) {\n\t\t\t\t\tinstance = $.data(this, name, new $[namespace][name](options, this));\n\t\t\t\t}\n\t\t\t\tif (isMethodCall) {\n\t\t\t\t\treturnValue = instance[options].apply(instance, args);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\treturn returnValue; \n\t\t\t\n\t\t};\n\t\t\n\t};\n\t\n\t$.a('ui.gmap', {\n\t\t\n\t\t/**\n\t\t * Map options\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MapOptions\n\t\t */\n\t\toptions: {\n\t\t\tmapTypeId: 'roadmap',\n\t\t\tzoom: 5\t\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get or set options\n\t\t * @param key:string\n\t\t * @param options:object\n\t\t * @return object\n\t\t */\n\t\toption: function(key, options) {\n\t\t\tif (options) {\n\t\t\t\tthis.options[key] = options;\n\t\t\t\tthis.get('map').set(key, options);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\treturn this.options[key];\n\t\t},\n\t\t\n\t\t/**\n\t\t * Setup plugin basics, \n\t\t * @param options:object\n\t\t * @param element:node\n\t\t */\n\t\t_setup: function(options, element) {\n\t\t\tthis.el = element;\n\t\t\toptions = options || {};\n\t\t\tjQuery.extend(this.options, options, { 'center': this._latLng(options.center) });\n\t\t\tthis._create();\n\t\t\tif ( this._init ) { this._init(); }\n\t\t},\n\t\t\n\t\t/**\n\t\t * Instanciate the Google Maps object\n\t\t */\n\t\t_create: function() {\n\t\t\tvar self = this;\n\t\t\tthis.instance = { 'map': new google.maps.Map(self.el, self.options), 'markers': [], 'overlays': [], 'services': [] };\n\t\t\tgoogle.maps.event.addListenerOnce(self.instance.map, 'bounds_changed', function() { $(self.el).trigger('init', self.instance.map); });\n\t\t\tself._call(self.options.callback, self.instance.map);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a latitude longitude pair to the bounds.\n\t\t * @param position:google.maps.LatLng/string\n\t\t */\n\t\taddBounds: function(position) {\n\t\t\tvar bounds = this.get('bounds', new google.maps.LatLngBounds());\n\t\t\tbounds.extend(this._latLng(position));\n\t\t\tthis.get('map').fitBounds(bounds);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper function to check if a LatLng is within the viewport\n\t\t * @param marker:google.maps.Marker\n\t\t */\n\t\tinViewport: function(marker) {\n\t\t\tvar bounds = this.get('map').getBounds();\n\t\t\treturn (bounds) ? bounds.contains(marker.getPosition()) : false;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a custom control to the map\n\t\t * @param panel:jquery/node/string\t\n\t\t * @param position:google.maps.ControlPosition\t \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ControlPosition\n\t\t */\n\t\taddControl: function(panel, position) {\n\t\t\tthis.get('map').controls[position].push(this._unwrap(panel));\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds a Marker to the map\n\t\t * @param markerOptions:google.maps.MarkerOptions\n\t\t * @param callback:function(map:google.maps.Map, marker:google.maps.Marker) (optional)\n\t\t * @return $(google.maps.Marker)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MarkerOptions\n\t\t */\n\t\taddMarker: function(markerOptions, callback) {\n\t\t\tmarkerOptions.map = this.get('map');\n\t\t\tmarkerOptions.position = this._latLng(markerOptions.position);\n\t\t\tvar marker = new (markerOptions.marker || google.maps.Marker)(markerOptions);\n\t\t\tvar markers = this.get('markers');\n\t\t\tif ( marker.id ) {\n\t\t\t\tmarkers[marker.id] = marker;\n\t\t\t} else {\n\t\t\t\tmarkers.push(marker);\n\t\t\t}\n\t\t\tif ( marker.bounds ) {\n\t\t\t\tthis.addBounds(marker.getPosition());\n\t\t\t}\n\t\t\tthis._call(callback, markerOptions.map, marker);\n\t\t\treturn $(marker);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Clears by type\n\t\t * @param ctx:string\te.g. 'markers', 'overlays', 'services'\n\t\t */\n\t\tclear: function(ctx) {\n\t\t\tthis._c(this.get(ctx));\n\t\t\tthis.set(ctx, []);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t_c: function(obj) {\n\t\t\tfor ( var property in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty(property) ) {\n\t\t\t\t\tif ( obj[property] instanceof google.maps.MVCObject ) {\n\t\t\t\t\t\tgoogle.maps.event.clearInstanceListeners(obj[property]);\n\t\t\t\t\t\tif ( obj[property].setMap ) {\n\t\t\t\t\t\t\tobj[property].setMap(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( obj[property] instanceof Array ) {\n\t\t\t\t\t\tthis._c(obj[property]);\n\t\t\t\t\t}\n\t\t\t\t\tobj[property] = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns the objects with a specific property and value, e.g. 'category', 'tags'\n\t\t * @param ctx:string\tin what context, e.g. 'markers' \n\t\t * @param options:object\tproperty:string\tthe property to search within, value:string, operator:string (optional) (AND/OR)\n\t\t * @param callback:function(marker:google.maps.Marker, isFound:boolean)\n\t\t */\n\t\tfind: function(ctx, options, callback) {\n\t\t\tvar obj = this.get(ctx);\n\t\t\toptions.value = $.isArray(options.value) ? options.value : [options.value];\n\t\t\tfor ( var property in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty(property) ) {\n\t\t\t\t\tvar isFound = false;\n\t\t\t\t\tfor ( var value in options.value ) {\n\t\t\t\t\t\tif ( $.inArray(options.value[value], obj[property][options.property]) > -1 ) {\n\t\t\t\t\t\t\tisFound = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif ( options.operator && options.operator === 'AND' ) {\n\t\t\t\t\t\t\t\tisFound = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(obj[property], isFound);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns an instance property by key. Has the ability to set an object if the property does not exist\n\t\t * @param key:string\n\t\t * @param value:object(optional)\n\t\t */\n\t\tget: function(key, value) {\n\t\t\tvar instance = this.instance;\n\t\t\tif ( !instance[key] ) {\n\t\t\t\tif ( key.indexOf('>') > -1 ) {\n\t\t\t\t\tvar e = key.replace(/ /g, '').split('>');\n\t\t\t\t\tfor ( var i = 0; i < e.length; i++ ) {\n\t\t\t\t\t\tif ( !instance[e[i]] ) {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tinstance[e[i]] = ( (i + 1) < e.length ) ? [] : value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinstance = instance[e[i]];\n\t\t\t\t\t}\n\t\t\t\t\treturn instance;\n\t\t\t\t} else if ( value && !instance[key] ) {\n\t\t\t\t\tthis.set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn instance[key];\n\t\t},\n\t\t\n\t\t/**\n\t\t * Triggers an InfoWindow to open\n\t\t * @param infoWindowOptions:google.maps.InfoWindowOptions\n\t\t * @param marker:google.maps.Marker (optional)\n\t\t * @param callback:function (optional)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#InfoWindowOptions\n\t\t */\n\t\topenInfoWindow: function(infoWindowOptions, marker, callback) {\n\t\t\tvar iw = this.get('iw', infoWindowOptions.infoWindow || new google.maps.InfoWindow);\n\t\t\tiw.setOptions(infoWindowOptions);\n\t\t\tiw.open(this.get('map'), this._unwrap(marker)); \n\t\t\tthis._call(callback, iw);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Triggers an InfoWindow to close\n\t\t */\n\t\tcloseInfoWindow: function() {\n\t\t\tif ( this.get('iw') != null ) {\n\t\t\t\tthis.get('iw').close();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\t\t\n\t\t/**\n\t\t * Sets an instance property\n\t\t * @param key:string\n\t\t * @param value:object\n\t\t */\n\t\tset: function(key, value) {\n\t\t\tthis.instance[key] = value;\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Refreshes the map\n\t\t */\n\t\trefresh: function() {\n\t\t\tvar map = this.get('map');\n\t\t\tvar latLng = map.getCenter();\n\t\t\t$(map).triggerEvent('resize');\n\t\t\tmap.setCenter(latLng);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Destroys the plugin.\n\t\t */\n\t\tdestroy: function() {\n\t\t\tthis.clear('markers').clear('services').clear('overlays')._c(this.instance);\n\t\t\tjQuery.removeData(this.el, this.name);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for calling a function\n\t\t * @param callback\n\t\t */\n\t\t_call: function(callback) {\n\t\t\tif ( callback && $.isFunction(callback) ) {\n\t\t\t\tcallback.apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for google.maps.Latlng\n\t\t * @param latLng:string/google.maps.LatLng\n\t\t */\n\t\t_latLng: function(latLng) {\n\t\t\tif ( !latLng ) {\n\t\t\t\treturn new google.maps.LatLng(0.0, 0.0);\n\t\t\t}\n\t\t\tif ( latLng instanceof google.maps.LatLng ) {\n\t\t\t\treturn latLng;\n\t\t\t} else {\n\t\t\t\tlatLng = latLng.replace(/ /g,'').split(',');\n\t\t\t\treturn new google.maps.LatLng(latLng[0], latLng[1]);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Helper method for unwrapping jQuery/DOM/string elements\n\t\t * @param obj:string/node/jQuery\n\t\t */\n\t\t_unwrap: function(obj) {\n\t\t\treturn (!obj) ? null : ( (obj instanceof jQuery) ? obj[0] : ((obj instanceof Object) ? obj : $('#'+obj)[0]) )\n\t\t}\n\t\t\n\t});\n\t\n\tjQuery.fn.extend( {\n\t\t\n\t\ttriggerEvent: function(eventType) {\n\t\t\tgoogle.maps.event.trigger(this[0], eventType);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\taddEventListener: function(eventType, eventDataOrCallback, eventCallback) {\n\t\t\tif ( google.maps && this[0] instanceof google.maps.MVCObject ) {\n\t\t\t\tgoogle.maps.event.addListener(this[0], eventType, eventDataOrCallback);\n\t\t\t} else {\n\t\t\t\tif (eventCallback) {\n\t\t\t\t\tthis.bind(eventType, eventDataOrCallback, eventCallback);\n\t\t\t\t} else {\n\t\t\t\t\tthis.bind(eventType, eventDataOrCallback);\n\t\t\t\t} \n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t  \n\t\t/*removeEventListener: function(eventType) {\n\t\t\tif ( google.maps && this[0] instanceof google.maps.MVCObject ) {\n\t\t\t\tif (eventType) {\n\t\t\t\t\tgoogle.maps.event.clearListeners(this[0], eventType);\n\t\t\t\t} else {\n\t\t\t\t\tgoogle.maps.event.clearInstanceListeners(this[0]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.unbind(eventType);\n\t\t\t}\n\t\t\treturn this;\n\t\t}*/\n\t\t\n\t});\n\t\n\tjQuery.each(('click rightclick dblclick mouseover mouseout drag dragend').split(' '), function(i, name) {\n\t\tjQuery.fn[name] = function(a, b) {\n\t\t\treturn this.addEventListener(name, a, b);\n\t\t}\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microdata.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-beta\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts microdata from the HTML by specified namespace \n\t\t * @param ns:string\n\t\t * @param callback:function(microdata:object, element:jQuery object, iterator:int)\n\t\t */\n\t\tmicrodata: function(ns, callback) { \n\t\t\tvar self = this;\n\t\t\t$('[itemtype=\"{0}\"]'.replace('{0}', ns)).each(function(i) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': self._resolveType($(this).attr('itemtype'))}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function(node, obj) {\n\t\t\tvar self = this;\n\t\t\tnode.children().each(function() {\n\t\t\t\tvar $this = $(this), itemType = $this.attr('itemtype'), itemProp = $this.attr('itemProp');\n\t\t\t\t// skip check for itemscope since we are only interested in typed items\n\t\t\t\tif ( itemType != undefined && $this.children().length > 0 ) {\n\t\t\t\t\tif ( !obj[itemProp] ) {\n\t\t\t\t\t\tobj[itemProp] = [];\n\t\t\t\t\t}\n\t\t\t\t\tobj[itemProp].push({'@type': self._resolveType(itemType)});\n\t\t\t\t\tself._traverse($this, obj[itemProp][obj[itemProp].length-1]);\t\t\t\t\t\n\t\t\t\t} else if ( itemProp ) {\n\t\t\t\t\tif ( obj[itemProp] ) {\n\t\t\t\t\t\t// In case any property is duplicated\n\t\t\t\t\t\tif ( typeof obj[itemProp] === 'string' ) {\n\t\t\t\t\t\t\tvar temp = obj[itemProp];\n\t\t\t\t\t\t\tobj[itemProp] = [];\n\t\t\t\t\t\t\tobj[itemProp].push(temp);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[itemProp].push(self._extract($this));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj[itemProp] = self._extract($this);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on element attribute\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_extract: function($el) {\n\t\t\tif ( $el.attr('src') ) {\n\t\t\t\treturn $el.attr('src');\n\t\t\t} else if ( $el.attr('href') ) {\n\t\t\t\treturn $el.attr('href');\n\t\t\t} else if ( $el.attr('content') ) {\n\t\t\t\treturn $el.attr('content');\n\t\t\t} else if ( $el.attr('datetime') ) {\n\t\t\t\treturn $el.attr('datetime');\n\t\t\t} else if ( $el.text() ) {\n\t\t\t\treturn $el.text();\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Removes any url or prefix\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_resolveType: function(type) {\n\t\t\tif ( type.indexOf('http') > -1 ) {\n\t\t\t\ttype = type.substr(type.lastIndexOf('/')+1).replace('?','').replace('#','');\n\t\t\t} else if ( type.indexOf(':') > -1 ) {\n\t\t\t\ttype = type.split(':')[1];\n\t\t\t}\n\t\t\treturn type;\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.microformat.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-alpha\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts microformat from the HTML by specified root class\n\t\t * @param ns:string - the 'namespace'/root class\n\t\t * @param callback:function(microformat:object, element:jQuery object, iterator:int)\n\t\t */\n\t\tmicroformat: function(ns, callback) {\n\t\t\tvar self = this;\n\t\t\tjQuery.extend(self.get('properties', {}), {\n\t\t\t\t'additional-name': {},\n\t\t\t\t'adr': { 'hasChildren': true },\n\t\t\t\t'affiliation': {},\n\t\t\t\t'author': {},\n\t\t\t\t'bday': {},\n\t\t\t\t'category': { 'isMultivalued': true },\n\t\t\t\t'class': {},\n\t\t\t\t'contact': {},\n\t\t\t\t'country-name': {},\n\t\t\t\t'description': {},\n\t\t\t\t'dtend': {},\n\t\t\t\t'dtreviewed': {},\n\t\t\t\t'dtstart': {}, \n\t\t\t\t'education': {},\n\t\t\t\t'entry-content': {}, \n\t\t\t\t'entry-summary': {},\n\t\t\t\t'entry-title': {}, \n\t\t\t\t'email': { 'hasChildren': true }, \n\t\t\t\t'experience': {}, \t\t\t\t\t  \t\t\n\t\t\t\t'extended-address': {},\n\t\t\t\t'family-name': {}, \n\t\t\t\t'fn': {},\n\t\t\t\t'geo': { 'hasChildren': true }, \n\t\t\t\t'given-name': {}, \n\t\t\t\t'hentry': { 'isRoot': true }, \n\t\t\t\t'hfeed': { 'isRoot': true },\n\t\t\t\t'honorific-prefix': {}, \n\t\t\t\t'honorific-suffix': {},\n\t\t\t\t'hresume': { 'isRoot': true }, \n\t\t\t\t'hreview': { 'isRoot': true },\n\t\t\t\t'item': {},\n\t\t\t\t'key': { 'hasChildren': true },\n\t\t\t\t'label': {},\n\t\t\t\t'latitude': {},\n\t\t\t\t'locality': {},\n\t\t\t\t'location': { 'hasChildren': true },\n\t\t\t\t'logo': {},\n\t\t\t\t'longitude': {},\n\t\t\t\t'mailer': {},\n\t\t\t\t'n': { 'hasChildren': true },\n\t\t\t\t'nickname': { 'isMultivalued': true },\n\t\t\t\t'note': {},\n\t\t\t\t'org': { 'hasChildren': true },\n\t\t\t\t'organization-name': {},\n\t\t\t\t'organization-unit': {},\n\t\t\t\t'permalink': {},\n\t\t\t\t'photo': {},\n\t\t\t\t'post-office-box': {},\n\t\t\t\t'postal-code': {},\n\t\t\t\t'profile': { 'isRoot': true },\n\t\t\t\t'publications': {},\n\t\t\t\t'published': {},\n\t\t\t\t'rating': {},\n\t\t\t\t'region': {},\n\t\t\t\t'rev': {},\n\t\t\t\t'reviewer': {},\n\t\t\t\t'role': {},\n\t\t\t\t'skill': {},\n\t\t\t\t'sort-string': {},\n\t\t\t\t'sound': {},\n\t\t\t\t'street-address': {},\n\t\t\t\t'summary': {},\n\t\t\t\t'tel': { 'isMultivalued': true },\n\t\t\t\t'title': {},\n\t\t\t\t'type': {},\n\t\t\t\t'tz': {},\n\t\t\t\t'uid': {},\n\t\t\t\t'updated': {},\n\t\t\t\t'url': { 'isMultivalued': true },\n\t\t\t\t'value': {},\n\t\t\t\t'value-title': {},\n\t\t\t\t'vcalendar': { 'isRoot': true },\n\t\t\t\t'vcard': { 'isRoot': true },\n\t\t\t\t'vevent': { 'isRoot': true },\n\t\t\t\t'version': {},\n\t\t\t\t'xoxo': { 'isRoot': true }\n\t\t\t});\n\t\t\t$(ns).each(function(i, node) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': ns.replace('.','')}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function($el, obj) {\n\t\t\tvar self = this;\n\t\t\t$el.children().each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tif ($this.attr('class')) {\n\t\t\t\t\tvar temp = $this.attr('class').split(' '), cls = [], type;\n\t\t\t\t\t$.each(temp, function(itr, name) {\n\t\t\t\t\t\tif ( self.get('properties')[name] && self.get('properties')[name].isRoot ) {\n\t\t\t\t\t\t\ttype = name;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcls.push(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t$.each(cls, function(itr, className) {\n\t\t\t\t\t\tif ( self.get('properties')[className] ) {\n\t\t\t\t\t\t\ttype = type || className;\n\t\t\t\t\t\t\tif ( self.get('properties')[className].hasChildren && $this.children().length > 0 ) {\n\t\t\t\t\t\t\t\tif ( !obj[className] ) {\n\t\t\t\t\t\t\t\t\tobj[className] = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tobj[className].push({'@type': type});\n\t\t\t\t\t\t\t\tself._traverse($this, obj[className][obj[className].length-1]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif ( $this.children().length > 0 ) {\n\t\t\t\t\t\t\t\t\tobj[className] = {'@type': type};\n\t\t\t\t\t\t\t\t\tself._traverse($this, obj[className]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif ( self.get('properties')[className].isMultivalued ) {\n\t\t\t\t\t\t\t\t\t\tif ( !obj[className] ) {\n\t\t\t\t\t\t\t\t\t\t\tobj[className] = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tobj[className].push(self._extract($this, className));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tobj[className] = self._extract($this, className);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on class name and element attribute\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_extract: function($el, className) {\n\t\t\tif ( className === 'value-title' ) {\n\t\t\t\treturn $el.attr('title');\n\t\t\t} else if ( className === 'url' ) {\n\t\t\t\treturn $el.attr('href');\n\t\t\t}\n\t\t\tif ( $el.attr('src') ) {\n\t\t\t\treturn $el.attr('src');\n\t\t\t} else if ( $el.attr('content') ) {\n\t\t\t\treturn $el.attr('content');\n\t\t\t} else if ( $el.text() ) {\n\t\t\t\treturn $el.text();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t});\n\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.overlays.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *      jquery.ui.map.js\n */\n( function($) {\n\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Adds a shape to the map\n\t\t * @param shapeType:string Polygon, Polyline, Rectangle, Circle\n\t\t * @param shapeOptions:object\n\t\t * @return object\n\t\t */\n\t\taddShape: function(shapeType, shapeOptions) {\n\t\t\tvar shape = new google.maps[shapeType](jQuery.extend({'map': this.get('map')}, shapeOptions));\n\t\t\tthis.get('overlays > ' + shapeType, []).push(shape);\n\t\t\treturn $(shape);\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds fusion data to the map.\n\t\t * @param fusionTableOptions:google.maps.FusionTablesLayerOptions, http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#FusionTablesLayerOptions\n\t\t * @param fusionTableId:int\n\t\t */\n\t\tloadFusion: function(fusionTableOptions, fusionTableId) {\n\t\t\t( (!fusionTableId) ? this.get('overlays > FusionTablesLayer', new google.maps.FusionTablesLayer()) : this.get('overlays > FusionTablesLayer', new google.maps.FusionTablesLayer(fusionTableId, fusionTableOptions)) ).setOptions(jQuery.extend({'map': this.get('map') }, fusionTableOptions));\n\t\t},\n\t\t\n\t\t/**\n\t\t * Adds markers from KML file or GeoRSS feed\n\t\t * @param uid:String - an identifier for the RSS e.g. 'rss_dogs'\n\t\t * @param url:String - URL to feed\n\t\t * @param kmlLayerOptions:google.maps.KmlLayerOptions, http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#KmlLayerOptions\n\t\t */\n\t\tloadKML: function(uid, url, kmlLayerOptions) {\n\t\t\tthis.get('overlays > ' + uid, new google.maps.KmlLayer(url, jQuery.extend({'map': this.get('map')}, kmlLayerOptions)));\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.rdfa.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-beta\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2011 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Extracts RDFa from the HTML by specified namespace \n\t\t * @param ns:string\n\t\t * @param callback:function(microdata:object, element:jQuery object, iterator:int)\n\t\t */\n\t\trdfa: function(ns, callback) { \n\t\t\tvar self = this;\n\t\t\t$('[typeof=\"{0}\"]'.replace('{0}', ns)).each(function(i) {\n\t\t\t\tcallback(self._traverse($(this), {'@type': self._resolveType($(this).attr('typeof'))}), this, i);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Traverse through all child nodes\n\t\t * @param $el:jQuery Object\n\t\t * @param obj:Object\n\t\t */\n\t\t_traverse: function(node, obj) {\n\t\t\tvar self = this;\n\t\t\tnode.children().each( function() {\n\t\t\t\tvar $this = $(this), typeOf = self._resolveType($this.attr('typeof')), rel = self._resolveType($this.attr('rel')), property = self._resolveType($this.attr('property'));\n\t\t\t\tif ( typeOf || rel || property ) {\n\t\t\t\t\tif (rel) {\n\t\t\t\t\t\tif ( $this.children().length > 0 ) {\n\t\t\t\t\t\t\tobj[rel] = [];\n\t\t\t\t\t\t\tself._traverse($this, obj[rel]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[rel] = self._extract($this, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (typeOf) {\n\t\t\t\t\t\tobj.push({'@type': typeOf});\n\t\t\t\t\t\tself._traverse($this, obj[obj.length-1]);\n\t\t\t\t\t}\n\t\t\t\t\tif ( property ) {\n\t\t\t\t\t\tif ( obj[property] ) {\n\t\t\t\t\t\t\tobj[property] = [obj[property]];\n\t\t\t\t\t\t\tobj[property].push(self._extract($this, false));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj[property] = self._extract($this, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tself._traverse($this, obj);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Extract the proper value based on element attribute\n\t\t * @param $el:jQuery object\n\t\t * @param isLink:bool\n\t\t */\n\t\t_extract: function($el, isLink) {\n\t\t\tif (isLink) {\n\t\t\t\tif ( $el.attr('src') ) { return $el.attr('src'); }  \n\t\t\t\tif ( $el.attr('href') ) { return $el.attr('href'); } \n\t\t\t}\n\t\t\tif ( $el.attr('content') ) { return $el.attr('content'); }\n\t\t\tif ( $el.text() ) { return $el.text(); }\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Removes any url or prefix\n\t\t * @param $el:jQuery Object\n\t\t * @param className:string\n\t\t */\n\t\t_resolveType: function(type) {\n\t\t\tif (type) {\n\t\t\t\tif ( type.indexOf('http') > -1 ) {\n\t\t\t\t\ttype = type.substr(type.lastIndexOf('/')+1).replace('?','').replace('#','');\n\t\t\t\t} else if ( type.indexOf(':') > -1 ) {\n\t\t\t\t\ttype = type.split(':')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn type;\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jquery-ui-map/ui/jquery.ui.map.services.js",
    "content": " /*!\n * jQuery UI Google Map 3.0-rc\n * http://code.google.com/p/jquery-ui-map/\n * Copyright (c) 2010 - 2012 Johan Säll Larsson\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\n *\n * Depends:\n *\t\tjquery.ui.map.js\n */\n( function($) {\n\t\n\t$.extend($.ui.gmap.prototype, {\n\t\t\n\t\t/**\n\t\t * Computes directions between two or more places.\n\t\t * @param directionsRequest:google.maps.DirectionsRequest\n\t\t * @param directionsRendererOptions:google.maps.DirectionsRendererOptions (optional)\n\t\t * @param callback:function(result:google.maps.DirectionsResult, status:google.maps.DirectionsStatus)\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsRequest\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsRendererOptions\n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#DirectionsResult\n\t\t */\n\t\tdisplayDirections: function(directionsRequest, directionsRendererOptions, callback) {\n\t\t\tvar self = this;\t\t\n\t\t\tvar directionService = this.get('services > DirectionsService', new google.maps.DirectionsService());\n\t\t\tvar directionRenderer = this.get('services > DirectionsRenderer', new google.maps.DirectionsRenderer());\n\t\t\tif ( directionsRendererOptions ) {\n\t\t\t\tdirectionRenderer.setOptions(directionsRendererOptions);\n\t\t\t}\n\t\t\tdirectionService.route(directionsRequest, function(results, status) {\n\t\t\t\tif ( status === 'OK' ) {\n\t\t\t\t\tdirectionRenderer.setDirections(results);\n\t\t\t\t\tdirectionRenderer.setMap(self.get('map'));\n\t\t\t\t} else {\n\t\t\t\t\tdirectionRenderer.setMap(null);\n\t\t\t\t}\n\t\t\t\tcallback(results, status);\n\t\t\t});\n\t\t},\n\t\t\n\t\t/**\n\t\t * Displays the panorama for a given LatLng or panorama ID.\n\t\t * @param panel:jQuery/String/Node\n\t\t * @param streetViewPanoramaOptions:google.maps.StreetViewPanoramaOptions (optional) \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#StreetViewPanoramaOptions\n\t\t */\n\t\tdisplayStreetView: function(panel, streetViewPanoramaOptions) {\n\t\t\tthis.get('map').setStreetView(this.get('services > StreetViewPanorama', new google.maps.StreetViewPanorama(this._unwrap(panel), streetViewPanoramaOptions)));\n\t\t},\n\t\t\n\t\t/**\n\t\t * A service for converting between an address and a LatLng.\n\t\t * @param geocoderRequest:google.maps.GeocoderRequest\n\t\t * @param callback:function(result:google.maps.GeocoderResult, status:google.maps.GeocoderStatus), \n\t\t * @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#GeocoderResult\n\t\t */\n\t\tsearch: function(geocoderRequest, callback) {\n\t\t\tthis.get('services > Geocoder', new google.maps.Geocoder()).geocode(geocoderRequest, callback);\n\t\t}\n\t\n\t});\n\t\n} (jQuery) );"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/elements.css",
    "content": ".jvm-legend {\n\tline-height: 2em;\n\tmargin-top: 5px;\n}\n\n.jvm-legend span {\n\tvertical-align: middle;\n}\n\n.jvm-legend-item {\n\twidth: 2em;\n\theight: 2em;\n\tdisplay: inline-block;\n}\n.jvm-legend span:not(.jvm-legend-item) { margin-right: 10px; }\n.jvm-legend span:last-child { margin-left: 0; }\n\n.jvm-legend-item-ps {\n\tbackground: #FF69B4;\n}\n\n.jvm-legend-item-ump {\n\tbackground: #4169E1;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.1.1.css",
    "content": ".jvectormap-label {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    position: absolute;\n    left: 10px;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    padding: 3px;\n    color: white;\n    width: 10px;\n    height: 10px;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/css/jquery-jvectormap-1.2.2.css",
    "content": ".jvectormap-label {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    position: absolute;\n    left: 10px;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    padding: 3px;\n    color: white;\n    width: 10px;\n    height: 10px;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/france-elections.json",
    "content": "{\"year2012\":{\"candidate1\":\"Hollande\",\"candidate2\":\"Sarkozy\",\"results\":{\"FR-J\":1,\"FR-G\":2,\"FR-S\":1,\"FR-Q\":1,\"FR-F\":2,\"FR-P\":1,\"FR-D\":1,\"FR-O\":1,\"FR-M\":2,\"FR-A\":2,\"FR-I\":2,\"FR-R\":1,\"FR-E\":1,\"FR-T\":1,\"FR-B\":1,\"FR-N\":1,\"FR-L\":1,\"FR-V\":2,\"FR-C\":1,\"FR-K\":1,\"FR-U\":2,\"FR-H\":2,\"FR-GP\":1,\"FR-MQ\":1,\"FR-GF\":1,\"FR-YT\":2}},\"year2007\":{\"candidate1\":\"Sarkozy\",\"candidate2\":\"Royal\",\"results\":{\"FR-J\":1,\"FR-G\":1,\"FR-S\":1,\"FR-Q\":1,\"FR-F\":1,\"FR-P\":1,\"FR-D\":1,\"FR-O\":1,\"FR-M\":1,\"FR-A\":1,\"FR-I\":1,\"FR-R\":1,\"FR-E\":2,\"FR-T\":2,\"FR-B\":2,\"FR-N\":2,\"FR-L\":2,\"FR-V\":1,\"FR-C\":2,\"FR-K\":1,\"FR-U\":1,\"FR-H\":1,\"FR-GP\":2,\"FR-MQ\":2,\"FR-GF\":1,\"FR-YT\":2}}}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/gdp-data.js",
    "content": "var gdpData = {\n  \"AF\": 16.63,\n  \"AL\": 11.58,\n  \"DZ\": 158.97,\n  \"AO\": 85.81,\n  \"AG\": 1.1,\n  \"AR\": 351.02,\n  \"AM\": 8.83,\n  \"AU\": 1219.72,\n  \"AT\": 366.26,\n  \"AZ\": 52.17,\n  \"BS\": 7.54,\n  \"BH\": 21.73,\n  \"BD\": 105.4,\n  \"BB\": 3.96,\n  \"BY\": 52.89,\n  \"BE\": 461.33,\n  \"BZ\": 1.43,\n  \"BJ\": 6.49,\n  \"BT\": 1.4,\n  \"BO\": 19.18,\n  \"BA\": 16.2,\n  \"BW\": 12.5,\n  \"BR\": 2023.53,\n  \"BN\": 11.96,\n  \"BG\": 44.84,\n  \"BF\": 8.67,\n  \"BI\": 1.47,\n  \"KH\": 11.36,\n  \"CM\": 21.88,\n  \"CA\": 1563.66,\n  \"CV\": 1.57,\n  \"CF\": 2.11,\n  \"TD\": 7.59,\n  \"CL\": 199.18,\n  \"CN\": 5745.13,\n  \"CO\": 283.11,\n  \"KM\": 0.56,\n  \"CD\": 12.6,\n  \"CG\": 11.88,\n  \"CR\": 35.02,\n  \"CI\": 22.38,\n  \"HR\": 59.92,\n  \"CY\": 22.75,\n  \"CZ\": 195.23,\n  \"DK\": 304.56,\n  \"DJ\": 1.14,\n  \"DM\": 0.38,\n  \"DO\": 50.87,\n  \"EC\": 61.49,\n  \"EG\": 216.83,\n  \"SV\": 21.8,\n  \"GQ\": 14.55,\n  \"ER\": 2.25,\n  \"EE\": 19.22,\n  \"ET\": 30.94,\n  \"FJ\": 3.15,\n  \"FI\": 231.98,\n  \"FR\": 2555.44,\n  \"GA\": 12.56,\n  \"GM\": 1.04,\n  \"GE\": 11.23,\n  \"DE\": 3305.9,\n  \"GH\": 18.06,\n  \"GR\": 305.01,\n  \"GD\": 0.65,\n  \"GT\": 40.77,\n  \"GN\": 4.34,\n  \"GW\": 0.83,\n  \"GY\": 2.2,\n  \"HT\": 6.5,\n  \"HN\": 15.34,\n  \"HK\": 226.49,\n  \"HU\": 132.28,\n  \"IS\": 12.77,\n  \"IN\": 1430.02,\n  \"ID\": 695.06,\n  \"IR\": 337.9,\n  \"IQ\": 84.14,\n  \"IE\": 204.14,\n  \"IL\": 201.25,\n  \"IT\": 2036.69,\n  \"JM\": 13.74,\n  \"JP\": 5390.9,\n  \"JO\": 27.13,\n  \"KZ\": 129.76,\n  \"KE\": 32.42,\n  \"KI\": 0.15,\n  \"KR\": 986.26,\n  \"UNDEFINED\": 5.73,\n  \"KW\": 117.32,\n  \"KG\": 4.44,\n  \"LA\": 6.34,\n  \"LV\": 23.39,\n  \"LB\": 39.15,\n  \"LS\": 1.8,\n  \"LR\": 0.98,\n  \"LY\": 77.91,\n  \"LT\": 35.73,\n  \"LU\": 52.43,\n  \"MK\": 9.58,\n  \"MG\": 8.33,\n  \"MW\": 5.04,\n  \"MY\": 218.95,\n  \"MV\": 1.43,\n  \"ML\": 9.08,\n  \"MT\": 7.8,\n  \"MR\": 3.49,\n  \"MU\": 9.43,\n  \"MX\": 1004.04,\n  \"MD\": 5.36,\n  \"MN\": 5.81,\n  \"ME\": 3.88,\n  \"MA\": 91.7,\n  \"MZ\": 10.21,\n  \"MM\": 35.65,\n  \"NA\": 11.45,\n  \"NP\": 15.11,\n  \"NL\": 770.31,\n  \"NZ\": 138,\n  \"NI\": 6.38,\n  \"NE\": 5.6,\n  \"NG\": 206.66,\n  \"NO\": 413.51,\n  \"OM\": 53.78,\n  \"PK\": 174.79,\n  \"PA\": 27.2,\n  \"PG\": 8.81,\n  \"PY\": 17.17,\n  \"PE\": 153.55,\n  \"PH\": 189.06,\n  \"PL\": 438.88,\n  \"PT\": 223.7,\n  \"QA\": 126.52,\n  \"RO\": 158.39,\n  \"RU\": 1476.91,\n  \"RW\": 5.69,\n  \"WS\": 0.55,\n  \"ST\": 0.19,\n  \"SA\": 434.44,\n  \"SN\": 12.66,\n  \"RS\": 38.92,\n  \"SC\": 0.92,\n  \"SL\": 1.9,\n  \"SG\": 217.38,\n  \"SK\": 86.26,\n  \"SI\": 46.44,\n  \"SB\": 0.67,\n  \"ZA\": 354.41,\n  \"ES\": 1374.78,\n  \"LK\": 48.24,\n  \"KN\": 0.56,\n  \"LC\": 1,\n  \"VC\": 0.58,\n  \"SD\": 65.93,\n  \"SR\": 3.3,\n  \"SZ\": 3.17,\n  \"SE\": 444.59,\n  \"CH\": 522.44,\n  \"SY\": 59.63,\n  \"TW\": 426.98,\n  \"TJ\": 5.58,\n  \"TZ\": 22.43,\n  \"TH\": 312.61,\n  \"TL\": 0.62,\n  \"TG\": 3.07,\n  \"TO\": 0.3,\n  \"TT\": 21.2,\n  \"TN\": 43.86,\n  \"TR\": 729.05,\n  \"TM\": 0,\n  \"UG\": 17.12,\n  \"UA\": 136.56,\n  \"AE\": 239.65,\n  \"GB\": 2258.57,\n  \"US\": 14624.18,\n  \"UY\": 40.71,\n  \"UZ\": 37.72,\n  \"VU\": 0.72,\n  \"VE\": 285.21,\n  \"VN\": 101.99,\n  \"YE\": 30.02,\n  \"ZM\": 15.69,\n  \"ZW\": 5.57\n};"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/data/us-unemployment.json",
    "content": "{\"states\":{\"2005\":{\"US-AL\":7.2,\"US-AK\":8.6,\"US-AZ\":6.3,\"US-AR\":6.9,\"US-CA\":7.2,\"US-CO\":6.2,\"US-CT\":6.3,\"US-DE\":5.6,\"US-DC\":9.1,\"US-FL\":6.3,\"US-GA\":7.4,\"US-HI\":4.4,\"US-ID\":5.8,\"US-IL\":7.9,\"US-IN\":6.9,\"US-IA\":5.1,\"US-KS\":5.5,\"US-KY\":7.5,\"US-LA\":9.0,\"US-ME\":5.7,\"US-MD\":5.7,\"US-MA\":6.4,\"US-MI\":8.9,\"US-MN\":5.5,\"US-MS\":9.3,\"US-MO\":6.7,\"US-MT\":5.3,\"US-NE\":4.9,\"US-NV\":5.8,\"US-NH\":4.8,\"US-NJ\":6.3,\"US-NM\":7.3,\"US-NY\":7.0,\"US-NC\":7.1,\"US-ND\":3.8,\"US-OH\":7.4,\"US-OK\":6.6,\"US-OR\":7.5,\"US-PA\":6.7,\"US-RI\":6.1,\"US-SC\":8.0,\"US-SD\":4.9,\"US-TN\":7.1,\"US-TX\":7.6,\"US-UT\":5.3,\"US-VT\":5.3,\"US-VA\":5.2,\"US-WA\":7.2,\"US-WV\":7.2,\"US-WI\":6.2,\"US-WY\":5.3},\"2006\":{\"US-AL\":6.9,\"US-AK\":9.4,\"US-AZ\":4.9,\"US-AR\":7.0,\"US-CA\":6.6,\"US-CO\":5.5,\"US-CT\":6.2,\"US-DE\":5.9,\"US-DC\":8.5,\"US-FL\":5.5,\"US-GA\":6.9,\"US-HI\":4.4,\"US-ID\":5.3,\"US-IL\":7.2,\"US-IN\":6.9,\"US-IA\":4.9,\"US-KS\":5.3,\"US-KY\":6.9,\"US-LA\":7.8,\"US-ME\":5.3,\"US-MD\":5.3,\"US-MA\":5.8,\"US-MI\":9.5,\"US-MN\":5.2,\"US-MS\":8.9,\"US-MO\":6.3,\"US-MT\":4.8,\"US-NE\":4.8,\"US-NV\":5.2,\"US-NH\":4.5,\"US-NJ\":6.3,\"US-NM\":6.4,\"US-NY\":6.5,\"US-NC\":6.6,\"US-ND\":3.3,\"US-OH\":7.1,\"US-OK\":6.0,\"US-OR\":6.3,\"US-PA\":6.2,\"US-RI\":5.9,\"US-SC\":7.4,\"US-SD\":4.3,\"US-TN\":7.4,\"US-TX\":7.0,\"US-UT\":4.4,\"US-VT\":4.8,\"US-VA\":4.7,\"US-WA\":6.4,\"US-WV\":6.8,\"US-WI\":5.5,\"US-WY\":3.5},\"2007\":{\"US-AL\":6.7,\"US-AK\":8.8,\"US-AZ\":5.8,\"US-AR\":7.2,\"US-CA\":6.6,\"US-CO\":5.5,\"US-CT\":6.0,\"US-DE\":5.6,\"US-DC\":8.1,\"US-FL\":6.2,\"US-GA\":7.0,\"US-HI\":4.5,\"US-ID\":5.1,\"US-IL\":7.2,\"US-IN\":6.6,\"US-IA\":4.8,\"US-KS\":5.1,\"US-KY\":6.6,\"US-LA\":6.4,\"US-ME\":6.0,\"US-MD\":5.5,\"US-MA\":6.1,\"US-MI\":9.6,\"US-MN\":5.4,\"US-MS\":9.3,\"US-MO\":6.3,\"US-MT\":5.2,\"US-NE\":4.6,\"US-NV\":5.6,\"US-NH\":5.1,\"US-NJ\":5.9,\"US-NM\":5.6,\"US-NY\":6.2,\"US-NC\":6.9,\"US-ND\":3.5,\"US-OH\":7.2,\"US-OK\":5.4,\"US-OR\":6.5,\"US-PA\":5.9,\"US-RI\":6.3,\"US-SC\":6.9,\"US-SD\":4.1,\"US-TN\":6.9,\"US-TX\":5.9,\"US-UT\":3.8,\"US-VT\":5.1,\"US-VA\":4.8,\"US-WA\":6.0,\"US-WV\":6.2,\"US-WI\":5.7,\"US-WY\":3.7},\"2008\":{\"US-AL\":7.0,\"US-AK\":7.7,\"US-AZ\":6.1,\"US-AR\":6.6,\"US-CA\":7.5,\"US-CO\":4.9,\"US-CT\":6.4,\"US-DE\":6.6,\"US-DC\":7.8,\"US-FL\":7.5,\"US-GA\":7.0,\"US-HI\":4.1,\"US-ID\":5.5,\"US-IL\":6.9,\"US-IN\":6.9,\"US-IA\":3.9,\"US-KS\":4.4,\"US-KY\":6.9,\"US-LA\":6.0,\"US-ME\":5.9,\"US-MD\":5.4,\"US-MA\":6.0,\"US-MI\":9.5,\"US-MN\":4.9,\"US-MS\":7.8,\"US-MO\":6.1,\"US-MT\":4.7,\"US-NE\":4.0,\"US-NV\":7.3,\"US-NH\":4.5,\"US-NJ\":5.9,\"US-NM\":6.0,\"US-NY\":6.3,\"US-NC\":6.8,\"US-ND\":3.2,\"US-OH\":7.0,\"US-OK\":4.6,\"US-OR\":6.7,\"US-PA\":5.7,\"US-RI\":7.5,\"US-SC\":7.7,\"US-SD\":3.7,\"US-TN\":6.9,\"US-TX\":5.2,\"US-UT\":4.0,\"US-VT\":4.9,\"US-VA\":4.9,\"US-WA\":5.6,\"US-WV\":5.7,\"US-WI\":5.1,\"US-WY\":3.3},\"2009\":{\"US-AL\":11.1,\"US-AK\":9.5,\"US-AZ\":10.6,\"US-AR\":9.1,\"US-CA\":11.3,\"US-CO\":8.5,\"US-CT\":9.2,\"US-DE\":8.6,\"US-DC\":11.1,\"US-FL\":12.1,\"US-GA\":11.2,\"US-HI\":7.1,\"US-ID\":9.6,\"US-IL\":10.6,\"US-IN\":11.0,\"US-IA\":6.0,\"US-KS\":7.2,\"US-KY\":10.1,\"US-LA\":8.4,\"US-ME\":7.2,\"US-MD\":8.0,\"US-MA\":9.1,\"US-MI\":14.7,\"US-MN\":8.2,\"US-MS\":10.7,\"US-MO\":9.0,\"US-MT\":7.9,\"US-NE\":6.0,\"US-NV\":12.1,\"US-NH\":7.8,\"US-NJ\":9.8,\"US-NM\":9.0,\"US-NY\":9.0,\"US-NC\":11.0,\"US-ND\":3.8,\"US-OH\":11.1,\"US-OK\":6.8,\"US-OR\":11.8,\"US-PA\":9.1,\"US-RI\":9.6,\"US-SC\":11.7,\"US-SD\":5.2,\"US-TN\":11.1,\"US-TX\":8.2,\"US-UT\":7.8,\"US-VT\":7.6,\"US-VA\":7.4,\"US-WA\":9.5,\"US-WV\":7.7,\"US-WI\":8.2,\"US-WY\":5.9}},\"metro\":{\"codes\":[\"3100000US12060\",\"3100000US12420\",\"3100000US12580\",\"3100000US13820\",\"3100000US14460\",\"3100000US15380\",\"3100000US16740\",\"3100000US16980\",\"3100000US17140\",\"3100000US17460\",\"3100000US18140\",\"3100000US19100\",\"3100000US19740\",\"3100000US19820\",\"3100000US25540\",\"3100000US26420\",\"3100000US26900\",\"3100000US27260\",\"3100000US28140\",\"3100000US29820\",\"3100000US31100\",\"3100000US31140\",\"3100000US32820\",\"3100000US33100\",\"3100000US33340\",\"3100000US33460\",\"3100000US34980\",\"3100000US35380\",\"3100000US35620\",\"3100000US36420\",\"3100000US36740\",\"3100000US37980\",\"3100000US38060\",\"3100000US38300\",\"3100000US38900\",\"3100000US39300\",\"3100000US39580\",\"3100000US40060\",\"3100000US40140\",\"3100000US40380\",\"3100000US40900\",\"3100000US41180\",\"3100000US41620\",\"3100000US41700\",\"3100000US41740\",\"3100000US41860\",\"3100000US41940\",\"3100000US42660\",\"3100000US45300\",\"3100000US46060\",\"3100000US47260\",\"3100000US47900\"],\"coords\":[[33.9783241,-84.4783064],[30.51220349999999,-97.67312530000001],[39.4014955,-76.6019125],[33.37857109999999,-86.80439],[43.1938516,-71.5723953],[43.0026291,-78.8223134],[33.836081,-81.1637245],[41.7435073,-88.0118473],[39.1031182,-84.5120196],[41.6661573,-81.339552],[39.9611755,-82.99879419999999],[32.735687,-97.10806559999999],[39.9205411,-105.0866504],[42.8105356,-83.0790865],[41.754166,-72.624443],[29.7355047,-94.97742740000001],[39.978371,-86.1180435],[30.3321838,-81.65565099999999],[39.0653602,-94.5624426],[36.0849963,-115.1511364],[34.0596149,-118.1122679],[38.3964426,-85.4375574],[35.0387247,-89.8505012],[26.2378597,-80.1247667],[43.0166806,-88.0070315],[44.9389111,-93.1177555],[35.8905359,-86.7618425],[29.984544,-90.2042505],[40.7143528,-74.00597309999999],[35.4675602,-97.5164276],[28.2919557,-81.40757099999999],[39.8373479,-75.1545381],[33.48374,-111.9164779],[40.44062479999999,-79.9958864],[45.5809394,-122.7077056],[41.679407,-71.104972],[35.772096,-78.6386145],[37.5407246,-77.4360481],[34.0633443,-117.6508876],[43.16103,-77.6109219],[38.672006,-121.367741],[38.6105426,-90.3371889],[40.7607793,-111.8910474],[29.4241219,-98.49362819999999],[33.0763386,-117.2205771],[37.6788056,-122.2880726],[37.3666767,-121.958687],[47.610377,-122.2006786],[27.9249117,-82.5943072],[32.2217429,-110.926479],[36.9211118,-76.32017549999999],[38.9897306,-77.41000939999999]],\"names\":[\"Atlanta-Sandy Springs-Marietta, GA\",\"Austin-Round Rock, TX\",\"Baltimore-Towson, MD\",\"Birmingham-Hoover, AL\",\"Boston-Cambridge-Quincy, MA-NH\",\"Buffalo-Niagara Falls, NY\",\"Charlotte-Gastonia-Concord, NC-SC\",\"Chicago-Naperville-Joliet, IL-IN-WI\",\"Cincinnati-Middletown, OH-KY-IN\",\"Cleveland-Elyria-Mentor, OH\",\"Columbus, OH\",\"Dallas-Fort Worth-Arlington, TX\",\"Denver-Aurora-Broomfield, CO\",\"Detroit-Warren-Livonia, MI\",\"Hartford-West Hartford-East Hartford, CT\",\"Houston-Sugar Land-Baytown, TX\",\"Indianapolis-Carmel, IN\",\"Jacksonville, FL\",\"Kansas City, MO-KS\",\"Las Vegas-Paradise, NV\",\"Los Angeles-Long Beach-Santa Ana, CA\",\"Louisville-Jefferson County, KY-IN\",\"Memphis, TN-MS-AR\",\"Miami-Fort Lauderdale-Pompano Beach, FL\",\"Milwaukee-Waukesha-West Allis, WI\",\"Minneapolis-St. Paul-Bloomington, MN-WI\",\"Nashville-Davidson--Murfreesboro--Franklin, TN\",\"New Orleans-Metairie-Kenner, LA\",\"New York-Northern New Jersey-Long Island, NY-NJ-PA\",\"Oklahoma City, OK\",\"Orlando-Kissimmee, FL\",\"Philadelphia-Camden-Wilmington, PA-NJ-DE-MD\",\"Phoenix-Mesa-Scottsdale, AZ\",\"Pittsburgh, PA\",\"Portland-Vancouver-Beaverton, OR-WA\",\"Providence-New Bedford-Fall River, RI-MA\",\"Raleigh-Cary, NC\",\"Richmond, VA\",\"Riverside-San Bernardino-Ontario, CA\",\"Rochester, NY\",\"Sacramento--Arden-Arcade--Roseville, CA\",\"St. Louis, MO-IL\",\"Salt Lake City, UT\",\"San Antonio, TX\",\"San Diego-Carlsbad-San Marcos, CA\",\"San Francisco-Oakland-Fremont, CA\",\"San Jose-Sunnyvale-Santa Clara, CA\",\"Seattle-Tacoma-Bellevue, WA\",\"Tampa-St. Petersburg-Clearwater, FL\",\"Tucson, AZ\",\"Virginia Beach-Norfolk-Newport News, VA-NC\",\"Washington-Arlington-Alexandria, DC-VA-MD-WV\"],\"population\":{\"2005\":[4828838,1406364,2583923,1069498,4270631,1111554,1491330,9272117,2026216,2082379,1665428,5727391,2327901,4428941,1140319,5193448,1608730,1223882,1909666,1691213,12703423,1183916,1236181,5334685,1480517,3076239,1384347,1292774,18351099,1124533,1903273,5644383,3805123,2314937,2063277,1565972,924415,1132036,3827946,996309,2004476,2725336,1017572,1844018,2824259,4071751,1726057,3133715,2596556,902720,1585416,5119490],\"2006\":[5134871,1506425,2658405,1089883,4455217,1137520,1582627,9506859,2105010,2114155,1725570,6006094,2408622,4468966,1188841,5542048,1669370,1276856,1966790,1777539,12950129,1220636,1268328,5463857,1509981,3175041,1455296,1024678,18818536,1173632,1984855,5826742,4039182,2370776,2137599,1612989,995662,1196411,4026135,1035435,2067117,2793988,1067190,1948437,2941454,4180027,1784826,3263497,2697731,946362,1647400,5288670],\"2007\":[5271550,1593400,2668056,1106765,4482857,1128183,1650667,9522879,2134864,2096471,1754337,6144489,2466591,4467592,1189113,5629127,1697964,1296676,1980977,1836333,12875587,1228764,1283579,5413212,1544398,3208212,1521751,1030363,18815988,1193698,2032496,5827962,4179427,2355712,2174631,1600856,1049674,1211608,4081371,1030495,2091120,2802282,1095693,1997969,2974859,4203898,1803549,3309347,2723949,967089,1658215,5306125],\"2008\":[5368070,1650887,2667117,1117348,4522858,1124309,1701600,9568532,2155435,2088291,1773120,6303407,2502881,4425110,1190512,5722952,1715128,1315218,2001074,1865746,12872808,1244363,1288506,5414772,1549308,3229878,1552922,1134029,19006798,1202714,2054574,5838471,4281899,2351192,2209114,1596611,1086404,1230502,4115871,1034090,2109832,2813373,1112866,2032024,3001072,4274531,1819087,3344813,2733761,1012018,1657534,5356474],\"2009\":[5476664,1705075,2690886,1131070,4588680,1123804,1745524,9580609,2170828,2091286,1801848,6447228,2554474,4403437,1195998,5865086,1744680,1327812,2066732,1902834,12874797,1259031,1304905,5547051,1559667,3269814,1581908,1189981,19069796,1227278,2082421,5968252,4364094,2354957,2241913,1600642,1125827,1235458,4143113,1035566,2127355,2825769,1130293,2073092,3053793,4317853,1839883,3407848,2747272,1020200,1675792,5476241]},\"unemployment\":{\"2005\":[7.0,6.7,6.0,6.2,5.9,8.1,7.7,8.0,6.6,8.1,6.8,7.1,6.2,9.8,6.8,8.0,6.8,6.0,6.3,6.2,6.9,7.3,8.5,7.1,7.5,5.5,5.7,10.2,6.8,6.4,6.2,6.9,5.5,6.6,7.6,6.6,5.1,5.6,7.3,6.0,6.7,6.9,5.3,6.5,5.5,7.1,6.8,6.6,5.8,6.8,6.3,5.0],\"2006\":[7.1,6.0,5.3,6.4,5.4,6.1,6.5,7.5,6.4,7.9,6.4,6.7,5.7,10.5,6.3,7.3,6.5,5.8,5.7,5.3,6.1,6.8,9.2,5.6,6.1,5.3,5.9,7.9,6.5,5.6,5.4,6.8,4.2,5.9,6.1,6.1,4.9,5.8,7.4,6.4,6.7,6.6,4.4,6.7,5.0,6.0,6.1,5.5,5.5,6.3,4.7,4.6],\"2007\":[7.2,5.3,5.7,6.7,5.7,6.6,7.1,7.2,5.8,8.0,5.9,5.6,5.4,10.7,5.9,5.9,5.7,6.6,5.9,5.5,6.0,6.5,9.0,5.7,6.3,5.6,5.7,6.2,6.0,5.3,5.8,6.6,5.2,5.5,6.2,6.5,4.5,5.7,7.8,6.3,6.9,6.7,3.9,5.8,6.1,5.5,5.4,5.0,6.5,6.1,5.4,4.7],\"2008\":[7.2,5.4,5.5,6.4,5.6,6.5,6.6,7.1,5.8,7.8,5.5,5.4,4.8,10.4,5.8,5.2,6.3,6.8,5.6,7.3,6.7,6.7,8.5,7.2,5.5,5.1,5.2,6.8,6.1,4.5,7.4,6.5,5.3,5.2,6.7,7.3,5.4,6.0,10.0,5.9,8.0,6.3,3.7,5.5,6.9,6.2,6.0,4.7,7.4,6.9,5.3,4.9],\"2009\":[11.6,8.1,7.9,9.9,8.6,9.4,11.1,11.3,9.7,12.0,8.6,8.8,8.7,16.3,8.4,7.6,9.9,10.3,8.2,12.1,10.5,10.1,11.8,11.7,9.2,8.4,9.4,9.1,9.3,6.4,12.6,9.9,10.3,8.3,11.6,10.3,8.5,8.7,14.4,8.3,11.9,9.5,7.8,7.8,9.6,9.8,10.5,8.6,11.7,10.3,7.9,7.3]}}}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-de-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'de_merc_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 1223.8430164619706, \"bbox\": [{\"y\": -7378324.527735717, \"x\": 651774.9220426602}, {\"y\": -5989544.791406314, \"x\": 1673067.4782643116}], \"left\": 0}], \"paths\": {\"DE-BE\": {\"path\": \"M710.96,440.04l2.46,-4.08l-0.74,-2.47l0.48,-2.76l1.43,-1.17l2.76,-3.42l-0.06,-1.12l-1.49,-2.7l0.73,-8.19l-0.34,-1.59l0.66,-1.8l4.92,1.95l1.12,-0.08l0.34,-0.81l-0.73,-2.2l1.06,-3.37l2.86,-0.48l1.08,-0.61l1.16,-1.09l1.37,-2.69l0.66,0.02l0.24,3.25l0.83,1.09l1.82,0.8l3.7,0.26l1.88,-0.6l0.87,-1.69l2.0,-1.67l1.64,1.09l1.02,-0.05l0.87,-1.44l2.34,-2.09l2.49,2.98l-0.22,3.78l0.49,1.72l6.52,7.61l4.25,2.98l3.32,0.95l0.06,0.82l-2.29,5.42l0.16,2.02l4.03,-0.21l1.09,0.58l1.94,2.43l3.86,1.75l1.27,1.34l-1.08,1.5l-0.47,3.04l-2.57,2.53l-0.43,1.22l-0.05,3.97l-3.1,1.49l-1.67,3.08l-0.45,-0.09l-0.56,-5.11l-1.19,-1.5l-1.77,0.03l-2.39,-0.8l-5.73,-2.61l-1.47,0.22l-1.05,0.87l-1.63,-0.07l-1.5,-2.36l-1.1,-0.55l-2.66,0.73l-0.84,0.62l-0.37,1.03l0.22,3.35l-2.67,-0.02l-1.64,-0.79l-2.96,-3.35l-3.68,0.97l-1.14,-1.98l-0.54,-0.29l-4.05,1.65l-2.27,-1.73l-1.46,-0.24l-4.23,1.95l-1.4,1.29l-3.62,-0.79l-2.35,-1.71Z\", \"name\": \"Berlin\"}, \"DE-ST\": {\"path\": \"M511.79,466.89l-0.19,-2.32l-0.7,-0.44l-1.04,0.15l-2.76,-3.9l1.68,-1.94l0.2,-0.98l-1.16,-2.7l-1.94,-1.17l-0.28,-1.74l1.63,-0.79l4.59,-0.93l0.63,-0.97l0.35,-2.41l-0.71,-1.37l-2.88,-2.43l-2.59,-1.34l-6.93,-9.3l0.21,-2.09l1.0,-2.72l1.58,-0.71l2.7,0.41l0.63,-0.69l-0.79,-1.85l-3.95,-5.86l-0.66,-2.68l0.16,-3.99l2.53,-3.1l0.28,-1.55l-0.56,-0.79l-1.71,-0.55l-2.66,1.4l-4.13,-5.88l-4.69,-9.5l-1.66,-1.12l-1.11,-0.05l-0.75,-0.81l-0.72,-4.15l-1.93,-2.25l-1.65,-3.87l0.2,-7.77l3.27,-1.5l4.54,-0.34l4.3,0.2l5.62,-1.97l1.86,-0.99l2.94,-2.87l0.97,-3.92l1.3,-0.77l3.38,-0.06l5.48,1.9l5.8,-0.42l4.6,0.87l2.33,1.58l0.9,1.52l0.85,0.44l1.18,-0.25l1.82,-1.22l0.82,0.32l2.16,-0.13l5.94,-2.55l3.5,-0.95l6.05,-5.65l2.56,-0.25l0.67,-0.54l-0.49,-4.32l0.54,-3.6l0.7,-1.79l1.22,-0.57l1.34,0.43l1.51,-0.09l1.11,-0.9l1.84,-5.16l3.98,-1.11l0.67,0.45l0.04,1.21l-1.26,2.19l0.1,0.63l1.51,0.74l3.13,0.13l0.93,0.69l0.82,3.56l0.78,1.19l1.92,0.3l4.71,-2.06l2.83,4.33l1.46,1.2l3.21,0.23l0.85,0.5l-0.43,1.53l-1.19,1.86l0.01,1.13l6.37,4.31l2.87,0.62l3.9,2.08l1.8,0.4l1.63,-0.6l9.52,-0.73l1.26,1.82l-0.1,1.76l0.35,0.42l2.54,0.14l3.73,-1.08l2.58,1.01l0.9,1.63l1.95,7.11l-0.38,1.6l-3.4,3.24l0.13,2.03l1.17,2.44l-1.23,1.35l-0.58,1.36l2.01,5.57l1.72,1.93l-0.22,2.66l-1.96,4.88l-1.62,0.75l-1.93,-0.11l-0.74,0.36l-1.09,9.03l-2.71,4.59l0.91,0.85l2.89,-0.06l-1.55,2.53l0.34,2.08l0.89,0.9l1.43,0.36l2.27,-0.7l1.13,-1.26l0.85,-2.62l1.4,0.72l2.74,3.78l3.4,-0.48l-0.53,1.36l-0.13,3.41l-2.01,4.44l-1.84,2.01l0.95,2.91l-0.77,2.88l-1.73,3.62l-0.24,3.01l0.55,2.85l-1.33,2.64l-1.56,5.1l0.37,3.89l1.15,1.45l1.27,0.39l1.31,2.34l-2.49,2.98l-2.25,6.41l1.74,4.46l2.91,3.03l1.02,2.69l2.47,1.5l1.76,1.92l6.04,8.22l0.44,2.9l6.16,4.89l2.58,-0.11l1.13,-1.53l0.66,0.02l2.52,3.08l6.45,4.66l4.89,0.9l1.34,-1.33l2.5,-1.42l0.8,-1.79l0.76,0.01l12.48,7.63l4.91,0.77l1.31,0.93l1.19,3.39l0.65,0.55l5.47,0.32l2.89,0.82l2.89,3.51l5.51,3.88l1.89,0.76l6.62,-0.75l2.64,2.05l0.52,-0.14l1.63,-2.54l3.54,0.15l1.43,0.62l-0.67,1.56l-3.36,3.81l-3.59,6.03l0.11,6.61l2.2,5.14l-0.29,1.69l-2.65,3.63l-6.68,5.45l-1.94,3.5l-1.34,-0.34l-2.04,-2.14l-1.47,-0.84l-3.02,1.36l-1.32,-1.55l-5.97,-2.67l-1.43,-2.45l-2.85,0.28l-1.14,1.48l-5.05,4.22l-1.68,0.79l-2.82,-1.22l-3.88,-0.46l-1.59,0.98l-1.73,3.18l-1.87,1.62l-0.7,0.07l-1.23,-0.89l-9.29,1.63l-1.32,-0.89l-7.92,-0.32l-1.23,0.71l-0.39,3.02l-0.6,1.22l-7.2,0.73l-5.73,2.6l-2.87,-0.32l-3.48,-1.32l-1.13,2.89l-2.81,2.39l-0.15,7.63l-0.4,1.65l-3.26,3.33l-0.18,0.66l0.24,3.33l0.87,1.84l0.25,6.13l1.44,3.78l-0.02,3.0l-0.62,1.26l-1.8,0.22l-1.27,1.06l-0.99,1.85l-0.44,2.31l0.75,2.46l0.13,3.19l1.92,2.71l0.34,1.47l0.33,4.48l-0.42,1.5l-0.98,1.36l-0.04,1.45l2.99,1.22l-0.38,4.14l1.02,1.98l2.07,1.96l0.73,3.2l0.69,0.55l3.84,0.76l0.13,0.8l-1.67,3.02l-0.51,3.28l0.45,0.92l1.87,0.94l0.79,1.77l-2.3,4.57l-3.4,4.33l-0.28,1.47l0.32,1.26l-1.45,1.21l-0.43,-0.04l-0.73,-1.27l-2.49,-2.32l-0.85,-0.35l-2.78,1.41l-5.62,-1.82l-6.67,1.07l-0.46,-1.6l-3.15,-1.71l-1.4,-2.81l-1.47,-1.39l-4.85,-2.22l-2.28,-1.7l-1.31,-0.22l-8.74,0.77l-1.28,0.91l-0.45,-0.19l-1.15,-1.06l-0.5,-2.07l-2.27,-4.35l-0.38,-3.78l-2.77,-2.17l-4.1,0.75l-9.16,-0.71l-2.94,1.71l-5.26,-0.27l-1.77,-0.87l-1.16,-3.59l1.07,-1.09l-0.77,-5.0l-3.16,-4.8l-4.35,-2.3l-0.97,-1.55l1.11,-1.6l4.81,-0.91l2.69,-1.52l2.11,-2.49l0.87,-2.0l-5.66,-8.78l-2.67,-5.06l-5.24,-4.19l-2.67,-0.93l-9.17,-1.37l-4.2,0.08l-15.08,-1.86l-2.43,-1.39l-0.69,-1.32l0.67,-6.12l-2.55,-5.14l0.11,-3.74l-2.01,-2.73l-1.37,-3.94l-0.05,-0.75l0.44,-0.46l2.31,0.61l1.13,-0.89l-0.07,-1.79l-0.89,-2.07l-5.11,-1.88l-1.47,-1.29l-2.79,-0.06l-4.44,-2.33l-8.84,0.21l-1.36,-0.87l-2.71,-4.96l0.01,-3.6l-0.54,-2.39l-1.96,-2.27l-2.46,-5.9l-3.33,-3.09l-0.67,-4.1l0.36,-6.53l2.08,-1.27l1.03,-1.6l1.38,-0.82l1.23,-2.14l0.13,-1.41l-0.6,-3.28l-2.15,-1.94l0.47,-2.82l2.24,-1.44l0.45,-1.05l-0.41,-0.52l-1.39,0.08l-1.35,-1.59l-2.28,-1.14l-0.26,-1.39l-1.71,-3.04l0.64,-0.35l2.89,0.32l1.4,-0.46l2.94,-3.11l0.09,-1.88l0.66,-0.39l5.48,-0.87l13.01,-0.0l4.53,-1.32l5.81,0.09l0.98,-0.4l0.81,-1.67l0.02,-2.13l-0.39,-0.79l-1.7,-1.35l-0.02,-0.58l6.27,-2.92l2.44,-2.09l1.88,-2.91l0.15,-1.55l-0.43,-1.9l-0.96,-0.88l-1.5,-0.38l-0.91,-1.92l0.9,-2.41l0.7,-0.74l3.37,-1.16l1.22,-1.18l0.28,-2.58l-0.3,-1.37l-0.97,-0.82l-0.97,0.96Z\", \"name\": \"Sachsen-Anhalt\"}, \"DE-RP\": {\"path\": \"M24.68,808.29l1.03,-5.97l1.86,-4.29l-0.36,-1.2l-0.91,-0.81l0.6,-2.57l3.41,-1.09l0.77,-1.76l0.05,-1.88l-0.56,-1.74l-1.16,-1.36l2.95,-2.56l1.0,-1.51l6.1,-2.08l1.96,-1.72l-0.12,-3.11l1.51,-2.47l1.15,-0.67l3.37,0.76l2.74,-0.48l1.45,-1.43l0.04,-0.98l2.22,-0.05l2.75,-1.46l-0.04,-1.52l-3.15,-5.07l0.23,-1.07l0.62,0.02l1.45,2.08l2.25,1.42l0.83,2.34l0.84,0.54l2.39,-0.87l4.61,-3.4l5.5,-1.3l3.23,1.56l-0.46,1.94l0.97,0.65l1.26,-0.03l3.22,-1.81l2.78,2.71l1.86,0.47l7.83,-2.21l0.79,-1.6l-0.34,-1.57l-1.61,-3.04l-0.38,-4.8l-0.56,-0.82l-1.87,-1.1l0.81,-2.56l-0.1,-2.33l5.26,-2.24l1.29,2.43l1.3,1.09l1.55,0.41l1.45,-0.24l1.71,-2.59l0.23,-3.13l-0.47,-3.75l2.64,-1.04l2.52,-3.85l5.73,-1.77l6.06,-4.03l3.16,1.03l1.41,-0.64l1.08,-2.11l2.21,0.76l1.32,-0.32l3.31,-2.99l1.11,-2.64l1.36,0.63l1.11,1.88l5.61,0.4l5.8,-1.59l3.39,-2.58l0.19,-2.1l0.88,-1.77l0.09,-3.98l-0.36,-0.68l0.43,-0.48l2.19,-0.65l3.75,0.3l8.22,-2.3l3.88,-2.17l2.83,0.18l1.83,-2.93l4.31,-1.88l1.39,-2.17l1.04,0.64l1.05,-0.59l0.25,-2.65l-1.99,-2.55l3.3,-2.03l2.37,-2.59l2.46,0.86l0.88,-0.68l0.05,-2.73l-1.22,-3.12l-0.36,-3.78l0.29,-1.56l2.9,-2.8l1.07,-0.32l5.25,1.47l-1.36,5.45l0.1,1.17l1.45,1.19l2.59,0.9l3.7,3.96l1.88,1.45l2.66,-0.77l1.21,4.97l-0.23,4.73l1.05,2.01l4.14,5.4l1.6,2.84l0.66,2.66l1.14,0.33l2.95,-1.17l3.43,1.82l-1.37,5.18l2.01,5.01l0.36,2.37l0.67,1.4l1.2,1.11l-2.51,6.58l-2.09,1.83l-1.74,0.15l-2.49,-2.78l-1.65,-0.09l-1.89,0.77l-1.52,2.08l-1.7,1.34l-0.42,1.92l-0.09,6.68l0.69,1.05l1.2,0.73l-1.76,2.0l-1.23,4.28l-1.14,0.96l-0.3,0.97l0.95,1.16l4.35,1.11l0.51,1.64l1.77,0.94l2.92,6.18l2.06,1.74l0.6,1.18l1.42,4.64l-0.09,1.47l-2.09,0.88l-5.1,-0.14l-0.86,0.8l-0.55,1.81l0.97,1.85l-1.72,2.76l-0.79,-0.24l-1.56,-1.55l-0.67,-0.05l-1.3,1.38l-5.75,3.02l-1.25,1.81l-1.42,4.27l0.14,1.31l0.75,1.0l2.49,1.74l-0.81,3.76l-2.11,-1.87l-3.96,0.42l-1.3,1.98l-0.72,3.29l-6.57,4.67l-0.04,0.6l1.41,0.82l6.26,5.68l0.66,1.13l0.35,2.0l2.1,2.78l4.08,-0.16l4.26,-1.41l4.75,-2.5l3.81,-2.9l12.18,-4.15l3.62,0.18l1.38,0.89l10.45,11.9l1.86,4.99l-1.43,5.4l3.95,7.36l0.91,4.12l3.37,7.37l2.19,0.11l1.94,-0.44l0.96,0.38l-0.2,1.13l-3.25,4.48l-3.21,0.66l-2.8,1.96l-1.71,3.14l-0.17,4.01l3.91,8.37l1.6,4.55l-0.76,3.85l1.88,3.14l3.49,9.22l0.0,0.7l-1.85,0.92l-0.22,1.39l1.93,1.04l3.25,0.74l0.81,1.34l-1.29,3.09l0.73,5.13l-3.49,7.91l-0.22,1.37l0.26,0.44l1.99,0.71l-0.27,1.45l-6.66,7.88l-2.44,1.97l-2.95,18.33l-7.19,14.87l-2.03,3.17l-3.09,3.33l-2.57,0.94l-1.24,-1.08l-9.59,-1.99l-15.65,-8.34l-1.86,-0.22l-5.51,0.59l-8.1,-2.35l-4.72,1.84l-4.03,-1.06l-3.62,1.05l-1.17,-0.28l-2.59,-3.6l-2.3,-1.18l-4.21,-0.73l-2.02,-1.28l-4.7,-6.5l1.09,-1.32l-0.91,-2.44l-1.89,-0.67l-3.95,-0.27l-0.71,-1.69l-1.9,-0.17l-1.76,0.5l-2.22,-0.24l-1.72,-1.49l-3.41,-3.78l-0.62,-4.94l0.64,-1.31l1.99,-0.24l1.44,-1.99l0.75,-3.33l1.47,-1.7l0.58,-2.71l1.94,-1.7l0.91,-1.51l-0.32,-1.96l0.66,-1.97l-0.53,-1.35l-1.19,-0.78l-7.86,-2.1l0.28,-0.8l-0.3,-0.78l-3.98,-4.82l-0.54,-2.03l3.11,-3.51l2.62,-1.77l0.42,-1.41l-0.35,-2.04l-1.18,-0.66l-0.25,-4.03l-1.15,-2.32l-0.57,-1.84l-0.01,-2.22l-0.53,-0.54l-0.66,-0.06l-2.8,1.81l-2.7,0.27l-4.62,-3.36l-2.25,-2.16l-7.08,-0.59l-6.52,-3.71l-2.79,1.56l-0.83,-0.68l-2.21,-0.68l-8.2,5.11l-14.4,6.66l-1.71,0.34l-2.5,-0.18l-6.26,2.86l-11.26,-0.54l-13.41,1.23l0.13,-5.79l0.53,-1.56l3.99,-5.42l2.06,-3.93l-0.18,-1.43l-1.24,-1.17l1.36,-1.9l7.15,-4.65l-0.44,-1.89l1.32,0.05l-1.3,-3.54l0.06,-1.15l0.95,-0.99l-0.21,-2.34l0.76,-5.17l-0.8,-0.7l-3.32,-0.9l-4.77,-0.02l-1.59,-0.44l-6.1,-4.78l-1.07,-0.08l-1.93,0.85l-1.67,-3.94l-4.74,-2.41l-1.43,-1.45l-3.23,-7.78l-1.67,-2.74l-0.7,0.03l-0.73,1.44l-1.87,-4.92l-1.71,-2.63l-0.74,-6.02l-0.67,-1.36l-0.89,-0.59l1.07,-1.89l-0.27,-0.63l-0.59,-0.0Z\", \"name\": \"Rheinland-Pfalz\"}, \"DE-BB\": {\"path\": \"M719.86,603.29l-0.83,-2.8l1.63,-1.91l0.76,-2.25l0.17,-4.02l-0.18,-1.36l-0.85,-1.4l1.66,-1.39l0.42,-0.97l-0.75,-4.41l-0.71,-1.73l-2.13,-1.36l-0.84,-1.21l0.6,-3.11l-0.6,-1.42l-2.95,-2.22l-1.63,0.48l-0.58,-0.23l-1.27,-0.87l-2.71,-3.34l-0.87,-0.39l1.78,-3.23l6.61,-5.38l2.81,-3.83l0.37,-2.27l-2.2,-5.1l-0.11,-6.3l3.46,-5.74l3.41,-3.89l0.85,-1.98l-0.21,-0.52l-1.99,-0.84l-3.92,-0.12l-0.87,0.68l-0.99,1.89l-1.64,-1.67l-0.93,-0.3l-6.52,0.76l-1.67,-0.66l-5.44,-3.83l-2.98,-3.58l-3.18,-0.91l-5.19,-0.23l-1.54,-3.67l-1.61,-1.2l-4.91,-0.77l-12.52,-7.65l-1.41,-0.05l-1.04,1.99l-2.41,1.35l-1.28,1.26l-4.25,-0.94l-1.61,-0.94l-4.54,-3.55l-1.95,-2.6l-1.19,-0.83l-1.1,0.32l-0.91,1.39l-2.43,-0.1l-5.31,-4.38l-0.43,-2.88l-6.13,-8.34l-1.83,-1.99l-2.35,-1.37l-1.04,-2.72l-2.57,-2.55l-1.12,-2.2l-0.76,-2.69l2.15,-5.63l2.19,-2.31l0.4,-1.0l-1.55,-2.88l-1.44,-0.54l-0.84,-1.09l-0.22,-4.26l2.8,-6.94l-0.55,-3.0l0.23,-2.85l1.68,-3.43l0.82,-3.09l-0.97,-2.79l1.77,-1.82l2.03,-4.48l0.2,-3.66l0.64,-1.84l-0.69,-0.54l-3.32,0.67l-2.5,-3.63l-2.02,-0.94l-0.91,0.65l-0.56,2.37l-0.66,0.83l-2.1,0.73l-1.07,-0.3l-0.62,-0.89l-0.13,-1.26l1.54,-2.26l-0.04,-0.67l-0.99,-0.63l-2.75,0.1l2.68,-4.3l1.02,-8.8l2.12,0.08l2.09,-1.02l1.13,-2.02l1.01,-3.22l0.2,-3.08l-1.77,-2.05l-0.61,-2.35l-1.28,-2.41l0.04,-0.78l1.76,-2.28l-1.2,-2.72l-0.15,-1.58l3.26,-2.96l0.57,-2.13l-2.59,-8.65l-0.72,-0.83l-2.93,-1.08l-3.82,1.08l-1.97,-0.09l0.06,-1.65l-0.51,-1.18l-1.67,-1.28l-7.01,0.86l-2.42,-0.08l-1.53,0.59l-1.49,-0.31l-4.0,-2.12l-2.71,-0.55l-6.1,-4.13l1.27,-2.2l0.35,-2.34l-1.38,-0.76l-2.94,-0.14l-1.22,-0.99l-2.95,-4.5l-1.94,0.17l-3.45,1.77l-1.42,-0.26l-1.36,-4.57l-1.35,-0.91l-3.16,-0.13l-0.79,-0.41l1.12,-2.31l-0.05,-1.49l-1.17,-0.98l-4.55,1.13l-4.69,-1.87l-4.01,-0.97l-2.86,-2.99l-2.42,-0.83l-2.28,0.47l-3.28,2.27l-1.66,0.46l-2.52,-0.6l-4.47,-4.85l-1.32,-2.56l6.93,0.33l2.21,0.98l1.94,0.28l0.45,-0.37l0.42,-3.83l1.26,-0.63l3.01,0.0l5.25,3.0l3.04,-0.28l2.13,-1.74l0.68,-2.62l-0.99,-5.27l-1.3,-1.83l-0.21,-1.01l0.53,-1.42l4.25,-3.94l1.87,-1.23l5.25,-1.99l3.23,-0.19l1.01,0.36l2.98,2.47l1.18,2.72l0.58,0.18l3.98,-1.98l5.09,0.25l0.43,-0.45l-0.31,-2.3l-1.68,-1.49l1.07,-0.51l2.97,0.51l2.24,-2.74l5.25,-2.2l2.11,0.63l3.54,-3.22l1.43,-0.24l1.23,-2.81l0.16,-2.22l2.44,-1.68l1.43,-2.56l3.01,-1.28l2.5,-0.52l1.86,1.79l0.85,0.24l4.11,-2.4l0.89,0.37l2.34,3.93l6.9,1.91l4.12,2.44l4.62,4.16l2.81,1.61l1.59,2.11l1.7,0.37l3.5,-0.25l2.96,-0.78l10.86,2.69l1.2,0.58l2.78,2.77l7.13,1.67l0.38,4.13l1.26,1.09l1.36,0.13l4.26,-0.94l1.28,0.09l1.22,0.44l1.45,1.22l1.65,0.42l3.88,-0.88l2.71,-0.04l1.73,-0.72l0.25,0.9l-1.37,1.74l0.84,1.24l2.46,1.07l2.74,-0.41l4.7,-5.04l5.1,-3.79l0.83,-1.15l0.64,-2.18l3.07,-2.62l0.65,-0.22l1.08,0.35l2.25,3.33l1.37,0.59l2.75,-0.0l0.39,-0.32l0.59,-3.24l1.23,-2.89l1.53,-1.78l1.46,-0.74l2.44,-0.24l1.96,0.4l3.99,2.13l2.03,0.45l1.85,-0.68l5.11,-4.14l1.11,-0.42l2.52,-2.95l3.17,-7.73l1.25,-4.89l1.27,-1.21l1.7,-0.91l3.65,-0.25l2.3,-2.18l1.8,-3.27l5.81,-5.01l3.35,-0.49l3.31,0.25l3.09,-1.32l0.23,-0.45l-0.5,-2.15l-2.41,-4.54l0.15,-2.51l1.07,0.16l2.54,3.86l4.34,1.7l0.19,3.51l2.81,5.15l0.56,2.32l1.89,2.48l6.84,-0.51l5.75,0.42l4.55,1.36l2.3,-2.85l2.15,-0.45l3.59,1.77l4.07,-0.25l1.93,0.43l0.14,4.01l-0.45,2.99l-1.49,3.51l-3.45,5.53l-8.18,5.54l-0.27,3.54l0.34,0.39l7.85,1.57l6.75,0.55l1.52,-1.24l0.56,-2.12l2.57,-1.31l2.7,-3.52l6.09,-3.78l1.04,8.42l3.66,4.44l-2.41,4.77l-2.71,3.08l-0.75,2.09l-0.29,2.37l1.14,7.25l-3.2,10.55l-1.26,2.84l-2.96,3.09l-5.73,4.6l-5.99,3.15l-4.91,3.86l2.01,10.45l-0.39,2.97l-0.95,1.84l-2.54,2.22l-0.1,0.48l1.12,2.28l1.82,1.48l4.39,0.89l1.82,0.8l3.26,3.83l2.65,1.42l10.37,7.67l1.46,1.71l3.41,6.72l1.14,1.06l1.76,0.83l2.94,3.93l5.79,2.31l6.19,6.98l2.85,2.37l-2.61,5.52l-0.79,3.83l1.86,1.98l0.38,1.48l-1.55,3.63l-2.33,3.7l-5.04,4.46l0.42,6.73l2.35,7.1l2.02,4.59l-0.47,3.14l2.32,2.56l3.32,1.72l5.44,1.8l1.41,2.6l-0.03,3.04l-1.92,2.68l0.06,1.21l1.35,2.1l-1.41,5.06l-0.58,4.36l1.11,2.46l6.06,4.55l-2.35,3.35l-0.93,4.45l-2.66,5.43l-0.37,9.8l-0.8,3.03l-3.24,5.17l-5.62,5.74l-1.4,3.06l0.35,3.55l1.62,2.48l1.82,1.31l1.25,1.68l0.39,4.14l1.1,4.19l2.26,2.66l4.7,3.91l1.21,2.62l0.95,3.93l0.15,4.04l-1.12,3.06l-1.92,3.1l-0.81,3.06l0.13,0.88l-3.66,-0.17l-6.56,-3.17l-2.37,-0.46l-2.15,0.1l-4.25,1.21l-12.99,6.53l-3.58,0.83l-3.26,-2.18l-3.6,-1.33l-4.85,-0.61l-6.21,1.52l-3.95,2.19l-1.29,1.17l-3.89,5.1l-0.66,1.41l-0.17,2.38l-1.47,3.48l-7.15,10.72l-0.62,0.22l-2.28,-0.64l-16.83,2.1l-14.84,-1.15l-5.83,-1.72l-2.12,0.37l-0.96,-0.4l-1.65,-2.44l-2.5,-1.7l-2.15,-2.14l-4.85,-2.37l-2.43,0.29l-2.42,1.8l-10.55,3.53l-1.24,-1.98l-2.09,-0.73l-0.78,0.95l-1.17,0.03l-1.36,1.66ZM712.59,435.76l-0.84,0.95l-1.57,3.47l3.19,2.44l3.89,0.67l1.46,-1.35l3.95,-1.86l0.99,0.15l2.61,1.82l4.07,-1.55l0.77,1.71l0.64,0.4l3.68,-0.95l2.85,3.28l1.97,0.9l3.1,0.02l0.59,-1.53l-0.28,-2.94l0.64,-0.58l2.21,-0.67l0.69,0.35l1.11,2.09l0.76,0.46l2.02,0.06l1.22,-0.93l1.01,-0.13l5.51,2.56l2.56,0.84l1.57,-0.08l0.78,1.06l0.5,4.89l0.6,0.84l1.28,-0.28l1.57,-3.02l2.57,-0.93l0.69,-0.75l0.38,-1.19l-0.21,-3.13l0.68,-1.44l2.21,-1.97l0.53,-3.16l0.96,-0.91l0.17,-1.03l-1.58,-1.83l-3.93,-1.8l-1.78,-2.3l-1.41,-0.79l-3.7,0.36l0.03,-1.24l2.28,-5.36l-0.06,-1.42l-3.7,-1.27l-4.13,-2.89l-6.41,-7.49l-0.32,-1.28l0.19,-3.97l-3.12,-3.55l-0.77,0.15l-2.3,2.2l-0.68,1.26l-2.55,-1.12l-2.28,1.91l-0.89,1.7l-1.29,0.35l-3.57,-0.25l-1.5,-0.67l-0.5,-0.63l-0.26,-3.67l-1.71,-0.14l-0.75,0.58l-1.01,2.43l-1.0,0.91l-4.15,1.34l-1.15,3.72l0.73,2.29l-5.25,-2.09l-0.72,0.21l-1.08,2.54l0.35,1.59l-0.73,8.26l1.54,2.91l0.01,0.72l-4.13,4.39l-0.54,3.1l0.71,2.24Z\", \"name\": \"Brandenburg\"}, \"DE-NI\": {\"path\": \"M81.02,419.89l1.19,-0.14l5.45,-2.77l0.08,-0.66l-3.76,-3.59l0.61,-3.96l-0.71,-1.62l3.13,-2.28l3.17,-0.99l9.2,-0.14l5.14,1.56l4.91,-0.7l4.91,1.7l0.48,-0.2l1.83,-3.59l0.72,-5.73l0.91,-17.47l0.85,-5.39l1.71,-4.85l8.04,-12.69l2.19,-5.6l0.9,-5.26l0.15,-5.89l-0.91,-11.7l-1.21,-3.36l-0.07,-1.86l2.29,-7.71l0.31,-2.62l-0.31,-6.99l1.99,-1.74l1.76,-3.01l0.38,-2.07l-0.68,-1.84l2.31,-3.51l1.15,-0.59l2.13,-0.03l2.01,0.53l3.4,2.15l2.32,0.64l-2.34,-3.97l-4.09,-1.59l-22.38,-0.81l-3.4,-1.7l-1.37,-4.36l-0.02,-12.11l0.41,-2.69l1.88,-4.97l0.43,-2.47l0.67,-1.24l5.56,0.88l0.93,-1.44l0.98,-0.62l0.74,-1.8l-0.16,-2.09l-0.95,-1.39l-2.95,-1.55l-1.13,-1.17l-0.18,-1.87l1.26,-1.66l3.18,-2.24l3.52,-3.97l1.93,-1.35l3.59,-3.75l7.61,-2.98l14.91,-1.69l2.1,2.15l2.5,0.55l14.47,-3.02l29.34,-4.13l7.48,2.18l-0.6,5.76l2.74,6.0l4.1,5.3l3.21,2.27l-0.81,2.76l0.2,0.51l3.61,1.35l0.95,1.48l-0.28,2.75l-0.85,1.37l-3.71,2.4l-3.79,0.35l-1.91,1.14l-0.17,0.46l2.7,7.61l1.88,1.64l2.27,-1.04l1.46,0.05l1.01,0.57l3.29,3.27l1.98,3.21l1.61,0.74l1.63,-0.05l2.52,-1.02l1.27,-1.27l2.08,-3.46l2.23,-5.86l0.53,-5.64l-2.94,-3.63l-4.18,0.88l-1.62,-0.28l1.71,-10.32l0.78,-2.22l1.18,-1.27l1.52,-0.61l3.93,-0.19l1.7,0.79l3.92,5.93l4.08,2.08l8.32,1.65l3.53,1.71l0.0,0.79l-2.26,1.95l-2.16,2.64l-1.67,3.76l-0.62,4.84l0.11,9.31l0.61,4.17l1.32,3.03l0.43,0.23l0.33,-0.37l0.29,-4.15l-1.05,-10.26l0.09,-4.76l1.42,-3.41l3.96,-3.26l1.35,2.45l0.52,0.43l0.99,-0.08l0.92,1.53l0.92,0.06l2.15,-2.01l1.58,-2.46l0.41,-2.76l-0.75,-4.71l-1.46,-4.45l1.03,-2.84l-0.95,-0.46l-3.98,0.17l-2.07,-0.37l-4.6,-1.7l-2.49,-8.07l-0.09,-5.4l0.59,-2.38l3.67,-9.24l2.61,-9.98l1.65,-4.39l1.35,-2.04l1.85,-1.79l2.09,-1.26l2.09,-0.48l2.94,0.58l2.4,2.73l3.48,2.96l3.78,1.99l7.87,1.96l4.29,-0.14l7.07,-1.76l3.86,0.3l2.1,-2.21l7.63,-1.88l7.72,0.08l1.66,-1.11l1.27,0.9l1.61,0.3l3.3,-0.15l2.79,3.24l9.59,17.0l3.94,4.66l2.78,2.3l1.27,1.64l1.38,5.05l6.73,9.96l1.68,1.52l5.33,1.69l5.82,4.0l6.44,1.47l0.51,6.5l2.43,3.28l2.27,5.12l4.03,4.04l1.23,-0.02l1.34,-1.96l1.32,-0.53l0.74,0.98l0.37,3.72l0.44,0.63l1.08,0.09l2.37,-1.13l2.08,1.29l0.96,0.13l3.62,-1.25l1.68,-1.01l0.43,-0.57l0.08,-1.69l4.53,-1.52l2.68,2.7l2.01,0.58l2.16,2.76l1.6,1.16l1.9,0.44l5.4,-0.37l2.65,-3.47l1.68,-0.82l6.25,0.1l3.43,1.31l13.9,8.45l4.11,1.44l3.33,-1.29l7.16,-0.3l3.17,0.83l1.99,2.5l0.29,4.9l0.67,2.44l3.5,1.36l3.11,3.98l3.13,2.55l8.94,5.2l10.75,10.14l4.89,3.67l1.46,-0.71l4.23,-3.9l1.0,-0.16l0.62,0.37l3.17,5.0l1.03,-0.05l1.95,-1.82l1.31,1.64l1.51,0.91l3.41,6.12l3.6,4.26l1.72,1.08l2.25,0.43l2.0,-0.52l3.26,-2.26l1.89,-0.44l2.06,0.66l3.0,3.08l4.12,1.01l4.41,1.76l-1.74,4.88l-0.77,0.56l-2.44,-0.42l-1.15,0.25l-1.05,1.08l-1.1,5.39l0.5,4.08l-2.91,0.41l-5.92,5.58l-3.45,0.93l-5.9,2.54l-3.37,-0.07l-2.31,1.31l-1.31,-1.79l-2.59,-1.71l-4.84,-0.9l-5.71,0.43l-5.4,-1.88l-3.69,0.06l-1.85,1.16l-0.88,3.79l-2.8,2.73l-1.75,0.93l-5.39,1.9l-4.22,-0.21l-4.63,0.35l-3.39,1.32l-0.53,0.69l-0.22,8.19l1.72,4.09l1.9,2.19l0.76,4.24l1.12,1.15l1.15,0.06l1.28,0.8l4.67,9.44l4.32,6.12l0.99,0.3l2.16,-1.52l1.52,0.76l-0.2,0.91l-2.59,3.24l-0.19,4.38l0.76,2.96l4.57,7.21l-2.57,-0.41l-2.04,0.92l-1.21,3.07l-0.25,2.41l7.15,9.76l1.1,0.91l1.63,0.56l2.76,2.33l0.49,1.0l-0.7,2.55l-5.37,1.19l-1.03,0.7l-0.13,0.64l0.4,2.01l1.98,1.22l1.0,2.31l-1.73,2.1l-0.07,1.07l2.97,4.17l1.56,0.09l0.22,2.64l0.95,0.19l0.66,-1.09l0.42,0.88l0.05,1.96l-0.53,1.28l-4.02,1.55l-0.92,0.99l-0.84,2.01l-0.11,1.39l0.82,1.57l2.61,1.39l0.32,2.28l-0.88,1.93l-3.28,3.21l-1.98,1.13l-3.46,1.11l-1.04,0.94l0.04,1.36l1.94,1.64l0.03,2.09l-0.51,1.17l-6.39,0.14l-2.05,0.32l-2.47,0.99l-12.96,0.0l-5.62,0.88l-1.13,0.59l-0.11,1.99l-2.75,2.92l-1.0,0.31l-3.01,-0.31l-1.23,0.89l0.08,1.09l1.68,2.52l0.44,1.67l2.39,1.2l1.4,1.62l1.35,0.02l-2.53,1.76l-0.59,3.21l0.37,0.99l1.86,1.35l0.43,4.07l-1.03,1.82l-1.41,0.85l-0.96,1.53l-2.26,1.49l-0.46,6.94l0.75,4.44l3.41,3.21l2.38,5.77l1.95,2.24l0.48,2.14l0.03,3.83l2.62,4.8l-4.45,2.59l-1.9,2.25l-0.18,1.25l2.42,3.53l-0.3,2.05l-0.6,-0.16l-1.34,-1.48l-0.95,-0.17l-5.99,2.66l-4.01,0.06l-3.45,-2.88l-4.8,-2.57l-1.15,-0.16l-4.61,0.97l-0.31,0.86l0.52,1.3l-0.13,1.18l-1.28,3.67l-2.26,2.1l-0.57,1.16l-3.3,2.22l-0.96,2.45l-5.63,3.27l-1.04,-0.07l-1.02,-1.4l-2.29,0.34l-0.93,1.12l0.04,1.7l-0.9,1.76l-2.46,1.32l0.0,1.24l-4.31,-0.17l-1.57,0.32l-1.41,1.7l-2.7,-1.89l-9.11,7.83l-3.11,-2.29l-0.75,-0.81l-0.23,-2.18l-1.16,-0.43l-1.26,1.23l-1.38,0.03l-0.96,0.62l0.01,1.38l1.22,2.6l-1.1,1.5l-0.76,-0.54l-1.68,-3.39l-2.48,-1.55l-1.41,-0.23l-0.38,0.7l0.48,1.44l-0.68,0.74l-2.41,0.79l-5.52,3.73l0.63,2.28l3.24,3.16l0.84,0.05l1.49,-1.49l0.83,0.09l-1.1,1.64l-0.33,1.74l-4.09,3.63l-1.05,-0.11l-2.86,-3.66l-1.29,-0.72l-1.41,-0.03l-8.41,-3.56l-2.9,-2.79l1.95,0.67l1.03,-0.13l0.4,-0.84l-0.86,-2.97l1.43,-1.97l1.46,0.21l3.54,-0.62l0.93,-1.5l-0.36,-4.1l0.23,-2.09l-0.67,-1.74l0.79,-1.93l-2.19,-2.26l-2.05,-5.17l1.7,-0.8l0.53,-4.24l1.47,0.61l1.18,-0.61l-0.94,-2.11l0.07,-1.08l3.22,2.06l0.81,-0.43l0.85,-1.76l-1.94,-2.45l-1.21,-3.68l-2.36,-1.51l-0.72,-1.89l-0.6,-0.38l-3.37,0.81l-1.83,-0.63l-0.82,-1.2l-0.9,-0.42l-2.27,1.83l-2.49,-0.19l-0.63,-0.77l-0.09,-2.09l-1.07,-1.06l-1.87,0.06l-1.52,1.47l-0.94,-0.62l-4.48,1.4l-1.23,-0.04l-0.35,-0.77l0.15,-2.58l1.11,-1.01l0.41,-1.07l-0.26,-1.91l0.62,-1.75l-0.26,-5.17l0.98,-1.35l0.46,-1.58l2.72,-2.3l1.82,-4.93l0.1,-3.71l0.88,-1.71l-2.11,-1.46l1.53,-2.29l0.42,-1.96l-1.01,-0.55l-2.14,0.89l-2.16,0.34l-4.43,-0.17l-3.7,0.94l1.48,-5.57l-0.8,-3.09l-0.64,-0.92l-2.48,-1.17l-3.9,0.33l1.57,-2.11l1.1,-4.41l-0.0,-1.43l-4.55,-2.02l-1.58,0.51l-0.84,1.61l-4.15,-2.09l0.42,-1.64l1.55,-1.38l0.6,-1.85l-2.17,-6.42l1.27,-2.77l-0.13,-1.79l-1.33,-1.89l-2.65,-1.14l-0.68,-0.73l0.56,-2.66l-0.4,-0.78l-1.01,-0.64l-7.02,-0.98l-6.22,0.75l0.98,-2.04l0.04,-1.2l-1.78,-4.92l2.6,-0.75l2.12,0.18l0.8,-0.41l0.02,-1.89l-0.7,-2.17l0.26,-0.65l3.03,-2.5l-0.37,-0.74l-2.65,-0.72l-5.42,-2.37l-0.33,-1.24l1.2,-8.39l1.11,-2.47l3.86,-0.02l2.71,-1.61l5.35,-9.61l-1.83,-7.02l2.01,-2.0l0.44,-1.92l-0.33,-0.51l-1.9,-0.83l-1.64,-2.28l-1.81,-0.38l-5.65,3.02l-3.19,3.52l-3.04,7.74l-6.45,1.44l-3.47,1.43l-3.09,0.35l-11.03,-1.42l-0.36,-1.93l0.39,-3.2l-0.58,-1.77l0.25,-3.52l-0.36,-2.54l-2.73,-5.09l-1.83,-1.6l-1.79,-0.71l-1.24,0.06l-4.81,2.37l-1.49,0.3l-4.81,-0.16l-2.3,0.39l-3.28,2.8l-1.15,5.1l-0.94,0.96l-1.61,0.77l-5.43,0.72l-1.92,-0.72l-2.27,-0.01l-2.13,-0.81l-0.53,0.49l1.95,6.58l1.29,2.03l6.5,3.13l2.76,2.01l1.2,1.95l1.86,7.84l0.08,14.45l0.41,1.75l3.22,2.41l-0.56,1.69l-1.5,2.22l-4.91,3.34l-1.81,4.09l-0.51,0.36l-0.54,0.14l-12.71,-3.46l-3.2,2.84l-2.29,3.12l-2.84,2.06l-6.76,2.58l-3.59,-1.27l-3.67,0.67l-1.61,0.8l-4.63,4.31l-2.26,-1.35l-3.32,-1.26l-1.97,-5.22l0.11,-0.63l2.68,-2.46l2.37,-1.11l4.44,-0.91l2.73,-8.33l-1.09,-0.94l-1.93,-0.69l-4.15,0.31l-0.59,-0.47l-0.61,-1.89l-2.6,-0.55l-0.5,-0.78l2.41,-3.87l-0.88,-3.26l2.95,-3.9l-1.35,-2.87l-0.29,-1.62l3.37,-0.75l0.94,-0.92l-3.13,-5.85l-3.79,-4.93l-1.34,-0.21l-6.34,2.52l-0.98,-0.3l-1.46,-1.73l-6.64,-4.2l-2.68,-1.19l-1.04,-5.95l-1.0,-2.13l-8.27,-2.62l-1.36,1.45l-1.19,5.14l0.44,1.65l1.54,1.53l-1.11,0.96l-1.38,4.22l-1.33,1.77l-2.52,-0.32l-2.13,0.61l-4.64,3.87l-4.97,5.18l-1.65,0.99l-3.06,0.8l-6.56,4.9l-3.95,0.88l-13.48,0.56l-2.85,2.29l-3.93,1.67l-2.27,-0.1l-1.33,-4.21l0.07,-2.84l2.67,-7.02l0.81,-6.04l-1.42,-4.22l-5.97,-9.76l-1.13,0.15l-1.55,1.95l-2.31,0.68l-2.5,0.16l-2.67,-0.43l-5.13,-1.95l-7.7,-1.09l-2.45,-1.21l-1.82,-2.12l-0.58,-2.28l-0.49,-5.7l-0.99,-2.14ZM267.33,316.2l3.33,0.04l0.42,0.36l1.33,2.69l0.7,4.9l1.58,2.42l4.63,5.15l0.05,5.08l0.57,0.72l1.58,0.27l4.98,-1.09l5.05,3.14l2.1,0.36l2.08,-0.71l0.49,-1.2l4.56,3.26l4.27,-2.96l1.54,-1.68l0.71,-4.91l1.06,-2.17l-0.47,-1.22l-2.35,-2.52l-0.3,-0.81l1.6,-1.8l0.06,-0.83l-3.7,-4.22l-0.78,-0.23l-0.71,0.37l-1.49,3.45l-1.43,0.14l-3.31,-1.67l-3.73,-3.13l-4.34,-0.32l-2.53,-1.73l-0.2,-1.24l-0.64,-0.56l-3.53,-0.03l-1.92,0.54l-6.95,-2.64l-2.68,-1.7l-2.68,0.52l-3.4,-2.1l-1.21,-0.24l-2.22,0.34l-0.3,0.56l1.66,3.98l4.24,1.85l2.28,1.58ZM227.54,225.51l-1.97,1.81l-1.85,-0.65l-0.69,0.34l1.11,-2.22l1.69,-0.75l2.0,0.32l0.99,0.72l-1.29,0.42ZM203.7,215.13l1.2,0.74l-4.56,-0.9l-1.75,0.09l-0.48,1.66l-1.06,-0.77l0.24,-0.59l1.53,-0.58l1.97,-0.22l2.9,0.57ZM191.08,217.06l-5.04,2.57l-2.62,0.16l-2.29,-1.53l-0.55,0.11l-1.56,1.77l-0.92,-0.35l2.17,-2.74l3.92,-0.88l7.88,0.53l0.0,0.36l-1.0,0.0ZM173.83,221.45l-7.48,-0.07l-3.33,0.81l-0.53,2.92l-2.36,0.12l-0.65,-0.58l-0.3,-2.02l0.43,-1.67l0.98,-0.61l11.51,-0.19l1.71,1.3ZM153.99,224.83l0.95,0.77l-0.9,0.6l-3.99,-1.2l2.22,-0.56l1.72,0.38ZM146.3,226.06l-4.68,1.85l-11.86,1.58l-2.98,-0.83l3.62,-2.13l5.18,-0.87l10.71,0.41ZM119.15,232.1l-16.64,1.9l1.54,-0.77l13.21,-1.72l1.89,0.59ZM87.1,250.55l0.68,0.97l-0.99,-1.1l-1.05,-0.35l-2.94,1.09l-1.53,-0.76l-1.24,-1.79l-0.32,-1.61l0.89,-0.69l7.36,-2.27l3.36,-0.27l0.94,1.85l-1.76,0.27l-5.46,2.31l0.25,1.4l1.8,0.94Z\", \"name\": \"Niedersachsen\"}, \"DE-HE\": {\"path\": \"M188.99,810.34l6.35,-4.54l0.82,-3.48l1.04,-1.63l1.7,0.13l1.57,-0.41l1.64,1.66l1.0,0.26l0.41,-0.41l0.82,-4.47l-2.64,-1.98l-0.63,-0.83l-0.07,-0.96l1.34,-3.92l1.07,-1.56l5.64,-2.93l1.17,-1.3l1.94,1.78l1.16,0.02l2.13,-3.32l-0.96,-1.72l0.67,-2.02l5.17,0.05l1.73,-0.47l1.1,-1.26l0.0,-1.59l-1.47,-4.79l-0.75,-1.41l-1.96,-1.59l-2.99,-6.28l-1.77,-0.93l-0.76,-1.84l-4.43,-1.15l-0.42,-0.41l1.34,-1.57l1.24,-4.3l1.87,-2.34l-1.94,-1.91l0.45,-8.08l1.58,-1.2l1.46,-2.02l1.44,-0.58l1.38,0.15l2.34,2.66l1.56,0.2l0.93,-0.4l2.36,-2.11l2.64,-6.91l-1.94,-2.86l-0.35,-2.32l-1.98,-4.89l2.28,-7.19l0.56,-0.61l1.34,-0.45l0.4,-0.63l0.8,-5.69l-0.85,-1.44l-2.36,-1.85l-0.09,-1.03l-0.81,-0.77l0.05,-0.5l5.12,-4.59l0.98,-2.42l1.94,-1.41l6.45,-6.68l1.5,-0.07l0.98,2.19l0.86,0.66l1.76,0.3l2.77,-0.29l3.21,-2.25l0.27,-2.25l2.81,-2.89l1.55,-1.05l2.12,0.08l0.5,-1.2l0.14,-3.46l2.02,-4.46l1.85,-1.14l1.65,-3.7l1.88,-2.85l-0.97,-4.61l0.24,-2.07l-1.63,-3.36l0.28,-0.88l9.71,-0.04l3.43,0.84l4.77,-3.12l0.06,-1.36l-1.08,-2.41l5.25,-6.47l0.3,-1.06l-0.07,-2.06l-1.95,-9.31l-1.15,-0.95l0.34,-1.86l-0.62,-0.71l-0.94,-0.03l-2.72,1.84l-4.53,0.96l-1.41,1.88l-1.39,-0.09l-0.62,-0.55l-0.54,-1.9l-1.7,-1.58l1.71,-3.95l5.31,-6.02l0.6,-1.52l1.89,-1.3l1.01,-1.6l4.7,-1.65l3.75,-0.21l3.54,-0.99l4.62,1.08l3.75,-2.38l4.01,-0.2l0.58,-0.35l1.22,-3.35l-1.02,-1.25l-2.22,-0.4l-0.39,-4.41l-1.42,-2.56l0.64,-1.87l4.99,-2.51l4.01,-1.05l1.5,-0.78l3.14,1.99l2.71,1.09l0.7,2.11l-0.15,2.67l2.47,2.45l3.83,0.82l1.35,-0.1l3.6,-2.81l1.97,-0.17l1.2,-4.78l7.03,-4.78l1.48,-2.89l2.01,-2.19l2.37,-6.99l-0.24,-0.76l-1.68,-1.53l7.8,-2.81l2.16,-3.2l1.01,0.43l1.67,-1.62l1.52,0.16l0.47,2.94l1.75,1.09l2.29,-0.09l1.98,-1.76l1.14,1.4l1.44,0.66l1.69,0.21l2.54,-0.81l0.81,2.0l2.27,1.39l1.17,3.62l1.81,1.98l-0.94,1.48l-2.55,-1.92l-1.05,0.04l-0.49,1.36l1.05,2.21l-1.68,-0.53l-0.72,0.16l-0.7,4.53l-1.23,0.31l-0.52,0.59l0.19,1.39l1.92,4.38l1.2,1.63l0.93,0.51l-0.82,1.77l0.67,1.7l-0.22,2.1l0.37,3.91l-0.39,0.88l-5.26,0.57l-1.69,2.34l0.79,3.37l-3.16,-0.89l-0.46,0.46l0.14,0.6l3.39,3.44l8.6,3.66l1.42,0.04l1.1,0.62l2.78,3.61l1.74,0.29l1.01,-0.51l3.57,-3.44l0.44,-1.95l1.15,-2.05l-0.68,-0.82l-0.8,-0.05l-2.1,1.65l-2.96,-2.91l-0.54,-1.52l5.23,-3.37l2.45,-0.81l0.99,-1.13l-0.46,-1.65l2.89,1.64l1.55,3.24l0.8,0.79l1.35,-0.13l0.91,-1.06l0.27,-1.1l-1.3,-3.54l1.89,-0.23l1.37,-1.23l0.31,2.28l3.92,3.2l-1.56,1.38l-0.73,2.0l0.64,3.32l1.28,2.05l0.61,3.82l1.62,0.55l1.96,2.27l1.91,0.02l4.45,1.42l0.29,0.52l-0.47,2.26l0.55,1.03l1.53,1.27l0.4,2.28l0.5,0.75l3.51,1.51l2.02,0.39l1.52,0.94l2.41,0.15l5.56,3.45l-0.25,1.15l-1.44,1.77l-0.62,1.71l-0.63,4.91l-0.91,-1.25l-0.03,-1.26l-1.43,-1.69l-1.76,-0.02l-2.26,0.62l-1.07,0.97l1.53,2.78l2.65,0.81l-0.34,1.69l-1.76,3.39l-0.6,2.71l0.11,1.55l1.94,0.62l1.24,0.96l1.92,0.26l1.48,2.89l-1.8,4.06l-5.16,0.2l-0.79,-0.53l0.07,-1.23l-0.64,-0.5l-1.54,0.49l-1.14,-0.41l-4.38,0.31l-2.45,1.76l-0.42,2.4l0.29,1.11l1.64,2.25l0.27,1.83l-0.3,0.92l-2.51,0.55l-3.38,-0.36l-1.6,-0.58l-1.0,0.4l-0.43,1.01l-0.06,1.18l0.54,0.96l0.68,0.06l0.71,-0.55l-0.06,1.9l0.43,1.4l0.9,0.09l1.69,-1.98l0.97,-0.18l2.22,1.72l2.06,3.81l-2.78,3.56l-0.22,3.82l-2.8,1.05l-2.02,0.26l-2.44,1.56l-0.77,3.1l0.38,2.83l-1.69,0.43l-0.78,1.71l1.45,2.23l-0.21,2.59l-2.03,4.36l0.06,1.82l-1.92,1.89l-1.2,2.04l-0.39,3.89l0.77,1.8l2.32,-0.53l2.69,1.44l1.53,0.12l0.88,-0.55l0.72,-1.8l-1.29,-2.13l0.24,-1.08l4.95,-2.05l4.55,1.05l0.85,0.82l1.03,2.68l0.22,3.42l-1.6,0.61l-1.35,2.01l0.25,5.57l0.82,2.39l-1.21,5.0l0.35,0.95l0.53,0.2l-0.84,2.47l-4.24,7.42l-1.89,1.65l-6.08,3.6l-5.76,2.25l-1.82,0.13l-0.84,-0.34l-2.77,-2.91l-2.65,0.95l-1.25,1.98l-2.34,8.46l0.55,6.38l-2.44,2.1l-4.04,1.66l-0.82,0.8l-0.86,1.18l-0.72,2.23l0.46,2.74l-4.67,1.51l-1.29,0.02l-1.71,-0.78l-2.14,0.52l-1.62,-1.64l-1.36,0.53l-1.58,-0.47l-0.82,0.3l-0.29,1.49l0.31,3.06l-0.98,4.41l0.53,0.94l2.45,0.76l-1.68,3.65l0.46,4.09l-0.8,0.96l-5.85,2.5l-1.4,0.22l-2.12,-0.35l-2.79,-4.64l-4.87,-2.54l-10.07,-0.73l-3.73,1.27l-0.56,2.58l-1.64,1.95l-1.49,1.06l0.63,-1.11l-0.18,-0.68l-4.52,-2.32l-5.41,2.44l-3.79,1.01l-1.23,1.82l-0.27,4.04l-1.61,0.45l-1.24,1.6l0.12,0.55l1.67,1.13l2.74,-0.42l0.87,3.82l0.93,1.51l-0.1,1.75l1.13,2.5l-1.82,-0.71l-0.54,0.37l-0.2,11.33l3.52,10.99l0.79,1.44l0.78,0.27l1.44,-2.04l-0.17,4.03l0.86,2.37l1.2,1.11l2.27,-0.2l0.59,0.93l-2.08,3.81l0.51,1.57l2.36,1.31l-1.57,3.83l0.21,2.9l-0.99,0.98l-1.87,0.31l-0.63,0.53l0.08,2.12l1.07,4.92l-3.78,4.46l0.46,1.34l1.95,1.88l1.26,2.17l-0.68,1.14l-2.02,-1.31l-0.71,0.46l-0.05,1.04l2.47,3.19l2.67,5.31l-1.77,-1.57l-2.86,-0.16l-1.05,0.19l-3.02,2.46l-2.28,-0.43l-5.79,0.26l-2.86,3.58l1.56,3.07l0.23,0.91l-0.41,0.91l-2.27,1.32l-0.71,-1.31l-0.85,0.12l-1.03,3.28l-3.66,4.03l-3.29,-0.8l-0.03,-2.45l1.59,-1.12l0.36,-0.9l-0.19,-4.92l1.83,-2.2l1.49,1.47l1.16,-0.24l1.59,-2.87l-0.2,-2.15l-0.42,-0.26l-5.91,0.5l-1.95,-3.06l-4.3,-0.11l-4.47,-2.65l-1.1,-1.26l-1.38,-3.38l-0.43,-1.64l0.56,-1.23l-0.1,-1.4l-1.73,-3.31l-8.13,2.04l-0.12,0.9l1.9,8.76l-0.61,0.89l-3.9,1.69l-6.5,-6.79l-2.49,-1.98l-2.6,-0.41l-2.94,1.21l-1.51,-4.29l-3.85,-8.13l0.16,-3.83l1.57,-2.79l2.53,-1.72l3.36,-0.75l3.44,-4.74l0.33,-1.67l-1.63,-0.98l-3.7,0.53l-3.2,-7.03l-0.93,-4.17l-3.9,-7.23l1.43,-5.4l-1.93,-5.19l-10.61,-12.12l-2.9,-1.37l-2.86,0.09l-12.29,4.19l-3.9,2.95l-4.63,2.45l-4.17,1.38l-3.69,0.13l-1.58,-2.35l-0.28,-1.83l-0.86,-1.48l-6.36,-5.77l-1.0,-0.43Z\", \"name\": \"Hessen\"}, \"DE-TH\": {\"path\": \"M401.08,699.37l0.63,0.28l0.51,-0.58l-0.37,-3.21l0.84,-3.02l1.83,-0.94l2.01,-0.26l3.05,-1.19l0.48,-0.9l-0.04,-3.23l2.88,-3.62l-2.26,-4.54l-2.25,-1.83l-1.74,-0.06l-1.87,2.09l-0.27,-3.26l-0.92,-0.31l-0.7,0.68l0.01,-1.63l0.97,-0.42l0.98,0.58l3.62,0.38l3.03,-0.77l0.52,-1.43l-0.29,-2.09l-1.91,-3.16l0.23,-1.87l2.24,-1.61l3.9,-0.21l1.18,0.41l1.45,-0.47l0.01,1.34l1.79,0.98l5.57,-0.58l1.87,-4.69l-1.83,-3.43l-2.06,-0.32l-1.26,-0.97l-1.49,-0.27l0.53,-3.63l1.75,-3.35l0.39,-2.12l-0.66,-0.69l-2.25,-0.56l-1.17,-2.1l2.52,-0.89l1.42,0.0l0.98,1.32l0.0,1.23l0.79,0.77l0.28,1.01l0.71,0.14l0.67,-0.93l1.07,-6.28l1.44,-1.77l0.45,-1.29l-0.51,-1.13l-3.17,-1.58l-2.41,-1.8l-2.49,-0.18l-1.5,-0.94l-2.08,-0.41l-3.24,-1.37l-0.69,-2.79l-2.02,-2.15l0.5,-2.1l-0.53,-1.02l-4.81,-1.62l-1.76,0.03l-1.78,-2.15l-1.65,-0.6l-0.56,-4.14l-1.08,-1.33l-0.57,-2.53l0.57,-2.1l7.91,-7.05l2.04,-1.2l0.84,-1.13l2.62,1.89l0.61,-0.26l1.05,-1.5l6.11,-0.07l0.39,-0.54l-0.28,-1.08l1.45,-0.49l1.03,-0.87l0.97,-1.92l-0.07,-1.64l0.66,-0.78l1.59,-0.22l0.79,1.29l1.76,0.18l5.92,-3.44l1.05,-2.55l3.21,-2.13l0.66,-1.26l2.31,-2.17l1.53,-4.83l-0.52,-1.95l5.04,-0.69l4.6,2.48l3.65,2.97l4.4,-0.06l5.89,-2.64l2.03,1.71l0.76,0.19l0.96,-0.88l0.25,-1.66l-0.33,-1.09l-2.22,-3.1l0.16,-0.69l1.62,-1.89l4.51,-2.63l1.57,0.92l8.77,-0.23l4.34,2.29l2.91,0.11l1.24,1.2l4.85,1.65l0.9,3.0l-0.86,0.51l-1.42,-0.61l-1.05,0.18l-0.61,0.82l0.03,1.08l1.45,4.2l1.97,2.64l-0.13,3.64l2.55,5.16l-0.69,6.04l0.99,1.86l2.75,1.54l15.19,1.87l4.18,-0.09l9.03,1.34l2.45,0.84l5.01,3.97l2.66,5.04l5.51,8.24l-1.59,2.98l-1.09,1.01l-2.38,1.36l-4.99,0.98l-1.54,2.44l1.28,2.05l4.31,2.27l2.97,4.55l0.69,4.53l-0.77,0.44l-0.3,0.8l0.71,2.97l1.15,1.47l1.79,0.76l5.38,0.27l3.05,-1.72l4.44,0.63l4.63,0.09l3.78,-0.8l2.31,1.74l0.38,3.78l2.26,4.32l0.55,2.17l1.51,1.4l1.1,0.25l1.15,-0.9l9.63,-0.57l2.15,1.64l4.75,2.16l1.32,1.24l1.11,2.54l3.52,2.1l0.18,1.15l0.63,0.63l6.79,-1.06l5.72,1.82l2.68,-1.41l2.87,2.45l0.68,1.25l1.12,0.28l2.07,-1.57l-0.06,-2.76l3.38,-4.3l2.37,-4.48l0.0,-1.19l-0.55,-1.2l-2.5,-1.84l0.47,-3.0l1.69,-3.05l-0.1,-0.98l5.82,-0.59l14.87,4.51l0.76,4.53l4.01,7.59l1.49,1.51l5.45,2.87l2.28,3.6l2.03,4.37l-0.02,0.81l-1.5,0.87l-1.78,2.41l-1.15,-1.1l-1.61,0.32l-3.11,-0.43l-2.17,0.26l-1.79,-0.73l-0.56,0.3l-0.54,1.58l-3.79,2.1l-3.72,4.94l-1.54,-0.75l-3.61,0.45l-3.95,3.07l-7.09,2.14l-0.31,2.23l1.2,1.36l1.63,0.72l0.22,0.54l-1.46,1.86l-1.22,0.21l-1.11,0.93l-0.99,2.97l0.44,0.87l1.65,-0.14l0.77,0.57l-0.38,2.54l1.46,3.54l1.18,0.6l2.71,0.14l-1.76,3.07l-4.54,3.74l-4.22,-0.24l-2.44,0.35l-2.79,3.53l0.06,3.31l-0.65,2.25l-0.59,0.69l-2.48,0.82l-1.96,-0.95l-1.76,0.3l-3.29,4.59l-1.32,-0.18l-2.1,-2.14l-1.14,-0.26l-1.4,0.48l-2.03,2.84l-2.36,1.84l-1.74,3.0l-0.16,1.64l1.68,1.65l0.37,0.92l0.04,1.23l-1.01,1.38l-0.22,1.56l-2.18,0.92l-1.15,0.99l-0.35,1.2l0.61,1.12l-2.88,1.73l-4.26,1.71l-0.14,-1.43l-1.85,-0.88l-0.89,-1.11l-1.3,-0.12l-2.38,0.43l-0.59,0.89l-1.51,0.46l-11.48,2.43l-2.89,-1.16l-2.25,-0.02l-1.49,1.92l-2.63,0.47l-3.61,-2.59l-0.43,-3.73l-0.56,-1.0l-0.91,-0.43l-1.58,0.26l-2.98,-2.26l-0.01,-6.1l1.41,-1.06l0.37,-0.83l-1.18,-2.71l-1.96,-0.74l-6.26,-0.34l-2.53,1.94l-0.76,2.2l-1.89,1.24l-4.64,1.76l-0.21,0.47l0.76,2.46l-0.2,1.16l0.79,3.21l-0.33,3.89l0.64,2.62l1.13,1.91l0.29,2.24l-1.12,0.78l0.16,1.81l-1.11,3.11l0.66,2.47l-1.04,2.51l0.09,1.89l-0.74,0.16l-2.11,-0.65l-1.71,-1.14l-0.69,0.43l-0.73,1.35l-4.4,-4.16l-0.59,-0.95l1.78,-2.06l0.17,-1.16l-1.89,-3.35l-1.63,-0.58l-0.95,-1.82l-1.73,0.24l-1.37,1.4l-3.37,0.97l-2.19,-2.01l-2.95,-0.42l-0.57,0.33l-0.35,1.63l-4.21,-5.6l-1.68,-0.1l-3.0,0.87l-1.14,-1.46l-1.02,-0.38l-1.57,0.73l-2.31,-0.24l-2.53,1.36l-1.96,-0.61l-1.31,0.98l-2.05,3.5l-2.4,-0.61l-1.16,0.72l-0.49,1.11l-0.29,4.64l0.89,1.21l2.66,1.57l1.94,2.01l2.97,0.21l1.26,2.14l2.78,1.07l0.51,1.66l-0.14,1.51l-0.39,0.5l-0.84,0.13l-2.92,-1.11l-4.03,0.75l-1.43,-0.69l-0.81,0.14l-0.81,1.03l-0.69,5.02l-3.19,-1.95l-2.42,-0.67l-4.35,0.0l-1.02,-1.45l0.25,-2.17l-1.24,-2.71l0.56,-3.75l-0.94,-5.36l-2.51,-2.14l-1.69,-3.07l-1.63,0.22l-1.04,0.8l-2.39,-0.25l-0.36,-1.63l-2.7,-2.34l-1.63,-2.89l-2.74,0.55l-2.35,-0.59l-0.42,-1.13l0.93,-1.58l-0.26,-0.81l-2.69,-2.23l-3.1,-3.4l-0.31,-2.76l-1.12,-1.99l-9.35,-3.58l-1.02,-3.16l-1.91,-2.1l-1.63,-0.48l-5.16,0.4l-0.38,-0.57l-0.02,-1.5l-0.74,-0.38l-1.69,1.2l-5.23,5.87l-0.35,-0.03l1.09,-5.36l-0.84,-2.5l-0.24,-5.35l1.1,-1.52l1.44,-0.25l0.42,-0.89l-0.25,-3.7l-1.76,-3.66l-4.97,-1.4l-1.26,0.02l-4.98,2.53l-0.2,1.5l1.27,1.93l-0.7,1.47l-1.38,0.0l-2.79,-1.47l-2.1,0.59l-0.34,-1.16l0.32,-3.47l1.08,-1.85l2.01,-2.02l0.01,-1.99l2.03,-4.37l0.22,-2.96l-1.4,-2.02l0.39,-1.06l0.9,-0.39Z\", \"name\": \"Th\\u00fcringen\"}, \"DE-BW\": {\"path\": \"M163.28,1160.54l2.55,-3.63l0.03,-2.48l-1.21,-5.03l1.63,-6.56l1.9,-1.57l0.21,-1.76l-0.51,-4.52l1.96,-3.48l0.07,-3.1l0.5,-1.8l2.54,-2.71l1.04,-2.07l-0.26,-4.76l-4.19,-7.4l-0.29,-5.93l0.59,-2.8l0.65,-2.19l1.87,-3.36l0.83,-3.89l6.17,-8.68l1.07,-2.2l1.5,-8.54l3.37,-2.3l1.41,-2.36l0.11,-2.19l-1.14,-3.85l-0.19,-3.58l1.2,-5.5l1.82,-3.81l0.67,-4.07l3.69,-3.38l-0.02,-1.15l-1.13,-3.07l0.01,-5.06l0.8,-4.73l4.06,-6.36l2.73,-1.32l4.2,-4.55l2.52,-2.09l1.55,-2.69l0.56,-3.98l4.59,-0.69l0.67,-0.69l0.42,-2.19l0.98,-1.34l0.81,-0.08l4.35,-2.6l1.25,-2.12l4.43,-12.27l3.03,-5.76l1.81,-2.1l3.18,-1.21l3.22,-3.48l2.09,-3.26l7.22,-14.92l2.96,-18.35l2.25,-1.7l6.86,-8.21l0.35,-1.89l-0.26,-0.45l-2.0,-0.71l3.64,-8.83l-0.69,-5.31l1.34,-3.3l-1.26,-1.91l-4.78,-1.34l0.0,-0.51l1.85,-0.92l0.22,-1.39l-3.54,-9.43l-1.86,-3.11l0.75,-3.31l2.98,-1.24l2.14,0.35l9.32,8.87l4.31,-1.84l0.9,-1.12l0.02,-1.37l-1.84,-8.27l7.1,-1.78l0.11,0.97l1.33,2.44l-0.6,1.82l0.47,1.87l1.45,3.53l1.27,1.48l4.81,2.83l4.12,0.05l1.16,2.34l1.0,0.79l5.85,-0.47l-0.1,1.87l-1.23,2.01l-2.15,-1.48l-2.21,2.23l-0.53,1.57l0.33,4.28l-1.88,1.68l-0.23,2.05l0.32,1.02l3.71,1.3l1.64,-0.94l2.98,-3.57l0.86,-3.07l0.39,1.08l0.78,0.26l2.83,-1.66l0.55,-1.45l-0.66,-2.08l-1.13,-1.69l2.54,-3.04l5.28,-0.13l2.52,0.41l1.07,-0.46l2.19,-2.11l0.62,-0.06l2.4,0.06l1.27,1.46l1.42,0.09l0.33,-0.77l-0.26,-0.99l-2.55,-4.64l-2.42,-3.38l1.23,1.04l0.91,0.18l1.16,-1.34l1.08,0.44l5.5,-1.21l8.0,-0.01l1.16,-1.37l0.68,-2.12l1.37,-1.47l-0.25,-2.59l0.56,-0.74l2.01,-1.02l3.16,-0.26l2.77,-1.23l1.65,1.49l1.08,0.07l2.03,-1.8l-0.61,-2.22l1.16,-6.64l-0.36,-0.77l-2.35,-1.23l-0.81,0.05l-0.7,0.62l-0.77,2.2l-0.71,0.24l0.2,-2.36l-0.57,-1.1l-4.05,-0.9l-1.04,-0.61l0.65,-2.63l-0.73,-2.26l2.43,-2.35l1.06,-0.35l4.7,0.33l3.68,-1.31l5.12,-0.47l5.34,2.51l1.34,0.1l1.59,-0.57l2.79,1.67l2.76,-0.88l1.61,-1.02l0.31,0.85l-0.7,1.4l0.32,2.33l-0.56,1.54l0.2,1.62l-0.81,0.82l0.07,1.37l-0.88,2.42l0.66,1.1l1.86,0.98l1.51,0.16l1.25,-0.6l0.54,-2.57l1.25,-0.67l0.74,-1.29l0.25,2.23l0.97,2.23l1.08,0.61l3.66,-3.82l2.53,-1.31l3.57,4.68l0.28,6.0l3.9,4.43l0.66,1.26l-0.33,1.13l-1.66,2.16l-0.2,3.08l-1.99,2.43l0.01,0.9l1.24,1.01l1.71,-0.4l1.06,-2.53l1.26,-0.52l1.21,-1.71l0.86,-0.39l0.42,0.73l-0.61,1.62l1.69,1.74l0.42,3.24l-0.21,3.36l0.58,4.0l1.37,0.45l7.07,-0.16l0.99,-0.49l3.9,-4.13l0.03,-1.83l-0.77,-1.08l2.32,-2.08l1.27,0.86l-0.62,1.65l0.29,0.99l1.17,0.82l1.66,0.41l-0.73,2.77l1.09,2.93l-1.89,4.49l0.47,0.7l2.35,1.0l2.95,7.23l-1.61,-0.61l-1.2,0.18l-2.04,2.49l-0.26,4.21l0.27,1.12l1.12,1.55l2.03,1.16l-0.71,2.62l1.27,3.56l-0.05,0.81l-0.41,0.16l-1.89,-1.0l-0.64,0.33l-0.24,0.87l0.36,1.23l1.38,1.52l0.09,3.07l1.53,2.46l-1.25,0.73l-0.04,0.69l3.34,2.83l3.74,4.62l0.82,0.15l1.63,-0.85l1.84,1.72l0.05,2.86l-0.96,2.37l-0.47,0.42l-1.52,0.12l-0.39,0.92l0.68,0.8l2.46,1.04l-0.21,1.82l1.81,1.83l-0.27,2.52l2.7,1.31l1.58,0.03l2.23,1.25l1.58,0.18l1.58,3.9l4.1,3.39l2.32,3.3l0.69,1.77l1.24,1.35l0.87,3.02l-2.25,1.57l1.04,1.45l-0.27,5.51l-0.48,1.73l1.08,2.78l-0.48,2.39l-1.44,2.11l0.02,3.78l-0.71,1.33l-0.08,1.59l0.25,1.27l0.76,1.02l2.05,1.13l0.86,0.04l2.2,4.81l-5.06,4.36l-0.19,-1.17l1.12,-3.27l-0.69,-0.89l-1.2,-0.12l-5.52,5.92l-1.95,-3.54l-3.03,-0.19l-2.05,-1.92l-0.98,0.09l-2.23,3.06l-0.26,2.17l1.83,3.64l4.42,3.4l-0.27,0.99l-1.5,0.75l-0.38,0.72l1.29,4.82l-1.27,4.87l0.28,0.99l-4.34,0.45l-1.5,1.66l-0.38,1.86l-9.25,5.65l-0.73,-0.44l-0.5,-2.11l-1.44,-0.72l-2.81,1.81l-3.46,0.78l-1.4,1.41l-1.0,1.88l0.2,1.98l-6.07,8.1l0.86,2.07l1.4,0.31l1.82,4.05l3.09,5.24l1.54,5.25l3.86,17.8l2.64,6.02l0.29,1.82l-0.17,5.41l-0.72,3.17l-2.84,7.96l-1.56,1.64l0.19,1.63l2.24,3.71l-0.37,5.12l-0.89,3.27l-1.1,1.64l0.44,0.79l1.35,0.17l2.35,5.98l-0.72,0.36l-0.87,1.48l-2.26,0.32l-0.96,1.8l2.04,3.28l1.45,0.42l0.22,0.46l0.54,7.52l0.84,2.92l-0.36,1.74l-1.03,0.19l-2.41,-0.64l-0.56,1.24l-0.13,2.07l-0.51,0.64l-1.23,-3.26l-1.03,-0.79l-1.92,-0.05l-2.52,0.69l-5.43,2.31l-2.26,0.03l-2.29,-0.55l-4.23,-1.69l-3.11,1.49l-7.24,6.48l-4.22,2.16l-3.58,-0.9l-1.54,0.75l-0.96,1.51l-4.01,1.08l-5.8,7.98l-27.27,-16.97l-3.94,-0.94l-3.54,-0.0l-1.55,-2.08l-5.4,0.0l-10.92,-1.24l-2.04,0.78l-1.65,1.73l-3.42,1.09l-3.73,0.36l-2.26,-0.59l-2.76,-2.07l-1.33,-1.33l-0.01,-0.53l1.5,-0.35l0.18,-0.68l-2.61,-2.46l-3.2,-1.88l-2.82,-0.17l-0.4,0.28l-0.89,2.86l0.3,0.63l-3.98,0.06l-0.37,-1.74l-1.16,-2.07l1.83,-3.31l-0.65,-1.8l-3.17,-0.39l-2.37,-4.15l-1.47,-0.59l-1.31,1.04l-0.59,3.21l-0.84,0.55l-0.61,-0.46l-0.8,-4.86l-1.94,-0.85l-2.46,-0.14l-1.78,0.95l-0.17,0.49l0.78,1.96l-1.11,0.57l-6.45,1.06l-0.9,0.58l-1.82,3.09l-0.73,2.87l-3.37,2.21l-1.07,1.19l-0.2,1.3l0.64,2.31l-0.58,1.47l0.23,0.52l2.0,0.65l4.72,3.1l1.92,-0.12l4.22,-2.44l4.63,-0.79l3.38,0.92l-0.36,2.25l-0.53,-1.01l-1.68,0.81l0.13,4.66l-0.63,1.89l-0.91,0.3l-2.11,-3.13l-1.84,-1.52l-3.12,0.37l-3.01,1.99l-1.38,3.16l-2.72,0.46l-6.19,-0.03l-4.43,-1.5l-1.15,-2.67l-0.85,-0.89l-3.61,-0.9l-1.9,-0.0l-5.5,0.96l-1.66,1.73l-1.78,0.54l-2.98,1.81l-2.54,2.92l-4.3,0.97l-12.46,0.0l-0.64,-3.04l-0.71,-0.81l-6.51,-0.5l-1.3,-0.66l-0.52,0.14l-3.29,4.58l-1.72,0.98l-8.05,1.68l-2.02,-0.27l-3.56,-1.89l1.22,-0.1l1.14,-1.17l1.29,-3.65l-0.42,-0.53l-2.3,0.26l-4.31,1.3l0.46,-1.47l-0.28,-1.55l-1.73,-2.04l-3.54,-6.31l-1.8,-1.34l-0.56,-4.51Z\", \"name\": \"Baden-W\\u00fcrttemberg\"}, \"DE-HH\": {\"path\": \"M426.9,236.58l0.36,2.82l1.06,0.95l0.26,0.81l-0.72,3.17l-0.4,4.75l-3.09,1.19l-0.66,0.76l0.99,7.48l0.54,0.9l2.65,1.07l3.34,4.96l2.88,1.8l3.39,3.7l0.78,-0.01l0.55,3.01l-3.71,0.0l-1.13,0.37l-1.08,0.71l-2.35,3.23l-5.11,0.35l-1.5,-0.34l-1.48,-1.07l-2.17,-2.77l-2.1,-0.65l-2.98,-2.83l-5.13,1.68l-0.49,0.8l-0.01,1.47l-4.92,2.12l-2.85,-1.43l-3.07,1.18l-0.52,-3.88l-1.3,-1.56l-1.57,0.32l-1.91,2.36l-3.27,-3.01l-1.86,-2.82l-1.12,-3.13l-2.42,-3.3l-0.37,-5.88l4.87,1.1l1.53,-0.56l0.19,-0.57l-1.36,-2.3l-3.68,-2.16l-3.77,-0.48l1.06,-5.36l1.01,-1.38l0.44,-1.91l1.48,0.3l1.92,1.41l-0.31,3.35l0.53,0.67l0.95,0.26l10.92,-8.69l2.32,-0.72l3.25,0.52l1.08,-0.85l1.0,-2.62l0.8,-0.85l1.74,-0.5l1.8,0.23l1.07,-0.57l0.66,-0.71l1.26,-5.25l0.68,-0.84l5.84,0.95l3.32,-2.33l0.77,0.22l-0.1,0.93l-2.23,3.94l-0.53,1.8l0.58,1.18l3.41,2.56Z\", \"name\": \"Hamburg\"}, \"DE-SH\": {\"path\": \"M521.93,110.37l-3.01,0.19l-2.37,-0.4l-0.92,-1.15l0.17,-3.29l-0.71,-1.72l-1.53,-0.55l-2.58,-0.08l-1.19,0.36l-1.02,0.98l-0.94,-1.94l-1.4,0.43l-0.18,-1.6l2.67,-6.66l3.7,-3.62l4.5,-0.77l8.22,3.56l3.15,3.07l6.9,13.05l-11.55,-1.94l-2.06,1.08l0.14,1.0ZM275.98,29.38l3.09,0.96l3.61,0.15l6.81,-2.52l2.18,-0.34l7.74,1.34l7.72,3.18l20.72,4.91l1.48,1.31l1.44,6.04l2.11,0.97l8.71,-0.25l3.55,-2.38l1.46,-0.33l2.05,1.84l1.68,0.19l3.15,-0.52l5.84,-2.98l1.92,-2.35l2.49,-1.09l1.82,-2.67l0.53,5.71l4.88,1.79l5.95,0.32l3.97,1.76l6.47,3.99l1.03,2.93l1.53,1.75l2.64,-0.46l4.46,-1.73l-0.08,-3.54l1.76,-0.12l3.02,1.88l2.15,2.75l1.96,7.15l2.51,3.07l-0.78,0.6l-3.22,-0.94l-2.62,2.3l-1.56,0.58l-0.35,2.13l0.37,0.41l1.44,0.09l2.65,-0.78l2.3,-0.13l1.36,1.82l2.26,-0.81l0.34,0.65l-0.65,2.23l0.55,5.81l-1.04,9.95l-1.58,4.22l-1.2,1.73l-3.1,2.9l-3.86,2.17l-4.18,1.36l-4.07,0.47l-0.35,1.55l4.72,2.62l23.58,-5.66l1.65,0.6l5.56,4.88l-1.76,1.94l0.01,1.99l1.26,4.63l-0.53,2.11l-1.32,2.0l-1.66,1.43l-1.62,0.49l-0.22,0.61l0.57,0.87l-0.53,1.48l0.98,1.06l0.26,1.22l-1.25,3.45l2.61,-0.68l1.85,-2.22l2.31,-5.24l1.95,-6.9l0.81,-0.54l3.77,-0.44l1.47,-0.91l1.95,-2.64l0.96,-0.31l4.02,0.35l2.05,1.03l5.99,4.81l15.41,6.87l8.7,8.24l4.22,1.11l4.8,-0.88l3.37,-2.11l5.58,-5.23l3.17,-2.06l3.3,-1.39l3.72,-0.49l-0.02,0.64l1.7,0.77l1.8,-0.49l2.56,1.51l6.73,-4.15l2.35,0.9l-4.1,4.98l-1.82,-0.92l-0.54,0.51l1.04,2.72l1.66,9.76l-0.72,2.15l0.74,7.67l-0.41,2.74l-1.81,2.46l-0.47,1.47l-11.27,7.36l-4.01,5.11l-1.62,1.05l-4.81,1.41l-0.61,0.54l-1.28,-1.12l-1.14,-0.02l-0.79,0.51l-5.37,7.83l0.03,1.19l1.34,3.32l1.43,2.4l1.98,1.68l2.81,0.92l3.86,-0.36l0.71,0.29l0.61,1.53l0.47,3.51l1.72,0.72l-0.03,4.88l1.7,1.91l3.41,1.11l-0.9,0.74l-2.95,0.49l-0.35,-0.5l0.09,-1.5l-1.81,-0.81l-0.94,0.04l-2.4,1.59l-4.79,4.5l-4.49,2.59l-1.22,2.33l-0.46,2.34l1.16,3.59l0.8,4.36l-1.14,7.7l0.49,0.41l4.29,0.88l4.98,6.34l0.87,0.5l2.2,-0.28l2.63,0.81l2.19,1.9l0.65,1.11l0.1,1.99l0.97,2.34l-0.26,2.44l-1.37,1.15l0.09,2.96l1.28,5.43l-1.05,1.6l0.99,0.44l-1.91,2.38l-0.86,-2.9l-1.15,-0.94l-5.07,0.63l-1.58,-0.6l-1.42,0.39l-0.28,0.77l0.5,3.19l-0.91,2.64l-0.18,2.46l-5.9,4.43l-5.51,1.74l-1.3,3.28l-1.39,-0.33l-1.4,0.21l-2.22,1.33l-0.61,1.13l-0.94,7.86l-2.28,3.96l-2.87,1.21l-3.85,-1.34l-13.9,-8.45l-3.59,-1.38l-2.01,-0.11l-0.67,-3.51l-1.08,-0.26l-3.25,-3.54l-2.94,-1.85l-3.3,-4.93l-2.68,-1.1l-1.23,-7.56l3.0,-1.13l0.66,-0.61l1.22,-8.27l-0.44,-1.36l-0.93,-0.75l-0.41,-2.94l-3.56,-2.72l-0.34,-0.72l2.72,-5.34l0.21,-1.05l-0.54,-0.95l-1.81,-0.08l-2.77,2.21l-5.89,-0.96l-1.22,1.38l-1.63,5.57l-0.62,0.41l-1.89,-0.21l-2.05,0.61l-1.07,1.12l-0.97,2.57l-0.72,0.57l-3.1,-0.57l-2.64,0.85l-10.7,8.57l-0.54,-0.58l0.27,-3.35l-2.24,-1.68l-2.25,-0.31l-0.75,2.27l-1.07,1.51l-1.09,5.5l-4.34,-0.51l-3.51,-1.39l-7.0,-4.55l-3.12,-3.55l-1.12,-5.15l-0.67,-7.4l-1.19,-1.2l-6.06,-3.12l-2.28,-2.09l-2.25,-4.89l-1.53,-5.3l-0.41,-3.62l-3.5,-1.4l-6.15,-5.34l-3.87,-2.37l-3.76,-0.86l-12.38,-0.29l-6.22,-2.43l-1.46,0.78l-0.99,1.56l-1.91,-0.64l-3.36,-2.58l-3.21,-4.0l-7.93,-16.13l3.34,-1.55l1.71,-0.13l2.22,0.61l3.78,2.57l2.21,0.75l2.45,-1.05l0.95,-2.03l0.82,-3.37l0.53,-6.27l-1.21,-1.94l-3.07,-3.22l0.26,-2.84l-0.28,-0.38l-2.59,-0.75l-3.42,0.64l-3.31,1.58l-2.02,1.95l-4.51,-8.88l0.75,-3.21l2.54,-5.53l-0.68,-3.65l0.99,-0.76l5.71,-1.34l1.24,-0.94l3.15,-4.86l1.0,-2.59l-0.45,-0.54l-2.23,0.44l-3.84,3.28l-1.24,0.55l0.4,-1.43l-0.42,-0.54l-11.06,2.29l-3.67,-0.57l-1.64,0.69l-3.2,3.1l-0.94,0.31l-2.4,-0.88l-2.69,-2.46l-1.95,-3.57l-0.26,-4.14l1.22,-1.54l2.56,-1.16l2.91,-0.59l2.26,0.11l0.42,-0.4l-0.3,-1.54l-1.66,-0.41l-1.27,-1.21l-1.45,-0.51l-1.61,1.72l-0.51,-1.12l0.27,-1.72l1.63,-2.78l2.07,0.82l7.9,-2.18l10.73,0.0l2.71,-0.73l2.12,-1.34l4.1,-3.64l3.75,-1.85l1.7,-1.3l0.82,-3.06l0.01,-4.1l-2.6,-4.15l-8.0,-8.66l-1.08,-1.72l-0.59,-1.94l-1.18,-0.89l-2.02,0.07l-3.01,1.16l-0.29,-0.55l3.06,-2.11l0.15,-0.47l-3.41,-9.22l-1.3,-2.42l-2.93,-1.9l-5.29,-4.65l-3.19,-1.62l0.53,-4.12l-1.29,-3.46l-3.22,-6.32l-0.54,-4.38l0.44,-3.88l1.22,-4.53ZM503.71,116.33l3.02,-0.39l0.0,0.31l-3.02,0.08ZM297.88,101.15l-4.1,0.32l-1.81,-0.65l-0.81,-1.42l0.92,-0.67l0.14,-1.19l-1.04,-1.65l2.76,-2.67l3.33,-1.53l3.73,-0.21l3.48,0.92l-0.15,2.08l-1.72,1.69l-2.61,3.89l-2.13,1.1ZM276.27,95.63l-2.62,1.5l-1.94,-0.04l-1.07,-0.95l-0.93,-2.24l0.55,-2.46l3.02,-2.04l5.78,-2.48l0.14,1.24l-0.75,4.01l-2.18,3.46ZM248.68,29.55l5.02,1.3l5.97,-0.3l-3.74,2.69l-1.36,0.39l-6.61,0.0l-1.41,-1.77l-1.96,-0.41l-4.38,2.93l-0.82,5.6l0.33,9.28l-0.74,5.19l-0.47,-1.75l-0.09,-4.41l1.14,-18.44l0.92,-3.58l7.39,-20.85l1.45,-1.83l0.2,0.52l2.48,0.26l0.66,1.71l-0.77,2.08l-3.99,2.31l-1.91,2.89l-1.01,3.44l0.84,3.3l-0.57,5.99l3.45,3.49ZM250.17,2.5l1.58,-1.99l3.13,1.68l-4.56,0.24l-0.15,0.07ZM262.95,30.38l10.9,-0.55l-1.37,1.09l-9.53,-0.53ZM266.82,63.1l-0.7,1.01l-1.13,0.36l-1.53,-0.17l-2.59,-1.28l-2.42,0.92l-3.01,-0.94l-5.35,-3.34l1.72,-3.18l2.13,-2.06l2.55,-1.01l3.19,-0.28l5.33,0.33l2.06,1.27l1.65,2.86l0.0,0.94l-1.89,4.56ZM245.51,60.5l-2.39,3.08l4.9,9.27l1.52,0.94l-0.86,0.74l-3.05,1.1l-2.07,-1.89l-3.65,-5.83l2.7,-5.11l1.67,-1.83l1.23,-0.46ZM245.76,60.4l0.08,-0.03l0.0,0.01l-0.08,0.02ZM199.96,148.11l0.73,0.4l0.17,0.83l-0.2,-0.06l-0.71,-1.16Z\", \"name\": \"Schleswig-Holstein\"}, \"DE-NW\": {\"path\": \"M0.44,657.65l2.31,-1.22l1.09,0.62l2.48,2.71l2.37,-0.22l1.27,-1.43l1.87,-3.92l1.26,-1.45l9.02,-7.1l5.56,-3.02l1.59,-2.06l-0.05,-0.53l-1.72,-1.61l2.62,-1.97l-0.07,-0.72l-2.6,-0.73l-4.69,3.22l-1.94,-1.08l-0.65,-2.65l0.28,-3.41l0.83,-3.03l3.05,-4.22l5.0,-9.27l3.43,-2.67l1.07,-1.48l1.44,-6.85l-1.44,-2.08l1.22,-9.17l-1.17,-8.13l-4.04,-4.78l-6.47,-8.93l-0.39,-1.77l1.64,-5.67l-0.22,-0.49l-6.55,-2.89l-2.07,-2.64l1.27,-4.29l-1.09,-1.4l-3.41,-2.29l-3.59,-0.24l0.06,-1.26l2.19,-2.32l0.17,-3.21l-1.34,-3.24l-2.15,-1.72l0.24,-1.02l1.43,-1.02l4.01,-0.73l5.32,-3.07l3.86,-1.04l7.4,1.66l-1.35,-2.59l-4.44,-4.46l2.62,-1.42l2.93,1.4l3.22,2.59l3.32,1.36l3.84,-0.57l2.1,3.05l3.93,0.7l1.36,0.8l0.27,2.27l0.51,0.34l3.97,-1.32l0.4,-1.76l-0.65,-2.92l5.64,1.67l2.28,-0.02l1.69,-0.8l4.78,-3.68l9.65,-3.3l8.63,-0.27l2.84,-1.5l2.45,-2.89l2.21,-4.03l2.01,-1.45l-0.04,-3.39l-3.24,-3.73l-9.94,-5.23l-0.17,-2.14l0.59,-1.43l3.1,-1.14l2.11,-3.95l1.6,-1.66l1.45,-0.81l6.49,-0.82l1.33,-1.25l2.14,-4.39l1.81,-1.91l4.24,-1.89l2.03,-1.83l3.28,-4.9l4.32,-2.63l0.44,-1.13l2.17,0.05l4.05,-1.73l2.66,-2.21l13.38,-0.56l4.13,-0.91l6.74,-4.99l2.94,-0.74l1.84,-1.1l5.03,-5.24l4.49,-3.76l1.74,-0.49l2.89,0.24l1.61,-2.0l1.44,-4.36l1.17,-0.95l-0.17,-0.91l-1.46,-1.39l-0.34,-1.13l1.16,-4.99l0.83,-0.93l7.51,2.45l0.75,1.71l1.21,6.28l2.91,1.38l6.56,4.15l1.5,1.76l1.6,0.4l6.36,-2.52l0.72,0.14l3.51,4.64l2.76,4.82l0.08,0.67l-3.29,0.56l-0.78,0.68l0.26,2.24l1.31,2.5l-2.88,3.66l0.84,3.4l-2.37,3.47l-0.04,0.82l0.93,1.29l2.43,0.48l0.45,1.69l0.97,0.77l4.33,-0.27l2.14,0.87l0.17,0.54l-2.52,7.21l-4.05,0.69l-2.53,1.17l-2.97,2.71l-0.25,1.06l2.16,5.75l6.29,2.91l5.06,-4.49l1.4,-0.68l3.4,-0.61l3.7,1.26l6.99,-2.67l3.06,-2.22l2.3,-3.13l2.97,-2.63l12.23,3.51l1.01,-0.22l0.87,-0.69l1.68,-3.92l4.88,-3.31l1.68,-2.47l0.59,-2.32l-3.33,-2.62l-0.26,-1.37l-0.08,-14.42l-1.92,-8.07l-1.35,-2.18l-2.9,-2.13l-6.35,-3.01l-1.13,-1.76l-1.71,-5.76l1.58,0.57l2.18,-0.01l2.1,0.74l5.69,-0.78l2.54,-1.51l0.64,-1.22l0.94,-4.47l3.07,-2.52l6.73,-0.09l1.68,-0.35l4.79,-2.36l0.85,-0.01l1.51,0.62l1.55,1.35l2.62,4.84l0.33,2.35l-0.24,3.6l0.57,1.69l-0.38,3.96l0.52,1.65l1.53,0.62l10.17,1.1l3.27,-0.38l3.47,-1.43l6.69,-1.56l0.87,-1.28l1.46,-4.61l1.41,-2.78l2.54,-2.64l5.35,-2.85l1.1,0.26l1.6,2.24l1.96,0.93l-0.72,1.89l-1.76,1.75l1.86,6.84l-3.14,5.11l-1.73,3.76l-2.64,1.84l-2.94,-0.22l-1.12,0.33l-1.47,2.99l-1.24,8.79l0.45,1.4l0.86,0.8l7.4,2.55l-2.75,2.07l-0.43,0.97l0.8,3.78l-2.42,-0.08l-3.08,0.89l-0.26,0.52l1.89,5.12l-1.08,3.37l0.65,0.62l6.37,-0.77l6.88,0.96l0.59,0.38l-0.2,3.39l0.96,0.97l2.62,1.13l0.97,1.39l0.11,0.85l-1.26,3.57l2.17,6.32l-0.47,1.47l-1.59,1.44l-0.54,2.29l1.44,1.14l3.49,1.47l0.68,-0.19l0.73,-1.61l1.07,-0.33l3.85,1.64l-1.16,5.19l-1.84,2.29l0.05,0.56l1.01,0.29l3.74,-0.34l2.15,1.05l1.1,3.31l-1.58,5.77l0.29,0.52l1.18,0.24l3.22,-1.06l4.43,0.17l4.49,-1.08l-2.02,3.85l0.47,1.05l1.67,0.64l-0.89,1.36l-0.09,3.65l-1.73,4.7l-2.65,2.21l-0.56,1.74l-0.99,1.38l0.2,5.44l-0.62,1.8l0.26,1.82l-1.44,1.82l-0.28,1.54l0.21,2.03l0.79,0.92l1.6,0.04l3.59,-1.12l-1.58,2.44l-6.95,2.31l-1.41,0.98l0.06,0.79l1.98,1.74l-1.83,5.92l-2.42,2.84l-1.38,2.76l-7.1,4.86l-1.12,4.69l-1.78,0.04l-3.76,2.82l-4.2,-0.7l-2.14,-2.02l-0.01,-3.97l-0.7,-1.08l-2.91,-1.26l-1.96,-1.49l-1.8,-0.59l-1.53,0.8l-4.09,1.08l-5.1,2.57l-0.7,0.92l-0.3,1.76l1.43,2.62l0.43,4.54l0.55,0.48l2.08,0.32l0.55,0.6l-1.16,2.82l-4.08,0.22l-3.67,2.36l-4.5,-1.09l-3.65,1.0l-4.4,0.37l-4.63,1.79l-0.91,1.6l-1.86,1.26l-0.61,1.56l-5.38,6.1l-1.84,4.3l0.35,0.85l1.56,1.31l0.72,2.19l1.88,0.7l1.22,-0.33l1.16,-1.71l4.44,-0.91l2.25,-1.64l0.93,-0.06l-0.31,1.99l1.16,0.9l1.93,9.22l0.06,1.87l-5.5,7.27l1.02,3.79l-4.11,2.61l-3.29,-0.84l-10.05,0.04l-0.38,0.28l-0.39,1.6l1.63,3.32l-0.25,1.99l0.96,4.46l-1.65,2.29l-1.7,3.81l-1.23,0.43l-0.7,0.84l-2.09,4.64l-0.31,4.11l-1.84,-0.11l-1.91,1.25l-3.02,3.16l-0.17,2.09l-2.79,1.97l-4.07,-0.01l-1.64,-2.75l-2.29,0.02l-6.68,6.85l-1.94,1.4l-1.01,2.44l-5.32,4.99l0.01,0.93l0.82,0.79l0.14,1.12l2.48,2.0l0.63,1.16l-0.78,5.17l-1.89,1.09l-1.1,2.16l-3.68,-1.84l-3.44,1.17l-0.58,-2.5l-1.66,-2.95l-4.16,-5.44l-0.96,-1.85l0.28,-4.52l-1.38,-5.41l-1.0,-0.26l-1.97,0.82l-5.44,-5.32l-2.69,-0.96l-1.09,-0.8l1.04,-4.31l0.32,-2.22l-0.29,-0.44l-5.7,-1.59l-1.5,0.38l-3.21,3.05l-0.3,0.96l0.22,4.99l1.23,3.18l-0.13,2.43l-2.86,-0.76l-2.5,2.69l-3.62,2.22l-0.08,0.62l2.17,2.64l-0.2,1.96l-0.46,0.17l-0.47,-0.59l-0.83,0.02l-1.51,2.27l-4.36,1.91l-1.46,2.67l-2.86,-0.1l-3.95,2.19l-8.1,2.26l-3.62,-0.31l-2.71,0.84l-0.75,1.13l0.41,0.77l-0.09,3.71l-0.85,1.69l-0.16,2.01l-2.96,2.16l-5.55,1.53l-5.36,-0.39l-0.92,-1.84l-1.95,-0.67l-0.55,0.45l-1.02,2.49l-2.98,2.73l-0.83,0.26l-2.57,-0.74l-1.51,2.39l-0.86,0.35l-1.85,-0.9l-1.44,-0.11l-6.19,4.08l-5.82,1.82l-2.63,3.93l-2.21,0.66l-0.63,0.63l0.4,4.13l-0.22,2.97l-1.23,1.98l-1.7,0.09l-1.1,-0.56l-2.13,-3.25l-0.78,-0.03l-5.4,2.45l-0.11,2.78l-0.83,2.75l0.3,0.62l2.18,1.5l0.36,4.72l1.66,3.19l0.03,2.06l-7.52,2.19l-1.38,-0.28l-1.2,-1.51l-2.03,-1.4l-0.99,0.12l-2.58,1.74l-0.89,0.0l-0.27,-0.05l0.58,-1.57l-0.33,-0.73l-2.4,-1.44l-1.43,-0.38l-5.85,1.39l-4.67,3.44l-1.97,0.73l-1.09,-2.62l-2.26,-1.43l-1.56,-2.18l-1.13,-0.24l-0.87,0.76l-0.08,1.41l3.4,5.79l-2.45,1.28l-2.03,0.01l-0.11,-0.84l-3.36,-5.86l-0.12,-1.66l1.36,-5.66l0.08,-2.63l-0.46,-0.77l-0.77,-0.25l-1.24,-2.7l-0.28,-1.28l0.21,-1.03l1.01,-1.01l-0.26,-0.68l-5.92,-1.06l-1.96,-1.01l-4.72,1.26l-2.05,-2.81l0.62,-1.05l-0.32,-0.6l-1.61,-0.3l0.6,-1.86l-1.47,-1.84l1.62,-2.54l5.19,-3.81l1.96,-3.47l-0.19,-1.2l-0.38,-0.31l-6.69,-0.16l-1.82,-0.96l-0.92,-1.79l1.0,-0.62l0.12,-0.56l-5.98,-9.16l-1.93,-1.96l-2.03,-0.26l-3.8,1.05l-0.97,-0.11l-0.28,-0.94l0.3,-3.12l-1.77,-1.24l0.36,-3.0l-1.64,-1.67l-0.94,-2.47l1.23,0.13l1.52,-1.51l0.53,-2.01l-0.3,-2.63l0.75,-1.36l1.16,-0.66l2.42,0.04l1.16,-1.43l0.65,-2.97l-0.81,-3.22l0.86,-2.38l-0.25,-0.49l-3.15,-1.1l-2.87,-2.11l-0.36,-3.25l0.96,-2.74l-0.64,-1.12l-3.42,0.42l-4.1,-1.02l-4.71,1.81l-0.11,-3.56l-1.5,-4.46l-0.52,-3.35Z\", \"name\": \"Nordrhein-Westfalen\"}, \"DE-SN\": {\"path\": \"M649.01,765.4l-0.3,0.43l-1.35,0.24l-5.18,3.77l-3.09,5.6l-3.02,3.16l-0.31,2.5l-1.87,2.4l-0.6,1.63l-0.31,2.84l0.86,4.64l-1.08,0.78l-1.34,-0.17l-0.86,-1.34l-1.85,-6.9l-2.46,-2.85l1.27,-1.56l-0.3,-1.65l-1.03,-0.57l-4.05,-0.47l-0.96,-0.85l-0.3,-3.6l-0.61,-1.58l-2.03,-1.52l-4.7,-0.4l-0.85,-1.27l-2.79,-0.81l-2.12,0.03l-5.2,-3.25l-0.69,-5.41l-2.12,-1.47l-2.07,-3.22l-1.06,-0.4l-2.34,0.24l-0.59,-0.96l1.12,-1.39l2.37,-1.07l0.38,-1.82l1.03,-1.45l-0.25,-2.33l-1.85,-1.93l0.75,-2.47l0.99,-1.4l2.32,-1.79l2.03,-2.84l1.66,-0.02l2.01,2.1l1.91,0.25l1.3,-1.11l2.11,-3.51l1.27,-0.26l2.19,0.96l2.84,-0.95l0.91,-1.07l0.69,-2.41l-0.13,-3.07l2.59,-3.29l6.43,0.03l3.71,-2.69l1.23,-1.38l1.99,-3.48l-0.18,-0.56l-4.09,-0.79l-1.2,-3.02l0.31,-2.79l-1.33,-1.02l-1.43,0.18l0.78,-2.59l0.79,-0.69l1.43,-0.36l1.74,-2.44l-0.4,-1.08l-1.72,-0.8l-1.03,-1.16l0.09,-1.14l6.97,-2.11l3.87,-3.03l3.31,-0.4l1.13,0.78l0.78,-0.11l3.92,-5.09l3.73,-2.05l0.74,-1.55l1.53,0.58l2.22,-0.25l3.24,0.43l1.4,-0.33l1.41,1.17l2.19,-2.66l1.75,-1.17l-0.01,-1.37l-2.07,-4.47l-2.37,-3.75l-5.64,-3.04l-1.21,-1.22l-3.97,-7.51l-1.03,-4.92l-15.19,-4.61l-6.42,0.62l-3.95,-0.78l-0.56,-0.7l-0.42,-2.69l-2.18,-2.1l-0.84,-1.68l0.44,-4.14l-0.3,-0.43l-2.74,-0.81l-0.03,-0.8l1.42,-2.71l-0.27,-5.11l-0.44,-1.79l-1.81,-2.46l-0.13,-3.11l-0.78,-2.82l0.41,-1.59l1.4,-2.2l2.23,-0.48l0.73,-0.71l0.52,-3.15l-1.6,-5.06l-0.25,-6.12l-0.88,-1.86l-0.23,-3.1l3.37,-3.7l0.47,-1.96l0.0,-7.18l2.8,-2.41l0.81,-2.61l2.91,1.31l3.21,0.36l5.79,-2.61l7.21,-0.74l0.74,-0.48l0.85,-4.22l0.62,-0.26l7.6,0.32l1.46,0.92l9.35,-1.64l0.82,0.81l1.32,-0.04l2.25,-1.9l1.73,-3.17l1.24,-0.71l3.43,0.48l3.16,1.24l1.97,-0.95l5.13,-4.29l0.85,-1.28l2.37,-0.23l0.96,2.06l1.38,1.03l4.83,1.87l1.67,1.7l1.25,-0.23l1.7,-1.16l0.45,0.18l2.71,2.63l2.92,0.94l2.68,3.31l1.44,1.01l1.12,0.35l1.2,-0.53l2.87,2.31l-0.35,4.04l1.08,1.5l1.96,1.19l1.31,4.82l-0.23,1.31l-1.81,1.66l1.02,3.05l-0.17,3.92l-0.65,1.9l-1.73,2.24l0.24,1.76l0.97,1.78l0.88,0.08l1.39,-1.74l0.85,0.13l0.77,-0.94l1.42,0.51l1.68,2.21l10.91,-3.64l2.47,-1.82l1.97,-0.22l4.48,2.21l2.18,2.16l2.41,1.63l1.59,2.39l1.37,0.65l2.23,-0.36l5.8,1.72l14.92,1.15l16.88,-2.09l2.32,0.66l1.02,-0.36l7.38,-10.97l1.55,-3.64l0.21,-2.52l0.52,-1.07l3.79,-4.99l1.16,-1.06l3.86,-2.14l5.98,-1.45l4.59,0.6l3.43,1.27l3.6,2.26l3.88,-0.91l12.92,-6.51l4.17,-1.18l3.99,0.3l6.66,3.21l4.06,0.21l0.35,1.5l2.33,2.38l6.35,2.15l4.3,2.76l6.82,2.44l3.21,2.99l0.91,1.96l-0.79,2.0l1.4,13.84l2.12,4.39l2.23,2.64l1.37,2.92l-0.49,4.44l0.67,1.03l-1.6,3.12l-1.34,4.23l-0.8,4.39l-0.3,5.9l-1.95,2.94l-0.48,6.27l-9.28,22.85l-3.45,3.84l-1.43,2.35l-0.07,3.03l-1.53,4.08l-1.73,2.71l-3.45,0.31l-3.51,-0.8l-5.13,-3.62l-3.31,-0.95l-0.37,-0.88l0.32,-2.62l2.23,-5.98l-0.53,-1.98l-1.72,-0.28l-5.21,2.17l-0.72,-0.57l2.41,-5.84l-0.12,-3.98l-2.02,-2.84l-1.27,-1.01l-2.72,-0.72l-1.1,-0.77l-0.84,-1.17l-1.12,-3.17l-0.74,0.01l-0.8,2.02l-0.88,0.46l-3.46,-0.2l-2.84,1.22l-1.81,-0.53l-2.04,-2.46l-3.65,-1.2l-3.31,0.49l-2.68,2.68l-1.36,4.43l-1.06,1.54l0.11,0.56l1.31,0.82l3.27,0.43l1.42,0.58l-0.74,0.7l-0.09,1.63l2.61,2.79l3.76,1.16l2.33,1.36l-0.53,3.45l-2.63,2.26l-7.54,-0.59l-3.64,0.74l-4.2,4.95l-15.18,6.98l-5.32,-0.34l-2.21,0.49l-3.48,3.37l-3.18,0.06l-0.97,1.26l-0.41,1.5l0.3,3.2l-0.54,0.77l-1.12,0.21l-2.79,1.74l-1.63,0.33l-4.53,-0.5l-2.22,0.24l-5.53,1.73l-8.77,-0.05l-4.66,0.9l-4.02,2.43l-0.15,0.51l1.08,2.26l-0.34,1.87l-2.81,2.79l0.34,2.34l-4.74,4.72l-1.59,0.4l-1.98,-0.97l-2.51,-3.68l-1.72,-0.5l-0.96,1.41l-3.77,2.73l-1.56,4.03l-1.75,0.89l-3.17,-1.8l-2.33,0.08l-3.24,8.73l-1.35,2.46l-2.23,1.67l-5.03,-0.29l-4.64,1.29l-3.43,-1.08l-1.77,0.82l-1.41,9.24l-4.11,4.32l-3.09,-0.17l-9.9,-5.78l-1.24,0.23l-1.8,1.08l-3.3,-0.14l-1.72,0.6l-1.39,1.34l-3.17,4.34l-1.08,0.13l-5.28,-0.96l-7.35,0.55l-4.04,1.19l-3.7,3.2l-0.83,2.25l0.19,1.53Z\", \"name\": \"Sachsen\"}, \"DE-HB\": {\"path\": \"M265.62,310.84l0.8,0.18l2.21,-0.58l2.68,1.7l7.17,2.71l2.14,-0.54l3.22,0.01l0.46,1.58l2.72,1.87l4.48,0.39l3.54,3.03l4.41,1.97l1.4,-0.61l1.22,-3.12l0.71,-0.29l3.36,3.83l-1.42,1.53l-0.27,0.98l0.45,1.13l2.36,2.53l0.29,0.79l-1.03,1.9l-0.6,4.65l-1.38,1.52l-3.93,2.76l-4.56,-3.57l-0.63,0.2l-0.16,1.47l-1.64,0.57l-1.7,-0.26l-5.2,-3.2l-5.28,1.06l-1.19,-0.22l-0.2,-5.36l-4.74,-5.33l-1.51,-2.32l-0.64,-4.79l-1.4,-2.83l-1.0,-0.75l-3.06,0.06l-2.31,-1.59l-3.92,-1.6l-1.38,-3.36l2.55,-0.04l2.99,1.94ZM265.89,246.05l2.3,0.41l4.15,-0.11l-1.05,2.45l2.13,7.99l-0.12,3.08l-1.59,2.74l-1.99,1.87l-0.96,-1.63l-1.38,-0.18l-1.48,-2.56l0.82,-4.82l-4.85,-10.73l4.02,1.48Z\", \"name\": \"Bremen\"}, \"DE-SL\": {\"path\": \"M65.91,909.17l-0.21,-2.27l-0.64,-1.35l-1.75,-1.75l-9.12,-4.58l-1.4,-0.2l-2.68,1.59l-1.32,0.13l-0.3,-5.31l0.58,-4.47l13.56,-1.25l11.46,0.51l6.25,-2.86l2.28,0.21l1.99,-0.4l14.47,-6.69l7.94,-5.02l2.9,1.39l0.9,-0.21l1.77,-1.34l7.03,3.84l6.38,0.37l2.1,2.07l4.93,3.5l3.13,-0.28l2.91,-1.77l0.07,2.19l1.71,4.13l0.25,4.07l0.25,0.54l1.04,0.37l0.18,2.17l-2.75,2.03l-1.93,2.49l-0.92,0.59l-0.52,1.05l0.61,2.29l4.07,4.98l-0.06,1.61l1.1,0.66l4.87,0.83l2.31,0.87l0.81,0.47l0.41,1.05l-0.66,1.86l0.39,1.64l-0.76,1.28l-2.06,1.89l-0.56,2.68l-1.52,1.79l-0.72,3.26l-1.16,1.67l-2.17,0.39l-0.94,2.31l0.89,4.92l5.38,5.51l1.34,0.07l-1.28,0.79l-1.6,3.66l-3.65,0.96l-2.06,3.29l-3.11,-1.31l-8.4,-0.08l-2.94,-1.27l-3.73,-2.72l-0.73,-0.14l-1.33,1.32l0.28,2.08l-2.64,1.67l-1.83,-1.45l-1.08,-3.94l0.05,-5.24l-0.38,-0.4l-2.03,-0.1l-6.04,-3.43l-1.22,-0.22l-2.9,0.28l-4.03,-0.92l-1.17,0.24l-0.85,2.58l1.07,4.71l-1.5,2.0l-0.98,0.23l-3.85,-1.4l-4.29,-0.04l-0.96,-0.41l-1.12,-1.87l0.74,-3.56l-0.61,-2.58l-0.8,-0.29l-1.52,0.89l-1.59,-5.31l-2.22,-1.29l-0.16,-2.82l-8.1,-8.24l-0.55,-1.53l0.39,-1.0l1.84,-0.33l0.42,-1.49l-0.42,-1.04l-5.23,-5.77Z\", \"name\": \"Saarland\"}, \"DE-BY\": {\"path\": \"M307.22,810.29l0.93,-1.11l0.93,-0.0l0.77,-0.57l0.39,-4.33l0.83,-1.29l3.71,-0.97l5.1,-2.38l3.9,2.06l-0.87,1.83l0.88,0.4l2.16,-1.42l1.77,-2.09l0.49,-2.5l3.28,-1.03l9.66,0.69l4.6,2.37l1.46,2.89l1.6,1.93l2.33,0.38l1.64,-0.24l6.19,-2.67l1.1,-1.6l-0.49,-3.9l1.7,-3.83l-0.62,-1.03l-2.08,-0.36l-0.3,-0.45l0.99,-4.18l-0.16,-4.14l1.86,0.47l1.06,-0.54l1.44,1.58l2.46,-0.45l1.71,0.78l1.53,-0.05l4.99,-1.68l0.44,-0.73l-0.68,-1.56l0.04,-0.97l1.4,-3.0l0.6,-0.61l4.05,-1.67l1.68,-1.14l1.07,-1.32l-0.5,-6.57l2.3,-8.32l1.09,-1.7l1.84,-0.72l2.59,2.84l1.17,0.44l2.05,-0.14l5.98,-2.33l6.14,-3.63l2.02,-1.76l1.24,-2.01l3.14,-5.61l1.02,-2.96l5.28,-5.92l1.14,-0.81l0.06,1.49l0.82,0.76l5.42,-0.37l1.14,0.34l1.64,1.79l1.26,3.46l9.38,3.61l0.79,1.53l0.03,2.15l0.42,0.9l3.15,3.46l2.58,2.09l-0.78,1.97l1.0,2.0l2.54,0.51l2.34,-0.63l1.45,2.7l2.62,2.24l0.23,1.41l0.55,0.57l2.85,0.25l1.07,-0.8l1.21,-0.17l1.24,2.72l2.45,2.06l0.84,4.96l-0.62,3.33l1.31,3.27l-0.33,1.79l0.61,1.37l1.09,1.11l4.38,-0.02l2.29,0.64l3.39,2.0l0.66,-0.12l0.41,-0.6l0.49,-4.86l0.53,-0.61l1.76,0.7l3.89,-0.76l3.03,1.12l1.21,-0.2l0.8,-0.98l0.11,-2.29l-0.71,-1.74l-2.78,-1.07l-1.4,-2.24l-2.95,-0.2l-1.82,-1.92l-3.28,-2.34l0.64,-5.11l0.52,-0.38l1.91,0.66l0.95,-0.19l2.95,-4.32l2.07,0.58l2.61,-1.38l2.28,0.25l1.43,-0.71l1.96,1.84l3.27,-0.87l1.2,0.05l3.27,4.78l1.11,0.95l0.8,-0.36l0.4,-1.67l2.5,0.36l1.6,1.75l0.97,0.33l3.7,-1.06l1.28,-1.36l1.1,-0.25l0.79,1.73l1.46,0.39l1.77,3.1l-1.98,2.7l0.8,1.8l4.81,4.56l0.63,-0.1l1.06,-1.78l1.25,1.01l2.31,0.72l1.39,-0.29l0.39,-0.89l-0.17,-1.51l1.04,-2.58l-0.67,-2.41l1.11,-3.08l-0.18,-1.68l0.91,-0.39l0.23,-0.64l-0.33,-2.47l-1.15,-1.96l-0.61,-2.54l0.35,-3.75l-1.29,-6.67l4.37,-1.63l2.01,-1.32l0.93,-2.38l1.23,-0.61l0.79,-0.97l6.0,0.33l1.43,0.46l1.01,2.12l-1.77,1.76l-0.24,5.16l0.32,1.54l3.43,2.62l2.21,0.0l0.9,4.62l3.93,2.85l0.9,0.14l2.4,-0.62l1.34,-1.87l1.9,0.03l3.09,1.18l11.65,-2.47l1.71,-0.52l0.59,-0.89l2.04,-0.35l0.92,0.08l0.71,0.99l1.8,0.86l-0.01,1.31l0.84,0.34l4.48,-1.83l3.19,-1.89l2.41,-0.25l0.64,0.27l2.0,3.16l1.97,1.3l0.39,4.98l0.44,0.58l5.42,3.38l2.28,0.02l2.56,0.75l0.27,0.47l-2.13,0.1l3.04,4.05l0.18,3.84l-1.61,1.33l-1.26,2.27l1.17,1.97l4.81,3.01l3.4,4.24l0.71,1.73l0.27,2.19l-0.67,3.42l0.07,2.51l0.98,2.48l4.32,3.38l0.8,1.38l0.54,3.92l15.15,8.22l1.4,1.39l3.72,0.48l1.45,1.39l0.23,1.99l-0.67,2.07l0.08,2.03l5.35,2.89l0.48,0.86l-0.3,2.79l-0.76,2.26l-2.26,4.16l-0.63,2.04l-1.59,-0.49l-0.5,0.28l-0.61,2.25l-0.34,5.5l-1.42,1.43l-3.99,1.7l-1.38,2.76l1.53,3.62l2.11,3.04l2.96,2.34l4.54,2.24l0.71,1.43l0.07,1.83l-0.8,1.77l0.89,0.95l-0.33,1.62l1.0,1.21l2.39,1.36l0.94,1.04l0.64,1.54l0.88,5.15l2.06,4.39l1.28,1.27l2.6,0.59l0.41,7.39l0.49,2.45l1.15,2.29l2.1,1.78l4.46,2.1l1.88,1.95l3.19,7.16l1.78,1.83l2.02,0.72l5.89,0.85l1.85,-0.25l0.34,-0.48l-0.35,-1.58l0.88,-0.28l3.6,0.99l1.58,0.86l4.11,4.03l1.69,0.74l1.12,4.03l3.16,3.77l1.25,0.73l9.11,12.41l2.86,5.48l2.92,1.76l6.05,0.33l1.85,0.71l1.12,0.96l2.98,4.01l4.12,4.21l1.04,2.46l0.06,4.13l1.47,2.5l6.03,4.99l2.35,1.14l0.55,-0.22l1.86,-4.08l1.12,-0.52l2.05,0.44l5.02,3.3l1.62,-0.11l0.23,2.53l1.04,2.71l1.57,2.41l1.73,1.74l1.97,0.96l3.7,0.6l1.23,0.69l2.2,3.46l4.74,9.46l1.8,1.89l-2.82,5.95l-0.26,1.52l0.71,0.38l0.97,1.86l1.3,0.86l-1.02,1.09l-0.25,1.77l0.51,4.88l-0.37,4.53l-2.67,6.14l-1.39,1.02l-2.62,0.46l-0.86,1.78l-0.74,3.35l-3.7,-1.68l-1.54,-2.32l-3.44,-2.18l-10.33,-2.86l-3.38,0.46l-3.34,1.29l-1.55,2.19l0.76,3.89l0.93,1.51l0.19,1.15l-2.06,5.56l-0.19,7.05l-0.88,1.78l-0.75,3.87l-1.3,2.18l-9.52,8.34l-3.21,1.8l-13.44,2.35l-10.26,4.08l-5.33,4.69l-3.18,1.79l-1.62,1.58l-5.03,0.98l-1.61,0.84l-4.04,5.35l-3.86,2.72l-1.84,2.7l-1.73,0.39l-0.82,1.24l-0.25,2.14l0.51,2.07l1.83,3.33l6.91,7.26l1.42,3.17l0.83,3.34l0.85,1.26l2.44,1.51l4.33,4.02l3.29,7.67l2.45,3.54l-6.18,9.97l-0.57,1.23l-0.39,2.77l-2.43,3.82l0.05,0.5l1.8,1.74l5.48,1.03l4.08,-1.34l1.31,0.21l2.26,2.24l2.63,5.27l0.27,1.8l-0.27,3.34l-1.46,3.59l-1.86,2.16l0.17,3.36l-1.17,2.8l0.08,3.47l0.82,3.45l-2.69,3.19l-1.34,0.53l-2.22,-1.46l-2.64,0.73l-0.89,-0.36l-4.73,-3.59l-5.34,-5.64l-2.52,-0.64l-2.21,-1.8l-0.48,-3.33l1.1,-3.13l2.54,-1.26l0.1,-0.65l-4.5,-3.59l-1.36,-1.67l0.93,-2.32l-0.42,-0.55l-1.6,0.2l-5.54,-1.42l-3.59,0.01l-3.49,0.85l-1.96,0.97l-4.4,3.93l-1.43,0.64l-3.87,0.34l-1.27,-0.63l-3.59,-3.18l-2.27,-5.32l-1.83,-0.3l-5.37,1.71l-5.74,-1.19l-2.14,0.31l-3.08,1.28l-0.75,-0.67l-0.46,-1.38l0.92,-1.78l0.88,-3.32l-0.45,-0.56l-2.66,1.27l-4.1,2.99l0.59,2.19l2.01,2.1l0.37,4.44l-0.41,2.1l-2.67,3.44l-23.18,-0.86l-8.37,1.73l-1.11,0.66l-1.07,2.49l-0.75,0.25l-5.42,-1.11l-8.02,-0.05l-6.13,-0.91l-3.45,3.03l-1.92,6.21l-1.67,1.86l-2.0,0.8l-4.48,0.74l-4.61,-1.02l-2.38,0.54l-4.83,5.46l0.2,0.65l2.04,0.91l0.27,0.78l-0.69,1.17l-1.4,0.6l-4.18,0.1l-1.94,0.6l-4.71,5.08l-1.97,0.91l-1.86,-0.21l0.19,-3.57l-2.59,-1.26l-2.61,0.73l-6.36,4.42l-1.8,0.54l-10.08,-0.14l-1.17,-0.69l-0.76,-1.49l0.63,-1.89l-0.44,-1.89l-4.89,-5.31l-5.07,-2.38l-0.42,-0.72l2.87,-1.95l0.9,-1.08l-0.07,-0.57l-3.34,-2.32l-1.67,-0.13l-5.34,2.21l-2.76,0.33l-0.63,-0.19l-1.31,-1.93l-12.95,-4.91l-2.51,-0.05l-1.69,1.11l-1.96,2.74l-1.12,0.91l-5.04,-0.45l-2.59,-1.72l-0.14,-1.04l0.96,-2.14l-0.59,-1.77l-0.73,-0.33l-2.4,0.6l-1.72,1.0l0.19,1.39l1.44,3.1l-1.1,7.01l2.27,1.97l0.48,1.19l0.42,4.74l-0.87,3.16l-1.4,2.87l-1.56,2.1l-3.99,2.04l-2.78,5.32l-3.58,4.02l-4.33,2.66l-2.07,0.81l-7.61,0.93l1.08,-2.1l1.5,-0.56l0.74,-0.76l-0.0,-2.86l1.74,-5.25l0.09,-2.72l-2.28,-1.39l-4.31,0.79l-1.64,1.61l-1.83,-0.68l-2.6,1.2l-0.76,-0.75l-0.83,-4.3l-0.89,-1.13l2.04,-1.69l0.43,-1.82l-0.85,-1.69l-4.87,-7.14l-0.5,-0.14l-2.64,1.57l-0.75,-0.45l-0.18,-1.65l-0.89,-1.95l-2.23,-2.58l-0.26,-2.29l-0.65,-0.27l-1.13,0.89l-1.32,0.26l-2.81,-0.22l-3.14,-1.08l-2.31,0.95l-1.74,-0.9l-0.56,-5.03l-1.3,-1.36l-1.56,-0.52l-1.63,0.2l-1.53,0.85l-2.13,2.5l-2.62,4.82l-2.48,1.19l-6.16,0.11l-5.06,-1.39l5.43,-7.55l3.94,-1.04l1.04,-1.55l1.34,-0.65l3.54,0.93l4.5,-2.32l7.24,-6.48l2.78,-1.33l3.85,1.66l2.37,0.58l2.46,-0.02l3.51,-1.16l2.12,-1.18l2.35,-0.65l1.66,0.04l0.49,0.39l1.53,3.79l0.66,0.05l1.04,-1.44l0.33,-2.77l2.75,0.84l0.97,-0.74l0.44,-2.16l-0.84,-2.98l-0.56,-7.62l-0.49,-0.88l-1.25,-0.2l-1.94,-2.76l0.75,-1.34l2.32,-0.37l1.82,-2.33l-2.54,-6.4l-0.45,-0.48l-1.23,-0.18l1.01,-1.19l0.94,-3.39l0.4,-5.37l-0.19,-0.85l-1.31,-1.45l-0.95,-2.44l0.17,-0.77l1.31,-1.06l2.91,-8.16l0.74,-3.29l0.16,-5.6l-0.33,-1.99l-2.62,-5.95l-3.86,-17.77l-1.56,-5.32l-3.15,-5.36l-1.91,-4.2l-1.42,-0.37l-0.65,-1.22l5.96,-7.86l-0.13,-2.22l2.1,-2.89l3.32,-0.7l2.86,-1.71l0.6,0.71l0.41,1.92l1.58,0.58l9.54,-5.82l0.52,-2.07l1.17,-1.33l5.1,-0.69l-0.63,-1.34l1.1,-3.19l0.18,-1.82l-1.3,-4.65l1.69,-1.08l0.51,-1.4l-0.6,-1.03l-4.03,-2.99l-1.65,-3.18l0.14,-1.7l2.05,-2.85l2.25,1.94l2.93,0.15l1.55,3.14l0.85,0.51l5.8,-6.01l0.74,0.49l-0.58,0.47l-0.6,3.15l0.87,1.44l1.75,-0.85l4.25,-3.96l-2.32,-5.64l-2.99,-1.26l-0.79,-1.81l0.06,-1.34l0.73,-1.43l-0.03,-3.7l1.4,-1.96l0.54,-2.62l-1.08,-2.87l0.47,-1.61l0.26,-5.81l-0.97,-1.03l1.98,-1.02l0.16,-1.28l-0.91,-2.88l-1.27,-1.39l-0.71,-1.79l-2.41,-3.42l-4.06,-3.34l-1.6,-3.93l-8.0,-2.67l0.39,-2.26l-1.89,-2.01l0.2,-1.83l-3.05,-1.64l1.88,-0.36l1.02,-1.86l0.59,-3.02l-0.33,-1.69l-2.28,-2.05l-2.18,0.84l-3.67,-4.55l-3.12,-2.49l1.02,-0.42l0.3,-0.9l-1.56,-2.51l-0.15,-3.26l-1.4,-1.55l-0.25,-0.85l0.07,-0.29l2.17,0.96l0.89,-0.7l0.09,-1.26l-1.25,-3.43l0.71,-2.7l-0.48,-0.84l-1.84,-0.86l-0.87,-1.2l0.03,-4.9l1.58,-1.91l0.81,-0.12l1.86,0.65l0.63,-0.71l-3.11,-7.81l-2.67,-1.31l1.12,-1.8l0.77,-2.54l-1.1,-3.06l0.79,-1.94l-0.13,-1.15l-0.63,-0.59l-1.45,-0.21l-0.84,-0.56l0.38,-2.61l-2.25,-1.19l-2.36,1.88l-0.47,0.83l0.82,1.5l0.01,1.21l-3.6,3.81l-0.69,0.37l-7.69,-0.02l-0.62,-10.2l-1.67,-1.85l0.61,-1.41l-0.68,-1.3l-1.27,-0.14l-1.73,2.12l-1.45,0.67l-0.95,2.44l-1.04,0.28l-0.7,-0.57l1.99,-2.69l0.03,-2.69l1.78,-2.46l0.42,-1.66l-0.81,-1.61l-3.8,-4.27l-0.25,-5.92l-3.86,-5.09l-0.7,-0.15l-2.79,1.49l-3.36,3.65l-1.09,-2.24l-0.26,-2.3l-1.08,-0.49l-0.95,1.45l-1.42,0.89l-0.45,2.43l-1.98,0.17l-1.88,-1.27l0.86,-2.27l-0.08,-1.31l0.83,-0.89l-0.2,-1.69l0.56,-1.58l-0.32,-2.34l0.7,-1.72l-0.82,-1.33l-4.66,1.84l-2.57,-1.66l-3.01,0.49l-5.38,-2.52l-5.39,0.48l-3.55,1.29l-4.85,-0.31l-2.4,1.17l-1.69,2.05l0.7,2.62l-0.69,1.61l0.06,1.13l0.8,0.91l4.55,1.02l0.29,0.58l-0.41,2.15l0.47,0.79l0.95,0.1l0.9,-0.5l1.16,-2.6l2.24,0.95l-0.99,6.97l0.68,1.74l-1.53,1.43l-2.48,-1.59l-2.99,1.26l-3.2,0.27l-2.21,1.12l-0.9,1.2l0.3,2.46l-1.33,1.41l-0.69,2.16l-0.77,1.01l-7.77,-0.05l-5.5,1.21l-0.79,-0.5l-1.37,-2.35l-1.97,-1.9l-0.3,-0.78l3.16,-3.22l0.6,-1.12l-1.15,-6.97l2.1,-0.43l1.41,-1.58l-0.22,-2.84l1.59,-4.06l-0.47,-0.8l-2.19,-1.08l-0.22,-0.86l1.54,-2.3l0.53,-1.76l-1.03,-1.5l-2.09,0.23l-1.02,-0.79l-0.77,-2.11l-0.02,-4.45l-1.07,-0.11l-1.16,1.84l-0.62,-1.15l-3.47,-10.75l0.19,-10.68l1.53,0.6l0.92,-0.7l-1.22,-2.81l0.12,-1.66l-0.96,-1.64l-0.52,-3.31l-0.61,-0.93l-1.34,-0.31l-1.47,0.64l-1.35,-0.87Z\", \"name\": \"Bayern\"}, \"DE-MV\": {\"path\": \"M495.86,194.66l-0.15,1.45l1.0,0.85l3.25,-0.51l1.79,-1.24l-0.25,-0.83l-4.7,-1.85l-0.55,-0.95l0.03,-4.18l0.07,-0.3l1.57,-0.13l4.13,-3.99l3.43,-1.01l5.17,-2.79l11.75,-1.56l1.23,1.04l1.36,3.55l3.57,1.1l0.38,0.6l-0.43,3.67l0.42,2.12l1.41,0.79l3.86,-0.01l3.9,-3.31l2.08,3.22l3.98,0.1l3.86,5.14l1.06,0.65l1.11,0.0l0.4,-0.37l0.13,-1.7l1.75,-6.01l-0.41,-2.69l0.62,-1.03l1.86,-1.32l-0.56,-3.19l3.2,-3.27l-0.15,-1.79l2.55,0.66l2.35,-1.73l1.71,-4.33l2.09,-1.21l1.2,-1.89l0.52,-2.22l-0.72,-0.81l0.27,-1.34l3.14,-5.35l2.97,-2.07l3.68,-0.53l8.29,1.45l23.39,-5.06l3.27,-2.08l0.42,4.13l-0.37,4.62l0.22,4.0l2.37,2.94l0.52,0.08l-1.73,-8.3l0.9,-1.71l2.9,-1.76l0.84,-2.26l-0.33,-0.54l-1.22,-0.11l-1.95,0.56l0.13,-0.27l3.29,-4.33l2.04,-1.87l2.28,-3.85l9.96,-5.26l3.78,-3.18l1.5,-1.78l3.58,-6.94l5.89,-8.55l4.71,-8.71l1.57,-4.44l1.02,-1.34l0.96,-0.49l-0.23,0.41l2.09,3.39l4.41,1.9l22.41,0.03l3.6,1.75l2.49,-1.23l2.51,0.63l0.98,1.48l-2.1,1.96l-2.34,0.51l-10.39,-0.9l-4.15,-1.57l-2.87,-0.35l-0.94,0.48l-1.41,1.79l-4.33,-0.48l-1.22,0.58l-0.52,1.46l-0.71,-0.46l-2.19,1.65l0.24,1.6l1.01,1.11l-1.49,-0.74l-2.11,0.2l-1.95,1.26l-0.76,1.51l-1.33,-1.62l-2.09,-1.03l-3.56,-0.33l-1.8,0.8l-1.55,2.22l-0.62,2.58l0.42,2.23l-1.91,-0.94l-0.61,0.1l-0.7,1.48l0.61,1.91l-0.43,1.8l-1.09,1.28l-1.48,0.35l-0.29,0.5l1.68,5.33l-1.0,1.19l0.08,0.58l4.29,2.99l2.51,0.68l2.41,-1.37l0.17,-0.46l-2.84,-0.72l-1.77,-1.57l0.54,-1.69l3.27,-3.72l2.2,-1.22l0.58,-3.56l1.53,-1.3l6.33,-3.07l0.06,-0.68l-1.79,-1.14l0.0,-0.56l1.48,-0.55l1.16,0.59l0.65,-0.57l1.53,1.13l3.03,-0.8l5.35,-3.07l-0.4,-2.61l2.92,-1.13l0.84,0.09l0.0,0.59l-1.4,0.45l-1.06,1.47l-0.59,1.99l-0.24,2.11l0.27,0.42l0.47,-0.18l1.81,-3.71l1.42,2.22l1.26,0.65l1.31,-1.09l0.84,0.75l1.33,0.06l1.61,-1.45l1.2,2.81l2.14,2.57l3.59,-0.21l1.16,-0.37l1.16,-1.07l2.72,-5.72l2.43,-2.43l3.83,-2.49l3.73,-1.39l1.7,0.5l-0.88,1.02l-0.05,2.0l0.78,2.29l1.21,1.74l4.34,2.3l0.91,0.89l-1.76,3.3l0.45,2.74l2.76,4.47l0.75,5.29l1.28,0.61l3.99,0.0l0.0,0.46l-1.39,0.37l-1.27,1.2l0.41,0.27l3.08,-0.29l5.02,2.86l3.47,0.84l2.35,1.3l3.19,6.56l2.37,2.15l-2.33,2.05l0.29,0.68l2.64,-0.07l3.49,-1.79l1.39,0.54l-0.61,1.56l-1.15,1.36l0.06,0.64l1.56,0.71l1.27,-0.85l0.53,0.15l3.1,6.99l1.59,2.15l2.02,1.27l2.31,0.03l0.41,-0.4l0.0,-1.14l-2.74,-3.61l0.0,-0.64l11.89,-2.36l2.96,-1.38l4.97,-3.4l2.42,-0.81l0.12,0.89l-1.66,1.02l0.22,1.39l2.95,1.53l7.62,6.41l0.0,0.85l-1.4,2.47l-1.96,5.99l-2.54,1.58l-0.03,0.66l1.15,0.88l3.92,5.41l3.93,2.03l0.97,2.98l0.1,2.22l0.65,0.36l1.31,-0.12l3.52,1.77l0.14,1.29l-0.56,1.74l-1.04,1.47l-7.1,5.92l-1.02,2.47l1.07,2.24l3.66,1.33l0.66,0.49l0.63,1.79l1.44,2.1l1.65,1.49l1.21,-0.09l7.09,5.94l3.27,0.79l1.92,2.3l3.2,0.08l3.78,2.0l7.9,0.59l2.92,-0.86l1.87,-2.76l1.29,0.25l1.24,1.2l0.25,2.4l-0.67,1.06l-4.52,3.24l0.03,0.67l2.74,1.25l2.03,0.2l-0.25,6.92l1.46,3.22l2.05,6.37l-0.01,11.27l0.72,3.48l2.4,3.79l1.05,3.48l2.01,3.41l1.03,8.48l2.01,9.39l-6.39,3.97l-2.8,3.6l-2.51,1.24l-0.78,2.42l-1.14,0.85l-6.28,-0.61l-7.5,-1.52l0.08,-2.63l8.09,-5.49l3.63,-5.75l1.58,-3.74l0.46,-3.15l-0.15,-4.35l-2.6,-0.89l-4.13,0.24l-3.68,-1.78l-2.69,0.67l-1.83,2.6l-4.34,-1.32l-5.9,-0.43l-6.64,0.5l-1.36,-2.05l-0.54,-2.27l-2.79,-5.12l-0.4,-3.86l-4.46,-1.75l-2.37,-3.74l-1.96,-0.44l-0.46,0.37l-0.13,3.28l2.44,4.59l0.37,1.68l-2.51,1.11l-3.35,-0.25l-3.71,0.61l-5.95,5.13l-1.89,3.39l-2.06,1.93l-3.34,0.14l-2.08,1.08l-1.47,1.45l-1.29,4.98l-3.15,7.7l-2.26,2.63l-1.08,0.4l-5.11,4.14l-1.55,0.55l-1.62,-0.42l-4.04,-2.15l-2.18,-0.43l-2.71,0.29l-1.68,0.87l-1.72,2.01l-1.3,3.03l-0.54,3.01l-2.34,0.0l-1.03,-0.47l-2.25,-3.33l-1.51,-0.48l-0.98,0.29l-3.39,2.87l-1.38,3.23l-5.62,4.26l-3.89,4.38l-2.27,0.39l-2.59,-1.31l1.34,-2.08l-0.23,-0.99l-0.71,-0.56l-2.09,0.72l-2.65,0.03l-3.81,0.88l-4.19,-2.07l-6.76,0.74l-0.86,-0.98l-0.41,-4.04l-1.05,-0.62l-2.39,-0.12l-3.97,-1.1l-2.57,-2.64l-1.46,-0.73l-11.01,-2.73l-3.2,0.78l-3.4,0.25l-1.33,-0.29l-1.39,-1.97l-2.86,-1.66l-4.7,-4.22l-4.29,-2.52l-6.71,-1.82l-2.18,-3.79l-1.51,-0.64l-1.37,0.38l-2.88,2.03l-1.64,-1.69l-0.86,-0.34l-2.74,0.54l-3.4,1.45l-1.38,2.56l-2.69,2.04l-0.15,2.24l-0.82,2.28l-1.47,0.29l-3.52,3.16l-1.87,-0.71l-5.54,2.36l-2.26,2.72l-2.68,-0.6l-1.8,0.92l-0.04,0.65l1.85,1.48l0.22,1.64l-4.86,-0.19l-3.81,1.83l-1.15,-2.52l-3.11,-2.57l-1.44,-0.51l-3.49,0.23l-5.42,2.07l-1.98,1.31l-4.34,4.02l-0.71,1.77l0.24,1.46l1.3,1.82l0.94,4.93l-0.61,2.37l-1.79,1.37l-2.35,0.23l-5.24,-2.99l-3.4,-0.05l-1.92,1.1l-0.43,3.68l-3.75,-1.22l-3.16,0.0l-2.38,-0.51l-1.87,0.22l-1.73,-2.85l-1.62,-1.02l-1.49,-1.8l-0.49,-0.04l-2.51,1.94l-2.84,-4.74l-1.22,-0.67l-1.44,0.28l-5.05,4.48l-4.59,-3.46l-10.76,-10.14l-8.97,-5.23l-3.07,-2.49l-3.18,-4.05l-3.43,-1.32l-0.73,-6.94l-2.23,-2.89l-3.69,-1.03l-6.47,0.27l1.99,-3.62l0.96,-7.94l0.43,-0.75l2.54,-1.25l2.22,0.24l0.61,-0.66l0.86,-2.74l5.35,-1.63l6.28,-4.8l0.22,-2.62l0.93,-2.74l-0.41,-3.51l2.39,0.48l5.09,-0.57l0.72,1.15l0.36,1.95l0.99,0.71l1.03,-0.77l1.67,-2.35l-0.59,-0.84l0.57,-1.33l-1.29,-5.55l-0.07,-2.55l1.44,-1.4l0.19,-2.46l-1.0,-2.53l-0.41,-2.67l-2.96,-2.84l-2.84,-0.87l-2.05,0.3l-0.61,-0.35l-5.03,-6.37l-4.58,-1.1l1.28,-7.23l-0.82,-4.56l-1.14,-3.07l1.14,-4.1l4.69,-2.81l4.85,-4.55l2.23,-1.48l1.73,0.55ZM556.71,174.76l-0.08,0.0l0.0,-0.04l0.08,0.04ZM798.2,168.67l2.9,1.83l17.21,18.98l1.5,1.12l-1.51,4.08l-1.55,0.71l-0.19,0.64l1.68,2.05l0.64,2.12l-10.57,1.22l-2.04,-0.29l-1.56,-1.12l-0.53,0.06l-2.25,2.55l-2.76,1.61l-5.53,1.49l-6.1,0.1l-3.26,-0.99l-1.41,-1.94l2.85,-1.86l3.18,-0.72l3.4,-1.97l1.11,-1.27l0.68,-5.07l-3.6,-6.83l0.21,-3.78l4.48,0.28l1.28,0.53l-0.46,0.85l0.18,1.13l-0.77,3.24l-0.13,2.65l0.29,0.4l0.46,-0.19l1.48,-2.64l1.07,-0.58l2.82,0.01l-0.53,0.98l0.12,1.4l3.35,1.03l0.49,-0.52l-0.75,-2.05l1.23,-4.1l-0.17,-4.46l-1.4,-2.94l-0.51,-0.19l-1.87,0.78l-1.76,-4.6l-1.43,-1.9l-1.72,-1.32l-1.94,-0.48l-2.13,0.43l-1.24,1.43l0.8,3.35l-1.64,1.48l-1.47,2.79l-2.8,1.07l0.13,-1.53l1.81,-3.47l-0.52,-2.24l-1.0,-0.51l-4.28,2.03l-2.75,3.2l-1.42,-0.55l0.7,-2.84l2.63,-5.48l0.61,-4.51l-0.98,-2.9l-3.99,-4.2l-1.07,-1.66l0.79,-1.64l1.41,-1.5l1.59,-0.62l1.57,0.66l3.95,9.13l2.67,2.76l6.55,3.86l3.75,1.44ZM716.99,88.76l1.04,-0.51l7.38,-1.09l1.37,0.31l0.64,1.04l2.1,1.2l0.92,3.32l0.64,0.17l0.88,-0.87l0.36,-1.92l-0.75,-2.63l3.02,-3.61l2.62,-1.68l-0.83,2.63l-1.52,2.32l0.31,0.67l0.96,0.06l0.63,0.79l-1.31,3.12l0.35,0.54l1.57,0.07l1.33,-0.53l0.95,-1.19l0.59,-1.88l-0.25,-0.47l2.15,3.51l-0.54,2.74l1.94,2.82l2.78,1.05l5.06,-0.13l0.34,-0.6l-0.63,-1.08l0.85,-2.01l1.17,-1.42l0.0,-1.26l-1.34,-3.71l-0.73,-0.94l0.0,-0.81l2.07,-1.46l0.0,-1.05l-0.43,-0.4l-1.48,0.18l-2.02,2.15l-4.09,-0.02l-1.7,-2.89l-2.38,-0.88l-2.81,-5.27l-0.64,-0.19l-2.11,1.94l-1.58,2.19l-2.23,1.34l-3.3,3.07l-1.54,-0.5l-0.29,-1.69l0.66,-3.0l1.23,-2.75l1.42,-1.36l0.94,-4.2l-0.77,-0.96l-4.39,1.16l-1.56,0.91l0.05,-1.58l0.48,-1.01l2.07,-1.85l13.34,-3.9l2.59,-0.03l2.28,1.24l0.0,0.62l-5.19,3.86l-0.88,2.58l0.3,3.25l0.84,2.4l1.4,2.05l1.79,1.47l4.3,1.41l12.64,-2.43l4.18,0.91l2.8,3.12l0.6,4.09l-2.44,3.9l-4.28,2.87l-2.22,2.15l-1.04,2.81l1.25,5.86l2.17,4.11l2.24,1.23l4.57,1.11l1.92,1.37l2.56,4.72l1.71,2.26l1.9,0.8l-2.08,2.19l-1.03,2.27l-0.61,6.2l-1.2,-0.26l0.78,-0.55l0.4,-1.12l-0.38,-2.03l-0.39,-0.31l-0.96,0.13l-0.95,1.03l-1.36,0.51l-2.3,-0.38l0.0,-0.63l3.4,-1.46l1.6,-1.26l0.94,-2.08l-0.39,-0.56l-5.14,0.35l3.5,-2.15l-0.36,-1.55l-2.63,-0.25l-1.65,0.21l-2.16,2.08l-1.29,-1.35l-1.35,-0.7l-9.78,1.15l-1.97,1.22l-5.26,4.69l-2.19,4.19l-2.31,0.5l-2.37,1.46l-0.18,4.88l1.79,-1.2l0.1,-1.32l4.03,-0.48l0.67,3.57l-0.17,1.49l-1.24,0.6l-2.64,-0.41l-3.03,-1.07l-3.05,-2.02l0.56,-0.7l1.42,-4.96l-0.46,-0.04l-2.16,1.58l-0.64,0.94l0.29,0.8l-2.36,0.11l-1.49,0.99l-2.28,-1.98l-3.16,-1.12l-0.89,-1.22l0.51,-1.95l-0.27,-0.48l-1.72,-0.42l-3.59,1.53l-0.44,-0.86l0.43,-0.82l1.02,-0.39l1.35,0.56l0.55,-0.37l0.0,-1.04l-6.01,-4.84l1.24,-3.3l1.85,-2.85l2.17,-0.99l2.82,1.86l0.57,-0.13l0.41,-0.71l1.13,0.86l1.51,-0.31l3.09,-2.44l-1.76,-0.46l-0.98,-0.96l-0.43,-1.44l0.44,-2.8l-1.54,-0.51l-1.39,-1.72l-1.26,-0.45l-3.51,0.93l1.91,-3.45l2.63,-0.67l2.9,-1.55l1.95,-0.35l0.33,-1.27l1.25,-1.18l-0.17,-0.62l-3.74,-1.75l-0.61,-1.17l0.72,-1.17l-0.07,-1.33l-0.55,-0.34l-2.85,1.13l-1.5,0.16l-1.68,-1.61l-0.34,-2.72l-0.93,-1.31ZM739.94,88.57l-2.32,-1.17l0.0,-0.68l0.82,-0.77l1.5,2.62ZM708.25,95.98l0.04,-0.57l3.07,-11.08l0.65,-4.24l0.59,-0.99l3.55,-0.29l0.46,1.57l-0.55,0.2l0.0,-0.98l-0.65,-0.31l-2.54,2.22l-0.67,6.08l-0.93,3.39l-2.09,2.17l-0.93,2.83ZM558.02,170.24l-0.47,-2.61l0.45,-1.31l5.8,-2.8l-4.53,4.19l-1.25,2.54ZM553.66,176.62l-2.79,8.31l-0.9,1.34l-0.61,0.02l0.61,-3.75l-0.81,-2.26l-1.2,0.24l-0.55,1.63l0.4,2.07l-1.14,0.96l-1.31,-0.07l-2.73,-1.99l1.31,-3.44l3.42,-2.95l3.84,-1.26l2.47,1.15Z\", \"name\": \"Mecklenburg-Vorpommern\"}}, \"height\": 1223.8430164619706, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-es-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'es_merc_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 671.3455904856035, \"bbox\": [{\"y\": -5438155.586258878, \"x\": -1034892.2150401801}, {\"y\": -4304663.079836929, \"x\": 484657.87992932}], \"left\": 0}], \"paths\": {\"ES-GA\": {\"path\": \"M1.5,81.67l-0.52,-1.68l-0.58,-0.88l1.78,-4.6l0.91,-3.31l-0.47,-0.93l-0.95,-0.72l-0.4,-1.76l1.33,-0.48l0.5,-0.91l0.33,-1.54l1.41,-1.2l0.28,-0.67l1.52,0.77l1.1,-0.31l1.15,-0.94l1.29,-1.75l2.04,-0.5l0.35,-0.4l0.0,-0.67l-0.57,-0.36l-2.45,0.85l-0.61,-0.06l0.03,-0.4l-0.58,-0.39l-2.0,1.03l-0.57,-0.07l-0.43,-1.11l2.9,-2.8l1.9,-1.04l2.46,1.04l2.39,-0.26l1.03,-0.46l1.73,-1.84l1.02,-2.44l1.4,1.08l1.91,-0.09l1.84,-0.76l1.14,-0.88l0.13,-0.46l-0.4,-0.26l-1.25,0.08l-0.57,-0.39l-0.94,-1.93l-1.32,-0.68l3.28,-1.27l2.81,-1.89l2.0,-0.54l1.11,-1.12l0.5,-0.14l2.82,2.55l4.9,1.54l1.5,0.19l4.18,-2.04l2.29,-0.7l2.45,0.93l3.57,-1.74l1.31,-2.05l2.04,-0.87l0.7,-0.96l3.11,-0.83l0.22,0.92l0.66,0.95l1.46,1.3l0.57,-0.04l0.92,-1.17l0.25,-0.97l-0.16,-2.04l0.42,-0.81l0.96,0.17l2.73,1.5l1.01,2.66l2.2,2.44l0.44,1.31l0.38,0.27l0.38,-0.27l0.53,-1.59l-0.48,-5.48l0.26,-0.67l1.83,-1.41l-0.06,-0.69l-1.42,-0.66l-3.44,-0.0l-0.99,-0.33l-1.51,-1.64l-0.59,-0.28l0.61,-0.49l7.08,-1.04l1.0,-1.22l-0.07,-0.92l-0.31,-0.33l-0.56,-0.04l-1.48,0.67l-2.78,0.47l0.06,-0.38l-0.97,-0.67l-0.54,0.12l-0.71,1.09l-1.12,0.46l-2.24,0.1l0.78,-3.69l0.81,-0.0l0.86,-1.24l-0.06,-0.53l-0.97,-1.11l-0.27,-1.27l2.97,0.2l2.14,-1.05l9.17,-7.04l0.21,0.6l0.79,0.64l0.94,0.03l0.77,-0.37l0.21,-0.46l-0.84,-0.27l0.69,-0.55l0.03,-0.64l-1.16,-0.94l-0.14,-0.73l0.82,-2.5l3.03,-0.17l2.06,-0.6l1.92,-1.16l1.64,-1.52l1.2,-1.65l1.4,0.22l1.14,2.67l0.74,0.95l-0.59,-0.22l-0.51,0.16l-0.83,1.78l0.25,1.38l-0.2,0.16l-0.41,-0.36l-0.55,0.02l-1.01,0.96l0.0,0.62l0.38,0.4l3.63,0.04l0.6,-0.67l0.04,-0.47l-1.02,-1.68l0.97,-0.29l1.56,0.55l0.43,-0.11l-0.29,-1.48l0.74,-0.83l2.4,-1.69l2.56,-0.68l1.53,-1.03l1.2,-1.37l0.5,-1.41l0.58,1.31l-1.69,2.24l-0.04,1.81l0.72,0.53l0.57,-0.16l0.79,-0.48l0.14,-0.96l1.44,-0.52l0.16,0.83l1.56,3.06l-0.17,1.32l0.55,0.42l0.75,-0.37l1.26,-2.17l0.84,0.11l1.19,-1.16l0.77,-0.29l2.46,0.28l6.09,3.32l2.61,2.06l4.12,5.75l2.88,1.48l-0.78,1.02l0.23,1.05l1.22,0.4l1.73,-1.05l0.82,0.0l3.86,0.85l4.11,-0.15l1.09,-0.63l2.69,1.17l0.08,1.51l-1.13,2.04l-0.35,1.26l0.61,1.81l-0.29,1.46l-2.03,1.87l-0.96,1.49l-1.0,0.84l-2.22,-0.21l-1.13,0.37l-0.59,1.28l-0.09,2.52l0.42,0.7l0.88,0.44l1.42,0.16l0.51,3.69l0.95,1.72l0.89,0.94l1.47,0.9l0.54,3.75l0.83,1.73l2.05,1.79l0.99,0.23l0.76,0.96l1.79,0.85l-0.54,3.14l1.03,1.99l1.23,0.69l1.39,-0.5l2.42,-1.42l0.82,-1.64l0.45,-0.26l2.01,2.92l0.05,1.44l-2.34,2.12l-2.78,1.26l-1.3,-0.03l-0.94,0.44l-1.29,3.14l-1.07,0.57l-0.51,0.76l-0.15,0.98l0.88,2.16l0.77,0.51l0.65,-0.1l0.57,-0.53l0.22,-1.96l2.06,2.57l2.9,0.52l1.97,2.17l0.53,4.04l-0.5,0.71l-0.44,1.5l-1.17,1.49l-0.11,1.26l0.54,2.79l-0.57,1.72l-4.19,5.13l-0.51,0.24l-1.17,-0.2l-0.83,0.29l-1.44,1.47l-2.2,1.12l-1.18,1.92l-0.16,1.05l0.23,1.18l1.32,2.06l0.13,0.78l-1.59,1.32l-0.37,0.89l0.08,3.59l-1.14,2.6l-0.13,2.4l-0.57,1.59l0.36,0.54l2.92,0.13l2.94,0.64l0.94,-0.18l1.2,-1.05l1.89,-0.38l1.79,1.15l4.53,1.27l0.69,1.59l-0.26,2.13l-0.46,1.23l-1.03,1.05l-0.09,0.67l3.29,2.79l2.22,1.45l0.9,1.01l0.24,0.63l-0.29,3.67l-1.87,3.11l-1.94,2.1l-0.44,1.77l-1.3,-0.36l-2.48,0.36l-2.25,1.58l-2.87,3.2l-1.01,2.97l-1.98,1.51l-2.59,3.58l-0.24,0.9l0.65,1.24l0.68,0.47l1.81,0.1l0.96,1.31l-1.35,3.73l0.23,1.73l-0.48,-0.0l-1.51,1.11l-2.13,0.94l-1.86,-0.86l-1.96,-1.71l-2.18,-1.37l-1.36,0.14l-2.21,1.47l-0.64,0.79l0.14,5.42l-1.26,1.84l-2.06,1.29l-4.6,1.59l-4.71,0.36l-0.97,0.68l-1.9,2.1l-0.8,-2.34l-0.89,-1.26l-1.74,-0.54l-1.13,-0.72l-0.78,0.09l-0.49,0.43l-0.59,1.8l-0.88,0.63l-1.26,0.45l-2.35,0.09l-0.8,-0.45l-0.02,-0.53l0.99,-2.71l-0.36,-0.54l-3.47,-0.15l-2.85,-1.82l-1.17,-0.33l-2.09,0.97l-3.98,0.97l-1.88,-0.09l-0.91,0.4l-0.83,1.39l-1.58,-0.0l-0.56,-4.59l-0.54,-0.34l-1.53,0.76l-0.63,2.48l-0.48,0.9l-1.98,-0.14l-1.18,0.47l-3.66,4.19l-2.79,0.81l-5.19,-0.32l0.23,-1.96l-0.18,-1.37l-0.68,-0.84l-2.21,-0.87l-0.63,-1.35l0.09,-1.49l0.59,-1.5l2.5,-3.72l1.87,-1.84l3.05,-2.24l0.76,-1.29l0.15,-1.55l-0.66,-1.65l-1.01,-0.98l-1.39,-0.62l-1.56,0.1l-2.05,0.79l-0.55,-0.44l-0.19,-1.25l0.16,-3.97l-1.22,-2.27l-0.56,-0.1l-1.94,1.4l-1.1,0.45l-1.76,0.23l-3.3,2.47l-10.12,1.65l-1.41,0.54l-2.23,1.55l-1.11,0.45l-3.72,0.38l-1.22,0.95l-1.74,3.64l-1.22,0.82l-3.26,1.34l-0.81,0.7l-1.67,2.73l-1.1,0.93l-2.48,1.05l-1.99,2.11l-0.56,-0.2l0.12,-0.99l-1.31,-17.24l0.18,-1.35l0.5,-0.43l2.47,-0.04l1.55,-0.54l0.51,-1.18l-0.5,-0.9l-1.22,-0.73l1.93,-1.14l0.62,-1.93l0.93,-0.6l1.27,-1.6l3.37,-2.62l1.18,-0.57l2.11,-1.98l2.53,-1.43l0.59,-0.66l0.25,-0.86l-0.08,-3.38l-0.76,-0.41l-0.7,0.27l-1.0,0.97l-1.64,3.23l-2.86,0.97l-3.56,1.66l-0.77,0.79l-3.94,-0.12l-0.75,0.21l0.79,-3.02l0.6,0.91l0.68,-0.02l0.39,-0.67l-0.1,-4.08l0.7,-0.15l2.29,0.54l0.65,-0.28l0.6,-1.29l2.43,-2.88l4.24,-3.4l0.58,-1.44l-0.11,-0.44l-0.95,0.19l-1.85,-0.2l-3.53,2.49l-2.2,0.86l-2.02,0.18l-2.01,-0.25l-1.41,-0.88l-0.46,-0.86l-0.33,-1.76l-0.67,-1.11l-0.98,-0.52l-2.29,-0.46l0.27,-0.48l1.09,-0.69l2.14,-0.74l0.57,0.2l0.39,0.54l-0.01,0.5l-0.69,0.45l-0.0,0.67l1.58,0.8l1.04,0.19l1.14,-0.55l0.27,-1.12l-0.16,-1.77l0.79,-0.98l-0.8,-3.06l0.13,-2.67l0.53,-0.94l1.69,-0.98l0.9,-1.2l2.43,-5.5l0.53,-2.07l-0.39,-0.5l-0.79,0.28l-1.06,2.73l-0.78,0.93l-0.92,0.32l-1.0,-0.38l-2.28,-3.71l-0.7,0.07l-1.02,2.51l-0.16,1.11l0.55,0.85l-1.21,1.76l-0.47,0.31l-0.49,-0.39l0.14,-1.11l-0.45,-0.06l-3.16,2.21l-0.06,0.57l0.68,0.83l-2.95,1.21l-0.68,2.35l-1.7,1.52l-0.59,-0.66l-0.46,-3.05l-1.65,-0.91l-0.79,-0.77l0.3,-1.91l1.79,-3.78l0.55,-4.55l1.44,-2.17l2.81,-1.56l2.69,-3.29l1.71,-0.51l0.94,-2.16l-0.17,-1.62l-1.57,-1.05l-0.59,0.3l-0.26,1.94l-0.89,1.11l-1.37,0.61l-1.62,0.23l-3.29,-0.49l-1.51,0.28l-0.32,0.45l0.19,1.32l-1.34,1.45l-0.65,0.34l-1.01,-0.19l-0.72,-0.63l-1.17,-3.55l1.17,-0.49l0.89,-1.94l-0.66,-1.2l-2.02,-1.08l-0.39,-1.71l0.01,-0.59l0.81,-1.41l-0.12,-1.75l-2.15,-0.81l-0.98,-1.58l-0.99,-0.52l-0.56,0.37l0.33,1.47l-0.17,0.23l-0.37,0.1l-0.55,-1.27l-0.93,-0.05l-1.45,1.15l-1.31,2.88Z\", \"name\": \"Galicia\"}, \"ES-IB\": {\"path\": \"M885.15,331.58l1.28,1.03l-0.14,1.44l0.63,0.6l0.94,-0.34l1.06,-1.43l0.4,0.56l1.78,1.15l1.37,1.72l1.81,0.66l0.6,0.84l0.51,1.29l-0.05,0.92l-0.94,0.39l-0.03,0.73l1.03,0.51l1.69,0.11l0.55,2.47l1.28,2.14l-0.99,-0.62l-0.58,0.34l-0.17,5.32l-2.98,0.39l-4.55,-2.24l-10.67,-7.07l-2.3,-0.92l-2.88,-0.08l-4.64,0.94l-2.1,-0.75l0.45,-2.95l0.65,-0.62l-0.01,-0.59l-0.67,-0.55l-1.27,-0.47l-1.04,-1.32l0.39,-1.63l0.66,-0.86l4.33,-0.97l1.66,0.63l6.33,-0.65l2.7,0.11l1.79,-0.55l1.35,-1.05l0.76,1.34ZM822.57,340.1l0.71,0.93l0.58,0.03l-3.9,1.69l-1.54,1.53l-1.17,-0.32l-0.4,0.38l-0.14,2.77l0.33,0.41l2.52,0.4l4.1,-1.16l-0.25,1.53l-0.47,0.84l-1.31,0.65l-2.05,0.53l-0.71,0.82l-0.14,2.16l0.86,2.05l1.81,1.75l2.12,1.21l2.12,0.51l4.67,-0.03l1.29,-0.56l1.95,-2.0l0.74,-0.37l1.69,0.5l3.69,2.2l1.89,0.2l-0.2,0.57l0.37,1.94l-0.81,1.26l0.35,1.21l-1.47,3.29l-1.84,0.83l-0.92,1.15l-0.28,1.5l0.42,1.29l-2.52,2.34l-2.83,3.43l-2.08,4.11l-0.57,4.28l-0.31,-0.26l-0.66,0.17l-1.05,3.44l-1.97,2.14l-6.06,3.77l-3.85,3.7l-0.37,0.01l-1.89,-2.78l-1.74,-1.03l-0.76,-2.61l-2.25,-1.41l-0.75,-0.21l-2.45,0.58l-5.64,-0.42l-2.4,-0.99l-1.51,-1.91l-0.68,-4.56l-0.93,-0.76l0.14,-1.06l0.99,-2.02l-0.74,-2.11l-1.98,-1.86l-2.28,-1.35l-2.06,-0.55l-1.51,0.5l-4.24,2.37l-1.07,1.21l-0.68,2.22l-1.47,1.55l-1.4,0.17l-1.36,-2.59l0.55,-0.58l0.07,-0.62l-1.76,-1.81l-0.61,0.04l-0.74,0.82l-0.41,-0.74l-0.57,-0.19l-1.96,1.08l-0.39,-0.29l-0.64,-1.59l-1.08,-0.9l-0.29,-1.33l0.4,-2.74l4.54,-2.86l1.45,-0.36l1.18,-0.77l3.29,-3.51l0.85,-0.47l2.59,-0.65l3.21,-3.17l0.87,-1.68l1.37,-0.07l3.78,-4.07l2.5,-1.17l2.39,-2.1l1.27,-0.46l0.54,-0.86l2.07,-0.05l1.98,-0.97l3.92,-2.63l1.94,-0.53l3.73,-0.37l3.65,-0.94l6.62,-2.71ZM823.91,341.04l0.24,-0.25l0.09,0.05l-0.16,0.12l-0.18,0.08ZM709.71,429.64l-0.58,-0.67l-0.66,-0.03l-1.07,1.4l-0.95,1.67l-1.12,3.54l-2.97,-2.38l-2.38,0.23l-0.6,-0.98l-1.11,-0.35l-1.34,0.36l-0.5,0.83l-1.65,-1.11l-0.65,-0.76l-0.25,-1.32l0.99,-3.26l-0.49,-1.02l0.85,-0.63l0.53,-0.07l0.66,0.39l1.37,-0.54l1.53,0.02l0.4,-0.46l-0.57,-3.54l0.04,-1.81l0.6,-0.69l1.88,-1.2l1.52,-1.64l0.58,0.43l0.51,0.02l1.08,-0.84l0.98,0.3l1.28,-1.07l1.73,-0.91l1.72,-0.47l1.29,0.22l1.66,-1.17l0.73,0.05l1.56,1.03l1.9,0.25l0.77,0.69l-0.26,0.78l1.29,4.06l-0.78,0.12l-0.87,0.68l-0.68,1.22l-0.49,1.73l-2.36,1.6l-2.04,3.14l-3.05,2.18ZM705.29,448.74l0.52,-1.86l-0.62,-0.65l0.43,-0.44l0.69,0.22l0.97,-0.84l0.85,-1.65l3.04,4.39l1.4,1.27l3.57,0.03l1.31,0.43l-0.05,1.33l-1.25,0.76l-2.04,-0.59l-3.75,-1.97l-1.25,-0.09l-3.54,1.79l-0.41,-1.27l0.31,-0.48l-0.19,-0.35Z\", \"name\": \"Islas Baleares\"}, \"ES-PV\": {\"path\": \"M419.05,32.69l0.76,-0.45l1.52,-0.16l3.34,0.15l3.17,-0.32l2.52,-0.96l0.64,0.16l2.53,2.22l0.53,0.9l0.74,2.21l0.25,1.87l0.71,0.19l0.27,-0.35l0.59,-1.86l0.08,-1.37l0.7,-0.28l3.48,0.89l3.79,1.64l4.2,1.14l1.36,1.98l6.45,3.07l2.74,0.82l2.8,0.3l5.75,-1.01l1.43,1.54l1.14,0.26l0.87,-0.54l0.38,0.79l0.67,0.39l0.4,-0.06l1.85,-1.47l2.14,-0.47l4.68,-1.71l2.2,-1.31l0.75,0.03l1.14,1.43l0.52,0.45l0.5,0.02l0.93,-0.67l-0.0,-0.65l-0.88,-0.87l2.11,-0.95l2.55,-2.29l2.11,-1.14l0.92,0.67l-0.34,2.34l-0.03,3.03l0.22,0.35l1.8,0.88l0.7,0.96l0.24,1.78l-1.25,0.4l-1.21,1.14l-1.99,3.54l-0.76,0.75l-1.23,0.51l-1.35,-0.34l-0.5,0.49l-0.13,0.86l-1.29,-0.53l-0.58,0.21l-0.73,3.17l0.46,4.38l-0.88,1.76l-0.68,0.73l-5.13,3.59l-1.75,3.63l0.05,2.18l-0.53,1.21l-2.91,1.1l-1.86,2.33l-3.14,0.44l-1.87,-0.67l-1.08,0.29l-1.24,1.42l-1.43,3.42l0.9,3.7l-0.19,1.54l-1.35,2.23l-0.76,2.12l-0.33,3.58l-0.25,0.38l-1.86,0.73l-0.62,1.0l0.56,4.21l1.15,0.71l0.12,0.87l-2.73,1.87l-1.56,0.12l-1.22,-1.58l-1.89,-0.39l-2.03,1.38l-3.76,3.49l-0.04,1.38l0.41,0.66l2.7,1.39l1.0,-0.4l1.21,-1.6l0.81,0.48l0.4,2.14l-0.73,5.62l-3.2,-0.82l-1.8,-1.06l-0.6,-1.45l-0.51,-0.22l-1.28,0.73l-0.72,1.58l-1.63,0.07l-1.32,0.77l-0.2,-0.79l-0.93,-0.57l-0.95,0.15l-0.64,0.64l-0.61,-0.28l-2.3,-1.82l-1.03,-0.45l-0.02,-3.61l-0.34,-0.94l-3.02,-2.41l-1.0,-0.32l-1.21,0.39l-0.65,0.6l-0.68,1.92l-0.78,-0.03l-1.06,0.47l-0.31,-0.18l-0.25,-0.59l0.69,-0.77l0.23,-0.84l-0.24,-0.82l-0.6,-0.23l-0.55,0.35l-0.15,-0.25l-0.09,-2.01l-0.37,-1.2l-5.08,-4.54l-1.68,-0.79l-1.61,-2.03l-2.34,-1.45l-1.93,-1.8l-2.12,-1.13l-3.86,1.42l-0.53,-0.09l0.23,-1.26l-1.24,-1.58l-0.18,-0.96l2.51,-4.46l0.18,-1.15l-0.43,-1.05l-0.78,-0.36l-0.59,0.15l-1.91,2.14l-1.24,-0.04l-1.27,0.48l-0.94,1.22l-0.32,1.43l-0.61,-0.39l-3.08,-3.8l0.56,-1.54l2.88,-3.71l2.18,-0.25l1.33,0.32l0.78,0.6l0.29,1.08l0.56,0.72l1.19,0.5l2.66,0.49l3.8,-0.43l1.41,-1.16l1.51,-0.36l0.82,-1.36l-0.45,-1.37l-2.08,-0.84l-1.58,-1.53l0.01,-0.26l2.19,-0.22l0.51,-0.29l0.57,-1.05l0.01,-1.46l-0.76,-0.83l-1.14,-0.38l-0.29,-0.35l-0.13,-1.16l-1.02,-0.71l-1.73,0.8l-1.14,2.49l-0.48,0.19l-2.33,-0.23l-2.46,-0.86l1.02,-2.07l0.44,-4.83l-0.43,-0.87l-1.24,-0.6l-0.34,-0.97l0.77,-1.92l1.25,-1.19l-0.1,-1.11l-0.69,-0.68l-5.22,-0.56l-1.49,-1.19l-1.31,0.0l-6.31,3.83l-3.52,1.36l-1.08,-3.8l0.04,-1.91l-0.29,-1.3l0.17,-0.63l0.63,-0.81l6.92,-5.01l3.97,0.29l1.69,-0.2l2.08,0.6l3.09,-1.44l0.93,-1.88l-0.08,-4.33l2.1,0.41l1.58,-1.07l1.83,1.16l3.25,2.83l0.66,-0.3l-0.02,-0.81l-1.37,-4.06l1.12,-0.61l0.73,-0.87l2.76,-1.71l1.0,-0.29l0.29,-0.38l0.0,-0.68l-0.38,-0.38ZM425.78,92.02l-2.33,3.23l-0.2,1.02l0.4,0.88l1.62,1.66l1.87,1.42l4.07,1.89l4.54,1.06l3.29,1.38l5.18,0.15l1.36,0.89l0.94,-0.17l0.88,-0.6l0.08,-1.67l-0.83,-2.34l-0.98,-0.02l-1.0,0.98l-0.84,0.25l-2.04,-2.41l0.09,-0.43l1.08,-0.41l0.73,-0.75l0.93,-2.18l0.11,-0.73l-0.29,-0.57l-1.4,-0.23l-1.66,-1.43l-2.43,0.17l-5.8,-1.88l-1.82,-0.17l-4.21,0.27l-0.77,0.21l-0.57,0.52Z\", \"name\": \"Pa\\u00eds Vasco\"}, \"ES-RI\": {\"path\": \"M442.94,162.21l-2.82,-0.2l-3.26,0.19l-1.96,-1.27l-1.88,-0.21l-0.77,-0.4l-0.15,-0.82l0.62,-1.89l1.41,-1.88l0.28,-1.39l-0.34,-2.01l-0.78,-0.56l-0.83,-0.23l-1.77,0.18l-1.05,0.65l-0.79,1.01l-0.68,1.58l-0.24,1.32l0.15,1.27l-0.29,0.64l-0.66,0.73l-3.6,1.95l-2.2,-0.66l-0.45,-2.75l-1.16,-2.44l-1.45,-0.38l-3.83,0.27l-0.85,-0.43l-1.85,-3.23l-1.48,-1.12l-0.62,-1.84l-2.15,-3.44l1.21,-1.52l0.75,-2.78l0.21,-1.94l-0.67,-3.43l-0.1,-2.24l-0.59,-1.13l1.67,-0.46l0.6,-0.43l1.2,-2.18l-0.15,-4.0l0.58,-2.56l-0.78,-1.83l-1.43,-1.56l0.8,-2.53l0.04,-0.94l-0.24,-0.7l-0.64,-0.54l-2.06,0.19l0.05,-0.39l1.91,-2.13l1.57,-2.41l-0.01,-0.97l-0.89,-1.63l0.1,-0.23l0.81,-0.38l2.71,-0.31l4.21,0.5l2.79,0.8l4.25,-1.43l0.09,1.5l0.46,0.86l0.56,0.14l0.45,-0.29l0.05,0.19l-0.91,1.35l0.07,0.76l0.5,0.64l0.85,0.35l1.24,-0.52l0.77,0.1l0.43,-0.28l0.64,-1.97l0.4,-0.39l0.75,-0.29l0.69,0.21l2.78,2.19l0.25,4.48l4.64,3.0l0.48,-0.12l0.61,-0.68l0.46,-0.04l0.39,0.3l0.1,1.19l0.68,0.25l1.53,-1.16l2.18,0.05l0.41,-0.59l-0.33,-0.49l0.2,-0.44l0.91,-0.82l0.67,1.41l2.04,1.19l2.3,0.71l2.83,0.43l2.88,1.05l4.18,-0.6l0.55,0.21l1.85,1.29l2.17,2.3l1.09,0.37l1.43,0.15l4.38,-0.33l1.71,0.21l1.04,0.94l-0.74,1.39l0.92,1.4l1.87,0.73l3.48,-0.01l4.85,5.89l2.46,1.81l0.05,1.62l0.59,0.96l1.82,0.0l2.16,1.84l3.19,1.83l1.37,0.42l1.74,1.23l-0.04,1.68l0.6,1.29l-0.23,1.26l0.4,1.54l-0.34,0.57l-0.94,0.15l-2.18,-0.93l-2.47,0.65l-1.4,-0.58l-1.39,0.03l-0.6,0.56l-0.84,1.66l-3.65,4.19l-0.43,2.07l0.35,1.87l0.54,1.04l2.43,2.06l0.43,1.4l-0.77,2.22l-4.72,2.75l-2.17,0.34l-1.88,-1.3l-1.66,-0.69l-1.2,-0.09l-4.08,-1.23l-0.66,-2.16l0.84,-1.35l-0.17,-0.96l-0.78,-1.31l-1.53,-1.28l-0.5,-1.05l0.01,-0.98l1.67,-1.66l0.09,-0.8l-0.4,-0.77l-0.9,-0.61l-2.38,-0.36l-1.27,0.15l-4.13,1.28l-0.83,-0.89l-0.67,-2.59l-1.23,-0.82l-3.46,-0.39l-4.16,0.32l-1.87,0.61l-2.84,2.07l-1.78,-0.17l-0.54,0.81l-0.26,3.15l-1.35,1.35l-2.32,4.48Z\", \"name\": \"La Rioja\"}, \"ES-AS\": {\"path\": \"M186.77,19.88l2.76,1.17l3.53,-0.67l3.43,-0.01l4.28,-1.41l0.98,-0.95l0.61,-0.1l1.96,1.48l0.96,0.34l5.21,0.58l1.07,-0.51l1.2,0.43l2.93,-1.67l7.57,0.0l0.72,-1.07l-0.63,-1.47l0.66,-0.77l-0.17,-1.1l1.55,0.01l0.96,-0.48l0.78,-1.9l0.71,0.04l2.03,1.01l1.35,1.18l3.59,4.28l1.22,1.89l0.78,0.18l0.39,-0.3l0.18,-0.67l0.99,1.65l3.5,0.57l13.22,-0.56l1.69,0.45l0.14,0.87l-0.74,1.28l-1.1,1.06l-0.05,0.52l0.45,0.62l0.53,0.11l2.72,-1.23l1.07,-1.67l3.44,0.11l0.96,0.35l4.71,3.16l2.33,0.86l5.76,0.3l1.39,0.39l0.62,1.02l0.56,0.13l0.64,-0.41l4.43,1.36l2.35,-1.16l2.14,0.99l4.64,0.98l5.34,2.54l1.46,0.45l14.29,1.27l-0.05,2.87l-1.56,3.22l1.01,2.8l0.09,1.97l-0.52,1.12l-0.63,0.38l-0.48,-1.04l-0.58,-0.52l-1.41,-0.36l-1.46,0.05l-1.14,0.69l-0.84,1.1l-0.76,0.45l-3.21,0.02l-1.65,0.7l-0.72,1.41l0.15,1.32l-0.43,2.65l-0.74,1.14l-1.79,-0.25l-3.7,0.59l-1.72,-2.97l-1.38,-1.17l-1.48,-0.39l-0.92,0.16l-3.5,1.91l-1.08,0.99l-1.97,1.1l-2.43,0.68l-1.29,0.68l-0.69,0.68l-0.68,1.3l-0.87,2.7l-1.32,1.58l-0.55,0.09l-1.45,-0.62l-0.6,0.09l-3.52,1.74l-6.17,0.75l-3.48,-0.54l-0.99,0.17l-0.89,0.69l-0.44,1.85l-0.44,0.51l-1.14,0.35l-3.56,0.07l-0.65,0.59l-0.71,1.46l-1.68,-0.03l-2.07,0.69l-1.75,-0.9l-3.79,-0.61l-1.93,-0.94l-2.82,-0.03l-1.84,0.91l-1.68,2.76l-0.96,2.54l-1.02,0.66l-3.5,0.05l-4.71,-2.37l-2.33,-1.67l-0.56,-0.97l-0.47,-1.99l-0.49,-0.71l-0.75,-0.42l-2.14,0.4l-4.24,-0.66l-0.82,0.49l-0.82,2.29l-1.13,0.54l-0.75,0.06l-2.6,-0.96l-1.76,-0.29l-1.08,0.33l-0.5,0.68l-0.16,1.12l-0.45,0.26l-1.14,-0.3l-2.84,-1.42l-2.12,-0.35l-1.26,-0.95l-1.42,-0.28l-2.02,0.99l-1.38,2.32l-0.27,1.35l-1.66,0.61l-1.84,0.08l-0.6,0.5l-0.16,0.7l0.39,0.77l1.84,0.92l0.18,0.49l-0.19,0.42l-3.28,1.82l-3.88,1.16l-2.89,-0.25l-1.96,-0.71l-4.38,0.26l-2.04,0.89l-1.51,1.62l-0.7,0.28l-0.52,-0.91l-1.19,-0.61l-1.99,-0.34l-0.54,-4.06l-2.21,-2.53l-0.69,-0.32l-1.38,0.02l-0.95,-0.3l-2.25,-2.75l-0.7,0.04l-0.3,0.43l-0.17,2.05l-0.25,0.16l-0.36,-0.21l-0.42,-0.74l-0.3,-0.9l0.12,-0.79l1.47,-1.09l1.15,-2.99l0.56,-0.26l1.41,-0.0l3.03,-1.4l2.47,-2.25l0.25,-1.02l-0.17,-1.13l-1.73,-2.82l-0.96,-0.71l-1.12,0.52l-0.52,1.24l-0.63,0.65l-2.79,1.42l-0.75,-0.42l-0.83,-1.59l0.52,-2.1l-0.14,-1.42l-1.97,-0.99l-0.67,-0.92l-1.09,-0.29l-1.81,-1.56l-0.71,-1.46l-0.66,-4.05l-1.63,-1.07l-0.79,-0.83l-0.8,-1.48l-0.28,-3.17l-0.3,-0.68l-0.82,-0.54l-1.01,0.06l-0.79,-0.58l0.21,-2.65l0.89,-0.5l2.53,0.12l4.2,-4.36l0.49,-1.74l0.4,-0.3l0.92,-4.1l0.92,-0.8l0.53,-1.9l3.52,-0.79l6.36,-0.23l1.09,0.31l3.88,-0.31l2.64,0.78l1.78,0.21l3.76,-1.94l3.19,0.34l3.3,1.19l2.38,1.29l1.68,-0.65l1.62,0.02l0.39,-0.5l-0.25,-1.24Z\", \"name\": \"Principado de Asturias\"}, \"ES-CT\": {\"path\": \"M647.31,291.34l-4.07,-1.73l-0.88,-1.03l-0.28,-1.32l-1.34,-1.27l-2.1,-1.15l-4.65,-1.63l-1.46,-0.78l-0.96,-1.67l0.63,-1.86l0.01,-0.92l-1.52,-1.28l-1.46,-0.47l-0.65,-0.64l-0.85,-1.64l-0.4,-0.15l-1.26,0.28l-1.4,-0.27l-0.21,-0.61l3.79,-2.32l2.97,-4.44l0.04,-1.0l-0.89,-2.2l-0.54,-2.84l0.69,-2.77l1.67,-3.32l0.28,-2.02l-1.17,-3.55l-2.96,-2.04l-1.43,-4.53l0.21,-1.78l0.75,-0.68l1.35,-0.26l1.0,-1.2l1.14,-0.31l1.2,-0.78l0.56,-0.78l0.86,-3.58l3.07,-2.23l-0.43,-4.25l1.6,-3.62l-0.18,-1.76l-0.63,-1.32l-0.96,-0.98l-1.53,-0.72l-0.15,-1.33l0.9,-1.38l0.67,-2.4l0.13,-3.79l0.53,-0.49l2.66,-1.12l2.79,-4.52l-0.7,-2.24l-0.08,-1.47l-0.38,-0.72l-0.84,-0.43l-3.27,-0.25l-0.66,-0.57l-0.54,-2.62l-0.89,-2.12l-0.06,-1.15l0.84,-1.28l1.6,-1.51l2.53,-3.7l2.99,-0.75l0.83,-0.5l2.46,-4.03l2.69,-1.24l1.1,-1.67l1.51,-0.96l0.9,-1.14l0.3,-0.79l-0.3,-3.56l-1.77,-2.07l1.01,-1.34l1.61,-0.77l1.11,-1.76l1.2,-0.69l0.68,-0.99l0.29,-0.97l-0.06,-1.29l0.88,-1.95l1.06,-3.98l0.6,-0.52l0.62,-1.83l0.39,-2.85l-0.34,-1.52l0.12,-0.83l0.91,-4.28l0.9,-1.62l0.69,-2.32l0.08,-3.22l0.44,-2.04l-0.32,-5.55l-0.91,-3.34l-1.2,-1.51l-0.85,-3.49l0.14,-0.53l1.27,-0.4l0.48,-0.51l0.03,-1.71l1.9,-3.94l0.61,-3.81l-0.42,-0.69l-2.15,-0.7l-0.99,-0.65l-2.63,-5.56l-0.69,-0.62l0.1,-1.55l-0.47,-1.51l-0.85,-1.12l-0.71,-0.32l0.84,-1.12l0.08,-0.55l-0.61,-0.84l0.85,-2.32l-0.11,-2.03l0.25,-1.03l1.27,-0.5l1.71,-0.13l1.07,0.11l3.44,1.16l2.36,0.06l2.79,1.65l1.96,0.78l1.54,1.42l0.84,0.39l2.07,-1.0l2.14,1.39l5.58,0.38l1.25,0.39l1.05,0.94l1.79,3.86l1.44,1.04l0.9,0.07l2.14,-0.69l8.02,0.02l1.12,0.31l-0.1,1.26l0.33,0.36l1.18,0.36l2.37,3.76l1.09,3.02l0.86,1.15l-0.67,2.22l0.55,0.64l-1.04,1.81l-0.27,1.13l0.44,0.48l1.3,-0.17l0.91,0.82l0.16,1.03l-2.52,1.36l-0.17,0.58l1.83,2.88l0.16,1.33l0.94,0.64l3.99,0.54l0.79,-0.12l0.88,-0.52l0.96,-1.32l4.0,-0.52l2.22,-0.92l0.98,-2.65l1.03,0.51l0.93,0.02l1.31,-0.82l0.23,0.51l1.22,0.5l4.14,0.59l1.29,0.54l3.81,2.59l2.78,0.43l0.84,0.37l0.81,1.35l0.84,3.28l0.65,1.45l2.41,1.89l1.0,0.14l2.98,-0.54l3.48,-2.91l1.15,-2.31l0.85,-0.4l3.17,0.36l4.05,-1.27l1.9,-0.2l2.55,1.64l3.84,1.82l2.98,0.53l0.45,1.29l1.11,1.46l1.28,1.01l3.55,1.42l0.69,-0.03l0.71,-0.54l0.94,-1.81l1.06,-0.03l4.47,1.31l1.86,-0.09l0.38,-0.43l-0.03,-0.39l-0.86,-1.1l-0.51,-1.45l3.09,-2.69l1.05,-0.54l1.23,-0.09l2.54,0.39l1.5,-0.22l4.17,-3.26l3.24,-0.25l2.17,-1.64l1.92,0.74l1.35,-0.7l2.7,0.24l1.58,2.45l2.32,1.04l3.55,0.13l3.98,-0.69l-0.26,2.59l0.35,1.32l1.58,2.91l0.66,0.63l3.09,-0.21l1.07,1.24l0.73,-0.11l0.56,-0.54l1.8,0.94l-1.43,2.88l-0.45,2.18l-1.38,1.69l-0.87,-0.39l-6.44,-0.26l-1.21,0.9l-0.76,1.99l-0.63,5.54l0.41,1.7l1.25,1.39l3.1,2.07l0.76,1.74l-0.32,3.82l0.85,4.3l1.83,2.21l-0.21,1.53l-1.59,2.78l-0.83,2.26l-0.99,1.05l-4.85,3.08l-3.51,3.72l-8.78,6.51l-2.44,1.05l-2.87,0.71l-1.3,1.53l-1.0,0.41l-1.08,0.99l-0.49,0.98l-2.0,0.26l-8.54,5.47l-13.33,6.16l-1.44,1.49l-3.74,2.57l-4.97,2.14l-2.03,1.55l-1.77,2.44l-3.21,5.66l-1.86,2.59l-2.09,1.96l-4.54,2.5l-2.61,0.74l-4.53,0.47l-4.43,1.15l-1.94,1.0l-2.31,-0.08l-12.47,3.42l-5.68,0.43l-16.54,6.22l-4.61,1.01l-0.77,0.61l-1.42,2.78l-0.65,0.57l-1.95,-1.06l-3.06,0.05l-2.83,0.53l-2.68,1.22l-2.23,1.62l-7.46,7.41l-3.62,4.84l-5.95,5.77l-1.36,2.65l0.16,0.53l3.7,1.81l1.29,-0.17l0.37,-0.81l-0.2,-0.52l0.47,0.25l2.31,2.69l2.63,2.41l1.29,0.68l-0.06,0.65l-0.9,0.72l-0.61,1.15l-0.92,0.58l-4.34,1.32l-1.83,1.63l-1.0,1.29l-1.66,-0.87l-1.99,0.17l-5.63,1.85l-1.37,0.93l-1.14,1.24l-1.01,1.61l-1.86,4.58ZM660.17,284.18l-1.82,2.0l-1.59,1.15l-1.28,0.05l-0.64,-1.18l1.78,0.24l2.15,-0.99l1.4,-1.29Z\", \"name\": \"Catalu\\u00f1a\"}, \"ES-CM\": {\"path\": \"M388.04,228.2l1.28,0.51l3.29,0.18l3.31,-0.63l0.78,-0.46l1.91,-0.05l2.18,-2.4l1.18,-0.61l7.54,1.77l2.35,-0.02l4.4,-0.56l1.52,-0.38l1.17,-0.72l0.98,-1.53l1.11,-0.43l0.67,0.05l0.98,0.51l0.27,0.47l0.78,2.66l1.39,1.02l2.73,0.75l1.79,-0.14l1.86,-1.09l1.26,0.08l1.12,1.63l0.87,0.53l2.86,0.65l0.96,0.47l0.81,0.98l0.67,0.36l1.68,-0.15l0.17,0.25l-0.35,0.71l-0.92,0.65l-0.26,0.54l0.12,0.43l1.86,1.48l-0.55,1.24l0.13,0.8l0.72,0.5l0.88,0.12l2.3,-0.98l0.36,0.24l1.1,2.39l1.61,1.0l0.86,2.32l0.54,0.66l2.64,1.36l1.22,0.03l2.78,-1.31l2.42,1.33l1.03,0.12l1.65,-0.33l1.93,-0.78l1.51,-1.11l3.88,-0.15l2.63,-2.37l2.72,1.97l1.16,1.32l0.99,0.24l0.57,-0.46l0.14,-0.48l-0.28,-2.26l0.58,-2.17l-0.02,-1.11l4.97,-1.59l1.52,0.41l1.9,1.85l1.69,0.72l2.65,2.07l2.23,1.25l3.21,2.74l2.27,3.39l3.54,3.1l1.54,1.83l2.21,1.99l0.69,1.48l-0.25,3.5l0.38,1.48l1.06,1.93l0.99,1.14l1.68,1.14l0.69,1.12l0.16,2.74l-1.07,2.76l-0.13,1.77l1.32,3.62l-0.02,1.74l-1.11,3.27l0.18,2.62l-0.21,0.37l-0.83,0.84l-1.48,0.66l-2.56,-1.23l-2.31,-0.45l-0.79,0.42l-1.52,4.01l-0.08,4.18l-0.74,0.91l-1.92,1.2l-2.71,4.01l-0.9,0.57l-0.81,1.1l0.16,0.6l1.84,0.82l3.74,4.76l0.31,1.07l-0.34,1.64l0.32,1.41l0.36,0.18l1.15,-0.56l0.77,0.1l1.54,0.83l7.89,7.4l0.9,0.21l1.34,-0.46l1.87,0.61l2.43,-0.07l0.06,1.53l-0.69,1.9l-0.18,1.94l0.79,0.93l1.77,1.24l2.27,7.08l0.69,0.67l5.67,0.96l1.74,0.68l1.17,0.09l5.05,-1.15l0.94,2.79l-3.18,1.72l-0.77,1.17l0.62,1.95l-0.39,4.59l-1.47,5.65l-2.76,4.61l-0.24,1.58l0.33,2.68l-0.24,0.48l-0.78,0.78l-1.01,0.38l-1.12,-0.03l-2.25,-1.05l-1.39,0.04l-1.87,1.31l-1.55,1.57l-2.77,5.26l-0.72,0.95l-1.32,0.99l-0.63,1.33l-0.1,0.87l0.3,0.83l-0.22,2.61l0.25,0.61l-0.5,0.74l0.04,1.02l-0.77,2.11l0.05,0.97l1.13,1.76l1.0,0.36l0.36,0.82l1.73,1.33l0.53,2.12l0.31,0.27l1.42,0.01l1.2,-0.32l1.28,0.44l3.7,2.31l1.31,0.08l8.58,2.77l0.35,0.97l-0.51,2.61l-0.01,3.13l-1.48,4.13l-1.67,2.04l-1.86,4.34l-0.5,2.08l0.43,2.32l6.96,8.54l2.13,1.45l5.76,-0.37l1.21,-0.28l1.77,-0.89l1.82,0.82l2.42,4.36l-0.34,2.55l0.89,2.95l-0.4,0.97l-0.1,1.23l-1.87,1.27l-0.33,1.47l0.78,2.74l2.53,3.58l-2.17,1.59l-1.07,0.4l-3.27,0.05l-0.84,0.26l-5.24,-4.28l-0.53,-2.13l-0.46,-0.64l-3.81,-1.33l-4.17,1.05l-1.35,0.91l-1.67,1.7l-3.55,2.02l-0.83,-0.2l-0.91,-1.02l-0.8,-0.08l-0.94,0.49l-3.34,3.66l-1.13,2.48l-0.26,3.16l-0.57,0.96l-1.42,1.21l-1.15,2.45l1.06,4.47l0.51,6.68l-0.18,1.18l-0.8,1.12l-4.71,3.88l-3.8,1.21l-1.6,-0.25l-1.38,-0.9l-0.38,-1.03l0.12,-1.79l-0.68,-0.91l-0.94,-0.35l-1.08,0.17l-1.12,-0.65l-1.03,-0.09l-1.27,0.49l-0.46,0.46l-1.25,0.34l-0.3,1.06l-3.34,2.02l-2.51,1.93l-2.54,1.22l-4.18,0.96l-1.9,-1.57l-1.73,0.05l-1.16,0.75l-1.7,2.04l-2.74,2.52l-2.8,0.94l-2.81,2.39l-2.61,5.09l-4.5,5.61l-1.28,3.48l-0.54,0.16l-7.39,-2.13l-4.93,-2.4l6.48,-8.62l0.2,-0.96l-0.38,-2.01l0.9,-1.4l0.3,-2.39l-0.68,-1.63l-2.08,-1.37l-0.35,-0.68l-0.73,-7.58l-0.28,-0.3l-4.41,-1.29l-0.58,-0.6l-0.34,-0.78l0.26,-2.32l-0.3,-1.75l0.2,-1.44l-0.38,-0.49l-1.68,-0.68l-3.09,0.04l-2.09,0.73l-2.67,-1.11l-2.44,-1.57l-0.5,0.05l-2.24,2.15l-3.58,2.0l-2.06,1.82l-1.39,-0.91l-1.41,-0.38l-1.94,0.15l-1.15,0.53l-1.85,1.5l-0.32,1.57l-3.05,-3.84l-0.8,-0.45l-0.82,0.05l-2.91,2.13l-1.3,0.33l-2.23,-0.68l-5.77,-0.48l-3.13,-1.27l-1.13,-0.07l-1.59,0.22l-1.19,0.59l-0.69,0.79l-0.49,1.84l-1.14,1.36l-1.45,0.91l-2.38,0.82l-1.77,-0.13l-2.09,-0.56l-0.54,-0.63l-0.58,-1.82l-0.61,-0.57l-0.75,-0.12l-0.84,0.09l-0.87,0.54l-0.87,3.07l-0.96,0.38l-5.45,-0.98l-1.73,-0.73l-1.59,0.31l-2.51,-0.75l-1.99,0.37l-1.13,0.71l-1.17,1.92l-1.16,0.49l-2.14,0.35l-18.62,-0.75l-2.52,-0.89l-2.81,-0.13l-0.82,0.26l-0.52,0.68l-0.26,3.49l-0.57,0.1l-7.47,-2.55l-2.87,-1.36l-0.61,-0.37l-1.87,-2.58l-1.86,-1.98l-1.75,-1.5l-1.95,-1.24l-1.56,-0.29l-0.91,-0.47l-1.51,-2.27l-2.33,-1.82l-2.3,-1.16l-0.74,-1.11l-0.93,-0.67l-2.82,-1.29l-2.97,-0.46l-2.17,-1.19l-0.97,-1.49l-0.25,-3.24l-0.44,-0.87l-0.84,-0.44l-4.06,0.13l-2.08,-0.85l-3.23,-2.45l2.01,-0.36l1.2,-1.27l2.29,-7.71l1.28,-2.51l0.87,-0.92l0.97,-0.42l2.4,0.17l0.81,-0.21l0.4,-0.63l0.61,-3.05l-0.25,-1.15l-0.51,-0.69l-1.92,-0.38l-2.96,-1.17l-0.41,-0.97l-0.2,-1.89l-0.89,-0.92l-0.61,-2.71l0.68,-0.39l0.48,0.1l3.55,1.62l1.31,-0.36l1.81,-1.15l0.26,-0.81l-0.17,-0.73l-2.03,-1.7l-0.19,-1.84l1.27,-4.84l2.49,-2.69l2.13,0.35l1.82,-0.33l1.01,0.17l3.8,1.89l0.86,0.04l0.37,-0.59l-0.84,-1.51l-2.92,-3.4l-1.26,-2.47l-1.39,-3.74l-0.03,-0.71l0.35,-0.49l1.87,-0.86l0.77,-1.0l0.97,-2.89l0.96,-1.83l0.25,-1.81l-0.98,-2.75l-0.7,-0.1l-0.66,0.9l-3.18,1.69l-0.99,1.19l-3.0,1.01l-4.22,2.08l-4.0,-2.02l-1.42,-1.19l-3.77,-4.47l-1.06,-1.7l-2.6,-1.24l-2.82,-2.89l-2.41,-3.13l-2.42,-2.0l-0.05,-0.64l2.67,-4.35l1.11,-5.4l-0.07,-0.8l-1.53,-2.27l0.37,-2.2l-0.6,-1.86l-0.84,-0.55l-2.47,0.42l-1.39,1.2l-1.54,2.08l-3.15,-0.38l-0.39,-0.85l0.42,-3.6l0.16,-0.97l1.22,-2.38l-0.04,-0.92l-1.15,-1.61l-1.24,-0.81l-2.51,0.02l-1.57,0.39l-0.19,-2.81l1.11,-6.37l0.25,-6.36l0.6,-2.73l1.87,-1.01l6.26,0.79l2.72,1.48l1.67,0.04l1.86,-0.6l3.37,-2.71l1.32,-1.48l2.3,-0.91l0.73,0.16l0.41,2.31l0.6,0.78l1.15,0.27l1.56,-0.35l1.03,-0.46l1.98,-1.56l1.28,-2.94l5.05,-3.78l0.86,-1.22l0.72,-2.76l4.36,-0.42l1.46,-0.46l0.58,0.24l0.74,4.55l1.01,1.14l2.21,0.86l1.05,-0.03l3.47,-1.19l1.45,0.93l2.02,0.16l0.77,-0.39l1.01,-1.15l3.82,-2.08l2.98,-3.5l1.6,-2.41l0.65,0.66l-0.1,2.4l0.71,1.89l3.26,2.69l0.87,-0.18l1.03,-0.87l1.52,-2.31l0.9,-0.82l1.59,-0.28l1.67,-1.01l0.36,0.02l2.79,2.74l2.53,0.54l2.1,-1.14l0.35,0.05l1.87,0.91l1.91,2.23l4.37,1.54l2.15,1.04l3.07,0.79l1.81,1.62l2.11,-0.11l1.44,1.82l0.91,0.53l1.02,0.26l1.6,-0.26l3.06,0.53l3.71,2.06l0.09,1.79l-1.39,3.14l-2.41,1.35l-3.05,3.26l-0.97,0.83l-1.64,0.68l-1.32,1.46l-4.87,1.37l-1.52,1.04l-0.1,0.47l0.39,0.74l3.09,2.18l1.06,0.16l0.96,-0.22l2.25,-1.77l1.94,-1.98l2.36,-0.59l1.94,-1.16l2.09,-0.76l0.35,-0.65l0.09,-1.38l2.26,-0.73l1.43,-1.02l3.23,-0.94l0.91,-1.53l0.7,-0.62l6.16,0.26l2.23,-0.95l1.05,0.83l1.1,0.19l3.61,-0.76l3.96,-2.11l2.47,-0.84l0.94,0.55l0.27,0.99l0.41,0.34l3.3,-0.16l1.54,-0.49l1.74,-1.65l0.48,-1.44l-1.55,-3.62l-0.04,-0.65l0.39,0.11l0.5,-0.46l-0.65,-3.41l-0.28,-3.71l-1.15,-2.68l-0.89,-0.68l-1.09,0.11l-1.71,1.26l-1.27,1.46l-0.43,-0.37l-0.15,-1.09l0.67,-4.06l1.6,-1.99l0.69,-2.2l0.31,-3.02l-0.27,-1.23l-1.09,-1.79l-2.52,-1.51l-0.22,-4.93l-0.36,-1.14l-3.01,-2.55l-0.91,-0.12l-1.86,0.76l0.4,-1.28l-0.35,-1.47l-1.59,-1.39l-0.56,-1.09l0.5,-4.06l-0.24,-0.45l-0.8,-0.15l-0.65,0.36l-0.91,-0.45l-2.49,-3.28l-0.83,0.23l-0.34,0.55l-1.76,0.16l-1.07,-0.97l0.01,-0.89l1.06,-1.86l-0.48,-3.5l-0.95,-1.6l-2.45,-1.05l1.19,-2.42l0.65,-3.42l1.47,-1.52l-0.23,-2.43l2.59,-7.18l0.17,-2.11l-1.77,-5.8l-3.26,-1.74l-1.29,-1.79l-2.4,-2.41l-0.16,-0.88l1.48,-0.19l5.05,-3.83l2.03,-0.63l0.56,-2.44l-0.07,-0.77l-0.55,-0.93Z\", \"name\": \"Castilla-La Mancha\"}, \"ES-CL\": {\"path\": \"M162.52,126.18l1.16,-1.77l0.51,-3.06l-1.09,-2.34l-4.67,-1.31l-1.95,-1.19l-0.99,-0.0l-1.3,0.43l-1.35,1.12l-0.52,0.06l-2.78,-0.63l-2.48,-0.12l0.44,-1.29l0.1,-2.25l1.16,-2.7l-0.1,-3.5l0.23,-0.61l1.74,-1.61l-0.18,-1.3l-1.28,-1.95l-0.21,-1.06l0.4,-1.33l0.91,-1.17l1.95,-0.89l1.42,-1.45l1.52,0.08l0.99,-0.42l4.33,-5.28l0.72,-2.15l-0.55,-2.95l0.1,-0.93l1.1,-1.32l0.82,-2.04l1.86,0.3l1.01,0.52l0.63,1.0l0.49,0.11l1.1,-0.52l1.47,-1.58l1.73,-0.76l4.18,-0.24l1.8,0.69l3.15,0.26l4.13,-1.22l3.47,-1.93l0.45,-0.78l-0.04,-1.03l-2.11,-1.15l-0.17,-0.53l1.94,-0.23l1.93,-0.73l0.4,-0.52l0.12,-1.13l1.27,-2.15l1.6,-0.72l0.96,0.25l1.2,0.94l2.17,0.37l2.79,1.4l1.51,0.36l0.79,-0.26l0.38,-0.6l0.16,-1.11l0.9,-0.44l4.12,1.24l1.17,-0.1l1.45,-0.76l0.49,-0.76l0.42,-1.64l0.34,-0.15l4.04,0.68l1.88,-0.43l0.77,0.7l0.44,1.91l0.71,1.24l2.49,1.8l2.01,1.21l2.93,1.26l3.86,-0.04l0.93,-0.33l0.58,-0.63l1.03,-2.67l1.6,-2.62l1.42,-0.64l2.45,0.04l1.88,0.93l3.74,0.6l1.21,0.76l1.51,0.12l1.59,-0.65l1.74,0.03l0.6,-0.6l0.7,-1.43l3.41,-0.06l1.48,-0.45l0.72,-0.77l0.52,-1.96l0.39,-0.26l0.71,-0.14l3.57,0.54l6.3,-0.77l3.53,-1.75l1.72,0.54l0.96,-0.11l1.77,-1.97l0.88,-2.73l1.16,-1.71l3.56,-1.26l2.05,-1.15l1.08,-0.99l3.39,-1.85l1.09,-0.01l1.71,1.15l1.72,2.98l-0.27,4.73l0.61,2.7l1.16,1.27l2.68,1.46l0.79,1.46l1.25,1.23l0.73,2.76l0.38,0.31l1.39,0.02l1.14,-0.35l3.27,-0.02l2.52,-0.52l3.23,0.14l2.33,-1.26l1.86,-0.18l1.8,-0.99l1.64,0.23l2.04,1.23l1.97,3.6l1.02,0.77l6.8,2.54l0.77,0.55l0.16,2.97l0.81,5.05l0.65,1.44l1.46,0.37l1.76,-1.31l1.39,-0.4l0.7,0.54l0.08,0.45l-0.42,0.74l-2.33,0.68l-0.48,0.3l-0.36,0.72l0.24,0.92l1.79,1.69l3.24,0.73l1.48,1.9l0.44,0.19l2.82,-0.85l1.82,-4.06l0.54,-0.38l-0.03,4.25l0.29,0.44l2.48,0.66l3.27,-1.02l2.28,-2.12l3.45,-0.27l0.76,-0.49l0.44,-0.73l0.01,-1.31l-0.67,-1.5l-0.11,-2.25l-0.45,-0.93l-0.7,-0.36l-0.9,-0.03l-0.94,0.53l-1.33,1.7l-0.59,-0.22l-0.17,-0.4l-0.28,-1.56l0.61,-1.3l1.79,-0.17l1.99,-1.28l0.49,-0.81l-0.15,-0.97l-0.89,-1.27l-1.2,-0.7l-1.38,0.37l-1.46,2.17l-2.72,1.36l-1.04,-0.21l-1.06,-1.41l0.07,-1.12l2.0,-5.19l2.25,-1.44l1.39,-1.53l2.76,-1.35l0.9,-1.03l0.31,-2.39l1.25,-0.35l1.96,0.15l1.41,-0.49l3.0,-2.25l2.57,-3.21l2.11,-1.93l0.98,0.13l1.58,1.13l3.87,0.82l1.84,0.85l4.54,0.45l1.97,-0.18l4.05,-1.57l5.57,-3.57l1.41,-0.26l1.57,1.23l3.73,0.28l1.33,0.21l0.38,0.36l0.01,0.54l-1.12,0.94l-0.87,2.17l0.09,1.0l0.45,0.71l1.2,0.56l0.25,0.42l-0.43,4.66l-1.06,2.06l0.07,0.44l0.96,0.7l2.09,0.6l2.67,0.25l0.97,-0.5l1.15,-2.5l0.93,-0.45l0.28,0.11l0.31,1.37l0.63,0.66l1.15,0.38l0.46,0.74l-0.56,1.38l-2.43,0.19l-0.42,0.39l0.06,1.05l0.96,1.2l0.94,0.67l1.86,0.67l0.28,0.74l-0.46,0.8l-1.5,0.34l-1.23,1.09l-3.47,0.4l-3.48,-0.86l-0.64,-1.59l-1.16,-0.89l-1.63,-0.36l-2.36,0.27l-0.87,0.66l-2.48,3.4l-0.63,1.39l0.26,1.36l3.04,3.62l1.37,0.58l0.55,-0.45l0.09,-1.02l0.84,-1.31l0.95,-0.36l1.43,-0.01l1.05,-0.86l0.88,-1.29l0.48,0.07l0.05,1.3l-1.87,2.96l-0.69,1.69l0.27,1.45l1.17,1.45l-0.42,1.27l0.38,0.55l1.21,0.09l3.57,-1.42l1.89,1.01l1.86,1.75l2.26,1.39l1.61,2.03l1.77,0.86l4.25,3.57l0.8,1.37l-4.12,1.44l-2.69,-0.78l-4.32,-0.51l-2.91,0.32l-1.13,0.5l-0.4,1.16l0.72,1.04l0.21,0.99l-1.45,2.22l-2.06,2.4l0.01,0.99l0.56,0.5l1.71,-0.29l0.5,0.23l0.07,1.02l-0.81,2.82l0.33,0.82l1.22,1.04l0.67,1.58l-0.59,2.3l0.14,3.98l-0.96,1.71l-2.23,0.83l-0.32,0.77l0.67,1.23l0.08,2.1l0.67,3.3l-0.92,4.49l-1.13,1.3l-0.1,0.8l2.22,3.49l0.73,2.0l1.46,1.09l2.02,3.39l1.18,0.56l4.83,-0.12l0.96,2.06l0.48,2.94l0.28,0.32l2.59,0.77l2.36,-1.0l1.8,-1.12l0.83,-0.89l0.46,-1.05l0.06,-2.42l1.29,-2.29l0.63,-0.41l2.14,0.01l0.37,0.22l0.23,0.92l-0.19,1.71l-1.2,1.4l-0.89,2.53l-0.03,0.96l0.48,0.71l0.96,0.5l1.89,0.21l1.81,1.21l0.76,0.17l2.93,-0.24l3.11,0.19l0.36,-0.28l2.3,-4.52l1.44,-1.5l0.41,-3.53l1.67,0.19l2.94,-2.11l1.65,-0.55l4.07,-0.32l3.27,0.38l0.75,0.52l0.61,2.5l1.39,1.29l0.84,-0.03l3.64,-1.28l1.1,-0.12l2.07,0.32l0.54,0.35l0.2,0.75l-1.6,1.53l-0.13,1.56l0.65,1.41l1.6,1.36l0.6,1.04l0.13,0.43l-0.65,0.73l-0.21,0.87l0.44,1.97l0.53,0.8l0.77,0.43l4.75,1.02l1.54,0.65l1.44,1.19l0.82,0.2l3.11,-0.68l3.77,-2.3l0.37,3.8l0.97,2.84l1.36,1.98l-0.34,1.84l-1.37,2.46l-0.24,1.1l1.81,2.98l0.72,1.85l1.41,1.48l-0.14,0.98l-1.71,3.69l-2.46,0.76l-1.38,1.4l-1.34,0.74l-1.84,2.23l-2.61,-0.53l-0.85,0.38l-1.0,1.07l-0.13,1.42l0.56,1.06l0.37,2.31l-0.18,3.04l0.23,1.54l1.28,2.24l0.62,4.19l-2.01,0.74l-2.26,1.48l-0.77,0.18l-0.39,-0.5l0.09,-2.01l-0.53,-1.39l-1.73,-0.83l-2.32,-0.26l-0.74,0.42l-0.54,0.8l-0.77,4.78l-0.71,1.09l-1.27,0.82l-0.55,0.85l-0.38,1.68l-0.1,2.91l0.94,2.32l0.69,6.67l0.95,1.32l3.52,0.81l1.83,1.69l0.03,1.11l-0.6,2.31l0.22,2.38l-0.33,-0.03l-1.15,-1.31l-2.46,-1.9l-0.72,-0.28l-0.93,0.44l-2.06,2.0l-3.78,0.11l-1.71,1.19l-1.71,0.69l-2.3,0.2l-1.71,-1.11l-1.04,-0.23l-2.91,1.35l-0.69,-0.03l-1.7,-0.76l-1.03,-0.87l-0.9,-2.39l-1.66,-1.06l-1.2,-2.49l-0.97,-0.45l-2.24,0.99l-0.88,-0.23l0.48,-1.1l-0.0,-0.81l-0.5,-0.77l-1.37,-0.84l0.85,-0.6l0.46,-0.75l0.12,-0.85l-0.39,-0.57l-0.82,-0.22l-1.22,0.19l-1.14,-1.15l-1.19,-0.62l-2.81,-0.63l-0.61,-0.33l-1.46,-1.87l-1.64,-0.11l-2.04,1.14l-1.47,0.09l-2.41,-0.67l-1.1,-0.79l-1.05,-3.13l-1.47,-0.8l-0.97,-0.05l-1.4,0.54l-1.08,1.6l-0.89,0.57l-1.38,0.35l-6.58,0.56l-7.54,-1.78l-1.79,0.85l-1.82,2.18l-1.84,0.05l-0.88,0.49l-3.09,0.6l-3.18,-0.17l-1.73,-0.72l-0.47,0.13l-0.22,0.68l0.83,1.42l-0.26,2.29l-1.93,0.58l-5.06,3.85l-1.62,0.01l-3.06,0.67l-2.21,1.34l-4.08,4.82l-3.88,2.93l-2.9,4.79l-1.09,0.74l-5.65,1.95l-0.85,0.67l-2.17,2.84l-0.93,1.68l-0.35,1.27l0.2,1.87l-0.88,2.1l-0.34,2.63l-0.98,2.46l-1.98,0.64l-2.86,-0.37l-2.08,1.37l-4.81,7.31l-0.46,1.71l-0.34,3.76l-1.16,0.69l-2.97,0.88l-1.28,-0.59l-0.87,-1.44l-1.09,0.13l-0.35,0.67l0.42,2.65l-0.28,1.45l-1.45,1.53l-0.57,1.1l0.02,5.33l0.23,1.15l-0.87,3.08l0.28,1.51l-2.92,0.6l-1.85,-0.4l-1.32,0.69l-0.98,1.39l-0.56,3.3l-1.06,1.94l-0.67,0.45l-1.54,0.27l-1.69,-1.85l-1.02,0.08l-0.47,0.64l-0.03,0.78l0.45,2.95l-1.18,2.25l-0.57,2.96l-0.8,1.31l-1.87,0.78l-2.26,0.42l-2.36,-1.1l-0.43,-0.93l-0.59,-4.04l-0.66,-0.71l-5.31,0.89l-1.34,-0.03l-0.76,0.69l-0.57,2.64l-0.71,0.95l-5.02,3.75l-1.3,2.96l-1.8,1.4l-2.23,0.69l-0.72,-0.2l-0.75,-2.88l-0.72,-0.46l-0.83,0.05l-2.6,1.05l-1.37,1.52l-3.31,2.65l-1.52,0.46l-1.39,-0.05l-2.71,-1.47l-6.25,-0.79l-2.06,-3.94l-0.15,-4.38l0.91,-2.48l0.02,-0.48l-0.42,-0.64l-1.63,-0.05l-3.33,0.98l-3.72,3.41l-1.3,0.44l-2.47,0.08l-2.4,-0.85l-1.61,-0.94l-1.54,-2.12l-4.07,-3.32l-2.69,-1.08l-2.49,0.79l-1.18,-0.13l-0.28,-0.42l0.69,-1.6l-0.07,-0.94l-0.94,-1.7l-0.87,-0.26l-4.94,1.89l-0.6,0.53l-0.94,2.32l-0.81,0.63l-0.69,-0.05l-3.96,-1.82l-2.35,-2.13l-4.46,-2.15l1.56,-3.23l-0.05,-0.81l-0.52,-0.5l-2.09,-0.89l-0.38,-0.35l-0.14,-0.97l-0.29,-0.32l-1.74,-0.58l-1.73,-1.69l-2.26,-1.47l-1.4,-0.3l-0.99,0.13l-3.63,2.38l-2.08,0.5l-1.82,1.42l-0.89,1.75l-0.49,0.33l-2.65,0.7l-2.02,1.89l-4.85,2.06l-2.07,1.63l-0.83,1.15l0.26,2.53l-0.98,1.22l-5.49,1.23l-2.13,1.02l-1.91,-0.78l-0.71,0.12l-2.03,1.09l-1.7,-0.32l-1.85,0.37l-1.73,-0.88l-1.89,-1.94l0.22,-1.03l3.78,-3.11l1.22,-2.17l-0.08,-0.48l-2.18,-2.06l-1.46,-2.39l-0.36,-2.64l1.16,-2.9l1.52,-2.16l0.25,-1.21l-0.42,-1.77l-1.95,-2.78l-0.13,-1.34l2.38,-5.68l-0.14,-2.68l-1.5,-6.94l0.37,-3.44l-0.29,-1.56l0.08,-1.89l1.08,-0.55l0.27,-1.3l-0.48,-1.37l-1.7,-0.8l-0.42,-0.56l-1.99,-5.41l-0.98,-1.63l-2.63,-3.07l-0.11,-0.87l0.69,-1.18l0.23,-1.44l1.1,-0.57l3.94,0.36l2.12,-0.31l0.95,-0.96l2.66,-3.99l0.55,-1.59l-0.13,-2.23l0.19,-0.48l3.19,-3.13l0.87,-2.03l2.96,-4.22l5.28,-0.24l4.62,-2.16l2.28,-1.77l2.12,-2.19l2.04,-3.32l0.95,0.13l0.52,-0.34l0.22,-1.84l1.26,-0.68l2.0,-0.15l0.37,-0.39l0.01,-0.64l2.45,-3.96l-0.13,-2.0l0.35,-0.74l1.7,-1.81l3.15,-4.65l-0.01,-0.47l-1.58,-2.16l-2.82,-2.98l-3.11,-2.03l-3.28,-1.21l-5.42,-1.12l-1.18,0.07l-1.74,1.52l-1.45,0.62l-1.61,-0.61l-0.79,-1.24l-0.52,-3.36l-0.9,-2.18l1.1,-2.31l1.61,-7.23l0.74,-1.63l-0.24,-0.54l-2.8,-0.75l-0.31,-0.37l0.51,-3.78l-0.35,-1.66l-1.04,-1.18l-1.6,-0.68l-0.52,0.2l-0.81,1.73l-2.02,0.63l-4.58,0.2l-1.76,-0.54l-2.33,-3.61l-2.29,-0.53l-0.46,0.33l-0.39,2.46l-1.32,0.83l-3.95,0.33l-1.7,-0.35l-2.26,-1.59l-0.22,-1.97l1.37,-3.42l-0.04,-0.71l-0.82,-1.4l-0.58,-0.41l-1.51,-0.05l-0.74,-0.36l-0.41,-0.72l0.17,-0.5l0.87,-0.89l1.57,-2.48l2.06,-1.61l1.04,-3.02l2.7,-2.99l1.98,-1.42l1.35,-0.32l2.65,0.24l0.64,-2.01l1.95,-2.11l1.69,-2.69l0.42,-1.23l0.17,-3.23l-0.4,-1.17l-1.07,-1.18l-2.2,-1.44l-2.81,-2.38ZM438.75,93.85l2.44,-0.16l1.46,1.35l1.25,0.18l-1.12,2.72l-1.61,0.88l-0.13,1.15l1.89,2.42l0.65,0.43l1.13,-0.12l1.44,-1.18l0.53,1.78l0.02,1.12l-1.08,0.39l-0.41,-0.53l-0.94,-0.34l-5.01,-0.12l-3.31,-1.38l-4.45,-1.03l-3.99,-1.86l-1.7,-1.29l-1.79,-2.16l2.36,-3.54l0.82,-0.45l4.13,-0.26l1.7,0.17l5.71,1.86Z\", \"name\": \"Castilla y Le\\u00f3n\"}, \"ES-MD\": {\"path\": \"M311.9,319.04l0.76,-1.29l0.55,-2.88l1.21,-2.32l0.12,-0.77l-0.52,-3.01l0.31,-0.18l1.05,1.37l0.81,0.53l2.15,-0.36l0.89,-0.65l1.16,-2.11l0.61,-3.44l0.73,-0.98l0.9,-0.49l1.75,0.41l2.63,-0.41l1.03,-0.67l-0.24,-1.73l0.87,-3.12l-0.24,-6.45l1.99,-2.51l0.32,-1.67l-0.41,-1.95l0.12,-0.8l1.23,1.64l1.33,0.46l3.35,-0.92l1.5,-0.91l0.95,-5.74l4.63,-7.03l1.78,-1.17l2.7,0.4l1.94,-0.47l0.64,-0.6l1.04,-2.63l0.32,-2.57l0.9,-2.19l-0.18,-1.96l0.3,-1.06l2.94,-4.26l0.59,-0.48l6.36,-2.36l0.69,-0.57l2.86,-4.74l3.83,-2.88l3.99,-4.75l1.99,-1.23l2.59,-0.57l0.31,1.34l2.46,2.46l1.34,1.84l3.09,1.55l1.7,5.49l-0.15,1.81l-2.61,7.26l0.28,2.26l-1.45,1.48l-0.69,3.5l-1.23,2.47l0.35,0.96l2.36,0.9l0.74,1.28l0.43,3.13l-1.01,1.66l-0.22,1.06l0.75,1.15l1.06,0.73l2.08,-0.13l0.86,-0.79l2.2,3.12l1.36,0.62l0.84,-0.32l-0.41,4.03l0.71,1.38l1.49,1.23l0.28,1.08l-0.44,1.16l0.15,0.57l0.33,0.34l0.75,0.08l1.67,-0.8l0.43,0.08l2.68,2.31l0.32,2.75l-0.09,2.43l0.28,0.77l2.66,1.68l0.93,1.57l0.19,0.83l-0.3,1.25l0.08,1.27l-0.7,2.36l-1.66,2.13l-0.66,3.37l0.14,2.22l0.56,0.81l0.83,0.13l3.2,-2.82l0.37,-0.06l0.55,0.38l1.28,3.44l0.03,2.61l0.54,2.86l-0.59,0.24l-0.24,0.57l0.51,2.15l1.11,2.12l-0.34,0.98l-1.52,1.42l-1.17,0.36l-2.9,0.14l-0.52,-1.15l-1.51,-0.72l-2.73,0.93l-3.94,2.1l-3.44,0.71l-2.1,-1.05l-2.19,0.98l-6.23,-0.26l-1.16,0.87l-0.76,1.4l-3.1,0.88l-1.51,1.06l-2.24,0.71l-0.57,0.76l-0.01,1.35l-1.86,0.64l-1.91,1.15l-2.49,0.65l-2.04,2.05l-2.08,1.65l-0.59,0.16l-0.89,-0.14l-1.98,-1.27l-0.85,-0.94l1.05,-0.69l5.0,-1.43l1.42,-1.54l1.58,-0.63l1.06,-0.9l3.06,-3.27l2.45,-1.38l0.96,-1.63l0.71,-2.33l-0.05,-1.55l-1.02,-1.11l-3.45,-1.71l-3.15,-0.54l-1.7,0.26l-0.68,-0.19l-0.7,-0.41l-1.65,-1.95l-0.74,-0.16l-1.47,0.23l-1.75,-1.6l-3.11,-0.8l-2.12,-1.03l-4.25,-1.48l-1.76,-2.13l-2.15,-1.08l-0.99,-0.02l-1.88,1.08l-2.03,-0.48l-2.97,-2.8l-0.85,0.02l-1.57,0.98l-1.77,0.35l-1.16,1.06l-1.03,1.76l-1.46,1.28l-0.83,-0.93l-1.1,-0.49l-0.9,-0.88l-0.62,-1.59l0.04,-2.62l-0.36,-0.63l-0.92,-0.53l-0.8,0.29l-1.54,2.43l-2.0,2.08l-0.93,1.37l-0.85,0.6l-2.84,1.38l-1.49,1.42l-1.62,-0.14l-1.1,-0.73Z\", \"name\": \"Comunidad de Madrid\"}, \"ES-MC\": {\"path\": \"M493.61,553.66l-1.62,-1.21l-10.65,-16.46l-0.22,-4.04l0.61,-2.66l-0.5,-4.32l0.57,-1.79l0.15,-2.54l0.96,-1.47l-0.03,-1.01l-0.68,-0.51l-6.15,-0.85l-3.19,-1.47l-3.08,0.16l-3.83,-2.41l-1.87,-2.2l-2.35,-3.99l-2.59,-2.03l0.84,-2.69l4.82,-6.13l2.54,-4.99l2.6,-2.23l2.93,-1.02l2.79,-2.57l1.71,-2.05l0.95,-0.6l0.99,-0.05l2.15,1.65l4.55,-0.99l2.72,-1.3l2.53,-1.94l3.43,-2.08l0.39,-1.05l0.94,-0.21l1.51,-0.9l0.71,0.06l1.12,0.66l1.77,0.04l0.45,0.8l-0.22,1.24l0.28,1.13l1.04,1.11l1.52,0.67l1.54,0.08l4.05,-1.32l4.79,-3.94l1.04,-1.5l0.21,-1.4l-0.51,-6.74l-1.07,-4.25l1.03,-2.15l1.37,-1.14l0.7,-1.19l0.29,-3.27l1.06,-2.28l1.98,-2.4l1.83,-1.35l1.45,1.27l0.96,0.05l3.88,-2.15l2.91,-2.55l3.77,-0.98l2.85,0.87l0.71,0.54l0.7,2.42l5.4,4.41l1.06,5.24l-0.01,2.07l-0.86,3.61l-0.02,2.54l-0.66,1.0l-3.0,3.0l-0.5,1.11l-0.16,1.35l0.04,3.51l0.5,2.17l0.79,0.46l3.68,1.02l1.0,0.73l0.67,1.08l0.92,3.26l-1.09,6.17l-2.79,5.07l-0.32,1.66l0.47,3.24l2.92,4.5l3.92,7.15l2.3,2.83l3.4,3.43l1.76,0.67l1.75,1.36l1.49,-0.05l0.22,2.88l-1.36,-1.68l-0.69,0.11l-1.58,4.3l-0.72,0.61l-1.64,0.63l-0.58,1.37l0.24,1.56l2.99,5.02l3.81,2.19l1.31,0.16l0.75,-0.86l0.76,0.44l0.34,0.73l-0.2,0.72l-1.82,1.5l-1.28,-0.35l-5.29,2.26l-3.3,0.19l-2.44,1.43l-3.13,-1.61l-2.23,-0.43l-4.2,-0.1l-2.35,0.54l-0.87,0.72l-0.46,0.95l0.17,1.04l-3.32,-0.99l-1.14,-0.97l-2.52,-0.73l-0.88,-0.01l-3.61,0.99l-3.07,0.3l-2.32,1.18l-2.96,2.91l-1.0,0.65l-1.68,0.46l-1.12,0.94l-0.5,0.98l-0.76,3.17l-0.27,0.22l-0.62,-0.36l-0.72,0.02l-1.88,1.5l-4.9,1.87l-1.33,0.92l-5.48,-4.26l-4.2,-1.04l-0.54,0.17l-0.47,0.84ZM563.77,527.63l0.41,0.74l-0.34,1.05l0.02,-0.95l-0.09,-0.83ZM564.04,533.2l0.1,0.35l-0.07,-0.08l-0.03,-0.27Z\", \"name\": \"Regi\\u00f3n de Murcia\"}, \"ES-AN\": {\"path\": \"M116.64,543.93l-0.02,-0.49l0.9,-1.18l0.18,-1.61l2.73,-3.01l0.93,-5.28l0.87,-2.42l1.1,-1.62l6.02,-5.08l1.91,-3.36l2.56,-8.33l-0.25,-2.27l2.96,-1.14l2.35,0.41l1.95,-0.74l1.28,-1.33l1.07,-2.2l0.88,0.09l3.68,1.52l1.87,-0.17l0.34,-0.29l0.53,-1.98l0.64,-1.11l0.56,-2.49l1.21,-2.5l1.43,-4.11l0.62,-2.52l0.68,-0.56l8.6,2.93l0.24,0.84l-1.36,3.32l0.21,0.68l0.71,0.56l3.71,1.33l3.12,0.06l1.61,-0.25l2.08,0.18l1.66,0.54l2.02,2.35l0.42,2.3l0.74,0.67l3.1,0.21l1.58,0.52l1.13,-0.1l2.58,-3.06l1.3,-0.33l3.18,2.03l1.26,2.72l1.65,0.45l8.52,3.53l1.07,1.03l0.56,-0.01l2.86,-2.4l1.56,-0.82l9.06,-1.67l1.71,-0.84l0.89,-1.05l0.66,-1.94l1.34,-2.14l0.01,-0.84l-0.78,-1.58l0.43,-1.49l0.87,-1.01l2.26,-1.49l1.88,-2.39l1.87,-0.7l4.3,-0.59l0.69,0.13l0.8,0.62l1.3,1.83l-2.28,1.43l-0.49,0.64l-0.04,0.6l0.53,2.58l0.63,0.56l0.74,0.13l1.45,-0.29l4.5,-3.74l2.94,0.06l2.83,-2.29l0.47,-0.76l0.22,-2.17l0.68,-1.23l0.13,-2.49l-0.36,-2.88l-1.62,-3.88l-1.28,-1.61l0.47,-2.92l-0.3,-0.99l-0.75,-0.99l0.4,-2.31l1.18,-1.15l4.05,-2.02l1.59,-2.11l3.01,-2.29l0.58,-0.84l0.7,-1.98l1.3,-1.83l1.05,-0.96l3.61,-0.13l1.4,-2.39l2.08,-1.8l2.95,-2.03l2.08,-0.72l0.96,-2.44l-0.28,-1.54l0.5,-0.24l5.16,-0.12l1.17,-0.52l1.57,-0.22l3.65,2.78l2.28,0.95l4.19,-0.1l0.42,0.26l0.45,3.74l1.24,1.88l2.41,1.31l2.21,0.23l3.4,1.43l0.79,0.56l0.79,1.16l2.38,1.21l2.24,1.75l1.52,2.28l1.23,0.64l1.45,0.26l1.78,1.14l1.66,1.42l1.82,1.94l1.91,2.62l0.77,0.5l2.99,1.42l7.71,2.6l1.08,-0.17l0.33,-0.39l0.04,-3.05l0.47,-0.84l0.41,-0.08l2.53,0.12l2.58,0.91l18.81,0.75l2.23,-0.37l1.43,-0.59l1.22,-1.98l0.91,-0.59l1.76,-0.32l2.33,0.75l1.58,-0.32l1.72,0.73l4.72,1.0l1.04,-0.02l1.46,-0.71l0.76,-2.94l1.19,-0.42l0.7,0.36l0.76,2.2l0.62,0.47l2.34,0.64l2.02,0.13l2.61,-0.88l1.58,-0.99l1.4,-1.67l0.24,-1.27l0.64,-1.01l0.93,-0.48l1.41,-0.2l0.92,0.04l3.15,1.27l5.86,0.49l2.32,0.69l1.71,-0.44l1.06,-0.97l2.14,-1.1l2.29,2.93l1.55,1.44l0.5,-0.05l0.35,-0.43l0.28,-1.53l1.55,-1.23l0.95,-0.45l1.65,-0.14l3.14,1.28l2.29,-1.95l3.6,-2.02l2.09,-2.0l2.27,1.45l2.86,1.18l3.39,-0.86l1.72,0.07l1.49,0.6l-0.21,1.28l0.3,1.75l-0.26,2.29l0.23,0.84l1.17,1.27l4.29,1.26l0.72,7.49l0.57,0.99l1.97,1.25l0.52,1.2l-0.26,2.09l-0.94,1.53l0.29,2.67l-6.72,8.95l0.15,0.59l5.44,2.64l6.9,2.1l1.53,-0.12l2.55,1.98l2.28,3.91l1.96,2.31l4.08,2.58l3.22,-0.12l3.2,1.47l6.33,1.05l-1.04,1.83l-0.16,2.6l-0.58,1.83l0.49,4.43l-0.61,2.6l0.01,3.41l0.28,1.01l10.72,16.58l0.84,0.85l1.53,0.76l0.48,-0.22l0.49,-0.86l3.78,0.96l5.15,4.01l-2.19,1.85l-1.29,3.21l-1.91,2.77l-3.85,3.89l-1.78,2.49l-1.16,3.37l-1.65,7.45l-1.93,4.97l-1.43,2.47l0.4,3.69l-0.54,0.39l-1.96,0.33l-3.27,2.53l-1.01,1.29l-0.66,3.31l-2.81,2.84l-0.95,2.86l-1.8,0.74l-0.85,1.69l-0.9,0.7l-2.37,0.67l-2.29,-0.73l-5.23,-6.0l-2.41,-1.5l-2.95,-0.76l-1.36,0.25l-2.2,1.15l-1.19,0.27l-3.27,-1.11l-5.76,0.97l-1.2,0.74l-1.7,2.66l-1.36,3.68l-2.63,2.64l-1.57,0.68l-1.68,0.3l-1.38,-0.4l-1.18,0.5l-3.7,-2.19l-0.87,0.16l-1.05,0.9l-0.47,-0.27l-1.76,-2.35l-1.73,-0.98l-1.37,-0.11l-2.44,0.36l-16.91,-1.12l-6.78,0.82l-3.39,2.6l-2.73,1.03l-2.3,-0.06l-9.7,-2.82l-1.44,-1.04l-4.47,1.16l-2.79,0.22l-5.01,-1.6l-2.94,-0.31l-6.69,1.83l-6.41,-0.77l-1.71,0.15l-7.69,2.54l-1.75,0.24l-11.87,-0.93l-1.28,0.42l-0.94,0.86l-2.2,3.88l-1.61,2.2l-0.7,1.96l-7.88,4.98l-1.39,2.8l-0.95,0.72l-4.06,1.15l-2.65,-0.07l-8.18,-1.53l-1.67,-0.05l-6.06,3.29l-4.46,1.16l-3.13,1.93l-3.18,0.57l-1.99,0.91l-2.79,4.47l-1.29,1.36l-1.66,4.12l-1.2,1.06l-1.04,0.4l-0.25,0.42l0.38,1.82l-2.91,4.49l-0.33,0.95l-0.29,3.5l-0.7,0.0l-0.53,-1.29l-1.14,-0.8l-1.55,-0.56l-1.4,-0.07l-1.22,1.78l-0.29,1.04l0.04,1.29l0.39,1.01l-0.28,0.72l0.72,2.16l-0.17,0.72l-1.04,1.4l-7.59,2.32l-1.56,0.71l-2.23,-1.87l-3.94,-2.49l-1.82,0.48l-2.55,-1.23l-2.7,-0.79l-0.9,-0.83l-1.44,-2.11l-4.3,-4.21l-1.33,-0.88l-1.73,-0.04l-2.83,0.54l-2.5,-0.94l-1.61,-2.13l-2.79,-5.19l-3.22,-2.47l-1.01,-3.94l-3.62,-7.62l-1.81,-2.51l-1.47,-2.84l-1.71,-1.55l0.52,-0.03l1.99,1.83l0.4,0.52l-0.21,0.86l1.53,1.99l0.39,0.13l0.82,-0.19l0.74,-0.63l2.09,-2.67l-0.26,-0.66l-1.9,0.37l-0.84,-0.12l-0.4,-0.94l0.38,-2.6l-0.58,-1.57l-2.83,-2.66l-0.86,-0.41l-5.49,-0.57l-0.84,-0.88l-0.8,-3.23l-1.62,-3.11l-0.38,-1.39l0.26,-1.28l1.12,-1.22l3.56,-1.44l1.11,-0.99l0.71,-2.12l-0.55,-3.37l0.33,-1.75l2.0,-1.74l5.53,0.24l1.88,-2.46l-0.03,-0.52l-0.52,-0.06l-2.82,1.48l-1.45,0.03l-1.51,-1.04l-2.8,1.09l-1.33,1.0l-0.67,2.08l0.37,4.89l-0.25,0.59l-1.88,0.03l-1.71,-2.23l-2.12,-5.43l-1.51,-2.65l-1.93,-2.06l-16.24,-11.76l-1.8,-0.98l-2.63,-0.89l-2.68,-2.23l-2.61,-1.28l-1.09,-1.7l-0.4,-1.96l3.47,-5.04l0.75,-1.47l-0.13,-0.51l-0.52,0.07l-3.32,3.75l-1.69,1.2l-1.95,0.01l-0.4,0.4l0.06,0.73l1.43,2.21l0.72,1.8l-0.36,0.04l-5.68,-2.8l-2.18,-0.72l-5.3,-0.53l-0.42,0.29l0.2,0.47l0.88,0.45l-13.06,0.33l-1.26,0.54l-1.21,1.12l-0.99,0.12l-1.9,-0.92l-1.27,-5.23l0.42,-1.39l-0.65,-2.69l-0.49,-6.56l-1.13,-2.61l0.13,-0.92l-0.6,-3.93l-0.52,-1.67l-2.56,-2.85l-0.53,-2.14l-0.35,-0.25Z\", \"name\": \"Andaluc\\u00eda\"}, \"ES-EX\": {\"path\": \"M115.01,365.36l13.6,0.65l3.27,-0.98l2.58,0.08l1.09,-0.32l1.47,0.85l2.05,0.09l9.78,-1.21l1.07,-0.44l0.98,-2.05l-0.22,-2.09l1.33,-2.99l-0.45,-2.49l0.79,-1.31l2.26,-1.13l1.72,-2.61l0.4,-3.12l-0.23,-1.71l1.03,-1.23l0.63,-2.84l-0.09,-1.02l1.39,-3.05l-2.66,-4.8l-2.44,-3.38l-1.54,-0.99l-2.43,-0.45l-0.65,-0.98l-0.46,-2.86l-0.49,-1.18l1.61,-3.51l3.92,-2.34l3.92,-0.24l1.22,-0.84l0.35,-0.75l2.07,2.06l1.56,0.59l1.9,-0.36l1.98,0.28l2.44,-1.16l1.13,0.63l1.03,0.11l2.16,-1.04l4.66,-0.88l1.01,-0.44l1.05,-0.98l0.31,-1.43l-0.34,-1.7l0.62,-0.87l2.01,-1.58l4.74,-1.99l1.99,-1.88l2.71,-0.72l0.76,-0.57l0.84,-1.7l1.56,-1.23l2.86,-0.85l2.83,-2.01l1.7,0.15l2.15,1.39l1.79,1.73l1.72,0.62l0.22,1.06l0.53,0.5l2.42,1.19l-1.13,2.74l-0.49,0.47l-0.11,0.54l0.36,0.48l4.58,2.22l2.38,2.15l4.13,1.9l0.98,0.09l0.9,-0.43l0.54,-0.59l0.93,-2.31l0.35,-0.29l4.48,-1.76l0.35,0.06l0.72,1.31l-0.07,1.09l-0.59,1.3l0.65,1.04l1.81,0.23l2.15,-0.78l2.51,1.0l3.84,3.16l1.63,2.2l1.79,1.04l2.5,0.89l2.73,-0.06l1.11,-0.29l0.66,-0.33l3.51,-3.28l4.19,-0.99l-0.83,2.81l0.15,4.6l2.04,4.03l-1.72,0.87l-0.54,1.19l-0.36,2.19l-0.24,6.31l-1.11,6.38l0.02,2.38l0.31,1.18l0.54,0.27l1.78,-0.5l2.2,-0.04l0.87,0.59l0.99,1.36l-0.15,0.86l-1.07,1.95l-0.61,4.75l0.25,0.9l0.65,0.69l3.37,0.5l0.88,-0.52l1.33,-1.9l1.26,-1.08l1.55,-0.31l0.6,0.22l0.51,1.59l-0.38,2.2l1.55,2.3l0.06,0.53l-1.08,5.26l-2.6,4.18l-0.19,0.66l0.22,0.75l2.52,2.16l2.42,3.14l2.85,2.92l2.65,1.28l3.62,4.87l2.68,2.52l4.7,2.18l4.32,-2.15l3.11,-1.06l1.01,-1.2l3.19,-1.69l0.4,-0.48l0.69,1.95l-0.2,1.33l-0.96,1.86l-0.96,2.86l-1.08,1.06l-1.43,0.57l-0.56,0.94l0.04,0.88l1.45,3.98l1.27,2.51l3.43,4.31l-3.78,-1.88l-1.31,-0.19l-1.7,0.33l-1.77,-0.36l-0.78,0.12l-2.76,2.96l-1.37,5.14l0.23,2.27l2.02,1.68l-0.02,0.83l-2.45,1.14l-3.95,-1.72l-0.77,0.19l-0.66,0.54l-0.1,0.88l0.62,2.55l0.89,0.98l0.18,1.73l0.54,1.26l0.69,0.57l2.73,0.92l1.6,0.23l0.48,1.1l-0.75,3.17l-2.87,-0.12l-1.21,0.53l-1.1,1.16l-1.36,2.68l-1.6,5.96l-1.16,2.35l-4.59,1.08l-1.1,0.5l-5.16,0.12l-0.89,0.39l-0.37,0.7l0.35,1.37l-0.73,1.99l-1.91,0.61l-3.05,2.11l-2.2,1.91l-0.83,1.15l-0.35,1.04l-2.53,-0.12l-1.13,0.29l-1.2,1.09l-1.35,1.89l-1.24,2.76l-2.98,2.26l-1.46,1.99l-4.03,2.01l-1.44,1.4l-0.55,2.48l1.08,2.24l-0.47,3.02l1.36,1.86l1.58,3.8l0.31,2.67l-0.11,2.21l-0.67,1.22l-0.46,2.57l-2.66,2.16l-2.89,-0.08l-4.57,3.78l-0.98,0.19l-0.77,-0.35l-0.37,-2.51l2.33,-1.41l0.47,-0.89l-0.45,-1.1l-1.15,-1.31l-0.91,-0.7l-1.15,-0.24l-4.41,0.6l-2.06,0.76l-0.78,0.6l-1.34,1.96l-2.21,1.43l-1.06,1.26l-0.53,1.96l0.78,2.13l-1.28,1.96l-0.66,1.94l-0.65,0.76l-1.42,0.7l-9.18,1.71l-1.69,0.9l-2.69,2.21l-0.96,-0.89l-10.15,-3.99l-1.13,-2.6l-3.49,-2.2l-0.93,-0.04l-1.13,0.55l-2.28,2.88l-5.36,-0.64l-0.69,-2.61l-1.25,-1.73l-0.99,-0.85l-1.96,-0.67l-2.23,-0.2l-1.65,0.26l-3.03,-0.06l-3.4,-1.23l-0.49,-0.52l1.34,-3.13l0.0,-0.74l-0.39,-0.82l-9.19,-3.24l-1.25,0.79l-0.95,-0.57l-3.94,0.57l-0.45,0.15l-0.75,1.04l-1.47,0.67l-2.38,0.32l-1.36,-1.29l-2.71,-6.86l-1.9,-1.65l-1.0,-2.14l-6.98,-9.01l-2.43,-1.7l1.33,-1.8l0.0,-1.23l-0.61,-0.89l0.55,-0.87l1.18,-4.18l2.72,-3.96l0.41,-1.28l-0.2,-0.89l-1.15,-1.1l-0.11,-1.38l0.57,-4.73l0.85,-1.91l3.76,-3.09l1.04,-0.44l1.1,-0.92l1.82,-2.34l3.04,-0.68l1.19,-0.61l2.07,-1.78l0.43,-2.77l-0.79,-1.67l1.24,-1.05l1.47,-2.05l3.3,-6.32l-0.11,-0.77l-0.69,-0.69l0.38,-1.41l-0.42,-1.66l-0.97,-1.63l-1.12,-1.11l-1.57,-1.09l-1.84,-0.53l-1.89,0.19l-2.37,1.25l-1.69,-0.59l-0.54,-0.54l-0.06,-0.47l0.85,-2.52l-0.84,-1.87l-5.1,-2.25l-0.83,-1.2l-0.47,-1.58l0.09,-1.62l0.84,-1.48l-0.04,-0.45l-3.28,-4.03l-1.23,-1.0l-0.43,-0.87l-0.33,-3.53l0.85,-2.42l0.35,-2.02l-0.04,-2.02l-0.73,-1.05l-2.74,-0.73l-1.33,-0.64l-0.88,-0.72l-0.59,-1.77l-0.63,-0.85l-2.31,-1.25l-1.04,-1.0l-1.94,-2.6l-1.17,-1.08l-2.46,-6.71Z\", \"name\": \"Extremadura\"}, \"ES-VC\": {\"path\": \"M549.58,507.02l-1.08,-2.21l-2.49,-3.52l-0.66,-2.24l-0.13,-1.58l0.62,-2.31l1.9,-2.87l0.56,-1.31l1.1,-5.37l0.01,-1.2l-0.95,-3.37l-0.85,-1.37l-1.27,-0.91l-4.09,-1.18l-0.4,-1.82l-0.03,-3.4l0.53,-2.05l3.36,-3.42l0.57,-1.41l-0.13,-2.05l0.85,-3.54l0.03,-2.27l-1.04,-5.15l3.96,-0.26l1.25,-0.48l2.07,-1.47l0.48,-0.64l-0.07,-0.53l-2.54,-3.56l-0.7,-2.49l0.2,-0.9l1.84,-1.23l0.66,-2.57l-0.88,-3.19l0.31,-2.72l-2.54,-4.6l-1.65,-0.98l-1.34,-0.11l-1.5,0.87l-1.08,0.25l-1.81,-0.06l-3.55,0.46l-0.75,-0.39l-1.06,-0.85l-6.35,-7.55l-0.78,-1.97l0.1,-1.45l1.86,-4.85l1.94,-2.58l1.38,-3.7l0.33,-1.93l-0.13,-1.96l0.52,-2.65l-0.13,-0.82l-0.63,-0.86l-8.76,-2.83l-1.27,-0.08l-3.55,-2.24l-1.49,-0.52l-2.43,0.34l-0.61,-2.19l-1.73,-1.32l-0.33,-0.81l-1.02,-0.39l-0.96,-1.38l-0.04,-0.7l0.76,-2.07l-0.05,-0.97l0.58,-0.97l-0.3,-0.63l0.22,-2.57l-0.24,-1.44l0.46,-1.03l1.3,-0.98l0.81,-1.06l2.38,-4.74l2.94,-2.9l1.46,-0.21l2.2,1.04l1.35,0.05l1.43,-0.52l1.04,-1.05l0.33,-0.78l-0.33,-2.76l0.21,-1.34l2.73,-4.54l1.52,-5.81l0.41,-4.81l-0.63,-1.72l0.51,-0.74l2.45,-1.11l0.69,-0.58l1.14,0.59l4.92,-1.25l3.48,-0.03l1.7,0.42l3.15,1.5l0.84,1.01l0.2,0.55l-0.47,2.39l0.52,1.13l0.12,2.44l0.44,0.69l1.59,0.8l2.21,-0.31l3.67,-1.91l0.18,-0.53l-0.47,-0.95l-1.71,-1.59l-0.52,-1.02l-0.41,-2.2l0.46,-2.22l0.37,-0.47l3.3,-1.77l0.66,-0.82l0.7,-2.41l1.89,0.05l2.52,-0.39l4.71,-2.39l0.31,-0.79l-0.33,-2.49l2.23,-2.31l0.89,-1.66l0.17,-1.39l0.76,-1.42l0.27,-1.31l0.13,-2.9l0.59,-0.24l2.28,0.87l3.35,-0.5l3.09,-1.34l0.68,-0.63l0.5,-0.8l-0.01,-2.55l2.15,-1.87l1.66,-2.39l2.56,-1.69l0.55,-0.85l-0.23,-1.76l-1.25,-1.69l-1.78,-1.62l-0.24,-1.01l0.87,-0.99l2.99,-1.26l0.59,-0.73l-0.57,-2.18l-1.12,-1.11l0.33,-1.74l-0.37,-3.7l0.27,-2.52l-0.82,-0.69l-1.64,0.41l-2.9,-1.06l-0.2,-2.75l0.51,-0.95l1.26,-0.47l0.92,0.17l1.01,0.7l0.81,0.04l4.82,-2.79l0.53,-0.88l0.36,-3.73l1.76,-2.48l0.56,-0.23l1.02,-0.04l0.78,0.38l2.11,1.88l3.15,2.01l1.73,0.32l3.32,-0.2l0.91,0.25l0.48,0.88l0.1,1.17l0.8,0.57l0.83,-0.02l1.85,-1.44l1.21,-0.54l3.33,-0.26l1.88,-0.71l1.6,0.3l1.25,-0.24l0.66,1.38l0.84,0.85l1.55,0.53l1.19,0.98l-0.65,1.49l-0.08,0.93l0.53,1.44l0.69,0.78l1.71,0.94l4.65,1.63l1.99,1.09l1.03,0.96l0.3,1.33l1.12,1.3l4.23,1.82l-0.93,2.28l-3.21,4.32l-0.46,2.24l-1.69,1.76l-4.58,8.9l-3.38,3.25l-2.27,3.21l-3.11,3.28l-4.83,8.03l-1.75,1.87l-4.22,2.71l-1.73,2.55l-2.84,6.08l-1.67,2.54l-4.16,4.67l-6.81,11.37l-0.98,4.44l-3.18,4.08l-0.81,1.5l-0.78,2.51l-2.07,3.04l-0.73,1.64l-0.46,3.51l0.12,3.84l0.52,3.75l1.69,6.19l4.46,11.36l-0.17,0.7l-0.95,0.94l-0.21,1.08l0.23,1.47l2.05,4.15l1.64,4.2l2.45,3.39l2.45,4.31l1.0,1.29l2.51,2.01l2.46,2.57l1.59,1.22l4.83,0.76l3.07,0.9l2.74,1.55l1.69,1.91l-0.55,0.41l0.07,0.68l0.71,0.32l1.42,1.9l0.74,0.08l0.29,1.76l-0.27,0.38l-2.23,0.35l-1.2,0.64l-1.02,1.02l-0.99,2.07l-1.73,0.33l-2.41,1.89l-0.76,1.46l0.18,0.8l-0.75,-0.14l-2.94,0.84l-2.06,0.05l-1.05,0.38l-0.94,0.76l-0.92,1.69l0.07,2.35l-0.37,1.04l-0.89,0.96l-0.82,0.32l-2.75,0.01l-3.04,0.7l-1.75,0.69l-2.06,1.49l-6.33,2.69l-1.0,0.71l-0.51,1.04l-2.95,3.12l-0.77,1.39l-0.32,2.54l-2.97,0.41l-0.85,0.79l-0.29,1.14l-1.99,-0.12l-0.42,0.33l-0.6,3.42l0.18,7.03l-0.59,0.76l-0.95,0.24l-2.31,-0.17l-1.77,0.47l-1.27,1.06l-1.67,2.76l-0.74,2.59l-0.2,3.6l0.49,6.05l-0.12,1.39l-2.7,2.65l-0.69,1.18l-2.67,6.71l-0.15,1.27l-1.23,0.1l-1.62,-1.3l-1.69,-0.62l-5.07,-5.41l-3.22,-5.53ZM530.4,325.39l0.23,1.1l0.69,0.73l1.42,0.64l4.13,0.49l1.56,0.99l2.91,2.66l0.23,0.92l-0.45,0.88l-3.47,1.88l-6.78,1.59l-0.9,-0.06l-1.8,-0.69l-5.39,-0.84l-0.43,-0.37l-2.29,-7.11l-2.52,-2.12l0.16,-1.06l3.08,0.74l2.15,0.05l2.77,-0.87l0.58,-0.95l-0.06,-2.57l0.96,-1.06l1.51,3.25l1.68,1.76Z\", \"name\": \"Comunidad Valenciana\"}, \"ES-NC\": {\"path\": \"M487.26,54.0l1.46,0.39l0.47,-0.28l0.3,-1.1l0.98,0.39l1.72,-0.65l0.97,-0.96l1.95,-3.49l1.04,-0.99l1.14,-0.34l0.42,0.22l0.71,-0.12l3.53,-1.13l2.04,0.93l-0.19,0.83l0.61,2.41l0.54,0.66l0.92,0.41l1.65,0.0l0.87,-0.47l1.03,-2.42l0.76,-0.46l1.14,0.04l1.97,0.59l2.71,1.43l2.27,-0.34l1.67,1.74l0.24,3.11l-0.69,3.53l-0.98,2.78l-3.52,4.03l-0.58,1.15l0.83,1.96l1.37,1.55l1.56,0.89l1.68,0.44l1.81,0.16l1.28,-0.39l0.83,-1.57l0.15,-2.33l0.42,-1.68l1.01,-1.14l1.27,-0.48l0.63,0.17l-0.91,0.83l-0.54,1.18l0.27,1.47l1.2,1.46l1.34,0.83l3.89,0.73l2.18,1.21l2.12,1.74l2.67,-0.13l2.17,1.33l3.2,0.56l0.79,0.91l2.3,1.73l2.64,0.88l5.34,0.45l5.09,-0.91l1.49,0.52l0.71,1.83l-1.34,0.07l-2.29,1.26l-0.6,0.86l-0.41,1.83l-1.75,2.36l-0.33,0.92l-0.44,4.84l-0.6,1.38l-1.87,1.29l-0.56,1.12l-1.34,0.64l-2.53,2.21l-4.07,1.36l-0.54,0.69l-0.23,1.9l-0.53,1.52l-0.53,0.3l-1.91,-0.15l-4.19,0.63l-0.52,0.64l-0.24,1.4l-0.86,0.35l-0.15,0.67l1.03,0.63l-2.6,2.24l-0.69,1.59l-1.11,0.58l-1.21,-0.34l-1.0,0.11l-1.47,2.02l-0.46,1.63l0.77,2.45l-1.34,2.3l-1.76,1.74l-1.45,2.44l-0.56,2.54l0.08,0.79l1.17,1.84l-3.45,5.0l-2.16,7.24l0.1,1.58l1.22,2.33l0.33,5.21l1.28,1.46l1.5,2.83l2.24,0.88l0.19,0.55l-0.21,1.36l-2.94,4.66l-1.48,3.59l-2.04,2.81l-4.65,-1.18l-2.0,0.84l-2.24,0.15l-2.05,-1.12l-1.61,-1.91l-1.77,-1.02l-1.45,-0.43l-1.83,0.72l-1.04,-0.09l-1.72,-0.79l-2.39,-2.32l-0.76,-0.27l-3.07,-0.16l-1.04,-0.59l-0.79,0.0l-2.33,-1.98l-0.63,-1.62l0.3,-2.43l3.55,-4.05l1.11,-1.98l0.92,-0.0l1.59,0.6l2.42,-0.65l2.15,0.93l1.36,-0.23l0.56,-0.51l0.25,-0.69l-0.41,-1.71l0.24,-1.19l-0.6,-1.37l-0.13,-2.12l-1.97,-1.39l-1.42,-0.45l-3.11,-1.78l-2.22,-1.88l-1.79,-0.0l-0.45,-2.43l-2.46,-1.8l-4.94,-6.0l-3.91,-0.14l-1.34,-0.48l-0.64,-0.97l0.72,-1.08l-0.05,-0.54l-1.4,-1.27l-2.17,-0.33l-5.59,0.2l-0.86,-0.28l-2.12,-2.26l-2.7,-1.64l-4.38,0.57l-3.73,-1.18l0.74,-5.69l-0.51,-2.59l-0.52,-0.62l-1.13,-0.27l-1.95,2.01l-1.87,-0.82l-0.58,-0.62l0.02,-0.91l4.76,-4.17l1.43,-0.07l1.56,1.79l1.43,0.07l1.51,-0.5l2.45,-1.89l-0.15,-1.71l-1.07,-0.54l-0.52,-3.78l0.41,-0.58l1.67,-0.58l0.62,-0.86l0.33,-3.59l0.7,-1.96l1.42,-2.39l0.2,-1.89l-0.88,-3.62l1.33,-3.0l1.01,-1.14l0.64,-0.13l1.86,0.66l3.47,-0.52l1.99,-2.41l2.27,-0.66l0.75,-0.54l0.52,-0.72l0.2,-0.89l-0.06,-2.1l1.62,-3.37l5.0,-3.45l0.85,-0.93l0.94,-1.88l0.13,-1.23l-0.54,-3.42l0.52,-2.47ZM542.15,123.5l-0.25,0.17l-1.98,-0.35l-1.38,-0.68l0.34,-1.44l0.87,-1.19l0.42,-0.01l0.18,1.36l1.8,1.71l0.0,0.42ZM535.17,126.28l-0.52,0.04l-0.25,-0.47l0.13,-0.86l1.61,-1.14l0.02,0.73l-0.43,1.11l-0.55,0.57Z\", \"name\": \"Comunidad Foral de Navarra\"}, \"ES-AR\": {\"path\": \"M499.91,312.07l0.28,-2.34l-0.43,-1.46l-3.9,-4.95l-1.58,-0.74l1.41,-1.27l2.66,-3.95l1.8,-1.09l1.01,-1.25l0.12,-4.37l1.28,-3.53l0.23,-0.18l2.08,0.39l2.03,1.14l0.81,0.12l0.75,-0.12l1.15,-0.68l1.34,-1.59l-0.15,-2.8l1.11,-3.29l-0.15,-2.81l-1.13,-2.67l0.1,-1.48l1.11,-2.97l-0.4,-3.64l-0.76,-0.88l-1.68,-1.14l-1.32,-1.66l-0.81,-2.28l0.22,-3.71l-0.77,-1.66l-3.89,-3.98l-3.51,-3.06l-2.3,-3.43l-3.27,-2.8l-2.25,-1.27l-2.66,-2.09l-1.7,-0.72l-1.98,-1.91l-2.01,-0.48l-5.1,1.63l-1.99,-1.78l-1.24,-0.46l-1.86,-0.2l-0.78,-0.49l-0.88,-7.08l-0.92,-2.24l0.09,-2.78l0.35,-1.49l0.65,-0.78l1.03,-0.61l0.83,-1.27l0.6,-4.24l0.46,-1.04l0.53,-0.3l1.82,0.26l1.38,0.63l0.3,0.93l-0.07,2.14l0.37,0.7l0.66,0.36l1.26,-0.27l2.26,-1.48l1.3,-0.34l1.03,-0.66l-0.33,-4.13l-1.48,-2.93l-0.21,-1.36l0.18,-3.13l-0.4,-2.48l-0.55,-0.97l0.09,-0.95l1.26,-0.96l1.96,0.64l0.81,-0.16l2.1,-2.4l1.27,-0.68l1.34,-1.37l2.47,-0.76l0.75,-0.99l1.26,-3.11l0.11,-1.59l-1.46,-1.53l-0.69,-1.79l-1.72,-2.75l1.55,-3.11l0.41,-1.62l-0.08,-0.88l-1.34,-1.94l-0.94,-2.74l-0.39,-4.19l0.85,-2.57l-0.37,-1.23l1.39,0.62l3.5,0.32l2.27,2.25l2.0,0.93l1.4,0.11l1.78,-0.71l1.03,0.36l1.55,0.87l1.66,1.95l2.3,1.25l2.7,-0.14l1.77,-0.81l4.54,1.19l0.76,-0.29l2.1,-2.94l1.49,-3.61l3.02,-4.86l0.23,-1.52l-0.28,-0.95l-0.62,-0.58l-1.75,-0.48l-1.43,-2.74l-1.22,-1.37l-0.25,-4.98l-1.25,-2.47l-0.05,-1.21l2.1,-7.0l3.22,-4.34l0.3,-0.86l-0.22,-0.91l-0.97,-1.21l0.45,-2.92l1.35,-2.24l1.75,-1.73l1.46,-2.53l-0.06,-0.96l-0.68,-1.79l0.38,-1.23l1.15,-1.66l1.87,0.34l1.68,-0.87l0.7,-1.61l2.7,-2.37l0.16,-0.45l-0.21,-0.47l-0.55,-0.27l0.62,-0.5l0.08,-0.95l0.41,-0.77l3.72,-0.48l1.98,0.14l0.93,-0.46l0.46,-0.76l0.41,-2.51l0.46,-0.86l3.97,-1.29l2.61,-2.27l1.3,-0.6l0.68,-1.23l1.86,-1.28l0.81,-1.78l0.39,-2.67l-0.09,-1.45l0.37,-1.38l1.79,-2.43l0.77,-2.4l2.12,-1.16l1.35,-0.03l-0.16,1.96l1.13,1.6l2.09,0.19l3.28,2.29l2.49,3.35l-0.08,0.91l0.23,0.38l1.72,0.28l0.21,0.3l-0.08,1.02l0.82,0.76l0.8,-0.02l1.75,-0.98l0.27,-0.36l0.09,-1.75l1.21,0.03l3.48,1.64l2.21,-0.12l1.81,-1.05l2.89,-2.29l0.75,0.42l0.52,-0.2l0.82,-1.26l4.54,2.97l1.05,1.8l1.93,0.2l2.52,-0.78l-0.07,1.03l0.43,1.66l0.8,1.33l1.45,1.35l0.27,1.17l1.72,0.79l1.2,1.27l2.6,1.04l2.57,-0.21l5.05,-1.87l4.01,-0.6l1.33,-0.85l0.9,-0.14l4.3,1.34l1.4,2.46l1.39,1.37l1.25,-0.31l1.83,-2.6l1.09,-1.09l0.89,-0.32l1.58,1.36l0.1,0.83l0.44,0.55l1.52,0.36l1.46,-0.08l2.38,-0.63l1.14,0.45l8.19,-0.24l2.31,0.31l1.05,-0.34l0.4,-0.5l1.62,2.62l0.9,2.5l0.57,0.85l0.76,0.62l1.96,0.54l0.69,0.54l-0.59,3.41l-1.93,4.04l-0.02,1.6l-1.57,0.61l-0.34,0.97l0.91,3.91l1.19,1.5l0.86,3.13l0.32,5.44l-0.44,1.92l-0.08,3.22l-0.65,2.16l-0.92,1.67l-0.94,4.37l-0.14,0.96l0.35,1.47l-0.36,2.74l-0.54,1.59l-0.7,0.72l-1.03,3.95l-0.89,1.94l-0.22,2.23l-0.48,0.68l-1.27,0.77l-1.05,1.69l-0.92,0.33l-1.16,0.89l-0.75,1.21l0.15,1.01l1.62,1.55l0.26,3.26l-0.2,0.46l-0.78,0.97l-1.45,0.9l-1.1,1.68l-2.74,1.29l-2.37,3.95l-3.9,1.33l-0.83,1.44l-0.89,0.88l-0.89,1.48l-1.59,1.49l-1.0,1.63l0.06,1.44l0.92,2.23l0.6,2.76l0.49,0.63l0.7,0.33l3.64,0.4l1.0,3.8l-2.71,4.25l-2.27,0.8l-0.92,0.86l-0.19,3.98l-0.65,2.3l-0.96,1.6l0.2,1.76l1.77,0.95l0.79,0.79l0.53,1.08l0.19,1.36l-1.63,3.79l0.5,3.94l-2.38,1.43l-0.6,0.69l-0.96,3.76l-0.36,0.48l-2.29,1.04l-0.96,1.17l-1.89,0.56l-0.67,1.49l-0.08,1.5l1.49,4.71l1.15,1.05l1.95,1.19l0.96,2.98l-0.25,1.86l-1.64,3.22l-0.74,3.02l0.57,3.07l0.9,2.24l-0.03,0.52l-2.39,3.7l-4.0,2.58l-0.45,0.76l0.24,0.71l-1.43,0.56l-2.49,0.09l-1.74,0.46l-2.38,1.73l-0.57,-0.15l-0.29,-1.66l-0.7,-0.77l-1.23,-0.32l-3.24,0.21l-1.6,-0.3l-2.91,-1.89l-2.19,-1.92l-1.09,-0.48l-1.33,0.07l-0.88,0.42l-1.93,2.74l-0.64,4.28l-4.46,2.65l-1.46,-0.72l-1.24,-0.2l-1.61,0.6l-0.68,0.72l-0.11,3.36l0.37,0.89l2.84,1.18l2.27,-0.24l-0.27,2.37l0.37,3.62l-0.32,1.87l0.27,0.78l0.91,0.57l0.5,1.73l-3.26,1.49l-1.2,1.58l0.37,1.49l1.88,1.75l1.13,1.53l0.14,1.2l-2.89,2.13l-1.7,2.43l-2.16,1.85l-0.27,0.79l0.09,2.12l-0.79,0.92l-2.31,1.11l-3.41,0.61l-2.54,-0.86l-0.65,0.03l-0.66,0.57l-0.25,3.24l-0.24,1.18l-0.74,1.37l-0.18,1.41l-0.78,1.45l-1.98,1.8l-0.39,0.8l-0.12,0.83l0.38,2.02l-4.36,2.24l-4.61,0.4l-0.48,0.63l-0.56,2.17l-0.52,0.61l-3.16,1.64l-0.62,0.76l-0.56,2.65l0.44,2.37l0.69,1.33l0.98,0.77l0.91,1.24l-3.29,1.71l-1.85,0.24l-1.28,-0.88l-0.12,-2.42l-0.51,-1.04l0.46,-2.48l-0.33,-0.83l-1.08,-1.23l-3.26,-1.55l-1.94,-0.48l-3.65,0.03l-4.86,1.23l-0.79,-0.53l-0.96,-2.84l1.22,-0.33l3.7,-2.03l0.69,-1.29l-0.29,-1.44l-3.15,-2.94l-1.71,-1.08l-4.32,-0.55l-1.17,-0.55l-0.54,-0.78l-0.19,-1.08l-1.61,-1.47l-1.73,-3.51l-0.78,-0.07l-0.88,0.69l-0.49,0.8l-0.19,0.99l0.24,1.26l-0.28,0.92l-2.37,0.75l-1.98,-0.04l-2.99,-0.72l0.58,-2.25l-0.14,-1.22l-0.42,-0.56l-1.99,0.18l-2.6,-0.7l-0.89,0.05l-0.72,0.41l-0.32,-0.14l-7.82,-7.36l-1.8,-0.94l-0.97,-0.12l-0.94,0.45ZM537.73,122.8l0.99,1.0l2.43,0.6l1.07,0.01l0.72,-0.7l-0.13,-1.11l-1.68,-1.49l-0.06,-0.93l-0.54,-0.94l-1.05,0.0l-0.99,0.93l-0.68,1.61l-0.08,1.0ZM536.95,123.71l-0.5,-0.66l-0.52,-0.03l-2.07,1.53l-0.27,1.32l0.48,1.06l1.31,0.14l0.97,-0.86l0.57,-1.39l0.03,-1.11Z\", \"name\": \"Arag\\u00f3n\"}, \"ES-CB\": {\"path\": \"M315.65,35.72l1.39,1.36l0.56,-0.0l1.29,-1.28l1.65,-0.31l1.64,0.46l1.2,1.14l0.69,0.11l1.39,-1.45l3.04,0.34l8.2,-0.88l1.97,-1.47l4.07,-1.28l4.64,-0.29l0.88,-1.21l1.83,1.2l0.55,-0.08l1.43,-0.8l-0.9,-1.1l2.08,-1.52l0.97,-0.42l1.26,0.22l0.6,-0.37l0.75,0.37l1.86,-1.16l1.83,-0.39l1.8,0.36l1.18,0.79l-2.27,1.04l-1.21,0.8l-0.95,1.06l-0.01,0.52l0.84,0.97l-0.08,0.66l0.38,0.38l0.83,0.03l1.77,-0.71l1.42,-1.8l0.96,1.01l1.06,0.07l0.36,-0.68l-0.15,-0.82l-0.74,-1.31l1.07,0.42l0.61,-0.24l0.43,-0.89l-0.2,-0.28l2.26,-0.29l2.07,-1.46l4.95,-1.56l1.17,0.08l-0.1,1.17l0.37,0.43l1.01,0.06l2.17,1.75l4.75,1.01l0.16,1.28l-0.75,0.03l-1.51,-0.77l-0.45,0.18l-0.5,0.97l-1.44,1.01l-0.19,0.41l0.32,0.32l1.15,0.22l1.39,1.39l0.56,-0.14l0.61,-1.09l0.64,0.7l0.92,0.08l2.03,-0.57l4.02,1.28l4.01,0.56l3.81,1.29l2.05,2.02l1.61,0.57l0.08,4.53l-0.58,1.26l-2.65,1.3l-2.07,-0.6l-1.67,0.21l-4.26,-0.26l-7.17,5.16l-0.79,1.0l-0.29,0.96l0.3,1.44l-0.04,1.96l1.09,3.91l-1.41,0.12l-4.3,-0.42l-1.81,-0.84l-3.78,-0.79l-2.15,-1.37l-0.93,0.05l-1.2,0.75l-3.87,4.62l-2.92,2.17l-1.01,0.33l-2.54,-0.11l-1.22,0.6l-0.4,2.58l-0.7,0.76l-2.67,1.28l-1.41,1.55l-2.43,1.62l-2.11,5.42l-0.1,1.45l0.35,0.89l1.05,1.09l1.53,0.35l1.43,-0.46l1.78,-1.1l1.34,-2.07l0.82,-0.27l0.78,0.48l0.73,1.07l-0.14,0.8l-1.82,1.17l-1.78,0.12l-0.36,0.28l-0.72,1.61l0.28,1.86l0.4,0.85l0.47,0.36l0.8,0.1l0.89,-0.56l0.92,-1.4l0.61,-0.32l0.83,0.26l0.16,2.07l0.8,2.12l-0.0,1.0l-0.72,0.66l-3.41,0.25l-2.42,2.19l-2.9,0.91l-1.89,-0.54l0.03,-3.87l-0.31,-0.9l-0.49,-0.13l-1.26,0.85l-1.78,3.98l-2.07,0.51l-0.92,-1.4l-0.66,-0.51l-3.21,-0.71l-1.61,-1.51l0.01,-0.57l0.33,-0.2l1.79,-0.43l1.1,-0.81l0.28,-0.93l-0.11,-0.66l-0.54,-0.68l-1.0,-0.41l-1.61,0.47l-1.74,1.3l-0.88,-0.49l-0.98,-5.73l-0.06,-2.57l-0.31,-0.84l-1.03,-0.72l-6.7,-2.49l-0.81,-0.59l-1.96,-3.58l-0.74,-0.6l-2.47,-1.16l-1.23,-0.03l-1.93,1.03l-1.95,0.22l-2.14,1.2l-3.19,-0.14l-2.46,0.51l-3.29,0.02l-2.14,0.34l-0.74,-2.67l-1.34,-1.36l-0.78,-1.45l-2.81,-1.58l-0.95,-1.04l-0.5,-2.29l0.25,-4.38l3.64,-0.61l1.88,0.24l0.77,-0.52l0.75,-1.99l0.28,-2.11l-0.16,-1.17l0.39,-0.86l1.29,-0.56l3.4,-0.07l1.02,-0.62l0.76,-1.03l1.39,-0.65l1.73,0.32l1.14,1.61l0.87,-0.05l0.71,-0.56l0.48,-0.69l0.33,-1.81l-0.23,-1.34l-0.98,-2.42l1.53,-3.12l0.06,-2.82Z\", \"name\": \"Cantabria\"}}, \"height\": 671.3455904856035, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-fr-merc-en.js",
    "content": "$.fn.vectorMap('addMap', 'fr_merc_en',{\"insets\": [{\"width\": 100, \"top\": 500, \"height\": 124.10158361709644, \"bbox\": [{\"y\": -645244.9842573161, \"x\": -6082899.139819591}, {\"y\": -235151.50568115257, \"x\": -5752449.304593098}], \"left\": 10}, {\"width\": 900.0, \"top\": 0, \"height\": 864.1025840443817, \"bbox\": [{\"y\": -6640157.227291796, \"x\": -571651.210329419}, {\"y\": -5069047.490921886, \"x\": 1064727.1420124765}], \"left\": 0}], \"paths\": {\"FR-C\": {\"path\": \"M499.58,401.44l0.25,1.77l1.24,1.75l3.23,2.13l2.72,0.22l3.5,3.34l1.07,0.0l2.4,-1.21l1.64,-0.11l4.6,1.58l0.78,-0.23l2.13,-2.13l1.59,0.78l1.06,2.21l0.03,1.71l1.1,0.76l1.74,-0.38l4.06,-2.49l0.57,-2.27l1.34,-0.99l0.39,-2.1l1.18,0.22l2.0,4.68l2.46,2.54l1.56,3.05l0.94,0.63l0.18,6.02l4.03,2.38l1.73,0.09l2.67,2.57l3.68,0.82l2.2,1.32l0.74,3.33l-0.64,3.53l0.53,1.51l-0.03,1.67l0.81,2.03l-1.2,1.16l-5.54,3.14l-4.06,1.31l-3.53,3.27l0.09,0.88l1.08,1.38l0.45,3.68l-0.15,4.64l1.66,8.88l-1.07,1.68l-4.81,1.2l-2.37,1.3l-0.48,0.98l0.44,1.63l2.11,1.81l0.83,1.67l-1.18,3.31l-0.01,2.51l-0.9,2.09l0.06,1.2l1.84,3.37l1.55,1.65l3.19,7.38l7.55,6.93l2.44,6.22l0.07,1.18l-0.89,2.45l-2.77,3.33l-0.8,1.67l-0.64,3.34l0.41,1.04l1.22,0.53l1.59,-1.37l1.89,-0.68l2.11,2.09l2.83,-0.07l5.94,-1.17l0.73,-0.61l0.63,-1.74l2.06,-0.01l4.17,1.28l0.8,-0.22l1.63,-1.53l1.02,0.83l1.47,3.09l-0.74,3.15l0.99,2.69l0.56,0.57l2.83,0.37l1.34,0.79l2.81,2.77l-0.24,1.92l-1.71,3.77l-0.73,3.28l-2.57,-1.7l-1.37,0.6l-0.05,0.85l0.88,1.81l-1.88,2.07l-0.3,1.0l1.22,2.35l-3.98,1.43l-0.86,1.88l0.55,2.13l-2.44,1.07l-1.75,-0.27l-0.72,0.49l-1.46,3.96l-2.26,3.21l-5.0,0.96l-2.54,-0.04l-0.62,0.54l-0.58,2.03l-3.93,1.47l-3.33,5.22l-1.09,0.51l-4.45,-2.09l-4.14,-3.9l-4.32,-0.98l0.42,-2.32l-1.41,-1.34l-2.82,0.03l-0.88,0.92l-0.64,2.71l-3.65,0.62l-1.33,0.68l-1.66,-1.54l-3.46,-6.67l-1.02,-3.4l-0.6,-0.44l-1.66,0.08l-4.45,2.53l-2.54,0.37l-4.65,4.34l-0.56,0.11l-1.8,-2.16l-1.57,0.75l-1.11,4.47l-1.64,1.18l-0.58,1.12l-1.76,8.34l-1.84,3.19l-0.71,2.29l-1.58,-1.37l-1.17,-2.07l-1.11,-5.55l1.16,-0.91l0.0,-1.05l-2.99,-1.76l-0.69,-2.24l-2.43,-3.72l-0.8,-0.25l-2.42,0.4l-0.3,-3.06l-1.91,-2.76l-1.04,-0.48l-8.47,8.8l-0.73,2.95l-2.44,4.06l-0.58,2.75l-3.69,4.57l-2.8,0.74l-3.46,-0.11l-1.42,0.7l-1.19,-1.3l-1.51,-0.13l-5.34,1.88l-0.85,2.02l-0.96,-1.16l-0.88,-3.87l-1.72,-1.2l1.56,-6.33l-0.1,-0.93l-4.39,-8.36l-0.86,-6.56l-0.63,-1.37l3.22,-0.76l1.1,-0.82l0.07,-1.34l-1.54,-3.71l3.21,-2.97l2.85,-6.39l0.21,-1.23l-1.07,-2.65l0.12,-1.65l2.6,-2.27l0.51,-2.15l3.08,-1.53l2.04,-3.33l1.09,-0.79l1.4,-3.47l-0.13,-1.18l-0.98,-1.21l1.96,-0.43l3.02,1.81l1.86,0.31l1.58,-0.96l1.85,-7.22l-1.19,-1.25l-0.26,-4.75l-1.82,-3.28l0.88,-3.16l1.65,-0.78l0.82,-1.16l0.29,-4.87l-0.65,-1.6l-1.92,-2.43l-0.96,-0.99l-1.8,-0.75l-0.67,-2.28l-1.74,-2.82l0.67,-1.12l3.13,-2.64l2.41,-0.19l2.48,-2.97l1.63,-3.83l1.7,-2.22l0.2,-3.6l-0.22,-1.65l-1.87,-3.78l0.17,-5.83l-2.17,-4.39l-1.06,-3.64l-3.18,-4.84l-1.31,-0.42l-1.1,0.77l-0.76,-2.04l-0.95,-1.04l-3.49,-1.1l-1.35,-3.75l-3.7,-4.59l2.14,-4.03l1.46,-0.74l1.48,-2.09l3.51,-1.81l7.94,-0.92l5.53,-1.85l-0.01,-2.05l-1.84,-2.79l0.49,-2.39l-1.03,-1.91l0.31,-0.49l2.28,-0.19l0.4,-0.83l-0.08,-1.49l1.64,-0.14l4.05,-3.81l0.8,0.92l2.07,0.87l0.74,-0.09l1.49,-1.42l2.22,0.29l1.77,-2.51l3.83,-2.53l2.57,-0.84l2.86,0.21Z\", \"name\": \"Auvergne\"}, \"FR-B\": {\"path\": \"M238.0,586.42l3.33,-38.18l2.55,-13.79l1.1,-18.35l3.22,-6.65l1.05,-0.09l-0.28,3.12l1.42,2.29l4.23,3.31l3.5,1.76l7.32,8.19l1.66,2.48l3.07,16.64l2.12,5.13l2.12,2.78l4.8,4.01l0.53,1.67l0.17,5.04l0.53,1.48l0.95,0.82l0.64,-0.39l-0.81,-4.67l0.53,-2.45l-0.78,-2.02l-1.56,-1.54l1.81,0.35l2.67,1.79l0.51,0.0l0.09,-0.5l-1.71,-2.89l-5.09,-2.08l-2.05,-1.6l-1.06,-2.14l-0.76,-2.69l-2.26,-16.16l4.59,0.2l1.0,-0.73l0.76,-1.46l0.52,-0.13l1.62,4.07l2.14,0.81l2.33,0.12l3.23,2.52l0.42,1.1l0.01,3.71l1.84,3.29l1.14,0.39l2.3,-0.35l3.65,1.97l2.4,2.26l4.09,1.44l1.97,-0.27l3.32,-1.25l1.92,0.6l1.84,-0.89l1.73,-2.26l0.39,-1.15l-0.71,-1.74l0.61,-1.01l4.84,-2.55l2.4,0.72l1.37,-0.36l1.22,-1.26l0.8,-2.1l2.77,-1.37l1.9,-1.9l0.53,-1.98l-0.02,-4.59l1.44,-4.75l6.52,-4.93l1.97,-0.27l0.88,-0.62l4.4,-7.02l0.72,-5.71l2.82,-1.07l2.26,-3.5l1.86,-1.75l1.08,0.82l4.7,0.53l2.21,3.05l-0.65,3.73l1.7,1.22l2.04,0.56l1.21,-0.12l0.99,-0.55l1.06,-1.4l1.25,0.92l3.25,-0.56l4.28,0.28l3.95,5.6l3.93,1.0l0.61,0.5l-0.18,0.89l-1.67,1.65l0.27,1.57l4.23,2.32l1.94,-0.28l1.78,1.4l1.57,0.26l-0.04,0.95l-1.01,1.92l0.11,1.32l0.83,0.81l2.37,-0.06l-0.42,1.42l-1.53,1.0l-2.42,2.69l-0.63,3.6l2.35,2.36l-2.08,2.28l-0.55,1.74l0.45,0.78l2.6,0.47l0.08,1.06l-0.74,1.8l0.85,1.46l2.82,1.34l3.9,0.13l-0.49,2.77l0.25,0.95l1.6,3.28l2.0,2.5l-1.48,1.1l-0.46,1.65l1.32,4.54l-0.75,2.26l0.17,1.9l-2.73,3.05l-1.66,3.0l-2.23,0.74l-0.86,1.25l-0.28,1.0l0.69,2.34l-1.26,2.06l-4.31,3.04l-2.4,0.64l-0.97,0.93l-3.33,5.91l-3.49,3.25l-2.93,1.47l-0.85,0.92l-0.26,0.82l1.31,2.37l0.06,2.13l0.83,2.42l2.03,2.57l-0.18,3.49l-0.6,0.68l-4.79,0.41l-2.89,-1.35l-1.51,0.72l-0.26,2.8l-0.81,2.69l0.84,1.54l2.45,1.1l0.38,0.63l-2.46,5.88l-2.15,1.91l0.08,0.75l1.15,0.92l-0.04,1.22l-1.23,0.24l-2.23,-0.79l-1.42,0.36l-0.95,2.07l-2.26,1.51l-1.04,3.23l-3.58,2.13l-1.03,0.2l-2.7,-2.43l-1.53,-0.54l-5.15,1.74l-2.71,-0.29l-9.84,5.04l-4.81,-1.84l-0.82,0.1l-3.43,4.1l-0.55,0.02l-0.58,-0.84l-0.77,-0.24l-2.4,0.91l-0.89,1.71l0.25,2.7l-0.73,0.9l-3.55,-0.48l-0.39,-0.91l0.79,-1.42l-0.06,-1.16l-0.89,-0.97l-1.25,-0.4l-2.93,1.7l-1.8,1.95l-4.15,-0.19l-3.47,2.87l-0.12,1.08l1.31,1.55l1.07,2.52l-1.49,4.43l-0.05,2.72l0.82,1.54l-1.5,3.57l-1.99,0.72l0.43,2.32l-1.08,1.83l-0.24,1.37l0.97,0.82l0.99,2.44l2.34,-0.0l5.58,1.17l1.06,0.75l0.67,1.66l1.56,1.31l2.18,5.6l-1.48,0.25l-0.54,0.52l0.04,2.55l0.5,0.74l0.77,0.19l1.45,-1.47l0.73,0.04l-0.11,3.6l1.07,3.69l-2.12,1.17l-0.95,1.18l-0.6,2.95l0.6,2.36l-2.38,3.0l-1.11,3.67l-1.55,0.14l-1.73,3.36l-2.28,1.46l-0.97,1.38l0.14,4.33l-3.39,0.69l-2.69,3.11l0.2,4.62l-1.68,2.61l-0.33,1.36l0.56,4.28l-0.92,-0.12l-0.76,1.34l-0.88,-0.39l-4.3,3.15l-1.67,0.13l-3.21,-1.51l-1.72,-0.08l-0.41,0.38l-0.09,1.71l-1.57,0.84l-0.61,-1.75l-1.58,-0.29l-0.05,-1.02l-2.44,-3.28l-3.23,-2.26l-1.85,-0.13l-0.47,-0.46l0.0,-2.09l-1.39,-3.21l-1.84,-0.59l-4.67,0.85l-4.78,-0.4l-2.24,-0.73l-2.96,-2.51l-3.08,-0.56l-2.03,-1.23l-2.32,0.17l-4.04,-2.74l-3.6,-0.67l-1.04,-0.63l-1.15,-1.98l1.62,-1.94l-0.16,-0.69l-1.63,-0.36l-1.53,0.63l-1.06,1.2l-1.08,4.95l-0.8,0.27l-2.98,-0.51l-2.28,-1.89l-0.66,-1.55l3.72,-4.4l1.61,-6.06l-0.34,-3.43l-2.04,-1.95l-2.03,0.34l-2.5,-1.31l-3.23,-0.63l-1.31,0.83l-0.76,2.02l-1.67,0.28l-0.81,-0.53l-0.5,-3.23l-2.51,-1.13l-3.76,1.12l-0.43,-2.11l-0.91,-1.16l-1.53,-0.75l0.28,-4.19l0.99,0.23l1.37,-0.95l5.45,-0.89l4.04,-2.16l2.26,-4.43l3.76,-3.21l1.47,-4.18l1.91,-7.53l2.51,-13.87l1.46,-4.88l2.15,-11.02l3.96,-24.18l2.1,-17.38l-0.62,-4.32l1.6,-2.34l1.49,-5.51l1.04,-1.3l5.0,0.86l2.31,-0.32l1.41,-0.96l0.18,-1.63l-1.04,-1.26l0.32,-0.51l-0.69,-1.35l-4.62,-4.37l-1.82,-1.02l-0.93,0.42l-3.55,5.96l-0.51,2.64Z\", \"name\": \"Aquitaine\"}, \"FR-A\": {\"path\": \"M752.41,337.93l0.41,-3.1l-1.06,-2.38l-3.49,-3.89l-2.66,-0.5l-0.58,-0.64l0.01,-0.98l1.51,-2.37l0.59,-1.95l-0.54,-4.78l-1.75,-1.94l-8.58,-5.01l-0.64,-0.84l-0.05,-1.09l2.16,-1.02l1.13,-1.27l0.15,-1.2l-0.62,-1.98l1.61,-3.69l0.61,-3.59l3.46,-4.84l3.12,-6.81l1.35,-1.87l0.38,-2.06l-0.77,-1.94l0.5,-1.47l7.74,-12.95l-0.04,-1.31l-1.32,-1.53l-3.47,-0.3l-1.41,-0.91l0.68,-3.6l0.59,-8.92l1.12,-1.22l0.03,-0.65l-3.26,-1.94l5.91,-0.5l0.69,-0.48l0.66,-1.39l3.07,-2.19l2.35,-7.53l-0.51,-0.93l-1.5,-0.92l-0.16,-0.84l2.92,-5.09l0.31,-1.66l-0.55,-1.51l-3.83,-4.49l-1.84,-0.98l-0.15,-1.56l-0.76,-0.88l-0.78,0.1l-0.54,0.66l-0.45,2.07l-2.17,1.03l-1.14,1.86l-1.0,0.08l-0.86,-2.13l-0.78,-0.73l0.28,-1.06l0.96,-1.12l-0.06,-1.08l-5.94,-2.93l-1.18,-1.81l0.16,-1.54l1.14,-1.86l2.61,-2.45l0.3,-2.22l2.14,-3.21l-0.23,-2.0l0.3,-0.56l1.49,0.59l0.82,3.29l0.93,1.19l8.51,3.03l1.51,2.51l2.23,0.73l9.04,-1.44l3.25,1.92l1.42,-0.14l1.81,-2.19l3.27,-6.8l1.56,-0.51l3.31,0.51l2.76,-1.13l5.0,1.45l4.58,-0.24l9.65,5.16l6.36,1.59l-3.0,4.9l-3.49,8.88l-3.19,1.62l-1.17,2.54l-3.06,0.63l-0.65,3.29l-3.81,4.07l-2.71,1.72l-2.59,4.05l-0.57,3.17l-0.02,3.29l0.72,2.4l-2.24,2.03l-2.35,8.53l0.76,5.96l-0.74,1.18l-2.22,1.64l-0.92,5.31l-4.52,6.79l-0.54,2.48l-1.58,3.48l-0.4,1.93l0.19,3.79l2.65,4.77l0.12,2.65l-2.19,2.82l-0.36,3.09l-1.23,2.21l0.2,3.79l-1.18,1.03l-1.06,4.28l0.74,4.61l-1.6,2.38l0.42,3.1l1.23,1.01l3.17,5.04l-0.23,1.72l-3.51,1.55l-2.72,2.24l0.1,0.68l1.13,0.81l0.01,0.47l-1.73,0.72l0.49,1.92l-0.81,0.75l-2.27,-0.92l-0.97,0.21l-0.28,0.94l0.84,1.36l-0.08,1.02l-1.1,1.44l-1.52,0.61l-4.27,-0.17l-4.23,1.41l-0.93,-0.95l-3.04,-1.31l-0.28,-1.18l1.06,-2.45l-0.41,-0.56l-1.81,0.13Z\", \"name\": \"Alsace\"}, \"FR-G\": {\"path\": \"M522.82,222.06l0.15,-1.33l1.67,-2.09l-1.1,-1.74l3.36,-0.44l0.75,-1.17l0.19,-2.04l1.49,-3.08l4.29,-4.5l1.06,-2.43l1.69,-1.31l3.25,-4.02l-0.01,-1.24l-0.99,-0.91l-3.42,0.05l-0.83,-0.59l0.06,-1.42l1.32,-1.02l1.15,-1.94l-0.04,-4.45l1.17,-0.88l3.1,0.4l1.48,-0.3l1.33,-1.19l0.34,-0.98l-0.35,-1.23l-2.25,-2.13l-1.78,-0.7l-0.57,-5.79l-0.92,-2.58l2.98,-1.83l5.1,-1.46l4.31,-0.68l0.5,-0.84l-0.12,-1.65l0.86,-0.66l2.01,0.11l3.05,1.66l2.08,-0.8l2.34,1.0l1.13,-0.9l0.55,-3.93l-0.52,-1.51l-0.71,-0.52l0.41,-0.81l1.55,-0.57l0.3,-0.5l-1.83,-4.4l1.78,-2.38l-0.34,-2.7l0.46,-1.78l-1.61,-5.37l0.78,-0.85l1.85,-0.11l1.55,-0.99l1.47,-2.41l4.92,-4.4l0.93,-1.73l0.02,-1.51l-1.53,-2.55l0.45,-3.23l1.84,-3.83l0.18,-1.64l-2.03,-4.53l-0.04,-3.19l3.3,-0.48l9.74,2.65l1.93,-0.36l8.49,-4.22l2.64,-0.46l0.81,-0.59l1.02,-2.68l0.48,-3.19l-0.43,-1.68l0.44,-1.44l6.44,-6.53l1.12,-0.52l0.18,0.92l0.93,0.59l1.91,-0.33l0.33,0.43l-0.47,4.25l-1.07,0.15l-1.15,2.54l-0.06,2.75l-2.62,7.42l0.87,1.61l2.96,1.3l0.84,1.55l-0.04,1.83l-1.51,3.7l0.88,2.18l0.07,3.75l0.81,0.87l1.72,0.23l5.16,-1.22l3.29,2.82l3.4,1.33l3.26,4.42l2.06,1.75l1.77,0.48l3.82,-0.79l2.26,2.52l0.34,1.14l-0.72,0.69l-0.19,1.34l0.53,1.54l1.89,0.19l0.84,-1.2l2.91,1.37l-0.06,1.09l-6.22,4.55l-1.47,-1.68l-3.83,-0.0l-3.29,-2.25l-1.19,0.24l-1.68,2.0l-0.4,4.05l-1.46,2.2l0.73,2.75l1.03,0.93l0.75,2.9l-0.11,1.57l-1.09,3.0l-3.38,5.28l0.74,4.07l-4.23,4.01l-0.04,2.63l-1.5,3.52l1.8,6.65l0.44,6.21l0.61,0.83l1.6,0.8l0.37,1.09l-0.85,1.36l-0.07,3.38l-0.58,1.74l-1.01,0.8l-2.7,0.84l-1.21,1.87l-0.5,2.98l0.65,2.62l-1.5,3.07l0.04,0.91l0.68,1.1l3.97,3.45l1.3,8.68l1.99,3.6l2.25,1.95l2.79,1.53l4.32,3.65l5.09,2.91l4.4,0.81l0.81,1.82l5.85,5.54l-1.92,3.46l0.6,4.08l0.44,0.7l1.03,0.23l1.85,-1.94l1.59,0.1l1.4,1.4l3.12,4.65l2.71,0.1l1.04,0.61l0.59,3.05l2.43,1.84l1.41,1.66l-1.32,1.83l-0.55,3.0l-1.17,2.31l-0.63,2.86l4.61,4.55l3.34,2.15l0.53,1.12l-0.12,3.17l0.58,1.57l1.06,0.22l0.95,-0.78l0.9,-0.1l2.42,2.97l0.32,1.05l-0.23,0.6l-1.94,0.79l-2.38,3.38l-6.41,4.6l-0.81,1.18l-0.31,1.18l0.58,2.39l-0.54,2.77l0.02,3.56l-0.93,0.94l-6.33,2.11l-4.57,-2.27l-5.09,1.01l-1.05,1.3l-2.46,5.54l-0.35,0.12l-0.67,-1.03l-0.78,-0.26l-2.9,1.81l-0.94,-2.57l-3.73,-2.57l-1.5,-2.77l-1.24,0.11l-1.76,2.21l-1.45,0.16l-2.22,-1.57l-2.43,-3.48l-1.09,-0.04l-1.33,1.51l-0.66,0.01l-0.91,-1.38l-0.6,-4.23l-1.33,-1.89l0.36,-0.79l2.34,-0.44l0.81,-1.06l-0.18,-1.44l-1.17,-2.68l-4.51,-6.32l-1.22,-0.21l-1.08,1.44l-0.48,-0.25l-0.24,-1.21l0.97,-2.74l-1.02,-1.06l-2.66,-1.06l0.43,-1.56l-0.29,-0.78l-0.85,-0.58l-3.67,-0.8l-1.99,-1.43l-2.7,1.15l-2.97,-0.6l-1.78,0.44l-1.45,1.43l-0.21,2.15l-0.83,0.56l-13.16,1.75l-2.4,1.99l-1.57,-0.82l-1.94,-3.09l-0.83,-0.45l-0.53,0.44l-0.26,2.49l-1.39,-1.15l-1.04,-0.16l-2.24,1.93l-3.68,-0.45l-1.85,1.41l-2.22,-0.74l-2.88,0.2l-1.95,-0.41l-0.59,-1.05l0.08,-2.59l-0.51,-1.07l-0.99,-0.23l-1.66,0.41l-1.41,-0.86l1.57,-0.92l0.1,-0.98l-4.65,-8.19l-1.91,-2.22l-0.71,-2.09l-1.87,-1.2l-0.78,0.33l-0.57,1.22l-1.53,0.14l-2.81,-2.27l-2.08,-1.0l1.91,-2.99l-0.39,-3.83l-0.47,-1.07l-5.62,-7.49l-3.0,-1.95l-2.31,-0.03l-0.48,-2.82l-1.28,-1.7l0.56,-2.65l-0.63,-2.12l1.81,-2.22l-0.92,-2.33l2.56,-0.64l0.76,-0.7l2.0,-4.46l2.67,-2.34l0.06,-0.54l-1.98,-2.75l-2.8,0.06l-0.21,-1.56l0.51,-2.24l-0.75,-3.66l-2.01,-2.61l-1.37,-0.05Z\", \"name\": \"Champagne-Ardenne\"}, \"FR-F\": {\"path\": \"M412.4,222.65l-0.38,1.44l-1.34,1.9l0.06,1.9l1.47,1.14l0.54,1.63l1.49,2.01l3.84,2.83l0.72,2.79l2.9,2.67l0.36,4.68l1.37,2.37l1.1,0.93l4.6,2.21l2.45,-0.22l0.24,2.82l2.15,2.83l0.61,3.3l0.6,1.08l1.27,0.89l-1.6,2.47l0.14,1.54l1.31,0.75l8.97,-2.08l2.19,-1.05l1.74,-2.57l1.03,0.49l1.34,2.16l0.9,0.38l1.94,-0.52l1.78,-1.51l2.6,1.55l2.42,-0.28l1.06,1.75l1.05,3.95l3.55,2.44l1.11,1.46l-0.82,2.22l0.47,2.02l-2.35,-0.12l-1.09,1.1l-0.07,1.4l1.16,1.17l2.04,0.31l3.17,-0.76l8.34,0.69l2.32,-1.1l1.66,-1.87l0.81,-0.31l2.0,0.06l-0.39,1.86l1.39,0.61l7.06,-2.3l1.74,0.14l2.26,0.68l1.53,1.2l1.38,5.08l1.04,1.5l2.82,2.56l0.54,2.63l-1.43,3.81l-4.31,4.09l-1.36,0.16l-0.44,0.45l0.1,3.08l0.95,2.44l-0.79,1.64l0.13,1.93l-0.44,1.2l-4.41,2.4l-4.17,0.54l-1.05,0.96l-0.35,2.01l0.54,1.65l2.33,1.05l2.32,2.34l1.14,2.47l-0.54,2.78l2.56,4.28l-3.27,0.35l-3.37,1.99l-0.09,0.99l1.56,1.95l3.01,5.88l-0.52,3.35l-2.88,5.75l-0.08,0.91l0.91,1.88l1.73,1.1l3.62,4.07l0.87,4.27l2.58,8.11l-0.08,4.27l2.22,2.66l0.43,6.29l-1.31,5.46l1.16,3.82l-2.29,4.85l-0.31,1.91l-3.08,-0.2l-2.72,0.89l-4.06,2.67l-1.68,2.41l-2.03,-0.37l-1.56,1.44l-3.61,-1.72l-4.12,3.87l-2.02,0.43l-0.14,2.16l-2.46,0.28l-0.33,1.19l1.01,1.81l-0.6,1.92l2.0,3.46l0.03,1.33l-5.0,1.5l-7.99,0.94l-3.74,1.92l-1.58,2.17l-1.55,0.84l-2.19,4.11l-5.81,-0.33l-3.22,0.68l-2.11,-0.83l-3.44,0.0l-2.43,-0.97l-5.57,-0.17l-1.37,0.34l-1.78,1.22l-0.99,-0.42l-1.84,-2.18l-0.92,-0.16l-1.27,1.03l-0.14,2.59l-0.74,1.18l-3.84,-0.28l-2.59,1.74l-1.17,-0.53l-0.57,-1.75l-2.37,-0.04l-2.32,-0.61l-1.05,0.33l-3.98,4.14l-1.67,1.07l-2.44,-1.68l-0.93,-1.62l-0.85,-0.62l-1.7,0.39l-1.03,1.57l-3.34,0.57l-1.41,-0.09l-2.4,-1.37l0.96,-3.7l-0.72,-1.17l-2.43,-2.02l0.44,-3.04l-0.48,-1.28l-2.14,-1.98l-4.99,-0.43l-0.78,-2.28l-3.4,-1.56l-2.08,-2.1l-0.98,-3.23l0.61,-4.91l-0.92,-2.86l-1.82,-2.47l-2.59,-2.09l-7.17,-10.71l-1.26,-3.84l-1.36,-2.16l-6.26,-3.52l-0.73,0.71l0.89,3.2l-0.41,0.49l-5.41,0.36l-1.22,0.34l-1.77,1.25l-2.65,-0.53l-3.71,0.06l-0.93,-0.96l-0.25,-1.17l0.5,-5.89l-0.34,-1.13l-2.01,-0.45l-1.35,-1.65l-3.42,0.71l-0.27,-3.95l-1.02,-0.43l-1.95,0.48l-0.51,-2.32l-0.76,-0.23l-1.69,0.76l-1.71,-2.82l0.89,-6.75l1.43,-6.15l4.42,-7.19l-0.2,-3.32l0.98,-3.48l1.95,-4.49l-0.45,-4.2l1.53,-4.49l7.58,1.96l1.0,-0.1l0.61,-0.87l-0.49,-2.74l0.72,-0.87l2.91,1.04l2.04,-1.9l2.38,-0.56l3.32,-1.7l2.46,-0.7l0.35,-1.16l-0.65,-1.85l0.61,-1.72l1.3,-1.37l5.17,-2.86l1.55,-1.63l1.63,-5.19l0.07,-4.14l0.47,-1.61l2.92,-2.6l0.65,-1.06l0.2,-1.02l-0.43,-2.06l0.61,-4.14l-0.61,-0.73l-1.3,-0.13l-0.9,-2.56l2.48,-0.54l0.72,-0.55l0.06,-1.03l-1.17,-1.63l4.26,-2.71l0.71,-1.44l-1.2,-1.21l-3.05,-0.44l-2.46,-1.89l1.22,-1.19l0.24,-1.06l-1.87,-4.04l0.04,-3.42l-1.35,-2.01l0.64,-1.67l2.29,-0.47l5.6,-2.71l2.12,-2.29l1.88,-3.97l-0.14,-0.92l-1.76,-2.51l0.09,-4.33l-3.64,-4.38l-2.56,-1.91l-1.62,-3.34l-0.37,-3.89l3.19,-2.91l5.74,-1.65l2.05,-0.09l0.74,-0.42l1.7,-2.38l3.48,-0.41l0.61,-0.59l0.24,-1.84l2.97,1.97l3.5,-0.03l1.94,0.74l4.72,-2.45l1.4,-1.33l1.66,-3.88l3.83,-2.58l1.04,-1.18l0.24,-1.86l-0.39,-2.55l2.2,-1.65l4.54,8.35l0.27,1.94l-0.56,3.32l0.3,1.93l2.17,1.74Z\", \"name\": \"Centre\"}, \"FR-E\": {\"path\": \"M25.58,287.69l1.04,-2.41l0.98,0.55l19.61,-4.42l3.68,1.03l0.91,-0.39l0.49,-0.87l0.61,-2.85l-1.17,-2.23l-0.57,-2.79l-1.02,-0.95l-2.91,-0.8l-1.21,-1.65l-1.35,0.5l-3.1,-1.99l-2.05,0.54l-2.97,5.52l-0.73,0.25l0.61,-1.76l-1.16,-2.68l0.93,-1.65l-0.39,-1.32l-1.1,-0.43l-3.22,-0.13l-0.03,-1.29l2.05,0.17l1.03,-0.57l-0.1,-1.68l1.52,-3.15l0.48,0.22l-0.73,3.09l2.11,1.3l5.35,-0.38l1.35,0.97l1.08,0.22l5.65,-1.06l1.72,0.92l5.01,-1.07l0.32,-1.08l-0.43,-0.4l-1.81,0.13l-0.45,-0.22l-0.21,-0.91l-0.7,-0.16l-1.07,0.79l-1.23,-1.21l-2.15,0.22l2.94,-3.06l-0.3,-0.67l-1.26,0.09l-1.26,0.92l0.0,-0.61l-0.86,-0.4l-0.97,1.21l-0.97,-0.21l-1.86,1.29l-0.47,0.09l-0.42,-0.89l-0.61,-0.05l-2.2,1.04l3.37,-4.1l6.46,-3.99l0.16,-0.51l-0.48,-0.22l-4.21,1.88l-4.19,0.71l-5.77,3.26l-2.93,0.72l-1.85,0.93l-1.06,0.14l-4.34,-1.31l-0.61,0.47l-0.42,1.47l-3.53,-0.26l-0.72,-2.19l1.06,-0.51l-0.1,-1.18l-1.04,-2.54l-0.09,-1.62l0.29,-1.61l0.61,-1.07l1.0,-0.32l0.28,-0.95l-1.51,-1.32l0.55,-2.36l2.34,-4.03l1.49,0.39l-0.21,-0.84l0.61,-0.42l2.84,-0.54l3.06,1.43l1.08,-0.19l0.21,-0.62l-1.71,-2.84l0.4,-0.28l2.74,0.7l1.52,-0.37l-1.52,-0.97l0.12,-0.64l-0.57,-0.65l4.39,-0.01l3.43,-1.22l1.34,-0.04l0.37,-0.3l-0.18,-0.44l-1.03,-0.65l1.54,-0.31l3.22,-1.6l1.34,0.06l0.87,1.05l-0.41,1.86l0.44,0.48l1.59,-0.22l2.32,-1.25l2.95,0.68l0.39,-1.09l-1.07,-0.61l0.16,-0.47l1.92,-1.69l2.43,-0.7l1.25,0.09l1.02,0.6l0.74,-0.43l0.35,0.8l0.76,0.26l1.02,-1.23l-0.06,-1.4l4.47,-1.78l-0.23,1.95l0.63,0.46l-0.33,1.02l1.03,1.22l-0.04,2.24l2.17,-1.74l1.05,-0.29l-0.46,0.48l0.08,0.81l3.35,3.22l0.64,-0.01l0.46,-0.63l-0.29,-0.87l0.32,-0.81l-0.57,-1.79l0.79,0.43l0.23,-0.4l0.01,-3.26l0.25,-0.53l0.94,0.17l0.44,-0.97l1.6,0.67l2.76,-0.14l2.83,1.9l2.57,-0.45l0.27,1.42l1.62,0.5l1.99,-0.06l1.06,-0.94l-0.7,-3.74l3.29,-0.85l-3.02,-3.48l-0.21,-1.24l2.31,-1.52l1.58,-2.96l0.67,0.45l1.84,0.11l2.23,1.26l-0.34,0.77l0.33,0.57l2.26,0.04l1.73,-1.46l5.83,-2.45l1.17,0.01l1.67,-2.09l0.52,0.12l0.28,2.76l-1.23,2.74l0.91,1.6l0.99,-2.24l1.8,-2.24l1.88,-1.78l0.83,0.05l1.54,-1.44l0.86,1.01l-0.39,2.36l0.71,0.78l-1.1,2.93l-1.66,2.4l-0.08,0.93l0.4,0.4l0.82,-0.23l3.04,-5.67l0.73,0.17l1.34,-0.66l0.72,0.34l-0.02,0.95l-1.78,1.21l-0.15,0.89l0.8,0.4l0.26,0.67l1.57,0.61l4.04,0.5l0.01,1.53l-0.81,0.8l0.18,0.91l7.19,6.91l0.89,3.73l-0.05,1.65l2.77,2.02l3.21,1.57l-1.07,1.96l0.25,0.69l1.08,0.29l1.88,1.94l0.65,-0.23l0.26,-2.55l2.14,0.11l1.18,-0.47l3.23,-4.25l5.89,-3.48l0.86,-0.97l0.1,-0.9l-1.02,-0.55l1.66,-0.51l1.02,0.15l0.45,1.06l0.52,0.22l3.52,-1.89l2.07,-2.41l0.64,0.93l1.2,0.28l-2.86,3.72l0.05,0.58l1.56,0.9l3.4,-2.58l0.41,2.3l1.31,1.61l0.32,1.94l0.59,0.3l1.22,-1.16l0.73,0.99l1.4,-0.47l0.2,-0.98l-0.68,-0.65l0.99,-1.11l1.67,0.8l-0.99,-2.6l2.3,-0.82l2.58,-0.26l1.32,2.51l0.43,1.93l1.19,1.07l-0.3,1.23l1.55,2.36l0.33,1.1l-0.23,1.96l0.23,0.41l0.46,-0.1l2.43,-1.83l0.01,-0.66l-1.44,-1.01l0.18,-0.78l-0.94,-2.07l0.89,0.72l0.49,0.0l0.13,-0.47l-1.08,-1.77l-1.86,-0.74l-1.64,-3.71l0.14,-0.55l1.0,-1.3l1.06,-0.4l0.65,-1.74l2.2,0.0l0.23,-0.81l5.04,-1.02l0.56,1.44l-1.39,2.27l-0.04,2.38l1.68,1.96l2.69,0.74l4.54,0.06l4.84,-0.75l2.99,-1.62l3.64,10.01l1.9,3.39l3.27,2.8l2.45,0.25l1.96,-0.73l2.78,-2.25l2.08,-0.9l2.22,-2.82l2.36,0.04l6.13,1.76l2.34,1.48l-0.2,6.73l0.77,9.6l-1.95,4.78l1.11,3.0l0.8,5.55l-0.73,2.04l0.74,5.71l0.56,1.33l1.19,1.29l0.09,5.3l-1.36,0.75l-4.18,0.71l-2.2,2.22l-3.52,11.89l-1.14,2.06l-0.42,2.27l-6.44,-1.27l-1.52,-1.95l-1.3,-0.64l-3.37,-0.01l-1.85,1.44l-6.34,3.01l-1.86,1.53l-1.19,1.81l-2.58,1.8l-7.3,2.35l-3.73,-0.93l-5.63,2.42l-4.45,0.44l-3.34,2.21l-0.46,1.56l0.14,2.34l-1.45,5.84l-0.55,1.03l-2.15,1.57l-1.12,2.38l-0.64,0.17l-0.22,-1.6l-0.55,-0.59l-3.14,1.03l-1.54,-1.0l-0.93,0.05l-0.9,0.59l-1.08,2.16l-1.37,1.47l-3.34,0.34l-1.92,-0.93l-1.37,0.41l-0.46,0.75l-0.62,-0.07l-0.44,-0.28l0.42,-1.44l-0.72,-1.23l0.31,-0.27l7.15,-0.74l0.42,-0.33l-0.29,-0.45l-1.17,-0.28l-2.62,0.27l-5.66,-2.01l-2.93,0.77l-2.11,0.0l1.24,-1.33l0.31,-1.7l-1.35,0.9l-2.72,0.29l-0.31,0.4l1.16,0.84l-2.2,-0.55l-0.63,0.31l-0.09,1.95l-0.48,0.28l-2.02,-0.7l-4.28,1.19l-2.57,-0.32l-2.25,-3.35l-1.35,-0.58l-0.65,-0.82l1.61,-0.24l1.15,1.83l1.16,-0.65l0.65,0.53l0.68,-0.24l0.21,-1.12l0.64,0.67l1.71,0.52l1.67,-0.16l1.49,-0.93l-0.18,-0.96l2.22,-3.1l0.35,-1.86l-1.9,-2.24l-0.27,0.94l0.65,1.08l-0.82,0.4l-0.12,0.71l0.42,0.53l-1.78,-1.11l0.65,-0.06l0.01,-0.47l-0.84,-1.16l-2.77,-0.87l-0.44,0.24l0.4,0.65l-3.66,0.61l-1.42,1.82l-2.11,0.75l-0.47,-1.02l-1.31,0.54l-0.19,-1.46l0.69,-1.29l-1.59,-0.65l-0.49,-1.77l-0.85,-0.34l-0.4,0.45l0.47,4.71l1.98,3.71l-0.39,-0.57l-0.79,0.06l-1.82,-2.04l-0.48,-0.04l-0.17,0.45l0.18,1.13l-0.46,-2.36l-0.53,-0.32l-0.66,0.44l0.0,1.86l-1.27,-0.53l-2.62,1.09l0.11,-1.03l-1.36,-1.05l-0.93,-0.02l-0.59,0.7l-1.73,-2.7l-1.98,-1.38l0.8,-3.38l4.44,-2.07l0.19,-0.54l-0.38,-2.37l-0.62,-0.33l-0.68,0.34l0.01,-1.85l-0.4,-0.42l-0.73,0.22l-0.34,0.67l-1.35,-0.52l-1.29,0.56l1.49,1.25l0.53,1.73l-0.96,0.06l-1.64,1.08l-0.2,0.65l0.59,0.82l-0.65,0.45l-0.65,1.71l-2.04,-2.25l-1.17,-0.4l-0.18,-0.92l-2.14,-1.01l-2.11,-0.23l0.6,-0.53l0.09,-1.29l1.59,-0.24l1.28,-2.99l0.87,-0.89l-0.26,-1.05l-3.4,3.23l-3.3,1.66l1.14,1.45l-4.61,1.16l-0.61,-0.19l-2.02,-2.73l-2.02,-3.65l-2.0,0.27l-4.17,-0.53l-1.4,-1.21l-3.4,-0.28l-0.44,-1.08l-0.73,-0.46l-3.3,1.67l-0.97,-0.78l-3.46,0.23l-2.11,-3.2l0.09,-1.26l-0.37,-0.49l-1.33,-0.52l-0.25,-1.01l-1.16,-1.33l-1.71,-1.17l-1.77,-0.38l-0.46,0.51l0.52,1.75l-0.38,1.18l-0.22,0.25l-0.51,-0.54l-1.37,0.31l-0.79,0.7l-1.41,-1.15l-2.42,-0.78l-1.77,-4.09l-1.11,1.58l0.42,1.49l1.5,1.94l-2.06,1.02l-0.9,-1.56l-0.45,-0.19l-1.15,0.56l-0.17,1.12l0.78,0.83l-0.27,1.07l0.4,0.4l1.27,0.0l-1.83,1.89l-2.25,0.91l-8.52,-0.41l-0.06,-1.86l1.22,-0.21l0.51,-0.87l-0.21,-1.91l-1.53,-4.88l-3.94,-5.59l-6.1,-4.68l-2.5,1.73l-1.83,-1.7l-3.16,-0.08l-3.85,-1.09ZM122.83,329.88l0.13,0.1l-0.09,0.43l-0.04,-0.53ZM122.52,334.12l0.22,1.49l1.8,3.04l-1.07,-0.3l-0.6,0.31l-0.71,-2.96l0.37,-1.57ZM115.62,347.05l4.0,2.08l3.82,3.64l0.93,0.41l1.64,-0.08l0.36,0.42l-0.19,1.25l-1.31,0.39l-4.66,-0.43l-3.89,-1.51l0.15,-1.36l-1.43,-4.0l0.58,-0.8ZM0.9,248.77l2.97,-1.35l1.62,1.16l-2.63,1.4l-0.59,-1.17l-1.37,-0.03Z\", \"name\": \"Bretagne\"}, \"FR-D\": {\"path\": \"M572.77,294.7l2.05,3.2l1.34,0.98l0.94,0.05l2.46,-2.01l13.22,-1.78l1.29,-0.96l0.21,-2.17l1.83,-1.36l3.71,0.55l2.38,-1.14l1.99,1.39l3.67,0.8l0.58,0.63l-0.54,1.25l0.39,0.89l2.84,1.16l0.62,0.65l-1.02,2.34l0.33,1.69l1.28,0.68l1.66,-1.44l3.03,3.95l2.44,4.7l0.04,1.32l-2.61,0.64l-0.81,1.52l1.41,2.24l0.36,3.25l0.81,2.17l1.63,0.72l1.83,-1.7l0.37,0.08l2.15,3.26l2.68,1.82l2.04,-0.29l1.44,-1.93l0.71,-0.32l1.31,2.59l3.65,2.48l0.69,2.45l0.71,0.44l1.03,-0.19l2.07,-1.59l1.54,1.34l1.32,-1.15l2.13,0.75l1.2,-1.39l1.07,-0.54l1.19,1.08l-0.01,2.27l1.13,2.33l-0.08,1.75l-1.9,2.67l-1.76,0.37l-1.03,0.96l-0.57,2.85l0.54,0.87l2.04,0.96l0.58,3.99l2.33,2.66l0.39,5.14l1.09,1.67l-1.66,7.62l-6.1,10.18l-5.32,2.93l-0.44,1.36l0.44,3.01l-2.29,1.36l-1.2,1.37l1.59,3.4l3.44,3.74l2.4,1.47l1.61,0.34l1.67,1.58l2.01,0.74l-1.07,1.88l-4.39,0.71l-1.18,1.3l0.33,1.55l1.87,1.92l-0.91,2.57l1.47,1.6l1.78,7.23l-1.04,4.03l-1.84,1.27l-0.8,1.22l-0.19,2.24l0.6,1.72l2.83,1.93l0.45,1.14l-1.04,1.12l-4.31,1.01l-1.25,0.68l-4.11,-1.13l-1.53,-0.92l-2.16,-2.28l-1.59,-0.6l-2.08,0.21l-4.97,1.58l-4.17,-1.59l-2.25,0.46l-1.84,4.95l-0.85,4.87l-1.46,2.94l-0.16,2.24l-3.53,7.73l-1.32,5.59l0.1,1.05l-2.89,-0.37l-0.98,-0.87l-0.99,-2.98l0.05,-2.06l-1.71,-1.44l-0.19,-2.19l-2.65,-1.28l-1.12,0.71l-0.53,2.23l-1.0,0.29l-2.36,-2.32l-3.36,1.2l-4.53,-1.65l-0.96,0.13l-0.67,1.01l-1.27,5.18l-1.75,2.39l-1.51,1.26l-1.61,0.66l-1.62,0.02l-4.83,-1.44l-3.09,0.75l-4.17,-1.07l-4.26,1.48l-1.39,-0.08l-2.06,-1.7l-2.78,-1.24l0.1,-3.19l-0.63,-2.02l5.31,-3.01l1.5,-1.51l0.08,-1.05l-0.86,-1.49l0.04,-1.61l-0.52,-1.46l0.64,-3.47l-0.8,-3.63l-2.07,-1.53l-4.18,-1.03l-2.7,-2.59l-1.71,-0.08l-3.83,-2.25l0.36,-3.65l-0.37,-2.12l-1.06,-0.81l-1.57,-3.05l-2.42,-2.49l-0.5,-1.91l-1.52,-2.83l-2.0,-0.53l-0.46,0.28l-0.44,2.29l-1.35,0.98l-0.44,2.1l-3.81,2.32l-1.29,0.32l-0.45,-0.25l-0.04,-1.75l-1.67,-2.96l-2.44,-0.35l-2.29,2.21l-2.62,-1.24l-1.84,-0.34l-1.88,0.13l-3.02,1.22l-3.33,-3.26l-1.31,-0.42l-1.58,0.12l-1.81,-1.02l-2.28,-2.7l0.24,-3.61l2.35,-5.12l-1.16,-3.85l1.31,-5.42l-0.44,-6.45l-2.26,-2.8l0.11,-4.17l-2.6,-8.2l-0.9,-4.35l-3.61,-4.15l-1.86,-1.22l-0.73,-1.46l2.92,-6.28l0.56,-3.67l-3.11,-6.23l-1.47,-1.85l0.1,-0.41l2.29,-1.29l2.94,-0.24l1.27,-0.45l0.24,-0.52l-2.69,-4.62l0.57,-2.61l-1.25,-2.8l-2.53,-2.58l-2.27,-1.0l-0.29,-1.05l0.23,-1.59l0.78,-0.71l4.06,-0.49l4.77,-2.67l0.52,-0.96l-0.08,-2.47l0.81,-1.85l-0.97,-2.53l-0.14,-2.65l1.56,-0.3l1.46,-1.72l2.5,-1.78l2.07,-4.87l-0.62,-3.16l-3.85,-4.03l-1.44,-5.19l-1.91,-1.49l-3.84,-0.86l0.77,-3.4l3.72,-2.66l1.67,-3.21l0.11,-0.8l-0.86,-1.74l-0.19,-1.73l1.16,-4.16l0.42,-0.44l3.03,0.07l2.26,-1.04l4.61,0.57l6.24,-1.07l2.53,0.54l0.71,-0.44l2.16,-3.09l0.67,0.56l0.63,3.07l0.74,0.37l1.85,-0.15l2.82,1.83l5.43,7.28l0.77,4.37l-1.84,2.55l0.13,1.19l2.18,1.04l3.08,2.4l2.14,-0.2l0.78,-1.38l1.02,0.28l1.06,2.51l1.93,2.25l4.57,8.03l-1.6,0.91l-0.04,1.08l2.03,1.31l2.23,-0.36l0.17,3.16l0.84,1.54l2.43,0.62l2.82,-0.21l1.98,0.77l0.73,-0.1l1.67,-1.34l1.7,0.51l2.06,-0.09l2.03,-1.88l2.69,1.28l0.64,-0.93l0.02,-1.87Z\", \"name\": \"Bourgogne\"}, \"FR-K\": {\"path\": \"M419.37,770.27l0.81,-3.38l0.96,-0.93l6.34,-1.36l1.61,-0.04l2.88,0.85l1.43,-0.36l1.22,-1.47l0.65,-3.39l1.51,-1.85l6.14,-0.86l3.35,0.61l0.97,-0.51l0.4,-1.04l-0.74,-1.99l-3.09,-1.76l-2.07,-2.72l-1.47,-0.1l-4.96,1.12l-3.17,-1.69l-0.42,-3.14l-1.12,-1.15l-1.49,-0.73l1.48,-2.31l2.2,-0.1l2.99,-1.27l0.65,-0.99l-0.69,-3.62l-1.98,-1.8l0.24,-0.61l2.52,-1.06l0.33,-0.92l-1.18,-4.75l-1.85,-1.91l1.02,-1.65l-0.14,-1.77l-0.8,-1.55l-1.36,-1.19l-2.79,-0.35l-2.43,-1.39l-5.03,-1.89l-2.53,-2.3l-1.03,-4.43l0.54,-3.08l1.15,-1.81l0.26,-1.45l3.81,-0.82l1.18,-1.02l-0.19,-3.15l1.51,-1.9l0.46,-1.37l1.36,0.45l0.19,1.39l0.84,0.62l4.14,-1.82l4.72,-0.67l1.8,1.87l1.22,0.56l1.5,0.11l3.85,-0.74l2.64,1.49l1.45,-0.78l0.35,-1.23l-0.32,-1.54l1.12,-1.39l7.11,1.44l5.76,-0.43l6.53,0.6l2.45,-0.68l3.24,-2.63l0.42,-0.83l-0.68,-2.02l0.6,-2.45l-0.19,-0.92l-2.2,-2.94l0.05,-2.65l1.1,-2.76l2.51,-0.4l4.35,1.9l1.1,-0.1l6.92,-3.03l2.96,-3.42l2.74,-0.58l2.55,0.89l1.37,-0.41l1.0,-2.12l-0.14,-2.03l0.44,-2.24l-0.73,-2.14l0.41,-1.85l1.58,-0.43l6.2,0.82l1.41,-0.5l1.55,-1.89l0.72,-2.75l1.63,-1.2l2.89,-0.31l1.39,-1.17l1.0,-3.03l5.43,-5.55l0.13,-1.14l-0.47,-0.85l-2.93,-2.52l-2.63,-0.6l-1.18,-1.25l-1.68,0.19l-0.95,-0.73l2.17,-1.61l0.27,-2.57l0.86,-1.31l2.1,-1.54l-0.42,-1.84l-2.0,-1.22l-6.02,0.32l-0.56,-1.89l-1.0,-1.3l-4.04,-2.45l-1.32,-0.24l1.45,-3.75l-1.04,-2.33l-0.29,-2.33l0.72,-2.87l0.15,-2.84l-3.33,-5.18l-0.09,-4.17l-1.11,-2.32l-5.19,-6.8l0.8,-2.57l1.89,-3.32l1.74,-8.27l0.48,-0.92l1.74,-1.36l0.66,-3.79l0.74,-0.85l0.49,0.01l1.38,1.98l1.24,-0.05l4.81,-4.41l2.4,-0.31l3.68,-2.32l1.91,-0.26l1.14,3.38l3.5,6.75l1.3,1.46l1.27,0.48l1.32,-0.71l3.38,-0.42l1.06,-1.02l0.57,-2.66l0.88,-0.37l1.67,0.18l0.85,0.78l-0.48,1.79l0.29,0.91l4.51,1.09l4.08,3.87l4.49,2.14l-0.03,3.29l2.5,9.95l2.81,3.84l2.22,7.93l1.76,1.71l1.65,2.99l-0.83,2.37l0.49,3.73l0.65,0.86l4.86,-0.57l1.07,1.18l4.93,2.76l1.53,0.35l0.81,-0.25l1.6,-1.74l3.36,-2.48l2.41,-0.43l0.38,0.55l-0.03,2.43l0.82,0.87l1.0,0.3l1.9,-1.04l0.64,-2.6l3.6,-0.33l1.67,0.76l2.19,2.3l4.31,1.59l0.57,1.92l1.24,1.78l0.1,1.8l1.91,2.08l-0.15,5.55l0.45,3.15l0.64,0.51l1.22,-0.45l1.18,0.24l4.27,5.49l0.24,0.86l-0.09,0.41l-1.63,0.18l-0.07,2.78l-1.07,1.44l-1.67,1.35l-2.8,1.32l-5.36,4.05l0.39,5.72l-1.95,5.45l0.01,2.15l-0.44,1.28l-4.46,-1.42l-2.04,0.64l-1.5,1.19l-1.67,2.39l-1.37,3.3l0.44,1.11l1.6,0.3l-0.54,1.61l-2.32,0.66l-0.61,1.56l-1.54,0.5l-3.46,2.78l-2.01,0.54l-1.44,1.2l-1.18,0.35l-0.94,2.35l-2.28,-0.33l-1.56,-1.02l-1.72,-5.59l-1.8,-1.41l-2.81,-0.29l2.04,-1.54l0.58,-1.28l-0.42,-0.56l-5.32,1.15l-2.81,2.01l-3.83,1.19l-5.69,4.39l-1.42,3.08l-5.07,2.15l-0.24,0.89l0.43,0.4l2.63,-0.39l-7.66,4.38l-2.05,1.74l-4.98,6.14l-1.03,0.45l-2.27,-1.13l-1.83,0.27l-2.27,1.15l-8.45,6.47l-1.13,1.41l-1.41,3.09l-2.19,2.14l-2.0,3.55l-1.44,-1.08l1.64,-1.51l-0.27,-0.83l-2.0,-0.12l-1.09,0.46l-0.33,0.87l0.47,2.32l2.46,2.54l-1.4,2.14l-0.63,4.11l-1.17,2.13l-0.37,-0.45l0.96,-2.03l-0.41,-0.59l-1.63,0.4l-0.56,1.21l0.89,2.7l1.86,1.89l-0.87,0.71l-1.39,-0.56l-0.44,0.2l-0.36,2.7l-3.13,2.98l-0.02,0.53l1.36,2.32l3.28,1.0l0.83,0.76l0.28,4.25l-0.71,4.12l-0.63,-0.95l-0.66,-0.01l-0.72,1.96l0.88,1.48l1.38,0.45l0.69,7.29l0.65,1.74l4.33,4.47l1.9,2.62l-0.01,2.08l-3.87,0.68l-3.04,-0.1l-1.82,-0.78l-1.61,-2.4l-2.87,-0.31l-1.18,0.64l-2.18,-0.63l-1.94,1.51l-3.1,0.27l-3.75,2.98l-4.82,-0.09l-1.23,0.6l-3.22,2.89l1.11,2.67l-6.43,-1.13l-0.84,0.7l-0.47,1.26l-0.65,0.25l-4.01,-2.06l-1.68,-2.74l-2.77,-0.45l-6.18,-3.28l-5.7,1.38l-3.03,-0.32l-1.13,0.6l-1.01,2.09l-2.46,2.19l-3.04,0.8l-2.46,-1.51l-1.32,-4.24l-1.07,-1.66l-3.53,-0.82l-3.45,-2.36l-5.13,-1.08l-0.81,-0.34l-0.32,-0.69ZM436.05,775.98l0.98,-0.26l0.19,-0.57l-1.32,-2.61l-1.13,-1.02l-0.89,0.52l-0.67,1.49l0.08,1.26l0.96,0.9l1.81,0.29ZM550.06,686.86l3.86,-3.8l1.24,-0.42l-5.1,4.22Z\", \"name\": \"Languedoc-Roussillon\"}, \"FR-J\": {\"path\": \"M527.01,213.62l-0.11,1.4l-0.53,0.83l-2.41,0.07l-1.08,0.49l-0.16,0.77l1.11,1.37l-1.57,1.82l-0.26,1.75l0.53,0.71l1.23,-0.03l1.67,2.18l0.71,3.42l-0.51,2.22l0.28,1.92l0.91,0.63l2.19,-0.35l1.55,2.25l-2.51,2.22l-1.05,1.67l-0.92,2.75l-3.44,1.53l-0.08,0.76l0.96,1.73l-1.79,2.18l0.61,2.36l-0.39,3.38l-2.33,3.26l-2.66,-0.42l-6.16,1.07l-4.69,-0.56l-2.32,1.05l-3.28,0.01l-0.78,0.88l-1.15,3.78l0.03,1.96l0.89,2.73l-1.51,2.91l-3.77,2.73l-0.94,3.95l-5.9,2.15l-1.34,-0.09l0.3,-1.95l-1.17,-0.58l-2.71,0.53l-1.78,1.95l-1.86,0.95l-8.31,-0.68l-4.03,0.77l-1.28,-0.56l-0.29,-1.2l0.55,-0.64l2.04,0.32l0.78,-0.49l0.19,-0.9l-0.52,-1.47l0.66,-1.15l0.12,-1.5l-1.38,-1.8l-3.36,-2.25l-0.97,-3.78l-1.31,-2.14l-2.64,0.19l-2.85,-1.6l-0.88,0.19l-1.36,1.44l-1.38,0.4l-0.75,-0.46l-1.13,-1.91l-1.71,-0.66l-2.06,2.74l-1.99,0.93l-8.67,2.01l-0.72,-0.5l-0.01,-0.61l1.67,-2.22l-0.0,-0.79l-1.9,-2.04l-0.62,-3.34l-2.14,-2.83l-0.33,-3.02l-0.85,-0.53l-2.09,0.45l-5.27,-2.88l-1.19,-2.06l0.06,-2.49l-0.48,-2.36l-2.95,-2.75l-0.78,-2.87l-3.88,-2.87l-1.33,-1.79l-0.62,-1.75l-1.41,-1.07l-0.0,-1.22l1.29,-1.78l0.48,-1.88l-2.37,-2.36l0.46,-4.54l-0.3,-2.21l-4.76,-8.82l-0.38,-3.3l-2.13,-1.03l0.25,-2.56l-0.68,-2.4l8.08,-2.22l2.47,-1.34l3.14,-10.33l1.58,-3.22l1.21,2.8l0.97,0.78l3.4,0.35l5.9,1.68l6.32,-0.94l5.0,-3.17l3.64,2.47l2.47,0.31l3.98,1.78l1.85,0.12l2.23,-1.39l1.78,0.0l10.64,5.96l2.03,-0.27l1.08,1.69l1.38,1.16l2.94,-1.13l1.25,0.29l1.79,1.68l2.18,-0.48l1.24,0.97l1.41,0.34l2.4,-1.76l4.02,1.08l5.71,-1.26l1.58,0.97l2.36,-1.31l1.83,-0.04l2.02,-1.23l3.45,1.12l1.87,3.26l-0.52,3.33l0.71,1.6l8.87,7.94l0.88,0.31l1.71,-0.43l0.63,3.55l0.67,1.16l3.29,2.14l2.33,-0.05Z\", \"name\": \"\\u00cele-de-France\"}, \"FR-I\": {\"path\": \"M685.01,434.33l-5.31,6.22l-1.03,1.9l-4.74,4.41l-1.84,0.37l-7.0,-0.5l-1.33,-3.29l-3.08,-2.86l-0.56,-0.07l-2.8,2.69l-0.49,1.27l-1.36,0.34l-1.18,1.41l-2.27,1.53l-1.92,-0.63l-0.3,-1.18l0.31,-2.61l-0.36,-0.62l-1.87,-0.51l-0.9,-1.25l-2.54,-1.12l-1.18,-3.48l-1.25,-1.09l-1.44,-0.48l-0.43,-0.79l-0.02,-2.82l5.46,-1.63l1.12,-0.84l0.37,-0.95l-0.62,-1.68l-2.58,-1.63l-0.69,-1.66l0.41,-2.37l2.38,-1.92l1.09,-4.3l-1.48,-6.56l-0.51,-1.23l-1.3,-1.32l0.94,-2.45l-0.28,-0.73l-1.72,-1.5l-0.2,-0.95l1.27,-0.87l3.9,-0.58l1.01,-1.09l0.45,-1.78l-2.35,-1.13l-1.69,-1.6l-1.75,-0.41l-2.19,-1.35l-3.31,-3.61l-1.36,-2.96l3.33,-2.29l0.28,-0.78l-0.62,-2.65l0.29,-0.85l5.24,-2.85l5.77,-9.4l2.24,-8.96l-1.14,-1.89l-0.56,-5.73l-2.21,-2.22l-0.59,-4.0l-2.49,-1.54l0.45,-2.38l0.71,-0.65l1.96,-0.52l2.03,-2.83l0.29,-1.57l-1.27,-3.19l-0.01,-2.31l-0.98,-1.22l-1.78,-0.21l-1.78,1.81l-1.49,-0.72l1.8,-4.25l1.34,-1.19l3.97,-0.71l3.2,1.92l1.57,0.35l6.71,-2.24l1.18,-1.2l0.28,-1.31l-0.19,-2.57l0.55,-2.88l-0.59,-2.51l0.85,-1.62l6.42,-4.61l2.41,-3.4l2.02,-0.86l0.39,-1.05l-0.27,-1.04l1.7,-1.08l1.57,-2.89l0.31,-0.17l0.19,0.57l-0.13,2.29l0.86,0.64l3.54,-2.51l2.66,-3.33l1.51,-0.34l2.76,0.62l1.12,0.8l0.85,1.22l-0.05,1.55l0.43,0.85l3.76,1.96l2.51,-0.26l2.39,-1.41l2.98,-0.22l2.24,0.93l5.34,3.45l2.52,0.46l2.67,-0.85l2.12,-2.91l1.06,0.46l2.95,3.62l3.4,1.77l6.19,5.01l1.53,0.24l0.12,1.39l0.9,1.15l8.6,5.02l0.93,0.91l0.86,1.81l0.15,3.21l-0.52,1.72l-1.54,2.44l0.0,1.6l0.97,1.04l2.57,0.44l3.26,3.66l0.82,1.49l0.15,1.6l-0.43,1.71l-2.03,-0.62l-3.14,0.52l-2.79,-0.79l-2.26,0.93l-0.13,1.45l0.89,2.21l-1.17,1.27l-2.45,0.87l-0.39,1.86l-1.4,0.82l-1.02,1.29l-1.13,2.71l0.43,0.5l7.28,-0.72l1.03,-0.47l2.07,2.07l-0.33,0.68l-1.74,0.85l-0.94,1.23l-0.92,0.25l-1.15,1.19l-0.5,2.05l0.22,2.14l-4.03,2.97l-2.97,3.79l-3.91,3.63l-1.76,0.61l-0.2,1.68l-3.32,2.26l-0.89,1.51l0.63,1.83l-1.24,1.79l-3.98,3.04l-6.52,2.06l-3.24,1.99l-0.91,3.38l1.07,2.38l0.08,2.0l-1.81,4.99l0.94,1.68l-0.18,1.9l-1.19,1.21l-2.12,1.15l-2.14,2.27l-4.43,2.45l-9.1,8.69l0.2,1.68l1.26,1.41l-4.85,6.99l-0.27,1.15l0.45,2.34l-0.64,1.48Z\", \"name\": \"Franche-Comt\\u00e9\"}, \"FR-H\": {\"path\": \"M839.1,783.31l-0.56,-2.48l1.09,0.04l0.87,-0.73l0.97,0.13l1.09,-2.5l1.84,-0.29l0.76,-0.66l0.23,-1.99l0.9,-1.67l-0.37,-0.73l-0.73,-0.18l0.53,-2.15l0.67,-0.8l2.08,-0.75l0.24,-3.05l1.1,-0.35l1.74,1.11l1.25,-0.32l0.96,-1.02l0.81,-2.7l1.71,-0.13l3.85,-2.01l6.79,-1.46l2.04,-1.04l0.39,-1.79l3.75,-4.0l2.68,-0.24l4.29,1.03l1.55,1.02l1.19,2.72l1.14,0.07l2.19,-3.78l0.93,-2.49l-0.54,-1.96l0.45,-1.48l-0.33,-1.67l-1.72,-2.56l1.58,-2.33l-0.42,-1.61l0.2,-1.25l1.77,-2.0l0.09,-1.87l-1.02,-2.2l0.15,-2.24l0.78,-0.51l3.37,-0.39l2.29,2.03l-0.61,1.92l0.97,1.96l-0.25,1.51l1.15,7.58l-0.1,2.43l-1.97,7.76l-0.01,4.64l-0.45,1.12l0.9,0.88l0.08,2.3l1.16,2.16l2.31,1.3l0.52,-0.73l0.26,0.64l0.31,8.84l0.74,1.74l-0.8,5.15l1.67,6.51l-0.44,10.26l0.43,1.97l-0.77,3.26l-1.67,1.6l-1.61,3.09l-5.49,7.85l-0.57,8.76l0.53,5.67l-0.08,5.91l-1.17,0.97l-0.92,1.62l0.76,0.54l-0.37,1.74l-1.74,0.49l-0.11,1.13l-2.12,-0.35l-1.05,0.57l-0.65,2.56l1.2,0.59l2.92,-0.99l0.13,1.33l-1.26,1.41l-1.71,0.68l-1.08,1.6l-0.91,0.18l-0.29,2.52l0.83,1.06l-0.73,0.98l0.06,0.73l-3.5,1.86l0.75,1.71l-0.75,1.64l0.56,0.37l1.71,-1.23l-1.03,2.83l-1.12,0.98l-2.1,-1.59l-4.12,-1.27l1.3,-2.62l-3.08,-2.01l0.67,-1.09l-0.53,-0.89l-2.18,1.38l-0.31,-0.88l-1.05,0.42l-0.89,-0.9l-1.69,-0.57l-2.48,-0.06l-1.61,-1.37l-1.4,-0.35l-0.77,-1.03l-1.48,-0.22l0.52,-0.56l-0.26,-0.88l-3.47,-1.18l0.23,-1.58l-0.97,-1.0l1.09,-3.13l1.05,0.36l3.39,-1.58l0.89,-1.7l2.21,-1.92l-0.29,-0.66l-8.02,-1.43l-0.52,-0.55l0.46,-1.42l-0.38,-0.52l-1.67,0.01l-3.16,1.01l0.18,-0.48l-0.4,-0.54l-1.72,-0.27l1.54,-0.27l1.43,-1.25l0.24,-1.91l-0.67,-0.6l2.37,-0.45l2.07,-1.24l-0.13,-1.27l-0.83,-0.83l1.45,-0.81l-0.51,-1.62l1.46,-2.52l-1.62,-2.21l-1.32,-0.53l-1.38,0.17l-3.29,1.52l-2.54,0.17l-1.76,0.68l0.47,-1.93l-0.35,-1.28l-1.24,-1.48l3.57,-0.75l1.04,-1.62l-0.6,-0.87l0.3,-0.56l4.54,-2.31l0.48,-1.38l-1.4,-1.58l-1.71,-3.2l-2.34,0.26l-0.71,-1.26l-1.12,-0.67l-2.26,-0.35l0.14,-0.96l-0.76,-0.56l0.72,-0.51l0.17,-0.94l-0.4,-0.4l-1.06,0.0l0.71,-1.14l-0.24,-1.05l-0.56,-0.41l0.23,-1.04l-1.57,-0.93l0.1,-0.3l2.12,-0.07l1.46,-0.91l2.49,-0.49l2.28,-1.06l0.26,-0.98l-1.25,-1.24l-2.16,-1.07l-0.59,-1.15l-1.29,0.59l-0.0,-0.55l1.79,-1.08l0.05,-0.65l-1.35,-1.12l-1.58,0.01l-1.58,0.64Z\", \"name\": \"Corse\"}, \"FR-O\": {\"path\": \"M413.2,69.58l0.11,-1.12l-3.23,-2.56l1.12,-3.7l0.34,-8.25l1.76,-1.34l0.09,-0.54l-1.62,-2.5l-0.31,-1.25l-0.9,-8.63l0.27,-3.58l2.33,-7.12l-1.52,-7.52l1.29,-1.03l3.05,-0.85l4.62,-5.26l11.55,-5.06l1.26,0.15l2.02,-1.2l9.82,-1.25l11.15,-3.8l4.16,0.37l5.0,-1.32l3.12,-1.58l0.7,1.68l1.23,6.2l3.15,3.91l0.18,1.7l-1.64,1.81l-0.46,1.28l1.19,4.19l-0.54,2.33l1.22,1.04l0.85,1.76l1.6,0.59l1.74,-0.13l1.08,0.38l0.85,1.84l2.31,2.23l1.56,3.26l1.23,1.02l6.22,2.61l1.24,-0.81l1.82,-3.17l2.36,-1.96l7.91,-2.49l1.38,0.42l0.93,0.87l2.64,5.22l0.73,0.71l1.47,0.33l0.39,0.72l0.64,2.11l-0.83,1.73l2.11,8.21l0.5,4.36l1.83,1.94l3.89,1.77l4.41,-1.17l2.06,-1.65l0.69,-0.06l0.91,0.48l-0.62,1.53l0.87,1.08l4.16,0.1l2.54,0.89l2.05,2.79l1.06,12.04l2.26,2.27l1.34,-0.87l1.51,-2.93l1.08,-0.71l5.01,0.1l3.54,1.92l1.54,-0.05l4.97,-1.74l5.54,4.56l1.84,3.73l1.58,0.45l0.56,-0.77l-0.05,-0.96l0.39,-0.17l1.81,1.22l0.16,1.19l-2.7,2.81l-1.96,8.18l1.09,0.83l2.33,-0.43l1.75,5.88l-2.73,1.67l-1.64,1.68l-0.64,2.0l0.67,2.58l-2.01,0.63l-6.37,-2.33l-0.35,-3.85l-0.85,-0.71l-2.17,0.3l-2.76,1.75l-2.5,-2.21l-6.23,-0.77l-3.39,-0.85l-1.08,0.12l-3.89,2.1l-2.56,-1.15l-1.27,-0.05l-5.56,3.16l-0.86,0.08l-5.33,-1.62l-2.79,1.34l-3.54,-0.93l-2.0,-0.08l-4.15,0.95l-7.54,-5.05l-2.8,-0.44l-1.31,1.01l0.01,2.03l-0.44,0.67l-3.52,0.35l-2.6,1.51l-0.36,-0.63l-0.0,-2.86l-0.59,-1.17l-0.66,-0.35l-1.01,0.32l-3.34,2.76l-0.71,-0.08l-0.02,-0.83l1.12,-1.87l-0.07,-1.32l-1.29,-2.49l-2.14,-2.0l-0.81,0.27l-0.45,0.81l-0.23,3.73l-3.55,-1.83l-3.28,-0.74l0.21,-1.93l-0.84,-0.85l-1.19,0.0l-1.88,1.03l-2.2,-0.4l-2.49,0.28l-0.82,0.73l-1.02,2.09l-0.67,-0.02l-1.14,-2.28l0.38,-2.2l5.34,-4.6l-0.84,-1.62l-2.96,-1.66l-1.84,-0.13l-1.13,1.09l-1.58,-2.07l-0.97,-0.34l-0.78,0.51l-0.34,1.17l-1.01,0.43l-6.98,1.18l-4.54,0.12l-1.52,-1.23l-0.7,-2.67l-0.8,-1.02l-6.6,-3.77l0.98,-2.17l-0.98,-1.05l-1.5,0.16l-1.76,1.23l-1.45,-1.07l-1.39,-1.87l-1.15,-0.89l-1.2,-0.29l-3.86,0.27l-3.8,1.47l-1.42,-0.03l-1.25,-0.74l-1.38,-1.7Z\", \"name\": \"Nord-Pas-de-Calais\"}, \"FR-N\": {\"path\": \"M408.38,556.2l0.91,0.44l1.92,-0.65l2.61,1.04l4.01,3.23l1.3,2.14l4.09,2.43l1.55,0.03l3.21,-1.12l3.93,-2.11l2.16,0.82l1.99,-1.02l4.2,-0.21l0.62,1.31l0.9,6.69l4.35,8.22l-1.5,7.18l1.83,1.52l1.23,4.55l1.75,0.98l0.44,-0.3l0.5,-1.97l5.01,-1.73l0.98,0.09l1.12,1.27l0.64,0.09l1.37,-0.72l3.34,0.12l1.98,-0.24l1.26,-0.68l3.9,-4.84l0.6,-2.79l2.43,-4.04l0.63,-2.79l8.08,-8.46l1.99,2.79l0.35,3.18l0.87,0.34l2.52,-0.33l2.18,3.4l0.79,2.4l2.88,1.59l-1.23,1.77l1.65,6.84l2.92,2.99l5.23,6.82l1.05,2.18l0.1,4.19l3.32,5.15l-0.9,5.5l0.32,2.52l1.01,2.05l-1.39,3.21l0.08,1.1l1.58,0.44l3.9,2.34l0.8,1.02l0.34,1.84l0.65,0.48l6.26,-0.26l1.46,0.94l0.32,0.86l-1.91,1.4l-1.03,1.54l-0.21,2.47l-2.13,1.43l-0.13,1.0l1.39,1.14l1.67,-0.18l1.14,1.22l2.51,0.52l2.74,2.32l0.25,1.23l-5.31,5.34l-0.99,3.02l-1.08,0.95l-2.91,0.32l-1.88,1.36l-0.56,0.87l-0.32,2.09l-1.24,1.55l-1.49,0.39l-5.76,-0.82l-2.05,0.61l-0.69,2.44l0.73,2.23l-0.44,2.08l0.14,2.08l-0.66,1.51l-1.26,0.21l-2.19,-0.84l-3.04,0.64l-3.09,3.49l-6.65,2.92l-1.2,-0.05l-3.97,-1.76l-2.4,0.13l-0.77,0.45l-1.35,3.2l-0.07,2.89l0.54,1.3l1.7,1.85l-0.46,3.17l0.7,1.73l-3.21,2.95l-2.17,0.61l-6.44,-0.6l-5.8,0.43l-7.23,-1.43l-1.59,1.44l0.09,2.71l-1.0,0.78l-2.57,-1.49l-5.18,0.66l-3.14,-2.48l-5.05,0.72l-3.83,1.77l-0.46,-1.69l-1.87,-0.85l-0.77,0.39l-0.48,1.42l-1.61,2.09l0.3,2.67l-0.42,0.86l-3.57,0.62l-1.0,0.63l-0.37,1.68l-1.15,1.8l-0.58,3.26l1.1,4.84l3.39,3.03l4.59,1.56l2.51,1.42l2.66,0.3l1.08,0.94l0.83,2.56l-1.08,2.0l1.92,2.16l1.07,3.8l-0.07,1.0l-2.39,0.95l-0.61,1.4l2.07,2.02l0.56,3.41l-3.03,1.37l-2.35,0.16l-1.59,2.14l-0.07,1.51l2.06,1.08l0.65,1.08l0.02,2.42l2.73,1.9l2.44,0.34l4.93,-1.06l1.87,2.56l2.44,1.23l1.16,1.53l-0.56,1.17l-3.39,-0.6l-6.48,0.94l-1.84,2.18l-0.71,3.52l-0.94,1.07l-0.93,0.2l-2.88,-0.85l-6.65,0.91l-0.6,-0.72l-2.06,-0.86l0.44,-1.39l-0.34,-0.52l-6.91,-0.69l-4.13,-2.6l-2.77,0.75l-1.85,-0.09l-1.29,3.38l-0.89,0.36l-3.96,-7.32l-1.32,-0.57l-0.07,-1.45l-1.54,-0.41l-7.55,-0.02l-2.57,0.59l-0.9,-0.66l-1.64,-3.55l-1.32,-1.18l-6.5,-0.77l-1.98,-1.3l-1.95,0.91l-1.91,-1.53l-4.5,-2.31l-2.42,-0.13l-4.25,-1.18l-1.86,0.15l-1.65,0.84l-0.17,3.02l-0.83,2.26l0.51,1.0l-0.87,1.46l1.61,1.6l0.37,1.12l-0.06,1.17l-0.98,0.89l-9.69,-0.06l-1.2,-0.42l-3.4,0.67l-1.06,-0.21l-0.39,-1.18l-2.09,-1.52l-1.26,0.49l-2.75,3.45l-0.52,0.08l-2.26,-3.41l-4.48,-1.38l-2.23,0.95l-3.75,0.57l-4.68,1.73l-1.97,0.19l-2.25,-0.9l-1.02,-1.13l-1.36,-0.51l-0.27,-1.09l-1.39,-1.3l-1.0,-2.44l0.13,-1.38l-0.56,-0.4l-2.74,0.92l-1.35,-0.16l-0.79,-1.53l-3.38,-2.05l-0.7,-4.48l0.24,-1.55l1.77,-2.88l-0.27,-4.4l2.4,-2.78l2.78,-0.28l0.84,-0.65l0.31,-0.87l-0.39,-3.59l0.74,-1.06l2.36,-1.54l1.67,-3.29l1.64,-0.23l1.2,-3.81l2.43,-3.14l-0.56,-2.63l0.52,-2.56l0.68,-0.87l2.02,-0.85l0.45,-0.93l-1.08,-3.82l0.01,-3.91l-1.18,-0.63l-1.82,1.65l-0.37,-0.32l-0.06,-2.03l1.22,0.0l0.86,-1.06l-2.34,-6.09l-1.59,-1.35l-0.73,-1.74l-1.23,-0.87l-5.86,-1.26l-1.94,0.14l-0.81,-2.2l-0.88,-0.67l1.33,-2.72l-0.49,-2.13l1.42,-0.27l0.83,-0.81l1.31,-3.57l-0.83,-1.68l0.05,-2.55l1.48,-4.6l-2.35,-4.65l3.03,-2.48l2.13,0.37l2.18,-0.26l1.91,-2.03l2.48,-1.5l1.3,0.8l-0.76,2.29l0.66,1.54l1.48,0.61l2.85,0.05l1.26,-1.47l-0.22,-2.88l0.7,-1.2l1.77,-0.63l0.95,0.98l1.34,-0.02l1.3,-1.08l2.0,-2.97l5.6,1.75l9.95,-5.07l2.49,0.35l5.08,-1.73l1.68,0.84l2.19,2.07l1.59,-0.17l3.93,-2.31l1.14,-3.37l2.18,-1.39l0.77,-1.93l0.98,-0.26l2.21,0.79l1.78,-0.4l0.48,-1.69l-1.38,-1.59l2.07,-1.77l2.56,-6.28l-0.74,-1.29l-2.35,-1.02l-0.61,-1.19l0.82,-2.33l0.19,-2.56l0.59,-0.31l1.66,1.07l1.44,0.3l5.01,-0.43l1.17,-1.3l0.18,-3.79l-1.89,-2.26l-0.97,-2.73l-0.09,-2.23l-1.19,-1.92l0.08,-0.65l3.56,-2.13l3.6,-3.35l3.41,-6.01l0.78,-0.72l2.29,-0.57l4.57,-3.26l1.42,-2.44l-0.01,-1.11l-0.61,-0.94l0.12,-1.02l0.65,-1.0l2.36,-0.86l1.69,-3.04l2.14,-2.05l0.72,-1.26l-0.15,-1.97l0.75,-2.43l-1.32,-4.44l0.25,-1.16l5.43,-3.73l0.59,1.03Z\", \"name\": \"Midi-Pyr\\u00e9n\\u00e9es\"}, \"FR-M\": {\"path\": \"M625.45,152.34l1.44,-2.02l0.37,-3.97l1.35,-1.6l1.34,0.14l2.54,1.97l3.69,-0.04l0.91,1.48l0.89,0.27l1.49,-0.71l3.12,-2.75l2.22,-1.35l0.21,-0.93l2.87,5.21l-0.05,3.39l0.41,1.04l1.59,0.57l4.38,-2.61l2.33,0.98l1.07,-0.11l1.28,-2.15l1.31,-0.67l3.91,1.17l0.99,-0.36l1.36,-1.35l2.41,1.04l3.06,3.58l5.39,1.66l1.0,1.02l0.82,2.6l0.51,0.26l7.2,-1.01l1.58,-1.46l0.35,-1.47l1.93,-0.26l0.16,-0.92l2.92,-0.32l3.22,0.81l4.8,3.21l1.86,0.18l2.8,-1.01l5.52,2.76l0.95,0.93l0.43,2.11l3.52,4.15l-1.3,0.66l-0.34,1.14l0.39,1.09l5.12,5.27l0.01,1.59l1.47,0.96l1.03,3.38l0.67,0.2l0.76,-0.45l0.25,0.98l-0.46,2.28l1.02,1.74l3.53,0.37l2.32,0.86l1.0,-0.16l1.36,-1.86l-0.67,-3.02l0.26,-0.96l2.76,0.49l1.86,-0.17l4.31,2.22l1.12,0.1l-0.03,2.92l0.72,2.68l1.48,1.28l2.35,-1.17l0.33,-1.95l4.33,2.54l5.32,0.07l2.07,0.83l1.68,-2.21l2.37,-0.7l0.98,-2.25l2.22,-0.91l0.83,0.07l0.56,1.07l3.45,0.49l0.27,0.88l-0.54,1.27l3.13,4.24l1.49,0.91l2.62,0.45l1.23,0.64l1.04,1.76l0.87,0.6l-3.16,6.59l-1.38,1.82l-0.9,0.12l-3.41,-1.95l-9.1,1.44l-2.16,-0.91l-1.23,-2.24l-8.43,-2.98l-0.65,-0.85l-0.89,-3.42l-0.57,-0.64l-1.81,-0.27l-0.81,0.77l0.24,2.25l-2.14,3.22l-0.26,2.14l-2.51,2.32l-1.29,2.11l-0.18,2.03l1.04,1.84l1.44,1.09l4.76,2.09l-0.96,1.34l-0.36,1.59l0.92,1.02l0.99,2.29l1.47,0.3l1.72,-2.22l2.22,-1.08l0.96,-2.63l0.48,2.09l1.97,1.12l3.4,3.92l0.74,1.59l-0.23,1.22l-3.0,5.34l0.28,1.37l1.88,1.44l-2.2,7.08l-2.89,1.98l-1.18,1.77l-5.73,0.39l-0.82,0.64l0.08,0.64l3.2,1.8l-1.01,1.48l-0.59,8.92l-0.84,3.14l0.2,0.83l0.62,0.82l1.31,0.61l3.21,0.18l1.06,1.2l-0.02,0.87l-8.16,13.82l0.69,3.66l-1.64,2.58l-3.08,6.74l-3.51,4.93l-0.65,3.69l-1.52,3.18l0.5,2.86l-0.9,1.65l-2.18,0.99l-1.48,-0.18l-6.13,-4.97l-3.36,-1.74l-2.89,-3.57l-1.02,-0.61l-1.42,0.35l-1.82,2.68l-2.15,0.66l-2.2,-0.39l-5.27,-3.42l-2.43,-1.02l-3.41,0.22l-2.47,1.44l-2.12,0.21l-3.32,-1.76l-0.16,-2.1l-1.09,-1.55l-1.37,-0.93l-2.91,-0.65l-2.09,0.49l-2.72,3.38l-3.04,2.27l0.03,-2.71l-0.66,-0.74l-1.08,0.35l-1.68,3.01l-1.42,0.84l-2.43,-2.98l-1.63,-0.01l-1.2,0.75l-0.35,-1.07l0.11,-3.22l-0.65,-1.43l-3.48,-2.3l-4.4,-4.3l1.83,-4.57l0.52,-2.92l1.44,-1.65l-0.57,-1.68l-3.48,-2.83l-0.37,-2.77l-1.66,-1.16l-2.42,0.05l-3.01,-4.54l-1.81,-1.67l-2.08,-0.07l-2.03,1.89l-0.81,-4.14l1.96,-3.42l-0.08,-0.47l-6.02,-5.7l-0.8,-1.84l-1.67,-0.7l-3.06,-0.31l-4.92,-2.83l-4.26,-3.61l-2.86,-1.58l-2.74,-2.55l-1.15,-2.53l-1.36,-8.85l-4.34,-3.86l-0.27,-1.02l1.41,-2.54l-0.55,-3.36l0.45,-2.68l0.87,-1.47l2.6,-0.79l1.38,-1.11l0.59,-1.3l0.16,-4.03l0.86,-1.41l-0.58,-1.81l-2.04,-1.36l-0.4,-6.08l-1.79,-6.45l1.47,-3.31l-0.03,-2.44l4.23,-4.04l0.12,-1.18l-0.79,-3.08l3.34,-5.16l1.36,-4.09l-0.91,-4.02l-1.09,-1.06l-0.6,-2.28Z\", \"name\": \"Lorraine\"}, \"FR-L\": {\"path\": \"M452.25,434.51l3.68,4.56l0.92,3.23l0.57,0.71l3.62,1.22l1.76,3.11l0.81,0.02l0.84,-0.7l1.18,0.87l2.45,3.99l1.02,3.55l2.13,4.27l-0.33,4.79l2.06,4.92l0.01,4.71l-1.63,2.08l-1.57,3.74l-2.19,2.66l-1.81,0.05l-1.3,0.68l-2.66,2.32l-0.9,1.61l0.24,0.99l1.59,2.27l0.72,2.37l1.97,0.94l0.84,0.87l2.38,3.63l-0.25,4.46l-2.68,2.25l-0.72,3.18l1.86,3.48l0.25,4.71l1.12,1.13l-1.15,5.09l-0.89,2.05l-2.13,-0.11l-3.13,-1.84l-1.2,-0.02l-1.52,0.68l-0.21,0.82l0.95,1.06l0.16,1.02l-1.25,3.03l-1.06,0.73l-1.97,3.27l-3.11,1.55l-0.64,2.32l-2.65,2.36l-0.16,2.04l0.95,1.97l-0.03,1.53l-2.77,6.24l-2.8,2.33l-0.53,0.94l-0.04,0.82l1.6,3.29l-0.03,0.75l-4.22,1.35l-4.52,0.23l-1.94,1.0l-2.21,-0.81l-4.07,2.15l-3.11,1.08l-1.22,-0.04l-3.72,-2.26l-1.24,-2.08l-5.27,-3.94l-1.94,-0.58l-2.05,0.64l-0.75,-1.33l-0.72,-0.13l-3.74,2.48l-2.01,-2.52l-1.53,-3.13l0.29,-3.57l-0.38,-0.64l-0.77,-0.33l-4.02,0.02l-2.31,-1.55l0.62,-1.97l-0.11,-1.48l-0.77,-0.75l-2.15,-0.13l-0.09,-0.55l2.44,-2.73l0.22,-0.85l-2.19,-2.14l-0.21,-0.9l0.59,-2.57l2.18,-2.39l1.62,-1.08l0.72,-1.71l-0.66,-1.11l-1.96,0.23l-0.71,-0.44l-0.06,-0.86l1.19,-2.62l-0.38,-0.99l-1.77,-0.41l-1.8,-1.41l-1.98,0.27l-3.97,-2.13l0.03,-0.87l1.79,-1.91l-0.47,-1.61l-4.39,-1.29l-3.26,-4.98l-1.3,-0.95l-4.68,-0.09l-2.57,0.55l-1.38,-0.95l-0.68,0.22l-1.04,1.5l-1.43,0.38l-2.81,-0.95l-0.32,-0.79l0.7,-3.1l-1.58,-2.58l-1.63,-1.35l-2.69,0.03l-1.55,-0.32l-0.88,-0.71l1.27,-3.18l2.25,-2.1l1.25,-2.25l1.79,0.82l1.45,-0.0l1.04,-1.05l1.5,-10.48l3.94,-0.94l2.62,-2.14l0.46,-1.0l-0.02,-0.89l-2.05,-3.93l-0.66,-0.55l-1.48,0.46l-0.59,-0.21l-2.24,-3.39l-0.63,-5.77l1.23,-0.01l0.55,-1.17l-0.6,-3.42l-1.63,-3.47l0.44,-0.62l2.51,-0.93l3.57,-3.29l3.91,-0.02l1.38,-0.55l0.85,-2.21l2.96,-4.1l1.61,-0.81l2.73,-0.14l2.77,-1.81l3.16,1.56l1.71,0.11l3.59,-0.63l1.16,-1.64l1.02,-0.27l1.46,2.08l3.17,1.89l2.0,-1.3l3.93,-4.09l0.66,-0.17l2.16,0.61l2.0,-0.08l0.36,1.56l1.72,0.83l1.05,-0.24l1.87,-1.53l2.97,0.48l0.92,-0.23l1.03,-1.13l0.24,-2.99l0.71,-0.64l2.66,2.59l0.98,0.2l3.15,-1.57l5.4,0.16l2.44,0.97l3.51,0.01l2.24,0.84l3.18,-0.69l5.8,0.33Z\", \"name\": \"Limousin\"}, \"FR-S\": {\"path\": \"M415.52,72.77l1.88,0.07l3.81,-1.47l3.64,-0.26l1.89,0.98l1.93,2.42l1.13,0.67l1.14,-0.05l1.33,-1.23l0.8,-0.1l0.48,0.46l-0.96,1.52l0.22,1.09l6.67,3.79l1.34,3.51l2.04,1.57l8.94,-0.6l3.84,-0.99l1.21,-1.81l1.5,2.06l0.76,0.36l1.54,-1.15l1.25,0.13l2.71,1.5l0.57,0.93l-4.36,3.15l-0.88,1.19l-0.45,2.69l0.38,1.36l1.03,1.4l1.03,0.31l0.75,-0.34l1.56,-2.63l2.12,-0.23l2.39,0.4l1.36,-0.83l1.41,-0.2l-0.14,1.9l0.51,0.77l3.45,0.81l3.93,1.88l0.87,-0.88l-0.13,-2.29l0.49,-1.62l1.64,1.66l1.16,2.21l0.06,0.98l-1.29,2.29l0.29,1.01l0.76,0.43l0.99,-0.09l3.83,-3.01l0.65,0.97l0.19,3.53l0.67,0.49l0.94,-0.1l2.16,-1.41l3.78,-0.48l0.72,-1.13l-0.05,-1.87l0.67,-0.54l2.3,0.33l7.95,5.18l4.17,-0.97l5.56,1.01l2.83,-1.34l5.11,1.61l1.12,-0.08l5.63,-3.17l3.68,1.23l4.87,-2.23l3.31,0.84l6.19,0.77l1.82,2.01l0.8,0.22l3.09,-1.8l1.67,-0.27l0.43,0.68l-0.05,2.91l0.91,1.07l5.31,2.08l1.24,0.18l1.83,-0.57l3.39,1.82l1.5,0.17l0.07,3.34l1.99,4.3l-0.12,1.33l-1.86,3.88l-0.49,3.43l0.29,0.99l0.91,0.89l0.33,2.06l-0.72,1.34l-4.94,4.42l-1.44,2.38l-1.2,0.77l-2.03,0.19l-1.15,1.26l1.57,5.72l-0.46,1.67l0.38,2.48l-1.82,2.61l1.75,4.25l-1.5,0.67l-0.73,1.47l1.29,2.02l-0.49,3.55l-0.56,0.43l-2.26,-1.0l-1.91,0.8l-2.86,-1.62l-2.4,-0.16l-1.47,1.08l-0.06,2.16l-4.1,0.61l-5.16,1.48l-3.4,2.11l-0.04,1.06l0.85,2.14l0.65,6.05l0.52,0.58l1.4,0.31l2.38,2.64l-1.18,1.58l-1.11,0.25l-3.31,-0.39l-1.76,1.34l0.01,4.56l-0.99,1.65l-1.45,1.2l-0.1,1.94l0.32,0.67l1.17,0.53l3.18,-0.12l0.62,0.56l-0.02,0.6l-3.03,3.69l-1.77,1.39l-1.05,2.42l-3.83,3.82l-2.02,3.83l-2.23,0.13l-3.0,-1.96l-1.25,-4.65l-0.76,-0.5l-1.96,0.49l-8.72,-7.79l-0.53,-1.49l0.52,-3.08l-1.0,-2.3l-1.31,-1.55l-3.74,-1.22l-2.3,1.27l-1.87,0.06l-1.84,1.23l-1.7,-0.94l-5.89,1.26l-4.06,-1.07l-2.83,1.75l-2.02,-1.31l-1.93,0.57l-1.65,-1.58l-1.7,-0.47l-2.67,1.16l-2.31,-2.73l-0.85,-0.27l-1.33,0.46l-10.67,-5.96l-1.21,-0.3l-3.22,1.65l-1.51,-0.11l-3.95,-1.77l-2.4,-0.3l-3.87,-2.52l-1.17,0.37l-4.19,2.87l-6.07,0.86l-5.63,-1.65l-2.68,-0.13l-1.23,-0.69l-1.92,-4.26l0.65,-1.73l1.33,-0.11l2.08,2.06l0.83,-0.1l0.64,-0.62l-3.78,-12.52l-0.28,-3.83l1.25,-3.73l1.48,-1.28l0.5,-2.05l-0.82,-1.35l-2.28,0.49l-0.41,-0.4l-0.95,-6.29l-0.19,-4.61l-0.73,-1.65l2.23,-1.68l0.99,-2.35l-0.65,-1.04l-2.51,0.53l-0.22,-0.4l2.39,-4.39l2.12,-1.89l0.01,-1.43l-2.65,-5.54l-0.9,-3.69l-0.99,-1.54l-10.08,-10.68l-8.41,-5.95l5.29,-6.11l1.4,-5.1l1.94,-2.64l1.82,-0.25l5.96,2.93l0.81,-0.01l0.76,-0.64l0.11,-0.93l-1.48,-0.85l1.03,-0.4l0.0,-0.71l-2.62,-0.79l-0.82,-0.64l-1.15,-2.42l-2.98,-1.84l0.59,-6.58l1.1,-2.22l1.45,0.5l1.69,2.07l1.45,0.86Z\", \"name\": \"Picardie\"}, \"FR-R\": {\"path\": \"M159.33,355.12l3.48,1.37l1.63,-0.37l1.05,-1.24l-0.51,-1.64l-2.19,-2.56l-1.31,0.37l-0.76,-1.85l-2.14,-1.46l4.22,-2.53l1.62,0.4l-0.17,0.63l0.46,0.56l0.62,0.01l2.59,-1.78l0.38,-0.83l-0.3,-0.51l-3.0,-0.46l0.4,-0.9l-1.08,-1.12l0.15,-0.29l0.85,-0.24l2.38,0.95l3.24,-0.44l1.69,-1.74l1.09,-2.16l0.9,-0.34l1.85,1.04l2.85,-1.06l0.43,1.96l1.46,0.17l1.57,-2.82l2.06,-1.45l0.7,-1.26l1.51,-6.06l-0.13,-2.35l0.37,-1.27l2.92,-1.86l4.49,-0.45l5.44,-2.36l3.78,0.9l7.4,-2.38l2.88,-1.99l1.19,-1.81l1.73,-1.42l6.3,-2.98l1.59,-1.35l3.54,0.18l1.17,1.69l1.86,1.01l6.14,1.05l0.46,-0.32l0.47,-2.56l1.14,-2.06l3.43,-11.71l1.86,-1.91l4.09,-0.67l1.9,-1.3l-0.07,-5.65l-1.76,-2.64l-0.72,-5.55l0.64,-1.01l0.08,-1.11l-0.82,-5.65l-1.09,-2.82l1.95,-4.7l-0.77,-9.71l0.2,-6.48l4.76,0.43l3.55,-1.28l2.13,0.91l2.3,-0.38l0.81,0.71l1.89,3.57l0.82,0.34l1.19,-0.5l1.19,1.17l1.0,0.24l0.9,-0.42l0.74,-1.58l3.15,-0.92l1.89,1.7l5.52,-1.26l4.33,-3.5l3.73,0.2l4.09,1.12l1.08,-0.16l1.35,-1.81l2.82,-0.48l1.45,-0.85l0.74,-3.06l3.95,1.77l-0.12,3.33l2.77,3.83l1.18,0.97l1.95,0.57l0.37,0.55l0.53,5.25l0.45,0.38l3.6,-0.44l3.37,0.54l0.62,-0.53l0.44,-1.66l2.46,-0.95l2.23,-2.97l2.43,-1.36l5.26,-1.25l1.64,0.21l3.55,1.96l0.36,1.32l-0.32,3.16l0.3,3.88l0.85,2.34l1.63,1.64l1.86,1.11l2.81,-0.09l0.42,2.94l1.13,0.72l5.31,1.49l2.3,0.09l0.95,-0.38l1.62,1.63l1.92,2.99l2.19,1.63l1.57,0.37l1.51,-0.42l2.96,2.24l3.08,0.45l0.65,0.56l-0.44,0.72l-4.23,2.59l-0.24,1.42l1.21,1.45l-2.68,0.61l-0.57,0.55l-0.1,1.17l0.83,1.97l0.51,0.58l1.5,0.41l-0.65,3.82l0.26,2.87l-3.53,3.56l-0.55,1.91l-0.06,4.04l-1.52,4.92l-3.08,2.56l-3.44,1.72l-1.46,1.52l-0.78,2.09l0.65,2.0l-0.17,0.62l-7.92,2.77l-1.92,1.83l-1.92,-0.98l-1.12,0.0l-1.12,1.41l0.38,3.03l-8.44,-1.96l-0.48,0.25l-1.7,4.99l0.46,4.18l-1.91,4.36l-1.02,3.62l0.2,3.31l-4.39,7.09l-1.46,6.25l-0.86,6.51l-2.82,-0.54l-1.49,0.51l-2.07,2.69l-0.9,2.69l-2.38,0.94l-1.52,2.38l-1.07,-0.35l-0.85,-2.37l-0.96,-0.86l-6.24,0.08l-6.53,0.82l-5.82,1.94l-2.05,-0.85l-2.11,0.54l-1.5,1.63l0.82,1.94l-0.15,0.56l-4.92,2.86l-3.83,0.38l-5.21,-0.79l-4.21,0.65l-4.15,-2.2l-0.95,-0.21l-0.85,0.56l-0.14,1.61l2.2,1.59l2.19,3.52l1.67,1.03l0.7,0.99l0.32,2.55l1.02,2.58l4.16,3.03l1.74,1.84l-0.58,3.56l3.83,7.56l0.57,3.61l1.44,2.56l0.8,5.73l-1.47,2.86l0.98,4.89l-0.6,3.34l0.25,1.39l0.84,0.79l1.02,-0.27l1.97,1.6l0.73,1.24l-0.76,0.95l-2.49,0.28l-2.24,2.31l-2.76,0.19l-3.6,1.94l-4.04,-2.58l-1.71,-0.32l-6.66,1.25l-0.47,-0.38l1.06,-2.14l-0.47,-0.96l-0.77,-0.27l-6.99,1.78l-1.16,0.81l-1.1,1.61l-0.75,-0.8l-2.98,-0.13l-2.27,1.38l-0.13,2.61l-1.01,-0.28l-2.41,-3.16l-1.56,-0.38l-4.08,-2.68l-3.46,1.01l-1.22,-0.06l-0.92,-3.81l-1.14,-1.89l-1.56,-1.05l-6.95,-0.9l0.24,-1.15l-0.99,-0.96l-3.37,-0.67l-1.97,-1.74l-2.48,-0.94l-1.08,-2.6l-1.03,-1.14l-0.29,0.39l0.29,3.11l-0.48,-0.67l-1.33,-6.38l0.25,-1.47l-1.08,-0.79l-1.14,-3.19l-2.54,-2.69l-0.73,-2.4l-0.93,-0.73l-1.98,-0.46l-2.24,-4.16l-3.47,-3.63l-4.08,-2.41l-0.4,-1.25l-0.3,-3.15l0.48,-2.6l1.48,-1.09l-0.14,-1.48l3.14,-2.32l2.48,-6.12l1.15,-1.1l-0.83,-3.24l-1.69,-2.12l-3.77,-2.13l-7.13,-1.29l-1.55,-0.86l1.58,-1.27l1.9,-0.27l0.8,-0.62l0.41,-3.39l-0.66,-1.54l-0.09,-2.2l0.59,-2.11l1.76,-1.21l5.58,-0.58l1.08,-0.58l1.01,0.99l3.14,0.84l1.05,-0.01l0.3,-0.59l0.79,0.35l-0.66,0.4l0.16,0.99l2.51,1.85l2.63,0.56l1.97,1.88l1.56,0.67l3.3,0.11l0.39,-0.28l-0.16,-0.45l-1.38,-0.89l-2.42,-0.49l-2.84,-3.02l-4.32,-3.12l-2.79,-0.61l-1.38,-1.08l-2.33,-0.68l-8.78,0.62l-2.05,1.31l-1.5,2.27l-1.74,0.51l-2.55,1.88l-2.02,-0.42l-2.32,-2.48l-1.23,-0.72l-2.19,0.01l-0.77,0.67l-0.33,1.16l-1.37,-0.05l-5.21,-2.75ZM161.53,352.23l0.02,0.22l-0.01,0.03l-0.01,-0.25ZM179.98,384.58l2.69,1.71l0.24,3.45l-2.72,-4.38l-1.55,-1.07l-1.76,0.67l-2.31,-5.31l2.69,-0.15l2.02,0.82l-0.04,3.28l0.73,0.97ZM174.46,408.5l-5.04,-0.12l-0.52,-1.22l0.28,-0.47l1.96,0.03l3.33,1.78Z\", \"name\": \"Pays de la Loire\"}, \"FR-Q\": {\"path\": \"M332.9,158.69l6.89,-1.58l2.91,-1.51l1.24,-1.12l0.98,-1.92l-0.5,-0.06l-4.28,2.71l-4.92,0.71l-4.97,-0.68l-4.35,-1.49l-2.38,-0.1l-2.41,-1.09l-0.64,-1.32l-0.89,-0.7l-0.08,-1.52l3.31,-6.43l2.43,-8.25l3.76,-3.37l9.31,-4.37l0.72,-0.96l12.1,-6.86l4.67,-1.72l5.33,0.05l25.22,-8.17l3.14,-1.84l2.42,-2.69l6.59,-5.33l8.5,6.01l10.86,11.89l0.91,3.72l2.45,4.84l0.22,1.44l-1.52,1.12l-2.69,4.2l-0.4,1.36l0.43,1.11l2.54,-0.51l0.41,0.47l-0.85,1.71l-1.94,1.29l-0.46,0.93l0.75,1.65l0.19,4.64l0.98,6.42l0.79,0.93l2.02,-0.54l0.65,0.67l-0.42,1.66l-1.48,1.3l-1.33,4.06l0.3,4.0l1.76,6.68l2.0,5.43l-0.91,-0.04l-2.02,-2.05l-1.77,0.59l-0.91,1.59l0.39,1.87l-1.79,3.67l-2.91,9.97l-2.18,1.2l-7.74,1.86l-0.76,0.66l-0.16,1.1l0.7,1.83l-0.24,2.67l0.55,0.81l1.69,0.52l0.22,2.8l-2.21,1.38l-0.43,0.69l0.17,4.37l-4.78,3.64l-2.29,4.63l-4.55,2.6l-2.17,-0.61l-3.37,0.05l-2.24,-1.76l-1.28,-0.18l-0.85,2.44l-3.46,0.4l-2.42,2.79l-1.92,0.05l-5.91,1.71l-3.36,3.01l-2.53,-1.09l-1.25,-1.85l-1.03,-0.59l1.3,-2.03l0.53,-1.75l-1.15,-2.68l-5.07,-2.64l-2.77,-3.91l-0.96,-2.7l-0.76,-0.47l-0.91,0.07l-2.14,0.91l-4.67,-1.31l-2.06,0.04l-1.24,-0.93l-0.56,-1.6l1.86,-4.24l0.26,-4.8l-0.84,-1.66l-2.12,-1.82l-0.51,-1.68l0.36,-0.48l1.58,0.07l0.58,-0.6l-0.4,-2.84l0.87,-2.36l-2.39,-6.22l-2.48,-2.67l-0.47,-1.16l0.07,-0.8l2.05,-1.15l0.4,-0.97l-0.8,-1.37l-2.45,-0.66l-1.13,-2.15l-0.07,-7.4l-0.52,-3.66Z\", \"name\": \"Haute-Normandie\"}, \"FR-P\": {\"path\": \"M214.99,137.14l0.18,0.84l0.65,0.44l2.27,-1.3l2.86,0.6l1.15,-0.55l3.33,-3.68l2.72,-0.85l8.57,1.4l2.05,6.3l-1.51,1.19l-0.5,1.9l-1.27,0.05l-1.1,0.8l-0.37,2.64l2.8,6.22l4.64,5.87l0.55,1.32l0.2,1.95l-0.76,2.38l0.17,1.2l0.45,0.31l1.68,-0.58l1.69,1.54l1.8,-0.68l-0.6,-1.64l0.36,-1.02l1.82,-1.43l7.91,0.41l7.31,2.79l10.45,0.64l4.16,0.94l2.33,-1.2l4.07,1.49l4.1,0.0l2.92,1.66l3.02,0.71l5.68,3.46l1.96,-1.4l9.71,-2.31l2.94,-1.39l1.7,-1.49l2.0,-0.88l1.51,-2.34l3.95,-2.86l7.6,-1.61l0.49,3.39l0.1,7.63l1.29,2.43l2.54,0.76l0.49,0.77l-2.28,1.6l-0.21,1.47l0.6,1.45l2.44,2.6l2.28,5.85l-0.86,2.2l0.42,2.72l-1.99,0.13l-0.56,1.1l0.64,2.13l2.17,1.9l0.68,1.29l-0.25,4.48l-1.86,4.23l0.32,1.77l2.0,1.74l2.16,-0.02l4.65,1.31l3.13,-0.95l1.14,2.77l2.9,4.06l4.98,2.53l1.01,2.12l-0.45,1.48l-1.35,1.7l0.09,1.19l1.13,0.68l1.33,1.92l2.72,1.19l0.4,4.01l1.71,3.52l2.68,2.06l3.46,4.11l-0.14,4.2l1.87,3.22l-1.76,3.61l-3.22,2.91l-4.1,1.74l-2.34,0.49l-0.88,1.3l0.01,1.94l1.15,1.42l-0.05,3.37l1.85,3.96l-0.49,1.01l-2.58,1.16l-1.08,-0.28l-1.99,-1.47l-1.87,-2.92l-1.91,-1.87l-3.52,0.23l-5.13,-1.45l-0.73,-0.48l-0.06,-2.04l-0.54,-1.05l-3.09,-0.03l-2.45,-1.69l-1.03,-1.88l-0.5,-2.08l0.27,-5.72l-0.44,-1.65l-1.37,-1.15l-2.61,-1.2l-2.06,-0.26l-5.55,1.36l-3.07,1.89l-1.67,2.5l-2.54,1.01l-0.71,1.97l-2.52,-0.54l-3.9,0.38l-0.6,-5.14l-0.77,-0.94l-1.87,-0.51l-3.03,-3.26l-0.67,-1.98l0.49,-1.72l-0.31,-0.87l-0.73,-0.7l-3.82,-1.5l-1.02,0.53l-0.38,2.76l-1.15,0.67l-1.4,-0.02l-1.64,0.61l-1.19,1.71l-4.76,-1.0l-4.0,-0.19l-1.21,0.52l-3.19,3.0l-5.16,1.23l-1.16,-1.53l-1.0,-0.16l-3.53,1.09l-0.49,1.25l-0.8,0.58l-1.65,-1.34l-1.86,0.27l-1.74,-3.41l-1.09,-0.98l-2.47,0.33l-2.39,-0.93l-3.56,1.29l-1.98,0.01l-3.0,-0.5l-2.56,-1.58l-7.86,-1.97l-1.44,0.27l-2.22,2.84l-1.99,0.84l-2.78,2.25l-1.64,0.62l-2.05,-0.19l-2.56,-2.12l-2.22,-3.7l-3.57,-9.83l4.9,0.6l6.6,-1.46l2.13,0.81l0.48,-0.58l-1.12,-1.75l-1.51,-0.75l-2.35,-0.22l-0.46,0.49l-0.69,-1.54l-2.87,-1.13l-0.87,-2.78l-2.18,-1.95l-0.81,-6.94l-0.74,-1.46l-1.43,-0.51l1.47,-1.47l0.93,-5.59l0.93,-0.14l0.34,-1.06l0.01,-1.15l-1.22,-1.12l0.99,-6.46l0.49,-0.27l1.31,0.63l0.57,-0.36l-0.23,-0.94l-1.35,-0.61l-1.38,-0.0l-1.35,0.72l-0.57,1.39l-0.56,-1.54l0.44,-4.02l-1.17,-1.07l0.74,-3.19l1.49,-1.28l0.02,-0.64l-0.75,-0.59l-0.58,0.07l-1.02,-5.86l0.32,-0.6l0.82,-0.06l2.14,0.64l0.51,-0.96l-3.27,-1.56l-1.31,-0.03l-0.68,1.34l-1.42,-3.88l-0.76,-0.97l0.56,-1.03l-2.39,-2.31l-0.28,-0.89l0.71,0.0l0.4,-0.98l-0.83,-2.08l-1.21,0.04l-0.35,1.13l-3.03,-2.54l0.35,-0.91l-0.45,-0.57l-2.12,0.62l-0.37,-0.41l-0.17,-6.36l-1.53,-4.02l-2.42,-3.36l0.31,-1.05l1.64,-1.52l0.49,-1.1l0.27,-4.81l-1.91,-4.1l-4.51,-1.52l0.31,-3.35l0.15,-0.42l1.31,-0.17l2.44,1.27l1.77,-0.22l0.58,0.41l0.76,1.81l6.68,1.09l5.28,1.54Z\", \"name\": \"Basse-Normandie\"}, \"FR-V\": {\"path\": \"M577.54,558.52l1.13,-1.7l2.95,-0.62l0.73,-0.78l0.01,-0.76l-1.21,-1.89l2.17,-2.86l-0.85,-2.52l1.25,0.25l1.39,1.3l0.95,-0.03l0.44,-0.46l0.63,-3.28l1.73,-3.83l0.14,-2.57l-3.03,-2.98l-1.46,-0.86l-3.05,-0.65l-0.86,-2.34l0.79,-2.28l-0.44,-2.07l-1.27,-2.3l-1.56,-1.14l-2.5,1.77l-4.05,-1.27l-2.37,0.02l-0.65,0.37l-0.27,1.34l-0.61,0.71l-5.69,1.09l-2.45,0.1l-1.61,-1.91l-0.74,-0.24l-2.31,0.78l-1.44,1.29l-0.39,-0.27l0.38,-3.55l0.72,-1.52l2.81,-3.4l0.96,-2.65l-0.08,-1.57l-2.54,-6.44l-7.56,-6.95l-3.14,-7.29l-0.58,-1.04l-1.05,-0.73l-1.72,-3.15l0.87,-2.94l0.0,-2.45l1.19,-3.57l-0.56,-1.55l-2.48,-2.25l-0.15,-1.57l2.19,-1.2l4.84,-1.21l1.42,-1.69l-1.6,-9.69l0.16,-4.56l-0.45,-3.7l-1.16,-2.08l2.64,-2.38l4.09,-1.47l0.57,1.8l0.05,3.57l3.01,1.44l2.23,1.78l1.87,0.08l4.04,-1.44l4.13,1.07l3.0,-0.75l5.98,1.52l2.67,-0.91l1.66,-1.39l1.81,-2.47l1.71,-5.94l5.05,1.65l1.26,-0.14l1.91,-1.07l1.54,1.89l0.95,0.43l1.71,-0.63l0.56,-2.27l0.54,-0.33l1.79,0.79l0.27,2.31l1.62,1.25l-0.07,1.91l1.17,3.41l1.38,1.13l3.59,0.46l0.44,-0.49l-0.22,-1.31l1.29,-5.46l3.52,-7.69l0.17,-2.29l1.46,-2.92l0.86,-4.91l1.47,-4.41l1.74,-0.43l4.3,1.59l6.91,-1.8l1.23,0.45l2.16,2.29l1.64,0.99l4.13,1.15l0.02,2.85l0.6,1.21l2.67,1.52l0.72,2.76l1.08,1.28l2.12,0.75l0.91,1.26l1.74,0.42l-0.07,3.67l0.89,1.08l1.8,0.55l2.96,-1.73l1.13,-1.38l1.49,-0.44l0.55,-1.34l2.37,-2.33l2.81,2.54l0.94,2.91l0.68,0.62l7.35,0.58l2.12,-0.42l5.09,-4.67l1.05,-1.93l5.28,-6.19l2.65,1.63l1.51,2.12l0.07,0.8l-2.16,5.1l-0.59,4.66l-2.7,0.24l-5.44,3.05l-0.18,1.33l1.64,2.48l-1.42,3.32l0.1,0.46l0.47,0.04l1.43,-0.85l2.68,-0.64l2.66,-0.1l2.34,0.88l2.11,-1.12l3.09,-3.63l3.87,-2.57l1.66,-1.74l-0.22,-2.38l-0.68,-0.49l-1.54,0.2l-1.56,-4.29l0.28,-1.03l2.97,-3.98l1.9,-1.65l5.79,-1.18l5.28,-3.61l3.8,-0.75l3.99,0.13l9.83,2.73l0.57,2.22l-0.39,1.33l-1.64,1.97l-0.29,1.35l4.63,6.56l-2.1,4.09l-1.62,6.47l0.82,1.73l4.77,1.06l0.72,0.7l-1.2,2.05l0.09,3.39l1.46,0.83l1.47,-0.98l1.16,0.51l4.33,4.81l1.89,5.56l-1.27,1.15l-1.71,3.64l-1.15,0.98l-2.52,1.03l-3.09,-0.25l-0.82,1.13l-1.53,0.22l-1.23,0.76l-1.18,2.94l0.81,6.86l1.3,2.01l1.74,1.34l2.44,0.65l2.19,1.98l2.65,0.97l0.3,1.05l-0.99,2.84l1.04,2.41l0.82,4.94l5.54,3.72l1.57,3.06l3.74,2.02l-0.56,2.06l-1.24,2.23l-2.31,2.9l0.9,5.66l-1.61,1.39l-1.32,2.28l-1.59,-1.17l-4.51,1.69l-2.67,3.37l-2.44,0.36l-0.53,0.95l0.54,1.29l-1.67,0.81l-4.36,-1.96l-2.4,-0.33l-2.04,1.37l-2.2,0.18l-2.35,1.4l-1.9,0.25l-2.21,1.37l-3.09,0.38l-1.1,2.73l-1.35,1.28l-4.31,-1.37l-0.85,-2.11l-1.43,-1.15l-4.05,-0.47l-2.0,-0.92l-1.73,2.35l-1.05,7.36l0.5,1.15l1.24,0.48l3.7,-0.49l0.92,0.52l0.57,3.86l1.74,2.27l0.33,1.22l-0.61,4.28l-3.5,-0.91l-3.79,1.12l-1.71,-0.17l-1.86,0.4l-2.28,-0.45l-3.93,2.43l-0.96,0.15l-1.73,-0.51l-2.31,1.07l-1.85,1.95l0.22,2.15l-0.7,0.78l-2.31,0.76l-3.67,0.24l-1.04,0.44l-2.06,3.3l0.34,1.16l0.66,0.57l0.03,0.8l-1.64,1.96l-4.51,1.38l-3.09,-0.33l-1.24,0.57l-0.43,2.12l-2.53,4.36l-0.13,1.03l0.82,1.67l2.0,1.59l0.3,1.19l-0.35,0.4l-3.17,2.06l-4.22,-1.45l-3.37,-0.14l-0.62,0.69l0.08,1.88l0.61,1.21l1.24,0.94l0.01,0.76l-0.96,0.2l-2.31,-0.49l-1.08,0.67l-0.06,0.69l1.42,2.05l0.6,2.21l2.38,2.0l4.28,1.63l3.68,-0.03l-0.29,2.16l1.55,1.98l2.11,1.66l-0.14,5.36l-0.66,1.27l0.11,2.2l-0.72,-0.19l-0.64,-1.49l-0.8,-0.61l-1.78,-0.33l-0.98,0.33l-3.26,3.61l-1.72,1.08l-1.92,-0.24l-4.26,-3.15l-0.76,-2.43l-1.0,-1.29l-2.12,-0.29l-4.34,-1.59l-2.82,0.24l-2.59,-0.75l-0.69,-0.91l-0.1,-1.73l0.78,-2.48l-0.27,-0.96l-0.64,-0.32l-2.48,1.62l-4.47,-0.6l-4.29,1.23l-3.5,1.68l-2.77,0.47l-2.97,1.71l-1.0,-0.81l-1.76,-4.71l-2.57,-2.12l-5.4,-0.04l-0.34,0.4l0.02,3.33l-3.84,-1.44l-2.02,-2.17l-1.97,-0.95l-3.59,0.04l-1.21,1.05l-0.35,2.12l-1.28,0.72l-1.21,-1.17l0.27,-1.59l-0.3,-0.9l-1.64,-0.53l-2.48,0.8l-4.93,4.14l-1.15,-0.26l-4.88,-2.73l-1.25,-1.27l-4.77,0.6l-0.67,-3.95l0.83,-1.5l-0.02,-0.94l-1.75,-3.22l-1.71,-1.62l-2.22,-7.91l-0.89,-1.68l-1.34,-0.98l-0.57,-1.14l-2.47,-9.83l0.05,-3.19l1.28,-0.66l3.25,-5.15l3.93,-1.45l1.08,-2.5l2.25,0.14l4.33,-0.77l1.52,-0.72l2.01,-3.11l1.34,-3.78l2.05,0.03l2.96,-1.44l0.14,-1.37l-0.57,-1.17Z\", \"name\": \"Rh\\u00f4ne-Alpes\"}, \"FR-U\": {\"path\": \"M574.87,687.21l0.93,-0.2l1.37,-1.17l2.17,-0.62l3.45,-2.78l1.64,-0.56l0.58,-1.53l2.47,-0.8l0.7,-1.71l-0.08,-0.86l-1.96,-0.76l1.31,-3.14l1.5,-2.17l1.28,-1.04l2.0,-0.58l3.71,1.5l1.05,-0.34l0.63,-1.7l-0.04,-2.04l1.97,-5.56l-0.49,-5.4l5.09,-3.8l2.75,-1.29l1.8,-1.44l1.32,-1.83l0.02,-2.5l1.18,0.08l0.47,-0.47l-0.22,-2.0l-4.15,-5.4l-1.29,-0.64l-1.82,0.34l-0.38,-2.86l0.14,-5.62l-0.49,-1.01l-1.47,-1.27l-0.09,-1.78l-1.29,-1.87l-0.55,-1.92l-0.02,-3.45l3.17,-0.16l2.41,0.71l1.59,1.91l1.69,4.56l1.31,0.73l1.11,-0.23l2.24,-1.53l2.77,-0.47l3.47,-1.66l4.06,-1.19l4.59,0.58l2.3,-1.59l-0.59,4.2l0.31,1.29l0.75,0.74l2.97,0.91l2.82,-0.24l4.21,1.56l1.95,0.22l1.6,3.6l4.52,3.32l2.54,0.25l1.96,-1.25l2.53,-2.91l1.3,-0.83l1.79,0.61l1.16,1.94l1.5,-0.22l0.3,-0.71l-0.24,-1.95l0.64,-1.16l0.14,-5.63l-0.51,-0.94l-1.46,-0.83l-1.76,-2.12l0.47,-1.58l-0.28,-0.73l-1.34,-0.42l-2.8,0.18l-3.97,-1.49l-2.21,-1.82l-0.51,-2.03l-1.35,-2.11l0.84,-0.21l2.34,0.52l1.25,-0.94l-0.17,-1.28l-1.58,-1.43l-0.11,-2.1l2.93,0.17l4.35,1.46l3.77,-2.3l0.59,-0.85l-0.11,-1.12l-2.4,-2.31l-0.62,-1.16l0.35,-1.25l1.84,-2.83l0.75,-2.92l1.26,-0.29l2.5,0.37l4.91,-1.54l1.89,-2.26l-0.01,-1.45l-0.96,-1.2l1.82,-2.93l4.32,-0.49l2.61,-0.88l1.03,-1.28l-0.23,-2.07l1.53,-1.53l1.91,-0.93l1.61,0.51l1.32,-0.2l3.71,-2.38l2.19,0.45l1.92,-0.4l1.7,0.17l3.73,-1.12l2.72,0.87l1.35,-0.15l0.59,-1.09l0.28,-3.9l-0.45,-1.56l-1.68,-2.16l-0.61,-3.95l-1.52,-0.92l-3.62,0.51l-0.92,-0.34l-0.22,-0.7l1.04,-6.98l1.31,-1.74l1.48,0.88l3.89,0.41l1.09,0.86l0.99,2.27l4.35,1.6l1.6,-0.52l0.96,-1.21l0.86,-2.45l2.86,-0.27l2.82,-1.47l-0.7,1.39l2.04,2.5l0.17,1.96l0.79,1.4l0.95,0.75l2.03,0.19l1.39,1.01l0.36,2.28l-0.12,4.81l1.21,2.12l2.07,1.79l4.22,2.47l1.45,0.34l3.9,-0.51l2.94,1.21l1.21,1.46l-0.4,2.94l1.26,4.71l2.05,4.15l-3.89,-0.64l-1.71,0.92l-1.21,1.55l-0.44,1.75l0.6,1.79l-2.78,4.17l-3.06,2.36l-0.81,1.5l0.24,2.84l1.44,2.48l3.05,2.97l-1.55,0.86l-0.58,0.89l-0.72,3.38l0.23,1.34l1.65,2.09l1.59,3.28l2.28,2.06l1.49,3.1l1.17,0.47l2.84,-0.23l6.04,2.82l6.53,4.03l3.45,1.03l0.74,1.29l1.35,0.81l2.67,0.05l10.62,-3.07l1.73,-0.14l2.57,-1.63l1.3,0.23l-0.69,2.63l3.02,4.93l-0.1,1.25l-2.23,2.37l-1.34,3.85l-4.53,4.22l-4.86,6.7l0.27,2.46l1.14,3.82l-1.51,0.75l0.03,1.48l-1.7,-0.1l-0.97,0.71l-1.41,-0.64l-1.19,0.48l-1.06,1.13l-0.22,1.06l-0.98,0.35l-0.58,0.84l-0.31,1.71l-0.5,-0.98l-2.92,0.38l-1.71,-0.36l-2.45,2.86l-3.22,1.11l-1.83,2.68l-0.22,5.57l-0.96,-1.19l-4.58,1.7l-1.67,-0.48l-1.99,1.38l-1.83,2.19l-0.11,1.7l-2.19,3.82l-1.0,0.46l-0.34,1.41l-1.53,-0.68l-0.75,1.23l-2.74,0.13l-1.41,-0.36l-1.12,-0.9l-1.35,0.91l-1.64,5.55l-2.54,1.66l-1.32,2.57l-1.34,0.25l-2.76,1.91l-0.14,0.72l0.63,0.59l5.73,-0.25l-1.35,3.12l0.75,1.48l-2.7,2.29l0.14,1.18l-1.73,0.5l-0.53,-1.56l-0.76,-0.69l-1.81,-0.24l-3.25,2.47l-2.79,-0.02l-2.6,1.15l-2.06,0.22l-1.24,1.79l-0.26,2.05l0.55,1.17l-1.84,-0.07l-0.67,-1.89l-2.37,-0.88l-5.49,-0.09l-1.5,0.92l-0.58,1.36l-0.77,3.19l1.27,1.03l-0.29,0.08l-3.0,-0.04l0.69,-0.55l0.38,-1.5l-0.01,-0.85l-0.72,-0.71l-4.52,-0.32l-1.6,-1.09l-1.79,-0.44l-2.89,0.36l0.22,-0.91l-0.36,-0.55l-2.09,0.25l-1.86,0.94l0.03,0.73l0.94,0.38l1.44,1.54l-1.81,-0.16l-0.75,0.82l-0.27,1.13l-1.58,0.16l-2.87,-1.24l-0.72,-1.17l2.19,-1.47l0.08,-0.66l-2.33,-0.8l-0.34,-1.24l-3.13,-0.79l-1.99,-1.13l0.09,-1.62l-1.18,-0.64l-3.34,-0.18l-1.13,1.08l-1.41,-0.78l-2.55,-2.77l-2.63,1.35l-1.08,-0.86l-1.56,-0.2l-2.45,0.41l-3.13,-0.51l-0.32,-0.6l1.31,-4.17l-1.25,-1.28l0.0,-4.27l-1.9,-1.52l-8.41,1.8l-2.62,-0.39l-4.77,0.42l-1.35,-0.38l-1.46,-1.52l-0.28,-1.66l0.74,-1.48l1.69,-0.96l5.35,0.0l1.81,-0.54l2.62,-2.62l0.88,-2.19l-0.22,-2.0l-0.62,-0.29l-3.33,1.74l-1.32,-0.23l-1.17,-1.37l-0.82,-2.49l-1.53,-0.59l-1.81,-0.01l-1.46,-1.66l-1.01,0.75l-0.82,3.13l0.41,1.77l2.15,1.84l0.66,1.88l-0.59,1.64l-1.18,0.85l-1.36,-0.38l-1.25,0.37l-3.56,-1.87l-4.38,2.16l-0.57,1.68l1.06,1.53l-4.07,-1.87l-1.98,-1.87l-0.88,-2.07l0.15,-4.92l-0.55,-2.79l-1.54,-2.82l-1.19,-0.75l-0.61,0.34l2.09,4.38l0.0,6.0l0.87,2.95l4.7,4.42l-1.55,0.62l-8.87,-0.42l-3.75,-1.35l1.08,-3.49l-0.09,-1.61l-1.93,-1.66l-2.76,-0.56l-17.15,-0.57l0.63,-1.78ZM692.51,728.8l2.08,-0.1l1.79,-1.04l-0.59,1.43l-1.43,0.59l-1.85,-0.88Z\", \"name\": \"Provence-Alpes-C\\u00f4te-d'Azur\"}, \"FR-T\": {\"path\": \"M271.45,530.28l-2.81,-8.67l-2.61,-4.67l-2.87,-3.32l-8.68,-6.35l-0.48,-2.03l-2.47,-1.18l-3.22,-3.23l-4.03,-1.65l-2.77,-2.75l-2.36,0.38l-0.69,-0.28l1.0,-6.7l3.72,-1.14l0.95,0.04l5.24,5.68l4.4,2.08l0.49,-0.12l-1.39,-2.06l-5.53,-4.49l-1.52,-1.83l-1.41,-4.95l2.09,-2.25l2.54,-0.99l0.19,-2.07l-1.02,-2.06l0.95,-0.95l-0.03,-0.64l-0.93,-0.62l-1.13,-2.83l1.87,0.28l0.91,-0.87l0.64,-2.43l-1.09,-1.21l-1.09,-0.42l-0.73,-3.77l-1.94,-1.35l0.62,-0.63l-0.04,-0.6l-1.99,-1.27l-0.3,-1.28l-2.85,-0.24l-0.4,-0.43l0.28,-1.22l1.23,-1.42l-0.3,-1.55l0.55,-0.95l4.29,-2.76l0.47,-2.04l-0.89,-2.74l1.19,-1.81l0.85,-0.59l6.68,-1.71l0.37,0.88l-1.0,1.8l0.98,1.01l6.86,-1.21l1.45,0.24l4.45,2.68l3.79,-1.99l2.86,-0.22l2.34,-2.36l2.77,-0.39l0.84,-1.39l-0.94,-1.89l-2.15,-1.76l-1.5,-0.07l-0.21,-1.11l0.59,-3.44l-0.97,-4.74l1.47,-2.94l-0.66,-5.25l-1.62,-3.29l-0.6,-3.69l-3.79,-7.46l0.75,-3.16l-2.17,-2.63l-3.53,-2.24l-0.99,-1.52l-0.81,-4.19l-0.91,-1.23l-1.53,-0.9l-1.4,-2.56l-2.91,-2.52l0.1,-0.55l0.21,-0.32l1.3,0.36l3.75,2.03l4.31,-0.65l5.13,0.79l4.0,-0.39l5.4,-3.12l0.33,-1.24l-0.82,-1.61l1.02,-1.05l1.7,-0.48l2.15,0.86l5.98,-1.96l6.44,-0.81l5.85,-0.14l0.57,0.49l1.0,2.58l1.72,0.64l1.96,-2.63l2.5,-1.06l1.0,-2.85l1.9,-2.43l0.88,-0.29l2.95,0.57l1.47,2.73l0.63,0.42l2.13,-0.72l0.15,1.85l0.54,0.6l2.69,-0.3l-0.15,3.06l0.72,1.15l1.19,0.08l2.48,-0.71l1.02,1.52l1.83,0.3l-0.33,6.6l0.35,1.46l1.23,1.26l1.42,0.33l2.6,-0.29l2.93,0.52l2.97,-1.6l5.5,-0.39l0.79,-0.5l0.18,-0.78l-0.87,-3.01l5.61,3.22l1.18,1.91l1.3,3.91l7.23,10.81l2.64,2.14l1.68,2.25l0.85,2.58l-0.6,4.95l1.1,3.58l2.32,2.34l3.29,1.47l0.86,2.36l0.9,0.38l3.79,0.0l1.48,0.77l1.11,1.91l-0.35,3.38l3.09,3.07l-0.95,3.2l-3.27,1.89l-2.6,0.1l-2.04,1.05l-3.04,4.21l-0.65,1.99l-1.03,0.41l-4.11,0.08l-4.24,3.77l-2.5,0.99l-0.26,0.92l1.66,3.57l0.57,3.26l-0.22,0.45l-1.22,-0.2l-0.45,0.49l0.66,2.96l0.13,3.44l2.53,3.8l0.66,0.34l1.47,-0.47l0.47,0.3l1.88,4.19l-2.69,2.56l-4.13,1.08l-1.6,10.63l-0.51,0.64l-1.07,0.02l-1.7,-0.88l-1.2,0.57l-0.97,2.02l-2.34,2.24l-1.38,3.44l-2.13,2.02l-2.19,3.42l-2.35,0.63l-0.56,0.54l-0.83,5.92l-4.27,6.78l-2.66,0.72l-6.76,5.16l-1.57,5.07l0.01,4.69l-0.39,1.54l-1.67,1.69l-2.94,1.51l-0.88,2.21l-0.93,0.99l-0.86,0.27l-2.69,-0.71l-5.19,2.71l-0.9,1.67l0.68,2.02l-1.87,2.55l-1.42,0.63l-1.56,-0.59l-1.12,0.12l-4.17,1.4l-3.88,-1.36l-2.34,-2.22l-3.73,-2.02l-3.34,0.02l-1.53,-2.85l0.02,-3.54l-0.59,-1.54l-3.56,-2.77l-2.5,-0.17l-1.78,-0.65l-0.73,-2.81l-0.91,-1.29l-1.48,0.13l-1.55,2.08l-4.47,-0.23ZM235.39,471.39l1.12,0.47l1.32,-0.32l0.65,0.67l0.16,2.78l0.68,0.81l-0.18,1.5l2.75,2.32l-0.4,4.24l-1.29,3.28l-0.6,-0.27l-2.09,-5.44l-4.91,-5.03l-2.18,-3.04l0.35,-1.79l-1.76,-4.48l3.1,1.19l3.28,3.12ZM224.11,449.31l-0.1,0.43l-1.94,-0.57l-0.37,0.6l1.07,1.87l1.97,0.16l1.96,-0.83l0.22,0.89l1.02,0.5l6.19,1.02l1.31,0.85l1.55,2.35l-0.99,0.4l-3.29,-0.85l-5.86,-3.81l-3.61,0.58l-0.75,-0.3l-2.99,-3.22l3.14,-0.84l1.45,0.78Z\", \"name\": \"Poitou-Charentes\"}, \"FR-GF\": {\"path\": \"M10.97,616.5l0.03,-0.01l1.04,0.32l0.16,0.01l0.86,-0.15l0.51,-0.46l0.86,-2.17l2.19,-0.54l1.74,-1.7l0.64,-0.95l2.47,-5.67l2.47,-3.35l0.8,-2.07l0.46,-0.34l0.06,-0.66l-0.55,-0.48l-0.0,-0.31l0.65,-1.16l0.29,-1.23l-0.01,-0.47l-0.64,-0.76l0.44,-0.66l-0.5,-1.65l0.23,-0.35l-0.0,-1.56l-0.44,-0.68l-0.47,-0.14l0.86,-1.73l2.07,-2.82l1.19,-0.89l0.84,-2.29l1.16,-1.21l0.63,-1.48l-0.08,-2.68l0.58,-2.69l-0.24,-0.63l-0.99,-0.81l-0.94,0.15l-0.73,-1.11l-0.67,-2.34l-1.1,-1.52l-2.15,-0.96l-0.85,-1.38l-0.93,-0.69l-0.78,-1.45l-0.91,-0.92l-0.6,-1.53l-1.42,-1.5l-0.04,-0.68l0.68,-2.17l-0.13,-0.85l-0.5,-0.52l-1.21,-0.36l-0.61,-0.56l-0.08,-0.33l0.53,-1.13l-0.01,-1.08l-0.33,-1.55l-1.0,-2.09l-0.56,-3.54l0.08,-0.72l0.82,-1.84l0.01,-1.55l-0.48,-1.52l0.02,-2.19l-0.4,-0.62l-0.93,-0.5l-0.06,-0.26l0.0,-4.13l-0.26,-0.76l1.19,-1.15l-0.22,-1.91l0.25,-0.92l2.4,-2.98l0.33,-0.79l0.74,-0.61l0.47,-1.45l0.64,-0.92l1.37,-1.42l3.33,-2.65l1.1,-0.4l1.1,-0.77l1.58,-1.93l1.86,-4.22l0.22,-3.73l0.39,-1.24l0.71,-0.96l2.31,-1.42l1.79,0.34l0.48,0.18l0.59,0.84l1.69,0.74l1.43,1.2l5.31,2.1l2.31,1.83l3.75,0.97l3.15,-0.21l1.42,1.68l1.12,-0.16l0.56,-0.62l0.3,0.04l4.38,2.03l1.36,0.3l0.42,-0.63l1.85,0.29l0.74,0.42l1.3,1.07l2.72,4.12l3.75,2.79l5.06,4.62l0.02,0.49l0.31,0.28l0.66,-0.01l0.76,0.42l2.53,2.16l0.64,1.06l-0.27,1.23l0.6,0.42l0.73,-0.49l0.79,-1.11l0.49,-0.18l1.21,0.54l0.54,0.96l-2.76,4.28l0.03,1.47l0.4,0.37l0.6,-0.32l0.54,-0.93l0.57,-1.95l1.79,-1.31l0.32,-0.47l0.86,0.63l1.21,1.89l2.17,1.25l2.26,2.11l0.9,1.31l1.5,6.51l-0.33,1.34l-1.91,1.37l-0.89,1.13l-0.01,0.47l0.45,0.15l2.11,-0.67l1.15,-0.61l0.64,-0.84l0.53,-2.05l-0.28,-4.87l0.18,-1.1l0.47,-0.86l1.05,-0.2l1.97,1.64l-0.0,0.75l1.13,1.9l0.28,1.83l0.66,0.89l-0.25,0.37l0.26,0.94l0.51,0.66l1.03,0.2l-0.69,0.86l-0.09,1.41l1.58,2.66l0.57,1.61l-0.06,2.16l-0.64,2.0l-0.29,0.57l-2.42,1.18l-1.04,0.92l-0.79,2.17l-0.92,1.57l-2.1,2.32l-1.35,0.82l-0.13,1.42l-0.89,0.24l-0.67,0.68l-0.88,2.96l-1.99,3.34l-0.78,0.63l0.04,0.74l-4.48,7.35l-0.56,0.42l-1.12,0.12l-0.77,0.72l-0.64,1.51l-1.27,1.01l-0.24,0.8l0.31,2.33l-2.32,4.42l0.33,0.96l-0.82,0.4l-0.56,0.65l-2.67,5.99l-0.28,1.19l-1.09,0.6l-0.07,0.39l0.69,1.25l0.05,0.53l-2.13,3.57l-1.21,1.07l-0.79,1.45l-0.92,0.95l-3.72,2.24l-1.52,0.63l-0.69,0.59l-0.84,1.79l-0.27,0.23l-0.79,0.05l-0.55,0.6l-0.56,0.05l-2.57,-0.42l-0.95,-0.79l-0.97,-0.34l-5.09,0.79l1.4,-1.11l-0.13,-0.66l-2.09,-1.75l-0.88,-1.21l-0.87,-0.45l-0.43,0.08l-1.44,1.65l-1.23,0.47l-1.2,0.89l-2.14,0.34l-1.52,-0.76l-2.22,-0.27l-2.22,-0.96l-0.87,-0.06l0.28,-0.61l-0.05,-0.6l-0.6,-0.69l-0.75,-0.14l-1.33,0.55l-1.04,1.47l-1.27,0.26l-0.97,1.22l-1.24,-0.04l-0.48,1.63l-0.46,0.33l-1.37,0.49l-0.6,0.49l-0.71,-0.33l-1.15,0.23l-0.87,2.01l-0.28,0.3l-0.57,0.09l-0.5,-0.25l-1.22,-1.44l-0.92,-0.01l-1.74,0.44l-1.6,-0.21l-2.03,-1.41l-3.41,-0.59l-1.86,-1.51l0.34,-0.7l-0.6,-0.59l-1.7,-0.92Z\", \"name\": \"French Guiana\"}}, \"height\": 864.1025840443817, \"projection\": {\"type\": \"merc\", \"centralMeridian\": 0.0}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-aea-en.js",
    "content": "$.fn.vectorMap('addMap', 'us_aea_en',{\"insets\": [{\"width\": 220, \"top\": 440, \"height\": 146.9158157558812, \"bbox\": [{\"y\": -8441281.712315228, \"x\": -5263934.893342895}, {\"y\": -6227992.545028123, \"x\": -1949631.2950683108}], \"left\": 0}, {\"width\": 80, \"top\": 460, \"height\": 129.05725678001465, \"bbox\": [{\"y\": -4207380.690946597, \"x\": -5958501.652314129}, {\"y\": -3658201.4570359783, \"x\": -5618076.48127754}], \"left\": 245}, {\"width\": 900.0, \"top\": 0, \"height\": 550.2150229714246, \"bbox\": [{\"y\": -5490839.2352678, \"x\": -2029243.6460439637}, {\"y\": -2690044.485299302, \"x\": 2552083.9617675776}], \"left\": 0}], \"paths\": {\"US-VA\": {\"path\": \"M682.42,290.04l1.61,-0.93l1.65,-0.48l1.12,-0.95l3.57,-1.69l0.74,-2.33l0.82,-0.19l2.32,-1.54l0.05,-1.81l2.04,-1.86l-0.13,-1.58l0.26,-0.42l5.0,-4.09l4.76,-6.0l0.09,0.63l0.96,0.54l0.33,1.37l1.32,0.74l0.71,0.81l1.46,0.09l0.79,0.65l1.3,0.48l1.41,-0.09l0.79,-0.41l0.76,-1.22l1.17,-0.57l0.53,-1.38l2.72,1.49l1.42,-1.1l2.25,-0.99l0.76,0.06l1.08,-0.97l0.33,-0.82l-0.48,-0.96l0.23,-0.42l1.9,0.58l3.26,-2.62l0.3,-0.1l0.51,0.73l0.66,-0.07l2.38,-2.34l0.17,-0.85l-0.49,-0.51l0.99,-1.12l0.1,-0.6l-0.28,-0.51l-1.0,-0.46l0.71,-3.03l2.6,-4.8l0.55,-2.15l-0.01,-1.91l1.61,-2.55l-0.22,-0.94l0.24,-0.84l0.5,-0.48l0.39,-1.7l-0.0,-3.18l1.23,0.19l1.18,1.73l3.8,0.43l0.59,-0.28l1.05,-2.52l0.2,-2.36l0.71,-1.05l-0.04,-1.61l0.76,-2.31l1.78,0.75l0.65,-0.17l1.3,-3.3l0.57,0.05l0.59,-0.39l0.52,-1.2l0.81,-0.68l0.44,-1.8l1.38,-2.43l-0.35,-2.57l0.54,-1.76l-0.3,-2.01l9.18,4.58l0.59,-0.29l0.63,-4.0l2.6,-0.07l0.63,0.57l1.05,0.23l-0.5,1.74l0.6,0.88l1.61,0.85l2.52,-0.04l1.03,1.18l1.64,0.12l1.94,1.52l0.57,2.53l-0.94,0.78l-0.45,0.02l-0.3,0.43l0.13,0.71l-0.61,-0.05l-0.49,0.59l-0.37,2.5l0.07,2.29l-0.43,0.25l0.01,0.6l1.05,0.77l-0.36,0.14l-0.17,0.6l0.44,0.3l1.64,-0.08l1.38,-0.61l1.77,-1.61l0.39,0.58l-0.58,0.35l0.02,0.58l1.9,1.07l0.64,1.08l1.69,0.35l1.37,-0.11l0.95,0.49l0.82,-0.65l1.05,-0.08l0.33,0.56l1.26,0.63l-0.1,0.55l0.36,0.55l0.94,-0.23l0.41,0.56l3.96,0.88l0.25,1.12l-0.85,-0.41l-0.57,0.44l0.89,1.74l-0.35,0.57l0.62,0.78l-0.44,0.89l0.24,0.59l-1.36,-0.36l-0.59,-0.72l-0.67,0.18l-0.1,0.43l-2.44,-2.3l-0.56,0.05l-0.38,-0.56l-0.52,0.32l-1.36,-1.51l-1.23,-0.43l-2.86,-2.72l-1.34,-0.12l-1.11,-0.81l-1.17,0.05l-0.39,0.52l0.47,0.71l1.1,-0.01l0.63,0.68l1.33,0.07l0.6,0.43l0.62,1.4l1.46,1.11l1.13,0.34l1.53,1.8l2.55,0.94l1.4,1.89l2.14,-0.02l0.56,0.41l0.72,0.06l-0.61,0.7l0.3,0.49l2.03,0.34l0.26,0.72l0.55,0.1l0.13,1.67l-1.0,-0.75l-0.39,0.21l-1.13,-1.0l-0.58,0.29l0.1,0.82l-0.31,0.68l0.7,0.7l-0.18,0.6l1.12,0.32l-0.86,0.44l-2.12,-0.73l-1.39,-1.38l-0.83,-0.32l-2.23,-1.87l-0.58,0.11l-0.22,0.53l0.26,0.81l0.64,0.21l3.81,3.15l2.69,1.12l1.28,-0.33l0.45,1.07l1.27,0.26l-0.44,0.67l0.3,0.56l0.93,-0.19l0.0,1.24l-0.92,0.41l-0.57,0.73l-0.71,-0.93l-3.2,-1.58l-0.29,-1.16l-0.59,-0.59l-0.87,-0.11l-1.2,0.67l-1.71,-0.44l-0.36,-1.15l-0.71,-0.05l-0.05,1.32l-0.33,0.41l-1.43,-1.32l-0.51,0.09l-0.48,0.57l-0.65,-0.4l-0.99,0.45l-2.23,-0.1l-0.37,0.94l0.34,0.46l1.9,0.22l1.4,-0.31l0.85,0.24l0.56,-0.69l0.63,0.88l1.34,0.43l1.95,-0.31l1.5,0.71l0.67,-0.63l0.94,2.47l3.16,1.23l0.37,0.91l-0.57,1.03l0.56,0.44l1.72,-1.32l0.88,-0.02l0.83,0.65l0.8,-0.26l-0.61,-0.9l-0.2,-1.17l3.78,0.08l1.13,-0.44l1.89,3.23l-0.46,0.71l0.65,3.09l-1.19,-0.58l-0.02,0.88l-30.95,7.83l-37.19,8.41l-19.52,3.35l-7.08,0.85l-0.46,-0.26l-4.24,0.64l-0.82,0.62l-28.2,5.01ZM781.15,223.32l0.14,0.09l-0.06,0.07l-0.01,-0.03l-0.07,-0.12ZM808.05,244.59l0.53,-1.14l-0.26,-0.54l-0.36,-0.08l0.58,-0.98l-0.39,-0.71l-0.03,-0.49l0.44,-0.35l-0.17,-0.73l0.62,-0.3l0.23,-0.6l0.14,-2.33l1.01,-0.39l-0.12,-0.9l0.48,-0.14l-0.26,-1.53l-0.79,-0.4l0.87,-0.57l0.1,-1.03l2.69,-1.11l0.36,2.48l-1.08,4.2l-0.22,2.38l0.33,1.09l-0.34,0.97l-0.6,-0.79l-0.81,0.15l-0.39,0.95l0.27,0.37l-0.65,0.46l-0.3,0.85l0.17,1.05l-0.31,1.46l0.38,2.47l-0.6,0.6l0.07,1.33l-1.37,-1.9l0.23,-0.94l-0.33,-1.57l0.28,-0.97l-0.38,-0.3Z\", \"name\": \"Virginia\"}, \"US-PA\": {\"path\": \"M716.46,159.99l0.63,-0.19l4.3,-3.73l1.13,5.2l0.48,0.31l34.84,-7.93l34.28,-8.64l1.42,0.58l0.71,1.39l0.64,0.13l0.77,-0.33l1.24,0.59l0.14,0.85l0.81,0.41l-0.16,0.58l0.89,2.69l1.9,2.07l2.12,0.75l2.21,-0.2l0.72,0.79l-0.89,0.87l-0.73,1.49l-0.17,2.25l-1.41,3.35l-1.37,1.58l0.04,0.79l1.79,1.72l-0.31,1.65l-0.84,0.43l-0.22,0.66l0.14,1.48l1.04,2.87l0.52,0.25l1.2,-0.18l1.18,2.39l0.95,0.58l0.66,-0.26l0.6,0.9l4.23,2.75l0.12,0.41l-1.29,0.93l-3.71,4.22l-0.23,0.76l0.17,0.9l-1.36,1.13l-0.84,0.15l-1.33,1.08l-0.33,0.66l-1.72,-0.12l-2.03,0.84l-1.15,1.37l-0.41,1.39l-37.23,9.21l-39.1,8.66l-10.03,-48.21l1.92,-1.22l3.08,-3.04Z\", \"name\": \"Pennsylvania\"}, \"US-TN\": {\"path\": \"M571.72,341.09l0.86,-0.84l0.29,-1.37l1.0,0.04l0.65,-0.79l-0.99,-4.89l1.41,-1.93l0.06,-1.32l1.18,-0.46l0.36,-0.48l-0.63,-1.31l0.53,-0.65l0.05,-0.56l-0.89,-1.33l2.55,-1.57l1.09,-1.13l-0.14,-0.84l-0.85,-0.53l0.14,-0.19l0.34,-0.16l0.85,0.37l0.46,-0.33l-0.27,-1.31l-0.85,-0.9l0.06,-0.71l0.51,-1.43l1.0,-1.11l-1.35,-2.06l1.37,-0.21l0.61,-0.55l-0.13,-0.64l-1.17,-0.82l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.59,-1.38l0.02,-0.36l0.37,0.53l0.47,0.08l0.58,-0.29l0.6,-0.86l23.67,-2.81l0.35,-0.41l-0.1,-1.35l-0.84,-2.39l2.98,-0.08l0.82,0.58l22.79,-3.55l7.64,-0.46l7.5,-0.86l8.82,-1.42l24.01,-3.1l1.11,-0.6l29.3,-5.2l0.73,-0.6l3.56,-0.54l-0.4,1.44l0.43,0.85l-0.4,2.0l0.36,0.82l-1.15,-0.03l-1.71,1.79l-1.21,3.89l-0.55,0.7l-0.56,0.08l-0.63,-0.74l-1.44,-0.02l-2.66,1.73l-1.42,2.73l-0.96,0.89l-0.34,-0.34l-0.13,-1.05l-0.73,-0.54l-0.53,0.15l-2.3,1.81l-0.29,1.32l-0.93,-0.24l-0.9,0.48l-0.16,0.77l0.32,0.73l-0.85,2.18l-1.29,0.06l-1.75,1.14l-1.28,1.24l-0.61,1.06l-0.78,0.27l-2.28,2.46l-4.04,0.78l-2.58,1.7l-0.49,1.09l-0.88,0.55l-0.55,0.81l-0.18,2.88l-0.35,0.6l-1.65,0.52l-0.89,-0.16l-1.06,1.14l0.21,5.24l-20.21,3.32l-21.62,3.04l-25.56,2.95l-0.34,0.31l-7.39,0.9l-28.73,3.17Z\", \"name\": \"Tennessee\"}, \"US-ID\": {\"path\": \"M132.38,121.39l-0.34,-0.44l0.08,-1.99l0.53,-1.74l1.42,-1.22l2.11,-3.59l1.68,-0.92l1.39,-1.53l1.08,-2.15l0.05,-1.22l2.21,-2.41l1.43,-2.7l0.37,-1.37l2.04,-2.26l1.89,-2.81l0.03,-1.01l-0.79,-2.95l-2.13,-1.94l-0.87,-0.36l-0.85,-1.61l-0.41,-3.02l-0.59,-1.19l0.94,-1.19l-0.12,-2.35l-1.04,-2.69l0.46,-0.98l9.67,-54.45l13.39,2.35l-3.54,20.72l1.29,2.89l1.0,1.27l0.27,1.55l1.17,1.76l-0.12,0.83l0.39,1.14l-0.99,0.95l0.83,1.76l-0.83,0.11l-0.28,0.71l1.93,1.68l1.03,2.04l2.24,1.22l0.54,1.58l1.09,1.33l1.49,2.79l0.08,0.68l1.64,1.81l0.01,1.88l1.79,1.71l-0.07,1.35l0.74,0.19l0.9,-0.58l0.36,0.46l-0.36,0.55l0.07,0.54l1.11,0.96l1.61,0.15l1.81,-0.36l-0.63,2.61l-0.99,0.54l0.25,1.14l-1.83,3.73l0.06,1.72l-0.81,0.07l-0.37,0.54l0.6,1.33l-0.62,0.9l-0.03,1.16l0.97,0.93l-0.37,0.81l0.28,1.01l-1.57,0.43l-1.21,1.41l0.1,1.11l0.46,0.77l-0.13,0.74l-0.83,0.77l-0.2,1.52l1.48,0.63l1.38,1.79l0.78,0.27l1.08,-0.35l0.56,-0.8l1.85,-0.41l1.21,-1.28l0.81,-0.29l0.15,-0.76l0.78,0.81l0.23,0.71l1.06,0.64l-0.42,1.23l0.73,0.95l-0.34,1.38l0.57,1.34l-0.21,1.61l1.54,2.64l0.31,1.73l0.82,0.37l0.67,2.08l-0.18,0.98l-0.76,0.64l0.51,1.9l1.24,1.16l0.3,0.79l0.81,0.08l0.86,-0.37l1.04,0.93l1.06,2.79l-0.5,0.81l0.89,1.83l-0.28,0.6l0.11,0.98l2.29,2.41l0.97,-0.14l-0.01,-1.14l1.07,-0.89l0.93,-0.22l4.53,1.62l0.69,-0.32l0.67,-1.35l1.19,-0.39l2.25,0.93l3.3,-0.1l0.96,0.88l2.29,-0.58l3.23,0.78l0.45,-0.49l-0.67,-0.76l0.26,-1.06l0.74,-0.48l-0.07,-0.96l1.23,-0.51l0.48,0.37l1.07,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.27,53.86l-47.48,-6.32l-46.97,-7.73l6.88,-39.17l1.12,-1.18l1.07,-2.67l-0.21,-1.75l0.74,-0.15l0.77,-1.62l-0.9,-1.27l-0.18,-1.2l-1.24,-0.08l-0.64,-0.81l-0.88,0.29Z\", \"name\": \"Idaho\"}, \"US-NV\": {\"path\": \"M139.36,329.2l-12.7,-16.93l-36.59,-51.1l-25.35,-34.52l13.7,-64.19l46.89,9.24l46.99,7.74l-18.72,125.83l-0.9,1.16l-0.99,2.19l-0.44,0.17l-1.34,-0.22l-0.98,-2.24l-0.7,-0.63l-1.41,0.22l-1.95,-1.02l-1.6,0.23l-1.78,0.96l-0.76,2.48l0.88,2.59l-0.6,0.97l-0.24,1.31l0.38,3.12l-0.76,2.54l0.77,3.71l-0.13,3.07l-0.3,1.07l-1.04,0.31l-0.12,0.51l0.32,0.8l-0.52,0.62Z\", \"name\": \"Nevada\"}, \"US-TX\": {\"path\": \"M276.16,412.59l33.07,1.99l32.79,1.35l0.41,-0.39l3.6,-98.71l25.86,0.61l26.29,0.22l0.05,42.09l0.44,0.4l1.02,-0.13l0.78,0.28l3.74,3.82l1.66,0.21l0.88,-0.58l2.49,0.64l0.6,-0.68l0.11,-1.05l0.6,0.76l0.92,0.22l0.38,0.93l0.77,0.78l-0.01,1.64l0.52,0.83l2.85,0.42l1.25,-0.2l1.38,0.89l2.78,0.69l1.82,-0.56l0.63,0.1l1.89,1.8l1.4,-0.11l1.25,-1.43l2.43,0.26l1.67,-0.46l0.1,2.28l0.91,0.67l1.62,0.4l-0.04,2.09l1.56,0.79l1.82,-0.66l1.57,-1.68l1.02,-0.65l0.41,0.19l0.45,1.64l2.01,0.2l0.24,1.05l0.72,0.48l1.47,-0.21l0.88,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.99l0.26,0.41l-0.45,1.23l0.14,0.76l0.67,1.14l0.78,0.42l0.57,-0.04l0.6,-0.5l0.68,-2.36l0.91,-0.65l0.35,-1.54l0.57,-0.14l0.4,0.14l0.29,0.99l0.57,0.64l1.21,0.02l0.83,0.5l1.26,-0.2l0.68,-1.34l0.48,0.15l-0.13,0.7l0.49,0.69l1.21,0.45l0.49,0.72l1.52,-0.05l1.49,1.74l0.52,0.02l0.63,-0.62l0.08,-0.71l1.49,-0.1l0.93,-1.43l1.88,-0.41l1.66,-1.13l1.52,0.83l1.51,-0.22l0.29,-0.83l2.29,-0.73l0.53,-0.55l0.5,0.32l0.38,0.88l1.82,0.42l1.69,-0.06l1.86,-1.14l0.41,-1.05l1.06,0.31l2.24,1.56l1.16,0.17l1.79,2.08l2.14,0.41l1.04,0.92l0.76,-0.11l2.48,0.85l1.04,0.04l0.37,0.79l1.38,0.97l1.45,-0.12l0.39,-0.72l0.8,0.36l0.88,-0.4l0.92,0.35l0.76,-0.15l0.64,0.36l2.23,34.03l1.51,1.67l1.3,0.82l1.25,1.87l0.57,1.63l-0.1,2.64l1.0,1.21l0.85,0.4l-0.12,0.85l0.75,0.54l0.28,0.87l0.65,0.7l-0.19,1.17l1.0,1.02l0.59,1.63l0.5,0.34l0.55,-0.1l-0.16,1.71l0.81,1.22l-0.64,0.25l-0.35,0.68l0.77,1.27l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.74,0.85l-0.36,1.54l-0.79,1.13l0.64,2.0l-0.83,2.28l0.17,1.07l0.83,1.2l-0.19,1.01l0.49,1.6l-0.24,1.41l-1.13,1.67l-1.02,0.2l-1.76,3.37l-0.04,1.06l1.79,2.37l-3.43,0.08l-7.37,3.78l-0.02,-0.43l-2.19,-0.46l-3.24,1.07l1.09,-3.51l-0.3,-1.21l-0.8,-0.76l-0.62,-0.07l-1.52,0.85l-0.99,2.0l-1.56,-0.96l-1.64,0.12l-0.07,0.63l0.89,0.62l0.0,1.06l0.56,0.39l-0.47,0.69l0.07,1.02l1.63,0.64l-0.62,0.71l0.49,0.97l0.91,0.23l0.28,0.37l-0.4,1.25l-0.45,-0.12l-0.97,0.81l-1.72,2.25l-1.18,-0.4l-0.49,0.12l0.32,1.0l0.08,2.55l-1.85,1.49l-1.91,2.11l-0.96,0.37l-4.1,2.9l-3.3,0.45l-2.54,1.06l-0.2,1.12l-0.75,-0.34l-2.04,0.89l-0.33,-0.34l-1.11,0.18l0.43,-0.87l-0.52,-0.6l-1.43,0.22l-1.22,1.08l-0.6,-0.62l-0.11,-1.2l-1.38,-0.81l-0.5,0.44l0.65,1.44l0.01,1.12l-0.71,0.09l-0.54,-0.44l-0.75,-0.0l-0.55,-1.34l-1.46,-0.37l-0.58,0.39l0.04,0.54l0.94,1.7l0.03,1.24l0.58,0.37l0.36,-0.16l1.13,0.78l-0.75,0.37l-0.27,0.54l0.15,0.36l0.7,0.23l1.08,-0.54l0.96,0.6l-4.27,2.42l-0.57,-0.13l-0.37,-1.44l-0.5,-0.18l-1.13,-1.46l-0.49,-0.03l-0.48,0.51l0.1,0.63l-0.62,0.34l-0.05,0.51l1.18,1.61l-0.31,1.04l0.33,0.85l-1.66,1.79l-0.37,0.2l0.37,-0.64l-0.18,-0.72l0.25,-0.73l-0.46,-0.67l-0.52,0.17l-0.71,1.1l0.26,0.72l-0.39,0.95l-0.07,-1.13l-0.52,-0.55l-1.95,1.29l-0.78,-0.33l-0.7,0.52l0.07,0.75l-0.81,0.99l0.02,0.49l1.25,0.64l0.03,0.56l0.78,0.28l0.7,-1.41l0.86,-0.41l0.01,0.62l-2.82,4.36l-1.23,-1.0l-1.36,0.38l-0.32,-0.34l-2.4,0.39l-0.46,-0.31l-0.65,0.16l-0.18,0.58l0.41,0.61l0.55,0.38l1.53,0.03l-0.01,0.91l0.55,0.64l2.07,1.03l-2.7,7.63l-0.2,0.1l-0.38,-0.54l-0.34,0.1l0.18,-0.76l-0.57,-0.43l-2.35,1.95l-1.72,-2.36l-1.19,-0.91l-0.61,0.4l0.09,0.52l1.44,2.0l-0.11,0.82l-0.93,-0.09l-0.33,0.63l0.51,0.56l1.88,0.07l2.14,0.72l2.08,-0.72l-0.43,1.75l0.24,0.77l-0.98,0.7l0.37,1.59l-1.12,0.14l-0.43,0.41l0.4,2.11l-0.33,1.6l0.45,0.64l0.84,0.24l0.87,2.86l0.71,2.81l-0.91,0.82l0.62,0.49l-0.08,1.28l0.72,0.3l0.18,0.61l0.58,0.29l0.4,1.79l0.68,0.31l0.45,3.22l1.46,0.62l-0.52,1.1l0.31,1.07l-0.63,0.77l-0.84,-0.05l-0.53,0.44l0.08,1.31l-0.49,-0.33l-0.49,0.25l-0.39,-0.67l-1.49,-0.45l-2.92,-2.53l-2.2,-0.18l-0.81,-0.51l-4.2,0.09l-0.9,0.42l-0.78,-0.63l-1.06,0.25l-1.25,-0.2l-1.45,-0.7l-0.72,-0.97l-0.6,-0.14l-0.21,-0.72l-1.17,-0.49l-0.99,-0.02l-1.98,-0.87l-1.45,0.39l-0.83,-1.09l-0.6,-0.21l-1.43,-1.38l-1.96,0.01l-1.47,-0.64l-0.86,0.12l-1.62,-0.41l0.28,-1.26l-0.54,-1.01l-0.96,-0.35l-1.65,-6.03l-2.77,-3.02l-0.29,-1.12l-1.08,-0.75l0.35,-0.77l-0.24,-0.76l0.34,-2.18l-0.45,-0.96l-1.04,-1.01l0.65,-1.99l0.05,-1.19l-0.18,-0.7l-0.54,-0.33l-0.15,-1.81l-1.85,-1.44l-0.85,0.21l-0.29,-0.41l-0.81,-0.11l-0.74,-1.31l-2.22,-1.71l0.01,-0.69l-0.51,-0.58l0.12,-0.86l-0.97,-0.92l-0.08,-0.75l-1.12,-0.61l-1.3,-2.88l-2.66,-1.48l-0.38,-0.91l-1.13,-0.59l-0.06,-1.16l-0.82,-1.19l-0.59,-1.95l0.41,-0.22l-0.04,-0.73l-1.03,-0.49l-0.26,-1.29l-0.81,-0.57l-0.94,-1.74l-0.61,-2.38l-1.85,-2.36l-0.87,-4.24l-1.81,-1.34l0.05,-0.7l-0.75,-1.21l-3.96,-2.67l-0.71,-1.86l-1.82,-0.62l-1.44,-0.99l-0.01,-1.63l-0.6,-0.39l-0.88,0.24l-0.12,-0.77l-0.98,-0.33l-0.8,-2.08l-0.57,-0.47l-0.46,0.12l-0.46,-0.44l-0.86,0.27l-0.14,-0.6l-0.44,-0.31l-0.47,0.15l-0.25,0.61l-1.05,0.16l-2.89,-0.47l-0.39,-0.38l-1.48,-0.03l-0.79,0.29l-0.77,-0.44l-2.67,0.27l-3.92,-2.08l-1.35,0.86l-0.64,1.61l-1.98,-0.17l-0.52,0.44l-0.49,-0.17l-1.05,0.49l-1.33,0.14l-3.22,6.4l-0.18,1.77l-0.76,0.67l-0.38,1.8l0.35,0.59l-1.99,1.01l-0.72,1.3l-1.11,0.65l-1.12,2.0l-2.67,-0.46l-1.04,-0.87l-0.55,0.3l-1.69,-1.21l-1.31,-1.63l-2.9,-0.85l-1.15,-0.95l-0.02,-0.67l-0.42,-0.41l-2.75,-0.51l-2.28,-1.03l-1.89,-1.75l-0.91,-1.53l-0.96,-0.91l-1.53,-0.29l-1.77,-1.26l-0.22,-0.56l-1.31,-1.18l-0.65,-2.68l-0.86,-1.01l-0.24,-1.1l-0.76,-1.28l-0.26,-2.34l0.52,-3.05l-3.01,-5.07l-0.06,-1.94l-1.26,-2.51l-0.99,-0.44l-0.43,-1.24l-1.43,-0.81l-2.15,-2.18l-1.02,-0.1l-2.01,-1.25l-3.18,-3.35l-0.59,-1.55l-3.13,-2.55l-1.59,-2.45l-1.19,-0.95l-0.61,-1.05l-4.42,-2.6l-1.19,-2.19l-1.21,-3.23l-1.37,-1.08l-1.12,-0.08l-1.75,-1.67l-0.79,-3.05ZM502.09,468.18l-0.33,0.17l0.18,-0.16l0.15,-0.02ZM498.69,470.85l-0.09,0.12l-0.04,0.02l0.13,-0.14ZM497.79,472.33l0.15,0.05l-0.2,0.18l0.04,-0.11l0.01,-0.12ZM497.02,473.23l-0.13,0.12l0.03,-0.09l0.09,-0.03ZM467.54,489.19l0.03,0.02l-0.02,0.01l-0.0,-0.03ZM453.94,547.19l0.75,-0.5l0.25,-0.68l0.11,1.08l-1.1,0.1ZM460.89,499.8l-0.14,-0.59l1.22,-0.36l-0.28,0.33l-0.79,0.63ZM463.51,497.84l0.1,-0.23l1.27,-0.88l-0.92,0.85l-0.45,0.26ZM465.8,496.12l0.28,-0.24l0.47,-0.04l-0.25,0.13l-0.5,0.15ZM457.96,502.92l0.71,-1.64l0.64,-0.71l-0.02,0.75l-1.33,1.6ZM451.06,515.13l0.06,-0.22l0.07,-0.15l-0.13,0.37ZM451.5,513.91l0.16,-0.35l0.02,-0.02l-0.18,0.37ZM452.44,511.95l-0.01,-0.04l0.05,-0.04l-0.04,0.08Z\", \"name\": \"Texas\"}, \"US-NH\": {\"path\": \"M829.94,105.42l0.2,-1.33l-1.43,-5.38l0.53,-1.45l-0.28,-2.22l1.0,-1.86l-0.13,-2.3l0.64,-2.28l-0.44,-0.62l0.29,-2.31l-0.93,-3.8l0.08,-0.7l0.3,-0.45l1.83,-0.8l0.7,-1.39l1.43,-1.62l0.74,-1.8l-0.25,-1.13l0.52,-0.62l-2.34,-3.49l0.87,-3.26l-0.11,-0.78l-0.81,-1.29l0.27,-0.59l-0.23,-0.7l0.48,-3.2l-0.36,-0.82l0.91,-1.49l2.44,0.33l0.65,-0.88l13.0,34.89l0.84,3.65l2.6,2.21l0.88,0.34l0.36,1.6l1.72,1.31l0.0,0.35l0.77,0.23l-0.06,0.58l-0.46,3.09l-1.57,0.24l-1.32,1.19l-0.51,0.94l-0.96,0.37l-0.5,1.68l-1.1,1.44l-17.61,4.74l-1.7,-1.43l-0.41,-0.89l-0.1,-2.0l0.54,-0.59l0.03,-0.52l-1.02,-5.18Z\", \"name\": \"New Hampshire\"}, \"US-NY\": {\"path\": \"M821.38,166.44l0.69,-2.05l0.62,-0.02l0.55,-0.75l0.76,0.15l0.54,-0.41l-0.04,-0.31l0.57,-0.03l0.28,-0.66l0.66,-0.02l0.2,-0.55l-0.42,-0.83l0.22,-0.53l0.61,-0.37l1.34,0.22l0.54,-0.59l1.45,-0.18l0.21,-0.8l1.85,0.02l1.08,-0.91l0.11,-0.78l0.62,0.24l0.43,-0.61l4.83,-1.29l2.26,-1.3l1.99,-2.91l-0.2,1.16l-0.98,0.86l-1.22,2.31l0.55,0.46l1.6,-0.35l0.28,0.63l-0.43,0.49l-1.37,0.87l-0.51,-0.07l-2.26,0.92l-0.08,0.93l-0.87,-0.0l-2.73,1.72l-1.01,0.15l-0.17,0.8l-1.24,0.09l-2.24,1.91l-4.44,2.17l-0.2,0.71l-0.29,0.08l-0.45,-0.83l-1.41,-0.06l-0.73,0.42l-0.42,0.8l0.23,0.32l-0.92,0.69l-0.76,-0.84l0.32,-1.05ZM828.05,159.06l-0.02,-0.01l0.02,-0.06l-0.01,0.08ZM845.16,149.05l0.06,-0.06l0.18,-0.06l-0.11,0.19l-0.13,-0.07ZM844.3,154.94l0.1,-0.89l0.74,-1.16l1.65,-1.52l1.01,0.31l0.05,-0.82l0.79,0.67l-3.36,3.21l-0.67,0.45l-0.31,-0.25ZM850.39,150.14l0.02,-0.03l0.07,-0.07l-0.09,0.1ZM722.09,155.56l3.76,-3.85l1.27,-2.19l1.76,-1.86l1.16,-0.78l1.28,-3.35l1.56,-1.3l0.53,-0.83l-0.21,-1.83l-1.61,-2.42l0.43,-1.13l-0.17,-0.78l-0.83,-0.53l-2.11,-0.0l0.04,-0.99l-0.57,-2.22l4.99,-2.94l4.49,-1.8l2.38,-0.19l1.84,-0.74l5.64,-0.24l3.13,1.25l3.16,-1.68l5.49,-1.06l0.58,0.45l0.68,-0.2l0.12,-0.98l1.45,-0.72l1.03,-0.93l0.75,-0.2l0.69,-2.05l1.87,-1.76l0.79,-1.26l1.12,0.03l1.13,-0.52l1.07,-1.63l-0.46,-0.7l0.36,-1.2l-0.25,-0.51l-0.64,0.02l-0.17,-1.17l-0.94,-1.59l-1.01,-0.62l0.12,-0.18l0.59,0.39l0.53,-0.27l0.75,-1.44l-0.01,-0.91l0.81,-0.65l-0.01,-0.97l-0.93,-0.19l-0.6,0.7l-0.28,0.12l0.56,-1.3l-0.81,-0.62l-1.26,0.05l-0.87,0.77l-0.92,-0.41l-0.06,-0.29l2.05,-2.5l1.78,-1.47l1.67,-2.64l0.7,-0.56l0.11,-0.59l0.78,-0.95l0.07,-0.56l-0.5,-0.95l0.78,-1.89l4.82,-7.61l4.77,-4.5l2.84,-0.51l19.67,-5.66l0.41,0.88l-0.08,2.01l1.02,1.22l0.43,3.8l2.29,3.25l-0.09,1.89l0.85,2.42l-0.59,1.07l-0.0,3.41l0.71,0.9l1.32,2.76l0.19,1.09l0.62,0.84l0.12,3.92l0.55,0.85l0.54,0.07l0.53,-0.61l0.06,-0.87l0.33,-0.07l1.05,1.12l3.97,15.58l0.74,1.2l0.22,15.32l0.6,0.62l3.57,16.23l1.26,1.34l-2.82,3.18l0.03,0.54l1.52,1.31l0.19,0.6l-0.78,0.88l-0.64,1.8l-0.41,0.39l0.15,0.69l-1.25,0.64l0.04,-4.02l-0.57,-2.28l-0.74,-1.62l-1.46,-1.1l-0.17,-1.13l-0.7,-0.1l-0.42,1.33l0.68,1.27l1.05,0.83l0.97,2.85l-13.75,-4.06l-1.28,-1.47l-2.39,0.24l-0.63,-0.43l-1.06,-0.15l-1.74,-1.91l-0.75,-2.33l0.12,-0.72l-0.36,-0.63l-0.56,-0.21l0.09,-0.46l-0.35,-0.42l-1.64,-0.68l-1.08,0.32l-0.53,-1.22l-1.92,-0.93l-34.6,8.73l-34.44,7.84l-1.11,-5.15ZM818.84,168.69l1.08,-0.48l0.14,0.63l-1.17,1.53l-0.05,-1.68ZM730.07,136.63l0.03,-0.69l0.78,-0.07l-0.38,1.09l-0.43,-0.33Z\", \"name\": \"New York\"}, \"US-HI\": {\"path\": \"M295.5,583.17l0.06,-1.75l4.12,-4.97l1.03,-3.4l-0.33,-0.64l0.94,-2.43l-0.05,-3.52l0.39,-0.78l2.47,-0.7l1.55,0.23l4.45,-1.4l0.51,-0.7l-0.17,-2.69l0.4,-1.66l1.78,-1.16l1.74,2.15l-0.15,0.94l1.88,3.6l0.94,0.35l5.13,7.65l0.86,3.93l-1.52,3.14l0.22,0.58l1.47,0.95l-0.68,2.07l0.35,1.51l1.6,3.0l-1.39,0.86l-2.28,-0.2l-3.27,0.51l-4.56,-1.32l-2.15,-1.34l-6.66,-0.15l-1.59,0.26l-1.56,1.19l-1.63,0.58l-1.14,0.02l-0.7,-2.54l-2.09,-2.18ZM306.33,530.7l1.6,0.08l0.51,2.07l-0.3,2.25l0.37,0.59l2.33,0.88l1.38,0.1l1.55,1.39l0.27,1.55l0.93,0.97l-0.13,1.05l1.83,2.52l-0.13,0.66l-0.61,0.48l-1.82,0.38l-1.84,-0.18l-1.47,-1.19l-2.21,-0.24l-2.69,-1.48l0.01,-1.23l1.15,-1.86l0.41,-2.07l-1.76,-1.28l-1.08,-1.75l-0.1,-2.61l1.79,-1.08ZM297.2,518.01l0.71,0.31l0.38,1.05l2.64,2.0l0.9,1.11l0.92,0.08l0.8,1.67l1.56,1.05l0.72,0.06l1.07,1.11l-1.31,0.41l-2.75,-0.66l-3.23,-3.93l-3.16,-2.01l-1.39,-0.44l-0.05,-0.7l1.58,-0.43l0.62,-0.67ZM301.59,541.55l-2.09,-0.98l-0.28,-0.51l2.92,0.34l-0.56,1.15ZM298.23,532.36l-0.92,-0.29l-0.72,-0.89l0.92,-2.06l-0.49,-1.73l2.6,1.38l0.61,2.08l0.14,1.06l-2.15,0.45ZM281.13,503.64l0.57,-1.85l-0.38,-0.9l-0.16,-2.84l0.75,-0.92l-0.12,-1.22l2.74,1.9l2.9,-0.62l1.56,0.15l0.38,1.01l-0.33,2.17l0.29,1.5l-0.69,0.6l-0.19,1.55l0.38,1.54l0.86,0.51l0.29,1.07l-0.52,1.14l0.53,1.28l-1.18,-0.0l-0.2,-0.48l-2.04,-0.86l-0.77,-2.83l-1.27,-0.38l0.8,-0.11l0.32,-0.46l-0.08,-0.66l-0.63,-0.68l-1.75,-0.32l0.23,1.82l-2.28,-1.1ZM259.66,469.47l-0.24,-2.03l-0.91,-0.69l-0.68,-1.23l0.08,-1.2l0.08,-0.34l2.39,-0.81l4.6,0.53l0.67,1.04l2.51,1.09l0.69,1.25l-0.15,1.9l-2.3,1.32l-0.74,1.3l-0.79,0.34l-2.78,0.09l-0.92,-1.53l-1.52,-1.0ZM245.78,462.61l-0.23,-0.74l1.03,-0.75l4.32,-0.72l0.43,0.3l-0.92,0.4l-0.68,0.94l-1.66,-0.5l-1.36,0.34l-0.94,0.72Z\", \"name\": \"Hawaii\"}, \"US-VT\": {\"path\": \"M805.56,72.69l26.03,-7.97l0.89,1.85l-0.74,2.37l-0.03,1.54l2.22,2.75l-0.51,0.58l0.26,1.13l-0.67,1.6l-1.35,1.49l-0.64,1.32l-1.72,0.7l-0.62,0.92l-0.1,0.98l0.93,3.74l-0.29,2.44l0.4,0.54l-0.6,2.11l0.15,2.19l-1.0,1.87l0.27,2.36l-0.53,1.54l1.43,5.44l-0.22,1.22l1.05,5.3l-0.58,0.85l0.11,2.31l0.6,1.26l1.51,1.1l-11.44,2.89l-0.57,-0.85l-4.02,-15.75l-1.72,-1.59l-0.91,0.25l-0.3,1.19l-0.12,-0.26l-0.11,-3.91l-0.68,-1.0l-0.14,-0.98l-1.37,-2.85l-0.63,-0.68l0.01,-3.15l0.6,-1.15l-0.86,-2.57l0.08,-1.93l-0.39,-0.91l-1.55,-1.63l-0.38,-0.81l-0.41,-3.71l-1.03,-1.27l0.11,-1.87l-0.43,-1.01Z\", \"name\": \"Vermont\"}, \"US-NM\": {\"path\": \"M230.86,422.88l11.82,-123.66l25.67,2.24l26.1,1.86l26.12,1.45l25.74,1.02l-0.31,10.24l-0.74,0.39l-3.59,98.69l-32.38,-1.34l-33.53,-2.02l-0.44,0.76l0.54,2.31l0.44,1.26l0.99,0.76l-30.55,-2.46l-0.43,0.36l-0.82,9.46l-14.63,-1.33Z\", \"name\": \"New Mexico\"}, \"US-NC\": {\"path\": \"M826.87,289.49l0.07,-0.05l-0.02,0.03l-0.04,0.02ZM819.58,272.4l0.2,0.23l-0.05,0.01l-0.16,-0.24ZM821.84,276.68l0.19,0.15l-0.02,0.18l-0.05,-0.08l-0.12,-0.25ZM676.72,321.77l0.92,0.17l1.52,-0.39l0.42,-0.39l0.52,-0.97l0.13,-2.7l1.34,-1.19l0.47,-1.05l2.24,-1.47l2.12,-0.52l0.76,0.18l1.32,-0.52l2.36,-2.52l0.78,-0.25l1.84,-2.29l1.48,-1.0l1.55,-0.19l1.15,-2.65l-0.28,-1.22l1.66,0.06l0.51,-1.65l0.93,-0.77l1.08,-0.77l0.51,1.52l1.07,0.33l1.34,-1.17l1.35,-2.64l2.49,-1.59l0.79,0.08l0.82,0.8l1.06,-0.21l0.84,-1.07l1.47,-4.18l1.08,-1.1l1.47,0.09l0.44,-0.31l-0.69,-1.26l0.4,-2.0l-0.42,-0.9l0.38,-1.25l7.42,-0.86l19.54,-3.36l37.22,-8.42l31.12,-7.87l0.4,1.21l3.54,3.24l1.0,1.53l-1.21,-1.0l-0.16,-0.63l-0.92,-0.4l-0.52,0.05l-0.24,0.65l0.66,0.54l0.59,1.56l-0.53,0.01l-0.91,-0.75l-2.31,-0.8l-0.4,-0.48l-0.55,0.13l-0.31,0.69l0.14,0.64l1.37,0.44l1.69,1.38l-1.11,0.66l-2.48,-1.2l-0.36,0.51l0.14,0.42l1.6,1.18l-1.84,-0.33l-2.23,-0.87l-0.46,0.14l0.01,0.48l0.6,0.7l1.71,0.83l-0.97,0.58l0.0,0.6l-0.43,0.53l-1.48,0.74l-0.89,-0.77l-0.61,0.22l-0.1,0.35l-0.2,-0.13l-1.32,-2.32l0.21,-2.63l-0.42,-0.48l-0.89,-0.22l-0.37,0.64l0.62,0.71l-0.43,0.99l-0.02,1.04l0.49,1.73l1.6,2.2l-0.31,1.28l0.48,0.29l2.97,-0.59l2.1,-1.49l0.27,0.01l0.37,0.79l0.76,-0.34l1.56,0.05l0.16,-0.71l-0.57,-0.32l1.29,-0.76l2.04,-0.46l-0.1,1.19l0.64,0.29l-0.6,0.88l0.89,1.19l-0.84,0.1l-0.19,0.66l1.38,0.46l0.26,0.94l-1.21,0.05l-0.19,0.66l0.66,0.59l1.25,-0.16l0.52,0.26l0.4,-0.38l0.18,-1.95l-0.75,-3.33l0.41,-0.48l0.56,0.43l0.94,0.06l0.28,-0.57l-0.29,-0.44l0.48,-0.57l1.71,1.84l-0.0,1.41l0.62,0.9l-0.53,0.18l-0.25,0.47l0.9,1.14l-0.08,0.37l-0.42,0.55l-0.78,0.09l-0.91,-0.86l-0.32,0.33l0.13,1.26l-1.08,1.61l0.2,0.57l-0.32,0.22l-0.15,0.98l-0.74,0.55l0.1,0.91l-0.9,0.96l-1.06,0.21l-0.59,-0.37l-0.52,0.52l-0.93,-0.81l-0.86,0.1l-0.4,-0.82l-0.59,-0.21l-0.52,0.38l0.08,0.94l-0.52,0.22l-1.42,-1.25l1.31,-0.4l0.23,-0.88l-0.57,-0.42l-2.02,0.31l-1.14,1.01l0.29,0.67l0.44,0.16l0.09,0.82l0.35,0.25l-0.03,0.12l-0.57,-0.34l-1.69,0.83l-1.12,-0.43l-1.45,0.06l-3.32,-0.7l0.42,1.08l0.97,0.45l0.36,0.64l0.63,0.11l0.87,-0.32l1.68,0.63l2.35,0.39l3.51,0.11l0.47,0.42l-0.06,0.52l-0.99,0.05l-0.38,0.5l0.13,0.23l-1.62,1.44l0.32,0.58l1.85,0.01l-2.55,3.5l-1.67,0.04l-1.59,-0.98l-0.9,-0.19l-1.21,-1.02l-1.12,0.07l0.07,0.47l1.04,1.14l2.32,2.09l2.68,0.26l1.31,0.49l1.71,-2.16l0.51,0.47l1.17,0.33l0.4,-0.57l-0.55,-0.9l0.87,0.16l0.19,0.57l0.66,0.24l1.63,-1.2l-0.18,0.61l0.29,0.57l-0.29,0.38l-0.43,-0.2l-0.41,0.37l0.03,0.9l-0.97,1.72l0.01,0.78l-0.71,-0.07l-0.06,-0.74l-1.12,-0.61l-0.42,0.47l0.27,1.45l-0.52,-1.1l-0.65,-0.16l-1.22,1.08l-0.21,0.52l0.25,0.27l-2.03,0.32l-2.75,1.84l-0.67,-1.04l-0.75,-0.29l-0.37,0.49l0.43,1.26l-0.57,-0.01l-0.09,0.82l-0.94,1.73l-0.91,0.85l-0.59,-0.26l0.49,-0.69l-0.02,-0.77l-1.06,-0.93l-0.08,-0.52l-1.69,-0.41l-0.16,0.47l0.43,1.16l0.2,0.33l0.58,0.07l0.3,0.61l-0.88,0.37l-0.08,0.71l0.65,0.64l0.77,0.18l-0.01,0.37l-2.12,1.67l-1.92,2.65l-2.0,4.31l-0.34,2.13l0.12,1.34l-0.15,-1.03l-1.01,-1.59l-0.55,-0.17l-0.3,0.48l1.17,3.95l-0.63,2.27l-3.9,0.19l-1.43,0.65l-0.35,-0.52l-0.58,-0.18l-0.54,1.07l-1.9,1.14l-0.61,-0.02l-23.25,-15.36l-1.05,-0.02l-18.68,3.49l-0.65,-2.77l-3.25,-2.84l-0.47,0.08l-1.23,1.31l-0.01,-1.29l-0.82,-0.54l-22.82,3.35l-0.64,-0.27l-0.62,0.46l-0.25,0.65l-3.98,1.93l-0.89,1.23l-1.01,0.08l-4.78,2.66l-20.95,3.93l-0.34,-4.55l0.7,-0.95ZM817.0,271.48l0.19,0.35l0.24,0.39l-0.45,-0.41l0.02,-0.32ZM807.53,290.29l0.2,0.32l-0.16,-0.09l-0.03,-0.23ZM815.31,299.15l0.16,-0.36l0.16,0.07l-0.13,0.29l-0.19,0.01ZM812.76,299.11l-0.06,-0.28l-0.03,-0.11l0.3,0.26l-0.21,0.13ZM812.97,264.02l0.37,-0.24l0.15,0.42l-0.42,0.07l-0.1,-0.25ZM791.92,329.4l0.04,-0.08l0.22,0.03l-0.0,0.09l-0.26,-0.05Z\", \"name\": \"North Carolina\"}, \"US-ND\": {\"path\": \"M438.54,42.78l2.06,6.9l-0.73,2.53l0.57,2.36l-0.27,1.17l0.47,1.99l0.01,3.26l1.42,3.95l0.45,0.54l-0.08,0.97l0.39,1.52l0.62,0.74l1.48,3.74l-0.06,3.9l0.42,0.7l0.5,8.35l0.51,1.54l0.51,0.25l-0.47,2.64l0.36,1.63l-0.14,1.75l0.69,1.1l0.2,2.16l0.49,1.13l1.8,2.56l0.15,2.2l0.51,1.08l0.17,1.39l-0.24,1.36l0.28,1.74l-27.89,0.73l-28.38,0.19l-28.38,-0.37l-28.49,-0.93l2.75,-65.47l23.08,0.78l25.57,0.42l25.57,-0.06l24.11,-0.49Z\", \"name\": \"North Dakota\"}, \"US-NE\": {\"path\": \"M422.58,174.02l3.92,2.71l3.93,1.9l1.34,-0.22l0.51,-0.47l0.36,-1.08l0.48,-0.2l2.49,0.34l1.32,-0.47l1.58,0.25l3.45,-0.65l2.37,1.98l1.4,0.14l1.55,0.77l1.45,0.08l0.88,1.1l1.49,0.17l-0.06,0.98l1.68,2.08l3.32,0.6l0.19,0.68l-0.22,1.87l1.13,1.94l0.01,2.29l1.15,1.08l0.34,1.72l1.73,1.46l0.07,1.88l1.5,2.11l-0.49,2.33l0.44,3.09l0.52,0.54l0.94,-0.2l-0.04,1.25l1.21,0.5l-0.41,2.36l0.21,0.44l1.12,0.4l-0.6,0.77l-0.09,1.01l0.13,0.59l0.82,0.5l0.16,1.45l-0.26,0.92l0.26,1.27l0.55,0.61l0.3,1.93l-0.22,1.33l0.23,0.72l-0.57,0.92l0.02,0.79l0.45,0.88l1.23,0.63l0.25,2.5l1.1,0.51l0.03,0.79l1.18,2.75l-0.23,0.96l1.16,0.21l0.8,0.99l1.1,0.24l-0.15,0.96l1.31,1.68l-0.21,1.12l0.51,0.91l-26.15,1.05l-27.83,0.63l-27.84,0.14l-27.89,-0.35l0.46,-21.66l-0.39,-0.41l-32.36,-1.04l1.85,-43.24l43.36,1.22l44.67,-0.04Z\", \"name\": \"Nebraska\"}, \"US-LA\": {\"path\": \"M508.97,412.97l-1.33,-21.76l51.44,-4.07l0.34,0.83l1.48,0.66l-0.92,1.35l-0.25,2.13l0.49,0.72l1.18,0.31l-1.21,0.47l-0.45,0.78l0.45,1.36l1.05,0.84l0.08,2.15l0.46,0.54l1.51,0.74l0.45,1.05l1.42,0.44l-0.87,1.22l-0.85,2.34l-0.75,0.04l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.22,1.16l-1.35,0.96l-1.08,1.89l-1.37,0.67l-0.68,0.83l-0.79,2.42l-0.25,3.52l-1.55,1.74l0.13,1.21l0.62,0.96l-0.35,2.38l-1.61,0.29l-0.6,0.57l0.28,0.97l0.64,0.59l-0.26,1.41l0.98,1.51l-1.18,1.18l-0.08,0.45l0.4,0.23l6.18,-0.55l29.23,-2.92l-0.68,3.47l-0.52,1.02l-0.2,2.24l0.69,0.98l-0.09,0.66l0.6,1.0l1.31,0.7l1.22,1.42l0.14,0.88l0.89,1.39l0.14,1.05l1.11,1.84l-1.85,0.39l-0.38,-0.08l-0.01,-0.56l-0.53,-0.57l-1.28,0.28l-1.18,-0.59l-1.51,0.17l-0.61,-0.98l-1.24,-0.86l-2.84,-0.47l-1.24,0.63l-1.39,2.3l-1.3,1.42l-0.42,0.91l0.07,1.2l0.55,0.89l0.82,0.57l4.25,0.82l3.35,-1.0l1.32,-1.19l0.68,-1.19l0.34,0.59l1.08,0.43l0.59,-0.4l0.81,0.03l0.51,-0.46l-0.76,1.21l-1.12,-0.12l-0.57,0.32l-0.38,0.62l0.0,0.83l0.77,1.22l1.48,-0.02l0.65,0.89l1.1,0.48l0.94,-0.21l0.51,-0.45l0.46,-1.11l-0.02,-1.37l0.93,-0.58l0.42,-0.99l0.23,0.05l0.1,1.16l-0.24,0.25l0.18,0.57l0.43,0.15l-0.07,0.75l1.34,1.08l0.34,-0.16l-0.48,0.59l0.18,0.63l-0.35,0.13l-0.52,-0.57l-0.92,-0.19l-1.0,1.89l-0.85,0.14l-0.46,0.53l0.16,1.19l-1.6,-0.61l-0.43,0.19l0.04,0.46l1.14,1.06l-1.17,-0.14l-0.92,0.61l0.68,0.43l1.26,2.04l2.74,0.97l-0.08,1.2l0.34,0.41l2.07,-0.32l0.77,0.17l0.17,0.53l0.73,0.32l1.35,-0.34l0.53,0.78l1.08,-0.46l1.13,0.74l0.14,0.3l-0.4,0.62l1.54,0.86l-0.39,0.65l0.39,0.58l-0.18,0.62l-0.95,1.49l-1.3,-1.56l-0.68,0.34l0.1,0.66l-0.38,0.12l0.41,-1.88l-1.33,-0.76l-0.5,0.5l0.2,1.18l-0.54,0.45l-0.27,-1.02l-0.57,-0.25l-0.89,-1.27l0.03,-0.77l-0.96,-0.14l-0.47,0.5l-1.41,-0.17l-0.41,-0.61l0.14,-0.63l-0.39,-0.46l-0.45,-0.02l-0.81,0.73l-1.18,0.02l0.12,-1.23l-0.46,-0.88l-0.91,0.04l0.09,-0.96l-0.37,-0.36l-0.91,-0.03l-0.22,0.58l-0.85,-0.38l-0.48,0.27l-2.61,-1.26l-1.24,-0.03l-0.67,-0.64l-0.61,0.19l-0.3,0.56l-0.05,1.25l1.72,0.94l1.67,0.35l-0.16,0.92l0.28,0.39l-0.34,0.35l0.23,0.68l-0.76,0.95l-0.02,0.66l0.81,0.97l-0.95,1.43l-1.33,0.94l-0.76,-1.15l0.22,-1.5l-0.35,-0.92l-0.49,-0.18l-0.4,0.36l-1.15,-1.08l-0.59,0.42l-0.76,-1.05l-0.62,-0.2l-0.64,1.33l-0.85,0.26l-0.88,-0.53l-0.86,0.53l-0.1,0.62l0.48,0.41l-0.68,0.56l-0.13,1.44l-0.46,0.13l-0.39,0.83l-0.92,0.08l-0.11,-0.68l-1.6,-0.4l-0.77,0.97l-1.92,-0.93l-0.3,-0.54l-0.99,0.01l-0.35,0.6l-1.16,-0.51l0.42,-0.4l0.01,-1.46l-0.38,-0.57l-1.9,-1.19l-0.08,-0.54l-0.83,-0.72l-0.09,-0.91l0.73,-1.15l-0.34,-1.14l-0.87,-0.19l-0.34,0.57l0.16,0.43l-0.59,0.81l0.04,0.91l-1.8,-0.4l0.07,-0.39l-0.47,-0.54l-1.97,0.76l-0.7,-2.22l-1.32,0.23l-0.18,-2.12l-1.31,-0.35l-1.89,0.3l-1.09,0.65l-0.21,-0.71l0.84,-0.26l-0.05,-0.8l-0.6,-0.58l-1.03,-0.1l-0.85,0.42l-0.95,-0.15l-0.4,0.8l-2.0,1.11l-0.63,-0.31l-1.29,0.71l0.54,1.37l0.8,0.31l0.97,1.51l-1.39,0.19l-1.83,1.03l-3.69,-0.4l-1.24,0.21l-3.09,-0.45l-1.99,-0.68l-1.81,-1.07l-3.7,-1.1l-3.19,-0.48l-2.53,0.58l-5.62,0.45l-1.0,0.26l-1.82,1.25l-0.59,-0.63l-0.26,-1.08l1.59,-0.47l0.7,-1.76l-0.02,-1.55l-0.39,-0.56l1.11,-1.54l0.23,-1.59l-0.5,-1.83l0.07,-1.46l-0.66,-0.7l-0.21,-1.04l0.83,-2.22l-0.64,-1.95l0.76,-0.84l0.3,-1.49l0.78,-0.94l0.79,-2.83l-0.18,-1.42l0.58,-0.97l-0.75,-1.33l0.84,-0.39l0.2,-0.44l-0.89,-1.36l0.03,-2.13l-1.07,-0.23l-0.57,-1.57l-0.92,-0.84l0.28,-1.27l-0.81,-0.76l-0.33,-0.95l-0.64,-0.34l0.22,-0.98l-1.16,-0.58l-0.81,-0.93l0.16,-2.46l-0.68,-1.93l-1.33,-1.98l-2.63,-2.21ZM607.49,467.45l-0.03,-0.03l-0.07,-0.04l0.13,-0.01l-0.03,0.08ZM607.51,465.85l-0.02,-0.01l0.03,-0.01l-0.02,0.02ZM567.04,468.98l-2.0,-0.42l-0.66,-0.5l0.73,-0.43l0.35,-0.76l0.39,0.49l0.83,0.21l-0.15,0.61l0.5,0.81ZM550.39,463.0l1.73,-1.05l3.34,1.07l-0.69,0.56l-0.17,0.81l-0.68,0.17l-3.53,-1.57Z\", \"name\": \"Louisiana\"}, \"US-SD\": {\"path\": \"M336.37,128.84l0.3,-0.53l0.75,-19.93l28.5,0.93l28.4,0.37l28.4,-0.19l27.78,-0.73l-0.18,1.71l-0.73,1.71l-2.9,2.46l-0.42,1.27l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.01,0.84l0.57,1.02l1.45,38.83l-1.84,0.09l-0.42,0.56l0.24,1.44l0.88,1.14l0.01,1.45l-0.65,0.36l0.17,1.48l0.48,0.43l1.09,0.04l0.34,1.68l-0.16,0.91l-0.62,0.83l0.02,1.73l-0.68,2.45l-0.49,0.44l-0.67,1.88l0.5,1.1l1.33,1.08l-0.16,0.62l0.64,0.66l0.35,1.15l-1.65,-0.28l-0.34,-0.94l-0.85,-0.73l0.19,-0.61l-0.28,-0.59l-1.58,-0.23l-1.03,-1.18l-1.57,-0.11l-1.51,-0.75l-1.34,-0.12l-2.38,-1.99l-3.78,0.6l-1.65,-0.25l-1.19,0.46l-2.62,-0.33l-0.98,0.48l-0.76,1.45l-0.72,0.05l-3.67,-1.82l-4.13,-2.8l-44.83,0.05l-43.33,-1.22l1.79,-43.2Z\", \"name\": \"South Dakota\"}, \"US-DC\": {\"path\": \"M781.25,216.97l0.45,-0.77l2.04,1.26l-0.66,1.14l-0.55,-1.05l-1.28,-0.58Z\", \"name\": \"District of Columbia\"}, \"US-DE\": {\"path\": \"M798.52,195.11l0.42,-1.51l0.92,-1.11l1.72,-0.71l1.12,0.06l-0.33,0.56l-0.08,1.38l-1.13,1.92l0.1,1.09l1.11,1.1l-0.07,1.52l2.29,2.48l1.25,0.6l0.93,1.52l0.99,3.35l1.72,1.57l0.57,1.32l3.06,1.99l1.44,-0.09l0.45,1.25l-1.06,0.56l0.16,1.32l0.36,0.19l-0.83,0.57l-0.08,1.21l0.66,0.21l0.85,-0.73l0.71,0.34l0.3,-0.21l0.75,1.55l-10.19,2.82l-8.12,-26.12Z\", \"name\": \"Delaware\"}, \"US-FL\": {\"path\": \"M630.28,423.69l47.19,-6.86l1.53,1.91l0.87,2.72l1.47,1.0l48.79,-5.11l1.03,1.38l0.03,1.09l0.55,1.05l1.04,0.48l1.64,-0.28l0.85,-0.75l-0.14,-4.57l-0.98,-1.49l-0.22,-1.77l0.28,-0.74l0.62,-0.3l0.12,-0.7l5.6,0.96l4.03,-0.16l0.14,1.24l-0.75,-0.12l-0.33,0.43l0.25,1.54l2.11,1.81l0.22,1.01l0.42,0.38l0.29,1.92l1.87,3.29l1.7,4.87l0.73,0.84l0.51,1.5l1.64,2.46l0.64,1.57l2.79,3.71l1.93,3.18l2.29,2.77l0.16,0.6l0.63,0.36l6.82,7.53l-0.48,-0.03l-0.27,0.61l-1.35,-0.02l-0.34,-0.65l0.38,-1.38l-0.16,-0.56l-2.3,-0.92l-0.46,0.53l1.0,2.8l0.78,0.97l2.14,4.77l9.92,13.71l1.37,3.11l3.66,5.34l-1.38,-0.35l-0.43,0.74l0.8,0.65l0.85,0.24l0.56,-0.22l1.46,0.94l2.05,3.05l-0.5,0.34l-0.12,0.53l1.16,0.53l0.89,1.83l-0.08,1.06l0.59,0.95l0.61,2.64l-0.27,0.75l0.93,8.98l-0.31,1.07l0.46,0.67l0.5,3.1l-0.81,1.46l0.07,2.23l-0.84,0.74l-0.22,1.8l-0.48,0.85l0.21,1.47l-0.3,1.75l0.54,1.74l0.45,0.23l-1.15,1.8l-0.39,1.28l-0.94,0.24l-0.53,-0.22l-1.37,0.45l-0.35,1.06l-0.89,0.3l-0.18,0.58l-0.85,0.67l-1.44,0.14l-0.27,-0.32l-1.23,-0.1l-0.9,1.05l-3.17,1.13l-1.06,-0.59l-0.7,-1.04l0.06,-1.79l1.0,0.84l1.64,0.47l0.26,0.63l0.52,0.07l1.35,-0.72l0.2,-0.69l-0.26,-0.64l-1.58,-1.11l-2.4,-0.26l-0.91,-0.46l-0.85,-1.67l-0.89,-0.72l0.22,-0.98l-0.48,-0.28l-0.53,0.15l-1.38,-2.51l-0.44,-0.3l-0.64,0.07l-0.44,-0.61l0.22,-0.89l-0.7,-0.65l-1.21,-0.6l-1.06,-0.08l-0.75,-0.54l-0.57,0.18l-2.8,-0.59l-0.5,0.64l0.25,-0.91l-0.46,-0.42l-0.87,0.12l-0.26,-0.72l-0.88,-0.65l-0.61,-1.41l-0.55,-0.11l-0.72,-2.94l-0.77,-1.0l-0.16,-1.52l-0.44,-0.83l-0.71,-0.89l-0.49,-0.15l-0.12,0.93l-1.29,-0.26l1.06,-1.3l0.3,-0.75l-0.12,-0.63l0.86,-1.46l0.65,-0.34l0.28,-0.83l-0.61,-0.38l-1.42,0.93l-0.89,1.29l-0.42,2.17l-1.37,0.35l-0.21,-1.33l-0.79,-1.33l-0.27,-4.04l-0.86,-0.6l1.63,-1.33l0.22,-0.97l-0.58,-0.42l-3.06,1.92l-0.75,-0.66l-0.4,0.26l-1.27,-0.89l-0.37,0.74l1.13,1.09l0.52,0.1l1.26,2.0l-1.04,0.23l-1.42,-0.38l-0.84,-1.6l-1.13,-0.6l-1.94,-2.55l-1.04,-2.28l-1.28,-0.87l0.1,-0.87l-0.97,-1.8l-1.77,-0.98l0.09,-0.67l0.99,-0.41l-0.35,-0.49l0.44,-0.73l-0.39,-0.35l0.4,-1.21l2.47,-4.47l-1.05,-2.41l-0.68,-0.46l-0.92,0.42l-0.28,0.93l0.29,1.2l-0.24,0.03l-0.73,-2.44l-0.99,-0.28l-1.19,-0.87l-1.52,-0.31l0.29,1.95l-0.48,0.61l0.27,0.59l2.21,0.56l0.25,0.97l-0.37,2.46l-0.31,-0.58l-0.8,-0.22l-2.13,-1.53l-0.41,0.2l-0.29,-0.63l0.59,-2.11l0.07,-2.97l-0.66,-1.97l0.42,-0.51l0.48,-1.91l-0.24,-0.54l0.66,-3.04l-0.35,-5.26l-0.71,-1.7l0.35,-0.47l-0.47,-2.18l-2.1,-1.33l-0.05,-0.52l-0.55,-0.43l-0.1,-1.01l-0.92,-0.73l-0.55,-1.51l-0.64,-0.25l-1.44,0.32l-1.03,-0.2l-1.57,0.54l-1.14,-1.74l-1.51,-0.48l-0.19,-0.6l-1.35,-1.51l-0.87,-0.59l-0.62,0.07l-1.52,-1.16l-0.8,-0.21l-0.51,-2.75l-3.06,-1.13l-0.65,-0.59l-0.52,-1.23l-2.15,-1.93l-2.19,-1.09l-1.45,-0.12l-3.44,-1.68l-2.85,0.98l-1.0,-0.4l-1.05,0.42l-0.35,0.68l-1.33,0.68l-0.5,0.7l0.03,0.64l-0.73,-0.22l-0.59,0.6l0.67,0.94l1.51,0.08l0.41,0.21l-3.03,0.23l-1.58,1.51l-0.91,0.45l-1.3,1.56l-1.56,1.03l-0.32,0.13l0.2,-0.48l-0.26,-0.54l-0.66,-0.04l-0.96,0.75l-1.12,1.5l-2.2,0.23l-2.11,1.06l-0.78,0.03l-0.27,-2.03l-1.71,-2.23l-2.21,-1.0l-0.18,-0.41l-2.51,-1.5l2.79,1.33l1.21,-0.74l0.0,-0.74l-1.32,-0.34l-0.36,0.55l-0.21,-1.01l-0.34,-0.1l0.13,-0.52l-0.49,-0.33l-1.39,0.61l-2.3,-0.76l0.65,-1.08l0.83,-0.1l1.03,-1.45l-0.91,-0.95l-0.46,0.12l-0.49,1.02l-0.44,-0.04l-0.81,0.56l-0.72,-0.9l-0.7,0.09l-0.17,0.38l-1.34,0.73l-0.14,0.68l0.29,0.46l-3.95,-1.35l-5.05,-0.71l0.12,-0.24l1.27,0.29l0.61,-0.53l2.1,0.39l0.23,-0.78l-0.94,-1.02l0.09,-0.7l-0.63,-0.28l-0.5,0.32l-0.28,-0.47l-1.9,0.19l-2.25,1.1l0.3,-0.63l-0.41,-0.58l-0.96,0.35l-0.58,-0.25l-0.23,0.44l0.2,0.71l-1.45,0.8l-0.4,0.63l-5.18,0.97l0.32,-0.52l-0.4,-0.52l-1.35,-0.28l-0.72,-0.53l0.69,-0.53l0.01,-0.78l-0.68,-0.13l-0.81,-0.66l-0.46,0.11l0.14,0.76l-0.42,1.77l-1.05,-1.39l-0.69,-0.45l-0.55,0.07l-0.3,0.71l0.82,1.77l-0.25,0.79l-1.39,0.99l-0.05,1.04l-0.6,0.22l-0.17,0.57l-1.48,0.56l0.28,-0.65l-0.21,-0.46l1.14,-1.03l0.07,-0.74l-0.4,-0.58l-1.19,-0.24l-0.41,-0.84l0.3,-1.7l-0.18,-1.61l-2.17,-1.12l-2.39,-2.46l0.32,-1.44l-0.15,-1.04ZM767.29,490.44l0.48,1.07l0.9,0.39l0.78,-0.15l1.41,1.67l0.91,0.58l1.86,0.69l1.61,0.07l0.55,-0.44l-0.08,-0.87l0.55,-0.65l-0.16,-1.21l0.76,-1.36l0.09,-1.81l-0.64,-1.62l-1.46,-2.01l-1.74,-1.32l-1.19,-0.13l-1.12,0.83l-1.83,3.16l-2.12,1.94l-0.13,0.77l0.57,0.41ZM644.36,434.13l-0.94,0.26l0.41,-0.44l0.53,0.18ZM665.13,435.7l0.98,-0.28l0.35,0.32l0.09,0.72l-1.42,-0.75ZM770.56,455.01l0.42,0.56l-0.43,0.75l0.0,-1.31ZM788.88,525.23l0.01,-0.07l0.01,0.03l-0.03,0.04ZM789.47,522.87l-0.22,-0.23l0.49,-0.32l-0.27,0.55ZM768.83,453.61l0.21,0.76l-0.31,2.33l0.28,1.79l-1.38,-3.23l1.19,-1.65ZM679.81,445.61l0.22,-0.2l0.36,0.02l-0.11,0.42l-0.47,-0.25Z\", \"name\": \"Florida\"}, \"US-WA\": {\"path\": \"M38.52,55.26l0.46,-1.32l0.18,0.45l0.65,0.3l1.04,-0.74l0.43,0.59l0.7,-0.03l0.17,-0.77l-0.92,-1.56l0.79,-0.74l-0.09,-1.36l0.49,-0.39l-0.1,-1.03l0.81,-0.27l0.05,0.5l0.48,0.41l0.95,-0.31l-0.09,-0.68l-1.35,-1.65l-0.9,0.15l-1.88,-0.56l0.17,-1.98l0.66,0.53l0.52,-0.07l0.29,-0.56l-0.16,-0.67l3.3,-0.52l0.26,-0.69l-1.7,-0.96l-0.86,-0.14l-0.37,-1.51l-0.7,-0.42l-0.81,-0.02l0.32,-4.73l-0.49,-1.28l0.1,-0.69l-0.4,-0.34l0.76,-5.74l-0.13,-2.46l-0.45,-0.62l-0.16,-1.36l-0.65,-1.33l-0.73,-0.57l-0.32,-2.45l0.35,-2.27l-0.15,-1.11l1.74,-3.3l-0.52,-1.23l4.59,3.9l1.19,0.38l0.92,0.75l0.81,1.3l1.86,1.08l3.24,0.91l0.84,0.77l1.42,0.11l1.73,1.02l2.33,0.73l1.46,-0.47l0.52,0.29l0.55,0.69l-0.03,1.09l0.55,0.74l0.31,0.11l0.49,-0.35l0.07,-0.75l0.45,0.03l0.63,1.39l-0.4,0.58l0.34,0.49l0.56,-0.04l0.72,-0.84l-0.38,-1.7l1.03,-0.24l-0.44,0.23l-0.21,0.69l1.27,4.41l-0.46,0.1l-1.67,1.73l0.22,-1.29l-0.22,-0.41l-1.31,0.31l-0.38,0.81l0.09,0.95l-1.37,1.7l-1.98,1.38l-1.06,1.41l-0.96,0.69l-1.1,1.67l-0.06,0.71l0.62,0.6l0.96,0.12l2.77,-0.48l1.22,-0.58l-0.03,-0.7l-0.64,-0.23l-2.94,0.79l-0.35,-0.3l3.23,-3.42l3.06,-0.88l0.89,-1.51l1.73,-1.54l0.53,0.57l0.54,-0.19l0.22,-1.81l-0.06,2.25l0.26,0.91l-0.99,-0.21l-0.64,0.77l-0.41,-0.73l-0.52,-0.19l-0.39,0.64l0.3,0.71l0.02,1.63l-0.21,-1.07l-0.67,-0.21l-0.47,0.69l-0.07,0.75l0.46,0.66l-0.63,0.58l-0.0,0.45l0.42,0.17l1.68,-0.57l0.25,1.09l-1.08,1.79l-0.08,1.05l-0.83,0.7l0.13,1.0l-0.85,-0.68l1.12,-1.44l-0.23,-0.96l-1.96,1.08l-0.38,0.64l-0.05,-2.11l-0.52,0.02l-1.03,1.59l-1.26,0.53l-1.14,1.87l-1.51,0.3l-0.46,0.43l-0.21,1.18l1.11,-0.03l-0.25,0.36l0.27,0.37l0.93,0.02l0.06,0.68l0.53,0.47l0.52,-0.27l0.35,-1.76l0.14,0.42l0.83,-0.15l1.11,1.48l1.31,-0.61l1.65,-1.48l0.98,-1.56l0.63,0.78l0.73,0.14l0.44,-0.23l-0.06,-0.86l1.56,-0.55l0.35,-0.94l-0.33,-1.27l0.22,-1.19l-0.18,-1.36l0.83,0.2l0.3,-0.92l-0.19,-0.75l-0.72,-0.63l0.89,-1.13l0.07,-1.75l1.24,-1.24l0.61,-1.37l1.61,-0.49l0.78,-1.16l-0.45,-0.66l-0.51,-0.02l-0.86,-1.3l0.16,-2.09l-0.26,-0.87l0.49,-0.79l0.06,-0.84l-1.15,-1.73l-0.63,-0.4l-0.17,-0.64l0.18,-0.5l0.59,0.23l0.53,-0.33l0.24,-1.8l0.79,-0.24l0.3,-1.0l-0.61,-2.32l0.44,-0.53l-0.03,-0.86l-0.96,-0.88l-0.95,0.3l-1.09,-2.66l0.93,-1.83l41.31,9.4l38.96,7.65l-9.66,54.39l-0.47,1.02l1.04,3.0l0.13,2.0l-1.0,1.3l0.73,1.88l-31.18,-5.92l-1.67,0.79l-7.24,-1.02l-1.68,0.92l-4.19,-0.12l-3.18,0.45l-1.64,0.75l-0.88,-0.26l-1.2,0.3l-1.51,-0.23l-2.43,-0.94l-0.91,0.46l-3.45,0.51l-2.11,-0.71l-1.65,0.3l-0.31,-1.36l-1.09,-0.88l-4.34,-1.46l-2.32,-0.11l-1.15,-0.51l-1.27,0.21l-1.89,0.86l-4.5,0.58l-1.11,-0.71l-1.15,-0.3l-1.61,-1.15l-1.84,-0.51l-0.63,-0.81l0.64,-6.82l-0.47,-0.95l-0.22,-1.9l-0.98,-1.35l-1.96,-1.67l-2.82,-0.11l-1.03,-1.31l-0.15,-1.05l-0.56,-0.63l-2.36,-0.31l-0.56,-0.3l-0.24,-0.79l-0.5,-0.18l-0.97,0.35l-0.84,-0.26l-1.1,0.4l-0.97,-1.47l-0.89,-0.22ZM61.85,39.78l0.16,0.74l-0.42,0.49l0.0,-0.91l0.26,-0.31ZM71.27,20.38l-0.61,0.87l-0.15,0.52l0.11,-1.01l0.65,-0.38ZM71.14,15.62l-0.09,-0.05l0.05,-0.04l0.04,0.1ZM70.37,15.48l-0.77,0.39l0.37,-0.68l-0.07,-0.6l0.22,-0.07l0.25,0.97ZM57.56,42.45l0.05,-0.02l-0.01,0.01l-0.04,0.02ZM67.75,19.23l1.73,-2.1l0.47,-0.02l0.53,1.71l-0.35,-0.55l-0.51,-0.12l-0.55,0.44l-0.35,-0.09l-0.35,0.73l-0.63,-0.01ZM67.87,20.4l0.44,0.0l0.61,0.5l0.08,0.35l-0.79,-0.2l-0.33,-0.65ZM68.84,23.16l-0.1,0.51l-0.0,0.0l-0.02,-0.24l0.12,-0.28ZM69.15,25.42l0.08,0.04l0.12,-0.04l-0.16,0.11l-0.05,-0.1ZM69.52,25.33l0.48,-0.93l1.02,1.21l0.11,1.12l-0.34,0.36l-0.34,-0.09l-0.27,-1.55l-0.67,-0.12ZM66.34,9.97l0.48,-0.34l0.18,1.51l-0.22,-0.05l-0.44,-1.12ZM68.04,9.66l0.83,0.8l-0.65,0.31l-0.18,-1.11ZM66.69,38.03l0.34,-1.07l0.21,-0.25l-0.03,1.07l-0.52,0.26ZM66.99,33.31l0.1,-1.04l0.35,-0.34l-0.23,1.56l-0.22,-0.18ZM66.51,14.27l-0.41,-0.4l0.6,-0.75l-0.18,0.61l-0.01,0.55ZM66.68,14.62l0.4,0.2l-0.08,0.12l-0.29,-0.12l-0.03,-0.2ZM66.74,12.96l-0.01,-0.1l0.05,-0.12l-0.04,0.23ZM64.36,13.12l-1.06,-0.82l0.19,-1.81l1.33,1.92l-0.35,0.18l-0.11,0.54ZM62.18,42.55l0.23,-0.25l0.02,0.01l-0.13,0.31l-0.12,-0.07ZM60.04,40.3l-0.09,-0.19l0.04,-0.07l0.0,0.13l0.05,0.14Z\", \"name\": \"Washington\"}, \"US-KS\": {\"path\": \"M477.9,239.67l0.44,0.63l0.76,0.18l1.04,0.8l2.19,-1.08l-0.0,0.75l1.08,0.79l0.23,1.44l-0.95,-0.15l-0.6,0.31l-0.17,0.97l-1.14,1.37l-0.06,1.14l-0.79,0.5l0.04,0.64l1.56,2.1l2.0,1.49l0.2,1.13l0.42,0.86l0.74,0.56l0.32,1.11l1.89,0.91l1.54,0.26l2.67,46.82l-31.55,1.48l-31.97,0.88l-31.98,0.26l-32.05,-0.37l1.21,-65.47l27.9,0.35l27.86,-0.14l27.85,-0.64l27.68,-1.12l1.65,1.23Z\", \"name\": \"Kansas\"}, \"US-WI\": {\"path\": \"M598.7,107.43l0.83,-0.15l-0.13,0.81l-0.56,0.01l-0.14,-0.68ZM594.22,116.05l0.47,-0.41l0.26,-2.36l0.95,-0.25l0.64,-0.69l0.22,-1.4l0.41,-0.63l0.63,-0.03l0.06,0.38l-0.76,0.06l-0.18,0.51l0.17,1.27l-0.38,0.17l-0.11,0.58l0.56,0.57l-0.24,0.65l-0.5,0.33l-0.69,1.91l0.07,1.23l-1.05,2.28l-0.41,0.15l-0.86,-0.97l-0.19,-0.72l0.31,-1.57l0.62,-1.05ZM510.06,124.08l0.41,-0.27l0.28,-0.9l-0.45,-1.48l0.04,-1.91l0.7,-1.16l0.53,-2.25l-1.61,-2.91l-0.83,-0.36l-1.28,-0.01l-0.21,-2.31l1.67,-2.26l-0.05,-0.77l0.77,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.75l1.16,-0.14l1.04,-1.56l-0.97,-12.11l1.03,-0.35l0.22,-1.1l0.73,-0.97l0.78,0.69l1.68,0.64l2.61,-0.56l3.28,-1.57l2.65,-0.82l2.21,-2.12l0.31,0.29l1.39,-0.11l1.25,-1.48l0.79,-0.58l1.04,-0.1l0.4,-0.52l1.07,0.99l-0.48,1.68l-0.67,1.01l0.23,1.61l-1.21,2.21l0.64,0.66l2.5,-1.09l0.72,-0.86l2.16,1.22l2.34,0.47l0.44,0.54l0.86,-0.13l1.6,0.7l2.23,3.54l15.48,2.52l4.65,1.96l1.68,-0.17l1.63,0.42l1.33,-0.59l3.17,0.71l2.18,0.09l0.85,0.41l0.56,0.89l-0.42,1.09l0.41,0.77l3.4,0.63l1.41,1.13l-0.16,0.71l0.59,1.11l-0.36,0.81l0.43,1.25l-0.78,1.25l-0.03,1.76l0.91,0.63l1.38,-0.26l1.02,-0.72l0.2,0.26l-0.79,2.44l0.04,1.31l1.32,1.46l0.84,0.35l-0.24,2.02l-2.42,1.2l-0.51,0.79l0.04,1.26l-1.61,3.49l-0.4,3.5l1.11,0.82l0.92,-0.04l0.5,-0.36l0.49,-1.37l1.82,-1.47l0.66,-2.53l1.06,-1.7l0.14,0.25l0.45,-0.07l0.57,-0.7l0.88,-0.4l1.12,1.12l0.59,0.19l-0.29,2.21l-1.18,2.82l-0.56,5.58l0.23,1.11l0.8,0.93l0.07,0.52l-0.51,0.98l-1.3,1.34l-0.86,3.89l0.15,2.57l0.72,1.2l0.06,1.24l-1.07,3.22l0.12,2.12l-0.73,2.11l-0.28,2.47l0.59,2.02l-0.04,1.32l0.49,0.54l-0.21,1.7l0.92,0.78l0.54,2.43l1.2,1.54l0.08,1.69l-0.33,1.45l0.47,2.95l-44.2,4.6l-0.19,-0.79l-1.56,-2.19l-4.94,-0.84l-1.06,-1.35l-0.36,-1.69l-0.9,-1.21l-0.86,-4.9l1.04,-2.62l-0.09,-0.99l-0.71,-0.79l-1.44,-0.48l-0.71,-1.76l-0.47,-6.02l-0.7,-1.4l-0.52,-2.56l-1.15,-0.6l-1.1,-1.56l-0.93,-0.11l-1.17,-0.75l-1.71,0.09l-2.67,-1.79l-2.3,-3.5l-2.64,-2.1l-2.94,-0.53l-0.73,-1.24l-1.12,-1.0l-3.12,-0.45l-3.53,-2.74l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.88,-3.11ZM541.58,78.25l0.05,-0.28l0.03,0.16l-0.08,0.12ZM537.91,83.72l0.28,-0.21l0.05,0.08l-0.33,0.12Z\", \"name\": \"Wisconsin\"}, \"US-OR\": {\"path\": \"M10.69,140.12l0.01,-1.77l0.5,-0.84l0.32,-1.95l1.12,-1.91l0.24,-1.9l-0.72,-2.57l-0.33,-0.15l-0.12,-1.81l3.04,-3.82l2.5,-5.98l0.01,0.77l0.52,0.52l0.49,-0.28l0.6,-1.6l0.47,-0.48l0.31,0.98l1.12,0.41l0.33,-0.54l-0.45,-1.76l0.27,-0.87l-0.45,-0.14l-0.79,0.32l1.74,-3.16l1.13,-0.96l0.89,0.3l0.49,-0.29l-0.47,-1.08l-0.81,-0.4l1.77,-4.63l0.47,-0.57l0.02,-0.99l1.08,-2.67l0.62,-2.6l1.04,-1.92l0.33,0.28l0.66,-0.33l-0.04,-0.6l-0.76,-0.62l1.06,-2.6l0.32,0.22l0.59,-0.19l0.13,-0.35l-0.04,-0.51l-0.57,-0.32l0.85,-3.84l1.23,-1.8l0.83,-3.04l1.14,-1.76l0.83,-2.45l0.26,-1.21l-0.18,-0.5l1.19,-1.08l-0.32,-1.64l0.96,0.57l0.78,-0.63l-0.39,-0.75l0.2,-0.65l-0.77,-0.77l0.51,-1.07l1.3,-0.86l0.06,-0.46l-0.93,-0.34l-0.33,-1.25l0.97,-2.14l-0.04,-1.48l0.86,-0.53l0.58,-1.33l0.18,-1.96l-0.21,-1.45l0.83,1.17l0.6,0.18l-0.11,0.89l0.55,0.53l0.83,-0.96l-0.27,-0.99l0.21,-0.07l0.24,0.56l0.69,0.32l1.51,0.04l0.37,-0.36l1.37,-0.19l0.99,2.08l2.43,0.92l1.25,-0.64l0.78,0.04l1.72,1.51l0.77,1.04l0.21,1.9l0.43,0.78l-0.03,2.05l-0.39,1.24l0.19,0.93l-0.43,1.74l0.26,1.45l0.79,0.85l1.94,0.56l1.44,1.05l1.36,0.41l1.04,0.69l4.98,-0.53l2.9,-1.06l1.14,0.51l2.23,0.09l4.24,1.43l0.69,0.54l0.19,1.15l0.57,0.58l1.86,-0.27l2.11,0.71l3.79,-0.55l0.69,-0.42l2.19,0.93l1.64,0.24l1.2,-0.3l0.88,0.26l1.89,-0.78l3.07,-0.43l4.16,0.13l1.61,-0.91l7.17,1.02l0.96,-0.19l0.79,-0.58l31.27,5.93l0.23,1.81l0.93,1.82l1.16,0.63l1.96,1.86l0.57,2.45l-0.16,1.0l-3.69,4.55l-0.4,1.41l-1.39,2.63l-2.21,2.42l-0.65,2.68l-1.49,1.84l-2.23,1.5l-1.92,3.35l-1.49,1.27l-0.62,2.02l-0.12,1.87l0.28,0.92l0.56,0.61l0.54,0.04l0.39,-0.35l0.63,0.76l0.89,-0.05l0.07,0.88l0.81,0.95l-0.46,1.0l-0.65,0.06l-0.33,0.4l0.21,1.8l-1.03,2.56l-1.22,1.41l-6.86,39.16l-26.21,-4.99l-28.9,-6.05l-28.8,-6.61l-28.95,-7.24l-1.48,-2.59l0.2,-2.36l-0.23,-0.89Z\", \"name\": \"Oregon\"}, \"US-KY\": {\"path\": \"M583.02,306.59l0.35,-2.18l1.13,0.96l0.72,0.2l0.75,-0.36l0.46,-0.88l0.87,-3.55l-0.54,-1.75l0.38,-0.86l-0.1,-1.88l-1.27,-2.04l1.79,-3.21l1.24,-0.51l0.73,0.06l7.03,2.56l0.81,-0.2l0.65,-0.72l0.24,-1.93l-1.49,-2.14l-0.24,-1.44l0.2,-0.87l0.4,-0.52l1.1,-0.18l1.24,-0.83l3.0,-0.95l0.64,-0.51l0.15,-1.13l-1.53,-2.05l-0.08,-0.68l1.33,-1.97l0.14,-1.16l1.25,0.42l1.12,-1.33l-0.68,-2.0l1.92,0.9l1.72,-0.84l0.03,1.18l1.0,0.46l0.99,-0.94l0.02,-1.36l0.51,0.16l1.9,-0.96l4.41,1.52l0.64,0.94l0.86,0.18l0.59,-0.59l0.73,-2.53l1.38,-0.55l1.39,-1.34l0.86,1.29l0.77,0.42l1.16,-0.13l0.11,0.75l0.95,0.19l0.67,-0.62l0.03,-1.01l0.84,-0.38l0.26,-0.48l-0.25,-2.09l0.84,-0.4l0.34,-0.56l-0.06,-0.69l1.25,-0.56l0.34,-0.72l0.38,1.47l0.61,0.6l1.46,0.64l1.25,-0.0l1.11,0.81l0.53,-0.11l0.26,-0.55l1.1,-0.46l0.53,-0.69l0.04,-3.48l0.85,-2.18l1.02,0.18l1.55,-1.19l0.75,-3.46l1.04,-0.37l1.65,-2.23l0.0,-0.81l-1.18,-2.88l2.78,-0.59l1.54,0.81l3.85,-2.82l2.23,-0.46l-0.18,-1.07l0.36,-1.47l-0.32,-0.36l-1.22,-0.04l0.58,-1.39l-1.09,-1.54l1.65,-1.83l1.81,1.18l0.92,-0.11l1.93,-1.01l0.78,0.88l1.76,0.54l0.57,1.28l0.94,0.92l0.79,1.84l2.6,0.67l1.87,-0.57l1.63,0.27l2.18,1.85l0.96,0.43l1.28,-0.18l0.61,-1.31l0.99,-0.54l1.35,0.5l1.34,0.04l1.33,1.09l1.26,-0.69l1.41,-0.15l1.81,-2.55l1.72,-1.03l0.92,2.35l0.7,0.83l2.45,0.81l1.35,0.97l0.75,1.05l0.93,3.35l-0.37,0.45l0.09,0.72l-0.44,0.61l0.02,0.53l2.24,2.62l1.35,0.92l-0.08,0.89l1.34,0.97l0.58,1.36l1.55,1.2l0.98,1.62l2.14,0.84l1.09,1.12l2.14,0.25l-4.86,6.13l-5.06,4.16l-0.42,0.86l0.22,1.25l-2.07,1.93l0.04,1.64l-3.06,1.63l-0.8,2.38l-1.71,0.6l-2.7,1.83l-1.66,0.48l-3.39,2.42l-23.95,3.09l-8.8,1.42l-7.47,0.86l-7.68,0.46l-22.71,3.52l-0.64,-0.56l-3.63,0.09l-0.41,0.6l1.03,3.57l-23.0,2.73ZM580.9,306.78l-0.59,0.08l-0.06,-0.55l0.47,-0.01l0.18,0.49Z\", \"name\": \"Kentucky\"}, \"US-CO\": {\"path\": \"M364.18,239.57l-1.22,65.87l-29.29,-0.9l-29.38,-1.43l-29.35,-1.95l-32.17,-2.75l8.33,-87.15l27.79,2.4l28.23,1.92l29.58,1.46l27.95,0.87l-0.46,21.66Z\", \"name\": \"Colorado\"}, \"US-OH\": {\"path\": \"M664.99,178.81l1.67,0.47l1.04,-0.3l1.74,1.07l2.07,0.26l1.47,1.18l1.71,0.23l-2.19,1.18l-0.12,0.47l0.42,0.24l2.46,0.19l1.39,-1.1l1.77,-0.25l3.39,0.96l0.92,-0.08l1.48,-1.29l1.74,-0.6l1.15,-0.96l1.91,-0.97l2.62,-0.03l1.09,-0.62l1.24,-0.06l1.07,-0.8l4.24,-5.46l4.53,-3.47l6.92,-4.36l5.83,28.05l-0.51,0.54l-1.28,0.43l-0.41,0.95l1.65,2.24l0.02,2.11l0.41,0.26l0.31,0.94l-0.04,0.76l-0.54,0.83l-0.5,4.08l0.18,3.21l-0.58,0.41l0.34,1.11l-0.35,1.74l-0.39,0.54l0.76,1.23l-0.25,1.87l-2.41,2.65l-0.82,1.86l-1.37,1.5l-1.24,0.67l-0.6,0.7l-0.87,-0.92l-1.18,0.14l-1.32,1.74l-0.09,1.32l-1.78,0.85l-0.78,2.25l0.28,1.58l-0.94,0.85l0.3,0.67l0.63,0.41l0.27,1.3l-0.8,0.17l-0.5,1.6l0.06,-0.93l-0.91,-1.26l-1.53,-0.55l-1.07,0.71l-0.82,1.98l-0.34,2.69l-0.53,0.82l1.22,3.58l-1.27,0.39l-0.28,0.42l-0.25,3.12l-2.66,1.2l-1.0,0.05l-0.76,-1.06l-1.51,-1.1l-2.34,-0.73l-1.17,-1.92l-0.31,-1.14l-0.42,-0.33l-0.73,0.13l-1.84,1.17l-1.1,1.29l-0.4,1.05l-1.43,0.15l-0.87,0.61l-1.11,-1.0l-3.14,-0.59l-1.37,0.72l-0.53,1.25l-0.71,0.05l-3.04,-2.26l-1.93,-0.29l-1.77,0.56l-2.14,-0.52l-0.55,-1.54l-0.96,-0.97l-0.63,-1.38l-2.03,-0.76l-1.14,-1.01l-0.97,0.26l-1.31,0.89l-0.46,0.03l-1.79,-1.23l-0.61,0.2l-0.6,0.71l-8.53,-55.69l20.43,-4.26ZM675.61,181.34l0.53,-0.79l0.67,0.41l-0.48,0.35l-0.72,0.03ZM677.31,180.77l0.01,-0.0l0.01,-0.0l-0.02,0.0Z\", \"name\": \"Ohio\"}, \"US-OK\": {\"path\": \"M399.06,359.31l-0.05,-42.03l-0.39,-0.4l-26.69,-0.22l-25.13,-0.6l0.31,-10.23l36.7,0.74l36.0,-0.07l35.99,-0.86l35.56,-1.62l0.6,10.68l4.55,24.34l1.41,37.88l-1.2,-0.22l-0.29,-0.36l-2.13,-0.21l-0.82,-0.79l-2.11,-0.39l-1.77,-2.05l-1.23,-0.22l-2.25,-1.57l-1.5,-0.4l-0.8,0.46l-0.23,0.88l-0.82,0.24l-0.46,0.62l-2.47,-0.14l-0.47,-0.19l-0.27,-0.68l-1.05,-0.61l-2.3,1.29l-1.17,0.2l-0.19,0.56l-0.63,0.28l-2.12,-0.77l-1.7,1.18l-1.17,0.08l-0.89,0.42l-0.83,1.37l-1.48,0.06l-0.57,1.25l-1.26,-1.55l-1.7,-0.1l-0.32,-0.58l-1.21,-0.46l-0.02,-0.96l-0.44,-0.5l-1.24,-0.18l-0.73,1.38l-0.66,0.11l-0.84,-0.5l-0.97,0.07l-0.71,-1.51l-1.09,-0.35l-1.17,0.57l-0.45,1.7l-0.7,-0.08l-0.49,0.43l0.29,0.73l-0.51,1.68l-0.43,0.19l-0.55,-0.55l-0.3,-0.91l0.39,-1.65l-0.75,-0.86l-0.8,0.18l-0.49,0.76l-0.84,-0.18l-0.92,0.98l-1.07,0.13l-0.53,-1.36l-1.99,-0.19l-0.3,-1.48l-1.19,-0.53l-0.82,0.33l-2.12,2.15l-1.21,0.51l-0.97,-0.38l0.19,-1.25l-0.28,-1.13l-2.33,-0.68l-0.07,-2.18l-0.43,-0.55l-2.11,0.39l-2.52,-0.25l-0.64,0.26l-0.81,1.21l-0.95,0.06l-1.77,-1.77l-0.97,-0.12l-1.5,0.56l-2.68,-0.63l-1.86,-1.0l-1.05,0.25l-2.46,-0.3l-0.17,-2.12l-0.85,-0.87l-0.44,-1.02l-1.16,-0.41l-0.7,-0.83l-0.83,0.08l-0.44,1.64l-2.22,-0.68l-1.07,0.6l-0.96,-0.09l-3.79,-3.78l-1.12,-0.43l-0.8,0.08Z\", \"name\": \"Oklahoma\"}, \"US-WV\": {\"path\": \"M693.03,248.42l3.95,-1.54l0.35,-0.71l0.12,-2.77l1.15,-0.22l0.4,-0.61l-0.57,-2.49l-0.61,-1.24l0.49,-0.64l0.36,-2.77l0.68,-1.66l0.45,-0.39l1.24,0.55l0.41,0.71l-0.14,1.13l0.71,0.46l0.78,-0.44l0.48,-1.42l0.49,0.21l0.57,-0.2l0.2,-0.44l-0.63,-2.09l-0.75,-0.55l0.81,-0.79l-0.26,-1.71l0.74,-2.0l1.65,-0.51l0.17,-1.6l1.02,-1.42l0.43,-0.08l0.65,0.79l0.67,0.19l2.28,-1.59l1.5,-1.64l0.79,-1.83l2.45,-2.67l0.37,-2.41l-0.73,-1.0l0.71,-2.33l-0.25,-0.76l0.59,-0.58l-0.27,-3.43l0.47,-3.93l0.53,-0.8l0.08,-1.11l-0.38,-1.21l-0.39,-0.33l-0.04,-2.01l-1.57,-1.91l0.44,-0.54l0.85,-0.1l0.3,-0.33l4.03,19.34l0.47,0.31l16.6,-3.55l2.17,10.68l0.5,0.37l2.06,-2.5l0.97,-0.56l0.34,-1.03l1.63,-1.99l0.25,-1.05l0.52,-0.4l1.19,0.45l0.74,-0.32l1.32,-2.6l0.6,-0.46l-0.04,-0.85l0.42,0.59l1.81,0.52l3.2,-0.57l0.78,-0.86l0.07,-1.46l2.0,-0.74l1.02,-1.69l0.67,-0.1l3.16,1.5l1.81,-0.71l-0.45,1.02l0.56,0.92l1.27,0.42l0.09,0.96l1.13,0.43l0.09,1.2l0.33,0.42l-0.58,3.64l-9.0,-4.48l-0.64,0.24l-0.31,1.14l0.38,1.61l-0.52,1.62l0.41,2.28l-1.36,2.4l-0.42,1.76l-0.72,0.53l-0.42,1.11l-0.27,0.21l-0.61,-0.23l-0.37,0.33l-1.25,3.28l-1.84,-0.78l-0.64,0.25l-0.94,2.77l0.08,1.47l-0.73,1.14l-0.19,2.33l-0.89,2.2l-3.25,-0.36l-1.44,-1.76l-1.71,-0.24l-0.5,0.41l-0.26,2.17l0.19,1.3l-0.32,1.45l-0.49,0.45l-0.31,1.04l0.23,0.92l-1.58,2.44l-0.04,2.1l-0.52,2.0l-2.58,4.73l-0.75,3.16l0.14,0.76l1.14,0.55l-1.08,1.38l0.06,0.6l0.45,0.4l-2.16,2.13l-0.55,-0.7l-0.84,0.15l-3.12,2.53l-1.03,-0.56l-1.32,0.26l-0.44,0.91l0.45,1.17l-0.91,0.91l-0.73,-0.05l-2.27,1.0l-1.21,0.96l-2.18,-1.36l-0.73,-0.01l-0.82,1.58l-1.1,0.49l-1.22,1.46l-1.08,0.08l-1.98,-1.09l-1.31,-0.01l-0.61,-0.74l-1.19,-0.6l-0.31,-1.33l-0.89,-0.55l0.36,-0.67l-0.3,-0.81l-0.85,-0.37l-0.84,0.25l-1.33,-0.17l-1.26,-1.19l-2.06,-0.79l-0.76,-1.43l-1.58,-1.24l-0.7,-1.49l-1.0,-0.6l-0.12,-1.09l-1.38,-0.95l-2.0,-2.27l0.71,-2.03l-0.25,-1.62l-0.66,-1.46Z\", \"name\": \"West Virginia\"}, \"US-WY\": {\"path\": \"M218.53,207.02l10.1,-86.6l25.46,2.74l26.8,2.4l26.83,1.91l27.85,1.46l-3.67,87.11l-27.32,-1.41l-28.21,-1.97l-29.69,-2.63l-28.14,-3.02Z\", \"name\": \"Wyoming\"}, \"US-UT\": {\"path\": \"M178.67,180.38l41.53,5.44l-2.51,21.5l0.35,0.45l32.24,3.43l-8.33,87.15l-42.54,-4.67l-42.41,-5.77l16.08,-108.34l5.58,0.82ZM187.74,191.46l-0.3,0.04l-0.25,0.62l0.74,3.68l-0.81,0.19l-0.5,1.31l1.15,0.59l0.35,-0.84l0.37,-0.18l0.92,1.14l0.83,1.68l-0.25,1.0l0.16,1.45l-0.4,0.77l0.4,0.52l-0.05,0.56l1.58,1.84l0.02,0.59l1.13,1.92l0.71,-0.1l0.83,-1.74l0.08,2.28l0.53,0.94l0.06,1.8l0.99,0.47l1.65,-0.67l2.48,-1.77l0.37,-1.25l3.32,-1.44l0.17,-0.54l-0.52,-1.02l-0.68,-0.84l-1.36,-0.7l-1.87,-4.59l-0.87,-0.46l0.87,-0.92l1.3,0.6l1.33,-0.15l0.92,-0.83l-0.06,-1.12l-1.55,-0.5l-0.81,0.42l-1.17,-0.12l0.27,-0.76l-0.58,-0.79l-1.86,-0.22l-0.56,1.13l0.28,0.78l-0.35,0.69l0.55,2.44l-0.91,0.32l-0.34,-0.42l0.22,-1.8l-0.42,-0.69l-0.06,-1.74l-0.68,-0.6l-1.32,-0.11l-1.07,-1.55l-0.19,-0.69l0.64,-0.55l0.36,-1.29l-0.83,-1.38l-1.23,-0.28l-0.99,0.81l-2.73,0.2l-0.35,0.63l0.62,0.83l-0.28,0.43ZM199.13,204.0l0.03,0.02l0.04,0.11l-0.07,-0.13ZM199.17,204.81l0.31,0.91l-0.18,0.9l-0.39,-0.93l0.25,-0.88Z\", \"name\": \"Utah\"}, \"US-IN\": {\"path\": \"M600.86,189.63l1.43,0.87l2.1,0.14l1.52,-0.38l2.63,-1.39l2.73,-2.1l32.3,-4.83l8.81,57.45l-0.66,1.15l0.3,0.92l0.81,0.79l-0.66,1.14l0.49,0.8l1.12,0.04l-0.36,1.14l0.18,0.51l-1.81,0.29l-3.18,2.55l-0.43,0.17l-1.4,-0.81l-3.46,0.91l-0.09,0.78l1.19,3.1l-1.4,1.88l-1.18,0.49l-0.45,0.89l-0.31,2.6l-1.11,0.88l-1.06,-0.24l-0.47,0.47l-0.85,1.95l0.05,3.14l-0.39,1.0l-1.38,0.85l-0.93,-0.68l-1.24,0.01l-1.48,-0.69l-0.62,-1.84l-1.89,-0.73l-0.44,0.3l-0.04,0.5l0.83,0.68l-0.62,0.31l-0.89,-0.35l-0.36,0.29l-0.04,0.48l0.54,0.93l-1.08,0.68l0.14,2.37l-1.06,0.65l-0.0,0.83l-0.16,0.37l0.08,-0.5l-0.33,-0.51l-1.6,0.18l-1.4,-1.69l-0.5,-0.08l-1.67,1.5l-1.57,0.69l-1.07,2.89l-0.81,-1.07l-2.79,-0.77l-1.11,-0.61l-1.08,-0.18l-1.76,0.92l-0.64,-1.02l-0.58,-0.18l-0.53,0.56l0.64,1.86l-0.34,0.84l-0.28,0.09l-0.02,-1.18l-0.42,-0.4l-0.58,0.01l-1.46,0.79l-1.41,-0.84l-0.85,0.0l-0.48,0.95l0.71,1.55l-0.49,0.74l-1.15,-0.39l-0.07,-0.54l-0.53,-0.44l0.55,-0.63l-0.35,-3.09l0.96,-0.78l-0.07,-0.58l-0.44,-0.23l0.69,-0.46l0.25,-0.61l-1.17,-1.47l0.46,-1.16l0.32,0.19l1.39,-0.55l0.33,-1.8l0.55,-0.4l0.44,-0.92l-0.06,-0.83l1.52,-1.07l0.06,-0.69l-0.41,-0.93l0.57,-0.86l0.14,-1.29l0.87,-0.51l0.4,-1.91l-1.08,-2.54l0.22,-0.8l-0.16,-1.11l-0.93,-0.91l-0.61,-1.5l-1.05,-0.78l-0.04,-0.59l0.92,-1.39l-0.63,-2.25l1.27,-1.31l-6.5,-50.68Z\", \"name\": \"Indiana\"}, \"US-IL\": {\"path\": \"M540.07,225.55l0.86,-0.35l0.37,-0.67l-0.23,-2.33l-0.73,-0.93l0.15,-0.41l0.72,-0.69l2.42,-0.98l0.71,-0.65l0.63,-1.68l0.17,-2.11l1.65,-2.47l0.27,-0.94l-0.03,-1.22l-0.59,-1.95l-2.23,-1.88l-0.11,-1.77l0.67,-2.38l0.45,-0.37l4.6,-0.85l0.81,-0.41l0.82,-1.12l2.55,-1.0l1.43,-1.56l-0.01,-1.57l0.4,-1.71l1.42,-1.46l0.29,-0.74l0.33,-4.37l-0.76,-2.14l-4.02,-2.47l-0.28,-1.5l-0.48,-0.82l-3.64,-2.48l44.58,-4.64l-0.01,2.66l0.57,2.59l1.37,2.49l1.31,0.95l0.76,2.6l1.26,2.71l1.42,1.84l6.6,51.49l-1.22,1.13l-0.1,0.69l0.67,1.76l-0.84,1.09l-0.03,1.11l1.19,1.09l0.56,1.41l0.89,0.82l-0.1,1.8l1.06,2.31l-0.28,1.49l-0.87,0.56l-0.21,1.47l-0.59,0.93l0.34,1.2l-1.48,1.13l-0.23,0.41l0.28,0.7l-0.93,1.17l-0.31,1.19l-1.64,0.67l-0.63,1.67l0.15,0.8l0.97,0.83l-1.27,1.15l0.42,0.76l-0.49,0.23l-0.13,0.54l0.43,2.94l-1.15,0.19l0.08,0.45l0.92,0.78l-0.48,0.17l-0.03,0.64l0.83,0.29l0.04,0.42l-1.31,1.97l-0.25,1.19l0.59,1.22l0.7,0.64l0.37,1.08l-3.31,1.22l-1.19,0.82l-1.24,0.24l-0.77,1.01l-0.18,2.04l0.3,0.88l1.4,1.93l0.07,0.54l-0.53,1.19l-0.96,0.03l-6.3,-2.43l-1.08,-0.08l-1.57,0.64l-0.68,0.72l-1.44,2.95l0.06,0.66l-1.18,-1.2l-0.79,0.14l-0.35,0.47l0.59,1.13l-1.24,-0.79l-0.01,-0.68l-1.6,-2.21l-0.4,-1.12l-0.76,-0.37l-0.05,-0.49l0.94,-1.35l0.2,-1.03l-0.32,-1.01l-1.44,-2.02l-0.47,-3.18l-2.26,-0.99l-1.55,-2.14l-1.95,-0.82l-1.72,-1.34l-1.56,-0.14l-1.82,-0.96l-2.32,-1.78l-2.34,-2.44l-0.36,-1.95l2.37,-6.85l-0.25,-2.32l0.98,-2.06l-0.38,-0.84l-2.66,-1.45l-2.59,-0.67l-1.29,0.45l-0.86,1.45l-0.46,0.28l-0.44,-0.13l-1.3,-1.9l-0.43,-1.52l0.16,-0.87l-0.54,-0.91l-0.29,-1.65l-0.83,-1.36l-0.94,-0.9l-4.11,-2.52l-1.01,-1.64l-4.53,-3.53l-0.73,-1.9l-1.04,-1.21l-0.04,-1.6l-0.96,-1.48l-0.75,-3.54l0.1,-2.94l0.6,-1.28ZM585.52,295.52l0.05,0.05l0.04,0.04l-0.05,-0.0l-0.04,-0.09Z\", \"name\": \"Illinois\"}, \"US-AK\": {\"path\": \"M89.36,517.03l0.84,0.08l0.09,0.36l-0.3,0.32l-0.64,0.3l-0.15,-0.15l0.25,-0.4l-0.12,-0.31l0.04,-0.2ZM91.79,517.2l0.42,-0.02l0.19,-0.11l0.26,-0.56l1.74,-0.37l2.26,0.07l1.57,0.63l0.84,0.69l0.02,1.85l0.32,0.18l0.0,0.34l0.25,0.27l-0.35,0.09l-0.25,-0.16l-0.23,0.08l-0.41,-0.33l-0.29,-0.04l-0.69,0.23l-0.91,-0.21l-0.07,-0.26l-0.24,-0.17l0.27,-0.21l0.74,0.72l0.46,-0.02l0.2,-0.48l-0.28,-0.44l-0.03,-0.3l-0.31,-0.67l-0.96,-0.52l-1.05,0.27l-0.57,0.69l-1.04,0.3l-0.44,-0.3l-0.48,0.12l-0.06,0.12l-0.63,-0.14l-0.26,0.06l-0.22,0.24l0.2,-0.3l-0.1,-0.55l0.12,-0.79ZM99.83,520.19l0.3,-0.07l0.29,-0.28l-0.03,-0.55l0.31,0.2l-0.06,0.45l0.83,0.92l-0.93,-0.51l-0.44,0.41l-0.13,-0.54l-0.13,-0.04ZM100.07,520.81l0.0,0.04l-0.03,0.0l0.02,-0.04ZM102.01,520.78l0.05,-0.34l0.33,-0.2l0.01,-0.12l-0.58,-1.24l0.1,-0.2l0.59,-0.24l0.29,-0.3l0.65,-0.34l0.62,-0.01l0.41,-0.13l0.81,0.1l1.42,-0.06l0.64,0.15l0.49,0.27l0.88,0.11l0.27,0.15l0.23,-0.22l0.27,-0.05l0.39,0.09l0.2,0.21l0.26,-0.05l0.2,0.38l0.44,0.31l0.1,0.23l0.7,-0.06l0.3,-0.77l0.44,-0.61l0.47,-0.21l1.78,-0.45l0.5,0.04l0.37,0.23l1.13,-0.38l0.66,0.04l-0.11,0.41l0.43,0.51l0.42,0.26l0.62,0.06l0.42,-0.43l0.14,-0.42l-0.34,-0.29l-0.31,-0.03l0.15,-0.44l-0.15,-0.38l1.04,-1.0l0.83,-0.99l0.12,-0.08l0.34,0.17l0.38,-0.02l0.32,0.3l0.19,0.37l0.66,-0.29l-0.1,-0.57l-0.43,-0.58l-0.46,-0.24l0.15,-0.44l0.77,-0.47l0.36,0.04l0.68,-0.2l0.8,-0.08l0.58,0.18l0.45,-0.16l-0.12,-0.52l0.66,-0.6l0.4,0.06l0.26,-0.11l0.43,-0.52l0.34,-0.12l0.23,-0.46l-0.42,-0.3l-0.38,0.03l-0.33,0.15l-0.36,0.39l-0.51,-0.09l-0.5,0.27l-2.19,-0.52l-1.69,-0.24l-0.71,-0.26l-0.12,-0.2l0.17,-0.32l0.04,-0.44l-0.28,-0.56l0.45,-0.35l0.43,-0.13l0.36,0.38l0.04,0.25l-0.15,0.44l0.07,0.39l0.56,0.12l0.32,-0.15l-0.03,-0.3l0.16,-0.35l-0.05,-0.75l-0.84,-1.05l0.01,-0.7l-0.67,-0.19l-0.19,0.24l-0.06,0.48l-0.41,0.22l-0.09,0.03l-0.26,-0.56l-0.34,-0.09l-0.51,0.41l-0.02,0.26l-0.15,0.15l-0.38,-0.02l-0.48,0.27l-0.24,0.54l-0.22,1.13l-0.13,0.32l-0.19,0.05l-0.31,-0.31l0.1,-2.67l-0.23,-0.99l0.19,-0.33l0.02,-0.27l-0.16,-0.29l-0.53,-0.27l-0.46,0.26l-0.1,-0.07l-0.35,0.13l-0.01,-0.54l-0.54,-0.61l0.19,-0.22l0.08,-0.65l-0.16,-0.37l-0.55,-0.26l-1.89,-0.01l-0.58,-0.34l-1.01,-0.12l-0.16,-0.12l-0.07,-0.22l-0.23,-0.07l-1.06,0.53l-0.75,-0.16l-0.12,-0.44l0.3,0.09l0.48,-0.08l0.31,-0.44l-0.21,-0.49l0.37,-0.49l0.83,0.04l0.43,-0.16l0.12,-0.35l-0.14,-0.42l-1.11,-0.64l0.09,-0.27l0.34,-0.17l0.38,-0.44l1.12,-0.0l0.23,-0.09l0.19,-0.32l0.03,-0.95l0.22,-0.54l0.07,-1.42l0.25,-0.45l-0.08,-0.58l0.07,-0.2l0.88,-0.74l0.02,-0.1l-0.09,-0.02l0.19,-0.16l-0.31,-0.35l-0.27,0.05l-0.04,-0.25l-0.09,-0.04l0.57,-0.22l0.33,-0.25l0.51,-0.1l0.24,-0.25l0.42,-0.0l0.19,0.18l0.41,0.08l0.29,-0.08l0.44,-0.55l-0.3,-0.34l-0.39,-0.07l-0.05,-0.33l-0.27,-0.31l-0.6,0.4l-0.43,-0.07l-1.12,0.62l-1.04,0.06l-0.34,0.18l-0.48,-0.03l-0.12,0.5l0.4,0.64l-0.26,0.19l-0.29,0.45l-0.19,-0.09l-0.17,-0.27l-0.76,-0.04l-1.16,-0.25l-0.81,-0.4l-1.05,-0.59l-0.78,-0.61l-0.52,-0.69l0.01,-0.21l0.6,-0.1l-0.06,-0.4l0.1,-0.24l-0.51,-1.06l0.1,-0.78l-0.18,-0.52l0.33,-0.54l-0.4,-0.34l-0.23,0.0l-0.44,-0.69l-0.01,-0.2l0.59,-0.14l0.3,-0.37l-0.05,-0.44l-0.36,-0.26l0.72,0.04l0.29,-0.13l0.18,-0.25l0.63,0.01l0.08,0.51l0.56,0.51l0.32,0.49l-0.03,0.09l-0.79,0.11l-0.53,0.51l0.31,0.45l0.94,-0.08l0.4,0.24l0.26,-0.01l0.39,-0.22l0.29,0.03l0.08,0.07l-0.51,0.6l-0.05,0.38l0.22,0.43l0.46,0.24l1.42,0.07l0.28,-0.17l0.16,-0.35l0.19,-0.08l-0.2,-0.74l0.35,-0.35l-0.02,-0.33l-0.18,-0.25l0.15,-0.43l-0.08,-0.13l-0.52,-0.26l-0.77,-0.01l-0.34,0.1l-1.51,-1.2l-0.01,-0.53l-0.35,-0.39l-0.26,-0.12l-0.15,-0.38l0.55,0.15l0.53,-0.4l-0.17,-0.41l-0.7,-0.51l0.4,-0.45l-0.14,-0.5l0.31,-0.15l0.27,0.08l0.44,-0.1l0.45,0.27l0.75,-0.04l0.67,-0.44l-0.08,-0.48l-0.18,-0.19l-0.48,-0.03l-0.51,0.16l-0.43,-0.19l-1.02,-0.02l-0.26,0.14l-0.44,0.04l-0.36,0.29l-0.62,0.09l-0.15,0.12l-0.15,0.42l-0.13,-0.19l0.27,-0.52l0.36,-0.24l-0.1,-0.44l-0.48,-0.6l0.03,-0.1l0.37,0.1l0.4,-0.18l0.16,-0.22l0.07,-0.36l-0.22,-0.6l0.55,0.23l0.42,-0.5l-0.44,-0.59l0.38,0.32l0.94,0.37l0.2,-0.44l0.14,0.01l-0.04,-0.54l0.12,-0.36l0.48,-0.28l0.49,0.01l1.96,-0.47l0.8,-0.03l0.3,0.25l-0.01,0.44l0.19,0.27l-0.27,0.16l0.13,0.47l0.35,0.15l0.74,0.01l0.29,-0.39l-0.13,-0.45l0.08,-0.34l1.21,-0.11l0.29,-0.63l-0.31,-0.24l-0.93,-0.04l0.03,-0.08l0.41,-0.03l0.15,-0.63l0.72,-0.27l0.86,0.88l0.32,0.11l0.38,-0.28l0.08,-0.27l-0.04,-0.41l-0.18,-0.26l0.34,0.0l0.69,0.32l0.35,0.31l0.54,0.81l-0.06,0.29l-0.38,-0.09l-0.52,0.21l-0.13,0.47l0.43,0.24l1.07,0.06l0.05,0.52l0.31,0.3l0.91,0.49l1.02,0.09l0.53,-0.18l0.41,0.17l0.49,-0.0l1.61,-0.32l0.1,0.49l1.67,0.97l0.28,0.31l0.53,0.32l1.06,0.37l1.81,-0.2l0.56,-0.21l0.47,-0.49l0.2,-0.57l0.15,-0.95l0.61,-1.1l0.01,-0.29l-0.24,-0.88l0.14,-0.05l-0.03,-0.19l0.58,0.25l0.2,-0.1l0.86,0.0l0.36,-0.17l0.41,-0.47l0.07,-0.93l-0.19,-0.43l0.22,-0.03l0.11,-0.44l-0.23,-0.32l-0.73,-0.39l-0.29,0.12l-0.43,-0.04l-0.52,0.2l-0.21,-0.12l-0.29,-0.6l-0.31,-0.29l-0.51,0.0l-0.02,0.1l-0.52,-0.04l-0.43,-0.31l-0.56,-0.02l-0.32,0.1l-1.04,-0.24l-0.48,0.03l-0.33,0.16l0.04,-0.42l-0.29,-0.71l-0.21,-0.97l-0.49,-0.23l-0.55,-0.08l-0.29,0.09l-0.47,-0.64l-0.48,-0.4l-0.5,-0.25l-1.14,-1.02l-0.95,-0.24l-0.2,-0.27l-0.49,-0.27l-0.11,-0.23l-0.63,-0.01l-0.04,0.13l-0.9,-1.22l-1.86,-2.14l-0.25,-0.55l-0.0,-0.32l0.07,-0.19l0.27,0.06l0.27,-0.13l0.35,-0.76l-0.41,-1.02l0.05,-0.11l0.4,0.19l0.51,-0.05l0.41,-0.17l0.51,0.66l0.43,0.23l0.48,-0.4l-0.02,-0.33l-0.32,-0.66l-0.48,-0.41l-0.46,-0.78l-0.84,-0.88l-0.12,-0.02l-0.98,-1.16l-0.33,-0.52l-0.04,-0.3l-0.46,-0.96l0.41,0.03l0.54,0.45l0.34,0.15l0.44,-0.1l0.12,-0.17l0.2,0.03l0.06,-0.15l0.18,0.03l0.17,0.41l0.2,0.18l1.09,0.35l1.08,-0.18l1.53,0.45l0.14,0.13l-0.06,0.06l0.19,0.45l0.88,0.89l1.03,0.47l0.56,-0.36l-0.06,-0.35l-0.37,-0.64l1.48,0.48l0.36,0.26l0.11,0.4l0.61,0.16l1.2,0.07l0.48,0.24l1.49,0.99l0.18,0.45l-0.34,0.04l-0.1,0.06l-0.4,0.34l-0.16,0.3l-0.6,-0.28l-0.52,-0.06l-0.12,0.69l0.62,0.52l0.02,0.52l0.16,0.37l0.28,0.32l0.91,0.59l0.18,0.29l0.46,0.4l0.69,0.3l0.39,0.29l-0.14,0.25l0.02,0.32l0.38,0.24l0.2,-0.05l0.26,0.12l0.44,0.49l0.56,0.16l0.39,0.46l-0.08,0.39l0.24,0.31l0.41,0.19l0.41,-0.15l0.03,-0.15l1.39,-0.46l0.24,0.52l0.24,0.25l-0.25,0.06l0.01,0.5l0.38,0.29l0.43,0.02l0.5,-0.24l0.36,-0.41l-0.05,-0.98l-0.45,-0.65l0.19,0.01l0.65,1.54l0.23,0.25l1.6,0.95l0.53,-0.01l0.29,-0.27l0.34,-0.59l-0.02,-0.44l0.3,-0.38l-0.16,-0.23l-0.72,-0.38l-0.44,-0.04l-0.49,-0.92l-0.89,-0.53l-0.42,-0.12l-0.61,0.21l-0.32,-0.28l-0.0,-0.43l-0.16,-0.19l-0.23,-0.71l0.64,-0.39l0.29,-0.02l0.35,0.29l0.32,0.05l0.37,-0.41l-0.0,-0.15l-0.75,-1.21l-1.13,-0.68l-0.06,-0.29l0.18,-0.28l-0.15,-0.48l-0.43,-0.23l-0.43,0.29l-0.42,0.07l-0.25,-0.44l-0.53,-0.4l-0.31,-0.1l-0.25,-0.41l-1.35,-1.4l0.59,-1.11l0.15,-1.07l-0.1,-1.05l-0.51,-1.13l-0.29,-1.11l-0.36,-0.48l-0.85,-2.25l-1.06,-1.45l-0.08,-0.73l-0.38,-0.89l0.17,-0.17l0.91,-0.32l1.04,-1.04l1.08,1.08l1.75,1.29l0.84,0.44l1.33,0.95l1.37,0.54l1.36,0.24l1.49,-0.09l0.3,0.11l0.42,-0.05l0.4,-0.16l0.23,-0.26l0.3,-0.14l0.42,-0.5l0.56,-0.03l0.17,-0.31l1.66,0.14l0.96,-0.29l0.5,0.12l0.03,0.15l0.87,0.52l0.35,0.13l0.52,-0.01l0.77,0.56l0.91,0.33l0.1,0.2l0.28,-0.04l0.42,0.16l1.99,0.27l-0.05,0.31l0.11,0.18l-0.18,0.06l-0.15,0.66l0.44,0.21l0.04,0.83l0.28,0.36l0.44,-0.14l0.1,-0.13l0.05,-0.46l0.22,-0.51l1.1,0.62l0.73,0.1l0.29,-0.35l-0.22,-0.39l-0.74,-0.5l-0.43,-0.14l-0.07,-0.18l0.03,-0.25l0.76,-0.07l0.26,0.1l0.01,0.3l0.27,0.62l0.54,0.33l0.14,-0.17l0.45,0.24l0.16,-0.08l0.63,0.55l1.13,0.63l0.13,-0.03l0.81,0.55l0.59,0.22l1.21,0.25l1.27,0.12l1.06,-0.17l1.19,0.0l0.01,0.22l0.26,0.49l0.68,0.48l0.08,0.62l0.56,0.17l0.57,0.45l-0.61,-0.02l-0.77,-0.42l-0.42,0.03l-0.44,0.21l0.1,0.48l0.23,0.26l-0.19,0.32l0.18,0.59l0.33,0.11l0.33,-0.12l0.64,0.36l0.3,0.06l0.31,-0.08l0.23,-0.23l0.33,-0.02l0.39,0.36l0.26,0.01l0.25,0.18l0.33,0.02l0.27,-0.16l0.13,0.09l0.16,0.38l-0.54,-0.04l-0.29,0.34l0.21,0.4l0.2,0.11l0.07,0.35l0.89,0.58l-0.04,0.13l0.18,0.3l0.49,0.21l0.94,-0.04l0.96,0.68l0.58,0.26l0.32,0.03l0.37,0.42l0.23,0.1l0.1,0.31l0.34,0.26l0.21,0.38l0.34,0.08l0.26,-0.12l0.25,0.23l-0.55,0.05l-0.29,0.34l-0.41,0.04l-0.18,0.63l0.35,0.33l1.4,0.72l-0.08,0.69l1.48,0.96l0.49,0.67l0.27,0.15l0.49,-0.16l1.05,0.48l0.24,-0.05l0.38,0.32l0.16,0.58l1.1,0.42l0.72,0.06l0.21,0.19l0.85,0.38l0.32,0.34l0.31,0.09l0.59,0.53l0.2,0.37l0.73,0.47l0.25,0.29l0.1,0.53l0.48,0.29l0.55,0.03l0.31,0.44l0.56,0.33l-0.11,0.34l0.39,0.41l1.66,1.19l0.76,0.36l0.16,-0.03l1.78,1.0l0.42,0.4l0.69,0.34l0.47,0.65l0.08,-0.08l-0.02,0.25l0.22,0.06l0.5,0.55l0.02,0.21l0.5,0.23l0.54,0.42l1.19,0.58l0.8,0.03l0.63,0.31l0.03,0.31l0.43,0.12l0.33,-0.2l0.19,-0.0l0.43,0.12l1.02,0.51l0.05,0.25l0.41,0.27l0.22,-0.19l0.58,0.53l0.31,0.09l0.53,0.55l-0.01,0.24l0.49,0.42l0.02,0.24l0.27,0.43l0.55,0.34l0.18,0.4l0.42,0.15l0.58,0.51l0.56,0.96l0.35,0.26l0.53,0.01l0.15,0.11l-23.69,51.51l0.09,0.46l1.53,1.4l0.52,0.02l0.19,-0.15l1.17,1.29l0.41,0.12l1.37,-0.4l1.79,0.68l-0.86,0.96l-0.08,0.38l0.35,1.01l0.91,0.92l-0.08,0.65l0.1,0.44l2.43,4.76l-0.2,1.48l-0.29,0.38l0.19,0.62l0.58,0.12l0.83,-0.25l0.54,-0.07l0.07,0.08l0.03,0.1l-0.66,0.3l-0.33,0.34l0.29,0.54l0.35,-0.0l0.37,-0.18l0.25,0.12l0.02,0.21l0.44,0.11l0.09,0.11l0.26,1.19l-0.17,0.03l-0.1,0.51l0.24,0.32l0.94,0.22l0.04,0.16l-0.27,0.18l0.01,0.12l0.21,0.32l0.21,0.09l-0.05,0.37l-0.24,-0.02l-0.1,-0.46l-0.35,-0.31l-0.11,0.06l-0.28,-0.47l-0.47,-0.03l-0.26,0.35l-0.45,0.01l-0.08,0.13l-0.26,-0.63l-0.14,0.01l-0.35,-0.41l-0.47,-0.12l-0.89,-1.43l0.11,-0.01l0.32,-0.49l-0.08,-0.26l-0.34,-0.28l-0.51,0.01l-0.47,-0.93l-0.05,-0.15l0.12,-0.53l-0.08,-0.41l-0.52,-1.06l-0.46,-0.7l-0.19,-0.07l0.1,-0.61l-0.29,-0.28l-0.72,-0.14l-1.24,-1.44l-0.27,-0.47l-0.01,-0.21l-0.32,-0.23l-0.24,-0.34l-0.28,-0.11l-0.49,-0.63l0.39,-0.11l0.12,-0.23l0.05,0.05l0.59,-0.3l-0.02,0.13l-0.16,0.06l-0.16,0.55l0.3,0.41l0.38,0.07l0.43,-0.3l0.25,-1.03l0.15,-0.22l0.42,0.2l0.36,0.46l0.36,0.04l0.35,-0.35l-0.47,-0.83l-0.69,-0.39l-0.27,-0.91l-0.35,-0.63l-0.4,-0.17l-0.67,0.44l-0.39,0.06l-0.79,0.37l-1.9,-0.05l-1.0,-0.5l-0.45,-0.34l-1.46,-1.5l0.23,-0.14l0.21,-0.32l0.16,-0.74l-0.43,-0.94l-0.52,-0.09l-0.33,0.19l-0.12,0.52l-0.6,-0.04l-0.85,-0.89l-2.81,-1.97l-1.68,-0.48l-1.62,-0.65l-1.13,-0.19l-0.1,-0.53l-0.27,-0.5l0.13,-0.25l-0.02,-0.26l-0.22,-0.25l-0.8,-0.28l-0.36,-0.35l-0.17,-0.01l-0.13,-0.55l-0.2,-0.34l-0.2,-0.12l0.7,-0.5l0.09,-0.27l-0.09,-0.08l0.21,-0.27l0.23,-0.09l0.38,0.08l0.38,-0.17l0.18,-0.32l-0.03,-0.34l-0.35,-0.22l-0.55,-0.07l-0.81,0.27l-0.24,0.2l-0.57,0.02l-0.56,0.35l-0.61,0.15l-0.2,-0.13l-0.19,-0.59l-0.58,-0.63l0.77,-0.37l0.19,-0.38l-0.32,-0.45l-0.53,-0.01l-0.15,-0.48l-0.19,-0.17l0.09,-0.49l-0.16,-0.25l0.04,-0.22l-0.31,-0.55l-0.43,-0.22l-0.53,0.17l-0.07,-0.2l-0.27,-0.03l-0.09,-0.14l0.22,-0.56l0.26,0.03l0.08,-0.09l0.65,0.37l0.38,0.07l0.42,-0.49l-0.14,-0.42l-0.27,-0.26l-1.05,-0.52l-1.54,0.27l-0.1,-0.21l-0.41,-0.3l-0.42,-0.01l-0.08,-0.23l-0.47,0.02l-0.21,-0.16l0.21,-0.26l-0.05,-0.39l0.14,-0.4l-0.28,-0.27l-0.25,-0.05l0.21,-0.77l-0.33,-0.28l-0.29,0.02l-1.36,0.57l0.02,-0.11l-0.34,-0.35l-1.19,-0.19l-0.14,0.25l-0.55,0.26l0.08,0.49l0.21,0.14l-0.01,0.1l-0.83,-0.27l-0.63,-0.03l-0.23,0.49l-0.51,0.38l0.12,0.52l0.31,0.16l0.46,-0.02l-0.05,0.11l-0.98,0.16l-0.3,0.14l-0.16,0.16l-0.05,0.46l0.37,0.28l0.83,-0.12l0.12,0.14l-0.04,0.25l0.31,0.21l-0.27,0.12l-0.15,0.24l-0.51,-0.02l-0.23,0.34l-0.3,0.12l0.05,0.54l-0.3,0.32l-0.12,-0.14l-0.66,0.24l-0.32,-0.27l-0.44,-0.13l-0.32,-0.39l0.11,-0.5l-0.38,-0.29l-0.64,0.04l0.13,-0.4l-0.05,-0.34l-0.23,-0.26l-0.26,-0.07l-0.4,0.16l-0.47,0.73l-0.25,-0.01l-0.23,-0.49l-0.46,-0.07l-0.37,0.4l-0.4,-0.06l-0.16,0.33l-0.29,-0.31l-0.42,-0.03l-0.26,0.25l-0.01,0.21l-0.31,-0.08l-0.11,-0.32l-0.12,-0.03l-0.37,0.06l-0.72,0.4l-0.01,-0.27l-0.13,-0.08l-0.8,-0.04l-0.38,0.2l-0.0,0.45l-0.09,0.05l-1.16,0.08l-0.3,0.13l-0.87,-0.77l-0.22,-0.05l-0.29,0.29l-0.4,-0.28l-1.02,-0.03l0.03,-0.13l-0.35,-0.39l-0.01,-0.13l0.45,0.02l0.16,-0.37l0.53,0.01l0.43,0.3l0.3,0.45l0.49,-0.04l0.2,-0.43l0.23,0.09l0.44,-0.04l0.48,-0.17l0.06,-0.15l0.45,-0.23l0.46,-0.08l0.32,-0.52l-0.21,-0.37l-0.49,-0.19l-1.84,0.04l-0.57,-0.71l-0.07,-0.28l1.28,-0.98l1.62,-0.44l0.37,-0.26l0.33,-0.45l0.46,-0.1l0.65,-0.89l0.14,-1.04l0.36,-0.03l0.74,0.3l1.54,-0.17l1.4,0.03l0.01,0.5l0.23,0.42l0.56,0.48l1.06,0.16l0.14,0.1l0.28,0.41l0.4,0.26l1.19,1.07l0.2,0.34l0.25,0.13l0.5,-0.37l0.0,-0.44l-0.13,-0.39l-0.42,-0.46l-0.43,-0.13l-0.32,-0.52l-0.43,-0.35l-0.69,-1.19l0.45,-0.11l0.44,-0.3l0.35,0.02l0.33,-0.17l1.56,0.33l0.37,-0.06l0.15,-0.62l-0.09,-0.11l-0.67,-0.46l-0.84,-0.3l-0.61,-0.04l-0.74,0.14l-0.37,0.19l-0.29,0.35l-0.76,-0.52l-0.11,-0.24l-0.42,-0.02l-0.16,-0.12l0.14,-0.2l-0.17,-0.67l-0.09,-0.02l-1.07,0.27l-0.85,-0.19l-0.49,0.0l-0.85,0.41l-0.65,-0.15l-0.6,-0.29l-1.18,0.04l-0.71,0.35l-0.19,0.5l-0.35,-0.15l-0.65,0.04l-0.5,0.24l-0.62,0.03l-0.54,0.15l-0.41,0.33l-0.12,0.36l-0.49,0.22l-0.59,-0.02l-0.4,-0.27l-0.26,-0.68l-0.43,-0.32l-0.3,-0.11l-0.42,0.02l-0.3,0.28l0.16,0.51l0.31,0.08l0.01,0.37l0.37,0.61l0.21,0.72l-0.38,0.08l-0.35,0.26l-0.33,-0.06l-0.56,-0.39l-0.98,-0.37l-0.58,0.21l0.02,0.44l-0.07,-0.38l-0.32,-0.34l-0.42,0.19l-0.23,0.4l-0.2,-0.38l-0.81,0.14l-0.08,0.05l-0.02,0.41l-0.37,-0.32l-0.33,-0.04l-0.36,0.28l0.13,0.39l-1.49,-0.27l-0.16,0.49l-0.25,0.14l-0.28,0.36l-0.51,0.04l-0.02,0.17l-0.2,0.09l0.03,0.42l-0.16,0.27l-0.01,0.39l0.33,0.34l0.59,-0.05l0.39,0.38l0.56,0.31l0.08,0.49l0.23,0.34l0.3,0.19l0.03,0.3l-0.64,0.54l-0.5,-0.05l-0.44,0.18l-0.88,-0.46l-0.37,0.02l-0.48,0.41l-0.2,-0.12l-0.45,-0.01l-0.34,0.59l-0.75,-0.12l-0.4,0.05l-0.27,0.3l-0.1,-0.02l0.07,0.06l-0.11,0.01l0.0,0.1l-0.42,-0.28l-0.36,0.33l-0.19,-0.1l-0.32,0.19l-0.3,-0.11l-0.37,0.07l-0.53,-0.44l-0.45,-0.15l-0.9,0.53l-0.18,-0.15l-0.71,-0.02l-0.45,0.28l-0.15,-0.37l-0.41,-0.28l-0.42,0.1l-0.43,0.49l-0.37,-0.15l-0.28,0.31l-0.47,-0.08l-0.4,-0.43l-0.4,0.07l-0.3,0.24l-0.14,-0.11l-0.43,-0.05l-0.14,0.08l-1.45,-0.04l-0.31,0.12l-0.22,0.28l0.24,0.95l-0.31,-0.03l-0.15,0.18l-0.69,-0.24l-0.41,-0.28l-0.26,0.05l-0.26,0.26l-0.2,-0.24l-0.49,0.22l-0.65,0.09l-0.32,-0.22l-0.27,0.2l-0.19,-0.65l-0.39,-0.22l-0.43,0.08l-0.28,0.31l-0.44,0.09l-0.26,-0.07l-0.14,0.34l-0.06,-0.31l-0.26,-0.25l-0.54,-0.14l-1.29,-0.05l-0.62,0.31l-0.42,-0.34l-0.51,-0.04l-0.84,0.27l-0.73,0.11l-0.16,0.12l-0.11,0.56l-0.26,-0.07l-0.44,0.3l-0.03,0.21l-0.23,0.15l-0.26,-0.25l-0.37,-0.03l-0.36,0.17l-0.6,-0.33l-0.87,-0.22l-0.41,-0.18l-0.09,-0.37l-0.55,-0.15l-0.25,0.15l-0.71,-0.67l-0.41,0.02l-0.78,-0.24l-0.4,0.21ZM111.25,502.71l-0.44,0.21l-0.03,-0.02l0.24,-0.26l0.23,0.07ZM128.45,468.26l-0.1,0.14l-0.06,0.02l0.02,-0.15l0.14,-0.02ZM191.55,470.09l-0.0,0.04l-0.02,-0.04l0.03,-0.01ZM191.85,541.2l-0.08,-0.21l0.06,-0.51l0.25,-0.06l0.08,0.39l-0.31,0.39ZM165.84,518.29l-0.19,0.37l-0.34,0.04l-0.07,0.31l-0.27,-0.07l-0.45,0.06l-0.04,-0.09l0.46,-0.29l0.06,-0.15l0.84,-0.19ZM162.12,521.34l0.09,0.0l-0.06,0.02l-0.02,-0.03ZM162.26,521.34l0.08,-0.02l0.01,0.04l-0.04,0.04l-0.05,-0.05ZM141.64,514.73l0.19,0.06l0.26,0.22l-0.46,0.03l-0.07,-0.12l0.08,-0.19ZM132.07,521.13l-0.0,0.0l0.0,-0.0l0.0,0.0ZM132.06,520.84l-0.02,-0.07l0.06,-0.01l-0.03,0.08ZM109.91,522.38l0.07,-0.02l0.05,0.12l-0.03,0.01l-0.09,-0.11ZM107.83,523.67l0.01,0.02l-0.02,0.0l0.0,-0.02l0.01,-0.01ZM136.02,515.64l-0.01,-0.04l0.07,0.01l-0.06,0.03ZM199.71,549.76l0.43,-0.06l0.87,0.3l0.36,-0.05l0.76,-0.54l0.39,-0.87l0.67,-0.03l0.47,-0.34l0.17,-0.49l0.96,0.19l1.89,-0.14l0.49,0.7l0.06,0.43l0.38,0.59l-0.1,0.26l-0.29,0.17l-0.1,0.55l0.11,0.16l-0.11,0.33l0.13,0.53l0.17,0.24l0.69,0.46l0.02,0.37l0.3,0.56l0.35,0.24l0.08,0.34l-0.15,0.26l0.26,1.28l1.33,1.5l0.24,0.78l-0.64,-0.19l-0.38,0.04l-0.33,0.37l-0.51,0.26l-0.01,0.29l-0.38,0.15l-0.21,0.29l-0.52,-0.98l-0.84,-0.64l0.11,-0.44l-0.27,-1.06l0.14,-0.11l0.26,-1.09l-0.26,-0.26l0.04,-0.09l-0.12,-0.01l0.04,-0.06l-0.09,0.05l-0.1,-0.1l-0.04,0.1l-0.12,-0.01l-0.03,-0.07l0.24,-0.92l0.1,-1.07l-0.15,-1.05l0.51,-0.94l0.02,-0.37l-0.66,-0.25l-0.5,0.69l-0.24,-0.13l-0.45,0.11l0.01,0.55l-0.32,0.35l0.3,1.04l-0.34,0.85l0.13,1.32l-0.11,0.36l0.04,0.39l-0.27,0.34l0.03,1.86l-0.28,0.29l-0.27,-0.31l0.02,-1.36l-0.28,-0.43l-0.53,0.1l-0.08,0.1l-0.88,-0.14l0.22,-0.05l0.2,-0.25l0.2,-0.91l-0.12,-0.1l-0.13,-1.06l0.88,0.13l0.45,-0.45l-0.11,-0.33l-0.74,-0.45l-0.23,0.1l0.0,-0.84l-0.33,-0.34l-0.31,-0.01l-0.29,0.56l-0.24,0.06l-0.27,0.41l0.12,0.13l-0.5,-0.23l0.24,-0.5l-0.28,-0.54l-0.29,-0.02l-0.18,-0.5l-0.47,-0.15l-0.19,0.31l-0.22,-0.47ZM201.64,551.89l0.21,0.2l-0.19,0.19l-0.03,-0.38ZM210.83,558.1l0.42,0.83l-0.23,0.38l0.09,0.66l0.47,1.27l0.06,1.07l0.15,0.48l-0.33,-0.38l-1.31,-0.73l-0.26,-0.05l0.19,-0.2l-0.17,-0.39l0.14,-0.1l0.31,-0.63l-0.47,-0.31l-0.27,0.01l-0.75,0.68l-0.11,-0.36l0.09,-0.18l-0.03,-0.41l0.26,-0.33l0.36,-0.19l0.16,-0.56l0.43,-0.42l0.36,0.09l0.44,-0.23ZM211.88,563.05l1.25,5.46l-0.54,0.45l0.03,0.64l0.81,0.55l-0.47,0.67l0.05,0.52l0.58,0.54l-0.08,0.3l0.06,0.48l-0.14,0.55l0.15,0.3l0.2,0.13l0.9,0.26l1.46,1.84l1.18,0.8l0.34,0.76l0.55,0.42l-0.01,0.53l0.1,0.24l0.78,0.58l0.49,0.11l0.03,0.16l-0.16,0.69l-0.68,0.46l-0.31,0.4l-0.04,0.78l-0.31,0.67l0.11,0.99l-0.15,0.54l0.03,0.33l-0.4,0.17l-1.34,1.4l-0.41,0.31l-0.48,0.16l-0.2,-0.13l-0.28,0.01l0.12,-0.5l-0.16,-0.42l-0.64,0.07l-0.08,0.17l-0.1,-0.51l0.24,-0.03l0.12,0.14l0.5,0.14l1.27,-0.81l0.75,-0.65l-0.23,-0.63l-0.48,0.07l0.01,-0.13l-0.37,-0.36l-0.54,0.12l0.59,-1.72l0.0,-0.38l0.15,-0.3l-0.06,-0.43l0.09,-0.51l-0.36,-0.24l-0.06,-0.35l-0.27,-0.49l0.49,-0.15l0.35,-0.35l0.18,-0.48l-0.43,-0.27l-0.43,0.08l-0.61,0.31l-0.45,0.04l-0.55,-0.29l-1.43,0.28l-0.59,-0.05l0.17,-0.09l0.2,-0.36l0.21,-0.85l0.32,0.02l0.81,0.41l0.31,0.03l0.71,-0.34l-0.07,-0.49l-0.33,-0.19l-0.4,0.02l-0.88,-0.43l0.03,-0.84l-0.23,-0.29l-0.46,-0.26l0.02,-0.43l-0.43,-0.61l0.27,-0.3l-0.16,-0.68l-0.35,-0.03l0.1,-0.07l0.01,-0.21l0.42,-0.17l0.22,-0.62l-0.38,-0.26l-0.67,0.18l-0.27,-0.29l-0.2,-0.32l-0.06,-0.35l0.33,-0.21l0.18,-1.04l-0.39,-0.3l-0.47,0.16l-0.17,-0.08l-0.29,-0.36l0.13,-0.2l-0.14,-0.35l-0.45,-0.27l1.08,-0.08l0.35,-0.42l-0.28,-0.52l-0.49,0.08l-0.44,-0.14l0.18,-0.32l-0.03,-0.32l-0.51,-0.26l0.04,-0.13l0.64,0.01l0.41,0.72l0.28,0.23l0.31,0.02l0.28,-0.15l0.04,-0.52l-0.24,-0.23l-0.1,-0.4l-0.37,-0.63l-0.78,-0.91l0.12,-0.39l1.23,0.83l0.52,-0.45ZM214.19,585.45l-0.17,0.68l-0.05,-0.01l0.09,-0.42l0.13,-0.25ZM215.44,583.76l-0.46,0.24l-0.25,-0.22l-0.63,0.14l0.05,-0.14l0.52,-0.28l0.76,0.25ZM211.63,577.78l-0.08,0.43l0.26,0.27l-0.46,0.4l-0.51,-0.23l-0.26,0.45l0.06,0.32l-0.15,-0.2l0.08,-0.67l0.25,-0.15l0.49,-0.04l0.32,-0.57ZM209.08,567.17l-0.25,-0.24l0.08,-0.14l0.49,0.2l-0.32,0.18ZM138.39,458.34l-0.47,-0.44l0.06,-0.45l0.41,0.27l0.0,0.62ZM108.63,500.59l-0.13,0.01l0.09,-0.03l0.04,0.02ZM211.75,580.86l0.58,-0.24l-0.2,0.44l0.02,0.52l-0.22,-0.23l-0.18,-0.5ZM212.61,580.43l0.18,-0.49l-0.1,-0.18l0.52,-0.05l0.31,-0.26l0.18,-0.36l0.14,-0.03l0.14,-0.52l0.57,-0.03l0.29,1.05l0.12,1.09l-0.15,0.19l0.03,0.12l-0.16,0.04l-0.27,0.73l-0.28,0.21l-0.2,-0.36l0.13,-1.47l-0.39,-0.42l-0.41,0.19l-0.18,0.46l-0.46,0.07ZM211.52,574.36l0.23,0.31l0.37,0.12l0.01,0.48l-0.14,0.07l-0.12,-0.08l-0.4,-0.44l-0.11,-0.22l0.15,-0.24ZM209.53,575.0l0.17,-0.21l0.28,-0.04l-0.06,0.38l0.09,0.09l0.27,0.14l0.34,0.0l0.41,0.28l0.04,0.12l-0.35,0.14l0.09,0.38l-0.06,0.17l-0.28,0.08l0.14,-0.47l-0.34,-0.41l-0.06,-0.25l-0.69,-0.39ZM210.36,574.41l0.1,-0.07l0.07,0.06l-0.0,0.01l-0.16,-0.0ZM209.54,571.91l0.03,-0.1l0.32,-0.15l0.14,-0.29l-0.04,-0.37l0.05,-0.1l0.34,1.01l-0.09,-0.09l-0.52,-0.06l-0.15,0.21l-0.08,-0.04ZM206.97,580.16l0.1,-0.52l-0.42,-0.36l0.1,-0.03l-0.05,-0.5l-0.28,-0.2l0.14,-0.17l0.28,-0.1l0.36,0.03l0.21,-0.67l-0.39,-0.23l-1.18,-0.03l-0.2,-0.17l0.19,-0.17l0.46,-0.05l0.67,-0.52l0.19,-0.54l-0.08,-0.32l-0.26,-0.01l0.23,-0.63l0.14,0.22l0.53,0.22l0.24,0.31l0.4,0.27l0.42,1.0l0.12,0.56l-0.14,0.62l-0.17,-0.03l-0.11,0.19l-0.32,0.19l0.02,0.34l-0.75,0.25l-0.08,0.43l0.07,0.45l0.56,-0.01l-0.02,0.13l0.38,0.45l0.22,-0.01l0.23,0.23l0.25,-0.06l0.21,0.38l-0.39,-0.07l-0.32,0.43l-0.06,0.32l0.22,0.37l0.41,0.04l0.21,0.09l-0.2,-0.03l-0.41,0.47l-0.47,0.15l0.11,0.7l0.38,0.27l-0.13,0.2l0.18,0.53l-0.2,0.06l-0.06,0.23l-0.22,-0.08l0.18,-0.35l-0.4,-1.09l0.11,-0.08l0.05,-0.73l-0.28,-0.13l-0.15,-0.32l0.01,-0.81l-0.21,-0.78l-0.46,-0.01l-0.11,0.08l-0.05,-0.39ZM207.26,574.01l-0.02,-0.27l-0.21,-0.27l0.29,-0.14l0.03,0.3l0.15,0.15l-0.04,0.21l-0.2,0.0ZM206.9,573.41l-0.43,-0.14l-0.38,-0.35l0.21,-0.11l0.28,0.14l0.04,0.28l0.27,0.18ZM208.72,573.09l0.26,-0.17l0.43,0.23l0.25,-0.0l-0.15,0.15l-0.09,0.37l-0.14,0.04l-0.23,-0.02l-0.33,-0.6ZM206.49,567.38l1.0,0.59l0.81,0.7l0.06,0.4l-0.46,0.04l-0.19,0.76l0.03,0.31l0.19,0.26l-0.17,0.31l0.43,0.76l-0.15,0.1l-0.85,-0.57l-0.44,0.12l-0.01,0.16l-0.22,-0.06l0.24,-0.51l-0.06,-0.27l0.08,0.03l0.08,-0.27l-0.06,-0.29l0.42,-0.7l0.08,-0.44l-0.28,-0.43l0.06,-0.22l-0.32,-0.31l-0.25,-0.5ZM208.6,569.24l0.34,0.07l0.2,-0.33l0.2,0.07l0.2,0.44l-0.0,0.19l-0.3,0.2l-0.13,0.86l-0.14,-0.44l-0.01,-0.6l-0.07,-0.17l-0.2,-0.03l-0.09,-0.25ZM209.57,569.66l0.0,-0.0l0.03,-0.02l-0.04,0.02ZM204.29,565.52l0.44,-0.15l-0.03,-0.36l0.29,-0.2l0.29,0.26l0.51,-0.3l-0.08,0.47l-0.15,0.23l-0.33,-0.04l-0.36,0.3l-0.27,-0.06l-0.16,0.09l0.02,0.12l-0.36,0.07l0.19,-0.44ZM206.36,564.27l-0.49,0.31l-0.02,-0.59l-0.46,-0.14l-0.02,-0.1l0.53,-0.05l0.24,-0.65l-0.35,-0.23l-0.51,-0.03l-0.1,-0.28l0.09,-0.84l0.2,-0.34l0.16,-0.72l0.07,-1.03l0.34,-0.33l0.69,0.17l0.26,0.31l-0.04,0.27l-0.16,0.12l0.03,0.24l-0.13,0.05l-0.05,0.65l-0.22,0.57l0.02,0.09l0.33,0.11l0.23,1.01l-0.15,0.27l0.43,0.45l-0.08,0.23l-0.57,-0.12l-0.09,0.19l-0.15,0.04l-0.01,0.39ZM206.15,574.28l-0.13,-0.03l0.0,-0.02l0.15,-0.04l-0.02,0.09ZM205.18,574.32l-0.02,0.0l0.01,-0.01l0.01,0.0ZM204.96,570.25l-0.05,-0.24l0.09,0.22l-0.04,0.01ZM205.25,569.02l-0.25,0.19l-0.3,-0.19l-0.18,-0.37l-0.42,-0.07l0.04,-0.08l0.41,0.09l0.15,-0.2l0.31,0.17l0.28,-0.13l0.03,0.52l-0.07,0.07ZM198.99,558.2l0.09,-0.07l0.23,0.49l-0.21,-0.07l-0.11,-0.35ZM199.36,558.71l0.38,0.44l0.56,-0.45l-0.44,-1.09l0.59,0.02l0.03,-0.77l0.24,0.32l0.51,0.01l0.2,-0.29l0.29,-0.06l0.19,0.34l0.24,0.12l0.18,0.27l-0.28,0.14l-0.69,-0.17l-0.13,0.26l-0.17,-0.1l-0.57,0.26l0.08,0.42l0.27,0.54l0.56,0.48l0.25,0.5l0.39,0.36l-0.12,0.15l0.09,0.44l-0.94,-1.32l-0.28,-0.2l-0.61,0.35l0.06,0.34l-0.2,0.14l0.2,0.7l0.21,0.07l-0.14,0.51l0.2,0.13l0.05,0.18l-0.28,0.06l-0.12,-0.56l-0.37,-0.57l0.25,-0.15l-0.16,-0.49l-0.21,-0.17l-0.02,-0.33l-0.28,-0.49l-0.01,-0.31ZM202.27,558.92l0.38,-0.28l0.43,-0.1l0.76,0.39l0.05,0.17l0.43,0.38l-0.11,0.18l-0.41,-0.45l-0.58,-0.11l-0.2,0.41l0.19,0.59l-0.97,-1.19ZM202.11,560.96l0.33,0.1l0.14,0.21l0.26,0.09l0.85,-0.01l-0.23,1.25l-0.31,-0.14l-1.03,-1.5ZM201.29,562.69l0.18,0.07l0.33,-0.09l0.0,0.25l0.48,0.21l0.22,0.28l-0.11,0.08l0.12,0.52l-0.05,0.29l0.23,0.34l-0.06,0.8l0.13,0.32l-0.1,0.03l-0.14,0.56l-0.14,0.99l0.02,0.73l-0.25,0.74l-0.22,-0.02l-0.19,0.34l-0.01,0.5l-0.44,1.06l-0.2,-0.86l-0.08,-0.92l0.3,-0.02l0.63,-0.49l-0.06,-0.73l-0.22,-0.05l0.02,-0.45l-0.19,-0.26l-0.25,-0.01l-0.16,-0.59l-0.47,-0.03l0.24,-0.17l0.01,-0.27l0.65,-0.05l0.22,-0.32l-0.13,-0.51l-0.53,-0.24l0.57,-0.27l-0.34,-1.16l-0.33,-0.12l0.28,-0.19l0.04,-0.3ZM199.27,560.14l0.0,0.0l-0.01,0.0l0.0,-0.0ZM199.1,564.31l0.25,-0.07l0.1,-0.06l-0.12,0.15l-0.23,-0.02ZM199.63,563.32l0.06,-0.2l-0.05,-0.13l0.09,0.13l-0.1,0.2ZM162.15,525.49l0.25,-0.21l0.11,-0.0l-0.2,0.31l-0.16,-0.1ZM136.7,524.68l0.22,0.25l0.59,-0.1l0.04,-0.44l0.61,0.38l0.29,-0.23l0.18,-0.67l0.1,-0.05l0.25,0.13l0.16,-0.06l-0.14,0.5l0.39,0.72l-0.5,0.38l-0.19,-0.72l-0.36,-0.02l-0.69,0.57l-0.12,-0.24l-0.46,0.06l-0.15,0.16l-0.22,-0.52l-0.13,-0.04l0.04,-0.14l0.07,0.07ZM139.88,525.13l-0.03,-0.01l0.02,-0.02l0.01,0.03ZM127.78,528.13l0.49,-0.13l0.09,0.05l-0.34,0.29l-0.18,0.01l-0.06,-0.22ZM128.01,526.82l0.09,-0.93l-0.34,-0.41l0.27,-0.06l0.19,-0.29l0.22,-0.02l0.24,-0.25l0.44,0.22l0.16,-0.11l0.5,0.1l0.1,-0.23l0.15,-0.03l0.38,0.09l0.25,0.25l-0.43,0.12l0.02,0.5l0.44,0.31l-0.25,0.64l0.13,1.11l0.36,0.59l0.43,0.15l-0.37,0.07l-0.19,0.39l-0.11,-0.05l0.03,-0.41l-0.23,-0.36l-0.69,-0.05l-0.43,-0.59l-0.47,-0.4l-0.65,-0.34l-0.26,-0.01ZM131.4,528.57l0.28,-0.39l-0.19,-0.6l0.07,-0.55l0.15,-0.28l0.3,0.13l0.31,-0.27l0.44,0.14l0.52,-0.02l0.3,-0.22l0.26,0.17l0.23,-0.03l0.19,0.33l0.66,-0.29l0.18,-0.29l0.28,0.22l-0.13,0.25l-0.0,0.39l0.26,0.35l0.46,-0.02l0.28,-0.39l0.28,0.18l0.44,-0.16l0.31,0.17l0.08,-0.05l-0.05,0.23l-0.73,0.21l-0.21,0.41l0.22,0.27l-0.07,0.65l0.3,0.23l0.29,0.05l-0.5,0.18l-0.19,-0.24l-0.3,-0.08l-0.09,-0.22l-0.26,-0.17l-0.13,-0.32l-0.96,-0.67l-0.23,0.18l-0.65,0.18l-0.19,0.27l0.12,0.28l-0.38,-0.39l-0.44,0.12l-0.19,0.46l-0.91,-0.26l-0.07,0.08l-0.35,-0.23ZM134.19,529.01l0.07,-0.02l0.09,0.03l-0.15,-0.01l-0.01,0.0ZM134.4,529.04l0.27,0.1l0.23,0.58l-0.25,-0.11l0.04,-0.1l-0.29,-0.47ZM135.83,526.14l0.09,-0.06l0.01,0.01l-0.11,0.04ZM132.89,525.47l-0.57,-0.58l0.11,-0.17l0.27,-0.08l0.34,0.07l0.08,0.37l-0.22,0.39ZM98.14,450.76l0.34,-0.44l0.56,-0.16l0.06,0.49l-0.13,0.02l0.1,0.29l0.7,0.54l0.29,0.6l0.36,0.4l-0.66,-0.36l-1.21,-0.26l-0.45,-0.8l0.04,-0.32ZM100.81,452.78l1.01,0.2l0.26,0.2l0.38,0.11l0.3,0.33l0.23,0.8l-0.26,0.19l-0.26,0.4l0.43,0.51l0.28,0.71l0.39,0.33l-0.09,0.31l0.05,0.32l0.21,0.31l0.5,0.32l0.0,0.35l-0.82,-0.26l-0.09,0.09l-0.51,-0.1l-0.33,0.07l-0.08,-0.93l-0.57,-1.1l0.12,-0.48l-0.3,-0.98l-0.39,-0.84l-0.28,-0.35l-0.01,-0.23l-0.17,-0.28ZM104.84,458.76l0.28,0.01l0.41,0.53l-0.25,0.05l-0.44,-0.59ZM96.98,478.79l0.06,-0.22l1.37,1.26l0.38,-0.0l0.32,-0.21l0.21,0.06l0.2,0.25l0.72,-0.01l-0.01,0.32l0.69,0.19l0.2,0.27l-0.05,0.32l0.09,0.16l0.27,0.29l0.49,0.19l0.07,0.2l-0.23,0.33l-0.32,0.22l-0.42,1.13l-0.7,-0.22l-0.36,-0.42l-0.19,0.11l-0.26,-0.08l-0.29,-0.35l-0.42,-0.13l-0.26,-0.41l-0.51,-0.41l-0.61,-1.56l0.07,-0.19l-0.47,-0.5l0.04,-0.31l-0.09,-0.3ZM97.68,522.17l0.05,-0.07l0.04,-0.11l0.07,0.18l-0.15,-0.01ZM98.03,522.39l0.04,0.02l-0.0,0.03l-0.03,-0.05ZM80.23,514.88l0.08,-0.15l0.69,0.24l0.38,-0.02l1.55,-0.69l0.18,0.0l0.16,0.37l0.44,0.39l0.27,0.08l0.4,-0.16l0.54,0.24l0.6,-0.01l0.53,0.26l0.44,0.41l0.03,0.72l-0.26,0.4l-0.13,0.44l-0.31,0.06l-0.22,0.21l-0.27,0.01l-0.3,-0.08l-0.46,-0.58l-1.38,-0.93l-0.45,-0.11l-0.76,0.03l-0.42,0.3l-0.21,0.03l-0.91,-0.42l-0.33,-0.34l0.14,-0.67ZM74.26,514.0l0.03,-0.25l0.32,0.05l0.02,0.35l-0.37,-0.15ZM64.81,513.23l0.09,-0.01l0.13,0.09l-0.17,0.0l-0.05,-0.08ZM70.29,514.35l-0.12,-0.05l-0.16,0.39l-0.25,-0.27l-0.36,0.08l0.24,-0.12l0.32,0.02l0.41,-0.61l-0.31,-0.35l-0.31,-0.63l-0.3,-0.24l0.05,-0.29l0.13,-0.06l0.67,0.13l0.43,0.28l0.16,0.24l-0.29,0.4l0.11,0.51l-0.06,0.17l-0.33,0.11l-0.04,0.31ZM68.8,514.2l-0.28,0.32l-0.09,-0.1l0.24,-0.29l-0.1,-0.27l0.19,-0.02l0.04,0.36ZM59.97,511.71l0.2,-0.13l0.18,-0.38l0.48,-0.06l0.27,0.03l0.13,0.21l0.36,0.14l0.1,0.15l-0.09,0.12l-0.23,-0.03l-0.61,0.18l-0.41,-0.22l-0.36,0.0ZM62.67,511.56l0.07,-0.35l0.28,-0.32l0.75,-0.02l0.67,0.35l0.17,0.49l-0.28,0.29l-1.25,-0.24l-0.41,-0.2ZM37.79,498.38l0.07,-0.23l-0.1,-0.23l0.32,0.03l0.09,0.49l-0.29,0.05l-0.1,-0.11ZM36.41,498.87l-0.02,0.01l0.01,-0.02l0.01,0.01ZM36.85,498.71l-0.0,-0.07l-0.0,-0.01l0.02,0.01l-0.01,0.07ZM30.2,493.17l-0.02,-0.03l0.04,-0.04l0.0,0.08l-0.02,-0.0ZM26.76,492.74l0.41,-0.33l0.12,0.35l-0.02,0.08l-0.25,0.01l-0.26,-0.12ZM25.01,490.83l0.02,0.0l-0.01,0.01l-0.02,-0.01ZM23.18,488.38l-0.09,0.01l0.05,-0.17l0.04,0.08l0.01,0.08ZM23.19,487.9l-0.06,0.1l-0.14,-0.54l0.19,0.18l0.0,0.26ZM15.95,478.85l0.25,0.07l-0.02,0.19l-0.14,-0.01l-0.09,-0.25ZM1.23,449.67l0.23,0.17l0.21,0.66l0.47,0.45l-0.25,0.16l0.12,0.39l-0.24,-0.38l-0.54,-0.19l-0.11,-0.3l0.19,-0.08l0.2,-0.42l-0.28,-0.47Z\", \"name\": \"Alaska\"}, \"US-NJ\": {\"path\": \"M801.67,165.24l1.31,-1.55l0.48,-1.57l0.5,-0.62l0.54,-1.45l0.11,-2.05l0.68,-1.35l0.92,-0.71l14.12,4.17l-0.3,5.66l-0.51,0.83l-0.13,-0.3l-0.65,-0.07l-0.34,0.44l-0.56,1.46l-0.46,2.72l0.26,1.55l0.63,0.61l1.06,0.15l1.23,-0.43l2.46,0.29l0.66,1.87l-0.2,4.55l0.29,0.47l-0.54,0.44l0.27,0.81l-0.72,0.74l0.03,0.35l0.43,0.22l-0.21,0.6l0.48,0.6l-0.17,3.8l0.59,0.52l-0.36,1.36l-1.14,1.82l-0.11,0.94l-1.36,0.07l0.09,1.21l0.64,0.83l-0.82,0.56l-0.18,1.15l1.05,0.77l-0.31,0.29l-0.17,-0.44l-0.53,-0.18l-0.5,0.22l-0.44,1.51l-1.28,0.61l-0.2,0.45l0.46,0.55l0.8,0.06l-0.66,1.26l-0.26,1.5l-0.68,0.65l0.19,0.48l0.4,0.04l-0.89,1.57l0.07,0.95l-1.56,1.66l-0.17,-1.65l0.33,-2.07l-0.11,-0.87l-0.58,-0.82l-0.89,-0.28l-1.11,0.34l-0.81,-0.35l-1.51,0.88l-0.31,-0.71l-1.62,-0.96l-1.0,0.04l-0.65,-0.71l-0.7,0.07l-3.24,-2.03l-0.06,-1.72l-1.02,-0.94l0.48,-0.68l0.0,-0.88l0.43,-0.83l-0.12,-0.73l0.51,-1.19l1.2,-1.16l2.6,-1.49l0.54,-0.86l-0.38,-0.85l0.5,-0.37l0.47,-1.44l1.24,-1.7l2.52,-2.22l0.18,-0.67l-0.47,-0.82l-4.26,-2.78l-0.75,-1.05l-0.9,0.24l-0.48,-0.33l-1.24,-2.46l-1.62,-0.02l-1.0,-3.45l1.02,-1.03l0.36,-2.23l-1.87,-1.91Z\", \"name\": \"New Jersey\"}, \"US-ME\": {\"path\": \"M837.04,56.27l0.86,-1.15l1.42,1.7l0.84,0.04l0.39,-2.12l-0.46,-2.19l1.7,0.36l0.73,-0.42l0.21,-0.52l-0.32,-0.7l-1.18,-0.47l-0.44,-0.62l0.19,-1.43l0.86,-2.02l2.08,-2.25l0.01,-0.98l-0.52,-0.93l1.02,-1.64l0.39,-1.51l-0.22,-0.91l-1.02,-0.35l-0.07,-1.42l-0.4,-0.43l0.55,-0.96l-0.04,-0.63l-1.0,-1.26l0.13,-1.73l0.37,-0.63l-0.15,-0.97l1.22,-1.93l-0.96,-6.17l5.58,-18.88l2.25,-0.23l1.15,3.18l0.55,0.43l2.54,0.56l1.83,-1.73l1.68,-0.83l1.24,-1.72l1.25,-0.12l0.64,-0.47l0.25,-1.43l0.42,-0.3l1.36,0.04l3.68,1.41l1.14,0.96l2.36,1.05l8.38,22.7l0.64,0.65l-0.25,0.95l0.72,1.02l-0.1,1.41l0.54,1.3l0.67,0.47l1.05,-0.12l1.12,0.58l0.97,0.1l2.47,-0.53l0.4,0.95l-0.59,1.42l1.69,1.86l0.28,2.69l2.72,1.68l0.98,-0.1l0.47,-0.74l-0.06,-0.5l1.21,0.25l2.95,2.8l0.04,0.47l-0.52,-0.14l-0.38,0.41l0.18,0.77l-0.76,-0.15l-0.35,0.4l0.15,0.63l1.84,1.62l0.16,-0.88l0.39,-0.17l0.8,0.32l0.27,-0.83l0.33,0.41l-0.31,0.85l-0.53,0.19l-1.21,3.24l-0.62,-0.04l-0.31,0.44l-0.55,-1.05l-0.72,0.03l-0.3,0.5l-0.56,0.06l-0.02,0.49l0.58,0.85l-0.91,-0.45l-0.32,0.63l0.26,0.52l-1.2,-0.28l-0.37,0.3l-0.37,0.78l0.08,0.45l0.44,0.08l0.07,1.21l-0.37,-0.57l-0.54,-0.06l-0.39,0.45l-0.2,1.09l-0.48,-1.53l-1.14,0.01l-0.68,0.75l-0.36,1.48l0.59,0.63l-0.83,0.63l-0.7,-0.46l-0.73,1.04l0.1,0.64l0.99,0.63l-0.35,0.21l-0.1,0.82l-0.45,-0.2l-0.85,-1.82l-1.03,-0.46l-0.39,0.22l-0.45,-0.41l-0.57,0.63l-1.25,-0.19l-0.26,0.86l0.78,0.4l0.01,0.37l-0.51,-0.06l-0.56,0.4l-0.09,0.69l-0.49,-1.02l-1.17,-0.02l-0.16,0.64l0.52,0.87l-1.44,0.96l0.84,1.11l0.08,1.06l0.53,0.65l-0.96,-0.41l-0.96,0.22l-1.2,-0.42l-0.17,-0.91l0.74,-0.28l-0.08,-0.55l-0.43,-0.5l-0.67,-0.12l-0.3,0.33l-0.23,-2.37l-0.37,-0.22l-1.1,0.26l0.04,1.96l-1.85,1.92l0.02,0.49l1.25,1.47l-0.64,0.96l-0.19,3.87l0.77,1.41l-0.57,0.53l0.0,0.63l-0.51,0.55l-0.8,-0.19l-0.45,0.93l-0.62,-0.06l-0.41,-1.15l-0.73,-0.21l-0.52,1.03l0.11,0.69l-0.45,0.59l0.12,2.41l-0.95,-1.01l0.14,-1.28l-0.24,-0.59l-0.81,0.29l-0.08,2.01l-0.44,-0.25l0.15,-1.55l-0.48,-0.4l-0.68,0.49l-0.76,3.04l-0.75,-1.84l0.07,-1.51l-0.77,0.05l-1.06,2.76l0.51,0.55l0.73,-0.25l0.91,2.04l-0.28,-0.59l-0.52,-0.23l-0.66,0.3l-0.07,0.64l-1.38,-0.1l-2.16,3.18l-0.53,1.86l0.29,0.6l-0.68,0.65l0.51,0.43l0.91,-0.21l0.37,0.92l-0.77,0.3l-0.2,0.39l-0.4,-0.04l-0.51,0.57l-0.14,1.03l0.67,1.37l-0.08,0.68l-0.79,1.29l-0.94,0.61l-0.41,1.07l-0.1,1.28l0.44,0.9l-0.4,2.81l-0.8,-0.33l-0.41,0.6l-1.02,-0.76l-0.57,-1.86l-0.93,-0.37l-2.36,-1.99l-0.76,-3.45l-13.25,-35.55ZM863.92,80.85l0.09,0.26l-0.08,0.23l0.03,-0.29l-0.04,-0.2ZM865.33,81.07l0.47,0.7l-0.04,0.47l-0.32,-0.25l-0.1,-0.93ZM867.67,77.93l0.43,0.83l-0.16,0.14l-0.42,-0.19l0.16,-0.77ZM877.04,64.5l-0.14,0.2l-0.03,-0.24l0.17,0.04ZM873.08,74.84l0.01,0.02l-0.03,0.03l0.01,-0.06ZM882.73,63.41l0.04,-1.17l0.41,-0.66l-0.18,-0.44l0.4,-0.5l0.62,-0.11l1.54,1.36l-0.49,0.65l-1.08,0.04l-0.27,0.43l0.57,1.3l-0.99,-0.18l-0.14,-0.57l-0.44,-0.16ZM879.31,65.98l0.61,0.41l-0.35,0.29l0.15,0.96l-0.39,-0.63l0.19,-0.53l-0.21,-0.5ZM878.07,70.51l0.09,-0.01l0.48,-0.08l-0.25,0.46l-0.32,-0.37Z\", \"name\": \"Maine\"}, \"US-MD\": {\"path\": \"M740.69,219.66l-2.04,-10.06l19.85,-4.49l-0.66,1.29l-0.94,0.08l-1.55,0.81l0.16,0.7l-0.42,0.49l0.23,0.78l-1.04,0.09l-0.72,0.41l-1.48,0.03l-1.14,-0.39l0.21,-0.36l-0.3,-0.49l-1.11,-0.31l-0.47,1.8l-1.63,2.85l-1.37,-0.39l-1.03,0.62l-0.41,1.26l-1.6,1.93l-0.36,1.04l-0.88,0.45l-1.3,1.87ZM760.76,204.58l37.02,-9.15l8.22,26.4l0.48,0.26l8.48,-2.22l0.24,0.71l0.6,0.03l0.38,0.95l0.52,-0.05l-0.38,1.96l-0.12,-0.26l-0.47,0.06l-0.73,0.86l-0.17,2.7l-0.6,0.19l-0.36,0.71l-0.02,1.47l-3.64,1.51l-0.37,0.76l-2.25,0.43l-0.56,0.65l-0.3,-1.09l0.5,-0.31l0.87,-1.85l-0.4,-0.51l-0.45,0.12l0.08,-0.5l-0.44,-0.42l-2.29,0.63l0.3,-0.6l1.15,-0.83l-0.17,-0.69l-1.36,-0.18l0.38,-2.24l-0.18,-1.02l-0.91,0.16l-0.53,1.76l-0.34,-0.69l-0.62,-0.07l-0.44,0.47l-0.5,1.39l0.53,1.02l-2.87,-2.14l-0.43,-0.19l-0.61,0.36l-0.73,-0.76l0.37,-0.84l-0.04,-0.84l0.76,-0.6l-0.08,-1.35l2.08,0.1l0.89,-0.45l0.36,-0.9l-0.32,-1.42l-0.43,-0.05l-0.54,1.31l-0.39,0.09l-1.05,-0.72l0.06,-0.4l-0.52,-0.28l-0.55,0.23l-0.22,-0.68l-0.73,0.1l-0.12,0.28l0.07,-0.74l0.65,-0.01l0.49,-0.37l0.22,-1.04l-0.54,-0.55l-0.57,0.71l-0.2,-0.53l0.88,-0.87l-0.25,-0.65l-0.54,-0.08l-0.09,-0.48l-0.42,-0.27l-0.35,0.15l-0.66,-0.53l0.89,-0.8l-0.24,-1.03l0.94,-2.38l-0.17,-0.43l-0.46,0.02l-0.66,0.66l-0.56,-0.16l-0.61,0.95l-0.74,-0.6l0.49,-3.59l0.6,-0.52l0.06,-0.61l4.22,-1.21l0.12,-0.7l-0.51,-0.3l-2.38,0.43l0.76,-1.27l1.42,-0.05l0.35,-0.5l-0.99,-0.67l0.44,-1.9l-0.63,-0.32l-1.2,1.82l0.05,-1.5l-0.59,-0.34l-0.68,1.1l-1.62,0.67l-0.31,1.65l0.39,0.54l0.65,0.12l-1.45,1.92l-0.2,-1.64l-0.64,-0.42l-0.61,0.73l0.07,1.45l-0.85,-0.29l-1.16,0.64l0.02,0.71l1.01,0.27l-0.37,0.54l-0.83,0.22l-0.05,0.34l-0.44,-0.04l-0.35,0.64l1.15,1.2l-1.88,-0.67l-1.21,0.59l0.16,0.69l1.56,0.58l0.91,0.93l0.72,-0.12l0.56,0.75l-0.98,-0.07l-1.15,1.36l0.32,0.77l1.57,0.92l-0.67,0.12l-0.21,0.41l0.8,1.08l-0.32,0.56l0.32,0.97l0.58,0.45l-0.52,1.09l0.99,1.25l0.96,3.54l0.61,0.84l2.07,1.63l0.42,0.81l-0.58,0.17l-0.64,-0.75l-1.45,-0.31l-1.64,-1.26l-1.33,-3.16l-0.73,-0.68l-0.3,0.37l0.11,0.7l1.28,3.54l1.14,1.31l2.05,0.74l1.03,1.11l0.64,0.14l0.91,-0.36l-0.03,1.11l1.66,1.54l0.1,1.1l-0.89,-0.35l-0.51,-1.29l-0.63,-0.45l-0.45,0.04l-0.13,0.44l0.27,0.79l-0.67,0.09l-0.65,-0.82l-1.41,-0.67l-2.39,0.63l-0.7,-0.67l-0.71,-1.49l-1.26,-0.71l-0.46,0.14l0.01,0.48l1.13,1.84l-0.22,-0.08l-1.62,-1.2l-1.66,-2.28l-0.45,-0.02l-0.37,1.44l-0.32,-0.79l-0.74,0.2l-0.21,0.27l0.33,0.72l-0.11,0.56l-0.76,0.53l-0.94,-1.5l0.07,-1.68l0.76,-0.6l-0.19,-0.74l0.78,-0.47l0.21,-1.61l1.07,-1.03l-0.0,-1.03l-0.46,-0.86l1.27,-2.19l-0.14,-0.54l-2.72,-1.68l-0.56,0.14l-0.63,1.08l-1.87,-0.26l-0.52,-0.83l-1.11,-0.51l-2.41,0.07l-1.25,-0.91l0.61,-1.35l-0.4,-0.97l-1.19,-0.3l-0.89,-0.66l-2.69,0.07l-0.36,-0.23l-0.11,-1.26l-1.04,-0.6l0.09,-1.2l-0.51,-0.29l-0.49,0.19l-0.23,-0.64l-0.52,-0.13l0.26,-0.83l-0.45,-0.58l-0.69,-0.12l-1.81,0.67l-2.24,-1.27ZM790.04,212.1l1.14,0.18l0.3,0.17l-0.52,0.29l-0.93,-0.63ZM803.05,225.67l-0.02,0.33l-0.21,-0.15l0.23,-0.19ZM807.02,229.13l-0.16,0.3l-0.13,0.07l0.02,-0.24l0.26,-0.12ZM797.57,220.61l-0.06,0.01l-0.09,0.03l0.12,-0.07l0.03,0.02ZM797.24,220.74l-0.26,0.56l-0.18,0.12l0.15,-0.61l0.29,-0.07ZM795.94,216.76l-0.29,0.29l-0.72,-0.27l0.02,-0.33l0.26,-0.36l0.72,0.67ZM794.58,212.85l-0.34,0.78l-0.59,0.23l0.02,-1.48l0.92,0.47ZM802.18,228.89l0.1,-0.11l0.12,0.08l-0.22,0.03Z\", \"name\": \"Maryland\"}, \"US-AR\": {\"path\": \"M498.73,376.99l-1.42,-38.01l-4.48,-23.98l37.68,-2.58l39.02,-3.58l0.8,1.6l1.01,0.7l0.11,1.77l-0.77,0.57l-0.22,0.94l-1.42,0.93l-0.29,1.04l-0.83,0.54l-1.19,2.59l0.02,0.7l0.53,0.26l10.94,-1.46l0.86,0.93l-1.18,0.37l-0.52,0.96l0.25,0.49l0.84,0.41l-3.6,2.7l0.02,0.84l0.83,1.04l-0.6,1.15l0.62,0.97l-1.42,0.74l-0.11,1.44l-1.45,2.09l0.12,1.64l0.91,3.1l-0.15,0.27l-1.08,-0.01l-0.33,0.26l-0.51,1.73l-1.52,0.95l-0.04,0.51l0.79,0.91l0.05,0.65l-1.11,1.21l-2.02,1.13l-0.21,0.62l0.43,1.0l-0.19,0.27l-1.23,0.03l-0.42,0.67l-0.32,1.89l0.47,1.57l0.02,3.08l-1.27,1.09l-1.54,0.13l0.23,1.49l-0.21,0.48l-0.93,0.25l-0.59,1.77l-1.49,1.19l-0.02,0.93l1.39,0.76l-0.03,0.7l-1.23,0.3l-2.24,1.23l0.03,0.67l0.99,0.82l-0.45,1.14l0.53,1.38l-1.09,0.62l-1.9,2.57l0.52,0.7l1.0,0.49l0.01,0.58l-0.98,0.29l-0.42,0.64l0.51,0.84l1.63,1.01l0.06,1.77l-0.59,0.98l-0.09,0.84l0.29,0.4l1.05,0.39l0.5,2.17l-1.09,1.01l0.06,2.11l-51.46,4.07l-0.83,-11.53l-1.18,-0.85l-0.9,0.16l-0.83,-0.35l-0.93,0.39l-1.22,-0.33l-0.57,0.72l-0.47,0.01l-0.49,-0.48l-0.82,-0.15l-0.63,-1.0Z\", \"name\": \"Arkansas\"}, \"US-MA\": {\"path\": \"M877.65,135.84l1.07,-0.19l0.85,-1.13l0.45,0.58l-1.06,0.64l-1.31,0.1ZM831.87,132.65l-0.46,-0.28l-10.4,2.53l-0.25,-0.18l-0.27,-14.8l29.99,-7.86l1.53,-1.8l0.34,-1.48l0.95,-0.35l0.61,-1.04l1.3,-1.08l1.23,-0.08l-0.44,1.05l1.36,0.55l-0.16,0.61l0.44,0.83l1.0,0.36l-0.06,0.32l0.39,0.28l1.31,0.19l-0.16,0.56l-2.52,1.87l-0.05,1.07l0.45,0.16l-1.11,1.41l0.23,1.08l-1.01,0.96l0.58,1.41l1.4,0.45l0.5,0.63l1.36,-0.57l0.33,-0.59l1.2,0.09l0.79,0.47l0.23,0.68l1.78,1.37l-0.07,1.25l-0.36,0.29l0.11,0.61l1.58,0.82l1.19,-0.14l0.68,1.2l0.22,1.14l0.89,0.68l1.33,0.41l1.48,-0.12l0.43,0.38l1.05,-0.23l3.35,-2.76l0.39,-0.69l0.54,0.02l0.56,1.86l-3.32,1.52l-0.94,0.82l-2.75,0.98l-0.49,1.65l-1.94,1.27l-0.81,-2.53l0.11,-1.35l-0.55,-0.31l-0.5,0.39l-0.93,-0.11l-0.3,0.51l0.25,0.92l-0.26,0.79l-0.4,0.06l-0.63,1.1l-0.6,-0.2l-0.5,0.48l0.22,1.86l-0.9,0.87l-0.63,-0.8l-0.47,0.01l-0.11,0.55l-0.26,0.03l-0.7,-2.02l-1.02,-0.35l0.44,-2.5l-0.21,-0.4l-0.77,0.4l-0.29,1.47l-0.69,0.2l-1.4,-0.64l-0.78,-2.12l-0.8,-0.22l-0.78,-2.15l-0.49,-0.24l-6.13,2.0l-0.3,-0.15l-14.84,4.19l-0.28,0.5ZM860.89,110.08l-0.02,-0.37l-0.14,-0.48l0.51,0.23l-0.35,0.62ZM876.37,122.8l-0.42,-0.66l0.06,-0.05l0.44,0.67l-0.09,0.05ZM875.46,121.25l-0.86,-0.11l-0.94,-1.42l1.44,1.0l0.36,0.54ZM871.54,119.46l-0.06,0.25l-0.35,-0.2l0.13,0.02l0.29,-0.07ZM871.87,135.18l0.01,-0.02l0.01,0.04l-0.02,-0.02ZM867.18,137.63l0.78,-0.56l0.28,-1.17l0.84,-1.19l0.17,0.26l0.46,-0.11l0.34,0.52l0.71,-0.01l0.19,0.38l-2.11,0.73l-1.34,1.31l-0.33,-0.17Z\", \"name\": \"Massachusetts\"}, \"US-AL\": {\"path\": \"M608.66,337.47l25.17,-2.91l19.4,-2.75l14.04,43.3l0.79,1.4l0.22,1.05l1.17,1.59l0.59,1.87l2.24,2.5l0.92,1.8l-0.11,2.13l1.8,1.13l-0.17,0.74l-0.63,0.1l-0.16,0.7l-0.98,0.84l-0.22,2.29l0.25,1.48l-0.77,2.3l-0.14,1.84l1.1,2.94l1.21,1.52l0.53,1.6l-0.08,5.02l-0.25,0.81l0.48,2.03l1.35,1.16l1.14,2.07l-47.65,6.92l-0.42,0.61l-0.08,2.99l2.64,2.75l2.0,0.97l-0.34,2.7l0.56,1.6l0.43,0.39l-0.94,1.69l-1.24,1.0l-1.13,-0.75l-0.34,0.49l0.66,1.46l-2.82,1.05l0.29,-0.64l-0.45,-0.86l-0.99,-0.77l-0.1,-1.11l-0.57,-0.22l-0.53,0.61l-0.32,-0.1l-0.89,-1.53l0.41,-1.67l-0.97,-2.21l-0.46,-0.45l-0.86,-0.2l-0.3,-0.89l-0.56,-0.17l-0.37,0.61l0.14,0.35l-0.77,3.1l-0.01,5.08l-0.59,0.0l-0.24,-0.71l-2.22,-0.44l-1.65,0.31l-5.46,-31.99l-0.99,-66.49l-0.02,-0.37l-1.07,-0.63l-0.69,-1.02Z\", \"name\": \"Alabama\"}, \"US-MO\": {\"path\": \"M468.68,225.54l24.71,-0.73l18.94,-1.43l22.11,-2.58l0.42,0.35l0.39,0.91l2.43,1.65l0.29,0.74l1.21,0.87l-0.51,1.37l-0.1,3.21l0.78,3.65l0.95,1.44l0.03,1.59l1.11,1.37l0.46,1.55l4.96,4.1l1.06,1.69l4.93,3.31l0.7,1.15l0.27,1.62l0.5,0.82l-0.18,0.69l0.47,1.8l0.97,1.63l0.77,0.73l1.04,0.16l0.83,-0.56l0.84,-1.4l0.57,-0.19l2.41,0.61l1.68,0.76l0.84,0.77l-0.97,1.95l0.26,2.28l-2.37,6.86l0.01,1.02l0.7,1.92l4.67,4.05l1.99,1.05l1.46,0.09l1.66,1.31l1.91,0.8l1.51,2.11l2.04,0.83l0.42,2.96l1.72,2.9l-1.1,1.94l0.18,1.38l0.75,0.33l2.31,4.25l1.94,0.92l0.55,-0.32l0.0,-0.65l0.87,1.1l1.07,-0.08l0.14,1.85l-0.37,1.07l0.53,1.6l-1.07,3.86l-0.51,0.07l-1.37,-1.13l-0.65,0.13l-0.78,3.34l-0.52,0.74l0.13,-1.06l-0.56,-1.09l-0.97,-0.2l-0.74,0.63l0.02,1.05l0.53,0.66l-0.04,0.7l0.58,1.34l-0.2,0.4l-1.2,0.39l-0.17,0.41l0.15,0.55l0.86,0.84l-1.71,0.37l-0.14,0.62l1.53,1.97l-0.89,0.75l-0.63,2.13l-10.61,1.42l1.06,-2.28l0.87,-0.61l0.18,-0.87l1.44,-0.96l0.25,-0.96l0.63,-0.37l0.29,-0.59l-0.22,-2.28l-1.05,-0.75l-0.2,-0.77l-1.09,-1.18l-39.24,3.61l-37.72,2.58l-3.21,-58.2l-1.03,-0.63l-1.2,-0.02l-1.52,-0.73l-0.19,-0.93l-0.76,-0.59l-0.34,-0.71l-0.36,-1.55l-0.55,-0.09l-0.3,-0.56l-1.13,-0.66l-1.4,-1.84l0.73,-0.51l0.09,-1.24l1.12,-1.27l0.09,-0.79l1.01,0.16l0.56,-0.43l-0.2,-2.24l-1.02,-0.74l-0.32,-1.1l-1.17,-0.01l-1.31,0.96l-0.81,-0.7l-0.73,-0.17l-2.67,-2.35l-1.05,-0.28l0.13,-1.6l-1.32,-1.72l0.1,-1.02l-0.37,-0.36l-1.01,-0.18l-0.59,-0.85l-0.84,-0.26l0.07,-0.53l-1.24,-2.88l-0.0,-0.74l-0.4,-0.49l-0.85,-0.29l-0.05,-0.54ZM583.77,294.59l-0.1,-0.1l-0.08,-0.15l0.11,-0.01l0.07,0.26Z\", \"name\": \"Missouri\"}, \"US-MN\": {\"path\": \"M439.34,42.76l26.81,-1.05l0.34,1.46l1.28,0.84l1.79,-0.5l1.05,-1.43l0.78,-0.31l2.13,2.19l1.71,0.28l0.31,1.2l1.83,1.4l1.79,0.48l2.64,-0.41l0.39,0.85l0.67,0.4l5.12,0.01l0.37,0.23l0.54,1.59l0.71,0.61l4.27,-0.78l0.77,-0.65l0.07,-0.69l2.43,-0.79l3.97,-0.02l1.42,0.7l3.39,0.66l-1.01,0.79l0.0,0.82l1.18,0.54l2.23,-0.16l0.52,2.08l1.58,2.29l0.71,0.05l1.03,-0.78l-0.04,-1.73l2.67,-0.46l1.43,2.17l2.01,0.79l1.54,0.18l0.54,0.57l-0.03,0.83l0.58,0.35l1.32,0.06l0.38,0.83l1.43,-0.19l1.12,0.22l2.22,-0.85l2.78,-2.55l2.49,-1.54l1.24,2.52l0.96,0.51l2.23,-0.66l0.87,0.36l5.98,-1.3l0.56,0.18l1.32,1.64l1.24,0.59l0.62,-0.01l1.61,-0.83l1.35,0.08l-0.93,1.03l-4.69,3.07l-6.35,2.82l-3.68,2.48l-2.15,2.49l-0.95,0.58l-6.63,8.66l-0.95,0.61l-1.08,1.56l-1.96,1.96l-4.17,3.55l-0.86,1.79l-0.55,0.44l-0.14,0.96l-0.78,-0.01l-0.46,0.51l0.98,12.22l-0.79,1.2l-1.05,0.08l-0.52,0.82l-0.83,0.15l-0.61,0.83l-2.06,1.19l-0.94,1.86l0.06,0.72l-1.69,2.39l-0.01,2.06l0.38,0.91l2.15,0.39l1.42,2.49l-0.52,1.92l-0.71,1.25l-0.05,2.12l0.45,1.32l-0.71,1.23l0.91,3.14l-0.51,4.08l3.95,3.03l3.02,0.4l1.89,2.25l2.87,0.5l2.45,1.93l2.39,3.59l2.64,1.8l2.09,0.09l1.07,0.71l0.88,0.1l0.82,1.36l1.03,0.45l0.23,0.39l0.28,2.03l0.68,1.3l0.39,4.82l-40.63,3.2l-40.63,2.09l-1.46,-38.98l-0.7,-1.27l-0.83,-0.78l-2.57,-0.79l-0.94,-1.91l-1.46,-1.79l0.21,-0.68l2.83,-2.34l0.97,-2.12l0.4,-2.44l-0.35,-1.58l0.23,-1.58l-0.18,-1.79l-0.5,-1.03l-0.18,-2.33l-1.81,-2.59l-0.47,-1.13l-0.21,-2.16l-0.66,-0.98l0.15,-1.66l-0.35,-1.52l0.53,-2.69l-1.08,-1.85l-0.49,-8.33l-0.42,-0.79l0.06,-3.92l-1.58,-3.96l-0.53,-0.65l-0.4,-1.37l0.05,-1.19l-0.48,-0.53l-1.36,-3.77l0.0,-3.22l-0.47,-1.97l0.27,-1.12l-0.57,-2.32l0.73,-2.56l-2.06,-6.9ZM468.97,33.61l1.22,0.46l0.99,-0.2l0.33,0.45l-0.05,1.72l-1.78,1.12l-0.15,-0.47l-0.4,-0.14l-0.16,-2.95Z\", \"name\": \"Minnesota\"}, \"US-CA\": {\"path\": \"M2.95,175.4l0.78,-1.24l0.46,0.46l0.59,-0.08l0.52,-1.18l0.8,-0.86l1.3,-0.26l0.56,-0.53l-0.15,-0.71l-0.93,-0.32l1.53,-2.79l-0.3,-1.58l0.14,-0.87l2.04,-3.3l1.31,-3.03l0.36,-2.12l-0.28,-1.0l0.16,-3.11l-1.36,-2.16l1.18,-1.38l0.67,-2.53l32.73,8.13l32.58,7.34l-13.67,64.68l25.45,34.66l36.6,51.1l13.3,17.72l-0.19,2.73l0.73,0.94l0.21,1.71l0.85,0.63l0.81,2.56l-0.07,0.91l0.63,1.46l-0.16,1.36l3.8,3.82l0.01,0.5l-1.95,1.53l-3.11,1.26l-1.2,1.99l-1.72,1.14l-0.33,0.81l0.38,1.03l-0.51,0.51l-0.1,0.9l0.08,2.29l-0.6,0.72l-0.64,2.44l-2.02,2.47l-1.6,0.14l-0.42,0.51l0.33,0.89l-0.59,1.34l0.54,1.12l-0.01,1.19l-0.78,2.68l0.57,1.02l2.74,1.13l0.34,0.83l-0.19,2.4l-1.18,0.78l-0.42,1.37l-2.27,-0.62l-1.25,0.6l-43.38,-3.34l0.17,-1.15l0.67,-0.51l-0.17,-1.06l-1.17,-1.38l-1.04,-0.15l0.23,-1.2l-0.28,-1.07l0.78,-1.33l-0.3,-4.25l-0.6,-2.3l-1.92,-4.07l-3.56,-4.07l-1.29,-1.98l-2.42,-2.11l-2.04,-3.01l-2.22,-0.89l-0.94,0.3l-0.39,0.96l-0.62,-0.73l-0.88,-0.22l-0.15,-0.31l0.61,-0.76l0.17,-1.57l-0.44,-2.06l-1.01,-1.95l-1.0,-0.74l-4.44,-0.19l-3.33,-1.81l-1.36,-1.26l-0.7,-0.12l-1.02,-1.19l-0.44,-2.6l-0.97,-0.47l-1.68,-2.31l-2.19,-1.73l-1.24,-0.41l-1.66,0.37l-1.15,-1.01l-1.25,0.03l-2.48,-1.83l-1.06,0.01l-1.49,-0.69l-4.91,-0.52l-1.12,-2.35l-1.43,-0.76l1.34,-2.45l-0.25,-1.36l0.74,-1.99l-0.63,-1.35l1.27,-2.45l0.33,-2.44l-0.99,-1.24l-1.26,-0.23l-1.4,-1.28l0.41,-1.62l0.79,-0.09l0.25,-0.45l-0.47,-2.2l-0.65,-0.77l-1.47,-0.84l-1.78,-3.97l-1.82,-1.25l-0.36,-2.75l-1.61,-2.58l0.07,-1.39l-0.33,-1.26l-1.16,-0.94l-0.74,-2.95l-2.41,-2.69l-0.55,-1.25l-0.02,-4.63l0.59,-0.57l-0.59,-1.14l0.51,-0.59l0.53,0.61l0.78,-0.02l0.84,-0.81l0.56,-1.33l0.8,0.04l0.21,-0.88l-0.43,-0.27l0.47,-1.19l-1.22,-3.68l-0.62,-0.48l-1.05,0.08l-1.93,-0.51l-1.04,-1.06l-1.89,-3.21l-0.8,-2.28l0.86,-2.39l0.09,-1.11l-0.27,-2.38l-0.32,-0.64l-0.54,-0.24l0.25,-1.19l0.69,-1.07l0.24,-2.71l0.47,-0.64l0.88,0.13l0.18,0.94l-0.7,2.13l0.05,1.15l1.18,1.32l0.55,0.1l0.58,1.28l1.16,0.78l0.4,1.01l0.89,0.41l0.83,-0.21l-0.21,-1.45l-0.65,-0.43l-0.18,-0.58l-0.24,-3.57l-0.56,-0.71l0.26,-0.69l-1.48,-1.06l0.5,-1.07l0.09,-1.06l-1.2,-1.58l0.78,-0.74l0.79,0.06l1.24,-0.73l1.25,1.02l1.87,-0.32l5.55,2.41l0.61,-0.09l0.64,-1.38l0.69,-0.04l1.92,2.53l0.25,0.18l0.63,-0.24l0.02,-0.38l-0.39,-0.93l-1.57,-1.89l-1.66,-0.32l0.27,-0.62l-0.28,-0.54l-0.48,0.09l-1.05,1.01l-1.84,-0.22l-0.43,0.28l-0.15,-0.51l-1.05,-0.4l0.24,-1.05l-0.85,-0.47l-1.0,0.28l-0.6,0.84l-1.09,0.4l-1.35,-0.9l-0.39,-0.88l-1.51,-1.44l-0.58,0.03l-0.64,0.61l-0.92,-0.12l-0.48,0.36l-0.33,1.88l0.21,0.78l-0.76,1.36l0.36,0.65l-0.47,0.59l-0.04,0.69l-2.16,-2.89l-0.44,-0.15l-0.25,0.32l-0.73,-1.0l-0.21,-1.03l-1.2,-1.17l-0.4,-1.05l-0.61,-0.18l0.65,-1.48l0.11,0.95l0.76,1.49l0.44,0.25l0.33,-0.38l-1.45,-5.21l-1.08,-1.42l-0.31,-2.68l-2.5,-2.87l-1.8,-4.48l-3.05,-5.54l1.09,-1.7l0.25,-1.97l-0.46,-2.11l-0.14,-3.61l1.34,-2.92l0.7,-0.74l-0.07,-1.54l0.42,-1.53l-0.41,-1.63l0.11,-1.96l-1.41,-4.06l-0.97,-1.15l0.06,-0.8l-0.42,-1.19l-2.91,-4.03l0.51,-1.35l-0.21,-2.69l2.23,-3.44ZM31.5,240.45l-0.06,0.1l-0.34,0.04l0.21,-0.05l0.19,-0.09ZM64.32,351.64l0.27,0.13l0.19,0.18l-0.31,-0.18l-0.15,-0.13ZM65.92,352.88l1.32,0.84l0.76,1.73l-0.89,-0.66l-1.14,0.03l-0.05,-1.94ZM62.72,363.08l1.36,2.08l0.57,0.53l-0.46,0.06l-0.83,-0.79l-0.65,-1.88ZM43.54,333.81l0.88,0.73l1.37,0.36l1.36,1.0l-2.82,-0.18l-0.71,-0.58l0.24,-0.66l-0.32,-0.67ZM47.89,335.89l0.94,-0.5l0.32,0.36l-0.37,0.14l-0.88,-0.0ZM46.05,352.4l0.29,-0.06l0.95,0.92l-0.61,-0.17l-0.64,-0.69ZM37.57,334.04l2.57,0.16l0.2,0.74l0.6,0.45l-1.21,0.64l-1.17,-0.1l-0.49,-0.44l-0.5,-1.44ZM34.94,332.37l0.06,-0.02l0.05,0.06l-0.01,-0.0l-0.1,-0.04Z\", \"name\": \"California\"}, \"US-IA\": {\"path\": \"M452.9,162.25l42.83,-2.19l40.56,-3.19l0.96,2.52l2.0,1.0l0.08,0.59l-0.9,1.8l-0.16,1.04l0.9,5.09l0.92,1.26l0.39,1.75l1.46,1.72l4.95,0.85l1.27,2.03l-0.3,1.03l0.29,0.66l3.61,2.37l0.85,2.41l3.84,2.31l0.62,1.68l-0.31,4.21l-1.64,1.98l-0.5,1.94l0.13,1.28l-1.26,1.36l-2.51,0.97l-0.89,1.18l-0.55,0.25l-4.56,0.83l-0.89,0.73l-0.61,1.71l-0.15,2.56l0.4,1.08l2.01,1.47l0.54,2.65l-1.87,3.25l-0.22,2.24l-0.53,1.42l-2.88,1.39l-1.02,1.02l-0.2,0.99l0.72,0.87l0.2,2.15l-0.58,0.23l-1.34,-0.82l-0.31,-0.76l-1.29,-0.82l-0.29,-0.51l-0.88,-0.36l-0.3,-0.82l-0.95,-0.68l-22.3,2.61l-15.13,1.17l-7.59,0.51l-20.78,0.47l-0.22,-1.06l-1.3,-0.73l-0.33,-0.67l0.58,-1.16l-0.21,-0.95l0.22,-1.39l-0.36,-2.19l-0.6,-0.73l0.07,-3.65l-1.05,-0.5l0.05,-0.91l0.71,-1.02l-0.05,-0.44l-1.31,-0.56l0.33,-2.54l-0.41,-0.45l-0.89,-0.16l0.23,-0.8l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.81l0.5,-2.36l-0.2,-0.67l-1.36,-1.71l-0.08,-1.92l-1.78,-1.54l-0.36,-1.74l-1.09,-0.94l0.03,-2.18l-1.1,-1.87l0.21,-1.7l-0.27,-1.08l-1.38,-0.67l-0.42,-1.58l-0.45,-0.59l0.05,-0.63l-1.81,-1.82l0.56,-1.61l0.54,-0.47l0.73,-2.68l0.0,-1.68l0.55,-0.69l0.21,-1.19l-0.51,-2.24l-1.33,-0.29l-0.05,-0.73l0.45,-0.56l-0.0,-1.71l-0.95,-1.42l-0.05,-0.87Z\", \"name\": \"Iowa\"}, \"US-MI\": {\"path\": \"M612.24,185.84l1.83,-2.17l0.7,-1.59l1.18,-4.4l1.43,-3.04l1.01,-5.05l0.09,-5.37l-0.86,-5.54l-2.4,-5.18l0.61,-0.51l0.3,-0.79l-0.57,-0.42l-1.08,0.55l-3.82,-7.04l-0.21,-1.11l1.13,-2.69l-0.01,-0.97l-0.74,-3.13l-1.28,-1.65l-0.05,-0.62l1.73,-2.73l1.22,-4.14l-0.21,-5.34l-0.77,-1.6l1.09,-1.15l0.81,-0.02l0.56,-0.47l-0.27,-3.49l1.08,-0.11l0.67,-1.43l1.19,0.48l0.65,-0.33l0.76,-2.59l0.82,-1.2l0.56,-1.68l0.55,-0.18l-0.58,0.87l0.6,1.65l-0.71,1.8l0.71,0.42l-0.48,2.61l0.88,1.42l0.73,-0.06l0.52,0.56l0.65,-0.24l0.89,-2.26l0.66,-3.52l-0.08,-2.07l-0.76,-3.42l0.58,-1.02l2.13,-1.64l2.74,-0.54l0.98,-0.63l0.28,-0.64l-0.25,-0.54l-1.76,-0.1l-0.96,-0.86l-0.52,-1.99l1.85,-2.98l-0.11,-0.73l1.72,-0.23l0.74,-0.94l4.16,2.0l0.83,0.13l1.98,-0.4l1.37,0.39l1.19,1.04l0.53,1.14l0.77,0.49l2.41,-0.29l1.7,1.02l1.92,0.09l0.8,0.64l3.27,0.45l1.1,0.78l-0.01,1.12l1.04,1.31l0.64,0.21l0.38,0.92l-0.16,0.54l-0.66,-0.25l-0.94,0.57l-0.23,1.83l0.81,1.29l1.6,0.99l0.69,1.37l0.65,2.26l-0.12,1.73l0.77,5.57l-0.14,0.6l-0.57,0.2l-0.48,0.96l-0.75,0.08l-0.79,0.81l-0.17,4.47l-1.12,0.49l-0.18,0.82l-1.86,0.43l-0.73,0.6l-0.58,2.61l0.26,0.45l-0.21,0.52l0.25,2.58l1.38,1.31l2.9,0.84l0.91,-0.07l1.08,-1.23l0.6,-1.44l0.62,0.19l0.38,-0.24l1.01,-3.59l0.6,-1.06l-0.08,-0.52l0.97,-1.45l1.39,-0.39l1.07,-0.69l0.83,-1.1l0.87,-0.44l2.06,0.59l1.13,0.7l1.0,1.09l1.21,2.16l2.0,5.91l0.82,1.6l1.03,3.71l1.49,3.63l1.27,1.73l-0.33,3.93l0.45,2.49l-0.48,2.79l-0.34,0.44l-0.24,-0.33l-0.31,-1.71l-1.46,-0.52l-0.47,0.08l-1.48,1.36l-0.06,0.83l0.55,0.67l-0.83,0.57l-0.29,0.79l0.28,2.94l-0.49,0.75l-1.62,0.92l-1.06,1.85l-0.43,3.73l0.27,1.55l-0.33,0.93l-0.42,0.19l0.02,0.91l-0.64,0.3l-0.37,1.08l-0.52,0.52l-0.5,1.28l-0.02,1.05l-0.52,0.78l-20.37,4.25l-0.14,-0.86l-0.46,-0.33l-31.6,4.74ZM621.47,115.87l0.0,-0.07l0.12,-0.12l-0.01,0.03l-0.11,0.16ZM621.73,114.95l-0.07,-0.16l0.07,-0.14l-0.0,0.3ZM543.48,88.04l4.87,-2.38l3.55,-3.62l5.77,-1.36l1.39,-0.84l2.36,-2.71l0.97,0.04l1.52,-0.73l1.0,-2.25l2.82,-2.84l0.23,1.72l1.85,0.59l0.05,1.45l0.66,0.14l0.51,0.6l-0.17,3.14l0.44,0.95l-0.34,0.47l0.2,0.47l0.74,-0.02l1.08,-2.21l1.08,-0.9l-0.42,1.15l0.59,0.45l0.82,-0.67l0.52,-1.22l1.0,-0.43l3.09,-0.25l1.51,0.21l1.18,0.93l1.54,0.44l0.47,1.05l2.31,2.58l1.17,0.55l0.53,1.55l0.73,0.34l1.87,0.07l0.73,-0.4l1.07,-0.06l0.52,-0.65l0.88,-0.43l1.0,1.11l1.1,0.64l1.02,-0.25l0.68,-0.82l1.87,1.06l0.64,-0.34l1.65,-2.59l2.81,-1.89l1.7,-1.65l0.91,0.11l3.27,-1.21l5.17,-0.25l4.49,-2.72l2.56,-0.37l-0.01,3.24l0.29,0.71l-0.36,1.1l0.67,0.85l0.66,0.11l0.71,-0.39l2.2,0.7l1.14,-0.43l1.03,-0.87l0.66,0.48l0.21,0.71l0.85,0.22l1.27,-0.8l0.95,-1.55l0.66,-0.02l0.84,0.75l1.98,3.78l-0.86,1.04l0.48,0.89l0.47,0.36l1.37,-0.42l0.58,0.46l0.64,0.04l0.18,1.2l0.98,0.87l1.53,0.52l-1.17,0.68l-4.96,-0.14l-0.53,0.29l-1.35,-0.17l-0.88,0.41l-0.66,-0.76l-1.63,-0.07l-0.59,0.47l-0.07,1.22l-0.49,0.75l0.38,2.05l-0.92,-0.22l-0.89,-0.92l-0.77,-0.13l-1.96,-1.65l-2.41,-0.6l-1.6,0.04l-1.04,-0.5l-2.89,0.47l-0.61,0.45l-1.18,2.52l-3.48,0.73l-0.58,0.77l-2.06,-0.34l-2.82,0.93l-0.68,0.83l-0.56,2.51l-0.78,0.28l-0.81,0.87l-0.65,0.28l0.16,-1.96l-0.75,-0.91l-1.02,0.34l-0.76,0.92l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.1,0.83l-0.73,2.01l-1.2,0.59l-0.11,-1.38l-0.46,-1.06l0.34,-1.69l-0.17,-0.37l-0.66,-0.17l-0.45,0.58l-0.6,2.12l-0.22,2.57l-1.12,0.91l-1.26,3.02l-0.62,2.66l-2.56,5.33l-0.69,0.74l0.12,0.91l-1.4,-1.28l0.18,-1.75l0.63,-1.69l-0.41,-0.81l-0.62,-0.31l-1.36,0.85l-1.16,0.09l0.04,-1.29l0.81,-1.45l-0.41,-1.34l0.3,-1.09l-0.58,-0.98l0.15,-0.83l-1.9,-1.55l-1.1,-0.06l-0.59,-0.44l-0.86,0.2l-0.62,-0.2l0.3,-1.36l-0.94,-1.45l-1.13,-0.51l-2.23,-0.1l-3.2,-0.71l-1.55,0.59l-1.43,-0.42l-1.62,0.17l-4.56,-1.94l-15.37,-2.5l-2.0,-3.4l-1.88,-0.96l-0.76,0.26l-0.1,-0.3ZM603.38,98.65l-0.01,0.52l-0.46,0.32l-0.7,1.39l0.08,0.57l-0.65,-0.58l0.91,-2.16l0.83,-0.06ZM643.87,87.47l1.99,-1.52l0.17,-0.57l-0.27,-0.64l1.05,0.16l0.8,1.24l0.81,0.19l-0.27,1.08l-0.36,0.19l-1.5,-0.34l-0.77,0.45l-1.63,-0.24ZM635.6,77.64l0.56,-0.83l0.52,0.05l-0.37,1.32l0.11,0.71l-0.35,-0.9l-0.46,-0.35ZM636.53,79.17l0.09,0.14l0.01,0.01l-0.02,-0.01l-0.08,-0.14ZM637.39,81.25l0.4,0.45l0.22,0.61l-0.63,-0.71l0.01,-0.34ZM633.73,93.13l1.41,0.25l0.36,-0.18l0.4,0.21l-0.17,0.52l-0.75,0.11l-1.24,-0.9ZM618.85,96.77l0.62,2.25l-0.8,0.78l-0.39,-0.27l0.56,-2.76ZM613.26,110.83l0.47,0.3l-0.09,0.57l-0.45,-0.69l0.06,-0.17ZM612.23,113.57l0.0,-0.03l0.02,-0.04l-0.03,0.07ZM599.41,82.64l-0.23,-0.37l0.03,-0.4l0.37,0.32l-0.17,0.45ZM570.51,72.75l-0.51,-0.27l-1.16,0.06l-0.04,-1.56l1.0,-1.03l1.17,-2.09l1.84,-1.49l0.63,-0.0l0.53,-0.58l2.08,-0.89l3.34,-0.42l1.1,0.66l-0.54,0.38l-1.31,-0.12l-2.27,0.78l-0.15,0.29l0.3,0.59l0.71,0.13l-1.19,0.98l-1.4,1.89l-0.7,0.29l-0.36,1.45l-1.15,1.37l-0.66,2.04l-0.67,-0.87l0.75,-0.97l0.14,-1.95l-0.63,-0.37l-0.21,0.15l-0.6,0.92l-0.05,0.67ZM558.28,58.21l0.75,-0.98l-0.39,-0.33l0.56,-0.53l4.62,-2.98l1.97,-1.72l0.62,-0.18l-0.45,0.65l0.1,0.79l-0.43,0.49l-4.25,2.56l-0.86,0.99l0.24,0.36l-1.87,1.17l-0.61,-0.28Z\", \"name\": \"Michigan\"}, \"US-GA\": {\"path\": \"M654.05,331.71l22.02,-3.57l20.65,-3.86l-1.48,1.42l-0.51,1.68l-0.66,0.82l-0.41,1.73l0.11,1.23l0.82,0.78l1.84,0.8l1.03,0.12l2.7,2.03l0.84,0.24l1.9,-0.37l0.6,0.25l0.8,1.64l1.51,1.6l1.04,2.5l1.33,0.82l0.84,1.16l0.56,0.26l1.0,1.77l1.07,0.3l1.17,0.99l3.81,1.85l2.41,3.16l2.25,0.58l2.53,1.67l0.5,2.34l1.25,1.02l0.47,-0.16l0.31,0.49l-0.1,0.62l0.79,0.73l0.79,0.09l0.56,1.21l4.99,1.89l0.4,1.78l1.54,1.73l1.02,2.01l-0.07,0.81l0.49,0.69l0.11,1.24l1.04,0.79l1.17,0.17l1.25,0.62l0.28,0.53l0.57,0.23l1.12,2.56l0.76,0.57l0.08,2.68l0.77,1.48l1.38,0.9l1.52,-0.27l1.44,0.76l1.45,0.11l-0.59,0.78l-0.56,-0.35l-0.47,0.28l-0.4,0.99l0.62,0.91l-0.38,0.48l-1.38,-0.16l-0.77,-0.55l-0.65,0.44l0.26,0.71l-0.49,0.52l0.36,0.61l0.94,-0.04l0.5,0.29l-0.58,1.35l-1.43,0.27l-1.33,-0.44l-0.44,0.39l0.34,0.85l1.23,0.35l-0.5,0.87l0.23,0.35l-0.2,0.64l0.83,0.64l-0.33,0.44l-0.72,-0.13l-0.96,0.51l-0.1,0.62l1.09,0.45l0.05,0.95l0.48,-0.07l1.2,-1.17l-0.92,2.31l-0.31,-0.58l-0.59,-0.08l-0.44,0.72l0.29,0.7l0.98,0.83l-2.32,0.04l-0.92,-0.28l-0.63,0.3l0.06,0.63l0.55,0.34l2.76,0.24l1.07,0.66l-0.02,0.34l-0.56,0.22l-0.88,1.95l-0.5,-1.41l-0.45,-0.13l-0.6,0.33l-0.15,0.84l0.34,0.96l-0.6,0.11l-0.03,0.84l-0.3,0.16l0.07,0.46l1.33,1.15l-1.09,1.03l0.32,0.47l0.77,0.07l-0.39,0.92l0.06,0.88l-0.46,0.51l1.1,1.66l0.03,0.76l-0.79,0.33l-2.64,-0.17l-4.06,-0.96l-1.31,0.35l-0.18,0.74l-0.68,0.26l-0.35,1.25l0.28,2.08l0.95,1.36l0.13,4.25l-1.97,0.4l-0.54,-0.92l-0.12,-1.3l-1.33,-1.82l-49.22,5.14l-0.72,-0.56l-0.86,-2.7l-0.94,-1.51l-0.56,-0.38l0.16,-0.68l-0.73,-1.51l-1.82,-1.81l-0.43,-1.75l0.25,-0.8l0.06,-5.18l-0.6,-1.81l-1.19,-1.47l-1.03,-2.65l0.12,-1.65l0.78,-2.36l-0.25,-1.53l0.19,-2.11l1.62,-1.33l0.46,-1.47l-0.55,-0.61l-1.42,-0.69l0.09,-2.15l-0.97,-1.87l-2.18,-2.42l-1.03,-2.81l-0.75,-0.68l-0.17,-0.96l-0.77,-1.37l-13.99,-43.12ZM745.21,389.83l0.7,-0.26l-0.07,0.82l-0.29,-0.33l-0.34,-0.24ZM743.75,406.73l0.05,0.87l-0.01,0.46l-0.34,-0.56l0.3,-0.76Z\", \"name\": \"Georgia\"}, \"US-AZ\": {\"path\": \"M128.39,384.21l0.44,-1.81l1.29,-1.29l0.54,-1.11l0.48,-0.25l1.66,0.62l0.96,-0.03l0.52,-0.46l0.28,-1.17l1.31,-1.0l0.24,-2.73l-0.46,-1.24l-0.84,-0.66l-2.07,-0.67l-0.3,-0.61l0.8,-2.4l0.0,-1.39l-0.52,-1.2l0.57,-0.86l-0.2,-0.87l1.57,-0.27l2.29,-2.81l0.65,-2.43l0.65,-0.81l0.02,-3.17l0.55,-0.62l-0.29,-1.43l1.71,-1.14l1.03,-1.85l3.16,-1.29l2.03,-1.58l0.26,-0.53l-0.13,-1.04l-3.25,-3.49l-0.51,-0.22l0.22,-1.26l-0.66,-1.46l0.07,-0.91l-0.88,-2.76l-0.84,-0.56l-0.19,-1.65l-0.69,-0.8l0.19,-3.54l0.58,-0.87l-0.3,-0.86l1.04,-0.4l0.4,-1.42l0.14,-3.2l-0.76,-3.66l0.47,-0.88l0.29,-1.67l-0.4,-3.0l0.85,-2.56l-0.8,-1.87l-0.03,-0.92l0.43,-0.52l0.34,-1.35l2.54,-0.63l1.75,0.99l1.43,-0.19l0.96,2.24l0.79,0.71l1.54,0.14l1.01,-0.5l1.02,-2.27l0.94,-1.19l2.57,-16.95l42.43,5.78l42.56,4.67l-11.82,123.66l-36.89,-4.05l-36.34,-18.98l-28.44,-15.56Z\", \"name\": \"Arizona\"}, \"US-MT\": {\"path\": \"M166.3,57.31l0.69,-0.1l0.33,-0.38l-0.9,-1.99l0.83,-0.96l-0.39,-1.3l0.09,-0.96l-1.24,-1.93l-0.24,-1.49l-1.03,-1.33l-1.19,-2.44l3.53,-20.65l43.66,6.71l43.06,5.23l42.75,3.84l43.15,2.53l-3.53,86.06l-28.11,-1.47l-26.82,-1.91l-26.78,-2.4l-25.84,-2.79l-0.44,0.35l-1.22,10.41l-1.51,-2.01l-0.03,-0.91l-1.19,-2.35l-1.25,-0.74l-1.8,0.92l0.03,1.05l-0.72,0.42l-0.34,1.56l-2.42,-0.41l-1.91,0.57l-0.92,-0.85l-3.36,0.09l-2.38,-0.96l-1.68,0.58l-0.84,1.49l-4.66,-1.6l-1.3,0.37l-1.12,0.9l-0.31,0.67l-1.65,-1.4l0.22,-1.43l-0.9,-1.71l0.4,-0.36l0.07,-0.62l-1.17,-3.08l-1.45,-1.25l-1.44,0.36l-0.21,-0.64l-1.08,-0.9l-0.41,-1.37l0.68,-0.61l0.2,-1.41l-0.77,-2.38l-0.77,-0.35l-0.31,-1.58l-1.51,-2.54l0.23,-1.51l-0.56,-1.26l0.34,-1.4l-0.73,-0.86l0.48,-0.98l-0.21,-0.74l-1.14,-0.75l-0.13,-0.59l-0.85,-0.91l-0.8,-0.4l-0.51,0.37l-0.07,0.74l-0.7,0.27l-1.13,1.22l-1.75,0.37l-1.21,1.07l-1.08,-0.85l-0.64,-1.01l-1.06,-0.44l0.02,-0.86l0.74,-0.63l0.24,-1.06l-0.61,-1.6l0.9,-1.09l1.07,-0.08l0.83,-0.8l-0.26,-1.14l0.38,-1.07l-0.95,-0.81l-0.04,-0.81l0.66,-1.28l-0.59,-1.07l0.74,-0.07l0.38,-0.42l-0.04,-1.77l1.83,-3.73l-0.14,-1.05l0.89,-0.62l0.6,-3.17l-0.78,-0.5l-1.8,0.37l-1.33,-0.11l-0.64,-0.55l0.37,-0.83l-0.62,-0.97l-0.66,-0.23l-0.72,0.35l-0.07,-0.95l-1.74,-1.63l0.04,-1.84l-1.68,-1.82l-0.08,-0.69l-1.55,-2.88l-1.07,-1.29l-0.57,-1.63l-2.35,-1.34l-0.95,-1.95l-1.44,-1.19Z\", \"name\": \"Montana\"}, \"US-MS\": {\"path\": \"M555.49,431.1l0.67,-0.97l-1.05,-1.76l0.18,-1.63l-0.81,-0.87l1.69,-0.25l0.47,-0.54l0.4,-2.74l-0.77,-1.82l1.56,-1.79l0.25,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.63,-0.96l1.14,-0.28l0.96,-2.59l0.91,-1.31l-0.16,-0.86l-1.54,-0.43l-0.35,-0.96l-1.83,-1.04l-0.07,-2.14l-0.93,-0.74l-0.45,-0.84l-0.02,-0.37l1.14,-0.29l0.47,-0.69l-0.26,-0.89l-1.41,-0.49l0.23,-1.77l0.98,-1.54l-0.77,-1.06l-1.08,-0.31l-0.15,-2.82l0.9,-0.54l0.23,-0.8l-0.62,-2.52l-1.25,-0.66l0.7,-1.33l-0.07,-2.22l-2.02,-1.52l1.14,-0.47l0.12,-1.41l-1.34,-0.89l1.58,-2.04l0.93,-0.31l0.36,-0.69l-0.52,-1.56l0.42,-1.35l-0.9,-0.89l1.6,-0.83l1.24,-0.27l0.59,-0.77l-0.09,-1.07l-1.41,-0.95l1.39,-1.08l0.62,-1.77l0.5,0.11l0.45,-0.28l0.34,-0.98l-0.2,-0.77l1.48,-0.43l1.22,-1.21l0.07,-3.53l-0.46,-1.53l0.36,-1.78l0.73,0.09l0.68,-0.33l0.42,-0.87l-0.41,-1.06l2.72,-1.71l0.58,-1.06l-0.29,-1.28l36.45,-4.1l0.86,1.26l0.85,0.45l0.99,66.5l5.52,32.95l-0.73,0.69l-1.53,-0.3l-0.91,-0.94l-1.32,1.06l-1.23,0.17l-2.17,-1.26l-1.85,-0.19l-0.83,0.36l-0.34,0.44l0.32,0.41l-0.56,0.36l-3.96,1.66l-0.05,-0.5l-0.96,-0.52l-1.0,0.04l-0.59,1.0l0.76,0.61l-1.59,1.21l-0.32,1.28l-0.69,0.3l-1.34,-0.06l-1.16,-1.86l-0.08,-0.89l-0.92,-1.47l-0.21,-1.01l-1.4,-1.63l-1.16,-0.54l-0.47,-0.78l0.1,-0.62l-0.69,-0.92l0.21,-1.99l0.5,-0.93l0.66,-2.98l-0.06,-1.23l-0.43,-0.29l-34.66,3.41Z\", \"name\": \"Mississippi\"}, \"US-SC\": {\"path\": \"M697.56,324.11l4.86,-2.69l1.02,-0.05l1.11,-1.38l3.93,-1.9l0.45,-0.88l0.63,0.22l22.71,-3.36l0.07,1.22l0.42,0.57l0.71,0.01l1.21,-1.3l2.82,2.54l0.46,2.48l0.55,0.52l19.74,-3.49l22.74,15.07l0.02,0.55l-2.48,2.18l-2.44,3.67l-2.41,5.72l-0.09,2.74l-1.08,-0.21l0.85,-2.73l-0.64,-0.23l-0.76,0.87l-0.56,1.38l-0.11,1.55l0.84,0.95l1.05,0.23l0.44,0.91l-0.75,0.08l-0.41,0.56l-0.87,0.02l-0.24,0.68l0.94,0.45l-1.1,1.13l-0.07,1.02l-1.34,0.63l-0.5,-0.61l-0.5,-0.08l-1.07,0.87l-0.56,1.76l0.43,0.87l-1.2,1.23l-0.61,1.44l-1.2,1.01l-0.9,-0.4l0.27,-0.6l-0.53,-0.74l-1.38,0.31l-0.11,0.43l0.36,0.77l-0.52,0.03l0.05,0.76l0.72,0.58l1.3,0.43l-0.12,0.39l-0.88,0.94l-1.22,0.23l-0.25,0.51l0.33,0.45l-2.3,1.34l-1.42,-0.85l-0.56,0.11l-0.11,0.67l1.19,0.78l-1.54,1.57l-0.72,-0.75l-0.5,0.52l-0.0,0.74l-0.69,-0.37l-0.85,-0.0l-1.34,-0.84l-0.45,0.5l0.16,0.53l-1.73,0.17l-0.44,0.37l-0.06,0.77l0.65,0.23l1.43,-0.17l-0.26,0.55l0.42,0.25l1.91,-0.15l0.11,0.22l-0.97,0.86l-0.32,0.78l0.57,0.49l0.94,-0.53l0.03,0.21l-1.12,1.09l-0.99,0.43l-0.21,-2.04l-0.69,-0.27l-0.22,-1.55l-0.88,-0.15l-0.31,0.58l0.86,2.7l-1.12,-0.66l-0.63,-1.0l-0.4,-1.76l-0.65,-0.2l-0.52,-0.63l-0.69,0.0l-0.27,0.6l0.84,1.02l0.01,0.68l1.11,1.83l-0.02,0.86l1.22,1.17l-0.62,0.35l0.03,0.98l-1.2,3.56l-1.52,-0.78l-1.52,0.26l-0.97,-0.68l-0.54,-1.03l-0.17,-2.93l-0.86,-0.75l-1.06,-2.47l-1.04,-0.95l-3.23,-1.33l-0.49,-2.65l-1.12,-2.17l-1.43,-1.58l-0.06,-1.07l-0.76,-1.21l-4.82,-1.69l-0.58,-1.27l-1.21,-0.37l0.02,-0.7l-0.53,-0.87l-0.87,0.0l-0.73,-0.61l0.03,-1.21l-0.66,-1.26l-2.7,-1.78l-2.16,-0.52l-2.36,-3.12l-3.93,-1.93l-1.22,-1.03l-0.83,-0.12l-1.05,-1.81l-0.51,-0.22l-0.91,-1.21l-1.18,-0.68l-0.99,-2.42l-1.54,-1.65l-1.02,-1.87l-1.06,-0.37l-1.93,0.37l-0.46,-0.16l-2.75,-2.19l-1.06,0.02l-1.7,-0.74l-0.52,-0.53l0.36,-2.22l0.64,-0.78l0.34,-1.39l1.36,-1.23l0.4,-0.98ZM750.38,375.27l0.73,-0.08l0.51,0.45l-1.23,1.9l0.28,-1.22l-0.3,-1.06Z\", \"name\": \"South Carolina\"}, \"US-RI\": {\"path\": \"M859.15,133.1l0.33,0.01l1.02,2.65l-0.31,0.56l-1.04,-3.22ZM858.41,136.77l-0.28,-0.34l0.24,-1.5l0.41,1.53l-0.37,0.31ZM851.13,141.49l0.22,-0.46l-0.53,-2.22l-3.14,-10.0l5.61,-1.84l0.76,2.06l0.8,0.25l0.19,0.73l0.08,0.41l-0.77,0.25l0.03,0.29l0.51,1.45l0.59,0.5l-0.6,0.15l-0.46,0.73l0.87,0.97l-0.14,1.22l0.94,2.18l-0.32,2.08l-1.33,0.23l-3.15,2.19l-0.16,-1.21ZM855.93,131.57l0.26,0.1l0.01,0.09l-0.17,-0.08l-0.1,-0.11ZM857.32,132.24l0.23,0.48l-0.2,0.31l-0.04,-0.39l0.01,-0.4ZM855.92,145.03l0.11,0.11l-0.18,0.1l-0.03,-0.14l0.11,-0.07Z\", \"name\": \"Rhode Island\"}, \"US-CT\": {\"path\": \"M823.44,156.54l2.83,-3.23l-0.07,-0.54l-1.31,-1.25l-3.5,-15.89l9.81,-2.41l0.6,0.46l0.65,-0.26l0.23,-0.58l14.16,-4.0l3.2,10.18l0.47,1.96l-0.04,1.69l-1.65,0.32l-0.91,0.81l-0.69,-0.36l-0.5,0.11l-0.18,0.91l-1.15,0.07l-1.27,1.27l-0.62,-0.14l-0.56,-1.02l-0.89,-0.09l-0.21,0.67l0.75,0.64l0.08,0.54l-0.89,-0.02l-1.02,0.87l-1.65,0.07l-1.15,0.94l-0.86,-0.09l-2.05,0.82l-0.4,-0.68l-0.61,0.11l-0.89,2.12l-0.59,0.29l-0.83,1.29l-0.79,-0.05l-0.94,0.74l-0.2,0.63l-0.53,0.05l-0.88,0.75l-2.77,3.07l-0.96,0.27l-1.24,-1.04Z\", \"name\": \"Connecticut\"}}, \"height\": 589.0572567800147, \"projection\": {\"type\": \"aea\", \"centralMeridian\": -100.0}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-us-lcc-en.js",
    "content": "$.fn.vectorMap('addMap', 'us_lcc_en',{\"insets\": [{\"width\": 220, \"top\": 440, \"height\": 166.21110208955304, \"bbox\": [{\"y\": -9267552.531674266, \"x\": -5155290.453049837}, {\"y\": -6764289.41437011, \"x\": -1841926.4305298943}], \"left\": 0}, {\"width\": 80, \"top\": 460, \"height\": 143.83286142212137, \"bbox\": [{\"y\": -4795881.348142953, \"x\": -6003393.3393215705}, {\"y\": -4216840.972769757, \"x\": -5681330.4284412395}], \"left\": 245}, {\"width\": 900.0, \"top\": 0, \"height\": 551.9026719088881, \"bbox\": [{\"y\": -5998757.84041658, \"x\": -2034551.3272073334}, {\"y\": -3186864.9120395407, \"x\": 2550865.204273278}], \"left\": 0}], \"paths\": {\"US-VA\": {\"path\": \"M684.15,290.12l1.59,-0.92l1.65,-0.49l1.11,-0.95l3.57,-1.7l0.73,-2.31l0.83,-0.2l2.32,-1.54l0.04,-1.79l2.04,-1.86l-0.13,-1.56l0.25,-0.41l5.0,-4.09l4.74,-5.97l0.1,0.61l0.97,0.52l0.34,1.35l1.33,0.71l0.71,0.79l1.47,0.07l2.1,1.08l1.41,-0.11l0.79,-0.41l0.76,-1.22l1.18,-0.57l0.53,-1.36l2.74,1.43l1.42,-1.1l2.25,-1.01l0.77,0.05l1.07,-0.96l0.33,-0.82l-0.49,-0.94l0.23,-0.41l1.91,0.55l3.25,-2.63l0.3,-0.1l0.51,0.71l0.66,-0.08l2.37,-2.33l0.17,-0.85l-0.5,-0.49l0.98,-1.12l0.1,-0.6l-0.29,-0.5l-1.01,-0.43l0.69,-2.99l2.58,-4.76l0.54,-2.12l-0.02,-1.88l1.6,-2.53l-0.22,-0.92l0.24,-0.83l0.5,-0.48l0.38,-1.68l-0.02,-3.13l1.24,0.17l1.19,1.69l3.81,0.37l0.58,-0.28l1.03,-2.5l0.18,-2.33l0.7,-1.04l-0.05,-1.59l0.75,-2.28l1.8,0.72l0.65,-0.18l1.29,-3.27l0.57,0.04l0.59,-0.39l0.51,-1.19l0.81,-0.68l0.43,-1.78l1.36,-2.42l-0.37,-2.53l0.53,-1.74l-0.32,-1.97l9.23,4.37l0.58,-0.3l0.61,-3.95l2.61,-0.11l0.63,0.55l1.06,0.21l-0.5,1.72l0.62,0.87l1.62,0.81l2.53,-0.08l1.04,1.14l1.64,0.09l1.95,1.46l0.58,2.48l-0.94,0.78l-0.45,0.03l-0.3,0.43l0.12,0.7l-0.61,-0.05l-0.48,0.59l-0.35,2.47l0.08,2.25l-0.43,0.25l0.01,0.6l1.04,0.73l-0.35,0.14l-0.17,0.6l0.45,0.3l1.64,-0.1l1.38,-0.62l1.77,-1.62l0.4,0.56l-0.58,0.35l0.03,0.59l1.91,1.03l0.65,1.06l1.7,0.31l1.38,-0.13l0.95,0.47l0.82,-0.66l1.06,-0.1l0.33,0.55l1.26,0.59l-0.09,0.54l0.37,0.54l0.94,-0.24l0.42,0.54l3.97,0.8l0.26,1.1l-0.87,-0.4l-0.56,0.45l0.9,1.7l-0.35,0.57l0.62,0.77l-0.42,0.88l0.23,0.58l-1.36,-0.33l-0.59,-0.7l-0.66,0.19l-0.1,0.43l-2.47,-2.24l-0.55,0.06l-0.38,-0.54l-0.52,0.32l-1.37,-1.46l-1.24,-0.4l-2.88,-2.64l-1.34,-0.1l-1.12,-0.78l-1.17,0.07l-0.39,0.52l0.48,0.71l1.1,-0.03l0.64,0.66l1.33,0.05l0.6,0.41l0.63,1.37l1.47,1.07l1.14,0.32l1.54,1.75l2.56,0.89l1.41,1.84l2.15,-0.05l1.26,0.45l-0.58,0.69l0.31,0.48l2.03,0.31l0.27,0.7l0.56,0.09l0.14,1.64l-1.01,-0.73l-0.39,0.21l-1.14,-0.97l-0.58,0.3l0.11,0.81l-0.3,0.68l0.7,0.69l-0.16,0.59l1.12,0.3l-0.86,0.45l-2.14,-0.68l-1.4,-1.34l-0.84,-0.3l-2.25,-1.81l-0.57,0.12l-0.21,0.53l0.27,0.8l0.64,0.2l3.84,3.04l2.7,1.06l1.28,-0.35l0.46,1.05l1.27,0.23l-0.43,0.66l0.3,0.56l0.93,-0.2l0.01,1.21l-0.92,0.42l-0.57,0.74l-0.72,-0.91l-3.22,-1.51l-0.3,-1.14l-0.6,-0.57l-0.86,-0.1l-1.2,0.68l-1.72,-0.41l-0.37,-1.13l-0.71,-0.04l-0.05,1.3l-0.33,0.41l-1.44,-1.28l-0.51,0.1l-0.49,0.57l-0.66,-0.38l-0.98,0.46l-2.23,-0.07l-0.37,0.94l0.35,0.45l1.91,0.18l1.4,-0.33l0.85,0.23l0.56,-0.69l0.64,0.86l1.35,0.4l1.96,-0.34l1.51,0.68l0.67,-0.64l0.96,2.43l3.18,1.16l0.38,0.88l-0.57,1.02l0.56,0.43l1.72,-1.32l0.89,-0.03l0.84,0.63l0.79,-0.28l-0.62,-0.88l-0.2,-1.14l3.79,0.02l1.13,-0.45l1.91,3.14l-0.45,0.71l0.68,3.04l-1.2,-0.55l-0.01,0.87l-33.61,8.85l-34.62,8.17l-19.56,3.56l-11.81,1.37l-0.82,0.62l-28.25,5.27ZM782.77,223.09l0.13,0.08l-0.05,0.06l-0.01,-0.03l-0.07,-0.12ZM809.86,243.6l0.52,-1.12l-0.27,-0.54l-0.36,-0.07l0.57,-0.97l-0.39,-0.71l-0.03,-0.47l0.43,-0.35l-0.18,-0.72l0.63,-0.31l0.22,-0.6l0.12,-2.29l1.01,-0.4l-0.13,-0.88l0.48,-0.14l-0.27,-1.51l-0.77,-0.39l0.85,-0.56l0.09,-1.02l2.68,-1.14l0.39,2.43l-1.05,4.15l-0.21,2.35l0.34,1.06l-0.33,0.97l-0.61,-0.77l-0.8,0.16l-0.38,0.95l0.26,0.36l-0.64,0.46l-0.3,0.85l0.17,1.04l-0.3,1.44l0.4,2.43l-0.6,0.59l0.07,1.31l-1.39,-1.86l0.22,-0.92l-0.34,-1.54l0.28,-0.97l-0.38,-0.29Z\", \"name\": \"Virginia\"}, \"US-PA\": {\"path\": \"M717.56,161.53l0.63,-0.19l4.28,-3.74l1.16,5.12l0.48,0.3l34.83,-8.31l34.25,-9.05l1.43,0.55l0.73,1.36l0.63,0.12l0.77,-0.34l1.24,0.56l0.16,0.84l0.81,0.39l-0.15,0.58l0.92,2.65l1.92,2.02l2.12,0.71l2.21,-0.24l0.72,0.77l-0.89,0.87l-0.71,1.48l-0.16,2.23l-1.39,3.33l-1.36,1.59l0.04,0.79l1.8,1.66l-0.29,1.63l-0.84,0.44l-0.22,0.65l0.15,1.46l1.06,2.82l0.53,0.24l1.2,-0.2l1.2,2.33l0.96,0.56l0.66,-0.27l0.61,0.88l4.26,2.64l0.12,0.39l-1.28,0.94l-3.69,4.22l-0.22,0.75l0.18,0.88l-1.35,1.14l-0.84,0.16l-1.32,1.09l-0.32,0.65l-1.72,-0.09l-2.03,0.86l-1.14,1.36l-0.4,1.38l-37.24,9.65l-39.13,9.08l-10.34,-47.42l1.91,-1.23l3.06,-3.05Z\", \"name\": \"Pennsylvania\"}, \"US-TN\": {\"path\": \"M573.2,341.46l0.85,-0.82l0.29,-1.35l1.01,0.04l0.65,-0.79l-1.01,-4.82l1.41,-1.91l0.06,-1.31l1.19,-0.47l0.36,-0.48l-0.64,-1.29l0.52,-0.64l0.05,-0.56l-0.9,-1.3l2.56,-1.56l1.09,-1.12l-0.14,-0.84l-0.85,-0.52l0.13,-0.18l0.34,-0.16l0.85,0.36l0.45,-0.33l-0.27,-1.3l-0.85,-0.88l0.05,-0.69l0.5,-1.41l1.01,-1.1l-1.35,-2.02l1.37,-0.22l0.61,-0.55l-0.14,-0.64l-1.18,-0.79l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.59,-1.35l0.02,-0.36l0.38,0.53l0.47,0.07l1.18,-1.14l23.75,-2.95l0.35,-0.41l-0.1,-1.33l-0.84,-2.34l2.99,-0.1l0.82,0.57l22.86,-3.69l7.67,-0.52l7.52,-0.92l32.92,-4.79l1.11,-0.6l29.37,-5.47l0.73,-0.6l3.56,-0.57l-0.39,1.41l0.44,0.84l-0.39,1.97l0.36,0.8l-1.15,-0.02l-1.71,1.79l-1.19,3.85l-0.55,0.7l-0.57,0.08l-0.64,-0.72l-1.44,-0.0l-2.67,1.74l-1.41,2.71l-0.96,0.89l-0.34,-0.33l-0.14,-1.04l-0.73,-0.52l-0.53,0.15l-2.3,1.81l-0.29,1.31l-0.94,-0.23l-0.89,0.48l-0.16,0.76l0.33,0.71l-0.84,2.15l-1.29,0.07l-1.75,1.14l-1.28,1.24l-0.61,1.05l-0.78,0.28l-2.28,2.45l-4.05,0.81l-2.58,1.7l-0.49,1.08l-0.88,0.55l-0.55,0.8l-0.17,2.85l-0.35,0.6l-1.66,0.53l-0.89,-0.15l-1.06,1.14l0.23,5.18l-20.28,3.48l-21.69,3.21l-25.86,3.15l-0.13,0.28l-7.43,0.94l-28.83,3.33Z\", \"name\": \"Tennessee\"}, \"US-ID\": {\"path\": \"M132.97,123.81l-0.34,-0.44l0.1,-1.98l0.55,-1.73l1.43,-1.2l2.14,-3.56l1.69,-0.91l1.4,-1.51l1.09,-2.13l0.06,-1.21l2.23,-2.39l1.45,-2.68l0.38,-1.36l2.06,-2.24l1.91,-2.8l0.04,-1.01l-0.76,-2.96l-2.11,-1.96l-0.86,-0.37l-0.84,-1.62l-0.39,-3.03l-0.58,-1.2l0.95,-1.18l-0.1,-2.36l-1.01,-2.71l0.47,-0.99l10.25,-55.09l13.33,2.45l-3.77,21.08l1.25,2.93l0.98,1.29l0.25,1.57l1.15,1.79l-0.13,0.84l0.38,1.16l-1.0,0.96l0.82,1.79l-0.84,0.11l-0.28,0.71l1.91,1.71l1.01,2.06l2.23,1.25l0.47,1.49l1.14,1.46l1.46,2.82l0.08,0.69l1.62,1.83l-0.01,1.89l1.78,1.73l-0.08,1.36l0.74,0.19l0.9,-0.58l0.35,0.47l-0.36,0.55l0.06,0.54l1.1,0.97l1.61,0.16l1.82,-0.35l-0.65,2.62l-0.99,0.53l0.25,1.14l-1.86,3.74l0.05,1.72l-0.81,0.07l-0.37,0.54l0.59,1.33l-0.62,0.9l-0.04,1.17l0.96,0.94l-0.37,0.81l0.27,1.02l-1.57,0.42l-1.22,1.41l0.09,1.11l0.45,0.78l-0.14,0.74l-0.83,0.77l-0.21,1.52l1.48,0.64l1.37,1.8l0.78,0.28l1.08,-0.34l0.56,-0.79l1.85,-0.4l1.22,-1.27l0.82,-0.29l0.16,-0.76l0.78,0.82l0.22,0.71l1.05,0.65l-0.43,1.23l0.72,0.95l-0.35,1.37l0.56,1.35l-0.22,1.61l1.53,2.65l0.3,1.73l0.82,0.37l0.65,2.08l-0.19,0.98l-0.77,0.63l0.5,1.9l1.23,1.16l0.3,0.79l0.81,0.09l0.87,-0.36l1.04,0.93l1.04,2.79l-0.51,0.81l0.88,1.83l-0.28,0.59l0.11,0.98l2.28,2.42l0.97,-0.13l-0.0,-1.13l1.08,-0.88l0.93,-0.21l4.53,1.64l0.69,-0.31l0.68,-1.34l1.2,-0.39l2.25,0.94l3.3,-0.08l0.95,0.88l2.29,-0.56l3.23,0.8l0.46,-0.49l-0.67,-0.77l0.26,-1.05l0.74,-0.47l-0.06,-0.96l1.23,-0.5l0.48,0.37l1.06,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.5,53.36l-47.53,-6.62l-47.01,-8.09l7.13,-38.73l1.13,-1.16l1.09,-2.65l-0.2,-1.74l0.74,-0.14l0.78,-1.6l-0.89,-1.27l-0.17,-1.2l-1.24,-0.09l-0.63,-0.82l-0.89,0.28Z\", \"name\": \"Idaho\"}, \"US-NV\": {\"path\": \"M138.94,329.03l-12.68,-16.85l-36.47,-50.78l-25.23,-34.32l14.11,-63.12l46.9,9.68l47.03,8.11l-19.28,123.81l-0.91,1.13l-1.0,2.15l-0.44,0.17l-1.35,-0.23l-0.97,-2.22l-0.7,-0.63l-1.42,0.2l-1.95,-1.03l-1.61,0.21l-1.8,0.93l-0.78,2.44l0.87,2.57l-0.61,0.95l-0.25,1.29l0.37,3.09l-0.77,2.5l0.76,3.67l-0.15,3.03l-0.31,1.05l-1.05,0.3l-0.12,0.51l0.32,0.79l-0.53,0.61Z\", \"name\": \"Nevada\"}, \"US-TX\": {\"path\": \"M276.14,412.63l33.26,2.09l32.98,1.42l0.41,-0.38l3.72,-97.69l25.97,0.65l26.4,0.23l0.05,41.52l0.44,0.4l1.03,-0.13l0.79,0.27l3.76,3.78l1.67,0.2l0.88,-0.57l2.5,0.64l0.6,-0.67l0.11,-1.04l0.61,0.75l0.93,0.22l0.38,0.92l0.77,0.77l-0.01,1.62l0.53,0.83l2.86,0.42l1.26,-0.2l1.39,0.88l2.8,0.68l1.83,-0.56l0.63,0.1l1.9,1.78l1.41,-0.11l1.26,-1.42l2.44,0.26l1.68,-0.45l0.32,2.59l2.31,0.73l-0.04,2.07l1.56,0.78l1.82,-0.65l1.58,-1.66l1.03,-0.64l0.41,0.19l0.45,1.62l2.02,0.2l0.25,1.04l0.72,0.47l1.47,-0.21l0.89,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.98l0.26,0.4l-0.45,1.22l0.14,0.76l0.68,1.13l0.78,0.41l0.57,-0.04l0.6,-0.5l0.69,-2.34l0.91,-0.65l0.35,-1.53l0.57,-0.14l0.41,0.14l0.29,0.98l0.58,0.63l1.21,0.01l0.83,0.49l1.26,-0.2l0.69,-1.33l0.49,0.15l-0.13,0.69l0.49,0.69l1.21,0.44l0.49,0.71l1.53,-0.05l1.5,1.72l0.51,0.02l0.63,-0.62l0.08,-0.71l1.5,-0.1l0.93,-1.42l1.89,-0.41l1.67,-1.13l1.53,0.83l1.51,-0.22l0.29,-0.83l2.3,-0.73l0.53,-0.55l0.51,0.32l0.38,0.87l1.83,0.41l1.7,-0.06l1.87,-1.14l0.42,-1.04l1.07,0.3l2.25,1.54l1.16,0.17l1.8,2.05l2.15,0.39l1.05,0.91l0.76,-0.11l2.5,0.84l1.05,0.03l0.37,0.78l1.39,0.96l1.45,-0.12l0.39,-0.71l0.81,0.36l0.88,-0.4l0.93,0.34l0.76,-0.16l0.64,0.36l2.31,33.8l1.53,1.66l1.31,0.82l1.26,1.86l0.58,1.63l-0.09,2.64l1.01,1.2l0.85,0.39l-0.11,0.85l0.75,0.54l0.29,0.87l0.66,0.69l-0.19,1.17l1.01,1.02l0.6,1.63l0.51,0.34l0.55,-0.11l-0.16,1.71l0.82,1.21l-0.64,0.25l-0.35,0.68l0.78,1.26l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.75,0.85l-0.36,1.55l-0.8,1.13l0.65,2.0l-0.83,2.29l0.17,1.08l0.84,1.2l-0.18,1.01l0.5,1.61l-0.24,1.41l-1.13,1.68l-1.03,0.21l-1.76,3.39l-0.04,1.07l1.81,2.38l-3.45,0.09l-7.41,3.83l-0.02,-0.44l-2.2,-0.46l-3.27,1.09l1.09,-3.54l-0.3,-1.22l-0.81,-0.76l-0.62,-0.07l-1.53,0.86l-0.99,2.02l-1.57,-0.96l-1.65,0.13l-0.07,0.63l0.9,0.62l0.01,1.06l0.56,0.39l-0.47,0.7l0.07,1.02l1.65,0.64l-0.63,0.72l0.49,0.98l0.91,0.23l0.28,0.38l-0.41,1.27l-0.46,-0.12l-0.98,0.82l-1.73,2.27l-1.19,-0.41l-0.49,0.13l0.33,1.01l0.08,2.57l-1.86,1.51l-1.92,2.13l-0.97,0.37l-4.13,2.94l-3.32,0.46l-2.56,1.08l-0.2,1.14l-0.76,-0.35l-2.05,0.9l-0.34,-0.35l-1.12,0.18l0.43,-0.88l-0.53,-0.6l-1.44,0.23l-1.22,1.1l-0.61,-0.63l-0.11,-1.21l-1.39,-0.82l-0.5,0.44l0.66,1.45l0.02,1.14l-0.72,0.09l-0.54,-0.44l-0.76,-0.0l-0.56,-1.35l-1.47,-0.38l-0.58,0.39l0.04,0.55l0.95,1.72l0.03,1.25l0.58,0.37l0.37,-0.16l1.15,0.79l-0.76,0.38l-0.27,0.54l0.15,0.37l0.7,0.23l1.09,-0.55l0.97,0.61l-4.3,2.46l-0.58,-0.13l-0.38,-1.46l-0.51,-0.19l-1.14,-1.48l-0.49,-0.03l-0.48,0.51l0.12,0.64l-0.64,0.35l-0.05,0.51l1.2,1.64l-0.31,1.06l0.34,0.86l-1.67,1.82l-0.38,0.2l0.38,-0.66l-0.19,-0.72l0.25,-0.74l-0.46,-0.68l-0.52,0.17l-0.72,1.11l0.26,0.73l-0.4,0.97l-0.07,-1.15l-0.52,-0.55l-1.96,1.31l-0.78,-0.33l-0.7,0.52l0.07,0.76l-0.82,1.01l0.02,0.49l1.26,0.64l0.03,0.58l0.79,0.28l0.7,-1.43l0.87,-0.42l0.01,0.64l-2.84,4.43l-1.24,-1.01l-1.37,0.39l-0.33,-0.35l-2.42,0.4l-0.47,-0.32l-0.65,0.17l-0.18,0.58l0.41,0.62l0.56,0.38l1.55,0.02l-0.01,0.93l0.56,0.65l2.09,1.05l-2.71,7.78l-0.22,0.11l-0.38,-0.56l-0.34,0.1l0.18,-0.78l-0.57,-0.43l-2.37,1.99l-1.74,-2.41l-1.2,-0.93l-0.61,0.4l0.09,0.53l1.46,2.04l-0.1,0.84l-0.95,-0.09l-0.33,0.63l0.51,0.57l1.9,0.07l2.16,0.73l2.11,-0.74l-0.44,1.79l0.24,0.79l-0.98,0.71l0.38,1.63l-1.13,0.15l-0.43,0.41l0.41,2.15l-0.33,1.63l0.45,0.64l0.85,0.24l0.89,2.93l0.72,2.88l-0.92,0.84l0.63,0.49l-0.08,1.31l0.73,0.3l0.18,0.63l0.59,0.29l0.4,1.84l0.7,0.31l0.44,3.31l0.81,0.56l0.7,0.08l-0.32,0.2l-0.23,0.95l0.32,1.11l-0.65,0.8l-0.85,-0.05l-0.54,0.45l0.09,1.35l-0.49,-0.34l-0.5,0.26l-0.39,-0.68l-1.5,-0.47l-2.95,-2.6l-2.23,-0.18l-0.81,-0.52l-4.24,0.1l-0.9,0.44l-0.79,-0.64l-1.07,0.26l-1.26,-0.21l-1.47,-0.72l-0.73,-1.0l-0.62,-0.14l-0.2,-0.74l-1.18,-0.5l-1.0,-0.02l-2.0,-0.89l-1.47,0.4l-0.84,-1.12l-0.61,-0.21l-1.44,-1.42l-1.98,0.01l-1.48,-0.66l-0.86,0.12l-1.64,-0.43l0.29,-1.29l-0.54,-1.03l-0.96,-0.36l-1.67,-6.18l-2.79,-3.08l-0.29,-1.14l-1.09,-0.77l0.35,-0.79l-0.24,-0.77l0.34,-2.23l-0.45,-0.97l-1.06,-1.03l0.66,-2.04l0.05,-1.21l-0.18,-0.71l-0.55,-0.33l-0.15,-1.85l-1.86,-1.46l-0.86,0.22l-0.3,-0.42l-0.81,-0.11l-0.75,-1.33l-2.25,-1.75l0.01,-0.7l-0.51,-0.59l0.12,-0.88l-0.98,-0.93l-0.08,-0.76l-1.13,-0.62l-1.31,-2.92l-2.68,-1.5l-0.38,-0.93l-1.14,-0.6l-0.06,-1.18l-0.83,-1.2l-0.23,-1.46l-0.36,-0.52l0.42,-0.22l-0.04,-0.73l-1.04,-0.5l-0.26,-1.31l-0.82,-0.58l-0.95,-1.76l-0.61,-2.41l-1.86,-2.38l-0.87,-4.28l-1.82,-1.35l0.05,-0.71l-0.76,-1.22l-1.32,-0.76l-0.92,-0.99l-1.75,-0.95l-0.71,-1.87l-1.83,-0.62l-1.45,-1.0l-0.01,-1.64l-0.6,-0.39l-0.89,0.24l-0.12,-0.78l-0.99,-0.33l-0.8,-2.09l-0.56,-0.47l-0.47,0.12l-0.46,-0.44l-0.86,0.27l-0.14,-0.61l-0.44,-0.31l-0.47,0.15l-0.26,0.61l-1.06,0.16l-2.91,-0.47l-0.39,-0.38l-1.49,-0.03l-0.79,0.29l-0.77,-0.44l-2.68,0.27l-3.95,-2.1l-1.36,0.86l-0.65,1.62l-2.0,-0.18l-0.52,0.45l-0.49,-0.17l-1.05,0.49l-1.34,0.14l-3.25,6.44l-0.19,1.78l-0.77,0.67l-0.39,1.81l0.35,0.6l-2.01,1.01l-0.73,1.31l-1.12,0.66l-1.13,2.02l-2.69,-0.47l-1.04,-0.88l-0.55,0.3l-1.71,-1.22l-1.31,-1.64l-2.92,-0.86l-1.16,-0.96l-0.02,-0.67l-0.42,-0.41l-2.77,-0.52l-2.29,-1.05l-1.9,-1.77l-0.91,-1.54l-0.97,-0.92l-1.54,-0.29l-1.78,-1.27l-0.22,-0.56l-1.32,-1.19l-0.65,-2.7l-0.87,-1.02l-0.24,-1.11l-0.76,-1.28l-0.26,-2.35l0.53,-3.06l-3.01,-5.09l-0.05,-1.94l-1.26,-2.52l-0.99,-0.44l-0.43,-1.24l-1.44,-0.81l-2.16,-2.18l-1.03,-0.1l-2.02,-1.26l-3.2,-3.36l-0.59,-1.56l-3.14,-2.56l-1.59,-2.45l-1.2,-0.95l-0.61,-1.05l-4.44,-2.62l-1.19,-2.19l-1.21,-3.23l-1.38,-1.09l-1.13,-0.08l-1.76,-1.68l-0.78,-3.04ZM503.52,468.36l-0.35,0.19l0.19,-0.17l0.16,-0.02ZM500.13,471.02l-0.12,0.17l-0.05,0.03l0.18,-0.2ZM499.19,472.55l0.16,0.05l-0.21,0.2l0.04,-0.13l0.01,-0.12ZM498.43,473.45l-0.15,0.14l0.04,-0.1l0.11,-0.04ZM468.75,489.63l0.04,0.02l-0.03,0.02l-0.0,-0.04ZM455.12,548.8l0.78,-0.53l0.25,-0.72l0.12,1.15l-1.14,0.1ZM462.07,500.4l-0.15,-0.61l1.24,-0.37l-0.3,0.35l-0.8,0.64ZM464.7,498.41l0.11,-0.25l1.31,-0.91l-0.95,0.88l-0.47,0.27ZM466.99,496.67l0.29,-0.26l0.49,-0.04l-0.27,0.14l-0.52,0.16ZM459.12,503.58l0.71,-1.67l0.64,-0.73l-0.01,0.78l-1.34,1.62ZM452.17,516.05l0.07,-0.29l0.1,-0.22l-0.17,0.5ZM452.62,514.77l0.17,-0.39l0.04,-0.06l-0.21,0.45ZM453.57,512.77l-0.01,-0.06l0.06,-0.05l-0.05,0.11Z\", \"name\": \"Texas\"}, \"US-NH\": {\"path\": \"M830.68,105.86l0.18,-1.32l-1.48,-5.32l0.52,-1.45l-0.31,-2.2l0.98,-1.86l-0.16,-2.28l0.61,-2.28l-0.45,-0.61l0.27,-2.29l-0.98,-3.77l0.08,-0.7l0.3,-0.46l1.83,-0.83l0.68,-1.39l1.42,-1.64l0.72,-1.8l-0.26,-1.12l0.51,-0.63l-2.38,-3.45l0.83,-3.26l-0.12,-0.78l-0.82,-1.28l0.26,-0.6l-0.24,-0.7l0.44,-3.2l-0.37,-0.82l0.89,-1.5l2.44,0.3l0.64,-0.89l13.44,34.54l0.88,3.61l2.62,2.16l0.88,0.32l0.38,1.58l1.73,1.27l0.01,0.34l0.78,0.22l-0.05,0.57l-0.43,3.08l-1.57,0.26l-1.31,1.21l-0.5,0.94l-0.96,0.38l-0.49,1.67l-1.08,1.44l-17.58,5.0l-1.71,-1.39l-0.42,-0.87l-0.12,-1.98l0.53,-0.59l0.03,-0.52l-1.08,-5.12Z\", \"name\": \"New Hampshire\"}, \"US-NY\": {\"path\": \"M822.66,166.36l0.68,-2.03l0.63,-0.03l0.54,-0.75l0.77,0.13l0.53,-0.42l-0.04,-0.3l0.57,-0.04l0.27,-0.66l0.66,-0.03l0.19,-0.55l-0.43,-0.81l0.22,-0.53l0.61,-0.38l1.34,0.19l0.53,-0.6l1.46,-0.2l0.21,-0.8l1.86,-0.01l1.08,-0.91l0.11,-0.79l0.62,0.24l0.43,-0.61l4.82,-1.35l2.25,-1.32l1.97,-2.91l-0.19,1.14l-0.97,0.86l-1.21,2.3l0.55,0.46l1.59,-0.37l0.28,0.61l-0.42,0.49l-1.37,0.88l-0.51,-0.06l-2.25,0.95l-0.07,0.92l-0.87,0.01l-2.72,1.74l-1.01,0.16l-0.17,0.79l-1.24,0.11l-2.23,1.92l-4.43,2.22l-0.2,0.71l-0.28,0.08l-0.46,-0.81l-1.41,-0.04l-0.73,0.42l-0.41,0.81l0.22,0.3l-0.91,0.7l-0.76,-0.81l0.32,-1.04ZM829.28,158.96l-0.01,-0.01l0.02,-0.06l-0.01,0.07ZM846.33,148.77l0.14,-0.09l0.08,-0.01l-0.11,0.18l-0.12,-0.07ZM845.51,154.6l0.09,-0.87l0.73,-1.16l1.63,-1.53l1.01,0.29l0.04,-0.81l0.79,0.65l-3.33,3.22l-0.67,0.46l-0.31,-0.24ZM723.17,157.08l3.74,-3.86l1.26,-2.18l1.74,-1.87l1.16,-0.79l1.26,-3.33l1.55,-1.31l0.53,-0.83l-0.22,-1.82l-1.63,-2.37l0.42,-1.12l-0.18,-0.78l-0.84,-0.52l-2.11,0.02l0.04,-0.98l-0.59,-2.19l4.97,-2.98l4.48,-1.84l2.38,-0.22l1.83,-0.76l5.64,-0.31l3.14,1.2l3.15,-1.71l5.49,-1.13l0.58,0.44l0.68,-0.2l0.11,-0.98l1.45,-0.74l1.02,-0.94l0.74,-0.21l0.67,-2.04l1.86,-1.77l0.77,-1.27l1.12,0.02l1.12,-0.54l1.05,-1.63l-0.47,-0.69l0.35,-1.19l-0.26,-0.51l-0.64,0.03l-0.18,-1.16l-0.95,-1.56l-1.01,-0.6l0.12,-0.18l0.6,0.38l0.53,-0.27l0.73,-1.44l-0.02,-0.9l0.8,-0.65l-0.02,-0.97l-0.93,-0.18l-0.59,0.7l-0.27,0.12l0.54,-1.29l-0.81,-0.61l-1.26,0.06l-0.86,0.78l-0.99,-0.68l2.02,-2.52l1.76,-1.49l1.64,-2.65l0.7,-0.57l0.11,-0.59l0.77,-0.96l0.07,-0.56l-0.51,-0.94l0.76,-1.9l4.74,-7.65l4.72,-4.55l2.83,-0.55l19.6,-5.91l0.42,0.87l-0.06,2.0l1.03,1.2l0.48,3.78l2.33,3.2l-0.07,1.88l0.88,2.39l-0.58,1.07l0.04,3.4l0.72,0.88l1.35,2.72l0.2,1.08l0.62,0.83l0.16,3.9l0.56,0.83l0.54,0.07l0.53,-0.61l0.05,-0.86l0.33,-0.08l1.06,1.09l4.12,15.39l0.75,1.17l0.37,15.15l0.61,0.61l3.72,15.98l1.27,1.3l-2.79,3.18l0.03,0.55l1.53,1.27l0.19,0.58l-0.77,0.88l-0.63,1.79l-0.41,0.39l0.15,0.67l-1.24,0.65l0.0,-3.96l-0.58,-2.25l-0.76,-1.59l-1.47,-1.06l-0.18,-1.11l-0.7,-0.09l-0.41,1.33l0.69,1.25l1.06,0.8l0.99,2.79l-13.8,-3.78l-1.29,-1.43l-2.39,0.27l-0.63,-0.41l-1.06,-0.13l-1.76,-1.86l-0.76,-2.29l0.11,-0.72l-0.36,-0.62l-0.55,-0.2l0.08,-0.45l-0.36,-0.42l-1.65,-0.64l-1.08,0.33l-0.76,-1.38l-1.71,-0.71l-34.57,9.14l-34.42,8.22l-1.15,-5.07ZM820.13,168.63l1.08,-0.49l0.15,0.61l-1.16,1.52l-0.07,-1.64ZM731.02,138.24l0.02,-0.68l0.78,-0.08l-0.37,1.08l-0.44,-0.32Z\", \"name\": \"New York\"}, \"US-HI\": {\"path\": \"M295.6,602.68l-0.09,-1.67l-0.5,-1.2l-1.36,-1.92l-0.81,-0.52l0.28,-0.81l-0.26,-0.81l1.55,-2.32l3.47,-3.7l1.36,-3.84l-0.34,-0.67l1.34,-3.38l0.03,-3.33l0.97,-1.19l2.6,-0.55l1.38,0.28l3.13,-1.26l1.83,-0.31l0.55,-0.72l-0.02,-3.0l0.55,-1.89l2.08,-1.33l1.79,2.42l-0.22,1.06l1.84,4.02l1.0,0.39l5.15,8.57l0.71,4.42l-1.86,3.54l0.21,0.61l1.56,1.09l-0.87,2.31l0.29,1.69l1.58,3.4l-1.65,1.04l-2.5,-0.21l-3.62,0.59l-4.92,-1.47l-2.28,-1.5l-7.29,-0.13l-1.75,0.29l-1.79,1.35l-1.85,0.68l-1.27,0.03ZM308.01,538.5l1.75,0.1l0.45,2.33l-0.48,2.26l0.38,0.88l2.49,0.98l1.51,0.11l1.61,1.55l0.21,1.73l0.97,1.09l-0.2,1.18l1.85,2.81l-0.19,0.78l-0.73,0.55l-2.03,0.42l-2.01,-0.21l-1.54,-1.33l-2.4,-0.27l-2.86,-1.65l0.09,-1.41l1.37,-2.06l0.56,-2.29l-0.39,-0.61l-1.46,-0.79l-1.08,-1.95l0.04,-2.96l2.08,-1.24ZM298.76,524.37l0.78,0.38l0.35,1.16l2.76,2.23l0.91,1.23l1.01,0.08l0.77,1.87l1.64,1.17l0.79,0.07l1.14,1.28l-1.54,0.5l-2.97,-0.75l-3.3,-4.38l-3.34,-2.24l-1.49,-0.49l-0.0,-0.85l1.78,-0.49l0.7,-0.77ZM302.19,550.7l-2.27,-1.11l-0.3,-0.63l3.27,0.35l-0.7,1.39ZM299.02,540.44l-1.0,-0.33l-0.74,-1.02l1.13,-2.28l-0.43,-2.01l2.82,1.55l0.54,2.32l0.07,1.24l-2.41,0.51ZM282.01,508.46l0.73,-2.05l-0.37,-0.99l-0.01,-3.16l0.89,-1.06l-0.09,-1.35l2.95,2.09l3.17,-0.67l1.72,0.17l0.36,1.13l-0.49,2.4l0.23,1.66l-0.79,0.68l-0.29,1.71l0.32,1.7l0.94,0.57l0.23,1.2l-0.63,1.26l0.55,1.49l-1.41,-0.01l-0.19,-0.54l-2.19,-0.97l-0.68,-3.14l-1.37,-0.44l0.91,-0.17l0.35,-0.47l-0.05,-0.71l-0.64,-0.76l-0.41,-0.26l-0.38,0.43l-1.05,-0.53l0.12,2.05l-2.44,-1.27ZM260.53,470.55l-0.14,-2.24l-0.95,-0.77l-0.68,-1.38l0.16,-1.33l0.12,-0.42l2.67,-0.89l5.01,0.62l0.67,1.16l2.67,1.22l0.69,1.39l-0.28,2.14l-2.6,1.45l-0.88,1.44l-0.85,0.35l-3.09,0.08l-0.91,-1.7l-1.61,-1.12ZM245.8,462.89l-0.21,-0.88l1.2,-0.84l4.77,-0.76l0.54,0.41l-1.11,0.42l-0.79,1.06l-1.81,-0.57l-1.49,0.36l-1.09,0.8Z\", \"name\": \"Hawaii\"}, \"US-VT\": {\"path\": \"M805.92,73.67l25.93,-8.31l0.92,1.83l-0.71,2.38l-0.01,1.54l2.25,2.7l-0.5,0.59l0.28,1.12l-0.65,1.6l-1.33,1.51l-0.63,1.32l-1.72,0.73l-0.61,0.93l-0.09,0.98l0.97,3.7l-0.26,2.43l0.41,0.53l-0.58,2.1l0.18,2.17l-0.98,1.87l0.29,2.34l-0.52,1.54l1.49,5.38l-0.2,1.22l1.1,5.24l-0.57,0.85l0.14,2.29l0.61,1.24l1.51,1.06l-11.42,3.05l-0.57,-0.83l-4.18,-15.56l-1.73,-1.55l-0.9,0.26l-0.29,1.19l-0.12,-0.25l-0.15,-3.88l-0.69,-0.99l-0.15,-0.97l-1.4,-2.82l-0.63,-0.67l-0.02,-3.13l0.58,-1.15l-0.89,-2.54l0.06,-1.92l-0.4,-0.91l-1.57,-1.6l-0.39,-0.8l-0.45,-3.69l-1.04,-1.25l0.09,-1.87l-0.44,-1.0Z\", \"name\": \"Vermont\"}, \"US-NM\": {\"path\": \"M230.53,422.69l12.24,-122.4l25.76,2.35l26.19,1.96l26.22,1.52l25.84,1.07l-0.32,10.07l-0.75,0.39l-3.71,97.67l-32.57,-1.41l-33.72,-2.12l-0.44,0.75l0.53,2.31l0.44,1.25l0.99,0.76l-30.72,-2.59l-0.44,0.36l-0.85,9.43l-14.71,-1.4Z\", \"name\": \"New Mexico\"}, \"US-NC\": {\"path\": \"M829.09,287.59l0.01,-0.01l-0.0,0.0l-0.01,0.0ZM821.62,270.85l0.21,0.22l-0.05,0.01l-0.16,-0.24ZM823.91,275.04l0.2,0.15l-0.02,0.18l-0.06,-0.08l-0.12,-0.24ZM678.55,321.5l0.92,0.16l1.52,-0.4l0.42,-0.39l0.52,-0.97l0.11,-2.67l1.34,-1.19l0.47,-1.04l2.25,-1.47l2.13,-0.54l0.76,0.17l1.32,-0.53l2.36,-2.52l0.78,-0.25l1.84,-2.28l1.49,-1.0l1.55,-0.2l1.14,-2.63l-0.29,-1.2l1.66,0.04l0.5,-1.63l0.93,-0.77l1.08,-0.77l0.52,1.49l1.07,0.32l1.34,-1.17l1.34,-2.62l2.49,-1.6l0.79,0.07l0.83,0.78l1.05,-0.21l0.84,-1.07l1.46,-4.14l1.08,-1.1l1.48,0.07l0.43,-0.31l-0.7,-1.24l0.39,-1.97l-0.43,-0.89l0.38,-1.24l7.44,-0.94l19.59,-3.57l37.28,-8.83l31.16,-8.25l0.41,1.18l3.57,3.14l1.01,1.48l-1.21,-0.97l-0.17,-0.62l-0.93,-0.38l-0.52,0.06l-0.23,0.65l0.66,0.52l0.6,1.52l-0.54,0.02l-0.92,-0.73l-2.32,-0.75l-0.41,-0.47l-0.55,0.14l-0.31,0.69l0.15,0.64l1.38,0.42l1.69,1.33l-1.1,0.66l-2.49,-1.14l-0.35,0.51l0.15,0.42l1.6,1.13l-1.85,-0.3l-2.24,-0.82l-0.46,0.15l0.02,0.48l0.61,0.68l1.7,0.78l-0.96,0.58l0.0,0.6l-0.43,0.53l-1.48,0.76l-0.9,-0.75l-0.6,0.23l-0.1,0.35l-0.2,-0.13l-1.33,-2.26l0.19,-2.6l-0.43,-0.47l-0.9,-0.2l-0.35,0.65l0.62,0.68l-0.43,0.98l-0.01,1.03l0.5,1.7l1.61,2.14l-0.3,1.26l0.49,0.29l2.97,-0.63l2.09,-1.51l0.27,0.01l0.38,0.78l0.76,-0.34l1.57,0.03l0.15,-0.72l-0.56,-0.3l1.28,-0.77l2.04,-0.49l-0.08,1.17l0.64,0.28l-0.59,0.87l0.9,1.16l-0.84,0.12l-0.18,0.67l1.39,0.43l0.26,0.92l-1.21,0.07l-0.18,0.66l0.67,0.57l1.25,-0.18l0.52,0.25l0.4,-0.38l0.16,-1.93l-0.77,-3.27l0.41,-0.49l0.57,0.42l0.93,0.04l0.28,-0.57l-0.29,-0.43l0.46,-0.58l1.74,1.8l0.01,1.39l0.62,0.87l-0.53,0.19l-0.24,0.47l0.91,1.11l-0.08,0.36l-0.41,0.55l-0.78,0.09l-0.91,-0.83l-0.31,0.34l0.14,1.24l-1.07,1.61l0.2,0.56l-0.32,0.22l-0.15,0.98l-0.73,0.55l0.1,0.9l-0.89,0.97l-1.06,0.23l-0.59,-0.36l-0.52,0.52l-0.95,-0.79l-0.86,0.12l-0.4,-0.81l-0.59,-0.2l-0.51,0.38l0.09,0.93l-0.53,0.23l-1.42,-1.21l1.3,-0.41l0.23,-0.87l-0.57,-0.42l-2.03,0.34l-1.13,1.02l0.3,0.67l0.44,0.15l0.1,0.81l0.35,0.24l-0.03,0.12l-0.57,-0.33l-1.69,0.85l-1.13,-0.41l-1.46,0.09l-3.33,-0.64l0.44,1.07l0.98,0.43l0.36,0.63l0.63,0.1l0.88,-0.33l1.69,0.6l2.36,0.35l3.52,0.06l0.47,0.41l-0.05,0.51l-1.0,0.07l-0.24,0.72l-1.61,1.45l0.32,0.58l1.86,-0.03l-2.54,3.5l-1.68,0.07l-1.61,-0.94l-0.91,-0.18l-1.22,-0.99l-1.12,0.09l0.08,0.47l1.05,1.11l2.35,2.03l2.69,0.22l1.31,0.46l1.7,-2.16l0.52,0.45l1.18,0.31l0.39,-0.58l-0.55,-0.87l0.87,0.14l0.2,0.56l0.66,0.23l1.62,-1.21l-0.17,0.59l0.29,0.57l-0.29,0.38l-0.43,-0.2l-0.4,0.37l0.04,0.89l-0.96,1.71l0.02,0.78l-0.72,-0.06l-0.07,-0.73l-1.13,-0.58l-0.41,0.48l0.29,1.46l-0.35,-0.91l-0.84,-0.35l-1.22,1.08l-0.21,0.52l0.25,0.26l-2.03,0.35l-2.75,1.86l-0.68,-1.01l-0.75,-0.28l-0.36,0.49l0.44,1.24l-0.57,-0.01l-0.09,0.82l-0.93,1.72l-0.92,0.85l-0.59,-0.25l0.48,-0.69l-0.03,-0.77l-1.07,-0.9l-0.09,-0.52l-1.69,-0.38l-0.15,0.47l0.44,1.14l0.2,0.32l0.59,0.07l0.3,0.59l-0.88,0.38l-0.08,0.71l0.66,0.62l0.77,0.16l-0.0,0.36l-2.12,1.68l-1.9,2.65l-1.98,4.29l-0.33,2.11l0.13,1.34l-0.16,-1.04l-1.02,-1.56l-0.55,-0.16l-0.29,0.48l1.21,3.9l-0.62,2.26l-3.92,0.24l-1.43,0.66l-0.36,-0.51l-0.58,-0.17l-0.53,1.07l-1.9,1.16l-0.61,-0.01l-23.45,-14.89l-1.05,-0.01l-18.73,3.7l-0.67,-2.73l-3.28,-2.77l-0.46,0.08l-1.23,1.32l-0.02,-1.27l-0.82,-0.52l-22.89,3.59l-0.64,-0.26l-0.62,0.46l-0.25,0.65l-3.99,1.95l-0.89,1.23l-1.02,0.09l-4.79,2.68l-21.02,4.11l-0.36,-4.48l0.71,-0.95ZM819.02,269.97l0.19,0.35l0.25,0.37l-0.46,-0.4l0.02,-0.32ZM809.66,288.69l0.21,0.33l-0.17,-0.08l-0.04,-0.24ZM817.54,297.34l0.15,-0.36l0.16,0.07l-0.13,0.28l-0.18,0.02ZM814.96,297.34l-0.06,-0.28l-0.04,-0.11l0.31,0.26l-0.21,0.13ZM814.94,262.69l0.37,-0.24l0.15,0.4l-0.42,0.08l-0.1,-0.23ZM794.27,327.63l0.04,-0.07l0.22,0.03l-0.0,0.09l-0.26,-0.04Z\", \"name\": \"North Carolina\"}, \"US-ND\": {\"path\": \"M439.1,45.59l2.07,7.05l-0.73,2.58l0.57,2.4l-0.27,1.19l0.48,2.03l0.02,3.32l1.42,4.01l0.45,0.55l-0.08,0.99l0.39,1.54l0.62,0.75l1.49,3.79l-0.05,3.94l0.42,0.71l0.51,8.43l0.51,1.54l0.51,0.25l-0.47,2.66l0.36,1.64l-0.14,1.76l0.69,1.11l0.2,2.17l0.49,1.14l1.81,2.57l0.16,2.21l0.51,1.08l0.17,1.4l-0.24,1.36l0.29,1.75l-27.89,0.76l-28.38,0.2l-28.37,-0.38l-28.48,-0.97l2.91,-66.22l23.01,0.82l25.49,0.43l25.49,-0.06l24.04,-0.51Z\", \"name\": \"North Dakota\"}, \"US-NE\": {\"path\": \"M423.3,177.34l3.93,2.68l3.94,1.88l1.33,-0.22l0.51,-0.47l0.36,-1.07l0.48,-0.2l2.5,0.33l1.32,-0.47l1.59,0.24l3.45,-0.65l2.38,1.96l1.41,0.14l1.55,0.76l1.45,0.08l0.89,1.09l1.48,0.17l-0.06,0.97l1.69,2.06l3.32,0.59l0.19,0.67l-0.21,1.85l1.14,1.92l0.01,2.27l1.16,1.06l0.34,1.69l1.74,1.44l0.07,1.85l1.51,2.07l-0.49,2.3l0.44,3.05l0.52,0.54l0.93,-0.2l-0.03,1.23l1.21,0.49l-0.4,2.32l0.21,0.45l1.12,0.39l-0.59,0.75l-0.09,1.0l0.13,0.59l0.82,0.49l0.16,1.42l-0.26,0.91l0.26,1.26l0.55,0.6l0.3,1.89l-0.22,1.31l0.23,0.71l-0.57,0.9l0.03,0.78l0.45,0.87l1.23,0.62l0.26,2.47l1.1,0.5l0.03,0.78l1.19,2.7l-0.23,0.95l1.16,0.21l0.8,0.98l1.1,0.23l-0.15,0.95l1.31,1.64l-0.21,1.1l0.49,0.89l-26.2,1.1l-27.91,0.67l-27.92,0.15l-27.97,-0.37l0.47,-21.33l-0.39,-0.41l-32.44,-1.09l1.91,-42.71l43.42,1.28l44.74,-0.05Z\", \"name\": \"Nebraska\"}, \"US-LA\": {\"path\": \"M510.29,413.05l-1.38,-21.63l25.76,-1.93l25.96,-2.35l0.35,0.82l1.49,0.64l-0.92,1.34l-0.25,2.12l0.5,0.72l1.18,0.3l-1.22,0.47l-0.45,0.78l0.46,1.35l1.05,0.83l0.08,2.13l0.47,0.54l1.52,0.73l0.45,1.04l1.43,0.42l-0.87,1.22l-0.85,2.34l-0.76,0.05l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.21,1.16l-1.35,0.96l-1.08,1.89l-1.38,0.68l-0.68,0.83l-0.79,2.41l-0.24,3.51l-1.55,1.75l0.13,1.2l0.63,0.95l-0.35,2.37l-1.62,0.3l-0.59,0.57l0.29,0.97l0.65,0.59l-0.25,1.41l0.99,1.51l-1.18,1.19l-0.08,0.45l0.4,0.23l6.22,-0.58l29.41,-3.07l-0.67,3.48l-0.52,1.02l-0.19,2.25l0.7,0.98l-0.09,0.66l0.61,1.0l1.32,0.7l1.23,1.42l0.15,0.88l0.9,1.38l0.14,1.05l1.13,1.84l-1.86,0.4l-0.39,-0.08l-0.02,-0.56l-0.54,-0.57l-1.29,0.28l-1.19,-0.59l-1.52,0.18l-0.62,-0.98l-1.25,-0.86l-2.86,-0.46l-1.25,0.64l-1.39,2.31l-1.3,1.43l-0.41,0.92l0.07,1.2l0.56,0.89l0.83,0.57l4.28,0.81l3.37,-1.02l1.32,-1.2l0.68,-1.2l0.35,0.59l1.09,0.42l0.59,-0.41l0.81,0.02l0.51,-0.47l-0.76,1.23l-1.13,-0.11l-0.57,0.32l-0.38,0.62l0.0,0.83l0.78,1.22l1.49,-0.03l0.66,0.9l1.11,0.48l0.94,-0.22l0.51,-0.45l0.46,-1.11l-0.02,-1.37l0.93,-0.58l0.42,-1.0l0.24,0.05l0.11,1.17l-0.24,0.25l0.19,0.57l0.43,0.15l-0.07,0.75l1.36,1.08l0.35,-0.17l-0.48,0.6l0.19,0.63l-0.36,0.14l-0.53,-0.57l-0.92,-0.18l-1.0,1.91l-0.85,0.15l-0.46,0.53l0.17,1.2l-1.03,-0.49l-1.01,0.07l0.04,0.46l1.16,1.07l-1.18,-0.14l-0.92,0.61l0.69,0.42l1.28,2.05l1.85,0.44l0.92,0.53l-0.08,1.21l0.34,0.41l2.08,-0.33l0.78,0.17l0.18,0.53l0.74,0.32l1.36,-0.35l0.54,0.78l1.08,-0.47l1.15,0.74l0.14,0.3l-0.41,0.63l1.55,0.86l-0.39,0.66l0.39,0.58l-0.18,0.63l-0.95,1.52l-1.33,-1.57l-0.68,0.34l0.1,0.67l-0.39,0.13l0.4,-1.91l-1.34,-0.76l-0.5,0.5l0.2,1.19l-0.55,0.46l-0.27,-1.03l-0.58,-0.25l-0.91,-1.28l0.03,-0.77l-0.97,-0.13l-0.47,0.51l-1.42,-0.16l-0.42,-0.61l0.14,-0.64l-0.39,-0.46l-0.45,-0.01l-0.81,0.74l-1.2,0.03l0.26,-0.57l-0.13,-0.67l-0.47,-0.88l-0.92,0.05l0.09,-0.97l-0.37,-0.36l-0.92,-0.02l-0.22,0.59l-0.86,-0.38l-0.48,0.27l-2.64,-1.26l-1.25,-0.02l-0.68,-0.64l-0.61,0.19l-0.3,0.56l-0.05,1.26l1.74,0.94l1.69,0.34l-0.15,0.93l0.28,0.4l-0.34,0.35l0.23,0.69l-0.76,0.96l-0.02,0.67l0.82,0.97l-0.96,1.45l-1.34,0.95l-0.78,-1.16l0.21,-1.51l-0.36,-0.93l-0.49,-0.17l-0.4,0.36l-1.17,-1.08l-0.6,0.43l-0.77,-1.06l-0.63,-0.2l-0.64,1.34l-0.86,0.27l-0.89,-0.53l-0.86,0.54l-0.1,0.62l0.49,0.41l-0.68,0.57l-0.13,1.46l-0.46,0.13l-0.39,0.84l-0.93,0.09l-0.12,-0.69l-1.61,-0.4l-0.77,0.99l-1.25,-0.82l-0.69,-0.11l-0.31,-0.54l-1.0,0.01l-0.35,0.61l-1.18,-0.51l0.43,-0.41l-0.0,-1.47l-0.38,-0.58l-1.92,-1.19l-0.08,-0.54l-0.84,-0.72l-0.1,-0.91l0.73,-1.16l-0.35,-1.14l-0.88,-0.19l-0.34,0.57l0.16,0.43l-0.59,0.81l0.04,0.92l-1.82,-0.4l0.07,-0.39l-0.47,-0.54l-1.98,0.77l-0.71,-2.23l-0.47,-0.12l-0.87,0.35l-0.18,-2.14l-1.31,-0.35l-1.9,0.3l-1.09,0.66l-0.22,-0.71l0.85,-0.27l-0.06,-0.8l-0.61,-0.58l-1.04,-0.1l-0.86,0.43l-0.95,-0.14l-0.4,0.81l-2.01,1.12l-0.64,-0.31l-1.29,0.72l0.54,1.37l0.81,0.3l0.99,1.52l-1.41,0.2l-1.83,1.05l-3.71,-0.39l-1.24,0.21l-3.11,-0.44l-2.0,-0.68l-1.82,-1.07l-3.73,-1.09l-3.21,-0.48l-2.55,0.6l-5.66,0.47l-1.0,0.27l-1.83,1.27l-0.6,-0.63l-0.27,-1.09l1.6,-0.48l0.7,-1.78l-0.03,-1.56l-0.39,-0.56l1.12,-1.55l0.23,-1.6l-0.5,-1.84l0.07,-1.46l-0.67,-0.7l-0.22,-1.05l0.83,-2.22l-0.64,-1.95l0.77,-0.85l0.29,-1.5l0.79,-0.94l0.78,-2.84l-0.19,-1.42l0.58,-0.98l-0.76,-1.33l0.84,-0.39l0.19,-0.44l-0.9,-1.35l0.02,-2.13l-1.08,-0.23l-0.58,-1.57l-0.92,-0.84l0.28,-1.27l-0.82,-0.75l-0.33,-0.95l-0.65,-0.34l0.22,-0.98l-1.17,-0.58l-0.81,-0.93l0.15,-2.45l-0.69,-1.93l-1.34,-1.97l-2.65,-2.19ZM550.67,462.74l0.02,-0.01l0.0,0.0l-0.02,0.0ZM609.66,467.22l-0.03,-0.03l-0.09,-0.04l0.15,-0.02l-0.03,0.09ZM609.67,465.6l-0.02,-0.02l0.04,-0.01l-0.02,0.03ZM568.93,468.95l-2.03,-0.42l-0.68,-0.51l0.74,-0.44l0.35,-0.77l0.4,0.49l0.84,0.2l-0.14,0.62l0.51,0.81ZM552.13,462.99l1.74,-1.07l3.38,1.07l-0.7,0.57l-0.17,0.82l-0.69,0.18l-3.56,-1.57Z\", \"name\": \"Louisiana\"}, \"US-SD\": {\"path\": \"M337.03,132.38l0.3,-0.53l0.79,-19.92l28.49,0.97l28.39,0.38l28.39,-0.2l27.77,-0.76l-0.17,1.71l-0.72,1.71l-2.9,2.47l-0.41,1.28l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.02,0.84l0.58,1.02l1.51,38.65l-1.84,0.09l-0.42,0.56l0.24,1.42l0.88,1.12l0.01,1.44l-0.65,0.36l0.17,1.47l0.48,0.43l1.09,0.04l0.34,1.66l-0.16,0.9l-0.62,0.82l0.02,1.72l-0.68,2.42l-0.49,0.44l-0.67,1.87l0.5,1.1l1.33,1.06l-0.16,0.61l0.64,0.65l0.36,1.13l-1.66,-0.28l-0.34,-0.92l-0.85,-0.72l0.19,-0.6l-0.29,-0.59l-1.58,-0.22l-1.03,-1.16l-1.57,-0.11l-1.51,-0.74l-1.34,-0.12l-2.39,-1.97l-3.79,0.6l-1.65,-0.24l-1.19,0.46l-2.62,-0.32l-0.98,0.48l-0.76,1.43l-0.72,0.05l-3.67,-1.8l-4.13,-2.77l-44.9,0.05l-43.4,-1.27l1.86,-42.93Z\", \"name\": \"South Dakota\"}, \"US-DC\": {\"path\": \"M782.83,216.82l0.44,-0.76l2.05,1.2l-0.65,1.13l-0.56,-1.03l-1.27,-0.55Z\", \"name\": \"District of Columbia\"}, \"US-DE\": {\"path\": \"M799.98,195.01l0.4,-1.49l0.91,-1.11l1.73,-0.73l1.11,0.04l-0.31,0.54l-0.07,1.36l-1.12,1.92l0.11,1.08l1.11,1.06l-0.06,1.5l2.31,2.41l1.25,0.57l0.94,1.47l1.01,3.29l1.74,1.52l0.58,1.29l3.08,1.91l1.44,-0.12l0.46,1.21l-1.05,0.57l0.17,1.31l0.35,0.18l-0.81,0.57l-0.07,1.2l0.67,0.2l0.85,-0.73l0.71,0.33l0.3,-0.21l0.76,1.5l-10.19,2.94l-8.32,-25.59Z\", \"name\": \"Delaware\"}, \"US-FL\": {\"path\": \"M632.37,423.12l47.45,-7.21l1.55,1.89l0.89,2.71l1.48,0.99l49.06,-5.55l1.04,1.38l0.04,1.09l0.56,1.05l0.87,0.49l1.83,-0.32l0.85,-0.76l-0.18,-4.58l-1.0,-1.48l-0.24,-1.77l0.27,-0.74l0.62,-0.31l0.11,-0.7l5.64,0.91l4.06,-0.2l0.16,1.25l-0.75,-0.12l-0.32,0.44l0.27,1.54l2.14,1.8l0.23,1.01l0.43,0.38l0.31,1.93l1.91,3.28l1.75,4.88l0.74,0.84l0.53,1.5l1.68,2.46l0.66,1.58l2.84,3.71l1.98,3.19l2.33,2.77l0.16,0.6l0.64,0.36l6.96,7.57l-0.5,-0.03l-0.27,0.62l-1.37,-0.01l-0.35,-0.66l0.37,-1.4l-0.16,-0.56l-2.33,-0.91l-0.46,0.53l1.04,2.82l0.79,0.98l2.21,4.81l10.15,13.83l1.42,3.15l3.77,5.42l-1.41,-0.35l-0.42,0.74l0.81,0.66l0.85,0.24l0.56,-0.22l1.49,0.95l2.1,3.1l-0.5,0.37l-0.11,0.53l1.17,0.53l0.92,1.87l-0.07,1.08l0.61,0.97l0.65,2.7l-0.26,0.77l1.06,9.2l-0.3,1.1l0.47,0.69l0.55,3.19l-0.8,1.49l0.1,2.3l-0.84,0.77l-0.19,1.86l-0.47,0.87l0.24,1.51l-0.28,1.8l0.48,0.84l0.09,0.93l0.48,0.24l-1.15,1.89l-0.37,1.32l-0.95,0.25l-0.54,-0.23l-1.38,0.47l-0.34,1.1l-0.9,0.32l-0.16,0.6l-0.86,0.7l-1.45,0.15l-0.28,-0.33l-1.25,-0.09l-0.9,1.09l-3.19,1.18l-1.08,-0.61l-0.73,-1.08l0.04,-1.87l1.02,0.86l1.68,0.48l0.26,0.65l0.52,0.07l1.36,-0.75l0.19,-0.7l-0.27,-0.64l-1.61,-1.13l-2.43,-0.26l-0.92,-0.47l-0.89,-1.72l-0.92,-0.75l0.22,-1.01l-0.49,-0.28l-0.53,0.16l-1.43,-2.59l-0.44,-0.29l-0.65,0.08l-0.46,-0.63l0.28,-0.33l-0.06,-0.58l-0.72,-0.66l-1.23,-0.61l-1.08,-0.08l-0.77,-0.55l-0.58,0.19l-2.84,-0.59l-0.51,0.66l0.25,-0.95l-0.47,-0.42l-0.88,0.13l-0.27,-0.74l-0.9,-0.67l-0.63,-1.45l-0.56,-0.1l-0.77,-3.02l-0.79,-1.02l-0.18,-1.56l-0.45,-0.85l-0.72,-0.91l-0.49,-0.15l-0.1,0.95l-1.33,-0.26l1.07,-1.35l0.29,-0.76l-0.13,-0.64l0.86,-1.51l0.65,-0.35l0.27,-0.85l-0.62,-0.38l-1.42,0.96l-0.88,1.32l-0.4,2.23l-1.38,0.37l-0.23,-1.36l-0.81,-1.35l-0.32,-4.13l-0.88,-0.61l1.64,-1.37l0.21,-0.99l-0.59,-0.41l-0.72,0.68l-1.57,0.56l-0.77,0.74l-0.76,-0.67l-0.4,0.27l-1.3,-0.9l-0.37,0.75l1.15,1.1l0.53,0.1l1.3,2.05l-1.05,0.25l-1.44,-0.38l-0.87,-1.63l-1.14,-0.61l-1.99,-2.59l-1.07,-2.32l-1.3,-0.89l0.09,-0.89l-1.0,-1.82l-1.8,-0.98l0.08,-0.69l0.99,-0.41l-0.36,-0.5l0.44,-0.75l-0.4,-0.35l0.4,-1.23l2.45,-4.56l-1.08,-2.44l-0.69,-0.46l-0.92,0.43l-0.27,0.94l0.31,1.22l-0.25,0.04l-0.76,-2.47l-1.0,-0.27l-1.2,-0.88l-1.53,-0.31l0.32,1.97l-0.48,0.63l0.27,0.59l2.24,0.56l0.26,0.99l-0.35,2.51l-0.32,-0.59l-0.8,-0.21l-2.17,-1.54l-0.42,0.21l-0.3,-0.64l0.58,-2.14l0.04,-3.02l-0.69,-1.99l0.42,-0.52l0.47,-1.94l-0.25,-0.54l0.63,-3.08l-0.4,-5.32l-0.38,-1.38l-0.37,-0.34l0.36,-0.47l-0.49,-2.2l-2.13,-1.32l-0.05,-0.53l-0.56,-0.42l-0.11,-1.03l-0.93,-0.73l-0.56,-1.52l-0.64,-0.24l-1.45,0.33l-1.03,-0.19l-1.58,0.56l-1.17,-1.75l-1.52,-0.47l-0.19,-0.6l-1.37,-1.51l-0.88,-0.58l-0.62,0.08l-1.54,-1.16l-0.81,-0.21l-0.53,-2.76l-3.09,-1.12l-0.66,-0.59l-0.53,-1.23l-2.18,-1.92l-2.21,-1.07l-1.46,-0.11l-3.47,-1.66l-2.86,1.01l-1.01,-0.4l-1.05,0.43l-0.35,0.69l-1.34,0.69l-0.5,0.71l0.03,0.65l-0.75,-0.22l-0.59,0.6l0.68,0.94l1.51,0.06l0.42,0.21l-3.05,0.26l-1.58,1.53l-0.91,0.46l-1.29,1.58l-1.56,1.05l-0.33,0.14l0.2,-0.5l-0.26,-0.53l-0.67,-0.04l-0.96,0.76l-1.11,1.52l-2.21,0.25l-2.12,1.09l-0.79,0.04l-0.29,-2.04l-1.74,-2.23l-2.23,-0.99l-0.18,-0.41l-2.54,-1.49l2.83,1.31l1.21,-0.75l-0.01,-0.74l-1.33,-0.33l-0.36,0.57l-0.22,-1.03l-0.35,-0.1l0.12,-0.52l-0.49,-0.33l-1.4,0.62l-2.33,-0.74l0.65,-1.09l0.83,-0.11l1.03,-1.47l-0.92,-0.95l-0.46,0.13l-0.49,1.03l-0.45,-0.03l-0.81,0.57l-0.73,-0.9l-0.7,0.1l-0.17,0.38l-1.35,0.74l-0.14,0.68l0.3,0.46l-3.99,-1.33l-5.09,-0.68l0.12,-0.24l1.28,0.29l0.61,-0.53l2.12,0.37l0.22,-0.78l-0.95,-1.02l0.08,-0.7l-0.63,-0.28l-0.5,0.32l-0.29,-0.47l-1.91,0.2l-2.27,1.12l0.3,-0.64l-0.41,-0.58l-0.96,0.36l-0.59,-0.25l-0.22,0.44l0.2,0.71l-1.46,0.81l-0.39,0.64l-5.21,1.01l0.31,-0.53l-0.4,-0.52l-1.36,-0.27l-0.73,-0.53l0.69,-0.54l0.0,-0.78l-0.68,-0.12l-0.82,-0.66l-0.46,0.11l0.14,0.76l-0.41,1.78l-1.06,-1.39l-0.7,-0.45l-0.55,0.07l-0.3,0.72l0.83,1.77l-0.25,0.8l-1.39,1.0l-0.05,1.04l-0.6,0.23l-0.17,0.57l-1.5,0.57l0.28,-0.66l-0.22,-0.46l1.14,-1.04l0.07,-0.74l-0.4,-0.58l-1.2,-0.23l-0.42,-0.84l0.3,-1.71l-0.19,-1.61l-2.19,-1.1l-2.42,-2.45l0.31,-1.45l-0.16,-1.04ZM770.96,489.55l0.5,1.09l0.91,0.4l0.78,-0.16l1.45,1.7l0.92,0.58l1.88,0.69l1.63,0.06l0.55,-0.45l-0.09,-0.89l0.55,-0.66l-0.17,-1.24l0.75,-1.4l0.07,-1.84l-0.66,-1.65l-1.49,-2.04l-1.77,-1.33l-1.2,-0.12l-1.12,0.86l-1.81,3.23l-2.12,2.0l-0.12,0.77l0.57,0.41ZM646.6,433.48l-0.95,0.27l0.41,-0.45l0.54,0.18ZM667.51,434.9l0.99,-0.29l0.36,0.31l0.1,0.73l-1.45,-0.75ZM773.86,453.5l0.44,0.57l-0.43,0.77l-0.01,-1.35ZM793.21,525.19l0.02,-0.12l0.03,0.05l-0.05,0.07ZM793.79,522.73l-0.25,-0.25l0.54,-0.38l-0.29,0.63ZM772.1,452.11l0.22,0.77l-0.28,2.36l0.31,1.82l-1.43,-3.27l1.19,-1.69ZM682.35,444.75l0.22,-0.2l0.37,0.02l-0.11,0.43l-0.48,-0.25Z\", \"name\": \"Florida\"}, \"US-WA\": {\"path\": \"M39.75,56.79l0.48,-1.33l0.18,0.46l0.65,0.31l1.05,-0.73l0.42,0.6l0.7,-0.02l0.18,-0.77l-0.9,-1.57l0.8,-0.74l-0.07,-1.37l0.49,-0.38l-0.09,-1.04l0.81,-0.26l0.04,0.51l0.47,0.42l0.96,-0.3l-0.08,-0.68l-1.33,-1.67l-0.91,0.14l-1.87,-0.58l0.2,-2.0l0.65,0.54l0.52,-0.07l0.3,-0.56l-0.16,-0.69l3.32,-0.49l0.27,-0.69l-1.68,-0.98l-0.86,-0.15l-0.35,-1.52l-0.7,-0.43l-0.81,-0.03l0.39,-4.77l-0.47,-1.3l0.11,-0.69l-0.4,-0.35l0.85,-5.8l-0.09,-2.49l-0.44,-0.63l-0.14,-1.38l-0.63,-1.35l-0.72,-0.58l-0.28,-2.49l0.39,-2.3l-0.14,-1.13l1.8,-3.33l-0.51,-1.26l4.52,3.99l1.18,0.4l0.91,0.77l0.78,1.33l1.84,1.11l3.22,0.94l0.82,0.78l1.42,0.12l1.72,1.05l2.32,0.76l1.47,-0.47l0.52,0.3l0.54,0.71l-0.05,1.1l0.54,0.75l0.31,0.12l0.49,-0.35l0.08,-0.77l0.44,0.04l0.61,1.42l-0.41,0.59l0.34,0.5l0.56,-0.03l0.73,-0.84l-0.35,-1.73l1.05,-0.23l-0.46,0.23l-0.22,0.69l1.21,4.49l-0.47,0.1l-1.69,1.73l0.24,-1.3l-0.22,-0.41l-1.32,0.3l-0.39,0.81l0.08,0.96l-1.4,1.71l-2.0,1.38l-1.08,1.42l-0.97,0.69l-1.12,1.67l-0.07,0.71l0.61,0.61l0.95,0.13l2.78,-0.46l1.23,-0.58l-0.02,-0.7l-0.64,-0.24l-2.95,0.77l-0.34,-0.31l3.28,-3.44l3.07,-0.87l0.91,-1.52l1.75,-1.54l0.52,0.57l0.54,-0.18l0.25,-1.83l-0.1,2.29l0.25,0.92l-0.98,-0.22l-0.65,0.77l-0.4,-0.74l-0.52,-0.2l-0.4,0.64l0.29,0.72l0.0,1.65l-0.19,-1.08l-0.67,-0.22l-0.47,0.69l-0.08,0.76l0.46,0.68l-0.64,0.59l-0.0,0.45l0.41,0.17l1.68,-0.56l0.23,1.11l-1.11,1.8l-0.1,1.06l-0.84,0.7l0.12,1.02l-0.84,-0.69l1.14,-1.45l-0.22,-0.97l-1.98,1.07l-0.39,0.64l-0.03,-2.13l-0.52,0.01l-1.05,1.6l-1.27,0.53l-1.16,1.87l-1.52,0.29l-0.47,0.43l-0.22,1.18l1.11,-0.03l-0.26,0.36l0.26,0.38l0.92,0.03l0.05,0.68l0.52,0.48l0.53,-0.27l0.37,-1.77l0.14,0.42l0.83,-0.14l1.09,1.5l1.32,-0.61l1.66,-1.47l1.0,-1.57l0.62,0.8l0.73,0.14l0.45,-0.23l-0.05,-0.87l1.56,-0.54l0.36,-0.94l-0.32,-1.28l0.24,-1.2l-0.16,-1.38l0.83,0.21l0.31,-0.92l-0.18,-0.76l-0.71,-0.65l0.91,-1.14l0.1,-1.77l1.26,-1.25l0.63,-1.38l1.62,-0.49l0.79,-1.16l-0.44,-0.67l-0.51,-0.02l-0.84,-1.32l0.19,-2.12l-0.25,-0.88l0.5,-0.81l0.07,-0.84l-1.13,-1.76l-0.62,-0.41l-0.16,-0.67l0.19,-0.51l0.59,0.24l0.53,-0.33l0.27,-1.83l0.8,-0.24l0.31,-1.01l-0.57,-2.36l0.45,-0.55l-0.02,-0.86l-0.95,-0.9l-0.95,0.3l-1.05,-2.71l0.96,-1.88l41.1,9.79l38.78,7.97l-10.24,55.02l-0.48,1.02l1.01,3.02l0.12,2.01l-1.02,1.3l0.71,1.89l-31.12,-6.19l-1.67,0.78l-7.23,-1.08l-1.69,0.9l-4.19,-0.16l-3.18,0.42l-1.65,0.73l-0.88,-0.27l-1.2,0.29l-1.5,-0.24l-2.42,-0.97l-0.91,0.45l-3.45,0.47l-2.1,-0.73l-1.65,0.28l-0.3,-1.37l-1.08,-0.89l-4.33,-1.51l-2.32,-0.14l-1.14,-0.52l-1.27,0.2l-1.9,0.84l-4.5,0.53l-1.1,-0.72l-1.15,-0.31l-1.6,-1.17l-1.84,-0.53l-0.62,-0.82l0.72,-6.83l-0.45,-0.95l-0.19,-1.91l-0.96,-1.36l-1.94,-1.7l-2.82,-0.14l-1.02,-1.32l-0.14,-1.05l-0.55,-0.64l-2.36,-0.34l-0.56,-0.31l-0.23,-0.79l-0.5,-0.18l-0.97,0.34l-0.83,-0.27l-1.1,0.39l-0.95,-1.49l-0.88,-0.24ZM63.27,41.42l0.15,0.75l-0.42,0.48l0.02,-0.91l0.26,-0.31ZM72.98,21.85l-0.63,0.89l-0.16,0.52l0.12,-1.02l0.67,-0.39ZM72.91,17.04l-0.1,-0.06l0.06,-0.05l0.05,0.11ZM72.14,16.87l-0.78,0.39l0.38,-0.7l-0.07,-0.62l0.23,-0.07l0.23,1.0ZM58.87,44.11l0.14,-0.06l-0.03,0.02l-0.12,0.04ZM69.46,20.67l1.77,-2.13l0.46,-0.02l0.5,1.75l-0.34,-0.56l-0.51,-0.12l-0.55,0.45l-0.35,-0.1l-0.36,0.74l-0.63,-0.01ZM69.54,21.84l0.46,0.01l0.6,0.51l0.08,0.36l-0.79,-0.21l-0.35,-0.68ZM70.49,24.67l-0.1,0.51l-0.0,0.0l-0.02,-0.24l0.12,-0.27ZM70.76,26.94l0.1,0.05l0.14,-0.05l-0.18,0.12l-0.06,-0.12ZM71.13,26.88l0.51,-0.96l1.09,1.49l0.01,0.89l-0.35,0.36l-0.33,-0.1l-0.25,-1.57l-0.68,-0.13ZM68.2,11.24l0.5,-0.34l0.16,1.55l-0.22,-0.05l-0.44,-1.16ZM69.91,10.93l0.82,0.83l-0.66,0.31l-0.16,-1.14ZM68.13,39.7l0.35,-1.09l0.22,-0.25l-0.05,1.08l-0.52,0.25ZM68.31,15.63l-0.41,-0.42l0.61,-0.75l-0.18,0.6l-0.02,0.57ZM68.47,15.97l0.4,0.2l-0.09,0.14l-0.28,-0.12l-0.03,-0.22ZM68.56,14.29l-0.01,-0.1l0.05,-0.13l-0.04,0.23ZM68.5,34.94l0.11,-1.05l0.35,-0.34l-0.25,1.58l-0.21,-0.18ZM66.18,14.44l-1.04,-0.84l0.22,-1.86l1.3,1.97l-0.36,0.18l-0.12,0.55ZM63.56,44.22l0.23,-0.25l0.02,0.01l-0.13,0.32l-0.12,-0.07ZM61.46,41.94l-0.1,-0.21l0.04,-0.08l0.0,0.12l0.06,0.16Z\", \"name\": \"Washington\"}, \"US-KS\": {\"path\": \"M478.81,242.03l0.44,0.62l0.76,0.17l1.05,0.79l2.2,-1.07l-0.0,0.74l1.08,0.77l0.23,1.42l-0.95,-0.15l-0.59,0.31l-0.17,0.95l-1.15,1.36l-0.06,1.12l-0.79,0.5l0.04,0.63l1.57,2.07l2.01,1.46l0.2,1.12l0.42,0.85l0.75,0.55l0.33,1.09l1.9,0.89l1.54,0.25l2.74,46.06l-31.67,1.55l-32.1,0.92l-32.11,0.27l-32.18,-0.39l1.25,-64.43l27.98,0.37l27.94,-0.15l27.93,-0.67l27.75,-1.17l1.65,1.2Z\", \"name\": \"Kansas\"}, \"US-WI\": {\"path\": \"M599.36,110.41l0.82,-0.15l-0.13,0.81l-0.56,0.02l-0.14,-0.67ZM594.93,119.05l0.47,-0.41l0.24,-2.36l0.95,-0.25l0.64,-0.7l0.21,-1.4l0.41,-0.64l0.63,-0.04l0.07,0.38l-0.76,0.07l-0.18,0.52l0.18,1.26l-0.38,0.17l-0.11,0.58l0.57,0.57l-0.24,0.65l-0.5,0.34l-0.68,1.91l0.07,1.23l-1.04,2.28l-0.41,0.15l-0.87,-0.96l-0.19,-0.71l0.3,-1.57l0.61,-1.05ZM510.78,127.49l0.4,-0.27l0.27,-0.9l-0.45,-1.48l0.03,-1.91l0.69,-1.16l0.52,-2.25l-1.63,-2.9l-0.83,-0.35l-1.28,-0.0l-0.22,-2.32l1.66,-2.27l-0.05,-0.78l0.76,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.76l1.16,-0.14l1.03,-1.57l-1.02,-12.16l1.03,-0.35l0.22,-1.1l0.73,-0.98l0.78,0.69l1.69,0.64l2.61,-0.58l3.27,-1.59l2.64,-0.84l2.2,-2.15l0.31,0.29l1.39,-0.11l1.25,-1.49l0.78,-0.59l1.04,-0.1l0.4,-0.52l1.08,0.99l-0.47,1.7l-0.67,1.02l0.24,1.62l-1.19,2.22l0.64,0.65l2.49,-1.1l0.72,-0.87l2.16,1.22l2.34,0.47l0.44,0.54l0.86,-0.13l1.6,0.69l2.25,3.55l15.49,2.46l4.66,1.94l1.67,-0.17l1.63,0.41l1.33,-0.6l3.17,0.69l2.18,0.08l0.86,0.4l0.56,0.89l-0.41,1.1l0.41,0.77l3.4,0.61l1.41,1.12l-0.15,0.71l0.6,1.11l-0.35,0.81l0.44,1.25l-0.77,1.25l-0.02,1.76l0.91,0.63l1.38,-0.26l1.02,-0.73l0.2,0.25l-0.78,2.45l0.05,1.31l1.32,1.45l0.84,0.34l-0.23,2.01l-2.41,1.21l-0.51,0.79l0.05,1.25l-1.59,3.49l-0.38,3.49l1.11,0.81l0.92,-0.04l0.49,-0.36l0.49,-1.36l1.81,-1.48l0.65,-2.53l1.06,-1.7l0.59,0.17l0.57,-0.71l0.88,-0.4l1.13,1.11l0.59,0.19l-0.27,2.2l-1.16,2.82l-0.54,5.56l0.23,1.11l0.8,0.92l0.07,0.52l-0.5,0.98l-1.29,1.34l-0.85,3.87l0.16,2.56l0.72,1.19l0.07,1.23l-1.05,3.21l0.13,2.1l-0.72,2.1l-0.27,2.45l0.6,2.0l-0.03,1.31l0.49,0.53l-0.2,1.68l0.92,0.77l0.55,2.41l1.21,1.51l0.09,1.67l-0.32,1.44l0.49,2.91l-44.26,4.85l-0.2,-0.78l-1.57,-2.16l-4.95,-0.8l-1.06,-1.33l-0.37,-1.67l-0.91,-1.19l-0.88,-4.84l1.03,-2.6l-0.09,-0.98l-0.72,-0.78l-1.44,-0.47l-0.72,-1.74l-0.49,-5.97l-0.71,-1.39l-0.53,-2.54l-1.16,-0.6l-1.1,-1.55l-0.93,-0.11l-1.17,-0.74l-1.71,0.09l-2.68,-1.77l-2.31,-3.47l-2.65,-2.08l-2.94,-0.52l-0.73,-1.23l-1.13,-0.99l-3.12,-0.43l-3.54,-2.72l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.89,-3.1ZM542.09,81.41l0.05,-0.28l0.03,0.16l-0.08,0.12ZM538.44,86.94l0.29,-0.22l0.05,0.09l-0.34,0.13Z\", \"name\": \"Wisconsin\"}, \"US-OR\": {\"path\": \"M11.03,140.91l0.03,-1.74l0.5,-0.82l0.34,-1.92l1.14,-1.87l0.26,-1.88l-0.69,-2.56l-0.33,-0.16l-0.1,-1.79l3.07,-3.74l2.56,-5.89l0.01,0.76l0.52,0.52l0.49,-0.28l0.61,-1.58l0.47,-0.47l0.3,0.98l1.12,0.42l0.33,-0.54l-0.43,-1.75l0.28,-0.86l-0.45,-0.14l-0.8,0.31l1.77,-3.11l1.14,-0.94l0.89,0.31l0.49,-0.28l-0.46,-1.08l-0.8,-0.4l1.81,-4.57l0.48,-0.56l0.03,-0.99l1.11,-2.64l0.65,-2.58l1.06,-1.89l0.33,0.28l0.66,-0.33l-0.03,-0.6l-0.75,-0.63l1.09,-2.58l0.32,0.22l0.6,-0.19l0.13,-0.34l-0.03,-0.51l-0.57,-0.33l0.89,-3.82l1.25,-1.78l0.86,-3.02l1.16,-1.74l0.86,-2.43l0.27,-1.21l-0.17,-0.5l1.2,-1.07l-0.3,-1.64l0.95,0.58l0.79,-0.62l-0.38,-0.76l0.21,-0.65l-0.76,-0.78l0.53,-1.07l1.31,-0.85l0.06,-0.45l-0.92,-0.35l-0.31,-1.26l1.0,-2.13l-0.03,-1.48l0.87,-0.52l0.59,-1.33l0.2,-1.96l-0.19,-1.45l0.81,1.18l0.6,0.18l-0.13,0.9l0.55,0.54l0.84,-0.95l-0.26,-1.0l0.22,-0.07l0.23,0.56l0.69,0.33l1.51,0.06l0.38,-0.35l1.37,-0.17l0.96,2.09l2.41,0.95l1.25,-0.63l0.78,0.05l1.7,1.53l0.76,1.05l0.19,1.9l0.42,0.78l-0.05,2.05l-0.4,1.24l0.18,0.93l-0.45,1.74l0.24,1.45l0.78,0.86l1.94,0.58l1.43,1.07l1.36,0.42l1.03,0.7l4.99,-0.48l2.91,-1.03l1.14,0.52l2.23,0.11l4.23,1.47l0.69,0.55l0.18,1.15l0.57,0.59l1.86,-0.25l2.1,0.73l3.79,-0.51l0.69,-0.42l2.18,0.95l1.64,0.26l1.2,-0.29l0.87,0.27l1.89,-0.76l3.07,-0.4l4.16,0.17l1.62,-0.9l7.15,1.08l0.96,-0.18l0.8,-0.58l31.21,6.2l0.22,1.81l0.91,1.83l1.15,0.64l1.95,1.88l0.55,2.46l-0.16,1.0l-3.72,4.51l-0.41,1.41l-1.41,2.61l-2.23,2.39l-0.67,2.67l-1.5,1.82l-2.24,1.48l-1.94,3.32l-1.5,1.26l-0.63,2.01l-0.13,1.86l0.28,0.92l0.56,0.62l0.54,0.04l0.39,-0.34l0.63,0.76l0.89,-0.04l0.06,0.87l0.8,0.95l-0.46,0.99l-0.65,0.05l-0.34,0.4l0.2,1.79l-1.04,2.53l-1.23,1.4l-7.11,38.72l-26.22,-5.22l-28.9,-6.33l-28.79,-6.92l-28.92,-7.58l-1.46,-2.58l0.22,-2.33l-0.22,-0.89Z\", \"name\": \"Oregon\"}, \"US-KY\": {\"path\": \"M584.42,307.35l0.34,-2.14l1.15,0.94l0.72,0.19l0.75,-0.36l0.46,-0.87l0.87,-3.5l-0.55,-1.72l0.38,-0.85l-0.11,-1.85l-1.28,-2.0l1.78,-3.17l1.25,-0.51l0.74,0.05l7.06,2.47l0.81,-0.2l0.65,-0.71l0.23,-1.91l-1.5,-2.1l-0.24,-1.4l0.19,-0.86l0.4,-0.52l1.1,-0.19l1.24,-0.83l3.01,-0.96l0.64,-0.51l0.14,-1.13l-1.54,-2.01l-0.08,-0.66l1.33,-1.95l0.14,-1.15l1.26,0.41l1.12,-1.32l-0.68,-1.97l1.93,0.87l1.72,-0.84l0.03,1.15l1.01,0.45l0.99,-0.94l0.02,-1.34l0.51,0.16l1.9,-0.97l4.43,1.46l0.64,0.92l0.86,0.17l0.59,-0.59l0.73,-2.49l1.39,-0.55l1.4,-1.34l0.87,1.26l0.77,0.41l1.16,-0.14l0.12,0.74l0.95,0.18l0.66,-0.62l0.02,-0.99l0.84,-0.38l0.27,-0.48l-0.25,-2.06l0.84,-0.4l0.34,-0.56l-0.06,-0.67l1.25,-0.57l0.34,-0.72l0.39,1.45l0.62,0.59l1.47,0.61l1.25,-0.01l1.12,0.79l0.52,-0.11l0.26,-0.54l1.1,-0.46l0.53,-0.69l0.03,-3.42l0.85,-2.15l1.03,0.17l1.55,-1.19l0.74,-3.41l1.04,-0.37l1.65,-2.21l-0.0,-0.81l-1.19,-2.81l2.79,-0.61l1.54,0.78l3.85,-2.82l2.24,-0.47l-0.19,-1.06l0.35,-1.45l-0.32,-0.36l-1.22,-0.02l0.57,-1.38l-1.09,-1.5l1.65,-1.82l1.82,1.15l0.92,-0.12l1.94,-1.02l0.78,0.86l1.76,0.51l0.57,1.26l0.94,0.9l0.8,1.81l2.61,0.63l1.88,-0.58l1.64,0.25l2.2,1.8l0.96,0.41l1.27,-0.19l0.6,-1.3l0.99,-0.54l1.36,0.48l1.35,0.02l1.34,1.06l1.26,-0.69l1.42,-0.16l1.8,-2.53l1.72,-1.04l0.94,2.3l0.7,0.81l2.46,0.77l1.36,0.94l0.75,1.02l0.95,3.28l-0.37,0.45l0.1,0.71l-0.44,0.61l0.02,0.53l2.26,2.56l1.36,0.89l-0.07,0.87l1.35,0.94l0.59,1.33l1.56,1.17l0.99,1.58l2.15,0.8l1.1,1.09l2.13,0.23l-4.83,6.08l-5.06,4.15l-0.42,0.86l0.23,1.22l-2.07,1.93l0.05,1.61l-3.06,1.65l-0.8,2.36l-1.71,0.61l-2.7,1.83l-1.66,0.49l-3.39,2.42l-32.85,4.78l-7.5,0.92l-7.71,0.53l-22.79,3.67l-0.64,-0.55l-3.64,0.12l-0.41,0.6l1.05,3.51l-23.08,2.87ZM582.3,307.55l-0.6,0.08l-0.06,-0.53l0.48,-0.02l0.18,0.47Z\", \"name\": \"Kentucky\"}, \"US-CO\": {\"path\": \"M364.77,242.03l-1.26,64.83l-29.41,-0.94l-29.5,-1.5l-29.46,-2.05l-32.29,-2.88l8.57,-85.75l27.85,2.51l28.29,2.01l29.65,1.53l28.02,0.91l-0.47,21.33Z\", \"name\": \"Colorado\"}, \"US-OH\": {\"path\": \"M666.13,180.72l1.67,0.44l1.04,-0.31l1.75,1.04l2.08,0.23l1.48,1.15l1.61,0.23l-2.08,1.16l-0.11,0.47l0.42,0.24l2.46,0.16l1.39,-1.1l1.77,-0.27l3.41,0.91l0.92,-0.09l1.47,-1.29l1.74,-0.61l1.14,-0.96l1.91,-0.98l2.62,-0.06l1.09,-0.62l1.24,-0.07l1.06,-0.8l4.22,-5.44l4.52,-3.48l6.9,-4.4l6.01,27.6l-0.51,0.54l-1.28,0.43l-0.41,0.94l1.67,2.19l0.03,2.07l0.41,0.26l0.32,0.92l-0.04,0.75l-0.54,0.82l-0.48,4.03l0.19,3.16l-0.57,0.41l0.34,1.09l-0.34,1.72l-0.39,0.54l0.77,1.21l-0.24,1.84l-2.4,2.64l-0.82,1.85l-1.36,1.49l-1.24,0.68l-0.6,0.7l-0.88,-0.89l-1.18,0.15l-1.31,1.73l-0.08,1.3l-1.78,0.86l-0.77,2.22l0.28,1.55l-0.93,0.85l0.31,0.66l0.63,0.4l0.27,1.27l-0.8,0.18l-0.5,1.59l0.05,-0.91l-0.92,-1.23l-1.53,-0.52l-1.13,0.8l-0.75,1.87l-0.33,2.65l-0.53,0.82l1.24,3.51l-1.46,0.64l-0.43,3.33l-2.54,1.14l-1.01,0.06l-0.77,-1.04l-1.52,-1.07l-2.35,-0.69l-1.17,-1.87l-0.32,-1.12l-0.74,-0.34l-2.26,1.33l-1.09,1.28l-0.4,1.04l-1.43,0.17l-0.87,0.61l-1.12,-0.98l-3.15,-0.55l-1.37,0.72l-0.53,1.24l-0.72,0.06l-3.06,-2.19l-1.94,-0.26l-1.78,0.58l-2.15,-0.49l-0.55,-1.51l-0.97,-0.95l-0.64,-1.35l-2.04,-0.73l-1.15,-0.98l-0.97,0.27l-1.31,0.89l-0.46,0.03l-1.8,-1.19l-0.61,0.21l-0.6,0.7l-8.79,-54.8l20.44,-4.42ZM676.8,183.09l0.5,-0.77l0.64,0.41l-0.44,0.34l-0.7,0.03Z\", \"name\": \"Ohio\"}, \"US-OK\": {\"path\": \"M399.74,360.02l-0.05,-41.47l-0.39,-0.4l-26.8,-0.23l-25.23,-0.63l0.32,-10.07l36.84,0.78l36.14,-0.07l36.13,-0.9l35.7,-1.7l0.62,10.51l4.61,23.98l1.48,37.44l-1.21,-0.21l-0.29,-0.36l-2.14,-0.2l-0.83,-0.78l-2.13,-0.38l-1.78,-2.03l-1.24,-0.21l-2.27,-1.54l-1.5,-0.39l-0.8,0.45l-0.23,0.87l-0.83,0.24l-0.46,0.62l-2.49,-0.13l-0.48,-0.19l-0.28,-0.67l-1.05,-0.6l-2.31,1.28l-1.17,0.2l-0.19,0.56l-0.63,0.27l-2.13,-0.76l-1.71,1.17l-2.07,0.51l-0.83,1.36l-1.49,0.07l-0.57,1.24l-1.27,-1.53l-1.71,-0.09l-0.32,-0.57l-1.21,-0.45l-0.2,-0.23l0.18,-0.72l-0.44,-0.5l-1.24,-0.17l-0.74,1.37l-0.67,0.11l-0.84,-0.49l-0.98,0.07l-0.71,-1.5l-1.09,-0.34l-1.17,0.57l-0.45,1.69l-0.71,-0.08l-0.49,0.43l0.29,0.72l-0.5,1.66l-0.44,0.19l-0.56,-0.54l-0.31,-0.89l0.39,-1.64l-0.76,-0.85l-0.8,0.18l-0.49,0.76l-0.85,-0.18l-0.93,0.97l-1.08,0.13l-0.53,-1.35l-2.0,-0.18l-0.3,-1.46l-1.19,-0.53l-0.83,0.33l-2.13,2.14l-1.22,0.51l-0.98,-0.37l0.19,-1.23l-0.29,-1.12l-2.34,-0.66l-0.08,-2.15l-0.44,-0.55l-2.11,0.39l-2.53,-0.25l-0.64,0.26l-0.81,1.2l-0.96,0.06l-1.77,-1.75l-0.97,-0.12l-1.51,0.55l-2.7,-0.63l-1.86,-0.99l-1.05,0.25l-2.48,-0.3l-0.18,-2.1l-0.86,-0.86l-0.44,-1.01l-1.17,-0.41l-0.7,-0.82l-0.82,0.08l-0.44,1.63l-2.23,-0.67l-1.08,0.59l-0.97,-0.09l-3.81,-3.74l-1.13,-0.43l-0.81,0.08Z\", \"name\": \"Oklahoma\"}, \"US-WV\": {\"path\": \"M694.57,249.01l3.95,-1.56l0.35,-0.7l0.11,-2.72l1.15,-0.23l0.4,-0.61l-0.59,-2.46l-0.62,-1.21l0.48,-0.64l0.34,-2.74l0.67,-1.65l0.46,-0.39l1.25,0.52l0.41,0.68l-0.13,1.12l0.71,0.44l0.77,-0.44l0.47,-1.41l0.5,0.21l0.57,-0.2l0.2,-0.45l-0.65,-2.06l-0.75,-0.53l0.8,-0.78l-0.27,-1.69l0.73,-1.98l1.65,-0.53l0.16,-1.58l1.01,-1.41l0.44,-0.09l0.65,0.77l0.67,0.18l2.27,-1.59l1.49,-1.63l0.78,-1.81l2.44,-2.66l0.36,-2.38l-0.74,-0.98l0.7,-2.31l-0.25,-0.75l0.58,-0.58l-0.29,-3.38l0.45,-3.87l0.53,-0.79l0.07,-1.1l-0.39,-1.18l-0.4,-0.32l-0.05,-1.97l-1.58,-1.86l0.44,-0.53l0.85,-0.11l0.3,-0.33l4.15,19.01l0.48,0.31l16.61,-3.72l2.23,10.49l0.51,0.37l2.05,-2.49l0.97,-0.57l0.34,-1.02l1.62,-1.98l0.25,-1.03l0.52,-0.41l1.2,0.42l0.73,-0.32l1.31,-2.58l0.6,-0.46l-0.04,-0.85l0.42,0.58l1.81,0.49l3.2,-0.61l0.77,-0.86l0.07,-1.44l1.99,-0.76l1.02,-1.69l0.67,-0.11l3.17,1.44l1.8,-0.73l-0.44,1.01l0.56,0.9l1.28,0.4l0.09,0.95l1.13,0.4l0.1,1.18l0.34,0.41l-0.56,3.59l-9.05,-4.28l-0.64,0.25l-0.3,1.14l0.39,1.58l-0.51,1.61l0.42,2.24l-1.35,2.39l-0.41,1.74l-0.72,0.53l-0.41,1.09l-0.28,0.22l-0.61,-0.22l-0.37,0.33l-1.23,3.26l-1.86,-0.74l-0.64,0.26l-0.93,2.75l0.09,1.44l-0.73,1.14l-0.18,2.3l-0.88,2.18l-3.26,-0.31l-1.45,-1.71l-1.71,-0.22l-0.5,0.42l-0.25,2.14l0.2,1.28l-0.31,1.43l-0.49,0.45l-0.31,1.03l0.23,0.91l-1.57,2.42l-0.03,2.07l-0.51,1.98l-2.56,4.69l-0.74,3.13l0.15,0.76l1.14,0.52l-1.08,1.37l0.06,0.6l0.44,0.39l-2.15,2.12l-0.55,-0.69l-0.84,0.16l-3.12,2.54l-1.04,-0.54l-1.31,0.27l-0.43,0.9l0.46,1.14l-0.91,0.91l-0.74,-0.04l-2.27,1.02l-1.21,0.97l-2.2,-1.31l-0.73,0.0l-0.81,1.57l-1.1,0.5l-1.22,1.46l-1.09,0.1l-1.99,-1.05l-1.31,0.0l-0.62,-0.73l-1.2,-0.58l-0.31,-1.31l-0.88,-0.53l0.35,-0.66l-0.31,-0.81l-0.85,-0.36l-0.84,0.25l-1.34,-0.15l-1.27,-1.16l-2.07,-0.75l-0.77,-1.4l-1.59,-1.21l-0.71,-1.46l-1.0,-0.57l-0.13,-1.07l-1.39,-0.92l-2.01,-2.21l0.7,-2.0l-0.26,-1.59l-0.67,-1.43Z\", \"name\": \"West Virginia\"}, \"US-WY\": {\"path\": \"M218.82,209.32l10.47,-85.76l25.45,2.87l26.8,2.51l26.84,2.0l27.86,1.53l-3.81,86.31l-27.38,-1.48l-28.27,-2.06l-29.76,-2.75l-28.2,-3.17Z\", \"name\": \"Wyoming\"}, \"US-UT\": {\"path\": \"M178.98,182.72l41.58,5.7l-2.59,21.2l0.35,0.45l32.3,3.59l-8.57,85.75l-42.69,-4.9l-42.54,-6.06l16.56,-106.59l5.59,0.86ZM188.02,193.73l-0.3,0.03l-0.25,0.61l0.72,3.63l-0.81,0.18l-0.5,1.3l1.14,0.59l0.36,-0.83l0.37,-0.17l0.92,1.13l0.82,1.66l-0.26,0.99l0.15,1.43l-0.41,0.76l0.39,0.51l-0.05,0.55l1.57,1.82l0.02,0.59l1.12,1.91l0.71,-0.09l0.85,-1.72l0.07,2.25l0.53,0.94l0.06,1.77l0.99,0.47l1.66,-0.65l2.5,-1.73l0.38,-1.23l3.33,-1.39l0.18,-0.54l-0.52,-1.01l-0.68,-0.84l-1.36,-0.7l-1.85,-4.54l-0.87,-0.47l0.87,-0.89l1.3,0.6l1.33,-0.14l0.92,-0.82l-0.06,-1.11l-1.55,-0.51l-0.81,0.41l-1.18,-0.12l0.28,-0.75l-0.58,-0.78l-1.86,-0.23l-0.57,1.12l0.28,0.78l-0.35,0.67l0.54,2.41l-0.91,0.31l-0.34,-0.41l0.22,-1.78l-0.42,-0.69l-0.06,-1.72l-0.68,-0.6l-1.33,-0.12l-1.07,-1.54l-0.18,-0.67l0.64,-0.54l0.36,-1.28l-0.82,-1.37l-1.22,-0.29l-0.99,0.79l-2.74,0.17l-0.36,0.62l0.61,0.83l-0.28,0.42ZM199.39,206.21l0.03,0.02l0.03,0.09l-0.06,-0.11ZM199.42,207.0l0.31,0.91l-0.18,0.88l-0.39,-0.92l0.26,-0.87Z\", \"name\": \"Utah\"}, \"US-IN\": {\"path\": \"M601.93,192.0l1.44,0.85l2.1,0.13l1.52,-0.39l2.63,-1.39l2.73,-2.1l32.34,-5.07l9.08,56.53l-0.66,1.15l0.31,0.91l0.81,0.76l-0.65,1.12l0.5,0.79l1.12,0.03l-0.36,1.11l0.18,0.5l-1.81,0.3l-3.18,2.54l-0.44,0.18l-1.41,-0.78l-3.46,0.93l-0.09,0.77l1.21,3.04l-1.4,1.87l-1.18,0.5l-0.45,0.88l-0.3,2.56l-1.12,0.88l-0.89,-0.25l-0.63,0.49l-0.85,1.93l0.06,3.09l-0.39,0.98l-1.39,0.85l-0.94,-0.66l-1.24,0.02l-1.48,-0.66l-0.63,-1.81l-1.89,-0.7l-0.44,0.3l-0.03,0.51l0.82,0.66l-0.62,0.3l-0.89,-0.34l-0.35,0.29l-0.04,0.48l0.55,0.9l-1.08,0.68l0.15,2.34l-1.06,0.65l0.0,0.82l-0.16,0.36l0.08,-0.48l-0.34,-0.51l-1.61,0.19l-1.42,-1.65l-0.49,-0.07l-1.67,1.49l-1.57,0.69l-1.07,2.86l-0.82,-1.05l-2.8,-0.74l-1.12,-0.59l-1.08,-0.17l-1.76,0.92l-0.64,-1.0l-0.58,-0.18l-0.53,0.56l0.65,1.83l-0.33,0.82l-0.29,0.09l-0.03,-1.15l-0.43,-0.39l-2.04,0.81l-1.42,-0.81l-0.84,0.01l-0.48,0.95l0.72,1.52l-0.49,0.73l-1.16,-0.38l-0.08,-0.53l-0.52,-0.42l0.54,-0.62l-0.35,-3.04l0.95,-0.78l-0.08,-0.59l-0.43,-0.22l0.68,-0.45l0.25,-0.61l-1.18,-1.43l0.45,-1.15l0.33,0.19l0.59,-0.44l0.8,-0.1l0.33,-1.77l0.55,-0.39l0.44,-0.91l-0.06,-0.82l1.52,-1.06l0.06,-0.69l-0.42,-0.9l0.57,-0.85l0.13,-1.27l0.87,-0.51l0.39,-1.89l-1.1,-2.5l0.22,-0.78l-0.17,-1.1l-0.94,-0.89l-0.62,-1.47l-1.06,-0.76l-0.04,-0.57l0.92,-1.38l-0.64,-2.21l1.27,-1.31l-6.7,-49.9Z\", \"name\": \"Indiana\"}, \"US-IL\": {\"path\": \"M541.12,227.85l0.87,-0.35l0.37,-0.67l-0.24,-2.29l-0.74,-0.92l0.15,-0.4l0.71,-0.69l2.42,-0.98l0.71,-0.64l0.63,-1.67l0.17,-2.08l1.64,-2.45l0.27,-0.94l-0.04,-1.21l-0.59,-1.92l-2.24,-1.84l-0.12,-1.74l0.66,-2.35l0.45,-0.37l4.61,-0.86l0.81,-0.41l0.82,-1.11l2.55,-1.0l1.43,-1.55l-0.01,-1.56l0.4,-1.69l1.42,-1.45l0.29,-0.74l0.32,-4.32l-0.77,-2.12l-4.03,-2.42l-0.28,-1.47l-0.49,-0.81l-3.66,-2.42l44.64,-4.88l0.0,2.62l0.58,2.56l1.39,2.45l1.31,0.93l0.77,2.56l1.27,2.67l1.43,1.81l6.81,50.69l-1.22,1.12l-0.1,0.69l0.68,1.72l-0.83,1.07l-0.03,1.1l1.2,1.07l0.57,1.38l0.9,0.8l-0.09,1.78l1.07,2.26l-0.27,1.46l-0.87,0.56l-0.21,1.45l-0.59,0.92l0.33,1.18l-1.48,1.12l-0.22,0.42l0.29,0.68l-0.93,1.16l-0.3,1.18l-1.65,0.68l-0.62,1.65l0.16,0.8l0.97,0.8l-1.27,1.14l0.4,0.75l-0.47,0.23l-0.12,0.55l0.43,2.88l-1.15,0.2l0.08,0.45l0.9,0.75l-0.47,0.17l-0.02,0.64l0.83,0.28l0.04,0.41l-1.3,1.95l-0.24,1.17l0.6,1.21l0.7,0.63l0.37,1.05l-3.32,1.23l-1.19,0.81l-1.25,0.25l-0.77,1.0l-0.17,2.02l0.31,0.87l1.41,1.89l0.07,0.52l-0.53,1.17l-0.97,0.03l-6.33,-2.35l-1.08,-0.07l-1.58,0.64l-0.68,0.71l-1.43,2.91l0.06,0.66l-1.19,-1.18l-0.79,0.14l-0.35,0.47l0.57,1.11l-1.23,-0.76l-0.02,-0.67l-1.61,-2.16l-0.4,-1.1l-0.76,-0.36l-0.05,-0.47l0.94,-1.33l0.2,-1.02l-0.33,-1.0l-1.45,-1.98l-0.48,-3.13l-2.27,-0.96l-1.56,-2.09l-1.96,-0.79l-1.73,-1.31l-1.57,-0.13l-1.83,-0.93l-2.33,-1.73l-2.36,-2.39l-0.37,-1.91l2.36,-6.76l-0.25,-2.28l0.98,-2.03l-0.39,-0.84l-2.68,-1.41l-2.6,-0.64l-1.28,0.45l-0.86,1.43l-0.46,0.28l-0.45,-0.12l-1.3,-1.86l-0.43,-1.49l0.15,-0.86l-0.54,-0.9l-0.29,-1.62l-0.83,-1.33l-0.94,-0.88l-4.13,-2.46l-1.01,-1.61l-4.55,-3.45l-0.74,-1.87l-1.05,-1.19l-0.04,-1.57l-0.97,-1.45l-0.76,-3.48l0.09,-2.89l0.6,-1.26ZM586.9,296.43l0.05,0.06l0.03,0.03l-0.05,-0.0l-0.04,-0.09Z\", \"name\": \"Illinois\"}, \"US-AK\": {\"path\": \"M87.36,534.18l0.47,0.12l0.39,-0.03l0.07,0.37l-0.38,0.38l-0.69,0.33l-0.12,-0.13l0.29,-0.43l-0.1,-0.33l0.07,-0.29ZM89.85,534.33l0.63,-0.13l0.31,-0.6l1.87,-0.44l2.32,0.02l1.55,0.61l0.8,0.71l-0.15,1.95l0.18,0.42l0.1,-0.0l0.29,0.45l0.44,-0.08l0.29,-0.27l0.0,-0.67l0.34,0.23l-0.11,0.47l0.79,0.97l-0.04,0.07l-0.3,-0.1l-0.32,-0.32l-0.32,-0.11l-0.45,0.39l-0.16,-0.54l-0.38,-0.04l-0.24,0.12l-0.25,-0.16l-0.24,0.07l-0.39,-0.32l-0.3,-0.04l-0.73,0.26l-0.89,-0.2l-0.06,-0.27l-0.23,-0.18l0.36,-0.29l0.69,0.74l0.47,-0.03l0.21,-0.45l-0.25,-0.46l-0.0,-0.32l-0.26,-0.72l-0.96,-0.54l-1.1,0.3l-0.64,0.75l-0.83,0.25l-0.29,0.09l-0.42,-0.31l-0.48,0.11l-0.1,0.17l-0.65,-0.16l-0.28,0.07l-0.24,0.25l0.25,-0.28l-0.05,-0.59l0.21,-0.89ZM99.7,537.94l0.33,-0.34l0.43,-0.24l-0.01,-0.35l-0.47,-1.08l0.15,-0.27l0.65,-0.28l0.32,-0.33l0.72,-0.38l0.65,-0.03l0.43,-0.15l0.83,0.08l1.47,-0.11l0.63,0.14l0.1,0.14l0.38,0.14l0.9,0.09l0.27,0.15l0.28,-0.24l0.27,-0.06l0.37,0.08l0.18,0.21l0.27,-0.04l0.21,0.43l0.39,0.27l0.08,0.22l0.71,-0.02l0.39,-0.85l0.55,-0.71l0.52,-0.25l1.89,-0.56l0.5,0.02l0.35,0.22l1.22,-0.45l0.64,0.02l-0.15,0.41l0.4,0.58l0.61,0.29l0.46,-0.01l0.45,-0.47l0.13,-0.43l-0.35,-0.28l-0.25,-0.06l0.17,-0.42l-0.14,-0.42l1.23,-1.18l0.98,-1.13l0.16,-0.1l0.35,0.16l0.38,-0.03l0.26,0.28l0.17,0.41l0.67,-0.24l-0.05,-0.61l-0.38,-0.61l-0.45,-0.26l0.25,-0.55l0.9,-0.58l0.37,0.02l0.73,-0.26l0.84,-0.13l0.57,0.16l0.44,-0.15l-0.12,-0.56l0.24,-0.11l0.62,-0.65l0.43,0.04l0.24,-0.11l0.52,-0.62l0.38,-0.16l0.2,-0.48l-0.44,-0.28l-0.55,0.11l-0.59,0.59l-0.54,-0.07l-0.54,0.34l-2.21,-0.44l-1.73,-0.17l-0.68,-0.22l-0.09,-0.2l0.22,-0.4l0.08,-0.44l-0.26,-0.66l0.69,-0.45l0.24,-0.34l0.47,0.57l-0.21,0.72l0.03,0.41l0.61,0.14l0.29,-0.14l-0.01,-0.29l0.21,-0.39l0.04,-0.79l-0.74,-1.1l0.09,-0.77l-0.68,-0.24l-0.21,0.25l-0.12,0.58l-0.54,0.27l-0.27,-0.56l-0.34,-0.08l-0.49,0.37l-0.07,0.34l-0.24,0.24l-0.4,-0.01l-0.48,0.27l-0.29,0.57l-0.53,1.69l-0.27,0.06l-0.23,-0.38l0.4,-2.82l0.01,-0.54l-0.15,-0.55l0.18,-0.2l0.14,-0.44l-0.15,-0.33l-0.51,-0.26l-0.94,0.36l0.02,-0.53l-0.5,-0.64l0.24,-0.28l0.16,-0.7l-0.14,-0.41l-0.58,-0.27l-1.94,0.1l-0.58,-0.32l-1.04,-0.07l-0.2,-0.36l-0.24,-0.06l-1.16,0.65l-0.73,-0.13l-0.06,-0.42l-0.15,-0.03l0.18,-0.12l0.34,0.1l0.5,-0.11l0.29,-0.39l-0.16,-0.57l0.5,-0.64l0.9,-0.0l0.43,-0.18l0.13,-0.3l-0.1,-0.46l-1.07,-0.66l0.16,-0.38l0.4,-0.21l0.45,-0.53l1.21,-0.08l0.23,-0.1l0.17,-0.27l0.17,-1.07l0.3,-0.59l0.27,-1.56l0.33,-0.54l-0.01,-0.63l0.14,-0.31l1.0,-0.81l-0.03,-0.14l0.2,-0.15l-0.2,-0.34l-0.24,-0.11l-0.14,0.07l-0.09,-0.34l0.71,-0.3l0.4,-0.32l0.52,-0.13l0.31,-0.33l0.46,-0.04l0.15,0.15l0.45,0.08l0.33,-0.12l0.44,-0.51l-0.32,-0.4l-0.34,-0.04l-0.01,-0.32l-0.27,-0.36l-0.62,0.35l0.01,0.16l-0.56,-0.06l-1.27,0.79l-0.19,-0.04l-0.58,0.22l-0.38,-0.03l-0.25,0.1l-0.05,0.15l-0.48,-0.06l-0.17,0.47l0.35,0.75l-0.37,0.25l-0.22,0.4l-0.2,0.15l-0.15,-0.07l-0.13,-0.26l-2.03,-0.22l-1.8,-0.94l-0.73,-0.6l-0.44,-0.69l0.09,-0.39l0.11,0.06l0.53,-0.13l-0.05,-0.33l0.13,-0.31l-0.38,-1.12l0.22,-0.87l-0.11,-0.58l0.42,-0.68l-0.42,-0.31l-0.21,0.02l-0.35,-0.67l0.0,-0.37l0.37,-0.01l0.39,-0.17l0.32,-0.43l-0.03,-0.35l-0.26,-0.27l-0.54,-0.17l1.35,0.03l0.28,-0.15l0.21,-0.32l0.67,-0.05l0.02,0.53l0.51,0.51l0.27,0.51l-0.09,0.24l-0.29,-0.02l-0.62,0.18l-0.55,0.48l0.0,0.14l0.31,0.38l1.01,-0.16l0.4,0.22l0.27,-0.03l0.46,-0.28l0.28,-0.0l0.09,0.08l-0.64,0.61l-0.16,0.47l0.03,0.25l0.17,0.24l0.48,0.24l1.49,-0.04l0.27,-0.18l0.18,-0.34l0.2,-0.07l-0.14,-0.9l0.27,-0.1l0.2,-0.27l0.02,-0.32l-0.13,-0.24l0.2,-0.53l-0.06,-0.13l-0.55,-0.28l-0.84,0.04l-0.35,0.16l-0.97,-0.93l-0.42,-0.26l0.07,-0.57l-0.33,-0.44l-0.24,-0.13l-0.19,-0.48l0.19,0.03l0.07,-0.09l0.52,0.15l0.51,-0.35l-0.15,-0.47l-0.73,-0.52l0.2,-0.06l0.41,-0.42l-0.11,-0.55l0.12,-0.15l0.41,-0.21l0.27,0.07l0.5,-0.15l0.43,0.25l0.8,-0.11l0.67,-0.43l-0.02,-0.53l-0.18,-0.22l-0.45,-0.06l-0.66,0.28l-0.44,-0.17l-1.09,0.08l-0.76,0.26l-0.36,0.37l-0.7,0.11l-0.18,0.15l-0.15,0.39l-0.12,0.12l-0.06,-0.08l0.08,-0.32l0.35,-0.45l-0.07,-0.08l0.19,0.01l0.12,-0.14l-0.1,-0.06l0.17,-0.46l-0.4,-0.6l0.11,-0.27l0.4,0.09l0.24,-0.06l0.45,-0.5l0.04,-0.34l-0.13,-0.54l-0.39,-0.37l1.09,0.44l0.4,-0.45l-0.38,-0.63l-0.06,-0.33l0.52,0.48l0.98,0.33l0.18,-0.4l0.12,0.03l0.05,-0.61l0.22,-0.48l0.63,-0.43l0.57,-0.07l2.22,-0.76l0.81,-0.13l0.27,0.19l-0.08,0.5l0.2,0.34l-0.41,0.26l0.13,0.45l0.3,0.14l0.85,-0.04l0.29,-0.37l0.05,-0.95l-0.19,-0.11l0.35,0.03l1.35,-0.27l0.27,-0.58l-0.05,-0.09l-0.31,-0.21l-0.9,0.06l0.08,-0.22l0.5,-0.05l0.12,-0.59l0.14,-0.14l0.89,-0.42l0.73,0.88l0.38,0.11l0.32,-0.23l0.16,-0.44l-0.01,-0.27l-0.25,-0.44l0.64,-0.07l0.65,0.27l0.28,0.29l0.41,0.85l-0.04,0.22l-0.15,0.1l0.04,0.18l-0.54,-0.04l-0.54,0.27l-0.1,0.49l0.46,0.2l1.1,-0.05l-0.07,0.5l0.35,0.37l0.69,0.38l0.34,0.09l0.95,-0.04l0.57,-0.28l0.44,0.15l0.53,-0.06l1.67,-0.57l0.1,0.54l1.59,0.9l0.27,0.34l0.54,0.31l1.07,0.28l2.13,-0.53l0.42,-0.22l0.47,-0.45l0.41,-0.77l0.37,-1.17l0.9,-1.39l0.06,-0.37l-0.1,-0.54l0.04,-0.33l0.22,-0.25l-0.06,-0.5l0.46,0.37l0.31,0.02l0.23,-0.16l1.15,-0.23l0.62,-0.63l0.26,-1.05l-0.15,-0.65l0.51,-0.43l-0.22,-0.39l-0.76,-0.38l-0.4,0.19l-0.4,0.02l-0.6,0.33l-0.26,-0.29l-0.05,-0.41l-0.3,-0.35l-0.49,-0.04l-0.07,0.23l-0.62,0.0l-0.43,-0.28l-0.08,0.09l-0.54,-0.03l-0.36,0.17l-0.95,-0.12l-0.9,0.24l0.06,-0.3l-0.16,-0.8l0.04,-0.58l-0.1,-0.59l-0.54,-0.21l-0.87,0.1l-0.29,-0.51l-0.43,-0.43l-0.59,-0.28l-1.06,-1.04l-0.92,-0.12l-0.2,-0.28l-0.43,-0.23l-0.07,-0.22l-0.65,-0.06l-0.17,0.22l-0.7,-1.25l-0.93,-1.21l-0.6,-0.94l-0.15,-0.58l0.22,-0.72l0.16,-0.13l0.26,0.05l0.25,-0.13l0.49,-0.79l-0.01,-0.48l-0.21,-0.69l0.21,-0.4l0.5,0.21l0.56,-0.14l0.47,-0.29l0.4,0.66l0.5,0.23l0.42,-0.32l0.06,-0.37l-0.2,-0.74l-0.43,-0.44l-0.33,-0.84l-0.73,-0.89l-0.16,-0.04l-0.77,-1.14l-0.22,-0.53l0.03,-0.34l-0.38,-1.37l0.77,0.03l0.48,0.42l0.39,0.13l0.39,-0.13l0.19,-0.28l0.19,0.05l0.18,-0.27l0.19,-0.0l0.22,0.55l0.54,0.22l1.01,0.04l0.19,-0.16l0.17,0.07l0.66,-0.29l1.57,0.23l0.08,0.66l0.76,0.9l1.11,0.4l0.5,-0.28l0.03,-0.12l-0.01,-0.26l-0.38,-0.97l0.25,-0.04l1.04,0.11l0.61,0.18l0.24,0.17l0.02,0.44l0.76,0.16l0.33,-0.12l1.02,-0.04l0.42,0.17l1.32,0.83l0.03,0.42l0.15,0.18l-0.14,0.16l-0.52,0.11l-0.41,0.31l-0.48,0.71l-0.5,-0.17l-0.63,-0.09l-0.12,0.06l-0.08,0.66l0.52,0.44l-0.12,0.64l0.09,0.45l0.28,0.39l0.8,0.5l0.15,0.33l0.4,0.4l0.72,0.27l0.32,0.25l-0.29,0.37l-0.04,0.29l0.48,0.32l0.22,-0.09l0.18,0.07l0.07,0.23l0.35,0.3l0.54,0.08l0.24,0.37l-0.17,0.51l0.21,0.38l0.49,0.2l0.35,-0.15l0.07,-0.28l0.31,-0.03l0.3,-0.25l1.17,-0.57l0.04,0.5l0.32,0.37l-0.13,0.11l-0.33,0.02l-0.08,0.49l0.34,0.34l0.57,-0.02l0.77,-0.55l0.23,-0.37l0.13,-0.95l-0.53,-1.05l0.53,0.03l0.16,0.37l-0.04,0.42l0.21,0.94l0.5,0.48l1.23,0.64l0.3,0.05l0.27,-0.1l0.29,-0.29l0.49,-0.7l0.1,-0.53l0.43,-0.51l-0.16,-0.31l-0.71,-0.34l-0.49,-0.01l-0.06,-0.56l-0.18,-0.38l-0.88,-0.51l-0.51,-0.09l-0.69,0.4l-0.2,-0.22l0.09,-0.54l-0.1,-0.15l-0.06,-0.94l0.33,-0.37l0.4,-0.14l0.27,-0.3l0.38,-0.08l0.3,0.24l0.3,0.04l0.39,-0.33l0.04,-0.19l-0.5,-1.34l-0.57,-0.43l-0.49,-0.19l-0.05,-0.43l0.37,-0.35l0.03,-0.29l-0.11,-0.24l-0.51,-0.23l-0.39,0.26l0.03,0.11l-0.6,0.24l-0.2,-0.44l-0.8,-0.5l-0.12,-0.35l-1.08,-1.4l1.04,-1.59l0.48,-1.31l0.21,-1.26l-0.22,-1.28l0.02,-1.32l-0.25,-0.51l-0.08,-1.73l-0.15,-0.88l-0.74,-1.55l0.16,-0.91l-0.24,-1.2l0.25,-0.0l1.0,-0.81l0.49,-0.22l1.3,-1.27l0.3,-0.44l0.16,0.26l0.43,0.32l0.33,0.49l1.57,1.15l0.85,0.35l1.25,0.85l0.65,0.21l0.78,0.09l1.5,-0.09l1.75,-0.56l0.32,0.05l0.52,-0.2l1.22,-0.98l0.43,-0.54l0.4,-0.31l0.55,-0.18l0.17,-0.45l2.11,-0.42l0.63,-0.43l0.54,-0.09l0.2,-0.19l0.25,-0.04l0.1,0.18l0.69,0.39l0.89,0.14l0.09,-0.15l0.19,-0.05l0.66,0.47l0.8,0.14l0.38,0.39l0.41,-0.26l2.49,-0.32l-0.46,0.31l0.23,0.44l-0.72,0.37l-0.11,0.57l0.36,0.2l-0.26,1.06l0.21,0.46l0.49,-0.11l0.8,-1.61l0.24,-0.23l0.25,0.17l0.55,0.07l0.28,0.23l0.49,0.02l0.31,-0.11l-0.07,-0.72l-0.28,-0.1l-0.33,-0.32l-0.36,-0.04l-0.0,-0.14l0.16,-0.3l0.05,-0.61l0.41,0.07l0.82,-0.35l-0.0,1.13l0.16,0.42l0.45,0.0l0.24,-0.34l0.43,0.18l0.24,-0.1l0.46,0.48l1.04,0.48l0.2,-0.05l0.71,0.47l0.58,0.1l1.34,-0.08l1.42,-0.31l1.29,-0.65l1.13,-0.41l0.06,0.74l0.64,0.58l-0.31,0.27l0.14,0.59l0.58,0.09l0.25,0.14l0.16,0.27l-0.16,0.38l-0.53,0.08l-0.22,0.14l-0.83,-0.31l-0.6,0.19l-0.28,0.66l0.17,0.37l-0.54,0.69l0.23,0.62l0.39,0.04l0.35,-0.31l0.64,0.31l0.32,-0.03l0.36,-0.22l0.3,-0.41l0.4,-0.13l0.35,0.33l0.27,-0.05l0.33,0.15l0.24,-0.07l0.35,-0.34l0.08,0.63l-0.43,0.35l-0.58,0.09l0.1,0.73l-0.05,0.46l0.2,0.27l0.55,0.25l-0.11,0.23l0.12,0.4l0.22,0.16l0.4,0.05l1.03,-0.36l0.71,0.57l0.62,0.22l0.32,-0.04l0.14,0.36l0.2,0.09l0.02,0.43l0.24,0.25l0.17,0.54l0.45,0.04l0.29,-0.21l0.23,0.34l-1.14,0.49l-0.31,0.63l-0.62,0.16l-0.15,0.49l0.34,0.45l1.51,0.71l-0.37,0.08l-0.25,0.18l-0.03,0.62l0.55,0.49l0.67,0.4l0.14,0.2l0.13,0.59l0.36,0.22l0.46,-0.17l0.1,-0.24l1.06,0.38l0.2,-0.18l0.27,0.35l-0.2,0.22l0.18,0.58l1.13,0.28l0.65,-0.12l0.18,0.18l0.66,0.24l0.02,0.15l0.23,0.24l0.36,0.11l0.34,0.46l0.11,0.53l0.19,0.07l0.56,0.71l-0.11,0.23l0.06,0.57l0.51,0.33l0.5,-0.08l0.1,0.41l0.41,0.37l-0.19,0.45l0.29,0.52l0.7,0.54l0.72,0.78l0.67,0.31l0.22,-0.06l1.43,0.88l0.33,0.49l0.45,0.21l0.37,0.84l0.07,-0.04l0.02,0.34l0.12,0.03l0.31,0.59l-0.03,0.31l0.51,0.28l0.38,0.42l0.36,0.11l0.29,0.27l0.49,0.2l0.84,-0.17l0.4,0.22l0.04,0.55l0.49,0.04l0.4,-0.4l0.51,0.02l0.21,0.18l0.6,0.22l-0.03,0.31l0.54,0.37l0.22,-0.21l0.16,0.11l0.21,0.36l0.27,0.08l0.28,0.52l-0.06,0.4l0.39,0.53l-0.08,0.29l0.11,0.51l0.48,0.47l0.03,0.45l0.13,0.18l0.35,0.13l0.38,0.48l0.3,1.3l0.27,0.3l0.68,0.03l-33.88,69.97l0.07,0.44l1.39,1.52l0.56,0.03l0.2,-0.18l1.0,1.36l0.47,0.14l1.42,-0.55l1.71,0.67l-1.05,1.27l-0.09,0.32l0.25,1.15l0.83,1.01l-0.14,0.64l0.04,0.6l1.99,5.34l-0.34,1.76l-0.34,0.47l0.19,0.61l0.33,0.11l0.27,-0.0l0.86,-0.33l0.55,-0.04l0.04,0.26l-0.76,0.37l-0.33,0.35l0.29,0.55l0.37,-0.02l0.38,-0.21l0.2,0.1l0.0,0.24l0.53,0.24l0.14,1.31l0.1,0.14l-0.31,0.03l-0.1,0.46l0.22,0.36l0.92,0.24l0.05,0.19l-0.31,0.19l-0.0,0.13l0.19,0.34l0.19,0.11l-0.13,0.52l-0.19,-0.01l-0.06,-0.5l-0.34,-0.34l-0.12,0.06l-0.23,-0.49l-0.51,-0.04l-0.29,0.41l-0.27,-0.02l-0.23,0.12l-0.19,-0.6l-0.14,0.01l-0.33,-0.45l-0.45,-0.12l-0.86,-1.68l0.26,-0.0l0.3,-0.44l-0.05,-0.28l-0.36,-0.33l-0.47,0.03l-0.39,-1.0l-0.06,-0.2l0.18,-0.61l-0.05,-0.42l-0.43,-1.17l-0.42,-0.8l-0.15,-0.06l-0.03,-0.2l0.19,-0.5l-0.3,-0.32l-0.68,-0.12l-0.76,-1.2l-0.34,-0.36l-0.22,-0.51l0.0,-0.25l-0.29,-0.25l-0.22,-0.37l-0.28,-0.12l-0.53,-0.85l0.33,0.03l0.26,-0.14l0.12,-0.23l0.61,-0.3l-0.02,0.19l-0.22,0.1l-0.15,0.49l0.27,0.46l0.43,0.08l0.44,-0.35l0.31,-1.17l0.22,-0.31l0.35,0.19l0.12,0.32l0.22,0.2l0.41,0.04l0.32,-0.36l-0.39,-0.84l-0.65,-0.42l-0.17,-1.03l-0.29,-0.7l-0.44,-0.21l-0.49,0.29l-0.22,0.26l-0.42,0.09l-0.83,0.47l-1.88,0.06l-0.94,-0.51l-0.42,-0.36l-1.39,-1.72l0.31,-0.13l0.2,-0.25l0.32,-0.95l-0.37,-1.07l-0.54,-0.07l-0.36,0.29l-0.08,0.55l-0.66,0.01l-0.74,-0.96l-2.63,-2.07l-1.67,-0.45l-1.59,-0.64l-1.09,-0.13l-0.02,-0.58l-0.25,-0.63l0.18,-0.21l0.03,-0.3l-0.23,-0.29l-0.25,-0.01l-0.99,-0.65l-0.07,-0.58l-0.17,-0.38l-0.2,-0.13l0.07,-0.18l0.3,-0.08l0.43,-0.41l0.11,-0.29l-0.11,-0.09l0.31,-0.43l0.29,-0.14l0.38,0.06l0.37,-0.2l0.18,-0.32l-0.0,-0.32l-0.35,-0.26l-0.61,-0.04l-0.84,0.36l-0.28,0.27l-0.59,0.06l-0.62,0.45l-0.63,0.21l-0.13,-0.1l-0.12,-0.65l-0.6,-0.75l0.99,-0.56l0.18,-0.35l-0.33,-0.49l-0.45,0.03l-0.19,-0.61l-0.13,-0.1l0.18,-0.56l-0.13,-0.28l0.08,-0.24l-0.24,-0.61l-0.47,-0.26l-0.52,0.22l-0.09,-0.21l-0.21,-0.01l-0.07,-0.12l0.32,-0.71l-0.08,-0.14l0.37,0.06l0.11,-0.13l0.59,0.36l0.42,0.06l0.4,-0.44l-0.08,-0.47l-0.28,-0.31l-1.03,-0.53l-1.57,0.42l-0.08,-0.19l-0.39,-0.32l-0.41,0.01l-0.1,-0.25l-0.41,0.05l-0.2,-0.13l0.26,-0.39l0.18,-0.83l-0.15,-0.23l-0.36,-0.13l0.14,-0.17l0.2,-0.7l-0.37,-0.34l-0.3,0.04l-1.38,0.7l-0.36,-0.43l-1.21,-0.12l-0.18,0.31l-0.52,0.28l0.05,0.48l0.19,0.14l-0.11,0.28l-0.81,-0.24l-0.66,0.02l-0.27,0.57l-0.52,0.43l0.1,0.52l0.33,0.17l0.42,-0.05l-0.12,0.24l-1.26,0.35l-0.28,0.24l-0.07,0.41l0.41,0.33l0.83,-0.19l0.01,0.38l0.35,0.34l-0.41,0.17l-0.14,0.35l-0.59,-0.04l-0.24,0.4l-0.35,0.16l0.06,0.54l-0.29,0.33l-0.13,0.11l-0.09,-0.11l-0.67,0.18l-0.02,0.15l-0.31,-0.3l-0.43,-0.14l-0.12,-0.28l-0.17,-0.11l0.18,-0.58l-0.07,-0.12l-0.48,-0.24l-0.46,0.09l0.2,-0.46l-0.01,-0.33l-0.23,-0.3l-0.3,-0.08l-0.43,0.22l-0.36,0.71l-0.2,0.15l-0.2,-0.02l-0.18,-0.5l-0.51,-0.08l-0.42,0.5l-0.43,-0.05l-0.19,0.37l-0.23,-0.3l-0.45,-0.03l-0.25,0.25l-0.04,0.31l-0.3,-0.08l-0.14,-0.37l-0.12,-0.02l-0.39,0.09l-0.72,0.47l-0.01,-0.27l-0.12,-0.09l-0.86,-0.01l-0.38,0.23l0.01,0.46l-1.69,0.41l-0.81,-0.77l-0.25,-0.04l-0.32,0.3l-0.39,-0.25l-0.96,-0.01l-0.3,-0.5l-0.07,-0.37l0.11,0.09l0.66,-0.33l-0.01,-0.1l0.26,0.09l0.34,-0.07l0.37,0.28l0.07,0.27l0.21,0.23l0.51,-0.04l0.19,-0.29l0.01,-0.28l0.31,0.14l0.44,-0.07l0.47,-0.16l0.09,-0.22l0.53,-0.29l0.5,-0.13l0.3,-0.47l-0.19,-0.43l-0.51,-0.19l-1.87,0.16l-0.47,-0.71l-0.04,-0.34l1.51,-1.29l1.74,-0.62l0.37,-0.29l0.42,-0.58l0.21,0.02l0.26,-0.13l0.8,-1.1l0.24,-1.21l0.46,-0.04l0.73,0.28l1.61,-0.32l1.36,-0.08l-0.05,0.52l0.19,0.48l0.52,0.51l1.2,0.2l0.23,0.45l1.45,1.39l0.16,0.38l0.29,0.16l0.48,-0.33l0.06,-0.48l-0.08,-0.44l-0.39,-0.52l-0.41,-0.12l-0.25,-0.55l-0.39,-0.37l-0.6,-1.46l0.49,-0.09l0.64,-0.47l0.37,-0.01l0.36,-0.23l1.56,0.25l0.38,-0.1l0.15,-0.57l-0.75,-0.62l-0.83,-0.27l-0.64,0.0l-0.98,0.33l-0.55,0.58l-0.65,-0.49l-0.11,-0.29l-0.55,-0.08l0.23,-0.38l-0.2,-0.67l-0.3,-0.01l-0.45,0.3l-0.18,-0.09l-0.33,0.19l-0.85,-0.15l-0.51,0.05l-0.93,0.54l-0.63,-0.12l-0.41,-0.23l-0.48,-0.05l-0.65,0.18l-0.29,-0.03l-0.61,0.32l-0.26,0.3l-0.09,0.42l-0.43,-0.13l-0.68,0.1l-0.55,0.31l-0.65,0.08l-0.57,0.21l-0.42,0.37l-0.15,0.46l-0.6,0.29l-0.6,0.01l-0.33,-0.24l-0.19,-0.75l-0.42,-0.34l-0.33,-0.12l-0.44,0.05l-0.26,0.26l0.14,0.52l0.28,0.07l0.02,0.63l0.32,0.65l0.02,0.67l-0.46,0.14l-0.39,0.32l-0.32,-0.05l-0.53,-0.39l-0.76,-0.31l-0.3,-0.03l-0.52,0.26l0.04,0.67l-0.07,-0.54l-0.29,-0.38l-0.45,0.17l-0.3,0.49l-0.19,-0.37l-0.85,0.2l-0.09,0.06l-0.03,0.5l-0.4,-0.36l-0.35,-0.02l-0.21,0.71l0.08,0.2l-0.35,-0.21l-0.38,0.06l-0.47,-0.19l-0.65,0.34l0.01,0.17l-0.32,0.17l-0.34,0.45l-0.5,0.02l-0.04,0.18l-0.21,0.08l0.0,0.48l-0.21,0.29l-0.05,0.39l0.34,0.39l0.59,-0.1l0.36,0.39l0.52,0.29l-0.03,0.37l0.15,0.4l0.38,0.33l0.0,0.52l-0.33,0.14l-0.48,0.42l-0.52,-0.03l-0.47,0.23l-0.85,-0.45l-0.39,0.03l-0.33,0.34l-0.15,-0.02l-0.08,0.15l-0.17,-0.11l-0.49,0.0l-0.37,0.68l-0.8,-0.11l-0.42,0.08l-0.37,0.3l-0.02,0.34l-0.05,-0.14l-0.37,-0.26l-0.38,0.26l-0.05,0.14l-0.21,-0.12l-0.38,0.21l-0.29,-0.09l-0.37,0.09l-0.5,-0.44l-0.48,-0.15l-1.0,0.59l-0.12,-0.1l-0.35,0.16l-0.42,-0.16l-0.48,0.3l-0.09,-0.34l-0.3,-0.29l-0.39,-0.0l-0.43,0.31l-0.22,0.36l-0.4,-0.17l-0.35,0.36l-0.42,-0.07l-0.41,-0.46l-0.41,0.09l-0.34,0.26l-0.55,-0.13l-0.15,0.1l-0.32,-0.07l-0.78,0.14l-0.41,-0.05l-0.31,0.14l-0.22,0.28l0.03,0.47l0.12,0.1l0.0,0.5l-0.36,-0.03l-0.17,0.19l-0.67,-0.23l-0.41,-0.28l-0.36,0.12l-0.17,0.24l-0.19,-0.25l-0.66,0.27l-0.57,0.09l-0.31,-0.22l-0.27,0.18l-0.14,-0.63l-0.41,-0.25l-0.44,0.09l-0.29,0.36l-0.49,0.09l-0.19,-0.09l-0.2,0.35l-0.03,-0.25l-0.28,-0.29l-0.53,-0.13l-1.34,-0.02l-0.66,0.34l-0.42,-0.34l-0.53,-0.02l-0.88,0.31l-0.74,0.12l-0.17,0.14l-0.15,0.37l0.04,0.2l-0.34,-0.03l-0.42,0.3l-0.09,0.27l-0.29,0.16l-0.22,-0.25l-0.39,-0.03l-0.39,0.2l-0.58,-0.33l-0.87,-0.21l-0.37,-0.18l-0.09,-0.39l-0.39,-0.15l-0.28,0.02l-0.17,0.13l-0.67,-0.68l-0.42,0.02l-0.8,-0.23l-0.32,0.23l-0.41,0.02ZM106.4,539.35l-0.02,0.01l-0.0,0.03l0.02,-0.04ZM106.43,539.32l0.01,-0.01l-0.01,0.0l-0.0,0.01ZM111.57,518.06l-0.28,0.1l-0.37,0.21l0.38,-0.38l0.27,0.08ZM135.54,477.36l-0.14,0.2l-0.03,0.01l0.06,-0.2l0.11,-0.01ZM165.25,532.53l-0.7,0.04l-0.06,-0.16l0.39,-0.18l0.33,-0.39l0.85,-0.3l-0.33,0.55l-0.37,0.09l-0.1,0.36ZM161.82,535.36l0.25,0.0l0.0,0.01l-0.28,0.13l0.03,-0.14ZM158.22,525.53l0.0,-0.0l-0.0,0.0l-0.0,-0.0ZM157.41,525.32l-0.03,-0.01l0.01,-0.01l0.02,0.02ZM141.51,529.3l0.28,0.11l0.27,0.23l-0.18,0.15l-0.38,0.01l-0.06,-0.1l0.11,-0.12l-0.03,-0.28ZM130.96,537.03l0.02,0.01l-0.03,0.02l0.0,-0.03ZM107.99,539.38l0.13,-0.03l0.06,0.1l-0.11,0.04l-0.07,-0.1ZM105.8,540.76l0.01,0.03l-0.02,0.0l0.0,-0.03l0.01,-0.0ZM98.05,537.96l0.0,0.06l-0.04,0.0l0.04,-0.07ZM189.71,556.2l0.09,-0.87l0.26,-0.09l0.03,0.48l-0.38,0.49ZM196.77,565.5l0.54,-0.11l0.83,0.29l0.38,-0.07l0.81,-0.66l0.46,-1.03l0.4,0.03l0.29,-0.09l0.5,-0.42l0.14,-0.26l0.0,-0.34l1.03,0.18l1.86,-0.26l0.42,0.76l-0.02,0.36l0.38,0.82l-0.16,0.4l-0.33,0.23l-0.1,0.5l0.11,0.21l-0.15,0.37l0.08,0.6l0.16,0.27l0.65,0.49l-0.02,0.41l0.25,0.63l0.33,0.27l0.06,0.43l-0.19,0.35l0.18,1.36l1.21,1.64l0.21,1.03l-0.69,-0.21l-0.4,0.06l-0.33,0.42l-0.51,0.26l-0.04,0.35l-0.41,0.21l-0.2,0.31l-0.42,-1.04l-0.8,-0.71l0.15,-0.53l-0.14,-0.43l-0.05,-0.8l0.15,-0.11l0.35,-1.25l-0.24,-0.23l0.05,-0.09l-0.14,-0.02l0.05,-0.08l-0.1,0.06l-0.13,-0.13l-0.11,0.1l-0.03,-0.1l0.14,-0.2l0.38,-2.06l-0.06,-1.21l0.61,-1.16l0.04,-0.36l-0.68,-0.27l-0.56,0.83l-0.22,-0.13l-0.44,0.09l-0.08,0.44l0.07,0.14l-0.37,0.38l0.23,1.2l-0.43,0.98l0.02,1.52l-0.15,0.39l0.01,0.5l-0.3,0.34l-0.12,2.12l-0.33,0.4l-0.18,-0.2l-0.05,-0.31l0.12,-1.48l-0.25,-0.33l-0.54,0.11l-0.1,0.15l-0.79,-0.08l-0.02,-0.13l0.29,-0.11l0.15,-0.25l0.25,-0.95l-0.11,-0.11l-0.07,-1.31l0.94,0.09l0.44,-0.41l-0.08,-0.36l-0.7,-0.48l-0.22,0.08l0.04,-0.97l-0.25,-0.3l-0.34,-0.05l-0.39,0.67l-0.26,0.08l-0.24,0.42l0.35,0.35l-0.2,0.26l-0.04,-0.39l-0.49,-0.25l0.3,-0.64l-0.28,-0.55l-0.26,-0.02l-0.13,-0.53l-0.45,-0.19l-0.25,0.33l-0.21,-0.55ZM207.28,574.49l0.35,0.91l-0.28,0.4l0.04,0.74l0.38,1.41l-0.0,1.31l0.27,1.06l0.37,3.3l0.33,1.42l0.09,1.05l-0.6,0.55l0.03,0.61l0.79,0.61l-0.55,0.81l0.04,0.5l0.56,0.6l-0.11,0.33l0.03,0.54l-0.18,0.59l0.14,0.3l0.2,0.15l0.87,0.27l1.35,1.98l1.13,0.85l0.3,0.83l0.53,0.45l0.04,0.84l0.76,0.62l0.47,0.11l0.02,0.18l-0.21,0.82l-0.71,0.53l-0.36,0.55l-0.03,0.7l-0.35,0.74l0.06,1.04l-0.18,0.6l0.03,0.38l-0.44,0.21l-1.4,1.54l-0.43,0.34l-0.48,0.17l-0.19,-0.14l-0.26,0.0l0.14,-0.54l-0.14,-0.44l-0.65,0.05l-0.07,0.14l-0.09,-0.51l0.26,-0.08l0.11,0.14l0.51,0.15l1.31,-0.89l0.77,-0.71l-0.23,-0.63l-0.45,0.06l0.0,-0.13l-0.38,-0.38l-0.52,0.14l0.69,-1.91l0.27,-1.72l-0.35,-0.25l-0.04,-0.39l-0.25,-0.6l0.53,-0.19l0.37,-0.39l0.16,-0.48l-0.44,-0.25l-0.44,0.1l-0.63,0.36l-0.42,0.05l-0.56,-0.3l-0.16,0.11l-0.21,-0.09l-1.07,0.31l-0.64,-0.05l0.28,-0.15l0.18,-0.31l0.3,-1.03l0.32,0.01l0.78,0.43l0.33,0.02l0.69,-0.35l-0.04,-0.49l-0.35,-0.21l-0.38,0.04l-0.84,-0.44l0.07,-0.93l-0.22,-0.31l-0.44,-0.27l0.05,-0.48l-0.4,-0.66l0.33,-0.41l-0.17,-0.67l-0.35,-0.02l0.13,-0.08l-0.03,-0.23l0.53,-0.28l0.22,-0.59l-0.39,-0.29l-0.68,0.21l-0.41,-0.64l-0.06,-0.43l0.37,-0.24l0.24,-1.12l-0.41,-0.33l-0.48,0.19l-0.14,-0.07l-0.27,-0.39l0.15,-0.23l-0.22,-0.49l-0.49,-0.26l-0.25,0.04l-0.19,0.17l-0.21,-0.25l0.13,-0.23l0.53,0.23l1.01,-0.02l0.4,-0.16l0.16,-0.2l0.05,-0.15l-0.28,-0.52l-0.5,0.1l-0.44,-0.15l0.25,-0.38l-0.01,-0.29l-0.5,-0.27l0.09,-0.26l0.62,-0.0l0.34,0.77l0.29,0.26l0.33,0.01l0.28,-0.17l0.05,-0.48l-0.23,-0.25l-0.4,-1.14l-0.72,-1.0l0.18,-0.54l0.96,0.79l0.3,0.11l0.45,-0.45l-0.05,-0.21l-0.35,-0.47l-1.25,-0.77l-0.25,-0.05l0.21,-0.28l-0.18,-0.43l0.22,-0.16l0.32,-0.62l-0.5,-0.34l-0.27,0.02l-0.35,0.25l-0.02,0.14l-0.39,0.35l-0.1,-0.38l0.12,-0.22l0.01,-0.49l0.28,-0.4l0.39,-0.23l0.18,-0.64l0.25,-0.15l0.25,-0.35l0.34,0.08l0.45,-0.24ZM208.9,604.79l-0.14,0.6l-0.04,-0.01l0.1,-0.48l0.08,-0.11ZM210.37,602.77l-0.57,0.31l-0.25,-0.22l-0.61,0.16l0.07,-0.21l0.55,-0.32l0.81,0.28ZM206.97,596.06l-0.04,0.0l0.0,-0.01l0.04,0.01ZM206.76,596.37l-0.08,0.41l0.26,0.3l-0.54,0.46l-0.46,-0.21l-0.29,0.43l0.05,0.44l-0.14,-0.23l0.12,-0.78l0.24,-0.06l0.03,-0.15l0.5,-0.05l0.3,-0.58ZM205.35,581.23l-0.08,-0.02l-0.02,-0.09l0.1,0.11ZM174.62,442.02l0.16,-0.03l0.01,0.02l-0.12,0.04l-0.05,-0.03ZM149.15,463.88l-0.48,-0.68l0.17,-0.34l0.08,-0.53l0.46,0.23l-0.22,1.31ZM139.58,480.85l-0.2,-0.16l-0.1,-0.17l0.02,-0.02l0.29,0.35ZM110.4,493.59l-0.04,0.0l-0.0,-0.01l0.04,-0.0l0.0,0.0ZM207.1,600.51l-0.19,-0.22l-0.19,-0.6l0.65,-0.29l-0.24,0.42l-0.04,0.69ZM206.1,600.7l-0.0,0.01l0.0,-0.01l0.0,0.0ZM207.6,599.25l0.23,-0.53l-0.13,-0.23l0.59,-0.1l0.3,-0.26l-0.01,-0.13l0.38,-0.35l0.16,-0.57l0.54,-0.04l0.23,1.16l0.07,1.2l-0.18,0.24l0.03,0.13l-0.16,0.03l-0.32,0.84l-0.28,0.19l-0.18,-0.34l0.21,-1.61l-0.4,-0.43l-0.4,0.19l-0.2,0.53l-0.47,0.08ZM206.69,592.9l0.19,-0.29l0.19,0.3l0.37,0.14l-0.02,0.58l-0.25,0.02l-0.48,-0.74ZM204.84,593.41l0.21,-0.32l0.24,-0.03l-0.06,0.39l0.08,0.1l0.28,0.16l0.34,0.0l0.38,0.28l0.05,0.19l-0.37,0.12l0.06,0.4l-0.09,0.26l-0.26,0.09l0.16,-0.53l-0.3,-0.42l-0.07,-0.28l-0.66,-0.41ZM205.68,592.74l0.12,-0.12l0.05,0.06l-0.04,0.06l-0.14,0.0ZM205.02,590.02l0.06,-0.2l0.28,-0.11l0.2,-0.33l-0.02,-0.41l0.06,-0.13l0.29,1.13l-0.65,-0.16l-0.2,0.2ZM202.23,585.03l0.13,-0.03l0.27,0.18l0.93,0.73l0.44,0.47l0.07,0.52l0.45,0.21l0.13,-0.03l0.22,-0.36l0.14,0.05l0.18,0.49l-0.02,0.28l-0.32,0.23l-0.18,0.94l-0.13,-1.28l-0.2,-0.03l-0.21,-0.45l-0.58,0.05l-0.22,0.89l0.07,0.36l0.17,0.15l-0.24,0.37l0.23,0.32l0.16,0.47l-0.2,0.16l-0.8,-0.56l-0.44,0.1l-0.03,0.21l-0.22,-0.05l0.18,-0.54l0.13,-0.1l-0.06,-0.28l0.1,0.01l0.05,-0.14l-0.04,-0.41l0.48,-0.79l0.11,-0.48l-0.25,-0.42l0.07,-0.26l-0.3,-0.33l-0.26,-0.63ZM204.11,591.3l0.32,-0.24l0.41,0.24l0.3,-0.01l-0.25,0.23l-0.09,0.42l-0.18,0.06l-0.19,-0.01l-0.32,-0.68ZM201.15,595.61l0.39,-0.04l0.71,-0.6l0.17,-0.41l-0.02,-0.35l-0.29,-0.08l0.28,-0.75l0.11,0.2l0.52,0.24l0.23,0.34l0.37,0.27l0.43,1.44l-0.06,0.78l-0.11,0.23l-0.18,-0.04l-0.49,0.47l0.07,0.29l-0.79,0.31l-0.07,0.49l0.07,0.41l0.53,0.0l-0.02,0.12l0.39,0.47l0.21,-0.01l0.23,0.24l0.23,-0.06l0.16,0.27l0.04,0.2l-0.39,-0.09l-0.34,0.45l-0.07,0.31l0.2,0.39l0.69,0.17l-0.31,0.02l-0.39,0.51l-0.49,0.15l0.01,-0.38l-0.25,-0.1l-0.13,-0.29l0.03,-0.93l-0.19,-0.86l-0.55,0.06l-0.09,-0.43l0.17,-0.51l-0.46,-0.42l0.16,-0.04l-0.02,-0.49l-0.3,-0.24l0.21,-0.25l0.29,-0.11l0.37,0.02l0.22,-0.65l-0.53,-0.28l-1.08,0.01l-0.17,-0.19l0.34,-0.25ZM203.12,602.04l0.1,0.62l0.38,0.29l-0.14,0.15l-0.01,0.33l0.19,0.34l-0.25,0.06l-0.09,0.28l-0.22,-0.12l0.22,-0.36l-0.34,-1.17l0.11,-0.07l-0.04,-0.22l0.1,-0.14ZM203.35,597.92l0.0,0.0l-0.0,-0.0l0.0,-0.0ZM202.64,592.33l-0.02,-0.23l-0.18,-0.27l-0.57,-0.24l-0.38,-0.33l0.04,-0.12l0.23,-0.13l0.24,0.13l0.03,0.3l0.41,0.29l0.13,-0.01l0.16,-0.25l0.01,0.41l0.15,0.18l-0.07,0.32l-0.19,-0.05ZM199.97,583.58l0.25,-0.55l0.45,-0.17l-0.03,-0.41l0.33,-0.19l0.26,0.24l0.53,-0.27l-0.12,0.49l-0.21,0.32l-0.34,-0.04l-0.38,0.34l-0.32,-0.04l-0.11,0.23l-0.31,0.06ZM202.63,581.99l-0.01,-0.02l0.01,0.0l0.0,0.02ZM202.51,581.14l-0.13,0.03l-0.03,0.48l-0.5,0.27l-0.01,-0.56l-0.44,-0.14l-0.03,-0.19l0.6,-0.09l0.24,-0.62l-0.38,-0.27l-0.47,-0.02l-0.09,-0.31l0.16,-1.0l0.22,-0.37l0.21,-0.81l0.17,-0.88l-0.05,-0.32l0.42,-0.42l0.65,0.16l0.25,0.34l-0.08,0.37l-0.18,0.13l0.02,0.26l-0.13,0.04l-0.1,0.73l-0.26,0.61l0.01,0.1l0.33,0.12l0.15,1.13l-0.17,0.29l0.4,0.49l-0.13,0.37l-0.51,-0.18l-0.16,0.25ZM203.26,574.86l0.1,0.02l0.05,0.13l-0.14,-0.13l-0.0,-0.02ZM200.56,588.29l-0.08,-0.33l-0.15,-0.02l0.1,-0.05l0.11,0.08l0.09,0.31l-0.07,0.02ZM200.12,587.92l-0.07,-0.01l-0.0,-0.01l0.01,-0.0l0.07,0.02ZM200.37,586.97l-0.16,-0.4l-0.43,-0.09l0.1,-0.17l0.4,0.09l0.16,-0.21l0.28,0.17l0.27,-0.12l0.0,0.58l-0.09,0.12l-0.26,0.22l-0.28,-0.19ZM201.49,592.7l-0.1,-0.02l0.02,-0.11l0.12,-0.03l-0.04,0.17ZM200.65,592.73l-0.02,0.02l-0.16,0.03l0.09,-0.08l0.09,0.04ZM195.39,575.1l0.13,-0.1l0.32,0.81l0.27,0.26l0.58,-0.41l-0.42,-1.39l0.16,0.12l0.49,-0.01l0.11,-0.88l0.2,0.31l0.55,0.02l0.21,-0.32l0.27,-0.08l0.58,0.85l-0.37,0.18l-0.69,-0.15l-0.15,0.28l-0.14,-0.08l-0.56,0.2l0.03,0.46l0.24,0.6l0.52,0.51l0.21,0.54l0.4,0.42l-0.17,0.22l0.09,0.51l0.4,0.15l0.12,0.22l0.3,0.1l0.81,-0.05l-0.16,0.99l-0.21,0.51l-0.26,-0.12l-1.86,-3.21l-0.28,-0.23l-0.62,0.31l0.06,0.43l-0.27,0.19l0.22,0.69l0.2,0.1l-0.12,0.12l-0.06,0.45l0.16,0.09l0.06,0.25l-0.29,0.13l-0.08,-0.6l-0.36,-0.69l0.31,-0.17l-0.14,-0.48l-0.2,-0.19l0.01,-0.36l-0.25,-0.56l0.02,-0.34l-0.25,-0.15l-0.11,-0.46ZM198.57,575.78l0.52,-0.38l0.44,-0.12l0.69,0.39l0.05,0.19l0.37,0.31l0.02,0.18l-0.14,0.22l-0.34,-0.45l-0.61,-0.13l-0.19,0.37l0.01,0.19l0.26,0.64l-0.2,-0.12l-0.87,-1.29ZM197.4,579.96l0.2,0.09l0.33,-0.11l-0.02,0.3l0.46,0.2l0.23,0.33l-0.16,0.05l-0.02,0.25l0.08,0.33l-0.06,0.32l0.21,0.36l-0.12,0.88l0.11,0.42l-0.12,0.06l-0.17,0.59l-0.23,1.9l-0.31,0.87l-0.21,-0.03l-0.2,0.38l-0.03,0.54l-0.52,1.19l-0.15,-0.9l-0.02,-1.09l0.35,-0.03l0.67,-0.56l-0.07,-0.72l-0.19,-0.05l0.01,-0.57l-0.14,-0.2l-0.2,-0.01l-0.2,-0.65l-0.51,-0.01l0.33,-0.22l0.02,-0.34l0.7,-0.09l0.2,-0.29l-0.1,-0.53l-0.52,-0.27l-0.0,-0.1l0.61,-0.26l-0.29,-1.24l-0.54,-0.23l0.25,0.04l0.27,-0.16l0.1,-0.43ZM195.81,580.52l-0.11,0.19l0.0,-0.37l0.11,0.18ZM195.45,581.71l-0.18,0.24l-0.21,-0.02l0.06,-0.09l0.33,-0.12ZM166.9,538.83l0.06,-0.04l0.0,0.06l-0.06,-0.02ZM167.11,538.95l0.14,0.08l0.02,0.11l-0.16,-0.18ZM161.05,540.17l0.02,-0.05l0.3,0.02l0.37,-0.3l0.19,-0.01l-0.35,0.19l-0.13,0.29l-0.39,-0.13ZM135.33,540.66l0.22,0.31l0.6,-0.08l0.07,-0.42l-0.07,-0.17l0.71,0.45l0.28,-0.22l0.24,-0.69l0.19,-0.18l0.34,0.1l-0.17,0.51l0.11,0.35l-0.07,0.25l0.28,0.22l-0.63,0.48l0.06,-0.1l-0.16,-0.67l-0.37,-0.01l-0.74,0.65l-0.1,-0.23l-0.47,0.05l-0.18,0.2l-0.16,-0.35l0.03,-0.21l-0.1,-0.04l0.11,-0.21ZM138.62,541.16l-0.18,-0.04l0.14,-0.08l0.05,0.11ZM125.8,544.87l0.6,-0.15l0.09,0.05l-0.61,0.5l-0.08,-0.39ZM126.2,543.5l0.18,-0.98l-0.32,-0.49l0.3,-0.05l0.26,-0.39l0.25,-0.03l0.28,-0.29l0.43,0.23l0.18,-0.14l0.44,0.12l0.16,-0.28l0.18,-0.04l0.36,0.08l0.39,0.35l-0.66,0.08l-0.0,0.49l0.42,0.33l-0.32,0.72l0.07,0.46l-0.06,0.52l0.34,0.82l0.44,0.2l0.31,-0.36l-0.14,-0.65l0.13,-0.61l0.23,-0.4l0.3,0.14l0.35,-0.29l0.43,0.11l0.52,-0.04l0.21,-0.24l0.14,-0.02l0.24,0.16l0.21,-0.03l0.17,0.33l0.67,-0.25l0.26,-0.42l0.27,0.22l-0.19,0.28l-0.04,0.41l0.26,0.39l0.48,-0.04l0.32,-0.45l0.28,0.19l0.45,-0.19l0.37,0.14l-0.13,0.29l-0.77,0.26l-0.2,0.37l0.19,0.45l-0.09,0.59l0.3,0.21l0.31,0.07l-0.64,0.25l-0.16,-0.22l-0.29,-0.1l-0.07,-0.2l-0.24,-0.18l-0.12,-0.34l-0.95,-0.71l-0.26,0.2l-0.66,0.22l-0.18,0.25l0.16,0.4l-0.16,-0.05l-0.3,-0.39l-0.43,0.12l-0.28,0.54l-0.86,-0.26l-0.1,0.11l-0.26,-0.21l-0.24,-0.04l-0.25,0.09l-0.22,0.45l-0.12,-0.06l0.11,-0.41l-0.2,-0.39l-0.49,-0.11l-0.3,0.07l0.05,-0.16l-0.49,-0.6l-0.82,-0.56l-0.36,-0.07ZM134.27,542.42l-0.01,-0.05l0.17,-0.06l0.0,0.05l-0.16,0.07ZM132.2,545.58l0.25,-0.03l0.37,0.14l0.22,0.62l-0.1,0.08l-0.21,-0.1l0.05,-0.11l-0.29,-0.51l-0.28,-0.08ZM126.26,546.94l-0.15,0.05l-0.01,-0.01l0.06,-0.03l0.11,-0.0ZM131.32,541.84l-0.53,-0.58l0.32,-0.33l0.47,-0.02l0.05,0.41l-0.32,0.53ZM105.81,462.39l-0.11,-0.32l0.35,-0.73l0.36,-0.32l0.68,-0.25l-0.18,0.17l0.11,0.32l-0.14,-0.01l0.06,0.34l0.69,0.55l0.17,0.58l0.33,0.45l0.3,0.27l1.18,0.11l0.29,0.2l0.33,0.06l0.24,0.31l-0.01,0.58l0.1,0.26l-0.21,0.31l-0.27,0.11l-0.22,0.43l0.38,0.42l0.17,0.76l0.36,0.34l-0.18,0.36l-0.0,0.32l0.2,0.38l0.45,0.25l-0.07,0.47l0.15,0.3l-0.4,-0.26l-0.47,-0.12l-1.23,0.14l0.06,-0.93l-0.25,-0.52l-0.02,-0.5l-0.15,-0.17l0.25,-0.53l-0.13,-0.43l-0.01,-0.64l-0.26,-0.89l-0.24,-0.37l-0.03,-0.47l-0.8,-0.64l-0.94,-0.23l-0.15,-0.01l-0.0,0.09l-0.53,-0.08l-0.18,-0.48ZM111.34,469.47l0.34,0.23l0.34,-0.0l0.32,0.49l-0.46,0.25l-0.33,-0.58l-0.24,-0.19l0.02,-0.19ZM99.58,492.96l0.13,-0.45l0.36,0.29l0.67,0.85l0.32,0.21l0.39,-0.01l0.4,-0.28l0.18,0.05l0.18,0.25l0.48,0.04l0.28,-0.1l-0.04,0.35l0.68,0.15l0.17,0.26l-0.1,0.36l0.08,0.18l0.27,0.32l0.48,0.17l0.05,0.26l-0.71,0.6l-0.06,0.37l-0.25,0.08l-0.34,0.96l-0.72,-0.21l-0.37,-0.45l-0.21,0.14l-0.22,-0.05l-0.29,-0.37l-0.41,-0.11l-0.21,-0.4l-0.47,-0.4l-0.43,-1.65l0.1,-0.21l-0.16,-0.32l-0.27,-0.19l0.1,-0.37l-0.07,-0.3ZM95.47,539.48l0.12,-0.24l0.1,0.3l0.17,0.12l-0.0,0.16l-0.2,-0.34l-0.19,-0.01ZM88.44,537.17l0.0,-0.02l0.03,0.0l-0.03,0.01ZM77.94,532.86l0.31,-0.91l0.71,0.25l0.4,-0.03l1.64,-0.75l0.19,0.0l0.11,0.36l0.43,0.42l0.29,0.09l0.42,-0.18l0.53,0.24l0.62,-0.02l0.51,0.26l0.41,0.41l0.02,0.57l-0.53,1.12l-0.34,0.06l-0.25,0.24l-0.3,0.0l-0.28,-0.08l-0.42,-0.6l-1.35,-0.96l-0.46,-0.11l-0.79,0.04l-0.43,0.31l-0.25,0.05l-0.89,-0.43l-0.29,-0.34ZM72.06,531.33l0.05,-0.29l0.35,0.02l0.04,0.43l-0.33,-0.2l-0.06,0.1l-0.05,-0.06ZM62.39,530.55l0.16,-0.01l0.12,0.09l-0.08,0.09l-0.2,-0.16ZM62.89,530.86l0.03,0.06l0.02,0.04l-0.11,-0.1l0.06,0.01ZM67.63,532.06l-0.22,-0.27l-0.39,0.07l0.31,-0.15l0.34,0.02l0.42,-0.6l-0.29,-0.36l-0.27,-0.66l-0.29,-0.25l0.08,-0.32l0.43,-0.1l0.43,0.15l0.4,0.29l0.15,0.23l-0.34,0.42l0.08,0.55l-0.1,0.18l-0.36,0.12l-0.04,0.3l-0.13,-0.03l-0.21,0.41ZM66.48,531.55l-0.31,0.29l-0.03,0.08l-0.08,-0.11l0.27,-0.3l-0.12,-0.26l0.07,-0.05l0.18,-0.01l0.03,0.37ZM68.16,529.58l-0.03,-0.02l-0.0,-0.01l0.04,0.03ZM57.55,529.02l0.25,-0.15l0.2,-0.38l0.16,-0.08l0.64,0.01l0.12,0.21l0.37,0.15l0.09,0.15l-0.15,0.14l-0.22,-0.04l-0.65,0.2l-0.42,-0.23l-0.38,0.0ZM60.36,528.86l0.09,-0.37l0.33,-0.35l0.69,-0.04l0.67,0.28l0.23,0.6l-0.17,0.06l-0.19,0.26l-1.26,-0.24l-0.38,-0.2ZM34.78,515.5l0.04,0.03l-0.03,0.13l-0.02,-0.17l0.01,0.0ZM35.78,515.3l0.08,-0.23l-0.1,-0.29l0.37,0.05l0.06,0.52l-0.34,0.04l-0.08,-0.09ZM28.34,509.91l0.02,-0.07l0.04,-0.02l-0.01,0.1l-0.05,-0.01ZM24.83,509.43l0.48,-0.33l0.11,0.34l-0.02,0.11l-0.3,0.01l-0.27,-0.13ZM23.14,507.45l0.08,0.02l-0.03,0.03l-0.05,-0.05ZM21.49,504.95l-0.1,0.01l0.06,-0.23l0.04,0.13l0.0,0.1ZM21.53,504.44l-0.09,0.14l-0.13,-0.33l0.02,-0.27l0.21,0.2l-0.01,0.26ZM14.7,495.17l0.26,0.08l-0.03,0.22l-0.17,-0.02l-0.07,-0.27ZM1.42,466.35l0.24,-0.09l0.22,-0.4l-0.29,-0.43l0.05,-0.12l0.24,0.2l0.16,0.67l0.46,0.46l-0.28,0.18l0.12,0.42l-0.13,-0.01l-0.15,-0.38l-0.53,-0.19l-0.1,-0.31Z\", \"name\": \"Alaska\"}, \"US-NJ\": {\"path\": \"M802.92,165.5l1.3,-1.54l0.47,-1.56l0.49,-0.62l0.53,-1.44l0.1,-2.03l0.67,-1.34l0.92,-0.72l14.17,3.88l-0.26,5.58l-0.5,0.83l-0.13,-0.29l-0.65,-0.06l-0.34,0.44l-0.55,1.45l-0.44,2.7l0.27,1.53l0.64,0.6l1.06,0.13l1.23,-0.45l2.47,0.24l0.67,1.83l-0.16,4.48l0.29,0.46l-0.54,0.44l0.27,0.8l-0.72,0.75l0.46,0.57l-0.2,0.58l0.48,0.6l-0.14,3.74l0.59,0.51l-0.35,1.34l-1.13,1.82l-0.1,0.93l-1.37,0.1l0.11,1.19l0.64,0.8l-0.82,0.56l-0.17,1.14l1.05,0.74l-0.31,0.29l-0.18,-0.44l-0.54,-0.17l-0.49,0.23l-0.43,1.49l-1.27,0.62l-0.2,0.44l0.46,0.55l0.8,0.05l-0.64,1.25l-0.25,1.48l-0.67,0.65l0.19,0.48l0.4,0.04l-0.88,1.56l0.08,0.93l-1.55,1.66l-0.19,-1.61l0.32,-2.04l-0.12,-0.85l-0.59,-0.8l-0.9,-0.26l-1.11,0.36l-0.82,-0.33l-1.51,0.9l-0.31,-0.69l-1.63,-0.92l-1.0,0.06l-0.66,-0.68l-0.7,0.08l-3.26,-1.95l-0.07,-1.7l-1.02,-0.91l0.47,-0.67l-0.0,-0.87l0.42,-0.83l-0.13,-0.72l0.5,-1.17l1.19,-1.16l2.59,-1.51l0.54,-0.86l-0.38,-0.83l0.49,-0.38l0.46,-1.43l1.23,-1.7l2.51,-2.23l0.18,-0.66l-0.48,-0.81l-4.29,-2.67l-0.76,-1.02l-0.9,0.25l-0.48,-0.32l-1.26,-2.41l-1.62,0.01l-1.03,-3.38l1.01,-1.02l0.35,-2.21l-1.88,-1.86Z\", \"name\": \"New Jersey\"}, \"US-ME\": {\"path\": \"M837.19,56.84l0.85,-1.16l1.45,1.68l0.84,0.03l0.36,-2.12l-0.49,-2.18l1.71,0.33l0.72,-0.43l0.21,-0.53l-0.33,-0.69l-1.18,-0.45l-0.45,-0.61l0.17,-1.43l0.83,-2.04l2.05,-2.28l-0.01,-0.99l-0.53,-0.93l1.0,-1.66l0.36,-1.52l-0.23,-0.91l-1.02,-0.34l-0.09,-1.42l-0.41,-0.43l0.54,-0.97l-0.05,-0.63l-1.02,-1.25l0.1,-1.74l0.36,-0.64l-0.17,-0.98l1.19,-1.95l-1.06,-6.19l5.24,-19.09l2.24,-0.25l1.2,3.2l0.56,0.42l2.56,0.53l1.8,-1.76l1.66,-0.85l1.21,-1.74l1.25,-0.13l0.64,-0.48l0.22,-1.45l0.42,-0.3l1.36,0.03l3.71,1.38l1.16,0.96l2.39,1.03l8.78,22.69l0.65,0.64l-0.24,0.96l0.73,1.01l-0.08,1.41l0.56,1.29l0.68,0.46l1.05,-0.13l1.13,0.56l0.98,0.09l2.46,-0.57l0.41,0.94l-0.57,1.43l1.72,1.84l0.32,2.68l2.75,1.63l0.98,-0.12l0.46,-0.75l-0.07,-0.5l1.22,0.23l3.0,2.75l0.04,0.47l-0.52,-0.13l-0.38,0.41l0.19,0.77l-0.77,-0.14l-0.34,0.4l0.16,0.63l1.87,1.58l0.15,-0.88l0.38,-0.17l0.81,0.31l0.26,-0.83l0.33,0.4l-0.3,0.85l-0.52,0.19l-1.16,3.25l-0.63,-0.03l-0.31,0.44l-0.57,-1.04l-0.72,0.04l-0.3,0.51l-0.56,0.07l-0.02,0.49l0.59,0.84l-0.91,-0.44l-0.31,0.63l0.27,0.51l-1.2,-0.26l-0.36,0.3l-0.36,0.78l0.08,0.45l0.44,0.08l0.09,1.2l-0.38,-0.57l-0.54,-0.05l-0.39,0.46l-0.19,1.09l-0.5,-1.52l-1.13,0.03l-0.67,0.76l-0.34,1.48l0.6,0.61l-0.82,0.64l-0.7,-0.45l-0.71,1.05l0.11,0.64l0.99,0.6l-0.35,0.22l-0.09,0.82l-0.46,-0.2l-0.87,-1.8l-1.04,-0.44l-0.38,0.22l-0.45,-0.41l-0.56,0.64l-1.25,-0.17l-0.25,0.86l0.78,0.38l0.01,0.36l-0.52,-0.05l-0.55,0.41l-0.08,0.69l-0.51,-1.01l-1.17,-0.0l-0.15,0.64l0.53,0.86l-1.42,0.98l0.85,1.09l0.1,1.05l0.54,0.64l-0.97,-0.39l-0.96,0.23l-1.2,-0.4l-0.19,-0.9l0.74,-0.29l-0.09,-0.55l-0.43,-0.49l-0.67,-0.11l-0.3,0.33l-0.27,-2.35l-0.38,-0.21l-1.1,0.28l0.07,1.95l-1.82,1.94l0.03,0.5l1.27,1.44l-0.63,0.96l-0.14,3.85l0.79,1.39l-0.56,0.54l0.01,0.63l-0.5,0.56l-0.8,-0.18l-0.44,0.93l-0.62,-0.05l-0.42,-1.14l-0.73,-0.2l-0.5,1.03l0.12,0.68l-0.44,0.6l0.15,2.4l-0.97,-0.99l0.12,-1.27l-0.25,-0.59l-0.81,0.3l-0.06,2.0l-0.44,-0.24l0.13,-1.54l-0.48,-0.39l-0.67,0.49l-0.73,3.04l-0.77,-1.81l0.05,-1.5l-0.76,0.06l-1.03,2.77l0.52,0.54l0.72,-0.27l0.94,2.01l-0.29,-0.58l-0.52,-0.22l-0.65,0.31l-0.06,0.64l-1.38,-0.08l-2.12,3.19l-0.51,1.87l0.3,0.59l-0.67,0.66l0.51,0.42l0.91,-0.23l0.37,0.91l-0.76,0.31l-0.2,0.4l-0.41,-0.04l-0.5,0.57l-0.13,1.03l0.68,1.35l-0.07,0.67l-0.77,1.3l-0.93,0.62l-0.39,1.07l-0.09,1.28l0.44,0.88l-0.37,2.8l-0.8,-0.32l-0.4,0.6l-1.03,-0.74l-0.59,-1.83l-0.94,-0.36l-2.38,-1.94l-0.8,-3.42l-13.69,-35.19ZM864.39,80.9l0.09,0.26l-0.08,0.23l0.03,-0.28l-0.04,-0.2ZM865.81,81.1l0.47,0.69l-0.04,0.47l-0.32,-0.24l-0.11,-0.92ZM868.11,77.94l0.43,0.81l-0.16,0.14l-0.42,-0.18l0.15,-0.77ZM877.3,64.42l-0.14,0.2l-0.03,-0.23l0.17,0.03ZM873.48,74.78l0.01,0.02l-0.02,0.03l0.01,-0.05ZM882.98,63.24l0.02,-1.16l0.4,-0.66l-0.18,-0.44l0.4,-0.5l0.62,-0.12l1.56,1.32l-0.48,0.65l-1.08,0.06l-0.26,0.44l0.59,1.29l-0.99,-0.16l-0.15,-0.56l-0.44,-0.16ZM879.6,65.86l0.62,0.39l-0.35,0.3l0.16,0.95l-0.4,-0.62l0.18,-0.53l-0.21,-0.49ZM878.42,70.38l0.09,-0.01l0.47,-0.09l-0.24,0.45l-0.32,-0.36Z\", \"name\": \"Maine\"}, \"US-MD\": {\"path\": \"M742.19,220.07l-2.1,-9.88l19.86,-4.71l-0.65,1.27l-0.95,0.09l-1.54,0.82l0.16,0.69l-0.41,0.49l0.23,0.76l-1.76,0.52l-1.48,0.05l-1.12,-0.36l0.2,-0.35l-0.3,-0.49l-1.11,-0.29l-0.46,1.78l-1.61,2.82l-1.38,-0.37l-1.03,0.63l-0.4,1.24l-1.59,1.92l-0.36,1.03l-0.88,0.46l-1.3,1.86ZM762.24,204.93l37.01,-9.59l8.42,25.88l0.48,0.25l8.46,-2.33l0.26,0.69l0.6,0.02l0.39,0.93l0.52,-0.06l-0.37,1.93l-0.13,-0.26l-0.47,0.07l-0.72,0.86l-0.15,2.66l-0.6,0.19l-0.35,0.7l-0.01,1.45l-3.64,1.55l-0.36,0.75l-2.25,0.46l-0.56,0.65l-0.31,-1.05l0.5,-0.31l0.86,-1.83l-0.41,-0.5l-0.43,0.12l0.06,-0.48l-0.44,-0.41l-2.29,0.66l0.3,-0.59l1.15,-0.84l-0.18,-0.69l-1.36,-0.15l0.37,-2.2l-0.19,-1.01l-0.91,0.17l-0.52,1.75l-0.35,-0.67l-0.61,-0.06l-0.44,0.47l-0.49,1.38l0.54,1.0l-2.89,-2.07l-0.43,-0.18l-0.6,0.37l-0.74,-0.74l0.36,-0.82l-0.04,-0.83l0.76,-0.6l-0.08,-1.33l2.08,0.06l0.88,-0.46l0.36,-0.9l-0.33,-1.4l-0.43,-0.04l-0.52,1.3l-0.39,0.1l-1.05,-0.69l0.05,-0.39l-0.52,-0.27l-0.55,0.23l-0.23,-0.66l-0.73,0.1l-0.12,0.29l0.07,-0.72l1.14,-0.39l0.21,-1.04l-0.54,-0.54l-0.57,0.71l-0.2,-0.51l0.87,-0.87l-0.26,-0.65l-0.54,-0.07l-0.09,-0.47l-0.42,-0.26l-0.35,0.16l-0.65,-0.51l0.87,-0.8l-0.24,-1.01l0.92,-2.36l-0.18,-0.43l-0.46,0.02l-0.66,0.67l-0.56,-0.16l-0.6,0.96l-0.75,-0.59l0.46,-3.53l0.59,-0.52l0.06,-0.6l4.22,-1.26l0.11,-0.71l-0.51,-0.28l-2.37,0.46l0.75,-1.25l1.43,-0.07l0.35,-0.5l-0.99,-0.65l0.42,-1.88l-0.63,-0.32l-1.18,1.81l0.04,-1.46l-0.6,-0.34l-0.67,1.1l-1.62,0.68l-0.3,1.63l0.39,0.53l0.64,0.11l-1.44,1.91l-0.21,-1.61l-0.64,-0.41l-0.61,0.72l0.08,1.44l-0.85,-0.28l-1.15,0.65l0.03,0.71l1.01,0.24l-0.36,0.53l-0.83,0.23l-0.05,0.34l-0.45,-0.03l-0.34,0.65l1.15,1.16l-1.88,-0.63l-1.21,0.6l0.17,0.69l1.57,0.55l0.92,0.9l0.72,-0.13l0.56,0.72l-0.98,-0.05l-1.14,1.36l0.33,0.77l1.57,0.87l-0.67,0.13l-0.21,0.42l0.79,1.06l-0.3,0.56l0.33,0.94l0.57,0.45l-0.5,1.07l1.0,1.22l0.99,3.47l0.62,0.82l2.08,1.57l0.42,0.78l-0.58,0.18l-0.65,-0.73l-1.46,-0.28l-1.65,-1.22l-1.35,-3.09l-0.74,-0.66l-0.3,0.37l0.12,0.7l1.3,3.47l1.16,1.27l2.06,0.69l1.04,1.08l0.63,0.13l0.91,-0.36l-0.02,1.09l1.67,1.5l0.11,1.08l-0.9,-0.33l-0.52,-1.26l-0.64,-0.44l-0.45,0.05l-0.12,0.44l0.27,0.77l-0.68,0.1l-0.66,-0.8l-1.41,-0.64l-2.39,0.66l-0.7,-0.65l-0.72,-1.46l-1.27,-0.68l-0.46,0.15l0.01,0.48l1.15,1.78l-0.23,-0.07l-1.63,-1.15l-1.68,-2.23l-0.45,-0.01l-0.37,1.42l-0.33,-0.78l-0.74,0.2l-0.21,0.27l0.33,0.72l-0.1,0.54l-0.76,0.54l-0.95,-1.45l0.06,-1.65l0.76,-0.6l-0.13,-0.81l0.71,-0.39l0.2,-1.59l1.07,-1.03l-0.01,-1.02l-0.47,-0.84l1.25,-2.17l-0.14,-0.54l-2.73,-1.61l-0.55,0.14l-0.63,1.08l-1.87,-0.23l-0.53,-0.81l-1.12,-0.49l-2.42,0.1l-1.25,-0.87l0.6,-1.34l-0.41,-0.96l-1.19,-0.28l-0.89,-0.63l-2.7,0.11l-0.36,-0.22l-0.12,-1.24l-1.04,-0.58l0.09,-1.18l-0.51,-0.28l-0.48,0.2l-0.24,-0.62l-0.5,-0.13l0.24,-0.81l-0.46,-0.57l-0.69,-0.11l-1.81,0.69l-2.23,-1.21ZM791.61,211.89l1.15,0.15l0.29,0.15l-0.51,0.29l-0.92,-0.6ZM804.73,225.05l-0.02,0.32l-0.21,-0.13l0.23,-0.19ZM808.72,228.4l-0.14,0.28l-0.13,0.07l0.01,-0.23l0.25,-0.12ZM799.19,220.15l-0.05,0.01l-0.02,0.01l0.05,-0.03l0.02,0.01ZM798.85,220.3l-0.23,0.54l-0.17,0.12l0.14,-0.59l0.27,-0.07ZM797.54,216.38l-0.28,0.3l-0.72,-0.26l0.02,-0.31l0.26,-0.36l0.72,0.64ZM796.15,212.56l-0.33,0.77l-0.6,0.24l0.01,-1.45l0.92,0.45ZM803.88,228.23l0.1,-0.1l0.11,0.06l-0.21,0.03Z\", \"name\": \"Maryland\"}, \"US-AR\": {\"path\": \"M499.92,377.33l-1.49,-37.58l-4.53,-23.63l37.83,-2.71l39.17,-3.76l0.8,1.57l1.02,0.69l0.11,1.73l-0.77,0.56l-0.22,0.92l-1.42,0.93l-0.29,1.03l-0.83,0.54l-1.19,2.56l0.02,0.7l0.53,0.25l10.98,-1.52l0.87,0.91l-1.18,0.36l-0.52,0.95l0.25,0.49l0.84,0.39l-3.61,2.69l0.02,0.84l0.83,1.01l-0.59,1.14l0.62,0.95l-1.42,0.74l-0.11,1.43l-1.45,2.07l0.12,1.62l0.92,3.05l-0.14,0.27l-1.09,-0.01l-0.32,0.26l-0.5,1.71l-1.52,0.95l-0.04,0.51l0.8,0.89l0.05,0.63l-1.11,1.2l-2.03,1.13l-0.21,0.62l0.43,0.98l-0.19,0.26l-1.24,0.04l-0.42,0.67l-0.32,1.87l0.47,1.55l0.03,3.04l-1.28,1.09l-1.55,0.14l0.23,1.47l-0.21,0.48l-0.93,0.25l-0.59,1.75l-1.49,1.19l-0.02,0.93l1.4,0.75l-0.02,0.68l-1.24,0.3l-2.24,1.23l0.04,0.67l0.99,0.8l-0.45,1.13l0.54,1.36l-1.09,0.61l-1.9,2.56l0.52,0.7l1.01,0.48l0.01,0.56l-0.99,0.29l-0.42,0.64l0.51,0.83l1.64,0.99l0.07,1.75l-0.59,0.98l-0.09,0.84l0.29,0.4l1.06,0.38l0.51,2.15l-1.09,1.01l0.07,2.1l-25.98,2.35l-25.74,1.93l-0.86,-11.44l-1.19,-0.85l-0.9,0.17l-0.83,-0.35l-0.93,0.39l-1.23,-0.33l-0.56,0.72l-0.47,0.01l-0.49,-0.48l-0.83,-0.14l-0.63,-0.99Z\", \"name\": \"Arkansas\"}, \"US-MA\": {\"path\": \"M878.75,135.13l1.03,-0.2l0.84,-1.14l0.45,0.55l-1.05,0.65l-1.28,0.13ZM832.87,132.8l-0.47,-0.28l-10.39,2.68l-0.25,-0.17l-0.41,-14.64l29.93,-8.29l1.51,-1.81l0.33,-1.48l0.94,-0.36l0.6,-1.04l1.29,-1.09l1.23,-0.1l-0.43,1.05l1.36,0.52l-0.16,0.61l0.45,0.81l1.0,0.34l-0.06,0.32l0.4,0.27l1.31,0.16l-0.15,0.55l-2.5,1.89l-0.03,1.07l0.45,0.15l-1.09,1.41l0.24,1.07l-1.0,0.97l0.6,1.39l1.4,0.42l0.51,0.61l1.36,-0.59l0.32,-0.6l1.2,0.07l0.8,0.45l0.24,0.67l1.8,1.32l-0.06,1.23l-0.36,0.3l0.12,0.61l1.59,0.78l1.19,-0.16l0.69,1.17l0.23,1.13l0.9,0.66l1.33,0.38l1.48,-0.15l0.43,0.36l1.05,-0.25l3.32,-2.79l0.38,-0.7l0.54,0.01l0.58,1.82l-3.31,1.56l-0.93,0.83l-1.89,0.89l-0.51,-0.11l-0.44,0.45l-0.37,1.42l-1.93,1.29l-0.84,-2.48l0.1,-1.34l-0.55,-0.29l-0.49,0.4l-0.93,-0.09l-0.3,0.51l0.25,0.9l-0.25,0.79l-0.4,0.07l-0.62,1.1l-0.61,-0.19l-0.49,0.49l0.23,1.83l-0.89,0.88l-0.64,-0.78l-0.47,0.02l-0.1,0.55l-0.26,0.04l-0.72,-1.98l-1.02,-0.34l0.42,-2.47l-0.21,-0.39l-0.77,0.41l-0.28,1.46l-0.7,0.21l-1.41,-0.61l-0.8,-2.08l-0.8,-0.21l-0.8,-2.11l-0.49,-0.23l-6.12,2.09l-0.3,-0.14l-14.81,4.4l-0.27,0.51ZM861.69,109.95l-0.02,-0.36l-0.15,-0.47l0.51,0.21l-0.35,0.62ZM877.31,122.26l-0.42,-0.64l0.06,-0.05l0.45,0.65l-0.09,0.05ZM876.38,120.74l-0.87,-0.1l-0.95,-1.38l1.45,0.96l0.36,0.52ZM872.43,119.06l-0.05,0.24l-0.32,-0.18l0.1,0.01l0.28,-0.07ZM872.93,134.59l0.01,-0.02l0.01,0.03l-0.02,-0.01ZM868.26,137.09l0.76,-0.56l0.27,-1.16l0.84,-1.19l0.17,0.25l0.46,-0.12l0.35,0.51l0.71,-0.02l0.18,0.36l-2.1,0.76l-1.33,1.32l-0.32,-0.15Z\", \"name\": \"Massachusetts\"}, \"US-AL\": {\"path\": \"M610.27,337.63l25.27,-3.08l19.48,-2.89l14.31,42.76l0.8,1.38l0.22,1.04l1.18,1.57l0.61,1.86l2.26,2.46l0.94,1.78l-0.1,2.12l1.81,1.11l-0.17,0.73l-0.64,0.11l-0.15,0.7l-0.98,0.85l-0.21,2.28l0.26,1.47l-0.76,2.29l-0.13,1.83l1.13,2.92l1.22,1.5l0.54,1.59l-0.05,5.02l-0.25,0.81l0.5,2.03l1.36,1.15l1.16,2.06l-47.9,7.28l-0.41,0.61l-0.06,3.0l2.67,2.74l2.02,0.95l-0.33,2.71l0.57,1.6l0.44,0.39l-0.94,1.7l-1.24,1.01l-1.14,-0.75l-0.33,0.49l0.67,1.46l-2.84,1.07l0.29,-0.64l-0.45,-0.86l-1.0,-0.76l-0.1,-1.11l-0.57,-0.22l-0.53,0.61l-0.32,-0.1l-0.9,-1.53l0.4,-1.68l-0.99,-2.21l-0.47,-0.44l-0.86,-0.2l-0.31,-0.89l-0.56,-0.17l-0.36,0.61l0.15,0.35l-0.76,3.11l0.01,5.1l-0.6,0.0l-0.25,-0.71l-2.24,-0.43l-1.66,0.33l-5.65,-31.94l-1.25,-65.96l-0.02,-0.37l-1.08,-0.62l-0.69,-1.0Z\", \"name\": \"Alabama\"}, \"US-MO\": {\"path\": \"M469.55,228.14l24.77,-0.8l18.99,-1.48l22.16,-2.65l0.42,0.34l0.4,0.89l2.44,1.61l0.29,0.73l1.21,0.85l-0.5,1.34l-0.09,3.17l0.79,3.59l0.96,1.41l0.03,1.56l1.11,1.35l0.47,1.53l4.99,4.01l1.07,1.66l4.95,3.23l0.7,1.12l0.28,1.59l0.51,0.8l-0.17,0.68l0.48,1.78l0.98,1.6l0.77,0.72l1.03,0.15l0.83,-0.56l0.83,-1.39l0.58,-0.19l2.42,0.59l1.69,0.74l0.84,0.75l-0.96,1.92l0.27,2.24l-2.36,6.77l0.02,1.01l0.71,1.89l4.7,3.96l2.0,1.02l1.46,0.08l1.67,1.27l1.92,0.77l1.52,2.07l2.05,0.8l0.43,2.91l1.74,2.84l-1.09,1.92l0.19,1.37l0.75,0.32l2.34,4.17l1.94,0.89l0.54,-0.32l0.0,-0.64l0.89,1.08l1.08,-0.08l0.15,1.81l-0.37,1.06l0.54,1.56l-1.06,3.81l-0.52,0.08l-1.38,-1.11l-0.65,0.13l-0.78,3.3l-0.52,0.73l0.13,-1.04l-0.56,-1.07l-0.96,-0.19l-0.74,0.63l0.02,1.04l0.53,0.64l-0.04,0.69l0.59,1.31l-0.2,0.39l-1.2,0.39l-0.17,0.42l0.16,0.55l0.84,0.81l-1.69,0.37l-0.13,0.62l1.54,1.93l-0.89,0.74l-0.63,2.1l-10.65,1.47l1.05,-2.24l0.87,-0.61l0.18,-0.86l1.44,-0.95l0.25,-0.95l0.63,-0.36l0.29,-0.59l-0.23,-2.25l-1.06,-0.74l-0.2,-0.75l-1.09,-1.16l-39.39,3.79l-37.87,2.71l-3.31,-57.27l-1.04,-0.62l-1.2,-0.02l-1.52,-0.71l-0.2,-0.92l-0.77,-0.58l-0.34,-0.69l-0.37,-1.52l-0.56,-0.09l-0.3,-0.55l-1.13,-0.65l-1.41,-1.8l0.73,-0.5l0.09,-1.22l1.12,-1.25l0.09,-0.78l1.02,0.16l0.56,-0.42l-0.21,-2.21l-1.02,-0.72l-0.33,-1.09l-1.17,-0.0l-1.31,0.95l-0.82,-0.69l-0.73,-0.16l-2.69,-2.31l-1.05,-0.27l0.13,-1.58l-1.32,-1.69l0.09,-1.0l-0.37,-0.36l-1.02,-0.17l-0.59,-0.84l-0.83,-0.26l0.07,-0.52l-1.24,-2.84l-0.0,-0.72l-0.4,-0.49l-0.85,-0.28l-0.05,-0.52ZM585.14,295.52l-0.11,-0.1l-0.07,-0.14l0.11,-0.01l0.06,0.25Z\", \"name\": \"Missouri\"}, \"US-MN\": {\"path\": \"M439.91,45.57l26.73,-1.1l0.34,1.49l1.28,0.86l1.79,-0.51l1.04,-1.46l0.77,-0.32l2.13,2.24l1.71,0.28l0.31,1.23l1.83,1.42l1.79,0.49l2.63,-0.42l0.39,0.87l0.67,0.4l5.1,0.01l0.38,0.24l0.55,1.61l0.72,0.62l4.26,-0.8l0.77,-0.66l0.07,-0.71l2.42,-0.81l3.96,-0.03l1.42,0.71l3.38,0.67l-1.0,0.81l0.0,0.83l0.51,0.45l0.67,0.09l2.23,-0.16l0.53,2.12l1.59,2.33l0.72,0.05l1.02,-0.8l-0.05,-1.76l2.65,-0.48l1.44,2.2l2.01,0.8l1.53,0.18l0.55,0.58l-0.03,0.84l0.59,0.36l1.32,0.06l-0.05,0.37l0.43,0.47l1.43,-0.2l1.12,0.22l2.21,-0.86l2.76,-2.6l2.47,-1.57l1.26,2.56l0.96,0.52l2.22,-0.68l0.87,0.36l5.96,-1.34l0.56,0.18l1.33,1.66l1.24,0.6l0.62,-0.01l1.6,-0.84l1.38,0.06l-0.96,1.07l-4.66,3.12l-6.32,2.87l-3.66,2.52l-2.13,2.52l-0.95,0.59l-6.57,8.77l-0.94,0.62l-1.07,1.58l-1.95,1.99l-4.15,3.59l-0.85,1.8l-0.55,0.44l-0.14,0.96l-0.77,-0.01l-0.46,0.51l1.03,12.27l-0.79,1.21l-1.04,0.08l-0.52,0.82l-0.83,0.16l-0.61,0.83l-2.06,1.2l-0.93,1.87l0.07,0.72l-1.69,2.4l-0.0,2.07l0.38,0.91l2.15,0.38l1.43,2.48l-0.51,1.92l-0.71,1.26l-0.04,2.12l0.46,1.32l-0.71,1.23l0.92,3.13l-0.49,4.07l3.96,3.01l3.02,0.38l1.9,2.23l2.88,0.48l2.46,1.91l2.4,3.56l2.64,1.78l2.09,0.08l1.07,0.7l0.88,0.09l0.82,1.35l1.27,0.83l0.28,2.01l0.68,1.29l0.41,4.78l-40.67,3.35l-40.68,2.18l-1.52,-38.8l-0.7,-1.27l-0.83,-0.78l-2.57,-0.78l-0.95,-1.91l-1.46,-1.79l0.21,-0.68l2.82,-2.35l0.96,-2.13l0.39,-2.45l-0.36,-1.59l0.23,-1.59l-0.19,-1.8l-0.51,-1.03l-0.19,-2.34l-1.82,-2.6l-0.47,-1.14l-0.22,-2.18l-0.66,-0.98l0.15,-1.67l-0.36,-1.54l0.52,-2.71l-1.08,-1.86l-0.51,-8.4l-0.42,-0.8l0.05,-3.96l-1.58,-4.0l-0.53,-0.66l-0.41,-1.38l0.05,-1.2l-0.48,-0.54l-1.37,-3.82l-0.01,-3.27l-0.47,-2.0l0.27,-1.14l-0.57,-2.36l0.73,-2.61l-2.07,-7.05ZM469.41,36.19l1.21,0.47l0.98,-0.2l0.34,0.47l-0.04,1.77l-1.77,1.15l-0.15,-0.48l-0.41,-0.14l-0.17,-3.04Z\", \"name\": \"Minnesota\"}, \"US-CA\": {\"path\": \"M3.0,175.65l0.8,-1.21l0.46,0.47l0.59,-0.07l0.53,-1.15l0.8,-0.83l1.3,-0.23l0.57,-0.51l-0.15,-0.72l-0.92,-0.33l1.55,-2.72l-0.29,-1.56l0.15,-0.86l2.07,-3.22l1.34,-2.97l0.37,-2.09l-0.27,-1.0l0.19,-3.07l-1.34,-2.15l1.19,-1.34l0.7,-2.48l32.71,8.51l32.57,7.68l-14.08,63.61l25.33,34.47l36.48,50.79l13.27,17.63l-0.21,2.7l0.73,0.93l0.21,1.7l0.86,0.63l0.8,2.54l-0.08,0.9l0.63,1.44l-0.17,1.35l3.8,3.82l0.01,0.49l-1.96,1.49l-3.13,1.22l-1.21,1.96l-1.73,1.11l-0.34,0.81l0.37,1.02l-0.52,0.51l-0.1,0.89l0.07,2.27l-0.61,0.7l-0.66,2.41l-2.04,2.43l-1.61,0.12l-0.43,0.51l0.33,0.88l-0.6,1.33l0.53,1.11l-0.02,1.18l-0.79,2.66l0.57,1.01l2.75,1.15l0.33,0.83l-0.2,2.38l-1.19,0.76l-0.43,1.36l-2.29,-0.63l-1.26,0.59l-43.59,-3.74l0.18,-1.14l0.67,-0.5l-0.17,-1.06l-1.16,-1.39l-1.04,-0.16l0.24,-1.19l-0.27,-1.07l0.79,-1.32l-0.28,-4.22l-0.59,-2.29l-1.91,-4.06l-3.55,-4.08l-1.29,-1.97l-2.41,-2.12l-2.03,-3.0l-2.22,-0.91l-0.94,0.29l-0.4,0.95l-0.62,-0.74l-0.88,-0.23l-0.14,-0.3l0.62,-0.74l0.18,-1.56l-0.43,-2.04l-1.0,-1.95l-0.99,-0.74l-4.45,-0.24l-3.33,-1.83l-1.36,-1.26l-0.7,-0.13l-1.02,-1.19l-0.43,-2.58l-0.97,-0.48l-1.67,-2.31l-2.19,-1.74l-1.24,-0.42l-1.67,0.34l-1.14,-1.02l-1.25,0.01l-2.48,-1.85l-1.06,-0.0l-1.49,-0.7l-4.93,-0.58l-1.11,-2.34l-1.35,-0.65l1.28,-2.52l-0.24,-1.36l0.76,-1.95l-0.63,-1.34l1.29,-2.4l0.34,-2.41l-0.99,-1.24l-1.26,-0.24l-1.4,-1.29l0.42,-1.58l0.8,-0.07l0.26,-0.45l-0.46,-2.18l-0.65,-0.77l-1.47,-0.85l-1.76,-3.95l-1.82,-1.26l-0.34,-2.72l-1.6,-2.57l0.07,-1.37l-0.33,-1.25l-1.15,-0.95l-0.73,-2.92l-2.4,-2.69l-0.54,-1.25l0.01,-4.55l0.6,-0.57l-0.58,-1.13l0.51,-0.57l0.53,0.61l0.77,-0.01l0.85,-0.79l0.57,-1.3l0.8,0.05l0.21,-0.88l-0.42,-0.27l0.48,-1.17l-1.2,-3.64l-0.62,-0.48l-1.06,0.07l-1.93,-0.53l-1.04,-1.06l-1.87,-3.2l-0.78,-2.26l0.87,-2.34l0.1,-1.1l-0.26,-2.36l-0.31,-0.64l-0.54,-0.25l0.25,-1.16l0.7,-1.05l0.26,-2.66l0.47,-0.62l0.88,0.14l0.18,0.92l-0.72,2.09l0.05,1.14l1.18,1.32l0.55,0.11l0.58,1.27l1.16,0.79l0.4,1.0l0.89,0.41l0.83,-0.19l-0.2,-1.44l-0.64,-0.43l-0.17,-0.58l-0.22,-3.52l-0.54,-0.7l0.24,-0.68l-1.48,-1.06l0.51,-1.05l0.1,-1.05l-1.19,-1.57l0.78,-0.71l0.79,0.07l1.25,-0.7l1.25,1.02l1.87,-0.29l5.55,2.45l0.61,-0.08l0.65,-1.35l0.69,-0.03l1.91,2.53l0.25,0.18l0.63,-0.23l0.03,-0.38l-0.39,-0.93l-1.56,-1.88l-1.65,-0.34l0.27,-0.6l-0.28,-0.54l-0.48,0.08l-1.06,0.97l-1.84,-0.25l-0.44,0.27l-0.14,-0.5l-1.04,-0.41l0.24,-1.03l-0.84,-0.47l-1.0,0.26l-0.61,0.82l-1.1,0.37l-1.35,-0.9l-0.39,-0.87l-1.51,-1.44l-0.58,0.03l-0.64,0.59l-0.92,-0.14l-0.49,0.36l-0.35,1.85l0.2,0.76l-0.77,1.34l0.35,0.63l-0.46,0.58l-0.04,0.67l-2.15,-2.88l-0.44,-0.15l-0.25,0.32l-0.73,-1.0l-0.21,-1.02l-1.19,-1.17l-0.39,-1.04l-0.61,-0.19l0.66,-1.45l0.11,0.95l0.76,1.48l0.44,0.25l0.34,-0.38l-1.43,-5.16l-1.08,-1.41l-0.3,-2.65l-2.49,-2.87l-1.77,-4.45l-3.02,-5.5l1.11,-1.65l0.27,-1.94l-0.45,-2.09l-0.12,-3.56l1.36,-2.85l0.7,-0.72l-0.06,-1.52l0.43,-1.51l-0.4,-1.62l0.13,-1.93l-1.39,-4.03l-0.97,-1.15l0.06,-0.78l-0.41,-1.18l-2.88,-4.02l0.52,-1.32l-0.19,-2.65l2.25,-3.36ZM31.19,240.19l-0.05,0.09l-0.27,0.04l-0.01,-0.0l0.33,-0.12ZM63.48,350.44l0.26,0.12l0.17,0.16l-0.29,-0.17l-0.13,-0.11ZM65.06,351.68l1.33,0.85l0.74,1.72l-0.89,-0.66l-1.14,0.01l-0.04,-1.92ZM61.77,361.76l1.36,2.09l0.57,0.53l-0.46,0.06l-0.83,-0.8l-0.64,-1.88ZM42.7,332.51l0.87,0.73l1.38,0.37l1.33,1.0l-2.81,-0.22l-0.71,-0.58l0.24,-0.65l-0.31,-0.66ZM47.07,334.62l0.93,-0.47l0.32,0.35l-0.37,0.13l-0.87,-0.01ZM45.1,350.98l0.29,-0.06l0.95,0.92l-0.61,-0.17l-0.63,-0.69ZM36.71,332.66l2.58,0.19l0.2,0.74l0.59,0.45l-1.22,0.61l-1.17,-0.11l-0.5,-0.44l-0.48,-1.42ZM34.08,330.97l0.05,-0.02l0.05,0.06l-0.01,-0.0l-0.09,-0.04Z\", \"name\": \"California\"}, \"US-IA\": {\"path\": \"M453.66,165.63l42.88,-2.29l40.6,-3.34l0.97,2.5l2.0,0.98l0.08,0.59l-0.89,1.79l-0.15,1.04l0.92,5.04l0.93,1.24l0.39,1.73l1.47,1.7l4.96,0.81l1.27,2.0l-0.3,1.02l0.29,0.66l3.63,2.32l0.86,2.38l3.86,2.26l0.62,1.65l-0.3,4.16l-1.64,1.97l-0.49,1.92l0.14,1.27l-1.25,1.35l-2.52,0.97l-0.89,1.17l-0.55,0.25l-4.57,0.84l-0.89,0.72l-0.6,1.69l-0.15,2.53l0.4,1.06l2.02,1.44l0.55,2.61l-1.86,3.22l-0.21,2.21l-0.52,1.4l-2.89,1.39l-1.02,1.02l-0.2,0.99l0.72,0.85l0.21,2.11l-0.58,0.24l-1.35,-0.81l-0.31,-0.75l-1.29,-0.8l-0.29,-0.5l-0.89,-0.35l-0.3,-0.8l-0.95,-0.67l-22.35,2.69l-15.16,1.21l-7.61,0.53l-20.83,0.54l-0.22,-1.04l-1.3,-0.72l-0.33,-0.66l0.57,-1.13l-0.21,-0.95l0.21,-1.37l-0.36,-2.16l-0.6,-0.71l0.06,-3.6l-1.05,-0.49l0.05,-0.88l0.71,-1.01l-0.05,-0.44l-1.31,-0.55l0.33,-2.51l-0.41,-0.45l-0.89,-0.16l0.23,-0.78l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.77l0.5,-2.33l-0.2,-0.67l-1.37,-1.69l-0.08,-1.89l-1.79,-1.52l-0.36,-1.72l-1.09,-0.93l0.03,-2.15l-1.11,-1.85l0.21,-1.67l-0.27,-1.08l-1.38,-0.66l-0.88,-2.14l0.04,-0.63l-1.81,-1.79l0.56,-1.58l0.54,-0.47l0.72,-2.66l0.0,-1.67l0.54,-0.68l0.21,-1.18l-0.51,-2.22l-1.33,-0.28l-0.05,-0.72l0.45,-0.56l-0.0,-1.7l-0.96,-1.41l-0.05,-0.86Z\", \"name\": \"Iowa\"}, \"US-MI\": {\"path\": \"M613.3,123.04l1.01,-0.11l0.46,-0.67l-0.39,-3.2l1.08,-0.12l0.66,-1.43l1.19,0.47l0.65,-0.34l0.74,-2.59l0.82,-1.21l0.55,-1.68l0.55,-0.18l-0.57,0.88l0.61,1.64l-0.7,1.8l0.71,0.42l-0.46,2.61l0.89,1.41l0.73,-0.06l0.52,0.55l0.65,-0.25l0.87,-2.26l0.64,-3.51l-0.09,-2.06l-0.78,-3.41l0.58,-1.02l2.12,-1.66l2.74,-0.56l0.98,-0.64l0.28,-0.64l-0.26,-0.54l-1.76,-0.09l-0.97,-0.85l-0.53,-1.98l1.83,-2.99l-0.11,-0.73l1.72,-0.24l0.74,-0.95l4.18,1.97l0.83,0.12l1.98,-0.42l1.38,0.38l0.99,0.79l1.19,1.76l2.74,-0.21l1.71,1.0l1.92,0.07l0.81,0.63l1.16,0.23l1.44,-0.07l1.77,1.03l0.0,1.12l1.05,1.3l0.64,0.2l0.39,0.92l-0.15,0.54l-0.67,-0.25l-0.94,0.58l-0.22,1.83l0.82,1.28l1.61,0.97l0.7,1.36l0.67,2.25l-0.1,1.73l0.8,5.79l-0.77,0.64l-0.4,0.87l-0.75,0.08l-0.78,0.82l-0.14,4.45l-1.12,0.49l-0.17,0.81l-1.86,0.44l-0.72,0.6l-0.56,2.6l0.26,0.45l-0.2,0.52l0.27,2.56l1.39,1.29l2.9,0.8l0.91,-0.08l1.07,-1.23l0.59,-1.44l0.63,0.18l0.38,-0.24l0.99,-3.57l0.59,-1.06l-0.08,-0.51l0.92,-1.41l1.43,-0.44l1.06,-0.69l0.82,-1.1l0.87,-0.44l2.07,0.57l2.14,1.75l1.23,2.13l2.05,5.84l0.83,1.58l1.05,3.67l1.52,3.58l1.41,2.21l-0.43,3.38l0.46,2.46l-0.46,2.76l-0.34,0.44l-0.24,-0.32l-0.32,-1.69l-1.46,-0.5l-0.47,0.09l-1.47,1.36l-0.05,0.83l0.55,0.66l-0.82,0.57l-0.29,0.78l0.3,2.91l-0.48,0.75l-1.61,0.93l-1.05,1.85l-0.41,3.7l0.28,1.53l-0.32,0.92l-0.43,0.19l0.03,0.9l-0.63,0.3l-0.37,1.07l-0.52,0.52l-0.49,1.28l-0.02,1.04l-0.51,0.78l-20.38,4.41l-0.15,-0.84l-0.46,-0.33l-31.63,4.97l1.86,-2.22l1.82,-5.87l1.42,-3.02l0.98,-4.96l0.08,-5.29l-1.11,-6.42l-2.21,-4.24l0.6,-0.51l0.3,-0.78l-0.57,-0.42l-1.08,0.56l-4.01,-7.31l0.08,-1.35l0.97,-2.05l-0.02,-0.96l-0.76,-3.11l-1.29,-1.63l-0.05,-0.61l1.71,-2.72l1.2,-4.13l-0.25,-5.32l-0.78,-1.58l1.09,-1.15ZM622.19,118.68l0.0,-0.07l0.11,-0.12l-0.01,0.03l-0.11,0.16ZM622.44,117.76l-0.07,-0.16l0.07,-0.14l0.0,0.3ZM544.04,91.26l4.86,-2.42l3.53,-3.65l5.76,-1.4l1.38,-0.85l2.34,-2.74l0.97,0.04l1.52,-0.74l0.99,-2.27l2.79,-2.88l0.24,1.73l1.85,0.59l0.06,1.46l0.67,0.14l0.51,0.6l-0.14,3.17l0.44,0.95l-0.33,0.48l0.2,0.47l0.74,-0.02l1.07,-2.23l1.07,-0.91l-0.41,1.17l0.59,0.44l0.82,-0.68l0.52,-1.23l1.0,-0.44l3.09,-0.27l1.5,0.2l1.19,0.93l1.54,0.44l0.48,1.05l2.32,2.59l1.17,0.54l0.54,1.56l0.73,0.34l1.87,0.06l0.72,-0.41l1.07,-0.06l0.51,-0.66l0.88,-0.44l1.0,1.11l1.11,0.64l1.02,-0.26l0.67,-0.83l1.88,1.05l0.64,-0.35l1.63,-2.61l2.79,-1.92l1.69,-1.67l0.92,0.1l3.26,-1.23l5.17,-0.28l4.46,-2.76l2.56,-0.39l0.01,3.27l0.3,0.72l-0.35,1.11l0.68,0.85l0.66,0.11l0.71,-0.4l2.2,0.69l1.14,-0.44l1.02,-0.88l0.66,0.48l0.21,0.71l0.85,0.21l1.26,-0.82l0.94,-1.56l0.65,-0.02l0.85,0.75l2.01,3.79l-0.86,1.05l0.49,0.88l0.47,0.36l1.36,-0.43l0.58,0.46l0.64,0.04l0.18,1.2l0.99,0.87l1.53,0.51l-1.17,0.69l-4.96,-0.11l-0.53,0.3l-1.36,-0.16l-0.88,0.41l-0.67,-0.75l-1.63,-0.06l-0.58,0.47l-0.06,1.22l-0.49,0.76l0.4,2.05l-0.92,-0.22l-0.9,-0.92l-0.77,-0.13l-1.97,-1.64l-2.41,-0.58l-1.6,0.05l-1.04,-0.5l-2.88,0.49l-0.61,0.45l-1.16,2.53l-3.47,0.76l-0.57,0.78l-2.06,-0.32l-2.81,0.95l-0.68,0.84l-0.54,2.52l-0.78,0.29l-0.81,0.88l-0.65,0.29l0.15,-1.96l-0.75,-0.91l-1.02,0.35l-0.76,0.93l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.11,0.83l-0.72,2.02l-1.2,0.6l-0.12,-1.38l-0.47,-1.06l0.33,-1.69l-0.17,-0.37l-0.66,-0.16l-0.45,0.58l-0.59,2.13l-0.2,2.57l-1.11,0.92l-1.25,3.03l-0.6,2.66l-2.53,5.34l-0.69,0.74l0.13,0.91l-1.41,-1.27l0.17,-1.74l0.62,-1.69l-0.42,-0.81l-0.62,-0.3l-1.35,0.86l-1.16,0.1l0.03,-1.29l0.8,-1.45l-0.42,-1.34l0.29,-1.09l-0.58,-0.98l0.14,-0.83l-1.91,-1.54l-1.1,-0.05l-0.59,-0.43l-0.86,0.2l-0.62,-0.19l0.29,-1.37l-0.95,-1.45l-1.13,-0.51l-2.23,-0.09l-3.2,-0.69l-1.55,0.6l-1.43,-0.42l-1.62,0.17l-4.57,-1.93l-15.38,-2.44l-2.01,-3.4l-1.89,-0.96l-0.76,0.26l-0.1,-0.3ZM603.98,101.59l-0.0,0.52l-0.46,0.32l-0.69,1.39l0.08,0.57l-0.65,-0.58l0.9,-2.17l0.83,-0.07ZM644.38,90.12l1.97,-1.54l0.16,-0.57l-0.28,-0.64l1.05,0.15l0.81,1.23l0.82,0.19l-0.26,1.09l-0.36,0.19l-1.51,-0.33l-0.77,0.46l-1.63,-0.23ZM636.04,80.32l0.55,-0.84l0.52,0.05l-0.36,1.33l0.11,0.71l-0.35,-0.9l-0.47,-0.35ZM636.97,81.84l0.09,0.14l0.01,0.02l-0.02,-0.01l-0.08,-0.14ZM637.86,83.93l0.4,0.45l0.23,0.61l-0.63,-0.71l0.0,-0.34ZM634.29,95.87l1.41,0.24l0.35,-0.19l0.4,0.21l-0.17,0.52l-0.75,0.11l-1.24,-0.89ZM619.44,99.61l0.64,2.25l-0.79,0.78l-0.39,-0.26l0.54,-2.77ZM613.94,113.71l0.48,0.3l-0.08,0.57l-0.45,-0.69l0.06,-0.17ZM612.93,116.45l0.0,-0.03l0.02,-0.04l-0.03,0.07ZM599.9,85.56l-0.23,-0.37l0.02,-0.4l0.37,0.33l-0.16,0.45ZM570.96,75.75l-0.51,-0.27l-1.15,0.07l-0.06,-1.58l0.99,-1.04l1.16,-2.12l1.82,-1.52l0.63,-0.0l0.52,-0.59l2.07,-0.9l3.33,-0.44l1.11,0.67l-0.54,0.38l-1.31,-0.12l-2.26,0.79l-0.15,0.29l0.31,0.58l0.72,0.13l-1.19,1.0l-1.39,1.91l-0.69,0.29l-0.34,1.46l-1.14,1.38l-0.64,2.06l-0.67,-0.88l0.74,-0.98l0.12,-1.97l-0.63,-0.37l-0.2,0.15l-0.59,0.93l-0.04,0.68ZM558.64,61.09l0.75,-1.0l-0.4,-0.34l0.56,-0.55l4.59,-3.04l1.96,-1.75l0.62,-0.18l-0.45,0.67l0.11,0.8l-0.43,0.5l-4.22,2.61l-0.85,1.0l0.24,0.37l-1.86,1.19l-0.61,-0.29Z\", \"name\": \"Michigan\"}, \"US-GA\": {\"path\": \"M655.83,331.54l22.1,-3.74l20.71,-4.04l-1.47,1.41l-0.51,1.67l-0.66,0.82l-0.4,1.72l0.12,1.22l0.83,0.77l1.85,0.77l1.04,0.1l2.72,1.98l0.84,0.22l1.91,-0.39l0.6,0.24l0.81,1.62l1.52,1.57l1.06,2.46l1.34,0.8l0.85,1.14l0.56,0.26l1.01,1.74l1.08,0.28l1.19,0.97l3.84,1.79l2.44,3.1l2.27,0.55l2.56,1.63l0.51,2.31l1.26,0.99l0.48,-0.17l0.31,0.48l-0.09,0.62l0.79,0.71l0.79,0.08l0.57,1.19l5.03,1.81l0.41,1.76l1.56,1.7l1.04,1.98l-0.07,0.8l0.49,0.68l0.12,1.23l1.05,0.78l1.17,0.16l1.26,0.6l0.28,0.53l0.58,0.23l1.14,2.53l0.77,0.56l0.1,2.67l0.78,1.47l1.39,0.88l1.53,-0.28l1.46,0.74l1.46,0.09l-0.59,0.78l-0.56,-0.35l-0.47,0.28l-0.4,0.99l0.63,0.9l-0.37,0.48l-1.39,-0.14l-0.78,-0.54l-0.64,0.45l0.26,0.71l-0.48,0.53l0.36,0.6l0.95,-0.05l0.5,0.28l-0.57,1.35l-1.44,0.29l-1.34,-0.43l-0.44,0.39l0.35,0.84l1.24,0.33l-0.5,0.87l0.23,0.35l-0.2,0.64l0.84,0.63l-0.33,0.44l-0.72,-0.13l-0.96,0.52l-0.09,0.63l1.09,0.44l0.06,0.94l0.48,-0.08l1.2,-1.18l-0.91,2.33l-0.32,-0.58l-0.59,-0.07l-0.44,0.73l0.3,0.7l0.99,0.82l-2.34,0.07l-0.92,-0.27l-0.63,0.3l0.07,0.63l0.55,0.33l2.78,0.21l1.08,0.65l-0.01,0.34l-0.56,0.22l-0.87,1.96l-0.52,-1.41l-0.45,-0.12l-0.6,0.34l-0.14,0.84l0.35,0.96l-0.6,0.12l-0.02,0.84l-0.3,0.16l0.07,0.46l1.35,1.13l-1.09,1.04l0.33,0.47l0.78,0.07l-0.38,0.92l0.06,0.88l-0.46,0.52l1.12,1.65l0.04,0.76l-0.8,0.34l-2.66,-0.14l-4.1,-0.92l-1.31,0.36l-0.17,0.74l-0.68,0.26l-0.34,1.25l0.29,2.08l0.96,1.35l0.17,4.26l-1.99,0.42l-0.55,-0.92l-0.13,-1.31l-1.35,-1.81l-49.49,5.58l-0.73,-0.55l-0.89,-2.7l-0.96,-1.5l-0.57,-0.37l0.15,-0.68l-0.74,-1.5l-1.84,-1.8l-0.44,-1.74l0.25,-0.8l0.03,-5.18l-0.62,-1.8l-1.2,-1.45l-1.05,-2.63l0.11,-1.65l0.77,-2.36l-0.26,-1.52l0.18,-2.1l1.62,-1.34l0.45,-1.47l-0.56,-0.6l-1.43,-0.67l0.08,-2.14l-0.99,-1.85l-2.2,-2.38l-1.05,-2.78l-0.76,-0.67l-0.17,-0.95l-0.78,-1.35l-14.26,-42.58ZM747.77,388.29l0.7,-0.27l-0.07,0.83l-0.3,-0.33l-0.34,-0.23ZM746.43,405.18l0.06,0.87l-0.01,0.47l-0.35,-0.57l0.3,-0.77Z\", \"name\": \"Georgia\"}, \"US-AZ\": {\"path\": \"M127.66,383.44l0.45,-1.79l1.3,-1.26l0.55,-1.1l0.48,-0.25l1.67,0.63l0.97,-0.03l0.52,-0.45l0.29,-1.16l1.32,-0.98l0.26,-2.71l-0.45,-1.24l-0.84,-0.66l-2.08,-0.68l-0.3,-0.61l0.81,-2.37l0.01,-1.38l-0.51,-1.19l0.57,-0.84l-0.2,-0.86l1.58,-0.25l2.32,-2.77l0.66,-2.41l0.66,-0.79l0.04,-3.14l0.56,-0.61l-0.28,-1.41l1.73,-1.11l1.05,-1.82l3.18,-1.25l2.05,-1.54l0.27,-0.53l-0.12,-1.03l-3.25,-3.48l-0.51,-0.22l0.23,-1.24l-0.65,-1.44l0.08,-0.9l-0.87,-2.74l-0.84,-0.56l-0.18,-1.63l-0.68,-0.79l0.21,-3.49l0.59,-0.85l-0.29,-0.84l1.03,-0.39l0.41,-1.4l0.15,-3.16l-0.75,-3.61l0.47,-0.86l0.3,-1.65l-0.38,-2.96l0.86,-2.52l-0.8,-1.85l-0.03,-0.9l0.44,-0.51l0.35,-1.33l2.55,-0.6l1.75,1.0l1.43,-0.18l0.96,2.22l0.78,0.71l1.54,0.15l1.02,-0.48l1.04,-2.23l0.95,-1.17l2.64,-16.67l42.56,6.06l42.71,4.9l-12.24,122.4l-37.11,-4.26l-36.46,-19.18l-28.51,-15.73Z\", \"name\": \"Arizona\"}, \"US-MT\": {\"path\": \"M167.4,59.85l0.72,-0.1l0.33,-0.38l-0.88,-2.02l0.85,-0.96l-0.38,-1.32l0.1,-0.97l-1.22,-1.96l-0.22,-1.51l-1.02,-1.36l-1.16,-2.48l3.76,-21.01l43.48,7.0l42.9,5.45l42.6,4.01l43.01,2.64l-3.73,86.82l-28.12,-1.54l-26.83,-2.0l-26.78,-2.51l-25.84,-2.91l-0.45,0.35l-1.28,10.37l-1.51,-2.01l-0.02,-0.91l-1.17,-2.35l-1.24,-0.75l-1.81,0.9l0.02,1.05l-0.72,0.42l-0.35,1.55l-2.42,-0.42l-1.92,0.55l-0.92,-0.85l-3.36,0.07l-2.38,-0.98l-1.68,0.56l-0.85,1.47l-4.66,-1.63l-1.3,0.36l-1.13,0.89l-0.31,0.66l-1.65,-1.41l0.22,-1.42l-0.89,-1.71l0.4,-0.36l0.07,-0.62l-1.16,-3.08l-1.44,-1.26l-1.45,0.34l-0.21,-0.64l-1.07,-0.9l-0.4,-1.37l0.68,-0.6l0.21,-1.41l-0.75,-2.38l-0.77,-0.36l-0.3,-1.58l-1.49,-2.55l0.24,-1.51l-0.55,-1.27l0.35,-1.4l-0.72,-0.86l0.49,-0.97l-0.21,-0.75l-1.14,-0.76l-0.13,-0.59l-0.84,-0.92l-0.8,-0.4l-0.51,0.37l-0.08,0.75l-0.7,0.26l-1.14,1.21l-1.75,0.35l-1.22,1.06l-1.08,-0.86l-0.63,-1.01l-1.05,-0.45l0.02,-0.86l0.74,-0.63l0.25,-1.06l-0.6,-1.61l0.91,-1.09l1.07,-0.08l0.83,-0.8l-0.25,-1.14l0.39,-1.07l-0.94,-0.81l-0.04,-0.81l0.67,-1.28l-0.58,-1.08l0.74,-0.06l0.39,-0.42l-0.03,-1.78l1.85,-3.73l-0.13,-1.06l0.89,-0.62l0.63,-3.18l-0.78,-0.51l-1.8,0.36l-1.33,-0.12l-0.64,-0.56l0.37,-0.84l-0.61,-0.98l-0.66,-0.23l-0.73,0.35l-0.06,-0.95l-1.73,-1.65l0.06,-1.86l-1.66,-1.85l-0.08,-0.69l-1.52,-2.92l-1.06,-1.31l-0.55,-1.65l-2.34,-1.37l-0.93,-1.98l-1.44,-1.22Z\", \"name\": \"Montana\"}, \"US-MS\": {\"path\": \"M557.14,430.96l0.67,-0.97l-1.06,-1.76l0.18,-1.63l-0.82,-0.87l1.7,-0.26l0.47,-0.54l0.39,-2.74l-0.79,-1.82l1.57,-1.8l0.24,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.64,-0.95l1.15,-0.28l0.96,-2.58l0.91,-1.31l-0.16,-0.86l-1.55,-0.42l-0.35,-0.95l-1.84,-1.03l-0.08,-2.13l-0.94,-0.73l-0.45,-0.83l-0.02,-0.37l1.14,-0.29l0.46,-0.68l-0.26,-0.89l-1.41,-0.48l0.23,-1.76l0.98,-1.53l-0.78,-1.06l-1.08,-0.3l-0.16,-2.8l0.9,-0.54l0.22,-0.8l-0.63,-2.5l-1.26,-0.65l0.7,-1.32l-0.08,-2.2l-2.03,-1.49l1.13,-0.47l0.12,-1.4l-1.35,-0.87l1.57,-2.02l0.93,-0.31l0.36,-0.68l-0.52,-1.55l0.42,-1.35l-0.89,-0.87l1.59,-0.83l1.25,-0.27l0.59,-0.76l-0.09,-1.06l-1.42,-0.93l1.39,-1.07l0.62,-1.76l0.95,-0.17l0.34,-0.97l-0.2,-0.76l1.48,-0.44l1.22,-1.21l0.06,-3.49l-0.47,-1.51l0.36,-1.76l0.74,0.08l0.68,-0.33l0.42,-0.87l-0.41,-1.04l2.73,-1.71l0.58,-1.05l-0.29,-1.26l36.59,-4.31l0.87,1.23l0.85,0.44l1.25,65.96l5.71,32.91l-0.73,0.7l-1.55,-0.29l-0.91,-0.94l-1.32,1.07l-1.24,0.18l-2.05,-1.2l-2.01,-0.23l-0.84,0.37l-0.34,0.44l0.32,0.41l-0.56,0.37l-3.98,1.69l-0.05,-0.5l-0.97,-0.51l-1.0,0.05l-0.58,1.0l0.76,0.61l-1.6,1.22l-0.32,1.29l-0.69,0.31l-1.35,-0.05l-1.18,-1.87l-0.09,-0.9l-0.93,-1.47l-0.21,-1.01l-1.42,-1.63l-1.17,-0.53l-0.47,-0.77l0.1,-0.63l-0.7,-0.92l0.2,-1.99l0.5,-0.94l0.65,-2.99l-0.07,-1.23l-0.43,-0.28l-34.87,3.59Z\", \"name\": \"Mississippi\"}, \"US-SC\": {\"path\": \"M699.48,323.59l4.87,-2.71l1.03,-0.06l1.11,-1.38l3.94,-1.92l0.45,-0.88l0.63,0.21l22.62,-3.59l0.31,0.13l-0.1,0.97l0.46,0.66l0.71,0.0l1.21,-1.3l2.85,2.48l0.48,2.44l0.56,0.51l19.55,-3.73l23.18,14.64l0.02,0.54l-2.47,2.19l-2.42,3.67l-2.38,5.71l-0.07,2.72l-1.09,-0.21l0.84,-2.71l-0.64,-0.22l-0.76,0.87l-0.55,1.38l-0.1,1.55l0.85,0.94l1.06,0.22l0.45,0.89l-0.75,0.09l-0.4,0.56l-0.88,0.03l-0.23,0.69l0.95,0.43l-1.1,1.13l-0.07,1.01l-1.35,0.65l-0.5,-0.6l-0.5,-0.07l-1.06,0.87l-0.55,1.76l0.43,0.86l-1.19,1.23l-0.6,1.44l-1.2,1.02l-0.91,-0.38l0.27,-0.59l-0.54,-0.73l-1.38,0.33l-0.11,0.43l0.37,0.76l-0.52,0.03l0.06,0.75l0.73,0.57l1.31,0.41l-0.12,0.38l-0.88,0.95l-1.22,0.24l-0.25,0.51l0.33,0.44l-2.29,1.36l-1.44,-0.83l-0.56,0.11l-0.1,0.68l1.2,0.76l-1.54,1.58l-0.73,-0.74l-0.49,0.53l-0.0,0.73l-0.7,-0.36l-0.85,0.01l-1.35,-0.82l-0.44,0.5l0.17,0.52l-1.74,0.19l-0.44,0.37l-0.06,0.77l0.65,0.22l1.43,-0.18l-0.25,0.55l0.43,0.25l1.92,-0.17l0.11,0.21l-0.97,0.87l-0.32,0.78l0.57,0.49l0.94,-0.54l0.03,0.21l-1.12,1.1l-1.0,0.45l-0.22,-2.03l-0.7,-0.26l-0.24,-1.54l-0.89,-0.14l-0.3,0.58l0.89,2.68l-1.14,-0.65l-0.64,-0.99l-0.41,-1.75l-0.66,-0.2l-0.53,-0.62l-0.69,0.01l-0.26,0.6l0.86,1.01l0.01,0.67l1.13,1.81l-0.01,0.85l1.24,1.16l-0.62,0.34l0.04,0.98l-1.18,3.56l-1.53,-0.76l-1.53,0.27l-0.98,-0.66l-0.55,-1.02l-0.19,-2.92l-0.87,-0.74l-1.08,-2.45l-1.05,-0.93l-3.25,-1.29l-0.51,-2.63l-1.14,-2.15l-1.45,-1.55l-0.07,-1.06l-0.78,-1.2l-4.85,-1.62l-0.6,-1.26l-1.21,-0.35l0.01,-0.7l-0.54,-0.86l-0.87,0.01l-0.74,-0.59l0.02,-1.21l-0.67,-1.25l-2.72,-1.73l-2.17,-0.49l-2.39,-3.07l-3.96,-1.86l-1.23,-1.01l-0.83,-0.11l-1.06,-1.78l-0.51,-0.21l-0.92,-1.19l-1.19,-0.66l-1.01,-2.38l-1.55,-1.62l-1.04,-1.84l-1.06,-0.36l-1.94,0.39l-0.46,-0.16l-2.77,-2.14l-1.07,0.03l-1.71,-0.71l-0.53,-0.51l0.35,-2.19l0.64,-0.78l0.34,-1.37l1.36,-1.23l0.4,-0.98ZM752.86,373.71l0.73,-0.09l0.52,0.44l-1.22,1.91l0.28,-1.22l-0.3,-1.05Z\", \"name\": \"South Carolina\"}, \"US-RI\": {\"path\": \"M860.17,132.77l0.34,0.0l1.04,2.6l-0.31,0.56l-1.07,-3.15ZM859.46,136.41l-0.28,-0.32l0.23,-1.5l0.42,1.5l-0.37,0.32ZM852.23,141.2l0.22,-0.46l-0.55,-2.18l-3.23,-9.82l5.59,-1.92l0.78,2.02l0.81,0.24l0.19,0.72l0.09,0.41l-0.76,0.26l0.03,0.29l0.53,1.43l0.59,0.48l-0.6,0.16l-0.45,0.73l0.88,0.95l-0.13,1.21l0.96,2.14l-0.3,2.06l-1.33,0.25l-3.14,2.22l-0.17,-1.18ZM856.95,131.31l0.26,0.09l0.01,0.09l-0.17,-0.08l-0.09,-0.1ZM858.34,131.95l0.24,0.47l-0.2,0.31l-0.04,-0.37l0.0,-0.4ZM857.06,144.61l0.1,0.1l-0.18,0.1l-0.03,-0.13l0.11,-0.07Z\", \"name\": \"Rhode Island\"}, \"US-CT\": {\"path\": \"M824.64,156.55l2.8,-3.23l-0.07,-0.55l-1.32,-1.21l-3.64,-15.64l9.8,-2.55l0.6,0.44l0.65,-0.27l0.22,-0.58l14.14,-4.2l3.29,10.01l0.48,1.92l-0.03,1.67l-1.65,0.34l-0.91,0.82l-0.7,-0.35l-0.49,0.11l-0.17,0.9l-1.15,0.09l-1.26,1.27l-0.62,-0.12l-0.57,-0.99l-0.89,-0.07l-0.2,0.68l0.76,0.62l0.09,0.53l-0.89,-0.0l-1.01,0.88l-1.65,0.1l-1.14,0.95l-0.86,-0.08l-2.05,0.85l-0.4,-0.66l-0.6,0.12l-0.87,2.11l-0.59,0.3l-0.82,1.29l-0.79,-0.04l-0.94,0.74l-0.19,0.63l-0.53,0.06l-0.88,0.75l-2.75,3.08l-0.96,0.28l-1.25,-1.01Z\", \"name\": \"Connecticut\"}}, \"height\": 606.211102089553, \"projection\": {\"type\": \"lcc\", \"centralMeridian\": -100.0}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/jquery-jvectormap-world-mill-en.js",
    "content": "$.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900.0, \"top\": 0, \"height\": 440.7063107441331, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.02513512, \"x\": 20026572.394749384}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z\", \"name\": \"Bosnia and Herzegovina\"}, \"BN\": {\"path\": \"M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z\", \"name\": \"The Bahamas\"}, \"BY\": {\"path\": \"M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z\", \"name\": \"Republic of Serbia\"}, \"LT\": {\"path\": \"M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z\", \"name\": \"Guinea Bissau\"}, \"GT\": {\"path\": \"M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z\", \"name\": \"Equatorial Guinea\"}, \"GY\": {\"path\": \"M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z\", \"name\": \"Oman\"}, \"_3\": {\"path\": \"M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z\", \"name\": \"Somaliland\"}, \"_2\": {\"path\": \"M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z\", \"name\": \"Western Sahara\"}, \"_1\": {\"path\": \"M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z\", \"name\": \"Northern Cyprus\"}, \"JO\": {\"path\": \"M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z\", \"name\": \"West Bank\"}, \"PT\": {\"path\": \"M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z\", \"name\": \"Zambia\"}, \"EE\": {\"path\": \"M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z\", \"name\": \"Falkland Islands\"}, \"NI\": {\"path\": \"M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z\", \"name\": \"Ivory Coast\"}, \"CH\": {\"path\": \"M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z\", \"name\": \"Republic of the Congo\"}, \"CF\": {\"path\": \"M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z\", \"name\": \"Central African Republic\"}, \"CD\": {\"path\": \"M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z\", \"name\": \"Democratic Republic of the Congo\"}, \"CZ\": {\"path\": \"M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z\", \"name\": \"Czech Republic\"}, \"CY\": {\"path\": \"M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z\", \"name\": \"South Sudan\"}, \"SR\": {\"path\": \"M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z\", \"name\": \"South Korea\"}, \"SI\": {\"path\": \"M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z\", \"name\": \"North Korea\"}, \"SO\": {\"path\": \"M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z\", \"name\": \"Solomon Islands\"}, \"SA\": {\"path\": \"M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z\", \"name\": \"Dominican Republic\"}, \"DJ\": {\"path\": \"M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z\", \"name\": \"United States of America\"}, \"LV\": {\"path\": \"M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z\", \"name\": \"Laos\"}, \"TW\": {\"path\": \"M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z\", \"name\": \"East Timor\"}, \"TM\": {\"path\": \"M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z\", \"name\": \"French Southern and Antarctic Lands\"}, \"TG\": {\"path\": \"M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z\", \"name\": \"Mozambique\"}}, \"height\": 440.7063107441331, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/maps/jvectormap/maps/mall-map.js",
    "content": "jQuery.fn.vectorMap('addMap', 'mall', {\"width\":694,\"height\":213,\"paths\":{\"F102\":{\"name\":\"Nike\",\"path\":\"M13.74 162.23L30.83 160.72L36.51 151.85L31.53 65.98L23.53 59.28L7.96 60.36\"},\"F103\":{\"name\":\"La Maison\",\"path\":\"M40.51 57.55L41.81 84.48L52.62 94.54L74.14 93.02L71.98 55.50\"},\"F105\":{\"name\":\"\",\"path\":\"M72.73 55.60L89.17 54.74L91.44 91.61L74.68 92.91\"},\"F106\":{\"name\":\"\",\"path\":\"M90.04 54.52L120.21 52.47L122.81 89.35L91.98 91.51\"},\"F108\":{\"name\":\"Hairsmiths Unisex Hair Salon\",\"path\":\"M121.08 52.47L137.08 51.50L139.35 88.37L123.45 89.24\"},\"F109\":{\"name\":\"Terra Plana\",\"path\":\"M137.84 51.49L152.87 50.52L154.71 87.18L140.11 88.26\"},\"F110\":{\"name\":\"Mariella Nails\",\"path\":\"M153.95 50.52L169.74 49.55L172.01 86.21L155.79 87.18\"},\"F111\":{\"name\":\"Goveci\",\"path\":\"M170.93 49.55L204.91 47.59L207.27 83.94L173.09 86.21\"},\"F114\":{\"name\":\"SoEasy\",\"path\":\"M205.68 47.42L225.02 46.44L227.22 82.86L208.13 83.98\"},\"F166\":{\"name\":\"Espressamente Illy\",\"path\":\"M225.98 46.22L260.40 44.25L251.39 64.09L252.72 81.12L228.38 82.86\"},\"F167\":{\"name\":\"An’ge Paris\",\"path\":\"M308.57 71.34c-2.03 3.49 -2.68 6.70 -2.68 6.70l-52.24 3.08l-0.95 -16.84l9.16 -20.03l46.71 27.01\"},\"F169V\":{\"name\":\"Veranda\",\"path\":\"M283.35 44.43l-9.68 -8.62c0.00 0.00 21.95 -26.06 58.17 -30.98c7.14 -0.97 6.54 10.85 6.71 11.84C338.71 17.66 309.52 17.29 283.35 44.43z\"},\"F169\":{\"name\":\"Ocean Basket\",\"path\":\"M310.27 68.09c0.00 0.00 9.24 -16.87 30.50 -20.28c0.23 -0.04 -2.27 -31.79 -2.27 -31.79s-33.42 3.24 -55.16 28.39L310.27 68.09z\"},\"F172V\":{\"name\":\"Veranda\",\"path\":\"M411.35 45.06l9.50 -8.60c0.00 0.00 -23.48 -27.41 -57.86 -31.15c-7.10 -0.77 -6.64 11.36 -6.80 12.33S385.39 18.46 411.35 45.06z\"},\"F172\":{\"name\":\"T.G.I Friday’s\",\"path\":\"M384.25 68.99c0.00 0.00 -8.84 -17.27 -30.17 -21.01c-0.23 -0.04 2.12 -31.31 2.12 -31.31s33.42 3.24 55.15 28.39L384.25 68.99z\"},\"F170\":{\"name\":\"Video Arcade &  Gaming Zone\",\"path\":\"M344.18 47.33l-1.30 -17.52h9.90 0.00l-1.30 17.68C351.48 47.49 348.07 47.17 344.18 47.33z\"},\"F174\":{\"name\":\"Taco Bell\",\"path\":\"M388.79 80.67l68.38 2.03l2.97 -36.50L434.50 44.25l-48.18 29.20C386.32 73.45 387.65 76.29 388.79 80.67z\"},\"F115\":{\"name\":\"Early Learning Centre\",\"path\":\"M460.97 46.36L492.28 48.47L489.52 84.96L458.22 82.69\"},\"F117\":{\"name\":\"\",\"path\":\"M490.50 84.96L505.42 85.94L507.74 49.62L493.06 48.80\"},\"F118\":{\"name\":\"Hart\",\"path\":\"M506.41 85.98L521.38 87.02L524.08 50.74L508.99 49.76\"},\"F119\":{\"name\":\"\",\"path\":\"M522.13 87.03L541.70 88.44L544.19 52.33L525.05 50.90\"},\"F120\":{\"name\":\"\",\"path\":\"M542.39 88.38L545.11 52.27L572.20 54.06L570.00 90.19\"},\"F122\":{\"name\":\"Mavros\",\"path\":\"M570.77 90.19L573.08 54.13L601.62 56.09L598.67 92.05\"},\"F124\":{\"name\":\"\",\"path\":\"M599.75 92.05L602.58 56.19L622.37 57.48L619.75 93.34\"},\"F125\":{\"name\":\"Energiers\",\"path\":\"M620.49 93.46L623.19 57.74L655.39 59.82L653.20 86.10L643.28 95.41\"},\"F126\":{\"name\":\"\",\"path\":\"M662.77 67.61L671.37 61.12L686.29 62.09L678.99 158.29L663.75 157.48L656.77 149.20\"},\"F128\":{\"name\":\"Pablosky\",\"path\":\"M627.57 160.48L646.57 161.73L649.63 125.68L630.65 124.38\"},\"F129\":{\"name\":\"\",\"path\":\"M605.83 159.10L626.46 160.48L629.68 124.22L609.08 122.76\"},\"F130\":{\"name\":\"\",\"path\":\"M584.42 157.71L604.86 159.10L608.43 122.60L587.67 121.30\"},\"F132\":{\"name\":\"Cinnabon\",\"path\":\"M558.95 155.93L583.61 157.71L587.02 121.14L561.87 119.52\"},\"F133\":{\"name\":\"\",\"path\":\"M542.89 154.88L558.33 155.93L560.90 119.52L545.81 118.38\"},\"F134\":{\"name\":\"Crocodilino\",\"path\":\"M517.75 153.42L541.79 154.80L544.84 118.38L520.67 116.60\"},\"F135\":{\"name\":\"Krystalo - Fanelaki\",\"path\":\"M501.69 152.28L516.78 153.26L519.70 116.76L504.29 115.62\"},\"F136\":{\"name\":\"Lepus\",\"path\":\"M454.00 149.04L500.72 152.28L503.31 115.62L455.46 112.54\"},\"F139\":{\"name\":\"Engino\",\"path\":\"M410.80 131.47L414.37 134.71L441.29 136.33L449.24 112.33L417.77 109.73\"},\"FR01\":{\"name\":\"Rest Rooms\",\"path\":\"M429.13 135.93l11.92 0.89c0.00 0.00 -5.84 15.17 -13.87 26.36l-8.76 -6.57C418.42 156.61 426.49 145.28 429.13 135.93z\"},\"F153\":{\"name\":\"Al Rifai\",\"path\":\"M283.19 130.87L279.58 134.12L253.17 135.90L244.41 111.08L276.21 109.38\"},\"FR02\":{\"name\":\"Rest Rooms\",\"path\":\"M265.09 135.56l-11.68 0.91c0.00 0.00 5.24 15.60 13.63 26.52l9.65 -7.14C276.69 155.85 268.03 144.82 265.09 135.56z\"},\"FFC\":{\"name\":\"Food Court\",\"path\":\"M280.37 109.08l26.93 -2.92c0.00 0.00 8.16 25.94 39.88 26.98c19.71 0.65 34.63 -14.85 39.42 -26.93c0.12 -0.30 26.15 3.35 26.15 3.35s-4.54 18.49 -15.57 30.98c-0.11 0.12 29.66 22.84 29.66 22.84c-0.00 0.00 -12.98 18.33 -36.01 29.69c-32.08 15.81 -86.95 17.77 -123.58 -29.50c-0.40 -0.51 28.88 -20.77 28.88 -20.77S278.21 110.65 280.37 109.08z\"},\"F155\":{\"name\":\"155 Fashion\",\"path\":\"M239.87 148.15L224.95 148.39L221.87 112.38L243.12 111.08L245.88 136.71L243.93 133.31L239.55 133.63\"},\"F156\":{\"name\":\"Giacomo de Luca\",\"path\":\"M201.43 113.52L220.89 112.22L223.81 148.55L204.35 150.01\"},\"F157\":{\"name\":\"G+ Collections\",\"path\":\"M179.85 115.30L200.62 113.67L203.54 150.01L182.93 151.47\"},\"F158\":{\"name\":\"Femme Femme\",\"path\":\"M157.14 116.76L178.80 115.30L181.79 151.56L160.12 153.19\"},\"F159\":{\"name\":\"\",\"path\":\"M134.92 154.72L159.01 153.26L156.33 116.76L132.00 118.22\"},\"F160\":{\"name\":\"Le Rouge\",\"path\":\"M110.10 156.50L133.78 154.88L131.03 118.22L107.50 120.00\"},\"F162\":{\"name\":\"\",\"path\":\"M91.77 157.64L109.29 156.50L106.53 120.08L89.33 121.14\"},\"F164\":{\"name\":\"\",\"path\":\"M67.27 159.42L90.96 157.64L88.52 121.30L64.76 122.68\"},\"F165\":{\"name\":\"Ose\",\"path\":\"M47.97 160.72L66.30 159.42L63.95 122.68L45.62 123.82\"},\"FR03\":{\"name\":\"Rest Rooms\",\"path\":\"M239.93 133.90L243.82 133.69L245.79 136.96L245.79 140.93L240.03 141.01\"},\"FR04\":{\"name\":\"Rest Rooms\",\"path\":\"M245.77 148.04L240.20 148.07L240.03 141.25L245.77 141.19\"}}});"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/AUTHORS",
    "content": "ExplorerCanvas\n\nGoogle Open Source:\n\t<http://code.google.com>\n\t<opensource@google.com> \n\nDevelopers:\n\tEmil A Eklund <emil@eae.net>\n\tErik Arvidsson <erik@eae.net>\n\tGlen Murphy <glen@glenmurphy.com>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/COPYING",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/README",
    "content": "ExplorerCanvas\nCopyright 2006 Google Inc.\n\n-------------------------------------------------------------------------------\nDESCRIPTION\n\nFirefox, Safari and Opera 9 support the canvas tag to allow 2D command-based \ndrawing operations. ExplorerCanvas brings the same functionality to Internet \nExplorer; web developers only need to include a single script tag in their \nexisting canvas webpages to enable this support.\n\n\n-------------------------------------------------------------------------------\nINSTALLATION\n\nInclude the ExplorerCanvas tag in the same directory as your HTML files, and \nadd the following code to your page, preferably in the <head> tag.\n\n<!--[if IE]><script type=\"text/javascript\" src=\"excanvas.js\"></script><![endif]-->\n\nIf you run into trouble, please look at the included example code to see how\nto best implement this"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example1.html",
    "content": "<!--\n\tCopyright 2006 Google Inc.\n\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\n\t  http://www.apache.org/licenses/LICENSE-2.0\n\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n-->\n<html>\n<head>\n\t<title>ExplorerCanvas Example 1</title>\n\t<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n\t<script type=\"text/javascript\">\n\t\tvar canvas, ctx;\n\t\tvar particles = [];\n\t\tvar NUM_PARTICLES = 20;\n\n\t\tfunction Particle() {\n\t\t\tthis.x = Math.random() * canvas.width;\n\t\t\tthis.y = Math.random() * canvas.height;\n\n\t\t\tthis.xvel = Math.random() * 5 - 2.5;\n\t\t\tthis.yvel = Math.random() * 5 - 2.5;\n\t\t}\n\n\t\tParticle.prototype.update = function() {\n\t\t\tthis.x += this.xvel;\n\t\t\tthis.y += this.yvel;\n\n\t\t\tthis.yvel += 0.1;\n\n\t\t\tif (this.x > canvas.width || this.x < 0) {\n\t\t\t\tthis.xvel = -this.xvel;\n\t\t\t}\n\n\t\t\tif (this.y > canvas.height || this.y < 0) {\n\t\t\t\tthis.yvel = -this.yvel;\n\t\t\t}\n\t\t}\n\n\t\tfunction loop() {\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t\t\tfor(var i = 0; i < NUM_PARTICLES; i++) {\n\t\t\t\tparticles[i].update();\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(particles[i].x, particles[i].y);\n\t\t\t\tctx.lineTo(particles[i].x - particles[i].xvel,\n\t\t\t\t\t\t\t\t\t particles[i].y - particles[i].yvel);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tsetTimeout(loop, 10);\n\t\t}\n\n\t\tfunction load() {\n\t\t\tcanvas = document.getElementById(\"cv\");\n\t\t\tctx = canvas.getContext(\"2d\");\n\n\t\t\tfor(var i = 0; i < NUM_PARTICLES; i++) {\n\t\t\t\tparticles[i] = new Particle();\n\t\t\t}\n\n\t\t\tctx.lineWidth = \"2\";\n\t\t\tctx.strokeStyle = \"rgb(255, 255, 255)\";\n\t\t\tloop();\n\t\t}\n\t</script>\n\t<style>\n\t\tbody {\n\t\t\tbackground-color:black;\n\t\t\tmargin:50px;\n\t\t\ttext-align:center;\n\t\t}\n\n\t\tcanvas {\n\t\t\tborder:1px solid #444;\n\t\t}\n\t</style>\n</head>\n<body onload=\"load();\">\n\t<canvas id=\"cv\" width=\"400\" height=\"300\"></canvas>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example2.html",
    "content": "<!--\n\tCopyright 2006 Google Inc.\n\n\tLicensed under the Apache License, Version 2.0 (the \"License\");\n\tyou may not use this file except in compliance with the License.\n\tYou may obtain a copy of the License at\n\n\t  http://www.apache.org/licenses/LICENSE-2.0\n\n\tUnless required by applicable law or agreed to in writing, software\n\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\tSee the License for the specific language governing permissions and\n\tlimitations under the License.\n-->\n<html>\n<head>\n\t<title>ExplorerCanvas Example 1</title>\n\t<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n\t<script type=\"text/javascript\">\n\t\t/* -------------------------------------------------------------------- */\n\n\t\tvar canvas, ctx;\n\t\tvar canvasWidth, halfCanvasWidth;\n\t\tvar canvasHeight, halfCanvasHeight;\n\n\t\tvar space;  // 3D Engine\n\t\tvar scene;  // 3D Scene\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * Space is a simple 3D system.\n\t\t *\n\t\t * Y+ = up\n\t\t * Z+ = into screen\n\t\t * X+ = right\n\t\t */\n\t\tfunction Space() {\n\t\t\tthis.m = this.createMatrixIdentity();\n\t\t\tthis.mStack = [];\n\t\t}\n\n\t\tSpace.prototype.createMatrixIdentity = function() {\n\t\t\treturn [\n\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t[0, 0, 0, 1]\n\t\t\t];\n\t\t}\n\n\t\t/**\n\t\t * Multiplies two 4x4 matricies together.\n\t\t */\n\t\tSpace.prototype.matrixMultiply = function(m1, m2) {\n\t\t\tvar result = this.createMatrixIdentity();\n\n\t\t\tvar width = m1[0].length;\n\t\t\tvar height = m1.length;\n\n\t\t\tif (width != m2.length) {\n\t\t\t\t// error\n\t\t\t}\n\n\t\t\tfor (var x = 0; x < width; x++) {\n\t\t\t\tfor (var y = 0; y < height; y++) {\n\t\t\t\t\tvar sum = 0;\n\n\t\t\t\t\tfor (var z = 0; z < width; z++) {\n\t\t\t\t\t\tsum += m1[y][z] * m2[z][x];\n\t\t\t\t\t}\n\n\t\t\t\t\tresult[y][x] = sum;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\n\t\t * Transforms a coordinate using the current transformation\n\t\t * matrix, then flattens it using the projection matrix.\n\t\t */\n\t\tSpace.prototype.flatten = function(point) {\n\t\t\tvar p = [[point.x, point.y, point.z, 1]];\n\t\t\tvar pm = this.matrixMultiply(p, this.m);\n\n\t\t\tpoint.tx = pm[0][0];\n\t\t\tpoint.ty = pm[0][1];\n\t\t\tpoint.tz = pm[0][2];\n\n\t\t\t// lazy projection\n\t\t\tpoint.fx = halfCanvasWidth + (canvasWidth * point.tx / point.tz);\n\t\t\tpoint.fy = halfCanvasHeight -(canvasWidth * point.ty / point.tz);\n\t\t}\n\n\t\t/**\n\t\t * Translate (move) the current transformation matrix\n\t\t */\n\t\tSpace.prototype.translate = function(x, y, z) {\n\t\t\tvar m = [\n\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t[x, y, z, 1]\n\t\t\t];\n\n\t\t\tthis.m = this.matrixMultiply(m, this.m);\n\t\t}\n\n\t\t/**\n\t\t * Rotate the current transformation matrix. Rotations are\n\t\t * world-oriented, and occur in y,x,z order.\n\t\t */\n\t\tSpace.prototype.rotate = function(x, y, z) {\n\t\t\tif (y) {\n\t\t\t\tvar cosY = Math.cos(y);\n\t\t\t\tvar sinY = Math.sin(y);\n\t\t\t\tvar rotY = [\n\t\t\t\t\t[cosY, 0, sinY, 0],\n\t\t\t\t\t[0, 1, 0, 0],\n\t\t\t\t\t[-sinY, 0, cosY, 0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotY);\n\t\t\t}\n\n\t\t\tif (x) {\n\t\t\t\tvar cosX = Math.cos(x);\n\t\t\t\tvar sinX = Math.sin(x);\n\t\t\t\tvar rotX = [\n\t\t\t\t\t[1, 0, 0, 0],\n\t\t\t\t\t[0, cosX, -sinX, 0],\n\t\t\t\t\t[0, sinX, cosX,0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotX);\n\t\t\t}\n\n\t\t\tif (z) {\n\t\t\t\tvar cosZ = Math.cos(z);\n\t\t\t\tvar sinZ = Math.sin(z);\n\t\t\t\tvar rotZ = [\n\t\t\t\t\t[cosZ, -sinZ, 0, 0],\n\t\t\t\t\t[sinZ, cosZ, 0, 0],\n\t\t\t\t\t[0, 0, 1, 0],\n\t\t\t\t\t[0, 0, 0, 1]\n\t\t\t\t];\n\n\t\t\t\tthis.m = this.matrixMultiply(this.m, rotZ);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Pushes the current transformation onto the stack\n\t\t */\n\t\tSpace.prototype.push = function() {\n\t\t\tthis.mStack.push(this.m);\n\t\t\tthis.m = [\n\t\t\t\t[this.m[0][0], this.m[0][1], this.m[0][2], this.m[0][3]],\n\t\t\t\t[this.m[1][0], this.m[1][1], this.m[1][2], this.m[1][3]],\n\t\t\t\t[this.m[2][0], this.m[2][1], this.m[2][2], this.m[2][3]],\n\t\t\t\t[this.m[3][0], this.m[3][1], this.m[3][2], this.m[3][3]]\n\t\t\t];\n\t\t}\n\n\t\t/**\n\t\t * Pops the end off the transformation stack\n\t\t */\n\t\tSpace.prototype.pop = function() {\n\t\t\tthis.m = this.mStack.pop();\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * A 3d coordinate\n\t\t */\n\t\tfunction Point(x, y, z) {\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\n\t\t\t// Relative to camera coordinates\n\t\t\tthis.tx;\n\t\t\tthis.ty;\n\t\t\tthis.tz;\n\n\t\t\t// Flattened coordinates\n\t\t\tthis.fx;\n\t\t\tthis.fy;\n\t\t}\n\n\t\t/**\n\t\t * A Shape is made up of polygons\n\t\t */\n\t\tfunction Shape() {\n\t\t\tthis.points = [];\n\t\t\tthis.polygons = [];\n\t\t}\n\n\t\t/**\n\t\t * Draws the shape\n\t\t */\n\t\tShape.prototype.draw = function(drawlist) {\n\t\t\tfor (var i = 0; i< this.points.length; i++) {\n\t\t\t\tspace.flatten(this.points[i]);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i< this.polygons.length; i++) {\n\t\t\t\tvar poly = this.polygons[i]; // convenience\n\n\t\t\t\tspace.flatten(poly.origin);\n\n\t\t\t\t// lazy backface culling\n\t\t\t\tif (poly.normal && this.backface) {\n\t\t\t\t\tspace.flatten(poly.normal);\n\n\t\t\t\t\tvar originDist = Math.pow(poly.origin.tx, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.origin.ty, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.origin.tz, 2);\n\n\t\t\t\t\tvar normalDist = Math.pow(poly.normal.tx, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.normal.ty, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t + Math.pow(poly.normal.tz, 2);\n\n\t\t\t\t\tif(originDist > normalDist) {\n\t\t\t\t\t\tdrawlist.push(poly);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdrawlist.push(poly);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * A polygon is a connection of points in the shape object. You\n\t\t * should probably try to make them coplanar.\n\t\t */\n\t\tfunction Polygon(points, normal, backface, type, color) {\n\t\t\tthis.points = points;\n\n\t\t\tthis.origin = new Point(0, 0, 0);\n\t\t\tfor(var i = 0; i < this.points.length; i++) {\n\t\t\t\tthis.origin.x += this.points[i].x;\n\t\t\t\tthis.origin.y += this.points[i].y;\n\t\t\t\tthis.origin.z += this.points[i].z;\n\t\t\t}\n\n\t\t\tthis.origin.x /= this.points.length;\n\t\t\tthis.origin.y /= this.points.length;\n\t\t\tthis.origin.z /= this.points.length;\n\n\t\t\tif (normal) {\n\t\t\t\tthis.normal = new Point(this.origin.x + normal.x,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.origin.y + normal.y,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.origin.z + normal.z);\n\t\t\t} else {\n\t\t\t\tthis.normal = null;\n\t\t\t}\n\n\t\t\tthis.backface = backface;\n\t\t\tthis.type = type;\n\t\t\tthis.color = color;\n\t\t}\n\n\t\tPolygon.SOLID = 0;\n\t\tPolygon.WIRE = 1;\n\n\t\t/**\n\t\t * Draws the polygon. Assumes that the points have already been\n\t\t * flattened.\n\t\t */\n\t\tPolygon.prototype.draw = function() {\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(this.points[0].fx, this.points[0].fy);\n\n\t\t\tfor(var i = 0; i < this.points.length; i++) {\n\t\t\t\tctx.lineTo(this.points[i].fx, this.points[i].fy);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\n\t\t\tvar color = this.color;\n\n\t\t\t/*\n\t\t\t// Do lighting here\n\t\t\tlightvector = Math.abs(this.normal.x + this.normal.y);\n\t\t\tif(lightvector > 1) {\n\t\t\t\tlightvector = 1;\n\t\t\t}\n\n\t\t\tcolor[0] = (color[0] * lightvector).toString();\n\t\t\tcolor[1] = (color[1] * lightvector).toString();\n\t\t\tcolor[2] = (color[2] * lightvector).toString();\n\t\t\t*/\n\n\t\t\tif (color.length > 3) {\n\t\t\t\tvar style = [\"rgba(\",\n\t\t\t\t             color[0], \",\",\n\t\t\t\t             color[1], \",\",\n\t\t\t\t             color[2], \",\",\n\t\t\t\t             color[3], \")\"].join(\"\");\n\t\t\t} else {\n\t\t\t\tvar style = [\"rgb(\",\n\t\t\t\t             color[0], \",\",\n\t\t\t\t             color[1], \",\",\n\t\t\t\t             color[2], \")\"].join(\"\");\n\t\t\t}\n\n\t\t\tif (this.type == Polygon.SOLID) {\n\t\t\t\tctx.fillStyle = style;\n\t\t\t\tctx.fill();\n\t\t\t} else if (this.type == Polygon.WIRE) {\n\t\t\t\tctx.strokeStyle = style;\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\t/**\n\t\t * Scene describes the 3D environment\n\t\t */\n\t\tfunction Scene() {\n\t\t\tthis.shapes = {};\n\t\t\tthis.camera = new Point(0, 0, 0);\n\t\t\tthis.cameraTarget = new Point(0, 0, 0);\n\t\t\tthis.cameraRotation = 0;\n\n\t\t\tthis.drawlist = [];\n\t\t}\n\n\t\t/**\n\t\t * Draw the world\n\t\t */\n\t\tScene.prototype.draw = function() {\n\t\t\tspace.push();\n\n\t\t\t// Camera transformation\n\t\t\tspace.translate(\n\t\t\t\t-this.camera.x,\n\t\t\t\t-this.camera.y,\n\t\t\t\t-this.camera.z\n\t\t\t);\n\n\t\t\t// Camera rotation\n\t\t\tvar xdiff = this.cameraTarget.x - this.camera.x;\n\t\t\tvar ydiff = this.cameraTarget.y - this.camera.y;\n\t\t\tvar zdiff = this.cameraTarget.z - this.camera.z;\n\n\t\t\tvar xzdist = Math.sqrt(Math.pow(xdiff, 2) + Math.pow(zdiff, 2));\n\n\t\t\tvar xrot = -Math.atan2(ydiff, xzdist); // up/down rotation\n\t\t\tvar yrot =  Math.atan2(xdiff, zdiff);  // left/right rotation\n\n\t\t\tspace.rotate(xrot, yrot, this.cameraRotation);\n\n\t\t\t// Drawing\n\t\t\tthis.drawlist = [];\n\n\t\t\tfor(var i in this.shapes) {\n\t\t\t\tthis.shapes[i].draw(this.drawlist);\n\t\t\t}\n\n\t\t\t// Depth sorting (warning: this is only enough to drive this demo - feel\n\t\t\t// free to contribute a better system).\n\t\t\tthis.drawlist.sort(function (poly1, poly2) {\n\t\t\t\treturn poly2.origin.tz - poly1.origin.tz;\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < this.drawlist.length; i++) {\n\t\t\t\tthis.drawlist[i].draw();\n\t\t\t}\n\n\t\t\tspace.pop();\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\n\t\tvar count = 0;\n\n\t\tfunction loop() {\n\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\n\t\t\tscene.camera.x = 70*Math.sin(count);\n\t\t\tscene.camera.y = 70;\n\t\t\tscene.camera.z = 70*Math.cos(count);\n\t\t\tscene.cameraRotation = count / 10;\n\n\t\t\tcount += 0.01;\n\t\t\tscene.draw();\n\t\t}\n\n\t\tfunction load() {\n\t\t\t// Init drawing system\n\t\t\tcanvas = document.getElementById(\"cv\");\n\t\t\tctx = canvas.getContext(\"2d\");\n\n\t\t\tcanvasWidth = canvas.width;\n\t\t\tcanvasHeight = canvas.height;\n\t\t\thalfCanvasWidth = canvasWidth * 0.5;\n\t\t\thalfCanvasHeight = canvasHeight * 0.5;\n\n\t\t\t// Init 3D components\n\t\t\tspace = new Space();\n\t\t\tscene = new Scene();\n\n\t\t\t// Create a box shape and add it to the scene\n\t\t\tscene.shapes['box'] = new Shape();\n\t\t\tvar p = scene.shapes['box'].points; // for convenience\n\n\t\t\tp[0] = new Point(-10, -10, -10); // left  bottom front\n\t\t\tp[1] = new Point(10, -10, -10);  // right bottom front\n\t\t\tp[2] = new Point(10, 10, -10);   // right top    front\n\t\t\tp[3] = new Point(-10, 10, -10);  // left  top    front\n\n\t\t\tp[4] = new Point(-10, -10, 10);  // left  bottom back\n\t\t\tp[5] = new Point(10, -10, 10);   // right bottom back\n\t\t\tp[6] = new Point(10, 10, 10);    // right top    back\n\t\t\tp[7] = new Point(-10, 10, 10);   // left  top    back\n\n\t\t\t// Back\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[1], p[2], p[3] ],\n\t\t\t\tnew Point(0, 0, -1),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[255, 0, 0]\n\t\t\t));\n\n\t\t\t// Front\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[4], p[5], p[6], p[7] ],\n\t\t\t\tnew Point(0, 0, 1),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 0, 255]\n\t\t\t));\n\n\t\t\t// Top\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[2], p[3], p[7], p[6] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.WIRE,\n\t\t\t\t[0, 255, 0]\n\t\t\t));\n\n\t\t\t// Transparent Top\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[2], p[3], p[7], p[6] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 255, 0, 0.4]\n\t\t\t));\n\n\t\t\t// Left\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[4], p[7], p[3] ],\n\t\t\t\tnew Point(-1, 0, 0),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[255, 255, 0]\n\t\t\t));\n\n\t\t\t// Right\n\t\t\tscene.shapes['box'].polygons.push(new Polygon(\n\t\t\t\t[ p[1], p[5], p[6], p[2] ],\n\t\t\t\tnew Point(1, 0, 0),\n\t\t\t\ttrue /* double-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[0, 255, 255]\n\t\t\t));\n\n\t\t\t// Create a floor shape and add it to the scene\n\t\t\tscene.shapes['floor'] = new Shape();\n\t\t\tvar p = scene.shapes['floor'].points; // for convenience\n\n\t\t\tp[0]  = new Point(-40, -10, -40);\n\t\t\tp[1]  = new Point(-40, -10,  40);\n\t\t\tp[2] = new Point( 40, -10,  40);\n\t\t\tp[3] = new Point( 40, -10, -40);\n\n\t\t\t// Floor\n\t\t\tscene.shapes['floor'].polygons.push(new Polygon(\n\t\t\t\t[ p[0], p[1], p[2], p[3] ],\n\t\t\t\tnew Point(0, 1, 0),\n\t\t\t\tfalse /* single-sided */,\n\t\t\t\tPolygon.SOLID,\n\t\t\t\t[45, 45, 45]\n\t\t\t));\n\n\t\t\tsetInterval('loop()', 20);\n\t\t}\n\n\t\t/* -------------------------------------------------------------------- */\n\t</script>\n\t<style>\n\tbody {\n\t\tbackground-color:black;\n\t\tmargin:50px;\n\t\ttext-align:center;\n\t}\n\t</style>\n</head>\n<body onload=\"load();\">\n  <canvas id=\"cv\" width=\"400\" height=\"300\"></canvas>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/examples/example3.html",
    "content": "<!DOCTYPE html>\n\n<!--\n\nCopyright 2006 Google Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-->\n\n<html>\n<head>\n<title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<style type=\"text/css\">\n\nbody {\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n}\n\n#image-rotator {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n}\n\n#image-rotator .tool-bar {\n  text-align: center;\n}\n\n.tool-bar button {\n  margin: 0.5em 0.5em 0 0;\n}\n\n#image-rotator img,\n#image-rotator canvas {\n  position: absolute;\n}\n\n</style>\n<script type=\"text/javascript\">\n\nfunction sawFunc(a) {\n  var PI = Math.PI;\n  var PI2 = PI / 2;\n  // make sure a is within 0 to PI\n  a = a % PI;\n  if (a < 0) {\n    a += PI;\n  }\n  if (a < PI2) {\n    return a / PI2;\n  } else {\n    return (PI - a) / PI2;\n  }\n}\n\nfunction easeInEaseOut(t) {\n  var t2 = t * t;\n  return 3 * t2 - 2 * t * t2;\n}\n\nfunction ImageRotator(el, src, w, h) {\n  this.element = el;\n  this.toolBar = el.getElementsByTagName(\"div\")[0];\n  this.canvas = el.getElementsByTagName(\"canvas\")[0];\n  var images = el.getElementsByTagName(\"img\");\n  this.image = images[images.length - 1];\n  var btns = el.getElementsByTagName(\"button\");\n  this.btnCw = btns[0];\n  this.btnCcw = btns[1];\n  var self = this;\n  this.btnCcw.onclick = function () {\n    self.rotateCcw();\n  };\n  this.btnCw.onclick = function () {\n    self.rotateCw();\n  };\n  this.image.onload = function (e) {\n    self.onImageLoad(e);\n  };\n  this.image.onerror = function (e) {\n    self.onImageError(e);\n  };\n  this.image.onabort = function (e) {\n    self.onImageAbort(e);\n  };\n  this.setImage(src, w, h);\n  this.layout();\n\n  var onResize = function () {\n    self.layout();\n  };\n  var onLoad = function () {\n    self.onWindowLoad();\n  };\n  if (window.addEventListener) {\n    window.addEventListener(\"resize\", onResize, false);\n    window.addEventListener(\"load\", onLoad, false);\n  } else if (window.attachEvent) {\n    window.attachEvent(\"onresize\", onResize);\n    window.attachEvent(\"onload\", onLoad);\n  }\n}\n\nImageRotator.prototype = {\n  getLoaded: function () {\n    return this.imageLoaded && this.windowLoaded;\n  },\n  setImage: function (src, w, h) {\n    this.imageLoaded = false;\n    this.image.src = src;\n    this.imageWidth = w;\n    this.imageHeight = h;\n  },\n\n  layout: function () {\n    var PI2 = Math.PI / 2;\n    var h = this.element.clientHeight;\n    var w = this.element.clientWidth;\n    var th = this.toolBar.offsetHeight;\n    h -= this.toolBar.offsetHeight;\n    if (!this.ctx || !this.getLoaded()) {\n      this.btnCw.disabled = true;\n      this.btnCcw.disabled = true;\n      this.canvas.style.display = \"none\";\n      this.image.style.display = \"block\";\n      var ratio = Math.min(w / this.imageWidth, h / this.imageHeight, 1);\n      var imgW = this.imageWidth * ratio;\n      var imgH = this.imageHeight * ratio;\n      var y = th + (h - imgH) / 2;\n      var x = (w - imgW) / 2;\n      this.image.style.left = Math.round(x) + \"px\";\n      this.image.style.top = Math.round(y) + \"px\";\n      this.image.style.width = Math.round(imgW) + \"px\";\n      this.image.style.height = Math.round(imgH) + \"px\";\n    } else {\n      this.btnCw.disabled = this.isAnimating_;\n      this.btnCcw.disabled = this.isAnimating_;\n      this.canvas.style.display = \"block\";\n      this.image.style.display = \"none\";\n\n      this.canvas.style.left = 0 + \"px\";\n      this.canvas.style.top = th + \"px\";\n      this.canvas.style.width = w + \"px\";\n      this.canvas.width = w;\n      this.canvas.style.height = h + \"px\";\n      this.canvas.height = h;\n\n      this.ctx.save();\n      this.ctx.clearRect(0, 0, w, h);\n      this.ctx.translate(w / 2, h / 2);\n      this.ctx.rotate(this.rotation);\n      // 0 -> 1, sin(0) = 0\n      // PI / 2 -> H / W, sin(PI/2) = 1\n\n      // sin(PI/2) = 1 -> limit factor is w and imgH\n\n      var iw = this.imageWidth;\n      var ih = this.imageHeight;\n      var scale;\n      if (iw <= w && iw <= h && ih <= h && ih <= w) {\n        scale = 1;\n      } else {\n        var sinr = sawFunc(this.rotation);\n        var cosr = sawFunc(this.rotation + PI2);\n        var ratio1 = sinr * Math.min(w / ih, h / iw);\n        var ratio2 = cosr * Math.min(w / iw, h / ih);\n        var ratio = Math.min(1, ratio1 + ratio2);\n        scale = ratio;\n      }\n      this.ctx.scale(scale, scale);\n      this.ctx.translate(-iw / 2, -ih / 2);\n      this.ctx.drawImage(this.image, 0, 0, iw, ih);\n      this.ctx.restore();\n    }\n  },\n\n  rotation: 0,\n  animationDuration: 500,\n\n  rotateCcw: function () {\n    if (!this.isAnimating_) {\n      this.startTime_ = (new Date).valueOf();\n      this.currentAngle_ = this.rotation;\n      this.deltaAngle_ = Math.PI / 2;\n      this.isAnimating_ = true;\n      this.animCounter_ = 0;\n      this.rotate_();\n    }\n  },\n\n  rotateCw: function () {\n    if (!this.isAnimating_) {\n      this.startTime_ = (new Date).valueOf();\n      this.currentAngle_ = this.rotation;\n      this.deltaAngle_ = -Math.PI / 2;\n      this.isAnimating_ = true;\n      this.animCounter_ = 0;\n      this.rotate_();\n    }\n  },\n\n  rotate_: function () {\n    if (this.isAnimating_) {\n      var t = easeInEaseOut(Math.min(1, (new Date - this.startTime_) /\n                            this.animationDuration));\n      this.rotation = t * this.deltaAngle_ + this.currentAngle_;\n      if (t < 1) {\n        var self = this;\n        window.setTimeout(function () {\n          self.rotate_();\n        }, 10);\n      } else {\n        this.isAnimating_ = false;\n      }\n      this.layout();\n    }\n  },\n\n  onImageLoad: function (e) {\n    this.imageLoaded = true;\n    this.initCanvas();\n  },\n  onImageError: function (e) {\n    this.imageLoaded = false;\n  },\n  onImageAbort: function (e) {\n    this.imageLoaded = false;\n  },\n  onWindowLoad: function (e) {\n    this.windowLoaded = true;\n    this.initCanvas();\n  },\n\n  initCanvas: function () {\n    if (!this.ctx && this.getLoaded()) {\n      // IE recreates the element?\n      this.canvas = this.element.getElementsByTagName(\"canvas\")[0];\n      this.ctx = this.canvas.getContext(\"2d\");\n\n      if (!this.ctx) {\n        return;\n      }\n      this.layout();\n    }\n  }\n};\n\n</script>\n</head>\n<body>\n\n<div id=\"image-rotator\">\n  <div class=\"tool-bar\">\n    <button>Rotate Left</button><button>Rotate Right</button>\n  </div>\n  <canvas id=\"c\"></canvas>\n  <img src=\"\" alt=\"\">\n</div>\n<script type=\"text/javascript\">\n  new ImageRotator(document.getElementById(\"image-rotator\"),\n                   \"ff.jpg\", 608, 380);\n</script>\n\n</body>\n</html>\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/excanvas.compiled.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\ndocument.createElement(\"canvas\").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement(\"canvas\");a.attachEvent(\"onreadystatechange\",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||\nb.namespaces.add(\"g_vml_\",\"urn:schemas-microsoft-com:vml\",\"#default#VML\");b.namespaces.g_o_||b.namespaces.add(\"g_o_\",\"urn:schemas-microsoft-com:office:office\",\"#default#VML\");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id=\"ex_canvas_\";a.cssText=\"canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:*{behavior:url(#default#VML)}g_o_\\\\:*{behavior:url(#default#VML)}\"}var c=b.getElementsByTagName(\"canvas\"),d=0;for(;d<c.length;d++)this.initElement(c[d])},\ninitElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML=\"\";b.attachEvent(\"onpropertychange\",Z);b.attachEvent(\"onresize\",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+\"px\";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+\"px\";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case \"width\":a.style.width=a.attributes.width.nodeValue+\"px\";a.getContext().clearRect();\nbreak;case \"height\":a.style.height=a.attributes.height.nodeValue+\"px\";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+\"px\";a.firstChild.style.height=a.clientHeight+\"px\"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=\nh}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)==\"rgb\"){var d=b.indexOf(\"(\",3),f=b.indexOf(\")\",d+\n1),h=b.substring(d+1,f).split(\",\");a=\"#\";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)==\"a\")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case \"butt\":return\"flat\";case \"round\":return\"round\";case \"square\":default:return\"square\"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;\nvar a=b.ownerDocument.createElement(\"div\");a.style.width=b.clientWidth+\"px\";a.style.height=b.clientHeight+\"px\";a.style.overflow=\"hidden\";a.style.position=\"absolute\";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=\"\"};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"moveTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};\ni.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:\"lineTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:\"bezierCurveTo\",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+\n0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?\"at\":\"wa\",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,\na);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,\na,c,d){var f=new D(\"gradient\");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D(\"gradientradial\");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width=\"auto\";b.runtimeStyle.height=\"auto\";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==\n5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error(\"Invalid number of arguments\");var q=this.getCoords_(a,c),t=[];t.push(\" <g_vml_:group\",' coordsize=\"',k*10,\",\",k*10,'\"',' coordorigin=\"0,0\"',' style=\"width:',10,\"px;height:\",10,\"px;position:absolute;\");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push(\"M11=\",\nthis.m_[0][0],\",\",\"M12=\",this.m_[1][0],\",\",\"M21=\",this.m_[0][1],\",\",\"M22=\",this.m_[1][1],\",\",\"Dx=\",j(q.x/k),\",\",\"Dy=\",j(q.y/k),\"\");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push(\"padding:0 \",j(p.x/k),\"px \",j(p.y/k),\"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(\",E.join(\"\"),\", sizingmethod='clip');\")}else t.push(\"top:\",j(q.y/k),\"px;left:\",j(q.x/k),\"px;\");t.push(' \">','<g_vml_:image src=\"',b.src,\n'\"',' style=\"width:',k*d,\"px;\",\" height:\",k*f,'px;\"',' cropleft=\"',h/n,'\"',' croptop=\"',g/o,'\"',' cropright=\"',(n-h-l)/n,'\"',' cropbottom=\"',(o-g-e)/o,'\"',\" />\",\"</g_vml_:group>\");this.element_.insertAdjacentHTML(\"BeforeEnd\",t.join(\"\"))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push(\"<g_vml_:shape\",' filled=\"',!!b,'\"',' style=\"position:absolute;width:',10,\"px;height:\",10,'px;\"',' coordorigin=\"0 0\" coordsize=\"',k*10,\" \",k*10,'\"',' stroked=\"',\n!b,'\"',' path=\"');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case \"moveTo\":a.push(\" m \",j(e.x),\",\",j(e.y));break;case \"lineTo\":a.push(\" l \",j(e.x),\",\",j(e.y));break;case \"close\":a.push(\" x \");e=null;break;case \"bezierCurveTo\":a.push(\" c \",j(e.cp1x),\",\",j(e.cp1y),\",\",j(e.cp2x),\",\",j(e.cp2y),\",\",j(e.x),\",\",j(e.y));break;case \"at\":case \"wa\":a.push(\" \",e.type,\" \",j(e.x-this.arcScaleX_*e.radius),\",\",j(e.y-this.arcScaleY_*e.radius),\n\" \",j(e.x+this.arcScaleX_*e.radius),\",\",j(e.y+this.arcScaleY_*e.radius),\" \",j(e.xStart),\",\",j(e.yStart),\" \",j(e.xEnd),\",\",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' \">');if(b)if(typeof this.fillStyle==\"object\"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_==\"gradient\"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),\nz=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+\no+\" \"+T.color)}a.push('<g_vml_:fill type=\"',m.type_,'\"',' method=\"none\" focus=\"100%\"',' color=\"',da,'\"',' color2=\"',ea,'\"',' colors=\"',S.join(\",\"),'\"',' opacity=\"',ga,'\"',' g_o_:opacity2=\"',fa,'\"',' angle=\"',r,'\"',' focusposition=\"',n.x,\",\",n.y,'\" />')}else a.push('<g_vml_:fill color=\"',d,'\" opacity=\"',f,'\" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push(\"<g_vml_:stroke\",' opacity=\"',f,'\"',' joinstyle=\"',this.lineJoin,'\"',' miterlimit=\"',this.miterLimit,'\"',' endcap=\"',aa(this.lineCap),\n'\"',' weight=\"',K,'px\"',' color=\"',d,'\" />')}a.push(\"</g_vml_:shape>\");this.element_.insertAdjacentHTML(\"beforeEnd\",a.join(\"\"))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:\"close\"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),\nthis);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,\n0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=\nM;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n// Known Issues:\n//\n// * Patterns are not implemented.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      if (/MSIE/.test(navigator.userAgent) && !window.opera) {\n        var doc = opt_doc || document;\n        // Create a dummy element so that IE will allow canvas elements to be\n        // recognized.\n        doc.createElement('canvas');\n        doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n      }\n    },\n\n    init_: function(doc) {\n      // create xmlns\n      if (!doc.namespaces['g_vml_']) {\n        doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',\n                           '#default#VML');\n\n      }\n      if (!doc.namespaces['g_o_']) {\n        doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',\n                           '#default#VML');\n      }\n\n      // Setup default CSS.  Only add one style sheet per document\n      if (!doc.styleSheets['ex_canvas_']) {\n        var ss = doc.createStyleSheet();\n        ss.owningElement.id = 'ex_canvas_';\n        ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n            // default size is 300x150 in Gecko and Opera\n            'text-align:left;width:300px;height:150px}' +\n            'g_vml_\\\\:*{behavior:url(#default#VML)}' +\n            'g_o_\\\\:*{behavior:url(#default#VML)}';\n\n      }\n\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n\n        el.getContext = getContext;\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n      case 'height':\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.getContext().clearRect();\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var dec2hex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  function processStyle(styleString) {\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.substring(0, 3) == 'rgb') {\n      var start = styleString.indexOf('(', 3);\n      var end = styleString.indexOf(')', start + 1);\n      var guts = styleString.substring(start + 1, end).split(',');\n\n      str = '#';\n      for (var i = 0; i < 3; i++) {\n        str += dec2hex[Number(guts[i])];\n      }\n\n      if (guts.length == 4 && styleString.substr(3, 1) == 'a') {\n        alpha = guts[3];\n      }\n    } else {\n      str = styleString;\n    }\n\n    return {color: str, alpha: alpha};\n  }\n\n  function processLineCap(lineCap) {\n    switch (lineCap) {\n      case 'butt':\n        return 'flat';\n      case 'round':\n        return 'round';\n      case 'square':\n      default:\n        return 'square';\n    }\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} surfaceElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(surfaceElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.canvas = surfaceElement;\n\n    var el = surfaceElement.ownerDocument.createElement('div');\n    el.style.width =  surfaceElement.clientWidth + 'px';\n    el.style.height = surfaceElement.clientHeight + 'px';\n    el.style.overflow = 'hidden';\n    el.style.position = 'absolute';\n    surfaceElement.appendChild(el);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = this.getCoords_(aX, aY);\n    var cp1 = this.getCoords_(aCP1x, aCP1y);\n    var cp2 = this.getCoords_(aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = this.getCoords_(aCPx, aCPy);\n    var p = this.getCoords_(aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = this.getCoords_(aX, aY);\n    var pStart = this.getCoords_(xStart, yStart);\n    var pEnd = this.getCoords_(xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = this.getCoords_(dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = this.getCoords_(dx + dw, dy);\n      var c3 = this.getCoords_(dx, dy + dh);\n      var c4 = this.getCoords_(dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\")\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px;\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd',\n                                    vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var lineStr = [];\n    var lineOpen = false;\n    var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * this.globalAlpha;\n\n    var W = 10;\n    var H = 10;\n\n    lineStr.push('<g_vml_:shape',\n                 ' filled=\"', !!aFill, '\"',\n                 ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                 ' coordorigin=\"0 0\" coordsize=\"', Z * W, ' ', Z * H, '\"',\n                 ' stroked=\"', !aFill, '\"',\n                 ' path=\"');\n\n    var newSeq = false;\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var i = 0; i < this.currentPath_.length; i++) {\n      var p = this.currentPath_[i];\n      var c;\n\n      switch (p.type) {\n        case 'moveTo':\n          c = p;\n          lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'lineTo':\n          lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n          break;\n        case 'close':\n          lineStr.push(' x ');\n          p = null;\n          break;\n        case 'bezierCurveTo':\n          lineStr.push(' c ',\n                       mr(p.cp1x), ',', mr(p.cp1y), ',',\n                       mr(p.cp2x), ',', mr(p.cp2y), ',',\n                       mr(p.x), ',', mr(p.y));\n          break;\n        case 'at':\n        case 'wa':\n          lineStr.push(' ', p.type, ' ',\n                       mr(p.x - this.arcScaleX_ * p.radius), ',',\n                       mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                       mr(p.x + this.arcScaleX_ * p.radius), ',',\n                       mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                       mr(p.xStart), ',', mr(p.yStart), ' ',\n                       mr(p.xEnd), ',', mr(p.yEnd));\n          break;\n      }\n\n\n      // TODO: Following is broken for curves due to\n      //       move to proper paths.\n\n      // Figure out dimensions so we can do gradient fills\n      // properly\n      if (p) {\n        if (min.x == null || p.x < min.x) {\n          min.x = p.x;\n        }\n        if (max.x == null || p.x > max.x) {\n          max.x = p.x;\n        }\n        if (min.y == null || p.y < min.y) {\n          min.y = p.y;\n        }\n        if (max.y == null || p.y > max.y) {\n          max.y = p.y;\n        }\n      }\n    }\n    lineStr.push(' \">');\n\n    if (!aFill) {\n      var lineWidth = this.lineScale_ * this.lineWidth;\n\n      // VML cannot correctly render a line if the width is less than 1px.\n      // In that case, we dilute the color to make the line look thinner.\n      if (lineWidth < 1) {\n        opacity *= lineWidth;\n      }\n\n      lineStr.push(\n        '<g_vml_:stroke',\n        ' opacity=\"', opacity, '\"',\n        ' joinstyle=\"', this.lineJoin, '\"',\n        ' miterlimit=\"', this.miterLimit, '\"',\n        ' endcap=\"', processLineCap(this.lineCap), '\"',\n        ' weight=\"', lineWidth, 'px\"',\n        ' color=\"', color, '\" />'\n      );\n    } else if (typeof this.fillStyle == 'object') {\n      var fillStyle = this.fillStyle;\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / this.arcScaleX_;\n        var y0 = fillStyle.y0_ / this.arcScaleY_;\n        var x1 = fillStyle.x1_ / this.arcScaleX_;\n        var y1 = fillStyle.y1_ / this.arcScaleY_;\n        var p0 = this.getCoords_(x0, y0);\n        var p1 = this.getCoords_(x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);\n        var width  = max.x - min.x;\n        var height = max.y - min.y;\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= this.arcScaleX_ * Z;\n        height /= this.arcScaleY_ * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * this.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * this.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else {\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n\n    lineStr.push('</g_vml_:shape>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  }\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  /**\n   * @private\n   */\n  contextPrototype.getCoords_ = function(aX, aY) {\n    var m = this.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    }\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    copyState(this.aStack_.pop(), this);\n    this.m_ = this.mStack_.pop();\n  };\n\n  function matrixIsFinite(m) {\n    for (var j = 0; j < 3; j++) {\n      for (var k = 0; k < 2; k++) {\n        if (!isFinite(m[j][k]) || isNaN(m[j][k])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function() {\n    return new CanvasPattern_;\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_() {}\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n\n})();\n\n} // if\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/arc.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Arc Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.beginPath();\n  ctx.arc(25, 25, 20, 0, Math.PI, false);\n  ctx.stroke();\n\n  ctx.save();\n  ctx.scale(0.5, 0.5);\n  ctx.beginPath();\n  ctx.arc(75, 25, 20, 0, Math.PI * 2, false);\n  ctx.stroke();\n  ctx.restore();\n\n  ctx.beginPath();\n  ctx.arc(25, 75, 20, 0, Math.PI, true);\n  ctx.stroke();\n\n  ctx.beginPath();\n  ctx.arc(75, 75, 20, 0, Math.PI * 2, true);\n  ctx.stroke();\n\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=100></canvas>\n\n<p>This tests that drawing arches work in the same way in different\nbrowsers.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/clearpath.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Clear path Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  // Need to test  clearRect, strokeRect, fillRect\n  ctx.beginPath();\n  ctx.moveTo(0, 50);\n  ctx.lineTo(50, 100);\n\n  ctx.strokeRect(100.5, 125.5, 49, 49);\n\n  ctx.lineTo(100, 50);\n\n  ctx.fillRect(50, 125, 50, 50);\n\n  ctx.lineTo(50, 0);\n\n  // clearRect is not correctly implmented in ExCanvas but for this test its\n  // current behavior is enough.\n  ctx.clearRect(50, 125, 100, 50);\n\n  ctx.lineTo(0, 50);\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests the clearing of the path. You should only see a diamond shape\nabove.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/drawimage.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Overflow Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  var img = document.images[0];\n\n  ctx.rotate(Math.PI / 8);\n  ctx.drawImage(img, 50, 50);\n\n  img.style.display = 'none';\n\n};\n\n</script>\n</head>\n<body>\n\n<img src=\"../examples/ff.jpg\">\n\n<canvas id=c width=200 height=200></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Gradient Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n  var g = ctx.createLinearGradient(0, 0, 300, 0);\n  g.addColorStop(0, '#000');\n  g.addColorStop(1 / 7, '#00f');\n  g.addColorStop(2 / 7, '#0f0');\n  g.addColorStop(3 / 7, '#0ff');\n  g.addColorStop(4 / 7, '#f00');\n  g.addColorStop(5 / 7, '#f0f');\n  g.addColorStop(6 / 7, '#ff0');\n  g.addColorStop(1, '#fff');\n  ctx.fillStyle = g;\n  ctx.fillRect(0, 0, 300, 200);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=300 height=200></canvas>\n\n<p>This tests gradients</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/gradient2.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Gradient Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  var g1 = ctx.createLinearGradient(0, 0, 300, 200);\n  g1.addColorStop(0.0, 'rgba(0, 255, 0, 0.0)');\n  g1.addColorStop(1.0, 'rgba(0, 255, 0, 1.0)');\n\n  var g2 = ctx.createLinearGradient(0, 0, 300, 200);\n  g2.addColorStop(0.0, 'rgba(0, 255, 0, 1.0)');\n  // VML Bug\n  g2.addColorStop(1.0, 'rgba(0, 0, 0, 0.0)');\n  ctx.fillStyle = g1;\n  ctx.fillRect(0, 0, 300, 100);\n  ctx.fillStyle = g2;\n  ctx.fillRect(0, 100, 300, 100);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=300 height=200></canvas>\n\n<p>This tests gradients</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/linewidth.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Line Width Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.strokeStyle = 'black';\n  ctx.lineWidth = 1;\n  for (var i = 0; i < 100; i++) {\n    ctx.beginPath();\n    ctx.moveTo(49 + i / 100, i);\n    ctx.lineTo(49 + i / 100, i + 1);\n    ctx.closePath();\n    ctx.stroke();\n  }\n\n  for (var i = 0; i < 100; i++) {\n    ctx.beginPath();\n    ctx.moveTo(i, 49 + i / 100);\n    ctx.lineTo(i + 1, 49 + i / 100);\n    ctx.closePath();\n    ctx.stroke();\n  }\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=100 height=100></canvas>\n\n<p>This tests that lines work in the same way in different browsers when you are\nusing sub pixel coordinates.</p>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/overflow.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Overflow Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\t\n  ctx.fillStyle = 'blue';\n  ctx.fillRect(-50, -50, 100, 100);\n  \n  ctx.fillStyle = 'green';\n  ctx.fillRect(50, 50, 100, 100);\n  \n  ctx.strokeStyle = 'black';\n  ctx.strokeRect(0, 0, 100, 100);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=100 height=100></canvas>\n\n<p>This tests if content gets cropped if painting outside the canvas.</p>\n\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/quadraticcurve.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Quadratic Curve Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.save();\n\n  ctx.strokeStyle = 'black';\n  ctx.lineWidth = 1;\n  ctx.beginPath();\n  ctx.moveTo(50, 50);\n  ctx.quadraticCurveTo(0, 0, 25, 75);\n  ctx.quadraticCurveTo(50, 0, 50, 50);\n  ctx.stroke();\n\n  ctx.restore();\n\n  // Same with some scaling\n  ctx.save();\n\n  ctx.translate(-56, -24);\n  ctx.scale(3.5, 1.5);\n  ctx.strokeStyle = '#ddd';\n  ctx.lineWidth = 1;\n  ctx.beginPath();\n  ctx.moveTo(50, 50);\n  ctx.quadraticCurveTo(0, 0, 25, 75);\n  ctx.quadraticCurveTo(50, 0, 50, 50);\n  ctx.stroke();\n\n  ctx.restore();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests that drawing quadratic curves work in the same way in different\nbrowsers.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/resizing.html",
    "content": "<html>\n<head>\n  <title>ExplorerCanvas Text Case</title>\n  <!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n  <script>\n    // Safari is known not to handle resizing well, expect this to\n    // compare to Firefox\n\n    var cv, ctx, size = 80;\n    var img = new Image();\n    img.src = \"../examples/ff.jpg\";\n\n    function a() {\n      cv = document.getElementById(\"aa\");\n      ctx = cv.getContext(\"2d\");\n\n      l();\n    }\n\n    function l() {\n      size = (size + 1) % 800;\n      cv.width = Number(size + 200);\n      cv.height = Number((size + 200) / 2);\n\n      // Firefox autoclears the canvas at this point\n\n      ctx.save();\n      ctx.translate(50, 50);\n      ctx.scale(0.1, 0.1);\n      ctx.rotate(size/800 * Math.PI*8);\n      ctx.drawImage(img, 0, -75);\n      ctx.restore();\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.moveTo(0, 0);\n      ctx.lineTo(cv.width, cv.height);\n      ctx.moveTo(20, 20);\n      ctx.lineTo(80, 20);\n      ctx.lineTo(80, 80);\n      ctx.lineTo(20, 80);\n      ctx.stroke();\n      ctx.closePath();\n      ctx.restore();\n\n      ctx.save();\n      ctx.beginPath();\n      ctx.scale(size / 200, size / 200);\n      ctx.arc(100, 50, 20, 0, Math.PI, true);\n      ctx.fill();\n      ctx.restore();\n\n      setTimeout(l, 50);\n    }\n  </script>\n  <style>\n    canvas {\n      background-color:#eee;\n    }\n  </style>\n</head>\n<body onload=\"a();\">\n<canvas id=\"aa\" width=\"200\" height=\"200\">Fallback <b>content</b> markup</canvas>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/saverestorepath.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Save/restore path Test</title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  // Need to test  clearRect, strokeRect, fillRect\n  ctx.beginPath();\n  ctx.moveTo(0, 50);\n  ctx.lineTo(50, 100);\n\n  ctx.save();\n  ctx.lineTo(100, 50);\n  ctx.restore();\n\n  ctx.save();\n  ctx.lineTo(50, 0);\n  ctx.restore();\n\n  ctx.save();\n  ctx.lineTo(0, 50);\n  ctx.restore();\n\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n<p>This tests ensures that save/restore does not do anything to the current\npath. You should see a diamond shape above.</p>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-scale-rotate.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Stroke Scale</title>\n<style>\n\nbody {\n  text-align: center\n}\n\ncanvas {\n  background: #eee;\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\n// draw a star\nfunction drawStar (ctx, r){\n  ctx.save();\n\n  ctx.beginPath();\n  ctx.rotate(-Math.PI / 10);\n  ctx.scale(r, r);\n  ctx.moveTo(1, 0);\n  ctx.lineWidth = ctx.lineWidth / r;\n\n  for (var i = 0; i < 9; i++) {\n    ctx.rotate(Math.PI / 5);\n    if (i % 2 == 0) {\n      ctx.lineTo(0.3819653016466596, 0);\n    } else {\n      ctx.lineTo(1, 0);\n    }\n  }\n  ctx.closePath();\n  ctx.fill();\n  ctx.stroke();\n\n  ctx.restore();\n}\n\nwindow.onload = function() {\n  var ctx = document.getElementById('c').getContext('2d');\n\n  ctx.save();\n\n  ctx.translate(100.5, 100);\n  ctx.lineWidth = 1;\n\n  ctx.beginPath();\n  ctx.moveTo(0, 0);\n  ctx.lineTo(50, 0);\n  ctx.scale(1, 2);\n  ctx.rotate(Math.PI / 2);\n  ctx.lineTo(25, -50)\n  ctx.rotate(Math.PI / 2);\n  ctx.lineTo(0, -25)\n  ctx.scale(1, 2);\n  ctx.closePath();\n  ctx.stroke();\n\n  ctx.restore();\n\n  ctx.translate(50, 50);\n\n  ctx.fillStyle = 'white';\n  ctx.strokeStyle = 'blue';\n  drawStar(ctx, 20);\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=500 height=500></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/excanvas/testcases/stroke-should-not-close-path.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title></title>\n<style>\n\nbody {\n  text-align: center\n}\n\n</style>\n<!--[if IE]><script type=\"text/javascript\" src=\"../excanvas.js\"></script><![endif]-->\n<script>\n\nwindow.onload = function() {\n\n  var canvas = document.getElementById(\"c\");\n  var ctx = canvas.getContext(\"2d\");\n\n  ctx.fillStyle = \"#ccc\";\n  ctx.strokeStyle = \"#000\";\n\n  ctx.beginPath();\n  ctx.moveTo(30, 30);\n  ctx.lineTo(150, 150);\n  ctx.bezierCurveTo(60, 70, 60, 70, 70, 150);\n  ctx.fill();\n  ctx.stroke();\n};\n\n</script>\n</head>\n<body>\n\n<canvas id=c width=200 height=200></canvas>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-apollo.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\n\\r]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[!-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-clj.js",
    "content": "/*\n Copyright (C) 2011 Google Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^[([{]+/,a,\"([{\"],[\"clo\",/^[)\\]}]+/,a,\")]}\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\\b/,a],\n[\"typ\",/^:[\\dA-Za-z-]+/]]),[\"clj\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-css.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\f\\r ]+/,null,\" \\t\\r\\n\f\"]],[[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*\"/,null],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*'/,null],[\"lang-css-str\",/^url\\(([^\"')]*)\\)/i],[\"kwd\",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\\w-]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*)\\s*:/i],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],[\"com\",\n/^(?:<\\!--|--\\>)/],[\"lit\",/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[\"lit\",/^#[\\da-f]{3,6}/i],[\"pln\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i],[\"pun\",/^[^\\s\\w\"']+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"kwd\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"str\",/^[^\"')]+/]]),[\"css-str\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-go.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"pln\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])+(?:'|$)|`[^`]*(?:`|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\/\\*[\\S\\s]*?\\*\\/)/],[\"pln\",/^(?:[^\"'/`]|\\/(?![*/]))+/]]),[\"go\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-hs.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\u000b\f\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])'?/,null,\"'\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^(?:--+[^\\n\\f\\r]*|{-(?:[^-]|-+[^}-])*-})/],[\"kwd\",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\\d'A-Za-z]|$)/,\nnull],[\"pln\",/^(?:[A-Z][\\w']*\\.)*[A-Za-z][\\w']*/],[\"pun\",/^[^\\d\\t-\\r \"'A-Za-z]+/]]),[\"hs\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lisp.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,a,\"(\"],[\"clo\",/^\\)+/,a,\")\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,a],\n[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"cl\",\"el\",\"lisp\",\"scm\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-lua.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^--(?:\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)|[^\\n\\r]*)/],[\"str\",/^\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)/],[\"kwd\",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,null],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],\n[\"pln\",/^[_a-z]\\w*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xa0][^\\w\\t\\n\\r \"'+=\\xa0-]*/]]),[\"lua\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-ml.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xa0]+(?:[$_a-z][\\w']*|``[^\\t\\n\\r`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\(\\*[\\S\\s]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^(?:[_a-z][\\w']*[!#?]?|``[^\\t\\n\\r`]*(?:``|$))/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0]+/]]),[\"fs\",\"ml\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-n.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*'|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,a,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\xa0\"]],[[\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,a],[\"str\",/^<#[^#>]*(?:#>|$)/,a],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,a],[\"com\",/^\\/\\/[^\\n\\r]*/,a],[\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,\na],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\na],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,a],[\"lit\",/^@[$_a-z][\\w$@]*/i,a],[\"typ\",/^@[A-Z]+[a-z][\\w$@]*/,a],[\"pln\",/^'?[$_a-z][\\w$@]*/i,a],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w\"-$'./@`]*/,a]]),[\"n\",\"nemerle\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-proto.js",
    "content": "PR.registerLangHandler(PR.sourceDecorator({keywords:\"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true\",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\\b/,cStyleComments:!0}),[\"proto\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-scala.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^\"(?:\"\"(?:\"\"?(?!\")|[^\"\\\\]|\\\\.)*\"{0,3}|(?:[^\\n\\r\"\\\\]|\\\\.)*\"?)/,null,'\"'],[\"lit\",/^`(?:[^\\n\\r\\\\`]|\\\\.)*`?/,null,\"`\"],[\"pun\",/^[!#%&(--:-@[-^{-~]+/,null,\"!#%&()*+,-:;<=>?@[\\\\]^{|}~\"]],[[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\(?:'|[^\\n\\r']+))'/],[\"lit\",/^'[$A-Z_a-z][\\w$]*(?![\\w$'])/],[\"kwd\",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\\b/],\n[\"lit\",/^(?:true|false|null|this)\\b/],[\"lit\",/^(?:0(?:[0-7]+|x[\\da-f]+)l?|(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:e[+-]?\\d+)?f?|l?)|\\\\.\\d+(?:e[+-]?\\d+)?f?)/i],[\"typ\",/^[$_]*[A-Z][\\d$A-Z_]*[a-z][\\w$]*/],[\"pln\",/^[$A-Z_a-z][\\w$]*/],[\"com\",/^\\/(?:\\/.*|\\*(?:\\/|\\**[^*/])*(?:\\*+\\/?)?)/],[\"pun\",/^(?:\\.+|\\/)/]]),[\"scala\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-sql.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,null,\"\\\"'\"]],[[\"com\",/^(?:--[^\\n\\r]*|\\/\\*[\\S\\s]*?(?:\\*\\/|$))/],[\"kwd\",/^(?:add|all|alter|and|any|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|merge|national|nocheck|nonclustered|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|percent|plan|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rule|save|schema|select|session_user|set|setuser|shutdown|some|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|union|unique|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|writetext)(?=[^\\w-]|$)/i,\nnull],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^[_a-z][\\w-]*/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'+\\xa0-]*/]]),[\"sql\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-tex.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[()=[\\]{}]+/]]),[\"latex\",\"tex\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vb.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\xa0  \"],[\"str\",/^(?:[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})(?:[\"\\u201c\\u201d]c|$)|[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})*(?:[\"\\u201c\\u201d]|$))/i,null,'\"“”'],[\"com\",/^['\\u2018\\u2019].*/,null,\"'‘’\"]],[[\"kwd\",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\\b/i,\nnull],[\"com\",/^rem.*/i],[\"lit\",/^(?:true\\b|false\\b|nothing\\b|\\d+(?:e[+-]?\\d+[dfr]?|[dfilrs])?|(?:&h[\\da-f]+|&o[0-7]+)[ils]?|\\d*\\.\\d+(?:e[+-]?\\d+)?[dfr]?|#\\s+(?:\\d+[/-]\\d+[/-]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*|\\[(?:[a-z]|_\\w)\\w*])/i],[\"pun\",/^[^\\w\\t\\n\\r \"'[\\]\\xa0\\u2018\\u2019\\u201c\\u201d\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|])/]]),[\"vb\",\"vbs\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-vhdl.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\xa0\"]],[[\"str\",/^(?:[box]?\"(?:[^\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\n\\r]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\nnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w.\\\\]+#(?:[+-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:e[+-]?\\d+(?:_\\d+)*)?)/i],\n[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'\\xa0-]*/]]),[\"vhdl\",\"vhd\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-wiki.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\d\\t a-gi-z\\xa0]+/,null,\"\\t \\xa0abcdefgijklmnopqrstuvwxyz0123456789\"],[\"pun\",/^[*=[\\]^~]+/,null,\"=*~^[]\"]],[[\"lang-wiki.meta\",/(?:^^|\\r\\n?|\\n)(#[a-z]+)\\b/],[\"lit\",/^[A-Z][a-z][\\da-z]+[A-Z][a-z][^\\W_]+\\b/],[\"lang-\",/^{{{([\\S\\s]+?)}}}/],[\"lang-\",/^`([^\\n\\r`]+)`/],[\"str\",/^https?:\\/\\/[^\\s#/?]*(?:\\/[^\\s#?]*)?(?:\\?[^\\s#]*)?(?:#\\S*)?/i],[\"pln\",/^(?:\\r\\n|[\\S\\s])[^\\n\\r#*=A-[^`h{~]*/]]),[\"wiki\"]);\nPR.registerLangHandler(PR.createSimpleLexer([[\"kwd\",/^#[a-z]+/i,null,\"#\"]],[]),[\"wiki.meta\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-xq.js",
    "content": "PR.registerLangHandler(PR.createSimpleLexer([[\"var pln\",/^\\$[\\w-]+/,null,\"$\"]],[[\"pln\",/^[\\s=][<>][\\s=]/],[\"lit\",/^@[\\w-]+/],[\"tag\",/^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"com\",/^\\(:[\\S\\s]*?:\\)/],[\"pln\",/^[(),/;[\\]{}]$/],[\"str\",/^(?:\"(?:[^\"\\\\{]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\{]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"],[\"kwd\",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\\b/],\n[\"typ\",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\\b/,null],[\"fun pln\",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\\b/],\n[\"pln\",/^[\\w:-]+/],[\"pln\",/^[\\t\\n\\r \\xa0]+/]]),[\"xq\",\"xquery\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/lang-yaml.js",
    "content": "var a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:>?|]+/,a,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^\\n\\r#]+/,a,\"%\"],[\"typ\",/^&\\S+/,a,\"&\"],[\"typ\",/^!\\S*/,a,\"!\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,a,\"'\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\n\\r]|$)/],[\"pun\",/^-/],[\"kwd\",/^\\w+:[\\n\\r ]/],[\"pln\",/^\\w+/]]),[\"yaml\",\"yml\"]);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.css",
    "content": ".pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/google-code-prettify/prettify.js",
    "content": "var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;\n(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:\"0\"<=b&&b<=\"7\"?parseInt(a.substring(1),8):b===\"u\"||b===\"x\"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?\"\\\\x0\":\"\\\\x\")+a.toString(16);a=String.fromCharCode(a);if(a===\"\\\\\"||a===\"-\"||a===\"[\"||a===\"]\")a=\"\\\\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\S\\s]|[^\\\\]/g),a=\n[],b=[],o=f[0]===\"^\",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&\"-\"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=[\"[\"];o&&b.push(\"^\");b.push.apply(b,a);for(c=0;c<\nf.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push(\"-\"),b.push(e(i[1])));b.push(\"]\");return b.join(\"\")}function y(a){for(var f=a.source.match(/\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*]|\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\\\d+|\\\\[^\\dux]|\\(\\?[!:=]|[()^]|[^()[\\\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j===\"(\"?++i:\"\\\\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j===\"(\"?(++i,d[i]===void 0&&(f[c]=\"(?:\")):\"\\\\\"===j.charAt(0)&&\n(j=+j.substring(1))&&j<=i&&(f[c]=\"\\\\\"+d[i]);for(i=c=0;c<b;++c)\"^\"===f[c]&&\"^\"!==f[c+1]&&(f[c]=\"\");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a===\"[\"?f[c]=h(j):a!==\"\\\\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return f.join(\"\")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\\\u[\\da-f]{4}|\\\\x[\\da-f]{2}|\\\\[^UXux]/gi,\"\"))){s=!0;l=!1;break}}for(var r=\n{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(\"\"+g);n.push(\"(?:\"+y(g)+\")\")}return RegExp(n.join(\"|\"),l?\"gi\":\"g\")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if(\"BR\"===g||\"LI\"===g)h[s]=\"\\n\",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\\r\\n?/g,\"\\n\"):g.replace(/[\\t\\n\\r ]+/g,\" \"),h[s]=g,t[s<<1]=y,y+=g.length,\nt[s++<<1|1]=a)}}var e=/(?:^|\\s)nocode(?:\\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue(\"white-space\"));var p=l&&\"pre\"===l.substring(0,3);m(a);return{a:h.join(\"\").replace(/\\n$/,\"\"),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,\"pln\"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===\n\"string\")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b=\"pln\")}if((c=b.length>=5&&\"lang-\"===b.substring(0,5))&&!(o&&typeof o[1]===\"string\"))c=!1,b=\"src\";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),\nl=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=\"\"+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\\S\\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push([\"str\",/^(?:'''(?:[^'\\\\]|\\\\[\\S\\s]|''?(?=[^']))*(?:'''|$)|\"\"\"(?:[^\"\\\\]|\\\\[\\S\\s]|\"\"?(?=[^\"]))*(?:\"\"\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$))/,q,\"'\\\"\"]):a.multiLineStrings?m.push([\"str\",/^(?:'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|`(?:[^\\\\`]|\\\\[\\S\\s])*(?:`|$))/,\nq,\"'\\\"`\"]):m.push([\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,q,\"\\\"'\"]);a.verbatimStrings&&e.push([\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,\"#\"]):m.push([\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,q,\"#\"]),e.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,q])):m.push([\"com\",/^#[^\\n\\r]*/,\nq,\"#\"]));a.cStyleComments&&(e.push([\"com\",/^\\/\\/[^\\n\\r]*/,q]),e.push([\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,q]));a.regexLiterals&&e.push([\"lang-regex\",/^(?:^^\\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|,|-=|->|\\/|\\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\\^=|\\^\\^|\\^\\^=|{|\\||\\|=|\\|\\||\\|\\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*(\\/(?=[^*/])(?:[^/[\\\\]|\\\\[\\S\\s]|\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*(?:]|$))+\\/)/]);(h=a.types)&&e.push([\"typ\",h]);a=(\"\"+a.keywords).replace(/^ | $/g,\n\"\");a.length&&e.push([\"kwd\",RegExp(\"^(?:\"+a.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),q]);m.push([\"pln\",/^\\s+/,q,\" \\r\\n\\t\\xa0\"]);e.push([\"lit\",/^@[$_a-z][\\w$@]*/i,q],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][\\w$@]*|\\w+_t\\b)/,q],[\"pln\",/^[$_a-z][\\w$@]*/i,q],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,q,\"0123456789\"],[\"pln\",/^\\\\[\\S\\s]?/,q],[\"pun\",/^.[^\\s\\w\"-$'./@\\\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if(\"BR\"===a.nodeName)h(a),\na.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}\nfor(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\\s)nocode(?:\\s|$)/,t=/\\r\\n?|\\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue(\"white-space\"));var p=l&&\"pre\"===l.substring(0,3);for(l=s.createElement(\"LI\");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute(\"value\",\nm);var r=s.createElement(\"OL\");r.className=\"linenums\";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className=\"L\"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode(\"\\xa0\")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn(\"cannot override language handler %s\",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\\s*</.test(m)?\"default-markup\":\"default-code\";return A[a]}function E(a){var m=\na.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\\bMSIE\\b/.test(navigator.userAgent),m=/\\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,\"\\r\"));i.nodeValue=\nj;var u=i.ownerDocument,v=u.createElement(\"SPAN\");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){\"console\"in window&&console.log(w&&w.stack?w.stack:w)}}var v=[\"break,continue,do,else,for,if,return,while\"],w=[[v,\"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\n\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],F=[w,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],G=[w,\"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient\"],\nH=[G,\"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var\"],w=[w,\"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN\"],I=[v,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],\nJ=[v,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],v=[v,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)/,N=/\\S/,O=u({keywords:[F,H,w,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\"+\nI,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,[\"default-code\"]);k(x([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\S\\s]*?(?:--\\>|$)/],[\"lang-\",/^<\\?([\\S\\s]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\S\\s]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",/^<xmp\\b[^>]*>([\\S\\s]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\S\\s]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\S\\s]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),\n[\"default-markup\",\"htm\",\"html\",\"mxml\",\"xhtml\",\"xml\",\"xsl\"]);k(x([[\"pln\",/^\\s+/,q,\" \\t\\r\\n\"],[\"atv\",/^(?:\"[^\"]*\"?|'[^']*'?)/,q,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^\\s\"'>]*(?:[^\\s\"'/>]|\\/(?=\\s)))/],[\"pun\",/^[/<->]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\"([^\"]+)\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*'([^']+)'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\s\"'>]+)/i],[\"lang-css\",/^style\\s*=\\s*\"([^\"]+)\"/i],[\"lang-css\",/^style\\s*=\\s*'([^']+)'/i],[\"lang-css\",\n/^style\\s*=\\s*([^\\s\"'>]+)/i]]),[\"in.tag\"]);k(x([],[[\"atv\",/^[\\S\\s]+/]]),[\"uq.val\"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),[\"c\",\"cc\",\"cpp\",\"cxx\",\"cyc\",\"m\"]);k(u({keywords:\"null,true,false\"}),[\"json\"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),[\"cs\"]);k(u({keywords:G,cStyleComments:!0}),[\"java\"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),[\"bsh\",\"csh\",\"sh\"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),\n[\"cv\",\"py\"]);k(u({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"perl\",\"pl\",\"pm\"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),[\"js\"]);k(u({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes\",\nhashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);k(x([],[[\"str\",/^[\\S\\s]+/]]),[\"regex\"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement(\"PRE\");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf(\"prettyprint\")>=0){var k=k.match(g),f,b;if(b=\n!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&\"CODE\"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName===\"pre\"||o.tagName===\"code\"||o.tagName===\"xmp\")&&o.className&&o.className.indexOf(\"prettyprint\")>=0){b=!0;break}b||((b=(b=n.className.match(/\\blinenums\\b(?::(\\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,\n250):a&&a()}for(var e=[document.getElementsByTagName(\"pre\"),document.getElementsByTagName(\"code\"),document.getElementsByTagName(\"xmp\")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",\nPR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\"}})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/holder/README.md",
    "content": "Holder\n======\n\nHolder uses the `canvas` element and the data URI scheme to render image placeholders entirely in browser.\n\n[Bootstrap](http://twitter.github.com/bootstrap/) uses Holder for thumbnails.\n\nHow to use it\n-------------\n\nInclude ``holder.js`` in your HTML:\n\n```html\n<script src=\"holder.js\"></script>\n```\n\nHolder will then process all images with a specific ``src`` attribute, like this one:\n\n```html\n<img src=\"holder.js/200x300\">\n```\n\nThe above tag will render as a placeholder 200 pixels wide and 300 pixels tall.\n\nTo avoid console 404 errors, you can use ``data-src`` instead of ``src``.\n\nHolder also includes support for themes, to help placeholders blend in with your layout. There are 3 default themes: ``gray``, ``industrial``, and ``social``. You can use them like this:\n\n```html\n<img src=\"holder.js/200x300/industrial\">\n```\n\nCustomizing themes\n------------------\n\nThemes have 4 properties: ``foreground``, ``background``, ``size``, and ``font``. The ``size`` property specifies the minimum font size for the theme. You can create a sample theme like this:\n\n```js\nHolder.add_theme(\"dark\", {background:\"#000\", foreground:\"#aaa\", size:11, font: \"Monaco\"})\n```\n\nUsing custom themes\n-------------------\n\nThere are two ways to use custom themes with Holder:\n\n* Include theme at runtime to render placeholders already using the theme name\n* Include theme at any point and re-render placeholders that are using the theme name\n\nThe first approach is the easiest. After you include ``holder.js``, add a ``script`` tag that adds the theme you want:\n\n```html\n<script src=\"holder.js\"></script>\n<script> Holder.add_theme(\"bright\", { background: \"white\", foreground: \"gray\", size: 12 })</script>\n```\n\nThe second approach requires that you call ``run`` after you add the theme, like this:\n\n```js\nHolder.add_theme(\"bright\", { background: \"white\", foreground: \"gray\", size: 12}).run()\n```\n\nUsing custom themes and domain on specific images\n-------------------------------------------------\n\nYou can use Holder in different areas on different images with custom themes:\n\n```html\n<img data-src=\"example.com/100x100/simple\" id=\"new\">\n```\n\n```js\nHolder.run({\n    domain: \"example.com\",\n    themes: {\n        \"simple\":{\n            background:\"#fff\",\n            foreground:\"#000\",\n            size:12\n            }\n    },\n    images: \"#new\"\n    })\n```\n\nUsing custom colors on specific images\n--------------------------------------\n\nCustom colors on a specific image can be specified in the ``background:foreground`` format using hex notation, like this:\n\n```html\n<img data-src=\"holder.js/100x200/#000:#fff\">\n```\n\nThe above will render a placeholder with a black background and white text.\n\nCustom text\n-----------\n\nYou can specify custom text using the ``text:`` operator:\n\n```html\n<img data-src=\"holder.js/200x200/text:hello world\">\n```\n\nIf you have a group of placeholders where you'd like to use particular text, you can do so by adding a ``text`` property to the theme:\n\n```js\nHolder.add_theme(\"thumbnail\", { background: \"#fff\", text: \"Thumbnail\" })\n```\n\nFluid placeholders\n------------------\n\nSpecifying a dimension in percentages creates a fluid placeholder that responds to media queries.\n\n```html\n<img data-src=\"holder.js/100%x75/social\">\n```\n\nBy default, the fluid placeholder will show its current size in pixels.\n\nAutomatically sized placeholders\n--------------------------------\n\nIf you'd like to avoid Holder enforcing an image size, use the ``auto`` flag like so:\n\n```html\n<img data-src=\"holder.js/200x200/auto\">\n```\n\nThe above will render a placeholder without any embedded CSS for height or width.\n\nBackground placeholders\n-----------------------\n\nHolder can render placeholders as background images for elements with the `holderjs` class, like this:\n\n```css\n#sample {background:url(?holder.js/200x200/social) no-repeat}\n```\n\n```html\n<div id=\"sample\" class=\"holderjs\"></div>\n```\n\nThe Holder URL in CSS should have a `?` in front. You can change the default class by specifying a selector as the `bgnodes` property when calling `Holder.run`.\n\nCustomizing only the settings you need\n--------------------------------------\n\nHolder extends its default settings with the settings you provide, so you only have to include those settings you want changed. For example, you can run Holder on a specific domain like this:\n\n```js\nHolder.run({domain:\"example.com\"})\n```\n\nUsing custom settings on load\n-----------------------------\n\nYou can prevent Holder from running its default configuration by executing ``Holder.run`` with your custom settings right after including ``holder.js``. However, you'll have to execute ``Holder.run`` again to render any placeholders that use the default configuration.\n\nInserting an image with optional custom theme\n---------------------------------------------\n\nYou can add a placeholder programmatically by chaining Holder calls:\n\n```js\nHolder.add_theme(\"new\",{foreground:\"#ccc\", background:\"#000\", size:10}).add_image(\"holder.js/200x100/new\", \"body\").run()\n```\n\nThe first argument in ``add_image`` is the ``src`` attribute, and the second is a CSS selector of the parent element.\n\nUsing with ``lazyload.js``\n--------------------------\n\nHolder is compatible with ``lazyload.js`` and works with both fluid and fixed-width images. For best results, run `.lazyload({skip_invisible:false})`.\n\nBrowser support\n---------------\n\n* Chrome 1+\n* Firefox 3+\n* Safari 4+\n* Internet Explorer 9+, with fallback for IE6-8\n* Android 1+\n\nLicense\n-------\n\nHolder is provided under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0). Commercial use requires attribution.\n\nCredits\n-------\n\nHolder is a project by [Ivan Malopinsky](http://imsky.co).\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/holder/component.json",
    "content": "{\n  \"name\": \"holderjs\",\n  \"version\": \"v1.7\",\n  \"main\": \"holder.js\",\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/holder/holder.js",
    "content": "/*\n\nHolder - 1.9 - client side image placeholders\n(c) 2012-2013 Ivan Malopinsky / http://imsky.co\n\nProvided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0\nCommercial use requires attribution.\n\n*/\n\nvar Holder = Holder || {};\n(function (app, win) {\n\nvar preempted = false,\nfallback = false,\ncanvas = document.createElement('canvas');\n\n//getElementsByClassName polyfill\ndocument.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll(\".\"+e);if(t.evaluate){r=\".//*[contains(concat(' ', @class, ' '), ' \"+e+\" ')]\",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName(\"*\"),r=new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})\n\n//getComputedStyle polyfill\nwindow.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\\-([a-z]){1})/g;return t==\"float\"&&(t=\"styleFloat\"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})\n\n//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications\nfunction contentLoaded(n,t){var l=\"complete\",s=\"readystatechange\",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?\"addEventListener\":\"attachEvent\",v=i.addEventListener?\"removeEventListener\":\"detachEvent\",f=i.addEventListener?\"\":\"on\",r=function(e){(e.type!=s||i.readyState==l)&&((e.type==\"load\"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll(\"left\")}catch(n){setTimeout(o,50);return}r(\"poll\")};if(i.readyState==l)t.call(n,\"lazy\");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+\"DOMContentLoaded\",r,u),i[e](f+s,r,u),n[e](f+\"load\",r,u)}};\n\n//https://gist.github.com/991057 by Jed Schmidt with modifications\nfunction selector(a){\n\ta=a.match(/^(\\W)?(.*)/);var b=document[\"getElement\"+(a[1]?a[1]==\"#\"?\"ById\":\"sByClassName\":\"sByTagName\")](a[2]);\n\tvar ret=[];\tb!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]);\treturn ret;\n}\n\n//shallow object property extend\nfunction extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}\n\n//hasOwnProperty polyfill\nif (!Object.prototype.hasOwnProperty)\n\tObject.prototype.hasOwnProperty = function(prop) {\n\t\tvar proto = this.__proto__ || this.constructor.prototype;\n\t\treturn (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);\n\t}\n\nfunction text_size(width, height, template) {\n\tvar dimension_arr = [height, width].sort();\n\tvar maxFactor = Math.round(dimension_arr[1] / 16),\n\t\tminFactor = Math.round(dimension_arr[0] / 16);\n\tvar text_height = Math.max(template.size, maxFactor);\n\treturn {\n\t\theight: text_height\n\t}\n}\n\nfunction draw(ctx, dimensions, template, ratio) {\n\tvar ts = text_size(dimensions.width, dimensions.height, template);\n\tvar text_height = ts.height;\n\tvar width = dimensions.width * ratio,\n\t\theight = dimensions.height * ratio;\n\tvar font = template.font ? template.font : \"sans-serif\";\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tctx.textAlign = \"center\";\n\tctx.textBaseline = \"middle\";\n\tctx.fillStyle = template.background;\n\tctx.fillRect(0, 0, width, height);\n\tctx.fillStyle = template.foreground;\n\tctx.font = \"bold \" + text_height + \"px \" + font;\n\tvar text = template.text ? template.text : (dimensions.width + \"x\" + dimensions.height);\n\tif (ctx.measureText(text).width / width > 1) {\n\t\ttext_height = template.size / (ctx.measureText(text).width / width);\n\t}\n\t//Resetting font size if necessary\n\tctx.font = \"bold \" + (text_height * ratio) + \"px \" + font;\n\tctx.fillText(text, (width / 2), (height / 2), width);\n\treturn canvas.toDataURL(\"image/png\");\n}\n\nfunction render(mode, el, holder, src) {\n\tvar dimensions = holder.dimensions,\n\t\ttheme = holder.theme,\n\t\ttext = holder.text ? decodeURIComponent(holder.text) : holder.text;\n\tvar dimensions_caption = dimensions.width + \"x\" + dimensions.height;\n\t\t\n\ttheme = (text ? extend(theme, {\n\t\ttext: text\n\t}) : theme);\n\ttheme = (holder.font ? extend(theme, {\n\t\tfont: holder.font\n\t}) : theme);\n\n\tif (mode == \"image\") {\n\t\tel.setAttribute(\"data-src\", src);\n\t\tel.setAttribute(\"alt\", text ? text : theme.text ? theme.text + \" [\" + dimensions_caption + \"]\" : dimensions_caption);\n\n\t\tif (fallback || !holder.auto) {\n\t\t\tel.style.width = dimensions.width + \"px\";\n\t\t\tel.style.height = dimensions.height + \"px\";\n\t\t}\n\n\t\tif (fallback) {\n\t\t\tel.style.backgroundColor = theme.background;\n\n\t\t} else {\n\t\t\tel.setAttribute(\"src\", draw(ctx, dimensions, theme, ratio));\n\t\t}\n\t} else {\n\t\tif (!fallback) {\n\t\t\tel.style.backgroundImage = \"url(\" + draw(ctx, dimensions, theme, ratio) + \")\";\n\t\t\tel.style.backgroundSize = dimensions.width + \"px \" + dimensions.height + \"px\";\n\t\t}\n\t}\n};\n\nfunction fluid(el, holder, src) {\n\tvar dimensions = holder.dimensions,\n\t\ttheme = holder.theme,\n\t\ttext = holder.text;\n\tvar dimensions_caption = dimensions.width + \"x\" + dimensions.height;\n\ttheme = (text ? extend(theme, {\n\t\ttext: text\n\t}) : theme);\n\n\tvar fluid = document.createElement(\"div\");\n\n\tif (el.fluidRef) {\n\t\tfluid = el.fluidRef;\n\t}\n\n\tfluid.style.backgroundColor = theme.background;\n\tfluid.style.color = theme.foreground;\n\tfluid.className = el.className + \" holderjs-fluid\";\n\tfluid.style.width = holder.dimensions.width + (holder.dimensions.width.indexOf(\"%\") > 0 ? \"\" : \"px\");\n\tfluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf(\"%\") > 0 ? \"\" : \"px\");\n\tfluid.id = el.id;\n\n\tel.style.width = 0;\n\tel.style.height = 0;\n\n\tif (!el.fluidRef) {\n\n\t\tif (theme.text) {\n\t\t\tfluid.appendChild(document.createTextNode(theme.text))\n\t\t} else {\n\t\t\tfluid.appendChild(document.createTextNode(dimensions_caption))\n\t\t\tfluid_images.push(fluid);\n\t\t\tsetTimeout(fluid_update, 0);\n\t\t}\n\n\t}\n\n\tel.fluidRef = fluid;\n\tel.parentNode.insertBefore(fluid, el.nextSibling)\n\n\tif (window.jQuery) {\n\t\tjQuery(function ($) {\n\t\t\t$(el).on(\"load\", function () {\n\t\t\t\tel.style.width = fluid.style.width;\n\t\t\t\tel.style.height = fluid.style.height;\n\t\t\t\t$(el).show();\n\t\t\t\t$(fluid).remove();\n\t\t\t});\n\t\t})\n\t}\n}\n\nfunction fluid_update() {\n\tfor (i in fluid_images) {\n\t\tif (!fluid_images.hasOwnProperty(i)) continue;\n\t\tvar el = fluid_images[i],\n\t\t\tlabel = el.firstChild;\n\n\t\tel.style.lineHeight = el.offsetHeight + \"px\";\n\t\tlabel.data = el.offsetWidth + \"x\" + el.offsetHeight;\n\t}\n}\n\nfunction parse_flags(flags, options) {\n\n\tvar ret = {\n\t\ttheme: settings.themes.gray\n\t}, render = false;\n\n\tfor (sl = flags.length, j = 0; j < sl; j++) {\n\t\tvar flag = flags[j];\n\t\tif (app.flags.dimensions.match(flag)) {\n\t\t\trender = true;\n\t\t\tret.dimensions = app.flags.dimensions.output(flag);\n\t\t} else if (app.flags.fluid.match(flag)) {\n\t\t\trender = true;\n\t\t\tret.dimensions = app.flags.fluid.output(flag);\n\t\t\tret.fluid = true;\n\t\t} else if (app.flags.colors.match(flag)) {\n\t\t\tret.theme = app.flags.colors.output(flag);\n\t\t} else if (options.themes[flag]) {\n\t\t\t//If a theme is specified, it will override custom colors\n\t\t\tret.theme = options.themes[flag];\n\t\t} else if (app.flags.text.match(flag)) {\n\t\t\tret.text = app.flags.text.output(flag);\n\t\t} else if (app.flags.font.match(flag)) {\n\t\t\tret.font = app.flags.font.output(flag);\n\t\t} else if (app.flags.auto.match(flag)) {\n\t\t\tret.auto = true;\n\t\t}\n\t}\n\n\treturn render ? ret : false;\n\n};\n\n\n\nif (!canvas.getContext) {\n\tfallback = true;\n} else {\n\tif (canvas.toDataURL(\"image/png\")\n\t\t.indexOf(\"data:image/png\") < 0) {\n\t\t//Android doesn't support data URI\n\t\tfallback = true;\n\t} else {\n\t\tvar ctx = canvas.getContext(\"2d\");\n\t}\n}\n\nvar dpr = 1, bsr = 1;\n\t\nif(!fallback){\n    dpr = window.devicePixelRatio || 1,\n    bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n}\n\nvar ratio = dpr / bsr;\n\nvar fluid_images = [];\n\nvar settings = {\n\tdomain: \"holder.js\",\n\timages: \"img\",\n\tbgnodes: \".holderjs\",\n\tthemes: {\n\t\t\"gray\": {\n\t\t\tbackground: \"#eee\",\n\t\t\tforeground: \"#aaa\",\n\t\t\tsize: 12\n\t\t},\n\t\t\"social\": {\n\t\t\tbackground: \"#3a5a97\",\n\t\t\tforeground: \"#fff\",\n\t\t\tsize: 12\n\t\t},\n\t\t\"industrial\": {\n\t\t\tbackground: \"#434A52\",\n\t\t\tforeground: \"#C2F200\",\n\t\t\tsize: 12\n\t\t}\n\t},\n\tstylesheet: \".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}\"\n};\n\n\napp.flags = {\n\tdimensions: {\n\t\tregex: /^(\\d+)x(\\d+)$/,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\twidth: +exec[1],\n\t\t\t\theight: +exec[2]\n\t\t\t}\n\t\t}\n\t},\n\tfluid: {\n\t\tregex: /^([0-9%]+)x([0-9%]+)$/,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\twidth: exec[1],\n\t\t\t\theight: exec[2]\n\t\t\t}\n\t\t}\n\t},\n\tcolors: {\n\t\tregex: /#([0-9a-f]{3,})\\:#([0-9a-f]{3,})/i,\n\t\toutput: function (val) {\n\t\t\tvar exec = this.regex.exec(val);\n\t\t\treturn {\n\t\t\t\tsize: settings.themes.gray.size,\n\t\t\t\tforeground: \"#\" + exec[2],\n\t\t\t\tbackground: \"#\" + exec[1]\n\t\t\t}\n\t\t}\n\t},\n\ttext: {\n\t\tregex: /text\\:(.*)/,\n\t\toutput: function (val) {\n\t\t\treturn this.regex.exec(val)[1];\n\t\t}\n\t},\n\tfont: {\n\t\tregex: /font\\:(.*)/,\n\t\toutput: function (val) {\n\t\t\treturn this.regex.exec(val)[1];\n\t\t}\n\t},\n\tauto: {\n\t\tregex: /^auto$/\n\t}\n}\n\nfor (var flag in app.flags) {\n\tif (!app.flags.hasOwnProperty(flag)) continue;\n\tapp.flags[flag].match = function (val) {\n\t\treturn val.match(this.regex)\n\t}\n}\n\napp.add_theme = function (name, theme) {\n\tname != null && theme != null && (settings.themes[name] = theme);\n\treturn app;\n};\n\napp.add_image = function (src, el) {\n\tvar node = selector(el);\n\tif (node.length) {\n\t\tfor (var i = 0, l = node.length; i < l; i++) {\n\t\t\tvar img = document.createElement(\"img\")\n\t\t\timg.setAttribute(\"data-src\", src);\n\t\t\tnode[i].appendChild(img);\n\t\t}\n\t}\n\treturn app;\n};\n\napp.run = function (o) {\n\tvar options = extend(settings, o),\n\t    images = [], imageNodes = [], bgnodes = [];\n\t    \n\tif(typeof(options.images) == \"string\"){\n\t    imageNodes = selector(options.images);\n\t}\n\telse if (window.NodeList && options.images instanceof window.NodeList) {\n\t\timageNodes = options.images;\n\t} else if (window.Node && options.images instanceof window.Node) {\n\t\timageNodes = [options.images];\n\t}\n\n\tif(typeof(options.bgnodes) == \"string\"){\n\t    bgnodes = selector(options.bgnodes);\n\t} else if (window.NodeList && options.elements instanceof window.NodeList) {\n\t\tbgnodes = options.bgnodes;\n\t} else if (window.Node && options.bgnodes instanceof window.Node) {\n\t\tbgnodes = [options.bgnodes];\n\t}\n\n\tpreempted = true;\n\n\tfor (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]);\n\n\tvar holdercss = document.getElementById(\"holderjs-style\");\n\tif (!holdercss) {\n\t\tholdercss = document.createElement(\"style\");\n\t\tholdercss.setAttribute(\"id\", \"holderjs-style\");\n\t\tholdercss.type = \"text/css\";\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(holdercss);\n\t}\n\t\n\tif (!options.nocss) {\n\t    if (holdercss.styleSheet) {\n\t\t    holdercss.styleSheet.cssText += options.stylesheet;\n\t    } else {\n\t\t    holdercss.appendChild(document.createTextNode(options.stylesheet));\n\t    }\n\t}\n\n\t\n\n\tvar cssregex = new RegExp(options.domain + \"\\/(.*?)\\\"?\\\\)\");\n\n\tfor (var l = bgnodes.length, i = 0; i < l; i++) {\n\t\tvar src = window.getComputedStyle(bgnodes[i], null)\n\t\t\t.getPropertyValue(\"background-image\");\n\t\tvar flags = src.match(cssregex);\n\t\tvar bgsrc = bgnodes[i].getAttribute(\"data-background-src\");\n\n\t\tif (flags) {\n\t\t\tvar holder = parse_flags(flags[1].split(\"/\"), options);\n\t\t\tif (holder) {\n\t\t\t\trender(\"background\", bgnodes[i], holder, src);\n\t\t\t}\n\t\t}\n\t\telse if(bgsrc != null){\n\t\t    var holder = parse_flags(bgsrc.substr(bgsrc.lastIndexOf(options.domain) + options.domain.length + 1)\n\t\t\t\t.split(\"/\"), options);\n\t\t    if(holder){\n\t\t\trender(\"background\", bgnodes[i], holder, src);\n\t\t    }\n\t\t}\n\t}\n\n\tfor (l = images.length, i = 0; i < l; i++) {\n\t    \n\t\tvar attr_src = attr_data_src = src = null;\n\t\t\n\t\ttry{\n\t\t    attr_src = images[i].getAttribute(\"src\");\n\t\t    attr_datasrc = images[i].getAttribute(\"data-src\");\n\t\t}catch(e){}\n\t\t\t\t\n\t\tif (attr_datasrc == null && !! attr_src && attr_src.indexOf(options.domain) >= 0) {\n\t\t\tsrc = attr_src;\n\t\t} else if ( !! attr_datasrc && attr_datasrc.indexOf(options.domain) >= 0) {\n\t\t\tsrc = attr_datasrc;\n\t\t}\n\t\t\n\t\tif (src) {\n\t\t\tvar holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)\n\t\t\t\t.split(\"/\"), options);\n\t\t\tif (holder) {\n\t\t\t\tif (holder.fluid) {\n\t\t\t\t\tfluid(images[i], holder, src);\n\t\t\t\t} else {\n\t\t\t\t\trender(\"image\", images[i], holder, src);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn app;\n};\n\ncontentLoaded(win, function () {\n\tif (window.addEventListener) {\n\t\twindow.addEventListener(\"resize\", fluid_update, false);\n\t\twindow.addEventListener(\"orientationchange\", fluid_update, false);\n\t} else {\n\t\twindow.attachEvent(\"onresize\", fluid_update)\n\t}\n\tpreempted || app.run();\n});\n\nif (typeof define === \"function\" && define.amd) {\n\tdefine(\"Holder\", [], function () {\n\t\treturn app;\n\t});\n}\n\n})(Holder, window);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/holder/package.json",
    "content": "{\n  \"name\": \"Holder\",\n  \"version\": \"1.7.0\",\n  \"description\": \"Holder uses the canvas element and the data URI scheme to render image placeholders entirely in browser.\",\n  \"keywords\": [ \"images\", \"placeholders\", \"client-side\", \"canvas\", \"generation\", \"development\" ],\n  \"main\": \"holder.js\",\n  \"homepage\": \"https://github.com/imsky/holder\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/imsky/holder.git\"\n  },\n  \"bugs\": {\n    \"url\" : \"https://github.com/imsky/holder/issues\"\n  },\n  \"license\": \"Apache\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/ChangeLog.markdown",
    "content": "# Mouse Wheel ChangeLog\n\n# 3.0.6\n\n* Fix issue with delta being 0 in Firefox\n\n# 3.0.5\n\n* jQuery 1.7 compatibility\n\n# 3.0.4\n\n* Fix IE issue\n\n\n# 3.0.3\n\n* Added deltaX and deltaY for horizontal scrolling support (Thanks to Seamus Leahy)\n\n\n# 3.0.2\n\n* Fixed delta being opposite value in latest Opera\n* No longer fix pageX, pageY for older mozilla browsers\n* Removed browser detection\n* Cleaned up the code\n\n\n# 3.0.1\n\n* Bad release... creating a new release due to plugins.jquery.com issue :(\n\n\n# 3.0\n\n* Uses new special events API in jQuery 1.2.2+\n* You can now treat \"mousewheel\" as a normal event and use .bind, .unbind and .trigger\n* Using jQuery.data API for expandos\n\n\n# 2.2\n\n* Fixed pageX, pageY, clientX and clientY event properties for Mozilla based browsers\n\n\n# 2.1.1\n\n* Updated to work with jQuery 1.1.3\n* Used one instead of bind to do unload event for clean up.\n\n\n# 2.1\n\n* Fixed an issue with the unload handler\n\n\n# 2.0\n\n* Major reduction in code size and complexity (internals have change a whole lot)\n\n\n# 1.0\n\n* Fixed Opera issue\n* Fixed an issue with children elements that also have a mousewheel handler\n* Added ability to handle multiple handlers\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/LICENSE.txt",
    "content": "Copyright 2011, Brandon Aaron (http://brandonaaron.net/)\n \nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n \nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/README.markdown",
    "content": "# jQuery Mouse Wheel Plugin\n\nA jQuery plugin that adds cross-browser mouse wheel support.\n\nIn order to use the plugin, simply bind the \"mousewheel\" event to an element. It also provides two helper methods called `mousewheel` and `unmousewheel` that act just like other event helper methods in jQuery. The event callback receives three extra arguments which are the normalized \"deltas\" of the mouse wheel. \n\nHere is an example of using both the bind and helper method syntax.\n\n    // using bind\n    $('#my_elem').bind('mousewheel', function(event, delta, deltaX, deltaY) {\n        console.log(delta, deltaX, deltaY);\n    });\n    \n    // using the event helper\n    $('#my_elem').mousewheel(function(event, delta, deltaX, deltaY) {\n        console.log(delta, deltaX, deltaY);\n    });\n\n\n## License\n\nThis plugin is licensed under the MIT License (LICENSE.txt).\n\nCopyright (c) 2011 [Brandon Aaron](http://brandonaaron.net)\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/jquery.mousewheel.js",
    "content": "/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n * Thanks to: Seamus Leahy for adding deltaX and deltaY\n *\n * Version: 3.0.6\n * \n * Requires: 1.2.2+\n */\n\n(function($) {\n\nvar types = ['DOMMouseScroll', 'mousewheel'];\n\nif ($.event.fixHooks) {\n    for ( var i=types.length; i; ) {\n        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;\n    }\n}\n\n$.event.special.mousewheel = {\n    setup: function() {\n        if ( this.addEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.addEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = handler;\n        }\n    },\n    \n    teardown: function() {\n        if ( this.removeEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.removeEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = null;\n        }\n    }\n};\n\n$.fn.extend({\n    mousewheel: function(fn) {\n        return fn ? this.bind(\"mousewheel\", fn) : this.trigger(\"mousewheel\");\n    },\n    \n    unmousewheel: function(fn) {\n        return this.unbind(\"mousewheel\", fn);\n    }\n});\n\n\nfunction handler(event) {\n    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;\n    event = $.event.fix(orgEvent);\n    event.type = \"mousewheel\";\n    \n    // Old school scrollwheel delta\n    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }\n    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }\n    \n    // New school multidimensional scroll (touchpads) deltas\n    deltaY = delta;\n    \n    // Gecko\n    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n        deltaY = 0;\n        deltaX = -1*delta;\n    }\n    \n    // Webkit\n    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }\n    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }\n    \n    // Add event and delta to the front of the arguments\n    args.unshift(event, delta, deltaX, deltaY);\n    \n    return ($.event.dispatch || $.event.handle).apply(this, args);\n}\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-mousewheel/test/index.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<title>Testing mousewheel plugin</title>\n\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-git.js\"></script>-->\n\t\t<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.7.js\"></script>\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.6.4.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.5.2.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.4.4.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.3.2.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.2.6.js\"></script>-->\n\t\t<!--<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.2.2.js\"></script>-->\n\t\t<script type=\"text/javascript\" src=\"../jquery.mousewheel.js\"></script>\n\t\t\n\t\t<style>\n\t\t\t#test1 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test2 {\n\t\t\t\tbackground-color: #333;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test3 {\n\t\t\t\tbackground-color: #666;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test4 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\twidth: 120px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test5 {\n\t\t\t\tbackground-color: #333;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 400px;\n\t\t\t\theight: 400px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#test6 {\n\t\t\t\tbackground-color: #666;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 250px;\n\t\t\t\theight: 250px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\n\t\t\t#test7 {\n\t\t\t\tbackground-color: #000;\n\t\t\t\tpadding: 5px;\n\t\t\t\twidth: 100px;\n\t\t\t\theight: 100px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t\t\n\t\t\t#forceScroll {\n\t\t\t\tclear: both;\n\t\t\t\theight: 1000px;\n\t\t\t}\n\t\t\t\n\t\t\t#logger {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 395px;\n\t\t\t\tleft: 12px;\n\t\t\t\twidth: 460px;\n\t\t\t\theight: 290px;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p {\n\t\t\t\tfont-family: Arial, sans-serif;\n\t\t\t\tfont-size: 13px;\n\t\t\t\tpadding: 2px;\n\t\t\t\tborder-bottom: 1px solid #ccc;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p:nth-child(even) {\n\t\t\t\tbackground-color: #FFFFE8;\n\t\t\t}\n\t\t\t\n\t\t\t#logger p:nth-child(10n) {\n\t\t\t\tborder-bottom-color: #000;\n\t\t\t}\n\t\t</style>\n\t\t<script type=\"text/javascript\">\n\t\t\t$(function() {\n\t\t\t\t$('#userAgent').html(navigator.userAgent);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t$('#test1')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test1: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test1: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tlog('pageX: ' + event.pageX + ' pageY: ' + event.pageY );\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test2')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test2: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test2: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\treturn false; // prevent default\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test3')\n\t\t\t\t\t.hover(function() { log('#test3: mouseover'); }, function() { log('#test3: mouseout'); })\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tlog('#test3: I should not have been logged');\n\t\t\t\t\t})\n\t\t\t\t\t.unmousewheel();\n\t\t\t\t\n\t\t\t\tvar testRemoval = function(event, delta, deltaX, deltaY) {\n\t\t\t\t\tlog('#test4: I should not have been logged');\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t$('#test4')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test4: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test4: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t})\n\t\t\t\t\t.mousewheel(testRemoval)\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test4: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test4: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o + ' from 2nd handler' );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t})\n\t\t\t\t\t.unmousewheel(testRemoval);\n\t\t\t\t\n\t\t\t\t$('#test5')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test5: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test5: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('#test6')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test6: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test6: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\n\t\t\t\t$('#test7')\n\t\t\t\t\t.mousewheel(function(event, delta, deltaX, deltaY) {\n\t\t\t\t\t\tvar o = '';\n\t\t\t\t\t\tif (delta > 0)\n\t\t\t\t\t\t\to = '#test7: up ('+delta+')';\n\t\t\t\t\t\telse if (delta < 0)\n\t\t\t\t\t\t\to = '#test7: down ('+delta+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaX > 0)\n\t\t\t\t\t\t\to = o + ', east ('+deltaX+')';\n\t\t\t\t\t\telse if (deltaX < 0)\n\t\t\t\t\t\t\to = o + ', west ('+deltaX+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (deltaY > 0)\n\t\t\t\t\t\t\to = o + ', north ('+deltaY+')';\n\t\t\t\t\t\telse if (deltaY < 0)\n\t\t\t\t\t\t\to = o + ', south ('+deltaY+')';\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( o != '' )\n\t\t\t\t\t\t\tlog( o );\n\t\t\t\t\t\t\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\tfunction log(msg) {\n\t\t\t\t\t$('#logger').append('<p>'+msg+'</p>').scrollTop(999999);\n\t\t\t\t};\n\t\t\t});\n\t\t</script>\n\t</head>\n\t<body>\n\t\t<h1 id=\"banner\">jQuery mousewheel.js - Test</h1>\n\t\t<h2 id=\"userAgent\"></h2>\n\t\t\n\t\t<ul>\n\t\t\t<li><strong>Test1</strong> is just using the plain on mousewheel() with a function passed in and does not prevent default. (Also logs the value of pageX and pageY event properties.)</li>\n\t\t\t<li><strong>Test2</strong> should prevent the default action.</li>\n\t\t\t<li><strong>Test3</strong> should only log a mouseover and mouseout event. Testing unmousewheel().</li>\n\t\t\t<li><strong>Test4</strong> has two handlers.</li>\n\t\t\t<li><strong>Test5</strong> is like Test2 but has children. The children should not scroll until mousing over them.</li>\n\t\t\t<li><strong>Test6</strong> is like Test5 but should not scroll children or parents.</li>\n\t\t\t<li><strong>Test7</strong> is like Test6 but has no children. It will propagate the event and scroll test 6 as well.</li>\n\t\t</ul>\n\t\t\n\t\t\n\t\t<div id=\"test1\"><p>Test1</p></div>\n\t\t<div id=\"test2\"><p>Test2</p></div>\n\t\t<div id=\"test3\"><p>Test3</p></div>\n\t\t<div id=\"test4\"><p>Test4</p></div>\n\t\t<div id=\"test5\">\n\t\t\t<p>Test5</p>\n\t\t\t<div id=\"test6\">\n\t\t\t\t<p>Test6</p>\n\t\t\t\t<div id=\"test7\"><p>Test7</p></div>\n\t\t\t</div>\n\t\t</div>\n\t\t\n\t\t<div id=\"logger\"></div>\n\t\t\n\t\t<div id=\"forceScroll\"></div>\n\t</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/README.md",
    "content": "# What is slimScroll?\n\nslimScroll is a small jQuery plugin that transforms any div into a scrollable area with a nice scrollbar - similar to the one Facebook and Google started using in their products recently. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over. User can drag the scrollbar or use mouse-wheel to change the scroll value.\n\nDemo and more: http://rocha.la/jQuery-slimScroll\n\nCopyright (c) 2011 Piotr Rochala (http://rocha.la)\nDual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/allow-page-scroll.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - allow page scroll</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll();\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p><span class=\"helloDiv\" style=\"background:green;font-weigh:bold;\">Hello!</span>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      allowPageScroll: true\n  });\n</pre>\n\n<div style=\"height:500px;\">...adding height...</div>\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll();\n\n      $('#testDiv2').slimScroll({\n          allowPageScroll: true\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/chaining.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - chaining</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: '250px'\n}).parent().css({\n  background: '#237FAD',\n  border: '2px dashed #184055'\n});\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        height: '250px'\n      }).parent().css({\n        background: '#237FAD',\n        border: '2px dashed #184055'\n      });\n\n      $('#testDiv2').slimScroll({\n          height: '100px',\n          width: '300px'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/disable-fade-out.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - disable fade out</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll();\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  disableFadeOut: true\n});\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll();\n\n      $('#testDiv2').slimscroll({\n        disableFadeOut: true\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/dynamic-content.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - dynamic content</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n\n\n  <div id=\"testDiv\">\n  </div>\n\n  <pre class=\"prettyprint\">\n  // update content every second\n  setInterval(function(){\n    var el = $('&lt;div&gt;&lt;/div&gt;').html('#' + $('#testDiv').children().length)\n            .css({ padding: '3px', border: '1px solid #ccc', margin: '5px' });\n    $('#testDiv').append(el);\n\n    // update slimscroll every time content changes\n    $('#testDiv').slimscroll();\n  }, 1000);\n\n  $('#testDiv').slimscroll({\n    alwaysVisible: true,\n    height: 150\n  });\n  </pre>\n\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      // update content every second\n      setInterval(function(){\n        var el = $('<div></div>').html('#' + $('#testDiv').children().length)\n                .css({ padding: '3px', border: '1px solid #ccc', margin: '5px' });\n        $('#testDiv').append(el);\n\n        // update slimscroll every time content changes\n        $('#testDiv').slimscroll();\n      }, 1000);\n\n      $('#testDiv').slimscroll({\n        alwaysVisible: true,\n        height: 150\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/height-width.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - height / width</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n<div class=\"examples\">\n    <div style=\"height:300px;\">\n      <div id=\"testDiv\">\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      </div>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: 'auto'\n});\n</pre>\n\n    <div id=\"testDiv2\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  height: '100px',\n  width: '300px'\n});\n</pre>\n\n    <div id=\"testDiv3\">\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n      <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n      <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n      <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    </div>\n\n<pre class=\"prettyprint\">\n$('#testDiv3').slimscroll();\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimScroll({\n          height: 'auto'\n      });\n\n      $('#testDiv2').slimScroll({\n          height: '100px',\n          width: '300px'\n      });\n\n      $('#testDiv3').slimScroll();\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n<html>\n    <head>\n    </head>\n    <frameset framespacing=\"0\" cols=\"250,*\" frameborder=\"0\" noresize>\n        <frame name=\"nav\" src=\"navigation.html\" target=\"top\">\n        <frame name=\"main\" src=\"height-width.html\" target=\"main\">\n    </frameset>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.css",
    "content": "/* Pretty printing styles. Used with prettify.js. */\n\n/* SPAN elements with the classes below are added by prettyprint. */\n.pln { color: #000 }  /* plain text */\n\n@media screen {\n  .str { color: #080 }  /* string content */\n  .kwd { color: #008 }  /* a keyword */\n  .com { color: #800 }  /* a comment */\n  .typ { color: #606 }  /* a type name */\n  .lit { color: #066 }  /* a literal value */\n  /* punctuation, lisp open bracket, lisp close bracket */\n  .pun, .opn, .clo { color: #660 }\n  .tag { color: #008 }  /* a markup tag name */\n  .atn { color: #606 }  /* a markup attribute name */\n  .atv { color: #080 }  /* a markup attribute value */\n  .dec, .var { color: #606 }  /* a declaration; a variable name */\n  .fun { color: red }  /* a function name */\n}\n\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str { color: #060 }\n  .kwd { color: #006; font-weight: bold }\n  .com { color: #600; font-style: italic }\n  .typ { color: #404; font-weight: bold }\n  .lit { color: #044 }\n  .pun, .opn, .clo { color: #440 }\n  .tag { color: #006; font-weight: bold }\n  .atn { color: #404 }\n  .atv { color: #060 }\n}\n\n/* Put a border around prettyprinted code snippets. */\npre.prettyprint { padding: 2px; border: 1px solid #888 }\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L5,\nli.L6,\nli.L7,\nli.L8 { list-style-type: none }\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 { background: #eee }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/libs/prettify/prettify.js",
    "content": "// Copyright (C) 2006 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\n/**\n * @fileoverview\n * some functions for browser-side pretty printing of code contained in html.\n *\n * <p>\n * For a fairly comprehensive set of languages see the\n * <a href=\"http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs\">README</a>\n * file that came with this source.  At a minimum, the lexer should work on a\n * number of languages including C and friends, Java, Python, Bash, SQL, HTML,\n * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk\n * and a subset of Perl, but, because of commenting conventions, doesn't work on\n * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.\n * <p>\n * Usage: <ol>\n * <li> include this source file in an html page via\n *   {@code <script type=\"text/javascript\" src=\"/path/to/prettify.js\"></script>}\n * <li> define style rules.  See the example page for examples.\n * <li> mark the {@code <pre>} and {@code <code>} tags in your source with\n *    {@code class=prettyprint.}\n *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty\n *    printer needs to do more substantial DOM manipulations to support that, so\n *    some css styles may not be preserved.\n * </ol>\n * That's it.  I wanted to keep the API as simple as possible, so there's no\n * need to specify which language the code is in, but if you wish, you can add\n * another class to the {@code <pre>} or {@code <code>} element to specify the\n * language, as in {@code <pre class=\"prettyprint lang-java\">}.  Any class that\n * starts with \"lang-\" followed by a file extension, specifies the file type.\n * See the \"lang-*.js\" files in this directory for code that implements\n * per-language file handlers.\n * <p>\n * Change log:<br>\n * cbeust, 2006/08/22\n * <blockquote>\n *   Java annotations (start with \"@\") are now captured as literals (\"lit\")\n * </blockquote>\n * @requires console\n */\n\n// JSLint declarations\n/*global console, document, navigator, setTimeout, window */\n\n/**\n * Split {@code prettyPrint} into multiple timeouts so as not to interfere with\n * UI events.\n * If set to {@code false}, {@code prettyPrint()} is synchronous.\n */\nwindow['PR_SHOULD_USE_CONTINUATION'] = true;\n\n(function () {\n  // Keyword lists for various languages.\n  // We use things that coerce to strings to make them compact when minified\n  // and to defeat aggressive optimizers that fold large string constants.\n  var FLOW_CONTROL_KEYWORDS = [\"break,continue,do,else,for,if,return,while\"];\n  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,\"auto,case,char,const,default,\" + \n      \"double,enum,extern,float,goto,int,long,register,short,signed,sizeof,\" +\n      \"static,struct,switch,typedef,union,unsigned,void,volatile\"];\n  var COMMON_KEYWORDS = [C_KEYWORDS,\"catch,class,delete,false,import,\" +\n      \"new,operator,private,protected,public,this,throw,true,try,typeof\"];\n  var CPP_KEYWORDS = [COMMON_KEYWORDS,\"alignof,align_union,asm,axiom,bool,\" +\n      \"concept,concept_map,const_cast,constexpr,decltype,\" +\n      \"dynamic_cast,explicit,export,friend,inline,late_check,\" +\n      \"mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,\" +\n      \"template,typeid,typename,using,virtual,where\"];\n  var JAVA_KEYWORDS = [COMMON_KEYWORDS,\n      \"abstract,boolean,byte,extends,final,finally,implements,import,\" +\n      \"instanceof,null,native,package,strictfp,super,synchronized,throws,\" +\n      \"transient\"];\n  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,\n      \"as,base,by,checked,decimal,delegate,descending,dynamic,event,\" +\n      \"fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,\" +\n      \"object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,\" +\n      \"stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var\"];\n  var COFFEE_KEYWORDS = \"all,and,by,catch,class,else,extends,false,finally,\" +\n      \"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,\" +\n      \"true,try,unless,until,when,while,yes\";\n  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,\n      \"debugger,eval,export,function,get,null,set,undefined,var,with,\" +\n      \"Infinity,NaN\"];\n  var PERL_KEYWORDS = \"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,\" +\n      \"goto,if,import,last,local,my,next,no,our,print,package,redo,require,\" +\n      \"sub,undef,unless,until,use,wantarray,while,BEGIN,END\";\n  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"and,as,assert,class,def,del,\" +\n      \"elif,except,exec,finally,from,global,import,in,is,lambda,\" +\n      \"nonlocal,not,or,pass,print,raise,try,with,yield,\" +\n      \"False,True,None\"];\n  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"alias,and,begin,case,class,\" +\n      \"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,\" +\n      \"rescue,retry,self,super,then,true,undef,unless,until,when,yield,\" +\n      \"BEGIN,END\"];\n  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, \"case,done,elif,esac,eval,fi,\" +\n      \"function,in,local,set,then,until\"];\n  var ALL_KEYWORDS = [\n      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +\n      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];\n  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)/;\n\n  // token style names.  correspond to css classes\n  /**\n   * token style for a string literal\n   * @const\n   */\n  var PR_STRING = 'str';\n  /**\n   * token style for a keyword\n   * @const\n   */\n  var PR_KEYWORD = 'kwd';\n  /**\n   * token style for a comment\n   * @const\n   */\n  var PR_COMMENT = 'com';\n  /**\n   * token style for a type\n   * @const\n   */\n  var PR_TYPE = 'typ';\n  /**\n   * token style for a literal value.  e.g. 1, null, true.\n   * @const\n   */\n  var PR_LITERAL = 'lit';\n  /**\n   * token style for a punctuation string.\n   * @const\n   */\n  var PR_PUNCTUATION = 'pun';\n  /**\n   * token style for a punctuation string.\n   * @const\n   */\n  var PR_PLAIN = 'pln';\n\n  /**\n   * token style for an sgml tag.\n   * @const\n   */\n  var PR_TAG = 'tag';\n  /**\n   * token style for a markup declaration such as a DOCTYPE.\n   * @const\n   */\n  var PR_DECLARATION = 'dec';\n  /**\n   * token style for embedded source.\n   * @const\n   */\n  var PR_SOURCE = 'src';\n  /**\n   * token style for an sgml attribute name.\n   * @const\n   */\n  var PR_ATTRIB_NAME = 'atn';\n  /**\n   * token style for an sgml attribute value.\n   * @const\n   */\n  var PR_ATTRIB_VALUE = 'atv';\n\n  /**\n   * A class that indicates a section of markup that is not code, e.g. to allow\n   * embedding of line numbers within code listings.\n   * @const\n   */\n  var PR_NOCODE = 'nocode';\n\n\n\n/**\n * A set of tokens that can precede a regular expression literal in\n * javascript\n * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html\n * has the full list, but I've removed ones that might be problematic when\n * seen in languages that don't support regular expression literals.\n *\n * <p>Specifically, I've removed any keywords that can't precede a regexp\n * literal in a syntactically legal javascript program, and I've removed the\n * \"in\" keyword since it's not a keyword in many languages, and might be used\n * as a count of inches.\n *\n * <p>The link a above does not accurately describe EcmaScript rules since\n * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works\n * very well in practice.\n *\n * @private\n * @const\n */\nvar REGEXP_PRECEDER_PATTERN = '(?:^^\\\\.?|[+-]|\\\\!|\\\\!=|\\\\!==|\\\\#|\\\\%|\\\\%=|&|&&|&&=|&=|\\\\(|\\\\*|\\\\*=|\\\\+=|\\\\,|\\\\-=|\\\\->|\\\\/|\\\\/=|:|::|\\\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\\\?|\\\\@|\\\\[|\\\\^|\\\\^=|\\\\^\\\\^|\\\\^\\\\^=|\\\\{|\\\\||\\\\|=|\\\\|\\\\||\\\\|\\\\|=|\\\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*';\n\n// CAVEAT: this does not properly handle the case where a regular\n// expression immediately follows another since a regular expression may\n// have flags for case-sensitivity and the like.  Having regexp tokens\n// adjacent is not valid in any language I'm aware of, so I'm punting.\n// TODO: maybe style special characters inside a regexp as punctuation.\n\n\n  /**\n   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally\n   * matches the union of the sets of strings matched by the input RegExp.\n   * Since it matches globally, if the input strings have a start-of-input\n   * anchor (/^.../), it is ignored for the purposes of unioning.\n   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.\n   * @return {RegExp} a global regex.\n   */\n  function combinePrefixPatterns(regexs) {\n    var capturedGroupIndex = 0;\n  \n    var needToFoldCase = false;\n    var ignoreCase = false;\n    for (var i = 0, n = regexs.length; i < n; ++i) {\n      var regex = regexs[i];\n      if (regex.ignoreCase) {\n        ignoreCase = true;\n      } else if (/[a-z]/i.test(regex.source.replace(\n                     /\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi, ''))) {\n        needToFoldCase = true;\n        ignoreCase = false;\n        break;\n      }\n    }\n  \n    var escapeCharToCodeUnit = {\n      'b': 8,\n      't': 9,\n      'n': 0xa,\n      'v': 0xb,\n      'f': 0xc,\n      'r': 0xd\n    };\n  \n    function decodeEscape(charsetPart) {\n      var cc0 = charsetPart.charCodeAt(0);\n      if (cc0 !== 92 /* \\\\ */) {\n        return cc0;\n      }\n      var c1 = charsetPart.charAt(1);\n      cc0 = escapeCharToCodeUnit[c1];\n      if (cc0) {\n        return cc0;\n      } else if ('0' <= c1 && c1 <= '7') {\n        return parseInt(charsetPart.substring(1), 8);\n      } else if (c1 === 'u' || c1 === 'x') {\n        return parseInt(charsetPart.substring(2), 16);\n      } else {\n        return charsetPart.charCodeAt(1);\n      }\n    }\n  \n    function encodeEscape(charCode) {\n      if (charCode < 0x20) {\n        return (charCode < 0x10 ? '\\\\x0' : '\\\\x') + charCode.toString(16);\n      }\n      var ch = String.fromCharCode(charCode);\n      if (ch === '\\\\' || ch === '-' || ch === '[' || ch === ']') {\n        ch = '\\\\' + ch;\n      }\n      return ch;\n    }\n  \n    function caseFoldCharset(charSet) {\n      var charsetParts = charSet.substring(1, charSet.length - 1).match(\n          new RegExp(\n              '\\\\\\\\u[0-9A-Fa-f]{4}'\n              + '|\\\\\\\\x[0-9A-Fa-f]{2}'\n              + '|\\\\\\\\[0-3][0-7]{0,2}'\n              + '|\\\\\\\\[0-7]{1,2}'\n              + '|\\\\\\\\[\\\\s\\\\S]'\n              + '|-'\n              + '|[^-\\\\\\\\]',\n              'g'));\n      var groups = [];\n      var ranges = [];\n      var inverse = charsetParts[0] === '^';\n      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {\n        var p = charsetParts[i];\n        if (/\\\\[bdsw]/i.test(p)) {  // Don't muck with named groups.\n          groups.push(p);\n        } else {\n          var start = decodeEscape(p);\n          var end;\n          if (i + 2 < n && '-' === charsetParts[i + 1]) {\n            end = decodeEscape(charsetParts[i + 2]);\n            i += 2;\n          } else {\n            end = start;\n          }\n          ranges.push([start, end]);\n          // If the range might intersect letters, then expand it.\n          // This case handling is too simplistic.\n          // It does not deal with non-latin case folding.\n          // It works for latin source code identifiers though.\n          if (!(end < 65 || start > 122)) {\n            if (!(end < 65 || start > 90)) {\n              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);\n            }\n            if (!(end < 97 || start > 122)) {\n              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);\n            }\n          }\n        }\n      }\n  \n      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]\n      // -> [[1, 12], [14, 14], [16, 17]]\n      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });\n      var consolidatedRanges = [];\n      var lastRange = [NaN, NaN];\n      for (var i = 0; i < ranges.length; ++i) {\n        var range = ranges[i];\n        if (range[0] <= lastRange[1] + 1) {\n          lastRange[1] = Math.max(lastRange[1], range[1]);\n        } else {\n          consolidatedRanges.push(lastRange = range);\n        }\n      }\n  \n      var out = ['['];\n      if (inverse) { out.push('^'); }\n      out.push.apply(out, groups);\n      for (var i = 0; i < consolidatedRanges.length; ++i) {\n        var range = consolidatedRanges[i];\n        out.push(encodeEscape(range[0]));\n        if (range[1] > range[0]) {\n          if (range[1] + 1 > range[0]) { out.push('-'); }\n          out.push(encodeEscape(range[1]));\n        }\n      }\n      out.push(']');\n      return out.join('');\n    }\n  \n    function allowAnywhereFoldCaseAndRenumberGroups(regex) {\n      // Split into character sets, escape sequences, punctuation strings\n      // like ('(', '(?:', ')', '^'), and runs of characters that do not\n      // include any of the above.\n      var parts = regex.source.match(\n          new RegExp(\n              '(?:'\n              + '\\\\[(?:[^\\\\x5C\\\\x5D]|\\\\\\\\[\\\\s\\\\S])*\\\\]'  // a character set\n              + '|\\\\\\\\u[A-Fa-f0-9]{4}'  // a unicode escape\n              + '|\\\\\\\\x[A-Fa-f0-9]{2}'  // a hex escape\n              + '|\\\\\\\\[0-9]+'  // a back-reference or octal escape\n              + '|\\\\\\\\[^ux0-9]'  // other escape sequence\n              + '|\\\\(\\\\?[:!=]'  // start of a non-capturing group\n              + '|[\\\\(\\\\)\\\\^]'  // start/emd of a group, or line start\n              + '|[^\\\\x5B\\\\x5C\\\\(\\\\)\\\\^]+'  // run of other characters\n              + ')',\n              'g'));\n      var n = parts.length;\n  \n      // Maps captured group numbers to the number they will occupy in\n      // the output or to -1 if that has not been determined, or to\n      // undefined if they need not be capturing in the output.\n      var capturedGroups = [];\n  \n      // Walk over and identify back references to build the capturedGroups\n      // mapping.\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        var p = parts[i];\n        if (p === '(') {\n          // groups are 1-indexed, so max group index is count of '('\n          ++groupIndex;\n        } else if ('\\\\' === p.charAt(0)) {\n          var decimalValue = +p.substring(1);\n          if (decimalValue && decimalValue <= groupIndex) {\n            capturedGroups[decimalValue] = -1;\n          }\n        }\n      }\n  \n      // Renumber groups and reduce capturing groups to non-capturing groups\n      // where possible.\n      for (var i = 1; i < capturedGroups.length; ++i) {\n        if (-1 === capturedGroups[i]) {\n          capturedGroups[i] = ++capturedGroupIndex;\n        }\n      }\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        var p = parts[i];\n        if (p === '(') {\n          ++groupIndex;\n          if (capturedGroups[groupIndex] === undefined) {\n            parts[i] = '(?:';\n          }\n        } else if ('\\\\' === p.charAt(0)) {\n          var decimalValue = +p.substring(1);\n          if (decimalValue && decimalValue <= groupIndex) {\n            parts[i] = '\\\\' + capturedGroups[groupIndex];\n          }\n        }\n      }\n  \n      // Remove any prefix anchors so that the output will match anywhere.\n      // ^^ really does mean an anchored match though.\n      for (var i = 0, groupIndex = 0; i < n; ++i) {\n        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }\n      }\n  \n      // Expand letters to groups to handle mixing of case-sensitive and\n      // case-insensitive patterns if necessary.\n      if (regex.ignoreCase && needToFoldCase) {\n        for (var i = 0; i < n; ++i) {\n          var p = parts[i];\n          var ch0 = p.charAt(0);\n          if (p.length >= 2 && ch0 === '[') {\n            parts[i] = caseFoldCharset(p);\n          } else if (ch0 !== '\\\\') {\n            // TODO: handle letters in numeric escapes.\n            parts[i] = p.replace(\n                /[a-zA-Z]/g,\n                function (ch) {\n                  var cc = ch.charCodeAt(0);\n                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';\n                });\n          }\n        }\n      }\n  \n      return parts.join('');\n    }\n  \n    var rewritten = [];\n    for (var i = 0, n = regexs.length; i < n; ++i) {\n      var regex = regexs[i];\n      if (regex.global || regex.multiline) { throw new Error('' + regex); }\n      rewritten.push(\n          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');\n    }\n  \n    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');\n  }\n\n\n  /**\n   * Split markup into a string of source code and an array mapping ranges in\n   * that string to the text nodes in which they appear.\n   *\n   * <p>\n   * The HTML DOM structure:</p>\n   * <pre>\n   * (Element   \"p\"\n   *   (Element \"b\"\n   *     (Text  \"print \"))       ; #1\n   *   (Text    \"'Hello '\")      ; #2\n   *   (Element \"br\")            ; #3\n   *   (Text    \"  + 'World';\")) ; #4\n   * </pre>\n   * <p>\n   * corresponds to the HTML\n   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>\n   *\n   * <p>\n   * It will produce the output:</p>\n   * <pre>\n   * {\n   *   sourceCode: \"print 'Hello '\\n  + 'World';\",\n   *   //                 1         2\n   *   //       012345678901234 5678901234567\n   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]\n   * }\n   * </pre>\n   * <p>\n   * where #1 is a reference to the {@code \"print \"} text node above, and so\n   * on for the other text nodes.\n   * </p>\n   *\n   * <p>\n   * The {@code} spans array is an array of pairs.  Even elements are the start\n   * indices of substrings, and odd elements are the text nodes (or BR elements)\n   * that contain the text for those substrings.\n   * Substrings continue until the next index or the end of the source.\n   * </p>\n   *\n   * @param {Node} node an HTML DOM subtree containing source-code.\n   * @return {Object} source code and the text nodes in which they occur.\n   */\n  function extractSourceSpans(node) {\n    var nocode = /(?:^|\\s)nocode(?:\\s|$)/;\n  \n    var chunks = [];\n    var length = 0;\n    var spans = [];\n    var k = 0;\n  \n    var whitespace;\n    if (node.currentStyle) {\n      whitespace = node.currentStyle.whiteSpace;\n    } else if (window.getComputedStyle) {\n      whitespace = document.defaultView.getComputedStyle(node, null)\n          .getPropertyValue('white-space');\n    }\n    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);\n  \n    function walk(node) {\n      switch (node.nodeType) {\n        case 1:  // Element\n          if (nocode.test(node.className)) { return; }\n          for (var child = node.firstChild; child; child = child.nextSibling) {\n            walk(child);\n          }\n          var nodeName = node.nodeName;\n          if ('BR' === nodeName || 'LI' === nodeName) {\n            chunks[k] = '\\n';\n            spans[k << 1] = length++;\n            spans[(k++ << 1) | 1] = node;\n          }\n          break;\n        case 3: case 4:  // Text\n          var text = node.nodeValue;\n          if (text.length) {\n            if (!isPreformatted) {\n              text = text.replace(/[ \\t\\r\\n]+/g, ' ');\n            } else {\n              text = text.replace(/\\r\\n?/g, '\\n');  // Normalize newlines.\n            }\n            // TODO: handle tabs here?\n            chunks[k] = text;\n            spans[k << 1] = length;\n            length += text.length;\n            spans[(k++ << 1) | 1] = node;\n          }\n          break;\n      }\n    }\n  \n    walk(node);\n  \n    return {\n      sourceCode: chunks.join('').replace(/\\n$/, ''),\n      spans: spans\n    };\n  }\n\n\n  /**\n   * Apply the given language handler to sourceCode and add the resulting\n   * decorations to out.\n   * @param {number} basePos the index of sourceCode within the chunk of source\n   *    whose decorations are already present on out.\n   */\n  function appendDecorations(basePos, sourceCode, langHandler, out) {\n    if (!sourceCode) { return; }\n    var job = {\n      sourceCode: sourceCode,\n      basePos: basePos\n    };\n    langHandler(job);\n    out.push.apply(out, job.decorations);\n  }\n\n  var notWs = /\\S/;\n\n  /**\n   * Given an element, if it contains only one child element and any text nodes\n   * it contains contain only space characters, return the sole child element.\n   * Otherwise returns undefined.\n   * <p>\n   * This is meant to return the CODE element in {@code <pre><code ...>} when\n   * there is a single child element that contains all the non-space textual\n   * content, but not to return anything where there are multiple child elements\n   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there\n   * is textual content.\n   */\n  function childContentWrapper(element) {\n    var wrapper = undefined;\n    for (var c = element.firstChild; c; c = c.nextSibling) {\n      var type = c.nodeType;\n      wrapper = (type === 1)  // Element Node\n          ? (wrapper ? element : c)\n          : (type === 3)  // Text Node\n          ? (notWs.test(c.nodeValue) ? element : wrapper)\n          : wrapper;\n    }\n    return wrapper === element ? undefined : wrapper;\n  }\n\n  /** Given triples of [style, pattern, context] returns a lexing function,\n    * The lexing function interprets the patterns to find token boundaries and\n    * returns a decoration list of the form\n    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]\n    * where index_n is an index into the sourceCode, and style_n is a style\n    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to\n    * all characters in sourceCode[index_n-1:index_n].\n    *\n    * The stylePatterns is a list whose elements have the form\n    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].\n    *\n    * Style is a style constant like PR_PLAIN, or can be a string of the\n    * form 'lang-FOO', where FOO is a language extension describing the\n    * language of the portion of the token in $1 after pattern executes.\n    * E.g., if style is 'lang-lisp', and group 1 contains the text\n    * '(hello (world))', then that portion of the token will be passed to the\n    * registered lisp handler for formatting.\n    * The text before and after group 1 will be restyled using this decorator\n    * so decorators should take care that this doesn't result in infinite\n    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks\n    * something like ['lang-js', /<[s]cript>(.+?)<\\/script>/].  This may match\n    * '<script>foo()<\\/script>', which would cause the current decorator to\n    * be called with '<script>' which would not match the same rule since\n    * group 1 must not be empty, so it would be instead styled as PR_TAG by\n    * the generic tag rule.  The handler registered for the 'js' extension would\n    * then be called with 'foo()', and finally, the current decorator would\n    * be called with '<\\/script>' which would not match the original rule and\n    * so the generic tag rule would identify it as a tag.\n    *\n    * Pattern must only match prefixes, and if it matches a prefix, then that\n    * match is considered a token with the same style.\n    *\n    * Context is applied to the last non-whitespace, non-comment token\n    * recognized.\n    *\n    * Shortcut is an optional string of characters, any of which, if the first\n    * character, gurantee that this pattern and only this pattern matches.\n    *\n    * @param {Array} shortcutStylePatterns patterns that always start with\n    *   a known character.  Must have a shortcut string.\n    * @param {Array} fallthroughStylePatterns patterns that will be tried in\n    *   order if the shortcut ones fail.  May have shortcuts.\n    *\n    * @return {function (Object)} a\n    *   function that takes source code and returns a list of decorations.\n    */\n  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {\n    var shortcuts = {};\n    var tokenizer;\n    (function () {\n      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);\n      var allRegexs = [];\n      var regexKeys = {};\n      for (var i = 0, n = allPatterns.length; i < n; ++i) {\n        var patternParts = allPatterns[i];\n        var shortcutChars = patternParts[3];\n        if (shortcutChars) {\n          for (var c = shortcutChars.length; --c >= 0;) {\n            shortcuts[shortcutChars.charAt(c)] = patternParts;\n          }\n        }\n        var regex = patternParts[1];\n        var k = '' + regex;\n        if (!regexKeys.hasOwnProperty(k)) {\n          allRegexs.push(regex);\n          regexKeys[k] = null;\n        }\n      }\n      allRegexs.push(/[\\0-\\uffff]/);\n      tokenizer = combinePrefixPatterns(allRegexs);\n    })();\n\n    var nPatterns = fallthroughStylePatterns.length;\n\n    /**\n     * Lexes job.sourceCode and produces an output array job.decorations of\n     * style classes preceded by the position at which they start in\n     * job.sourceCode in order.\n     *\n     * @param {Object} job an object like <pre>{\n     *    sourceCode: {string} sourceText plain text,\n     *    basePos: {int} position of job.sourceCode in the larger chunk of\n     *        sourceCode.\n     * }</pre>\n     */\n    var decorate = function (job) {\n      var sourceCode = job.sourceCode, basePos = job.basePos;\n      /** Even entries are positions in source in ascending order.  Odd enties\n        * are style markers (e.g., PR_COMMENT) that run from that position until\n        * the end.\n        * @type {Array.<number|string>}\n        */\n      var decorations = [basePos, PR_PLAIN];\n      var pos = 0;  // index into sourceCode\n      var tokens = sourceCode.match(tokenizer) || [];\n      var styleCache = {};\n\n      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {\n        var token = tokens[ti];\n        var style = styleCache[token];\n        var match = void 0;\n\n        var isEmbedded;\n        if (typeof style === 'string') {\n          isEmbedded = false;\n        } else {\n          var patternParts = shortcuts[token.charAt(0)];\n          if (patternParts) {\n            match = token.match(patternParts[1]);\n            style = patternParts[0];\n          } else {\n            for (var i = 0; i < nPatterns; ++i) {\n              patternParts = fallthroughStylePatterns[i];\n              match = token.match(patternParts[1]);\n              if (match) {\n                style = patternParts[0];\n                break;\n              }\n            }\n\n            if (!match) {  // make sure that we make progress\n              style = PR_PLAIN;\n            }\n          }\n\n          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);\n          if (isEmbedded && !(match && typeof match[1] === 'string')) {\n            isEmbedded = false;\n            style = PR_SOURCE;\n          }\n\n          if (!isEmbedded) { styleCache[token] = style; }\n        }\n\n        var tokenStart = pos;\n        pos += token.length;\n\n        if (!isEmbedded) {\n          decorations.push(basePos + tokenStart, style);\n        } else {  // Treat group 1 as an embedded block of source code.\n          var embeddedSource = match[1];\n          var embeddedSourceStart = token.indexOf(embeddedSource);\n          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;\n          if (match[2]) {\n            // If embeddedSource can be blank, then it would match at the\n            // beginning which would cause us to infinitely recurse on the\n            // entire token, so we catch the right context in match[2].\n            embeddedSourceEnd = token.length - match[2].length;\n            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;\n          }\n          var lang = style.substring(5);\n          // Decorate the left of the embedded source\n          appendDecorations(\n              basePos + tokenStart,\n              token.substring(0, embeddedSourceStart),\n              decorate, decorations);\n          // Decorate the embedded source\n          appendDecorations(\n              basePos + tokenStart + embeddedSourceStart,\n              embeddedSource,\n              langHandlerForExtension(lang, embeddedSource),\n              decorations);\n          // Decorate the right of the embedded section\n          appendDecorations(\n              basePos + tokenStart + embeddedSourceEnd,\n              token.substring(embeddedSourceEnd),\n              decorate, decorations);\n        }\n      }\n      job.decorations = decorations;\n    };\n    return decorate;\n  }\n\n  /** returns a function that produces a list of decorations from source text.\n    *\n    * This code treats \", ', and ` as string delimiters, and \\ as a string\n    * escape.  It does not recognize perl's qq() style strings.\n    * It has no special handling for double delimiter escapes as in basic, or\n    * the tripled delimiters used in python, but should work on those regardless\n    * although in those cases a single string literal may be broken up into\n    * multiple adjacent string literals.\n    *\n    * It recognizes C, C++, and shell style comments.\n    *\n    * @param {Object} options a set of optional parameters.\n    * @return {function (Object)} a function that examines the source code\n    *     in the input job and builds the decoration list.\n    */\n  function sourceDecorator(options) {\n    var shortcutStylePatterns = [], fallthroughStylePatterns = [];\n    if (options['tripleQuotedStrings']) {\n      // '''multi-line-string''', 'single-line-string', and double-quoted\n      shortcutStylePatterns.push(\n          [PR_STRING,  /^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,\n           null, '\\'\"']);\n    } else if (options['multiLineStrings']) {\n      // 'multi-line-string', \"multi-line-string\"\n      shortcutStylePatterns.push(\n          [PR_STRING,  /^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,\n           null, '\\'\"`']);\n    } else {\n      // 'single-line-string', \"single-line-string\"\n      shortcutStylePatterns.push(\n          [PR_STRING,\n           /^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,\n           null, '\"\\'']);\n    }\n    if (options['verbatimStrings']) {\n      // verbatim-string-literal production from the C# grammar.  See issue 93.\n      fallthroughStylePatterns.push(\n          [PR_STRING, /^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/, null]);\n    }\n    var hc = options['hashComments'];\n    if (hc) {\n      if (options['cStyleComments']) {\n        if (hc > 1) {  // multiline hash comments\n          shortcutStylePatterns.push(\n              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);\n        } else {\n          // Stop C preprocessor declarations at an unclosed open comment\n          shortcutStylePatterns.push(\n              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,\n               null, '#']);\n        }\n        fallthroughStylePatterns.push(\n            [PR_STRING,\n             /^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,\n             null]);\n      } else {\n        shortcutStylePatterns.push([PR_COMMENT, /^#[^\\r\\n]*/, null, '#']);\n      }\n    }\n    if (options['cStyleComments']) {\n      fallthroughStylePatterns.push([PR_COMMENT, /^\\/\\/[^\\r\\n]*/, null]);\n      fallthroughStylePatterns.push(\n          [PR_COMMENT, /^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/, null]);\n    }\n    if (options['regexLiterals']) {\n      /**\n       * @const\n       */\n      var REGEX_LITERAL = (\n          // A regular expression literal starts with a slash that is\n          // not followed by * or / so that it is not confused with\n          // comments.\n          '/(?=[^/*])'\n          // and then contains any number of raw characters,\n          + '(?:[^/\\\\x5B\\\\x5C]'\n          // escape sequences (\\x5C),\n          +    '|\\\\x5C[\\\\s\\\\S]'\n          // or non-nesting character sets (\\x5B\\x5D);\n          +    '|\\\\x5B(?:[^\\\\x5C\\\\x5D]|\\\\x5C[\\\\s\\\\S])*(?:\\\\x5D|$))+'\n          // finally closed by a /.\n          + '/');\n      fallthroughStylePatterns.push(\n          ['lang-regex',\n           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')\n           ]);\n    }\n\n    var types = options['types'];\n    if (types) {\n      fallthroughStylePatterns.push([PR_TYPE, types]);\n    }\n\n    var keywords = (\"\" + options['keywords']).replace(/^ | $/g, '');\n    if (keywords.length) {\n      fallthroughStylePatterns.push(\n          [PR_KEYWORD,\n           new RegExp('^(?:' + keywords.replace(/[\\s,]+/g, '|') + ')\\\\b'),\n           null]);\n    }\n\n    shortcutStylePatterns.push([PR_PLAIN,       /^\\s+/, null, ' \\r\\n\\t\\xA0']);\n    fallthroughStylePatterns.push(\n        // TODO(mikesamuel): recognize non-latin letters and numerals in idents\n        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],\n        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/, null],\n        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],\n        [PR_LITERAL,\n         new RegExp(\n             '^(?:'\n             // A hex number\n             + '0x[a-f0-9]+'\n             // or an octal or decimal number,\n             + '|(?:\\\\d(?:_\\\\d+)*\\\\d*(?:\\\\.\\\\d*)?|\\\\.\\\\d\\\\+)'\n             // possibly in scientific notation\n             + '(?:e[+\\\\-]?\\\\d+)?'\n             + ')'\n             // with an optional modifier like UL for unsigned long\n             + '[a-z]*', 'i'),\n         null, '0123456789'],\n        // Don't treat escaped quotes in bash as starting strings.  See issue 144.\n        [PR_PLAIN,       /^\\\\[\\s\\S]?/, null],\n        [PR_PUNCTUATION, /^.[^\\s\\w\\.$@\\'\\\"\\`\\/\\#\\\\]*/, null]);\n\n    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);\n  }\n\n  var decorateSource = sourceDecorator({\n        'keywords': ALL_KEYWORDS,\n        'hashComments': true,\n        'cStyleComments': true,\n        'multiLineStrings': true,\n        'regexLiterals': true\n      });\n\n  /**\n   * Given a DOM subtree, wraps it in a list, and puts each line into its own\n   * list item.\n   *\n   * @param {Node} node modified in place.  Its content is pulled into an\n   *     HTMLOListElement, and each line is moved into a separate list item.\n   *     This requires cloning elements, so the input might not have unique\n   *     IDs after numbering.\n   */\n  function numberLines(node, opt_startLineNum) {\n    var nocode = /(?:^|\\s)nocode(?:\\s|$)/;\n    var lineBreak = /\\r\\n?|\\n/;\n  \n    var document = node.ownerDocument;\n  \n    var whitespace;\n    if (node.currentStyle) {\n      whitespace = node.currentStyle.whiteSpace;\n    } else if (window.getComputedStyle) {\n      whitespace = document.defaultView.getComputedStyle(node, null)\n          .getPropertyValue('white-space');\n    }\n    // If it's preformatted, then we need to split lines on line breaks\n    // in addition to <BR>s.\n    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);\n  \n    var li = document.createElement('LI');\n    while (node.firstChild) {\n      li.appendChild(node.firstChild);\n    }\n    // An array of lines.  We split below, so this is initialized to one\n    // un-split line.\n    var listItems = [li];\n  \n    function walk(node) {\n      switch (node.nodeType) {\n        case 1:  // Element\n          if (nocode.test(node.className)) { break; }\n          if ('BR' === node.nodeName) {\n            breakAfter(node);\n            // Discard the <BR> since it is now flush against a </LI>.\n            if (node.parentNode) {\n              node.parentNode.removeChild(node);\n            }\n          } else {\n            for (var child = node.firstChild; child; child = child.nextSibling) {\n              walk(child);\n            }\n          }\n          break;\n        case 3: case 4:  // Text\n          if (isPreformatted) {\n            var text = node.nodeValue;\n            var match = text.match(lineBreak);\n            if (match) {\n              var firstLine = text.substring(0, match.index);\n              node.nodeValue = firstLine;\n              var tail = text.substring(match.index + match[0].length);\n              if (tail) {\n                var parent = node.parentNode;\n                parent.insertBefore(\n                    document.createTextNode(tail), node.nextSibling);\n              }\n              breakAfter(node);\n              if (!firstLine) {\n                // Don't leave blank text nodes in the DOM.\n                node.parentNode.removeChild(node);\n              }\n            }\n          }\n          break;\n      }\n    }\n  \n    // Split a line after the given node.\n    function breakAfter(lineEndNode) {\n      // If there's nothing to the right, then we can skip ending the line\n      // here, and move root-wards since splitting just before an end-tag\n      // would require us to create a bunch of empty copies.\n      while (!lineEndNode.nextSibling) {\n        lineEndNode = lineEndNode.parentNode;\n        if (!lineEndNode) { return; }\n      }\n  \n      function breakLeftOf(limit, copy) {\n        // Clone shallowly if this node needs to be on both sides of the break.\n        var rightSide = copy ? limit.cloneNode(false) : limit;\n        var parent = limit.parentNode;\n        if (parent) {\n          // We clone the parent chain.\n          // This helps us resurrect important styling elements that cross lines.\n          // E.g. in <i>Foo<br>Bar</i>\n          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.\n          var parentClone = breakLeftOf(parent, 1);\n          // Move the clone and everything to the right of the original\n          // onto the cloned parent.\n          var next = limit.nextSibling;\n          parentClone.appendChild(rightSide);\n          for (var sibling = next; sibling; sibling = next) {\n            next = sibling.nextSibling;\n            parentClone.appendChild(sibling);\n          }\n        }\n        return rightSide;\n      }\n  \n      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);\n  \n      // Walk the parent chain until we reach an unattached LI.\n      for (var parent;\n           // Check nodeType since IE invents document fragments.\n           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {\n        copiedListItem = parent;\n      }\n      // Put it on the list of lines for later processing.\n      listItems.push(copiedListItem);\n    }\n  \n    // Split lines while there are lines left to split.\n    for (var i = 0;  // Number of lines that have been split so far.\n         i < listItems.length;  // length updated by breakAfter calls.\n         ++i) {\n      walk(listItems[i]);\n    }\n  \n    // Make sure numeric indices show correctly.\n    if (opt_startLineNum === (opt_startLineNum|0)) {\n      listItems[0].setAttribute('value', opt_startLineNum);\n    }\n  \n    var ol = document.createElement('OL');\n    ol.className = 'linenums';\n    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;\n    for (var i = 0, n = listItems.length; i < n; ++i) {\n      li = listItems[i];\n      // Stick a class on the LIs so that stylesheets can\n      // color odd/even rows, or any other row pattern that\n      // is co-prime with 10.\n      li.className = 'L' + ((i + offset) % 10);\n      if (!li.firstChild) {\n        li.appendChild(document.createTextNode('\\xA0'));\n      }\n      ol.appendChild(li);\n    }\n  \n    node.appendChild(ol);\n  }\n\n  /**\n   * Breaks {@code job.sourceCode} around style boundaries in\n   * {@code job.decorations} and modifies {@code job.sourceNode} in place.\n   * @param {Object} job like <pre>{\n   *    sourceCode: {string} source as plain text,\n   *    spans: {Array.<number|Node>} alternating span start indices into source\n   *       and the text node or element (e.g. {@code <BR>}) corresponding to that\n   *       span.\n   *    decorations: {Array.<number|string} an array of style classes preceded\n   *       by the position at which they start in job.sourceCode in order\n   * }</pre>\n   * @private\n   */\n  function recombineTagsAndDecorations(job) {\n    var isIE = /\\bMSIE\\b/.test(navigator.userAgent);\n    var newlineRe = /\\n/g;\n  \n    var source = job.sourceCode;\n    var sourceLength = source.length;\n    // Index into source after the last code-unit recombined.\n    var sourceIndex = 0;\n  \n    var spans = job.spans;\n    var nSpans = spans.length;\n    // Index into spans after the last span which ends at or before sourceIndex.\n    var spanIndex = 0;\n  \n    var decorations = job.decorations;\n    var nDecorations = decorations.length;\n    // Index into decorations after the last decoration which ends at or before\n    // sourceIndex.\n    var decorationIndex = 0;\n  \n    // Remove all zero-length decorations.\n    decorations[nDecorations] = sourceLength;\n    var decPos, i;\n    for (i = decPos = 0; i < nDecorations;) {\n      if (decorations[i] !== decorations[i + 2]) {\n        decorations[decPos++] = decorations[i++];\n        decorations[decPos++] = decorations[i++];\n      } else {\n        i += 2;\n      }\n    }\n    nDecorations = decPos;\n  \n    // Simplify decorations.\n    for (i = decPos = 0; i < nDecorations;) {\n      var startPos = decorations[i];\n      // Conflate all adjacent decorations that use the same style.\n      var startDec = decorations[i + 1];\n      var end = i + 2;\n      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {\n        end += 2;\n      }\n      decorations[decPos++] = startPos;\n      decorations[decPos++] = startDec;\n      i = end;\n    }\n  \n    nDecorations = decorations.length = decPos;\n  \n    var decoration = null;\n    while (spanIndex < nSpans) {\n      var spanStart = spans[spanIndex];\n      var spanEnd = spans[spanIndex + 2] || sourceLength;\n  \n      var decStart = decorations[decorationIndex];\n      var decEnd = decorations[decorationIndex + 2] || sourceLength;\n  \n      var end = Math.min(spanEnd, decEnd);\n  \n      var textNode = spans[spanIndex + 1];\n      var styledText;\n      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s\n          // Don't introduce spans around empty text nodes.\n          && (styledText = source.substring(sourceIndex, end))) {\n        // This may seem bizarre, and it is.  Emitting LF on IE causes the\n        // code to display with spaces instead of line breaks.\n        // Emitting Windows standard issue linebreaks (CRLF) causes a blank\n        // space to appear at the beginning of every line but the first.\n        // Emitting an old Mac OS 9 line separator makes everything spiffy.\n        if (isIE) { styledText = styledText.replace(newlineRe, '\\r'); }\n        textNode.nodeValue = styledText;\n        var document = textNode.ownerDocument;\n        var span = document.createElement('SPAN');\n        span.className = decorations[decorationIndex + 1];\n        var parentNode = textNode.parentNode;\n        parentNode.replaceChild(span, textNode);\n        span.appendChild(textNode);\n        if (sourceIndex < spanEnd) {  // Split off a text node.\n          spans[spanIndex + 1] = textNode\n              // TODO: Possibly optimize by using '' if there's no flicker.\n              = document.createTextNode(source.substring(end, spanEnd));\n          parentNode.insertBefore(textNode, span.nextSibling);\n        }\n      }\n  \n      sourceIndex = end;\n  \n      if (sourceIndex >= spanEnd) {\n        spanIndex += 2;\n      }\n      if (sourceIndex >= decEnd) {\n        decorationIndex += 2;\n      }\n    }\n  }\n\n\n  /** Maps language-specific file extensions to handlers. */\n  var langHandlerRegistry = {};\n  /** Register a language handler for the given file extensions.\n    * @param {function (Object)} handler a function from source code to a list\n    *      of decorations.  Takes a single argument job which describes the\n    *      state of the computation.   The single parameter has the form\n    *      {@code {\n    *        sourceCode: {string} as plain text.\n    *        decorations: {Array.<number|string>} an array of style classes\n    *                     preceded by the position at which they start in\n    *                     job.sourceCode in order.\n    *                     The language handler should assigned this field.\n    *        basePos: {int} the position of source in the larger source chunk.\n    *                 All positions in the output decorations array are relative\n    *                 to the larger source chunk.\n    *      } }\n    * @param {Array.<string>} fileExtensions\n    */\n  function registerLangHandler(handler, fileExtensions) {\n    for (var i = fileExtensions.length; --i >= 0;) {\n      var ext = fileExtensions[i];\n      if (!langHandlerRegistry.hasOwnProperty(ext)) {\n        langHandlerRegistry[ext] = handler;\n      } else if (window['console']) {\n        console['warn']('cannot override language handler %s', ext);\n      }\n    }\n  }\n  function langHandlerForExtension(extension, source) {\n    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {\n      // Treat it as markup if the first non whitespace character is a < and\n      // the last non-whitespace character is a >.\n      extension = /^\\s*</.test(source)\n          ? 'default-markup'\n          : 'default-code';\n    }\n    return langHandlerRegistry[extension];\n  }\n  registerLangHandler(decorateSource, ['default-code']);\n  registerLangHandler(\n      createSimpleLexer(\n          [],\n          [\n           [PR_PLAIN,       /^[^<?]+/],\n           [PR_DECLARATION, /^<!\\w[^>]*(?:>|$)/],\n           [PR_COMMENT,     /^<\\!--[\\s\\S]*?(?:-\\->|$)/],\n           // Unescaped content in an unknown language\n           ['lang-',        /^<\\?([\\s\\S]+?)(?:\\?>|$)/],\n           ['lang-',        /^<%([\\s\\S]+?)(?:%>|$)/],\n           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],\n           ['lang-',        /^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],\n           // Unescaped content in javascript.  (Or possibly vbscript).\n           ['lang-js',      /^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],\n           // Contains unescaped stylesheet content\n           ['lang-css',     /^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],\n           ['lang-in.tag',  /^(<\\/?[a-z][^<>]*>)/i]\n          ]),\n      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);\n  registerLangHandler(\n      createSimpleLexer(\n          [\n           [PR_PLAIN,        /^[\\s]+/, null, ' \\t\\r\\n'],\n           [PR_ATTRIB_VALUE, /^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/, null, '\\\"\\'']\n           ],\n          [\n           [PR_TAG,          /^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],\n           [PR_ATTRIB_NAME,  /^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],\n           ['lang-uq.val',   /^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],\n           [PR_PUNCTUATION,  /^[=<>\\/]+/],\n           ['lang-js',       /^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],\n           ['lang-js',       /^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],\n           ['lang-js',       /^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],\n           ['lang-css',      /^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],\n           ['lang-css',      /^style\\s*=\\s*\\'([^\\']+)\\'/i],\n           ['lang-css',      /^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]\n           ]),\n      ['in.tag']);\n  registerLangHandler(\n      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\\s\\S]+/]]), ['uq.val']);\n  registerLangHandler(sourceDecorator({\n          'keywords': CPP_KEYWORDS,\n          'hashComments': true,\n          'cStyleComments': true,\n          'types': C_TYPES\n        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);\n  registerLangHandler(sourceDecorator({\n          'keywords': 'null,true,false'\n        }), ['json']);\n  registerLangHandler(sourceDecorator({\n          'keywords': CSHARP_KEYWORDS,\n          'hashComments': true,\n          'cStyleComments': true,\n          'verbatimStrings': true,\n          'types': C_TYPES\n        }), ['cs']);\n  registerLangHandler(sourceDecorator({\n          'keywords': JAVA_KEYWORDS,\n          'cStyleComments': true\n        }), ['java']);\n  registerLangHandler(sourceDecorator({\n          'keywords': SH_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true\n        }), ['bsh', 'csh', 'sh']);\n  registerLangHandler(sourceDecorator({\n          'keywords': PYTHON_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'tripleQuotedStrings': true\n        }), ['cv', 'py']);\n  registerLangHandler(sourceDecorator({\n          'keywords': PERL_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'regexLiterals': true\n        }), ['perl', 'pl', 'pm']);\n  registerLangHandler(sourceDecorator({\n          'keywords': RUBY_KEYWORDS,\n          'hashComments': true,\n          'multiLineStrings': true,\n          'regexLiterals': true\n        }), ['rb']);\n  registerLangHandler(sourceDecorator({\n          'keywords': JSCRIPT_KEYWORDS,\n          'cStyleComments': true,\n          'regexLiterals': true\n        }), ['js']);\n  registerLangHandler(sourceDecorator({\n          'keywords': COFFEE_KEYWORDS,\n          'hashComments': 3,  // ### style block comments\n          'cStyleComments': true,\n          'multilineStrings': true,\n          'tripleQuotedStrings': true,\n          'regexLiterals': true\n        }), ['coffee']);\n  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\\s\\S]+/]]), ['regex']);\n\n  function applyDecorator(job) {\n    var opt_langExtension = job.langExtension;\n\n    try {\n      // Extract tags, and convert the source code to plain text.\n      var sourceAndSpans = extractSourceSpans(job.sourceNode);\n      /** Plain text. @type {string} */\n      var source = sourceAndSpans.sourceCode;\n      job.sourceCode = source;\n      job.spans = sourceAndSpans.spans;\n      job.basePos = 0;\n\n      // Apply the appropriate language handler\n      langHandlerForExtension(opt_langExtension, source)(job);\n\n      // Integrate the decorations and tags back into the source code,\n      // modifying the sourceNode in place.\n      recombineTagsAndDecorations(job);\n    } catch (e) {\n      if ('console' in window) {\n        console['log'](e && e['stack'] ? e['stack'] : e);\n      }\n    }\n  }\n\n  /**\n   * @param sourceCodeHtml {string} The HTML to pretty print.\n   * @param opt_langExtension {string} The language name to use.\n   *     Typically, a filename extension like 'cpp' or 'java'.\n   * @param opt_numberLines {number|boolean} True to number lines,\n   *     or the 1-indexed number of the first line in sourceCodeHtml.\n   */\n  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {\n    var container = document.createElement('PRE');\n    // This could cause images to load and onload listeners to fire.\n    // E.g. <img onerror=\"alert(1337)\" src=\"nosuchimage.png\">.\n    // We assume that the inner HTML is from a trusted source.\n    container.innerHTML = sourceCodeHtml;\n    if (opt_numberLines) {\n      numberLines(container, opt_numberLines);\n    }\n\n    var job = {\n      langExtension: opt_langExtension,\n      numberLines: opt_numberLines,\n      sourceNode: container\n    };\n    applyDecorator(job);\n    return container.innerHTML;\n  }\n\n  function prettyPrint(opt_whenDone) {\n    function byTagName(tn) { return document.getElementsByTagName(tn); }\n    // fetch a list of nodes to rewrite\n    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];\n    var elements = [];\n    for (var i = 0; i < codeSegments.length; ++i) {\n      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {\n        elements.push(codeSegments[i][j]);\n      }\n    }\n    codeSegments = null;\n\n    var clock = Date;\n    if (!clock['now']) {\n      clock = { 'now': function () { return +(new Date); } };\n    }\n\n    // The loop is broken into a series of continuations to make sure that we\n    // don't make the browser unresponsive when rewriting a large page.\n    var k = 0;\n    var prettyPrintingJob;\n\n    var langExtensionRe = /\\blang(?:uage)?-([\\w.]+)(?!\\S)/;\n    var prettyPrintRe = /\\bprettyprint\\b/;\n\n    function doWork() {\n      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?\n                     clock['now']() + 250 /* ms */ :\n                     Infinity);\n      for (; k < elements.length && clock['now']() < endTime; k++) {\n        var cs = elements[k];\n        var className = cs.className;\n        if (className.indexOf('prettyprint') >= 0) {\n          // If the classes includes a language extensions, use it.\n          // Language extensions can be specified like\n          //     <pre class=\"prettyprint lang-cpp\">\n          // the language extension \"cpp\" is used to find a language handler as\n          // passed to PR.registerLangHandler.\n          // HTML5 recommends that a language be specified using \"language-\"\n          // as the prefix instead.  Google Code Prettify supports both.\n          // http://dev.w3.org/html5/spec-author-view/the-code-element.html\n          var langExtension = className.match(langExtensionRe);\n          // Support <pre class=\"prettyprint\"><code class=\"language-c\">\n          var wrapper;\n          if (!langExtension && (wrapper = childContentWrapper(cs))\n              && \"CODE\" === wrapper.tagName) {\n            langExtension = wrapper.className.match(langExtensionRe);\n          }\n\n          if (langExtension) {\n            langExtension = langExtension[1];\n          }\n\n          // make sure this is not nested in an already prettified element\n          var nested = false;\n          for (var p = cs.parentNode; p; p = p.parentNode) {\n            if ((p.tagName === 'pre' || p.tagName === 'code' ||\n                 p.tagName === 'xmp') &&\n                p.className && p.className.indexOf('prettyprint') >= 0) {\n              nested = true;\n              break;\n            }\n          }\n          if (!nested) {\n            // Look for a class like linenums or linenums:<n> where <n> is the\n            // 1-indexed number of the first line.\n            var lineNums = cs.className.match(/\\blinenums\\b(?::(\\d+))?/);\n            lineNums = lineNums\n                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true\n                  : false;\n            if (lineNums) { numberLines(cs, lineNums); }\n\n            // do the pretty printing\n            prettyPrintingJob = {\n              langExtension: langExtension,\n              sourceNode: cs,\n              numberLines: lineNums\n            };\n            applyDecorator(prettyPrintingJob);\n          }\n        }\n      }\n      if (k < elements.length) {\n        // finish up in a continuation\n        setTimeout(doWork, 250);\n      } else if (opt_whenDone) {\n        opt_whenDone();\n      }\n    }\n\n    doWork();\n  }\n\n   /**\n    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with\n    * {@code class=prettyprint} and prettify them.\n    *\n    * @param {Function?} opt_whenDone if specified, called when the last entry\n    *     has been finished.\n    */\n  window['prettyPrintOne'] = prettyPrintOne;\n   /**\n    * Pretty print a chunk of code.\n    *\n    * @param {string} sourceCodeHtml code as html\n    * @return {string} code as html, but prettier\n    */\n  window['prettyPrint'] = prettyPrint;\n   /**\n    * Contains functions for creating and registering new language handlers.\n    * @type {Object}\n    */\n  window['PR'] = {\n        'createSimpleLexer': createSimpleLexer,\n        'registerLangHandler': registerLangHandler,\n        'sourceDecorator': sourceDecorator,\n        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,\n        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,\n        'PR_COMMENT': PR_COMMENT,\n        'PR_DECLARATION': PR_DECLARATION,\n        'PR_KEYWORD': PR_KEYWORD,\n        'PR_LITERAL': PR_LITERAL,\n        'PR_NOCODE': PR_NOCODE,\n        'PR_PLAIN': PR_PLAIN,\n        'PR_PUNCTUATION': PR_PUNCTUATION,\n        'PR_SOURCE': PR_SOURCE,\n        'PR_STRING': PR_STRING,\n        'PR_TAG': PR_TAG,\n        'PR_TYPE': PR_TYPE\n      };\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/mouse-wheel.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - mouse wheel</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      wheelStep: 20\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      wheelStep: 100\n  });\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          wheelStep: 20\n      });\n\n      $('#testDiv2').slimScroll({\n          wheelStep: 100\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/multiple-elements.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - multiple elements</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <div class=\"area\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<div style=\"clear:both\"></div>\n<pre class=\"prettyprint\">\n  $('.area').slimscroll({\n    width: '200px'\n  }).parent().css({\n    'float': 'left',\n    'margin-right': '30px'\n  });\n</pre>\n\n<div style=\"clear:both\"></div>\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('.area').slimscroll({\n        width: '200px'\n      }).parent().css({\n        'float': 'left',\n        'margin-right': '30px'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/navigation.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - navigation</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<div id=\"nav\">\n  <h1>jQuery slimScroll</h1>\n  <h2>Facebook-style jQuery Scrollbar</h1>\n  <hr />\n  <ul>\n    <li><a target=\"main\" href=\"height-width.html\">Height / Width options</a></li>\n    <li><a target=\"main\" href=\"scrollbar.html\">Scrollbar options</a></li>\n    <li><a target=\"main\" href=\"rail.html\">Rail options</a></li>\n    <li><a target=\"main\" href=\"start-position.html\">Start position</a></li>\n    <li><a target=\"main\" href=\"chaining.html\">Chaining</a></li>\n    <li><a target=\"main\" href=\"multiple-elements.html\">Mulitple bindings</a></li>\n    <li><a target=\"main\" href=\"programmatic-scrolling.html\">Programmatic Scrolling</a></li>\n    <li><a target=\"main\" href=\"scroll-events.html\">Scroll Events</a></li>\n    <li><a target=\"main\" href=\"allow-page-scroll.html\">allowPageScroll option</a></li>\n    <li><a target=\"main\" href=\"disable-fade-out.html\">disableFadeOut option</a></li>\n    <li><a target=\"main\" href=\"mouse-wheel.html\">wheelStep option</a></li>\n    <li><a target=\"main\" href=\"nested.html\">nested elements</a></li>\n    <li><a target=\"main\" href=\"dynamic-content.html\">dynamic content</a></li>\n  </ul>\n</div>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/nested.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - nested elements</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      <div id=\"testDivNested\">\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n      </div>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    height: '500px'\n  });\n  $('#testDivNested').slimscroll({\n    width: '300px',\n    height: '200px'\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll({\n        height: '500px'\n      });\n      $('#testDivNested').slimscroll({\n        width: '300px',\n        height: '200px'\n      }).parent().css({\n        'float': 'left',\n        'margin': '0 10px 10px 0'\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/programmatic-scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - programmatic scrolling</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <input type=\"button\" id=\"scrollDown\" value=\"scroll down by 50 px\" />\n  <input type=\"button\" id=\"scrollUp\" value=\"scroll up by 50 px\" />\n\n\n<pre class=\"prettyprint\">\n$('#testDiv').slimscroll({\n  height: '250px'\n});\n\n$('#scrollDown').click(function(){\n  $('#testDiv').slimScroll({ scrollBy: '50px' });\n});\n\n$('#scrollUp').click(function(){\n  $('#testDiv').slimScroll({ scrollBy: '-50px' });\n});\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n  <input type=\"button\" id=\"scrollDownTo\" value=\"Scroll to 300px from the top\" />\n  <input type=\"button\" id=\"scrollUpTo\" value=\"Scroll to 20px from the top\" />\n\n\n<pre class=\"prettyprint\">\n$('#testDiv2').slimscroll({\n  height: '250px'\n});\n\n$('#scrollDownTo').click(function(){\n  $('#testDiv2').slimScroll({ scrollTo: '300px' });\n});\n\n$('#scrollUpTo').click(function(){\n  $('#testDiv2').slimScroll({ scrollTo: '20px' });\n});\n</pre>\n\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        height: '250px'\n      });\n\n      $('#scrollDown').click(function(){\n        $('#testDiv').slimScroll({ scrollBy: '50px' });\n      });\n\n      $('#scrollUp').click(function(){\n        $('#testDiv').slimScroll({ scrollBy: '-50px' });\n      });\n\n      $('#testDiv2').slimscroll({\n        height: '250px'\n      });\n\n      $('#scrollDownTo').click(function(){\n        $('#testDiv2').slimScroll({ scrollTo: '300px' });\n      });\n\n      $('#scrollUpTo').click(function(){\n        $('#testDiv2').slimScroll({ scrollTo: '20px' });\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/rail.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - rail options</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      alwaysVisible: true,\n      railVisible: true\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      railVisible: true,\n      railColor: '#f00'\n  });\n</pre>\n\n  <div id=\"testDiv3\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv3').slimScroll({\n      railVisible: true,\n      railOpacity: 0.8\n  });\n</pre>\n\n  <div id=\"testDiv4\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv4').slimscroll({\n    railVisible: true\n  });\n</pre>\n\n  <div id=\"testDiv5\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  // This also removes dependency on jQuery UI\n  $('#testDiv5').slimscroll({\n    railDraggable: false\n  });\n</pre>\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          alwaysVisible: true,\n          railVisible: true\n      });\n\n      $('#testDiv2').slimScroll({\n          railVisible: true,\n          railColor: '#f00'\n      });\n\n      $('#testDiv3').slimScroll({\n          railVisible: true,\n          railOpacity: 0.8\n      });\n\n      $('#testDiv4').slimscroll({\n        railVisible: true\n      });\n\n      $('#testDiv5').slimscroll({\n        railDraggable: false\n      });\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scroll-events.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - top/bottom events</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n  <div style=\"padding:2px;border:1px dashed #333;margin:2px;\" id=\"testDivOut\"></div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    alwaysVisible: true\n  }).bind('slimscroll', function(e, pos) {\n    $('#testDivOut').append(\"Reached \" + pos + \", \");\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n  </div>\n  <div style=\"padding:2px;border:1px dashed #333;margin:2px;\" id=\"testDivOut2\"></div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {\n    $('#testDivOut2').append(\"Scroll value: \" + pos + \"px\");\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimscroll({\n        alwaysVisible: true\n      }).bind('slimscroll', function(e, pos) {\n        $('#testDivOut').append(\"Reached \" + pos + \", \");\n      });\n\n      $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {\n        $('#testDivOut2').append(\"Scroll: \" + pos + \"px, \");\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/scrollbar.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - scrollbar options</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimscroll({\n    size: '15px'\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      position: 'left'\n  });\n</pre>\n\n  <div id=\"testDiv3\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv3').slimScroll({\n      color: '#00f'\n  });\n</pre>\n\n\n\n  <div id=\"testDiv4\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv4').slimScroll({\n      alwaysVisible: true\n  });\n</pre>\n\n\n\n  <div id=\"testDiv5\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv5').slimScroll({\n      distance: '20px',\n      opacity: 1\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n      $('#testDiv').slimscroll({\n        size: '15px'\n      });\n\n      $('#testDiv2').slimScroll({\n          position: 'left'\n      });\n\n      $('#testDiv3').slimScroll({\n          color: '#00f'\n      });\n\n      $('#testDiv4').slimScroll({\n          alwaysVisible: true\n      });\n\n      $('#testDiv5').slimScroll({\n          distance: '20px',\n          opacity: 1\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/start-position.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<title>jquery.slimscroll - start position</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js\"></script>\n<link href=\"libs/prettify/prettify.css\" type=\"text/css\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"libs/prettify/prettify.js\"></script>\n<script type=\"text/javascript\" src=\"../jquery.slimscroll.js\"></script>\n<link href=\"style.css\" type=\"text/css\" rel=\"stylesheet\" />\n</head>\n<body>\n<a id=\"git-fork\" href=\"https://github.com/rochal/jQuery-slimScroll\"><img src=\"https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png\" alt=\"Fork me on GitHub\"></a>\n\n<div class=\"examples\">\n  <div id=\"testDiv\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv').slimScroll({\n      start: 'bottom'\n  });\n</pre>\n\n  <div id=\"testDiv2\">\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p><span class=\"helloDiv\" style=\"background:green;font-weigh:bold;\">Hello!</span>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>\n    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>\n    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>\n    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>\n    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>\n  </div>\n\n<pre class=\"prettyprint\">\n  $('#testDiv2').slimScroll({\n      start: $('.helloDiv')\n  });\n</pre>\n\n\n</div>\n\n<script type=\"text/javascript\">\n    $(function(){\n\n      $('#testDiv').slimScroll({\n          start: 'bottom'\n      });\n\n      $('#testDiv2').slimScroll({\n          start: $('.helloDiv')\n      });\n\n    });\n</script>\n\n\n<script type=\"text/javascript\">\n\n  //enable syntax highlighter\n  prettyPrint();\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-3112455-22']);\n  _gaq.push(['_setDomainName', 'none']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>\n</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/examples/style.css",
    "content": "body { font-family:Verdana,sans-serif; font-size:12px; color:#000; background:#111; }\nh1 { font-size:20px; margin:0 }\nh2 { font-size:10px; margin:0 }\np { margin:5px 0; font-size:12px; }\npre.prettyprint { padding:15px; border:1px solid #eee; border-radius:5px; background:#eee; border-bottom:3px solid; }\n.examples { border-radius:20px; background:#fff; padding:15px;\n  margin:0 150px 0 0; border-collapse: collapse; border:1px solid #000; }\n.slimScrollDiv { border:1px solid #eee; }\n#nav { position:fixed; top:0 left:0; background:#fff; padding:15px; border-radius:20px; width:200px; }\n#nav ul { list-style-type:square; list-style-position:inside; margin:20px 0 0 0; padding:0; }\n#nav a { text-decoration:none; color:#000; }\n#nav a:hover { text-decoration: underline }\n#git-fork img { position:fixed; top:0; right:0; border:0; z-index:999; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/jquery.slimscroll.js",
    "content": "/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 1.1.1\n *\n */\n(function($) {\n\n  jQuery.fn.extend({\n    slimScroll: function(options) {\n\n      var defaults = {\n\n        // width in pixels of the visible scroll area\n        width : 'auto',\n\n        // height in pixels of the visible scroll area\n        height : '250px',\n\n        // width in pixels of the scrollbar and rail\n        size : '7px',\n\n        // scrollbar color, accepts any hex/color value\n        color: '#000',\n\n        // scrollbar position - left/right\n        position : 'right',\n\n        // distance in pixels between the side edge and the scrollbar\n        distance : '1px',\n\n        // default scroll position on load - top / bottom / $('selector')\n        start : 'top',\n\n        // sets scrollbar opacity\n        opacity : .4,\n\n        // enables always-on mode for the scrollbar\n        alwaysVisible : false,\n\n        // check if we should hide the scrollbar when user is hovering over\n        disableFadeOut: false,\n\n        // sets visibility of the rail\n        railVisible : false,\n\n        // sets rail color\n        railColor : '#333',\n\n        // sets rail opacity\n        railOpacity : .2,\n\n        // whether  we should use jQuery UI Draggable to enable bar dragging\n        railDraggable : true,\n\n        // defautlt CSS class of the slimscroll rail\n        railClass : 'slimScrollRail',\n\n        // defautlt CSS class of the slimscroll bar\n        barClass : 'slimScrollBar',\n\n        // defautlt CSS class of the slimscroll wrapper\n        wrapperClass : 'slimScrollDiv',\n\n        // check if mousewheel should scroll the window if we reach top/bottom\n        allowPageScroll : false,\n\n        // scroll amount applied to each mouse wheel step\n        wheelStep : 20,\n\n        // scroll amount applied when user is using gestures\n        touchScrollStep : 200\n      };\n\n      var o = $.extend(defaults, options);\n\n      // do it for every element that matches selector\n      this.each(function(){\n\n      var isOverPanel, isOverBar, isDragg, queueHide, touchDif,\n        barHeight, percentScroll, lastScroll,\n        divS = '<div></div>',\n        minBarHeight = 30,\n        releaseScroll = false;\n\n        // used in event handlers and for better minification\n        var me = $(this);\n\n        // ensure we are not binding it again\n        if (me.parent().hasClass(o.wrapperClass))\n        {\n            // start from last bar position\n            var offset = me.scrollTop();\n\n            // find bar and rail\n            bar = me.parent().find('.' + o.barClass);\n            rail = me.parent().find('.' + o.railClass);\n\n            getBarHeight();\n\n            // check if we should scroll existing instance\n            if ($.isPlainObject(options))\n            {\n              // Pass height: auto to an existing slimscroll object to force a resize after contents have changed\n              if ( 'height' in options && options.height == 'auto' ) {\n                me.parent().css('height', 'auto');\n                me.css('height', 'auto');\n                var height = me.parent().parent().innerHeight();\n                me.parent().css('height', height);\n                me.css('height', height);\n              }\n\n              if ('scrollTo' in options)\n              {\n                // jump to a static point\n                offset = parseInt(o.scrollTo);\n              }\n              else if ('scrollBy' in options)\n              {\n                // jump by value pixels\n                offset += parseInt(o.scrollBy);\n              }\n              else if ('destroy' in options)\n              {\n                // remove slimscroll elements\n                bar.remove();\n                rail.remove();\n                me.unwrap();\n                return;\n              }\n\n              // scroll content by the given offset\n              scrollContent(offset, false, true);\n            }\n\n            return;\n        }\n\n        // optionally set height to the parent's height\n        o.height = (o.height == 'auto') ? me.parent().innerHeight() : o.height;\n\n        // wrap content\n        var wrapper = $(divS)\n          .addClass(o.wrapperClass)\n          .css({\n            position: 'relative',\n            overflow: 'hidden',\n            width: o.width,\n            height: o.height\n          });\n\n        // update style for the div\n        me.css({\n          overflow: 'hidden',\n          width: o.width,\n          height: o.height\n        });\n\n        // create scrollbar rail\n        var rail = $(divS)\n          .addClass(o.railClass)\n          .css({\n            width: o.size,\n            height: '100%',\n            position: 'absolute',\n            top: 0,\n            display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',\n            'border-radius': o.size,\n            background: o.railColor,\n            opacity: o.railOpacity,\n            zIndex: 90\n          });\n\n        // create scrollbar\n        var bar = $(divS)\n          .addClass(o.barClass)\n          .css({\n            background: o.color,\n            width: o.size,\n            position: 'absolute',\n            top: 0,\n            opacity: o.opacity,\n            display: o.alwaysVisible ? 'block' : 'none',\n            'border-radius' : o.size,\n            BorderRadius: o.size,\n            MozBorderRadius: o.size,\n            WebkitBorderRadius: o.size,\n            zIndex: 99\n          });\n\n        // set position\n        var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };\n        rail.css(posCss);\n        bar.css(posCss);\n\n        // wrap it\n        me.wrap(wrapper);\n\n        // append to parent div\n        me.parent().append(bar);\n        me.parent().append(rail);\n\n        // make it draggable\n        if (o.railDraggable)\n        {\n          bar.draggable({\n            axis: 'y',\n            containment: 'parent',\n            start: function() { isDragg = true; },\n            stop: function() { isDragg = false; hideBar(); },\n            drag: function(e)\n            {\n              // scroll content\n              scrollContent(0, $(this).position().top, false);\n            }\n          });\n        }\n\n        // on rail over\n        rail.hover(function(){\n          showBar();\n        }, function(){\n          hideBar();\n        });\n\n        // on bar over\n        bar.hover(function(){\n          isOverBar = true;\n        }, function(){\n          isOverBar = false;\n        });\n\n        // show on parent mouseover\n        me.hover(function(){\n          isOverPanel = true;\n          showBar();\n          hideBar();\n        }, function(){\n          isOverPanel = false;\n          hideBar();\n        });\n\n        // support for mobile\n        me.bind('touchstart', function(e,b){\n          if (e.originalEvent.touches.length)\n          {\n            // record where touch started\n            touchDif = e.originalEvent.touches[0].pageY;\n          }\n        });\n\n        me.bind('touchmove', function(e){\n          // prevent scrolling the page\n          e.originalEvent.preventDefault();\n          if (e.originalEvent.touches.length)\n          {\n            // see how far user swiped\n            var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;\n            // scroll content\n            scrollContent(diff, true);\n          }\n        });\n\n        // check start position\n        if (o.start === 'bottom')\n        {\n          // scroll content to bottom\n          bar.css({ top: me.outerHeight() - bar.outerHeight() });\n          scrollContent(0, true);\n        }\n        else if (o.start !== 'top')\n        {\n          // assume jQuery selector\n          scrollContent($(o.start).position().top, null, true);\n\n          // make sure bar stays hidden\n          if (!o.alwaysVisible) { bar.hide(); }\n        }\n\n        // attach scroll events\n        attachWheel();\n\n        // set up initial height\n        getBarHeight();\n\n        function _onWheel(e)\n        {\n          // use mouse wheel only when mouse is over\n          if (!isOverPanel) { return; }\n\n          var e = e || window.event;\n\n          var delta = 0;\n          if (e.wheelDelta) { delta = -e.wheelDelta/120; }\n          if (e.detail) { delta = e.detail / 3; }\n\n          var target = e.target || e.srcTarget;\n          if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {\n            // scroll content\n            scrollContent(delta, true);\n          }\n\n          // stop window scroll\n          if (e.preventDefault && !releaseScroll) { e.preventDefault(); }\n          if (!releaseScroll) { e.returnValue = false; }\n        }\n\n        function scrollContent(y, isWheel, isJump)\n        {\n          var delta = y;\n          var maxTop = me.outerHeight() - bar.outerHeight();\n\n          if (isWheel)\n          {\n            // move bar with mouse wheel\n            delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();\n\n            // move bar, make sure it doesn't go out\n            delta = Math.min(Math.max(delta, 0), maxTop);\n\n            // if scrolling down, make sure a fractional change to the\n            // scroll position isn't rounded away when the scrollbar's CSS is set\n            // this flooring of delta would happened automatically when\n            // bar.css is set below, but we floor here for clarity\n            delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);\n\n            // scroll the scrollbar\n            bar.css({ top: delta + 'px' });\n          }\n\n          // calculate actual scroll amount\n          percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\n          delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\n\n          if (isJump)\n          {\n            delta = y;\n            var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\n            offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);\n            bar.css({ top: offsetTop + 'px' });\n          }\n\n          // scroll content\n          me.scrollTop(delta);\n\n          // fire scrolling event\n          me.trigger('slimscrolling', ~~delta);\n\n          // ensure bar is visible\n          showBar();\n\n          // trigger hide when scroll is stopped\n          hideBar();\n        }\n\n        function attachWheel()\n        {\n          if (window.addEventListener)\n          {\n            this.addEventListener('DOMMouseScroll', _onWheel, false );\n            this.addEventListener('mousewheel', _onWheel, false );\n          }\n          else\n          {\n            document.attachEvent(\"onmousewheel\", _onWheel)\n          }\n        }\n\n        function getBarHeight()\n        {\n          // calculate scrollbar height and make sure it is not too small\n          barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\n          bar.css({ height: barHeight + 'px' });\n\n          // hide scrollbar if content is not long enough\n          var display = barHeight == me.outerHeight() ? 'none' : 'block';\n          bar.css({ display: display });\n        }\n\n        function showBar()\n        {\n          // recalculate bar height\n          getBarHeight();\n          clearTimeout(queueHide);\n\n          // when bar reached top or bottom\n          if (percentScroll == ~~percentScroll)\n          {\n            //release wheel\n            releaseScroll = o.allowPageScroll;\n\n            // publish approporiate event\n            if (lastScroll != percentScroll)\n            {\n                var msg = (~~percentScroll == 0) ? 'top' : 'bottom';\n                me.trigger('slimscroll', msg);\n            }\n          }\n          lastScroll = percentScroll;\n\n          // show only when required\n          if(barHeight >= me.outerHeight()) {\n            //allow window scroll\n            releaseScroll = true;\n            return;\n          }\n          bar.stop(true,true).fadeIn('fast');\n          if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\n        }\n\n        function hideBar()\n        {\n          // only hide when options allow it\n          if (!o.alwaysVisible)\n          {\n            queueHide = setTimeout(function(){\n              if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\n              {\n                bar.fadeOut('slow');\n                rail.fadeOut('slow');\n              }\n            }, 1000);\n          }\n        }\n\n      });\n\n      // maintain chainability\n      return this;\n    }\n  });\n\n  jQuery.fn.extend({\n    slimscroll: jQuery.fn.slimScroll\n  });\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery-slimScroll/slimScroll.jquery.json",
    "content": "{\n  \"name\"        : \"slimScroll\",\n  \"version\"     : \"1.1.1\",\n  \"title\"       : \"jQuery slimScroll scrollbar\",\n  \"description\" : \"slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.\",\n  \"keywords\"    : [\"scrollbar\", \"scroll\", \"slimscroll\", \"scrollable\", \"scrolling\", \"scroller\", \"ui\"],\n  \"demo\"        : \"http://rocha.la/jQuery-slimScroll/\",\n  \"homepage\"    : \"http://rocha.la/jQuery-slimScroll/\",\n  \"download\"    : \"http://rocha.la/jQuery-slimScroll/\",\n\n  \"author\" : {\n    \"name\"  : \"Piotr Rochala\",\n    \"url\"   : \"http://rocha.la/\"\n  },\n\n  \"dependencies\" : {\n    \"jquery\" : \">= 1.7\"\n  },\n\n  \"licenses\" : [\n    {\n      \"type\": \"MIT\",\n      \"url\": \"http://www.opensource.org/licenses/mit-license.php\"\n    },\n    {\n      \"type\": \"GPL\",\n      \"url\": \"http://www.opensource.org/licenses/gpl-license.php\"\n    }\n  ]\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/jquery.ba-resize.js",
    "content": "/*!\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery resize event\n//\n// *Version: 1.1, Last updated: 3/14/2010*\n// \n// Project Home - http://benalman.com/projects/jquery-resize-plugin/\n// GitHub       - http://github.com/cowboy/jquery-resize/\n// Source       - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js\n// (Minified)   - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb)\n// \n// About: License\n// \n// Copyright (c) 2010 \"Cowboy\" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n// \n// About: Examples\n// \n// This working example, complete with fully commented code, illustrates a few\n// ways in which this plugin can be used.\n// \n// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/\n// \n// About: Support and Testing\n// \n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n// \n// jQuery Versions - 1.3.2, 1.4.1, 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1.\n// Unit Tests      - http://benalman.com/code/projects/jquery-resize/unit/\n// \n// About: Release History\n// \n// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger\n//       immediately after bind in some circumstances. Also changed $.fn.data\n//       to $.data to improve performance.\n// 1.0 - (2/10/2010) Initial release\n\n(function($,window,undefined){\n  '$:nomunge'; // Used by YUI compressor.\n  \n  // A jQuery object containing all non-window elements to which the resize\n  // event is bound.\n  var elems = $([]),\n    \n    // Extend $.resize if it already exists, otherwise create it.\n    jq_resize = $.resize = $.extend( $.resize, {} ),\n    \n    timeout_id,\n    \n    // Reused strings.\n    str_setTimeout = 'setTimeout',\n    str_resize = 'resize',\n    str_data = str_resize + '-special-event',\n    str_delay = 'delay',\n    str_throttle = 'throttleWindow';\n  \n  // Property: jQuery.resize.delay\n  // \n  // The numeric interval (in milliseconds) at which the resize event polling\n  // loop executes. Defaults to 250.\n  \n  jq_resize[ str_delay ] = 250;\n  \n  // Property: jQuery.resize.throttleWindow\n  // \n  // Throttle the native window object resize event to fire no more than once\n  // every <jQuery.resize.delay> milliseconds. Defaults to true.\n  // \n  // Because the window object has its own resize event, it doesn't need to be\n  // provided by this plugin, and its execution can be left entirely up to the\n  // browser. However, since certain browsers fire the resize event continuously\n  // while others do not, enabling this will throttle the window resize event,\n  // making event behavior consistent across all elements in all browsers.\n  // \n  // While setting this property to false will disable window object resize\n  // event throttling, please note that this property must be changed before any\n  // window object resize event callbacks are bound.\n  \n  jq_resize[ str_throttle ] = true;\n  \n  // Event: resize event\n  // \n  // Fired when an element's width or height changes. Because browsers only\n  // provide this event for the window element, for other elements a polling\n  // loop is initialized, running every <jQuery.resize.delay> milliseconds\n  // to see if elements' dimensions have changed. You may bind with either\n  // .resize( fn ) or .bind( \"resize\", fn ), and unbind with .unbind( \"resize\" ).\n  // \n  // Usage:\n  // \n  // > jQuery('selector').bind( 'resize', function(e) {\n  // >   // element's width or height has changed!\n  // >   ...\n  // > });\n  // \n  // Additional Notes:\n  // \n  // * The polling loop is not created until at least one callback is actually\n  //   bound to the 'resize' event, and this single polling loop is shared\n  //   across all elements.\n  // \n  // Double firing issue in jQuery 1.3.2:\n  // \n  // While this plugin works in jQuery 1.3.2, if an element's event callbacks\n  // are manually triggered via .trigger( 'resize' ) or .resize() those\n  // callbacks may double-fire, due to limitations in the jQuery 1.3.2 special\n  // events system. This is not an issue when using jQuery 1.4+.\n  // \n  // > // While this works in jQuery 1.4+\n  // > $(elem).css({ width: new_w, height: new_h }).resize();\n  // > \n  // > // In jQuery 1.3.2, you need to do this:\n  // > var elem = $(elem);\n  // > elem.css({ width: new_w, height: new_h });\n  // > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } );\n  // > elem.resize();\n      \n  $.event.special[ str_resize ] = {\n    \n    // Called only when the first 'resize' event callback is bound per element.\n    setup: function() {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery will bind the event using DOM methods. Since only 'window'\n      // objects have a .setTimeout method, this should be a sufficient test.\n      // Unless, of course, we're throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var elem = $(this);\n      \n      // Add this element to the list of internal elements to monitor.\n      elems = elems.add( elem );\n      \n      // Initialize data store on the element.\n      $.data( this, str_data, { w: elem.width(), h: elem.height() } );\n      \n      // If this is the first element added, start the polling loop.\n      if ( elems.length === 1 ) {\n        loopy();\n      }\n    },\n    \n    // Called only when the last 'resize' event callback is unbound per element.\n    teardown: function() {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery will unbind the event using DOM methods. Since only 'window'\n      // objects have a .setTimeout method, this should be a sufficient test.\n      // Unless, of course, we're throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var elem = $(this);\n      \n      // Remove this element from the list of internal elements to monitor.\n      elems = elems.not( elem );\n      \n      // Remove any data stored on the element.\n      elem.removeData( str_data );\n      \n      // If this is the last element removed, stop the polling loop.\n      if ( !elems.length ) {\n        clearTimeout( timeout_id );\n      }\n    },\n    \n    // Called every time a 'resize' event callback is bound per element (new in\n    // jQuery 1.4).\n    add: function( handleObj ) {\n      // Since window has its own native 'resize' event, return false so that\n      // jQuery doesn't modify the event object. Unless, of course, we're\n      // throttling the 'resize' event for window.\n      if ( !jq_resize[ str_throttle ] && this[ str_setTimeout ] ) { return false; }\n      \n      var old_handler;\n      \n      // The new_handler function is executed every time the event is triggered.\n      // This is used to update the internal element data store with the width\n      // and height when the event is triggered manually, to avoid double-firing\n      // of the event callback. See the \"Double firing issue in jQuery 1.3.2\"\n      // comments above for more information.\n      \n      function new_handler( e, w, h ) {\n        var elem = $(this),\n          data = $.data( this, str_data );\n        \n        // If called from the polling loop, w and h will be passed in as\n        // arguments. If called manually, via .trigger( 'resize' ) or .resize(),\n        // those values will need to be computed.\n        data.w = w !== undefined ? w : elem.width();\n        data.h = h !== undefined ? h : elem.height();\n        \n        old_handler.apply( this, arguments );\n      };\n      \n      // This may seem a little complicated, but it normalizes the special event\n      // .add method between jQuery 1.4/1.4.1 and 1.4.2+\n      if ( $.isFunction( handleObj ) ) {\n        // 1.4, 1.4.1\n        old_handler = handleObj;\n        return new_handler;\n      } else {\n        // 1.4.2+\n        old_handler = handleObj.handler;\n        handleObj.handler = new_handler;\n      }\n    }\n    \n  };\n  \n  function loopy() {\n    \n    // Start the polling loop, asynchronously.\n    timeout_id = window[ str_setTimeout ](function(){\n      \n      // Iterate over all elements to which the 'resize' event is bound.\n      elems.each(function(){\n        var elem = $(this),\n          width = elem.width(),\n          height = elem.height(),\n          data = $.data( this, str_data );\n        \n        // If element size has changed since the last time, update the element\n        // data store and trigger the 'resize' event.\n        if ( width !== data.w || height !== data.h ) {\n          elem.trigger( str_resize, [ data.w = width, data.h = height ] );\n        }\n        \n      });\n      \n      // Loop.\n      loopy();\n      \n    }, jq_resize[ str_delay ] );\n    \n  };\n  \n})(jQuery,this);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/js-beautify/beautify-html.js",
    "content": "/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n  The MIT License (MIT)\n\n  Copyright (c) 2007-2013 Einar Lielmanis and contributors.\n\n  Permission is hereby granted, free of charge, to any person\n  obtaining a copy of this software and associated documentation files\n  (the \"Software\"), to deal in the Software without restriction,\n  including without limitation the rights to use, copy, modify, merge,\n  publish, distribute, sublicense, and/or sell copies of the Software,\n  and to permit persons to whom the Software is furnished to do so,\n  subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be\n  included in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n  SOFTWARE.\n\n\n Style HTML\n---------------\n\n  Written by Nochum Sossonko, (nsossonko@hotmail.com)\n\n  Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>\n    http://jsbeautifier.org/\n\n  Usage:\n    style_html(html_source);\n\n    style_html(html_source, options);\n\n  The options are:\n    indent_size (default 4)          — indentation size,\n    indent_char (default space)      — character to indent with,\n    wrap_line_length (default 250)            -  maximum amount of characters per line (0 = disable)\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\n            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.\n    unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n    indent_scripts (default normal)  - \"keep\"|\"separate\"|\"normal\"\n    preserve_newlines (default true) - whether existing line breaks before elements should be preserved\n                                        Only works before elements, not inside tags or for text.\n    max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk\n\n    e.g.\n\n    style_html(html_source, {\n      'indent_size': 2,\n      'indent_char': ' ',\n      'wrap_line_length': 78,\n      'brace_style': 'expand',\n      'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u'],\n      'preserve_newlines': true,\n      'max_preserve_newlines': 5\n    });\n*/\n\n(function() {\n\n    function trim(s) {\n        return s.replace(/^\\s+|\\s+$/g, '');\n    }\n\n    function style_html(html_source, options, js_beautify, css_beautify) {\n    //Wrapper function to invoke all the necessary constructors and deal with the output.\n\n      var multi_parser,\n          indent_size,\n          indent_character,\n          wrap_line_length,\n          brace_style,\n          unformatted,\n          preserve_newlines,\n          max_preserve_newlines;\n\n      options = options || {};\n\n      // backwards compatibility to 1.3.4\n      if(options.wrap_line_length == undefined && options.max_char != undefined) {\n        options.wrap_line_length = options.max_char;\n      }\n\n      indent_size = parseInt(options.indent_size || 4);\n      indent_character = options.indent_char || ' ';\n      brace_style = options.brace_style || 'collapse';\n      wrap_line_length = options.wrap_line_length === 0 ? 32786 : parseInt(options.wrap_line_length || 250);\n      unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n      preserve_newlines = options.preserve_newlines || true;\n      max_preserve_newlines = preserve_newlines ? parseInt(options.max_preserve_newlines || 32786) : 0;\n\n      function Parser() {\n\n        this.pos = 0; //Parser position\n        this.token = '';\n        this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT\n        this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values\n          parent: 'parent1',\n          parentcount: 1,\n          parent1: ''\n        };\n        this.tag_type = '';\n        this.token_text = this.last_token = this.last_text = this.token_type = '';\n        this.newlines = 0;\n\n        this.Utils = { //Uilities made available to the various functions\n          whitespace: \"\\n\\r\\t \".split(''),\n          single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML\n          extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them\n          in_array: function (what, arr) {\n            for (var i=0; i<arr.length; i++) {\n              if (what === arr[i]) {\n                return true;\n              }\n            }\n            return false;\n          }\n        };\n\n        this.traverse_whitespace = function() {\n          var input_char = '';\n\n          input_char = this.input.charAt(this.pos);\n          if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n            this.newlines = 0;\n            while (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n              if(preserve_newlines && input_char === '\\n' && this.newlines <= max_preserve_newlines) {\n                this.newlines += 1;\n              }\n\n              this.pos++;\n              input_char = this.input.charAt(this.pos);\n            }\n            return true;\n          }\n          return false;\n        }\n\n        this.get_content = function () { //function to capture regular content between tags\n\n          var input_char = '',\n              content = [],\n              space = false; //if a space is needed\n\n          while (this.input.charAt(this.pos) !== '<') {\n            if (this.pos >= this.input.length) {\n              return content.length?content.join(''):['', 'TK_EOF'];\n            }\n\n            if (this.traverse_whitespace()) {\n              if (content.length) {\n                space = true;\n              }\n              continue; //don't want to insert unnecessary space\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (space) {\n              if (this.line_char_count >= this.wrap_line_length) { //insert a line when the wrap_line_length is reached\n                this.print_newline(false, content);\n                this.print_indentation(content);\n              }\n              else {\n                this.line_char_count++;\n                content.push(' ');\n              }\n              space = false;\n            }\n            this.line_char_count++;\n            content.push(input_char); //letter at-a-time (or string) inserted to an array\n          }\n          return content.length?content.join(''):'';\n        };\n\n        this.get_contents_to = function (name) { //get the full content of a script or style to pass to js_beautify\n          if (this.pos === this.input.length) {\n            return ['', 'TK_EOF'];\n          }\n          var input_char = '';\n          var content = '';\n          var reg_match = new RegExp('</' + name + '\\\\s*>', 'igm');\n          reg_match.lastIndex = this.pos;\n          var reg_array = reg_match.exec(this.input);\n          var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script\n          if(this.pos < end_script) { //get everything in between the script tags\n            content = this.input.substring(this.pos, end_script);\n            this.pos = end_script;\n          }\n          return content;\n        };\n\n        this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object\n          if (this.tags[tag + 'count']) { //check for the existence of this tag type\n            this.tags[tag + 'count']++;\n            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n          }\n          else { //otherwise initialize this tag type\n            this.tags[tag + 'count'] = 1;\n            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n          }\n          this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)\n          this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')\n        };\n\n        this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer\n          if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it\n            var temp_parent = this.tags.parent; //check to see if it's a closable tag.\n            while (temp_parent) { //till we reach '' (the initial value);\n              if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it\n                break;\n              }\n              temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree\n            }\n            if (temp_parent) { //if we caught something\n              this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly\n              this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent\n            }\n            delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...\n            delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself\n            if (this.tags[tag + 'count'] === 1) {\n              delete this.tags[tag + 'count'];\n            }\n            else {\n              this.tags[tag + 'count']--;\n            }\n          }\n        };\n\n        this.get_tag = function (peek) { //function to get a full tag and parse its type\n          var input_char = '',\n              content = [],\n              comment = '',\n              space = false,\n              tag_start, tag_end,\n              orig_pos = this.pos,\n              orig_line_char_count = this.line_char_count;\n\n          peek = peek !== undefined ? peek : false;\n\n          do {\n            if (this.pos >= this.input.length) {\n              if (peek) {\n                this.pos = orig_pos;\n                this.line_char_count = orig_line_char_count;\n              }\n              return content.length?content.join(''):['', 'TK_EOF'];\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space\n              space = true;\n              continue;\n            }\n\n            if (input_char === \"'\" || input_char === '\"') {\n              input_char += this.get_unformatted(input_char);\n              space = true;\n\n            }\n\n            if (input_char === '=') { //no space before =\n              space = false;\n            }\n\n            if (content.length && content[content.length-1] !== '=' && input_char !== '>' && space) {\n                //no space after = or before >\n              if (this.line_char_count >= this.wrap_line_length) {\n                this.print_newline(false, content);\n                this.print_indentation(content);\n              }\n              else {\n                content.push(' ');\n                this.line_char_count++;\n              }\n              space = false;\n            }\n\n            if (input_char === '<' && !tag_start) {\n              tag_start = this.pos - 1;\n            }\n\n            this.line_char_count++;\n            content.push(input_char); //inserts character at-a-time (or string)\n\n            if (content[1] && content[1] === '!') { //if we're in a comment, do something special\n              // We treat all comments as literals, even more than preformatted tags\n              // we just look for the appropriate close tag\n              content = [this.get_comment(tag_start)];\n              break;\n            }\n\n          } while (input_char !== '>');\n\n          var tag_complete = content.join('');\n          var tag_index;\n          if (tag_complete.indexOf(' ') !== -1) { //if there's whitespace, thats where the tag name ends\n            tag_index = tag_complete.indexOf(' ');\n          }\n          else { //otherwise go with the tag ending\n            tag_index = tag_complete.indexOf('>');\n          }\n          var tag_check = tag_complete.substring(1, tag_index).toLowerCase();\n          if (tag_complete.charAt(tag_complete.length-2) === '/' ||\n            this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)\n            if ( ! peek) {\n              this.tag_type = 'SINGLE';\n            }\n          }\n          else if (tag_check === 'script') { //for later script handling\n            if ( ! peek) {\n              this.record_tag(tag_check);\n              this.tag_type = 'SCRIPT';\n            }\n          }\n          else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)\n            if ( ! peek) {\n              this.record_tag(tag_check);\n              this.tag_type = 'STYLE';\n            }\n          }\n          else if (this.is_unformatted(tag_check, unformatted)) { // do not reformat the \"unformatted\" tags\n            comment = this.get_unformatted('</'+tag_check+'>', tag_complete); //...delegate to get_unformatted function\n            content.push(comment);\n            // Preserve collapsed whitespace either before or after this tag.\n            if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){\n                content.splice(0, 0, this.input.charAt(tag_start - 1));\n            }\n            tag_end = this.pos - 1;\n            if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){\n                content.push(this.input.charAt(tag_end + 1));\n            }\n            this.tag_type = 'SINGLE';\n          }\n          else if (tag_check.charAt(0) === '!' ) { //peek for <! comment\n            // for comments content is already correct.\n            if (! peek) {\n              this.tag_type = 'SINGLE';\n            }\n          }\n          else if ( ! peek) {\n            if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending\n              this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors\n              this.tag_type = 'END';\n            }\n            else { //otherwise it's a start-tag\n              this.record_tag(tag_check); //push it on the tag stack\n              this.tag_type = 'START';\n            }\n            if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line\n              this.print_newline(false, this.output);\n              if(this.output.length && this.output[this.output.length - 2] !== '\\n') {\n                this.print_newline(true, this.output);\n              }\n            }\n          }\n\n          if (peek) {\n            this.pos = orig_pos;\n            this.line_char_count = orig_line_char_count;\n          }\n\n          return content.join(''); //returns fully formatted tag\n        };\n\n        this.get_comment = function (start_pos) { //function to return comment content in its entirety\n            // this is will have very poor perf, but will work for now.\n            var comment = '',\n                delimiter = '>',\n                matched = false;\n\n            this.pos = start_pos;\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            while(this.pos <= this.input.length) {\n              comment += input_char;\n\n              // only need to check for the delimiter if the last chars match\n              if(comment[comment.length - 1] === delimiter[delimiter.length - 1] &&\n                  comment.indexOf(delimiter) !== -1) {\n                break;\n              }\n\n              // only need to search for custom delimiter for the first few characters\n              if (!matched && comment.length < 10) {\n                if (comment.indexOf('<![if') === 0) { //peek for <![if conditional comment\n                  delimiter = '<![endif]>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<![cdata[') === 0) { //if it's a <[cdata[ comment...\n                  delimiter = ']]>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<![') === 0) { // some other ![ comment? ...\n                  delimiter = ']>';\n                  matched = true;\n                }\n                else if (comment.indexOf('<!--') === 0) { // <!-- comment ...\n                  delimiter = '-->';\n                  matched = true;\n                }\n              }\n\n              input_char = this.input.charAt(this.pos);\n              this.pos++;\n            }\n\n            this.traverse_whitespace();\n            return comment;\n        };\n\n        this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety\n\n          if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) !== -1) {\n            return '';\n          }\n          var input_char = '';\n          var content = '';\n          var space = true;\n          do {\n\n            if (this.pos >= this.input.length) {\n              return content;\n            }\n\n            input_char = this.input.charAt(this.pos);\n            this.pos++;\n\n            if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n              if (!space) {\n                this.line_char_count--;\n                continue;\n              }\n              if (input_char === '\\n' || input_char === '\\r') {\n                content += '\\n';\n                /*  Don't change tab indention for unformatted blocks.  If using code for html editing, this will greatly affect <pre> tags if they are specified in the 'unformatted array'\n                for (var i=0; i<this.indent_level; i++) {\n                  content += this.indent_string;\n                }\n                space = false; //...and make sure other indentation is erased\n                */\n                this.line_char_count = 0;\n                continue;\n              }\n            }\n            content += input_char;\n            this.line_char_count++;\n            space = true;\n\n\n          } while (content.toLowerCase().indexOf(delimiter) === -1);\n          return content;\n        };\n\n        this.get_token = function () { //initial handler for token-retrieval\n          var token;\n\n          if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript\n           var type = this.last_token.substr(7);\n           token = this.get_contents_to(type);\n            if (typeof token !== 'string') {\n              return token;\n            }\n            return [token, 'TK_' + type];\n          }\n          if (this.current_mode === 'CONTENT') {\n            token = this.get_content();\n            if (typeof token !== 'string') {\n              return token;\n            }\n            else {\n              return [token, 'TK_CONTENT'];\n            }\n          }\n\n          if (this.current_mode === 'TAG') {\n            token = this.get_tag();\n            if (typeof token !== 'string') {\n              return token;\n            }\n            else {\n              var tag_name_type = 'TK_TAG_' + this.tag_type;\n              return [token, tag_name_type];\n            }\n          }\n        };\n\n        this.get_full_indent = function (level) {\n          level = this.indent_level + level || 0;\n          if (level < 1) {\n            return '';\n          }\n\n          return Array(level + 1).join(this.indent_string);\n        };\n\n        this.is_unformatted = function(tag_check, unformatted) {\n            //is this an HTML5 block-level link?\n            if (!this.Utils.in_array(tag_check, unformatted)){\n                return false;\n            }\n\n            if (tag_check.toLowerCase() !== 'a' || !this.Utils.in_array('a', unformatted)){\n                return true;\n            }\n\n            //at this point we have an  tag; is its first child something we want to remain\n            //unformatted?\n            var next_tag = this.get_tag(true /* peek. */);\n\n            // tets next_tag to see if it is just html tag (no external content)\n            var tag = (next_tag || \"\").match(/^\\s*<\\s*\\/?([a-z]*)\\s*[^>]*>\\s*$/);\n\n            // if next_tag comes back but is not an isolated tag, then\n            // let's treat the 'a' tag as having content\n            // and respect the unformatted option\n            if (!tag || this.Utils.in_array(tag, unformatted)){\n                return true;\n            } else {\n                return false;\n            }\n        };\n\n        this.printer = function (js_source, indent_character, indent_size, wrap_line_length, brace_style) { //handles input/output and some other printing functions\n\n          this.input = js_source || ''; //gets the input for the Parser\n          this.output = [];\n          this.indent_character = indent_character;\n          this.indent_string = '';\n          this.indent_size = indent_size;\n          this.brace_style = brace_style;\n          this.indent_level = 0;\n          this.wrap_line_length = wrap_line_length;\n          this.line_char_count = 0; //count to see if wrap_line_length was exceeded\n\n          for (var i=0; i<this.indent_size; i++) {\n            this.indent_string += this.indent_character;\n          }\n\n          this.print_newline = function (force, arr) {\n            this.line_char_count = 0;\n            if (!arr || !arr.length) {\n              return;\n            }\n            if (force || (arr[arr.length-1] !== '\\n')) { //we might want the extra line\n              arr.push('\\n');\n            }\n          };\n\n          this.print_indentation = function (arr) {\n            for (var i=0; i<this.indent_level; i++) {\n              arr.push(this.indent_string);\n              this.line_char_count += this.indent_string.length;\n            }\n          };\n\n          this.print_token = function (text) {\n            if (text || text !== '') {\n              if (this.output.length && this.output[this.output.length-1] === '\\n') {\n                this.print_indentation(this.output);\n              }\n            }\n            this.print_token_raw(text);\n          };\n\n          this.print_token_raw = function (text) {\n            if (text && text !== '') {\n              if(text.length > 1 && text[text.length - 1] === '\\n') {\n                // unformatted tags can grab newlines as their last character\n                this.output.push(text.slice(0, -1));\n                this.print_newline(false, this.output);\n              } else {\n                this.output.push(text);\n              }\n            }\n\n            for(var n=0; n < this.newlines; n++) {\n              this.print_newline(n > 0, this.output);\n            }\n            this.newlines = 0;\n          };\n\n          this.indent = function () {\n            this.indent_level++;\n          };\n\n          this.unindent = function () {\n            if (this.indent_level > 0) {\n              this.indent_level--;\n            }\n          };\n        };\n        return this;\n      }\n\n      /*_____________________--------------------_____________________*/\n\n      multi_parser = new Parser(); //wrapping functions Parser\n      multi_parser.printer(html_source, indent_character, indent_size, wrap_line_length, brace_style); //initialize starting values\n\n      while (true) {\n          var t = multi_parser.get_token();\n          multi_parser.token_text = t[0];\n          multi_parser.token_type = t[1];\n\n        if (multi_parser.token_type === 'TK_EOF') {\n          break;\n        }\n\n        switch (multi_parser.token_type) {\n          case 'TK_TAG_START':\n            multi_parser.print_newline(false, multi_parser.output);\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.indent();\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_STYLE':\n          case 'TK_TAG_SCRIPT':\n            multi_parser.print_newline(false, multi_parser.output);\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_END':\n            //Print new line only if the tag has no content and has child\n            if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {\n                var tag_name = multi_parser.token_text.match(/\\w+/)[0];\n                var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\\s*(\\w+)/);\n                if (tag_extracted_from_last_output === null ||\n                    tag_extracted_from_last_output[1] !== tag_name) {\n                    multi_parser.print_newline(false, multi_parser.output);\n                }\n            }\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_TAG_SINGLE':\n            // Don't add a newline before elements that should remain unformatted.\n            var tag_check = multi_parser.token_text.match(/^\\s*<([a-z]+)/i);\n            if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){\n                multi_parser.print_newline(false, multi_parser.output);\n            }\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'CONTENT';\n            break;\n          case 'TK_CONTENT':\n            multi_parser.print_token(multi_parser.token_text);\n            multi_parser.current_mode = 'TAG';\n            break;\n          case 'TK_STYLE':\n          case 'TK_SCRIPT':\n            if (multi_parser.token_text !== '') {\n              multi_parser.print_newline(false, multi_parser.output);\n              var text = multi_parser.token_text,\n                  _beautifier,\n                  script_indent_level = 1;\n              if (multi_parser.token_type === 'TK_SCRIPT') {\n                _beautifier = typeof js_beautify === 'function' && js_beautify;\n              } else if (multi_parser.token_type === 'TK_STYLE') {\n                _beautifier = typeof css_beautify === 'function' && css_beautify;\n              }\n\n              if (options.indent_scripts === \"keep\") {\n                script_indent_level = 0;\n              } else if (options.indent_scripts === \"separate\") {\n                script_indent_level = -multi_parser.indent_level;\n              }\n\n              var indentation = multi_parser.get_full_indent(script_indent_level);\n              if (_beautifier) {\n                // call the Beautifier if avaliable\n                text = _beautifier(text.replace(/^\\s*/, indentation), options);\n              } else {\n                // simply indent the string otherwise\n                var white = text.match(/^\\s*/)[0];\n                var _level = white.match(/[^\\n\\r]*$/)[0].split(multi_parser.indent_string).length - 1;\n                var reindent = multi_parser.get_full_indent(script_indent_level -_level);\n                text = text.replace(/^\\s*/, indentation)\n                       .replace(/\\r\\n|\\r|\\n/g, '\\n' + reindent)\n                       .replace(/\\s+$/, '');\n              }\n              if (text) {\n                multi_parser.print_token_raw(indentation + trim(text));\n                multi_parser.print_newline(false, multi_parser.output);\n              }\n            }\n            multi_parser.current_mode = 'TAG';\n            break;\n        }\n        multi_parser.last_token = multi_parser.token_type;\n        multi_parser.last_text = multi_parser.token_text;\n      }\n      return multi_parser.output.join('');\n    }\n\n    if (typeof define === \"function\") {\n        // Add support for require.js\n        define(function(require, exports, module) {\n            var js_beautify  = require('./beautify.js').js_beautify;\n            var css_beautify = require('./beautify-css.js').css_beautify;\n\n            exports.html_beautify = function(html_source, options) {\n                return style_html(html_source, options, js_beautify, css_beautify);\n            };\n        });\n    } else if (typeof exports !== \"undefined\") {\n        // Add support for CommonJS. Just put this file somewhere on your require.paths\n        // and you will be able to `var html_beautify = require(\"beautify\").html_beautify`.\n        var js_beautify  = require('./beautify.js').js_beautify;\n        var css_beautify = require('./beautify-css.js').css_beautify;\n\n        exports.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, js_beautify, css_beautify);\n        };\n    } else if (typeof window !== \"undefined\") {\n        // If we're running a web page and don't have either of the above, add our one global\n        window.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, window.js_beautify, window.css_beautify);\n        };\n    } else if (typeof global !== \"undefined\") {\n        // If we don't even have window, try global.\n        global.html_beautify = function(html_source, options) {\n            return style_html(html_source, options, global.js_beautify, global.css_beautify);\n        };\n    }\n\n}());\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/js-beautify/beautify.js",
    "content": "/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n/*\n\n  The MIT License (MIT)\n\n  Copyright (c) 2007-2013 Einar Lielmanis and contributors.\n\n  Permission is hereby granted, free of charge, to any person\n  obtaining a copy of this software and associated documentation files\n  (the \"Software\"), to deal in the Software without restriction,\n  including without limitation the rights to use, copy, modify, merge,\n  publish, distribute, sublicense, and/or sell copies of the Software,\n  and to permit persons to whom the Software is furnished to do so,\n  subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be\n  included in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n  SOFTWARE.\n\n JS Beautifier\n---------------\n\n\n  Written by Einar Lielmanis, <einar@jsbeautifier.org>\n      http://jsbeautifier.org/\n\n  Originally converted to javascript by Vital, <vital76@gmail.com>\n  \"End braces on own line\" added by Chris J. Shull, <chrisjshull@gmail.com>\n  Parsing improvements for brace-less statements by Liam Newman <bitwiseman@gmail.com>\n\n\n  Usage:\n    js_beautify(js_source_text);\n    js_beautify(js_source_text, options);\n\n  The options are:\n    indent_size (default 4)          - indentation size,\n    indent_char (default space)      - character to indent with,\n    preserve_newlines (default true) - whether existing line breaks should be preserved,\n    max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk,\n\n    jslint_happy (default false) - if true, then jslint-stricter mode is enforced.\n\n            jslint_happy   !jslint_happy\n            ---------------------------------\n             function ()      function()\n\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\n            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.\n\n    space_before_conditional (default true) - should the space before conditional statement be added, \"if(true)\" vs \"if (true)\",\n\n    unescape_strings (default false) - should printable characters in strings encoded in \\xNN notation be unescaped, \"example\" vs \"\\x65\\x78\\x61\\x6d\\x70\\x6c\\x65\"\n\n    wrap_line_length (default unlimited) - lines should wrap at next opportunity after this number of characters.\n          NOTE: This is not a hard limit. Lines will continue until a point where a newline would\n                be preserved if it were present.\n\n    e.g\n\n    js_beautify(js_source_text, {\n      'indent_size': 1,\n      'indent_char': '\\t'\n    });\n\n*/\n\n\n(function() {\n    function js_beautify(js_source_text, options) {\n        \"use strict\";\n        var beautifier = new Beautifier(js_source_text, options);\n        return beautifier.beautify();\n    }\n\n    function Beautifier(js_source_text, options) {\n        \"use strict\";\n        var input, output, token_text, token_type, last_type, last_last_text, indent_string;\n        var flags, previous_flags, flag_store;\n        var whitespace, wordchar, punct, parser_pos, line_starters, digits;\n        var prefix;\n        var input_wanted_newline;\n        var line_indent_level;\n        var output_wrapped, output_space_before_token;\n        var input_length, n_newlines, whitespace_before_token;\n        var handlers, MODE, opt;\n        var preindent_string = '';\n\n        whitespace = \"\\n\\r\\t \".split('');\n        wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split('');\n        digits = '0123456789'.split('');\n\n        punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |= ::';\n        punct += ' <%= <% %> <?= <? ?>'; // try to be a good boy and try not to break the markup language identifiers\n        punct = punct.split(' ');\n\n        // words which should always start on new line.\n        line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(',');\n\n        MODE = {\n            BlockStatement: 'BlockStatement', // 'BLOCK'\n            Statement: 'Statement', // 'STATEMENT'\n            ObjectLiteral: 'ObjectLiteral', // 'OBJECT',\n            ArrayLiteral: 'ArrayLiteral', //'[EXPRESSION]',\n            ForInitializer: 'ForInitializer', //'(FOR-EXPRESSION)',\n            Conditional: 'Conditional', //'(COND-EXPRESSION)',\n            Expression: 'Expression' //'(EXPRESSION)'\n        };\n\n        handlers = {\n            'TK_START_EXPR': handle_start_expr,\n            'TK_END_EXPR': handle_end_expr,\n            'TK_START_BLOCK': handle_start_block,\n            'TK_END_BLOCK': handle_end_block,\n            'TK_WORD': handle_word,\n            'TK_SEMICOLON': handle_semicolon,\n            'TK_STRING': handle_string,\n            'TK_EQUALS': handle_equals,\n            'TK_OPERATOR': handle_operator,\n            'TK_COMMA': handle_comma,\n            'TK_BLOCK_COMMENT': handle_block_comment,\n            'TK_INLINE_COMMENT': handle_inline_comment,\n            'TK_COMMENT': handle_comment,\n            'TK_DOT': handle_dot,\n            'TK_UNKNOWN': handle_unknown\n        };\n\n        function create_flags(flags_base, mode) {\n            var next_indent_level =  (flags_base ? flags_base.indentation_level + ((flags_base.var_line && flags_base.var_line_reindented) ? 1 : 0) : 0);\n            var next_flags = {\n                mode: mode,\n                parent: flags_base,\n                last_text: flags_base ? flags_base.last_text : '', // last token text\n                last_word: flags_base ? flags_base.last_word : '', // last 'TK_WORD' passed\n                var_line: false,\n                var_line_tainted: false,\n                var_line_reindented: false,\n                in_html_comment: false,\n                multiline_array: false,\n                if_block: false,\n                do_block: false,\n                do_while: false,\n                in_case_statement: false, // switch(..){ INSIDE HERE }\n                in_case: false, // we're on the exact line with \"case 0:\"\n                case_body: false, // the indented case-action block\n                indentation_level: next_indent_level,\n                ternary_depth: 0\n            }\n            return next_flags;\n        }\n\n        // Some interpreters have unexpected results with foo = baz || bar;\n        options = options ? options : {};\n        opt = {};\n\n        // compatibility\n        if (options.space_after_anon_function !== undefined && options.jslint_happy === undefined) {\n            options.jslint_happy = options.space_after_anon_function;\n        }\n        if (options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n            opt.brace_style = options.braces_on_own_line ? \"expand\" : \"collapse\";\n        }\n        opt.brace_style = options.brace_style ? options.brace_style : (opt.brace_style ? opt.brace_style : \"collapse\");\n\n        // graceful handling of deprecated option\n        if (opt.brace_style === \"expand-strict\") {\n            opt.brace_style = \"expand\";\n        }\n\n\n        opt.indent_size = options.indent_size ? parseInt(options.indent_size, 10) : 4;\n        opt.indent_char = options.indent_char ? options.indent_char : ' ';\n        opt.preserve_newlines = (options.preserve_newlines === undefined) ? true : options.preserve_newlines;\n        opt.break_chained_methods = (options.break_chained_methods === undefined) ? false : options.break_chained_methods;\n        opt.max_preserve_newlines = (options.max_preserve_newlines === undefined) ? 0 : parseInt(options.max_preserve_newlines, 10);\n        opt.space_in_paren = (options.space_in_paren === undefined) ? false : options.space_in_paren;\n        opt.jslint_happy = (options.jslint_happy === undefined) ? false : options.jslint_happy;\n        opt.keep_array_indentation = (options.keep_array_indentation === undefined) ? false : options.keep_array_indentation;\n        opt.space_before_conditional= (options.space_before_conditional === undefined) ? true : options.space_before_conditional;\n        opt.unescape_strings = (options.unescape_strings === undefined) ? false : options.unescape_strings;\n        opt.wrap_line_length = (options.wrap_line_length === undefined) ? 0 : parseInt(options.wrap_line_length, 10);\n        opt.e4x = (options.e4x === undefined) ? false : options.e4x;\n\n\n        //----------------------------------\n        indent_string = '';\n        while (opt.indent_size > 0) {\n            indent_string += opt.indent_char;\n            opt.indent_size -= 1;\n        }\n\n        while (js_source_text && (js_source_text.charAt(0) === ' ' || js_source_text.charAt(0) === '\\t')) {\n            preindent_string += js_source_text.charAt(0);\n            js_source_text = js_source_text.substring(1);\n        }\n        input = js_source_text;\n        // cache the source's length.\n        input_length = js_source_text.length;\n\n        last_type = 'TK_START_BLOCK'; // last token type\n        last_last_text = ''; // pre-last token text\n        line_indent_level = 0;\n        output = [];\n        output_wrapped = false;\n        output_space_before_token = false;\n        whitespace_before_token = [];\n\n        // Stack of parsing/formatting states, including MODE.\n        // We tokenize, parse, and output in an almost purely a forward-only stream of token input\n        // and formatted output.  This makes the beautifier less accurate than full parsers\n        // but also far more tolerant of syntax errors.\n        //\n        // For example, the default mode is MODE.BlockStatement. If we see a '{' we push a new frame of type\n        // MODE.BlockStatement on the the stack, even though it could be object literal.  If we later\n        // encounter a \":\", we'll switch to to MODE.ObjectLiteral.  If we then see a \";\",\n        // most full parsers would die, but the beautifier gracefully falls back to\n        // MODE.BlockStatement and continues on.\n        flag_store = [];\n        set_mode(MODE.BlockStatement);\n\n        parser_pos = 0;\n\n        this.beautify = function () {\n            /*jshint onevar:true */\n            var t, i, keep_whitespace, sweet_code;\n\n            while (true) {\n                t = get_next_token();\n                token_text = t[0];\n                token_type = t[1];\n\n                if (token_type === 'TK_EOF') {\n                    break;\n                }\n\n                keep_whitespace = opt.keep_array_indentation && is_array(flags.mode);\n                input_wanted_newline = n_newlines > 0;\n\n                if (keep_whitespace) {\n                    for (i = 0; i < n_newlines; i += 1) {\n                        print_newline(i > 0);\n                    }\n                } else {\n                    if (opt.max_preserve_newlines && n_newlines > opt.max_preserve_newlines) {\n                        n_newlines = opt.max_preserve_newlines;\n                    }\n\n                    if (opt.preserve_newlines) {\n                        if (n_newlines > 1) {\n                            print_newline();\n                            for (i = 1; i < n_newlines; i += 1) {\n                                print_newline(true);\n                            }\n                        }\n                    }\n                }\n\n                handlers[token_type]();\n\n                // The cleanest handling of inline comments is to treat them as though they aren't there.\n                // Just continue formatting and the behavior should be logical.\n                // Also ignore unknown tokens.  Again, this should result in better behavior.\n                if (token_type !== 'TK_INLINE_COMMENT' && token_type !== 'TK_COMMENT' &&\n                    token_type !== 'TK_UNKNOWN') {\n                    last_last_text = flags.last_text;\n                    last_type = token_type;\n                    flags.last_text = token_text;\n                }\n            }\n\n            sweet_code = preindent_string + output.join('').replace(/[\\r\\n ]+$/, '');\n            return sweet_code;\n        };\n\n        function trim_output(eat_newlines) {\n            eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n            while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string || output[output.length - 1] === preindent_string || (eat_newlines && (output[output.length - 1] === '\\n' || output[output.length - 1] === '\\r')))) {\n                output.pop();\n            }\n        }\n\n        function trim(s) {\n            return s.replace(/^\\s+|\\s+$/g, '');\n        }\n\n        // we could use just string.split, but\n        // IE doesn't like returning empty strings\n\n        function split_newlines(s) {\n            //return s.split(/\\x0d\\x0a|\\x0a/);\n\n            s = s.replace(/\\x0d/g, '');\n            var out = [],\n                idx = s.indexOf(\"\\n\");\n            while (idx !== -1) {\n                out.push(s.substring(0, idx));\n                s = s.substring(idx + 1);\n                idx = s.indexOf(\"\\n\");\n            }\n            if (s.length) {\n                out.push(s);\n            }\n            return out;\n        }\n\n        function just_added_newline() {\n            return output.length && output[output.length - 1] === \"\\n\";\n        }\n\n        function just_added_blankline() {\n            return just_added_newline() && output.length - 1 > 0 && output[output.length - 2] === \"\\n\";\n        }\n\n        function _last_index_of(arr, find) {\n            var i = arr.length - 1;\n            if (i < 0) {\n                i += arr.length;\n            }\n            if (i > arr.length - 1) {\n                i = arr.length - 1;\n            }\n            for (i++; i-- > 0;) {\n                if (i in arr && arr[i] === find) {\n                    return i;\n                }\n            }\n            return -1;\n        }\n\n        function allow_wrap_or_preserved_newline(force_linewrap) {\n            force_linewrap = (force_linewrap === undefined) ? false : force_linewrap;\n            if (opt.wrap_line_length && !force_linewrap) {\n                var current_line = '';\n                var proposed_line_length = 0;\n                var start_line = _last_index_of(output, '\\n') + 1;\n                // never wrap the first token of a line.\n                if (start_line < output.length) {\n                    current_line = output.slice(start_line).join('');\n                    proposed_line_length = current_line.length + token_text.length +\n                        (output_space_before_token ? 1 : 0);\n                    if (proposed_line_length >= opt.wrap_line_length) {\n                        force_linewrap = true;\n                    }\n                }\n            }\n            if (((opt.preserve_newlines && input_wanted_newline) || force_linewrap) && !just_added_newline()) {\n                print_newline(false, true);\n\n                // Expressions and array literals already indent their contents.\n                if(! (is_array(flags.mode) || is_expression(flags.mode))) {\n                    output_wrapped = true;\n                }\n            }\n        }\n\n        function print_newline(force_newline, preserve_statement_flags) {\n            output_wrapped = false;\n            output_space_before_token = false;\n\n            if (!preserve_statement_flags) {\n                if  (flags.last_text !== ';') {\n                    while (flags.mode === MODE.Statement && !flags.if_block && !flags.do_block) {\n                        restore_mode();\n                    }\n                }\n            }\n\n            if (flags.mode === MODE.ArrayLiteral) {\n                flags.multiline_array = true;\n            }\n\n\n            if (!output.length) {\n                return; // no newline on start of file\n            }\n\n            if (force_newline || !just_added_newline()) {\n                output.push(\"\\n\");\n            }\n        }\n\n        function print_token_line_indentation() {\n            if (just_added_newline()) {\n                if (opt.keep_array_indentation && is_array(flags.mode) && input_wanted_newline) {\n                    for (var i = 0; i < whitespace_before_token.length; i += 1) {\n                        output.push(whitespace_before_token[i]);\n                    }\n                } else {\n                    if (preindent_string) {\n                        output.push(preindent_string);\n                    }\n\n                    print_indent_string(flags.indentation_level +\n                        (flags.var_line && flags.var_line_reindented ? 1 : 0) +\n                        (output_wrapped ? 1 : 0));\n                }\n            }\n        }\n\n        function print_indent_string(level) {\n            // Never indent your first output indent at the start of the file\n            if (flags.last_text !== '') {\n                line_indent_level = level;\n                for (var i = 0; i < level; i += 1) {\n                    output.push(indent_string);\n                }\n            }\n        }\n\n        function print_token_space_before() {\n            if (output_space_before_token && output.length) {\n                var last_output = output[output.length - 1];\n                if (!just_added_newline() && last_output !== ' ' && last_output !== indent_string) { // prevent occassional duplicate space\n                    output.push(' ');\n                }\n            }\n        }\n\n        function print_token(printable_token) {\n            printable_token = printable_token || token_text;\n            print_token_line_indentation();\n            output_wrapped = false;\n            print_token_space_before();\n            output_space_before_token = false;\n            output.push(printable_token);\n        }\n\n        function indent() {\n            flags.indentation_level += 1;\n        }\n\n        function deindent() {\n            if (flags.indentation_level > 0 &&\n                ((!flags.parent) || flags.indentation_level > flags.parent.indentation_level))\n                flags.indentation_level -= 1;\n        }\n\n        function set_mode(mode) {\n            if (flags) {\n                flag_store.push(flags);\n                previous_flags = flags;\n            } else {\n                previous_flags = create_flags(null, mode);\n            }\n\n            flags = create_flags(previous_flags, mode);\n        }\n\n        function is_array(mode) {\n            return mode === MODE.ArrayLiteral;\n        }\n\n        function is_expression(mode) {\n            return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]);\n        }\n\n        function restore_mode() {\n            if (flag_store.length > 0) {\n                previous_flags = flags;\n                flags = flag_store.pop();\n            }\n        }\n\n        function start_of_statement() {\n            if (\n             (flags.last_text === 'do' ||\n                 (flags.last_text === 'else' && token_text !== 'if') ||\n                (last_type === 'TK_END_EXPR' && (previous_flags.mode === MODE.ForInitializer || previous_flags.mode === MODE.Conditional)))) {\n                // Issue #276:\n                // If starting a new statement with [if, for, while, do], push to a new line.\n                // if (a) if (b) if(c) d(); else e(); else f();\n                allow_wrap_or_preserved_newline(\n                    in_array(token_text, ['do', 'for', 'if', 'while']));\n\n                set_mode(MODE.Statement);\n                // Issue #275:\n                // If starting on a newline, all of a statement should be indented.\n                // if not, use line wrapping logic for indent.\n                if(just_added_newline()) {\n                    indent();\n                    output_wrapped = false;\n                }\n                return true;\n            }\n            return false;\n        }\n\n        function all_lines_start_with(lines, c) {\n            for (var i = 0; i < lines.length; i++) {\n                var line = trim(lines[i]);\n                if (line.charAt(0) !== c) {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        function is_special_word(word) {\n            return in_array(word, ['case', 'return', 'do', 'if', 'throw', 'else']);\n        }\n\n        function in_array(what, arr) {\n            for (var i = 0; i < arr.length; i += 1) {\n                if (arr[i] === what) {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        function unescape_string(s) {\n            var esc = false,\n                out = '',\n                pos = 0,\n                s_hex = '',\n                escaped = 0,\n                c;\n\n            while (esc || pos < s.length) {\n\n                c = s.charAt(pos);\n                pos++;\n\n                if (esc) {\n                    esc = false;\n                    if (c === 'x') {\n                        // simple hex-escape \\x24\n                        s_hex = s.substr(pos, 2);\n                        pos += 2;\n                    } else if (c === 'u') {\n                        // unicode-escape, \\u2134\n                        s_hex = s.substr(pos, 4);\n                        pos += 4;\n                    } else {\n                        // some common escape, e.g \\n\n                        out += '\\\\' + c;\n                        continue;\n                    }\n                    if (!s_hex.match(/^[0123456789abcdefABCDEF]+$/)) {\n                        // some weird escaping, bail out,\n                        // leaving whole string intact\n                        return s;\n                    }\n\n                    escaped = parseInt(s_hex, 16);\n\n                    if (escaped >= 0x00 && escaped < 0x20) {\n                        // leave 0x00...0x1f escaped\n                        if (c === 'x') {\n                            out += '\\\\x' + s_hex;\n                        } else {\n                            out += '\\\\u' + s_hex;\n                        }\n                        continue;\n                    } else if (escaped === 0x22 || escaped === 0x27 || escaped === 0x5c) {\n                        // single-quote, apostrophe, backslash - escape these\n                        out += '\\\\' + String.fromCharCode(escaped);\n                    } else if (c === 'x' && escaped > 0x7e && escaped <= 0xff) {\n                        // we bail out on \\x7f..\\xff,\n                        // leaving whole string escaped,\n                        // as it's probably completely binary\n                        return s;\n                    } else {\n                        out += String.fromCharCode(escaped);\n                    }\n                } else if (c === '\\\\') {\n                    esc = true;\n                } else {\n                    out += c;\n                }\n            }\n            return out;\n        }\n\n        function is_next(find) {\n            var local_pos = parser_pos;\n            var c = input.charAt(local_pos);\n            while (in_array(c, whitespace) && c !== find) {\n                local_pos++;\n                if (local_pos >= input_length) {\n                    return false;\n                }\n                c = input.charAt(local_pos);\n            }\n            return c === find;\n        }\n\n        function get_next_token() {\n            var i, resulting_string;\n\n            n_newlines = 0;\n\n            if (parser_pos >= input_length) {\n                return ['', 'TK_EOF'];\n            }\n\n            input_wanted_newline = false;\n            whitespace_before_token = [];\n\n            var c = input.charAt(parser_pos);\n            parser_pos += 1;\n\n            while (in_array(c, whitespace)) {\n\n                if (c === '\\n') {\n                    n_newlines += 1;\n                    whitespace_before_token = [];\n                } else if (n_newlines) {\n                    if (c === indent_string) {\n                        whitespace_before_token.push(indent_string);\n                    } else if (c !== '\\r') {\n                        whitespace_before_token.push(' ');\n                    }\n                }\n\n                if (parser_pos >= input_length) {\n                    return ['', 'TK_EOF'];\n                }\n\n                c = input.charAt(parser_pos);\n                parser_pos += 1;\n            }\n\n            if (in_array(c, wordchar)) {\n                if (parser_pos < input_length) {\n                    while (in_array(input.charAt(parser_pos), wordchar)) {\n                        c += input.charAt(parser_pos);\n                        parser_pos += 1;\n                        if (parser_pos === input_length) {\n                            break;\n                        }\n                    }\n                }\n\n                // small and surprisingly unugly hack for 1E-10 representation\n                if (parser_pos !== input_length && c.match(/^[0-9]+[Ee]$/) && (input.charAt(parser_pos) === '-' || input.charAt(parser_pos) === '+')) {\n\n                    var sign = input.charAt(parser_pos);\n                    parser_pos += 1;\n\n                    var t = get_next_token();\n                    c += sign + t[0];\n                    return [c, 'TK_WORD'];\n                }\n\n                if (c === 'in') { // hack for 'in' operator\n                    return [c, 'TK_OPERATOR'];\n                }\n                return [c, 'TK_WORD'];\n            }\n\n            if (c === '(' || c === '[') {\n                return [c, 'TK_START_EXPR'];\n            }\n\n            if (c === ')' || c === ']') {\n                return [c, 'TK_END_EXPR'];\n            }\n\n            if (c === '{') {\n                return [c, 'TK_START_BLOCK'];\n            }\n\n            if (c === '}') {\n                return [c, 'TK_END_BLOCK'];\n            }\n\n            if (c === ';') {\n                return [c, 'TK_SEMICOLON'];\n            }\n\n            if (c === '/') {\n                var comment = '';\n                // peek for comment /* ... */\n                var inline_comment = true;\n                if (input.charAt(parser_pos) === '*') {\n                    parser_pos += 1;\n                    if (parser_pos < input_length) {\n                        while (parser_pos < input_length && !(input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/')) {\n                            c = input.charAt(parser_pos);\n                            comment += c;\n                            if (c === \"\\n\" || c === \"\\r\") {\n                                inline_comment = false;\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                break;\n                            }\n                        }\n                    }\n                    parser_pos += 2;\n                    if (inline_comment && n_newlines === 0) {\n                        return ['/*' + comment + '*/', 'TK_INLINE_COMMENT'];\n                    } else {\n                        return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT'];\n                    }\n                }\n                // peek for comment // ...\n                if (input.charAt(parser_pos) === '/') {\n                    comment = c;\n                    while (input.charAt(parser_pos) !== '\\r' && input.charAt(parser_pos) !== '\\n') {\n                        comment += input.charAt(parser_pos);\n                        parser_pos += 1;\n                        if (parser_pos >= input_length) {\n                            break;\n                        }\n                    }\n                    return [comment, 'TK_COMMENT'];\n                }\n\n            }\n\n\n            if (c === \"'\" || c === '\"' || // string\n                (\n                    (c === '/') || // regexp\n                    (opt.e4x && c ===\"<\" && input.slice(parser_pos - 1).match(/^<([a-zA-Z:0-9]+|{[^{}]*}|!\\[CDATA\\[[\\s\\S]*?\\]\\])\\s*([a-zA-Z:0-9]+=('[^']*'|\"[^\"]*\"|{[^{}]*})\\s*)*\\/?\\s*>/)) // xml\n                ) && ( // regex and xml can only appear in specific locations during parsing\n                    (last_type === 'TK_WORD' && is_special_word (flags.last_text)) ||\n                    (last_type === 'TK_END_EXPR' && in_array(previous_flags.mode, [MODE.Conditional, MODE.ForInitializer])) ||\n                    (in_array(last_type, ['TK_COMMENT', 'TK_START_EXPR', 'TK_START_BLOCK',\n                    'TK_END_BLOCK', 'TK_OPERATOR', 'TK_EQUALS', 'TK_EOF', 'TK_SEMICOLON', 'TK_COMMA']))\n                )) {\n\n                var sep = c,\n                    esc = false,\n                    has_char_escapes = false;\n\n                resulting_string = c;\n\n                if (parser_pos < input_length) {\n                    if (sep === '/') {\n                        //\n                        // handle regexp\n                        //\n                        var in_char_class = false;\n                        while (esc || in_char_class || input.charAt(parser_pos) !== sep) {\n                            resulting_string += input.charAt(parser_pos);\n                            if (!esc) {\n                                esc = input.charAt(parser_pos) === '\\\\';\n                                if (input.charAt(parser_pos) === '[') {\n                                    in_char_class = true;\n                                } else if (input.charAt(parser_pos) === ']') {\n                                    in_char_class = false;\n                                }\n                            } else {\n                                esc = false;\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                // incomplete string/rexp when end-of-file reached.\n                                // bail out with what had been received so far.\n                                return [resulting_string, 'TK_STRING'];\n                            }\n                        }\n                    } else if (opt.e4x && sep === '<') {\n                        //\n                        // handle e4x xml literals\n                        //\n                        var xmlRegExp = /<(\\/?)([a-zA-Z:0-9]+|{[^{}]*}|!\\[CDATA\\[[\\s\\S]*?\\]\\])\\s*([a-zA-Z:0-9]+=('[^']*'|\"[^\"]*\"|{[^{}]*})\\s*)*(\\/?)\\s*>/g;\n                        var xmlStr = input.slice(parser_pos - 1);\n                        var match = xmlRegExp.exec(xmlStr);\n                        if (match && match.index === 0) {\n                            var rootTag = match[2];\n                            var depth = 0;\n                            while (match) {\n                                var isEndTag = !! match[1];\n                                var tagName = match[2];\n                                var isSingletonTag = (!! match[match.length - 1]) || (tagName.slice(0, 8) === \"![CDATA[\");\n                                if (tagName === rootTag && !isSingletonTag) {\n                                    if (isEndTag) {\n                                        --depth;\n                                    } else {\n                                        ++depth;\n                                    }\n                                }\n                                if (depth <= 0) {\n                                    break;\n                                }\n                                match = xmlRegExp.exec(xmlStr);\n                            }\n                            var xmlLength = match ? match.index + match[0].length : xmlStr.length;\n                            parser_pos += xmlLength - 1;\n                            return [xmlStr.slice(0, xmlLength), \"TK_STRING\"];\n                        }\n                    } else {\n                        //\n                        // handle string\n                        //\n                        while (esc || input.charAt(parser_pos) !== sep) {\n                            resulting_string += input.charAt(parser_pos);\n                            if (esc) {\n                                if (input.charAt(parser_pos) === 'x' || input.charAt(parser_pos) === 'u') {\n                                    has_char_escapes = true;\n                                }\n                                esc = false;\n                            } else {\n                                esc = input.charAt(parser_pos) === '\\\\';\n                            }\n                            parser_pos += 1;\n                            if (parser_pos >= input_length) {\n                                // incomplete string/rexp when end-of-file reached.\n                                // bail out with what had been received so far.\n                                return [resulting_string, 'TK_STRING'];\n                            }\n                        }\n\n                    }\n                }\n\n                parser_pos += 1;\n                resulting_string += sep;\n\n                if (has_char_escapes && opt.unescape_strings) {\n                    resulting_string = unescape_string(resulting_string);\n                }\n\n                if (sep === '/') {\n                    // regexps may have modifiers /regexp/MOD , so fetch those, too\n                    while (parser_pos < input_length && in_array(input.charAt(parser_pos), wordchar)) {\n                        resulting_string += input.charAt(parser_pos);\n                        parser_pos += 1;\n                    }\n                }\n                return [resulting_string, 'TK_STRING'];\n            }\n\n            if (c === '#') {\n\n\n                if (output.length === 0 && input.charAt(parser_pos) === '!') {\n                    // shebang\n                    resulting_string = c;\n                    while (parser_pos < input_length && c !== '\\n') {\n                        c = input.charAt(parser_pos);\n                        resulting_string += c;\n                        parser_pos += 1;\n                    }\n                    return [trim(resulting_string) + '\\n', 'TK_UNKNOWN'];\n                }\n\n\n\n                // Spidermonkey-specific sharp variables for circular references\n                // https://developer.mozilla.org/En/Sharp_variables_in_JavaScript\n                // http://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp around line 1935\n                var sharp = '#';\n                if (parser_pos < input_length && in_array(input.charAt(parser_pos), digits)) {\n                    do {\n                        c = input.charAt(parser_pos);\n                        sharp += c;\n                        parser_pos += 1;\n                    } while (parser_pos < input_length && c !== '#' && c !== '=');\n                    if (c === '#') {\n                        //\n                    } else if (input.charAt(parser_pos) === '[' && input.charAt(parser_pos + 1) === ']') {\n                        sharp += '[]';\n                        parser_pos += 2;\n                    } else if (input.charAt(parser_pos) === '{' && input.charAt(parser_pos + 1) === '}') {\n                        sharp += '{}';\n                        parser_pos += 2;\n                    }\n                    return [sharp, 'TK_WORD'];\n                }\n            }\n\n            if (c === '<' && input.substring(parser_pos - 1, parser_pos + 3) === '<!--') {\n                parser_pos += 3;\n                c = '<!--';\n                while (input.charAt(parser_pos) !== '\\n' && parser_pos < input_length) {\n                    c += input.charAt(parser_pos);\n                    parser_pos++;\n                }\n                flags.in_html_comment = true;\n                return [c, 'TK_COMMENT'];\n            }\n\n            if (c === '-' && flags.in_html_comment && input.substring(parser_pos - 1, parser_pos + 2) === '-->') {\n                flags.in_html_comment = false;\n                parser_pos += 2;\n                return ['-->', 'TK_COMMENT'];\n            }\n\n            if (c === '.') {\n                return [c, 'TK_DOT'];\n            }\n\n            if (in_array(c, punct)) {\n                while (parser_pos < input_length && in_array(c + input.charAt(parser_pos), punct)) {\n                    c += input.charAt(parser_pos);\n                    parser_pos += 1;\n                    if (parser_pos >= input_length) {\n                        break;\n                    }\n                }\n\n                if (c === ',') {\n                    return [c, 'TK_COMMA'];\n                } else if (c === '=') {\n                    return [c, 'TK_EQUALS'];\n                } else {\n                    return [c, 'TK_OPERATOR'];\n                }\n            }\n\n            return [c, 'TK_UNKNOWN'];\n        }\n\n        function handle_start_expr() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n            }\n\n            if (token_text === '[') {\n\n                if (last_type === 'TK_WORD' || flags.last_text === ')') {\n                    // this is array index specifier, break immediately\n                    // a[x], fn()[x]\n                    if (in_array (flags.last_text, line_starters)) {\n                        output_space_before_token = true;\n                    }\n                    set_mode(MODE.Expression);\n                    print_token();\n                    if (opt.space_in_paren) {\n                        output_space_before_token = true;\n                    }\n                    return;\n                }\n\n                if (is_array(flags.mode)) {\n                    if (flags.last_text === '[' ||\n                        (flags.last_text === ',' && (last_last_text === ']' || last_last_text === '}'))) {\n                        // ], [ goes to new line\n                        // }, [ goes to new line\n                        if (!opt.keep_array_indentation) {\n                            print_newline();\n                        }\n                    }\n                }\n\n            } else {\n                if  (flags.last_text === 'for') {\n                    set_mode(MODE.ForInitializer);\n                } else if (in_array (flags.last_text, ['if', 'while'])) {\n                    set_mode(MODE.Conditional);\n                } else {\n                    set_mode(MODE.Expression);\n                }\n            }\n\n            if  (flags.last_text === ';' || last_type === 'TK_START_BLOCK') {\n                print_newline();\n            } else if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || flags.last_text === '.') {\n                if (input_wanted_newline) {\n                    print_newline();\n                }\n                // do nothing on (( and )( and ][ and ]( and .(\n            } else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') {\n                output_space_before_token = true;\n            } else if (flags.last_word === 'function' || flags.last_word === 'typeof') {\n                // function() vs function ()\n                if (opt.jslint_happy) {\n                    output_space_before_token = true;\n                }\n            } else if (in_array (flags.last_text, line_starters) || flags.last_text === 'catch') {\n                if (opt.space_before_conditional) {\n                    output_space_before_token = true;\n                }\n            }\n\n            // Support of this kind of newline preservation.\n            // a = (b &&\n            //     (c || d));\n            if (token_text === '(') {\n                if (last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                    if (flags.mode !== MODE.ObjectLiteral) {\n                        allow_wrap_or_preserved_newline();\n                    }\n                }\n            }\n            if (token_text === '[') {\n                set_mode(MODE.ArrayLiteral);\n            }\n\n            print_token();\n            if (opt.space_in_paren) {\n                    output_space_before_token = true;\n            }\n\n            // In all cases, if we newline while inside an expression it should be indented.\n            indent();\n        }\n\n        function handle_end_expr() {\n            // statements inside expressions are not valid syntax, but...\n            // statements must all be closed when their container closes\n            while (flags.mode === MODE.Statement) {\n                restore_mode();\n            }\n\n            if (token_text === ']' && is_array(flags.mode) && flags.multiline_array && !opt.keep_array_indentation) {\n                print_newline();\n            }\n            if (opt.space_in_paren) {\n                    output_space_before_token = true;\n            }\n            if (token_text === ']' && opt.keep_array_indentation) {\n                print_token();\n                restore_mode();\n            } else {\n                restore_mode();\n                print_token();\n            }\n\n            // do {} while () // no statement required after\n            if (flags.do_while && previous_flags.mode === MODE.Conditional) {\n                previous_flags.mode = MODE.Expression;\n                flags.do_block = false;\n                flags.do_while = false;\n\n            }\n        }\n\n        function handle_start_block() {\n            set_mode(MODE.BlockStatement);\n\n            var empty_braces = is_next('}');\n            var empty_anonymous_function = empty_braces && flags.last_word === 'function' &&\n                last_type === 'TK_END_EXPR';\n\n            if (opt.brace_style === \"expand\") {\n                if (last_type !== 'TK_OPERATOR' &&\n                    (empty_anonymous_function ||\n                        last_type === 'TK_EQUALS' ||\n                        (is_special_word (flags.last_text) && flags.last_text !== 'else'))) {\n                        output_space_before_token = true;\n                } else {\n                    print_newline();\n                }\n            } else { // collapse\n                if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') {\n                    if (last_type === 'TK_START_BLOCK') {\n                        print_newline();\n                    } else {\n                        output_space_before_token = true;\n                    }\n                } else {\n                    // if TK_OPERATOR or TK_START_EXPR\n                    if (is_array(previous_flags.mode) && flags.last_text === ',') {\n                        if (last_last_text === '}') {\n                            // }, { in array context\n                            output_space_before_token = true;\n                        } else {\n                            print_newline(); // [a, b, c, {\n                        }\n                    }\n                }\n            }\n            print_token();\n            indent();\n        }\n\n        function handle_end_block() {\n            // statements must all be closed when their container closes\n            while (flags.mode === MODE.Statement) {\n                restore_mode();\n            }\n            restore_mode();\n            var empty_braces = last_type === 'TK_START_BLOCK';\n\n            if (opt.brace_style === \"expand\") {\n                if  (!empty_braces) {\n                    print_newline();\n                }\n            } else {\n                // skip {}\n                if (!empty_braces) {\n                    if (is_array(flags.mode) && opt.keep_array_indentation) {\n                        // we REALLY need a newline here, but newliner would skip that\n                        opt.keep_array_indentation = false;\n                        print_newline();\n                        opt.keep_array_indentation = true;\n\n                    } else {\n                        print_newline();\n                    }\n                }\n            }\n            print_token();\n        }\n\n        function handle_word() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n            } else if (input_wanted_newline && !is_expression(flags.mode) &&\n                (last_type !== 'TK_OPERATOR' || (flags.last_text === '--' || flags.last_text === '++')) &&\n                last_type !== 'TK_EQUALS' &&\n                (opt.preserve_newlines || flags.last_text !== 'var')) {\n\n                print_newline();\n            }\n\n            if (flags.do_block && !flags.do_while) {\n                if (token_text === 'while') {\n                    // do {} ## while ()\n                    output_space_before_token = true;\n                    print_token();\n                    output_space_before_token = true;\n                    flags.do_while = true;\n                    return;\n                } else {\n                    // do {} should always have while as the next word.\n                    // if we don't see the expected while, recover\n                    print_newline();\n                    flags.do_block = false;\n                }\n            }\n\n            // if may be followed by else, or not\n            // Bare/inline ifs are tricky\n            // Need to unwind the modes correctly: if (a) if (b) c(); else d(); else e();\n            if (flags.if_block) {\n                if (token_text !== 'else') {\n                    while (flags.mode === MODE.Statement) {\n                        restore_mode();\n                    }\n                    flags.if_block = false;\n                }\n            }\n\n            if (token_text === 'function') {\n                if (flags.var_line && last_type !== 'TK_EQUALS') {\n                    flags.var_line_reindented = true;\n                }\n                if ((just_added_newline() || flags.last_text === ';' || flags.last_text === '}') &&\n                    flags.last_text !== '{' && !is_array(flags.mode)) {\n                    // make sure there is a nice clean space of at least one blank line\n                    // before a new function definition, except in arrays\n                    if(!just_added_newline()) {\n                        print_newline(true);\n                    }\n\n                    if(!just_added_blankline()) {\n                        print_newline(true);\n                    }\n                }\n                if (last_type === 'TK_WORD') {\n                    if  (flags.last_text === 'get' || flags.last_text === 'set' || flags.last_text === 'new' || flags.last_text === 'return') {\n                        output_space_before_token = true;\n                    } else {\n                        print_newline();\n                    }\n                } else if (last_type === 'TK_OPERATOR' || flags.last_text === '=') {\n                    // foo = function\n                    output_space_before_token = true;\n                } else if (is_expression(flags.mode)) {\n                    // (function\n                } else {\n                    print_newline();\n                }\n\n                if (is_expression(flags.mode)) {\n                    // Issue #274\n                    // (function inside expression that is not nested.\n                    if(!(is_expression(flags.parent.mode) || is_array(flags.parent.mode)) &&\n                        line_indent_level < flags.indentation_level) {\n                        deindent();\n                    }\n                }\n\n                print_token();\n                flags.last_word = token_text;\n                return;\n            }\n\n            if (token_text === 'case' || (token_text === 'default' && flags.in_case_statement)) {\n                print_newline();\n                if (flags.case_body || opt.jslint_happy) {\n                    // switch cases following one another\n                    deindent();\n                    flags.case_body = false;\n                }\n                print_token();\n                flags.in_case = true;\n                flags.in_case_statement = true;\n                return;\n            }\n\n            prefix = 'NONE';\n\n            if (last_type === 'TK_END_BLOCK') {\n                if (!in_array(token_text, ['else', 'catch', 'finally'])) {\n                    prefix = 'NEWLINE';\n                } else {\n                    if (opt.brace_style === \"expand\" || opt.brace_style === \"end-expand\") {\n                        prefix = 'NEWLINE';\n                    } else {\n                        prefix = 'SPACE';\n                        output_space_before_token = true;\n                    }\n                }\n            } else if (last_type === 'TK_SEMICOLON' && flags.mode === MODE.BlockStatement) {\n                // TODO: Should this be for STATEMENT as well?\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_SEMICOLON' && is_expression(flags.mode)) {\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_STRING') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_WORD') {\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_START_BLOCK') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_END_EXPR') {\n                output_space_before_token = true;\n                prefix = 'NEWLINE';\n            }\n\n            if (in_array(token_text, line_starters) && flags.last_text !== ')') {\n                if  (flags.last_text === 'else') {\n                    prefix = 'SPACE';\n                } else {\n                    prefix = 'NEWLINE';\n                }\n\n            }\n\n            if (last_type === 'TK_COMMA' || last_type === 'TK_START_EXPR' || last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                if (flags.mode !== MODE.ObjectLiteral) {\n                    allow_wrap_or_preserved_newline();\n                }\n            }\n\n            if (in_array(token_text, ['else', 'catch', 'finally'])) {\n                if (last_type !== 'TK_END_BLOCK' || opt.brace_style === \"expand\" || opt.brace_style === \"end-expand\") {\n                    print_newline();\n                } else {\n                    trim_output(true);\n                    // If we trimmed and there's something other than a close block before us\n                    // put a newline back in.  Handles '} // comment' scenario.\n                    if (output[output.length - 1] !== '}') {\n                        print_newline();\n                    }\n                    output_space_before_token = true;\n                }\n            } else if (prefix === 'NEWLINE') {\n                if (is_special_word (flags.last_text)) {\n                    // no newline between 'return nnn'\n                    output_space_before_token = true;\n                } else if (last_type !== 'TK_END_EXPR') {\n                    if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && flags.last_text !== ':') {\n                        // no need to force newline on 'var': for (var x = 0...)\n                        if (token_text === 'if' && flags.last_word === 'else' && flags.last_text !== '{') {\n                            // no newline for } else if {\n                            output_space_before_token = true;\n                        } else {\n                            flags.var_line = false;\n                            flags.var_line_reindented = false;\n                            print_newline();\n                        }\n                    }\n                } else if (in_array(token_text, line_starters) && flags.last_text !== ')') {\n                    flags.var_line = false;\n                    flags.var_line_reindented = false;\n                    print_newline();\n                }\n            } else if (is_array(flags.mode) && flags.last_text === ',' && last_last_text === '}') {\n                print_newline(); // }, in lists get a newline treatment\n            } else if (prefix === 'SPACE') {\n                output_space_before_token = true;\n            }\n            print_token();\n            flags.last_word = token_text;\n\n            if (token_text === 'var') {\n                flags.var_line = true;\n                flags.var_line_reindented = false;\n                flags.var_line_tainted = false;\n            }\n\n            if (token_text === 'do') {\n                flags.do_block = true;\n            }\n\n            if (token_text === 'if') {\n                flags.if_block = true;\n            }\n        }\n\n        function handle_semicolon() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n                // Semicolon can be the start (and end) of a statement\n                output_space_before_token = false;\n            }\n            while (flags.mode === MODE.Statement && !flags.if_block && !flags.do_block) {\n                restore_mode();\n            }\n            print_token();\n            flags.var_line = false;\n            flags.var_line_reindented = false;\n            if (flags.mode === MODE.ObjectLiteral) {\n                // if we're in OBJECT mode and see a semicolon, its invalid syntax\n                // recover back to treating this as a BLOCK\n                flags.mode = MODE.BlockStatement;\n            }\n        }\n\n        function handle_string() {\n            if (start_of_statement()) {\n                // The conditional starts the statement if appropriate.\n                // One difference - strings want at least a space before\n                output_space_before_token = true;\n            } else if (last_type === 'TK_WORD') {\n                output_space_before_token = true;\n            } else if (last_type === 'TK_COMMA' || last_type === 'TK_START_EXPR' || last_type === 'TK_EQUALS' || last_type === 'TK_OPERATOR') {\n                if (flags.mode !== MODE.ObjectLiteral) {\n                    allow_wrap_or_preserved_newline();\n                }\n            } else {\n                print_newline();\n            }\n            print_token();\n        }\n\n        function handle_equals() {\n            if (flags.var_line) {\n                // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n                flags.var_line_tainted = true;\n            }\n            output_space_before_token = true;\n            print_token();\n            output_space_before_token = true;\n        }\n\n        function handle_comma() {\n            if (flags.var_line) {\n                if (is_expression(flags.mode) || last_type === 'TK_END_BLOCK') {\n                    // do not break on comma, for(var a = 1, b = 2)\n                    flags.var_line_tainted = false;\n                }\n\n                if (flags.var_line) {\n                    flags.var_line_reindented = true;\n                }\n\n                print_token();\n\n                if (flags.var_line_tainted) {\n                    flags.var_line_tainted = false;\n                    print_newline();\n                } else {\n                    output_space_before_token = true;\n                }\n                return;\n            }\n\n            if (last_type === 'TK_END_BLOCK' && flags.mode !== MODE.Expression) {\n                print_token();\n                if (flags.mode === MODE.ObjectLiteral && flags.last_text === '}') {\n                    print_newline();\n                } else {\n                    output_space_before_token = true;\n                }\n            } else {\n                if (flags.mode === MODE.ObjectLiteral) {\n                    print_token();\n                    print_newline();\n                } else {\n                    // EXPR or DO_BLOCK\n                    print_token();\n                    output_space_before_token = true;\n                }\n            }\n        }\n\n        function handle_operator() {\n            var space_before = true;\n            var space_after = true;\n            if (is_special_word (flags.last_text)) {\n                // \"return\" had a special handling in TK_WORD. Now we need to return the favor\n                output_space_before_token = true;\n                print_token();\n                return;\n            }\n\n            // hack for actionscript's import .*;\n            if (token_text === '*' && last_type === 'TK_DOT' && !last_last_text.match(/^\\d+$/)) {\n                print_token();\n                return;\n            }\n\n            if (token_text === ':' && flags.in_case) {\n                flags.case_body = true;\n                indent();\n                print_token();\n                print_newline();\n                flags.in_case = false;\n                return;\n            }\n\n            if (token_text === '::') {\n                // no spaces around exotic namespacing syntax operator\n                print_token();\n                return;\n            }\n\n            // http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1\n            // if there is a newline between -- or ++ and anything else we should preserve it.\n            if (input_wanted_newline && (token_text === '--' || token_text === '++')) {\n                print_newline();\n            }\n\n            if (in_array(token_text, ['--', '++', '!']) || (in_array(token_text, ['-', '+']) && (in_array(last_type, ['TK_START_BLOCK', 'TK_START_EXPR', 'TK_EQUALS', 'TK_OPERATOR']) || in_array (flags.last_text, line_starters) || flags.last_text === ','))) {\n                // unary operators (and binary +/- pretending to be unary) special cases\n\n                space_before = false;\n                space_after = false;\n\n                if  (flags.last_text === ';' && is_expression(flags.mode)) {\n                    // for (;; ++i)\n                    //        ^^^\n                    space_before = true;\n                }\n\n                if (last_type === 'TK_WORD' && in_array (flags.last_text, line_starters)) {\n                    space_before = true;\n                }\n\n                if ((flags.mode === MODE.BlockStatement || flags.mode === MODE.Statement) &&  (flags.last_text === '{' || flags.last_text === ';')) {\n                    // { foo; --i }\n                    // foo(); --bar;\n                    print_newline();\n                }\n            } else if (token_text === ':') {\n                if (flags.ternary_depth === 0) {\n                    if (flags.mode === MODE.BlockStatement) {\n                        flags.mode = MODE.ObjectLiteral;\n                    }\n                    space_before = false;\n                } else {\n                    flags.ternary_depth -= 1;\n                }\n            } else if (token_text === '?') {\n                flags.ternary_depth += 1;\n            }\n            output_space_before_token = output_space_before_token || space_before;\n            print_token();\n            output_space_before_token = space_after;\n        }\n\n        function handle_block_comment() {\n            var lines = split_newlines(token_text);\n            var j; // iterator for this case\n            var javadoc = false;\n\n            // block comment starts with a new line\n            print_newline(false, true);\n            if (lines.length > 1) {\n                if (all_lines_start_with(lines.slice(1), '*')) {\n                    javadoc = true;\n                }\n            }\n\n            // first line always indented\n            print_token(lines[0]);\n            for (j = 1; j < lines.length; j++) {\n                print_newline(false, true);\n                if (javadoc) {\n                    // javadoc: reformat and re-indent\n                    print_token(' ' + trim(lines[j]));\n                } else {\n                    // normal comments output raw\n                    output.push(lines[j]);\n                }\n            }\n\n            // for comments of more than one line, make sure there's a new line after\n            print_newline(false, true);\n        }\n\n        function handle_inline_comment() {\n            output_space_before_token = true;\n            print_token();\n            output_space_before_token = true;\n        }\n\n        function handle_comment() {\n            if (input_wanted_newline) {\n                print_newline(false, true);\n            } else {\n                trim_output(true);\n            }\n\n            output_space_before_token = true;\n            print_token();\n            print_newline(false, true);\n        }\n\n        function handle_dot() {\n            if (is_special_word (flags.last_text)) {\n                output_space_before_token = true;\n            } else {\n                // allow preserved newlines before dots in general\n                // force newlines on dots after close paren when break_chained - for bar().baz()\n                allow_wrap_or_preserved_newline (flags.last_text === ')' && opt.break_chained_methods);\n            }\n\n            print_token();\n        }\n\n        function handle_unknown() {\n            print_token();\n            if (token_text[token_text.length - 1] === '\\n') {\n                print_newline();\n            }\n        }\n    }\n\n\n    if (typeof define === \"function\") {\n        // Add support for require.js\n        define(function(require, exports, module) {\n            exports.js_beautify = js_beautify;\n        });\n    } else if (typeof exports !== \"undefined\") {\n        // Add support for CommonJS. Just put this file somewhere on your require.paths\n        // and you will be able to `var js_beautify = require(\"beautify\").js_beautify`.\n        exports.js_beautify = js_beautify;\n    } else if (typeof window !== \"undefined\") {\n        // If we're running a web page and don't have either of the above, add our one global\n        window.js_beautify = js_beautify;\n    } else if (typeof global !== \"undefined\") {\n        // If we don't even have window, try global.\n        global.js_beautify = js_beautify;\n    }\n\n}());\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/json2.js",
    "content": "/*\n    json2.js\n    2012-10-08\n\n    Public Domain.\n\n    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    See http://www.JSON.org/js.html\n\n\n    This code should be minified before deployment.\n    See http://javascript.crockford.com/jsmin.html\n\n    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    NOT CONTROL.\n\n\n    This file creates a global JSON object containing two methods: stringify\n    and parse.\n\n        JSON.stringify(value, replacer, space)\n            value       any JavaScript value, usually an object or array.\n\n            replacer    an optional parameter that determines how object\n                        values are stringified for objects. It can be a\n                        function or an array of strings.\n\n            space       an optional parameter that specifies the indentation\n                        of nested structures. If it is omitted, the text will\n                        be packed without extra whitespace. If it is a number,\n                        it will specify the number of spaces to indent at each\n                        level. If it is a string (such as '\\t' or '&nbsp;'),\n                        it contains the characters used to indent at each level.\n\n            This method produces a JSON text from a JavaScript value.\n\n            When an object value is found, if the object contains a toJSON\n            method, its toJSON method will be called and the result will be\n            stringified. A toJSON method does not serialize: it returns the\n            value represented by the name/value pair that should be serialized,\n            or undefined if nothing should be serialized. The toJSON method\n            will be passed the key associated with the value, and this will be\n            bound to the value\n\n            For example, this would serialize Dates as ISO strings.\n\n                Date.prototype.toJSON = function (key) {\n                    function f(n) {\n                        // Format integers to have at least two digits.\n                        return n < 10 ? '0' + n : n;\n                    }\n\n                    return this.getUTCFullYear()   + '-' +\n                         f(this.getUTCMonth() + 1) + '-' +\n                         f(this.getUTCDate())      + 'T' +\n                         f(this.getUTCHours())     + ':' +\n                         f(this.getUTCMinutes())   + ':' +\n                         f(this.getUTCSeconds())   + 'Z';\n                };\n\n            You can provide an optional replacer method. It will be passed the\n            key and value of each member, with this bound to the containing\n            object. The value that is returned from your method will be\n            serialized. If your method returns undefined, then the member will\n            be excluded from the serialization.\n\n            If the replacer parameter is an array of strings, then it will be\n            used to select the members to be serialized. It filters the results\n            such that only members with keys listed in the replacer array are\n            stringified.\n\n            Values that do not have JSON representations, such as undefined or\n            functions, will not be serialized. Such values in objects will be\n            dropped; in arrays they will be replaced with null. You can use\n            a replacer function to replace those with JSON values.\n            JSON.stringify(undefined) returns undefined.\n\n            The optional space parameter produces a stringification of the\n            value that is filled with line breaks and indentation to make it\n            easier to read.\n\n            If the space parameter is a non-empty string, then that string will\n            be used for indentation. If the space parameter is a number, then\n            the indentation will be that many spaces.\n\n            Example:\n\n            text = JSON.stringify(['e', {pluribus: 'unum'}]);\n            // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n\n            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\\t');\n            // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n            text = JSON.stringify([new Date()], function (key, value) {\n                return this[key] instanceof Date ?\n                    'Date(' + this[key] + ')' : value;\n            });\n            // text is '[\"Date(---current time---)\"]'\n\n\n        JSON.parse(text, reviver)\n            This method parses a JSON text to produce an object or array.\n            It can throw a SyntaxError exception.\n\n            The optional reviver parameter is a function that can filter and\n            transform the results. It receives each of the keys and values,\n            and its return value is used instead of the original value.\n            If it returns what it received, then the structure is not modified.\n            If it returns undefined then the member is deleted.\n\n            Example:\n\n            // Parse the text. Values that look like ISO date strings will\n            // be converted to Date objects.\n\n            myData = JSON.parse(text, function (key, value) {\n                var a;\n                if (typeof value === 'string') {\n                    a =\n/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n                    if (a) {\n                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n                            +a[5], +a[6]));\n                    }\n                }\n                return value;\n            });\n\n            myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n                var d;\n                if (typeof value === 'string' &&\n                        value.slice(0, 5) === 'Date(' &&\n                        value.slice(-1) === ')') {\n                    d = new Date(value.slice(5, -1));\n                    if (d) {\n                        return d;\n                    }\n                }\n                return value;\n            });\n\n\n    This is a reference implementation. You are free to copy, modify, or\n    redistribute.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n    lastIndex, length, parse, prototype, push, replace, slice, stringify,\n    test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== 'object') {\n    JSON = {};\n}\n\n(function () {\n    'use strict';\n\n    function f(n) {\n        // Format integers to have at least two digits.\n        return n < 10 ? '0' + n : n;\n    }\n\n    if (typeof Date.prototype.toJSON !== 'function') {\n\n        Date.prototype.toJSON = function (key) {\n\n            return isFinite(this.valueOf())\n                ? this.getUTCFullYear()     + '-' +\n                    f(this.getUTCMonth() + 1) + '-' +\n                    f(this.getUTCDate())      + 'T' +\n                    f(this.getUTCHours())     + ':' +\n                    f(this.getUTCMinutes())   + ':' +\n                    f(this.getUTCSeconds())   + 'Z'\n                : null;\n        };\n\n        String.prototype.toJSON      =\n            Number.prototype.toJSON  =\n            Boolean.prototype.toJSON = function (key) {\n                return this.valueOf();\n            };\n    }\n\n    var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n        gap,\n        indent,\n        meta = {    // table of character substitutions\n            '\\b': '\\\\b',\n            '\\t': '\\\\t',\n            '\\n': '\\\\n',\n            '\\f': '\\\\f',\n            '\\r': '\\\\r',\n            '\"' : '\\\\\"',\n            '\\\\': '\\\\\\\\'\n        },\n        rep;\n\n\n    function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n        escapable.lastIndex = 0;\n        return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n            var c = meta[a];\n            return typeof c === 'string'\n                ? c\n                : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n        }) + '\"' : '\"' + string + '\"';\n    }\n\n\n    function str(key, holder) {\n\n// Produce a string from holder[key].\n\n        var i,          // The loop counter.\n            k,          // The member key.\n            v,          // The member value.\n            length,\n            mind = gap,\n            partial,\n            value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n        if (value && typeof value === 'object' &&\n                typeof value.toJSON === 'function') {\n            value = value.toJSON(key);\n        }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n        if (typeof rep === 'function') {\n            value = rep.call(holder, key, value);\n        }\n\n// What happens next depends on the value's type.\n\n        switch (typeof value) {\n        case 'string':\n            return quote(value);\n\n        case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n            return isFinite(value) ? String(value) : 'null';\n\n        case 'boolean':\n        case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n            return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n        case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n            if (!value) {\n                return 'null';\n            }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n            gap += indent;\n            partial = [];\n\n// Is the value an array?\n\n            if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n                length = value.length;\n                for (i = 0; i < length; i += 1) {\n                    partial[i] = str(i, value) || 'null';\n                }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n                v = partial.length === 0\n                    ? '[]'\n                    : gap\n                    ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n                    : '[' + partial.join(',') + ']';\n                gap = mind;\n                return v;\n            }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n            if (rep && typeof rep === 'object') {\n                length = rep.length;\n                for (i = 0; i < length; i += 1) {\n                    if (typeof rep[i] === 'string') {\n                        k = rep[i];\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n                for (k in value) {\n                    if (Object.prototype.hasOwnProperty.call(value, k)) {\n                        v = str(k, value);\n                        if (v) {\n                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n                        }\n                    }\n                }\n            }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n            v = partial.length === 0\n                ? '{}'\n                : gap\n                ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n                : '{' + partial.join(',') + '}';\n            gap = mind;\n            return v;\n        }\n    }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n    if (typeof JSON.stringify !== 'function') {\n        JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n            var i;\n            gap = '';\n            indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n            if (typeof space === 'number') {\n                for (i = 0; i < space; i += 1) {\n                    indent += ' ';\n                }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n            } else if (typeof space === 'string') {\n                indent = space;\n            }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n            rep = replacer;\n            if (replacer && typeof replacer !== 'function' &&\n                    (typeof replacer !== 'object' ||\n                    typeof replacer.length !== 'number')) {\n                throw new Error('JSON.stringify');\n            }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n            return str('', {'': value});\n        };\n    }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n    if (typeof JSON.parse !== 'function') {\n        JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n            var j;\n\n            function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n                var k, v, value = holder[key];\n                if (value && typeof value === 'object') {\n                    for (k in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, k)) {\n                            v = walk(value, k);\n                            if (v !== undefined) {\n                                value[k] = v;\n                            } else {\n                                delete value[k];\n                            }\n                        }\n                    }\n                }\n                return reviver.call(holder, key, value);\n            }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n            text = String(text);\n            cx.lastIndex = 0;\n            if (cx.test(text)) {\n                text = text.replace(cx, function (a) {\n                    return '\\\\u' +\n                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n                });\n            }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n            if (/^[\\],:{}\\s]*$/\n                    .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n                        .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n                        .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n                j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n                return typeof reviver === 'function'\n                    ? walk({'': j}, '')\n                    : j;\n            }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n            throw new SyntaxError('JSON.parse');\n        };\n    }\n}());\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/pageguide/LICENSE.txt",
    "content": " Copyright (c) 2012 Tracelytics\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/pageguide/README.md",
    "content": "pageguide.js\n============\n\nAn interactive guide for web page elements using jQuery and CSS3.\n\n## How-to:\n1. Add references in your code to pageguide.js, jQuery & pageguide.css\n2. Add a document ready callback to setup the page guide\n3. Add a simple `<ul>` to the bottom of the pages you want the pageguide to appear on.\n4. Customize the page guide tour title.\n\n## An example:\n\n### Step 1 - Add pageguide.js \n\nAdd `<script src=\"pageguide.js\"></script>` to the bottom of your html document, right before your closing `</body>` tag.\n\nWe provide both the standard js as well as a minified version.\n\n### Step 2 - Add pageguide.css\n\nAdd `<link rel=\"stylesheet\" href=\"stylesheets/pageguide.css\">` to the header of your html document.\n\nWe provide a css file as well as a minified version. Alternatively, we use <a href=\"http://lesscss.org/\" target=\"_blank\">LESS CSS</a> at Tracelytics, so we provide that as well. \n\n### Step 3 - Add setup code\n\nAdd the following block of JavaScript to your html document:\n\n```$(document).ready(function() {\n    tl.pg.init({ /* optional preferences go here */ });\n});```\n\n### Step 4 - Choose the elements that you want included in the page guide.\npageguide.js matches the first occurrence of the selector you specify in the `<ul>` you put on your pages in the next step.\n\n### Step 5 - Add the pageguide.js `<ul>` near the bottom of your pages.\n\n    <ul id=\"tlyPageGuide\" data-tourtitle=\"REPLACE THIS WITH A TITLE\">\n      <li class=\"tlypageguide_left\" data-tourtarget=\".first_element_to_target\">\n        <div>\n          Here is the first item description. The number will appear to the left of the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_right\" data-tourtarget=\"#second_element_to_target\">\n        <div>\n          Here is the second item description. The number will appear to the right of the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_top\" data-tourtarget=\".third_element_to_target > div.is_here\">\n        <div>\n          Here is the third item description. The number will appear above the element.\n        </div>\n      </li>\n      <li class=\"tlypageguide_bottom\" data-tourtarget=\"#fourth_element_to_target\">\n        <div>\n          Here is the fourth item description. The number will appear below the element.\n        </div>\n      </li>\n    </ul>\n\n\n## See it IRL:\n* http://tracelytics.github.com/pageguide\n\n## Contribute\nBugfix?  Cool new feature?  Alternate style?  Send us a pull request!\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/pageguide/css/pageguide.css",
    "content": "#tlyPageGuideWrapper {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  color: #000;\n  font-size: 12px;\n  font-family: Helvetica, Arial, sans serif;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  background: rgba(0, 0, 0, 0.1);\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  -o-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n  clear: both;\n  color: #000000;\n  cursor: pointer;\n  display: block;\n  float: right;\n  font-size: 11px;\n  height: 50px;\n  line-height: 25px;\n  padding: 22px 6px 6px;\n  position: fixed;\n  right: -190px;\n  text-align: left;\n  text-decoration: none;\n  top: 84px;\n  width: 184px;\n  -webkit-transition: all 0.2s ease-in;\n  -moz-transition: all 0.2s ease-in;\n  -o-transition: all 0.2s ease-in;\n  -ms-transition: all 0.2s ease-in;\n  transition: all 0.2s ease-in;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:before {\n  background: transparent url(\"../img/tlyguide/tlyguide_icon.png\") 0 0 no-repeat;\n  display: block;\n  height: 16px;\n  overflow: hidden;\n  text-indent: -999px;\n  width: 16px;\n  content: \" \";\n  left: 25px;\n  position: absolute;\n  top: 8px;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle div {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  border-left: 1px solid #fff;\n  display: block;\n  height: 33px;\n  line-height: 16px;\n  overflow: hidden;\n  padding: 2px 0 0 5px;\n  position: absolute;\n  right: -4px;\n  top: 6px;\n  width: 124px;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle div span {\n  display: block;\n  margin: 0 0 0 -118px;\n  width: 115px;\n  -webkit-transition: all 0.2s ease-in;\n  -moz-transition: all 0.2s ease-in;\n  -o-transition: all 0.2s ease-in;\n  -ms-transition: all 0.2s ease-in;\n  transition: all 0.2s ease-in;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle a {\n  bottom: -26px;\n  color: #000;\n  opacity: 0;\n  position: absolute;\n  right: 10px;\n  text-decoration: none;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:hover {\n  background: rgba(0, 0, 0, 0.2);\n  right: 0 !important;\n}\n#tlyPageGuideWrapper .tlypageguide_toggle:hover div span {\n  margin: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide {\n  list-style: none;\n  margin: 0 0 0 0;\n  padding: 0 0 0 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li {\n  background: rgba(247, 0, 119, 0.3);\n  -webkit-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.4);\n  -webkit-transition: min-height, max-height 0.1s ease-in-out;\n  -moz-transition: min-height, max-height 0.1s ease-in-out;\n  -o-transition: min-height, max-height 0.1s ease-in-out;\n  -ms-transition: min-height, max-height 0.1s ease-in-out;\n  transition: min-height, max-height 0.1s ease-in-out;\n  filter: alpha(opacity=0);\n  -moz-opacity: 0;\n  -khtml-opacity: 0;\n  opacity: 0;\n  cursor: pointer;\n  display: block;\n  height: 46px;\n  line-height: 50px;\n  min-height: 0px;\n  max-height: 0px;\n  position: absolute;\n  text-align: center;\n  width: 50px;\n  z-index: 5000;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.expanded {\n  filter: alpha(opacity=0);\n  -moz-opacity: 1;\n  -khtml-opacity: 1;\n  opacity: 1;\n  height: 46px;\n  min-height: 15px;\n  max-height: 46px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.expanded:after {\n  display: block;\n}\n#tlyPageGuideWrapper #tlyPageGuide li ins {\n  background: none;\n  color: #fff;\n  display: block;\n  font-size: 32px;\n  overflow: hidden;\n  text-decoration: none;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li div {\n  display: none;\n}\n#tlyPageGuideWrapper #tlyPageGuide li:after {\n  content: \" \";\n  display: none;\n  height: 0;\n  left: 0;\n  position: absolute;\n  top: -15px;\n  width: 0;\n  border-top: none;\n  border-right: none;\n  border-bottom: none;\n  border-left: none;\n  top: auto;\n  left: auto;\n  right: auto;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active {\n  background: rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  left: 0;\n  top: -15px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_bottom:hover {\n  margin-top: -5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-left: 15px solid transparent;\n  left: -15px;\n  top: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_right:hover {\n  margin-left: -5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  right: -15px;\n  top: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_left:hover {\n  margin-left: 5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.3);\n  border-right: 15px solid transparent;\n  bottom: -15px;\n  left: 0;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide_top:hover {\n  margin-top: 5px;\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover {\n  background: rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_bottom:after {\n  border-bottom: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li:hover.tlypageguide_top:after {\n  border-top: 15px solid rgba(247, 0, 119, 0.95);\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages {\n  -webkit-border-radius: 3px 3px 0 0;\n  -moz-border-radius: 3px 3px 0 0;\n  -o-border-radius: 3px 3px 0 0;\n  border-radius: 3px 3px 0 0;\n  background: rgba(0, 0, 0, 0.85);\n  -webkit-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  box-shadow: 0 0 9px 4px rgba(0, 0, 0, 0.4);\n  bottom: 0;\n  display: none;\n  font-size: 16px;\n  height: 0;\n  margin: 0 5% 0 5%;\n  padding: 10px;\n  position: fixed;\n  width: 90%;\n  z-index: 1000;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages span {\n  background: rgba(247, 0, 119, 0.95);\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  color: #fff;\n  display: block;\n  font-size: 32px;\n  height: 46px;\n  left: 40px;\n  line-height: 50px;\n  overflow: hidden;\n  position: absolute;\n  text-align: center;\n  top: 25px;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div {\n  color: #fff;\n  line-height: 22px;\n  margin: 10px 90px 0 120px;\n  position: relative;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div a {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages div a:hover {\n  color: #fff;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close {\n  background: #f70077;\n  -webkit-border-radius: 0 0 3px 3px;\n  -moz-border-radius: 0 0 3px 3px;\n  -o-border-radius: 0 0 3px 3px;\n  border-radius: 0 0 3px 3px;\n  color: #fff;\n  display: block;\n  font-size: 11px;\n  height: 24px;\n  line-height: 26px;\n  overflow: hidden;\n  position: absolute;\n  right: 50px;\n  text-align: center;\n  text-decoration: none;\n  top: 0;\n  width: 50px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  background: transparent url(\"../img/tlyguide/tlyguide_arrow.png\") 10px 4px no-repeat;\n  display: block;\n  height: 30px;\n  overflow: hidden;\n  text-indent: -999px;\n  width: 30px;\n  position: absolute;\n  top: 34px;\n  left: 10px;\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_back {\n  -webkit-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -moz-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -o-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  -ms-transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n  transform: rotate(-180deg) scale(1) skewX(0deg) skewY(0deg) translate(0px);\n}\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_fwd {\n  left: 90px;\n}\n.tlypageguide_shadow {\n  position: relative;\n}\n.tlypageguide_shadow:after {\n  background-color: rgba(247, 0, 119, 0.1);\n  -webkit-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  -moz-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  -o-box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  box-shadow: 0 0 1px 1px rgba(147, 0, 119, 0.25);\n  content: \" \";\n  display: none;\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle {\n  -webkit-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  -moz-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  -o-box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  box-shadow: 6px 4px 5px 0 rgba(0, 0, 0, 0.4);\n  background: rgba(247, 0, 119, 0.9);\n  color: #fff;\n  right: 0 !important;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle a {\n  opacity: 1.0;\n}\n.tlypageguide-open #tlyPageGuideWrapper .tlypageguide_toggle div span {\n  margin: 0;\n}\n.tlypageguide-open .tlypageguide_shadow:after {\n  display: block;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/pageguide/js/pageguide.js",
    "content": "/*\n * Tracelytics PageGuide\n *\n * Copyright 2013 Tracelytics\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Contributing Author: Tracelytics Team\n */\n\n/*\n * PageGuide usage:\n *\n *   Preferences:\n *     auto_show_first - Whether or not to focus on the first visible item\n *                       immediately on PG open (default true)\n *     loading_selector - The CSS selector for the loading element. pageguide\n *                        will wait until this element is no longer visible\n *                        starting up.\n *     track_events_cb - Optional callback for tracking user interactions\n *                       with pageguide.  Should be a method taking a single\n *                       parameter indicating the name of the interaction.\n *                       (default none)\n *     handle_doc_switch - Optional callback to enlight or adapt interface\n *                         depending on current documented element. Should be a\n *                         function taking 2 parameters, current and previous\n *                         data-tourtarget selectors. (default null)\n *     custom_open_button - Optional id for toggling pageguide. Default null.\n *                          If not specified then the default button is used.\n *     pg_caption - Optional - Sets the visible caption\n */\ntl = window.tl || {};\ntl.pg = tl.pg || {};\n\ntl.pg.default_prefs = {\n    'auto_show_first': true,\n    'loading_selector' : '#loading',\n    'track_events_cb': function() { return; },\n    'handle_doc_switch': null,\n    'custom_open_button': null,\n    'pg_caption' : 'page guide'\n};\n\ntl.pg.init = function(preferences) {\n    if (typeof(preferences) === 'undefined') {\n        preferences = tl.pg.default_prefs;\n    }\n    \n    /* page guide object, for pages that have one */\n    if (jQuery(\"#tlyPageGuide\").length === 0) {\n        return;\n    }\n\n    var guide   = jQuery(\"#tlyPageGuide\"),\n        wrapper = jQuery('<div>', { id: 'tlyPageGuideWrapper' }),\n        message = jQuery('<div>', { id: 'tlyPageGuideMessages'});\n\n    message.append('<a href=\"#\" class=\"tlypageguide_close\" title=\"Close Guide\">close</a>')\n      .append('<span></span>')\n      .append('<div></div>')\n      .append('<a href=\"#\" class=\"tlypageguide_back\" title=\"Previous\">Previous</a>')\n      .append('<a href=\"#\" class=\"tlypageguide_fwd\" title=\"Next\">Next</a>');\n\n    if (preferences.custom_open_button == null) {\n        jQuery('<div/>', {\n            'title': 'Launch Page Guide',\n            'class': 'tlypageguide_toggle'\n        }).append(preferences.pg_caption)\n          .append('<div><span>' + guide.data('tourtitle') + '</span></div>')\n          .append('<a href=\"#\" class=\"tlypageguide_close\" title=\"close guide\">close guide &raquo;</a>').appendTo(wrapper);\n    }\n\n    wrapper.append(guide);\n    wrapper.append(message);\n    jQuery('body').append(wrapper);\n\n    var pg = new tl.pg.PageGuide(jQuery('#tlyPageGuideWrapper'), preferences);\n    pg.ready(function() {\n        pg.setup_handlers();\n        pg.$base.children(\".tlypageguide_toggle\").animate({ \"right\": \"-120px\" }, 250);\n    });\n    return pg;\n};\n\ntl.pg.PageGuide = function (pg_elem, preferences) {\n    this.preferences = jQuery.extend({}, tl.pg.default_prefs, preferences);\n    this.$base = pg_elem;\n    this.$all_items = jQuery('#tlyPageGuide > li', this.$base);\n    this.$items = jQuery([]); /* fill me with visible elements on pg expand */\n    this.$message = jQuery('#tlyPageGuideMessages');\n    this.$fwd = jQuery('a.tlypageguide_fwd', this.$base);\n    this.$back = jQuery('a.tlypageguide_back', this.$base);\n    this.cur_idx = 0;\n    this.track_event = this.preferences.track_events_cb;\n    this.handle_doc_switch = this.preferences.handle_doc_switch;\n    this.custom_open_button = this.preferences.custom_open_button;\n    this.is_open = false;\n};\n\ntl.pg.isScrolledIntoView = function(elem) {\n    var dvtop = jQuery(window).scrollTop(),\n        dvbtm = dvtop + jQuery(window).height(),\n        eltop = jQuery(elem).offset().top,\n        elbtm = eltop + jQuery(elem).height();\n\n    return (elbtm >= dvtop) && (eltop <= dvbtm - 100);\n};\n\ntl.pg.PageGuide.prototype.ready = function(callback) {\n    var that = this,\n        interval = window.setInterval(function() {\n            if (!jQuery(that.preferences.loading_selector).is(':visible')) {\n                callback();\n                clearInterval(interval);\n            }\n        }, 250);\n    return this;\n};\n\n/* to be executed on pg expand */\ntl.pg.PageGuide.prototype._on_expand = function () {\n    var that = this,\n        $d = document,\n        $w = window;\n\n    /* set up initial state */\n    this.position_tour();\n    this.cur_idx = 0;\n\n    // create a new stylesheet:\n    var ns = $d.createElement('style');\n    $d.getElementsByTagName('head')[0].appendChild(ns);\n\n    // keep Safari happy\n    if (!$w.createPopup) {\n        ns.appendChild($d.createTextNode(''));\n        ns.setAttribute(\"type\", \"text/css\");\n    }\n\n    // get a pointer to the stylesheet you just created\n    var sh = $d.styleSheets[$d.styleSheets.length - 1];\n\n    // space for IE rule set\n    var ie = \"\";\n\n    /* add number tags and PG shading elements */\n    this.$items.each(function(i) {\n        var $p = jQuery(jQuery(this).data('tourtarget') + \":visible:first\");\n        $p.addClass(\"tlypageguide_shadow tlypageguide_shadow\" + i);\n\n        var node_text = '.tlypageguide_shadow' + i + ':after { height: ' +\n                            $p.outerHeight() + 'px; width: ' + $p.outerWidth(false) + 'px; }';\n\n        if (!$w.createPopup) {\n            // modern browsers\n            var k = $d.createTextNode(node_text, 0);\n            ns.appendChild(k);\n        } else {\n            // for IE\n            ie += node_text;\n        }\n\n        jQuery(this).prepend('<ins>' + (i + 1) + '</ins>');\n        jQuery(this).data('idx', i);\n    });\n\n    // is IE? slam styles in all at once:\n    if ($w.createPopup) {\n        sh.cssText = ie;\n    }\n\n    /* decide to show first? */\n    if (this.preferences.auto_show_first && this.$items.length > 0) {\n        this.show_message(0);\n    }\n};\n\ntl.pg.PageGuide.prototype.open = function() {\n    if (this.is_open) {\n        return;\n    } else {\n        this.is_open = true;\n    }\n    \n    this.track_event('PG.open');\n\n    this._on_expand();\n    this.$items.toggleClass('expanded');\n    jQuery('body').addClass('tlypageguide-open');\n};\n\ntl.pg.PageGuide.prototype.close = function() {\n    if (!this.is_open) {\n        return;\n    } else {\n        this.is_open = false;\n    }\n    \n    this.track_event('PG.close');\n\n    this.$items.toggleClass('expanded');\n    this.$message.slideUp();\n    /*\n    this.$message.animate({ height: \"0\" }, 500, function() {\n        jQuery(this).hide();\n    });\n    */\n    /* clear number tags and shading elements */\n    jQuery('ins').remove();\n    jQuery('body').removeClass('tlypageguide-open');\n};\n\ntl.pg.PageGuide.prototype.setup_handlers = function () {\n    var that = this;\n\n    /* interaction: open/close PG interface */\n    var interactor = (that.custom_open_button == null) ? \n                    jQuery('.tlypageguide_toggle', this.$base) : \n                    jQuery(that.custom_open_button);\n    interactor.live('click', function() {\n        if (this.is_open) {\n            that.close();\n        } else {\n            that.open();\n        }\n        return false;\n    });\n\n    jQuery('.tlypageguide_close', this.$message.add($('.tlypageguide_toggle')))\n        .live('click', function() {\n            that.close();\n            return false;\n    });\n\n    /* interaction: item click */\n    this.$all_items.live('click', function() {\n        var new_index = jQuery(this).data('idx');\n\n        that.track_event('PG.specific_elt');\n        that.show_message(new_index);\n    });\n\n    /* interaction: fwd/back click */\n    this.$fwd.live('click', function() {\n        var new_index = (that.cur_idx + 1) % that.$items.length;\n\n        that.track_event('PG.fwd');\n        that.show_message(new_index);\n        return false;\n    });\n\n    this.$back.live('click', function() {\n        /*\n         * If -n < x < 0, then the result of x % n will be x, which is\n         * negative. To get a positive remainder, compute (x + n) % n.\n         */\n        var new_index = (that.cur_idx + that.$items.length - 1) % that.$items.length;\n\n        that.track_event('PG.back');\n        that.show_message(new_index, true);\n        return false;\n    });\n\n    /* register resize callback */\n    jQuery(window).resize(function() { that.position_tour(); });\n};\n\ntl.pg.PageGuide.prototype.show_message = function (new_index, left) {\n    var old_idx = this.cur_idx,\n        old_item = this.$items[old_idx],\n        new_item = this.$items[new_index];\n\n    this.cur_idx = new_index;\n    if(this.handle_doc_switch){\n        this.handle_doc_switch(jQuery(new_item).data('tourtarget'),\n                               jQuery(old_item).data('tourtarget'));\n    }\n\n    // modified to slide the message up/down on each step\n    var m = this.$message;\n    this.$message.slideUp(function(){\n    \tjQuery('div', m).html(jQuery(new_item).children('div').html());\n        m.slideDown();\n    });\n    \n    // original\n    //jQuery('div', this.$message).html(jQuery(new_item).children('div').html());\n    \n    this.$items.removeClass(\"tlypageguide-active\");\n    jQuery(new_item).addClass(\"tlypageguide-active\");\n\n    if (!tl.pg.isScrolledIntoView(jQuery(new_item))) {\n        jQuery('html,body').animate({scrollTop: jQuery(new_item).offset().top - 50}, 500);\n    }\n\n    //this.$message.not(':visible').show().animate({ 'height': '50px'}, 500);\n    this.$message.not(':visible').slideDown();\n    this.roll_number(jQuery('span', this.$message), jQuery(new_item).children('ins').html(), left);\n};\n\ntl.pg.PageGuide.prototype.roll_number = function (num_wrapper, new_text, left) {\n    num_wrapper.animate({ 'text-indent': (left ? '' : '-') + '50px' }, 'fast', function() {\n        num_wrapper.html(new_text);\n        num_wrapper.css({ 'text-indent': (left ? '-' : '') + '50px' }, 'fast').animate({ 'text-indent': \"0\" }, 'fast');\n    });\n};\n\ntl.pg.PageGuide.prototype.position_tour = function () {\n    /* set PG element positions for visible tourtargets */\n    this.$items = this.$all_items.filter(function () {\n        return jQuery(jQuery(this).data('tourtarget')).is(':visible');\n    });\n\n    this.$items.each(function() {\n        var arrow   = jQuery(this),\n            target  = jQuery(arrow.data('tourtarget')).filter(':visible:first'),\n            setLeft = target.offset().left,\n            setTop  = target.offset().top;\n\n        if (arrow.hasClass(\"tlypageguide_top\")) {\n            setTop -= 60;\n        } else if (arrow.hasClass(\"tlypageguide_bottom\")) {\n            setTop += target.outerHeight() + 15;\n        } else {\n            setTop += 5;\n        }\n\n        if (arrow.hasClass(\"tlypageguide_right\")) {\n            setLeft += target.outerWidth(false) + 15;\n        } else if (arrow.hasClass(\"tlypageguide_left\")) {\n            setLeft -= 65;\n        } else {\n            setLeft += 5;\n        }\n\n        arrow.css({ \"left\": setLeft + \"px\", \"top\": setTop + \"px\" });\n    });\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/other/pageguide/less/pageguide.less",
    "content": "/* Variables\n================================================== */\n\n    @pg-highlight-color: #f70077;\n\n/* Mixins\n================================================== */\n\n    .pg-rounded-corners (@radius: 5px) {\n        -webkit-border-radius: @radius;\n        -moz-border-radius: @radius;\n        -o-border-radius: @radius;\n        border-radius: @radius;\n    }\n\n    .pg-transition-animation (@prop: all, @time: 1s, @ease: linear) {\n        -webkit-transition: @prop @time @ease;\n        -moz-transition: @prop @time @ease;\n        -o-transition: @prop @time @ease;\n        -ms-transition: @prop @time @ease;\n        transition: @prop @time @ease;\n    }\n\n    .pg-icon-replacement (@imgtouse: \"pageguide.png\", @height: 20px, @width: 20px, @bgposition: 0 0) {\n        background: transparent url(@imgtouse) @bgposition no-repeat;\n        display: block;\n        height: @height;\n        overflow: hidden;\n        text-indent: -999px;\n        width: @width;\n    }\n\n    .pg-box-shadow (@x: 0, @y: 0, @blur: 5px, @spread: 0, @color: rgba(0, 0, 0, 0.5)) {\n        -webkit-box-shadow: @arguments;\n        -moz-box-shadow: @arguments;\n        -o-box-shadow: @arguments;\n        box-shadow: @arguments;\n    }\n\n    .pg-opacity(@op:100) {\n        filter:alpha(opacity=@op);\n        -moz-opacity:@op/100;\n        -khtml-opacity:@op/100;\n        opacity:@op/100;\n    }\n\n    .pg-transform (@rotate: 0deg, @scale: 1, @skewX: 0deg, @skewY: 0deg, @translate: 0px) {\n        -webkit-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -moz-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -o-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        -ms-transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n        transform: rotate(@rotate) scale(@scale) skewX(@skewX) skewY(@skewY) translate(@translate);\n    }\n\n    .pg-border-box (){\n        -moz-box-sizing: border-box;\n        -webkit-box-sizing: border-box;\n        box-sizing: border-box;\n    }\n\n/* Page Guide\n================================================== */\n    #tlyPageGuideWrapper {\n        .pg-border-box;\n        color: #000;\n        font-size:12px;\n        font-family: Helvetica, Arial, sans serif;\n\n        .tlypageguide_toggle {\n            .pg-border-box;\n            background: rgba(0, 0, 0, 0.1);\n            .pg-rounded-corners(3px 0 0 3px);\n            clear: both;\n            color: #000000;\n            cursor: pointer;\n            display: block;\n            float: right;\n            font-size: 11px;\n            height: 50px;\n            line-height: 25px;\n            padding: 22px 6px 6px;\n            position: fixed;\n            right: -190px;\n            text-align: left;\n            text-decoration: none;\n            top: 84px;\n            width: 184px;\n            .pg-transition-animation(all, 0.2s, ease-in);\n\n            &:before {\n                .pg-icon-replacement(\"/img/tlyguide/tlyguide_icon.png\", 16px, 16px, 0 0);\n                content: \" \";\n                left: 25px;\n                position: absolute;\n                top: 8px;\n            }\n\n            div {\n                .pg-border-box;\n                border-left: 1px solid #fff;\n                display: block;\n                height: 33px;\n                line-height: 16px;\n                overflow: hidden;\n                padding: 2px 0 0 5px;\n                position: absolute;\n                right: -4px;\n                top: 6px;\n                width: 124px;\n\n                span {\n                    display: block;\n                    margin: 0 0 0 -118px;\n                    width: 115px;\n                    .pg-transition-animation(all, 0.2s, ease-in);\n                }\n            }\n\n            a {\n                bottom: -26px;\n                color: #000;\n                opacity: 0;\n                position: absolute;\n                right: 10px;\n                text-decoration: none;\n            }\n\n            &:hover {\n                background: rgba(0, 0, 0, 0.2);\n                right: 0 !important;\n\n                div span {\n                    margin: 0;\n                }\n            }\n        }\n\n        #tlyPageGuide {\n            list-style: none;\n            margin: 0 0 0 0;\n            padding: 0 0 0 0;\n\n            li {\n                background: fade(@pg-highlight-color, 30%);\n                .pg-box-shadow(0, 2px, 10px, 1px, rgba(0, 0, 0, 0.4));\n                .pg-transition-animation(~\"min-height, max-height\", 0.1s, ease-in-out);\n                .pg-opacity(0);\n                cursor: pointer;\n                display: block;\n                height: 46px;\n                line-height: 50px;\n                min-height: 0px;\n                max-height: 0px;\n                position: absolute;\n                text-align: center;\n                width: 50px;\n                z-index: 5000;\n\n                &.expanded {\n                    .pg-opacity(100);\n                    height:46px;\n                    min-height: 15px;\n                    max-height: 46px;\n\n                    &:after {\n                        display: block;\n                    }\n                }\n\n\n                ins {\n                    background: none;\n                    color: #fff;\n                    display: block;\n                    font-size: 32px;\n                    overflow: hidden;\n                    text-decoration: none;\n                    width: 50px;\n                }\n\n                div {\n                    display: none;\n                }\n\n                &:after {\n                    content: \" \";\n                    display: none;\n                    height: 0;\n                    left: 0;\n                    position: absolute;\n                    top: -15px;\n                    width: 0;\n                    border-top: none;\n                    border-right: none;\n                    border-bottom: none;\n                    border-left: none;\n                    top: auto;\n                    left: auto;\n                    right: auto;\n                }\n\n                &.tlypageguide-active {\n                    background: fade(@pg-highlight-color, 95%);\n\n                    &.tlypageguide_bottom:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 95%);\n                    }\n\n                    &.tlypageguide_right,\n                    &.tlypageguide_left,\n                    &.tlypageguide_top {\n                        &:after {\n                            border-top: 15px solid fade(@pg-highlight-color, 95%);\n                        }\n                    }\n                }\n\n                &.tlypageguide_bottom {\n                    &:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        left: 0;\n                        top: -15px;\n                    }\n                    &:hover { margin-top: -5px; }\n                }\n\n                &.tlypageguide_right {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-left: 15px solid transparent;\n                        left: -15px;\n                        top: 0;\n                    }\n                    &:hover { margin-left: -5px; }\n                }\n\n                &.tlypageguide_left {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        right: -15px;\n                        top: 0;\n                    }\n                    &:hover { margin-left: 5px; }\n                }\n\n                &.tlypageguide_top {\n                    &:after {\n                        border-top: 15px solid fade(@pg-highlight-color, 30%);\n                        border-right: 15px solid transparent;\n                        bottom: -15px;\n                        left: 0;\n                    }\n                    &:hover { margin-top: 5px; }\n                }\n\n                &:hover {\n                    background: fade(@pg-highlight-color, 95%);\n\n                    &.tlypageguide_bottom:after {\n                        border-bottom: 15px solid fade(@pg-highlight-color, 95%);\n                    }\n\n                    &.tlypageguide_right,\n                    &.tlypageguide_left,\n                    &.tlypageguide_top {\n                        &:after {\n                            border-top: 15px solid fade(@pg-highlight-color, 95%);\n                        }\n                    }\n                }\n            }\n        }\n\n        #tlyPageGuideMessages {\n            .pg-rounded-corners(3px 3px 0 0);\n            background: rgba(0, 0, 0, 0.85);\n            .pg-box-shadow(0, 0, 9px, 4px, rgba(0, 0, 0, 0.4));\n            bottom: 0;\n            display: none;\n            font-size: 16px;\n            height: 0;\n            margin: 0 5% 0 5%;\n            padding: 10px;\n            position: fixed;\n            width: 90%;\n            z-index: 1000;\n\n            span {\n                background: fade(@pg-highlight-color, 95%);\n                .pg-rounded-corners(3px);\n                color: #fff;\n                display: block;\n                font-size: 32px;\n                height: 46px;\n                left: 40px;\n                line-height: 50px;\n                overflow: hidden;\n                position: absolute;\n                text-align: center;\n                top: 25px;\n                width: 50px;\n            }\n\n            div {\n                color: #fff;\n                line-height: 22px;\n                margin: 10px 90px 0 120px;\n                position: relative;\n\n                a {\n                    color: #fff;\n\n                    &:hover {\n                        color: #fff;\n                    }\n                }\n            }\n\n            .tlypageguide_close {\n                background: @pg-highlight-color;\n                .pg-rounded-corners(0 0 3px 3px);\n                color: #fff;\n                display: block;\n                font-size: 11px;\n                height: 24px;\n                line-height: 26px;\n                overflow: hidden;\n                position: absolute;\n                right: 50px;\n                text-align: center;\n                text-decoration: none;\n                top: 0;\n                width: 50px;\n            }\n\n            .tlypageguide_back,\n            .tlypageguide_fwd {\n                .pg-icon-replacement (\"/img/tlyguide/tlyguide_arrow.png\", 30px, 30px, 10px 4px);\n                position: absolute;\n                top: 34px;\n                left: 10px;\n            }\n\n            .tlypageguide_back {\n                .pg-transform(-180deg, 1, 0, 0, 0);\n            }\n\n            .tlypageguide_fwd {\n                left: 90px;\n            }\n        }\n    }\n\n    .tlypageguide_shadow {\n        position: relative;\n\n        &:after {\n            background-color: fade(@pg-highlight-color, 10%);\n            .pg-box-shadow(0, 0, 1px, 1px, rgba(147, 0, 119, 0.25));\n            content: \" \";\n            display: none;\n            position: absolute;\n            top: 0;\n            left: 0;\n        }\n    }\n\n    .tlypageguide-open {\n\n        #tlyPageGuideWrapper {\n\n            .tlypageguide_toggle {\n                .pg-box-shadow(6px, 4px, 5px, 0, rgba(0, 0, 0, 0.4));\n                background: fade(@pg-highlight-color, 90%);\n                color: #fff;\n                right: 0 !important;\n\n                a {\n                    opacity: 1.0;\n                }\n\n                div span {\n                    margin: 0;\n                }\n            }\n        }\n\n        .tlypageguide_shadow:after {\n            display: block;\n        }\n    }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/smoothness/jquery-ui-1.9.2.custom.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-12\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }\n.ui-widget-content a { color: #222222; }\n.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }\n.ui-widget-header a { color: #222222; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }\n.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/AUTHORS.txt",
    "content": "Authors ordered by first contribution\nA list of current team members is available at http://jqueryui.com/about\n\nPaul Bakaus <paul.bakaus@googlemail.com>\nRichard Worth <rdworth@gmail.com>\nYehuda Katz <wycats@gmail.com>\nSean Catchpole <sean@sunsean.com>\nJohn Resig <jeresig@gmail.com>\nTane Piper <piper.tane@gmail.com>\nDmitri Gaskin <dmitrig01@gmail.com>\nKlaus Hartl <klaus.hartl@googlemail.com>\nStefan Petre <stefan.petre@gmail.com>\nGilles van den Hoven <gilles@webunity.nl>\nMicheil Bryan Smith <micheil@brandedcode.com>\nJörn Zaefferer <joern.zaefferer@gmail.com>\nMarc Grabanski <m@marcgrabanski.com>\nKeith Wood <kbwood.au@gmail.com>\nBrandon Aaron <brandon.aaron@gmail.com>\nScott González <scott.gonzalez@gmail.com>\nEduardo Lundgren <eduardolundgren@gmail.com>\nAaron Eisenberger <aaronchi@gmail.com>\nJoan Piedra <theneojp@gmail.com>\nBruno Basto <b.basto@gmail.com>\nRemy Sharp <remy@leftlogic.com>\nBohdan Ganicky <bohdan.ganicky@gmail.com>\nDavid Bolter <david.bolter@gmail.com>\nChi Cheng <cloudream@gmail.com>\nCa-Phun Ung <pazu2k@gmail.com>\nAriel Flesler <aflesler@gmail.com>\nMaggie Costello Wachs <fg.maggie@gmail.com>\nScott Jehl <scott@scottjehl.com>\nTodd Parker <fg.todd@gmail.com>\nAndrew Powell <powella@gmail.com>\nBrant Burnett <btburnett3@gmail.com>\nDouglas Neiner <doug@pixelgraphics.us>\nPaul Irish <paul.irish@gmail.com>\nRalph Whitbeck <ralph.whitbeck@gmail.com>\nThibault Duplessis <thibault.duplessis@gmail.com>\nDominique Vincent <dominique.vincent@toitl.com>\nJack Hsu <jack.hsu@gmail.com>\nAdam Sontag <ajpiano@ajpiano.com>\nCarl Fürstenberg <carl@excito.com>\nKevin Dalman <development@allpro.net>\nAlberto Fernández Capel <afcapel@gmail.com>\nJacek Jędrzejewski (http://jacek.jedrzejewski.name)\nTing Kuei <ting@kuei.com>\nSamuel Cormier-Iijima <sam@chide.it>\nJon Palmer <jonspalmer@gmail.com>\nBen Hollis <bhollis@amazon.com>\nJustin MacCarthy <Justin@Rubystars.biz>\nEyal Kobrigo <kobrigo@hotmail.com>\nTiago Freire <tiago.freire@gmail.com>\nDiego Tres <diegotres@gmail.com>\nHolger Rüprich <holger@rueprich.de>\nZiling Zhao <zizhao@cisco.com>\nMike Alsup <malsup@gmail.com>\nRobson Braga Araujo <robsonbraga@gmail.com>\nPierre-Henri Ausseil <ph.ausseil@gmail.com>\nChristopher McCulloh <cmcculloh@gmail.com>\nAndrew Newcomb <ext.github@preceptsoftware.co.uk>\nLim Chee Aun <cheeaun@gmail.com>\nJorge Barreiro <yortx.barry@gmail.com>\nDaniel Steigerwald <daniel@steigerwald.cz>\nJohn Firebaugh <john_firebaugh@bigfix.com>\nJohn Enters <github@darkdark.net>\nAndrey Kapitcyn <ru.m157y@gmail.com>\nDmitry Petrov <dpetroff@gmail.com>\nEric Hynds <eric@hynds.net>\nChairat Sunthornwiphat <pipo@sixhead.com>\nJosh Varner <josh.varner@gmail.com>\nStéphane Raimbault <stephane.raimbault@gmail.com>\nJay Merrifield <fracmak@gmail.com>\nJ. Ryan Stinnett <jryans@gmail.com>\nPeter Heiberg <peter@heiberg.se>\nAlex Dovenmuehle <adovenmuehle@gmail.com>\nJamie Gegerson <git@jamiegegerson.com>\nRaymond Schwartz <skeetergraphics@gmail.com>\nPhillip Barnes <philbar@gmail.com>\nKyle Wilkinson <kai@wikyd.org>\nKhaled AlHourani <me@khaledalhourani.com>\nMarian Rudzynski <mr@impaled.org>\nJean-Francois Remy <jfremy@virtuoz.com>\nDoug Blood <dougblood@gmail.com>\nFilippo Cavallarin <filippo.cavallarin@codseq.it>\nHeiko Henning <h.henning@educa.ch>\nAliaksandr Rahalevich <saksmlz@gmail.com>\nMario Visic <mario@mariovisic.com>\nXavi Ramirez <xavi.rmz@gmail.com>\nMax Schnur <max.schnur@gmail.com>\nSaji Nediyanchath <saji89@gmail.com>\nCorey Frang <gnarf@gnarf.net>\nAaron Peterson <aaronp123@yahoo.com>\nIvan Peters <ivan@ivanpeters.com>\nMohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>\nMarcos Sousa <falecomigo@marcossousa.com>\nMichael DellaNoce <mdellanoce@mailtrust.com>\nGeorge Marshall <echosx@gmail.com>\nTobias Brunner <tobias@strongswan.org>\nMartin Solli <msolli@gmail.com>\nDavid Petersen <public@petersendidit.com>\nDan Heberden <danheberden@gmail.com>\nWilliam Kevin Manire <williamkmanire@gmail.com>\nGilmore Davidson <gilmoreorless@gmail.com>\nMichael Wu <michaelmwu@gmail.com>\nAdam Parod <mystic414@gmail.com>\nGuillaume Gautreau <guillaume+github@ghusse.com>\nMarcel Toele <EleotleCram@gmail.com>\nDan Streetman <ddstreet@ieee.org>\nMatt Hoskins <furlined@cat-basket.org>\nGiovanni Giacobbi <giovanni@giacobbi.net>\nKyle Florence <kyle.florence@gmail.com>\nPavol Hluchý <lopo@losys.sk>\nHans Hillen <hans.hillen@gmail.com>\nMark Johnson <virgofx@live.com>\nTrey Hunner <treyhunner@gmail.com>\nShane Whittet <whittet@gmail.com>\nEdward A Faulkner <ef@alum.mit.edu>\nAdam Baratz <adam@adambaratz.com>\nKato Kazuyoshi <kato.kazuyoshi@gmail.com>\nEike Send <eike.send@gmail.com>\nKris Borchers <kris.borchers@gmail.com>\nEddie Monge <eddie@eddiemonge.com>\nIsrael Tsadok <itsadok@gmail.com>\nCarson McDonald <carson@ioncannon.net>\nJason Davies <jason@jasondavies.com>\nGarrison Locke <gplocke@gmail.com>\nDavid Murdoch <musicisair@yahoo.com>\nBenjamin Scott Boyle <benjamins.boyle@gmail.com>\nJesse Baird <jebaird@gmail.com>\nJonathan Vingiano <jvingiano@gmail.com>\nDylan Just <dev@ephox.com>\nHiroshi Tomita <tomykaira@gmail.com>\nGlenn Goodrich <glenn.goodrich@gmail.com>\nTarafder Ashek-E-Elahi <mail.ashek@gmail.com>\nRyan Neufeld <ryan@neufeldmail.com>\nMarc Neuwirth <marc.neuwirth@gmail.com>\nPhilip Graham <philip.robert.graham@gmail.com>\nBenjamin Sterling <benjamin.sterling@kenzomedia.com>\nWesley Walser <waw325@gmail.com>\nKouhei Sutou <kou@clear-code.com>\nKarl Kirch <karlkrch@gmail.com>\nChris Kelly <ckdake@ckdake.com>\nJay Oster <jay@loyalize.com>\nAlexander Polomoshnov <alex.polomoshnov@gmail.com>\nDavid Leal <dgleal@gmail.com>\nIgor Milla <igor.fsp.milla@gmail.com>\nDave Methvin <dave.methvin@gmail.com>\nFlorian Gutmann <f.gutmann@chronimo.com>\nMarwan Al Jubeh <marwan.aljubeh@gmail.com>\nMilan Broum <midlis@googlemail.com>\nSebastian Sauer <info@dynpages.de>\nGaëtan Muller <m.gaetan89@gmail.com>\nMichel Weimerskirch <michel@weimerskirch.net>\nWilliam Griffiths <william@ycymro.com>\nStojce Slavkovski <stojce@gmail.com>\nDavid Soms <david.soms@gmail.com>\nDavid De Sloovere <david.desloovere@hotmail.com>\nMichael P. Jung <michael.jung@terreon.de>\nShannon Pekary <spekary@gmail.com>\nMatthew Edward Hutton <meh@corefiling.co.uk>\nJames Khoury <james@jameskhoury.com>\nRob Loach <robloach@gmail.com>\nAlberto Monteiro <betimbrasil@gmail.com>\nAlex Rhea <alex.rhea@gmail.com>\nKrzysztof Rosiński <rozwell69@gmail.com>\nRyan Olton <oltonr@gmail.com>\nGenie <386@mail.com>\nRick Waldron <waldron.rick@gmail.com>\nIan Simpson <spoonlikesham@gmail.com>\nLev Kitsis <spam4lev@gmail.com>\nTed VanToll <tj.vantoll@gmail.com>\nJustin Domnitz <jdomnitz@gmail.com>\nDouglas Cerna <douglascerna@yahoo.com>\nBert ter Heide <bertjh@hotmail.com>\nJasvir Nagra <jasvir@gmail.com>\nPetr Hromadko <yuriy@tokyoscale.com>\nHarri Kilpiö <harri.kilpio@gmail.com>\nLado Lomidze <lado.lomidze@gmail.com>\nAmir E. Aharoni <amir.aharoni@mail.huji.ac.il>\nSimon Sattes <simon.sattes@gmail.com>\nJo Liss <joliss42@gmail.com>\nGuntupalli Karunakar <karunakarg@yahoo.com>\nShahyar Ghobadpour <shahyar@gmail.com>\nLukasz Lipinski <uzza17@gmail.com>\nTimo Tijhof <krinklemail@gmail.com>\nJason Moon <jmoon@socialcast.com>\nMartin Frost <martinf55@hotmail.com>\nEneko Illarramendi <eneko@illarra.com>\nEungJun Yi <semtlenori@gmail.com>\nCourtland Allen <courtlandallen@gmail.com>\nViktar Varvanovich <non4eg@gmail.com>\nDanny Trunk <dtrunk90@gmail.com>\nPavel Stetina <pavel.stetina@nangu.tv>\nMichael Stay <metaweta@gmail.com>\nSteven Roussey <sroussey@gmail.com>\nMichael Hollis <hollis21@gmail.com>\nLee Rowlands <lee.rowlands@previousnext.com.au>\nTimmy Willison <timmywillisn@gmail.com>\nKarl Swedberg <kswedberg@gmail.com>\nBaoju Yuan <the_guy_1987@hotmail.com>\nMaciej Mroziński <mrozik87@gmail.com>\nLuis Dalmolin <luis.nh@gmail.com>\nMark Aaron Shirley <maspwr@gmail.com>\nMartin Hoch <martin@fidion.de>\nJiayi Yang <tr870829@gmail.com>\nPhilipp Benjamin Köppchen <xgxtpbk@gws.ms>\nSindre Sorhus <sindresorhus@gmail.com>\nBernhard Sirlinger <bernhard.sirlinger@tele2.de>\nJared A. Scheel <jared@jaredscheel.com>\nRafael Xavier de Souza <rxaviers@gmail.com>\nJohn Chen <zhang.z.chen@intel.com>\nDale Kocian <dale.kocian@gmail.com>\nMike Sherov <mike.sherov@gmail.com>\nAndrew Couch <andy@couchand.com>\nMarc-Andre Lafortune <github@marc-andre.ca>\nAvinash R <nashpapa@gmail.com>\nCory Gackenheimer <cory.gack@gmail.com>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/MIT-LICENSE.txt",
    "content": "Copyright 2012 jQuery Foundation and other contributors,\nhttp://jqueryui.com/\n\nThis software consists of voluntary contributions made by many\nindividuals (AUTHORS.txt, http://jqueryui.com/about) For exact\ncontribution history, see the revision history and logs, available\nat http://jquery-ui.googlecode.com/svn/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/README.md",
    "content": "[jQuery UI](http://jqueryui.com/) - Interactions and Widgets for the web\n================================\n\njQuery UI provides interactions like Drag and Drop and widgets like Autocomplete, Tabs and Slider and makes these as easy to use as jQuery itself.\n\nIf you want to use jQuery UI, go to [jqueryui.com](http://jqueryui.com) to get started. Or visit the [Using jQuery UI Forum](http://forum.jquery.com/using-jquery-ui) for discussions and questions.\n\nIf you are interested in helping develop jQuery UI, you are in the right place.\nTo discuss development with team members and the community, visit the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui) or in #jquery on irc.freednode.net.\n\n\nFor contributors\n---\n\nIf you want to help and provide a patch for a bugfix or new feature, please take\na few minutes and look at [our Getting Involved guide](http://wiki.jqueryui.com/w/page/35263114/Getting-Involved).\nIn particular check out the [Coding standards](http://wiki.jqueryui.com/w/page/12137737/Coding-standards)\nand [Commit Message Style Guide](http://wiki.jqueryui.com/w/page/25941597/Commit-Message-Style-Guide).\n\nIn general, fork the project, create a branch for a specific change and send a\npull request for that branch. Don't mix unrelated changes. You can use the commit\nmessage as the description for the pull request.\n\n\nRunning the Unit Tests\n---\n\nRun the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:\n\n- Windows: [WAMP download](http://www.wampserver.com/en/)\n- Mac: [MAMP download](http://www.mamp.info/en/index.html)\n- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)\n- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)\n\n\nBuilding jQuery UI\n---\n\njQuery UI uses the [grunt](http://github.com/cowboy/grunt) build system. Building jQuery UI requires node.js and a command line zip program.\n\nInstall grunt.\n\n`npm install grunt -g`\n\nClone the jQuery UI git repo.\n\n`git clone git://github.com/jquery/jquery-ui.git`\n\n`cd jquery-ui`\n\nInstall node modules.\n\n`npm install`\n\nRun grunt.\n\n`grunt build`\n\nThere are many other tasks that can be run through grunt. For a list of all tasks:\n\n`grunt --help`\n\n\nFor committers\n---\n\nWhen looking at pull requests, first check for [proper commit messages](http://wiki.jqueryui.com/w/page/12137724/Bug-Fixing-Guide).\n\nDo not merge pull requests directly through GitHub's interface.\nMost pull requests are a single commit; cherry-picking will avoid creating a merge commit.\nIt's also common for contributors to make minor fixes in an additional one or two commits.\nThese should be squashed before landing in master.\n\n**Make sure the author has a valid name and email address associated with the commit.**\n\nFetch the remote first:\n\n    git fetch [their-fork.git] [their-branch]\n\nThen cherry-pick the commit(s):\n\n\tgit cherry-pick [sha-of-commit]\n\nIf you need to edit the commit message:\n\n    git cherry-pick -e [sha-of-commit]\n\nIf you need to edit the changes:\n\n\tgit cherry-pick -n [sha-of-commit]\n\t# make changes\n\tgit commit --author=\"[author-name-and-email]\"\n\nIf it should go to the stable brach, cherry-pick it to stable:\n\n    git checkout 1-8-stable\n    git cherry-pick -x [sha-of-commit-from-master]\n\n*NOTE: Do not cherry-pick into 1-8-stable until you have pushed the commit from master upstream.*\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/collapsible.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Collapse content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\tcollapsible: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>By default, accordions always keep one section open. To allow for all sections to be be collapsible, set the <code>collapsible</code> option to true. Click on the currently open section to collapse its content pane.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/custom-icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Customize icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar icons = {\n\t\t\theader: \"ui-icon-circle-arrow-e\",\n\t\t\tactiveHeader: \"ui-icon-circle-arrow-s\"\n\t\t};\n\t\t$( \"#accordion\" ).accordion({\n\t\t\ticons: icons\n\t\t});\n\t\t$( \"#toggle\" ).button().click(function() {\n\t\t\tif ( $( \"#accordion\" ).accordion( \"option\", \"icons\" ) ) {\n\t\t\t\t$( \"#accordion\" ).accordion( \"option\", \"icons\", null );\n\t\t\t} else {\n\t\t\t\t$( \"#accordion\" ).accordion( \"option\", \"icons\", icons );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t</div>\n</div>\n\n<button id=\"toggle\">Toggle icons</button>\n\n<div class=\"demo-description\">\n<p>Customize the header icons with the <code>icons</code> option, which accepts classes for the header's default and active (open) state.  Use any class from the UI CSS framework, or create custom classes with background images.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>\n\t\tMauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer\n\t\tut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit\n\t\tamet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut\n\t\todio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.\n\t\t</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>\n\t\tSed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet\n\t\tpurus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor\n\t\tvelit, faucibus interdum tellus libero ac justo. Vivamus non quam. In\n\t\tsuscipit faucibus urna.\n\t\t</p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>\n\t\tNam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.\n\t\tPhasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero\n\t\tac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis\n\t\tlacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.\n\t\t</p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>\n\t\tCras dictum. Pellentesque habitant morbi tristique senectus et netus\n\t\tet malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in\n\t\tfaucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia\n\t\tmauris vel est.\n\t\t</p>\n\t\t<p>\n\t\tSuspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.\n\t\tClass aptent taciti sociosqu ad litora torquent per conubia nostra, per\n\t\tinceptos himenaeos.\n\t\t</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>\nClick headers to expand/collapse content that is broken into logical sections, much like tabs.\nOptionally, toggle sections open/closed on mouseover.\n</p>\n<p>\nThe underlying HTML markup is a series of headers (H3 tags) and content divs so the content is\nusable without JavaScript.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/fillspace.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Fill space</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#accordion-resizer {\n\t\tpadding: 10px;\n\t\twidth: 350px;\n\t\theight: 220px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\theightStyle: \"fill\"\n\t\t});\n\t});\n\t$(function() {\n\t\t$( \"#accordion-resizer\" ).resizable({\n\t\t\tminHeight: 140,\n\t\t\tminWidth: 200,\n\t\t\tresize: function() {\n\t\t\t\t$( \"#accordion\" ).accordion( \"refresh\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Resize the outer container:</h3>\n\n<div id=\"accordion-resizer\" class=\"ui-widget-content\">\n\t<div id=\"accordion\">\n\t\t<h3>Section 1</h3>\n\t\t<div>\n\t\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t\t</div>\n\t\t<h3>Section 2</h3>\n\t\t<div>\n\t\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t\t</div>\n\t\t<h3>Section 3</h3>\n\t\t<div>\n\t\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t\t<ul>\n\t\t\t\t<li>List item one</li>\n\t\t\t\t<li>List item two</li>\n\t\t\t\t<li>List item three</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h3>Section 4</h3>\n\t\t<div>\n\t\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Because the accordion is comprised of block-level elements, by default its width fills the available horizontal space. To fill the vertical space allocated by its container, set the <code>heightStyle</code> option to <code>\"fill\"</code>, and the script will automatically set the dimensions of the accordion to the height of its parent container.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/hoverintent.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Open on hoverintent</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\tevent: \"click hoverintent\"\n\t\t});\n\t});\n\n\tvar cfg = ($.hoverintent = {\n\t\tsensitivity: 7,\n\t\tinterval: 100\n\t});\n\n\t$.event.special.hoverintent = {\n\t\tsetup: function() {\n\t\t\t$( this ).bind( \"mouseover\", jQuery.event.special.hoverintent.handler );\n\t\t},\n\t\tteardown: function() {\n\t\t\t$( this ).unbind( \"mouseover\", jQuery.event.special.hoverintent.handler );\n\t\t},\n\t\thandler: function( event ) {\n\t\t\tvar that = this,\n\t\t\t\targs = arguments,\n\t\t\t\ttarget = $( event.target ),\n\t\t\t\tcX, cY, pX, pY;\n\n\t\t\tfunction track( event ) {\n\t\t\t\tcX = event.pageX;\n\t\t\t\tcY = event.pageY;\n\t\t\t};\n\t\t\tpX = event.pageX;\n\t\t\tpY = event.pageY;\n\t\t\tfunction clear() {\n\t\t\t\ttarget\n\t\t\t\t\t.unbind( \"mousemove\", track )\n\t\t\t\t\t.unbind( \"mouseout\", arguments.callee );\n\t\t\t\tclearTimeout( timeout );\n\t\t\t}\n\t\t\tfunction handler() {\n\t\t\t\tif ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.sensitivity ) {\n\t\t\t\t\tclear();\n\t\t\t\t\tevent.type = \"hoverintent\";\n\t\t\t\t\t// prevent accessing the original event since the new event\n\t\t\t\t\t// is fired asynchronously and the old event is no longer\n\t\t\t\t\t// usable (#6028)\n\t\t\t\t\tevent.originalEvent = {};\n\t\t\t\t\tjQuery.event.handle.apply( that, args );\n\t\t\t\t} else {\n\t\t\t\t\tpX = cX;\n\t\t\t\t\tpY = cY;\n\t\t\t\t\ttimeout = setTimeout( handler, cfg.interval );\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar timeout = setTimeout( handler, cfg.interval );\n\t\t\ttarget.mousemove( track ).mouseout( clear );\n\t\t\treturn true;\n\t\t}\n\t};\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>\n\t\tMauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer\n\t\tut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit\n\t\tamet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut\n\t\todio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.\n\t\t</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>\n\t\tSed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet\n\t\tpurus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor\n\t\tvelit, faucibus interdum tellus libero ac justo. Vivamus non quam. In\n\t\tsuscipit faucibus urna.\n\t\t</p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>\n\t\tNam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.\n\t\tPhasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero\n\t\tac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis\n\t\tlacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.\n\t\t</p>\n\t\t<ul>\n\t\t\t<li>List item one</li>\n\t\t\t<li>List item two</li>\n\t\t\t<li>List item three</li>\n\t\t</ul>\n\t</div>\n\t<h3>Section 4</h3>\n\t<div>\n\t\t<p>\n\t\tCras dictum. Pellentesque habitant morbi tristique senectus et netus\n\t\tet malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in\n\t\tfaucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia\n\t\tmauris vel est.\n\t\t</p>\n\t\t<p>\n\t\tSuspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.\n\t\tClass aptent taciti sociosqu ad litora torquent per conubia nostra, per\n\t\tinceptos himenaeos.\n\t\t</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>\nClick headers to expand/collapse content that is broken into logical sections, much like tabs.\nOptionally, toggle sections open/closed on mouseover.\n</p>\n<p>\nThe underlying HTML markup is a series of headers (H3 tags) and content divs so the content is\nusable without JavaScript.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"fillspace.html\">Fill space</a></li>\n\t<li><a href=\"no-auto-height.html\">No auto height</a></li>\n\t<li><a href=\"collapsible.html\">Collapse content</a></li>\n\t<li><a href=\"hoverintent.html\">Open on hoverintent</a></li>\n\t<li><a href=\"custom-icons.html\">Customize icons</a></li>\n\t<li><a href=\"sortable.html\">Sortable</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/no-auto-height.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - No auto height</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" ).accordion({\n\t\t\theightStyle: \"content\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<h3>Section 1</h3>\n\t<div>\n\t\t<p>Mauris mauris ante, blandit et, ultrices a, susceros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t</div>\n\t<h3>Section 2</h3>\n\t<div>\n\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t</div>\n\t<h3>Section 3</h3>\n\t<div>\n\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t<ul>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t\t<li>List item</li>\n\t\t</ul>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Setting <code>heightStyle: \"content\"</code> allows the accordion panels to keep their native height.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/accordion/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Accordion - Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t/* IE has layout issues when sorting (see #5413) */\n\t.group { zoom: 1 }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#accordion\" )\n\t\t\t.accordion({\n\t\t\t\theader: \"> div > h3\"\n\t\t\t})\n\t\t\t.sortable({\n\t\t\t\taxis: \"y\",\n\t\t\t\thandle: \"h3\",\n\t\t\t\tstop: function( event, ui ) {\n\t\t\t\t\t// IE doesn't register the blur when sorting\n\t\t\t\t\t// so trigger focusout handlers to remove .ui-state-focus\n\t\t\t\t\tui.item.children( \"h3\" ).triggerHandler( \"focusout\" );\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"accordion\">\n\t<div class=\"group\">\n\t\t<h3>Section 1</h3>\n\t\t<div>\n\t\t\t<p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.</p>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 2</h3>\n\t\t<div>\n\t\t\t<p>Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. </p>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 3</h3>\n\t\t<div>\n\t\t\t<p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. </p>\n\t\t\t<ul>\n\t\t\t\t<li>List item one</li>\n\t\t\t\t<li>List item two</li>\n\t\t\t\t<li>List item three</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n\t<div class=\"group\">\n\t\t<h3>Section 4</h3>\n\t\t<div>\n\t\t\t<p>Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. </p><p>Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Drag the header to re-order panels.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/categories.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Categories</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-category {\n\t\tfont-weight: bold;\n\t\tpadding: .2em .4em;\n\t\tmargin: .8em 0 .2em;\n\t\tline-height: 1.5;\n\t}\n\t</style>\n\t<script>\n\t$.widget( \"custom.catcomplete\", $.ui.autocomplete, {\n\t\t_renderMenu: function( ul, items ) {\n\t\t\tvar that = this,\n\t\t\t\tcurrentCategory = \"\";\n\t\t\t$.each( items, function( index, item ) {\n\t\t\t\tif ( item.category != currentCategory ) {\n\t\t\t\t\tul.append( \"<li class='ui-autocomplete-category'>\" + item.category + \"</li>\" );\n\t\t\t\t\tcurrentCategory = item.category;\n\t\t\t\t}\n\t\t\t\tthat._renderItemData( ul, item );\n\t\t\t});\n\t\t}\n\t});\n\t</script>\n\t<script>\n\t$(function() {\n\t\tvar data = [\n\t\t\t{ label: \"anders\", category: \"\" },\n\t\t\t{ label: \"andreas\", category: \"\" },\n\t\t\t{ label: \"antal\", category: \"\" },\n\t\t\t{ label: \"annhhx10\", category: \"Products\" },\n\t\t\t{ label: \"annk K12\", category: \"Products\" },\n\t\t\t{ label: \"annttop C13\", category: \"Products\" },\n\t\t\t{ label: \"anders andersson\", category: \"People\" },\n\t\t\t{ label: \"andreas andersson\", category: \"People\" },\n\t\t\t{ label: \"andreas johnson\", category: \"People\" }\n\t\t];\n\n\t\t$( \"#search\" ).catcomplete({\n\t\t\tdelay: 0,\n\t\t\tsource: data\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<label for=\"search\">Search: </label>\n<input id=\"search\">\n\n<div class=\"demo-description\">\n<p>A categorized search result. Try typing \"a\" or \"n\".</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/combobox.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Combobox</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-combobox {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\t.ui-combobox-toggle {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tmargin-left: -1px;\n\t\tpadding: 0;\n\t\t/* adjust styles for IE 6/7 */\n\t\t*height: 1.7em;\n\t\t*top: 0.1em;\n\t}\n\t.ui-combobox-input {\n\t\tmargin: 0;\n\t\tpadding: 0.3em;\n\t}\n\t</style>\n\t<script>\n\t(function( $ ) {\n\t\t$.widget( \"ui.combobox\", {\n\t\t\t_create: function() {\n\t\t\t\tvar input,\n\t\t\t\t\tthat = this,\n\t\t\t\t\tselect = this.element.hide(),\n\t\t\t\t\tselected = select.children( \":selected\" ),\n\t\t\t\t\tvalue = selected.val() ? selected.text() : \"\",\n\t\t\t\t\twrapper = this.wrapper = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-combobox\" )\n\t\t\t\t\t\t.insertAfter( select );\n\n\t\t\t\tfunction removeIfInvalid(element) {\n\t\t\t\t\tvar value = $( element ).val(),\n\t\t\t\t\t\tmatcher = new RegExp( \"^\" + $.ui.autocomplete.escapeRegex( value ) + \"$\", \"i\" ),\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\tselect.children( \"option\" ).each(function() {\n\t\t\t\t\t\tif ( $( this ).text().match( matcher ) ) {\n\t\t\t\t\t\t\tthis.selected = valid = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif ( !valid ) {\n\t\t\t\t\t\t// remove invalid value, as it didn't match anything\n\t\t\t\t\t\t$( element )\n\t\t\t\t\t\t\t.val( \"\" )\n\t\t\t\t\t\t\t.attr( \"title\", value + \" didn't match any item\" )\n\t\t\t\t\t\t\t.tooltip( \"open\" );\n\t\t\t\t\t\tselect.val( \"\" );\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tinput.tooltip( \"close\" ).attr( \"title\", \"\" );\n\t\t\t\t\t\t}, 2500 );\n\t\t\t\t\t\tinput.data( \"autocomplete\" ).term = \"\";\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinput = $( \"<input>\" )\n\t\t\t\t\t.appendTo( wrapper )\n\t\t\t\t\t.val( value )\n\t\t\t\t\t.attr( \"title\", \"\" )\n\t\t\t\t\t.addClass( \"ui-state-default ui-combobox-input\" )\n\t\t\t\t\t.autocomplete({\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t\tminLength: 0,\n\t\t\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), \"i\" );\n\t\t\t\t\t\t\tresponse( select.children( \"option\" ).map(function() {\n\t\t\t\t\t\t\t\tvar text = $( this ).text();\n\t\t\t\t\t\t\t\tif ( this.value && ( !request.term || matcher.test(text) ) )\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: text.replace(\n\t\t\t\t\t\t\t\t\t\t\tnew RegExp(\n\t\t\t\t\t\t\t\t\t\t\t\t\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\t\t\t\t\t\t\t\t\t\t\t$.ui.autocomplete.escapeRegex(request.term) +\n\t\t\t\t\t\t\t\t\t\t\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\"\n\t\t\t\t\t\t\t\t\t\t\t), \"<strong>$1</strong>\" ),\n\t\t\t\t\t\t\t\t\t\tvalue: text,\n\t\t\t\t\t\t\t\t\t\toption: this\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}) );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\t\tui.item.option.selected = true;\n\t\t\t\t\t\t\tthat._trigger( \"selected\", event, {\n\t\t\t\t\t\t\t\titem: ui.item.option\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchange: function( event, ui ) {\n\t\t\t\t\t\t\tif ( !ui.item )\n\t\t\t\t\t\t\t\treturn removeIfInvalid( this );\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.addClass( \"ui-widget ui-widget-content ui-corner-left\" );\n\n\t\t\t\tinput.data( \"autocomplete\" )._renderItem = function( ul, item ) {\n\t\t\t\t\treturn $( \"<li>\" )\n\t\t\t\t\t\t.data( \"item.autocomplete\", item )\n\t\t\t\t\t\t.append( \"<a>\" + item.label + \"</a>\" )\n\t\t\t\t\t\t.appendTo( ul );\n\t\t\t\t};\n\n\t\t\t\t$( \"<a>\" )\n\t\t\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t\t\t.attr( \"title\", \"Show All Items\" )\n\t\t\t\t\t.tooltip()\n\t\t\t\t\t.appendTo( wrapper )\n\t\t\t\t\t.button({\n\t\t\t\t\t\ticons: {\n\t\t\t\t\t\t\tprimary: \"ui-icon-triangle-1-s\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttext: false\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t\t.addClass( \"ui-corner-right ui-combobox-toggle\" )\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t// close if already visible\n\t\t\t\t\t\tif ( input.autocomplete( \"widget\" ).is( \":visible\" ) ) {\n\t\t\t\t\t\t\tinput.autocomplete( \"close\" );\n\t\t\t\t\t\t\tremoveIfInvalid( input );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// work around a bug (likely same cause as #5265)\n\t\t\t\t\t\t$( this ).blur();\n\n\t\t\t\t\t\t// pass empty string as value to search for, displaying all results\n\t\t\t\t\t\tinput.autocomplete( \"search\", \"\" );\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t});\n\n\t\t\t\t\tinput\n\t\t\t\t\t\t.tooltip({\n\t\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t\tof: this.button\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttooltipClass: \"ui-state-highlight\"\n\t\t\t\t\t\t});\n\t\t\t},\n\n\t\t\tdestroy: function() {\n\t\t\t\tthis.wrapper.remove();\n\t\t\t\tthis.element.show();\n\t\t\t\t$.Widget.prototype.destroy.call( this );\n\t\t\t}\n\t\t});\n\t})( jQuery );\n\n\t$(function() {\n\t\t$( \"#combobox\" ).combobox();\n\t\t$( \"#toggle\" ).click(function() {\n\t\t\t$( \"#combobox\" ).toggle();\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label>Your preferred programming language: </label>\n\t<select id=\"combobox\">\n\t\t<option value=\"\">Select one...</option>\n\t\t<option value=\"ActionScript\">ActionScript</option>\n\t\t<option value=\"AppleScript\">AppleScript</option>\n\t\t<option value=\"Asp\">Asp</option>\n\t\t<option value=\"BASIC\">BASIC</option>\n\t\t<option value=\"C\">C</option>\n\t\t<option value=\"C++\">C++</option>\n\t\t<option value=\"Clojure\">Clojure</option>\n\t\t<option value=\"COBOL\">COBOL</option>\n\t\t<option value=\"ColdFusion\">ColdFusion</option>\n\t\t<option value=\"Erlang\">Erlang</option>\n\t\t<option value=\"Fortran\">Fortran</option>\n\t\t<option value=\"Groovy\">Groovy</option>\n\t\t<option value=\"Haskell\">Haskell</option>\n\t\t<option value=\"Java\">Java</option>\n\t\t<option value=\"JavaScript\">JavaScript</option>\n\t\t<option value=\"Lisp\">Lisp</option>\n\t\t<option value=\"Perl\">Perl</option>\n\t\t<option value=\"PHP\">PHP</option>\n\t\t<option value=\"Python\">Python</option>\n\t\t<option value=\"Ruby\">Ruby</option>\n\t\t<option value=\"Scala\">Scala</option>\n\t\t<option value=\"Scheme\">Scheme</option>\n\t</select>\n</div>\n<button id=\"toggle\">Show underlying select</button>\n\n<div class=\"demo-description\">\n<p>A custom widget built by composition of Autocomplete and Button. You can either type something into the field to get filtered suggestions based on your input, or use the button to get the full list of selections.</p>\n<p>The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.</p>\n<p>This is not a supported or even complete widget. Its purely for demoing what autocomplete can do with a bit of customization. <a href=\"http://www.learningjquery.com/2010/06/a-jquery-ui-combobox-under-the-hood\">For a detailed explanation of how the widget works, check out this Learning jQuery article.</a></p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/custom-data.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Custom data and display</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#project-label {\n\t\tdisplay: block;\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1em;\n\t}\n\t#project-icon {\n\t\tfloat: left;\n\t\theight: 32px;\n\t\twidth: 32px;\n\t}\n\t#project-description {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar projects = [\n\t\t\t{\n\t\t\t\tvalue: \"jquery\",\n\t\t\t\tlabel: \"jQuery\",\n\t\t\t\tdesc: \"the write less, do more, JavaScript library\",\n\t\t\t\ticon: \"jquery_32x32.png\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"jquery-ui\",\n\t\t\t\tlabel: \"jQuery UI\",\n\t\t\t\tdesc: \"the official user interface library for jQuery\",\n\t\t\t\ticon: \"jqueryui_32x32.png\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sizzlejs\",\n\t\t\t\tlabel: \"Sizzle JS\",\n\t\t\t\tdesc: \"a pure-JavaScript CSS selector engine\",\n\t\t\t\ticon: \"sizzlejs_32x32.png\"\n\t\t\t}\n\t\t];\n\n\t\t$( \"#project\" ).autocomplete({\n\t\t\tminLength: 0,\n\t\t\tsource: projects,\n\t\t\tfocus: function( event, ui ) {\n\t\t\t\t$( \"#project\" ).val( ui.item.label );\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tselect: function( event, ui ) {\n\t\t\t\t$( \"#project\" ).val( ui.item.label );\n\t\t\t\t$( \"#project-id\" ).val( ui.item.value );\n\t\t\t\t$( \"#project-description\" ).html( ui.item.desc );\n\t\t\t\t$( \"#project-icon\" ).attr( \"src\", \"images/\" + ui.item.icon );\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t})\n\t\t.data( \"autocomplete\" )._renderItem = function( ul, item ) {\n\t\t\treturn $( \"<li>\" )\n\t\t\t\t.data( \"item.autocomplete\", item )\n\t\t\t\t.append( \"<a>\" + item.label + \"<br>\" + item.desc + \"</a>\" )\n\t\t\t\t.appendTo( ul );\n\t\t};\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"project-label\">Select a project (type \"j\" for a start):</div>\n<img id=\"project-icon\" src=\"images/transparent_1x1.png\" class=\"ui-state-default\" alt=\"\">\n<input id=\"project\">\n<input type=\"hidden\" id=\"project-id\">\n<p id=\"project-description\"></p>\n\n<div class=\"demo-description\">\n<p>You can use your own custom data formats and displays by simply overriding the default focus and select actions.</p>\n<p>Try typing \"j\" to get a list of projects or just press the down arrow.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#tags\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tags: </label>\n\t<input id=\"tags\">\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are tags for programming languages, give \"ja\" (for Java or JavaScript) a try.</p>\n<p>The datasource is a simple JavaScript array, provided to the widget using the source-option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/folding.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Accent folding</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar names = [ \"Jörn Zaefferer\", \"Scott González\", \"John Resig\" ];\n\n\t\tvar accentMap = {\n\t\t\t\"á\": \"a\",\n\t\t\t\"ö\": \"o\"\n\t\t};\n\t\tvar normalize = function( term ) {\n\t\t\tvar ret = \"\";\n\t\t\tfor ( var i = 0; i < term.length; i++ ) {\n\t\t\t\tret += accentMap[ term.charAt(i) ] || term.charAt(i);\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\n\t\t$( \"#developer\" ).autocomplete({\n\t\t\tsource: function( request, response ) {\n\t\t\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), \"i\" );\n\t\t\t\tresponse( $.grep( names, function( value ) {\n\t\t\t\t\tvalue = value.label || value.value || value;\n\t\t\t\t\treturn matcher.test( value ) || matcher.test( normalize( value ) );\n\t\t\t\t}) );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<form>\n\t<label for=\"developer\">Developer: </label>\n\t<input id=\"developer\">\n\t</form>\n</div>\n\n<div class=\"demo-description\">\n<p>The autocomplete field uses a custom source option which will match results that have accented characters even when the text field doesn't contain accented characters. However if the you type in accented characters in the text field it is smart enough not to show results that aren't accented.</p>\n<p>Try typing \"Jo\" to see \"John\" and \"Jörn\", then type \"Jö\" to see only \"Jörn\".</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"remote.html\">Remote datasource</a></li>\n\t<li><a href=\"remote-with-cache.html\">Remote with caching</a></li>\n\t<li><a href=\"remote-jsonp.html\">Remote JSONP datasource</a></li>\n\t<li><a href=\"maxheight.html\">Scrollable results</a></li>\n\t<li><a href=\"combobox.html\">Combobox</a></li>\n\t<li><a href=\"custom-data.html\">Custom data and display</a></li>\n\t<li><a href=\"xml.html\">XML data parsed once</a></li>\n\t<li><a href=\"categories.html\">Categories</a></li>\n\t<li><a href=\"folding.html\">Accent folding</a></li>\n\t<li><a href=\"multiple.html\">Multiple values</a></li>\n\t<li><a href=\"multiple-remote.html\">Multiple, remote</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/london.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<geonames style=\"MEDIUM\">\n<totalResultsCount>6987</totalResultsCount>\n<geoname>\n<name>London</name>\n<lat>51.5084152563931</lat>\n<lng>-0.125532746315002</lng>\n<geonameId>2643743</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>P</fcl>\n<fcode>PPLC</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>42.983389283</lat>\n<lng>-81.233042387</lng>\n<geonameId>6058560</geonameId>\n<countryCode>CA</countryCode>\n<countryName>Canada</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>East London</name>\n<lat>-33.0152850934643</lat>\n<lng>27.9116249084473</lng>\n<geonameId>1006984</geonameId>\n<countryCode>ZA</countryCode>\n<countryName>South Africa</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>City</name>\n<lat>51.5133363996235</lat>\n<lng>-0.0890064239501953</lng>\n<geonameId>2643744</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>37.1289771</lat>\n<lng>-84.0832646</lng>\n<geonameId>4298960</geonameId>\n<countryCode>US</countryCode>\n<countryName>United States</countryName>\n\n<fcl>P</fcl>\n<fcode>PPL</fcode>\n</geoname>\n<geoname>\n<name>The Tower of London</name>\n<lat>51.5082349601834</lat>\n<lng>-0.0763034820556641</lng>\n<geonameId>6286786</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>S</fcl>\n<fcode>CSTL</fcode>\n</geoname>\n<geoname>\n<name>London Reefs</name>\n<lat>8.85</lat>\n<lng>112.5333333</lng>\n<geonameId>1879967</geonameId>\n<countryCode>  </countryCode>\n<countryName>  </countryName>\n\n<fcl>U</fcl>\n<fcode>RFSU</fcode>\n</geoname>\n<geoname>\n<name>Greater London</name>\n<lat>51.5</lat>\n<lng>-0.1666667</lng>\n<geonameId>2648110</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n<geoname>\n<name>London</name>\n<lat>46.1666667</lat>\n<lng>6.0166667</lng>\n<geonameId>2661811</geonameId>\n<countryCode>CH</countryCode>\n<countryName>Switzerland</countryName>\n\n<fcl>H</fcl>\n<fcode>STM</fcode>\n</geoname>\n<geoname>\n<name>London Borough of Islington</name>\n<lat>51.5333333</lat>\n<lng>-0.1333333</lng>\n<geonameId>3333156</geonameId>\n<countryCode>GB</countryCode>\n<countryName>United Kingdom</countryName>\n\n<fcl>A</fcl>\n<fcode>ADM2</fcode>\n</geoname>\n</geonames>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/maxheight.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Scrollable results</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete {\n\t\tmax-height: 100px;\n\t\toverflow-y: auto;\n\t\t/* prevent horizontal scrollbar */\n\t\toverflow-x: hidden;\n\t}\n\t/* IE 6 doesn't support max-height\n\t * we use height instead, but this forces the menu to always be this tall\n\t */\n\t* html .ui-autocomplete {\n\t\theight: 100px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#tags\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tags: </label>\n\t<input id=\"tags\">\n</div>\n\n<div class=\"demo-description\">\n<p>When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large. Try typing \"a\" or \"s\" above to get a long list of results that you can scroll through.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple-remote.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Multiple, remote</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction split( val ) {\n\t\t\treturn val.split( /,\\s*/ );\n\t\t}\n\t\tfunction extractLast( term ) {\n\t\t\treturn split( term ).pop();\n\t\t}\n\n\t\t$( \"#birds\" )\n\t\t\t// don't navigate away from the field on tab when selecting an item\n\t\t\t.bind( \"keydown\", function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.TAB &&\n\t\t\t\t\t\t$( this ).data( \"autocomplete\" ).menu.active ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.autocomplete({\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t$.getJSON( \"search.php\", {\n\t\t\t\t\t\tterm: extractLast( request.term )\n\t\t\t\t\t}, response );\n\t\t\t\t},\n\t\t\t\tsearch: function() {\n\t\t\t\t\t// custom minLength\n\t\t\t\t\tvar term = extractLast( this.value );\n\t\t\t\t\tif ( term.length < 2 ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocus: function() {\n\t\t\t\t\t// prevent value inserted on focus\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tvar terms = split( this.value );\n\t\t\t\t\t// remove the current input\n\t\t\t\t\tterms.pop();\n\t\t\t\t\t// add the selected item\n\t\t\t\t\tterms.push( ui.item.value );\n\t\t\t\t\t// add placeholder to get the comma-and-space at the end\n\t\t\t\t\tterms.push( \"\" );\n\t\t\t\t\tthis.value = terms.join( \", \" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\" size=\"50\">\n</div>\n\n<div class=\"demo-description\">\n<p>Usage: Enter at least two characters to get bird name suggestions. Select a value to continue adding more names.</p>\n<p>This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/multiple.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Multiple values</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\tfunction split( val ) {\n\t\t\treturn val.split( /,\\s*/ );\n\t\t}\n\t\tfunction extractLast( term ) {\n\t\t\treturn split( term ).pop();\n\t\t}\n\n\t\t$( \"#tags\" )\n\t\t\t// don't navigate away from the field on tab when selecting an item\n\t\t\t.bind( \"keydown\", function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.TAB &&\n\t\t\t\t\t\t$( this ).data( \"autocomplete\" ).menu.active ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.autocomplete({\n\t\t\t\tminLength: 0,\n\t\t\t\tsource: function( request, response ) {\n\t\t\t\t\t// delegate back to autocomplete, but extract the last term\n\t\t\t\t\tresponse( $.ui.autocomplete.filter(\n\t\t\t\t\t\tavailableTags, extractLast( request.term ) ) );\n\t\t\t\t},\n\t\t\t\tfocus: function() {\n\t\t\t\t\t// prevent value inserted on focus\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tvar terms = split( this.value );\n\t\t\t\t\t// remove the current input\n\t\t\t\t\tterms.pop();\n\t\t\t\t\t// add the selected item\n\t\t\t\t\tterms.push( ui.item.value );\n\t\t\t\t\t// add placeholder to get the comma-and-space at the end\n\t\t\t\t\tterms.push( \"\" );\n\t\t\t\t\tthis.value = terms.join( \", \" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"tags\">Tag programming languages: </label>\n\t<input id=\"tags\" size=\"50\">\n</div>\n\n<div class=\"demo-description\">\n<p>Usage: Type something, eg. \"j\" to see suggestions for tagging with programming languages. Select a value, then continue typing to add more.</p>\n<p>This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-jsonp.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote JSONP datasource</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t#city { width: 25em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).scrollTop( 0 );\n\t\t}\n\n\t\t$( \"#city\" ).autocomplete({\n\t\t\tsource: function( request, response ) {\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: \"http://ws.geonames.org/searchJSON\",\n\t\t\t\t\tdataType: \"jsonp\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfeatureClass: \"P\",\n\t\t\t\t\t\tstyle: \"full\",\n\t\t\t\t\t\tmaxRows: 12,\n\t\t\t\t\t\tname_startsWith: request.term\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( $.map( data.geonames, function( item ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tlabel: item.name + (item.adminName1 ? \", \" + item.adminName1 : \"\") + \", \" + item.countryName,\n\t\t\t\t\t\t\t\tvalue: item.name\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tminLength: 2,\n\t\t\tselect: function( event, ui ) {\n\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\"Selected: \" + ui.item.label :\n\t\t\t\t\t\"Nothing selected, input was \" + this.value);\n\t\t\t},\n\t\t\topen: function() {\n\t\t\t\t$( this ).removeClass( \"ui-corner-all\" ).addClass( \"ui-corner-top\" );\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\t$( this ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-all\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"city\">Your city: </label>\n\t<input id=\"city\">\n\tPowered by <a href=\"http://geonames.org\">geonames.org</a>\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are cities, displayed when at least two characters are entered into the field.</p>\n<p>In this case, the datasource is the <a href=\"http://geonames.org\">geonames.org webservice</a>. While only the city name itself ends up in the input after selecting an element, more info is displayed in the suggestions to help find the right entry. That data is also available in callbacks, as illustrated by the Result area below the input.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote-with-cache.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote with caching</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar cache = {};\n\t\t$( \"#birds\" ).autocomplete({\n\t\t\tminLength: 2,\n\t\t\tsource: function( request, response ) {\n\t\t\t\tvar term = request.term;\n\t\t\t\tif ( term in cache ) {\n\t\t\t\t\tresponse( cache[ term ] );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$.getJSON( \"search.php\", request, function( data, status, xhr ) {\n\t\t\t\t\tcache[ term ] = data;\n\t\t\t\t\tresponse( data );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\">\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.</p>\n<p>Similar to the remote datasource demo, though this adds some local caching to improve performance. The cache here saves just one query, and could be extended to cache multiple values, one for each term.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/remote.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - Remote datasource</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading {\n\t\tbackground: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).scrollTop( 0 );\n\t\t}\n\n\t\t$( \"#birds\" ).autocomplete({\n\t\t\tsource: \"search.php\",\n\t\t\tminLength: 2,\n\t\t\tselect: function( event, ui ) {\n\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\"Selected: \" + ui.item.value + \" aka \" + ui.item.id :\n\t\t\t\t\t\"Nothing selected, input was \" + this.value );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">Birds: </label>\n\t<input id=\"birds\">\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.</p>\n<p>The datasource is a server-side script which returns JSON data, specified via a simple URL for the source-option. In addition, the minLength-option is set to 2 to avoid queries that would return too many results and the select-event is used to display some feedback.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/search.php",
    "content": "<?php\n\nsleep( 3 );\n// no term passed - just exit early with no response\nif (empty($_GET['term'])) exit ;\n$q = strtolower($_GET[\"term\"]);\n// remove slashes if they were magically added\nif (get_magic_quotes_gpc()) $q = stripslashes($q);\n\n$items = array(\n\"Great Bittern\"=>\"Botaurus stellaris\",\n\"Little Grebe\"=>\"Tachybaptus ruficollis\",\n\"Black-necked Grebe\"=>\"Podiceps nigricollis\",\n\"Little Bittern\"=>\"Ixobrychus minutus\",\n\"Black-crowned Night Heron\"=>\"Nycticorax nycticorax\",\n\"Purple Heron\"=>\"Ardea purpurea\",\n\"White Stork\"=>\"Ciconia ciconia\",\n\"Spoonbill\"=>\"Platalea leucorodia\",\n\"Red-crested Pochard\"=>\"Netta rufina\",\n\"Common Eider\"=>\"Somateria mollissima\",\n\"Red Kite\"=>\"Milvus milvus\",\n\"Hen Harrier\"=>\"Circus cyaneus\",\n\"Montagu`s Harrier\"=>\"Circus pygargus\",\n\"Black Grouse\"=>\"Tetrao tetrix\",\n\"Grey Partridge\"=>\"Perdix perdix\",\n\"Spotted Crake\"=>\"Porzana porzana\",\n\"Corncrake\"=>\"Crex crex\",\n\"Common Crane\"=>\"Grus grus\",\n\"Avocet\"=>\"Recurvirostra avosetta\",\n\"Stone Curlew\"=>\"Burhinus oedicnemus\",\n\"Common Ringed Plover\"=>\"Charadrius hiaticula\",\n\"Kentish Plover\"=>\"Charadrius alexandrinus\",\n\"Ruff\"=>\"Philomachus pugnax\",\n\"Common Snipe\"=>\"Gallinago gallinago\",\n\"Black-tailed Godwit\"=>\"Limosa limosa\",\n\"Common Redshank\"=>\"Tringa totanus\",\n\"Sandwich Tern\"=>\"Sterna sandvicensis\",\n\"Common Tern\"=>\"Sterna hirundo\",\n\"Arctic Tern\"=>\"Sterna paradisaea\",\n\"Little Tern\"=>\"Sternula albifrons\",\n\"Black Tern\"=>\"Chlidonias niger\",\n\"Barn Owl\"=>\"Tyto alba\",\n\"Little Owl\"=>\"Athene noctua\",\n\"Short-eared Owl\"=>\"Asio flammeus\",\n\"European Nightjar\"=>\"Caprimulgus europaeus\",\n\"Common Kingfisher\"=>\"Alcedo atthis\",\n\"Eurasian Hoopoe\"=>\"Upupa epops\",\n\"Eurasian Wryneck\"=>\"Jynx torquilla\",\n\"European Green Woodpecker\"=>\"Picus viridis\",\n\"Crested Lark\"=>\"Galerida cristata\",\n\"White-headed Duck\"=>\"Oxyura leucocephala\",\n\"Pale-bellied Brent Goose\"=>\"Branta hrota\",\n\"Tawny Pipit\"=>\"Anthus campestris\",\n\"Whinchat\"=>\"Saxicola rubetra\",\n\"European Stonechat\"=>\"Saxicola rubicola\",\n\"Northern Wheatear\"=>\"Oenanthe oenanthe\",\n\"Savi`s Warbler\"=>\"Locustella luscinioides\",\n\"Sedge Warbler\"=>\"Acrocephalus schoenobaenus\",\n\"Great Reed Warbler\"=>\"Acrocephalus arundinaceus\",\n\"Bearded Reedling\"=>\"Panurus biarmicus\",\n\"Red-backed Shrike\"=>\"Lanius collurio\",\n\"Great Grey Shrike\"=>\"Lanius excubitor\",\n\"Woodchat Shrike\"=>\"Lanius senator\",\n\"Common Raven\"=>\"Corvus corax\",\n\"Yellowhammer\"=>\"Emberiza citrinella\",\n\"Ortolan Bunting\"=>\"Emberiza hortulana\",\n\"Corn Bunting\"=>\"Emberiza calandra\",\n\"Great Cormorant\"=>\"Phalacrocorax carbo\",\n\"Hawfinch\"=>\"Coccothraustes coccothraustes\",\n\"Common Shelduck\"=>\"Tadorna tadorna\",\n\"Bluethroat\"=>\"Luscinia svecica\",\n\"Grey Heron\"=>\"Ardea cinerea\",\n\"Barn Swallow\"=>\"Hirundo rustica\",\n\"Hooded Crow\"=>\"Corvus cornix\",\n\"Dunlin\"=>\"Calidris alpina\",\n\"Eurasian Pied Flycatcher\"=>\"Ficedula hypoleuca\",\n\"Eurasian Nuthatch\"=>\"Sitta europaea\",\n\"Short-toed Tree Creeper\"=>\"Certhia brachydactyla\",\n\"Wood Lark\"=>\"Lullula arborea\",\n\"Tree Pipit\"=>\"Anthus trivialis\",\n\"Eurasian Hobby\"=>\"Falco subbuteo\",\n\"Marsh Warbler\"=>\"Acrocephalus palustris\",\n\"Wood Sandpiper\"=>\"Tringa glareola\",\n\"Tawny Owl\"=>\"Strix aluco\",\n\"Lesser Whitethroat\"=>\"Sylvia curruca\",\n\"Barnacle Goose\"=>\"Branta leucopsis\",\n\"Common Goldeneye\"=>\"Bucephala clangula\",\n\"Western Marsh Harrier\"=>\"Circus aeruginosus\",\n\"Common Buzzard\"=>\"Buteo buteo\",\n\"Sanderling\"=>\"Calidris alba\",\n\"Little Gull\"=>\"Larus minutus\",\n\"Eurasian Magpie\"=>\"Pica pica\",\n\"Willow Warbler\"=>\"Phylloscopus trochilus\",\n\"Wood Warbler\"=>\"Phylloscopus sibilatrix\",\n\"Great Crested Grebe\"=>\"Podiceps cristatus\",\n\"Eurasian Jay\"=>\"Garrulus glandarius\",\n\"Common Redstart\"=>\"Phoenicurus phoenicurus\",\n\"Blue-headed Wagtail\"=>\"Motacilla flava\",\n\"Common Swift\"=>\"Apus apus\",\n\"Marsh Tit\"=>\"Poecile palustris\",\n\"Goldcrest\"=>\"Regulus regulus\",\n\"European Golden Plover\"=>\"Pluvialis apricaria\",\n\"Eurasian Bullfinch\"=>\"Pyrrhula pyrrhula\",\n\"Common Whitethroat\"=>\"Sylvia communis\",\n\"Meadow Pipit\"=>\"Anthus pratensis\",\n\"Greylag Goose\"=>\"Anser anser\",\n\"Spotted Flycatcher\"=>\"Muscicapa striata\",\n\"European Greenfinch\"=>\"Carduelis chloris\",\n\"Common Greenshank\"=>\"Tringa nebularia\",\n\"Great Spotted Woodpecker\"=>\"Dendrocopos major\",\n\"Greater Canada Goose\"=>\"Branta canadensis\",\n\"Mistle Thrush\"=>\"Turdus viscivorus\",\n\"Great Black-backed Gull\"=>\"Larus marinus\",\n\"Goosander\"=>\"Mergus merganser\",\n\"Great Egret\"=>\"Casmerodius albus\",\n\"Northern Goshawk\"=>\"Accipiter gentilis\",\n\"Dunnock\"=>\"Prunella modularis\",\n\"Stock Dove\"=>\"Columba oenas\",\n\"Common Wood Pigeon\"=>\"Columba palumbus\",\n\"Eurasian Woodcock\"=>\"Scolopax rusticola\",\n\"House Sparrow\"=>\"Passer domesticus\",\n\"Common House Martin\"=>\"Delichon urbicum\",\n\"Red Knot\"=>\"Calidris canutus\",\n\"Western Jackdaw\"=>\"Corvus monedula\",\n\"Brambling\"=>\"Fringilla montifringilla\",\n\"Northern Lapwing\"=>\"Vanellus vanellus\",\n\"European Reed Warbler\"=>\"Acrocephalus scirpaceus\",\n\"Lesser Black-backed Gull\"=>\"Larus fuscus\",\n\"Little Egret\"=>\"Egretta garzetta\",\n\"Little Stint\"=>\"Calidris minuta\",\n\"Common Linnet\"=>\"Carduelis cannabina\",\n\"Mute Swan\"=>\"Cygnus olor\",\n\"Common Cuckoo\"=>\"Cuculus canorus\",\n\"Black-headed Gull\"=>\"Larus ridibundus\",\n\"Greater White-fronted Goose\"=>\"Anser albifrons\",\n\"Great Tit\"=>\"Parus major\",\n\"Redwing\"=>\"Turdus iliacus\",\n\"Gadwall\"=>\"Anas strepera\",\n\"Fieldfare\"=>\"Turdus pilaris\",\n\"Tufted Duck\"=>\"Aythya fuligula\",\n\"Crested Tit\"=>\"Lophophanes cristatus\",\n\"Willow Tit\"=>\"Poecile montanus\",\n\"Eurasian Coot\"=>\"Fulica atra\",\n\"Common Blackbird\"=>\"Turdus merula\",\n\"Smew\"=>\"Mergus albellus\",\n\"Common Sandpiper\"=>\"Actitis hypoleucos\",\n\"Sand Martin\"=>\"Riparia riparia\",\n\"Purple Sandpiper\"=>\"Calidris maritima\",\n\"Northern Pintail\"=>\"Anas acuta\",\n\"Blue Tit\"=>\"Cyanistes caeruleus\",\n\"European Goldfinch\"=>\"Carduelis carduelis\",\n\"Eurasian Whimbrel\"=>\"Numenius phaeopus\",\n\"Common Reed Bunting\"=>\"Emberiza schoeniclus\",\n\"Eurasian Tree Sparrow\"=>\"Passer montanus\",\n\"Rook\"=>\"Corvus frugilegus\",\n\"European Robin\"=>\"Erithacus rubecula\",\n\"Bar-tailed Godwit\"=>\"Limosa lapponica\",\n\"Dark-bellied Brent Goose\"=>\"Branta bernicla\",\n\"Eurasian Oystercatcher\"=>\"Haematopus ostralegus\",\n\"Eurasian Siskin\"=>\"Carduelis spinus\",\n\"Northern Shoveler\"=>\"Anas clypeata\",\n\"Eurasian Wigeon\"=>\"Anas penelope\",\n\"Eurasian Sparrow Hawk\"=>\"Accipiter nisus\",\n\"Icterine Warbler\"=>\"Hippolais icterina\",\n\"Common Starling\"=>\"Sturnus vulgaris\",\n\"Long-tailed Tit\"=>\"Aegithalos caudatus\",\n\"Ruddy Turnstone\"=>\"Arenaria interpres\",\n\"Mew Gull\"=>\"Larus canus\",\n\"Common Pochard\"=>\"Aythya ferina\",\n\"Common Chiffchaff\"=>\"Phylloscopus collybita\",\n\"Greater Scaup\"=>\"Aythya marila\",\n\"Common Kestrel\"=>\"Falco tinnunculus\",\n\"Garden Warbler\"=>\"Sylvia borin\",\n\"Eurasian Collared Dove\"=>\"Streptopelia decaocto\",\n\"Eurasian Skylark\"=>\"Alauda arvensis\",\n\"Common Chaffinch\"=>\"Fringilla coelebs\",\n\"Common Moorhen\"=>\"Gallinula chloropus\",\n\"Water Pipit\"=>\"Anthus spinoletta\",\n\"Mallard\"=>\"Anas platyrhynchos\",\n\"Winter Wren\"=>\"Troglodytes troglodytes\",\n\"Common Teal\"=>\"Anas crecca\",\n\"Green Sandpiper\"=>\"Tringa ochropus\",\n\"White Wagtail\"=>\"Motacilla alba\",\n\"Eurasian Curlew\"=>\"Numenius arquata\",\n\"Song Thrush\"=>\"Turdus philomelos\",\n\"European Herring Gull\"=>\"Larus argentatus\",\n\"Grey Plover\"=>\"Pluvialis squatarola\",\n\"Carrion Crow\"=>\"Corvus corone\",\n\"Coal Tit\"=>\"Periparus ater\",\n\"Spotted Redshank\"=>\"Tringa erythropus\",\n\"Blackcap\"=>\"Sylvia atricapilla\",\n\"Egyptian Vulture\"=>\"Neophron percnopterus\",\n\"Razorbill\"=>\"Alca torda\",\n\"Alpine Swift\"=>\"Apus melba\",\n\"Long-legged Buzzard\"=>\"Buteo rufinus\",\n\"Audouin`s Gull\"=>\"Larus audouinii\",\n\"Balearic Shearwater\"=>\"Puffinus mauretanicus\",\n\"Upland Sandpiper\"=>\"Bartramia longicauda\",\n\"Greater Spotted Eagle\"=>\"Aquila clanga\",\n\"Ring Ouzel\"=>\"Turdus torquatus\",\n\"Yellow-browed Warbler\"=>\"Phylloscopus inornatus\",\n\"Blue Rock Thrush\"=>\"Monticola solitarius\",\n\"Buff-breasted Sandpiper\"=>\"Tryngites subruficollis\",\n\"Jack Snipe\"=>\"Lymnocryptes minimus\",\n\"White-rumped Sandpiper\"=>\"Calidris fuscicollis\",\n\"Ruddy Shelduck\"=>\"Tadorna ferruginea\",\n\"Cetti's Warbler\"=>\"Cettia cetti\",\n\"Citrine Wagtail\"=>\"Motacilla citreola\",\n\"Roseate Tern\"=>\"Sterna dougallii\",\n\"Black-legged Kittiwake\"=>\"Rissa tridactyla\",\n\"Pygmy Cormorant\"=>\"Phalacrocorax pygmeus\",\n\"Booted Eagle\"=>\"Aquila pennata\",\n\"Lesser White-fronted Goose\"=>\"Anser erythropus\",\n\"Little Bunting\"=>\"Emberiza pusilla\",\n\"Eleonora's Falcon\"=>\"Falco eleonorae\",\n\"European Serin\"=>\"Serinus serinus\",\n\"Twite\"=>\"Carduelis flavirostris\",\n\"Yellow-legged Gull\"=>\"Larus michahellis\",\n\"Gyr Falcon\"=>\"Falco rusticolus\",\n\"Greenish Warbler\"=>\"Phylloscopus trochiloides\",\n\"Red-necked Phalarope\"=>\"Phalaropus lobatus\",\n\"Mealy Redpoll\"=>\"Carduelis flammea\",\n\"Glaucous Gull\"=>\"Larus hyperboreus\",\n\"Great Skua\"=>\"Stercorarius skua\",\n\"Great Bustard\"=>\"Otis tarda\",\n\"Velvet Scoter\"=>\"Melanitta fusca\",\n\"Pine Grosbeak\"=>\"Pinicola enucleator\",\n\"House Crow\"=>\"Corvus splendens\",\n\"Hume`s Leaf Warbler\"=>\"Phylloscopus humei\",\n\"Great Northern Loon\"=>\"Gavia immer\",\n\"Long-tailed Duck\"=>\"Clangula hyemalis\",\n\"Lapland Longspur\"=>\"Calcarius lapponicus\",\n\"Northern Gannet\"=>\"Morus bassanus\",\n\"Eastern Imperial Eagle\"=>\"Aquila heliaca\",\n\"Little Auk\"=>\"Alle alle\",\n\"Lesser Spotted Woodpecker\"=>\"Dendrocopos minor\",\n\"Iceland Gull\"=>\"Larus glaucoides\",\n\"Parasitic Jaeger\"=>\"Stercorarius parasiticus\",\n\"Bewick`s Swan\"=>\"Cygnus bewickii\",\n\"Little Bustard\"=>\"Tetrax tetrax\",\n\"Little Crake\"=>\"Porzana parva\",\n\"Baillon`s Crake\"=>\"Porzana pusilla\",\n\"Long-tailed Jaeger\"=>\"Stercorarius longicaudus\",\n\"King Eider\"=>\"Somateria spectabilis\",\n\"Greater Short-toed Lark\"=>\"Calandrella brachydactyla\",\n\"Houbara Bustard\"=>\"Chlamydotis undulata\",\n\"Curlew Sandpiper\"=>\"Calidris ferruginea\",\n\"Common Crossbill\"=>\"Loxia curvirostra\",\n\"European Shag\"=>\"Phalacrocorax aristotelis\",\n\"Horned Grebe\"=>\"Podiceps auritus\",\n\"Common Quail\"=>\"Coturnix coturnix\",\n\"Bearded Vulture\"=>\"Gypaetus barbatus\",\n\"Lanner Falcon\"=>\"Falco biarmicus\",\n\"Middle Spotted Woodpecker\"=>\"Dendrocopos medius\",\n\"Pomarine Jaeger\"=>\"Stercorarius pomarinus\",\n\"Red-breasted Merganser\"=>\"Mergus serrator\",\n\"Eurasian Black Vulture\"=>\"Aegypius monachus\",\n\"Eurasian Dotterel\"=>\"Charadrius morinellus\",\n\"Common Nightingale\"=>\"Luscinia megarhynchos\",\n\"Northern willow warbler\"=>\"Phylloscopus trochilus acredula\",\n\"Manx Shearwater\"=>\"Puffinus puffinus\",\n\"Northern Fulmar\"=>\"Fulmarus glacialis\",\n\"Eurasian Eagle Owl\"=>\"Bubo bubo\",\n\"Orphean Warbler\"=>\"Sylvia hortensis\",\n\"Melodious Warbler\"=>\"Hippolais polyglotta\",\n\"Pallas's Leaf Warbler\"=>\"Phylloscopus proregulus\",\n\"Atlantic Puffin\"=>\"Fratercula arctica\",\n\"Black-throated Loon\"=>\"Gavia arctica\",\n\"Bohemian Waxwing\"=>\"Bombycilla garrulus\",\n\"Marsh Sandpiper\"=>\"Tringa stagnatilis\",\n\"Great Snipe\"=>\"Gallinago media\",\n\"Squacco Heron\"=>\"Ardeola ralloides\",\n\"Long-eared Owl\"=>\"Asio otus\",\n\"Caspian Tern\"=>\"Hydroprogne caspia\",\n\"Red-breasted Goose\"=>\"Branta ruficollis\",\n\"Red-throated Loon\"=>\"Gavia stellata\",\n\"Common Rosefinch\"=>\"Carpodacus erythrinus\",\n\"Red-footed Falcon\"=>\"Falco vespertinus\",\n\"Ross's Goose\"=>\"Anser rossii\",\n\"Red Phalarope\"=>\"Phalaropus fulicarius\",\n\"Pied Wagtail\"=>\"Motacilla yarrellii\",\n\"Rose-coloured Starling\"=>\"Sturnus roseus\",\n\"Rough-legged Buzzard\"=>\"Buteo lagopus\",\n\"Saker Falcon\"=>\"Falco cherrug\",\n\"European Roller\"=>\"Coracias garrulus\",\n\"Short-toed Eagle\"=>\"Circaetus gallicus\",\n\"Peregrine Falcon\"=>\"Falco peregrinus\",\n\"Merlin\"=>\"Falco columbarius\",\n\"Snow Goose\"=>\"Anser caerulescens\",\n\"Snowy Owl\"=>\"Bubo scandiacus\",\n\"Snow Bunting\"=>\"Plectrophenax nivalis\",\n\"Common Grasshopper Warbler\"=>\"Locustella naevia\",\n\"Golden Eagle\"=>\"Aquila chrysaetos\",\n\"Black-winged Stilt\"=>\"Himantopus himantopus\",\n\"Steppe Eagle\"=>\"Aquila nipalensis\",\n\"Pallid Harrier\"=>\"Circus macrourus\",\n\"European Storm-petrel\"=>\"Hydrobates pelagicus\",\n\"Horned Lark\"=>\"Eremophila alpestris\",\n\"Eurasian Treecreeper\"=>\"Certhia familiaris\",\n\"Taiga Bean Goose\"=>\"Anser fabalis\",\n\"Temminck`s Stint\"=>\"Calidris temminckii\",\n\"Terek Sandpiper\"=>\"Xenus cinereus\",\n\"Tundra Bean Goose\"=>\"Anser serrirostris\",\n\"European Turtle Dove\"=>\"Streptopelia turtur\",\n\"Leach`s Storm-petrel\"=>\"Oceanodroma leucorhoa\",\n\"Eurasian Griffon Vulture\"=>\"Gyps fulvus\",\n\"Paddyfield Warbler\"=>\"Acrocephalus agricola\",\n\"Osprey\"=>\"Pandion haliaetus\",\n\"Firecrest\"=>\"Regulus ignicapilla\",\n\"Water Rail\"=>\"Rallus aquaticus\",\n\"European Honey Buzzard\"=>\"Pernis apivorus\",\n\"Eurasian Golden Oriole\"=>\"Oriolus oriolus\",\n\"Whooper Swan\"=>\"Cygnus cygnus\",\n\"Two-barred Crossbill\"=>\"Loxia leucoptera\",\n\"White-tailed Eagle\"=>\"Haliaeetus albicilla\",\n\"Atlantic Murre\"=>\"Uria aalge\",\n\"Garganey\"=>\"Anas querquedula\",\n\"Black Redstart\"=>\"Phoenicurus ochruros\",\n\"Common Scoter\"=>\"Melanitta nigra\",\n\"Rock Pipit\"=>\"Anthus petrosus\",\n\"Lesser Spotted Eagle\"=>\"Aquila pomarina\",\n\"Cattle Egret\"=>\"Bubulcus ibis\",\n\"White-winged Black Tern\"=>\"Chlidonias leucopterus\",\n\"Black Stork\"=>\"Ciconia nigra\",\n\"Mediterranean Gull\"=>\"Larus melanocephalus\",\n\"Black Kite\"=>\"Milvus migrans\",\n\"Yellow Wagtail\"=>\"Motacilla flavissima\",\n\"Red-necked Grebe\"=>\"Podiceps grisegena\",\n\"Gull-billed Tern\"=>\"Gelochelidon nilotica\",\n\"Pectoral Sandpiper\"=>\"Calidris melanotos\",\n\"Barred Warbler\"=>\"Sylvia nisoria\",\n\"Red-throated Pipit\"=>\"Anthus cervinus\",\n\"Grey Wagtail\"=>\"Motacilla cinerea\",\n\"Richard`s Pipit\"=>\"Anthus richardi\",\n\"Black Woodpecker\"=>\"Dryocopus martius\",\n\"Little Ringed Plover\"=>\"Charadrius dubius\",\n\"Whiskered Tern\"=>\"Chlidonias hybrida\",\n\"Lesser Redpoll\"=>\"Carduelis cabaret\",\n\"Pallas' Bunting\"=>\"Emberiza pallasi\",\n\"Ferruginous Duck\"=>\"Aythya nyroca\",\n\"Whistling Swan\"=>\"Cygnus columbianus\",\n\"Black Brant\"=>\"Branta nigricans\",\n\"Marbled Teal\"=>\"Marmaronetta angustirostris\",\n\"Canvasback\"=>\"Aythya valisineria\",\n\"Redhead\"=>\"Aythya americana\",\n\"Lesser Scaup\"=>\"Aythya affinis\",\n\"Steller`s Eider\"=>\"Polysticta stelleri\",\n\"Spectacled Eider\"=>\"Somateria fischeri\",\n\"Harlequin Duck\"=>\"Histronicus histrionicus\",\n\"Black Scoter\"=>\"Melanitta americana\",\n\"Surf Scoter\"=>\"Melanitta perspicillata\",\n\"Barrow`s Goldeneye\"=>\"Bucephala islandica\",\n\"Falcated Duck\"=>\"Anas falcata\",\n\"American Wigeon\"=>\"Anas americana\",\n\"Blue-winged Teal\"=>\"Anas discors\",\n\"American Black Duck\"=>\"Anas rubripes\",\n\"Baikal Teal\"=>\"Anas formosa\",\n\"Green-Winged Teal\"=>\"Anas carolinensis\",\n\"Hazel Grouse\"=>\"Bonasa bonasia\",\n\"Rock Partridge\"=>\"Alectoris graeca\",\n\"Red-legged Partridge\"=>\"Alectoris rufa\",\n\"Yellow-billed Loon\"=>\"Gavia adamsii\",\n\"Cory`s Shearwater\"=>\"Calonectris borealis\",\n\"Madeiran Storm-Petrel\"=>\"Oceanodroma castro\",\n\"Great White Pelican\"=>\"Pelecanus onocrotalus\",\n\"Dalmatian Pelican\"=>\"Pelecanus crispus\",\n\"American Bittern\"=>\"Botaurus lentiginosus\",\n\"Glossy Ibis\"=>\"Plegadis falcinellus\",\n\"Spanish Imperial Eagle\"=>\"Aquila adalberti\",\n\"Lesser Kestrel\"=>\"Falco naumanni\",\n\"Houbara Bustard\"=>\"Chlamydotis undulata\",\n\"Crab-Plover\"=>\"Dromas ardeola\",\n\"Cream-coloured Courser\"=>\"Cursorius cursor\",\n\"Collared Pratincole\"=>\"Glareola pratincola\",\n\"Black-winged Pratincole\"=>\"Glareola nordmanni\",\n\"Killdeer\"=>\"Charadrius vociferus\",\n\"Lesser Sand Plover\"=>\"Charadrius mongolus\",\n\"Greater Sand Plover\"=>\"Charadrius leschenaultii\",\n\"Caspian Plover\"=>\"Charadrius asiaticus\",\n\"American Golden Plover\"=>\"Pluvialis dominica\",\n\"Pacific Golden Plover\"=>\"Pluvialis fulva\",\n\"Sharp-tailed Sandpiper\"=>\"Calidris acuminata\",\n\"Broad-billed Sandpiper\"=>\"Limicola falcinellus\",\n\"Spoon-Billed Sandpiper\"=>\"Eurynorhynchus pygmaeus\",\n\"Short-Billed Dowitcher\"=>\"Limnodromus griseus\",\n\"Long-billed Dowitcher\"=>\"Limnodromus scolopaceus\",\n\"Hudsonian Godwit\"=>\"Limosa haemastica\",\n\"Little Curlew\"=>\"Numenius minutus\",\n\"Lesser Yellowlegs\"=>\"Tringa flavipes\",\n\"Wilson`s Phalarope\"=>\"Phalaropus tricolor\",\n\"Pallas`s Gull\"=>\"Larus ichthyaetus\",\n\"Laughing Gull\"=>\"Larus atricilla\",\n\"Franklin`s Gull\"=>\"Larus pipixcan\",\n\"Bonaparte`s Gull\"=>\"Larus philadelphia\",\n\"Ring-billed Gull\"=>\"Larus delawarensis\",\n\"American Herring Gull\"=>\"Larus smithsonianus\",\n\"Caspian Gull\"=>\"Larus cachinnans\",\n\"Ivory Gull\"=>\"Pagophila eburnea\",\n\"Royal Tern\"=>\"Sterna maxima\",\n\"Brünnich`s Murre\"=>\"Uria lomvia\",\n\"Crested Auklet\"=>\"Aethia cristatella\",\n\"Parakeet Auklet\"=>\"Cyclorrhynchus psittacula\",\n\"Tufted Puffin\"=>\"Lunda cirrhata\",\n\"Laughing Dove\"=>\"Streptopelia senegalensis\",\n\"Great Spotted Cuckoo\"=>\"Clamator glandarius\",\n\"Great Grey Owl\"=>\"Strix nebulosa\",\n\"Tengmalm`s Owl\"=>\"Aegolius funereus\",\n\"Red-Necked Nightjar\"=>\"Caprimulgus ruficollis\",\n\"Chimney Swift\"=>\"Chaetura pelagica\",\n\"Green Bea-Eater\"=>\"Merops orientalis\",\n\"Grey-headed Woodpecker\"=>\"Picus canus\",\n\"Lesser Short-Toed Lark\"=>\"Calandrella rufescens\",\n\"Eurasian Crag Martin\"=>\"Hirundo rupestris\",\n\"Red-rumped Swallow\"=>\"Cecropis daurica\",\n\"Blyth`s Pipit\"=>\"Anthus godlewskii\",\n\"Pechora Pipit\"=>\"Anthus gustavi\",\n\"Grey-headed Wagtail\"=>\"Motacilla thunbergi\",\n\"Yellow-Headed Wagtail\"=>\"Motacilla lutea\",\n\"White-throated Dipper\"=>\"Cinclus cinclus\",\n\"Rufous-Tailed Scrub Robin\"=>\"Cercotrichas galactotes\",\n\"Thrush Nightingale\"=>\"Luscinia luscinia\",\n\"White-throated Robin\"=>\"Irania gutturalis\",\n\"Caspian Stonechat\"=>\"Saxicola maura variegata\",\n\"Western Black-eared Wheatear\"=>\"Oenanthe hispanica\",\n\"Rufous-tailed Rock Thrush\"=>\"Monticola saxatilis\",\n\"Red-throated Thrush/Black-throated\"=>\"Turdus ruficollis\",\n\"American Robin\"=>\"Turdus migratorius\",\n\"Zitting Cisticola\"=>\"Cisticola juncidis\",\n\"Lanceolated Warbler\"=>\"Locustella lanceolata\",\n\"River Warbler\"=>\"Locustella fluviatilis\",\n\"Blyth`s Reed Warbler\"=>\"Acrocephalus dumetorum\",\n\"Caspian Reed Warbler\"=>\"Acrocephalus fuscus\",\n\"Aquatic Warbler\"=>\"Acrocephalus paludicola\",\n\"Booted Warbler\"=>\"Acrocephalus caligatus\",\n\"Marmora's Warbler\"=>\"Sylvia sarda\",\n\"Dartford Warbler\"=>\"Sylvia undata\",\n\"Subalpine Warbler\"=>\"Sylvia cantillans\",\n\"Ménétries's Warbler\"=>\"Sylvia mystacea\",\n\"Rüppel's Warbler\"=>\"Sylvia rueppelli\",\n\"Asian Desert Warbler\"=>\"Sylvia nana\",\n\"Western Orphean Warbler\"=>\"Sylvia hortensis hortensis\",\n\"Arctic Warbler\"=>\"Phylloscopus borealis\",\n\"Radde`s Warbler\"=>\"Phylloscopus schwarzi\",\n\"Western Bonelli`s Warbler\"=>\"Phylloscopus bonelli\",\n\"Red-breasted Flycatcher\"=>\"Ficedula parva\",\n\"Eurasian Penduline Tit\"=>\"Remiz pendulinus\",\n\"Daurian Shrike\"=>\"Lanius isabellinus\",\n\"Long-Tailed Shrike\"=>\"Lanius schach\",\n\"Lesser Grey Shrike\"=>\"Lanius minor\",\n\"Southern Grey Shrike\"=>\"Lanius meridionalis\",\n\"Masked Shrike\"=>\"Lanius nubicus\",\n\"Spotted Nutcracker\"=>\"Nucifraga caryocatactes\",\n\"Daurian Jackdaw\"=>\"Corvus dauuricus\",\n\"Purple-Backed Starling\"=>\"Sturnus sturninus\",\n\"Red-Fronted Serin\"=>\"Serinus pusillus\",\n\"Arctic Redpoll\"=>\"Carduelis hornemanni\",\n\"Scottish Crossbill\"=>\"Loxia scotica\",\n\"Parrot Crossbill\"=>\"Loxia pytyopsittacus\",\n\"Black-faced Bunting\"=>\"Emberiza spodocephala\",\n\"Pink-footed Goose\"=>\"Anser brachyrhynchus\",\n\"Black-winged Kite\"=>\"Elanus caeruleus\",\n\"European Bee-eater\"=>\"Merops apiaster\",\n\"Sabine`s Gull\"=>\"Larus sabini\",\n\"Sooty Shearwater\"=>\"Puffinus griseus\",\n\"Lesser Canada Goose\"=>\"Branta hutchinsii\",\n\"Ring-necked Duck\"=>\"Aythya collaris\",\n\"Greater Flamingo\"=>\"Phoenicopterus roseus\",\n\"Iberian Chiffchaff\"=>\"Phylloscopus ibericus\",\n\"Ashy-headed Wagtail\"=>\"Motacilla cinereocapilla\",\n\"Stilt Sandpiper\"=>\"Calidris himantopus\",\n\"Siberian Stonechat\"=>\"Saxicola maurus\",\n\"Greater Yellowlegs\"=>\"Tringa melanoleuca\",\n\"Forster`s Tern\"=>\"Sterna forsteri\",\n\"Dusky Warbler\"=>\"Phylloscopus fuscatus\",\n\"Cirl Bunting\"=>\"Emberiza cirlus\",\n\"Olive-backed Pipit\"=>\"Anthus hodgsoni\",\n\"Sociable Lapwing\"=>\"Vanellus gregarius\",\n\"Spotted Sandpiper\"=>\"Actitis macularius\",\n\"Baird`s Sandpiper\"=>\"Calidris bairdii\",\n\"Rustic Bunting\"=>\"Emberiza rustica\",\n\"Yellow-browed Bunting\"=>\"Emberiza chrysophrys\",\n\"Great Shearwater\"=>\"Puffinus gravis\",\n\"Bonelli`s Eagle\"=>\"Aquila fasciata\",\n\"Calandra Lark\"=>\"Melanocorypha calandra\",\n\"Sardinian Warbler\"=>\"Sylvia melanocephala\",\n\"Ross's Gull\"=>\"Larus roseus\",\n\"Yellow-Breasted Bunting\"=>\"Emberiza aureola\",\n\"Pine Bunting\"=>\"Emberiza leucocephalos\",\n\"Black Guillemot\"=>\"Cepphus grylle\",\n\"Pied-billed Grebe\"=>\"Podilymbus podiceps\",\n\"Soft-plumaged Petrel\"=>\"Pterodroma mollis\",\n\"Bulwer's Petrel\"=>\"Bulweria bulwerii\",\n\"White-Faced Storm-Petrel\"=>\"Pelagodroma marina\",\n\"Pallas’s Fish Eagle\"=>\"Haliaeetus leucoryphus\",\n\"Sandhill Crane\"=>\"Grus canadensis\",\n\"Macqueen’s Bustard\"=>\"Chlamydotis macqueenii\",\n\"White-tailed Lapwing\"=>\"Vanellus leucurus\",\n\"Great Knot\"=>\"Calidris tenuirostris\",\n\"Semipalmated Sandpiper\"=>\"Calidris pusilla\",\n\"Red-necked Stint\"=>\"Calidris ruficollis\",\n\"Slender-billed Curlew\"=>\"Numenius tenuirostris\",\n\"Bridled Tern\"=>\"Onychoprion anaethetus\",\n\"Pallas’s Sandgrouse\"=>\"Syrrhaptes paradoxus\",\n\"European Scops Owl\"=>\"Otus scops\",\n\"Northern Hawk Owl\"=>\"Surnia ulula\",\n\"White-Throated Needletail\"=>\"Hirundapus caudacutus\",\n\"Belted Kingfisher\"=>\"Ceryle alcyon\",\n\"Blue-cheeked Bee-eater\"=>\"Merops persicus\",\n\"Black-headed Wagtail\"=>\"Motacilla feldegg\",\n\"Northern Mockingbird\"=>\"Mimus polyglottos\",\n\"Alpine Accentor\"=>\"Prunella collaris\",\n\"Red-flanked Bluetail\"=>\"Tarsiger cyanurus\",\n\"Isabelline Wheatear\"=>\"Oenanthe isabellina\",\n\"Pied Wheatear\"=>\"Oenanthe pleschanka\",\n\"Eastern Black-eared Wheatear\"=>\"Oenanthe melanoleuca\",\n\"Desert Wheatear\"=>\"Oenanthe deserti\",\n\"White`s Thrush\"=>\"Zoothera aurea\",\n\"Siberian Thrush\"=>\"Zoothera sibirica\",\n\"Eyebrowed Thrush\"=>\"Turdus obscurus\",\n\"Dusky Thrush\"=>\"Turdus eunomus\",\n\"Black-throated Thrush\"=>\"Turdus atrogularis\",\n\"Pallas`s Grasshopper Warbler\"=>\"Locustella certhiola\",\n\"Spectacled Warbler\"=>\"Sylvia conspicillata\",\n\"Two-barred Warbler\"=>\"Phylloscopus plumbeitarsus\",\n\"Eastern Bonelli’s Warbler\"=>\"Phylloscopus orientalis\",\n\"Collared Flycatcher\"=>\"Ficedula albicollis\",\n\"Wallcreeper\"=>\"Tichodroma muraria\",\n\"Turkestan Shrike\"=>\"Lanius phoenicuroides\",\n\"Steppe Grey Shrike\"=>\"Lanius pallidirostris\",\n\"Spanish Sparrow\"=>\"Passer hispaniolensis\",\n\"Red-eyed Vireo\"=>\"Vireo olivaceus\",\n\"Myrtle Warbler\"=>\"Dendroica coronata\",\n\"White-crowned Sparrow\"=>\"Zonotrichia leucophrys\",\n\"White-throated Sparrow\"=>\"Zonotrichia albicollis\",\n\"Cretzschmar`s Bunting\"=>\"Emberiza caesia\",\n\"Chestnut Bunting\"=>\"Emberiza rutila\",\n\"Red-headed Bunting\"=>\"Emberiza bruniceps\",\n\"Black-headed Bunting\"=>\"Emberiza melanocephala\",\n\"Indigo Bunting\"=>\"Passerina cyanea\",\n\"Balearic Woodchat Shrike\"=>\"Lanius senator badius\",\n\"Demoiselle Crane\"=>\"Grus virgo\",\n\"Chough\"=>\"Pyrrhocorax pyrrhocorax\",\n\"Red-Billed Chough\"=>\"Pyrrhocorax graculus\",\n\"Elegant Tern\"=>\"Sterna elegans\",\n\"Chukar\"=>\"Alectoris chukar\",\n\"Yellow-Billed Cuckoo\"=>\"Coccyzus americanus\",\n\"American Sandwich Tern\"=>\"Sterna sandvicensis acuflavida\",\n\"Olive-Tree Warbler\"=>\"Hippolais olivetorum\",\n\"Eastern Olivaceous Warbler\"=>\"Acrocephalus pallidus\",\n\"Indian Cormorant\"=>\"Phalacrocorax fuscicollis\",\n\"Spur-Winged Lapwing\"=>\"Vanellus spinosus\",\n\"Yelkouan Shearwater\"=>\"Puffinus yelkouan\",\n\"Trumpeter Finch\"=>\"Bucanetes githagineus\",\n\"Red Grouse\"=>\"Lagopus scoticus\",\n\"Rock Ptarmigan\"=>\"Lagopus mutus\",\n\"Long-Tailed Cormorant\"=>\"Phalacrocorax africanus\",\n\"Double-crested Cormorant\"=>\"Phalacrocorax auritus\",\n\"Magnificent Frigatebird\"=>\"Fregata magnificens\",\n\"Naumann's Thrush\"=>\"Turdus naumanni\",\n\"Oriental Pratincole\"=>\"Glareola maldivarum\",\n\"Bufflehead\"=>\"Bucephala albeola\",\n\"Snowfinch\"=>\"Montifrigilla nivalis\",\n\"Ural owl\"=>\"Strix uralensis\",\n\"Spanish Wagtail\"=>\"Motacilla iberiae\",\n\"Song Sparrow\"=>\"Melospiza melodia\",\n\"Rock Bunting\"=>\"Emberiza cia\",\n\"Siberian Rubythroat\"=>\"Luscinia calliope\",\n\"Pallid Swift\"=>\"Apus pallidus\",\n\"Eurasian Pygmy Owl\"=>\"Glaucidium passerinum\",\n\"Madeira Little Shearwater\"=>\"Puffinus baroli\",\n\"House Finch\"=>\"Carpodacus mexicanus\",\n\"Green Heron\"=>\"Butorides virescens\",\n\"Solitary Sandpiper\"=>\"Tringa solitaria\",\n\"Heuglin's Gull\"=>\"Larus heuglini\"\n);\n\n\n$result = array();\nforeach ($items as $key=>$value) {\n\tif (strpos(strtolower($key), $q) !== false) {\n\t\tarray_push($result, array(\"id\"=>$value, \"label\"=>$key, \"value\" => strip_tags($key)));\n\t}\n\tif (count($result) > 11)\n\t\tbreak;\n}\n\n// json_encode is available in PHP 5.2 and above, or you can install a PECL module in earlier versions\necho json_encode($result);\n\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/autocomplete/xml.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Autocomplete - XML data parsed once</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.autocomplete.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction log( message ) {\n\t\t\t$( \"<div/>\" ).text( message ).prependTo( \"#log\" );\n\t\t\t$( \"#log\" ).attr( \"scrollTop\", 0 );\n\t\t}\n\n\t\t$.ajax({\n\t\t\turl: \"london.xml\",\n\t\t\tdataType: \"xml\",\n\t\t\tsuccess: function( xmlResponse ) {\n\t\t\t\tvar data = $( \"geoname\", xmlResponse ).map(function() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: $( \"name\", this ).text() + \", \" +\n\t\t\t\t\t\t\t( $.trim( $( \"countryName\", this ).text() ) || \"(unknown country)\" ),\n\t\t\t\t\t\tid: $( \"geonameId\", this ).text()\n\t\t\t\t\t};\n\t\t\t\t}).get();\n\t\t\t\t$( \"#birds\" ).autocomplete({\n\t\t\t\t\tsource: data,\n\t\t\t\t\tminLength: 0,\n\t\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\t\tlog( ui.item ?\n\t\t\t\t\t\t\t\"Selected: \" + ui.item.value + \", geonameId: \" + ui.item.id :\n\t\t\t\t\t\t\t\"Nothing selected, input was \" + this.value );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget\">\n\t<label for=\"birds\">London matches: </label>\n\t<input id=\"birds\" />\n</div>\n\n<div class=\"ui-widget\" style=\"margin-top:2em; font-family:Arial\">\n\tResult:\n\t<div id=\"log\" style=\"height: 200px; width: 300px; overflow: auto;\" class=\"ui-widget-content\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>This demo shows how to retrieve some XML data, parse it using jQuery's methods, then provide it to the autocomplete as the datasource.</p>\n<p>This should also serve as a reference on how to parse a remote XML datasource - the parsing would just happen for each request within the source-callback.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/checkbox.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Checkboxes</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#check\" ).button();\n\t\t$( \"#format\" ).buttonset();\n\t});\n\t</script>\n\t<style>\n\t#format { margin-top: 2em; }\n\t</style>\n</head>\n<body>\n\n<input type=\"checkbox\" id=\"check\" /><label for=\"check\">Toggle</label>\n\n<div id=\"format\">\n\t<input type=\"checkbox\" id=\"check1\" /><label for=\"check1\">B</label>\n\t<input type=\"checkbox\" id=\"check2\" /><label for=\"check2\">I</label>\n\t<input type=\"checkbox\" id=\"check3\" /><label for=\"check3\">U</label>\n</div>\n\n<div class=\"demo-description\">\n<p>A checkbox is styled as a toggle button with the button widget. The label element associated with the checkbox is used for the button text.</p>\n<p>This demo also demonstrates three checkboxes styled as a button set by calling <code>.buttonset()</code> on a common container.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"input[type=submit], a, button\" )\n\t\t\t.button()\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<button>A button element</button>\n\n<input type=\"submit\" value=\"A submit button\">\n\n<a href=\"#\">An anchor</a>\n\n<div class=\"demo-description\">\n<p>Examples of the markup that can be used for buttons: A button element, an input of type submit and an anchor.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"button:first\" ).button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-locked\"\n\t\t\t},\n\t\t\ttext: false\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-locked\"\n\t\t\t}\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-gear\",\n\t\t\t\tsecondary: \"ui-icon-triangle-1-s\"\n\t\t\t}\n\t\t}).next().button({\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-gear\",\n\t\t\t\tsecondary: \"ui-icon-triangle-1-s\"\n\t\t\t},\n\t\t\ttext: false\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<button>Button with icon only</button>\n<button>Button with icon on the left</button>\n<button>Button with two icons</button>\n<button>Button with two icons and no text</button>\n\n<div class=\"demo-description\">\n<p>Some buttons with various combinations of text and icons, here specified via metadata.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"radio.html\">Radios</a></li>\n\t<li><a href=\"checkbox.html\">Checkboxes</a></li>\n\t<li><a href=\"icons.html\">Icons</a></li>\n\t<li><a href=\"toolbar.html\">Toolbar</a></li>\n\t<li><a href=\"splitbutton.html\">Split Button</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/radio.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Radios</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#radio\" ).buttonset();\n\t});\n\t</script>\n</head>\n<body>\n\n<form>\n\t<div id=\"radio\">\n\t\t<input type=\"radio\" id=\"radio1\" name=\"radio\" /><label for=\"radio1\">Choice 1</label>\n\t\t<input type=\"radio\" id=\"radio2\" name=\"radio\" checked=\"checked\" /><label for=\"radio2\">Choice 2</label>\n\t\t<input type=\"radio\" id=\"radio3\" name=\"radio\" /><label for=\"radio3\">Choice 3</label>\n\t</div>\n</form>\n\n<div class=\"demo-description\">\n<p>A set of three radio buttons transformed into a button set.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/splitbutton.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Split button</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\t.ui-menu { position: absolute; width: 100px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#rerun\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\talert( \"Running the last action\" );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.button({\n\t\t\t\t\ttext: false,\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-triangle-1-s\"\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.click(function() {\n\t\t\t\t\tvar menu = $( this ).parent().next().show().position({\n\t\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\t\tat: \"left bottom\",\n\t\t\t\t\t\tof: this\n\t\t\t\t\t});\n\t\t\t\t\t$( document ).one( \"click\", function() {\n\t\t\t\t\t\tmenu.hide();\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t\t.parent()\n\t\t\t\t\t.buttonset()\n\t\t\t\t\t.next()\n\t\t\t\t\t\t.hide()\n\t\t\t\t\t\t.menu();\n\t});\n\t</script>\n</head>\n<body>\n\n<div>\n\t<div>\n\t\t<button id=\"rerun\">Run last action</button>\n\t\t<button id=\"select\">Select an action</button>\n\t</div>\n\t<ul>\n\t\t<li><a href=\"#\">Open...</a></li>\n\t\t<li><a href=\"#\">Save</a></li>\n\t\t<li><a href=\"#\">Delete</a></li>\n\t</ul>\n</div>\n\n<div class=\"demo-description\">\n<p>An example of a split button built with two buttons: A plain button with just text, one with only a primary icon\nand no text. Both are grouped together in a set.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/button/toolbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Button - Toolbar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#toolbar {\n\t\tpadding: 10px 4px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#beginning\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-start\"\n\t\t\t}\n\t\t});\n\t\t$( \"#rewind\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-prev\"\n\t\t\t}\n\t\t});\n\t\t$( \"#play\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t}\n\t\t})\n\t\t.click(function() {\n\t\t\tvar options;\n\t\t\tif ( $( this ).text() === \"play\" ) {\n\t\t\t\toptions = {\n\t\t\t\t\tlabel: \"pause\",\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-pause\"\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\toptions = {\n\t\t\t\t\tlabel: \"play\",\n\t\t\t\t\ticons: {\n\t\t\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\t$( this ).button( \"option\", options );\n\t\t});\n\t\t$( \"#stop\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-stop\"\n\t\t\t}\n\t\t})\n\t\t.click(function() {\n\t\t\t$( \"#play\" ).button( \"option\", {\n\t\t\t\tlabel: \"play\",\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: \"ui-icon-play\"\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t$( \"#forward\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-next\"\n\t\t\t}\n\t\t});\n\t\t$( \"#end\" ).button({\n\t\t\ttext: false,\n\t\t\ticons: {\n\t\t\t\tprimary: \"ui-icon-seek-end\"\n\t\t\t}\n\t\t});\n\t\t$( \"#shuffle\" ).button();\n\t\t$( \"#repeat\" ).buttonset();\n\t});\n\t</script>\n</head>\n<body>\n\n<span id=\"toolbar\" class=\"ui-widget-header ui-corner-all\">\n\t<button id=\"beginning\">go to beginning</button>\n\t<button id=\"rewind\">rewind</button>\n\t<button id=\"play\">play</button>\n\t<button id=\"stop\">stop</button>\n\t<button id=\"forward\">fast forward</button>\n\t<button id=\"end\">go to end</button>\n\n\t<input type=\"checkbox\" id=\"shuffle\" /><label for=\"shuffle\">Shuffle</label>\n\n\t<span id=\"repeat\">\n\t\t<input type=\"radio\" id=\"repeat0\" name=\"repeat\" checked=\"checked\" /><label for=\"repeat0\">No Repeat</label>\n\t\t<input type=\"radio\" id=\"repeat1\" name=\"repeat\" /><label for=\"repeat1\">Once</label>\n\t\t<input type=\"radio\" id=\"repeatall\" name=\"repeat\" /><label for=\"repeatall\">All</label>\n\t</span>\n</span>\n\n<div class=\"demo-description\">\n<p>\n\tA mediaplayer toolbar. Take a look at the underlying markup: A few button elements,\n\tan input of type checkbox for the Shuffle button, and three inputs of type radio for the Repeat options. \n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/alt-field.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Populate alternate field</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\taltField: \"#alternate\",\n\t\t\taltFormat: \"DD, d MM, yy\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\">&nbsp;<input type=\"text\" id=\"alternate\" size=\"30\"/></p>\n\n<div class=\"demo-description\">\n<p>Populate an alternate field with its own date format whenever a date is selected using the <code>altField</code> and <code>altFormat</code> options.  This feature could be used to present a human-friendly date for user selection, while passing a more computer-friendly date through for further processing.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/animation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Animations</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-bounce.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-clip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-drop.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fold.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-slide.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t\t$( \"#anim\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\", \"showAnim\", $( this ).val() );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\" size=\"30\"/></p>\n\n<p>Animations:<br />\n\t<select id=\"anim\">\n\t\t<option value=\"show\">Show (default)</option>\n\t\t<option value=\"slideDown\">Slide down</option>\n\t\t<option value=\"fadeIn\">Fade in</option>\n\t\t<option value=\"blind\">Blind (UI Effect)</option>\n\t\t<option value=\"bounce\">Bounce (UI Effect)</option>\n\t\t<option value=\"clip\">Clip (UI Effect)</option>\n\t\t<option value=\"drop\">Drop (UI Effect)</option>\n\t\t<option value=\"fold\">Fold (UI Effect)</option>\n\t\t<option value=\"slide\">Slide (UI Effect)</option>\n\t\t<option value=\"\">None</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>Use different animations when opening or closing the datepicker.  Choose an animation from the dropdown, then click on the input to see its effect.  You can use one of the three standard animations or any of the UI Effects.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/buttonbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display button bar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowButtonPanel: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Display a button for selecting Today's date and a Done button for closing the calendar with the boolean <code>showButtonPanel</code> option.  Each button is enabled by default when the bar is displayed, but can be turned off with additional options.  Button text is customizable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-formats.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Format date</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t\t$( \"#format\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\", \"dateFormat\", $( this ).val() );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\" size=\"30\"/></p>\n\n<p>Format options:<br />\n\t<select id=\"format\">\n\t\t<option value=\"mm/dd/yy\">Default - mm/dd/yy</option>\n\t\t<option value=\"yy-mm-dd\">ISO 8601 - yy-mm-dd</option>\n\t\t<option value=\"d M, y\">Short - d M, y</option>\n\t\t<option value=\"d MM, y\">Medium - d MM, y</option>\n\t\t<option value=\"DD, d MM, yy\">Full - DD, d MM, yy</option>\n\t\t<option value=\"'day' d 'of' MM 'in the year' yy\">With text - 'day' d 'of' MM 'in the year' yy</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>Display date feedback in a variety of ways.  Choose a date format from the dropdown, then click on the input and select a date to see it in that format.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/date-range.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Select a Date Range</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#from\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: true,\n\t\t\tnumberOfMonths: 3,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#to\" ).datepicker( \"option\", \"minDate\", selectedDate );\n\t\t\t}\n\t\t});\n\t\t$( \"#to\" ).datepicker({\n\t\t\tdefaultDate: \"+1w\",\n\t\t\tchangeMonth: true,\n\t\t\tnumberOfMonths: 3,\n\t\t\tonClose: function( selectedDate ) {\n\t\t\t\t$( \"#from\" ).datepicker( \"option\", \"maxDate\", selectedDate );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<label for=\"from\">From</label>\n<input type=\"text\" id=\"from\" name=\"from\"/>\n<label for=\"to\">to</label>\n<input type=\"text\" id=\"to\" name=\"to\"/>\n\n<div class=\"demo-description\">\n<p>Select the date range to search for.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker is tied to a standard form input field.  Focus on the input (click, or use the tab key) to open an interactive calendar in a small overlay.  Choose a date, click elsewhere on the page (blur the input), or hit the Esc key to close. If a date is chosen, feedback is shown as the input's value.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/dropdown-month-year.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display month &amp; year menus</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tchangeMonth: true,\n\t\t\tchangeYear: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Show month and year dropdowns in place of the static month/year header to facilitate navigation through large timeframes.  Add the boolean <code>changeMonth</code> and <code>changeYear</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/icon-trigger.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Icon trigger</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowOn: \"button\",\n\t\t\tbuttonImage: \"images/calendar.gif\",\n\t\t\tbuttonImageOnly: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Click the icon next to the input field to show the datepicker.  Set the datepicker to open on focus (default behavior), on icon click, or both.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"date-formats.html\">Format date</a></li>\n\t<li><a href=\"min-max.html\">Restrict date range</a></li>\n\t<li><a href=\"localization.html\">Localize calendar</a></li>\n\t<li><a href=\"alt-field.html\">Populate alternate field</a></li>\n\t<li><a href=\"inline.html\">Display inline</a></li>\n\t<li><a href=\"buttonbar.html\">Display button bar</a></li>\n\t<li><a href=\"dropdown-month-year.html\">Display month &amp; year menus</a></li>\t\t\n\t<li><a href=\"other-months.html\">Dates in other months</a></li>\t\t\n\t<li><a href=\"show-week.html\">Show week of the year</a></li>\t\t\n\t<li><a href=\"multiple-calendars.html\">Display multiple months</a></li>\t\t\n\t<li><a href=\"icon-trigger.html\">Icon trigger</a></li>\n\t<li><a href=\"animation.html\">Animations</a></li>\n\t<li><a href=\"date-range.html\">Date Range</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/inline.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display inline</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker();\n\t});\n\t</script>\n</head>\n<body>\n\nDate: <div id=\"datepicker\"></div>\n\n<div class=\"demo-description\">\n<p>Display the datepicker embedded in the page instead of in an overlay.  Simply call .datepicker() on a div instead of an input.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/localization.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Localize calendar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-af.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ar.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ar-DZ.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-az.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-bg.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-bs.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ca.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-cs.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-cy-GB.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-da.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-de.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-el.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-AU.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-GB.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-en-NZ.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-eo.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-es.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-et.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-eu.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fa.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fo.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-fr-CH.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-gl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-he.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hu.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-hy.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-id.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-is.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-it.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ja.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ka.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-kk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-km.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ko.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lb.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lt.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-lv.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-mk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ml.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ms.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-nl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-nl-BE.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-no.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pt.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-pt-BR.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-rm.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ro.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ru.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sl.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sq.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sr-SR.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-sv.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-ta.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-th.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-tj.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-tr.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-uk.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-vi.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-CN.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-HK.js\"></script>\n\t<script src=\"../../ui/i18n/jquery.ui.datepicker-zh-TW.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$.datepicker.setDefaults( $.datepicker.regional[ \"\" ] );\n\t\t$( \"#datepicker\" ).datepicker( $.datepicker.regional[ \"fr\" ] );\n\t\t$( \"#locale\" ).change(function() {\n\t\t\t$( \"#datepicker\" ).datepicker( \"option\",\n\t\t\t\t$.datepicker.regional[ $( this ).val() ] );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"/>&nbsp;\n\t<select id=\"locale\">\n\t\t<option value=\"af\">Afrikaans</option>\n\t\t<option value=\"sq\">Albanian (Gjuha shqipe)</option>\n\t\t<option value=\"ar-DZ\">Algerian Arabic</option>\n\t\t<option value=\"ar\">Arabic (&#8235;(&#1604;&#1593;&#1585;&#1576;&#1610;</option>\n\t\t<option value=\"hy\">Armenian (&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;)</option>\n\t\t<option value=\"az\">Azerbaijani (Az&#601;rbaycan dili)</option>\n\t\t<option value=\"eu\">Basque (Euskara)</option>\n\t\t<option value=\"bs\">Bosnian (Bosanski)</option>\n\t\t<option value=\"bg\">Bulgarian (&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;)</option>\n\t\t<option value=\"ca\">Catalan (Catal&agrave;)</option>\n\t\t<option value=\"zh-HK\">Chinese Hong Kong (&#32321;&#39636;&#20013;&#25991;)</option>\n\t\t<option value=\"zh-CN\">Chinese Simplified (&#31616;&#20307;&#20013;&#25991;)</option>\n\t\t<option value=\"zh-TW\">Chinese Traditional (&#32321;&#39636;&#20013;&#25991;)</option>\n\t\t<option value=\"hr\">Croatian (Hrvatski jezik)</option>\n\t\t<option value=\"cs\">Czech (&#269;e&#353;tina)</option>\n\t\t<option value=\"da\">Danish (Dansk)</option>\n\t\t<option value=\"nl-BE\">Dutch (Belgium)</option>\n\t\t<option value=\"nl\">Dutch (Nederlands)</option>\n\t\t<option value=\"en-AU\">English/Australia</option>\n\t\t<option value=\"en-NZ\">English/New Zealand</option>\n\t\t<option value=\"en-GB\">English/UK</option>\n\t\t<option value=\"eo\">Esperanto</option>\n\t\t<option value=\"et\">Estonian (eesti keel)</option>\n\t\t<option value=\"fo\">Faroese (f&oslash;royskt)</option>\n\t\t<option value=\"fa\">Farsi/Persian (&#8235;(&#1601;&#1575;&#1585;&#1587;&#1740;</option>\n\t\t<option value=\"fi\">Finnish (suomi)</option>\n\t\t<option value=\"fr\" selected=\"selected\">French (Fran&ccedil;ais)</option>\n\t\t<option value=\"fr-CH\">French/Swiss (Fran&ccedil;ais de Suisse)</option>\n\t\t<option value=\"gl\">Galician</option>\n\t\t<option value=\"ge\">Georgian</option>\n\t\t<option value=\"de\">German (Deutsch)</option>\n\t\t<option value=\"el\">Greek (&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;)</option>\n\t\t<option value=\"he\">Hebrew (&#8235;(&#1506;&#1489;&#1512;&#1497;&#1514;</option>\n\t\t<option value=\"hi\">Hindi (&#2361;&#2367;&#2306;&#2342;&#2368;)</option>\n\t\t<option value=\"hu\">Hungarian (Magyar)</option>\n\t\t<option value=\"is\">Icelandic (&Otilde;slenska)</option>\n\t\t<option value=\"id\">Indonesian (Bahasa Indonesia)</option>\n\t\t<option value=\"it\">Italian (Italiano)</option>\n\t\t<option value=\"ja\">Japanese (&#26085;&#26412;&#35486;)</option>\n\t\t<option value=\"kk\">Kazakhstan (Kazakh)</option>\n\t\t<option value=\"km\">Khmer</option>\n\t\t<option value=\"ko\">Korean (&#54620;&#44397;&#50612;)</option>\n\t\t<option value=\"lv\">Latvian (Latvie&ouml;u Valoda)</option>\n\t\t<option value=\"lt\">Lithuanian (lietuviu kalba)</option>\n\t\t<option value=\"lb\">Luxembourgish</option>\n\t\t<option value=\"mk\">Macedonian</option>\n\t\t<option value=\"ml\">Malayalam</option>\n\t\t<option value=\"ms\">Malaysian (Bahasa Malaysia)</option>\n\t\t<option value=\"no\">Norwegian (Norsk)</option>\n\t\t<option value=\"pl\">Polish (Polski)</option>\n\t\t<option value=\"pt\">Portuguese (Portugu&ecirc;s)</option>\n\t\t<option value=\"pt-BR\">Portuguese/Brazilian (Portugu&ecirc;s)</option>\n\t\t<option value=\"rm\">Rhaeto-Romanic (Romansh)</option>\n\t\t<option value=\"ro\">Romanian (Rom&acirc;n&#259;)</option>\n\t\t<option value=\"ru\">Russian (&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;)</option>\n\t\t<option value=\"sr\">Serbian (&#1089;&#1088;&#1087;&#1089;&#1082;&#1080; &#1112;&#1077;&#1079;&#1080;&#1082;)</option>\n\t\t<option value=\"sr-SR\">Serbian (srpski jezik)</option>\n\t\t<option value=\"sk\">Slovak (Slovencina)</option>\n\t\t<option value=\"sl\">Slovenian (Slovenski Jezik)</option>\n\t\t<option value=\"es\">Spanish (Espa&ntilde;ol)</option>\n\t\t<option value=\"sv\">Swedish (Svenska)</option>\n\t\t<option value=\"ta\">Tamil (&#2980;&#2990;&#3007;&#2996;&#3021;)</option>\n\t\t<option value=\"th\">Thai (&#3616;&#3634;&#3625;&#3634;&#3652;&#3607;&#3618;)</option>\n\t\t<option value=\"tj\">Tajikistan</option>\n\t\t<option value=\"tr\">Turkish (T&uuml;rk&ccedil;e)</option>\n\t\t<option value=\"uk\">Ukranian (&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072;)</option>\n\t\t<option value=\"vi\">Vietnamese (Ti&#7871;ng Vi&#7879;t)</option>\n\t\t<option value=\"cy-GB\">Welsh/UK (Cymraeg)</option>\n\t</select></p>\n\n<div class=\"demo-description\">\n<p>Localize the datepicker calendar language and format (English / Western formatting is the default).  The datepicker includes built-in support for languages that read right-to-left, such as Arabic and Hebrew.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/min-max.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Restrict date range</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({ minDate: -20, maxDate: \"+1M +10D\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Restrict the range of selectable dates with the <code>minDate</code> and <code>maxDate</code> options.  Set the beginning and end dates as actual dates (new Date(2009, 1 - 1, 26)), as a numeric offset from today (-20), or as a string of periods and units ('+1M +10D').  For the last, use 'D' for days, 'W' for weeks, 'M' for months, or 'Y' for years.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/multiple-calendars.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Display multiple months</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tnumberOfMonths: 3,\n\t\t\tshowButtonPanel: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>Set the <code>numberOfMonths</code> option to an integer of 2 or more to show multiple months in a single datepicker.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/other-months.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Dates in other months</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowOtherMonths: true,\n\t\t\tselectOtherMonths: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker can show dates that come from other than the main month\n\tbeing displayed. These other dates can also be made selectable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/datepicker/show-week.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Datepicker - Show week of the year</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.datepicker.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tshowWeek: true,\n\t\t\tfirstDay: 1\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>Date: <input type=\"text\" id=\"datepicker\"></p>\n\n<div class=\"demo-description\">\n<p>The datepicker can show the week of the year. The default calculation follows\n\tthe ISO 8601 definition: the week starts on Monday, the first week of the year\n\tcontains the first Thursday of the year. This means that some days from one\n\tyear may be placed into weeks 'belonging' to another year.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/demos.css",
    "content": "body {\n\tfont-size: 62.5%;\n\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\";\n}\n\ntable {\n\tfont-size: 1em;\n}\n\n.demo-description {\n\tclear: both;\n\tpadding: 12px;\n\tfont-size: 1.3em;\n\tline-height: 1.4em;\n}\n\n.ui-draggable, .ui-droppable {\n\tbackground-position: top;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/animated.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Animation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t// increase the default animation speed to exaggerate the effect\n\t$.fx.speeds._default = 1000;\n\t$(function() {\n\t\t$( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\tshow: \"blind\",\n\t\t\thide: \"explode\"\n\t\t});\n\n\t\t$( \"#opener\" ).click(function() {\n\t\t\t$( \"#dialog\" ).dialog( \"open\" );\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Basic dialog\">\n\t<p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>\n</div>\n\n<button id=\"opener\">Open Dialog</button>\n\n<div class=\"demo-description\">\n<p>Dialogs may be animated by specifying an effect for the show and/or hide properties.  You must include the individual effects file for any effects you would like to use.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog\" ).dialog();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Basic dialog\">\n\t<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>\n</div>\n\n<div class=\"demo-description\">\n<p>The basic dialog window is an overlay positioned within the viewport and is protected from page content (like select elements) shining through with an iframe.  It has a title bar and a content area, and can be moved, resized and closed with the 'x' icon by default.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"animated.html\">Animated dialog</a></li>\n\t<li><a href=\"modal.html\">Modal dialog</a></li>\n\t<li><a href=\"modal-message.html\">Modal message</a></li>\n\t<li><a href=\"modal-confirmation.html\">Modal confirmation</a></li>\n\t<li><a href=\"modal-form.html\">Modal form</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-confirmation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal confirmation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-confirm\" ).dialog({\n\t\t\tresizable: false,\n\t\t\theight:140,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\t\"Delete all items\": function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-confirm\" title=\"Empty the recycle bin?\">\n\t<p><span class=\"ui-icon ui-icon-alert\" style=\"float:left; margin:0 7px 20px 0;\"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>Confirm an action that may be destructive or important.  Set the <code>modal</code> option to true, and specify primary and secondary user actions with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-form.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal form</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\tbody { font-size: 62.5%; }\n\t\tlabel, input { display:block; }\n\t\tinput.text { margin-bottom:12px; width:95%; padding: .4em; }\n\t\tfieldset { padding:0; border:0; margin-top:25px; }\n\t\th1 { font-size: 1.2em; margin: .6em 0; }\n\t\tdiv#users-contain { width: 350px; margin: 20px 0; }\n\t\tdiv#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }\n\t\tdiv#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }\n\t\t.ui-dialog .ui-state-error { padding: .3em; }\n\t\t.validateTips { border: 1px solid transparent; padding: 0.3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar name = $( \"#name\" ),\n\t\t\temail = $( \"#email\" ),\n\t\t\tpassword = $( \"#password\" ),\n\t\t\tallFields = $( [] ).add( name ).add( email ).add( password ),\n\t\t\ttips = $( \".validateTips\" );\n\n\t\tfunction updateTips( t ) {\n\t\t\ttips\n\t\t\t\t.text( t )\n\t\t\t\t.addClass( \"ui-state-highlight\" );\n\t\t\tsetTimeout(function() {\n\t\t\t\ttips.removeClass( \"ui-state-highlight\", 1500 );\n\t\t\t}, 500 );\n\t\t}\n\n\t\tfunction checkLength( o, n, min, max ) {\n\t\t\tif ( o.val().length > max || o.val().length < min ) {\n\t\t\t\to.addClass( \"ui-state-error\" );\n\t\t\t\tupdateTips( \"Length of \" + n + \" must be between \" +\n\t\t\t\t\tmin + \" and \" + max + \".\" );\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkRegexp( o, regexp, n ) {\n\t\t\tif ( !( regexp.test( o.val() ) ) ) {\n\t\t\t\to.addClass( \"ui-state-error\" );\n\t\t\t\tupdateTips( n );\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t$( \"#dialog-form\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\theight: 300,\n\t\t\twidth: 350,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\t\"Create an account\": function() {\n\t\t\t\t\tvar bValid = true;\n\t\t\t\t\tallFields.removeClass( \"ui-state-error\" );\n\n\t\t\t\t\tbValid = bValid && checkLength( name, \"username\", 3, 16 );\n\t\t\t\t\tbValid = bValid && checkLength( email, \"email\", 6, 80 );\n\t\t\t\t\tbValid = bValid && checkLength( password, \"password\", 5, 16 );\n\n\t\t\t\t\tbValid = bValid && checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, \"Username may consist of a-z, 0-9, underscores, begin with a letter.\" );\n\t\t\t\t\t// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/\n\t\t\t\t\tbValid = bValid && checkRegexp( email, /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i, \"eg. ui@jquery.com\" );\n\t\t\t\t\tbValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, \"Password field only allow : a-z 0-9\" );\n\n\t\t\t\t\tif ( bValid ) {\n\t\t\t\t\t\t$( \"#users tbody\" ).append( \"<tr>\" +\n\t\t\t\t\t\t\t\"<td>\" + name.val() + \"</td>\" + \n\t\t\t\t\t\t\t\"<td>\" + email.val() + \"</td>\" + \n\t\t\t\t\t\t\t\"<td>\" + password.val() + \"</td>\" +\n\t\t\t\t\t\t\"</tr>\" ); \n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tallFields.val( \"\" ).removeClass( \"ui-state-error\" );\n\t\t\t}\n\t\t});\n\n\t\t$( \"#create-user\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\t$( \"#dialog-form\" ).dialog( \"open\" );\n\t\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-form\" title=\"Create new user\">\n\t<p class=\"validateTips\">All form fields are required.</p>\n\n\t<form>\n\t<fieldset>\n\t\t<label for=\"name\">Name</label>\n\t\t<input type=\"text\" name=\"name\" id=\"name\" class=\"text ui-widget-content ui-corner-all\" />\n\t\t<label for=\"email\">Email</label>\n\t\t<input type=\"text\" name=\"email\" id=\"email\" value=\"\" class=\"text ui-widget-content ui-corner-all\" />\n\t\t<label for=\"password\">Password</label>\n\t\t<input type=\"password\" name=\"password\" id=\"password\" value=\"\" class=\"text ui-widget-content ui-corner-all\" />\n\t</fieldset>\n\t</form>\n</div>\n\n\n<div id=\"users-contain\" class=\"ui-widget\">\n\t<h1>Existing Users:</h1>\n\t<table id=\"users\" class=\"ui-widget ui-widget-content\">\n\t\t<thead>\n\t\t\t<tr class=\"ui-widget-header \">\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Email</th>\n\t\t\t\t<th>Password</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td>John Doe</td>\n\t\t\t\t<td>john.doe@example.com</td>\n\t\t\t\t<td>johndoe1</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n<button id=\"create-user\">Create new user</button>\n\n<div class=\"demo-description\">\n<p>Use a modal dialog to require that the user enter data during a multi-step process.  Embed form markup in the content area, set the <code>modal</code> option to true, and specify primary and secondary user actions with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal-message.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Modal message</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-message\" ).dialog({\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\tOk: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-message\" title=\"Download complete\">\n\t<p>\n\t\t<span class=\"ui-icon ui-icon-circle-check\" style=\"float:left; margin:0 7px 50px 0;\"></span>\n\t\tYour files have downloaded successfully into the My Downloads folder.\n\t</p>\n\t<p>\n\t\tCurrently using <b>36% of your storage space</b>.\n\t</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>Use a modal dialog to explicitly acknowledge information or an action before continuing their work.  Set the <code>modal</code> option to true, and specify a primary action (Ok) with the <code>buttons</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/dialog/modal.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Dialog - Basic modal</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.bgiframe-2.1.2.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#dialog-modal\" ).dialog({\n\t\t\theight: 140,\n\t\t\tmodal: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog-modal\" title=\"Basic modal dialog\">\n\t<p>Adding the modal overlay screen makes the dialog look more prominent because it dims out the page content.</p>\n</div>\n\n<p>Sed vel diam id libero <a href=\"http://example.com\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>\n\n<div class=\"demo-description\">\n<p>A modal dialog prevents the user from interacting with the rest of the page until it is closed.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/constrain-movement.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Constrain movement</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.draggable { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable, #draggable2 { margin-bottom:20px; }\n\t#draggable { cursor: n-resize; }\n\t#draggable2 { cursor: e-resize; }\n\t#containment-wrapper { width: 95%; height:150px; border:2px solid #ccc; padding: 10px; }\n\th3 { clear: left; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ axis: \"y\" });\n\t\t$( \"#draggable2\" ).draggable({ axis: \"x\" });\n\n\t\t$( \"#draggable3\" ).draggable({ containment: \"#containment-wrapper\", scroll: false });\n\t\t$( \"#draggable5\" ).draggable({ containment: \"parent\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<h3>Constrain movement along an axis:</h3>\n\n<div id=\"draggable\" class=\"draggable ui-widget-content\">\n\t<p>I can be dragged only vertically</p>\n</div>\n\n<div id=\"draggable2\" class=\"draggable ui-widget-content\">\n\t<p>I can be dragged only horizontally</p>\n</div>\n\n<h3>Or to within another DOM element:</h3>\n<div id=\"containment-wrapper\">\n\t<div id=\"draggable3\" class=\"draggable ui-widget-content\">\n\t\t<p>I'm contained within the box</p>\n\t</div>\n\n\t<div class=\"draggable ui-widget-content\">\n\t\t<p id=\"draggable5\" class=\"ui-widget-header\">I'm contained within my parent</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Constrain the movement of each draggable by defining the boundaries of the draggable area. Set the <code>axis</code> option to limit the draggable's path to the x- or y-axis, or use the <code>containment</code> option to specify a parent DOM element or a jQuery selector, like 'document.'</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/cursor-style.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Cursor style</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ cursor: \"move\", cursorAt: { top: 56, left: 56 } });\n\t\t$( \"#draggable2\" ).draggable({ cursor: \"crosshair\", cursorAt: { top: -5, left: -5 } });\n\t\t$( \"#draggable3\" ).draggable({ cursorAt: { bottom: 0 } });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>I will always stick to the center (relative to the mouse)</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>My cursor is at left -5 and top -5</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>My cursor position is only controlled for the 'bottom' value</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Position the cursor while dragging the object. By default the cursor appears in the center of the dragged object; use the <code>cursorAt</code> option to specify another location relative to the draggable (specify a pixel value from the top, right, bottom, and/or left).  Customize the cursor's appearance by supplying the <code>cursor</code> option with a valid CSS cursor value: default, move, pointer, crosshair, etc.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 150px; height: 150px; padding: 0.5em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me around</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable draggable functionality on any DOM element. Move the draggable object by clicking on it with the mouse and dragging it anywhere within the viewport.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 120px; height: 120px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ distance: 20 });\n\t\t$( \"#draggable2\" ).draggable({ delay: 1000 });\n\t\t$( \".ui-draggable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Only if you drag me by 20 pixels, the dragging will start</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Regardless of the distance, you have to drag and wait for 1000ms before dragging starts</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Delay the start of dragging for a number of milliseconds with the <code>delay</code> option; prevent dragging until the cursor is held down and dragged a specifed number of pixels with the <code>distance</code> option. </p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/events.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Events</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 16em; padding: 0 1em; }\n\t#draggable ul li { margin: 1em 0; padding: 0.5em 0; } * html #draggable ul li { height: 1%; }\n\t#draggable ul li span.ui-icon { float: left; }\n\t#draggable ul li span.count { font-weight: bold; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar $start_counter = $( \"#event-start\" ),\n\t\t\t$drag_counter = $( \"#event-drag\" ),\n\t\t\t$stop_counter = $( \"#event-stop\" ),\n\t\t\tcounts = [ 0, 0, 0 ];\n\n\t\t$( \"#draggable\" ).draggable({\n\t\t\tstart: function() {\n\t\t\t\tcounts[ 0 ]++;\n\t\t\t\tupdateCounterStatus( $start_counter, counts[ 0 ] );\n\t\t\t},\n\t\t\tdrag: function() {\n\t\t\t\tcounts[ 1 ]++;\n\t\t\t\tupdateCounterStatus( $drag_counter, counts[ 1 ] );\n\t\t\t},\n\t\t\tstop: function() {\n\t\t\t\tcounts[ 2 ]++;\n\t\t\t\tupdateCounterStatus( $stop_counter, counts[ 2 ] );\n\t\t\t}\n\t\t});\n\n\t\tfunction updateCounterStatus( $event_counter, new_count ) {\n\t\t\t// first update the status visually...\n\t\t\tif ( !$event_counter.hasClass( \"ui-state-hover\" ) ) {\n\t\t\t\t$event_counter.addClass( \"ui-state-hover\" )\n\t\t\t\t\t.siblings().removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t\t// ...then update the numbers\n\t\t\t$( \"span.count\", $event_counter ).text( new_count );\n\t\t}\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget ui-widget-content\">\n\n\t<p>Drag me to trigger the chain of events.</p>\n\n\t<ul class=\"ui-helper-reset\">\n\t\t<li id=\"event-start\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-play\"></span>\"start\" invoked <span class=\"count\">0</span>x</li>\n\t\t<li id=\"event-drag\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-arrow-4\"></span>\"drag\" invoked <span class=\"count\">0</span>x</li>\n\t\t<li id=\"event-stop\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-stop\"></span>\"stop\" invoked <span class=\"count\">0</span>x</li>\n\t</ul>\n</div>\n\n<div class=\"demo-description\">\n<p>Layer functionality onto the draggable using the <code>start</code>, <code>drag</code>, and <code>stop</code> events.  Start is fired at the start of the drag; drag during the drag; and stop when dragging stops.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/handle.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Handles</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable p { cursor: move; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ handle: \"p\" });\n\t\t$( \"#draggable2\" ).draggable({ cancel: \"p.ui-widget-header\" });\n\t\t$( \"div, p\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p class=\"ui-widget-header\">I can be dragged only by this handle</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>You can drag me around&hellip;</p>\n\t<p class=\"ui-widget-header\">&hellip;but you can't drag me by this handle.</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Allow dragging only when the cursor is over a specific part of the draggable.  Use the <code>handle</code> option to specify the jQuery selector of an element (or group of elements) used to drag the object.</p>\n<p>Or prevent dragging when the cursor is over a specific element (or group of elements) within the draggable.  Use the <code>cancel</code> option to specify a jQuery selector over which to \"cancel\" draggable functionality.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"events.html\">Events</a></li>\n\t<li><a href=\"constrain-movement.html\">Constrain movement</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"snap-to.html\">Snap to element or grid</a></li>\n\t<li><a href=\"scroll.html\">Auto-scroll</a></li>\n\t<li><a href=\"revert.html\">Revert position</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"handle.html\">Drag handle</a></li>\n\t<li><a href=\"cursor-style.html\">Cursor style</a></li>\n\t<li><a href=\"sortable.html\">Draggable + Sortable</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/revert.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Revert position</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ revert: true });\n\t\t$( \"#draggable2\" ).draggable({ revert: true, helper: \"clone\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Revert the original</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Revert the helper</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Return the draggable (or it's helper) to its original location when dragging stops with the boolean <code>revert</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/scroll.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Auto-scroll</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ scroll: true });\n\t\t$( \"#draggable2\" ).draggable({ scroll: true, scrollSensitivity: 100 });\n\t\t$( \"#draggable3\" ).draggable({ scroll: true, scrollSpeed: 100 });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Scroll set to true, default settings</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>scrollSensitivity set to 100</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>scrollSpeed set to 100</p>\n</div>\n\n<div style='height: 5000px; width: 1px;'></div>\n\n<div class=\"demo-description\">\n<p>Automatically scroll the document when the draggable is moved beyond the viewport. Set the <code>scroll</code> option to true to enable auto-scrolling, and fine-tune when scrolling is triggered and its speed with the <code>scrollSensitivity</code> and <code>scrollSpeed</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/snap-to.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Snap to element or grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.draggable { width: 90px; height: 80px; padding: 5px; float: left; margin: 0 10px 10px 0; font-size: .9em; }\n\t.ui-widget-header p, .ui-widget-content p { margin: 0; }\n\t#snaptarget { height: 140px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ snap: true });\n\t\t$( \"#draggable2\" ).draggable({ snap: \".ui-widget-header\" });\n\t\t$( \"#draggable3\" ).draggable({ snap: \".ui-widget-header\", snapMode: \"outer\" });\n\t\t$( \"#draggable4\" ).draggable({ grid: [ 20,20 ] });\n\t\t$( \"#draggable5\" ).draggable({ grid: [ 80, 80 ] });\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"snaptarget\" class=\"ui-widget-header\">\n\t<p>I'm a snap target</p>\n</div>\n\n<br style=\"clear:both\" />\n\n<div id=\"draggable\" class=\"draggable ui-widget-content\">\n\t<p>Default (snap: true), snaps to all other draggable elements</p>\n</div>\n\n<div id=\"draggable2\" class=\"draggable ui-widget-content\">\n\t<p>I only snap to the big box</p>\n</div>\n\n<div id=\"draggable3\" class=\"draggable ui-widget-content\">\n\t<p>I only snap to the outer edges of the big box</p>\n</div>\n\n<div id=\"draggable4\" class=\"draggable ui-widget-content\">\n\t<p>I snap to a 20 x 20 grid</p>\n</div>\n\n<div id=\"draggable5\" class=\"draggable ui-widget-content\">\n\t<p>I snap to a 80 x 80 grid</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Snap the draggable to the inner or outer boundaries of a DOM element.  Use the <code>snap</code>, <code>snapMode</code> (inner, outer, both), and <code>snapTolerance</code> (distance in pixels the draggable must be from the element when snapping is invoked) options. </p>\n<p>Or snap the draggable to a grid.  Set the dimensions of grid cells (height and width in pixels) with the <code>grid</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable + Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tul { list-style-type: none; margin: 0; padding: 0; margin-bottom: 10px; }\n\tli { margin: 5px; padding: 5px; width: 150px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable({\n\t\t\trevert: true\n\t\t});\n\t\t$( \"#draggable\" ).draggable({\n\t\t\tconnectToSortable: \"#sortable\",\n\t\t\thelper: \"clone\",\n\t\t\trevert: \"invalid\"\n\t\t});\n\t\t$( \"ul, li\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul>\n\t<li id=\"draggable\" class=\"ui-state-highlight\">Drag me down</li>\n</ul>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>Draggables are built to interact seamlessly with <a href=\"http://jqueryui.com/sortable\">sortables</a>.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/draggable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Draggable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2, #draggable3, #set div { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 0 10px 10px 0; }\n\t#draggable, #draggable2, #draggable3 { margin-bottom:20px; }\n\t#set { clear:both; float:left; width: 368px; height: 120px; }\n\tp { clear:both; margin:0; padding:1em 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ helper: \"original\" });\n\t\t$( \"#draggable2\" ).draggable({ opacity: 0.7, helper: \"clone\" });\n\t\t$( \"#draggable3\" ).draggable({\n\t\t\tcursor: \"move\",\n\t\t\tcursorAt: { top: -12, left: -20 },\n\t\t\thelper: function( event ) {\n\t\t\t\treturn $( \"<div class='ui-widget-header'>I'm a custom helper</div>\" );\n\t\t\t}\n\t\t});\n\t\t$( \"#set div\" ).draggable({ stack: \"#set div\" });\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">With helpers:</h3>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Original</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Semi-transparent clone</p>\n</div>\n\n<div id=\"draggable3\" class=\"ui-widget-content\">\n\t<p>Custom helper (in combination with cursorAt)</p>\n</div>\n\n<h3 class=\"docs\">Stacked:</h3>\n<div id=\"set\">\n\t<div class=\"ui-widget-content\">\n\t\t<p>We are draggables..</p>\n\t</div>\n\n\t<div class=\"ui-widget-content\">\n\t\t<p>..whose z-indexes are controlled automatically..</p>\n\t</div>\n\n\t<div class=\"ui-widget-content\">\n\t\t<p>..with the stack option.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Provide feedback to users as they drag an object in the form of a helper. The <code>helper</code> option accepts the values 'original' (the draggable object moves with the cursor), 'clone' (a duplicate of the draggable moves with the cursor), or a function that returns a DOM element (that element is shown near the cursor during drag). Control the helper's transparency with the <code>opacity</code> option.</p>\n<p>To clarify which draggable is in play, bring the draggable in motion to front. Use the <code>zIndex</code> option to set a higher z-index for the helper, if in play, or use the <code>stack</code> option to ensure that the last item dragged will appear on top of others in the same group on drag stop.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/accepted-elements.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Accept</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t#draggable, #draggable-nonvalid { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable, #draggable-nonvalid\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\taccept: \"#draggable\",\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable-nonvalid\" class=\"ui-widget-content\">\n\t<p>I'm draggable but can't be dropped</p>\n</div>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>accept: '#draggable'</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Specify using the <code>accept</code> option which element (or group of elements) is accepted by the target droppable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable any DOM element to be droppable, a target for draggable elements.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"accepted-elements.html\">Accepted elements</a></li>\n\t<li><a href=\"propagation.html\">Prevent propagation</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"revert.html\">Revert draggable position</a></li>\n\t<li><a href=\"shopping-cart.html\">Shopping Cart</a></li>\n\t<li><a href=\"photo-manager.html\">Simple photo manager</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/photo-manager.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Simple photo manager</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#gallery { float: left; width: 65%; min-height: 12em; } * html #gallery { height: 12em; } /* IE6 */\n\t.gallery.custom-state-active { background: #eee; }\n\t.gallery li { float: left; width: 96px; padding: 0.4em; margin: 0 0.4em 0.4em 0; text-align: center; }\n\t.gallery li h5 { margin: 0 0 0.4em; cursor: move; }\n\t.gallery li a { float: right; }\n\t.gallery li a.ui-icon-zoomin { float: left; }\n\t.gallery li img { width: 100%; cursor: move; }\n\n\t#trash { float: right; width: 32%; min-height: 18em; padding: 1%;} * html #trash { height: 18em; } /* IE6 */\n\t#trash h4 { line-height: 16px; margin: 0 0 0.4em; }\n\t#trash h4 .ui-icon { float: left; }\n\t#trash .gallery h5 { display: none; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// there's the gallery and the trash\n\t\tvar $gallery = $( \"#gallery\" ),\n\t\t\t$trash = $( \"#trash\" );\n\n\t\t// let the gallery items be draggable\n\t\t$( \"li\", $gallery ).draggable({\n\t\t\tcancel: \"a.ui-icon\", // clicking an icon won't initiate dragging\n\t\t\trevert: \"invalid\", // when not dropped, the item will revert back to its initial position\n\t\t\tcontainment: \"document\",\n\t\t\thelper: \"clone\",\n\t\t\tcursor: \"move\"\n\t\t});\n\n\t\t// let the trash be droppable, accepting the gallery items\n\t\t$trash.droppable({\n\t\t\taccept: \"#gallery > li\",\n\t\t\tactiveClass: \"ui-state-highlight\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\tdeleteImage( ui.draggable );\n\t\t\t}\n\t\t});\n\n\t\t// let the gallery be droppable as well, accepting items from the trash\n\t\t$gallery.droppable({\n\t\t\taccept: \"#trash li\",\n\t\t\tactiveClass: \"custom-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\trecycleImage( ui.draggable );\n\t\t\t}\n\t\t});\n\n\t\t// image deletion function\n\t\tvar recycle_icon = \"<a href='link/to/recycle/script/when/we/have/js/off' title='Recycle this image' class='ui-icon ui-icon-refresh'>Recycle image</a>\";\n\t\tfunction deleteImage( $item ) {\n\t\t\t$item.fadeOut(function() {\n\t\t\t\tvar $list = $( \"ul\", $trash ).length ?\n\t\t\t\t\t$( \"ul\", $trash ) :\n\t\t\t\t\t$( \"<ul class='gallery ui-helper-reset'/>\" ).appendTo( $trash );\n\n\t\t\t\t$item.find( \"a.ui-icon-trash\" ).remove();\n\t\t\t\t$item.append( recycle_icon ).appendTo( $list ).fadeIn(function() {\n\t\t\t\t\t$item\n\t\t\t\t\t\t.animate({ width: \"48px\" })\n\t\t\t\t\t\t.find( \"img\" )\n\t\t\t\t\t\t\t.animate({ height: \"36px\" });\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t// image recycle function\n\t\tvar trash_icon = \"<a href='link/to/trash/script/when/we/have/js/off' title='Delete this image' class='ui-icon ui-icon-trash'>Delete image</a>\";\n\t\tfunction recycleImage( $item ) {\n\t\t\t$item.fadeOut(function() {\n\t\t\t\t$item\n\t\t\t\t\t.find( \"a.ui-icon-refresh\" )\n\t\t\t\t\t\t.remove()\n\t\t\t\t\t.end()\n\t\t\t\t\t.css( \"width\", \"96px\")\n\t\t\t\t\t.append( trash_icon )\n\t\t\t\t\t.find( \"img\" )\n\t\t\t\t\t\t.css( \"height\", \"72px\" )\n\t\t\t\t\t.end()\n\t\t\t\t\t.appendTo( $gallery )\n\t\t\t\t\t.fadeIn();\n\t\t\t});\n\t\t}\n\n\t\t// image preview function, demonstrating the ui.dialog used as a modal window\n\t\tfunction viewLargerImage( $link ) {\n\t\t\tvar src = $link.attr( \"href\" ),\n\t\t\t\ttitle = $link.siblings( \"img\" ).attr( \"alt\" ),\n\t\t\t\t$modal = $( \"img[src$='\" + src + \"']\" );\n\n\t\t\tif ( $modal.length ) {\n\t\t\t\t$modal.dialog( \"open\" );\n\t\t\t} else {\n\t\t\t\tvar img = $( \"<img alt='\" + title + \"' width='384' height='288' style='display: none; padding: 8px;' />\" )\n\t\t\t\t\t.attr( \"src\", src ).appendTo( \"body\" );\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\timg.dialog({\n\t\t\t\t\t\ttitle: title,\n\t\t\t\t\t\twidth: 400,\n\t\t\t\t\t\tmodal: true\n\t\t\t\t\t});\n\t\t\t\t}, 1 );\n\t\t\t}\n\t\t}\n\n\t\t// resolve the icons behavior with event delegation\n\t\t$( \"ul.gallery > li\" ).click(function( event ) {\n\t\t\tvar $item = $( this ),\n\t\t\t\t$target = $( event.target );\n\n\t\t\tif ( $target.is( \"a.ui-icon-trash\" ) ) {\n\t\t\t\tdeleteImage( $item );\n\t\t\t} else if ( $target.is( \"a.ui-icon-zoomin\" ) ) {\n\t\t\t\tviewLargerImage( $target );\n\t\t\t} else if ( $target.is( \"a.ui-icon-refresh\" ) ) {\n\t\t\t\trecycleImage( $item );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget ui-helper-clearfix\">\n\n<ul id=\"gallery\" class=\"gallery ui-helper-reset ui-helper-clearfix\">\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras</h5>\n\t\t<img src=\"images/high_tatras_min.jpg\" alt=\"The peaks of High Tatras\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 2</h5>\n\t\t<img src=\"images/high_tatras2_min.jpg\" alt=\"The chalet at the Green mountain lake\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras2.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 3</h5>\n\t\t<img src=\"images/high_tatras3_min.jpg\" alt=\"Planning the ascent\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras3.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n\t<li class=\"ui-widget-content ui-corner-tr\">\n\t\t<h5 class=\"ui-widget-header\">High Tatras 4</h5>\n\t\t<img src=\"images/high_tatras4_min.jpg\" alt=\"On top of Kozi kopka\" width=\"96\" height=\"72\" />\n\t\t<a href=\"images/high_tatras4.jpg\" title=\"View larger image\" class=\"ui-icon ui-icon-zoomin\">View larger</a>\n\t\t<a href=\"link/to/trash/script/when/we/have/js/off\" title=\"Delete this image\" class=\"ui-icon ui-icon-trash\">Delete image</a>\n\t</li>\n</ul>\n\n<div id=\"trash\" class=\"ui-widget-content ui-state-default\">\n\t<h4 class=\"ui-widget-header\"><span class=\"ui-icon ui-icon-trash\">Trash</span> Trash</h4>\n</div>\n\n</div>\n\n<div class=\"demo-description\">\n<p>You can delete an image either by dragging it to the Trash or by clicking the trash icon.</p>\n<p>You can \"recycle\" an image by dragging it back to the gallery or by clicking the recycle icon.</p>\n<p>You can view larger image by clicking the zoom icon. jQuery UI dialog widget is used for the modal window.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/propagation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Prevent propagation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable { width: 100px; height: 40px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable, #droppable2 { width: 230px; height: 120px; padding: 0.5em; float: left; margin: 10px; }\n\t#droppable-inner, #droppable2-inner { width: 170px; height: 60px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\n\t\t$( \"#droppable, #droppable-inner\" ).droppable({\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"> p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\t$( \"#droppable2, #droppable2-inner\" ).droppable({\n\t\t\tgreedy: true,\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"> p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Outer droppable</p>\n\t<div id=\"droppable-inner\" class=\"ui-widget-header\">\n\t\t<p>Inner droppable (not greedy)</p>\n\t</div>\n</div>\n\n<div id=\"droppable2\" class=\"ui-widget-header\">\n\t<p>Outer droppable</p>\n\t<div id=\"droppable2-inner\" class=\"ui-widget-header\">\n\t\t<p>Inner droppable (greedy)</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>When working with nested droppables &#8212; for example, you may have an editable directory structure displayed as a tree, with folder and document nodes &#8212; the <code>greedy</code> option set to true prevents event propagation when a draggable is dropped on a child node (droppable).</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/revert.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Revert draggable position</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable({ revert: \"valid\" });\n\t\t$( \"#draggable2\" ).draggable({ revert: \"invalid\" });\n\n\t\t$( \"#droppable\" ).droppable({\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>I revert when I'm dropped</p>\n</div>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>I revert when I'm not dropped</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop me here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Return the draggable (or it's helper) to its original location when dragging stops with the boolean <code>revert</code> option set on the draggable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/shopping-cart.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Shopping Cart Demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.accordion.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\th1 { padding: .2em; margin: 0; }\n\t#products { float:left; width: 500px; margin-right: 2em; }\n\t#cart { width: 200px; float: left; margin-top: 1em; }\n\t/* style the list to maximize the droppable hitarea */\n\t#cart ol { margin: 0; padding: 1em 0 1em 3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#catalog\" ).accordion();\n\t\t$( \"#catalog li\" ).draggable({\n\t\t\tappendTo: \"body\",\n\t\t\thelper: \"clone\"\n\t\t});\n\t\t$( \"#cart ol\" ).droppable({\n\t\t\tactiveClass: \"ui-state-default\",\n\t\t\thoverClass: \"ui-state-hover\",\n\t\t\taccept: \":not(.ui-sortable-helper)\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this ).find( \".placeholder\" ).remove();\n\t\t\t\t$( \"<li></li>\" ).text( ui.draggable.text() ).appendTo( this );\n\t\t\t}\n\t\t}).sortable({\n\t\t\titems: \"li:not(.placeholder)\",\n\t\t\tsort: function() {\n\t\t\t\t// gets added unintentionally by droppable interacting with sortable\n\t\t\t\t// using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options\n\t\t\t\t$( this ).removeClass( \"ui-state-default\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"products\">\n\t<h1 class=\"ui-widget-header\">Products</h1>\n\t<div id=\"catalog\">\n\t\t<h2><a href=\"#\">T-Shirts</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>Lolcat Shirt</li>\n\t\t\t\t<li>Cheezeburger Shirt</li>\n\t\t\t\t<li>Buckit Shirt</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h2><a href=\"#\">Bags</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>Zebra Striped</li>\n\t\t\t\t<li>Black Leather</li>\n\t\t\t\t<li>Alligator Leather</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<h2><a href=\"#\">Gadgets</a></h2>\n\t\t<div>\n\t\t\t<ul>\n\t\t\t\t<li>iPhone</li>\n\t\t\t\t<li>iPod</li>\n\t\t\t\t<li>iPad</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</div>\n\n<div id=\"cart\">\n\t<h1 class=\"ui-widget-header\">Shopping Cart</h1>\n\t<div class=\"ui-widget-content\">\n\t\t<ol>\n\t\t\t<li class=\"placeholder\">Add your items here</li>\n\t\t</ol>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Demonstrate how to use an accordion to structure products into a catalog and make use of drag and drop for adding them to a shopping cart, where they are sortable.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/droppable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Droppable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#draggable, #draggable2 { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }\n\t#droppable, #droppable2 { width: 120px; height: 120px; padding: 0.5em; float: left; margin: 10px; }\n\th3 { clear: left; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#draggable\" ).draggable();\n\t\t$( \"#droppable\" ).droppable({\n\t\t\thoverClass: \"ui-state-active\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\n\t\t$( \"#draggable2\" ).draggable();\n\t\t$( \"#droppable2\" ).droppable({\n\t\t\taccept: \"#draggable2\",\n\t\t\tactiveClass: \"ui-state-hover\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-state-highlight\" )\n\t\t\t\t\t.find( \"p\" )\n\t\t\t\t\t\t.html( \"Dropped!\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3>Feedback on hover:</h3>\n\n<div id=\"draggable\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<h3>Feedback on activating draggable:</h3>\n\n<div id=\"draggable2\" class=\"ui-widget-content\">\n\t<p>Drag me to my target</p>\n</div>\n\n<div id=\"droppable2\" class=\"ui-widget-header\">\n\t<p>Drop here</p>\n</div>\n\n<div class=\"demo-description\">\n<p>Change the droppable's appearance on hover, or when the droppable is active (an acceptable draggable is dropped on it).  Use the <code>hoverClass</code> or <code>activeClass</code> options to specify respective classes.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects - Effect demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-bounce.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-clip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-drop.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fade.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-fold.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-highlight.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-pulsate.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-scale.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-shake.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-slide.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-transfer.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t\t.toggler { width: 500px; height: 200px; position: relative; }\n\t\t#button { padding: .5em 1em; text-decoration: none; }\n\t\t#effect { width: 240px; height: 135px; padding: 0.4em; position: relative; }\n\t\t#effect h3 { margin: 0; padding: 0.4em; text-align: center; }\n\t\t.ui-effects-transfer { border: 2px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// run the currently selected effect\n\t\tfunction runEffect() {\n\t\t\t// get effect type from\n\t\t\tvar selectedEffect = $( \"#effectTypes\" ).val();\n\n\t\t\t// most effect types need no options passed by default\n\t\t\tvar options = {};\n\t\t\t// some effects have required parameters\n\t\t\tif ( selectedEffect === \"scale\" ) {\n\t\t\t\toptions = { percent: 0 };\n\t\t\t} else if ( selectedEffect === \"transfer\" ) {\n\t\t\t\toptions = { to: \"#button\", className: \"ui-effects-transfer\" };\n\t\t\t} else if ( selectedEffect === \"size\" ) {\n\t\t\t\toptions = { to: { width: 200, height: 60 } };\n\t\t\t}\n\n\t\t\t// run the effect\n\t\t\t$( \"#effect\" ).effect( selectedEffect, options, 500, callback );\n\t\t};\n\n\t\t// callback function to bring a hidden box back\n\t\tfunction callback() {\n\t\t\tsetTimeout(function() {\n\t\t\t\t$( \"#effect\" ).removeAttr( \"style\" ).hide().fadeIn();\n\t\t\t}, 1000 );\n\t\t};\n\n\t\t// set effect from select menu value\n\t\t$( \"#button\" ).click(function() {\n\t\t\trunEffect();\n\t\t\treturn false;\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"toggler\">\n\t<div id=\"effect\" class=\"ui-widget-content ui-corner-all\">\n\t\t<h3 class=\"ui-widget-header ui-corner-all\">Effect</h3>\n\t\t<p>\n\t\t\tEtiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.\n\t\t</p>\n\t</div>\n</div>\n\n<select name=\"effects\" id=\"effectTypes\">\n\t<option value=\"blind\">Blind</option>\n\t<option value=\"bounce\">Bounce</option>\n\t<option value=\"clip\">Clip</option>\n\t<option value=\"drop\">Drop</option>\n\t<option value=\"explode\">Explode</option>\n\t<option value=\"fade\">Fade</option>\n\t<option value=\"fold\">Fold</option>\n\t<option value=\"highlight\">Highlight</option>\n\t<option value=\"puff\">Puff</option>\n\t<option value=\"pulsate\">Pulsate</option>\n\t<option value=\"scale\">Scale</option>\n\t<option value=\"shake\">Shake</option>\n\t<option value=\"size\">Size</option>\n\t<option value=\"slide\">Slide</option>\n\t<option value=\"transfer\">Transfer</option>\n</select>\n\n<a href=\"#\" id=\"button\" class=\"ui-state-default ui-corner-all\">Run Effect</a>\n\n<div class=\"demo-description\">\n<p>Click the button above to show the effect.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/easing.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects - Easing demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.graph {\n\t\tfloat: left;\n\t\tmargin-left: 10px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tif ( !$( \"<canvas>\" )[0].getContext ) {\n\t\t\t$( \"<div>\" ).text(\n\t\t\t\t\"Your browser doesn't support canvas, which is required for this demo.\"\n\t\t\t).appendTo( \"#graphs\" );\n\t\t\treturn;\n\t\t}\n\n\t\tvar i = 0,\n\t\t\twidth = 100,\n\t\t\theight = 100;\n\n\t\t$.each( $.easing, function( name, impl ) {\n\t\t\tvar graph = $( \"<div>\" ).addClass( \"graph\" ).appendTo( \"#graphs\" ),\n\t\t\t\ttext = $( \"<div>\" ).text( ++i + \". \" + name ).appendTo( graph ),\n\t\t\t\twrap = $( \"<div>\" ).appendTo( graph ).css( 'overflow', 'hidden' ),\n\t\t\t\tcanvas = $( \"<canvas>\" ).appendTo( wrap )[ 0 ];\n\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t\tvar drawHeight = height * 0.8,\n\t\t\t\tcradius = 10;\n\t\t\t\tctx = canvas.getContext( \"2d\" );\n\t\t\tctx.fillStyle = \"black\";\n\n\t\t\t// draw background\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( cradius, 0 );\n\t\t\tctx.quadraticCurveTo( 0, 0, 0, cradius );\n\t\t\tctx.lineTo( 0, height - cradius );\n\t\t\tctx.quadraticCurveTo( 0, height, cradius, height );\n\t\t\tctx.lineTo( width - cradius, height );\n\t\t\tctx.quadraticCurveTo( width, height, width, height - cradius );\n\t\t\tctx.lineTo( width, 0 );\n\t\t\tctx.lineTo( cradius, 0 );\n\t\t\tctx.fill();\n\n\t\t\t// draw bottom line\n\t\t\tctx.strokeStyle = \"#555\";\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( width * 0.1, drawHeight + .5 );\n\t\t\tctx.lineTo( width * 0.9, drawHeight + .5 );\n\t\t\tctx.stroke();\n\n\t\t\t// draw top line\n\t\t\tctx.strokeStyle = \"#555\";\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo( width * 0.1, drawHeight * .3 - .5 );\n\t\t\tctx.lineTo( width * 0.9, drawHeight * .3 - .5 );\n\t\t\tctx.stroke();\n\n\t\t\t// plot easing\n\t\t\tctx.strokeStyle = \"white\";\n\t\t\tctx.beginPath();\n\t\t\tctx.lineWidth = 2;\n\t\t\tctx.moveTo( width * 0.1, drawHeight );\n\t\t\t$.each( new Array( width ), function( position ) {\n\t\t\t\tvar state = position / width,\n\t\t\t\t\tval = impl( state, position, 0, 1, width );\n\t\t\t\tctx.lineTo( position * 0.8 + width * 0.1,\n\t\t\t\t\tdrawHeight - drawHeight * val * 0.7 );\n\t\t\t});\n\t\t\tctx.stroke();\n\n\t\t\t// animate on click\n\t\t\tgraph.click(function() {\n\t\t\t\twrap\n\t\t\t\t\t.animate( { height: \"hide\" }, 2000, name )\n\t\t\t\t\t.delay( 800 )\n\t\t\t\t\t.animate( { height: \"show\" }, 2000, name );\n\t\t\t});\n\n\t\t\tgraph.width( width ).height( height + text.height() + 10 );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"graphs\"></div>\n\n<div class=\"demo-description\">\n<p><strong>All easings provided by jQuery UI are drawn above, using a HTML canvas element</strong>. Click a diagram to see the easing in action.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/effect/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Effects Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Effect showcase</a></li>\n\t<li><a href=\"easing.html\">Easing showcase</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#menu\" ).menu();\n\t});\n\t</script>\n\t<style>\n\t.ui-menu { width: 150px; }\n\t</style>\n</head>\n<body>\n\n<ul id=\"menu\">\n\t<li class=\"ui-state-disabled\"><a href=\"#\">Aberdeen</a></li>\n\t<li><a href=\"#\">Ada</a></li>\n\t<li><a href=\"#\">Adamsville</a></li>\n\t<li><a href=\"#\">Addyston</a></li>\n\t<li>\n\t\t<a href=\"#\">Delphi</a>\n\t\t<ul>\n\t\t\t<li class=\"ui-state-disabled\"><a href=\"#\">Ada</a></li>\n\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t</ul>\n\t</li>\n\t<li><a href=\"#\">Saarland</a></li>\n\t<li>\n\t\t<a href=\"#\">Salzburg</a>\n\t\t<ul>\n\t\t\t<li>\n\t\t\t\t<a href=\"#\">Delphi</a>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">Ada</a></li>\n\t\t\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#\">Delphi</a>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">Ada</a></li>\n\t\t\t\t\t<li><a href=\"#\">Saarland</a></li>\n\t\t\t\t\t<li><a href=\"#\">Salzburg</a></li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li><a href=\"#\">Perch</a></li>\n\t\t</ul>\n\t</li>\n\t<li class=\"ui-state-disabled\"><a href=\"#\">Amesville</a></li>\n</ul>\n\n<div class=\"demo-description\">\n<p>A menu with the default configuration, disabled items and nested menus. A list is transformed, adding theming, mouse and keyboard navigation support. Try to tab to the menu then use the cursor keys to navigate.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/icons.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu - Icons</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#menu\" ).menu();\n\t});\n\t</script>\n\t<style>\n\t.ui-menu { width: 150px; }\n\t</style>\n</head>\n<body>\n\n<ul id=\"menu\">\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-disk\"></span>Save</a></li>\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-zoomin\"></span>Zoom In</a></li>\n\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-zoomout\"></span>Zoom Out</a></li>\n\t<li class=\"ui-state-disabled\"><a href=\"#\"><span class=\"ui-icon ui-icon-print\"></span>Print...</a></li>\n\t<li>\n\t\t<a href=\"#\">Playback</a>\n\t\t<ul>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-seek-start\"></span>Prev</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-stop\"></span>Stop</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-play\"></span>Play</a></li>\n\t\t\t<li><a href=\"#\"><span class=\"ui-icon ui-icon-seek-end\"></span>Next</a></li>\n\t\t</ul>\n\t</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>A menu with the default configuration, showing how to use a menu with icons.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/menu/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Menu Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"icons.html\">Icons</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/cycler.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position - Image Cycler</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tbody {\n\t\tmargin: 0;\n\t}\n\t#container {\n\t\toverflow: hidden;\n\t\tposition: relative;\n\t\theight: 400px;\n\t}\n\n\timg {\n\t\tposition: absolute;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// TODO refactor into a widget and get rid of these plugin methods\n\t\t$.fn.left = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"right middle\",\n\t\t\t\tat: \"left+25 middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tcollision: \"none\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\t\t$.fn.right = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"left middle\",\n\t\t\t\tat: \"right-25 middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tcollision: \"none\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\t\t$.fn.center = function( using ) {\n\t\t\treturn this.position({\n\t\t\t\tmy: \"center middle\",\n\t\t\t\tat: \"center middle\",\n\t\t\t\tof: \"#container\",\n\t\t\t\tusing: using\n\t\t\t});\n\t\t};\n\n\t\t$( \"img:eq(0)\" ).left();\n\t\t$( \"img:eq(1)\" ).center();\n\t\t$( \"img:eq(2)\" ).right();\n\n\t\tfunction animate( to ) {\n\t\t\t$( this ).stop( true, false ).animate( to );\n\t\t}\n\t\tfunction next( event ) {\n\t\t\tevent.preventDefault();\n\t\t\t$( \"img:eq(2)\" ).center( animate );\n\t\t\t$( \"img:eq(1)\" ).left( animate )\n\t\t\t$( \"img:eq(0)\" ).right().appendTo( \"#container\" );\n\t\t}\n\t\tfunction previous( event ) {\n\t\t\tevent.preventDefault();\n\t\t\t$( \"img:eq(0)\" ).center( animate );\n\t\t\t$( \"img:eq(1)\" ).right( animate );\n\t\t\t$( \"img:eq(2)\" ).left().prependTo( \"#container\" );\n\t\t}\n\t\t$( \"#previous\" ).click( previous );\n\t\t$( \"#next\" ).click( next );\n\n\t\t$( \"img\" ).click(function( event ) {\n\t\t\t$( \"img\" ).index( this ) === 0 ? previous( event ) : next( event );\n\t\t});\n\n\t\t$( window ).resize(function() {\n\t\t\t$( \"img:eq(0)\" ).left( animate );\n\t\t\t$( \"img:eq(1)\" ).center( animate );\n\t\t\t$( \"img:eq(2)\" ).right( animate );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"container\">\n\t<img src=\"images/earth.jpg\" width=\"458\" height=\"308\" alt=\"earth\">\n\t<img src=\"images/flight.jpg\" width=\"512\" height=\"307\" alt=\"flight\">\n\t<img src=\"images/rocket.jpg\" width=\"300\" height=\"353\" alt=\"rocket\">\n\n\t<a id=\"previous\" href=\"#\">Previous</a>\n\t<a id=\"next\" href=\"#\">Next</a>\n</div>\n\n<div class=\"demo-description\">\n<p>A photoviewer prototype using Position to place images at the center, left and right and cycle them.\n<br>Use the links at the top to cycle, or click on the images on the left and right.\n<br>Note how the images are repositioned when resizing the window.\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.draggable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#parent {\n\t\twidth: 60%;\n\t\theight: 40px;\n\t\tmargin: 10px auto;\n\t\tpadding: 5px;\n\t\tborder: 1px solid #777;\n\t\tbackground-color: #fbca93;\n\t\ttext-align: center;\n\t}\n\t.positionable {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tbackground-color: #bcd5e6;\n\t\ttext-align: center;\n\t}\n\t#positionable1 {\n\t\twidth: 75px;\n\t\theight: 75px;\n\t}\n\t#positionable2 {\n\t\twidth: 120px;\n\t\theight: 40px;\n\t}\n\tselect, input {\n\t\tmargin-left: 15px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction position() {\n\t\t\t$( \".positionable\" ).position({\n\t\t\t\tof: $( \"#parent\" ),\n\t\t\t\tmy: $( \"#my_horizontal\" ).val() + \" \" + $( \"#my_vertical\" ).val(),\n\t\t\t\tat: $( \"#at_horizontal\" ).val() + \" \" + $( \"#at_vertical\" ).val(),\n\t\t\t\toffset: $( \"#offset\" ).val(),\n\t\t\t\tcollision: $( \"#collision_horizontal\" ).val() + \" \" + $( \"#collision_vertical\" ).val()\n\t\t\t});\n\t\t}\n\n\t\t$( \".positionable\" ).css( \"opacity\", 0.5 );\n\n\t\t$( \"select, input\" ).bind( \"click keyup change\", position );\n\n\t\t$( \"#parent\" ).draggable({\n\t\t\tdrag: position\n\t\t});\n\n\t\tposition();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"parent\">\n\t<p>\n\tThis is the position parent element.\n\t</p>\n</div>\n\n<div class=\"positionable\" id=\"positionable1\">\n\t<p>\n\tto position\n\t</p>\n</div>\n\n<div class=\"positionable\" id=\"positionable2\">\n\t<p>\n\tto position 2\n\t</p>\n</div>\n\n<div style=\"padding: 20px; margin-top: 75px;\">\n\tposition...\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>my:</b>\n\t\t<select id=\"my_horizontal\">\n\t\t\t<option value=\"left\">left</option>\n\t\t\t<option value=\"center\">center</option>\n\t\t\t<option value=\"right\">right</option>\n\t\t</select>\n\t\t<select id=\"my_vertical\">\n\t\t\t<option value=\"top\">top</option>\n\t\t\t<option value=\"middle\">center</option>\n\t\t\t<option value=\"bottom\">bottom</option>\n\t\t</select>\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>at:</b>\n\t\t<select id=\"at_horizontal\">\n\t\t\t<option value=\"left\">left</option>\n\t\t\t<option value=\"center\">center</option>\n\t\t\t<option value=\"right\">right</option>\n\t\t</select>\n\t\t<select id=\"at_vertical\">\n\t\t\t<option value=\"top\">top</option>\n\t\t\t<option value=\"middle\">center</option>\n\t\t\t<option value=\"bottom\">bottom</option>\n\t\t</select>\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>offset:</b>\n\t\t<input id=\"offset\">\n\t</div>\n\t<div style=\"padding-bottom: 20px;\">\n\t\t<b>collision:</b>\n\t\t<select id=\"collision_horizontal\">\n\t\t\t<option value=\"flip\">flip</option>\n\t\t\t<option value=\"fit\">fit</option>\n\t\t\t<option value=\"flipfit\">flipfit</option>\n\t\t\t<option value=\"none\">none</option>\n\t\t</select>\n\t\t<select id=\"collision_vertical\">\n\t\t\t<option value=\"flip\">flip</option>\n\t\t\t<option value=\"fit\">fit</option>\n\t\t\t<option value=\"flipfit\">flipfit</option>\n\t\t\t<option value=\"none\">none</option>\n\t\t</select>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Use the form controls to configure the positioning, or drag the positioned element to modify its offset.\n<br>Drag around the parent element to see collision detection in action.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/position/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Position Demo</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"cycler.html\">Cycling images</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/animated.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Animated</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-progressbar .ui-progressbar-value { background-image: url(images/pbar-ani.gif); }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 59\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbar\"></div>\n\n<div class=\"demo-description\">\n<p>\nThis progressbar has an animated fill by setting the\n<code>background-image</code>\non the\n<code>.ui-progressbar-value</code>\nelement, using css.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 37\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbar\"></div>\n\n<div class=\"demo-description\">\n<p>Default determinate progress bar.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"animated.html\">Animated</a></li>\n\t<li><a href=\"resize.html\">Resizable progressbar</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/progressbar/resize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Progressbar - Resizable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.progressbar.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 37\n\t\t});\n\t\t$( \"#progressbarWrapper\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"progressbarWrapper\" style=\"height:30px; \" class=\"ui-widget-default\">\n\t<div id=\"progressbar\" style=\"height:100%;\"></div>\n</div>\n\n<div class=\"demo-description\">\n<p>The progress bar's widths are specified in percentages for flexible sizing so it will resize to fit its container. Try resizing the height and width of this bar to see how it maintains the correct proportions. (This is not necessarily a real-world example, but it's a good illustration of how flexibly all the plugins are coded.)</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/animate.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Animate</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-helper { border: 1px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tanimate: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Animate</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Animate the resize action using the <code>animate</code> option (boolean). When this option is set to true, drag the outline to the desired location; the element animates to that size on drag stop.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/aspect-ratio.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Preserve aspect ratio</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 160px; height: 90px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\taspectRatio: 16 / 9\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Preserve aspect ratio</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Maintain the existing aspect ratio or set a new one to constrain the proportions on resize. Set the <code>aspectRatio</code> option to true, and optionally pass in a new ratio (i.e., 4/3)</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/constrain-area.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Constrain resize area</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#container { width: 300px; height: 300px; }\n\t#container h3 { text-align: center; margin: 0; margin-bottom: 10px; }\n\t#resizable { background-position: top left; width: 150px; height: 150px; }\n\t#resizable, #container { padding: 0.5em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tcontainment: \"#container\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"container\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Containment</h3>\n\t<div id=\"resizable\" class=\"ui-state-active\">\n\t\t<h3 class=\"ui-widget-header\">Resizable</h3>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Define the boundaries of the resizable area. Use the <code>containment</code> option to specify a parent DOM element or a jQuery selector, like 'document.'</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Resizable</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Enable any DOM element to be resizable.  With the cursor grab the right or bottom border and drag to the desired width or height.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable, #resizable2 { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3, #resizable2 h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tdelay: 1000\n\t\t});\n\n\t\t$( \"#resizable2\" ).resizable({\n\t\t\tdistance: 40\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Time delay (ms):</h3>\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Time</h3>\n</div>\n\n<h3 class=\"docs\">Distance delay (px):</h3>\n<div id=\"resizable2\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Distance</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Delay the start of resizng for a number of milliseconds with the <code>delay</code> option; prevent resizing until the cursor is held down and dragged a specifed number of pixels with the <code>distance</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/helper.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Helper</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-helper { border: 2px dotted #00F; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\thelper: \"ui-resizable-helper\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Helper</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Display only an outline of the element while resizing by setting the <code>helper</code> option to a CSS class.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"aspect-ratio.html\">Preserve aspect ratio</a></li>\n\t<li><a href=\"max-min.html\">Maximum / minimum size</a></li>\n\t<li><a href=\"constrain-area.html\">Constrain resize area</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"snap-to-grid.html\">Snap to grid</a></li>\n\t<li><a href=\"visual-feedback.html\">Visual feedback</a></li>\n\t<li><a href=\"synchronous-resize.html\">Synchronous resize</a></li>\n\t<li><a href=\"animate.html\">Animate</a></li>\n\t<li><a href=\"helper.html\">Resize Helper</a></li>\n\t<li><a href=\"textarea.html\">Textarea</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/max-min.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Maximum / minimum size</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 200px; height: 150px; padding: 5px; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tmaxHeight: 250,\n\t\t\tmaxWidth: 350,\n\t\t\tminHeight: 150,\n\t\t\tminWidth: 200\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Resize larger / smaller</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Limit the resizable element to a maximum or minimum height or width using the <code>maxHeight</code>, <code>maxWidth</code>, <code>minHeight</code>, and <code>minWidth</code> options.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/snap-to-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Snap to grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tgrid: 50\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Grid</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Snap the resizable element to a grid.  Set the dimensions of grid cells (height and width in pixels) with the <code>grid</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/synchronous-resize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Synchronous resize</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { background-position: top left; }\n\t#resizable, #also { width: 150px; height: 120px; padding: 0.5em; }\n\t#resizable h3, #also h3 { text-align: center; margin: 0; }\n\t#also { margin-top: 1em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\talsoResize: \"#also\"\n\t\t});\n\t\t$( \"#also\" ).resizable();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-header\">\n\t<h3 class=\"ui-state-active\">Resize</h3>\n</div>\n\n<div id=\"also\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">will also resize</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Resize multiple elements simultaneously by clicking and dragging the sides of one.  Pass a shared selector into the <code>alsoResize</code> option.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/textarea.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Textarea</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.ui-resizable-se {\n\t\tbottom: 17px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\thandles: \"se\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<textarea id=\"resizable\" rows=\"5\" cols=\"20\"></textarea>\n\n<div class=\"demo-description\">\n<p>Display only an outline of the element while resizing by setting the <code>helper</code> option to a CSS class.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/resizable/visual-feedback.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Resizable - Visual feedback</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.resizable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#resizable { width: 150px; height: 150px; padding: 0.5em; }\n\t#resizable h3 { text-align: center; margin: 0; }\n\t.ui-resizable-ghost { border: 1px dotted gray; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#resizable\" ).resizable({\n\t\t\tghost: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"resizable\" class=\"ui-widget-content\">\n\t<h3 class=\"ui-widget-header\">Ghost</h3>\n</div>\n\n<div class=\"demo-description\">\n<p>Instead of showing the actual element during resize, set the <code>ghost</code> option to true to show a semi-transparent part of the element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable();\n\t});\n\t</script>\n</head>\n<body>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-widget-content\">Item 1</li>\n\t<li class=\"ui-widget-content\">Item 2</li>\n\t<li class=\"ui-widget-content\">Item 3</li>\n\t<li class=\"ui-widget-content\">Item 4</li>\n\t<li class=\"ui-widget-content\">Item 5</li>\n\t<li class=\"ui-widget-content\">Item 6</li>\n\t<li class=\"ui-widget-content\">Item 7</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>Enable a DOM element (or group of elements) to be selectable. Draw a box with your cursor to select items. Hold down the Ctrl key to make multiple non-adjacent selections. </p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/display-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Display as grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 450px; }\n\t#selectable li { margin: 3px; padding: 1px; float: left; width: 100px; height: 80px; font-size: 4em; text-align: center; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable();\n\t});\n\t</script>\n</head>\n<body>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-state-default\">1</li>\n\t<li class=\"ui-state-default\">2</li>\n\t<li class=\"ui-state-default\">3</li>\n\t<li class=\"ui-state-default\">4</li>\n\t<li class=\"ui-state-default\">5</li>\n\t<li class=\"ui-state-default\">6</li>\n\t<li class=\"ui-state-default\">7</li>\n\t<li class=\"ui-state-default\">8</li>\n\t<li class=\"ui-state-default\">9</li>\n\t<li class=\"ui-state-default\">10</li>\n\t<li class=\"ui-state-default\">11</li>\n\t<li class=\"ui-state-default\">12</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>To arrange selectable items as a grid, give them identical dimensions and float them using CSS.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"serialize.html\">Serialize</a></li>\n\t<li><a href=\"display-grid.html\">Display as grid</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/selectable/serialize.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Selectable - Serialize</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.selectable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\n\t<style>\n\t#feedback { font-size: 1.4em; }\n\t#selectable .ui-selecting { background: #FECA40; }\n\t#selectable .ui-selected { background: #F39814; color: white; }\n\t#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#selectable\" ).selectable({\n\t\t\tstop: function() {\n\t\t\t\tvar result = $( \"#select-result\" ).empty();\n\t\t\t\t$( \".ui-selected\", this ).each(function() {\n\t\t\t\t\tvar index = $( \"#selectable li\" ).index( this );\n\t\t\t\t\tresult.append( \" #\" + ( index + 1 ) );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p id=\"feedback\">\n<span>You've selected:</span> <span id=\"select-result\">none</span>.\n</p>\n\n<ol id=\"selectable\">\n\t<li class=\"ui-widget-content\">Item 1</li>\n\t<li class=\"ui-widget-content\">Item 2</li>\n\t<li class=\"ui-widget-content\">Item 3</li>\n\t<li class=\"ui-widget-content\">Item 4</li>\n\t<li class=\"ui-widget-content\">Item 5</li>\n\t<li class=\"ui-widget-content\">Item 6</li>\n</ol>\n\n<div class=\"demo-description\">\n<p>Write a function that fires on the <code>stop</code> event to collect the index values of selected items.  Present values as feedback, or pass as a data string.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/colorpicker.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Colorpicker</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#red, #green, #blue {\n\t\tfloat: left;\n\t\tclear: left;\n\t\twidth: 300px;\n\t\tmargin: 15px;\n\t}\n\t#swatch {\n\t\twidth: 120px;\n\t\theight: 100px;\n\t\tmargin-top: 18px;\n\t\tmargin-left: 350px;\n\t\tbackground-image: none;\n\t}\n\t#red .ui-slider-range { background: #ef2929; }\n\t#red .ui-slider-handle { border-color: #ef2929; }\n\t#green .ui-slider-range { background: #8ae234; }\n\t#green .ui-slider-handle { border-color: #8ae234; }\n\t#blue .ui-slider-range { background: #729fcf; }\n\t#blue .ui-slider-handle { border-color: #729fcf; }\n\t</style>\n\t<script>\n\tfunction hexFromRGB(r, g, b) {\n\t\tvar hex = [\n\t\t\tr.toString( 16 ),\n\t\t\tg.toString( 16 ),\n\t\t\tb.toString( 16 )\n\t\t];\n\t\t$.each( hex, function( nr, val ) {\n\t\t\tif ( val.length === 1 ) {\n\t\t\t\thex[ nr ] = \"0\" + val;\n\t\t\t}\n\t\t});\n\t\treturn hex.join( \"\" ).toUpperCase();\n\t}\n\tfunction refreshSwatch() {\n\t\tvar red = $( \"#red\" ).slider( \"value\" ),\n\t\t\tgreen = $( \"#green\" ).slider( \"value\" ),\n\t\t\tblue = $( \"#blue\" ).slider( \"value\" ),\n\t\t\thex = hexFromRGB( red, green, blue );\n\t\t$( \"#swatch\" ).css( \"background-color\", \"#\" + hex );\n\t}\n\t$(function() {\n\t\t$( \"#red, #green, #blue\" ).slider({\n\t\t\torientation: \"horizontal\",\n\t\t\trange: \"min\",\n\t\t\tmax: 255,\n\t\t\tvalue: 127,\n\t\t\tslide: refreshSwatch,\n\t\t\tchange: refreshSwatch\n\t\t});\n\t\t$( \"#red\" ).slider( \"value\", 255 );\n\t\t$( \"#green\" ).slider( \"value\", 140 );\n\t\t$( \"#blue\" ).slider( \"value\", 60 );\n\t});\n\t</script>\n</head>\n<body class=\"ui-widget-content\" style=\"border:0;\">\n\n<p class=\"ui-state-default ui-corner-all ui-helper-clearfix\" style=\"padding:4px;\">\n\t<span class=\"ui-icon ui-icon-pencil\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tSimple Colorpicker\n</p>\n\n<div id=\"red\"></div>\n<div id=\"green\"></div>\n<div id=\"blue\"></div>\n\n<div id=\"swatch\" class=\"ui-widget-content ui-corner-all\"></div>\n\n<div class=\"demo-description\">\n<p>Combine three sliders to create a simple RGB colorpicker.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\" >\n\t<title>jQuery UI Slider - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider\" ).slider();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"slider\"></div>\n\n<div class=\"demo-description\">\n<p>The basic slider is horizontal and has a single handle that can be moved with the mouse or by using the arrow keys.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/hotelrooms.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Slider bound to select</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar select = $( \"#minbeds\" );\n\t\tvar slider = $( \"<div id='slider'></div>\" ).insertAfter( select ).slider({\n\t\t\tmin: 1,\n\t\t\tmax: 6,\n\t\t\trange: \"min\",\n\t\t\tvalue: select[ 0 ].selectedIndex + 1,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\tselect[ 0 ].selectedIndex = ui.value - 1;\n\t\t\t}\n\t\t});\n\t\t$( \"#minbeds\" ).change(function() {\n\t\t\tslider.slider( \"value\", this.selectedIndex + 1 );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<form id=\"reservation\">\n\t<label for=\"minbeds\">Minimum number of beds</label>\n\t<select name=\"minbeds\" id=\"minbeds\">\n\t\t<option>1</option>\n\t\t<option>2</option>\n\t\t<option>3</option>\n\t\t<option>4</option>\n\t\t<option>5</option>\n\t\t<option>6</option>\n\t</select>\n</form>\n\n<div class=\"demo-description\">\n<p>How to bind a slider to an existing select element. The select stays visible to display the change. When the select is changed, the slider is updated, too.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"steps.html\">Snap to increments</a></li>\n\t<li><a href=\"range.html\">Range slider</a></li>\n\t<li><a href=\"rangemin.html\">Range with fixed minimum</a></li>\n\t<li><a href=\"hotelrooms.html\">Room reservation</a></li>\n\t<li><a href=\"rangemax.html\">Range with fixed maximum</a></li>\n\t<li><a href=\"slider-vertical.html\">Vertical slider</a></li>\n\t<li><a href=\"range-vertical.html\">Vertical range slider</a></li>\n\t<li><a href=\"multiple-vertical.html\">Multiple sliders</a></li>\n\t<li><a href=\"colorpicker.html\">Simple colorpicker</a></li>\n\t<li><a href=\"side-scroll.html\">Simple scrollbar</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/multiple-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Multiple sliders</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#eq span {\n\t\theight:120px; float:left; margin:15px\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// setup master volume\n\t\t$( \"#master\" ).slider({\n\t\t\tvalue: 60,\n\t\t\torientation: \"horizontal\",\n\t\t\trange: \"min\",\n\t\t\tanimate: true\n\t\t});\n\t\t// setup graphic EQ\n\t\t$( \"#eq > span\" ).each(function() {\n\t\t\t// read initial values from markup and remove that\n\t\t\tvar value = parseInt( $( this ).text(), 10 );\n\t\t\t$( this ).empty().slider({\n\t\t\t\tvalue: value,\n\t\t\t\trange: \"min\",\n\t\t\t\tanimate: true,\n\t\t\t\torientation: \"vertical\"\n\t\t\t});\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p class=\"ui-state-default ui-corner-all ui-helper-clearfix\" style=\"padding:4px;\">\n\t<span class=\"ui-icon ui-icon-volume-on\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tMaster volume\n</p>\n\n<div id=\"master\" style=\"width:260px; margin:15px;\"></div>\n\n<p class=\"ui-state-default ui-corner-all\" style=\"padding:4px;margin-top:4em;\">\n\t<span class=\"ui-icon ui-icon-signal\" style=\"float:left; margin:-2px 5px 0 0;\"></span>\n\tGraphic EQ\n</p>\n\n<div id=\"eq\">\n\t<span>88</span>\n\t<span>77</span>\n\t<span>55</span>\n\t<span>33</span>\n\t<span>40</span>\n\t<span>45</span>\n\t<span>70</span>\n</div>\n\n<div class=\"demo-description\">\n<p>Combine horizontal and vertical sliders, each with their own options, to create the UI for a music player.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Vertical range slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range\" ).slider({\n\t\t\torientation: \"vertical\",\n\t\t\trange: true,\n\t\t\tvalues: [ 17, 67 ],\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range\" ).slider( \"values\", 0 ) +\n\t\t\t\" - $\" + $( \"#slider-range\" ).slider( \"values\", 1 ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Target sales goal (Millions):</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range\" style=\"height:250px;\"></div>\n\n<div class=\"demo-description\">\n<p>Change the orientation of the range slider to vertical.  Assign a height value via <code>.height()</code> or by setting the height through CSS, and set the <code>orientation</code> option to \"vertical.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/range.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range\" ).slider({\n\t\t\trange: true,\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t\tvalues: [ 75, 300 ],\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.values[ 0 ] + \" - $\" + ui.values[ 1 ] );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range\" ).slider( \"values\", 0 ) +\n\t\t\t\" - $\" + $( \"#slider-range\" ).slider( \"values\", 1 ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Price range:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range\"></div>\n\n<div class=\"demo-description\">\n<p>Set the <code>range</code> option to true to capture a range of values with two drag handles.  The space between the handles is filled with a different background color to indicate those values are selected.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemax.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range with fixed maximum</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range-max\" ).slider({\n\t\t\trange: \"max\",\n\t\t\tmin: 1,\n\t\t\tmax: 10,\n\t\t\tvalue: 2,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( $( \"#slider-range-max\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Minimum number of bedrooms:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n<div id=\"slider-range-max\"></div>\n\n<div class=\"demo-description\">\n<p>Fix the maximum value of the range slider so that the user can only select a minimum.  Set the <code>range</code> option to \"max.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/rangemin.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Range with fixed minimum</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-range-min\" ).slider({\n\t\t\trange: \"min\",\n\t\t\tvalue: 37,\n\t\t\tmin: 1,\n\t\t\tmax: 700,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider-range-min\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Maximum price:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-range-min\"></div>\n\n<div class=\"demo-description\">\n<p>Fix the minimum value of the range slider so that the user can only select a maximum.  Set the <code>range</code> option to \"min.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/side-scroll.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Slider scrollbar</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.scroll-pane { overflow: auto; width: 99%; float:left; }\n\t.scroll-content { width: 2440px; float: left; }\n\t.scroll-content-item { width: 100px; height: 100px; float: left; margin: 10px; font-size: 3em; line-height: 96px; text-align: center; }\n\t* html .scroll-content-item { display: inline; } /* IE6 float double margin bug */\n\t.scroll-bar-wrap { clear: left; padding: 0 4px 0 2px; margin: 0 -1px -1px -1px; }\n\t.scroll-bar-wrap .ui-slider { background: none; border:0; height: 2em; margin: 0 auto;  }\n\t.scroll-bar-wrap .ui-handle-helper-parent { position: relative; width: 100%; height: 100%; margin: 0 auto; }\n\t.scroll-bar-wrap .ui-slider-handle { top:.2em; height: 1.5em; }\n\t.scroll-bar-wrap .ui-slider-handle .ui-icon { margin: -8px auto 0; position: relative; top: 50%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t//scrollpane parts\n\t\tvar scrollPane = $( \".scroll-pane\" ),\n\t\t\tscrollContent = $( \".scroll-content\" );\n\t\t\n\t\t//build slider\n\t\tvar scrollbar = $( \".scroll-bar\" ).slider({\n\t\t\tslide: function( event, ui ) {\n\t\t\t\tif ( scrollContent.width() > scrollPane.width() ) {\n\t\t\t\t\tscrollContent.css( \"margin-left\", Math.round(\n\t\t\t\t\t\tui.value / 100 * ( scrollPane.width() - scrollContent.width() )\n\t\t\t\t\t) + \"px\" );\n\t\t\t\t} else {\n\t\t\t\t\tscrollContent.css( \"margin-left\", 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t//append icon to handle\n\t\tvar handleHelper = scrollbar.find( \".ui-slider-handle\" )\n\t\t.mousedown(function() {\n\t\t\tscrollbar.width( handleHelper.width() );\n\t\t})\n\t\t.mouseup(function() {\n\t\t\tscrollbar.width( \"100%\" );\n\t\t})\n\t\t.append( \"<span class='ui-icon ui-icon-grip-dotted-vertical'></span>\" )\n\t\t.wrap( \"<div class='ui-handle-helper-parent'></div>\" ).parent();\n\t\t\n\t\t//change overflow to hidden now that slider handles the scrolling\n\t\tscrollPane.css( \"overflow\", \"hidden\" );\n\t\t\n\t\t//size scrollbar and handle proportionally to scroll distance\n\t\tfunction sizeScrollbar() {\n\t\t\tvar remainder = scrollContent.width() - scrollPane.width();\n\t\t\tvar proportion = remainder / scrollContent.width();\n\t\t\tvar handleSize = scrollPane.width() - ( proportion * scrollPane.width() );\n\t\t\tscrollbar.find( \".ui-slider-handle\" ).css({\n\t\t\t\twidth: handleSize,\n\t\t\t\t\"margin-left\": -handleSize / 2\n\t\t\t});\n\t\t\thandleHelper.width( \"\" ).width( scrollbar.width() - handleSize );\n\t\t}\n\t\t\n\t\t//reset slider value based on scroll content position\n\t\tfunction resetValue() {\n\t\t\tvar remainder = scrollPane.width() - scrollContent.width();\n\t\t\tvar leftVal = scrollContent.css( \"margin-left\" ) === \"auto\" ? 0 :\n\t\t\t\tparseInt( scrollContent.css( \"margin-left\" ) );\n\t\t\tvar percentage = Math.round( leftVal / remainder * 100 );\n\t\t\tscrollbar.slider( \"value\", percentage );\n\t\t}\n\t\t\n\t\t//if the slider is 100% and window gets larger, reveal content\n\t\tfunction reflowContent() {\n\t\t\t\tvar showing = scrollContent.width() + parseInt( scrollContent.css( \"margin-left\" ), 10 );\n\t\t\t\tvar gap = scrollPane.width() - showing;\n\t\t\t\tif ( gap > 0 ) {\n\t\t\t\t\tscrollContent.css( \"margin-left\", parseInt( scrollContent.css( \"margin-left\" ), 10 ) + gap );\n\t\t\t\t}\n\t\t}\n\t\t\n\t\t//change handle position on window resize\n\t\t$( window ).resize(function() {\n\t\t\tresetValue();\n\t\t\tsizeScrollbar();\n\t\t\treflowContent();\n\t\t});\n\t\t//init scrollbar size\n\t\tsetTimeout( sizeScrollbar, 10 );//safari wants a timeout\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"scroll-pane ui-widget ui-widget-header ui-corner-all\">\n\t<div class=\"scroll-content\">\n\t\t<div class=\"scroll-content-item ui-widget-header\">1</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">2</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">3</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">4</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">5</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">6</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">7</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">8</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">9</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">10</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">11</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">12</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">13</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">14</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">15</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">16</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">17</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">18</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">19</div>\n\t\t<div class=\"scroll-content-item ui-widget-header\">20</div>\n\t</div>\n\t<div class=\"scroll-bar-wrap ui-widget-content ui-corner-bottom\">\n\t\t<div class=\"scroll-bar\"></div>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Use a slider to manipulate the positioning of content on the page. In this case, it acts as a scrollbar with the potential to capture values if needed.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/slider-vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Vertical slider</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider-vertical\" ).slider({\n\t\t\torientation: \"vertical\",\n\t\t\trange: \"min\",\n\t\t\tmin: 0,\n\t\t\tmax: 100,\n\t\t\tvalue: 60,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( $( \"#slider-vertical\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Volume:</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider-vertical\" style=\"height:200px;\"></div>\n\n<div class=\"demo-description\">\n<p>Change the orientation of the slider to vertical.  Assign a height value via <code>.height()</code> or by setting the height through CSS, and set the <code>orientation</code> option to \"vertical.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/slider/steps.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Slider - Snap to increments</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.slider.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#slider\" ).slider({\n\t\t\tvalue:100,\n\t\t\tmin: 0,\n\t\t\tmax: 500,\n\t\t\tstep: 50,\n\t\t\tslide: function( event, ui ) {\n\t\t\t\t$( \"#amount\" ).val( \"$\" + ui.value );\n\t\t\t}\n\t\t});\n\t\t$( \"#amount\" ).val( \"$\" + $( \"#slider\" ).slider( \"value\" ) );\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"amount\">Donation amount ($50 increments):</label>\n\t<input type=\"text\" id=\"amount\" style=\"border:0; color:#f6931f; font-weight:bold;\" />\n</p>\n\n<div id=\"slider\"></div>\n\n<div class=\"demo-description\">\n<p>Increment slider values with the <code>step</code> option set to an integer, commonly a dividend of the slider's maximum value.  The default increment is 1.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists-through-tabs.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Connect lists with Tabs</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.droppable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1, #sortable2\" ).sortable().disableSelection();\n\n\t\tvar $tabs = $( \"#tabs\" ).tabs();\n\n\t\tvar $tab_items = $( \"ul:first li\", $tabs ).droppable({\n\t\t\taccept: \".connectedSortable li\",\n\t\t\thoverClass: \"ui-state-hover\",\n\t\t\tdrop: function( event, ui ) {\n\t\t\t\tvar $item = $( this );\n\t\t\t\tvar $list = $( $item.find( \"a\" ).attr( \"href\" ) )\n\t\t\t\t\t.find( \".connectedSortable\" );\n\n\t\t\t\tui.draggable.hide( \"slow\", function() {\n\t\t\t\t\t$tabs.tabs( \"select\", $tab_items.index( $item ) );\n\t\t\t\t\t$( this ).appendTo( $list ).show( \"slow\" );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<ul id=\"sortable1\" class=\"connectedSortable ui-helper-reset\">\n\t\t\t<li class=\"ui-state-default\">Item 1</li>\n\t\t\t<li class=\"ui-state-default\">Item 2</li>\n\t\t\t<li class=\"ui-state-default\">Item 3</li>\n\t\t\t<li class=\"ui-state-default\">Item 4</li>\n\t\t\t<li class=\"ui-state-default\">Item 5</li>\n\t\t</ul>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<ul id=\"sortable2\" class=\"connectedSortable ui-helper-reset\">\n\t\t\t<li class=\"ui-state-highlight\">Item 1</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 2</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 3</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 4</li>\n\t\t\t<li class=\"ui-state-highlight\">Item 5</li>\n\t\t</ul>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Sort items from one list into another and vice versa, by dropping the list item on the appropriate tab above.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/connect-lists.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Connect lists</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0 0 2.5em; float: left; margin-right: 10px; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1, #sortable2\" ).sortable({\n\t\t\tconnectWith: \".connectedSortable\"\n\t\t}).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable1\" class=\"connectedSortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<ul id=\"sortable2\" class=\"connectedSortable\">\n\t<li class=\"ui-state-highlight\">Item 1</li>\n\t<li class=\"ui-state-highlight\">Item 2</li>\n\t<li class=\"ui-state-highlight\">Item 3</li>\n\t<li class=\"ui-state-highlight\">Item 4</li>\n\t<li class=\"ui-state-highlight\">Item 5</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tSort items from one list into another and vice versa, by passing a selector into\n\tthe <code>connectWith</code> option. The simplest way to do this is to\n\tgroup all related lists with a CSS class, and then pass that class into the\n\tsortable function (i.e., <code>connectWith: '.myclass'</code>).\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }\n\t#sortable li span { position: absolute; margin-left: -1.3em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable();\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 1</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 2</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 3</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 4</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 5</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 6</li>\n\t<li class=\"ui-state-default\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span>Item 7</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tEnable a group of DOM elements to be sortable. Click on and drag an\n\telement to a new spot within the list, and the other items will adjust to\n\tfit. By default, sortable items share <code>draggable</code> properties.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/delay-start.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Delay start</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; margin-bottom: 15px;zoom: 1; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 95%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1\" ).sortable({\n\t\t\tdelay: 300\n\t\t});\n\n\t\t$( \"#sortable2\" ).sortable({\n\t\t\tdistance: 15\n\t\t});\n\n\t\t$( \"li\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Time delay of 300ms:</h3>\n\n<ul id=\"sortable1\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<h3 class=\"docs\">Distance delay of 15px:</h3>\n\n<ul id=\"sortable2\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tPrevent accidental sorting either by delay (time) or distance. Set a number of\n\tmilliseconds the element needs to be dragged before sorting starts\n\twith the <code>delay</code> option. Set a distance in pixels the element\n\tneeds to be dragged before sorting starts with the <code>distance</code>\n\toption.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/display-grid.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Display as grid</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 450px; }\n\t#sortable li { margin: 3px 3px 3px 0; padding: 1px; float: left; width: 100px; height: 90px; font-size: 4em; text-align: center; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable();\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">1</li>\n\t<li class=\"ui-state-default\">2</li>\n\t<li class=\"ui-state-default\">3</li>\n\t<li class=\"ui-state-default\">4</li>\n\t<li class=\"ui-state-default\">5</li>\n\t<li class=\"ui-state-default\">6</li>\n\t<li class=\"ui-state-default\">7</li>\n\t<li class=\"ui-state-default\">8</li>\n\t<li class=\"ui-state-default\">9</li>\n\t<li class=\"ui-state-default\">10</li>\n\t<li class=\"ui-state-default\">11</li>\n\t<li class=\"ui-state-default\">12</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tTo arrange sortable items as a grid, give them identical dimensions and\n\tfloat them using CSS.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/empty-lists.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Handle empty lists</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2, #sortable3 { list-style-type: none; margin: 0; padding: 0; float: left; margin-right: 10px; background: #eee; padding: 5px; width: 143px;}\n\t#sortable1 li, #sortable2 li, #sortable3 li { margin: 5px; padding: 5px; font-size: 1.2em; width: 120px; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"ul.droptrue\" ).sortable({\n\t\t\tconnectWith: \"ul\"\n\t\t});\n\n\t\t$( \"ul.dropfalse\" ).sortable({\n\t\t\tconnectWith: \"ul\",\n\t\t\tdropOnEmpty: false\n\t\t});\n\n\t\t$( \"#sortable1, #sortable2, #sortable3\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable1\" class='droptrue'>\n\t<li class=\"ui-state-default\">Can be dropped..</li>\n\t<li class=\"ui-state-default\">..on an empty list</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n</ul>\n\n<ul id=\"sortable2\" class='dropfalse'>\n\t<li class=\"ui-state-highlight\">Cannot be dropped..</li>\n\t<li class=\"ui-state-highlight\">..on an empty list</li>\n\t<li class=\"ui-state-highlight\">Item 3</li>\n\t<li class=\"ui-state-highlight\">Item 4</li>\n\t<li class=\"ui-state-highlight\">Item 5</li>\n</ul>\n\n<ul id=\"sortable3\" class='droptrue'>\n</ul>\n\n<br style=\"clear:both\">\n\n<div class=\"demo-description\">\n<p>\n\tPrevent all items in a list from being dropped into a separate, empty list\n\tusing the <code>dropOnEmpty</code> option set to <code>false</code>.  By default,\n\tsortable items can be dropped on empty lists.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"placeholder.html\">Drop placeholder</a></li>\n\t<li><a href=\"connect-lists.html\">Connect lists</a></li>\n\t<li><a href=\"connect-lists-through-tabs.html\">Connect lists through tabs</a></li>\n\t<li><a href=\"empty-lists.html\">Handle empty lists</a></li>\n\t<li><a href=\"items.html\">Include / exclude items</a></li>\n\t<li><a href=\"delay-start.html\">Delay start</a></li>\n\t<li><a href=\"display-grid.html\">Display as grid</a></li>\n\t<li><a href=\"portlets.html\">Portlets</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/items.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Include / exclude items</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable1, #sortable2 { list-style-type: none; margin: 0; padding: 0; zoom: 1; }\n\t#sortable1 li, #sortable2 li { margin: 0 5px 5px 5px; padding: 3px; width: 90%; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable1\" ).sortable({\n\t\t\titems: \"li:not(.ui-state-disabled)\"\n\t\t});\n\n\t\t$( \"#sortable2\" ).sortable({\n\t\t\tcancel: \".ui-state-disabled\"\n\t\t});\n\n\t\t$( \"#sortable1 li, #sortable2 li\" ).disableSelection();\t\t\n\t});\n\t</script>\n</head>\n<body>\n\n<h3 class=\"docs\">Specify which items are sortable:</h3>\n\n<ul id=\"sortable1\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable or a drop target)</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable or a drop target)</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<h3 class=\"docs\">Cancel sorting (but keep as drop targets):</h3>\n\n<ul id=\"sortable2\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable)</li>\n\t<li class=\"ui-state-default ui-state-disabled\">(I'm not sortable)</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tSpecify which items are eligible to sort by passing a jQuery selector into\n\tthe <code>items</code> option. Items excluded from this option are not\n\tsortable, nor are they valid targets for sortable items.\n</p>\n<p>\n\tTo only prevent sorting on certain items, pass a jQuery selector into the\n\t<code>cancel</code> option. Cancelled items remain valid sort targets for\n\tothers.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/placeholder.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Drop placeholder</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }\n\t#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }\n\thtml>body #sortable li { height: 1.5em; line-height: 1.2em; }\n\t.ui-state-highlight { height: 1.5em; line-height: 1.2em; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \"#sortable\" ).sortable({\n\t\t\tplaceholder: \"ui-state-highlight\"\n\t\t});\n\t\t$( \"#sortable\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<ul id=\"sortable\">\n\t<li class=\"ui-state-default\">Item 1</li>\n\t<li class=\"ui-state-default\">Item 2</li>\n\t<li class=\"ui-state-default\">Item 3</li>\n\t<li class=\"ui-state-default\">Item 4</li>\n\t<li class=\"ui-state-default\">Item 5</li>\n\t<li class=\"ui-state-default\">Item 6</li>\n\t<li class=\"ui-state-default\">Item 7</li>\n</ul>\n\n<div class=\"demo-description\">\n<p>\n\tWhen dragging a sortable item to a new location, other items will make room\n\tfor the that item by shifting to allow white space between them. Pass a\n\tclass into the <code>placeholder</code> option to style that space to\n\tbe visible.  Use the boolean <code>forcePlaceholderSize</code> option\n\tto set dimensions on the placeholder.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/sortable/portlets.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Sortable - Portlets</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.column { width: 170px; float: left; padding-bottom: 100px; }\n\t.portlet { margin: 0 1em 1em 0; }\n\t.portlet-header { margin: 0.3em; padding-bottom: 4px; padding-left: 0.2em; }\n\t.portlet-header .ui-icon { float: right; }\n\t.portlet-content { padding: 0.4em; }\n\t.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }\n\t.ui-sortable-placeholder * { visibility: hidden; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( \".column\" ).sortable({\n\t\t\tconnectWith: \".column\"\n\t\t});\n\n\t\t$( \".portlet\" ).addClass( \"ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\" )\n\t\t\t.find( \".portlet-header\" )\n\t\t\t\t.addClass( \"ui-widget-header ui-corner-all\" )\n\t\t\t\t.prepend( \"<span class='ui-icon ui-icon-minusthick'></span>\")\n\t\t\t\t.end()\n\t\t\t.find( \".portlet-content\" );\n\n\t\t$( \".portlet-header .ui-icon\" ).click(function() {\n\t\t\t$( this ).toggleClass( \"ui-icon-minusthick\" ).toggleClass( \"ui-icon-plusthick\" );\n\t\t\t$( this ).parents( \".portlet:first\" ).find( \".portlet-content\" ).toggle();\n\t\t});\n\n\t\t$( \".column\" ).disableSelection();\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Feeds</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">News</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Shopping</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"column\">\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Links</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n\t<div class=\"portlet\">\n\t\t<div class=\"portlet-header\">Images</div>\n\t\t<div class=\"portlet-content\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>\n\t</div>\n\n</div>\n\n<div class=\"demo-description\">\n<p>\n\tEnable portlets (styled divs) as sortables and use the <code>connectWith</code>\n\toption to allow sorting between columns.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/currency.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Currency</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../external/globalize.culture.ja-JP.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#currency\" ).change(function() {\n\t\t\t$( \"#spinner\" ).spinner( \"option\", \"culture\", $( this ).val() );\n\t\t});\n\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tmin: 5,\n\t\t\tmax: 2500,\n\t\t\tstep: 25,\n\t\t\tstart: 1000,\n\t\t\tnumberFormat: \"C\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"currency\">Currency to donate</label>\n\t<select id=\"currency\" name=\"currency\">\n\t\t<option value=\"en-US\">US $</option>\n\t\t<option value=\"de-DE\">EUR €</option>\n\t\t<option value=\"ja-JP\">YEN ¥</option>\n\t</select>\n</p>\n<p>\n\t<label for=\"spinner\">Amount to donate:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"5\">\n</p>\n\n<div class=\"demo-description\">\n<p>Example of a donation form, with currency selection and amount spinner.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/decimal.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Decimal</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../external/globalize.culture.ja-JP.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tstep: 0.01,\n\t\t\tnumberFormat: \"n\"\n\t\t});\n\n\t\t$( \"#culture\" ).change(function() {\n\t\t\tvar current = $( \"#spinner\" ).spinner( \"value\" );\n\t\t\tGlobalize.culture( $(this).val() );\n\t\t\t$( \"#spinner\" ).spinner( \"value\", current );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Decimal spinner:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"5.06\">\n</p>\n<p>\n\t<label for=\"culture\">Select a culture to use for formatting:</label>\n\t<select id=\"culture\">\n\t\t<option value=\"en-EN\" selected=\"selected\">English</option>\n\t\t<option value=\"de-DE\">German</option>\n\t\t<option value=\"ja-JP\">Japanese</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>\n\tExample of a decimal spinner. Step is set to 0.01.\n\t<br>The code handling the culture change reads the current spinner value,\n\tthen changes the culture, then sets the value again, resulting in an updated\n\tformatting, based on the new culture.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar spinner = $( \"#spinner\" ).spinner();\n\n\t\t$( \"#disable\" ).click(function() {\n\t\t\tif ( spinner.spinner( \"option\", \"disabled\" ) ) {\n\t\t\t\tspinner.spinner( \"enable\" );\n\t\t\t} else {\n\t\t\t\tspinner.spinner( \"disable\" );\n\t\t\t}\n\t\t});\n\t\t$( \"#destroy\" ).click(function() {\n\t\t\tif ( spinner.data( \"ui-spinner\" ) ) {\n\t\t\t\tspinner.spinner( \"destroy\" );\n\t\t\t} else {\n\t\t\t\tspinner.spinner();\n\t\t\t}\n\t\t});\n\t\t$( \"#getvalue\" ).click(function() {\n\t\t\talert( spinner.spinner( \"value\" ) );\n\t\t});\n\t\t$( \"#setvalue\" ).click(function() {\n\t\t\tspinner.spinner( \"value\", 5 );\n\t\t});\n\n\t\t$( \"button\" ).button();\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Select a value:</label>\n\t<input id=\"spinner\" name=\"value\">\n</p>\n\n<p>\n\t<button id=\"disable\">Toggle disable/enable</button>\n\t<button id=\"destroy\">Toggle widget</button>\n</p>\n\n<p>\n\t<button id=\"getvalue\">Get value</button>\n\t<button id=\"setvalue\">Set value to 5</button>\n</p>\n\n<div class=\"demo-description\">\n<p>Default spinner.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"decimal.html\">Decimal</a></li>\n\t<li><a href=\"currency.html\">Currency</a></li>\n\t<li><a href=\"latlong.html\">Map</a></li>\n\t<li><a href=\"time.html\">Time</a></li>\n\t<li><a href=\"overflow.html\">Overflow</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/latlong.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Map</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tfunction latlong() {\n\t\t\treturn new google.maps.LatLng( $(\"#lat\").val(), $(\"#lng\").val() );\n\t\t}\n\t\tfunction position() {\n\t\t\tmap.setCenter( latlong() );\n\t\t}\n\t\t$( \"#lat, #lng\" ).spinner({\n\t\t\tstep: .001,\n\t\t\tchange: position,\n\t\t\tstop: position\n\t\t});\n\n\t\tvar map = new google.maps.Map( $(\"#map\")[0], {\n\t\t\tzoom: 8,\n\t\t\tcenter: latlong(),\n\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t\t});\n\t});\n\t</script>\n\t<style>\n\t#map {\n\t\twidth:500px;\n\t\theight:500px;\n\t}\n\t</style>\n</head>\n<body>\n\n<label for=\"lat\">Latitude</label>\n<input id=\"lat\" name=\"lat\" value=\"44.797\">\n<br>\n<label for=\"lng\">Longitude</label>\n<input id=\"lng\" name=\"lng\" value=\"-93.278\">\n\n<div id=\"map\"></div>\n\n<div class=\"demo-description\">\n<p>Google Maps integration, using spinners to change latidude and longitude.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/overflow.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Overflow</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#spinner\" ).spinner({\n\t\t\tspin: function( event, ui ) {\n\t\t\t\tif ( ui.value > 10 ) {\n\t\t\t\t\t$( this ).spinner( \"value\", -10 );\n\t\t\t\t\treturn false;\n\t\t\t\t} else if ( ui.value < -10 ) {\n\t\t\t\t\t$( this ).spinner( \"value\", 10 );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Select a value:</label>\n\t<input id=\"spinner\" name=\"value\" />\n</p>\n\n<div class=\"demo-description\">\n<p>\nOverflowing spinner restricted to a range of -10 to 10.\nFor anything above 10, it'll overflow to -10, and the other way round.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/spinner/time.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Spinner - Time</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../external/jquery.mousewheel.js\"></script>\n\t<script src=\"../../external/globalize.js\"></script>\n\t<script src=\"../../external/globalize.culture.de-DE.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.spinner.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$.widget( \"ui.timespinner\", $.ui.spinner, {\n\t\toptions: {\n\t\t\t// seconds\n\t\t\tstep: 60 * 1000,\n\t\t\t// hours\n\t\t\tpage: 60\n\t\t},\n\n\t\t_parse: function( value ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t// already a timestamp\n\t\t\t\tif ( Number( value ) == value ) {\n\t\t\t\t\treturn Number( value );\n\t\t\t\t}\n\t\t\t\treturn +Globalize.parseDate( value );\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\n\t\t_format: function( value ) {\n\t\t\treturn Globalize.format( new Date(value), \"t\" );\n\t\t}\n\t});\n\n\t$(function() {\n\t\t$( \"#spinner\" ).timespinner();\n\n\t\t$( \"#culture\" ).change(function() {\n\t\t\tvar current = $( \"#spinner\" ).timespinner( \"value\" );\n\t\t\tGlobalize.culture( $(this).val() );\n\t\t\t$( \"#spinner\" ).timespinner( \"value\", current );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>\n\t<label for=\"spinner\">Time spinner:</label>\n\t<input id=\"spinner\" name=\"spinner\" value=\"08:30 PM\">\n</p>\n<p>\n\t<label for=\"culture\">Select a culture to use for formatting:</label>\n\t<select id=\"culture\">\n\t\t<option value=\"en-EN\" selected=\"selected\">English</option>\n\t\t<option value=\"de-DE\">German</option>\n\t</select>\n</p>\n\n<div class=\"demo-description\">\n<p>\n\tA custom widget extending spinner. Use the Globalization plugin to parse and output\n\ta timestamp, with custom step and page options. Cursor up/down spins minutes, page up/down\n\tspins hours.\n</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content1.html",
    "content": "<p><strong>This content was loaded via ajax.</strong></p>\n<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n<p>Mauris vitae ante. Curabitur augue. Nulla purus nibh, lobortis ut, feugiat at, aliquam id, purus. Sed venenatis, lorem venenatis volutpat commodo, purus quam lacinia justo, mattis interdum pede pede a odio. Fusce nibh. Morbi nisl mauris, dapibus in, tristique eget, accumsan et, pede. Donec mauris risus, pulvinar ut, faucibus eu, mollis in, nunc. In augue massa, commodo a, cursus vehicula, varius eu, dui. Suspendisse sodales suscipit lorem. Morbi malesuada, eros quis condimentum dignissim, lectus nibh tristique urna, non bibendum diam massa vel risus. Morbi suscipit. Proin egestas, eros at scelerisque scelerisque, dolor lacus fringilla lacus, ut ullamcorper mi magna at quam. Aliquam sed elit. Aliquam turpis purus, congue quis, iaculis id, ullamcorper sit amet, justo. Maecenas sed mauris. Proin magna justo, interdum in, tincidunt eu, viverra eu, turpis. Suspendisse mollis. In magna. Phasellus pellentesque, urna pellentesque convallis pellentesque, augue sem blandit pede, at rhoncus libero nisl a odio.</p>\n<p>Sed vitae nibh non magna semper tempor. Duis dolor. Nam congue laoreet arcu. Fusce lobortis enim quis ligula. Maecenas commodo odio id mi. Maecenas scelerisque tellus eu odio. Etiam dolor purus, lacinia a, imperdiet in, aliquam et, eros. In pellentesque. Nullam ac massa. Integer et turpis. Ut quam augue, congue non, imperdiet id, eleifend ac, nisi. Etiam ac arcu. Cras iaculis accumsan erat. Nullam vulputate sapien nec nisi pretium rhoncus. Aliquam a nibh. Vivamus est ante, fermentum a, tincidunt ut, imperdiet nec, velit. Aenean non tortor. Sed nec mauris eget tellus condimentum rutrum.</p>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content2.html",
    "content": "<p><strong>This other content was loaded via ajax.</strong></p>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.</p>\n<p>Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.</p>\n<p>Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.</p>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content3-slow.php",
    "content": "<?php\nsleep(1);\n?>\n<p><strong>This content was loaded via ajax, though it took a second.</strong></p>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec turpis justo, et facilisis ligula. In congue interdum odio, a scelerisque eros posuere ac. Aenean massa tellus, dictum sit amet laoreet ut, aliquam in orci. Duis eu aliquam ligula. Nullam vel placerat ligula. Fusce venenatis viverra dictum. Phasellus dui dolor, imperdiet in sodales at, mattis sed libero. Morbi ac ipsum ligula. Quisque suscipit dui vel diam pretium nec cursus lacus malesuada. Donec sollicitudin, eros eget dignissim mollis, risus leo feugiat tellus, vel posuere nisl ipsum eu erat. Quisque posuere lacinia imperdiet. Quisque nunc leo, elementum quis ultricies et, vehicula sit amet turpis. Nullam sed nunc nec nibh condimentum mattis. Quisque sed ligula sit amet nisi ultricies bibendum eget id nisi.</p>\n<p>Proin ut erat vel nunc tincidunt commodo. Curabitur feugiat, nisi et vehicula viverra, nisl orci eleifend arcu, sed blandit lectus nisl quis nisi. In hac habitasse platea dictumst. In hac habitasse platea dictumst. Aenean rutrum gravida velit ac imperdiet. Integer vitae arcu risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin tincidunt orci at leo egestas porta. Vivamus ac augue et enim bibendum hendrerit ut id urna. Donec sollicitudin pulvinar turpis vitae scelerisque. Etiam tempor porttitor est sed blandit. Phasellus varius consequat leo eget tincidunt. Aliquam ac dui lectus. In et consectetur orci. Duis posuere nulla ac turpis faucibus vestibulum. Sed ut velit et dolor rhoncus dapibus. Sed sit amet pellentesque est.</p>\n<p>Nam in volutpat orci. Morbi sit amet orci in erat egestas dignissim. Etiam mi sapien, tempus sed iaculis a, adipiscing quis tellus. Suspendisse potenti. Nam malesuada tristique vestibulum. In tempor tellus dignissim neque consectetur eu vestibulum nisl pellentesque. Phasellus ultrices cursus velit, id aliquam nisl fringilla quis. Cras varius elit sed urna ultrices congue. Sed ornare odio sed velit pellentesque id varius nisl sodales. Sed auctor ligula egestas mi pharetra ut consectetur erat pharetra.</p>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax/content4-broken.php",
    "content": "<?php \nheader(\"HTTP/1.0 404 Not Found\");\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/ajax.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Content via Ajax</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tbeforeLoad: function( event, ui ) {\n\t\t\t\tui.jqXHR.error(function() {\n\t\t\t\t\tui.panel.html(\n\t\t\t\t\t\t\"Couldn't load this tab. We'll try to fix this as soon as possible. \" +\n\t\t\t\t\t\t\"If this wouldn't be a demo.\" );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Preloaded</a></li>\n\t\t<li><a href=\"ajax/content1.html\">Tab 1</a></li>\n\t\t<li><a href=\"ajax/content2.html\">Tab 2</a></li>\n\t\t<li><a href=\"ajax/content3-slow.php\">Tab 3 (slow)</a></li>\n\t\t<li><a href=\"ajax/content4-broken.php\">Tab 4 (broken)</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Fetch external content via Ajax for the tabs by setting an href value in the tab links.  While the Ajax request is waiting for a response, the tab label changes to say \"Loading...\", then returns to the normal label once loaded.</p>\n<p>Tabs 3 and 4 demonstrate slow-loading and broken AJAX tabs, and how to handle serverside errors in those cases. Note: These two require a webserver to interpret PHP. They won't work from the filesystem.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/bottom.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Tabs at bottom</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs();\n\n\t\t// fix the classes\n\t\t$( \".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *\" )\n\t\t\t.removeClass( \"ui-corner-all ui-corner-top\" )\n\t\t\t.addClass( \"ui-corner-bottom\" );\n\n\t\t// move the nav to the bottom\n\t\t$( \".tabs-bottom .ui-tabs-nav\" ).appendTo( \".tabs-bottom\" );\n\t});\n\t</script>\n\t<style>\n\t/* force a height so the tabs don't jump as content height changes */\n\t#tabs .tabs-spacer { float: left; height: 200px; }\n\t.tabs-bottom .ui-tabs-nav { clear: left; padding: 0 .2em .2em .2em; }\n\t.tabs-bottom .ui-tabs-nav li { top: auto; bottom: 0; margin: 0 .2em 1px 0; border-bottom: auto; border-top: 0; }\n\t.tabs-bottom .ui-tabs-nav li.ui-tabs-active { margin-top: -1px; padding-top: 1px; }\n\t</style>\n</head>\n<body>\n\n<div id=\"tabs\" class=\"tabs-bottom\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div class=\"tabs-spacer\"></div>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>With some additional CSS (for positioning) and JS (to put the right classes on elements) the tabs can be placed below their content.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/collapsible.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Collapse content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tcollapsible: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p><strong>Click this tab again to close the content pane.</strong></p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click the selected tab to toggle its content closed/open.  To enable this functionality, set the <code>collapsible</code> option to true.</p>\n<pre><code>collapsible: true\n</code></pre>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs();\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click tabs to swap between content that is broken into logical sections.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"ajax.html\">Content via Ajax</a></li>\n\t<li><a href=\"mouseover.html\">Open on mouseover</a></li>\n\t<li><a href=\"collapsible.html\">Collapse content</a></li>\n\t<li><a href=\"sortable.html\">Sortable</a></li>\n\t<li><a href=\"manipulation.html\">Simple manipulation</a></li>\n\t<li><a href=\"bottom.html\">Tabs below content</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/manipulation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Simple manipulation</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<script src=\"../../ui/jquery.ui.dialog.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t#dialog label, #dialog input { display:block; }\n\t#dialog label { margin-top: 0.5em; }\n\t#dialog input, #dialog textarea { width: 95%; }\n\t#tabs { margin-top: 1em; }\n\t#tabs li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }\n\t#add_tab { cursor: pointer; }\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar tabTitle = $( \"#tab_title\" ),\n\t\t\ttabContent = $( \"#tab_content\" ),\n\t\t\ttabTemplate = \"<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>\",\n\t\t\ttabCounter = 2;\n\n\t\tvar tabs = $( \"#tabs\" ).tabs();\n\n\t\t// modal dialog init: custom buttons and a \"close\" callback reseting the form inside\n\t\tvar dialog = $( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\tmodal: true,\n\t\t\tbuttons: {\n\t\t\t\tAdd: function() {\n\t\t\t\t\taddTab();\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tform[ 0 ].reset();\n\t\t\t}\n\t\t});\n\n\t\t// addTab form: calls addTab function on submit and closes the dialog\n\t\tvar form = dialog.find( \"form\" ).submit(function( event ) {\n\t\t\taddTab();\n\t\t\tdialog.dialog( \"close\" );\n\t\t\tevent.preventDefault();\n\t\t});\n\n\t\t// actual addTab function: adds new tab using the input from the form above\n\t\tfunction addTab() {\n\t\t\tvar label = tabTitle.val() || \"Tab \" + tabCounter,\n\t\t\t\tid = \"tabs-\" + tabCounter,\n\t\t\t\tli = $( tabTemplate.replace( /#\\{href\\}/g, \"#\" + id ).replace( /#\\{label\\}/g, label ) ),\n\t\t\t\ttabContentHtml = tabContent.val() || \"Tab \" + tabCounter + \" content.\";\n\n\t\t\ttabs.find( \".ui-tabs-nav\" ).append( li );\n\t\t\ttabs.append( \"<div id='\" + id + \"'><p>\" + tabContentHtml + \"</p></div>\" );\n\t\t\ttabs.tabs( \"refresh\" );\n\t\t\ttabCounter++;\n\t\t}\n\n\t\t// addTab button: just opens the dialog\n\t\t$( \"#add_tab\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\tdialog.dialog( \"open\" );\n\t\t\t});\n\n\t\t// close icon: removing the tab on click\n\t\t$( \"#tabs span.ui-icon-close\" ).live( \"click\", function() {\n\t\t\tvar panelId = $( this ).closest( \"li\" ).remove().attr( \"aria-controls\" );\n\t\t\t$( \"#\" + panelId ).remove();\n\t\t\ttabs.tabs( \"refresh\" );\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"dialog\" title=\"Tab data\">\n\t<form>\n\t\t<fieldset class=\"ui-helper-reset\">\n\t\t\t<label for=\"tab_title\">Title</label>\n\t\t\t<input type=\"text\" name=\"tab_title\" id=\"tab_title\" value=\"\" class=\"ui-widget-content ui-corner-all\" />\n\t\t\t<label for=\"tab_content\">Content</label>\n\t\t\t<textarea name=\"tab_content\" id=\"tab_content\" class=\"ui-widget-content ui-corner-all\"></textarea>\n\t\t</fieldset>\n\t</form>\n</div>\n\n<button id=\"add_tab\">Add Tab</button>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a> <span class=\"ui-icon ui-icon-close\">Remove Tab</span></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Simple tabs adding and removing.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/mouseover.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Open on mouseover</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs({\n\t\t\tevent: \"mouseover\"\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Toggle sections open/closed on mouseover with the <code>event</code> option. The default value for event is \"click.\"</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Sortable</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.mouse.js\"></script>\n\t<script src=\"../../ui/jquery.ui.sortable.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\tvar tabs = $( \"#tabs\" ).tabs();\n\t\ttabs.find( \".ui-tabs-nav\" ).sortable({\n\t\t\taxis: \"x\",\n\t\t\tstop: function() {\n\t\t\t\ttabs.tabs( \"refresh\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Drag the tabs above to re-order them.</p>\n<p>Making tabs sortable is as simple as calling <code>.sortable()</code> on the <code>.ui-tabs-nav</code> element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tabs/vertical.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tabs - Vertical Tabs functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tabs.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#tabs\" ).tabs().addClass( \"ui-tabs-vertical ui-helper-clearfix\" );\n\t\t$( \"#tabs li\" ).removeClass( \"ui-corner-top\" ).addClass( \"ui-corner-left\" );\n\t});\n\t</script>\n\t<style>\n\t.ui-tabs-vertical { width: 55em; }\n\t.ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 12em; }\n\t.ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }\n\t.ui-tabs-vertical .ui-tabs-nav li a { display:block; }\n\t.ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }\n\t.ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}\n\t</style>\n</head>\n<body>\n\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\n\t\t<li><a href=\"#tabs-2\">Proin dolor</a></li>\n\t\t<li><a href=\"#tabs-3\">Aenean lacinia</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">\n\t\t<h2>Content heading 1</h2>\n\t\t<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>\n\t</div>\n\t<div id=\"tabs-2\">\n\t\t<h2>Content heading 2</h2>\n\t\t<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>\n\t</div>\n\t<div id=\"tabs-3\">\n\t\t<h2>Content heading 3</h2>\n\t\t<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>\n\t\t<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>\n\t</div>\n</div>\n\n<div class=\"demo-description\">\n<p>Click tabs to swap between content that is broken into logical sections.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content1.html",
    "content": "<p><strong>This content was loaded via ajax.</strong></p>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/ajax/content2.html",
    "content": "<p><strong>This other content was loaded via ajax.</strong></p>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-animation.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom animation demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-explode.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( \"#show-option\" ).tooltip({\n\t\t\tshow: {\n\t\t\t\teffect: \"slideDown\",\n\t\t\t\tdelay: 250\n\t\t\t}\n\t\t});\n\t\t$( \"#hide-option\" ).tooltip({\n\t\t\thide: {\n\t\t\t\teffect: \"explode\",\n\t\t\t\tdelay: 250\n\t\t\t}\n\t\t});\n\t\t$( \"#open-event\" ).tooltip({\n\t\t\tshow: null,\n\t\t\tposition: {\n\t\t\t\tmy: \"left top\",\n\t\t\t\tat: \"left bottom\"\n\t\t\t},\n\t\t\topen: function( event, ui ) {\n\t\t\t\tui.tooltip.animate({ top: ui.tooltip.position().top + 10 }, \"fast\" );\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p>There are various ways to customize the animation of a tooltip.</p>\n<p>You can use the <a id=\"show-option\" href=\"http://jqueryui.com/demos/tooltip/#option-show\" title=\"slide down on show\">show</a> and\n<a id=\"hide-option\" href=\"http://jqueryui.com/demos/tooltip/#option-hide\" title=\"explode on hide\">hide</a> options.</p>\n<p>You can also use the <a id=\"open-event\" href=\"http://jqueryui.com/demos/tooltip/#event-open\" title=\"move down on show\">open event</a>.</p>\n\n<div class=\"demo-description\">\n<p>This demo shows how to customize animations using the show and hide options,\nas well as the open event.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-content.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom content</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.photo {\n\t\twidth: 300px;\n\t\ttext-align: center;\n\t}\n\t.photo .ui-widget-header {\n\t\tmargin: 1em 0;\n\t}\n\t.map {\n\t\twidth: 350px;\n\t\theight: 350px;\n\t}\n\t.ui-tooltip {\n\t\tmax-width: 350px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\titems: \"img, [data-geo], [title]\",\n\t\t\tcontent: function() {\n\t\t\t\tvar element = $( this );\n\t\t\t\tif ( element.is( \"[data-geo]\" ) ) {\n\t\t\t\t\tvar text = element.text();\n\t\t\t\t\treturn \"<img class='map' alt='\" + text +\n\t\t\t\t\t\t\"' src='http://maps.google.com/maps/api/staticmap?\" +\n\t\t\t\t\t\t\"zoom=11&size=350x350&maptype=terrain&sensor=false&center=\" +\n\t\t\t\t\t\ttext + \"'>\";\n\t\t\t\t}\n\t\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\t\treturn element.attr( \"title\" );\n\t\t\t\t}\n\t\t\t\tif ( element.is( \"img\" ) ) {\n\t\t\t\t\treturn element.attr( \"alt\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"ui-widget photo\">\n\t<div class=\"ui-widget-header ui-corner-all\">\n\t\t<h2>St. Stephen's Cathedral</h2>\n\t\t<h3><a href=\"http://maps.google.com/maps?q=vienna,+austria&amp;z=11\" data-geo>Vienna, Austria</a></h3>\n\t</div>\n\t<a href=\"http://en.wikipedia.org/wiki/File:Wien_Stefansdom_DSC02656.JPG\">\n\t\t<img src=\"images/st-stephens.jpg\" alt=\"St. Stephen's Cathedral\" class=\"ui-corner-all\">\n\t</a>\n</div>\n\n<div class=\"ui-widget photo\">\n\t<div class=\"ui-widget-header ui-corner-all\">\n\t\t<h2>Tower Bridge</h2>\n\t\t<h3><a href=\"http://maps.google.com/maps?q=london,+england&amp;z=11\" data-geo>London, England</a></h3>\n\t</div>\n\t<a href=\"http://en.wikipedia.org/wiki/File:Tower_bridge_London_Twilight_-_November_2006.jpg\">\n\t\t<img src=\"images/tower-bridge.jpg\" alt=\"Tower Bridge\" class=\"ui-corner-all\">\n\t</a>\n</div>\n\n<p>All images are part of <a href=\"http://commons.wikimedia.org/wiki/Main_Page\">Wikimedia Commons</a>\nand are licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.en\" title=\"Creative Commons Attribution-ShareAlike 3.0\">CC BY-SA 3.0</a> by the copyright holder.</p>\n\n<div class=\"demo-description\">\n<p>Shows how to combine different event delegated tooltips into a single instance, by customizing the items and content options.</p>\n<p>We realize you may want to interact with the map tooltips. This is a planned feature for a future version.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/custom-style.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Custom Styling</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.tooltip.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\tposition: {\n\t\t\t\tmy: \"center bottom-20\",\n\t\t\t\tat: \"center top\",\n\t\t\t\tusing: function( position, feedback ) {\n\t\t\t\t\t$( this ).css( position );\n\t\t\t\t\t$( \"<div>\" )\n\t\t\t\t\t\t.addClass( \"arrow\" )\n\t\t\t\t\t\t.addClass( feedback.vertical )\n\t\t\t\t\t\t.addClass( feedback.horizontal )\n\t\t\t\t\t\t.appendTo( this );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n\t<style>\n\t.ui-tooltip, .arrow:after {\n\t\tbackground: black;\n\t\tborder: 2px solid white;\n\t}\n\t.ui-tooltip {\n\t\tpadding: 10px 20px;\n\t\tcolor: white;\n\t\tborder-radius: 20px;\n\t\tfont: bold 14px \"Helvetica Neue\", Sans-Serif;\n\t\ttext-transform: uppercase;\n\t\tbox-shadow: 0 0 7px black;\n\t}\n\t.arrow {\n\t\twidth: 70px;\n\t\theight: 16px;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\tmargin-left: -35px;\n\t\tbottom: -16px;\n\t}\n\t.arrow.top {\n\t\ttop: -16px;\n\t\tbottom: auto;\n\t}\n\t.arrow.left {\n\t\tleft: 20%;\n\t}\n\t.arrow:after {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\tleft: 20px;\n\t\ttop: -20px;\n\t\twidth: 25px;\n\t\theight: 25px;\n\t\tbox-shadow: 6px 5px 9px -9px black;\n\t\t-webkit-transform: rotate(45deg);\n\t\t-moz-transform: rotate(45deg);\n\t\t-ms-transform: rotate(45deg);\n\t\t-o-transform: rotate(45deg);\n\t\ttranform: rotate(45deg);\n\t}\n\t.arrow.top:after {\n\t\tbottom: -20px;\n\t\ttop: auto;\n\t}\n\t</style>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label> <input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Hover the links above or use the tab key to cycle the focus on each element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip();\n\t});\n\t</script>\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block;\n\t\twidth: 5em;\n\t}\n\t</style>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label><input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Hover the links above or use the tab key to cycle the focus on each element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/forms.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Forms</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block; width: 5em;\n\t}\n\tfieldset div {\n\t\tmargin-bottom: 2em;\n\t}\n\tfieldset .help {\n\t\tdisplay: inline-block;\n\t}\n\t.ui-tooltip {\n\t\twidth: 210px;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tvar tooltips = $( \"[title]\" ).tooltip();\n\t\t$( \"<button>\" )\n\t\t\t.text( \"Show help\" )\n\t\t\t.button()\n\t\t\t.click(function() {\n\t\t\t\ttooltips.tooltip( \"open\" );\n\t\t\t})\n\t\t\t.insertAfter( \"form\" );\n\t});\n\t</script>\n</head>\n<body>\n\n<form>\n\t<fieldset>\n\t\t<div>\n\t\t\t<label for=\"firstname\">Firstname</label>\n\t\t\t<input id=\"firstname\" name=\"firstname\" title=\"Please provide your firstname.\">\n\t\t</div>\n\t\t<div>\n\t\t\t<label for=\"lastname\">Lastname</label>\n\t\t\t<input id=\"lastname\" name=\"lastname\" title=\"Please provide also your lastname.\">\n\t\t</div>\n\t\t<div>\n\t\t\t<label for=\"address\">Address</label>\n\t\t\t<input id=\"address\" name=\"address\" title=\"Your home or work address.\">\n\t\t</div>\n\t</fieldset>\n</form>\n\n<div class=\"demo-description\">\n<p>Use the button below to display the help texts, or just focus or mouseover the indivdual inputs.</p>\n<p>A fixed width is defined in CSS to make the tooltips look consistent when displayed all at once.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip Demos</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n\t<li><a href=\"custom-style.html\">Custom style with arrow</a></li>\n\t<li><a href=\"forms.html\">Forms with tooltips</a></li>\n\t<li><a href=\"tracking.html\">Track the mouse</a></li>\n\t<li><a href=\"custom-animation.html\">Custom animation</a></li>\n\t<li><a href=\"custom-content.html\">Custom content</a></li>\n\t<li><a href=\"video-player.html\">Video Player</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/tracking.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Track the mouse</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\tlabel {\n\t\tdisplay: inline-block;\n\t\twidth: 5em;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t$( document ).tooltip({\n\t\t\ttrack: true\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<p><a href=\"#\" title=\"That's what this widget is\">Tooltips</a> can be attached to any element. When you hover\nthe element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.</p>\n<p>But as it's not a native tooltip, it can be styled. Any themes built with\n<a href=\"http://themeroller.com\" title=\"ThemeRoller: jQuery UI's theme builder application\">ThemeRoller</a>\nwill also style tooltips accordingly.</p>\n<p>Tooltips are also useful for form elements, to show some additional information in the context of each field.</p>\n<p><label for=\"age\">Your age:</label><input id=\"age\" title=\"We ask for your age only for statistical purposes.\"></p>\n<p>Hover the field to see the tooltip.</p>\n\n<div class=\"demo-description\">\n<p>Here the tooltips are positioned relative to the mouse, and follow the mouse while it moves above the element.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/tooltip/video-player.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Tooltip - Video Player demo</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.tooltip.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<script src=\"../../ui/jquery.ui.menu.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect.js\"></script>\n\t<script src=\"../../ui/jquery.ui.effect-blind.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.player {\n\t\twidth: 500px;\n\t\theight: 300px;\n\t\tborder: 2px groove gray;\n\t\tbackground: rgb(200, 200, 200);\n\t\ttext-align: center;\n\t\tline-height: 300px;\n\t}\n\t.ui-tooltip {\n\t\tborder: 1px solid white;\n\t\tbackground: rgba(20, 20, 20, 1);\n\t\tcolor: white;\n\t}\n\t.set {\n\t\tdisplay: inline-block;\n\t}\n\t.notification {\n\t\tposition: absolute;\n\t\tdisplay: inline-block;\n\t\tfont-size: 2em;\n\t\tpadding: .5em;\n\t\tbox-shadow: 2px 2px 5px -2px rgba(0,0,0,0.5);\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\tfunction notify( input ) {\n\t\t\tvar msg = \"Selected \" + $.trim( input.data( \"tooltip-title\" ) || input.text() );\n\t\t\t$( \"<div>\" )\n\t\t\t\t.appendTo( document.body )\n\t\t\t\t.text( msg )\n\t\t\t\t.addClass( \"notification ui-state-default ui-corner-bottom\" )\n\t\t\t\t.position({\n\t\t\t\t\tmy: \"center top\",\n\t\t\t\t\tat: \"center top\",\n\t\t\t\t\tof: window\n\t\t\t\t})\n\t\t\t\t.show({\n\t\t\t\t\teffect: \"blind\"\n\t\t\t\t})\n\t\t\t\t.delay( 1000 )\n\t\t\t\t.hide({\n\t\t\t\t\teffect: \"blind\",\n\t\t\t\t\tduration: \"slow\"\n\t\t\t\t}, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t});\n\t\t}\n\n\t\t$( \"button\" ).each(function() {\n\t\t\tvar button = $( this ).button({\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: $( this ).data( \"icon\" )\n\t\t\t\t},\n\t\t\t\ttext: !!$( this ).attr( \"title\" )\n\t\t\t});\n\t\t\tbutton.click(function() {\n\t\t\t\tnotify( button );\n\t\t\t});\n\t\t});\n\t\t$( \".set\" ).buttonset({\n\t\t\titems: \"button\"\n\t\t});\n\n\t\t$( document ).tooltip({\n\t\t\tposition: {\n\t\t\t\tmy: \"center top\",\n\t\t\t\tat: \"center bottom+5\",\n\t\t\t},\n\t\t\tshow: {\n\t\t\t\tduration: \"fast\"\n\t\t\t},\n\t\t\thide: {\n\t\t\t\teffect: \"hide\"\n\t\t\t}\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div class=\"player\">Here Be Video (HTML5?)</div>\n<div class=\"tools\">\n\t<span class=\"set\">\n\t\t<button data-icon=\"ui-icon-circle-arrow-n\" title=\"I like this\">Like</button>\n\t\t<button data-icon=\"ui-icon-circle-arrow-s\">I dislike this</button>\n\t</span>\n\t<div class=\"set\">\n\t\t<button data-icon=\"ui-icon-circle-plus\" title=\"Add to Watch Later\">Add to</button>\n\t\t<button class=\"menu\" data-icon=\"ui-icon-triangle-1-s\">Add to favorites or playlist</button>\n\t</div>\n\t<button title=\"Share this video\">Share</button>\n\t<button data-icon=\"ui-icon-alert\">Flag as inappropiate</button>\n</div>\n\n<div class=\"demo-description\">\n<p>A fake video player with like/share/stats button, each with a custom-styled tooltip.</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/default.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Widget - Default functionality</title>\n\t<link rel=\"stylesheet\" href=\"../../themes/base/jquery.ui.all.css\">\n\t<script src=\"../../jquery-1.8.3.js\"></script>\n\t<script src=\"../../ui/jquery.ui.core.js\"></script>\n\t<script src=\"../../ui/jquery.ui.position.js\"></script>\n\t<script src=\"../../ui/jquery.ui.widget.js\"></script>\n\t<script src=\"../../ui/jquery.ui.button.js\"></script>\n\t<link rel=\"stylesheet\" href=\"../demos.css\">\n\t<style>\n\t.custom-colorize {\n\t\tfont-size: 20px;\n\t\tposition: relative;\n\t\twidth: 75px;\n\t\theight: 75px;\n\t}\n\t.custom-colorize-changer {\n\t\tfont-size: 10px;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t}\n\t</style>\n\t<script>\n\t$(function() {\n\t\t// the widget definition, where \"custom\" is the namespace,\n\t\t// \"colorize\" the widget name\n\t\t$.widget( \"custom.colorize\", {\n\t\t\t// default options\n\t\t\toptions: {\n\t\t\t\tred: 255,\n\t\t\t\tgreen: 0,\n\t\t\t\tblue: 0,\n\n\t\t\t\t// callbacks\n\t\t\t\tchange: null,\n\t\t\t\trandom: null\n\t\t\t},\n\n\t\t\t// the constructor\n\t\t\t_create: function() {\n\t\t\t\tthis.element\n\t\t\t\t\t// add a class for theming\n\t\t\t\t\t.addClass( \"custom-colorize\" )\n\t\t\t\t\t// prevent double click to select text\n\t\t\t\t\t.disableSelection();\n\n\t\t\t\tthis.changer = $( \"<button>\", {\n\t\t\t\t\ttext: \"change\",\n\t\t\t\t\t\"class\": \"custom-colorize-changer\"\n\t\t\t\t})\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.button();\n\n\t\t\t\t// bind click events on the changer button to the random method\n\t\t\t\tthis._on( this.changer, {\n\t\t\t\t\t// _on won't call random when widget is disabled\n\t\t\t\t\tclick: \"random\"\n\t\t\t\t});\n\t\t\t\tthis._refresh();\n\t\t\t},\n\n\t\t\t// called when created, and later when changing options\n\t\t\t_refresh: function() {\n\t\t\t\tthis.element.css( \"background-color\", \"rgb(\" +\n\t\t\t\t\tthis.options.red +\",\" +\n\t\t\t\t\tthis.options.green + \",\" +\n\t\t\t\t\tthis.options.blue + \")\"\n\t\t\t\t);\n\n\t\t\t\t// trigger a callback/event\n\t\t\t\tthis._trigger( \"change\" );\n\t\t\t},\n\n\t\t\t// a public method to change the color to a random value\n\t\t\t// can be called directly via .colorize( \"random\" )\n\t\t\trandom: function( event ) {\n\t\t\t\tvar colors = {\n\t\t\t\t\tred: Math.floor( Math.random() * 256 ),\n\t\t\t\t\tgreen: Math.floor( Math.random() * 256 ),\n\t\t\t\t\tblue: Math.floor( Math.random() * 256 )\n\t\t\t\t};\n\n\t\t\t\t// trigger an event, check if it's canceled\n\t\t\t\tif ( this._trigger( \"random\", event, colors ) !== false ) {\n\t\t\t\t\tthis.option( colors );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// events bound via _on are removed automatically\n\t\t\t// revert other modifications here\n\t\t\t_destroy: function() {\n\t\t\t\t// remove generated elements\n\t\t\t\tthis.changer.remove();\n\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"custom-colorize\" )\n\t\t\t\t\t.enableSelection()\n\t\t\t\t\t.css( \"background-color\", \"transparent\" );\n\t\t\t},\n\n\t\t\t// _setOptions is called with a hash of all options that are changing\n\t\t\t// always refresh when changing options\n\t\t\t_setOptions: function() {\n\t\t\t\t// _super and _superApply handle keeping the right this-context\n\t\t\t\tthis._superApply( arguments );\n\t\t\t\tthis._refresh();\n\t\t\t},\n\n\t\t\t// _setOption is called for each individual option that is changing\n\t\t\t_setOption: function( key, value ) {\n\t\t\t\t// prevent invalid color values\n\t\t\t\tif ( /red|green|blue/.test(key) && (value < 0 || value > 255) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._super( key, value );\n\t\t\t}\n\t\t});\n\n\t\t// initialize with default options\n\t\t$( \"#my-widget1\" ).colorize();\n\n\t\t// initialize with two customized options\n\t\t$( \"#my-widget2\" ).colorize({\n\t\t\tred: 60,\n\t\t\tblue: 60\n\t\t});\n\n\t\t// initialize with custom green value\n\t\t// and a random callback to allow only colors with enough green\n\t\t$( \"#my-widget3\" ).colorize( {\n\t\t\tgreen: 128,\n\t\t\trandom: function( event, ui ) {\n\t\t\t\treturn ui.green > 128;\n\t\t\t}\n\t\t});\n\n\t\t// click to toggle enabled/disabled\n\t\t$( \"#disable\" ).click(function() {\n\t\t\t// use the custom selector created for each widget to find all instances\n\t\t\t// all instances are toggled together, so we can check the state from the first\n\t\t\tif ( $( \":custom-colorize\" ).colorize( \"option\", \"disabled\" ) ) {\n\t\t\t\t$( \":custom-colorize\" ).colorize( \"enable\" );\n\t\t\t} else {\n\t\t\t\t$( \":custom-colorize\" ).colorize( \"disable\" );\n\t\t\t}\n\t\t});\n\n\t\t// click to set options after initalization\n\t\t$( \"#black\" ).click( function() {\n\t\t\t$( \":custom-colorize\" ).colorize( \"option\", {\n\t\t\t\tred: 0,\n\t\t\t\tgreen: 0,\n\t\t\t\tblue: 0\n\t\t\t});\n\t\t});\n\t});\n\t</script>\n</head>\n<body>\n\n<div>\n\t<div id=\"my-widget1\">color me</div>\n\t<div id=\"my-widget2\">color me</div>\n\t<div id=\"my-widget3\">color me</div>\n\t<button id=\"disable\">Toggle disabled option</button>\n\t<button id=\"black\">Go black</button>\n</div>\n\n<div class=\"demo-description\">\n<p>This demo shows a simple custom widget built using the widget factory (jquery.ui.widget.js).</p>\n<p>The three boxes are initialized in different ways. Clicking them changes their background color. View source to see how it works, its heavily commented</p>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/demos/widget/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Widget Demo</title>\n</head>\n<body>\n\n<ul>\n\t<li><a href=\"default.html\">Default functionality</a></li>\n</ul>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/accordion.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI accordion documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Accordion Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Convert a pair of headers and content panels into an accordion.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-active\">active</a></div>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-collapsible\">collapsible</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-event\">event</a></div>\n<div><a href=\"#option-header\">header</a></div>\n<div><a href=\"#option-heightStyle\">heightStyle</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-beforeActivate\">beforeActivate</a></div>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"accordion1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Accordion Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Convert a pair of headers and content panels into an accordion.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-active\" class=\"api-item first-item\">\n<h3>active<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>\n\t\t\t\tWhich panel is currently open.\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Setting <code>active</code> to <code>false</code> will collapse all panels. This requires the <a href=\"#option-collapsible\"><code>collapsible</code></a> option to be <code>true</code>.</li>\n<li>\n<strong>Integer</strong>: The zero-based index of the panel that is active (open). A negative value selects panels going backward from the last panel.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the accordion with the active option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ active: 2 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the active option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">active = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code><code class=\"plain\">, 2 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animate\" class=\"api-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>If and how to animate changing panels.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: A value of <code>false</code> will disable animations.</li>\n<li>\n<strong>Number</strong>: Duration in milliseconds with default easing.</li>\n<li>\n<strong>String</strong>: Name of <a href=\"/easings/\">easing</a> to use with default duration.</li>\n<li>\n<strong>Object</strong>: Animation settings with <code>easing</code> and <code>duration</code> properties.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Can also contain a <code>down</code> property with any of the above options.</li>\n\t\t\t\t\t\t<li>\"Down\" animations occur when the panel being activated has a lower index than the currently active panel.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the accordion with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ animate: </code><code class=\"string\">\"bounceslide\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"string\">\"bounceslide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-collapsible\" class=\"api-item\">\n<h3>collapsible<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether all the sections can be closed at once. Allows collapsing the active section.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the collapsible option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ collapsible: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the collapsible option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">collapsible = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the accordion if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-event\" class=\"api-item\">\n<h3>event<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"click\"</code>\n</div>\n<div>The event that accordion headers will react to in order to activate the associated panel. Multiple events can be specificed, separated by a space.</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the event option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ event: </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the event option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">event = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code><code class=\"plain\">, </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-header\" class=\"api-item\">\n<h3>header<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"&gt; li &gt; :first-child,&gt; :not(li):even\"</code>\n</div>\n<div>\n\t\t\t\t<p>Selector for the header element, applied via <code>.find()</code> on the main accordion element. Content panels must be the sibling immedately after their associated headers.</p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the header option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ header: </code><code class=\"string\">\"h3\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the header option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">header = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"header\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"header\"</code><code class=\"plain\">, </code><code class=\"string\">\"h3\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-heightStyle\" class=\"api-item\">\n<h3>heightStyle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>\n\t\t\t\t<p>Controls the height of the accordion and each panel. Possible values:</p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"auto\"</code>: All panels will be set to the height of the tallest panel.</li>\n\t\t\t\t\t<li>\n<code>\"fill\"</code>: Expand to the available height based on the accordion's parent height.</li>\n\t\t\t\t\t<li>\n<code>\"content\"</code>: Each panel will be only as tall as its content.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the heightStyle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ heightStyle: </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the heightStyle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">heightStyle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code><code class=\"plain\">, </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ \"header\": \"ui-icon-triangle-1-e\", \"activeHeader\": \"ui-icon-triangle-1-s\" }</code>\n</div>\n<div>\n\t\t\t\t<p>Icons to use for headers, matching an icon defined by the jQuery UI CSS Framework. Set to <code>false</code> to have no icons displayed.</p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>header (string, default: \"ui-icon-triangle-1-e\")</li>\n\t\t\t\t\t<li>activeHeader (string, default: \"ui-icon-triangle-1-s\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the accordion with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({ icons: { </code><code class=\"string\">\"header\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-plus\"</code><code class=\"plain\">, </code><code class=\"string\">\"headerSelected\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-minus\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { </code><code class=\"string\">\"header\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-plus\"</code><code class=\"plain\">, </code><code class=\"string\">\"headerSelected\"</code><code class=\"plain\">: </code><code class=\"string\">\"ui-icon-minus\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the accordion functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current accordion options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the accordion option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the accordion.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Recompute the height of the accordion panels. Results depend on the content and the <a href=\"#option-heightStyle\"><code>heightStyle</code></a> option.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the accordion.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>accordionactivate</code></span>\n</h3>\n<div>Triggered after a panel has been activated (after animation completes). If the accordion was previously collapsed, <code>ui.oldHeader</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the accordion is collapsing, <code>ui.newHeader</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that was just activated.</div>\n</li>\n<li>\n<div><strong>oldHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that was just deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordionactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordionactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeActivate\" class=\"api-item\">\n<h3>beforeActivate( event, ui )<span class=\"returns\">Type: <code>accordionbeforeactivate</code></span>\n</h3>\n<div>Triggered directly before a panel is activated. Can be canceled to prevent the panel from activating. If the accordion is currently collapsed, <code>ui.oldHeader</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the accordion is collapsing, <code>ui.newHeader</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldHeader</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The header that is about to be deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the beforeActivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeActivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordionbeforeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordionbeforeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>accordioncreate</code></span>\n</h3>\n<div>Triggered when the accordion is created. If the accordion is collapsed, <code>ui.header</code> and <code>ui.panel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>header</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active header.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active panel.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the accordion with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).accordion({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the accordioncreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"accordioncreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The markup of your accordion container needs pairs of headers and content panels:</p>\n\n\t\t<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"accordion\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;First header&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;First content panel&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Second header&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;Second content panel&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n\n\t\t<p>Accordions support arbitrary markup, but each content panel must always be the next sibling after its associated header. See the <a href=\"#option-header\"><code>header</code></a> option for information on how to use custom markup structures.</p>\n\t\t<p>The panels can be activated programmatically by setting the <a href=\"#option-active\"><code>active</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When focus is on a header, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/LEFT - Move focus to the previous header. If on first header, moves focus to last header.</li>\n\t\t\t<li>DOWN/RIGHT - Move focus to the next header. If on last header, moves focus to first header.</li>\n\t\t\t<li>HOME - Move focus to the first header.</li>\n\t\t\t<li>END - Move focus to the last header.</li>\n\t\t\t<li>SPACE/ENTER - Activate panel associated with focused header.</li>\n\t\t</ul>\n\n\t\t<p>When focus is in a panel:</p>\n\t\t<ul>\n\t\t\t<li>CTRL+UP: Move focus to associated header.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Accordion</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;accordion demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"accordion\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 1&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Mauris mauris ante, blandit et, ultrices a, suscipit eget.</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Integer ut neque. Vivamus nisi metus, molestie vel, gravida in,</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros.</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Nam mi. Proin viverra leo ut odio.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 2&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Sed non urna. Phasellus eu ligula. Vestibulum sit amet purus.</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Vivamus hendrerit, dolor aliquet laoreet, mauris turpis velit,</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">faucibus interdum tellus libero ac justo.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;Section 3&lt;/</code><code class=\"keyword\">h3</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Nam enim risus, molestie et, porta ac, aliquam ac, risus.</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Quisque lobortis.Phasellus pellentesque purus in massa.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item one&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item two&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;List item three&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number37 index36 alt2\">&nbsp;</div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">$( \"#accordion\" ).accordion();</code></div><div class=\"line number40 index39 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number41 index40 alt2\">&nbsp;</div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number43 index42 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"350\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/autocomplete.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI autocomplete documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Autocomplete Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Autocomplete enables users to quickly find and select from a pre-populated list of values as they type, leveraging searching and filtering.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-autoFocus\">autoFocus</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-minLength\">minLength</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-source\">source</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-search\">search</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-close\">close</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-response\">response</a></div>\n<div><a href=\"#event-search\">search</a></div>\n<div><a href=\"#event-select\">select</a></div>\n</div></section><article id=\"autocomplete1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Autocomplete Widget</span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Autocomplete enables users to quickly find and select from a pre-populated list of values as they type, leveraging searching and filtering.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"body\"</code>\n</div>\n<div>Which element the menu should be appended to. Override this when the autocomplete is inside a <code>position: fixed</code> element. Otherwise the popup menu would still scroll with the page.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ appendTo: </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoFocus\" class=\"api-item\">\n<h3>autoFocus<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code> the first item will automatically be focused when the menu is shown.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the autoFocus option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ autoFocus: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoFocus option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoFocus = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoFocus\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoFocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>300</code>\n</div>\n<div>The delay in milliseconds between when a keystroke occurs and when a search is performed. A zero-delay makes sense for local data (more responsive), but can produce a lot of load for remote data, while being less responsive.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ delay: 500 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 500 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the autocomplete if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minLength\" class=\"api-item\">\n<h3>minLength<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The minimum number of characters a user must type before a search is performed. Zero is useful for local data with just a few items, but a higher value should be used when a single character search could match a few thousand items.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the minLength option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ minLength: 0 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minLength option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minLength = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minLength\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minLength\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top\", at: \"left bottom\", collision: \"none\" }</code>\n</div>\n<div>Identifies the position of the suggestions menu in relation to the associated input element. The <code>of</code> option defaults to the input element, but you can specify another element to position against. You can refer to the <a href=\"/position\">jQuery UI Position</a> utility for more details about the various options.</div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ position: { my : </code><code class=\"string\">\"right top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right bottom\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my : </code><code class=\"string\">\"right top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right bottom\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-source\" class=\"api-item\">\n<h3>source<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Object\">Object</a> request, <a href=\"http://api.jquery.com/Types#Function\">Function</a> response( <a href=\"http://api.jquery.com/Types#Object\">Object</a> data ) )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>none; must be specified</code>\n</div>\n<div>\n\t\t\t\tDefines the data to use, must be specified.\n\t\t\t\t<p>Independent of the variant you use, the label is always treated as text. If you want the label to be treated as html you can use <a href=\"https://github.com/scottgonzalez/jquery-ui-extensions/blob/master/autocomplete/jquery.ui.autocomplete.html.js\">Scott González' html extension</a>. The demos all focus on different variations of the <code>source</code> option - look for one that matches your use case, and check out the code.</p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Array</strong>: \n\t\t\t\t\tAn array can be used for local data. There are two supported formats:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>An array of strings: <code>[ \"Choice1\", \"Choice2\" ]</code>\n</li>\n\t\t\t\t\t\t<li>An array of objects with <code>label</code> and <code>value</code> properties: <code>[ { label: \"Choice1\", value: \"value1\" }, ... ]</code>\n</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\tThe label property is displayed in the suggestion menu. The value will be inserted into the input element when a user selects an item. If just one property is specified, it will be used for both, e.g., if you provide only <code>value</code> properties, the value will also be used as the label.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: When a string is used, the Autocomplete plugin expects that string to point to a URL resource that will return JSON data. It can be on the same host or on a different one (must provide JSONP). The Autocomplete plugin does not filter the results, instead a query string is added with a <code>term</code> field, which the server-side script should use for filtering the results. For example, if the <code>source</code> option is set to <code>\"http://example.com\"</code> and the user types <code>foo</code>, a GET request would be made to <code>http://example.com?term=foo</code>. The data itself can be in the same format as the local data described above.</li>\n<li>\n<strong>Function</strong>: \n\t\t\t\t\tThe third variation, a callback, provides the most flexibility and can be used to connect any data source to Autocomplete. The callback gets two arguments:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>A <code>request</code> object, with a single <code>term</code> property, which refers to the value currently in the text input. For example, if the user enters <code>\"new yo\"</code> in a city field, the Autocomplete term will equal <code>\"new yo\"</code>.</li>\n\t\t\t\t\t\t<li>A <code>response</code> callback, which expects a single argument: the data to suggest to the user. This data should be filtered based on the provided term, and can be in any of the formats described above for simple local data. It's important when providing a custom source callback to handle errors during the request. You must always call the <code>response</code> callback even if you encounter an error. This ensures that the widget always has the correct state.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<p>When filtering data locally, you can make use of the built-in <code>$.ui.autocomplete.escapeRegex</code> function. It'll take a single string argument and escape all regex characters, making the result safe to pass to <code>new RegExp()</code>.</p>\n\t\t\t\t</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the source option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({ source: [ </code><code class=\"string\">\"c++\"</code><code class=\"plain\">, </code><code class=\"string\">\"java\"</code><code class=\"plain\">, </code><code class=\"string\">\"php\"</code><code class=\"plain\">, </code><code class=\"string\">\"coldfusion\"</code><code class=\"plain\">, </code><code class=\"string\">\"javascript\"</code><code class=\"plain\">, </code><code class=\"string\">\"asp\"</code><code class=\"plain\">, </code><code class=\"string\">\"ruby\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the source option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">source = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"source\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"source\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"c++\"</code><code class=\"plain\">, </code><code class=\"string\">\"java\"</code><code class=\"plain\">, </code><code class=\"string\">\"php\"</code><code class=\"plain\">, </code><code class=\"string\">\"coldfusion\"</code><code class=\"plain\">, </code><code class=\"string\">\"javascript\"</code><code class=\"plain\">, </code><code class=\"string\">\"asp\"</code><code class=\"plain\">, </code><code class=\"string\">\"ruby\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>Closes the Autocomplete menu. Useful in combination with the <a href=\"#method-search\"><code>search</code></a> method, to close the open menu.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the autocomplete functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the autocomplete.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the autocomplete.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current autocomplete options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the autocomplete option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the autocomplete.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-search\">\n<div class=\"api-item\">\n<h3>search(  [value ] )</h3>\n<div>Triggers a <a href=\"#event-search\"><code>search</code></a> event and invokes the data source if the event is not canceled. Can be used by a selectbox-like button to open the suggestions when clicked. When invoked with no parameters, the current input's value is used. Can be called with an empty string and <code>minLength: 0</code> to display all items.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div></div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the search method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"search\"</code><code class=\"plain\">, </code><code class=\"string\">\"\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget()</h3>\n<div>Returns a <code>jQuery</code> object containing the menu element. Although the menu items are constantly created and destroyed, the menu element itself is created during initialization and is constantly reused.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>autocompletechange</code></span>\n</h3>\n<div>Triggered when the field is blurred, if the value has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The item selected from the menu, if any. Otherwise the property is <code>null</code>.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletechange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletechange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-close\" class=\"api-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>autocompleteclose</code></span>\n</h3>\n<div>Triggered when the menu is hidden. Not every <code>close</code> event will be accompanied by a <code>change</code> event.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>autocompletecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the autocomplete is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>autocompletefocus</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when focus is moved to an item (not selecting). The default action is to replace the text field's value with the value of the focused item, though only if the event was triggered by a keyboard interaction.\n\t\t\t\t<p>Canceling this event prevents the value from being updated, but does not prevent the menu item from being focused.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The focused item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletefocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletefocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>autocompleteopen</code></span>\n</h3>\n<div>Triggered when the suggestion menu is opened or updated.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-response\" class=\"api-item\">\n<h3>response( event, ui )<span class=\"returns\">Type: <code>autocompleteresponse</code></span>\n</h3>\n<div>Triggered after a search completes, before the menu is shown. Useful for local manipulation of suggestion data, where a custom <a href=\"#option-source\"><code>source</code></a> option callback is not required. This event is always triggered when a search completes, even if the menu will not be shown because there are no results or the Autocomplete is disabled.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>content</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>Contains the response data and can be modified to change the results that will be shown. This data is already normalized, so if you modify the data, make sure to include both <code>value</code> and <code>label</code> properties for each item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the response callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">response: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteresponse event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteresponse\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-search\" class=\"api-item\">\n<h3>search( event, ui )<span class=\"returns\">Type: <code>autocompletesearch</code></span>\n</h3>\n<div>Triggered before a search is performed, after <a href=\"#option-minLength\"><code>minLength</code></a> and <a href=\"#option-delay\"><code>delay</code></a> are met. If canceled, then no request will be started and no items suggested.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the search callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">search: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompletesearch event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompletesearch\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-select\" class=\"api-item\">\n<h3>select( event, ui )<span class=\"returns\">Type: <code>autocompleteselect</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when an item is selected from the menu. The default action is to replace the text field's value with the value of the selected item.\n\t\t\t\t<p>Canceling this event prevents the value from being updated, but does not prevent the menu from closing.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The selected item.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the autocomplete with the select callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).autocomplete({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">select: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the autocompleteselect event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"autocompleteselect\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>By giving an Autocomplete field focus or entering something into it, the plugin starts searching for entries that match and displays a list of values to choose from. By entering more characters, the user can filter down the list to better matches.</p>\n\n\t\t<p>This can be used to choose previously selected values, such as entering tags for articles or entering email addresses from an address book. Autocomplete can also be used to populate associated information, such as entering a city name and getting the zip code.</p>\n\n\t\t<p>You can pull data in from a local or remote source: Local is good for small data sets, e.g., an address book with 50 entries; remote is necessary for big data sets, such as a database with hundreds or millions of entries to select from. To find out more about customizing the data soure, see the documentation for the <a href=\"#option-source\"><code>source</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When the menu is open, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP - Move focus to the previous item. If on first item, move focus to the input. If on the input, move focus to last item.</li>\n\t\t\t<li>DOWN - Move focus to the next item. If on last item, move focus to the input. If on the input, move focus to the first item.</li>\n\t\t\t<li>ESCAPE - Close the menu.</li>\n\t\t\t<li>ENTER - Select the currently focused item and close the menu.</li>\n\t\t\t<li>TAB - Select the currently focused item, close the menu, and move focus to the next focusable element.</li>\n\t\t\t<li>PAGE UP/DOWN - Scroll through a page of items (based on height of menu). <em>It's generally a bad idea to display so many items that users need to page.</em>.</li>\n\t\t</ul>\n\n\t\t<p>When the menu is closed, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/DOWN - Open the menu, if the <a href=\"#option-minLength\"><code>minLength</code></a> has been met.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Autocomplete</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;autocomplete demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;Select a programming language: &lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#autocomplete\" ).autocomplete({</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">source: [ \"c++\", \"java\", \"php\", \"coldfusion\", \"javascript\", \"asp\", \"ruby\" ]</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">});</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\">&nbsp;</div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">Using a custom source callback to match only the beginning of terms</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;autocomplete demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;Select a programming language: &lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"autocomplete\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">var tags = [ \"c++\", \"java\", \"php\", \"coldfusion\", \"javascript\", \"asp\", \"ruby\" ];</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">$( \"#autocomplete\" ).autocomplete({</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">source: function( request, response ) {</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">var matcher = new RegExp( \"^\" + $.ui.autocomplete.escapeRegex( request.term ), \"i\" );</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">response( $.grep( tags, function( item ){</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">return matcher.test( item );</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}) );</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number24 index23 alt1\"><code class=\"plain\">});</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\">&nbsp;</div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/blind-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI blind-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Blind Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe blind effect hides or shows an element by wrapping the element in a container, and \\\"pulling the blinds\\\"\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"blind1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Blind Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe blind effect hides or shows an element by wrapping the element in a container, and \"pulling the blinds\"\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">blind</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"up\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The direction the blind will be pulled to hide the element, or the direction from which the element will be revealed.</p>\n\t\t\t\t<p>Possible Values: <code>up</code>, <code>down</code>, <code>left</code>, <code>right</code>, <code>vertical</code>, <code>horizontal</code>.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>The container has <code>overflow: hidden</code> applied, so height changes affect what's visible.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the blind effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;blind demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"blind\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/bounce-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI bounce-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Bounce Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe bounce effect bounces an element.  When used with hide or show, the last or first bounce will also fade in/out.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"bounce1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Bounce Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe bounce effect bounces an element.  When used with hide or show, the last or first bounce will also fade in/out.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">bounce</h4>\n<ul>\n<li>\n<div>\n<strong>distance</strong> (default: <code>20</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The distance of the largest \"bounce\" in pixels.</div>\n</li>\n<li>\n<div>\n<strong>times</strong> (default: <code>5</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of times the element will bounce. When used with hide or show, there is an extra \"half\" bounce for the fade in/out.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the bounce effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;bounce demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"bounce\", { times: 3 }, \"slow\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/button.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI button documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Button Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Themable buttons and button sets.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-label\">label</a></div>\n<div><a href=\"#option-text\">text</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"button1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Button Widget</span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Themable buttons and button sets.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the button if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the button with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ primary: null, secondary: null }</code>\n</div>\n<div>Icons to display, with or without text (see <a href=\"#option-text\"><code>text</code></a> option). By default, the primary icon is displayed on the left of the label text and the secondary is displayed on the right. The positioning can be controlled via CSS. The value for the <code>primary</code> and <code>secondary</code> properties must be a class name, e.g., <code>\"ui-icon-gear\"</code>. For using only one icon: <code>icons: { primary: \"ui-icon-locked\" }</code>. For using two icons: <code>icons: { primary: \"ui-icon-gear\", secondary: \"ui-icon-triangle-1-s\" }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the button with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ icons: { primary: </code><code class=\"string\">\"ui-icon-gear\"</code><code class=\"plain\">, secondary: </code><code class=\"string\">\"ui-icon-triangle-1-s\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { primary: </code><code class=\"string\">\"ui-icon-gear\"</code><code class=\"plain\">, secondary: </code><code class=\"string\">\"ui-icon-triangle-1-s\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-label\" class=\"api-item\">\n<h3>label<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Text to show in the button. When not specified (<code>null</code>), the element's HTML content is used, or its <code>value</code> attribute if the element is an input element of type submit or reset, or the HTML content of the associated label element if the element is an input of type radio or checkbox.</div>\n<strong>Code examples:</strong><p>Initialize the button with the label option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ label: </code><code class=\"string\">\"custom label\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the label option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">label = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"label\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"label\"</code><code class=\"plain\">, </code><code class=\"string\">\"custom label\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-text\" class=\"api-item\">\n<h3>text<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Whether to show the label. When set to <code>false</code> no text will be displayed, but the <a href=\"#options-icons\"><code>icons</code></a> option must be enabled, otherwise the <code>text</code> option will be ignored.</div>\n<strong>Code examples:</strong><p>Initialize the button with the text option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({ text: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the text option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">text = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"text\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"text\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the button functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current button options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the button option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the button.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refreshes the visual state of the button. Useful for updating button state after the native element's checked or disabled state is changed programmatically.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the element visually representing the button.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>buttoncreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the button is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the button with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).button({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the buttoncreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"buttoncreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Button enhances standard form elements like buttons, inputs and anchors to themable buttons with appropiate hover and active styles.</p>\n\n\t\t<p>In addition to basic push buttons, radio buttons and checkboxes (inputs of type radio and checkbox) can be converted to buttons. Their associated label is styled to appear as the button, while the underlying input is updated on click. For the association to work properly, give the input an <code>id</code> attribute, and refer to that in the label's <code>for</code> attribute. Don't nest the input inside the label, as that <a href=\"http://www.paciellogroup.com/blog/2011/07/html5-accessibility-chops-form-control-labeling/\">causes accessbility problems</a>.</p>\n\n\t\t<p>In order to group radio buttons, Button also provides an additional widget, called Buttonset. Buttonset is used by selecting a container element (which contains the radio buttons) and calling <code>.buttonset()</code>. Buttonset will also provide visual grouping, and therefore should be used whenever you have a group of buttons. It works by selecting all descendants and applying <code>.button()</code> to them. You can enable and disable a button set, which will enable and disable all contained buttons. Destroying a button set also calls each button's <code>destroy</code> method.</p>\n\n\t\t<p>When using an input of type button, submit or reset, support is limited to plain text labels with no icons.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Button</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;button demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;Button label&lt;/</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"button\" ).button();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"100\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">A simple jQuery UI Buttonset</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;button demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio1\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio1\"</code><code class=\"plain\">&gt;Choice 1&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio2\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">checked</code><code class=\"plain\">=</code><code class=\"string\">\"checked\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio2\"</code><code class=\"plain\">&gt;Choice 2&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">type</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"radio3\"</code> <code class=\"color1\">name</code><code class=\"plain\">=</code><code class=\"string\">\"radio\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">label</code> <code class=\"color1\">for</code><code class=\"plain\">=</code><code class=\"string\">\"radio3\"</code><code class=\"plain\">&gt;Choice 3&lt;/</code><code class=\"keyword\">label</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">$( \"#radio\" ).buttonset();</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"100\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/clip-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI clip-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Clip Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe clip effect will hide or show an element by clipping the element vertically or horizontally.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"clip1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Clip Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe clip effect will hide or show an element by clipping the element vertically or horizontally.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">clip</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"up\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The plane in which the clip effect will hide or show its element.</p>\n\t\t\t\t<p><code>vertical</code> clips the top and bottom edges, while <code>horizontal</code> clips the right and left edges.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the clip effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;clip demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"clip\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/datepicker.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI datepicker documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Datepicker Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Select a date from a popup or inline calendar\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-altField\">altField</a></div>\n<div><a href=\"#option-altFormat\">altFormat</a></div>\n<div><a href=\"#option-appendText\">appendText</a></div>\n<div><a href=\"#option-autoSize\">autoSize</a></div>\n<div><a href=\"#option-buttonImage\">buttonImage</a></div>\n<div><a href=\"#option-buttonImageOnly\">buttonImageOnly</a></div>\n<div><a href=\"#option-buttonText\">buttonText</a></div>\n<div><a href=\"#option-calculateWeek\">calculateWeek</a></div>\n<div><a href=\"#option-changeMonth\">changeMonth</a></div>\n<div><a href=\"#option-changeYear\">changeYear</a></div>\n<div><a href=\"#option-closeText\">closeText</a></div>\n<div><a href=\"#option-constrainInput\">constrainInput</a></div>\n<div><a href=\"#option-currentText\">currentText</a></div>\n<div><a href=\"#option-dateFormat\">dateFormat</a></div>\n<div><a href=\"#option-dayNames\">dayNames</a></div>\n<div><a href=\"#option-dayNamesMin\">dayNamesMin</a></div>\n<div><a href=\"#option-dayNamesShort\">dayNamesShort</a></div>\n<div><a href=\"#option-defaultDate\">defaultDate</a></div>\n<div><a href=\"#option-duration\">duration</a></div>\n<div><a href=\"#option-firstDay\">firstDay</a></div>\n<div><a href=\"#option-gotoCurrent\">gotoCurrent</a></div>\n<div><a href=\"#option-hideIfNoPrevNext\">hideIfNoPrevNext</a></div>\n<div><a href=\"#option-isRTL\">isRTL</a></div>\n<div><a href=\"#option-maxDate\">maxDate</a></div>\n<div><a href=\"#option-minDate\">minDate</a></div>\n<div><a href=\"#option-monthNames\">monthNames</a></div>\n<div><a href=\"#option-monthNamesShort\">monthNamesShort</a></div>\n<div><a href=\"#option-navigationAsDateFormat\">navigationAsDateFormat</a></div>\n<div><a href=\"#option-nextText\">nextText</a></div>\n<div><a href=\"#option-numberOfMonths\">numberOfMonths</a></div>\n<div><a href=\"#option-prevText\">prevText</a></div>\n<div><a href=\"#option-selectOtherMonths\">selectOtherMonths</a></div>\n<div><a href=\"#option-shortYearCutoff\">shortYearCutoff</a></div>\n<div><a href=\"#option-showAnim\">showAnim</a></div>\n<div><a href=\"#option-showButtonPanel\">showButtonPanel</a></div>\n<div><a href=\"#option-showCurrentAtPos\">showCurrentAtPos</a></div>\n<div><a href=\"#option-showMonthAfterYear\">showMonthAfterYear</a></div>\n<div><a href=\"#option-showOn\">showOn</a></div>\n<div><a href=\"#option-showOptions\">showOptions</a></div>\n<div><a href=\"#option-showOtherMonths\">showOtherMonths</a></div>\n<div><a href=\"#option-showWeek\">showWeek</a></div>\n<div><a href=\"#option-stepMonths\">stepMonths</a></div>\n<div><a href=\"#option-weekHeader\">weekHeader</a></div>\n<div><a href=\"#option-yearRange\">yearRange</a></div>\n<div><a href=\"#option-yearSuffix\">yearSuffix</a></div>\n<div><a href=\"#option-beforeShow\">beforeShow</a></div>\n<div><a href=\"#option-beforeShowDay\">beforeShowDay</a></div>\n<div><a href=\"#option-onChangeMonthYear\">onChangeMonthYear</a></div>\n<div><a href=\"#option-onClose\">onClose</a></div>\n<div><a href=\"#option-onSelect\">onSelect</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-dialog\">dialog</a></div>\n<div><a href=\"#method-isDisabled\">isDisabled</a></div>\n<div><a href=\"#method-hide\">hide</a></div>\n<div><a href=\"#method-show\">show</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-getDate\">getDate</a></div>\n<div><a href=\"#method-setDate\">setDate</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\"><h3>Events</h3></div></section><article id=\"datepicker1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Datepicker Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Select a date from a popup or inline calendar</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-altField\" class=\"api-item first-item\">\n<h3>altField<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>An input element that is to be updated with the selected date from the datepicker. Use the <a href=\"#option-altFormat\"><code>altFormat</code></a> option to change the format of the date within this field. Leave as blank for no alternate field.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the altField option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ altField: </code><code class=\"string\">\"#actualDate\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the altField option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">altField = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altField\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altField\"</code><code class=\"plain\">, </code><code class=\"string\">\"#actualDate\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-altFormat\" class=\"api-item\">\n<h3>altFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The <a href=\"#option-dateFormat\"><code>dateFormat</code></a> to be used for the <a href=\"#option-altField\"><code>altField</code></a> option. This allows one date format to be shown to the user for selection purposes, while a different format is actually sent behind the scenes. For a full list of the possible formats see the [[UI/Datepicker/formatDate|formatDate]] function</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the altFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ altFormat: </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the altFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">altFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"altFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-appendText\" class=\"api-item\">\n<h3>appendText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The text to display after each date field, e.g., to show the required format.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the appendText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ appendText: </code><code class=\"string\">\"(yyyy-mm-dd)\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendText\"</code><code class=\"plain\">, </code><code class=\"string\">\"(yyyy-mm-dd)\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoSize\" class=\"api-item\">\n<h3>autoSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Set to <code>true</code> to automatically resize the input field to accommodate dates in the current <a href=\"#option-dateFormat\"><code>dateFormat</code></a>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the autoSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ autoSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-beforeShow\" class=\"api-item\">\n<h3>beforeShow<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Element\">Element</a> input, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>A function that takes an input field and current datepicker instance and returns an options object to update the datepicker with. It is called just before the datepicker is displayed.</div>\n</div>\n<div id=\"option-beforeShowDay\" class=\"api-item\">\n<h3>beforeShowDay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Date\">Date</a> date )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>A function takes a date as a parameter and must return an array with <code>[0]</code> equal to <code>true</code>/<code>false</code> indicating whether or not this date is selectable, <code>[1]</code> equal to a CSS class name or <code>\"\"</code> for the default presentation, and <code>[2]</code> an optional popup tooltip for this date. It is called for each day in the datepicker before it is displayed.</div>\n</div>\n<div id=\"option-buttonImage\" class=\"api-item\">\n<h3>buttonImage<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The URL for the popup button image. If set, the <a href=\"#option-buttonText\"><code>buttonText</code></a> option becomes the <code>alt</code> value and is not directly displayed.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonImage option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonImage: </code><code class=\"string\">\"/images/datepicker.gif\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonImage option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonImage = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImage\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImage\"</code><code class=\"plain\">, </code><code class=\"string\">\"/images/datepicker.gif\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttonImageOnly\" class=\"api-item\">\n<h3>buttonImageOnly<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the button image should be rendered by itself instead of inside a button element.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonImageOnly option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonImageOnly: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonImageOnly option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonImageOnly = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImageOnly\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonImageOnly\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttonText\" class=\"api-item\">\n<h3>buttonText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"...\"</code>\n</div>\n<div>The text to display on the trigger button. Use in conjunction with the <a href=\"#option-showOn\"><code>showOn</code></a> option set to <code>\"button\"</code> or <code>\"both\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the buttonText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ buttonText: </code><code class=\"string\">\"Choose\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttonText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttonText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttonText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Choose\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-calculateWeek\" class=\"api-item\">\n<h3>calculateWeek<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>jQuery.datepicker.iso8601Week</code>\n</div>\n<div>A function to calculate the week of the year for a given date. The default implementation uses the ISO 8601 definition: weeks start on a Monday; the first week of the year contains the first Thursday of the year.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the calculateWeek option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ calculateWeek: myWeekCalc });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the calculateWeek option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">calculateWeek = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"calculateWeek\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"calculateWeek\"</code><code class=\"plain\">, myWeekCalc );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-changeMonth\" class=\"api-item\">\n<h3>changeMonth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the month should be rendered as a dropdown instead of text.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the changeMonth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ changeMonth: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the changeMonth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">changeMonth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeMonth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeMonth\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-changeYear\" class=\"api-item\">\n<h3>changeYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the year should be rendered as a dropdown instead of text. Use the <a href=\"#option-yearRange\"><code>yearRange</code></a> option to control which years are made available for selection.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the changeYear option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ changeYear: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the changeYear option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">changeYear = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeYear\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"changeYear\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeText\" class=\"api-item\">\n<h3>closeText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Done\"</code>\n</div>\n<div>The text to display for the close link. Use the <a href=\"#option-showButtonPanel\"><code>showButtonPanel</code></a> option to display this button.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the closeText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ closeText: </code><code class=\"string\">\"Close\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-constrainInput\" class=\"api-item\">\n<h3>constrainInput<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>When <code>true</code>, entry in the input field is constrained to those characters allowed by the current <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the constrainInput option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ constrainInput: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the constrainInput option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">constrainInput = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"constrainInput\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"constrainInput\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-currentText\" class=\"api-item\">\n<h3>currentText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Today\"</code>\n</div>\n<div>The text to display for the current day link. Use the <a href=\"#option-showButtonPanel\"><code>showButtonPanel</code></a> option to display this button.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the currentText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ currentText: </code><code class=\"string\">\"Now\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the currentText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">currentText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"currentText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"currentText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Now\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dateFormat\" class=\"api-item\">\n<h3>dateFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"mm/dd/yy\"</code>\n</div>\n<div>The format for parsed and displayed dates. For a full list of the possible formats see the <code>[[UI/Datepicker/formatDate|formatDate]]</code> function.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dateFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dateFormat: </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dateFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dateFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dateFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dateFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"yy-mm-dd\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNames\" class=\"api-item\">\n<h3>dayNames<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ]</code>\n</div>\n<div>The list of long day names, starting from Sunday, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNames option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNames: [ </code><code class=\"string\">\"Dimanche\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lundi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mardi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mercredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeudi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Vendredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Samedi\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNames option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNames = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNames\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNames\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Dimanche\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lundi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mardi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mercredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeudi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Vendredi\"</code><code class=\"plain\">, </code><code class=\"string\">\"Samedi\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNamesMin\" class=\"api-item\">\n<h3>dayNamesMin<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]</code>\n</div>\n<div>The list of minimised day names, starting from Sunday, for use as column headers within the datepicker.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNamesMin option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNamesMin: [ </code><code class=\"string\">\"Di\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ma\"</code><code class=\"plain\">, </code><code class=\"string\">\"Me\"</code><code class=\"plain\">, </code><code class=\"string\">\"Je\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ve\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sa\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNamesMin option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNamesMin = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesMin\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesMin\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Di\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ma\"</code><code class=\"plain\">, </code><code class=\"string\">\"Me\"</code><code class=\"plain\">, </code><code class=\"string\">\"Je\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ve\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sa\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dayNamesShort\" class=\"api-item\">\n<h3>dayNamesShort<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ]</code>\n</div>\n<div>The list of abbreviated day names, starting from Sunday, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the dayNamesShort option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ dayNamesShort: [ </code><code class=\"string\">\"Dim\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mer\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ven\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sam\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dayNamesShort option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dayNamesShort = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesShort\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dayNamesShort\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Dim\"</code><code class=\"plain\">, </code><code class=\"string\">\"Lun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mer\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jeu\"</code><code class=\"plain\">, </code><code class=\"string\">\"Ven\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sam\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-defaultDate\" class=\"api-item\">\n<h3>defaultDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Set the date to highlight on first opening if the field is blank. Specify either an actual date via a Date object or as a string in the current <code>[[UI/Datepicker#option-dateFormat|dateFormat]]</code>, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +7d'), or null for today.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the default date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the defaultDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ defaultDate: +7 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the defaultDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">defaultDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"defaultDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"defaultDate\"</code><code class=\"plain\">, +7 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-duration\" class=\"api-item\">\n<h3>duration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#\"></a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"normal\"</code>\n</div>\n<div>Control the speed at which the datepicker appears, it may be a time in milliseconds or a string representing one of the three predefined speeds (\"slow\", \"normal\", \"fast\").</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the duration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ duration: </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the duration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">duration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"duration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"duration\"</code><code class=\"plain\">, </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-firstDay\" class=\"api-item\">\n<h3>firstDay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Set the first day of the week: Sunday is <code>0</code>, Monday is <code>1</code>, etc.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the firstDay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ firstDay: 1 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the firstDay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">firstDay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"firstDay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"firstDay\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-gotoCurrent\" class=\"api-item\">\n<h3>gotoCurrent<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When <code>true</code>, the current day link moves to the currently selected date instead of today.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the gotoCurrent option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ gotoCurrent: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the gotoCurrent option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">gotoCurrent = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"gotoCurrent\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"gotoCurrent\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hideIfNoPrevNext\" class=\"api-item\">\n<h3>hideIfNoPrevNext<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Normally the previous and next links are disabled when not applicable (see the <a href=\"#option-minDate\"><code>minDate</code></a> and <a href=\"#option-maxDate\"><code>maxDate</code></a> options). You can hide them altogether by setting this attribute to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the hideIfNoPrevNext option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ hideIfNoPrevNext: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hideIfNoPrevNext option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hideIfNoPrevNext = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hideIfNoPrevNext\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hideIfNoPrevNext\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-isRTL\" class=\"api-item\">\n<h3>isRTL<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the current language is drawn from right to left.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the isRTL option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ isRTL: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the isRTL option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">isRTL = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"isRTL\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"isRTL\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxDate\" class=\"api-item\">\n<h3>maxDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum selectable date. When set to <code>null</code>, there is no maximum.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the maximum date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the maxDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ maxDate: </code><code class=\"string\">\"+1m +1w\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxDate\"</code><code class=\"plain\">, </code><code class=\"string\">\"+1m +1w\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minDate\" class=\"api-item\">\n<h3>minDate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Date\">Date</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The minimum selectable date. When set to <code>null</code>, there is no minimum.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Date</strong>: A date object containing the minimum date.</li>\n<li>\n<strong>Number</strong>: A number of days from today. For example <code>2</code> represents two days from today and <code>-1</code> represents yesterday.</li>\n<li>\n<strong>String</strong>: A string in the format defined by the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option, or a relative date. Relative dates must contain value and period pairs; valid periods are <code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, and <code>\"d\"</code> for days. For example, <code>\"+1m +7d\"</code> represents one month and seven days from today.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the minDate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ minDate: </code><code class=\"keyword\">new</code> <code class=\"plain\">Date(2007, 1 - 1, 1) });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minDate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minDate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minDate\"</code><code class=\"plain\">, </code><code class=\"keyword\">new</code> <code class=\"plain\">Date(2007, 1 - 1, 1) );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-monthNames\" class=\"api-item\">\n<h3>monthNames<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ]</code>\n</div>\n<div>The list of full month names, for use as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the monthNames option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ monthNames: [ </code><code class=\"string\">\"Januar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Februar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Marts\"</code><code class=\"plain\">, </code><code class=\"string\">\"April\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juni\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juli\"</code><code class=\"plain\">, </code><code class=\"string\">\"August\"</code><code class=\"plain\">, </code><code class=\"string\">\"September\"</code><code class=\"plain\">, </code><code class=\"string\">\"Oktober\"</code><code class=\"plain\">, </code><code class=\"string\">\"November\"</code><code class=\"plain\">, </code><code class=\"string\">\"December\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the monthNames option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">monthNames = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNames\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNames\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Januar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Februar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Marts\"</code><code class=\"plain\">, </code><code class=\"string\">\"April\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juni\"</code><code class=\"plain\">, </code><code class=\"string\">\"Juli\"</code><code class=\"plain\">, </code><code class=\"string\">\"August\"</code><code class=\"plain\">, </code><code class=\"string\">\"September\"</code><code class=\"plain\">, </code><code class=\"string\">\"Oktober\"</code><code class=\"plain\">, </code><code class=\"string\">\"November\"</code><code class=\"plain\">, </code><code class=\"string\">\"December\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-monthNamesShort\" class=\"api-item\">\n<h3>monthNamesShort<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]</code>\n</div>\n<div>The list of abbreviated month names, as used in the month header on each datepicker and as requested via the <a href=\"#option-dateFormat\"><code>dateFormat</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the monthNamesShort option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ monthNamesShort: [ </code><code class=\"string\">\"Jan\"</code><code class=\"plain\">, </code><code class=\"string\">\"Feb\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Apr\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jul\"</code><code class=\"plain\">, </code><code class=\"string\">\"Aug\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sep\"</code><code class=\"plain\">, </code><code class=\"string\">\"Okt\"</code><code class=\"plain\">, </code><code class=\"string\">\"Nov\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dec\"</code> <code class=\"plain\">] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the monthNamesShort option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">monthNamesShort = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNamesShort\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"monthNamesShort\"</code><code class=\"plain\">, [ </code><code class=\"string\">\"Jan\"</code><code class=\"plain\">, </code><code class=\"string\">\"Feb\"</code><code class=\"plain\">, </code><code class=\"string\">\"Mar\"</code><code class=\"plain\">, </code><code class=\"string\">\"Apr\"</code><code class=\"plain\">, </code><code class=\"string\">\"Maj\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jun\"</code><code class=\"plain\">, </code><code class=\"string\">\"Jul\"</code><code class=\"plain\">, </code><code class=\"string\">\"Aug\"</code><code class=\"plain\">, </code><code class=\"string\">\"Sep\"</code><code class=\"plain\">, </code><code class=\"string\">\"Okt\"</code><code class=\"plain\">, </code><code class=\"string\">\"Nov\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dec\"</code> <code class=\"plain\">] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-navigationAsDateFormat\" class=\"api-item\">\n<h3>navigationAsDateFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the <a href=\"#option-prevText\"><code>prevText</code></a> and <a href=\"#option-nextText\"><code>nextText</code></a> options should be parsed as dates by the <code>[[UI/Datepicker/formatDate|formatDate]]</code> function, allowing them to display the target month names for example.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the navigationAsDateFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ navigationAsDateFormat: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the navigationAsDateFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">navigationAsDateFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"navigationAsDateFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"navigationAsDateFormat\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-nextText\" class=\"api-item\">\n<h3>nextText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Next\"</code>\n</div>\n<div>The text to display for the next month link. With the standard ThemeRoller styling, this value is replaced by an icon.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the nextText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ nextText: </code><code class=\"string\">\"Later\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the nextText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">nextText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"nextText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"nextText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Later\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-numberOfMonths\" class=\"api-item\">\n<h3>numberOfMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The number of months to show at once.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The number of months to display in a single row.</li>\n<li>\n<strong>Array</strong>: An array defining the number of rows and columns to display.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the numberOfMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ numberOfMonths: [ 2, 3 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the numberOfMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">numberOfMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberOfMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberOfMonths\"</code><code class=\"plain\">, [ 2, 3 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-onChangeMonthYear\" class=\"api-item\">\n<h3>onChangeMonthYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#Integer\">Integer</a> year, <a href=\"http://api.jquery.com/Types#Integer\">Integer</a> month, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker moves to a new month and/or year. The function receives the selected year, month (1-12), and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-onClose\" class=\"api-item\">\n<h3>onClose<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#String\">String</a> dateText, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker is closed, whether or not a date is selected. The function receives the selected date as text (<code>\"\"</code> if none) and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-onSelect\" class=\"api-item\">\n<h3>onSelect<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>( <a href=\"http://api.jquery.com/Types#String\">String</a> dateText, <a href=\"http://api.jquery.com/Types#Object\">Object</a> inst )</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Called when the datepicker is selected. The function receives the selected date as text and the datepicker instance as parameters. <code>this</code> refers to the associated input field.</div>\n</div>\n<div id=\"option-prevText\" class=\"api-item\">\n<h3>prevText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Prev\"</code>\n</div>\n<div>The text to display for the previous month link. With the standard ThemeRoller styling, this value is replaced by an icon.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the prevText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ prevText: </code><code class=\"string\">\"Earlier\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the prevText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">prevText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"prevText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"prevText\"</code><code class=\"plain\">, </code><code class=\"string\">\"Earlier\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-selectOtherMonths\" class=\"api-item\">\n<h3>selectOtherMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether days in other months shown before or after the current month are selectable. This only applies if the <a href=\"#option-showOtherMonths\"><code>showOtherMonths</code></a> option is set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the selectOtherMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ selectOtherMonths: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the selectOtherMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">selectOtherMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"selectOtherMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"selectOtherMonths\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-shortYearCutoff\" class=\"api-item\">\n<h3>shortYearCutoff<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"+10\"</code>\n</div>\n<div>The cutoff year for determining the century for a date (used in conjunction with <code>[[UI/Datepicker#option-dateFormat|dateFormat]]</code> 'y'). Any dates entered with a year value less than or equal to the cutoff year are considered to be in the current century, while those greater than it are deemed to be in the previous century.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: A value between <code>0</code> and <code>99</code> indicating the cutoff year.</li>\n<li>\n<strong>String</strong>: A relative number of years from the current year, e.g., <code>\"+3\"</code> or <code>\"-5\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the datepicker with the shortYearCutoff option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ shortYearCutoff: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the shortYearCutoff option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">shortYearCutoff = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"shortYearCutoff\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"shortYearCutoff\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showAnim\" class=\"api-item\">\n<h3>showAnim<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"show\"</code>\n</div>\n<div>The name of the animation used to show and hide the datepicker. Use <code>\"show\"</code> (the default), <code>\"slideDown\"</code>, <code>\"fadeIn\"</code>, any of the <a href=\"/category/effects/\">jQuery UI effects</a>. Set to an empty string to disable animation.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showAnim option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showAnim: </code><code class=\"string\">\"fold\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showAnim option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showAnim = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showAnim\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showAnim\"</code><code class=\"plain\">, </code><code class=\"string\">\"fold\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showButtonPanel\" class=\"api-item\">\n<h3>showButtonPanel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to show the button panel.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showButtonPanel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showButtonPanel: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showButtonPanel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showButtonPanel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showButtonPanel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showButtonPanel\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showCurrentAtPos\" class=\"api-item\">\n<h3>showCurrentAtPos<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>When displaying multiple months via the <a href=\"#option-numberOfMonths\"><code>numberOfMonths</code></a> option, the <code>showCurrentAtPos</code> option defines which position to display the current month in.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showCurrentAtPos option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showCurrentAtPos: 3 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showCurrentAtPos option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showCurrentAtPos = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showCurrentAtPos\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showCurrentAtPos\"</code><code class=\"plain\">, 3 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showMonthAfterYear\" class=\"api-item\">\n<h3>showMonthAfterYear<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to show the month after the year in the header.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showMonthAfterYear option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showMonthAfterYear: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showMonthAfterYear option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showMonthAfterYear = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showMonthAfterYear\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showMonthAfterYear\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOn\" class=\"api-item\">\n<h3>showOn<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"focus\"</code>\n</div>\n<div>When the datepicker should appear. The datepicker can appear when the field receives focus (<code>\"focus\"</code>), when a button is clicked (<code>\"button\"</code>), or when either event occurs (<code>\"both\"</code>).</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOn option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOn: </code><code class=\"string\">\"both\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOn option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOn = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOn\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOn\"</code><code class=\"plain\">, </code><code class=\"string\">\"both\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOptions\" class=\"api-item\">\n<h3>showOptions<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>If using one of the jQuery UI effects for the <a href=\"#option-showAnim\"><code>showAnim</code></a> option, you can provide additional settings for that animation via this option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOptions option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOptions: { direction: </code><code class=\"string\">\"up\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOptions option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOptions = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOptions\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOptions\"</code><code class=\"plain\">, { direction: </code><code class=\"string\">\"up\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showOtherMonths\" class=\"api-item\">\n<h3>showOtherMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to display dates in other months (non-selectable) at the start or end of the current month. To make these days selectable use the <a href=\"#option-selectOtherMonths\"><code>selectOtherMonths</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showOtherMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showOtherMonths: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showOtherMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showOtherMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOtherMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showOtherMonths\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-showWeek\" class=\"api-item\">\n<h3>showWeek<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When <code>true</code>, a column is added to show the week of the year. The <a href=\"#option-calculateWeek\"><code>calculateWeek</code></a> option determines how the week of the year is calculated. You may also want to change the <a href=\"#option-firstDay\"><code>firstDay</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the showWeek option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ showWeek: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the showWeek option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">showWeek = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showWeek\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"showWeek\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stepMonths\" class=\"api-item\">\n<h3>stepMonths<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Set how many months to move when clicking the previous/next links.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the stepMonths option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ stepMonths: 3 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stepMonths option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stepMonths = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stepMonths\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stepMonths\"</code><code class=\"plain\">, 3 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-weekHeader\" class=\"api-item\">\n<h3>weekHeader<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"Wk\"</code>\n</div>\n<div>The text to display for the week of the year column heading. Use the <a href=\"#option-showWeek\"><code>showWeek</code></a> option to display this column.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the weekHeader option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ weekHeader: </code><code class=\"string\">\"W\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the weekHeader option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">weekHeader = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"weekHeader\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"weekHeader\"</code><code class=\"plain\">, </code><code class=\"string\">\"W\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-yearRange\" class=\"api-item\">\n<h3>yearRange<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"c-10:c+10\"</code>\n</div>\n<div>The range of years displayed in the year drop-down: either relative to today's year (<code>\"-nn:+nn\"</code>), relative to the currently selected year (<code>\"c-nn:c+nn\"</code>), absolute (<code>\"nnnn:nnnn\"</code>), or combinations of these formats (<code>\"nnnn:-nn\"</code>). Note that this option only affects what appears in the drop-down, to restrict which dates may be selected use the <a href=\"#option-minDate\"><code>minDate</code></a> and/or <a href=\"#option-maxDate\"><code>maxDate</code></a> options.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the yearRange option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ yearRange: </code><code class=\"string\">\"2002:2012\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the yearRange option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">yearRange = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearRange\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearRange\"</code><code class=\"plain\">, </code><code class=\"string\">\"2002:2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-yearSuffix\" class=\"api-item\">\n<h3>yearSuffix<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>Additional text to display after the year in the month headers.</div>\n<strong>Code examples:</strong><p>Initialize the datepicker with the yearSuffix option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker({ yearSuffix: </code><code class=\"string\">\"CE\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the yearSuffix option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">yearSuffix = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearSuffix\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"yearSuffix\"</code><code class=\"plain\">, </code><code class=\"string\">\"CE\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the datepicker functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-dialog\">\n<div class=\"api-item\">\n<h3>dialog( date [, onSelect ] [, settings ] [, pos ] )</h3>\n<div>Opens the datepicker in a dialog box.</div>\n<ul>\n<li>\n<div><strong>date</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Date\">Date</a>\n</div>\n<div>The initial date.</div>\n</li>\n<li>\n<div><strong>onSelect</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>A callback function when a date is selected. The function receives the date text and date picker instance as parameters.</div>\n</li>\n<li>\n<div><strong>settings</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Options\">Options</a>\n</div>\n<div>The new settings for the date picker.</div>\n</li>\n<li>\n<div><strong>pos</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number%5B2%5D%20or%20MouseEvent\">Number[2] or MouseEvent</a>\n</div>\n<div>The position of the top/left of the dialog as <code>[x, y]</code> or a <code>MouseEvent</code> that contains the coordinates. If not specified the dialog is centered on the screen.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the dialog method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"dialog\"</code><code class=\"plain\">, </code><code class=\"string\">\"10/12/2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-getDate\">\n<div class=\"api-item\">\n<h3>getDate() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Date\">Date</a></span>\n</h3>\n<div>Returns the current date for the datepicker or <code>null</code> if no date has been selected.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the getDate method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">currentDate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"getDate\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-hide\">\n<div class=\"api-item\">\n<h3>hide()</h3>\n<div>Close a previously opened date picker.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the hide method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isDisabled\">\n<div class=\"api-item\">\n<h3>isDisabled() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>Determine whether a date picker has been disabled.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isDisabled method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"isDisabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current datepicker options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the datepicker option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the datepicker.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Redraw the date picker, after having made some external modifications.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-setDate\">\n<div class=\"api-item\">\n<h3>setDate( date )</h3>\n<div>Sets the date for the datepicker. The new date may be a <code>Date</code> object or a string in the current <a href=\"#option-dateFormat\">date format</a> (e.g., <code>\"01/26/2009\"</code>), a number of days from today (e.g., <code>+7</code>) or a string of values and periods (<code>\"y\"</code> for years, <code>\"m\"</code> for months, <code>\"w\"</code> for weeks, <code>\"d\"</code> for days, e.g., <code>\"+1m +7d\"</code>), or <code>null</code> to clear the selected date.</div>\n<ul><li>\n<div><strong>date</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Date\">Date</a>\n</div>\n<div>The new date.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the setDate method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"setDate\"</code><code class=\"plain\">, </code><code class=\"string\">\"10/12/2012\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-show\">\n<div class=\"api-item\">\n<h3>show()</h3>\n<div>Open the date picker. If the datepicker is attached to an input, the input must be visible for the datepicker to be shown.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the show method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the datepicker.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).datepicker( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Datepicker is a highly configurable plugin that adds datepicker functionality to your pages. You can customize the date format and language, restrict the selectable date ranges and add in buttons and other navigation options easily.</p>\n\n\t\t<p>By default, the datepicker calendar opens in a small overlay when the associated text field gains focus. For an inline calendar, simply attach the datepicker to a div or span.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\t\t<p>While the datepicker is open, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>PAGE UP: Move to the previous month.</li>\n\t\t\t<li>PAGE DOWN: Move to the next month.</li>\n\t\t\t<li>CTRL+PAGE UP: Move to the previous year.</li>\n\t\t\t<li>CTRL+PAGE DOWN: Move to the next year.</li>\n\t\t\t<li>CTRL+HOME: Move to the current month. Open the datepicker if closed.</li>\n\t\t\t<li>CTRL+LEFT: Move to the previous day.</li>\n\t\t\t<li>CTRL+RIGHT: Move to the next day.</li>\n\t\t\t<li>CTRL+UP: Move to the previous week.</li>\n\t\t\t<li>CTRL+DOWN: Move the next week.</li>\n\t\t\t<li>ENTER: Select the focused date.</li>\n\t\t\t<li>CTRL+END: Close the datepicker and erase the date.</li>\n\t\t\t<li>ESCAPE: Close the datepicker without selection.</li>\n\t\t</ul>\n\n\t\t<h3 id=\"utility-functions\">Utility functions</h3>\n\t\t<ul>\n\t\t\t<li>$.datepicker.setDefaults( settings ) - Set settings for all datepicker instances.</li>\n\t\t\t<li>$.datepicker.formatDate( format, date, settings ) - Format a date into a string value with a specified format.</li>\n\t\t\t<li>$.datepicker.parseDate( format, value, settings )  - Extract a date from a string value with a specified format.</li>\n\t\t\t<li>$.datepicker.iso8601Week( date ) - Determine the week of the year for a given date: 1 to 53.</li>\n\t\t\t<li>$.datepicker.noWeekends - Set as beforeShowDay function to prevent selection of weekends.</li>\n\t\t</ul>\n\n\t\t<h3>Localization</h3>\n\t\t<p>Datepicker provides support for localizing its content to cater for different languages and date formats. Each localization is contained within its own file with the language code appended to the name, e.g., <code>jquery.ui.datepicker-fr.js</code> for French. The desired localization file should be included after the main datepicker code. Each localization file adds its settings to the set of available localizations and automatically applies them as defaults for all instances.</p>\n\t\t<p>The <code>$.datepicker.regional</code> attribute holds an array of localizations, indexed by language code, with <code>\"\"</code> referring to the default (English). Each entry is an object with the following attributes: <code>closeText</code>, <code>prevText</code>, <code>nextText</code>, <code>currentText</code>, <code>monthNames</code>, <code>monthNamesShort</code>, <code>dayNames</code>, <code>dayNamesShort</code>, <code>dayNamesMin</code>, <code>weekHeader</code>, <code>dateFormat</code>, <code>firstDay</code>, <code>isRTL</code>, <code>showMonthAfterYear</code>, and <code>yearSuffix</code>.</p>\n\t\t<p>You can restore the default localizations with:</p>\n\t\t<code>$.datepicker.setDefaults( $.datepicker.regional[ \"\" ] );</code>\n\t\t<p>And can then override an individual datepicker for a specific locale:</p>\n\t\t<code>$( selector ).datepicker( $.datepicker.regional[ \"fr\" ] );</code>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Datepicker.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;datepicker demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"datepicker\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#datepicker\" ).datepicker();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"300\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/dialog.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI dialog documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Dialog Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Open content in an interactive overlay.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-autoOpen\">autoOpen</a></div>\n<div><a href=\"#option-buttons\">buttons</a></div>\n<div><a href=\"#option-closeOnEscape\">closeOnEscape</a></div>\n<div><a href=\"#option-closeText\">closeText</a></div>\n<div><a href=\"#option-dialogClass\">dialogClass</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-draggable\">draggable</a></div>\n<div><a href=\"#option-height\">height</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-maxHeight\">maxHeight</a></div>\n<div><a href=\"#option-maxWidth\">maxWidth</a></div>\n<div><a href=\"#option-minHeight\">minHeight</a></div>\n<div><a href=\"#option-minWidth\">minWidth</a></div>\n<div><a href=\"#option-modal\">modal</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-resizable\">resizable</a></div>\n<div><a href=\"#option-show\">show</a></div>\n<div><a href=\"#option-stack\">stack</a></div>\n<div><a href=\"#option-title\">title</a></div>\n<div><a href=\"#option-width\">width</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-isOpen\">isOpen</a></div>\n<div><a href=\"#method-moveToTop\">moveToTop</a></div>\n<div><a href=\"#method-open\">open</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-beforeClose\">beforeClose</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-dragStart\">dragStart</a></div>\n<div><a href=\"#event-drag\">drag</a></div>\n<div><a href=\"#event-dragStop\">dragStop</a></div>\n<div><a href=\"#event-resizeStart\">resizeStart</a></div>\n<div><a href=\"#event-resize\">resize</a></div>\n<div><a href=\"#event-resizeStop\">resizeStop</a></div>\n<div><a href=\"#event-close\">close</a></div>\n</div></section><article id=\"dialog1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Dialog Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Open content in an interactive overlay.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-autoOpen\" class=\"api-item first-item\">\n<h3>autoOpen<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will automatically open upon initialization. If <code>false</code>, the dialog will stay hidden until the <a href=\"#method-open\"><code>open()</code></a> method is called.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the autoOpen option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ autoOpen: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoOpen option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoOpen = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoOpen\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoOpen\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-buttons\" class=\"api-item\">\n<h3>buttons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{}</code>\n</div>\n<div>Specifies which buttons should be displayed on the dialog. The context of the callback is the dialog element; if you need access to the button, it is available as the target of the event object.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Object</strong>: The keys are the button labels and the values are the callbacks for when the associated button is clicked.</li>\n<li>\n<strong>Array</strong>: Each element of the array must be an object defining the attributes, properties, and event handlers to set on the button.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the buttons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ buttons: [ { text: </code><code class=\"string\">\"Ok\"</code><code class=\"plain\">, click: </code><code class=\"keyword\">function</code><code class=\"plain\">() { $( </code><code class=\"keyword\">this</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">); } ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the buttons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">buttons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"buttons\"</code><code class=\"plain\">, [ { text: </code><code class=\"string\">\"Ok\"</code><code class=\"plain\">, click: </code><code class=\"keyword\">function</code><code class=\"plain\">() { $( </code><code class=\"keyword\">this</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">); } ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeOnEscape\" class=\"api-item\">\n<h3>closeOnEscape<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Specifies whether the dialog should close when it has focus and the user presses the esacpe (ESC) key.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the closeOnEscape option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ closeOnEscape: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeOnEscape option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeOnEscape = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeOnEscape\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeOnEscape\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-closeText\" class=\"api-item\">\n<h3>closeText<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"close\"</code>\n</div>\n<div>Specifies the text for the close button. Note that the close text is visibly hidden when using a standard theme.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the closeText option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ closeText: </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the closeText option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">closeText = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"closeText\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dialogClass\" class=\"api-item\">\n<h3>dialogClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>The specified class name(s) will be added to the dialog, for additional theming.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dialogClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ dialogClass: </code><code class=\"string\">\"alert\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dialogClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dialogClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dialogClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dialogClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"alert\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the dialog if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-draggable\" class=\"api-item\">\n<h3>draggable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will be draggable by the title bar. Requires the <a href=\"/draggable/\">jQuery UI Draggable wiget</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the draggable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ draggable: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the draggable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">draggable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"draggable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"draggable\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-height\" class=\"api-item\">\n<h3>height<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>The height of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The height in pixels.</li>\n<li>\n<strong>String</strong>: The only supported string value is <code>\"auto\"</code> which will allow the dialog height to adjust based on its content.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the height option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ height: 400 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the height option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">height = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"height\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"height\"</code><code class=\"plain\">, 400 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: \n\t\t\t\t\tThe dialog will fade out while animating the height and width for the specified duration.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\t\t\tThe dialog will be hidden using the specified jQuery UI effect. See the <a href=\"/category/effects/\">list of effects</a> for possible values.\n\t\t\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. The <code>effect</code> property must be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ hide: </code><code class=\"string\">\"explode\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, </code><code class=\"string\">\"explode\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxHeight\" class=\"api-item\">\n<h3>maxHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>The maximum height to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the maxHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ maxHeight: 600 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code><code class=\"plain\">, 600 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxWidth\" class=\"api-item\">\n<h3>maxWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>The maximum width to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the maxWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ maxWidth: 600 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code><code class=\"plain\">, 600 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minHeight\" class=\"api-item\">\n<h3>minHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>150</code>\n</div>\n<div>The minimum height to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the minHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ minHeight: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minWidth\" class=\"api-item\">\n<h3>minWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>150</code>\n</div>\n<div>The minimum width to which the dialog can be resized, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the minWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ minWidth: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-modal\" class=\"api-item\">\n<h3>modal<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code>, the dialog will have modal behavior; other items on the page will be disabled, i.e., cannot be interacted with. Modal dialogs create an overlay below the dialog but above other page elements.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the modal option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ modal: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the modal option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">modal = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"modal\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"modal\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"center\", at: \"center\", of: window }</code>\n</div>\n<div>Specifies where the dialog should be displayed. The dialog will handle collisions such that as much of the dialog is visible as possible.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Object</strong>: Identifies the position of the dialog when opened. The <code>of</code> option defaults to the window, but you can specify another element to position against. You can refer to the <a href=\"/position\">jQuery UI Position</a> utility for more details about the various options.</li>\n<li>\n<strong>String</strong>: A string representing the position within the viewport. Possible values: <code>\"center\"</code>, <code>\"left\"</code>, <code>\"right\"</code>, <code>\"top\"</code>, <code>\"bottom\"</code>.</li>\n<li>\n<strong>Array</strong>: An array containing an <em>x, y</em> coordinate pair in pixel offset from the top left corner of the viewport or the name of a possible string value.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ position: { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"left bottom\"</code><code class=\"plain\">, of: button } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"left bottom\"</code><code class=\"plain\">, of: button } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-resizable\" class=\"api-item\">\n<h3>resizable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, the dialog will be resizable. Requires the <a href=\"/resizable/\">jQuery UI Resizable widget</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ resizable: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the resizable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">resizable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the dialog.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: \n\t\t\t\t\tThe dialog will fade in while animating the height and width for the specified duration.\n\t\t\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\t\t\tThe dialog will be shown using the specified jQuery UI effect. See the <a href=\"/category/effects/\">list of effects</a> for possible values.\n\t\t\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. The <code>effect</code> property must be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the dialog with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ show: </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, </code><code class=\"string\">\"slow\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stack\" class=\"api-item\">\n<h3>stack<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Specifies whether the dialog will stack on top of other dialogs. This will cause the dialog to move to the front of other dialogs when it gains focus.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the stack option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ stack: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stack option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stack = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-title\" class=\"api-item\">\n<h3>title<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"\"</code>\n</div>\n<div>Specifies the title of the dialog. Any valid HTML may be set as the title. The title can also be specified by the <code>title</code> attribute on the dialog source element.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the title option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ title: </code><code class=\"string\">\"Dialog Title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the title option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">title = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"title\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"title\"</code><code class=\"plain\">, </code><code class=\"string\">\"Dialog Title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-width\" class=\"api-item\">\n<h3>width<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>300</code>\n</div>\n<div>The width of the dialog, in pixels.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the width option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ width: 500 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the width option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">width = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"width\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"width\"</code><code class=\"plain\">, 500 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1000</code>\n</div>\n<div>The starting z-index for the dialog.</div>\n<strong>Code examples:</strong><p>Initialize the dialog with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({ zIndex: 20 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 20 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>Closes the dialog.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the dialog functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the dialog.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the dialog.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isOpen\">\n<div class=\"api-item\">\n<h3>isOpen() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>Whether the dialog is currently open.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isOpen method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isOpen = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"isOpen\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-moveToTop\">\n<div class=\"api-item\">\n<h3>moveToTop()</h3>\n<div>Moves the dialog to the top of the dialog stack.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the moveToTop method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"moveToTop\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-open\">\n<div class=\"api-item\">\n<h3>open()</h3>\n<div>Opens the dialog.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the open method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"open\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current dialog options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the dialog option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the dialog.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the generated wrapper.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-beforeClose\" class=\"api-item first-item\">\n<h3>beforeClose( event, ui )<span class=\"returns\">Type: <code>dialogbeforeclose</code></span>\n</h3>\n<div>Triggered when a dialog is about to close. If canceled, the dialog will not close.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the beforeClose callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeClose: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogbeforeclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogbeforeclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-close\" class=\"api-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>dialogclose</code></span>\n</h3>\n<div>Triggered when the dialog is closed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dialogcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the dialog is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drag\" class=\"api-item\">\n<h3>drag( event, ui )<span class=\"returns\">Type: <code>dialogdrag</code></span>\n</h3>\n<div>Triggered while the dialog is being dragged.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the drag callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drag: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdrag event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdrag\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-dragStart\" class=\"api-item\">\n<h3>dragStart( event, ui )<span class=\"returns\">Type: <code>dialogdragstart</code></span>\n</h3>\n<div>Triggered when the user starts dragging the dialog.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dragStart callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">dragStart: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdragstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdragstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-dragStop\" class=\"api-item\">\n<h3>dragStop( event, ui )<span class=\"returns\">Type: <code>dialogdragstop</code></span>\n</h3>\n<div>Triggered after the dialog has been dragged.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current offset position of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the dragStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">dragStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogdragstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogdragstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>dialogfocus</code></span>\n</h3>\n<div>Triggered when the dialog gains focus.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogfocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogfocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>dialogopen</code></span>\n</h3>\n<div>Triggered when the dialog is opened.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resize\" class=\"api-item\">\n<h3>resize( event, ui )<span class=\"returns\">Type: <code>dialogresize</code></span>\n</h3>\n<div>Triggered while the dialog is being resized.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resize callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resize: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresize event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresize\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resizeStart\" class=\"api-item\">\n<h3>resizeStart( event, ui )<span class=\"returns\">Type: <code>dialogresizestart</code></span>\n</h3>\n<div>Triggered when the user starts resizing the dialog.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizeStart callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resizeStart: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresizestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresizestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resizeStop\" class=\"api-item\">\n<h3>resizeStop( event, ui )<span class=\"returns\">Type: <code>dialogresizestop</code></span>\n</h3>\n<div>Triggered after the dialog has been resized.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>orginalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The CSS position of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current CSS position of the dialog.</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size of the dialog prior to being resized.</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size of the dialog.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the dialog with the resizeStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).dialog({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resizeStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dialogresizestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dialogresizestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>A dialog is a floating window that contains a title bar and a content area. The dialog window can be moved, resized and closed with the 'x' icon by default.</p>\n\n\t\t<p>If the content length exceeds the maximum height, a scrollbar will automatically appear.</p>\n\n\t\t<p>A bottom button bar and semi-transparent modal overlay layer are common options that can be added.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Dialog</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;dialog demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">button</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"opener\"</code><code class=\"plain\">&gt;open the dialog&lt;/</code><code class=\"keyword\">button</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"dialog\"</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Dialog Title\"</code><code class=\"plain\">&gt;I'm a dialog&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#dialog\" ).dialog({ autoOpen: false });</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">$( \"#opener\" ).click(function() {</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#dialog\" ).dialog( \"open\" );</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">});</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/draggable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI draggable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Draggable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Allow elements to be moved using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-addClasses\">addClasses</a></div>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-axis\">axis</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-connectToSortable\">connectToSortable</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-cursor\">cursor</a></div>\n<div><a href=\"#option-cursorAt\">cursorAt</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handle\">handle</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-iframeFix\">iframeFix</a></div>\n<div><a href=\"#option-opacity\">opacity</a></div>\n<div><a href=\"#option-refreshPositions\">refreshPositions</a></div>\n<div><a href=\"#option-revert\">revert</a></div>\n<div><a href=\"#option-revertDuration\">revertDuration</a></div>\n<div><a href=\"#option-scope\">scope</a></div>\n<div><a href=\"#option-scroll\">scroll</a></div>\n<div><a href=\"#option-scrollSensitivity\">scrollSensitivity</a></div>\n<div><a href=\"#option-scrollSpeed\">scrollSpeed</a></div>\n<div><a href=\"#option-snap\">snap</a></div>\n<div><a href=\"#option-snapMode\">snapMode</a></div>\n<div><a href=\"#option-snapTolerance\">snapTolerance</a></div>\n<div><a href=\"#option-stack\">stack</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-drag\">drag</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"draggable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Draggable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Allow elements to be moved using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-addClasses\" class=\"api-item first-item\">\n<h3>addClasses<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>false</code>, will prevent the <code>ui-draggable</code> class from being added. This may be desired as a performance optimization when calling <code>.draggable()</code> on hundreds of elements.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the addClasses option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ addClasses: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the addClasses option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">addClasses = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-appendTo\" class=\"api-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"parent\"</code>\n</div>\n<div>Which element the draggable helper should be appended to while dragging.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>jQuery</strong>: A jQuery object containing the element to append the helper to.</li>\n<li>\n<strong>Element</strong>: The element to append the helper to.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which element to append the helper to.</li>\n<li>\n<strong>String</strong>: The string <code>\"parent\"</code> will cause the helper to be a sibling of the draggable.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ appendTo: </code><code class=\"string\">\"body\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"body\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-axis\" class=\"api-item\">\n<h3>axis<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains dragging to either the horizontal (x) or vertical (y) axis. Possible values: <code>\"x\"</code>, <code>\"y\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the axis option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ axis: </code><code class=\"string\">\"x\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the axis option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">axis = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code><code class=\"plain\">, </code><code class=\"string\">\"x\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents dragging from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cancel: </code><code class=\"string\">\".title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-connectToSortable\" class=\"api-item\">\n<h3>connectToSortable<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Allows the draggable to be dropped onto the specified sortables. If this option is used, a draggable can be dropped onto a sortable list and then becomes part of it. Note: The <a href=\"#option-helper\"><code>helper</code></a> option must be set to <code>\"clone\"</code> in order to work flawlessly. Requires the <a href=\"/sortable/\">jQuery UI Sortable plugin</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the connectToSortable option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ connectToSortable: </code><code class=\"string\">\"#my-sortable\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the connectToSortable option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">connectToSortable = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectToSortable\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectToSortable\"</code><code class=\"plain\">, </code><code class=\"string\">\"#my-sortable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains dragging to within the bounds of the specified element or region.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: The draggable element will be contained to the bounding box of the first element found by the selector. If no element is found, no containment will be set.</li>\n<li>\n<strong>Element</strong>: The draggable element will be contained to the bounding box of this element.</li>\n<li>\n<strong>String</strong>: Possible values: <code>\"parent\"</code>, <code>\"document\"</code>, <code>\"window\"</code>.</li>\n<li>\n<strong>Array</strong>: An array defining a bounding box in the form <code>[ x1, y1, x2, y2 ]</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursor\" class=\"api-item\">\n<h3>cursor<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>The CSS cursor during the drag operation.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cursor option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cursor: </code><code class=\"string\">\"crosshair\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursor option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursor = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code><code class=\"plain\">, </code><code class=\"string\">\"crosshair\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursorAt\" class=\"api-item\">\n<h3>cursorAt<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Sets the offset of the dragging helper relative to the mouse cursor. Coordinates can be given as a hash using a combination of one or two keys: <code>{ top, left, right, bottom }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the cursorAt option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ cursorAt: { left: 5 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursorAt option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursorAt = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code><code class=\"plain\">, { left: 5 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds after mousedown until dragging should start. This option can be used to prevent unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ delay: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the draggable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Distance in pixels after mousedown the mouse must move before dragging should start. This option can be used to prevent unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ distance: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the dragging helper to a grid, every x and y pixels. The array must be of the form <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ grid: [ 50, 20 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 50, 20 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handle\" class=\"api-item\">\n<h3>handle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, restricts dragging from starting unless the mousedown occurs on the specified element(s).</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the handle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ handle: </code><code class=\"string\">\"h2\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code><code class=\"plain\">, </code><code class=\"string\">\"h2\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"original\"</code>\n</div>\n<div>Allows for a helper element to be used for dragging display.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: If set to <code>\"clone\"</code>, then the element will be cloned and the clone will be dragged.</li>\n<li>\n<strong>Function</strong>: A function that will return a DOMElement to use while dragging.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ helper: </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-iframeFix\" class=\"api-item\">\n<h3>iframeFix<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Prevent iframes from capturing the mousemove events during a drag. Useful in combination with the <a href=\"#option-cursorAt\"><code>cursorAt</code></a> option, or in any case where the mouse cursor may not be over the helper.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, transparent overlays will be placed over all iframes on the page.</li>\n<li>\n<strong>Selector</strong>: Any iframes matching the selector will be covered by transparent overlays.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the iframeFix option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ iframeFix: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the iframeFix option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">iframeFix = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"iframeFix\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"iframeFix\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-opacity\" class=\"api-item\">\n<h3>opacity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Opacity for the helper while being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the opacity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ opacity: 0.35 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the opacity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">opacity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code><code class=\"plain\">, 0.35 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-refreshPositions\" class=\"api-item\">\n<h3>refreshPositions<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\tIf set to <code>true</code>, all droppable positions are calculated on every mousemove.\n\t\t\t\t<em>Caution: This solves issues on highly dynamic pages, but dramatically decreases performance.</em>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the refreshPositions option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ refreshPositions: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the refreshPositions option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">refreshPositions = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"refreshPositions\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"refreshPositions\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revert\" class=\"api-item\">\n<h3>revert<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should revert to its start position when dragging stops.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: If set to <code>true</code> the element will always revert.</li>\n<li>\n<strong>String</strong>: If set to <code>\"invalid\"</code>, revert will only occur if the draggable has not been dropped on a droppable. For <code>\"valid\"</code>, it's the other way around.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the revert option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ revert: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revert option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revert = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revertDuration\" class=\"api-item\">\n<h3>revertDuration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>500</code>\n</div>\n<div>The duration of the revert animation, in milliseconds. Ignored if the <a href=\"#option-revert\"><code>revert</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the revertDuration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ revertDuration: 200 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revertDuration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revertDuration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revertDuration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revertDuration\"</code><code class=\"plain\">, 200 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scope\" class=\"api-item\">\n<h3>scope<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"default\"</code>\n</div>\n<div>Used to group sets of draggable and droppable items, in addition to droppable's <a href=\"/droppable#option-accept\"><code>accept</code></a> option. A draggable with the same <code>scope</code> value as a droppable will be accepted by the droppable.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scope option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scope: </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scope option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scope = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code><code class=\"plain\">, </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scroll\" class=\"api-item\">\n<h3>scroll<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>true</code>, container auto-scrolls while dragging.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scroll option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scroll: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scroll option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scroll = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSensitivity\" class=\"api-item\">\n<h3>scrollSensitivity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>Distance in pixels from the edge of the viewport after which the viewport should scroll. Distance is relative to pointer, not the draggable. Ignored if the <a href=\"#option-scroll\"><code>scroll</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scrollSensitivity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scrollSensitivity: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSensitivity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSensitivity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSpeed\" class=\"api-item\">\n<h3>scrollSpeed<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The speed at which the window should scroll once the mouse pointer gets within the <a href=\"#option-scrollSensitivity\"><code>scrollSensitivity</code></a> distance. Ignored if the <a href=\"#option-scroll\"><code>scroll</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the scrollSpeed option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ scrollSpeed: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSpeed option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSpeed = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snap\" class=\"api-item\">\n<h3>snap<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should snap to other elements.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the element will snap to all other draggable elements.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which elements to snap to.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the draggable with the snap option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snap: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snap option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snap = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snap\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snap\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snapMode\" class=\"api-item\">\n<h3>snapMode<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"both\"</code>\n</div>\n<div>Determines which edges of snap elements the draggable will snap to. Ignored if the <a href=\"#option-snap\"><code>snap</code></a> option is <code>false</code>. Possible values: <code>\"inner\"</code>, <code>\"outer\"</code>, <code>\"both\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the snapMode option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snapMode: </code><code class=\"string\">\"inner\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snapMode option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snapMode = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapMode\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapMode\"</code><code class=\"plain\">, </code><code class=\"string\">\"inner\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-snapTolerance\" class=\"api-item\">\n<h3>snapTolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The distance in pixels from the snap element edges at which snapping should occur. Ignored if the <a href=\"#option-snap\"><code>snap</code></a> option is <code>false</code>.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the snapTolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ snapTolerance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the snapTolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">snapTolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapTolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"snapTolerance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-stack\" class=\"api-item\">\n<h3>stack<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Controls the z-index of the set of elements that match the selector, always brings the currently dragged item to the front. Very useful in things like window managers.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the stack option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ stack: </code><code class=\"string\">\".products\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the stack option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">stack = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"stack\"</code><code class=\"plain\">, </code><code class=\"string\">\".products\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Z-index for the helper while being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the draggable with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({ zIndex: 100 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 100 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the draggable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the draggable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the draggable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current draggable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the draggable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the draggable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the draggable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dragcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the draggable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drag\" class=\"api-item\">\n<h3>drag( event, ui )<span class=\"returns\">Type: <code>drag</code></span>\n</h3>\n<div>Triggered while the mouse is moved during the dragging.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the drag callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drag: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the drag event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"drag\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>dragstart</code></span>\n</h3>\n<div>Triggered when dragging starts.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>dragstop</code></span>\n</h3>\n<div>Triggered when dragging stops.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the draggable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).draggable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dragstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dragstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Make the selected elements draggable by mouse. If you want not just drag, but drag &amp; drop, see the <a href=\"/droppable/\">jQuery UI Droppable plugin</a>, which provides a drop target for draggables.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Draggable</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;draggable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#draggable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"draggable\"</code><code class=\"plain\">&gt;Drag me&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\">&nbsp;</div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">$( \"#draggable\" ).draggable();</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\">&nbsp;</div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/drop-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI drop-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Drop Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe drop effect hides or shows an element fading in/out and sliding in a direction.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"drop1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Drop Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe drop effect hides or shows an element fading in/out and sliding in a direction.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">drop</h4>\n<ul><li>\n<div>\n<strong>direction</strong> (default: <code>\"left\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t<p>The direction the element will fall to hide the element, or the direction from which the element will be revealed.</p>\n\t\t\t\t<p>Possible Values: <code>up</code>, <code>down</code>, <code>left</code>, <code>right</code>.</p>\n\t\t\t</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the drop effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;drop demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"drop\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/droppable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI droppable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Droppable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Create targets for draggable elements.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-accept\">accept</a></div>\n<div><a href=\"#option-activeClass\">activeClass</a></div>\n<div><a href=\"#option-addClasses\">addClasses</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-greedy\">greedy</a></div>\n<div><a href=\"#option-hoverClass\">hoverClass</a></div>\n<div><a href=\"#option-scope\">scope</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-deactivate\">deactivate</a></div>\n<div><a href=\"#event-over\">over</a></div>\n<div><a href=\"#event-out\">out</a></div>\n<div><a href=\"#event-drop\">drop</a></div>\n</div></section><article id=\"droppable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Droppable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Create targets for draggable elements.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-accept\" class=\"api-item first-item\">\n<h3>accept<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"*\"</code>\n</div>\n<div>Controls which draggable elements are accepted by the droppable.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: A selector indicating which draggable elements are accepted.</li>\n<li>\n<strong>Function</strong>: A function that will be called for each draggable on the page (passed as the first argument to the function). The function must return <code>true</code> if the draggable should be accepted.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the droppable with the accept option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ accept: </code><code class=\"string\">\".special\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the accept option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">accept = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"accept\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"accept\"</code><code class=\"plain\">, </code><code class=\"string\">\".special\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-activeClass\" class=\"api-item\">\n<h3>activeClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, the class will be added to the droppable while an acceptable draggable is being dragged.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the activeClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ activeClass: </code><code class=\"string\">\"ui-state-highlight\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the activeClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">activeClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"activeClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"activeClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"ui-state-highlight\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-addClasses\" class=\"api-item\">\n<h3>addClasses<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to <code>false</code>, will prevent the <code>ui-droppable</code> class from being added. This may be desired as a performance optimization when calling <code>.droppable()</code> init on hundreds of elements.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the addClasses option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ addClasses: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the addClasses option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">addClasses = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"addClasses\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the droppable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-greedy\" class=\"api-item\">\n<h3>greedy<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>By default, when an element is dropped on nested droppables, each droppable will receive the element. However, by setting this option to <code>true</code>, any parent droppables will not receive the element.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the greedy option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ greedy: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the greedy option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">greedy = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"greedy\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"greedy\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hoverClass\" class=\"api-item\">\n<h3>hoverClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If specified, the class will be added to the droppable while an acceptable draggable is being hovered over the droppable.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the hoverClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ hoverClass: </code><code class=\"string\">\"drop-hover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hoverClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hoverClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hoverClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hoverClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"drop-hover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scope\" class=\"api-item\">\n<h3>scope<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"default\"</code>\n</div>\n<div>Used to group sets of draggable and droppable items, in addition to the <a href=\"#option-accept\"><code>accept</code></a> option. A draggable with the same scope value as a droppable will be accepted.</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the scope option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ scope: </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scope option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scope = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scope\"</code><code class=\"plain\">, </code><code class=\"string\">\"tasks\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"intersect\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether a draggable is hovering over a droppable. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"fit\"</code>: Draggable overlaps the droppable entirely.</li>\n\t\t\t\t\t<li>\n<code>\"intersect\"</code>: Draggable overlaps the droppable at least 50% in both directions.</li>\n\t\t\t\t\t<li>\n<code>\"pointer\"</code>: Mouse pointer overlaps the droppable.</li>\n\t\t\t\t\t<li>\n<code>\"touch\"</code>: Draggable overlaps the droppable any amount.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the droppable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({ tolerance: </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the droppable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the droppable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the droppable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current droppable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the droppable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the droppable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the droppable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>dropactivate</code></span>\n</h3>\n<div>Triggered when an accepted draggable starts dragging. This can be useful if you want to make the droppable \"light up\" when it can be dropped on.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>dropcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the droppable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-deactivate\" class=\"api-item\">\n<h3>deactivate( event, ui )<span class=\"returns\">Type: <code>dropdeactivate</code></span>\n</h3>\n<div>Triggered when an accepted draggable stops dragging.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the deactivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">deactivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropdeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropdeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-drop\" class=\"api-item\">\n<h3>drop( event, ui )<span class=\"returns\">Type: <code>drop</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dropped on the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the drop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the drop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"drop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-out\" class=\"api-item\">\n<h3>out( event, ui )<span class=\"returns\">Type: <code>dropout</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dragged out of the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the out callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">out: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropout event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropout\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-over\" class=\"api-item\">\n<h3>over( event, ui )<span class=\"returns\">Type: <code>dropover</code></span>\n</h3>\n<div>Triggered when an accepted draggable is dragged over the droppable (based on the<a href=\"#option-tolerance\"><code>tolerance</code></a> option).</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>draggable</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the draggable element.</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>A jQuery object representing the helper that is being dragged.</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current CSS position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Current offset position of the draggable helper as <code>{ top, left }</code> object.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the droppable with the over callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).droppable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">over: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the dropover event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"dropover\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Droppable plugin makes selected elements droppable (meaning they accept being dropped on by <a href=\"/draggable/\">draggables</a>). You can specify which draggables each will accept.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A pair of draggable and droppable elements.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;droppable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#draggable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#droppable {</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: absolute;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">left: 250px;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">top: 0;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 125px;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 125px;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #999;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">color: #fff;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">padding: 10px;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\">&nbsp;</div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"droppable\"</code><code class=\"plain\">&gt;Drop here&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"draggable\"</code><code class=\"plain\">&gt;Drag me&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">$( \"#draggable\" ).draggable();</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#droppable\" ).droppable({</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">drop: function() {</code></div><div class=\"line number36 index35 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( \"dropped\" );</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">});</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number40 index39 alt1\">&nbsp;</div><div class=\"line number41 index40 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/explode-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI explode-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Explode Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe explode effect hides or shows an element by splitting it into pieces.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"explode1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Explode Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe explode effect hides or shows an element by splitting it into pieces.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">explode</h4>\n<ul><li>\n<div>\n<strong>pieces</strong> (default: <code>9</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of pieces to explode, should be a perfect square, any other values are rounded to the nearest square.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the explode effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;explode demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"explode\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fade-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI fade-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Fade Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe fade effect hides or shows an element by fading it.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"fade1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Fade Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe fade effect hides or shows an element by fading it.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\"><h4 class=\"name\">fade</h4></li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the fade effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;fade demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"fade\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/fold-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI fold-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Fold Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe fold effect hides or shows an element by folding it.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"fold1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Fold Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe fold effect hides or shows an element by folding it.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">fold</h4>\n<ul>\n<li>\n<div>\n<strong>size</strong> (default: <code>15</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The size of the \"folded\" element.</div>\n</li>\n<li>\n<div>\n<strong>horizFirst</strong> (default: <code>false</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a>\n</div>\n<div>Whether the horizontal direction happens first when hiding. Remember, showing inverts hiding.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the fold effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;fold demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"fold\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/highlight-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI highlight-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Highlight Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe highlight effect hides or shows an element by animating its background color first.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"highlight1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Highlight Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe highlight effect hides or shows an element by animating its background color first.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">highlight</h4>\n<ul><li>\n<div>\n<strong>color</strong> (default: <code>\"#ffff99\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The background color used during the animation.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the highlight effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;highlight demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"highlight\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/jQuery.widget.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI jQuery documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Widget Factory\",\n\t\t\"excerpt\":\n\t\t\t\"Create stateful jQuery plugins using the same abstraction as all jQuery UI widgets.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"utilities\",\"utilities\",\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><div class=\"toc\">\n<h4><span>Contents:</span></h4>\n<ul class=\"toc-list\">\n<li>\n<a href=\"#jQuery-widget1\">jQuery.widget( name [, base ], prototype )</a><ul><li>jQuery.widget( name [, base ], prototype )</li></ul>\n</li>\n<li><a href=\"#jQuery-Widget2\">jQuery.Widget</a></li>\n</ul>\n</div><article id=\"jQuery-widget1\" class=\"entry method\"><h2 class=\"section-title\"><span class=\"name\">jQuery.widget( name [, base ], prototype )</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Create stateful jQuery plugins using the same abstraction as all jQuery UI widgets.</p>\n<ul class=\"signatures\"><li class=\"signature\" id=\"jQuery-widget-name-base-prototype\">\n<h4 class=\"name\">jQuery.widget( name [, base ], prototype )</h4>\n<ul>\n<li>\n<div><strong>name</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the widget to create, including the namespace.</div>\n</li>\n<li>\n<div><strong>base</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>The base widget to inherit from. This must be a constructor that can be instantiated with the `new` keyword. Defaults to <code>jQuery.Widget</code>.</div>\n</li>\n<li>\n<div><strong>prototype</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#PlainObject\">PlainObject</a>\n</div>\n<div>The object to use as a prototype for the widget.</div>\n</li>\n</ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t\t<p>You can create new widgets from scratch, using just the <code>$.Widget</code> object as a base to inherit from, or you can explicitly inherit from existing jQuery UI or third-party widgets. Defining a widget with the same name as you inherit from even allows you to extend widgets in place.</p>\n\n\t\t\t<p>jQuery UI contains many widgets that maintain state and therefore have a slightly different usage pattern than typical jQuery plugins. All of jQuery UI's widgets use the same patterns, which is defined by the widget factory. So if you learn how to use one widget, then you'll know how to use all of them.</p>\n\n\t\t\t<p><em>Note: This documentation shows examples using the <a href=\"/progressbar\">progressbar widget</a> but the syntax is the same for every widget.</em></p>\n\n\t\t\t<h3>Initialization</h3>\n\n\t\t\t<p>In order to track the state of the widget, we must introduce a full life cycle for the widget. The life cycle starts when the widget is initalized. To initialize a widget, we simply call the plugin on one or more elements.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar();</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>This will initialize each element in the jQuery object, in this case the element with an id of <code>\"elem\"</code>. Because we called the <code>progressbar()</code> method with no parameters, the widget is initialized with its default options. We can pass a set of options during initialization in order to override the default options.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar({ value: 20 });</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>We can pass as many or as few options as we want during initialization. Any options that we don't pass will just use their default values.</p>\n\n\t\t\t<p>The options are part of the widget's state, so we can set options after initialization as well. We'll see this later with the option method.</p>\n\n\t\t\t<h3>Methods</h3>\n\n\t\t\t<p>Now that the widget is initialized, we can query its state or perform actions on the widget. All actions after initialization take the form of a method call. To call a method on a widget, we pass the name of the method to the jQuery plugin. For example, to call the <code>value()</code> method on our progressbar widget, we would use:</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>If the method accepts parameters, we can pass them after the method name. For example, to pass the parameter <code>40</code> to the <code>value()</code> method, we can use:</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 40 );</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Just like other methods in jQuery, most widget methods return the jQuery object for chaining.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">)</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 90 )</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.addClass( </code><code class=\"string\">\"almost-done\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Each widget will have its own set of methods based on the functionality that the widget provides. However, there are a few methods that exist on all widgets, which are documented below.</p>\n\n\t\t\t<h3>Events</h3>\n\n\t\t\t<p>All widgets have events associated with their various behaviors to notify you when the state is changing. For most widgets, when the events are triggered, the names are prefixed with the widget name. For example, we can bind to progressbar's <code>change</code> event which is triggered whenever the value changes.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).bind( </code><code class=\"string\">\"progressbarchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">() {</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( </code><code class=\"string\">\"The value has changed!\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>Each event has a corresponding callback, which is exposed as an option. We can hook into progressbar's <code>change</code> callback instead of binding to the <code>progressbarchange</code> event, if we want to.</p>\n\n\t\t\t<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\"#elem\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">() {</code></div><div class=\"line number3 index2 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">alert( </code><code class=\"string\">\"The value has changed!\"</code> <code class=\"plain\">);</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n\n\t\t\t<p>All widgets have a <code>create</code> event which is triggered upon instantiation.</p>\n\t\t</div>\n</div></article><section class=\"quick-nav\"><header><h2>QuickNav</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-show\">show</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n<div><a href=\"#method-_create\">_create</a></div>\n<div><a href=\"#method-_destroy\">_destroy</a></div>\n<div><a href=\"#method-_getCreateEventData\">_getCreateEventData</a></div>\n<div><a href=\"#method-_getCreateOptions\">_getCreateOptions</a></div>\n<div><a href=\"#method-_init\">_init</a></div>\n<div><a href=\"#method-_setOptions\">_setOptions</a></div>\n<div><a href=\"#method-_setOption\">_setOption</a></div>\n<div><a href=\"#method-_on\">_on</a></div>\n<div><a href=\"#method-_off\">_off</a></div>\n<div><a href=\"#method-_super\">_super</a></div>\n<div><a href=\"#method-_superApply\">_superApply</a></div>\n<div><a href=\"#method-_delay\">_delay</a></div>\n<div><a href=\"#method-_hoverable\">_hoverable</a></div>\n<div><a href=\"#method-_focusable\">_focusable</a></div>\n<div><a href=\"#method-_trigger\">_trigger</a></div>\n<div><a href=\"#method-_show\">_show</a></div>\n<div><a href=\"#method-_hide\">_hide</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n</div></section><article id=\"jQuery-Widget2\" class=\"entry widget\"><h2 class=\"section-title\"><span>Base Widget</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>The base widget used by the widget factory.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the jQuery.Widget if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the element.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the element will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the element will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe element will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe element will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the element.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the element will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the element will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe element will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe element will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-_create\"><div class=\"api-item first-item\">\n<h3>_create()</h3>\n<div>\n\t\t\t\t\tThe <code>_create()</code> method is the widget's constructor.\n\t\t\t\t\tThere are no parameters, but <code>this.element</code> and <code>this.options</code> are already set.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_delay\"><div class=\"api-item\">\n<h3>_delay( fn [, delay ] ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>\n\t\t\t\t\tInvokes the provided function after a specified delay. Keeps <code>this</code> context correct. Essentially <code>setTimeout()</code>.\n\t\t\t\t\t<p>Returns the timeout ID for use with <code>clearTimeout()</code>.</p>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>fn</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>() or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The function to invoke. Can also be the name of a method on the widget.</div>\n</li>\n<li>\n<div><strong>delay</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The number of milliseconds to wait before invoking the function. Deafults to <code>0</code>.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_destroy\"><div class=\"api-item\">\n<h3>_destroy()</h3>\n<div>\n\t\t\t\t\tThe public <a href=\"#method-destroy\"><code>destroy()</code></a> method cleans up all common data, events, etc. and then delegates out to <code>_destroy()</code> for custom, widget-specific, cleanup.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_focusable\"><div class=\"api-item\">\n<h3>_focusable( element )</h3>\n<div>\n\t\t\t\t\tSets up <code>element</code> to apply the <code>ui-state-focus</code> class on focus.\n\t\t\t\t\t<p>The event handlers are automatically cleaned up on destroy.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to apply the focusable behavior to.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_getCreateEventData\"><div class=\"api-item\">\n<h3>_getCreateEventData() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>\n\t\t\t\t\tAll widgets trigger the <a href=\"#event-create\"><code>create</code></a> event. By default, no data is provided in the event, but this method can return an object which will be passed as the <code>create</code> event's data.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_getCreateOptions\"><div class=\"api-item\">\n<h3>_getCreateOptions() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>\n\t\t\t\t\tThis method allows the widget to define a custom method for defining options during instantiation. This user-provided options override the options returned by this method which override the default options.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_hide\"><div class=\"api-item\">\n<h3>_hide( element, option [, callback ] )</h3>\n<div>\n\t\t\t\t\tHides an element immediately, using built-in animation methods, or using custom effects.\n\t\t\t\t\tSee the <a href=\"#option-hide\">hide</a> option for possible <code>option</code> values.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to hide.</div>\n</li>\n<li>\n<div><strong>option</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings defining how to hide the element.</div>\n</li>\n<li>\n<div><strong>callback</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>Callback to invoke after the element has been fully hidden.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_hoverable\"><div class=\"api-item\">\n<h3>_hoverable( element )</h3>\n<div>\n\t\t\t\t\tSets up <code>element</code> to apply the <code>ui-state-hover</code> class on hover.\n\t\t\t\t\t<p>The event handlers are automatically cleaned up on destroy.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to apply the hoverable behavior to.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_init\"><div class=\"api-item\">\n<h3>_init()</h3>\n<div>\n\t\t\t\t\tWidgets have the concept of initialization that is distinct from creation. Any time the plugin is called with no arguments or with only an option hash, the widget is initialized; this includes when the widget is created.\n\n\t\t\t\t\t<p><em>Note: Initialization should only be handled if there is a logical action to perform on successive calls to the widget with no arguments.</em></p>\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_off\"><div class=\"api-item\">\n<h3>_off( element, eventName )</h3>\n<div>\n\t\t\t\t\tUnbinds event handlers from the specified element(s).\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe element(s) to unbind the event handlers from. Unlike the <code>_on()</code> method, the elements are required for <code>_off()</code>.\n\t\t\t\t\t</div>\n</li>\n<li>\n<div><strong>eventName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>One or more space-separated event types.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_on\"><div class=\"api-item\">\n<h3>_on(  [element ], handlers )</h3>\n<div>\n\t\t\t\t\tBinds event handlers to the specified element(s). Delegation is supported via selectors inside the event names, e.g., \"<code>click .foo</code>\". The <code>_on()</code> method provides several benefits of direct event binding:\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Maintains proper <code>this</code> context inside the handlers.</li>\n\t\t\t\t\t\t<li>Automatically handles disabled widgets: If the widget is disabled or the event occurs on an element with the <code>ui-state-disabled</code> class, the event handler is not invoked.</li>\n\t\t\t\t\t\t<li>Event handlers are automatically namespaced and cleaned up on destroy.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>Which element(s) to bind the event handlers to. If no element is provided, <code>this.element</code> is used.</div>\n</li>\n<li>\n<div><strong>handlers</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>\n\t\t\t\t\t\tA map in which the string keys represent the event type and optional selector for delegation, and the values represent a handler function to be called for the event.\n\t\t\t\t\t</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_setOption\"><div class=\"api-item\">\n<h3>_setOption( key, value )</h3>\n<div>\n\t\t\t\t\tCalled from the <a href=\"#method-_setOptions\"><code>_setOptions()</code></a> method for each individual option. Widget state should be updated based on changes.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>key</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_setOptions\"><div class=\"api-item\">\n<h3>_setOptions( options )</h3>\n<div>\n\t\t\t\t\tCalled whenever the <a href=\"#method-option\"><code>option()</code></a> method is called, regardless of the form in which the <code>option()</code> method was called.\n\t\t\t\t\t<p>Overriding this is useful if you can defer processor-intensive changes for multiple option changes.</p>\n\t\t\t\t</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_show\"><div class=\"api-item\">\n<h3>_show( element, option [, callback ] )</h3>\n<div>\n\t\t\t\t\tShows an element immediately, using built-in animation methods, or using custom effects.\n\t\t\t\t\tSee the <a href=\"#option-show\">show</a> option for possible <code>option</code> values.\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The element(s) to show.</div>\n</li>\n<li>\n<div><strong>option</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings defining how to show the element.</div>\n</li>\n<li>\n<div><strong>callback</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>Callback to invoke after the element has been fully shown.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-_super\"><div class=\"api-item\">\n<h3>_super()</h3>\n<div>\n\t\t\t\t\tInvokes the method of the same name from the parent widget, with any specified arguments. Essentially <code>.call()</code>.\n\t\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-_superApply\"><div class=\"api-item\">\n<h3>_superApply( arguments )</h3>\n<div>\n\t\t\t\t\tInvokes the method of the same name from the parent widget, with the array of arguments. Essentially <code>.apply()</code>.\n\t\t\t\t</div>\n<ul><li>\n<div><strong>arguments</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>Array of arguments to pass to the parent method.</div>\n</li></ul>\n</div></div>\n<div id=\"method-_trigger\"><div class=\"api-item\">\n<h3>_trigger( type [, event ] [, data ] )</h3>\n<div>\n\t\t\t\t\tTriggers an event and its associated callback.\n\t\t\t\t\t<p>The option with the name equal to type is invoked as the callback.</p>\n\t\t\t\t\t<p>The event name is the widget name + type.</p>\n\t\t\t\t\t<p><em>Note: When providing data, you must provide all three parameters. If there is no event to pass along, just pass <code>null</code>.</em></p>\n\t\t\t\t</div>\n<ul>\n<li>\n<div><strong>type</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The <code>type</code> should match the name of a callback option. The full event type will be generated automatically.</div>\n</li>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>The original event that caused this event to occur; useful for providing context to the listener.</div>\n</li>\n<li>\n<div><strong>data</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A hash of data associated with the event.</div>\n</li>\n</ul>\n</div></div>\n<div id=\"method-destroy\"><div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the jQuery.Widget functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-disable\"><div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the jQuery.Widget.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-enable\"><div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the jQuery.Widget.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current jQuery.Widget options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the jQuery.Widget option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the jQuery.Widget.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\"><div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the original element or other relevant generated element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div></div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>jQuery.Widgetcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the jQuery.Widget is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the jQuery.Widget with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.Widget({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the jQuery.Widgetcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"jQuery.Widgetcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/menu.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI menu documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Menu Widget\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThemeable menu with mouse and keyboard interactions for navigation.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-menus\">menus</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-role\">role</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-blur\">blur</a></div>\n<div><a href=\"#method-collapse\">collapse</a></div>\n<div><a href=\"#method-collapseAll\">collapseAll</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-expand\">expand</a></div>\n<div><a href=\"#method-focus\">focus</a></div>\n<div><a href=\"#method-isFirstItem\">isFirstItem</a></div>\n<div><a href=\"#method-isLastItem\">isLastItem</a></div>\n<div><a href=\"#method-next\">next</a></div>\n<div><a href=\"#method-nextPage\">nextPage</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-previous\">previous</a></div>\n<div><a href=\"#method-previousPage\">previousPage</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-select\">select</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-blur\">blur</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-focus\">focus</a></div>\n<div><a href=\"#event-select\">select</a></div>\n</div></section><article id=\"menu1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Menu Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThemeable menu with mouse and keyboard interactions for navigation.\n\t</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the menu if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ submenu: \"ui-icon-carat-1-e\" }</code>\n</div>\n<div>\n\t\t\t\tIcons to use for submenus, matching an icon defined by the jQuery UI CSS Framework.\n\t\t\t\t<ul>\n\t\t\t\t\t<li>submenu (string, default: \"ui-icon-carat-1-e\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the menu with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ icons: { submenu: </code><code class=\"string\">\"ui-icon-circle-triangle-e\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { submenu: </code><code class=\"string\">\"ui-icon-circle-triangle-e\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-menus\" class=\"api-item\">\n<h3>menus<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"ul\"</code>\n</div>\n<div>Selector for the elements that serve as the menu container, including sub-menus.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the menus option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ menus: </code><code class=\"string\">\"div\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the menus option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">menus = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"menus\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"menus\"</code><code class=\"plain\">, </code><code class=\"string\">\"div\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top\", at: \"right top\" }</code>\n</div>\n<div>Identifies the position of submenus in relation to the associated parent menu item. The <code>of</code> option defaults to the parent menu item, but you can specify another element to position against. You can refer to the <a href=\"/position/\">jQuery UI Position</a> utility for more details about the various options.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ position: { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right-5 top+5\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left top\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right-5 top+5\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-role\" class=\"api-item\">\n<h3>role<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"menu\"</code>\n</div>\n<div>Customize the ARIA roles used for the menu and menu items. The default uses <code>\"menuitem\"</code> for items. Setting the <code>role</code> option to <code>\"listbox\"</code> will use <code>\"option\"</code> for items. If set to <code>null</code>, no roles will be set, which is useful if the menu is being controlled by another element that is maintaining focus.</div>\n<strong>Code examples:</strong><p>Initialize the menu with the role option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({ role: </code><code class=\"keyword\">null</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the role option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">role = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"role\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"role\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-blur\">\n<div class=\"api-item first-item\">\n<h3>blur(  [event ] )</h3>\n<div>\n\t\t\t\tRemoves focus from a menu, resets any active element styles and triggers the menu's <a href=\"event-blur\"><code>blur</code></a> event.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to blur.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the blur method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"blur\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-collapse\">\n<div class=\"api-item\">\n<h3>collapse(  [event ] )</h3>\n<div>\n\t\t\t\tCloses the currently active sub-menu.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to collapse.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the collapse method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"collapse\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-collapseAll\">\n<div class=\"api-item\">\n<h3>collapseAll(  [event ] [, all ] )</h3>\n<div>\n\t\t\t\tCloses all open sub-menus.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to collapse.</div>\n</li>\n<li>\n<div><strong>all</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a>\n</div>\n<div>Indicates whether all sub-menus should be closed or only sub-menus below and including the menu that is or contains the target of the triggering event.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the collapseAll method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"collapseAll\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the menu functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-expand\">\n<div class=\"api-item\">\n<h3>expand(  [event ] )</h3>\n<div>\n\t\t\t\tOpens the sub-menu below the currently active item, if one exists.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu to expand.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the expand method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"expand\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-focus\">\n<div class=\"api-item\">\n<h3>focus(  [event ], item )</h3>\n<div>\n\t\t\t\tActivates a particular menu item, begins opening any sub-menu if present and triggers the menu's <a href=\"#event-focus\"><code>focus</code></a> event.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the menu item to gain focus.</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The menu item to focus/activate.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the focus method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"focus\"</code><code class=\"plain\">, </code><code class=\"keyword\">null</code><code class=\"plain\">, menu.find( </code><code class=\"string\">\".ui-menu-item:last\"</code> <code class=\"plain\">) );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isFirstItem\">\n<div class=\"api-item\">\n<h3>isFirstItem()</h3>\n<div>\n\t\t\t\tReturns a boolean value stating whether or not the currently active item is the first item in the menu.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isFirstItem method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">firstItem = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"isFirstItem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-isLastItem\">\n<div class=\"api-item\">\n<h3>isLastItem()</h3>\n<div>\n\t\t\t\tReturns a boolean value stating whether or not the currently active item is the last item in the menu.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the isLastItem method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">lastItem = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"isLastItem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-next\">\n<div class=\"api-item\">\n<h3>next(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to next menu item.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the next method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"next\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-nextPage\">\n<div class=\"api-item\">\n<h3>nextPage(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to first menu item below the bottom of a scrollable menu or the last item if not scrollable.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the nextPage method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"nextPage\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current menu options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the menu option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the menu.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-previous\">\n<div class=\"api-item\">\n<h3>previous(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to previous menu item.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the previous method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"previous\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-previousPage\">\n<div class=\"api-item\">\n<h3>previousPage(  [event ] )</h3>\n<div>\n\t\t\t\tMoves active state to first menu item above the top of a scrollable menu or the first item if not scrollable.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the focus to move.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the previousPage method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"previousPage\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>\n\t\t\t\tInitializes sub-menus and menu items that have not already been initialized. New menu items, including sub-menus can be added to the menu or all of the contents of the menu can be replaced and then initialized with the <code>refresh()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-select\">\n<div class=\"api-item\">\n<h3>select(  [event ] )</h3>\n<div>\n\t\t\t\tSelects the currently active menu item, collapses all sub-menus and triggers the menu's <a href=\"#event-select\"><code>select</code></a> event.\n\t\t\t</div>\n<ul><li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>What triggered the selection.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the select method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"select\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the menu.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-blur\" class=\"api-item first-item\">\n<h3>blur( event, ui )<span class=\"returns\">Type: <code>menublur</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when the menu loses focus.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the blur callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">blur: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menublur event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menublur\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>menucreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the menu is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menucreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menucreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-focus\" class=\"api-item\">\n<h3>focus( event, ui )<span class=\"returns\">Type: <code>menufocus</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a menu gains focus or when any menu item is activated.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the focus callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">focus: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menufocus event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menufocus\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-select\" class=\"api-item\">\n<h3>select( event, ui )<span class=\"returns\">Type: <code>menuselect</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a menu item is selected.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>\n\t\t\t\t\t\tThe currently active menu item.\n\t\t\t\t\t</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the menu with the select callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).menu({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">select: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the menuselect event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"menuselect\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>A menu can be created from any valid markup as long as the elements have a strict parent/child relationship and each menu item has an anchor. The most commonly used element is the unordered list (<code>&lt;ul&gt;</code>):</p>\n\n\t\t<pre>\n&lt;ul id=\"menu\"&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 1&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 2&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3&lt;/a&gt;\n\t\t&lt;ul&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-1&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-2&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-3&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-4&lt;/a&gt;&lt;/li&gt;\n\t\t\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 3-5&lt;/a&gt;&lt;/li&gt;\n\t\t&lt;/ul&gt;\n\t&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 4&lt;/a&gt;&lt;/li&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;Item 5&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n\n\t\t<p>If you use a structure other than <code>&lt;ul&gt;</code>/<code>&lt;li&gt;</code>, including using the same element for the menu and the menu items, use the <a href=\"#option-menus\"><code>menus</code></a> option to specify a way to differentiate the two elements, e.g., <code>menus: \"div.menuElement\"</code>.</p>\n\n\t\t<p>Any menu item can be disabled by adding the <code>ui-state-disabled</code> class to that element.</p>\n\n\t\t<p>To add icons to the menu, include them in the markup:</p>\n\n\t\t<pre>\n&lt;ul id=\"menu\"&gt;\n\t&lt;li&gt;&lt;a href=\"#\"&gt;&lt;span class=\"ui-icon ui-icon-disk\"&gt;&lt;/span&gt;Save&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</pre>\n\t\t<p>Menu automatically adds the necessary padding to items without icons.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<ul>\n\t\t\t<li>ENTER/SPACE: Invoke the focused menu item's action, which may be opening a submenu.</li>\n\t\t\t<li>UP: Move focus to the previous menu item.</li>\n\t\t\t<li>DOWN: Move focus to the next menu item.</li>\n\t\t\t<li>RIGHT: Open the submenu, if available.</li>\n\t\t\t<li>LEFT: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.</li>\n\t\t\t<li>ESCAPE: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.</li>\n\t\t</ul>\n\n\t\t<p>Typing a letter moves focus to the first item whose title starts with that character. Repeating the same character cycles through matching items. Typing more characters within the one second timer matches those characters.</p>\n\n\t\t<p>Disabled items can receive keyboard focus, but do not allow any other interaction.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Menu</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;menu demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.ui-menu {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 200px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\">&nbsp;</div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"menu\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-1&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-2&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-3&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-4&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 3-5&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\">&nbsp;</div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#menu\" ).menu();</code></div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\">&nbsp;</div><div class=\"line number37 index36 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/mouse.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI mouse documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Mouse Interaction\",\n\t\t\"excerpt\":\n\t\t\t\"The base interaction layer.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"utilities\",\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-_mouseInit\">_mouseInit</a></div>\n<div><a href=\"#method-_mouseDestroy\">_mouseDestroy</a></div>\n<div><a href=\"#method-_mouseDown\">_mouseDown</a></div>\n<div><a href=\"#method-_mouseMove\">_mouseMove</a></div>\n<div><a href=\"#method-_mouseUp\">_mouseUp</a></div>\n<div><a href=\"#method-_mouseDistanceMet\">_mouseDistanceMet</a></div>\n<div><a href=\"#method-_mouseDelayMet\">_mouseDelayMet</a></div>\n<div><a href=\"#method-_mouseStart\">_mouseStart</a></div>\n<div><a href=\"#method-_mouseDrag\">_mouseDrag</a></div>\n<div><a href=\"#method-_mouseStop\">_mouseStop</a></div>\n<div><a href=\"#method-_mouseCapture\">_mouseCapture</a></div>\n</div>\n<div class=\"quick-nav-section\"><h3>Events</h3></div></section><article id=\"jQuery-ui-mouse1\" class=\"entry widget\"><h2 class=\"section-title\"><span>Mouse Interaction</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>The base interaction layer.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-cancel\" class=\"api-item first-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents interactions from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ cancel: </code><code class=\"string\">\".title\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".title\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds after mousedown until the interaction should start. This option can be used to prevent unwanted interactions when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ delay: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Distance in pixels after mousedown the mouse must move before the interaction should start. This option can be used to prevent unwanted interactions when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the jQuery.ui.mouse with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse({ distance: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-_mouseCapture\">\n<div class=\"api-item first-item\">\n<h3>_mouseCapture() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether an interaction should start based on event target of the interaction. The default implementation always returns <code>true</code>.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseCapture method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseCapture\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDelayMet\">\n<div class=\"api-item\">\n<h3>_mouseDelayMet() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether the <a href=\"#option-delay\"><code>delay</code></a> option has been met for the current interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDelayMet method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDelayMet\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDestroy\">\n<div class=\"api-item\">\n<h3>_mouseDestroy()</h3>\n<div>\n\t\t\t\tDestroys the interaction event handlers. This must be called from the extending widget's <code>_destroy()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDestroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDestroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDistanceMet\">\n<div class=\"api-item\">\n<h3>_mouseDistanceMet() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Boolean\">Boolean</a></span>\n</h3>\n<div>\n\t\t\t\tDetermines whether the <a href=\"#option-distance\"><code>distance</code></a> option has been met for the current interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDistanceMet method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDistanceMet\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDown\">\n<div class=\"api-item\">\n<h3>_mouseDown()</h3>\n<div>\n\t\t\t\tHandles the beginning of an interaction. Verifies that the event is associated with the primary mouse button and ensures that the <a href=\"#option-delay\"><code>delay</code></a> and <a href=\"#option-distance\"><code>distance</code></a> options are met prior to starting the interaction. When the interaction is ready to start, invokes the <a href=\"#method-_mouseStart\"><code>_mouseStart()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseDrag\">\n<div class=\"api-item\">\n<h3>_mouseDrag()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseDrag()</code> method to handle each movement of an interaction. This method will receive the mouse event associated with the movement.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseDrag method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseDrag\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseInit\">\n<div class=\"api-item\">\n<h3>_mouseInit()</h3>\n<div>\n\t\t\t\tInitializes the interaction event handlers. This must be called from the extending widget's <code>_create()</code> method.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseInit method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseInit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseMove\">\n<div class=\"api-item\">\n<h3>_mouseMove()</h3>\n<div>\n\t\t\t\tHandles each movement of the interaction. Invokes the <a href=\"#method-_mouseDrag\"><code>mouseDrag()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseMove method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseMove\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseStart\">\n<div class=\"api-item\">\n<h3>_mouseStart()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseStart()</code> method to handle the beginning of an interaction. This method will receive the mouse event associated with the start of the interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseStart method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseStart\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseStop\">\n<div class=\"api-item\">\n<h3>_mouseStop()</h3>\n<div>\n\t\t\t\tThe extending widget should implement a <code>_mouseStop()</code> method to handle the end of an interaction. This method will receive the mouse event associated with the end of the interaction.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseStop method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseStop\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-_mouseUp\">\n<div class=\"api-item\">\n<h3>_mouseUp()</h3>\n<div>\n\t\t\t\tHandles the end of the interaction. Invokes the <a href=\"#method-_mouseStop\"><code>mouseStop()</code></a> method for the extending widget to handle.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the _mouseUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).jQuery.ui.mouse( </code><code class=\"string\">\"_mouseUp\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Similar to <a href=\"/jQuery.Widget#jQuery-Widget2\"><code>jQuery.Widget</code></a>, the mouse interaction is not intended to be used directly. It is purely a base layer for other widgets to inherit from. This page only documents what is added to <code>jQuery.Widget</code>, but it does include internal methods that are not intended to be overwritten. The intended public API is <a href=\"#method-_mouseStart\"><code>_mouseStart()</code></a>, <a href=\"#method-_mouseDrag\"><code>_mouseDrag()</code></a>, <a href=\"#method-_mouseStop\"><code>_mouseStop()</code></a>, and <a href=\"#method-_mouseCapture\"><code>_mouseCapture()</code></a>.</p>\n\t</div>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/position.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI position documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\".position()\",\n\t\t\"excerpt\":\n\t\t\t\"Position an element relative to another.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"methods\",\"overrides\",\"utilities\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"position1\" class=\"entry method\"><h2 class=\"section-title\">\n<span class=\"name\">.position( options )</span> <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span><span class=\"version-details\">version added: 1.8</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Position an element relative to another.</p>\n<ul class=\"signatures\"><li class=\"signature\" id=\"position-options\">\n<h4 class=\"name\">.position( options )</h4>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div>\n<strong>my</strong> (default: <code>\"center\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Defines which position <strong>on the element being positioned</strong> to align with the target element: \"horizontal vertical\" alignment. A single value such as <code>\"right\"</code> will be normalized to <code>\"right center\"</code>, <code>\"top\"</code> will be normalized to <code>\"center top\"</code> (following CSS convention). Acceptable horizontal values: <code>\"left\"</code>, <code>\"center\"</code>, <code>\"right\"</code>. Acceptable vertical values: <code>\"top\"</code>, <code>\"center\"</code>, <code>\"bottom\"</code>. Example: <code>\"left top\"</code> or <code>\"center center\"</code>. Each dimension can also contain offsets, in pixels or percent, e.g., <code>\"right+10 top-25%\"</code>. Percentage offsets are relative to the element being positioned.</div>\n</li>\n<li>\n<div>\n<strong>at</strong> (default: <code>\"center\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Defines which position <strong>on the target element</strong> to align the positioned element against: \"horizontal vertical\" alignment. See the <a href=\"#option-my\"><code>my</code></a> option for full details on possible values. Perecentage offsets are relative to the target element.</div>\n</li>\n<li>\n<div>\n<strong>of</strong> (default: <code>null</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div>Which element to position against. If you provide a selector or jQuery object, the first matching element will be used. If you provide an event object, the <code>pageX</code> and <code>pageY</code> properties will be used. Example: <code>\"#top-menu\"</code>\n</div>\n</li>\n<li>\n<div>\n<strong>collision</strong> (default: <code>\"flip\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>\n\t\t\t\t\t<p>When the positioned element overflows the window in some direction, move it to an alternative position. Similar to <a href=\"#option-my\"><code>my</code></a> and <a href=\"#option-at\"><code>at</code></a>, this accepts a single value or a pair for horizontal/vertical, e.g., <code>\"flip\"</code>, <code>\"fit\"</code>, <code>\"fit flip\"</code>, <code>\"fit none\"</code>.</p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>\n<code>\"flip\"</code>: Flips the element to the opposite side of the target and the collision detection is run again to see if it will fit. Whichever side allows more of the element to be visible will be used.</li>\n\t\t\t\t\t\t<li>\n<code>\"fit\"</code>: Shift the element away from the edge of the window.</li>\n\t\t\t\t\t\t<li>\n<code>\"flipfit\"</code>: First applies the flip logic, placing the element on whichever side allows more of the element to be visible. Then the fit logic is applied to ensure as much of the element is visible as possible.</li>\n\t\t\t\t\t\t<li>\n<code>\"none\"</code>: Does not apply any collision detection.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n</li>\n<li>\n<div>\n<strong>using</strong> (default: <code>null</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</div>\n<div>\n\t\t\t\t\tWhen specified, the actual property setting is delegated to this callback. Receives two parameters: The first is a hash of <code>top</code> and <code>left</code> values for the position that should be set and can be forwarded to <code>.css()</code> or <code>.animate()</code>.\n\t\t\t\t\t<p>The second provides feedback about the position and dimensions of both elements, as well as calculations to their relative position. Both <code>target</code> and <code>element</code> have these properties: <code>element</code>, <code>left</code>, <code>top</code>, <code>width</code>, <code>height</code>. In addition, there's <code>horizontal</code>, <code>vertical</code> and <code>important</code>, giving you twelve potential directions like <code>{ horizontal: \"center\", vertical: \"left\", important: \"horizontal\" }</code>.</p>\n\t\t\t\t</div>\n</li>\n<li>\n<div>\n<strong>within</strong> (default: <code>window</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>Element to position within, affecting collision detection. If you provide a selector or jQuery object, the first matching element will be used.</div>\n</li>\n</ul>\n</li></ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>The jQuery UI <code>.position()</code> method allows you to position an element relative to the window, document, another element, or the cursor/mouse, without worrying about offset parents.</p>\n\t\t<p><em>Note: jQuery UI does not support positioning hidden elements.</em></p>\n\t\t<p>This is a standalone jQuery plugin and has no dependencies on other jQuery UI components.</p>\n\t\t<p>This plugin extends jQuery's built-in <a href=\"http://api.jquery.com/position\"><code>.position()</code></a> method. If jQuery UI is not loaded, calling the <code>.position()</code> method may not fail directly, as the method still exists. However, the expected behavior will not occur.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Position example.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div><div class=\"line number44 index43 alt1\">44</div><div class=\"line number45 index44 alt2\">45</div><div class=\"line number46 index45 alt1\">46</div><div class=\"line number47 index46 alt2\">47</div><div class=\"line number48 index47 alt1\">48</div><div class=\"line number49 index48 alt2\">49</div><div class=\"line number50 index49 alt1\">50</div><div class=\"line number51 index50 alt2\">51</div><div class=\"line number52 index51 alt1\">52</div><div class=\"line number53 index52 alt2\">53</div><div class=\"line number54 index53 alt1\">54</div><div class=\"line number55 index54 alt2\">55</div><div class=\"line number56 index55 alt1\">56</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;position demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.positionDiv {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: absolute;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 75px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 75px;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: green;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"targetElement\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position1\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position2\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position3\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"positionDiv\"</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"position4\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\">&nbsp;</div><div class=\"line number27 index26 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">$( \"#position1\" ).position({</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"center\",</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"center\",</code></div><div class=\"line number31 index30 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number32 index31 alt1\"><code class=\"plain\">});</code></div><div class=\"line number33 index32 alt2\">&nbsp;</div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#position2\" ).position({</code></div><div class=\"line number35 index34 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"left top\",</code></div><div class=\"line number36 index35 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"left top\",</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">});</code></div><div class=\"line number39 index38 alt2\">&nbsp;</div><div class=\"line number40 index39 alt1\"><code class=\"plain\">$( \"#position3\" ).position({</code></div><div class=\"line number41 index40 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"right center\",</code></div><div class=\"line number42 index41 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">at: \"right bottom\",</code></div><div class=\"line number43 index42 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: \"#targetElement\"</code></div><div class=\"line number44 index43 alt1\"><code class=\"plain\">});</code></div><div class=\"line number45 index44 alt2\">&nbsp;</div><div class=\"line number46 index45 alt1\"><code class=\"plain\">$( document ).mousemove(function( event ) {</code></div><div class=\"line number47 index46 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#position4\" ).position({</code></div><div class=\"line number48 index47 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">my: \"left+3 bottom-3\",</code></div><div class=\"line number49 index48 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">of: event,</code></div><div class=\"line number50 index49 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">collision: \"fit\"</code></div><div class=\"line number51 index50 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">});</code></div><div class=\"line number52 index51 alt1\"><code class=\"plain\">});</code></div><div class=\"line number53 index52 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number54 index53 alt1\">&nbsp;</div><div class=\"line number55 index54 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number56 index55 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/progressbar.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI progressbar documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Progressbar Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Display status of a determinate process.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-value\">value</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-complete\">complete</a></div>\n</div></section><article id=\"progressbar1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Progressbar Widget</span><span class=\"version-details\">version added: 1.6</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Display status of a determinate process.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-disabled\" class=\"api-item first-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the progressbar if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The maximum value of the progressbar.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ max: 1024 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 1024 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-value\" class=\"api-item\">\n<h3>value<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The value of the progressbar.</div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the value option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({ value: 25 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the value option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 25 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the progressbar functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current progressbar options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the progressbar option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the progressbar.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Gets the current value of the progressbar.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">progressSoFar = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div>Sets the current value of the progressbar.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the progressbar.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>progressbarchange</code></span>\n</h3>\n<div>Triggered when the value of the progressbar changes.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-complete\" class=\"api-item\">\n<h3>complete( event, ui )<span class=\"returns\">Type: <code>progressbarcomplete</code></span>\n</h3>\n<div>Triggered when the value of the progressbar reaches the maximum value.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the complete callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">complete: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarcomplete event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarcomplete\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>progressbarcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the progressbar is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the progressbar with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).progressbar({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the progressbarcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"progressbarcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>\n\t\t\tThe progress bar is designed to display the current percent complete for a process. The bar is coded to be flexibly sized through CSS and will scale to fit inside its parent container by default.\n\t\t</p>\n\t\t<p>\n\t\t\tThis is a determinate progress bar, meaning that it should only be used in situations where the system can accurately update the current status. A determinate progress bar should never fill from left to right, then loop back to empty for a single process — if the actual status cannot be calculated, an indeterminate progress bar or spinner animation is a better way to provide user feedback.\n\t\t</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Progressbar</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;progressbar demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"progressbar\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#progressbar\" ).progressbar({</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">value: 37</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">});</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/puff-effect.html",
    "content": "<script>{\n\t\t\"title\":\n\t\t\t\"Puff Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tCreates a puff effect by scaling the element up and hiding it at the same time.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"puff1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Puff Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tCreates a puff effect by scaling the element up and hiding it at the same time.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">puff</h4>\n<ul><li>\n<div>\n<strong>percent</strong> (default: <code>150</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The percentage to scale to.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the puff effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;puff demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"puff\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/pulsate-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI pulsate-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Pulsate Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tThe pulsate effect hides or shows an element by pulsing it in or out.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"pulsate1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Pulsate Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tThe pulsate effect hides or shows an element by pulsing it in or out.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">pulsate</h4>\n<ul><li>\n<div>\n<strong>times</strong> (default: <code>5</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The number of times the element should pulse. An extra half pulse is added for hide/show.</div>\n</li></ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the pulsate effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;pulsate demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"pulsate\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/resizable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI resizable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Resizable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Change the size of an element using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-alsoResize\">alsoResize</a></div>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-animateDuration\">animateDuration</a></div>\n<div><a href=\"#option-animateEasing\">animateEasing</a></div>\n<div><a href=\"#option-aspectRatio\">aspectRatio</a></div>\n<div><a href=\"#option-autoHide\">autoHide</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-ghost\">ghost</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handles\">handles</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-maxHeight\">maxHeight</a></div>\n<div><a href=\"#option-maxWidth\">maxWidth</a></div>\n<div><a href=\"#option-minHeight\">minHeight</a></div>\n<div><a href=\"#option-minWidth\">minWidth</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-resize\">resize</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"resizable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Resizable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Change the size of an element using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-alsoResize\" class=\"api-item first-item\">\n<h3>alsoResize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>One or more elements to resize synchronously with the resizable element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the alsoResize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ alsoResize: </code><code class=\"string\">\"#mirror\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the alsoResize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">alsoResize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"alsoResize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"alsoResize\"</code><code class=\"plain\">, </code><code class=\"string\">\"#mirror\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animate\" class=\"api-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Animates to the final size after resizing.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animate: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animateDuration\" class=\"api-item\">\n<h3>animateDuration<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"slow\"</code>\n</div>\n<div>How long to animate when using the <a href=\"#option-animate\"><code>animate</code></a> option.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: Duration in milliseconds.</li>\n<li>\n<strong>String</strong>: A named duration, such as <code>\"slow\"</code> or <code>\"fast\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the animateDuration option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animateDuration: </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animateDuration option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animateDuration = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateDuration\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateDuration\"</code><code class=\"plain\">, </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-animateEasing\" class=\"api-item\">\n<h3>animateEasing<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"swing\"</code>\n</div>\n<div>Which <a href=\"/easings/\">easing</a> to apply when using the <a href=\"#option-animate\"><code>animate</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the animateEasing option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ animateEasing: </code><code class=\"string\">\"easeOutBounce\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animateEasing option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animateEasing = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateEasing\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animateEasing\"</code><code class=\"plain\">, </code><code class=\"string\">\"easeOutBounce\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-aspectRatio\" class=\"api-item\">\n<h3>aspectRatio<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the element should be constrained to a specific aspect ratio.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the element will maintain its original aspect ratio.</li>\n<li>\n<strong>Number</strong>: Force the element to maintain a specific aspect ratio during resizing.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the aspectRatio option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ aspectRatio: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the aspectRatio option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">aspectRatio = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"aspectRatio\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"aspectRatio\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoHide\" class=\"api-item\">\n<h3>autoHide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the handles should hide when the user is not hovering over the element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the autoHide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ autoHide: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoHide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoHide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoHide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoHide\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents resizing from starting on specified elements.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ cancel: </code><code class=\"string\">\".cancel\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\".cancel\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Constrains resizing to within the bounds of the specified element or region.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Selector</strong>: The resizable element will be contained to the bounding box of the first element found by the selector. If no element is found, no containment will be set.</li>\n<li>\n<strong>Element</strong>: The resizable element will be contained to the bounding box of this element.</li>\n<li>\n<strong>String</strong>: Possible values: <code>\"parent\"</code> and <code>\"document\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Tolerance, in milliseconds, for when resizing should start. If specified, resizing will not start until after mouse is moved beyond duration. This can help prevent unintended resizing when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the resizable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Tolerance, in pixels, for when resizing should start. If specified, resizing will not start until after mouse is moved beyond distance. This can help prevent unintended resizing when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ distance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-ghost\" class=\"api-item\">\n<h3>ghost<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If set to <code>true</code>, a semi-transparent helper element is shown for resizing.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the ghost option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ ghost: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the ghost option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">ghost = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"ghost\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"ghost\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the resizing element to a grid, every x and y pixels. Array values: <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ grid: [ 20, 10 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 20, 10 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handles\" class=\"api-item\">\n<h3>handles<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"e, s, se\"</code>\n</div>\n<div>Which handles can be used for resizing.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: A comma delimited list of any of the following: n, e, s, w, ne, se, sw, nw, all. The necessary handles will be auto-generated by the plugin.</li>\n<li>\n<strong>Object</strong>: The following keys are supported: { n, e, s, w, ne, se, sw, nw }. The value of any specified should be a jQuery selector matching the child element of the resizable to use as that handle. If the handle is not a child of the resizable, you can pass in the DOMElement or a valid jQuery object directly.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the resizable with the handles option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ handles: </code><code class=\"string\">\"n, e, s, w\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handles option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handles = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handles\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handles\"</code><code class=\"plain\">, </code><code class=\"string\">\"n, e, s, w\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A class name that will be added to a proxy element to outline the resize during the drag of the resize handle. Once the resize is complete, the original element is sized.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ helper: </code><code class=\"string\">\"resizable-helper\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"resizable-helper\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxHeight\" class=\"api-item\">\n<h3>maxHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum height the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the maxHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ maxHeight: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxHeight\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-maxWidth\" class=\"api-item\">\n<h3>maxWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum width the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the maxWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ maxWidth: 300 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the maxWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">maxWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"maxWidth\"</code><code class=\"plain\">, 300 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minHeight\" class=\"api-item\">\n<h3>minHeight<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The minimum height the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the minHeight option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ minHeight: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minHeight option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minHeight = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minHeight\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-minWidth\" class=\"api-item\">\n<h3>minWidth<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The minimum width the resizable should be allowed to resize to.</div>\n<strong>Code examples:</strong><p>Initialize the resizable with the minWidth option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({ minWidth: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the minWidth option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">minWidth = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"minWidth\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the resizable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the resizable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the resizable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current resizable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the resizable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the resizable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the resizable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>resizecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the resizable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-resize\" class=\"api-item\">\n<h3>resize( event, ui )<span class=\"returns\">Type: <code>resize</code></span>\n</h3>\n<div>This event is triggered during the resize, on the drag of the resize handler.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the resize callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">resize: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resize event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resize\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>resizestart</code></span>\n</h3>\n<div>This event is triggered at the start of a resize operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>resizestop</code></span>\n</h3>\n<div>This event is triggered at the end of a resize operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>element</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the element to be resized</div>\n</li>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper that's being resized</div>\n</li>\n<li>\n<div><strong>originalElement</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the original element before it is wrapped</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The position represented as <code>{ left, top }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>originalSize</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The size represented as <code>{ width, height }</code> before the resizable is resized</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position represented as <code>{ left, top }</code>\n</div>\n</li>\n<li>\n<div><strong>size</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current size represented as <code>{ width, height }</code>\n</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the resizable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).resizable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the resizestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"resizestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Resizable plugin makes selected elements resizable (meaning they have draggable resize handles). You can specify one or more handles as well as min and max width and height.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Resizable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;resizable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#resizable {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"plain\">}&nbsp;&nbsp; &lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"resizable\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">$( \"#resizable\" ).resizable();</code></div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\">&nbsp;</div><div class=\"line number24 index23 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/scale-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI scale-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Scale Effect\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tShrink or grow an element by a percentage factor.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"scale1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Scale Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tShrink or grow an element by a percentage factor.\n\t</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">scale</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"both\"</code>, <code>\"vertical\"</code> or <code>\"horizontal\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>origin</strong> (default: <code>[ \"middle\", \"center\" ]</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The vanishing point.</div>\n</li>\n<li>\n<div><strong>percent</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The percentage to scale to.</div>\n</li>\n<li>\n<div>\n<strong>scale</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which areas of the element will be resized: <code>\"both\"</code>, <code>\"box\"</code>, <code>\"content\"</code>. Box resizes the border and padding of the element; content resizes any content inside of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Examples:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4>Example: <span class=\"desc\">Toggle a div using the scale effect.</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;scale demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"scale\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div>\n<div class=\"entry-example\" id=\"example-1\">\n<h4>Example: <span class=\"desc\">Toggle a div using the scale effect in just one direction.</span>\n</h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;scale demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle({ effect: \"scale\", direction: \"horizontal\" });</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/selectable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI selectable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Selectable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Use the mouse to select elements, individually or in a group.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-autoRefresh\">autoRefresh</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-filter\">filter</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-selected\">selected</a></div>\n<div><a href=\"#event-selecting\">selecting</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-unselected\">unselected</a></div>\n<div><a href=\"#event-unselecting\">unselecting</a></div>\n</div></section><article id=\"selectable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Selectable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Use the mouse to select elements, individually or in a group.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"body\"</code>\n</div>\n<div>Which element the selection helper (the lasso) should be appended to.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ appendTo: </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, </code><code class=\"string\">\"#someElem\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-autoRefresh\" class=\"api-item\">\n<h3>autoRefresh<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>This determines whether to refresh (recalculate) the position and size of each selectee at the beginning of each select operation. If you have many items, you may want to set this to false and call the <a href=\"#method-refresh\"><code>refresh()</code></a> method manually.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the autoRefresh option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ autoRefresh: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the autoRefresh option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">autoRefresh = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoRefresh\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"autoRefresh\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"input,textarea,button,select,option\"</code>\n</div>\n<div>Prevents selecting if you start on elements matching the selector.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ cancel: a,.cancel });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, a,.cancel );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds to define when the selecting should start. This helps prevent unwanted selections when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the selectable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Tolerance, in pixels, for when selecting should start. If specified, selecting will not start until the mouse has been dragged beyond the specified distance.</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ distance: 30 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 30 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-filter\" class=\"api-item\">\n<h3>filter<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"*\"</code>\n</div>\n<div>The matching child elements will be made selectees (able to be selected).</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the filter option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ filter: li });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the filter option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">filter = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"filter\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"filter\"</code><code class=\"plain\">, li );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"touch\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether the lasso should select an item. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"fit\"</code>: Lasso overlaps the item entirely.</li>\n\t\t\t\t\t<li>\n<code>\"touch\"</code>: Lasso overlaps the item by any amount.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the selectable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({ tolerance: </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"fit\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the selectable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the selectable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the selectable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current selectable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the selectable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the selectable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refresh the position and size of each selectee element. This method can be used to manually recalculate the position and size of each selectee when the <a href=\"#option-autoRefresh\"><code>autoRefresh</code></a> option is set to <code>false</code>.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the selectable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-create\" class=\"api-item first-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>selectablecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the selectable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-selected\" class=\"api-item\">\n<h3>selected( event, ui )<span class=\"returns\">Type: <code>selectableselected</code></span>\n</h3>\n<div>Triggered at the end of the select operation, on each element added to the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>selected</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The selectable item that has been selected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the selected callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">selected: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableselected event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableselected\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-selecting\" class=\"api-item\">\n<h3>selecting( event, ui )<span class=\"returns\">Type: <code>selectableselecting</code></span>\n</h3>\n<div>Triggered during the select operation, on each element added to the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>selecting</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The current selectable item being selected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the selecting callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">selecting: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableselecting event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableselecting\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>selectablestart</code></span>\n</h3>\n<div>Triggered at the beginning of the select operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>selectablestop</code></span>\n</h3>\n<div>Triggered at the end of the select operation.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectablestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectablestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-unselected\" class=\"api-item\">\n<h3>unselected( event, ui )<span class=\"returns\">Type: <code>selectableunselected</code></span>\n</h3>\n<div>Triggered at the end of the select operation, on each element removed from the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>unselected</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The selectable item that has been unselected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the unselected callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">unselected: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableunselected event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableunselected\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-unselecting\" class=\"api-item\">\n<h3>unselecting( event, ui )<span class=\"returns\">Type: <code>selectableunselecting</code></span>\n</h3>\n<div>Triggered during the select operation, on each element removed from the selection.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>unselecting</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Element\">Element</a>\n</div>\n<div>The current selectable item being unselected.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the selectable with the unselecting callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).selectable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">unselecting: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the selectableunselecting event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"selectableunselecting\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Selectable plugin allows for elements to be selected by dragging a box (sometimes called a lasso) with the mouse over the elements. Elements can also be selected via click or drag while holding the ctrl/meta key, allowing for multiple (non-contiguous) selections.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Selectable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;selectable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#selectable .ui-selecting {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#selectable .ui-selected {</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #999;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"selectable\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">$( \"#selectable\" ).selectable();</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/shake-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI shake-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Shake Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Shakes the element multiple times, vertically or horizontally.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"shake1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Shake Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Shakes the element multiple times, vertically or horizontally.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">shake</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"left\"</code>, <code>\"right\"</code>, <code>\"up\"</code>, <code>\"down\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>distance</strong> (default: <code>20</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Distance to shake.</div>\n</li>\n<li>\n<div>\n<strong>times</strong> (default: <code>3</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>Times to shake.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Shake a div.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;shake demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to shake the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).effect( \"shake\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/size-effect.html",
    "content": "<script>{\n\t\t\"title\":\n\t\t\t\"Size Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Resize an element to a specified width and height.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"size1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Size Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Resize an element to a specified width and height.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">size</h4>\n<ul>\n<li>\n<div><strong>to</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Height and width to resize to.</div>\n</li>\n<li>\n<div>\n<strong>origin</strong> (default: <code>[ \"top\", \"left\" ]</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The vanishing point.</div>\n</li>\n<li>\n<div>\n<strong>scale</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which areas of the element will be resized: <code>\"both\"</code>, <code>\"box\"</code>, <code>\"content\"</code>. Box resizes the border and padding of the element; content resizes any content inside of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Resize the element using the size effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;size demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to resize the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).effect( \"size\", {</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">to: { width: 200, height: 60 }</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}, 1000 );</code></div><div class=\"line number27 index26 alt2\"><code class=\"plain\">});</code></div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\">&nbsp;</div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slide-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI slide-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Slide Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Slides the element out of the viewport.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"slide1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Slide Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Slides the element out of the viewport.</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">slide</h4>\n<ul>\n<li>\n<div>\n<strong>direction</strong> (default: <code>\"both\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The direction of the effect. Possible values: <code>\"left\"</code>, <code>\"right\"</code>, <code>\"up\"</code>, <code>\"down\"</code>.</div>\n</li>\n<li>\n<div>\n<strong>distance</strong> (default: <code>element's outerWidth</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The distance of the effect. Defaults to either the height or width of the elemenet depending on the <code>direction</code> argument. Can be set to any integer less than the width/height of the element.</div>\n</li>\n</ul>\n</li></ul>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Toggle a div using the slide effect.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;slide demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">#toggle {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 100px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: #ccc;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;Click anywhere to toggle the box.&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"toggle\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">$( document ).click(function() {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( \"#toggle\" ).toggle( \"slide\" );</code></div><div class=\"line number25 index24 alt2\"><code class=\"plain\">});</code></div><div class=\"line number26 index25 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\">&nbsp;</div><div class=\"line number28 index27 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"200\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/slider.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI slider documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Slider Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Drag a handle to select a numeric value.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-animate\">animate</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-min\">min</a></div>\n<div><a href=\"#option-orientation\">orientation</a></div>\n<div><a href=\"#option-range\">range</a></div>\n<div><a href=\"#option-step\">step</a></div>\n<div><a href=\"#option-value\">value</a></div>\n<div><a href=\"#option-values\">values</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-values\">values</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-slide\">slide</a></div>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n</div></section><article id=\"slider1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Slider Widget</span><span class=\"version-details\">version added: 1.5</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Drag a handle to select a numeric value.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-animate\" class=\"api-item first-item\">\n<h3>animate<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether to slide the handle smoothly when the user clicks on the slider track. Also accepts any valid <a href=\"//api.jquery.com/animate/#duration\">animation duration</a>.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the handle will animate with the default duration.</li>\n<li>\n<strong>String</strong>: The name of a speed, such as <code>\"fast\"</code> or <code>\"slow\"</code>.</li>\n<li>\n<strong>Number</strong>: The duration of the animation, in milliseconds.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the slider with the animate option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ animate: </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the animate option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">animate = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"animate\"</code><code class=\"plain\">, </code><code class=\"string\">\"fast\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the slider if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>100</code>\n</div>\n<div>The maximum value of the slider.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ max: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-min\" class=\"api-item\">\n<h3>min<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>The minimum value of the slider.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the min option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ min: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the min option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">min = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-orientation\" class=\"api-item\">\n<h3>orientation<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"horizontal\"</code>\n</div>\n<div>Determines whether the slider handles move horizontally (min on left, max on right) or vertically (min on bottom, max on top). Possible values: <code>\"horizontal\"</code>, <code>\"vertical\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the orientation option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ orientation: </code><code class=\"string\">\"vertical\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the orientation option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">orientation = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"orientation\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"orientation\"</code><code class=\"plain\">, </code><code class=\"string\">\"vertical\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-range\" class=\"api-item\">\n<h3>range<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the slider represents a range.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: If set to <code>true</code>, the slider will detect if you have two handles and create a stylable range element between these two.</li>\n<li>\n<strong>String</strong>: Either <code>\"min\"</code> or <code>\"max\"</code>. A min range goes from the slider min to one handle. A max range goes from one handle to the slider max.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the slider with the range option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ range: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the range option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">range = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"range\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"range\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-step\" class=\"api-item\">\n<h3>step<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Determines the size or amount of each interval or step the slider takes between the min and max. The full specified value range of the slider (max - min) should be evenly divisible by the step.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the step option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ step: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the step option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">step = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-value\" class=\"api-item\">\n<h3>value<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Determines the value of the slider, if there's only one handle. If there is more than one handle, determines the value of the first handle.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the value option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ value: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the value option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-values\" class=\"api-item\">\n<h3>values<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>This option can be used to specify multiple handles. If the <a href=\"#option-range\"><code>range</code></a> option is set to <code>true</code>, the length of <code>values</code> should be 2.</div>\n<strong>Code examples:</strong><p>Initialize the slider with the values option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({ values: [ 10, 25 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the values option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">values = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"values\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"values\"</code><code class=\"plain\">, [ 10, 25 ] );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the slider functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current slider options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the slider option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the slider.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Get the value of the slider.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">selection = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div>Set the value of the slider.</div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 55 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-values\">\n<div class=\"api-item\">\n<h3>values() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Array\">Array</a></span>\n</h3>\n<div>Get the value for all handles.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">values = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( index ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Get the value for the specified handle.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The zero-based index of the handle.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( index, value )</h3>\n<div>Set the value for the specified handle.</div>\n<ul>\n<li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Integer\">Integer</a>\n</div>\n<div>The zero-based index of the handle.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value to set.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, 0, 55 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>values( values )</h3>\n<div>Set the value for all handles.</div>\n<ul><li>\n<div><strong>values</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>The values to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"values\"</code><code class=\"plain\">, [ 55, 105 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the slider.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>slidechange</code></span>\n</h3>\n<div>Triggered after the user slides a handle, if the value has changed; or if the value is changed programmatically via the <a href=\"#method-value\"><code>value</code></a> method.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle that was changed.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidechange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidechange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>slidecreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the slider is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidecreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidecreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-slide\" class=\"api-item\">\n<h3>slide( event, ui )<span class=\"returns\">Type: <code>slide</code></span>\n</h3>\n<div>Triggered on every mouse move during slide. The value provided in the event as <code>ui.value</code> represents the value that the handle will have as a result of the current movement. Canceling the event will prevent the handle from moving and the handle will continue to have its previous value.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle being moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The value that the handle will move to if the event is not canceled.</div>\n</li>\n<li>\n<div><strong>values</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Array\">Array</a>\n</div>\n<div>An array of the current values of a multi-handled slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the slide callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">slide: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slide event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slide\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>slidestart</code></span>\n</h3>\n<div>Triggered when the user starts sliding.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle being moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidestart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidestart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>slidestop</code></span>\n</h3>\n<div>Triggered after the user slides a handle.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>handle</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the handle that was moved.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The current value of the slider.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the slider with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).slider({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the slidestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"slidestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Slider plugin makes selected elements into sliders. There are various options such as multiple handles and ranges. The handle can be moved with the mouse or the arrow keys.</p>\n\n\t\t<p>The slider widget will create handle elements with the class <code>ui-slider-handle</code> on initialization. You can specify custom handle elements by creating and appending the elements and adding the <code>ui-slider-handle</code> class before initialization. It will only create the number of handles needed to match the length of <a href=\"#option-value\"><code>value</code></a>/<a href=\"#option-values\"><code>values</code></a>. For example, if you specify <code>values: [ 1, 5, 18 ]</code> and create one custom handle, the plugin will create the other two.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Slider.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;slider demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;#slider { margin: 10px; }&nbsp; &lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number12 index11 alt1\">&nbsp;</div><div class=\"line number13 index12 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"slider\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\">&nbsp;</div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">$( \"#slider\" ).slider();</code></div><div class=\"line number17 index16 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\">&nbsp;</div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/sortable.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI sortable documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Sortable Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Reorder elements in a list or grid using the mouse.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"interactions\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-appendTo\">appendTo</a></div>\n<div><a href=\"#option-axis\">axis</a></div>\n<div><a href=\"#option-cancel\">cancel</a></div>\n<div><a href=\"#option-connectWith\">connectWith</a></div>\n<div><a href=\"#option-containment\">containment</a></div>\n<div><a href=\"#option-cursor\">cursor</a></div>\n<div><a href=\"#option-cursorAt\">cursorAt</a></div>\n<div><a href=\"#option-delay\">delay</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-distance\">distance</a></div>\n<div><a href=\"#option-dropOnEmpty\">dropOnEmpty</a></div>\n<div><a href=\"#option-forceHelperSize\">forceHelperSize</a></div>\n<div><a href=\"#option-forcePlaceholderSize\">forcePlaceholderSize</a></div>\n<div><a href=\"#option-grid\">grid</a></div>\n<div><a href=\"#option-handle\">handle</a></div>\n<div><a href=\"#option-helper\">helper</a></div>\n<div><a href=\"#option-items\">items</a></div>\n<div><a href=\"#option-opacity\">opacity</a></div>\n<div><a href=\"#option-placeholder\">placeholder</a></div>\n<div><a href=\"#option-revert\">revert</a></div>\n<div><a href=\"#option-scroll\">scroll</a></div>\n<div><a href=\"#option-scrollSensitivity\">scrollSensitivity</a></div>\n<div><a href=\"#option-scrollSpeed\">scrollSpeed</a></div>\n<div><a href=\"#option-tolerance\">tolerance</a></div>\n<div><a href=\"#option-zIndex\">zIndex</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-cancel\">cancel</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-refreshPositions\">refreshPositions</a></div>\n<div><a href=\"#method-serialize\">serialize</a></div>\n<div><a href=\"#method-toArray\">toArray</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-sort\">sort</a></div>\n<div><a href=\"#event-change\">change</a></div>\n<div><a href=\"#event-beforeStop\">beforeStop</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-update\">update</a></div>\n<div><a href=\"#event-receive\">receive</a></div>\n<div><a href=\"#event-remove\">remove</a></div>\n<div><a href=\"#event-over\">over</a></div>\n<div><a href=\"#event-out\">out</a></div>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-deactivate\">deactivate</a></div>\n</div></section><article id=\"sortable1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Sortable Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Reorder elements in a list or grid using the mouse.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-appendTo\" class=\"api-item first-item\">\n<h3>appendTo<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"parent\"</code>\n</div>\n<div>Defines where the helper that moves with the mouse is being appended to during the drag (for example, to resolve overlap/zIndex issues).</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>jQuery</strong>: A jQuery object containing the element to append the helper to.</li>\n<li>\n<strong>Element</strong>: The element to append the helper to.</li>\n<li>\n<strong>Selector</strong>: A selector specifying which element to append the helper to.</li>\n<li>\n<strong>String</strong>: The string <code>\"parent\"</code> will cause the helper to be a sibling of the sortable item.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the appendTo option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ appendTo: document.body });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the appendTo option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">appendTo = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"appendTo\"</code><code class=\"plain\">, document.body );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-axis\" class=\"api-item\">\n<h3>axis<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If defined, the items can be dragged only horizontally or vertically. Possible values: <code>\"x\"</code>, <code>\"y\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the axis option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ axis: </code><code class=\"string\">\"x\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the axis option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">axis = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"axis\"</code><code class=\"plain\">, </code><code class=\"string\">\"x\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cancel\" class=\"api-item\">\n<h3>cancel<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\":input,button\"</code>\n</div>\n<div>Prevents sorting if you start on elements matching the selector.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cancel option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cancel: </code><code class=\"string\">\"a,button\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cancel option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cancel = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cancel\"</code><code class=\"plain\">, </code><code class=\"string\">\"a,button\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-connectWith\" class=\"api-item\">\n<h3>connectWith<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A selector of other sortable elements that the items from this list should be connected to. This is a one-way relationship, if you want the items to be connected in both directions, the <code>connectWith</code> option must be set on both sortable elements.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the connectWith option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ connectWith: </code><code class=\"string\">\"#shopping-cart\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the connectWith option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">connectWith = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectWith\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"connectWith\"</code><code class=\"plain\">, </code><code class=\"string\">\"#shopping-cart\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-containment\" class=\"api-item\">\n<h3>containment<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Element\">Element</a> or <a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\t<p>Defines a bounding box that the sortable items are contrained to while dragging.</p>\n\n\t\t\t\t<p>Note: The element specified for containment must have a calculated width and height (though it need not be explicit). For example, if you have <code>float: left</code> sortable children and specify <code>containment: \"parent\"</code> be sure to have <code>float: left</code> on the sortable/parent container as well or it will have <code>height: 0</code>, causing undefined behavior.</p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Element</strong>: An element to use as the container.</li>\n<li>\n<strong>Selector</strong>: A selector specifying an element to use as the container.</li>\n<li>\n<strong>String</strong>: A string identifying an element to use as the container. Possible values: <code>\"parent\"</code>, <code>\"document\"</code>, <code>\"window\"</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the containment option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ containment: </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the containment option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">containment = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"containment\"</code><code class=\"plain\">, </code><code class=\"string\">\"parent\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursor\" class=\"api-item\">\n<h3>cursor<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"auto\"</code>\n</div>\n<div>Defines the cursor that is being shown while sorting.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cursor option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cursor: </code><code class=\"string\">\"move\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursor option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursor = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursor\"</code><code class=\"plain\">, </code><code class=\"string\">\"move\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-cursorAt\" class=\"api-item\">\n<h3>cursorAt<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Moves the sorting element or helper so the cursor always appears to drag from the same position. Coordinates can be given as a hash using a combination of one or two keys: <code>{ top, left, right, bottom }</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the cursorAt option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ cursorAt: { left: 5 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the cursorAt option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">cursorAt = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"cursorAt\"</code><code class=\"plain\">, { left: 5 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-delay\" class=\"api-item\">\n<h3>delay<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>Time in milliseconds to define when the sorting should start. Adding a delay helps preventing unwanted drags when clicking on an element.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the delay option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ delay: 150 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the delay option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">delay = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"delay\"</code><code class=\"plain\">, 150 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the sortable if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-distance\" class=\"api-item\">\n<h3>distance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>Tolerance, in pixels, for when sorting should start. If specified, sorting will not start until after mouse is dragged beyond distance. Can be used to allow for clicks on elements within a handle.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the distance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ distance: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the distance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">distance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"distance\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-dropOnEmpty\" class=\"api-item\">\n<h3>dropOnEmpty<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If <code>false</code>, items from this sortable can't be dropped on an empty connect sortable (see the <a href=\"#option-connectWith\"><code>connectWith</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the dropOnEmpty option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ dropOnEmpty: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the dropOnEmpty option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">dropOnEmpty = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dropOnEmpty\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"dropOnEmpty\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-forceHelperSize\" class=\"api-item\">\n<h3>forceHelperSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If <code>true</code>, forces the helper to have a size.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the forceHelperSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ forceHelperSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the forceHelperSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">forceHelperSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forceHelperSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forceHelperSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-forcePlaceholderSize\" class=\"api-item\">\n<h3>forcePlaceholderSize<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>If true, forces the placeholder to have a size.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the forcePlaceholderSize option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ forcePlaceholderSize: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the forcePlaceholderSize option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">forcePlaceholderSize = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forcePlaceholderSize\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"forcePlaceholderSize\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-grid\" class=\"api-item\">\n<h3>grid<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Snaps the sorting element or helper to a grid, every x and y pixels. Array values: <code>[ x, y ]</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the grid option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ grid: [ 20, 10 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the grid option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">grid = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"grid\"</code><code class=\"plain\">, [ 20, 10 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-handle\" class=\"api-item\">\n<h3>handle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a> or <a href=\"http://api.jquery.com/Types#Element\">Element</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Restricts sort start click to the specified element.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the handle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ handle: </code><code class=\"string\">\".handle\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the handle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">handle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"handle\"</code><code class=\"plain\">, </code><code class=\"string\">\".handle\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-helper\" class=\"api-item\">\n<h3>helper<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"original\"</code>\n</div>\n<div>Allows for a helper element to be used for dragging display.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>String</strong>: If set to <code>\"clone\"</code>, then the element will be cloned and the clone will be dragged.</li>\n<li>\n<strong>Function</strong>: A function that will return a DOMElement to use while dragging. The function receives the event and the element being sorted.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the helper option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ helper: </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the helper option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">helper = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"helper\"</code><code class=\"plain\">, </code><code class=\"string\">\"clone\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-items\" class=\"api-item\">\n<h3>items<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"&gt; *\"</code>\n</div>\n<div>Specifies which items inside the element should be sortable.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the items option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ items: </code><code class=\"string\">\"&gt; li\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the items option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">items = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code><code class=\"plain\">, </code><code class=\"string\">\"&gt; li\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-opacity\" class=\"api-item\">\n<h3>opacity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Defines the opacity of the helper while sorting. From <code>0.01</code> to <code>1</code>.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the opacity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ opacity: 0.5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the opacity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">opacity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"opacity\"</code><code class=\"plain\">, 0.5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-placeholder\" class=\"api-item\">\n<h3>placeholder<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>A class name that gets applied to the otherwise white space.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the placeholder option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ placeholder: </code><code class=\"string\">\"sortable-placeholder\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the placeholder option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">placeholder = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"placeholder\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"placeholder\"</code><code class=\"plain\">, </code><code class=\"string\">\"sortable-placeholder\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-revert\" class=\"api-item\">\n<h3>revert<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Whether the sortable items should revert to their new positions using a smooth animation.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the items will animate with the default duration.</li>\n<li>\n<strong>Number</strong>: The duration for the animation, in milliseconds.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the sortable with the revert option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ revert: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the revert option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">revert = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"revert\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scroll\" class=\"api-item\">\n<h3>scroll<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>If set to true, the page scrolls when coming to an edge.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scroll option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scroll: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scroll option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scroll = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scroll\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSensitivity\" class=\"api-item\">\n<h3>scrollSensitivity<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>Defines how near the mouse must be to an edge to start scrolling.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scrollSensitivity option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scrollSensitivity: 10 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSensitivity option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSensitivity = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSensitivity\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-scrollSpeed\" class=\"api-item\">\n<h3>scrollSpeed<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>20</code>\n</div>\n<div>The speed at which the window should scroll once the mouse pointer gets within the <a href=\"#option-scrollSensitivity\"><code>scrollSensitivity</code></a> distance.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the scrollSpeed option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ scrollSpeed: 40 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the scrollSpeed option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">scrollSpeed = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"scrollSpeed\"</code><code class=\"plain\">, 40 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tolerance\" class=\"api-item\">\n<h3>tolerance<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"intersect\"</code>\n</div>\n<div>\n\t\t\t\tSpecifies which mode to use for testing whether the item being moved is hovering over another item. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"intersect\"</code>: The item overlaps the other item by at least 50%.</li>\n\t\t\t\t\t<li>\n<code>\"pointer\"</code>: The mouse pointer overlaps the other item.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the tolerance option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ tolerance: </code><code class=\"string\">\"pointer\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tolerance option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tolerance = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tolerance\"</code><code class=\"plain\">, </code><code class=\"string\">\"pointer\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-zIndex\" class=\"api-item\">\n<h3>zIndex<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1000</code>\n</div>\n<div>Z-index for element/helper while being sorted.</div>\n<strong>Code examples:</strong><p>Initialize the sortable with the zIndex option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({ zIndex: 9999 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the zIndex option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">zIndex = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"zIndex\"</code><code class=\"plain\">, 9999 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-cancel\">\n<div class=\"api-item first-item\">\n<h3>cancel()</h3>\n<div>Cancels a change in the current sortable and reverts it to the state prior to when the current sort was started. Useful in the stop and receive callback functions.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the cancel method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"cancel\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the sortable functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the sortable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the sortable.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current sortable options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the sortable option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the sortable.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Refresh the sortable items. Triggers the reloading of all sortable items, causing new items to be recognized.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refreshPositions\">\n<div class=\"api-item\">\n<h3>refreshPositions()</h3>\n<div>Refresh the cached positions of the sortable items. Calling this method refreshes the cached item positions of all sortables.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refreshPositions method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"refreshPositions\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-serialize\">\n<div class=\"api-item\">\n<h3>serialize( options ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#String\">String</a></span>\n</h3>\n<div>\n\t\t\t\t<p>Serializes the sortable's item <code>id</code>s into a form/ajax submittable string. Calling this method produces a hash that can be appended to any url to easily submit a new item order back to the server.</p>\n\n\t\t\t\t<p>It works by default by looking at the <code>id</code> of each item in the format <code>\"setname_number\"</code>, and it spits out a hash like <code>\"setname[]=number&amp;setname[]=number\"</code>.</p>\n\n\t\t\t\t<p><em>Note: If serialize returns an empty string, make sure the <code>id</code> attributes include an underscore.  They must be in the form: <code>\"set_number\"</code> For example, a 3 element list with <code>id</code> attributes <code>\"foo_1\"</code>, <code>\"foo_5\"</code>, <code>\"foo_2\"</code> will serialize to <code>\"foo[]=1&amp;foo[]=5&amp;foo[]=2\"</code>. You can use an underscore, equal sign or hyphen to separate the set and number. For example <code>\"foo=1\"</code>, <code>\"foo-1\"</code>, and <code>\"foo_1\"</code> all serialize to <code>\"foo[]=1\"</code>.</em></p>\n\t\t\t</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>Options to customize the serialization.</div>\n<ul>\n<li>\n<div>\n<strong>key</strong> (default: <code>the part of the attribute in front of the separator</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Replaces <code>part1[]</code> with the specified value.</div>\n</li>\n<li>\n<div>\n<strong>attribute</strong> (default: <code>\"id\"</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the attribute to use for the values.</div>\n</li>\n<li>\n<div>\n<strong>expression</strong> (default: <code>/(.+)[-=_](.+)/</code>)</div>\n<div>Type: <a href=\"http://api.jquery.com/Types#RegExp\">RegExp</a>\n</div>\n<div>A regular expression used to split the attribute value into key and value parts.</div>\n</li>\n</ul>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the serialize method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">sorted = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"serialize\"</code><code class=\"plain\">, { key: </code><code class=\"string\">\"sort\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-toArray\">\n<div class=\"api-item\">\n<h3>toArray() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Array\">Array</a></span>\n</h3>\n<div>Serializes the sortable's item id's into an array of string.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the toArray method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">sortedIDs = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"toArray\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the sortable element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>sortactivate</code></span>\n</h3>\n<div>This event is triggered when using connected lists, every connected list on drag start receives it.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeStop\" class=\"api-item\">\n<h3>beforeStop( event, ui )<span class=\"returns\">Type: <code>sortbeforestop</code></span>\n</h3>\n<div>This event is triggered when sorting stops, but when the placeholder/helper is still available.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the beforeStop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeStop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortbeforestop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortbeforestop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-change\" class=\"api-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>sortchange</code></span>\n</h3>\n<div>This event is triggered during sorting, but only when the DOM position has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>sortcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the sortable is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-deactivate\" class=\"api-item\">\n<h3>deactivate( event, ui )<span class=\"returns\">Type: <code>sortdeactivate</code></span>\n</h3>\n<div>This event is triggered when sorting was stopped, is propagated to all possible connected lists.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the deactivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">deactivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortdeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortdeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-out\" class=\"api-item\">\n<h3>out( event, ui )<span class=\"returns\">Type: <code>sortout</code></span>\n</h3>\n<div>This event is triggered when a sortable item is moved away from a connected list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the out callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">out: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortout event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortout\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-over\" class=\"api-item\">\n<h3>over( event, ui )<span class=\"returns\">Type: <code>sortover</code></span>\n</h3>\n<div>This event is triggered when a sortable item is moved into a connected list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the over callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">over: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortover event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortover\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-receive\" class=\"api-item\">\n<h3>receive( event, ui )<span class=\"returns\">Type: <code>sortreceive</code></span>\n</h3>\n<div>This event is triggered when a connected sortable list has received an item from another list.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the receive callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">receive: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortreceive event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortreceive\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-remove\" class=\"api-item\">\n<h3>remove( event, ui )<span class=\"returns\">Type: <code>sortremove</code></span>\n</h3>\n<div>This event is triggered when a sortable item has been dragged out from the list and into another.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the remove callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">remove: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortremove event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortremove\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-sort\" class=\"api-item\">\n<h3>sort( event, ui )<span class=\"returns\">Type: <code>sort</code></span>\n</h3>\n<div>This event is triggered during sorting.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the sort callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">sort: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sort event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sort\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>sortstart</code></span>\n</h3>\n<div>This event is triggered when sorting starts.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>sortstop</code></span>\n</h3>\n<div>This event is triggered when sorting has stopped.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-update\" class=\"api-item\">\n<h3>update( event, ui )<span class=\"returns\">Type: <code>sortupdate</code></span>\n</h3>\n<div>This event is triggered when the user stopped sorting and the DOM position has changed.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>helper</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the helper being sorted</div>\n</li>\n<li>\n<div><strong>item</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The jQuery object representing the current dragged element</div>\n</li>\n<li>\n<div><strong>offset</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current absolute position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>position</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The current position of the helper represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>originalPosition</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The original position of the element represented as <code>{ top, left }</code>\n</div>\n</li>\n<li>\n<div><strong>sender</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The sortable that the item comes from if moving from one sortable to another</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the sortable with the update callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).sortable({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">update: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the sortupdate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"sortupdate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>The jQuery UI Sortable plugin makes selected elements sortable by dragging with the mouse.</p>\n\t\t<p><em>Note: In order to sort table rows, the <code>tbody</code> must be made sortable, not the <code>table</code>.</em></p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Sortable.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;sortable demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"sortable\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 1&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 2&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 3&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 4&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;Item 5&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;$(\"#sortable\").sortable();&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\">&nbsp;</div><div class=\"line number22 index21 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/spinner.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI spinner documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Spinner Widget\",\n\t\t\"excerpt\":\n\t\t\t\"\\n\\t\\tEnhance a text input for entering numeric values, with up/down buttons and arrow key handling.\\n\\t\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-culture\">culture</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-icons\">icons</a></div>\n<div><a href=\"#option-incremental\">incremental</a></div>\n<div><a href=\"#option-max\">max</a></div>\n<div><a href=\"#option-min\">min</a></div>\n<div><a href=\"#option-numberFormat\">numberFormat</a></div>\n<div><a href=\"#option-page\">page</a></div>\n<div><a href=\"#option-step\">step</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-pageDown\">pageDown</a></div>\n<div><a href=\"#method-pageUp\">pageUp</a></div>\n<div><a href=\"#method-stepDown\">stepDown</a></div>\n<div><a href=\"#method-stepUp\">stepUp</a></div>\n<div><a href=\"#method-value\">value</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-start\">start</a></div>\n<div><a href=\"#event-spin\">spin</a></div>\n<div><a href=\"#event-stop\">stop</a></div>\n<div><a href=\"#event-change\">change</a></div>\n</div></section><article id=\"spinner1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Spinner Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>\n\t\tEnhance a text input for entering numeric values, with up/down buttons and arrow key handling.\n\t</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-culture\" class=\"api-item first-item\">\n<h3>culture<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Sets the culture to use for parsing and formatting the value. If <code>null</code>, the currently set culture in <code>Globalize</code> is used, see <a href=\"https://github.com/jquery/globalize\">Globalize docs</a> for available cultures. Only relevant if the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> option is set. Requires <a href=\"https://github.com/jquery/globalize\">Globalize</a> to be included.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the culture option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ culture: </code><code class=\"string\">\"fr\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the culture option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">culture = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"culture\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"culture\"</code><code class=\"plain\">, </code><code class=\"string\">\"fr\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the spinner if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-icons\" class=\"api-item\">\n<h3>icons<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ down: \"ui-icon-triangle-1-s\", up: \"ui-icon-triangle-1-n\" }</code>\n</div>\n<div>\n\t\t\t\tIcons to use for buttons, matching an icon defined by the jQuery UI CSS Framework.\n\t\t\t\t<ul>\n\t\t\t\t\t<li>up (string, default: \"ui-icon-triangle-1-n\")</li>\n\t\t\t\t\t<li>down (string, default: \"ui-icon-triangle-1-s\")</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the icons option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ icons: { down: </code><code class=\"string\">\"custom-down-icon\"</code><code class=\"plain\">, up: </code><code class=\"string\">\"custom-up-icon\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the icons option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">icons = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"icons\"</code><code class=\"plain\">, { down: </code><code class=\"string\">\"custom-down-icon\"</code><code class=\"plain\">, up: </code><code class=\"string\">\"custom-up-icon\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-incremental\" class=\"api-item\">\n<h3>incremental<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types/#Function\">Function</a>()</span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>true</code>\n</div>\n<div>Controls the number of steps taken when holding down a spin button.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: When set to <code>true</code>, the stepping delta will increase when spun incessantly. When set to <code>false</code>, all steps are equal (as defined by the <a href=\"#option-step\"><code>step</code></a> option).</li>\n<li>\n<strong>Function</strong>: Receives one parameter: the number of spins that have occurred. Must return the number of steps that should occur for the current spin.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the incremental option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ incremental: </code><code class=\"keyword\">false</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the incremental option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">incremental = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"incremental\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"incremental\"</code><code class=\"plain\">, </code><code class=\"keyword\">false</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-max\" class=\"api-item\">\n<h3>max<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The maximum allowed value. The element's <code>max</code> attribute is used if it exists and the option is not explicitly set. If <code>null</code>, there is no maximum enforced.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The maximum value.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>max</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options; otherwise it will fall back to the native <code>parseFloat()</code> method.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the max option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ max: 50 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the max option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">max = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"max\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-min\" class=\"api-item\">\n<h3>min<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>The minimum allowed value. The element's <code>min</code> attribute is used if it exists and the option is not explicitly set. If <code>null</code>, there is no minimum enforced.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The minimum value.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>min</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options; otherwise it will fall back to the native <code>parseFloat()</code> method.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the min option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ min: 0 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the min option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">min = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"min\"</code><code class=\"plain\">, 0 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-numberFormat\" class=\"api-item\">\n<h3>numberFormat<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>Format of numbers passed to  <a href=\"https://github.com/jquery/globalize\"><code>Globalize</code></a>, if available. Most common are <code>\"n\"</code> for a decimal number and <code>\"C\"</code> for a currency value. Also see the <a href=\"#option-culture\"><code>culture</code></a> option.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the numberFormat option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ numberFormat: </code><code class=\"string\">\"n\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the numberFormat option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">numberFormat = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberFormat\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"numberFormat\"</code><code class=\"plain\">, </code><code class=\"string\">\"n\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-page\" class=\"api-item\">\n<h3>page<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>10</code>\n</div>\n<div>The number of steps to take when paging via the <a href=\"#method-pageUp\"><code>pageUp</code></a>/<a href=\"#method-pageDown\"><code>pageDown</code></a> methods.</div>\n<strong>Code examples:</strong><p>Initialize the spinner with the page option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ page: 5 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the page option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">page = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"page\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"page\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-step\" class=\"api-item\">\n<h3>step<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>1</code>\n</div>\n<div>The size of the step to take when spinning via buttons or via the <a href=\"#method-stepUp\"><code>stepUp()</code></a>/<a href=\"#method-stepDown\"><code>stepDown()</code></a> methods. The element's <code>step</code> attribute is used if it exists and the option is not explicitly set.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Number</strong>: The size of the step.</li>\n<li>\n<strong>String</strong>: If <a href=\"https://github.com/jquery/globalize\">Globalize</a> is included, the <code>step</code> option can be passed as a string which will be parsed based on the <a href=\"#opiton-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options, otherwise it will fall back to the native <code>parseFloat</code>.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the spinner with the step option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({ step: 2 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the step option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">step = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"step\"</code><code class=\"plain\">, 2 );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the spinner functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the spinner.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the spinner.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current spinner options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the spinner option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the spinner.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-pageDown\">\n<div class=\"api-item\">\n<h3>pageDown(  [pages ] )</h3>\n<div>\n\t\t\t\tDecrements the value by the specified number of pages, as defined by the <a href=\"#option-page\"><code>page</code></a> option. Without the parameter, a single page is decremented.\n\t\t\t</div>\n<ul><li>\n<div><strong>pages</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of pages to decrement, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the pageDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"pageDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-pageUp\">\n<div class=\"api-item\">\n<h3>pageUp(  [pages ] )</h3>\n<div>\n\t\t\t\tIncrements the value by the specified number of pages, as defined by the <a href=\"#option-page\"><code>page</code></a> option. Without the parameter, a single page is incremented.\n\t\t\t</div>\n<ul><li>\n<div><strong>pages</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of pages to increment, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the pageUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"pageUp\"</code><code class=\"plain\">, 10 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-stepDown\">\n<div class=\"api-item\">\n<h3>stepDown(  [steps ] )</h3>\n<div>\n\t\t\t\tDecrements the value by the specified number of steps. Without the parameter, a single step is decremented.\n\t\t\t\t<p>If the resulting value is above the max, below the min, or reuslts in a step mismatch, the value will be adjusted to the closest valid value.</p>\n\t\t\t</div>\n<ul><li>\n<div><strong>steps</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of steps to decrement, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the stepDown method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"stepDown\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-stepUp\">\n<div class=\"api-item\">\n<h3>stepUp(  [steps ] )</h3>\n<div>\n\t\t\t\tIncrements the value by the specified number of steps. Without the parameter, a single step is incremented.\n\t\t\t\t<p>If the resulting value is above the max, below the min, or reuslts in a step mismatch, the value will be adjusted to the closest valid value.</p>\n\t\t\t</div>\n<ul><li>\n<div><strong>steps</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>Number of steps to increment, defaults to 1.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the stepUp method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"stepUp\"</code><code class=\"plain\">, 5 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-value\">\n<div class=\"api-item\">\n<h3>value() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Number\">Number</a></span>\n</h3>\n<div>Gets the current value as a number. The value is parsed based on the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">value = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"value\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>value( value )</h3>\n<div></div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The value to set. If passed as a string, the value is parsed based on the <a href=\"#option-numberFormat\"><code>numberFormat</code></a> and <a href=\"#option-culture\"><code>culture</code></a> options.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"value\"</code><code class=\"plain\">, 50 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the generated wrapper.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-change\" class=\"api-item first-item\">\n<h3>change( event, ui )<span class=\"returns\">Type: <code>spinchange</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when the value of the spinner has changed and the input is no longer focused.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the change callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">change: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinchange event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinchange\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>spincreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the spinner is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spincreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spincreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-spin\" class=\"api-item\">\n<h3>spin( event, ui )<span class=\"returns\">Type: <code>spin</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered during increment/decrement (to determine direction of spin compare current value with <code>ui.value</code>).\n\t\t\t\t<p>Can be canceled, preventing the value from being updated.</p>\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a>\n</div>\n<div>The new value to be set, unless the event is cancelled.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the spin callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">spin: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spin event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spin\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-start\" class=\"api-item\">\n<h3>start( event, ui )<span class=\"returns\">Type: <code>spinstart</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered before a spin. Can be canceled, preventing the spin from occurring.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the start callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">start: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinstart event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinstart\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-stop\" class=\"api-item\">\n<h3>stop( event, ui )<span class=\"returns\">Type: <code>spinstop</code></span>\n</h3>\n<div>Triggered after a spin.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the spinner with the stop callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).spinner({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">stop: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the spinstop event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"spinstop\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Spinner, or number stepper, widget is perfect for handling all kinds of numeric input. It allow users to type a value directly or modify an existing value by spinning with the keyboard, mouse or scrollwheel. When combined with Globalize, you can even spin currencies and dates in a variety of locales.</p>\n\n\t\t<p>Spinner wraps a text input, adds two buttons to increment and decrement the current value, along with handling key events for the same purpose. It delegates to <a href=\"https://github.com/jquery/globalize\">Globalize</a> for number formatting and parsing.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<ul>\n\t\t\t<li>UP: Increment the value by one step.</li>\n\t\t\t<li>DOWN: Decrement the value by one step.</li>\n\t\t\t<li>PAGE UP: Increment the value by one page.</li>\n\t\t\t<li>PAGE DOWN: Decrement the value by one page.</li>\n\t\t</ul>\n\n\t\t<p>Focus stays in the text field, even after using the mouse to click one of the spin buttons.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Plain number spinner</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;spinner demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"spinner\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\">&nbsp;</div><div class=\"line number14 index13 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">$( \"#spinner\" ).spinner();</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\">&nbsp;</div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"50\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tabs.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI tabs documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Tabs Widget\",\n\t\t\"excerpt\":\n\t\t\t\"A single content area with multiple panels, each associated with a header in a list.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-active\">active</a></div>\n<div><a href=\"#option-collapsible\">collapsible</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-event\">event</a></div>\n<div><a href=\"#option-heightStyle\">heightStyle</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-show\">show</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-load\">load</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-refresh\">refresh</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-activate\">activate</a></div>\n<div><a href=\"#event-beforeActivate\">beforeActivate</a></div>\n<div><a href=\"#event-beforeLoad\">beforeLoad</a></div>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-load\">load</a></div>\n</div></section><article id=\"tabs1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Tabs Widget</span><span class=\"version-details\">version added: 1.0</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>A single content area with multiple panels, each associated with a header in a list.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-active\" class=\"api-item first-item\">\n<h3>active<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Integer\">Integer</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>0</code>\n</div>\n<div>\n\t\t\t\tWhich panel is currently open.\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Setting <code>active</code> to <code>false</code> will collapse all panels. This requires the <a href=\"#option-collapsible\"><code>collapsible</code></a> option to be <code>true</code>.</li>\n<li>\n<strong>Integer</strong>: The zero-based index of the panel that is active (open). A negative value selects panels going backward from the last panel.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the active option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ active: 1 });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the active option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">active = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"active\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-collapsible\" class=\"api-item\">\n<h3>collapsible<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>When set to <code>true</code>, the active panel can be closed.</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the collapsible option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ collapsible: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the collapsible option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">collapsible = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"collapsible\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Array\">Array</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Which tabs are disabled.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: Enable or disable all tabs.</li>\n<li>\n<strong>Array</strong>: An array containing the zero-based indexes of the tabs that should be disabled, e.g., <code>[ 0, 2 ]</code> would disable the first and third tab.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ disabled: [ 0, 2 ] });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, [ 0, 2 ] );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-event\" class=\"api-item\">\n<h3>event<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"click\"</code>\n</div>\n<div>The type of event that the tabs should react to in order to activate the tab. To activate on hover, use <code>\"mouseover\"</code>.</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the event option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ event: </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the event option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">event = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"event\"</code><code class=\"plain\">, </code><code class=\"string\">\"mouseover\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-heightStyle\" class=\"api-item\">\n<h3>heightStyle<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>\"content\"</code>\n</div>\n<div>\n\t\t\t\tControls the height of the tabs widget and each panel. Possible values:\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n<code>\"auto\"</code>: All panels will be set to the height of the tallest panel.</li>\n\t\t\t\t\t<li>\n<code>\"fill\"</code>: Expand to the available height based on the tabs' parent height.</li>\n\t\t\t\t\t<li>\n<code>\"content\"</code>: Each panel will be only as tall as its content.</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tabs with the heightStyle option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ heightStyle: </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the heightStyle option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">heightStyle = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"heightStyle\"</code><code class=\"plain\">, </code><code class=\"string\">\"fill\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the panel.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the panel will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the panel will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe panel will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe panel will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the panel.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the panel will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the panel will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe panel will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe panel will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tabs with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-destroy\">\n<div class=\"api-item first-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the tabs functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>Disables all tabs.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>disable( index )</h3>\n<div>\n\t\t\t\t\tDisables a tab. The selected tab cannot be disabled. To disable more than one tab at once, set the <a href=\"#option-disabled\"><code>disabled</code></a> option: <code>$( \"#tabs\" ).tabs( \"option\", \"disabled\", [ 1, 2, 3 ] )</code>.\n\t\t\t\t</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to disable.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"disable\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>Enables all tabs.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>enable( index )</h3>\n<div>Enables a tab. To enable more than one tab at once reset the disabled property like: <code>$( \"#example\" ).tabs( \"option\", \"disabled\", [] );</code>.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to enable.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"enable\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-load\">\n<div class=\"api-item\">\n<h3>load( index )</h3>\n<div>Loads the panel content of a remote tab.</div>\n<ul><li>\n<div><strong>index</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>Which tab to load.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the load method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"load\"</code><code class=\"plain\">, 1 );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current tabs options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the tabs option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the tabs.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-refresh\">\n<div class=\"api-item\">\n<h3>refresh()</h3>\n<div>Process any tabs that were added or removed directly in the DOM and recompute the height of the tab panels. Results depend on the content and the <a href=\"#option-heightStyle\"><code>heightStyle</code></a> option.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the refresh method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"refresh\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the tabs container.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-activate\" class=\"api-item first-item\">\n<h3>activate( event, ui )<span class=\"returns\">Type: <code>tabsactivate</code></span>\n</h3>\n<div>Triggered after a tab has been activated (after animation completes). If the tabs were previously collapsed, <code>ui.oldTab</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the tabs are collapsing, <code>ui.newTab</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just activated.</div>\n</li>\n<li>\n<div><strong>oldTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that was just deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the activate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">activate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeActivate\" class=\"api-item\">\n<h3>beforeActivate( event, ui )<span class=\"returns\">Type: <code>tabsbeforeactivate</code></span>\n</h3>\n<div>Triggered directly after a tab is activated. Can be canceled to prevent the tab from activating. If the tabs are currently collapsed, <code>ui.oldTab</code> and <code>ui.oldPanel</code> will be empty jQuery objects. If the tabs are collapsing, <code>ui.newTab</code> and <code>ui.newPanel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>newTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldTab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is about to be deactivated.</div>\n</li>\n<li>\n<div><strong>newPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be activated.</div>\n</li>\n<li>\n<div><strong>oldPanel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel that is about to be deactivated.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the beforeActivate callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeActivate: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsbeforeactivate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsbeforeactivate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-beforeLoad\" class=\"api-item\">\n<h3>beforeLoad( event, ui )<span class=\"returns\">Type: <code>tabsbeforeload</code></span>\n</h3>\n<div>Triggered when a remote tab is about to be loaded, after the <a href=\"#event-beforeActivate\"><code>beforeActivate</code></a> event. Can be canceled to prevent the tab panel from loading content; though the panel will still be activated. This event is triggered just before the Ajax request is made, so modifications can be made to <code>ui.jqXHR</code> and <code>ui.ajaxSettings</code>.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that is being loaded.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel which will be populated by the Ajax response.</div>\n</li>\n<li>\n<div><strong>jqXHR</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jqXHR\">jqXHR</a>\n</div>\n<div>The <code>jqXHR</code> object that is requesting the content.</div>\n</li>\n<li>\n<div><strong>ajaxSettings</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>The settings that will be used by <a href=\"//api.jquery.com/jQuery.ajax\"><code>jQuery.ajax</code></a> to request the content.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the beforeLoad callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">beforeLoad: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsbeforeload event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsbeforeload\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>tabscreate</code></span>\n</h3>\n<div>Triggered when the tabs are created. If the tabs are collapsed, <code>ui.tab</code> and <code>ui.panel</code> will be empty jQuery objects.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active tab.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The active panel.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabscreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabscreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-load\" class=\"api-item\">\n<h3>load( event, ui )<span class=\"returns\">Type: <code>tabsload</code></span>\n</h3>\n<div>Triggered after a remote tab has been loaded.</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul>\n<li>\n<div><strong>tab</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The tab that was just loaded.</div>\n</li>\n<li>\n<div><strong>panel</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The panel which was just populated by the Ajax response.</div>\n</li>\n</ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tabs with the load callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tabs({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">load: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tabsload event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tabsload\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Tabs are generally used to break content into multiple sections that can be swapped to save space, much like an accordion.</p>\n\n\t\t<p>The content for each tab panel can be defined in-page or can be loaded via Ajax; both are handled automatically based on the <code>href</code> of the anchor associated with the tab. By default tabs are activated on click, but the events can be changed to hover via the <a href=\"#option-event\"><code>event</code></a> option.</p>\n\n\t\t<h3>Keyboard interaction</h3>\n\n\t\t<p>When focus is on a tab, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>UP/LEFT: Move focus to the previous tab. If on first tab, moves focus to last tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>DOWN/RIGHT: Move focus to the next tab. If on last tab, moves focus to first tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>HOME: Move focus to the first tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>END: Move focus to the last tab. Activate focused tab after a short delay.</li>\n\t\t\t<li>SPACE: Activate panel associated with focused tab.</li>\n\t\t\t<li>ENTER: Activate or toggle panel associated with focused tab.</li>\n\t\t\t<li>ALT+PAGE UP: Move focus to the previous tab and immediately activate.</li>\n\t\t\t<li>ALT+PAGE DOWN: Move focus to the next tab and immediately activate.</li>\n\t\t</ul>\n\n\t\t<p>When focus is in a panel, the following key commands are available:</p>\n\t\t<ul>\n\t\t\t<li>CTRL+UP: Move focus to associated tab.</li>\n\t\t\t<li>ALT+PAGE UP: Move focus to the previous tab and immediately activate.</li>\n\t\t\t<li>ALT+PAGE DOWN: Move focus to the next tab and immediately activate.</li>\n\t\t</ul>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">A simple jQuery UI Tabs</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;tabs demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"tabs\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-1\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;One&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-2\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;Two&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#fragment-3\"</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;Three&lt;/</code><code class=\"keyword\">span</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">li</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">ul</code><code class=\"plain\">&gt;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-1\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;First tab is active by default:&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">pre</code><code class=\"plain\">&gt;&lt;</code><code class=\"keyword\">code</code><code class=\"plain\">&gt;$( \"#tabs\" ).tabs(); &lt;/</code><code class=\"keyword\">code</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">pre</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-2\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">id</code><code class=\"plain\">=</code><code class=\"string\">\"fragment-3\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number29 index28 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</code></div><div class=\"line number30 index29 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number32 index31 alt1\">&nbsp;</div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\"><code class=\"plain\">$( \"#tabs\" ).tabs();</code></div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\">&nbsp;</div><div class=\"line number37 index36 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number38 index37 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/tooltip.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI tooltip documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Tooltip Widget\",\n\t\t\"excerpt\":\n\t\t\t\"Customizable, themeable tooltips, replacing native tooltips.\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"widgets\"\n\t\t\t]\n\t\t}\n\t}</script><section class=\"quick-nav\"><header><h2>QuickNav<a href=\"#entry-longdesc\">Overview</a><a href=\"#entry-examples\">Examples</a>\n</h2></header><div class=\"quick-nav-section\">\n<h3>Options</h3>\n<div><a href=\"#option-content\">content</a></div>\n<div><a href=\"#option-disabled\">disabled</a></div>\n<div><a href=\"#option-hide\">hide</a></div>\n<div><a href=\"#option-items\">items</a></div>\n<div><a href=\"#option-position\">position</a></div>\n<div><a href=\"#option-show\">show</a></div>\n<div><a href=\"#option-tooltipClass\">tooltipClass</a></div>\n<div><a href=\"#option-track\">track</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Methods</h3>\n<div><a href=\"#method-close\">close</a></div>\n<div><a href=\"#method-destroy\">destroy</a></div>\n<div><a href=\"#method-disable\">disable</a></div>\n<div><a href=\"#method-enable\">enable</a></div>\n<div><a href=\"#method-open\">open</a></div>\n<div><a href=\"#method-option\">option</a></div>\n<div><a href=\"#method-widget\">widget</a></div>\n</div>\n<div class=\"quick-nav-section\">\n<h3>Events</h3>\n<div><a href=\"#event-create\">create</a></div>\n<div><a href=\"#event-open\">open</a></div>\n<div><a href=\"#event-close\">close</a></div>\n</div></section><article id=\"tooltip1\" class=\"entry widget\"><h2 class=\"section-title\">\n<span>Tooltip Widget</span><span class=\"version-details\">version added: 1.9</span>\n</h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Customizable, themeable tooltips, replacing native tooltips.</p>\n<section id=\"options\"><header><h2 class=\"underline\">Options</h2></header><div id=\"option-content\" class=\"api-item first-item\">\n<h3>content<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types/#Function\">Function</a>() or <a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>function returning the title attribute</code>\n</div>\n<div>\n\t\t\t\t<p>The content of the tooltip.</p>\n\n\t\t\t\t<p><em>When changing this option, you likely need to also change the <a href=\"#option-items\"><code>items</code></a> option.</em></p>\n\t\t\t</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Function</strong>: A callback which can either return the content directly, or call the first argument, passing in the content, e.g., for Ajax content.</li>\n<li>\n<strong>String</strong>: A string of HTML to use for the tooltip content.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the content option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ content: </code><code class=\"string\">\"Awesome title!\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the content option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">content = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"content\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"content\"</code><code class=\"plain\">, </code><code class=\"string\">\"Awesome title!\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-disabled\" class=\"api-item\">\n<h3>disabled<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>Disables the tooltip if set to <code>true</code>.</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the disabled option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the disabled option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">disabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-hide\" class=\"api-item\">\n<h3>hide<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the hiding of the tooltip.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the tooltip will be hidden immediately.\n\t\t\tWhen set to <code>true</code>, the tooltip will fade out with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe tooltip will fade out with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe tooltip will be hidden using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideUp\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeOut\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the hide option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ hide: { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the hide option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">hide = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"hide\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"explode\"</code><code class=\"plain\">, duration: 1000 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-items\" class=\"api-item\">\n<h3>items<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Selector\">Selector</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>[title]</code>\n</div>\n<div>\n\t\t\t\t<p>A selector indicating which items should show tooltips. Customize if you're using something other then the title attribute for the tooltip content, or if you need a different selector for event delegation.</p>\n\n\t\t\t\t<p><em>When changing this option, you likely need to also change the <a href=\"#option-content\"><code>content</code></a> option.</em></p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the items option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ items: </code><code class=\"string\">\"img[alt]\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the items option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">items = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"items\"</code><code class=\"plain\">, </code><code class=\"string\">\"img[alt]\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-position\" class=\"api-item\">\n<h3>position<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>{ my: \"left top+15\", at: \"left bottom\", collision: \"flipfit\" }</code>\n</div>\n<div>\n\t\t\t\t<p>Configuration for the Position utility. The <code>of</code> property defaults to the target element, but can also be overriden.</p>\n\n\t\t\t\t<p><em>Note: In 1.9.0, the default value was <code>{ my: \"left+15 center\", at: \"right center\", collision: \"flipfit\" }</code>, but this was changed to more closely match native tooltip positioning.</em></p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the position option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ position: { my: </code><code class=\"string\">\"left+15 center\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right center\"</code> <code class=\"plain\">} });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the position option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">position = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"position\"</code><code class=\"plain\">, { my: </code><code class=\"string\">\"left+15 center\"</code><code class=\"plain\">, at: </code><code class=\"string\">\"right center\"</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-show\" class=\"api-item\">\n<h3>show<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a> or <a href=\"http://api.jquery.com/Types#Number\">Number</a> or <a href=\"http://api.jquery.com/Types#String\">String</a> or <a href=\"http://api.jquery.com/Types#Object\">Object</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>If and how to animate the showing of the tooltip.</div>\n<strong>Multiple types supported:</strong><ul>\n<li>\n<strong>Boolean</strong>: \n\t\t\tWhen set to <code>false</code>, no animation will be used and the tooltip will be shown immediately.\n\t\t\tWhen set to <code>true</code>, the tooltip will fade in with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Number</strong>: \n\t\t\tThe tooltip will fade in with the specified duration and the default easing.\n\t\t</li>\n<li>\n<strong>String</strong>: \n\t\t\tThe tooltip will be shown using the specified effect.\n\t\t\tThe value can either be the name of a built-in jQuery animateion method, such as <code>\"slideDown\"</code>, or the name of a jQuery UI effect, such as <code>\"fold\"</code>.\n\t\t\tIn either case the effect will be used with the default duration and the default easing.\n\t\t</li>\n<li>\n<strong>Object</strong>: If the value is an object, then <code>effect</code>, <code>duration</code>, and <code>easing</code> properties may be provided. If the <code>effect</code> property contains the name of a jQuery method, then that method will be used; otherwise it is assumed to be the name of a jQuery UI effect. When using a jQuery UI effect that supports additional settings, you may include those settings in the object and they will be passed to the effect. If <code>duration</code> or <code>easing</code> is omitted, then the default values will be used. If <code>effect</code> is omitted, then <code>\"fadeIn\"</code> will be used.</li>\n</ul>\n<strong>Code examples:</strong><p>Initialize the tooltip with the show option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ show: { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } });</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the show option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">show = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"show\"</code><code class=\"plain\">, { effect: </code><code class=\"string\">\"blind\"</code><code class=\"plain\">, duration: 800 } );</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-tooltipClass\" class=\"api-item\">\n<h3>tooltipClass<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#String\">String</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>null</code>\n</div>\n<div>\n\t\t\t\tA class to add to the widget, can be used to display various tooltip types, like warnings or errors.\n\t\t\t\t<p>This may get replaced by the <a href=\"http://bugs.jqueryui.com/ticket/7053\">classes option</a>.</p>\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the tooltipClass option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ tooltipClass: </code><code class=\"string\">\"custom-tooltip-styling\"</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the tooltipClass option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">tooltipClass = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tooltipClass\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"tooltipClass\"</code><code class=\"plain\">, </code><code class=\"string\">\"custom-tooltip-styling\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div id=\"option-track\" class=\"api-item\">\n<h3>track<span class=\"option-type\"><strong>Type: </strong><a href=\"http://api.jquery.com/Types#Boolean\">Boolean</a></span>\n</h3>\n<div class=\"default\">\n<strong>Default: </strong><code>false</code>\n</div>\n<div>\n\t\t\t\tWhether the tooltip should track (follow) the mouse.\n\t\t\t</div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the track option specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({ track: </code><code class=\"keyword\">true</code> <code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Get or set the track option, after initialization:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"comments\">// getter</code></div><div class=\"line number2 index1 alt1\"><code class=\"keyword\">var</code> <code class=\"plain\">track = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"track\"</code> <code class=\"plain\">);</code></div><div class=\"line number3 index2 alt2\">&nbsp;</div><div class=\"line number4 index3 alt1\"><code class=\"comments\">// setter</code></div><div class=\"line number5 index4 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"track\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div></section><section id=\"methods\"><header><h2 class=\"underline\">Methods</h2></header><div id=\"method-close\">\n<div class=\"api-item first-item\">\n<h3>close()</h3>\n<div>\n\t\t\t\tCloses a tooltip. This is only intended to be called for non-delegated tooltips.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the close method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"close\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-destroy\">\n<div class=\"api-item\">\n<h3>destroy()</h3>\n<div>\n\t\tRemoves the tooltip functionality completely. This will return the element back to its pre-init state.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the destroy method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"destroy\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-disable\">\n<div class=\"api-item\">\n<h3>disable()</h3>\n<div>\n\t\tDisables the tooltip.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the disable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"disable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-enable\">\n<div class=\"api-item\">\n<h3>enable()</h3>\n<div>\n\t\tEnables the tooltip.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the enable method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"enable\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-open\">\n<div class=\"api-item\">\n<h3>open()</h3>\n<div>\n\t\t\t\tProgrammatically open a tooltip. This is only intended to be called for non-delegated tooltips.\n\t\t\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the open method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"open\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-option\">\n<div class=\"api-item\">\n<h3>option( optionName ) <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#Object\">Object</a></span>\n</h3>\n<div>Gets the value currently associated with the specified <code>optionName</code>.</div>\n<ul><li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to get.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">isDisabled = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#PlainObject\">PlainObject</a></span>\n</h3>\n<div>Gets an object containing key/value pairs representing the current tooltip options hash.</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">options = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( optionName, value )</h3>\n<div>Sets the value of the tooltip option associated with the specified <code>optionName</code>.</div>\n<ul>\n<li>\n<div><strong>optionName</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>The name of the option to set.</div>\n</li>\n<li>\n<div><strong>value</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A value to set for the option.</div>\n</li>\n</ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, </code><code class=\"string\">\"disabled\"</code><code class=\"plain\">, </code><code class=\"keyword\">true</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n<div class=\"api-item\">\n<h3>option( options )</h3>\n<div>Sets one or more options for the tooltip.</div>\n<ul><li>\n<div><strong>options</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div>A map of option-value pairs to set.</div>\n</li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the  method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"option\"</code><code class=\"plain\">, { disabled: </code><code class=\"keyword\">true</code> <code class=\"plain\">} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"method-widget\">\n<div class=\"api-item\">\n<h3>widget() <span class=\"returns\">Returns: <a class=\"return\" href=\"http://api.jquery.com/Types/#jQuery\">jQuery</a></span>\n</h3>\n<div>\n\t\tReturns a <code>jQuery</code> object containing the original element.\n\t</div>\n<ul><li><div class=\"null-signature\">This method does not accept any arguments.</div></li></ul>\n</div>\n<div>\n<strong>Code examples:</strong><p>Invoke the widget method:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"keyword\">var</code> <code class=\"plain\">widget = $( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip( </code><code class=\"string\">\"widget\"</code> <code class=\"plain\">);</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><section id=\"events\"><header><h2 class=\"underline\">Events</h2></header><div id=\"event-close\" class=\"api-item first-item\">\n<h3>close( event, ui )<span class=\"returns\">Type: <code>tooltipclose</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a tooltip is closed, triggered on <code>focusout</code> or <code>mouseleave</code>.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>tooltip</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The generated tooltip element.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the close callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">close: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipclose event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipclose\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-create\" class=\"api-item\">\n<h3>create( event, ui )<span class=\"returns\">Type: <code>tooltipcreate</code></span>\n</h3>\n<div>\n\t\tTriggered when the tooltip is created.\n\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the create callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">create: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipcreate event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipcreate\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div>\n<div id=\"event-open\" class=\"api-item\">\n<h3>open( event, ui )<span class=\"returns\">Type: <code>tooltipopen</code></span>\n</h3>\n<div>\n\t\t\t\tTriggered when a tooltip is shown, triggered on <code>focusin</code> or <code>mouseover</code>.\n\t\t\t</div>\n<ul>\n<li>\n<div><strong>event</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Event\">Event</a>\n</div>\n<div></div>\n</li>\n<li>\n<div><strong>ui</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#Object\">Object</a>\n</div>\n<div></div>\n<ul><li>\n<div><strong>tooltip</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#jQuery\">jQuery</a>\n</div>\n<div>The generated tooltip element.</div>\n</li></ul>\n</li>\n</ul>\n<div>\n<strong>Code examples:</strong><p>Initialize the tooltip with the open callback specified:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).tooltip({</code></div><div class=\"line number2 index1 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">open: </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {}</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">});</code></div></div></td></tr></tbody></table></div>\n<p>Bind an event listener to the tooltipopen event:</p>\n<div class=\"syntaxhighlighter nogutter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">$( </code><code class=\"string\">\".selector\"</code> <code class=\"plain\">).on( </code><code class=\"string\">\"tooltipopen\"</code><code class=\"plain\">, </code><code class=\"keyword\">function</code><code class=\"plain\">( event, ui ) {} );</code></div></div></td></tr></tbody></table></div>\n</div>\n</div></section><div class=\"longdesc\" id=\"entry-longdesc\">\n<header><h2 class=\"underline\">Overview</h2></header>\n\t\t<p>Tooltip replaces native tooltips, making them themable as well as allowing various customizations:</p>\n\n\t\t<ul>\n\t\t\t<li>Display other content than just the title, like inline footnotes or extra content retrieved via Ajax.</li>\n\t\t\t<li>Customize the positioning, e.g., to center the tooltip above elements.</li>\n\t\t\t<li>Add extra styling to customize the appearance, for warning or error fields.</li>\n\t\t</ul>\n\n\t\t<p>A fade animation is used by default to show and hide the tooltip, making the appearance a bit more organic, compared to just toggling the visiblity. This can be customized with the <a href=\"#option-show\"><code>show</code></a> and <a href=\"#option-hide\"><code>hide</code></a> options.</p>\n\n\t\t<p>The <a href=\"#option-items\"><code>items</code></a> and <a href=\"#option-content\"><code>content</code></a> options need to stay in-sync. If you change one of them, you need to change the other.</p>\n\n\t\t<p>In general, disabled elements do not trigger any DOM events. Therefore, it is not possible to properly control tooltips for disabled elements, since we need to listen to events to determine when to show and hide the tooltip. As a result, jQuery UI does not guarantee any level of support for tooltips attached to disabled elements. Unfortunately, this means that if you require tooltips on disabled elements, you may end up with a mixture of native tooltips and jQuery UI tooltips.</p>\n\t</div>\n<h3>Additional Notes:</h3>\n<div class=\"longdesc\"><ul><li>\n\t\t\tThis widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.\n\t\t</li></ul></div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Create a tooltip on the document, using event delegation for all elements with a title attribute.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;tooltip demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number9 index8 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number10 index9 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number11 index10 alt2\">&nbsp;</div><div class=\"line number12 index11 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">a</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"#\"</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Anchor description\"</code><code class=\"plain\">&gt;Anchor text&lt;/</code><code class=\"keyword\">a</code><code class=\"plain\">&gt;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">input</code> <code class=\"color1\">title</code><code class=\"plain\">=</code><code class=\"string\">\"Input help\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number15 index14 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">p</code><code class=\"plain\">&gt;</code></div><div class=\"line number16 index15 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( document ).tooltip();</code></div><div class=\"line number18 index17 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number19 index18 alt2\">&nbsp;</div><div class=\"line number20 index19 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number21 index20 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"80\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/docs/transfer-effect.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI transfer-effect documentation</title>\n\n\t<style>\n\tbody {\n\t\tfont-family: \"Trebuchet MS\", \"Arial\", \"Helvetica\", \"Verdana\", \"sans-serif\"\n\t}\n\t.gutter {\n\t\tdisplay: none;\n\t}\n\t</style>\n</head>\n<body>\n\n<script>{\n\t\t\"title\":\n\t\t\t\"Transfer Effect\",\n\t\t\"excerpt\":\n\t\t\t\"Transfers the outline of an element to another element\",\n\t\t\"termSlugs\": {\n\t\t\t\"category\": [\n\t\t\t\t\"effects\"\n\t\t\t]\n\t\t}\n\t}</script><article id=\"transfer1\" class=\"entry effect\"><h2 class=\"section-title\"><span>Transfer Effect</span></h2>\n<div class=\"entry-wrapper\">\n<p class=\"desc\"><strong>Description: </strong>Transfers the outline of an element to another element</p>\n<ul class=\"signatures\"><li class=\"signature\">\n<h4 class=\"name\">transfer</h4>\n<ul>\n<li>\n<div><strong>className</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>argumental class name the transfer element will receive.</div>\n</li>\n<li>\n<div><strong>to</strong></div>\n<div>Type: <a href=\"http://api.jquery.com/Types#String\">String</a>\n</div>\n<div>jQuery selector, the element to transfer to.</div>\n</li>\n</ul>\n</li></ul>\n<div class=\"longdesc\" id=\"entry-longdesc\">\n\t\t<p>Very useful when trying to visualize interaction between two elements.</p>\n\t\t<p>The transfer element iself has the class <code>ui-effects-transfer</code>, and needs to be styled by you, for example by adding a background or border.</p>\n\t</div>\n<section class=\"entry-examples\" id=\"entry-examples\"><header><h2 class=\"underline\">Example:</h2></header><div class=\"entry-example\" id=\"example-0\">\n<h4><span class=\"desc\">Clicking on the green element transfers to the other.</span></h4>\n<div class=\"syntaxhighlighter  \"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1</div><div class=\"line number2 index1 alt1\">2</div><div class=\"line number3 index2 alt2\">3</div><div class=\"line number4 index3 alt1\">4</div><div class=\"line number5 index4 alt2\">5</div><div class=\"line number6 index5 alt1\">6</div><div class=\"line number7 index6 alt2\">7</div><div class=\"line number8 index7 alt1\">8</div><div class=\"line number9 index8 alt2\">9</div><div class=\"line number10 index9 alt1\">10</div><div class=\"line number11 index10 alt2\">11</div><div class=\"line number12 index11 alt1\">12</div><div class=\"line number13 index12 alt2\">13</div><div class=\"line number14 index13 alt1\">14</div><div class=\"line number15 index14 alt2\">15</div><div class=\"line number16 index15 alt1\">16</div><div class=\"line number17 index16 alt2\">17</div><div class=\"line number18 index17 alt1\">18</div><div class=\"line number19 index18 alt2\">19</div><div class=\"line number20 index19 alt1\">20</div><div class=\"line number21 index20 alt2\">21</div><div class=\"line number22 index21 alt1\">22</div><div class=\"line number23 index22 alt2\">23</div><div class=\"line number24 index23 alt1\">24</div><div class=\"line number25 index24 alt2\">25</div><div class=\"line number26 index25 alt1\">26</div><div class=\"line number27 index26 alt2\">27</div><div class=\"line number28 index27 alt1\">28</div><div class=\"line number29 index28 alt2\">29</div><div class=\"line number30 index29 alt1\">30</div><div class=\"line number31 index30 alt2\">31</div><div class=\"line number32 index31 alt1\">32</div><div class=\"line number33 index32 alt2\">33</div><div class=\"line number34 index33 alt1\">34</div><div class=\"line number35 index34 alt2\">35</div><div class=\"line number36 index35 alt1\">36</div><div class=\"line number37 index36 alt2\">37</div><div class=\"line number38 index37 alt1\">38</div><div class=\"line number39 index38 alt2\">39</div><div class=\"line number40 index39 alt1\">40</div><div class=\"line number41 index40 alt2\">41</div><div class=\"line number42 index41 alt1\">42</div><div class=\"line number43 index42 alt2\">43</div></td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain\">&lt;!doctype html&gt;</code></div><div class=\"line number2 index1 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">html</code> <code class=\"color1\">lang</code><code class=\"plain\">=</code><code class=\"string\">\"en\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number3 index2 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number4 index3 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">meta</code> <code class=\"color1\">charset</code><code class=\"plain\">=</code><code class=\"string\">\"utf-8\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number5 index4 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;transfer demo&lt;/</code><code class=\"keyword\">title</code><code class=\"plain\">&gt;</code></div><div class=\"line number6 index5 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">link</code> <code class=\"color1\">rel</code><code class=\"plain\">=</code><code class=\"string\">\"stylesheet\"</code> <code class=\"color1\">href</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css\">http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css</a>\"</code><code class=\"plain\">&gt;</code></div><div class=\"line number7 index6 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number8 index7 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">div.green {</code></div><div class=\"line number9 index8 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 100px;</code></div><div class=\"line number10 index9 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 80px;</code></div><div class=\"line number11 index10 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: green;</code></div><div class=\"line number12 index11 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px solid black;</code></div><div class=\"line number13 index12 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: relative;</code></div><div class=\"line number14 index13 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number15 index14 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">div.red {</code></div><div class=\"line number16 index15 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">margin-top: 10px;</code></div><div class=\"line number17 index16 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">width: 50px;</code></div><div class=\"line number18 index17 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">height: 30px;</code></div><div class=\"line number19 index18 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">background: red;</code></div><div class=\"line number20 index19 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px solid black;</code></div><div class=\"line number21 index20 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">position: relative;</code></div><div class=\"line number22 index21 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number23 index22 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">.ui-effects-transfer {</code></div><div class=\"line number24 index23 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">border: 1px dotted black;</code></div><div class=\"line number25 index24 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">}</code></div><div class=\"line number26 index25 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;/</code><code class=\"keyword\">style</code><code class=\"plain\">&gt;</code></div><div class=\"line number27 index26 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/jquery-1.8.3.js\">http://code.jquery.com/jquery-1.8.3.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number28 index27 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code> <code class=\"color1\">src</code><code class=\"plain\">=</code><code class=\"string\">\"<a href=\"http://code.jquery.com/ui/1.9.2/jquery-ui.js\">http://code.jquery.com/ui/1.9.2/jquery-ui.js</a>\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number29 index28 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">head</code><code class=\"plain\">&gt;</code></div><div class=\"line number30 index29 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number31 index30 alt2\">&nbsp;</div><div class=\"line number32 index31 alt1\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"green\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number33 index32 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">div</code> <code class=\"color1\">class</code><code class=\"plain\">=</code><code class=\"string\">\"red\"</code><code class=\"plain\">&gt;&lt;/</code><code class=\"keyword\">div</code><code class=\"plain\">&gt;</code></div><div class=\"line number34 index33 alt1\">&nbsp;</div><div class=\"line number35 index34 alt2\"><code class=\"plain\">&lt;</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number36 index35 alt1\"><code class=\"plain\">$( \"div\" ).click(function() {</code></div><div class=\"line number37 index36 alt2\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">var i = 1 - $( \"div\" ).index( this );</code></div><div class=\"line number38 index37 alt1\"><code class=\"undefined spaces\">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class=\"plain\">$( this ).effect( \"transfer\", { to: $( \"div\" ).eq( i ) }, 1000 );</code></div><div class=\"line number39 index38 alt2\"><code class=\"plain\">});</code></div><div class=\"line number40 index39 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">script</code><code class=\"plain\">&gt;</code></div><div class=\"line number41 index40 alt2\">&nbsp;</div><div class=\"line number42 index41 alt1\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">body</code><code class=\"plain\">&gt;</code></div><div class=\"line number43 index42 alt2\"><code class=\"plain\">&lt;/</code><code class=\"keyword\">html</code><code class=\"plain\">&gt;</code></div></div></td></tr></tbody></table></div>\n<h4>Demo:</h4>\n<div class=\"demo code-demo\" data-height=\"150\"></div>\n</div></section>\n</div></article>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.de-DE.js",
    "content": "/*\n * Globalize Culture de-DE\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * This file was generated by the Globalize Culture Generator\n * Translation: bugs found in this file need to be fixed in the generator\n */\n\n(function( window, undefined ) {\n\nvar Globalize;\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tGlobalize = require( \"globalize\" );\n} else {\n\t// Global variable\n\tGlobalize = window.Globalize;\n}\n\nGlobalize.addCultureInfo( \"de-DE\", \"default\", {\n\tname: \"de-DE\",\n\tenglishName: \"German (Germany)\",\n\tnativeName: \"Deutsch (Deutschland)\",\n\tlanguage: \"de\",\n\tnumberFormat: {\n\t\t\",\": \".\",\n\t\t\".\": \",\",\n\t\tNaN: \"n. def.\",\n\t\tnegativeInfinity: \"-unendlich\",\n\t\tpositiveInfinity: \"+unendlich\",\n\t\tpercent: {\n\t\t\tpattern: [\"-n%\",\"n%\"],\n\t\t\t\",\": \".\",\n\t\t\t\".\": \",\"\n\t\t},\n\t\tcurrency: {\n\t\t\tpattern: [\"-n $\",\"n $\"],\n\t\t\t\",\": \".\",\n\t\t\t\".\": \",\",\n\t\t\tsymbol: \"€\"\n\t\t}\n\t},\n\tcalendars: {\n\t\tstandard: {\n\t\t\t\"/\": \".\",\n\t\t\tfirstDay: 1,\n\t\t\tdays: {\n\t\t\t\tnames: [\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],\n\t\t\t\tnamesAbbr: [\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],\n\t\t\t\tnamesShort: [\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\",\"\"],\n\t\t\t\tnamesAbbr: [\"Jan\",\"Feb\",\"Mrz\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\",\"\"]\n\t\t\t},\n\t\t\tAM: null,\n\t\t\tPM: null,\n\t\t\teras: [{\"name\":\"n. Chr.\",\"start\":null,\"offset\":0}],\n\t\t\tpatterns: {\n\t\t\t\td: \"dd.MM.yyyy\",\n\t\t\t\tD: \"dddd, d. MMMM yyyy\",\n\t\t\t\tt: \"HH:mm\",\n\t\t\t\tT: \"HH:mm:ss\",\n\t\t\t\tf: \"dddd, d. MMMM yyyy HH:mm\",\n\t\t\t\tF: \"dddd, d. MMMM yyyy HH:mm:ss\",\n\t\t\t\tM: \"dd MMMM\",\n\t\t\t\tY: \"MMMM yyyy\"\n\t\t\t}\n\t\t}\n\t}\n});\n\n}( this ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.culture.ja-JP.js",
    "content": "/*\n * Globalize Culture ja-JP\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * This file was generated by the Globalize Culture Generator\n * Translation: bugs found in this file need to be fixed in the generator\n */\n\n(function( window, undefined ) {\n\nvar Globalize;\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tGlobalize = require( \"globalize\" );\n} else {\n\t// Global variable\n\tGlobalize = window.Globalize;\n}\n\nGlobalize.addCultureInfo( \"ja-JP\", \"default\", {\n\tname: \"ja-JP\",\n\tenglishName: \"Japanese (Japan)\",\n\tnativeName: \"日本語 (日本)\",\n\tlanguage: \"ja\",\n\tnumberFormat: {\n\t\tNaN: \"NaN (非数値)\",\n\t\tnegativeInfinity: \"-∞\",\n\t\tpositiveInfinity: \"+∞\",\n\t\tpercent: {\n\t\t\tpattern: [\"-n%\",\"n%\"]\n\t\t},\n\t\tcurrency: {\n\t\t\tpattern: [\"-$n\",\"$n\"],\n\t\t\tdecimals: 0,\n\t\t\tsymbol: \"¥\"\n\t\t}\n\t},\n\tcalendars: {\n\t\tstandard: {\n\t\t\tdays: {\n\t\t\t\tnames: [\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],\n\t\t\t\tnamesAbbr: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],\n\t\t\t\tnamesShort: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\",\"\"],\n\t\t\t\tnamesAbbr: [\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"\"]\n\t\t\t},\n\t\t\tAM: [\"午前\",\"午前\",\"午前\"],\n\t\t\tPM: [\"午後\",\"午後\",\"午後\"],\n\t\t\teras: [{\"name\":\"西暦\",\"start\":null,\"offset\":0}],\n\t\t\tpatterns: {\n\t\t\t\td: \"yyyy/MM/dd\",\n\t\t\t\tD: \"yyyy'年'M'月'd'日'\",\n\t\t\t\tt: \"H:mm\",\n\t\t\t\tT: \"H:mm:ss\",\n\t\t\t\tf: \"yyyy'年'M'月'd'日' H:mm\",\n\t\t\t\tF: \"yyyy'年'M'月'd'日' H:mm:ss\",\n\t\t\t\tM: \"M'月'd'日'\",\n\t\t\t\tY: \"yyyy'年'M'月'\"\n\t\t\t}\n\t\t},\n\t\tJapanese: {\n\t\t\tname: \"Japanese\",\n\t\t\tdays: {\n\t\t\t\tnames: [\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],\n\t\t\t\tnamesAbbr: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],\n\t\t\t\tnamesShort: [\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tnames: [\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\",\"\"],\n\t\t\t\tnamesAbbr: [\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"\"]\n\t\t\t},\n\t\t\tAM: [\"午前\",\"午前\",\"午前\"],\n\t\t\tPM: [\"午後\",\"午後\",\"午後\"],\n\t\t\teras: [{\"name\":\"平成\",\"start\":null,\"offset\":1867},{\"name\":\"昭和\",\"start\":-1812153600000,\"offset\":1911},{\"name\":\"大正\",\"start\":-1357603200000,\"offset\":1925},{\"name\":\"明治\",\"start\":60022080000,\"offset\":1988}],\n\t\t\ttwoDigitYearMax: 99,\n\t\t\tpatterns: {\n\t\t\t\td: \"gg y/M/d\",\n\t\t\t\tD: \"gg y'年'M'月'd'日'\",\n\t\t\t\tt: \"H:mm\",\n\t\t\t\tT: \"H:mm:ss\",\n\t\t\t\tf: \"gg y'年'M'月'd'日' H:mm\",\n\t\t\t\tF: \"gg y'年'M'月'd'日' H:mm:ss\",\n\t\t\t\tM: \"M'月'd'日'\",\n\t\t\t\tY: \"gg y'年'M'月'\"\n\t\t\t}\n\t\t}\n\t}\n});\n\n}( this ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/globalize.js",
    "content": "/*!\n * Globalize\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n */\n\n(function( window, undefined ) {\n\nvar Globalize,\n\t// private variables\n\tregexHex,\n\tregexInfinity,\n\tregexParseFloat,\n\tregexTrim,\n\t// private JavaScript utility functions\n\tarrayIndexOf,\n\tendsWith,\n\textend,\n\tisArray,\n\tisFunction,\n\tisObject,\n\tstartsWith,\n\ttrim,\n\ttruncate,\n\tzeroPad,\n\t// private Globalization utility functions\n\tappendPreOrPostMatch,\n\texpandFormat,\n\tformatDate,\n\tformatNumber,\n\tgetTokenRegExp,\n\tgetEra,\n\tgetEraYear,\n\tparseExact,\n\tparseNegativePattern;\n\n// Global variable (Globalize) or CommonJS module (globalize)\nGlobalize = function( cultureSelector ) {\n\treturn new Globalize.prototype.init( cultureSelector );\n};\n\nif ( typeof require !== \"undefined\"\n\t&& typeof exports !== \"undefined\"\n\t&& typeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tmodule.exports = Globalize;\n} else {\n\t// Export as global variable\n\twindow.Globalize = Globalize;\n}\n\nGlobalize.cultures = {};\n\nGlobalize.prototype = {\n\tconstructor: Globalize,\n\tinit: function( cultureSelector ) {\n\t\tthis.cultures = Globalize.cultures;\n\t\tthis.cultureSelector = cultureSelector;\n\n\t\treturn this;\n\t}\n};\nGlobalize.prototype.init.prototype = Globalize.prototype;\n\n// 1.\t When defining a culture, all fields are required except the ones stated as optional.\n// 2.\t Each culture should have a \".calendars\" object with at least one calendar named \"standard\"\n//\t\t which serves as the default calendar in use by that culture.\n// 3.\t Each culture should have a \".calendar\" object which is the current calendar being used,\n//\t\t it may be dynamically changed at any time to one of the calendars in \".calendars\".\nGlobalize.cultures[ \"default\" ] = {\n\t// A unique name for the culture in the form <language code>-<country/region code>\n\tname: \"en\",\n\t// the name of the culture in the english language\n\tenglishName: \"English\",\n\t// the name of the culture in its own language\n\tnativeName: \"English\",\n\t// whether the culture uses right-to-left text\n\tisRTL: false,\n\t// \"language\" is used for so-called \"specific\" cultures.\n\t// For example, the culture \"es-CL\" means \"Spanish, in Chili\".\n\t// It represents the Spanish-speaking culture as it is in Chili,\n\t// which might have different formatting rules or even translations\n\t// than Spanish in Spain. A \"neutral\" culture is one that is not\n\t// specific to a region. For example, the culture \"es\" is the generic\n\t// Spanish culture, which may be a more generalized version of the language\n\t// that may or may not be what a specific culture expects.\n\t// For a specific culture like \"es-CL\", the \"language\" field refers to the\n\t// neutral, generic culture information for the language it is using.\n\t// This is not always a simple matter of the string before the dash.\n\t// For example, the \"zh-Hans\" culture is netural (Simplified Chinese).\n\t// And the \"zh-SG\" culture is Simplified Chinese in Singapore, whose lanugage\n\t// field is \"zh-CHS\", not \"zh\".\n\t// This field should be used to navigate from a specific culture to it's\n\t// more general, neutral culture. If a culture is already as general as it\n\t// can get, the language may refer to itself.\n\tlanguage: \"en\",\n\t// numberFormat defines general number formatting rules, like the digits in\n\t// each grouping, the group separator, and how negative numbers are displayed.\n\tnumberFormat: {\n\t\t// [negativePattern]\n\t\t// Note, numberFormat.pattern has no \"positivePattern\" unlike percent and currency,\n\t\t// but is still defined as an array for consistency with them.\n\t\t//   negativePattern: one of \"(n)|-n|- n|n-|n -\"\n\t\tpattern: [ \"-n\" ],\n\t\t// number of decimal places normally shown\n\t\tdecimals: 2,\n\t\t// string that separates number groups, as in 1,000,000\n\t\t\",\": \",\",\n\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\".\": \".\",\n\t\t// array of numbers indicating the size of each number group.\n\t\t// TODO: more detailed description and example\n\t\tgroupSizes: [ 3 ],\n\t\t// symbol used for positive numbers\n\t\t\"+\": \"+\",\n\t\t// symbol used for negative numbers\n\t\t\"-\": \"-\",\n\t\t// symbol used for NaN (Not-A-Number)\n\t\tNaN: \"NaN\",\n\t\t// symbol used for Negative Infinity\n\t\tnegativeInfinity: \"-Infinity\",\n\t\t// symbol used for Positive Infinity\n\t\tpositiveInfinity: \"Infinity\",\n\t\tpercent: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t//   negativePattern: one of \"-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %\"\n\t\t\t//   positivePattern: one of \"n %|n%|%n|% n\"\n\t\t\tpattern: [ \"-n %\", \"n %\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent a percentage\n\t\t\tsymbol: \"%\"\n\t\t},\n\t\tcurrency: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t//   negativePattern: one of \"($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)\"\n\t\t\t//   positivePattern: one of \"$n|n$|$ n|n $\"\n\t\t\tpattern: [ \"($n)\", \"$n\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent currency\n\t\t\tsymbol: \"$\"\n\t\t}\n\t},\n\t// calendars defines all the possible calendars used by this culture.\n\t// There should be at least one defined with name \"standard\", and is the default\n\t// calendar used by the culture.\n\t// A calendar contains information about how dates are formatted, information about\n\t// the calendar's eras, a standard set of the date formats,\n\t// translations for day and month names, and if the calendar is not based on the Gregorian\n\t// calendar, conversion functions to and from the Gregorian calendar.\n\tcalendars: {\n\t\tstandard: {\n\t\t\t// name that identifies the type of calendar this is\n\t\t\tname: \"Gregorian_USEnglish\",\n\t\t\t// separator of parts of a date (e.g. \"/\" in 11/05/1955)\n\t\t\t\"/\": \"/\",\n\t\t\t// separator of parts of a time (e.g. \":\" in 05:44 PM)\n\t\t\t\":\": \":\",\n\t\t\t// the first day of the week (0 = Sunday, 1 = Monday, etc)\n\t\t\tfirstDay: 0,\n\t\t\tdays: {\n\t\t\t\t// full day names\n\t\t\t\tnames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t\t\t\t// abbreviated day names\n\t\t\t\tnamesAbbr: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t\t\t\t// shortest day names\n\t\t\t\tnamesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\t// full month names (13 months for lunar calendards -- 13th month should be \"\" if not lunar)\n\t\t\t\tnames: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\", \"\" ],\n\t\t\t\t// abbreviated month names\n\t\t\t\tnamesAbbr: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"\" ]\n\t\t\t},\n\t\t\t// AM and PM designators in one of these forms:\n\t\t\t// The usual view, and the upper and lower case versions\n\t\t\t//   [ standard, lowercase, uppercase ]\n\t\t\t// The culture does not use AM or PM (likely all standard date formats use 24 hour time)\n\t\t\t//   null\n\t\t\tAM: [ \"AM\", \"am\", \"AM\" ],\n\t\t\tPM: [ \"PM\", \"pm\", \"PM\" ],\n\t\t\teras: [\n\t\t\t\t// eras in reverse chronological order.\n\t\t\t\t// name: the name of the era in this culture (e.g. A.D., C.E.)\n\t\t\t\t// start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era.\n\t\t\t\t// offset: offset in years from gregorian calendar\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"A.D.\",\n\t\t\t\t\t\"start\": null,\n\t\t\t\t\t\"offset\": 0\n\t\t\t\t}\n\t\t\t],\n\t\t\t// when a two digit year is given, it will never be parsed as a four digit\n\t\t\t// year greater than this year (in the appropriate era for the culture)\n\t\t\t// Set it as a full year (e.g. 2029) or use an offset format starting from\n\t\t\t// the current year: \"+19\" would correspond to 2029 if the current year 2010.\n\t\t\ttwoDigitYearMax: 2029,\n\t\t\t// set of predefined date and time patterns used by the culture\n\t\t\t// these represent the format someone in this culture would expect\n\t\t\t// to see given the portions of the date that are shown.\n\t\t\tpatterns: {\n\t\t\t\t// short date pattern\n\t\t\t\td: \"M/d/yyyy\",\n\t\t\t\t// long date pattern\n\t\t\t\tD: \"dddd, MMMM dd, yyyy\",\n\t\t\t\t// short time pattern\n\t\t\t\tt: \"h:mm tt\",\n\t\t\t\t// long time pattern\n\t\t\t\tT: \"h:mm:ss tt\",\n\t\t\t\t// long date, short time pattern\n\t\t\t\tf: \"dddd, MMMM dd, yyyy h:mm tt\",\n\t\t\t\t// long date, long time pattern\n\t\t\t\tF: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n\t\t\t\t// month/day pattern\n\t\t\t\tM: \"MMMM dd\",\n\t\t\t\t// month/year pattern\n\t\t\t\tY: \"yyyy MMMM\",\n\t\t\t\t// S is a sortable format that does not vary by culture\n\t\t\t\tS: \"yyyy\\u0027-\\u0027MM\\u0027-\\u0027dd\\u0027T\\u0027HH\\u0027:\\u0027mm\\u0027:\\u0027ss\"\n\t\t\t}\n\t\t\t// optional fields for each calendar:\n\t\t\t/*\n\t\t\tmonthsGenitive:\n\t\t\t\tSame as months but used when the day preceeds the month.\n\t\t\t\tOmit if the culture has no genitive distinction in month names.\n\t\t\t\tFor an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx\n\t\t\tconvert:\n\t\t\t\tAllows for the support of non-gregorian based calendars. This convert object is used to\n\t\t\t\tto convert a date to and from a gregorian calendar date to handle parsing and formatting.\n\t\t\t\tThe two functions:\n\t\t\t\t\tfromGregorian( date )\n\t\t\t\t\t\tGiven the date as a parameter, return an array with parts [ year, month, day ]\n\t\t\t\t\t\tcorresponding to the non-gregorian based year, month, and day for the calendar.\n\t\t\t\t\ttoGregorian( year, month, day )\n\t\t\t\t\t\tGiven the non-gregorian year, month, and day, return a new Date() object\n\t\t\t\t\t\tset to the corresponding date in the gregorian calendar.\n\t\t\t*/\n\t\t}\n\t},\n\t// For localized strings\n\tmessages: {}\n};\n\nGlobalize.cultures[ \"default\" ].calendar = Globalize.cultures[ \"default\" ].calendars.standard;\n\nGlobalize.cultures[ \"en\" ] = Globalize.cultures[ \"default\" ];\n\nGlobalize.cultureSelector = \"en\";\n\n//\n// private variables\n//\n\nregexHex = /^0x[a-f0-9]+$/i;\nregexInfinity = /^[+-]?infinity$/i;\nregexParseFloat = /^[+-]?\\d*\\.?\\d*(e[+-]?\\d+)?$/;\nregexTrim = /^\\s+|\\s+$/g;\n\n//\n// private JavaScript utility functions\n//\n\narrayIndexOf = function( array, item ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( item );\n\t}\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[i] === item ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nendsWith = function( value, pattern ) {\n\treturn value.substr( value.length - pattern.length ) === pattern;\n};\n\nextend = function( deep ) {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && isObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nisArray = Array.isArray || function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Array]\";\n};\n\nisFunction = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Function]\"\n}\n\nisObject = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Object]\";\n};\n\nstartsWith = function( value, pattern ) {\n\treturn value.indexOf( pattern ) === 0;\n};\n\ntrim = function( value ) {\n\treturn ( value + \"\" ).replace( regexTrim, \"\" );\n};\n\ntruncate = function( value ) {\n\treturn value | 0;\n};\n\nzeroPad = function( str, count, left ) {\n\tvar l;\n\tfor ( l = str.length; l < count; l += 1 ) {\n\t\tstr = ( left ? (\"0\" + str) : (str + \"0\") );\n\t}\n\treturn str;\n};\n\n//\n// private Globalization utility functions\n//\n\nappendPreOrPostMatch = function( preMatch, strings ) {\n\t// appends pre- and post- token match strings while removing escaped characters.\n\t// Returns a single quote count which is used to determine if the token occurs\n\t// in a string literal.\n\tvar quoteCount = 0,\n\t\tescaped = false;\n\tfor ( var i = 0, il = preMatch.length; i < il; i++ ) {\n\t\tvar c = preMatch.charAt( i );\n\t\tswitch ( c ) {\n\t\t\tcase \"\\'\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\'\" );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tquoteCount++;\n\t\t\t\t}\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t\tcase \"\\\\\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\\\\" );\n\t\t\t\t}\n\t\t\t\tescaped = !escaped;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstrings.push( c );\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn quoteCount;\n};\n\nexpandFormat = function( cal, format ) {\n\t// expands unspecified or single character date formats into the full pattern.\n\tformat = format || \"F\";\n\tvar pattern,\n\t\tpatterns = cal.patterns,\n\t\tlen = format.length;\n\tif ( len === 1 ) {\n\t\tpattern = patterns[ format ];\n\t\tif ( !pattern ) {\n\t\t\tthrow \"Invalid date format string \\'\" + format + \"\\'.\";\n\t\t}\n\t\tformat = pattern;\n\t}\n\telse if ( len === 2 && format.charAt(0) === \"%\" ) {\n\t\t// %X escape format -- intended as a custom format string that is only one character, not a built-in format.\n\t\tformat = format.charAt( 1 );\n\t}\n\treturn format;\n};\n\nformatDate = function( value, format, culture ) {\n\tvar cal = culture.calendar,\n\t\tconvert = cal.convert;\n\n\tif ( !format || !format.length || format === \"i\" ) {\n\t\tvar ret;\n\t\tif ( culture && culture.name.length ) {\n\t\t\tif ( convert ) {\n\t\t\t\t// non-gregorian calendar, so we cannot use built-in toLocaleString()\n\t\t\t\tret = formatDate( value, cal.patterns.F, culture );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar eraDate = new Date( value.getTime() ),\n\t\t\t\t\tera = getEra( value, cal.eras );\n\t\t\t\teraDate.setFullYear( getEraYear(value, cal, era) );\n\t\t\t\tret = eraDate.toLocaleString();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = value.toString();\n\t\t}\n\t\treturn ret;\n\t}\n\n\tvar eras = cal.eras,\n\t\tsortable = format === \"s\";\n\tformat = expandFormat( cal, format );\n\n\t// Start with an empty string\n\tret = [];\n\tvar hour,\n\t\tzeros = [ \"0\", \"00\", \"000\" ],\n\t\tfoundDay,\n\t\tcheckedDay,\n\t\tdayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g,\n\t\tquoteCount = 0,\n\t\ttokenRegExp = getTokenRegExp(),\n\t\tconverted;\n\n\tfunction padZeros( num, c ) {\n\t\tvar r, s = num + \"\";\n\t\tif ( c > 1 && s.length < c ) {\n\t\t\tr = ( zeros[c - 2] + s);\n\t\t\treturn r.substr( r.length - c, c );\n\t\t}\n\t\telse {\n\t\t\tr = s;\n\t\t}\n\t\treturn r;\n\t}\n\n\tfunction hasDay() {\n\t\tif ( foundDay || checkedDay ) {\n\t\t\treturn foundDay;\n\t\t}\n\t\tfoundDay = dayPartRegExp.test( format );\n\t\tcheckedDay = true;\n\t\treturn foundDay;\n\t}\n\n\tfunction getPart( date, part ) {\n\t\tif ( converted ) {\n\t\t\treturn converted[ part ];\n\t\t}\n\t\tswitch ( part ) {\n\t\t\tcase 0: return date.getFullYear();\n\t\t\tcase 1: return date.getMonth();\n\t\t\tcase 2: return date.getDate();\n\t\t}\n\t}\n\n\tif ( !sortable && convert ) {\n\t\tconverted = convert.fromGregorian( value );\n\t}\n\n\tfor ( ; ; ) {\n\t\t// Save the current index\n\t\tvar index = tokenRegExp.lastIndex,\n\t\t\t// Look for the next pattern\n\t\t\tar = tokenRegExp.exec( format );\n\n\t\t// Append the text before the pattern (or the end of the string if not found)\n\t\tvar preMatch = format.slice( index, ar ? ar.index : format.length );\n\t\tquoteCount += appendPreOrPostMatch( preMatch, ret );\n\n\t\tif ( !ar ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// do not replace any matches that occur inside a string literal.\n\t\tif ( quoteCount % 2 ) {\n\t\t\tret.push( ar[0] );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar current = ar[ 0 ],\n\t\t\tclength = current.length;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"ddd\":\n\t\t\t\t//Day of the week, as a three-letter abbreviation\n\t\t\tcase \"dddd\":\n\t\t\t\t// Day of the week, using the full name\n\t\t\t\tvar names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names;\n\t\t\t\tret.push( names[value.getDay()] );\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\t// Day of month, without leading zero for single-digit days\n\t\t\tcase \"dd\":\n\t\t\t\t// Day of month, with leading zero for single-digit days\n\t\t\t\tfoundDay = true;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 2), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"MMM\":\n\t\t\t\t// Month, as a three-letter abbreviation\n\t\t\tcase \"MMMM\":\n\t\t\t\t// Month, using the full name\n\t\t\t\tvar part = getPart( value, 1 );\n\t\t\t\tret.push(\n\t\t\t\t\t( cal.monthsGenitive && hasDay() )\n\t\t\t\t\t?\n\t\t\t\t\tcal.monthsGenitive[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ]\n\t\t\t\t\t:\n\t\t\t\t\tcal.months[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ]\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"M\":\n\t\t\t\t// Month, as digits, with no leading zero for single-digit months\n\t\t\tcase \"MM\":\n\t\t\t\t// Month, as digits, with leading zero for single-digit months\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 1) + 1, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\t// Year, as two digits, but with no leading zero for years less than 10\n\t\t\tcase \"yy\":\n\t\t\t\t// Year, as two digits, with leading zero for years less than 10\n\t\t\tcase \"yyyy\":\n\t\t\t\t// Year represented by four full digits\n\t\t\t\tpart = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable );\n\t\t\t\tif ( clength < 4 ) {\n\t\t\t\t\tpart = part % 100;\n\t\t\t\t}\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( part, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"h\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 12-hour clock\n\t\t\tcase \"hh\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 12-hour clock\n\t\t\t\thour = value.getHours() % 12;\n\t\t\t\tif ( hour === 0 ) hour = 12;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( hour, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"H\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 24-hour clock\n\t\t\tcase \"HH\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 24-hour clock\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getHours(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"m\":\n\t\t\t\t// Minutes with no leading zero for single-digit minutes\n\t\t\tcase \"mm\":\n\t\t\t\t// Minutes with leading zero for single-digit minutes\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMinutes(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"s\":\n\t\t\t\t// Seconds with no leading zero for single-digit seconds\n\t\t\tcase \"ss\":\n\t\t\t\t// Seconds with leading zero for single-digit seconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getSeconds(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"t\":\n\t\t\t\t// One character am/pm indicator (\"a\" or \"p\")\n\t\t\tcase \"tt\":\n\t\t\t\t// Multicharacter am/pm indicator\n\t\t\t\tpart = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : \" \" ) : ( cal.PM ? cal.PM[0] : \" \" );\n\t\t\t\tret.push( clength === 1 ? part.charAt(0) : part );\n\t\t\t\tbreak;\n\t\t\tcase \"f\":\n\t\t\t\t// Deciseconds\n\t\t\tcase \"ff\":\n\t\t\t\t// Centiseconds\n\t\t\tcase \"fff\":\n\t\t\t\t// Milliseconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMilliseconds(), 3 ).substr( 0, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"z\":\n\t\t\t\t// Time zone offset, no leading zero\n\t\t\tcase \"zz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"zzz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), 2 )\n\t\t\t\t\t// Hard coded \":\" separator, rather than using cal.TimeSeparator\n\t\t\t\t\t// Repeated here for consistency, plus \":\" was already assumed in date parsing.\n\t\t\t\t\t+ \":\" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"g\":\n\t\t\tcase \"gg\":\n\t\t\t\tif ( cal.eras ) {\n\t\t\t\t\tret.push(\n\t\t\t\t\t\tcal.eras[ getEra(value, eras) ].name\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\tcase \"/\":\n\t\t\tret.push( cal[\"/\"] );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow \"Invalid date format pattern \\'\" + current + \"\\'.\";\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn ret.join( \"\" );\n};\n\n// formatNumber\n(function() {\n\tvar expandNumber;\n\n\texpandNumber = function( number, precision, formatInfo ) {\n\t\tvar groupSizes = formatInfo.groupSizes,\n\t\t\tcurSize = groupSizes[ 0 ],\n\t\t\tcurGroupIndex = 1,\n\t\t\tfactor = Math.pow( 10, precision ),\n\t\t\trounded = Math.round( number * factor ) / factor;\n\n\t\tif ( !isFinite(rounded) ) {\n\t\t\trounded = number;\n\t\t}\n\t\tnumber = rounded;\n\n\t\tvar numberString = number+\"\",\n\t\t\tright = \"\",\n\t\t\tsplit = numberString.split( /e/i ),\n\t\t\texponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;\n\t\tnumberString = split[ 0 ];\n\t\tsplit = numberString.split( \".\" );\n\t\tnumberString = split[ 0 ];\n\t\tright = split.length > 1 ? split[ 1 ] : \"\";\n\n\t\tvar l;\n\t\tif ( exponent > 0 ) {\n\t\t\tright = zeroPad( right, exponent, false );\n\t\t\tnumberString += right.slice( 0, exponent );\n\t\t\tright = right.substr( exponent );\n\t\t}\n\t\telse if ( exponent < 0 ) {\n\t\t\texponent = -exponent;\n\t\t\tnumberString = zeroPad( numberString, exponent + 1 );\n\t\t\tright = numberString.slice( -exponent, numberString.length ) + right;\n\t\t\tnumberString = numberString.slice( 0, -exponent );\n\t\t}\n\n\t\tif ( precision > 0 ) {\n\t\t\tright = formatInfo[ \".\" ] +\n\t\t\t\t( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) );\n\t\t}\n\t\telse {\n\t\t\tright = \"\";\n\t\t}\n\n\t\tvar stringIndex = numberString.length - 1,\n\t\t\tsep = formatInfo[ \",\" ],\n\t\t\tret = \"\";\n\n\t\twhile ( stringIndex >= 0 ) {\n\t\t\tif ( curSize === 0 || curSize > stringIndex ) {\n\t\t\t\treturn numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );\n\t\t\t}\n\t\t\tret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : \"\" );\n\n\t\t\tstringIndex -= curSize;\n\n\t\t\tif ( curGroupIndex < groupSizes.length ) {\n\t\t\t\tcurSize = groupSizes[ curGroupIndex ];\n\t\t\t\tcurGroupIndex++;\n\t\t\t}\n\t\t}\n\n\t\treturn numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;\n\t};\n\n\tformatNumber = function( value, format, culture ) {\n\t\tif ( !isFinite(value) ) {\n\t\t\tif ( value === Infinity ) {\n\t\t\t\treturn culture.numberFormat.positiveInfinity;\n\t\t\t}\n\t\t\tif ( value === -Infinity ) {\n\t\t\t\treturn culture.numberFormat.negativeInfinity;\n\t\t\t}\n\t\t\treturn culture.numberFormat.NaN;\n\t\t}\n\t\tif ( !format || format === \"i\" ) {\n\t\t\treturn culture.name.length ? value.toLocaleString() : value.toString();\n\t\t}\n\t\tformat = format || \"D\";\n\n\t\tvar nf = culture.numberFormat,\n\t\t\tnumber = Math.abs( value ),\n\t\t\tprecision = -1,\n\t\t\tpattern;\n\t\tif ( format.length > 1 ) precision = parseInt( format.slice(1), 10 );\n\n\t\tvar current = format.charAt( 0 ).toUpperCase(),\n\t\t\tformatInfo;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"D\":\n\t\t\t\tpattern = \"n\";\n\t\t\t\tnumber = truncate( number );\n\t\t\t\tif ( precision !== -1 ) {\n\t\t\t\t\tnumber = zeroPad( \"\" + number, precision, true );\n\t\t\t\t}\n\t\t\t\tif ( value < 0 ) number = \"-\" + number;\n\t\t\t\tbreak;\n\t\t\tcase \"N\":\n\t\t\t\tformatInfo = nf;\n\t\t\t\t// fall through\n\t\t\tcase \"C\":\n\t\t\t\tformatInfo = formatInfo || nf.currency;\n\t\t\t\t// fall through\n\t\t\tcase \"P\":\n\t\t\t\tformatInfo = formatInfo || nf.percent;\n\t\t\t\tpattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || \"n\" );\n\t\t\t\tif ( precision === -1 ) precision = formatInfo.decimals;\n\t\t\t\tnumber = expandNumber( number * (current === \"P\" ? 100 : 1), precision, formatInfo );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Bad number format specifier: \" + current;\n\t\t}\n\n\t\tvar patternParts = /n|\\$|-|%/g,\n\t\t\tret = \"\";\n\t\tfor ( ; ; ) {\n\t\t\tvar index = patternParts.lastIndex,\n\t\t\t\tar = patternParts.exec( pattern );\n\n\t\t\tret += pattern.slice( index, ar ? ar.index : pattern.length );\n\n\t\t\tif ( !ar ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch ( ar[0] ) {\n\t\t\t\tcase \"n\":\n\t\t\t\t\tret += number;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"$\":\n\t\t\t\t\tret += nf.currency.symbol;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"-\":\n\t\t\t\t\t// don't make 0 negative\n\t\t\t\t\tif ( /[1-9]/.test(number) ) {\n\t\t\t\t\t\tret += nf[ \"-\" ];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%\":\n\t\t\t\t\tret += nf.percent.symbol;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n\n}());\n\ngetTokenRegExp = function() {\n\t// regular expression for matching date and time tokens in format strings.\n\treturn /\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g;\n};\n\ngetEra = function( date, eras ) {\n\tif ( !eras ) return 0;\n\tvar start, ticks = date.getTime();\n\tfor ( var i = 0, l = eras.length; i < l; i++ ) {\n\t\tstart = eras[ i ].start;\n\t\tif ( start === null || ticks >= start ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn 0;\n};\n\ngetEraYear = function( date, cal, era, sortable ) {\n\tvar year = date.getFullYear();\n\tif ( !sortable && cal.eras ) {\n\t\t// convert normal gregorian year to era-shifted gregorian\n\t\t// year by subtracting the era offset\n\t\tyear -= cal.eras[ era ].offset;\n\t}\n\treturn year;\n};\n\n// parseExact\n(function() {\n\tvar expandYear,\n\t\tgetDayIndex,\n\t\tgetMonthIndex,\n\t\tgetParseRegExp,\n\t\toutOfRange,\n\t\ttoUpper,\n\t\ttoUpperArray;\n\n\texpandYear = function( cal, year ) {\n\t\t// expands 2-digit year into 4 digits.\n\t\tvar now = new Date(),\n\t\t\tera = getEra( now );\n\t\tif ( year < 100 ) {\n\t\t\tvar twoDigitYearMax = cal.twoDigitYearMax;\n\t\t\ttwoDigitYearMax = typeof twoDigitYearMax === \"string\" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax;\n\t\t\tvar curr = getEraYear( now, cal, era );\n\t\t\tyear += curr - ( curr % 100 );\n\t\t\tif ( year > twoDigitYearMax ) {\n\t\t\t\tyear -= 100;\n\t\t\t}\n\t\t}\n\t\treturn year;\n\t};\n\n\tgetDayIndex = function\t( cal, value, abbr ) {\n\t\tvar ret,\n\t\t\tdays = cal.days,\n\t\t\tupperDays = cal._upperDays;\n\t\tif ( !upperDays ) {\n\t\t\tcal._upperDays = upperDays = [\n\t\t\t\ttoUpperArray( days.names ),\n\t\t\t\ttoUpperArray( days.namesAbbr ),\n\t\t\t\ttoUpperArray( days.namesShort )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tif ( abbr ) {\n\t\t\tret = arrayIndexOf( upperDays[1], value );\n\t\t\tif ( ret === -1 ) {\n\t\t\t\tret = arrayIndexOf( upperDays[2], value );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = arrayIndexOf( upperDays[0], value );\n\t\t}\n\t\treturn ret;\n\t};\n\n\tgetMonthIndex = function( cal, value, abbr ) {\n\t\tvar months = cal.months,\n\t\t\tmonthsGen = cal.monthsGenitive || cal.months,\n\t\t\tupperMonths = cal._upperMonths,\n\t\t\tupperMonthsGen = cal._upperMonthsGen;\n\t\tif ( !upperMonths ) {\n\t\t\tcal._upperMonths = upperMonths = [\n\t\t\t\ttoUpperArray( months.names ),\n\t\t\t\ttoUpperArray( months.namesAbbr )\n\t\t\t];\n\t\t\tcal._upperMonthsGen = upperMonthsGen = [\n\t\t\t\ttoUpperArray( monthsGen.names ),\n\t\t\t\ttoUpperArray( monthsGen.namesAbbr )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tvar i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value );\n\t\tif ( i < 0 ) {\n\t\t\ti = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value );\n\t\t}\n\t\treturn i;\n\t};\n\n\tgetParseRegExp = function( cal, format ) {\n\t\t// converts a format string into a regular expression with groups that\n\t\t// can be used to extract date fields from a date string.\n\t\t// check for a cached parse regex.\n\t\tvar re = cal._parseRegExp;\n\t\tif ( !re ) {\n\t\t\tcal._parseRegExp = re = {};\n\t\t}\n\t\telse {\n\t\t\tvar reFormat = re[ format ];\n\t\t\tif ( reFormat ) {\n\t\t\t\treturn reFormat;\n\t\t\t}\n\t\t}\n\n\t\t// expand single digit formats, then escape regular expression characters.\n\t\tvar expFormat = expandFormat( cal, format ).replace( /([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g, \"\\\\\\\\$1\" ),\n\t\t\tregexp = [ \"^\" ],\n\t\t\tgroups = [],\n\t\t\tindex = 0,\n\t\t\tquoteCount = 0,\n\t\t\ttokenRegExp = getTokenRegExp(),\n\t\t\tmatch;\n\n\t\t// iterate through each date token found.\n\t\twhile ( (match = tokenRegExp.exec(expFormat)) !== null ) {\n\t\t\tvar preMatch = expFormat.slice( index, match.index );\n\t\t\tindex = tokenRegExp.lastIndex;\n\n\t\t\t// don't replace any matches that occur inside a string literal.\n\t\t\tquoteCount += appendPreOrPostMatch( preMatch, regexp );\n\t\t\tif ( quoteCount % 2 ) {\n\t\t\t\tregexp.push( match[0] );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// add a regex group for the token.\n\t\t\tvar m = match[ 0 ],\n\t\t\t\tlen = m.length,\n\t\t\t\tadd;\n\t\t\tswitch ( m ) {\n\t\t\t\tcase \"dddd\": case \"ddd\":\n\t\t\t\tcase \"MMMM\": case \"MMM\":\n\t\t\t\tcase \"gg\": case \"g\":\n\t\t\t\t\tadd = \"(\\\\D+)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\tadd = \"(\\\\D*)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"yyyy\":\n\t\t\t\tcase \"fff\":\n\t\t\t\tcase \"ff\":\n\t\t\t\tcase \"f\":\n\t\t\t\t\tadd = \"(\\\\d{\" + len + \"})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\tcase \"MM\": case \"M\":\n\t\t\t\tcase \"yy\": case \"y\":\n\t\t\t\tcase \"HH\": case \"H\":\n\t\t\t\tcase \"hh\": case \"h\":\n\t\t\t\tcase \"mm\": case \"m\":\n\t\t\t\tcase \"ss\": case \"s\":\n\t\t\t\t\tadd = \"(\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zzz\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?:\\\\d{2})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zz\": case \"z\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\":\n\t\t\t\t\tadd = \"(\\\\\" + cal[ \"/\" ] + \")\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Invalid date format pattern \\'\" + m + \"\\'.\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( add ) {\n\t\t\t\tregexp.push( add );\n\t\t\t}\n\t\t\tgroups.push( match[0] );\n\t\t}\n\t\tappendPreOrPostMatch( expFormat.slice(index), regexp );\n\t\tregexp.push( \"$\" );\n\n\t\t// allow whitespace to differ when matching formats.\n\t\tvar regexpStr = regexp.join( \"\" ).replace( /\\s+/g, \"\\\\s+\" ),\n\t\t\tparseRegExp = { \"regExp\": regexpStr, \"groups\": groups };\n\n\t\t// cache the regex for this format.\n\t\treturn re[ format ] = parseRegExp;\n\t};\n\n\toutOfRange = function( value, low, high ) {\n\t\treturn value < low || value > high;\n\t};\n\n\ttoUpper = function( value ) {\n\t\t// \"he-IL\" has non-breaking space in weekday names.\n\t\treturn value.split( \"\\u00A0\" ).join( \" \" ).toUpperCase();\n\t};\n\n\ttoUpperArray = function( arr ) {\n\t\tvar results = [];\n\t\tfor ( var i = 0, l = arr.length; i < l; i++ ) {\n\t\t\tresults[ i ] = toUpper( arr[i] );\n\t\t}\n\t\treturn results;\n\t};\n\n\tparseExact = function( value, format, culture ) {\n\t\t// try to parse the date string by matching against the format string\n\t\t// while using the specified culture for date field names.\n\t\tvalue = trim( value );\n\t\tvar cal = culture.calendar,\n\t\t\t// convert date formats into regular expressions with groupings.\n\t\t\t// use the regexp to determine the input format and extract the date fields.\n\t\t\tparseInfo = getParseRegExp( cal, format ),\n\t\t\tmatch = new RegExp( parseInfo.regExp ).exec( value );\n\t\tif ( match === null ) {\n\t\t\treturn null;\n\t\t}\n\t\t// found a date format that matches the input.\n\t\tvar groups = parseInfo.groups,\n\t\t\tera = null, year = null, month = null, date = null, weekDay = null,\n\t\t\thour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,\n\t\t\tpmHour = false;\n\t\t// iterate the format groups to extract and set the date fields.\n\t\tfor ( var j = 0, jl = groups.length; j < jl; j++ ) {\n\t\t\tvar matchGroup = match[ j + 1 ];\n\t\t\tif ( matchGroup ) {\n\t\t\t\tvar current = groups[ j ],\n\t\t\t\t\tclength = current.length,\n\t\t\t\t\tmatchInt = parseInt( matchGroup, 10 );\n\t\t\t\tswitch ( current ) {\n\t\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\t\t\t// Day of month.\n\t\t\t\t\t\tdate = matchInt;\n\t\t\t\t\t\t// check that date is generally in valid range, also checking overflow below.\n\t\t\t\t\t\tif ( outOfRange(date, 1, 31) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MMM\": case \"MMMM\":\n\t\t\t\t\t\tmonth = getMonthIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\": case \"MM\":\n\t\t\t\t\t\t// Month.\n\t\t\t\t\t\tmonth = matchInt - 1;\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\": case \"yy\":\n\t\t\t\t\tcase \"yyyy\":\n\t\t\t\t\t\tyear = clength < 4 ? expandYear( cal, matchInt ) : matchInt;\n\t\t\t\t\t\tif ( outOfRange(year, 0, 9999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"h\": case \"hh\":\n\t\t\t\t\t\t// Hours (12-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( hour === 12 ) hour = 0;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"H\": case \"HH\":\n\t\t\t\t\t\t// Hours (24-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 23) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\": case \"mm\":\n\t\t\t\t\t\t// Minutes.\n\t\t\t\t\t\tmin = matchInt;\n\t\t\t\t\t\tif ( outOfRange(min, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t// Seconds.\n\t\t\t\t\t\tsec = matchInt;\n\t\t\t\t\t\tif ( outOfRange(sec, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\t\t// AM/PM designator.\n\t\t\t\t\t\t// see if it is standard, upper, or lower case PM. If not, ensure it is at least one of\n\t\t\t\t\t\t// the AM tokens. If not, fail the parse for this format.\n\t\t\t\t\t\tpmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!pmHour && (\n\t\t\t\t\t\t\t\t!cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t// Deciseconds.\n\t\t\t\t\tcase \"ff\":\n\t\t\t\t\t\t// Centiseconds.\n\t\t\t\t\tcase \"fff\":\n\t\t\t\t\t\t// Milliseconds.\n\t\t\t\t\t\tmsec = matchInt * Math.pow( 10, 3 - clength );\n\t\t\t\t\t\tif ( outOfRange(msec, 0, 999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\tcase \"dddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\t\tweekDay = getDayIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(weekDay, 0, 6) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"zzz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours:min.\n\t\t\t\t\t\tvar offsets = matchGroup.split( /:/ );\n\t\t\t\t\t\tif ( offsets.length !== 2 ) return null;\n\t\t\t\t\t\thourOffset = parseInt( offsets[0], 10 );\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\tvar minOffset = parseInt( offsets[1], 10 );\n\t\t\t\t\t\tif ( outOfRange(minOffset, 0, 59) ) return null;\n\t\t\t\t\t\ttzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, \"-\") ? -minOffset : minOffset );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"z\": case \"zz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours.\n\t\t\t\t\t\thourOffset = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\ttzMinOffset = hourOffset * 60;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"g\": case \"gg\":\n\t\t\t\t\t\tvar eraName = matchGroup;\n\t\t\t\t\t\tif ( !eraName || !cal.eras ) return null;\n\t\t\t\t\t\teraName = trim( eraName.toLowerCase() );\n\t\t\t\t\t\tfor ( var i = 0, l = cal.eras.length; i < l; i++ ) {\n\t\t\t\t\t\t\tif ( eraName === cal.eras[i].name.toLowerCase() ) {\n\t\t\t\t\t\t\t\tera = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// could not find an era with that name\n\t\t\t\t\t\tif ( era === null ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar result = new Date(), defaultYear, convert = cal.convert;\n\t\tdefaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear();\n\t\tif ( year === null ) {\n\t\t\tyear = defaultYear;\n\t\t}\n\t\telse if ( cal.eras ) {\n\t\t\t// year must be shifted to normal gregorian year\n\t\t\t// but not if year was not specified, its already normal gregorian\n\t\t\t// per the main if clause above.\n\t\t\tyear += cal.eras[( era || 0 )].offset;\n\t\t}\n\t\t// set default day and month to 1 and January, so if unspecified, these are the defaults\n\t\t// instead of the current day/month.\n\t\tif ( month === null ) {\n\t\t\tmonth = 0;\n\t\t}\n\t\tif ( date === null ) {\n\t\t\tdate = 1;\n\t\t}\n\t\t// now have year, month, and date, but in the culture's calendar.\n\t\t// convert to gregorian if necessary\n\t\tif ( convert ) {\n\t\t\tresult = convert.toGregorian( year, month, date );\n\t\t\t// conversion failed, must be an invalid match\n\t\t\tif ( result === null ) return null;\n\t\t}\n\t\telse {\n\t\t\t// have to set year, month and date together to avoid overflow based on current date.\n\t\t\tresult.setFullYear( year, month, date );\n\t\t\t// check to see if date overflowed for specified month (only checked 1-31 above).\n\t\t\tif ( result.getDate() !== date ) return null;\n\t\t\t// invalid day of week.\n\t\t\tif ( weekDay !== null && result.getDay() !== weekDay ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t// if pm designator token was found make sure the hours fit the 24-hour clock.\n\t\tif ( pmHour && hour < 12 ) {\n\t\t\thour += 12;\n\t\t}\n\t\tresult.setHours( hour, min, sec, msec );\n\t\tif ( tzMinOffset !== null ) {\n\t\t\t// adjust timezone to utc before applying local offset.\n\t\t\tvar adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() );\n\t\t\t// Safari limits hours and minutes to the range of -127 to 127.\t We need to use setHours\n\t\t\t// to ensure both these fields will not exceed this range.\tadjustedMin will range\n\t\t\t// somewhere between -1440 and 1500, so we only need to split this into hours.\n\t\t\tresult.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 );\n\t\t}\n\t\treturn result;\n\t};\n}());\n\nparseNegativePattern = function( value, nf, negativePattern ) {\n\tvar neg = nf[ \"-\" ],\n\t\tpos = nf[ \"+\" ],\n\t\tret;\n\tswitch ( negativePattern ) {\n\t\tcase \"n -\":\n\t\t\tneg = \" \" + neg;\n\t\t\tpos = \" \" + pos;\n\t\t\t// fall through\n\t\tcase \"n-\":\n\t\t\tif ( endsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(0, value.length - neg.length) ];\n\t\t\t}\n\t\t\telse if ( endsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(0, value.length - pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"- n\":\n\t\t\tneg += \" \";\n\t\t\tpos += \" \";\n\t\t\t// fall through\n\t\tcase \"-n\":\n\t\t\tif ( startsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(neg.length) ];\n\t\t\t}\n\t\t\telse if ( startsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"(n)\":\n\t\t\tif ( startsWith(value, \"(\") && endsWith(value, \")\") ) {\n\t\t\t\tret = [ \"-\", value.substr(1, value.length - 2) ];\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn ret || [ \"\", value ];\n};\n\n//\n// public instance functions\n//\n\nGlobalize.prototype.findClosestCulture = function( cultureSelector ) {\n\treturn Globalize.findClosestCulture.call( this, cultureSelector );\n};\n\nGlobalize.prototype.format = function( value, format, cultureSelector ) {\n\treturn Globalize.format.call( this, value, format, cultureSelector );\n};\n\nGlobalize.prototype.localize = function( key, cultureSelector ) {\n\treturn Globalize.localize.call( this, key, cultureSelector );\n};\n\nGlobalize.prototype.parseInt = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseInt.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.parseFloat = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseFloat.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.culture = function( cultureSelector ) {\n\treturn Globalize.culture.call( this, cultureSelector );\n};\n\n//\n// public singleton functions\n//\n\nGlobalize.addCultureInfo = function( cultureName, baseCultureName, info ) {\n\n\tvar base = {},\n\t\tisNew = false;\n\n\tif ( typeof cultureName !== \"string\" ) {\n\t\t// cultureName argument is optional string. If not specified, assume info is first\n\t\t// and only argument. Specified info deep-extends current culture.\n\t\tinfo = cultureName;\n\t\tcultureName = this.culture().name;\n\t\tbase = this.cultures[ cultureName ];\n\t} else if ( typeof baseCultureName !== \"string\" ) {\n\t\t// baseCultureName argument is optional string. If not specified, assume info is second\n\t\t// argument. Specified info deep-extends specified culture.\n\t\t// If specified culture does not exist, create by deep-extending default\n\t\tinfo = baseCultureName;\n\t\tisNew = ( this.cultures[ cultureName ] == null );\n\t\tbase = this.cultures[ cultureName ] || this.cultures[ \"default\" ];\n\t} else {\n\t\t// cultureName and baseCultureName specified. Assume a new culture is being created\n\t\t// by deep-extending an specified base culture\n\t\tisNew = true;\n\t\tbase = this.cultures[ baseCultureName ];\n\t}\n\n\tthis.cultures[ cultureName ] = extend(true, {},\n\t\tbase,\n\t\tinfo\n\t);\n\t// Make the standard calendar the current culture if it's a new culture\n\tif ( isNew ) {\n\t\tthis.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard;\n\t}\n};\n\nGlobalize.findClosestCulture = function( name ) {\n\tvar match;\n\tif ( !name ) {\n\t\treturn this.cultures[ this.cultureSelector ] || this.cultures[ \"default\" ];\n\t}\n\tif ( typeof name === \"string\" ) {\n\t\tname = name.split( \",\" );\n\t}\n\tif ( isArray(name) ) {\n\t\tvar lang,\n\t\t\tcultures = this.cultures,\n\t\t\tlist = name,\n\t\t\ti, l = list.length,\n\t\t\tprioritized = [];\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tname = trim( list[i] );\n\t\t\tvar pri, parts = name.split( \";\" );\n\t\t\tlang = trim( parts[0] );\n\t\t\tif ( parts.length === 1 ) {\n\t\t\t\tpri = 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tname = trim( parts[1] );\n\t\t\t\tif ( name.indexOf(\"q=\") === 0 ) {\n\t\t\t\t\tname = name.substr( 2 );\n\t\t\t\t\tpri = parseFloat( name );\n\t\t\t\t\tpri = isNaN( pri ) ? 0 : pri;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpri = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprioritized.push({ lang: lang, pri: pri });\n\t\t}\n\t\tprioritized.sort(function( a, b ) {\n\t\t\treturn a.pri < b.pri ? 1 : -1;\n\t\t});\n\n\t\t// exact match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tmatch = cultures[ lang ];\n\t\t\tif ( match ) {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t}\n\n\t\t// neutral language match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tdo {\n\t\t\t\tvar index = lang.lastIndexOf( \"-\" );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// strip off the last part. e.g. en-US => en\n\t\t\t\tlang = lang.substr( 0, index );\n\t\t\t\tmatch = cultures[ lang ];\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( 1 );\n\t\t}\n\n\t\t// last resort: match first culture using that language\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tfor ( var cultureKey in cultures ) {\n\t\t\t\tvar culture = cultures[ cultureKey ];\n\t\t\t\tif ( culture.language == lang ) {\n\t\t\t\t\treturn culture;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if ( typeof name === \"object\" ) {\n\t\treturn name;\n\t}\n\treturn match || null;\n};\n\nGlobalize.format = function( value, format, cultureSelector ) {\n\tculture = this.findClosestCulture( cultureSelector );\n\tif ( value instanceof Date ) {\n\t\tvalue = formatDate( value, format, culture );\n\t}\n\telse if ( typeof value === \"number\" ) {\n\t\tvalue = formatNumber( value, format, culture );\n\t}\n\treturn value;\n};\n\nGlobalize.localize = function( key, cultureSelector ) {\n\treturn this.findClosestCulture( cultureSelector ).messages[ key ] ||\n\t\tthis.cultures[ \"default\" ].messages[ key ];\n};\n\nGlobalize.parseDate = function( value, formats, culture ) {\n\tculture = this.findClosestCulture( culture );\n\n\tvar date, prop, patterns;\n\tif ( formats ) {\n\t\tif ( typeof formats === \"string\" ) {\n\t\t\tformats = [ formats ];\n\t\t}\n\t\tif ( formats.length ) {\n\t\t\tfor ( var i = 0, l = formats.length; i < l; i++ ) {\n\t\t\t\tvar format = formats[ i ];\n\t\t\t\tif ( format ) {\n\t\t\t\t\tdate = parseExact( value, format, culture );\n\t\t\t\t\tif ( date ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tpatterns = culture.calendar.patterns;\n\t\tfor ( prop in patterns ) {\n\t\t\tdate = parseExact( value, patterns[prop], culture );\n\t\t\tif ( date ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn date || null;\n};\n\nGlobalize.parseInt = function( value, radix, cultureSelector ) {\n\treturn truncate( Globalize.parseFloat(value, radix, cultureSelector) );\n};\n\nGlobalize.parseFloat = function( value, radix, cultureSelector ) {\n\t// radix argument is optional\n\tif ( typeof radix !== \"number\" ) {\n\t\tcultureSelector = radix;\n\t\tradix = 10;\n\t}\n\n\tvar culture = this.findClosestCulture( cultureSelector );\n\tvar ret = NaN,\n\t\tnf = culture.numberFormat;\n\n\tif ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) {\n\t\t// remove currency symbol\n\t\tvalue = value.replace( culture.numberFormat.currency.symbol, \"\" );\n\t\t// replace decimal seperator\n\t\tvalue = value.replace( culture.numberFormat.currency[\".\"], culture.numberFormat[\".\"] );\n\t}\n\n\t// trim leading and trailing whitespace\n\tvalue = trim( value );\n\n\t// allow infinity or hexidecimal\n\tif ( regexInfinity.test(value) ) {\n\t\tret = parseFloat( value );\n\t}\n\telse if ( !radix && regexHex.test(value) ) {\n\t\tret = parseInt( value, 16 );\n\t}\n\telse {\n\n\t\t// determine sign and number\n\t\tvar signInfo = parseNegativePattern( value, nf, nf.pattern[0] ),\n\t\t\tsign = signInfo[ 0 ],\n\t\t\tnum = signInfo[ 1 ];\n\n\t\t// #44 - try parsing as \"(n)\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"(n)\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"(n)\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\t// try parsing as \"-n\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"-n\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"-n\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\tsign = sign || \"+\";\n\n\t\t// determine exponent and number\n\t\tvar exponent,\n\t\t\tintAndFraction,\n\t\t\texponentPos = num.indexOf( \"e\" );\n\t\tif ( exponentPos < 0 ) exponentPos = num.indexOf( \"E\" );\n\t\tif ( exponentPos < 0 ) {\n\t\t\tintAndFraction = num;\n\t\t\texponent = null;\n\t\t}\n\t\telse {\n\t\t\tintAndFraction = num.substr( 0, exponentPos );\n\t\t\texponent = num.substr( exponentPos + 1 );\n\t\t}\n\t\t// determine decimal position\n\t\tvar integer,\n\t\t\tfraction,\n\t\t\tdecSep = nf[ \".\" ],\n\t\t\tdecimalPos = intAndFraction.indexOf( decSep );\n\t\tif ( decimalPos < 0 ) {\n\t\t\tinteger = intAndFraction;\n\t\t\tfraction = null;\n\t\t}\n\t\telse {\n\t\t\tinteger = intAndFraction.substr( 0, decimalPos );\n\t\t\tfraction = intAndFraction.substr( decimalPos + decSep.length );\n\t\t}\n\t\t// handle groups (e.g. 1,000,000)\n\t\tvar groupSep = nf[ \",\" ];\n\t\tinteger = integer.split( groupSep ).join( \"\" );\n\t\tvar altGroupSep = groupSep.replace( /\\u00A0/g, \" \" );\n\t\tif ( groupSep !== altGroupSep ) {\n\t\t\tinteger = integer.split( altGroupSep ).join( \"\" );\n\t\t}\n\t\t// build a natively parsable number string\n\t\tvar p = sign + integer;\n\t\tif ( fraction !== null ) {\n\t\t\tp += \".\" + fraction;\n\t\t}\n\t\tif ( exponent !== null ) {\n\t\t\t// exponent itself may have a number patternd\n\t\t\tvar expSignInfo = parseNegativePattern( exponent, nf, \"-n\" );\n\t\t\tp += \"e\" + ( expSignInfo[0] || \"+\" ) + expSignInfo[ 1 ];\n\t\t}\n\t\tif ( regexParseFloat.test(p) ) {\n\t\t\tret = parseFloat( p );\n\t\t}\n\t}\n\treturn ret;\n};\n\nGlobalize.culture = function( cultureSelector ) {\n\t// setter\n\tif ( typeof cultureSelector !== \"undefined\" ) {\n\t\tthis.cultureSelector = cultureSelector;\n\t}\n\t// getter\n\treturn this.findClosestCulture( cultureSelector ) || this.culture[ \"default\" ];\n};\n\n}( this ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.bgiframe-2.1.2.js",
    "content": "/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version 2.1.2\n */\n\n(function($){\n\n$.fn.bgiframe = ($.browser.msie && /msie 6\\.0/i.test(navigator.userAgent) ? function(s) {\n    s = $.extend({\n        top     : 'auto', // auto == .currentStyle.borderTopWidth\n        left    : 'auto', // auto == .currentStyle.borderLeftWidth\n        width   : 'auto', // auto == offsetWidth\n        height  : 'auto', // auto == offsetHeight\n        opacity : true,\n        src     : 'javascript:false;'\n    }, s);\n    var html = '<iframe class=\"bgiframe\"frameborder=\"0\"tabindex=\"-1\"src=\"'+s.src+'\"'+\n                   'style=\"display:block;position:absolute;z-index:-1;'+\n                       (s.opacity !== false?'filter:Alpha(Opacity=\\'0\\');':'')+\n                       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\\'px\\')':prop(s.top))+';'+\n                       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\\'px\\')':prop(s.left))+';'+\n                       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\\'px\\')':prop(s.width))+';'+\n                       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\\'px\\')':prop(s.height))+';'+\n                '\"/>';\n    return this.each(function() {\n        if ( $(this).children('iframe.bgiframe').length === 0 )\n            this.insertBefore( document.createElement(html), this.firstChild );\n    });\n} : function() { return this; });\n\n// old alias\n$.fn.bgIframe = $.fn.bgiframe;\n\nfunction prop(n) {\n    return n && n.constructor === Number ? n + 'px' : n;\n}\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.cookie.js",
    "content": "/*jslint browser: true */ /*global jQuery: true */\n\n/**\n * jQuery Cookie plugin\n *\n * Copyright (c) 2010 Klaus Hartl (stilbuero.de)\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n */\n\n// TODO JsDoc\n\n/**\n * Create a cookie with the given key and value and other optional parameters.\n *\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Set the value of a cookie.\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\n * @desc Create a cookie with all available options.\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Create a session cookie.\n * @example $.cookie('the_cookie', null);\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain\n *       used when the cookie was set.\n *\n * @param String key The key of the cookie.\n * @param String value The value of the cookie.\n * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.\n *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.\n *                             If set to null or omitted, the cookie will be a session cookie and will not be retained\n *                             when the the browser exits.\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will\n *                        require a secure protocol (like HTTPS).\n * @type undefined\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\n\n/**\n * Get the value of a cookie with the given key.\n *\n * @example $.cookie('the_cookie');\n * @desc Get the value of a cookie.\n *\n * @param String key The key of the cookie.\n * @return The value of the cookie.\n * @type String\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\njQuery.cookie = function (key, value, options) {\n\n    // key and value given, set cookie...\n    if (arguments.length > 1 && (value === null || typeof value !== \"object\")) {\n        options = jQuery.extend({}, options);\n\n        if (value === null) {\n            options.expires = -1;\n        }\n\n        if (typeof options.expires === 'number') {\n            var days = options.expires, t = options.expires = new Date();\n            t.setDate(t.getDate() + days);\n        }\n\n        return (document.cookie = [\n            encodeURIComponent(key), '=',\n            options.raw ? String(value) : encodeURIComponent(String(value)),\n            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n            options.path ? '; path=' + options.path : '',\n            options.domain ? '; domain=' + options.domain : '',\n            options.secure ? '; secure' : ''\n        ].join(''));\n    }\n\n    // key and possibly options given, get cookie...\n    options = value || {};\n    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;\n    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.metadata.js",
    "content": "/*\n * Metadata - jQuery plugin for parsing metadata from elements\n *\n * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n *\n * Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $\n *\n */\n\n/**\n * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\n * in the JSON will become a property of the element itself.\n *\n * There are three supported types of metadata storage:\n *\n *   attr:  Inside an attribute. The name parameter indicates *which* attribute.\n *          \n *   class: Inside the class attribute, wrapped in curly braces: { }\n *   \n *   elem:  Inside a child element (e.g. a script tag). The\n *          name parameter indicates *which* element.\n *          \n * The metadata for an element is loaded the first time the element is accessed via jQuery.\n *\n * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\n * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\n * \n * @name $.metadata.setType\n *\n * @example <p id=\"one\" class=\"some_class {item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"class\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from the class attribute\n * \n * @example <p id=\"one\" class=\"some_class\" data=\"{item_id: 1, item_label: 'Label'}\">This is a p</p>\n * @before $.metadata.setType(\"attr\", \"data\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a \"data\" attribute\n * \n * @example <p id=\"one\" class=\"some_class\"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>\n * @before $.metadata.setType(\"elem\", \"script\")\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\n * @desc Reads metadata from a nested script element\n * \n * @param String type The encoding type\n * @param String name The name of the attribute to be used to get metadata (optional)\n * @cat Plugins/Metadata\n * @descr Sets the type of encoding to be used when loading metadata for the first time\n * @type undefined\n * @see metadata()\n */\n\n(function($) {\n\n$.extend({\n\tmetadata : {\n\t\tdefaults : {\n\t\t\ttype: 'class',\n\t\t\tname: 'metadata',\n\t\t\tcre: /({.*})/,\n\t\t\tsingle: 'metadata'\n\t\t},\n\t\tsetType: function( type, name ){\n\t\t\tthis.defaults.type = type;\n\t\t\tthis.defaults.name = name;\n\t\t},\n\t\tget: function( elem, opts ){\n\t\t\tvar settings = $.extend({},this.defaults,opts);\n\t\t\t// check for empty string in single property\n\t\t\tif ( !settings.single.length ) settings.single = 'metadata';\n\t\t\t\n\t\t\tvar data = $.data(elem, settings.single);\n\t\t\t// returned cached data if it already exists\n\t\t\tif ( data ) return data;\n\t\t\t\n\t\t\tdata = \"{}\";\n\t\t\t\n\t\t\tif ( settings.type == \"class\" ) {\n\t\t\t\tvar m = settings.cre.exec( elem.className );\n\t\t\t\tif ( m )\n\t\t\t\t\tdata = m[1];\n\t\t\t} else if ( settings.type == \"elem\" ) {\n\t\t\t\tif( !elem.getElementsByTagName )\n\t\t\t\t\treturn undefined;\n\t\t\t\tvar e = elem.getElementsByTagName(settings.name);\n\t\t\t\tif ( e.length )\n\t\t\t\t\tdata = $.trim(e[0].innerHTML);\n\t\t\t} else if ( elem.getAttribute != undefined ) {\n\t\t\t\tvar attr = elem.getAttribute( settings.name );\n\t\t\t\tif ( attr )\n\t\t\t\t\tdata = attr;\n\t\t\t}\n\t\t\t\n\t\t\tif ( data.indexOf( '{' ) <0 )\n\t\t\tdata = \"{\" + data + \"}\";\n\t\t\t\n\t\t\tdata = eval(\"(\" + data + \")\");\n\t\t\t\n\t\t\t$.data( elem, settings.single, data );\n\t\t\treturn data;\n\t\t}\n\t}\n});\n\n/**\n * Returns the metadata object for the first member of the jQuery object.\n *\n * @name metadata\n * @descr Returns element's metadata object\n * @param Object opts An object contianing settings to override the defaults\n * @type jQuery\n * @cat Plugins/Metadata\n */\n$.fn.metadata = function( opts ){\n\treturn $.metadata.get( this[0], opts );\n};\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jquery.mousewheel.js",
    "content": "/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n * Thanks to: Seamus Leahy for adding deltaX and deltaY\n *\n * Version: 3.0.6\n *\n * Requires: 1.2.2+\n */\n\n(function($) {\n\nvar types = ['DOMMouseScroll', 'mousewheel'];\n\nif ($.event.fixHooks) {\n    for ( var i=types.length; i; ) {\n        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;\n    }\n}\n\n$.event.special.mousewheel = {\n    setup: function() {\n        if ( this.addEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.addEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = handler;\n        }\n    },\n\n    teardown: function() {\n        if ( this.removeEventListener ) {\n            for ( var i=types.length; i; ) {\n                this.removeEventListener( types[--i], handler, false );\n            }\n        } else {\n            this.onmousewheel = null;\n        }\n    }\n};\n\n$.fn.extend({\n    mousewheel: function(fn) {\n        return fn ? this.bind(\"mousewheel\", fn) : this.trigger(\"mousewheel\");\n    },\n\n    unmousewheel: function(fn) {\n        return this.unbind(\"mousewheel\", fn);\n    }\n});\n\n\nfunction handler(event) {\n    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;\n    event = $.event.fix(orgEvent);\n    event.type = \"mousewheel\";\n\n    // Old school scrollwheel delta\n    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }\n    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }\n\n    // New school multidimensional scroll (touchpads) deltas\n    deltaY = delta;\n\n    // Gecko\n    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n        deltaY = 0;\n        deltaX = -1*delta;\n    }\n\n    // Webkit\n    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }\n    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }\n\n    // Add event and delta to the front of the arguments\n    args.unshift(event, delta, deltaX, deltaY);\n\n    return ($.event.dispatch || $.event.handle).apply(this, args);\n}\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/jshint.js",
    "content": "/*!\n * JSHint, by JSHint Community.\n *\n * This file (and this file only) is licensed under the same slightly modified\n * MIT license that JSLint is. It stops evil-doers everywhere.\n *\n * JSHint is a derivative work of JSLint:\n *\n *   Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)\n *\n *   Permission is hereby granted, free of charge, to any person obtaining\n *   a copy of this software and associated documentation files (the \"Software\"),\n *   to deal in the Software without restriction, including without limitation\n *   the rights to use, copy, modify, merge, publish, distribute, sublicense,\n *   and/or sell copies of the Software, and to permit persons to whom\n *   the Software is furnished to do so, subject to the following conditions:\n *\n *   The above copyright notice and this permission notice shall be included\n *   in all copies or substantial portions of the Software.\n *\n *   The Software shall be used for Good, not Evil.\n *\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n *   DEALINGS IN THE SOFTWARE.\n *\n */\n\n/*\n JSHINT is a global function. It takes two parameters.\n\n     var myResult = JSHINT(source, option);\n\n The first parameter is either a string or an array of strings. If it is a\n string, it will be split on '\\n' or '\\r'. If it is an array of strings, it\n is assumed that each string represents one line. The source can be a\n JavaScript text or a JSON text.\n\n The second parameter is an optional object of options which control the\n operation of JSHINT. Most of the options are booleans: They are all\n optional and have a default value of false. One of the options, predef,\n can be an array of names, which will be used to declare global variables,\n or an object whose keys are used as global names, with a boolean value\n that determines if they are assignable.\n\n If it checks out, JSHINT returns true. Otherwise, it returns false.\n\n If false, you can inspect JSHINT.errors to find out the problems.\n JSHINT.errors is an array of objects containing these members:\n\n {\n     line      : The line (relative to 1) at which the lint was found\n     character : The character (relative to 1) at which the lint was found\n     reason    : The problem\n     evidence  : The text line in which the problem occurred\n     raw       : The raw message before the details were inserted\n     a         : The first detail\n     b         : The second detail\n     c         : The third detail\n     d         : The fourth detail\n }\n\n If a fatal error was found, a null will be the last element of the\n JSHINT.errors array.\n\n You can request a data structure which contains JSHint's results.\n\n     var myData = JSHINT.data();\n\n It returns a structure with this form:\n\n {\n     errors: [\n         {\n             line: NUMBER,\n             character: NUMBER,\n             reason: STRING,\n             evidence: STRING\n         }\n     ],\n     functions: [\n         name: STRING,\n         line: NUMBER,\n         character: NUMBER,\n         last: NUMBER,\n         lastcharacter: NUMBER,\n         param: [\n             STRING\n         ],\n         closure: [\n             STRING\n         ],\n         var: [\n             STRING\n         ],\n         exception: [\n             STRING\n         ],\n         outer: [\n             STRING\n         ],\n         unused: [\n             STRING\n         ],\n         global: [\n             STRING\n         ],\n         label: [\n             STRING\n         ]\n     ],\n     globals: [\n         STRING\n     ],\n     member: {\n         STRING: NUMBER\n     },\n     unused: [\n         {\n             name: STRING,\n             line: NUMBER\n         }\n     ],\n     implieds: [\n         {\n             name: STRING,\n             line: NUMBER\n         }\n     ],\n     urls: [\n         STRING\n     ],\n     json: BOOLEAN\n }\n\n Empty arrays will not be included.\n\n*/\n\n/*jshint\n evil: true, nomen: false, onevar: false, regexp: false, strict: true, boss: true,\n undef: true, maxlen: 100, indent: 4, quotmark: double, unused: true\n*/\n\n/*members \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"!=\", \"!==\", \"\\\"\", \"%\", \"(begin)\",\n \"(breakage)\", \"(character)\", \"(context)\", \"(error)\", \"(explicitNewcap)\", \"(global)\",\n \"(identifier)\", \"(last)\", \"(lastcharacter)\", \"(line)\", \"(loopage)\", \"(metrics)\",\n \"(name)\", \"(onevar)\", \"(params)\", \"(scope)\", \"(statement)\", \"(verb)\", \"(tokens)\", \"(catch)\",\n \"*\", \"+\", \"++\", \"-\", \"--\", \"\\/\", \"<\", \"<=\", \"==\",\n \"===\", \">\", \">=\", $, $$, $A, $F, $H, $R, $break, $continue, $w, Abstract, Ajax,\n __filename, __dirname, ActiveXObject, Array, ArrayBuffer, ArrayBufferView, Audio,\n Autocompleter, Asset, Boolean, Builder, Buffer, Browser, Blob, COM, CScript, Canvas,\n CustomAnimation, Class, Control, ComplexityCount, Chain, Color, Cookie, Core, DataView, Date,\n Debug, Draggable, Draggables, Droppables, Document, DomReady, DOMEvent, DOMReady, DOMParser,\n Drag, E, Enumerator, Enumerable, Element, Elements, Error, Effect, EvalError, Event,\n Events, FadeAnimation, Field, Flash, Float32Array, Float64Array, Form,\n FormField, Frame, FormData, Function, Fx, GetObject, Group, Hash, HotKey,\n HTMLElement, HTMLAnchorElement, HTMLBaseElement, HTMLBlockquoteElement,\n HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLCanvasElement, HTMLDirectoryElement,\n HTMLDivElement, HTMLDListElement, HTMLFieldSetElement,\n HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement,\n HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement,\n HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement,\n HTMLLabelElement, HTMLLayerElement, HTMLLegendElement, HTMLLIElement,\n HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement,\n HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement,\n HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement,\n HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement,\n HtmlTable, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement,\n HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement,\n HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, HTMLVideoElement,\n Iframe, IframeShim, Image, importScripts, Int16Array, Int32Array, Int8Array,\n Insertion, InputValidator, JSON, Keyboard, Locale, LN10, LN2, LOG10E, LOG2E,\n MAX_VALUE, MIN_VALUE, Map, Mask, Math, MenuItem, MessageChannel, MessageEvent, MessagePort,\n MoveAnimation, MooTools, MutationObserver, NaN, Native, NEGATIVE_INFINITY, Node, NodeFilter,\n Number, Object, ObjectRange,\n Option, Options, OverText, PI, POSITIVE_INFINITY, PeriodicalExecuter, Point, Position, Prototype,\n RangeError, Rectangle, ReferenceError, RegExp, ResizeAnimation, Request, RotateAnimation, Set,\n SQRT1_2, SQRT2, ScrollBar, ScriptEngine, ScriptEngineBuildVersion,\n ScriptEngineMajorVersion, ScriptEngineMinorVersion, Scriptaculous, Scroller,\n Slick, Slider, Selector, SharedWorker, String, Style, SyntaxError, Sortable, Sortables,\n SortableObserver, Sound, Spinner, System, Swiff, Text, TextArea, Template,\n Timer, Tips, Type, TypeError, Toggle, Try, \"use strict\", unescape, URI, URIError, URL,\n VBArray, WeakMap, WSH, WScript, XDomainRequest, Web, Window, XMLDOM, XMLHttpRequest, XMLSerializer,\n XPathEvaluator, XPathException, XPathExpression, XPathNamespace, XPathNSResolver, XPathResult,\n \"\\\\\", a, abs, addEventListener, address, alert, apply, applicationCache, arguments, arity,\n asi, atob, b, basic, basicToken, bitwise, blacklist, block, blur, boolOptions, boss,\n browser, btoa, c, call, callee, caller, camelcase, cases, charAt, charCodeAt, character,\n clearInterval, clearTimeout, close, closed, closure, comment, complexityCount, condition,\n confirm, console, constructor, content, couch, create, css, curly, d, data, datalist, dd, debug,\n decodeURI, decodeURIComponent, defaultStatus, defineClass, deserialize, devel, document,\n dojo, dijit, dojox, define, else, emit, encodeURI, encodeURIComponent, elem,\n eqeq, eqeqeq, eqnull, errors, es5, escape, esnext, eval, event, evidence, evil,\n ex, exception, exec, exps, expr, exports, FileReader, first, floor, focus, forEach,\n forin, fragment, frames, from, fromCharCode, fud, funcscope, funct, function, functions,\n g, gc, getComputedStyle, getRow, getter, getterToken, GLOBAL, global, globals, globalstrict,\n hasOwnProperty, help, history, i, id, identifier, immed, implieds, importPackage, include,\n indent, indexOf, init, ins, internals, instanceOf, isAlpha, isApplicationRunning, isArray,\n isDigit, isFinite, isNaN, iterator, java, join, jshint,\n JSHINT, json, jquery, jQuery, keys, label, labelled, last, lastcharacter, lastsemic, laxbreak,\n laxcomma, latedef, lbp, led, left, length, line, load, loadClass, localStorage, location,\n log, loopfunc, m, match, max, maxcomplexity, maxdepth, maxerr, maxlen, maxstatements, maxparams,\n member, message, meta, module, moveBy, moveTo, mootools, multistr, name, navigator, new, newcap,\n nestedBlockDepth, noarg, node, noempty, nomen, nonew, nonstandard, nud, onbeforeunload, onblur,\n onerror, onevar, onecase, onfocus, onload, onresize, onunload, open, openDatabase, openURL,\n opener, opera, options, outer, param, parent, parseFloat, parseInt, passfail, plusplus,\n postMessage, pop, predef, print, process, prompt, proto, prototype, prototypejs, provides, push,\n quit, quotmark, range, raw, reach, reason, regexp, readFile, readUrl, regexdash,\n removeEventListener, replace, report, require, reserved, resizeBy, resizeTo, resolvePath,\n resumeUpdates, respond, rhino, right, runCommand, scroll, scope, screen, scripturl, scrollBy,\n scrollTo, scrollbar, search, seal, self, send, serialize, sessionStorage, setInterval, setTimeout,\n setter, setterToken, shift, slice, smarttabs, sort, spawn, split, statement, statementCount, stack,\n status, start, strict, sub, substr, supernew, shadow, supplant, sum, sync, test, toLowerCase,\n toString, toUpperCase, toint32, token, tokens, top, trailing, type, typeOf, Uint16Array,\n Uint32Array, Uint8Array, undef, undefs, unused, urls, validthis, value, valueOf, var, vars,\n version, verifyMaxParametersPerFunction, verifyMaxStatementsPerFunction,\n verifyMaxComplexityPerFunction, verifyMaxNestedBlockDepthPerFunction, WebSocket, withstmt, white,\n window, windows, Worker, worker, wsh, yui, YUI, Y, YUI_config*/\n\n/*global exports: false */\n\n// We build the application inside a function so that we produce only a single\n// global variable. That function will be invoked immediately, and its return\n// value is the JSHINT function itself.\n\nvar JSHINT = (function () {\n    \"use strict\";\n\n    var anonname,       // The guessed name for anonymous functions.\n\n// These are operators that should not be used with the ! operator.\n\n        bang = {\n            \"<\"  : true,\n            \"<=\" : true,\n            \"==\" : true,\n            \"===\": true,\n            \"!==\": true,\n            \"!=\" : true,\n            \">\"  : true,\n            \">=\" : true,\n            \"+\"  : true,\n            \"-\"  : true,\n            \"*\"  : true,\n            \"/\"  : true,\n            \"%\"  : true\n        },\n\n        // These are the JSHint boolean options.\n        boolOptions = {\n            asi         : true, // if automatic semicolon insertion should be tolerated\n            bitwise     : true, // if bitwise operators should not be allowed\n            boss        : true, // if advanced usage of assignments should be allowed\n            browser     : true, // if the standard browser globals should be predefined\n            camelcase   : true, // if identifiers should be required in camel case\n            couch       : true, // if CouchDB globals should be predefined\n            curly       : true, // if curly braces around all blocks should be required\n            debug       : true, // if debugger statements should be allowed\n            devel       : true, // if logging globals should be predefined (console,\n                                // alert, etc.)\n            dojo        : true, // if Dojo Toolkit globals should be predefined\n            eqeqeq      : true, // if === should be required\n            eqnull      : true, // if == null comparisons should be tolerated\n            es5         : true, // if ES5 syntax should be allowed\n            esnext      : true, // if es.next specific syntax should be allowed\n            evil        : true, // if eval should be allowed\n            expr        : true, // if ExpressionStatement should be allowed as Programs\n            forin       : true, // if for in statements must filter\n            funcscope   : true, // if only function scope should be used for scope tests\n            globalstrict: true, // if global \"use strict\"; should be allowed (also\n                                // enables 'strict')\n            immed       : true, // if immediate invocations must be wrapped in parens\n            iterator    : true, // if the `__iterator__` property should be allowed\n            jquery      : true, // if jQuery globals should be predefined\n            lastsemic   : true, // if semicolons may be ommitted for the trailing\n                                // statements inside of a one-line blocks.\n            latedef     : true, // if the use before definition should not be tolerated\n            laxbreak    : true, // if line breaks should not be checked\n            laxcomma    : true, // if line breaks should not be checked around commas\n            loopfunc    : true, // if functions should be allowed to be defined within\n                                // loops\n            mootools    : true, // if MooTools globals should be predefined\n            multistr    : true, // allow multiline strings\n            newcap      : true, // if constructor names must be capitalized\n            noarg       : true, // if arguments.caller and arguments.callee should be\n                                // disallowed\n            node        : true, // if the Node.js environment globals should be\n                                // predefined\n            noempty     : true, // if empty blocks should be disallowed\n            nonew       : true, // if using `new` for side-effects should be disallowed\n            nonstandard : true, // if non-standard (but widely adopted) globals should\n                                // be predefined\n            nomen       : true, // if names should be checked\n            onevar      : true, // if only one var statement per function should be\n                                // allowed\n            onecase     : true, // if one case switch statements should be allowed\n            passfail    : true, // if the scan should stop on first error\n            plusplus    : true, // if increment/decrement should not be allowed\n            proto       : true, // if the `__proto__` property should be allowed\n            prototypejs : true, // if Prototype and Scriptaculous globals should be\n                                // predefined\n            regexdash   : true, // if unescaped first/last dash (-) inside brackets\n                                // should be tolerated\n            regexp      : true, // if the . should not be allowed in regexp literals\n            rhino       : true, // if the Rhino environment globals should be predefined\n            undef       : true, // if variables should be declared before used\n            unused      : true, // if variables should be always used\n            scripturl   : true, // if script-targeted URLs should be tolerated\n            shadow      : true, // if variable shadowing should be tolerated\n            smarttabs   : true, // if smarttabs should be tolerated\n                                // (http://www.emacswiki.org/emacs/SmartTabs)\n            strict      : true, // require the \"use strict\"; pragma\n            sub         : true, // if all forms of subscript notation are tolerated\n            supernew    : true, // if `new function () { ... };` and `new Object;`\n                                // should be tolerated\n            trailing    : true, // if trailing whitespace rules apply\n            validthis   : true, // if 'this' inside a non-constructor function is valid.\n                                // This is a function scoped option only.\n            withstmt    : true, // if with statements should be allowed\n            white       : true, // if strict whitespace rules apply\n            worker      : true, // if Web Worker script symbols should be allowed\n            wsh         : true, // if the Windows Scripting Host environment globals\n                                // should be predefined\n            yui         : true  // YUI variables should be predefined\n        },\n\n        // These are the JSHint options that can take any value\n        // (we use this object to detect invalid options)\n        valOptions = {\n            maxlen       : false,\n            indent       : false,\n            maxerr       : false,\n            predef       : false,\n            quotmark     : false, //'single'|'double'|true\n            scope        : false,\n            maxstatements: false, // {int} max statements per function\n            maxdepth     : false, // {int} max nested block depth per function\n            maxparams    : false, // {int} max params per function\n            maxcomplexity: false  // {int} max cyclomatic complexity per function\n        },\n\n        // These are JSHint boolean options which are shared with JSLint\n        // where the definition in JSHint is opposite JSLint\n        invertedOptions = {\n            bitwise     : true,\n            forin       : true,\n            newcap      : true,\n            nomen       : true,\n            plusplus    : true,\n            regexp      : true,\n            undef       : true,\n            white       : true,\n\n            // Inverted and renamed, use JSHint name here\n            eqeqeq      : true,\n            onevar      : true\n        },\n\n        // These are JSHint boolean options which are shared with JSLint\n        // where the name has been changed but the effect is unchanged\n        renamedOptions = {\n            eqeq        : \"eqeqeq\",\n            vars        : \"onevar\",\n            windows     : \"wsh\"\n        },\n\n\n        // browser contains a set of global names which are commonly provided by a\n        // web browser environment.\n        browser = {\n            ArrayBuffer              :  false,\n            ArrayBufferView          :  false,\n            Audio                    :  false,\n            Blob                     :  false,\n            addEventListener         :  false,\n            applicationCache         :  false,\n            atob                     :  false,\n            blur                     :  false,\n            btoa                     :  false,\n            clearInterval            :  false,\n            clearTimeout             :  false,\n            close                    :  false,\n            closed                   :  false,\n            DataView                 :  false,\n            DOMParser                :  false,\n            defaultStatus            :  false,\n            document                 :  false,\n            event                    :  false,\n            FileReader               :  false,\n            Float32Array             :  false,\n            Float64Array             :  false,\n            FormData                 :  false,\n            focus                    :  false,\n            frames                   :  false,\n            getComputedStyle         :  false,\n            HTMLElement              :  false,\n            HTMLAnchorElement        :  false,\n            HTMLBaseElement          :  false,\n            HTMLBlockquoteElement    :  false,\n            HTMLBodyElement          :  false,\n            HTMLBRElement            :  false,\n            HTMLButtonElement        :  false,\n            HTMLCanvasElement        :  false,\n            HTMLDirectoryElement     :  false,\n            HTMLDivElement           :  false,\n            HTMLDListElement         :  false,\n            HTMLFieldSetElement      :  false,\n            HTMLFontElement          :  false,\n            HTMLFormElement          :  false,\n            HTMLFrameElement         :  false,\n            HTMLFrameSetElement      :  false,\n            HTMLHeadElement          :  false,\n            HTMLHeadingElement       :  false,\n            HTMLHRElement            :  false,\n            HTMLHtmlElement          :  false,\n            HTMLIFrameElement        :  false,\n            HTMLImageElement         :  false,\n            HTMLInputElement         :  false,\n            HTMLIsIndexElement       :  false,\n            HTMLLabelElement         :  false,\n            HTMLLayerElement         :  false,\n            HTMLLegendElement        :  false,\n            HTMLLIElement            :  false,\n            HTMLLinkElement          :  false,\n            HTMLMapElement           :  false,\n            HTMLMenuElement          :  false,\n            HTMLMetaElement          :  false,\n            HTMLModElement           :  false,\n            HTMLObjectElement        :  false,\n            HTMLOListElement         :  false,\n            HTMLOptGroupElement      :  false,\n            HTMLOptionElement        :  false,\n            HTMLParagraphElement     :  false,\n            HTMLParamElement         :  false,\n            HTMLPreElement           :  false,\n            HTMLQuoteElement         :  false,\n            HTMLScriptElement        :  false,\n            HTMLSelectElement        :  false,\n            HTMLStyleElement         :  false,\n            HTMLTableCaptionElement  :  false,\n            HTMLTableCellElement     :  false,\n            HTMLTableColElement      :  false,\n            HTMLTableElement         :  false,\n            HTMLTableRowElement      :  false,\n            HTMLTableSectionElement  :  false,\n            HTMLTextAreaElement      :  false,\n            HTMLTitleElement         :  false,\n            HTMLUListElement         :  false,\n            HTMLVideoElement         :  false,\n            history                  :  false,\n            Int16Array               :  false,\n            Int32Array               :  false,\n            Int8Array                :  false,\n            Image                    :  false,\n            length                   :  false,\n            localStorage             :  false,\n            location                 :  false,\n            MessageChannel           :  false,\n            MessageEvent             :  false,\n            MessagePort              :  false,\n            moveBy                   :  false,\n            moveTo                   :  false,\n            MutationObserver         :  false,\n            name                     :  false,\n            Node                     :  false,\n            NodeFilter               :  false,\n            navigator                :  false,\n            onbeforeunload           :  true,\n            onblur                   :  true,\n            onerror                  :  true,\n            onfocus                  :  true,\n            onload                   :  true,\n            onresize                 :  true,\n            onunload                 :  true,\n            open                     :  false,\n            openDatabase             :  false,\n            opener                   :  false,\n            Option                   :  false,\n            parent                   :  false,\n            print                    :  false,\n            removeEventListener      :  false,\n            resizeBy                 :  false,\n            resizeTo                 :  false,\n            screen                   :  false,\n            scroll                   :  false,\n            scrollBy                 :  false,\n            scrollTo                 :  false,\n            sessionStorage           :  false,\n            setInterval              :  false,\n            setTimeout               :  false,\n            SharedWorker             :  false,\n            status                   :  false,\n            top                      :  false,\n            Uint16Array              :  false,\n            Uint32Array              :  false,\n            Uint8Array               :  false,\n            WebSocket                :  false,\n            window                   :  false,\n            Worker                   :  false,\n            XMLHttpRequest           :  false,\n            XMLSerializer            :  false,\n            XPathEvaluator           :  false,\n            XPathException           :  false,\n            XPathExpression          :  false,\n            XPathNamespace           :  false,\n            XPathNSResolver          :  false,\n            XPathResult              :  false\n        },\n\n        couch = {\n            \"require\" : false,\n            respond   : false,\n            getRow    : false,\n            emit      : false,\n            send      : false,\n            start     : false,\n            sum       : false,\n            log       : false,\n            exports   : false,\n            module    : false,\n            provides  : false\n        },\n\n        declared, // Globals that were declared using /*global ... */ syntax.\n\n        devel = {\n            alert   : false,\n            confirm : false,\n            console : false,\n            Debug   : false,\n            opera   : false,\n            prompt  : false\n        },\n\n        dojo = {\n            dojo      : false,\n            dijit     : false,\n            dojox     : false,\n            define    : false,\n            \"require\" : false\n        },\n\n        funct,          // The current function\n\n        functionicity = [\n            \"closure\", \"exception\", \"global\", \"label\",\n            \"outer\", \"unused\", \"var\"\n        ],\n\n        functions,      // All of the functions\n\n        global,         // The global scope\n        implied,        // Implied globals\n        inblock,\n        indent,\n        jsonmode,\n\n        jquery = {\n            \"$\"    : false,\n            jQuery : false\n        },\n\n        lines,\n        lookahead,\n        member,\n        membersOnly,\n\n        mootools = {\n            \"$\"             : false,\n            \"$$\"            : false,\n            Asset           : false,\n            Browser         : false,\n            Chain           : false,\n            Class           : false,\n            Color           : false,\n            Cookie          : false,\n            Core            : false,\n            Document        : false,\n            DomReady        : false,\n            DOMEvent        : false,\n            DOMReady        : false,\n            Drag            : false,\n            Element         : false,\n            Elements        : false,\n            Event           : false,\n            Events          : false,\n            Fx              : false,\n            Group           : false,\n            Hash            : false,\n            HtmlTable       : false,\n            Iframe          : false,\n            IframeShim      : false,\n            InputValidator  : false,\n            instanceOf      : false,\n            Keyboard        : false,\n            Locale          : false,\n            Mask            : false,\n            MooTools        : false,\n            Native          : false,\n            Options         : false,\n            OverText        : false,\n            Request         : false,\n            Scroller        : false,\n            Slick           : false,\n            Slider          : false,\n            Sortables       : false,\n            Spinner         : false,\n            Swiff           : false,\n            Tips            : false,\n            Type            : false,\n            typeOf          : false,\n            URI             : false,\n            Window          : false\n        },\n\n        nexttoken,\n\n        node = {\n            __filename    : false,\n            __dirname     : false,\n            Buffer        : false,\n            console       : false,\n            exports       : true,  // In Node it is ok to exports = module.exports = foo();\n            GLOBAL        : false,\n            global        : false,\n            module        : false,\n            process       : false,\n            require       : false,\n            setTimeout    : false,\n            clearTimeout  : false,\n            setInterval   : false,\n            clearInterval : false\n        },\n\n        noreach,\n        option,\n        predefined,     // Global variables defined by option\n        prereg,\n        prevtoken,\n\n        prototypejs = {\n            \"$\"               : false,\n            \"$$\"              : false,\n            \"$A\"              : false,\n            \"$F\"              : false,\n            \"$H\"              : false,\n            \"$R\"              : false,\n            \"$break\"          : false,\n            \"$continue\"       : false,\n            \"$w\"              : false,\n            Abstract          : false,\n            Ajax              : false,\n            Class             : false,\n            Enumerable        : false,\n            Element           : false,\n            Event             : false,\n            Field             : false,\n            Form              : false,\n            Hash              : false,\n            Insertion         : false,\n            ObjectRange       : false,\n            PeriodicalExecuter: false,\n            Position          : false,\n            Prototype         : false,\n            Selector          : false,\n            Template          : false,\n            Toggle            : false,\n            Try               : false,\n            Autocompleter     : false,\n            Builder           : false,\n            Control           : false,\n            Draggable         : false,\n            Draggables        : false,\n            Droppables        : false,\n            Effect            : false,\n            Sortable          : false,\n            SortableObserver  : false,\n            Sound             : false,\n            Scriptaculous     : false\n        },\n\n        quotmark,\n\n        rhino = {\n            defineClass  : false,\n            deserialize  : false,\n            gc           : false,\n            help         : false,\n            importPackage: false,\n            \"java\"       : false,\n            load         : false,\n            loadClass    : false,\n            print        : false,\n            quit         : false,\n            readFile     : false,\n            readUrl      : false,\n            runCommand   : false,\n            seal         : false,\n            serialize    : false,\n            spawn        : false,\n            sync         : false,\n            toint32      : false,\n            version      : false\n        },\n\n        scope,      // The current scope\n        stack,\n\n        // standard contains the global names that are provided by the\n        // ECMAScript standard.\n        standard = {\n            Array               : false,\n            Boolean             : false,\n            Date                : false,\n            decodeURI           : false,\n            decodeURIComponent  : false,\n            encodeURI           : false,\n            encodeURIComponent  : false,\n            Error               : false,\n            \"eval\"              : false,\n            EvalError           : false,\n            Function            : false,\n            hasOwnProperty      : false,\n            isFinite            : false,\n            isNaN               : false,\n            JSON                : false,\n            Map                 : false,\n            Math                : false,\n            NaN                 : false,\n            Number              : false,\n            Object              : false,\n            parseInt            : false,\n            parseFloat          : false,\n            RangeError          : false,\n            ReferenceError      : false,\n            RegExp              : false,\n            Set                 : false,\n            String              : false,\n            SyntaxError         : false,\n            TypeError           : false,\n            URIError            : false,\n            WeakMap             : false\n        },\n\n        // widely adopted global names that are not part of ECMAScript standard\n        nonstandard = {\n            escape              : false,\n            unescape            : false\n        },\n\n        directive,\n        syntax = {},\n        tab,\n        token,\n        unuseds,\n        urls,\n        useESNextSyntax,\n        warnings,\n\n        worker = {\n            importScripts       : true,\n            postMessage         : true,\n            self                : true\n        },\n\n        wsh = {\n            ActiveXObject             : true,\n            Enumerator                : true,\n            GetObject                 : true,\n            ScriptEngine              : true,\n            ScriptEngineBuildVersion  : true,\n            ScriptEngineMajorVersion  : true,\n            ScriptEngineMinorVersion  : true,\n            VBArray                   : true,\n            WSH                       : true,\n            WScript                   : true,\n            XDomainRequest            : true\n        },\n\n        yui = {\n            YUI             : false,\n            Y               : false,\n            YUI_config      : false\n        };\n    // Regular expressions. Some of these are stupidly long.\n    var ax, cx, tx, nx, nxg, lx, ix, jx, ft;\n    (function () {\n        /*jshint maxlen:300 */\n\n        // unsafe comment or string\n        ax = /@cc|<\\/?|script|\\]\\s*\\]|<\\s*!|&lt/i;\n\n        // unsafe characters that are silently deleted by one or more browsers\n        cx = /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/;\n\n        // token\n        tx = /^\\s*([(){}\\[.,:;'\"~\\?\\]#@]|==?=?|\\/=(?!(\\S*\\/[gim]?))|\\/(\\*(jshint|jslint|members?|global)?|\\/)?|\\*[\\/=]?|\\+(?:=|\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\|[|=]?|>>?>?=?|<([\\/=!]|\\!(\\[|--)?|<=?)?|\\^=?|\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\.[0-9]*)?([eE][+\\-]?[0-9]+)?)/;\n\n        // characters in strings that need escapement\n        nx = /[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/;\n        nxg = /[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n        // star slash\n        lx = /\\*\\//;\n\n        // identifier\n        ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/;\n\n        // javascript url\n        jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\s*:/i;\n\n        // catches /* falls through */ comments\n        ft = /^\\s*\\/\\*\\s*falls\\sthrough\\s*\\*\\/\\s*$/;\n    }());\n\n    function F() {}     // Used by Object.create\n\n    function is_own(object, name) {\n        // The object.hasOwnProperty method fails when the property under consideration\n        // is named 'hasOwnProperty'. So we have to use this more convoluted form.\n        return Object.prototype.hasOwnProperty.call(object, name);\n    }\n\n    function checkOption(name, t) {\n        if (valOptions[name] === undefined && boolOptions[name] === undefined) {\n            warning(\"Bad option: '\" + name + \"'.\", t);\n        }\n    }\n\n    function isString(obj) {\n        return Object.prototype.toString.call(obj) === \"[object String]\";\n    }\n\n    // Provide critical ES5 functions to ES3.\n\n    if (typeof Array.isArray !== \"function\") {\n        Array.isArray = function (o) {\n            return Object.prototype.toString.apply(o) === \"[object Array]\";\n        };\n    }\n\n    if (!Array.prototype.forEach) {\n        Array.prototype.forEach = function (fn, scope) {\n            var len = this.length;\n\n            for (var i = 0; i < len; i++) {\n                fn.call(scope || this, this[i], i, this);\n            }\n        };\n    }\n\n    if (!Array.prototype.indexOf) {\n        Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {\n            if (this === null || this === undefined) {\n                throw new TypeError();\n            }\n\n            var t = new Object(this);\n            var len = t.length >>> 0;\n\n            if (len === 0) {\n                return -1;\n            }\n\n            var n = 0;\n            if (arguments.length > 0) {\n                n = Number(arguments[1]);\n                if (n != n) { // shortcut for verifying if it's NaN\n                    n = 0;\n                } else if (n !== 0 && n != Infinity && n != -Infinity) {\n                    n = (n > 0 || -1) * Math.floor(Math.abs(n));\n                }\n            }\n\n            if (n >= len) {\n                return -1;\n            }\n\n            var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n            for (; k < len; k++) {\n                if (k in t && t[k] === searchElement) {\n                    return k;\n                }\n            }\n\n            return -1;\n        };\n    }\n\n    if (typeof Object.create !== \"function\") {\n        Object.create = function (o) {\n            F.prototype = o;\n            return new F();\n        };\n    }\n\n    if (typeof Object.keys !== \"function\") {\n        Object.keys = function (o) {\n            var a = [], k;\n            for (k in o) {\n                if (is_own(o, k)) {\n                    a.push(k);\n                }\n            }\n            return a;\n        };\n    }\n\n    // Non standard methods\n\n    function isAlpha(str) {\n        return (str >= \"a\" && str <= \"z\\uffff\") ||\n            (str >= \"A\" && str <= \"Z\\uffff\");\n    }\n\n    function isDigit(str) {\n        return (str >= \"0\" && str <= \"9\");\n    }\n\n    function isIdentifier(token, value) {\n        if (!token)\n            return false;\n\n        if (!token.identifier || token.value !== value)\n            return false;\n\n        return true;\n    }\n\n    function supplant(str, data) {\n        return str.replace(/\\{([^{}]*)\\}/g, function (a, b) {\n            var r = data[b];\n            return typeof r === \"string\" || typeof r === \"number\" ? r : a;\n        });\n    }\n\n    function combine(t, o) {\n        var n;\n        for (n in o) {\n            if (is_own(o, n) && !is_own(JSHINT.blacklist, n)) {\n                t[n] = o[n];\n            }\n        }\n    }\n\n    function updatePredefined() {\n        Object.keys(JSHINT.blacklist).forEach(function (key) {\n            delete predefined[key];\n        });\n    }\n\n    function assume() {\n        if (option.couch) {\n            combine(predefined, couch);\n        }\n\n        if (option.rhino) {\n            combine(predefined, rhino);\n        }\n\n        if (option.prototypejs) {\n            combine(predefined, prototypejs);\n        }\n\n        if (option.node) {\n            combine(predefined, node);\n            option.globalstrict = true;\n        }\n\n        if (option.devel) {\n            combine(predefined, devel);\n        }\n\n        if (option.dojo) {\n            combine(predefined, dojo);\n        }\n\n        if (option.browser) {\n            combine(predefined, browser);\n        }\n\n        if (option.nonstandard) {\n            combine(predefined, nonstandard);\n        }\n\n        if (option.jquery) {\n            combine(predefined, jquery);\n        }\n\n        if (option.mootools) {\n            combine(predefined, mootools);\n        }\n\n        if (option.worker) {\n            combine(predefined, worker);\n        }\n\n        if (option.wsh) {\n            combine(predefined, wsh);\n        }\n\n        if (option.esnext) {\n            useESNextSyntax();\n        }\n\n        if (option.globalstrict && option.strict !== false) {\n            option.strict = true;\n        }\n\n        if (option.yui) {\n            combine(predefined, yui);\n        }\n    }\n\n\n    // Produce an error warning.\n    function quit(message, line, chr) {\n        var percentage = Math.floor((line / lines.length) * 100);\n\n        throw {\n            name: \"JSHintError\",\n            line: line,\n            character: chr,\n            message: message + \" (\" + percentage + \"% scanned).\",\n            raw: message\n        };\n    }\n\n    function isundef(scope, m, t, a) {\n        return JSHINT.undefs.push([scope, m, t, a]);\n    }\n\n    function warning(m, t, a, b, c, d) {\n        var ch, l, w;\n        t = t || nexttoken;\n        if (t.id === \"(end)\") {  // `~\n            t = token;\n        }\n        l = t.line || 0;\n        ch = t.from || 0;\n        w = {\n            id: \"(error)\",\n            raw: m,\n            evidence: lines[l - 1] || \"\",\n            line: l,\n            character: ch,\n            scope: JSHINT.scope,\n            a: a,\n            b: b,\n            c: c,\n            d: d\n        };\n        w.reason = supplant(m, w);\n        JSHINT.errors.push(w);\n        if (option.passfail) {\n            quit(\"Stopping. \", l, ch);\n        }\n        warnings += 1;\n        if (warnings >= option.maxerr) {\n            quit(\"Too many errors.\", l, ch);\n        }\n        return w;\n    }\n\n    function warningAt(m, l, ch, a, b, c, d) {\n        return warning(m, {\n            line: l,\n            from: ch\n        }, a, b, c, d);\n    }\n\n    function error(m, t, a, b, c, d) {\n        warning(m, t, a, b, c, d);\n    }\n\n    function errorAt(m, l, ch, a, b, c, d) {\n        return error(m, {\n            line: l,\n            from: ch\n        }, a, b, c, d);\n    }\n\n    // Tracking of \"internal\" scripts, like eval containing a static string\n    function addInternalSrc(elem, src) {\n        var i;\n        i = {\n            id: \"(internal)\",\n            elem: elem,\n            value: src\n        };\n        JSHINT.internals.push(i);\n        return i;\n    }\n\n\n// lexical analysis and token construction\n\n    var lex = (function lex() {\n        var character, from, line, s;\n\n// Private lex methods\n\n        function nextLine() {\n            var at,\n                match,\n                tw; // trailing whitespace check\n\n            if (line >= lines.length)\n                return false;\n\n            character = 1;\n            s = lines[line];\n            line += 1;\n\n            // If smarttabs option is used check for spaces followed by tabs only.\n            // Otherwise check for any occurence of mixed tabs and spaces.\n            // Tabs and one space followed by block comment is allowed.\n            if (option.smarttabs) {\n                // negative look-behind for \"//\"\n                match = s.match(/(\\/\\/)? \\t/);\n                at = match && !match[1] ? 0 : -1;\n            } else {\n                at = s.search(/ \\t|\\t [^\\*]/);\n            }\n\n            if (at >= 0)\n                warningAt(\"Mixed spaces and tabs.\", line, at + 1);\n\n            s = s.replace(/\\t/g, tab);\n            at = s.search(cx);\n\n            if (at >= 0)\n                warningAt(\"Unsafe character.\", line, at);\n\n            if (option.maxlen && option.maxlen < s.length)\n                warningAt(\"Line too long.\", line, s.length);\n\n            // Check for trailing whitespaces\n            tw = option.trailing && s.match(/^(.*?)\\s+$/);\n            if (tw && !/^\\s+$/.test(s)) {\n                warningAt(\"Trailing whitespace.\", line, tw[1].length + 1);\n            }\n            return true;\n        }\n\n// Produce a token object.  The token inherits from a syntax symbol.\n\n        function it(type, value) {\n            var i, t;\n\n            function checkName(name) {\n                if (!option.proto && name === \"__proto__\") {\n                    warningAt(\"The '{a}' property is deprecated.\", line, from, name);\n                    return;\n                }\n\n                if (!option.iterator && name === \"__iterator__\") {\n                    warningAt(\"'{a}' is only available in JavaScript 1.7.\", line, from, name);\n                    return;\n                }\n\n                // Check for dangling underscores unless we're in Node\n                // environment and this identifier represents built-in\n                // Node globals with underscores.\n\n                var hasDangling = /^(_+.*|.*_+)$/.test(name);\n\n                if (option.nomen && hasDangling && name !== \"_\") {\n                    if (option.node && token.id !== \".\" && /^(__dirname|__filename)$/.test(name))\n                        return;\n\n                    warningAt(\"Unexpected {a} in '{b}'.\", line, from, \"dangling '_'\", name);\n                    return;\n                }\n\n                // Check for non-camelcase names. Names like MY_VAR and\n                // _myVar are okay though.\n\n                if (option.camelcase) {\n                    if (name.replace(/^_+/, \"\").indexOf(\"_\") > -1 && !name.match(/^[A-Z0-9_]*$/)) {\n                        warningAt(\"Identifier '{a}' is not in camel case.\", line, from, value);\n                    }\n                }\n            }\n\n            if (type === \"(color)\" || type === \"(range)\") {\n                t = {type: type};\n            } else if (type === \"(punctuator)\" ||\n                    (type === \"(identifier)\" && is_own(syntax, value))) {\n                t = syntax[value] || syntax[\"(error)\"];\n            } else {\n                t = syntax[type];\n            }\n\n            t = Object.create(t);\n\n            if (type === \"(string)\" || type === \"(range)\") {\n                if (!option.scripturl && jx.test(value)) {\n                    warningAt(\"Script URL.\", line, from);\n                }\n            }\n\n            if (type === \"(identifier)\") {\n                t.identifier = true;\n                checkName(value);\n            }\n\n            t.value = value;\n            t.line = line;\n            t.character = character;\n            t.from = from;\n            i = t.id;\n            if (i !== \"(endline)\") {\n                prereg = i &&\n                    ((\"(,=:[!&|?{};\".indexOf(i.charAt(i.length - 1)) >= 0) ||\n                    i === \"return\" ||\n                    i === \"case\");\n            }\n            return t;\n        }\n\n        // Public lex methods\n        return {\n            init: function (source) {\n                if (typeof source === \"string\") {\n                    lines = source\n                        .replace(/\\r\\n/g, \"\\n\")\n                        .replace(/\\r/g, \"\\n\")\n                        .split(\"\\n\");\n                } else {\n                    lines = source;\n                }\n\n                // If the first line is a shebang (#!), make it a blank and move on.\n                // Shebangs are used by Node scripts.\n                if (lines[0] && lines[0].substr(0, 2) === \"#!\")\n                    lines[0] = \"\";\n\n                line = 0;\n                nextLine();\n                from = 1;\n            },\n\n            range: function (begin, end) {\n                var c, value = \"\";\n                from = character;\n                if (s.charAt(0) !== begin) {\n                    errorAt(\"Expected '{a}' and instead saw '{b}'.\",\n                            line, character, begin, s.charAt(0));\n                }\n                for (;;) {\n                    s = s.slice(1);\n                    character += 1;\n                    c = s.charAt(0);\n                    switch (c) {\n                    case \"\":\n                        errorAt(\"Missing '{a}'.\", line, character, c);\n                        break;\n                    case end:\n                        s = s.slice(1);\n                        character += 1;\n                        return it(\"(range)\", value);\n                    case \"\\\\\":\n                        warningAt(\"Unexpected '{a}'.\", line, character, c);\n                    }\n                    value += c;\n                }\n\n            },\n\n\n            // token -- this is called by advance to get the next token\n            token: function () {\n                var b, c, captures, d, depth, high, i, l, low, q, t, isLiteral, isInRange, n;\n\n                function match(x) {\n                    var r = x.exec(s), r1;\n\n                    if (r) {\n                        l = r[0].length;\n                        r1 = r[1];\n                        c = r1.charAt(0);\n                        s = s.substr(l);\n                        from = character + l - r1.length;\n                        character += l;\n                        return r1;\n                    }\n                }\n\n                function string(x) {\n                    var c, j, r = \"\", allowNewLine = false;\n\n                    if (jsonmode && x !== \"\\\"\") {\n                        warningAt(\"Strings must use doublequote.\",\n                                line, character);\n                    }\n\n                    if (option.quotmark) {\n                        if (option.quotmark === \"single\" && x !== \"'\") {\n                            warningAt(\"Strings must use singlequote.\",\n                                    line, character);\n                        } else if (option.quotmark === \"double\" && x !== \"\\\"\") {\n                            warningAt(\"Strings must use doublequote.\",\n                                    line, character);\n                        } else if (option.quotmark === true) {\n                            quotmark = quotmark || x;\n                            if (quotmark !== x) {\n                                warningAt(\"Mixed double and single quotes.\",\n                                        line, character);\n                            }\n                        }\n                    }\n\n                    function esc(n) {\n                        var i = parseInt(s.substr(j + 1, n), 16);\n                        j += n;\n                        if (i >= 32 && i <= 126 &&\n                                i !== 34 && i !== 92 && i !== 39) {\n                            warningAt(\"Unnecessary escapement.\", line, character);\n                        }\n                        character += n;\n                        c = String.fromCharCode(i);\n                    }\n\n                    j = 0;\n\nunclosedString:\n                    for (;;) {\n                        while (j >= s.length) {\n                            j = 0;\n\n                            var cl = line, cf = from;\n                            if (!nextLine()) {\n                                errorAt(\"Unclosed string.\", cl, cf);\n                                break unclosedString;\n                            }\n\n                            if (allowNewLine) {\n                                allowNewLine = false;\n                            } else {\n                                warningAt(\"Unclosed string.\", cl, cf);\n                            }\n                        }\n\n                        c = s.charAt(j);\n                        if (c === x) {\n                            character += 1;\n                            s = s.substr(j + 1);\n                            return it(\"(string)\", r, x);\n                        }\n\n                        if (c < \" \") {\n                            if (c === \"\\n\" || c === \"\\r\") {\n                                break;\n                            }\n                            warningAt(\"Control character in string: {a}.\",\n                                    line, character + j, s.slice(0, j));\n                        } else if (c === \"\\\\\") {\n                            j += 1;\n                            character += 1;\n                            c = s.charAt(j);\n                            n = s.charAt(j + 1);\n                            switch (c) {\n                            case \"\\\\\":\n                            case \"\\\"\":\n                            case \"/\":\n                                break;\n                            case \"\\'\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\'.\", line, character);\n                                }\n                                break;\n                            case \"b\":\n                                c = \"\\b\";\n                                break;\n                            case \"f\":\n                                c = \"\\f\";\n                                break;\n                            case \"n\":\n                                c = \"\\n\";\n                                break;\n                            case \"r\":\n                                c = \"\\r\";\n                                break;\n                            case \"t\":\n                                c = \"\\t\";\n                                break;\n                            case \"0\":\n                                c = \"\\0\";\n                                // Octal literals fail in strict mode\n                                // check if the number is between 00 and 07\n                                // where 'n' is the token next to 'c'\n                                if (n >= 0 && n <= 7 && directive[\"use strict\"]) {\n                                    warningAt(\n                                    \"Octal literals are not allowed in strict mode.\",\n                                    line, character);\n                                }\n                                break;\n                            case \"u\":\n                                esc(4);\n                                break;\n                            case \"v\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\v.\", line, character);\n                                }\n                                c = \"\\v\";\n                                break;\n                            case \"x\":\n                                if (jsonmode) {\n                                    warningAt(\"Avoid \\\\x-.\", line, character);\n                                }\n                                esc(2);\n                                break;\n                            case \"\":\n                                // last character is escape character\n                                // always allow new line if escaped, but show\n                                // warning if option is not set\n                                allowNewLine = true;\n                                if (option.multistr) {\n                                    if (jsonmode) {\n                                        warningAt(\"Avoid EOL escapement.\", line, character);\n                                    }\n                                    c = \"\";\n                                    character -= 1;\n                                    break;\n                                }\n                                warningAt(\"Bad escapement of EOL. Use option multistr if needed.\",\n                                    line, character);\n                                break;\n                            case \"!\":\n                                if (s.charAt(j - 2) === \"<\")\n                                    break;\n                                /*falls through*/\n                            default:\n                                warningAt(\"Bad escapement.\", line, character);\n                            }\n                        }\n                        r += c;\n                        character += 1;\n                        j += 1;\n                    }\n                }\n\n                for (;;) {\n                    if (!s) {\n                        return it(nextLine() ? \"(endline)\" : \"(end)\", \"\");\n                    }\n\n                    t = match(tx);\n\n                    if (!t) {\n                        t = \"\";\n                        c = \"\";\n                        while (s && s < \"!\") {\n                            s = s.substr(1);\n                        }\n                        if (s) {\n                            errorAt(\"Unexpected '{a}'.\", line, character, s.substr(0, 1));\n                            s = \"\";\n                        }\n                    } else {\n\n    //      identifier\n\n                        if (isAlpha(c) || c === \"_\" || c === \"$\") {\n                            return it(\"(identifier)\", t);\n                        }\n\n    //      number\n\n                        if (isDigit(c)) {\n                            if (!isFinite(Number(t))) {\n                                warningAt(\"Bad number '{a}'.\",\n                                    line, character, t);\n                            }\n                            if (isAlpha(s.substr(0, 1))) {\n                                warningAt(\"Missing space after '{a}'.\",\n                                        line, character, t);\n                            }\n                            if (c === \"0\") {\n                                d = t.substr(1, 1);\n                                if (isDigit(d)) {\n                                    if (token.id !== \".\") {\n                                        warningAt(\"Don't use extra leading zeros '{a}'.\",\n                                            line, character, t);\n                                    }\n                                } else if (jsonmode && (d === \"x\" || d === \"X\")) {\n                                    warningAt(\"Avoid 0x-. '{a}'.\",\n                                            line, character, t);\n                                }\n                            }\n                            if (t.substr(t.length - 1) === \".\") {\n                                warningAt(\n\"A trailing decimal point can be confused with a dot '{a}'.\", line, character, t);\n                            }\n                            return it(\"(number)\", t);\n                        }\n                        switch (t) {\n\n    //      string\n\n                        case \"\\\"\":\n                        case \"'\":\n                            return string(t);\n\n    //      // comment\n\n                        case \"//\":\n                            s = \"\";\n                            token.comment = true;\n                            break;\n\n    //      /* comment\n\n                        case \"/*\":\n                            for (;;) {\n                                i = s.search(lx);\n                                if (i >= 0) {\n                                    break;\n                                }\n                                if (!nextLine()) {\n                                    errorAt(\"Unclosed comment.\", line, character);\n                                }\n                            }\n                            s = s.substr(i + 2);\n                            token.comment = true;\n                            break;\n\n    //      /*members /*jshint /*global\n\n                        case \"/*members\":\n                        case \"/*member\":\n                        case \"/*jshint\":\n                        case \"/*jslint\":\n                        case \"/*global\":\n                        case \"*/\":\n                            return {\n                                value: t,\n                                type: \"special\",\n                                line: line,\n                                character: character,\n                                from: from\n                            };\n\n                        case \"\":\n                            break;\n    //      /\n                        case \"/\":\n                            if (s.charAt(0) === \"=\") {\n                                errorAt(\"A regular expression literal can be confused with '/='.\",\n                                    line, from);\n                            }\n\n                            if (prereg) {\n                                depth = 0;\n                                captures = 0;\n                                l = 0;\n                                for (;;) {\n                                    b = true;\n                                    c = s.charAt(l);\n                                    l += 1;\n                                    switch (c) {\n                                    case \"\":\n                                        errorAt(\"Unclosed regular expression.\", line, from);\n                                        return quit(\"Stopping.\", line, from);\n                                    case \"/\":\n                                        if (depth > 0) {\n                                            warningAt(\"{a} unterminated regular expression \" +\n                                                \"group(s).\", line, from + l, depth);\n                                        }\n                                        c = s.substr(0, l - 1);\n                                        q = {\n                                            g: true,\n                                            i: true,\n                                            m: true\n                                        };\n                                        while (q[s.charAt(l)] === true) {\n                                            q[s.charAt(l)] = false;\n                                            l += 1;\n                                        }\n                                        character += l;\n                                        s = s.substr(l);\n                                        q = s.charAt(0);\n                                        if (q === \"/\" || q === \"*\") {\n                                            errorAt(\"Confusing regular expression.\",\n                                                    line, from);\n                                        }\n                                        return it(\"(regexp)\", c);\n                                    case \"\\\\\":\n                                        c = s.charAt(l);\n                                        if (c < \" \") {\n                                            warningAt(\n\"Unexpected control character in regular expression.\", line, from + l);\n                                        } else if (c === \"<\") {\n                                            warningAt(\n\"Unexpected escaped character '{a}' in regular expression.\", line, from + l, c);\n                                        }\n                                        l += 1;\n                                        break;\n                                    case \"(\":\n                                        depth += 1;\n                                        b = false;\n                                        if (s.charAt(l) === \"?\") {\n                                            l += 1;\n                                            switch (s.charAt(l)) {\n                                            case \":\":\n                                            case \"=\":\n                                            case \"!\":\n                                                l += 1;\n                                                break;\n                                            default:\n                                                warningAt(\n\"Expected '{a}' and instead saw '{b}'.\", line, from + l, \":\", s.charAt(l));\n                                            }\n                                        } else {\n                                            captures += 1;\n                                        }\n                                        break;\n                                    case \"|\":\n                                        b = false;\n                                        break;\n                                    case \")\":\n                                        if (depth === 0) {\n                                            warningAt(\"Unescaped '{a}'.\",\n                                                    line, from + l, \")\");\n                                        } else {\n                                            depth -= 1;\n                                        }\n                                        break;\n                                    case \" \":\n                                        q = 1;\n                                        while (s.charAt(l) === \" \") {\n                                            l += 1;\n                                            q += 1;\n                                        }\n                                        if (q > 1) {\n                                            warningAt(\n\"Spaces are hard to count. Use {{a}}.\", line, from + l, q);\n                                        }\n                                        break;\n                                    case \"[\":\n                                        c = s.charAt(l);\n                                        if (c === \"^\") {\n                                            l += 1;\n                                            if (s.charAt(l) === \"]\") {\n                                                errorAt(\"Unescaped '{a}'.\",\n                                                    line, from + l, \"^\");\n                                            }\n                                        }\n                                        if (c === \"]\") {\n                                            warningAt(\"Empty class.\", line,\n                                                    from + l - 1);\n                                        }\n                                        isLiteral = false;\n                                        isInRange = false;\nklass:\n                                        do {\n                                            c = s.charAt(l);\n                                            l += 1;\n                                            switch (c) {\n                                            case \"[\":\n                                            case \"^\":\n                                                warningAt(\"Unescaped '{a}'.\",\n                                                        line, from + l, c);\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"-\":\n                                                if (isLiteral && !isInRange) {\n                                                    isLiteral = false;\n                                                    isInRange = true;\n                                                } else if (isInRange) {\n                                                    isInRange = false;\n                                                } else if (s.charAt(l) === \"]\") {\n                                                    isInRange = true;\n                                                } else {\n                                                    if (option.regexdash !== (l === 2 || (l === 3 &&\n                                                        s.charAt(1) === \"^\"))) {\n                                                        warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l - 1, \"-\");\n                                                    }\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"]\":\n                                                if (isInRange && !option.regexdash) {\n                                                    warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l - 1, \"-\");\n                                                }\n                                                break klass;\n                                            case \"\\\\\":\n                                                c = s.charAt(l);\n                                                if (c < \" \") {\n                                                    warningAt(\n\"Unexpected control character in regular expression.\", line, from + l);\n                                                } else if (c === \"<\") {\n                                                    warningAt(\n\"Unexpected escaped character '{a}' in regular expression.\", line, from + l, c);\n                                                }\n                                                l += 1;\n\n                                                // \\w, \\s and \\d are never part of a character range\n                                                if (/[wsd]/i.test(c)) {\n                                                    if (isInRange) {\n                                                        warningAt(\"Unescaped '{a}'.\",\n                                                            line, from + l, \"-\");\n                                                        isInRange = false;\n                                                    }\n                                                    isLiteral = false;\n                                                } else if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"/\":\n                                                warningAt(\"Unescaped '{a}'.\",\n                                                        line, from + l - 1, \"/\");\n\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            case \"<\":\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                                break;\n                                            default:\n                                                if (isInRange) {\n                                                    isInRange = false;\n                                                } else {\n                                                    isLiteral = true;\n                                                }\n                                            }\n                                        } while (c);\n                                        break;\n                                    case \".\":\n                                        if (option.regexp) {\n                                            warningAt(\"Insecure '{a}'.\", line,\n                                                    from + l, c);\n                                        }\n                                        break;\n                                    case \"]\":\n                                    case \"?\":\n                                    case \"{\":\n                                    case \"}\":\n                                    case \"+\":\n                                    case \"*\":\n                                        warningAt(\"Unescaped '{a}'.\", line,\n                                                from + l, c);\n                                    }\n                                    if (b) {\n                                        switch (s.charAt(l)) {\n                                        case \"?\":\n                                        case \"+\":\n                                        case \"*\":\n                                            l += 1;\n                                            if (s.charAt(l) === \"?\") {\n                                                l += 1;\n                                            }\n                                            break;\n                                        case \"{\":\n                                            l += 1;\n                                            c = s.charAt(l);\n                                            if (c < \"0\" || c > \"9\") {\n                                                warningAt(\n\"Expected a number and instead saw '{a}'.\", line, from + l, c);\n                                                break; // No reason to continue checking numbers.\n                                            }\n                                            l += 1;\n                                            low = +c;\n                                            for (;;) {\n                                                c = s.charAt(l);\n                                                if (c < \"0\" || c > \"9\") {\n                                                    break;\n                                                }\n                                                l += 1;\n                                                low = +c + (low * 10);\n                                            }\n                                            high = low;\n                                            if (c === \",\") {\n                                                l += 1;\n                                                high = Infinity;\n                                                c = s.charAt(l);\n                                                if (c >= \"0\" && c <= \"9\") {\n                                                    l += 1;\n                                                    high = +c;\n                                                    for (;;) {\n                                                        c = s.charAt(l);\n                                                        if (c < \"0\" || c > \"9\") {\n                                                            break;\n                                                        }\n                                                        l += 1;\n                                                        high = +c + (high * 10);\n                                                    }\n                                                }\n                                            }\n                                            if (s.charAt(l) !== \"}\") {\n                                                warningAt(\n\"Expected '{a}' and instead saw '{b}'.\", line, from + l, \"}\", c);\n                                            } else {\n                                                l += 1;\n                                            }\n                                            if (s.charAt(l) === \"?\") {\n                                                l += 1;\n                                            }\n                                            if (low > high) {\n                                                warningAt(\n\"'{a}' should not be greater than '{b}'.\", line, from + l, low, high);\n                                            }\n                                        }\n                                    }\n                                }\n                                c = s.substr(0, l - 1);\n                                character += l;\n                                s = s.substr(l);\n                                return it(\"(regexp)\", c);\n                            }\n                            return it(\"(punctuator)\", t);\n\n    //      punctuator\n\n                        case \"#\":\n                            return it(\"(punctuator)\", t);\n                        default:\n                            return it(\"(punctuator)\", t);\n                        }\n                    }\n                }\n            }\n        };\n    }());\n\n\n    function addlabel(t, type, token) {\n        if (t === \"hasOwnProperty\") {\n            warning(\"'hasOwnProperty' is a really bad name.\");\n        }\n\n        // Define t in the current function in the current scope.\n        if (type === \"exception\") {\n            if (is_own(funct[\"(context)\"], t)) {\n                if (funct[t] !== true && !option.node) {\n                    warning(\"Value of '{a}' may be overwritten in IE.\", nexttoken, t);\n                }\n            }\n        }\n\n        if (is_own(funct, t) && !funct[\"(global)\"]) {\n            if (funct[t] === true) {\n                if (option.latedef)\n                    warning(\"'{a}' was used before it was defined.\", nexttoken, t);\n            } else {\n                if (!option.shadow && type !== \"exception\") {\n                    warning(\"'{a}' is already defined.\", nexttoken, t);\n                }\n            }\n        }\n\n        funct[t] = type;\n\n        if (token) {\n            funct[\"(tokens)\"][t] = token;\n        }\n\n        if (funct[\"(global)\"]) {\n            global[t] = funct;\n            if (is_own(implied, t)) {\n                if (option.latedef)\n                    warning(\"'{a}' was used before it was defined.\", nexttoken, t);\n                delete implied[t];\n            }\n        } else {\n            scope[t] = funct;\n        }\n    }\n\n\n    function doOption() {\n        var nt = nexttoken;\n        var o  = nt.value;\n        var quotmarkValue = option.quotmark;\n        var predef = {};\n        var b, obj, filter, t, tn, v, minus;\n\n        switch (o) {\n        case \"*/\":\n            error(\"Unbegun comment.\");\n            break;\n        case \"/*members\":\n        case \"/*member\":\n            o = \"/*members\";\n            if (!membersOnly) {\n                membersOnly = {};\n            }\n            obj = membersOnly;\n            option.quotmark = false;\n            break;\n        case \"/*jshint\":\n        case \"/*jslint\":\n            obj = option;\n            filter = boolOptions;\n            break;\n        case \"/*global\":\n            obj = predef;\n            break;\n        default:\n            error(\"What?\");\n        }\n\n        t = lex.token();\n\nloop:\n        for (;;) {\n            minus = false;\n            for (;;) {\n                if (t.type === \"special\" && t.value === \"*/\") {\n                    break loop;\n                }\n                if (t.id !== \"(endline)\" && t.id !== \",\") {\n                    break;\n                }\n                t = lex.token();\n            }\n\n            if (o === \"/*global\" && t.value === \"-\") {\n                minus = true;\n                t = lex.token();\n            }\n\n            if (t.type !== \"(string)\" && t.type !== \"(identifier)\" && o !== \"/*members\") {\n                error(\"Bad option.\", t);\n            }\n\n            v = lex.token();\n            if (v.id === \":\") {\n                v = lex.token();\n\n                if (obj === membersOnly) {\n                    error(\"Expected '{a}' and instead saw '{b}'.\", t, \"*/\", \":\");\n                }\n\n                if (o === \"/*jshint\") {\n                    checkOption(t.value, t);\n                }\n\n                var numericVals = [\n                    \"maxstatements\",\n                    \"maxparams\",\n                    \"maxdepth\",\n                    \"maxcomplexity\",\n                    \"maxerr\",\n                    \"maxlen\",\n                    \"indent\"\n                ];\n\n                if (numericVals.indexOf(t.value) > -1 && (o === \"/*jshint\" || o === \"/*jslint\")) {\n                    b = +v.value;\n\n                    if (typeof b !== \"number\" || !isFinite(b) || b <= 0 || Math.floor(b) !== b) {\n                        error(\"Expected a small integer and instead saw '{a}'.\", v, v.value);\n                    }\n\n                    if (t.value === \"indent\")\n                        obj.white = true;\n\n                    obj[t.value] = b;\n                } else if (t.value === \"validthis\") {\n                    if (funct[\"(global)\"]) {\n                        error(\"Option 'validthis' can't be used in a global scope.\");\n                    } else {\n                        if (v.value === \"true\" || v.value === \"false\")\n                            obj[t.value] = v.value === \"true\";\n                        else\n                            error(\"Bad option value.\", v);\n                    }\n                } else if (t.value === \"quotmark\" && (o === \"/*jshint\")) {\n                    switch (v.value) {\n                    case \"true\":\n                        obj.quotmark = true;\n                        break;\n                    case \"false\":\n                        obj.quotmark = false;\n                        break;\n                    case \"double\":\n                    case \"single\":\n                        obj.quotmark = v.value;\n                        break;\n                    default:\n                        error(\"Bad option value.\", v);\n                    }\n                } else if (v.value === \"true\" || v.value === \"false\") {\n                    if (o === \"/*jslint\") {\n                        tn = renamedOptions[t.value] || t.value;\n                        obj[tn] = v.value === \"true\";\n                        if (invertedOptions[tn] !== undefined) {\n                            obj[tn] = !obj[tn];\n                        }\n                    } else {\n                        obj[t.value] = v.value === \"true\";\n                    }\n\n                    if (t.value === \"newcap\")\n                        obj[\"(explicitNewcap)\"] = true;\n                } else {\n                    error(\"Bad option value.\", v);\n                }\n                t = lex.token();\n            } else {\n                if (o === \"/*jshint\" || o === \"/*jslint\") {\n                    error(\"Missing option value.\", t);\n                }\n\n                obj[t.value] = false;\n\n                if (o === \"/*global\" && minus === true) {\n                    JSHINT.blacklist[t.value] = t.value;\n                    updatePredefined();\n                }\n\n                t = v;\n            }\n        }\n\n        if (o === \"/*members\") {\n            option.quotmark = quotmarkValue;\n        }\n\n        combine(predefined, predef);\n\n        for (var key in predef) {\n            if (is_own(predef, key)) {\n                declared[key] = nt;\n            }\n        }\n\n        if (filter) {\n            assume();\n        }\n    }\n\n\n// We need a peek function. If it has an argument, it peeks that much farther\n// ahead. It is used to distinguish\n//     for ( var i in ...\n// from\n//     for ( var i = ...\n\n    function peek(p) {\n        var i = p || 0, j = 0, t;\n\n        while (j <= i) {\n            t = lookahead[j];\n            if (!t) {\n                t = lookahead[j] = lex.token();\n            }\n            j += 1;\n        }\n        return t;\n    }\n\n\n\n// Produce the next token. It looks for programming errors.\n\n    function advance(id, t) {\n        switch (token.id) {\n        case \"(number)\":\n            if (nexttoken.id === \".\") {\n                warning(\"A dot following a number can be confused with a decimal point.\", token);\n            }\n            break;\n        case \"-\":\n            if (nexttoken.id === \"-\" || nexttoken.id === \"--\") {\n                warning(\"Confusing minusses.\");\n            }\n            break;\n        case \"+\":\n            if (nexttoken.id === \"+\" || nexttoken.id === \"++\") {\n                warning(\"Confusing plusses.\");\n            }\n            break;\n        }\n\n        if (token.type === \"(string)\" || token.identifier) {\n            anonname = token.value;\n        }\n\n        if (id && nexttoken.id !== id) {\n            if (t) {\n                if (nexttoken.id === \"(end)\") {\n                    warning(\"Unmatched '{a}'.\", t, t.id);\n                } else {\n                    warning(\"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.\",\n                            nexttoken, id, t.id, t.line, nexttoken.value);\n                }\n            } else if (nexttoken.type !== \"(identifier)\" ||\n                            nexttoken.value !== id) {\n                warning(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, id, nexttoken.value);\n            }\n        }\n\n        prevtoken = token;\n        token = nexttoken;\n        for (;;) {\n            nexttoken = lookahead.shift() || lex.token();\n            if (nexttoken.id === \"(end)\" || nexttoken.id === \"(error)\") {\n                return;\n            }\n            if (nexttoken.type === \"special\") {\n                doOption();\n            } else {\n                if (nexttoken.id !== \"(endline)\") {\n                    break;\n                }\n            }\n        }\n    }\n\n\n// This is the heart of JSHINT, the Pratt parser. In addition to parsing, it\n// is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is\n// like .nud except that it is only used on the first token of a statement.\n// Having .fud makes it much easier to define statement-oriented languages like\n// JavaScript. I retained Pratt's nomenclature.\n\n// .nud     Null denotation\n// .fud     First null denotation\n// .led     Left denotation\n//  lbp     Left binding power\n//  rbp     Right binding power\n\n// They are elements of the parsing method called Top Down Operator Precedence.\n\n    function expression(rbp, initial) {\n        var left, isArray = false, isObject = false;\n\n        if (nexttoken.id === \"(end)\")\n            error(\"Unexpected early end of program.\", token);\n\n        advance();\n        if (initial) {\n            anonname = \"anonymous\";\n            funct[\"(verb)\"] = token.value;\n        }\n        if (initial === true && token.fud) {\n            left = token.fud();\n        } else {\n            if (token.nud) {\n                left = token.nud();\n            } else {\n                if (nexttoken.type === \"(number)\" && token.id === \".\") {\n                    warning(\"A leading decimal point can be confused with a dot: '.{a}'.\",\n                            token, nexttoken.value);\n                    advance();\n                    return token;\n                } else {\n                    error(\"Expected an identifier and instead saw '{a}'.\",\n                            token, token.id);\n                }\n            }\n            while (rbp < nexttoken.lbp) {\n                isArray = token.value === \"Array\";\n                isObject = token.value === \"Object\";\n\n                // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object()\n                // Line breaks in IfStatement heads exist to satisfy the checkJSHint\n                // \"Line too long.\" error.\n                if (left && (left.value || (left.first && left.first.value))) {\n                    // If the left.value is not \"new\", or the left.first.value is a \".\"\n                    // then safely assume that this is not \"new Array()\" and possibly\n                    // not \"new Object()\"...\n                    if (left.value !== \"new\" ||\n                      (left.first && left.first.value && left.first.value === \".\")) {\n                        isArray = false;\n                        // ...In the case of Object, if the left.value and token.value\n                        // are not equal, then safely assume that this not \"new Object()\"\n                        if (left.value !== token.value) {\n                            isObject = false;\n                        }\n                    }\n                }\n\n                advance();\n                if (isArray && token.id === \"(\" && nexttoken.id === \")\")\n                    warning(\"Use the array literal notation [].\", token);\n                if (isObject && token.id === \"(\" && nexttoken.id === \")\")\n                    warning(\"Use the object literal notation {}.\", token);\n                if (token.led) {\n                    left = token.led(left);\n                } else {\n                    error(\"Expected an operator and instead saw '{a}'.\",\n                        token, token.id);\n                }\n            }\n        }\n        return left;\n    }\n\n\n// Functions for conformance of style.\n\n    function adjacent(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white) {\n            if (left.character !== right.from && left.line === right.line) {\n                left.from += (left.character - left.from);\n                warning(\"Unexpected space after '{a}'.\", left, left.value);\n            }\n        }\n    }\n\n    function nobreak(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white && (left.character !== right.from || left.line !== right.line)) {\n            warning(\"Unexpected space before '{a}'.\", right, right.value);\n        }\n    }\n\n    function nospace(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (option.white && !left.comment) {\n            if (left.line === right.line) {\n                adjacent(left, right);\n            }\n        }\n    }\n\n    function nonadjacent(left, right) {\n        if (option.white) {\n            left = left || token;\n            right = right || nexttoken;\n            if (left.value === \";\" && right.value === \";\") {\n                return;\n            }\n            if (left.line === right.line && left.character === right.from) {\n                left.from += (left.character - left.from);\n                warning(\"Missing space after '{a}'.\",\n                        left, left.value);\n            }\n        }\n    }\n\n    function nobreaknonadjacent(left, right) {\n        left = left || token;\n        right = right || nexttoken;\n        if (!option.laxbreak && left.line !== right.line) {\n            warning(\"Bad line breaking before '{a}'.\", right, right.id);\n        } else if (option.white) {\n            left = left || token;\n            right = right || nexttoken;\n            if (left.character === right.from) {\n                left.from += (left.character - left.from);\n                warning(\"Missing space after '{a}'.\",\n                        left, left.value);\n            }\n        }\n    }\n\n    function indentation(bias) {\n        var i;\n        if (option.white && nexttoken.id !== \"(end)\") {\n            i = indent + (bias || 0);\n            if (nexttoken.from !== i) {\n                warning(\n\"Expected '{a}' to have an indentation at {b} instead at {c}.\",\n                        nexttoken, nexttoken.value, i, nexttoken.from);\n            }\n        }\n    }\n\n    function nolinebreak(t) {\n        t = t || token;\n        if (t.line !== nexttoken.line) {\n            warning(\"Line breaking error '{a}'.\", t, t.value);\n        }\n    }\n\n\n    function comma() {\n        if (token.line !== nexttoken.line) {\n            if (!option.laxcomma) {\n                if (comma.first) {\n                    warning(\"Comma warnings can be turned off with 'laxcomma'\");\n                    comma.first = false;\n                }\n                warning(\"Bad line breaking before '{a}'.\", token, nexttoken.id);\n            }\n        } else if (!token.comment && token.character !== nexttoken.from && option.white) {\n            token.from += (token.character - token.from);\n            warning(\"Unexpected space after '{a}'.\", token, token.value);\n        }\n        advance(\",\");\n        nonadjacent(token, nexttoken);\n    }\n\n\n// Functional constructors for making the symbols that will be inherited by\n// tokens.\n\n    function symbol(s, p) {\n        var x = syntax[s];\n        if (!x || typeof x !== \"object\") {\n            syntax[s] = x = {\n                id: s,\n                lbp: p,\n                value: s\n            };\n        }\n        return x;\n    }\n\n\n    function delim(s) {\n        return symbol(s, 0);\n    }\n\n\n    function stmt(s, f) {\n        var x = delim(s);\n        x.identifier = x.reserved = true;\n        x.fud = f;\n        return x;\n    }\n\n\n    function blockstmt(s, f) {\n        var x = stmt(s, f);\n        x.block = true;\n        return x;\n    }\n\n\n    function reserveName(x) {\n        var c = x.id.charAt(0);\n        if ((c >= \"a\" && c <= \"z\") || (c >= \"A\" && c <= \"Z\")) {\n            x.identifier = x.reserved = true;\n        }\n        return x;\n    }\n\n\n    function prefix(s, f) {\n        var x = symbol(s, 150);\n        reserveName(x);\n        x.nud = (typeof f === \"function\") ? f : function () {\n            this.right = expression(150);\n            this.arity = \"unary\";\n            if (this.id === \"++\" || this.id === \"--\") {\n                if (option.plusplus) {\n                    warning(\"Unexpected use of '{a}'.\", this, this.id);\n                } else if ((!this.right.identifier || this.right.reserved) &&\n                        this.right.id !== \".\" && this.right.id !== \"[\") {\n                    warning(\"Bad operand.\", this);\n                }\n            }\n            return this;\n        };\n        return x;\n    }\n\n\n    function type(s, f) {\n        var x = delim(s);\n        x.type = s;\n        x.nud = f;\n        return x;\n    }\n\n\n    function reserve(s, f) {\n        var x = type(s, f);\n        x.identifier = x.reserved = true;\n        return x;\n    }\n\n\n    function reservevar(s, v) {\n        return reserve(s, function () {\n            if (typeof v === \"function\") {\n                v(this);\n            }\n            return this;\n        });\n    }\n\n\n    function infix(s, f, p, w) {\n        var x = symbol(s, p);\n        reserveName(x);\n        x.led = function (left) {\n            if (!w) {\n                nobreaknonadjacent(prevtoken, token);\n                nonadjacent(token, nexttoken);\n            }\n            if (s === \"in\" && left.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", left, \"!\");\n            }\n            if (typeof f === \"function\") {\n                return f(left, this);\n            } else {\n                this.left = left;\n                this.right = expression(p);\n                return this;\n            }\n        };\n        return x;\n    }\n\n\n    function relation(s, f) {\n        var x = symbol(s, 100);\n        x.led = function (left) {\n            nobreaknonadjacent(prevtoken, token);\n            nonadjacent(token, nexttoken);\n            var right = expression(100);\n\n            if (isIdentifier(left, \"NaN\") || isIdentifier(right, \"NaN\")) {\n                warning(\"Use the isNaN function to compare with NaN.\", this);\n            } else if (f) {\n                f.apply(this, [left, right]);\n            }\n            if (left.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", left, \"!\");\n            }\n            if (right.id === \"!\") {\n                warning(\"Confusing use of '{a}'.\", right, \"!\");\n            }\n            this.left = left;\n            this.right = right;\n            return this;\n        };\n        return x;\n    }\n\n\n    function isPoorRelation(node) {\n        return node &&\n              ((node.type === \"(number)\" && +node.value === 0) ||\n               (node.type === \"(string)\" && node.value === \"\") ||\n               (node.type === \"null\" && !option.eqnull) ||\n                node.type === \"true\" ||\n                node.type === \"false\" ||\n                node.type === \"undefined\");\n    }\n\n\n    function assignop(s) {\n        symbol(s, 20).exps = true;\n\n        return infix(s, function (left, that) {\n            that.left = left;\n\n            if (predefined[left.value] === false &&\n                    scope[left.value][\"(global)\"] === true) {\n                warning(\"Read only.\", left);\n            } else if (left[\"function\"]) {\n                warning(\"'{a}' is a function.\", left, left.value);\n            }\n\n            if (left) {\n                if (option.esnext && funct[left.value] === \"const\") {\n                    warning(\"Attempting to override '{a}' which is a constant\", left, left.value);\n                }\n\n                if (left.id === \".\" || left.id === \"[\") {\n                    if (!left.left || left.left.value === \"arguments\") {\n                        warning(\"Bad assignment.\", that);\n                    }\n                    that.right = expression(19);\n                    return that;\n                } else if (left.identifier && !left.reserved) {\n                    if (funct[left.value] === \"exception\") {\n                        warning(\"Do not assign to the exception parameter.\", left);\n                    }\n                    that.right = expression(19);\n                    return that;\n                }\n\n                if (left === syntax[\"function\"]) {\n                    warning(\n\"Expected an identifier in an assignment and instead saw a function invocation.\",\n                                token);\n                }\n            }\n\n            error(\"Bad assignment.\", that);\n        }, 20);\n    }\n\n\n    function bitwise(s, f, p) {\n        var x = symbol(s, p);\n        reserveName(x);\n        x.led = (typeof f === \"function\") ? f : function (left) {\n            if (option.bitwise) {\n                warning(\"Unexpected use of '{a}'.\", this, this.id);\n            }\n            this.left = left;\n            this.right = expression(p);\n            return this;\n        };\n        return x;\n    }\n\n\n    function bitwiseassignop(s) {\n        symbol(s, 20).exps = true;\n        return infix(s, function (left, that) {\n            if (option.bitwise) {\n                warning(\"Unexpected use of '{a}'.\", that, that.id);\n            }\n            nonadjacent(prevtoken, token);\n            nonadjacent(token, nexttoken);\n            if (left) {\n                if (left.id === \".\" || left.id === \"[\" ||\n                        (left.identifier && !left.reserved)) {\n                    expression(19);\n                    return that;\n                }\n                if (left === syntax[\"function\"]) {\n                    warning(\n\"Expected an identifier in an assignment, and instead saw a function invocation.\",\n                                token);\n                }\n                return that;\n            }\n            error(\"Bad assignment.\", that);\n        }, 20);\n    }\n\n\n    function suffix(s) {\n        var x = symbol(s, 150);\n        x.led = function (left) {\n            if (option.plusplus) {\n                warning(\"Unexpected use of '{a}'.\", this, this.id);\n            } else if ((!left.identifier || left.reserved) &&\n                    left.id !== \".\" && left.id !== \"[\") {\n                warning(\"Bad operand.\", this);\n            }\n            this.left = left;\n            return this;\n        };\n        return x;\n    }\n\n\n    // fnparam means that this identifier is being defined as a function\n    // argument (see identifier())\n    function optionalidentifier(fnparam) {\n        if (nexttoken.identifier) {\n            advance();\n            if (token.reserved && !option.es5) {\n                // `undefined` as a function param is a common pattern to protect\n                // against the case when somebody does `undefined = true` and\n                // help with minification. More info: https://gist.github.com/315916\n                if (!fnparam || token.value !== \"undefined\") {\n                    warning(\"Expected an identifier and instead saw '{a}' (a reserved word).\",\n                            token, token.id);\n                }\n            }\n            return token.value;\n        }\n    }\n\n    // fnparam means that this identifier is being defined as a function\n    // argument\n    function identifier(fnparam) {\n        var i = optionalidentifier(fnparam);\n        if (i) {\n            return i;\n        }\n        if (token.id === \"function\" && nexttoken.id === \"(\") {\n            warning(\"Missing name in function declaration.\");\n        } else {\n            error(\"Expected an identifier and instead saw '{a}'.\",\n                    nexttoken, nexttoken.value);\n        }\n    }\n\n\n    function reachable(s) {\n        var i = 0, t;\n        if (nexttoken.id !== \";\" || noreach) {\n            return;\n        }\n        for (;;) {\n            t = peek(i);\n            if (t.reach) {\n                return;\n            }\n            if (t.id !== \"(endline)\") {\n                if (t.id === \"function\") {\n                    if (!option.latedef) {\n                        break;\n                    }\n                    warning(\n\"Inner functions should be listed at the top of the outer function.\", t);\n                    break;\n                }\n                warning(\"Unreachable '{a}' after '{b}'.\", t, t.value, s);\n                break;\n            }\n            i += 1;\n        }\n    }\n\n\n    function statement(noindent) {\n        var i = indent, r, s = scope, t = nexttoken;\n\n        if (t.id === \";\") {\n            advance(\";\");\n            return;\n        }\n\n        // Is this a labelled statement?\n\n        if (t.identifier && !t.reserved && peek().id === \":\") {\n            advance();\n            advance(\":\");\n            scope = Object.create(s);\n            addlabel(t.value, \"label\");\n\n            if (!nexttoken.labelled && nexttoken.value !== \"{\") {\n                warning(\"Label '{a}' on {b} statement.\", nexttoken, t.value, nexttoken.value);\n            }\n\n            if (jx.test(t.value + \":\")) {\n                warning(\"Label '{a}' looks like a javascript url.\", t, t.value);\n            }\n\n            nexttoken.label = t.value;\n            t = nexttoken;\n        }\n\n        // Is it a lonely block?\n\n        if (t.id === \"{\") {\n            block(true, true);\n            return;\n        }\n\n        // Parse the statement.\n\n        if (!noindent) {\n            indentation();\n        }\n        r = expression(0, true);\n\n        // Look for the final semicolon.\n\n        if (!t.block) {\n            if (!option.expr && (!r || !r.exps)) {\n                warning(\"Expected an assignment or function call and instead saw an expression.\",\n                    token);\n            } else if (option.nonew && r.id === \"(\" && r.left.id === \"new\") {\n                warning(\"Do not use 'new' for side effects.\", t);\n            }\n\n            if (nexttoken.id === \",\") {\n                return comma();\n            }\n\n            if (nexttoken.id !== \";\") {\n                if (!option.asi) {\n                    // If this is the last statement in a block that ends on\n                    // the same line *and* option lastsemic is on, ignore the warning.\n                    // Otherwise, complain about missing semicolon.\n                    if (!option.lastsemic || nexttoken.id !== \"}\" ||\n                            nexttoken.line !== token.line) {\n                        warningAt(\"Missing semicolon.\", token.line, token.character);\n                    }\n                }\n            } else {\n                adjacent(token, nexttoken);\n                advance(\";\");\n                nonadjacent(token, nexttoken);\n            }\n        }\n\n// Restore the indentation.\n\n        indent = i;\n        scope = s;\n        return r;\n    }\n\n\n    function statements(startLine) {\n        var a = [], p;\n\n        while (!nexttoken.reach && nexttoken.id !== \"(end)\") {\n            if (nexttoken.id === \";\") {\n                p = peek();\n                if (!p || p.id !== \"(\") {\n                    warning(\"Unnecessary semicolon.\");\n                }\n                advance(\";\");\n            } else {\n                a.push(statement(startLine === nexttoken.line));\n            }\n        }\n        return a;\n    }\n\n\n    /*\n     * read all directives\n     * recognizes a simple form of asi, but always\n     * warns, if it is used\n     */\n    function directives() {\n        var i, p, pn;\n\n        for (;;) {\n            if (nexttoken.id === \"(string)\") {\n                p = peek(0);\n                if (p.id === \"(endline)\") {\n                    i = 1;\n                    do {\n                        pn = peek(i);\n                        i = i + 1;\n                    } while (pn.id === \"(endline)\");\n\n                    if (pn.id !== \";\") {\n                        if (pn.id !== \"(string)\" && pn.id !== \"(number)\" &&\n                            pn.id !== \"(regexp)\" && pn.identifier !== true &&\n                            pn.id !== \"}\") {\n                            break;\n                        }\n                        warning(\"Missing semicolon.\", nexttoken);\n                    } else {\n                        p = pn;\n                    }\n                } else if (p.id === \"}\") {\n                    // directive with no other statements, warn about missing semicolon\n                    warning(\"Missing semicolon.\", p);\n                } else if (p.id !== \";\") {\n                    break;\n                }\n\n                indentation();\n                advance();\n                if (directive[token.value]) {\n                    warning(\"Unnecessary directive \\\"{a}\\\".\", token, token.value);\n                }\n\n                if (token.value === \"use strict\") {\n                    if (!option[\"(explicitNewcap)\"])\n                        option.newcap = true;\n                    option.undef = true;\n                }\n\n                // there's no directive negation, so always set to true\n                directive[token.value] = true;\n\n                if (p.id === \";\") {\n                    advance(\";\");\n                }\n                continue;\n            }\n            break;\n        }\n    }\n\n\n    /*\n     * Parses a single block. A block is a sequence of statements wrapped in\n     * braces.\n     *\n     * ordinary - true for everything but function bodies and try blocks.\n     * stmt     - true if block can be a single statement (e.g. in if/for/while).\n     * isfunc   - true if block is a function body\n     */\n    function block(ordinary, stmt, isfunc) {\n        var a,\n            b = inblock,\n            old_indent = indent,\n            m,\n            s = scope,\n            t,\n            line,\n            d;\n\n        inblock = ordinary;\n\n        if (!ordinary || !option.funcscope)\n            scope = Object.create(scope);\n\n        nonadjacent(token, nexttoken);\n        t = nexttoken;\n\n        var metrics = funct[\"(metrics)\"];\n        metrics.nestedBlockDepth += 1;\n        metrics.verifyMaxNestedBlockDepthPerFunction();\n\n        if (nexttoken.id === \"{\") {\n            advance(\"{\");\n            line = token.line;\n            if (nexttoken.id !== \"}\") {\n                indent += option.indent;\n                while (!ordinary && nexttoken.from > indent) {\n                    indent += option.indent;\n                }\n\n                if (isfunc) {\n                    m = {};\n                    for (d in directive) {\n                        if (is_own(directive, d)) {\n                            m[d] = directive[d];\n                        }\n                    }\n                    directives();\n\n                    if (option.strict && funct[\"(context)\"][\"(global)\"]) {\n                        if (!m[\"use strict\"] && !directive[\"use strict\"]) {\n                            warning(\"Missing \\\"use strict\\\" statement.\");\n                        }\n                    }\n                }\n\n                a = statements(line);\n\n                metrics.statementCount += a.length;\n\n                if (isfunc) {\n                    directive = m;\n                }\n\n                indent -= option.indent;\n                if (line !== nexttoken.line) {\n                    indentation();\n                }\n            } else if (line !== nexttoken.line) {\n                indentation();\n            }\n            advance(\"}\", t);\n            indent = old_indent;\n        } else if (!ordinary) {\n            error(\"Expected '{a}' and instead saw '{b}'.\",\n                  nexttoken, \"{\", nexttoken.value);\n        } else {\n            if (!stmt || option.curly)\n                warning(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, \"{\", nexttoken.value);\n\n            noreach = true;\n            indent += option.indent;\n            // test indentation only if statement is in new line\n            a = [statement(nexttoken.line === token.line)];\n            indent -= option.indent;\n            noreach = false;\n        }\n        funct[\"(verb)\"] = null;\n        if (!ordinary || !option.funcscope) scope = s;\n        inblock = b;\n        if (ordinary && option.noempty && (!a || a.length === 0)) {\n            warning(\"Empty block.\");\n        }\n        metrics.nestedBlockDepth -= 1;\n        return a;\n    }\n\n\n    function countMember(m) {\n        if (membersOnly && typeof membersOnly[m] !== \"boolean\") {\n            warning(\"Unexpected /*member '{a}'.\", token, m);\n        }\n        if (typeof member[m] === \"number\") {\n            member[m] += 1;\n        } else {\n            member[m] = 1;\n        }\n    }\n\n\n    function note_implied(token) {\n        var name = token.value, line = token.line, a = implied[name];\n        if (typeof a === \"function\") {\n            a = false;\n        }\n\n        if (!a) {\n            a = [line];\n            implied[name] = a;\n        } else if (a[a.length - 1] !== line) {\n            a.push(line);\n        }\n    }\n\n\n    // Build the syntax table by declaring the syntactic elements of the language.\n\n    type(\"(number)\", function () {\n        return this;\n    });\n\n    type(\"(string)\", function () {\n        return this;\n    });\n\n    syntax[\"(identifier)\"] = {\n        type: \"(identifier)\",\n        lbp: 0,\n        identifier: true,\n        nud: function () {\n            var v = this.value,\n                s = scope[v],\n                f;\n\n            if (typeof s === \"function\") {\n                // Protection against accidental inheritance.\n                s = undefined;\n            } else if (typeof s === \"boolean\") {\n                f = funct;\n                funct = functions[0];\n                addlabel(v, \"var\");\n                s = funct;\n                funct = f;\n            }\n\n            // The name is in scope and defined in the current function.\n            if (funct === s) {\n                // Change 'unused' to 'var', and reject labels.\n                switch (funct[v]) {\n                case \"unused\":\n                    funct[v] = \"var\";\n                    break;\n                case \"unction\":\n                    funct[v] = \"function\";\n                    this[\"function\"] = true;\n                    break;\n                case \"function\":\n                    this[\"function\"] = true;\n                    break;\n                case \"label\":\n                    warning(\"'{a}' is a statement label.\", token, v);\n                    break;\n                }\n            } else if (funct[\"(global)\"]) {\n                // The name is not defined in the function.  If we are in the global\n                // scope, then we have an undefined variable.\n                //\n                // Operators typeof and delete do not raise runtime errors even if\n                // the base object of a reference is null so no need to display warning\n                // if we're inside of typeof or delete.\n\n                if (option.undef && typeof predefined[v] !== \"boolean\") {\n                    // Attempting to subscript a null reference will throw an\n                    // error, even within the typeof and delete operators\n                    if (!(anonname === \"typeof\" || anonname === \"delete\") ||\n                        (nexttoken && (nexttoken.value === \".\" || nexttoken.value === \"[\"))) {\n\n                        isundef(funct, \"'{a}' is not defined.\", token, v);\n                    }\n                }\n\n                note_implied(token);\n            } else {\n                // If the name is already defined in the current\n                // function, but not as outer, then there is a scope error.\n\n                switch (funct[v]) {\n                case \"closure\":\n                case \"function\":\n                case \"var\":\n                case \"unused\":\n                    warning(\"'{a}' used out of scope.\", token, v);\n                    break;\n                case \"label\":\n                    warning(\"'{a}' is a statement label.\", token, v);\n                    break;\n                case \"outer\":\n                case \"global\":\n                    break;\n                default:\n                    // If the name is defined in an outer function, make an outer entry,\n                    // and if it was unused, make it var.\n                    if (s === true) {\n                        funct[v] = true;\n                    } else if (s === null) {\n                        warning(\"'{a}' is not allowed.\", token, v);\n                        note_implied(token);\n                    } else if (typeof s !== \"object\") {\n                        // Operators typeof and delete do not raise runtime errors even\n                        // if the base object of a reference is null so no need to\n                        // display warning if we're inside of typeof or delete.\n                        if (option.undef) {\n                            // Attempting to subscript a null reference will throw an\n                            // error, even within the typeof and delete operators\n                            if (!(anonname === \"typeof\" || anonname === \"delete\") ||\n                                (nexttoken &&\n                                    (nexttoken.value === \".\" || nexttoken.value === \"[\"))) {\n\n                                isundef(funct, \"'{a}' is not defined.\", token, v);\n                            }\n                        }\n                        funct[v] = true;\n                        note_implied(token);\n                    } else {\n                        switch (s[v]) {\n                        case \"function\":\n                        case \"unction\":\n                            this[\"function\"] = true;\n                            s[v] = \"closure\";\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"var\":\n                        case \"unused\":\n                            s[v] = \"closure\";\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"closure\":\n                            funct[v] = s[\"(global)\"] ? \"global\" : \"outer\";\n                            break;\n                        case \"label\":\n                            warning(\"'{a}' is a statement label.\", token, v);\n                        }\n                    }\n                }\n            }\n            return this;\n        },\n        led: function () {\n            error(\"Expected an operator and instead saw '{a}'.\",\n                nexttoken, nexttoken.value);\n        }\n    };\n\n    type(\"(regexp)\", function () {\n        return this;\n    });\n\n\n// ECMAScript parser\n\n    delim(\"(endline)\");\n    delim(\"(begin)\");\n    delim(\"(end)\").reach = true;\n    delim(\"</\").reach = true;\n    delim(\"<!\");\n    delim(\"<!--\");\n    delim(\"-->\");\n    delim(\"(error)\").reach = true;\n    delim(\"}\").reach = true;\n    delim(\")\");\n    delim(\"]\");\n    delim(\"\\\"\").reach = true;\n    delim(\"'\").reach = true;\n    delim(\";\");\n    delim(\":\").reach = true;\n    delim(\",\");\n    delim(\"#\");\n    delim(\"@\");\n    reserve(\"else\");\n    reserve(\"case\").reach = true;\n    reserve(\"catch\");\n    reserve(\"default\").reach = true;\n    reserve(\"finally\");\n    reservevar(\"arguments\", function (x) {\n        if (directive[\"use strict\"] && funct[\"(global)\"]) {\n            warning(\"Strict violation.\", x);\n        }\n    });\n    reservevar(\"eval\");\n    reservevar(\"false\");\n    reservevar(\"Infinity\");\n    reservevar(\"null\");\n    reservevar(\"this\", function (x) {\n        if (directive[\"use strict\"] && !option.validthis && ((funct[\"(statement)\"] &&\n                funct[\"(name)\"].charAt(0) > \"Z\") || funct[\"(global)\"])) {\n            warning(\"Possible strict violation.\", x);\n        }\n    });\n    reservevar(\"true\");\n    reservevar(\"undefined\");\n    assignop(\"=\", \"assign\", 20);\n    assignop(\"+=\", \"assignadd\", 20);\n    assignop(\"-=\", \"assignsub\", 20);\n    assignop(\"*=\", \"assignmult\", 20);\n    assignop(\"/=\", \"assigndiv\", 20).nud = function () {\n        error(\"A regular expression literal can be confused with '/='.\");\n    };\n    assignop(\"%=\", \"assignmod\", 20);\n    bitwiseassignop(\"&=\", \"assignbitand\", 20);\n    bitwiseassignop(\"|=\", \"assignbitor\", 20);\n    bitwiseassignop(\"^=\", \"assignbitxor\", 20);\n    bitwiseassignop(\"<<=\", \"assignshiftleft\", 20);\n    bitwiseassignop(\">>=\", \"assignshiftright\", 20);\n    bitwiseassignop(\">>>=\", \"assignshiftrightunsigned\", 20);\n    infix(\"?\", function (left, that) {\n        that.left = left;\n        that.right = expression(10);\n        advance(\":\");\n        that[\"else\"] = expression(10);\n        return that;\n    }, 30);\n\n    infix(\"||\", \"or\", 40);\n    infix(\"&&\", \"and\", 50);\n    bitwise(\"|\", \"bitor\", 70);\n    bitwise(\"^\", \"bitxor\", 80);\n    bitwise(\"&\", \"bitand\", 90);\n    relation(\"==\", function (left, right) {\n        var eqnull = option.eqnull && (left.value === \"null\" || right.value === \"null\");\n\n        if (!eqnull && option.eqeqeq)\n            warning(\"Expected '{a}' and instead saw '{b}'.\", this, \"===\", \"==\");\n        else if (isPoorRelation(left))\n            warning(\"Use '{a}' to compare with '{b}'.\", this, \"===\", left.value);\n        else if (isPoorRelation(right))\n            warning(\"Use '{a}' to compare with '{b}'.\", this, \"===\", right.value);\n\n        return this;\n    });\n    relation(\"===\");\n    relation(\"!=\", function (left, right) {\n        var eqnull = option.eqnull &&\n                (left.value === \"null\" || right.value === \"null\");\n\n        if (!eqnull && option.eqeqeq) {\n            warning(\"Expected '{a}' and instead saw '{b}'.\",\n                    this, \"!==\", \"!=\");\n        } else if (isPoorRelation(left)) {\n            warning(\"Use '{a}' to compare with '{b}'.\",\n                    this, \"!==\", left.value);\n        } else if (isPoorRelation(right)) {\n            warning(\"Use '{a}' to compare with '{b}'.\",\n                    this, \"!==\", right.value);\n        }\n        return this;\n    });\n    relation(\"!==\");\n    relation(\"<\");\n    relation(\">\");\n    relation(\"<=\");\n    relation(\">=\");\n    bitwise(\"<<\", \"shiftleft\", 120);\n    bitwise(\">>\", \"shiftright\", 120);\n    bitwise(\">>>\", \"shiftrightunsigned\", 120);\n    infix(\"in\", \"in\", 120);\n    infix(\"instanceof\", \"instanceof\", 120);\n    infix(\"+\", function (left, that) {\n        var right = expression(130);\n        if (left && right && left.id === \"(string)\" && right.id === \"(string)\") {\n            left.value += right.value;\n            left.character = right.character;\n            if (!option.scripturl && jx.test(left.value)) {\n                warning(\"JavaScript URL.\", left);\n            }\n            return left;\n        }\n        that.left = left;\n        that.right = right;\n        return that;\n    }, 130);\n    prefix(\"+\", \"num\");\n    prefix(\"+++\", function () {\n        warning(\"Confusing pluses.\");\n        this.right = expression(150);\n        this.arity = \"unary\";\n        return this;\n    });\n    infix(\"+++\", function (left) {\n        warning(\"Confusing pluses.\");\n        this.left = left;\n        this.right = expression(130);\n        return this;\n    }, 130);\n    infix(\"-\", \"sub\", 130);\n    prefix(\"-\", \"neg\");\n    prefix(\"---\", function () {\n        warning(\"Confusing minuses.\");\n        this.right = expression(150);\n        this.arity = \"unary\";\n        return this;\n    });\n    infix(\"---\", function (left) {\n        warning(\"Confusing minuses.\");\n        this.left = left;\n        this.right = expression(130);\n        return this;\n    }, 130);\n    infix(\"*\", \"mult\", 140);\n    infix(\"/\", \"div\", 140);\n    infix(\"%\", \"mod\", 140);\n\n    suffix(\"++\", \"postinc\");\n    prefix(\"++\", \"preinc\");\n    syntax[\"++\"].exps = true;\n\n    suffix(\"--\", \"postdec\");\n    prefix(\"--\", \"predec\");\n    syntax[\"--\"].exps = true;\n    prefix(\"delete\", function () {\n        var p = expression(0);\n        if (!p || (p.id !== \".\" && p.id !== \"[\")) {\n            warning(\"Variables should not be deleted.\");\n        }\n        this.first = p;\n        return this;\n    }).exps = true;\n\n    prefix(\"~\", function () {\n        if (option.bitwise) {\n            warning(\"Unexpected '{a}'.\", this, \"~\");\n        }\n        expression(150);\n        return this;\n    });\n\n    prefix(\"!\", function () {\n        this.right = expression(150);\n        this.arity = \"unary\";\n        if (bang[this.right.id] === true) {\n            warning(\"Confusing use of '{a}'.\", this, \"!\");\n        }\n        return this;\n    });\n    prefix(\"typeof\", \"typeof\");\n    prefix(\"new\", function () {\n        var c = expression(155), i;\n        if (c && c.id !== \"function\") {\n            if (c.identifier) {\n                c[\"new\"] = true;\n                switch (c.value) {\n                case \"Number\":\n                case \"String\":\n                case \"Boolean\":\n                case \"Math\":\n                case \"JSON\":\n                    warning(\"Do not use {a} as a constructor.\", prevtoken, c.value);\n                    break;\n                case \"Function\":\n                    if (!option.evil) {\n                        warning(\"The Function constructor is eval.\");\n                    }\n                    break;\n                case \"Date\":\n                case \"RegExp\":\n                    break;\n                default:\n                    if (c.id !== \"function\") {\n                        i = c.value.substr(0, 1);\n                        if (option.newcap && (i < \"A\" || i > \"Z\") && !is_own(global, c.value)) {\n                            warning(\"A constructor name should start with an uppercase letter.\",\n                                token);\n                        }\n                    }\n                }\n            } else {\n                if (c.id !== \".\" && c.id !== \"[\" && c.id !== \"(\") {\n                    warning(\"Bad constructor.\", token);\n                }\n            }\n        } else {\n            if (!option.supernew)\n                warning(\"Weird construction. Delete 'new'.\", this);\n        }\n        adjacent(token, nexttoken);\n        if (nexttoken.id !== \"(\" && !option.supernew) {\n            warning(\"Missing '()' invoking a constructor.\",\n                token, token.value);\n        }\n        this.first = c;\n        return this;\n    });\n    syntax[\"new\"].exps = true;\n\n    prefix(\"void\").exps = true;\n\n    infix(\".\", function (left, that) {\n        adjacent(prevtoken, token);\n        nobreak();\n        var m = identifier();\n        if (typeof m === \"string\") {\n            countMember(m);\n        }\n        that.left = left;\n        that.right = m;\n        if (left && left.value === \"arguments\" && (m === \"callee\" || m === \"caller\")) {\n            if (option.noarg)\n                warning(\"Avoid arguments.{a}.\", left, m);\n            else if (directive[\"use strict\"])\n                error(\"Strict violation.\");\n        } else if (!option.evil && left && left.value === \"document\" &&\n                (m === \"write\" || m === \"writeln\")) {\n            warning(\"document.write can be a form of eval.\", left);\n        }\n        if (!option.evil && (m === \"eval\" || m === \"execScript\")) {\n            warning(\"eval is evil.\");\n        }\n        return that;\n    }, 160, true);\n\n    infix(\"(\", function (left, that) {\n        if (prevtoken.id !== \"}\" && prevtoken.id !== \")\") {\n            nobreak(prevtoken, token);\n        }\n        nospace();\n        if (option.immed && !left.immed && left.id === \"function\") {\n            warning(\"Wrap an immediate function invocation in parentheses \" +\n                \"to assist the reader in understanding that the expression \" +\n                \"is the result of a function, and not the function itself.\");\n        }\n        var n = 0,\n            p = [];\n        if (left) {\n            if (left.type === \"(identifier)\") {\n                if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {\n                    if (\"Number String Boolean Date Object\".indexOf(left.value) === -1) {\n                        if (left.value === \"Math\") {\n                            warning(\"Math is not a function.\", left);\n                        } else if (option.newcap) {\n                            warning(\"Missing 'new' prefix when invoking a constructor.\", left);\n                        }\n                    }\n                }\n            }\n        }\n        if (nexttoken.id !== \")\") {\n            for (;;) {\n                p[p.length] = expression(10);\n                n += 1;\n                if (nexttoken.id !== \",\") {\n                    break;\n                }\n                comma();\n            }\n        }\n        advance(\")\");\n        nospace(prevtoken, token);\n        if (typeof left === \"object\") {\n            if (left.value === \"parseInt\" && n === 1) {\n                warning(\"Missing radix parameter.\", token);\n            }\n            if (!option.evil) {\n                if (left.value === \"eval\" || left.value === \"Function\" ||\n                        left.value === \"execScript\") {\n                    warning(\"eval is evil.\", left);\n\n                    if (p[0] && [0].id === \"(string)\") {\n                        addInternalSrc(left, p[0].value);\n                    }\n                } else if (p[0] && p[0].id === \"(string)\" &&\n                       (left.value === \"setTimeout\" ||\n                        left.value === \"setInterval\")) {\n                    warning(\n    \"Implied eval is evil. Pass a function instead of a string.\", left);\n                    addInternalSrc(left, p[0].value);\n\n                // window.setTimeout/setInterval\n                } else if (p[0] && p[0].id === \"(string)\" &&\n                       left.value === \".\" &&\n                       left.left.value === \"window\" &&\n                       (left.right === \"setTimeout\" ||\n                        left.right === \"setInterval\")) {\n                    warning(\n    \"Implied eval is evil. Pass a function instead of a string.\", left);\n                    addInternalSrc(left, p[0].value);\n                }\n            }\n            if (!left.identifier && left.id !== \".\" && left.id !== \"[\" &&\n                    left.id !== \"(\" && left.id !== \"&&\" && left.id !== \"||\" &&\n                    left.id !== \"?\") {\n                warning(\"Bad invocation.\", left);\n            }\n        }\n        that.left = left;\n        return that;\n    }, 155, true).exps = true;\n\n    prefix(\"(\", function () {\n        nospace();\n        if (nexttoken.id === \"function\") {\n            nexttoken.immed = true;\n        }\n        var v = expression(0);\n        advance(\")\", this);\n        nospace(prevtoken, token);\n        if (option.immed && v.id === \"function\") {\n            if (nexttoken.id !== \"(\" &&\n              (nexttoken.id !== \".\" || (peek().value !== \"call\" && peek().value !== \"apply\"))) {\n                warning(\n\"Do not wrap function literals in parens unless they are to be immediately invoked.\",\n                        this);\n            }\n        }\n\n        return v;\n    });\n\n    infix(\"[\", function (left, that) {\n        nobreak(prevtoken, token);\n        nospace();\n        var e = expression(0), s;\n        if (e && e.type === \"(string)\") {\n            if (!option.evil && (e.value === \"eval\" || e.value === \"execScript\")) {\n                warning(\"eval is evil.\", that);\n            }\n            countMember(e.value);\n            if (!option.sub && ix.test(e.value)) {\n                s = syntax[e.value];\n                if (!s || !s.reserved) {\n                    warning(\"['{a}'] is better written in dot notation.\",\n                            prevtoken, e.value);\n                }\n            }\n        }\n        advance(\"]\", that);\n        nospace(prevtoken, token);\n        that.left = left;\n        that.right = e;\n        return that;\n    }, 160, true);\n\n    prefix(\"[\", function () {\n        var b = token.line !== nexttoken.line;\n        this.first = [];\n        if (b) {\n            indent += option.indent;\n            if (nexttoken.from === indent + option.indent) {\n                indent += option.indent;\n            }\n        }\n        while (nexttoken.id !== \"(end)\") {\n            while (nexttoken.id === \",\") {\n                if (!option.es5)\n                    warning(\"Extra comma.\");\n                advance(\",\");\n            }\n            if (nexttoken.id === \"]\") {\n                break;\n            }\n            if (b && token.line !== nexttoken.line) {\n                indentation();\n            }\n            this.first.push(expression(10));\n            if (nexttoken.id === \",\") {\n                comma();\n                if (nexttoken.id === \"]\" && !option.es5) {\n                    warning(\"Extra comma.\", token);\n                    break;\n                }\n            } else {\n                break;\n            }\n        }\n        if (b) {\n            indent -= option.indent;\n            indentation();\n        }\n        advance(\"]\", this);\n        return this;\n    }, 160);\n\n\n    function property_name() {\n        var id = optionalidentifier(true);\n        if (!id) {\n            if (nexttoken.id === \"(string)\") {\n                id = nexttoken.value;\n                advance();\n            } else if (nexttoken.id === \"(number)\") {\n                id = nexttoken.value.toString();\n                advance();\n            }\n        }\n        return id;\n    }\n\n\n    function functionparams() {\n        var next   = nexttoken;\n        var params = [];\n        var ident;\n\n        advance(\"(\");\n        nospace();\n\n        if (nexttoken.id === \")\") {\n            advance(\")\");\n            return;\n        }\n\n        for (;;) {\n            ident = identifier(true);\n            params.push(ident);\n            addlabel(ident, \"unused\", token);\n            if (nexttoken.id === \",\") {\n                comma();\n            } else {\n                advance(\")\", next);\n                nospace(prevtoken, token);\n                return params;\n            }\n        }\n    }\n\n\n    function doFunction(name, statement) {\n        var f;\n        var oldOption = option;\n        var oldScope  = scope;\n\n        option = Object.create(option);\n        scope  = Object.create(scope);\n\n        funct = {\n            \"(name)\"     : name || \"\\\"\" + anonname + \"\\\"\",\n            \"(line)\"     : nexttoken.line,\n            \"(character)\": nexttoken.character,\n            \"(context)\"  : funct,\n            \"(breakage)\" : 0,\n            \"(loopage)\"  : 0,\n            \"(metrics)\"  : createMetrics(nexttoken),\n            \"(scope)\"    : scope,\n            \"(statement)\": statement,\n            \"(tokens)\"   : {}\n        };\n\n        f = funct;\n        token.funct = funct;\n\n        functions.push(funct);\n\n        if (name) {\n            addlabel(name, \"function\");\n        }\n\n        funct[\"(params)\"] = functionparams();\n        funct[\"(metrics)\"].verifyMaxParametersPerFunction(funct[\"(params)\"]);\n\n        block(false, false, true);\n\n        funct[\"(metrics)\"].verifyMaxStatementsPerFunction();\n        funct[\"(metrics)\"].verifyMaxComplexityPerFunction();\n\n        scope = oldScope;\n        option = oldOption;\n        funct[\"(last)\"] = token.line;\n        funct[\"(lastcharacter)\"] = token.character;\n        funct = funct[\"(context)\"];\n\n        return f;\n    }\n\n    function createMetrics(functionStartToken) {\n        return {\n            statementCount: 0,\n            nestedBlockDepth: -1,\n            ComplexityCount: 1,\n            verifyMaxStatementsPerFunction: function () {\n                if (option.maxstatements &&\n                    this.statementCount > option.maxstatements) {\n                    var message = \"Too many statements per function (\" + this.statementCount + \").\";\n                    warning(message, functionStartToken);\n                }\n            },\n\n            verifyMaxParametersPerFunction: function (params) {\n                params = params || [];\n\n                if (option.maxparams && params.length > option.maxparams) {\n                    var message = \"Too many parameters per function (\" + params.length + \").\";\n                    warning(message, functionStartToken);\n                }\n            },\n\n            verifyMaxNestedBlockDepthPerFunction: function () {\n                if (option.maxdepth &&\n                    this.nestedBlockDepth > 0 &&\n                    this.nestedBlockDepth === option.maxdepth + 1) {\n                    var message = \"Blocks are nested too deeply (\" + this.nestedBlockDepth + \").\";\n                    warning(message);\n                }\n            },\n\n            verifyMaxComplexityPerFunction: function () {\n                var max = option.maxcomplexity;\n                var cc = this.ComplexityCount;\n                if (max && cc > max) {\n                    var message = \"Cyclomatic complexity is too high per function (\" + cc + \").\";\n                    warning(message, functionStartToken);\n                }\n            }\n        };\n    }\n\n    function increaseComplexityCount() {\n        funct[\"(metrics)\"].ComplexityCount += 1;\n    }\n\n\n    (function (x) {\n        x.nud = function () {\n            var b, f, i, p, t;\n            var props = {}; // All properties, including accessors\n\n            function saveProperty(name, token) {\n                if (props[name] && is_own(props, name))\n                    warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                else\n                    props[name] = {};\n\n                props[name].basic = true;\n                props[name].basicToken = token;\n            }\n\n            function saveSetter(name, token) {\n                if (props[name] && is_own(props, name)) {\n                    if (props[name].basic || props[name].setter)\n                        warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                } else {\n                    props[name] = {};\n                }\n\n                props[name].setter = true;\n                props[name].setterToken = token;\n            }\n\n            function saveGetter(name) {\n                if (props[name] && is_own(props, name)) {\n                    if (props[name].basic || props[name].getter)\n                        warning(\"Duplicate member '{a}'.\", nexttoken, i);\n                } else {\n                    props[name] = {};\n                }\n\n                props[name].getter = true;\n                props[name].getterToken = token;\n            }\n\n            b = token.line !== nexttoken.line;\n            if (b) {\n                indent += option.indent;\n                if (nexttoken.from === indent + option.indent) {\n                    indent += option.indent;\n                }\n            }\n            for (;;) {\n                if (nexttoken.id === \"}\") {\n                    break;\n                }\n                if (b) {\n                    indentation();\n                }\n                if (nexttoken.value === \"get\" && peek().id !== \":\") {\n                    advance(\"get\");\n                    if (!option.es5) {\n                        error(\"get/set are ES5 features.\");\n                    }\n                    i = property_name();\n                    if (!i) {\n                        error(\"Missing property name.\");\n                    }\n                    saveGetter(i);\n                    t = nexttoken;\n                    adjacent(token, nexttoken);\n                    f = doFunction();\n                    p = f[\"(params)\"];\n                    if (p) {\n                        warning(\"Unexpected parameter '{a}' in get {b} function.\", t, p[0], i);\n                    }\n                    adjacent(token, nexttoken);\n                } else if (nexttoken.value === \"set\" && peek().id !== \":\") {\n                    advance(\"set\");\n                    if (!option.es5) {\n                        error(\"get/set are ES5 features.\");\n                    }\n                    i = property_name();\n                    if (!i) {\n                        error(\"Missing property name.\");\n                    }\n                    saveSetter(i, nexttoken);\n                    t = nexttoken;\n                    adjacent(token, nexttoken);\n                    f = doFunction();\n                    p = f[\"(params)\"];\n                    if (!p || p.length !== 1) {\n                        warning(\"Expected a single parameter in set {a} function.\", t, i);\n                    }\n                } else {\n                    i = property_name();\n                    saveProperty(i, nexttoken);\n                    if (typeof i !== \"string\") {\n                        break;\n                    }\n                    advance(\":\");\n                    nonadjacent(token, nexttoken);\n                    expression(10);\n                }\n\n                countMember(i);\n                if (nexttoken.id === \",\") {\n                    comma();\n                    if (nexttoken.id === \",\") {\n                        warning(\"Extra comma.\", token);\n                    } else if (nexttoken.id === \"}\" && !option.es5) {\n                        warning(\"Extra comma.\", token);\n                    }\n                } else {\n                    break;\n                }\n            }\n            if (b) {\n                indent -= option.indent;\n                indentation();\n            }\n            advance(\"}\", this);\n\n            // Check for lonely setters if in the ES5 mode.\n            if (option.es5) {\n                for (var name in props) {\n                    if (is_own(props, name) && props[name].setter && !props[name].getter) {\n                        warning(\"Setter is defined without getter.\", props[name].setterToken);\n                    }\n                }\n            }\n            return this;\n        };\n        x.fud = function () {\n            error(\"Expected to see a statement and instead saw a block.\", token);\n        };\n    }(delim(\"{\")));\n\n// This Function is called when esnext option is set to true\n// it adds the `const` statement to JSHINT\n\n    useESNextSyntax = function () {\n        var conststatement = stmt(\"const\", function (prefix) {\n            var id, name, value;\n\n            this.first = [];\n            for (;;) {\n                nonadjacent(token, nexttoken);\n                id = identifier();\n                if (funct[id] === \"const\") {\n                    warning(\"const '\" + id + \"' has already been declared\");\n                }\n                if (funct[\"(global)\"] && predefined[id] === false) {\n                    warning(\"Redefinition of '{a}'.\", token, id);\n                }\n                addlabel(id, \"const\");\n                if (prefix) {\n                    break;\n                }\n                name = token;\n                this.first.push(token);\n\n                if (nexttoken.id !== \"=\") {\n                    warning(\"const \" +\n                      \"'{a}' is initialized to 'undefined'.\", token, id);\n                }\n\n                if (nexttoken.id === \"=\") {\n                    nonadjacent(token, nexttoken);\n                    advance(\"=\");\n                    nonadjacent(token, nexttoken);\n                    if (nexttoken.id === \"undefined\") {\n                        warning(\"It is not necessary to initialize \" +\n                          \"'{a}' to 'undefined'.\", token, id);\n                    }\n                    if (peek(0).id === \"=\" && nexttoken.identifier) {\n                        error(\"Constant {a} was not declared correctly.\",\n                                nexttoken, nexttoken.value);\n                    }\n                    value = expression(0);\n                    name.first = value;\n                }\n\n                if (nexttoken.id !== \",\") {\n                    break;\n                }\n                comma();\n            }\n            return this;\n        });\n        conststatement.exps = true;\n    };\n\n    var varstatement = stmt(\"var\", function (prefix) {\n        // JavaScript does not have block scope. It only has function scope. So,\n        // declaring a variable in a block can have unexpected consequences.\n        var id, name, value;\n\n        if (funct[\"(onevar)\"] && option.onevar) {\n            warning(\"Too many var statements.\");\n        } else if (!funct[\"(global)\"]) {\n            funct[\"(onevar)\"] = true;\n        }\n\n        this.first = [];\n\n        for (;;) {\n            nonadjacent(token, nexttoken);\n            id = identifier();\n\n            if (option.esnext && funct[id] === \"const\") {\n                warning(\"const '\" + id + \"' has already been declared\");\n            }\n\n            if (funct[\"(global)\"] && predefined[id] === false) {\n                warning(\"Redefinition of '{a}'.\", token, id);\n            }\n\n            addlabel(id, \"unused\", token);\n\n            if (prefix) {\n                break;\n            }\n\n            name = token;\n            this.first.push(token);\n\n            if (nexttoken.id === \"=\") {\n                nonadjacent(token, nexttoken);\n                advance(\"=\");\n                nonadjacent(token, nexttoken);\n                if (nexttoken.id === \"undefined\") {\n                    warning(\"It is not necessary to initialize '{a}' to 'undefined'.\", token, id);\n                }\n                if (peek(0).id === \"=\" && nexttoken.identifier) {\n                    error(\"Variable {a} was not declared correctly.\",\n                            nexttoken, nexttoken.value);\n                }\n                value = expression(0);\n                name.first = value;\n            }\n            if (nexttoken.id !== \",\") {\n                break;\n            }\n            comma();\n        }\n        return this;\n    });\n    varstatement.exps = true;\n\n    blockstmt(\"function\", function () {\n        if (inblock) {\n            warning(\"Function declarations should not be placed in blocks. \" +\n                \"Use a function expression or move the statement to the top of \" +\n                \"the outer function.\", token);\n\n        }\n        var i = identifier();\n        if (option.esnext && funct[i] === \"const\") {\n            warning(\"const '\" + i + \"' has already been declared\");\n        }\n        adjacent(token, nexttoken);\n        addlabel(i, \"unction\", token);\n\n        doFunction(i, { statement: true });\n        if (nexttoken.id === \"(\" && nexttoken.line === token.line) {\n            error(\n\"Function declarations are not invocable. Wrap the whole function invocation in parens.\");\n        }\n        return this;\n    });\n\n    prefix(\"function\", function () {\n        var i = optionalidentifier();\n        if (i) {\n            adjacent(token, nexttoken);\n        } else {\n            nonadjacent(token, nexttoken);\n        }\n        doFunction(i);\n        if (!option.loopfunc && funct[\"(loopage)\"]) {\n            warning(\"Don't make functions within a loop.\");\n        }\n        return this;\n    });\n\n    blockstmt(\"if\", function () {\n        var t = nexttoken;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(20);\n        if (nexttoken.id === \"=\") {\n            if (!option.boss)\n                warning(\"Expected a conditional expression and instead saw an assignment.\");\n            advance(\"=\");\n            expression(20);\n        }\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n        if (nexttoken.id === \"else\") {\n            nonadjacent(token, nexttoken);\n            advance(\"else\");\n            if (nexttoken.id === \"if\" || nexttoken.id === \"switch\") {\n                statement(true);\n            } else {\n                block(true, true);\n            }\n        }\n        return this;\n    });\n\n    blockstmt(\"try\", function () {\n        var b;\n\n        function doCatch() {\n            var oldScope = scope;\n            var e;\n\n            advance(\"catch\");\n            nonadjacent(token, nexttoken);\n            advance(\"(\");\n\n            scope = Object.create(oldScope);\n\n            e = nexttoken.value;\n            if (nexttoken.type !== \"(identifier)\") {\n                e = null;\n                warning(\"Expected an identifier and instead saw '{a}'.\", nexttoken, e);\n            }\n\n            advance();\n            advance(\")\");\n\n            funct = {\n                \"(name)\"     : \"(catch)\",\n                \"(line)\"     : nexttoken.line,\n                \"(character)\": nexttoken.character,\n                \"(context)\"  : funct,\n                \"(breakage)\" : funct[\"(breakage)\"],\n                \"(loopage)\"  : funct[\"(loopage)\"],\n                \"(scope)\"    : scope,\n                \"(statement)\": false,\n                \"(metrics)\"  : createMetrics(nexttoken),\n                \"(catch)\"    : true,\n                \"(tokens)\"   : {}\n            };\n\n            if (e) {\n                addlabel(e, \"exception\");\n            }\n\n            token.funct = funct;\n            functions.push(funct);\n\n            block(false);\n\n            scope = oldScope;\n\n            funct[\"(last)\"] = token.line;\n            funct[\"(lastcharacter)\"] = token.character;\n            funct = funct[\"(context)\"];\n        }\n\n        block(false);\n\n        if (nexttoken.id === \"catch\") {\n            increaseComplexityCount();\n            doCatch();\n            b = true;\n        }\n\n        if (nexttoken.id === \"finally\") {\n            advance(\"finally\");\n            block(false);\n            return;\n        } else if (!b) {\n            error(\"Expected '{a}' and instead saw '{b}'.\",\n                    nexttoken, \"catch\", nexttoken.value);\n        }\n\n        return this;\n    });\n\n    blockstmt(\"while\", function () {\n        var t = nexttoken;\n        funct[\"(breakage)\"] += 1;\n        funct[\"(loopage)\"] += 1;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(20);\n        if (nexttoken.id === \"=\") {\n            if (!option.boss)\n                warning(\"Expected a conditional expression and instead saw an assignment.\");\n            advance(\"=\");\n            expression(20);\n        }\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n        funct[\"(breakage)\"] -= 1;\n        funct[\"(loopage)\"] -= 1;\n        return this;\n    }).labelled = true;\n\n    blockstmt(\"with\", function () {\n        var t = nexttoken;\n        if (directive[\"use strict\"]) {\n            error(\"'with' is not allowed in strict mode.\", token);\n        } else if (!option.withstmt) {\n            warning(\"Don't use 'with'.\", token);\n        }\n\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        expression(0);\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        block(true, true);\n\n        return this;\n    });\n\n    blockstmt(\"switch\", function () {\n        var t = nexttoken,\n            g = false;\n        funct[\"(breakage)\"] += 1;\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        this.condition = expression(20);\n        advance(\")\", t);\n        nospace(prevtoken, token);\n        nonadjacent(token, nexttoken);\n        t = nexttoken;\n        advance(\"{\");\n        nonadjacent(token, nexttoken);\n        indent += option.indent;\n        this.cases = [];\n        for (;;) {\n            switch (nexttoken.id) {\n            case \"case\":\n                switch (funct[\"(verb)\"]) {\n                case \"break\":\n                case \"case\":\n                case \"continue\":\n                case \"return\":\n                case \"switch\":\n                case \"throw\":\n                    break;\n                default:\n                    // You can tell JSHint that you don't use break intentionally by\n                    // adding a comment /* falls through */ on a line just before\n                    // the next `case`.\n                    if (!ft.test(lines[nexttoken.line - 2])) {\n                        warning(\n                            \"Expected a 'break' statement before 'case'.\",\n                            token);\n                    }\n                }\n                indentation(-option.indent);\n                advance(\"case\");\n                this.cases.push(expression(20));\n                increaseComplexityCount();\n                g = true;\n                advance(\":\");\n                funct[\"(verb)\"] = \"case\";\n                break;\n            case \"default\":\n                switch (funct[\"(verb)\"]) {\n                case \"break\":\n                case \"continue\":\n                case \"return\":\n                case \"throw\":\n                    break;\n                default:\n                    if (!ft.test(lines[nexttoken.line - 2])) {\n                        warning(\n                            \"Expected a 'break' statement before 'default'.\",\n                            token);\n                    }\n                }\n                indentation(-option.indent);\n                advance(\"default\");\n                g = true;\n                advance(\":\");\n                break;\n            case \"}\":\n                indent -= option.indent;\n                indentation();\n                advance(\"}\", t);\n                if (this.cases.length === 1 || this.condition.id === \"true\" ||\n                        this.condition.id === \"false\") {\n                    if (!option.onecase)\n                        warning(\"This 'switch' should be an 'if'.\", this);\n                }\n                funct[\"(breakage)\"] -= 1;\n                funct[\"(verb)\"] = undefined;\n                return;\n            case \"(end)\":\n                error(\"Missing '{a}'.\", nexttoken, \"}\");\n                return;\n            default:\n                if (g) {\n                    switch (token.id) {\n                    case \",\":\n                        error(\"Each value should have its own case label.\");\n                        return;\n                    case \":\":\n                        g = false;\n                        statements();\n                        break;\n                    default:\n                        error(\"Missing ':' on a case clause.\", token);\n                        return;\n                    }\n                } else {\n                    if (token.id === \":\") {\n                        advance(\":\");\n                        error(\"Unexpected '{a}'.\", token, \":\");\n                        statements();\n                    } else {\n                        error(\"Expected '{a}' and instead saw '{b}'.\",\n                            nexttoken, \"case\", nexttoken.value);\n                        return;\n                    }\n                }\n            }\n        }\n    }).labelled = true;\n\n    stmt(\"debugger\", function () {\n        if (!option.debug) {\n            warning(\"All 'debugger' statements should be removed.\");\n        }\n        return this;\n    }).exps = true;\n\n    (function () {\n        var x = stmt(\"do\", function () {\n            funct[\"(breakage)\"] += 1;\n            funct[\"(loopage)\"] += 1;\n            increaseComplexityCount();\n\n            this.first = block(true);\n            advance(\"while\");\n            var t = nexttoken;\n            nonadjacent(token, t);\n            advance(\"(\");\n            nospace();\n            expression(20);\n            if (nexttoken.id === \"=\") {\n                if (!option.boss)\n                    warning(\"Expected a conditional expression and instead saw an assignment.\");\n                advance(\"=\");\n                expression(20);\n            }\n            advance(\")\", t);\n            nospace(prevtoken, token);\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        });\n        x.labelled = true;\n        x.exps = true;\n    }());\n\n    blockstmt(\"for\", function () {\n        var s, t = nexttoken;\n        funct[\"(breakage)\"] += 1;\n        funct[\"(loopage)\"] += 1;\n        increaseComplexityCount();\n        advance(\"(\");\n        nonadjacent(this, t);\n        nospace();\n        if (peek(nexttoken.id === \"var\" ? 1 : 0).id === \"in\") {\n            if (nexttoken.id === \"var\") {\n                advance(\"var\");\n                varstatement.fud.call(varstatement, true);\n            } else {\n                switch (funct[nexttoken.value]) {\n                case \"unused\":\n                    funct[nexttoken.value] = \"var\";\n                    break;\n                case \"var\":\n                    break;\n                default:\n                    warning(\"Bad for in variable '{a}'.\",\n                            nexttoken, nexttoken.value);\n                }\n                advance();\n            }\n            advance(\"in\");\n            expression(20);\n            advance(\")\", t);\n            s = block(true, true);\n            if (option.forin && s && (s.length > 1 || typeof s[0] !== \"object\" ||\n                    s[0].value !== \"if\")) {\n                warning(\"The body of a for in should be wrapped in an if statement to filter \" +\n                        \"unwanted properties from the prototype.\", this);\n            }\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        } else {\n            if (nexttoken.id !== \";\") {\n                if (nexttoken.id === \"var\") {\n                    advance(\"var\");\n                    varstatement.fud.call(varstatement);\n                } else {\n                    for (;;) {\n                        expression(0, \"for\");\n                        if (nexttoken.id !== \",\") {\n                            break;\n                        }\n                        comma();\n                    }\n                }\n            }\n            nolinebreak(token);\n            advance(\";\");\n            if (nexttoken.id !== \";\") {\n                expression(20);\n                if (nexttoken.id === \"=\") {\n                    if (!option.boss)\n                        warning(\"Expected a conditional expression and instead saw an assignment.\");\n                    advance(\"=\");\n                    expression(20);\n                }\n            }\n            nolinebreak(token);\n            advance(\";\");\n            if (nexttoken.id === \";\") {\n                error(\"Expected '{a}' and instead saw '{b}'.\",\n                        nexttoken, \")\", \";\");\n            }\n            if (nexttoken.id !== \")\") {\n                for (;;) {\n                    expression(0, \"for\");\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    comma();\n                }\n            }\n            advance(\")\", t);\n            nospace(prevtoken, token);\n            block(true, true);\n            funct[\"(breakage)\"] -= 1;\n            funct[\"(loopage)\"] -= 1;\n            return this;\n        }\n    }).labelled = true;\n\n\n    stmt(\"break\", function () {\n        var v = nexttoken.value;\n\n        if (funct[\"(breakage)\"] === 0)\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n\n        if (!option.asi)\n            nolinebreak(this);\n\n        if (nexttoken.id !== \";\") {\n            if (token.line === nexttoken.line) {\n                if (funct[v] !== \"label\") {\n                    warning(\"'{a}' is not a statement label.\", nexttoken, v);\n                } else if (scope[v] !== funct) {\n                    warning(\"'{a}' is out of scope.\", nexttoken, v);\n                }\n                this.first = nexttoken;\n                advance();\n            }\n        }\n        reachable(\"break\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"continue\", function () {\n        var v = nexttoken.value;\n\n        if (funct[\"(breakage)\"] === 0)\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n\n        if (!option.asi)\n            nolinebreak(this);\n\n        if (nexttoken.id !== \";\") {\n            if (token.line === nexttoken.line) {\n                if (funct[v] !== \"label\") {\n                    warning(\"'{a}' is not a statement label.\", nexttoken, v);\n                } else if (scope[v] !== funct) {\n                    warning(\"'{a}' is out of scope.\", nexttoken, v);\n                }\n                this.first = nexttoken;\n                advance();\n            }\n        } else if (!funct[\"(loopage)\"]) {\n            warning(\"Unexpected '{a}'.\", nexttoken, this.value);\n        }\n        reachable(\"continue\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"return\", function () {\n        if (this.line === nexttoken.line) {\n            if (nexttoken.id === \"(regexp)\")\n                warning(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\");\n\n            if (nexttoken.id !== \";\" && !nexttoken.reach) {\n                nonadjacent(token, nexttoken);\n                if (peek().value === \"=\" && !option.boss) {\n                    warningAt(\"Did you mean to return a conditional instead of an assignment?\",\n                              token.line, token.character + 1);\n                }\n                this.first = expression(0);\n            }\n        } else if (!option.asi) {\n            nolinebreak(this); // always warn (Line breaking error)\n        }\n        reachable(\"return\");\n        return this;\n    }).exps = true;\n\n\n    stmt(\"throw\", function () {\n        nolinebreak(this);\n        nonadjacent(token, nexttoken);\n        this.first = expression(20);\n        reachable(\"throw\");\n        return this;\n    }).exps = true;\n\n//  Superfluous reserved words\n\n    reserve(\"class\");\n    reserve(\"const\");\n    reserve(\"enum\");\n    reserve(\"export\");\n    reserve(\"extends\");\n    reserve(\"import\");\n    reserve(\"super\");\n\n    reserve(\"let\");\n    reserve(\"yield\");\n    reserve(\"implements\");\n    reserve(\"interface\");\n    reserve(\"package\");\n    reserve(\"private\");\n    reserve(\"protected\");\n    reserve(\"public\");\n    reserve(\"static\");\n\n\n// Parse JSON\n\n    function jsonValue() {\n\n        function jsonObject() {\n            var o = {}, t = nexttoken;\n            advance(\"{\");\n            if (nexttoken.id !== \"}\") {\n                for (;;) {\n                    if (nexttoken.id === \"(end)\") {\n                        error(\"Missing '}' to match '{' from line {a}.\",\n                                nexttoken, t.line);\n                    } else if (nexttoken.id === \"}\") {\n                        warning(\"Unexpected comma.\", token);\n                        break;\n                    } else if (nexttoken.id === \",\") {\n                        error(\"Unexpected comma.\", nexttoken);\n                    } else if (nexttoken.id !== \"(string)\") {\n                        warning(\"Expected a string and instead saw {a}.\",\n                                nexttoken, nexttoken.value);\n                    }\n                    if (o[nexttoken.value] === true) {\n                        warning(\"Duplicate key '{a}'.\",\n                                nexttoken, nexttoken.value);\n                    } else if ((nexttoken.value === \"__proto__\" &&\n                        !option.proto) || (nexttoken.value === \"__iterator__\" &&\n                        !option.iterator)) {\n                        warning(\"The '{a}' key may produce unexpected results.\",\n                            nexttoken, nexttoken.value);\n                    } else {\n                        o[nexttoken.value] = true;\n                    }\n                    advance();\n                    advance(\":\");\n                    jsonValue();\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    advance(\",\");\n                }\n            }\n            advance(\"}\");\n        }\n\n        function jsonArray() {\n            var t = nexttoken;\n            advance(\"[\");\n            if (nexttoken.id !== \"]\") {\n                for (;;) {\n                    if (nexttoken.id === \"(end)\") {\n                        error(\"Missing ']' to match '[' from line {a}.\",\n                                nexttoken, t.line);\n                    } else if (nexttoken.id === \"]\") {\n                        warning(\"Unexpected comma.\", token);\n                        break;\n                    } else if (nexttoken.id === \",\") {\n                        error(\"Unexpected comma.\", nexttoken);\n                    }\n                    jsonValue();\n                    if (nexttoken.id !== \",\") {\n                        break;\n                    }\n                    advance(\",\");\n                }\n            }\n            advance(\"]\");\n        }\n\n        switch (nexttoken.id) {\n        case \"{\":\n            jsonObject();\n            break;\n        case \"[\":\n            jsonArray();\n            break;\n        case \"true\":\n        case \"false\":\n        case \"null\":\n        case \"(number)\":\n        case \"(string)\":\n            advance();\n            break;\n        case \"-\":\n            advance(\"-\");\n            if (token.character !== nexttoken.from) {\n                warning(\"Unexpected space after '-'.\", token);\n            }\n            adjacent(token, nexttoken);\n            advance(\"(number)\");\n            break;\n        default:\n            error(\"Expected a JSON value.\", nexttoken);\n        }\n    }\n\n\n    // The actual JSHINT function itself.\n    var itself = function (s, o, g) {\n        var a, i, k, x;\n        var optionKeys;\n        var newOptionObj = {};\n\n        if (o && o.scope) {\n            JSHINT.scope = o.scope;\n        } else {\n            JSHINT.errors = [];\n            JSHINT.undefs = [];\n            JSHINT.internals = [];\n            JSHINT.blacklist = {};\n            JSHINT.scope = \"(main)\";\n        }\n\n        predefined = Object.create(standard);\n        declared = Object.create(null);\n        combine(predefined, g || {});\n\n        if (o) {\n            a = o.predef;\n            if (a) {\n                if (!Array.isArray(a) && typeof a === \"object\") {\n                    a = Object.keys(a);\n                }\n                a.forEach(function (item) {\n                    var slice;\n                    if (item[0] === \"-\") {\n                        slice = item.slice(1);\n                        JSHINT.blacklist[slice] = slice;\n                    } else {\n                        predefined[item] = true;\n                    }\n                });\n            }\n\n            optionKeys = Object.keys(o);\n            for (x = 0; x < optionKeys.length; x++) {\n                newOptionObj[optionKeys[x]] = o[optionKeys[x]];\n\n                if (optionKeys[x] === \"newcap\" && o[optionKeys[x]] === false)\n                    newOptionObj[\"(explicitNewcap)\"] = true;\n\n                if (optionKeys[x] === \"indent\")\n                    newOptionObj.white = true;\n            }\n        }\n\n        option = newOptionObj;\n\n        option.indent = option.indent || 4;\n        option.maxerr = option.maxerr || 50;\n\n        tab = \"\";\n        for (i = 0; i < option.indent; i += 1) {\n            tab += \" \";\n        }\n        indent = 1;\n        global = Object.create(predefined);\n        scope = global;\n        funct = {\n            \"(global)\":   true,\n            \"(name)\":     \"(global)\",\n            \"(scope)\":    scope,\n            \"(breakage)\": 0,\n            \"(loopage)\":  0,\n            \"(tokens)\":   {},\n            \"(metrics)\":   createMetrics(nexttoken)\n        };\n        functions = [funct];\n        urls = [];\n        stack = null;\n        member = {};\n        membersOnly = null;\n        implied = {};\n        inblock = false;\n        lookahead = [];\n        jsonmode = false;\n        warnings = 0;\n        lines = [];\n        unuseds = [];\n\n        if (!isString(s) && !Array.isArray(s)) {\n            errorAt(\"Input is neither a string nor an array of strings.\", 0);\n            return false;\n        }\n\n        if (isString(s) && /^\\s*$/g.test(s)) {\n            errorAt(\"Input is an empty string.\", 0);\n            return false;\n        }\n\n        if (s.length === 0) {\n            errorAt(\"Input is an empty array.\", 0);\n            return false;\n        }\n\n        lex.init(s);\n\n        prereg = true;\n        directive = {};\n\n        prevtoken = token = nexttoken = syntax[\"(begin)\"];\n\n        // Check options\n        for (var name in o) {\n            if (is_own(o, name)) {\n                checkOption(name, token);\n            }\n        }\n\n        assume();\n\n        // combine the passed globals after we've assumed all our options\n        combine(predefined, g || {});\n\n        //reset values\n        comma.first = true;\n        quotmark = undefined;\n\n        try {\n            advance();\n            switch (nexttoken.id) {\n            case \"{\":\n            case \"[\":\n                option.laxbreak = true;\n                jsonmode = true;\n                jsonValue();\n                break;\n            default:\n                directives();\n                if (directive[\"use strict\"] && !option.globalstrict) {\n                    warning(\"Use the function form of \\\"use strict\\\".\", prevtoken);\n                }\n\n                statements();\n            }\n            advance((nexttoken && nexttoken.value !== \".\")  ? \"(end)\" : undefined);\n\n            var markDefined = function (name, context) {\n                do {\n                    if (typeof context[name] === \"string\") {\n                        // JSHINT marks unused variables as 'unused' and\n                        // unused function declaration as 'unction'. This\n                        // code changes such instances back 'var' and\n                        // 'closure' so that the code in JSHINT.data()\n                        // doesn't think they're unused.\n\n                        if (context[name] === \"unused\")\n                            context[name] = \"var\";\n                        else if (context[name] === \"unction\")\n                            context[name] = \"closure\";\n\n                        return true;\n                    }\n\n                    context = context[\"(context)\"];\n                } while (context);\n\n                return false;\n            };\n\n            var clearImplied = function (name, line) {\n                if (!implied[name])\n                    return;\n\n                var newImplied = [];\n                for (var i = 0; i < implied[name].length; i += 1) {\n                    if (implied[name][i] !== line)\n                        newImplied.push(implied[name][i]);\n                }\n\n                if (newImplied.length === 0)\n                    delete implied[name];\n                else\n                    implied[name] = newImplied;\n            };\n\n            var warnUnused = function (name, token) {\n                var line = token.line;\n                var chr  = token.character;\n\n                if (option.unused)\n                    warningAt(\"'{a}' is defined but never used.\", line, chr, name);\n\n                unuseds.push({\n                    name: name,\n                    line: line,\n                    character: chr\n                });\n            };\n\n            var checkUnused = function (func, key) {\n                var type = func[key];\n                var token = func[\"(tokens)\"][key];\n\n                if (key.charAt(0) === \"(\")\n                    return;\n\n                if (type !== \"unused\" && type !== \"unction\")\n                    return;\n\n                // Params are checked separately from other variables.\n                if (func[\"(params)\"] && func[\"(params)\"].indexOf(key) !== -1)\n                    return;\n\n                warnUnused(key, token);\n            };\n\n            // Check queued 'x is not defined' instances to see if they're still undefined.\n            for (i = 0; i < JSHINT.undefs.length; i += 1) {\n                k = JSHINT.undefs[i].slice(0);\n\n                if (markDefined(k[2].value, k[0])) {\n                    clearImplied(k[2].value, k[2].line);\n                } else {\n                    warning.apply(warning, k.slice(1));\n                }\n            }\n\n            functions.forEach(function (func) {\n                for (var key in func) {\n                    if (is_own(func, key)) {\n                        checkUnused(func, key);\n                    }\n                }\n\n                if (!func[\"(params)\"])\n                    return;\n\n                var params = func[\"(params)\"].slice();\n                var param  = params.pop();\n                var type;\n\n                while (param) {\n                    type = func[param];\n\n                    // 'undefined' is a special case for (function (window, undefined) { ... })();\n                    // patterns.\n\n                    if (param === \"undefined\")\n                        return;\n\n                    if (type !== \"unused\" && type !== \"unction\")\n                        return;\n\n                    warnUnused(param, func[\"(tokens)\"][param]);\n                    param = params.pop();\n                }\n            });\n\n            for (var key in declared) {\n                if (is_own(declared, key) && !is_own(global, key)) {\n                    warnUnused(key, declared[key]);\n                }\n            }\n        } catch (e) {\n            if (e) {\n                var nt = nexttoken || {};\n                JSHINT.errors.push({\n                    raw       : e.raw,\n                    reason    : e.message,\n                    line      : e.line || nt.line,\n                    character : e.character || nt.from\n                }, null);\n            }\n        }\n\n        // Loop over the listed \"internals\", and check them as well.\n\n        if (JSHINT.scope === \"(main)\") {\n            o = o || {};\n\n            for (i = 0; i < JSHINT.internals.length; i += 1) {\n                k = JSHINT.internals[i];\n                o.scope = k.elem;\n                itself(k.value, o, g);\n            }\n        }\n\n        return JSHINT.errors.length === 0;\n    };\n\n    // Data summary.\n    itself.data = function () {\n        var data = {\n            functions: [],\n            options: option\n        };\n        var implieds = [];\n        var members = [];\n        var fu, f, i, j, n, globals;\n\n        if (itself.errors.length) {\n            data.errors = itself.errors;\n        }\n\n        if (jsonmode) {\n            data.json = true;\n        }\n\n        for (n in implied) {\n            if (is_own(implied, n)) {\n                implieds.push({\n                    name: n,\n                    line: implied[n]\n                });\n            }\n        }\n\n        if (implieds.length > 0) {\n            data.implieds = implieds;\n        }\n\n        if (urls.length > 0) {\n            data.urls = urls;\n        }\n\n        globals = Object.keys(scope);\n        if (globals.length > 0) {\n            data.globals = globals;\n        }\n\n        for (i = 1; i < functions.length; i += 1) {\n            f = functions[i];\n            fu = {};\n\n            for (j = 0; j < functionicity.length; j += 1) {\n                fu[functionicity[j]] = [];\n            }\n\n            for (j = 0; j < functionicity.length; j += 1) {\n                if (fu[functionicity[j]].length === 0) {\n                    delete fu[functionicity[j]];\n                }\n            }\n\n            fu.name = f[\"(name)\"];\n            fu.param = f[\"(params)\"];\n            fu.line = f[\"(line)\"];\n            fu.character = f[\"(character)\"];\n            fu.last = f[\"(last)\"];\n            fu.lastcharacter = f[\"(lastcharacter)\"];\n            data.functions.push(fu);\n        }\n\n        if (unuseds.length > 0) {\n            data.unused = unuseds;\n        }\n\n        members = [];\n        for (n in member) {\n            if (typeof member[n] === \"number\") {\n                data.member = member;\n                break;\n            }\n        }\n\n        return data;\n    };\n\n    itself.jshint = itself;\n\n    return itself;\n}());\n\n// Make JSHINT a Node module, if possible.\nif (typeof exports === \"object\" && exports) {\n    exports.JSHINT = JSHINT;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.css",
    "content": "/**\n * QUnit v1.10.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n/** Font Family and Sizes */\n\n#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {\n\tfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n}\n\n#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }\n#qunit-tests { font-size: smaller; }\n\n\n/** Resets */\n\n#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n\n/** Header */\n\n#qunit-header {\n\tpadding: 0.5em 0 0.5em 1em;\n\n\tcolor: #8699a4;\n\tbackground-color: #0d3349;\n\n\tfont-size: 1.5em;\n\tline-height: 1em;\n\tfont-weight: normal;\n\n\tborder-radius: 5px 5px 0 0;\n\t-moz-border-radius: 5px 5px 0 0;\n\t-webkit-border-top-right-radius: 5px;\n\t-webkit-border-top-left-radius: 5px;\n}\n\n#qunit-header a {\n\ttext-decoration: none;\n\tcolor: #c2ccd1;\n}\n\n#qunit-header a:hover,\n#qunit-header a:focus {\n\tcolor: #fff;\n}\n\n#qunit-testrunner-toolbar label {\n\tdisplay: inline-block;\n\tpadding: 0 .5em 0 .1em;\n}\n\n#qunit-banner {\n\theight: 5px;\n}\n\n#qunit-testrunner-toolbar {\n\tpadding: 0.5em 0 0.5em 2em;\n\tcolor: #5E740B;\n\tbackground-color: #eee;\n\toverflow: hidden;\n}\n\n#qunit-userAgent {\n\tpadding: 0.5em 0 0.5em 2.5em;\n\tbackground-color: #2b81af;\n\tcolor: #fff;\n\ttext-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;\n}\n\n#qunit-modulefilter-container {\n\tfloat: right;\n}\n\n/** Tests: Pass/Fail */\n\n#qunit-tests {\n\tlist-style-position: inside;\n}\n\n#qunit-tests li {\n\tpadding: 0.4em 0.5em 0.4em 2.5em;\n\tborder-bottom: 1px solid #fff;\n\tlist-style-position: inside;\n}\n\n#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {\n\tdisplay: none;\n}\n\n#qunit-tests li strong {\n\tcursor: pointer;\n}\n\n#qunit-tests li a {\n\tpadding: 0.5em;\n\tcolor: #c2ccd1;\n\ttext-decoration: none;\n}\n#qunit-tests li a:hover,\n#qunit-tests li a:focus {\n\tcolor: #000;\n}\n\n#qunit-tests ol {\n\tmargin-top: 0.5em;\n\tpadding: 0.5em;\n\n\tbackground-color: #fff;\n\n\tborder-radius: 5px;\n\t-moz-border-radius: 5px;\n\t-webkit-border-radius: 5px;\n}\n\n#qunit-tests table {\n\tborder-collapse: collapse;\n\tmargin-top: .2em;\n}\n\n#qunit-tests th {\n\ttext-align: right;\n\tvertical-align: top;\n\tpadding: 0 .5em 0 0;\n}\n\n#qunit-tests td {\n\tvertical-align: top;\n}\n\n#qunit-tests pre {\n\tmargin: 0;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n#qunit-tests del {\n\tbackground-color: #e0f2be;\n\tcolor: #374e0c;\n\ttext-decoration: none;\n}\n\n#qunit-tests ins {\n\tbackground-color: #ffcaca;\n\tcolor: #500;\n\ttext-decoration: none;\n}\n\n/*** Test Counts */\n\n#qunit-tests b.counts                       { color: black; }\n#qunit-tests b.passed                       { color: #5E740B; }\n#qunit-tests b.failed                       { color: #710909; }\n\n#qunit-tests li li {\n\tpadding: 5px;\n\tbackground-color: #fff;\n\tborder-bottom: none;\n\tlist-style-position: inside;\n}\n\n/*** Passing Styles */\n\n#qunit-tests li li.pass {\n\tcolor: #3c510c;\n\tbackground-color: #fff;\n\tborder-left: 10px solid #C6E746;\n}\n\n#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }\n#qunit-tests .pass .test-name               { color: #366097; }\n\n#qunit-tests .pass .test-actual,\n#qunit-tests .pass .test-expected           { color: #999999; }\n\n#qunit-banner.qunit-pass                    { background-color: #C6E746; }\n\n/*** Failing Styles */\n\n#qunit-tests li li.fail {\n\tcolor: #710909;\n\tbackground-color: #fff;\n\tborder-left: 10px solid #EE5757;\n\twhite-space: pre;\n}\n\n#qunit-tests > li:last-child {\n\tborder-radius: 0 0 5px 5px;\n\t-moz-border-radius: 0 0 5px 5px;\n\t-webkit-border-bottom-right-radius: 5px;\n\t-webkit-border-bottom-left-radius: 5px;\n}\n\n#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }\n#qunit-tests .fail .test-name,\n#qunit-tests .fail .module-name             { color: #000000; }\n\n#qunit-tests .fail .test-actual             { color: #EE5757; }\n#qunit-tests .fail .test-expected           { color: green;   }\n\n#qunit-banner.qunit-fail                    { background-color: #EE5757; }\n\n\n/** Result */\n\n#qunit-testresult {\n\tpadding: 0.5em 0.5em 0.5em 2.5em;\n\n\tcolor: #2b81af;\n\tbackground-color: #D2E0E6;\n\n\tborder-bottom: 1px solid white;\n}\n#qunit-testresult .module-name {\n\tfont-weight: bold;\n}\n\n/** Fixture */\n\n#qunit-fixture {\n\tposition: absolute;\n\ttop: -10000px;\n\tleft: -10000px;\n\twidth: 1000px;\n\theight: 1000px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/external/qunit.js",
    "content": "/**\n * QUnit v1.10.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n(function( window ) {\n\nvar QUnit,\n\tconfig,\n\tonErrorFnPrev,\n\ttestId = 0,\n\tfileName = (sourceFromStacktrace( 0 ) || \"\" ).replace(/(:\\d+)+\\)?/, \"\").replace(/.+\\//, \"\"),\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\t// Keep a local reference to Date (GH-283)\n\tDate = window.Date,\n\tdefined = {\n\tsetTimeout: typeof window.setTimeout !== \"undefined\",\n\tsessionStorage: (function() {\n\t\tvar x = \"qunit-test-string\";\n\t\ttry {\n\t\t\tsessionStorage.setItem( x, x );\n\t\t\tsessionStorage.removeItem( x );\n\t\t\treturn true;\n\t\t} catch( e ) {\n\t\t\treturn false;\n\t\t}\n\t}())\n};\n\nfunction Test( settings ) {\n\textend( this, settings );\n\tthis.assertions = [];\n\tthis.testNumber = ++Test.count;\n}\n\nTest.count = 0;\n\nTest.prototype = {\n\tinit: function() {\n\t\tvar a, b, li,\n        tests = id( \"qunit-tests\" );\n\n\t\tif ( tests ) {\n\t\t\tb = document.createElement( \"strong\" );\n\t\t\tb.innerHTML = this.name;\n\n\t\t\t// `a` initialized at top of scope\n\t\t\ta = document.createElement( \"a\" );\n\t\t\ta.innerHTML = \"Rerun\";\n\t\t\ta.href = QUnit.url({ testNumber: this.testNumber });\n\n\t\t\tli = document.createElement( \"li\" );\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild( a );\n\t\t\tli.className = \"running\";\n\t\t\tli.id = this.id = \"qunit-test-output\" + testId++;\n\n\t\t\ttests.appendChild( li );\n\t\t}\n\t},\n\tsetup: function() {\n\t\tif ( this.module !== config.previousModule ) {\n\t\t\tif ( config.previousModule ) {\n\t\t\t\trunLoggingCallbacks( \"moduleDone\", QUnit, {\n\t\t\t\t\tname: config.previousModule,\n\t\t\t\t\tfailed: config.moduleStats.bad,\n\t\t\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\t\t\ttotal: config.moduleStats.all\n\t\t\t\t});\n\t\t\t}\n\t\t\tconfig.previousModule = this.module;\n\t\t\tconfig.moduleStats = { all: 0, bad: 0 };\n\t\t\trunLoggingCallbacks( \"moduleStart\", QUnit, {\n\t\t\t\tname: this.module\n\t\t\t});\n\t\t} else if ( config.autorun ) {\n\t\t\trunLoggingCallbacks( \"moduleStart\", QUnit, {\n\t\t\t\tname: this.module\n\t\t\t});\n\t\t}\n\n\t\tconfig.current = this;\n\n\t\tthis.testEnvironment = extend({\n\t\t\tsetup: function() {},\n\t\t\tteardown: function() {}\n\t\t}, this.moduleTestEnvironment );\n\n\t\trunLoggingCallbacks( \"testStart\", QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module\n\t\t});\n\n\t\t// allow utility functions to access the current test environment\n\t\t// TODO why??\n\t\tQUnit.current_testEnvironment = this.testEnvironment;\n\n\t\tif ( !config.pollution ) {\n\t\t\tsaveGlobal();\n\t\t}\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.setup.call( this.testEnvironment );\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.testEnvironment.setup.call( this.testEnvironment );\n\t\t} catch( e ) {\n\t\t\tQUnit.pushFailure( \"Setup failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t}\n\t},\n\trun: function() {\n\t\tconfig.current = this;\n\n\t\tvar running = id( \"qunit-testresult\" );\n\n\t\tif ( running ) {\n\t\t\trunning.innerHTML = \"Running: <br/>\" + this.name;\n\t\t}\n\n\t\tif ( this.async ) {\n\t\t\tQUnit.stop();\n\t\t}\n\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.callback.call( this.testEnvironment, QUnit.assert );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.callback.call( this.testEnvironment, QUnit.assert );\n\t\t} catch( e ) {\n\t\t\tQUnit.pushFailure( \"Died on test #\" + (this.assertions.length + 1) + \" \" + this.stack + \": \" + e.message, extractStacktrace( e, 0 ) );\n\t\t\t// else next test will carry the responsibility\n\t\t\tsaveGlobal();\n\n\t\t\t// Restart the tests if they're blocking\n\t\t\tif ( config.blocking ) {\n\t\t\t\tQUnit.start();\n\t\t\t}\n\t\t}\n\t},\n\tteardown: function() {\n\t\tconfig.current = this;\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.teardown.call( this.testEnvironment );\n\t\t\treturn;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.testEnvironment.teardown.call( this.testEnvironment );\n\t\t\t} catch( e ) {\n\t\t\t\tQUnit.pushFailure( \"Teardown failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t}\n\t\t}\n\t\tcheckPollution();\n\t},\n\tfinish: function() {\n\t\tconfig.current = this;\n\t\tif ( config.requireExpects && this.expected == null ) {\n\t\t\tQUnit.pushFailure( \"Expected number of assertions to be defined, but expect() was not called.\", this.stack );\n\t\t} else if ( this.expected != null && this.expected != this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected \" + this.expected + \" assertions, but \" + this.assertions.length + \" were run\", this.stack );\n\t\t} else if ( this.expected == null && !this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.\", this.stack );\n\t\t}\n\n\t\tvar assertion, a, b, i, li, ol,\n\t\t\ttest = this,\n\t\t\tgood = 0,\n\t\t\tbad = 0,\n\t\t\ttests = id( \"qunit-tests\" );\n\n\t\tconfig.stats.all += this.assertions.length;\n\t\tconfig.moduleStats.all += this.assertions.length;\n\n\t\tif ( tests ) {\n\t\t\tol = document.createElement( \"ol\" );\n\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tassertion = this.assertions[i];\n\n\t\t\t\tli = document.createElement( \"li\" );\n\t\t\t\tli.className = assertion.result ? \"pass\" : \"fail\";\n\t\t\t\tli.innerHTML = assertion.message || ( assertion.result ? \"okay\" : \"failed\" );\n\t\t\t\tol.appendChild( li );\n\n\t\t\t\tif ( assertion.result ) {\n\t\t\t\t\tgood++;\n\t\t\t\t} else {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// store result when possible\n\t\t\tif ( QUnit.config.reorder && defined.sessionStorage ) {\n\t\t\t\tif ( bad ) {\n\t\t\t\t\tsessionStorage.setItem( \"qunit-test-\" + this.module + \"-\" + this.testName, bad );\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem( \"qunit-test-\" + this.module + \"-\" + this.testName );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( bad === 0 ) {\n\t\t\t\tol.style.display = \"none\";\n\t\t\t}\n\n\t\t\t// `b` initialized at top of scope\n\t\t\tb = document.createElement( \"strong\" );\n\t\t\tb.innerHTML = this.name + \" <b class='counts'>(<b class='failed'>\" + bad + \"</b>, <b class='passed'>\" + good + \"</b>, \" + this.assertions.length + \")</b>\";\n\n\t\t\taddEvent(b, \"click\", function() {\n\t\t\t\tvar next = b.nextSibling.nextSibling,\n\t\t\t\t\tdisplay = next.style.display;\n\t\t\t\tnext.style.display = display === \"none\" ? \"block\" : \"none\";\n\t\t\t});\n\n\t\t\taddEvent(b, \"dblclick\", function( e ) {\n\t\t\t\tvar target = e && e.target ? e.target : window.event.srcElement;\n\t\t\t\tif ( target.nodeName.toLowerCase() == \"span\" || target.nodeName.toLowerCase() == \"b\" ) {\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\t\t\t\tif ( window.location && target.nodeName.toLowerCase() === \"strong\" ) {\n\t\t\t\t\twindow.location = QUnit.url({ testNumber: test.testNumber });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// `li` initialized at top of scope\n\t\t\tli = id( this.id );\n\t\t\tli.className = bad ? \"fail\" : \"pass\";\n\t\t\tli.removeChild( li.firstChild );\n\t\t\ta = li.firstChild;\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild ( a );\n\t\t\tli.appendChild( ol );\n\n\t\t} else {\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tif ( !this.assertions[i].result ) {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trunLoggingCallbacks( \"testDone\", QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module,\n\t\t\tfailed: bad,\n\t\t\tpassed: this.assertions.length - bad,\n\t\t\ttotal: this.assertions.length\n\t\t});\n\n\t\tQUnit.reset();\n\n\t\tconfig.current = undefined;\n\t},\n\n\tqueue: function() {\n\t\tvar bad,\n\t\t\ttest = this;\n\n\t\tsynchronize(function() {\n\t\t\ttest.init();\n\t\t});\n\t\tfunction run() {\n\t\t\t// each of these can by async\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.setup();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.run();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.teardown();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.finish();\n\t\t\t});\n\t\t}\n\n\t\t// `bad` initialized at top of scope\n\t\t// defer when previous test run passed, if storage is available\n\t\tbad = QUnit.config.reorder && defined.sessionStorage &&\n\t\t\t\t\t\t+sessionStorage.getItem( \"qunit-test-\" + this.module + \"-\" + this.testName );\n\n\t\tif ( bad ) {\n\t\t\trun();\n\t\t} else {\n\t\t\tsynchronize( run, true );\n\t\t}\n\t}\n};\n\n// Root QUnit object.\n// `QUnit` initialized at top of scope\nQUnit = {\n\n\t// call on start of module test to prepend name to all tests\n\tmodule: function( name, testEnvironment ) {\n\t\tconfig.currentModule = name;\n\t\tconfig.currentModuleTestEnvironment = testEnvironment;\n\t\tconfig.modules[name] = true;\n\t},\n\n\tasyncTest: function( testName, expected, callback ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tQUnit.test( testName, expected, callback, true );\n\t},\n\n\ttest: function( testName, expected, callback, async ) {\n\t\tvar test,\n\t\t\tname = \"<span class='test-name'>\" + escapeInnerText( testName ) + \"</span>\";\n\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tif ( config.currentModule ) {\n\t\t\tname = \"<span class='module-name'>\" + config.currentModule + \"</span>: \" + name;\n\t\t}\n\n\t\ttest = new Test({\n\t\t\tname: name,\n\t\t\ttestName: testName,\n\t\t\texpected: expected,\n\t\t\tasync: async,\n\t\t\tcallback: callback,\n\t\t\tmodule: config.currentModule,\n\t\t\tmoduleTestEnvironment: config.currentModuleTestEnvironment,\n\t\t\tstack: sourceFromStacktrace( 2 )\n\t\t});\n\n\t\tif ( !validTest( test ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttest.queue();\n\t},\n\n\t// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.\n\texpect: function( asserts ) {\n\t\tif (arguments.length === 1) {\n\t\t\tconfig.current.expected = asserts;\n\t\t} else {\n\t\t\treturn config.current.expected;\n\t\t}\n\t},\n\n\tstart: function( count ) {\n\t\tconfig.semaphore -= count || 1;\n\t\t// don't start until equal number of stop-calls\n\t\tif ( config.semaphore > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t// ignore if start is called more often then stop\n\t\tif ( config.semaphore < 0 ) {\n\t\t\tconfig.semaphore = 0;\n\t\t}\n\t\t// A slight delay, to avoid any current callbacks\n\t\tif ( defined.setTimeout ) {\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tif ( config.semaphore > 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( config.timeout ) {\n\t\t\t\t\tclearTimeout( config.timeout );\n\t\t\t\t}\n\n\t\t\t\tconfig.blocking = false;\n\t\t\t\tprocess( true );\n\t\t\t}, 13);\n\t\t} else {\n\t\t\tconfig.blocking = false;\n\t\t\tprocess( true );\n\t\t}\n\t},\n\n\tstop: function( count ) {\n\t\tconfig.semaphore += count || 1;\n\t\tconfig.blocking = true;\n\n\t\tif ( config.testTimeout && defined.setTimeout ) {\n\t\t\tclearTimeout( config.timeout );\n\t\t\tconfig.timeout = window.setTimeout(function() {\n\t\t\t\tQUnit.ok( false, \"Test timed out\" );\n\t\t\t\tconfig.semaphore = 1;\n\t\t\t\tQUnit.start();\n\t\t\t}, config.testTimeout );\n\t\t}\n\t}\n};\n\n// Asssert helpers\n// All of these must call either QUnit.push() or manually do:\n// - runLoggingCallbacks( \"log\", .. );\n// - config.current.assertions.push({ .. });\nQUnit.assert = {\n\t/**\n\t * Asserts rough true-ish result.\n\t * @name ok\n\t * @function\n\t * @example ok( \"asdfasdf\".length > 5, \"There must be at least 5 chars\" );\n\t */\n\tok: function( result, msg ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"ok() assertion outside test context, was \" + sourceFromStacktrace(2) );\n\t\t}\n\t\tresult = !!result;\n\n\t\tvar source,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: result,\n\t\t\t\tmessage: msg\n\t\t\t};\n\n\t\tmsg = escapeInnerText( msg || (result ? \"okay\" : \"failed\" ) );\n\t\tmsg = \"<span class='test-message'>\" + msg + \"</span>\";\n\n\t\tif ( !result ) {\n\t\t\tsource = sourceFromStacktrace( 2 );\n\t\t\tif ( source ) {\n\t\t\t\tdetails.source = source;\n\t\t\t\tmsg += \"<table><tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr></table>\";\n\t\t\t}\n\t\t}\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t});\n\t},\n\n\t/**\n\t * Assert that the first two arguments are equal, with an optional message.\n\t * Prints out both actual and expected values.\n\t * @name equal\n\t * @function\n\t * @example equal( format( \"Received {0} bytes.\", 2), \"Received 2 bytes.\", \"format() replaces {0} with next argument\" );\n\t */\n\tequal: function( actual, expected, message ) {\n\t\tQUnit.push( expected == actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name notEqual\n\t * @function\n\t */\n\tnotEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected != actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name deepEqual\n\t * @function\n\t */\n\tdeepEqual: function( actual, expected, message ) {\n\t\tQUnit.push( QUnit.equiv(actual, expected), actual, expected, message );\n\t},\n\n\t/**\n\t * @name notDeepEqual\n\t * @function\n\t */\n\tnotDeepEqual: function( actual, expected, message ) {\n\t\tQUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );\n\t},\n\n\t/**\n\t * @name strictEqual\n\t * @function\n\t */\n\tstrictEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected === actual, actual, expected, message );\n\t},\n\n\t/**\n\t * @name notStrictEqual\n\t * @function\n\t */\n\tnotStrictEqual: function( actual, expected, message ) {\n\t\tQUnit.push( expected !== actual, actual, expected, message );\n\t},\n\n\tthrows: function( block, expected, message ) {\n\t\tvar actual,\n\t\t\tok = false;\n\n\t\t// 'expected' is optional\n\t\tif ( typeof expected === \"string\" ) {\n\t\t\tmessage = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tconfig.current.ignoreGlobalErrors = true;\n\t\ttry {\n\t\t\tblock.call( config.current.testEnvironment );\n\t\t} catch (e) {\n\t\t\tactual = e;\n\t\t}\n\t\tconfig.current.ignoreGlobalErrors = false;\n\n\t\tif ( actual ) {\n\t\t\t// we don't want to validate thrown error\n\t\t\tif ( !expected ) {\n\t\t\t\tok = true;\n\t\t\t// expected is a regexp\n\t\t\t} else if ( QUnit.objectType( expected ) === \"regexp\" ) {\n\t\t\t\tok = expected.test( actual );\n\t\t\t// expected is a constructor\n\t\t\t} else if ( actual instanceof expected ) {\n\t\t\t\tok = true;\n\t\t\t// expected is a validation function which returns true is validation passed\n\t\t\t} else if ( expected.call( {}, actual ) === true ) {\n\t\t\t\tok = true;\n\t\t\t}\n\n\t\t\tQUnit.push( ok, actual, null, message );\n\t\t} else {\n\t\t\tQUnit.pushFailure( message, null, 'No exception was thrown.' );\n\t\t}\n\t}\n};\n\n/**\n * @deprecate since 1.8.0\n * Kept assertion helpers in root for backwards compatibility\n */\nextend( QUnit, QUnit.assert );\n\n/**\n * @deprecated since 1.9.0\n * Kept global \"raises()\" for backwards compatibility\n */\nQUnit.raises = QUnit.assert.throws;\n\n/**\n * @deprecated since 1.0.0, replaced with error pushes since 1.3.0\n * Kept to avoid TypeErrors for undefined methods.\n */\nQUnit.equals = function() {\n\tQUnit.push( false, false, false, \"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead\" );\n};\nQUnit.same = function() {\n\tQUnit.push( false, false, false, \"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead\" );\n};\n\n// We want access to the constructor's prototype\n(function() {\n\tfunction F() {}\n\tF.prototype = QUnit;\n\tQUnit = new F();\n\t// Make F QUnit's constructor so that we can add to the prototype later\n\tQUnit.constructor = F;\n}());\n\n/**\n * Config object: Maintain internal state\n * Later exposed as QUnit.config\n * `config` initialized at top of scope\n */\nconfig = {\n\t// The queue of tests to run\n\tqueue: [],\n\n\t// block until document ready\n\tblocking: true,\n\n\t// when enabled, show only failing tests\n\t// gets persisted through sessionStorage and can be changed in UI via checkbox\n\thidepassed: false,\n\n\t// by default, run previously failed tests first\n\t// very useful in combination with \"Hide passed tests\" checked\n\treorder: true,\n\n\t// by default, modify document.title when suite is done\n\taltertitle: true,\n\n\t// when enabled, all tests must call expect()\n\trequireExpects: false,\n\n\t// add checkboxes that are persisted in the query-string\n\t// when enabled, the id is set to `true` as a `QUnit.config` property\n\turlConfig: [\n\t\t{\n\t\t\tid: \"noglobals\",\n\t\t\tlabel: \"Check for Globals\",\n\t\t\ttooltip: \"Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings.\"\n\t\t},\n\t\t{\n\t\t\tid: \"notrycatch\",\n\t\t\tlabel: \"No try-catch\",\n\t\t\ttooltip: \"Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings.\"\n\t\t}\n\t],\n\n\t// Set of all modules.\n\tmodules: {},\n\n\t// logging callback queues\n\tbegin: [],\n\tdone: [],\n\tlog: [],\n\ttestStart: [],\n\ttestDone: [],\n\tmoduleStart: [],\n\tmoduleDone: []\n};\n\n// Initialize more QUnit.config and QUnit.urlParams\n(function() {\n\tvar i,\n\t\tlocation = window.location || { search: \"\", protocol: \"file:\" },\n\t\tparams = location.search.slice( 1 ).split( \"&\" ),\n\t\tlength = params.length,\n\t\turlParams = {},\n\t\tcurrent;\n\n\tif ( params[ 0 ] ) {\n\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\tcurrent = params[ i ].split( \"=\" );\n\t\t\tcurrent[ 0 ] = decodeURIComponent( current[ 0 ] );\n\t\t\t// allow just a key to turn on a flag, e.g., test.html?noglobals\n\t\t\tcurrent[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;\n\t\t\turlParams[ current[ 0 ] ] = current[ 1 ];\n\t\t}\n\t}\n\n\tQUnit.urlParams = urlParams;\n\n\t// String search anywhere in moduleName+testName\n\tconfig.filter = urlParams.filter;\n\n\t// Exact match of the module name\n\tconfig.module = urlParams.module;\n\n\tconfig.testNumber = parseInt( urlParams.testNumber, 10 ) || null;\n\n\t// Figure out if we're running the tests from a server or not\n\tQUnit.isLocal = location.protocol === \"file:\";\n}());\n\n// Export global variables, unless an 'exports' object exists,\n// in that case we assume we're in CommonJS (dealt with on the bottom of the script)\nif ( typeof exports === \"undefined\" ) {\n\textend( window, QUnit );\n\n\t// Expose QUnit object\n\twindow.QUnit = QUnit;\n}\n\n// Extend QUnit object,\n// these after set here because they should not be exposed as global functions\nextend( QUnit, {\n\tconfig: config,\n\n\t// Initialize the configuration options\n\tinit: function() {\n\t\textend( config, {\n\t\t\tstats: { all: 0, bad: 0 },\n\t\t\tmoduleStats: { all: 0, bad: 0 },\n\t\t\tstarted: +new Date(),\n\t\t\tupdateRate: 1000,\n\t\t\tblocking: false,\n\t\t\tautostart: true,\n\t\t\tautorun: false,\n\t\t\tfilter: \"\",\n\t\t\tqueue: [],\n\t\t\tsemaphore: 0\n\t\t});\n\n\t\tvar tests, banner, result,\n\t\t\tqunit = id( \"qunit\" );\n\n\t\tif ( qunit ) {\n\t\t\tqunit.innerHTML =\n\t\t\t\t\"<h1 id='qunit-header'>\" + escapeInnerText( document.title ) + \"</h1>\" +\n\t\t\t\t\"<h2 id='qunit-banner'></h2>\" +\n\t\t\t\t\"<div id='qunit-testrunner-toolbar'></div>\" +\n\t\t\t\t\"<h2 id='qunit-userAgent'></h2>\" +\n\t\t\t\t\"<ol id='qunit-tests'></ol>\";\n\t\t}\n\n\t\ttests = id( \"qunit-tests\" );\n\t\tbanner = id( \"qunit-banner\" );\n\t\tresult = id( \"qunit-testresult\" );\n\n\t\tif ( tests ) {\n\t\t\ttests.innerHTML = \"\";\n\t\t}\n\n\t\tif ( banner ) {\n\t\t\tbanner.className = \"\";\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult.parentNode.removeChild( result );\n\t\t}\n\n\t\tif ( tests ) {\n\t\t\tresult = document.createElement( \"p\" );\n\t\t\tresult.id = \"qunit-testresult\";\n\t\t\tresult.className = \"result\";\n\t\t\ttests.parentNode.insertBefore( result, tests );\n\t\t\tresult.innerHTML = \"Running...<br/>&nbsp;\";\n\t\t}\n\t},\n\n\t// Resets the test setup. Useful for tests that modify the DOM.\n\treset: function() {\n\t\tvar fixture = id( \"qunit-fixture\" );\n\t\tif ( fixture ) {\n\t\t\tfixture.innerHTML = config.fixture;\n\t\t}\n\t},\n\n\t// Trigger an event on an element.\n\t// @example triggerEvent( document.body, \"click\" );\n\ttriggerEvent: function( elem, type, event ) {\n\t\tif ( document.createEvent ) {\n\t\t\tevent = document.createEvent( \"MouseEvents\" );\n\t\t\tevent.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,\n\t\t\t\t0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n\t\t\telem.dispatchEvent( event );\n\t\t} else if ( elem.fireEvent ) {\n\t\t\telem.fireEvent( \"on\" + type );\n\t\t}\n\t},\n\n\t// Safe object type checking\n\tis: function( type, obj ) {\n\t\treturn QUnit.objectType( obj ) == type;\n\t},\n\n\tobjectType: function( obj ) {\n\t\tif ( typeof obj === \"undefined\" ) {\n\t\t\t\treturn \"undefined\";\n\t\t// consider: typeof null === object\n\t\t}\n\t\tif ( obj === null ) {\n\t\t\t\treturn \"null\";\n\t\t}\n\n\t\tvar type = toString.call( obj ).match(/^\\[object\\s(.*)\\]$/)[1] || \"\";\n\n\t\tswitch ( type ) {\n\t\t\tcase \"Number\":\n\t\t\t\tif ( isNaN(obj) ) {\n\t\t\t\t\treturn \"nan\";\n\t\t\t\t}\n\t\t\t\treturn \"number\";\n\t\t\tcase \"String\":\n\t\t\tcase \"Boolean\":\n\t\t\tcase \"Array\":\n\t\t\tcase \"Date\":\n\t\t\tcase \"RegExp\":\n\t\t\tcase \"Function\":\n\t\t\t\treturn type.toLowerCase();\n\t\t}\n\t\tif ( typeof obj === \"object\" ) {\n\t\t\treturn \"object\";\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tpush: function( result, actual, expected, message ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"assertion outside test context, was \" + sourceFromStacktrace() );\n\t\t}\n\n\t\tvar output, source,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: result,\n\t\t\t\tmessage: message,\n\t\t\t\tactual: actual,\n\t\t\t\texpected: expected\n\t\t\t};\n\n\t\tmessage = escapeInnerText( message ) || ( result ? \"okay\" : \"failed\" );\n\t\tmessage = \"<span class='test-message'>\" + message + \"</span>\";\n\t\toutput = message;\n\n\t\tif ( !result ) {\n\t\t\texpected = escapeInnerText( QUnit.jsDump.parse(expected) );\n\t\t\tactual = escapeInnerText( QUnit.jsDump.parse(actual) );\n\t\t\toutput += \"<table><tr class='test-expected'><th>Expected: </th><td><pre>\" + expected + \"</pre></td></tr>\";\n\n\t\t\tif ( actual != expected ) {\n\t\t\t\toutput += \"<tr class='test-actual'><th>Result: </th><td><pre>\" + actual + \"</pre></td></tr>\";\n\t\t\t\toutput += \"<tr class='test-diff'><th>Diff: </th><td><pre>\" + QUnit.diff( expected, actual ) + \"</pre></td></tr>\";\n\t\t\t}\n\n\t\t\tsource = sourceFromStacktrace();\n\n\t\t\tif ( source ) {\n\t\t\t\tdetails.source = source;\n\t\t\t\toutput += \"<tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr>\";\n\t\t\t}\n\n\t\t\toutput += \"</table>\";\n\t\t}\n\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: !!result,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\tpushFailure: function( message, source, actual ) {\n\t\tif ( !config.current ) {\n\t\t\tthrow new Error( \"pushFailure() assertion outside test context, was \" + sourceFromStacktrace(2) );\n\t\t}\n\n\t\tvar output,\n\t\t\tdetails = {\n\t\t\t\tmodule: config.current.module,\n\t\t\t\tname: config.current.testName,\n\t\t\t\tresult: false,\n\t\t\t\tmessage: message\n\t\t\t};\n\n\t\tmessage = escapeInnerText( message ) || \"error\";\n\t\tmessage = \"<span class='test-message'>\" + message + \"</span>\";\n\t\toutput = message;\n\n\t\toutput += \"<table>\";\n\n\t\tif ( actual ) {\n\t\t\toutput += \"<tr class='test-actual'><th>Result: </th><td><pre>\" + escapeInnerText( actual ) + \"</pre></td></tr>\";\n\t\t}\n\n\t\tif ( source ) {\n\t\t\tdetails.source = source;\n\t\t\toutput += \"<tr class='test-source'><th>Source: </th><td><pre>\" + escapeInnerText( source ) + \"</pre></td></tr>\";\n\t\t}\n\n\t\toutput += \"</table>\";\n\n\t\trunLoggingCallbacks( \"log\", QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: false,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\turl: function( params ) {\n\t\tparams = extend( extend( {}, QUnit.urlParams ), params );\n\t\tvar key,\n\t\t\tquerystring = \"?\";\n\n\t\tfor ( key in params ) {\n\t\t\tif ( !hasOwn.call( params, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tquerystring += encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( params[ key ] ) + \"&\";\n\t\t}\n\t\treturn window.location.pathname + querystring.slice( 0, -1 );\n\t},\n\n\textend: extend,\n\tid: id,\n\taddEvent: addEvent\n\t// load, equiv, jsDump, diff: Attached later\n});\n\n/**\n * @deprecated: Created for backwards compatibility with test runner that set the hook function\n * into QUnit.{hook}, instead of invoking it and passing the hook function.\n * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.\n * Doing this allows us to tell if the following methods have been overwritten on the actual\n * QUnit object.\n */\nextend( QUnit.constructor.prototype, {\n\n\t// Logging callbacks; all receive a single argument with the listed properties\n\t// run test/logs.html for any related changes\n\tbegin: registerLoggingCallback( \"begin\" ),\n\n\t// done: { failed, passed, total, runtime }\n\tdone: registerLoggingCallback( \"done\" ),\n\n\t// log: { result, actual, expected, message }\n\tlog: registerLoggingCallback( \"log\" ),\n\n\t// testStart: { name }\n\ttestStart: registerLoggingCallback( \"testStart\" ),\n\n\t// testDone: { name, failed, passed, total }\n\ttestDone: registerLoggingCallback( \"testDone\" ),\n\n\t// moduleStart: { name }\n\tmoduleStart: registerLoggingCallback( \"moduleStart\" ),\n\n\t// moduleDone: { name, failed, passed, total }\n\tmoduleDone: registerLoggingCallback( \"moduleDone\" )\n});\n\nif ( typeof document === \"undefined\" || document.readyState === \"complete\" ) {\n\tconfig.autorun = true;\n}\n\nQUnit.load = function() {\n\trunLoggingCallbacks( \"begin\", QUnit, {} );\n\n\t// Initialize the config, saving the execution queue\n\tvar banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, moduleFilter,\n\t    numModules = 0,\n\t    moduleFilterHtml = \"\",\n\t\turlConfigHtml = \"\",\n\t\toldconfig = extend( {}, config );\n\n\tQUnit.init();\n\textend(config, oldconfig);\n\n\tconfig.blocking = false;\n\n\tlen = config.urlConfig.length;\n\n\tfor ( i = 0; i < len; i++ ) {\n\t\tval = config.urlConfig[i];\n\t\tif ( typeof val === \"string\" ) {\n\t\t\tval = {\n\t\t\t\tid: val,\n\t\t\t\tlabel: val,\n\t\t\t\ttooltip: \"[no tooltip available]\"\n\t\t\t};\n\t\t}\n\t\tconfig[ val.id ] = QUnit.urlParams[ val.id ];\n\t\turlConfigHtml += \"<input id='qunit-urlconfig-\" + val.id + \"' name='\" + val.id + \"' type='checkbox'\" + ( config[ val.id ] ? \" checked='checked'\" : \"\" ) + \" title='\" + val.tooltip + \"'><label for='qunit-urlconfig-\" + val.id + \"' title='\" + val.tooltip + \"'>\" + val.label + \"</label>\";\n\t}\n\n\tmoduleFilterHtml += \"<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' \" + ( config.module === undefined  ? \"selected\" : \"\" ) + \">< All Modules ></option>\";\n\tfor ( i in config.modules ) {\n\t\tif ( config.modules.hasOwnProperty( i ) ) {\n\t\t\tnumModules += 1;\n\t\t\tmoduleFilterHtml += \"<option value='\" + encodeURIComponent(i) + \"' \" + ( config.module === i ? \"selected\" : \"\" ) + \">\" + i + \"</option>\";\n\t\t}\n\t}\n\tmoduleFilterHtml += \"</select>\";\n\n\t// `userAgent` initialized at top of scope\n\tuserAgent = id( \"qunit-userAgent\" );\n\tif ( userAgent ) {\n\t\tuserAgent.innerHTML = navigator.userAgent;\n\t}\n\n\t// `banner` initialized at top of scope\n\tbanner = id( \"qunit-header\" );\n\tif ( banner ) {\n\t\tbanner.innerHTML = \"<a href='\" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + \"'>\" + banner.innerHTML + \"</a> \";\n\t}\n\n\t// `toolbar` initialized at top of scope\n\ttoolbar = id( \"qunit-testrunner-toolbar\" );\n\tif ( toolbar ) {\n\t\t// `filter` initialized at top of scope\n\t\tfilter = document.createElement( \"input\" );\n\t\tfilter.type = \"checkbox\";\n\t\tfilter.id = \"qunit-filter-pass\";\n\n\t\taddEvent( filter, \"click\", function() {\n\t\t\tvar tmp,\n\t\t\t\tol = document.getElementById( \"qunit-tests\" );\n\n\t\t\tif ( filter.checked ) {\n\t\t\t\tol.className = ol.className + \" hidepass\";\n\t\t\t} else {\n\t\t\t\ttmp = \" \" + ol.className.replace( /[\\n\\t\\r]/g, \" \" ) + \" \";\n\t\t\t\tol.className = tmp.replace( / hidepass /, \" \" );\n\t\t\t}\n\t\t\tif ( defined.sessionStorage ) {\n\t\t\t\tif (filter.checked) {\n\t\t\t\t\tsessionStorage.setItem( \"qunit-filter-passed-tests\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem( \"qunit-filter-passed-tests\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( \"qunit-filter-passed-tests\" ) ) {\n\t\t\tfilter.checked = true;\n\t\t\t// `ol` initialized at top of scope\n\t\t\tol = document.getElementById( \"qunit-tests\" );\n\t\t\tol.className = ol.className + \" hidepass\";\n\t\t}\n\t\ttoolbar.appendChild( filter );\n\n\t\t// `label` initialized at top of scope\n\t\tlabel = document.createElement( \"label\" );\n\t\tlabel.setAttribute( \"for\", \"qunit-filter-pass\" );\n\t\tlabel.setAttribute( \"title\", \"Only show tests and assertons that fail. Stored in sessionStorage.\" );\n\t\tlabel.innerHTML = \"Hide passed tests\";\n\t\ttoolbar.appendChild( label );\n\n\t\turlConfigCheckboxes = document.createElement( 'span' );\n\t\turlConfigCheckboxes.innerHTML = urlConfigHtml;\n\t\taddEvent( urlConfigCheckboxes, \"change\", function( event ) {\n\t\t\tvar params = {};\n\t\t\tparams[ event.target.name ] = event.target.checked ? true : undefined;\n\t\t\twindow.location = QUnit.url( params );\n\t\t});\n\t\ttoolbar.appendChild( urlConfigCheckboxes );\n\n\t\tif (numModules > 1) {\n\t\t\tmoduleFilter = document.createElement( 'span' );\n\t\t\tmoduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' );\n\t\t\tmoduleFilter.innerHTML = moduleFilterHtml;\n\t\t\taddEvent( moduleFilter, \"change\", function() {\n\t\t\t\tvar selectBox = moduleFilter.getElementsByTagName(\"select\")[0],\n\t\t\t\t    selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);\n\n\t\t\t\twindow.location = QUnit.url( { module: ( selectedModule === \"\" ) ? undefined : selectedModule } );\n\t\t\t});\n\t\t\ttoolbar.appendChild(moduleFilter);\n\t\t}\n\t}\n\n\t// `main` initialized at top of scope\n\tmain = id( \"qunit-fixture\" );\n\tif ( main ) {\n\t\tconfig.fixture = main.innerHTML;\n\t}\n\n\tif ( config.autostart ) {\n\t\tQUnit.start();\n\t}\n};\n\naddEvent( window, \"load\", QUnit.load );\n\n// `onErrorFnPrev` initialized at top of scope\n// Preserve other handlers\nonErrorFnPrev = window.onerror;\n\n// Cover uncaught exceptions\n// Returning true will surpress the default browser handler,\n// returning false will let it run.\nwindow.onerror = function ( error, filePath, linerNr ) {\n\tvar ret = false;\n\tif ( onErrorFnPrev ) {\n\t\tret = onErrorFnPrev( error, filePath, linerNr );\n\t}\n\n\t// Treat return value as window.onerror itself does,\n\t// Only do our handling if not surpressed.\n\tif ( ret !== true ) {\n\t\tif ( QUnit.config.current ) {\n\t\t\tif ( QUnit.config.current.ignoreGlobalErrors ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tQUnit.pushFailure( error, filePath + \":\" + linerNr );\n\t\t} else {\n\t\t\tQUnit.test( \"global failure\", extend( function() {\n\t\t\t\tQUnit.pushFailure( error, filePath + \":\" + linerNr );\n\t\t\t}, { validTest: validTest } ) );\n\t\t}\n\t\treturn false;\n\t}\n\n\treturn ret;\n};\n\nfunction done() {\n\tconfig.autorun = true;\n\n\t// Log the last module results\n\tif ( config.currentModule ) {\n\t\trunLoggingCallbacks( \"moduleDone\", QUnit, {\n\t\t\tname: config.currentModule,\n\t\t\tfailed: config.moduleStats.bad,\n\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\ttotal: config.moduleStats.all\n\t\t});\n\t}\n\n\tvar i, key,\n\t\tbanner = id( \"qunit-banner\" ),\n\t\ttests = id( \"qunit-tests\" ),\n\t\truntime = +new Date() - config.started,\n\t\tpassed = config.stats.all - config.stats.bad,\n\t\thtml = [\n\t\t\t\"Tests completed in \",\n\t\t\truntime,\n\t\t\t\" milliseconds.<br/>\",\n\t\t\t\"<span class='passed'>\",\n\t\t\tpassed,\n\t\t\t\"</span> tests of <span class='total'>\",\n\t\t\tconfig.stats.all,\n\t\t\t\"</span> passed, <span class='failed'>\",\n\t\t\tconfig.stats.bad,\n\t\t\t\"</span> failed.\"\n\t\t].join( \"\" );\n\n\tif ( banner ) {\n\t\tbanner.className = ( config.stats.bad ? \"qunit-fail\" : \"qunit-pass\" );\n\t}\n\n\tif ( tests ) {\n\t\tid( \"qunit-testresult\" ).innerHTML = html;\n\t}\n\n\tif ( config.altertitle && typeof document !== \"undefined\" && document.title ) {\n\t\t// show ✖ for good, ✔ for bad suite result in title\n\t\t// use escape sequences in case file gets loaded with non-utf-8-charset\n\t\tdocument.title = [\n\t\t\t( config.stats.bad ? \"\\u2716\" : \"\\u2714\" ),\n\t\t\tdocument.title.replace( /^[\\u2714\\u2716] /i, \"\" )\n\t\t].join( \" \" );\n\t}\n\n\t// clear own sessionStorage items if all tests passed\n\tif ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {\n\t\t// `key` & `i` initialized at top of scope\n\t\tfor ( i = 0; i < sessionStorage.length; i++ ) {\n\t\t\tkey = sessionStorage.key( i++ );\n\t\t\tif ( key.indexOf( \"qunit-test-\" ) === 0 ) {\n\t\t\t\tsessionStorage.removeItem( key );\n\t\t\t}\n\t\t}\n\t}\n\n\t// scroll back to top to show results\n\tif ( window.scrollTo ) {\n\t\twindow.scrollTo(0, 0);\n\t}\n\n\trunLoggingCallbacks( \"done\", QUnit, {\n\t\tfailed: config.stats.bad,\n\t\tpassed: passed,\n\t\ttotal: config.stats.all,\n\t\truntime: runtime\n\t});\n}\n\n/** @return Boolean: true if this test should be ran */\nfunction validTest( test ) {\n\tvar include,\n\t\tfilter = config.filter && config.filter.toLowerCase(),\n\t\tmodule = config.module && config.module.toLowerCase(),\n\t\tfullName = (test.module + \": \" + test.testName).toLowerCase();\n\n\t// Internally-generated tests are always valid\n\tif ( test.callback && test.callback.validTest === validTest ) {\n\t\tdelete test.callback.validTest;\n\t\treturn true;\n\t}\n\n\tif ( config.testNumber ) {\n\t\treturn test.testNumber === config.testNumber;\n\t}\n\n\tif ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {\n\t\treturn false;\n\t}\n\n\tif ( !filter ) {\n\t\treturn true;\n\t}\n\n\tinclude = filter.charAt( 0 ) !== \"!\";\n\tif ( !include ) {\n\t\tfilter = filter.slice( 1 );\n\t}\n\n\t// If the filter matches, we need to honour include\n\tif ( fullName.indexOf( filter ) !== -1 ) {\n\t\treturn include;\n\t}\n\n\t// Otherwise, do the opposite\n\treturn !include;\n}\n\n// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)\n// Later Safari and IE10 are supposed to support error.stack as well\n// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack\nfunction extractStacktrace( e, offset ) {\n\toffset = offset === undefined ? 3 : offset;\n\n\tvar stack, include, i, regex;\n\n\tif ( e.stacktrace ) {\n\t\t// Opera\n\t\treturn e.stacktrace.split( \"\\n\" )[ offset + 3 ];\n\t} else if ( e.stack ) {\n\t\t// Firefox, Chrome\n\t\tstack = e.stack.split( \"\\n\" );\n\t\tif (/^error$/i.test( stack[0] ) ) {\n\t\t\tstack.shift();\n\t\t}\n\t\tif ( fileName ) {\n\t\t\tinclude = [];\n\t\t\tfor ( i = offset; i < stack.length; i++ ) {\n\t\t\t\tif ( stack[ i ].indexOf( fileName ) != -1 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tinclude.push( stack[ i ] );\n\t\t\t}\n\t\t\tif ( include.length ) {\n\t\t\t\treturn include.join( \"\\n\" );\n\t\t\t}\n\t\t}\n\t\treturn stack[ offset ];\n\t} else if ( e.sourceURL ) {\n\t\t// Safari, PhantomJS\n\t\t// hopefully one day Safari provides actual stacktraces\n\t\t// exclude useless self-reference for generated Error objects\n\t\tif ( /qunit.js$/.test( e.sourceURL ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// for actual exceptions, this is useful\n\t\treturn e.sourceURL + \":\" + e.line;\n\t}\n}\nfunction sourceFromStacktrace( offset ) {\n\ttry {\n\t\tthrow new Error();\n\t} catch ( e ) {\n\t\treturn extractStacktrace( e, offset );\n\t}\n}\n\nfunction escapeInnerText( s ) {\n\tif ( !s ) {\n\t\treturn \"\";\n\t}\n\ts = s + \"\";\n\treturn s.replace( /[\\&<>]/g, function( s ) {\n\t\tswitch( s ) {\n\t\t\tcase \"&\": return \"&amp;\";\n\t\t\tcase \"<\": return \"&lt;\";\n\t\t\tcase \">\": return \"&gt;\";\n\t\t\tdefault: return s;\n\t\t}\n\t});\n}\n\nfunction synchronize( callback, last ) {\n\tconfig.queue.push( callback );\n\n\tif ( config.autorun && !config.blocking ) {\n\t\tprocess( last );\n\t}\n}\n\nfunction process( last ) {\n\tfunction next() {\n\t\tprocess( last );\n\t}\n\tvar start = new Date().getTime();\n\tconfig.depth = config.depth ? config.depth + 1 : 1;\n\n\twhile ( config.queue.length && !config.blocking ) {\n\t\tif ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {\n\t\t\tconfig.queue.shift()();\n\t\t} else {\n\t\t\twindow.setTimeout( next, 13 );\n\t\t\tbreak;\n\t\t}\n\t}\n\tconfig.depth--;\n\tif ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {\n\t\tdone();\n\t}\n}\n\nfunction saveGlobal() {\n\tconfig.pollution = [];\n\n\tif ( config.noglobals ) {\n\t\tfor ( var key in window ) {\n\t\t\t// in Opera sometimes DOM element ids show up here, ignore them\n\t\t\tif ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconfig.pollution.push( key );\n\t\t}\n\t}\n}\n\nfunction checkPollution( name ) {\n\tvar newGlobals,\n\t\tdeletedGlobals,\n\t\told = config.pollution;\n\n\tsaveGlobal();\n\n\tnewGlobals = diff( config.pollution, old );\n\tif ( newGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Introduced global variable(s): \" + newGlobals.join(\", \") );\n\t}\n\n\tdeletedGlobals = diff( old, config.pollution );\n\tif ( deletedGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Deleted global variable(s): \" + deletedGlobals.join(\", \") );\n\t}\n}\n\n// returns a new Array with the elements that are in a but not in b\nfunction diff( a, b ) {\n\tvar i, j,\n\t\tresult = a.slice();\n\n\tfor ( i = 0; i < result.length; i++ ) {\n\t\tfor ( j = 0; j < b.length; j++ ) {\n\t\t\tif ( result[i] === b[j] ) {\n\t\t\t\tresult.splice( i, 1 );\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction extend( a, b ) {\n\tfor ( var prop in b ) {\n\t\tif ( b[ prop ] === undefined ) {\n\t\t\tdelete a[ prop ];\n\n\t\t// Avoid \"Member not found\" error in IE8 caused by setting window.constructor\n\t\t} else if ( prop !== \"constructor\" || a !== window ) {\n\t\t\ta[ prop ] = b[ prop ];\n\t\t}\n\t}\n\n\treturn a;\n}\n\nfunction addEvent( elem, type, fn ) {\n\tif ( elem.addEventListener ) {\n\t\telem.addEventListener( type, fn, false );\n\t} else if ( elem.attachEvent ) {\n\t\telem.attachEvent( \"on\" + type, fn );\n\t} else {\n\t\tfn();\n\t}\n}\n\nfunction id( name ) {\n\treturn !!( typeof document !== \"undefined\" && document && document.getElementById ) &&\n\t\tdocument.getElementById( name );\n}\n\nfunction registerLoggingCallback( key ) {\n\treturn function( callback ) {\n\t\tconfig[key].push( callback );\n\t};\n}\n\n// Supports deprecated method of completely overwriting logging callbacks\nfunction runLoggingCallbacks( key, scope, args ) {\n\t//debugger;\n\tvar i, callbacks;\n\tif ( QUnit.hasOwnProperty( key ) ) {\n\t\tQUnit[ key ].call(scope, args );\n\t} else {\n\t\tcallbacks = config[ key ];\n\t\tfor ( i = 0; i < callbacks.length; i++ ) {\n\t\t\tcallbacks[ i ].call( scope, args );\n\t\t}\n\t}\n}\n\n// Test for equality any JavaScript type.\n// Author: Philippe Rathé <prathe@gmail.com>\nQUnit.equiv = (function() {\n\n\t// Call the o related callback with the given arguments.\n\tfunction bindCallbacks( o, callbacks, args ) {\n\t\tvar prop = QUnit.objectType( o );\n\t\tif ( prop ) {\n\t\t\tif ( QUnit.objectType( callbacks[ prop ] ) === \"function\" ) {\n\t\t\t\treturn callbacks[ prop ].apply( callbacks, args );\n\t\t\t} else {\n\t\t\t\treturn callbacks[ prop ]; // or undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t// the real equiv function\n\tvar innerEquiv,\n\t\t// stack to decide between skip/abort functions\n\t\tcallers = [],\n\t\t// stack to avoiding loops from circular referencing\n\t\tparents = [],\n\n\t\tgetProto = Object.getPrototypeOf || function ( obj ) {\n\t\t\treturn obj.__proto__;\n\t\t},\n\t\tcallbacks = (function () {\n\n\t\t\t// for string, boolean, number and null\n\t\t\tfunction useStrictEquality( b, a ) {\n\t\t\t\tif ( b instanceof a.constructor || a instanceof b.constructor ) {\n\t\t\t\t\t// to catch short annotaion VS 'new' annotation of a\n\t\t\t\t\t// declaration\n\t\t\t\t\t// e.g. var i = 1;\n\t\t\t\t\t// var j = new Number(1);\n\t\t\t\t\treturn a == b;\n\t\t\t\t} else {\n\t\t\t\t\treturn a === b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t\"string\": useStrictEquality,\n\t\t\t\t\"boolean\": useStrictEquality,\n\t\t\t\t\"number\": useStrictEquality,\n\t\t\t\t\"null\": useStrictEquality,\n\t\t\t\t\"undefined\": useStrictEquality,\n\n\t\t\t\t\"nan\": function( b ) {\n\t\t\t\t\treturn isNaN( b );\n\t\t\t\t},\n\n\t\t\t\t\"date\": function( b, a ) {\n\t\t\t\t\treturn QUnit.objectType( b ) === \"date\" && a.valueOf() === b.valueOf();\n\t\t\t\t},\n\n\t\t\t\t\"regexp\": function( b, a ) {\n\t\t\t\t\treturn QUnit.objectType( b ) === \"regexp\" &&\n\t\t\t\t\t\t// the regex itself\n\t\t\t\t\t\ta.source === b.source &&\n\t\t\t\t\t\t// and its modifers\n\t\t\t\t\t\ta.global === b.global &&\n\t\t\t\t\t\t// (gmi) ...\n\t\t\t\t\t\ta.ignoreCase === b.ignoreCase &&\n\t\t\t\t\t\ta.multiline === b.multiline &&\n\t\t\t\t\t\ta.sticky === b.sticky;\n\t\t\t\t},\n\n\t\t\t\t// - skip when the property is a method of an instance (OOP)\n\t\t\t\t// - abort otherwise,\n\t\t\t\t// initial === would have catch identical references anyway\n\t\t\t\t\"function\": function() {\n\t\t\t\t\tvar caller = callers[callers.length - 1];\n\t\t\t\t\treturn caller !== Object && typeof caller !== \"undefined\";\n\t\t\t\t},\n\n\t\t\t\t\"array\": function( b, a ) {\n\t\t\t\t\tvar i, j, len, loop;\n\n\t\t\t\t\t// b could be an object literal here\n\t\t\t\t\tif ( QUnit.objectType( b ) !== \"array\" ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlen = a.length;\n\t\t\t\t\tif ( len !== b.length ) {\n\t\t\t\t\t\t// safe and faster\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// track reference to avoid circular references\n\t\t\t\t\tparents.push( a );\n\t\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\t\tloop = false;\n\t\t\t\t\t\tfor ( j = 0; j < parents.length; j++ ) {\n\t\t\t\t\t\t\tif ( parents[j] === a[i] ) {\n\t\t\t\t\t\t\t\tloop = true;// dont rewalk array\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( !loop && !innerEquiv(a[i], b[i]) ) {\n\t\t\t\t\t\t\tparents.pop();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparents.pop();\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\n\t\t\t\t\"object\": function( b, a ) {\n\t\t\t\t\tvar i, j, loop,\n\t\t\t\t\t\t// Default to true\n\t\t\t\t\t\teq = true,\n\t\t\t\t\t\taProperties = [],\n\t\t\t\t\t\tbProperties = [];\n\n\t\t\t\t\t// comparing constructors is more strict than using\n\t\t\t\t\t// instanceof\n\t\t\t\t\tif ( a.constructor !== b.constructor ) {\n\t\t\t\t\t\t// Allow objects with no prototype to be equivalent to\n\t\t\t\t\t\t// objects with Object as their constructor.\n\t\t\t\t\t\tif ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||\n\t\t\t\t\t\t\t( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// stack constructor before traversing properties\n\t\t\t\t\tcallers.push( a.constructor );\n\t\t\t\t\t// track reference to avoid circular references\n\t\t\t\t\tparents.push( a );\n\n\t\t\t\t\tfor ( i in a ) { // be strict: don't ensures hasOwnProperty\n\t\t\t\t\t\t\t\t\t// and go deep\n\t\t\t\t\t\tloop = false;\n\t\t\t\t\t\tfor ( j = 0; j < parents.length; j++ ) {\n\t\t\t\t\t\t\tif ( parents[j] === a[i] ) {\n\t\t\t\t\t\t\t\t// don't go down the same path twice\n\t\t\t\t\t\t\t\tloop = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\taProperties.push(i); // collect a's properties\n\n\t\t\t\t\t\tif (!loop && !innerEquiv( a[i], b[i] ) ) {\n\t\t\t\t\t\t\teq = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallers.pop(); // unstack, we are done\n\t\t\t\t\tparents.pop();\n\n\t\t\t\t\tfor ( i in b ) {\n\t\t\t\t\t\tbProperties.push( i ); // collect b's properties\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ensures identical properties name\n\t\t\t\t\treturn eq && innerEquiv( aProperties.sort(), bProperties.sort() );\n\t\t\t\t}\n\t\t\t};\n\t\t}());\n\n\tinnerEquiv = function() { // can take multiple arguments\n\t\tvar args = [].slice.apply( arguments );\n\t\tif ( args.length < 2 ) {\n\t\t\treturn true; // end transition\n\t\t}\n\n\t\treturn (function( a, b ) {\n\t\t\tif ( a === b ) {\n\t\t\t\treturn true; // catch the most you can\n\t\t\t} else if ( a === null || b === null || typeof a === \"undefined\" ||\n\t\t\t\t\ttypeof b === \"undefined\" ||\n\t\t\t\t\tQUnit.objectType(a) !== QUnit.objectType(b) ) {\n\t\t\t\treturn false; // don't lose time with error prone cases\n\t\t\t} else {\n\t\t\t\treturn bindCallbacks(a, callbacks, [ b, a ]);\n\t\t\t}\n\n\t\t\t// apply transition with (1..n) arguments\n\t\t}( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );\n\t};\n\n\treturn innerEquiv;\n}());\n\n/**\n * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |\n * http://flesler.blogspot.com Licensed under BSD\n * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008\n *\n * @projectDescription Advanced and extensible data dumping for Javascript.\n * @version 1.0.0\n * @author Ariel Flesler\n * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}\n */\nQUnit.jsDump = (function() {\n\tfunction quote( str ) {\n\t\treturn '\"' + str.toString().replace( /\"/g, '\\\\\"' ) + '\"';\n\t}\n\tfunction literal( o ) {\n\t\treturn o + \"\";\n\t}\n\tfunction join( pre, arr, post ) {\n\t\tvar s = jsDump.separator(),\n\t\t\tbase = jsDump.indent(),\n\t\t\tinner = jsDump.indent(1);\n\t\tif ( arr.join ) {\n\t\t\tarr = arr.join( \",\" + s + inner );\n\t\t}\n\t\tif ( !arr ) {\n\t\t\treturn pre + post;\n\t\t}\n\t\treturn [ pre, inner + arr, base + post ].join(s);\n\t}\n\tfunction array( arr, stack ) {\n\t\tvar i = arr.length, ret = new Array(i);\n\t\tthis.up();\n\t\twhile ( i-- ) {\n\t\t\tret[i] = this.parse( arr[i] , undefined , stack);\n\t\t}\n\t\tthis.down();\n\t\treturn join( \"[\", ret, \"]\" );\n\t}\n\n\tvar reName = /^function (\\w+)/,\n\t\tjsDump = {\n\t\t\tparse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance\n\t\t\t\tstack = stack || [ ];\n\t\t\t\tvar inStack, res,\n\t\t\t\t\tparser = this.parsers[ type || this.typeOf(obj) ];\n\n\t\t\t\ttype = typeof parser;\n\t\t\t\tinStack = inArray( obj, stack );\n\n\t\t\t\tif ( inStack != -1 ) {\n\t\t\t\t\treturn \"recursion(\" + (inStack - stack.length) + \")\";\n\t\t\t\t}\n\t\t\t\t//else\n\t\t\t\tif ( type == \"function\" )  {\n\t\t\t\t\tstack.push( obj );\n\t\t\t\t\tres = parser.call( this, obj, stack );\n\t\t\t\t\tstack.pop();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\t// else\n\t\t\t\treturn ( type == \"string\" ) ? parser : this.parsers.error;\n\t\t\t},\n\t\t\ttypeOf: function( obj ) {\n\t\t\t\tvar type;\n\t\t\t\tif ( obj === null ) {\n\t\t\t\t\ttype = \"null\";\n\t\t\t\t} else if ( typeof obj === \"undefined\" ) {\n\t\t\t\t\ttype = \"undefined\";\n\t\t\t\t} else if ( QUnit.is( \"regexp\", obj) ) {\n\t\t\t\t\ttype = \"regexp\";\n\t\t\t\t} else if ( QUnit.is( \"date\", obj) ) {\n\t\t\t\t\ttype = \"date\";\n\t\t\t\t} else if ( QUnit.is( \"function\", obj) ) {\n\t\t\t\t\ttype = \"function\";\n\t\t\t\t} else if ( typeof obj.setInterval !== undefined && typeof obj.document !== \"undefined\" && typeof obj.nodeType === \"undefined\" ) {\n\t\t\t\t\ttype = \"window\";\n\t\t\t\t} else if ( obj.nodeType === 9 ) {\n\t\t\t\t\ttype = \"document\";\n\t\t\t\t} else if ( obj.nodeType ) {\n\t\t\t\t\ttype = \"node\";\n\t\t\t\t} else if (\n\t\t\t\t\t// native arrays\n\t\t\t\t\ttoString.call( obj ) === \"[object Array]\" ||\n\t\t\t\t\t// NodeList objects\n\t\t\t\t\t( typeof obj.length === \"number\" && typeof obj.item !== \"undefined\" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === \"undefined\" ) ) )\n\t\t\t\t) {\n\t\t\t\t\ttype = \"array\";\n\t\t\t\t} else {\n\t\t\t\t\ttype = typeof obj;\n\t\t\t\t}\n\t\t\t\treturn type;\n\t\t\t},\n\t\t\tseparator: function() {\n\t\t\t\treturn this.multiline ?\tthis.HTML ? \"<br />\" : \"\\n\" : this.HTML ? \"&nbsp;\" : \" \";\n\t\t\t},\n\t\t\tindent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing\n\t\t\t\tif ( !this.multiline ) {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t\tvar chr = this.indentChar;\n\t\t\t\tif ( this.HTML ) {\n\t\t\t\t\tchr = chr.replace( /\\t/g, \"   \" ).replace( / /g, \"&nbsp;\" );\n\t\t\t\t}\n\t\t\t\treturn new Array( this._depth_ + (extra||0) ).join(chr);\n\t\t\t},\n\t\t\tup: function( a ) {\n\t\t\t\tthis._depth_ += a || 1;\n\t\t\t},\n\t\t\tdown: function( a ) {\n\t\t\t\tthis._depth_ -= a || 1;\n\t\t\t},\n\t\t\tsetParser: function( name, parser ) {\n\t\t\t\tthis.parsers[name] = parser;\n\t\t\t},\n\t\t\t// The next 3 are exposed so you can use them\n\t\t\tquote: quote,\n\t\t\tliteral: literal,\n\t\t\tjoin: join,\n\t\t\t//\n\t\t\t_depth_: 1,\n\t\t\t// This is the list of parsers, to modify them, use jsDump.setParser\n\t\t\tparsers: {\n\t\t\t\twindow: \"[Window]\",\n\t\t\t\tdocument: \"[Document]\",\n\t\t\t\terror: \"[ERROR]\", //when no parser is found, shouldn\"t happen\n\t\t\t\tunknown: \"[Unknown]\",\n\t\t\t\t\"null\": \"null\",\n\t\t\t\t\"undefined\": \"undefined\",\n\t\t\t\t\"function\": function( fn ) {\n\t\t\t\t\tvar ret = \"function\",\n\t\t\t\t\t\tname = \"name\" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE\n\n\t\t\t\t\tif ( name ) {\n\t\t\t\t\t\tret += \" \" + name;\n\t\t\t\t\t}\n\t\t\t\t\tret += \"( \";\n\n\t\t\t\t\tret = [ ret, QUnit.jsDump.parse( fn, \"functionArgs\" ), \"){\" ].join( \"\" );\n\t\t\t\t\treturn join( ret, QUnit.jsDump.parse(fn,\"functionCode\" ), \"}\" );\n\t\t\t\t},\n\t\t\t\tarray: array,\n\t\t\t\tnodelist: array,\n\t\t\t\t\"arguments\": array,\n\t\t\t\tobject: function( map, stack ) {\n\t\t\t\t\tvar ret = [ ], keys, key, val, i;\n\t\t\t\t\tQUnit.jsDump.up();\n\t\t\t\t\tif ( Object.keys ) {\n\t\t\t\t\t\tkeys = Object.keys( map );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tkeys = [];\n\t\t\t\t\t\tfor ( key in map ) {\n\t\t\t\t\t\t\tkeys.push( key );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tkeys.sort();\n\t\t\t\t\tfor ( i = 0; i < keys.length; i++ ) {\n\t\t\t\t\t\tkey = keys[ i ];\n\t\t\t\t\t\tval = map[ key ];\n\t\t\t\t\t\tret.push( QUnit.jsDump.parse( key, \"key\" ) + \": \" + QUnit.jsDump.parse( val, undefined, stack ) );\n\t\t\t\t\t}\n\t\t\t\t\tQUnit.jsDump.down();\n\t\t\t\t\treturn join( \"{\", ret, \"}\" );\n\t\t\t\t},\n\t\t\t\tnode: function( node ) {\n\t\t\t\t\tvar a, val,\n\t\t\t\t\t\topen = QUnit.jsDump.HTML ? \"&lt;\" : \"<\",\n\t\t\t\t\t\tclose = QUnit.jsDump.HTML ? \"&gt;\" : \">\",\n\t\t\t\t\t\ttag = node.nodeName.toLowerCase(),\n\t\t\t\t\t\tret = open + tag;\n\n\t\t\t\t\tfor ( a in QUnit.jsDump.DOMAttrs ) {\n\t\t\t\t\t\tval = node[ QUnit.jsDump.DOMAttrs[a] ];\n\t\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\t\tret += \" \" + a + \"=\" + QUnit.jsDump.parse( val, \"attribute\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn ret + close + open + \"/\" + tag + close;\n\t\t\t\t},\n\t\t\t\tfunctionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function\n\t\t\t\t\tvar args,\n\t\t\t\t\t\tl = fn.length;\n\n\t\t\t\t\tif ( !l ) {\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\targs = new Array(l);\n\t\t\t\t\twhile ( l-- ) {\n\t\t\t\t\t\targs[l] = String.fromCharCode(97+l);//97 is 'a'\n\t\t\t\t\t}\n\t\t\t\t\treturn \" \" + args.join( \", \" ) + \" \";\n\t\t\t\t},\n\t\t\t\tkey: quote, //object calls it internally, the key part of an item in a map\n\t\t\t\tfunctionCode: \"[code]\", //function calls it internally, it's the content of the function\n\t\t\t\tattribute: quote, //node calls it internally, it's an html attribute value\n\t\t\t\tstring: quote,\n\t\t\t\tdate: quote,\n\t\t\t\tregexp: literal, //regex\n\t\t\t\tnumber: literal,\n\t\t\t\t\"boolean\": literal\n\t\t\t},\n\t\t\tDOMAttrs: {\n\t\t\t\t//attributes to dump from nodes, name=>realName\n\t\t\t\tid: \"id\",\n\t\t\t\tname: \"name\",\n\t\t\t\t\"class\": \"className\"\n\t\t\t},\n\t\t\tHTML: false,//if true, entities are escaped ( <, >, \\t, space and \\n )\n\t\t\tindentChar: \"  \",//indentation unit\n\t\t\tmultiline: true //if true, items in a collection, are separated by a \\n, else just a space.\n\t\t};\n\n\treturn jsDump;\n}());\n\n// from Sizzle.js\nfunction getText( elems ) {\n\tvar i, elem,\n\t\tret = \"\";\n\n\tfor ( i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// from jquery.js\nfunction inArray( elem, array ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( elem );\n\t}\n\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[ i ] === elem ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/*\n * Javascript Diff Algorithm\n *  By John Resig (http://ejohn.org/)\n *  Modified by Chu Alan \"sprite\"\n *\n * Released under the MIT license.\n *\n * More Info:\n *  http://ejohn.org/projects/javascript-diff-algorithm/\n *\n * Usage: QUnit.diff(expected, actual)\n *\n * QUnit.diff( \"the quick brown fox jumped over\", \"the quick fox jumps over\" ) == \"the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over\"\n */\nQUnit.diff = (function() {\n\tfunction diff( o, n ) {\n\t\tvar i,\n\t\t\tns = {},\n\t\t\tos = {};\n\n\t\tfor ( i = 0; i < n.length; i++ ) {\n\t\t\tif ( ns[ n[i] ] == null ) {\n\t\t\t\tns[ n[i] ] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\to: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tns[ n[i] ].rows.push( i );\n\t\t}\n\n\t\tfor ( i = 0; i < o.length; i++ ) {\n\t\t\tif ( os[ o[i] ] == null ) {\n\t\t\t\tos[ o[i] ] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\tn: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tos[ o[i] ].rows.push( i );\n\t\t}\n\n\t\tfor ( i in ns ) {\n\t\t\tif ( !hasOwn.call( ns, i ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ( ns[i].rows.length == 1 && typeof os[i] != \"undefined\" && os[i].rows.length == 1 ) {\n\t\t\t\tn[ ns[i].rows[0] ] = {\n\t\t\t\t\ttext: n[ ns[i].rows[0] ],\n\t\t\t\t\trow: os[i].rows[0]\n\t\t\t\t};\n\t\t\t\to[ os[i].rows[0] ] = {\n\t\t\t\t\ttext: o[ os[i].rows[0] ],\n\t\t\t\t\trow: ns[i].rows[0]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = 0; i < n.length - 1; i++ ) {\n\t\t\tif ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&\n\t\t\t\t\t\tn[ i + 1 ] == o[ n[i].row + 1 ] ) {\n\n\t\t\t\tn[ i + 1 ] = {\n\t\t\t\t\ttext: n[ i + 1 ],\n\t\t\t\t\trow: n[i].row + 1\n\t\t\t\t};\n\t\t\t\to[ n[i].row + 1 ] = {\n\t\t\t\t\ttext: o[ n[i].row + 1 ],\n\t\t\t\t\trow: i + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = n.length - 1; i > 0; i-- ) {\n\t\t\tif ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&\n\t\t\t\t\t\tn[ i - 1 ] == o[ n[i].row - 1 ]) {\n\n\t\t\t\tn[ i - 1 ] = {\n\t\t\t\t\ttext: n[ i - 1 ],\n\t\t\t\t\trow: n[i].row - 1\n\t\t\t\t};\n\t\t\t\to[ n[i].row - 1 ] = {\n\t\t\t\t\ttext: o[ n[i].row - 1 ],\n\t\t\t\t\trow: i - 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\to: o,\n\t\t\tn: n\n\t\t};\n\t}\n\n\treturn function( o, n ) {\n\t\to = o.replace( /\\s+$/, \"\" );\n\t\tn = n.replace( /\\s+$/, \"\" );\n\n\t\tvar i, pre,\n\t\t\tstr = \"\",\n\t\t\tout = diff( o === \"\" ? [] : o.split(/\\s+/), n === \"\" ? [] : n.split(/\\s+/) ),\n\t\t\toSpace = o.match(/\\s+/g),\n\t\t\tnSpace = n.match(/\\s+/g);\n\n\t\tif ( oSpace == null ) {\n\t\t\toSpace = [ \" \" ];\n\t\t}\n\t\telse {\n\t\t\toSpace.push( \" \" );\n\t\t}\n\n\t\tif ( nSpace == null ) {\n\t\t\tnSpace = [ \" \" ];\n\t\t}\n\t\telse {\n\t\t\tnSpace.push( \" \" );\n\t\t}\n\n\t\tif ( out.n.length === 0 ) {\n\t\t\tfor ( i = 0; i < out.o.length; i++ ) {\n\t\t\t\tstr += \"<del>\" + out.o[i] + oSpace[i] + \"</del>\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif ( out.n[0].text == null ) {\n\t\t\t\tfor ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {\n\t\t\t\t\tstr += \"<del>\" + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < out.n.length; i++ ) {\n\t\t\t\tif (out.n[i].text == null) {\n\t\t\t\t\tstr += \"<ins>\" + out.n[i] + nSpace[i] + \"</ins>\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// `pre` initialized at top of scope\n\t\t\t\t\tpre = \"\";\n\n\t\t\t\t\tfor ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {\n\t\t\t\t\t\tpre += \"<del>\" + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += \" \" + out.n[i].text + nSpace[i] + pre;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n}());\n\n// for CommonJS enviroments, export everything\nif ( typeof exports !== \"undefined\" ) {\n\textend(exports, QUnit);\n}\n\n// get at whatever the global object is, like window in browsers\n}( (function() {return this;}.call()) ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/grunt.js",
    "content": "module.exports = function( grunt ) {\n\n\"use strict\";\n\nvar\n\t// files\n\tcoreFiles = [\n\t\t\"jquery.ui.core.js\",\n\t\t\"jquery.ui.widget.js\",\n\t\t\"jquery.ui.mouse.js\",\n\t\t\"jquery.ui.draggable.js\",\n\t\t\"jquery.ui.droppable.js\",\n\t\t\"jquery.ui.resizable.js\",\n\t\t\"jquery.ui.selectable.js\",\n\t\t\"jquery.ui.sortable.js\",\n\t\t\"jquery.ui.effect.js\"\n\t],\n\n\tuiFiles = coreFiles.map(function( file ) {\n\t\treturn \"ui/\" + file;\n\t}).concat( grunt.file.expandFiles( \"ui/*.js\" ).filter(function( file ) {\n\t\treturn coreFiles.indexOf( file.substring(3) ) === -1;\n\t})),\n\n\tallI18nFiles = grunt.file.expandFiles( \"ui/i18n/*.js\" ),\n\n\tcssFiles = [\n\t\t\"core\",\n\t\t\"accordion\",\n\t\t\"autocomplete\",\n\t\t\"button\",\n\t\t\"datepicker\",\n\t\t\"dialog\",\n\t\t\"menu\",\n\t\t\"progressbar\",\n\t\t\"resizable\",\n\t\t\"selectable\",\n\t\t\"slider\",\n\t\t\"spinner\",\n\t\t\"tabs\",\n\t\t\"tooltip\",\n\t\t\"theme\"\n\t].map(function( component ) {\n\t\treturn \"themes/base/jquery.ui.\" + component + \".css\";\n\t}),\n\n\t// minified files\n\tminify = {\n\t\t\"dist/jquery-ui.min.js\": [ \"<banner:meta.bannerAll>\", \"dist/jquery-ui.js\" ],\n\t\t\"dist/i18n/jquery-ui-i18n.min.js\": [ \"<banner:meta.bannerI18n>\", \"dist/i18n/jquery-ui-i18n.js\" ]\n\t},\n\n\tminifyCSS = {\n\t\t\"dist/jquery-ui.min.css\": \"dist/jquery-ui.css\"\n\t},\n\n\tcompareFiles = {\n\t\tall: [\n\t\t\t\"dist/jquery-ui.js\",\n\t\t\t\"dist/jquery-ui.min.js\"\n\t\t]\n\t};\n\nfunction mapMinFile( file ) {\n\treturn \"dist/\" + file.replace( /\\.js$/, \".min.js\" ).replace( /ui\\//, \"minified/\" );\n}\n\nuiFiles.concat( allI18nFiles ).forEach(function( file ) {\n\tminify[ mapMinFile( file ) ] = [ \"<banner>\", file ];\n});\n\ncssFiles.forEach(function( file ) {\n\tminifyCSS[ \"dist/\" + file.replace( /\\.css$/, \".min.css\" ).replace( /themes\\/base\\//, \"themes/base/minified/\" ) ] = [ \"<banner>\", \"<strip_all_banners:\" + file + \">\" ];\n});\n\nuiFiles.forEach(function( file ) {\n\tcompareFiles[ file ] = [ file,  mapMinFile( file ) ];\n});\n\n// grunt plugins\ngrunt.loadNpmTasks( \"grunt-css\" );\ngrunt.loadNpmTasks( \"grunt-html\" );\ngrunt.loadNpmTasks( \"grunt-compare-size\" );\ngrunt.loadNpmTasks( \"grunt-junit\" );\ngrunt.loadNpmTasks( \"grunt-git-authors\" );\n// local testswarm and build tasks\ngrunt.loadTasks( \"build/tasks\" );\n\ngrunt.registerHelper( \"strip_all_banners\", function( filepath ) {\n\treturn grunt.file.read( filepath ).replace( /^\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*/g, \"\" );\n});\n\nfunction stripBanner( files ) {\n\treturn files.map(function( file ) {\n\t\treturn \"<strip_all_banners:\" + file + \">\";\n\t});\n}\n\nfunction stripDirectory( file ) {\n\t// TODO: we're receiving the directive, so we need to strip the trailing >\n\t// we should be receving a clean path without the directive\n\treturn file.replace( /.+\\/(.+?)>?$/, \"$1\" );\n}\n// allow access from banner template\nglobal.stripDirectory = stripDirectory;\n\nfunction createBanner( files ) {\n\t// strip folders\n\tvar fileNames = files && files.map( stripDirectory );\n\treturn \"/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - \" +\n\t\t\"<%= grunt.template.today('isoDate') %>\\n\" +\n\t\t\"<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>\" +\n\t\t\"* Includes: \" + (files ? fileNames.join(\", \") : \"<%= stripDirectory(grunt.task.current.file.src[1]) %>\") + \"\\n\" +\n\t\t\"* Copyright <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;\" +\n\t\t\" Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\";\n}\n\ngrunt.initConfig({\n\tpkg: \"<json:package.json>\",\n\tfiles: {\n\t\tdist: \"<%= pkg.name %>-<%= pkg.version %>\",\n\t\tcdn: \"<%= pkg.name %>-<%= pkg.version %>-cdn\",\n\t\tthemes: \"<%= pkg.name %>-themes-<%= pkg.version %>\"\n\t},\n\tmeta: {\n\t\tbanner: createBanner(),\n\t\tbannerAll: createBanner( uiFiles ),\n\t\tbannerI18n: createBanner( allI18nFiles ),\n\t\tbannerCSS: createBanner( cssFiles )\n\t},\n\tcompare_size: compareFiles,\n\tconcat: {\n\t\tui: {\n\t\t\tsrc: [ \"<banner:meta.bannerAll>\", stripBanner( uiFiles ) ],\n\t\t\tdest: \"dist/jquery-ui.js\"\n\t\t},\n\t\ti18n: {\n\t\t\tsrc: [ \"<banner:meta.bannerI18n>\", allI18nFiles ],\n\t\t\tdest: \"dist/i18n/jquery-ui-i18n.js\"\n\t\t},\n\t\tcss: {\n\t\t\tsrc: [ \"<banner:meta.bannerCSS>\", stripBanner( cssFiles ) ],\n\t\t\tdest: \"dist/jquery-ui.css\"\n\t\t}\n\t},\n\tmin: minify,\n\tcssmin: minifyCSS,\n\thtmllint: {\n\t\t// ignore files that contain invalid html, used only for ajax content testing\n\t\tall: grunt.file.expand( [ \"demos/**/*.html\", \"tests/**/*.html\" ] ).filter(function( file ) {\n\t\t\treturn !/(?:ajax\\/content\\d\\.html|tabs\\/data\\/test\\.html|tests\\/unit\\/core\\/core\\.html)/.test( file );\n\t\t})\n\t},\n\tcopy: {\n\t\tdist: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"jquery-*.js\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"README.md\",\n\t\t\t\t\"grunt.js\",\n\t\t\t\t\"package.json\",\n\t\t\t\t\"*.jquery.json\",\n\t\t\t\t\"ui/**/*\",\n\t\t\t\t\"ui/.jshintrc\",\n\t\t\t\t\"demos/**/*\",\n\t\t\t\t\"themes/**/*\",\n\t\t\t\t\"external/**/*\",\n\t\t\t\t\"tests/**/*\"\n\t\t\t],\n\t\t\trenames: {\n\t\t\t\t\"dist/jquery-ui.js\": \"ui/jquery-ui.js\",\n\t\t\t\t\"dist/jquery-ui.min.js\": \"ui/minified/jquery-ui.min.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.js\": \"ui/i18n/jquery-ui-i18n.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.min.js\": \"ui/minified/i18n/jquery-ui-i18n.min.js\",\n\t\t\t\t\"dist/jquery-ui.css\": \"themes/base/jquery-ui.css\",\n\t\t\t\t\"dist/jquery-ui.min.css\": \"themes/base/minified/jquery-ui.min.css\"\n\t\t\t},\n\t\t\tdest: \"dist/<%= files.dist %>\"\n\t\t},\n\t\tdist_min: {\n\t\t\tsrc: \"dist/minified/**/*\",\n\t\t\tstrip: /^dist/,\n\t\t\tdest: \"dist/<%= files.dist %>/ui\"\n\t\t},\n\t\tdist_css_min: {\n\t\t\tsrc: \"dist/themes/base/minified/*.css\",\n\t\t\tstrip: /^dist/,\n\t\t\tdest: \"dist/<%= files.dist %>\"\n\t\t},\n\t\tdist_units_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/\"\n\t\t},\n\t\tdist_min_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/<%= files.dist %>/themes/base/minified\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"ui/*.js\",\n\t\t\t\t\"package.json\"\n\t\t\t],\n\t\t\trenames: {\n\t\t\t\t\"dist/jquery-ui.js\": \"jquery-ui.js\",\n\t\t\t\t\"dist/jquery-ui.min.js\": \"jquery-ui.min.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.js\": \"i18n/jquery-ui-i18n.js\",\n\t\t\t\t\"dist/i18n/jquery-ui-i18n.min.js\": \"i18n/jquery-ui-i18n.min.js\",\n\t\t\t\t\"dist/jquery-ui.css\": \"themes/base/jquery-ui.css\",\n\t\t\t\t\"dist/jquery-ui.min.css\": \"themes/base/minified/jquery-ui.min.css\"\n\t\t\t},\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_i18n: {\n\t\t\tsrc: \"ui/i18n/jquery.ui.datepicker-*.js\",\n\t\t\tstrip: \"ui/\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_i18n_min: {\n\t\t\tsrc: \"dist/minified/i18n/jquery.ui.datepicker-*.js\",\n\t\t\tstrip: \"dist/minified\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tcdn_min: {\n\t\t\tsrc: \"dist/minified/*.js\",\n\t\t\tstrip: /^dist\\/minified/,\n\t\t\tdest: \"dist/<%= files.cdn %>/ui\"\n\t\t},\n\t\tcdn_min_images: {\n\t\t\tsrc: \"themes/base/images/*\",\n\t\t\tstrip: /^themes\\/base\\//,\n\t\t\tdest: \"dist/<%= files.cdn %>/themes/base/minified\"\n\t\t},\n\t\tcdn_themes: {\n\t\t\tsrc: \"dist/<%= files.themes %>/themes/**/*\",\n\t\t\tstrip: \"dist/<%= files.themes %>\",\n\t\t\tdest: \"dist/<%= files.cdn %>\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: [\n\t\t\t\t\"AUTHORS.txt\",\n\t\t\t\t\"MIT-LICENSE.txt\",\n\t\t\t\t\"package.json\"\n\t\t\t],\n\t\t\tdest: \"dist/<%= files.themes %>\"\n\t\t}\n\t},\n\tzip: {\n\t\tdist: {\n\t\t\tsrc: \"<%= files.dist %>\",\n\t\t\tdest: \"<%= files.dist %>.zip\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: \"<%= files.cdn %>\",\n\t\t\tdest: \"<%= files.cdn %>.zip\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: \"<%= files.themes %>\",\n\t\t\tdest: \"<%= files.themes %>.zip\"\n\t\t}\n\t},\n\tmd5: {\n\t\tdist: {\n\t\t\tsrc: \"dist/<%= files.dist %>\",\n\t\t\tdest: \"dist/<%= files.dist %>/MANIFEST\"\n\t\t},\n\t\tcdn: {\n\t\t\tsrc: \"dist/<%= files.cdn %>\",\n\t\t\tdest: \"dist/<%= files.cdn %>/MANIFEST\"\n\t\t},\n\t\tthemes: {\n\t\t\tsrc: \"dist/<%= files.themes %>\",\n\t\t\tdest: \"dist/<%= files.themes %>/MANIFEST\"\n\t\t}\n\t},\n\tqunit: {\n\t\tfiles: grunt.file.expandFiles( \"tests/unit/**/*.html\" ).filter(function( file ) {\n\t\t\t// disabling everything that doesn't (quite) work with PhantomJS for now\n\t\t\t// TODO except for all|index|test, try to include more as we go\n\t\t\treturn !( /(all|all-active|index|test|draggable|droppable|selectable|resizable|sortable|dialog|slider|datepicker|tabs|tabs_deprecated|tooltip)\\.html$/ ).test( file );\n\t\t})\n\t},\n\tlint: {\n\t\tui: grunt.file.expandFiles( \"ui/*.js\" ).filter(function( file ) {\n\t\t\t// TODO remove items from this list once rewritten\n\t\t\treturn !( /(mouse|datepicker|draggable|droppable|resizable|selectable|sortable)\\.js$/ ).test( file );\n\t\t}),\n\t\tgrunt: [ \"grunt.js\", \"build/**/*.js\" ],\n\t\ttests: \"tests/unit/**/*.js\"\n\t},\n\tcsslint: {\n\t\t// nothing: []\n\t\t// TODO figure out what to check for, then fix and enable\n\t\tbase_theme: {\n\t\t\tsrc: grunt.file.expandFiles( \"themes/base/*.css\" ).filter(function( file ) {\n\t\t\t\t// TODO remove items from this list once rewritten\n\t\t\t\treturn !( /(button|datepicker|core|dialog|theme)\\.css$/ ).test( file );\n\t\t\t}),\n\t\t\t// TODO consider reenabling some of these rules\n\t\t\trules: {\n\t\t\t\t\"import\": false,\n\t\t\t\t\"important\": false,\n\t\t\t\t\"outline-none\": false,\n\t\t\t\t// especially this one\n\t\t\t\t\"overqualified-elements\": false,\n\t\t\t\t\"compatible-vendor-prefixes\": false\n\t\t\t}\n\t\t}\n\t},\n\tjshint: (function() {\n\t\tfunction parserc( path ) {\n\t\t\tvar rc = grunt.file.readJSON( (path || \"\") + \".jshintrc\" ),\n\t\t\t\tsettings = {\n\t\t\t\t\toptions: rc,\n\t\t\t\t\tglobals: {}\n\t\t\t\t};\n\n\t\t\t(rc.predef || []).forEach(function( prop ) {\n\t\t\t\tsettings.globals[ prop ] = true;\n\t\t\t});\n\t\t\tdelete rc.predef;\n\n\t\t\treturn settings;\n\t\t}\n\n\t\treturn {\n\t\t\tgrunt: parserc(),\n\t\t\tui: parserc( \"ui/\" ),\n\t\t\t// TODO: `evil: true` is only for document.write() https://github.com/jshint/jshint/issues/519\n\t\t\t// TODO: don't create so many globals in tests\n\t\t\ttests: parserc( \"tests/\" )\n\t\t};\n\t})()\n});\n\ngrunt.registerTask( \"default\", \"lint csslint htmllint qunit\" );\ngrunt.registerTask( \"sizer\", \"concat:ui min:dist/jquery-ui.min.js compare_size:all\" );\ngrunt.registerTask( \"sizer_all\", \"concat:ui min compare_size\" );\ngrunt.registerTask( \"build\", \"concat min cssmin copy:dist_units_images\" );\ngrunt.registerTask( \"release\", \"clean build copy:dist copy:dist_min copy:dist_min_images copy:dist_css_min md5:dist zip:dist\" );\ngrunt.registerTask( \"release_themes\", \"release generate_themes copy:themes md5:themes zip:themes\" );\ngrunt.registerTask( \"release_cdn\", \"release_themes copy:cdn copy:cdn_min copy:cdn_i18n copy:cdn_i18n_min copy:cdn_min_images copy:cdn_themes md5:cdn zip:cdn\" );\n\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/package.json",
    "content": "{\n\t\"name\": \"jquery-ui\",\n\t\"title\": \"jQuery UI\",\n\t\"description\": \"A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.\",\n\t\"version\": \"1.9.2\",\n\t\"homepage\": \"http://jqueryui.com\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"git://github.com/jquery/jquery-ui.git\"\n\t},\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"dependencies\": {},\n\t\"devDependencies\": {\n\t\t\"grunt\": \"~0.3.17\",\n\t\t\"grunt-css\": \"0.2.0\",\n\t\t\"grunt-compare-size\": \"0.1.4\",\n\t\t\"grunt-html\": \"0.1.1\",\n\t\t\"grunt-junit\": \"0.1.4\",\n\t\t\"grunt-git-authors\": \"1.0.0\",\n\t\t\"rimraf\": \"2.0.1\",\n\t\t\"testswarm\": \"0.2.3\"\n\t},\n\t\"keywords\": []\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery-ui.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }\n.ui-widget-content a { color: #222222/*{fcContent}*/; }\n.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }\n.ui-widget-header a { color: #222222/*{fcHeader}*/; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121/*{fcHover}*/; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }\n.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.accordion.css",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Accordion#theming\n */\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.all.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import \"jquery.ui.base.css\";\n@import \"jquery.ui.theme.css\";\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.autocomplete.css",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Autocomplete#theming\n */\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.base.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import url(\"jquery.ui.core.css\");\n\n@import url(\"jquery.ui.accordion.css\");\n@import url(\"jquery.ui.autocomplete.css\");\n@import url(\"jquery.ui.button.css\");\n@import url(\"jquery.ui.datepicker.css\");\n@import url(\"jquery.ui.dialog.css\");\n@import url(\"jquery.ui.menu.css\");\n@import url(\"jquery.ui.progressbar.css\");\n@import url(\"jquery.ui.resizable.css\");\n@import url(\"jquery.ui.selectable.css\");\n@import url(\"jquery.ui.slider.css\");\n@import url(\"jquery.ui.spinner.css\");\n@import url(\"jquery.ui.tabs.css\");\n@import url(\"jquery.ui.tooltip.css\");\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.button.css",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Button#theming\n */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.core.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.datepicker.css",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Datepicker#theming\n */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.dialog.css",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Dialog#theming\n */\n.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.menu.css",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu#theming\n */\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.progressbar.css",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Progressbar#theming\n */\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.resizable.css",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Resizable#theming\n */\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.selectable.css",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Selectable#theming\n */\n.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.slider.css",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Slider#theming\n */\n.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.spinner.css",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Spinner#theming\n */\n.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tabs.css",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Tabs#theming\n */\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.theme.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }\n.ui-widget-content a { color: #222222/*{fcContent}*/; }\n.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }\n.ui-widget-header a { color: #222222/*{fcHeader}*/; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121/*{fcHover}*/; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }\n.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/base/jquery.ui.tooltip.css",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery-ui.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.accordion.css",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Accordion#theming\n */\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.all.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import \"jquery.ui.base.css\";\n@import \"jquery.ui.theme.css\";\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Autocomplete#theming\n */\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.base.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import url(\"jquery.ui.core.css\");\n\n@import url(\"jquery.ui.accordion.css\");\n@import url(\"jquery.ui.autocomplete.css\");\n@import url(\"jquery.ui.button.css\");\n@import url(\"jquery.ui.datepicker.css\");\n@import url(\"jquery.ui.dialog.css\");\n@import url(\"jquery.ui.menu.css\");\n@import url(\"jquery.ui.progressbar.css\");\n@import url(\"jquery.ui.resizable.css\");\n@import url(\"jquery.ui.selectable.css\");\n@import url(\"jquery.ui.slider.css\");\n@import url(\"jquery.ui.spinner.css\");\n@import url(\"jquery.ui.tabs.css\");\n@import url(\"jquery.ui.tooltip.css\");\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.button.css",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Button#theming\n */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.core.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Datepicker#theming\n */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.dialog.css",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Dialog#theming\n */\n.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.menu.css",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu#theming\n */\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Progressbar#theming\n */\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.resizable.css",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Resizable#theming\n */\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.selectable.css",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Selectable#theming\n */\n.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.slider.css",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Slider#theming\n */\n.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.spinner.css",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Spinner#theming\n */\n.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tabs.css",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Tabs#theming\n */\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.theme.css",
    "content": "/*!\n * jQuery UI CSS Framework 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming/API\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n */\n\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }\n.ui-widget-content a { color: #333333; }\n.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }\n.ui-widget-header a { color: #ffffff; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #c77405; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .5;filter:Alpha(Opacity=50); }\n.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/themes/ui-lightness/jquery.ui.tooltip.css",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery-ui-i18n.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-11-23\n* http://jqueryui.com\n* Includes: jquery.ui.datepicker-af.js, jquery.ui.datepicker-ar-DZ.js, jquery.ui.datepicker-ar.js, jquery.ui.datepicker-az.js, jquery.ui.datepicker-bg.js, jquery.ui.datepicker-bs.js, jquery.ui.datepicker-ca.js, jquery.ui.datepicker-cs.js, jquery.ui.datepicker-cy-GB.js, jquery.ui.datepicker-da.js, jquery.ui.datepicker-de.js, jquery.ui.datepicker-el.js, jquery.ui.datepicker-en-AU.js, jquery.ui.datepicker-en-GB.js, jquery.ui.datepicker-en-NZ.js, jquery.ui.datepicker-eo.js, jquery.ui.datepicker-es.js, jquery.ui.datepicker-et.js, jquery.ui.datepicker-eu.js, jquery.ui.datepicker-fa.js, jquery.ui.datepicker-fi.js, jquery.ui.datepicker-fo.js, jquery.ui.datepicker-fr-CH.js, jquery.ui.datepicker-fr.js, jquery.ui.datepicker-gl.js, jquery.ui.datepicker-he.js, jquery.ui.datepicker-hi.js, jquery.ui.datepicker-hr.js, jquery.ui.datepicker-hu.js, jquery.ui.datepicker-hy.js, jquery.ui.datepicker-id.js, jquery.ui.datepicker-is.js, jquery.ui.datepicker-it.js, jquery.ui.datepicker-ja.js, jquery.ui.datepicker-ka.js, jquery.ui.datepicker-kk.js, jquery.ui.datepicker-km.js, jquery.ui.datepicker-ko.js, jquery.ui.datepicker-lb.js, jquery.ui.datepicker-lt.js, jquery.ui.datepicker-lv.js, jquery.ui.datepicker-mk.js, jquery.ui.datepicker-ml.js, jquery.ui.datepicker-ms.js, jquery.ui.datepicker-nl-BE.js, jquery.ui.datepicker-nl.js, jquery.ui.datepicker-no.js, jquery.ui.datepicker-pl.js, jquery.ui.datepicker-pt-BR.js, jquery.ui.datepicker-pt.js, jquery.ui.datepicker-rm.js, jquery.ui.datepicker-ro.js, jquery.ui.datepicker-ru.js, jquery.ui.datepicker-sk.js, jquery.ui.datepicker-sl.js, jquery.ui.datepicker-sq.js, jquery.ui.datepicker-sr-SR.js, jquery.ui.datepicker-sr.js, jquery.ui.datepicker-sv.js, jquery.ui.datepicker-ta.js, jquery.ui.datepicker-th.js, jquery.ui.datepicker-tj.js, jquery.ui.datepicker-tr.js, jquery.ui.datepicker-uk.js, jquery.ui.datepicker-vi.js, jquery.ui.datepicker-zh-CN.js, jquery.ui.datepicker-zh-HK.js, jquery.ui.datepicker-zh-TW.js\n* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */\n\n/* Afrikaans initialisation for the jQuery UI date picker plugin. */\n/* Written by Renier Pretorius. */\njQuery(function($){\n\t$.datepicker.regional['af'] = {\n\t\tcloseText: 'Selekteer',\n\t\tprevText: 'Vorige',\n\t\tnextText: 'Volgende',\n\t\tcurrentText: 'Vandag',\n\t\tmonthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',\n\t\t'Julie','Augustus','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n\t\tdayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],\n\t\tdayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],\n\t\tdayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['af']);\n});\n\n/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/\n/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */\n\njQuery(function($){\n\t$.datepicker.regional['ar-DZ'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',\n\t\t'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);\n});\n\n/* Arabic Translation for jQuery UI date picker plugin. */\n/* Khaled Alhourani -- me@khaledalhourani.com */\n/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */\njQuery(function($){\n\t$.datepicker.regional['ar'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',\n\t\t'تموز', 'آب', 'أيلول',\t'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar']);\n});\n\n/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Jamil Najafov (necefov33@gmail.com). */\njQuery(function($) {\n\t$.datepicker.regional['az'] = {\n\t\tcloseText: 'Bağla',\n\t\tprevText: '&#x3C;Geri',\n\t\tnextText: 'İrəli&#x3E;',\n\t\tcurrentText: 'Bugün',\n\t\tmonthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',\n\t\t'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],\n\t\tmonthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',\n\t\t'İyul','Avq','Sen','Okt','Noy','Dek'],\n\t\tdayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],\n\t\tdayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],\n\t\tdayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['az']);\n});\n\n/* Bulgarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Stoyan Kyosev (http://svest.org). */\njQuery(function($){\n\t$.datepicker.regional['bg'] = {\n\t\tcloseText: 'затвори',\n\t\tprevText: '&#x3C;назад',\n\t\tnextText: 'напред&#x3E;',\n\t\tnextBigText: '&#x3E;&#x3E;',\n\t\tcurrentText: 'днес',\n\t\tmonthNames: ['Януари','Февруари','Март','Април','Май','Юни',\n\t\t'Юли','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',\n\t\t'Юли','Авг','Сеп','Окт','Нов','Дек'],\n\t\tdayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bg']);\n});\n\n/* Bosnian i18n for the jQuery UI date picker plugin. */\n/* Written by Kenan Konjo. */\njQuery(function($){\n\t$.datepicker.regional['bs'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Juni',\n\t\t'Juli','August','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bs']);\n});\n\n/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */\n/* Writers: (joan.leon@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ca'] = {\n\t\tcloseText: 'Tanca',\n\t\tprevText: 'Anterior',\n\t\tnextText: 'Següent',\n\t\tcurrentText: 'Avui',\n\t\tmonthNames: ['gener','febrer','març','abril','maig','juny',\n\t\t'juliol','agost','setembre','octubre','novembre','desembre'],\n\t\tmonthNamesShort: ['gen','feb','març','abr','maig','juny',\n\t\t'jul','ag','set','oct','nov','des'],\n\t\tdayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],\n\t\tdayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tdayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tweekHeader: 'Set',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ca']);\n});\n\n/* Czech initialisation for the jQuery UI date picker plugin. */\n/* Written by Tomas Muller (tomas@tomas-muller.net). */\njQuery(function($){\n\t$.datepicker.regional['cs'] = {\n\t\tcloseText: 'Zavřít',\n\t\tprevText: '&#x3C;Dříve',\n\t\tnextText: 'Později&#x3E;',\n\t\tcurrentText: 'Nyní',\n\t\tmonthNames: ['leden','únor','březen','duben','květen','červen',\n\t\t'červenec','srpen','září','říjen','listopad','prosinec'],\n\t\tmonthNamesShort: ['led','úno','bře','dub','kvě','čer',\n\t\t'čvc','srp','zář','říj','lis','pro'],\n\t\tdayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],\n\t\tdayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n\t\tdayNamesMin: ['ne','po','út','st','čt','pá','so'],\n\t\tweekHeader: 'Týd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cs']);\n});\n\n/* Welsh/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by William Griffiths. */\njQuery(function($){\n\t$.datepicker.regional['cy-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',\n\t\t'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],\n\t\tmonthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',\n\t\t'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],\n\t\tdayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],\n\t\tdayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],\n\t\tdayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],\n\t\tweekHeader: 'Wy',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cy-GB']);\n});\n\n/* Danish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jan Christensen ( deletestuff@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['da'] = {\n\t\tcloseText: 'Luk',\n\t\tprevText: '&#x3C;Forrige',\n\t\tnextText: 'Næste&#x3E;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januar','Februar','Marts','April','Maj','Juni',\n\t\t'Juli','August','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],\n\t\tdayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],\n\t\tdayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],\n\t\tweekHeader: 'Uge',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['da']);\n});\n\n/* German initialisation for the jQuery UI date picker plugin. */\n/* Written by Milian Wolff (mail@milianw.de). */\njQuery(function($){\n\t$.datepicker.regional['de'] = {\n\t\tcloseText: 'schließen',\n\t\tprevText: '&#x3C;zurück',\n\t\tnextText: 'Vor&#x3E;',\n\t\tcurrentText: 'heute',\n\t\tmonthNames: ['Januar','Februar','März','April','Mai','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dez'],\n\t\tdayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],\n\t\tdayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tdayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tweekHeader: 'KW',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['de']);\n});\n\n/* Greek (el) initialisation for the jQuery UI date picker plugin. */\n/* Written by Alex Cicovic (http://www.alexcicovic.com) */\njQuery(function($){\n\t$.datepicker.regional['el'] = {\n\t\tcloseText: 'Κλείσιμο',\n\t\tprevText: 'Προηγούμενος',\n\t\tnextText: 'Επόμενος',\n\t\tcurrentText: 'Τρέχων Μήνας',\n\t\tmonthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',\n\t\t'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],\n\t\tmonthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',\n\t\t'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],\n\t\tdayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],\n\t\tdayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],\n\t\tdayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],\n\t\tweekHeader: 'Εβδ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['el']);\n});\n\n/* English/Australia initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-AU'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-AU']);\n});\n\n/* English/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by Stuart. */\njQuery(function($){\n\t$.datepicker.regional['en-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-GB']);\n});\n\n/* English/New Zealand initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-NZ'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-NZ']);\n});\n\n/* Esperanto initialisation for the jQuery UI date picker plugin. */\n/* Written by Olivier M. (olivierweb@ifrance.com). */\njQuery(function($){\n\t$.datepicker.regional['eo'] = {\n\t\tcloseText: 'Fermi',\n\t\tprevText: '&#x3C;Anta',\n\t\tnextText: 'Sekv&#x3E;',\n\t\tcurrentText: 'Nuna',\n\t\tmonthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',\n\t\t'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aŭg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],\n\t\tweekHeader: 'Sb',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eo']);\n});\n\n/* Inicialización en español para la extensión 'UI date picker' para jQuery. */\n/* Traducido por Vester (xvester@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['es'] = {\n\t\tcloseText: 'Cerrar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Sig&#x3E;',\n\t\tcurrentText: 'Hoy',\n\t\tmonthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',\n\t\t'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],\n\t\tmonthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',\n\t\t'Jul','Ago','Sep','Oct','Nov','Dic'],\n\t\tdayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['es']);\n});\n\n/* Estonian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */\njQuery(function($){\n\t$.datepicker.regional['et'] = {\n\t\tcloseText: 'Sulge',\n\t\tprevText: 'Eelnev',\n\t\tnextText: 'Järgnev',\n\t\tcurrentText: 'Täna',\n\t\tmonthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',\n\t\t'Juuli','August','September','Oktoober','November','Detsember'],\n\t\tmonthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',\n\t\t'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],\n\t\tdayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],\n\t\tdayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],\n\t\tdayNamesMin: ['P','E','T','K','N','R','L'],\n\t\tweekHeader: 'näd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['et']);\n});\n\n/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */\n/* Karrikas-ek itzulia (karrikas@karrikas.com) */\njQuery(function($){\n\t$.datepicker.regional['eu'] = {\n\t\tcloseText: 'Egina',\n\t\tprevText: '&#x3C;Aur',\n\t\tnextText: 'Hur&#x3E;',\n\t\tcurrentText: 'Gaur',\n\t\tmonthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',\n\t\t\t'uztaila','abuztua','iraila','urria','azaroa','abendua'],\n\t\tmonthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',\n\t\t\t'uzt.','abu.','ira.','urr.','aza.','abe.'],\n\t\tdayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],\n\t\tdayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],\n\t\tdayNamesMin: ['ig','al','ar','az','og','ol','lr'],\n\t\tweekHeader: 'As',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eu']);\n});\n\n/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */\n/* Javad Mowlanezhad -- jmowla@gmail.com */\n/* Jalali calendar should supported soon! (Its implemented but I have to test it) */\njQuery(function($) {\n\t$.datepicker.regional['fa'] = {\n\t\tcloseText: 'بستن',\n\t\tprevText: '&#x3C;قبلی',\n\t\tnextText: 'بعدی&#x3E;',\n\t\tcurrentText: 'امروز',\n\t\tmonthNames: [\n\t\t\t'فروردين',\n\t\t\t'ارديبهشت',\n\t\t\t'خرداد',\n\t\t\t'تير',\n\t\t\t'مرداد',\n\t\t\t'شهريور',\n\t\t\t'مهر',\n\t\t\t'آبان',\n\t\t\t'آذر',\n\t\t\t'دی',\n\t\t\t'بهمن',\n\t\t\t'اسفند'\n\t\t],\n\t\tmonthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],\n\t\tdayNames: [\n\t\t\t'يکشنبه',\n\t\t\t'دوشنبه',\n\t\t\t'سه‌شنبه',\n\t\t\t'چهارشنبه',\n\t\t\t'پنجشنبه',\n\t\t\t'جمعه',\n\t\t\t'شنبه'\n\t\t],\n\t\tdayNamesShort: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tdayNamesMin: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tweekHeader: 'هف',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 6,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fa']);\n});\n\n/* Finnish initialisation for the jQuery UI date picker plugin. */\n/* Written by Harri Kilpiö (harrikilpio@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['fi'] = {\n\t\tcloseText: 'Sulje',\n\t\tprevText: '&#xAB;Edellinen',\n\t\tnextText: 'Seuraava&#xBB;',\n\t\tcurrentText: 'Tänään',\n\t\tmonthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',\n\t\t'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],\n\t\tmonthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',\n\t\t'Heinä','Elo','Syys','Loka','Marras','Joulu'],\n\t\tdayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tdayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],\n\t\tdayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fi']);\n});\n\n/* Faroese initialisation for the jQuery UI date picker plugin */\n/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */\njQuery(function($){\n\t$.datepicker.regional['fo'] = {\n\t\tcloseText: 'Lat aftur',\n\t\tprevText: '&#x3C;Fyrra',\n\t\tnextText: 'Næsta&#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',\n\t\t'Juli','August','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Des'],\n\t\tdayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],\n\t\tdayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fo']);\n});\n\n/* Swiss-French initialisation for the jQuery UI date picker plugin. */\n/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */\njQuery(function($){\n\t$.datepicker.regional['fr-CH'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: '&#x3C;Préc',\n\t\tnextText: 'Suiv&#x3E;',\n\t\tcurrentText: 'Courant',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',\n\t\t'Jul','Aoû','Sep','Oct','Nov','Déc'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr-CH']);\n});\n\n/* French initialisation for the jQuery UI date picker plugin. */\n/* Written by Keith Wood (kbwood{at}iinet.com.au),\n\t\t\t  Stéphane Nahmani (sholby@sholby.net),\n\t\t\t  Stéphane Raimbault <stephane.raimbault@gmail.com> */\njQuery(function($){\n\t$.datepicker.regional['fr'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: 'Précédent',\n\t\tnextText: 'Suivant',\n\t\tcurrentText: 'Aujourd\\'hui',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',\n\t\t'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],\n\t\tdayNamesMin: ['D','L','M','M','J','V','S'],\n\t\tweekHeader: 'Sem.',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr']);\n});\n\n/* Galician localization for 'UI date picker' jQuery extension. */\n/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */\njQuery(function($){\n\t$.datepicker.regional['gl'] = {\n\t\tcloseText: 'Pechar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Seg&#x3E;',\n\t\tcurrentText: 'Hoxe',\n\t\tmonthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',\n\t\t'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',\n\t\t'Xul','Ago','Set','Out','Nov','Dec'],\n\t\tdayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['gl']);\n});\n\n/* Hebrew initialisation for the UI Datepicker extension. */\n/* Written by Amir Hardon (ahardon at gmail dot com). */\njQuery(function($){\n\t$.datepicker.regional['he'] = {\n\t\tcloseText: 'סגור',\n\t\tprevText: '&#x3C;הקודם',\n\t\tnextText: 'הבא&#x3E;',\n\t\tcurrentText: 'היום',\n\t\tmonthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',\n\t\t'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],\n\t\tmonthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',\n\t\t'יולי','אוג','ספט','אוק','נוב','דצמ'],\n\t\tdayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],\n\t\tdayNamesShort: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tdayNamesMin: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['he']);\n});\n\n/* Hindi initialisation for the jQuery UI date picker plugin. */\n/* Written by Michael Dawart. */\njQuery(function($){\n\t$.datepicker.regional['hi'] = {\n\t\tcloseText: 'बंद',\n\t\tprevText: 'पिछला',\n\t\tnextText: 'अगला',\n\t\tcurrentText: 'आज',\n\t\tmonthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',\n\t\t'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],\n\t\tmonthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',\n\t\t'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],\n\t\tdayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],\n\t\tdayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tdayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tweekHeader: 'हफ्ता',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hi']);\n});\n\n/* Croatian i18n for the jQuery UI date picker plugin. */\n/* Written by Vjekoslav Nesek. */\njQuery(function($){\n\t$.datepicker.regional['hr'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',\n\t\t'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],\n\t\tmonthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',\n\t\t'Srp','Kol','Ruj','Lis','Stu','Pro'],\n\t\tdayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Tje',\n\t\tdateFormat: 'dd.mm.yy.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hr']);\n});\n\n/* Hungarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */\njQuery(function($){\n\t$.datepicker.regional['hu'] = {\n\t\tcloseText: 'bezár',\n\t\tprevText: 'vissza',\n\t\tnextText: 'előre',\n\t\tcurrentText: 'ma',\n\t\tmonthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',\n\t\t'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',\n\t\t'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],\n\t\tdayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],\n\t\tdayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],\n\t\tdayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n\t\tweekHeader: 'Hét',\n\t\tdateFormat: 'yy.mm.dd.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hu']);\n});\n\n/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/\njQuery(function($){\n\t$.datepicker.regional['hy'] = {\n\t\tcloseText: 'Փակել',\n\t\tprevText: '&#x3C;Նախ.',\n\t\tnextText: 'Հաջ.&#x3E;',\n\t\tcurrentText: 'Այսօր',\n\t\tmonthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',\n\t\t'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],\n\t\tmonthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',\n\t\t'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],\n\t\tdayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],\n\t\tdayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tdayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tweekHeader: 'ՇԲՏ',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hy']);\n});\n\n/* Indonesian initialisation for the jQuery UI date picker plugin. */\n/* Written by Deden Fathurahman (dedenf@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['id'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;mundur',\n\t\tnextText: 'maju&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Maret','April','Mei','Juni',\n\t\t'Juli','Agustus','September','Oktober','Nopember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Agus','Sep','Okt','Nop','Des'],\n\t\tdayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],\n\t\tdayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],\n\t\tdayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['id']);\n});\n\n/* Icelandic initialisation for the jQuery UI date picker plugin. */\n/* Written by Haukur H. Thorsson (haukur@eskill.is). */\njQuery(function($){\n\t$.datepicker.regional['is'] = {\n\t\tcloseText: 'Loka',\n\t\tprevText: '&#x3C; Fyrri',\n\t\tnextText: 'Næsti &#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',\n\t\t'Júlí','Ágúst','September','Október','Nóvember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',\n\t\t'Júl','Ágú','Sep','Okt','Nóv','Des'],\n\t\tdayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],\n\t\tdayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],\n\t\tweekHeader: 'Vika',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['is']);\n});\n\n/* Italian initialisation for the jQuery UI date picker plugin. */\n/* Written by Antonello Pasella (antonello.pasella@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['it'] = {\n\t\tcloseText: 'Chiudi',\n\t\tprevText: '&#x3C;Prec',\n\t\tnextText: 'Succ&#x3E;',\n\t\tcurrentText: 'Oggi',\n\t\tmonthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',\n\t\t\t'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],\n\t\tmonthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',\n\t\t\t'Lug','Ago','Set','Ott','Nov','Dic'],\n\t\tdayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['it']);\n});\n\n/* Japanese initialisation for the jQuery UI date picker plugin. */\n/* Written by Kentaro SATO (kentaro@ranvis.com). */\njQuery(function($){\n\t$.datepicker.regional['ja'] = {\n\t\tcloseText: '閉じる',\n\t\tprevText: '&#x3C;前',\n\t\tnextText: '次&#x3E;',\n\t\tcurrentText: '今日',\n\t\tmonthNames: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tmonthNamesShort: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tdayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],\n\t\tdayNamesShort: ['日','月','火','水','木','金','土'],\n\t\tdayNamesMin: ['日','月','火','水','木','金','土'],\n\t\tweekHeader: '週',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['ja']);\n});\n\n/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Lado Lomidze (lado.lomidze@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ka'] = {\n\t\tcloseText: 'დახურვა',\n\t\tprevText: '&#x3c; წინა',\n\t\tnextText: 'შემდეგი &#x3e;',\n\t\tcurrentText: 'დღეს',\n\t\tmonthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],\n\t\tmonthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],\n\t\tdayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],\n\t\tdayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tdayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tweekHeader: 'კვირა',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ka']);\n});\n\n/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['kk'] = {\n\t\tcloseText: 'Жабу',\n\t\tprevText: '&#x3C;Алдыңғы',\n\t\tnextText: 'Келесі&#x3E;',\n\t\tcurrentText: 'Бүгін',\n\t\tmonthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',\n\t\t'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],\n\t\tmonthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',\n\t\t'Шіл','Там','Қыр','Қаз','Қар','Жел'],\n\t\tdayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],\n\t\tdayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],\n\t\tdayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['kk']);\n});\n\n/* Khmer initialisation for the jQuery calendar extension. */\n/* Written by Chandara Om (chandara.teacher@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['km'] = {\n\t\tcloseText: 'ធ្វើ​រួច',\n\t\tprevText: 'មុន',\n\t\tnextText: 'បន្ទាប់',\n\t\tcurrentText: 'ថ្ងៃ​នេះ',\n\t\tmonthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tmonthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tdayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],\n\t\tdayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tdayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tweekHeader: 'សប្ដាហ៍',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['km']);\n});\n\n/* Korean initialisation for the jQuery calendar extension. */\n/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */\njQuery(function($){\n\t$.datepicker.regional['ko'] = {\n\t\tcloseText: '닫기',\n\t\tprevText: '이전달',\n\t\tnextText: '다음달',\n\t\tcurrentText: '오늘',\n\t\tmonthNames: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tmonthNamesShort: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tdayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],\n\t\tdayNamesShort: ['일','월','화','수','목','금','토'],\n\t\tdayNamesMin: ['일','월','화','수','목','금','토'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '년'};\n\t$.datepicker.setDefaults($.datepicker.regional['ko']);\n});\n\n/* Luxembourgish initialisation for the jQuery UI date picker plugin. */\n/* Written by Michel Weimerskirch <michel@weimerskirch.net> */\njQuery(function($){\n\t$.datepicker.regional['lb'] = {\n\t\tcloseText: 'Fäerdeg',\n\t\tprevText: 'Zréck',\n\t\tnextText: 'Weider',\n\t\tcurrentText: 'Haut',\n\t\tmonthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n\t\tdayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],\n\t\tdayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],\n\t\tdayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],\n\t\tweekHeader: 'W',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lb']);\n});\n\n/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas@avalon.lt> */\njQuery(function($){\n\t$.datepicker.regional['lt'] = {\n\t\tcloseText: 'Uždaryti',\n\t\tprevText: '&#x3C;Atgal',\n\t\tnextText: 'Pirmyn&#x3E;',\n\t\tcurrentText: 'Šiandien',\n\t\tmonthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',\n\t\t'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],\n\t\tmonthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',\n\t\t'Lie','Rugp','Rugs','Spa','Lap','Gru'],\n\t\tdayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],\n\t\tdayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],\n\t\tdayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lt']);\n});\n\n/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */\njQuery(function($){\n\t$.datepicker.regional['lv'] = {\n\t\tcloseText: 'Aizvērt',\n\t\tprevText: 'Iepr',\n\t\tnextText: 'Nāka',\n\t\tcurrentText: 'Šodien',\n\t\tmonthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',\n\t\t'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',\n\t\t'Jūl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],\n\t\tdayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],\n\t\tdayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],\n\t\tweekHeader: 'Nav',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lv']);\n});\n\n/* Macedonian i18n for the jQuery UI date picker plugin. */\n/* Written by Stojce Slavkovski. */\njQuery(function($){\n\t$.datepicker.regional['mk'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Денес',\n\t\tmonthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',\n\t\t'Јули','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Ное','Дек'],\n\t\tdayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['mk']);\n});\n\n/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Saji Nediyanchath (saji89@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ml'] = {\n\t\tcloseText: 'ശരി',\n\t\tprevText: 'മുന്നത്തെ',\n\t\tnextText: 'അടുത്തത് ',\n\t\tcurrentText: 'ഇന്ന്',\n\t\tmonthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',\n\t\t'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],\n\t\tmonthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',\n\t\t'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],\n\t\tdayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],\n\t\tweekHeader: 'ആ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ml']);\n});\n\n/* Malaysian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */\njQuery(function($){\n\t$.datepicker.regional['ms'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;Sebelum',\n\t\tnextText: 'Selepas&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Mac','April','Mei','Jun',\n\t\t'Julai','Ogos','September','Oktober','November','Disember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',\n\t\t'Jul','Ogo','Sep','Okt','Nov','Dis'],\n\t\tdayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],\n\t\tdayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],\n\t\tdayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ms']);\n});\n\n/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */\n/* David De Sloovere @DavidDeSloovere */\njQuery(function($){\n\t$.datepicker.regional['nl-BE'] = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['nl-BE']);\n});\n\n/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Mathias Bynens <http://mathiasbynens.be/> */\njQuery(function($){\n\t$.datepicker.regional.nl = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional.nl);\n});\n\n/* Norwegian initialisation for the jQuery UI date picker plugin. */\n/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */\n\njQuery(function($){\n\t$.datepicker.regional['no'] = {\n\t\tcloseText: 'Lukk',\n\t\tprevText: '&#xAB;Forrige',\n\t\tnextText: 'Neste&#xBB;',\n\t\tcurrentText: 'I dag',\n\t\tmonthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],\n\t\tmonthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],\n\t\tdayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],\n\t\tdayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],\n\t\tdayNamesMin: ['sø','ma','ti','on','to','fr','lø'],\n\t\tweekHeader: 'Uke',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''\n\t};\n\t$.datepicker.setDefaults($.datepicker.regional['no']);\n});\n\n/* Polish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pl'] = {\n\t\tcloseText: 'Zamknij',\n\t\tprevText: '&#x3C;Poprzedni',\n\t\tnextText: 'Następny&#x3E;',\n\t\tcurrentText: 'Dziś',\n\t\tmonthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',\n\t\t'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],\n\t\tmonthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',\n\t\t'Lip','Sie','Wrz','Pa','Lis','Gru'],\n\t\tdayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],\n\t\tdayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],\n\t\tdayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],\n\t\tweekHeader: 'Tydz',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pl']);\n});\n\n/* Brazilian initialisation for the jQuery UI date picker plugin. */\n/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pt-BR'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Próximo&#x3E;',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt-BR']);\n});\n\n/* Portuguese initialisation for the jQuery UI date picker plugin. */\njQuery(function($){\n\t$.datepicker.regional['pt'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Seguinte',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sem',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt']);\n});\n\n/* Romansh initialisation for the jQuery UI date picker plugin. */\n/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */\njQuery(function($){\n\t$.datepicker.regional['rm'] = {\n\t\tcloseText: 'Serrar',\n\t\tprevText: '&#x3C;Suandant',\n\t\tnextText: 'Precedent&#x3E;',\n\t\tcurrentText: 'Actual',\n\t\tmonthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],\n\t\tmonthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],\n\t\tdayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],\n\t\tdayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],\n\t\tdayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],\n\t\tweekHeader: 'emna',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['rm']);\n});\n\n/* Romanian initialisation for the jQuery UI date picker plugin.\n *\n * Written by Edmond L. (ll_edmond@walla.com)\n * and Ionut G. Stan (ionut.g.stan@gmail.com)\n */\njQuery(function($){\n\t$.datepicker.regional['ro'] = {\n\t\tcloseText: 'Închide',\n\t\tprevText: '&#xAB; Luna precedentă',\n\t\tnextText: 'Luna următoare &#xBB;',\n\t\tcurrentText: 'Azi',\n\t\tmonthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',\n\t\t'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],\n\t\tmonthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',\n\t\t'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],\n\t\tdayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],\n\t\tdayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],\n\t\tweekHeader: 'Săpt',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ro']);\n});\n\n/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Andrew Stromnov (stromnov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ru'] = {\n\t\tcloseText: 'Закрыть',\n\t\tprevText: '&#x3C;Пред',\n\t\tnextText: 'След&#x3E;',\n\t\tcurrentText: 'Сегодня',\n\t\tmonthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',\n\t\t'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],\n\t\tdayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Нед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ru']);\n});\n\n/* Slovak initialisation for the jQuery UI date picker plugin. */\n/* Written by Vojtech Rinik (vojto@hmm.sk). */\njQuery(function($){\n\t$.datepicker.regional['sk'] = {\n\t\tcloseText: 'Zavrieť',\n\t\tprevText: '&#x3C;Predchádzajúci',\n\t\tnextText: 'Nasledujúci&#x3E;',\n\t\tcurrentText: 'Dnes',\n\t\tmonthNames: ['Január','Február','Marec','Apríl','Máj','Jún',\n\t\t'Júl','August','September','Október','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',\n\t\t'Júl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],\n\t\tdayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],\n\t\tweekHeader: 'Ty',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sk']);\n});\n\n/* Slovenian initialisation for the jQuery UI date picker plugin. */\n/* Written by Jaka Jancar (jaka@kubje.org). */\n/* c = č, s = š z = ž C = Č S = Š Z = Ž */\njQuery(function($){\n\t$.datepicker.regional['sl'] = {\n\t\tcloseText: 'Zapri',\n\t\tprevText: '&#x3C;Prejšnji',\n\t\tnextText: 'Naslednji&#x3E;',\n\t\tcurrentText: 'Trenutni',\n\t\tmonthNames: ['Januar','Februar','Marec','April','Maj','Junij',\n\t\t'Julij','Avgust','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],\n\t\tdayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],\n\t\tweekHeader: 'Teden',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sl']);\n});\n\n/* Albanian initialisation for the jQuery UI date picker plugin. */\n/* Written by Flakron Bytyqi (flakron@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['sq'] = {\n\t\tcloseText: 'mbylle',\n\t\tprevText: '&#x3C;mbrapa',\n\t\tnextText: 'Përpara&#x3E;',\n\t\tcurrentText: 'sot',\n\t\tmonthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',\n\t\t'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],\n\t\tmonthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',\n\t\t'Kor','Gus','Sht','Tet','Nën','Dhj'],\n\t\tdayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],\n\t\tdayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tdayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tweekHeader: 'Ja',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sq']);\n});\n\n/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr-SR'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Jun',\n\t\t'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Sed',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr-SR']);\n});\n\n/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Данас',\n\t\tmonthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',\n\t\t'Јул','Август','Септембар','Октобар','Новембар','Децембар'],\n\t\tmonthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Нов','Дец'],\n\t\tdayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],\n\t\tdayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],\n\t\tdayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr']);\n});\n\n/* Swedish initialisation for the jQuery UI date picker plugin. */\n/* Written by Anders Ekdahl ( anders@nomadiz.se). */\njQuery(function($){\n\t$.datepicker.regional['sv'] = {\n\t\tcloseText: 'Stäng',\n\t\tprevText: '&#xAB;Förra',\n\t\tnextText: 'Nästa&#xBB;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januari','Februari','Mars','April','Maj','Juni',\n\t\t'Juli','Augusti','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],\n\t\tdayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],\n\t\tdayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],\n\t\tweekHeader: 'Ve',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sv']);\n});\n\n/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by S A Sureshkumar (saskumar@live.com). */\njQuery(function($){\n\t$.datepicker.regional['ta'] = {\n\t\tcloseText: 'மூடு',\n\t\tprevText: 'முன்னையது',\n\t\tnextText: 'அடுத்தது',\n\t\tcurrentText: 'இன்று',\n\t\tmonthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',\n\t\t'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],\n\t\tmonthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',\n\t\t'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],\n\t\tdayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],\n\t\tdayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],\n\t\tdayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ta']);\n});\n\n/* Thai initialisation for the jQuery UI date picker plugin. */\n/* Written by pipo (pipo@sixhead.com). */\njQuery(function($){\n\t$.datepicker.regional['th'] = {\n\t\tcloseText: 'ปิด',\n\t\tprevText: '&#xAB;&#xA0;ย้อน',\n\t\tnextText: 'ถัดไป&#xA0;&#xBB;',\n\t\tcurrentText: 'วันนี้',\n\t\tmonthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',\n\t\t'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],\n\t\tmonthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',\n\t\t'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],\n\t\tdayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],\n\t\tdayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tdayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['th']);\n});\n\n/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Abdurahmon Saidov (saidovab@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['tj'] = {\n\t\tcloseText: 'Идома',\n\t\tprevText: '&#x3c;Қафо',\n\t\tnextText: 'Пеш&#x3e;',\n\t\tcurrentText: 'Имрӯз',\n\t\tmonthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',\n\t\t'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],\n\t\tdayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],\n\t\tdayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],\n\t\tweekHeader: 'Хф',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tj']);\n});\n\n/* Turkish initialisation for the jQuery UI date picker plugin. */\n/* Written by Izzet Emre Erkan (kara@karalamalar.net). */\njQuery(function($){\n\t$.datepicker.regional['tr'] = {\n\t\tcloseText: 'kapat',\n\t\tprevText: '&#x3C;geri',\n\t\tnextText: 'ileri&#x3e',\n\t\tcurrentText: 'bugün',\n\t\tmonthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',\n\t\t'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],\n\t\tmonthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',\n\t\t'Tem','Ağu','Eyl','Eki','Kas','Ara'],\n\t\tdayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],\n\t\tdayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tdayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tr']);\n});\n\n/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */\n/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['uk'] = {\n\t\tcloseText: 'Закрити',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Сьогодні',\n\t\tmonthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',\n\t\t'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],\n\t\tmonthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',\n\t\t'Лип','Сер','Вер','Жов','Лис','Гру'],\n\t\tdayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],\n\t\tdayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Тиж',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['uk']);\n});\n\n/* Vietnamese initialisation for the jQuery UI date picker plugin. */\n/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */\njQuery(function($){\n\t$.datepicker.regional['vi'] = {\n\t\tcloseText: 'Đóng',\n\t\tprevText: '&#x3C;Trước',\n\t\tnextText: 'Tiếp&#x3E;',\n\t\tcurrentText: 'Hôm nay',\n\t\tmonthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',\n\t\t'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],\n\t\tmonthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',\n\t\t'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n\t\tdayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n\t\tdayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tdayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tweekHeader: 'Tu',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['vi']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Cloudream (cloudream@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-CN'] = {\n\t\tcloseText: '关闭',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-CN']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by SCCY (samuelcychan@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-HK'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-HK']);\n});\n\n/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Ressol (ressol@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-TW'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-TW']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-af.js",
    "content": "/* Afrikaans initialisation for the jQuery UI date picker plugin. */\n/* Written by Renier Pretorius. */\njQuery(function($){\n\t$.datepicker.regional['af'] = {\n\t\tcloseText: 'Selekteer',\n\t\tprevText: 'Vorige',\n\t\tnextText: 'Volgende',\n\t\tcurrentText: 'Vandag',\n\t\tmonthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',\n\t\t'Julie','Augustus','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],\n\t\tdayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],\n\t\tdayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],\n\t\tdayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['af']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar-DZ.js",
    "content": "/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/\n/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */\n\njQuery(function($){\n\t$.datepicker.regional['ar-DZ'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',\n\t\t'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js",
    "content": "/* Arabic Translation for jQuery UI date picker plugin. */\n/* Khaled Alhourani -- me@khaledalhourani.com */\n/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */\njQuery(function($){\n\t$.datepicker.regional['ar'] = {\n\t\tcloseText: 'إغلاق',\n\t\tprevText: '&#x3C;السابق',\n\t\tnextText: 'التالي&#x3E;',\n\t\tcurrentText: 'اليوم',\n\t\tmonthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',\n\t\t'تموز', 'آب', 'أيلول',\t'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],\n\t\tmonthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n\t\tdayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n\t\tdayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],\n\t\tweekHeader: 'أسبوع',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 6,\n  \t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ar']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-az.js",
    "content": "/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Jamil Najafov (necefov33@gmail.com). */\njQuery(function($) {\n\t$.datepicker.regional['az'] = {\n\t\tcloseText: 'Bağla',\n\t\tprevText: '&#x3C;Geri',\n\t\tnextText: 'İrəli&#x3E;',\n\t\tcurrentText: 'Bugün',\n\t\tmonthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',\n\t\t'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],\n\t\tmonthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',\n\t\t'İyul','Avq','Sen','Okt','Noy','Dek'],\n\t\tdayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],\n\t\tdayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],\n\t\tdayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['az']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js",
    "content": "/* Bulgarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Stoyan Kyosev (http://svest.org). */\njQuery(function($){\n\t$.datepicker.regional['bg'] = {\n\t\tcloseText: 'затвори',\n\t\tprevText: '&#x3C;назад',\n\t\tnextText: 'напред&#x3E;',\n\t\tnextBigText: '&#x3E;&#x3E;',\n\t\tcurrentText: 'днес',\n\t\tmonthNames: ['Януари','Февруари','Март','Април','Май','Юни',\n\t\t'Юли','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',\n\t\t'Юли','Авг','Сеп','Окт','Нов','Дек'],\n\t\tdayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bg']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js",
    "content": "/* Bosnian i18n for the jQuery UI date picker plugin. */\n/* Written by Kenan Konjo. */\njQuery(function($){\n\t$.datepicker.regional['bs'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Juni',\n\t\t'Juli','August','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['bs']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js",
    "content": "/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */\n/* Writers: (joan.leon@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ca'] = {\n\t\tcloseText: 'Tanca',\n\t\tprevText: 'Anterior',\n\t\tnextText: 'Següent',\n\t\tcurrentText: 'Avui',\n\t\tmonthNames: ['gener','febrer','març','abril','maig','juny',\n\t\t'juliol','agost','setembre','octubre','novembre','desembre'],\n\t\tmonthNamesShort: ['gen','feb','març','abr','maig','juny',\n\t\t'jul','ag','set','oct','nov','des'],\n\t\tdayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'],\n\t\tdayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tdayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'],\n\t\tweekHeader: 'Set',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ca']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js",
    "content": "/* Czech initialisation for the jQuery UI date picker plugin. */\n/* Written by Tomas Muller (tomas@tomas-muller.net). */\njQuery(function($){\n\t$.datepicker.regional['cs'] = {\n\t\tcloseText: 'Zavřít',\n\t\tprevText: '&#x3C;Dříve',\n\t\tnextText: 'Později&#x3E;',\n\t\tcurrentText: 'Nyní',\n\t\tmonthNames: ['leden','únor','březen','duben','květen','červen',\n\t\t'červenec','srpen','září','říjen','listopad','prosinec'],\n\t\tmonthNamesShort: ['led','úno','bře','dub','kvě','čer',\n\t\t'čvc','srp','zář','říj','lis','pro'],\n\t\tdayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],\n\t\tdayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n\t\tdayNamesMin: ['ne','po','út','st','čt','pá','so'],\n\t\tweekHeader: 'Týd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cs']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-cy-GB.js",
    "content": "/* Welsh/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by William Griffiths. */\njQuery(function($){\n\t$.datepicker.regional['cy-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',\n\t\t'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],\n\t\tmonthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',\n\t\t'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],\n\t\tdayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],\n\t\tdayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],\n\t\tdayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],\n\t\tweekHeader: 'Wy',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['cy-GB']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-da.js",
    "content": "/* Danish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jan Christensen ( deletestuff@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['da'] = {\n\t\tcloseText: 'Luk',\n\t\tprevText: '&#x3C;Forrige',\n\t\tnextText: 'Næste&#x3E;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januar','Februar','Marts','April','Maj','Juni',\n\t\t'Juli','August','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],\n\t\tdayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],\n\t\tdayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],\n\t\tweekHeader: 'Uge',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['da']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-de.js",
    "content": "/* German initialisation for the jQuery UI date picker plugin. */\n/* Written by Milian Wolff (mail@milianw.de). */\njQuery(function($){\n\t$.datepicker.regional['de'] = {\n\t\tcloseText: 'schließen',\n\t\tprevText: '&#x3C;zurück',\n\t\tnextText: 'Vor&#x3E;',\n\t\tcurrentText: 'heute',\n\t\tmonthNames: ['Januar','Februar','März','April','Mai','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dez'],\n\t\tdayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],\n\t\tdayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tdayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],\n\t\tweekHeader: 'KW',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['de']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-el.js",
    "content": "/* Greek (el) initialisation for the jQuery UI date picker plugin. */\n/* Written by Alex Cicovic (http://www.alexcicovic.com) */\njQuery(function($){\n\t$.datepicker.regional['el'] = {\n\t\tcloseText: 'Κλείσιμο',\n\t\tprevText: 'Προηγούμενος',\n\t\tnextText: 'Επόμενος',\n\t\tcurrentText: 'Τρέχων Μήνας',\n\t\tmonthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',\n\t\t'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],\n\t\tmonthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',\n\t\t'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],\n\t\tdayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],\n\t\tdayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],\n\t\tdayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],\n\t\tweekHeader: 'Εβδ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['el']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-AU.js",
    "content": "/* English/Australia initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-AU'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-AU']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js",
    "content": "/* English/UK initialisation for the jQuery UI date picker plugin. */\n/* Written by Stuart. */\njQuery(function($){\n\t$.datepicker.regional['en-GB'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-GB']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-en-NZ.js",
    "content": "/* English/New Zealand initialisation for the jQuery UI date picker plugin. */\n/* Based on the en-GB initialisation. */\njQuery(function($){\n\t$.datepicker.regional['en-NZ'] = {\n\t\tcloseText: 'Done',\n\t\tprevText: 'Prev',\n\t\tnextText: 'Next',\n\t\tcurrentText: 'Today',\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t'July','August','September','October','November','December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['en-NZ']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js",
    "content": "/* Esperanto initialisation for the jQuery UI date picker plugin. */\n/* Written by Olivier M. (olivierweb@ifrance.com). */\njQuery(function($){\n\t$.datepicker.regional['eo'] = {\n\t\tcloseText: 'Fermi',\n\t\tprevText: '&#x3C;Anta',\n\t\tnextText: 'Sekv&#x3E;',\n\t\tcurrentText: 'Nuna',\n\t\tmonthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',\n\t\t'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aŭg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],\n\t\tweekHeader: 'Sb',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eo']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-es.js",
    "content": "/* Inicialización en español para la extensión 'UI date picker' para jQuery. */\n/* Traducido por Vester (xvester@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['es'] = {\n\t\tcloseText: 'Cerrar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Sig&#x3E;',\n\t\tcurrentText: 'Hoy',\n\t\tmonthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',\n\t\t'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],\n\t\tmonthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',\n\t\t'Jul','Ago','Sep','Oct','Nov','Dic'],\n\t\tdayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['es']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-et.js",
    "content": "/* Estonian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */\njQuery(function($){\n\t$.datepicker.regional['et'] = {\n\t\tcloseText: 'Sulge',\n\t\tprevText: 'Eelnev',\n\t\tnextText: 'Järgnev',\n\t\tcurrentText: 'Täna',\n\t\tmonthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',\n\t\t'Juuli','August','September','Oktoober','November','Detsember'],\n\t\tmonthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',\n\t\t'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],\n\t\tdayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],\n\t\tdayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],\n\t\tdayNamesMin: ['P','E','T','K','N','R','L'],\n\t\tweekHeader: 'näd',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['et']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js",
    "content": "/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */\n/* Karrikas-ek itzulia (karrikas@karrikas.com) */\njQuery(function($){\n\t$.datepicker.regional['eu'] = {\n\t\tcloseText: 'Egina',\n\t\tprevText: '&#x3C;Aur',\n\t\tnextText: 'Hur&#x3E;',\n\t\tcurrentText: 'Gaur',\n\t\tmonthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',\n\t\t\t'uztaila','abuztua','iraila','urria','azaroa','abendua'],\n\t\tmonthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',\n\t\t\t'uzt.','abu.','ira.','urr.','aza.','abe.'],\n\t\tdayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],\n\t\tdayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],\n\t\tdayNamesMin: ['ig','al','ar','az','og','ol','lr'],\n\t\tweekHeader: 'As',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['eu']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js",
    "content": "/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */\n/* Javad Mowlanezhad -- jmowla@gmail.com */\n/* Jalali calendar should supported soon! (Its implemented but I have to test it) */\njQuery(function($) {\n\t$.datepicker.regional['fa'] = {\n\t\tcloseText: 'بستن',\n\t\tprevText: '&#x3C;قبلی',\n\t\tnextText: 'بعدی&#x3E;',\n\t\tcurrentText: 'امروز',\n\t\tmonthNames: [\n\t\t\t'فروردين',\n\t\t\t'ارديبهشت',\n\t\t\t'خرداد',\n\t\t\t'تير',\n\t\t\t'مرداد',\n\t\t\t'شهريور',\n\t\t\t'مهر',\n\t\t\t'آبان',\n\t\t\t'آذر',\n\t\t\t'دی',\n\t\t\t'بهمن',\n\t\t\t'اسفند'\n\t\t],\n\t\tmonthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],\n\t\tdayNames: [\n\t\t\t'يکشنبه',\n\t\t\t'دوشنبه',\n\t\t\t'سه‌شنبه',\n\t\t\t'چهارشنبه',\n\t\t\t'پنجشنبه',\n\t\t\t'جمعه',\n\t\t\t'شنبه'\n\t\t],\n\t\tdayNamesShort: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tdayNamesMin: [\n\t\t\t'ی',\n\t\t\t'د',\n\t\t\t'س',\n\t\t\t'چ',\n\t\t\t'پ',\n\t\t\t'ج',\n\t\t\t'ش'\n\t\t],\n\t\tweekHeader: 'هف',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 6,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fa']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js",
    "content": "/* Finnish initialisation for the jQuery UI date picker plugin. */\n/* Written by Harri Kilpiö (harrikilpio@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['fi'] = {\n\t\tcloseText: 'Sulje',\n\t\tprevText: '&#xAB;Edellinen',\n\t\tnextText: 'Seuraava&#xBB;',\n\t\tcurrentText: 'Tänään',\n\t\tmonthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu',\n\t\t'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],\n\t\tmonthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä',\n\t\t'Heinä','Elo','Syys','Loka','Marras','Joulu'],\n\t\tdayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tdayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],\n\t\tdayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fi']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js",
    "content": "/* Faroese initialisation for the jQuery UI date picker plugin */\n/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */\njQuery(function($){\n\t$.datepicker.regional['fo'] = {\n\t\tcloseText: 'Lat aftur',\n\t\tprevText: '&#x3C;Fyrra',\n\t\tnextText: 'Næsta&#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',\n\t\t'Juli','August','September','Oktober','November','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Des'],\n\t\tdayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],\n\t\tdayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],\n\t\tweekHeader: 'Vk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fo']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js",
    "content": "/* Swiss-French initialisation for the jQuery UI date picker plugin. */\n/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */\njQuery(function($){\n\t$.datepicker.regional['fr-CH'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: '&#x3C;Préc',\n\t\tnextText: 'Suiv&#x3E;',\n\t\tcurrentText: 'Courant',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',\n\t\t'Jul','Aoû','Sep','Oct','Nov','Déc'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],\n\t\tdayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr-CH']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js",
    "content": "/* French initialisation for the jQuery UI date picker plugin. */\n/* Written by Keith Wood (kbwood{at}iinet.com.au),\n\t\t\t  Stéphane Nahmani (sholby@sholby.net),\n\t\t\t  Stéphane Raimbault <stephane.raimbault@gmail.com> */\njQuery(function($){\n\t$.datepicker.regional['fr'] = {\n\t\tcloseText: 'Fermer',\n\t\tprevText: 'Précédent',\n\t\tnextText: 'Suivant',\n\t\tcurrentText: 'Aujourd\\'hui',\n\t\tmonthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',\n\t\t'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],\n\t\tmonthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',\n\t\t'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],\n\t\tdayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],\n\t\tdayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],\n\t\tdayNamesMin: ['D','L','M','M','J','V','S'],\n\t\tweekHeader: 'Sem.',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['fr']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-gl.js",
    "content": "/* Galician localization for 'UI date picker' jQuery extension. */\n/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */\njQuery(function($){\n\t$.datepicker.regional['gl'] = {\n\t\tcloseText: 'Pechar',\n\t\tprevText: '&#x3C;Ant',\n\t\tnextText: 'Seg&#x3E;',\n\t\tcurrentText: 'Hoxe',\n\t\tmonthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',\n\t\t'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],\n\t\tmonthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',\n\t\t'Xul','Ago','Set','Out','Nov','Dec'],\n\t\tdayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['gl']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-he.js",
    "content": "/* Hebrew initialisation for the UI Datepicker extension. */\n/* Written by Amir Hardon (ahardon at gmail dot com). */\njQuery(function($){\n\t$.datepicker.regional['he'] = {\n\t\tcloseText: 'סגור',\n\t\tprevText: '&#x3C;הקודם',\n\t\tnextText: 'הבא&#x3E;',\n\t\tcurrentText: 'היום',\n\t\tmonthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',\n\t\t'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],\n\t\tmonthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני',\n\t\t'יולי','אוג','ספט','אוק','נוב','דצמ'],\n\t\tdayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],\n\t\tdayNamesShort: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tdayNamesMin: ['א\\'','ב\\'','ג\\'','ד\\'','ה\\'','ו\\'','שבת'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: true,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['he']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hi.js",
    "content": "/* Hindi initialisation for the jQuery UI date picker plugin. */\n/* Written by Michael Dawart. */\njQuery(function($){\n\t$.datepicker.regional['hi'] = {\n\t\tcloseText: 'बंद',\n\t\tprevText: 'पिछला',\n\t\tnextText: 'अगला',\n\t\tcurrentText: 'आज',\n\t\tmonthNames: ['जनवरी ','फरवरी','मार्च','अप्रेल','मई','जून',\n\t\t'जूलाई','अगस्त ','सितम्बर','अक्टूबर','नवम्बर','दिसम्बर'],\n\t\tmonthNamesShort: ['जन', 'फर', 'मार्च', 'अप्रेल', 'मई', 'जून',\n\t\t'जूलाई', 'अग', 'सित', 'अक्ट', 'नव', 'दि'],\n\t\tdayNames: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],\n\t\tdayNamesShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tdayNamesMin: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],\n\t\tweekHeader: 'हफ्ता',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hi']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js",
    "content": "/* Croatian i18n for the jQuery UI date picker plugin. */\n/* Written by Vjekoslav Nesek. */\njQuery(function($){\n\t$.datepicker.regional['hr'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',\n\t\t'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],\n\t\tmonthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',\n\t\t'Srp','Kol','Ruj','Lis','Stu','Pro'],\n\t\tdayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Tje',\n\t\tdateFormat: 'dd.mm.yy.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hr']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js",
    "content": "/* Hungarian initialisation for the jQuery UI date picker plugin. */\n/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */\njQuery(function($){\n\t$.datepicker.regional['hu'] = {\n\t\tcloseText: 'bezár',\n\t\tprevText: 'vissza',\n\t\tnextText: 'előre',\n\t\tcurrentText: 'ma',\n\t\tmonthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',\n\t\t'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',\n\t\t'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],\n\t\tdayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],\n\t\tdayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],\n\t\tdayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n\t\tweekHeader: 'Hét',\n\t\tdateFormat: 'yy.mm.dd.',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hu']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js",
    "content": "/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/\njQuery(function($){\n\t$.datepicker.regional['hy'] = {\n\t\tcloseText: 'Փակել',\n\t\tprevText: '&#x3C;Նախ.',\n\t\tnextText: 'Հաջ.&#x3E;',\n\t\tcurrentText: 'Այսօր',\n\t\tmonthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',\n\t\t'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],\n\t\tmonthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',\n\t\t'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],\n\t\tdayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],\n\t\tdayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tdayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],\n\t\tweekHeader: 'ՇԲՏ',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['hy']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-id.js",
    "content": "/* Indonesian initialisation for the jQuery UI date picker plugin. */\n/* Written by Deden Fathurahman (dedenf@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['id'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;mundur',\n\t\tnextText: 'maju&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Maret','April','Mei','Juni',\n\t\t'Juli','Agustus','September','Oktober','Nopember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',\n\t\t'Jul','Agus','Sep','Okt','Nop','Des'],\n\t\tdayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],\n\t\tdayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],\n\t\tdayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['id']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-is.js",
    "content": "/* Icelandic initialisation for the jQuery UI date picker plugin. */\n/* Written by Haukur H. Thorsson (haukur@eskill.is). */\njQuery(function($){\n\t$.datepicker.regional['is'] = {\n\t\tcloseText: 'Loka',\n\t\tprevText: '&#x3C; Fyrri',\n\t\tnextText: 'Næsti &#x3E;',\n\t\tcurrentText: 'Í dag',\n\t\tmonthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní',\n\t\t'Júlí','Ágúst','September','Október','Nóvember','Desember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',\n\t\t'Júl','Ágú','Sep','Okt','Nóv','Des'],\n\t\tdayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],\n\t\tdayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],\n\t\tdayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],\n\t\tweekHeader: 'Vika',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['is']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-it.js",
    "content": "/* Italian initialisation for the jQuery UI date picker plugin. */\n/* Written by Antonello Pasella (antonello.pasella@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['it'] = {\n\t\tcloseText: 'Chiudi',\n\t\tprevText: '&#x3C;Prec',\n\t\tnextText: 'Succ&#x3E;',\n\t\tcurrentText: 'Oggi',\n\t\tmonthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',\n\t\t\t'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],\n\t\tmonthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',\n\t\t\t'Lug','Ago','Set','Ott','Nov','Dic'],\n\t\tdayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],\n\t\tdayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],\n\t\tdayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['it']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js",
    "content": "/* Japanese initialisation for the jQuery UI date picker plugin. */\n/* Written by Kentaro SATO (kentaro@ranvis.com). */\njQuery(function($){\n\t$.datepicker.regional['ja'] = {\n\t\tcloseText: '閉じる',\n\t\tprevText: '&#x3C;前',\n\t\tnextText: '次&#x3E;',\n\t\tcurrentText: '今日',\n\t\tmonthNames: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tmonthNamesShort: ['1月','2月','3月','4月','5月','6月',\n\t\t'7月','8月','9月','10月','11月','12月'],\n\t\tdayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],\n\t\tdayNamesShort: ['日','月','火','水','木','金','土'],\n\t\tdayNamesMin: ['日','月','火','水','木','金','土'],\n\t\tweekHeader: '週',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['ja']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ka.js",
    "content": "/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Lado Lomidze (lado.lomidze@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ka'] = {\n\t\tcloseText: 'დახურვა',\n\t\tprevText: '&#x3c; წინა',\n\t\tnextText: 'შემდეგი &#x3e;',\n\t\tcurrentText: 'დღეს',\n\t\tmonthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],\n\t\tmonthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],\n\t\tdayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],\n\t\tdayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tdayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],\n\t\tweekHeader: 'კვირა',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ka']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-kk.js",
    "content": "/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['kk'] = {\n\t\tcloseText: 'Жабу',\n\t\tprevText: '&#x3C;Алдыңғы',\n\t\tnextText: 'Келесі&#x3E;',\n\t\tcurrentText: 'Бүгін',\n\t\tmonthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',\n\t\t'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],\n\t\tmonthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',\n\t\t'Шіл','Там','Қыр','Қаз','Қар','Жел'],\n\t\tdayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],\n\t\tdayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],\n\t\tdayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['kk']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-km.js",
    "content": "/* Khmer initialisation for the jQuery calendar extension. */\n/* Written by Chandara Om (chandara.teacher@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['km'] = {\n\t\tcloseText: 'ធ្វើ​រួច',\n\t\tprevText: 'មុន',\n\t\tnextText: 'បន្ទាប់',\n\t\tcurrentText: 'ថ្ងៃ​នេះ',\n\t\tmonthNames: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tmonthNamesShort: ['មករា','កុម្ភៈ','មីនា','មេសា','ឧសភា','មិថុនា',\n\t\t'កក្កដា','សីហា','កញ្ញា','តុលា','វិច្ឆិកា','ធ្នូ'],\n\t\tdayNames: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],\n\t\tdayNamesShort: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tdayNamesMin: ['អា', 'ច', 'អ', 'ពុ', 'ព្រហ', 'សុ', 'សៅ'],\n\t\tweekHeader: 'សប្ដាហ៍',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['km']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js",
    "content": "/* Korean initialisation for the jQuery calendar extension. */\n/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */\njQuery(function($){\n\t$.datepicker.regional['ko'] = {\n\t\tcloseText: '닫기',\n\t\tprevText: '이전달',\n\t\tnextText: '다음달',\n\t\tcurrentText: '오늘',\n\t\tmonthNames: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tmonthNamesShort: ['1월','2월','3월','4월','5월','6월',\n\t\t'7월','8월','9월','10월','11월','12월'],\n\t\tdayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'],\n\t\tdayNamesShort: ['일','월','화','수','목','금','토'],\n\t\tdayNamesMin: ['일','월','화','수','목','금','토'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '년'};\n\t$.datepicker.setDefaults($.datepicker.regional['ko']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lb.js",
    "content": "/* Luxembourgish initialisation for the jQuery UI date picker plugin. */\n/* Written by Michel Weimerskirch <michel@weimerskirch.net> */\njQuery(function($){\n\t$.datepicker.regional['lb'] = {\n\t\tcloseText: 'Fäerdeg',\n\t\tprevText: 'Zréck',\n\t\tnextText: 'Weider',\n\t\tcurrentText: 'Haut',\n\t\tmonthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',\n\t\t'Juli','August','September','Oktober','November','Dezember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',\n\t\t'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n\t\tdayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],\n\t\tdayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],\n\t\tdayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],\n\t\tweekHeader: 'W',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lb']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js",
    "content": "/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas@avalon.lt> */\njQuery(function($){\n\t$.datepicker.regional['lt'] = {\n\t\tcloseText: 'Uždaryti',\n\t\tprevText: '&#x3C;Atgal',\n\t\tnextText: 'Pirmyn&#x3E;',\n\t\tcurrentText: 'Šiandien',\n\t\tmonthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',\n\t\t'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],\n\t\tmonthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',\n\t\t'Lie','Rugp','Rugs','Spa','Lap','Gru'],\n\t\tdayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],\n\t\tdayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],\n\t\tdayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lt']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js",
    "content": "/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */\njQuery(function($){\n\t$.datepicker.regional['lv'] = {\n\t\tcloseText: 'Aizvērt',\n\t\tprevText: 'Iepr',\n\t\tnextText: 'Nāka',\n\t\tcurrentText: 'Šodien',\n\t\tmonthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',\n\t\t'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',\n\t\t'Jūl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],\n\t\tdayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],\n\t\tdayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],\n\t\tweekHeader: 'Nav',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['lv']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-mk.js",
    "content": "/* Macedonian i18n for the jQuery UI date picker plugin. */\n/* Written by Stojce Slavkovski. */\njQuery(function($){\n\t$.datepicker.regional['mk'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Денес',\n\t\tmonthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни',\n\t\t'Јули','Август','Септември','Октомври','Ноември','Декември'],\n\t\tmonthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Ное','Дек'],\n\t\tdayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],\n\t\tdayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],\n\t\tdayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['mk']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ml.js",
    "content": "/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Saji Nediyanchath (saji89@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ml'] = {\n\t\tcloseText: 'ശരി',\n\t\tprevText: 'മുന്നത്തെ',\n\t\tnextText: 'അടുത്തത് ',\n\t\tcurrentText: 'ഇന്ന്',\n\t\tmonthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',\n\t\t'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],\n\t\tmonthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',\n\t\t'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],\n\t\tdayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],\n\t\tdayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],\n\t\tweekHeader: 'ആ',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ml']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js",
    "content": "/* Malaysian initialisation for the jQuery UI date picker plugin. */\n/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */\njQuery(function($){\n\t$.datepicker.regional['ms'] = {\n\t\tcloseText: 'Tutup',\n\t\tprevText: '&#x3C;Sebelum',\n\t\tnextText: 'Selepas&#x3E;',\n\t\tcurrentText: 'hari ini',\n\t\tmonthNames: ['Januari','Februari','Mac','April','Mei','Jun',\n\t\t'Julai','Ogos','September','Oktober','November','Disember'],\n\t\tmonthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',\n\t\t'Jul','Ogo','Sep','Okt','Nov','Dis'],\n\t\tdayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],\n\t\tdayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],\n\t\tdayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],\n\t\tweekHeader: 'Mg',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ms']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl-BE.js",
    "content": "/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */\n/* David De Sloovere @DavidDeSloovere */\njQuery(function($){\n\t$.datepicker.regional['nl-BE'] = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['nl-BE']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js",
    "content": "/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Mathias Bynens <http://mathiasbynens.be/> */\njQuery(function($){\n\t$.datepicker.regional.nl = {\n\t\tcloseText: 'Sluiten',\n\t\tprevText: '←',\n\t\tnextText: '→',\n\t\tcurrentText: 'Vandaag',\n\t\tmonthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n\t\t'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n\t\tmonthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',\n\t\t'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],\n\t\tdayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n\t\tdayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n\t\tdayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional.nl);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-no.js",
    "content": "/* Norwegian initialisation for the jQuery UI date picker plugin. */\n/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */\n\njQuery(function($){\n\t$.datepicker.regional['no'] = {\n\t\tcloseText: 'Lukk',\n\t\tprevText: '&#xAB;Forrige',\n\t\tnextText: 'Neste&#xBB;',\n\t\tcurrentText: 'I dag',\n\t\tmonthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],\n\t\tmonthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],\n\t\tdayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],\n\t\tdayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],\n\t\tdayNamesMin: ['sø','ma','ti','on','to','fr','lø'],\n\t\tweekHeader: 'Uke',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''\n\t};\n\t$.datepicker.setDefaults($.datepicker.regional['no']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js",
    "content": "/* Polish initialisation for the jQuery UI date picker plugin. */\n/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pl'] = {\n\t\tcloseText: 'Zamknij',\n\t\tprevText: '&#x3C;Poprzedni',\n\t\tnextText: 'Następny&#x3E;',\n\t\tcurrentText: 'Dziś',\n\t\tmonthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',\n\t\t'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],\n\t\tmonthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',\n\t\t'Lip','Sie','Wrz','Pa','Lis','Gru'],\n\t\tdayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],\n\t\tdayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],\n\t\tdayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],\n\t\tweekHeader: 'Tydz',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pl']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js",
    "content": "/* Brazilian initialisation for the jQuery UI date picker plugin. */\n/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['pt-BR'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Próximo&#x3E;',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sm',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt-BR']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-pt.js",
    "content": "/* Portuguese initialisation for the jQuery UI date picker plugin. */\njQuery(function($){\n\t$.datepicker.regional['pt'] = {\n\t\tcloseText: 'Fechar',\n\t\tprevText: '&#x3C;Anterior',\n\t\tnextText: 'Seguinte',\n\t\tcurrentText: 'Hoje',\n\t\tmonthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',\n\t\t'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n\t\tmonthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',\n\t\t'Jul','Ago','Set','Out','Nov','Dez'],\n\t\tdayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],\n\t\tdayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tdayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],\n\t\tweekHeader: 'Sem',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['pt']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-rm.js",
    "content": "/* Romansh initialisation for the jQuery UI date picker plugin. */\n/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */\njQuery(function($){\n\t$.datepicker.regional['rm'] = {\n\t\tcloseText: 'Serrar',\n\t\tprevText: '&#x3C;Suandant',\n\t\tnextText: 'Precedent&#x3E;',\n\t\tcurrentText: 'Actual',\n\t\tmonthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],\n\t\tmonthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],\n\t\tdayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],\n\t\tdayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],\n\t\tdayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],\n\t\tweekHeader: 'emna',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['rm']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js",
    "content": "/* Romanian initialisation for the jQuery UI date picker plugin.\n *\n * Written by Edmond L. (ll_edmond@walla.com)\n * and Ionut G. Stan (ionut.g.stan@gmail.com)\n */\njQuery(function($){\n\t$.datepicker.regional['ro'] = {\n\t\tcloseText: 'Închide',\n\t\tprevText: '&#xAB; Luna precedentă',\n\t\tnextText: 'Luna următoare &#xBB;',\n\t\tcurrentText: 'Azi',\n\t\tmonthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',\n\t\t'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],\n\t\tmonthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',\n\t\t'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\t\tdayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],\n\t\tdayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],\n\t\tdayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],\n\t\tweekHeader: 'Săpt',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ro']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js",
    "content": "/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Andrew Stromnov (stromnov@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['ru'] = {\n\t\tcloseText: 'Закрыть',\n\t\tprevText: '&#x3C;Пред',\n\t\tnextText: 'След&#x3E;',\n\t\tcurrentText: 'Сегодня',\n\t\tmonthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',\n\t\t'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],\n\t\tdayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Нед',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ru']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js",
    "content": "/* Slovak initialisation for the jQuery UI date picker plugin. */\n/* Written by Vojtech Rinik (vojto@hmm.sk). */\njQuery(function($){\n\t$.datepicker.regional['sk'] = {\n\t\tcloseText: 'Zavrieť',\n\t\tprevText: '&#x3C;Predchádzajúci',\n\t\tnextText: 'Nasledujúci&#x3E;',\n\t\tcurrentText: 'Dnes',\n\t\tmonthNames: ['Január','Február','Marec','Apríl','Máj','Jún',\n\t\t'Júl','August','September','Október','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',\n\t\t'Júl','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],\n\t\tdayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],\n\t\tweekHeader: 'Ty',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sk']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js",
    "content": "/* Slovenian initialisation for the jQuery UI date picker plugin. */\n/* Written by Jaka Jancar (jaka@kubje.org). */\n/* c = č, s = š z = ž C = Č S = Š Z = Ž */\njQuery(function($){\n\t$.datepicker.regional['sl'] = {\n\t\tcloseText: 'Zapri',\n\t\tprevText: '&#x3C;Prejšnji',\n\t\tnextText: 'Naslednji&#x3E;',\n\t\tcurrentText: 'Trenutni',\n\t\tmonthNames: ['Januar','Februar','Marec','April','Maj','Junij',\n\t\t'Julij','Avgust','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'],\n\t\tdayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'],\n\t\tdayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'],\n\t\tweekHeader: 'Teden',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sl']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js",
    "content": "/* Albanian initialisation for the jQuery UI date picker plugin. */\n/* Written by Flakron Bytyqi (flakron@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['sq'] = {\n\t\tcloseText: 'mbylle',\n\t\tprevText: '&#x3C;mbrapa',\n\t\tnextText: 'Përpara&#x3E;',\n\t\tcurrentText: 'sot',\n\t\tmonthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',\n\t\t'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],\n\t\tmonthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',\n\t\t'Kor','Gus','Sht','Tet','Nën','Dhj'],\n\t\tdayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],\n\t\tdayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tdayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],\n\t\tweekHeader: 'Ja',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sq']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js",
    "content": "/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr-SR'] = {\n\t\tcloseText: 'Zatvori',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Danas',\n\t\tmonthNames: ['Januar','Februar','Mart','April','Maj','Jun',\n\t\t'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Avg','Sep','Okt','Nov','Dec'],\n\t\tdayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],\n\t\tdayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],\n\t\tdayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],\n\t\tweekHeader: 'Sed',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr-SR']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js",
    "content": "/* Serbian i18n for the jQuery UI date picker plugin. */\n/* Written by Dejan Dimić. */\njQuery(function($){\n\t$.datepicker.regional['sr'] = {\n\t\tcloseText: 'Затвори',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Данас',\n\t\tmonthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',\n\t\t'Јул','Август','Септембар','Октобар','Новембар','Децембар'],\n\t\tmonthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',\n\t\t'Јул','Авг','Сеп','Окт','Нов','Дец'],\n\t\tdayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],\n\t\tdayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],\n\t\tdayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],\n\t\tweekHeader: 'Сед',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sr']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js",
    "content": "/* Swedish initialisation for the jQuery UI date picker plugin. */\n/* Written by Anders Ekdahl ( anders@nomadiz.se). */\njQuery(function($){\n\t$.datepicker.regional['sv'] = {\n\t\tcloseText: 'Stäng',\n\t\tprevText: '&#xAB;Förra',\n\t\tnextText: 'Nästa&#xBB;',\n\t\tcurrentText: 'Idag',\n\t\tmonthNames: ['Januari','Februari','Mars','April','Maj','Juni',\n\t\t'Juli','Augusti','September','Oktober','November','December'],\n\t\tmonthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',\n\t\t'Jul','Aug','Sep','Okt','Nov','Dec'],\n\t\tdayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],\n\t\tdayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],\n\t\tdayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],\n\t\tweekHeader: 'Ve',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['sv']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js",
    "content": "/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by S A Sureshkumar (saskumar@live.com). */\njQuery(function($){\n\t$.datepicker.regional['ta'] = {\n\t\tcloseText: 'மூடு',\n\t\tprevText: 'முன்னையது',\n\t\tnextText: 'அடுத்தது',\n\t\tcurrentText: 'இன்று',\n\t\tmonthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',\n\t\t'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],\n\t\tmonthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',\n\t\t'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],\n\t\tdayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],\n\t\tdayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],\n\t\tdayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],\n\t\tweekHeader: 'Не',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['ta']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-th.js",
    "content": "/* Thai initialisation for the jQuery UI date picker plugin. */\n/* Written by pipo (pipo@sixhead.com). */\njQuery(function($){\n\t$.datepicker.regional['th'] = {\n\t\tcloseText: 'ปิด',\n\t\tprevText: '&#xAB;&#xA0;ย้อน',\n\t\tnextText: 'ถัดไป&#xA0;&#xBB;',\n\t\tcurrentText: 'วันนี้',\n\t\tmonthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',\n\t\t'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],\n\t\tmonthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',\n\t\t'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],\n\t\tdayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],\n\t\tdayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tdayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],\n\t\tweekHeader: 'Wk',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['th']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tj.js",
    "content": "/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Abdurahmon Saidov (saidovab@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['tj'] = {\n\t\tcloseText: 'Идома',\n\t\tprevText: '&#x3c;Қафо',\n\t\tnextText: 'Пеш&#x3e;',\n\t\tcurrentText: 'Имрӯз',\n\t\tmonthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',\n\t\t'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],\n\t\tmonthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',\n\t\t'Июл','Авг','Сен','Окт','Ноя','Дек'],\n\t\tdayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],\n\t\tdayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],\n\t\tdayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],\n\t\tweekHeader: 'Хф',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tj']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js",
    "content": "/* Turkish initialisation for the jQuery UI date picker plugin. */\n/* Written by Izzet Emre Erkan (kara@karalamalar.net). */\njQuery(function($){\n\t$.datepicker.regional['tr'] = {\n\t\tcloseText: 'kapat',\n\t\tprevText: '&#x3C;geri',\n\t\tnextText: 'ileri&#x3e',\n\t\tcurrentText: 'bugün',\n\t\tmonthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',\n\t\t'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],\n\t\tmonthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',\n\t\t'Tem','Ağu','Eyl','Eki','Kas','Ara'],\n\t\tdayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],\n\t\tdayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tdayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],\n\t\tweekHeader: 'Hf',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['tr']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js",
    "content": "/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */\n/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */\n/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['uk'] = {\n\t\tcloseText: 'Закрити',\n\t\tprevText: '&#x3C;',\n\t\tnextText: '&#x3E;',\n\t\tcurrentText: 'Сьогодні',\n\t\tmonthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',\n\t\t'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],\n\t\tmonthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',\n\t\t'Лип','Сер','Вер','Жов','Лис','Гру'],\n\t\tdayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],\n\t\tdayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],\n\t\tdayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],\n\t\tweekHeader: 'Тиж',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['uk']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js",
    "content": "/* Vietnamese initialisation for the jQuery UI date picker plugin. */\n/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */\njQuery(function($){\n\t$.datepicker.regional['vi'] = {\n\t\tcloseText: 'Đóng',\n\t\tprevText: '&#x3C;Trước',\n\t\tnextText: 'Tiếp&#x3E;',\n\t\tcurrentText: 'Hôm nay',\n\t\tmonthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',\n\t\t'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],\n\t\tmonthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',\n\t\t'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n\t\tdayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],\n\t\tdayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tdayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],\n\t\tweekHeader: 'Tu',\n\t\tdateFormat: 'dd/mm/yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tyearSuffix: ''};\n\t$.datepicker.setDefaults($.datepicker.regional['vi']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Cloudream (cloudream@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-CN'] = {\n\t\tcloseText: '关闭',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy-mm-dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-CN']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by SCCY (samuelcychan@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-HK'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'dd-mm-yy',\n\t\tfirstDay: 0,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-HK']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js",
    "content": "/* Chinese initialisation for the jQuery UI date picker plugin. */\n/* Written by Ressol (ressol@gmail.com). */\njQuery(function($){\n\t$.datepicker.regional['zh-TW'] = {\n\t\tcloseText: '關閉',\n\t\tprevText: '&#x3C;上月',\n\t\tnextText: '下月&#x3E;',\n\t\tcurrentText: '今天',\n\t\tmonthNames: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tmonthNamesShort: ['一月','二月','三月','四月','五月','六月',\n\t\t'七月','八月','九月','十月','十一月','十二月'],\n\t\tdayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],\n\t\tdayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],\n\t\tdayNamesMin: ['日','一','二','三','四','五','六'],\n\t\tweekHeader: '周',\n\t\tdateFormat: 'yy/mm/dd',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: true,\n\t\tyearSuffix: '年'};\n\t$.datepicker.setDefaults($.datepicker.regional['zh-TW']);\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery-ui.custom.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.accordion.js",
    "content": "/*!\n * jQuery UI Accordion 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/accordion/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.autocomplete.js",
    "content": "/*!\n * jQuery UI Autocomplete 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/autocomplete/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n *\tjquery.ui.menu.js\n */\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.button.js",
    "content": "/*!\n * jQuery UI Button 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/button/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.core.js",
    "content": "/*!\n * jQuery UI Core 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.datepicker.js",
    "content": "/*!\n * jQuery UI Datepicker 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/datepicker/\n *\n * Depends:\n *\tjquery.ui.core.js\n */\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.dialog.js",
    "content": "/*!\n * jQuery UI Dialog 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/dialog/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *  jquery.ui.button.js\n *\tjquery.ui.draggable.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.position.js\n *\tjquery.ui.resizable.js\n */\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.draggable.js",
    "content": "/*!\n * jQuery UI Draggable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/draggable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.droppable.js",
    "content": "/*!\n * jQuery UI Droppable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/droppable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.draggable.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-blind.js",
    "content": "/*!\n * jQuery UI Effects Blind 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/blind-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-bounce.js",
    "content": "/*!\n * jQuery UI Effects Bounce 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/bounce-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-clip.js",
    "content": "/*!\n * jQuery UI Effects Clip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/clip-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-drop.js",
    "content": "/*!\n * jQuery UI Effects Drop 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/drop-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-explode.js",
    "content": "/*!\n * jQuery UI Effects Explode 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/explode-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fade.js",
    "content": "/*!\n * jQuery UI Effects Fade 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fade-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-fold.js",
    "content": "/*!\n * jQuery UI Effects Fold 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fold-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-highlight.js",
    "content": "/*!\n * jQuery UI Effects Highlight 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/highlight-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-pulsate.js",
    "content": "/*!\n * jQuery UI Effects Pulsate 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/pulsate-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-scale.js",
    "content": "/*!\n * jQuery UI Effects Scale 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/scale-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-shake.js",
    "content": "/*!\n * jQuery UI Effects Shake 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/shake-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-slide.js",
    "content": "/*!\n * jQuery UI Effects Slide 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slide-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect-transfer.js",
    "content": "/*!\n * jQuery UI Effects Transfer 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/transfer-effect/\n *\n * Depends:\n *\tjquery.ui.effect.js\n */\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.effect.js",
    "content": "/*!\n * jQuery UI Effects 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/effects-core/\n */\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.menu.js",
    "content": "/*!\n * jQuery UI Menu 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.mouse.js",
    "content": "/*!\n * jQuery UI Mouse 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/mouse/\n *\n * Depends:\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.position.js",
    "content": "/*!\n * jQuery UI Position 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.progressbar.js",
    "content": "/*!\n * jQuery UI Progressbar 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/progressbar/\n *\n * Depends:\n *   jquery.ui.core.js\n *   jquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.resizable.js",
    "content": "/*!\n * jQuery UI Resizable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/resizable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.selectable.js",
    "content": "/*!\n * jQuery UI Selectable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.slider.js",
    "content": "/*!\n * jQuery UI Slider 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.sortable.js",
    "content": "/*!\n * jQuery UI Sortable 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/sortable/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.spinner.js",
    "content": "/*!\n * jQuery UI Spinner 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/spinner/\n *\n * Depends:\n *  jquery.ui.core.js\n *  jquery.ui.widget.js\n *  jquery.ui.button.js\n */\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tabs.js",
    "content": "/*!\n * jQuery UI Tabs 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tabs/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n */\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.tooltip.js",
    "content": "/*!\n * jQuery UI Tooltip 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tooltip/\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui/jquery.ui.widget.js",
    "content": "/*!\n * jQuery UI Widget 1.9.2\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/jQuery.widget/\n */\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.accordion.jquery.json",
    "content": "{\n\t\"name\": \"ui.accordion\",\n\t\"title\": \"jQuery UI Accordion\",\n\t\"description\": \"Displays collapsible content panels for presenting information in a limited amount of space.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"accordion\",\n\t\t\"navigation\",\n\t\t\"panel\",\n\t\t\"collapse\",\n\t\t\"expand\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/accordion/\",\n\t\"demo\": \"http://jqueryui.com/accordion/\",\n\t\"docs\": \"http://api.jqueryui.com/accordion/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.autocomplete.jquery.json",
    "content": "{\n\t\"name\": \"ui.autocomplete\",\n\t\"title\": \"jQuery UI Autocomplete\",\n\t\"description\": \"Lists suggested words as the user is typing.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"autocomplete\",\n\t\t\"form\",\n\t\t\"word\",\n\t\t\"predict\",\n\t\t\"suggest\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/autocomplete/\",\n\t\"demo\": \"http://jqueryui.com/autocomplete/\",\n\t\"docs\": \"http://api.jqueryui.com/autocomplete/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.menu\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.button.jquery.json",
    "content": "{\n\t\"name\": \"ui.button\",\n\t\"title\": \"jQuery UI Button\",\n\t\"description\": \"Enhances a form with themable buttons.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"button\",\n\t\t\"form\",\n\t\t\"radio\",\n\t\t\"checkbox\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/button/\",\n\t\"demo\": \"http://jqueryui.com/button/\",\n\t\"docs\": \"http://api.jqueryui.com/button/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.core.jquery.json",
    "content": "{\n\t\"name\": \"ui.core\",\n\t\"title\": \"jQuery UI Core\",\n\t\"description\": \"The core of jQuery UI, required for all interactions and widgets.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"core\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/\",\n\t\"demo\": \"http://jqueryui.com/\",\n\t\"docs\": \"http://api.jqueryui.com/category/ui-core/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.datepicker.jquery.json",
    "content": "{\n\t\"name\": \"ui.datepicker\",\n\t\"title\": \"jQuery UI Datepicker\",\n\t\"description\": \"Displays a calendar from an input or inline for selecting dates.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"datepicker\",\n\t\t\"form\",\n\t\t\"calendar\",\n\t\t\"date\",\n\t\t\"i18n\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/datepicker/\",\n\t\"demo\": \"http://jqueryui.com/datepicker/\",\n\t\"docs\": \"http://api.jqueryui.com/datepicker/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.dialog.jquery.json",
    "content": "{\n\t\"name\": \"ui.dialog\",\n\t\"title\": \"jQuery UI Dialog\",\n\t\"description\": \"Displays customizable dialog windows.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"dialog\",\n\t\t\"modal\",\n\t\t\"alert\",\n\t\t\"popup\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/dialog/\",\n\t\"demo\": \"http://jqueryui.com/dialog/\",\n\t\"docs\": \"http://api.jqueryui.com/dialog/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.button\": \"1.9.2\",\n\t\t\"ui.draggable\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\",\n\t\t\"ui.resizable\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.draggable.jquery.json",
    "content": "{\n\t\"name\": \"ui.draggable\",\n\t\"title\": \"jQuery UI Draggable\",\n\t\"description\": \"Enables dragging functionality for any element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"draggable\",\n\t\t\"drag\",\n\t\t\"drop\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/draggable/\",\n\t\"demo\": \"http://jqueryui.com/draggable/\",\n\t\"docs\": \"http://api.jqueryui.com/draggable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.droppable.jquery.json",
    "content": "{\n\t\"name\": \"ui.droppable\",\n\t\"title\": \"jQuery UI Droppable\",\n\t\"description\": \"Enables drop targets for draggable elements.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"droppable\",\n\t\t\"drag\",\n\t\t\"drop\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/droppable/\",\n\t\"demo\": \"http://jqueryui.com/droppable/\",\n\t\"docs\": \"http://api.jqueryui.com/droppable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\",\n\t\t\"ui.draggable\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-blind.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-blind\",\n\t\"title\": \"jQuery UI Blind Effect\",\n\t\"description\": \"Blinds the element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"blind\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/blind-effect/\",\n\t\"demo\": \"http://jqueryui.com/blind-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/blind-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-bounce.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-bounce\",\n\t\"title\": \"jQuery UI Bounce Effect\",\n\t\"description\": \"Bounces an element horizontally or vertically n times.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"bounce\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/bounce-effect/\",\n\t\"demo\": \"http://jqueryui.com/bounce-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/bounce-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-clip.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-clip\",\n\t\"title\": \"jQuery UI Clip Effect\",\n\t\"description\": \"Clips the element on and off like an old TV.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"clip\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/clip-effect/\",\n\t\"demo\": \"http://jqueryui.com/clip-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/clip-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-drop.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-drop\",\n\t\"title\": \"jQuery UI Drop Effect\",\n\t\"description\": \"Moves an element in one direction and hides it at the same time.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"drop\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/drop-effect/\",\n\t\"demo\": \"http://jqueryui.com/drop-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/drop-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-explode.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-explode\",\n\t\"title\": \"jQuery UI Explode Effect\",\n\t\"description\": \"Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"explode\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/explode-effect/\",\n\t\"demo\": \"http://jqueryui.com/explode-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/explode-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fade.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-fade\",\n\t\"title\": \"jQuery UI Fade Effect\",\n\t\"description\": \"Fades an element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"fade\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/fade-effect/\",\n\t\"demo\": \"http://jqueryui.com/fade-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/fade-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-fold.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-fold\",\n\t\"title\": \"jQuery UI Fold Effect\",\n\t\"description\": \"Folds an element first horizontally and then vertically.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"fold\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/fold-effect/\",\n\t\"demo\": \"http://jqueryui.com/fold-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/fold-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-highlight.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-highlight\",\n\t\"title\": \"jQuery UI Highlight Effect\",\n\t\"description\": \"Highlights the background of an element in a defined color for a custom duration.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"highlight\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/highlight-effect/\",\n\t\"demo\": \"http://jqueryui.com/highlight-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/highlight-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-pulsate.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-pulsate\",\n\t\"title\": \"jQuery UI Pulsate Effect\",\n\t\"description\": \"Pulsates an element n times by changing the opacity to zero and back.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"pulsate\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/pulsate-effect/\",\n\t\"demo\": \"http://jqueryui.com/pulsate-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/pulsate-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-scale.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-scale\",\n\t\"title\": \"jQuery UI Scale Effect\",\n\t\"description\": \"Grows or shrinks an element and its content. Restores an elemnt to its original size.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"scale\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/scale-effect/\",\n\t\"demo\": \"http://jqueryui.com/scale-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/scale-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-shake.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-shake\",\n\t\"title\": \"jQuery UI Shake Effect\",\n\t\"description\": \"Shakes an element horizontally or vertically n times.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"shake\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/shake-effect/\",\n\t\"demo\": \"http://jqueryui.com/shake-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/shake-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-slide.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-slide\",\n\t\"title\": \"jQuery UI Slide Effect\",\n\t\"description\": \"Slides an element in and out of the viewport.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"slide\",\n\t\t\"effect\",\n\t\t\"show\",\n\t\t\"hide\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/slide-effect/\",\n\t\"demo\": \"http://jqueryui.com/slide-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/slide-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect-transfer.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect-transfer\",\n\t\"title\": \"jQuery UI Transfer Effect\",\n\t\"description\": \"Displays a transfer effect from one element to another.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"transfer\",\n\t\t\"effect\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/transfer-effect/\",\n\t\"demo\": \"http://jqueryui.com/transfer-effect/\",\n\t\"docs\": \"http://api.jqueryui.com/transfer-effect/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.effect\": \"1.9.2\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.effect.jquery.json",
    "content": "{\n\t\"name\": \"ui.effect\",\n\t\"title\": \"jQuery UI Effects Core\",\n\t\"description\": \"Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"effect\",\n\t\t\"animation\",\n\t\t\"show\",\n\t\t\"hide\",\n\t\t\"color\",\n\t\t\"class\",\n\t\t\"transition\",\n\t\t\"easing\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/\",\n\t\"demo\": \"http://jqueryui.com/effects/\",\n\t\"docs\": \"http://api.jqueryui.com/category/effects-core/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"effect\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.menu.jquery.json",
    "content": "{\n\t\"name\": \"ui.menu\",\n\t\"title\": \"jQuery UI Menu\",\n\t\"description\": \"Creates nestable menus.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"menu\",\n\t\t\"dropdown\",\n\t\t\"flyout\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/menu/\",\n\t\"demo\": \"http://jqueryui.com/menu/\",\n\t\"docs\": \"http://api.jqueryui.com/menu/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.mouse.jquery.json",
    "content": "{\n\t\"name\": \"ui.mouse\",\n\t\"title\": \"jQuery UI Mouse\",\n\t\"description\": \"Abstracts mouse-based interactions to assist in creating certain widgets.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"mouse\",\n\t\t\"abstraction\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/mouse/\",\n\t\"demo\": \"http://jqueryui.com/mouse/\",\n\t\"docs\": \"http://api.jqueryui.com/mouse/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.position.jquery.json",
    "content": "{\n\t\"name\": \"ui.position\",\n\t\"title\": \"jQuery UI Position\",\n\t\"description\": \"Positions elements relative to other elements.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"position\",\n\t\t\"offset\",\n\t\t\"relative\",\n\t\t\"absolute\",\n\t\t\"fixed\",\n\t\t\"collision\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/position/\",\n\t\"demo\": \"http://jqueryui.com/position/\",\n\t\"docs\": \"http://api.jqueryui.com/position/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.progressbar.jquery.json",
    "content": "{\n\t\"name\": \"ui.progressbar\",\n\t\"title\": \"jQuery UI Progressbar\",\n\t\"description\": \"Displays a status indicator for loading state, standard percentage, and other progress indicators.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"progressbar\",\n\t\t\"determinate\",\n\t\t\"status\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/progressbar/\",\n\t\"demo\": \"http://jqueryui.com/progressbar/\",\n\t\"docs\": \"http://api.jqueryui.com/progressbar/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.resizable.jquery.json",
    "content": "{\n\t\"name\": \"ui.resizable\",\n\t\"title\": \"jQuery UI Resizable\",\n\t\"description\": \"Enables resize functionality for any element.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"resizable\",\n\t\t\"resize\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/resizable/\",\n\t\"demo\": \"http://jqueryui.com/resizable/\",\n\t\"docs\": \"http://api.jqueryui.com/resizable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.selectable.jquery.json",
    "content": "{\n\t\"name\": \"ui.selectable\",\n\t\"title\": \"jQuery UI Selectable\",\n\t\"description\": \"Allows groups of elements to be selected with the mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"selectable\",\n\t\t\"selection\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/selectable/\",\n\t\"demo\": \"http://jqueryui.com/selectable/\",\n\t\"docs\": \"http://api.jqueryui.com/selectable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.slider.jquery.json",
    "content": "{\n\t\"name\": \"ui.slider\",\n\t\"title\": \"jQuery UI Slider\",\n\t\"description\": \"Displays a flexible slider with ranges and accessibility via keyboard.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"slider\",\n\t\t\"form\",\n\t\t\"number\",\n\t\t\"range\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/slider/\",\n\t\"demo\": \"http://jqueryui.com/slider/\",\n\t\"docs\": \"http://api.jqueryui.com/slider/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.sortable.jquery.json",
    "content": "{\n\t\"name\": \"ui.sortable\",\n\t\"title\": \"jQuery UI Sortable\",\n\t\"description\": \"Enables items in a list to be sorted using the mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"sortable\",\n\t\t\"sort\",\n\t\t\"list\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/sortable/\",\n\t\"demo\": \"http://jqueryui.com/sortable/\",\n\t\"docs\": \"http://api.jqueryui.com/sortable/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.mouse\": \"1.9.2\"\n\t},\n\t\"category\": \"interaction\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.spinner.jquery.json",
    "content": "{\n\t\"name\": \"ui.spinner\",\n\t\"title\": \"jQuery UI Spinner\",\n\t\"description\": \"Displays buttons to easily input numbers via the keyboard or mouse.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"spinner\",\n\t\t\"form\",\n\t\t\"number\",\n\t\t\"spinbutton\",\n\t\t\"stepper\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/spinner/\",\n\t\"demo\": \"http://jqueryui.com/spinner/\",\n\t\"docs\": \"http://api.jqueryui.com/spinner/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.button\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tabs.jquery.json",
    "content": "{\n\t\"name\": \"ui.tabs\",\n\t\"title\": \"jQuery UI Tabs\",\n\t\"description\": \"Transforms a set of container elements into a tab structure.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"tabs\",\n\t\t\"navigation\",\n\t\t\"panel\",\n\t\t\"collapse\",\n\t\t\"expand\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/tabs/\",\n\t\"demo\": \"http://jqueryui.com/tabs/\",\n\t\"docs\": \"http://api.jqueryui.com/tabs/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.tooltip.jquery.json",
    "content": "{\n\t\"name\": \"ui.tooltip\",\n\t\"title\": \"jQuery UI Tooltip\",\n\t\"description\": \"Shows additional information for any element on hover or focus.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"tooltip\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/tooltip/\",\n\t\"demo\": \"http://jqueryui.com/tooltip/\",\n\t\"docs\": \"http://api.jqueryui.com/tooltip/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\",\n\t\t\"ui.core\": \"1.9.2\",\n\t\t\"ui.widget\": \"1.9.2\",\n\t\t\"ui.position\": \"1.9.2\"\n\t},\n\t\"category\": \"widget\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/development-bundle/ui.widget.jquery.json",
    "content": "{\n\t\"name\": \"ui.widget\",\n\t\"title\": \"jQuery UI Widget\",\n\t\"description\": \"Provides a factory for creating stateful widgets with a common API.\",\n\t\"keywords\": [\n\t\t\"ui\",\n\t\t\"widget\",\n\t\t\"abstraction\",\n\t\t\"state\",\n\t\t\"factory\"\n\t],\n\t\"version\": \"1.9.2\",\n\t\"author\": {\n\t\t\"name\": \"jQuery Foundation and other contributors\",\n\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/AUTHORS.txt\"\n\t},\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"Scott González\",\n\t\t\t\"email\": \"scott.gonzalez@gmail.com\",\n\t\t\t\"url\": \"http://scottgonzalez.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Jörn Zaefferer\",\n\t\t\t\"email\": \"joern.zaefferer@gmail.com\",\n\t\t\t\"url\": \"http://bassistance.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Kris Borchers\",\n\t\t\t\"email\": \"kris.borchers@gmail.com\",\n\t\t\t\"url\": \"http://krisborchers.com\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Corey Frang\",\n\t\t\t\"email\": \"gnarf37@gmail.com\",\n\t\t\t\"url\": \"http://gnarf.net\"\n\t\t}\n\t],\n\t\"licenses\": [\n\t\t{\n\t\t\t\"type\": \"MIT\",\n\t\t\t\"url\": \"https://github.com/jquery/jquery-ui/blob/1.9.2/MIT-LICENSE.txt\"\n\t\t}\n\t],\n\t\"bugs\": \"http://bugs.jqueryui.com/\",\n\t\"homepage\": \"http://jqueryui.com/widget/\",\n\t\"demo\": \"http://jqueryui.com/widget/\",\n\t\"docs\": \"http://api.jqueryui.com/jQuery.widget/\",\n\t\"download\": \"http://jqueryui.com/download/\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.6\"\n\t},\n\t\"category\": \"core\"\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/index.html",
    "content": "<!doctype html>\n<html lang=\"us\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Example Page</title>\n\t<link href=\"css/ui-lightness/jquery-ui-1.9.2.custom.css\" rel=\"stylesheet\">\n\t<script src=\"js/jquery-1.8.3.js\"></script>\n\t<script src=\"js/jquery-ui-1.9.2.custom.js\"></script>\n\t<script>\n\t$(function() {\n\t\t\n\t\t$( \"#accordion\" ).accordion();\n\t\t\n\n\t\t\n\t\tvar availableTags = [\n\t\t\t\"ActionScript\",\n\t\t\t\"AppleScript\",\n\t\t\t\"Asp\",\n\t\t\t\"BASIC\",\n\t\t\t\"C\",\n\t\t\t\"C++\",\n\t\t\t\"Clojure\",\n\t\t\t\"COBOL\",\n\t\t\t\"ColdFusion\",\n\t\t\t\"Erlang\",\n\t\t\t\"Fortran\",\n\t\t\t\"Groovy\",\n\t\t\t\"Haskell\",\n\t\t\t\"Java\",\n\t\t\t\"JavaScript\",\n\t\t\t\"Lisp\",\n\t\t\t\"Perl\",\n\t\t\t\"PHP\",\n\t\t\t\"Python\",\n\t\t\t\"Ruby\",\n\t\t\t\"Scala\",\n\t\t\t\"Scheme\"\n\t\t];\n\t\t$( \"#autocomplete\" ).autocomplete({\n\t\t\tsource: availableTags\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#button\" ).button();\n\t\t$( \"#radioset\" ).buttonset();\n\t\t\n\n\t\t\n\t\t$( \"#tabs\" ).tabs();\n\t\t\n\n\t\t\n\t\t$( \"#dialog\" ).dialog({\n\t\t\tautoOpen: false,\n\t\t\twidth: 400,\n\t\t\tbuttons: [\n\t\t\t\t{\n\t\t\t\t\ttext: \"Ok\",\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: \"Cancel\",\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t$( this ).dialog( \"close\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\n\t\t// Link to open the dialog\n\t\t$( \"#dialog-link\" ).click(function( event ) {\n\t\t\t$( \"#dialog\" ).dialog( \"open\" );\n\t\t\tevent.preventDefault();\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#datepicker\" ).datepicker({\n\t\t\tinline: true\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#slider\" ).slider({\n\t\t\trange: true,\n\t\t\tvalues: [ 17, 67 ]\n\t\t});\n\t\t\n\n\t\t\n\t\t$( \"#progressbar\" ).progressbar({\n\t\t\tvalue: 20\n\t\t});\n\t\t\n\n\t\t// Hover states on the static widgets\n\t\t$( \"#dialog-link, #icons li\" ).hover(\n\t\t\tfunction() {\n\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tfunction() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t);\n\t});\n\t</script>\n\t<style>\n\tbody{\n\t\tfont: 62.5% \"Trebuchet MS\", sans-serif;\n\t\tmargin: 50px;\n\t}\n\t.demoHeaders {\n\t\tmargin-top: 2em;\n\t}\n\t#dialog-link {\n\t\tpadding: .4em 1em .4em 20px;\n\t\ttext-decoration: none;\n\t\tposition: relative;\n\t}\n\t#dialog-link span.ui-icon {\n\t\tmargin: 0 5px 0 0;\n\t\tposition: absolute;\n\t\tleft: .2em;\n\t\ttop: 50%;\n\t\tmargin-top: -8px;\n\t}\n\t#icons {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t#icons li {\n\t\tmargin: 2px;\n\t\tposition: relative;\n\t\tpadding: 4px 0;\n\t\tcursor: pointer;\n\t\tfloat: left;\n\t\tlist-style: none;\n\t}\n\t#icons span.ui-icon {\n\t\tfloat: left;\n\t\tmargin: 0 4px;\n\t}\n\t</style>\n</head>\n<body>\n\n<h1>Welcome to jQuery UI!</h1>\n\n<div class=\"ui-widget\">\n\t<p>This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of <a href=\"js/jquery-1.8.3.js\">jQuery</a>, your personalized copy of <a href=\"js/jquery-ui-1.9.2.custom.min.js\">jQuery UI (js/jquery-ui-1.9.2.custom.min.js)</a>, and <a href=\"css/ui-lightness/jquery-ui-1.9.2.custom.min.css\">css/ui-lightness/jquery-ui-1.9.2.custom.min.css</a> which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs. </p>\n\t<p>You've downloaded components and a theme that are compatible with jQuery 1.6+. Please make sure you are using jQuery 1.6+ in your production environment.</p>\n</div>\n\n<h1>YOUR COMPONENTS:</h1>\n\n\n<!-- Accordion -->\n<h2 class=\"demoHeaders\">Accordion</h2>\n<div id=\"accordion\">\n\t<h3>First</h3>\n\t<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>\n\t<h3>Second</h3>\n\t<div>Phasellus mattis tincidunt nibh.</div>\n\t<h3>Third</h3>\n\t<div>Nam dui erat, auctor a, dignissim quis.</div>\n</div>\n\n\n\n<!-- Autocomplete -->\n<h2 class=\"demoHeaders\">Autocomplete</h2>\n<div>\n\t<input id=\"autocomplete\" title=\"type &quot;a&quot;\">\n</div>\n\n\n\n<!-- Button -->\n<h2 class=\"demoHeaders\">Button</h2>\n<button id=\"button\">A button element</button>\n<form style=\"margin-top: 1em;\">\n\t<div id=\"radioset\">\n\t\t<input type=\"radio\" id=\"radio1\" name=\"radio\"><label for=\"radio1\">Choice 1</label>\n\t\t<input type=\"radio\" id=\"radio2\" name=\"radio\" checked=\"checked\"><label for=\"radio2\">Choice 2</label>\n\t\t<input type=\"radio\" id=\"radio3\" name=\"radio\"><label for=\"radio3\">Choice 3</label>\n\t</div>\n</form>\n\n\n\n<!-- Tabs -->\n<h2 class=\"demoHeaders\">Tabs</h2>\n<div id=\"tabs\">\n\t<ul>\n\t\t<li><a href=\"#tabs-1\">First</a></li>\n\t\t<li><a href=\"#tabs-2\">Second</a></li>\n\t\t<li><a href=\"#tabs-3\">Third</a></li>\n\t</ul>\n\t<div id=\"tabs-1\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>\n\t<div id=\"tabs-2\">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>\n\t<div id=\"tabs-3\">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>\n</div>\n\n\n\n<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->\n<h2 class=\"demoHeaders\">Dialog</h2>\n<p><a href=\"#\" id=\"dialog-link\" class=\"ui-state-default ui-corner-all\"><span class=\"ui-icon ui-icon-newwin\"></span>Open Dialog</a></p>\n\n<h2 class=\"demoHeaders\">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>\n<div style=\"position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;\" class=\"fakewindowcontain\">\n\t<p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>\n\n\t<!-- ui-dialog -->\n\t<div class=\"ui-overlay\"><div class=\"ui-widget-overlay\"></div><div class=\"ui-widget-shadow ui-corner-all\" style=\"width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;\"></div></div>\n\t<div style=\"position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;\" class=\"ui-widget ui-widget-content ui-corner-all\">\n\t\t<div class=\"ui-dialog-content ui-widget-content\" style=\"background: none; border: 0;\">\n\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n\t\t</div>\n\t</div>\n\n</div>\n\n<!-- ui-dialog -->\n<div id=\"dialog\" title=\"Dialog Title\">\n\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n</div>\n\n\n\n<h2 class=\"demoHeaders\">Framework Icons (content color preview)</h2>\n<ul id=\"icons\" class=\"ui-widget ui-helper-clearfix\">\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-n\"><span class=\"ui-icon ui-icon-carat-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-ne\"><span class=\"ui-icon ui-icon-carat-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-e\"><span class=\"ui-icon ui-icon-carat-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-se\"><span class=\"ui-icon ui-icon-carat-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-s\"><span class=\"ui-icon ui-icon-carat-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-sw\"><span class=\"ui-icon ui-icon-carat-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-w\"><span class=\"ui-icon ui-icon-carat-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-1-nw\"><span class=\"ui-icon ui-icon-carat-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-n-s\"><span class=\"ui-icon ui-icon-carat-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-carat-2-e-w\"><span class=\"ui-icon ui-icon-carat-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-n\"><span class=\"ui-icon ui-icon-triangle-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-ne\"><span class=\"ui-icon ui-icon-triangle-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-e\"><span class=\"ui-icon ui-icon-triangle-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-se\"><span class=\"ui-icon ui-icon-triangle-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-s\"><span class=\"ui-icon ui-icon-triangle-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-sw\"><span class=\"ui-icon ui-icon-triangle-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-w\"><span class=\"ui-icon ui-icon-triangle-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-1-nw\"><span class=\"ui-icon ui-icon-triangle-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-n-s\"><span class=\"ui-icon ui-icon-triangle-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-triangle-2-e-w\"><span class=\"ui-icon ui-icon-triangle-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-n\"><span class=\"ui-icon ui-icon-arrow-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-ne\"><span class=\"ui-icon ui-icon-arrow-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-e\"><span class=\"ui-icon ui-icon-arrow-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-se\"><span class=\"ui-icon ui-icon-arrow-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-s\"><span class=\"ui-icon ui-icon-arrow-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-sw\"><span class=\"ui-icon ui-icon-arrow-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-w\"><span class=\"ui-icon ui-icon-arrow-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-1-nw\"><span class=\"ui-icon ui-icon-arrow-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-n-s\"><span class=\"ui-icon ui-icon-arrow-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-ne-sw\"><span class=\"ui-icon ui-icon-arrow-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-e-w\"><span class=\"ui-icon ui-icon-arrow-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-2-se-nw\"><span class=\"ui-icon ui-icon-arrow-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-n\"><span class=\"ui-icon ui-icon-arrowstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-e\"><span class=\"ui-icon ui-icon-arrowstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-s\"><span class=\"ui-icon ui-icon-arrowstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowstop-1-w\"><span class=\"ui-icon ui-icon-arrowstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-n\"><span class=\"ui-icon ui-icon-arrowthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-ne\"><span class=\"ui-icon ui-icon-arrowthick-1-ne\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-e\"><span class=\"ui-icon ui-icon-arrowthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-se\"><span class=\"ui-icon ui-icon-arrowthick-1-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-s\"><span class=\"ui-icon ui-icon-arrowthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-sw\"><span class=\"ui-icon ui-icon-arrowthick-1-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-w\"><span class=\"ui-icon ui-icon-arrowthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-1-nw\"><span class=\"ui-icon ui-icon-arrowthick-1-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-n-s\"><span class=\"ui-icon ui-icon-arrowthick-2-n-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-ne-sw\"><span class=\"ui-icon ui-icon-arrowthick-2-ne-sw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-e-w\"><span class=\"ui-icon ui-icon-arrowthick-2-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthick-2-se-nw\"><span class=\"ui-icon ui-icon-arrowthick-2-se-nw\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-n\"><span class=\"ui-icon ui-icon-arrowthickstop-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-e\"><span class=\"ui-icon ui-icon-arrowthickstop-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-s\"><span class=\"ui-icon ui-icon-arrowthickstop-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowthickstop-1-w\"><span class=\"ui-icon ui-icon-arrowthickstop-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-w\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-n\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-e\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturnthick-1-s\"><span class=\"ui-icon ui-icon-arrowreturnthick-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-w\"><span class=\"ui-icon ui-icon-arrowreturn-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-n\"><span class=\"ui-icon ui-icon-arrowreturn-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-e\"><span class=\"ui-icon ui-icon-arrowreturn-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowreturn-1-s\"><span class=\"ui-icon ui-icon-arrowreturn-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-w\"><span class=\"ui-icon ui-icon-arrowrefresh-1-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-n\"><span class=\"ui-icon ui-icon-arrowrefresh-1-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-e\"><span class=\"ui-icon ui-icon-arrowrefresh-1-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrowrefresh-1-s\"><span class=\"ui-icon ui-icon-arrowrefresh-1-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4\"><span class=\"ui-icon ui-icon-arrow-4\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-arrow-4-diag\"><span class=\"ui-icon ui-icon-arrow-4-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-extlink\"><span class=\"ui-icon ui-icon-extlink\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-newwin\"><span class=\"ui-icon ui-icon-newwin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-refresh\"><span class=\"ui-icon ui-icon-refresh\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-shuffle\"><span class=\"ui-icon ui-icon-shuffle\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transfer-e-w\"><span class=\"ui-icon ui-icon-transfer-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-transferthick-e-w\"><span class=\"ui-icon ui-icon-transferthick-e-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-collapsed\"><span class=\"ui-icon ui-icon-folder-collapsed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-folder-open\"><span class=\"ui-icon ui-icon-folder-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document\"><span class=\"ui-icon ui-icon-document\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-document-b\"><span class=\"ui-icon ui-icon-document-b\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-note\"><span class=\"ui-icon ui-icon-note\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-closed\"><span class=\"ui-icon ui-icon-mail-closed\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-mail-open\"><span class=\"ui-icon ui-icon-mail-open\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-suitcase\"><span class=\"ui-icon ui-icon-suitcase\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-comment\"><span class=\"ui-icon ui-icon-comment\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-person\"><span class=\"ui-icon ui-icon-person\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-print\"><span class=\"ui-icon ui-icon-print\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-trash\"><span class=\"ui-icon ui-icon-trash\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-locked\"><span class=\"ui-icon ui-icon-locked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-unlocked\"><span class=\"ui-icon ui-icon-unlocked\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bookmark\"><span class=\"ui-icon ui-icon-bookmark\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-tag\"><span class=\"ui-icon ui-icon-tag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-home\"><span class=\"ui-icon ui-icon-home\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-flag\"><span class=\"ui-icon ui-icon-flag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calculator\"><span class=\"ui-icon ui-icon-calculator\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cart\"><span class=\"ui-icon ui-icon-cart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pencil\"><span class=\"ui-icon ui-icon-pencil\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clock\"><span class=\"ui-icon ui-icon-clock\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-disk\"><span class=\"ui-icon ui-icon-disk\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-calendar\"><span class=\"ui-icon ui-icon-calendar\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomin\"><span class=\"ui-icon ui-icon-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-zoomout\"><span class=\"ui-icon ui-icon-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-search\"><span class=\"ui-icon ui-icon-search\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-wrench\"><span class=\"ui-icon ui-icon-wrench\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gear\"><span class=\"ui-icon ui-icon-gear\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-heart\"><span class=\"ui-icon ui-icon-heart\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-star\"><span class=\"ui-icon ui-icon-star\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-link\"><span class=\"ui-icon ui-icon-link\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-cancel\"><span class=\"ui-icon ui-icon-cancel\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plus\"><span class=\"ui-icon ui-icon-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-plusthick\"><span class=\"ui-icon ui-icon-plusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minus\"><span class=\"ui-icon ui-icon-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-minusthick\"><span class=\"ui-icon ui-icon-minusthick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-close\"><span class=\"ui-icon ui-icon-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-closethick\"><span class=\"ui-icon ui-icon-closethick\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-key\"><span class=\"ui-icon ui-icon-key\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-lightbulb\"><span class=\"ui-icon ui-icon-lightbulb\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-scissors\"><span class=\"ui-icon ui-icon-scissors\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-clipboard\"><span class=\"ui-icon ui-icon-clipboard\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-copy\"><span class=\"ui-icon ui-icon-copy\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-contact\"><span class=\"ui-icon ui-icon-contact\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-image\"><span class=\"ui-icon ui-icon-image\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-video\"><span class=\"ui-icon ui-icon-video\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-script\"><span class=\"ui-icon ui-icon-script\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-alert\"><span class=\"ui-icon ui-icon-alert\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-info\"><span class=\"ui-icon ui-icon-info\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-notice\"><span class=\"ui-icon ui-icon-notice\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-help\"><span class=\"ui-icon ui-icon-help\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-check\"><span class=\"ui-icon ui-icon-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-bullet\"><span class=\"ui-icon ui-icon-bullet\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-off\"><span class=\"ui-icon ui-icon-radio-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-radio-on\"><span class=\"ui-icon ui-icon-radio-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-w\"><span class=\"ui-icon ui-icon-pin-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pin-s\"><span class=\"ui-icon ui-icon-pin-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-play\"><span class=\"ui-icon ui-icon-play\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-pause\"><span class=\"ui-icon ui-icon-pause\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-next\"><span class=\"ui-icon ui-icon-seek-next\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-prev\"><span class=\"ui-icon ui-icon-seek-prev\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-end\"><span class=\"ui-icon ui-icon-seek-end\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-seek-first\"><span class=\"ui-icon ui-icon-seek-first\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-stop\"><span class=\"ui-icon ui-icon-stop\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-eject\"><span class=\"ui-icon ui-icon-eject\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-off\"><span class=\"ui-icon ui-icon-volume-off\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-volume-on\"><span class=\"ui-icon ui-icon-volume-on\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-power\"><span class=\"ui-icon ui-icon-power\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal-diag\"><span class=\"ui-icon ui-icon-signal-diag\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-signal\"><span class=\"ui-icon ui-icon-signal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-0\"><span class=\"ui-icon ui-icon-battery-0\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-1\"><span class=\"ui-icon ui-icon-battery-1\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-2\"><span class=\"ui-icon ui-icon-battery-2\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-battery-3\"><span class=\"ui-icon ui-icon-battery-3\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-plus\"><span class=\"ui-icon ui-icon-circle-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-minus\"><span class=\"ui-icon ui-icon-circle-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-close\"><span class=\"ui-icon ui-icon-circle-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-e\"><span class=\"ui-icon ui-icon-circle-triangle-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-s\"><span class=\"ui-icon ui-icon-circle-triangle-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-w\"><span class=\"ui-icon ui-icon-circle-triangle-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-triangle-n\"><span class=\"ui-icon ui-icon-circle-triangle-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-e\"><span class=\"ui-icon ui-icon-circle-arrow-e\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-s\"><span class=\"ui-icon ui-icon-circle-arrow-s\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-w\"><span class=\"ui-icon ui-icon-circle-arrow-w\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-arrow-n\"><span class=\"ui-icon ui-icon-circle-arrow-n\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomin\"><span class=\"ui-icon ui-icon-circle-zoomin\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-zoomout\"><span class=\"ui-icon ui-icon-circle-zoomout\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circle-check\"><span class=\"ui-icon ui-icon-circle-check\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-plus\"><span class=\"ui-icon ui-icon-circlesmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-minus\"><span class=\"ui-icon ui-icon-circlesmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-circlesmall-close\"><span class=\"ui-icon ui-icon-circlesmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-plus\"><span class=\"ui-icon ui-icon-squaresmall-plus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-minus\"><span class=\"ui-icon ui-icon-squaresmall-minus\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-squaresmall-close\"><span class=\"ui-icon ui-icon-squaresmall-close\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-vertical\"><span class=\"ui-icon ui-icon-grip-dotted-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-dotted-horizontal\"><span class=\"ui-icon ui-icon-grip-dotted-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-vertical\"><span class=\"ui-icon ui-icon-grip-solid-vertical\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-solid-horizontal\"><span class=\"ui-icon ui-icon-grip-solid-horizontal\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-gripsmall-diagonal-se\"><span class=\"ui-icon ui-icon-gripsmall-diagonal-se\"></span></li>\n\t<li class=\"ui-state-default ui-corner-all\" title=\".ui-icon-grip-diagonal-se\"><span class=\"ui-icon ui-icon-grip-diagonal-se\"></span></li>\n</ul>\n\n\n<!-- Slider -->\n<h2 class=\"demoHeaders\">Slider</h2>\n<div id=\"slider\"></div>\n\n\n\n<!-- Datepicker -->\n<h2 class=\"demoHeaders\">Datepicker</h2>\n<div id=\"datepicker\"></div>\n\n\n\n<!-- Progressbar -->\n<h2 class=\"demoHeaders\">Progressbar</h2>\n<div id=\"progressbar\"></div>\n\n\n<!-- Highlight / Error -->\n<h2 class=\"demoHeaders\">Highlight / Error</h2>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-highlight ui-corner-all\" style=\"margin-top: 20px; padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-info\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Hey!</strong> Sample ui-state-highlight style.</p>\n\t</div>\n</div>\n<br>\n<div class=\"ui-widget\">\n\t<div class=\"ui-state-error ui-corner-all\" style=\"padding: 0 .7em;\">\n\t\t<p><span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin-right: .3em;\"></span>\n\t\t<strong>Alert:</strong> Sample ui-state-error style.</p>\n\t</div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-1.8.3.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} :\n\t\t\t\t\t\t\t\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!doctype html><html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui/js/jquery-ui-1.9.2.custom.js",
    "content": "/*! jQuery UI - v1.9.2 - 2012-12-05\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.9.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,'position')) && (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,'overflow')+$.css(this,'overflow-y')+$.css(this,'overflow-x'));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().andSelf().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support\n$(function() {\n\tvar body = document.body,\n\t\tdiv = body.appendChild( div = document.createElement( \"div\" ) );\n\n\t// access offsetHeight before setting the style to prevent a layout bug\n\t// in IE 9 which causes the element to continue to take up space even\n\t// after it is removed from the DOM (#8026)\n\tdiv.offsetHeight;\n\n\t$.extend( div.style, {\n\t\tminHeight: \"100px\",\n\t\theight: \"auto\",\n\t\tpadding: 0,\n\t\tborderWidth: 0\n\t});\n\n\t$.support.minHeight = div.offsetHeight === 100;\n\t$.support.selectstart = \"onselectstart\" in div;\n\n\t// set display to none to avoid a layout bug in IE\n\t// http://dev.jquery.com/ticket/4014\n\tbody.removeChild( div ).style.display = \"none\";\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n\n(function() {\n\tvar uaMatch = /msie ([\\w.]+)/.exec( navigator.userAgent.toLowerCase() ) || [];\n\t$.ui.ie = uaMatch.length ? true : false;\n\t$.ui.ie6 = parseFloat( uaMatch[ 1 ], 10 ) === 6;\n})();\n\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated.  Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcontains: $.contains,\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t// these are odd functions, fix the API or move into individual plugins\n\tisOverAxis: function( x, reference, size ) {\n\t\t//Determines when x coordinate is over \"b\" element axis\n\t\treturn ( x > reference ) && ( x < ( reference + size ) );\n\t},\n\tisOver: function( y, x, top, left, height, width ) {\n\t\t//Determines when x, y coordinates is over \"b\" element\n\t\treturn $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( $.isFunction( value ) ) {\n\t\t\tprototype[ prop ] = (function() {\n\t\t\t\tvar _super = function() {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t\t},\n\t\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t\t};\n\t\t\t\treturn function() {\n\t\t\t\t\tvar __super = this._super,\n\t\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\t\treturnValue;\n\n\t\t\t\t\tthis._super = _super;\n\t\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\t\tthis._super = __super;\n\t\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\t\treturn returnValue;\n\t\t\t\t};\n\t\t\t})();\n\t\t}\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, prototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\t// TODO remove widgetBaseClass, see #8155\n\t\twidgetBaseClass: fullName,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t$.data( element, this.widgetName, this );\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t$.Widget.prototype._getCreateOptions = function() {\n\t\treturn $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];\n\t};\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function( e ) {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcancel: 'input,textarea,button,select,option',\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind('mousedown.'+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind('click.'+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + '.preventClickEvent')) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + '.preventClickEvent');\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind('.'+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n\t\t\t$.removeData(event.target, this.widgetName + '.preventClickEvent');\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && !(document.documentMode >= 9) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + '.preventClickEvent', true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(event) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(event) {},\n\t_mouseDrag: function(event) {},\n\t_mouseStop: function(event) {},\n\t_mouseCapture: function(event) { return true; }\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow ? \"\" : within.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow ? \"\" : within.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowX ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowY ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] );\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: isWindow ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\ttargetElem = target[0],\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tif ( targetElem.nodeType === 9 ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: 0, left: 0 };\n\t} else if ( $.isWindow( targetElem ) ) {\n\t\ttargetWidth = target.width();\n\t\ttargetHeight = target.height();\n\t\ttargetOffset = { top: target.scrollTop(), left: target.scrollLeft() };\n\t} else if ( targetElem.preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t\ttargetWidth = targetHeight = 0;\n\t\ttargetOffset = { top: targetElem.pageY, left: targetElem.pageX };\n\t} else {\n\t\ttargetWidth = target.outerWidth();\n\t\ttargetHeight = target.outerHeight();\n\t\ttargetOffset = target.offset();\n\t}\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !$.support.offsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem : elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\telem.bgiframe();\n\t\t}\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function () {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\t$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// offset option\n\t(function( $ ) {\n\t\tvar _position = $.fn.position;\n\t\t$.fn.position = function( options ) {\n\t\t\tif ( !options || !options.offset ) {\n\t\t\t\treturn _position.call( this, options );\n\t\t\t}\n\t\t\tvar offset = options.offset.split( \" \" ),\n\t\t\t\tat = options.at.split( \" \" );\n\t\t\tif ( offset.length === 1 ) {\n\t\t\t\toffset[ 1 ] = offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 0 ] ) ) {\n\t\t\t\toffset[ 0 ] = \"+\" + offset[ 0 ];\n\t\t\t}\n\t\t\tif ( /^\\d/.test( offset[ 1 ] ) ) {\n\t\t\t\toffset[ 1 ] = \"+\" + offset[ 1 ];\n\t\t\t}\n\t\t\tif ( at.length === 1 ) {\n\t\t\t\tif ( /left|center|right/.test( at[ 0 ] ) ) {\n\t\t\t\t\tat[ 1 ] = \"center\";\n\t\t\t\t} else {\n\t\t\t\t\tat[ 1 ] = at[ 0 ];\n\t\t\t\t\tat[ 0 ] = \"center\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _position.call( this, $.extend( options, {\n\t\t\t\tat: at[ 0 ] + offset[ 0 ] + \" \" + at[ 1 ] + offset[ 1 ],\n\t\t\t\toffset: undefined\n\t\t\t} ) );\n\t\t};\n\t}( jQuery ) );\n}\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n\t\t\tthis.element[0].style.position = 'relative';\n\n\t\t(this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n\t\t(this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n\t\t\treturn false;\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle)\n\t\t\treturn false;\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger('drag', event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar dropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\tvar element = this.element[0], elementInDom = false;\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element == document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" )\n\t\t\treturn false;\n\n\t\tif((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\tvar that = this;\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.andSelf()\n\t\t\t.each(function() {\n\t\t\t\tif(this == event.target) handle = true;\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n\t\tif(!helper.parents('body').length)\n\t\t\thelper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n\t\tif(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n\t\t\thelper.css(\"position\", \"absolute\");\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\to.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\to.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t(o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n\t\t\tvar c = $(o.containment);\n\t\t\tvar ce = c[0]; if(!ce) return;\n\t\t\tvar co = c.offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor == Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tvar containment;\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tvar co = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\tvar top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n\t\t//if($.ui.ddmanager) $.ui.ddmanager.current = null;\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\tif(type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function(event) {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, 'sortable');\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n\t\t\t\tif(this.shouldRevert) this.instance.options.revert = true;\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper == 'original')\n\t\t\t\t\tthis.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), that = this;\n\n\t\tvar checkPos = function(o) {\n\t\t\tvar dyClick = this.offset.click.top, dxClick = this.offset.click.left;\n\t\t\tvar helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;\n\t\t\tvar itemHeight = o.height, itemWidth = o.width;\n\t\t\tvar itemTop = o.top, itemLeft = o.left;\n\n\t\t\treturn $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n\t\t};\n\n\t\t$.each(inst.sortables, function(i) {\n\n\t\t\tvar innermostIntersecting = false;\n\t\t\tvar thisSortable = this;\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif  (this != thisSortable\n\t\t\t\t\t\t&& this.instance._intersectsWith(this.instance.containerCache)\n\t\t\t\t\t\t&& $.ui.contains(thisSortable.instance.element[0], this.instance.element[0]))\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) this.instance._mouseDrag(event);\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) this.instance.placeholder.remove();\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function(event, ui) {\n\t\tvar t = $('body'), o = $(this).data('draggable').options;\n\t\tif (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif (o._cursor) $('body').css(\"cursor\", o._cursor);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data('draggable').options;\n\t\tif(t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n\t\tt.css('opacity', o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data('draggable').options;\n\t\tif(o._opacity) $(ui.helper).css('opacity', o._opacity);\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function(event, ui) {\n\t\tvar i = $(this).data(\"draggable\");\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis != 'x') {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis != 'y') {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function(event, ui) {\n\n\t\tvar i = $(this).data(\"draggable\"), o = i.options;\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {\n\t\t\tvar $t = $(this); var $o = $t.offset();\n\t\t\tif(this != i.element[0]) i.snapElements.push({\n\t\t\t\titem: this,\n\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t});\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"draggable\"), o = inst.options;\n\t\tvar d = o.snapTolerance;\n\n\t\tvar x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (var i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tvar l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,\n\t\t\t\tt = inst.snapElements[i].top, b = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode != 'inner') {\n\t\t\t\tvar ts = Math.abs(t - y2) <= d;\n\t\t\t\tvar bs = Math.abs(b - y1) <= d;\n\t\t\t\tvar ls = Math.abs(l - x2) <= d;\n\t\t\t\tvar rs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tvar first = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode != 'outer') {\n\t\t\t\tvar ts = Math.abs(t - y1) <= d;\n\t\t\t\tvar bs = Math.abs(b - y2) <= d;\n\t\t\t\tvar ls = Math.abs(l - x1) <= d;\n\t\t\t\tvar rs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\tif(ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\tif(rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t};\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function(event, ui) {\n\n\t\tvar o = $(this).data(\"draggable\").options;\n\n\t\tvar group = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t});\n\t\tif (!group.length) { return; }\n\n\t\tvar min = parseInt(group[0].style.zIndex) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"draggable\").options;\n\t\tif(t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n\t\tt.css('zIndex', o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"draggable\").options;\n\t\tif(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n\t}\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.droppable\", {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: '*',\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: 'default',\n\t\ttolerance: 'intersect'\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options, accept = o.accept;\n\t\tthis.isover = 0; this.isout = 1;\n\n\t\tthis.accept = $.isFunction(accept) ? accept : function(d) {\n\t\t\treturn d.is(accept);\n\t\t};\n\n\t\t//Store the droppable's proportions\n\t\tthis.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n\t\t$.ui.ddmanager.droppables[o.scope].push(this);\n\n\t\t(o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[this.options.scope];\n\t\tfor ( var i = 0; i < drop.length; i++ )\n\t\t\tif ( drop[i] == this )\n\t\t\t\tdrop.splice(i, 1);\n\n\t\tthis.element.removeClass(\"ui-droppable ui-droppable-disabled\");\n\t},\n\n\t_setOption: function(key, value) {\n\n\t\tif(key == 'accept') {\n\t\t\tthis.accept = $.isFunction(value) ? value : function(d) {\n\t\t\t\treturn d.is(value);\n\t\t\t};\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\n\t_activate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.addClass(this.options.activeClass);\n\t\t(draggable && this._trigger('activate', event, this.ui(draggable)));\n\t},\n\n\t_deactivate: function(event) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t(draggable && this._trigger('deactivate', event, this.ui(draggable)));\n\t},\n\n\t_over: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n\t\t\tthis._trigger('over', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_out: function(event) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n\t\tif (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('out', event, this.ui(draggable));\n\t\t}\n\n\t},\n\n\t_drop: function(event,custom) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current;\n\t\tif (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n\t\tvar childrenIntersection = false;\n\t\tthis.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n\t\t\tvar inst = $.data(this, 'droppable');\n\t\t\tif(\n\t\t\t\tinst.options.greedy\n\t\t\t\t&& !inst.options.disabled\n\t\t\t\t&& inst.options.scope == draggable.options.scope\n\t\t\t\t&& inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))\n\t\t\t\t&& $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif(childrenIntersection) return false;\n\n\t\tif(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\tif(this.options.activeClass) this.element.removeClass(this.options.activeClass);\n\t\t\tif(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n\t\t\tthis._trigger('drop', event, this.ui(draggable));\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function(c) {\n\t\treturn {\n\t\t\tdraggable: (c.currentItem || c.element),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n\tif (!droppable.offset) return false;\n\n\tvar x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,\n\t\ty1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;\n\tvar l = droppable.offset.left, r = l + droppable.proportions.width,\n\t\tt = droppable.offset.top, b = t + droppable.proportions.height;\n\n\tswitch (toleranceMode) {\n\t\tcase 'fit':\n\t\t\treturn (l <= x1 && x2 <= r\n\t\t\t\t&& t <= y1 && y2 <= b);\n\t\t\tbreak;\n\t\tcase 'intersect':\n\t\t\treturn (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (draggable.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (draggable.helperProportions.height / 2) < b ); // Top Half\n\t\t\tbreak;\n\t\tcase 'pointer':\n\t\t\tvar draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n\t\t\t\tdraggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n\t\t\t\tisOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n\t\t\treturn isOver;\n\t\t\tbreak;\n\t\tcase 'touch':\n\t\t\treturn (\n\t\t\t\t\t(y1 >= t && y1 <= b) ||\t// Top edge touching\n\t\t\t\t\t(y2 >= t && y2 <= b) ||\t// Bottom edge touching\n\t\t\t\t\t(y1 < t && y2 > b)\t\t// Surrounded vertically\n\t\t\t\t) && (\n\t\t\t\t\t(x1 >= l && x1 <= r) ||\t// Left edge touching\n\t\t\t\t\t(x2 >= l && x2 <= r) ||\t// Right edge touching\n\t\t\t\t\t(x1 < l && x2 > r)\t\t// Surrounded horizontally\n\t\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t\t}\n\n};\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { 'default': [] },\n\tprepareOffsets: function(t, event) {\n\n\t\tvar m = $.ui.ddmanager.droppables[t.options.scope] || [];\n\t\tvar type = event ? event.type : null; // workaround for #2317\n\t\tvar list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n\t\tdroppablesLoop: for (var i = 0; i < m.length; i++) {\n\n\t\t\tif(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;\t//No disabled and non-accepted\n\t\t\tfor (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n\t\t\tm[i].visible = m[i].element.css(\"display\") != \"none\"; if(!m[i].visible) continue; \t\t\t\t\t\t\t\t\t//If the element is not visible, continue\n\n\t\t\tif(type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n\t\t\tm[i].offset = m[i].element.offset();\n\t\t\tm[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n\t\t}\n\n\t},\n\tdrop: function(draggable, event) {\n\n\t\tvar dropped = false;\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(!this.options) return;\n\t\t\tif (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n\t\t\t\tdropped = this._drop.call(this, event) || dropped;\n\n\t\t\tif (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {\n\t\t\t\tthis.isout = 1; this.isover = 0;\n\t\t\t\tthis._deactivate.call(this, event);\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t});\n\t},\n\tdrag: function(draggable, event) {\n\n\t\t//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n\t\t//Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n\t\t\tif(this.options.disabled || this.greedyChild || !this.visible) return;\n\t\t\tvar intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n\t\t\tvar c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n\t\t\tif(!c) return;\n\n\t\t\tvar parentInstance;\n\t\t\tif (this.options.greedy) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tvar scope = this.options.scope;\n\t\t\t\tvar parent = this.element.parents(':data(droppable)').filter(function () {\n\t\t\t\t\treturn $.data(this, 'droppable').options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif (parent.length) {\n\t\t\t\t\tparentInstance = $.data(parent[0], 'droppable');\n\t\t\t\t\tparentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif (parentInstance && c == 'isover') {\n\t\t\t\tparentInstance['isover'] = 0;\n\t\t\t\tparentInstance['isout'] = 1;\n\t\t\t\tparentInstance._out.call(parentInstance, event);\n\t\t\t}\n\n\t\t\tthis[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;\n\t\t\tthis[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif (parentInstance && c == 'isout') {\n\t\t\t\tparentInstance['isout'] = 0;\n\t\t\t\tparentInstance['isover'] = 1;\n\t\t\t\tparentInstance._over.call(parentInstance, event);\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar that = this, o = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n\t\t});\n\n\t\t//Wrap the element if it cannot hold child nodes\n\t\tif(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\t//Create a wrapper element and set the wrapper to the new current internal element\n\t\t\tthis.element.wrap(\n\t\t\t\t$('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n\t\t\t\t\tposition: this.element.css('position'),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css('top'),\n\t\t\t\t\tleft: this.element.css('left')\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t//Overwrite the original this.element\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"resizable\", this.element.data('resizable')\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\t//Move margins to the wrapper\n\t\t\tthis.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n\t\t\tthis.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});\n\n\t\t\t//Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css('resize');\n\t\t\tthis.originalElement.css('resize', 'none');\n\n\t\t\t//Push the actual element to our proportionallyResize internal array\n\t\t\tthis._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css('margin') });\n\n\t\t\t// fix handlers offset\n\t\t\tthis._proportionallyResize();\n\n\t\t}\n\n\t\tthis.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n\t\tif(this.handles.constructor == String) {\n\n\t\t\tif(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n\t\t\tvar n = this.handles.split(\",\"); this.handles = {};\n\n\t\t\tfor(var i = 0; i < n.length; i++) {\n\n\t\t\t\tvar handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;\n\t\t\t\tvar axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n\t\t\t\t// Apply zIndex to all handles - see #7960\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t//TODO : What's going on here?\n\t\t\t\tif ('se' == handle) {\n\t\t\t\t\taxis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n\t\t\t\t};\n\n\t\t\t\t//Insert into internal handles object and append to element\n\t\t\t\tthis.handles[handle] = '.ui-resizable-'+handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor(var i in this.handles) {\n\n\t\t\t\tif(this.handles[i].constructor == String)\n\t\t\t\t\tthis.handles[i] = $(this.handles[i], this.element).show();\n\n\t\t\t\t//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\tvar axis = $(this.handles[i], this.element), padWrapper = 0;\n\n\t\t\t\t\t//Checking the correct pad and border\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\t//The padding type i have to apply...\n\t\t\t\t\tvar padPos = [ 'padding',\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? 'Top' :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? 'Bottom' :\n\t\t\t\t\t\t/^e$/.test(i) ? 'Right' : 'Left' ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t//TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif(!$(this.handles[i]).length)\n\t\t\t\t\tcontinue;\n\n\t\t\t}\n\t\t};\n\n\t\t//TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $('.ui-resizable-handle', this.element)\n\t\t\t.disableSelection();\n\n\t\t//Matching axis name\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className)\n\t\t\t\t\tvar axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t//Axis, default = se\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : 'se';\n\t\t\t}\n\t\t});\n\n\t\t//If we want to auto hide the elements\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function(){\n\t\t\t\t\tif (o.disabled) return;\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t//Initialize the mouse interaction\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar _destroy = function(exp) {\n\t\t\t$(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t.removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n\t\t};\n\n\t\t//TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\tvar wrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css('position'),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css('top'),\n\t\t\t\tleft: wrapper.css('left')\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css('resize', this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar handle = false;\n\t\tfor (var i in this.handles) {\n\t\t\tif ($(this.handles[i])[0] == event.target) {\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && handle;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options, iniPos = this.element.position(), el = this.element;\n\n\t\tthis.resizing = true;\n\t\tthis.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n\t\t// bugfix for http://dev.jquery.com/ticket/1749\n\t\tif (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n\t\t\tel.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n\t\t}\n\n\t\tthis._renderProxy();\n\n\t\tvar curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\t//Store needed variables\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\t\tthis.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\t//Aspect Ratio\n\t\tthis.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tvar cursor = $('.ui-resizable-' + this.axis).css('cursor');\n\t\t$('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Increase performance, avoid regex\n\t\tvar el = this.helper, o = this.options, props = {},\n\t\t\tthat = this, smp = this.originalMousePosition, a = this.axis;\n\n\t\tvar dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;\n\t\tvar trigger = this._change[a];\n\t\tif (!trigger) return false;\n\n\t\t// Calculate the attrs that will be change\n\t\tvar data = trigger.apply(this, [event, dx, dy]);\n\n\t\t// Put this in the mouseDrag handler since the user can start pressing shift while resizing\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey)\n\t\t\tdata = this._updateRatio(data, event);\n\n\t\tdata = this._respectSize(data, event);\n\n\t\t// plugins callbacks need to be called first\n\t\tthis._propagate(\"resize\", event);\n\n\t\tel.css({\n\t\t\ttop: this.position.top + \"px\", left: this.position.left + \"px\",\n\t\t\twidth: this.size.width + \"px\", height: this.size.height + \"px\"\n\t\t});\n\n\t\tif (!this._helper && this._proportionallyResizeElements.length)\n\t\t\tthis._proportionallyResize();\n\n\t\tthis._updateCache(data);\n\n\t\t// calling the user callback at the end\n\t\tthis._trigger('resize', event, this.ui());\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar o = this.options, that = this;\n\n\t\tif(this._helper) {\n\t\t\tvar pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\tvar s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) },\n\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate)\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) this._proportionallyResize();\n\t\t}\n\n\t\t$('body').css('cursor', 'auto');\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) this.helper.remove();\n\t\treturn false;\n\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n\t\tb = {\n\t\t\tminWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif(this._aspectRatio || forceAspectRatio) {\n\t\t\t// We want to create an enclosing box whose aspect ration is the requested one\n\t\t\t// First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif(pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n\t\t\tif(pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n\t\t\tif(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n\t\t\tif(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tvar o = this.options;\n\t\tthis.offset = this.helper.offset();\n\t\tif (isNumber(data.left)) this.position.left = data.left;\n\t\tif (isNumber(data.top)) this.position.top = data.top;\n\t\tif (isNumber(data.height)) this.size.height = data.height;\n\t\tif (isNumber(data.width)) this.size.width = data.width;\n\t},\n\n\t_updateRatio: function(data, event) {\n\n\t\tvar o = this.options, cpos = this.position, csize = this.size, a = this.axis;\n\n\t\tif (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n\t\telse if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n\t\tif (a == 'sw') {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a == 'nw') {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function(data, event) {\n\n\t\tvar el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,\n\t\t\t\tismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\t\t\tisminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n\t\tif (isminw) data.width = o.minWidth;\n\t\tif (isminh) data.height = o.minHeight;\n\t\tif (ismaxw) data.width = o.maxWidth;\n\t\tif (ismaxh) data.height = o.maxHeight;\n\n\t\tvar dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;\n\t\tvar cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\n\t\tif (isminw && cw) data.left = dw - o.minWidth;\n\t\tif (ismaxw && cw) data.left = dw - o.maxWidth;\n\t\tif (isminh && ch)\tdata.top = dh - o.minHeight;\n\t\tif (ismaxh && ch)\tdata.top = dh - o.maxHeight;\n\n\t\t// fixing jump error on top/left - bug #2330\n\t\tvar isNotwh = !data.width && !data.height;\n\t\tif (isNotwh && !data.left && data.top) data.top = null;\n\t\telse if (isNotwh && !data.top && data.left) data.left = null;\n\n\t\treturn data;\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tvar o = this.options;\n\t\tif (!this._proportionallyResizeElements.length) return;\n\t\tvar element = this.helper || this.element;\n\n\t\tfor (var i=0; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tvar prel = this._proportionallyResizeElements[i];\n\n\t\t\tif (!this.borderDif) {\n\t\t\t\tvar b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n\t\t\t\t\tp = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n\t\t\t\tthis.borderDif = $.map(b, function(v, i) {\n\t\t\t\t\tvar border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;\n\t\t\t\t\treturn border + padding;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n\t\t\t\twidth: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n\t\t\t});\n\n\t\t};\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif(this._helper) {\n\n\t\t\tthis.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n\t\t\t// fix ie6 offset TODO: This seems broken\n\t\t\tvar ie6offset = ($.ui.ie6 ? 1 : 0),\n\t\t\tpxyoffset = ( $.ui.ie6 ? 2 : -1 );\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() + pxyoffset,\n\t\t\t\theight: this.element.outerHeight() + pxyoffset,\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: this.elementOffset.left - ie6offset +'px',\n\t\t\t\ttop: this.elementOffset.top - ie6offset +'px',\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx, dy) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar o = this.options, cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [event, this.ui()]);\n\t\t(n != \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar _store = function (exp) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this);\n\t\t\t\tel.data(\"resizable-alsoresize\", {\n\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\tleft: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }\n\t\t\telse { $.each(o.alsoResize, function (exp) { _store(exp); }); }\n\t\t}else{\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function (event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, os = that.originalSize, op = that.originalPosition;\n\n\t\tvar delta = {\n\t\t\theight: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,\n\t\t\ttop: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0\n\t\t},\n\n\t\t_alsoResize = function (exp, c) {\n\t\t\t$(exp).each(function() {\n\t\t\t\tvar el = $(this), start = $(this).data(\"resizable-alsoresize\"), style = {},\n\t\t\t\t\tcss = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n\t\t\t\t$.each(css, function (i, prop) {\n\t\t\t\t\tvar sum = (start[prop]||0) + (delta[prop]||0);\n\t\t\t\t\tif (sum && sum >= 0)\n\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t});\n\n\t\t\t\tel.css(style);\n\t\t\t});\n\t\t};\n\n\t\tif (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });\n\t\t}else{\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function (event, ui) {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\n\t\tvar pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\t\t\tsoffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : that.sizeDiff.height,\n\t\t\t\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\tvar style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\t\t\tleft = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null,\n\t\t\t\t\t\ttop = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css('width'), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css('height'), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css('top'), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css('left'), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"containment\", {\n\n\tstart: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, el = that.element;\n\t\tvar oc = o.containment,\tce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n\t\tif (!ce) return;\n\n\t\tthat.containerElement = $(ce);\n\n\t\tif (/document/.test(oc) || oc == document) {\n\t\t\tthat.containerOffset = { left: 0, top: 0 };\n\t\t\tthat.containerPosition = { left: 0, top: 0 };\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $(document), left: 0, top: 0,\n\t\t\t\twidth: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t}\n\n\t\t// i'm a node, so compute top, left, right, bottom\n\t\telse {\n\t\t\tvar element = $(ce), p = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n\t\t\tvar co = that.containerOffset, ch = that.containerSize.height,\tcw = that.containerSize.width,\n\t\t\t\t\t\twidth = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce, left: co.left, top: co.top, width: width, height: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options,\n\t\t\t\tps = that.containerSize, co = that.containerOffset, cs = that.size, cp = that.position,\n\t\t\t\tpRatio = that._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = that.containerElement;\n\n\t\tif (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n\t\tif (cp.left < (that._helper ? co.left : 0)) {\n\t\t\tthat.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif (cp.top < (that._helper ? co.top : 0)) {\n\t\t\tthat.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tthat.offset.left = that.parentData.left+that.position.left;\n\t\tthat.offset.top = that.parentData.top+that.position.top;\n\n\t\tvar woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width ),\n\t\t\t\t\thoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );\n\n\t\tvar isParent = that.containerElement.get(0) == that.element.parent().get(0),\n\t\t\tisOffsetRelative = /relative|absolute/.test(that.containerElement.css('position'));\n\n\t\tif(isParent && isOffsetRelative) woset -= that.parentData.left;\n\n\t\tif (woset + that.size.width >= that.parentData.width) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif (pRatio) that.size.height = that.size.width / that.aspectRatio;\n\t\t}\n\n\t\tif (hoset + that.size.height >= that.parentData.height) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif (pRatio) that.size.width = that.size.height * that.aspectRatio;\n\t\t}\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cp = that.position,\n\t\t\t\tco = that.containerOffset, cop = that.containerPosition, ce = that.containerElement;\n\n\t\tvar helper = $(that.helper), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif (that._helper && !o.animate && (/relative/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t\tif (that._helper && !o.animate && (/static/).test(ce.css('position')))\n\t\t\t$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function(event, ui) {\n\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n\t\t\t.addClass('ui-resizable-ghost')\n\t\t\t.addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost) that.ghost.css({ position: 'relative', height: that.size.height, width: that.size.width });\n\t},\n\n\tstop: function(event, ui){\n\t\tvar that = $(this).data(\"resizable\"), o = that.options;\n\t\tif (that.ghost && that.helper) that.helper.get(0).removeChild(that.ghost.get(0));\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).data(\"resizable\"), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, ratio = o._aspectRatio || event.shiftKey;\n\t\to.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n\t\tvar ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t}\n\t\telse if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t}\n\t\telse if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t\telse {\n\t\t\tthat.size.width = os.width + ox;\n\t\t\tthat.size.height = os.height + oy;\n\t\t\tthat.position.top = op.top - oy;\n\t\t\tthat.position.left = op.left - ox;\n\t\t}\n\t}\n\n});\n\nvar num = function(v) {\n\treturn parseInt(v, 10) || 0;\n};\n\nvar isNumber = function(value) {\n\treturn !isNaN(parseInt(value, 10));\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tappendTo: 'body',\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: '*',\n\t\ttolerance: 'touch'\n\t},\n\t_create: function() {\n\t\tvar that = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tvar selectees;\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar pos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass('ui-selected'),\n\t\t\t\t\tselecting: $this.hasClass('ui-selecting'),\n\t\t\t\t\tunselecting: $this.hasClass('ui-unselecting')\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this;\n\n\t\tthis.opos = [event.pageX, event.pageY];\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.clientX,\n\t\t\t\"top\": event.clientY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter('.ui-selected').each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().andSelf().each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tvar doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar that = this;\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled)\n\t\t\treturn;\n\n\t\tvar options = this.options;\n\n\t\tvar x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;\n\t\tif (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element == that.element[0])\n\t\t\t\treturn;\n\t\t\tvar hit = false;\n\t\t\tif (options.tolerance == 'touch') {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance == 'fit') {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass('ui-selecting');\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selecting');\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass('ui-selected');\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass('ui-unselecting');\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\tvar options = this.options;\n\n\t\t$('.ui-unselecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-unselecting');\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$('.ui-selecting', this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items form other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this moving items in \"sub-sortables\" can cause the placeholder to jitter\n\t\t\t// beetween the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) continue;\n\n\t\t\tif (itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t   this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == item.item[0])\n\t\t\t\t\treturn false;\n\t\t\t};\n\t\t\treturn true;\n\t\t});\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null;\n\t\t\tvar posProperty = this.containers[innermostIndex].floating ? 'left' : 'top';\n\t\t\tvar sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height';\n\t\t\tvar base = this.positionAbs[posProperty] + this.offset.click[posProperty];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tif(this.items[j].item[0] == this.currentItem[0]) continue;\n\t\t\t\tvar cur = this.items[j].item.offset()[posProperty];\n\t\t\t\tvar nearBottom = false;\n\t\t\t\tif(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t\tcur += this.items[j][sizeProperty];\n\t\t\t\t}\n\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); };  }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this));  }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); };  }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\n\t\t\tthis.fromOutside = false;\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uid = 0,\n\thideProps = {},\n\tshowProps = {};\n\nhideProps.height = hideProps.paddingTop = hideProps.paddingBottom =\n\thideProps.borderTopWidth = hideProps.borderBottomWidth = \"hide\";\nshowProps.height = showProps.paddingTop = showProps.paddingBottom =\n\tshowProps.borderTopWidth = showProps.borderBottomWidth = \"show\";\n\n$.widget( \"ui.accordion\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\t_create: function() {\n\t\tvar accordionId = this.accordionId = \"ui-accordion-\" +\n\t\t\t\t(this.element.attr( \"id\" ) || ++uid),\n\t\t\toptions = this.options;\n\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" );\n\n\t\tthis.headers = this.element.find( options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all\" );\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\n\t\tthis.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.hide();\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active\" )\n\t\t\t.toggleClass( \"ui-corner-all ui-corner-top\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis._createIcons();\n\t\tthis.refresh();\n\n\t\t// ARIA\n\t\tthis.element.attr( \"role\", \"tablist\" );\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function( i ) {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.attr( \"id\" );\n\t\t\t\tif ( !headerId ) {\n\t\t\t\t\theaderId = accordionId + \"-header-\" + i;\n\t\t\t\t\theader.attr( \"id\", headerId );\n\t\t\t\t}\n\t\t\t\tif ( !panelId ) {\n\t\t\t\t\tpanelId = accordionId + \"-panel-\" + i;\n\t\t\t\t\tpanel.attr( \"id\", panelId );\n\t\t\t\t}\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._on( this.headers, { keydown: \"_keydown\" });\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._setupEvents( options.event );\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tcontent: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.each(function() {\n\t\t\t\tif ( /^ui-accordion/.test( this.id ) ) {\n\t\t\t\t\tthis.removeAttribute( \"id\" );\n\t\t\t\t}\n\t\t\t});\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown : function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar maxHeight, overflow,\n\t\t\theightStyle = this.options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t});\n\t\tthis._on( this.headers, events );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t})\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[0].className = toHide.parent()[0].className;\n\t\t}\n\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\t// navigation options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tnavigation: false,\n\t\t\tnavigationFilter: function() {\n\t\t\t\treturn this.href.toLowerCase() === location.href.toLowerCase();\n\t\t\t}\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tif ( this.options.navigation ) {\n\t\t\t\tvar that = this,\n\t\t\t\t\theaders = this.element.find( this.options.header ),\n\t\t\t\t\tcontent = headers.next(),\n\t\t\t\t\tcurrent = headers.add( content )\n\t\t\t\t\t\t.find( \"a\" )\n\t\t\t\t\t\t.filter( this.options.navigationFilter )\n\t\t\t\t\t\t[ 0 ];\n\t\t\t\tif ( current ) {\n\t\t\t\t\theaders.add( content ).each( function( index ) {\n\t\t\t\t\t\tif ( $.contains( this, current ) ) {\n\t\t\t\t\t\t\tthat.options.active = Math.floor( index / 2 );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// height options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\theightStyle: null, // remove default so we fall back to old values\n\t\t\tautoHeight: true, // use heightStyle: \"auto\"\n\t\t\tclearStyle: false, // use heightStyle: \"content\"\n\t\t\tfillSpace: false // use heightStyle: \"fill\"\n\t\t});\n\n\t\tvar _create = prototype._create,\n\t\t\t_setOption = prototype._setOption;\n\n\t\t$.extend( prototype, {\n\t\t\t_create: function() {\n\t\t\t\tthis.options.heightStyle = this.options.heightStyle ||\n\t\t\t\t\tthis._mergeHeightStyle();\n\n\t\t\t\t_create.call( this );\n\t\t\t},\n\n\t\t\t_setOption: function( key ) {\n\t\t\t\tif ( key === \"autoHeight\" || key === \"clearStyle\" || key === \"fillSpace\" ) {\n\t\t\t\t\tthis.options.heightStyle = this._mergeHeightStyle();\n\t\t\t\t}\n\t\t\t\t_setOption.apply( this, arguments );\n\t\t\t},\n\n\t\t\t_mergeHeightStyle: function() {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\tif ( options.fillSpace ) {\n\t\t\t\t\treturn \"fill\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.clearStyle ) {\n\t\t\t\t\treturn \"content\";\n\t\t\t\t}\n\n\t\t\t\tif ( options.autoHeight ) {\n\t\t\t\t\treturn \"auto\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// icon options\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options.icons, {\n\t\t\tactiveHeader: null, // remove default so we fall back to old values\n\t\t\theaderSelected: \"ui-icon-triangle-1-s\"\n\t\t});\n\n\t\tvar _createIcons = prototype._createIcons;\n\t\tprototype._createIcons = function() {\n\t\t\tif ( this.options.icons ) {\n\t\t\t\tthis.options.icons.activeHeader = this.options.icons.activeHeader ||\n\t\t\t\t\tthis.options.icons.headerSelected;\n\t\t\t}\n\t\t\t_createIcons.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// expanded active option, activate method\n\t(function( $, prototype ) {\n\t\tprototype.activate = prototype._activate;\n\n\t\tvar _findActive = prototype._findActive;\n\t\tprototype._findActive = function( index ) {\n\t\t\tif ( index === -1 ) {\n\t\t\t\tindex = false;\n\t\t\t}\n\t\t\tif ( index && typeof index !== \"number\" ) {\n\t\t\t\tindex = this.headers.index( this.headers.filter( index ) );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tindex = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn _findActive.call( this, index );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// resize method\n\tjQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh;\n\n\t// change events\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tchange: null,\n\t\t\tchangestart: null\n\t\t});\n\n\t\tvar _trigger = prototype._trigger;\n\t\tprototype._trigger = function( type, event, data ) {\n\t\t\tvar ret = _trigger.apply( this, arguments );\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\tret = _trigger.call( this, \"changestart\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" ) {\n\t\t\t\tret = _trigger.call( this, \"change\", event, {\n\t\t\t\t\toldHeader: data.oldHeader,\n\t\t\t\t\toldContent: data.oldPanel,\n\t\t\t\t\tnewHeader: data.newHeader,\n\t\t\t\t\tnewContent: data.newPanel\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n\n\t// animated option\n\t// NOTE: this only provides support for \"slide\", \"bounceslide\", and easings\n\t// not the full $.ui.accordion.animations API\n\t(function( $, prototype ) {\n\t\t$.extend( prototype.options, {\n\t\t\tanimate: null,\n\t\t\tanimated: \"slide\"\n\t\t});\n\n\t\tvar _create = prototype._create;\n\t\tprototype._create = function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.animate === null ) {\n\t\t\t\tif ( !options.animated ) {\n\t\t\t\t\toptions.animate = false;\n\t\t\t\t} else if ( options.animated === \"slide\" ) {\n\t\t\t\t\toptions.animate = 300;\n\t\t\t\t} else if ( options.animated === \"bounceslide\" ) {\n\t\t\t\t\toptions.animate = {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tdown: {\n\t\t\t\t\t\t\teasing: \"easeOutBounce\",\n\t\t\t\t\t\t\tduration: 1000\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toptions.animate = options.animated;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_create.call( this );\n\t\t};\n\t}( jQuery, jQuery.ui.accordion.prototype ) );\n}\n\n})( jQuery );\n(function( $, undefined ) {\n\n// used to prevent race conditions with remote data sources\nvar requestIndex = 0;\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput;\n\n\t\tthis.isMultiLine = this._isMultiLine();\n\t\tthis.valueMethod = this.element[ this.element.is( \"input,textarea\" ) ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\tcase keyCode.NUMPAD_ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete\" )\n\t\t\t.appendTo( this.document.find( this.options.appendTo || \"body\" )[ 0 ] )\n\t\t\t.menu({\n\t\t\t\t// custom key handling for now\n\t\t\t\tinput: $(),\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.zIndex( this.element.zIndex() + 1 )\n\t\t\t.hide()\n\t\t\t.data( \"menu\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\t// #7024 - Prevent accidental activation of menu items in Firefox\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Normally the input is populated with the item's value as the\n\t\t\t\t\t// menu is navigated, causing screen readers to notice a change and\n\t\t\t\t\t// announce the item. Since the focus event was canceled, this doesn't\n\t\t\t\t\t// happen, so we update the live region so that screen readers can\n\t\t\t\t\t// still notice the change and announce it.\n\t\t\t\t\tthis.liveRegion.text( item.value );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\t// back compat for _renderItem using item.autocomplete, via #7810\n\t\t\t\t// TODO remove the fallback, see #8156\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ) || ui.item.data( \"item.autocomplete\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[0] !== this.document[0].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"polite\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.insertAfter( this.element );\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tthis.menu.element.bgiframe();\n\t\t}\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this.document.find( value || \"body\" )[0] );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isMultiLine: function() {\n\t\t// Textareas are always multi-line\n\t\tif ( this.element.is( \"textarea\" ) ) {\n\t\t\treturn true;\n\t\t}\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\tif ( this.element.is( \"input\" ) ) {\n\t\t\treturn false;\n\t\t}\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\treturn this.element.prop( \"isContentEditable\" );\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray(this.options.source) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\t\t\t// only search if the value has changed\n\t\t\tif ( this.term !== this._value() ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar that = this,\n\t\t\tindex = ++requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === requestIndex ) {\n\t\t\t\tthat.__response( content );\n\t\t\t}\n\n\t\t\tthat.pending--;\n\t\t\tif ( !that.pending ) {\n\t\t\t\tthat.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t};\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[0].label && items[0].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend({\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t}, item );\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element\n\t\t\t.empty()\n\t\t\t.zIndex( this.element.zIndex() + 1 );\n\t\tthis._renderMenu( ul, items );\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ));\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<a>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\t\t\tthis._value( this.term );\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n\t},\n\tfilter: function(array, term) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), \"i\" );\n\t\treturn $.grep( array, function(value) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.text( message );\n\t}\n});\n\n\n}( jQuery ));\n(function( $, undefined ) {\n\nvar lastActive, startXPos, startYPos, clickDragged,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\tstateClasses = \"ui-state-hover ui-state-active \",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar buttons = $( this ).find( \":ui-button\" );\n\t\tsetTimeout(function() {\n\t\t\tbuttons.button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"']\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"']\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\",\n\t\t\tfocusClass = \"ui-state-focus\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.element\n\t\t\t.bind( \"focus\" + this.eventNamespace, function() {\n\t\t\t\t// no need to check disabled, focus won't be triggered anyway\n\t\t\t\tthat.buttonElement.addClass( focusClass );\n\t\t\t})\n\t\t\t.bind( \"blur\" + this.eventNamespace, function() {\n\t\t\t\tthat.buttonElement.removeClass( focusClass );\n\t\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tif ( clickDragged ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t\t// if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n\t\t\t// prevents issue where button state changes but checkbox/radio checked state\n\t\t\t// does not in Firefox (see ticket #6970)\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclickDragged = false;\n\t\t\t\t\tstartXPos = event.pageX;\n\t\t\t\t\tstartYPos = event.pageY;\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function( event ) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( startXPos !== event.pageX || startYPos !== event.pageY ) {\n\t\t\t\t\t\tclickDragged = true;\n\t\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).toggleClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", that.element[0].checked );\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled || clickDragged ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// TODO: pull out $.Widget's handling for the disabled option into\n\t\t// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n\t\t// be overridden by individual plugins\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" \" + stateClasses + \" \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\";\n\n\t\tthis.buttons = this.element.find( this.options.items )\n\t\t\t.filter( \":ui-button\" )\n\t\t\t\t.button( \"refresh\" )\n\t\t\t.end()\n\t\t\t.not( \":ui-button\" )\n\t\t\t\t.button()\n\t\t\t.end()\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\n$.extend($.ui, { datepicker: { version: \"1.9.2\" } });\n\nvar PROP_NAME = 'datepicker';\nvar dpuuid = new Date().getTime();\nvar instActive;\n\n/* Date picker manager.\n   Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n   Settings for (groups of) date pickers are maintained in an instance object,\n   allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis.debug = false; // Change this to true to start debugging\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division\n\tthis._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class\n\tthis._appendClass = 'ui-datepicker-append'; // The name of the append marker class\n\tthis._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class\n\tthis._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class\n\tthis._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class\n\tthis._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class\n\tthis._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class\n\tthis._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[''] = { // Default regional settings\n\t\tcloseText: 'Done', // Display text for close link\n\t\tprevText: 'Prev', // Display text for previous month link\n\t\tnextText: 'Next', // Display text for next month link\n\t\tcurrentText: 'Today', // Display text for current month link\n\t\tmonthNames: ['January','February','March','April','May','June',\n\t\t\t'July','August','September','October','November','December'], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting\n\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting\n\t\tdayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting\n\t\tdayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday\n\t\tweekHeader: 'Wk', // Column header for week of the year\n\t\tdateFormat: 'mm/dd/yy', // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: '' // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: 'focus', // 'focus' for popup on focus,\n\t\t\t// 'button' for trigger button, or 'both' for either\n\t\tshowAnim: 'fadeIn', // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: '', // Display text following the input box, e.g. showing the format\n\t\tbuttonText: '...', // Text for trigger button\n\t\tbuttonImage: '', // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: 'c-10:c+10', // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: '+10', // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with '+' for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: 'fast', // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: '', // Selector for an alternate field to store selected dates into\n\t\taltFormat: '', // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional['']);\n\tthis.dpDiv = bindHover($('<div id=\"' + this._mainDivId + '\" class=\"ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>'));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: 'hasDatepicker',\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t/* Debug logging (if enabled). */\n\tlog: function () {\n\t\tif (this.debug)\n\t\t\tconsole.log.apply('', arguments);\n\t},\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t   @param  settings  object - the new settings to use as defaults (anonymous object)\n\t   @return the manager object */\n\tsetDefaults: function(settings) {\n\t\textendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span\n\t   @param  settings  object - the new settings to use for this date picker instance (anonymous) */\n\t_attachDatepicker: function(target, settings) {\n\t\t// check for settings on the control itself - in namespace 'date:'\n\t\tvar inlineSettings = null;\n\t\tfor (var attrName in this._defaults) {\n\t\t\tvar attrValue = target.getAttribute('date:' + attrName);\n\t\t\tif (attrValue) {\n\t\t\t\tinlineSettings = inlineSettings || {};\n\t\t\t\ttry {\n\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tvar inline = (nodeName == 'div' || nodeName == 'span');\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = 'dp' + this.uuid;\n\t\t}\n\t\tvar inst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {}, inlineSettings || {});\n\t\tif (nodeName == 'input') {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\\\\\$1'); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tbindHover($('<div class=\"' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\"></div>')))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value) {\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key) {\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\tthis._autoSize(inst);\n\t\t$.data(target, PROP_NAME, inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar appendText = this._get(inst, 'appendText');\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tif (inst.append)\n\t\t\tinst.append.remove();\n\t\tif (appendText) {\n\t\t\tinst.append = $('<span class=\"' + this._appendClass + '\">' + appendText + '</span>');\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.append);\n\t\t}\n\t\tinput.unbind('focus', this._showDatepicker);\n\t\tif (inst.trigger)\n\t\t\tinst.trigger.remove();\n\t\tvar showOn = this._get(inst, 'showOn');\n\t\tif (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\tif (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked\n\t\t\tvar buttonText = this._get(inst, 'buttonText');\n\t\t\tvar buttonImage = this._get(inst, 'buttonImage');\n\t\t\tinst.trigger = $(this._get(inst, 'buttonImageOnly') ?\n\t\t\t\t$('<img/>').addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$('<button type=\"button\"></button>').addClass(this._triggerClass).\n\t\t\t\t\thtml(buttonImage == '' ? buttonText : $('<img/>').attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? 'before' : 'after'](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\telse if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, 'autoSize') && !inst.inline) {\n\t\t\tvar date = new Date(2009, 12 - 1, 20); // Ensure double digits\n\t\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tvar findMax = function(names) {\n\t\t\t\t\tvar max = 0;\n\t\t\t\t\tvar maxI = 0;\n\t\t\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t'monthNames' : 'monthNamesShort'))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr('size', this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName))\n\t\t\treturn;\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv).\n\t\t\tbind(\"setData.datepicker\", function(event, key, value){\n\t\t\t\tinst.settings[key] = value;\n\t\t\t}).bind(\"getData.datepicker\", function(event, key){\n\t\t\t\treturn this._get(inst, key);\n\t\t\t});\n\t\t$.data(target, PROP_NAME, inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t   @param  input     element - ignored\n\t   @param  date      string or Date - the initial date to display\n\t   @param  onSelect  function - the function to call when a date is selected\n\t   @param  settings  object - update the dialog date picker instance's settings (anonymous object)\n\t   @param  pos       int[2] - coordinates for the dialog's position within the screen or\n\t                     event - with x/y coordinates or\n\t                     leave empty for default (screen centre)\n\t   @return the manager object */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar inst = this._dialogInst; // internal instance\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tvar id = 'dp' + this.uuid;\n\t\t\tthis._dialogInput = $('<input type=\"text\" id=\"' + id +\n\t\t\t\t'\" style=\"position: absolute; top: -100px; width: 0px;\"/>');\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$('body').append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\t}\n\t\textendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor == Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tvar browserWidth = document.documentElement.clientWidth;\n\t\t\tvar browserHeight = document.documentElement.clientHeight;\n\t\t\tvar scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tvar scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI)\n\t\t\t$.blockUI(this.dpDiv);\n\t\t$.data(this._dialogInput[0], PROP_NAME, inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t   @param  target    element - the target input field or division or span */\n\t_destroyDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, PROP_NAME);\n\t\tif (nodeName == 'input') {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind('focus', this._showDatepicker).\n\t\t\t\tunbind('keydown', this._doKeyDown).\n\t\t\t\tunbind('keypress', this._doKeyPress).\n\t\t\t\tunbind('keyup', this._doKeyUp);\n\t\t} else if (nodeName == 'div' || nodeName == 'span')\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_enableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter('img').css({opacity: '1.0', cursor: ''});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().removeClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t   @param  target    element - the target input field or division or span */\n\t_disableDatepicker: function(target) {\n\t\tvar $target = $(target);\n\t\tvar inst = $.data(target, PROP_NAME);\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tvar nodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName == 'input') {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter('button').\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter('img').css({opacity: '0.5', cursor: 'default'});\n\t\t}\n\t\telse if (nodeName == 'div' || nodeName == 'span') {\n\t\t\tvar inline = $target.children('.' + this._inlineClass);\n\t\t\tinline.children().addClass('ui-state-disabled');\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value == target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t   @param  target    element - the target input field or division or span\n\t   @return boolean - true if disabled, false if enabled */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] == target)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t   @param  target  element - the target input field or division or span\n\t   @return  object - the associated instance data\n\t   @throws  error if a jQuery problem getting data */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, PROP_NAME);\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow 'Missing instance data for this datepicker';\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span\n\t   @param  name    object - the new settings to update or\n\t                   string - the name of the setting to change or retrieve,\n\t                   when retrieving also 'all' for all instance settings or\n\t                   'defaults' for all global defaults\n\t   @param  value   any - the new value for the setting\n\t                   (omit if above is an object or to retrieve a value) */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar inst = this._getInst(target);\n\t\tif (arguments.length == 2 && typeof name == 'string') {\n\t\t\treturn (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name == 'all' ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\t\tvar settings = name || {};\n\t\tif (typeof name == 'string') {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\t\tif (inst) {\n\t\t\tif (this._curInst == inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\t\t\tvar date = this._getDateDatepicker(target, true);\n\t\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\t\textendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined)\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\tif (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined)\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t   @param  target  element - the target input field or division or span */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t   @param  target   element - the target input field or division or span\n\t   @param  date     Date - the new date */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t   @param  target     element - the target input field or division or span\n\t   @param  noDefault  boolean - true if no default date is to be used\n\t   @return Date - the current date */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline)\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tvar handled = true;\n\t\tvar isRTL = inst.dpDiv.is('.ui-datepicker-rtl');\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing)\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + ')', inst.dpDiv);\n\t\t\t\t\t\tif (sel[0])\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t\tvar onSelect = $.datepicker._get(inst, 'onSelect');\n\t\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\t\tvar dateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\t\t\tbreak; // select the value on enter\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t-$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepBigMonths') :\n\t\t\t\t\t\t\t\t\t+$.datepicker._get(inst, 'stepMonths')), 'M');\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\telse if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\telse {\n\t\t\thandled = false;\n\t\t}\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\tvar chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));\n\t\t\tvar chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar inst = $.datepicker._getInst(event.target);\n\t\tif (inst.input.val() != inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tvar date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\t$.datepicker.log(err);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t   If false returned from beforeShow event handler do not show.\n\t   @param  input  element - the input field attached to the date picker or\n\t                  event - if triggered by focus */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() != 'input') // find from button/image trigger\n\t\t\tinput = $('input', input.parentNode)[0];\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here\n\t\t\treturn;\n\t\tvar inst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst != inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\t\tvar beforeShow = $.datepicker._get(inst, 'beforeShow');\n\t\tvar beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\t//false\n\t\t\treturn;\n\t\t}\n\t\textendRemove(inst.settings, beforeShowSettings);\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\t\tif ($.datepicker._inDialog) // hide cursor\n\t\t\tinput.value = '';\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\t\tvar isFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css('position') == 'fixed';\n\t\t\treturn !isFixed;\n\t\t});\n\t\tvar offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',\n\t\t\tleft: offset.left + 'px', top: offset.top + 'px'});\n\t\tif (!inst.inline) {\n\t\t\tvar showAnim = $.datepicker._get(inst, 'showAnim');\n\t\t\tvar duration = $.datepicker._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\t\t\tif( !! cover.length ){\n\t\t\t\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\t\t\t\tcover.css({left: -borders[0], top: -borders[1],\n\t\t\t\t\t\twidth: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});\n\t\t\t\t}\n\t\t\t};\n\t\t\tinst.dpDiv.zIndex($(input).zIndex()+1);\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim || !duration)\n\t\t\t\tpostProcess();\n\t\t\tif (inst.input.is(':visible') && !inst.input.is(':disabled'))\n\t\t\t\tinst.input.focus();\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tvar borders = $.datepicker._getBorders(inst.dpDiv);\n\t\tinstActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\t\tvar cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only\n\t\tif( !!cover.length ){ //avoid call to outerXXXX() when not in IE6\n\t\t\tcover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})\n\t\t}\n\t\tinst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover();\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar cols = numMonths[1];\n\t\tvar width = 17;\n\t\tinst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');\n\t\tif (cols > 1)\n\t\t\tinst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');\n\t\tinst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-multi');\n\t\tinst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +\n\t\t\t'Class']('ui-datepicker-rtl');\n\t\tif (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&\n\t\t\t\t// #6694 - don't focus the input if it's already focused\n\t\t\t\t// this breaks the change event in IE\n\t\t\t\tinst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)\n\t\t\tinst.input.focus();\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\tvar origyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t/* Retrieve the size of left and top borders for an element.\n\t   @param  elem  (jQuery object) the element of interest\n\t   @return  (number[2]) the left and top borders */\n\t_getBorders: function(elem) {\n\t\tvar convert = function(value) {\n\t\t\treturn {thin: 1, medium: 2, thick: 3}[value] || value;\n\t\t};\n\t\treturn [parseFloat(convert(elem.css('border-left-width'))),\n\t\t\tparseFloat(convert(elem.css('border-top-width')))];\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth();\n\t\tvar dpHeight = inst.dpDiv.outerHeight();\n\t\tvar inputWidth = inst.input ? inst.input.outerWidth() : 0;\n\t\tvar inputHeight = inst.input ? inst.input.outerHeight() : 0;\n\t\tvar viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft());\n\t\tvar viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar inst = this._getInst(obj);\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\twhile (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? 'previousSibling' : 'nextSibling'];\n\t\t}\n\t\tvar position = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t   @param  input  element - the input field attached to the date picker */\n\t_hideDatepicker: function(input) {\n\t\tvar inst = this._curInst;\n\t\tif (!inst || (input && inst != $.data(input, PROP_NAME)))\n\t\t\treturn;\n\t\tif (this._datepickerShowing) {\n\t\t\tvar showAnim = this._get(inst, 'showAnim');\n\t\t\tvar duration = this._get(inst, 'duration');\n\t\t\tvar postProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) )\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);\n\t\t\telse\n\t\t\t\tinst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :\n\t\t\t\t\t(showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);\n\t\t\tif (!showAnim)\n\t\t\t\tpostProcess();\n\t\t\tthis._datepickerShowing = false;\n\t\t\tvar onClose = this._get(inst, 'onClose');\n\t\t\tif (onClose)\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t\t[(inst.input ? inst.input.val() : ''), inst]);\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$('body').append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst)\n\t\t\treturn;\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id != $.datepicker._mainDivId &&\n\t\t\t\t$target.parents('#' + $.datepicker._mainDivId).length == 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) )\n\t\t\t$.datepicker._hideDatepicker();\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tif (this._get(inst, 'gotoCurrent') && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t}\n\t\telse {\n\t\t\tvar date = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst['selected' + (period == 'M' ? 'Month' : 'Year')] =\n\t\tinst['draw' + (period == 'M' ? 'Month' : 'Year')] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar target = $(id);\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tvar inst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $('a', td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tthis._selectDate(target, '');\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar target = $(id);\n\t\tvar inst = this._getInst(target[0]);\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input)\n\t\t\tinst.input.val(dateStr);\n\t\tthis._updateAlternate(inst);\n\t\tvar onSelect = this._get(inst, 'onSelect');\n\t\tif (onSelect)\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback\n\t\telse if (inst.input)\n\t\t\tinst.input.trigger('change'); // fire the change event\n\t\tif (inst.inline)\n\t\t\tthis._updateDatepicker(inst);\n\t\telse {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) != 'object')\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altField = this._get(inst, 'altField');\n\t\tif (altField) { // update alternate field too\n\t\t\tvar altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');\n\t\t\tvar date = this._getDate(inst);\n\t\t\tvar dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t   @param  date  Date - the date to customise\n\t   @return [boolean, string] - is this date selectable?, what is its CSS class? */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), ''];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t   @param  date  Date - the date to get the week for\n\t   @return  number - the number of the week within the year that contains this date */\n\tiso8601Week: function(date) {\n\t\tvar checkDate = new Date(date.getTime());\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\t\tvar time = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t   See formatDate below for the possible formats.\n\n\t   @param  format    string - the expected format of the date\n\t   @param  value     string - the date in the above format\n\t   @param  settings  Object - attributes include:\n\t                     shortYearCutoff  number - the cutoff year for determining the century (optional)\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  Date - the extracted date value or null if value is blank */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null)\n\t\t\tthrow 'Invalid arguments';\n\t\tvalue = (typeof value == 'object' ? value.toString() : value + '');\n\t\tif (value == '')\n\t\t\treturn null;\n\t\tvar shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\tvar year = -1;\n\t\tvar month = -1;\n\t\tvar day = -1;\n\t\tvar doy = -1;\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Extract a number from the string value\n\t\tvar getNumber = function(match) {\n\t\t\tvar isDoubled = lookAhead(match);\n\t\t\tvar size = (match == '@' ? 14 : (match == '!' ? 20 :\n\t\t\t\t(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));\n\t\t\tvar digits = new RegExp('^\\\\d{1,' + size + '}');\n\t\t\tvar num = value.substring(iValue).match(digits);\n\t\t\tif (!num)\n\t\t\t\tthrow 'Missing number at position ' + iValue;\n\t\t\tiValue += num[0].length;\n\t\t\treturn parseInt(num[0], 10);\n\t\t};\n\t\t// Extract a name from the string value and convert to an index\n\t\tvar getName = function(match, shortNames, longNames) {\n\t\t\tvar names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\treturn [ [k, v] ];\n\t\t\t}).sort(function (a, b) {\n\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t});\n\t\t\tvar index = -1;\n\t\t\t$.each(names, function (i, pair) {\n\t\t\t\tvar name = pair[1];\n\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) {\n\t\t\t\t\tindex = pair[0];\n\t\t\t\t\tiValue += name.length;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (index != -1)\n\t\t\t\treturn index + 1;\n\t\t\telse\n\t\t\t\tthrow 'Unknown name at position ' + iValue;\n\t\t};\n\t\t// Confirm that a literal character matches the string value\n\t\tvar checkLiteral = function() {\n\t\t\tif (value.charAt(iValue) != format.charAt(iFormat))\n\t\t\t\tthrow 'Unexpected literal at position ' + iValue;\n\t\t\tiValue++;\n\t\t};\n\t\tvar iValue = 0;\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tcheckLiteral();\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tday = getNumber('d');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tgetName('D', dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tdoy = getNumber('o');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'm':\n\t\t\t\t\t\tmonth = getNumber('m');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tmonth = getName('M', monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y':\n\t\t\t\t\t\tyear = getNumber('y');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '@':\n\t\t\t\t\t\tvar date = new Date(getNumber('@'));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '!':\n\t\t\t\t\t\tvar date = new Date((getNumber('!') - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t}\n\t\tif (iValue < value.length){\n\t\t\tvar extra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\t\tif (year == -1)\n\t\t\tyear = new Date().getFullYear();\n\t\telse if (year < 100)\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tvar dim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim)\n\t\t\t\t\tbreak;\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\t\tvar date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)\n\t\t\tthrow 'Invalid date'; // E.g. 31/02/00\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)\n\tCOOKIE: 'D, dd M yy',\n\tISO_8601: 'yy-mm-dd',\n\tRFC_822: 'D, d M y',\n\tRFC_850: 'DD, dd-M-y',\n\tRFC_1036: 'D, d M y',\n\tRFC_1123: 'D, d M yy',\n\tRFC_2822: 'D, d M yy',\n\tRSS: 'D, d M y', // RFC 822\n\tTICKS: '!',\n\tTIMESTAMP: '@',\n\tW3C: 'yy-mm-dd', // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t   The format can be combinations of the following:\n\t   d  - day of month (no leading zero)\n\t   dd - day of month (two digit)\n\t   o  - day of year (no leading zeros)\n\t   oo - day of year (three digit)\n\t   D  - day name short\n\t   DD - day name long\n\t   m  - month of year (no leading zero)\n\t   mm - month of year (two digit)\n\t   M  - month name short\n\t   MM - month name long\n\t   y  - year (two digit)\n\t   yy - year (four digit)\n\t   @ - Unix timestamp (ms since 01/01/1970)\n\t   ! - Windows ticks (100ns since 01/01/0001)\n\t   '...' - literal text\n\t   '' - single quote\n\n\t   @param  format    string - the desired format of the date\n\t   @param  date      Date - the date value to format\n\t   @param  settings  Object - attributes include:\n\t                     dayNamesShort    string[7] - abbreviated names of the days from Sunday (optional)\n\t                     dayNames         string[7] - names of the days from Sunday (optional)\n\t                     monthNamesShort  string[12] - abbreviated names of the months (optional)\n\t                     monthNames       string[12] - names of the months (optional)\n\t   @return  string - the date in the above format */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date)\n\t\t\treturn '';\n\t\tvar dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;\n\t\tvar dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;\n\t\tvar monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;\n\t\tvar monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\t// Format a number, with leading zero if necessary\n\t\tvar formatNumber = function(match, value, len) {\n\t\t\tvar num = '' + value;\n\t\t\tif (lookAhead(match))\n\t\t\t\twhile (num.length < len)\n\t\t\t\t\tnum = '0' + num;\n\t\t\treturn num;\n\t\t};\n\t\t// Format a name, short or long as requested\n\t\tvar formatName = function(match, value, shortNames, longNames) {\n\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t};\n\t\tvar output = '';\n\t\tvar literal = false;\n\t\tif (date)\n\t\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal)\n\t\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\telse\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\telse\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\toutput += formatNumber('d', date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\toutput += formatName('D', date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\t\toutput += formatNumber('o',\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\toutput += formatNumber('m', date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\toutput += formatName('M', date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\toutput += (lookAhead('y') ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '@':\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar chars = '';\n\t\tvar literal = false;\n\t\t// Check whether a format character is doubled\n\t\tvar lookAhead = function(match) {\n\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);\n\t\t\tif (matches)\n\t\t\t\tiFormat++;\n\t\t\treturn matches;\n\t\t};\n\t\tfor (var iFormat = 0; iFormat < format.length; iFormat++)\n\t\t\tif (literal)\n\t\t\t\tif (format.charAt(iFormat) == \"'\" && !lookAhead(\"'\"))\n\t\t\t\t\tliteral = false;\n\t\t\t\telse\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\telse\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase 'd': case 'm': case 'y': case '@':\n\t\t\t\t\t\tchars += '0123456789';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'D': case 'M':\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\"))\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() == inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\t\tvar dateFormat = this._get(inst, 'dateFormat');\n\t\tvar dates = inst.lastVal = inst.input ? inst.input.val() : null;\n\t\tvar date, defaultDate;\n\t\tdate = defaultDate = this._getDefaultDate(inst);\n\t\tvar settings = this._getFormatConfig(inst);\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tthis.log(event);\n\t\t\tdates = (noDefault ? '' : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\tvar date = new Date();\n\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\treturn date;\n\t\t};\n\t\tvar offsetString = function(offset) {\n\t\t\ttry {\n\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),\n\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// Ignore\n\t\t\t}\n\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t$.datepicker._getDate(inst) : null) || new Date();\n\t\t\tvar year = date.getFullYear();\n\t\t\tvar month = date.getMonth();\n\t\t\tvar day = date.getDate();\n\t\t\tvar pattern = /([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;\n\t\t\tvar matches = pattern.exec(offset);\n\t\t\twhile (matches) {\n\t\t\t\tswitch (matches[2] || 'd') {\n\t\t\t\t\tcase 'd' : case 'D' :\n\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\tcase 'w' : case 'W' :\n\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\tcase 'm' : case 'M' :\n\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'y': case 'Y' :\n\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t}\n\t\t\treturn new Date(year, month, day);\n\t\t};\n\t\tvar newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :\n\t\t\t(typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\t\tnewDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t   Hours may be non-zero on daylight saving cut-over:\n\t   > 12 when midnight changeover, but then cannot generate\n\t   midnight datetime, so jump to 1AM, otherwise reset.\n\t   @param  date  (Date) the date to check\n\t   @return  (Date) the corrected date */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) return null;\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date;\n\t\tvar origMonth = inst.selectedMonth;\n\t\tvar origYear = inst.selectedYear;\n\t\tvar newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)\n\t\t\tthis._notifyChange(inst);\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? '' : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers.  These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar id = '#' + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find('[data-handler]').map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M');\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M');\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\twindow['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar today = new Date();\n\t\ttoday = this._daylightSavingAdjust(\n\t\t\tnew Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time\n\t\tvar isRTL = this._get(inst, 'isRTL');\n\t\tvar showButtonPanel = this._get(inst, 'showButtonPanel');\n\t\tvar hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');\n\t\tvar navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar showCurrentAtPos = this._get(inst, 'showCurrentAtPos');\n\t\tvar stepMonths = this._get(inst, 'stepMonths');\n\t\tvar isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);\n\t\tvar currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar drawMonth = inst.drawMonth - showCurrentAtPos;\n\t\tvar drawYear = inst.drawYear;\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tvar maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\t\tvar prevText = this._get(inst, 'prevText');\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-prev ui-corner-all\" data-handler=\"prev\" data-event=\"click\"' +\n\t\t\t' title=\"' + prevText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-prev ui-corner-all ui-state-disabled\" title=\"'+ prevText +'\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '\">' + prevText + '</span></a>'));\n\t\tvar nextText = this._get(inst, 'nextText');\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\t\tvar next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t'<a class=\"ui-datepicker-next ui-corner-all\" data-handler=\"next\" data-event=\"click\"' +\n\t\t\t' title=\"' + nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>' :\n\t\t\t(hideIfNoPrevNext ? '' : '<a class=\"ui-datepicker-next ui-corner-all ui-state-disabled\" title=\"'+ nextText + '\"><span class=\"ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '\">' + nextText + '</span></a>'));\n\t\tvar currentText = this._get(inst, 'currentText');\n\t\tvar gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\t\tvar controls = (!inst.inline ? '<button type=\"button\" class=\"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\" data-handler=\"hide\" data-event=\"click\">' +\n\t\t\tthis._get(inst, 'closeText') + '</button>' : '');\n\t\tvar buttonPanel = (showButtonPanel) ? '<div class=\"ui-datepicker-buttonpane ui-widget-content\">' + (isRTL ? controls : '') +\n\t\t\t(this._isInRange(inst, gotoDate) ? '<button type=\"button\" class=\"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\" data-handler=\"today\" data-event=\"click\"' +\n\t\t\t'>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';\n\t\tvar firstDay = parseInt(this._get(inst, 'firstDay'),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\t\tvar showWeek = this._get(inst, 'showWeek');\n\t\tvar dayNames = this._get(inst, 'dayNames');\n\t\tvar dayNamesShort = this._get(inst, 'dayNamesShort');\n\t\tvar dayNamesMin = this._get(inst, 'dayNamesMin');\n\t\tvar monthNames = this._get(inst, 'monthNames');\n\t\tvar monthNamesShort = this._get(inst, 'monthNamesShort');\n\t\tvar beforeShowDay = this._get(inst, 'beforeShowDay');\n\t\tvar showOtherMonths = this._get(inst, 'showOtherMonths');\n\t\tvar selectOtherMonths = this._get(inst, 'selectOtherMonths');\n\t\tvar calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;\n\t\tvar defaultDate = this._getDefaultDate(inst);\n\t\tvar html = '';\n\t\tfor (var row = 0; row < numMonths[0]; row++) {\n\t\t\tvar group = '';\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (var col = 0; col < numMonths[1]; col++) {\n\t\t\t\tvar selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tvar cornerClass = ' ui-corner-all';\n\t\t\t\tvar calender = '';\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += '<div class=\"ui-datepicker-group';\n\t\t\t\t\tif (numMonths[1] > 1)\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += ' ui-datepicker-group-first';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += ' ui-datepicker-group-last';\n\t\t\t\t\t\t\t\tcornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;\n\t\t\t\t\t\t\tdefault: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;\n\t\t\t\t\t\t}\n\t\t\t\t\tcalender += '\">';\n\t\t\t\t}\n\t\t\t\tcalender += '<div class=\"ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '\">' +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t'</div><table class=\"ui-datepicker-calendar\"><thead>' +\n\t\t\t\t\t'<tr>';\n\t\t\t\tvar thead = (showWeek ? '<th class=\"ui-datepicker-week-col\">' + this._get(inst, 'weekHeader') + '</th>' : '');\n\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tvar day = (dow + firstDay) % 7;\n\t\t\t\t\tthead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class=\"ui-datepicker-week-end\"' : '') + '>' +\n\t\t\t\t\t\t'<span title=\"' + dayNames[day] + '\">' + dayNamesMin[day] + '</span></th>';\n\t\t\t\t}\n\t\t\t\tcalender += thead + '</tr></thead><tbody>';\n\t\t\t\tvar daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\tvar leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tvar curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tvar numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tvar printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += '<tr>';\n\t\t\t\t\tvar tbody = (!showWeek ? '' : '<td class=\"ui-datepicker-week-col\">' +\n\t\t\t\t\t\tthis._get(inst, 'calculateWeek')(printDate) + '</td>');\n\t\t\t\t\tfor (var dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tvar daySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);\n\t\t\t\t\t\tvar otherMonth = (printDate.getMonth() != drawMonth);\n\t\t\t\t\t\tvar unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += '<td class=\"' +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t' ' + this._dayOverClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') +  // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '\"' + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? ' title=\"' + daySettings[2] + '\"' : '') + // cell title\n\t\t\t\t\t\t\t(unselectable ? '' : ' data-handler=\"selectDay\" data-event=\"click\" data-month=\"' + printDate.getMonth() + '\" data-year=\"' + printDate.getFullYear() + '\"') + '>' + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months\n\t\t\t\t\t\t\t(unselectable ? '<span class=\"ui-state-default\">' + printDate.getDate() + '</span>' : '<a class=\"ui-state-default' +\n\t\t\t\t\t\t\t(printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +\n\t\t\t\t\t\t\t(printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months\n\t\t\t\t\t\t\t'\" href=\"#\">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + '</tr>';\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += '</tbody></table>' + (isMultiMonth ? '</div>' +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class=\"ui-datepicker-row-break\"></div>' : '') : '');\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel + ($.ui.ie6 && !inst.inline ?\n\t\t\t'<iframe src=\"javascript:false;\" class=\"ui-datepicker-cover\" frameborder=\"0\"></iframe>' : '');\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\t\tvar changeMonth = this._get(inst, 'changeMonth');\n\t\tvar changeYear = this._get(inst, 'changeYear');\n\t\tvar showMonthAfterYear = this._get(inst, 'showMonthAfterYear');\n\t\tvar html = '<div class=\"ui-datepicker-title\">';\n\t\tvar monthHtml = '';\n\t\t// month selection\n\t\tif (secondary || !changeMonth)\n\t\t\tmonthHtml += '<span class=\"ui-datepicker-month\">' + monthNames[drawMonth] + '</span>';\n\t\telse {\n\t\t\tvar inMinYear = (minDate && minDate.getFullYear() == drawYear);\n\t\t\tvar inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);\n\t\t\tmonthHtml += '<select class=\"ui-datepicker-month\" data-handler=\"selectMonth\" data-event=\"change\">';\n\t\t\tfor (var month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) &&\n\t\t\t\t\t\t(!inMaxYear || month <= maxDate.getMonth()))\n\t\t\t\t\tmonthHtml += '<option value=\"' + month + '\"' +\n\t\t\t\t\t\t(month == drawMonth ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + monthNamesShort[month] + '</option>';\n\t\t\t}\n\t\t\tmonthHtml += '</select>';\n\t\t}\n\t\tif (!showMonthAfterYear)\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = '';\n\t\t\tif (secondary || !changeYear)\n\t\t\t\thtml += '<span class=\"ui-datepicker-year\">' + drawYear + '</span>';\n\t\t\telse {\n\t\t\t\t// determine range of years to display\n\t\t\t\tvar years = this._get(inst, 'yearRange').split(':');\n\t\t\t\tvar thisYear = new Date().getFullYear();\n\t\t\t\tvar determineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tvar year = determineYear(years[0]);\n\t\t\t\tvar endYear = Math.max(year, determineYear(years[1] || ''));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += '<select class=\"ui-datepicker-year\" data-handler=\"selectYear\" data-event=\"change\">';\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += '<option value=\"' + year + '\"' +\n\t\t\t\t\t\t(year == drawYear ? ' selected=\"selected\"' : '') +\n\t\t\t\t\t\t'>' + year + '</option>';\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += '</select>';\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\t\thtml += this._get(inst, 'yearSuffix');\n\t\tif (showMonthAfterYear)\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;\n\t\thtml += '</div>'; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period == 'Y' ? offset : 0);\n\t\tvar month = inst.drawMonth + (period == 'M' ? offset : 0);\n\t\tvar day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +\n\t\t\t(period == 'D' ? offset : 0);\n\t\tvar date = this._restrictMinMax(inst,\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day)));\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period == 'M' || period == 'Y')\n\t\t\tthis._notifyChange(inst);\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\tvar newDate = (minDate && date < minDate ? minDate : date);\n\t\tnewDate = (maxDate && newDate > maxDate ? maxDate : newDate);\n\t\treturn newDate;\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, 'onChangeMonthYear');\n\t\tif (onChange)\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, 'numberOfMonths');\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + 'Date'), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst);\n\t\tvar date = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\t\tif (offset < 0)\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, 'min');\n\t\tvar maxDate = this._getMinMaxDate(inst, 'max');\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, 'shortYearCutoff');\n\t\tshortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),\n\t\t\tmonthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day == 'object' ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction bindHover(dpDiv) {\n\tvar selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';\n\treturn dpDiv.delegate(selector, 'mouseout', function() {\n\t\t\t$(this).removeClass('ui-state-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');\n\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');\n\t\t})\n\t\t.delegate(selector, 'mouseover', function(){\n\t\t\tif (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {\n\t\t\t\t$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');\n\t\t\t\t$(this).addClass('ui-state-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');\n\t\t\t\tif (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');\n\t\t\t}\n\t\t});\n}\n\n/* jQuery extend now ignores nulls! */\nfunction extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props)\n\t\tif (props[name] == null || props[name] == undefined)\n\t\t\ttarget[name] = props[name];\n\treturn target;\n};\n\n/* Invoke the datepicker functionality.\n   @param  options  string - a command, optionally followed by additional parameters or\n\t                Object - settings for attaching new datepicker functionality\n   @return  jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick).\n\t\t\tfind(document.body).append($.datepicker.dpDiv);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\tif (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')\n\t\treturn $.datepicker['_' + options + 'Datepicker'].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\treturn this.each(function() {\n\t\ttypeof options == 'string' ?\n\t\t\t$.datepicker['_' + options + 'Datepicker'].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.9.2\";\n\n// Workaround for #4055\n// Add another global to avoid noConflict issues with inline event handlers\nwindow['DP_jQuery_' + dpuuid] = $;\n\n})(jQuery);\n(function( $, undefined ) {\n\nvar uiDialogClasses = \"ui-dialog ui-widget ui-widget-content ui-corner-all \",\n\tsizeRelatedOptions = {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\tresizableRelatedOptions = {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t};\n\n$.widget(\"ui.dialog\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tautoOpen: true,\n\t\tbuttons: {},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: false,\n\t\tmaxWidth: false,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// ensure that the titlebar is never outside the document\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\tstack: true,\n\t\ttitle: \"\",\n\t\twidth: 300,\n\t\tzIndex: 1000\n\t},\n\n\t_create: function() {\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\t// #5742 - .attr() might return a DOMElement\n\t\tif ( typeof this.originalTitle !== \"string\" ) {\n\t\t\tthis.originalTitle = \"\";\n\t\t}\n\t\tthis.oldPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\n\t\t\ttitle = options.title || \"&#160;\",\n\t\t\tuiDialog,\n\t\t\tuiDialogTitlebar,\n\t\t\tuiDialogTitlebarClose,\n\t\t\tuiDialogTitle,\n\t\t\tuiDialogButtonPane;\n\n\t\t\tuiDialog = ( this.uiDialog = $( \"<div>\" ) )\n\t\t\t\t.addClass( uiDialogClasses + options.dialogClass )\n\t\t\t\t.css({\n\t\t\t\t\tdisplay: \"none\",\n\t\t\t\t\toutline: 0, // TODO: move to stylesheet\n\t\t\t\t\tzIndex: options.zIndex\n\t\t\t\t})\n\t\t\t\t// setting tabIndex makes the div focusable\n\t\t\t\t.attr( \"tabIndex\", -1)\n\t\t\t\t.keydown(function( event ) {\n\t\t\t\t\tif ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\t\tthat.close( event );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.mousedown(function( event ) {\n\t\t\t\t\tthat.moveToTop( false, event );\n\t\t\t\t})\n\t\t\t\t.appendTo( \"body\" );\n\n\t\t\tthis.element\n\t\t\t\t.show()\n\t\t\t\t.removeAttr( \"title\" )\n\t\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t\t.appendTo( uiDialog );\n\n\t\t\tuiDialogTitlebar = ( this.uiDialogTitlebar = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-titlebar  ui-widget-header  \" +\n\t\t\t\t\t\"ui-corner-all  ui-helper-clearfix\" )\n\t\t\t\t.bind( \"mousedown\", function() {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tuiDialog.focus();\n\t\t\t\t})\n\t\t\t\t.prependTo( uiDialog );\n\n\t\t\tuiDialogTitlebarClose = $( \"<a href='#'></a>\" )\n\t\t\t\t.addClass( \"ui-dialog-titlebar-close  ui-corner-all\" )\n\t\t\t\t.attr( \"role\", \"button\" )\n\t\t\t\t.click(function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthat.close( event );\n\t\t\t\t})\n\t\t\t\t.appendTo( uiDialogTitlebar );\n\n\t\t\t( this.uiDialogTitlebarCloseText = $( \"<span>\" ) )\n\t\t\t\t.addClass( \"ui-icon ui-icon-closethick\" )\n\t\t\t\t.text( options.closeText )\n\t\t\t\t.appendTo( uiDialogTitlebarClose );\n\n\t\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t\t.html( title )\n\t\t\t\t.prependTo( uiDialogTitlebar );\n\n\t\t\tuiDialogButtonPane = ( this.uiDialogButtonPane = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\t\t( this.uiButtonSet = $( \"<div>\" ) )\n\t\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t\t.appendTo( uiDialogButtonPane );\n\n\t\tuiDialog.attr({\n\t\t\trole: \"dialog\",\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\n\t\tuiDialogTitlebar.find( \"*\" ).add( uiDialogTitlebar ).disableSelection();\n\t\tthis._hoverable( uiDialogTitlebarClose );\n\t\tthis._focusable( uiDialogTitlebarClose );\n\n\t\tif ( options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._createButtons( options.buttons );\n\t\tthis._isOpen = false;\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\tuiDialog.bgiframe();\n\t\t}\n\n\t\t// prevent tabbing out of modal dialogs\n\t\tthis._on( uiDialog, { keydown: function( event ) {\n\t\t\tif ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tabbables = $( \":tabbable\", uiDialog ),\n\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\tlast  = tabbables.filter( \":last\" );\n\n\t\t\tif ( event.target === last[0] && !event.shiftKey ) {\n\t\t\t\tfirst.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t} else if ( event.target === first[0] && event.shiftKey ) {\n\t\t\t\tlast.focus( 1 );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}});\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toldPosition = this.oldPosition;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\t\tthis.uiDialog.hide();\n\t\tthis.element\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.hide()\n\t\t\t.appendTo( \"body\" );\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = oldPosition.parent.children().eq( oldPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toldPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\tmaxZ, thisZ;\n\n\t\tif ( !this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( false === this._trigger( \"beforeClose\", event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.destroy();\n\t\t}\n\n\t\tif ( this.options.hide ) {\n\t\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\t\tthat._trigger( \"close\", event );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.uiDialog.hide();\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\n\t\t$.ui.dialog.overlay.resize();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\tif ( this.options.modal ) {\n\t\t\tmaxZ = 0;\n\t\t\t$( \".ui-dialog\" ).each(function() {\n\t\t\t\tif ( this !== that.uiDialog[0] ) {\n\t\t\t\t\tthisZ = $( this ).css( \"z-index\" );\n\t\t\t\t\tif ( !isNaN( thisZ ) ) {\n\t\t\t\t\t\tmaxZ = Math.max( maxZ, thisZ );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t$.ui.dialog.maxZ = maxZ;\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\t// the force parameter allows us to move modal dialogs to their correct\n\t// position on open\n\tmoveToTop: function( force, event ) {\n\t\tvar options = this.options,\n\t\t\tsaveScroll;\n\n\t\tif ( ( options.modal && !force ) ||\n\t\t\t\t( !options.stack && !options.modal ) ) {\n\t\t\treturn this._trigger( \"focus\", event );\n\t\t}\n\n\t\tif ( options.zIndex > $.ui.dialog.maxZ ) {\n\t\t\t$.ui.dialog.maxZ = options.zIndex;\n\t\t}\n\t\tif ( this.overlay ) {\n\t\t\t$.ui.dialog.maxZ += 1;\n\t\t\t$.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ;\n\t\t\tthis.overlay.$el.css( \"z-index\", $.ui.dialog.overlay.maxZ );\n\t\t}\n\n\t\t// Save and then restore scroll\n\t\t// Opera 9.5+ resets when parent z-index is changed.\n\t\t// http://bugs.jqueryui.com/ticket/3193\n\t\tsaveScroll = {\n\t\t\tscrollTop: this.element.scrollTop(),\n\t\t\tscrollLeft: this.element.scrollLeft()\n\t\t};\n\t\t$.ui.dialog.maxZ += 1;\n\t\tthis.uiDialog.css( \"z-index\", $.ui.dialog.maxZ );\n\t\tthis.element.attr( saveScroll );\n\t\tthis._trigger( \"focus\", event );\n\n\t\treturn this;\n\t},\n\n\topen: function() {\n\t\tif ( this._isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar hasFocus,\n\t\t\toptions = this.options,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tthis._size();\n\t\tthis._position( options.position );\n\t\tuiDialog.show( options.show );\n\t\tthis.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null;\n\t\tthis.moveToTop( true );\n\n\t\t// set focus to the first tabbable element in the content area or the first button\n\t\t// if there are no tabbable elements, set focus on the dialog itself\n\t\thasFocus = this.element.find( \":tabbable\" );\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t\tif ( !hasFocus.length ) {\n\t\t\t\thasFocus = uiDialog;\n\t\t\t}\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\n\t\tthis._isOpen = true;\n\t\tthis._trigger( \"open\" );\n\n\t\treturn this;\n\t},\n\n\t_createButtons: function( buttons ) {\n\t\tvar that = this,\n\t\t\thasButtons = false;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( typeof buttons === \"object\" && buttons !== null ) {\n\t\t\t$.each( buttons, function() {\n\t\t\t\treturn !(hasButtons = true);\n\t\t\t});\n\t\t}\n\t\tif ( hasButtons ) {\n\t\t\t$.each( buttons, function( name, props ) {\n\t\t\t\tvar button, click;\n\t\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t\t{ click: props, text: name } :\n\t\t\t\t\tprops;\n\t\t\t\t// Default to a non-submitting button\n\t\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t\t// Change the context for the click callback to be the main element\n\t\t\t\tclick = props.click;\n\t\t\t\tprops.click = function() {\n\t\t\t\t\tclick.apply( that.element[0], arguments );\n\t\t\t\t};\n\t\t\t\tbutton = $( \"<button></button>\", props )\n\t\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t\t\tif ( $.fn.button ) {\n\t\t\t\t\tbutton.button();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t\t} else {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t}\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this )\n\t\t\t\t\t.addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\toptions.position = [\n\t\t\t\t\tui.position.left - that.document.scrollLeft(),\n\t\t\t\t\tui.position.top - that.document.scrollTop()\n\t\t\t\t];\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function( handles ) {\n\t\thandles = (handles === undefined ? this.options.resizable : handles);\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === 'string' ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\toptions.height = $( this ).height();\n\t\t\t\toptions.width = $( this ).width();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t\t$.ui.dialog.overlay.resize();\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position )\n\t\t.find( \".ui-resizable-se\" )\n\t\t\t.addClass( \"ui-icon ui-icon-grip-diagonal-se\" );\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\treturn options.minHeight;\n\t\t} else {\n\t\t\treturn Math.min( options.minHeight, options.height );\n\t\t}\n\t},\n\n\t_position: function( position ) {\n\t\tvar myAt = [],\n\t\t\toffset = [ 0, 0 ],\n\t\t\tisVisible;\n\n\t\tif ( position ) {\n\t\t\t// deep extending converts arrays to objects in jQuery <= 1.3.2 :-(\n\t//\t\tif (typeof position == 'string' || $.isArray(position)) {\n\t//\t\t\tmyAt = $.isArray(position) ? position : position.split(' ');\n\n\t\t\tif ( typeof position === \"string\" || (typeof position === \"object\" && \"0\" in position ) ) {\n\t\t\t\tmyAt = position.split ? position.split( \" \" ) : [ position[ 0 ], position[ 1 ] ];\n\t\t\t\tif ( myAt.length === 1 ) {\n\t\t\t\t\tmyAt[ 1 ] = myAt[ 0 ];\n\t\t\t\t}\n\n\t\t\t\t$.each( [ \"left\", \"top\" ], function( i, offsetPosition ) {\n\t\t\t\t\tif ( +myAt[ i ] === myAt[ i ] ) {\n\t\t\t\t\t\toffset[ i ] = myAt[ i ];\n\t\t\t\t\t\tmyAt[ i ] = offsetPosition;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tposition = {\n\t\t\t\t\tmy: myAt[0] + (offset[0] < 0 ? offset[0] : \"+\" + offset[0]) + \" \" +\n\t\t\t\t\t\tmyAt[1] + (offset[1] < 0 ? offset[1] : \"+\" + offset[1]),\n\t\t\t\t\tat: myAt.join( \" \" )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tposition = $.extend( {}, $.ui.dialog.prototype.options.position, position );\n\t\t} else {\n\t\t\tposition = $.ui.dialog.prototype.options.position;\n\t\t}\n\n\t\t// need to show the dialog to get the actual offset in the position plugin\n\t\tisVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresizableOptions = {},\n\t\t\tresize = false;\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tswitch ( key ) {\n\t\t\tcase \"buttons\":\n\t\t\t\tthis._createButtons( value );\n\t\t\t\tbreak;\n\t\t\tcase \"closeText\":\n\t\t\t\t// ensure that we always pass a string\n\t\t\t\tthis.uiDialogTitlebarCloseText.text( \"\" + value );\n\t\t\t\tbreak;\n\t\t\tcase \"dialogClass\":\n\t\t\t\tuiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( uiDialogClasses + value );\n\t\t\t\tbreak;\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tuiDialog.addClass( \"ui-dialog-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tuiDialog.removeClass( \"ui-dialog-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"draggable\":\n\t\t\t\tisDraggable = uiDialog.is( \":data(draggable)\" );\n\t\t\t\tif ( isDraggable && !value ) {\n\t\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\tif ( !isDraggable && value ) {\n\t\t\t\t\tthis._makeDraggable();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"position\":\n\t\t\t\tthis._position( value );\n\t\t\t\tbreak;\n\t\t\tcase \"resizable\":\n\t\t\t\t// currently resizable, becoming non-resizable\n\t\t\t\tisResizable = uiDialog.is( \":data(resizable)\" );\n\t\t\t\tif ( isResizable && !value ) {\n\t\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t\t}\n\n\t\t\t\t// currently resizable, changing handles\n\t\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t\t}\n\n\t\t\t\t// currently non-resizable, becoming resizable\n\t\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\t\tthis._makeResizable( value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"title\":\n\t\t\t\t// convert whatever was passed in o a string, for html() to not throw up\n\t\t\t\t$( \".ui-dialog-title\", this.uiDialogTitlebar )\n\t\t\t\t\t.html( \"\" + ( value || \"&#160;\" ) );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_size: function() {\n\t\t/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t * divs will both have width and height set, so we need to reset them\n\t\t */\n\t\tvar nonContentHeight, minContentHeight, autoHeight,\n\t\t\toptions = this.options,\n\t\t\tisVisible = this.uiDialog.is( \":visible\" );\n\n\t\t// reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\t// only needed for IE6 support\n\t\t\tif ( $.support.minHeight ) {\n\t\t\t\tthis.element.css({\n\t\t\t\t\tminHeight: minContentHeight,\n\t\t\t\t\theight: \"auto\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uiDialog.show();\n\t\t\t\tautoHeight = this.element.css( \"height\", \"auto\" ).height();\n\t\t\t\tif ( !isVisible ) {\n\t\t\t\t\tthis.uiDialog.hide();\n\t\t\t\t}\n\t\t\t\tthis.element.height( Math.max( autoHeight, minContentHeight ) );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.height( Math.max( options.height - nonContentHeight, 0 ) );\n\t\t}\n\n\t\tif (this.uiDialog.is( \":data(resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t}\n});\n\n$.extend($.ui.dialog, {\n\tuuid: 0,\n\tmaxZ: 0,\n\n\tgetTitleId: function($el) {\n\t\tvar id = $el.attr( \"id\" );\n\t\tif ( !id ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = this.uuid;\n\t\t}\n\t\treturn \"ui-dialog-title-\" + id;\n\t},\n\n\toverlay: function( dialog ) {\n\t\tthis.$el = $.ui.dialog.overlay.create( dialog );\n\t}\n});\n\n$.extend( $.ui.dialog.overlay, {\n\tinstances: [],\n\t// reuse old instances due to IE memory leak with alpha transparency (see #5185)\n\toldInstances: [],\n\tmaxZ: 0,\n\tevents: $.map(\n\t\t\"focus,mousedown,mouseup,keydown,keypress,click\".split( \",\" ),\n\t\tfunction( event ) {\n\t\t\treturn event + \".dialog-overlay\";\n\t\t}\n\t).join( \" \" ),\n\tcreate: function( dialog ) {\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t// prevent use of anchors and inputs\n\t\t\t// we use a setTimeout in case the overlay is created from an\n\t\t\t// event that we're going to be cancelling (see #2804)\n\t\t\tsetTimeout(function() {\n\t\t\t\t// handle $(el).dialog().dialog('close') (see #4065)\n\t\t\t\tif ( $.ui.dialog.overlay.instances.length ) {\n\t\t\t\t\t$( document ).bind( $.ui.dialog.overlay.events, function( event ) {\n\t\t\t\t\t\t// stop events if the z-index of the target is < the z-index of the overlay\n\t\t\t\t\t\t// we cannot return true when we don't want to cancel the event (#3523)\n\t\t\t\t\t\tif ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1 );\n\n\t\t\t// handle window resize\n\t\t\t$( window ).bind( \"resize.dialog-overlay\", $.ui.dialog.overlay.resize );\n\t\t}\n\n\t\tvar $el = ( this.oldInstances.pop() || $( \"<div>\" ).addClass( \"ui-widget-overlay\" ) );\n\n\t\t// allow closing by pressing the escape key\n\t\t$( document ).bind( \"keydown.dialog-overlay\", function( event ) {\n\t\t\tvar instances = $.ui.dialog.overlay.instances;\n\t\t\t// only react to the event if we're the top overlay\n\t\t\tif ( instances.length !== 0 && instances[ instances.length - 1 ] === $el &&\n\t\t\t\tdialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\n\t\t\t\tdialog.close( event );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t$el.appendTo( document.body ).css({\n\t\t\twidth: this.width(),\n\t\t\theight: this.height()\n\t\t});\n\n\t\tif ( $.fn.bgiframe ) {\n\t\t\t$el.bgiframe();\n\t\t}\n\n\t\tthis.instances.push( $el );\n\t\treturn $el;\n\t},\n\n\tdestroy: function( $el ) {\n\t\tvar indexOf = $.inArray( $el, this.instances ),\n\t\t\tmaxZ = 0;\n\n\t\tif ( indexOf !== -1 ) {\n\t\t\tthis.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] );\n\t\t}\n\n\t\tif ( this.instances.length === 0 ) {\n\t\t\t$( [ document, window ] ).unbind( \".dialog-overlay\" );\n\t\t}\n\n\t\t$el.height( 0 ).width( 0 ).remove();\n\n\t\t// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)\n\t\t$.each( this.instances, function() {\n\t\t\tmaxZ = Math.max( maxZ, this.css( \"z-index\" ) );\n\t\t});\n\t\tthis.maxZ = maxZ;\n\t},\n\n\theight: function() {\n\t\tvar scrollHeight,\n\t\t\toffsetHeight;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollHeight = Math.max(\n\t\t\t\tdocument.documentElement.scrollHeight,\n\t\t\t\tdocument.body.scrollHeight\n\t\t\t);\n\t\t\toffsetHeight = Math.max(\n\t\t\t\tdocument.documentElement.offsetHeight,\n\t\t\t\tdocument.body.offsetHeight\n\t\t\t);\n\n\t\t\tif ( scrollHeight < offsetHeight ) {\n\t\t\t\treturn $( window ).height() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollHeight + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).height() + \"px\";\n\t\t}\n\t},\n\n\twidth: function() {\n\t\tvar scrollWidth,\n\t\t\toffsetWidth;\n\t\t// handle IE\n\t\tif ( $.ui.ie ) {\n\t\t\tscrollWidth = Math.max(\n\t\t\t\tdocument.documentElement.scrollWidth,\n\t\t\t\tdocument.body.scrollWidth\n\t\t\t);\n\t\t\toffsetWidth = Math.max(\n\t\t\t\tdocument.documentElement.offsetWidth,\n\t\t\t\tdocument.body.offsetWidth\n\t\t\t);\n\n\t\t\tif ( scrollWidth < offsetWidth ) {\n\t\t\t\treturn $( window ).width() + \"px\";\n\t\t\t} else {\n\t\t\t\treturn scrollWidth + \"px\";\n\t\t\t}\n\t\t// handle \"good\" browsers\n\t\t} else {\n\t\t\treturn $( document ).width() + \"px\";\n\t\t}\n\t},\n\n\tresize: function() {\n\t\t/* If the dialog is draggable and the user drags it past the\n\t\t * right edge of the window, the document becomes wider so we\n\t\t * need to stretch the overlay. If the user then drags the\n\t\t * dialog back to the left, the document will become narrower,\n\t\t * so we need to shrink the overlay to the appropriate size.\n\t\t * This is handled by shrinking the overlay before setting it\n\t\t * to the full document size.\n\t\t */\n\t\tvar $overlays = $( [] );\n\t\t$.each( $.ui.dialog.overlay.instances, function() {\n\t\t\t$overlays = $overlays.add( this );\n\t\t});\n\n\t\t$overlays.css({\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t}).css({\n\t\t\twidth: $.ui.dialog.overlay.width(),\n\t\t\theight: $.ui.dialog.overlay.height()\n\t\t});\n\t}\n});\n\n$.extend( $.ui.dialog.overlay.prototype, {\n\tdestroy: function() {\n\t\t$.ui.dialog.overlay.destroy( this.$el );\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target ).closest( \".ui-menu-item\" );\n\t\t\t\tif ( !mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children( \"a\" ).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.children( \"a\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n}( jQuery ));\n(function( $, undefined ) {\n\n$.widget( \"ui.progressbar\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tvalue: 0,\n\t\tmax: 100\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min,\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": this._value()\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis.oldValue = this._value();\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this._value();\n\t\t}\n\n\t\tthis._setOption( \"value\", newValue );\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"value\" ) {\n\t\t\tthis.options.value = value;\n\t\t\tthis._refreshValue();\n\t\t\tif ( this._value() === this.options.max ) {\n\t\t\t\tthis._trigger( \"complete\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\t// normalize invalid value\n\t\tif ( typeof val !== \"number\" ) {\n\t\t\tval = 0;\n\t\t}\n\t\treturn Math.min( this.options.max, Math.max( this.min, val ) );\n\t},\n\n\t_percentage: function() {\n\t\treturn 100 * this._value() / this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.value(),\n\t\t\tpercentage = this._percentage();\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\n\t\tthis.valueDiv\n\t\t\t.toggle( value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\t\tthis.element.attr( \"aria-valuenow\", value );\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\n// number of pages in a slider\n// (how many times can you page up/down to go through the whole range)\nvar numPages = 5;\n\n$.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.9.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null\n\t},\n\n\t_create: function() {\n\t\tvar i, handleCount,\n\t\t\to = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n\t\t\thandles = [];\n\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" +\n\t\t\t\t( o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\" ) );\n\n\t\tthis.range = $([]);\n\n\t\tif ( o.range ) {\n\t\t\tif ( o.range === true ) {\n\t\t\t\tif ( !o.values ) {\n\t\t\t\t\to.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t}\n\t\t\t\tif ( o.values.length && o.values.length !== 2 ) {\n\t\t\t\t\to.values = [ o.values[0], o.values[0] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t.appendTo( this.element )\n\t\t\t\t.addClass( \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header\" +\n\t\t\t\t( ( o.range === \"min\" || o.range === \"max\" ) ? \" ui-slider-range-\" + o.range : \"\" ) );\n\t\t}\n\n\t\thandleCount = ( o.values && o.values.length ) || 1;\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.add( this.range ).filter( \"a\" )\n\t\t\t.click(function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t})\n\t\t\t.mouseenter(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.mouseleave(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\t})\n\t\t\t.focus(function() {\n\t\t\t\tif ( !o.disabled ) {\n\t\t\t\t\t$( \".ui-slider .ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\t\t\t$( this ).addClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).blur();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.blur(function() {\n\t\t\t\t$( this ).removeClass( \"ui-state-focus\" );\n\t\t\t});\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\n\t\tthis._on( this.handles, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tstep = this.options.step;\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t\t} else {\n\t\t\t\t\tcurVal = newVal = this.value();\n\t\t\t\t}\n\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._slide( event, index, newVal );\n\t\t\t},\n\t\t\tkeyup: function( event ) {\n\t\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\t\tif ( this._keySliding ) {\n\t\t\t\t\tthis._keySliding = false;\n\t\t\t\t\tthis._stop( event, index );\n\t\t\t\t\tthis._change( event, index );\n\t\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._refreshValue();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tthis.range.remove();\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-slider-disabled\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif ( distance > thisDistance ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\t// workaround for bug #3736 (if both handles of a range are at 0,\n\t\t// the first is always used as the one with least distance,\n\t\t// and moving it is obviously prevented by preventing negative ranges)\n\t\tif( o.range === true && this.values(1) === o.min ) {\n\t\t\tindex += 1;\n\t\t\tclosestHandle = $( this.handles[index] );\n\t\t}\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().andSelf().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal, true );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\t$.Widget.prototype._setOption.apply( this, arguments );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"disabled\":\n\t\t\t\tif ( value ) {\n\t\t\t\t\tthis.handles.filter( \".ui-state-focus\" ).blur();\n\t\t\t\t\tthis.handles.removeClass( \"ui-state-hover\" );\n\t\t\t\t\tthis.handles.prop( \"disabled\", true );\n\t\t\t\t\tthis.element.addClass( \"ui-disabled\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.handles.prop( \"disabled\", false );\n\t\t\t\t\tthis.element.removeClass( \"ui-disabled\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i+= 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.options.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n}(jQuery));\n(function( $ ) {\n\nfunction modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\n$.widget( \"ui.spinner\", {\n\tversion: \"1.9.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// format the value, but don't constrain\n\t\tthis._value( this.element.val(), true );\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>&#9650;</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>&#9660;</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.prop( \"disabled\", true );\n\t\t\t\tthis.buttons.button( \"disable\" );\n\t\t\t} else {\n\t\t\t\tthis.element.prop( \"disabled\", false );\n\t\t\t\tthis.buttons.button( \"enable\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_setOptions: modifier(function( options ) {\n\t\tthis._super( options );\n\t\tthis._value( this.element.val() );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tthis._spin( (steps || 1) * this.options.step );\n\t},\n\n\tstepDown: modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tthis._spin( (steps || 1) * -this.options.step );\n\t},\n\n\tpageUp: modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tmodifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n}( jQuery ) );\n(function( $, undefined ) {\n\nvar tabId = 0,\n\trhash = /#.*$/;\n\nfunction getNextTabId() {\n\treturn ++tabId;\n}\n\nfunction isLocal( anchor ) {\n\treturn anchor.hash.length > 1 &&\n\t\tanchor.href.replace( rhash, \"\" ) ===\n\t\t\tlocation.href.replace( rhash, \"\" )\n\t\t\t\t// support: Safari 5.1\n\t\t\t\t// Safari 5.1 doesn't encode spaces in window.location\n\t\t\t\t// but it does encode spaces from anchors (#8777)\n\t\t\t\t.replace( /\\s/g, \"%20\" );\n}\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.9.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\tactive = options.active,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible )\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \".ui-tabs-nav > li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._processTabs();\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = options.collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\t\toptions.active = active;\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !options.collapsible && options.active === false && this.anchors.length ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( this.options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_tabId: function( tab ) {\n\t\treturn tab.attr( \"aria-controls\" ) || \"ui-tabs-\" + getNextTabId();\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\tpanelId = that._tabId( tab );\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": selector.substring( 1 ),\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight, overflow,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\t// IE 6 treats height like minHeight, so we need to turn off overflow\n\t\t\t// in order to get a reliable height\n\t\t\t// we use the minHeight support test because we assume that only\n\t\t\t// browsers that don't support minHeight will treat height as minHeight\n\t\t\tif ( !$.support.minHeight ) {\n\t\t\t\toverflow = parent.css( \"overflow\" );\n\t\t\t\tparent.css( \"overflow\", \"hidden\");\n\t\t\t}\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\t\t\tif ( overflow ) {\n\t\t\t\tparent.css( \"overflow\", overflow );\n\t\t\t}\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\teventData.oldTab.attr( \"aria-selected\", \"false\" );\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr({\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\"aria-hidden\": \"false\"\n\t\t});\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeData( \"href.tabs\" )\n\t\t\t.removeData( \"load.tabs\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli.attr( \"aria-controls\", prev );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t// TODO: Remove this function in 1.10 when ajaxOptions is removed\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// helper method for a lot of the back compat extensions\n\t$.ui.tabs.prototype._ui = function( tab, panel ) {\n\t\treturn {\n\t\t\ttab: tab,\n\t\t\tpanel: panel,\n\t\t\tindex: this.anchors.index( tab )\n\t\t};\n\t};\n\n\t// url method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\turl: function( index, url ) {\n\t\t\tthis.anchors.eq( index ).attr( \"href\", url );\n\t\t}\n\t});\n\n\t// TODO: Remove _ajaxSettings() method when removing this extension\n\t// ajaxOptions and cache options\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tajaxOptions: null,\n\t\t\tcache: false\n\t\t},\n\n\t\t_create: function() {\n\t\t\tthis._super();\n\n\t\t\tvar that = this;\n\n\t\t\tthis._on({ tabsbeforeload: function( event, ui ) {\n\t\t\t\t// tab is already cached\n\t\t\t\tif ( $.data( ui.tab[ 0 ], \"cache.tabs\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tui.jqXHR.success(function() {\n\t\t\t\t\tif ( that.options.cache ) {\n\t\t\t\t\t\t$.data( ui.tab[ 0 ], \"cache.tabs\", true );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}});\n\t\t},\n\n\t\t_ajaxSettings: function( anchor, event, ui ) {\n\t\t\tvar ajaxOptions = this.options.ajaxOptions;\n\t\t\treturn $.extend( {}, ajaxOptions, {\n\t\t\t\terror: function( xhr, status ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Passing index avoid a race condition when this method is\n\t\t\t\t\t\t// called after the user has selected another tab.\n\t\t\t\t\t\t// Pass the anchor that initiated this request allows\n\t\t\t\t\t\t// loadError to manipulate the tab content panel via $(a.hash)\n\t\t\t\t\t\tajaxOptions.error(\n\t\t\t\t\t\t\txhr, status, ui.tab.closest( \"li\" ).index(), ui.tab[ 0 ] );\n\t\t\t\t\t}\n\t\t\t\t\tcatch ( error ) {}\n\t\t\t\t}\n\t\t\t}, this._superApply( arguments ) );\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\t// reset cache if switching from cached to not cached\n\t\t\tif ( key === \"cache\" && value === false ) {\n\t\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\t}\n\t\t\tthis._super( key, value );\n\t\t},\n\n\t\t_destroy: function() {\n\t\t\tthis.anchors.removeData( \"cache.tabs\" );\n\t\t\tthis._super();\n\t\t},\n\n\t\turl: function( index ){\n\t\t\tthis.anchors.eq( index ).removeData( \"cache.tabs\" );\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t});\n\n\t// abort method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tabort: function() {\n\t\t\tif ( this.xhr ) {\n\t\t\t\tthis.xhr.abort();\n\t\t\t}\n\t\t}\n\t});\n\n\t// spinner\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tspinner: \"<em>Loading&#8230;</em>\"\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tthis._on({\n\t\t\t\ttabsbeforeload: function( event, ui ) {\n\t\t\t\t\t// Don't react to nested tabs or tabs that don't use a spinner\n\t\t\t\t\tif ( event.target !== this.element[ 0 ] ||\n\t\t\t\t\t\t\t!this.options.spinner ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar span = ui.tab.find( \"span\" ),\n\t\t\t\t\t\thtml = span.html();\n\t\t\t\t\tspan.html( this.options.spinner );\n\t\t\t\t\tui.jqXHR.complete(function() {\n\t\t\t\t\t\tspan.html( html );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// enable/disable events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tenable: null,\n\t\t\tdisable: null\n\t\t},\n\n\t\tenable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === true ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) !== -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"enable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t},\n\n\t\tdisable: function( index ) {\n\t\t\tvar options = this.options,\n\t\t\t\ttrigger;\n\n\t\t\tif ( index && options.disabled === false ||\n\t\t\t\t\t( $.isArray( options.disabled ) && $.inArray( index, options.disabled ) === -1 ) ) {\n\t\t\t\ttrigger = true;\n\t\t\t}\n\n\t\t\tthis._superApply( arguments );\n\n\t\t\tif ( trigger ) {\n\t\t\t\tthis._trigger( \"disable\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\t}\n\t\t}\n\t});\n\n\t// add/remove methods and events\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tadd: null,\n\t\t\tremove: null,\n\t\t\ttabTemplate: \"<li><a href='#{href}'><span>#{label}</span></a></li>\"\n\t\t},\n\n\t\tadd: function( url, label, index ) {\n\t\t\tif ( index === undefined ) {\n\t\t\t\tindex = this.anchors.length;\n\t\t\t}\n\n\t\t\tvar doInsertAfter, panel,\n\t\t\t\toptions = this.options,\n\t\t\t\tli = $( options.tabTemplate\n\t\t\t\t\t.replace( /#\\{href\\}/g, url )\n\t\t\t\t\t.replace( /#\\{label\\}/g, label ) ),\n\t\t\t\tid = !url.indexOf( \"#\" ) ?\n\t\t\t\t\turl.replace( \"#\", \"\" ) :\n\t\t\t\t\tthis._tabId( li );\n\n\t\t\tli.addClass( \"ui-state-default ui-corner-top\" ).data( \"ui-tabs-destroy\", true );\n\t\t\tli.attr( \"aria-controls\", id );\n\n\t\t\tdoInsertAfter = index >= this.tabs.length;\n\n\t\t\t// try to find an existing element before creating a new one\n\t\t\tpanel = this.element.find( \"#\" + id );\n\t\t\tif ( !panel.length ) {\n\t\t\t\tpanel = this._createPanel( id );\n\t\t\t\tif ( doInsertAfter ) {\n\t\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\t\tpanel.insertAfter( this.panels.eq( -1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.appendTo( this.element );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanel.insertBefore( this.panels[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tpanel.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" ).hide();\n\n\t\t\tif ( doInsertAfter ) {\n\t\t\t\tli.appendTo( this.tablist );\n\t\t\t} else {\n\t\t\t\tli.insertBefore( this.tabs[ index ] );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map( options.disabled, function( n ) {\n\t\t\t\treturn n >= index ? ++n : n;\n\t\t\t});\n\n\t\t\tthis.refresh();\n\t\t\tif ( this.tabs.length === 1 && options.active === false ) {\n\t\t\t\tthis.option( \"active\", 0 );\n\t\t\t}\n\n\t\t\tthis._trigger( \"add\", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tvar options = this.options,\n\t\t\t\ttab = this.tabs.eq( index ).remove(),\n\t\t\t\tpanel = this._getPanelForTab( tab ).remove();\n\n\t\t\t// If selected tab was removed focus tab to the right or\n\t\t\t// in case the last tab was removed the tab to the left.\n\t\t\t// We check for more than 2 tabs, because if there are only 2,\n\t\t\t// then when we remove this tab, there will only be one tab left\n\t\t\t// so we don't need to detect which tab to activate.\n\t\t\tif ( tab.hasClass( \"ui-tabs-active\" ) && this.anchors.length > 2 ) {\n\t\t\t\tthis._activate( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );\n\t\t\t}\n\n\t\t\toptions.disabled = $.map(\n\t\t\t\t$.grep( options.disabled, function( n ) {\n\t\t\t\t\treturn n !== index;\n\t\t\t\t}),\n\t\t\t\tfunction( n ) {\n\t\t\t\t\treturn n >= index ? --n : n;\n\t\t\t\t});\n\n\t\t\tthis.refresh();\n\n\t\t\tthis._trigger( \"remove\", null, this._ui( tab.find( \"a\" )[ 0 ], panel[ 0 ] ) );\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t// length method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tlength: function() {\n\t\t\treturn this.anchors.length;\n\t\t}\n\t});\n\n\t// panel ids (idPrefix option + title attribute)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tidPrefix: \"ui-tabs-\"\n\t\t},\n\n\t\t_tabId: function( tab ) {\n\t\t\tvar a = tab.is( \"li\" ) ? tab.find( \"a[href]\" ) : tab;\n\t\t\ta = a[0];\n\t\t\treturn $( a ).closest( \"li\" ).attr( \"aria-controls\" ) ||\n\t\t\t\ta.title && a.title.replace( /\\s/g, \"_\" ).replace( /[^\\w\\u00c0-\\uFFFF\\-]/g, \"\" ) ||\n\t\t\t\tthis.options.idPrefix + getNextTabId();\n\t\t}\n\t});\n\n\t// _createPanel method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tpanelTemplate: \"<div></div>\"\n\t\t},\n\n\t\t_createPanel: function( id ) {\n\t\t\treturn $( this.options.panelTemplate )\n\t\t\t\t.attr( \"id\", id )\n\t\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t\t.data( \"ui-tabs-destroy\", true );\n\t\t}\n\t});\n\n\t// selected option\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_create: function() {\n\t\t\tvar options = this.options;\n\t\t\tif ( options.active === null && options.selected !== undefined ) {\n\t\t\t\toptions.active = options.selected === -1 ? false : options.selected;\n\t\t\t}\n\t\t\tthis._super();\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key !== \"selected\" ) {\n\t\t\t\treturn this._super( key, value );\n\t\t\t}\n\n\t\t\tvar options = this.options;\n\t\t\tthis._super( \"active\", value === -1 ? false : value );\n\t\t\toptions.selected = options.active;\n\t\t\tif ( options.selected === false ) {\n\t\t\t\toptions.selected = -1;\n\t\t\t}\n\t\t},\n\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis.options.selected = this.options.active;\n\t\t\tif ( this.options.selected === false ) {\n\t\t\t\tthis.options.selected = -1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// show and select event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tshow: null,\n\t\t\tselect: null\n\t\t},\n\t\t_create: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.active !== false ) {\n\t\t\t\tthis._trigger( \"show\", null, this._ui(\n\t\t\t\t\tthis.active.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tthis._getPanelForTab( this.active )[ 0 ] ) );\n\t\t\t}\n\t\t},\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar tab, panel,\n\t\t\t\tret = this._superApply( arguments );\n\n\t\t\tif ( !ret ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( type === \"beforeActivate\" ) {\n\t\t\t\ttab = data.newTab.length ? data.newTab : data.oldTab;\n\t\t\t\tpanel = data.newPanel.length ? data.newPanel : data.oldPanel;\n\t\t\t\tret = this._super( \"select\", event, {\n\t\t\t\t\ttab: tab.find( \".ui-tabs-anchor\" )[ 0],\n\t\t\t\t\tpanel: panel[ 0 ],\n\t\t\t\t\tindex: tab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t} else if ( type === \"activate\" && data.newTab.length ) {\n\t\t\t\tret = this._super( \"show\", event, {\n\t\t\t\t\ttab: data.newTab.find( \".ui-tabs-anchor\" )[ 0 ],\n\t\t\t\t\tpanel: data.newPanel[ 0 ],\n\t\t\t\t\tindex: data.newTab.closest( \"li\" ).index()\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t});\n\n\t// select method\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\tselect: function( index ) {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( index === -1 ) {\n\t\t\t\tif ( this.options.collapsible && this.options.selected !== -1 ) {\n\t\t\t\t\tindex = this.options.selected;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.anchors.eq( index ).trigger( this.options.event + this.eventNamespace );\n\t\t}\n\t});\n\n\t// cookie option\n\t(function() {\n\n\tvar listId = 0;\n\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tcookie: null // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }\n\t\t},\n\t\t_create: function() {\n\t\t\tvar options = this.options,\n\t\t\t\tactive;\n\t\t\tif ( options.active == null && options.cookie ) {\n\t\t\t\tactive = parseInt( this._cookie(), 10 );\n\t\t\t\tif ( active === -1 ) {\n\t\t\t\t\tactive = false;\n\t\t\t\t}\n\t\t\t\toptions.active = active;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\t\t_cookie: function( active ) {\n\t\t\tvar cookie = [ this.cookie ||\n\t\t\t\t( this.cookie = this.options.cookie.name || \"ui-tabs-\" + (++listId) ) ];\n\t\t\tif ( arguments.length ) {\n\t\t\t\tcookie.push( active === false ? -1 : active );\n\t\t\t\tcookie.push( this.options.cookie );\n\t\t\t}\n\t\t\treturn $.cookie.apply( null, cookie );\n\t\t},\n\t\t_refresh: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_eventHandler: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( this.options.active, this.options.cookie );\n\t\t\t}\n\t\t},\n\t\t_destroy: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.cookie ) {\n\t\t\t\tthis._cookie( null, this.options.cookie );\n\t\t\t}\n\t\t}\n\t});\n\n\t})();\n\n\t// load event\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_trigger: function( type, event, data ) {\n\t\t\tvar _data = $.extend( {}, data );\n\t\t\tif ( type === \"load\" ) {\n\t\t\t\t_data.panel = _data.panel[ 0 ];\n\t\t\t\t_data.tab = _data.tab.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\t\t}\n\t\t\treturn this._super( type, event, _data );\n\t\t}\n\t});\n\n\t// fx option\n\t// The new animation options (show, hide) conflict with the old show callback.\n\t// The old fx option wins over show/hide anyway (always favor back-compat).\n\t// If a user wants to use the new animation API, they must give up the old API.\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\toptions: {\n\t\t\tfx: null // e.g. { height: \"toggle\", opacity: \"toggle\", duration: 200 }\n\t\t},\n\n\t\t_getFx: function() {\n\t\t\tvar hide, show,\n\t\t\t\tfx = this.options.fx;\n\n\t\t\tif ( fx ) {\n\t\t\t\tif ( $.isArray( fx ) ) {\n\t\t\t\t\thide = fx[ 0 ];\n\t\t\t\t\tshow = fx[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\thide = show = fx;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fx ? { show: show, hide: hide } : null;\n\t\t},\n\n\t\t_toggle: function( event, eventData ) {\n\t\t\tvar that = this,\n\t\t\t\ttoShow = eventData.newPanel,\n\t\t\t\ttoHide = eventData.oldPanel,\n\t\t\t\tfx = this._getFx();\n\n\t\t\tif ( !fx ) {\n\t\t\t\treturn this._super( event, eventData );\n\t\t\t}\n\n\t\t\tthat.running = true;\n\n\t\t\tfunction complete() {\n\t\t\t\tthat.running = false;\n\t\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t\t}\n\n\t\t\tfunction show() {\n\t\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\t\tif ( toShow.length && fx.show ) {\n\t\t\t\t\ttoShow\n\t\t\t\t\t\t.animate( fx.show, fx.show.duration, function() {\n\t\t\t\t\t\t\tcomplete();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoShow.show();\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start out by hiding, then showing, then completing\n\t\t\tif ( toHide.length && fx.hide ) {\n\t\t\t\ttoHide.animate( fx.hide, fx.hide.duration, function() {\n\t\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\t\tshow();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\ttoHide.hide();\n\t\t\t\tshow();\n\t\t\t}\n\t\t}\n\t});\n}\n\n})( jQuery );\n(function( $ ) {\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.9.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t\tthat._updateContent( element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, events, delayedShow,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tremove: function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t}\n\t\t};\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[0] !== this.element[0] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n}( jQuery ) );\n;(jQuery.effects || (function($, undefined) {\n\nvar backCompat = $.uiBackCompat !== false,\n\t// prefix used for storing data on .data()\n\tdataSpace = \"ui-effects-\";\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.0.0\n * http://jquery.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Mon Aug 13 13:41:02 2012 -0500\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\".split(\" \"),\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [{\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && $.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + (q - p) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + (q - p) * ((2/3) - h) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function ( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\tif ( l === 0 || l === 1 ) {\n\t\ts = l;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function ( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add .fx.step functions\neach( stepHooks, function( i, hook ) {\n\tjQuery.cssHooks[ hook ] = {\n\t\tset: function( elem, value ) {\n\t\t\tvar parsed, curElem,\n\t\t\t\tbackgroundColor = \"\";\n\n\t\t\tif ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) {\n\t\t\t\tvalue = color( parsed || value );\n\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\twhile (\n\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\"_default\" );\n\t\t\t\t}\n\n\t\t\t\tvalue = value.toRgbaString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\telem.style[ hook ] = value;\n\t\t\t} catch( error ) {\n\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t}\n\t\t}\n\t};\n\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\tif ( !fx.colorInit ) {\n\t\t\tfx.start = color( fx.elem, hook );\n\t\t\tfx.end = color( fx.end );\n\t\t\tfx.colorInit = true;\n\t\t}\n\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t};\n});\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles() {\n\tvar style = this.ownerDocument.defaultView ?\n\t\t\tthis.ownerDocument.defaultView.getComputedStyle( this, null ) :\n\t\t\tthis.currentStyle,\n\t\tnewStyle = {},\n\t\tkey,\n\t\tlen;\n\n\t// webkit enumerates style porperties\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tnewStyle[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newStyle;\n}\n\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).andSelf() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles.call( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles.call( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = jQuery.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, '' );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\t_addClass: $.fn.addClass,\n\taddClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\tthis._addClass( classNames );\n\t},\n\n\t_removeClass: $.fn.removeClass,\n\tremoveClass: function( classNames, speed, easing, callback ) {\n\t\treturn speed ?\n\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\tthis._removeClass( classNames );\n\t},\n\n\t_toggleClass: $.fn.toggleClass,\n\ttoggleClass: function( classNames, force, speed, easing, callback ) {\n\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\tif ( !speed ) {\n\t\t\t\t// without speed parameter\n\t\t\t\treturn this._toggleClass( classNames, force );\n\t\t\t} else {\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\tspeed, easing, callback );\n\t\t\t}\n\t\t} else {\n\t\t\t// without force parameter\n\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t}\n\t},\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.9.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor( var i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor( i=0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardSpeed( speed ) {\n\t// valid standard speeds\n\tif ( !speed || typeof speed === \"number\" || $.fx.speeds[ speed ] ) {\n\t\treturn true;\n\t}\n\n\t// invalid strings - treat as \"normal\" speed\n\tif ( typeof speed === \"string\" && !$.effects.effect[ speed ] ) {\n\t\t// TODO: remove in 2.0 (#7115)\n\t\tif ( backCompat && $.effects[ speed ] ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\toldEffectMethod = !effectMethod && backCompat && $.effects[ args.effect ];\n\n\t\tif ( $.fx.off || !( effectMethod || oldEffectMethod ) ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the element is hiddden and mode is hide,\n\t\t\t// or element is visible and mode is show\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\t// TODO: remove this check in 2.0, effectMethod will always be true\n\t\tif ( effectMethod ) {\n\t\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t\t} else {\n\t\t\t// DEPRECATED: remove in 2.0 (#7115)\n\t\t\treturn oldEffectMethod.call(this, {\n\t\t\t\toptions: args,\n\t\t\t\tduration: args.duration,\n\t\t\t\tcallback: args.complete,\n\t\t\t\tmode: args.mode\n\t\t\t});\n\t\t}\n\t},\n\n\t_show: $.fn.show,\n\tshow: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._show.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"show\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t_hide: $.fn.hide,\n\thide: function( speed ) {\n\t\tif ( standardSpeed( speed ) ) {\n\t\t\treturn this._hide.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"hide\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// jQuery core overloads toggle and creates _toggle\n\t__toggle: $.fn.toggle,\n\ttoggle: function( speed ) {\n\t\tif ( standardSpeed( speed ) || typeof speed === \"boolean\" || $.isFunction( speed ) ) {\n\t\t\treturn this.__toggle.apply( this, arguments );\n\t\t} else {\n\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\targs.mode = \"toggle\";\n\t\t\treturn this.effect.call( this, args );\n\t\t}\n\t},\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function ( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function ( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function ( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\n})(jQuery));\n(function( $, undefined ) {\n\nvar rvertical = /up|down|vertical/,\n\trpositivemotion = /up|left|vertical|horizontal/;\n\n$.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( ! motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\": \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n})( jQuery );\n(function( $, undefined ) {\n\n$.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n$.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [\"middle\",\"center\"];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n$.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function(){\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round(o.duration/anims),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop ,\n\t\t\tleft: endPosition.left - fixLeft ,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( '<div class=\"ui-effects-transfer\"></div>' )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop ,\n\t\t\t\tleft: startPosition.left - fixLeft ,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/README.md",
    "content": "# jQuery UI Touch Punch\n## Touch Event Support for jQuery UI\n\n> **jQuery UI Touch Punch is a small hack that enables the use of touch events on sites using the jQuery UI user interface library.**\n\n_[Visit the official Touch Punch website](http://touchpunch.furf.com)._\n\nCurrently, [jQuery UI](http://jqueryui.com/) user interface library does not support the use of touch events in their widgets and interactions. This means that the slick UI you designed and tested in your desktop browser will fail on most, if not all, touch-enabled mobile devices, becuase jQuery UI listens to mouse events—mouseover, mousemove and mouseout—not touch events—touchstart, touchmove and touchend.\n\nThat's where jQuery UI Touch Punch comes in. Touch Punch works by using [simulated events](https://developer.mozilla.org/en/DOM/document.createEvent) to map [touch events](http://www.html5rocks.com/en/mobile/touch/) to their mouse event analogs. Simply include the script on your page and your touch events will be turned into their corresponding mouse events to which jQuery UI will respond as expected.\n\nAs I said, Touch Punch is a hack. It [duck punches](http://en.wikipedia.org/wiki/Monkey_patch) some of jQuery UI's core functionality to handle the mapping of touch events. Touch Punch works with all basic implementations of jQuery UI's interactions and widgets. However, you may find more complex cases where Touch Punch fails. If so, scroll down to learn how you can file and/or fix issues.\n\nThis code is dual licensed under the MIT or GPL Version 2 licenses and is therefore free to use, modify and/or distribute, but if you include Touch Punch in other software packages or plugins, please include an attribution to the original software and a link to [this Touch Punch website](http://touchpunch.furf.com/).\n\n## Using Touch Punch is as easy as 1, 2…\n\nJust follow these simple steps to enable touch events in your jQuery UI app:\n\n1. Include jQuery and jQuery UI on your page.\n\n    ```html\n    <script src=\"http://code.jquery.com/jquery.min.js\"></script>\n    <script src=\"http://code.jquery.com/ui/1.8.17/jquery-ui.min.js\"></script>\n    ```\n\n2. Include Touch Punch after jQuery UI and before its first use.\n\n    Please note that if you are using jQuery UI's components, Touch Punch must be included after jquery.ui.mouse.js, as Touch Punch modifies its behavior.\n\n    ```html\n    <script src=\"jquery.ui.touch-punch.min.js\"></script>\n    ```\n\n3. There is no 3. Just use jQuery UI as expected and watch it work at the touch of a finger.\n\n    ```html\n    <script>$('#widget').draggable();</script>\n    ```\n\n_Tested on iPad, iPhone, Android and other touch-enabled mobile devices._\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery-ui-touch-punch/jquery.ui.touch-punch.js",
    "content": "/*!\n * jQuery UI Touch Punch 0.2.2\n *\n * Copyright 2011, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n(function ($) {\n\n  // Detect touch support\n  $.support.touch = 'ontouchend' in document;\n\n  // Ignore browsers without touch support\n  if (!$.support.touch) {\n    return;\n  }\n\n  var mouseProto = $.ui.mouse.prototype,\n      _mouseInit = mouseProto._mouseInit,\n      touchHandled;\n\n  /**\n   * Simulate a mouse event based on a corresponding touch event\n   * @param {Object} event A touch event\n   * @param {String} simulatedType The corresponding mouse event\n   */\n  function simulateMouseEvent (event, simulatedType) {\n\n    // Ignore multi-touch events\n    if (event.originalEvent.touches.length > 1) {\n      return;\n    }\n\n    event.preventDefault();\n\n    var touch = event.originalEvent.changedTouches[0],\n        simulatedEvent = document.createEvent('MouseEvents');\n    \n    // Initialize the simulated mouse event using the touch event's coordinates\n    simulatedEvent.initMouseEvent(\n      simulatedType,    // type\n      true,             // bubbles                    \n      true,             // cancelable                 \n      window,           // view                       \n      1,                // detail                     \n      touch.screenX,    // screenX                    \n      touch.screenY,    // screenY                    \n      touch.clientX,    // clientX                    \n      touch.clientY,    // clientY                    \n      false,            // ctrlKey                    \n      false,            // altKey                     \n      false,            // shiftKey                   \n      false,            // metaKey                    \n      0,                // button                     \n      null              // relatedTarget              \n    );\n\n    // Dispatch the simulated event to the target element\n    event.target.dispatchEvent(simulatedEvent);\n  }\n\n  /**\n   * Handle the jQuery UI widget's touchstart events\n   * @param {Object} event The widget element's touchstart event\n   */\n  mouseProto._touchStart = function (event) {\n\n    var self = this;\n\n    // Ignore the event if another widget is already being handled\n    if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {\n      return;\n    }\n\n    // Set the flag to prevent other widgets from inheriting the touch event\n    touchHandled = true;\n\n    // Track movement to determine if interaction was a click\n    self._touchMoved = false;\n\n    // Simulate the mouseover event\n    simulateMouseEvent(event, 'mouseover');\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n\n    // Simulate the mousedown event\n    simulateMouseEvent(event, 'mousedown');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchmove events\n   * @param {Object} event The document's touchmove event\n   */\n  mouseProto._touchMove = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Interaction was not a click\n    this._touchMoved = true;\n\n    // Simulate the mousemove event\n    simulateMouseEvent(event, 'mousemove');\n  };\n\n  /**\n   * Handle the jQuery UI widget's touchend events\n   * @param {Object} event The document's touchend event\n   */\n  mouseProto._touchEnd = function (event) {\n\n    // Ignore event if not handled\n    if (!touchHandled) {\n      return;\n    }\n\n    // Simulate the mouseup event\n    simulateMouseEvent(event, 'mouseup');\n\n    // Simulate the mouseout event\n    simulateMouseEvent(event, 'mouseout');\n\n    // If the touch interaction did not move, it should trigger a click\n    if (!this._touchMoved) {\n\n      // Simulate the click event\n      simulateMouseEvent(event, 'click');\n    }\n\n    // Unset the flag to allow other widgets to inherit the touch event\n    touchHandled = false;\n  };\n\n  /**\n   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n   * This method extends the widget with bound touch event handlers that\n   * translate touch events to mouse events and pass them to the widget's\n   * original mouse event handling methods.\n   */\n  mouseProto._mouseInit = function () {\n    \n    var self = this;\n\n    // Delegate the touch handlers to the widget's element\n    self.element\n      .bind('touchstart', $.proxy(self, '_touchStart'))\n      .bind('touchmove', $.proxy(self, '_touchMove'))\n      .bind('touchend', $.proxy(self, '_touchEnd'));\n\n    // Call the original $.ui.mouse init method\n    _mouseInit.call(self);\n  };\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/jquery.cookie.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.3\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2011, Klaus Hartl\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.opensource.org/licenses/GPL-2.0\n */\n(function ($, document, undefined) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction raw(s) {\n\t\treturn s;\n\t}\n\n\tfunction decoded(s) {\n\t\treturn decodeURIComponent(s.replace(pluses, ' '));\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// write\n\t\tif (value !== undefined) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (value === null) {\n\t\t\t\toptions.expires = -1;\n\t\t\t}\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setDate(t.getDate() + days);\n\t\t\t}\n\n\t\t\tvalue = config.json ? JSON.stringify(value) : String(value);\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// read\n\t\tvar decode = config.raw ? raw : decoded;\n\t\tvar cookies = document.cookie.split('; ');\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tif (decode(parts.shift()) === key) {\n\t\t\t\tvar cookie = decode(parts.join('='));\n\t\t\t\treturn config.json ? JSON.parse(cookie) : cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) !== null) {\n\t\t\t$.cookie(key, null, options);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n})(jQuery, document);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/system/modernizr.js",
    "content": "/* Modernizr 2.6.2 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-csstransforms3d-csstransitions-touch-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load\n */\n;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+\";\")+(b||\"\"))}function B(a,b){return typeof a===b}function C(a,b){return!!~(\"\"+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,\"-\")&&j[e]!==c)return b==\"pfx\"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,\"function\")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+\" \"+o.join(d+\" \")+d).split(\" \");return B(b,\"string\")||B(b,\"undefined\")?D(e,b):(e=(a+\" \"+p.join(d+\" \")+d).split(\" \"),E(e,b,c))}var d=\"2.6.2\",e={},f=!0,g=b.documentElement,h=\"modernizr\",i=b.createElement(h),j=i.style,k,l={}.toString,m=\" -webkit- -moz- -o- -ms- \".split(\" \"),n=\"Webkit Moz O ms\",o=n.split(\" \"),p=n.toLowerCase().split(\" \"),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement(\"div\"),m=b.body,n=m||b.createElement(\"body\");if(parseInt(d,10))while(d--)j=b.createElement(\"div\"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=[\"&#173;\",'<style id=\"s',h,'\">',a,\"</style>\"].join(\"\"),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background=\"\",n.style.overflow=\"hidden\",k=g.style.overflow,g.style.overflow=\"hidden\",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,\"undefined\")&&!B(x.call,\"undefined\")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],\"undefined\")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!=\"function\")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return\"ontouchstart\"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w([\"@media (\",m.join(\"touch-enabled),(\"),h,\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\"),function(a){c=a.offsetTop===9}),c},q.csstransforms3d=function(){var a=!!F(\"perspective\");return a&&\"webkitPerspective\"in g.style&&w(\"@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}\",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F(\"transition\")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?\"\":\"no-\")+v));return e.addTest=function(a,b){if(typeof a==\"object\")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b==\"function\"?b():b,typeof f!=\"undefined\"&&f&&(g.className+=\" \"+(b?\"\":\"no-\")+a),e[a]=b}return e},z(\"\"),i=k=null,function(a,b){function k(a,b){var c=a.createElement(\"p\"),d=a.getElementsByTagName(\"head\")[0]||a.documentElement;return c.innerHTML=\"x<style>\"+b+\"</style>\",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a==\"string\"?a.split(\" \"):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+l().join().replace(/\\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c(\"'+a+'\")'})+\");return n}\")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,\"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}\")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g=\"_html5shiv\",h=0,i={},j;(function(){try{var a=b.createElement(\"a\");a.innerHTML=\"<xyz></xyz>\",f=\"hidden\"in a,j=a.childNodes.length==1||function(){b.createElement(\"a\");var a=b.createDocumentFragment();return typeof a.cloneNode==\"undefined\"||typeof a.createDocumentFragment==\"undefined\"||typeof a.createElement==\"undefined\"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||\"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video\",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:\"default\",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,g.className=g.className.replace(/(^|\\s)no-js(\\s|$)/,\"$1$2\")+(f?\" js \"+t.join(\" \"):\"\"),e}(this,this.document),function(a,b,c){function d(a){return\"[object Function]\"==o.call(a)}function e(a){return\"string\"==typeof a}function f(){}function g(a){return!a||\"loaded\"==a||\"complete\"==a||\"uninitialized\"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){(\"c\"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){\"img\"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),\"object\"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height=\"0\",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),\"img\"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||\"j\",e(a)?i(\"c\"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName(\"script\")[0],o={}.toString,p=[],q=0,r=\"MozAppearance\"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&\"[object Opera]\"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?\"object\":l?\"script\":\"img\",v=l?\"script\":u,w=Array.isArray||function(a){return\"[object Array]\"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split(\"!\"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(\"=\"),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(\".\").pop().split(\"?\").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(\"/\").pop().split(\"?\")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&\"css\"==i.url.split(\".\").pop().split(\"?\").shift()?\"c\":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState=\"loading\",b.addEventListener(\"DOMContentLoaded\",A=function(){b.removeEventListener(\"DOMContentLoaded\",A,0),b.readyState=\"complete\"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement(\"script\"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement(\"link\"),j,c=i?h:c||f;e.href=a,e.rel=\"stylesheet\",e.type=\"text/css\";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/34cdb56b2c.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oApi - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oApi</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>#</span> » oApi</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (85)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (85)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Reference to internal functions for use by plug-in developers. Note that these\nmethods are references to internal functions and are considered to be private.\nIf you use these methods, be aware that they are liable to change between versions\n(check the upgrade notes).</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnJsonString\">_fnJsonString</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\nlibrary, then we use that as it is fast, safe and accurate. If the function isn't \navailable then we need to built it ourselves - the inspiration for this function comes\nfrom Craig Buckler ( <a href='http://www.sitepoint.com/javascript-json-serialization/'>http://www.sitepoint.com/javascript-json-serialization/</a> ). It is\nnot perfect and absolutely should not be used as a replacement to json2.js - but it does\ndo what we need, without requiring a dependency for DataTables.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddColumn\">_fnAddColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nTh)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add a column to the list used for the table with default values</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddData\">_fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Add a data array to the table, creating DOM node etc. This is the parallel to \n_fnGatherData, but for adding rows from a Javascript source, rather than a\nDOM source.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAddOptionsHtml\">_fnAddOptionsHtml</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add the options to the page HTML for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAdjustColumnSizing\">_fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Adjust the table column widths for new data. Note: you would probably want to \ndo a redraw after calling this function!</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxParameters\">_fnAjaxParameters</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></dt><dd class=\"  even\"><p>Build up the parameters in an object needed for a server-side processing request</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxUpdate\">_fnAjaxUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Update the table using an Ajax call</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnAjaxUpdateDraw\">_fnAjaxUpdateDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, json)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Data the data from the server (nuking the old) and redraw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnApplyColumnDefs\">_fnApplyColumnDefs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aoColDefs, aoCols, fn)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Take the column definitions and static columns arrays and calculate how\nthey relate to column indexes. The callback function will then apply the\ndefinition found for a column to a suitable configuration object.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnApplyToChildren\">_fnApplyToChildren</a></span><span class=\"type-sig\"><span class=\"signature\">(fn, array, array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply a given function to the display child nodes of an element array (typically\nTD children of TR rows</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBindAction\">_fnBindAction</a></span><span class=\"type-sig\"><span class=\"signature\">(n, oData, fn)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Bind an event handers to allow a click or return key to activate the callback.\nThis is good for accessibility since a return on the keyboard will have the\nsame effect as a click, if the element has focus.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBrowserDetect\">_fnBrowserDetect</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>From some browsers (specifically IE6/7) we need special handling to work around browser\nbugs - this function is used to detect when these workarounds are needed.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildHead\">_fnBuildHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create the HTML header for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildSearchArray\">_fnBuildSearchArray</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMaster)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Create an array which can be quickly search through</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnBuildSearchRow\">_fnBuildSearchRow</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create a searchable string from a single data row</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCalculateColumnWidths\">_fnCalculateColumnWidths</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Calculate the width of columns for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCalculateEnd\">_fnCalculateEnd</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Recalculate the end point based on the start point</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCallbackFire\">_fnCallbackFire</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, sTrigger, aArgs)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Fire callback functions and trigger events. Note that the loop over the callback\narray store is done backwards! Further note that you do not want to fire off triggers\nin time sensitive applications (for example cell creation) as its slow.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCallbackReg\">_fnCallbackReg</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, fn, sName)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Register a callback function. Easily allows a callback function to be added to\nan array store of callback functions that can then all be called together.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnClearTable\">_fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Nuke the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnIndexToVisible\">_fnColumnIndexToVisible</a></span><span class=\"type-sig\"><span class=\"signature\">(iMatch, oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Covert the index of an index in the data array and convert it to the visible\n  column index (take account of hidden columns)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnOptions\">_fnColumnOptions</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol, oOptions)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply options for a column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnColumnOrdering\">_fnColumnOrdering</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Get the column ordering that DataTables expects</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnConvertToWidth\">_fnConvertToWidth</a></span><span class=\"type-sig\"><span class=\"signature\">(sWidth, nParent)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Convert a CSS unit width to pixels (e.g. 2em)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCreateCookie\">_fnCreateCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName, sValue, iSecs, sBaseName, fnCallback)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Create a new cookie with a value to store the state of a table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnCreateTr\">_fnCreateTr</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Create a new TR element (and it's TD children) for a row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDataToSearch\">_fnDataToSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sData, sType)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Convert raw data into something that the user can search on</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDeleteIndex\">_fnDeleteIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(a, iTarget)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Take an array of integers (index array) and remove a target integer (value - not \nthe key!)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDetectHeader\">_fnDetectHeader</a></span><span class=\"type-sig\"><span class=\"signature\">(array, nThead)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Use the DOM source to create up an array of header cells. The idea here is to\ncreate a layout grid (array) of rows x columns, which contains a reference\nto the cell that that point in the grid (regardless of col/rowspan), such that\nany column / row could be removed and the new grid constructed</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDetectType\">_fnDetectType</a></span><span class=\"type-sig\"><span class=\"signature\">(sData)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  even\"><p>Get the sort type based on an input string</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDraw\">_fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Insert the required TR nodes into the table for display</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnDrawHead\">_fnDrawHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array, <span class=\"optional\">bIncludeHidden</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Draw the header (or footer) element based on the column visibility states. The\nmethodology here is to use the layout array from _fnDetectHeader, modified for\nthe instantaneous column visibility, to construct the new layout. The grid is\ntraversed over cell at a time in a rows x columns grid fashion, although each \ncell insert can cover multiple elements in the grid - which is tracks using the\naApplied array. Cell inserts in the grid will only occur where there isn't\nalready a cell in that position.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnEscapeRegex\">_fnEscapeRegex</a></span><span class=\"type-sig\"><span class=\"signature\">(sVal)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>scape a string such that it can be used in a regular expression</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnExtend\">_fnExtend</a></span><span class=\"type-sig\"><span class=\"signature\">(oOut, oExtender)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\ncopy arrays. The reason we need to do this, is that we don't want to deep copy array\ninit values (such as aaSorting) since the dev wouldn't be able to override them, but\nwe do want to deep copy arrays.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnExternApiFunc\">_fnExternApiFunc</a></span><span class=\"type-sig\"><span class=\"signature\">(sFunc)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  odd\"><p>Create a wrapper function for exporting an internal functions to an external API.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlFilter\">_fnFeatureHtmlFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for filtering text</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlInfo\">_fnFeatureHtmlInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Generate the node required for the info display</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlLength\">_fnFeatureHtmlLength</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for user display length changing</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlPaginate\">_fnFeatureHtmlPaginate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Generate the node required for default pagination</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlProcessing\">_fnFeatureHtmlProcessing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Generate the node required for the processing node</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFeatureHtmlTable\">_fnFeatureHtmlTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Add any control elements for the table - specifically scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilter\">_fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Filter the data table based on user input and draw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterColumn\">_fnFilterColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Filter the table on a per-column basis</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterComplete\">_fnFilterComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oSearch, <span class=\"optional\">iForce</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Filter the table using both the global filter and column based filtering</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterCreateSearch\">_fnFilterCreateSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sSearch, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"> &rarr; {RegExp}</span></span></dt><dd class=\"  odd\"><p>Build a regular expression object suitable for searching a table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnFilterCustom\">_fnFilterCustom</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Apply custom filtering functions</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGatherData\">_fnGatherData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Read in the data from the target table from the DOM</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetCellData\">_fnGetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, sSpecific)</span><span class=\"type-signature\"> &rarr; {*}</span></span></dt><dd class=\"  even\"><p>Get the data for a given cell from the internal cache, taking into account data mapping</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetColumns\">_fnGetColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sParam)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get an array of column indexes that match a given property</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetDataMaster\">_fnGetDataMaster</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Return an array with the full table data</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetMaxLenString\">_fnGetMaxLenString</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  odd\"><p>Get the maximum strlen for each data column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetObjectDataFn\">_fnGetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  even\"><p>Return a function that can be used to get data from a source object, taking\ninto account the ability to use nested objects as a source</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetRowData\">_fnGetRowData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, sSpecific, aiColumns)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get an array of data for a given row from the internal data cache</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetTdNodes\">_fnGetTdNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">iIndividualRow</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Return an flat array with all TD nodes for the table, or row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetTrNodes\">_fnGetTrNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Return an array with the TR nodes for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetUniqueThs\">_fnGetUniqueThs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nHeader, aLayout)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Get an array of unique th elements, one for each column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnGetWidestNode\">_fnGetWidestNode</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  odd\"><p>Get the widest node</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnInitComplete\">_fnInitComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">json</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Draw the table for the first time, adding all required features</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnInitialise\">_fnInitialise</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Draw the table for the first time, adding all required features</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLanguageCompat\">_fnLanguageCompat</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Language compatibility - when certain options are given, and others aren't, we\nneed to duplicate the values over, in order to provide backwards compatibility\nwith older language files.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLoadState\">_fnLoadState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oInit)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attempt to load a saved table state from a cookie</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnLog\">_fnLog</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iLevel, sMesg)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Log an error message</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnMap\">_fnMap</a></span><span class=\"type-sig\"><span class=\"signature\">(oRet, oSrc, sName, <span class=\"optional\">sMappedName</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>See if a property is defined on one object, if so assign it to the other object</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnNodeToColumnIndex\">_fnNodeToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Take a TD element and convert it into a column data index (not the visible index)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnNodeToDataIndex\">_fnNodeToDataIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Take a TR element and convert it to an index in aoData</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnPageChange\">_fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, mAction)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></dt><dd class=\"  even\"><p>Alter the display settings to change the page</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnProcessingDisplay\">_fnProcessingDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bShow)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display or hide the processing indicator</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReadCookie\">_fnReadCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName)</span><span class=\"type-signature\"> &rarr; {string}</span></span></dt><dd class=\"  even\"><p>Read an old cookie to get a cookie with an old table state</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReDraw\">_fnReDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Redraw the table - taking account of the various features which are enabled</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnRender\">_fnRender</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol)</span><span class=\"type-signature\"> &rarr; {*}</span></span></dt><dd class=\"  even\"><p>Call the developer defined fnRender function for a given cell (row/column) with\nthe required parameters and return the result.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnReOrderIndex\">_fnReOrderIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Figure out how to reorder a display list</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSaveState\">_fnSaveState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Save the state of a table in a cookie such that the page can be reloaded</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollBarWidth\">_fnScrollBarWidth</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Get the width of a scroll bar in this browser being used</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollDraw\">_fnScrollDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(o)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>Update the various tables for resizing. It's a bit of a pig this function, but\nbasically the idea to:\n  1. Re-create the table inside the scrolling div\n  2. Take live measurements from the DOM\n  3. Apply the measurements\n  4. Clean up</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnScrollingWidthAdjust\">_fnScrollingWidthAdjust</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Adjust a table's width to take account of scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnServerParams\">_fnServerParams</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Add Ajax parameters from plug-ins</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSetCellData\">_fnSetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, val)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Set the value for a specific cell, into the internal data cache</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSetObjectDataFn\">_fnSetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></dt><dd class=\"  even\"><p>Return a function that can be used to set data from a source object, taking\ninto account the ability to use nested objects as a source</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSettingsFromNode\">_fnSettingsFromNode</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  odd\"><p>Return the settings object for a particular table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSort\">_fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bApplyClasses)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Change the order of the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSortAttachListener\">_fnSortAttachListener</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nNode, iDataIndex, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attach a sort handler (click) to a node</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnSortingClasses\">_fnSortingClasses</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Set the sorting classes on the header, Note: it is safe to call this function \nwhen bSort and bSortClasses are false</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnStringToCss\">_fnStringToCss</a></span><span class=\"type-sig\"><span class=\"signature\">(aArray1, aArray2)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Append a CSS unit (only if required) to a string</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnUpdateInfo\">_fnUpdateInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Update the information elements in the display</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnVisbleColumns\">_fnVisbleColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Get the number of visible columns</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnVisibleToColumnIndex\">_fnVisibleToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMatch)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Covert the index of a visible column to the index in the data array (take account\nof hidden columns)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"_fnJsonString\"></a><a name=\"_fnJsonString_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_fnJsonString\">_fnJsonString</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\nlibrary, then we use that as it is fast, safe and accurate. If the function isn't \navailable then we need to built it ourselves - the inspiration for this function comes\nfrom Craig Buckler ( <a href='http://www.sitepoint.com/javascript-json-serialization/'>http://www.sitepoint.com/javascript-json-serialization/</a> ). It is\nnot perfect and absolutely should not be used as a replacement to json2.js - but it does\ndo what we need, without requiring a dependency for DataTables.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable#oApi._fnAddColumn\" class=\"  even\"><a name=\"_fnAddColumn\"></a><a name=\"_fnAddColumn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nTh)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add a column to the list used for the table with default values</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nTh</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The th element for this column</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAddData\" class=\"  odd\"><a name=\"_fnAddData\"></a><a name=\"_fnAddData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Add a data array to the table, creating DOM node etc. This is the parallel to \n_fnGatherData, but for adding rows from a Javascript source, rather than a\nDOM source.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data array to be added</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><blockquote>\n  <p>=0 if successful (index of new aoData entry), -1 if failed</p>\n</blockquote></p></div>\n<dt id=\"DataTable#oApi._fnAddOptionsHtml\" class=\"  even\"><a name=\"_fnAddOptionsHtml\"></a><a name=\"_fnAddOptionsHtml_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAddOptionsHtml</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add the options to the page HTML for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAdjustColumnSizing\" class=\"  odd\"><a name=\"_fnAdjustColumnSizing\"></a><a name=\"_fnAdjustColumnSizing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Adjust the table column widths for new data. Note: you would probably want to \ndo a redraw after calling this function!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnAjaxParameters\" class=\"  even\"><a name=\"_fnAjaxParameters\"></a><a name=\"_fnAjaxParameters_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxParameters</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></span></dt><dd class=\"  even\"><p>Build up the parameters in an object needed for a server-side processing request</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>block the table drawing or not</p></p></div>\n<dt id=\"DataTable#oApi._fnAjaxUpdate\" class=\"  odd\"><a name=\"_fnAjaxUpdate\"></a><a name=\"_fnAjaxUpdate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Update the table using an Ajax call</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Block the table drawing or not</p></p></div>\n<dt id=\"DataTable#oApi._fnAjaxUpdateDraw\" class=\"  even\"><a name=\"_fnAjaxUpdateDraw\"></a><a name=\"_fnAjaxUpdateDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnAjaxUpdateDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, json)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Data the data from the server (nuking the old) and redraw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>json data return from the server.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.sEcho</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Tracking flag for DataTables to match requests</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.iTotalRecords</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Number of records in the data set, not accounting for filtering</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.iTotalDisplayRecords</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Number of records in the data set, accounting for filtering</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.aaData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data to display on this page</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">json.sColumns</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\"></td><td class=\"description last\"><p>Column ordering (sName, comma separated)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnApplyColumnDefs\" class=\"  odd\"><a name=\"_fnApplyColumnDefs\"></a><a name=\"_fnApplyColumnDefs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnApplyColumnDefs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aoColDefs, aoCols, fn)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Take the column definitions and static columns arrays and calculate how\nthey relate to column indexes. The callback function will then apply the\ndefinition found for a column to a suitable configuration object.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aoColDefs</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The aoColumnDefs array that is to be applied</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">aoCols</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The aoColumns array that defines columns individually</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Callback function - takes two parameters, the calculated\n   column index and the definition for that column.</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnApplyToChildren\" class=\"  even\"><a name=\"_fnApplyToChildren\"></a><a name=\"_fnApplyToChildren_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnApplyToChildren</a></span><span class=\"type-sig\"><span class=\"signature\">(fn, array, array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply a given function to the display child nodes of an element array (typically\nTD children of TR rows</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Method to apply to the objects</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{nodes} an1 List of elements to look through for display children</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{nodes} an2 Another list (identical structure to the first) - optional</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBindAction\" class=\"  odd\"><a name=\"_fnBindAction\"></a><a name=\"_fnBindAction_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBindAction</a></span><span class=\"type-sig\"><span class=\"signature\">(n, oData, fn)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Bind an event handers to allow a click or return key to activate the callback.\nThis is good for accessibility since a return on the keyboard will have the\nsame effect as a click, if the element has focus.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">n</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Element to bind the action to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data object to pass to the triggered function</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Callback function for when the event is triggered</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBrowserDetect\" class=\"  even\"><a name=\"_fnBrowserDetect\"></a><a name=\"_fnBrowserDetect_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBrowserDetect</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>From some browsers (specifically IE6/7) we need special handling to work around browser\nbugs - this function is used to detect when these workarounds are needed.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildHead\" class=\"  odd\"><a name=\"_fnBuildHead\"></a><a name=\"_fnBuildHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create the HTML header for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildSearchArray\" class=\"  even\"><a name=\"_fnBuildSearchArray\"></a><a name=\"_fnBuildSearchArray_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildSearchArray</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMaster)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Create an array which can be quickly search through</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iMaster</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>use the master data array - optional</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnBuildSearchRow\" class=\"  odd\"><a name=\"_fnBuildSearchRow\"></a><a name=\"_fnBuildSearchRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnBuildSearchRow</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, aData)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create a searchable string from a single data row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row data array to use for the data to search</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCalculateColumnWidths\" class=\"  even\"><a name=\"_fnCalculateColumnWidths\"></a><a name=\"_fnCalculateColumnWidths_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCalculateColumnWidths</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Calculate the width of columns for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCalculateEnd\" class=\"  odd\"><a name=\"_fnCalculateEnd\"></a><a name=\"_fnCalculateEnd_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCalculateEnd</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Recalculate the end point based on the start point</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCallbackFire\" class=\"  even\"><a name=\"_fnCallbackFire\"></a><a name=\"_fnCallbackFire_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCallbackFire</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, sTrigger, aArgs)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Fire callback functions and trigger events. Note that the loop over the callback\narray store is done backwards! Further note that you do not want to fire off triggers\nin time sensitive applications (for example cell creation) as its slow.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sStore</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the array storage for the callbacks in oSettings</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sTrigger</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the jQuery custom event to trigger. If null no trigger\n   is fired</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">aArgs</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Array of arguments to pass to the callback function / trigger</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCallbackReg\" class=\"  odd\"><a name=\"_fnCallbackReg\"></a><a name=\"_fnCallbackReg_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCallbackReg</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sStore, fn, sName)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Register a callback function. Easily allows a callback function to be added to\nan array store of callback functions that can then all be called together.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sStore</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the array storage for the callbacks in oSettings</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fn</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Function to be called back</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Identifying name for the callback (i.e. a label)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnClearTable\" class=\"  even\"><a name=\"_fnClearTable\"></a><a name=\"_fnClearTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Nuke the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnColumnIndexToVisible\" class=\"  odd\"><a name=\"_fnColumnIndexToVisible\"></a><a name=\"_fnColumnIndexToVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnIndexToVisible</a></span><span class=\"type-sig\"><span class=\"signature\">(iMatch, oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Covert the index of an index in the data array and convert it to the visible\n  column index (take account of hidden columns)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iMatch</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index to lookup</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the data index</p></p></div>\n<dt id=\"DataTable#oApi._fnColumnOptions\" class=\"  even\"><a name=\"_fnColumnOptions\"></a><a name=\"_fnColumnOptions_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnOptions</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol, oOptions)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply options for a column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column index to consider</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oOptions</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>object with sType, bVisible and bSearchable etc</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnColumnOrdering\" class=\"  odd\"><a name=\"_fnColumnOrdering\"></a><a name=\"_fnColumnOrdering_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnColumnOrdering</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Get the column ordering that DataTables expects</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>comma separated list of names</p></p></div>\n<dt id=\"DataTable#oApi._fnConvertToWidth\" class=\"  even\"><a name=\"_fnConvertToWidth\"></a><a name=\"_fnConvertToWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnConvertToWidth</a></span><span class=\"type-sig\"><span class=\"signature\">(sWidth, nParent)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Convert a CSS unit width to pixels (e.g. 2em)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sWidth</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>width to be converted</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nParent</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>parent to get the with for (required for relative widths) - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>iWidth width in pixels</p></p></div>\n<dt id=\"DataTable#oApi._fnCreateCookie\" class=\"  odd\"><a name=\"_fnCreateCookie\"></a><a name=\"_fnCreateCookie_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCreateCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName, sValue, iSecs, sBaseName, fnCallback)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Create a new cookie with a value to store the state of a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>name of the cookie to create</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sValue</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the value the cookie should take</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iSecs</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>duration of the cookie</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sBaseName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>sName is made up of the base + file name - this is the base</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>User definable function to modify the cookie</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnCreateTr\" class=\"  even\"><a name=\"_fnCreateTr\"></a><a name=\"_fnCreateTr_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnCreateTr</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Create a new TR element (and it's TD children) for a row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row to consider</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDataToSearch\" class=\"  odd\"><a name=\"_fnDataToSearch\"></a><a name=\"_fnDataToSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDataToSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sData, sType)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Convert raw data into something that the user can search on</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sData</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data to be modified</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sType</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data type</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>search string</p></p></div>\n<dt id=\"DataTable#oApi._fnDeleteIndex\" class=\"  even\"><a name=\"_fnDeleteIndex\"></a><a name=\"_fnDeleteIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDeleteIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(a, iTarget)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Take an array of integers (index array) and remove a target integer (value - not \nthe key!)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">a</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to target</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iTarget</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>value to find</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDetectHeader\" class=\"  odd\"><a name=\"_fnDetectHeader\"></a><a name=\"_fnDetectHeader_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDetectHeader</a></span><span class=\"type-sig\"><span class=\"signature\">(array, nThead)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Use the DOM source to create up an array of header cells. The idea here is to\ncreate a layout grid (array) of rows x columns, which contains a reference\nto the cell that that point in the grid (regardless of col/rowspan), such that\nany column / row could be removed and the new grid constructed</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{object} aLayout Array to store the calculated layout in</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nThead</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The header/footer element for the table</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDetectType\" class=\"  even\"><a name=\"_fnDetectType\"></a><a name=\"_fnDetectType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDetectType</a></span><span class=\"type-sig\"><span class=\"signature\">(sData)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  even\"><p>Get the sort type based on an input string</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sData</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data we wish to know the type of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>type (defaults to 'string' if no type can be detected)</p></p></div>\n<dt id=\"DataTable#oApi._fnDraw\" class=\"  odd\"><a name=\"_fnDraw\"></a><a name=\"_fnDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Insert the required TR nodes into the table for display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnDrawHead\" class=\"  even\"><a name=\"_fnDrawHead\"></a><a name=\"_fnDrawHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnDrawHead</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array, <span class=\"optional\">bIncludeHidden</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Draw the header (or footer) element based on the column visibility states. The\nmethodology here is to use the layout array from _fnDetectHeader, modified for\nthe instantaneous column visibility, to construct the new layout. The grid is\ntraversed over cell at a time in a rows x columns grid fashion, although each \ncell insert can cover multiple elements in the grid - which is tracks using the\naApplied array. Cell inserts in the grid will only occur where there isn't\nalready a cell in that position.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{objects} aoSource Layout array from _fnDetectHeader</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bIncludeHidden</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>If true then include the hidden columns in the calc,</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnEscapeRegex\" class=\"  odd\"><a name=\"_fnEscapeRegex\"></a><a name=\"_fnEscapeRegex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnEscapeRegex</a></span><span class=\"type-sig\"><span class=\"signature\">(sVal)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>scape a string such that it can be used in a regular expression</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVal</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to escape</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>escaped string</p></p></div>\n<dt id=\"DataTable#oApi._fnExtend\" class=\"  even\"><a name=\"_fnExtend\"></a><a name=\"_fnExtend_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnExtend</a></span><span class=\"type-sig\"><span class=\"signature\">(oOut, oExtender)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\ncopy arrays. The reason we need to do this, is that we don't want to deep copy array\ninit values (such as aaSorting) since the dev wouldn't be able to override them, but\nwe do want to deep copy arrays.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oOut</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object to extend</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oExtender</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object from which the properties will be applied to oOut</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>oOut Reference, just for convenience - oOut === the return.</p></p></div>\n<dt id=\"DataTable#oApi._fnExternApiFunc\" class=\"  odd\"><a name=\"_fnExternApiFunc\"></a><a name=\"_fnExternApiFunc_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnExternApiFunc</a></span><span class=\"type-sig\"><span class=\"signature\">(sFunc)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  odd\"><p>Create a wrapper function for exporting an internal functions to an external API.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sFunc</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>API function name</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>wrapped function</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlFilter\" class=\"  even\"><a name=\"_fnFeatureHtmlFilter\"></a><a name=\"_fnFeatureHtmlFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for filtering text</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Filter control element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlInfo\" class=\"  odd\"><a name=\"_fnFeatureHtmlInfo\"></a><a name=\"_fnFeatureHtmlInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Generate the node required for the info display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Information element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlLength\" class=\"  even\"><a name=\"_fnFeatureHtmlLength\"></a><a name=\"_fnFeatureHtmlLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlLength</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for user display length changing</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Display length feature node</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlPaginate\" class=\"  odd\"><a name=\"_fnFeatureHtmlPaginate\"></a><a name=\"_fnFeatureHtmlPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlPaginate</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Generate the node required for default pagination</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Pagination feature node</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlProcessing\" class=\"  even\"><a name=\"_fnFeatureHtmlProcessing\"></a><a name=\"_fnFeatureHtmlProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlProcessing</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Generate the node required for the processing node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Processing element</p></p></div>\n<dt id=\"DataTable#oApi._fnFeatureHtmlTable\" class=\"  odd\"><a name=\"_fnFeatureHtmlTable\"></a><a name=\"_fnFeatureHtmlTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFeatureHtmlTable</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Add any control elements for the table - specifically scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Node to add to the DOM</p></p></div>\n<dt id=\"DataTable#oApi._fnFilter\" class=\"  even\"><a name=\"_fnFilter\"></a><a name=\"_fnFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Filter the data table based on user input and draw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to filter on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iForce</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>optional - force a research of the master array (1) or not (undefined or 0)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>perform smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insenstive matching or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterColumn\" class=\"  odd\"><a name=\"_fnFilterColumn\"></a><a name=\"_fnFilterColumn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterColumn</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Filter the table on a per-column basis</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to filter on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column to filter</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat search string as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>use smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insenstive matching or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterComplete\" class=\"  even\"><a name=\"_fnFilterComplete\"></a><a name=\"_fnFilterComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oSearch, <span class=\"optional\">iForce</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Filter the table using both the global filter and column based filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSearch</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>search information</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iForce</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>force a research of the master array (1) or not (undefined or 0)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnFilterCreateSearch\" class=\"  odd\"><a name=\"_fnFilterCreateSearch\"></a><a name=\"_fnFilterCreateSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterCreateSearch</a></span><span class=\"type-sig\"><span class=\"signature\">(sSearch, bRegex, bSmart, bCaseInsensitive)</span><span class=\"type-signature\"> &rarr; {RegExp}</span></span></span></dt><dd class=\"  odd\"><p>Build a regular expression object suitable for searching a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSearch</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>string to search for</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>treat as a regular expression or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>perform smart filtering or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Do case insensitive matching or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>constructed object</p></p></div>\n<dt id=\"DataTable#oApi._fnFilterCustom\" class=\"  even\"><a name=\"_fnFilterCustom\"></a><a name=\"_fnFilterCustom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnFilterCustom</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Apply custom filtering functions</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnGatherData\" class=\"  odd\"><a name=\"_fnGatherData\"></a><a name=\"_fnGatherData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGatherData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Read in the data from the target table from the DOM</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnGetCellData\" class=\"  even\"><a name=\"_fnGetCellData\"></a><a name=\"_fnGetCellData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, sSpecific)</span><span class=\"type-signature\"> &rarr; {*}</span></span></span></dt><dd class=\"  even\"><p>Get the data for a given cell from the internal cache, taking into account data mapping</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data get type ('display', 'type' 'filter' 'sort')</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Cell data</p></p></div>\n<dt id=\"DataTable#oApi._fnGetColumns\" class=\"  odd\"><a name=\"_fnGetColumns\"></a><a name=\"_fnGetColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, sParam)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of column indexes that match a given property</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sParam</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Parameter in aoColumns to look for - typically \n   bVisible or bSearchable</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Array of indexes with matched properties</p></p></div>\n<dt id=\"DataTable#oApi._fnGetDataMaster\" class=\"  even\"><a name=\"_fnGetDataMaster\"></a><a name=\"_fnGetDataMaster_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetDataMaster</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Return an array with the full table data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {array} aData Master data array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetMaxLenString\" class=\"  odd\"><a name=\"_fnGetMaxLenString\"></a><a name=\"_fnGetMaxLenString_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetMaxLenString</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  odd\"><p>Get the maximum strlen for each data column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column of interest</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>max string length for each column</p></p></div>\n<dt id=\"DataTable#oApi._fnGetObjectDataFn\" class=\"  even\"><a name=\"_fnGetObjectDataFn\"></a><a name=\"_fnGetObjectDataFn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  even\"><p>Return a function that can be used to get data from a source object, taking\ninto account the ability to use nested objects as a source</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mSource</td><td class=\"type type-param\">string | int | function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data source for the object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data get function</p></p></div>\n<dt id=\"DataTable#oApi._fnGetRowData\" class=\"  odd\"><a name=\"_fnGetRowData\"></a><a name=\"_fnGetRowData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetRowData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, sSpecific, aiColumns)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of data for a given row from the internal data cache</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>data get type ('type' 'filter' 'sort')</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">aiColumns</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Array of column indexes to get data from</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetTdNodes\" class=\"  even\"><a name=\"_fnGetTdNodes\"></a><a name=\"_fnGetTdNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetTdNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">iIndividualRow</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Return an flat array with all TD nodes for the table, or row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iIndividualRow</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>aoData index to get the nodes for - optional \n   if not given then the return array will contain all nodes for the table</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>TD array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetTrNodes\" class=\"  odd\"><a name=\"_fnGetTrNodes\"></a><a name=\"_fnGetTrNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetTrNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Return an array with the TR nodes for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>TR array</p></p></div>\n<dt id=\"DataTable#oApi._fnGetUniqueThs\" class=\"  even\"><a name=\"_fnGetUniqueThs\"></a><a name=\"_fnGetUniqueThs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetUniqueThs</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nHeader, aLayout)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Get an array of unique th elements, one for each column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nHeader</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>automatically detect the layout from this node - optional</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">aLayout</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>thead/tfoot layout from _fnDetectHeader - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {node} aReturn list of unique th's</p></p></div>\n<dt id=\"DataTable#oApi._fnGetWidestNode\" class=\"  odd\"><a name=\"_fnGetWidestNode\"></a><a name=\"_fnGetWidestNode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnGetWidestNode</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iCol)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  odd\"><p>Get the widest node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column of interest</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>widest table node</p></p></div>\n<dt id=\"DataTable#oApi._fnInitComplete\" class=\"  even\"><a name=\"_fnInitComplete\"></a><a name=\"_fnInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnInitComplete</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, <span class=\"optional\">json</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Draw the table for the first time, adding all required features</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>JSON from the server that completed the table, if using Ajax source\n   with client-side processing (optional)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnInitialise\" class=\"  odd\"><a name=\"_fnInitialise\"></a><a name=\"_fnInitialise_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnInitialise</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Draw the table for the first time, adding all required features</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLanguageCompat\" class=\"  even\"><a name=\"_fnLanguageCompat\"></a><a name=\"_fnLanguageCompat_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLanguageCompat</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Language compatibility - when certain options are given, and others aren't, we\nneed to duplicate the values over, in order to provide backwards compatibility\nwith older language files.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLoadState\" class=\"  odd\"><a name=\"_fnLoadState\"></a><a name=\"_fnLoadState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLoadState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, oInit)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attempt to load a saved table state from a cookie</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oInit</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables init object so we can override settings</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnLog\" class=\"  even\"><a name=\"_fnLog\"></a><a name=\"_fnLog_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnLog</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iLevel, sMesg)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Log an error message</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iLevel</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>log error messages, or display them to the user</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sMesg</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>error message</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnMap\" class=\"  odd\"><a name=\"_fnMap\"></a><a name=\"_fnMap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnMap</a></span><span class=\"type-sig\"><span class=\"signature\">(oRet, oSrc, sName, <span class=\"optional\">sMappedName</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>See if a property is defined on one object, if so assign it to the other object</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oRet</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>target object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSrc</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>source object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>property</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sMappedName</td><td class=\"type type-param\">string</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>name to map too - optional, sName used if not given</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnNodeToColumnIndex\" class=\"  even\"><a name=\"_fnNodeToColumnIndex\"></a><a name=\"_fnNodeToColumnIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnNodeToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Take a TD element and convert it into a column data index (not the visible index)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row number the TD/TH can be found in</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD/TH element to find</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>index if the node is found, -1 if not</p></p></div>\n<dt id=\"DataTable#oApi._fnNodeToDataIndex\" class=\"  odd\"><a name=\"_fnNodeToDataIndex\"></a><a name=\"_fnNodeToDataIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnNodeToDataIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Take a TR element and convert it to an index in aoData</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the TR element to find</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>index if the node is found, null if not</p></p></div>\n<dt id=\"DataTable#oApi._fnPageChange\" class=\"  even\"><a name=\"_fnPageChange\"></a><a name=\"_fnPageChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, mAction)</span><span class=\"type-signature\"> &rarr; {bool}</span></span></span></dt><dd class=\"  even\"><p>Alter the display settings to change the page</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mAction</td><td class=\"type type-param\">string | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n   or page number to jump to (integer)</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true page has changed, false - no change (no effect) eg 'first' on page 1</p></p></div>\n<dt id=\"DataTable#oApi._fnProcessingDisplay\" class=\"  odd\"><a name=\"_fnProcessingDisplay\"></a><a name=\"_fnProcessingDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnProcessingDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bShow)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display or hide the processing indicator</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Show the processing indicator (true) or not (false)</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnReadCookie\" class=\"  even\"><a name=\"_fnReadCookie\"></a><a name=\"_fnReadCookie_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReadCookie</a></span><span class=\"type-sig\"><span class=\"signature\">(sName)</span><span class=\"type-signature\"> &rarr; {string}</span></span></span></dt><dd class=\"  even\"><p>Read an old cookie to get a cookie with an old table state</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>name of the cookie to read</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>contents of the cookie - or null if no cookie with that name found</p></p></div>\n<dt id=\"DataTable#oApi._fnReDraw\" class=\"  odd\"><a name=\"_fnReDraw\"></a><a name=\"_fnReDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Redraw the table - taking account of the various features which are enabled</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnRender\" class=\"  even\"><a name=\"_fnRender\"></a><a name=\"_fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnRender</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol)</span><span class=\"type-signature\"> &rarr; {*}</span></span></span></dt><dd class=\"  even\"><p>Call the developer defined fnRender function for a given cell (row/column) with\nthe required parameters and return the result.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData index for the row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoColumns index for the column</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Return of the developer's fnRender function</p></p></div>\n<dt id=\"DataTable#oApi._fnReOrderIndex\" class=\"  odd\"><a name=\"_fnReOrderIndex\"></a><a name=\"_fnReOrderIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnReOrderIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Figure out how to reorder a display list</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array {int} aiReturn index list for reordering</p></p></div>\n<dt id=\"DataTable#oApi._fnSaveState\" class=\"  even\"><a name=\"_fnSaveState\"></a><a name=\"_fnSaveState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSaveState</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Save the state of a table in a cookie such that the page can be reloaded</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnScrollBarWidth\" class=\"  odd\"><a name=\"_fnScrollBarWidth\"></a><a name=\"_fnScrollBarWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollBarWidth</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Get the width of a scroll bar in this browser being used</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>width in pixels</p></p></div>\n<dt id=\"DataTable#oApi._fnScrollDraw\" class=\"  even\"><a name=\"_fnScrollDraw\"></a><a name=\"_fnScrollDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(o)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>Update the various tables for resizing. It's a bit of a pig this function, but\nbasically the idea to:\n  1. Re-create the table inside the scrolling div\n  2. Take live measurements from the DOM\n  3. Apply the measurements\n  4. Clean up</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Node to add to the DOM</p></p></div>\n<dt id=\"DataTable#oApi._fnScrollingWidthAdjust\" class=\"  odd\"><a name=\"_fnScrollingWidthAdjust\"></a><a name=\"_fnScrollingWidthAdjust_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnScrollingWidthAdjust</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, n)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Adjust a table's width to take account of scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">n</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>table node</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnServerParams\" class=\"  even\"><a name=\"_fnServerParams\"></a><a name=\"_fnServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnServerParams</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Add Ajax parameters from plug-ins</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>{objects} aoData name/value pairs to send to the server</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSetCellData\" class=\"  odd\"><a name=\"_fnSetCellData\"></a><a name=\"_fnSetCellData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSetCellData</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iRow, iCol, val)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Set the value for a specific cell, into the internal data cache</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aoData row id</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Column index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">val</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to set</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSetObjectDataFn\" class=\"  even\"><a name=\"_fnSetObjectDataFn\"></a><a name=\"_fnSetObjectDataFn_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSetObjectDataFn</a></span><span class=\"type-sig\"><span class=\"signature\">(mSource)</span><span class=\"type-signature\"> &rarr; {function}</span></span></span></dt><dd class=\"  even\"><p>Return a function that can be used to set data from a source object, taking\ninto account the ability to use nested objects as a source</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mSource</td><td class=\"type type-param\">string | int | function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data source for the object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data set function</p></p></div>\n<dt id=\"DataTable#oApi._fnSettingsFromNode\" class=\"  odd\"><a name=\"_fnSettingsFromNode\"></a><a name=\"_fnSettingsFromNode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSettingsFromNode</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  odd\"><p>Return the settings object for a particular table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTable</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>table we are using as a dataTable</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Settings object - or null if not found</p></p></div>\n<dt id=\"DataTable#oApi._fnSort\" class=\"  even\"><a name=\"_fnSort\"></a><a name=\"_fnSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, bApplyClasses)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Change the order of the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bApplyClasses</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>optional - should we apply classes or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSortAttachListener\" class=\"  odd\"><a name=\"_fnSortAttachListener\"></a><a name=\"_fnSortAttachListener_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSortAttachListener</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, nNode, iDataIndex, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attach a sort handler (click) to a node</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>node to attach the handler to</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDataIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>column sorting index</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>callback function</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnSortingClasses\" class=\"  even\"><a name=\"_fnSortingClasses\"></a><a name=\"_fnSortingClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnSortingClasses</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Set the sorting classes on the header, Note: it is safe to call this function \nwhen bSort and bSortClasses are false</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnStringToCss\" class=\"  odd\"><a name=\"_fnStringToCss\"></a><a name=\"_fnStringToCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnStringToCss</a></span><span class=\"type-sig\"><span class=\"signature\">(aArray1, aArray2)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Append a CSS unit (only if required) to a string</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">aArray1</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>first array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aArray2</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>second array</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 if match, 1 if length is different, 2 if no match</p></p></div>\n<dt id=\"DataTable#oApi._fnUpdateInfo\" class=\"  even\"><a name=\"_fnUpdateInfo\"></a><a name=\"_fnUpdateInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnUpdateInfo</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Update the information elements in the display</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#oApi._fnVisbleColumns\" class=\"  odd\"><a name=\"_fnVisbleColumns\"></a><a name=\"_fnVisbleColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnVisbleColumns</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Get the number of visible columns</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the number of visible columns</p></p></div>\n<dt id=\"DataTable#oApi._fnVisibleToColumnIndex\" class=\"  even\"><a name=\"_fnVisibleToColumnIndex\"></a><a name=\"_fnVisibleToColumnIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>_fnVisibleToColumnIndex</a></span><span class=\"type-sig\"><span class=\"signature\">(oSettings, iMatch)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Covert the index of a visible column to the index in the data array (take account\nof hidden columns)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>dataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iMatch</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Visible column index to lookup</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>i the data index</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: columns - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: columns</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » columns</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (21)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (21)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Column options that can be given to DataTables at initialisation time.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Allows a column's sorting to take multiple columns into account when \ndoing a sort. For example first name / last name columns make sense to \ndo a multi-column sort over the two columns.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>You can control the default sorting direction, and even alter the behaviour\nof the sort handler (i.e. only allow ascending sorting etc) using this\nparameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable filtering on the data in this column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable sorting on this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender() for a column, you may wish \nto use the original data (before rendering) for sorting and filtering \n(the default is to used the rendered data that the user can see). This \nmay be useful for dates etc. [<a href-\"#bUseRendered\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable the display of this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedCell\">fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRender\">fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column. [<a href-\"#fnRender\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDataSort\">iDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The column index (starting from 0!) that you wish a sort to be performed\nupon when this column is selected for sorting. This can be used for sorting\non hidden columns for example.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property can be used to read data from any JSON data source property,\nincluding deeply nested objects / properties. mData can be given in a\nnumber of different ways which effect its behaviour:\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source.</li>\n    <li>null - the sDefaultContent option will be used for the cell (null\n      by default, so you will need to specify the default content you want -\n      typically an empty string). This can be useful on generated columns such \n      as edit / delete action columns.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row</li>\n        <li>{string} The type call data requested - this will be 'set' when\n          setting data or 'filter', 'display', 'type', 'sort' or undefined when \n          gathering data. Note that when <i>undefined</i> is given for the type\n          DataTables expects to get the raw data for the object back</li>\n        <li>{*} Data to set when the second parameter is 'set'.</li>\n      </ul>\n      The return value from the function is not required when 'set' is the type\n      of call, but otherwise the return is what will be used for the data\n      requested.</li>\n   </ul> [<a href-\"#mData\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mDataProp\">mDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>This parameter has been replaced by mData in DataTables to ensure naming\nconsistency. mDataProp can still be used, as there is backwards compatibility\nin DataTables for this option, but it is strongly recommended that you use\nmData in preference to mDataProp.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property is the rendering partner to mData and it is suggested that\nwhen you want to manipulate data for display (including filtering, sorting etc)\nbut not altering the underlying data for the table, use this property. mData\ncan actually do everything this property can and more, but this parameter is\neasier to use since there is no 'set' option. Like mData is can be given\nin a number of different ways to effect its behaviour, with the addition of \nsupporting array syntax for easy outputting of arrays (including arrays of\nobjects):\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source and also array brackets to indicate that the data reader should\n      loop over the data source array. When characters are given between the array\n      brackets, these characters are used to join the data source array together.\n      For example: \"accounts[, ].name\" would result in a comma separated list with\n      the 'name' value from the 'accounts' array of objects.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row (based on mData)</li>\n        <li>{string} The type call data requested - this will be 'filter', 'display', \n          'type' or 'sort'.</li>\n        <li>{array|object} The full data source for the row (not based on mData)</li>\n      </ul>\n      The return value from the function is what will be used for the data\n      requested.</li>\n   </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCellType\">sCellType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Change the cell type created for the column - either TD cells or TH cells. This\ncan be useful as TH cells have semantic meaning in the table body, allowing them\nto act as a header for a row (you may wish to add scope='row' to the TH elements).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to give to each cell in this column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.\nGenerally you shouldn't need this, and it is not documented on the \ngeneral DataTables.net documentation</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This parameter is only used in DataTables' server-side processing. It can\nbe exceptionally useful to know what columns are being displayed on the\nclient side, and to map these to database fields. When defined, the names\nalso allow DataTables to reorder information from the server if it comes\nback in an unexpected order (i.e. if you switch your columns around on the\nclient-side, your server-side code does not also need updating).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Defines a data source type for the sorting which can be used to read\nreal-time information from the table (updating the internally cached\nversion) prior to sorting. This allows sorting to occur on user editable\nelements such as form inputs.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The title of this column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>The type allows you to specify how the data for this column will be sorted.\nFour types (string, numeric, date and html (which will strip HTML tags\nbefore sorting)) are currently available. Note that only date formats\nunderstood by Javascript's Date() object will be accepted as type date. For\nexample: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n'date' or 'html' (by default). Further types can be adding through\nplug-ins.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Defining the width of the column, this parameter may take any CSS value\n(3em, 20px etc). DataTables apples 'smart' widths to columns which have not\nbeen given a specific width through this interface ensuring that the table\nremains readable.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aDataSort\"></a><a name=\"aDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Allows a column's sorting to take multiple columns into account when \ndoing a sort. For example first name / last name columns make sense to \ndo a multi-column sort over the two columns.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n         { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n         { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         { \"aDataSort\": [ 0, 1 ] },\n         { \"aDataSort\": [ 1, 0 ] },\n         { \"aDataSort\": [ 2, 3, 4 ] },\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"asSorting\"></a><a name=\"asSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>You can control the default sorting direction, and even alter the behaviour\nof the sort handler (i.e. only allow ascending sorting etc) using this\nparameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n         { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n         { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         null,\n         { \"asSorting\": [ \"asc\" ] },\n         { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n         { \"asSorting\": [ \"desc\" ] },\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSearchable\"></a><a name=\"bSearchable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable filtering on the data in this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bSearchable\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bSortable\"></a><a name=\"bSortable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable sorting on this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bSortable\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bSortable\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bUseRendered\"></a><a name=\"bUseRendered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender() for a column, you may wish \nto use the original data (before rendering) for sorting and filtering \n(the default is to used the rendered data that the user can see). This \nmay be useful for dates etc.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bVisible\"></a><a name=\"bVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable the display of this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"bVisible\": false, \"aTargets\": [ 0 ] }\n       ] } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"bVisible\": false },\n         null,\n         null,\n         null,\n         null\n       ] } );\n   } );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.defaults.columns.fnCreatedCell\" class=\"  even\"><a name=\"fnCreatedCell\"></a><a name=\"fnCreatedCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD node that has been created</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sData</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The Data for the cell</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the whole row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row index for the aoData data store</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column index for aoColumns</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [3],\n         \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n           if ( sData == \"1.7\" ) {\n             $(nTd).css('color', 'blue')\n           }\n         }\n       } ]\n     });\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.columns.fnRender\" class=\"  odd\"><a name=\"fnRender\"></a><a name=\"fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object with the following parameters:</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row in aoData</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the row in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The settings object for this DataTables instance</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.mDataProp</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data property used for this column</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>7</div></td><td class=\"name\">val</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The current cell value</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string you which to use in the display</p></p></div>\n<dt class=\"  even\"><a name=\"iDataSort\"></a><a name=\"iDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDataSort\">iDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The column index (starting from 0!) that you wish a sort to be performed\nupon when this column is selected for sorting. This can be used for sorting\non hidden columns for example.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"iDataSort\": 1 },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"mData\"></a><a name=\"mData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property can be used to read data from any JSON data source property,\nincluding deeply nested objects / properties. mData can be given in a\nnumber of different ways which effect its behaviour:\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source.</li>\n    <li>null - the sDefaultContent option will be used for the cell (null\n      by default, so you will need to specify the default content you want -\n      typically an empty string). This can be useful on generated columns such \n      as edit / delete action columns.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row</li>\n        <li>{string} The type call data requested - this will be 'set' when\n          setting data or 'filter', 'display', 'type', 'sort' or undefined when \n          gathering data. Note that when <i>undefined</i> is given for the type\n          DataTables expects to get the raw data for the object back</li>\n        <li>{*} Data to set when the second parameter is 'set'.</li>\n      </ul>\n      The return value from the function is not required when 'set' is the type\n      of call, but otherwise the return is what will be used for the data\n      requested.</li>\n   </ul></p>\n\n<p>Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\nreflects the flexibility of this property and is consistent with the naming of\nmRender. If 'mDataProp' is given, then it will still be used by DataTables, as\nit automatically maps the old name to the new if required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Read table data from objects\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/deep.txt\",\n       \"aoColumns\": [\n         { \"mData\": \"engine\" },\n         { \"mData\": \"browser\" },\n         { \"mData\": \"platform.inner\" },\n         { \"mData\": \"platform.details.0\" },\n         { \"mData\": \"platform.details.1\" }\n       ]\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using mData as a function to provide different information for\n   // sorting, filtering and display. In this case, currency (price)\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [ 0 ],\n         \"mData\": function ( source, type, val ) {\n           if (type === 'set') {\n             source.price = val;\n             // Store the computed dislay and filter values for efficiency\n             source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n             source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n             return;\n           }\n           else if (type === 'display') {\n             return source.price_display;\n           }\n           else if (type === 'filter') {\n             return source.price_filter;\n           }\n           // 'sort', 'type' and undefined all just use the integer\n           return source.price;\n         }\n       } ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"mDataProp\"></a><a name=\"mDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mDataProp\">mDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>This parameter has been replaced by mData in DataTables to ensure naming\nconsistency. mDataProp can still be used, as there is backwards compatibility\nin DataTables for this option, but it is strongly recommended that you use\nmData in preference to mDataProp.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"mRender\"></a><a name=\"mRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string|int|function|null</span></span></dt><dd class=\"  odd\"><p>This property is the rendering partner to mData and it is suggested that\nwhen you want to manipulate data for display (including filtering, sorting etc)\nbut not altering the underlying data for the table, use this property. mData\ncan actually do everything this property can and more, but this parameter is\neasier to use since there is no 'set' option. Like mData is can be given\nin a number of different ways to effect its behaviour, with the addition of \nsupporting array syntax for easy outputting of arrays (including arrays of\nobjects):\n  <ul>\n    <li>integer - treated as an array index for the data source. This is the\n      default that DataTables uses (incrementally increased for each column).</li>\n    <li>string - read an object property from the data source. Note that you can\n      use Javascript dotted notation to read deep properties / arrays from the\n      data source and also array brackets to indicate that the data reader should\n      loop over the data source array. When characters are given between the array\n      brackets, these characters are used to join the data source array together.\n      For example: \"accounts[, ].name\" would result in a comma separated list with\n      the 'name' value from the 'accounts' array of objects.</li>\n    <li>function - the function given will be executed whenever DataTables \n      needs to set or get the data for a cell in the column. The function \n      takes three parameters:\n      <ul>\n        <li>{array|object} The data source for the row (based on mData)</li>\n        <li>{string} The type call data requested - this will be 'filter', 'display', \n          'type' or 'sort'.</li>\n        <li>{array|object} The full data source for the row (not based on mData)</li>\n      </ul>\n      The return value from the function is what will be used for the data\n      requested.</li>\n   </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Create a comma separated list from an array of objects\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/deep.txt\",\n       \"aoColumns\": [\n         { \"mData\": \"engine\" },\n         { \"mData\": \"browser\" },\n         {\n           \"mData\": \"platform\",\n           \"mRender\": \"[, ].name\"\n         }\n       ]\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Use as a function to create a link from the data source\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [\n       {\n         \"aTargets\": [ 0 ],\n         \"mData\": \"download_link\",\n         \"mRender\": function ( data, type, full ) {\n           return '<a href=\"'+data+'\">Download</a>';\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sCellType\"></a><a name=\"sCellType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCellType\">sCellType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Change the cell type created for the column - either TD cells or TH cells. This\ncan be useful as TH cells have semantic meaning in the table body, allowing them\nto act as a header for a row (you may wish to add scope='row' to the TH elements).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Make the first column use TH cells\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"aoColumnDefs\": [ {\n         \"aTargets\": [ 0 ],\n         \"sCellType\": \"th\"\n       } ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sClass\"></a><a name=\"sClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to give to each cell in this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sClass\": \"my_class\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sContentPadding\"></a><a name=\"sContentPadding_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.\nGenerally you shouldn't need this, and it is not documented on the \ngeneral DataTables.net documentation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         null,\n         null,\n         null,\n         {\n           \"sContentPadding\": \"mmm\"\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sDefaultContent\"></a><a name=\"sDefaultContent_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         {\n           \"mData\": null,\n           \"sDefaultContent\": \"Edit\",\n           \"aTargets\": [ -1 ]\n         }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         null,\n         null,\n         null,\n         {\n           \"mData\": null,\n           \"sDefaultContent\": \"Edit\"\n         }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sName\"></a><a name=\"sName_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This parameter is only used in DataTables' server-side processing. It can\nbe exceptionally useful to know what columns are being displayed on the\nclient side, and to map these to database fields. When defined, the names\nalso allow DataTables to reorder information from the server if it comes\nback in an unexpected order (i.e. if you switch your columns around on the\nclient-side, your server-side code does not also need updating).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n         { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n         { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n         { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n         { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sName\": \"engine\" },\n         { \"sName\": \"browser\" },\n         { \"sName\": \"platform\" },\n         { \"sName\": \"version\" },\n         { \"sName\": \"grade\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSortDataType\"></a><a name=\"sSortDataType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Defines a data source type for the sorting which can be used to read\nreal-time information from the table (updating the internally cached\nversion) prior to sorting. This allows sorting to occur on user editable\nelements such as form inputs.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [\n         { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n         { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n         { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n         { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [\n         null,\n         null,\n         { \"sSortDataType\": \"dom-text\" },\n         { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n         { \"sSortDataType\": \"dom-select\" },\n         { \"sSortDataType\": \"dom-checkbox\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sTitle\"></a><a name=\"sTitle_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The title of this column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sTitle\": \"My column title\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sType\"></a><a name=\"sType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>The type allows you to specify how the data for this column will be sorted.\nFour types (string, numeric, date and html (which will strip HTML tags\nbefore sorting)) are currently available. Note that only date formats\nunderstood by Javascript's Date() object will be accepted as type date. For\nexample: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n'date' or 'html' (by default). Further types can be adding through\nplug-ins.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sType\": \"html\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sWidth\"></a><a name=\"sWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Defining the width of the column, this parameter may take any CSS value\n(3em, 20px etc). DataTables apples 'smart' widths to columns which have not\nbeen given a specific width through this interface ensuring that the table\nremains readable.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumnDefs\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumnDefs\": [ \n         { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using aoColumns\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoColumns\": [ \n         { \"sWidth\": \"20%\" },\n         null,\n         null,\n         null,\n         null\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: defaults - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: defaults</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » defaults</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (3)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (58)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (58)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Initialisation options that can be given to DataTables at initialisation \ntime.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.columns.html\">columns</a></span></dt><dd class=\"even\"><p>Column options that can be given to DataTables at initialisation time.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.html\">oLanguage</a></span></dt><dd class=\"odd\"><p>All strings that DataTables uses in the user interface that it creates\nare defined in this object, allowing you to modified them individually or\ncompletely replace them all as required.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.oSearch.html\">oSearch</a></span></dt><dd class=\"even\"><p>This parameter allows you to have define the global filtering state at\ninitialisation time. As an object the \"sSearch\" parameter must be\ndefined, but all other parameters are optional. When \"bRegex\" is true,\nthe search string will be treated as a regular expression, when false\n(default) it will be treated as a straight string. When \"bSmart\"\nDataTables will use it's smart filtering methods (to word match at\nany point in the data), when false this will not be done.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaData\">aaData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>An array of data to use for the table, passed in at initialisation which \nwill be used in preference to any data which is already in the DOM. This is\nparticularly useful for constructing tables purely in Javascript, for\nexample with a custom Ajax call.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If sorting is enabled, then DataTables will perform a first pass sort on \ninitialisation. You can define which column(s) the sort is performed upon, \nand the sorting direction, with this variable. The aaSorting array should \ncontain an array for each column to be sorted initially containing the \ncolumn's index and a direction string ('asc' or 'desc').</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>This parameter is basically identical to the aaSorting parameter, but \ncannot be overridden by user interaction with the table. What this means \nis that you could have a column (visible or hidden) which the sorting will \nalways be forced on first - any sorting after that (from the user) will \nthen be performed as required. This can be useful for grouping rows \ntogether.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>This parameter allows you to readily specify the entries in the length drop\ndown menu that DataTables shows when pagination is enabled. It can be \neither a 1D array of options which will be used for both the displayed \noption and the value, or a 2D array which will use the array in the first \nposition as the value, and the array in the second position as the \ndisplayed options (useful for language strings such as 'All').</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumnDefs\">aoColumnDefs</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Very similar to aoColumns, aoColumnDefs allows you to target a specific \ncolumn, multiple columns, or all columns, using the aTargets property of \neach object in the array. This allows great flexibility when creating \ntables, as the aoColumnDefs arrays can be of any length, targeting the \ncolumns you specifically want. aoColumnDefs may use any of the column \noptions available: <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>, but it <em>must</em>\nhave aTargets defined in each object in the array. Values in the aTargets\narray may be:\n  <ul>\n    <li>a string - class name will be matched on the TH for the column</li>\n    <li>0 or a positive integer - column index counting from the left</li>\n    <li>a negative integer - column index counting from the right</li>\n    <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>The aoColumns option in the initialisation parameter allows you to define\ndetails about the way individual columns behave. For a full list of\ncolumn options that can be set, please see \n<a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>. Note that if you use aoColumns to\ndefine your columns, you must have an entry in the array for every single\ncolumn that you have in your table (these can be null if you don't which\nto specify any options).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoSearchCols\">aoSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Basically the same as oSearch, this parameter defines the individual column\nfiltering state at initialisation time. The array must be of the same size \nas the number of columns, and each element be an object with the parameters\n\"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\naccepted and the default will be used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>An array of CSS classes that should be applied to displayed rows. This \narray may be of any length, and DataTables will apply each class \nsequentially, looping when required.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable automatic column width calculation. This can be disabled\nas an optimisation (it takes some time to calculate the widths) if the\ntables widths are passed in using aoColumns.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Deferred rendering can provide DataTables with a huge speed boost when you\nare using an Ajax or JS data source for the table. This option, when set to\ntrue, will cause DataTables to defer the creation of the table elements for\neach row until they are needed for a draw - saving a significant amount of\ntime.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDestroy\">bDestroy</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Replace a DataTable which matches the given selector and replace it with \none which has the properties of the new initialisation object passed. If no\ntable matches the selector, then the new DataTable will be constructed as\nper normal.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\nthat it allows the end user to input multiple words (space separated) and\nwill match a row containing those words, even if not in the order that was\nspecified (this allow matching across multiple columns). Note that if you\nwish to use filtering in DataTables this must remain 'true' - to remove the\ndefault filtering input box and retain filtering abilities, please use\n<a href=\"DataTable.defaults.html#sDom\">DataTable.defaults.sDom</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the table information display. This shows information \nabout the data that is currently visible on the page, including information\nabout filtered data if that action is being performed.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJQueryUI\">bJQueryUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\nslightly different and additional mark-up from what DataTables has\ntraditionally used).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Allows the end user to select the size of a formatted page from a select\nmenu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable pagination.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the display of a 'processing' indicator when the table is\nbeing processed (e.g. a sort). This is particularly useful for tables with\nlarge amounts of data where it can take a noticeable amount of time to sort\nthe entries.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRetrieve\">bRetrieve</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Retrieve the DataTables object for the given selector. Note that if the\ntable has already been initialised, this parameter will cause DataTables\nto simply return the object that has already been set up - it will not take\naccount of any changes you might have made to the initialisation object\npassed to DataTables (setting this parameter to true is an acknowledgement\nthat you understand this). bDestroy can be used to reinitialise a table if\nyou need.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollAutoCss\">bScrollAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollCollapse\">bScrollCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When vertical (y) scrolling is enabled, DataTables will force the height of\nthe table's viewport to the given height at all times (useful for layout).\nHowever, this can look odd when filtering data down to a small data set,\nand the footer is left \"floating\" further down. This parameter (when\nenabled) will cause DataTables to collapse the table's viewport down when\nthe result set will fit within the given Y height.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollInfinite\">bScrollInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable infinite scrolling for DataTables (to be used in combination with\nsScrollY). Infinite scrolling means that DataTables will continually load\ndata as a user scrolls through a table, which is very useful for large\ndataset. This cannot be used with pagination, which is automatically\ndisabled. Note - the Scroller extra for DataTables is recommended in\nin preference to this option.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Configure DataTables to use server-side processing. Note that the\nsAjaxSource parameter must also be given in order to give DataTables a\nsource to obtain the required data for each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable sorting of columns. Sorting of individual columns can be\ndisabled by the \"bSortable\" option for each column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Allows control over whether DataTables should use the top (true) unique\ncell that is found for a single column, or the bottom (false - default).\nThis is useful when using complex headers.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n'sorting_3' to the columns which are currently being sorted on. This is\npresented as a feature switch as it can increase processing time (while\nclasses are removed and added) so for large data sets you might want to\nturn this off.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable state saving. When enabled a cookie will be used to save\ntable display information such as pagination information, display length,\nfiltering and sorting. As such when the end user reloads the page the\ndisplay display will match what thy had previously set up.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCookieCallback\">fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Customise the cookie and / or the parameters being stored when using\nDataTables with state saving enabled. This function is called whenever\nthe cookie is modified, and it expects a fully formed cookie string to be\nreturned. Note that the data object passed in is a Javascript object which\nmust be converted to a string (JSON.stringify for example).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedRow\">fnCreatedRow</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function is called when a TR element is created (and all TD child\nelements have been inserted), or registered if using a DOM source, allowing\nmanipulation of the TR element (adding classes etc).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnDrawCallback\">fnDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify any aspect you want about the created DOM.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFooterCallback\">fnFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Identical to fnHeaderCallback() but for the table footer this function\nallows you to modify the table footer on every 'draw' even.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFormatNumber\">fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>When rendering large numbers in the information element for the table\n(i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\nto have a comma separator for the 'thousands' units (e.g. 1 million is\nrendered as \"1,000,000\") to help readability for the end user. This\nfunction will override the default method DataTables uses.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnHeaderCallback\">fnHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify the header row. This can be used to calculate and\ndisplay useful information about the table.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInfoCallback\">fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>The information element can be used to convey information about the current\nstate of the table. Although the internationalisation options presented by\nDataTables are quite capable of dealing with most customisations, there may\nbe times where you wish to customise the string further. This callback\nallows you to do exactly that.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInitComplete\">fnInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Called when the table has been initialised. Normally DataTables will\ninitialise sequentially and there will be no need for this function,\nhowever, this does not hold true when using external language information\nsince that is obtained using an async XHR call.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnPreDrawCallback\">fnPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Called at the very start of each table draw and can be used to cancel the\ndraw by returning false, any other return (including undefined) results in\nthe full draw occurring).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRowCallback\">fnRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>This function allows you to 'post process' each row after it have been\ngenerated for each table draw, but before it is rendered on screen. This\nfunction might be used for setting the row class name etc.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerData\">fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>This parameter allows you to override the default function which obtains\nthe data from the server ($.getJSON) so something more suitable for your\napplication. For example you could use POST data, or pull information from\na Gears or AIR database.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerParams\">fnServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>It is often useful to send extra data to the server when making an Ajax\nrequest - for example custom filtering information, and this callback\nfunction makes it trivial to send extra information to the server. The\npassed in parameter is the data set that has been constructed by\nDataTables, and you can add to this or modify it as you require.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoad\">fnStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Load the table state. With this function you can define from where, and how, the\nstate of a table is loaded. By default DataTables will load from its state saving\ncookie, but you might wish to use local storage (HTML5) or a server-side database.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoaded\">fnStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Callback that is called when the state has been loaded from the state saving method\nand the DataTables settings object has been modified as a result of the loaded state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateLoadParams\">fnStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the saved state prior to loading that state.\nThis callback is called when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state. Note that for \nplug-in authors, you should use the 'stateLoadParams' event to load parameters for \na plug-in.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateSave\">fnStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Save the table state. This function allows you to define where and how the state\ninformation for the table is stored - by default it will use a cookie, but you\nmight want to use local storage (HTML5) or a server-side database.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnStateSaveParams\">fnStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the state to be saved. Called when the table \nhas changed state a new state save is required. This method allows modification of\nthe state saving object prior to actually doing the save, including addition or \nother state properties or modification. Note that for plug-in authors, you should \nuse the 'stateSaveParams' event to save parameters for a plug-in.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Duration of the cookie which is used for storing session information. This\nvalue is given in seconds.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDeferLoading\">iDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|array</span></span></dt><dd class=\"  even\"><p>When enabled DataTables will not make a request to the server for the first\npage draw - rather it will use the data already on the page (no sorting etc\nwill be applied to it), thus saving on an XHR at load time. iDeferLoading\nis used to indicate that deferred loading is required, but it is also used\nto tell DataTables how many records there are in the full table (allowing\nthe information element and pagination to be displayed correctly). In the case\nwhere a filtering is applied to the table on initial load, this can be\nindicated by giving the parameter as an array, where the first element is\nthe number of records available after filtering and the second element is the\nnumber of records without filtering (allowing the table information element\nto be shown correctly).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayLength\">iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Number of rows to display on a single page when using pagination. If\nfeature enabled (bLengthChange) then the end user will be able to override\nthis to a custom setting using a pop-up menu.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayStart\">iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Define the starting point for data display when using DataTables with\npagination. Note that this parameter is the number of records, rather than\nthe page number, so if you have 10 records per page and want to start on\nthe third page, it should be \"20\".</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iScrollLoadGap\">iScrollLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The scroll gap is the amount of scrolling that is left to go before\nDataTables will load the next 'page' of data automatically. You typically\nwant a gap which is big enough that the scrolling will be smooth for the\nuser, while not so large that it will load more data than need.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>By default DataTables allows keyboard navigation of the table (sorting, paging,\nand filtering) by adding a tabindex attribute to the required elements. This\nallows you to tab through the controls and press the enter key to activate them.\nThe tabindex is default 0, meaning that the tab follows the flow of the document.\nYou can overrule this using this parameter if you wish. Use a value of -1 to\ndisable built-in keyboard navigation.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>By default DataTables will look for the property 'aaData' when obtaining\ndata from an Ajax source or for server-side processing - this parameter\nallows that property to be changed. You can use Javascript dotted object\nnotation to get a data source for multiple levels of nesting.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>You can instruct DataTables to load data from an external source using this\nparameter (use aData if you want to pass data in you already have). Simply\nprovide a url a JSON object can be obtained from. This object must include\nthe parameter 'aaData' which is the data source for the table.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This parameter can be used to override the default prefix that DataTables\nassigns to a cookie when state saving is enabled.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This initialisation variable allows you to specify exactly where in the\nDOM you want DataTables to inject the various controls it adds to the page\n(for example you might want the pagination controls at the top of the\ntable). DIV elements (with or without a custom class) can also be added to\naid styling. The follow syntax is used:\n  <ul>\n    <li>The following options are allowed: <br />\n      <ul>\n        <li>'l' - Length changing</li\n        <li>'f' - Filtering input</li>\n        <li>'t' - The table!</li>\n        <li>'i' - Information</li>\n        <li>'p' - Pagination</li>\n        <li>'r' - pRocessing</li>\n      </ul>\n    </li>\n    <li>The following constants are allowed:\n      <ul>\n        <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n        <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n      </ul>\n    </li>\n    <li>The following syntax is expected:\n      <ul>\n        <li>'&lt;' and '&gt;' - div elements</li>\n        <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n        <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n      </ul>\n    </li>\n    <li>Examples:\n      <ul>\n        <li>'&lt;\"wrapper\"flipt&gt;'</li>\n        <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n      </ul>\n    </li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables features two different built-in pagination interaction methods\n('two_button' or 'full_numbers') which present different page controls to\nthe end user. Further methods can be added using the API (see below).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollX\">sScrollX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable horizontal scrolling. When a table is too wide to fit into a certain\nlayout, or you have a large number of columns in the table, you can enable\nx-scrolling to show the table in a viewport, which can be scrolled. This\nproperty can be any CSS unit, or a number (in which case it will be treated\nas a pixel measurement).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollXInner\">sScrollXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This property can be used to force a DataTable to use more width than it\nmight otherwise do when x-scrolling is enabled. For example if you have a\ntable which requires to be well spaced, this parameter is useful for\n\"over-sizing\" the table, and thus forcing scrolling. This property can by\nany CSS unit, or a number (in which case it will be treated as a pixel\nmeasurement).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollY\">sScrollY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable vertical scrolling. Vertical scrolling will constrain the DataTable\nto the given height, and enable scrolling for any data which overflows the\ncurrent viewport. This can be used as an alternative to paging to display\na lot of data in a small area (although paging and scrolling can both be\nenabled at the same time). This property can be any CSS unit, or a number\n(in which case it will be treated as a pixel measurement).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Set the HTTP method that is used to make the Ajax call for server-side\nprocessing or Ajax sourced data.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aaData\"></a><a name=\"aaData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaData\">aaData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>An array of data to use for the table, passed in at initialisation which \nwill be used in preference to any data which is already in the DOM. This is\nparticularly useful for constructing tables purely in Javascript, for\nexample with a custom Ajax call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using a 2D array data source\n   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"aaData\": [\n         ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n         ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n       ],\n       \"aoColumns\": [\n         { \"sTitle\": \"Engine\" },\n         { \"sTitle\": \"Browser\" },\n         { \"sTitle\": \"Platform\" },\n         { \"sTitle\": \"Version\" },\n         { \"sTitle\": \"Grade\" }\n       ]\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Using an array of objects as a data source (mData)\n   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"aaData\": [\n         {\n           \"engine\":   \"Trident\",\n           \"browser\":  \"Internet Explorer 4.0\",\n           \"platform\": \"Win 95+\",\n           \"version\":  4,\n           \"grade\":    \"X\"\n         },\n         {\n           \"engine\":   \"Trident\",\n           \"browser\":  \"Internet Explorer 5.0\",\n           \"platform\": \"Win 95+\",\n           \"version\":  5,\n           \"grade\":    \"C\"\n         }\n       ],\n       \"aoColumns\": [\n         { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n         { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n         { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n         { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n         { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n       ]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aaSorting\"></a><a name=\"aaSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If sorting is enabled, then DataTables will perform a first pass sort on \ninitialisation. You can define which column(s) the sort is performed upon, \nand the sorting direction, with this variable. The aaSorting array should \ncontain an array for each column to be sorted initially containing the \ncolumn's index and a direction string ('asc' or 'desc').</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Sort by 3rd column first, and then 4th column\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSorting\": [[2,'asc'], [3,'desc']]\n     } );\n   } );\n   \n   // No initial sorting\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSorting\": []\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aaSortingFixed\"></a><a name=\"aaSortingFixed_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>This parameter is basically identical to the aaSorting parameter, but \ncannot be overridden by user interaction with the table. What this means \nis that you could have a column (visible or hidden) which the sorting will \nalways be forced on first - any sorting after that (from the user) will \nthen be performed as required. This can be useful for grouping rows \ntogether.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aaSortingFixed\": [[0,'asc']]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aLengthMenu\"></a><a name=\"aLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>This parameter allows you to readily specify the entries in the length drop\ndown menu that DataTables shows when pagination is enabled. It can be \neither a 1D array of options which will be used for both the displayed \noption and the value, or a 2D array which will use the array in the first \nposition as the value, and the array in the second position as the \ndisplayed options (useful for language strings such as 'All').</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n     } );\n   } );\n \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Setting the default display length as well as length menu\n   // This is likely to be wanted if you remove the '10' option which\n   // is the iDisplayLength default.\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayLength\": 25,\n       \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aoColumnDefs\"></a><a name=\"aoColumnDefs_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumnDefs\">aoColumnDefs</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Very similar to aoColumns, aoColumnDefs allows you to target a specific \ncolumn, multiple columns, or all columns, using the aTargets property of \neach object in the array. This allows great flexibility when creating \ntables, as the aoColumnDefs arrays can be of any length, targeting the \ncolumns you specifically want. aoColumnDefs may use any of the column \noptions available: <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>, but it <em>must</em>\nhave aTargets defined in each object in the array. Values in the aTargets\narray may be:\n  <ul>\n    <li>a string - class name will be matched on the TH for the column</li>\n    <li>0 or a positive integer - column index counting from the left</li>\n    <li>a negative integer - column index counting from the right</li>\n    <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoColumns\"></a><a name=\"aoColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>The aoColumns option in the initialisation parameter allows you to define\ndetails about the way individual columns behave. For a full list of\ncolumn options that can be set, please see \n<a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a>. Note that if you use aoColumns to\ndefine your columns, you must have an entry in the array for every single\ncolumn that you have in your table (these can be null if you don't which\nto specify any options).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoSearchCols\"></a><a name=\"aoSearchCols_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoSearchCols\">aoSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Basically the same as oSearch, this parameter defines the individual column\nfiltering state at initialisation time. The array must be of the same size \nas the number of columns, and each element be an object with the parameters\n\"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\naccepted and the default will be used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"aoSearchCols\": [\n         null,\n         { \"sSearch\": \"My filter\" },\n         null,\n         { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n       ]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"asStripeClasses\"></a><a name=\"asStripeClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>An array of CSS classes that should be applied to displayed rows. This \narray may be of any length, and DataTables will apply each class \nsequentially, looping when required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bAutoWidth\"></a><a name=\"bAutoWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable automatic column width calculation. This can be disabled\nas an optimisation (it takes some time to calculate the widths) if the\ntables widths are passed in using aoColumns.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bAutoWidth\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bDeferRender\"></a><a name=\"bDeferRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Deferred rendering can provide DataTables with a huge speed boost when you\nare using an Ajax or JS data source for the table. This option, when set to\ntrue, will cause DataTables to defer the creation of the table elements for\neach row until they are needed for a draw - saving a significant amount of\ntime.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/arrays.txt\",\n       \"bDeferRender\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bDestroy\"></a><a name=\"bDestroy_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDestroy\">bDestroy</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Replace a DataTable which matches the given selector and replace it with \none which has the properties of the new initialisation object passed. If no\ntable matches the selector, then the new DataTable will be constructed as\nper normal.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n     \n     // Some time later....\n     $('#example').dataTable( {\n       \"bFilter\": false,\n       \"bDestroy\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bFilter\"></a><a name=\"bFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\nthat it allows the end user to input multiple words (space separated) and\nwill match a row containing those words, even if not in the order that was\nspecified (this allow matching across multiple columns). Note that if you\nwish to use filtering in DataTables this must remain 'true' - to remove the\ndefault filtering input box and retain filtering abilities, please use\n<a href=\"DataTable.defaults.html#sDom\">DataTable.defaults.sDom</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bFilter\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bInfo\"></a><a name=\"bInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the table information display. This shows information \nabout the data that is currently visible on the page, including information\nabout filtered data if that action is being performed.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bInfo\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bJQueryUI\"></a><a name=\"bJQueryUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJQueryUI\">bJQueryUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\nslightly different and additional mark-up from what DataTables has\ntraditionally used).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bJQueryUI\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bLengthChange\"></a><a name=\"bLengthChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Allows the end user to select the size of a formatted page from a select\nmenu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bLengthChange\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bPaginate\"></a><a name=\"bPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable pagination.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bPaginate\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bProcessing\"></a><a name=\"bProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the display of a 'processing' indicator when the table is\nbeing processed (e.g. a sort). This is particularly useful for tables with\nlarge amounts of data where it can take a noticeable amount of time to sort\nthe entries.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bProcessing\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bRetrieve\"></a><a name=\"bRetrieve_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRetrieve\">bRetrieve</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Retrieve the DataTables object for the given selector. Note that if the\ntable has already been initialised, this parameter will cause DataTables\nto simply return the object that has already been set up - it will not take\naccount of any changes you might have made to the initialisation object\npassed to DataTables (setting this parameter to true is an acknowledgement\nthat you understand this). bDestroy can be used to reinitialise a table if\nyou need.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     initTable();\n     tableActions();\n   } );\n   \n   function initTable ()\n   {\n     return $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false,\n       \"bRetrieve\": true\n     } );\n   }\n   \n   function tableActions ()\n   {\n     var oTable = initTable();\n     // perform API operations with oTable \n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bScrollAutoCss\"></a><a name=\"bScrollAutoCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollAutoCss\">bScrollAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollAutoCss\": false,\n       \"sScrollY\": \"200px\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bScrollCollapse\"></a><a name=\"bScrollCollapse_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollCollapse\">bScrollCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When vertical (y) scrolling is enabled, DataTables will force the height of\nthe table's viewport to the given height at all times (useful for layout).\nHowever, this can look odd when filtering data down to a small data set,\nand the footer is left \"floating\" further down. This parameter (when\nenabled) will cause DataTables to collapse the table's viewport down when\nthe result set will fit within the given Y height.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200\",\n       \"bScrollCollapse\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bScrollInfinite\"></a><a name=\"bScrollInfinite_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollInfinite\">bScrollInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable infinite scrolling for DataTables (to be used in combination with\nsScrollY). Infinite scrolling means that DataTables will continually load\ndata as a user scrolls through a table, which is very useful for large\ndataset. This cannot be used with pagination, which is automatically\ndisabled. Note - the Scroller extra for DataTables is recommended in\nin preference to this option.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollInfinite\": true,\n       \"bScrollCollapse\": true,\n       \"sScrollY\": \"200px\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bServerSide\"></a><a name=\"bServerSide_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Configure DataTables to use server-side processing. Note that the\nsAjaxSource parameter must also be given in order to give DataTables a\nsource to obtain the required data for each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"xhr.php\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSort\"></a><a name=\"bSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable sorting of columns. Sorting of individual columns can be\ndisabled by the \"bSortable\" option for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bSort\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bSortCellsTop\"></a><a name=\"bSortCellsTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Allows control over whether DataTables should use the top (true) unique\ncell that is found for a single column, or the bottom (false - default).\nThis is useful when using complex headers.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bSortCellsTop\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"bSortClasses\"></a><a name=\"bSortClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n'sorting_3' to the columns which are currently being sorted on. This is\npresented as a feature switch as it can increase processing time (while\nclasses are removed and added) so for large data sets you might want to\nturn this off.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bSortClasses\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"bStateSave\"></a><a name=\"bStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Enable or disable state saving. When enabled a cookie will be used to save\ntable display information such as pagination information, display length,\nfiltering and sorting. As such when the end user reloads the page the\ndisplay display will match what thy had previously set up.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"bStateSave\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.defaults.fnCookieCallback\" class=\"  even\"><a name=\"fnCookieCallback\"></a><a name=\"fnCookieCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Customise the cookie and / or the parameters being stored when using\nDataTables with state saving enabled. This function is called whenever\nthe cookie is modified, and it expects a fully formed cookie string to be\nreturned. Note that the data object passed in is a Javascript object which\nmust be converted to a string (JSON.stringify for example).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sName</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Name of the cookie defined by DataTables</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data to be stored in the cookie</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sExpires</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cookie expires string</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">sPath</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Path of the cookie to set</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Cookie formatted string (which should be encoded by\n   using encodeURIComponent())</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function () {\n     $('#example').dataTable( {\n       \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n         // Customise oData or sName or whatever else here\n         return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnCreatedRow\" class=\"  odd\"><a name=\"fnCreatedRow\"></a><a name=\"fnCreatedRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedRow</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function is called when a TR element is created (and all TD child\nelements have been inserted), or registered if using a DOM source, allowing\nmanipulation of the TR element (adding classes etc).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nRow</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the current row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Raw data array for this row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDataIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of this row in aoData</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n         // Bold the grade for all 'A' grade browsers\n         if ( aData[4] == \"A\" )\n         {\n           $('td:eq(4)', nRow).html( '<b>A</b>' );\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnDrawCallback\" class=\"  even\"><a name=\"fnDrawCallback\"></a><a name=\"fnDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify any aspect you want about the created DOM.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnDrawCallback\": function( oSettings ) {\n         alert( 'DataTables has redrawn the table' );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnFooterCallback\" class=\"  odd\"><a name=\"fnFooterCallback\"></a><a name=\"fnFooterCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Identical to fnHeaderCallback() but for the table footer this function\nallows you to modify the table footer on every 'draw' even.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nFoot</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the footer</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Full table data (as derived from the original HTML)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display starting point in the \n   display array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display ending point in the \n   display array</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">aiDisplay</td><td class=\"type type-param\">array int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to translate the visual position\n   to the full data array</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n         nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnFormatNumber\" class=\"  even\"><a name=\"fnFormatNumber\"></a><a name=\"fnFormatNumber_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>When rendering large numbers in the information element for the table\n(i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\nto have a comma separator for the 'thousands' units (e.g. 1 million is\nrendered as \"1,000,000\") to help readability for the end user. This\nfunction will override the default method DataTables uses.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iIn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>number to be formatted</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>formatted string for DataTables to show the number</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnFormatNumber\": function ( iIn ) {\n         if ( iIn &lt; 1000 ) {\n           return iIn;\n         } else {\n           var \n             s=(iIn+\"\"), \n             a=s.split(\"\"), out=\"\", \n             iLen=s.length;\n           \n           for ( var i=0 ; i&lt;iLen ; i++ ) {\n             if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n               out = \"'\"+out;\n             }\n             out = a[iLen-i-1]+out;\n           }\n         }\n         return out;\n       };\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnHeaderCallback\" class=\"  odd\"><a name=\"fnHeaderCallback\"></a><a name=\"fnHeaderCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function is called on every 'draw' event, and allows you to\ndynamically modify the header row. This can be used to calculate and\ndisplay useful information about the table.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nHead</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the header</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Full table data (as derived from the original HTML)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display starting point in the\n   display array</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index for the current display ending point in the\n   display array</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">aiDisplay</td><td class=\"type type-param\">array int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Index array to translate the visual position\n   to the full data array</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n         nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnInfoCallback\" class=\"  even\"><a name=\"fnInfoCallback\"></a><a name=\"fnInfoCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>The information element can be used to convey information about the current\nstate of the table. Although the internationalisation options presented by\nDataTables are quite capable of dealing with most customisations, there may\nbe times where you wish to customise the string further. This callback\nallows you to do exactly that.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iStart</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Starting position in data for the draw</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iEnd</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>End position in data for the draw</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iMax</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Total number of rows in the table (regardless of\n   filtering)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">iTotal</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Total number of rows in the data set, after filtering</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">sPre</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The string that DataTables has formatted using it's\n   own rules</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string to be displayed in the information element.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $('#example').dataTable( {\n     \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n       return iStart +\" to \"+ iEnd;\n     }\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnInitComplete\" class=\"  odd\"><a name=\"fnInitComplete\"></a><a name=\"fnInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Called when the table has been initialised. Normally DataTables will\ninitialise sequentially and there will be no need for this function,\nhowever, this does not hold true when using external language information\nsince that is obtained using an async XHR call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The JSON object request from the server - only\n   present if client-side Ajax sourced data is used</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnInitComplete\": function(oSettings, json) {\n         alert( 'DataTables has finished its initialisation.' );\n       }\n     } );\n   } )</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnPreDrawCallback\" class=\"  even\"><a name=\"fnPreDrawCallback\"></a><a name=\"fnPreDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Called at the very start of each table draw and can be used to cancel the\ndraw by returning false, any other return (including undefined) results in\nthe full draw occurring).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>False will cancel the draw, anything else (including no\n   return) will allow it to complete.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnPreDrawCallback\": function( oSettings ) {\n         if ( $('#test').val() == 1 ) {\n           return false;\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnRowCallback\" class=\"  odd\"><a name=\"fnRowCallback\"></a><a name=\"fnRowCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>This function allows you to 'post process' each row after it have been\ngenerated for each table draw, but before it is rendered on screen. This\nfunction might be used for setting the row class name etc.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nRow</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>\"TR\" element for the current row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Raw data array for this row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDisplayIndex</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The display index for the current table draw</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iDisplayIndexFull</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of the data in the full list of\n   rows (after filtering)</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n         // Bold the grade for all 'A' grade browsers\n         if ( aData[4] == \"A\" )\n         {\n           $('td:eq(4)', nRow).html( '<b>A</b>' );\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnServerData\" class=\"  even\"><a name=\"fnServerData\"></a><a name=\"fnServerData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>This parameter allows you to override the default function which obtains\nthe data from the server ($.getJSON) so something more suitable for your\napplication. For example you could use POST data, or pull information from\na Gears or AIR database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSource</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>HTTP source to obtain the data from (sAjaxSource)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">aoData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>A key/value pair object containing the data to send\n   to the server</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>to be called on completion of the data get\n   process that will draw the data on the page.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // POST data to server\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bProcessing\": true,\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"xhr.php\",\n       \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n         oSettings.jqXHR = $.ajax( {\n           \"dataType\": 'json', \n           \"type\": \"POST\", \n           \"url\": sSource, \n           \"data\": aoData, \n           \"success\": fnCallback\n         } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnServerParams\" class=\"  odd\"><a name=\"fnServerParams\"></a><a name=\"fnServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>It is often useful to send extra data to the server when making an Ajax\nrequest - for example custom filtering information, and this callback\nfunction makes it trivial to send extra information to the server. The\npassed in parameter is the data set that has been constructed by\nDataTables, and you can add to this or modify it as you require.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">aoData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data array (array of objects which are name/value\n   pairs) that has been constructed by DataTables and will be sent to the\n   server. In the case of Ajax sourced data with server-side processing\n   this will be an empty array, for server-side processing there will be a\n   significant number of parameters!</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Ensure that you modify the aoData array passed in,\n   as this is passed by reference.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bProcessing\": true,\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"fnServerParams\": function ( aoData ) {\n         aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoad\" class=\"  even\"><a name=\"fnStateLoad\"></a><a name=\"fnStateLoad_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Load the table state. With this function you can define from where, and how, the\nstate of a table is loaded. By default DataTables will load from its state saving\ncookie, but you might wish to use local storage (HTML5) or a server-side database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The DataTables state object to be loaded</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoad\": function (oSettings) {\n         var o;\n         \n         // Send an Ajax request to the server to get the data. Note that\n         // this is a synchronous request.\n         $.ajax( {\n           \"url\": \"/state_load\",\n           \"async\": false,\n           \"dataType\": \"json\",\n           \"success\": function (json) {\n             o = json;\n           }\n         } );\n         \n         return o;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoaded\" class=\"  odd\"><a name=\"fnStateLoaded\"></a><a name=\"fnStateLoaded_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Callback that is called when the state has been loaded from the state saving method\nand the DataTables settings object has been modified as a result of the loaded state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object that was loaded</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Show an alert with the filtering value that was saved\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoaded\": function (oSettings, oData) {\n         alert( 'Saved filter was: '+oData.oSearch.sSearch );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateLoadParams\" class=\"  even\"><a name=\"fnStateLoadParams\"></a><a name=\"fnStateLoadParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the saved state prior to loading that state.\nThis callback is called when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state. Note that for \nplug-in authors, you should use the 'stateLoadParams' event to load parameters for \na plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object that is to be loaded</p></td></tr>\n\t</tbody>\n</table><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Remove a saved filter, so filtering is never loaded\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoadParams\": function (oSettings, oData) {\n         oData.oSearch.sSearch = \"\";\n       }\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Disallow state loading by returning false\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateLoadParams\": function (oSettings, oData) {\n         return false;\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateSave\" class=\"  odd\"><a name=\"fnStateSave\"></a><a name=\"fnStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Save the table state. This function allows you to define where and how the state\ninformation for the table is stored - by default it will use a cookie, but you\nmight want to use local storage (HTML5) or a server-side database.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object to be saved</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateSave\": function (oSettings, oData) {\n         // Send an Ajax request to the server with the state object\n         $.ajax( {\n           \"url\": \"/state_save\",\n           \"data\": oData,\n           \"dataType\": \"json\",\n           \"method\": \"POST\"\n           \"success\": function () {}\n         } );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable.defaults.fnStateSaveParams\" class=\"  even\"><a name=\"fnStateSaveParams\"></a><a name=\"fnStateSaveParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Callback which allows modification of the state to be saved. Called when the table \nhas changed state a new state save is required. This method allows modification of\nthe state saving object prior to actually doing the save, including addition or \nother state properties or modification. Note that for plug-in authors, you should \nuse the 'stateSaveParams' event to save parameters for a plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oData</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state object to be saved</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Remove a saved filter, so filtering is never saved\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bStateSave\": true,\n       \"fnStateSaveParams\": function (oSettings, oData) {\n         oData.oSearch.sSearch = \"\";\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt class=\"  odd\"><a name=\"iCookieDuration\"></a><a name=\"iCookieDuration_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Duration of the cookie which is used for storing session information. This\nvalue is given in seconds.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iCookieDuration\": 60*60*24; // 1 day\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iDeferLoading\"></a><a name=\"iDeferLoading_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDeferLoading\">iDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|array</span></span></dt><dd class=\"  even\"><p>When enabled DataTables will not make a request to the server for the first\npage draw - rather it will use the data already on the page (no sorting etc\nwill be applied to it), thus saving on an XHR at load time. iDeferLoading\nis used to indicate that deferred loading is required, but it is also used\nto tell DataTables how many records there are in the full table (allowing\nthe information element and pagination to be displayed correctly). In the case\nwhere a filtering is applied to the table on initial load, this can be\nindicated by giving the parameter as an array, where the first element is\nthe number of records available after filtering and the second element is the\nnumber of records without filtering (allowing the table information element\nto be shown correctly).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // 57 records available in the table, no filtering applied\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"iDeferLoading\": 57\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // 57 records after filtering, 100 without filtering (an initial filter applied)\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/server_processing.php\",\n       \"iDeferLoading\": [ 57, 100 ],\n       \"oSearch\": {\n         \"sSearch\": \"my_filter\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"iDisplayLength\"></a><a name=\"iDisplayLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayLength\">iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Number of rows to display on a single page when using pagination. If\nfeature enabled (bLengthChange) then the end user will be able to override\nthis to a custom setting using a pop-up menu.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayLength\": 50\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iDisplayStart\"></a><a name=\"iDisplayStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDisplayStart\">iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Define the starting point for data display when using DataTables with\npagination. Note that this parameter is the number of records, rather than\nthe page number, so if you have 10 records per page and want to start on\nthe third page, it should be \"20\".</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iDisplayStart\": 20\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"iScrollLoadGap\"></a><a name=\"iScrollLoadGap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iScrollLoadGap\">iScrollLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The scroll gap is the amount of scrolling that is left to go before\nDataTables will load the next 'page' of data automatically. You typically\nwant a gap which is big enough that the scrolling will be smooth for the\nuser, while not so large that it will load more data than need.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bScrollInfinite\": true,\n       \"bScrollCollapse\": true,\n       \"sScrollY\": \"200px\",\n       \"iScrollLoadGap\": 50\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"iTabIndex\"></a><a name=\"iTabIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>By default DataTables allows keyboard navigation of the table (sorting, paging,\nand filtering) by adding a tabindex attribute to the required elements. This\nallows you to tab through the controls and press the enter key to activate them.\nThe tabindex is default 0, meaning that the tab follows the flow of the document.\nYou can overrule this using this parameter if you wish. Use a value of -1 to\ndisable built-in keyboard navigation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"iTabIndex\": 1\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sAjaxDataProp\"></a><a name=\"sAjaxDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>By default DataTables will look for the property 'aaData' when obtaining\ndata from an Ajax source or for server-side processing - this parameter\nallows that property to be changed. You can use Javascript dotted object\nnotation to get a data source for multiple levels of nesting.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Get data from { \"data\": [...] }\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/data.txt\",\n       \"sAjaxDataProp\": \"data\"\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Get data from { \"data\": { \"inner\": [...] } }\n   $(document).ready( function() {\n     var oTable = $('#example').dataTable( {\n       \"sAjaxSource\": \"sources/data.txt\",\n       \"sAjaxDataProp\": \"data.inner\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sAjaxSource\"></a><a name=\"sAjaxSource_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>You can instruct DataTables to load data from an external source using this\nparameter (use aData if you want to pass data in you already have). Simply\nprovide a url a JSON object can be obtained from. This object must include\nthe parameter 'aaData' which is the data source for the table.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sCookiePrefix\"></a><a name=\"sCookiePrefix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This parameter can be used to override the default prefix that DataTables\nassigns to a cookie when state saving is enabled.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sCookiePrefix\": \"my_datatable_\",\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sDom\"></a><a name=\"sDom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This initialisation variable allows you to specify exactly where in the\nDOM you want DataTables to inject the various controls it adds to the page\n(for example you might want the pagination controls at the top of the\ntable). DIV elements (with or without a custom class) can also be added to\naid styling. The follow syntax is used:\n  <ul>\n    <li>The following options are allowed: <br />\n      <ul>\n        <li>'l' - Length changing</li\n        <li>'f' - Filtering input</li>\n        <li>'t' - The table!</li>\n        <li>'i' - Information</li>\n        <li>'p' - Pagination</li>\n        <li>'r' - pRocessing</li>\n      </ul>\n    </li>\n    <li>The following constants are allowed:\n      <ul>\n        <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n        <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n      </ul>\n    </li>\n    <li>The following syntax is expected:\n      <ul>\n        <li>'&lt;' and '&gt;' - div elements</li>\n        <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n        <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n      </ul>\n    </li>\n    <li>Examples:\n      <ul>\n        <li>'&lt;\"wrapper\"flipt&gt;'</li>\n        <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n      </ul>\n    </li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sPaginationType\"></a><a name=\"sPaginationType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables features two different built-in pagination interaction methods\n('two_button' or 'full_numbers') which present different page controls to\nthe end user. Further methods can be added using the API (see below).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sPaginationType\": \"full_numbers\"\n     } );\n   } )</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sScrollX\"></a><a name=\"sScrollX_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollX\">sScrollX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable horizontal scrolling. When a table is too wide to fit into a certain\nlayout, or you have a large number of columns in the table, you can enable\nx-scrolling to show the table in a viewport, which can be scrolled. This\nproperty can be any CSS unit, or a number (in which case it will be treated\nas a pixel measurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollX\": \"100%\",\n       \"bScrollCollapse\": true\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sScrollXInner\"></a><a name=\"sScrollXInner_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollXInner\">sScrollXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This property can be used to force a DataTable to use more width than it\nmight otherwise do when x-scrolling is enabled. For example if you have a\ntable which requires to be well spaced, this parameter is useful for\n\"over-sizing\" the table, and thus forcing scrolling. This property can by\nany CSS unit, or a number (in which case it will be treated as a pixel\nmeasurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollX\": \"100%\",\n       \"sScrollXInner\": \"110%\"\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sScrollY\"></a><a name=\"sScrollY_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sScrollY\">sScrollY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Enable vertical scrolling. Vertical scrolling will constrain the DataTable\nto the given height, and enable scrolling for any data which overflows the\ncurrent viewport. This can be used as an alternative to paging to display\na lot of data in a small area (although paging and scrolling can both be\nenabled at the same time). This property can be any CSS unit, or a number\n(in which case it will be treated as a pixel measurement).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sServerMethod\"></a><a name=\"sServerMethod_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Set the HTTP method that is used to make the Ajax call for server-side\nprocessing or Ajax sourced data.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"bServerSide\": true,\n       \"sAjaxSource\": \"scripts/post.php\",\n       \"sServerMethod\": \"POST\"\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oLanguage - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oLanguage</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » oLanguage</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (2)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (12)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (12)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>All strings that DataTables uses in the user interface that it creates\nare defined in this object, allowing you to modified them individually or\ncompletely replace them all as required.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.oAria.html\">oAria</a></span></dt><dd class=\"even\"><p>Strings that are used for WAI-ARIA labels and controls only (these are not\nactually visible on the page, but will be read by screenreaders, and thus\nmust be internationalised as well).</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.defaults.oLanguage.oPaginate.html\">oPaginate</a></span></dt><dd class=\"odd\"><p>Pagination string used by DataTables for the two built-in pagination\ncontrol types (\"two_button\" and \"full_numbers\")</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sEmptyTable\">sEmptyTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This string is shown in preference to sZeroRecords when the table is\nempty of data (regardless of filtering). Note that this is an optional\nparameter - if it is not given, the value of sZeroRecords will be used\ninstead (either the default or given value).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfo\">sInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This string gives information to the end user about the information that \nis current on display on the page. The <em>START</em>, <em>END</em> and <em>TOTAL</em> \nvariables are all dynamically replaced as the table display updates, and \ncan be freely moved or removed as the language requirements change.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoEmpty\">sInfoEmpty</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Display information string for when the table is empty. Typically the \nformat of this string should match sInfo.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoFiltered\">sInfoFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When a user filters the information in a table, this string is appended \nto the information (sInfo) to give an idea of how strong the filtering \nis. The variable <em>MAX</em> is dynamically updated.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoPostFix\">sInfoPostFix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>If can be useful to append extra information to the info string at times,\nand this variable does exactly that. This information will be appended to\nthe sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\nbeing used) at all times.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoThousands\">sInfoThousands</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables has a build in number formatter (fnFormatNumber) which is used\nto format large numbers that are used in the table information. By\ndefault a comma is used, but this can be trivially changed to any\ncharacter you wish with this parameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLengthMenu\">sLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Detail the action that will be taken when the drop down menu for the\npagination length option is changed. The '<em>MENU</em>' variable is replaced\nwith a default select list of 10, 25, 50 and 100, and can be replaced\nwith a custom select box if required.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLoadingRecords\">sLoadingRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When using Ajax sourced data and during the first draw when DataTables is\ngathering the data, this message is shown in an empty row in the table to\nindicate to the end user the the data is being loaded. Note that this\nparameter is not used when loading data by server-side processing, just\nAjax sourced data with client-side processing.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sProcessing\">sProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text which is displayed when the table is processing a user action\n(usually a sort command or similar).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Details the actions that will be taken when the user types into the\nfiltering input text box. The variable \"<em>INPUT</em>\", if used in the string,\nis replaced with the HTML text box for the filtering input allowing\ncontrol over where it appears in the string. If \"<em>INPUT</em>\" is not given\nthen the input box is appended to the string automatically.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sUrl\">sUrl</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>All of the language information can be stored in a file on the\nserver-side, which DataTables will look up if this parameter is passed.\nIt must store the URL of the language file, which is in a JSON format,\nand the object has the same properties as the oLanguage object in the\ninitialiser object (i.e. the above parameters). Please refer to one of\nthe example language files to see how this works in action.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sZeroRecords\">sZeroRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text shown inside the table records when the is no information to be\ndisplayed after filtering. sEmptyTable is shown when there is simply no\ninformation in the table at all (regardless of filtering).</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sEmptyTable\"></a><a name=\"sEmptyTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sEmptyTable\">sEmptyTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>This string is shown in preference to sZeroRecords when the table is\nempty of data (regardless of filtering). Note that this is an optional\nparameter - if it is not given, the value of sZeroRecords will be used\ninstead (either the default or given value).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sEmptyTable\": \"No data available in table\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfo\"></a><a name=\"sInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfo\">sInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>This string gives information to the end user about the information that \nis current on display on the page. The <em>START</em>, <em>END</em> and <em>TOTAL</em> \nvariables are all dynamically replaced as the table display updates, and \ncan be freely moved or removed as the language requirements change.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sInfoEmpty\"></a><a name=\"sInfoEmpty_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoEmpty\">sInfoEmpty</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Display information string for when the table is empty. Typically the \nformat of this string should match sInfo.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoEmpty\": \"No entries to show\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfoFiltered\"></a><a name=\"sInfoFiltered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoFiltered\">sInfoFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When a user filters the information in a table, this string is appended \nto the information (sInfo) to give an idea of how strong the filtering \nis. The variable <em>MAX</em> is dynamically updated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sInfoPostFix\"></a><a name=\"sInfoPostFix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoPostFix\">sInfoPostFix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>If can be useful to append extra information to the info string at times,\nand this variable does exactly that. This information will be appended to\nthe sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\nbeing used) at all times.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoPostFix\": \"All records shown are derived from real information.\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sInfoThousands\"></a><a name=\"sInfoThousands_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInfoThousands\">sInfoThousands</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>DataTables has a build in number formatter (fnFormatNumber) which is used\nto format large numbers that are used in the table information. By\ndefault a comma is used, but this can be trivially changed to any\ncharacter you wish with this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sInfoThousands\": \"'\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sLengthMenu\"></a><a name=\"sLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLengthMenu\">sLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Detail the action that will be taken when the drop down menu for the\npagination length option is changed. The '<em>MENU</em>' variable is replaced\nwith a default select list of 10, 25, 50 and 100, and can be replaced\nwith a custom select box if required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Language change only\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLengthMenu\": \"Display _MENU_ records\"\n       }\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Language and options change\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLengthMenu\": 'Display <select>'+\n           '<option value=\"10\">10</option>'+\n           '<option value=\"20\">20</option>'+\n           '<option value=\"30\">30</option>'+\n           '<option value=\"40\">40</option>'+\n           '<option value=\"50\">50</option>'+\n           '<option value=\"-1\">All</option>'+\n           '</select> records'\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sLoadingRecords\"></a><a name=\"sLoadingRecords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLoadingRecords\">sLoadingRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When using Ajax sourced data and during the first draw when DataTables is\ngathering the data, this message is shown in an empty row in the table to\nindicate to the end user the the data is being loaded. Note that this\nparameter is not used when loading data by server-side processing, just\nAjax sourced data with client-side processing.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sLoadingRecords\": \"Please wait - loading...\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sProcessing\"></a><a name=\"sProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sProcessing\">sProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text which is displayed when the table is processing a user action\n(usually a sort command or similar).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sProcessing\": \"DataTables is currently busy\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSearch\"></a><a name=\"sSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Details the actions that will be taken when the user types into the\nfiltering input text box. The variable \"<em>INPUT</em>\", if used in the string,\nis replaced with the HTML text box for the filtering input allowing\ncontrol over where it appears in the string. If \"<em>INPUT</em>\" is not given\nthen the input box is appended to the string automatically.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Input text box will be appended at the end automatically\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sSearch\": \"Filter records:\"\n       }\n     } );\n   } );\n   \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Specify where the filter should appear\n   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sSearch\": \"Apply filter _INPUT_ to table\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sUrl\"></a><a name=\"sUrl_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sUrl\">sUrl</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>All of the language information can be stored in a file on the\nserver-side, which DataTables will look up if this parameter is passed.\nIt must store the URL of the language file, which is in a JSON format,\nand the object has the same properties as the oLanguage object in the\ninitialiser object (i.e. the above parameters). Please refer to one of\nthe example language files to see how this works in action.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sZeroRecords\"></a><a name=\"sZeroRecords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sZeroRecords\">sZeroRecords</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text shown inside the table records when the is no information to be\ndisplayed after filtering. sEmptyTable is shown when there is simply no\ninformation in the table at all (regardless of filtering).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"sZeroRecords\": \"No records to display\"\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oAria.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oAria - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oAria</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a> » <a href=\"DataTable.defaults.oLanguage.html\">.oLanguage</a>.</span> » oAria</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Strings that are used for WAI-ARIA labels and controls only (these are not\nactually visible on the page, but will be read by screenreaders, and thus\nmust be internationalised as well).</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortAscending\">sSortAscending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>ARIA label that is added to the table headers when the column may be\nsorted ascending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDescending\">sSortDescending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>ARIA label that is added to the table headers when the column may be\nsorted descending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sSortAscending\"></a><a name=\"sSortAscending_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortAscending\">sSortAscending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>ARIA label that is added to the table headers when the column may be\nsorted ascending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oAria\": {\n           \"sSortAscending\": \" - click/return to sort ascending\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sSortDescending\"></a><a name=\"sSortDescending_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDescending\">sSortDescending</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>ARIA label that is added to the table headers when the column may be\nsorted descending by activing the column (click or return when focused).\nNote that the column header is prefixed to this string.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oAria\": {\n           \"sSortDescending\": \" - click/return to sort descending\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oLanguage.oPaginate.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oPaginate - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oPaginate</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a> » <a href=\"DataTable.defaults.oLanguage.html\">.oLanguage</a>.</span> » oPaginate</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Pagination string used by DataTables for the two built-in pagination\ncontrol types (\"two_button\" and \"full_numbers\")</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sFirst\">sFirst</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the first page.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLast\">sLast</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the last page.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sNext\">sNext</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use for the 'next' pagination button (to take the user to the \nnext page).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPrevious\">sPrevious</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use for the 'previous' pagination button (to take the user to <br />\nthe previous page).</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"sFirst\"></a><a name=\"sFirst_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sFirst\">sFirst</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the first page.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sFirst\": \"First page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sLast\"></a><a name=\"sLast_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sLast\">sLast</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use when using the 'full_numbers' type of pagination for the\nbutton to take the user to the last page.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sLast\": \"Last page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"sNext\"></a><a name=\"sNext_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sNext\">sNext</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Text to use for the 'next' pagination button (to take the user to the \nnext page).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sNext\": \"Next page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"sPrevious\"></a><a name=\"sPrevious_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPrevious\">sPrevious</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Text to use for the 'previous' pagination button (to take the user to <br />\nthe previous page).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oLanguage\": {\n         \"oPaginate\": {\n           \"sPrevious\": \"Previous page\"\n         }\n       }\n     } );\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.defaults.oSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.defaults.html\">.defaults</a>.</span> » oSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>This parameter allows you to have define the global filtering state at\ninitialisation time. As an object the \"sSearch\" parameter must be\ndefined, but all other parameters are optional. When \"bRegex\" is true,\nthe search string will be treated as a regular expression, when false\n(default) it will be treated as a straight string. When \"bSmart\"\nDataTables will use it's smart filtering methods (to word match at\nany point in the data), when false this will not be done.</p><dl class=\"details\">\n\t\n</dl>\n<h3>Example</h3>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready( function() {\n     $('#example').dataTable( {\n       \"oSearch\": {\"sSearch\": \"Initial search\"}\n     } );\n   } )</pre>\n    </div>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.ext.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: ext - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: ext</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » ext</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Extension object for DataTables that is used to provide all extension options.</p>\n\n<p>Note that the <i>DataTable.ext</i> object is available through\n<i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\nalso aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.ext.html\">DataTable.models.ext</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: DataTable - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: DataTable</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (4)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (22)</a></td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td><a href=\"#summary_events\">Events (11)</a></td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (22)</a></td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td><a href=\"#summary_events\">Events (11)</a></td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"DataTable\" class=\"  even\"><a name=\"DataTable\"></a><a name=\"DataTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new DataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">oInit</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>DataTables is a plug-in for the jQuery Javascript library. It is a \nhighly flexible tool, based upon the foundations of progressive \nenhancement, which will add advanced interaction controls to any \nHTML table. For a full list of features please refer to\n<a href=\"http://datatables.net\">DataTables.net</a>.</p>\n\n<p>Note that the <i>DataTable</i> object is not a global variable but is\naliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \nit may be  accessed.</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oInit</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\">{}</td><td class=\"description last\"><p>Configuration object for DataTables. Options\n   are defined by <a href=\"DataTable.defaults.html\">DataTable.defaults</a></p></td></tr>\n\t</tbody>\n</table><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Basic initialisation\n   $(document).ready( function {\n     $('#example').dataTable();\n   } );\n \n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Initialisation with configuration options - in this case, disable\n   // pagination and sorting.\n   $(document).ready( function {\n     $('#example').dataTable( {\n       \"bPaginate\": false,\n       \"bSort\": false \n     } );\n   } );</pre>\n    </div>\n</div>\n</dl><h3 class=\"subsection-title\">Requires</h3>\n<ul>\n\t<li>module:jQuery</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.defaults.html\">defaults</a></span></dt><dd class=\"even\"><p>Initialisation options that can be given to DataTables at initialisation \ntime.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.ext.html\">ext</a></span></dt><dd class=\"odd\"><p>Extension object for DataTables that is used to provide all extension options. [<a href=\"DataTable.ext.html\">...</a>] </p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.html\">models</a></span></dt><dd class=\"even\"><p>Object models container, for the various models that DataTables has available\nto it. These models define the objects that are used to hold the active state \nand configuration of the table.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"34cdb56b2c.html\">oApi</a></span></dt><dd class=\"odd\"><p>Reference to internal functions for use by plug-in developers. Note that these\nmethods are references to internal functions and are considered to be private.\nIf you use these methods, be aware that they are liable to change between versions\n(check the upgrade notes).</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#version\">version</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#$\">$</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Perform a jQuery selector action on the table's TR elements (from the tbody) and\nreturn the resulting jQuery object.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_\">_</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Almost identical to $ in operation, but in this case returns the data for the matched\nrows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\nrather than any descendants, so the data can be obtained for the row/cell. If matching\nrows are found, the data returned is the original data array/object that was used to <br />\ncreate the row (or a generated array if from a DOM source). [<a href-\"#_\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnAddData\">fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Add a single new row or multiple rows of data to the table. Please note\nthat this is suitable for client-side processing only - if you are using \nserver-side processing (i.e. \"bServerSide\": true), then to add data, you\nmust add it to the data source, i.e. the server-side, through an Ajax call.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnAdjustColumnSizing\">fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>This function will make DataTables recalculate the column sizes, based on the data \ncontained in the table and the sizes applied to the columns (in the DOM, CSS or \nthrough the sWidth parameter). This can be useful when the width of the table's \nparent element changes (for example a window resize).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnClearTable\">fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Quickly and simply clear a table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnClose\">fnClose</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>The exact opposite of 'opening' a row, this function will close any rows which \nare currently 'open'.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDeleteRow\">fnDeleteRow</a></span><span class=\"type-sig\"><span class=\"signature\">(mTarget, <span class=\"optional\">fnCallBack</span>, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  even\"><p>Remove a row for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDestroy\">fnDestroy</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRemove</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Restore the table to it's original state in the DOM by removing all of DataTables \nenhancements, alterations to the DOM structure of the table and event listeners.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDraw\">fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bComplete</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Redraw the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnFilter\">fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(sInput, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRegex</span>, <span class=\"optional\">bSmart</span>, <span class=\"optional\">bShowGlobal</span>, <span class=\"optional\">bCaseInsensitive</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Filter the input based on data</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetData\">fnGetData</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">mRow</span>, <span class=\"optional\">iCol</span>)</span><span class=\"type-signature\"> &rarr; {array|object|string}</span></span></dt><dd class=\"  even\"><p>Get the data for the whole table, an individual row or an individual cell based on the \nprovided parameters.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetNodes\">fnGetNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">iRow</span>)</span><span class=\"type-signature\"> &rarr; {array|node}</span></span></dt><dd class=\"  odd\"><p>Get an array of the TR nodes that are used in the table's body. Note that you will \ntypically want to use the '$' API method in preference to this as it is more \nflexible.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnGetPosition\">fnGetPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Get the array indexes of a particular cell from it's DOM element\nand column index including hidden columns</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnIsOpen\">fnIsOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Check to see if a row is 'open' or not.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnOpen\">fnOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr, mHtml, sClass)</span><span class=\"type-signature\"> &rarr; {node}</span></span></dt><dd class=\"  even\"><p>This function will place a new row directly after a row which is currently \non display on the page, with the HTML contents that is passed into the \nfunction. This can be used, for example, to ask for confirmation that a \nparticular record should be deleted.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnPageChange\">fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(mAction, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Change the pagination - provides the internal logic for pagination in a simple API \nfunction. With this function you can have a DataTables table go to the next, \nprevious, first or last pages.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSetColumnVis\">fnSetColumnVis</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol, bShow, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Show a particular column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSettings\">fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  odd\"><p>Get the settings for a particular table for external manipulation</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSort\">fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Sort the table by a particular column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSortListener\">fnSortListener</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode, iColumn, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Attach a sort listener to an element for a given column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnUpdate\">fnUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, mRow, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRedraw</span>, <span class=\"optional\">bAction</span>)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Update a table cell or row - this method will accept either a single value to\nupdate the cell with, an array of values with one element for each column or\nan object in the same format as the original data source. The function is\nself-referencing in order to make the multi column updates easier.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  odd\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnIsDataTable\">fnIsDataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  even\"><p>Check if a TABLE node is a DataTable table already or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnTables\">fnTables</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bVisible</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></dt><dd class=\"  odd\"><p>Get all DataTable tables that have been initialised - optionally you can select to\nget only currently visible tables.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_events\"></a><h3 class=\"subsection-title\">Events</h3>\n<dl>\n    <dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#destroy\">destroy</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\nthe bDestroy:true parameter in the initialisation object. This can be used to remove\nbound events, added DOM nodes, etc.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#draw\">draw</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>Draw event, fired whenever the table is redrawn on the page, at the same point as\nfnDrawCallback. This may be useful for binding events or performing calculations when\nthe table is altered at all.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#filter\">filter</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Filter event, fired when the filtering applied to the table (using the build in global\nglobal filter, or column filters) is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#init\">init</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>DataTables initialisation complete event, fired when the table is fully drawn,\nincluding Ajax data loaded, if Ajax data is required.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#page\">page</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Page change event, fired when the paging of the table is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#processing\">processing</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>Processing event, fired when DataTables is doing some kind of processing (be it,\nsort, filter or anything else). Can be used to indicate to the end user that\nthere is something happening, or that something has finished.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#sort\">sort</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Sort event, fired when the sorting applied to the table is altered.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateLoaded\">stateLoaded</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>State loaded event, fired when state has been loaded from stored data and the settings\nobject has been modified by the loaded data.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateLoadParams\">stateLoadParams</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>State load event, fired when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state - allowing modification\nof the saved state is required or loading of state for a plug-in.</p></dd><dt class=\" odd\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#stateSaveParams\">stateSaveParams</a></span><span class=\"type-sig\"></span></dt><dd class=\" odd\"><p>State save event, fired when the table has changed state a new state save is required.\nThis method allows modification of the state saving object prior to actually doing the\nsave, including addition or other state properties (for plug-ins) or modification\nof a DataTables core property.</p></dd><dt class=\" even\"><span class=\"type-attr\"></span><span class=\"type-name\"><a href=\"#xhr\">xhr</a></span><span class=\"type-sig\"></span></dt><dd class=\" even\"><p>Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \nmade to the server for new data (note that this trigger is called in fnServerData,\nif you override fnServerData and which to use this event, you need to trigger it in\nyou success function).</p></dd>\n</dd>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"version\"></a><a name=\"version_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#version\">version</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"DataTable#$\" class=\"  even\"><a name=\"$\"></a><a name=\"$_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>$</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Perform a jQuery selector action on the table's TR elements (from the tbody) and\nreturn the resulting jQuery object.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSelector</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery selector or node collection to act on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional parameters for modifying the rows to be included</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.filter</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">none</td><td class=\"description last\"><p>Select TR elements that meet the current filter\n   criterion (\"applied\") or all TR elements (i.e. no filter).</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.order</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">current</td><td class=\"description last\"><p>Order of the TR elements in the processed array.\n   Can be either 'current', whereby the current sorting of the table is used, or\n   'original' whereby the original order the data was read into the table is used.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.page</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">all</td><td class=\"description last\"><p>Limit the selection to the currently displayed page\n   (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n   'current' and filter is 'applied', regardless of what they might be given as.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>jQuery object, filtered by the given selector.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Highlight every second row\n     oTable.$('tr:odd').css('backgroundColor', 'blue');\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Filter to rows with 'Webkit' in them, add a background colour and then\n     // remove the filter, thus highlighting the 'Webkit' rows only.\n     oTable.fnFilter('Webkit');\n     oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n     oTable.fnFilter('');\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#_\" class=\"  odd\"><a name=\"_\"></a><a name=\"__details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_</a></span><span class=\"type-sig\"><span class=\"signature\">(sSelector, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Almost identical to $ in operation, but in this case returns the data for the matched\nrows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\nrather than any descendants, so the data can be obtained for the row/cell. If matching\nrows are found, the data returned is the original data array/object that was used to <br />\ncreate the row (or a generated array if from a DOM source).</p>\n\n<p>This method is often useful in-combination with $ where both functions are given the\nsame parameters and the array indexes will match identically.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sSelector</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery selector or node collection to act on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional parameters for modifying the rows to be included</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.filter</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">none</td><td class=\"description last\"><p>Select elements that meet the current filter\n   criterion (\"applied\") or all elements (i.e. no filter).</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.order</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">current</td><td class=\"description last\"><p>Order of the data in the processed array.\n   Can be either 'current', whereby the current sorting of the table is used, or\n   'original' whereby the original order the data was read into the table is used.</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">oOpts.page</td><td class=\"type type-param\">string</td><td class=\"attributes\">&lt;optional><br></td><td class=\"default\">all</td><td class=\"description last\"><p>Limit the selection to the currently displayed page\n   (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n   'current' and filter is 'applied', regardless of what they might be given as.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Data for the matched elements. If any elements, as a result of the\n   selector, were not TR, TD or TH elements in the DataTable, they will have a null \n   entry in the array.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Get the data from the first row in the table\n     var data = oTable._('tr:first');\n\n     // Do something useful with the data\n     alert( \"First cell is: \"+data[0] );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n\n     // Filter to 'Webkit' and get all data for \n     oTable.fnFilter('Webkit');\n     var data = oTable._('tr', {\"filter\": \"applied\"});\n     \n     // Do something with the data\n     alert( data.length+\" rows matched the filter\" );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnAddData\" class=\"  even\"><a name=\"fnAddData\"></a><a name=\"fnAddData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnAddData</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Add a single new row or multiple rows of data to the table. Please note\nthat this is suitable for client-side processing only - if you are using \nserver-side processing (i.e. \"bServerSide\": true), then to add data, you\nmust add it to the data source, i.e. the server-side, through an Ajax call.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data to be added to the table. This can be:\n   <ul>\n     <li>1D array of data - add a single row with the data provided</li>\n     <li>2D array of arrays - add multiple rows in a single call</li>\n     <li>object - data object when using <i>mData</i></li>\n     <li>array of objects - multiple data objects when using <i>mData</i></li>\n   </ul></p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>An array of integers, representing the list of indexes in \n   <i>aoData</i> (<a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>) that have been added to \n   the table.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Global var for counter\n   var giCount = 2;\n   \n   $(document).ready(function() {\n     $('#example').dataTable();\n   } );\n   \n   function fnClickAddRow() {\n     $('#example').dataTable().fnAddData( [\n       giCount+\".1\",\n       giCount+\".2\",\n       giCount+\".3\",\n       giCount+\".4\" ]\n     );\n       \n     giCount++;\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnAdjustColumnSizing\" class=\"  odd\"><a name=\"fnAdjustColumnSizing\"></a><a name=\"fnAdjustColumnSizing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnAdjustColumnSizing</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>This function will make DataTables recalculate the column sizes, based on the data \ncontained in the table and the sizes applied to the columns (in the DOM, CSS or \nthrough the sWidth parameter). This can be useful when the width of the table's \nparent element changes (for example a window resize).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not, you will typically want to</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"bPaginate\": false\n     } );\n     \n     $(window).bind('resize', function () {\n       oTable.fnAdjustColumnSizing();\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnClearTable\" class=\"  even\"><a name=\"fnClearTable\"></a><a name=\"fnClearTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnClearTable</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Quickly and simply clear a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n     oTable.fnClearTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnClose\" class=\"  odd\"><a name=\"fnClose\"></a><a name=\"fnClose_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnClose</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>The exact opposite of 'opening' a row, this function will close any rows which \nare currently 'open'.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the table row to 'close'</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 on success, or 1 if failed (can't find the row)</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDeleteRow\" class=\"  even\"><a name=\"fnDeleteRow\"></a><a name=\"fnDeleteRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDeleteRow</a></span><span class=\"type-sig\"><span class=\"signature\">(mTarget, <span class=\"optional\">fnCallBack</span>, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  even\"><p>Remove a row for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mTarget</td><td class=\"type type-param\">mixed</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The index of the row from aoData to be deleted, or\n   the TR element you want to delete</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">fnCallBack</td><td class=\"type type-param\">function | null</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Callback function</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The row that was deleted</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Immediately remove the first row\n     oTable.fnDeleteRow( 0 );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDestroy\" class=\"  odd\"><a name=\"fnDestroy\"></a><a name=\"fnDestroy_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDestroy</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRemove</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Restore the table to it's original state in the DOM by removing all of DataTables \nenhancements, alterations to the DOM structure of the table and event listeners.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRemove</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Completely remove the table from the DOM</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     // This example is fairly pointless in reality, but shows how fnDestroy can be used\n     var oTable = $('#example').dataTable();\n     oTable.fnDestroy();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnDraw\" class=\"  even\"><a name=\"fnDraw\"></a><a name=\"fnDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDraw</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bComplete</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Redraw the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bComplete</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Re-filter and resort (if enabled) the table before the draw.</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n     oTable.fnDraw();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnFilter\" class=\"  odd\"><a name=\"fnFilter\"></a><a name=\"fnFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnFilter</a></span><span class=\"type-sig\"><span class=\"signature\">(sInput, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRegex</span>, <span class=\"optional\">bSmart</span>, <span class=\"optional\">bShowGlobal</span>, <span class=\"optional\">bCaseInsensitive</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Filter the input based on data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sInput</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>String to filter the table on</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int | null</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Column to limit filtering to</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRegex</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Treat as regular expression or not</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bSmart</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Perform smart filtering or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bShowGlobal</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Show the input global filter in it's input box(es)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>6</div></td><td class=\"name\">bCaseInsensitive</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Do case-insensitive matching (true) or not (false)</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sometime later - filter...\n     oTable.fnFilter( 'test string' );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetData\" class=\"  even\"><a name=\"fnGetData\"></a><a name=\"fnGetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetData</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">mRow</span>, <span class=\"optional\">iCol</span>)</span><span class=\"type-signature\"> &rarr; {array|object|string}</span></span></span></dt><dd class=\"  even\"><p>Get the data for the whole table, an individual row or an individual cell based on the \nprovided parameters.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mRow</td><td class=\"type type-param\">int | node</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>A TR row node, TD/TH cell node or an integer. If given as\n   a TR node then the data source for the whole row will be returned. If given as a\n   TD/TH cell node then iCol will be automatically calculated and the data for the\n   cell returned. If given as an integer, then this is treated as the aoData internal\n   data index for the row (see fnGetPosition) and the data for that row used.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional column index that you want the data of.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If mRow is undefined, then the data for all rows is\n   returned. If mRow is defined, just data for that row, and is iCol is\n   defined, only data for the designated cell is returned.</p></p><h5>Examples:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Row data\n   $(document).ready(function() {\n     oTable = $('#example').dataTable();\n\n     oTable.$('tr').click( function () {\n       var data = oTable.fnGetData( this );\n       // ... do something with the array / object of data for the row\n     } );\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Individual cell data\n   $(document).ready(function() {\n     oTable = $('#example').dataTable();\n\n     oTable.$('td').click( function () {\n       var sData = oTable.fnGetData( this );\n       alert( 'The cell clicked on had the value of '+sData );\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetNodes\" class=\"  odd\"><a name=\"fnGetNodes\"></a><a name=\"fnGetNodes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetNodes</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">iRow</span>)</span><span class=\"type-signature\"> &rarr; {array|node}</span></span></span></dt><dd class=\"  odd\"><p>Get an array of the TR nodes that are used in the table's body. Note that you will \ntypically want to use the '$' API method in preference to this as it is more \nflexible.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>Optional row index for the TR element you want</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If iRow is undefined, returns an array of all TR elements\n   in the table's body, or iRow is defined, just the TR element requested.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Get the nodes from the table\n     var nNodes = oTable.fnGetNodes( );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnGetPosition\" class=\"  even\"><a name=\"fnGetPosition\"></a><a name=\"fnGetPosition_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnGetPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Get the array indexes of a particular cell from it's DOM element\nand column index including hidden columns</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>this can either be a TR, TD or TH in the table's body</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>If nNode is given as a TR, then a single index is returned, or\n   if given as a cell, an array of [row index, column index (visible), \n   column index (all)] is given.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example tbody td').click( function () {\n       // Get the position of the current data from the node\n       var aPos = oTable.fnGetPosition( this );\n       \n       // Get the data array for this row\n       var aData = oTable.fnGetData( aPos[0] );\n       \n       // Update the data array and return the value\n       aData[ aPos[1] ] = 'clicked';\n       this.innerHTML = 'clicked';\n     } );\n     \n     // Init DataTables\n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnIsOpen\" class=\"  odd\"><a name=\"fnIsOpen\"></a><a name=\"fnIsOpen_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnIsOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Check to see if a row is 'open' or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the table row to check</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if the row is currently open, false otherwise</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnOpen\" class=\"  even\"><a name=\"fnOpen\"></a><a name=\"fnOpen_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnOpen</a></span><span class=\"type-sig\"><span class=\"signature\">(nTr, mHtml, sClass)</span><span class=\"type-signature\"> &rarr; {node}</span></span></span></dt><dd class=\"  even\"><p>This function will place a new row directly after a row which is currently \non display on the page, with the HTML contents that is passed into the \nfunction. This can be used, for example, to ask for confirmation that a \nparticular record should be deleted.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTr</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The table row to 'open'</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mHtml</td><td class=\"type type-param\">string | node | jQuery</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The HTML to put into the row</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">sClass</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Class to give the new TD cell</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The row opened. Note that if the table row passed in as the\n   first parameter, is not found in the table, this method will silently\n   return.</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable;\n     \n     // 'open' an information row when a row is clicked on\n     $('#example tbody tr').click( function () {\n       if ( oTable.fnIsOpen(this) ) {\n         oTable.fnClose( this );\n       } else {\n         oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n       }\n     } );\n     \n     oTable = $('#example').dataTable();\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnPageChange\" class=\"  odd\"><a name=\"fnPageChange\"></a><a name=\"fnPageChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnPageChange</a></span><span class=\"type-sig\"><span class=\"signature\">(mAction, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Change the pagination - provides the internal logic for pagination in a simple API \nfunction. With this function you can have a DataTables table go to the next, \nprevious, first or last pages.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mAction</td><td class=\"type type-param\">string | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n   or page number to jump to (integer), note that page 0 is the first page.</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     oTable.fnPageChange( 'next' );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSetColumnVis\" class=\"  even\"><a name=\"fnSetColumnVis\"></a><a name=\"fnSetColumnVis_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSetColumnVis</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol, bShow, <span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Show a particular column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column whose display should be changed</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">bool</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Show (true) or hide (false) the column</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Hide the second column after initialisation\n     oTable.fnSetColumnVis( 1, false );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSettings\" class=\"  odd\"><a name=\"fnSettings\"></a><a name=\"fnSettings_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  odd\"><p>Get the settings for a particular table for external manipulation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>DataTables settings object. See \n   <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     var oSettings = oTable.fnSettings();\n     \n     // Show an example parameter from the settings\n     alert( oSettings._iDisplayStart );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSort\" class=\"  even\"><a name=\"fnSort\"></a><a name=\"fnSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSort</a></span><span class=\"type-sig\"><span class=\"signature\">(iCol)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Sort the table by a particular column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iCol</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the data index to sort on. Note that this will not match the \n   'display index' if you have hidden data entries</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sort immediately with columns 0 and 1\n     oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnSortListener\" class=\"  odd\"><a name=\"fnSortListener\"></a><a name=\"fnSortListener_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSortListener</a></span><span class=\"type-sig\"><span class=\"signature\">(nNode, iColumn, <span class=\"optional\">fnCallback</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Attach a sort listener to an element for a given column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nNode</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the element to attach the sort listener to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>the column that a click on this node will sort on</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">fnCallback</td><td class=\"type type-param\">function</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>callback function when sort is run</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     \n     // Sort on column 1, when 'sorter' is clicked on\n     oTable.fnSortListener( document.getElementById('sorter'), 1 );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnUpdate\" class=\"  even\"><a name=\"fnUpdate\"></a><a name=\"fnUpdate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnUpdate</a></span><span class=\"type-sig\"><span class=\"signature\">(mData, mRow, <span class=\"optional\">iColumn</span>, <span class=\"optional\">bRedraw</span>, <span class=\"optional\">bAction</span>)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Update a table cell or row - this method will accept either a single value to\nupdate the cell with, an array of values with one element for each column or\nan object in the same format as the original data source. The function is\nself-referencing in order to make the multi column updates easier.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">mData</td><td class=\"type type-param\">object | array | string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Data to update the cell/row with</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">mRow</td><td class=\"type type-param\">node | int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>TR element you want to update or the aoData index</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\">Optional</td><td class=\"default\"></td><td class=\"description last\"><p>The column to update (not used of mData is an array or object)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table or not</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">bAction</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Perform pre-draw actions or not</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>0 on success, 1 on error</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n     oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n   } );</pre>\n    </div>\n</div>\n<dt id=\"DataTable#fnVersionCheck\" class=\"  odd\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  odd\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note that the\n   formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the required\n   version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     alert( oTable.fnVersionCheck( '1.9.0' ) );\n   } );</pre>\n    </div>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable.fnIsDataTable\" class=\"  even\"><a name=\"fnIsDataTable\"></a><a name=\"fnIsDataTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnIsDataTable</a></span><span class=\"type-sig\"><span class=\"signature\">(nTable)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  even\"><p>Check if a TABLE node is a DataTable table already or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTable</td><td class=\"type type-param\">node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TABLE node to check if it is a DataTable or not (note that other\n   node types can be passed in, but will always return false).</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true the table given is a DataTable, or false otherwise</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var ex = document.getElementById('example');\n   if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n     $(ex).dataTable();\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable.fnTables\" class=\"  odd\"><a name=\"fnTables\"></a><a name=\"fnTables_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnTables</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bVisible</span>)</span><span class=\"type-signature\"> &rarr; {array}</span></span></span></dt><dd class=\"  odd\"><p>Get all DataTable tables that have been initialised - optionally you can select to\nget only currently visible tables.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bVisible</td><td class=\"type type-param\">boolean</td><td class=\"attributes\">Optional</td><td class=\"default\">false</td><td class=\"description last\"><p>Flag to indicate if you want all (default) or \n   visible tables only.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Array of TABLE nodes (not DataTable instances) which are DataTables</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var table = $.fn.dataTable.fnTables(true);\n   if ( table.length > 0 ) {\n     $(table).dataTable().fnAdjustColumnSizing();\n   }</pre>\n    </div>\n</div>\n<dt id=\"DataTable.fnVersionCheck\" class=\"  even\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"signature\">(sVersion)</span><span class=\"type-signature\"> &rarr; {boolean}</span></span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, in order\nto ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note that the\n   formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the required\n   version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );</pre>\n    </div>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_events\"></a><h3 class=\"subsection-title\">Events</h3>\n<dl>\n    <dt id=\"DataTable#event:destroy\" class=\"  even\"><a name=\"destroy\"></a><a name=\"destroy_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>destroy</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\nthe bDestroy:true parameter in the initialisation object. This can be used to remove\nbound events, added DOM nodes, etc.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:draw\" class=\"  odd\"><a name=\"draw\"></a><a name=\"draw_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>draw</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>Draw event, fired whenever the table is redrawn on the page, at the same point as\nfnDrawCallback. This may be useful for binding events or performing calculations when\nthe table is altered at all.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:filter\" class=\"  even\"><a name=\"filter\"></a><a name=\"filter_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>filter</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Filter event, fired when the filtering applied to the table (using the build in global\nglobal filter, or column filters) is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:init\" class=\"  odd\"><a name=\"init\"></a><a name=\"init_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>init</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>DataTables initialisation complete event, fired when the table is fully drawn,\nincluding Ajax data loaded, if Ajax data is required.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The JSON object request from the server - only\n   present if client-side Ajax sourced data is used</li></ol></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:page\" class=\"  even\"><a name=\"page\"></a><a name=\"page_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>page</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Page change event, fired when the paging of the table is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:processing\" class=\"  odd\"><a name=\"processing\"></a><a name=\"processing_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>processing</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>Processing event, fired when DataTables is doing some kind of processing (be it,\nsort, filter or anything else). Can be used to indicate to the end user that\nthere is something happening, or that something has finished.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bShow</td><td class=\"type type-param\">boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Flag for if DataTables is doing processing or not</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:sort\" class=\"  even\"><a name=\"sort\"></a><a name=\"sort_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>sort</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Sort event, fired when the sorting applied to the table is altered.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateLoaded\" class=\"  odd\"><a name=\"stateLoaded\"></a><a name=\"stateLoaded_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateLoaded</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>State loaded event, fired when state has been loaded from stored data and the settings\nobject has been modified by the loaded data.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The saved state information</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateLoadParams\" class=\"  even\"><a name=\"stateLoadParams\"></a><a name=\"stateLoadParams_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateLoadParams</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>State load event, fired when the table is loading state from the stored data, but\nprior to the settings object being modified by the saved state - allowing modification\nof the saved state is required or loading of state for a plug-in.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The saved state information</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:stateSaveParams\" class=\"  odd\"><a name=\"stateSaveParams\"></a><a name=\"stateSaveParams_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>stateSaveParams</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  odd\"><p>State save event, fired when the table has changed state a new state save is required.\nThis method allows modification of the state saving object prior to actually doing the\nsave, including addition or other state properties (for plug-ins) or modification\nof a DataTables core property.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The state information to be saved</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable#event:xhr\" class=\"  even\"><a name=\"xhr\"></a><a name=\"xhr_details\"></a><span class=\"type-attr\"></span><span class=\"type-name\"><a>xhr</a></span><span class=\"type-sig\"></span></span></dt><dd class=\"  even\"><p>Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \nmade to the server for new data (note that this trigger is called in fnServerData,\nif you override fnServerData and which to use this event, you need to trigger it in\nyou success function).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">event</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>jQuery event object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a></p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">json</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>JSON returned from the server</p></td></tr>\n\t</tbody>\n</table></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.ext.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: ext - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: ext</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » ext</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\nfor plug-ins that can be used to extend the default DataTables behaviour - indeed many\nof the build in methods use this method to provide their own capabilities (sorting methods\nfor example).</p>\n\n<p>Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\nand modified by plug-ins.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnFiltering\">afnFiltering</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Plug-in filtering functions - this method of filtering is complimentary to the default\ntype based filtering, and a lot more comprehensive as it allows you complete control\nover the filtering logic. Each element in this array is a function (parameters\ndescribed below) that is called for every row in the table, and your logic decides if\nit should be included in the filtered data set or not.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{array|object} Data for the row to be processed (same as the original format\n          that was passed in as the data source, or an array from a DOM data source</li>\n        <li>{int} Row index in aoData (<a href=\"DataTable.models.oSettings.html#aoData\">DataTable.models.oSettings.aoData</a>), which can\n          be useful to retrieve the TR element if you need DOM interaction.</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnSortData\">afnSortData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type\nbased sorting that DataTables does automatically, allowing much greater control over the\nthe data that is being used to sort a column. This is useful if you want to do sorting\nbased on live data (for example the contents of an 'input' element) rather than just the\nstatic string that DataTables knows of. The way these plug-ins work is that you create\nan array of the values you wish to be sorted for the column in question and then return\nthat array. Which pre-sorting function is run here depends on the sSortDataType parameter\nthat is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \ndata.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{int} Target column index</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{array} Data for the column to be sorted upon</li>\n      </ul>\n    </il>\n  </ul> [<a href-\"#afnSortData\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFeatures\">aoFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\navailable to DataTables. These feature plug-ins are accessible through the sDom initialisation\noption. As such, each feature plug-in must describe a function that is used to initialise\nitself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\nof the feature (sFeature). Thus the objects attached to this method must provide:\n  <ul>\n    <li>{function} fnInit Initialisation of the plug-in\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>{node|null} The element which contains your feature. Note that the return\n               may also be void if your plug-in does not require to inject any DOM elements \n               into DataTables control (sDom) - for example this might be useful when \n               developing a plug-in which allows table control via keyboard entry.</li>\n          </ul>\n        </il>\n      </ul>\n    </li>\n    <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n    <li>{string} sFeature Feature name</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aTypes\">aTypes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and\nfiltering behave, and types can be either  be defined by the developer (sType for the\ncolumn) or they can be automatically detected by the methods in this array. The functions\ndefined in the array are quite simple, taking a single parameter (the data to analyse) \nand returning the type if it is a known type, or null otherwise.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be analysed</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Data type detected, or null if unknown (and thus pass it\n          on to the other type detection functions.</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnVersionCheck\">fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, \nin order to ensure compatibility.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iApiIndex\">iApiIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Index for what 'this' index API functions should use</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oApi\">oApi</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Container for all private functions in DataTables so they can be exposed externally</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#ofnSearch\">ofnSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column\n(or have it automatically detected for you by DataTables or a type detection plug-in), \nyou will typically be using this for custom sorting, but it can also be used to provide \ncustom filtering by allowing you to pre-processing the data and returning the data in\nthe format that should be filtered upon. This is done by adding functions this object \nwith a parameter name which matches the sType for that target column. This is the\ncorollary of <i>afnSortData</i> for filtering data.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be prepared for filtering</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Formatted string that will be used for the filtering.</li>\n      </ul>\n    </il>\n  </ul> [<a href-\"#ofnSearch\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oJUIClasses\">oJUIClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oPagination\">oPagination</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pagination plug-in methods - The style and controls of the pagination can significantly \nimpact on how the end user interacts with the data in your table, and DataTables allows \nthe addition of pagination controls by extending this object, which can then be enabled\nthrough the <i>sPaginationType</i> initialisation parameter. Each pagination type that\nis added is an object (the property name of which is what <i>sPaginationType</i> refers\nto) that has two properties, both methods that are used by DataTables to update the\ncontrol's state.\n  <ul>\n    <li>\n      fnInit -  Initialisation of the paging controls. Called only during initialisation \n        of the table. It is expected that this function will add the required DOM elements \n        to the page for the paging controls to work. The element pointer \n        'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n        controls (note that this is a 2D array to allow for multiple instances of each \n        DataTables DOM element). It is suggested that you add the controls to this element \n        as children\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{node} Container into which the pagination controls must be inserted</li>\n            <li>{function} Draw callback function - whenever the controls cause a page\n              change, this method must be called to redraw the table.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n    <li>\n      fnInit -  This function is called whenever the paging status of the table changes and is\n        typically used to update classes and/or text of the paging controls to reflex the new \n        status.\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{function} Draw callback function - in case you need to redraw the table again\n              or attach new event listeners</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oSort\">oSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\ndata column (you can add your own type detection functions, or override automatic \ndetection using sType). With this specific type given to the column, DataTables will \napply the required sort from the functions in the object. Each sort type must provide\ntwo mandatory methods, one each for ascending and descending sorting, and can optionally\nprovide a pre-formatting method that will help speed up sorting by allowing DataTables\nto pre-format the sort data only once (rather than every time the actual sort functions\nare run). The two sorting functions are typical Javascript sort methods:\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{<em>} Data to compare to the second parameter</li>\n        <li>{</em>} Data to compare to the first parameter</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than\n          the second parameter, ===0 if the two parameters are equal and >0 if\n          the first parameter should be sorted height than the second parameter.</li>\n      </ul>\n    </il>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oStdClasses\">oStdClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Storage for the various classes that DataTables uses</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sErrMode\">sErrMode</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sVersion\">sVersion</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"afnFiltering\"></a><a name=\"afnFiltering_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnFiltering\">afnFiltering</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Plug-in filtering functions - this method of filtering is complimentary to the default\ntype based filtering, and a lot more comprehensive as it allows you complete control\nover the filtering logic. Each element in this array is a function (parameters\ndescribed below) that is called for every row in the table, and your logic decides if\nit should be included in the filtered data set or not.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{array|object} Data for the row to be processed (same as the original format\n          that was passed in as the data source, or an array from a DOM data source</li>\n        <li>{int} Row index in aoData (<a href=\"DataTable.models.oSettings.html#aoData\">DataTable.models.oSettings.aoData</a>), which can\n          be useful to retrieve the TR element if you need DOM interaction.</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // The following example shows custom filtering being applied to the fourth column (i.e.\n   // the aData[3] index) based on two input values from the end-user, matching the data in \n   // a certain range.\n   $.fn.dataTableExt.afnFiltering.push(\n     function( oSettings, aData, iDataIndex ) {\n       var iMin = document.getElementById('min').value * 1;\n       var iMax = document.getElementById('max').value * 1;\n       var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n       if ( iMin == \"\" && iMax == \"\" ) {\n         return true;\n       }\n       else if ( iMin == \"\" && iVersion < iMax ) {\n         return true;\n       }\n       else if ( iMin < iVersion && \"\" == iMax ) {\n         return true;\n       }\n       else if ( iMin < iVersion && iVersion < iMax ) {\n         return true;\n       }\n       return false;\n     }\n   );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"afnSortData\"></a><a name=\"afnSortData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#afnSortData\">afnSortData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type\nbased sorting that DataTables does automatically, allowing much greater control over the\nthe data that is being used to sort a column. This is useful if you want to do sorting\nbased on live data (for example the contents of an 'input' element) rather than just the\nstatic string that DataTables knows of. The way these plug-ins work is that you create\nan array of the values you wish to be sorted for the column in question and then return\nthat array. Which pre-sorting function is run here depends on the sSortDataType parameter\nthat is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \ndata.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n        <li>{int} Target column index</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{array} Data for the column to be sorted upon</li>\n      </ul>\n    </il>\n  </ul></p>\n\n<p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\nthe different uses that DataTables can put the data to. Specifically <i>mData</i> when\nused as a function will give you a 'type' (sorting, filtering etc) that you can use to \nprepare the data as required for the different types. As such, this method is deprecated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Updating the cached sorting information with user entered values in HTML input elements\n   jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n   {\n     var aData = [];\n     $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n       aData.push( this.value );\n     } );\n     return aData;\n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"aoFeatures\"></a><a name=\"aoFeatures_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFeatures\">aoFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\navailable to DataTables. These feature plug-ins are accessible through the sDom initialisation\noption. As such, each feature plug-in must describe a function that is used to initialise\nitself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\nof the feature (sFeature). Thus the objects attached to this method must provide:\n  <ul>\n    <li>{function} fnInit Initialisation of the plug-in\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>{node|null} The element which contains your feature. Note that the return\n               may also be void if your plug-in does not require to inject any DOM elements \n               into DataTables control (sDom) - for example this might be useful when \n               developing a plug-in which allows table control via keyboard entry.</li>\n          </ul>\n        </il>\n      </ul>\n    </li>\n    <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n    <li>{string} sFeature Feature name</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // How TableTools initialises itself.\n   $.fn.dataTableExt.aoFeatures.push( {\n     \"fnInit\": function( oSettings ) {\n       return new TableTools( { \"oDTSettings\": oSettings } );\n     },\n     \"cFeature\": \"T\",\n     \"sFeature\": \"TableTools\"\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"aTypes\"></a><a name=\"aTypes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aTypes\">aTypes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and\nfiltering behave, and types can be either  be defined by the developer (sType for the\ncolumn) or they can be automatically detected by the methods in this array. The functions\ndefined in the array are quite simple, taking a single parameter (the data to analyse) \nand returning the type if it is a known type, or null otherwise.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be analysed</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Data type detected, or null if unknown (and thus pass it\n          on to the other type detection functions.</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Currency type detection plug-in:\n   jQuery.fn.dataTableExt.aTypes.push(\n     function ( sData ) {\n       var sValidChars = \"0123456789.-\";\n       var Char;\n       \n       // Check the numeric part\n       for ( i=1 ; i<sData.length ; i++ ) {\n         Char = sData.charAt(i); \n         if (sValidChars.indexOf(Char) == -1) {\n           return null;\n         }\n       }\n       \n       // Check prefixed by currency\n       if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n         return 'currency';\n       }\n       return null;\n     }\n   );</pre>\n    </div>\n</div></dd><dt id=\"DataTable.models.ext.fnVersionCheck\" class=\"  even\"><a name=\"fnVersionCheck\"></a><a name=\"fnVersionCheck_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnVersionCheck</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Provide a common method for plug-ins to check the version of DataTables being used, \nin order to ensure compatibility.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sVersion</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Version string to check for, in the format \"X.Y.Z\". Note \n   that the formats \"X\" and \"X.Y\" are also acceptable.</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>true if this version of DataTables is greater or equal to the \n   required version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     var oTable = $('#example').dataTable();\n     alert( oTable.fnVersionCheck( '1.9.0' ) );\n   } );</pre>\n    </div>\n</div>\n<dt class=\"  odd\"><a name=\"iApiIndex\"></a><a name=\"iApiIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iApiIndex\">iApiIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Index for what 'this' index API functions should use</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oApi\"></a><a name=\"oApi_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oApi\">oApi</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Container for all private functions in DataTables so they can be exposed externally</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"ofnSearch\"></a><a name=\"ofnSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#ofnSearch\">ofnSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column\n(or have it automatically detected for you by DataTables or a type detection plug-in), \nyou will typically be using this for custom sorting, but it can also be used to provide \ncustom filtering by allowing you to pre-processing the data and returning the data in\nthe format that should be filtered upon. This is done by adding functions this object \nwith a parameter name which matches the sType for that target column. This is the\ncorollary of <i>afnSortData</i> for filtering data.\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{*} Data from the column cell to be prepared for filtering</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{string|null} Formatted string that will be used for the filtering.</li>\n      </ul>\n    </il>\n  </ul></p>\n\n<p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\nthe different uses that DataTables can put the data to. Specifically <i>mData</i> when\nused as a function will give you a 'type' (sorting, filtering etc) that you can use to \nprepare the data as required for the different types. As such, this method is deprecated.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n     return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n   }</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"oJUIClasses\"></a><a name=\"oJUIClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oJUIClasses\">oJUIClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oPagination\"></a><a name=\"oPagination_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oPagination\">oPagination</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Pagination plug-in methods - The style and controls of the pagination can significantly \nimpact on how the end user interacts with the data in your table, and DataTables allows \nthe addition of pagination controls by extending this object, which can then be enabled\nthrough the <i>sPaginationType</i> initialisation parameter. Each pagination type that\nis added is an object (the property name of which is what <i>sPaginationType</i> refers\nto) that has two properties, both methods that are used by DataTables to update the\ncontrol's state.\n  <ul>\n    <li>\n      fnInit -  Initialisation of the paging controls. Called only during initialisation \n        of the table. It is expected that this function will add the required DOM elements \n        to the page for the paging controls to work. The element pointer \n        'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n        controls (note that this is a 2D array to allow for multiple instances of each \n        DataTables DOM element). It is suggested that you add the controls to this element \n        as children\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{node} Container into which the pagination controls must be inserted</li>\n            <li>{function} Draw callback function - whenever the controls cause a page\n              change, this method must be called to redraw the table.</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n    <li>\n      fnInit -  This function is called whenever the paging status of the table changes and is\n        typically used to update classes and/or text of the paging controls to reflex the new \n        status.\n      <ul>\n        <li>\n          Function input parameters:\n          <ul>\n            <li>{object} DataTables settings object: see <a href=\"DataTable.models.oSettings.html\">DataTable.models.oSettings</a>.</li>\n            <li>{function} Draw callback function - in case you need to redraw the table again\n              or attach new event listeners</li>\n          </ul>\n        </li>\n        <li>\n          Function return:\n          <ul>\n            <li>No return required</li>\n          </ul>\n        </il>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $.fn.dataTableExt.oPagination.four_button = {\n     \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n       nFirst = document.createElement( 'span' );\n       nPrevious = document.createElement( 'span' );\n       nNext = document.createElement( 'span' );\n       nLast = document.createElement( 'span' );\n       \n       nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n       nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n       nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n       nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n       \n       nFirst.className = \"paginate_button first\";\n       nPrevious.className = \"paginate_button previous\";\n       nNext.className=\"paginate_button next\";\n       nLast.className = \"paginate_button last\";\n       \n       nPaging.appendChild( nFirst );\n       nPaging.appendChild( nPrevious );\n       nPaging.appendChild( nNext );\n       nPaging.appendChild( nLast );\n       \n       $(nFirst).click( function () {\n         oSettings.oApi._fnPageChange( oSettings, \"first\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nPrevious).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nNext).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"next\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nLast).click( function() {\n         oSettings.oApi._fnPageChange( oSettings, \"last\" );\n         fnCallbackDraw( oSettings );\n       } );\n       \n       $(nFirst).bind( 'selectstart', function () { return false; } );\n       $(nPrevious).bind( 'selectstart', function () { return false; } );\n       $(nNext).bind( 'selectstart', function () { return false; } );\n       $(nLast).bind( 'selectstart', function () { return false; } );\n     },\n     \n     \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n       if ( !oSettings.aanFeatures.p ) {\n         return;\n       }\n       \n       // Loop over each instance of the pager\n       var an = oSettings.aanFeatures.p;\n       for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n         var buttons = an[i].getElementsByTagName('span');\n         if ( oSettings._iDisplayStart === 0 ) {\n           buttons[0].className = \"paginate_disabled_previous\";\n           buttons[1].className = \"paginate_disabled_previous\";\n         }\n         else {\n           buttons[0].className = \"paginate_enabled_previous\";\n           buttons[1].className = \"paginate_enabled_previous\";\n         }\n         \n         if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n           buttons[2].className = \"paginate_disabled_next\";\n           buttons[3].className = \"paginate_disabled_next\";\n         }\n         else {\n           buttons[2].className = \"paginate_enabled_next\";\n           buttons[3].className = \"paginate_enabled_next\";\n         }\n       }\n     }\n   };</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"oSort\"></a><a name=\"oSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oSort\">oSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\ndata column (you can add your own type detection functions, or override automatic \ndetection using sType). With this specific type given to the column, DataTables will \napply the required sort from the functions in the object. Each sort type must provide\ntwo mandatory methods, one each for ascending and descending sorting, and can optionally\nprovide a pre-formatting method that will help speed up sorting by allowing DataTables\nto pre-format the sort data only once (rather than every time the actual sort functions\nare run). The two sorting functions are typical Javascript sort methods:\n  <ul>\n    <li>\n      Function input parameters:\n      <ul>\n        <li>{<em>} Data to compare to the second parameter</li>\n        <li>{</em>} Data to compare to the first parameter</li>\n      </ul>\n    </li>\n    <li>\n      Function return:\n      <ul>\n        <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than\n          the second parameter, ===0 if the two parameters are equal and >0 if\n          the first parameter should be sorted height than the second parameter.</li>\n      </ul>\n    </il>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Examples</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Case-sensitive string sorting, with no pre-formatting method\n   $.extend( $.fn.dataTableExt.oSort, {\n     \"string-case-asc\": function(x,y) {\n       return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n     },\n     \"string-case-desc\": function(x,y) {\n       return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n     }\n   } );\n\n </pre>\n    </div>\n\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   // Case-insensitive string sorting, with pre-formatting\n   $.extend( $.fn.dataTableExt.oSort, {\n     \"string-pre\": function(x) {\n       return x.toLowerCase();\n     },\n     \"string-asc\": function(x,y) {\n       return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n     },\n     \"string-desc\": function(x,y) {\n       return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n     }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"oStdClasses\"></a><a name=\"oStdClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oStdClasses\">oStdClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Storage for the various classes that DataTables uses</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sErrMode\"></a><a name=\"sErrMode_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sErrMode\">sErrMode</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sVersion\"></a><a name=\"sVersion_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sVersion\">sVersion</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Version string for plug-ins to check compatibility. Allowed format is\na.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\ne are optional</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: models - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: models</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a>.</span> » models</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (5)</a></td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Object models container, for the various models that DataTables has available\nto it. These models define the objects that are used to hold the active state \nand configuration of the table.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.ext.html\">ext</a></span></dt><dd class=\"even\"><p>DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\nfor plug-ins that can be used to extend the default DataTables behaviour - indeed many\nof the build in methods use this method to provide their own capabilities (sorting methods\nfor example). [<a href=\"DataTable.models.ext.html\">...</a>] </p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oColumn.html\">oColumn</a></span></dt><dd class=\"odd\"><p>Template object for the column information object in DataTables. This object\nis held in the settings aoColumns array and contains all the information that\nDataTables needs about each individual column. [<a href=\"DataTable.models.oColumn.html\">...</a>] </p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oRow.html\">oRow</a></span></dt><dd class=\"even\"><p>Template object for the way in which DataTables holds information about\neach individual row. This is the object format used for the settings \naoData array.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSearch.html\">oSearch</a></span></dt><dd class=\"odd\"><p>Template object for the way in which DataTables holds information about\nsearch information for the global filter and individual column filters.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.html\">oSettings</a></span></dt><dd class=\"even\"><p>DataTables settings object - this holds all the information needed for a\ngiven table, including configuration, data and current application of the\ntable options. DataTables does not have a single instance for each DataTable\nwith the settings attached to that instance, but rather instances of the\nDataTable \"class\" are created on-the-fly as needed (typically by a \n$().dataTable() call) and the settings object is then applied to that\ninstance. [<a href=\"DataTable.models.oSettings.html\">...</a>] </p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oColumn.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oColumn - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oColumn</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oColumn</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (25)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (25)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the column information object in DataTables. This object\nis held in the settings aoColumns array and contains all the information that\nDataTables needs about each individual column.</p>\n\n<p>Note that this object is related to <a href=\"DataTable.defaults.columns.html\">DataTable.defaults.columns</a> \nbut this one is the internal data store for DataTables's cache of columns.\nIt should NOT be manipulated outside of DataTables. Any configuration should\nbe done through the initialisation options.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>A list of the columns that sorting should occur on when this column\nis sorted. That this property is an array allows multi-column sorting\nto be defined for a column (for example first name / last name columns\nwould benefit from this). The values are integers pointing to the\ncolumns to be sorted on (typically it will be a single integer pointing\nat itself, but that doesn't need to be the case).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Define the sorting directions that are applied to the column, in sequence\nas the column is repeatedly sorted upon - i.e. the first value is used\nas the sorting direction when the column if first sorted (clicked on).\nSort it again (click again) and it will move on to the next index.\nRepeat until loop.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the column is searchable, and thus should be included\nin the filtering or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is sortable or not.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender, you have two options for what \nto do with the data, and this property serves as the switch. Firstly, you \ncan have the sorting and filtering use the rendered value (true - default), \nor you can have the sorting and filtering us the original value (false). [<a href-\"#bUseRendered\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is currently visible in the table or not</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCreatedCell\">fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnGetData\">fnGetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to get data from a cell in a column. You should <b>never</b>\naccess data directly through _aData internally in DataTables - always use\nthe method attached to this property. It allows mData to function as\nrequired. This function is automatically assigned by the column \ninitialisation method</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRender\">fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column. [<a href-\"#fnRender\">...</a>] </p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnSetData\">fnSetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to set data for a cell in the column. You should <b>never</b> \nset the data directly to _aData internally in DataTables - always use\nthis method. It allows mData to function as required. This function\nis automatically assigned by the column initialisation method</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  even\"><p>Property to read the value for the cells in the column from the data \nsource array / object. If null, then the default content is used, if a\nfunction is given then the return from the function is used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  odd\"><p>Partner property to mData which is used (only when defined) to get\nthe data - i.e. it is basically the same as mData, but without the\n'set' option, and also the data fed to it is the result from mData.\nThis is the rendering method to match the data method of mData.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTf\">nTf</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Unique footer TH/TD element for this column (if there is one). Not used \nin DataTables as such, but can be used for plug-ins to reference the \nfooter for each column.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTh\">nTh</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Unique header TH/TD element for this column - this is what the sorting\nlistener is attached to (if sorting is enabled.)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The class to apply to all TD elements in the table's TBODY for the column</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Name for the column, allowing reference to the column by name as well as\nby index (needs a lookup to work by name).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Custom sorting data type - defines which of the available plug-ins in\nafnSortData the custom sorting will use - if any is defined.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClass\">sSortingClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to be applied to the header element when sorting on this column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClassJUI\">sSortingClassJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Class to be applied to the header element when sorting on this column -\nwhen jQuery UI theming is used.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Title of the column - what is seen in the TH element (nTh).</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Column sorting and filtering type</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Width of the column</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidthOrig\">sWidthOrig</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width of the column when it was first \"encountered\"</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aDataSort\"></a><a name=\"aDataSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aDataSort\">aDataSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>A list of the columns that sorting should occur on when this column\nis sorted. That this property is an array allows multi-column sorting\nto be defined for a column (for example first name / last name columns\nwould benefit from this). The values are integers pointing to the\ncolumns to be sorted on (typically it will be a single integer pointing\nat itself, but that doesn't need to be the case).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"asSorting\"></a><a name=\"asSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asSorting\">asSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Define the sorting directions that are applied to the column, in sequence\nas the column is repeatedly sorted upon - i.e. the first value is used\nas the sorting direction when the column if first sorted (clicked on).\nSort it again (click again) and it will move on to the next index.\nRepeat until loop.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSearchable\"></a><a name=\"bSearchable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSearchable\">bSearchable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the column is searchable, and thus should be included\nin the filtering or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortable\"></a><a name=\"bSortable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortable\">bSortable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is sortable or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bUseRendered\"></a><a name=\"bUseRendered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bUseRendered\">bUseRendered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> When using fnRender, you have two options for what \nto do with the data, and this property serves as the switch. Firstly, you \ncan have the sorting and filtering use the rendered value (true - default), \nor you can have the sorting and filtering us the original value (false).</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bVisible\"></a><a name=\"bVisible_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bVisible\">bVisible</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the column is currently visible in the table or not</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt id=\"DataTable.models.oColumn.fnCreatedCell\" class=\"  even\"><a name=\"fnCreatedCell\"></a><a name=\"fnCreatedCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCreatedCell</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Developer definable function that is called whenever a cell is created (Ajax source,\netc) or processed for input (DOM source). This can be used as a compliment to mRender\nallowing you to modify the DOM element (add background colour for example) when the\nelement is available.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">element</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The TD node that has been created</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sData</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The Data for the cell</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the whole row</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row index for the aoData data store</p></td></tr>\n\t</tbody>\n</table></div>\n<dt id=\"DataTable.models.oColumn.fnGetData\" class=\"  odd\"><a name=\"fnGetData\"></a><a name=\"fnGetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnGetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to get data from a cell in a column. You should <b>never</b>\naccess data directly through _aData internally in DataTables - always use\nthe method attached to this property. It allows mData to function as\nrequired. This function is automatically assigned by the column \ninitialisation method</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data array/object for the array \n   (i.e. aoData[]._aData)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sSpecific</td><td class=\"type type-param\">string</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The specific data type you want to get - \n   'display', 'type' 'filter' 'sort'</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The data for the cell from the given row's data</p></p></div>\n<dt id=\"DataTable.models.oColumn.fnRender\" class=\"  even\"><a name=\"fnRender\"></a><a name=\"fnRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p><code>Deprecated</code> Custom display function that will be called for the \ndisplay of each cell in this column.</p>\n\n<p>Please note that this option has now been deprecated and will be removed\nin the next version of DataTables. Please use mRender / mData rather than\nfnRender.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">o</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Object with the following parameters:</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The row in aoData</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.iDataColumn</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The column in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.aData</td><td class=\"type type-param\">array</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data for the row in question</p></td></tr><tr><td class=\"number right_border\"></td><td class=\"name\">o.oSettings</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The settings object for this DataTables instance</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>The string you which to use in the display</p></p></div>\n<dt id=\"DataTable.models.oColumn.fnSetData\" class=\"  odd\"><a name=\"fnSetData\"></a><a name=\"fnSetData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnSetData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to set data for a cell in the column. You should <b>never</b> \nset the data directly to _aData internally in DataTables - always use\nthis method. It allows mData to function as required. This function\nis automatically assigned by the column initialisation method</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oData</td><td class=\"type type-param\">array | object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>The data array/object for the array \n   (i.e. aoData[]._aData)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sValue</td><td class=\"type type-param\">*</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to set</p></td></tr>\n\t</tbody>\n</table></div>\n<dt class=\"  even\"><a name=\"mData\"></a><a name=\"mData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mData\">mData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  even\"><p>Property to read the value for the cells in the column from the data \nsource array / object. If null, then the default content is used, if a\nfunction is given then the return from the function is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"mRender\"></a><a name=\"mRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#mRender\">mRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function|int|string|null</span></span></dt><dd class=\"  odd\"><p>Partner property to mData which is used (only when defined) to get\nthe data - i.e. it is basically the same as mData, but without the\n'set' option, and also the data fed to it is the result from mData.\nThis is the rendering method to match the data method of mData.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTf\"></a><a name=\"nTf_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTf\">nTf</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Unique footer TH/TD element for this column (if there is one). Not used \nin DataTables as such, but can be used for plug-ins to reference the \nfooter for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTh\"></a><a name=\"nTh_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTh\">nTh</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Unique header TH/TD element for this column - this is what the sorting\nlistener is attached to (if sorting is enabled.)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sClass\"></a><a name=\"sClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sClass\">sClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The class to apply to all TD elements in the table's TBODY for the column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sContentPadding\"></a><a name=\"sContentPadding_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sContentPadding\">sContentPadding</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>When DataTables calculates the column widths to assign to each column,\nit finds the longest string in each column and then constructs a\ntemporary table and reads the widths from that. The problem with this\nis that \"mmm\" is much wider then \"iiii\", but the latter is a longer \nstring - thus the calculation can go wrong (doing it properly and putting\nit into an DOM object and measuring that is horribly(!) slow). Thus as\na \"work around\" we provide this option. It will append its value to the\ntext that is found to be the longest string for the column - i.e. padding.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sDefaultContent\"></a><a name=\"sDefaultContent_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDefaultContent\">sDefaultContent</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Allows a default value to be given for a column's data, and will be used\nwhenever a null data source is encountered (this can be because mData\nis set to null, or because the data source itself is null).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sName\"></a><a name=\"sName_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sName\">sName</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Name for the column, allowing reference to the column by name as well as\nby index (needs a lookup to work by name).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sSortDataType\"></a><a name=\"sSortDataType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortDataType\">sSortDataType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Custom sorting data type - defines which of the available plug-ins in\nafnSortData the custom sorting will use - if any is defined.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sSortingClass\"></a><a name=\"sSortingClass_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClass\">sSortingClass</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Class to be applied to the header element when sorting on this column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sSortingClassJUI\"></a><a name=\"sSortingClassJUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSortingClassJUI\">sSortingClassJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Class to be applied to the header element when sorting on this column -\nwhen jQuery UI theming is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sTitle\"></a><a name=\"sTitle_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTitle\">sTitle</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Title of the column - what is seen in the TH element (nTh).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sType\"></a><a name=\"sType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sType\">sType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Column sorting and filtering type</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sWidth\"></a><a name=\"sWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidth\">sWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Width of the column</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sWidthOrig\"></a><a name=\"sWidthOrig_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sWidthOrig\">sWidthOrig</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width of the column when it was first \"encountered\"</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oRow.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oRow - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oRow</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oRow</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (2)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the way in which DataTables holds information about\neach individual row. This is the object format used for the settings \naoData array.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTr\">nTr</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>TR element for the row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_aData\">_aData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|object</span></span></dt><dd class=\"  odd\"><p>Data object from the original data source for the row. This is either\nan array if using the traditional form of DataTables, or an object if\nusing mData options. The exact type will depend on the passed in\ndata from the data source, or will be an array if using DOM a data \nsource.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"nTr\"></a><a name=\"nTr_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTr\">nTr</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>TR element for the row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"_aData\"></a><a name=\"_aData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_aData\">_aData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|object</span></span></dt><dd class=\"  odd\"><p>Data object from the original data source for the row. This is either\nan array if using the traditional form of DataTables, or an object if\nusing mData options. The exact type will depend on the passed in\ndata from the data source, or will be an array if using DOM a data \nsource.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (4)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Template object for the way in which DataTables holds information about\nsearch information for the global filter and individual column filters.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCaseInsensitive\">bCaseInsensitive</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the filtering should be case insensitive or not</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRegex\">bRegex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the search term should be interpreted as a\nregular expression (true) or not (false) and therefore and special\nregex characters escaped.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSmart\">bSmart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if DataTables is to use its smart filtering or not.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Applied search term</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bCaseInsensitive\"></a><a name=\"bCaseInsensitive_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCaseInsensitive\">bCaseInsensitive</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if the filtering should be case insensitive or not</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bRegex\"></a><a name=\"bRegex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bRegex\">bRegex</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Flag to indicate if the search term should be interpreted as a\nregular expression (true) or not (false) and therefore and special\nregex characters escaped.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSmart\"></a><a name=\"bSmart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSmart\">bSmart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if DataTables is to use its smart filtering or not.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sSearch\"></a><a name=\"sSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sSearch\">sSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Applied search term</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oSettings - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oSettings</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a>.</span> » oSettings</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (5)</a></td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (67)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (67)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (3)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DataTables settings object - this holds all the information needed for a\ngiven table, including configuration, data and current application of the\ntable options. DataTables does not have a single instance for each DataTable\nwith the settings attached to that instance, but rather instances of the\nDataTable \"class\" are created on-the-fly as needed (typically by a \n$().dataTable() call) and the settings object is then applied to that\ninstance.</p>\n\n<p>Note that this object is related to <a href=\"DataTable.defaults.html\">DataTable.defaults</a> but this \none is the internal data store for DataTables's cache of columns. It should\nNOT be manipulated outside of DataTables. Any configuration should be done\nthrough the initialisation options.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oBrowser.html\">oBrowser</a></span></dt><dd class=\"even\"><p>Browser support parameters</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oFeatures.html\">oFeatures</a></span></dt><dd class=\"odd\"><p>Primary features of DataTables and their enablement state.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oLanguage.html\">oLanguage</a></span></dt><dd class=\"even\"><p>Language information for the table.</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oPreviousSearch.html\">oPreviousSearch</a></span></dt><dd class=\"odd\"><p>Store the applied global search information in case we want to force a \nresearch or compare the old search to a new one.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"DataTable.models.oSettings.oScroll.html\">oScroll</a></span></dt><dd class=\"even\"><p>Scrolling settings for a table.</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aanFeatures\">aanFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array referencing the nodes which are used for the features. The \nparameters of this object match what is allowed by sDom - i.e.\n  <ul>\n    <li>'l' - Length changing</li>\n    <li>'f' - Filtering input</li>\n    <li>'t' - The table!</li>\n    <li>'i' - Information</li>\n    <li>'p' - Pagination</li>\n    <li>'r' - pRocessing</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Sorting that is applied to the table. Note that the inner arrays are\nused in the following manner: [<a href-\"#aaSorting\">...</a>] </p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|null</span></span></dt><dd class=\"  even\"><p>Sorting that is always applied to the table (i.e. prefixed in front of\naaSorting).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplay\">aiDisplay</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of indexes which are in the current display (after filtering etc)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplayMaster\">aiDisplayMaster</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of indexes for display - no filtering</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>List of options that can be used for the user selectable length menu.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about each column that is in use</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoData\">aoData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store data information - see <a href=\"DataTable.models.oRow.html\">DataTable.models.oRow</a> for detailed\ninformation.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDestroyCallback\">aoDestroyCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Destroy callback functions - for plug-ins to attach themselves to the\ndestroy so they can clean up markup and events.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDrawCallback\">aoDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for draw callback functions</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooter\">aoFooter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's footer</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooterCallback\">aoFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback function for the footer on each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeader\">aoHeader</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's header</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeaderCallback\">aoHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback functions for the header on each draw.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInitComplete\">aoInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for when the table has been initialised.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoOpenRows\">aoOpenRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Information about open rows. Each object in the array has the parameters\n'nTr' and 'nParent'</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreDrawCallback\">aoPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for just before the table is redrawn. A return of \nfalse will be used to cancel the draw.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreSearchCols\">aoPreSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store the applied search for each column - see \n<a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a> for the format that is used for the\nfiltering information for each column.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCallback\">aoRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions array for every time a row is inserted (i.e. on a draw).</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCreatedCallback\">aoRowCreatedCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for row created function</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoServerParams\">aoServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Functions which are called prior to sending an Ajax request so extra \nparameters can easily be sent to the server</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoad\">aoStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for state loading. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings \n      and the object stored. May return false to cancel state loading</li>\n    <li>string:sName - name of callback</li>\n  </ul></p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoaded\">aoStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callbacks for operating on the settings object once the saved state has been\nloaded</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoadParams\">aoStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings that have been stored for state saving\nprior to using the stored values to restore the state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSave\">aoStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of callback functions for state saving. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings\n      and the JSON string to save that has been thus far created. Returns\n      a JSON string to be inserted into a json object \n      (i.e. '\"param\": [ 0, 1, 2]')</li>\n    <li>string:sName - name of callback</li>\n  </ul></p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSaveParams\">aoStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings to be stored for state saving, prior to\nsaving state.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDataSearch\">asDataSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Search data array for regular expression searching</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDestroyStripes\">asDestroyStripes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its striping classes as well</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Classes to use for the striping of a table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAjaxDataGet\">bAjaxDataGet</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Note if draw should be blocked while getting data</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferLoading\">bDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if when using server-side processing the loading of data \nshould be deferred until the second draw.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDrawing\">bDrawing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if a redraw is being done - useful for Ajax</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFiltered\">bFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if filtering has been done in the draw. Deprecated in favour of\nevents.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInitialised\">bInitialised</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if all required information has been read in</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJUI\">bJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if jQuery UI marking and classes should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate that if multiple rows are in the header and there is more than \none unique cell per column, if the top one (true) or bottom one (false) \nshould be used for sorting / title by DataTables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSorted\">bSorted</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if sorting has been done in the draw. Deprecated in favour of\nevents.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnCookieCallback\">fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Callback function for cookie creation.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnFormatNumber\">fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Format numbers for display.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnServerData\">fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  odd\"><p>Function to get the server-side data.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The cookie duration (for bStateSave) in seconds.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDraw\">iDraw</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Counter for the draws that the table does. Also used as a tracker for\nserver-side processing</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDrawError\">iDrawError</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Draw index (iDraw) of the last error when parsing the returned data</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>tabindex attribute value that is added to DataTables control elements, allowing\nkeyboard navigation of the table and its controls.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#jqXHR\">jqXHR</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The last jQuery XHR object that was used for server-side data gathering. \nThis can be used for working with the XHR information in one of the \ncallbacks</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollFoot\">nScrollFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>DIV container for the footer scrolling table if scrolling</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollHead\">nScrollHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>DIV container for the footer scrolling table if scrolling</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTable\">nTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>The TABLE node for the main table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTableWrapper\">nTableWrapper</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Cache the wrapper node (contains all DataTables controlled elements)</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTBody\">nTBody</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the tbody element</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTFoot\">nTFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Permanent ref to the tfoot element - if it exists</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTHead\">nTHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the thead element</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oClasses\">oClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The classes to use for the table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInit\">oInit</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Initialisation object that is used for the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInstance\">oInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The DataTables object for this table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oLoadedState\">oLoadedState</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>State that was loaded from the cookie. Useful for back reference</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Property from a given object from which to read the table data from. This\ncan be an empty string (when not server-side processing), in which case \nit is  assumed an an array is given directly.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Source url for AJAX data for the table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The cookie name prefix.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDestroyWidth\">sDestroyWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its width</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Dictate the positioning of DataTables' control elements - see\nDataTable.model.oInit.sDom.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInstance\">sInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Unique identifier for each instance of the DataTables object. If there\nis an ID on the table node, then it takes that value, otherwise an\nincrementing internal counter is used.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Which type of pagination should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \nrequired).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTableId\">sTableId</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Cache the table ID for quick access</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayLength\">_iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Paging display length</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayStart\">_iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Paging start point - aiDisplay index</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnDisplayEnd\">fnDisplayEnd</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Set the display end point - aiDisplay index</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRecordsDisplay\">fnRecordsDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Get the number of records in the current record set, after filtering</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRecordsTotal\">fnRecordsTotal</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Get the number of records in the current record set, before filtering</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aanFeatures\"></a><a name=\"aanFeatures_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aanFeatures\">aanFeatures</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array referencing the nodes which are used for the features. The \nparameters of this object match what is allowed by sDom - i.e.\n  <ul>\n    <li>'l' - Length changing</li>\n    <li>'f' - Filtering input</li>\n    <li>'t' - The table!</li>\n    <li>'i' - Information</li>\n    <li>'p' - Pagination</li>\n    <li>'r' - pRocessing</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aaSorting\"></a><a name=\"aaSorting_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSorting\">aaSorting</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Sorting that is applied to the table. Note that the inner arrays are\nused in the following manner:</p>\n\n<ul>\n  <li>Index 0 - column number</li>\n  <li>Index 1 - current sorting direction</li>\n  <li>Index 2 - index of asSorting for this column</li>\n</ul>\n\n<p>Note that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aaSortingFixed\"></a><a name=\"aaSortingFixed_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aaSortingFixed\">aaSortingFixed</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array|null</span></span></dt><dd class=\"  even\"><p>Sorting that is always applied to the table (i.e. prefixed in front of\naaSorting).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aiDisplay\"></a><a name=\"aiDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplay\">aiDisplay</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of indexes which are in the current display (after filtering etc)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aiDisplayMaster\"></a><a name=\"aiDisplayMaster_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aiDisplayMaster\">aiDisplayMaster</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of indexes for display - no filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aLengthMenu\"></a><a name=\"aLengthMenu_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aLengthMenu\">aLengthMenu</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>List of options that can be used for the user selectable length menu.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoColumns\"></a><a name=\"aoColumns_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoColumns\">aoColumns</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about each column that is in use</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoData\"></a><a name=\"aoData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoData\">aoData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store data information - see <a href=\"DataTable.models.oRow.html\">DataTable.models.oRow</a> for detailed\ninformation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoDestroyCallback\"></a><a name=\"aoDestroyCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDestroyCallback\">aoDestroyCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Destroy callback functions - for plug-ins to attach themselves to the\ndestroy so they can clean up markup and events.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoDrawCallback\"></a><a name=\"aoDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoDrawCallback\">aoDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for draw callback functions</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoFooter\"></a><a name=\"aoFooter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooter\">aoFooter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's footer</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoFooterCallback\"></a><a name=\"aoFooterCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoFooterCallback\">aoFooterCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback function for the footer on each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoHeader\"></a><a name=\"aoHeader_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeader\">aoHeader</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Store information about the table's header</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoHeaderCallback\"></a><a name=\"aoHeaderCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoHeaderCallback\">aoHeaderCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callback functions for the header on each draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoInitComplete\"></a><a name=\"aoInitComplete_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInitComplete\">aoInitComplete</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for when the table has been initialised.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoOpenRows\"></a><a name=\"aoOpenRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoOpenRows\">aoOpenRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Information about open rows. Each object in the array has the parameters\n'nTr' and 'nParent'</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoPreDrawCallback\"></a><a name=\"aoPreDrawCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreDrawCallback\">aoPreDrawCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions for just before the table is redrawn. A return of \nfalse will be used to cancel the draw.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoPreSearchCols\"></a><a name=\"aoPreSearchCols_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoPreSearchCols\">aoPreSearchCols</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Store the applied search for each column - see \n<a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a> for the format that is used for the\nfiltering information for each column.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoRowCallback\"></a><a name=\"aoRowCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCallback\">aoRowCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callback functions array for every time a row is inserted (i.e. on a draw).</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoRowCreatedCallback\"></a><a name=\"aoRowCreatedCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoRowCreatedCallback\">aoRowCreatedCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for row created function</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoServerParams\"></a><a name=\"aoServerParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoServerParams\">aoServerParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Functions which are called prior to sending an Ajax request so extra \nparameters can easily be sent to the server</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateLoad\"></a><a name=\"aoStateLoad_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoad\">aoStateLoad</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Array of callback functions for state loading. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings \n      and the object stored. May return false to cancel state loading</li>\n    <li>string:sName - name of callback</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoStateLoaded\"></a><a name=\"aoStateLoaded_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoaded\">aoStateLoaded</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Callbacks for operating on the settings object once the saved state has been\nloaded</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateLoadParams\"></a><a name=\"aoStateLoadParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateLoadParams\">aoStateLoadParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings that have been stored for state saving\nprior to using the stored values to restore the state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"aoStateSave\"></a><a name=\"aoStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSave\">aoStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of callback functions for state saving. Each array element is an \nobject with the following parameters:\n  <ul>\n    <li>function:fn - function to call. Takes two parameters, oSettings\n      and the JSON string to save that has been thus far created. Returns\n      a JSON string to be inserted into a json object \n      (i.e. '\"param\": [ 0, 1, 2]')</li>\n    <li>string:sName - name of callback</li>\n  </ul></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"aoStateSaveParams\"></a><a name=\"aoStateSaveParams_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoStateSaveParams\">aoStateSaveParams</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>Callbacks for modifying the settings to be stored for state saving, prior to\nsaving state.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"asDataSearch\"></a><a name=\"asDataSearch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDataSearch\">asDataSearch</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Search data array for regular expression searching</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"asDestroyStripes\"></a><a name=\"asDestroyStripes_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asDestroyStripes\">asDestroyStripes</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its striping classes as well</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"asStripeClasses\"></a><a name=\"asStripeClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#asStripeClasses\">asStripeClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Classes to use for the striping of a table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bAjaxDataGet\"></a><a name=\"bAjaxDataGet_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAjaxDataGet\">bAjaxDataGet</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Note if draw should be blocked while getting data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bDeferLoading\"></a><a name=\"bDeferLoading_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferLoading\">bDeferLoading</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if when using server-side processing the loading of data \nshould be deferred until the second draw.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bDrawing\"></a><a name=\"bDrawing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDrawing\">bDrawing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if a redraw is being done - useful for Ajax</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bFiltered\"></a><a name=\"bFiltered_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFiltered\">bFiltered</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if filtering has been done in the draw. Deprecated in favour of\nevents.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bInitialised\"></a><a name=\"bInitialised_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInitialised\">bInitialised</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate if all required information has been read in</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bJUI\"></a><a name=\"bJUI_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bJUI\">bJUI</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to indicate if jQuery UI marking and classes should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortCellsTop\"></a><a name=\"bSortCellsTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortCellsTop\">bSortCellsTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Indicate that if multiple rows are in the header and there is more than \none unique cell per column, if the top one (true) or bottom one (false) \nshould be used for sorting / title by DataTables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSorted\"></a><a name=\"bSorted_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSorted\">bSorted</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag attached to the settings object so you can check in the draw \ncallback if sorting has been done in the draw. Deprecated in favour of\nevents.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt id=\"DataTable.models.oSettings.fnCookieCallback\" class=\"  odd\"><a name=\"fnCookieCallback\"></a><a name=\"fnCookieCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnCookieCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Callback function for cookie creation.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnFormatNumber\" class=\"  even\"><a name=\"fnFormatNumber\"></a><a name=\"fnFormatNumber_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnFormatNumber</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Format numbers for display.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnServerData\" class=\"  odd\"><a name=\"fnServerData\"></a><a name=\"fnServerData_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnServerData</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  odd\"><p>Function to get the server-side data.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt class=\"  even\"><a name=\"iCookieDuration\"></a><a name=\"iCookieDuration_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iCookieDuration\">iCookieDuration</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>The cookie duration (for bStateSave) in seconds.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iDraw\"></a><a name=\"iDraw_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDraw\">iDraw</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Counter for the draws that the table does. Also used as a tracker for\nserver-side processing</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"iDrawError\"></a><a name=\"iDrawError_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iDrawError\">iDrawError</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Draw index (iDraw) of the last error when parsing the returned data</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iTabIndex\"></a><a name=\"iTabIndex_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iTabIndex\">iTabIndex</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>tabindex attribute value that is added to DataTables control elements, allowing\nkeyboard navigation of the table and its controls.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"jqXHR\"></a><a name=\"jqXHR_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#jqXHR\">jqXHR</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The last jQuery XHR object that was used for server-side data gathering. \nThis can be used for working with the XHR information in one of the \ncallbacks</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nScrollFoot\"></a><a name=\"nScrollFoot_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollFoot\">nScrollFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>DIV container for the footer scrolling table if scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nScrollHead\"></a><a name=\"nScrollHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nScrollHead\">nScrollHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>DIV container for the footer scrolling table if scrolling</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTable\"></a><a name=\"nTable_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTable\">nTable</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>The TABLE node for the main table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTableWrapper\"></a><a name=\"nTableWrapper_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTableWrapper\">nTableWrapper</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Cache the wrapper node (contains all DataTables controlled elements)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTBody\"></a><a name=\"nTBody_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTBody\">nTBody</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the tbody element</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"nTFoot\"></a><a name=\"nTFoot_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTFoot\">nTFoot</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  even\"><p>Permanent ref to the tfoot element - if it exists</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"nTHead\"></a><a name=\"nTHead_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#nTHead\">nTHead</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :node</span></span></dt><dd class=\"  odd\"><p>Permanent ref to the thead element</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oClasses\"></a><a name=\"oClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oClasses\">oClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The classes to use for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oInit\"></a><a name=\"oInit_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInit\">oInit</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>Initialisation object that is used for the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"oInstance\"></a><a name=\"oInstance_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oInstance\">oInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>The DataTables object for this table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"oLoadedState\"></a><a name=\"oLoadedState_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#oLoadedState\">oLoadedState</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  odd\"><p>State that was loaded from the cookie. Useful for back reference</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sAjaxDataProp\"></a><a name=\"sAjaxDataProp_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxDataProp\">sAjaxDataProp</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Property from a given object from which to read the table data from. This\ncan be an empty string (when not server-side processing), in which case \nit is  assumed an an array is given directly.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sAjaxSource\"></a><a name=\"sAjaxSource_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sAjaxSource\">sAjaxSource</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Source url for AJAX data for the table.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sCookiePrefix\"></a><a name=\"sCookiePrefix_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sCookiePrefix\">sCookiePrefix</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>The cookie name prefix.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sDestroyWidth\"></a><a name=\"sDestroyWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDestroyWidth\">sDestroyWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>If restoring a table - we should restore its width</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sDom\"></a><a name=\"sDom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sDom\">sDom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Dictate the positioning of DataTables' control elements - see\nDataTable.model.oInit.sDom.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sInstance\"></a><a name=\"sInstance_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sInstance\">sInstance</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Unique identifier for each instance of the DataTables object. If there\nis an ID on the table node, then it takes that value, otherwise an\nincrementing internal counter is used.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sPaginationType\"></a><a name=\"sPaginationType_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sPaginationType\">sPaginationType</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Which type of pagination should be used.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sServerMethod\"></a><a name=\"sServerMethod_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sServerMethod\">sServerMethod</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \nrequired).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sTableId\"></a><a name=\"sTableId_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sTableId\">sTableId</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Cache the table ID for quick access</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"_iDisplayLength\"></a><a name=\"_iDisplayLength_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayLength\">_iDisplayLength</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Paging display length</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"_iDisplayStart\"></a><a name=\"_iDisplayStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#_iDisplayStart\">_iDisplayStart</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Paging start point - aiDisplay index</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"DataTable.models.oSettings.fnDisplayEnd\" class=\"  even\"><a name=\"fnDisplayEnd\"></a><a name=\"fnDisplayEnd_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnDisplayEnd</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Set the display end point - aiDisplay index</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnRecordsDisplay\" class=\"  odd\"><a name=\"fnRecordsDisplay\"></a><a name=\"fnRecordsDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRecordsDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Get the number of records in the current record set, after filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n<dt id=\"DataTable.models.oSettings.fnRecordsTotal\" class=\"  even\"><a name=\"fnRecordsTotal\"></a><a name=\"fnRecordsTotal_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRecordsTotal</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Get the number of records in the current record set, before filtering</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oBrowser.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oBrowser - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oBrowser</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oBrowser</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Browser support parameters</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollOversize\">bScrollOversize</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if the browser incorrectly calculates width:100% inside a\nscrolling element (IE6/7)</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bScrollOversize\"></a><a name=\"bScrollOversize_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bScrollOversize\">bScrollOversize</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if the browser incorrectly calculates width:100% inside a\nscrolling element (IE6/7)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oFeatures.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oFeatures - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oFeatures</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oFeatures</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (11)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (11)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Primary features of DataTables and their enablement state.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to say if DataTables should automatically try to calculate the\noptimum table and columns widths (true) or not (false).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Delay the creation of TR and TD elements until they are actually\nneeded by a driven page draw. This can give a significant speed\nincrease for Ajax source and Javascript source data, but makes no\ndifference at all fro DOM and server-side processing tables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable filtering on the table or not. Note that if this is disabled\nthen there is no filtering at all on the table, including fnFilter.\nTo just remove the filtering input use sDom and remove the 'f' option.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Table information element (the 'Showing x of y records' div) enable\nflag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Present a user control allowing the end user to change the page size\nwhen pagination is enabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Pagination enabled or not. Note that if this is disabled then length\nchanging must also be disabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Processing indicator enable flag whenever DataTables is enacting a\nuser request - typically an Ajax request for server-side processing.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Server-side processing enabled flag - when enabled DataTables will\nget all data from the server for every draw - there is no filtering,\nsorting or paging done on the client-side.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Sorting enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Apply a class to the columns which are being sorted to provide a\nvisual highlight or not. This can slow things down when enabled since\nthere is a lot of DOM interaction.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>State saving enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bAutoWidth\"></a><a name=\"bAutoWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoWidth\">bAutoWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Flag to say if DataTables should automatically try to calculate the\noptimum table and columns widths (true) or not (false).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bDeferRender\"></a><a name=\"bDeferRender_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bDeferRender\">bDeferRender</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Delay the creation of TR and TD elements until they are actually\nneeded by a driven page draw. This can give a significant speed\nincrease for Ajax source and Javascript source data, but makes no\ndifference at all fro DOM and server-side processing tables.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bFilter\"></a><a name=\"bFilter_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bFilter\">bFilter</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Enable filtering on the table or not. Note that if this is disabled\nthen there is no filtering at all on the table, including fnFilter.\nTo just remove the filtering input use sDom and remove the 'f' option.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bInfo\"></a><a name=\"bInfo_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfo\">bInfo</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Table information element (the 'Showing x of y records' div) enable\nflag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bLengthChange\"></a><a name=\"bLengthChange_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bLengthChange\">bLengthChange</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Present a user control allowing the end user to change the page size\nwhen pagination is enabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bPaginate\"></a><a name=\"bPaginate_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bPaginate\">bPaginate</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Pagination enabled or not. Note that if this is disabled then length\nchanging must also be disabled.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bProcessing\"></a><a name=\"bProcessing_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bProcessing\">bProcessing</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Processing indicator enable flag whenever DataTables is enacting a\nuser request - typically an Ajax request for server-side processing.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bServerSide\"></a><a name=\"bServerSide_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bServerSide\">bServerSide</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Server-side processing enabled flag - when enabled DataTables will\nget all data from the server for every draw - there is no filtering,\nsorting or paging done on the client-side.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bSort\"></a><a name=\"bSort_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSort\">bSort</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Sorting enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bSortClasses\"></a><a name=\"bSortClasses_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bSortClasses\">bSortClasses</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>Apply a class to the columns which are being sorted to provide a\nvisual highlight or not. This can slow things down when enabled since\nthere is a lot of DOM interaction.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bStateSave\"></a><a name=\"bStateSave_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bStateSave\">bStateSave</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>State saving enablement flag.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oLanguage.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oLanguage - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oLanguage</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oLanguage</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Language information for the table.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.defaults.oLanguage.html\">DataTable.defaults.oLanguage</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnInfoCallback\">fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></dt><dd class=\"  even\"><p>Information callback function. See \n<a href=\"DataTable.defaults.html#fnInfoCallback\">DataTable.defaults.fnInfoCallback</a></p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt id=\"DataTable.models.oSettings.oLanguage.fnInfoCallback\" class=\"  even\"><a name=\"fnInfoCallback\"></a><a name=\"fnInfoCallback_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnInfoCallback</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :function</span></span></span></dt><dd class=\"  even\"><p>Information callback function. See \n<a href=\"DataTable.defaults.html#fnInfoCallback\">DataTable.defaults.fnInfoCallback</a></p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oPreviousSearch.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oPreviousSearch - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oPreviousSearch</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oPreviousSearch</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Store the applied global search information in case we want to force a \nresearch or compare the old search to a new one.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li><a href=\"DataTable.models.oSearch.html\">DataTable.models.oSearch</a></li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/DataTable.models.oSettings.oScroll.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oScroll - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oScroll</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"DataTable.html\">DataTable</a> » <a href=\"DataTable.models.html\">.models</a> » <a href=\"DataTable.models.oSettings.html\">.oSettings</a>.</span> » oScroll</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tDataTables v1.9.4 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (8)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (8)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Scrolling settings for a table.</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoCss\">bAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCollapse\">bCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When the table is shorter in height than sScrollY, collapse the\ntable container down to the height of the table (when true).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfinite\">bInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Infinite scrolling enablement flag. Now deprecated in favour of\nusing the Scroller plug-in.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iBarWidth\">iBarWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Width of the scrollbar for the web-browser's platform. Calculated\nduring table initialisation.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iLoadGap\">iLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Space (in pixels) between the bottom of the scrolling container and \nthe bottom of the scrolling viewport before the next page is loaded\nwhen using infinite scrolling.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sX\">sX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport width for horizontal scrolling. Horizontal scrolling is \ndisabled if an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sXInner\">sXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width to expand the table to when using x-scrolling. Typically you\nshould not need to use this.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sY\">sY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport height for vertical scrolling. Vertical scrolling is disabled\nif an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"bAutoCss\"></a><a name=\"bAutoCss_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bAutoCss\">bAutoCss</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Indicate if DataTables should be allowed to set the padding / margin\netc for the scrolling header elements or not. Typically you will want\nthis.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"bCollapse\"></a><a name=\"bCollapse_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bCollapse\">bCollapse</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  odd\"><p>When the table is shorter in height than sScrollY, collapse the\ntable container down to the height of the table (when true).\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"bInfinite\"></a><a name=\"bInfinite_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#bInfinite\">bInfinite</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Infinite scrolling enablement flag. Now deprecated in favour of\nusing the Scroller plug-in.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"iBarWidth\"></a><a name=\"iBarWidth_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iBarWidth\">iBarWidth</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Width of the scrollbar for the web-browser's platform. Calculated\nduring table initialisation.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"iLoadGap\"></a><a name=\"iLoadGap_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#iLoadGap\">iLoadGap</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Space (in pixels) between the bottom of the scrolling container and \nthe bottom of the scrolling viewport before the next page is loaded\nwhen using infinite scrolling.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sX\"></a><a name=\"sX_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sX\">sX</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport width for horizontal scrolling. Horizontal scrolling is \ndisabled if an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"sXInner\"></a><a name=\"sXInner_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sXInner\">sXInner</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  even\"><p>Width to expand the table to when using x-scrolling. Typically you\nshould not need to use this.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t<dt class=\"important\">Deprecated</dt><dd class=\"yes-def\">Yes</dd>\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"sY\"></a><a name=\"sY_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#sY\">sY</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :string</span></span></dt><dd class=\"  odd\"><p>Viewport height for vertical scrolling. Vertical scrolling is disabled\nif an empty string.\nNote that this parameter will be set by the initialisation routine. To\nset a default use <a href=\"DataTable.defaults.html\">DataTable.defaults</a>.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"DataTable.html\">DataTable</a></dt><dd><p>DataTables is a plug-in for the jQuery Javascript library. It is a \nhighly flexible tool, based upon the foundations of progressive \nenhancement, which will add advanced interaction controls to any \nHTML table. For a full list of features please refer to\n<a href=\"http://datatables.net\">DataTables.net</a>.</p>\n\n<p>Note that the <i>DataTable</i> object is not a global variable but is\naliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \nit may be  accessed.</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tDataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/callbacks.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable, {\n\t\t\t\t\t\"aoColumnDefs\": [ {\n\t\t\t\t\t\t\"fnCallback\": function ( ao ) {\n\t\t\t\t\t\t\tvar n = document.getElementById('output');\n\t\t\t\t\t\t\tfor ( var i=0, iLen=ao.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t\tn.innerHTML += \"Update: old value: {\"+\n\t\t\t\t\t\t\t\t\tao[i].oldValue+\"} - new value: {\"+ao[i].newValue+\"}<br>\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"aTargets\": [ \"_all\" ]\n\t\t\t\t\t} ]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill provides a number of customisable callback functions so you can tailor it's\n\t\t\t\tactions to exactly what you need. This specific example shows fnCallback, which is fired when the mouse is released. Further documentation is below.\n\t\t\t</p>\n\t\t\t\n\t\t\t<ul>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnRead</b> - Called when a cell is read for it's value. This allows you to override the default of reading the HTML value (or 'input' elements value if there is one present). For example reading the value from a select list.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be read from</li>\n\t\t\t\t\t\t<li>Returns: String - read value</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnWrite</b> - Called when a cell is to read to. This allows you to write in a specific format, or perhaps to an element within the cell.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be written to</li>\n\t\t\t\t\t\t<li>Parameter 2: String - Value to write</li>\n\t\t\t\t\t\t<li>Parameter 3: Boolean - Last cell to be written (useful for speeding up DataTables' fnUpdate)</li>\n\t\t\t\t\t\t<li>Returns: void</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnStep</b> - Called to calculate the new value to give to a cell\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Node - TD element to be written to</li>\n\t\t\t\t\t\t<li>Parameter 2: String - Statement with a token to be replace with the calculated value</li>\n\t\t\t\t\t\t<li>Parameter 3: Int - Step counter</li>\n\t\t\t\t\t\t<li>Parameter 4: Boolean - increment (true), or decrement (false)</li>\n\t\t\t\t\t\t<li>Parameter 5: String - Token to replace</li>\n\t\t\t\t\t\t<li>Returns: String - string to write into the cell</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<b>fnCallback</b> - Called when the AutoFill is complete, with information about the fill. This can be useful for updating a server database for example.\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Parameter 1: Array - An array of objects with information about each cell that was written to. Object parameters are: \"td\", \"newValue\" and \"oldValue\".</li>\n\t\t\t\t\t\t<li>Returns: void</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t\t<div id=\"output\" style=\"height: 100px; overflow: scroll;\"> \n\t\t\t\t\tInformation about each update will appear here.<br><br>\n\t\t\t\t</div>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable, {\n\t\t\"aoColumnDefs\": [ {\n\t\t\t\"fnCallback\": function ( ao ) {\n\t\t\t\tvar n = document.getElementById('output');\n\t\t\t\tfor ( var i=0, iLen=ao.length ; i&lt;iLen ; i++ ) {\n\t\t\t\t\tn.innerHTML += \"Update: old value: {\"+\n\t\t\t\t\t\tao[i].oldValue+\"} - new value: {\"+ao[i].newValue+\"}&lt;br&gt;\";\n\t\t\t\t}\n\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t},\n\t\t\t\"aTargets\": [ \"_all\" ]\n\t\t} ]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable, {\n\t\t\t\t\t\"aoColumnDefs\": [ {\n\t\t\t\t\t\t\"bEnable\": false,\n\t\t\t\t\t\t\"aTargets\": [ -1, -2, -3 ]\n\t\t\t\t\t} ]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with column selection options\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tColumns can be enabled (default) and disabled from providing the end user the AutoFill option\n\t\t\t\tby using either aoColumns or aoColumnDefs and the bEnable option. These two arrays work in\n\t\t\t\t<a href=\"http://datatables.net/usage/columns\">exactly the same way has for DataTables</a>.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tThis example shows how disabling columns counting from the right hand side of the table \n\t\t\t\tcan be achieved. In this case, the last three columns.\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable, {\n\t\t\"aoColumnDefs\": [ {\n\t\t\t\"bEnable\": false,\n\t\t\t\"aTargets\": [ -1, -2, -3 ]\n\t\t} ]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill gives an Excel like option to a DataTable to click and drag over multiple\n\t\t\t\tcells, filling in information over the selected cells and incrementing numbers as needed.\n\t\t\t</p>\n\t\t\t<p>Thanks to <a href=\"http://www.phoniax.no/\">Phoniax AS</a> for their sponsorship of this plug-in for DataTables.</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\tnew AutoFill( oTable );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/inputs.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t\ttd input { width: 90% }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$.fn.dataTableExt.afnSortData['dom-text'] = function  ( oSettings, iColumn )\n\t\t\t{\n\t\t\t\tvar aData = [];\n\t\t\t\t$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t\t\t\taData.push( this.value );\n\t\t\t\t} );\n\t\t\t\treturn aData;\n\t\t\t}\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"sSortDataType\": \"dom-text\", \"aTargets\": [ \"_all\" ] },\n\t\t\t\t\t\t{ \"sType\": \"numeric\", \"aTargets\": [ -2 ] }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with input elements\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tAutoFill works with Input elements and Select elements, as well as plain HTML cells. This\n\t\t\t\texample shows all inputs cells, combined with DataTables' DOM sorting plug-in. You can \n\t\t\t\teven combine input and plain HTML cells if you wanted (useful from something like jEditable).\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 4.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ (Entity: &amp;)\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"4\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"5.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 6\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 7\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win XP SP2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Trident\"></td>\n\t\t\t<td><input type=\"text\" value=\"AOL browser (AOL desktop)\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win XP\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko (UTF-8: $¢€)\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 2.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Firefox 3.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 2k+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Camino 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Camino 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape 7.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / Mac OS 8.6-9.2\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape Browser 8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98SE+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Netscape Navigator 9\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.2\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.4\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.4\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.6\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.7\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.7\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mozilla 1.8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Seamonkey 1.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 98+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Gecko\"></td>\n\t\t\t<td><input type=\"text\" value=\"Epiphany 2.20\"></td>\n\t\t\t<td><input type=\"text\" value=\"Gnome\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 1.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"125.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 1.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"312.8\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 2.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"419.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"Safari 3.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"522.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"OmniWeb 5.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"OSX.4+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"420\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"iPod Touch / iPhone\"></td>\n\t\t\t<td><input type=\"text\" value=\"iPod\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"420.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Webkit\"></td>\n\t\t\t<td><input type=\"text\" value=\"S60\"></td>\n\t\t\t<td><input type=\"text\" value=\"S60\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"413\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 7.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.1+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 7.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 8.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 8.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.2+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.0\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 95+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 88+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera 9.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Win 88+ / OSX.3+\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Opera for Wii\"></td>\n\t\t\t<td><input type=\"text\" value=\"Wii\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nokia N800\"></td>\n\t\t\t<td><input type=\"text\" value=\"N800\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Presto\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nintendo DS browser\"></td>\n\t\t\t<td><input type=\"text\" value=\"Nintendo DS\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"8.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C/A<sup>1</sup>\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.3\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.3\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"KHTML\"></td>\n\t\t\t<td><input type=\"text\" value=\"Konqureror 3.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"KDE 3.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"3.5\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 4.5\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 8-9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 7.6-9\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Tasman\"></td>\n\t\t\t<td><input type=\"text\" value=\"Internet Explorer 5.2\"></td>\n\t\t\t<td><input type=\"text\" value=\"Mac OS 8-X\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"1\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"NetFront 3.1\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"NetFront 3.4\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"A\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Dillo 0.8\"></td>\n\t\t\t<td><input type=\"text\" value=\"Embedded devices\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Links\"></td>\n\t\t\t<td><input type=\"text\" value=\"Text only\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"Lynx\"></td>\n\t\t\t<td><input type=\"text\" value=\"Text only\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"X\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"IE Mobile\"></td>\n\t\t\t<td><input type=\"text\" value=\"Windows Mobile 6\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td><input type=\"text\" value=\"Misc\"></td>\n\t\t\t<td><input type=\"text\" value=\"PSP browser\"></td>\n\t\t\t<td><input type=\"text\" value=\"PSP\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"C\"></td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td><input type=\"text\" value=\"Other browsers\"></td>\n\t\t\t<td><input type=\"text\" value=\"All others\"></td>\n\t\t\t<td><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"-\"></td>\n\t\t\t<td class=\"center\"><input type=\"text\" value=\"U\"></td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n{\n\tvar aData = [];\n\t$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\taData.push( this.value );\n\t} );\n\treturn aData;\n}\n\n$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"sSortDataType\": \"dom-text\", \"aTargets\": [ \"_all\" ] },\n\t\t\t{ \"sType\": \"numeric\", \"aTargets\": [ -2 ] }\n\t\t]\n\t} );\n\tnew AutoFill( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/css/AutoFill.css",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * AutoFill styles\n */\n\ndiv.AutoFill_filler {\n\tdisplay: none;\n\tposition: absolute;\n\theight: 14px;\n\twidth: 14px;\n\tbackground: url(../images/filler.png) no-repeat center center;\n\tz-index: 1002;\n}\n\ndiv.AutoFill_border {\n\tdisplay: none;\n\tposition: absolute;\n\tbackground-color: #0063dc;\n\tz-index: 1001;\n\t\n\tbox-shadow: 0px 0px 5px #76b4ff;\n\t-moz-box-shadow: 0px 0px 5px #76b4ff;\n\t-webkit-box-shadow: 0px 0px 5px #76b4ff;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/02ff627f40.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Store for live information for the current drag - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Store for live information for the current drag</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/36456bf45f.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for AutoFill instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for AutoFill instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/47cac4f141.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Cached information about the border display - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Cached information about the border display</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/5a72546831.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Data cache for the position of the DataTables scrolling element (when scrolling\n  is enabled) - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Data cache for the position of the DataTables scrolling element (when scrolling\n  is enabled)</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/8ee4007a12.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Data cache for information that we need for scrolling the screen when we near\n  the edges - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Data cache for information that we need for scrolling the screen when we near\n  the edges</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/AutoFill.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: AutoFill - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: AutoFill</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>AutoFill</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"AutoFill\" class=\"  even\"><a name=\"AutoFill\"></a><a name=\"AutoFill_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new AutoFill</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables, Configuration)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>AutoFill provides Excel like auto fill features for a DataTable</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">Configuration</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>object for AutoFill</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/b44bd4821a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace:  An array of objects - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace:  An array of objects</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/c6945fdb4a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Cached information about the little dragging icon  - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Cached information about the little dragging icon </h1>\n\t\t\t\t\t<sup>the filler</sup>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (13)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (13)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"AutoFill.html\">AutoFill</a></span></dt><dd class=\"even\"><p>AutoFill provides Excel like auto fill features for a DataTable</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>AutoFill version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnSettings\">fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></dt><dd class=\"  even\"><p>Retreieve the settings object from an instance</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDisplay\">_fnFillerDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display the drag handle on mouse over cell</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDragMove\">_fnFillerDragMove</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Mouse move event handler for during a move. See if we want to update the display based on the\nnew cursor position</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerDragStart\">_fnFillerDragStart</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Mouse down event handler for starting a drag</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerFinish\">_fnFillerFinish</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Mouse release handler - end the drag and take action to update the cells with the needed values</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnFillerPosition\">_fnFillerPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Position the filler icon over a cell</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnInit\">_fnInit</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, oConfig)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Initialisation</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnPrep\">_fnPrep</a></span><span class=\"type-sig\"><span class=\"signature\">(sStr)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></dt><dd class=\"  odd\"><p>Chunk a string such that it can be filled in by the stepper function</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnReadCell\">_fnReadCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {String}</span></span></dt><dd class=\"  even\"><p>Read informaiton from a cell, possibly using live DOM elements if suitable</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnStep\">_fnStep</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, oPrepped, iDiff, bIncrement, sToken)</span><span class=\"type-signature\"> &rarr; {String}</span></span></dt><dd class=\"  odd\"><p>Render a string for it's position in the table after the drag (incrememt numbers)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnTargetCoords\">_fnTargetCoords</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></dt><dd class=\"  even\"><p>Find out the coordinates of a given TD cell in a table</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnUpdateBorder\">_fnUpdateBorder</a></span><span class=\"type-sig\"><span class=\"signature\">(nStart, nEnd)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Display the border around one or more cells (from start to end)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnWriteCell\">_fnWriteCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, sVal, bLast)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Write informaiton to a cell, possibly using live DOM elements if suitable</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>AutoFill version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnSettings\" class=\"  even\"><a name=\"fnSettings\"></a><a name=\"fnSettings_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnSettings</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"> &rarr; {object}</span></span></span></dt><dd class=\"  even\"><p>Retreieve the settings object from an instance</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>AutoFill settings object</p></p></div>\n<dt id=\"_fnFillerDisplay\" class=\"  odd\"><a name=\"_fnFillerDisplay\"></a><a name=\"_fnFillerDisplay_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDisplay</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display the drag handle on mouse over cell</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerDragMove\" class=\"  even\"><a name=\"_fnFillerDragMove\"></a><a name=\"_fnFillerDragMove_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDragMove</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Mouse move event handler for during a move. See if we want to update the display based on the\nnew cursor position</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerDragStart\" class=\"  odd\"><a name=\"_fnFillerDragStart\"></a><a name=\"_fnFillerDragStart_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerDragStart</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Mouse down event handler for starting a drag</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerFinish\" class=\"  even\"><a name=\"_fnFillerFinish\"></a><a name=\"_fnFillerFinish_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerFinish</a></span><span class=\"type-sig\"><span class=\"signature\">(e)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Mouse release handler - end the drag and take action to update the cells with the needed values</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">e</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Event object</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnFillerPosition\" class=\"  odd\"><a name=\"_fnFillerPosition\"></a><a name=\"_fnFillerPosition_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnFillerPosition</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Position the filler icon over a cell</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to position filler icon over</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnInit\" class=\"  even\"><a name=\"_fnInit\"></a><a name=\"_fnInit_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnInit</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, oConfig)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Initialisation</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oDT</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oConfig</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Configuration object for AutoFill</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnPrep\" class=\"  odd\"><a name=\"_fnPrep\"></a><a name=\"_fnPrep_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnPrep</a></span><span class=\"type-sig\"><span class=\"signature\">(sStr)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></span></dt><dd class=\"  odd\"><p>Chunk a string such that it can be filled in by the stepper function</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">sStr</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>String to prep</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>with parameters, iStart, sStr and sPostFix</p></p></div>\n<dt id=\"_fnReadCell\" class=\"  even\"><a name=\"_fnReadCell\"></a><a name=\"_fnReadCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnReadCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {String}</span></span></span></dt><dd class=\"  even\"><p>Read informaiton from a cell, possibly using live DOM elements if suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to read</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Read value</p></p></div>\n<dt id=\"_fnStep\" class=\"  odd\"><a name=\"_fnStep\"></a><a name=\"_fnStep_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnStep</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, oPrepped, iDiff, bIncrement, sToken)</span><span class=\"type-signature\"> &rarr; {String}</span></span></span></dt><dd class=\"  odd\"><p>Render a string for it's position in the table after the drag (incrememt numbers)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell being written to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oPrepped</td><td class=\"type type-param\">Object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Prepared object for the stepper (from _fnPrep)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">iDiff</td><td class=\"type type-param\">Int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Step difference</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>4</div></td><td class=\"name\">bIncrement</td><td class=\"type type-param\">Boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Increment (true) or decriment (false)</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>5</div></td><td class=\"name\">sToken</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Token to replace</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Rendered information</p></p></div>\n<dt id=\"_fnTargetCoords\" class=\"  even\"><a name=\"_fnTargetCoords\"></a><a name=\"_fnTargetCoords_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnTargetCoords</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd)</span><span class=\"type-signature\"> &rarr; {Object}</span></span></span></dt><dd class=\"  even\"><p>Find out the coordinates of a given TD cell in a table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\">undefined</td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>x and y properties, for the position of the cell in the tables DOM</p></p></div>\n<dt id=\"_fnUpdateBorder\" class=\"  odd\"><a name=\"_fnUpdateBorder\"></a><a name=\"_fnUpdateBorder_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnUpdateBorder</a></span><span class=\"type-sig\"><span class=\"signature\">(nStart, nEnd)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Display the border around one or more cells (from start to end)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nStart</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Starting cell</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">nEnd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Ending cell</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"_fnWriteCell\" class=\"  even\"><a name=\"_fnWriteCell\"></a><a name=\"_fnWriteCell_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnWriteCell</a></span><span class=\"type-sig\"><span class=\"signature\">(nTd, sVal, bLast)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Write informaiton to a cell, possibly using live DOM elements if suitable</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">nTd</td><td class=\"type type-param\">Node</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Cell to write</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">sVal</td><td class=\"type type-param\">String</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Value to write</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">bLast</td><td class=\"type type-param\">Boolean</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Flag to show if this is that last update</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"AutoFill.html\">AutoFill</a></dt><dd><p>AutoFill provides Excel like auto fill features for a DataTable</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/media/js/AutoFill.js",
    "content": "/*\n * File:        AutoFill.js\n * Version:     1.1.2\n * CVS:         $Id$\n * Description: AutoFill for DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Mon  6 Sep 2010 16:54:41 BST\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point\n * Project:     DataTables\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n *\n */\n\n/* Global scope for AutoFill */\nvar AutoFill;\n\n(function($) {\n\n/** \n * AutoFill provides Excel like auto fill features for a DataTable\n * @class AutoFill\n * @constructor\n * @param {object} DataTables settings object\n * @param {object} Configuration object for AutoFill\n */\nAutoFill = function( oDT, oConfig )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"AutoFill\" )\n\t{\n\t\talert( \"Warning: AutoFill must be initialised with the keyword 'new'\" );\n\t\treturn;\n\t}\n\n\tif ( !$.fn.dataTableExt.fnVersionCheck('1.7.0') )\n\t{\n\t\talert( \"Warning: AutoFill requires DataTables 1.7 or greater - www.datatables.net/download\");\n\t\treturn;\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for AutoFill instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * @namespace Cached information about the little dragging icon (the filler)\n\t\t */\n\t\t\"filler\": {\n\t\t\t\"height\": 0,\n\t\t\t\"width\": 0\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Cached information about the border display\n\t\t */\n\t\t\"border\": {\n\t\t\t\"width\": 2\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Store for live information for the current drag\n\t\t */\n\t\t\"drag\": {\n\t\t\t\"startX\": -1,\n\t\t\t\"startY\": -1,\n\t\t\t\"startTd\": null,\n\t\t\t\"endTd\": null,\n\t\t\t\"dragging\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Data cache for information that we need for scrolling the screen when we near\n\t\t *   the edges\n\t\t */\n\t\t\"screen\": {\n\t\t\t\"interval\": null,\n\t\t\t\"y\": 0,\n\t\t\t\"height\": 0,\n\t\t\t\"scrollTop\": 0\n\t\t},\n\t\t\n\t\t/**\n\t\t * @namespace Data cache for the position of the DataTables scrolling element (when scrolling\n\t\t *   is enabled)\n\t\t */\n\t\t\"scroller\": {\n\t\t\t\"top\": 0,\n\t\t\t\"bottom\": 0\n\t\t},\n\t\t\n\t\t\n\t\t/**\n\t\t * @namespace Information stored for each column. An array of objects\n\t\t */\n\t\t\"columns\": []\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t\"table\": null,\n\t\t\"filler\": null,\n\t\t\"borderTop\": null,\n\t\t\"borderRight\": null,\n\t\t\"borderBottom\": null,\n\t\t\"borderLeft\": null,\n\t\t\"currentTarget\": null\n\t};\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @method fnSettings\n\t *  @returns {object} AutoFill settings object\n\t */\n\tthis.fnSettings = function () {\n\t\treturn this.s;\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tthis._fnInit( oDT, oConfig );\n\treturn this;\n};\n\n\n\nAutoFill.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Initialisation\n\t *  @method _fnInit\n \t *  @param {object} oDT DataTables settings object\n \t *  @param {object} oConfig Configuration object for AutoFill\n\t *  @returns void\n\t */\n\t\"_fnInit\": function ( oDT, oConfig )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\ti, iLen;\n\t\t\n\t\t/*\n\t\t * Settings\n\t\t */\n\t\tthis.s.dt = oDT.fnSettings();\n\t\t\n\t\tthis.dom.table = this.s.dt.nTable;\n\t\t\n\t\t/* Add and configure the columns */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis._fnAddColumn( i );\n\t\t}\n\t\t\n\t\tif ( typeof oConfig != 'undefined' && typeof oConfig.aoColumnDefs != 'undefined' )\n\t\t{\n\t\t\tthis._fnColumnDefs( oConfig.aoColumnDefs );\n\t\t}\n\t\t\n\t\tif ( typeof oConfig != 'undefined' && typeof oConfig.aoColumns != 'undefined' )\n\t\t{\n\t\t\tthis._fnColumnsAll( oConfig.aoColumns );\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * DOM\n\t\t */\n\t\t\n\t\t/* Auto Fill click and drag icon */\n\t\tvar filler = document.createElement('div');\n\t\tfiller.className = \"AutoFill_filler\";\n\t\tdocument.body.appendChild( filler );\n\t\tthis.dom.filler = filler;\n\t\t\n\t\tfiller.style.display = \"block\";\n\t\tthis.s.filler.height = $(filler).height();\n\t\tthis.s.filler.width = $(filler).width();\n\t\tfiller.style.display = \"none\";\n\t\t\n\t\t/* Border display - one div for each side. We can't just use a single one with a border, as\n\t\t * we want the events to effectively pass through the transparent bit of the box\n\t\t */\n\t\tvar border;\n\t\tvar appender = document.body;\n\t\tif ( that.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthat.s.dt.nTable.parentNode.style.position = \"relative\";\n\t\t\tappender = that.s.dt.nTable.parentNode;\n\t\t}\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderTop = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderRight = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderBottom = border;\n\t\t\n\t\tborder = document.createElement('div');\n\t\tborder.className = \"AutoFill_border\";\n\t\tappender.appendChild( border );\n\t\tthis.dom.borderLeft = border;\n\t\t\n\t\t/*\n\t\t * Events\n\t\t */\n\t\t\n\t\t$(filler).mousedown( function (e) {\n\t\t\tthis.onselectstart = function() { return false; };\n\t\t\tthat._fnFillerDragStart.call( that, e );\n\t\t\treturn false;\n\t\t} );\n\t\t\n\t\t$('tbody>tr>td', this.dom.table).live( 'mouseover mouseout', function (e) {\n\t\t\tthat._fnFillerDisplay.call( that, e );\n\t\t} );\n\t},\n\t\n\t\n\t\"_fnColumnDefs\": function ( aoColumnDefs )\n\t{\n\t\tvar\n\t\t\ti, j, k, iLen, jLen, kLen,\n\t\t\taTargets;\n\t\t\n\t\t/* Loop over the column defs array - loop in reverse so first instace has priority */\n\t\tfor ( i=aoColumnDefs.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\t/* Each column def can target multiple columns, as it is an array */\n\t\t\taTargets = aoColumnDefs[i].aTargets;\n\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( typeof aTargets[j] == 'number' && aTargets[j] >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* 0+ integer, left to right column counting. */\n\t\t\t\t\tthis._fnColumnOptions( aTargets[j], aoColumnDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] == 'number' && aTargets[j] < 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\tthis._fnColumnOptions( this.s.dt.aoColumns.length+aTargets[j], aoColumnDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] == 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\tfor ( k=0, kLen=this.s.dt.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t     this.s.dt.aoColumns[k].nTh.className.indexOf( aTargets[j] ) != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._fnColumnOptions( k, aoColumnDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\t\n\t\t\n\t\"_fnColumnsAll\": function ( aoColumns )\n\t{\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis._fnColumnOptions( i, aoColumns[i] );\n\t\t}\n\t},\n\t\n\t\n\t\"_fnAddColumn\": function ( i )\n\t{\n\t\tthis.s.columns[i] = {\n\t\t\t\"enable\": true,\n\t\t\t\"read\": this._fnReadCell,\n\t\t\t\"write\": this._fnWriteCell,\n\t\t\t\"step\": this._fnStep,\n\t\t\t\"complete\": null\n\t\t};\n\t},\n\t\n\t\"_fnColumnOptions\": function ( i, opts )\n\t{\n\t\tif ( typeof opts.bEnable != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].enable = opts.bEnable;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnRead != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].read = opts.fnRead;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnWrite != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].write = opts.fnWrite;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnStep != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].step = opts.fnStep;\n\t\t}\n\t\t\n\t\tif ( typeof opts.fnCallback != 'undefined' )\n\t\t{\n\t\t\tthis.s.columns[i].complete = opts.fnCallback;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Find out the coordinates of a given TD cell in a table\n\t *  @method  _fnTargetCoords\n\t *  @param   {Node} nTd\n\t *  @returns {Object} x and y properties, for the position of the cell in the tables DOM\n\t */\n\t\"_fnTargetCoords\": function ( nTd )\n\t{\n\t\tvar nTr = $(nTd).parents('tr')[0];\n\t\t\n\t\treturn {\n\t\t\t\"x\": $('td', nTr).index(nTd),\n\t\t\t\"y\": $('tr', nTr.parentNode).index(nTr)\n\t\t};\n\t},\n\t\n\t\n\t/**\n\t * Display the border around one or more cells (from start to end)\n\t *  @method  _fnUpdateBorder\n\t *  @param   {Node} nStart Starting cell\n\t *  @param   {Node} nEnd Ending cell\n\t *  @returns void\n\t */\n\t\"_fnUpdateBorder\": function ( nStart, nEnd )\n\t{\n\t\tvar\n\t\t\tborder = this.s.border.width,\n\t\t\toffsetStart = $(nStart).offset(),\n\t\t\toffsetEnd = $(nEnd).offset(),\n\t\t\tx1 = offsetStart.left - border,\n\t\t\tx2 = offsetEnd.left + $(nEnd).outerWidth(),\n\t\t\ty1 = offsetStart.top - border,\n\t\t\ty2 = offsetEnd.top + $(nEnd).outerHeight(),\n\t\t\twidth = offsetEnd.left + $(nEnd).outerWidth() - offsetStart.left + (2*border),\n\t\t\theight = offsetEnd.top + $(nEnd).outerHeight() - offsetStart.top + (2*border),\n\t\t\toStyle;\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\t/* The border elements are inside the DT scroller - so position relative to that */\n\t\t\tvar\n\t\t\t\toffsetScroll = $(this.s.dt.nTable.parentNode).offset(),\n\t\t\t\tscrollTop = $(this.s.dt.nTable.parentNode).scrollTop(),\n\t\t\t\tscrollLeft = $(this.s.dt.nTable.parentNode).scrollLeft();\n\t\t\t\n\t\t\tx1 -= offsetScroll.left - scrollLeft;\n\t\t\tx2 -= offsetScroll.left - scrollLeft;\n\t\t\ty1 -= offsetScroll.top - scrollTop;\n\t\t\ty2 -= offsetScroll.top - scrollTop;\n\t\t}\n\t\t\n\t\t/* Top */\n\t\toStyle = this.dom.borderTop.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = this.s.border.width+\"px\";\n\t\toStyle.width = width+\"px\";\n\t\t\n\t\t/* Bottom */\n\t\toStyle = this.dom.borderBottom.style;\n\t\toStyle.top = y2+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = this.s.border.width+\"px\";\n\t\toStyle.width = width+\"px\";\n\t\t\n\t\t/* Left */\n\t\toStyle = this.dom.borderLeft.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x1+\"px\";\n\t\toStyle.height = height+\"px\";\n\t\toStyle.width = this.s.border.width+\"px\";\n\t\t\n\t\t/* Right */\n\t\toStyle = this.dom.borderRight.style;\n\t\toStyle.top = y1+\"px\";\n\t\toStyle.left = x2+\"px\";\n\t\toStyle.height = height+\"px\";\n\t\toStyle.width = this.s.border.width+\"px\";\n\t},\n\t\n\t\n\t/**\n\t * Mouse down event handler for starting a drag\n\t *  @method  _fnFillerDragStart\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDragStart\": function (e)\n\t{\n\t\tvar that = this;\n\t\tvar startingTd = this.dom.currentTarget;\n\t\t\n\t\tthis.s.drag.dragging = true;\n\t\t\n\t\tthat.dom.borderTop.style.display = \"block\";\n\t\tthat.dom.borderRight.style.display = \"block\";\n\t\tthat.dom.borderBottom.style.display = \"block\";\n\t\tthat.dom.borderLeft.style.display = \"block\";\n\t\t\n\t\tvar coords = this._fnTargetCoords( startingTd );\n\t\tthis.s.drag.startX = coords.x;\n\t\tthis.s.drag.startY = coords.y;\n\t\t\n\t\tthis.s.drag.startTd = startingTd;\n\t\tthis.s.drag.endTd = startingTd;\n\t\t\n\t\tthis._fnUpdateBorder( startingTd, startingTd );\n\t\t\n\t\t$(document).bind('mousemove.AutoFill', function (e) {\n\t\t\tthat._fnFillerDragMove.call( that, e );\n\t\t} );\n\t\t\n\t\t$(document).bind('mouseup.AutoFill', function (e) {\n\t\t\tthat._fnFillerFinish.call( that, e );\n\t\t} );\n\t\t\n\t\t/* Scrolling information cache */\n\t\tthis.s.screen.y = e.pageY;\n\t\tthis.s.screen.height = $(window).height();\n\t\tthis.s.screen.scrollTop = $(document).scrollTop();\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;\n\t\t\tthis.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();\n\t\t}\n\t\t\n\t\t/* Scrolling handler - we set an interval (which is cancelled on mouse up) which will fire\n\t\t * regularly and see if we need to do any scrolling\n\t\t */\n\t\tthis.s.screen.interval = setInterval( function () {\n\t\t\tvar iScrollTop = $(document).scrollTop();\n\t\t\tvar iScrollDelta = iScrollTop - that.s.screen.scrollTop;\n\t\t\tthat.s.screen.y += iScrollDelta;\n\t\t\t\n\t\t\tif ( that.s.screen.height - that.s.screen.y + iScrollTop < 50 )\n\t\t\t{\n\t\t\t\t$('html, body').animate( {\n\t\t\t\t\t\"scrollTop\": iScrollTop + 50\n\t\t\t\t}, 240, 'linear' );\n\t\t\t}\n\t\t\telse if ( that.s.screen.y - iScrollTop < 50 )\n\t\t\t{\n\t\t\t\t$('html, body').animate( {\n\t\t\t\t\t\"scrollTop\": iScrollTop - 50\n\t\t\t\t}, 240, 'linear' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( that.s.dt.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tif ( that.s.screen.y > that.s.scroller.bottom - 50 )\n\t\t\t\t{\n\t\t\t\t\t$(that.s.dt.nTable.parentNode).animate( {\n\t\t\t\t\t\t\"scrollTop\": $(that.s.dt.nTable.parentNode).scrollTop() + 50\n\t\t\t\t\t}, 240, 'linear' );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.screen.y < that.s.scroller.top + 50 )\n\t\t\t\t{\n\t\t\t\t\t$(that.s.dt.nTable.parentNode).animate( {\n\t\t\t\t\t\t\"scrollTop\": $(that.s.dt.nTable.parentNode).scrollTop() - 50\n\t\t\t\t\t}, 240, 'linear' );\n\t\t\t\t}\n\t\t\t}\n\t\t}, 250 );\n\t},\n\t\n\t\n\t/**\n\t * Mouse move event handler for during a move. See if we want to update the display based on the\n\t * new cursor position\n\t *  @method  _fnFillerDragMove\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDragMove\": function (e)\n\t{\n\t\tif ( e.target && e.target.nodeName.toUpperCase() == \"TD\" &&\n\t\t \te.target != this.s.drag.endTd )\n\t\t{\n\t\t\tvar coords = this._fnTargetCoords( e.target );\n\t\t\t\n\t\t\tif ( coords.x != this.s.drag.startX )\n\t\t\t{\n\t\t\t\te.target = $('tbody>tr:eq('+coords.y+')>td:eq('+this.s.drag.startX+')', this.dom.table)[0];\n\t\t\t \tcoords = this._fnTargetCoords( e.target );\n\t\t\t}\n\t\t\t\n\t\t\tif ( coords.x == this.s.drag.startX )\n\t\t\t{\n\t\t\t\tvar drag = this.s.drag;\n\t\t\t\tdrag.endTd = e.target;\n\t\t\t\t\n\t\t\t\tif ( coords.y >= this.s.drag.startY )\n\t\t\t\t{\n\t\t\t\t\tthis._fnUpdateBorder( drag.startTd, drag.endTd );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._fnUpdateBorder( drag.endTd, drag.startTd );\n\t\t\t\t}\n\t\t\t\tthis._fnFillerPosition( e.target );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Update the screen information so we can perform scrolling */\n\t\tthis.s.screen.y = e.pageY;\n\t\tthis.s.screen.scrollTop = $(document).scrollTop();\n\t\t\n\t\tif ( this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.scroller.scrollTop = $(this.s.dt.nTable.parentNode).scrollTop();\n\t\t\tthis.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;\n\t\t\tthis.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Mouse release handler - end the drag and take action to update the cells with the needed values\n\t *  @method  _fnFillerFinish\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerFinish\": function (e)\n\t{\n\t\tvar that = this;\n\t\t\n\t\t$(document).unbind('mousemove.AutoFill');\n\t\t$(document).unbind('mouseup.AutoFill');\n\t\t\n\t\tthis.dom.borderTop.style.display = \"none\";\n\t\tthis.dom.borderRight.style.display = \"none\";\n\t\tthis.dom.borderBottom.style.display = \"none\";\n\t\tthis.dom.borderLeft.style.display = \"none\";\n\t\t\n\t\tthis.s.drag.dragging = false;\n\t\t\n\t\tclearInterval( this.s.screen.interval );\n\t\t\n\t\tvar coordsStart = this._fnTargetCoords( this.s.drag.startTd );\n\t\tvar coordsEnd = this._fnTargetCoords( this.s.drag.endTd );\n\t\tvar aTds = [];\n\t\tvar bIncrement;\n\t\t\n\t\tif ( coordsStart.y <= coordsEnd.y )\n\t\t{\n\t\t\tbIncrement = true;\n\t\t\tfor ( i=coordsStart.y ; i<=coordsEnd.y ; i++ )\n\t\t\t{\n\t\t\t\taTds.push( $('tbody>tr:eq('+i+')>td:eq('+coordsStart.x+')', this.dom.table)[0] );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbIncrement = false;\n\t\t\tfor ( i=coordsStart.y ; i>=coordsEnd.y ; i-- )\n\t\t\t{\n\t\t\t\taTds.push( $('tbody>tr:eq('+i+')>td:eq('+coordsStart.x+')', this.dom.table)[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar iColumn = coordsStart.x;\n\t\tvar bLast = false;\n\t\tvar aoEdited = [];\n\t\tvar sStart = this.s.columns[iColumn].read.call( this, this.s.drag.startTd );\n\t\tvar oPrepped = this._fnPrep( sStart );\n\t\t\n\t\tfor ( i=0, iLen=aTds.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i==iLen-1 )\n\t\t\t{\n\t\t\t\tbLast = true;\n\t\t\t}\n\t\t\t\n\t\t\tvar original = this.s.columns[iColumn].read.call( this, aTds[i] );\n\t\t\tvar step = this.s.columns[iColumn].step.call( this, aTds[i], oPrepped, i, bIncrement, \n\t\t\t\t'SPRYMEDIA_AUTOFILL_STEPPER' );\n\t\t\tthis.s.columns[iColumn].write.call( this, aTds[i], step, bLast );\n\t\t\t\n\t\t\taoEdited.push( {\n\t\t\t\t\"td\": aTds[i],\n\t\t\t\t\"newValue\": step,\n\t\t\t\t\"oldValue\": original\n\t\t\t} );\n\t\t}\n\t\t\n\t\tif ( this.s.columns[iColumn].complete !== null )\n\t\t{\n\t\t\tthis.s.columns[iColumn].complete.call( this, aoEdited );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Chunk a string such that it can be filled in by the stepper function\n\t *  @method  _fnPrep\n\t *  @param   {String} sStr String to prep\n\t *  @returns {Object} with parameters, iStart, sStr and sPostFix\n\t */\n\t\"_fnPrep\": function ( sStr )\n\t{\n\t\tvar aMatch = sStr.match(/[\\d\\.]+/g);\n\t\tif ( !aMatch || aMatch.length === 0 )\n\t\t{\n\t\t\treturn {\n\t\t\t\t\"iStart\": 0,\n\t\t\t\t\"sStr\": sStr,\n\t\t\t\t\"sPostFix\": \"\"\n\t\t\t};\n\t\t}\n\t\t\n\t\tvar sLast = aMatch[ aMatch.length-1 ];\n\t\tvar num = parseInt(sLast, 10);\n\t\tvar regex = new RegExp( '^(.*)'+sLast+'(.*?)$' );\n\t\tvar decimal = sLast.match(/\\./) ? \".\"+sLast.split('.')[1] : \"\";\n\t\t\n\t\treturn {\n\t\t\t\"iStart\": num,\n\t\t\t\"sStr\": sStr.replace(regex, \"$1SPRYMEDIA_AUTOFILL_STEPPER$2\"),\n\t\t\t\"sPostFix\": decimal\n\t\t};\n\t},\n\t\n\t\n\t/**\n\t * Render a string for it's position in the table after the drag (incrememt numbers)\n\t *  @method  _fnStep\n\t *  @param   {Node} nTd Cell being written to\n\t *  @param   {Object} oPrepped Prepared object for the stepper (from _fnPrep)\n\t *  @param   {Int} iDiff Step difference\n\t *  @param   {Boolean} bIncrement Increment (true) or decriment (false)\n\t *  @param   {String} sToken Token to replace\n\t *  @returns {String} Rendered information\n\t */\n\t\"_fnStep\": function ( nTd, oPrepped, iDiff, bIncrement, sToken )\n\t{\n\t\tvar iReplace = bIncrement ? (oPrepped.iStart+iDiff) : (oPrepped.iStart-iDiff);\n\t\tif ( isNaN(iReplace) )\n\t\t{\n\t\t\tiReplace = \"\";\n\t\t}\n\t\treturn oPrepped.sStr.replace( sToken, iReplace+oPrepped.sPostFix );\n\t},\n\t\n\t\n\t/**\n\t * Read informaiton from a cell, possibly using live DOM elements if suitable\n\t *  @method  _fnReadCell\n\t *  @param   {Node} nTd Cell to read\n\t *  @returns {String} Read value\n\t */\n\t\"_fnReadCell\": function ( nTd )\n\t{\n\t\tvar jq = $('input', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\treturn $(jq).val();\n\t\t}\n\t\t\n\t\tjq = $('select', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\treturn $(jq).val();\n\t\t}\n\t\t\n\t\treturn nTd.innerHTML;\n\t},\n\t\n\t\n\t/**\n\t * Write informaiton to a cell, possibly using live DOM elements if suitable\n\t *  @method  _fnWriteCell\n\t *  @param   {Node} nTd Cell to write\n\t *  @param   {String} sVal Value to write\n\t *  @param   {Boolean} bLast Flag to show if this is that last update\n\t *  @returns void\n\t */\n\t\"_fnWriteCell\": function ( nTd, sVal, bLast )\n\t{\n\t\tvar jq = $('input', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\t$(jq).val( sVal );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tjq = $('select', nTd);\n\t\tif ( jq.length > 0 )\n\t\t{\n\t\t\t$(jq).val( sVal );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar pos = this.s.dt.oInstance.fnGetPosition( nTd );\n\t\tthis.s.dt.oInstance.fnUpdate( sVal, pos[0], pos[2], bLast );\n\t},\n\t\n\t\n\t/**\n\t * Display the drag handle on mouse over cell\n\t *  @method  _fnFillerDisplay\n\t *  @param   {Object} e Event object\n\t *  @returns void\n\t */\n\t\"_fnFillerDisplay\": function (e)\n\t{\n\t\t/* Don't display automatically when dragging */\n\t\tif ( this.s.drag.dragging)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t/* Check that we are allowed to AutoFill this column or not */\n\t\tvar nTd = (e.target.nodeName.toLowerCase() == 'td') ? e.target : $(e.target).parents('td')[0];\n\t\tvar iX = this._fnTargetCoords(nTd).x;\n\t\tif ( !this.s.columns[iX].enable )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar filler = this.dom.filler;\n\t\tif (e.type == 'mouseover')\n\t\t{\n\t\t\tthis.dom.currentTarget = nTd;\n\t\t\tthis._fnFillerPosition( nTd );\n\t\t\t\n\t\t\tfiller.style.display = \"block\";\n\t\t}\n\t\telse if ( !e.relatedTarget || !e.relatedTarget.className.match(/AutoFill/) )\n\t\t{\n\t\t\tfiller.style.display = \"none\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Position the filler icon over a cell\n\t *  @method  _fnFillerPosition\n\t *  @param   {Node} nTd Cell to position filler icon over\n\t *  @returns void\n\t */\n\t\"_fnFillerPosition\": function ( nTd )\n\t{\n\t\tvar offset = $(nTd).offset();\n\t\tvar filler = this.dom.filler;\n\t\tfiller.style.top = (offset.top - (this.s.filler.height / 2)-1 + $(nTd).outerHeight())+\"px\";\n\t\tfiller.style.left = (offset.left - (this.s.filler.width / 2)-1 + $(nTd).outerWidth())+\"px\";\n\t}\n};\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  AutoFill\n */\nAutoFill.prototype.CLASS = \"AutoFill\";\n\n\n/**\n * AutoFill version\n *  @constant  VERSION\n *  @type      String\n *  @default   1.1.2\n */\nAutoFill.VERSION = \"1.1.2\";\nAutoFill.prototype.VERSION = AutoFill.VERSION;\n\n\n})(jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/AutoFill/scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>AutoFill example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/AutoFill.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/AutoFill.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable({\n\t\t\t\t\t\"sScrollY\": 200,\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"bPaginate\": false\n\t\t\t\t});\n\t\t\t\tnew AutoFill( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tAutoFill example with scrolling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>\n\t\t\t\tWhen dragging an AutoFill handle, the table (if DataTables scrolling is enabled) or the window will be automatically scrolled, as you approach the edge of the scrolling component. The example below shows the effect with DataTables scrolling (and also window if needed).\n\t\t\t</p>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"columns.html\">Selecting which columns to provide AutoFill on</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Scrolling a DataTable using fill</a></li>\n\t\t\t\t<li><a href=\"inputs.html\">Using with input elements</a></li>\n\t\t\t\t<li><a href=\"callbacks.html\">Customisation using callback functions</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable({\n\t\t\"sScrollY\": 200,\n\t\t\"bScrollCollapse\": true,\n\t\t\"bPaginate\": false\n\t});\n\tnew AutoFill( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tAutoFill and DataTables &copy; Allan Jardine 2009-2010.<br>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/alt_insert.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\" class=\"alt\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with alternative insert styling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Using CSS it is relatively easy to modify the insert bar to suit your web-site. This\n\t\t\t\texample shows how an arrow can be used to show the insert point rather than the straight\n\t\t\t\tbar used in the other examples.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/col_filter.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t@import \"../ColVis/media/css/ColVis.css\";\n\t\t\tthead input { width: 100% }\n\t\t\tinput.search_init { color: #999 }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../ColVis/media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable;\n\t\t\t\t\n\t\t\t\t/* Add the events etc before DataTables hides a column */\n\t\t\t\t$(\"thead input\").keyup( function () {\n\t\t\t\t\t/* Filter on the column (the index) of this element */\n\t\t\t\t\toTable.fnFilter( this.value, oTable.oApi._fnVisibleToColumnIndex( \n\t\t\t\t\t\toTable.fnSettings(), $(\"thead input\").index(this) ) );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * Support functions to provide a little bit of 'user friendlyness' to the textboxes\n\t\t\t\t */\n\t\t\t\t$(\"thead input\").each( function (i) {\n\t\t\t\t\tthis.initVal = this.value;\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$(\"thead input\").focus( function () {\n\t\t\t\t\tif ( this.className == \"search_init\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.className = \"\";\n\t\t\t\t\t\tthis.value = \"\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$(\"thead input\").blur( function (i) {\n\t\t\t\t\tif ( this.value == \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.className = \"search_init\";\n\t\t\t\t\t\tthis.value = this.initVal;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\toTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'RC<\"clear\">lfrtip',\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"oLanguage\": {\n\t\t\t\t\t\t\"sSearch\": \"Search all columns:\"\n\t\t\t\t\t},\n\t\t\t\t\t\"bSortCellsTop\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with individual column filtering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example of how to use ColReorder shows quite a number of different interesting \n\t\t\t\tproperties. Firstly, there is integration with ColVis, then there is the fact that there\n\t\t\t\tis more than one row in the table header with the second being used for the input\n\t\t\t\telements, and finally of course the filtering itself. Note that it is important to use\n\t\t\t\tthe _fnVisibleToColumnIndex() internal function to calculate which column index should\n\t\t\t\tbe given to fnFilter (or you could employ your own methods).</p>\n\t\t\t<p>Please note that this demo requires DataTables 1.8 or later.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td><input type=\"text\" name=\"search_engine\" value=\"Search engines\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_browser\" value=\"Search browsers\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_platform\" value=\"Search platforms\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_version\" value=\"Search versions\" class=\"search_init\" /></td>\n\t\t\t<td><input type=\"text\" name=\"search_grade\" value=\"Search grades\" class=\"search_init\" /></td>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable;\n\t\n\t/* Add the events etc before DataTables hides a column */\n\t$(\"thead input\").keyup( function () {\n\t\t/* Filter on the column (the index) of this element */\n\t\toTable.fnFilter( this.value, oTable.oApi._fnVisibleToColumnIndex( \n\t\t\toTable.fnSettings(), $(\"thead input\").index(this) ) );\n\t} );\n\t\n\t/*\n\t * Support functions to provide a little bit of 'user friendlyness' to the textboxes\n\t */\n\t$(\"thead input\").each( function (i) {\n\t\tthis.initVal = this.value;\n\t} );\n\t\n\t$(\"thead input\").focus( function () {\n\t\tif ( this.className == \"search_init\" )\n\t\t{\n\t\t\tthis.className = \"\";\n\t\t\tthis.value = \"\";\n\t\t}\n\t} );\n\t\n\t$(\"thead input\").blur( function (i) {\n\t\tif ( this.value == \"\" )\n\t\t{\n\t\t\tthis.className = \"search_init\";\n\t\t\tthis.value = this.initVal;\n\t\t}\n\t} );\n\t\n\toTable = $('#example').dataTable( {\n\t\t\"sDom\": 'RC&lt;\"clear\"&gt;lfrtip',\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t],\n\t\t\"oLanguage\": {\n\t\t\t\"sSearch\": \"Search all columns:\"\n\t\t},\n\t\t\"bSortCellsTop\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/colvis.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t@import \"../ColVis/media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../ColVis/media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'RC<\"clear\">lfrtip',\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 1 ] }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with ColVis\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>The ColReorder plug-in interacts with the ColVis plug-in for DataTables by updating the\n\t\t\t\torder of the list of columns whenever a reorder is done. This is shown in the example\n\t\t\t\tbelow, where one column has been hidden by default to add extra emphasis to ColVis.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'RC&lt;\"clear\"&gt;lfrtip',\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 1 ] }\n\t\t]\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedcolumns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t.FixedColumns_Cloned th { background-color: white; }\n\t\t\ttd.index { background-color: white; border-right: 1px solid black; }\n\t\t\ttable.display th.sorting_disabled { border-bottom: 1px solid white; }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../FixedColumns/media/js/FixedColumns.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"sScrollX\": \"100%\",\n\t\t\t\t\t\"sScrollXInner\": \"150%\",\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"fnDrawCallback\": function ( oSettings ) {\n\t\t\t\t\t\t/* Need to redo the counters if filtered or sorted */\n\t\t\t\t\t\tif ( oSettings.bSorted || oSettings.bFiltered ) {\n\t\t\t\t\t\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t\t$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bSortable\": false, \"sClass\": \"index\", \"aTargets\": [ 0 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"aaSorting\": [[ 1, 'asc' ]],\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"iFixedColumns\": 1\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tnew FixedColumns( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with FixedColumns\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>While ColReorder works great with scrolling in DataTables (and thus FixedColumns), \n\t\t\t\tit also presents an additional option called 'iFixedColumns' which allows you to not\n\t\t\t\tlet the user reorder certain columns (specific the number given, counting left to\n\t\t\t\tright). So in the case of FixedColumns this is useful because you typically won't want\n\t\t\t\tto let your fixed column be reordered. This is shown below in the FixedColumns index column\n\t\t\t\texample.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"3%\">&nbsp;</th>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">2</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">3</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">8</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">9</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">10</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">11</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">12</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">13</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">14</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">15</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">16</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">17</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">18</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">19</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">20</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">21</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">22</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">23</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">24</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">25</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">26</td>\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">27</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">28</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">29</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">30</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">31</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">32</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">33</td>\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">34</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">35</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">36</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">37</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">38</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">39</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">40</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">41</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">42</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">43</td>\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">44</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">45</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">46</td>\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">47</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">48</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">49</td>\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">50</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td class=\"center\">51</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">52</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">53</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td class=\"center\">54</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">55</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td class=\"center\">56</td>\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td class=\"center\">57</td>\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>&nbsp;</th>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"sScrollX\": \"100%\",\n\t\t\"sScrollXInner\": \"150%\",\n\t\t\"bScrollCollapse\": true,\n\t\t\"fnDrawCallback\": function ( oSettings ) {\n\t\t\t/* Need to redo the counters if filtered or sorted */\n\t\t\tif ( oSettings.bSorted || oSettings.bFiltered ) {\n\t\t\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i&lt;iLen ; i++ ) {\n\t\t\t\t\t$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bSortable\": false, \"sClass\": \"index\", \"aTargets\": [ 0 ] }\n\t\t],\n\t\t\"aaSorting\": [[ 1, 'asc' ]],\n\t\t\"oColReorder\": {\n\t\t\t\"iFixedColumns\": 1\n\t\t}\n\t} );\n\tnew FixedColumns( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/fixedheader.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t\t.FixedHeader_Cloned th { background-color: white; }\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../FixedHeader/js/FixedHeader.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t \"sDom\": 'RC<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t\tnew FixedHeader( oTable );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with FixedHeader\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>FixedHeader is a particularly useful plug-in for DataTables, allowing a table header\n\t\t\t\tto float at the top of a scrolling window. ColReorder works well with FixedHeader, allowing\n\t\t\t\tyou to reorder columns even using the floating header, as shown in the example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t \"sDom\": 'RC&lt;\"clear\"&gt;lfrtip'\n\t} );\n\tnew FixedHeader( oTable );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows the basic use case of the ColReorder plug-in. With ColReorder enabled\n\t\t\t\tfor a table, the user has the ability to click and drag any table header cell, and drop \n\t\t\t\tit where they wish the column to be inserted. The insert point is shown visually, and\n\t\t\t\tthe column reordering is done as soon as the mouse button is released.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/css/ColReorder.css",
    "content": "/*\n * Namespace DTCR - \"DataTables ColReorder\" plug-in\n */\n\ntable.DTCR_clonedTable {\n\tbackground-color: white;\n\tz-index: 202;\n}\n\ndiv.DTCR_pointer {\n\twidth: 1px;\n\tbackground-color: #0259C4;\n\tz-index: 201;\n}\n\nbody.alt div.DTCR_pointer {\n\tmargin-top: -15px;\n\tmargin-left: -9px;\n\twidth: 18px;\n\tbackground: url('../images/insert.png') no-repeat top left;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/46848f6f3b.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for ColReorder instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for ColReorder instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/4f1246032c.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Information used for the mouse drag - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Information used for the mouse drag</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/ColReorder.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: ColReorder - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: ColReorder</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>ColReorder</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td>Methods (0)</td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"ColReorder\" class=\"  even\"><a name=\"ColReorder\"></a><a name=\"ColReorder_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new ColReorder</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables, ColReorder)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>ColReorder provides column visiblity control for DataTables</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">ColReorder</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>options</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInstances\">aoInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of all ColReorder instances for later reference</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnReset\">fnReset</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Reset the column ordering for a DataTables instance</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aoInstances\"></a><a name=\"aoInstances_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aoInstances\">aoInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :array</span></span></dt><dd class=\"  even\"><p>Array of all ColReorder instances for later reference</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Properties:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">ColReorder.aoInstances</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"></td></tr>\n\t</tbody>\n</table></div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"ColReorder.fnReset\" class=\"  even\"><a name=\"fnReset\"></a><a name=\"fnReset_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnReset</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Reset the column ordering for a DataTables instance</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">object</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>oTable DataTables instance to consider</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (3)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (3)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"ColReorder.html\">ColReorder</a></span></dt><dd class=\"even\"><p>ColReorder provides column visiblity control for DataTables</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColReorder version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnArraySwitch\">fnArraySwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(array, int, int)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Modify an array by switching the position of two elements</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnDomSwitch\">fnDomSwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(string, int, int)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  odd\"><p>Switch the positions of nodes in a parent node (note this is specifically designed for \ntable rows). Note this function considers all element nodes under the parent!</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnInvertKeyValues\">fnInvertKeyValues</a></span><span class=\"type-sig\"><span class=\"signature\">(array)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Switch the key value pairing of an index array to be value key (i.e. the old value is now the\nkey). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColReorder version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnArraySwitch\" class=\"  even\"><a name=\"fnArraySwitch\"></a><a name=\"fnArraySwitch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnArraySwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(array, int, int)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Modify an array by switching the position of two elements</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aArray Array to consider, will be modified by reference (i.e. no return)</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iFrom From point</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iTo Insert point</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"fnDomSwitch\" class=\"  odd\"><a name=\"fnDomSwitch\"></a><a name=\"fnDomSwitch_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnDomSwitch</a></span><span class=\"type-sig\"><span class=\"signature\">(string, int, int)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  odd\"><p>Switch the positions of nodes in a parent node (note this is specifically designed for \ntable rows). Note this function considers all element nodes under the parent!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">string</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>sTag Tag to consider</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>iFrom Element to move</p></td></tr><tr class=\"even\"><td class=\"number right_border\"><div>3</div></td><td class=\"name\">int</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Point to element the element to (before this point), can be null for append</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n<dt id=\"fnInvertKeyValues\" class=\"  even\"><a name=\"fnInvertKeyValues\"></a><a name=\"fnInvertKeyValues_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnInvertKeyValues</a></span><span class=\"type-sig\"><span class=\"signature\">(array)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Switch the key value pairing of an index array to be value key (i.e. the old value is now the\nkey). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">array</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>aIn Array to switch around</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>array</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"ColReorder.html\">ColReorder</a></dt><dd><p>ColReorder provides column visiblity control for DataTables</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/media/js/ColReorder.js",
    "content": "/*\n * File:        ColReorder.js\n * Version:     1.0.8\n * CVS:         $Id$\n * Description: Allow columns to be reordered in a DataTable\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Wed Sep 15 18:23:29 BST 2010\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     DataTables\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n *\n */\n\n\n(function($, window, document) {\n\n\n/**\n * Switch the key value pairing of an index array to be value key (i.e. the old value is now the\n * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].\n *  @method  fnInvertKeyValues\n *  @param   array aIn Array to switch around\n *  @returns array\n */\nfunction fnInvertKeyValues( aIn )\n{\n\tvar aRet=[];\n\tfor ( var i=0, iLen=aIn.length ; i<iLen ; i++ )\n\t{\n\t\taRet[ aIn[i] ] = i;\n\t}\n\treturn aRet;\n}\n\n\n/**\n * Modify an array by switching the position of two elements\n *  @method  fnArraySwitch\n *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)\n *  @param   int iFrom From point\n *  @param   int iTo Insert point\n *  @returns void\n */\nfunction fnArraySwitch( aArray, iFrom, iTo )\n{\n\tvar mStore = aArray.splice( iFrom, 1 )[0];\n\taArray.splice( iTo, 0, mStore );\n}\n\n\n/**\n * Switch the positions of nodes in a parent node (note this is specifically designed for \n * table rows). Note this function considers all element nodes under the parent!\n *  @method  fnDomSwitch\n *  @param   string sTag Tag to consider\n *  @param   int iFrom Element to move\n *  @param   int Point to element the element to (before this point), can be null for append\n *  @returns void\n */\nfunction fnDomSwitch( nParent, iFrom, iTo )\n{\n\tvar anTags = [];\n\tfor ( var i=0, iLen=nParent.childNodes.length ; i<iLen ; i++ )\n\t{\n\t\tif ( nParent.childNodes[i].nodeType == 1 )\n\t\t{\n\t\t\tanTags.push( nParent.childNodes[i] );\n\t\t}\n\t}\n\tvar nStore = anTags[ iFrom ];\n\t\n\tif ( iTo !== null )\n\t{\n\t\tnParent.insertBefore( nStore, anTags[iTo] );\n\t}\n\telse\n\t{\n\t\tnParent.appendChild( nStore );\n\t}\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables plug-in API functions\n *\n * This are required by ColReorder in order to perform the tasks required, and also keep this\n * code portable, to be used for other column reordering projects with DataTables, if needed.\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Plug-in for DataTables which will reorder the internal column structure by taking the column\n * from one position (iFrom) and insert it into a given point (iTo).\n *  @method  $.fn.dataTableExt.oApi.fnColReorder\n *  @param   object oSettings DataTables settings object - automatically added by DataTables! \n *  @param   int iFrom Take the column to be repositioned from this point\n *  @param   int iTo and insert it into this point\n *  @returns void\n */\n$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )\n{\n\tvar i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;\n\t\n\t/* Sanity check in the input */\n\tif ( iFrom == iTo )\n\t{\n\t\t/* Pointless reorder */\n\t\treturn;\n\t}\n\t\n\tif ( iFrom < 0 || iFrom >= iCols )\n\t{\n\t\tthis.oApi._fnLog( oSettings, 1, \"ColReorder 'from' index is out of bounds: \"+iFrom );\n\t\treturn;\n\t}\n\t\n\tif ( iTo < 0 || iTo >= iCols )\n\t{\n\t\tthis.oApi._fnLog( oSettings, 1, \"ColReorder 'to' index is out of bounds: \"+iTo );\n\t\treturn;\n\t}\n\t\n\t/*\n\t * Calculate the new column array index, so we have a mapping between the old and new\n\t */\n\tvar aiMapping = [];\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\taiMapping[i] = i;\n\t}\n\tfnArraySwitch( aiMapping, iFrom, iTo );\n\tvar aiInvertMapping = fnInvertKeyValues( aiMapping );\n\t\n\t\n\t/*\n\t * Convert all internal indexing to the new column order indexes\n\t */\n\t/* Sorting */\n\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];\n\t}\n\t\n\t/* Fixed sorting */\n\tif ( oSettings.aaSortingFixed !== null )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aaSortingFixed.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];\n\t\t}\n\t}\n\t\n\t/* Data column sorting (the column which the sort for a given column should take place on) */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\t\tfor ( j=0, jLen=oCol.aDataSort.length ; j<jLen ; j++ )\n\t\t{\n\t\t\toCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];\n\t\t}\n\t}\n\t\n\t/* Update the Get and Set functions for each column */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\t\tif ( typeof oCol.mData == 'number' ) {\n\t\t\toCol.mData = aiInvertMapping[ oCol.mData ];\n\t\t\toCol.fnGetData = oSettings.oApi._fnGetObjectDataFn( oCol.mData );\n\t\t\toCol.fnSetData = oSettings.oApi._fnSetObjectDataFn( oCol.mData );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Move the DOM elements\n\t */\n\tif ( oSettings.aoColumns[iFrom].bVisible )\n\t{\n\t\t/* Calculate the current visible index and the point to insert the node before. The insert\n\t\t * before needs to take into account that there might not be an element to insert before,\n\t\t * in which case it will be null, and an appendChild should be used\n\t\t */\n\t\tvar iVisibleIndex = this.oApi._fnColumnIndexToVisible( oSettings, iFrom );\n\t\tvar iInsertBeforeIndex = null;\n\t\t\n\t\ti = iTo < iFrom ? iTo : iTo + 1;\n\t\twhile ( iInsertBeforeIndex === null && i < iCols )\n\t\t{\n\t\t\tiInsertBeforeIndex = this.oApi._fnColumnIndexToVisible( oSettings, i );\n\t\t\ti++;\n\t\t}\n\t\t\n\t\t/* Header */\n\t\tnTrs = oSettings.nTHead.getElementsByTagName('tr');\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );\n\t\t}\n\t\t\n\t\t/* Footer */\n\t\tif ( oSettings.nTFoot !== null )\n\t\t{\n\t\t\tnTrs = oSettings.nTFoot.getElementsByTagName('tr');\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfnDomSwitch( nTrs[i], iVisibleIndex, iInsertBeforeIndex );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Body */\n\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tfnDomSwitch( oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/* \n\t * Move the internal array elements\n\t */\n\t/* Columns */\n\tfnArraySwitch( oSettings.aoColumns, iFrom, iTo );\n\t\n\t/* Search columns */\n\tfnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );\n\t\n\t/* Array array - internal data anodes cache */\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( $.isArray( oSettings.aoData[i]._aData ) ) {\n\t\t  fnArraySwitch( oSettings.aoData[i]._aData, iFrom, iTo );\n\t\t}\n\t\tfnArraySwitch( oSettings.aoData[i]._anHidden, iFrom, iTo );\n\t}\n\t\n\t/* Reposition the header elements in the header layout array */\n\tfor ( i=0, iLen=oSettings.aoHeader.length ; i<iLen ; i++ )\n\t{\n\t\tfnArraySwitch( oSettings.aoHeader[i], iFrom, iTo );\n\t}\n\t\n\tif ( oSettings.aoFooter !== null )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoFooter.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfnArraySwitch( oSettings.aoFooter[i], iFrom, iTo );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Update DataTables' event handlers\n\t */\n\t\n\t/* Sort listener */\n\tfor ( i=0, iLen=iCols ; i<iLen ; i++ )\n\t{\n\t\t$(oSettings.aoColumns[i].nTh).unbind('click');\n\t\tthis.oApi._fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t}\n\t\n\t\n\t/* Fire an event so other plug-ins can update */\n\t$(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {\n\t\t\"iFrom\": iFrom,\n\t\t\"iTo\": iTo,\n\t\t\"aiInvertMapping\": aiInvertMapping\n\t} ] );\n\t\n\tif ( typeof oSettings.oInstance._oPluginFixedHeader != 'undefined' )\n\t{\n\t\toSettings.oInstance._oPluginFixedHeader.fnUpdate();\n\t}\n};\n\n\n\n\n/** \n * ColReorder provides column visiblity control for DataTables\n * @class ColReorder\n * @constructor\n * @param {object} DataTables settings object\n * @param {object} ColReorder options\n */\nColReorder = function( oDTSettings, oOpts )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"ColReorder\" )\n\t{\n\t\talert( \"Warning: ColReorder must be initialised with the keyword 'new'\" );\n\t}\n\t\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for ColReorder instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * DataTables settings object\n\t\t *  @property dt\n\t\t *  @type     Object\n\t\t *  @default  null\n\t\t */\n\t\t\"dt\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object used for this instance\n\t\t *  @property init\n\t\t *  @type     object\n\t\t *  @default  {}\n\t\t */\n\t\t\"init\": oOpts,\n\t\t\n\t\t/**\n\t\t * Number of columns to fix (not allow to be reordered)\n\t\t *  @property fixed\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"fixed\": 0,\n\t\t\n\t\t/**\n\t\t * Callback function for once the reorder has been done\n\t\t *  @property dropcallback\n\t\t *  @type     function\n\t\t *  @default  null\n\t\t */\n\t\t\"dropCallback\": null,\n\t\t\n\t\t/**\n\t\t * @namespace Information used for the mouse drag\n\t\t */\n\t\t\"mouse\": {\n\t\t\t\"startX\": -1,\n\t\t\t\"startY\": -1,\n\t\t\t\"offsetX\": -1,\n\t\t\t\"offsetY\": -1,\n\t\t\t\"target\": -1,\n\t\t\t\"targetIndex\": -1,\n\t\t\t\"fromIndex\": -1\n\t\t},\n\t\t\n\t\t/**\n\t\t * Information which is used for positioning the insert cusor and knowing where to do the\n\t\t * insert. Array of objects with the properties:\n\t\t *   x: x-axis position\n\t\t *   to: insert point\n\t\t *  @property aoTargets\n\t\t *  @type     array\n\t\t *  @default  []\n\t\t */\n\t\t\"aoTargets\": []\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * Dragging element (the one the mouse is moving)\n\t\t *  @property drag\n\t\t *  @type     element\n\t\t *  @default  null\n\t\t */\n\t\t\"drag\": null,\n\t\t\n\t\t/**\n\t\t * The insert cursor\n\t\t *  @property pointer\n\t\t *  @type     element\n\t\t *  @default  null\n\t\t */\n\t\t\"pointer\": null\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tthis.s.dt = oDTSettings.oInstance.fnSettings();\n\tthis._fnConstruct();\n\n\t/* Add destroy callback */\n\toDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', jQuery.proxy(this._fnDestroy, this), 'ColReorder');\n\n\t/* Store the instance for later use */\n\tColReorder.aoInstances.push( this );\n\treturn this;\n};\n\n\n\nColReorder.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t\"fnReset\": function ()\n\t{\n\t\tvar a = [];\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ta.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );\n\t\t}\n\t\t\n\t\tthis._fnOrderColumns( a );\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tvar that = this;\n\t\tvar i, iLen;\n\t\t\n\t\t/* Columns discounted from reordering - counting left to right */\n\t\tif ( typeof this.s.init.iFixedColumns != 'undefined' )\n\t\t{\n\t\t\tthis.s.fixed = this.s.init.iFixedColumns;\n\t\t}\n\t\t\n\t\t/* Drop callback initialisation option */\n\t\tif ( typeof this.s.init.fnReorderCallback != 'undefined' )\n\t\t{\n\t\t\tthis.s.dropCallback = this.s.init.fnReorderCallback;\n\t\t}\n\t\t\n\t\t/* Add event handlers for the drag and drop, and also mark the original column order */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i > this.s.fixed-1 )\n\t\t\t{\n\t\t\t\tthis._fnMouseListener( i, this.s.dt.aoColumns[i].nTh );\n\t\t\t}\n\t\t\t\n\t\t\t/* Mark the original column order for later reference */\n\t\t\tthis.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;\n\t\t}\n\t\t\n\t\t/* State saving */\n\t\tthis.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {\n\t\t\tthat._fnStateSave.call( that, oData );\n\t\t}, \"ColReorder_State\" );\n\t\t\n\t\t/* An initial column order has been specified */\n\t\tvar aiOrder = null;\n\t\tif ( typeof this.s.init.aiOrder != 'undefined' )\n\t\t{\n\t\t\taiOrder = this.s.init.aiOrder.slice();\n\t\t}\n\t\t\n\t\t/* State loading, overrides the column order given */\n\t\tif ( this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&\n\t\t  this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length )\n\t\t{\n\t\t\taiOrder = this.s.dt.oLoadedState.ColReorder;\n\t\t}\n\t\t\n\t\t/* If we have an order to apply - do so */\n\t\tif ( aiOrder )\n\t\t{\n\t\t\t/* We might be called during or after the DataTables initialisation. If before, then we need\n\t\t\t * to wait until the draw is done, if after, then do what we need to do right away\n\t\t\t */\n\t\t\tif ( !that.s.dt._bInitComplete )\n\t\t\t{\n\t\t\t\tvar bDone = false;\n\t\t\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function () {\n\t\t\t\t\t\tif ( !that.s.dt._bInitComplete && !bDone )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbDone = true;\n\t\t\t\t\t\t\tvar resort = fnInvertKeyValues( aiOrder );\n\t\t\t\t\t\t\tthat._fnOrderColumns.call( that, resort );\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"ColReorder_Pre\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar resort = fnInvertKeyValues( aiOrder );\n\t\t\t\tthat._fnOrderColumns.call( that, resort );\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Set the column order from an array\n\t *  @method  _fnOrderColumns\n\t *  @param   array a An array of integers which dictate the column order that should be applied\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnOrderColumns\": function ( a )\n\t{\n\t\tif ( a.length != this.s.dt.aoColumns.length )\n\t\t{\n\t\t\tthis.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, \"ColReorder - array reorder does not \"+\n\t\t\t \t\"match known number of columns. Skipping.\" );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar currIndex = $.inArray( i, a );\n\t\t\tif ( i != currIndex )\n\t\t\t{\n\t\t\t\t/* Reorder our switching array */\n\t\t\t\tfnArraySwitch( a, currIndex, i );\n\t\t\t\t\n\t\t\t\t/* Do the column reorder in the table */\n\t\t\t\tthis.s.dt.oInstance.fnColReorder( currIndex, i );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* When scrolling we need to recalculate the column sizes to allow for the shift */\n\t\tif ( this.s.dt.oScroll.sX !== \"\" || this.s.dt.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis.s.dt.oInstance.fnAdjustColumnSizing();\n\t\t}\n\t\t\t\n\t\t/* Save the state */\n\t\tthis.s.dt.oInstance.oApi._fnSaveState( this.s.dt );\n\t},\n\t\n\t\n\t/**\n\t * Because we change the indexes of columns in the table, relative to their starting point\n\t * we need to reorder the state columns to what they are at the starting point so we can\n\t * then rearrange them again on state load!\n\t *  @method  _fnStateSave\n\t *  @param   object oState DataTables state \n\t *  @returns string JSON encoded cookie string for DataTables\n\t *  @private \n\t */\n\t\"_fnStateSave\": function ( oState )\n\t{\n\t\tvar i, iLen, aCopy, iOrigColumn;\n\t\tvar oSettings = this.s.dt;\n\n\t\t/* Sorting */\n\t\tfor ( i=0 ; i<oState.aaSorting.length ; i++ )\n\t\t{\n\t\t\toState.aaSorting[i][0] = oSettings.aoColumns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;\n\t\t}\n\n\t\taSearchCopy = $.extend( true, [], oState.aoSearchCols );\n\t\toState.ColReorder = [];\n\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tiOrigColumn = oSettings.aoColumns[i]._ColReorder_iOrigCol;\n\n\t\t\t/* Column filter */\n\t\t\toState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];\n\n\t\t\t/* Visibility */\n\t\t\toState.abVisCols[ iOrigColumn ] = oSettings.aoColumns[i].bVisible;\n\t\t\n\t\t\t/* Column reordering */\n\t\t\toState.ColReorder.push( iOrigColumn );\n\t\t}\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Mouse drop and drag\n\t */\n\t\n\t/**\n\t * Add a mouse down listener to a particluar TH element\n\t *  @method  _fnMouseListener\n\t *  @param   int i Column index\n\t *  @param   element nTh TH element clicked on\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseListener\": function ( i, nTh )\n\t{\n\t\tvar that = this;\n\t\t$(nTh).bind( 'mousedown.ColReorder', function (e) {\n\t\t\te.preventDefault();\n\t\t\tthat._fnMouseDown.call( that, e, nTh );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Mouse down on a TH element in the table header\n\t *  @method  _fnMouseDown\n\t *  @param   event e Mouse event\n\t *  @param   element nTh TH element to be dragged\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseDown\": function ( e, nTh )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\taoColumns = this.s.dt.aoColumns;\n\t\t\n\t\t/* Store information about the mouse position */\n\t\tvar nThTarget = e.target.nodeName == \"TH\" ? e.target : $(e.target).parents('TH')[0];\n\t\tvar offset = $(nThTarget).offset();\n\t\tthis.s.mouse.startX = e.pageX;\n\t\tthis.s.mouse.startY = e.pageY;\n\t\tthis.s.mouse.offsetX = e.pageX - offset.left;\n\t\tthis.s.mouse.offsetY = e.pageY - offset.top;\n\t\tthis.s.mouse.target = nTh;\n\t\tthis.s.mouse.targetIndex = $('th', nTh.parentNode).index( nTh );\n\t\tthis.s.mouse.fromIndex = this.s.dt.oInstance.oApi._fnVisibleToColumnIndex( this.s.dt, \n\t\t\tthis.s.mouse.targetIndex );\n\t\t\n\t\t/* Calculate a cached array with the points of the column inserts, and the 'to' points */\n\t\tthis.s.aoTargets.splice( 0, this.s.aoTargets.length );\n\t\t\n\t\tthis.s.aoTargets.push( {\n\t\t\t\"x\":  $(this.s.dt.nTable).offset().left,\n\t\t\t\"to\": 0\n\t\t} );\n\t\t\n\t\tvar iToPoint = 0;\n\t\tfor ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\t/* For the column / header in question, we want it's position to remain the same if the \n\t\t\t * position is just to it's immediate left or right, so we only incremement the counter for\n\t\t\t * other columns\n\t\t\t */\n\t\t\tif ( i != this.s.mouse.fromIndex )\n\t\t\t{\n\t\t\t\tiToPoint++;\n\t\t\t}\n\t\t\t\n\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tthis.s.aoTargets.push( {\n\t\t\t\t\t\"x\":  $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),\n\t\t\t\t\t\"to\": iToPoint\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Disallow columns for being reordered by drag and drop, counting left to right */\n\t\tif ( this.s.fixed !== 0 )\n\t\t{\n\t\t\tthis.s.aoTargets.splice( 0, this.s.fixed );\n\t\t}\n\t\t\n\t\t/* Add event handlers to the document */\n\t\t$(document).bind( 'mousemove.ColReorder', function (e) {\n\t\t\tthat._fnMouseMove.call( that, e );\n\t\t} );\n\t\t\n\t\t$(document).bind( 'mouseup.ColReorder', function (e) {\n\t\t\tthat._fnMouseUp.call( that, e );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Deal with a mouse move event while dragging a node\n\t *  @method  _fnMouseMove\n\t *  @param   event e Mouse event\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseMove\": function ( e )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( this.dom.drag === null )\n\t\t{\n\t\t\t/* Only create the drag element if the mouse has moved a specific distance from the start\n\t\t\t * point - this allows the user to make small mouse movements when sorting and not have a\n\t\t\t * possibly confusing drag element showing up\n\t\t\t */\n\t\t\tif ( Math.pow(\n\t\t\t\tMath.pow(e.pageX - this.s.mouse.startX, 2) + \n\t\t\t\tMath.pow(e.pageY - this.s.mouse.startY, 2), 0.5 ) < 5 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._fnCreateDragNode();\n\t\t}\n\t\t\n\t\t/* Position the element - we respect where in the element the click occured */\n\t\tthis.dom.drag.style.left = (e.pageX - this.s.mouse.offsetX) + \"px\";\n\t\tthis.dom.drag.style.top = (e.pageY - this.s.mouse.offsetY) + \"px\";\n\t\t\n\t\t/* Based on the current mouse position, calculate where the insert should go */\n\t\tvar bSet = false;\n\t\tfor ( var i=1, iLen=this.s.aoTargets.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( e.pageX < this.s.aoTargets[i-1].x + ((this.s.aoTargets[i].x-this.s.aoTargets[i-1].x)/2) )\n\t\t\t{\n\t\t\t\tthis.dom.pointer.style.left = this.s.aoTargets[i-1].x +\"px\";\n\t\t\t\tthis.s.mouse.toIndex = this.s.aoTargets[i-1].to;\n\t\t\t\tbSet = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* The insert element wasn't positioned in the array (less than operator), so we put it at \n\t\t * the end\n\t\t */\n\t\tif ( !bSet )\n\t\t{\n\t\t\tthis.dom.pointer.style.left = this.s.aoTargets[this.s.aoTargets.length-1].x +\"px\";\n\t\t\tthis.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length-1].to;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Finish off the mouse drag and insert the column where needed\n\t *  @method  _fnMouseUp\n\t *  @param   event e Mouse event\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnMouseUp\": function ( e )\n\t{\n\t\tvar that = this;\n\t\t\n\t\t$(document).unbind( 'mousemove.ColReorder' );\n\t\t$(document).unbind( 'mouseup.ColReorder' );\n\t\t\n\t\tif ( this.dom.drag !== null )\n\t\t{\n\t\t\t/* Remove the guide elements */\n\t\t\tdocument.body.removeChild( this.dom.drag );\n\t\t\tdocument.body.removeChild( this.dom.pointer );\n\t\t\tthis.dom.drag = null;\n\t\t\tthis.dom.pointer = null;\n\t\t\t\n\t\t\t/* Actually do the reorder */\n\t\t\tthis.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );\n\t\t\t\n\t\t\t/* When scrolling we need to recalculate the column sizes to allow for the shift */\n\t\t\tif ( this.s.dt.oScroll.sX !== \"\" || this.s.dt.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tthis.s.dt.oInstance.fnAdjustColumnSizing();\n\t\t\t}\n\t\t\t\n\t\t\tif ( this.s.dropCallback !== null )\n\t\t\t{\n\t\t\t\tthis.s.dropCallback.call( this );\n\t\t\t}\n\t\t\t\n\t\t\t/* Save the state */\n\t\t\tthis.s.dt.oInstance.oApi._fnSaveState( this.s.dt );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Copy the TH element that is being drags so the user has the idea that they are actually \n\t * moving it around the page.\n\t *  @method  _fnCreateDragNode\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCreateDragNode\": function ()\n\t{\n\t\tvar that = this;\n\t\t\n\t\tthis.dom.drag = $(this.s.dt.nTHead.parentNode).clone(true)[0];\n\t\tthis.dom.drag.className += \" DTCR_clonedTable\";\n\t\twhile ( this.dom.drag.getElementsByTagName('caption').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('caption')[0] );\n\t\t}\n\t\twhile ( this.dom.drag.getElementsByTagName('tbody').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('tbody')[0] );\n\t\t}\n\t\twhile ( this.dom.drag.getElementsByTagName('tfoot').length > 0 )\n\t\t{\n\t\t\tthis.dom.drag.removeChild( this.dom.drag.getElementsByTagName('tfoot')[0] );\n\t\t}\n\t\t\n\t\t$('thead tr:eq(0)', this.dom.drag).each( function () {\n\t\t\t$('th', this).eq(that.s.mouse.targetIndex).siblings().remove();\n\t\t} );\n\t\t$('tr', this.dom.drag).height( $('tr:eq(0)', that.s.dt.nTHead).height() );\n\t\t\n\t\t$('thead tr:gt(0)', this.dom.drag).remove();\n\t\t\n\t\t$('thead th:eq(0)', this.dom.drag).each( function (i) {\n\t\t\tthis.style.width = $('th:eq('+that.s.mouse.targetIndex+')', that.s.dt.nTHead).width()+\"px\";\n\t\t} );\n\t\t\n\t\tthis.dom.drag.style.position = \"absolute\";\n\t\tthis.dom.drag.style.top = \"0px\";\n\t\tthis.dom.drag.style.left = \"0px\";\n\t\tthis.dom.drag.style.width = $('th:eq('+that.s.mouse.targetIndex+')', that.s.dt.nTHead).outerWidth()+\"px\";\n\t\t\n\t\t\n\t\tthis.dom.pointer = document.createElement( 'div' );\n\t\tthis.dom.pointer.className = \"DTCR_pointer\";\n\t\tthis.dom.pointer.style.position = \"absolute\";\n\t\t\n\t\tif ( this.s.dt.oScroll.sX === \"\" && this.s.dt.oScroll.sY === \"\" )\n\t\t{\n\t\t\tthis.dom.pointer.style.top = $(this.s.dt.nTable).offset().top+\"px\";\n\t\t\tthis.dom.pointer.style.height = $(this.s.dt.nTable).height()+\"px\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.dom.pointer.style.top = $('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top+\"px\";\n\t\t\tthis.dom.pointer.style.height = $('div.dataTables_scroll', this.s.dt.nTableWrapper).height()+\"px\";\n\t\t}\n\t\n\t\tdocument.body.appendChild( this.dom.pointer );\n\t\tdocument.body.appendChild( this.dom.drag );\n\t},\n\n\t/**\n\t * Clean up ColReorder memory references and event handlers\n\t *  @method  _fnDestroy\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnDestroy\": function ()\n\t{\n\t\tfor ( var i=0, iLen=ColReorder.aoInstances.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( ColReorder.aoInstances[i] === this )\n\t\t\t{\n\t\t\t\tColReorder.aoInstances.splice( i, 1 );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t$(this.s.dt.nTHead).find( '*' ).unbind( '.ColReorder' );\n\n\t\tthis.s.dt.oInstance._oPluginColReorder = null;\n\t\tthis.s = null;\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static parameters\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Array of all ColReorder instances for later reference\n *  @property ColReorder.aoInstances\n *  @type     array\n *  @default  []\n *  @static\n */\nColReorder.aoInstances = [];\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static functions\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Reset the column ordering for a DataTables instance\n *  @method  ColReorder.fnReset\n *  @param   object oTable DataTables instance to consider\n *  @returns void\n *  @static\n */\nColReorder.fnReset = function ( oTable )\n{\n\tfor ( var i=0, iLen=ColReorder.aoInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( ColReorder.aoInstances[i].s.dt.oInstance == oTable )\n\t\t{\n\t\t\tColReorder.aoInstances[i].fnReset();\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  ColReorder\n */\nColReorder.prototype.CLASS = \"ColReorder\";\n\n\n/**\n * ColReorder version\n *  @constant  VERSION\n *  @type      String\n *  @default   As code\n */\nColReorder.VERSION = \"1.0.8\";\nColReorder.prototype.VERSION = ColReorder.VERSION;\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.9.3') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar oTable = oDTSettings.oInstance;\n\t\t\tif ( typeof oTable._oPluginColReorder == 'undefined' ) {\n\t\t\t\tvar opts = typeof oDTSettings.oInit.oColReorder != 'undefined' ? \n\t\t\t\t\toDTSettings.oInit.oColReorder : {};\n\t\t\t\toTable._oPluginColReorder = new ColReorder( oDTSettings, opts );\n\t\t\t} else {\n\t\t\t\toTable.oApi._fnLog( oDTSettings, 1, \"ColReorder attempted to initialise twice. Ignoring second\" );\n\t\t\t}\n\t\t\t\n\t\t\treturn null; /* No node to insert */\n\t\t},\n\t\t\"cFeature\": \"R\",\n\t\t\"sFeature\": \"ColReorder\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download\");\n}\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/predefined.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with predefined column ordering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColReorder provides the ability to specify a column ordering which is not that of the\n\t\t\t\tHTML (which typically you will want) through the parameter oColReorder.aiOrder. This is\n\t\t\t\tan array of integers with the column ordering you want.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"oColReorder\": {\n\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/reset.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"oColReorder\": {\n\t\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$('#reset').click( function () {\n\t\t\t\t\tColReorder.fnReset( oTable );\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\t\n\t\t\t/*\n\t\t\t * Alternative intialisation using 'new'\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\tvar colreorder = new ColReorder( oTable, {\n\t\t\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t$('#reset').click( function () {\n\t\t\t\t\tcolreorder.fnReset();\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\t\n\t\t\t *\n\t\t\t */\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with the ability to reset the ordering\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>One useful control option to present the end user when using ColReorder is the ability\n\t\t\t\tto reset the column ordering to that which was found in the HTML. This can be done by\n\t\t\t\tcalling the fnReset API function. While ColReorder does not provide a visual element for\n\t\t\t\tthis itself (in order to provide maximum flexibility) it is easy to hook to an event\n\t\t\t\thandler, as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<button id=\"reset\">Reset to original HTML order</button><br><br>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"oColReorder\": {\n\t\t\t\"aiOrder\": [ 4, 3, 2, 1, 0 ]\n\t\t}\n\t} );\n\t\n\t$('#reset').click( function () {\n\t\tColReorder.fnReset( oTable );\n\t\treturn false;\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"bPaginate\": false\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with scrolling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This is a simple example to show ColReorder working with DataTables scrolling.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"sScrollY\": \"200px\",\n\t\t\"bPaginate\": false\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/server_side.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"bProcessing\": true,\n\t\t\t\t\t\"bServerSide\": true,\n\t\t\t\t\t\"sAjaxSource\": \"../../examples/server_side/scripts/objects.php\",\n\t\t\t\t\t\"aoColumns\": [\n\t\t\t\t\t\t{ \"mDataProp\": \"engine\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"browser\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"platform\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"version\" },\n\t\t\t\t\t\t{ \"mDataProp\": \"grade\" }\n\t\t\t\t\t]\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with server-side processing\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Server-side processing can be exceptionally useful in DataTables when dealing with \n\t\t\t\tmassive data sets, and ColReorder works with this as would be expected. There must be\n\t\t\t\tspecial consideration for the column ordering on the server-side script since the \n\t\t\t\tcolumns can be in an unexpected order. For this you can either choose to use the \n\t\t\t\t<i>sName</i> parameter for each column and take this into account in the server-side\n\t\t\t\tscript (the parameter 'sColumns' is a comma separated string of these sName parameters).</p>\n\t\t\t\n\t\t\t</p>Alternatively use the more flexible <a href=\"http://datatables.net/usage/columns#mDataProp\">mDataProp</a>\n\t\t\t\toption for each column. This allows you to use JSON objects which DataTables, so order doesn't\n\t\t\t\tmatter like it would do in an array. Again the server-side script must take this into account\n\t\t\t\tthrough the <i>mDataProp_{i}</i> which is sent for each column (so the server knows which\n\t\t\t\tcolumn is to be sorted on).</p>\n\t\t\t\t\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"bProcessing\": true,\n\t\t\"bServerSide\": true,\n\t\t\"sAjaxSource\": \"../../examples/server_side/scripts/objects.php\",\n\t\t\"aoColumns\": [\n\t\t\t{ \"mDataProp\": \"engine\" },\n\t\t\t{ \"mDataProp\": \"browser\" },\n\t\t\t{ \"mDataProp\": \"platform\" },\n\t\t\t{ \"mDataProp\": \"version\" },\n\t\t\t{ \"mDataProp\": \"grade\" }\n\t\t]\n\t} );\n} );</pre>\n\n      <h1>Example JSON return from the server</h1>\n      <pre>{\n\"sEcho\": 1,\n\"iTotalRecords\": \"57\",\n\"iTotalDisplayRecords\": \"57\",\n\"aaData\": [\n    {\n        \"engine\": \"Gecko\",\n        \"browser\": \"Firefox 1.0\",\n        \"platform\": \"Win 98+ / OSX.2+\",\n        \"version\": \"1.7\",\n        \"grade\": \"A\"\n    },\n    {\n        \"engine\": \"Gecko\",\n        \"browser\": \"Firefox 1.5\",\n        \"platform\": \"Win 98+ / OSX.2+\",\n        \"version\": \"1.8\",\n        \"grade\": \"A\"\n    },\n    ...\n  ]\n}</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/state_save.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'Rlfrtip',\n\t\t\t\t\t\"bStateSave\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with state saving\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>A useful interaction pattern to use in DataTables is state saving, so when the end user\n\t\t\t\treloads or revisits a page its previous state is retained. ColReorder works seamlessly\n\t\t\t\twith state saving in DataTables, remembering and restoring the column positions, as well\n\t\t\t\tas everything else such as sorting and filtering.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'Rlfrtip',\n\t\t\"bStateSave\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColReorder/theme.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColReorder example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColReorder.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColReorder.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'R<\"H\"lfr>t<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true,\n\t\t\t\t\t\"sPaginationType\": \"full_numbers\"\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColReorder example with jQuery UI theming\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows how the jQuery UI ThemeRoller option in DataTables can be used \n\t\t\t\twith ColReorder. The important thing to node here is how sDom is set up in order to \n\t\t\t\tinclude the required classes and elements.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"alt_insert.html\">Styling the insert cursor</a></li>\n\t\t\t\t<li><a href=\"col_filter.html\">Individual column filtering</a></li>\n\t\t\t\t<li><a href=\"colvis.html\">Integration with DataTables' ColVis plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedcolumns.html\">Integration with DataTables' FixedColumns plug-in</a></li>\n\t\t\t\t<li><a href=\"fixedheader.html\">Integration with DataTables' FixedHeader plug-in</a></li>\n\t\t\t\t<li><a href=\"predefined.html\">Using a predefined column order set</a></li>\n\t\t\t\t<li><a href=\"reset.html\">Providing a user control to reset the column order</a></li>\n\t\t\t\t<li><a href=\"scrolling.html\">Column reordering shown with scrolling in DataTables</a></li>\n\t\t\t\t<li><a href=\"server_side.html\">Server-side processing support</a></li>\n\t\t\t\t<li><a href=\"state_save.html\">State saving of the column position</a></li>\n\t\t\t\t<li><a href=\"theme.html\">jQuery UI theme integration</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sDom\": 'R&lt;\"H\"lfr&gt;t&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true,\n\t\t\"sPaginationType\": \"full_numbers\"\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColReorder and DataTables &copy; Allan Jardine 2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/exclude_columns.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"aiExclude\": [ 0 ]\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - exclude columns from list\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>It can at times be useful to exclude columns from being in the 'show / hide' list (for\n\t\t\t\texample if you have hidden information that the end user shouldn't be able to make\n\t\t\t\tvisible. This can be done by the oColVis.aiExclude initialisation parameter when creating\n\t\t\t\tthe DataTable. This is simply an array of integers, indicating which columns should\n\t\t\t\tbe excluded. This example shows the first column being excluded.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"aiExclude\": [ 0 ]\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColVis is a plug-in for DataTables which presents a list of all columns to a user and allows them to select which ones they wish to be visible. Click the 'Show / hide columns' button to be presented with a list of columns in the table, and click the buttons to show and hide them as you wish.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVis.css",
    "content": "\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * ColVis styles\n */\n.ColVis {\n\tfloat: right;\n\tmargin-bottom: 1em;\n}\n\n.ColVis_Button {\n\tposition: relative;\n\tfloat: left;\n\tmargin-right: 3px;\n\tpadding: 3px 5px;\n\theight: 30px;\n\tbackground-color: #fff;\n\tborder: 1px solid #d0d0d0;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\nbutton.ColVis_Button::-moz-focus-inner { \n\tborder: none !important;\n\tpadding: 0;\n}\n\n.ColVis_text_hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_collectionBackground {\n\tbackground-color: black;\n\tz-index: 1100;\n}\n\ndiv.ColVis_collection {\n\tposition: relative;\n\twidth: 150px;\n\tbackground-color: #f3f3f3;\n\tpadding: 3px;\n\tborder: 1px solid #ccc;\n\tz-index: 1102;\n}\n\ndiv.ColVis_collection button.ColVis_Button {\n\tbackground-color: white;\n\twidth: 100%;\n\tfloat: none;\n\tmargin-bottom: 2px;\n}\n\ndiv.ColVis_catcher {\n\tposition: absolute;\n\tz-index: 1101;\n}\n\n.disabled {\n\tcolor: #999;\n}\n\n\n\nbutton.ColVis_Button {\n\ttext-align: left;\n}\n\ndiv.ColVis_collection button.ColVis_Button:hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\nspan.ColVis_radio {\n\tdisplay: inline-block;\n\twidth: 20px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/css/ColVisAlt.css",
    "content": "/*\n * An alternative styling for ColVis\n * Note you will likely have to change the path for the background image used by jQuery UI theming:\n *   ../../../../examples/examples_support/themes/smoothness\n */\n\n.ColVis {\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\twidth: 15px;\n\theight: 30px;\n}\n\n.ColVis_MasterButton {\n\theight: 100%;\n\twidth: 100%;\n\tborder-left-width: 0;\n\tcursor: pointer;\n\t*cursor: hand;\n\tbackground: url('../images/button.png') no-repeat top left;\n}\n\nbutton.ColVis_Button::-moz-focus-inner { \n\tborder: none !important;\n\tpadding: 0;\n}\n\n.ColVis_text_hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_collectionBackground {\n\tbackground-color: black;\n\tz-index: 1100;\n}\n\ndiv.ColVis_collection {\n\tposition: relative;\n\twidth: 150px;\n\tbackground-color: #f9f9f9;\n\tpadding: 3px;\n\tborder: 1px solid #ccc;\n\tz-index: 1102;\n}\n\ndiv.ColVis_collection button.ColVis_Button {\n\theight: 30px;\n\twidth: 100%;\n\tmargin-right: 3px;\n\tmargin-bottom: 2px;\n\tpadding: 3px 5px;\n\tcursor: pointer;\n\t*cursor: hand;\n\ttext-align: left;\n}\n\ndiv.ColVis_collection button.ColVis_Button:hover {\n\tborder: 1px solid #999;\n\tbackground-color: #f0f0f0;\n}\n\ndiv.ColVis_catcher {\n\tposition: absolute;\n\tz-index: 1101;\n}\n\nspan.ColVis_radio {\n\tdisplay: inline-block;\n\twidth: 20px;\n}\n\nbutton.ColVis_Restore {\n\tmargin-top: 15px;\n}\n\nbutton.ColVis_Restore span {\n\tdisplay: inline-block;\n\tpadding-left: 10px;\n\ttext-align: left;\n}\n\n.disabled {\n\tcolor: #999;\n}\n\n\n\n/*\n * Styles needed for DataTables scrolling\n */\ndiv.dataTables_scrollHead {\n\tposition: relative;\n\toverflow: hidden;\n}\n\ndiv.dataTables_scrollBody {\n\toverflow-y: scroll;\n}\n\ndiv.dataTables_scrollFoot {\n\toverflow: hidden;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ColVis.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: ColVis - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: ColVis</h1>\n\t\t\t\t\t<p class=\"class-description\"><p>ColVis</p></p>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td><a href=\"#summary_methods_static\">Static methods (1)</a></td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"ColVis\" class=\"  even\"><a name=\"ColVis\"></a><a name=\"ColVis_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new ColVis</a></span><span class=\"type-sig\"><span class=\"signature\">(DataTables)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>ColVis provides column visiblity control for DataTables</p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">DataTables</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>settings object</p></td></tr>\n\t</tbody>\n</table></div>\n</dl>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aInstances\">aInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :Array</span></span></dt><dd class=\"  even\"><p>Collection of all ColVis instances</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#_fnAdjustOpenRows\">_fnAdjustOpenRows</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Alter the colspan on any fnOpen rows</p></dd>\n</dl>\n</div><div class=\"doc_group\"><a name=\"summary_methods_static\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#fnRebuild\">fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Rebuild the collection for a given table, or all tables if no parameter given</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"aInstances\"></a><a name=\"aInstances_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#aInstances\">aInstances</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :Array</span></span></dt><dd class=\"  even\"><p>Collection of all ColVis instances</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Properties:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">ColVis.aInstances</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"></td></tr>\n\t</tbody>\n</table></div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"ColVis#_fnAdjustOpenRows\" class=\"  even\"><a name=\"_fnAdjustOpenRows\"></a><a name=\"_fnAdjustOpenRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>_fnAdjustOpenRows</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Alter the colspan on any fnOpen rows</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div>\n\n</dd>\n</div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - static</h3>\n<dl>\n    <dt id=\"ColVis.fnRebuild\" class=\"  even\"><a name=\"fnRebuild\"></a><a name=\"fnRebuild_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a>fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">(object)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Rebuild the collection for a given table, or all tables if no parameter given</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">object</td><td class=\"type type-param\"></td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>oTable DataTable instance to consider - optional</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/a69b02bcf2.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Common and useful DOM elements for the class instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Common and useful DOM elements for the class instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/ccb5a49865.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: Settings object which contains customisable information for ColVis instance - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: Settings object which contains customisable information for ColVis instance</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/global.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Global - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Global</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_classes\">Classes (1)</a></td><td>Namespaces (0)</td></tr><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (2)</a></td><td>Static properties (0)</td></tr><tr><td><a href=\"#summary_methods\">Methods (1)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_classes\"></a><h3 class=\"subsection-title\">Classes</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"ColVis.html\">ColVis</a></span></dt><dd class=\"even\"><p>ColVis provides column visiblity control for DataTables</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColVis version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnRebuild\">fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></dt><dd class=\"  even\"><p>Rebuild the list of buttons for this instance (i.e. if there is a column header update)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;constant> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  odd\"><p>ColVis version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"fnRebuild\" class=\"  even\"><a name=\"fnRebuild\"></a><a name=\"fnRebuild_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnRebuild</a></span><span class=\"type-sig\"><span class=\"signature\">()</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Rebuild the list of buttons for this instance (i.e. if there is a column header update)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Returns:</h5><p class=\"returns\"><p>void</p></p></div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"ColVis.html\">ColVis</a></dt><dd><p>ColVis provides column visiblity control for DataTables</p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\t\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:27\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/media/js/ColVis.js",
    "content": "/*\n * File:        ColVis.js\n * Version:     1.0.8\n * CVS:         $Id$\n * Description: Controls for column visiblity in DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Wed Sep 15 18:23:29 BST 2010\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     Just a little bit of fun :-)\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2010-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n(function($) {\n\n/** \n * ColVis provides column visiblity control for DataTables\n * @class ColVis\n * @constructor\n * @param {object} DataTables settings object\n */\nColVis = function( oDTSettings, oInit )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( !this.CLASS || this.CLASS != \"ColVis\" )\n\t{\n\t\talert( \"Warning: ColVis must be initialised with the keyword 'new'\" );\n\t}\n\t\n\tif ( typeof oInit == 'undefined' )\n\t{\n\t\toInit = {};\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for ColVis instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * DataTables settings object\n\t\t *  @property dt\n\t\t *  @type     Object\n\t\t *  @default  null\n\t\t */\n\t\t\"dt\": null,\n\t\t\n\t\t/**\n\t\t * Customisation object\n\t\t *  @property oInit\n\t\t *  @type     Object\n\t\t *  @default  passed in\n\t\t */\n\t\t\"oInit\": oInit,\n\t\t\n\t\t/**\n\t\t * Callback function to tell the user when the state has changed\n\t\t *  @property fnStateChange\n\t\t *  @type     function\n\t\t *  @default  null\n\t\t */\n\t\t\"fnStateChange\": null,\n\t\t\n\t\t/**\n\t\t * Mode of activation. Can be 'click' or 'mouseover'\n\t\t *  @property activate\n\t\t *  @type     String\n\t\t *  @default  click\n\t\t */\n\t\t\"activate\": \"click\",\n\t\t\n\t\t/**\n\t\t * Position of the collection menu when shown - align \"left\" or \"right\"\n\t\t *  @property sAlign\n\t\t *  @type     String\n\t\t *  @default  right\n\t\t */\n\t\t\"sAlign\": \"left\",\n\t\t\n\t\t/**\n\t\t * Text used for the button\n\t\t *  @property buttonText\n\t\t *  @type     String\n\t\t *  @default  Show / hide columns\n\t\t */\n\t\t\"buttonText\": \"Show / hide columns\",\n\t\t\n\t\t/**\n\t\t * Flag to say if the collection is hidden\n\t\t *  @property hidden\n\t\t *  @type     boolean\n\t\t *  @default  true\n\t\t */\n\t\t\"hidden\": true,\n\t\t\n\t\t/**\n\t\t * List of columns (integers) which should be excluded from the list\n\t\t *  @property aiExclude\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"aiExclude\": [],\n\t\t\n\t\t/**\n\t\t * Store the original viisbility settings so they could be restored\n\t\t *  @property abOriginal\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"abOriginal\": [],\n\t\t\n\t\t/**\n\t\t * Show Show-All button\n\t\t *  @property bShowAll\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"bShowAll\": false,\n\t\t\n\t\t/**\n\t\t * Show All button text\n\t\t *  @property sShowAll\n\t\t *  @type     String\n\t\t *  @default  Restore original\n\t\t */\n\t\t\"sShowAll\": \"Show All\",\n\t\t\n\t\t/**\n\t\t * Show restore button\n\t\t *  @property bRestore\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"bRestore\": false,\n\t\t\n\t\t/**\n\t\t * Restore button text\n\t\t *  @property sRestore\n\t\t *  @type     String\n\t\t *  @default  Restore original\n\t\t */\n\t\t\"sRestore\": \"Restore original\",\n\t\t\n\t\t/**\n\t\t * Overlay animation duration in mS\n\t\t *  @property iOverlayFade\n\t\t *  @type     Integer\n\t\t *  @default  500\n\t\t */\n\t\t\"iOverlayFade\": 500,\n\t\t\n\t\t/**\n\t\t * Label callback for column names. Takes three parameters: 1. the column index, 2. the column\n\t\t * title detected by DataTables and 3. the TH node for the column\n\t\t *  @property fnLabel\n\t\t *  @type     Function\n\t\t *  @default  null\n\t\t */\n\t\t\"fnLabel\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if ColVis should automatically calculate the size of buttons or not. The default\n\t\t * is for it to do so. Set to \"css\" to disable the automatic sizing\n\t\t *  @property sSize\n\t\t *  @type     String\n\t\t *  @default  auto\n\t\t */\n\t\t\"sSize\": \"auto\",\n\t\t\n\t\t/**\n\t\t * Indicate if the column list should be positioned by Javascript, visually below the button\n\t\t * or allow CSS to do the positioning\n\t\t *  @property bCssPosition\n\t\t *  @type     boolean\n\t\t *  @default  false\n\t\t */\n\t\t\"bCssPosition\": false\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * Wrapper for the button - given back to DataTables as the node to insert\n\t\t *  @property wrapper\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"wrapper\": null,\n\t\t\n\t\t/**\n\t\t * Activation button\n\t\t *  @property button\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"button\": null,\n\t\t\n\t\t/**\n\t\t * Collection list node\n\t\t *  @property collection\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"collection\": null,\n\t\t\n\t\t/**\n\t\t * Background node used for shading the display and event capturing\n\t\t *  @property background\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"background\": null,\n\t\t\n\t\t/**\n\t\t * Element to position over the activation button to catch mouse events when using mouseover\n\t\t *  @property catcher\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"catcher\": null,\n\t\t\n\t\t/**\n\t\t * List of button elements\n\t\t *  @property buttons\n\t\t *  @type     Array\n\t\t *  @default  []\n\t\t */\n\t\t\"buttons\": [],\n\t\t\n\t\t/**\n\t\t * Restore button\n\t\t *  @property restore\n\t\t *  @type     Node\n\t\t *  @default  null\n\t\t */\n\t\t\"restore\": null\n\t};\n\t\n\t/* Store global reference */\n\tColVis.aInstances.push( this );\n\t\n\t/* Constructor logic */\n\tthis.s.dt = oDTSettings;\n\tthis._fnConstruct();\n\treturn this;\n};\n\n\n\nColVis.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Rebuild the list of buttons for this instance (i.e. if there is a column header update)\n\t *  @method  fnRebuild\n\t *  @returns void\n\t */\n\t\"fnRebuild\": function ()\n\t{\n\t\t/* Remove the old buttons */\n\t\tfor ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t{\n\t\t\t\tthis.dom.collection.removeChild( this.dom.buttons[i] );\n\t\t\t}\n\t\t}\n\t\tthis.dom.buttons.splice( 0, this.dom.buttons.length );\n\t\t\n\t\tif ( this.dom.restore )\n\t\t{\n\t\t\tthis.dom.restore.parentNode( this.dom.restore );\n\t\t}\n\t\t\n\t\t/* Re-add them (this is not the optimal way of doing this, it is fast and effective) */\n\t\tthis._fnAddButtons();\n\t\t\n\t\t/* Update the checkboxes */\n\t\tthis._fnDrawCallback();\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tthis._fnApplyCustomisation();\n\t\t\n\t\tvar that = this;\n\t\tvar i, iLen;\n\t\tthis.dom.wrapper = document.createElement('div');\n\t\tthis.dom.wrapper.className = \"ColVis TableTools\";\n\t\t\n\t\tthis.dom.button = this._fnDomBaseButton( this.s.buttonText );\n\t\tthis.dom.button.className += \" ColVis_MasterButton\";\n\t\tthis.dom.wrapper.appendChild( this.dom.button );\n\t\t\n\t\tthis.dom.catcher = this._fnDomCatcher();\n\t\tthis.dom.collection = this._fnDomCollection();\n\t\tthis.dom.background = this._fnDomBackground();\n\t\t\n\t\tthis._fnAddButtons();\n\t\t\n\t\t/* Store the original visbility information */\n\t\tfor ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tthis.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible );\n\t\t}\n\t\t\n\t\t/* Update on each draw */\n\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\"fn\": function () {\n\t\t\t\tthat._fnDrawCallback.call( that );\n\t\t\t},\n\t\t\t\"sName\": \"ColVis\"\n\t\t} );\n\n\t\t/* If columns are reordered, then we need to update our exclude list and\n\t\t * rebuild the displayed list\n\t\t */\n\t\t$(this.s.dt.oInstance).bind( 'column-reorder', function ( e, oSettings, oReorder ) {\n\t\t\tfor ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) {\n\t\t\t\tthat.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];\n\t\t\t}\n\n\t\t\tvar mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0];\n\t\t\tthat.s.abOriginal.splice( oReorder.iTo, 0, mStore );\n\t\t\t\n\t\t\tthat.fnRebuild();\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Apply any customisation to the settings from the DataTables initialisation\n\t *  @method  _fnApplyCustomisation\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnApplyCustomisation\": function ()\n\t{\n\t\tvar oConfig = this.s.oInit;\n\t\t\n\t\tif ( typeof oConfig.activate != 'undefined' )\n\t\t{\n\t\t\tthis.s.activate = oConfig.activate;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.buttonText != 'undefined' )\n\t\t{\n\t\t\tthis.s.buttonText = oConfig.buttonText;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.aiExclude != 'undefined' )\n\t\t{\n\t\t\tthis.s.aiExclude = oConfig.aiExclude;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.bRestore != 'undefined' )\n\t\t{\n\t\t\tthis.s.bRestore = oConfig.bRestore;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sRestore != 'undefined' )\n\t\t{\n\t\t\tthis.s.sRestore = oConfig.sRestore;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.bShowAll != 'undefined' )\n\t\t{\n\t\t\tthis.s.bShowAll = oConfig.bShowAll;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sShowAll != 'undefined' )\n\t\t{\n\t\t\tthis.s.sShowAll = oConfig.sShowAll;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sAlign != 'undefined' )\n\t\t{\n\t\t\tthis.s.sAlign = oConfig.sAlign;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.fnStateChange != 'undefined' )\n\t\t{\n\t\t\tthis.s.fnStateChange = oConfig.fnStateChange;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.iOverlayFade != 'undefined' )\n\t\t{\n\t\t\tthis.s.iOverlayFade = oConfig.iOverlayFade;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.fnLabel != 'undefined' )\n\t\t{\n\t\t\tthis.s.fnLabel = oConfig.fnLabel;\n\t\t}\n\t\t\n\t\tif ( typeof oConfig.sSize != 'undefined' )\n\t\t{\n\t\t\tthis.s.sSize = oConfig.sSize;\n\t\t}\n\n\t\tif ( typeof oConfig.bCssPosition != 'undefined' )\n\t\t{\n\t\t\tthis.s.bCssPosition = oConfig.bCssPosition;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * On each table draw, check the visibility checkboxes as needed. This allows any process to\n\t * update the table's column visibility and ColVis will still be accurate.\n\t *  @method  _fnDrawCallback\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnDrawCallback\": function ()\n\t{\n\t\tvar aoColumns = this.s.dt.aoColumns;\n\t\t\n\t\tfor ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t{\n\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\t$('input', this.dom.buttons[i]).attr('checked','checked');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$('input', this.dom.buttons[i]).removeAttr('checked');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Loop through the columns in the table and as a new button for each one.\n\t *  @method  _fnAddButtons\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnAddButtons\": function ()\n\t{\n\t\tvar\n\t\t\tnButton,\n\t\t\tsExclude = \",\"+this.s.aiExclude.join(',')+\",\";\n\t\t\n\t\tfor ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( sExclude.indexOf( \",\"+i+\",\" ) == -1 )\n\t\t\t{\n\t\t\t\tnButton = this._fnDomColumnButton( i );\n\t\t\t\tthis.dom.buttons.push( nButton );\n\t\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.dom.buttons.push( null );\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( this.s.bRestore )\n\t\t{\n\t\t\tnButton = this._fnDomRestoreButton();\n\t\t\tnButton.className += \" ColVis_Restore\";\n\t\t\tthis.dom.buttons.push( nButton );\n\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t}\n\t\t\n\t\tif ( this.s.bShowAll )\n\t\t{\n\t\t\tnButton = this._fnDomShowAllButton();\n\t\t\tnButton.className += \" ColVis_ShowAll\";\n\t\t\tthis.dom.buttons.push( nButton );\n\t\t\tthis.dom.collection.appendChild( nButton );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Create a button which allows a \"restore\" action\n\t *  @method  _fnDomRestoreButton\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomRestoreButton\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span');\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\t$(nSpan).html( '<span class=\"ColVis_title\">'+this.s.sRestore+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tfor ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false );\n\t\t\t}\n\t\t\tthat._fnAdjustOpenRows();\n\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\tthat.s.dt.oInstance.fnDraw( false );\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create a button which allows a \"show all\" action\n\t *  @method  _fnDomShowAllButton\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomShowAllButton\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span');\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\t$(nSpan).html( '<span class=\"ColVis_title\">'+this.s.sShowAll+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tfor ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif (that.s.aiExclude.indexOf(i) === -1)\n\t\t\t\t{\n\t\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, true, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthat._fnAdjustOpenRows();\n\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\tthat.s.dt.oInstance.fnDraw( false );\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM for a show / hide button\n\t *  @method  _fnDomColumnButton\n\t *  @param {int} i Column in question\n\t *  @returns {Node} Created button\n\t *  @private \n\t */\n\t\"_fnDomColumnButton\": function ( i )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\toColumn = this.s.dt.aoColumns[i],\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span'),\n\t\t\tdt = this.s.dt;\n\t\t\n\t\tnButton.className = !dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\tvar sTitle = this.s.fnLabel===null ? oColumn.sTitle : this.s.fnLabel( i, oColumn.sTitle, oColumn.nTh );\n\t\t$(nSpan).html(\n\t\t\t'<span class=\"ColVis_radio\"><input type=\"checkbox\"/></span>'+\n\t\t\t'<span class=\"ColVis_title\">'+sTitle+'</span>' );\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\tvar showHide = !$('input', this).is(\":checked\");\n\t\t\tif ( e.target.nodeName.toLowerCase() == \"input\" )\n\t\t\t{\n\t\t\t\tshowHide = $('input', this).is(\":checked\");\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to consider the case where the initialiser created more than one table - change the\n\t\t\t * API index that DataTables is using\n\t\t\t */\n\t\t\tvar oldIndex = $.fn.dataTableExt.iApiIndex;\n\t\t\t$.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);\n\n\t\t\t// Optimisation for server-side processing when scrolling - don't do a full redraw\n\t\t\tif ( dt.oFeatures.bServerSide && (dt.oScroll.sX !== \"\" || dt.oScroll.sY !== \"\" ) )\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, showHide, false );\n\t\t\t\tthat.s.dt.oInstance.fnAdjustColumnSizing( false );\n\t\t\t\tthat.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt );\n\t\t\t\tthat._fnDrawCallback();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthat.s.dt.oInstance.fnSetColumnVis( i, showHide );\n\t\t\t}\n\n\t\t\t$.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */\n\t\t\t\n\t\t\tif ( that.s.fnStateChange !== null )\n\t\t\t{\n\t\t\t\tthat.s.fnStateChange.call( that, i, showHide );\n\t\t\t}\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Get the position in the DataTables instance array of the table for this instance of ColVis\n\t *  @method  _fnDataTablesApiIndex\n\t *  @returns {int} Index\n\t *  @private \n\t */\n\t\"_fnDataTablesApiIndex\": function ()\n\t{\n\t\tfor ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( this.s.dt.oInstance[i] == this.s.dt.nTable )\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM needed for the button and apply some base properties. All buttons start here\n\t *  @method  _fnDomBaseButton\n\t *  @param   {String} text Button text\n\t *  @returns {Node} DIV element for the button\n\t *  @private \n\t */\n\t\"_fnDomBaseButton\": function ( text )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tnButton = document.createElement('button'),\n\t\t\tnSpan = document.createElement('span'),\n\t\t\tsEvent = this.s.activate==\"mouseover\" ? \"mouseover\" : \"click\";\n\t\t\n\t\tnButton.className = !this.s.dt.bJUI ? \"ColVis_Button TableTools_Button\" :\n\t\t\t\"ColVis_Button TableTools_Button ui-button ui-state-default\";\n\t\tnButton.appendChild( nSpan );\n\t\tnSpan.innerHTML = text;\n\t\t\n\t\t$(nButton).bind( sEvent, function (e) {\n\t\t\tthat._fnCollectionShow();\n\t\t\te.preventDefault();\n\t\t} );\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the element used to contain list the columns (it is shown and hidden as needed)\n\t *  @method  _fnDomCollection\n\t *  @returns {Node} div container for the collection\n\t *  @private \n\t */\n\t\"_fnDomCollection\": function ()\n\t{\n\t\tvar that = this;\n\t\tvar nHidden = document.createElement('div');\n\t\tnHidden.style.display = \"none\";\n\t\tnHidden.className = !this.s.dt.bJUI ? \"ColVis_collection TableTools_collection\" :\n\t\t\t\"ColVis_collection TableTools_collection ui-buttonset ui-buttonset-multi\";\n\t\t\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.position = \"absolute\";\n\t\t}\n\t\t$(nHidden).css('opacity', 0);\n\t\t\n\t\treturn nHidden;\n\t},\n\t\n\t\n\t/**\n\t * An element to be placed on top of the activate button to catch events\n\t *  @method  _fnDomCatcher\n\t *  @returns {Node} div container for the collection\n\t *  @private \n\t */\n\t\"_fnDomCatcher\": function ()\n\t{\n\t\tvar \n\t\t\tthat = this,\n\t\t\tnCatcher = document.createElement('div');\n\t\tnCatcher.className = \"ColVis_catcher TableTools_catcher\";\n\t\t\n\t\t$(nCatcher).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t\t\n\t\treturn nCatcher;\n\t},\n\t\n\t\n\t/**\n\t * Create the element used to shade the background, and capture hide events (it is shown and \n\t * hidden as needed)\n\t *  @method  _fnDomBackground\n\t *  @returns {Node} div container for the background\n\t *  @private \n\t */\n\t\"_fnDomBackground\": function ()\n\t{\n\t\tvar that = this;\n\t\t\n\t\tvar nBackground = document.createElement('div');\n\t\tnBackground.style.position = \"absolute\";\n\t\tnBackground.style.left = \"0px\";\n\t\tnBackground.style.top = \"0px\";\n\t\tnBackground.className = \"ColVis_collectionBackground TableTools_collectionBackground\";\n\t\t$(nBackground).css('opacity', 0);\n\t\t\n\t\t$(nBackground).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t\t\n\t\t/* When considering a mouse over action for the activation, we also consider a mouse out\n\t\t * which is the same as a mouse over the background - without all the messing around of\n\t\t * bubbling events. Use the catcher element to avoid messing around with bubbling\n\t\t */\n\t\tif ( this.s.activate == \"mouseover\" )\n\t\t{\n\t\t\t$(nBackground).mouseover( function () {\n\t\t\t\tthat.s.overcollection = false;\n\t\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t\t} );\n\t\t}\n\t\t\n\t\treturn nBackground;\n\t},\n\t\n\t\n\t/**\n\t * Show the show / hide list and the background\n\t *  @method  _fnCollectionShow\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCollectionShow\": function ()\n\t{\n\t\tvar that = this, i, iLen;\n\t\tvar oPos = $(this.dom.button).offset();\n\t\tvar nHidden = this.dom.collection;\n\t\tvar nBackground = this.dom.background;\n\t\tvar iDivX = parseInt(oPos.left, 10);\n\t\tvar iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);\n\t\t\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.top = iDivY+\"px\";\n\t\t\tnHidden.style.left = iDivX+\"px\";\n\t\t}\n\t\tnHidden.style.display = \"block\";\n\t\t$(nHidden).css('opacity',0);\n\t\t\n\t\tvar iWinHeight = $(window).height(), iDocHeight = $(document).height(),\n\t\t \tiWinWidth = $(window).width(), iDocWidth = $(document).width();\n\t\t\n\t\tnBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +\"px\";\n\t\tnBackground.style.width = ((iWinWidth<iDocWidth)? iWinWidth : iDocWidth) +\"px\";\n\t\t\n\t\tvar oStyle = this.dom.catcher.style;\n\t\toStyle.height = $(this.dom.button).outerHeight()+\"px\";\n\t\toStyle.width = $(this.dom.button).outerWidth()+\"px\";\n\t\toStyle.top = oPos.top+\"px\";\n\t\toStyle.left = iDivX+\"px\";\n\t\t\n\t\tdocument.body.appendChild( nBackground );\n\t\tdocument.body.appendChild( nHidden );\n\t\tdocument.body.appendChild( this.dom.catcher );\n\t\t\n\t\t/* Resize the buttons */\n\t\tif ( this.s.sSize == \"auto\" )\n\t\t{\n\t\t\tvar aiSizes = [];\n\t\t\tthis.dom.collection.style.width = \"auto\";\n\t\t\tfor ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.buttons[i].style.width = \"auto\";\n\t\t\t\t\taiSizes.push( $(this.dom.buttons[i]).outerWidth() );\n\t\t\t\t}\n\t\t\t}\n\t\t\tiMax = Math.max.apply(window, aiSizes);\n\t\t\tfor ( i=0, iLen=this.dom.buttons.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.buttons[i] !== null )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.buttons[i].style.width = iMax+\"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.dom.collection.style.width = iMax+\"px\";\n\t\t}\n\t\t\n\t\t/* Visual corrections to try and keep the collection visible */\n\t\tif ( !this.s.bCssPosition )\n\t\t{\n\t\t\tnHidden.style.left = this.s.sAlign==\"left\" ?\n\t\t\t\tiDivX+\"px\" : (iDivX-$(nHidden).outerWidth()+$(this.dom.button).outerWidth())+\"px\";\n\n\t\t\tvar iDivWidth = $(nHidden).outerWidth();\n\t\t\tvar iDivHeight = $(nHidden).outerHeight();\n\t\t\t\n\t\t\tif ( iDivX + iDivWidth > iDocWidth )\n\t\t\t{\n\t\t\t\tnHidden.style.left = (iDocWidth-iDivWidth)+\"px\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* This results in a very small delay for the end user but it allows the animation to be\n\t\t * much smoother. If you don't want the animation, then the setTimeout can be removed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\t$(nHidden).animate({\"opacity\": 1}, that.s.iOverlayFade);\n\t\t\t$(nBackground).animate({\"opacity\": 0.1}, that.s.iOverlayFade, 'linear', function () {\n\t\t\t\t/* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually\n\t\t\t\t * reflected. As such, we need to do it here, once it is visible. Unbelievable.\n\t\t\t\t */\n\t\t\t\tif ( jQuery.browser.msie && jQuery.browser.version == \"6.0\" )\n\t\t\t\t{\n\t\t\t\t\tthat._fnDrawCallback();\n\t\t\t\t}\n\t\t\t});\n\t\t}, 10 );\n\t\t\n\t\tthis.s.hidden = false;\n\t},\n\t\n\t\n\t/**\n\t * Hide the show / hide list and the background\n\t *  @method  _fnCollectionHide\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCollectionHide\": function (  )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( !this.s.hidden && this.dom.collection !== null )\n\t\t{\n\t\t\tthis.s.hidden = true;\n\t\t\t\n\t\t\t$(this.dom.collection).animate({\"opacity\": 0}, that.s.iOverlayFade, function (e) {\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t} );\n\t\t\t\n\t\t\t$(this.dom.background).animate({\"opacity\": 0}, that.s.iOverlayFade, function (e) {\n\t\t\t\tdocument.body.removeChild( that.dom.background );\n\t\t\t\tdocument.body.removeChild( that.dom.catcher );\n\t\t\t} );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Alter the colspan on any fnOpen rows\n\t */\n\t\"_fnAdjustOpenRows\": function ()\n\t{\n\t\tvar aoOpen = this.s.dt.aoOpenRows;\n\t\tvar iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt );\n\t\t\n\t\tfor ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) {\n\t\t\taoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static object methods\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Rebuild the collection for a given table, or all tables if no parameter given\n *  @method  ColVis.fnRebuild\n *  @static\n *  @param   object oTable DataTable instance to consider - optional\n *  @returns void\n */\nColVis.fnRebuild = function ( oTable )\n{\n\tvar nTable = null;\n\tif ( typeof oTable != 'undefined' )\n\t{\n\t\tnTable = oTable.fnSettings().nTable;\n\t}\n\t\n\tfor ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable )\n\t\t{\n\t\t\tColVis.aInstances[i].fnRebuild();\n\t\t}\n\t}\n};\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static object properties\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Collection of all ColVis instances\n *  @property ColVis.aInstances\n *  @static\n *  @type     Array\n *  @default  []\n */\nColVis.aInstances = [];\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type     String\n *  @default  ColVis\n */\nColVis.prototype.CLASS = \"ColVis\";\n\n\n/**\n * ColVis version\n *  @constant  VERSION\n *  @type      String\n *  @default   See code\n */\nColVis.VERSION = \"1.0.8\";\nColVis.prototype.VERSION = ColVis.VERSION;\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.7.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar init = (typeof oDTSettings.oInit.oColVis == 'undefined') ?\n\t\t\t\t{} : oDTSettings.oInit.oColVis;\n\t\t\tvar oColvis = new ColVis( oDTSettings, init );\n\t\t\treturn oColvis.dom.wrapper;\n\t\t},\n\t\t\"cFeature\": \"C\",\n\t\t\"sFeature\": \"ColVis\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download\");\n}\n\n})(jQuery);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/mouseover.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"activate\": \"mouseover\"\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - mouse over activation\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>The default activation (showing the columns list) for ColVis is for the user to click\n\t\t\t\tthe button. This can be altered to a 'mouseover' activation by making use of the\n\t\t\t\toColVis.activate DataTables initialisation value and setting it to \"mouseover\". This is\n\t\t\t\tshown in the example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"activate\": \"mouseover\"\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/style.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColVisAlt.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": '<\"H\"fr>tC<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true,\n\t\t\t\t\t\"bPaginate\": false,\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"bScrollCollapse\": true,\n\t\t\t\t\t\"bScrollAutoCss\": false,\n\t\t\t\t\t\"aoColumnDefs\": [\n\t\t\t\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t\t\t\t],\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"buttonText\": \"&nbsp;\",\n\t\t\t\t\t\t\"bRestore\": true,\n\t\t\t\t\t\t\"sAlign\": \"right\"\n\t\t\t\t\t},\n\t\t\t\t\t\"fnDrawCallback\": function (o) {\n\t\t\t\t\t\t/* Position the ColVis button as needed */\n\t\t\t\t\t\tvar nColVis = $('div.ColVis', o.nTableWrapper)[0];\n\t\t\t\t\t\tnColVis.style.width = o.oScroll.iBarWidth+\"px\";\n\t\t\t\t\t\tnColVis.style.top = ($('div.dataTables_scroll', o.nTableWrapper).position().top)+\"px\";\n\t\t\t\t\t\tnColVis.style.height = ($('div.dataTables_scrollHead table', o.nTableWrapper).height())+\"px\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example with alternative styling\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This demo of ColVis shows a number of different features of the plug-in. Firstly, it shows alternative styling of the plug-in with the button nested just above the scrollbar in the DataTable. Secondly there is a \"Restore\" button in the ColVis drop down, which will restore the original visibility settings when the table was initialised (this is controlled by using the \"bRestore\" option). Finally it shows that the drop down can be set to align on the right of the button, rather than the left.</p>\n\t\t\t<p>Note that this demo requires DataTables 1.7.5 or later.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": '&lt;\"H\"fr&gt;tC&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true,\n\t\t\"bPaginate\": false,\n\t\t\"sScrollY\": \"200px\",\n\t\t\"bScrollCollapse\": true,\n\t\t\"bScrollAutoCss\": false,\n\t\t\"aoColumnDefs\": [\n\t\t\t{ \"bVisible\": false, \"aTargets\": [ 2 ] }\n\t\t],\n\t\t\"oColVis\": {\n\t\t\t\"buttonText\": \"&amp;nbsp;\",\n\t\t\t\"bRestore\": true,\n\t\t\t\"sAlign\": \"left\"\n\t\t},\n\t\t\"fnDrawCallback\": function (o) {\n\t\t\t/* Position the ColVis button as needed */\n\t\t\tvar nColVis = $('div.ColVis', o.nTableWrapper)[0];\n\t\t\tnColVis.style.width = o.oScroll.iBarWidth+\"px\";\n\t\t\tnColVis.style.top = ($('div.dataTables_scroll', o.nTableWrapper).position().top)+\"px\";\n\t\t\tnColVis.style.height = ($('div.dataTables_scrollHead table', o.nTableWrapper).height())+\"px\";\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/text.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t\t\"buttonText\": \"Change columns\"\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - custom text\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>You may wish to use your own text in the ColVis button - this is done by making use of\n\t\t\t\tthe oColVis.buttonText DataTables initialisation parameter, as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t\t\"buttonText\": \"Change columns\"\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/theme.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table_jui.css\";\n\t\t\t@import \"../../examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t\t.ColVis {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-bottom: 0\n\t\t\t}\n\t\t\t.dataTables_length {\n\t\t\t\twidth: auto;\n\t\t\t}\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": '<\"H\"Cfr>t<\"F\"ip>',\n\t\t\t\t\t\"bJQueryUI\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example with jQuery theming\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>ColVis will automatically add the classes required for theming with jQuery UI ThemeRoller\n\t\t\t\twhen enabled in DataTables. This example also shows a slightly altered position for the\n\t\t\t\tColVis button from the other example, in that it is included in the table toolbar. This\n\t\t\t\tis achieved by simply moving the 'C' character in sDom.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": '&lt;\"H\"Cfr&gt;t&lt;\"F\"ip&gt;',\n\t\t\"bJQueryUI\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/title_callback.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip',\n\t\t\t\t\t\"oColVis\": {\n\t\t\t\t\t  \"fnLabel\": function ( index, title, th ) {\n\t\t\t\t\t    return (index+1) +'. '+ title;\n\t\t\t\t\t  }\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>By default ColVis will use the information in the TH cell for each column as the button name to use in ColVis, which might not always be what you want (for example you might has HTML in the cell that you don't want in the button). The <i>fnLabel</i> callback provides the ability to customise the label used for the button. In this example the column index is prefixed to the column title.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('#example').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip',\n\t\t\"oColVis\": {\n\t\t  \"fnLabel\": function ( index, title, th ) {\n\t\t    return (index+1) +'. '+ title;\n\t\t  }\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\t$('table').dataTable( {\n\t\t\t\t\t\"sDom\": 'C<\"clear\">lfrtip'\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - two tables with individual controls\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>It can be useful to have DataTables initialise more than one table with a single call can for them to each have individual ColVis controllers. All this requires is a suitable jQuery selector to be used, and DataTables and ColVis will take care of the rest - as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example2\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\t$('table').dataTable( {\n\t\t\"sDom\": 'C&lt;\"clear\"&gt;lfrtip'\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/ColVis/two_tables_identical.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>ColVis example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/ColVis.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"media/js/ColVis.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTables = $('table').dataTable( {\n\t\t\t\t\t\"sDom\": 'lfrtip'\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tvar oColVis = new ColVis( oTables.fnSettings(), {\n\t\t\t\t\t\"fnStateChange\": function ( iColumn, bVisible ) {\n\t\t\t\t\t\tvar jqTables = $('table:not(#example)'); // ColVis will do #example\n\t\t\t\t\t\tfor ( var i=0, iLen=jqTables.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t$(jqTables[i]).dataTable().fnSetColumnVis( iColumn, bVisible );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tdocument.getElementById('buttonInsert').appendChild(oColVis.dom.wrapper);\n\t\t\t\toColVis.fnRebuild();\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tColVis example - two tables with shared control\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows how the API that ColVis presents can be used to control the column visibility of two tables with a single instance of ColVis. The result is that changing a button state will effect all tables on the page. This can be useful when looking at multiple tables which have the same column structure.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<form>\n\t\t\t<div id=\"demo\">\n<div id=\"buttonInsert\">\n\t\n</div>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+ (Entity: &amp;)</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example2\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n\t<tbody>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko (UTF-8: $¢€)</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"odd_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"even_gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t</form>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic initialisation</a></li>\n\t\t\t\t<li><a href=\"mouseover.html\">Activate with a mouseover rather than click</a></li>\n\t\t\t\t<li><a href=\"text.html\">Custom text in the button</a></li>\n\t\t\t\t<li><a href=\"theme.html\">Using with jQuery UI ThemeRoller</a></li>\n\t\t\t\t<li><a href=\"exclude_columns.html\">Excluding columns from the show / hide list</a></li>\n\t\t\t\t<li><a href=\"two_tables.html\">Two tables initialised together - individual controls</a></li>\n\t\t\t\t<li><a href=\"two_tables_identical.html\">Two tables initialised together - shared control</a></li>\n\t\t\t\t<li><a href=\"style.html\">Alternative styling and reset to original</a></li>\n\t\t\t\t<li><a href=\"title_callback.html\">Customisation of the button label with a callback</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTables = $('table').dataTable( {\n\t\t\"sDom\": 'lfrtip'\n\t} );\n\t\n\tvar oColVis = new ColVis( oTables.fnSettings() );\n\t$(oColVis).bind('stateChange', function (e, data) {\n\t\tvar jqTables = $('table:not(#example)');\n\t\tfor ( var i=0, iLen=jqTables.length ; i&lt;iLen ; i++ ) {\n\t\t\t$(jqTables[i]).dataTable().fnSetColumnVis( data.iColumn, data.bVisible );\n\t\t}\n\t} );\n\t\n\tdocument.getElementById('buttonInsert').appendChild(oColVis.dom.wrapper);\n\toColVis.fnRebuild();\n} );</pre>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tColVis and DataTables &copy; Allan Jardine 2009-2010\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTable / DataTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable();\n\t\t\t\t\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example'),\n\t\t\t\t\t\"datatable\": oTable\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable with DataTables integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>KeyTable will work great with any plain HTML table, but it also integrates with <a href=\"http://www.datatables.net/\">DataTables</a> plug-in for jQuery. This allows the navigation to take account of paging, sorting etc. This is shown in an example below.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable();\n\t\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example'),\n\t\t\"datatable\": oTable\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/datatable_scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTable / DataTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": 200,\n\t\t\t\t\t\"sScrollX\": \"100%\",\n\t\t\t\t\t\"sScrollXInner\": \"110%\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example'),\n\t\t\t\t\t\"datatable\": oTable\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable with DataTables (when using scrolling) integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>A new feature in DataTables 1.7 is the ability to have the table body scroll in the x and y dimensions. KeyTable supports this capability of DataTables \"out of the box\" (no extra initialisation is needed), as shown in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet\n\t\t\t\t Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": 200,\n\t\t\"sScrollX\": \"100%\",\n\t\t\"sScrollXInner\": \"110%\"\n\t} );\n\t\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example'),\n\t\t\"datatable\": oTable\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/editing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\" />\n\t\t\n\t\t<title>KeyTables editing example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../examples/examples_support/jquery.jeditable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"table\": document.getElementById('example')\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Apply a return key event to each cell in the table */\n\t\t\t\tkeys.event.action( null, null, function (nCell) {\n\t\t\t\t\t/* Block KeyTable from performing any events while jEditable is in edit mode */\n\t\t\t\t\tkeys.block = true;\n\t\t\t\t\t\n\t\t\t\t\t/* Initialise the Editable instance for this table */\n\t\t\t\t\t$(nCell).editable( function (sVal) {\n\t\t\t\t\t\t/* Submit function (local only) - unblock KeyTable */\n\t\t\t\t\t\tkeys.block = false;\n\t\t\t\t\t\t$(nCell).editable('destroy');\n\t\t\t\t\t\treturn sVal;\n\t\t\t\t\t}, { \n\t\t\t\t\t\t\"onblur\": 'submit', \n\t\t\t\t\t\t\"onreset\": function(){ \n\t\t\t\t\t\t\t/* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise\n\t\t\t\t\t\t\t * it will 'esc' KeyTable as well\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t$(nCell).editable('destroy');\n\t\t\t\t\t\t\tsetTimeout( function () {keys.block = false;}, 0); \n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\t\n\t\t\t\t\t/* Dispatch click event to go into edit mode - Saf 4 needs a timeout... */\n\t\t\t\t\tsetTimeout( function () { $(nCell).click(); }, 0 );\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable editing example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Possibly one of the most obvious applications of KeyTable is using it to navigate around a table, allowing a user to edit data as they go. This is an example of how that might be done through integration with the excellent <a href=\"http://www.appelsiini.net/projects/jeditable\">jEditable</a> plug-in for jQuery.</p>\n\t\t\t<p>To edit data in the table, simply navigate to where you want to edit using the arrow keys, hit return and they make your edit. Hit return again to complete and submit the edit (note this example doesn't actually send the data to the server!) and then continue navigating.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</tfoot>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar keys = new KeyTable( {\n\t\t\"table\": document.getElementById('example')\n\t} );\n\t\n\t/* Apply a return key event to each cell in the table */\n\tkeys.event.action( null, null, function (nCell) {\n\t\t/* Block KeyTable from performing any events while jEditable is in edit mode */\n\t\tkeys.block = true;\n\t\t\n\t\t/* Initialise the Editable instance for this table */\n\t\t$(nCell).editable( function (sVal) {\n\t\t\t/* Submit function (local only) - unblock KeyTable */\n\t\t\tkeys.block = false;\n\t\t\treturn sVal;\n\t\t}, { \n\t\t\t\"onblur\": 'submit', \n\t\t\t\"onreset\": function(){ \n\t\t\t\t/* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise\n\t\t\t\t * it will 'esc' KeyTable as well\n\t\t\t\t */\n\t\t\t\tsetTimeout( function () {keys.block = false;}, 0); \n\t\t\t}\n\t\t} );\n\t\t\n\t\t/* Dispatch click event to go into edit mode - Saf 4 needs a timeout... */\n\t\tsetTimeout( function () { $(nCell).click(); }, 0 );\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/form.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>KeyTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable( {\n\t\t\t\t\t\"form\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable form integration example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>One of possible use of KeyTable is to use a table as a form element (for example a calendar date selector). For this you want to be table to tab into and out of the table, as you would do with any other form element on the page.</p>\n\t\t\t<p>The example shown below as a small table as it's third input element, and you can tab between input fields. When the 'focus' reaches the end of the table, hitting tab will take you into the next field.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t\n\t\t\t<!-- bad use of a table! quick example of form though -->\n\t\t\t<table cellspacing=\"10\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 1:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input1\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 2:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input2\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 3:</td>\n\t\t\t\t\t<td>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 4:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input4\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Input 5:</td>\n\t\t\t\t\t<td><input type=\"text\" id=\"input5\"></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready( function () {\n\tvar keys = new KeyTable( {\n\t\t\"form\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.sprymedia.co.uk/media/images/favicon.ico\">\n\t\t\n\t\t<title>KeyTables example</title>\n\t\t<style type=\"text/css\" title=\"currentStyle\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"js/KeyTable.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\tfunction fnMessage ( sMesg )\n\t\t\t{\n\t\t\t\tvar n = document.getElementById('info');\n\t\t\t\tn.innerHTML += sMesg+\"<br>\";\n\t\t\t\tn.scrollTop = n.scrollHeight;\n\t\t\t}\n\t\t\t\n\t\t\t$(document).ready( function () {\n\t\t\t\tvar keys = new KeyTable();\n\t\t\t\t\n\t\t\t\t/* Focus handler for all cells in last column */\n\t\t\t\tkeys.event.focus( 4, null, function( nNode, x, y ) {\n\t\t\t\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - column)\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Focus handler for all cells in 8th row */\n\t\t\t\tkeys.event.focus( null, 7, function( nNode, x, y ) {\n\t\t\t\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - row)\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Focus using coords. */\n\t\t\t\tkeys.event.focus( 1, 0, function( nNode ) {\n\t\t\t\t\tkeys.event.remove.focus( nNode );\n\t\t\t\t\tfnMessage( \"Cell 1,0 focus - this event has now been removed\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tkeys.event.focus( 1, 3, function() {\n\t\t\t\t\tfnMessage( \"Cell 1,3 focus\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* focus with a node */\n\t\t\t\tkeys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {\n\t\t\t\t\tfnMessage( \"Cell 0,2 focus\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Blur using a node */\n\t\t\t\tkeys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {\n\t\t\t\t\tfnMessage( \"Cell 1,2 blur\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Blur using coords */\n\t\t\t\tkeys.event.blur( 2, 4, function() {\n\t\t\t\t\tfnMessage( \"Cell 2,4 blur\" );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Action */\n\t\t\t\tkeys.event.action( 2, 2, function( nNode ) {\n\t\t\t\t\tfnMessage( \"Cell 2,2 action\" );\n\t\t\t\t\tif ( nNode.style.fontWeight == \"\" || nNode.style.fontWeight == \"normal\" ) {\n\t\t\t\t\t\tnNode.style.fontWeight = \"bold\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnNode.style.fontWeight = \"normal\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\tkeys.event.action( 2, 5, function( nNode ) {\n\t\t\t\t\tfnMessage( \"Cell 2,5 action\" );\n\t\t\t\t\tif ( nNode.style.fontStyle == \"\" ) {\n\t\t\t\t\t\tnNode.style.fontStyle = \"italic\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnNode.style.fontStyle = \"\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tKeyTable example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>KeyTable allows you to use keyboard navigation on an HTML table. The focused cell is shown through the CSS class ('focus') which in the case below is simply a blue border. Events such as 'focus', 'blur', 'esc' (the escape key) and 'return' (the return key) can be assigned event handling functions thought the API presented.</p>\n\t\t\t<p>The example shown below has a few cells (selected at random, but near the top) with blur and focus events assigned to them. You can also see the navigation around the table using arrow keys.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"info\" class=\"box\">\n\t\t\t\tEvent information:<br>\n\t\t\t</div>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display KeyTable\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Rendering engine</th>\n\t\t\t<th>Browser</th>\n\t\t\t<th>Platform(s)</th>\n\t\t\t<th>Engine version</th>\n\t\t\t<th>CSS grade</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 4.0 (focus once)</td>\n\t\t\t<td>Win 95+</td>\n\t\t\t<td class=\"center\">4</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 5.0</td>\n\t\t\t<td>Win 95+ (blur)</td>\n\t\t\t<td class=\"center\">5</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident (focus)</td>\n\t\t\t<td>Internet Explorer 5.5</td>\n\t\t\t<td>Win 95+ (action/bold)</td>\n\t\t\t<td class=\"center\">5.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 6 (focus)</td>\n\t\t\t<td>Win 98+</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>Internet Explorer 7</td>\n\t\t\t<td>Win XP SP2+ (blur)</td>\n\t\t\t<td class=\"center\">7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Trident</td>\n\t\t\t<td>AOL browser (AOL desktop)</td>\n\t\t\t<td>Win XP (action/italic)</td>\n\t\t\t<td class=\"center\">6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 1.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko (focus - row)</td>\n\t\t\t<td>Firefox 1.5</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 2.0</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Firefox 3.0</td>\n\t\t\t<td>Win 2k+ / OSX.3+</td>\n\t\t\t<td class=\"center\">1.9</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.0</td>\n\t\t\t<td>OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Camino 1.5</td>\n\t\t\t<td>OSX.3+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape 7.2</td>\n\t\t\t<td>Win 95+ / Mac OS 8.6-9.2</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Browser 8</td>\n\t\t\t<td>Win 98SE+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Netscape Navigator 9</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.1</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.2</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.2</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.3</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.4</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.4</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.5</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.6</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.6</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.7</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.7</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Mozilla 1.8</td>\n\t\t\t<td>Win 98+ / OSX.1+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Seamonkey 1.1</td>\n\t\t\t<td>Win 98+ / OSX.2+</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Gecko</td>\n\t\t\t<td>Epiphany 2.20</td>\n\t\t\t<td>Gnome</td>\n\t\t\t<td class=\"center\">1.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.2</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">125.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 1.3</td>\n\t\t\t<td>OSX.3</td>\n\t\t\t<td class=\"center\">312.8</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 2.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">419.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>Safari 3.0</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">522.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>OmniWeb 5.5</td>\n\t\t\t<td>OSX.4+</td>\n\t\t\t<td class=\"center\">420</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>iPod Touch / iPhone</td>\n\t\t\t<td>iPod</td>\n\t\t\t<td class=\"center\">420.1</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Webkit</td>\n\t\t\t<td>S60</td>\n\t\t\t<td>S60</td>\n\t\t\t<td class=\"center\">413</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.0</td>\n\t\t\t<td>Win 95+ / OSX.1+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 7.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.0</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 8.5</td>\n\t\t\t<td>Win 95+ / OSX.2+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.0</td>\n\t\t\t<td>Win 95+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.2</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera 9.5</td>\n\t\t\t<td>Win 88+ / OSX.3+</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Opera for Wii</td>\n\t\t\t<td>Wii</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nokia N800</td>\n\t\t\t<td>N800</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Presto</td>\n\t\t\t<td>Nintendo DS browser</td>\n\t\t\t<td>Nintendo DS</td>\n\t\t\t<td class=\"center\">8.5</td>\n\t\t\t<td class=\"center\">C/A<sup>1</sup></td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.1</td>\n\t\t\t<td>KDE 3.1</td>\n\t\t\t<td class=\"center\">3.1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.3</td>\n\t\t\t<td>KDE 3.3</td>\n\t\t\t<td class=\"center\">3.3</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>KHTML</td>\n\t\t\t<td>Konqureror 3.5</td>\n\t\t\t<td>KDE 3.5</td>\n\t\t\t<td class=\"center\">3.5</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 4.5</td>\n\t\t\t<td>Mac OS 8-9</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.1</td>\n\t\t\t<td>Mac OS 7.6-9</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Tasman</td>\n\t\t\t<td>Internet Explorer 5.2</td>\n\t\t\t<td>Mac OS 8-X</td>\n\t\t\t<td class=\"center\">1</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.1</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeA\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>NetFront 3.4</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">A</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Dillo 0.8</td>\n\t\t\t<td>Embedded devices</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Links</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeX\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>Lynx</td>\n\t\t\t<td>Text only</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">X</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>IE Mobile</td>\n\t\t\t<td>Windows Mobile 6</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeC\">\n\t\t\t<td>Misc</td>\n\t\t\t<td>PSP browser</td>\n\t\t\t<td>PSP</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">C</td>\n\t\t</tr>\n\t\t<tr class=\"gradeU\">\n\t\t\t<td>Other browsers</td>\n\t\t\t<td>All others</td>\n\t\t\t<td>-</td>\n\t\t\t<td class=\"center\">-</td>\n\t\t\t<td class=\"center\">U</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>function fnMessage ( sMesg )\n{\n\tvar n = document.getElementById('info');\n\tn.innerHTML += sMesg+\"&lt;br&gt;\";\n\tn.scrollTop = n.scrollHeight;\n}\n\n$(document).ready( function () {\n\tvar keys = new KeyTable();\n\t\n\t/* Focus handler for all cells in last column */\n\tkeys.event.focus( 4, null, function( nNode, x, y ) {\n\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - column)\" );\n\t} );\n\t\n\t/* Focus handler for all cells in 8th row */\n\tkeys.event.focus( null, 7, function( nNode, x, y ) {\n\t\tfnMessage( \"Cell \"+x+\",\"+y+\" focused ('live' event - row)\" );\n\t} );\n\t\n\t/* Focus using coords. */\n\tkeys.event.focus( 1, 0, function( nNode ) {\n\t\tkeys.event.remove.focus( nNode );\n\t\tfnMessage( \"Cell 1,0 focus - this event has now been removed\" );\n\t} );\n\t\n\tkeys.event.focus( 1, 3, function() {\n\t\tfnMessage( \"Cell 1,3 focus\" );\n\t} );\n\t\n\t/* focus with a node */\n\tkeys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() {\n\t\tfnMessage( \"Cell 0,2 focus\" );\n\t} );\n\t\n\t/* Blur using a node */\n\tkeys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() {\n\t\tfnMessage( \"Cell 1,2 blur\" );\n\t} );\n\t\n\t/* Blur using coords */\n\tkeys.event.blur( 2, 4, function() {\n\t\tfnMessage( \"Cell 2,4 blur\" );\n\t} );\n\t\n\t/* Action */\n\tkeys.event.action( 2, 2, function( nNode ) {\n\t\tfnMessage( \"Cell 2,2 action\" );\n\t\tif ( nNode.style.fontWeight == \"\" || nNode.style.fontWeight == \"normal\" ) {\n\t\t\tnNode.style.fontWeight = \"bold\";\n\t\t} else {\n\t\t\tnNode.style.fontWeight = \"normal\";\n\t\t}\n\t} );\n\t\n\tkeys.event.action( 2, 5, function( nNode ) {\n\t\tfnMessage( \"Cell 2,5 action\" );\n\t\tif ( nNode.style.fontStyle == \"\" ) {\n\t\t\tnNode.style.fontStyle = \"italic\";\n\t\t} else {\n\t\t\tnNode.style.fontStyle = \"\";\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"index.html\">Basic usage</a></li>\n\t\t\t\t<li><a href=\"editing.html\">Editing a table</a></li>\n\t\t\t\t<li><a href=\"form.html\">Integration with an HTML form</a></li>\n\t\t\t\t<li><a href=\"datatable.html\">Integration with DataTables</a></li>\n\t\t\t\t<li><a href=\"datatable_scrolling.html\">Using KeyTable with scrolling in DataTables</a></li>\n\t\t\t</ul>\n\t\t\t\n\t\t\t<div id=\"footer\" style=\"text-align:center;\">\n\t\t\t\t<span style=\"font-size:10px;\">\n\t\t\t\t\tKeyTable &copy; Allan Jardine 2009.<br>\n\t\t\t\t\tInformation in the table &copy; <a href=\"http://www.u4eatech.com\">U4EA Technologies</a> 2007-2009.</span>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/KeyTable/js/KeyTable.js",
    "content": "/*\n * File:        KeyTable.js\n * Version:     1.1.7\n * CVS:         $Idj$\n * Description: Keyboard navigation for HTML tables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Created:     Fri Mar 13 21:24:02 GMT 2009\n * Modified:    $Date$ by $Author$\n * Language:    Javascript\n * License:     GPL v2 or BSD 3 point style\n * Project:     Just a little bit of fun :-)\n * Contact:     www.sprymedia.co.uk/contact\n * \n * Copyright 2009-2011 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n\nfunction KeyTable ( oInit )\n{\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * API parameters\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Variable: block\n\t * Purpose:  Flag whether or not KeyTable events should be processed\n\t * Scope:    KeyTable - public\n\t */\n\tthis.block = false;\n\t\n\t/*\n\t * Variable: event\n\t * Purpose:  Container for all event application methods\n\t * Scope:    KeyTable - public\n\t * Notes:    This object contains all the public methods for adding and removing events - these\n\t *           are dynamically added later on\n\t */\n\tthis.event = {\n\t\t\"remove\": {}\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * API methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Function: fnGetCurrentPosition\n\t * Purpose:  Get the currently focused cell's position\n\t * Returns:  array int: [ x, y ]\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentPosition = function ()\n\t{\n\t\treturn [ _iOldX, _iOldY ];\n\t};\n\t\n\t\n\t/*\n\t * Function: fnGetCurrentData\n\t * Purpose:  Get the currently focused cell's data (innerHTML)\n\t * Returns:  string: - data requested\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentData = function ()\n\t{\n\t\treturn _nOldFocus.innerHTML;\n\t};\n\t\n\t\n\t/*\n\t * Function: fnGetCurrentTD\n\t * Purpose:  Get the currently focused cell\n\t * Returns:  node: - focused element\n\t * Inputs:   void\n\t */\n\tthis.fnGetCurrentTD = function ()\n\t{\n\t\treturn _nOldFocus;\n\t};\n\t\n\t\n\t/*\n\t * Function: fnSetPosition\n\t * Purpose:  Set the position of the focused cell\n\t * Returns:  -\n\t * Inputs:   int:x - x coordinate\n\t *           int:y - y coordinate\n\t * Notes:    Thanks to Rohan Daxini for the basis of this function\n\t */\n\tthis.fnSetPosition = function( x, y )\n\t{\n\t\tif ( typeof x == 'object' && x.nodeName )\n\t\t{\n\t\t\t_fnSetFocus( x );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnSetFocus( _fnCellFromCoords(x, y) );\n\t\t}\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private parameters\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/*\n\t * Variable: _nBody\n\t * Purpose:  Body node of the table - cached for renference\n\t * Scope:    KeyTable - private\n\t */\n\tvar _nBody = null;\n\t\n\t/*\n\t * Variable: \n\t * Purpose:  \n\t * Scope:    KeyTable - private\n\t */\n\tvar _nOldFocus = null;\n\t\n\t/*\n\t * Variable: _iOldX and _iOldY\n\t * Purpose:  X and Y coords of the old elemet that was focused on\n\t * Scope:    KeyTable - private\n\t */\n\tvar _iOldX = null;\n\tvar _iOldY = null;\n\t\n\t/*\n\t * Variable: _that\n\t * Purpose:  Scope saving for 'this' after a jQuery event\n\t * Scope:    KeyTable - private\n\t */\n\tvar _that = null;\n\t\n\t/*\n\t * Variable: sFocusClass\n\t * Purpose:  Class that should be used for focusing on a cell\n\t * Scope:    KeyTable - private\n\t */\n\tvar _sFocusClass = \"focus\";\n\t\n\t/*\n\t * Variable: _bKeyCapture\n\t * Purpose:  Flag for should KeyTable capture key events or not\n\t * Scope:    KeyTable - private\n\t */\n\tvar _bKeyCapture = false;\n\t\n\t/*\n\t * Variable: _oaoEvents\n\t * Purpose:  Event cache object, one array for each supported event for speed of searching\n\t * Scope:    KeyTable - private\n\t */\n\tvar _oaoEvents = {\n\t\t\"action\": [],\n\t\t\"esc\": [],\n\t\t\"focus\": [],\n\t\t\"blur\": []\n\t};\n\t\n\t/*\n\t * Variable: _oDatatable\n\t * Purpose:  DataTables object for if we are actually using a DataTables table\n\t * Scope:    KeyTable - private\n\t */\n\tvar _oDatatable = null;\n\t\n\tvar _bForm;\n\tvar _nInput;\n\tvar _bInputFocused = false;\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Key table events\n\t */\n\t\n\t/*\n\t * Function: _fnEventAddTemplate\n\t * Purpose:  Create a function (with closure for sKey) event addition API\n\t * Returns:  function: - template function\n\t * Inputs:   string:sKey - type of event to detect\n\t */\n\tfunction _fnEventAddTemplate( sKey )\n\t{\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  API function for adding event to cache\n\t\t * Returns:  -\n\t\t * Inputs:   1. node:x - target node to add event for\n\t\t *           2. function:y - callback function to apply\n\t\t *         or\n\t\t *           1. int:x - x coord. of target cell (can be null for live events)\n\t\t *           2. int:y - y coord. of target cell (can be null for live events)\n\t\t *           3. function:z - callback function to apply\n\t\t * Notes:    This function is (interally) overloaded (in as much as javascript allows for\n\t\t *           that) - the target cell can be given by either node or coords.\n\t\t */\n\t\treturn function ( x, y, z ) {\n\t\t\tif ( (x===null || typeof x == \"number\") && \n\t\t\t     (y===null || typeof y == \"number\") && \n\t\t\t     typeof z == \"function\" )\n\t\t\t{\n\t\t\t\t_fnEventAdd( sKey, x, y, z );\n\t\t\t}\n\t\t\telse if ( typeof x == \"object\" && typeof y == \"function\" )\n\t\t\t{\n\t\t\t\tvar aCoords = _fnCoordsFromCell( x );\n\t\t\t\t_fnEventAdd( sKey, aCoords[0], aCoords[1], y );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talert( \"Unhandable event type was added: x\" +x+ \"  y:\" +y+ \"  z:\" +z );\n\t\t\t}\n\t\t};\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventRemoveTemplate\n\t * Purpose:  Create a function (with closure for sKey) event removal API\n\t * Returns:  function: - template function\n\t * Inputs:   string:sKey - type of event to detect\n\t */\n\tfunction _fnEventRemoveTemplate( sKey )\n\t{\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  API function for removing event from cache\n\t\t * Returns:  int: - number of events removed\n\t\t * Inputs:   1. node:x - target node to remove event from\n\t\t *           2. function:y - callback function to apply\n\t\t *         or\n\t\t *           1. int:x - x coord. of target cell (can be null for live events)\n\t\t *           2. int:y - y coord. of target cell (can be null for live events)\n\t\t *           3. function:z - callback function to remove - optional\n\t\t * Notes:    This function is (interally) overloaded (in as much as javascript allows for\n\t\t *           that) - the target cell can be given by either node or coords and the function\n\t\t *           to remove is optional\n\t\t */\n\t\treturn function ( x, y, z ) {\n\t\t\tif ( (x===null || typeof arguments[0] == \"number\") && \n\t\t\t     (y===null || typeof arguments[1] == \"number\" ) )\n\t\t\t{\n\t\t\t\tif ( typeof arguments[2] == \"function\" )\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, x, y, z );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, x, y );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( typeof arguments[0] == \"object\" )\n\t\t\t{\n\t\t\t\tvar aCoords = _fnCoordsFromCell( x );\n\t\t\t\tif ( typeof arguments[1] == \"function\" )\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, aCoords[0], aCoords[1], y );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnEventRemove( sKey, aCoords[0], aCoords[1] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talert( \"Unhandable event type was removed: x\" +x+ \"  y:\" +y+ \"  z:\" +z );\n\t\t\t}\n\t\t};\n\t}\n\t\n\t/* Use the template functions to add the event API functions */\n\tfor ( var sKey in _oaoEvents )\n\t{\n\t\tif ( sKey )\n\t\t{\n\t\t\tthis.event[sKey] = _fnEventAddTemplate( sKey );\n\t\t\tthis.event.remove[sKey] = _fnEventRemoveTemplate( sKey );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventAdd\n\t * Purpose:  Add an event to the internal cache\n\t * Returns:  -\n\t * Inputs:   string:sType - type of event to add, given by the available elements in _oaoEvents\n\t *           int:x - x-coords to add event to - can be null for \"blanket\" event\n\t *           int:y - y-coords to add event to - can be null for \"blanket\" event\n\t *           function:fn - callback function for when triggered\n\t */\n\tfunction _fnEventAdd( sType, x, y, fn )\n\t{\n\t\t_oaoEvents[sType].push( {\n\t\t\t\"x\": x,\n\t\t\t\"y\": y,\n\t\t\t\"fn\": fn\n\t\t} );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventRemove\n\t * Purpose:  Remove an event from the event cache\n\t * Returns:  int: - number of matching events removed\n\t * Inputs:   string:sType - type of event to look for\n\t *           node:nTarget - target table cell\n\t *           function:fn - optional - remove this function. If not given all handlers of this\n\t *             type will be removed\n\t */\n\tfunction _fnEventRemove( sType, x, y, fn )\n\t{\n\t\tvar iCorrector = 0;\n\t\t\n\t\tfor ( var i=0, iLen=_oaoEvents[sType].length ; i<iLen-iCorrector ; i++ )\n\t\t{\n\t\t\tif ( typeof fn != 'undefined' )\n\t\t\t{\n\t\t\t\tif ( _oaoEvents[sType][i-iCorrector].x == x &&\n\t\t\t\t     _oaoEvents[sType][i-iCorrector].y == y &&\n\t\t\t\t\t   _oaoEvents[sType][i-iCorrector].fn == fn )\n\t\t\t\t{\n\t\t\t\t\t_oaoEvents[sType].splice( i-iCorrector, 1 );\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( _oaoEvents[sType][i-iCorrector].x == x &&\n\t\t\t\t     _oaoEvents[sType][i-iCorrector].y == y )\n\t\t\t\t{\n\t\t\t\t\t_oaoEvents[sType].splice( i, 1 );\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn iCorrector;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnEventFire\n\t * Purpose:  Look thought the events cache and fire off the event of interest\n\t * Returns:  int:iFired - number of events fired\n\t * Inputs:   string:sType - type of event to look for\n\t *           int:x - x coord of cell\n\t *           int:y - y coord of  ell\n\t * Notes:    It might be more efficient to return after the first event has been tirggered,\n\t *           but that would mean that only one function of a particular type can be\n\t *           subscribed to a particular node.\n\t */\n\tfunction _fnEventFire ( sType, x, y )\n\t{\n\t\tvar iFired = 0;\n\t\tvar aEvents = _oaoEvents[sType];\n\t\tfor ( var i=0 ; i<aEvents.length ; i++ )\n\t\t{\n\t\t\tif ( (aEvents[i].x == x     && aEvents[i].y == y    ) ||\n\t\t\t     (aEvents[i].x === null && aEvents[i].y == y    ) ||\n\t\t\t     (aEvents[i].x == x     && aEvents[i].y === null ) ||\n\t\t\t     (aEvents[i].x === null && aEvents[i].y === null )\n\t\t\t)\n\t\t\t{\n\t\t\t\taEvents[i].fn( _fnCellFromCoords(x,y), x, y );\n\t\t\t\tiFired++;\n\t\t\t}\n\t\t}\n\t\treturn iFired;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Focus functions\n\t */\n\t\n\t/*\n\t * Function: _fnSetFocus\n\t * Purpose:  Set focus on a node, and remove from an old node if needed\n\t * Returns:  -\n\t * Inputs:   node:nTarget - node we want to focus on\n\t *           bool:bAutoScroll - optional - should we scroll the view port to the display\n\t */\n\tfunction _fnSetFocus( nTarget, bAutoScroll )\n\t{\n\t\t/* If node already has focus, just ignore this call */\n\t\tif ( _nOldFocus == nTarget )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( typeof bAutoScroll == 'undefined' )\n\t\t{\n\t\t\tbAutoScroll = true;\n\t\t}\n\t\t\n\t\t/* Remove old focus (with blur event if needed) */\n\t\tif ( _nOldFocus !== null )\n\t\t{\n\t\t\t_fnRemoveFocus( _nOldFocus );\n\t\t}\n\t\t\n\t\t/* Add the new class to highlight the focused cell */\n\t\tjQuery(nTarget).addClass( _sFocusClass );\n\t\tjQuery(nTarget).parent().addClass( _sFocusClass );\n\t\t\n\t\t/* If it's a DataTable then we need to jump the paging to the relevant page */\n\t\tvar oSettings;\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\toSettings = _oDatatable.fnSettings();\n\t\t\tvar iRow = _fnFindDtCell( nTarget )[1];\n\t\t\tvar bKeyCaptureCache = _bKeyCapture;\n\t\t\t\n\t\t\t/* Page forwards */\n\t\t\twhile ( iRow >= oSettings.fnDisplayEnd() )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t_oDatatable.oApi._fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Page backwards */\n\t\t\twhile ( iRow < oSettings._iDisplayStart )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t_oDatatable.oApi._fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Re-draw the table */\n\t\t\t_oDatatable.oApi._fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Restore the key capture */\n\t\t\t_bKeyCapture = bKeyCaptureCache;\n\t\t}\n\t\t\n\t\t/* Cache the information that we are interested in */\n\t\tvar aNewPos = _fnCoordsFromCell( nTarget );\n\t\t_nOldFocus = nTarget;\n\t\t_iOldX = aNewPos[0];\n\t\t_iOldY = aNewPos[1];\n\t\t\n\t\tvar iViewportHeight, iViewportWidth, iScrollTop, iScrollLeft, iHeight, iWidth, aiPos;\n\t\tif ( bAutoScroll )\n\t\t{\n\t\t\t/* Scroll the viewport such that the new cell is fully visible in the rendered window */\n\t\t\tiViewportHeight = document.documentElement.clientHeight;\n\t\t\tiViewportWidth = document.documentElement.clientWidth;\n\t\t\tiScrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tiScrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n\t\t\tiHeight = nTarget.offsetHeight;\n\t\t\tiWidth = nTarget.offsetWidth;\n\t\t\taiPos = _fnGetPos( nTarget );\n\t\t\t\n\t\t\t/* Take account of scrolling in DataTables 1.7 - remove scrolling since that would add to\n\t\t\t * the positioning calculation\n\t\t\t */\n\t\t\tif ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&\n\t\t\t  (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\taiPos[1] -= $(oSettings.nTable.parentNode).scrollTop();\n\t\t\t\taiPos[0] -= $(oSettings.nTable.parentNode).scrollLeft();\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct viewport positioning for vertical scrolling */\n\t\t\tif ( aiPos[1]+iHeight > iScrollTop+iViewportHeight )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the bottom of the viewport */\n\t\t\t\t_fnSetScrollTop( aiPos[1]+iHeight - iViewportHeight );\n\t\t\t}\n\t\t\telse if ( aiPos[1] < iScrollTop )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the top of the viewport */\n\t\t\t\t_fnSetScrollTop( aiPos[1] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct viewport positioning for horizontal scrolling */\n\t\t\tif ( aiPos[0]+iWidth > iScrollLeft+iViewportWidth )\n\t\t\t{\n\t\t\t\t/* Displayed element is off the bottom of the viewport */\n\t\t\t\t_fnSetScrollLeft( aiPos[0]+iWidth - iViewportWidth );\n\t\t\t}\n\t\t\telse if ( aiPos[0] < iScrollLeft )\n\t\t\t{\n\t\t\t\t/* Displayed element if off the Left of the viewport */\n\t\t\t\t_fnSetScrollLeft( aiPos[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Take account of scrolling in DataTables 1.7 */\n\t\tif ( _oDatatable && typeof oSettings.oScroll != 'undefined' &&\n\t\t  (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t{\n\t\t\tvar dtScrollBody = oSettings.nTable.parentNode;\n\t\t\tiViewportHeight = dtScrollBody.clientHeight;\n\t\t\tiViewportWidth = dtScrollBody.clientWidth;\n\t\t\tiScrollTop = dtScrollBody.scrollTop;\n\t\t\tiScrollLeft = dtScrollBody.scrollLeft;\n\t\t\tiHeight = nTarget.offsetHeight;\n\t\t\tiWidth = nTarget.offsetWidth;\n\t\t\t\n\t\t\t/* Correct for vertical scrolling */\n\t\t\tif ( nTarget.offsetTop + iHeight > iViewportHeight+iScrollTop )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollTop = (nTarget.offsetTop + iHeight) - iViewportHeight;\n\t\t\t}\n\t\t\telse if ( nTarget.offsetTop < iScrollTop )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollTop = nTarget.offsetTop;\n\t\t\t}\n\t\t\t\n\t\t\t/* Correct for horizontal scrolling */\n\t\t\tif ( nTarget.offsetLeft + iWidth > iViewportWidth+iScrollLeft )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollLeft = (nTarget.offsetLeft + iWidth) - iViewportWidth;\n\t\t\t}\n\t\t\telse if ( nTarget.offsetLeft < iScrollLeft )\n\t\t\t{\n\t\t\t\tdtScrollBody.scrollLeft = nTarget.offsetLeft;\n\t\t\t}\n\t\t}\n\n\t\t/* Focused - so we want to capture the keys */\n\t\t_fnCaptureKeys();\n\t\t\n\t\t/* Fire of the focus event if there is one */\n\t\t_fnEventFire( \"focus\", _iOldX, _iOldY );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnBlur\n\t * Purpose:  Blur focus from the whole table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnBlur()\n\t{\n\t\t_fnRemoveFocus( _nOldFocus );\n\t\t_iOldX = null;\n\t\t_iOldY = null;\n\t\t_nOldFocus = null;\n\t\t_fnReleaseKeys();\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnRemoveFocus\n\t * Purpose:  Remove focus from a cell and fire any blur events which are attached\n\t * Returns:  -\n\t * Inputs:   node:nTarget - cell of interest\n\t */\n\tfunction _fnRemoveFocus( nTarget )\n\t{\n\t\tjQuery(nTarget).removeClass( _sFocusClass );\n\t\tjQuery(nTarget).parent().removeClass( _sFocusClass );\n\t\t_fnEventFire( \"blur\", _iOldX, _iOldY );\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnClick\n\t * Purpose:  Focus on the element that has been clicked on by the user\n\t * Returns:  -\n\t * Inputs:   event:e - click event\n\t */\n\tfunction _fnClick ( e )\n\t{\n\t\tvar nTarget = this;\n\t\twhile ( nTarget.nodeName != \"TD\" )\n\t\t{\n\t\t\tnTarget = nTarget.parentNode;\n\t\t}\n\t\t\n\t\t_fnSetFocus( nTarget );\n\t\t_fnCaptureKeys();\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Key events\n\t */\n\t\n\t/*\n\t * Function: _fnKey\n\t * Purpose:  Deal with a key events, be it moving the focus or return etc.\n\t * Returns:  bool: - allow browser default action\n\t * Inputs:   event:e - key event\n\t */\n\tfunction _fnKey ( e )\n\t{\n\t\t/* If user or system has blocked KeyTable from doing anything, just ignore this event */\n\t\tif ( _that.block || !_bKeyCapture )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\t/* If a modifier key is pressed (exapct shift), ignore the event */\n\t\tif ( e.metaKey || e.altKey || e.ctrlKey )\n\t\t{\n\t\t    return true;\n\t\t}\n\t\tvar\n\t\t\tx, y,\n\t\t\tiTableWidth = _nBody.getElementsByTagName('tr')[0].getElementsByTagName('td').length, \n\t\t\tiTableHeight;\n\t\t\n\t\t/* Get table height and width - done here so as to be dynamic (if table is updated) */\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\t/* \n\t\t\t * Locate the current node in the DataTable overriding the old positions - the reason for\n\t\t\t * is is that there might have been some DataTables interaction between the last focus and\n\t\t\t * now\n\t\t\t */\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\tiTableHeight = oSettings.aiDisplay.length;\n\t\t\t\n\t\t\tvar aDtPos = _fnFindDtCell( _nOldFocus );\n\t\t\tif ( aDtPos === null )\n\t\t\t{\n\t\t\t\t/* If the table has been updated such that the focused cell can't be seen - do nothing */\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_iOldX = aDtPos[ 0 ];\n\t\t\t_iOldY = aDtPos[ 1 ];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tiTableHeight = _nBody.getElementsByTagName('tr').length;\n\t\t}\n\t\t\n\t\t/* Capture shift+tab to match the left arrow key */\n\t\tvar iKey = (e.keyCode == 9 && e.shiftKey) ? -1 : e.keyCode;\n\t\t\n\t\tswitch( iKey )\n\t\t{\n\t\t\tcase 13: /* return */\n\t\t\t \te.preventDefault();\n \t\t\t\te.stopPropagation();\n\t\t\t\t_fnEventFire( \"action\", _iOldX, _iOldY );\n\t\t\t\treturn true;\n\t\t\t\t\n\t\t\tcase 27: /* esc */\n\t\t\t\tif ( !_fnEventFire( \"esc\", _iOldX, _iOldY ) )\n\t\t\t\t{\n\t\t\t\t\t/* Only lose focus if there isn't an escape handler on the cell */\n\t\t\t\t\t_fnBlur();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tx = _iOldX;\n\t\t\t\ty = _iOldY;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase -1:\n\t\t\tcase 37: /* left arrow */\n\t\t\t\tif ( _iOldX > 0 ) {\n\t\t\t\t\tx = _iOldX - 1;\n\t\t\t\t\ty = _iOldY;\n\t\t\t\t} else if ( _iOldY > 0 ) {\n\t\t\t\t\tx = iTableWidth-1;\n\t\t\t\t\ty = _iOldY - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* at start of table */\n\t\t\t\t\tif ( iKey == -1 && _bForm )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If we are in a form, return focus to the 'input' element such that tabbing will\n\t\t\t\t\t\t * follow correctly in the browser\n\t\t\t\t\t\t */\n\t\t\t\t\t\t_bInputFocused = true;\n\t\t\t\t\t\t_nInput.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for \n\t\t\t\t\t\t * focus\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsetTimeout( function(){ _bInputFocused = false; }, 0 );\n\t\t\t\t\t\t_bKeyCapture = false;\n\t\t\t\t\t\t_fnBlur();\n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: /* up arrow */\n\t\t\t\tif ( _iOldY > 0 ) {\n\t\t\t\t\tx = _iOldX;\n\t\t\t\t\ty = _iOldY - 1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: /* tab */\n\t\t\tcase 39: /* right arrow */\n\t\t\t\tif ( _iOldX < iTableWidth-1 ) {\n\t\t\t\t\tx = _iOldX + 1;\n\t\t\t\t\ty = _iOldY;\n\t\t\t\t} else if ( _iOldY < iTableHeight-1 ) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = _iOldY + 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* at end of table */\n\t\t\t\t\tif ( iKey == 9 && _bForm )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If we are in a form, return focus to the 'input' element such that tabbing will\n\t\t\t\t\t\t * follow correctly in the browser\n\t\t\t\t\t\t */\n\t\t\t\t\t\t_bInputFocused = true;\n\t\t\t\t\t\t_nInput.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* This timeout is a little nasty - but IE appears to have some asyhnc behaviour for \n\t\t\t\t\t\t * focus\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsetTimeout( function(){ _bInputFocused = false; }, 0 );\n\t\t\t\t\t\t_bKeyCapture = false;\n\t\t\t\t\t\t_fnBlur();\n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: /* down arrow */\n\t\t\t\tif ( _iOldY < iTableHeight-1 ) {\n\t\t\t\t\tx = _iOldX;\n\t\t\t\t\ty = _iOldY + 1;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault: /* Nothing we are interested in */\n\t\t\t\treturn true;\n\t\t}\n\t\t\n\t\t_fnSetFocus( _fnCellFromCoords(x, y) );\n\t\treturn false;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnCaptureKeys\n\t * Purpose:  Start capturing key events for this table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnCaptureKeys( )\n\t{\n\t\tif ( !_bKeyCapture )\n\t\t{\n\t\t\t_bKeyCapture = true;\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnReleaseKeys\n\t * Purpose:  Stop capturing key events for this table\n\t * Returns:  -\n\t * Inputs:   -\n\t */\n\tfunction _fnReleaseKeys( )\n\t{\n\t\t_bKeyCapture = false;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Support functions\n\t */\n\t\n\t/*\n\t * Function: _fnCellFromCoords\n\t * Purpose:  Calulate the target TD cell from x and y coordinates\n\t * Returns:  node: - TD target\n\t * Inputs:   int:x - x coordinate\n\t *           int:y - y coordinate\n\t */\n\tfunction _fnCellFromCoords( x, y )\n\t{\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\tif ( typeof oSettings.aoData[ oSettings.aiDisplay[ y ] ] != 'undefined' )\n\t\t\t{\n\t\t\t\treturn oSettings.aoData[ oSettings.aiDisplay[ y ] ].nTr.getElementsByTagName('td')[x];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn jQuery('tr:eq('+y+')>td:eq('+x+')', _nBody )[0];\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnCoordsFromCell\n\t * Purpose:  Calculate the x and y position in a table from a TD cell\n\t * Returns:  array[2] int: [x, y]\n\t * Inputs:   node:n - TD cell of interest\n\t * Notes:    Not actually interested in this for DataTables since it might go out of date\n\t */\n\tfunction _fnCoordsFromCell( n )\n\t{\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tvar oSettings = _oDatatable.fnSettings();\n\t\t\treturn [\n\t\t\t\tjQuery('td', n.parentNode).index(n),\n\t\t\t\tjQuery('tr', n.parentNode.parentNode).index(n.parentNode) + oSettings._iDisplayStart\n\t\t\t];\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn [\n\t\t\t\tjQuery('td', n.parentNode).index(n),\n\t\t\t\tjQuery('tr', n.parentNode.parentNode).index(n.parentNode)\n\t\t\t];\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnSetScrollTop\n\t * Purpose:  Set the vertical scrolling position\n\t * Returns:  -\n\t * Inputs:   int:iPos - scrolltop\n\t * Notes:    This is so nasty, but without browser detection you can't tell which you should set\n\t *           So on browsers that support both, the scroll top will be set twice. I can live with\n\t *           that :-)\n\t */\n\tfunction _fnSetScrollTop( iPos )\n\t{\n\t\tdocument.documentElement.scrollTop = iPos;\n\t\tdocument.body.scrollTop = iPos;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnSetScrollLeft\n\t * Purpose:  Set the horizontal scrolling position\n\t * Returns:  -\n\t * Inputs:   int:iPos - scrollleft\n\t */\n\tfunction _fnSetScrollLeft( iPos )\n\t{\n\t\tdocument.documentElement.scrollLeft = iPos;\n\t\tdocument.body.scrollLeft = iPos;\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnGetPos\n\t * Purpose:  Get the position of an object on the rendered page\n\t * Returns:  array[2] int: [left, right]\n\t * Inputs:   node:obj - element of interest\n\t */\n\tfunction _fnGetPos ( obj )\n\t{\n\t\tvar iLeft = 0;\n\t\tvar iTop = 0;\n\t\t\n\t\tif (obj.offsetParent) \n\t\t{\n\t\t\tiLeft = obj.offsetLeft;\n\t\t\tiTop = obj.offsetTop;\n\t\t\tobj = obj.offsetParent;\n\t\t\twhile (obj) \n\t\t\t{\n\t\t\t\tiLeft += obj.offsetLeft;\n\t\t\t\tiTop += obj.offsetTop;\n\t\t\t\tobj = obj.offsetParent;\n\t\t\t}\n\t\t}\n\t\treturn [iLeft,iTop];\n\t}\n\t\n\t\n\t/*\n\t * Function: _fnFindDtCell\n\t * Purpose:  Get the coords. of a cell from the DataTables internal information\n\t * Returns:  array[2] int: [x, y] coords. or null if not found\n\t * Inputs:   node:nTarget - the node of interest\n\t */\n\tfunction _fnFindDtCell( nTarget )\n\t{\n\t\tvar oSettings = _oDatatable.fnSettings();\n\t\tfor ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar nTr = oSettings.aoData[ oSettings.aiDisplay[i] ].nTr;\n\t\t\tvar nTds = nTr.getElementsByTagName('td');\n\t\t\tfor ( var j=0, jLen=nTds.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( nTds[j] == nTarget )\n\t\t\t\t{\n\t\t\t\t\treturn [ j, i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Initialisation\n\t */\n\t\n\t/*\n\t * Function: _fnInit\n\t * Purpose:  Initialise the KeyTable\n\t * Returns:  -\n\t * Inputs:   object:oInit - optional - Initalisation object with the following parameters:\n\t *   array[2] int:focus - x and y coordinates of the initial target\n\t *     or\n\t *     node:focus - the node to set initial focus on\n\t *   node:table - the table to use, if not given, first table with class 'KeyTable' will be used\n\t *   string:focusClass - focusing class to give to table elements\n\t *           object:that - focus\n\t *   bool:initScroll - scroll the view port on load, default true\n\t *   int:tabIndex - the tab index to give the hidden input element\n\t */\n\tfunction _fnInit( oInit, that )\n\t{\n\t\t/* Save scope */\n\t\t_that = that;\n\t\t\n\t\t/* Capture undefined initialisation and apply the defaults */\n\t\tif ( typeof oInit == 'undefined' ) {\n\t\t\toInit = {};\n\t\t}\n\t\t\n\t\tif ( typeof oInit.focus == 'undefined' ) {\n\t\t\toInit.focus = [0,0];\n\t\t}\n\t\t\n\t\tif ( typeof oInit.table == 'undefined' ) {\n\t\t\toInit.table = jQuery('table.KeyTable')[0];\n\t\t} else {\n\t\t\t$(oInit.table).addClass('KeyTable');\n\t\t}\n\t\t\n\t\tif ( typeof oInit.focusClass != 'undefined' ) {\n\t\t\t_sFocusClass = oInit.focusClass;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.datatable != 'undefined' ) {\n\t\t\t_oDatatable = oInit.datatable;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.initScroll == 'undefined' ) {\n\t\t\toInit.initScroll = true;\n\t\t}\n\t\t\n\t\tif ( typeof oInit.form == 'undefined' ) {\n\t\t\toInit.form = false;\n\t\t}\n\t\t_bForm = oInit.form;\n\t\t\n\t\t/* Cache the tbody node of interest */\n\t\t_nBody = oInit.table.getElementsByTagName('tbody')[0];\n\t\t\n\t\t/* If the table is inside a form, then we need a hidden input box which can be used by the\n\t\t * browser to catch the browser tabbing for our table\n\t\t */\n\t\tif ( _bForm )\n\t\t{\n\t\t\tvar nDiv = document.createElement('div');\n\t\t\t_nInput = document.createElement('input');\n\t\t\tnDiv.style.height = \"1px\"; /* Opera requires a little something */\n\t\t\tnDiv.style.width = \"0px\";\n\t\t\tnDiv.style.overflow = \"hidden\";\n\t\t\tif ( typeof oInit.tabIndex != 'undefined' )\n\t\t\t{\n\t\t\t\t_nInput.tabIndex = oInit.tabIndex;\n\t\t\t}\n\t\t\tnDiv.appendChild(_nInput);\n\t\t\toInit.table.parentNode.insertBefore( nDiv, oInit.table.nextSibling );\n\t\t\t\n\t\t\tjQuery(_nInput).focus( function () {\n\t\t\t\t/* See if we want to 'tab into' the table or out */\n\t\t\t\tif ( !_bInputFocused )\n\t\t\t\t{\n\t\t\t\t\t_bKeyCapture = true;\n\t\t\t\t\t_bInputFocused = false;\n\t\t\t\t\tif ( typeof oInit.focus.nodeName != \"undefined\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetFocus( oInit.focus, oInit.initScroll );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Need to interup the thread for this to work */\n\t\t\t\t\tsetTimeout( function() { _nInput.blur(); }, 0 );\n\t\t\t\t}\n\t\t\t} );\n\t\t\t_bKeyCapture = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Set the initial focus on the table */\n\t\t\tif ( typeof oInit.focus.nodeName != \"undefined\" )\n\t\t\t{\n\t\t\t\t_fnSetFocus( oInit.focus, oInit.initScroll );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnSetFocus( _fnCellFromCoords( oInit.focus[0], oInit.focus[1]), oInit.initScroll );\n\t\t\t}\n\t\t\t_fnCaptureKeys();\n\t\t}\n\t\t\n\t\t/*\n\t\t * Add event listeners\n\t\t * Well - I hate myself for doing this, but it would appear that key events in browsers are\n\t\t * a complete mess, particulay when you consider arrow keys, which of course are one of the\n\t\t * main areas of interest here. So basically for arrow keys, there is no keypress event in\n\t\t * Safari and IE, while there is in Firefox and Opera. But Firefox and Opera don't repeat the\n\t\t * keydown event for an arrow key. OUCH. See the following two articles for more:\n\t\t *   http://www.quirksmode.org/dom/events/keys.html\n\t\t *   https://lists.webkit.org/pipermail/webkit-dev/2007-December/002992.html\n\t\t *   http://unixpapa.com/js/key.html\n\t\t * PPK considers the IE / Safari method correct (good enough for me!) so we (urgh) detect\n\t\t * Mozilla and Opera and apply keypress for them, while everything else gets keydown. If\n\t\t * Mozilla or Opera change their implemention in future, this will need to be updated... \n\t\t * although at the time of writing (14th March 2009) Minefield still uses the 3.0 behaviour.\n\t\t */\n\t\tif ( jQuery.browser.mozilla || jQuery.browser.opera )\n\t\t{\n\t\t\tjQuery(document).bind( \"keypress\", _fnKey );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tjQuery(document).bind( \"keydown\", _fnKey );\n\t\t}\n\t\t\n\t\tif ( _oDatatable )\n\t\t{\n\t\t\tjQuery('tbody td', _oDatatable.fnSettings().nTable).live( 'click', _fnClick );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tjQuery('td', _nBody).live( 'click', _fnClick );\n\t\t}\n\t\t\n\t\t/* Loose table focus when click outside the table */\n\t\tjQuery(document).click( function(e) {\n\t\t\tvar nTarget = e.target;\n\t\t\tvar bTableClick = false;\n\t\t\twhile ( nTarget )\n\t\t\t{\n\t\t\t\tif ( nTarget == oInit.table )\n\t\t\t\t{\n\t\t\t\t\tbTableClick = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tnTarget = nTarget.parentNode;\n\t\t\t}\n\t\t\tif ( !bTableClick )\n\t\t\t{\n\t\t\t\t_fnBlur();\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t/* Initialise our new object */\n\t_fnInit( oInit, this );\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/api_scrolling.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\t$('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true,\n\t\t\t\t\t\"fnInitComplete\": function () {\n\t\t\t\t\t\tthis.fnSettings().oScroller.fnScrollToRow( 1000 );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller API example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example shows a trivial use of the Scroller API to scroll the table to row 1000 once the table has been loaded. Any number could be used here, and a small animated effect is used to provide visual feedback to the user (this can be disabled by passed false as a second parameter to fnScrollToRow).</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\t$('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true,\n\t\t\"fnInitComplete\": function () {\n\t\t\tthis.fnSettings().oScroller.fnScrollToRow( 1000 );\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"192px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller basic initialisation example\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Scroller is a plug-in for DataTables which enhances the \"infinite scrolling\" feature that DataTables has built-in to make the scrolling feel more natural. The scrolling box shown on the page is the full height of the drawn table, but a virtual rendering technique is used to only render the part of the table that is actually viewable in the scrolling viewport in order to increase the speed of drawing.</p>\n\t\t\t<p>Note that Scroller assumes that all rows are of the same height (in order to preform the required calculations. You can use 'td { white-space: nowrap; }' in your CSS to ensure that text in rows does not wrap.</p>\n\t\t\t<p>This example shows how Scroller for DataTables can be initialised by simply including the character 'S' in sDom (note that the 'S' must come after the 't' in sDom). Deferred rendering an and Ajax data source are also used in this example.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/large_js_source.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar aaData = [];\n\t\t\t\tfor ( var i=0 ; i<50000 ; i++ ) {\n\t\t\t\t\taaData.push( [ i, i, i, i, i ] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"aaData\": aaData,\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller example - 50'000 rows\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>This example is completely artificial in that the data generated is created on the client-side by just looping around a Javascript array and then passing that to DataTables. However, it does show quite nicely that DataTables and Scroller can cope with large amounts of data on the client-side quite nicely. Typically data such as this would be Ajax sourced and server-side processing should be considered. Please be aware that the performance of this page will depend on your browser - for example IE6 will crawl!</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>Column 1</th>\n\t\t\t<th>Column 2</th>\n\t\t\t<th>Column 3</th>\n\t\t\t<th>Column 4</th>\n\t\t\t<th>Column 5</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar aaData = [];\n\tfor ( var i=1 ; i&lt;50000 ; i++ ) {\n\t\taaData.push( [ i, i, i, i, i ] );\n\t}\n\t\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"aaData\": aaData,\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/css/dataTables.scroller.css",
    "content": "\n/*\n * Namespace: DTS (DataTables Scroller)\n */\n\ndiv.DTS tbody th,\ndiv.DTS tbody td {\n\twhite-space: nowrap;\n}\n\ndiv.DTS tbody tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTS div.DTS_Loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 200px;\n\theight: 20px;\n\tmargin-top: -20px;\n\tmargin-left: -100px;\n\tz-index: 1;\n\n\tborder: 1px solid #999;\n\tpadding: 20px 0;\n\ttext-align: center;\n\tbackground-color: white;\n\tbackground-color: rgba(255, 255, 255, 0.5);\n}\n\ndiv.DTS div.dataTables_scrollHead {\n\tbackground-color: white;\n}\n\ndiv.DTS div.dataTables_scrollBody {\n\tz-index: 2;\n}\n\ndiv.DTS div.dataTables_scroll {\n\tbackground: url('../images/loading-background.png') repeat 0 0;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/2500.txt",
    "content": "{ \"aaData\": [\n\t[ \"1\", \"Armand\", \"Warren\", \"56045\", \"Taiwan, Province of China\" ],\n\t[ \"2\", \"Xenos\", \"Salas\", \"71090\", \"Liberia\" ],\n\t[ \"3\", \"Virginia\", \"Whitaker\", \"62723\", \"Nicaragua\" ],\n\t[ \"4\", \"Kato\", \"Patrick\", \"97662\", \"Palau\" ],\n\t[ \"5\", \"Penelope\", \"Hensley\", \"76634\", \"Greenland\" ],\n\t[ \"6\", \"Georgia\", \"Erickson\", \"81358\", \"Bolivia\" ],\n\t[ \"7\", \"Shad\", \"Pena\", \"20600\", \"Palestinian Territory, Occupied\" ],\n\t[ \"8\", \"Tanisha\", \"Humphrey\", \"93371\", \"Kenya\" ],\n\t[ \"9\", \"Claire\", \"Espinoza\", \"I8S 2S8\", \"Panama\" ],\n\t[ \"10\", \"Raya\", \"Tucker\", \"O8D 8W7\", \"Botswana\" ],\n\t[ \"11\", \"Otto\", \"Briggs\", \"57590\", \"Anguilla\" ],\n\t[ \"12\", \"Logan\", \"Burt\", \"53041\", \"Venezuela\" ],\n\t[ \"13\", \"Cooper\", \"Pennington\", \"36994\", \"France\" ],\n\t[ \"14\", \"Kristen\", \"Peterson\", \"52917\", \"Sao Tome and Principe\" ],\n\t[ \"15\", \"Jordan\", \"Velasquez\", \"08884\", \"Switzerland\" ],\n\t[ \"16\", \"Zelda\", \"Freeman\", \"F9H 1J9\", \"Holy See (Vatican City State)\" ],\n\t[ \"17\", \"Mary\", \"Pacheco\", \"A7Y 6X9\", \"Niger\" ],\n\t[ \"18\", \"Tiger\", \"Robles\", \"44533\", \"Malaysia\" ],\n\t[ \"19\", \"Zelenia\", \"Buckner\", \"Q8N 6E5\", \"Malawi\" ],\n\t[ \"20\", \"Coby\", \"Johnston\", \"N6I 2O9\", \"Rwanda\" ],\n\t[ \"21\", \"Gillian\", \"Strickland\", \"12258\", \"Cook Islands\" ],\n\t[ \"22\", \"Alfreda\", \"Mcbride\", \"K5A 3B6\", \"Nigeria\" ],\n\t[ \"23\", \"Laith\", \"Ford\", \"19072\", \"Czech Republic\" ],\n\t[ \"24\", \"Autumn\", \"Barton\", \"U9D 9F4\", \"Angola\" ],\n\t[ \"25\", \"Nadine\", \"Britt\", \"G4U 8L0\", \"Liechtenstein\" ],\n\t[ \"26\", \"Xaviera\", \"Hart\", \"T1N 7D2\", \"Mali\" ],\n\t[ \"27\", \"Neil\", \"Page\", \"T3E 9F4\", \"Korea\" ],\n\t[ \"28\", \"Rose\", \"French\", \"B7T 8M2\", \"French Polynesia\" ],\n\t[ \"29\", \"Alyssa\", \"Poole\", \"S1L 2T5\", \"Yemen\" ],\n\t[ \"30\", \"Chantale\", \"Lynch\", \"97316\", \"United States\" ],\n\t[ \"31\", \"Jermaine\", \"Dawson\", \"A3H 7A1\", \"American Samoa\" ],\n\t[ \"32\", \"Ann\", \"Giles\", \"54258\", \"Korea\" ],\n\t[ \"33\", \"Jerry\", \"Carr\", \"04901\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"34\", \"Lionel\", \"Hooper\", \"67970\", \"Bahrain\" ],\n\t[ \"35\", \"Alyssa\", \"Hewitt\", \"R3K 2V8\", \"Paraguay\" ],\n\t[ \"36\", \"Lisandra\", \"Sheppard\", \"71886\", \"Seychelles\" ],\n\t[ \"37\", \"Kylan\", \"Harrison\", \"96763\", \"Italy\" ],\n\t[ \"38\", \"Kaitlin\", \"Montgomery\", \"V5K 5U8\", \"Niger\" ],\n\t[ \"39\", \"Heidi\", \"Boyd\", \"B3C 8M9\", \"Papua New Guinea\" ],\n\t[ \"40\", \"Rinah\", \"Case\", \"W7M 5K1\", \"Mali\" ],\n\t[ \"41\", \"Thaddeus\", \"Maynard\", \"E4V 6W6\", \"Egypt\" ],\n\t[ \"42\", \"Lacota\", \"Ray\", \"T3J 8D8\", \"United Kingdom\" ],\n\t[ \"43\", \"Olympia\", \"Cortez\", \"F8C 7I5\", \"Palau\" ],\n\t[ \"44\", \"Wendy\", \"Rojas\", \"N8T 4K6\", \"Cook Islands\" ],\n\t[ \"45\", \"Arden\", \"Kelley\", \"V9N 2T6\", \"India\" ],\n\t[ \"46\", \"Colorado\", \"Lindsey\", \"96703\", \"Chad\" ],\n\t[ \"47\", \"Alika\", \"Weaver\", \"F6V 1I1\", \"Bulgaria\" ],\n\t[ \"48\", \"Phoebe\", \"Mack\", \"E4B 1X2\", \"El Salvador\" ],\n\t[ \"49\", \"Sybill\", \"Bridges\", \"Z2G 6A2\", \"Somalia\" ],\n\t[ \"50\", \"Trevor\", \"Larsen\", \"K1R 3B9\", \"United Arab Emirates\" ],\n\t[ \"51\", \"Maya\", \"Battle\", \"70881\", \"Australia\" ],\n\t[ \"52\", \"Charity\", \"Walton\", \"I4I 5R9\", \"Swaziland\" ],\n\t[ \"53\", \"Lane\", \"Sloan\", \"79076\", \"Nauru\" ],\n\t[ \"54\", \"Christopher\", \"Watson\", \"35116\", \"Suriname\" ],\n\t[ \"55\", \"Clementine\", \"Shelton\", \"98232\", \"Venezuela\" ],\n\t[ \"56\", \"Basil\", \"Hood\", \"J9I 1R2\", \"Tonga\" ],\n\t[ \"57\", \"Meghan\", \"Pacheco\", \"H5Z 6B1\", \"Dominican Republic\" ],\n\t[ \"58\", \"Brennan\", \"Potts\", \"51743\", \"Turkey\" ],\n\t[ \"59\", \"Lawrence\", \"Duran\", \"63266\", \"Uruguay\" ],\n\t[ \"60\", \"Ina\", \"Head\", \"S8P 9J5\", \"Romania\" ],\n\t[ \"61\", \"Castor\", \"Jacobson\", \"C9F 6C9\", \"Albania\" ],\n\t[ \"62\", \"Daquan\", \"Holden\", \"38571\", \"Ireland\" ],\n\t[ \"63\", \"Donna\", \"Valencia\", \"J7B 3I0\", \"Portugal\" ],\n\t[ \"64\", \"Kessie\", \"Phelps\", \"61063\", \"Georgia\" ],\n\t[ \"65\", \"Dillon\", \"Garcia\", \"13652\", \"Holy See (Vatican City State)\" ],\n\t[ \"66\", \"Russell\", \"Sweeney\", \"T8P 2O6\", \"Saint Kitts and Nevis\" ],\n\t[ \"67\", \"Zelda\", \"Berg\", \"84946\", \"Afghanistan\" ],\n\t[ \"68\", \"Dexter\", \"Mann\", \"73596\", \"Thailand\" ],\n\t[ \"69\", \"Maisie\", \"Miller\", \"X3M 6C1\", \"Seychelles\" ],\n\t[ \"70\", \"Lynn\", \"Mitchell\", \"N5B 3Z9\", \"Wallis and Futuna\" ],\n\t[ \"71\", \"Gay\", \"Medina\", \"66692\", \"Germany\" ],\n\t[ \"72\", \"Olga\", \"Clark\", \"M6B 7B6\", \"Kuwait\" ],\n\t[ \"73\", \"Brianna\", \"Obrien\", \"Z6Z 5R3\", \"Bahrain\" ],\n\t[ \"74\", \"Daria\", \"Byers\", \"R9T 4N7\", \"Ghana\" ],\n\t[ \"75\", \"Chiquita\", \"Barker\", \"28435\", \"Ireland\" ],\n\t[ \"76\", \"Gray\", \"Salazar\", \"58618\", \"Chile\" ],\n\t[ \"77\", \"Delilah\", \"Kirby\", \"42811\", \"Oman\" ],\n\t[ \"78\", \"Xanthus\", \"Holland\", \"B8Q 9C4\", \"Antigua and Barbuda\" ],\n\t[ \"79\", \"Reuben\", \"Brennan\", \"44693\", \"Czech Republic\" ],\n\t[ \"80\", \"Alden\", \"Long\", \"94236\", \"Slovakia\" ],\n\t[ \"81\", \"Blythe\", \"Bender\", \"04812\", \"Guam\" ],\n\t[ \"82\", \"Aileen\", \"Burgess\", \"47942\", \"Djibouti\" ],\n\t[ \"83\", \"Zeus\", \"Craig\", \"43002\", \"Nicaragua\" ],\n\t[ \"84\", \"Jade\", \"Garza\", \"F2X 8F3\", \"New Zealand\" ],\n\t[ \"85\", \"Noah\", \"Barrera\", \"K9C 8U0\", \"Malawi\" ],\n\t[ \"86\", \"Quyn\", \"Robertson\", \"H3X 6J9\", \"Bosnia and Herzegovina\" ],\n\t[ \"87\", \"Serena\", \"Cabrera\", \"83671\", \"Slovenia\" ],\n\t[ \"88\", \"Charity\", \"Chase\", \"T9Q 7C4\", \"Solomon Islands\" ],\n\t[ \"89\", \"Athena\", \"Grimes\", \"62801\", \"Aruba\" ],\n\t[ \"90\", \"Mallory\", \"Middleton\", \"D2V 1M5\", \"Italy\" ],\n\t[ \"91\", \"Xenos\", \"Jones\", \"46642\", \"Singapore\" ],\n\t[ \"92\", \"Tate\", \"Gregory\", \"66538\", \"Zimbabwe\" ],\n\t[ \"93\", \"Blaze\", \"Taylor\", \"70282\", \"Paraguay\" ],\n\t[ \"94\", \"Jena\", \"Duncan\", \"63057\", \"Cambodia\" ],\n\t[ \"95\", \"Thaddeus\", \"Chase\", \"66762\", \"Netherlands Antilles\" ],\n\t[ \"96\", \"Guinevere\", \"Mcgee\", \"O9G 4S2\", \"Lebanon\" ],\n\t[ \"97\", \"Kermit\", \"Ramsey\", \"41214\", \"Dominican Republic\" ],\n\t[ \"98\", \"Josephine\", \"Gallagher\", \"04960\", \"French Southern Territories\" ],\n\t[ \"99\", \"Amela\", \"Morales\", \"M9I 1X5\", \"Sudan\" ],\n\t[ \"100\", \"Rina\", \"Yates\", \"G3T 7M9\", \"Dominica\" ],\n\t[ \"101\", \"Orson\", \"Norris\", \"21660\", \"Sierra Leone\" ],\n\t[ \"102\", \"Graiden\", \"Silva\", \"98191\", \"Saint Lucia\" ],\n\t[ \"103\", \"Amaya\", \"Hood\", \"45779\", \"India\" ],\n\t[ \"104\", \"Fatima\", \"Fitzpatrick\", \"I4R 9Q8\", \"Viet Nam\" ],\n\t[ \"105\", \"Judith\", \"Stokes\", \"97596\", \"Sudan\" ],\n\t[ \"106\", \"Jared\", \"Vaughn\", \"75521\", \"Benin\" ],\n\t[ \"107\", \"Mira\", \"Morgan\", \"35169\", \"Martinique\" ],\n\t[ \"108\", \"Walter\", \"Perkins\", \"28618\", \"San Marino\" ],\n\t[ \"109\", \"Megan\", \"Maxwell\", \"K6X 3J4\", \"Oman\" ],\n\t[ \"110\", \"Christine\", \"Christensen\", \"M7S 8G8\", \"Netherlands Antilles\" ],\n\t[ \"111\", \"Tanner\", \"Guerra\", \"S3K 6Y5\", \"Finland\" ],\n\t[ \"112\", \"Meghan\", \"Rowland\", \"K7U 3A1\", \"Rwanda\" ],\n\t[ \"113\", \"Patrick\", \"Mitchell\", \"V3F 5C4\", \"Oman\" ],\n\t[ \"114\", \"Jackson\", \"Sanders\", \"83229\", \"Greenland\" ],\n\t[ \"115\", \"Omar\", \"Savage\", \"14082\", \"Korea\" ],\n\t[ \"116\", \"Ulla\", \"Larsen\", \"Q2P 4L8\", \"French Southern Territories\" ],\n\t[ \"117\", \"Hop\", \"Gates\", \"D9G 9J4\", \"Poland\" ],\n\t[ \"118\", \"Astra\", \"Mendoza\", \"R3D 2H9\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"119\", \"Denise\", \"Cardenas\", \"73138\", \"Sao Tome and Principe\" ],\n\t[ \"120\", \"Melodie\", \"Roberts\", \"L1G 4H2\", \"India\" ],\n\t[ \"121\", \"Cedric\", \"Joseph\", \"M4V 8O9\", \"Korea, Republic of\" ],\n\t[ \"122\", \"Linda\", \"Horn\", \"24465\", \"Bosnia and Herzegovina\" ],\n\t[ \"123\", \"Mary\", \"Lyons\", \"22324\", \"Norfolk Island\" ],\n\t[ \"124\", \"Ciara\", \"Mcknight\", \"30784\", \"Anguilla\" ],\n\t[ \"125\", \"Vaughan\", \"Santiago\", \"65037\", \"Guyana\" ],\n\t[ \"126\", \"Lamar\", \"Shepherd\", \"58040\", \"France\" ],\n\t[ \"127\", \"Xavier\", \"Webster\", \"68321\", \"Afghanistan\" ],\n\t[ \"128\", \"Ainsley\", \"Banks\", \"46902\", \"Pakistan\" ],\n\t[ \"129\", \"Alika\", \"Love\", \"L5O 4B3\", \"Iran, Islamic Republic of\" ],\n\t[ \"130\", \"Maite\", \"Dickson\", \"37405\", \"Saint Kitts and Nevis\" ],\n\t[ \"131\", \"Kimberley\", \"Morrow\", \"F7C 7J0\", \"Lebanon\" ],\n\t[ \"132\", \"Eugenia\", \"Stafford\", \"36282\", \"Nicaragua\" ],\n\t[ \"133\", \"Mira\", \"Gill\", \"K1T 8U1\", \"Uruguay\" ],\n\t[ \"134\", \"Herman\", \"Francis\", \"C2G 8G9\", \"Northern Mariana Islands\" ],\n\t[ \"135\", \"Veronica\", \"Peters\", \"74146\", \"Cook Islands\" ],\n\t[ \"136\", \"Axel\", \"Cochran\", \"32240\", \"Central African Republic\" ],\n\t[ \"137\", \"Edan\", \"Howe\", \"51862\", \"Mali\" ],\n\t[ \"138\", \"Ignacia\", \"Bruce\", \"Q8T 5Q1\", \"Sao Tome and Principe\" ],\n\t[ \"139\", \"Jana\", \"Mcguire\", \"89412\", \"Czech Republic\" ],\n\t[ \"140\", \"Alice\", \"Underwood\", \"74535\", \"Slovakia\" ],\n\t[ \"141\", \"Tobias\", \"Kent\", \"33601\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"142\", \"Nasim\", \"Coleman\", \"19377\", \"United States Minor Outlying Islands\" ],\n\t[ \"143\", \"Geoffrey\", \"Byers\", \"85753\", \"Netherlands Antilles\" ],\n\t[ \"144\", \"Odette\", \"Sawyer\", \"55418\", \"Tunisia\" ],\n\t[ \"145\", \"Chaney\", \"Flowers\", \"F4W 7O7\", \"Maldives\" ],\n\t[ \"146\", \"Shelly\", \"Glover\", \"M5Y 4A6\", \"Taiwan, Province of China\" ],\n\t[ \"147\", \"Uriel\", \"Thornton\", \"Z6Q 5B7\", \"Myanmar\" ],\n\t[ \"148\", \"Clio\", \"Nicholson\", \"Y8S 7P2\", \"Martinique\" ],\n\t[ \"149\", \"Jana\", \"Foley\", \"B1O 9J5\", \"United Arab Emirates\" ],\n\t[ \"150\", \"Fulton\", \"Rasmussen\", \"39194\", \"Solomon Islands\" ],\n\t[ \"151\", \"Lisandra\", \"Boyd\", \"J2Z 2V7\", \"French Guiana\" ],\n\t[ \"152\", \"Brennan\", \"Lopez\", \"Q4M 7Y4\", \"Burkina Faso\" ],\n\t[ \"153\", \"Martha\", \"Washington\", \"M7S 4U6\", \"Iran, Islamic Republic of\" ],\n\t[ \"154\", \"Dara\", \"Ramos\", \"07799\", \"Portugal\" ],\n\t[ \"155\", \"Virginia\", \"Harris\", \"01246\", \"Bermuda\" ],\n\t[ \"156\", \"Maryam\", \"Patrick\", \"Y3J 4Y0\", \"Rwanda\" ],\n\t[ \"157\", \"Shana\", \"Mullen\", \"61169\", \"Togo\" ],\n\t[ \"158\", \"Rowan\", \"Hahn\", \"K6D 5T4\", \"Guinea-bissau\" ],\n\t[ \"159\", \"Hermione\", \"Shepherd\", \"M4F 7T6\", \"Ireland\" ],\n\t[ \"160\", \"Jada\", \"Bright\", \"P1Z 7E6\", \"French Southern Territories\" ],\n\t[ \"161\", \"Scarlet\", \"Bray\", \"57161\", \"Austria\" ],\n\t[ \"162\", \"Haviva\", \"Conner\", \"M4T 8O4\", \"Bermuda\" ],\n\t[ \"163\", \"Myra\", \"Briggs\", \"Q4B 6L7\", \"Kenya\" ],\n\t[ \"164\", \"Hall\", \"Floyd\", \"40411\", \"Bangladesh\" ],\n\t[ \"165\", \"Kyle\", \"Marquez\", \"J4T 7C6\", \"Djibouti\" ],\n\t[ \"166\", \"Claudia\", \"Long\", \"R7B 1T6\", \"Macedonia\" ],\n\t[ \"167\", \"Hasad\", \"Clemons\", \"94009\", \"Bosnia and Herzegovina\" ],\n\t[ \"168\", \"Kameko\", \"Reeves\", \"G4V 6D5\", \"Singapore\" ],\n\t[ \"169\", \"Angelica\", \"Bailey\", \"Z3Y 7I0\", \"Micronesia\" ],\n\t[ \"170\", \"Shelley\", \"Jennings\", \"O3A 9H0\", \"Christmas Island\" ],\n\t[ \"171\", \"Rafael\", \"Randolph\", \"Y4L 8B5\", \"Germany\" ],\n\t[ \"172\", \"Winter\", \"Kinney\", \"A3K 9A7\", \"Saint Lucia\" ],\n\t[ \"173\", \"Brian\", \"Larsen\", \"53752\", \"Comoros\" ],\n\t[ \"174\", \"Melvin\", \"Cooper\", \"72416\", \"Czech Republic\" ],\n\t[ \"175\", \"Gil\", \"Valencia\", \"95798\", \"Uganda\" ],\n\t[ \"176\", \"Uma\", \"Cummings\", \"84649\", \"Jordan\" ],\n\t[ \"177\", \"Micah\", \"Shannon\", \"H9L 8R6\", \"Ghana\" ],\n\t[ \"178\", \"Ahmed\", \"Weiss\", \"05291\", \"American Samoa\" ],\n\t[ \"179\", \"Hop\", \"Foster\", \"W9C 7J7\", \"Panama\" ],\n\t[ \"180\", \"Todd\", \"Barnett\", \"T9R 7J4\", \"Seychelles\" ],\n\t[ \"181\", \"Byron\", \"Meyers\", \"J4G 9P2\", \"Congo\" ],\n\t[ \"182\", \"Hadassah\", \"Barnett\", \"U1A 8V3\", \"Paraguay\" ],\n\t[ \"183\", \"Hermione\", \"Luna\", \"L4G 2E5\", \"New Zealand\" ],\n\t[ \"184\", \"Marsden\", \"Alvarado\", \"U1V 1Y4\", \"Aruba\" ],\n\t[ \"185\", \"Britanni\", \"Gregory\", \"C8O 2T4\", \"Kazakhstan\" ],\n\t[ \"186\", \"Brenda\", \"Oneil\", \"R9Q 9B7\", \"Gibraltar\" ],\n\t[ \"187\", \"Reuben\", \"Hopkins\", \"C2D 9D0\", \"Bhutan\" ],\n\t[ \"188\", \"Sonia\", \"Sandoval\", \"Y2G 5I0\", \"Guatemala\" ],\n\t[ \"189\", \"Yasir\", \"Holcomb\", \"A1H 6Y3\", \"Angola\" ],\n\t[ \"190\", \"Aristotle\", \"Rosa\", \"51870\", \"Indonesia\" ],\n\t[ \"191\", \"Uriah\", \"Blair\", \"X8K 1B9\", \"Suriname\" ],\n\t[ \"192\", \"Vaughan\", \"Sharp\", \"L2F 5N8\", \"Faroe Islands\" ],\n\t[ \"193\", \"Cooper\", \"Beard\", \"80399\", \"United States Minor Outlying Islands\" ],\n\t[ \"194\", \"Riley\", \"Greene\", \"44728\", \"Russian Federation\" ],\n\t[ \"195\", \"Rashad\", \"Flowers\", \"L6N 8U7\", \"Mongolia\" ],\n\t[ \"196\", \"Yvonne\", \"Wilson\", \"18599\", \"Svalbard and Jan Mayen\" ],\n\t[ \"197\", \"Martena\", \"Ayers\", \"A8Z 5F7\", \"Oman\" ],\n\t[ \"198\", \"Eagan\", \"Cline\", \"T9P 4L4\", \"Solomon Islands\" ],\n\t[ \"199\", \"Dawn\", \"Carrillo\", \"T6O 6E5\", \"Malawi\" ],\n\t[ \"200\", \"Ali\", \"Singleton\", \"G6F 3B4\", \"Italy\" ],\n\t[ \"201\", \"Christopher\", \"Beach\", \"01655\", \"Palau\" ],\n\t[ \"202\", \"Emma\", \"Cummings\", \"W1B 4R6\", \"Dominica\" ],\n\t[ \"203\", \"Ishmael\", \"Gray\", \"76928\", \"Egypt\" ],\n\t[ \"204\", \"Megan\", \"Hines\", \"F7X 2X5\", \"New Zealand\" ],\n\t[ \"205\", \"Emmanuel\", \"Steele\", \"09729\", \"Netherlands\" ],\n\t[ \"206\", \"Alea\", \"Burris\", \"08485\", \"Guatemala\" ],\n\t[ \"207\", \"Martina\", \"Todd\", \"46863\", \"Christmas Island\" ],\n\t[ \"208\", \"Len\", \"Valentine\", \"S6Z 5S8\", \"Slovenia\" ],\n\t[ \"209\", \"Jorden\", \"Salazar\", \"U4D 8H6\", \"Austria\" ],\n\t[ \"210\", \"Yvette\", \"Bradford\", \"17275\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"211\", \"Elvis\", \"Mcmahon\", \"27586\", \"Marshall Islands\" ],\n\t[ \"212\", \"Gray\", \"Bonner\", \"N4V 3U9\", \"Moldova\" ],\n\t[ \"213\", \"Yoshi\", \"Singleton\", \"86603\", \"United Kingdom\" ],\n\t[ \"214\", \"Amena\", \"Burks\", \"93820\", \"Reunion\" ],\n\t[ \"215\", \"Ocean\", \"Maldonado\", \"72026\", \"Ireland\" ],\n\t[ \"216\", \"Allen\", \"Foley\", \"75363\", \"Kiribati\" ],\n\t[ \"217\", \"Duncan\", \"Jimenez\", \"H3H 3G6\", \"Oman\" ],\n\t[ \"218\", \"Ira\", \"Maxwell\", \"53136\", \"French Polynesia\" ],\n\t[ \"219\", \"Astra\", \"Moon\", \"D7W 8G2\", \"Dominican Republic\" ],\n\t[ \"220\", \"Orson\", \"Myers\", \"06049\", \"Mali\" ],\n\t[ \"221\", \"Brandon\", \"Estes\", \"D2B 7P2\", \"Kenya\" ],\n\t[ \"222\", \"Halee\", \"Luna\", \"54733\", \"Moldova\" ],\n\t[ \"223\", \"Jillian\", \"Gonzalez\", \"E8W 3L9\", \"Ecuador\" ],\n\t[ \"224\", \"Julie\", \"Acosta\", \"X7M 1T2\", \"Equatorial Guinea\" ],\n\t[ \"225\", \"Quemby\", \"Foster\", \"48596\", \"Eritrea\" ],\n\t[ \"226\", \"Erich\", \"Chavez\", \"W4P 7G8\", \"Mayotte\" ],\n\t[ \"227\", \"Roary\", \"Mcknight\", \"K9K 2K4\", \"Chile\" ],\n\t[ \"228\", \"Mufutau\", \"Henderson\", \"81377\", \"Mayotte\" ],\n\t[ \"229\", \"Herman\", \"Ferguson\", \"69405\", \"Japan\" ],\n\t[ \"230\", \"Abdul\", \"Franks\", \"L1V 8X2\", \"Portugal\" ],\n\t[ \"231\", \"Dominic\", \"Logan\", \"98770\", \"Saint Lucia\" ],\n\t[ \"232\", \"Isadora\", \"Solis\", \"Y3A 6H5\", \"Portugal\" ],\n\t[ \"233\", \"Lester\", \"Davis\", \"30339\", \"British Indian Ocean Territory\" ],\n\t[ \"234\", \"Joel\", \"Rojas\", \"N8E 5T9\", \"Bahrain\" ],\n\t[ \"235\", \"Quinlan\", \"Carroll\", \"55785\", \"Australia\" ],\n\t[ \"236\", \"Guinevere\", \"Pickett\", \"A7Y 3V3\", \"Netherlands Antilles\" ],\n\t[ \"237\", \"Nita\", \"Hopkins\", \"88370\", \"Albania\" ],\n\t[ \"238\", \"Hayley\", \"Buckley\", \"F1V 7P5\", \"Togo\" ],\n\t[ \"239\", \"Colorado\", \"Reyes\", \"18798\", \"Congo\" ],\n\t[ \"240\", \"Tashya\", \"Bartlett\", \"48537\", \"Sierra Leone\" ],\n\t[ \"241\", \"Isabella\", \"Keith\", \"48878\", \"Kiribati\" ],\n\t[ \"242\", \"Jessica\", \"Noble\", \"D6C 9T9\", \"Svalbard and Jan Mayen\" ],\n\t[ \"243\", \"Cairo\", \"Edwards\", \"40598\", \"Nepal\" ],\n\t[ \"244\", \"Camille\", \"Bradley\", \"I4U 8F6\", \"Fiji\" ],\n\t[ \"245\", \"Quin\", \"Mcgee\", \"O5D 2P0\", \"Poland\" ],\n\t[ \"246\", \"Rina\", \"Guzman\", \"44940\", \"Bahrain\" ],\n\t[ \"247\", \"Glenna\", \"Kirkland\", \"Z1L 4W2\", \"San Marino\" ],\n\t[ \"248\", \"Tarik\", \"Todd\", \"77228\", \"Turks and Caicos Islands\" ],\n\t[ \"249\", \"Yardley\", \"Burris\", \"M6U 9D7\", \"New Caledonia\" ],\n\t[ \"250\", \"Hashim\", \"Casey\", \"17722\", \"Lesotho\" ],\n\t[ \"251\", \"Maggie\", \"Raymond\", \"62540\", \"Uganda\" ],\n\t[ \"252\", \"Christian\", \"Mcdonald\", \"R8K 2M1\", \"United Arab Emirates\" ],\n\t[ \"253\", \"Colt\", \"Cobb\", \"75393\", \"Moldova\" ],\n\t[ \"254\", \"Aline\", \"Graves\", \"I1C 9I6\", \"Holy See (Vatican City State)\" ],\n\t[ \"255\", \"Farrah\", \"Cannon\", \"H5W 2Y0\", \"Bhutan\" ],\n\t[ \"256\", \"Wynne\", \"Ayers\", \"B6X 6Y8\", \"Western Sahara\" ],\n\t[ \"257\", \"Teegan\", \"Avery\", \"33643\", \"San Marino\" ],\n\t[ \"258\", \"Shana\", \"Sloan\", \"K9P 9V7\", \"Gabon\" ],\n\t[ \"259\", \"Britanney\", \"Cook\", \"Y5D 6K7\", \"Romania\" ],\n\t[ \"260\", \"Kuame\", \"Schroeder\", \"12859\", \"Syrian Arab Republic\" ],\n\t[ \"261\", \"Valentine\", \"Joseph\", \"P2S 6T6\", \"Mayotte\" ],\n\t[ \"262\", \"Joelle\", \"Keller\", \"U6F 3T7\", \"Fiji\" ],\n\t[ \"263\", \"Elaine\", \"Hickman\", \"28056\", \"Tuvalu\" ],\n\t[ \"264\", \"Ivor\", \"Malone\", \"H2Z 5X5\", \"Virgin Islands, British\" ],\n\t[ \"265\", \"Maris\", \"Jefferson\", \"12474\", \"Czech Republic\" ],\n\t[ \"266\", \"Josephine\", \"Zimmerman\", \"Z5J 2I4\", \"Angola\" ],\n\t[ \"267\", \"Baker\", \"Wooten\", \"X4K 2L8\", \"Austria\" ],\n\t[ \"268\", \"Alyssa\", \"Mitchell\", \"97712\", \"Antarctica\" ],\n\t[ \"269\", \"Carlos\", \"Pearson\", \"85838\", \"Gambia\" ],\n\t[ \"270\", \"Luke\", \"Richardson\", \"73867\", \"Christmas Island\" ],\n\t[ \"271\", \"Davis\", \"Gardner\", \"U2E 4D9\", \"Chile\" ],\n\t[ \"272\", \"Thomas\", \"Conner\", \"92487\", \"Mozambique\" ],\n\t[ \"273\", \"Kieran\", \"Baird\", \"X9G 6G1\", \"Iceland\" ],\n\t[ \"274\", \"Cheyenne\", \"Morris\", \"F5V 4S2\", \"Greece\" ],\n\t[ \"275\", \"Hillary\", \"Reeves\", \"89804\", \"Slovakia\" ],\n\t[ \"276\", \"Ryder\", \"Long\", \"32725\", \"New Caledonia\" ],\n\t[ \"277\", \"Ariel\", \"Colon\", \"50675\", \"Estonia\" ],\n\t[ \"278\", \"Vanna\", \"Hess\", \"79057\", \"Saudi Arabia\" ],\n\t[ \"279\", \"Hayley\", \"Cherry\", \"B5E 9X4\", \"United States Minor Outlying Islands\" ],\n\t[ \"280\", \"Knox\", \"Blair\", \"75626\", \"Central African Republic\" ],\n\t[ \"281\", \"Astra\", \"Mcdaniel\", \"24493\", \"Bermuda\" ],\n\t[ \"282\", \"Teegan\", \"Ford\", \"A8U 1K9\", \"Iran, Islamic Republic of\" ],\n\t[ \"283\", \"Harrison\", \"Jackson\", \"43519\", \"Marshall Islands\" ],\n\t[ \"284\", \"Melyssa\", \"Lawson\", \"O7E 8E6\", \"Belize\" ],\n\t[ \"285\", \"Shaine\", \"Francis\", \"Q5K 5I4\", \"India\" ],\n\t[ \"286\", \"August\", \"Reed\", \"S9R 1O8\", \"Ghana\" ],\n\t[ \"287\", \"Aphrodite\", \"Zimmerman\", \"28336\", \"Lesotho\" ],\n\t[ \"288\", \"Declan\", \"Walters\", \"08662\", \"Rwanda\" ],\n\t[ \"289\", \"Brody\", \"Pate\", \"G2G 9D9\", \"Serbia and Montenegro\" ],\n\t[ \"290\", \"Bradley\", \"Odom\", \"L2R 6Z9\", \"Jordan\" ],\n\t[ \"291\", \"Phillip\", \"Cleveland\", \"E4D 1B7\", \"Paraguay\" ],\n\t[ \"292\", \"Silas\", \"Wiggins\", \"F9F 5X3\", \"Bahrain\" ],\n\t[ \"293\", \"Keely\", \"Donaldson\", \"B5H 7F2\", \"Vanuatu\" ],\n\t[ \"294\", \"Hammett\", \"Lancaster\", \"H2P 4E6\", \"Svalbard and Jan Mayen\" ],\n\t[ \"295\", \"Kiara\", \"Clarke\", \"50885\", \"Thailand\" ],\n\t[ \"296\", \"Ayanna\", \"Wiley\", \"20773\", \"Morocco\" ],\n\t[ \"297\", \"Tashya\", \"Stanley\", \"F5J 5R9\", \"New Caledonia\" ],\n\t[ \"298\", \"Margaret\", \"Barker\", \"J5A 9N8\", \"Marshall Islands\" ],\n\t[ \"299\", \"Xandra\", \"English\", \"92299\", \"Korea, Republic of\" ],\n\t[ \"300\", \"Jane\", \"Brock\", \"86140\", \"Yemen\" ],\n\t[ \"301\", \"Lunea\", \"Garrett\", \"96730\", \"New Caledonia\" ],\n\t[ \"302\", \"Slade\", \"Everett\", \"16105\", \"Malawi\" ],\n\t[ \"303\", \"Scott\", \"Booker\", \"G8V 2R4\", \"Macedonia\" ],\n\t[ \"304\", \"Candice\", \"Decker\", \"E5R 2D4\", \"China\" ],\n\t[ \"305\", \"Armando\", \"Bridges\", \"87959\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"306\", \"Clayton\", \"Whitley\", \"Q6O 4M7\", \"British Indian Ocean Territory\" ],\n\t[ \"307\", \"Driscoll\", \"Duncan\", \"M2J 9V5\", \"Argentina\" ],\n\t[ \"308\", \"Devin\", \"Stafford\", \"L8F 2V7\", \"Svalbard and Jan Mayen\" ],\n\t[ \"309\", \"Bell\", \"York\", \"E5B 7X5\", \"Lebanon\" ],\n\t[ \"310\", \"Haley\", \"Becker\", \"19759\", \"Bhutan\" ],\n\t[ \"311\", \"Chava\", \"Santiago\", \"04396\", \"Israel\" ],\n\t[ \"312\", \"David\", \"Mccall\", \"62087\", \"Norfolk Island\" ],\n\t[ \"313\", \"Clinton\", \"Jacobson\", \"06168\", \"Guam\" ],\n\t[ \"314\", \"Melvin\", \"Kaufman\", \"C4E 9N6\", \"Gambia\" ],\n\t[ \"315\", \"Dai\", \"Shepherd\", \"37490\", \"Saudi Arabia\" ],\n\t[ \"316\", \"Zahir\", \"Chase\", \"44340\", \"Turkey\" ],\n\t[ \"317\", \"Leilani\", \"Parrish\", \"62576\", \"Cocos (Keeling) Islands\" ],\n\t[ \"318\", \"Oleg\", \"Wilkins\", \"Z7S 8Z4\", \"Latvia\" ],\n\t[ \"319\", \"Pearl\", \"Pena\", \"82526\", \"Saudi Arabia\" ],\n\t[ \"320\", \"Kelly\", \"Moody\", \"W7U 5Y3\", \"Burundi\" ],\n\t[ \"321\", \"Marcia\", \"Kennedy\", \"85952\", \"Panama\" ],\n\t[ \"322\", \"Cailin\", \"Burnett\", \"M2Z 3L5\", \"Guyana\" ],\n\t[ \"323\", \"Ciara\", \"Small\", \"X6C 6M6\", \"Tanzania, United Republic of\" ],\n\t[ \"324\", \"Lillian\", \"Massey\", \"Z8A 5U5\", \"Algeria\" ],\n\t[ \"325\", \"Garrett\", \"Elliott\", \"R5P 6T0\", \"Canada\" ],\n\t[ \"326\", \"Inga\", \"Daniels\", \"40156\", \"Cocos (Keeling) Islands\" ],\n\t[ \"327\", \"Barry\", \"Pena\", \"03593\", \"Tonga\" ],\n\t[ \"328\", \"Penelope\", \"Mcintyre\", \"29293\", \"Burkina Faso\" ],\n\t[ \"329\", \"Dante\", \"Kirk\", \"74038\", \"Lesotho\" ],\n\t[ \"330\", \"Owen\", \"Cole\", \"17968\", \"Rwanda\" ],\n\t[ \"331\", \"Brittany\", \"Edwards\", \"24507\", \"Paraguay\" ],\n\t[ \"332\", \"Zeph\", \"Bentley\", \"12000\", \"Guam\" ],\n\t[ \"333\", \"Ruth\", \"Palmer\", \"E8V 9A5\", \"Ghana\" ],\n\t[ \"334\", \"Driscoll\", \"Ellis\", \"X1X 2N5\", \"Angola\" ],\n\t[ \"335\", \"Mohammad\", \"Guerra\", \"Y9N 3Y5\", \"Mongolia\" ],\n\t[ \"336\", \"Clio\", \"Baldwin\", \"67557\", \"Morocco\" ],\n\t[ \"337\", \"Virginia\", \"Duncan\", \"J8D 4T2\", \"Haiti\" ],\n\t[ \"338\", \"Dieter\", \"Sanchez\", \"H7E 2H4\", \"Romania\" ],\n\t[ \"339\", \"Quinn\", \"Hurst\", \"K4E 2X6\", \"Reunion\" ],\n\t[ \"340\", \"Coby\", \"Kelly\", \"S1H 8N0\", \"Equatorial Guinea\" ],\n\t[ \"341\", \"Raja\", \"Solis\", \"S5G 9T5\", \"Grenada\" ],\n\t[ \"342\", \"Jordan\", \"Riddle\", \"J7M 5X3\", \"Svalbard and Jan Mayen\" ],\n\t[ \"343\", \"Dora\", \"Knox\", \"25054\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"344\", \"Brendan\", \"Reilly\", \"U9U 3F7\", \"Armenia\" ],\n\t[ \"345\", \"Melyssa\", \"Reyes\", \"11285\", \"Viet Nam\" ],\n\t[ \"346\", \"Knox\", \"Rivera\", \"N8Z 7J0\", \"Nepal\" ],\n\t[ \"347\", \"Quynn\", \"Irwin\", \"26524\", \"Chile\" ],\n\t[ \"348\", \"Colin\", \"Coleman\", \"22833\", \"United Arab Emirates\" ],\n\t[ \"349\", \"Sybil\", \"Delgado\", \"99947\", \"Belize\" ],\n\t[ \"350\", \"Macaulay\", \"Salinas\", \"48521\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"351\", \"Garrison\", \"Hogan\", \"68950\", \"India\" ],\n\t[ \"352\", \"Ronan\", \"Guerra\", \"55445\", \"Angola\" ],\n\t[ \"353\", \"Regina\", \"Andrews\", \"H3E 3T0\", \"Central African Republic\" ],\n\t[ \"354\", \"Colorado\", \"Joyce\", \"V6X 5K8\", \"Anguilla\" ],\n\t[ \"355\", \"Basia\", \"Banks\", \"85049\", \"Grenada\" ],\n\t[ \"356\", \"Adena\", \"Berg\", \"04135\", \"New Caledonia\" ],\n\t[ \"357\", \"Wade\", \"Richardson\", \"C8M 9J3\", \"Dominican Republic\" ],\n\t[ \"358\", \"Cody\", \"Montoya\", \"22018\", \"Solomon Islands\" ],\n\t[ \"359\", \"Faith\", \"Barnett\", \"61475\", \"China\" ],\n\t[ \"360\", \"Cody\", \"Witt\", \"C8I 2Q8\", \"Congo\" ],\n\t[ \"361\", \"Brenden\", \"Carlson\", \"74007\", \"Marshall Islands\" ],\n\t[ \"362\", \"Gil\", \"Brooks\", \"U4S 5N1\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"363\", \"Kirestin\", \"Watts\", \"H8I 1D5\", \"Myanmar\" ],\n\t[ \"364\", \"Amelia\", \"Gilliam\", \"11461\", \"Chile\" ],\n\t[ \"365\", \"Noelani\", \"Rhodes\", \"83320\", \"Cuba\" ],\n\t[ \"366\", \"Len\", \"Trevino\", \"W9F 2U5\", \"Armenia\" ],\n\t[ \"367\", \"Galvin\", \"Middleton\", \"86707\", \"Thailand\" ],\n\t[ \"368\", \"Germaine\", \"Bridges\", \"90283\", \"Japan\" ],\n\t[ \"369\", \"Rose\", \"Hines\", \"W7L 7Q6\", \"Congo\" ],\n\t[ \"370\", \"Hop\", \"Mueller\", \"I3E 2X8\", \"Angola\" ],\n\t[ \"371\", \"Iliana\", \"Williamson\", \"56758\", \"Lebanon\" ],\n\t[ \"372\", \"Raja\", \"Price\", \"49603\", \"Armenia\" ],\n\t[ \"373\", \"Jeanette\", \"Hatfield\", \"E3K 5N5\", \"India\" ],\n\t[ \"374\", \"Brittany\", \"Christensen\", \"04750\", \"Uruguay\" ],\n\t[ \"375\", \"Inga\", \"Prince\", \"D4X 6J5\", \"Switzerland\" ],\n\t[ \"376\", \"Cherokee\", \"Ballard\", \"U1O 1M0\", \"Rwanda\" ],\n\t[ \"377\", \"Deirdre\", \"Watson\", \"46983\", \"Sri Lanka\" ],\n\t[ \"378\", \"Amanda\", \"Parrish\", \"99838\", \"Hong Kong\" ],\n\t[ \"379\", \"Leo\", \"Shannon\", \"L3N 3J0\", \"Brunei Darussalam\" ],\n\t[ \"380\", \"Kimberly\", \"Clemons\", \"88734\", \"South Africa\" ],\n\t[ \"381\", \"Seth\", \"Langley\", \"D6A 1Q9\", \"Guyana\" ],\n\t[ \"382\", \"Carol\", \"Blankenship\", \"X5N 2A7\", \"Angola\" ],\n\t[ \"383\", \"Dora\", \"Flores\", \"F8F 1O5\", \"Poland\" ],\n\t[ \"384\", \"Chava\", \"Dickson\", \"P8B 6W6\", \"Comoros\" ],\n\t[ \"385\", \"Trevor\", \"Mcdowell\", \"31382\", \"Solomon Islands\" ],\n\t[ \"386\", \"Alec\", \"Valentine\", \"P2R 4K7\", \"Greenland\" ],\n\t[ \"387\", \"Philip\", \"Jenkins\", \"Q7X 5U5\", \"Aruba\" ],\n\t[ \"388\", \"Kim\", \"Bowen\", \"69873\", \"Saint Kitts and Nevis\" ],\n\t[ \"389\", \"Allegra\", \"Oconnor\", \"X3Y 1X3\", \"Holy See (Vatican City State)\" ],\n\t[ \"390\", \"Daria\", \"Briggs\", \"A7Z 7P4\", \"Serbia and Montenegro\" ],\n\t[ \"391\", \"Amelia\", \"Wiley\", \"D4S 1G5\", \"Montserrat\" ],\n\t[ \"392\", \"Erica\", \"Aguirre\", \"H5L 2O3\", \"Andorra\" ],\n\t[ \"393\", \"Kibo\", \"Sawyer\", \"30638\", \"Guyana\" ],\n\t[ \"394\", \"Jackson\", \"Meyers\", \"P4N 9D6\", \"Bangladesh\" ],\n\t[ \"395\", \"Kirk\", \"Baxter\", \"F3M 7S6\", \"Estonia\" ],\n\t[ \"396\", \"Sybil\", \"Christian\", \"B3Q 2X0\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"397\", \"Ina\", \"Mercer\", \"N4S 1K8\", \"Korea\" ],\n\t[ \"398\", \"Kiara\", \"Whitehead\", \"86023\", \"Nicaragua\" ],\n\t[ \"399\", \"Vielka\", \"Hays\", \"29845\", \"Malta\" ],\n\t[ \"400\", \"Stacey\", \"Carlson\", \"53218\", \"Cook Islands\" ],\n\t[ \"401\", \"Selma\", \"Lloyd\", \"78256\", \"Turkey\" ],\n\t[ \"402\", \"Rhoda\", \"Mcintosh\", \"G8X 1C8\", \"Guatemala\" ],\n\t[ \"403\", \"Teagan\", \"Ochoa\", \"99752\", \"Barbados\" ],\n\t[ \"404\", \"Rebecca\", \"Carver\", \"82661\", \"Saint Kitts and Nevis\" ],\n\t[ \"405\", \"Yael\", \"Woodward\", \"66095\", \"Niger\" ],\n\t[ \"406\", \"Calvin\", \"Huffman\", \"82172\", \"Somalia\" ],\n\t[ \"407\", \"Sopoline\", \"Walters\", \"K5L 3I7\", \"Spain\" ],\n\t[ \"408\", \"Hollee\", \"Powell\", \"05572\", \"Samoa\" ],\n\t[ \"409\", \"Fiona\", \"Frank\", \"74456\", \"Timor-leste\" ],\n\t[ \"410\", \"Alana\", \"Hubbard\", \"76011\", \"Lithuania\" ],\n\t[ \"411\", \"Lillian\", \"Garcia\", \"J5Z 2O5\", \"Sierra Leone\" ],\n\t[ \"412\", \"Tad\", \"Mcleod\", \"B6A 8Z4\", \"Australia\" ],\n\t[ \"413\", \"Hadassah\", \"Hall\", \"47417\", \"China\" ],\n\t[ \"414\", \"Regan\", \"Summers\", \"X4L 4I6\", \"Honduras\" ],\n\t[ \"415\", \"Herrod\", \"Erickson\", \"R8G 3V0\", \"Israel\" ],\n\t[ \"416\", \"Autumn\", \"Rojas\", \"31205\", \"Cocos (Keeling) Islands\" ],\n\t[ \"417\", \"Castor\", \"Mooney\", \"92737\", \"Grenada\" ],\n\t[ \"418\", \"Wesley\", \"Holman\", \"57125\", \"Greenland\" ],\n\t[ \"419\", \"Kitra\", \"Wooten\", \"Q6X 4Y0\", \"Mongolia\" ],\n\t[ \"420\", \"Buckminster\", \"Rice\", \"U8B 7B8\", \"Tokelau\" ],\n\t[ \"421\", \"Xavier\", \"Hardin\", \"18280\", \"Iran, Islamic Republic of\" ],\n\t[ \"422\", \"Sopoline\", \"Fleming\", \"78437\", \"Singapore\" ],\n\t[ \"423\", \"Sydney\", \"Salinas\", \"23801\", \"Cook Islands\" ],\n\t[ \"424\", \"Bethany\", \"Rosales\", \"89650\", \"United States\" ],\n\t[ \"425\", \"Deirdre\", \"Hensley\", \"F3X 1B7\", \"Micronesia\" ],\n\t[ \"426\", \"Bernard\", \"Vargas\", \"S4D 9T0\", \"Uzbekistan\" ],\n\t[ \"427\", \"Merrill\", \"Compton\", \"17713\", \"Suriname\" ],\n\t[ \"428\", \"Carly\", \"Baird\", \"D3H 5G3\", \"United States Minor Outlying Islands\" ],\n\t[ \"429\", \"Grace\", \"Phelps\", \"64695\", \"Nauru\" ],\n\t[ \"430\", \"Kareem\", \"Stone\", \"65572\", \"Netherlands\" ],\n\t[ \"431\", \"Susan\", \"Newton\", \"04627\", \"Anguilla\" ],\n\t[ \"432\", \"Laura\", \"Miranda\", \"E1G 2R7\", \"Finland\" ],\n\t[ \"433\", \"Madaline\", \"Pugh\", \"J9A 9M5\", \"Senegal\" ],\n\t[ \"434\", \"Sophia\", \"Mendez\", \"33789\", \"Timor-leste\" ],\n\t[ \"435\", \"Roary\", \"Greene\", \"61774\", \"Canada\" ],\n\t[ \"436\", \"Amos\", \"Gilliam\", \"94933\", \"Sri Lanka\" ],\n\t[ \"437\", \"Ivory\", \"Joyner\", \"15379\", \"San Marino\" ],\n\t[ \"438\", \"Jorden\", \"Robbins\", \"43400\", \"Russian Federation\" ],\n\t[ \"439\", \"Merritt\", \"Holcomb\", \"R1I 3C7\", \"Brazil\" ],\n\t[ \"440\", \"Iliana\", \"Johnston\", \"U9W 8N2\", \"Trinidad and Tobago\" ],\n\t[ \"441\", \"Ivana\", \"Patterson\", \"G5O 6A5\", \"Georgia\" ],\n\t[ \"442\", \"Sydney\", \"Mccullough\", \"W9M 2H5\", \"American Samoa\" ],\n\t[ \"443\", \"Alvin\", \"Fulton\", \"X8A 8R5\", \"Antigua and Barbuda\" ],\n\t[ \"444\", \"Alfreda\", \"Lopez\", \"42499\", \"Montserrat\" ],\n\t[ \"445\", \"Ethan\", \"Bird\", \"W9A 8M1\", \"British Indian Ocean Territory\" ],\n\t[ \"446\", \"Zeus\", \"Logan\", \"01682\", \"San Marino\" ],\n\t[ \"447\", \"Nehru\", \"Andrews\", \"W8J 3C8\", \"Dominican Republic\" ],\n\t[ \"448\", \"Donna\", \"Booth\", \"64754\", \"Nepal\" ],\n\t[ \"449\", \"Cruz\", \"Bruce\", \"17429\", \"Burundi\" ],\n\t[ \"450\", \"Ronan\", \"Saunders\", \"69957\", \"South Africa\" ],\n\t[ \"451\", \"Jordan\", \"Barnes\", \"D8K 9L8\", \"Dominica\" ],\n\t[ \"452\", \"Carly\", \"Love\", \"D8Z 3P4\", \"Mauritania\" ],\n\t[ \"453\", \"Mari\", \"George\", \"60260\", \"Japan\" ],\n\t[ \"454\", \"Karly\", \"Hodges\", \"15790\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"455\", \"Rana\", \"Logan\", \"M1R 6Y6\", \"Bosnia and Herzegovina\" ],\n\t[ \"456\", \"Theodore\", \"Sims\", \"C7A 8T2\", \"Barbados\" ],\n\t[ \"457\", \"Quin\", \"Thompson\", \"26884\", \"Bouvet Island\" ],\n\t[ \"458\", \"Kimberley\", \"Sloan\", \"S5T 8E3\", \"Costa Rica\" ],\n\t[ \"459\", \"Upton\", \"Valenzuela\", \"Z6J 6Q1\", \"Macao\" ],\n\t[ \"460\", \"Clinton\", \"Williams\", \"Z3O 7C4\", \"Germany\" ],\n\t[ \"461\", \"Samson\", \"Mathis\", \"G1T 1V9\", \"Senegal\" ],\n\t[ \"462\", \"Michelle\", \"Frost\", \"87113\", \"Serbia and Montenegro\" ],\n\t[ \"463\", \"Tyrone\", \"Coffey\", \"80705\", \"Albania\" ],\n\t[ \"464\", \"Alea\", \"Delaney\", \"E4S 4K4\", \"Guyana\" ],\n\t[ \"465\", \"Dominique\", \"Schwartz\", \"81368\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"466\", \"Benedict\", \"Norton\", \"D1C 9C8\", \"Cyprus\" ],\n\t[ \"467\", \"Vaughan\", \"Stein\", \"R7K 1L8\", \"Egypt\" ],\n\t[ \"468\", \"Charles\", \"Foley\", \"20434\", \"Anguilla\" ],\n\t[ \"469\", \"Arden\", \"Ramos\", \"54065\", \"Gibraltar\" ],\n\t[ \"470\", \"Dillon\", \"Patel\", \"L6H 1H6\", \"Liberia\" ],\n\t[ \"471\", \"Gretchen\", \"Davenport\", \"57188\", \"Equatorial Guinea\" ],\n\t[ \"472\", \"Ivy\", \"Randall\", \"52617\", \"Costa Rica\" ],\n\t[ \"473\", \"Brett\", \"Baird\", \"45791\", \"Hungary\" ],\n\t[ \"474\", \"Wyoming\", \"Sparks\", \"11266\", \"Luxembourg\" ],\n\t[ \"475\", \"Rashad\", \"Roy\", \"47012\", \"Guam\" ],\n\t[ \"476\", \"Sopoline\", \"Le\", \"M1G 2P8\", \"United Arab Emirates\" ],\n\t[ \"477\", \"Ursa\", \"Haynes\", \"53774\", \"British Indian Ocean Territory\" ],\n\t[ \"478\", \"Maia\", \"Vincent\", \"26773\", \"New Caledonia\" ],\n\t[ \"479\", \"Salvador\", \"Pace\", \"S9E 2C4\", \"Egypt\" ],\n\t[ \"480\", \"Bethany\", \"Wilcox\", \"F2H 7N0\", \"Uzbekistan\" ],\n\t[ \"481\", \"Sara\", \"Brooks\", \"08176\", \"Holy See (Vatican City State)\" ],\n\t[ \"482\", \"Lillith\", \"Sampson\", \"75576\", \"British Indian Ocean Territory\" ],\n\t[ \"483\", \"Brynne\", \"Browning\", \"N4K 7P6\", \"Peru\" ],\n\t[ \"484\", \"Beck\", \"Tran\", \"06815\", \"Cambodia\" ],\n\t[ \"485\", \"Peter\", \"Hurley\", \"05770\", \"Rwanda\" ],\n\t[ \"486\", \"Buffy\", \"Sharpe\", \"H8F 8G6\", \"Georgia\" ],\n\t[ \"487\", \"Harrison\", \"Cross\", \"Y1A 1R8\", \"United Kingdom\" ],\n\t[ \"488\", \"Ursa\", \"Wolf\", \"J8C 9Q8\", \"French Polynesia\" ],\n\t[ \"489\", \"Nayda\", \"Vasquez\", \"05523\", \"Taiwan, Province of China\" ],\n\t[ \"490\", \"Gretchen\", \"Walters\", \"28628\", \"Seychelles\" ],\n\t[ \"491\", \"Adrian\", \"Hickman\", \"17956\", \"El Salvador\" ],\n\t[ \"492\", \"Laura\", \"Moon\", \"32103\", \"Myanmar\" ],\n\t[ \"493\", \"Kellie\", \"Barnett\", \"L5Z 2U8\", \"Saint Helena\" ],\n\t[ \"494\", \"Illana\", \"Stanton\", \"Z5D 2G0\", \"Australia\" ],\n\t[ \"495\", \"Jescie\", \"Santiago\", \"D9L 4B5\", \"Cambodia\" ],\n\t[ \"496\", \"Laura\", \"Hopkins\", \"X6V 9S5\", \"Netherlands Antilles\" ],\n\t[ \"497\", \"Vielka\", \"Harding\", \"U6A 9T2\", \"Cambodia\" ],\n\t[ \"498\", \"Walter\", \"Gentry\", \"L3X 9Q9\", \"Slovenia\" ],\n\t[ \"499\", \"Sara\", \"Atkinson\", \"67146\", \"Guinea\" ],\n\t[ \"500\", \"Yolanda\", \"Chambers\", \"Q8D 3W0\", \"Zimbabwe\" ],\n\t[ \"501\", \"Josiah\", \"Villarreal\", \"I1V 6Y7\", \"Burkina Faso\" ],\n\t[ \"502\", \"Hayfa\", \"Bowman\", \"77148\", \"Saudi Arabia\" ],\n\t[ \"503\", \"Colette\", \"Conley\", \"41232\", \"Estonia\" ],\n\t[ \"504\", \"Lana\", \"Doyle\", \"32962\", \"Cuba\" ],\n\t[ \"505\", \"Keegan\", \"Goodwin\", \"M2P 1X3\", \"Cocos (Keeling) Islands\" ],\n\t[ \"506\", \"Nina\", \"Cross\", \"49580\", \"Germany\" ],\n\t[ \"507\", \"Xenos\", \"Cervantes\", \"K6X 7W8\", \"Mauritius\" ],\n\t[ \"508\", \"Jared\", \"Hester\", \"30156\", \"Uzbekistan\" ],\n\t[ \"509\", \"Damon\", \"Curry\", \"U2J 2D8\", \"Pitcairn\" ],\n\t[ \"510\", \"Amery\", \"Savage\", \"O1S 2Z4\", \"Turkmenistan\" ],\n\t[ \"511\", \"Brian\", \"Wilkinson\", \"J6O 4T0\", \"Luxembourg\" ],\n\t[ \"512\", \"Ivory\", \"Mckinney\", \"L3E 8M2\", \"Lithuania\" ],\n\t[ \"513\", \"Eric\", \"Dalton\", \"Y1L 6F4\", \"Ethiopia\" ],\n\t[ \"514\", \"Brandon\", \"Callahan\", \"K6Q 9B4\", \"Haiti\" ],\n\t[ \"515\", \"Phillip\", \"Mclean\", \"18836\", \"Ethiopia\" ],\n\t[ \"516\", \"Carly\", \"Greer\", \"16811\", \"Mayotte\" ],\n\t[ \"517\", \"Stone\", \"Ware\", \"58795\", \"Moldova\" ],\n\t[ \"518\", \"Xena\", \"Hayden\", \"97158\", \"Chad\" ],\n\t[ \"519\", \"Catherine\", \"Leonard\", \"77868\", \"Azerbaijan\" ],\n\t[ \"520\", \"Bernard\", \"Horton\", \"04270\", \"Yemen\" ],\n\t[ \"521\", \"Olga\", \"Richmond\", \"89169\", \"Lebanon\" ],\n\t[ \"522\", \"Iris\", \"Cummings\", \"78836\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"523\", \"Beau\", \"Mccall\", \"78638\", \"Monaco\" ],\n\t[ \"524\", \"Michael\", \"Humphrey\", \"Q1A 2W9\", \"Tokelau\" ],\n\t[ \"525\", \"Oren\", \"Stevens\", \"F4V 9G7\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"526\", \"Ima\", \"Shelton\", \"19295\", \"Mozambique\" ],\n\t[ \"527\", \"Merritt\", \"Morrison\", \"K6W 5R0\", \"Georgia\" ],\n\t[ \"528\", \"Vera\", \"Cherry\", \"54993\", \"Angola\" ],\n\t[ \"529\", \"Grant\", \"Turner\", \"B4V 2J0\", \"Saint Helena\" ],\n\t[ \"530\", \"Odette\", \"Snyder\", \"N9L 2V8\", \"Chad\" ],\n\t[ \"531\", \"Uma\", \"Stewart\", \"E9A 6X9\", \"Bhutan\" ],\n\t[ \"532\", \"Kylee\", \"Best\", \"11393\", \"Malaysia\" ],\n\t[ \"533\", \"Nicholas\", \"Mercado\", \"85179\", \"Switzerland\" ],\n\t[ \"534\", \"Nathaniel\", \"Stuart\", \"M1Q 6Z6\", \"Mongolia\" ],\n\t[ \"535\", \"Ruth\", \"Conrad\", \"T7G 9V6\", \"Guadeloupe\" ],\n\t[ \"536\", \"Deanna\", \"Dudley\", \"79721\", \"Kiribati\" ],\n\t[ \"537\", \"David\", \"Thornton\", \"C6R 2G3\", \"Netherlands Antilles\" ],\n\t[ \"538\", \"Jane\", \"Ashley\", \"48711\", \"Rwanda\" ],\n\t[ \"539\", \"Nero\", \"Curry\", \"20590\", \"Denmark\" ],\n\t[ \"540\", \"Kellie\", \"Poole\", \"46053\", \"Martinique\" ],\n\t[ \"541\", \"Freya\", \"Burch\", \"W5R 8Y5\", \"Northern Mariana Islands\" ],\n\t[ \"542\", \"Maxwell\", \"Mcbride\", \"D4W 4M3\", \"Paraguay\" ],\n\t[ \"543\", \"Dawn\", \"Sargent\", \"85956\", \"Gibraltar\" ],\n\t[ \"544\", \"Lilah\", \"Matthews\", \"J4D 8A9\", \"Montserrat\" ],\n\t[ \"545\", \"Salvador\", \"Burns\", \"28067\", \"Bhutan\" ],\n\t[ \"546\", \"Ezekiel\", \"Ayala\", \"67153\", \"Wallis and Futuna\" ],\n\t[ \"547\", \"Evan\", \"Barker\", \"83026\", \"Puerto Rico\" ],\n\t[ \"548\", \"Jemima\", \"Case\", \"U3S 7N6\", \"Georgia\" ],\n\t[ \"549\", \"Belle\", \"Mcconnell\", \"H4S 9F8\", \"Angola\" ],\n\t[ \"550\", \"Doris\", \"Mays\", \"57387\", \"Tonga\" ],\n\t[ \"551\", \"Carson\", \"Buchanan\", \"20457\", \"Guatemala\" ],\n\t[ \"552\", \"Calista\", \"Lamb\", \"26851\", \"Gibraltar\" ],\n\t[ \"553\", \"Remedios\", \"Haley\", \"A9K 5M1\", \"Tokelau\" ],\n\t[ \"554\", \"Odette\", \"Mccarty\", \"Y8B 3V4\", \"Marshall Islands\" ],\n\t[ \"555\", \"Libby\", \"Pugh\", \"93261\", \"Netherlands\" ],\n\t[ \"556\", \"Bo\", \"Maldonado\", \"C1H 1K7\", \"Oman\" ],\n\t[ \"557\", \"Cameron\", \"Beasley\", \"41821\", \"Northern Mariana Islands\" ],\n\t[ \"558\", \"Chadwick\", \"Crosby\", \"62855\", \"New Caledonia\" ],\n\t[ \"559\", \"Steven\", \"Barrett\", \"92102\", \"Pakistan\" ],\n\t[ \"560\", \"Jonas\", \"Valdez\", \"N3V 4R9\", \"Bulgaria\" ],\n\t[ \"561\", \"Harlan\", \"Larsen\", \"Z8F 6A0\", \"Cayman Islands\" ],\n\t[ \"562\", \"Iola\", \"Joyner\", \"D1J 4C3\", \"Italy\" ],\n\t[ \"563\", \"Abra\", \"Medina\", \"Q9O 5J2\", \"Cambodia\" ],\n\t[ \"564\", \"Solomon\", \"Davidson\", \"91317\", \"Turkmenistan\" ],\n\t[ \"565\", \"Alisa\", \"Kim\", \"33036\", \"Austria\" ],\n\t[ \"566\", \"Deacon\", \"Silva\", \"Z5L 6M0\", \"Djibouti\" ],\n\t[ \"567\", \"Bree\", \"Landry\", \"43135\", \"Czech Republic\" ],\n\t[ \"568\", \"Molly\", \"Leach\", \"71714\", \"Botswana\" ],\n\t[ \"569\", \"Idona\", \"Cain\", \"A2J 1R8\", \"South Georgia and The South Sandwich Islands\" ],\n\t[ \"570\", \"Aileen\", \"Salinas\", \"90344\", \"Uzbekistan\" ],\n\t[ \"571\", \"Dominique\", \"Cooper\", \"31803\", \"Sao Tome and Principe\" ],\n\t[ \"572\", \"Lunea\", \"Pollard\", \"S9R 7B0\", \"Sweden\" ],\n\t[ \"573\", \"Leo\", \"Combs\", \"W7E 8T4\", \"Ukraine\" ],\n\t[ \"574\", \"Illiana\", \"Donovan\", \"D8K 3R4\", \"Palau\" ],\n\t[ \"575\", \"Orlando\", \"Vaughan\", \"Q4I 3E3\", \"Bosnia and Herzegovina\" ],\n\t[ \"576\", \"Yuri\", \"Blake\", \"I9W 5U5\", \"Seychelles\" ],\n\t[ \"577\", \"Amanda\", \"Baldwin\", \"19752\", \"Turkmenistan\" ],\n\t[ \"578\", \"Hanna\", \"Emerson\", \"73316\", \"Antigua and Barbuda\" ],\n\t[ \"579\", \"Xyla\", \"Atkins\", \"11151\", \"Uganda\" ],\n\t[ \"580\", \"Nathaniel\", \"Patterson\", \"00391\", \"Portugal\" ],\n\t[ \"581\", \"Naida\", \"Cote\", \"17484\", \"Mauritius\" ],\n\t[ \"582\", \"Scarlett\", \"Little\", \"V8N 8A6\", \"Sao Tome and Principe\" ],\n\t[ \"583\", \"Odessa\", \"Kerr\", \"56456\", \"Sweden\" ],\n\t[ \"584\", \"Kamal\", \"Richardson\", \"F6S 4I1\", \"Algeria\" ],\n\t[ \"585\", \"Griffith\", \"Morton\", \"I5H 2Z0\", \"Vanuatu\" ],\n\t[ \"586\", \"Orli\", \"Santana\", \"48213\", \"Burundi\" ],\n\t[ \"587\", \"Courtney\", \"Cook\", \"R3O 3A9\", \"Cape Verde\" ],\n\t[ \"588\", \"Jolene\", \"Wallace\", \"F6Q 7W8\", \"Zambia\" ],\n\t[ \"589\", \"Bert\", \"Sharp\", \"X7T 7Z8\", \"Paraguay\" ],\n\t[ \"590\", \"Ila\", \"Carver\", \"E4M 7P4\", \"Paraguay\" ],\n\t[ \"591\", \"Merrill\", \"Wall\", \"49416\", \"Fiji\" ],\n\t[ \"592\", \"Hanae\", \"Espinoza\", \"Y6D 6K8\", \"Turkey\" ],\n\t[ \"593\", \"Stephanie\", \"Bond\", \"Z1Q 3P3\", \"Algeria\" ],\n\t[ \"594\", \"Lionel\", \"Leonard\", \"U8O 7G6\", \"Nauru\" ],\n\t[ \"595\", \"Faith\", \"Ramirez\", \"75181\", \"Slovakia\" ],\n\t[ \"596\", \"Fritz\", \"Glass\", \"62878\", \"El Salvador\" ],\n\t[ \"597\", \"Raya\", \"Gardner\", \"L3E 2C7\", \"India\" ],\n\t[ \"598\", \"Brynne\", \"Price\", \"W1S 6O9\", \"Lithuania\" ],\n\t[ \"599\", \"Karen\", \"Gray\", \"O4X 8F6\", \"Albania\" ],\n\t[ \"600\", \"Perry\", \"Goodwin\", \"44266\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"601\", \"Dylan\", \"Glover\", \"76573\", \"Estonia\" ],\n\t[ \"602\", \"Melinda\", \"Holloway\", \"07861\", \"Grenada\" ],\n\t[ \"603\", \"Rahim\", \"Robinson\", \"D7M 1E8\", \"Madagascar\" ],\n\t[ \"604\", \"Ori\", \"Oconnor\", \"10386\", \"Antarctica\" ],\n\t[ \"605\", \"Candace\", \"Preston\", \"03610\", \"Denmark\" ],\n\t[ \"606\", \"Wing\", \"Howe\", \"E6U 3H2\", \"Burundi\" ],\n\t[ \"607\", \"Lucy\", \"Eaton\", \"26436\", \"Guinea\" ],\n\t[ \"608\", \"Ignatius\", \"Blevins\", \"93597\", \"Serbia and Montenegro\" ],\n\t[ \"609\", \"Nadine\", \"Franco\", \"80096\", \"Tonga\" ],\n\t[ \"610\", \"Shoshana\", \"Walters\", \"S4F 5O8\", \"Micronesia\" ],\n\t[ \"611\", \"Remedios\", \"Buckner\", \"29213\", \"Antigua and Barbuda\" ],\n\t[ \"612\", \"Adam\", \"Horne\", \"F8V 1V8\", \"Oman\" ],\n\t[ \"613\", \"Kieran\", \"Saunders\", \"I7A 7Y5\", \"Japan\" ],\n\t[ \"614\", \"Isabelle\", \"Fletcher\", \"K2K 3K5\", \"Norway\" ],\n\t[ \"615\", \"Ryder\", \"Ballard\", \"38518\", \"Tanzania, United Republic of\" ],\n\t[ \"616\", \"Nina\", \"Guerrero\", \"61142\", \"Saint Kitts and Nevis\" ],\n\t[ \"617\", \"Sheila\", \"Poole\", \"E2H 6I6\", \"Denmark\" ],\n\t[ \"618\", \"Melyssa\", \"Mcdaniel\", \"08247\", \"Netherlands Antilles\" ],\n\t[ \"619\", \"Leila\", \"Vang\", \"Q5Z 3S1\", \"United States Minor Outlying Islands\" ],\n\t[ \"620\", \"Grady\", \"Aguilar\", \"R1I 8I8\", \"Slovenia\" ],\n\t[ \"621\", \"Plato\", \"Terrell\", \"23916\", \"Kuwait\" ],\n\t[ \"622\", \"Rama\", \"Perkins\", \"56506\", \"Russian Federation\" ],\n\t[ \"623\", \"Boris\", \"Chaney\", \"66737\", \"Antigua and Barbuda\" ],\n\t[ \"624\", \"Edward\", \"Clarke\", \"30722\", \"Iraq\" ],\n\t[ \"625\", \"Skyler\", \"Wise\", \"53248\", \"Taiwan, Province of China\" ],\n\t[ \"626\", \"Uta\", \"Cox\", \"85242\", \"Malawi\" ],\n\t[ \"627\", \"Lesley\", \"Watkins\", \"26710\", \"Estonia\" ],\n\t[ \"628\", \"Gray\", \"Harrison\", \"C5L 9Y7\", \"Nepal\" ],\n\t[ \"629\", \"Joan\", \"Flores\", \"J5Q 2B9\", \"Tajikistan\" ],\n\t[ \"630\", \"Reece\", \"Lott\", \"85152\", \"Algeria\" ],\n\t[ \"631\", \"Jerome\", \"Faulkner\", \"V1K 3N2\", \"Kiribati\" ],\n\t[ \"632\", \"Jackson\", \"Hudson\", \"85932\", \"Botswana\" ],\n\t[ \"633\", \"Uma\", \"Booker\", \"79755\", \"Senegal\" ],\n\t[ \"634\", \"Katelyn\", \"Gillespie\", \"Q8P 4V9\", \"Eritrea\" ],\n\t[ \"635\", \"Clio\", \"Tillman\", \"67552\", \"Liberia\" ],\n\t[ \"636\", \"Anjolie\", \"Nixon\", \"36615\", \"Botswana\" ],\n\t[ \"637\", \"Nell\", \"Lee\", \"T9S 4R3\", \"French Southern Territories\" ],\n\t[ \"638\", \"Anthony\", \"Aguirre\", \"85443\", \"Morocco\" ],\n\t[ \"639\", \"Aaron\", \"Green\", \"90326\", \"Faroe Islands\" ],\n\t[ \"640\", \"Galvin\", \"Yang\", \"A4X 8H6\", \"Ukraine\" ],\n\t[ \"641\", \"Yoshi\", \"Strickland\", \"52538\", \"Brazil\" ],\n\t[ \"642\", \"Brenden\", \"Kirkland\", \"X7P 8V9\", \"Turks and Caicos Islands\" ],\n\t[ \"643\", \"Bree\", \"Stone\", \"U4L 2H2\", \"Hong Kong\" ],\n\t[ \"644\", \"Quin\", \"Tanner\", \"U4A 1X4\", \"Faroe Islands\" ],\n\t[ \"645\", \"Camilla\", \"Heath\", \"91749\", \"Andorra\" ],\n\t[ \"646\", \"Xaviera\", \"Bullock\", \"I4U 7W0\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"647\", \"Kay\", \"Rowe\", \"59689\", \"Iceland\" ],\n\t[ \"648\", \"Lance\", \"Bond\", \"66558\", \"Spain\" ],\n\t[ \"649\", \"Fredericka\", \"Langley\", \"48782\", \"Cayman Islands\" ],\n\t[ \"650\", \"Charles\", \"Avila\", \"42037\", \"Papua New Guinea\" ],\n\t[ \"651\", \"Ramona\", \"Rios\", \"T5M 3E1\", \"Argentina\" ],\n\t[ \"652\", \"Ezekiel\", \"Young\", \"W8X 4S7\", \"French Polynesia\" ],\n\t[ \"653\", \"Celeste\", \"Dodson\", \"19140\", \"Benin\" ],\n\t[ \"654\", \"Frances\", \"Mcintosh\", \"91246\", \"Swaziland\" ],\n\t[ \"655\", \"Deanna\", \"Hyde\", \"J8P 3T5\", \"Croatia\" ],\n\t[ \"656\", \"Dahlia\", \"Blair\", \"45364\", \"Kazakhstan\" ],\n\t[ \"657\", \"Jade\", \"Hayes\", \"I5Q 3S9\", \"Malawi\" ],\n\t[ \"658\", \"Robin\", \"Bullock\", \"G9Q 2P8\", \"Ireland\" ],\n\t[ \"659\", \"Nasim\", \"Bond\", \"I2V 8N4\", \"Macedonia\" ],\n\t[ \"660\", \"Axel\", \"Pickett\", \"18370\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"661\", \"Pearl\", \"Lee\", \"G1R 3R8\", \"Poland\" ],\n\t[ \"662\", \"Garth\", \"Meyers\", \"90308\", \"Georgia\" ],\n\t[ \"663\", \"Ivory\", \"Rios\", \"S8F 8R5\", \"Mexico\" ],\n\t[ \"664\", \"Jerome\", \"Lambert\", \"N1Q 6R8\", \"Saint Lucia\" ],\n\t[ \"665\", \"Meredith\", \"Clark\", \"27720\", \"Cocos (Keeling) Islands\" ],\n\t[ \"666\", \"Armando\", \"Holcomb\", \"M6D 4X0\", \"Oman\" ],\n\t[ \"667\", \"Rowan\", \"Page\", \"00307\", \"Nauru\" ],\n\t[ \"668\", \"Kyla\", \"Brown\", \"F4W 4C5\", \"Holy See (Vatican City State)\" ],\n\t[ \"669\", \"Leigh\", \"Sosa\", \"28499\", \"Uruguay\" ],\n\t[ \"670\", \"Shafira\", \"Forbes\", \"26526\", \"Honduras\" ],\n\t[ \"671\", \"Maxine\", \"Mueller\", \"90923\", \"Kazakhstan\" ],\n\t[ \"672\", \"Joy\", \"Sargent\", \"K6T 3W5\", \"Malawi\" ],\n\t[ \"673\", \"Lamar\", \"Roberts\", \"R5F 9C8\", \"Poland\" ],\n\t[ \"674\", \"Madonna\", \"Love\", \"15514\", \"Cyprus\" ],\n\t[ \"675\", \"Uriel\", \"Ware\", \"Z6V 5J1\", \"Singapore\" ],\n\t[ \"676\", \"Bevis\", \"Erickson\", \"M3X 9M8\", \"Brunei Darussalam\" ],\n\t[ \"677\", \"Grant\", \"Velasquez\", \"96942\", \"Antarctica\" ],\n\t[ \"678\", \"Lars\", \"Bullock\", \"14772\", \"Guyana\" ],\n\t[ \"679\", \"Maryam\", \"Jones\", \"01854\", \"Togo\" ],\n\t[ \"680\", \"Blythe\", \"Goodwin\", \"51731\", \"New Caledonia\" ],\n\t[ \"681\", \"Kane\", \"Wiggins\", \"55727\", \"Kiribati\" ],\n\t[ \"682\", \"Brian\", \"Rosales\", \"25896\", \"Cape Verde\" ],\n\t[ \"683\", \"Blaze\", \"Leach\", \"P6J 3E5\", \"Northern Mariana Islands\" ],\n\t[ \"684\", \"Cameron\", \"Neal\", \"82248\", \"Marshall Islands\" ],\n\t[ \"685\", \"Lydia\", \"Cunningham\", \"Q1V 8P7\", \"San Marino\" ],\n\t[ \"686\", \"Troy\", \"Cook\", \"32106\", \"British Indian Ocean Territory\" ],\n\t[ \"687\", \"Alexander\", \"Valenzuela\", \"S8Z 6B2\", \"Guadeloupe\" ],\n\t[ \"688\", \"Garth\", \"Beck\", \"46344\", \"Cook Islands\" ],\n\t[ \"689\", \"Hillary\", \"Nunez\", \"29462\", \"Sri Lanka\" ],\n\t[ \"690\", \"Hunter\", \"Sawyer\", \"W9M 6T4\", \"Saint Lucia\" ],\n\t[ \"691\", \"Jaquelyn\", \"Everett\", \"T1X 2U2\", \"Guinea-bissau\" ],\n\t[ \"692\", \"Indira\", \"Ortega\", \"43047\", \"Italy\" ],\n\t[ \"693\", \"Josiah\", \"Hinton\", \"N5F 5Y8\", \"Andorra\" ],\n\t[ \"694\", \"Bruno\", \"Gay\", \"E3U 3D9\", \"Palau\" ],\n\t[ \"695\", \"Melissa\", \"Blackburn\", \"S4V 1K2\", \"Virgin Islands, U.S.\" ],\n\t[ \"696\", \"Zeus\", \"Dawson\", \"K5S 6Z6\", \"Belgium\" ],\n\t[ \"697\", \"Castor\", \"Mcmahon\", \"H3R 1O8\", \"Cambodia\" ],\n\t[ \"698\", \"Elizabeth\", \"Beasley\", \"98178\", \"Northern Mariana Islands\" ],\n\t[ \"699\", \"Jescie\", \"Lee\", \"08056\", \"Eritrea\" ],\n\t[ \"700\", \"Dennis\", \"Chapman\", \"T4O 1Q2\", \"Bangladesh\" ],\n\t[ \"701\", \"Basia\", \"Wallace\", \"U3Y 7C1\", \"Pitcairn\" ],\n\t[ \"702\", \"Dante\", \"Brewer\", \"53544\", \"Bosnia and Herzegovina\" ],\n\t[ \"703\", \"Adrienne\", \"Glenn\", \"32378\", \"Austria\" ],\n\t[ \"704\", \"Kellie\", \"Acevedo\", \"51723\", \"Italy\" ],\n\t[ \"705\", \"Scarlet\", \"Mclaughlin\", \"43509\", \"Kiribati\" ],\n\t[ \"706\", \"Lillith\", \"Mullins\", \"S6L 4Y6\", \"Kyrgyzstan\" ],\n\t[ \"707\", \"Maxine\", \"Atkins\", \"Z5T 5R5\", \"Denmark\" ],\n\t[ \"708\", \"Nicholas\", \"Rose\", \"40286\", \"Macedonia\" ],\n\t[ \"709\", \"Zenia\", \"Pugh\", \"28682\", \"Venezuela\" ],\n\t[ \"710\", \"Keely\", \"Turner\", \"34939\", \"New Zealand\" ],\n\t[ \"711\", \"Maisie\", \"Walton\", \"S6M 5C5\", \"Cameroon\" ],\n\t[ \"712\", \"Michelle\", \"Salinas\", \"T7A 9N6\", \"Nicaragua\" ],\n\t[ \"713\", \"Reece\", \"Clements\", \"73923\", \"Austria\" ],\n\t[ \"714\", \"Eliana\", \"Fox\", \"V3Y 5T4\", \"Denmark\" ],\n\t[ \"715\", \"Kennedy\", \"Mullins\", \"43213\", \"Virgin Islands, British\" ],\n\t[ \"716\", \"Alea\", \"Glover\", \"M6P 3Z5\", \"Turkmenistan\" ],\n\t[ \"717\", \"Scarlett\", \"Hunt\", \"41461\", \"Montserrat\" ],\n\t[ \"718\", \"Rooney\", \"Kane\", \"T8A 3E2\", \"Madagascar\" ],\n\t[ \"719\", \"Cairo\", \"Ray\", \"L6M 1E7\", \"Canada\" ],\n\t[ \"720\", \"Wendy\", \"Burks\", \"R8V 8F5\", \"Virgin Islands, U.S.\" ],\n\t[ \"721\", \"Christine\", \"Suarez\", \"67369\", \"Georgia\" ],\n\t[ \"722\", \"Graiden\", \"Le\", \"K4M 9V5\", \"New Caledonia\" ],\n\t[ \"723\", \"Zane\", \"Nunez\", \"60548\", \"Haiti\" ],\n\t[ \"724\", \"Ali\", \"Bell\", \"U4Y 4C3\", \"Togo\" ],\n\t[ \"725\", \"Marsden\", \"Leon\", \"39374\", \"Venezuela\" ],\n\t[ \"726\", \"Holmes\", \"Kidd\", \"B6K 7Q9\", \"Iraq\" ],\n\t[ \"727\", \"Cameron\", \"Gardner\", \"88627\", \"Brazil\" ],\n\t[ \"728\", \"Ava\", \"George\", \"K1Z 7Y2\", \"Monaco\" ],\n\t[ \"729\", \"Chantale\", \"Holland\", \"H1B 9L8\", \"Afghanistan\" ],\n\t[ \"730\", \"Alika\", \"Middleton\", \"W8X 7O1\", \"Korea\" ],\n\t[ \"731\", \"Cameran\", \"Zimmerman\", \"78576\", \"Benin\" ],\n\t[ \"732\", \"Barrett\", \"Blair\", \"51161\", \"Virgin Islands, U.S.\" ],\n\t[ \"733\", \"Brielle\", \"Ballard\", \"59538\", \"Iceland\" ],\n\t[ \"734\", \"Teagan\", \"Morales\", \"40107\", \"Kenya\" ],\n\t[ \"735\", \"Lunea\", \"Cantu\", \"14690\", \"Oman\" ],\n\t[ \"736\", \"Robin\", \"Gilmore\", \"17972\", \"Nauru\" ],\n\t[ \"737\", \"Hall\", \"Mccarty\", \"86141\", \"China\" ],\n\t[ \"738\", \"Olga\", \"Rasmussen\", \"58309\", \"Virgin Islands, British\" ],\n\t[ \"739\", \"Mark\", \"Griffin\", \"51542\", \"Argentina\" ],\n\t[ \"740\", \"Medge\", \"Carrillo\", \"23192\", \"Pitcairn\" ],\n\t[ \"741\", \"Susan\", \"Mosley\", \"32128\", \"Turkmenistan\" ],\n\t[ \"742\", \"Zelda\", \"Valdez\", \"46831\", \"New Caledonia\" ],\n\t[ \"743\", \"Ruth\", \"Donaldson\", \"F9I 7G7\", \"Ukraine\" ],\n\t[ \"744\", \"Kirby\", \"Workman\", \"36679\", \"Rwanda\" ],\n\t[ \"745\", \"Alexa\", \"King\", \"66513\", \"Liberia\" ],\n\t[ \"746\", \"Ronan\", \"Gross\", \"K2S 6D0\", \"Saint Lucia\" ],\n\t[ \"747\", \"Kylee\", \"Dillon\", \"P7Y 1I5\", \"Faroe Islands\" ],\n\t[ \"748\", \"Brenda\", \"Weaver\", \"99365\", \"Uzbekistan\" ],\n\t[ \"749\", \"Aristotle\", \"Orr\", \"43451\", \"Canada\" ],\n\t[ \"750\", \"Jaquelyn\", \"Tyler\", \"B9Q 7P5\", \"Brunei Darussalam\" ],\n\t[ \"751\", \"Madeline\", \"Stewart\", \"D4D 2J4\", \"Zimbabwe\" ],\n\t[ \"752\", \"Lacota\", \"Glass\", \"89124\", \"Israel\" ],\n\t[ \"753\", \"Adrian\", \"Ashley\", \"N8M 4L1\", \"Sri Lanka\" ],\n\t[ \"754\", \"Ignatius\", \"Waller\", \"12053\", \"Thailand\" ],\n\t[ \"755\", \"Raven\", \"Stevens\", \"88768\", \"Estonia\" ],\n\t[ \"756\", \"Carly\", \"Camacho\", \"27075\", \"Vanuatu\" ],\n\t[ \"757\", \"Lee\", \"Calderon\", \"19501\", \"Pitcairn\" ],\n\t[ \"758\", \"Amos\", \"Briggs\", \"I6A 3L8\", \"Saint Kitts and Nevis\" ],\n\t[ \"759\", \"Cheryl\", \"Valencia\", \"90517\", \"Denmark\" ],\n\t[ \"760\", \"Kenyon\", \"Franco\", \"B2S 2E2\", \"Western Sahara\" ],\n\t[ \"761\", \"Damian\", \"Acosta\", \"A2S 6D0\", \"Bahamas\" ],\n\t[ \"762\", \"Brenda\", \"Zamora\", \"T9E 7L3\", \"Finland\" ],\n\t[ \"763\", \"Connor\", \"Atkinson\", \"03975\", \"Sierra Leone\" ],\n\t[ \"764\", \"Kaseem\", \"Waters\", \"A2K 2X0\", \"China\" ],\n\t[ \"765\", \"Zephania\", \"Whitfield\", \"A4Z 9P7\", \"Eritrea\" ],\n\t[ \"766\", \"Emmanuel\", \"Ballard\", \"G1M 6Y2\", \"Finland\" ],\n\t[ \"767\", \"Amos\", \"Walters\", \"43184\", \"Oman\" ],\n\t[ \"768\", \"Urielle\", \"Browning\", \"19959\", \"Panama\" ],\n\t[ \"769\", \"TaShya\", \"Summers\", \"B9V 3Y3\", \"Micronesia\" ],\n\t[ \"770\", \"Jermaine\", \"Mcgee\", \"X8A 4E1\", \"Cape Verde\" ],\n\t[ \"771\", \"Chaney\", \"Berry\", \"G2H 2C8\", \"Uganda\" ],\n\t[ \"772\", \"Jaime\", \"May\", \"49723\", \"Eritrea\" ],\n\t[ \"773\", \"Olga\", \"Cohen\", \"13403\", \"Macao\" ],\n\t[ \"774\", \"Jacob\", \"Vaughn\", \"U7G 1V5\", \"Greece\" ],\n\t[ \"775\", \"Kelly\", \"Mcdonald\", \"Z3B 5G7\", \"Kiribati\" ],\n\t[ \"776\", \"Emi\", \"Gilbert\", \"W1L 2M4\", \"Nicaragua\" ],\n\t[ \"777\", \"Francis\", \"Nunez\", \"K4U 6M5\", \"Lithuania\" ],\n\t[ \"778\", \"Noel\", \"Nelson\", \"Z5T 1Y0\", \"Nauru\" ],\n\t[ \"779\", \"Ora\", \"Ellison\", \"Y5I 4R8\", \"Burundi\" ],\n\t[ \"780\", \"Kirby\", \"Glass\", \"J5X 2E3\", \"Argentina\" ],\n\t[ \"781\", \"Hayley\", \"Tate\", \"V1T 6B6\", \"Greece\" ],\n\t[ \"782\", \"Mohammad\", \"Leblanc\", \"E3S 5R3\", \"Oman\" ],\n\t[ \"783\", \"Lionel\", \"Todd\", \"A1Z 9E1\", \"Macedonia\" ],\n\t[ \"784\", \"Courtney\", \"Mckay\", \"D4I 8Z3\", \"Fiji\" ],\n\t[ \"785\", \"Reagan\", \"West\", \"84159\", \"Equatorial Guinea\" ],\n\t[ \"786\", \"Noel\", \"Strickland\", \"Q7K 6S3\", \"Mozambique\" ],\n\t[ \"787\", \"Lara\", \"Porter\", \"49872\", \"Nigeria\" ],\n\t[ \"788\", \"Kyra\", \"Haley\", \"I9E 2K3\", \"Dominican Republic\" ],\n\t[ \"789\", \"Wynter\", \"Beasley\", \"66330\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"790\", \"Vladimir\", \"Briggs\", \"99538\", \"Burkina Faso\" ],\n\t[ \"791\", \"Rafael\", \"Campbell\", \"V8L 2S6\", \"Algeria\" ],\n\t[ \"792\", \"Buffy\", \"Wilder\", \"N3U 2X0\", \"Bahrain\" ],\n\t[ \"793\", \"Nyssa\", \"Dawson\", \"38434\", \"Spain\" ],\n\t[ \"794\", \"Sylvia\", \"Swanson\", \"39714\", \"Azerbaijan\" ],\n\t[ \"795\", \"Jolie\", \"Diaz\", \"A1J 5I1\", \"Cuba\" ],\n\t[ \"796\", \"Rosalyn\", \"Mcdaniel\", \"F3T 6E2\", \"Benin\" ],\n\t[ \"797\", \"Nelle\", \"Prince\", \"K1M 4U6\", \"Maldives\" ],\n\t[ \"798\", \"Luke\", \"Knight\", \"05930\", \"Seychelles\" ],\n\t[ \"799\", \"Macaulay\", \"Conway\", \"79707\", \"American Samoa\" ],\n\t[ \"800\", \"Freya\", \"Webb\", \"U2H 2D7\", \"Ireland\" ],\n\t[ \"801\", \"Clinton\", \"Meyers\", \"S9I 7N2\", \"Malta\" ],\n\t[ \"802\", \"Rudyard\", \"Chandler\", \"40347\", \"Bahrain\" ],\n\t[ \"803\", \"Courtney\", \"Hoover\", \"12325\", \"French Polynesia\" ],\n\t[ \"804\", \"Melissa\", \"Davenport\", \"K7P 1S8\", \"Canada\" ],\n\t[ \"805\", \"Noelle\", \"Nieves\", \"87427\", \"Martinique\" ],\n\t[ \"806\", \"Myles\", \"Hart\", \"V6T 1W0\", \"Niue\" ],\n\t[ \"807\", \"Jasper\", \"Campos\", \"78143\", \"Faroe Islands\" ],\n\t[ \"808\", \"Ariana\", \"Valentine\", \"J4X 2D4\", \"Ecuador\" ],\n\t[ \"809\", \"Vanna\", \"Fletcher\", \"M4Z 1F9\", \"Faroe Islands\" ],\n\t[ \"810\", \"Elijah\", \"Harper\", \"Y1B 7E4\", \"New Zealand\" ],\n\t[ \"811\", \"Leilani\", \"Nunez\", \"K9W 4F0\", \"United Arab Emirates\" ],\n\t[ \"812\", \"Maia\", \"Huber\", \"V4L 8M6\", \"United Kingdom\" ],\n\t[ \"813\", \"Richard\", \"Riddle\", \"U8C 8Q2\", \"Niue\" ],\n\t[ \"814\", \"Harper\", \"Blanchard\", \"10904\", \"Cameroon\" ],\n\t[ \"815\", \"Aurelia\", \"Trujillo\", \"01646\", \"Dominican Republic\" ],\n\t[ \"816\", \"Anthony\", \"Owen\", \"J2I 2B4\", \"Palestinian Territory, Occupied\" ],\n\t[ \"817\", \"Kelsie\", \"Roy\", \"M3J 6K3\", \"Maldives\" ],\n\t[ \"818\", \"James\", \"Pearson\", \"94810\", \"Mexico\" ],\n\t[ \"819\", \"Igor\", \"Marshall\", \"Y8M 2D6\", \"Palau\" ],\n\t[ \"820\", \"Aquila\", \"Willis\", \"20354\", \"Samoa\" ],\n\t[ \"821\", \"Randall\", \"Sheppard\", \"73577\", \"Sierra Leone\" ],\n\t[ \"822\", \"Gray\", \"Myers\", \"53651\", \"Gibraltar\" ],\n\t[ \"823\", \"Dana\", \"Camacho\", \"89571\", \"Reunion\" ],\n\t[ \"824\", \"Berk\", \"Hopper\", \"17794\", \"Cook Islands\" ],\n\t[ \"825\", \"Shannon\", \"Barry\", \"70536\", \"Bouvet Island\" ],\n\t[ \"826\", \"Dahlia\", \"Herman\", \"F8L 1Q3\", \"Lesotho\" ],\n\t[ \"827\", \"Gillian\", \"Hayes\", \"O2C 7X8\", \"Tajikistan\" ],\n\t[ \"828\", \"Leo\", \"Bolton\", \"P6V 6E1\", \"Dominica\" ],\n\t[ \"829\", \"Vivien\", \"Best\", \"E5E 6N8\", \"Cuba\" ],\n\t[ \"830\", \"Clayton\", \"Bradley\", \"E7R 3M5\", \"Zimbabwe\" ],\n\t[ \"831\", \"Lesley\", \"Collins\", \"16592\", \"Mali\" ],\n\t[ \"832\", \"Holly\", \"Hensley\", \"49080\", \"Tunisia\" ],\n\t[ \"833\", \"Larissa\", \"Velazquez\", \"41068\", \"Haiti\" ],\n\t[ \"834\", \"Delilah\", \"Mejia\", \"A5I 9Q9\", \"Croatia\" ],\n\t[ \"835\", \"Drew\", \"Roberson\", \"U7E 3R1\", \"Somalia\" ],\n\t[ \"836\", \"Jenette\", \"Patel\", \"64084\", \"Denmark\" ],\n\t[ \"837\", \"Gillian\", \"Cleveland\", \"05659\", \"Syrian Arab Republic\" ],\n\t[ \"838\", \"Noelle\", \"Lara\", \"U1N 6V6\", \"Sri Lanka\" ],\n\t[ \"839\", \"Celeste\", \"Rollins\", \"26590\", \"Mayotte\" ],\n\t[ \"840\", \"Elvis\", \"Fletcher\", \"M8V 6J4\", \"Bahamas\" ],\n\t[ \"841\", \"Caesar\", \"Hays\", \"E3D 3T7\", \"Malta\" ],\n\t[ \"842\", \"Rama\", \"Weber\", \"25880\", \"Malta\" ],\n\t[ \"843\", \"Lael\", \"Page\", \"57135\", \"Anguilla\" ],\n\t[ \"844\", \"Omar\", \"Hammond\", \"90213\", \"Belarus\" ],\n\t[ \"845\", \"Simone\", \"Mcintosh\", \"L5P 1S0\", \"Bhutan\" ],\n\t[ \"846\", \"Gay\", \"Harper\", \"56404\", \"Virgin Islands, U.S.\" ],\n\t[ \"847\", \"Joel\", \"Holman\", \"C1F 1C4\", \"Saint Lucia\" ],\n\t[ \"848\", \"Clayton\", \"Pennington\", \"57003\", \"Kazakhstan\" ],\n\t[ \"849\", \"Susan\", \"Mckee\", \"I5U 8F2\", \"Taiwan, Province of China\" ],\n\t[ \"850\", \"Jenna\", \"Stein\", \"P2K 6L4\", \"Reunion\" ],\n\t[ \"851\", \"Madonna\", \"Joyner\", \"Q4Q 4K6\", \"Guadeloupe\" ],\n\t[ \"852\", \"Deirdre\", \"Ingram\", \"N7U 3N9\", \"Monaco\" ],\n\t[ \"853\", \"Juliet\", \"Hodges\", \"U2Q 2T0\", \"Uzbekistan\" ],\n\t[ \"854\", \"Naomi\", \"Rice\", \"O6T 2Z1\", \"Nicaragua\" ],\n\t[ \"855\", \"Leila\", \"Alvarado\", \"Z2V 7L3\", \"Suriname\" ],\n\t[ \"856\", \"George\", \"Leon\", \"L6M 1V2\", \"Norway\" ],\n\t[ \"857\", \"Rama\", \"Cruz\", \"Y2S 7K6\", \"Kenya\" ],\n\t[ \"858\", \"Clarke\", \"Mckinney\", \"34622\", \"Viet Nam\" ],\n\t[ \"859\", \"Savannah\", \"Bailey\", \"L3O 1U6\", \"Solomon Islands\" ],\n\t[ \"860\", \"Maxwell\", \"Gibson\", \"R9K 9Q1\", \"Virgin Islands, British\" ],\n\t[ \"861\", \"Devin\", \"Humphrey\", \"74821\", \"Costa Rica\" ],\n\t[ \"862\", \"Kadeem\", \"Larsen\", \"43178\", \"Luxembourg\" ],\n\t[ \"863\", \"Elvis\", \"Todd\", \"O3O 3G9\", \"Azerbaijan\" ],\n\t[ \"864\", \"Levi\", \"Montoya\", \"G1Y 1N8\", \"Venezuela\" ],\n\t[ \"865\", \"Risa\", \"Barnes\", \"86118\", \"Benin\" ],\n\t[ \"866\", \"Dillon\", \"Riggs\", \"O3Y 8V2\", \"Greenland\" ],\n\t[ \"867\", \"Stewart\", \"Marshall\", \"V8G 8S2\", \"Mexico\" ],\n\t[ \"868\", \"Camden\", \"Goff\", \"N3W 2L0\", \"Bahrain\" ],\n\t[ \"869\", \"Sheila\", \"Meadows\", \"T6K 7M2\", \"Yemen\" ],\n\t[ \"870\", \"Hop\", \"Berger\", \"Q8B 9R7\", \"Germany\" ],\n\t[ \"871\", \"Charissa\", \"Wilkerson\", \"08090\", \"Burundi\" ],\n\t[ \"872\", \"Raphael\", \"Carey\", \"03667\", \"United Kingdom\" ],\n\t[ \"873\", \"Micah\", \"Hood\", \"T9N 4T5\", \"Georgia\" ],\n\t[ \"874\", \"Cathleen\", \"Mccall\", \"N6H 6N3\", \"Tanzania, United Republic of\" ],\n\t[ \"875\", \"Lisandra\", \"Poole\", \"S7O 1J1\", \"Greece\" ],\n\t[ \"876\", \"Stone\", \"Blackwell\", \"90654\", \"Serbia and Montenegro\" ],\n\t[ \"877\", \"Serena\", \"Mann\", \"32305\", \"Trinidad and Tobago\" ],\n\t[ \"878\", \"Scarlet\", \"Turner\", \"D7Y 8N4\", \"Oman\" ],\n\t[ \"879\", \"Zenaida\", \"Carrillo\", \"60361\", \"Montserrat\" ],\n\t[ \"880\", \"Jaime\", \"Dalton\", \"F4E 6R5\", \"Iraq\" ],\n\t[ \"881\", \"Wesley\", \"Drake\", \"D8J 9U2\", \"Bulgaria\" ],\n\t[ \"882\", \"Armand\", \"Chandler\", \"X8Z 9E6\", \"Saint Kitts and Nevis\" ],\n\t[ \"883\", \"Inez\", \"Dillard\", \"59975\", \"Eritrea\" ],\n\t[ \"884\", \"Roanna\", \"Floyd\", \"65958\", \"Bolivia\" ],\n\t[ \"885\", \"Timon\", \"Dalton\", \"O3Q 5B5\", \"Colombia\" ],\n\t[ \"886\", \"Ifeoma\", \"Lamb\", \"J9A 9X0\", \"Papua New Guinea\" ],\n\t[ \"887\", \"Brody\", \"Cash\", \"75525\", \"Kazakhstan\" ],\n\t[ \"888\", \"Dawn\", \"Wise\", \"G7X 5J3\", \"Samoa\" ],\n\t[ \"889\", \"Chaney\", \"Bartlett\", \"11112\", \"Ecuador\" ],\n\t[ \"890\", \"Galvin\", \"Merritt\", \"59635\", \"Bahrain\" ],\n\t[ \"891\", \"Cynthia\", \"Nash\", \"U5P 1H4\", \"Switzerland\" ],\n\t[ \"892\", \"Tara\", \"Austin\", \"Q6X 8U0\", \"Burundi\" ],\n\t[ \"893\", \"Roanna\", \"Petty\", \"28524\", \"Northern Mariana Islands\" ],\n\t[ \"894\", \"Palmer\", \"Mcdowell\", \"78234\", \"United States Minor Outlying Islands\" ],\n\t[ \"895\", \"Sade\", \"Patton\", \"28984\", \"Czech Republic\" ],\n\t[ \"896\", \"Yoko\", \"Compton\", \"62165\", \"Saint Kitts and Nevis\" ],\n\t[ \"897\", \"Regan\", \"Mccarthy\", \"C5D 6G0\", \"Lebanon\" ],\n\t[ \"898\", \"Norman\", \"Nixon\", \"E4C 4G0\", \"Virgin Islands, U.S.\" ],\n\t[ \"899\", \"Jocelyn\", \"Baldwin\", \"X9R 2B3\", \"Macedonia\" ],\n\t[ \"900\", \"Jaquelyn\", \"Berg\", \"N6X 6E1\", \"Saint Lucia\" ],\n\t[ \"901\", \"Zane\", \"Nelson\", \"G9P 4J8\", \"Macao\" ],\n\t[ \"902\", \"Judith\", \"Elliott\", \"R4I 4O3\", \"Iraq\" ],\n\t[ \"903\", \"Maia\", \"Ellis\", \"S9V 6P0\", \"Bahrain\" ],\n\t[ \"904\", \"Mechelle\", \"Stevens\", \"43406\", \"Bouvet Island\" ],\n\t[ \"905\", \"Sylvester\", \"Duran\", \"K5D 8W5\", \"Costa Rica\" ],\n\t[ \"906\", \"Unity\", \"Cooke\", \"64362\", \"Ecuador\" ],\n\t[ \"907\", \"Karly\", \"Velazquez\", \"43286\", \"Guam\" ],\n\t[ \"908\", \"Damian\", \"Yates\", \"84910\", \"Thailand\" ],\n\t[ \"909\", \"Linus\", \"Gross\", \"31808\", \"Israel\" ],\n\t[ \"910\", \"Cooper\", \"Franco\", \"36700\", \"Yemen\" ],\n\t[ \"911\", \"Gail\", \"Jones\", \"09157\", \"Turkey\" ],\n\t[ \"912\", \"Hayfa\", \"Bennett\", \"59422\", \"France\" ],\n\t[ \"913\", \"Hermione\", \"Barber\", \"I6W 8Z5\", \"Mozambique\" ],\n\t[ \"914\", \"Hedy\", \"Stevens\", \"35535\", \"Cuba\" ],\n\t[ \"915\", \"Galvin\", \"Frederick\", \"J2W 9A3\", \"Virgin Islands, British\" ],\n\t[ \"916\", \"Lamar\", \"Rush\", \"P4O 3H4\", \"Austria\" ],\n\t[ \"917\", \"Brenda\", \"Walter\", \"K8Q 9H9\", \"Tajikistan\" ],\n\t[ \"918\", \"Ria\", \"Guy\", \"12801\", \"Gibraltar\" ],\n\t[ \"919\", \"Bruno\", \"Lynch\", \"I6U 7D0\", \"Greenland\" ],\n\t[ \"920\", \"Kirk\", \"Pearson\", \"66242\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"921\", \"Owen\", \"Sosa\", \"61483\", \"Martinique\" ],\n\t[ \"922\", \"Rajah\", \"Mccarty\", \"G9K 6L2\", \"Faroe Islands\" ],\n\t[ \"923\", \"Erasmus\", \"Malone\", \"D6H 7H5\", \"Sierra Leone\" ],\n\t[ \"924\", \"Raja\", \"Hale\", \"85590\", \"Guadeloupe\" ],\n\t[ \"925\", \"Logan\", \"Christensen\", \"Y6L 8Z0\", \"Guatemala\" ],\n\t[ \"926\", \"Kirestin\", \"Griffith\", \"47900\", \"Micronesia\" ],\n\t[ \"927\", \"Kato\", \"Reeves\", \"93779\", \"Uruguay\" ],\n\t[ \"928\", \"Jonah\", \"Suarez\", \"13708\", \"Spain\" ],\n\t[ \"929\", \"Adam\", \"Lynn\", \"E1P 1L3\", \"Indonesia\" ],\n\t[ \"930\", \"Quinn\", \"Mckinney\", \"99683\", \"Faroe Islands\" ],\n\t[ \"931\", \"Whilemina\", \"Macias\", \"32145\", \"Iceland\" ],\n\t[ \"932\", \"Gillian\", \"Osborne\", \"L3L 6G0\", \"Italy\" ],\n\t[ \"933\", \"Venus\", \"Zamora\", \"28318\", \"Comoros\" ],\n\t[ \"934\", \"Allegra\", \"Eaton\", \"P5X 9S0\", \"Antarctica\" ],\n\t[ \"935\", \"Driscoll\", \"Preston\", \"R3L 9R0\", \"Niue\" ],\n\t[ \"936\", \"Joel\", \"Spencer\", \"12006\", \"Monaco\" ],\n\t[ \"937\", \"Lucius\", \"Sharp\", \"B8V 6U7\", \"Dominica\" ],\n\t[ \"938\", \"Curran\", \"Robinson\", \"82216\", \"Romania\" ],\n\t[ \"939\", \"Kerry\", \"Espinoza\", \"N4B 7Q1\", \"Guatemala\" ],\n\t[ \"940\", \"Isaac\", \"Kline\", \"85674\", \"Costa Rica\" ],\n\t[ \"941\", \"Neil\", \"Harrison\", \"I5A 2S2\", \"Greenland\" ],\n\t[ \"942\", \"Ezra\", \"Rodriguez\", \"D6P 5Q3\", \"Angola\" ],\n\t[ \"943\", \"Galvin\", \"Jefferson\", \"D6H 7G0\", \"Macedonia\" ],\n\t[ \"944\", \"Joseph\", \"Hahn\", \"Z8V 9B5\", \"Uganda\" ],\n\t[ \"945\", \"Naida\", \"Hammond\", \"40105\", \"Philippines\" ],\n\t[ \"946\", \"Brenna\", \"Everett\", \"41704\", \"Indonesia\" ],\n\t[ \"947\", \"Rae\", \"Parks\", \"79077\", \"Sweden\" ],\n\t[ \"948\", \"Jessica\", \"Richard\", \"Y3I 5R3\", \"Uganda\" ],\n\t[ \"949\", \"Rachel\", \"Marks\", \"16157\", \"Cameroon\" ],\n\t[ \"950\", \"Maxwell\", \"Ferguson\", \"V6A 6M0\", \"Ukraine\" ],\n\t[ \"951\", \"Alyssa\", \"Beard\", \"13936\", \"Antarctica\" ],\n\t[ \"952\", \"Camille\", \"Gill\", \"V9Q 9P7\", \"New Caledonia\" ],\n\t[ \"953\", \"Cora\", \"Bond\", \"M9X 1A4\", \"Seychelles\" ],\n\t[ \"954\", \"Peter\", \"Acosta\", \"07937\", \"Chile\" ],\n\t[ \"955\", \"Ella\", \"Poole\", \"A3F 9Z1\", \"Panama\" ],\n\t[ \"956\", \"Ashely\", \"Guerrero\", \"37436\", \"Central African Republic\" ],\n\t[ \"957\", \"Mikayla\", \"Johnston\", \"L9W 5T8\", \"Cameroon\" ],\n\t[ \"958\", \"Ora\", \"Weaver\", \"65897\", \"Turks and Caicos Islands\" ],\n\t[ \"959\", \"Timon\", \"Barnes\", \"R6J 1J7\", \"Djibouti\" ],\n\t[ \"960\", \"Jamalia\", \"Wade\", \"22211\", \"United States\" ],\n\t[ \"961\", \"Bradley\", \"Haney\", \"K1H 1Q1\", \"Western Sahara\" ],\n\t[ \"962\", \"Lance\", \"Le\", \"H4R 9T7\", \"Botswana\" ],\n\t[ \"963\", \"Ethan\", \"Rich\", \"T8N 1C6\", \"Netherlands\" ],\n\t[ \"964\", \"Jeanette\", \"Carver\", \"G1E 5C8\", \"Cook Islands\" ],\n\t[ \"965\", \"Ocean\", \"Marquez\", \"15084\", \"Pakistan\" ],\n\t[ \"966\", \"Ifeoma\", \"Cleveland\", \"R9D 6M1\", \"French Guiana\" ],\n\t[ \"967\", \"Sylvia\", \"Herring\", \"U4R 8P1\", \"Thailand\" ],\n\t[ \"968\", \"Clare\", \"Huffman\", \"Q5G 2Q0\", \"Niger\" ],\n\t[ \"969\", \"Colton\", \"Leach\", \"V3F 9W6\", \"Syrian Arab Republic\" ],\n\t[ \"970\", \"Maryam\", \"Hoover\", \"Y7U 6N3\", \"Slovakia\" ],\n\t[ \"971\", \"Nola\", \"Snider\", \"54275\", \"Bosnia and Herzegovina\" ],\n\t[ \"972\", \"Kameko\", \"Cote\", \"M3C 8N0\", \"Cambodia\" ],\n\t[ \"973\", \"Julian\", \"Pugh\", \"B6E 7J7\", \"Mauritania\" ],\n\t[ \"974\", \"Xena\", \"Lott\", \"52294\", \"Estonia\" ],\n\t[ \"975\", \"Fuller\", \"Kirk\", \"65396\", \"Qatar\" ],\n\t[ \"976\", \"Lance\", \"Knox\", \"78074\", \"Serbia and Montenegro\" ],\n\t[ \"977\", \"Hedwig\", \"Beck\", \"T5P 4C8\", \"Dominican Republic\" ],\n\t[ \"978\", \"Martena\", \"Diaz\", \"65420\", \"Saint Pierre and Miquelon\" ],\n\t[ \"979\", \"Shafira\", \"David\", \"74843\", \"Senegal\" ],\n\t[ \"980\", \"Shafira\", \"Clark\", \"T6F 5C7\", \"Mongolia\" ],\n\t[ \"981\", \"Georgia\", \"Booth\", \"28183\", \"Japan\" ],\n\t[ \"982\", \"Cameron\", \"Austin\", \"I2J 1R1\", \"Bahrain\" ],\n\t[ \"983\", \"Vanna\", \"Hyde\", \"82434\", \"Croatia\" ],\n\t[ \"984\", \"Deanna\", \"Park\", \"68486\", \"Zimbabwe\" ],\n\t[ \"985\", \"Grady\", \"Freeman\", \"U4O 1Q9\", \"Belarus\" ],\n\t[ \"986\", \"Sandra\", \"Knapp\", \"31413\", \"Sudan\" ],\n\t[ \"987\", \"Dorian\", \"Joseph\", \"90768\", \"Lithuania\" ],\n\t[ \"988\", \"Adria\", \"Bonner\", \"15899\", \"Mongolia\" ],\n\t[ \"989\", \"Sebastian\", \"Guzman\", \"G9L 9G5\", \"Yemen\" ],\n\t[ \"990\", \"Angelica\", \"Puckett\", \"W8D 8W8\", \"Virgin Islands, U.S.\" ],\n\t[ \"991\", \"Connor\", \"Parks\", \"26175\", \"Virgin Islands, U.S.\" ],\n\t[ \"992\", \"Yardley\", \"Griffith\", \"H3L 2U3\", \"Saint Pierre and Miquelon\" ],\n\t[ \"993\", \"Charissa\", \"Beck\", \"30611\", \"Zambia\" ],\n\t[ \"994\", \"Calvin\", \"Russo\", \"79906\", \"Chile\" ],\n\t[ \"995\", \"Yoshi\", \"Durham\", \"N2J 8M8\", \"China\" ],\n\t[ \"996\", \"Finn\", \"Buck\", \"Q9F 9Z8\", \"Iraq\" ],\n\t[ \"997\", \"Kessie\", \"Holden\", \"C4A 1J0\", \"Syrian Arab Republic\" ],\n\t[ \"998\", \"Chloe\", \"Richards\", \"63091\", \"Canada\" ],\n\t[ \"999\", \"Uriel\", \"Snyder\", \"95487\", \"Pakistan\" ],\n\t[ \"1000\", \"Maite\", \"Cash\", \"90705\", \"Syrian Arab Republic\" ],\n\t[ \"1001\", \"Cameron\", \"Schwartz\", \"82778\", \"Taiwan, Province of China\" ],\n\t[ \"1002\", \"Faith\", \"Jimenez\", \"J6K 2P9\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1003\", \"Otto\", \"Hancock\", \"34535\", \"Andorra\" ],\n\t[ \"1004\", \"Harlan\", \"Blackwell\", \"N8Y 4E6\", \"Qatar\" ],\n\t[ \"1005\", \"Fitzgerald\", \"Gilliam\", \"Y9J 6J5\", \"Burkina Faso\" ],\n\t[ \"1006\", \"Lev\", \"Ballard\", \"01956\", \"American Samoa\" ],\n\t[ \"1007\", \"Freya\", \"Brown\", \"01190\", \"Portugal\" ],\n\t[ \"1008\", \"Harding\", \"Osborn\", \"14814\", \"San Marino\" ],\n\t[ \"1009\", \"Alexander\", \"Howard\", \"81842\", \"Reunion\" ],\n\t[ \"1010\", \"Ori\", \"Marsh\", \"77738\", \"Saint Helena\" ],\n\t[ \"1011\", \"Brennan\", \"Rich\", \"18690\", \"Cambodia\" ],\n\t[ \"1012\", \"Dawn\", \"Christensen\", \"Y8F 7R3\", \"Mali\" ],\n\t[ \"1013\", \"Ahmed\", \"Pearson\", \"62230\", \"Sudan\" ],\n\t[ \"1014\", \"Tanek\", \"Head\", \"25744\", \"Kiribati\" ],\n\t[ \"1015\", \"Meredith\", \"Cantu\", \"E6X 2L1\", \"Kenya\" ],\n\t[ \"1016\", \"Levi\", \"Fisher\", \"I9Y 9G2\", \"Djibouti\" ],\n\t[ \"1017\", \"Katell\", \"Cameron\", \"10278\", \"Denmark\" ],\n\t[ \"1018\", \"Ina\", \"Orr\", \"P7H 2O3\", \"Congo\" ],\n\t[ \"1019\", \"Beck\", \"Hayden\", \"15115\", \"Saint Lucia\" ],\n\t[ \"1020\", \"Cassady\", \"Wagner\", \"R9H 8C5\", \"Estonia\" ],\n\t[ \"1021\", \"Amena\", \"Herrera\", \"13286\", \"Bahrain\" ],\n\t[ \"1022\", \"Tarik\", \"Gross\", \"C3X 3W0\", \"Azerbaijan\" ],\n\t[ \"1023\", \"Marshall\", \"Collier\", \"13416\", \"Dominica\" ],\n\t[ \"1024\", \"Kirestin\", \"Callahan\", \"15429\", \"Micronesia\" ],\n\t[ \"1025\", \"Sasha\", \"Rice\", \"O6H 6X2\", \"Denmark\" ],\n\t[ \"1026\", \"Ross\", \"Gonzalez\", \"D3B 3R5\", \"Sudan\" ],\n\t[ \"1027\", \"Veda\", \"Arnold\", \"56611\", \"Swaziland\" ],\n\t[ \"1028\", \"Ferdinand\", \"Macias\", \"P1Q 3I2\", \"Colombia\" ],\n\t[ \"1029\", \"Mohammad\", \"Reed\", \"74005\", \"Bhutan\" ],\n\t[ \"1030\", \"Reagan\", \"Sandoval\", \"19275\", \"Pitcairn\" ],\n\t[ \"1031\", \"Debra\", \"Nelson\", \"85945\", \"Ukraine\" ],\n\t[ \"1032\", \"Cleo\", \"Robertson\", \"84072\", \"Guadeloupe\" ],\n\t[ \"1033\", \"Tanya\", \"Vance\", \"C1F 7F1\", \"Romania\" ],\n\t[ \"1034\", \"Desirae\", \"Wooten\", \"74659\", \"Mongolia\" ],\n\t[ \"1035\", \"Hiram\", \"Estes\", \"Q5Z 5A0\", \"Namibia\" ],\n\t[ \"1036\", \"Medge\", \"Weiss\", \"67079\", \"Azerbaijan\" ],\n\t[ \"1037\", \"Hu\", \"Chase\", \"87562\", \"Cuba\" ],\n\t[ \"1038\", \"Shafira\", \"Everett\", \"18983\", \"Georgia\" ],\n\t[ \"1039\", \"Mannix\", \"Lamb\", \"45542\", \"Venezuela\" ],\n\t[ \"1040\", \"Germaine\", \"Harvey\", \"I9G 1U0\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1041\", \"Brenna\", \"Leonard\", \"55573\", \"New Zealand\" ],\n\t[ \"1042\", \"Kylie\", \"Rivas\", \"U9J 3O9\", \"Djibouti\" ],\n\t[ \"1043\", \"Alexandra\", \"Rich\", \"T4O 6S6\", \"Cuba\" ],\n\t[ \"1044\", \"Dorian\", \"Spears\", \"00456\", \"Brazil\" ],\n\t[ \"1045\", \"Laurel\", \"Abbott\", \"45449\", \"Switzerland\" ],\n\t[ \"1046\", \"Gabriel\", \"Drake\", \"U1S 5O2\", \"Trinidad and Tobago\" ],\n\t[ \"1047\", \"Priscilla\", \"Mercer\", \"01401\", \"Serbia and Montenegro\" ],\n\t[ \"1048\", \"Darius\", \"Hoffman\", \"49694\", \"Greece\" ],\n\t[ \"1049\", \"Caesar\", \"Patton\", \"42322\", \"Suriname\" ],\n\t[ \"1050\", \"Susan\", \"Clayton\", \"W1G 5C3\", \"Maldives\" ],\n\t[ \"1051\", \"Zane\", \"Dunlap\", \"73722\", \"Oman\" ],\n\t[ \"1052\", \"Leah\", \"Fuentes\", \"60412\", \"Luxembourg\" ],\n\t[ \"1053\", \"Yardley\", \"Hansen\", \"03194\", \"Mauritius\" ],\n\t[ \"1054\", \"Ingrid\", \"Talley\", \"37315\", \"Solomon Islands\" ],\n\t[ \"1055\", \"Demetria\", \"Evans\", \"30587\", \"Tajikistan\" ],\n\t[ \"1056\", \"Ignacia\", \"Alford\", \"01282\", \"Bouvet Island\" ],\n\t[ \"1057\", \"Destiny\", \"Wade\", \"L5R 3V3\", \"Uganda\" ],\n\t[ \"1058\", \"Alden\", \"Mason\", \"V7D 2V6\", \"Dominican Republic\" ],\n\t[ \"1059\", \"Pamela\", \"Wilcox\", \"L1I 6I1\", \"Canada\" ],\n\t[ \"1060\", \"Melvin\", \"Buckley\", \"05478\", \"Hungary\" ],\n\t[ \"1061\", \"Eve\", \"Holcomb\", \"B6B 8T1\", \"Cook Islands\" ],\n\t[ \"1062\", \"Arthur\", \"Weeks\", \"R5P 7U2\", \"Bangladesh\" ],\n\t[ \"1063\", \"Marah\", \"Levine\", \"10075\", \"Somalia\" ],\n\t[ \"1064\", \"Keiko\", \"Freeman\", \"90950\", \"Faroe Islands\" ],\n\t[ \"1065\", \"Dorian\", \"Rose\", \"T5M 4Z0\", \"Fiji\" ],\n\t[ \"1066\", \"Desirae\", \"Velez\", \"T4E 8K2\", \"Afghanistan\" ],\n\t[ \"1067\", \"Rebekah\", \"Lucas\", \"T9A 8V5\", \"Tunisia\" ],\n\t[ \"1068\", \"Sylvester\", \"Copeland\", \"W6R 3B6\", \"Jamaica\" ],\n\t[ \"1069\", \"Alea\", \"Preston\", \"31050\", \"Netherlands Antilles\" ],\n\t[ \"1070\", \"Aphrodite\", \"Gordon\", \"T7C 6T8\", \"Sao Tome and Principe\" ],\n\t[ \"1071\", \"Yael\", \"Delaney\", \"G9W 9P1\", \"Mexico\" ],\n\t[ \"1072\", \"Sierra\", \"Perez\", \"R3O 8H0\", \"Slovenia\" ],\n\t[ \"1073\", \"Avram\", \"Briggs\", \"05221\", \"Norfolk Island\" ],\n\t[ \"1074\", \"Troy\", \"Poole\", \"W7Q 8O5\", \"Malta\" ],\n\t[ \"1075\", \"Gavin\", \"Sandoval\", \"37352\", \"Greece\" ],\n\t[ \"1076\", \"Nerea\", \"Stokes\", \"N2Q 6S9\", \"United States\" ],\n\t[ \"1077\", \"Genevieve\", \"Ramirez\", \"53829\", \"Mali\" ],\n\t[ \"1078\", \"Oliver\", \"Boone\", \"M1Q 8V9\", \"Bolivia\" ],\n\t[ \"1079\", \"Lars\", \"Ramirez\", \"L2R 6V2\", \"Bosnia and Herzegovina\" ],\n\t[ \"1080\", \"Abbot\", \"Horton\", \"R1R 1V8\", \"Netherlands Antilles\" ],\n\t[ \"1081\", \"Abra\", \"Avila\", \"41608\", \"Congo\" ],\n\t[ \"1082\", \"Candice\", \"Christian\", \"13930\", \"Faroe Islands\" ],\n\t[ \"1083\", \"Flavia\", \"Miranda\", \"93964\", \"Estonia\" ],\n\t[ \"1084\", \"Medge\", \"Drake\", \"Q7C 2E2\", \"Belize\" ],\n\t[ \"1085\", \"Lee\", \"Montgomery\", \"H3T 4Q6\", \"Costa Rica\" ],\n\t[ \"1086\", \"Aline\", \"Ratliff\", \"99839\", \"Macao\" ],\n\t[ \"1087\", \"Shafira\", \"Fox\", \"A9S 7C8\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1088\", \"Orson\", \"Greene\", \"K9L 7R8\", \"Myanmar\" ],\n\t[ \"1089\", \"Henry\", \"Joyner\", \"55853\", \"South Africa\" ],\n\t[ \"1090\", \"Keely\", \"Boyer\", \"08996\", \"Liberia\" ],\n\t[ \"1091\", \"Jerome\", \"Jones\", \"31770\", \"Saint Lucia\" ],\n\t[ \"1092\", \"Hermione\", \"Dunlap\", \"U2R 7R2\", \"Moldova\" ],\n\t[ \"1093\", \"Lenore\", \"Powers\", \"73772\", \"Tunisia\" ],\n\t[ \"1094\", \"Alden\", \"Newman\", \"V4C 3O8\", \"Bhutan\" ],\n\t[ \"1095\", \"Jasper\", \"Blevins\", \"K2H 5W0\", \"Paraguay\" ],\n\t[ \"1096\", \"Robert\", \"Bender\", \"R5F 1H9\", \"Philippines\" ],\n\t[ \"1097\", \"Bo\", \"Richard\", \"N5R 6T2\", \"Trinidad and Tobago\" ],\n\t[ \"1098\", \"Iliana\", \"Mcpherson\", \"23758\", \"Bangladesh\" ],\n\t[ \"1099\", \"Alfreda\", \"Camacho\", \"35387\", \"Saint Helena\" ],\n\t[ \"1100\", \"Kirsten\", \"Giles\", \"14079\", \"Romania\" ],\n\t[ \"1101\", \"Harlan\", \"Crawford\", \"84847\", \"French Polynesia\" ],\n\t[ \"1102\", \"Wynne\", \"Bauer\", \"W9D 6F6\", \"Kazakhstan\" ],\n\t[ \"1103\", \"Connor\", \"Melton\", \"E2F 4Q2\", \"Angola\" ],\n\t[ \"1104\", \"Evelyn\", \"Barry\", \"I9H 8W7\", \"Turkmenistan\" ],\n\t[ \"1105\", \"Barry\", \"Stephens\", \"07823\", \"Gibraltar\" ],\n\t[ \"1106\", \"Ferris\", \"Farrell\", \"I7H 5Z6\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1107\", \"Ursa\", \"Carr\", \"31124\", \"Chad\" ],\n\t[ \"1108\", \"Laith\", \"Johnson\", \"10428\", \"Cyprus\" ],\n\t[ \"1109\", \"Harlan\", \"Frank\", \"J6K 7I6\", \"Gambia\" ],\n\t[ \"1110\", \"Gregory\", \"Ratliff\", \"P1C 8H2\", \"Chile\" ],\n\t[ \"1111\", \"Rina\", \"Holloway\", \"Y7N 1E7\", \"Estonia\" ],\n\t[ \"1112\", \"Maris\", \"Joyner\", \"T6R 2H9\", \"France\" ],\n\t[ \"1113\", \"Galvin\", \"Webster\", \"V8E 9U4\", \"Croatia\" ],\n\t[ \"1114\", \"Farrah\", \"Bean\", \"H2B 8E2\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1115\", \"Martha\", \"Schroeder\", \"14485\", \"Georgia\" ],\n\t[ \"1116\", \"Mari\", \"Boone\", \"D4C 1Q0\", \"Comoros\" ],\n\t[ \"1117\", \"Nadine\", \"Mercado\", \"35046\", \"Syrian Arab Republic\" ],\n\t[ \"1118\", \"Isadora\", \"Keith\", \"R5H 8Y7\", \"Mayotte\" ],\n\t[ \"1119\", \"Quinn\", \"William\", \"V8Q 3Y6\", \"India\" ],\n\t[ \"1120\", \"Justina\", \"Gilbert\", \"11271\", \"Yemen\" ],\n\t[ \"1121\", \"Jordan\", \"Hull\", \"F4Z 7R8\", \"Lesotho\" ],\n\t[ \"1122\", \"Mechelle\", \"Davenport\", \"A9Z 8P2\", \"Bermuda\" ],\n\t[ \"1123\", \"Isabelle\", \"Webster\", \"60972\", \"Zimbabwe\" ],\n\t[ \"1124\", \"Armand\", \"Butler\", \"Y3F 4H9\", \"Nicaragua\" ],\n\t[ \"1125\", \"Herman\", \"Beach\", \"Q8N 6V3\", \"Cape Verde\" ],\n\t[ \"1126\", \"Brianna\", \"Love\", \"D9B 2W8\", \"Sierra Leone\" ],\n\t[ \"1127\", \"Joy\", \"Brown\", \"O7V 7C1\", \"Djibouti\" ],\n\t[ \"1128\", \"Amena\", \"Moss\", \"P8D 1L9\", \"Andorra\" ],\n\t[ \"1129\", \"Zeph\", \"Whitehead\", \"01513\", \"Tanzania, United Republic of\" ],\n\t[ \"1130\", \"Logan\", \"Matthews\", \"73541\", \"Finland\" ],\n\t[ \"1131\", \"Amela\", \"Gregory\", \"65323\", \"Swaziland\" ],\n\t[ \"1132\", \"Zoe\", \"Owen\", \"V5L 5O6\", \"Zambia\" ],\n\t[ \"1133\", \"September\", \"Hewitt\", \"R8K 4G9\", \"Congo\" ],\n\t[ \"1134\", \"Holly\", \"Walter\", \"S2E 3M4\", \"Serbia and Montenegro\" ],\n\t[ \"1135\", \"Zeph\", \"Beach\", \"J6Z 8B5\", \"Ecuador\" ],\n\t[ \"1136\", \"Morgan\", \"Decker\", \"M9H 8I5\", \"Uruguay\" ],\n\t[ \"1137\", \"Malcolm\", \"Maldonado\", \"S6F 8X6\", \"Netherlands\" ],\n\t[ \"1138\", \"Fay\", \"Day\", \"B9R 1U7\", \"Seychelles\" ],\n\t[ \"1139\", \"Charles\", \"Juarez\", \"62791\", \"Virgin Islands, U.S.\" ],\n\t[ \"1140\", \"Amery\", \"Stout\", \"L9A 1F8\", \"Central African Republic\" ],\n\t[ \"1141\", \"Irene\", \"Ferrell\", \"52649\", \"Norway\" ],\n\t[ \"1142\", \"Dean\", \"Stout\", \"N5C 2S8\", \"Uruguay\" ],\n\t[ \"1143\", \"Eric\", \"Baxter\", \"82082\", \"Chile\" ],\n\t[ \"1144\", \"Shelley\", \"Larsen\", \"Y4T 4P3\", \"Antarctica\" ],\n\t[ \"1145\", \"Rigel\", \"Ellis\", \"E3S 6K8\", \"Zimbabwe\" ],\n\t[ \"1146\", \"Maite\", \"Rosa\", \"F6C 5Q9\", \"Zambia\" ],\n\t[ \"1147\", \"Serena\", \"Blanchard\", \"99373\", \"Estonia\" ],\n\t[ \"1148\", \"Melanie\", \"Berger\", \"C5P 4E2\", \"Mozambique\" ],\n\t[ \"1149\", \"Noah\", \"Spence\", \"B8H 7X7\", \"Martinique\" ],\n\t[ \"1150\", \"Elliott\", \"Pierce\", \"W5B 8V7\", \"Swaziland\" ],\n\t[ \"1151\", \"Ahmed\", \"Chang\", \"E9X 7J0\", \"Bulgaria\" ],\n\t[ \"1152\", \"Ross\", \"Figueroa\", \"22458\", \"China\" ],\n\t[ \"1153\", \"Gary\", \"Calderon\", \"V3C 4J8\", \"Algeria\" ],\n\t[ \"1154\", \"Montana\", \"Franklin\", \"94093\", \"Haiti\" ],\n\t[ \"1155\", \"Rae\", \"Curry\", \"45477\", \"Morocco\" ],\n\t[ \"1156\", \"Jillian\", \"Hogan\", \"N8L 4B5\", \"Iceland\" ],\n\t[ \"1157\", \"Mia\", \"Kaufman\", \"54758\", \"Burkina Faso\" ],\n\t[ \"1158\", \"Remedios\", \"Wilkerson\", \"75420\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1159\", \"Xanthus\", \"Baldwin\", \"13961\", \"Congo\" ],\n\t[ \"1160\", \"Madeline\", \"Gates\", \"76351\", \"Saint Helena\" ],\n\t[ \"1161\", \"Leroy\", \"Craig\", \"12770\", \"Finland\" ],\n\t[ \"1162\", \"Melanie\", \"Carpenter\", \"C3B 8L4\", \"Mayotte\" ],\n\t[ \"1163\", \"Ashely\", \"Mcneil\", \"E7E 9K5\", \"French Southern Territories\" ],\n\t[ \"1164\", \"Karina\", \"Mcneil\", \"39956\", \"United Arab Emirates\" ],\n\t[ \"1165\", \"Nina\", \"Mills\", \"92913\", \"Saint Kitts and Nevis\" ],\n\t[ \"1166\", \"Ashton\", \"Singleton\", \"73890\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1167\", \"Meghan\", \"Black\", \"31814\", \"Armenia\" ],\n\t[ \"1168\", \"Jolene\", \"Pope\", \"U6K 7O6\", \"Venezuela\" ],\n\t[ \"1169\", \"Abel\", \"Boyd\", \"37110\", \"Botswana\" ],\n\t[ \"1170\", \"Tiger\", \"Coffey\", \"Y6P 3S4\", \"Faroe Islands\" ],\n\t[ \"1171\", \"Aileen\", \"Rowe\", \"F7G 8D9\", \"Netherlands Antilles\" ],\n\t[ \"1172\", \"Bryar\", \"Forbes\", \"T2N 5H6\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1173\", \"Vera\", \"Hoffman\", \"36299\", \"Guadeloupe\" ],\n\t[ \"1174\", \"Hadassah\", \"Wright\", \"S8J 5B2\", \"Peru\" ],\n\t[ \"1175\", \"Bruce\", \"Blair\", \"Q8E 7K6\", \"Cape Verde\" ],\n\t[ \"1176\", \"Brianna\", \"Wolf\", \"V8S 5A6\", \"Bahamas\" ],\n\t[ \"1177\", \"Kimberley\", \"Reed\", \"17652\", \"Tajikistan\" ],\n\t[ \"1178\", \"Colin\", \"Phelps\", \"42334\", \"Brunei Darussalam\" ],\n\t[ \"1179\", \"Gil\", \"Britt\", \"U3N 6C2\", \"Swaziland\" ],\n\t[ \"1180\", \"Hasad\", \"Pena\", \"09526\", \"United States\" ],\n\t[ \"1181\", \"Violet\", \"Dixon\", \"48691\", \"Micronesia\" ],\n\t[ \"1182\", \"Uriel\", \"Bowen\", \"Z7F 7A7\", \"Uzbekistan\" ],\n\t[ \"1183\", \"Madeline\", \"Keller\", \"18227\", \"Iran, Islamic Republic of\" ],\n\t[ \"1184\", \"Buffy\", \"Mckee\", \"23861\", \"Ethiopia\" ],\n\t[ \"1185\", \"Doris\", \"Martin\", \"V8N 8O7\", \"Liberia\" ],\n\t[ \"1186\", \"Mia\", \"Burke\", \"64582\", \"Virgin Islands, British\" ],\n\t[ \"1187\", \"William\", \"Kemp\", \"63587\", \"Tuvalu\" ],\n\t[ \"1188\", \"Stacy\", \"Quinn\", \"01390\", \"Nauru\" ],\n\t[ \"1189\", \"Halla\", \"Solomon\", \"31138\", \"Pakistan\" ],\n\t[ \"1190\", \"Kasimir\", \"Rodriguez\", \"67823\", \"Costa Rica\" ],\n\t[ \"1191\", \"Davis\", \"Lawrence\", \"27918\", \"Rwanda\" ],\n\t[ \"1192\", \"Nigel\", \"Bryan\", \"L5U 2U9\", \"Seychelles\" ],\n\t[ \"1193\", \"Ivana\", \"Stone\", \"94862\", \"Niue\" ],\n\t[ \"1194\", \"Naomi\", \"Yang\", \"68985\", \"Haiti\" ],\n\t[ \"1195\", \"Roanna\", \"Brown\", \"51196\", \"India\" ],\n\t[ \"1196\", \"Colorado\", \"Chavez\", \"45634\", \"Brazil\" ],\n\t[ \"1197\", \"Illana\", \"Levy\", \"V1A 7R8\", \"Jordan\" ],\n\t[ \"1198\", \"Ali\", \"Lowe\", \"N8K 1Y5\", \"Hungary\" ],\n\t[ \"1199\", \"Virginia\", \"Witt\", \"Y3O 5W8\", \"Azerbaijan\" ],\n\t[ \"1200\", \"Howard\", \"Flores\", \"I9C 3Q7\", \"Fiji\" ],\n\t[ \"1201\", \"Walter\", \"Odom\", \"78418\", \"Thailand\" ],\n\t[ \"1202\", \"Thor\", \"Craig\", \"00935\", \"Jamaica\" ],\n\t[ \"1203\", \"Petra\", \"Barry\", \"E5L 5K5\", \"Finland\" ],\n\t[ \"1204\", \"Lev\", \"Ellison\", \"I6S 1K1\", \"Mongolia\" ],\n\t[ \"1205\", \"Roth\", \"Osborne\", \"15014\", \"Swaziland\" ],\n\t[ \"1206\", \"Lucius\", \"Baldwin\", \"12766\", \"China\" ],\n\t[ \"1207\", \"Candice\", \"Hyde\", \"B5E 4B8\", \"Bahamas\" ],\n\t[ \"1208\", \"Maggy\", \"Bailey\", \"76781\", \"Northern Mariana Islands\" ],\n\t[ \"1209\", \"Beatrice\", \"Gregory\", \"S5S 8S4\", \"Rwanda\" ],\n\t[ \"1210\", \"Adrian\", \"Bowman\", \"58500\", \"Vanuatu\" ],\n\t[ \"1211\", \"Brenden\", \"Chandler\", \"50326\", \"Thailand\" ],\n\t[ \"1212\", \"Jada\", \"Richmond\", \"15990\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"1213\", \"Sawyer\", \"Page\", \"G2W 7R7\", \"Somalia\" ],\n\t[ \"1214\", \"Haley\", \"Jordan\", \"U7X 4U2\", \"Equatorial Guinea\" ],\n\t[ \"1215\", \"Ruby\", \"Watson\", \"30990\", \"Romania\" ],\n\t[ \"1216\", \"Jocelyn\", \"Knowles\", \"78987\", \"Lebanon\" ],\n\t[ \"1217\", \"Preston\", \"Stevenson\", \"F3L 9B3\", \"Mali\" ],\n\t[ \"1218\", \"Kimberly\", \"Merritt\", \"38779\", \"Venezuela\" ],\n\t[ \"1219\", \"Herrod\", \"Burke\", \"56225\", \"French Guiana\" ],\n\t[ \"1220\", \"Solomon\", \"Shannon\", \"67980\", \"Cape Verde\" ],\n\t[ \"1221\", \"Bradley\", \"Stokes\", \"10213\", \"Botswana\" ],\n\t[ \"1222\", \"Grace\", \"Kinney\", \"67923\", \"Montserrat\" ],\n\t[ \"1223\", \"Celeste\", \"Clark\", \"S7M 6I2\", \"Guatemala\" ],\n\t[ \"1224\", \"Patricia\", \"Frank\", \"05615\", \"Venezuela\" ],\n\t[ \"1225\", \"Madonna\", \"Alford\", \"10878\", \"Brunei Darussalam\" ],\n\t[ \"1226\", \"May\", \"Rios\", \"N7O 2L0\", \"Georgia\" ],\n\t[ \"1227\", \"Driscoll\", \"Roach\", \"Y7F 9F8\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1228\", \"Idona\", \"Cruz\", \"T6Q 8L4\", \"Iraq\" ],\n\t[ \"1229\", \"Sydney\", \"Delacruz\", \"69511\", \"United Arab Emirates\" ],\n\t[ \"1230\", \"Gillian\", \"Huff\", \"52624\", \"French Southern Territories\" ],\n\t[ \"1231\", \"Minerva\", \"Rosario\", \"29195\", \"Andorra\" ],\n\t[ \"1232\", \"Kerry\", \"Alvarado\", \"L3Q 2V5\", \"Portugal\" ],\n\t[ \"1233\", \"Amos\", \"Bass\", \"26389\", \"Holy See (Vatican City State)\" ],\n\t[ \"1234\", \"Deanna\", \"Parks\", \"57376\", \"Estonia\" ],\n\t[ \"1235\", \"Fitzgerald\", \"Green\", \"M3P 9N2\", \"Slovenia\" ],\n\t[ \"1236\", \"Sade\", \"Hinton\", \"35561\", \"Barbados\" ],\n\t[ \"1237\", \"Suki\", \"Parsons\", \"44591\", \"Syrian Arab Republic\" ],\n\t[ \"1238\", \"Orli\", \"Weeks\", \"K2W 9L4\", \"Peru\" ],\n\t[ \"1239\", \"Nicholas\", \"Copeland\", \"I5W 7A4\", \"French Guiana\" ],\n\t[ \"1240\", \"Guy\", \"Vang\", \"22277\", \"Pitcairn\" ],\n\t[ \"1241\", \"Hunter\", \"Goodman\", \"72290\", \"Malaysia\" ],\n\t[ \"1242\", \"Noble\", \"Rich\", \"I3B 6T9\", \"Gibraltar\" ],\n\t[ \"1243\", \"Delilah\", \"Zamora\", \"96328\", \"New Zealand\" ],\n\t[ \"1244\", \"Sybil\", \"Mercer\", \"93665\", \"Namibia\" ],\n\t[ \"1245\", \"Scarlett\", \"Brock\", \"Z2E 3J2\", \"Central African Republic\" ],\n\t[ \"1246\", \"Channing\", \"Alexander\", \"W5V 8D2\", \"San Marino\" ],\n\t[ \"1247\", \"Carolyn\", \"Boyle\", \"Q5Z 9E6\", \"Gabon\" ],\n\t[ \"1248\", \"Irene\", \"Jennings\", \"F3H 4O6\", \"Saint Helena\" ],\n\t[ \"1249\", \"Bianca\", \"Pratt\", \"66354\", \"Malaysia\" ],\n\t[ \"1250\", \"Dexter\", \"Cole\", \"56106\", \"French Southern Territories\" ],\n\t[ \"1251\", \"Berk\", \"Velez\", \"26759\", \"Lesotho\" ],\n\t[ \"1252\", \"Barrett\", \"Richardson\", \"59446\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1253\", \"Scarlet\", \"Jacobs\", \"G9A 7L6\", \"Dominica\" ],\n\t[ \"1254\", \"Aiko\", \"Brooks\", \"R6R 9E4\", \"Liberia\" ],\n\t[ \"1255\", \"Jacob\", \"Moore\", \"P2Y 6P3\", \"Cambodia\" ],\n\t[ \"1256\", \"Madeline\", \"Bishop\", \"D4I 2E7\", \"Dominican Republic\" ],\n\t[ \"1257\", \"Jarrod\", \"Evans\", \"C9O 7V7\", \"Taiwan, Province of China\" ],\n\t[ \"1258\", \"Beverly\", \"Witt\", \"64850\", \"Denmark\" ],\n\t[ \"1259\", \"Karyn\", \"Rhodes\", \"D6G 5Z3\", \"Cape Verde\" ],\n\t[ \"1260\", \"Imani\", \"Quinn\", \"01897\", \"Macao\" ],\n\t[ \"1261\", \"Athena\", \"Eaton\", \"03568\", \"Syrian Arab Republic\" ],\n\t[ \"1262\", \"Raymond\", \"Valdez\", \"21037\", \"Romania\" ],\n\t[ \"1263\", \"Christopher\", \"Ferguson\", \"64945\", \"Indonesia\" ],\n\t[ \"1264\", \"Latifah\", \"Harris\", \"91381\", \"Suriname\" ],\n\t[ \"1265\", \"Dacey\", \"Wagner\", \"81483\", \"Qatar\" ],\n\t[ \"1266\", \"Summer\", \"Myers\", \"H6A 1G5\", \"Angola\" ],\n\t[ \"1267\", \"Jasmine\", \"Rivera\", \"Y4W 8P2\", \"Virgin Islands, British\" ],\n\t[ \"1268\", \"Cairo\", \"Massey\", \"Q6Y 7A7\", \"Poland\" ],\n\t[ \"1269\", \"Jena\", \"Hill\", \"89480\", \"United States Minor Outlying Islands\" ],\n\t[ \"1270\", \"Ava\", \"Benson\", \"L9H 8V1\", \"Sri Lanka\" ],\n\t[ \"1271\", \"Gillian\", \"Mercado\", \"A9W 6V5\", \"Norway\" ],\n\t[ \"1272\", \"Peter\", \"Marquez\", \"I5B 3W9\", \"Guyana\" ],\n\t[ \"1273\", \"Price\", \"Coleman\", \"X8G 2S0\", \"Burkina Faso\" ],\n\t[ \"1274\", \"Shana\", \"Harper\", \"L2B 3U9\", \"Malaysia\" ],\n\t[ \"1275\", \"Serina\", \"Matthews\", \"58061\", \"Lithuania\" ],\n\t[ \"1276\", \"Aretha\", \"Bryant\", \"Y8J 7A5\", \"Tonga\" ],\n\t[ \"1277\", \"Wesley\", \"Craig\", \"20141\", \"Australia\" ],\n\t[ \"1278\", \"Martena\", \"Mercer\", \"P6X 2L9\", \"Sudan\" ],\n\t[ \"1279\", \"Tamara\", \"Dennis\", \"D3H 9R0\", \"Mali\" ],\n\t[ \"1280\", \"Phelan\", \"Pena\", \"D2H 2H7\", \"United States Minor Outlying Islands\" ],\n\t[ \"1281\", \"Rebecca\", \"Kinney\", \"B5Z 9S4\", \"Antarctica\" ],\n\t[ \"1282\", \"Josephine\", \"Delgado\", \"81010\", \"Algeria\" ],\n\t[ \"1283\", \"Kieran\", \"Estes\", \"70093\", \"Bermuda\" ],\n\t[ \"1284\", \"Tamara\", \"Williamson\", \"90905\", \"French Guiana\" ],\n\t[ \"1285\", \"Dora\", \"Serrano\", \"W8K 6R5\", \"Nauru\" ],\n\t[ \"1286\", \"Morgan\", \"Bass\", \"B6F 8R2\", \"Madagascar\" ],\n\t[ \"1287\", \"Margaret\", \"Austin\", \"D2C 2C1\", \"Belgium\" ],\n\t[ \"1288\", \"Nasim\", \"Berry\", \"J9X 7M5\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1289\", \"Jelani\", \"Rutledge\", \"34552\", \"Bolivia\" ],\n\t[ \"1290\", \"Cassady\", \"Hardin\", \"I2K 4H6\", \"Hong Kong\" ],\n\t[ \"1291\", \"Jenette\", \"Thornton\", \"44943\", \"Uganda\" ],\n\t[ \"1292\", \"Alexandra\", \"Sims\", \"93937\", \"Australia\" ],\n\t[ \"1293\", \"Ross\", \"Higgins\", \"61993\", \"Nicaragua\" ],\n\t[ \"1294\", \"Penelope\", \"Henson\", \"90344\", \"Trinidad and Tobago\" ],\n\t[ \"1295\", \"Yoshi\", \"Blackwell\", \"C8D 1T4\", \"Costa Rica\" ],\n\t[ \"1296\", \"Daria\", \"Rodriquez\", \"X3C 6L0\", \"Iceland\" ],\n\t[ \"1297\", \"Wesley\", \"Waller\", \"43947\", \"Myanmar\" ],\n\t[ \"1298\", \"Adam\", \"Hayden\", \"88969\", \"Italy\" ],\n\t[ \"1299\", \"Charity\", \"William\", \"46439\", \"Greece\" ],\n\t[ \"1300\", \"Ronan\", \"Hopper\", \"51955\", \"Zambia\" ],\n\t[ \"1301\", \"Geraldine\", \"Hatfield\", \"W9S 7T5\", \"Luxembourg\" ],\n\t[ \"1302\", \"Barry\", \"Nicholson\", \"79625\", \"Liechtenstein\" ],\n\t[ \"1303\", \"Donovan\", \"Ortiz\", \"68119\", \"Macao\" ],\n\t[ \"1304\", \"Jeanette\", \"Cooper\", \"D5P 9L2\", \"Sri Lanka\" ],\n\t[ \"1305\", \"Isadora\", \"Stephenson\", \"P4X 4H5\", \"Mauritania\" ],\n\t[ \"1306\", \"Hall\", \"Hays\", \"J2Z 2H1\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1307\", \"Idola\", \"Roberson\", \"89249\", \"Niue\" ],\n\t[ \"1308\", \"Olympia\", \"Dennis\", \"69498\", \"Guinea\" ],\n\t[ \"1309\", \"Naida\", \"Palmer\", \"19840\", \"Gambia\" ],\n\t[ \"1310\", \"Maxine\", \"Rollins\", \"87856\", \"Belize\" ],\n\t[ \"1311\", \"Rooney\", \"Phelps\", \"48424\", \"Italy\" ],\n\t[ \"1312\", \"Shelly\", \"Edwards\", \"O7O 1U4\", \"Mali\" ],\n\t[ \"1313\", \"Cassidy\", \"Holcomb\", \"98785\", \"Colombia\" ],\n\t[ \"1314\", \"Sybil\", \"Moran\", \"F3C 6E4\", \"Switzerland\" ],\n\t[ \"1315\", \"Mufutau\", \"Larson\", \"00276\", \"British Indian Ocean Territory\" ],\n\t[ \"1316\", \"Fiona\", \"Bryant\", \"U7Y 7N6\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1317\", \"Lenore\", \"Boyle\", \"H5G 6P9\", \"Sudan\" ],\n\t[ \"1318\", \"Ignacia\", \"Avila\", \"Y5M 1S2\", \"Romania\" ],\n\t[ \"1319\", \"Wendy\", \"Stein\", \"25422\", \"Taiwan, Province of China\" ],\n\t[ \"1320\", \"Garrison\", \"Bass\", \"B9J 6D9\", \"Romania\" ],\n\t[ \"1321\", \"Curran\", \"Roy\", \"X2F 4P2\", \"Taiwan, Province of China\" ],\n\t[ \"1322\", \"Oliver\", \"Beach\", \"N6J 1C5\", \"Kazakhstan\" ],\n\t[ \"1323\", \"Bo\", \"Duran\", \"D5C 5C2\", \"Eritrea\" ],\n\t[ \"1324\", \"Tashya\", \"Morrow\", \"N2J 7O9\", \"Rwanda\" ],\n\t[ \"1325\", \"Cheryl\", \"Powell\", \"72413\", \"Niger\" ],\n\t[ \"1326\", \"Justin\", \"Roth\", \"18779\", \"Brunei Darussalam\" ],\n\t[ \"1327\", \"Nathaniel\", \"Foster\", \"04955\", \"Bermuda\" ],\n\t[ \"1328\", \"Candace\", \"Nunez\", \"G7Z 1N2\", \"Moldova\" ],\n\t[ \"1329\", \"Nero\", \"West\", \"K3Q 6B3\", \"Myanmar\" ],\n\t[ \"1330\", \"Brendan\", \"Mcintyre\", \"C4E 5H7\", \"Argentina\" ],\n\t[ \"1331\", \"Chaney\", \"Stafford\", \"V3X 8J4\", \"Benin\" ],\n\t[ \"1332\", \"Sylvia\", \"Velez\", \"95851\", \"Iraq\" ],\n\t[ \"1333\", \"Azalia\", \"Castro\", \"55986\", \"Israel\" ],\n\t[ \"1334\", \"Emily\", \"Hogan\", \"74667\", \"Botswana\" ],\n\t[ \"1335\", \"Buckminster\", \"Hurst\", \"N9C 2X6\", \"Reunion\" ],\n\t[ \"1336\", \"Rinah\", \"Rodriquez\", \"31896\", \"Guinea-bissau\" ],\n\t[ \"1337\", \"Nash\", \"Barnett\", \"Y8X 7H5\", \"China\" ],\n\t[ \"1338\", \"Xanthus\", \"Barker\", \"11212\", \"Trinidad and Tobago\" ],\n\t[ \"1339\", \"Minerva\", \"Huber\", \"M6M 9U3\", \"Equatorial Guinea\" ],\n\t[ \"1340\", \"Kaseem\", \"Tillman\", \"86565\", \"Bulgaria\" ],\n\t[ \"1341\", \"Cassidy\", \"Dejesus\", \"93205\", \"Sierra Leone\" ],\n\t[ \"1342\", \"Sheila\", \"Munoz\", \"26473\", \"Benin\" ],\n\t[ \"1343\", \"Florence\", \"Yates\", \"M5O 1J1\", \"Russian Federation\" ],\n\t[ \"1344\", \"Isadora\", \"Wagner\", \"88381\", \"Philippines\" ],\n\t[ \"1345\", \"Hilel\", \"Kramer\", \"E5D 4F5\", \"Lebanon\" ],\n\t[ \"1346\", \"Stewart\", \"Lawson\", \"67313\", \"Malaysia\" ],\n\t[ \"1347\", \"Ira\", \"Duffy\", \"52841\", \"Greece\" ],\n\t[ \"1348\", \"Ignatius\", \"Robinson\", \"10035\", \"Russian Federation\" ],\n\t[ \"1349\", \"Baxter\", \"Carroll\", \"92288\", \"Albania\" ],\n\t[ \"1350\", \"Palmer\", \"James\", \"N5X 5B1\", \"Germany\" ],\n\t[ \"1351\", \"Ava\", \"Eaton\", \"76497\", \"Egypt\" ],\n\t[ \"1352\", \"Kiona\", \"Smith\", \"09402\", \"Belize\" ],\n\t[ \"1353\", \"Brian\", \"Barlow\", \"00156\", \"Panama\" ],\n\t[ \"1354\", \"Nolan\", \"Rosa\", \"J2O 9W2\", \"Uruguay\" ],\n\t[ \"1355\", \"Teegan\", \"Burnett\", \"02401\", \"Italy\" ],\n\t[ \"1356\", \"Erin\", \"Knox\", \"95496\", \"Egypt\" ],\n\t[ \"1357\", \"Amela\", \"Sanford\", \"59890\", \"Virgin Islands, U.S.\" ],\n\t[ \"1358\", \"Quemby\", \"Hensley\", \"17698\", \"Tuvalu\" ],\n\t[ \"1359\", \"Ava\", \"York\", \"J1M 1A0\", \"Nigeria\" ],\n\t[ \"1360\", \"Vivien\", \"Ware\", \"N9S 1W6\", \"Bahamas\" ],\n\t[ \"1361\", \"Nyssa\", \"Lamb\", \"97964\", \"Estonia\" ],\n\t[ \"1362\", \"Brenna\", \"Slater\", \"L4P 5V6\", \"British Indian Ocean Territory\" ],\n\t[ \"1363\", \"Kennan\", \"Larsen\", \"M2A 4X0\", \"Angola\" ],\n\t[ \"1364\", \"Linda\", \"Luna\", \"P8C 4S8\", \"Gambia\" ],\n\t[ \"1365\", \"Boris\", \"Poole\", \"U7J 4G1\", \"Aruba\" ],\n\t[ \"1366\", \"Lyle\", \"Cote\", \"F5J 3Y2\", \"Somalia\" ],\n\t[ \"1367\", \"Oleg\", \"Knapp\", \"K4C 5T8\", \"Guinea\" ],\n\t[ \"1368\", \"Hanae\", \"Brown\", \"51395\", \"Nepal\" ],\n\t[ \"1369\", \"India\", \"Hyde\", \"E8P 7E8\", \"Belize\" ],\n\t[ \"1370\", \"Madeson\", \"Hodge\", \"23265\", \"Gambia\" ],\n\t[ \"1371\", \"Thaddeus\", \"Hester\", \"Y7S 5W1\", \"Saint Helena\" ],\n\t[ \"1372\", \"Aaron\", \"Kemp\", \"A1Q 8R3\", \"Albania\" ],\n\t[ \"1373\", \"Aurelia\", \"Thornton\", \"P8T 9D4\", \"Swaziland\" ],\n\t[ \"1374\", \"Preston\", \"Sharpe\", \"97472\", \"Niue\" ],\n\t[ \"1375\", \"Grace\", \"Gregory\", \"51767\", \"Burkina Faso\" ],\n\t[ \"1376\", \"Nicole\", \"Hicks\", \"81040\", \"Burkina Faso\" ],\n\t[ \"1377\", \"Hall\", \"Randall\", \"X1C 7A8\", \"Cambodia\" ],\n\t[ \"1378\", \"Burke\", \"Silva\", \"57219\", \"Romania\" ],\n\t[ \"1379\", \"Talon\", \"Kline\", \"28200\", \"Argentina\" ],\n\t[ \"1380\", \"Cassady\", \"Duncan\", \"Y2M 8F5\", \"Kenya\" ],\n\t[ \"1381\", \"Brielle\", \"Reed\", \"06254\", \"Greece\" ],\n\t[ \"1382\", \"Claire\", \"Stein\", \"50289\", \"Viet Nam\" ],\n\t[ \"1383\", \"Fleur\", \"Cabrera\", \"30131\", \"Indonesia\" ],\n\t[ \"1384\", \"Ella\", \"Ellison\", \"Q7Q 4R2\", \"Netherlands Antilles\" ],\n\t[ \"1385\", \"Zachery\", \"Wolf\", \"A9Q 6A8\", \"Jamaica\" ],\n\t[ \"1386\", \"Emerson\", \"Brewer\", \"Y4R 9M9\", \"Bosnia and Herzegovina\" ],\n\t[ \"1387\", \"Sarah\", \"Brooks\", \"27281\", \"Pitcairn\" ],\n\t[ \"1388\", \"Kylan\", \"Garrison\", \"S8E 7L8\", \"Djibouti\" ],\n\t[ \"1389\", \"Guinevere\", \"Mills\", \"75612\", \"Comoros\" ],\n\t[ \"1390\", \"Claudia\", \"Stevenson\", \"73390\", \"Colombia\" ],\n\t[ \"1391\", \"Valentine\", \"Burton\", \"Z9P 7R8\", \"Nauru\" ],\n\t[ \"1392\", \"Raymond\", \"Mclean\", \"L8W 2K5\", \"Brunei Darussalam\" ],\n\t[ \"1393\", \"Juliet\", \"Combs\", \"88712\", \"Samoa\" ],\n\t[ \"1394\", \"Lawrence\", \"Williamson\", \"32528\", \"Netherlands Antilles\" ],\n\t[ \"1395\", \"Inga\", \"Rivers\", \"12850\", \"Kuwait\" ],\n\t[ \"1396\", \"Mira\", \"Zimmerman\", \"D1I 1W2\", \"Ireland\" ],\n\t[ \"1397\", \"Hilda\", \"Stafford\", \"11054\", \"Cuba\" ],\n\t[ \"1398\", \"Tanek\", \"Kim\", \"88590\", \"Cayman Islands\" ],\n\t[ \"1399\", \"Bryar\", \"Mcintyre\", \"H6F 4S5\", \"Russian Federation\" ],\n\t[ \"1400\", \"Sean\", \"Reed\", \"P2V 8J9\", \"Malta\" ],\n\t[ \"1401\", \"Serena\", \"Henderson\", \"Z5C 8A0\", \"Madagascar\" ],\n\t[ \"1402\", \"Hedley\", \"Parks\", \"L8S 6F4\", \"Angola\" ],\n\t[ \"1403\", \"Alice\", \"Quinn\", \"06084\", \"Senegal\" ],\n\t[ \"1404\", \"Linda\", \"Burgess\", \"H1E 7C0\", \"Turkmenistan\" ],\n\t[ \"1405\", \"Hilda\", \"Burns\", \"Q9Q 4S2\", \"Kyrgyzstan\" ],\n\t[ \"1406\", \"Griffith\", \"Watts\", \"D4J 7N2\", \"United States Minor Outlying Islands\" ],\n\t[ \"1407\", \"Camden\", \"Glenn\", \"12939\", \"Russian Federation\" ],\n\t[ \"1408\", \"Tallulah\", \"Rush\", \"G9V 3N2\", \"Turkey\" ],\n\t[ \"1409\", \"Hasad\", \"Salinas\", \"H3F 7P9\", \"Cameroon\" ],\n\t[ \"1410\", \"Violet\", \"Chavez\", \"T2H 9C6\", \"Virgin Islands, U.S.\" ],\n\t[ \"1411\", \"Declan\", \"Hurley\", \"32614\", \"Iran, Islamic Republic of\" ],\n\t[ \"1412\", \"Robin\", \"Dean\", \"34266\", \"Northern Mariana Islands\" ],\n\t[ \"1413\", \"Mariko\", \"Avila\", \"B8F 8Y5\", \"Burundi\" ],\n\t[ \"1414\", \"Bradley\", \"Pugh\", \"11453\", \"Sri Lanka\" ],\n\t[ \"1415\", \"Herman\", \"Hernandez\", \"F3C 6S2\", \"Chile\" ],\n\t[ \"1416\", \"Montana\", \"Wynn\", \"B3M 8M2\", \"Aruba\" ],\n\t[ \"1417\", \"Erin\", \"Melton\", \"17022\", \"France\" ],\n\t[ \"1418\", \"Zachery\", \"Small\", \"L5O 7O1\", \"French Southern Territories\" ],\n\t[ \"1419\", \"Melanie\", \"Rivera\", \"07922\", \"Korea\" ],\n\t[ \"1420\", \"Blossom\", \"Chase\", \"75493\", \"Mauritius\" ],\n\t[ \"1421\", \"Stephanie\", \"Taylor\", \"U8K 3I9\", \"Bahamas\" ],\n\t[ \"1422\", \"Carter\", \"Fulton\", \"T4F 8D1\", \"Turks and Caicos Islands\" ],\n\t[ \"1423\", \"Celeste\", \"Medina\", \"75629\", \"Lebanon\" ],\n\t[ \"1424\", \"Katell\", \"Guzman\", \"15409\", \"United Arab Emirates\" ],\n\t[ \"1425\", \"Howard\", \"Rowland\", \"29003\", \"Liberia\" ],\n\t[ \"1426\", \"Reece\", \"Taylor\", \"W8G 7P7\", \"Samoa\" ],\n\t[ \"1427\", \"Bradley\", \"Peterson\", \"52568\", \"Singapore\" ],\n\t[ \"1428\", \"Ulric\", \"Hancock\", \"07437\", \"Bolivia\" ],\n\t[ \"1429\", \"Francis\", \"Rogers\", \"15904\", \"Albania\" ],\n\t[ \"1430\", \"Tatiana\", \"Mccray\", \"19604\", \"Belize\" ],\n\t[ \"1431\", \"Merrill\", \"Rowe\", \"68539\", \"Ethiopia\" ],\n\t[ \"1432\", \"Kiara\", \"Taylor\", \"F6D 8V7\", \"Burkina Faso\" ],\n\t[ \"1433\", \"Buffy\", \"Shannon\", \"61880\", \"Kiribati\" ],\n\t[ \"1434\", \"Amber\", \"Farmer\", \"K5F 1J7\", \"Barbados\" ],\n\t[ \"1435\", \"Blake\", \"Wilkins\", \"O1L 2G2\", \"Virgin Islands, U.S.\" ],\n\t[ \"1436\", \"Aimee\", \"Fulton\", \"18626\", \"Chad\" ],\n\t[ \"1437\", \"Kai\", \"Montgomery\", \"U6S 4W7\", \"Costa Rica\" ],\n\t[ \"1438\", \"Latifah\", \"Bell\", \"74589\", \"Chad\" ],\n\t[ \"1439\", \"Ronan\", \"Herring\", \"01710\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1440\", \"Macy\", \"Skinner\", \"78054\", \"Gibraltar\" ],\n\t[ \"1441\", \"Ignatius\", \"Berg\", \"59756\", \"Liechtenstein\" ],\n\t[ \"1442\", \"Prescott\", \"Pratt\", \"V6H 6P4\", \"Kuwait\" ],\n\t[ \"1443\", \"Deborah\", \"Hebert\", \"11480\", \"Liberia\" ],\n\t[ \"1444\", \"Quentin\", \"Jones\", \"G8W 8U6\", \"Slovenia\" ],\n\t[ \"1445\", \"Duncan\", \"Parsons\", \"Z9F 5G8\", \"Cambodia\" ],\n\t[ \"1446\", \"Sheila\", \"George\", \"18033\", \"Trinidad and Tobago\" ],\n\t[ \"1447\", \"Alyssa\", \"Padilla\", \"V3O 6C3\", \"Qatar\" ],\n\t[ \"1448\", \"Amelia\", \"Orr\", \"51943\", \"Canada\" ],\n\t[ \"1449\", \"Bethany\", \"Thomas\", \"33451\", \"Liberia\" ],\n\t[ \"1450\", \"Kellie\", \"Pitts\", \"G4S 1Q3\", \"Panama\" ],\n\t[ \"1451\", \"Stone\", \"Stout\", \"L4C 9N0\", \"Latvia\" ],\n\t[ \"1452\", \"Brynne\", \"Bailey\", \"B1M 4O0\", \"Ukraine\" ],\n\t[ \"1453\", \"Aquila\", \"Hurley\", \"41312\", \"United Kingdom\" ],\n\t[ \"1454\", \"David\", \"Bradshaw\", \"11152\", \"Denmark\" ],\n\t[ \"1455\", \"Ryan\", \"Gates\", \"Z7O 1U0\", \"Austria\" ],\n\t[ \"1456\", \"Kyle\", \"Weber\", \"39871\", \"Guyana\" ],\n\t[ \"1457\", \"Declan\", \"Moore\", \"K3B 6L2\", \"Gibraltar\" ],\n\t[ \"1458\", \"Theodore\", \"Hickman\", \"W8E 6K1\", \"Mauritius\" ],\n\t[ \"1459\", \"Rebekah\", \"Merritt\", \"44042\", \"Mauritania\" ],\n\t[ \"1460\", \"Meredith\", \"Powell\", \"98238\", \"Bhutan\" ],\n\t[ \"1461\", \"Paki\", \"Simmons\", \"34122\", \"Norway\" ],\n\t[ \"1462\", \"Carissa\", \"Ballard\", \"20095\", \"Antarctica\" ],\n\t[ \"1463\", \"James\", \"Wilson\", \"96376\", \"Venezuela\" ],\n\t[ \"1464\", \"Pamela\", \"Gamble\", \"U7F 7B6\", \"Turkmenistan\" ],\n\t[ \"1465\", \"Rogan\", \"Davenport\", \"E6S 4R7\", \"French Polynesia\" ],\n\t[ \"1466\", \"Daphne\", \"Pearson\", \"G2H 9M0\", \"American Samoa\" ],\n\t[ \"1467\", \"Maxwell\", \"Nash\", \"87205\", \"Guadeloupe\" ],\n\t[ \"1468\", \"Hayes\", \"Salazar\", \"55712\", \"American Samoa\" ],\n\t[ \"1469\", \"Justin\", \"Conner\", \"03924\", \"United Kingdom\" ],\n\t[ \"1470\", \"Blythe\", \"Joyner\", \"T6H 3M0\", \"Montserrat\" ],\n\t[ \"1471\", \"Herrod\", \"Spears\", \"19474\", \"Philippines\" ],\n\t[ \"1472\", \"Yvette\", \"Joyce\", \"R7Y 7B8\", \"Botswana\" ],\n\t[ \"1473\", \"Chloe\", \"Reid\", \"K4Y 1R2\", \"Philippines\" ],\n\t[ \"1474\", \"MacKensie\", \"Branch\", \"J5E 3X8\", \"Saint Kitts and Nevis\" ],\n\t[ \"1475\", \"Nasim\", \"Buchanan\", \"M4E 4D2\", \"Portugal\" ],\n\t[ \"1476\", \"Aileen\", \"Rasmussen\", \"H2V 3F4\", \"Dominica\" ],\n\t[ \"1477\", \"Nicole\", \"Mullins\", \"U6Q 9X5\", \"New Caledonia\" ],\n\t[ \"1478\", \"David\", \"Luna\", \"11935\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1479\", \"Germaine\", \"Massey\", \"G3N 4C7\", \"Colombia\" ],\n\t[ \"1480\", \"Matthew\", \"Knowles\", \"V4D 4Z0\", \"Turkey\" ],\n\t[ \"1481\", \"Timon\", \"Rowe\", \"14024\", \"Morocco\" ],\n\t[ \"1482\", \"Gail\", \"Young\", \"68293\", \"Bhutan\" ],\n\t[ \"1483\", \"Mariam\", \"Mejia\", \"O3P 4Q7\", \"Singapore\" ],\n\t[ \"1484\", \"Carla\", \"Norris\", \"D7A 3F1\", \"Liberia\" ],\n\t[ \"1485\", \"Ainsley\", \"Donaldson\", \"H4Z 1Q8\", \"Tanzania, United Republic of\" ],\n\t[ \"1486\", \"Avye\", \"Raymond\", \"44808\", \"Namibia\" ],\n\t[ \"1487\", \"Amanda\", \"Sargent\", \"O7F 3S4\", \"Afghanistan\" ],\n\t[ \"1488\", \"Tiger\", \"Chambers\", \"I3K 7H4\", \"United States\" ],\n\t[ \"1489\", \"Dylan\", \"Ford\", \"04043\", \"Solomon Islands\" ],\n\t[ \"1490\", \"Kaitlin\", \"Franklin\", \"99451\", \"Namibia\" ],\n\t[ \"1491\", \"Hayes\", \"Craft\", \"D6H 4Y6\", \"Christmas Island\" ],\n\t[ \"1492\", \"Nolan\", \"Sullivan\", \"31246\", \"United States Minor Outlying Islands\" ],\n\t[ \"1493\", \"Jennifer\", \"Romero\", \"E7I 1R7\", \"Latvia\" ],\n\t[ \"1494\", \"Deanna\", \"Wall\", \"36109\", \"Nepal\" ],\n\t[ \"1495\", \"Dara\", \"Valenzuela\", \"18359\", \"Martinique\" ],\n\t[ \"1496\", \"Iris\", \"Blanchard\", \"84392\", \"Turks and Caicos Islands\" ],\n\t[ \"1497\", \"Rhea\", \"Burgess\", \"T7Y 7C5\", \"Liberia\" ],\n\t[ \"1498\", \"Karina\", \"Small\", \"B2F 2X5\", \"Bermuda\" ],\n\t[ \"1499\", \"Victor\", \"Case\", \"49492\", \"Vanuatu\" ],\n\t[ \"1500\", \"Rose\", \"Terry\", \"B4G 8I0\", \"Timor-leste\" ],\n\t[ \"1501\", \"Wyatt\", \"Berg\", \"K3B 5N2\", \"Vanuatu\" ],\n\t[ \"1502\", \"Zephania\", \"Herrera\", \"E6R 2A5\", \"Romania\" ],\n\t[ \"1503\", \"Felix\", \"Johns\", \"X8U 2P1\", \"Angola\" ],\n\t[ \"1504\", \"Melyssa\", \"George\", \"M4J 5X8\", \"Uzbekistan\" ],\n\t[ \"1505\", \"Robert\", \"Spears\", \"61322\", \"Papua New Guinea\" ],\n\t[ \"1506\", \"Myra\", \"Wood\", \"50638\", \"Afghanistan\" ],\n\t[ \"1507\", \"Sean\", \"Kerr\", \"40094\", \"Guadeloupe\" ],\n\t[ \"1508\", \"Wesley\", \"Mcclain\", \"H7F 1H3\", \"Mongolia\" ],\n\t[ \"1509\", \"Ishmael\", \"Hoover\", \"42503\", \"Czech Republic\" ],\n\t[ \"1510\", \"Ocean\", \"Parker\", \"L3Z 8G0\", \"Guyana\" ],\n\t[ \"1511\", \"Berk\", \"Clay\", \"B6Q 7V7\", \"Botswana\" ],\n\t[ \"1512\", \"Daquan\", \"Harrison\", \"78004\", \"Niger\" ],\n\t[ \"1513\", \"Ramona\", \"Burris\", \"66986\", \"Palau\" ],\n\t[ \"1514\", \"Jaden\", \"Miranda\", \"80086\", \"Madagascar\" ],\n\t[ \"1515\", \"Solomon\", \"Kirk\", \"R7M 3M3\", \"Slovenia\" ],\n\t[ \"1516\", \"Tanek\", \"Rosales\", \"X5B 5D0\", \"Tonga\" ],\n\t[ \"1517\", \"Jack\", \"Cooke\", \"46356\", \"French Southern Territories\" ],\n\t[ \"1518\", \"Naomi\", \"Sykes\", \"76541\", \"Marshall Islands\" ],\n\t[ \"1519\", \"Moana\", \"Vinson\", \"K4R 3U7\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1520\", \"Kaye\", \"Sweet\", \"S6S 2G0\", \"Dominican Republic\" ],\n\t[ \"1521\", \"Bruno\", \"Beard\", \"20686\", \"Israel\" ],\n\t[ \"1522\", \"Helen\", \"Richards\", \"66393\", \"Argentina\" ],\n\t[ \"1523\", \"Gisela\", \"Owens\", \"S8Q 4L3\", \"Haiti\" ],\n\t[ \"1524\", \"Ivy\", \"Garrett\", \"P6G 8S8\", \"United Arab Emirates\" ],\n\t[ \"1525\", \"Malik\", \"Osborne\", \"78332\", \"Tajikistan\" ],\n\t[ \"1526\", \"Whoopi\", \"Franco\", \"T3T 5Y1\", \"Serbia and Montenegro\" ],\n\t[ \"1527\", \"Basil\", \"Baker\", \"61233\", \"Cuba\" ],\n\t[ \"1528\", \"Linda\", \"King\", \"31410\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1529\", \"Allegra\", \"Hobbs\", \"F2C 9M8\", \"Andorra\" ],\n\t[ \"1530\", \"Kirsten\", \"Elliott\", \"T8C 4X3\", \"Haiti\" ],\n\t[ \"1531\", \"Joseph\", \"Ortiz\", \"40165\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1532\", \"Pearl\", \"Mccormick\", \"93914\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"1533\", \"Fritz\", \"Austin\", \"A3S 7C8\", \"Canada\" ],\n\t[ \"1534\", \"Lunea\", \"Hickman\", \"25676\", \"Cameroon\" ],\n\t[ \"1535\", \"Inga\", \"Cortez\", \"14707\", \"Comoros\" ],\n\t[ \"1536\", \"Claudia\", \"Long\", \"74877\", \"Tokelau\" ],\n\t[ \"1537\", \"Judah\", \"Williamson\", \"S9N 6F0\", \"Paraguay\" ],\n\t[ \"1538\", \"Eve\", \"Beasley\", \"K8Z 5H7\", \"Honduras\" ],\n\t[ \"1539\", \"Tad\", \"Lang\", \"29577\", \"Equatorial Guinea\" ],\n\t[ \"1540\", \"Jack\", \"Lawson\", \"46631\", \"Costa Rica\" ],\n\t[ \"1541\", \"Vaughan\", \"Barron\", \"N9L 9T4\", \"Chile\" ],\n\t[ \"1542\", \"Solomon\", \"Bowman\", \"05734\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1543\", \"Nash\", \"Giles\", \"64600\", \"Denmark\" ],\n\t[ \"1544\", \"Xander\", \"Eaton\", \"84933\", \"Bosnia and Herzegovina\" ],\n\t[ \"1545\", \"Hanna\", \"Hull\", \"61062\", \"Namibia\" ],\n\t[ \"1546\", \"Lee\", \"Gaines\", \"V7H 6H7\", \"Suriname\" ],\n\t[ \"1547\", \"Brian\", \"Sutton\", \"60055\", \"Timor-leste\" ],\n\t[ \"1548\", \"Azalia\", \"Henson\", \"D9J 8E4\", \"Antarctica\" ],\n\t[ \"1549\", \"Russell\", \"Avila\", \"01774\", \"China\" ],\n\t[ \"1550\", \"Marsden\", \"Leblanc\", \"30201\", \"New Caledonia\" ],\n\t[ \"1551\", \"Tad\", \"Nichols\", \"K5V 6N1\", \"Monaco\" ],\n\t[ \"1552\", \"Eliana\", \"Savage\", \"06807\", \"Central African Republic\" ],\n\t[ \"1553\", \"Madeline\", \"Conway\", \"83513\", \"Latvia\" ],\n\t[ \"1554\", \"Kai\", \"Caldwell\", \"S1K 2Q2\", \"Indonesia\" ],\n\t[ \"1555\", \"Wynne\", \"Goodman\", \"U9Y 8P7\", \"Gibraltar\" ],\n\t[ \"1556\", \"Nora\", \"Dudley\", \"52688\", \"Netherlands Antilles\" ],\n\t[ \"1557\", \"Anastasia\", \"Gates\", \"T7T 8C8\", \"Morocco\" ],\n\t[ \"1558\", \"Lester\", \"Good\", \"76376\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1559\", \"Craig\", \"Skinner\", \"S7B 3Z6\", \"Madagascar\" ],\n\t[ \"1560\", \"Kibo\", \"Craft\", \"M5C 2I9\", \"Hong Kong\" ],\n\t[ \"1561\", \"Carlos\", \"Buck\", \"89343\", \"Northern Mariana Islands\" ],\n\t[ \"1562\", \"Ivor\", \"Mooney\", \"M9D 2Y3\", \"Korea\" ],\n\t[ \"1563\", \"Armand\", \"Shields\", \"E8O 7X6\", \"Uzbekistan\" ],\n\t[ \"1564\", \"Grace\", \"Weeks\", \"G5B 3W5\", \"Nicaragua\" ],\n\t[ \"1565\", \"Reagan\", \"Mann\", \"J2E 5I1\", \"San Marino\" ],\n\t[ \"1566\", \"Quin\", \"Nolan\", \"Q9E 2Q0\", \"Turkey\" ],\n\t[ \"1567\", \"Kareem\", \"Jefferson\", \"91393\", \"Zambia\" ],\n\t[ \"1568\", \"Erica\", \"Mccoy\", \"C3P 3L0\", \"Viet Nam\" ],\n\t[ \"1569\", \"Sybill\", \"Larsen\", \"J3U 3L9\", \"Sierra Leone\" ],\n\t[ \"1570\", \"Angela\", \"Weber\", \"46559\", \"Croatia\" ],\n\t[ \"1571\", \"Mannix\", \"Noel\", \"94029\", \"Belgium\" ],\n\t[ \"1572\", \"Martina\", \"Travis\", \"20063\", \"Solomon Islands\" ],\n\t[ \"1573\", \"Dominic\", \"Whitehead\", \"83547\", \"Gibraltar\" ],\n\t[ \"1574\", \"Vladimir\", \"Hunter\", \"L3I 4G7\", \"Reunion\" ],\n\t[ \"1575\", \"Farrah\", \"Alexander\", \"18538\", \"Croatia\" ],\n\t[ \"1576\", \"Hop\", \"Burns\", \"X1C 7J6\", \"Saint Lucia\" ],\n\t[ \"1577\", \"Zelda\", \"Trevino\", \"L8P 7E9\", \"Guinea\" ],\n\t[ \"1578\", \"Nehru\", \"Decker\", \"Q1P 4Q9\", \"Western Sahara\" ],\n\t[ \"1579\", \"Shay\", \"Goff\", \"68576\", \"Sweden\" ],\n\t[ \"1580\", \"Dominic\", \"Martin\", \"C1M 9P2\", \"Denmark\" ],\n\t[ \"1581\", \"Heather\", \"Doyle\", \"Y7R 9H1\", \"Iran, Islamic Republic of\" ],\n\t[ \"1582\", \"Honorato\", \"Rojas\", \"29414\", \"India\" ],\n\t[ \"1583\", \"Florence\", \"England\", \"64669\", \"China\" ],\n\t[ \"1584\", \"Zane\", \"Reyes\", \"84771\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"1585\", \"Scarlett\", \"Poole\", \"36928\", \"Algeria\" ],\n\t[ \"1586\", \"Dieter\", \"Brennan\", \"Y8V 5L2\", \"Colombia\" ],\n\t[ \"1587\", \"Jamal\", \"Whitney\", \"33428\", \"Turkey\" ],\n\t[ \"1588\", \"Evan\", \"Guy\", \"72119\", \"Slovakia\" ],\n\t[ \"1589\", \"Candace\", \"Bauer\", \"C8L 1P2\", \"Macedonia\" ],\n\t[ \"1590\", \"Naomi\", \"Pennington\", \"17350\", \"Tonga\" ],\n\t[ \"1591\", \"Celeste\", \"Banks\", \"R8R 4C8\", \"Anguilla\" ],\n\t[ \"1592\", \"Basil\", \"Elliott\", \"80065\", \"Singapore\" ],\n\t[ \"1593\", \"Darryl\", \"Wise\", \"33140\", \"Brunei Darussalam\" ],\n\t[ \"1594\", \"Marny\", \"Walls\", \"S1K 4V1\", \"Western Sahara\" ],\n\t[ \"1595\", \"Anastasia\", \"Meyer\", \"Z1F 8C2\", \"El Salvador\" ],\n\t[ \"1596\", \"Brynne\", \"Rivera\", \"48070\", \"Mexico\" ],\n\t[ \"1597\", \"Macey\", \"Johnston\", \"X9E 9J5\", \"Guadeloupe\" ],\n\t[ \"1598\", \"Bethany\", \"Marks\", \"46648\", \"Bhutan\" ],\n\t[ \"1599\", \"Kiayada\", \"Glass\", \"13661\", \"Christmas Island\" ],\n\t[ \"1600\", \"Veda\", \"Bowers\", \"D7S 1S9\", \"Korea\" ],\n\t[ \"1601\", \"Dante\", \"Kirk\", \"58404\", \"Guinea\" ],\n\t[ \"1602\", \"Judah\", \"Sloan\", \"04528\", \"Andorra\" ],\n\t[ \"1603\", \"Serena\", \"Giles\", \"12139\", \"Papua New Guinea\" ],\n\t[ \"1604\", \"Chase\", \"Hull\", \"27203\", \"Guinea-bissau\" ],\n\t[ \"1605\", \"Wallace\", \"Poole\", \"58919\", \"Christmas Island\" ],\n\t[ \"1606\", \"Deacon\", \"Lynn\", \"Z1H 9G4\", \"Kenya\" ],\n\t[ \"1607\", \"Igor\", \"Duncan\", \"X2V 2X1\", \"Christmas Island\" ],\n\t[ \"1608\", \"Walker\", \"Hopkins\", \"67256\", \"Bosnia and Herzegovina\" ],\n\t[ \"1609\", \"Serena\", \"Burnett\", \"Q4C 7Q0\", \"Canada\" ],\n\t[ \"1610\", \"Hedwig\", \"Burgess\", \"O2J 7A5\", \"Rwanda\" ],\n\t[ \"1611\", \"Amal\", \"Richmond\", \"34506\", \"Australia\" ],\n\t[ \"1612\", \"Rhona\", \"Gomez\", \"W2C 3I7\", \"Oman\" ],\n\t[ \"1613\", \"Kai\", \"Acosta\", \"N2O 7M2\", \"Uganda\" ],\n\t[ \"1614\", \"Henry\", \"Roman\", \"78113\", \"Guadeloupe\" ],\n\t[ \"1615\", \"Chester\", \"Good\", \"88809\", \"Norway\" ],\n\t[ \"1616\", \"Cleo\", \"Tanner\", \"73924\", \"Uganda\" ],\n\t[ \"1617\", \"Emi\", \"Lloyd\", \"59746\", \"South Africa\" ],\n\t[ \"1618\", \"Christopher\", \"Lopez\", \"76264\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1619\", \"Yvonne\", \"Mathews\", \"68655\", \"Saint Lucia\" ],\n\t[ \"1620\", \"Kimberly\", \"Mullen\", \"D6J 9G3\", \"Virgin Islands, British\" ],\n\t[ \"1621\", \"Hanna\", \"Slater\", \"F8F 9K5\", \"Montserrat\" ],\n\t[ \"1622\", \"Laura\", \"Dennis\", \"J6U 2G3\", \"Viet Nam\" ],\n\t[ \"1623\", \"Rogan\", \"Richards\", \"R1D 1B3\", \"Argentina\" ],\n\t[ \"1624\", \"Mira\", \"Rodriquez\", \"C3D 3E5\", \"Guinea\" ],\n\t[ \"1625\", \"Ezra\", \"Myers\", \"Y7Z 7X2\", \"Kuwait\" ],\n\t[ \"1626\", \"Jocelyn\", \"Martin\", \"E2F 3F2\", \"Algeria\" ],\n\t[ \"1627\", \"Denton\", \"Lee\", \"80903\", \"Congo\" ],\n\t[ \"1628\", \"Grace\", \"Leach\", \"86865\", \"Spain\" ],\n\t[ \"1629\", \"Clark\", \"Morrow\", \"12834\", \"Northern Mariana Islands\" ],\n\t[ \"1630\", \"Armando\", \"Calhoun\", \"I3I 1D4\", \"Spain\" ],\n\t[ \"1631\", \"George\", \"Decker\", \"R1B 6Q9\", \"Mali\" ],\n\t[ \"1632\", \"Jerome\", \"Salazar\", \"03831\", \"Faroe Islands\" ],\n\t[ \"1633\", \"Logan\", \"Santiago\", \"46269\", \"Hungary\" ],\n\t[ \"1634\", \"Gavin\", \"Tate\", \"Y3L 6G5\", \"Italy\" ],\n\t[ \"1635\", \"Chloe\", \"Jennings\", \"D9B 2H9\", \"Cambodia\" ],\n\t[ \"1636\", \"Rashad\", \"Knox\", \"T1V 4G5\", \"Germany\" ],\n\t[ \"1637\", \"Jin\", \"Roberts\", \"82928\", \"Azerbaijan\" ],\n\t[ \"1638\", \"Amity\", \"Guerrero\", \"F4G 2L4\", \"Viet Nam\" ],\n\t[ \"1639\", \"Carter\", \"Roberson\", \"53651\", \"Niue\" ],\n\t[ \"1640\", \"Slade\", \"Carson\", \"H9E 1G1\", \"Guyana\" ],\n\t[ \"1641\", \"Buckminster\", \"Christensen\", \"F5J 6T5\", \"Algeria\" ],\n\t[ \"1642\", \"Fallon\", \"Peters\", \"D9Y 5Q4\", \"Ethiopia\" ],\n\t[ \"1643\", \"Amy\", \"Barry\", \"D6F 3R4\", \"New Caledonia\" ],\n\t[ \"1644\", \"Calvin\", \"Buck\", \"18354\", \"Macedonia\" ],\n\t[ \"1645\", \"Kaye\", \"Haynes\", \"D9K 1X8\", \"Italy\" ],\n\t[ \"1646\", \"Shea\", \"Hammond\", \"R7P 3X8\", \"Guam\" ],\n\t[ \"1647\", \"Kiara\", \"Franks\", \"01185\", \"Mozambique\" ],\n\t[ \"1648\", \"Armando\", \"Oneil\", \"88972\", \"Bahrain\" ],\n\t[ \"1649\", \"Lesley\", \"Allen\", \"05171\", \"Belgium\" ],\n\t[ \"1650\", \"Ignatius\", \"Barrett\", \"94084\", \"Georgia\" ],\n\t[ \"1651\", \"Graham\", \"Maldonado\", \"76354\", \"Dominican Republic\" ],\n\t[ \"1652\", \"Briar\", \"Roman\", \"P9M 3A9\", \"Cayman Islands\" ],\n\t[ \"1653\", \"Germane\", \"Colon\", \"U3X 7S9\", \"Brazil\" ],\n\t[ \"1654\", \"Alvin\", \"Mcpherson\", \"58411\", \"Guinea\" ],\n\t[ \"1655\", \"Belle\", \"Sandoval\", \"87172\", \"Cyprus\" ],\n\t[ \"1656\", \"Eric\", \"Caldwell\", \"63246\", \"Guinea\" ],\n\t[ \"1657\", \"Nadine\", \"Dale\", \"T6E 4B0\", \"Denmark\" ],\n\t[ \"1658\", \"Dora\", \"Jimenez\", \"85463\", \"Nauru\" ],\n\t[ \"1659\", \"Mohammad\", \"Strickland\", \"H8B 9G2\", \"Japan\" ],\n\t[ \"1660\", \"Reagan\", \"Preston\", \"G5E 8S5\", \"Honduras\" ],\n\t[ \"1661\", \"Tamekah\", \"Daniel\", \"Z3X 6Q6\", \"Belarus\" ],\n\t[ \"1662\", \"Halee\", \"Mills\", \"23332\", \"Mayotte\" ],\n\t[ \"1663\", \"Courtney\", \"England\", \"09751\", \"Saint Kitts and Nevis\" ],\n\t[ \"1664\", \"Dai\", \"Arnold\", \"A2N 9J4\", \"Argentina\" ],\n\t[ \"1665\", \"Priscilla\", \"Reyes\", \"G2B 5M4\", \"Azerbaijan\" ],\n\t[ \"1666\", \"Brenda\", \"Stanley\", \"I6O 3I1\", \"Hungary\" ],\n\t[ \"1667\", \"Kasper\", \"Washington\", \"H4K 8K7\", \"Serbia and Montenegro\" ],\n\t[ \"1668\", \"Suki\", \"Hendricks\", \"L1K 5O9\", \"Norway\" ],\n\t[ \"1669\", \"Rebekah\", \"Mccormick\", \"89543\", \"Slovenia\" ],\n\t[ \"1670\", \"Oprah\", \"Rodriquez\", \"90034\", \"Costa Rica\" ],\n\t[ \"1671\", \"Ivory\", \"Matthews\", \"T9J 2A7\", \"Panama\" ],\n\t[ \"1672\", \"Ferris\", \"Garner\", \"93583\", \"Niue\" ],\n\t[ \"1673\", \"Melvin\", \"White\", \"X5U 9N8\", \"Nigeria\" ],\n\t[ \"1674\", \"Henry\", \"Swanson\", \"E7V 2C9\", \"Northern Mariana Islands\" ],\n\t[ \"1675\", \"Hadassah\", \"Eaton\", \"52798\", \"Albania\" ],\n\t[ \"1676\", \"Lisandra\", \"Sykes\", \"90838\", \"Namibia\" ],\n\t[ \"1677\", \"Honorato\", \"Bradshaw\", \"W3D 1Z9\", \"United States\" ],\n\t[ \"1678\", \"Aurelia\", \"Paul\", \"Z6E 6W9\", \"Malaysia\" ],\n\t[ \"1679\", \"Arthur\", \"Mann\", \"74673\", \"Bhutan\" ],\n\t[ \"1680\", \"Melissa\", \"Hernandez\", \"11742\", \"Dominican Republic\" ],\n\t[ \"1681\", \"Bert\", \"Mosley\", \"N2K 5U5\", \"Kuwait\" ],\n\t[ \"1682\", \"Sigourney\", \"Sharpe\", \"30204\", \"South Africa\" ],\n\t[ \"1683\", \"Ifeoma\", \"Woods\", \"39850\", \"Haiti\" ],\n\t[ \"1684\", \"Tyler\", \"Medina\", \"K6L 9V8\", \"Indonesia\" ],\n\t[ \"1685\", \"Karleigh\", \"Griffin\", \"G8Z 6W2\", \"Canada\" ],\n\t[ \"1686\", \"Brianna\", \"Collins\", \"11919\", \"New Caledonia\" ],\n\t[ \"1687\", \"Allistair\", \"Hampton\", \"O1X 2N7\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1688\", \"Carla\", \"Manning\", \"76866\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1689\", \"Jakeem\", \"Brewer\", \"Y1T 1D7\", \"Comoros\" ],\n\t[ \"1690\", \"Price\", \"Guerrero\", \"S7Z 8O1\", \"Christmas Island\" ],\n\t[ \"1691\", \"Harlan\", \"Sandoval\", \"58527\", \"Czech Republic\" ],\n\t[ \"1692\", \"Marcia\", \"Robinson\", \"64662\", \"Uganda\" ],\n\t[ \"1693\", \"Sylvester\", \"Hewitt\", \"81468\", \"Honduras\" ],\n\t[ \"1694\", \"Dawn\", \"Wood\", \"77743\", \"Malawi\" ],\n\t[ \"1695\", \"Farrah\", \"Nielsen\", \"E4N 9A9\", \"Christmas Island\" ],\n\t[ \"1696\", \"Tanisha\", \"Benjamin\", \"L2J 3G7\", \"Cape Verde\" ],\n\t[ \"1697\", \"Cherokee\", \"Atkins\", \"L7D 2L5\", \"Moldova\" ],\n\t[ \"1698\", \"Madaline\", \"Elliott\", \"H7K 8R4\", \"Barbados\" ],\n\t[ \"1699\", \"Odysseus\", \"Roy\", \"65008\", \"Slovakia\" ],\n\t[ \"1700\", \"Eaton\", \"Stein\", \"Z2V 7H0\", \"Moldova\" ],\n\t[ \"1701\", \"Rachel\", \"Hurley\", \"L6L 2B2\", \"Antigua and Barbuda\" ],\n\t[ \"1702\", \"Stacey\", \"Hardin\", \"O9U 1B7\", \"Montserrat\" ],\n\t[ \"1703\", \"Grady\", \"Montgomery\", \"75852\", \"Guinea-bissau\" ],\n\t[ \"1704\", \"Serena\", \"Douglas\", \"F5M 8Z6\", \"Mauritius\" ],\n\t[ \"1705\", \"Ralph\", \"Duke\", \"H7X 3M9\", \"Tunisia\" ],\n\t[ \"1706\", \"Charles\", \"Moody\", \"86445\", \"Pitcairn\" ],\n\t[ \"1707\", \"Mariam\", \"Lara\", \"07952\", \"United Kingdom\" ],\n\t[ \"1708\", \"Whitney\", \"Garza\", \"74001\", \"Norfolk Island\" ],\n\t[ \"1709\", \"Beverly\", \"Thornton\", \"69847\", \"Canada\" ],\n\t[ \"1710\", \"Helen\", \"Gentry\", \"Z8S 7U4\", \"Reunion\" ],\n\t[ \"1711\", \"Janna\", \"Gould\", \"W6C 6E1\", \"Burundi\" ],\n\t[ \"1712\", \"Jana\", \"Hooper\", \"A1R 9Y0\", \"Yemen\" ],\n\t[ \"1713\", \"Zachary\", \"Nicholson\", \"49616\", \"Gabon\" ],\n\t[ \"1714\", \"Julian\", \"Davis\", \"37608\", \"Anguilla\" ],\n\t[ \"1715\", \"Gay\", \"Knox\", \"51952\", \"Croatia\" ],\n\t[ \"1716\", \"Iola\", \"Moses\", \"16601\", \"French Polynesia\" ],\n\t[ \"1717\", \"Allegra\", \"Holder\", \"C9R 8J3\", \"Dominican Republic\" ],\n\t[ \"1718\", \"Cecilia\", \"Shannon\", \"62624\", \"Reunion\" ],\n\t[ \"1719\", \"Cora\", \"Peterson\", \"I9V 5P5\", \"Chad\" ],\n\t[ \"1720\", \"Stewart\", \"Mathews\", \"A5H 1E1\", \"Mexico\" ],\n\t[ \"1721\", \"Kathleen\", \"Lynn\", \"82408\", \"Honduras\" ],\n\t[ \"1722\", \"William\", \"Schneider\", \"25823\", \"Tajikistan\" ],\n\t[ \"1723\", \"Alice\", \"Mcconnell\", \"50155\", \"Russian Federation\" ],\n\t[ \"1724\", \"Timon\", \"Dillon\", \"93171\", \"Croatia\" ],\n\t[ \"1725\", \"Tanek\", \"Ellison\", \"Y7Q 5B1\", \"Malawi\" ],\n\t[ \"1726\", \"Tamekah\", \"Cummings\", \"03764\", \"Afghanistan\" ],\n\t[ \"1727\", \"Charlotte\", \"Chaney\", \"U7Y 7B0\", \"Kyrgyzstan\" ],\n\t[ \"1728\", \"Jason\", \"Conway\", \"37713\", \"Martinique\" ],\n\t[ \"1729\", \"Graiden\", \"Combs\", \"40454\", \"Turkmenistan\" ],\n\t[ \"1730\", \"Virginia\", \"Ortiz\", \"K9N 2Q4\", \"Malta\" ],\n\t[ \"1731\", \"Thomas\", \"Cannon\", \"W1H 3T9\", \"Cuba\" ],\n\t[ \"1732\", \"Galena\", \"Dominguez\", \"68072\", \"India\" ],\n\t[ \"1733\", \"Vaughan\", \"Petty\", \"15200\", \"Lesotho\" ],\n\t[ \"1734\", \"Buffy\", \"Saunders\", \"K1W 3B1\", \"Burkina Faso\" ],\n\t[ \"1735\", \"Chava\", \"Hill\", \"93461\", \"Iran, Islamic Republic of\" ],\n\t[ \"1736\", \"Sage\", \"Hampton\", \"R8Y 8J1\", \"Malta\" ],\n\t[ \"1737\", \"Nathaniel\", \"Whitney\", \"89097\", \"Ukraine\" ],\n\t[ \"1738\", \"Hector\", \"Hayden\", \"70774\", \"Netherlands\" ],\n\t[ \"1739\", \"Mercedes\", \"Freeman\", \"80848\", \"Croatia\" ],\n\t[ \"1740\", \"Vance\", \"Spencer\", \"25484\", \"Guyana\" ],\n\t[ \"1741\", \"Josephine\", \"Stevens\", \"E4D 9D1\", \"Netherlands Antilles\" ],\n\t[ \"1742\", \"Barbara\", \"Mcclure\", \"22602\", \"Cambodia\" ],\n\t[ \"1743\", \"Sydney\", \"Holder\", \"X4G 1Z7\", \"British Indian Ocean Territory\" ],\n\t[ \"1744\", \"Velma\", \"Evans\", \"83914\", \"New Zealand\" ],\n\t[ \"1745\", \"Francis\", \"Lane\", \"12545\", \"Serbia and Montenegro\" ],\n\t[ \"1746\", \"Garrison\", \"Brock\", \"19993\", \"Eritrea\" ],\n\t[ \"1747\", \"Quentin\", \"Santiago\", \"07085\", \"Norfolk Island\" ],\n\t[ \"1748\", \"Ivory\", \"Wilkerson\", \"79440\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1749\", \"Karyn\", \"Buckner\", \"D1Y 7D8\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1750\", \"Mari\", \"Bright\", \"24721\", \"Pakistan\" ],\n\t[ \"1751\", \"Dexter\", \"Garrison\", \"X3X 7G3\", \"Western Sahara\" ],\n\t[ \"1752\", \"Venus\", \"Acevedo\", \"V2F 8C0\", \"Poland\" ],\n\t[ \"1753\", \"Nayda\", \"Camacho\", \"F6H 6J5\", \"Northern Mariana Islands\" ],\n\t[ \"1754\", \"Avye\", \"Hartman\", \"G6V 2H0\", \"Hong Kong\" ],\n\t[ \"1755\", \"Kerry\", \"Baird\", \"M3Q 7B7\", \"Russian Federation\" ],\n\t[ \"1756\", \"Uma\", \"Herman\", \"C9A 4P3\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"1757\", \"Amaya\", \"Roman\", \"97179\", \"Iceland\" ],\n\t[ \"1758\", \"Bruce\", \"Joyce\", \"18344\", \"Denmark\" ],\n\t[ \"1759\", \"Jarrod\", \"Alvarez\", \"59269\", \"Liberia\" ],\n\t[ \"1760\", \"Olivia\", \"Reilly\", \"99058\", \"Malaysia\" ],\n\t[ \"1761\", \"Benedict\", \"Hensley\", \"23105\", \"Uganda\" ],\n\t[ \"1762\", \"Lavinia\", \"Hunter\", \"44729\", \"Maldives\" ],\n\t[ \"1763\", \"Bradley\", \"Gomez\", \"65125\", \"Belize\" ],\n\t[ \"1764\", \"Keely\", \"Burris\", \"18390\", \"Brunei Darussalam\" ],\n\t[ \"1765\", \"Autumn\", \"England\", \"E5D 7A5\", \"Kyrgyzstan\" ],\n\t[ \"1766\", \"Jane\", \"Blair\", \"S1W 4O0\", \"Bangladesh\" ],\n\t[ \"1767\", \"Chancellor\", \"Barrett\", \"E9F 1I1\", \"Fiji\" ],\n\t[ \"1768\", \"Whitney\", \"Morin\", \"G5T 4E7\", \"Aruba\" ],\n\t[ \"1769\", \"Madeline\", \"Sparks\", \"W7L 7E0\", \"Belize\" ],\n\t[ \"1770\", \"Dale\", \"Estes\", \"82712\", \"Guam\" ],\n\t[ \"1771\", \"Hakeem\", \"Buck\", \"O6K 1I8\", \"Singapore\" ],\n\t[ \"1772\", \"Alexandra\", \"Burns\", \"12697\", \"Portugal\" ],\n\t[ \"1773\", \"Winifred\", \"Gill\", \"Z8B 8B8\", \"Uruguay\" ],\n\t[ \"1774\", \"Gail\", \"Gomez\", \"S1V 3N8\", \"American Samoa\" ],\n\t[ \"1775\", \"Moana\", \"Brady\", \"18835\", \"Wallis and Futuna\" ],\n\t[ \"1776\", \"Martha\", \"Oliver\", \"81962\", \"Bolivia\" ],\n\t[ \"1777\", \"Nayda\", \"Wooten\", \"00071\", \"Palau\" ],\n\t[ \"1778\", \"Bryar\", \"Collier\", \"50631\", \"Mexico\" ],\n\t[ \"1779\", \"Penelope\", \"Bradshaw\", \"A6A 9M2\", \"Lebanon\" ],\n\t[ \"1780\", \"Wyatt\", \"Lara\", \"75486\", \"Slovenia\" ],\n\t[ \"1781\", \"Wang\", \"Odonnell\", \"N5X 1N5\", \"Bahamas\" ],\n\t[ \"1782\", \"Chiquita\", \"Harrell\", \"21691\", \"Guadeloupe\" ],\n\t[ \"1783\", \"Byron\", \"Blankenship\", \"M8A 3L4\", \"Syrian Arab Republic\" ],\n\t[ \"1784\", \"Holmes\", \"Stokes\", \"81039\", \"Mauritania\" ],\n\t[ \"1785\", \"Naomi\", \"Phillips\", \"56287\", \"Switzerland\" ],\n\t[ \"1786\", \"Quyn\", \"Johnson\", \"D2T 6B7\", \"Czech Republic\" ],\n\t[ \"1787\", \"Gillian\", \"Sanders\", \"50542\", \"Colombia\" ],\n\t[ \"1788\", \"Hope\", \"Benjamin\", \"67423\", \"Bolivia\" ],\n\t[ \"1789\", \"Bryar\", \"Dean\", \"U9V 9E5\", \"Guatemala\" ],\n\t[ \"1790\", \"Karyn\", \"Swanson\", \"S6H 3R8\", \"Israel\" ],\n\t[ \"1791\", \"Amena\", \"David\", \"02286\", \"French Polynesia\" ],\n\t[ \"1792\", \"Ira\", \"Joyner\", \"37335\", \"Cayman Islands\" ],\n\t[ \"1793\", \"Tanek\", \"Oneil\", \"75041\", \"Slovenia\" ],\n\t[ \"1794\", \"Dolan\", \"Miles\", \"K7Q 9U8\", \"Maldives\" ],\n\t[ \"1795\", \"Wang\", \"Keith\", \"88116\", \"Congo\" ],\n\t[ \"1796\", \"Wylie\", \"Bryant\", \"93369\", \"Andorra\" ],\n\t[ \"1797\", \"Heather\", \"Bryant\", \"78015\", \"French Polynesia\" ],\n\t[ \"1798\", \"Regina\", \"Wagner\", \"29087\", \"Virgin Islands, British\" ],\n\t[ \"1799\", \"Nathan\", \"Bush\", \"J5S 9L0\", \"Viet Nam\" ],\n\t[ \"1800\", \"Charity\", \"Dawson\", \"29508\", \"Greece\" ],\n\t[ \"1801\", \"Ulric\", \"Guzman\", \"I6R 6P6\", \"Micronesia\" ],\n\t[ \"1802\", \"Keefe\", \"Scott\", \"J1R 8T6\", \"Uzbekistan\" ],\n\t[ \"1803\", \"Florence\", \"Price\", \"U7P 8F6\", \"Taiwan, Province of China\" ],\n\t[ \"1804\", \"Griffith\", \"England\", \"92557\", \"China\" ],\n\t[ \"1805\", \"Kay\", \"Nielsen\", \"85991\", \"Suriname\" ],\n\t[ \"1806\", \"Tamekah\", \"Blackburn\", \"47324\", \"Panama\" ],\n\t[ \"1807\", \"Indira\", \"Crosby\", \"64463\", \"Trinidad and Tobago\" ],\n\t[ \"1808\", \"Pamela\", \"Vasquez\", \"K2Q 9A1\", \"Ghana\" ],\n\t[ \"1809\", \"Patricia\", \"Haley\", \"51509\", \"Jordan\" ],\n\t[ \"1810\", \"Nevada\", \"Prince\", \"41315\", \"Tokelau\" ],\n\t[ \"1811\", \"Martin\", \"Wilkerson\", \"Y8X 4Y5\", \"Palestinian Territory, Occupied\" ],\n\t[ \"1812\", \"Deirdre\", \"Castaneda\", \"X1S 5E2\", \"Bahrain\" ],\n\t[ \"1813\", \"Cara\", \"Flynn\", \"68372\", \"Azerbaijan\" ],\n\t[ \"1814\", \"Sylvia\", \"Alexander\", \"E5F 9M5\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1815\", \"Macon\", \"Suarez\", \"69866\", \"Tunisia\" ],\n\t[ \"1816\", \"Hammett\", \"Haney\", \"09768\", \"Bangladesh\" ],\n\t[ \"1817\", \"Geoffrey\", \"Simmons\", \"61986\", \"Burundi\" ],\n\t[ \"1818\", \"Danielle\", \"Kelly\", \"71568\", \"Mali\" ],\n\t[ \"1819\", \"Wing\", \"Brown\", \"U4D 6L1\", \"Uzbekistan\" ],\n\t[ \"1820\", \"Len\", \"Barber\", \"40311\", \"Suriname\" ],\n\t[ \"1821\", \"Richard\", \"Wilson\", \"W9E 6D7\", \"Finland\" ],\n\t[ \"1822\", \"Keaton\", \"Hayes\", \"55696\", \"Slovakia\" ],\n\t[ \"1823\", \"Dora\", \"Chaney\", \"57297\", \"United States Minor Outlying Islands\" ],\n\t[ \"1824\", \"Alexandra\", \"Pruitt\", \"17207\", \"Turkmenistan\" ],\n\t[ \"1825\", \"Deanna\", \"Gomez\", \"C9M 9K0\", \"Paraguay\" ],\n\t[ \"1826\", \"Laura\", \"Downs\", \"74422\", \"Antigua and Barbuda\" ],\n\t[ \"1827\", \"Jolene\", \"Lucas\", \"K9E 6U4\", \"Tokelau\" ],\n\t[ \"1828\", \"Lucy\", \"Marquez\", \"L1N 4O4\", \"Argentina\" ],\n\t[ \"1829\", \"Abbot\", \"Bishop\", \"G8W 7I1\", \"Guinea-bissau\" ],\n\t[ \"1830\", \"Aaron\", \"Bowman\", \"K8A 5K7\", \"Greece\" ],\n\t[ \"1831\", \"Candace\", \"Lee\", \"58901\", \"Turks and Caicos Islands\" ],\n\t[ \"1832\", \"Larissa\", \"Allen\", \"O1I 4X0\", \"Belgium\" ],\n\t[ \"1833\", \"Linda\", \"Malone\", \"31211\", \"United Arab Emirates\" ],\n\t[ \"1834\", \"Grace\", \"Daugherty\", \"62610\", \"Cyprus\" ],\n\t[ \"1835\", \"Kyra\", \"Berry\", \"T2F 3E5\", \"Netherlands Antilles\" ],\n\t[ \"1836\", \"Hadassah\", \"Willis\", \"C7H 5V4\", \"El Salvador\" ],\n\t[ \"1837\", \"Kyle\", \"Fitzgerald\", \"X1V 2R9\", \"Croatia\" ],\n\t[ \"1838\", \"Graiden\", \"Atkinson\", \"L9Q 6H8\", \"Thailand\" ],\n\t[ \"1839\", \"Raymond\", \"Fletcher\", \"59574\", \"Argentina\" ],\n\t[ \"1840\", \"Keaton\", \"Barnett\", \"O2G 6B4\", \"Papua New Guinea\" ],\n\t[ \"1841\", \"Farrah\", \"Kramer\", \"21928\", \"Netherlands Antilles\" ],\n\t[ \"1842\", \"Christian\", \"Sellers\", \"55504\", \"Timor-leste\" ],\n\t[ \"1843\", \"Keith\", \"Cohen\", \"D9T 7D0\", \"Italy\" ],\n\t[ \"1844\", \"Karleigh\", \"Bruce\", \"F2A 5H9\", \"Montserrat\" ],\n\t[ \"1845\", \"Julie\", \"Avery\", \"T4T 3Y7\", \"Nepal\" ],\n\t[ \"1846\", \"Hollee\", \"Deleon\", \"47524\", \"Oman\" ],\n\t[ \"1847\", \"Charity\", \"Booker\", \"61071\", \"Cocos (Keeling) Islands\" ],\n\t[ \"1848\", \"Flynn\", \"Bond\", \"E8L 9D2\", \"Afghanistan\" ],\n\t[ \"1849\", \"Sybill\", \"Roth\", \"16453\", \"Saudi Arabia\" ],\n\t[ \"1850\", \"Alyssa\", \"Juarez\", \"04466\", \"Singapore\" ],\n\t[ \"1851\", \"Jennifer\", \"Odonnell\", \"59277\", \"Tuvalu\" ],\n\t[ \"1852\", \"Carissa\", \"Byrd\", \"80861\", \"Palau\" ],\n\t[ \"1853\", \"Coby\", \"Barrett\", \"04665\", \"Congo\" ],\n\t[ \"1854\", \"Bertha\", \"Paul\", \"46442\", \"Andorra\" ],\n\t[ \"1855\", \"Hayden\", \"Dennis\", \"K7E 3O1\", \"France\" ],\n\t[ \"1856\", \"Kadeem\", \"Berry\", \"39544\", \"Vanuatu\" ],\n\t[ \"1857\", \"Clayton\", \"Burns\", \"C2A 6W5\", \"Andorra\" ],\n\t[ \"1858\", \"Breanna\", \"Hardy\", \"12284\", \"Norway\" ],\n\t[ \"1859\", \"Yael\", \"Hester\", \"69399\", \"Hong Kong\" ],\n\t[ \"1860\", \"Hunter\", \"Harding\", \"M4O 6N5\", \"Bosnia and Herzegovina\" ],\n\t[ \"1861\", \"Breanna\", \"Sutton\", \"N2C 6K3\", \"Singapore\" ],\n\t[ \"1862\", \"Bo\", \"Huffman\", \"54558\", \"Taiwan, Province of China\" ],\n\t[ \"1863\", \"Zena\", \"Potts\", \"80326\", \"Czech Republic\" ],\n\t[ \"1864\", \"Lucian\", \"Sykes\", \"D4M 6M5\", \"Trinidad and Tobago\" ],\n\t[ \"1865\", \"Gabriel\", \"Shepherd\", \"77631\", \"Bahrain\" ],\n\t[ \"1866\", \"Vivian\", \"Gould\", \"29510\", \"Norway\" ],\n\t[ \"1867\", \"Ina\", \"Sherman\", \"08122\", \"Portugal\" ],\n\t[ \"1868\", \"Constance\", \"Parsons\", \"D6E 9J8\", \"Armenia\" ],\n\t[ \"1869\", \"Tallulah\", \"Woodard\", \"51380\", \"Bahamas\" ],\n\t[ \"1870\", \"Amos\", \"Morris\", \"37846\", \"Switzerland\" ],\n\t[ \"1871\", \"Charles\", \"Kinney\", \"45961\", \"Marshall Islands\" ],\n\t[ \"1872\", \"Colby\", \"Camacho\", \"02978\", \"Niger\" ],\n\t[ \"1873\", \"Ora\", \"Hays\", \"B6F 9Z9\", \"Martinique\" ],\n\t[ \"1874\", \"Ariel\", \"Cannon\", \"04559\", \"Burundi\" ],\n\t[ \"1875\", \"Beatrice\", \"Hull\", \"66569\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1876\", \"Stacey\", \"Morrow\", \"53760\", \"Zimbabwe\" ],\n\t[ \"1877\", \"Naida\", \"Thomas\", \"43434\", \"Virgin Islands, U.S.\" ],\n\t[ \"1878\", \"Holly\", \"Holcomb\", \"31997\", \"Kazakhstan\" ],\n\t[ \"1879\", \"Lee\", \"Davenport\", \"99355\", \"Central African Republic\" ],\n\t[ \"1880\", \"Gary\", \"Higgins\", \"18703\", \"Norway\" ],\n\t[ \"1881\", \"Kay\", \"Wolf\", \"25509\", \"Switzerland\" ],\n\t[ \"1882\", \"Destiny\", \"Patel\", \"Q3X 2F8\", \"Ghana\" ],\n\t[ \"1883\", \"Clayton\", \"Middleton\", \"Y5C 1I8\", \"Antigua and Barbuda\" ],\n\t[ \"1884\", \"May\", \"Rivers\", \"26782\", \"Uzbekistan\" ],\n\t[ \"1885\", \"Hadassah\", \"Caldwell\", \"64493\", \"Chile\" ],\n\t[ \"1886\", \"Penelope\", \"Gentry\", \"V5N 7A6\", \"Kyrgyzstan\" ],\n\t[ \"1887\", \"James\", \"Boyle\", \"95421\", \"Indonesia\" ],\n\t[ \"1888\", \"Yuli\", \"Cardenas\", \"W4U 5U1\", \"Solomon Islands\" ],\n\t[ \"1889\", \"George\", \"Simpson\", \"30385\", \"Brazil\" ],\n\t[ \"1890\", \"Thaddeus\", \"Ferrell\", \"E6Z 2D4\", \"Norfolk Island\" ],\n\t[ \"1891\", \"Piper\", \"Morrow\", \"S6I 1L8\", \"Estonia\" ],\n\t[ \"1892\", \"Xaviera\", \"Heath\", \"L8I 5G1\", \"Afghanistan\" ],\n\t[ \"1893\", \"Odette\", \"Patton\", \"L2S 4I8\", \"Bosnia and Herzegovina\" ],\n\t[ \"1894\", \"Stewart\", \"Phillips\", \"E8E 5W6\", \"El Salvador\" ],\n\t[ \"1895\", \"Kellie\", \"Cooper\", \"77401\", \"Cape Verde\" ],\n\t[ \"1896\", \"Kathleen\", \"Salinas\", \"F3O 4Z9\", \"Sierra Leone\" ],\n\t[ \"1897\", \"Fallon\", \"Bennett\", \"X3P 7L1\", \"Macedonia\" ],\n\t[ \"1898\", \"Jesse\", \"Guerrero\", \"I2B 1Q0\", \"Finland\" ],\n\t[ \"1899\", \"Zenaida\", \"Mcguire\", \"M5R 1X6\", \"Kenya\" ],\n\t[ \"1900\", \"Carolyn\", \"Richards\", \"03060\", \"Paraguay\" ],\n\t[ \"1901\", \"Ulla\", \"Bruce\", \"20940\", \"Cambodia\" ],\n\t[ \"1902\", \"Adrian\", \"Shaffer\", \"M5O 9Y2\", \"Thailand\" ],\n\t[ \"1903\", \"Callum\", \"Russo\", \"L3U 5S8\", \"Holy See (Vatican City State)\" ],\n\t[ \"1904\", \"Echo\", \"Mathews\", \"49158\", \"Spain\" ],\n\t[ \"1905\", \"Driscoll\", \"Buckner\", \"70115\", \"Solomon Islands\" ],\n\t[ \"1906\", \"Nayda\", \"Phillips\", \"Y7D 4A9\", \"Singapore\" ],\n\t[ \"1907\", \"Piper\", \"Livingston\", \"51701\", \"Anguilla\" ],\n\t[ \"1908\", \"Zoe\", \"Hoover\", \"C8D 8W2\", \"Iraq\" ],\n\t[ \"1909\", \"Veronica\", \"Montoya\", \"G6B 9S4\", \"Egypt\" ],\n\t[ \"1910\", \"Kato\", \"Richmond\", \"41268\", \"Saint Helena\" ],\n\t[ \"1911\", \"Kevyn\", \"Lancaster\", \"71863\", \"Montserrat\" ],\n\t[ \"1912\", \"Rowan\", \"Carr\", \"90825\", \"Ethiopia\" ],\n\t[ \"1913\", \"Alec\", \"Wells\", \"C9P 8I7\", \"Netherlands\" ],\n\t[ \"1914\", \"Graham\", \"Shields\", \"S4B 5O9\", \"Norfolk Island\" ],\n\t[ \"1915\", \"Pearl\", \"Austin\", \"43642\", \"Bermuda\" ],\n\t[ \"1916\", \"Dana\", \"Pugh\", \"H4C 2A9\", \"Tuvalu\" ],\n\t[ \"1917\", \"Lucy\", \"Ellis\", \"31272\", \"Cameroon\" ],\n\t[ \"1918\", \"Logan\", \"Wright\", \"18651\", \"Honduras\" ],\n\t[ \"1919\", \"Chantale\", \"Velasquez\", \"A5D 3X2\", \"Burundi\" ],\n\t[ \"1920\", \"Linda\", \"Ingram\", \"R1P 1G8\", \"Myanmar\" ],\n\t[ \"1921\", \"Ginger\", \"Howell\", \"Q5D 4E6\", \"Pakistan\" ],\n\t[ \"1922\", \"Unity\", \"Lester\", \"P7M 7A4\", \"Gibraltar\" ],\n\t[ \"1923\", \"Brett\", \"Rutledge\", \"Q1E 2B4\", \"Thailand\" ],\n\t[ \"1924\", \"Stewart\", \"Morrow\", \"84299\", \"Mali\" ],\n\t[ \"1925\", \"Declan\", \"Aguilar\", \"35400\", \"Kenya\" ],\n\t[ \"1926\", \"Shad\", \"Simpson\", \"N8E 2U3\", \"Saint Pierre and Miquelon\" ],\n\t[ \"1927\", \"Alma\", \"Benton\", \"Q6C 5D2\", \"Pakistan\" ],\n\t[ \"1928\", \"Herman\", \"Bailey\", \"P5K 2X4\", \"Ireland\" ],\n\t[ \"1929\", \"Keegan\", \"Mendez\", \"19421\", \"Lesotho\" ],\n\t[ \"1930\", \"Erasmus\", \"Foreman\", \"J9T 1A2\", \"Panama\" ],\n\t[ \"1931\", \"Tarik\", \"Meyers\", \"Z8V 5F9\", \"Cape Verde\" ],\n\t[ \"1932\", \"Donovan\", \"Knox\", \"B8N 1G7\", \"Iceland\" ],\n\t[ \"1933\", \"Chloe\", \"Mccray\", \"67537\", \"United Arab Emirates\" ],\n\t[ \"1934\", \"Marvin\", \"Edwards\", \"21809\", \"Ukraine\" ],\n\t[ \"1935\", \"Freya\", \"Watkins\", \"80099\", \"Central African Republic\" ],\n\t[ \"1936\", \"Jerry\", \"Morgan\", \"C7U 7H5\", \"Guinea\" ],\n\t[ \"1937\", \"Yardley\", \"Marsh\", \"23654\", \"India\" ],\n\t[ \"1938\", \"Ava\", \"Mueller\", \"83374\", \"Greece\" ],\n\t[ \"1939\", \"Silas\", \"Joseph\", \"P5M 7F2\", \"Sweden\" ],\n\t[ \"1940\", \"Winifred\", \"Solis\", \"12335\", \"Viet Nam\" ],\n\t[ \"1941\", \"Virginia\", \"Cantu\", \"K4C 3S5\", \"Yemen\" ],\n\t[ \"1942\", \"Sade\", \"Cole\", \"40295\", \"Spain\" ],\n\t[ \"1943\", \"Ethan\", \"Hodges\", \"R7W 8X2\", \"Congo\" ],\n\t[ \"1944\", \"Barbara\", \"Day\", \"K6L 7S6\", \"Nigeria\" ],\n\t[ \"1945\", \"Conan\", \"Simon\", \"22124\", \"Guyana\" ],\n\t[ \"1946\", \"Lars\", \"Puckett\", \"R6Y 4N7\", \"Trinidad and Tobago\" ],\n\t[ \"1947\", \"Quin\", \"Ewing\", \"99053\", \"American Samoa\" ],\n\t[ \"1948\", \"Ali\", \"Haynes\", \"N6Z 7X0\", \"China\" ],\n\t[ \"1949\", \"Sara\", \"Wagner\", \"74544\", \"Chad\" ],\n\t[ \"1950\", \"Griffith\", \"Fuentes\", \"R1W 6Z9\", \"Slovenia\" ],\n\t[ \"1951\", \"Sharon\", \"Crane\", \"I2Z 9D6\", \"Philippines\" ],\n\t[ \"1952\", \"Marsden\", \"Acosta\", \"K6C 8C5\", \"Jordan\" ],\n\t[ \"1953\", \"Whoopi\", \"Villarreal\", \"E2O 1T5\", \"Svalbard and Jan Mayen\" ],\n\t[ \"1954\", \"Bruno\", \"Ball\", \"31931\", \"Barbados\" ],\n\t[ \"1955\", \"Ulric\", \"Young\", \"T4R 3M5\", \"Solomon Islands\" ],\n\t[ \"1956\", \"Noah\", \"Gonzalez\", \"L3O 6V5\", \"Mayotte\" ],\n\t[ \"1957\", \"Cheryl\", \"Gilliam\", \"F4Q 4H9\", \"Albania\" ],\n\t[ \"1958\", \"Bo\", \"Rowe\", \"67020\", \"Jamaica\" ],\n\t[ \"1959\", \"Kelly\", \"Alexander\", \"P8Y 9K5\", \"Somalia\" ],\n\t[ \"1960\", \"Hop\", \"Navarro\", \"O1G 9R6\", \"Cayman Islands\" ],\n\t[ \"1961\", \"Zachery\", \"Howard\", \"67147\", \"Fiji\" ],\n\t[ \"1962\", \"Elvis\", \"Daugherty\", \"X8V 7S7\", \"Jordan\" ],\n\t[ \"1963\", \"Mallory\", \"Hensley\", \"A5S 1U6\", \"Swaziland\" ],\n\t[ \"1964\", \"Fulton\", \"Williams\", \"P4C 4O5\", \"Viet Nam\" ],\n\t[ \"1965\", \"Madison\", \"Pittman\", \"F8G 1P9\", \"Chile\" ],\n\t[ \"1966\", \"Kermit\", \"Bradford\", \"W2T 6I5\", \"Uganda\" ],\n\t[ \"1967\", \"Gabriel\", \"Ballard\", \"N5M 6W0\", \"Andorra\" ],\n\t[ \"1968\", \"Jasmine\", \"Barber\", \"M2Z 7G5\", \"French Guiana\" ],\n\t[ \"1969\", \"Thane\", \"Koch\", \"21097\", \"Armenia\" ],\n\t[ \"1970\", \"Montana\", \"Oneal\", \"L2A 9Q6\", \"South Africa\" ],\n\t[ \"1971\", \"Brett\", \"Coleman\", \"79399\", \"Luxembourg\" ],\n\t[ \"1972\", \"Ivy\", \"Jimenez\", \"28549\", \"Senegal\" ],\n\t[ \"1973\", \"Shad\", \"Melton\", \"Z8N 4Z5\", \"Cook Islands\" ],\n\t[ \"1974\", \"Suki\", \"Vance\", \"H1A 1Z3\", \"Ireland\" ],\n\t[ \"1975\", \"Jin\", \"Hodges\", \"L2I 3T8\", \"France\" ],\n\t[ \"1976\", \"Diana\", \"Booth\", \"M3V 1S8\", \"Iran, Islamic Republic of\" ],\n\t[ \"1977\", \"Martha\", \"Nunez\", \"27837\", \"Northern Mariana Islands\" ],\n\t[ \"1978\", \"Silas\", \"Ayers\", \"17121\", \"United States\" ],\n\t[ \"1979\", \"Ainsley\", \"Whitaker\", \"42695\", \"Dominica\" ],\n\t[ \"1980\", \"Dillon\", \"Tucker\", \"N3R 3P3\", \"Botswana\" ],\n\t[ \"1981\", \"Lillian\", \"West\", \"57665\", \"Palau\" ],\n\t[ \"1982\", \"Talon\", \"Hart\", \"Z6T 4W3\", \"Serbia and Montenegro\" ],\n\t[ \"1983\", \"Desiree\", \"Booth\", \"Q1W 9S1\", \"Gambia\" ],\n\t[ \"1984\", \"Chastity\", \"Merrill\", \"F3B 9W7\", \"Puerto Rico\" ],\n\t[ \"1985\", \"Nichole\", \"Leon\", \"T7V 5D6\", \"Belize\" ],\n\t[ \"1986\", \"Rafael\", \"Washington\", \"87676\", \"Eritrea\" ],\n\t[ \"1987\", \"Samson\", \"Mathews\", \"G7Q 5V6\", \"Burkina Faso\" ],\n\t[ \"1988\", \"Jasper\", \"Campbell\", \"23791\", \"Thailand\" ],\n\t[ \"1989\", \"Mason\", \"Harrington\", \"R9R 5S3\", \"Nigeria\" ],\n\t[ \"1990\", \"Jameson\", \"Frederick\", \"R1N 4S0\", \"Guyana\" ],\n\t[ \"1991\", \"Cadman\", \"Woodard\", \"43080\", \"Gambia\" ],\n\t[ \"1992\", \"Catherine\", \"Gill\", \"W4W 8A4\", \"Philippines\" ],\n\t[ \"1993\", \"Yael\", \"Richards\", \"99504\", \"Kenya\" ],\n\t[ \"1994\", \"Porter\", \"Finley\", \"C8Z 5E0\", \"Brunei Darussalam\" ],\n\t[ \"1995\", \"Alden\", \"Merritt\", \"P4E 9F0\", \"Mali\" ],\n\t[ \"1996\", \"Kaye\", \"Andrews\", \"I5I 3A4\", \"Cayman Islands\" ],\n\t[ \"1997\", \"Luke\", \"Bryant\", \"F3Z 2U1\", \"Kuwait\" ],\n\t[ \"1998\", \"Heather\", \"Blackburn\", \"L1T 6B9\", \"Mongolia\" ],\n\t[ \"1999\", \"Gage\", \"Sykes\", \"L9Q 7E6\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2000\", \"Kaseem\", \"Harris\", \"B9O 1C3\", \"Korea\" ],\n\t[ \"2001\", \"Quail\", \"Leonard\", \"88755\", \"Burkina Faso\" ],\n\t[ \"2002\", \"Dennis\", \"Craft\", \"13309\", \"Namibia\" ],\n\t[ \"2003\", \"Ivor\", \"Forbes\", \"C3P 2E1\", \"Malta\" ],\n\t[ \"2004\", \"Cade\", \"Herman\", \"R1E 5X9\", \"Sri Lanka\" ],\n\t[ \"2005\", \"Larissa\", \"Santiago\", \"57781\", \"Dominica\" ],\n\t[ \"2006\", \"Hyatt\", \"Tillman\", \"45071\", \"Ghana\" ],\n\t[ \"2007\", \"Timothy\", \"Rodgers\", \"F8W 9W0\", \"Andorra\" ],\n\t[ \"2008\", \"Hanae\", \"Powell\", \"F8B 7P7\", \"Luxembourg\" ],\n\t[ \"2009\", \"Ima\", \"Pennington\", \"Z5W 5N5\", \"Latvia\" ],\n\t[ \"2010\", \"Laurel\", \"Bell\", \"16805\", \"Venezuela\" ],\n\t[ \"2011\", \"Avye\", \"Long\", \"04794\", \"Dominica\" ],\n\t[ \"2012\", \"Lysandra\", \"Pierce\", \"H7O 3F4\", \"Zimbabwe\" ],\n\t[ \"2013\", \"Eve\", \"Pollard\", \"L5K 6E2\", \"Algeria\" ],\n\t[ \"2014\", \"Ina\", \"Mcdowell\", \"65712\", \"Saint Lucia\" ],\n\t[ \"2015\", \"Meredith\", \"Serrano\", \"V8M 6K7\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2016\", \"Daphne\", \"Irwin\", \"89933\", \"Mongolia\" ],\n\t[ \"2017\", \"Adam\", \"Henson\", \"F6U 9D5\", \"Chile\" ],\n\t[ \"2018\", \"Amery\", \"Hoover\", \"13408\", \"Mongolia\" ],\n\t[ \"2019\", \"Quamar\", \"Hendricks\", \"20310\", \"Gambia\" ],\n\t[ \"2020\", \"Ori\", \"Wheeler\", \"89005\", \"Nigeria\" ],\n\t[ \"2021\", \"Zena\", \"Douglas\", \"Z1O 6F9\", \"Serbia and Montenegro\" ],\n\t[ \"2022\", \"Buckminster\", \"Huffman\", \"R4V 9L2\", \"Mali\" ],\n\t[ \"2023\", \"Harlan\", \"Gamble\", \"U4I 7M4\", \"Guyana\" ],\n\t[ \"2024\", \"Dalton\", \"Cline\", \"63829\", \"Tonga\" ],\n\t[ \"2025\", \"Martha\", \"Weber\", \"Z9B 4T0\", \"Bangladesh\" ],\n\t[ \"2026\", \"Vernon\", \"Francis\", \"M5A 9X7\", \"Tokelau\" ],\n\t[ \"2027\", \"Janna\", \"Velazquez\", \"67406\", \"Qatar\" ],\n\t[ \"2028\", \"Fuller\", \"Keller\", \"80871\", \"Burkina Faso\" ],\n\t[ \"2029\", \"Jamal\", \"Spears\", \"42197\", \"Norfolk Island\" ],\n\t[ \"2030\", \"Christen\", \"Holcomb\", \"29806\", \"Norway\" ],\n\t[ \"2031\", \"Mary\", \"Carter\", \"C6W 9K9\", \"Belgium\" ],\n\t[ \"2032\", \"Colorado\", \"Austin\", \"62904\", \"Cook Islands\" ],\n\t[ \"2033\", \"Fritz\", \"Hunt\", \"X8G 2V0\", \"Morocco\" ],\n\t[ \"2034\", \"Isabella\", \"Bush\", \"17676\", \"Monaco\" ],\n\t[ \"2035\", \"Adam\", \"Gilliam\", \"H7K 9X3\", \"Indonesia\" ],\n\t[ \"2036\", \"John\", \"Austin\", \"O7X 4Z0\", \"Czech Republic\" ],\n\t[ \"2037\", \"Cassady\", \"Yates\", \"68835\", \"Christmas Island\" ],\n\t[ \"2038\", \"Ori\", \"Cantrell\", \"56920\", \"Guinea\" ],\n\t[ \"2039\", \"May\", \"Horn\", \"47805\", \"Kuwait\" ],\n\t[ \"2040\", \"Skyler\", \"Clarke\", \"64131\", \"Lebanon\" ],\n\t[ \"2041\", \"Levi\", \"Foster\", \"S5Q 4B2\", \"Germany\" ],\n\t[ \"2042\", \"Veda\", \"Wilkinson\", \"L7Z 9M8\", \"Niger\" ],\n\t[ \"2043\", \"Brendan\", \"Levine\", \"L5B 9P4\", \"Nepal\" ],\n\t[ \"2044\", \"Carson\", \"Sullivan\", \"93066\", \"United Arab Emirates\" ],\n\t[ \"2045\", \"Steven\", \"Spencer\", \"F1V 9A7\", \"Pitcairn\" ],\n\t[ \"2046\", \"Halla\", \"Michael\", \"N1U 1E7\", \"Seychelles\" ],\n\t[ \"2047\", \"Jamal\", \"Hobbs\", \"G3D 6J7\", \"New Caledonia\" ],\n\t[ \"2048\", \"Steel\", \"Bush\", \"U8F 6T2\", \"Belize\" ],\n\t[ \"2049\", \"Ahmed\", \"Dennis\", \"M6E 3P3\", \"Afghanistan\" ],\n\t[ \"2050\", \"Aspen\", \"Estes\", \"32157\", \"American Samoa\" ],\n\t[ \"2051\", \"Peter\", \"Kelly\", \"91773\", \"Morocco\" ],\n\t[ \"2052\", \"Xandra\", \"Grimes\", \"66702\", \"Tokelau\" ],\n\t[ \"2053\", \"Michael\", \"Battle\", \"J2J 2N5\", \"Honduras\" ],\n\t[ \"2054\", \"Steel\", \"Wiggins\", \"34625\", \"United States Minor Outlying Islands\" ],\n\t[ \"2055\", \"Holmes\", \"Christian\", \"45402\", \"Liechtenstein\" ],\n\t[ \"2056\", \"Charles\", \"Barrett\", \"O4N 9N8\", \"Lebanon\" ],\n\t[ \"2057\", \"Hermione\", \"Soto\", \"C8E 4H8\", \"Congo\" ],\n\t[ \"2058\", \"Elton\", \"Maxwell\", \"89033\", \"Madagascar\" ],\n\t[ \"2059\", \"Zelda\", \"Burks\", \"B7W 5G7\", \"Sweden\" ],\n\t[ \"2060\", \"Lynn\", \"David\", \"P3D 5K5\", \"Chad\" ],\n\t[ \"2061\", \"Margaret\", \"Neal\", \"47438\", \"Western Sahara\" ],\n\t[ \"2062\", \"David\", \"Vaughan\", \"E3L 8D9\", \"Tokelau\" ],\n\t[ \"2063\", \"Vladimir\", \"Mcfarland\", \"U9V 1B3\", \"Belgium\" ],\n\t[ \"2064\", \"Uriah\", \"Harrington\", \"77051\", \"United Arab Emirates\" ],\n\t[ \"2065\", \"Noel\", \"Merritt\", \"J3G 7S1\", \"Dominican Republic\" ],\n\t[ \"2066\", \"Christine\", \"Key\", \"54543\", \"Niger\" ],\n\t[ \"2067\", \"Illana\", \"Hendricks\", \"07584\", \"Montserrat\" ],\n\t[ \"2068\", \"Pearl\", \"Lewis\", \"U5D 2V3\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2069\", \"Victoria\", \"Bullock\", \"17462\", \"Mauritania\" ],\n\t[ \"2070\", \"Benedict\", \"Marsh\", \"61479\", \"Guyana\" ],\n\t[ \"2071\", \"Quemby\", \"Washington\", \"99774\", \"French Polynesia\" ],\n\t[ \"2072\", \"Shelley\", \"Noble\", \"U8S 5Z4\", \"Philippines\" ],\n\t[ \"2073\", \"Olivia\", \"Britt\", \"72344\", \"Holy See (Vatican City State)\" ],\n\t[ \"2074\", \"Oleg\", \"Hendrix\", \"67567\", \"Cuba\" ],\n\t[ \"2075\", \"Hermione\", \"Gutierrez\", \"J5K 2J1\", \"Mozambique\" ],\n\t[ \"2076\", \"Myra\", \"Dean\", \"03485\", \"Andorra\" ],\n\t[ \"2077\", \"Deacon\", \"Moore\", \"34501\", \"Tunisia\" ],\n\t[ \"2078\", \"Dai\", \"Baird\", \"B2P 4R0\", \"Cambodia\" ],\n\t[ \"2079\", \"Levi\", \"Melton\", \"K7T 4B1\", \"Zimbabwe\" ],\n\t[ \"2080\", \"Ocean\", \"Dalton\", \"66801\", \"Gabon\" ],\n\t[ \"2081\", \"Selma\", \"Harding\", \"D7N 3J9\", \"Kyrgyzstan\" ],\n\t[ \"2082\", \"Maisie\", \"Gill\", \"56324\", \"Morocco\" ],\n\t[ \"2083\", \"Hillary\", \"Horne\", \"Y6O 6G3\", \"Cyprus\" ],\n\t[ \"2084\", \"Joel\", \"Stokes\", \"77952\", \"Burundi\" ],\n\t[ \"2085\", \"Channing\", \"Patterson\", \"G6B 8H4\", \"China\" ],\n\t[ \"2086\", \"Elliott\", \"Cleveland\", \"H3J 9U9\", \"Namibia\" ],\n\t[ \"2087\", \"Petra\", \"Gay\", \"44314\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2088\", \"May\", \"Hatfield\", \"48918\", \"Faroe Islands\" ],\n\t[ \"2089\", \"Jemima\", \"Francis\", \"14347\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2090\", \"Kyla\", \"Hale\", \"46200\", \"Cocos (Keeling) Islands\" ],\n\t[ \"2091\", \"Veda\", \"Bruce\", \"F5W 9A6\", \"Mauritania\" ],\n\t[ \"2092\", \"Sybill\", \"Avila\", \"58663\", \"Angola\" ],\n\t[ \"2093\", \"Charissa\", \"Salazar\", \"35271\", \"Faroe Islands\" ],\n\t[ \"2094\", \"Steven\", \"Allison\", \"E5L 4A3\", \"Wallis and Futuna\" ],\n\t[ \"2095\", \"Kane\", \"Parks\", \"D5C 6K7\", \"Norfolk Island\" ],\n\t[ \"2096\", \"Alika\", \"Bishop\", \"S3P 3O3\", \"China\" ],\n\t[ \"2097\", \"James\", \"Bonner\", \"33277\", \"Canada\" ],\n\t[ \"2098\", \"Yoko\", \"Foster\", \"B5J 6P9\", \"Croatia\" ],\n\t[ \"2099\", \"Ivy\", \"Riggs\", \"94420\", \"Kiribati\" ],\n\t[ \"2100\", \"Urielle\", \"Rosa\", \"V6W 2A0\", \"Falkland Islands (Malvinas)\" ],\n\t[ \"2101\", \"Armando\", \"Shepherd\", \"Y5C 5W6\", \"Panama\" ],\n\t[ \"2102\", \"Haley\", \"Ingram\", \"B4H 5U5\", \"Fiji\" ],\n\t[ \"2103\", \"Brielle\", \"Dyer\", \"P2S 4H7\", \"Malawi\" ],\n\t[ \"2104\", \"Francis\", \"Brady\", \"24239\", \"Uruguay\" ],\n\t[ \"2105\", \"Fiona\", \"Webster\", \"72015\", \"Belize\" ],\n\t[ \"2106\", \"Aiko\", \"Santos\", \"K4H 1N0\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2107\", \"Amir\", \"Rivas\", \"02737\", \"Papua New Guinea\" ],\n\t[ \"2108\", \"Mira\", \"Kerr\", \"W6E 6Y2\", \"Sri Lanka\" ],\n\t[ \"2109\", \"Harrison\", \"Jensen\", \"50193\", \"Heard Island and Mcdonald Islands\" ],\n\t[ \"2110\", \"Merrill\", \"Randall\", \"21534\", \"Colombia\" ],\n\t[ \"2111\", \"Benjamin\", \"Howe\", \"N8M 4N6\", \"Turkmenistan\" ],\n\t[ \"2112\", \"Melyssa\", \"Kidd\", \"97657\", \"Cameroon\" ],\n\t[ \"2113\", \"Henry\", \"Moore\", \"95626\", \"Botswana\" ],\n\t[ \"2114\", \"Nash\", \"Peters\", \"K3V 9F3\", \"Wallis and Futuna\" ],\n\t[ \"2115\", \"Iliana\", \"Holt\", \"E9F 2Q8\", \"Netherlands Antilles\" ],\n\t[ \"2116\", \"Naomi\", \"Hood\", \"P6D 2G3\", \"Anguilla\" ],\n\t[ \"2117\", \"Ainsley\", \"Barron\", \"94273\", \"New Caledonia\" ],\n\t[ \"2118\", \"Daphne\", \"Acevedo\", \"A9I 9E4\", \"Bermuda\" ],\n\t[ \"2119\", \"Kiona\", \"Keith\", \"62523\", \"Saint Lucia\" ],\n\t[ \"2120\", \"Kirsten\", \"Mcgee\", \"97481\", \"Macedonia\" ],\n\t[ \"2121\", \"Emerald\", \"Franklin\", \"Q2I 6D6\", \"Botswana\" ],\n\t[ \"2122\", \"Hall\", \"Schroeder\", \"I2D 9L7\", \"Kenya\" ],\n\t[ \"2123\", \"Amaya\", \"Lynch\", \"50534\", \"Costa Rica\" ],\n\t[ \"2124\", \"Randall\", \"Hanson\", \"B4R 2S3\", \"United Arab Emirates\" ],\n\t[ \"2125\", \"Sasha\", \"Clarke\", \"50972\", \"United States Minor Outlying Islands\" ],\n\t[ \"2126\", \"Susan\", \"Sutton\", \"Z4T 6K3\", \"Solomon Islands\" ],\n\t[ \"2127\", \"Hiram\", \"Torres\", \"C8O 5O7\", \"Botswana\" ],\n\t[ \"2128\", \"Melanie\", \"Calhoun\", \"87097\", \"New Zealand\" ],\n\t[ \"2129\", \"Courtney\", \"Sutton\", \"07944\", \"Spain\" ],\n\t[ \"2130\", \"Reuben\", \"Beard\", \"U6Z 8N5\", \"Faroe Islands\" ],\n\t[ \"2131\", \"Jarrod\", \"Payne\", \"94171\", \"Turkey\" ],\n\t[ \"2132\", \"Vincent\", \"Potts\", \"V5Z 9G9\", \"Madagascar\" ],\n\t[ \"2133\", \"Kaye\", \"Kent\", \"O1B 2Z9\", \"Fiji\" ],\n\t[ \"2134\", \"Carol\", \"Green\", \"78719\", \"Comoros\" ],\n\t[ \"2135\", \"Cairo\", \"Combs\", \"G3C 8F0\", \"Indonesia\" ],\n\t[ \"2136\", \"Ebony\", \"Parker\", \"77377\", \"Portugal\" ],\n\t[ \"2137\", \"Gary\", \"Shaffer\", \"F1B 9W7\", \"French Guiana\" ],\n\t[ \"2138\", \"Gay\", \"Jimenez\", \"05726\", \"Nepal\" ],\n\t[ \"2139\", \"Patience\", \"Bryan\", \"60437\", \"Macao\" ],\n\t[ \"2140\", \"Zenaida\", \"Bowen\", \"V3S 1G7\", \"Mauritania\" ],\n\t[ \"2141\", \"Isaac\", \"Aguirre\", \"X8S 9K4\", \"Bermuda\" ],\n\t[ \"2142\", \"Lacy\", \"Harrell\", \"67362\", \"Bhutan\" ],\n\t[ \"2143\", \"Jael\", \"Grimes\", \"95612\", \"Anguilla\" ],\n\t[ \"2144\", \"Catherine\", \"Galloway\", \"45834\", \"Suriname\" ],\n\t[ \"2145\", \"Donna\", \"Burt\", \"N8C 2M8\", \"Burkina Faso\" ],\n\t[ \"2146\", \"Colleen\", \"Ball\", \"N3E 4U8\", \"Libyan Arab Jamahiriya\" ],\n\t[ \"2147\", \"Lael\", \"Brady\", \"01369\", \"Macedonia\" ],\n\t[ \"2148\", \"Kermit\", \"Logan\", \"Y5P 8Q8\", \"Honduras\" ],\n\t[ \"2149\", \"Katelyn\", \"Orr\", \"R7X 9W3\", \"Switzerland\" ],\n\t[ \"2150\", \"Alisa\", \"Glenn\", \"17831\", \"Timor-leste\" ],\n\t[ \"2151\", \"Lee\", \"Bean\", \"89445\", \"Guam\" ],\n\t[ \"2152\", \"Maryam\", \"Cotton\", \"57924\", \"Gambia\" ],\n\t[ \"2153\", \"Amena\", \"Love\", \"X1Z 6F7\", \"Thailand\" ],\n\t[ \"2154\", \"Tallulah\", \"Case\", \"87477\", \"Ecuador\" ],\n\t[ \"2155\", \"Carlos\", \"Sanford\", \"F6S 8J6\", \"Iraq\" ],\n\t[ \"2156\", \"Quamar\", \"David\", \"D5F 2M8\", \"Gabon\" ],\n\t[ \"2157\", \"Cassady\", \"Mays\", \"12786\", \"Netherlands\" ],\n\t[ \"2158\", \"Jenna\", \"Rowland\", \"88845\", \"China\" ],\n\t[ \"2159\", \"Justin\", \"Tanner\", \"66071\", \"Nepal\" ],\n\t[ \"2160\", \"Riley\", \"Santiago\", \"F8K 2Y6\", \"Gabon\" ],\n\t[ \"2161\", \"Iris\", \"Gallegos\", \"K9C 3T9\", \"Niue\" ],\n\t[ \"2162\", \"Kato\", \"Osborn\", \"N4C 2L8\", \"Puerto Rico\" ],\n\t[ \"2163\", \"Imogene\", \"Schroeder\", \"79710\", \"United States Minor Outlying Islands\" ],\n\t[ \"2164\", \"Olympia\", \"Hebert\", \"D4W 1L0\", \"Saint Lucia\" ],\n\t[ \"2165\", \"Skyler\", \"Burnett\", \"B2R 5H7\", \"Antarctica\" ],\n\t[ \"2166\", \"Faith\", \"Sims\", \"88476\", \"Egypt\" ],\n\t[ \"2167\", \"Emily\", \"Odom\", \"U7O 2P6\", \"Kuwait\" ],\n\t[ \"2168\", \"Carly\", \"Washington\", \"46063\", \"Benin\" ],\n\t[ \"2169\", \"Jolene\", \"Meyer\", \"B2B 9A4\", \"Australia\" ],\n\t[ \"2170\", \"Ayanna\", \"Conrad\", \"84360\", \"Northern Mariana Islands\" ],\n\t[ \"2171\", \"Violet\", \"Blankenship\", \"W2B 3U1\", \"New Caledonia\" ],\n\t[ \"2172\", \"Rhona\", \"Gallegos\", \"10931\", \"Montserrat\" ],\n\t[ \"2173\", \"Alice\", \"Hodges\", \"96181\", \"Burkina Faso\" ],\n\t[ \"2174\", \"Brody\", \"Sandoval\", \"68959\", \"Pitcairn\" ],\n\t[ \"2175\", \"Isabella\", \"Dunlap\", \"U8U 7Y8\", \"Afghanistan\" ],\n\t[ \"2176\", \"Jordan\", \"Golden\", \"55152\", \"Guam\" ],\n\t[ \"2177\", \"Gillian\", \"Thomas\", \"75633\", \"Djibouti\" ],\n\t[ \"2178\", \"Hollee\", \"Clay\", \"79847\", \"Panama\" ],\n\t[ \"2179\", \"Dane\", \"Knapp\", \"89535\", \"Armenia\" ],\n\t[ \"2180\", \"Avram\", \"Martin\", \"T4S 4E2\", \"Madagascar\" ],\n\t[ \"2181\", \"Fuller\", \"Newman\", \"47317\", \"Jamaica\" ],\n\t[ \"2182\", \"Nina\", \"Berry\", \"81360\", \"Mongolia\" ],\n\t[ \"2183\", \"Akeem\", \"Pratt\", \"56230\", \"Colombia\" ],\n\t[ \"2184\", \"Lacy\", \"Hayes\", \"U7T 4F5\", \"Cyprus\" ],\n\t[ \"2185\", \"Alfonso\", \"Mcclure\", \"06797\", \"Swaziland\" ],\n\t[ \"2186\", \"Cedric\", \"Love\", \"64720\", \"Bermuda\" ],\n\t[ \"2187\", \"Astra\", \"Fernandez\", \"H3I 1B0\", \"Mongolia\" ],\n\t[ \"2188\", \"Iliana\", \"Durham\", \"R8C 7M8\", \"Spain\" ],\n\t[ \"2189\", \"Gwendolyn\", \"Livingston\", \"C7X 5L1\", \"Northern Mariana Islands\" ],\n\t[ \"2190\", \"Caldwell\", \"Anderson\", \"69099\", \"Kuwait\" ],\n\t[ \"2191\", \"Risa\", \"Mejia\", \"P7A 4U7\", \"Israel\" ],\n\t[ \"2192\", \"Dora\", \"Navarro\", \"L6G 2O8\", \"Ireland\" ],\n\t[ \"2193\", \"Kirk\", \"Dean\", \"I2T 3E6\", \"Pitcairn\" ],\n\t[ \"2194\", \"Jackson\", \"Harvey\", \"53467\", \"Myanmar\" ],\n\t[ \"2195\", \"Thane\", \"Ballard\", \"87240\", \"Solomon Islands\" ],\n\t[ \"2196\", \"Nadine\", \"Estes\", \"62003\", \"Malta\" ],\n\t[ \"2197\", \"Candace\", \"Nunez\", \"57223\", \"Virgin Islands, British\" ],\n\t[ \"2198\", \"Zelda\", \"Odom\", \"X4V 7F5\", \"Mongolia\" ],\n\t[ \"2199\", \"Wylie\", \"Ayala\", \"S4I 4Q4\", \"Djibouti\" ],\n\t[ \"2200\", \"Azalia\", \"Page\", \"57239\", \"Korea, Republic of\" ],\n\t[ \"2201\", \"Joshua\", \"Burch\", \"R7B 1N7\", \"Samoa\" ],\n\t[ \"2202\", \"Basil\", \"Ramos\", \"71614\", \"Tunisia\" ],\n\t[ \"2203\", \"Jessica\", \"Shields\", \"U2D 4X3\", \"Syrian Arab Republic\" ],\n\t[ \"2204\", \"Clio\", \"Singleton\", \"I1B 1B0\", \"Ghana\" ],\n\t[ \"2205\", \"Astra\", \"Dotson\", \"62378\", \"Turks and Caicos Islands\" ],\n\t[ \"2206\", \"Hamish\", \"Tucker\", \"E4Z 3N3\", \"Anguilla\" ],\n\t[ \"2207\", \"Rachel\", \"Matthews\", \"U4I 8M3\", \"Trinidad and Tobago\" ],\n\t[ \"2208\", \"Clayton\", \"Ball\", \"95319\", \"India\" ],\n\t[ \"2209\", \"Quinn\", \"Wilkinson\", \"Y6M 3Q7\", \"Virgin Islands, U.S.\" ],\n\t[ \"2210\", \"Phelan\", \"Talley\", \"00543\", \"Philippines\" ],\n\t[ \"2211\", \"Carol\", \"Brock\", \"M6X 4E2\", \"Gibraltar\" ],\n\t[ \"2212\", \"Nomlanga\", \"Robles\", \"56511\", \"Viet Nam\" ],\n\t[ \"2213\", \"Adrian\", \"Clay\", \"79479\", \"France\" ],\n\t[ \"2214\", \"Sara\", \"Riley\", \"B9N 5P4\", \"Peru\" ],\n\t[ \"2215\", \"Christine\", \"Sweeney\", \"W1Z 4S4\", \"French Polynesia\" ],\n\t[ \"2216\", \"Leilani\", \"Johnston\", \"W1C 8M8\", \"American Samoa\" ],\n\t[ \"2217\", \"Melyssa\", \"Lambert\", \"V1B 4P6\", \"Iraq\" ],\n\t[ \"2218\", \"Talon\", \"Delacruz\", \"Y3N 9R2\", \"Bulgaria\" ],\n\t[ \"2219\", \"Garth\", \"Jennings\", \"59667\", \"Malta\" ],\n\t[ \"2220\", \"Naida\", \"Coleman\", \"45456\", \"Finland\" ],\n\t[ \"2221\", \"Indigo\", \"Lopez\", \"77160\", \"Pitcairn\" ],\n\t[ \"2222\", \"Asher\", \"French\", \"99064\", \"British Indian Ocean Territory\" ],\n\t[ \"2223\", \"Vivian\", \"Mcgowan\", \"46310\", \"Oman\" ],\n\t[ \"2224\", \"Gwendolyn\", \"Cervantes\", \"48905\", \"Cocos (Keeling) Islands\" ],\n\t[ \"2225\", \"Logan\", \"Reid\", \"87376\", \"Ethiopia\" ],\n\t[ \"2226\", \"Bryar\", \"Wolfe\", \"75860\", \"Comoros\" ],\n\t[ \"2227\", \"Demetrius\", \"Hutchinson\", \"97252\", \"Dominican Republic\" ],\n\t[ \"2228\", \"Freya\", \"Becker\", \"04872\", \"United States\" ],\n\t[ \"2229\", \"Abel\", \"Brooks\", \"I7O 1M1\", \"Comoros\" ],\n\t[ \"2230\", \"Silas\", \"Mcguire\", \"04101\", \"Indonesia\" ],\n\t[ \"2231\", \"Quinn\", \"Fletcher\", \"B6E 2B0\", \"Niger\" ],\n\t[ \"2232\", \"Rooney\", \"Holden\", \"29294\", \"Micronesia\" ],\n\t[ \"2233\", \"Iris\", \"Hale\", \"N7W 6E9\", \"Greenland\" ],\n\t[ \"2234\", \"Candace\", \"Barry\", \"U8I 5A4\", \"Germany\" ],\n\t[ \"2235\", \"Yetta\", \"Ball\", \"62055\", \"Switzerland\" ],\n\t[ \"2236\", \"Dai\", \"Bentley\", \"P2Y 4C5\", \"Dominica\" ],\n\t[ \"2237\", \"Gannon\", \"Dunlap\", \"45728\", \"Fiji\" ],\n\t[ \"2238\", \"Chelsea\", \"Mays\", \"36498\", \"Guinea\" ],\n\t[ \"2239\", \"Ruth\", \"Mcguire\", \"62924\", \"Maldives\" ],\n\t[ \"2240\", \"Melissa\", \"Durham\", \"D6S 1A2\", \"Armenia\" ],\n\t[ \"2241\", \"Eaton\", \"Salinas\", \"53689\", \"Somalia\" ],\n\t[ \"2242\", \"Driscoll\", \"Cunningham\", \"31194\", \"Sweden\" ],\n\t[ \"2243\", \"Bevis\", \"Acosta\", \"V4M 9Z2\", \"Jamaica\" ],\n\t[ \"2244\", \"Anastasia\", \"Mcknight\", \"24878\", \"Sao Tome and Principe\" ],\n\t[ \"2245\", \"Anika\", \"Rowland\", \"45287\", \"Chile\" ],\n\t[ \"2246\", \"Dexter\", \"Rollins\", \"00684\", \"Iran, Islamic Republic of\" ],\n\t[ \"2247\", \"Brielle\", \"Irwin\", \"V4U 7R2\", \"Belgium\" ],\n\t[ \"2248\", \"Ocean\", \"Fields\", \"08544\", \"Croatia\" ],\n\t[ \"2249\", \"Sonia\", \"Solis\", \"C4X 1L5\", \"Niue\" ],\n\t[ \"2250\", \"Joseph\", \"Haney\", \"29567\", \"Argentina\" ],\n\t[ \"2251\", \"Lamar\", \"Heath\", \"81699\", \"Italy\" ],\n\t[ \"2252\", \"Raya\", \"Jordan\", \"R6K 7B3\", \"Spain\" ],\n\t[ \"2253\", \"Brody\", \"Frost\", \"34564\", \"Dominican Republic\" ],\n\t[ \"2254\", \"Ann\", \"Hawkins\", \"S3A 5K7\", \"Yemen\" ],\n\t[ \"2255\", \"Phillip\", \"Lindsay\", \"80544\", \"Sierra Leone\" ],\n\t[ \"2256\", \"Willa\", \"Maynard\", \"A6A 4C5\", \"Mexico\" ],\n\t[ \"2257\", \"Carolyn\", \"Mercer\", \"V8Z 1X5\", \"Zimbabwe\" ],\n\t[ \"2258\", \"Justin\", \"Cole\", \"68764\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2259\", \"Emmanuel\", \"Parks\", \"99769\", \"Latvia\" ],\n\t[ \"2260\", \"Isaiah\", \"Salazar\", \"H1K 1X3\", \"Turks and Caicos Islands\" ],\n\t[ \"2261\", \"Vance\", \"Porter\", \"49607\", \"Costa Rica\" ],\n\t[ \"2262\", \"Igor\", \"Kim\", \"99489\", \"Turkmenistan\" ],\n\t[ \"2263\", \"Emi\", \"Graves\", \"F4M 5L8\", \"El Salvador\" ],\n\t[ \"2264\", \"Griffith\", \"Monroe\", \"11550\", \"Tanzania, United Republic of\" ],\n\t[ \"2265\", \"Iliana\", \"Coffey\", \"30220\", \"Albania\" ],\n\t[ \"2266\", \"Jemima\", \"Guthrie\", \"69283\", \"Saint Pierre and Miquelon\" ],\n\t[ \"2267\", \"Zenia\", \"Farrell\", \"91872\", \"Tanzania, United Republic of\" ],\n\t[ \"2268\", \"Lucas\", \"Chambers\", \"L5Z 1W0\", \"Bouvet Island\" ],\n\t[ \"2269\", \"Zenaida\", \"Valenzuela\", \"31700\", \"Guam\" ],\n\t[ \"2270\", \"Bradley\", \"Wynn\", \"21222\", \"Lithuania\" ],\n\t[ \"2271\", \"Maite\", \"Richard\", \"H4D 7X0\", \"Cameroon\" ],\n\t[ \"2272\", \"Moses\", \"House\", \"Y3Z 3K7\", \"Saint Vincent and The Grenadines\" ],\n\t[ \"2273\", \"Erich\", \"Petersen\", \"U4N 9R7\", \"Rwanda\" ],\n\t[ \"2274\", \"Stephanie\", \"Zimmerman\", \"70097\", \"Malawi\" ],\n\t[ \"2275\", \"Rylee\", \"Schneider\", \"15645\", \"Gibraltar\" ],\n\t[ \"2276\", \"Zia\", \"Craig\", \"H1K 1N9\", \"Norway\" ],\n\t[ \"2277\", \"Fiona\", \"Chaney\", \"Y4U 7K8\", \"San Marino\" ],\n\t[ \"2278\", \"Gil\", \"Sherman\", \"64720\", \"Wallis and Futuna\" ],\n\t[ \"2279\", \"Raja\", \"Sandoval\", \"11225\", \"Lithuania\" ],\n\t[ \"2280\", \"Illana\", \"Wyatt\", \"A2M 9O2\", \"Brazil\" ],\n\t[ \"2281\", \"Declan\", \"Howell\", \"E9V 8J5\", \"San Marino\" ],\n\t[ \"2282\", \"Warren\", \"Cooper\", \"47160\", \"Guyana\" ],\n\t[ \"2283\", \"Alyssa\", \"Juarez\", \"S7G 8F2\", \"Sweden\" ],\n\t[ \"2284\", \"Quynn\", \"Long\", \"P1P 5Y4\", \"Mexico\" ],\n\t[ \"2285\", \"Dalton\", \"Booker\", \"I5T 1R3\", \"Mauritius\" ],\n\t[ \"2286\", \"Lunea\", \"Mclaughlin\", \"I3F 6D4\", \"Togo\" ],\n\t[ \"2287\", \"Irene\", \"Brock\", \"04760\", \"Tajikistan\" ],\n\t[ \"2288\", \"Raven\", \"Floyd\", \"R2N 2Y5\", \"Philippines\" ],\n\t[ \"2289\", \"Nichole\", \"Farmer\", \"81213\", \"Seychelles\" ],\n\t[ \"2290\", \"Sophia\", \"Mcdonald\", \"86291\", \"Chile\" ],\n\t[ \"2291\", \"Nehru\", \"Matthews\", \"60732\", \"Central African Republic\" ],\n\t[ \"2292\", \"Marah\", \"Nelson\", \"44533\", \"Kenya\" ],\n\t[ \"2293\", \"Marvin\", \"Lyons\", \"M7Y 1Q6\", \"Somalia\" ],\n\t[ \"2294\", \"Ian\", \"Fernandez\", \"D9U 8B6\", \"Turkey\" ],\n\t[ \"2295\", \"Gretchen\", \"Dotson\", \"48294\", \"China\" ],\n\t[ \"2296\", \"Brady\", \"Weaver\", \"S4U 4I8\", \"Burundi\" ],\n\t[ \"2297\", \"Ella\", \"Salas\", \"73771\", \"Sao Tome and Principe\" ],\n\t[ \"2298\", \"Martha\", \"Irwin\", \"06554\", \"Timor-leste\" ],\n\t[ \"2299\", \"Penelope\", \"Pratt\", \"S1R 4L4\", \"Gabon\" ],\n\t[ \"2300\", \"Kenyon\", \"Dale\", \"64548\", \"Zimbabwe\" ],\n\t[ \"2301\", \"Henry\", \"Myers\", \"07614\", \"United Arab Emirates\" ],\n\t[ \"2302\", \"Chaney\", \"Dunlap\", \"18388\", \"French Southern Territories\" ],\n\t[ \"2303\", \"Palmer\", \"Le\", \"10807\", \"Colombia\" ],\n\t[ \"2304\", \"Kaseem\", \"Madden\", \"U4E 6L9\", \"Guyana\" ],\n\t[ \"2305\", \"Grant\", \"Anthony\", \"F3K 4D8\", \"Trinidad and Tobago\" ],\n\t[ \"2306\", \"Denton\", \"Moore\", \"I5O 4I5\", \"Belize\" ],\n\t[ \"2307\", \"Regan\", \"Pittman\", \"U8T 9M1\", \"Romania\" ],\n\t[ \"2308\", \"Valentine\", \"Hunt\", \"E9O 6H6\", \"Poland\" ],\n\t[ \"2309\", \"Abraham\", \"Love\", \"X1T 4K0\", \"Philippines\" ],\n\t[ \"2310\", \"Maggie\", \"Gaines\", \"W5Z 6L4\", \"Chad\" ],\n\t[ \"2311\", \"Kylynn\", \"Sears\", \"53419\", \"Ghana\" ],\n\t[ \"2312\", \"Abel\", \"Hudson\", \"O6C 6K5\", \"Malaysia\" ],\n\t[ \"2313\", \"Aladdin\", \"Brady\", \"16465\", \"Antarctica\" ],\n\t[ \"2314\", \"Laurel\", \"Bush\", \"42295\", \"Kyrgyzstan\" ],\n\t[ \"2315\", \"Cameron\", \"Shepherd\", \"Y8R 5L7\", \"Finland\" ],\n\t[ \"2316\", \"Colin\", \"Barker\", \"H8Q 5L0\", \"Aruba\" ],\n\t[ \"2317\", \"Nichole\", \"Stephens\", \"B8P 3D5\", \"Qatar\" ],\n\t[ \"2318\", \"Mary\", \"Dorsey\", \"J7D 1E5\", \"Iceland\" ],\n\t[ \"2319\", \"Yetta\", \"Dillon\", \"I7X 9D3\", \"Hong Kong\" ],\n\t[ \"2320\", \"Hope\", \"May\", \"L5W 1T9\", \"Taiwan, Province of China\" ],\n\t[ \"2321\", \"Daphne\", \"Barr\", \"W2B 9G2\", \"Korea, Republic of\" ],\n\t[ \"2322\", \"Melissa\", \"Hartman\", \"17607\", \"Reunion\" ],\n\t[ \"2323\", \"Acton\", \"Merritt\", \"U7M 3Q5\", \"Cape Verde\" ],\n\t[ \"2324\", \"Alika\", \"Weeks\", \"45475\", \"Singapore\" ],\n\t[ \"2325\", \"Fitzgerald\", \"Rowe\", \"Z3Z 2B6\", \"Israel\" ],\n\t[ \"2326\", \"Frances\", \"Valentine\", \"54329\", \"Kyrgyzstan\" ],\n\t[ \"2327\", \"Hollee\", \"Poole\", \"56101\", \"Saint Kitts and Nevis\" ],\n\t[ \"2328\", \"Melissa\", \"Stafford\", \"R5C 7V0\", \"Philippines\" ],\n\t[ \"2329\", \"Patience\", \"Jones\", \"61516\", \"Mauritius\" ],\n\t[ \"2330\", \"Uta\", \"Sloan\", \"K1B 9R2\", \"Timor-leste\" ],\n\t[ \"2331\", \"Brent\", \"West\", \"69310\", \"Burundi\" ],\n\t[ \"2332\", \"Otto\", \"Olsen\", \"88849\", \"Monaco\" ],\n\t[ \"2333\", \"Blossom\", \"Soto\", \"E2Q 6E6\", \"Ukraine\" ],\n\t[ \"2334\", \"Anastasia\", \"Stanton\", \"S8D 3U5\", \"Mexico\" ],\n\t[ \"2335\", \"Nyssa\", \"Massey\", \"A4G 8G7\", \"Ireland\" ],\n\t[ \"2336\", \"Brian\", \"Moreno\", \"T6O 4D7\", \"Myanmar\" ],\n\t[ \"2337\", \"Fiona\", \"Price\", \"03826\", \"Benin\" ],\n\t[ \"2338\", \"Wyoming\", \"Knowles\", \"I5M 7T3\", \"Chad\" ],\n\t[ \"2339\", \"Iola\", \"Noble\", \"95251\", \"Tunisia\" ],\n\t[ \"2340\", \"Cameran\", \"Montgomery\", \"35748\", \"Korea\" ],\n\t[ \"2341\", \"Wesley\", \"Sims\", \"J6O 7C0\", \"Hungary\" ],\n\t[ \"2342\", \"Mona\", \"Gates\", \"J6Y 3E2\", \"Tokelau\" ],\n\t[ \"2343\", \"Dominique\", \"Sellers\", \"G6U 7I2\", \"Sudan\" ],\n\t[ \"2344\", \"Destiny\", \"Frazier\", \"Y2P 5X6\", \"Madagascar\" ],\n\t[ \"2345\", \"Kelsie\", \"Stokes\", \"78561\", \"Yemen\" ],\n\t[ \"2346\", \"Julie\", \"Jordan\", \"U5H 4H0\", \"Myanmar\" ],\n\t[ \"2347\", \"Xaviera\", \"Hodge\", \"36452\", \"Turkey\" ],\n\t[ \"2348\", \"Cain\", \"Boyd\", \"74543\", \"Lebanon\" ],\n\t[ \"2349\", \"Devin\", \"Burch\", \"94879\", \"Cyprus\" ],\n\t[ \"2350\", \"Michelle\", \"Manning\", \"V7T 4A3\", \"New Zealand\" ],\n\t[ \"2351\", \"Quintessa\", \"Chapman\", \"95379\", \"Faroe Islands\" ],\n\t[ \"2352\", \"Danielle\", \"Wells\", \"27722\", \"Colombia\" ],\n\t[ \"2353\", \"Faith\", \"Decker\", \"04881\", \"Canada\" ],\n\t[ \"2354\", \"Gannon\", \"Chapman\", \"07687\", \"Israel\" ],\n\t[ \"2355\", \"Jayme\", \"Black\", \"A6L 9W1\", \"Jordan\" ],\n\t[ \"2356\", \"Zenia\", \"Cooley\", \"A6X 1B7\", \"Greenland\" ],\n\t[ \"2357\", \"Maris\", \"Burton\", \"J4G 1Y0\", \"Ecuador\" ],\n\t[ \"2358\", \"Rina\", \"Vazquez\", \"G3V 7G6\", \"Russian Federation\" ],\n\t[ \"2359\", \"Nina\", \"Stanton\", \"E7Z 1W0\", \"Dominica\" ],\n\t[ \"2360\", \"Alexandra\", \"Jenkins\", \"C6N 4R4\", \"Morocco\" ],\n\t[ \"2361\", \"Jerome\", \"Chen\", \"68955\", \"Israel\" ],\n\t[ \"2362\", \"Clementine\", \"Robbins\", \"X7I 7T3\", \"Croatia\" ],\n\t[ \"2363\", \"Nigel\", \"Guthrie\", \"A4N 6X8\", \"French Southern Territories\" ],\n\t[ \"2364\", \"Xaviera\", \"Griffith\", \"90489\", \"Cuba\" ],\n\t[ \"2365\", \"Marsden\", \"Best\", \"U4B 5R7\", \"Estonia\" ],\n\t[ \"2366\", \"Ebony\", \"Benson\", \"H7C 7F7\", \"Anguilla\" ],\n\t[ \"2367\", \"Kylie\", \"Hansen\", \"38932\", \"Eritrea\" ],\n\t[ \"2368\", \"Iola\", \"Copeland\", \"P4X 9M4\", \"Rwanda\" ],\n\t[ \"2369\", \"Jorden\", \"Green\", \"48018\", \"Namibia\" ],\n\t[ \"2370\", \"Hamish\", \"Porter\", \"L6F 8L1\", \"Taiwan, Province of China\" ],\n\t[ \"2371\", \"Ezra\", \"Taylor\", \"09148\", \"French Southern Territories\" ],\n\t[ \"2372\", \"Dara\", \"Pratt\", \"00558\", \"Saint Kitts and Nevis\" ],\n\t[ \"2373\", \"Oliver\", \"Holt\", \"C4N 5Z7\", \"Thailand\" ],\n\t[ \"2374\", \"Kato\", \"Mcgee\", \"17017\", \"Micronesia\" ],\n\t[ \"2375\", \"Fuller\", \"Rogers\", \"M8F 6Y7\", \"French Polynesia\" ],\n\t[ \"2376\", \"Carol\", \"Stuart\", \"55980\", \"Sudan\" ],\n\t[ \"2377\", \"Wayne\", \"Nichols\", \"37344\", \"Chile\" ],\n\t[ \"2378\", \"Lars\", \"Gilbert\", \"27076\", \"Micronesia\" ],\n\t[ \"2379\", \"Todd\", \"Rollins\", \"M4I 4X8\", \"Virgin Islands, U.S.\" ],\n\t[ \"2380\", \"Colorado\", \"Justice\", \"68795\", \"Yemen\" ],\n\t[ \"2381\", \"Jordan\", \"Chang\", \"11149\", \"Mayotte\" ],\n\t[ \"2382\", \"Troy\", \"Haynes\", \"N2N 1N8\", \"Reunion\" ],\n\t[ \"2383\", \"Amity\", \"Snyder\", \"17785\", \"Argentina\" ],\n\t[ \"2384\", \"Kennan\", \"Turner\", \"30041\", \"Brazil\" ],\n\t[ \"2385\", \"Dorothy\", \"Gates\", \"B7Z 6V4\", \"Ghana\" ],\n\t[ \"2386\", \"Ariana\", \"Rojas\", \"70797\", \"Eritrea\" ],\n\t[ \"2387\", \"Desirae\", \"Joyner\", \"63493\", \"Maldives\" ],\n\t[ \"2388\", \"Marsden\", \"Barton\", \"36343\", \"Chile\" ],\n\t[ \"2389\", \"Graham\", \"Greer\", \"65152\", \"Cayman Islands\" ],\n\t[ \"2390\", \"Cameron\", \"Edwards\", \"89276\", \"Montserrat\" ],\n\t[ \"2391\", \"Bradley\", \"White\", \"80364\", \"United Kingdom\" ],\n\t[ \"2392\", \"Finn\", \"Cote\", \"G9P 1P0\", \"Ghana\" ],\n\t[ \"2393\", \"Geoffrey\", \"Becker\", \"O5G 4L4\", \"Wallis and Futuna\" ],\n\t[ \"2394\", \"Hayden\", \"Estes\", \"Q8G 7F9\", \"Togo\" ],\n\t[ \"2395\", \"Quinlan\", \"Garrett\", \"R2C 3E7\", \"Uganda\" ],\n\t[ \"2396\", \"Haviva\", \"Harrington\", \"64198\", \"Bahamas\" ],\n\t[ \"2397\", \"Brennan\", \"Hodge\", \"35327\", \"Paraguay\" ],\n\t[ \"2398\", \"Halee\", \"Sykes\", \"S6J 4S4\", \"Costa Rica\" ],\n\t[ \"2399\", \"Mikayla\", \"Ruiz\", \"21686\", \"Malaysia\" ],\n\t[ \"2400\", \"Macy\", \"Stanley\", \"F6D 6C4\", \"Luxembourg\" ],\n\t[ \"2401\", \"Petra\", \"Miles\", \"O7X 2D2\", \"Tokelau\" ],\n\t[ \"2402\", \"Oprah\", \"Mendez\", \"88994\", \"France\" ],\n\t[ \"2403\", \"Upton\", \"Silva\", \"17878\", \"French Southern Territories\" ],\n\t[ \"2404\", \"Wade\", \"Pennington\", \"S8J 3P2\", \"Malaysia\" ],\n\t[ \"2405\", \"Gannon\", \"Riddle\", \"I4A 2H9\", \"Somalia\" ],\n\t[ \"2406\", \"Jana\", \"Myers\", \"04982\", \"Philippines\" ],\n\t[ \"2407\", \"Brooke\", \"Hale\", \"98272\", \"Lithuania\" ],\n\t[ \"2408\", \"Hashim\", \"Mendez\", \"00144\", \"Saint Helena\" ],\n\t[ \"2409\", \"Blythe\", \"Hanson\", \"U5Z 6P4\", \"Saint Helena\" ],\n\t[ \"2410\", \"Michelle\", \"Madden\", \"B4R 1I9\", \"Ireland\" ],\n\t[ \"2411\", \"Deirdre\", \"Patton\", \"B4H 1N7\", \"Georgia\" ],\n\t[ \"2412\", \"Nathaniel\", \"Chandler\", \"W1V 8R4\", \"Sierra Leone\" ],\n\t[ \"2413\", \"Tamekah\", \"Murray\", \"I8M 1W8\", \"Guatemala\" ],\n\t[ \"2414\", \"Naida\", \"Boyle\", \"V4S 2N2\", \"United Arab Emirates\" ],\n\t[ \"2415\", \"Hiroko\", \"Winters\", \"K8G 3R9\", \"Barbados\" ],\n\t[ \"2416\", \"Palmer\", \"Guy\", \"A4H 5L1\", \"Saudi Arabia\" ],\n\t[ \"2417\", \"Hermione\", \"Nicholson\", \"76147\", \"Marshall Islands\" ],\n\t[ \"2418\", \"Russell\", \"Boyd\", \"66149\", \"Switzerland\" ],\n\t[ \"2419\", \"Gretchen\", \"Robles\", \"B9L 1J7\", \"Spain\" ],\n\t[ \"2420\", \"Leah\", \"Gibbs\", \"16682\", \"Vanuatu\" ],\n\t[ \"2421\", \"Amir\", \"Carlson\", \"A5C 6F2\", \"Myanmar\" ],\n\t[ \"2422\", \"Merrill\", \"Ratliff\", \"A6E 9B2\", \"Tonga\" ],\n\t[ \"2423\", \"Wyatt\", \"David\", \"P8G 2M1\", \"Kiribati\" ],\n\t[ \"2424\", \"Violet\", \"Boyle\", \"P5X 7B0\", \"Denmark\" ],\n\t[ \"2425\", \"Jared\", \"Myers\", \"22131\", \"Kyrgyzstan\" ],\n\t[ \"2426\", \"Lavinia\", \"Stephenson\", \"55537\", \"Turks and Caicos Islands\" ],\n\t[ \"2427\", \"Zachary\", \"Tyson\", \"C4O 7V4\", \"Macedonia\" ],\n\t[ \"2428\", \"Emma\", \"Clark\", \"A7Z 2Z1\", \"Guam\" ],\n\t[ \"2429\", \"Aaron\", \"Montoya\", \"Q3U 2X1\", \"Bahrain\" ],\n\t[ \"2430\", \"Dylan\", \"Roach\", \"81238\", \"French Guiana\" ],\n\t[ \"2431\", \"Baxter\", \"Rosario\", \"H7B 1R2\", \"Suriname\" ],\n\t[ \"2432\", \"Shad\", \"Bolton\", \"D1W 5X0\", \"Barbados\" ],\n\t[ \"2433\", \"Hasad\", \"Hines\", \"D9U 3H1\", \"Ukraine\" ],\n\t[ \"2434\", \"Maggy\", \"French\", \"M3E 5H8\", \"Nicaragua\" ],\n\t[ \"2435\", \"Evangeline\", \"Jenkins\", \"57732\", \"Nigeria\" ],\n\t[ \"2436\", \"Eaton\", \"Shannon\", \"56854\", \"Namibia\" ],\n\t[ \"2437\", \"Keaton\", \"Barber\", \"G5V 7T0\", \"Svalbard and Jan Mayen\" ],\n\t[ \"2438\", \"Lester\", \"Love\", \"J5Q 8H3\", \"United Kingdom\" ],\n\t[ \"2439\", \"Olivia\", \"Foley\", \"16284\", \"Mayotte\" ],\n\t[ \"2440\", \"Inez\", \"Craig\", \"98947\", \"Poland\" ],\n\t[ \"2441\", \"Desirae\", \"Jacobson\", \"25950\", \"French Polynesia\" ],\n\t[ \"2442\", \"Amethyst\", \"Robertson\", \"78840\", \"Timor-leste\" ],\n\t[ \"2443\", \"Rahim\", \"Day\", \"61420\", \"Maldives\" ],\n\t[ \"2444\", \"Kevyn\", \"Mccarty\", \"X7T 8Z3\", \"Guam\" ],\n\t[ \"2445\", \"Logan\", \"Malone\", \"B6F 8N0\", \"Madagascar\" ],\n\t[ \"2446\", \"Kathleen\", \"Cote\", \"L4R 6W9\", \"Congo\" ],\n\t[ \"2447\", \"Porter\", \"Mclean\", \"G1Z 1W9\", \"Mauritius\" ],\n\t[ \"2448\", \"Reagan\", \"Chapman\", \"86314\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2449\", \"Veda\", \"Harrington\", \"R7W 1K4\", \"Congo\" ],\n\t[ \"2450\", \"Dominique\", \"Hewitt\", \"P5K 7L4\", \"San Marino\" ],\n\t[ \"2451\", \"Zelda\", \"Orr\", \"Z5B 6V1\", \"Greenland\" ],\n\t[ \"2452\", \"Natalie\", \"Kane\", \"10491\", \"Belgium\" ],\n\t[ \"2453\", \"Elizabeth\", \"Bright\", \"R3V 2R4\", \"Bangladesh\" ],\n\t[ \"2454\", \"Evan\", \"Knapp\", \"W3Z 3I5\", \"Mauritius\" ],\n\t[ \"2455\", \"Unity\", \"Armstrong\", \"82986\", \"Kiribati\" ],\n\t[ \"2456\", \"Arden\", \"Winters\", \"C7D 4M2\", \"Sweden\" ],\n\t[ \"2457\", \"Hayfa\", \"Henderson\", \"B8Z 3V3\", \"Latvia\" ],\n\t[ \"2458\", \"Ocean\", \"Delacruz\", \"Z3Z 2H8\", \"Tonga\" ],\n\t[ \"2459\", \"Carter\", \"Harding\", \"R1Z 8J4\", \"Ireland\" ],\n\t[ \"2460\", \"Harriet\", \"Simmons\", \"54757\", \"Indonesia\" ],\n\t[ \"2461\", \"Sopoline\", \"Hicks\", \"I5A 6O2\", \"Argentina\" ],\n\t[ \"2462\", \"Jenette\", \"Ramos\", \"I4V 3H6\", \"Portugal\" ],\n\t[ \"2463\", \"Abigail\", \"Berg\", \"E6P 6L0\", \"United States\" ],\n\t[ \"2464\", \"Sybill\", \"Fox\", \"02319\", \"Svalbard and Jan Mayen\" ],\n\t[ \"2465\", \"Wyoming\", \"Jarvis\", \"I1R 7V9\", \"Palestinian Territory, Occupied\" ],\n\t[ \"2466\", \"Cynthia\", \"English\", \"17983\", \"Israel\" ],\n\t[ \"2467\", \"Jerry\", \"Little\", \"33846\", \"Mauritius\" ],\n\t[ \"2468\", \"Quintessa\", \"Donaldson\", \"V4N 2K1\", \"China\" ],\n\t[ \"2469\", \"Anne\", \"Potter\", \"78596\", \"United States Minor Outlying Islands\" ],\n\t[ \"2470\", \"Madonna\", \"Hart\", \"A4A 4T8\", \"Bahrain\" ],\n\t[ \"2471\", \"Madeline\", \"Walls\", \"Y3D 4T3\", \"Comoros\" ],\n\t[ \"2472\", \"Fleur\", \"Blevins\", \"D1T 9P6\", \"Guinea-bissau\" ],\n\t[ \"2473\", \"Jaden\", \"Webb\", \"13917\", \"Lesotho\" ],\n\t[ \"2474\", \"Abdul\", \"Fleming\", \"A8A 3Y3\", \"Canada\" ],\n\t[ \"2475\", \"Blaze\", \"Carroll\", \"41059\", \"Marshall Islands\" ],\n\t[ \"2476\", \"David\", \"Hoover\", \"29132\", \"Algeria\" ],\n\t[ \"2477\", \"Renee\", \"Nieves\", \"35843\", \"Egypt\" ],\n\t[ \"2478\", \"Jaime\", \"Mcclure\", \"R5K 6B5\", \"Liechtenstein\" ],\n\t[ \"2479\", \"Deborah\", \"Fletcher\", \"70399\", \"Equatorial Guinea\" ],\n\t[ \"2480\", \"Otto\", \"Lopez\", \"72417\", \"Belarus\" ],\n\t[ \"2481\", \"Bo\", \"Walls\", \"F4M 8X8\", \"Latvia\" ],\n\t[ \"2482\", \"Jamal\", \"Adams\", \"N9X 3A2\", \"Spain\" ],\n\t[ \"2483\", \"Silas\", \"Gardner\", \"25259\", \"French Guiana\" ],\n\t[ \"2484\", \"Aladdin\", \"Morin\", \"45179\", \"Sweden\" ],\n\t[ \"2485\", \"Dawn\", \"Grant\", \"53613\", \"Grenada\" ],\n\t[ \"2486\", \"Forrest\", \"Gay\", \"53606\", \"Cayman Islands\" ],\n\t[ \"2487\", \"Lavinia\", \"Murphy\", \"S5L 6X9\", \"Turkey\" ],\n\t[ \"2488\", \"Sylvia\", \"Wolfe\", \"37280\", \"Indonesia\" ],\n\t[ \"2489\", \"Wynter\", \"Adkins\", \"37391\", \"Russian Federation\" ],\n\t[ \"2490\", \"Iola\", \"Frank\", \"I9H 1K7\", \"Nigeria\" ],\n\t[ \"2491\", \"Emmanuel\", \"Hester\", \"Z6E 3I4\", \"Guinea\" ],\n\t[ \"2492\", \"Karina\", \"Christian\", \"V8M 6F3\", \"Honduras\" ],\n\t[ \"2493\", \"Malcolm\", \"Holden\", \"I7J 6U7\", \"Austria\" ],\n\t[ \"2494\", \"Moana\", \"Holmes\", \"80402\", \"Israel\" ],\n\t[ \"2495\", \"Ramona\", \"Hewitt\", \"U6B 7A6\", \"Guadeloupe\" ],\n\t[ \"2496\", \"Nicholas\", \"Terry\", \"V8J 5D9\", \"Costa Rica\" ],\n\t[ \"2497\", \"Erica\", \"Dunlap\", \"91596\", \"Kazakhstan\" ],\n\t[ \"2498\", \"Logan\", \"Harper\", \"R7V 3T5\", \"Guinea-bissau\" ],\n\t[ \"2499\", \"Bert\", \"Ortega\", \"74557\", \"Paraguay\" ],\n\t[ \"2500\", \"Cameron\", \"Ortiz\", \"P9C 5B6\", \"Eritrea\" ]\n] }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/data/server_processing.php",
    "content": "<?php\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Easy set variables\n\t */\n\t\n\t/* Array of database columns which should be read and sent back to DataTables. Use a space where\n\t * you want to insert a non-database field (for example a counter or static image)\n\t */\n\t$aColumns = array( 'id', 'firstname', 'surname', 'zip', 'country' );\n\t\n\t/* Indexed column (used for fast and accurate table cardinality) */\n\t$sIndexColumn = \"id\";\n\t\n\t/* DB table to use */\n\t$sTable = \"massive\";\n\t\n\t/* Database connection information */\n\t$gaSql['user']       = \"\";\n\t$gaSql['password']   = \"\";\n\t$gaSql['db']         = \"\";\n\t$gaSql['server']     = \"localhost\";\n\t\n\t/* REMOVE THIS LINE (it just includes my SQL connection user/pass) */\n\tinclude( $_SERVER['DOCUMENT_ROOT'].\"/datatables/mysql.php\" );\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * If you just want to use the basic configuration for DataTables with PHP server-side, there is\n\t * no need to edit below this line\n\t */\n\t\n\t/* \n\t * MySQL connection\n\t */\n\t$gaSql['link'] =  mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password']  ) or\n\t\tdie( 'Could not open connection to server' );\n\t\n\tmysql_select_db( $gaSql['db'], $gaSql['link'] ) or \n\t\tdie( 'Could not select database '. $gaSql['db'] );\n\t\n\t\n\t/* \n\t * Paging\n\t */\n\t$sLimit = \"\";\n\tif ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )\n\t{\n\t\t$sLimit = \"LIMIT \".mysql_real_escape_string( $_GET['iDisplayStart'] ).\", \".\n\t\t\tmysql_real_escape_string( $_GET['iDisplayLength'] );\n\t}\n\t\n\t\n\t/*\n\t * Ordering\n\t */\n\t$sOrder = \"\";\n\tif ( isset( $_GET['iSortCol_0'] ) )\n\t{\n\t\t$sOrder = \"ORDER BY  \";\n\t\tfor ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ )\n\t\t{\n\t\t\tif ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == \"true\" )\n\t\t\t{\n\t\t\t\t$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ].\"\n\t\t\t\t \t\".mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .\", \";\n\t\t\t}\n\t\t}\n\t\t\n\t\t$sOrder = substr_replace( $sOrder, \"\", -2 );\n\t\tif ( $sOrder == \"ORDER BY\" )\n\t\t{\n\t\t\t$sOrder = \"\";\n\t\t}\n\t}\n\t\n\t\n\t/* \n\t * Filtering\n\t * NOTE this does not match the built-in DataTables filtering which does it\n\t * word by word on any field. It's possible to do here, but concerned about efficiency\n\t * on very large tables, and MySQL's regex functionality is very limited\n\t */\n\t$sWhere = \"\";\n\tif ( isset($_GET['sSearch']) && $_GET['sSearch'] != \"\" )\n\t{\n\t\t$sWhere = \"WHERE (\";\n\t\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t\t{\n\t\t\t$sWhere .= $aColumns[$i].\" LIKE '%\".mysql_real_escape_string( $_GET['sSearch'] ).\"%' OR \";\n\t\t}\n\t\t$sWhere = substr_replace( $sWhere, \"\", -3 );\n\t\t$sWhere .= ')';\n\t}\n\t\n\t/* Individual column filtering */\n\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t{\n\t\tif ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == \"true\" && $_GET['sSearch_'.$i] != '' )\n\t\t{\n\t\t\tif ( $sWhere == \"\" )\n\t\t\t{\n\t\t\t\t$sWhere = \"WHERE \";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$sWhere .= \" AND \";\n\t\t\t}\n\t\t\t$sWhere .= $aColumns[$i].\" LIKE '%\".mysql_real_escape_string($_GET['sSearch_'.$i]).\"%' \";\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * SQL queries\n\t * Get data to display\n\t */\n\t$sQuery = \"\n\t\tSELECT SQL_CALC_FOUND_ROWS \".str_replace(\" , \", \" \", implode(\", \", $aColumns)).\"\n\t\tFROM   $sTable\n\t\t$sWhere\n\t\t$sOrder\n\t\t$sLimit\n\t\";\n\t$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t\n\t/* Data set length after filtering */\n\t$sQuery = \"\n\t\tSELECT FOUND_ROWS()\n\t\";\n\t$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);\n\t$iFilteredTotal = $aResultFilterTotal[0];\n\t\n\t/* Total data set length */\n\t$sQuery = \"\n\t\tSELECT COUNT(\".$sIndexColumn.\")\n\t\tFROM   $sTable\n\t\";\n\t$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());\n\t$aResultTotal = mysql_fetch_array($rResultTotal);\n\t$iTotal = $aResultTotal[0];\n\t\n\t\n\t/*\n\t * Output\n\t */\n\t$output = array(\n\t\t\"sEcho\" => intval($_GET['sEcho']),\n\t\t\"iTotalRecords\" => $iTotal,\n\t\t\"iTotalDisplayRecords\" => $iFilteredTotal,\n\t\t\"aaData\" => array()\n\t);\n\t\n\twhile ( $aRow = mysql_fetch_array( $rResult ) )\n\t{\n\t\t$row = array();\n\t\tfor ( $i=0 ; $i<count($aColumns) ; $i++ )\n\t\t{\n\t\t\tif ( $aColumns[$i] == \"version\" )\n\t\t\t{\n\t\t\t\t/* Special output formatting for 'version' column */\n\t\t\t\t$row[] = ($aRow[ $aColumns[$i] ]==\"0\") ? '-' : $aRow[ $aColumns[$i] ];\n\t\t\t}\n\t\t\telse if ( $aColumns[$i] != ' ' )\n\t\t\t{\n\t\t\t\t/* General output */\n\t\t\t\t$row[] = $aRow[ $aColumns[$i] ];\n\t\t\t}\n\t\t}\n\t\t$output['aaData'][] = $row;\n\t}\n\t\n\techo json_encode( $output );\n?>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Class: Scroller - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Class: Scroller</h1>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td><a href=\"#summary_namespaces\">Namespaces (3)</a></td></tr><tr><td><a href=\"#summary_properties\">Properties (1)</a></td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (4)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td><a href=\"#summary_properties\">Properties (1)</a></td><td><a href=\"#summary_properties_static\">Static properties (1)</a></td></tr><tr><td><a href=\"#summary_methods\">Methods (4)</a></td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<dl><dt id=\"Scroller\" class=\"  even\"><a name=\"Scroller\"></a><a name=\"Scroller_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>new Scroller</a></span><span class=\"type-sig\"><span class=\"signature\">(oDT, <span class=\"optional\">oOpts</span>)</span><span class=\"type-signature\"></span></span></span></dt><dd class=\"  even\"><p>Scroller is a virtual rendering plug-in for DataTables which allows large\ndatasets to be drawn on screen every quickly. What the virtual rendering means\nis that only the visible portion of the table (and a bit to either side to make\nthe scrolling smooth) is drawn, while the scrolling container gives the \nvisual impression that the whole table is visible. This is done by making use\nof the pagination abilities of DataTables and moving the table around in the\nscrolling container DataTables adds to the page. The scrolling container is\nforced to the height it would be for the full table display using an extra \nelement. </p>\n\n<p>Note that rows in the table MUST all be the same height. Information in a cell\nwhich expands on to multiple lines will cause some odd behaviour in the scrolling.</p>\n\n<p>Scroller is initialised by simply including the letter 'S' in the sDom for the\ntable you want to have this feature enabled on. Note that the 'S' must come\nAFTER the 't' parameter in sDom.</p>\n\n<p>Key features include:\n  <ul class=\"limit_length\">\n    <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n    <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n    <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n    <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n    <li>Easy to use</li>\n  </ul></p><div class=\"collapse_details\"><h3>Constructor</h3><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">oDT</td><td class=\"type type-param\">object</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>DataTables settings object</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">oOpts</td><td class=\"type type-param\">object</td><td class=\"attributes\">Optional</td><td class=\"default\">{}</td><td class=\"description last\"><p>Configuration object for FixedColumns. Options are defined by <a href=\"Scroller.oDefaults.html\">Scroller.oDefaults</a></p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">\t\t$(document).ready(function() {\n\t\t\t$('#example').dataTable( {\n\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\"sAjaxSource\": \"media/dataset/large.txt\",\n\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\"bDeferRender\": true\n\t\t\t} );\n\t\t} );</pre>\n    </div>\n</div>\n</dl><h3 class=\"subsection-title\">Requires</h3>\n<ul>\n\t<li>module:jQuery</li><li>module:DataTables</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_namespaces\"></a><h3 class=\"subsection-title\">Namespaces</h3>\n<dl>\n\t<dt class=\"even\"><span class=\"type-name\"><a href=\"c6053fac6b.html\">dom</a></span></dt><dd class=\"even\"><p>DOM elements used by the class instance</p></dd><dt class=\"odd\"><span class=\"type-name\"><a href=\"Scroller.oDefaults.html\">oDefaults</a></span></dt><dd class=\"odd\"><p>Scroller default settings for initialisation</p></dd><dt class=\"even\"><span class=\"type-name\"><a href=\"baed189d4a.html\">s</a></span></dt><dd class=\"even\"><p>Settings object which contains customisable information for the Scroller instance</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Scroller version</p></dd>\n</dl></div><div class=\"doc_group\"><a name=\"summary_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnMeasure\">fnMeasure</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></dt><dd class=\"  even\"><p>Calculate and store information about how many rows are to be displayed in the scrolling\nviewport, based on current dimensions in the browser's rendering. This can be particularly\nuseful if the table is initially drawn in a hidden element - for example in a tab.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnPixelsToRow\">fnPixelsToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iPixels)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnRowToPixels\">fnRowToPixels</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow)</span><span class=\"type-signature\"> &rarr; {int}</span></span></dt><dd class=\"  even\"><p>Calculate the pixel position from the top of the scrolling container for a given row</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#fnScrollToRow\">fnScrollToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow, <span class=\"optional\">bAnimate</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p></dd>\n</dl>\n</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - instance</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"CLASS\"></a><a name=\"CLASS_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a href=\"#CLASS\">CLASS</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Name of this class</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"VERSION\"></a><a name=\"VERSION_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#VERSION\">VERSION</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :String</span></span></dt><dd class=\"  even\"><p>Scroller version</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div><div class=\"doc_group\"><a name=\"details_methods\"></a><h3 class=\"subsection-title\">Methods - instance</h3>\n<dl>\n    <dt id=\"Scroller#fnMeasure\" class=\"  even\"><a name=\"fnMeasure\"></a><a name=\"fnMeasure_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnMeasure</a></span><span class=\"type-sig\"><span class=\"signature\">(<span class=\"optional\">bRedraw</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></span></dt><dd class=\"  even\"><p>Calculate and store information about how many rows are to be displayed in the scrolling\nviewport, based on current dimensions in the browser's rendering. This can be particularly\nuseful if the table is initially drawn in a hidden element - for example in a tab.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">bRedraw</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Redraw the table automatically after the recalculation, with\n   the new dimentions forming the basis for the draw.</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     // Make the example container hidden to throw off the browser's sizing\n     document.getElementById('container').style.display = \"none\";\n     var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Immediately scroll to row 1000\n         o.oScroller.fnScrollToRow( 1000 );\n       }\n     } );\n     \n     setTimeout( function () {\n       // Make the example container visible and recalculate the scroller sizes\n       document.getElementById('container').style.display = \"block\";\n       oTable.fnSettings().oScroller.fnMeasure();\n     }, 3000 );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnPixelsToRow\" class=\"  odd\"><a name=\"fnPixelsToRow\"></a><a name=\"fnPixelsToRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnPixelsToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iPixels)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iPixels</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Offset from top to caluclate the row number of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Row index</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Find what row number is at 500px\n         alert( o.oScroller.fnPixelsToRow( 500 ) );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnRowToPixels\" class=\"  even\"><a name=\"fnRowToPixels\"></a><a name=\"fnRowToPixels_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnRowToPixels</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow)</span><span class=\"type-signature\"> &rarr; {int}</span></span></span></dt><dd class=\"  even\"><p>Calculate the pixel position from the top of the scrolling container for a given row</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row number to calculate the position of</p></td></tr>\n\t</tbody>\n</table><h5>Returns:</h5><p class=\"returns\"><p>Pixels</p></p><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Find where row 25 is\n         alert( o.oScroller.fnRowToPixels( 25 ) );\n       }\n     } );\n   } );</pre>\n    </div>\n</div>\n<dt id=\"Scroller#fnScrollToRow\" class=\"  odd\"><a name=\"fnScrollToRow\"></a><a name=\"fnScrollToRow_details\"></a><span class=\"type-attr\"><span class=\"type-signature\"></span></span><span class=\"type-name\"><a>fnScrollToRow</a></span><span class=\"type-sig\"><span class=\"signature\">(iRow, <span class=\"optional\">bAnimate</span>)</span><span class=\"type-signature\"> &rarr; {void}</span></span></span></dt><dd class=\"  odd\"><p>Calculate the row number that will be found at the given pixel position (y-scroll)</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Parameters:</h5>\n\n<table class=\"params\">\n    <thead>\n\t<tr>\n        <th width=\"20\"></th>\n        <th width=\"12%\" class=\"bottom_border name\">Name</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Type</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Attributes</th>\n\t\t<th width=\"10%\" class=\"bottom_border\">Default</th>\n\t\t<th class=\"last bottom_border\">Description</th>\n\t</tr>\n\t</thead>\n\t\n\t<tbody>\n\t<tr class=\"even\"><td class=\"number right_border\"><div>1</div></td><td class=\"name\">iRow</td><td class=\"type type-param\">int</td><td class=\"attributes\"></td><td class=\"default\"></td><td class=\"description last\"><p>Row index to scroll to</p></td></tr><tr class=\"odd\"><td class=\"number right_border\"><div>2</div></td><td class=\"name\">bAnimate</td><td class=\"type type-param\">bool</td><td class=\"attributes\">Optional</td><td class=\"default\">true</td><td class=\"description last\"><p>Animate the transision or not</p></td></tr>\n\t</tbody>\n</table><h5>Example:</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   $(document).ready(function() {\n     $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sAjaxSource\": \"media/dataset/large.txt\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"fnInitComplete\": function (o) {\n         // Immediately scroll to row 1000\n         o.oScroller.fnScrollToRow( 1000 );\n       }\n     } );\n     \n     // Sometime later on use the following to scroll to row 500...\n         var oSettings = $('#example').dataTable().fnSettings();\n     oSettings.oScroller.fnScrollToRow( 500 );\n   } );</pre>\n    </div>\n</div>\n\n</dd>\n</div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/Scroller.oDefaults.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: oDefaults - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: oDefaults</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>.</span> » oDefaults</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (6)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (6)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Scroller default settings for initialisation</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#boundaryScale\">boundaryScale</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :float</span></span></dt><dd class=\"  even\"><p>Scroller uses the boundary scaling factor to decide when to redraw the table - which it\ntypically does before you reach the end of the currently loaded data set (in order to\nallow the data to look continuous to a user scrolling through the data). If given as 0\nthen the table will be redrawn whenever the viewport is scrolled, while 1 would not\nredraw the table until the currently loaded data has all been shown. You will want \nsomething in the middle - the default factor of 0.5 is usually suitable.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#displayBuffer\">displayBuffer</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\nfor scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\nrows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\nThe value is based upon the number of rows that can be displayed in the viewport (i.e. \na value of 1), and will apply the display range to records before before and after the\ncurrent viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\nof rows before the current viewport, the current viewport's rows and 1 viewport's worth\nof rows after the current viewport. Adjusting this value can be useful for ensuring \nsmooth scrolling based on your data set.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#loadingIndicator\">loadingIndicator</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Show (or not) the loading element in the background of the table. Note that you should\ninclude the dataTables.scroller.css file for this to be displayed correctly.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|string</span></span></dt><dd class=\"  odd\"><p>Scroller will attempt to automatically calculate the height of rows for it's internal\ncalculations. However the height that is used can be overridden using this parameter.</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#serverWait\">serverWait</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>When using server-side processing, Scroller will wait a small amount of time to allow\nthe scrolling to finish before requesting more data from the server. This prevents\nyou from DoSing your own server! The wait time can be configured by this parameter.</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#trace\">trace</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  odd\"><p>Indicate if Scroller show show trace information on the console or not. This can be \nuseful when debugging Scroller or if just curious as to what it is doing, but should\nbe turned off for production.</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"boundaryScale\"></a><a name=\"boundaryScale_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#boundaryScale\">boundaryScale</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :float</span></span></dt><dd class=\"  even\"><p>Scroller uses the boundary scaling factor to decide when to redraw the table - which it\ntypically does before you reach the end of the currently loaded data set (in order to\nallow the data to look continuous to a user scrolling through the data). If given as 0\nthen the table will be redrawn whenever the viewport is scrolled, while 1 would not\nredraw the table until the currently loaded data has all been shown. You will want \nsomething in the middle - the default factor of 0.5 is usually suitable.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"boundaryScale\": 0.75\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"displayBuffer\"></a><a name=\"displayBuffer_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#displayBuffer\">displayBuffer</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\nfor scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\nrows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\nThe value is based upon the number of rows that can be displayed in the viewport (i.e. \na value of 1), and will apply the display range to records before before and after the\ncurrent viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\nof rows before the current viewport, the current viewport's rows and 1 viewport's worth\nof rows after the current viewport. Adjusting this value can be useful for ensuring \nsmooth scrolling based on your data set.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"displayBuffer\": 10\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"loadingIndicator\"></a><a name=\"loadingIndicator_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#loadingIndicator\">loadingIndicator</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :boolean</span></span></dt><dd class=\"  even\"><p>Show (or not) the loading element in the background of the table. Note that you should\ninclude the dataTables.scroller.css file for this to be displayed correctly.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"loadingIndicator\": true\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"rowHeight\"></a><a name=\"rowHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int|string</span></span></dt><dd class=\"  odd\"><p>Scroller will attempt to automatically calculate the height of rows for it's internal\ncalculations. However the height that is used can be overridden using this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"rowHeight\": 30\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  even\"><a name=\"serverWait\"></a><a name=\"serverWait_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#serverWait\">serverWait</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>When using server-side processing, Scroller will wait a small amount of time to allow\nthe scrolling to finish before requesting more data from the server. This prevents\nyou from DoSing your own server! The wait time can be configured by this parameter.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"serverWait\": 100\n       }\n   } );</pre>\n    </div>\n</div></dd><dt class=\"  odd\"><a name=\"trace\"></a><a name=\"trace_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#trace\">trace</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  odd\"><p>Indicate if Scroller show show trace information on the console or not. This can be \nuseful when debugging Scroller or if just curious as to what it is doing, but should\nbe turned off for production.</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n<h5>Example</h5>\n    <div class=\"example-code\">\n    \t<pre class=\"brush: js\">   var oTable = $('#example').dataTable( {\n       \"sScrollY\": \"200px\",\n       \"sDom\": \"frtiS\",\n       \"bDeferRender\": true,\n       \"oScroller\": {\n         \"trace\": true\n       }\n   } );</pre>\n    </div>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/baed189d4a.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: s - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: s</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>#</span> » s</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (9)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td><a href=\"#summary_properties_static\">Static properties (9)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>Settings object which contains customisable information for the Scroller instance</p><dl class=\"details\">\n\t\n</dl>\n<h3 class=\"subsection-title\">Extends</h3>\n<ul>\n\t<li>Scroller.DEFAULTS</li>\n</ul>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_summary\">\n\t\t\t\t\t\t<a name=\"summary\"></a>\n\t\t\t\t\t\t<h2>Summary</h2>\n\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"summary_properties_static\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n\n<dl>\n    <dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#autoHeight\">autoHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  even\"><p>Auto row height or not indicator</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#drawTO\">drawTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>setTimeout reference for the redraw, used when server-side processing is enabled in the\nDataTables in order to prevent DoSing the server</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#dt\">dt</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>DataTables settings object</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Height of rows in the table</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#stateTO\">stateTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>setTimeout reference for state saving, used when state saving is enabled in the DataTable\nand when the user scrolls the viewport in order to stop the cookie set taking too much\nCPU!</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableBottom\">tableBottom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel location of the bottom of the drawn table in the viewport</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableTop\">tableTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Pixel location of the top of the drawn table in the viewport</p></dd><dt class=\"  odd\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportHeight\">viewportHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel height of the viewport</p></dd><dt class=\"  even\"><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportRows\">viewportRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Number of rows calculated as visible in the visible viewport</p></dd>\n</dl></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"doc_details\">\n\t\t\t\t\t\t<a name=\"details\"></a>\n\t\t\t\t\t\t<h2>Details</h2>\n\t\t\t\t\t\t<div class=\"doc_group\"><a name=\"details_properties\"></a><h3 class=\"subsection-title\">Properties - static</h3>\n<dl>\n    <dt class=\"  even\"><a name=\"autoHeight\"></a><a name=\"autoHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#autoHeight\">autoHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :bool</span></span></dt><dd class=\"  even\"><p>Auto row height or not indicator</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"drawTO\"></a><a name=\"drawTO_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#drawTO\">drawTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>setTimeout reference for the redraw, used when server-side processing is enabled in the\nDataTables in order to prevent DoSing the server</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"dt\"></a><a name=\"dt_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#dt\">dt</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :object</span></span></dt><dd class=\"  even\"><p>DataTables settings object</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"rowHeight\"></a><a name=\"rowHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#rowHeight\">rowHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Height of rows in the table</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"stateTO\"></a><a name=\"stateTO_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#stateTO\">stateTO</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>setTimeout reference for state saving, used when state saving is enabled in the DataTable\nand when the user scrolls the viewport in order to stop the cookie set taking too much\nCPU!</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"tableBottom\"></a><a name=\"tableBottom_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableBottom\">tableBottom</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel location of the bottom of the drawn table in the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"tableTop\"></a><a name=\"tableTop_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#tableTop\">tableTop</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Pixel location of the top of the drawn table in the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  odd\"><a name=\"viewportHeight\"></a><a name=\"viewportHeight_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportHeight\">viewportHeight</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  odd\"><p>Pixel height of the viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd><dt class=\"  even\"><a name=\"viewportRows\"></a><a name=\"viewportRows_details\"></a><span class=\"type-attr\"><span class=\"type-signature\">&lt;static> </span></span><span class=\"type-name\"><a href=\"#viewportRows\">viewportRows</a></span><span class=\"type-sig\"><span class=\"type-signature\"> :int</span></span></dt><dd class=\"  even\"><p>Number of rows calculated as visible in the visible viewport</p><div class=\"collapse_details\"><dl class=\"details\">\n\t\n</dl>\n</div></dd>\n</dl></div>\n   \t\t\t\t\t</div>\n\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/c6053fac6b.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Namespace: dom - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t\n\t\t\t\t<a name=\"top\"></a>\n\t\t\t\t<div class=\"fw_header\">\n\t\t\t\t\t<h1 class=\"page-title\">Namespace: dom</h1>\n\t\t\t\t\t<h2 class=\"ancestors\">Ancestry: <span class=\"ancestors\"><a href=\"Scroller.html\">Scroller</a>#</span> » dom</h2>\n\t\t\t\t\t<div class=\"page-info\">\n\t\t\t\t\t\tScroller v1.1.0 documentation\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\n\n\t\t\t\t<div class=\"fw_nav\">\n\t\t\t\t\t<h2>Navigation</h2>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#top\">Overview</a></li>\n\t\t\t\t\t<li><a href=\"#summary\">Summary</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href=\"#details\">Details</a><div><table cellpadding=\"5\" border=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr><td>Properties (0)</td><td>Static properties (0)</td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>\n\t\t\t\t\t<div style=\"margin-top: 10px;\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_private\" value=\"0\">\n\t\t\t\t\t\t<span id=\"private_label\">Hiding</span> private elements \n\t\t\t\t\t\t\t(<a id=\"private_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"show_extended\" value=\"1\">\n\t\t\t\t\t\t<span id=\"extended_label\">Showing</span> extended elements \n\t\t\t\t\t\t\t(<a id=\"extended_toggle\" href=\"\">toggle</a>)\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"fw_content\">\n\t\t\t\t\t<a name=\"overview\"></a>\n\t\t\t\t\t<div class=\"doc_overview\">\n\t\t\t\t\t\t<div class=\"nav_blocker\"></div>\n\t\t\t\t\t\t<p>DOM elements used by the class instance</p><dl class=\"details\">\n\t\n</dl>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\n\n\n\t\t\t\t\t\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/index.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n\t\t<title>Table of Contents - documentation</title>\n  \n\t\t<style type=\"text/css\" media=\"screen\">\n\t\t\t@import \"media/css/doc.css\";\n\t\t\t@import \"media/css/shCore.css\";\n\t\t\t@import \"media/css/shThemeDataTables.css\";\n\t\t</style>\n\t\n\t\t<script type=\"text/javascript\" src=\"media/js/shCore.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/shBrushJScript.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" src=\"media/js/doc.js\"></script>\n\t</head>\n\t<body>\n\t\t<div class=\"fw_container\">\n\t\t\t<a name=\"top\"></a>\n\t\t\t<div class=\"fw_header\">\n\t\t\t</div>\n\n\t\t\t<div class=\"fw_content\">\n\t\t\t\t<h3 class=\"subsection-title\">Table of Contents</h3>\n\t\t\t\t<dl>\n\t\t\t\t\t<dt><a href=\"Scroller.html\">Scroller</a></dt><dd><p>Scroller is a virtual rendering plug-in for DataTables which allows large\ndatasets to be drawn on screen every quickly. What the virtual rendering means\nis that only the visible portion of the table (and a bit to either side to make\nthe scrolling smooth) is drawn, while the scrolling container gives the \nvisual impression that the whole table is visible. This is done by making use\nof the pagination abilities of DataTables and moving the table around in the\nscrolling container DataTables adds to the page. The scrolling container is\nforced to the height it would be for the full table display using an extra \nelement. </p>\n\n<p>Note that rows in the table MUST all be the same height. Information in a cell\nwhich expands on to multiple lines will cause some odd behaviour in the scrolling.</p>\n\n<p>Scroller is initialised by simply including the letter 'S' in the sDom for the\ntable you want to have this feature enabled on. Note that the 'S' must come\nAFTER the 't' parameter in sDom.</p>\n\n<p>Key features include:\n  <ul class=\"limit_length\">\n    <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n    <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n    <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n    <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n    <li>Easy to use</li>\n  </ul></p></dd>\n\t\t\t\t</dl>\n   \t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"fw_footer\">\n\t\t\tScroller: Copyright 2011-2012 Allan Jardine, all rights reserved<br>\n\n\t\t\tDocumentation generated by <a href=\"https://github.com/micmath/JSDoc\">JSDoc 3</a> on\n\t\t\t23th Sep 2012 - 14:28\n\t\t\twith the <a href=\"http://datatables.net/\">DataTables</a> template.\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/doc.css",
    "content": "/*\nCopyright (c) 2006, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 0.12.0\n*/\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}\ntable{border-collapse:collapse;border-spacing:0;}\nfieldset,img{border:0;}\naddress,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}\nol,ul {list-style:none;}\ncaption,th {text-align:left;}\nh1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}\nq:before,q:after{content:'';}\nabbr,acronym {border:0;}\n\n\nhtml, body {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\tfont: 14px/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tcolor: #111;\n}\n\ndiv.fw_container {\n\twidth: 980px;\n\tpadding-top: 2em;\n\tmargin: 0 auto;\n}\n\ndiv.fw_header {\n\tposition: relative;\n}\n\ndiv.fw_content {\n\tpadding-top: 2em;\n}\n\ndiv.fw_footer {\n\tpadding-top: 4em;\n\tfont-size: 75%;\n\ttext-align: center;\n}\n\n\n\n\n.type-attr .type-signature {\n\tbackground-color: #ccc;\n\tcolor: white;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tpadding: 0 3px;\n\tfont-size: 0.9em;\n}\n\n.type-attr {\n\tfloat: right;\n\tcolor: #999;\n}\n\n.type-name {\n\tfont-weight: bold;\n}\n\n.type-sig {\n\tcolor: #999;\n}\n\n.type-param {\n\tcolor: #D32929;\n}\n\n.type-return {\n\tcolor: #FF8080;\n}\n\n.type-brace {\n\tcolor: #111;\n}\n\n.example-code {\n\tmargin-left: 30px;\n}\n.example-code td.code {\n\tborder-top: 1px solid #4E6CA3 !important;\n}\n\n.type-augmented {\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 0;\n}\n\ndt, dd {\n\tpadding: 0.4em 10px;\n}\n\ndt {\n\tpadding-bottom: 0 !important;\n}\n\ndd {\n\tposition: relative;\n\tpadding-top: 0 !important;\n\tpadding-left: 3em;\n}\n\ndt.even, dd.even {\n\tbackground-color: white;\n}\n\ndt.odd, dd.odd {\n\tbackground-color: #F2F2F2;\n}\n\ndiv.doc_overview dd, div.doc_overview dt {\n\tpadding-left: 0 !important;\n}\n\n\n\n.right_border div {\n\twidth: 20px;\n\tpadding: 2px 0.5em 2px 1em;\n\ttext-align: right;\n}\n.right_border {\n\tborder-right: 3px solid #4E6CA3;\n}\n.bottom_border {\n\tborder-bottom: 1px solid #4E6CA3;\n}\n\n\na {\n\ttext-decoration: none;\n\tcolor: #4E6CA3;\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_content ul {\n\tlist-style-image: url('../images/arrow.png');\n\tpadding: 0 0 0 2em;\n}\n\n/*\nh2 {\n\tfont-size: 1.4em;\n\tmargin-top: 2em;\n\tborder-bottom: 3px solid #829ac6;\n\tpadding-left: 5px;\n}\n\nh3 {\n\tfont-size: 1.2em;\n\tmargin-top: 1em;\n\tborder-bottom: 1px solid #A4B5D5;\n\tpadding-left: 5px;\n}\n*/\n\nh1 {\n\tfont-size: 2em;\n}\n\nh2 {\n\tfont-size: 1.6em;\n\tpadding-top: 5px;\n}\n\nh2.ancestors {\n\tfont-size: 14px;\n\tmargin: 0;\n}\n\nh3 {\n\tfont-size: 1.3em;\n\tpadding-top: 5px;\n\tmargin-bottom: 5px;\n}\n\nh5 {\n\tpadding-top: 6px;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tborder-bottom: 1px solid #cad4e6;\n\tmargin-bottom: 1em;\n}\n\ndiv.doc_summary, div.doc_details {\n\tmargin-top: 2em;\n\tclear: both;\n}\n\ndiv.doc_group {\n\tmargin-top: 1em;\n\tborder-top: 1px solid #A4B5D5;\n\tborder-left: 1px solid #A4B5D5;\n\tpadding-left: 10px;\n}\n\ndiv.extended {\n\tmargin-left: 30px;\n}\n\ntable.params {\n\tmargin-left: 30px;\n\twidth: 97%;\n}\n\ntable.params th,\ntable.params td {\n\tpadding: 3px;\n}\n\ntr.odd {\n\tbackground-color: white;\n}\n\ntr.even {\n\tbackground-color: #F8F8F8;\n}\n\nth.name,\ntd.name {\n\tpadding-left: 13px;\n}\n\ntd.number {\n\tbackground-color: white;\n\tcolor: #5C5C5C;\n}\n\ndd.odd td.number {\n\tbackground-color: #F2F2F2;\n}\n\np {\n\tmargin: 1em 0;\n}\n\np:first-child {\n\tmargin-top: 0;\n}\n\np:last-child {\n\tmargin-bottom: 0;\n}\n\np.returns {\n\tmargin-left: 5%;\n}\n\ndiv.page-info {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n\n.private {\n\tdisplay: none;\n}\n\n\ncode {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: pre;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n\npre {\n\tbackground-color: #f8f8f8;\n\tborder: 1px solid #ccc;\n\tborder-radius: 3px;\n\tpadding: 6px 10px;\n}\n\npre>code {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #111;\n}\n\nstrong {\n\tfont-weight: bold;\n}\n\nem {\n\tfont-style: italic;\n}\n\nol {\n\tlist-style-type: decimal;\n\tlist-style-position: outside;\n\tpadding-left: 30px;\n}\n\n\n\ndiv.fw_nav {\n\tposition: fixed;\n\ttop: 25px;\n\tright: 30px;\n\twidth: 250px;\n\tborder: 1px solid #A4B5D5;\n\tbackground-color: white;\n\tpadding: 10px;\n\tz-index: 1001;\n\tfont-size: 12px;\n\toverflow: hidden;\n}\n\ndiv.fw_nav h2 {\n\tmargin: -10px 0 10px -10px;\n\twidth: 250px;\n\tpadding: 5px 10px;\n\tbackground-color: #A4B5D5;\n\tfont-size: 12px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.fw_nav ul>li>div {\n\tpadding: 0 0 0 1em;\n}\n\ndiv.nav_blocker {\n\tfloat: right;\n}\n\ndiv.fw_nav td {\n\tcolor: #999;\n}\n\ndiv.fw_nav li {\n\tmargin-bottom: 5px;\n}\n\ndiv.fw_nav li>a {\n\tfont-weight: bold;\n}\n\n\n\n\n\n\n\n.css_clear {\n\tclear: both;\n\theight: 0;\n\tline-height: 0;\n\tvisibility: hidden;\n}\n\n.css_right {\n\ttext-align: right;\n}\n\n.css_center {\n\ttext-align: center;\n}\n\n.css_spacing {\n\tmargin-top: 1.5em;\n}\n\n.css_small {\n\tfont-size: 75%;\n\tline-height: 1.45em;\n}\n\n.css_vsmall {\n\tfont-size: 65%;\n\tline-height: 1.45em;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shCore.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter a,\n.syntaxhighlighter div,\n.syntaxhighlighter code,\n.syntaxhighlighter table,\n.syntaxhighlighter table td,\n.syntaxhighlighter table tr,\n.syntaxhighlighter table tbody,\n.syntaxhighlighter table thead,\n.syntaxhighlighter table caption,\n.syntaxhighlighter textarea {\n  -moz-border-radius: 0 0 0 0 !important;\n  -webkit-border-radius: 0 0 0 0 !important;\n  background: none !important;\n  border: 0 !important;\n  bottom: auto !important;\n  float: none !important;\n  height: auto !important;\n  left: auto !important;\n  line-height: 1.1em !important;\n  margin: 0 !important;\n  outline: 0 !important;\n  overflow: visible !important;\n  padding: 0 !important;\n  position: static !important;\n  right: auto !important;\n  text-align: left !important;\n  top: auto !important;\n  vertical-align: baseline !important;\n  width: auto !important;\n  box-sizing: content-box !important;\n  font-family: \"Consolas\",\"Monaco\",\"Bitstream Vera Sans Mono\",\"Courier New\",Courier,monospace !important;\n  font-weight: normal !important;\n  font-style: normal !important;\n  font-size: 1em !important;\n  min-height: inherit !important;\n  min-height: auto !important;\n}\n\n.syntaxhighlighter {\n  width: 100% !important;\n  margin: 1em 0 1em 0 !important;\n  position: relative !important;\n  overflow: auto !important;\n  font-size: 1em !important;\n}\n.syntaxhighlighter.source {\n  overflow: hidden !important;\n}\n.syntaxhighlighter .bold {\n  font-weight: bold !important;\n}\n.syntaxhighlighter .italic {\n  font-style: italic !important;\n}\n.syntaxhighlighter .line {\n  white-space: pre !important;\n}\n.syntaxhighlighter table {\n  width: 100% !important;\n}\n.syntaxhighlighter table caption {\n  text-align: left !important;\n  padding: .5em 0 0.5em 1em !important;\n}\n.syntaxhighlighter table td.code {\n  width: 100% !important;\n}\n.syntaxhighlighter table td.code .container {\n  position: relative !important;\n}\n.syntaxhighlighter table td.code .container textarea {\n  box-sizing: border-box !important;\n  position: absolute !important;\n  left: 0 !important;\n  top: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border: none !important;\n  background: white !important;\n  padding-left: 1em !important;\n  overflow: hidden !important;\n  white-space: pre !important;\n}\n.syntaxhighlighter table td.gutter .line {\n  text-align: right !important;\n  padding: 2px 0.5em 2px 1em !important;\n}\n.syntaxhighlighter table td.code .line {\n  padding: 2px 1em !important;\n}\n.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {\n  padding-left: 0em !important;\n}\n.syntaxhighlighter.show {\n  display: block !important;\n}\n.syntaxhighlighter.collapsed table {\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  padding: 0.1em 0.8em 0em 0.8em !important;\n  font-size: 1em !important;\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n}\n.syntaxhighlighter.collapsed .toolbar span {\n  display: inline !important;\n  margin-right: 1em !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a {\n  padding: 0 !important;\n  display: none !important;\n}\n.syntaxhighlighter.collapsed .toolbar span a.expandSource {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar {\n  position: absolute !important;\n  right: 1px !important;\n  top: 1px !important;\n  width: 11px !important;\n  height: 11px !important;\n  font-size: 10px !important;\n  z-index: 10 !important;\n}\n.syntaxhighlighter .toolbar span.title {\n  display: inline !important;\n}\n.syntaxhighlighter .toolbar a {\n  display: block !important;\n  text-align: center !important;\n  text-decoration: none !important;\n  padding-top: 1px !important;\n}\n.syntaxhighlighter .toolbar a.expandSource {\n  display: none !important;\n}\n.syntaxhighlighter.ie {\n  font-size: .9em !important;\n  padding: 1px 0 1px 0 !important;\n}\n.syntaxhighlighter.ie .toolbar {\n  line-height: 8px !important;\n}\n.syntaxhighlighter.ie .toolbar a {\n  padding-top: 0px !important;\n}\n.syntaxhighlighter.printing .line.alt1 .content,\n.syntaxhighlighter.printing .line.alt2 .content,\n.syntaxhighlighter.printing .line.highlighted .number,\n.syntaxhighlighter.printing .line.highlighted.alt1 .content,\n.syntaxhighlighter.printing .line.highlighted.alt2 .content {\n  background: none !important;\n}\n.syntaxhighlighter.printing .line .number {\n  color: #bbbbbb !important;\n}\n.syntaxhighlighter.printing .line .content {\n  color: black !important;\n}\n.syntaxhighlighter.printing .toolbar {\n  display: none !important;\n}\n.syntaxhighlighter.printing a {\n  text-decoration: none !important;\n}\n.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {\n  color: black !important;\n}\n.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {\n  color: blue !important;\n}\n.syntaxhighlighter.printing .keyword {\n  color: #006699 !important;\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter.printing .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter.printing .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter.printing .script {\n  font-weight: bold !important;\n}\n.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {\n  color: red !important;\n}\n.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {\n  color: black !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/css/shThemeDataTables.css",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n.syntaxhighlighter {\n  background-color: white !important;\n  font-size: 14px !important;\n  overflow: visible !important;\n}\n.syntaxhighlighter .line.alt1 {\n  background-color: white !important;\n}\n.syntaxhighlighter .line.alt2 {\n  background-color: #F8F8F8 !important;\n}\n.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {\n  background-color: #e0e0e0 !important;\n}\n.syntaxhighlighter .line.highlighted.number {\n  color: black !important;\n}\n.syntaxhighlighter table caption {\n  color: black !important;\n}\n.syntaxhighlighter .gutter {\n}\n.syntaxhighlighter .gutter div {\n  color: #5C5C5C !important;\n  width: 20px !important;\n}\n.syntaxhighlighter .gutter .line.alt1, .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: white !important;\n}\n.odd .syntaxhighlighter .gutter .line.alt1, .odd .syntaxhighlighter  .gutter .line.alt2 {\n  background-color: #F2F2F2 !important;\n}\n.syntaxhighlighter .gutter .line {\n  border-right: 3px solid #4E6CA3 !important;\n}\n.syntaxhighlighter .gutter .line.highlighted {\n  background-color: #4E6CA3 !important;\n  color: white !important;\n}\n.syntaxhighlighter.printing .line .content {\n  border: none !important;\n}\n.syntaxhighlighter.collapsed {\n  overflow: visible !important;\n}\n.syntaxhighlighter.collapsed .toolbar {\n  color: blue !important;\n  background: white !important;\n  border: 1px solid #4E6CA3 !important;\n}\n.syntaxhighlighter.collapsed .toolbar a {\n  color: blue !important;\n}\n.syntaxhighlighter.collapsed .toolbar a:hover {\n  color: red !important;\n}\n.syntaxhighlighter .toolbar {\n  color: white !important;\n  background: #4E6CA3 !important;\n  border: none !important;\n}\n.syntaxhighlighter .toolbar a {\n  color: white !important;\n}\n.syntaxhighlighter .toolbar a:hover {\n  color: black !important;\n}\n.syntaxhighlighter .plain, .syntaxhighlighter .plain a {\n  color: black !important;\n}\n.syntaxhighlighter .comments, .syntaxhighlighter .comments a {\n  color: #008200 !important;\n}\n.syntaxhighlighter .string, .syntaxhighlighter .string a {\n  color: blue !important;\n}\n.syntaxhighlighter .keyword {\n  color: #006699 !important;\n}\n.syntaxhighlighter .preprocessor {\n  color: gray !important;\n}\n.syntaxhighlighter .variable {\n  color: #aa7700 !important;\n}\n.syntaxhighlighter .value {\n  color: #009900 !important;\n}\n.syntaxhighlighter .functions {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .constants {\n  color: #0066cc !important;\n}\n.syntaxhighlighter .script {\n  font-weight: bold !important;\n  color: #006699 !important;\n  background-color: none !important;\n}\n.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {\n  color: gray !important;\n}\n.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {\n  color: #ff1493 !important;\n}\n.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {\n  color: red !important;\n}\n\n.syntaxhighlighter .keyword {\n  font-weight: bold !important;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/doc.js",
    "content": "\n(function() {\n\nvar showingNav = true;\n\n$(document).ready( function () {\n\tvar jqNav = $('div.fw_nav');\n\tjqNav.css('right', ($(window).width() - $('div.fw_container').width()) /2);\n\n\tvar n = $('div.nav_blocker')[0];\n\tn.style.height = $(jqNav).outerHeight()+\"px\";\n\tn.style.width = ($(jqNav).outerWidth()+20)+\"px\";\n\n\tSyntaxHighlighter.highlight();\n\n\t$('#private_toggle').click( function () {\n\t\tif ( $('input[name=show_private]').val() == 0 ) {\n\t\t\t$('input[name=show_private]').val( 1 );\n\t\t\t$('#private_label').html('Showing');\n\t\t\t$('.private').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_private]').val( 0 );\n\t\t\t$('#private_label').html('Hiding');\n\t\t\t$('.private').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\t$('#extended_toggle').click( function () {\n\t\tif ( $('input[name=show_extended]').val() == 0 ) {\n\t\t\t$('input[name=show_extended]').val( 1 );\n\t\t\t$('#extended_label').html('Showing');\n\t\t\t$('.augmented').css('display', 'block');\n\t\t} else {\n\t\t\t$('input[name=show_extended]').val( 0 );\n\t\t\t$('#extended_label').html('Hiding');\n\t\t\t$('.augmented').css('display', 'none');\n\t\t}\n\t\tfnWriteCookie();\n\t\treturn false;\n\t} );\n\n\tvar savedHeight = $(jqNav).height();\n\t$('div.fw_nav h2').click( function () {\n\t\tif ( showingNav ) {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": 10,\n\t\t\t\t\"opacity\": 0.3\n\t\t\t} );\n\t\t\tshowingNav = false;\n\t\t} else {\n\t\t\t$('div.fw_nav').animate( {\n\t\t\t\t\"height\": savedHeight,\n\t\t\t\t\"opacity\": 1\n\t\t\t} );\n\t\t\tshowingNav = true;\n\t\t}\n\t\tfnWriteCookie();\n\t} );\n\n\tvar cookie = fnReadCookie( 'SpryMedia_JSDoc' );\n\tif ( cookie != null ) {\n\t\tvar a = cookie.split('-');\n\t\tif ( a[0] == 1 ) {\n\t\t\t$('#private_toggle').click();\n\t\t}\n\t\tif ( a[1] == 0 ) {\n\t\t\t$('#extended_toggle').click();\n\t\t}\n\t\tif ( a[2] == 'false' ) {\n\t\t\t$('div.fw_nav').css('height', 10).css('opacity', 0.3);\n\t\t\tshowingNav = false;\n\t\t}\n\t}\n} );\n\n\nfunction fnWriteCookie()\n{\n\tvar sVal = \n\t\t$('input[name=show_private]').val()+'-'+\n\t\t$('input[name=show_extended]').val()+'-'+\n\t\tshowingNav;\n\t\n\tfnCreateCookie( 'SpryMedia_JSDoc', sVal );\n}\n\n\nfunction fnCreateCookie( sName, sValue )\n{\n\tvar iDays = 365;\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iDays*24*60*60*1000) );\n\tvar sExpires = \"; expires=\"+date.toGMTString();\n\t\n\tdocument.cookie = sName+\"=\"+sValue+sExpires+\"; path=/\";\n}\n\n\nfunction fnReadCookie( sName )\n{\n\tvar sNameEQ = sName + \"=\";\n\tvar sCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ ) {\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ') {\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) == 0) {\n\t\t\treturn c.substring(sNameEQ.length,c.length);\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n})();"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.5.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Wed Feb 23 13:55:29 2011 -0500\n */\n(function( window, undefined ) {\n\n// Use the correct document accordingly with window argument (sandbox)\nvar document = window.document;\nvar jQuery = (function() {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/,\n\ttrimRight = /\\s+$/,\n\n\t// Check for digits\n\trdigit = /\\d/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\n\t// Useragent RegExp\n\trwebkit = /(webkit)[ \\/]([\\w.]+)/,\n\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\n\trmsie = /(msie) ([\\w.]+)/,\n\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Promise methods\n\tpromiseMethods = \"then done fail isResolved isRejected promise\".split( \" \" ),\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\ttrim = String.prototype.trim,\n\tindexOf = Array.prototype.indexOf,\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context && document.body ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.5.1\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = this.constructor();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// Add the callback\n\t\treadyList.done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\t\t// A third-party is pushing the ready event forwards\n\t\tif ( wait === true ) {\n\t\t\tjQuery.readyWait--;\n\t\t}\n\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.trigger ) {\n\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\t// A crude way of determining if an object is a window\n\tisWindow: function( obj ) {\n\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;\n\t},\n\n\tisNaN: function( obj ) {\n\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test(data.replace(rvalidescape, \"@\")\n\t\t\t.replace(rvalidtokens, \"]\")\n\t\t\t.replace(rvalidbraces, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\t// Cross-browser xml parsing\n\t// (xml & tmp used internally)\n\tparseXML: function( data , xml , tmp ) {\n\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\n\t\ttmp = xml.documentElement;\n\n\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement,\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\tif ( jQuery.support.scriptEval() ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: trim ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttrim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\tvar type = jQuery.type(array);\n\n\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [], retVal;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Mutifunctional method to get and set values to a collection\n\t// The value/s can be optionally by executed if its a function\n\taccess: function( elems, key, value, exec, fn, pass ) {\n\t\tvar length = elems.length;\n\n\t\t// Setting many attributes\n\t\tif ( typeof key === \"object\" ) {\n\t\t\tfor ( var k in key ) {\n\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );\n\t\t\t}\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Setting one attribute\n\t\tif ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = !pass && exec && jQuery.isFunction(value);\n\n\t\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t}\n\n\t\t\treturn elems;\n\t\t}\n\n\t\t// Getting an attribute\n\t\treturn length ? fn( elems[0], key ) : undefined;\n\t},\n\n\tnow: function() {\n\t\treturn (new Date()).getTime();\n\t},\n\n\t// Create a simple deferred (one callbacks list)\n\t_Deferred: function() {\n\t\tvar // callbacks list\n\t\t\tcallbacks = [],\n\t\t\t// stored [ context , args ]\n\t\t\tfired,\n\t\t\t// to avoid firing when already doing so\n\t\t\tfiring,\n\t\t\t// flag to know if the deferred has been cancelled\n\t\t\tcancelled,\n\t\t\t// the deferred itself\n\t\t\tdeferred  = {\n\n\t\t\t\t// done( f1, f2, ...)\n\t\t\t\tdone: function() {\n\t\t\t\t\tif ( !cancelled ) {\n\t\t\t\t\t\tvar args = arguments,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tlength,\n\t\t\t\t\t\t\telem,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t_fired;\n\t\t\t\t\t\tif ( fired ) {\n\t\t\t\t\t\t\t_fired = fired;\n\t\t\t\t\t\t\tfired = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {\n\t\t\t\t\t\t\telem = args[ i ];\n\t\t\t\t\t\t\ttype = jQuery.type( elem );\n\t\t\t\t\t\t\tif ( type === \"array\" ) {\n\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );\n\t\t\t\t\t\t\t} else if ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tcallbacks.push( elem );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( _fired ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with given context and args\n\t\t\t\tresolveWith: function( context, args ) {\n\t\t\t\t\tif ( !cancelled && !fired && !firing ) {\n\t\t\t\t\t\tfiring = 1;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {\n\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// We have to add a catch block for\n\t\t\t\t\t\t// IE prior to 8 or else the finally\n\t\t\t\t\t\t// block will never get executed\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tfired = [ context, args ];\n\t\t\t\t\t\t\tfiring = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// resolve with this as context and given arguments\n\t\t\t\tresolve: function() {\n\t\t\t\t\tdeferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Has this deferred been resolved?\n\t\t\t\tisResolved: function() {\n\t\t\t\t\treturn !!( firing || fired );\n\t\t\t\t},\n\n\t\t\t\t// Cancel\n\t\t\t\tcancel: function() {\n\t\t\t\t\tcancelled = 1;\n\t\t\t\t\tcallbacks = [];\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn deferred;\n\t},\n\n\t// Full fledged deferred (two callbacks list)\n\tDeferred: function( func ) {\n\t\tvar deferred = jQuery._Deferred(),\n\t\t\tfailDeferred = jQuery._Deferred(),\n\t\t\tpromise;\n\t\t// Add errorDeferred methods, then and promise\n\t\tjQuery.extend( deferred, {\n\t\t\tthen: function( doneCallbacks, failCallbacks ) {\n\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tfail: failDeferred.done,\n\t\t\trejectWith: failDeferred.resolveWith,\n\t\t\treject: failDeferred.resolve,\n\t\t\tisRejected: failDeferred.isResolved,\n\t\t\t// Get a promise for this deferred\n\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\tpromise: function( obj ) {\n\t\t\t\tif ( obj == null ) {\n\t\t\t\t\tif ( promise ) {\n\t\t\t\t\t\treturn promise;\n\t\t\t\t\t}\n\t\t\t\t\tpromise = obj = {};\n\t\t\t\t}\n\t\t\t\tvar i = promiseMethods.length;\n\t\t\t\twhile( i-- ) {\n\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t} );\n\t\t// Make sure only one callback list will be used\n\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );\n\t\t// Unexpose cancel\n\t\tdelete deferred.cancel;\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( object ) {\n\t\tvar lastIndex = arguments.length,\n\t\t\tdeferred = lastIndex <= 1 && object && jQuery.isFunction( object.promise ) ?\n\t\t\t\tobject :\n\t\t\t\tjQuery.Deferred(),\n\t\t\tpromise = deferred.promise();\n\n\t\tif ( lastIndex > 1 ) {\n\t\t\tvar array = slice.call( arguments, 0 ),\n\t\t\t\tcount = lastIndex,\n\t\t\t\tiCallback = function( index ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tarray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;\n\t\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\twhile( ( lastIndex-- ) ) {\n\t\t\t\tobject = array[ lastIndex ];\n\t\t\t\tif ( object && jQuery.isFunction( object.promise ) ) {\n\t\t\t\t\tobject.promise().then( iCallback(lastIndex), deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !count ) {\n\t\t\t\tdeferred.resolveWith( promise, array );\n\t\t\t}\n\t\t} else if ( deferred !== object ) {\n\t\t\tdeferred.resolve( object );\n\t\t}\n\t\treturn promise;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tsub: function() {\n\t\tfunction jQuerySubclass( selector, context ) {\n\t\t\treturn new jQuerySubclass.fn.init( selector, context );\n\t\t}\n\t\tjQuery.extend( true, jQuerySubclass, this );\n\t\tjQuerySubclass.superclass = this;\n\t\tjQuerySubclass.fn = jQuerySubclass.prototype = this();\n\t\tjQuerySubclass.fn.constructor = jQuerySubclass;\n\t\tjQuerySubclass.subclass = this.subclass;\n\t\tjQuerySubclass.fn.init = function init( selector, context ) {\n\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {\n\t\t\t\tcontext = jQuerySubclass(context);\n\t\t\t}\n\n\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );\n\t\t};\n\t\tjQuerySubclass.fn.init.prototype = jQuerySubclass.fn;\n\t\tvar rootjQuerySubclass = jQuerySubclass(document);\n\t\treturn jQuerySubclass;\n\t},\n\n\tbrowser: {}\n});\n\n// Create readyList deferred\nreadyList = jQuery._Deferred();\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// IE doesn't match non-breaking spaces with \\s\nif ( rnotwhite.test( \"\\xA0\" ) ) {\n\ttrimLeft = /^[\\s\\xA0]+/;\n\ttrimRight = /[\\s\\xA0]+$/;\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch(e) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\n// Expose jQuery to the global object\nreturn jQuery;\n\n})();\n\n\n(function() {\n\n\tjQuery.support = {};\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0],\n\t\tselect = document.createElement(\"select\"),\n\t\topt = select.appendChild( document.createElement(\"option\") ),\n\t\tinput = div.getElementsByTagName(\"input\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: input.value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\toptDisabled: false,\n\t\tcheckClone: false,\n\t\tnoCloneEvent: true,\n\t\tnoCloneChecked: true,\n\t\tboxModel: null,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableHiddenOffsets: true\n\t};\n\n\tinput.checked = true;\n\tjQuery.support.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as diabled)\n\tselect.disabled = true;\n\tjQuery.support.optDisabled = !opt.disabled;\n\n\tvar _scriptEval = null;\n\tjQuery.support.scriptEval = function() {\n\t\tif ( _scriptEval === null ) {\n\t\t\tvar root = document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\"),\n\t\t\t\tid = \"script\" + jQuery.now();\n\n\t\t\ttry {\n\t\t\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t\t\t} catch(e) {}\n\n\t\t\troot.insertBefore( script, root.firstChild );\n\n\t\t\t// Make sure that the execution of code works by injecting a script\n\t\t\t// tag with appendChild/createTextNode\n\t\t\t// (IE doesn't support this, fails, and uses .text instead)\n\t\t\tif ( window[ id ] ) {\n\t\t\t\t_scriptEval = true;\n\t\t\t\tdelete window[ id ];\n\t\t\t} else {\n\t\t\t\t_scriptEval = false;\n\t\t\t}\n\n\t\t\troot.removeChild( script );\n\t\t\t// release memory in IE\n\t\t\troot = script = id  = null;\n\t\t}\n\n\t\treturn _scriptEval;\n\t};\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\"),\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\t// Frameset documents with no body should not run this code\n\t\tif ( !body ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\t\tbody.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\n\t\tif ( \"zoom\" in div.style ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.style.display = \"inline\";\n\t\t\tdiv.style.zoom = 1;\n\t\t\tjQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"\";\n\t\t\tdiv.innerHTML = \"<div style='width:4px;'></div>\";\n\t\t\tjQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;\n\t\t}\n\n\t\tdiv.innerHTML = \"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";\n\t\tvar tds = div.getElementsByTagName(\"td\");\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tjQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;\n\n\t\ttds[0].style.display = \"\";\n\t\ttds[1].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE < 8 fail this test)\n\t\tjQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;\n\t\tdiv.innerHTML = \"\";\n\n\t\tbody.removeChild( div ).style.display = \"none\";\n\t\tdiv = tds = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) {\n\t\tvar el = document.createElement(\"div\");\n\t\teventName = \"on\" + eventName;\n\n\t\t// We only care about the case where non-standard event systems\n\t\t// are used, namely in IE. Short-circuiting here helps us to\n\t\t// avoid an eval call (in setAttribute) which can cause CSP\n\t\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\t\tif ( !el.attachEvent ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tvar isSupported = (eventName in el);\n\t\tif ( !isSupported ) {\n\t\t\tel.setAttribute(eventName, \"return;\");\n\t\t\tisSupported = typeof el[eventName] === \"function\";\n\t\t}\n\t\tel = null;\n\n\t\treturn isSupported;\n\t};\n\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\tdiv = all = a = null;\n})();\n\n\n\nvar rbrace = /^(?:\\{.*\\}|\\[.*\\])$/;\n\njQuery.extend({\n\tcache: {},\n\n\t// Please use with caution\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, getByName = typeof name === \"string\", thisCache,\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ jQuery.expando ] = id = ++jQuery.uuid;\n\t\t\t} else {\n\t\t\t\tid = jQuery.expando;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);\n\t\t\t} else {\n\t\t\t\tcache[ id ] = jQuery.extend(cache[ id ], name);\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Internal jQuery data is stored in a separate object inside the object's data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data\n\t\tif ( pvt ) {\n\t\t\tif ( !thisCache[ internalKey ] ) {\n\t\t\t\tthisCache[ internalKey ] = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache[ internalKey ];\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\t// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should\n\t\t// not attempt to inspect the internal events object using jQuery.data, as this\n\t\t// internal data object is undocumented and subject to change.\n\t\tif ( name === \"events\" && !thisCache[name] ) {\n\t\t\treturn thisCache[ internalKey ] && thisCache[ internalKey ].events;\n\t\t}\n\n\t\treturn getByName ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar internalKey = jQuery.expando, isNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\t\t\tvar thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];\n\n\t\t\tif ( thisCache ) {\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !isEmptyDataObject(thisCache) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( pvt ) {\n\t\t\tdelete cache[ id ][ internalKey ];\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject(cache[ id ]) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar internalCache = cache[ id ][ internalKey ];\n\n\t\t// Browsers that fail expando deletion also refuse to delete expandos on\n\t\t// the window, but it will allow it on all other JS objects; other browsers\n\t\t// don't care\n\t\tif ( jQuery.support.deleteExpando || cache != window ) {\n\t\t\tdelete cache[ id ];\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\n\t\t// We destroyed the entire user cache at once because it's faster than\n\t\t// iterating through each key, but we need to continue to persist internal\n\t\t// data if it existed\n\t\tif ( internalCache ) {\n\t\t\tcache[ id ] = {};\n\t\t\t// TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery\n\t\t\t// metadata on plain JS objects when the object is serialized using\n\t\t\t// JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\n\t\t\tcache[ id ][ internalKey ] = internalCache;\n\n\t\t// Otherwise, we need to eliminate the expando on the node to avoid\n\t\t// false lookups in the cache for entries that no longer exist\n\t\t} else if ( isNode ) {\n\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t// we must handle all of these cases\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t} else {\n\t\t\t\telem[ jQuery.expando ] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tif ( elem.nodeName ) {\n\t\t\tvar match = jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t\tif ( match ) {\n\t\t\t\treturn !(match === true || elem.getAttribute(\"classid\") !== match);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar data = null;\n\n\t\tif ( typeof key === \"undefined\" ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( this[0] );\n\n\t\t\t\tif ( this[0].nodeType === 1 ) {\n\t\t\t\t\tvar attr = this[0].attributes, name;\n\t\t\t\t\tfor ( var i = 0, l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\tname = name.substr( 5 );\n\t\t\t\t\t\t\tdataAttr( this[0], name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tdata = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\t// Try to fetch any internally stored data first\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t\tdata = dataAttr( this[0], key, data );\n\t\t\t}\n\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\n\t\t} else {\n\t\t\treturn this.each(function() {\n\t\t\t\tvar $this = jQuery( this ),\n\t\t\t\t\targs = [ parts[0], value ];\n\n\t\t\t\t$this.triggerHandler( \"setData\" + parts[1] + \"!\", args );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\t$this.triggerHandler( \"changeData\" + parts[1] + \"!\", args );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tdata = elem.getAttribute( \"data-\" + key );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t!jQuery.isNaN( data ) ? parseFloat( data ) :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON\n// property to be considered empty objects; this property always exists in\n// order to make sure JSON.stringify does not expose internal metadata\nfunction isEmptyDataObject( obj ) {\n\tfor ( var name in obj ) {\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery._data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery._data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tfn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\n\t\tif ( !queue.length ) {\n\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\n\n\n\n\nvar rclass = /[\\n\\t\\r]/g,\n\trspaces = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /^(?:href|src|style)$/,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea)?$/i,\n\trradiocheck = /^(?:radio|checkbox)$/i;\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \",\n\t\t\t\t\t\t\tsetClass = elem.className;\n\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split( rspaces );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspaces );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( !arguments.length ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t\t// uses .value. See #6932\n\t\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\tif ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) &&\n\t\t\t\t\t\t\t\t(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" )) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\t\treturn jQuery( options[ index ] ).val();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray(val) ) {\n\t\t\t\tval = jQuery.map(val, function (value) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\t// 'in' checks fail in Blackberry 4.7 #6931\n\t\t\tif ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( value === null ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\t// Ensure that missing attributes return undefined\n\t\t\t// Blackberry 4.7 returns \"\" from getAttribute #6938\n\t\t\tif ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\t\t// Handle everything which isn't a DOM element node\n\t\tif ( set ) {\n\t\t\telem[ name ] = value;\n\t\t}\n\t\treturn elem[ name ];\n\t}\n});\n\n\n\n\nvar rnamespaces = /\\.(.*)$/,\n\trformElems = /^(?:textarea|input|select)$/i,\n\trperiod = /\\./g,\n\trspace = / /g,\n\trescape = /[^\\w\\s.|`]/g,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(rescape, \"\\\\$&\");\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)\n\t\t// Minor release fix for bug #8018\n\t\ttry {\n\t\t\t// For whatever reason, IE has trouble passing the window object\n\t\t\t// around, causing it to be cloned in the process\n\t\t\tif ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {\n\t\t\t\telem = window;\n\t\t\t}\n\t\t}\n\t\tcatch ( e ) {}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t} else if ( !handler ) {\n\t\t\t// Fixes bug #7229. Fix recommended by jdalton\n\t\t\treturn;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery._data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events,\n\t\t\teventHandle = elemData.handle;\n\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\tif ( !handleObj.guid ) {\n\t\t\t\thandleObj.guid = handler.guid;\n\t\t\t}\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( handler === false ) {\n\t\t\thandler = returnFalse;\n\t\t}\n\n\t\tvar ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" +\n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem, undefined, true );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\t// XXX This code smells terrible. event.js should not be directly\n\t\t\t\t\t// inspecting the data cache\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\t// internalKey variable is just used to make it easier to find\n\t\t\t\t\t\t// and potentially change this stuff later; currently it just\n\t\t\t\t\t\t// points to jQuery.expando\n\t\t\t\t\t\tvar internalKey = jQuery.expando,\n\t\t\t\t\t\t\tinternalCache = this[ internalKey ];\n\t\t\t\t\t\tif ( internalCache && internalCache.events && internalCache.events[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, internalCache.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery._data( elem, \"handle\" );\n\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (inlineError) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar old,\n\t\t\t\ttarget = event.target,\n\t\t\t\ttargetType = type.replace( rnamespaces, \"\" ),\n\t\t\t\tisClick = jQuery.nodeName( target, \"a\" ) && targetType === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ targetType ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) &&\n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ targetType ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + targetType ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + targetType ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ targetType ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (triggerError) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + targetType ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace_re, events,\n\t\t\tnamespace_sort = [],\n\t\t\targs = jQuery.makeArray( arguments );\n\n\t\tevent = args[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace_sort = namespaces.slice(0).sort();\n\t\t\tnamespace_re = new RegExp(\"(^|\\\\.)\" + namespace_sort.join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tevent.namespace = event.namespace || namespace_sort.join(\".\");\n\n\t\tevents = jQuery._data(this, \"events\");\n\n\t\thandlers = (events || {})[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace_re.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\t// Fixes #1925 where srcElement might not be defined either\n\t\t\tevent.target = event.srcElement || document;\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement,\n\t\t\t\tbody = document.body;\n\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && (event.charCode != null || event.keyCode != null) ) {\n\t\t\tevent.which = event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this,\n\t\t\t\t\tliveConvert( handleObj.origType, handleObj.selector ),\n\t\t\t\t\tjQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );\n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tjQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.detachEvent ) {\n\t\t\telem.detachEvent( \"on\" + type, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\n\t\t// Chrome does something similar, the parentNode property\n\t\t// can be accessed but is null.\n\t\tif ( parent !== document && !parent.parentNode ) {\n\t\t\treturn;\n\t\t}\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName && this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target,\n\t\t\t\t\t\ttype = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\ttrigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar changeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery._data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery._data( elem, \"_change_data\", val );\n\t\t}\n\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\te.liveFired = undefined;\n\t\t\tjQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange,\n\n\t\t\tbeforedeactivate: testChange,\n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\ttestChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery._data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn rformElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n\n\t// Handle when the input is .focus()'d\n\tchangeFilters.focus = changeFilters.beforeactivate;\n}\n\nfunction trigger( type, elem, args ) {\n\t// Piggyback on a donor event to simulate a different one.\n\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t// simulated event prevents default then we do the same on the donor.\n\t// Don't pass args or remember liveFired; they apply to the donor event.\n\tvar event = jQuery.extend( {}, args[ 0 ] );\n\tevent.type = type;\n\tevent.originalEvent = {};\n\tevent.liveFired = undefined;\n\tjQuery.event.handle.call( elem, event );\n\tif ( event.isDefaultPrevented() ) {\n\t\targs[ 0 ].preventDefault();\n\t}\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) {\n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) || data === false ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\ti = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( typeof types === \"object\" && !types.preventDefault ) {\n\t\t\tfor ( var key in types ) {\n\t\t\t\tcontext[ name ]( key, data, types[key], selector );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tfor ( var j = 0, l = context.length; j < l; j++ ) {\n\t\t\t\t\tjQuery.event.add( context[j], \"live.\" + liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( \"live.\" + liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\nfunction liveHandler( event ) {\n\tvar stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,\n\t\telems = [],\n\t\tselectors = [],\n\t\tevents = jQuery._data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)\n\tif ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tif ( event.namespace ) {\n\t\tnamespace = new RegExp(\"(^|\\\\.)\" + event.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tclose = match[i];\n\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {\n\t\t\t\telem = close.elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\tevent.type = handleObj.preType;\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj, level: close.level });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\n\t\tif ( maxLevel && match.level > maxLevel ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tret = match.handleObj.origHandler.apply( match.elem, arguments );\n\n\t\tif ( ret === false || event.isPropagationStopped() ) {\n\t\t\tmaxLevel = match.level;\n\n\t\t\tif ( ret === false ) {\n\t\t\t\tstop = false;\n\t\t\t}\n\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(rperiod, \"`\").replace(rspace, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.bind( name, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true,\n\trBackslash = /\\\\/g,\n\trNonWord = /\\W/;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function() {\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\n\tvar origContext = context;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar m, set, checkSet, extra, ret, cur, pop, i,\n\t\tprune = true,\n\t\tcontextXML = Sizzle.isXML( context ),\n\t\tparts = [],\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\tdo {\n\t\tchunker.exec( \"\" );\n\t\tm = chunker.exec( soFar );\n\n\t\tif ( m ) {\n\t\t\tsoFar = m[3];\n\t\t\n\t\t\tparts.push( m[1] );\n\t\t\n\t\t\tif ( m[2] ) {\n\t\t\t\textra = m[3];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while ( m );\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\n\t\t\tret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set )[0] :\n\t\t\t\tret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\n\t\t\tset = ret.expr ?\n\t\t\t\tSizzle.filter( ret.expr, ret.set ) :\n\t\t\t\tret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray( set );\n\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tcur = parts.pop();\n\t\t\t\tpop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function( results ) {\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[ i - 1 ] ) {\n\t\t\t\t\tresults.splice( i--, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function( expr, set ) {\n\treturn Sizzle( expr, null, null, set );\n};\n\nSizzle.matchesSelector = function( node, expr ) {\n\treturn Sizzle( expr, null, null, [node] ).length > 0;\n};\n\nSizzle.find = function( expr, context, isXML ) {\n\tvar set;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar match,\n\t\t\ttype = Expr.order[i];\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice( 1, 1 );\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace( rBackslash, \"\" );\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( \"*\" ) :\n\t\t\t[];\n\t}\n\n\treturn { set: set, expr: expr };\n};\n\nSizzle.filter = function( expr, set, inplace, not ) {\n\tvar match, anyFound,\n\t\told = expr,\n\t\tresult = [],\n\t\tcurLoop = set,\n\t\tisXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar found, item,\n\t\t\t\t\tfilter = Expr.filter[ type ],\n\t\t\t\t\tleft = match[1];\n\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\n\tleftMatch: {},\n\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\n\tattrHandle: {\n\t\thref: function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\" );\n\t\t},\n\t\ttype: function( elem ) {\n\t\t\treturn elem.getAttribute( \"type\" );\n\t\t}\n\t},\n\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !rNonWord.test( part ),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\n\t\t\">\": function( checkSet, part ) {\n\t\t\tvar elem,\n\t\t\t\tisPartStr = typeof part === \"string\",\n\t\t\t\ti = 0,\n\t\t\t\tl = checkSet.length;\n\n\t\t\tif ( isPartStr && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\telem = checkSet[i];\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"parentNode\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t},\n\n\t\t\"~\": function( checkSet, part, isXML ) {\n\t\t\tvar nodeCheck,\n\t\t\t\tdoneName = done++,\n\t\t\t\tcheckFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !rNonWord.test( part ) ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t\tnodeCheck = part;\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn( \"previousSibling\", part, doneName, checkSet, nodeCheck, isXML );\n\t\t}\n\t},\n\n\tfind: {\n\t\tID: function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t}\n\t\t},\n\n\t\tNAME: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [],\n\t\t\t\t\tresults = context.getElementsByName( match[1] );\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( match, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( match[1] );\n\t\t\t}\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tmatch = \" \" + match[1].replace( rBackslash, \"\" ) + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n\\r]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tID: function( match ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" );\n\t\t},\n\n\t\tTAG: function( match, curLoop ) {\n\t\t\treturn match[1].replace( rBackslash, \"\" ).toLowerCase();\n\t\t},\n\n\t\tCHILD: function( match ) {\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\tmatch[2] = match[2].replace(/^\\+|\\s*/g, '');\n\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\t\t\telse if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\n\t\tATTR: function( match, curLoop, inplace, result, not, isXML ) {\n\t\t\tvar name = match[1] = match[1].replace( rBackslash, \"\" );\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\t// Handle if an un-quoted value was used\n\t\t\tmatch[4] = ( match[4] || match[5] || \"\" ).replace( rBackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match, curLoop, inplace, result, not ) {\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\n\t\tPOS: function( match ) {\n\t\t\tmatch.unshift( true );\n\n\t\t\treturn match;\n\t\t}\n\t},\n\t\n\tfilters: {\n\t\tenabled: function( elem ) {\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\n\t\tdisabled: function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\tchecked: function( elem ) {\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\t\n\t\tselected: function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\t\t\t\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\n\t\tempty: function( elem ) {\n\t\t\treturn !elem.firstChild;\n\t\t},\n\n\t\thas: function( elem, i, match ) {\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\n\t\theader: function( elem ) {\n\t\t\treturn (/h\\d/i).test( elem.nodeName );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) \n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn \"text\" === elem.getAttribute( 'type' );\n\t\t},\n\t\tradio: function( elem ) {\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\n\t\tcheckbox: function( elem ) {\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\n\t\tfile: function( elem ) {\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function( elem ) {\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\n\t\tsubmit: function( elem ) {\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\n\t\timage: function( elem ) {\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\n\t\treset: function( elem ) {\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn (/input|select|textarea|button/i).test( elem.nodeName );\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function( elem, i ) {\n\t\t\treturn i === 0;\n\t\t},\n\n\t\tlast: function( elem, i, match, array ) {\n\t\t\treturn i === array.length - 1;\n\t\t},\n\n\t\teven: function( elem, i ) {\n\t\t\treturn i % 2 === 0;\n\t\t},\n\n\t\todd: function( elem, i ) {\n\t\t\treturn i % 2 === 1;\n\t\t},\n\n\t\tlt: function( elem, i, match ) {\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\n\t\tgt: function( elem, i, match ) {\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\n\t\tnth: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\n\t\teq: function( elem, i, match ) {\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function( elem, match, i, array ) {\n\t\t\tvar name = match[1],\n\t\t\t\tfilter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var j = 0, l = not.length; j < l; j++ ) {\n\t\t\t\t\tif ( not[j] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\t\t\t\tSizzle.error( name );\n\t\t\t}\n\t\t},\n\n\t\tCHILD: function( elem, match ) {\n\t\t\tvar type = match[1],\n\t\t\t\tnode = elem;\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"only\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\n\t\t\t\t\tnode = elem;\n\n\t\t\t\tcase \"last\":\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\tcase \"nth\":\n\t\t\t\t\tvar first = match[2],\n\t\t\t\t\t\tlast = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tID: function( elem, match ) {\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\n\t\tTAG: function( elem, match ) {\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\t\n\t\tCLASS: function( elem, match ) {\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\n\t\tATTR: function( elem, match ) {\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\n\t\tPOS: function( elem, match, i, array ) {\n\t\t\tvar name = match[2],\n\t\t\t\tfilter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS,\n\tfescape = function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t};\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\\[]*\\])(?![^\\(]*\\))/.source) );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, fescape) );\n}\n\nvar makeArray = function( array, results ) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch( e ) {\n\tmakeArray = function( array, results ) {\n\t\tvar i = 0,\n\t\t\tret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tfor ( ; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder, siblingCheck;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : 1;\n\t};\n\n} else {\n\tsortOrder = function( a, b ) {\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n\tsiblingCheck = function( a, b, ret ) {\n\t\tif ( a === b ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar cur = a.nextSibling;\n\n\t\twhile ( cur ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcur = cur.nextSibling;\n\t\t}\n\n\t\treturn 1;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nSizzle.getText = function( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += Sizzle.getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date()).getTime(),\n\t\troot = document.documentElement;\n\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function( match, context, isXML ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\n\t\t\t\treturn m ?\n\t\t\t\t\tm.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ?\n\t\t\t\t\t\t[m] :\n\t\t\t\t\t\tundefined :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function( elem, match ) {\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\n\t// release memory in IE\n\troot = form = null;\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function( match, context ) {\n\t\t\tvar results = context.getElementsByTagName( match[1] );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\n\t\tExpr.attrHandle.href = function( elem ) {\n\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t};\n\t}\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle,\n\t\t\tdiv = document.createElement(\"div\"),\n\t\t\tid = \"__sizzle__\";\n\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function( query, context, extra, seed ) {\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && !Sizzle.isXML(context) ) {\n\t\t\t\t// See if we find a selector to speed up\n\t\t\t\tvar match = /^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec( query );\n\t\t\t\t\n\t\t\t\tif ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t\t\tif ( match[1] ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByTagName( query ), extra );\n\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t\t\t} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\n\t\t\t\t\t\treturn makeArray( context.getElementsByClassName( match[2] ), extra );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( context.nodeType === 9 ) {\n\t\t\t\t\t// Speed-up: Sizzle(\"body\")\n\t\t\t\t\t// The body element only exists once, optimize finding it\n\t\t\t\t\tif ( query === \"body\" && context.body ) {\n\t\t\t\t\t\treturn makeArray( [ context.body ], extra );\n\t\t\t\t\t\t\n\t\t\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\t\t\t} else if ( match && match[3] ) {\n\t\t\t\t\t\tvar elem = context.getElementById( match[3] );\n\n\t\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === match[3] ) {\n\t\t\t\t\t\t\t\treturn makeArray( [ elem ], extra );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn makeArray( [], extra );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t\t} catch(qsaError) {}\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\t} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tvar oldContext = context,\n\t\t\t\t\t\told = context.getAttribute( \"id\" ),\n\t\t\t\t\t\tnid = old || id,\n\t\t\t\t\t\thasParent = context.parentNode,\n\t\t\t\t\t\trelativeHierarchySelector = /^\\s*[+~]/.test( query );\n\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnid = nid.replace( /'/g, \"\\\\$&\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( relativeHierarchySelector && hasParent ) {\n\t\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ( !relativeHierarchySelector || hasParent ) {\n\t\t\t\t\t\t\treturn makeArray( context.querySelectorAll( \"[id='\" + nid + \"'] \" + query ), extra );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch(pseudoError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\toldContext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\t// release memory in IE\n\t\tdiv = null;\n\t})();\n}\n\n(function(){\n\tvar html = document.documentElement,\n\t\tmatches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,\n\t\tpseudoWorks = false;\n\n\ttry {\n\t\t// This should fail with an exception\n\t\t// Gecko does not error, returns false instead\n\t\tmatches.call( document.documentElement, \"[test!='']:sizzle\" );\n\t\n\t} catch( pseudoError ) {\n\t\tpseudoWorks = true;\n\t}\n\n\tif ( matches ) {\n\t\tSizzle.matchesSelector = function( node, expr ) {\n\t\t\t// Make sure that attribute selectors are quoted\n\t\t\texpr = expr.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g, \"='$1']\");\n\n\t\t\tif ( !Sizzle.isXML( node ) ) {\n\t\t\t\ttry { \n\t\t\t\t\tif ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\n\t\t\t\t\t\treturn matches.call( node, expr );\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\treturn Sizzle(expr, null, null, [node]).length > 0;\n\t\t};\n\t}\n})();\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function( match, context, isXML ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\t// release memory in IE\n\tdiv = null;\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\n\t\tif ( elem ) {\n\t\t\tvar match = false;\n\t\t\t\n\t\t\telem = elem[dir];\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nif ( document.documentElement.contains ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn a !== b && (a.contains ? a.contains(b) : true);\n\t};\n\n} else if ( document.documentElement.compareDocumentPosition ) {\n\tSizzle.contains = function( a, b ) {\n\t\treturn !!(a.compareDocumentPosition(b) & 16);\n\t};\n\n} else {\n\tSizzle.contains = function() {\n\t\treturn false;\n\t};\n}\n\nSizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function( selector, context ) {\n\tvar match,\n\t\ttmpSet = [],\n\t\tlater = \"\",\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})();\n\n\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\tslice = Array.prototype.slice,\n\tPOS = jQuery.expr.match.POS,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ),\n\t\t\tlength = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar ret = [], i, l, cur = this[0];\n\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar match, selector,\n\t\t\t\tmatches = {},\n\t\t\t\tlevel = 1;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ?\n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur, level: level });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tlevel++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = POS.test( selectors ) ?\n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\n\t\t\t\t} else {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t\tif ( !cur || !cur.ownerDocument || cur === context ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique(ret) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until ),\n\t\t\t// The variable 'args' was introduced in\n\t\t\t// https://github.com/jquery/jquery/commit/52a0238\n\t\t\t// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.\n\t\t\t// http://code.google.com/p/v8/issues/detail?id=1050\n\t\t\targs = slice.call(arguments);\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, args.join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n}\n\n\n\n\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.html( value.call(this, i, self.html()) );\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, fragment, parent,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [];\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\t}\n\n\t\t\tfragment = results.fragment;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\t// Make sure that we do not leak memory by inadvertently discarding\n\t\t\t\t\t\t// the original fragment (which might have attached data) instead of\n\t\t\t\t\t\t// using it; in addition, use the original fragment object for the last\n\t\t\t\t\t\t// item instead of first because it can end up being emptied incorrectly\n\t\t\t\t\t\t// in certain situations (Bug #8070).\n\t\t\t\t\t\t// Fragments from the fragment cache must always be cloned and never used\n\t\t\t\t\t\t// in place.\n\t\t\t\t\t\tresults.cacheable || (l > 1 && i < lastIndex) ?\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true ) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction root( elem, cur ) {\n\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\telem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar internalKey = jQuery.expando,\n\t\toldData = jQuery.data( src ),\n\t\tcurData = jQuery.data( dest, oldData );\n\n\t// Switch to use the internal data object, if it exists, for the next\n\t// stage of data copying\n\tif ( (oldData = oldData[ internalKey ]) ) {\n\t\tvar events = oldData.events;\n\t\t\t\tcurData = curData[ internalKey ] = jQuery.extend({}, oldData);\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? \".\" : \"\" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction cloneFixAttributes(src, dest) {\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tdest.clearAttributes();\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tdest.mergeAttributes(src);\n\n\t// IE6-8 fail to clone children inside object elements that use\n\t// the proprietary classid attribute value (rather than the type\n\t// attribute) to identify the type of content to display\n\tif ( nodeName === \"object\" ) {\n\t\tdest.outerHTML = src.outerHTML;\n\n\t} else if ( nodeName === \"input\" && (src.type === \"checkbox\" || src.type === \"radio\") ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\t\tif ( src.checked ) {\n\t\t\tdest.defaultChecked = dest.checked = src.checked;\n\t\t}\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\targs[0].charAt(0) === \"<\" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( \"getElementsByTagName\" in elem ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\t\n\t} else if ( \"querySelectorAll\" in elem ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar clone = elem.cloneNode(true),\n\t\t\t\tsrcElements,\n\t\t\t\tdestElements,\n\t\t\t\ti;\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName\n\t\t\t// instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n},\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tid = elem[ jQuery.expando ];\n\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ] && cache[ id ][ internalKey ];\n\n\t\t\t\tif ( data && data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Null the DOM reference to avoid IE6/7/8 leak (#7054)\n\t\t\t\t\tif ( data.handle ) {\n\t\t\t\t\t\tdata.handle.elem = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n\n\n\nvar ralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\tcurCSS,\n\n\tgetComputedStyle,\n\tcurrentStyle,\n\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\t// Setting 'undefined' is a no-op\n\tif ( arguments.length === 2 && value === undefined ) {\n\t\treturn this;\n\t}\n\n\treturn jQuery.access( this, name, value, true, function( elem, name, value ) {\n\t\treturn value !== undefined ?\n\t\t\tjQuery.style( elem, name, value ) :\n\t\t\tjQuery.css( elem, name );\n\t});\n};\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\", \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t} else {\n\t\t\t\t\treturn elem.style.opacity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"zIndex\": true,\n\t\t\"fontWeight\": true,\n\t\t\"opacity\": true,\n\t\t\"zoom\": true,\n\t\t\"lineHeight\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style, hooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( typeof value === \"number\" && isNaN( value ) || value == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( typeof value === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra ) {\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, origName = jQuery.camelCase( name ),\n\t\t\thooks = jQuery.cssHooks[ origName ];\n\n\t\tname = jQuery.cssProps[ origName ] || origName;\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {\n\t\t\treturn ret;\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t} else if ( curCSS ) {\n\t\t\treturn curCSS( elem, name, origName );\n\t\t}\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t},\n\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rdashAlpha, fcamelCase );\n\t}\n});\n\n// DEPRECATED, Use jQuery.css() instead\njQuery.curCSS = jQuery.css;\n\njQuery.each([\"height\", \"width\"], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tvar val;\n\n\t\t\tif ( computed ) {\n\t\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\t\tval = getWH( elem, name, extra );\n\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\tval = getWH( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( val <= 0 ) {\n\t\t\t\t\tval = curCSS( elem, name, name );\n\n\t\t\t\t\tif ( val === \"0px\" && currentStyle ) {\n\t\t\t\t\t\tval = currentStyle( elem, name, name );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( val != null ) {\n\t\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\t\tval = elem.style[ name ];\n\n\t\t\t\t\t// Should return \"auto\" instead of 0, use 0 for\n\t\t\t\t\t// temporary backwards-compat\n\t\t\t\t\treturn val === \"\" || val === \"auto\" ? \"0px\" : val;\n\t\t\t\t}\n\n\t\t\t\treturn typeof val === \"string\" ? val : val + \"px\";\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tif ( rnumpx.test( value ) ) {\n\t\t\t\t// ignore negative width and height values #1599\n\t\t\t\tvalue = parseFloat(value);\n\n\t\t\t\tif ( value >= 0 ) {\n\t\t\t\t\treturn value + \"px\";\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style;\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// Set the alpha filter to set the opacity\n\t\t\tvar opacity = jQuery.isNaN(value) ?\n\t\t\t\t\"\" :\n\t\t\t\t\"alpha(opacity=\" + value * 100 + \")\",\n\t\t\t\tfilter = style.filter || \"\";\n\n\t\t\tstyle.filter = ralpha.test(filter) ?\n\t\t\t\tfilter.replace(ralpha, opacity) :\n\t\t\t\tstyle.filter + ' ' + opacity;\n\t\t}\n\t};\n}\n\nif ( document.defaultView && document.defaultView.getComputedStyle ) {\n\tgetComputedStyle = function( elem, newName, name ) {\n\t\tvar ret, defaultView, computedStyle;\n\n\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\tif ( !(defaultView = elem.ownerDocument.defaultView) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {\n\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nif ( document.documentElement.currentStyle ) {\n\tcurrentStyle = function( elem, name ) {\n\t\tvar left,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\ncurCSS = getComputedStyle || currentStyle;\n\nfunction getWH( elem, name, extra ) {\n\tvar which = name === \"width\" ? cssWidth : cssHeight,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\tif ( extra === \"border\" ) {\n\t\treturn val;\n\t}\n\n\tjQuery.each( which, function() {\n\t\tif ( !extra ) {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"padding\" + this )) || 0;\n\t\t}\n\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += parseFloat(jQuery.css( elem, \"margin\" + this )) || 0;\n\n\t\t} else {\n\t\t\tval -= parseFloat(jQuery.css( elem, \"border\" + this + \"Width\" )) || 0;\n\t\t}\n\t});\n\n\treturn val;\n}\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth,\n\t\t\theight = elem.offsetHeight;\n\n\t\treturn (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\trinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /(?:^file|^widget|\\-extension):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trselectTextarea = /^(?:select|textarea)/i,\n\trspacesAjax = /\\s+/,\n\trts = /([?&])_=[^&]*/,\n\trucHeaders = /(^|\\-)([a-z])/g,\n\trucHeadersFunc = function( _, $1, $2 ) {\n\t\treturn $1 + $2.toUpperCase();\n\t},\n\trurl = /^([\\w\\+\\.\\-]+:)\\/\\/([^\\/?#:]*)(?::(\\d+))?/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Document location\n\tajaxLocation,\n\n\t// Document location segments\n\tajaxLocParts;\n\n// #8138, IE may throw an exception when accessing\n// a field from document.location if document.domain has been set\ntry {\n\tajaxLocation = document.location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\tvar dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),\n\t\t\t\ti = 0,\n\t\t\t\tlength = dataTypes.length,\n\t\t\t\tdataType,\n\t\t\t\tlist,\n\t\t\t\tplaceBefore;\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor(; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n//Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar list = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters ),\n\t\tselection;\n\n\tfor(; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" && _load ) {\n\t\t\treturn _load.apply( this, arguments );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf( \" \" );\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice( off, url.length );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = undefined;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\t// Complete callback (responseText is used internally)\n\t\t\tcomplete: function( jqXHR, status, responseText ) {\n\t\t\t\t// Store the response as specified by the jqXHR object\n\t\t\t\tresponseText = jqXHR.responseText;\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( jqXHR.isResolved() ) {\n\t\t\t\t\t// #4825: Get the actual response in case\n\t\t\t\t\t// a dataFilter is present in ajaxSettings\n\t\t\t\t\tjqXHR.done(function( r ) {\n\t\t\t\t\t\tresponseText = r;\n\t\t\t\t\t});\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div>\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tresponseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [ responseText, status, jqXHR ] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.bind( o, f );\n\t};\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n} );\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function ( target, settings ) {\n\t\tif ( !settings ) {\n\t\t\t// Only one parameter, we extend ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.extend( true, jQuery.ajaxSettings, settings );\n\t\t} else {\n\t\t\t// target was provided, we extend into it\n\t\t\tjQuery.extend( true, target, jQuery.ajaxSettings, settings );\n\t\t}\n\t\t// Flatten fields we don't want deep extended\n\t\tfor( var field in { context: 1, url: 1 } ) {\n\t\t\tif ( field in settings ) {\n\t\t\t\ttarget[ field ] = settings[ field ];\n\t\t\t} else if( field in jQuery.ajaxSettings ) {\n\t\t\t\ttarget[ field ] = jQuery.ajaxSettings[ field ];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\tcrossDomain: null,\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": \"*/*\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery._Deferred(),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\trequestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || \"abort\";\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, statusText, responses, headers ) {\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status ? 4 : 0;\n\n\t\t\tvar isSuccess,\n\t\t\t\tsuccess,\n\t\t\t\terror,\n\t\t\t\tresponse = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,\n\t\t\t\tlastModified,\n\t\t\t\tetag;\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tif ( ( lastModified = jqXHR.getResponseHeader( \"Last-Modified\" ) ) ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = lastModified;\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( etag = jqXHR.getResponseHeader( \"Etag\" ) ) ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = etag;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsuccess = ajaxConvert( s, response );\n\t\t\t\t\t\tstatusText = \"success\";\n\t\t\t\t\t\tisSuccess = true;\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t// We have a parsererror\n\t\t\t\t\t\tstatusText = \"parsererror\";\n\t\t\t\t\t\terror = e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = statusText;\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.done;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.then( tmp, tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( rspacesAjax );\n\n\t\t// Determine if a cross-domain request is in order\n\t\tif ( !s.crossDomain ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefiler, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\trequestHeaders[ \"Content-Type\" ] = s.contentType;\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-Modified-Since\" ] = jQuery.lastModified[ ifModifiedKey ];\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\trequestHeaders[ \"If-None-Match\" ] = jQuery.etag[ ifModifiedKey ];\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\trequestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", */*; q=0.01\" : \"\" ) :\n\t\t\ts.accepts[ \"*\" ];\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already\n\t\t\t\tjqXHR.abort();\n\t\t\t\treturn false;\n\n\t\t}\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( status < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.error( e );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [],\n\t\t\tadd = function( key, value ) {\n\t\t\t\t// If value is a function, invoke it and return its value\n\t\t\t\tvalue = jQuery.isFunction( value ) ? value() : value;\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t\t};\n\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" ).replace( r20, \"+\" );\n\t}\n});\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tif ( jQuery.isArray( obj ) && obj.length ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t// If we see an array here, it is empty and should be treated as an empty\n\t\t// object\n\t\tif ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {\n\t\t\tadd( prefix, \"\" );\n\n\t\t// Serialize object item.\n\t\t} else {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// This is still on the jQuery object... for now\n// Want to move this to jQuery.ajax some day\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar contents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields,\n\t\tct,\n\t\ttype,\n\t\tfinalDataType,\n\t\tfirstDataType;\n\n\t// Fill responseXXX fields\n\tfor( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\tvar dataTypes = s.dataTypes,\n\t\tconverters = {},\n\t\ti,\n\t\tkey,\n\t\tlength = dataTypes.length,\n\t\ttmp,\n\t\t// Current and previous dataTypes\n\t\tcurrent = dataTypes[ 0 ],\n\t\tprev,\n\t\t// Conversion expression\n\t\tconversion,\n\t\t// Conversion function\n\t\tconv,\n\t\t// Conversion functions (transitive conversion)\n\t\tconv1,\n\t\tconv2;\n\n\t// For each dataType in the chain\n\tfor( i = 1; i < length; i++ ) {\n\n\t\t// Create converters map\n\t\t// with lowercased keys\n\t\tif ( i === 1 ) {\n\t\t\tfor( key in s.converters ) {\n\t\t\t\tif( typeof key === \"string\" ) {\n\t\t\t\t\tconverters[ key.toLowerCase() ] = s.converters[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Get the dataTypes\n\t\tprev = current;\n\t\tcurrent = dataTypes[ i ];\n\n\t\t// If current is auto dataType, update it to prev\n\t\tif( current === \"*\" ) {\n\t\t\tcurrent = prev;\n\t\t// If no auto and dataTypes are actually different\n\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t// Get the converter\n\t\t\tconversion = prev + \" \" + current;\n\t\t\tconv = converters[ conversion ] || converters[ \"* \" + current ];\n\n\t\t\t// If there is no direct converter, search transitively\n\t\t\tif ( !conv ) {\n\t\t\t\tconv2 = undefined;\n\t\t\t\tfor( conv1 in converters ) {\n\t\t\t\t\ttmp = conv1.split( \" \" );\n\t\t\t\t\tif ( tmp[ 0 ] === prev || tmp[ 0 ] === \"*\" ) {\n\t\t\t\t\t\tconv2 = converters[ tmp[1] + \" \" + current ];\n\t\t\t\t\t\tif ( conv2 ) {\n\t\t\t\t\t\t\tconv1 = converters[ conv1 ];\n\t\t\t\t\t\t\tif ( conv1 === true ) {\n\t\t\t\t\t\t\t\tconv = conv2;\n\t\t\t\t\t\t\t} else if ( conv2 === true ) {\n\t\t\t\t\t\t\t\tconv = conv1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we found no converter, dispatch an error\n\t\t\tif ( !( conv || conv2 ) ) {\n\t\t\t\tjQuery.error( \"No conversion from \" + conversion.replace(\" \",\" to \") );\n\t\t\t}\n\t\t\t// If found converter is not an equivalence\n\t\t\tif ( conv !== true ) {\n\t\t\t\t// Convert with 1 or 2 converters accordingly\n\t\t\t\tresponse = conv ? conv( response ) : conv2( conv1(response) );\n\t\t\t}\n\t\t}\n\t}\n\treturn response;\n}\n\n\n\n\nvar jsc = jQuery.now(),\n\tjsre = /(\\=)\\?(&|$)|()\\?\\?()/i;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\treturn jQuery.expando + \"_\" + ( jsc++ );\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar dataIsString = ( typeof s.data === \"string\" );\n\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" ||\n\t\toriginalSettings.jsonpCallback ||\n\t\toriginalSettings.jsonp != null ||\n\t\ts.jsonp !== false && ( jsre.test( s.url ) ||\n\t\t\t\tdataIsString && jsre.test( s.data ) ) ) {\n\n\t\tvar responseContainer,\n\t\t\tjsonpCallback = s.jsonpCallback =\n\t\t\t\tjQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,\n\t\t\tprevious = window[ jsonpCallback ],\n\t\t\turl = s.url,\n\t\t\tdata = s.data,\n\t\t\treplace = \"$1\" + jsonpCallback + \"$2\",\n\t\t\tcleanUp = function() {\n\t\t\t\t// Set callback back to previous value\n\t\t\t\twindow[ jsonpCallback ] = previous;\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( previous ) ) {\n\t\t\t\t\twindow[ jsonpCallback ]( responseContainer[ 0 ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( s.jsonp !== false ) {\n\t\t\turl = url.replace( jsre, replace );\n\t\t\tif ( s.url === url ) {\n\t\t\t\tif ( dataIsString ) {\n\t\t\t\t\tdata = data.replace( jsre, replace );\n\t\t\t\t}\n\t\t\t\tif ( s.data === data ) {\n\t\t\t\t\t// Add callback manually\n\t\t\t\t\turl += (/\\?/.test( url ) ? \"&\" : \"?\") + s.jsonp + \"=\" + jsonpCallback;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts.url = url;\n\t\ts.data = data;\n\n\t\t// Install callback\n\t\twindow[ jsonpCallback ] = function( response ) {\n\t\t\tresponseContainer = [ response ];\n\t\t};\n\n\t\t// Install cleanUp function\n\t\tjqXHR.then( cleanUp, cleanUp );\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( jsonpCallback + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar // #5280: next active xhr id and list of active xhrs' callbacks\n\txhrId = jQuery.now(),\n\txhrCallbacks,\n\n\t// XHR used to determine supports properties\n\ttestXHR;\n\n// #5280: Internet Explorer will keep connections alive if we don't abort on unload\nfunction xhrOnUnloadAbort() {\n\tjQuery( window ).unload(function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Test if we can create an xhr object\ntestXHR = jQuery.ajaxSettings.xhr();\njQuery.support.ajax = !!testXHR;\n\n// Does this browser support crossDomain XHR requests\njQuery.support.cors = testXHR && ( \"withCredentials\" in testXHR );\n\n// No need for the temporary xhr anymore\ntestXHR = undefined;\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar xhr = s.xhr(),\n\t\t\t\t\t\thandle,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Requested-With header\n\t\t\t\t\t// Not set for crossDomain requests with no content\n\t\t\t\t\t// (see why at http://trac.dojotoolkit.org/ticket/9486)\n\t\t\t\t\t// Won't change header if already provided\n\t\t\t\t\tif ( !( s.crossDomain && !s.hasContent ) && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occured\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t// if we're in sync mode or it's in cache\n\t\t\t\t\t// and has been retrieved directly (IE6 & IE7)\n\t\t\t\t\t// we need to manually fire the callback\n\t\t\t\t\tif ( !s.async || xhr.readyState === 4 ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\txhrOnUnloadAbort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\thandle = xhrId++;\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ handle ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n\n\n\nvar elemdisplay = {},\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = /^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, easing, callback ) {\n\t\tvar elem, display;\n\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t\t// being hidden by cascaded rules or not\n\t\t\t\tif ( !jQuery._data(elem, \"olddisplay\") && display === \"none\" ) {\n\t\t\t\t\tdisplay = elem.style.display = \"\";\n\t\t\t\t}\n\n\t\t\t\t// Set elements which have been overridden with display: none\n\t\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t\t// for such an element\n\t\t\t\tif ( display === \"\" && jQuery.css( elem, \"display\" ) === \"none\" ) {\n\t\t\t\t\tjQuery._data(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of most of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\telem = this[i];\n\t\t\t\tdisplay = elem.style.display;\n\n\t\t\t\tif ( display === \"\" || display === \"none\" ) {\n\t\t\t\t\telem.style.display = jQuery._data(elem, \"olddisplay\") || \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, easing, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, easing, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, j = this.length; i < j; i++ ) {\n\t\t\t\tvar display = jQuery.css( this[i], \"display\" );\n\n\t\t\t\tif ( display !== \"none\" && !jQuery._data( this[i], \"olddisplay\" ) ) {\n\t\t\t\t\tjQuery._data( this[i], \"olddisplay\", display );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( i = 0; i < j; i++ ) {\n\t\t\t\tthis[i].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2, callback ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2, callback);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, easing, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, easing, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\t// XXX 'this' does not always have a nodeName when running the\n\t\t\t// test suite\n\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\tisElement = this.nodeType === 1,\n\t\t\t\thidden = isElement && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = jQuery.camelCase( p );\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( isElement && ( p === \"height\" || p === \"width\" ) ) {\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\t// Record all 3 overflow attributes because IE does not\n\t\t\t\t\t// change the overflow attribute when overflowX and\n\t\t\t\t\t// overflowY are set to the same value\n\t\t\t\t\topt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];\n\n\t\t\t\t\t// Set display property to inline-block for height/width\n\t\t\t\t\t// animations on inline elements that are having width/height\n\t\t\t\t\t// animated\n\t\t\t\t\tif ( jQuery.css( this, \"display\" ) === \"inline\" &&\n\t\t\t\t\t\t\tjQuery.css( this, \"float\" ) === \"none\" ) {\n\t\t\t\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout ) {\n\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar display = defaultDisplay(this.nodeName);\n\n\t\t\t\t\t\t\t// inline-level elements accept inline-block;\n\t\t\t\t\t\t\t// block-level elements need to be inline with layout\n\t\t\t\t\t\t\tif ( display === \"inline\" ) {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline-block\";\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.style.display = \"inline\";\n\t\t\t\t\t\t\t\tthis.style.zoom = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur();\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ name ] ? \"\" : \"px\" );\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tjQuery.style( self, name, (end || 1) + unit);\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur()) * start;\n\t\t\t\t\t\t\tjQuery.style( self, name, start + unit);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\t},\n\n\t// Get the current size\n\tcur: function() {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar parsed,\n\t\t\tr = jQuery.css( this.elem, this.prop );\n\t\t// Empty strings, null, undefined and \"auto\" are converted to 0,\n\t\t// complex values such as \"rotate(1rad)\" are returned as is,\n\t\t// simple values such as \"10px\" are parsed to Float.\n\t\treturn isNaN( parsed = parseFloat( r ) ) ? !r || r === \"auto\" ? 0 : r : parsed;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tvar self = this,\n\t\t\tfx = jQuery.fx;\n\n\t\tthis.startTime = jQuery.now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? \"\" : \"px\" );\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(fx.tick, fx.interval);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = jQuery.now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\t// Reset the overflow\n\t\t\t\tif ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {\n\t\t\t\t\tvar elem = this.elem,\n\t\t\t\t\t\toptions = this.options;\n\n\t\t\t\t\tjQuery.each( [ \"\", \"X\", \"Y\" ], function (index, value) {\n\t\t\t\t\t\telem.style[ \"overflow\" + value ] = options.overflow[index];\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style( this.elem, p, this.options.orig[p] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\n\tinterval: 13,\n\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\n\tspeeds: {\n\t\tslow: 600,\n\t\tfast: 200,\n\t\t// Default speed\n\t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style( fx.elem, \"opacity\", fx.now );\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction defaultDisplay( nodeName ) {\n\tif ( !elemdisplay[ nodeName ] ) {\n\t\tvar elem = jQuery(\"<\" + nodeName + \">\").appendTo(\"body\"),\n\t\t\tdisplay = elem.css(\"display\");\n\n\t\telem.remove();\n\n\t\tif ( display === \"none\" || display === \"\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn elemdisplay[ nodeName ];\n}\n\n\n\n\nvar rtable = /^t(?:able|d|h)$/i,\n\trroot = /^(?:body|html)$/i;\n\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0], box;\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\ttry {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t} catch(e) {}\n\n\t\tvar doc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure we're not dealing with a disconnected DOM node\n\t\tif ( !box || !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box ? { top: box.top, left: box.left } : { top: 0, left: 0 };\n\t\t}\n\n\t\tvar body = doc.body,\n\t\t\twin = getWindow(doc),\n\t\t\tclientTop  = docElem.clientTop  || body.clientTop  || 0,\n\t\t\tclientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\tscrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),\n\t\t\tscrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),\n\t\t\ttop  = box.top  + scrollTop  - clientTop,\n\t\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar computedStyle,\n\t\t\toffsetParent = elem.offsetParent,\n\t\t\tprevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tdocElem = doc.documentElement,\n\t\t\tbody = doc.body,\n\t\t\tdefaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop,\n\t\t\tleft = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent;\n\t\t\t\toffsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, \"marginTop\") ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\";\n\t\tcheckDiv.style.top = \"20px\";\n\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\";\n\t\tinnerDiv.style.position = \"relative\";\n\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = (position === \"absolute\" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is absolute\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t}\n\n\t\tcurTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;\n\t\tcurLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif (options.top != null) {\n\t\t\tprops.top = (options.top - curOffset.top) + curTop;\n\t\t}\n\t\tif (options.left != null) {\n\t\t\tprops.left = (options.left - curOffset.left) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\ti ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\n\n\n\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, \"padding\" ) ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tparseFloat( jQuery.css( this[0], type, margin ? \"margin\" : \"border\" ) ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\t// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat\n\t\t\tvar docElemProp = elem.document.documentElement[ \"client\" + name ];\n\t\t\treturn elem.document.compatMode === \"CSS1Compat\" && docElemProp ||\n\t\t\t\telem.document.body[ \"client\" + name ] || docElemProp;\n\n\t\t// Get document width or height\n\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\treturn Math.max(\n\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t);\n\n\t\t// Get or set width or height on the element\n\t\t} else if ( size === undefined ) {\n\t\t\tvar orig = jQuery.css( elem, type ),\n\t\t\t\tret = parseFloat( orig );\n\n\t\t\treturn jQuery.isNaN( ret ) ? orig : ret;\n\n\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t} else {\n\t\t\treturn this.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t\t}\n\t};\n\n});\n\n\nwindow.jQuery = window.$ = jQuery;\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shBrushJScript.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\n;(function()\n{\n\t// CommonJS\n\ttypeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;\n\n\tfunction Brush()\n\t{\n\t\tvar keywords =\t'break case catch continue ' +\n\t\t\t\t\t\t'default delete do else false  ' +\n\t\t\t\t\t\t'for function if in instanceof ' +\n\t\t\t\t\t\t'new null return super switch ' +\n\t\t\t\t\t\t'this throw true try typeof var while with'\n\t\t\t\t\t\t;\n\n\t\tvar r = SyntaxHighlighter.regexLib;\n\t\t\n\t\tthis.regexList = [\n\t\t\t{ regex: r.multiLineDoubleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// double quoted strings\n\t\t\t{ regex: r.multiLineSingleQuotedString,\t\t\t\t\tcss: 'string' },\t\t\t// single quoted strings\n\t\t\t{ regex: r.singleLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// one line comments\n\t\t\t{ regex: r.multiLineCComments,\t\t\t\t\t\t\tcss: 'comments' },\t\t\t// multiline comments\n\t\t\t{ regex: /\\s*#.*/gm,\t\t\t\t\t\t\t\t\tcss: 'preprocessor' },\t\t// preprocessor tags like #region and #endregion\n\t\t\t{ regex: new RegExp(this.getKeywords(keywords), 'gm'),\tcss: 'keyword' }\t\t\t// keywords\n\t\t\t];\n\t\n\t\tthis.forHtmlScript(r.scriptScriptTags);\n\t};\n\n\tBrush.prototype\t= new SyntaxHighlighter.Highlighter();\n\tBrush.aliases\t= ['js', 'jscript', 'javascript'];\n\n\tSyntaxHighlighter.brushes.JScript = Brush;\n\n\t// CommonJS\n\ttypeof(exports) != 'undefined' ? exports.Brush = Brush : null;\n})();\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/js/shCore.js",
    "content": "/**\n * SyntaxHighlighter\n * http://alexgorbatchev.com/SyntaxHighlighter\n *\n * SyntaxHighlighter is donationware. If you are using it, please donate.\n * http://alexgorbatchev.com/SyntaxHighlighter/donate.html\n *\n * @version\n * 3.0.83 (July 02 2010)\n * \n * @copyright\n * Copyright (C) 2004-2010 Alex Gorbatchev.\n *\n * @license\n * Dual licensed under the MIT and GPL licenses.\n */\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('K M;I(M)1S 2U(\"2a\\'t 4k M 4K 2g 3l 4G 4H\");(6(){6 r(f,e){I(!M.1R(f))1S 3m(\"3s 15 4R\");K a=f.1w;f=M(f.1m,t(f)+(e||\"\"));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?\"g\":\"\")+(f.4s?\"i\":\"\")+(f.4p?\"m\":\"\")+(f.4v?\"x\":\"\")+(f.3n?\"y\":\"\")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m(\"2a\\'t 5r 5I 5F 5B 5C 15 5E 5p\");H r(f)}I(v)1S 2U(\"2a\\'t W 3l M 59 5m 5g 5x 5i\");e=e||\"\";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h===\"[\")b=M.2I;Y I(h===\"]\")b=M.1B;a.U(h);c++}a=15(a.1K(\"\"),n.Q.W(e,w,\"\"));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v=\"1.5.0\";M.2I=1;M.1B=2;K C=/\\\\$(?:(\\\\d\\\\d?|[$&`\\'])|{([$\\\\w]+)})/g,w=/[^5h]+|([\\\\s\\\\S])(?=[\\\\s\\\\S]*\\\\1)/g,A=/^(?:[?*+]|{\\\\d+(?:,\\\\d*)?})\\\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,\"\")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,\"\");H!f.12}(),y=6(){K f=/x/g;n.Q.W(\"x\",f,\"\");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S]))/;z[M.1B]=/^(?:\\\\\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\\\d*|x[\\\\29-26-f]{2}|u[\\\\29-26-f]{4}|c[A-3o-z]|[\\\\s\\\\S])|\\\\(\\\\?[:=!]|[?*+]\\\\?|{\\\\d+(?:,\\\\d*)?}\\\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,\"g\"+(E?\"y\":\"\")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+\"/\"+(e||\"\");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,\"g\")};M.5l=6(f){H f.Q(/[-[\\\\]{}()*+?.,\\\\\\\\^$|#\\\\s]/g,\"\\\\\\\\$&\")};M.5e=6(f,e,a,b){e=r(e,\"g\"+(b&&E?\"y\":\"\"));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U(\"2a\\'t 55 1h 54 3q\")}};M.1R=6(f){H 53.Z.1q.W(f)===\"[2m 15]\"};M.3p=6(f,e,a,b){O(K c=r(e,\"g\"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,\"g\"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||\"\":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,\"\")>-1){a=15(J.1m,n.Q.W(t(J),\"g\",\"\"));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()===\"3f\"&&e.1i(\"${\")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+=\"\";I(1j e===\"6\")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+\"\";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24\"$\":H\"$\";24\"&\":H d[0];24\"`\":H d[d.L-1].1a(0,d[d.L-2]);24\"\\'\":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i=\"\";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||\"\":\"$\")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+\"\",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,\"\")||h)b.U(\"\")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\\\(\\\\?#[^)]*\\\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"});M.1h(/\\\\((?!\\\\?)/,6(){J.19.U(N);H\"(\"});M.1h(/\\\\(\\\\?<([$\\\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H\"(\"});M.1h(/\\\\\\\\k<([\\\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?\"\\\\\\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?\"\":\"(?:)\"):f[0]});M.1h(/\\\\[\\\\^?]/,6(f){H f[0]===\"[]\"?\"\\\\\\\\b\\\\\\\\B\":\"[\\\\\\\\s\\\\\\\\S]\"});M.1h(/^\\\\(\\\\?([5A]+)\\\\)/,6(f){J.3d(f[1]);H\"\"});M.1h(/(?:\\\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?\"\":\"(?:)\"},M.1B,6(){H J.2K(\"x\")});M.1h(/\\\\./,6(){H\"[\\\\\\\\s\\\\\\\\S]\"},M.1B,6(){H J.2K(\"s\")})})();1j 2e!=\"1d\"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=\" \"+b)}6 t(a){H a.1i(\"3e\")==0?a:\"3e\"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={\"#\":\"1c\",\".\":\"1l\"}[b.1o(0,1)]||\"3h\",g,i;g=h!=\"3h\"?b.1o(1):b.5u();I((a[h]||\"\").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g(\"4U\"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e(\"\\\\n\"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K(\"\\\\n\")}6 u(a,b){I(a==N||a.L==0||a==\"\\\\n\")H a;a=a.Q(/</g,\"&1y;\");a=a.Q(/ {2,}/g,6(c){O(K d=\"\",h=0;h<c.L-1;h++)d+=e.13.1W;H d+\" \"});I(b!=N)a=v(a,6(c){I(c.L==0)H\"\";K d=\"\";c=c.Q(/^(&2s;| )+/,6(h){d=h;H\"\"});I(c.L==0)H d;H d+\\'<17 1g=\"\\'+b+\\'\">\\'+c+\"</17>\"});H a}6 n(a,b){a.1e(\"\\\\n\");O(K c=\"\",d=0;d<50;d++)c+=\"                    \";H a=v(a,6(h){I(h.1i(\"\\\\t\")==-1)H h;O(K g=0;(g=h.1i(\"\\\\t\"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\\\s+|\\\\s+$/g,\"\")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i==\"3f\")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d=\"\",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\\'<a 2h=\"\\'+c+\\'\">\\'+c+\"</a>\"+d})}6 z(){O(K a=1E.36(\"1k\"),b=[],c=0;c<a.L;c++)a[c].3s==\"20\"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,\".20\",R);a=p(a,\".3O\",R);K c=1E.4i(\"3t\");I(!(!a||!b||p(a,\"3t\"))){B(b.1c);r(b,\"1m\");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K(\"\\\\r\");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,\"4u\",6(){c.2G.4E(c);b.1l=b.1l.Q(\"1m\",\"\")})}}I(1j 3F!=\"1d\"&&1j M==\"1d\")M=3F(\"M\").M;K e={2v:{\"1g-27\":\"\",\"2i-1s\":1,\"2z-1s-2t\":11,1M:N,1t:N,\"42-45\":R,\"43-22\":4,1u:R,16:R,\"3V-17\":R,2l:11,\"41-40\":R,2k:11,\"1z-1k\":11},13:{1W:\"&2s;\",2M:R,46:11,44:11,34:\"4n\",1x:{21:\"4o 1m\",2P:\"?\",1X:\"1v\\\\n\\\\n\",3E:\"4r\\'t 4t 1D O: \",4g:\"4m 4B\\'t 51 O 1z-1k 4F: \",37:\\'<!4T 1z 4S \"-//4V//3H 4W 1.0 4Z//4Y\" \"1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J\"><1z 4I=\"1Z://2y.3L.3K/4L/5L\"><3J><4N 1Z-4M=\"5G-5M\" 6K=\"2O/1z; 6J=6I-8\" /><1t>6L 1v</1t></3J><3B 1L=\"25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;\"><T 1L=\"2O-3D:3C;3w-32:1.6z;\"><T 1L=\"25-22:6A-6E;\">1v</T><T 1L=\"25-22:.6C;3w-6B:6R;\"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h=\"1Z://3u.2w/1v\" 1F=\"38\" 1L=\"2f:#3y\">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h=\"6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O\" 1L=\"2f:#3y\">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//2c,6m:/\\\\/\\\\/.*$/2c,6l:/#.*$/2c,6k:/\"([^\\\\\\\\\"\\\\n]|\\\\\\\\.)*\"/g,6o:/\\'([^\\\\\\\\\\'\\\\n]|\\\\\\\\.)*\\'/g,6p:1f M(\\'\"([^\\\\\\\\\\\\\\\\\"]|\\\\\\\\\\\\\\\\.)*\"\\',\"3z\"),6s:1f M(\"\\'([^\\\\\\\\\\\\\\\\\\']|\\\\\\\\\\\\\\\\.)*\\'\",\"3z\"),6q:/(&1y;|<)!--[\\\\s\\\\S]*?--(&1G;|>)/2c,3M:/\\\\w+:\\\\/\\\\/[\\\\w-.\\\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\\\?=?/g,1b:/\\\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\\\/\\\\s*1k\\\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\\'<T 1g=\"16\">\\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+=\"</T>\";H c},2o:6(a,b,c){H\\'<2W><a 2h=\"#\" 1g=\"6e 6h\\'+b+\" \"+b+\\'\">\\'+c+\"</a></2W>\"},2b:6(a){K b=a.1F,c=b.1l||\"\";b=B(p(b,\".20\",R).1c);K d=6(h){H(h=15(h+\"6f(\\\\\\\\w+)\").X(c))?h[1]:N}(\"6g\");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:[\"21\",\"2P\"],21:{1H:6(a){I(a.V(\"2l\")!=R)H\"\";K b=a.V(\"1t\");H e.16.2o(a,\"21\",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q(\"47\",\"\")}},2P:{2B:6(){K a=\"68=0\";a+=\", 18=\"+(31.30-33)/2+\", 32=\"+(31.2Z-2Y)/2+\", 30=33, 2Z=2Y\";a=a.Q(/^,/,\"\");a=1P.6Z(\"\",\"38\",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M(\"^\\\\\\\\[(?<2V>(.*?))\\\\\\\\]$\"),s=1f M(\"(?<27>[\\\\\\\\w-]+)\\\\\\\\s*:\\\\\\\\s*(?<1T>[\\\\\\\\w-%#]+|\\\\\\\\[.*?\\\\\\\\]|\\\\\".*?\\\\\"|\\'.*?\\')\\\\\\\\s*;?\",\"g\");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\\'\"]|[\\'\"]$/g,\"\");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\\\s*,\\\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k[\"1z-1k\"]==\"R\"||e.2v[\"1z-1k\"]==R){d=1f e.4l(j);j=\"4O\"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i(\"<![6G[\")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i(\"]]\\\\>\")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||\"\")!=\"\")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||\"\")!=\"\")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,\"4k\",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i=\"2F 1H 2Q\".1e(\" \");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={\"R\":R,\"11\":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]==\"2m\")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V(\"2i-1s\"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V(\"1M\",[]);I(1j b!=\"2m\"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=[\"1s\",\"6i\"+b,\"P\"+a,\"6r\"+(b%2==0?1:2).1q()];J.3U(b)&&a.U(\"67\");b==0&&a.U(\"1N\");H\\'<T 1g=\"\\'+a.1K(\" \")+\\'\">\\'+c+\"</T>\"},3Q:6(a,b){K c=\"\",d=a.1e(\"\\\\n\").L,h=2u(J.V(\"2i-1s\")),g=J.V(\"2z-1s-2t\");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l=\"0\"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e(\"\\\\n\");J.V(\"2z-1s-2t\");K d=2u(J.V(\"2i-1s\"));a=\"\";O(K h=J.V(\"1D\"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(\" \",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\\'<17 1g=\"\\'+h+\\' 5N\">\\'+j+\"</17>\":\"\")+i)}H a},4f:6(a){H a?\"<4a>\"+a+\"</4a>\":\"\"},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+\" \":\"\"}O(K d=0,h=\"\",g=J.V(\"1D\",\"\"),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+\"48\")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+\"48\");H h},1H:6(a){K b=\"\",c=[\"20\"],d;I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11;1l=\"20\";J.V(\"2l\")==R&&c.U(\"47\");I((1u=J.V(\"1u\"))==11)c.U(\"6S\");c.U(J.V(\"1g-27\"));c.U(J.V(\"1D\"));a=a.Q(/^[ ]*[\\\\n]+|[\\\\n]*[ ]*$/g,\"\").Q(/\\\\r/g,\" \");b=J.V(\"43-22\");I(J.V(\"42-45\")==R)a=n(a,b);Y{O(K h=\"\",g=0;g<b;g++)h+=\" \";a=a.Q(/\\\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\\\s*\\\\/?>|&1y;2R\\\\s*\\\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,\"\\\\n\");I(e.13.44==R)b=b.Q(h,\"\");b=b.1e(\"\\\\n\");h=/^\\\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K(\"\\\\n\")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V(\"41-40\"))b=E(b);1j 2H!=\"1d\"&&2H.3S&&2H.3S.1C(/5s/)&&c.U(\"5t\");H b=\\'<T 1c=\"\\'+t(J.1c)+\\'\" 1g=\"\\'+c.1K(\" \")+\\'\">\\'+(J.V(\"16\")?e.16.1H(J):\"\")+\\'<3Z 5z=\"0\" 5H=\"0\" 5J=\"0\">\\'+J.4f(J.V(\"1t\"))+\"<3T><3P>\"+(1u?\\'<2d 1g=\"1u\">\\'+J.3Q(a)+\"</2d>\":\"\")+\\'<2d 1g=\"17\"><T 1g=\"3O\">\\'+b+\"</T></2d></3P></3T></3Z></T>\"},2F:6(a){I(a===N)a=\"\";J.17=a;K b=J.3Y(\"T\");b.3X=J.1H(a);J.V(\"16\")&&w(p(b,\".16\"),\"5c\",e.16.2b);J.V(\"3V-17\")&&w(p(b,\".17\"),\"56\",f);H b},2Q:6(a){J.1c=\"\"+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V(\"2k\")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\\\s+|\\\\s+$/g,\"\").Q(/\\\\s+/g,\"|\");H\"\\\\\\\\b(?:\"+a+\")\\\\\\\\b\"},5f:6(a){J.28={18:{1I:a.18,23:\"1k\"},1b:{1I:a.1b,23:\"1k\"},17:1f M(\"(?<18>\"+a.18.1m+\")(?<17>.*?)(?<1b>\"+a.1b.1m+\")\",\"5o\")}}};H e}();1j 2e!=\"1d\"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/docs/media/license/Syntax Highlighter",
    "content": "Copyright (c) 2003, 2004 Jim Weirich\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/media/js/dataTables.scroller.js",
    "content": "/**\n * @summary     Scroller\n * @description Virtual rendering for DataTables\n * @file        Scroller.js\n * @version     1.1.0\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @license     GPL v2 or BSD 3 point style\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2011-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n(/** @lends <global> */function($, window, document) {\n\n\n/** \n * Scroller is a virtual rendering plug-in for DataTables which allows large\n * datasets to be drawn on screen every quickly. What the virtual rendering means\n * is that only the visible portion of the table (and a bit to either side to make\n * the scrolling smooth) is drawn, while the scrolling container gives the \n * visual impression that the whole table is visible. This is done by making use\n * of the pagination abilities of DataTables and moving the table around in the\n * scrolling container DataTables adds to the page. The scrolling container is\n * forced to the height it would be for the full table display using an extra \n * element. \n * \n * Note that rows in the table MUST all be the same height. Information in a cell\n * which expands on to multiple lines will cause some odd behaviour in the scrolling.\n *\n * Scroller is initialised by simply including the letter 'S' in the sDom for the\n * table you want to have this feature enabled on. Note that the 'S' must come\n * AFTER the 't' parameter in sDom.\n * \n * Key features include:\n *   <ul class=\"limit_length\">\n *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>\n *     <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>\n *     <li>Correct visual scrolling implementation, similar to \"infinite scrolling\" in DataTable core</li>\n *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>\n *     <li>Easy to use</li>\n *   </ul>\n *\n *  @class\n *  @constructor\n *  @param {object} oDT DataTables settings object\n *  @param {object} [oOpts={}] Configuration object for FixedColumns. Options are defined by {@link Scroller.oDefaults}\n * \n *  @requires jQuery 1.4+\n *  @requires DataTables 1.9.0+\n * \n *  @example\n * \t\t$(document).ready(function() {\n * \t\t\t$('#example').dataTable( {\n * \t\t\t\t\"sScrollY\": \"200px\",\n * \t\t\t\t\"sAjaxSource\": \"media/dataset/large.txt\",\n * \t\t\t\t\"sDom\": \"frtiS\",\n * \t\t\t\t\"bDeferRender\": true\n * \t\t\t} );\n * \t\t} );\n */\nvar Scroller = function ( oDTSettings, oOpts ) {\n\t/* Sanity check - you just know it will happen */\n\tif ( ! this instanceof Scroller )\n\t{\n\t\talert( \"Scroller warning: Scroller must be initialised with the 'new' keyword.\" );\n\t\treturn;\n\t}\n\t\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\t/**\n\t * Settings object which contains customisable information for the Scroller instance\n\t * @namespace\n\t * @extends Scroller.DEFAULTS\n\t */\n\tthis.s = {\n\t\t/** \n\t\t * DataTables settings object\n\t\t *  @type     object\n\t\t *  @default  Passed in as first parameter to constructor\n\t\t */\n\t\t\"dt\": oDTSettings,\n\t\t\n\t\t/** \n\t\t * Pixel location of the top of the drawn table in the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"tableTop\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the bottom of the drawn table in the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"tableBottom\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the boundary for when the next data set should be loaded and drawn\n\t\t * when scrolling up the way.\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t *  @private\n\t\t */\n\t\t\"redrawTop\": 0,\n\t\t\n\t\t/** \n\t\t * Pixel location of the boundary for when the next data set should be loaded and drawn\n\t\t * when scrolling down the way. Note that this is actually caluated as the offset from\n\t\t * the top.\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t *  @private\n\t\t */\n\t\t\"redrawBottom\": 0,\n\t\t\n\t\t/** \n\t\t * Height of rows in the table\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"rowHeight\": null,\n\t\t\n\t\t/** \n\t\t * Auto row height or not indicator\n\t\t *  @type     bool\n\t\t *  @default  0\n\t\t */\n\t\t\"autoHeight\": true,\n\t\t\n\t\t/** \n\t\t * Pixel height of the viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"viewportHeight\": 0,\n\t\t\n\t\t/** \n\t\t * Number of rows calculated as visible in the visible viewport\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"viewportRows\": 0,\n\t\t\n\t\t/** \n\t\t * setTimeout reference for state saving, used when state saving is enabled in the DataTable\n\t\t * and when the user scrolls the viewport in order to stop the cookie set taking too much\n\t\t * CPU!\n\t\t *  @type     int\n\t\t *  @default  0\n\t\t */\n\t\t\"stateTO\": null,\n\t\t\n\t\t/** \n\t\t * setTimeout reference for the redraw, used when server-side processing is enabled in the\n\t\t * DataTables in order to prevent DoSing the server\n\t\t *  @type     int\n\t\t *  @default  null\n\t\t */\n\t\t\"drawTO\": null\n\t};\n\tthis.s = $.extend( this.s, Scroller.oDefaults, oOpts );\n\t\n\t/**\n\t * DOM elements used by the class instance\n\t * @namespace\n\t * \n\t */\n\tthis.dom = {\n\t\t\"force\": document.createElement('div'),\n\t\t\"scroller\": null,\n\t\t\"table\": null\n\t};\n\n\t/* Attach the instance to the DataTables instance so it can be accessed */\n\tthis.s.dt.oScroller = this;\n\t\n\t/* Let's do it */\n\tthis._fnConstruct();\n};\n\n\n\nScroller.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Calculate the pixel position from the top of the scrolling container for a given row\n\t *  @param {int} iRow Row number to calculate the position of\n\t *  @returns {int} Pixels\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Find where row 25 is\n\t *          alert( o.oScroller.fnRowToPixels( 25 ) );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnRowToPixels\": function ( iRow )\n\t{\n\t\treturn iRow * this.s.rowHeight;\n\t},\n\n\n\t/**\n\t * Calculate the row number that will be found at the given pixel position (y-scroll)\n\t *  @param {int} iPixels Offset from top to caluclate the row number of\n\t *  @returns {int} Row index\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Find what row number is at 500px\n\t *          alert( o.oScroller.fnPixelsToRow( 500 ) );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnPixelsToRow\": function ( iPixels )\n\t{\n\t\treturn parseInt( iPixels / this.s.rowHeight, 10 );\n\t},\n\n\n\t/**\n\t * Calculate the row number that will be found at the given pixel position (y-scroll)\n\t *  @param {int} iRow Row index to scroll to\n\t *  @param {bool} [bAnimate=true] Animate the transision or not \n\t *  @returns {void}\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Immediately scroll to row 1000\n\t *          o.oScroller.fnScrollToRow( 1000 );\n\t *        }\n\t *      } );\n\t *      \n\t *      // Sometime later on use the following to scroll to row 500...\n\t *          var oSettings = $('#example').dataTable().fnSettings();\n\t *      oSettings.oScroller.fnScrollToRow( 500 );\n\t *    } );\n\t */\n\t\"fnScrollToRow\": function ( iRow, bAnimate )\n\t{\n\t\tvar px = this.fnRowToPixels( iRow );\n\t\tif ( typeof bAnimate == 'undefined' || bAnimate )\n\t\t{\n\t\t\t$(this.dom.scroller).animate( {\n\t\t\t\t\"scrollTop\": px\n\t\t\t} );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$(this.dom.scroller).scrollTop( px );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Calculate and store information about how many rows are to be displayed in the scrolling\n\t * viewport, based on current dimensions in the browser's rendering. This can be particularly\n\t * useful if the table is initially drawn in a hidden element - for example in a tab.\n\t *  @param {bool} [bRedraw=true] Redraw the table automatically after the recalculation, with\n\t *    the new dimentions forming the basis for the draw. \n\t *  @returns {void}\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      // Make the example container hidden to throw off the browser's sizing\n\t *      document.getElementById('container').style.display = \"none\";\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sAjaxSource\": \"media/dataset/large.txt\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"fnInitComplete\": function (o) {\n\t *          // Immediately scroll to row 1000\n\t *          o.oScroller.fnScrollToRow( 1000 );\n\t *        }\n\t *      } );\n\t *      \n\t *      setTimeout( function () {\n\t *        // Make the example container visible and recalculate the scroller sizes\n\t *        document.getElementById('container').style.display = \"block\";\n\t *        oTable.fnSettings().oScroller.fnMeasure();\n\t *      }, 3000 );\n\t */\n\t\"fnMeasure\": function ( bRedraw )\n\t{\n\t\tif ( this.s.autoHeight )\n\t\t{\n\t\t\tthis._fnCalcRowHeight();\n\t\t}\n\n\t\tthis.s.viewportHeight = $(this.dom.scroller).height();\n\t\tthis.s.viewportRows = parseInt( this.s.viewportHeight/this.s.rowHeight, 10 )+1;\n\t\tthis.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;\n\t\t\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\t\tconsole.log(\n\t\t\t\t\t'Row height: '+this.s.rowHeight +' '+\n\t\t\t\t\t'Viewport height: '+this.s.viewportHeight +' '+\n\t\t\t\t\t'Viewport rows: '+ this.s.viewportRows +' '+\n\t\t\t\t\t'Display rows: '+ this.s.dt._iDisplayLength\n\t\t\t\t);\n\t\t}\n\t\t\n\t\tif ( typeof bRedraw == 'undefined' || bRedraw )\n\t\t{\n\t\t\tthis.s.dt.oInstance.fnDraw();\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Initialisation for Scroller\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnConstruct\": function ()\n\t{\n\t\tvar that = this;\n\n\t\t/* Insert a div element that we can use to force the DT scrolling container to\n\t\t * the height that would be required if the whole table was being displayed\n\t\t */\n\t\tthis.dom.force.style.position = \"absolute\";\n\t\tthis.dom.force.style.top = \"0px\";\n\t\tthis.dom.force.style.left = \"0px\";\n\t\tthis.dom.force.style.width = \"1px\";\n\n\t\tthis.dom.scroller = $('div.'+this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];\n\t\tthis.dom.scroller.appendChild( this.dom.force );\n\t\tthis.dom.scroller.style.position = \"relative\";\n\n\t\tthis.dom.table = $('>table', this.dom.scroller)[0];\n\t\tthis.dom.table.style.position = \"absolute\";\n\t\tthis.dom.table.style.top = \"0px\";\n\t\tthis.dom.table.style.left = \"0px\";\n\n\t\t// Add class to 'announce' that we are a Scroller table\n\t\t$(this.s.dt.nTableWrapper).addClass('DTS');\n\n\t\t// Add a 'loading' indicator\n\t\tif ( this.s.loadingIndicator )\n\t\t{\n\t\t\t$(this.dom.scroller.parentNode)\n\t\t\t\t.css('position', 'relative')\n\t\t\t\t.append('<div class=\"DTS_Loading\">'+this.s.dt.oLanguage.sLoadingRecords+'</div>');\n\t\t}\n\n\t\t/* Initial size calculations */\n\t\tif ( this.s.rowHeight && this.s.rowHeight != 'auto' )\n\t\t{\n\t\t\tthis.s.autoHeight = false;\n\t\t}\n\t\tthis.fnMeasure( false );\n\n\t\t/* Scrolling callback to see if a page change is needed */\n\t\t$(this.dom.scroller).scroll( function () {\n\t\t\tthat._fnScroll.call( that );\n\t\t} );\n\n\t\t/* In iOS we catch the touchstart event incase the user tries to scroll\n\t\t * while the display is already scrolling\n\t\t */\n\t\t$(this.dom.scroller).bind('touchstart', function () {\n\t\t\tthat._fnScroll.call( that );\n\t\t} );\n\t\t\n\t\t/* Update the scroller when the DataTable is redrawn */\n\t\tthis.s.dt.aoDrawCallback.push( {\n\t\t\t\"fn\": function () {\n\t\t\t\tif ( that.s.dt.bInitialised ) {\n\t\t\t\t\tthat._fnDrawCallback.call( that );\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"sName\": \"Scroller\"\n\t\t} );\n\t\t\n\t\t/* Add a state saving parameter to the DT state saving so we can restore the exact\n\t\t * position of the scrolling\n\t\t */\n\t\tthis.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {\n\t\t\toData.iScroller = that.dom.scroller.scrollTop;\n\t\t}, \"Scroller_State\" );\n\t},\n\n\n\t/**\n\t * Scrolling function - fired whenever the scrolling position is changed. This method needs\n\t * to use the stored values to see if the table should be redrawn as we are moving towards\n\t * the end of the information that is currently drawn or not. If needed, then it will redraw\n\t * the table based on the new position.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnScroll\": function ()\n\t{\n\t\tvar \n\t\t\tthat = this,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiTopRow;\n\n\t\t/* If the table has been sorted or filtered, then we use the redraw that\n\t\t * DataTables as done, rather than performing our own\n\t\t */\n\t\tif ( this.s.dt.bFiltered || this.s.dt.bSorted )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\tconsole.log(\n\t\t\t\t'Scroll: '+iScrollTop+'px - boundaries: '+this.s.redrawTop+' / '+this.s.redrawBottom+'. '+\n\t\t\t\t' Showing rows '+this.fnPixelsToRow(iScrollTop)+\n\t\t\t\t' to '+this.fnPixelsToRow(iScrollTop+$(this.dom.scroller).height())+\n\t\t\t\t' in the viewport, with rows '+this.s.dt._iDisplayStart+\n\t\t\t\t' to '+(this.s.dt._iDisplayEnd)+' rendered by the DataTable'\n\t\t\t);\n\t\t}\n\n\t\t/* Update the table's information display for what is now in the viewport */\n\t\tthis._fnInfo();\n\n\t\t/* We dont' want to state save on every scroll event - that's heavy handed, so\n\t\t * use a timeout to update the state saving only when the scrolling has finished\n\t\t */\n\t\tclearTimeout( this.s.stateTO );\n\t\tthis.s.stateTO = setTimeout( function () {\n\t\t\tthat.s.dt.oApi._fnSaveState( that.s.dt );\n\t\t}, 250 );\n\n\t\t/* Check if the scroll point is outside the trigger boundary which would required\n\t\t * a DataTables redraw\n\t\t */\n\t\tif ( iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom )\n\t\t{\n\t\t\tvar preRows = ((this.s.displayBuffer-1)/2) * this.s.viewportRows;\n\t\t\tiTopRow = parseInt( iScrollTop / this.s.rowHeight, 10 ) - preRows;\n\t\t\tif ( iTopRow < 0 )\n\t\t\t{\n\t\t\t\t/* At the start of the table */\n\t\t\t\tiTopRow = 0;\n\t\t\t}\n\t\t\telse if ( iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\t/* At the end of the table */\n\t\t\t\tiTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;\n\t\t\t\tif ( iTopRow < 0 )\n\t\t\t\t{\n\t\t\t\t\tiTopRow = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( iTopRow % 2 !== 0 )\n\t\t\t{\n\t\t\t\t/* For the row-striping classes (odd/even) we want only to start on evens\n\t\t\t\t * otherwise the stripes will change between draws and look rubbish\n\t\t\t\t */\n\t\t\t\tiTopRow++;\n\t\t\t}\n\n\t\t\tif ( iTopRow != this.s.dt._iDisplayStart )\n\t\t\t{\n\t\t\t\t/* Cache the new table position for quick lookups */\n\t\t\t\tthis.s.tableTop = $(this.s.dt.nTable).offset().top;\n\t\t\t\tthis.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;\n\t\t\t\t\n\t\t\t\t/* Do the DataTables redraw based on the calculated start point - note that when\n\t\t\t\t * using server-side processing we introduce a small delay to not DoS the server...\n\t\t\t\t */\n\t\t\t\tif ( this.s.dt.oFeatures.bServerSide ) {\n\t\t\t\t\tclearTimeout( this.s.drawTO );\n\t\t\t\t\tthis.s.drawTO = setTimeout( function () {\n\t\t\t\t\t\tthat.s.dt._iDisplayStart = iTopRow;\n\t\t\t\t\t\tthat.s.dt.oApi._fnCalculateEnd( that.s.dt );\n\t\t\t\t\t\tthat.s.dt.oApi._fnDraw( that.s.dt );\n\t\t\t\t\t}, this.s.serverWait );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.s.dt._iDisplayStart = iTopRow;\n\t\t\t\t\tthis.s.dt.oApi._fnCalculateEnd( this.s.dt );\n\t\t\t\t\tthis.s.dt.oApi._fnDraw( this.s.dt );\n\t\t\t\t}\n\n\t\t\t\tif ( this.s.trace )\n\t\t\t\t{\n\t\t\t\t\tconsole.log( 'Scroll forcing redraw - top DT render row: '+ iTopRow );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/**\n\t * Draw callback function which is fired when the DataTable is redrawn. The main function of\n\t * this method is to position the drawn table correctly the scrolling container for the rows\n\t * that is displays as a result of the scrolling position.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnDrawCallback\": function ()\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiScrollBottom = iScrollTop + this.s.viewportHeight;\n\t\t\n\t\t/* Set the height of the scrolling forcer to be suitable for the number of rows\n\t\t * in this draw\n\t\t */\n\t\tthis.dom.force.style.height = (this.s.rowHeight * this.s.dt.fnRecordsDisplay())+\"px\";\n\t\t\n\t\t/* Calculate the position that the top of the table should be at */\n\t\tvar iTableTop = (this.s.rowHeight*this.s.dt._iDisplayStart);\n\t\tif ( this.s.dt._iDisplayStart === 0 )\n\t\t{\n\t\t\tiTableTop = 0;\n\t\t}\n\t\telse if ( this.s.dt._iDisplayStart === this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength )\n\t\t{\n\t\t\tiTableTop = this.s.rowHeight * this.s.dt._iDisplayStart;\n\t\t}\n\n\t\tthis.dom.table.style.top = iTableTop+\"px\";\n\n\t\t/* Cache some information for the scroller */\n\t\tthis.s.tableTop = iTableTop;\n\t\tthis.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;\n\n\t\tthis.s.redrawTop = iScrollTop - ( (iScrollTop - this.s.tableTop) * this.s.boundaryScale );\n\t\tthis.s.redrawBottom = iScrollTop + ( (this.s.tableBottom - iScrollBottom) * this.s.boundaryScale );\n\n\t\tif ( this.s.trace )\n\t\t{\n\t\t\tconsole.log(\n\t\t\t\t\"Table redraw. Table top: \"+iTableTop+\"px \"+\n\t\t\t\t\"Table bottom: \"+this.s.tableBottom+\" \"+\n\t\t\t\t\"Scroll boundary top: \"+this.s.redrawTop+\" \"+\n\t\t\t\t\"Scroll boundary bottom: \"+this.s.redrawBottom+\" \"+\n\t\t\t\t\"Rows drawn: \"+this.s.dt._iDisplayLength);\n\t\t}\n\n\t\t/* Because of the order of the DT callbacks, the info update will\n\t\t * take precidence over the one we want here. So a 'thread' break is\n\t\t * needed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\tthat._fnInfo.call( that );\n\t\t}, 0 );\n\n\t\t/* Restore the scrolling position that was saved by DataTable's state saving\n\t\t * Note that this is done on the second draw when data is Ajax sourced, and the\n\t\t * first draw when DOM soured\n\t\t */\n\t\tif ( this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&\n\t\t\t typeof this.s.dt.oLoadedState.iScroller != 'undefined' )\n\t\t{\n\t\t\tif ( (this.s.dt.sAjaxSource !== null && this.s.dt.iDraw == 2) ||\n\t\t\t     (this.s.dt.sAjaxSource === null && this.s.dt.iDraw == 1) )\n\t\t\t{\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\t$(that.dom.scroller).scrollTop( that.s.dt.oLoadedState.iScroller );\n\t\t\t\t\tthat.s.redrawTop = that.s.dt.oLoadedState.iScroller - (that.s.viewportHeight/2);\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/**\n\t * Automatic calculation of table row height. This is just a little tricky here as using\n\t * initialisation DataTables has tale the table out of the document, so we need to create\n\t * a new table and insert it into the document, calculate the row height and then whip the\n\t * table out.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnCalcRowHeight\": function ()\n\t{\n\t\tvar nTable = this.s.dt.nTable.cloneNode( false );\n\t\tvar nContainer = $(\n\t\t\t'<div class=\"'+this.s.dt.oClasses.sWrapper+' DTS\">'+\n\t\t\t\t'<div class=\"'+this.s.dt.oClasses.sScrollWrapper+'\">'+\n\t\t\t\t\t'<div class=\"'+this.s.dt.oClasses.sScrollBody+'\"></div>'+\n\t\t\t\t'</div>'+\n\t\t\t'</div>'\n\t\t)[0];\n\n\t\t$(nTable).append(\n\t\t\t'<tbody>'+\n\t\t\t\t'<tr>'+\n\t\t\t\t\t'<td>&nbsp;</td>'+\n\t\t\t\t'</tr>'+\n\t\t\t'</tbody>'\n\t\t);\n\n\t\t$('div.'+this.s.dt.oClasses.sScrollBody, nContainer).append( nTable );\n\n\t\tdocument.body.appendChild( nContainer );\n\t\tthis.s.rowHeight = $('tbody tr', nTable).outerHeight();\n\t\tdocument.body.removeChild( nContainer );\n\t},\n\n\n\t/**\n\t * Update any information elements that are controlled by the DataTable based on the scrolling\n\t * viewport and what rows are visible in it. This function basically acts in the same way as\n\t * _fnUpdateInfo in DataTables, and effectively replaces that function.\n\t *  @returns {void}\n\t *  @private\n\t */\n\t\"_fnInfo\": function ()\n\t{\n\t\tif ( !this.s.dt.oFeatures.bInfo )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar\n\t\t\tdt = this.s.dt,\n\t\t\tiScrollTop = this.dom.scroller.scrollTop,\n\t\t\tiStart = this.fnPixelsToRow(iScrollTop)+1, \n\t\t\tiMax = dt.fnRecordsTotal(),\n\t\t\tiTotal = dt.fnRecordsDisplay(),\n\t\t\tiPossibleEnd = this.fnPixelsToRow(iScrollTop+$(this.dom.scroller).height()),\n\t\t\tiEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,\n\t\t\tsStart = dt.fnFormatNumber( iStart ),\n\t\t\tsEnd = dt.fnFormatNumber( iEnd ),\n\t\t\tsMax = dt.fnFormatNumber( iMax ),\n\t\t\tsTotal = dt.fnFormatNumber( iTotal ),\n\t\t\tsOut;\n\t\t\n\t\tif ( dt.fnRecordsDisplay() === 0 && \n\t\t\t   dt.fnRecordsDisplay() == dt.fnRecordsTotal() )\n\t\t{\n\t\t\t/* Empty record set */\n\t\t\tsOut = dt.oLanguage.sInfoEmpty+ dt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse if ( dt.fnRecordsDisplay() === 0 )\n\t\t{\n\t\t\t/* Rmpty record set after filtering */\n\t\t\tsOut = dt.oLanguage.sInfoEmpty +' '+ \n\t\t\t\tdt.oLanguage.sInfoFiltered.replace('_MAX_', sMax)+\n\t\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse if ( dt.fnRecordsDisplay() == dt.fnRecordsTotal() )\n\t\t{\n\t\t\t/* Normal record set */\n\t\t\tsOut = dt.oLanguage.sInfo.\n\t\t\t\t\treplace('_START_', sStart).\n\t\t\t\t\treplace('_END_',   sEnd).\n\t\t\t\t\treplace('_TOTAL_', sTotal)+ \n\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Record set after filtering */\n\t\t\tsOut = dt.oLanguage.sInfo.\n\t\t\t\t\treplace('_START_', sStart).\n\t\t\t\t\treplace('_END_',   sEnd).\n\t\t\t\t\treplace('_TOTAL_', sTotal) +' '+ \n\t\t\t\tdt.oLanguage.sInfoFiltered.replace('_MAX_', \n\t\t\t\t\tdt.fnFormatNumber(dt.fnRecordsTotal()))+ \n\t\t\t\tdt.oLanguage.sInfoPostFix;\n\t\t}\n\t\t\n\t\tvar n = dt.aanFeatures.i;\n\t\tif ( typeof n != 'undefined' )\n\t\t{\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Statics\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Scroller default settings for initialisation\n *  @namespace\n *  @static\n */\nScroller.oDefaults = {\n\t/** \n\t * Indicate if Scroller show show trace information on the console or not. This can be \n\t * useful when debugging Scroller or if just curious as to what it is doing, but should\n\t * be turned off for production.\n\t *  @type     bool\n\t *  @default  false\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"trace\": true\n\t *        }\n\t *    } );\n\t */\n\t\"trace\": false,\n\n\t/** \n\t * Scroller will attempt to automatically calculate the height of rows for it's internal\n\t * calculations. However the height that is used can be overridden using this parameter.\n\t *  @type     int|string\n\t *  @default  auto\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"rowHeight\": 30\n\t *        }\n\t *    } );\n\t */\n\t\"rowHeight\": \"auto\",\n\n\t/** \n\t * When using server-side processing, Scroller will wait a small amount of time to allow\n\t * the scrolling to finish before requesting more data from the server. This prevents\n\t * you from DoSing your own server! The wait time can be configured by this parameter.\n\t *  @type     int\n\t *  @default  200\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"serverWait\": 100\n\t *        }\n\t *    } );\n\t */\n\t\"serverWait\": 200,\n\n\t/** \n\t * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch\n\t * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch\n\t * rows that will be shown in \"near scrolling\" (i.e. just beyond the current display area).\n\t * The value is based upon the number of rows that can be displayed in the viewport (i.e. \n\t * a value of 1), and will apply the display range to records before before and after the\n\t * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth\n\t * of rows before the current viewport, the current viewport's rows and 1 viewport's worth\n\t * of rows after the current viewport. Adjusting this value can be useful for ensuring \n\t * smooth scrolling based on your data set.\n\t *  @type     int\n\t *  @default  7\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"displayBuffer\": 10\n\t *        }\n\t *    } );\n\t */\n\t\"displayBuffer\": 9,\n\n\t/** \n\t * Scroller uses the boundary scaling factor to decide when to redraw the table - which it\n\t * typically does before you reach the end of the currently loaded data set (in order to\n\t * allow the data to look continuous to a user scrolling through the data). If given as 0\n\t * then the table will be redrawn whenever the viewport is scrolled, while 1 would not\n\t * redraw the table until the currently loaded data has all been shown. You will want \n\t * something in the middle - the default factor of 0.5 is usually suitable.\n\t *  @type     float\n\t *  @default  0.5\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"boundaryScale\": 0.75\n\t *        }\n\t *    } );\n\t */\n\t\"boundaryScale\": 0.5,\n\n\t/** \n\t * Show (or not) the loading element in the background of the table. Note that you should\n\t * include the dataTables.scroller.css file for this to be displayed correctly.\n\t *  @type     boolean\n\t *  @default  false\n\t *  @static\n\t *  @example\n\t *    var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"sDom\": \"frtiS\",\n\t *        \"bDeferRender\": true,\n\t *        \"oScroller\": {\n\t *          \"loadingIndicator\": true\n\t *        }\n\t *    } );\n\t */\n\t\"loadingIndicator\": false\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n/**\n * Name of this class\n *  @type     String\n *  @default  Scroller\n *  @static\n */\nScroller.prototype.CLASS = \"Scroller\";\n\n\n/**\n * Scroller version\n *  @type      String\n *  @default   See code\n *  @static\n */\nScroller.VERSION = \"1.1.0\";\nScroller.prototype.VERSION = Scroller.VERSION;\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n     typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n     $.fn.dataTableExt.fnVersionCheck('1.9.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar init = (typeof oDTSettings.oInit.oScroller == 'undefined') ?\n\t\t\t\t{} : oDTSettings.oInit.oScroller;\n\t\t\tvar oScroller = new Scroller( oDTSettings, init );\n\t\t\treturn oScroller.dom.wrapper;\n\t\t},\n\t\t\"cFeature\": \"S\",\n\t\t\"sFeature\": \"Scroller\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download\");\n}\n\n\n// Attach Scroller to DataTables so it can be accessed as an 'extra'\n$.fn.dataTable.Scroller = Scroller;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/server-side_processing.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/server_processing.php\",\n\t\t\t\t\t\"bServerSide\": true,\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"oScroller\": {\n\t\t\t\t\t\t\"loadingIndicator\": true\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller example - server-side processing\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>When using server-side processing, Scroller will wait a small amount of time to allow the scrolling to finish before requesting more data from the server (200mS by default). This prevents you from DoSing your own server! This example shows Scroller in action with a database of 10'000 records, although of course server-side processing can scale much larger if you require. In this example we also enable the <i>loadingIndicator</i> option of Scroller to show the end user what is happening when they scroll passed the currently loaded data.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/server_processing.php\",\n\t\t\"bServerSide\": true,\n\t\t\"sDom\": \"frtiS\",\n\t\t\"oScroller\": {\n\t\t\t\"loadingIndicator\": true\n\t\t}\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/Scroller/state_saving.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n\t<head>\n\t\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n\t\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"http://www.datatables.net/favicon.ico\" />\n\t\t\n\t\t<title>DataTables example</title>\n\t\t<style type=\"text/css\">\n\t\t\t@import \"../../media/css/demo_page.css\";\n\t\t\t@import \"../../media/css/demo_table.css\";\n\t\t\t@import \"media/css/dataTables.scroller.css\";\n\t\t</style>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"../../media/js/jquery.dataTables.js\"></script>\n\t\t<script type=\"text/javascript\" language=\"javascript\" src=\"media/js/dataTables.scroller.js\"></script>\n\t\t<script type=\"text/javascript\" charset=\"utf-8\">\n\t\t\t$(document).ready(function() {\n\t\t\t\tvar oTable = $('#example').dataTable( {\n\t\t\t\t\t\"sScrollY\": \"200px\",\n\t\t\t\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\t\t\t\"sDom\": \"frtiS\",\n\t\t\t\t\t\"bDeferRender\": true,\n\t\t\t\t\t\"bStateSave\": true\n\t\t\t\t} );\n\t\t\t} );\n\t\t</script>\n\t</head>\n\t<body id=\"dt_example\">\n\t\t<div id=\"container\" style=\"width:980px\">\n\t\t\t<div class=\"full_width big\">\n\t\t\t\tScroller with state saving\n\t\t\t</div>\n\t\t\t\n\t\t\t<h1>Preamble</h1>\n\t\t\t<p>Scroller will automatically integrate with DataTables in order to save the scrolling position of the table, if state saving is enabled in the DataTable (bStateSave). This example shows that in practice - to demonstrate, scroll the table and then reload the page.</p>\n\t\t\t\n\t\t\t<h1>Live example</h1>\n\t\t\t<div id=\"demo\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"display\" id=\"example\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>ID</th>\n\t\t\t<th>First name</th>\n\t\t\t<th>Last name</th>\n\t\t\t<th>ZIP</th>\n\t\t\t<th width=\"33%\">Country</th>\n\t\t</tr>\n\t</thead>\n</table>\n\t\t\t</div>\n\t\t\t<div class=\"spacer\"></div>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Initialisation code</h1>\n\t\t\t<pre>$(document).ready(function() {\n\tvar oTable = $('#example').dataTable( {\n\t\t\"sScrollY\": \"200px\",\n\t\t\"sAjaxSource\": \"media/data/2500.txt\",\n\t\t\"sDom\": \"frtiS\",\n\t\t\"bDeferRender\": true,\n\t\t\"bStateSave\": true\n\t} );\n} );</pre>\n\t\t\t\n\t\t\t\n\t\t\t<h1>Other examples</h1>\n\t\t\t<div class=\"demo_links\">\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"index.html\">Basic initialisation of Scroller</a></li>\n\t\t\t\t\t<li><a href=\"state_saving.html\">State saving</a></li>\n\t\t\t\t\t<li><a href=\"api_scrolling.html\">API - pragmatically move to a row</a></li>\n\t\t\t\t\t<li><a href=\"server-side_processing.html\">Server-side processing with Scroller</a></li>\n\t\t\t\t\t<li><a href=\"large_js_source.html\">50'000 rows in a table - client-side generated data</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t\n\t\t</div>\n\t</body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/as3/ZeroClipboard.as",
    "content": "﻿/* Compile using: mxmlc --target-player=10.0.0 ZeroClipboard.as */\npackage {\n\timport flash.display.Stage;\n\timport flash.display.Sprite;\n\timport flash.display.LoaderInfo;\n\timport flash.display.StageScaleMode;\n\timport flash.events.*;\n\timport flash.display.StageAlign;\n\timport flash.display.StageScaleMode;\n\timport flash.external.ExternalInterface;\n\timport flash.system.Security;\n\timport flash.utils.*;\n\timport flash.system.System;\n\timport flash.net.FileReference;\n\timport flash.net.FileFilter;\n \n\tpublic class ZeroClipboard extends Sprite {\n\t\t\n\t\tprivate var domId:String = '';\n\t\tprivate var button:Sprite;\n\t\tprivate var clipText:String = 'blank';\n\t\tprivate var fileName:String = '';\n\t\tprivate var action:String = 'copy';\n\t\tprivate var incBom:Boolean = true;\n\t\tprivate var charSet:String = 'utf8';\n\t\t\n\t\t\n\t\tpublic function ZeroClipboard() {\n\t\t\t// constructor, setup event listeners and external interfaces\n\t\t\tstage.scaleMode = StageScaleMode.EXACT_FIT;\n\t\t\tflash.system.Security.allowDomain(\"*\");\n\t\t\t\n\t\t\t// import flashvars\n\t\t\tvar flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters;\n\t\t\tdomId = flashvars.id;\n\t\t\t\n\t\t\t// invisible button covers entire stage\n\t\t\tbutton = new Sprite();\n\t\t\tbutton.buttonMode = true;\n\t\t\tbutton.useHandCursor = true;\n\t\t\tbutton.graphics.beginFill(0x00FF00);\n\t\t\tbutton.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);\n\t\t\tbutton.alpha = 0.0;\n\t\t\taddChild(button);\n\t\t\t\n\t\t\tbutton.addEventListener(MouseEvent.CLICK, clickHandler);\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOver', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseOut', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseDown', null );\n\t\t\t} );\n\t\t\tbutton.addEventListener(MouseEvent.MOUSE_UP, function(event:Event):void {\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'mouseUp', null );\n\t\t\t} );\n\t\t\t\n\t\t\t// External functions - readd whenever the stage is made active for IE\n\t\t\taddCallbacks();\n\t\t\tstage.addEventListener(Event.ACTIVATE, addCallbacks);\n\t\t\t\n\t\t\t// signal to the browser that we are ready\n\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'load', null );\n\t\t}\n\t\t\n\t\tpublic function addCallbacks (evt:Event = null):void {\n\t\t\tExternalInterface.addCallback(\"setHandCursor\", setHandCursor);\n\t\t\tExternalInterface.addCallback(\"clearText\", clearText);\n\t\t\tExternalInterface.addCallback(\"setText\", setText);\n\t\t\tExternalInterface.addCallback(\"appendText\", appendText);\n\t\t\tExternalInterface.addCallback(\"setFileName\", setFileName);\n\t\t\tExternalInterface.addCallback(\"setAction\", setAction);\n\t\t\tExternalInterface.addCallback(\"setCharSet\", setCharSet);\n\t\t\tExternalInterface.addCallback(\"setBomInc\", setBomInc);\n\t\t}\n\t\t\n\t\t\n\t\tpublic function setCharSet(newCharSet:String):void {\n\t\t\tif ( newCharSet == 'UTF16LE' ) {\n\t\t\t\tcharSet = newCharSet;\n\t\t\t} else {\n\t\t\t\tcharSet = 'UTF8';\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic function setBomInc(newBomInc:Boolean):void {\n\t\t\tincBom = newBomInc;\n\t\t}\n\t\t\n\t\tpublic function clearText():void {\n\t\t\tclipText = '';\n\t\t}\n\t\t\n\t\tpublic function appendText(newText:String):void {\n\t\t\tclipText += newText;\n\t\t}\n\t\t\n\t\tpublic function setText(newText:String):void {\n\t\t\tclipText = newText;\n\t\t}\n\t\t\n\t\tpublic function setFileName(newFileName:String):void {\n\t\t\tfileName = newFileName;\n\t\t}\n\t\t\n\t\tpublic function setAction(newAction:String):void {\n\t\t\taction = newAction;\n\t\t}\n\t\t\n\t\tpublic function setHandCursor(enabled:Boolean):void {\n\t\t\t// control whether the hand cursor is shown on rollover (true)\n\t\t\t// or the default arrow cursor (false)\n\t\t\tbutton.useHandCursor = enabled;\n\t\t}\n\t\t\n\t\t\n\t\tprivate function clickHandler(event:Event):void {\n\t\t\tvar fileRef:FileReference = new FileReference();\n\t\t\tfileRef.addEventListener(Event.COMPLETE, saveComplete);\n\t\t\t\n\t\t\tif ( action == \"save\" ) {\n\t\t\t\t/* Save as a file */\n\t\t\t\tif ( charSet == 'UTF16LE' ) {\n\t\t\t\t\tfileRef.save( strToUTF16LE(clipText), fileName );\n\t\t\t\t} else {\n\t\t\t\t\tfileRef.save( strToUTF8(clipText), fileName );\n\t\t\t\t}\n\t\t\t} else if ( action == \"pdf\" ) {\n\t\t\t\t\tfileRef.save( \"This instance of ZeroClipboard is not configured for PDF export. \"+\n\t\t\t\t\t\t\"Please use the PDF export version.\", fileName+\".txt\" );\n\t\t\t} else {\n\t\t\t\t/* Copy the text to the clipboard. Note charset and BOM have no effect here */\n\t\t\t\tSystem.setClipboard( clipText );\n\t\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tprivate function saveComplete(event:Event):void {\n\t\t\tExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'complete', clipText );\n\t\t}\n\t\t\n\t\t\n\t\tprivate function getProp( prop:String, opts:Array ):String\n\t\t{\n\t\t\tvar i:int, iLen:int;\n\t\t\tfor ( i=0, iLen=opts.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( opts[i].indexOf( prop+\":\" ) != -1 )\n\t\t\t\t{\n\t\t\t\t\treturn opts[i].replace( prop+\":\", \"\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * Function: strToUTF8\n\t\t * Purpose:  Convert a string to the output utf-8\n\t\t * Returns:  ByteArray\n\t\t * Inputs:   String\n\t\t */\n\t\tprivate function strToUTF8( str:String ):ByteArray {\n\t\t\tvar utf8:ByteArray = new ByteArray();\n\t\t\t\n\t\t\t/* BOM first */\n\t\t\tif ( incBom ) {\n\t\t\t\tutf8.writeByte( 0xEF );\n\t\t\t\tutf8.writeByte( 0xBB );\n\t\t\t\tutf8.writeByte( 0xBF );\n\t\t\t}\n\t\t\tutf8.writeUTFBytes( str );\n\t\t\t\n\t\t\treturn utf8;\n\t\t}\n\t\t\n\t\t\n\t\t/*\n\t\t * Function: strToUTF16LE\n\t\t * Purpose:  Convert a string to the output utf-16\n\t\t * Returns:  ByteArray\n\t\t * Inputs:   String\n\t\t * Notes:    The fact that this function is needed is a little annoying. Basically, strings in\n\t\t *   AS3 are UTF-16 (with surrogate pairs and everything), but characters which take up less\n\t\t *   than 8 bytes appear to be stored as only 8 bytes. This function effective adds the \n\t\t *   padding required, and the BOM\n\t\t */\n\t\tprivate function strToUTF16LE( str:String ):ByteArray {\n\t\t\tvar utf16:ByteArray = new ByteArray();\n\t\t\tvar iChar:uint;\n\t\t\tvar i:uint=0, iLen:uint = str.length;\n\t\t\t\n\t\t\t/* BOM first */\n\t\t\tif ( incBom ) {\n\t\t\t\tutf16.writeByte( 0xFF );\n\t\t\t\tutf16.writeByte( 0xFE );\n\t\t\t}\n\t\t\t\n\t\t\twhile ( i < iLen ) {\n\t\t\t\tiChar = str.charCodeAt(i);\n\t\t\t\t\n\t\t\t\tif ( iChar < 0xFF ) {\n\t\t\t\t\t/* one byte char */\n\t\t\t\t\tutf16.writeByte( iChar );\n\t\t\t\t\tutf16.writeByte( 0 );\n\t\t\t\t} else {\n\t\t\t\t\t/* two byte char */\n\t\t\t\t\tutf16.writeByte( iChar & 0x00FF );\n\t\t\t\t\tutf16.writeByte( iChar >> 8 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ti++;\n\t\t\t}\n\t\t\t\n\t\t\treturn utf16;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/TableTools.js",
    "content": "/*\n * File:        TableTools.js\n * Version:     2.1.4\n * Description: Tools and buttons for DataTables\n * Author:      Allan Jardine (www.sprymedia.co.uk)\n * Language:    Javascript\n * License:\t    GPL v2 or BSD 3 point style\n * Project:\t    DataTables\n * \n * Copyright 2009-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n */\n\n/* Global scope for TableTools */\nvar TableTools;\n\n(function($, window, document) {\n\n/** \n * TableTools provides flexible buttons and other tools for a DataTables enhanced table\n * @class TableTools\n * @constructor\n * @param {Object} oDT DataTables instance\n * @param {Object} oOpts TableTools options\n * @param {String} oOpts.sSwfPath ZeroClipboard SWF path\n * @param {String} oOpts.sRowSelect Row selection options - 'none', 'single' or 'multi'\n * @param {Function} oOpts.fnPreRowSelect Callback function just prior to row selection\n * @param {Function} oOpts.fnRowSelected Callback function just after row selection\n * @param {Function} oOpts.fnRowDeselected Callback function when row is deselected\n * @param {Array} oOpts.aButtons List of buttons to be used\n */\nTableTools = function( oDT, oOpts )\n{\n\t/* Santiy check that we are a new instance */\n\tif ( ! this instanceof TableTools )\n\t{\n\t\talert( \"Warning: TableTools must be initialised with the keyword 'new'\" );\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class variables\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * @namespace Settings object which contains customisable information for TableTools instance\n\t */\n\tthis.s = {\n\t\t/**\n\t\t * Store 'this' so the instance can be retrieved from the settings object\n\t\t * @property that\n\t\t * @type\t object\n\t\t * @default  this\n\t\t */\n\t\t\"that\": this,\n\t\t\n\t\t/** \n\t\t * DataTables settings objects\n\t\t * @property dt\n\t\t * @type\t object\n\t\t * @default  <i>From the oDT init option</i>\n\t\t */\n\t\t\"dt\": oDT.fnSettings(),\n\t\t\n\t\t/**\n\t\t * @namespace Print specific information\n\t\t */\n\t\t\"print\": {\n\t\t\t/** \n\t\t\t * DataTables draw 'start' point before the printing display was shown\n\t\t\t *  @property saveStart\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveStart\": -1,\n\t\t\t\n\t\t\t/** \n\t\t\t * DataTables draw 'length' point before the printing display was shown\n\t\t\t *  @property saveLength\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveLength\": -1,\n\t\t\n\t\t\t/** \n\t\t\t * Page scrolling point before the printing display was shown so it can be restored\n\t\t\t *  @property saveScroll\n\t\t\t *  @type\t int\n\t\t\t *  @default  -1\n\t\t \t */\n\t\t  \"saveScroll\": -1,\n\t\t\n\t\t\t/** \n\t\t\t * Wrapped function to end the print display (to maintain scope)\n\t\t\t *  @property funcEnd\n\t\t \t *  @type\t Function\n\t\t\t *  @default  function () {}\n\t\t \t */\n\t\t  \"funcEnd\": function () {}\n\t  },\n\t\n\t\t/**\n\t\t * A unique ID is assigned to each button in each instance\n\t\t * @property buttonCounter\n\t\t *  @type\t int\n\t\t * @default  0\n\t\t */\n\t  \"buttonCounter\": 0,\n\t\t\n\t\t/**\n\t\t * @namespace Select rows specific information\n\t\t */\n\t\t\"select\": {\n\t\t\t/**\n\t\t\t * Select type - can be 'none', 'single' or 'multi'\n\t\t\t * @property type\n\t\t\t *  @type\t string\n\t\t\t * @default  \"\"\n\t\t\t */\n\t\t\t\"type\": \"\",\n\t\t\t\n\t\t\t/**\n\t\t\t * Array of nodes which are currently selected\n\t\t\t *  @property selected\n\t\t\t *  @type\t array\n\t\t\t *  @default  []\n\t\t\t */\n\t\t\t\"selected\": [],\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run before the selection can take place. Will cancel the select if the\n\t\t\t * function returns false\n\t\t\t *  @property preRowSelect\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"preRowSelect\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run when a row is selected\n\t\t\t *  @property postSelected\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"postSelected\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Function to run when a row is deselected\n\t\t\t *  @property postDeselected\n\t\t\t *  @type\t Function\n\t\t\t *  @default  null\n\t\t\t */\n\t\t\t\"postDeselected\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Indicate if all rows are selected (needed for server-side processing)\n\t\t\t *  @property all\n\t\t\t *  @type\t boolean\n\t\t\t *  @default  false\n\t\t\t */\n\t\t\t\"all\": false,\n\t\t\t\n\t\t\t/**\n\t\t\t * Class name to add to selected TR nodes\n\t\t\t *  @property selectedClass\n\t\t\t *  @type\t String\n\t\t\t *  @default  \"\"\n\t\t\t */\n\t\t\t\"selectedClass\": \"\"\n\t\t},\n\t\t\n\t\t/**\n\t\t * Store of the user input customisation object\n\t\t *  @property custom\n\t\t *  @type\t object\n\t\t *  @default  {}\n\t\t */\n\t\t\"custom\": {},\n\t\t\n\t\t/**\n\t\t * SWF movie path\n\t\t *  @property swfPath\n\t\t *  @type\t string\n\t\t *  @default  \"\"\n\t\t */\n\t\t\"swfPath\": \"\",\n\t\t\n\t\t/**\n\t\t * Default button set\n\t\t *  @property buttonSet\n\t\t *  @type\t array\n\t\t *  @default  []\n\t\t */\n\t\t\"buttonSet\": [],\n\t\t\n\t\t/**\n\t\t * When there is more than one TableTools instance for a DataTable, there must be a \n\t\t * master which controls events (row selection etc)\n\t\t *  @property master\n\t\t *  @type\t boolean\n\t\t *  @default  false\n\t\t */\n\t\t\"master\": false,\n\t\t\n\t\t/**\n\t\t * Tag names that are used for creating collections and buttons\n\t\t *  @namesapce\n\t\t */\n\t\t\"tags\": {}\n\t};\n\t\n\t\n\t/**\n\t * @namespace Common and useful DOM elements for the class instance\n\t */\n\tthis.dom = {\n\t\t/**\n\t\t * DIV element that is create and all TableTools buttons (and their children) put into\n\t\t *  @property container\n\t\t *  @type\t node\n\t\t *  @default  null\n\t\t */\n\t\t\"container\": null,\n\t\t\n\t\t/**\n\t\t * The table node to which TableTools will be applied\n\t\t *  @property table\n\t\t *  @type\t node\n\t\t *  @default  null\n\t\t */\n\t\t\"table\": null,\n\t\t\n\t\t/**\n\t\t * @namespace Nodes used for the print display\n\t\t */\n\t\t\"print\": {\n\t\t\t/**\n\t\t\t * Nodes which have been removed from the display by setting them to display none\n\t\t\t *  @property hidden\n\t\t\t *  @type\t array\n\t\t \t *  @default  []\n\t\t\t */\n\t\t  \"hidden\": [],\n\t\t\t\n\t\t\t/**\n\t\t\t * The information display saying telling the user about the print display\n\t\t\t *  @property message\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t  \"message\": null\n\t  },\n\t\t\n\t\t/**\n\t\t * @namespace Nodes used for a collection display. This contains the currently used collection\n\t\t */\n\t\t\"collection\": {\n\t\t\t/**\n\t\t\t * The div wrapper containing the buttons in the collection (i.e. the menu)\n\t\t\t *  @property collection\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t\t\"collection\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Background display to provide focus and capture events\n\t\t\t *  @property background\n\t\t\t *  @type\t node\n\t\t \t *  @default  null\n\t\t\t */\n\t\t\t\"background\": null\n\t\t}\n\t};\n\n\t/**\n\t * @namespace Name space for the classes that this TableTools instance will use\n\t * @extends TableTools.classes\n\t */\n\tthis.classes = $.extend( true, {}, TableTools.classes );\n\tif ( this.s.dt.bJUI )\n\t{\n\t\t$.extend( true, this.classes, TableTools.classes_themeroller );\n\t}\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public class methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @method fnSettings\n\t *  @returns {object} TableTools settings object\n\t */\n\tthis.fnSettings = function () {\n\t\treturn this.s;\n\t};\n\t\n\t\n\t/* Constructor logic */\n\tif ( typeof oOpts == 'undefined' )\n\t{\n\t\toOpts = {};\n\t}\n\t\n\tthis._fnConstruct( oOpts );\n\t\n\treturn this;\n};\n\n\n\nTableTools.prototype = {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Public methods\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Retreieve the settings object from an instance\n\t *  @returns {array} List of TR nodes which are currently selected\n\t *  @param {boolean} [filtered=false] Get only selected rows which are  \n\t *    available given the filtering applied to the table. By default\n\t *    this is false -  i.e. all rows, regardless of filtering are \n\t      selected.\n\t */\n\t\"fnGetSelected\": function ( filtered )\n\t{\n\t\tvar\n\t\t\tout = [],\n\t\t\tdata = this.s.dt.aoData,\n\t\t\tdisplayed = this.s.dt.aiDisplay,\n\t\t\ti, iLen;\n\n\t\tif ( filtered )\n\t\t{\n\t\t\t// Only consider filtered rows\n\t\t\tfor ( i=0, iLen=displayed.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( data[ displayed[i] ]._DTTT_selected )\n\t\t\t\t{\n\t\t\t\t\tout.push( data[ displayed[i] ].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Use all rows\n\t\t\tfor ( i=0, iLen=data.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( data[i]._DTTT_selected )\n\t\t\t\t{\n\t\t\t\t\tout.push( data[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t},\n\n\n\t/**\n\t * Get the data source objects/arrays from DataTables for the selected rows (same as\n\t * fnGetSelected followed by fnGetData on each row from the table)\n\t *  @returns {array} Data from the TR nodes which are currently selected\n\t */\n\t\"fnGetSelectedData\": function ()\n\t{\n\t\tvar out = [];\n\t\tvar data=this.s.dt.aoData;\n\t\tvar i, iLen;\n\n\t\tfor ( i=0, iLen=data.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( data[i]._DTTT_selected )\n\t\t\t{\n\t\t\t\tout.push( this.s.dt.oInstance.fnGetData(i) );\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t},\n\t\n\t\n\t/**\n\t * Check to see if a current row is selected or not\n\t *  @param {Node} n TR node to check if it is currently selected or not\n\t *  @returns {Boolean} true if select, false otherwise\n\t */\n\t\"fnIsSelected\": function ( n )\n\t{\n\t\tvar pos = this.s.dt.oInstance.fnGetPosition( n );\n\t\treturn (this.s.dt.aoData[pos]._DTTT_selected===true) ? true : false;\n\t},\n\n\t\n\t/**\n\t * Select all rows in the table\n\t *  @param {boolean} [filtered=false] Select only rows which are available \n\t *    given the filtering applied to the table. By default this is false - \n\t *    i.e. all rows, regardless of filtering are selected.\n\t */\n\t\"fnSelectAll\": function ( filtered )\n\t{\n\t\tvar s = this._fnGetMasterSettings();\n\t\t\n\t\tthis._fnRowSelect( (filtered === true) ?\n\t\t\ts.dt.aiDisplay :\n\t\t\ts.dt.aoData\n\t\t);\n\t},\n\n\t\n\t/**\n\t * Deselect all rows in the table\n\t *  @param {boolean} [filtered=false] Deselect only rows which are available \n\t *    given the filtering applied to the table. By default this is false - \n\t *    i.e. all rows, regardless of filtering are deselected.\n\t */\n\t\"fnSelectNone\": function ( filtered )\n\t{\n\t\tvar s = this._fnGetMasterSettings();\n\n\t\tthis._fnRowDeselect( this.fnGetSelected(filtered) );\n\t},\n\n\t\n\t/**\n\t * Select row(s)\n\t *  @param {node|object|array} n The row(s) to select. Can be a single DOM\n\t *    TR node, an array of TR nodes or a jQuery object.\n\t */\n\t\"fnSelect\": function ( n )\n\t{\n\t\tif ( this.s.select.type == \"single\" )\n\t\t{\n\t\t\tthis.fnSelectNone();\n\t\t\tthis._fnRowSelect( n );\n\t\t}\n\t\telse if ( this.s.select.type == \"multi\" )\n\t\t{\n\t\t\tthis._fnRowSelect( n );\n\t\t}\n\t},\n\n\t\n\t/**\n\t * Deselect row(s)\n\t *  @param {node|object|array} n The row(s) to deselect. Can be a single DOM\n\t *    TR node, an array of TR nodes or a jQuery object.\n\t */\n\t\"fnDeselect\": function ( n )\n\t{\n\t\tthis._fnRowDeselect( n );\n\t},\n\t\n\t\n\t/**\n\t * Get the title of the document - useful for file names. The title is retrieved from either\n\t * the configuration object's 'title' parameter, or the HTML document title\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {String} Button title\n\t */\n\t\"fnGetTitle\": function( oConfig )\n\t{\n\t\tvar sTitle = \"\";\n\t\tif ( typeof oConfig.sTitle != 'undefined' && oConfig.sTitle !== \"\" ) {\n\t\t\tsTitle = oConfig.sTitle;\n\t\t} else {\n\t\t\tvar anTitle = document.getElementsByTagName('title');\n\t\t\tif ( anTitle.length > 0 )\n\t\t\t{\n\t\t\t\tsTitle = anTitle[0].innerHTML;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Strip characters which the OS will object to - checking for UTF8 support in the scripting\n\t\t * engine\n\t\t */\n\t\tif ( \"\\u00A1\".toString().length < 4 ) {\n\t\t\treturn sTitle.replace(/[^a-zA-Z0-9_\\u00A1-\\uFFFF\\.,\\-_ !\\(\\)]/g, \"\");\n\t\t} else {\n\t\t\treturn sTitle.replace(/[^a-zA-Z0-9_\\.,\\-_ !\\(\\)]/g, \"\");\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Calculate a unity array with the column width by proportion for a set of columns to be\n\t * included for a button. This is particularly useful for PDF creation, where we can use the\n\t * column widths calculated by the browser to size the columns in the PDF.\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {Array} Unity array of column ratios\n\t */\n\t\"fnCalcColRatios\": function ( oConfig )\n\t{\n\t\tvar\n\t\t\taoCols = this.s.dt.aoColumns,\n\t\t\taColumnsInc = this._fnColumnTargets( oConfig.mColumns ),\n\t\t\taColWidths = [],\n\t\t\tiWidth = 0, iTotal = 0, i, iLen;\n\t\t\n\t\tfor ( i=0, iLen=aColumnsInc.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aColumnsInc[i] )\n\t\t\t{\n\t\t\t\tiWidth = aoCols[i].nTh.offsetWidth;\n\t\t\t\tiTotal += iWidth;\n\t\t\t\taColWidths.push( iWidth );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor ( i=0, iLen=aColWidths.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taColWidths[i] = aColWidths[i] / iTotal;\n\t\t}\n\t\t\n\t\treturn aColWidths.join('\\t');\n\t},\n\t\n\t\n\t/**\n\t * Get the information contained in a table as a string\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {String} Table data as a string\n\t */\n\t\"fnGetTableData\": function ( oConfig )\n\t{\n\t\t/* In future this could be used to get data from a plain HTML source as well as DataTables */\n\t\tif ( this.s.dt )\n\t\t{\n\t\t\treturn this._fnGetDataTablesData( oConfig );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Pass text to a flash button instance, which will be used on the button's click handler\n\t *  @param   {Object} clip Flash button object\n\t *  @param   {String} text Text to set\n\t */\n\t\"fnSetText\": function ( clip, text )\n\t{\n\t\tthis._fnFlashSetText( clip, text );\n\t},\n\t\n\t\n\t/**\n\t * Resize the flash elements of the buttons attached to this TableTools instance - this is\n\t * useful for when initialising TableTools when it is hidden (display:none) since sizes can't\n\t * be calculated at that time.\n\t */\n\t\"fnResizeButtons\": function ()\n\t{\n\t\tfor ( var cli in ZeroClipboard_TableTools.clients )\n\t\t{\n\t\t\tif ( cli )\n\t\t\t{\n\t\t\t\tvar client = ZeroClipboard_TableTools.clients[cli];\n\t\t\t\tif ( typeof client.domElement != 'undefined' &&\n\t\t\t\t\t client.domElement.parentNode )\n\t\t\t\t{\n\t\t\t\t\tclient.positionElement();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Check to see if any of the ZeroClipboard client's attached need to be resized\n\t */\n\t\"fnResizeRequired\": function ()\n\t{\n\t\tfor ( var cli in ZeroClipboard_TableTools.clients )\n\t\t{\n\t\t\tif ( cli )\n\t\t\t{\n\t\t\t\tvar client = ZeroClipboard_TableTools.clients[cli];\n\t\t\t\tif ( typeof client.domElement != 'undefined' &&\n\t\t\t\t\t client.domElement.parentNode == this.dom.container &&\n\t\t\t\t\t client.sized === false )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t\n\t\n\t/**\n\t * Programmatically enable or disable the print view\n\t *  @param {boolean} [bView=true] Show the print view if true or not given. If false, then\n\t *    terminate the print view and return to normal.\n\t *  @param {object} [oConfig={}] Configuration for the print view\n\t *  @param {boolean} [oConfig.bShowAll=false] Show all rows in the table if true\n\t *  @param {string} [oConfig.sInfo] Information message, displayed as an overlay to the\n\t *    user to let them know what the print view is.\n\t *  @param {string} [oConfig.sMessage] HTML string to show at the top of the document - will\n\t *    be included in the printed document.\n\t */\n\t\"fnPrint\": function ( bView, oConfig )\n\t{\n\t\tif ( oConfig === undefined )\n\t\t{\n\t\t\toConfig = {};\n\t\t}\n\n\t\tif ( bView === undefined || bView )\n\t\t{\n\t\t\tthis._fnPrintStart( oConfig );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._fnPrintEnd();\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Show a message to the end user which is nicely styled\n\t *  @param {string} message The HTML string to show to the user\n\t *  @param {int} time The duration the message is to be shown on screen for (mS)\n\t */\n\t\"fnInfo\": function ( message, time ) {\n\t\tvar nInfo = document.createElement( \"div\" );\n\t\tnInfo.className = this.classes.print.info;\n\t\tnInfo.innerHTML = message;\n\n\t\tdocument.body.appendChild( nInfo );\n\t\t\n\t\tsetTimeout( function() {\n\t\t\t$(nInfo).fadeOut( \"normal\", function() {\n\t\t\t\tdocument.body.removeChild( nInfo );\n\t\t\t} );\n\t\t}, time );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods (they are of course public in JS, but recommended as private)\n\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\t\n\t/**\n\t * Constructor logic\n\t *  @method  _fnConstruct\n\t *  @param   {Object} oOpts Same as TableTools constructor\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnConstruct\": function ( oOpts )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tthis._fnCustomiseSettings( oOpts );\n\t\t\n\t\t/* Container element */\n\t\tthis.dom.container = document.createElement( this.s.tags.container );\n\t\tthis.dom.container.className = this.classes.container;\n\t\t\n\t\t/* Row selection config */\n\t\tif ( this.s.select.type != 'none' )\n\t\t{\n\t\t\tthis._fnRowSelectConfig();\n\t\t}\n\t\t\n\t\t/* Buttons */\n\t\tthis._fnButtonDefinations( this.s.buttonSet, this.dom.container );\n\t\t\n\t\t/* Destructor - need to wipe the DOM for IE's garbage collector */\n\t\tthis.s.dt.aoDestroyCallback.push( {\n\t\t\t\"sName\": \"TableTools\",\n\t\t\t\"fn\": function () {\n\t\t\t\tthat.dom.container.innerHTML = \"\";\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Take the user defined settings and the default settings and combine them.\n\t *  @method  _fnCustomiseSettings\n\t *  @param   {Object} oOpts Same as TableTools constructor\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnCustomiseSettings\": function ( oOpts )\n\t{\n\t\t/* Is this the master control instance or not? */\n\t\tif ( typeof this.s.dt._TableToolsInit == 'undefined' )\n\t\t{\n\t\t\tthis.s.master = true;\n\t\t\tthis.s.dt._TableToolsInit = true;\n\t\t}\n\t\t\n\t\t/* We can use the table node from comparisons to group controls */\n\t\tthis.dom.table = this.s.dt.nTable;\n\t\t\n\t\t/* Clone the defaults and then the user options */\n\t\tthis.s.custom = $.extend( {}, TableTools.DEFAULTS, oOpts );\n\t\t\n\t\t/* Flash file location */\n\t\tthis.s.swfPath = this.s.custom.sSwfPath;\n\t\tif ( typeof ZeroClipboard_TableTools != 'undefined' )\n\t\t{\n\t\t\tZeroClipboard_TableTools.moviePath = this.s.swfPath;\n\t\t}\n\t\t\n\t\t/* Table row selecting */\n\t\tthis.s.select.type = this.s.custom.sRowSelect;\n\t\tthis.s.select.preRowSelect = this.s.custom.fnPreRowSelect;\n\t\tthis.s.select.postSelected = this.s.custom.fnRowSelected;\n\t\tthis.s.select.postDeselected = this.s.custom.fnRowDeselected;\n\n\t\t// Backwards compatibility - allow the user to specify a custom class in the initialiser\n\t\tif ( this.s.custom.sSelectedClass )\n\t\t{\n\t\t\tthis.classes.select.row = this.s.custom.sSelectedClass;\n\t\t}\n\n\t\tthis.s.tags = this.s.custom.oTags;\n\n\t\t/* Button set */\n\t\tthis.s.buttonSet = this.s.custom.aButtons;\n\t},\n\t\n\t\n\t/**\n\t * Take the user input arrays and expand them to be fully defined, and then add them to a given\n\t * DOM element\n\t *  @method  _fnButtonDefinations\n\t *  @param {array} buttonSet Set of user defined buttons\n\t *  @param {node} wrapper Node to add the created buttons to\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnButtonDefinations\": function ( buttonSet, wrapper )\n\t{\n\t\tvar buttonDef;\n\t\t\n\t\tfor ( var i=0, iLen=buttonSet.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( typeof buttonSet[i] == \"string\" )\n\t\t\t{\n\t\t\t\tif ( typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined' )\n\t\t\t\t{\n\t\t\t\t\talert( \"TableTools: Warning - unknown button type: \"+buttonSet[i] );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbuttonDef = $.extend( {}, TableTools.BUTTONS[ buttonSet[i] ], true );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( typeof TableTools.BUTTONS[ buttonSet[i].sExtends ] == 'undefined' )\n\t\t\t\t{\n\t\t\t\t\talert( \"TableTools: Warning - unknown button type: \"+buttonSet[i].sExtends );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar o = $.extend( {}, TableTools.BUTTONS[ buttonSet[i].sExtends ], true );\n\t\t\t\tbuttonDef = $.extend( o, buttonSet[i], true );\n\t\t\t}\n\t\t\t\n\t\t\twrapper.appendChild( this._fnCreateButton( \n\t\t\t\tbuttonDef, \n\t\t\t\t$(wrapper).hasClass(this.classes.collection.container)\n\t\t\t) );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Create and configure a TableTools button\n\t *  @method  _fnCreateButton\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns {Node} Button element\n\t *  @private \n\t */\n\t\"_fnCreateButton\": function ( oConfig, bCollectionButton )\n\t{\n\t  var nButton = this._fnButtonBase( oConfig, bCollectionButton );\n\t\t\n\t\tif ( oConfig.sAction.match(/flash/) )\n\t\t{\n\t\t\tthis._fnFlashConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"text\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"div\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t}\n\t\telse if ( oConfig.sAction == \"collection\" )\n\t\t{\n\t\t\tthis._fnTextConfig( nButton, oConfig );\n\t\t\tthis._fnCollectionConfig( nButton, oConfig );\n\t\t}\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Create the DOM needed for the button and apply some base properties. All buttons start here\n\t *  @method  _fnButtonBase\n\t *  @param   {o} oConfig Button configuration object\n\t *  @returns {Node} DIV element for the button\n\t *  @private \n\t */\n\t\"_fnButtonBase\": function ( o, bCollectionButton )\n\t{\n\t\tvar sTag, sLiner, sClass;\n\n\t\tif ( bCollectionButton )\n\t\t{\n\t\t\tsTag = o.sTag !== \"default\" ? o.sTag : this.s.tags.collection.button;\n\t\t\tsLiner = o.sLinerTag !== \"default\" ? o.sLiner : this.s.tags.collection.liner;\n\t\t\tsClass = this.classes.collection.buttons.normal;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsTag = o.sTag !== \"default\" ? o.sTag : this.s.tags.button;\n\t\t\tsLiner = o.sLinerTag !== \"default\" ? o.sLiner : this.s.tags.liner;\n\t\t\tsClass = this.classes.buttons.normal;\n\t\t}\n\n\t\tvar\n\t\t  nButton = document.createElement( sTag ),\n\t\t  nSpan = document.createElement( sLiner ),\n\t\t  masterS = this._fnGetMasterSettings();\n\t\t\n\t\tnButton.className = sClass+\" \"+o.sButtonClass;\n\t\tnButton.setAttribute('id', \"ToolTables_\"+this.s.dt.sInstance+\"_\"+masterS.buttonCounter );\n\t\tnButton.appendChild( nSpan );\n\t\tnSpan.innerHTML = o.sButtonText;\n\t\t\n\t\tmasterS.buttonCounter++;\n\t\t\n\t\treturn nButton;\n\t},\n\t\n\t\n\t/**\n\t * Get the settings object for the master instance. When more than one TableTools instance is\n\t * assigned to a DataTable, only one of them can be the 'master' (for the select rows). As such,\n\t * we will typically want to interact with that master for global properties.\n\t *  @method  _fnGetMasterSettings\n\t *  @returns {Object} TableTools settings object\n\t *  @private \n\t */\n\t\"_fnGetMasterSettings\": function ()\n\t{\n\t\tif ( this.s.master )\n\t\t{\n\t\t\treturn this.s;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Look for the master which has the same DT as this one */\n\t\t\tvar instances = TableTools._aInstances;\n\t\t\tfor ( var i=0, iLen=instances.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( this.dom.table == instances[i].s.dt.nTable )\n\t\t\t\t{\n\t\t\t\t\treturn instances[i].s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Button collection functions\n\t */\n\t\n\t/**\n\t * Create a collection button, when activated will present a drop down list of other buttons\n\t *  @param   {Node} nButton Button to use for the collection activation\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar nHidden = document.createElement( this.s.tags.collection.container );\n\t\tnHidden.style.display = \"none\";\n\t\tnHidden.className = this.classes.collection.container;\n\t\toConfig._collection = nHidden;\n\t\tdocument.body.appendChild( nHidden );\n\t\t\n\t\tthis._fnButtonDefinations( oConfig.aButtons, nHidden );\n\t},\n\t\n\t\n\t/**\n\t * Show a button collection\n\t *  @param   {Node} nButton Button to use for the collection\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionShow\": function ( nButton, oConfig )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\toPos = $(nButton).offset(),\n\t\t\tnHidden = oConfig._collection,\n\t\t\tiDivX = oPos.left,\n\t\t\tiDivY = oPos.top + $(nButton).outerHeight(),\n\t\t\tiWinHeight = $(window).height(), iDocHeight = $(document).height(),\n\t\t \tiWinWidth = $(window).width(), iDocWidth = $(document).width();\n\t\t\n\t\tnHidden.style.position = \"absolute\";\n\t\tnHidden.style.left = iDivX+\"px\";\n\t\tnHidden.style.top = iDivY+\"px\";\n\t\tnHidden.style.display = \"block\";\n\t\t$(nHidden).css('opacity',0);\n\t\t\n\t\tvar nBackground = document.createElement('div');\n\t\tnBackground.style.position = \"absolute\";\n\t\tnBackground.style.left = \"0px\";\n\t\tnBackground.style.top = \"0px\";\n\t\tnBackground.style.height = ((iWinHeight>iDocHeight)? iWinHeight : iDocHeight) +\"px\";\n\t\tnBackground.style.width = ((iWinWidth>iDocWidth)? iWinWidth : iDocWidth) +\"px\";\n\t\tnBackground.className = this.classes.collection.background;\n\t\t$(nBackground).css('opacity',0);\n\t\t\n\t\tdocument.body.appendChild( nBackground );\n\t\tdocument.body.appendChild( nHidden );\n\t\t\n\t\t/* Visual corrections to try and keep the collection visible */\n\t\tvar iDivWidth = $(nHidden).outerWidth();\n\t\tvar iDivHeight = $(nHidden).outerHeight();\n\t\t\n\t\tif ( iDivX + iDivWidth > iDocWidth )\n\t\t{\n\t\t\tnHidden.style.left = (iDocWidth-iDivWidth)+\"px\";\n\t\t}\n\t\t\n\t\tif ( iDivY + iDivHeight > iDocHeight )\n\t\t{\n\t\t\tnHidden.style.top = (iDivY-iDivHeight-$(nButton).outerHeight())+\"px\";\n\t\t}\n\t\n\t\tthis.dom.collection.collection = nHidden;\n\t\tthis.dom.collection.background = nBackground;\n\t\t\n\t\t/* This results in a very small delay for the end user but it allows the animation to be\n\t\t * much smoother. If you don't want the animation, then the setTimeout can be removed\n\t\t */\n\t\tsetTimeout( function () {\n\t\t\t$(nHidden).animate({\"opacity\": 1}, 500);\n\t\t\t$(nBackground).animate({\"opacity\": 0.25}, 500);\n\t\t}, 10 );\n\n\t\t/* Resize the buttons to the Flash contents fit */\n\t\tthis.fnResizeButtons();\n\t\t\n\t\t/* Event handler to remove the collection display */\n\t\t$(nBackground).click( function () {\n\t\t\tthat._fnCollectionHide.call( that, null, null );\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Hide a button collection\n\t *  @param   {Node} nButton Button to use for the collection\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private\n\t */\n\t\"_fnCollectionHide\": function ( nButton, oConfig )\n\t{\n\t\tif ( oConfig !== null && oConfig.sExtends == 'collection' )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( this.dom.collection.collection !== null )\n\t\t{\n\t\t\t$(this.dom.collection.collection).animate({\"opacity\": 0}, 500, function (e) {\n\t\t\t\tthis.style.display = \"none\";\n\t\t\t} );\n\t\t\t\n\t\t\t$(this.dom.collection.background).animate({\"opacity\": 0}, 500, function (e) {\n\t\t\t\tthis.parentNode.removeChild( this );\n\t\t\t} );\n\t\t\t\n\t\t\tthis.dom.collection.collection = null;\n\t\t\tthis.dom.collection.background = null;\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Row selection functions\n\t */\n\t\n\t/**\n\t * Add event handlers to a table to allow for row selection\n\t *  @method  _fnRowSelectConfig\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnRowSelectConfig\": function ()\n\t{\n\t\tif ( this.s.master )\n\t\t{\n\t\t\tvar\n\t\t\t\tthat = this, \n\t\t\t\ti, iLen, \n\t\t\t\tdt = this.s.dt,\n\t\t\t\taoOpenRows = this.s.dt.aoOpenRows;\n\t\t\t\n\t\t\t$(dt.nTable).addClass( this.classes.select.table );\n\t\t\t\n\t\t\t$('tr', dt.nTBody).live( 'click', function(e) {\n\t\t\t\t/* Sub-table must be ignored (odd that the selector won't do this with >) */\n\t\t\t\tif ( this.parentNode != dt.nTBody )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Check that we are actually working with a DataTables controlled row */\n\t\t\t\tif ( dt.oInstance.fnGetData(this) === null )\n\t\t\t\t{\n\t\t\t\t    return;\n\t\t\t\t}\n\n\t\t\t\tif ( that.fnIsSelected( this ) )\n\t\t\t\t{\n\t\t\t\t\tthat._fnRowDeselect( this, e );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.select.type == \"single\" )\n\t\t\t\t{\n\t\t\t\t\tthat.fnSelectNone();\n\t\t\t\t\tthat._fnRowSelect( this, e );\n\t\t\t\t}\n\t\t\t\telse if ( that.s.select.type == \"multi\" )\n\t\t\t\t{\n\t\t\t\t\tthat._fnRowSelect( this, e );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Bind a listener to the DataTable for when new rows are created.\n\t\t\t// This allows rows to be visually selected when they should be and\n\t\t\t// deferred rendering is used.\n\t\t\tdt.oApi._fnCallbackReg( dt, 'aoRowCreatedCallback', function (tr, data, index) {\n\t\t\t\tif ( dt.aoData[index]._DTTT_selected ) {\n\t\t\t\t\t$(tr).addClass( that.classes.select.row );\n\t\t\t\t}\n\t\t\t}, 'TableTools-SelectAll' );\n\t\t}\n\t},\n\n\t/**\n\t * Select rows\n\t *  @param   {*} src Rows to select - see _fnSelectData for a description of valid inputs\n\t *  @private \n\t */\n\t\"_fnRowSelect\": function ( src, e )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tdata = this._fnSelectData( src ),\n\t\t\tfirstTr = data.length===0 ? null : data[0].nTr,\n\t\t\tanSelected = [],\n\t\t\ti, len;\n\n\t\t// Get all the rows that will be selected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\tanSelected.push( data[i].nTr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t// User defined pre-selection function\n\t\tif ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anSelected, true) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark them as selected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tdata[i]._DTTT_selected = true;\n\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\t$(data[i].nTr).addClass( that.classes.select.row );\n\t\t\t}\n\t\t}\n\n\t\t// Post-selection function\n\t\tif ( this.s.select.postSelected !== null )\n\t\t{\n\t\t\tthis.s.select.postSelected.call( this, anSelected );\n\t\t}\n\n\t\tTableTools._fnEventDispatch( this, 'select', anSelected, true );\n\t},\n\n\t/**\n\t * Deselect rows\n\t *  @param   {*} src Rows to deselect - see _fnSelectData for a description of valid inputs\n\t *  @private \n\t */\n\t\"_fnRowDeselect\": function ( src, e )\n\t{\n\t\tvar\n\t\t\tthat = this,\n\t\t\tdata = this._fnSelectData( src ),\n\t\t\tfirstTr = data.length===0 ? null : data[0].nTr,\n\t\t\tanDeselectedTrs = [],\n\t\t\ti, len;\n\n\t\t// Get all the rows that will be deselected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\tanDeselectedTrs.push( data[i].nTr );\n\t\t\t}\n\t\t}\n\n\t\t// User defined pre-selection function\n\t\tif ( this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anDeselectedTrs, false) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark them as deselected\n\t\tfor ( i=0, len=data.length ; i<len ; i++ )\n\t\t{\n\t\t\tdata[i]._DTTT_selected = false;\n\n\t\t\tif ( data[i].nTr )\n\t\t\t{\n\t\t\t\t$(data[i].nTr).removeClass( that.classes.select.row );\n\t\t\t}\n\t\t}\n\n\t\t// Post-deselection function\n\t\tif ( this.s.select.postDeselected !== null )\n\t\t{\n\t\t\tthis.s.select.postDeselected.call( this, anDeselectedTrs );\n\t\t}\n\n\t\tTableTools._fnEventDispatch( this, 'select', anDeselectedTrs, false );\n\t},\n\t\n\t/**\n\t * Take a data source for row selection and convert it into aoData points for the DT\n\t *   @param {*} src Can be a single DOM TR node, an array of TR nodes (including a\n\t *     a jQuery object), a single aoData point from DataTables, an array of aoData\n\t *     points or an array of aoData indexes\n\t *   @returns {array} An array of aoData points\n\t */\n\t\"_fnSelectData\": function ( src )\n\t{\n\t\tvar out = [], pos, i, iLen;\n\n\t\tif ( src.nodeName )\n\t\t{\n\t\t\t// Single node\n\t\t\tpos = this.s.dt.oInstance.fnGetPosition( src );\n\t\t\tout.push( this.s.dt.aoData[pos] );\n\t\t}\n\t\telse if ( typeof src.length !== 'undefined' )\n\t\t{\n\t\t\t// jQuery object or an array of nodes, or aoData points\n\t\t\tfor ( i=0, iLen=src.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( src[i].nodeName )\n\t\t\t\t{\n\t\t\t\t\tpos = this.s.dt.oInstance.fnGetPosition( src[i] );\n\t\t\t\t\tout.push( this.s.dt.aoData[pos] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof src[i] === 'number' )\n\t\t\t\t{\n\t\t\t\t\tout.push( this.s.dt.aoData[ src[i] ] );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tout.push( src[i] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn out;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// A single aoData point\n\t\t\tout.push( src );\n\t\t}\n\n\t\treturn out;\n\t},\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Text button functions\n\t */\n\t\n\t/**\n\t * Configure a text based button for interaction events\n\t *  @method  _fnTextConfig\n\t *  @param   {Node} nButton Button element which is being considered\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnTextConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar that = this;\n\t\t\n\t\tif ( oConfig.fnInit !== null )\n\t\t{\n\t\t\toConfig.fnInit.call( this, nButton, oConfig );\n\t\t}\n\t\t\n\t\tif ( oConfig.sToolTip !== \"\" )\n\t\t{\n\t\t\tnButton.title = oConfig.sToolTip;\n\t\t}\n\t\t\n\t\t$(nButton).hover( function () {\n\t\t\tif ( oConfig.fnMouseover !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseover.call( this, nButton, oConfig, null );\n\t\t\t}\n\t\t}, function () {\n\t\t\tif ( oConfig.fnMouseout !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseout.call( this, nButton, oConfig, null );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tif ( oConfig.fnSelect !== null )\n\t\t{\n\t\t\tTableTools._fnEventListen( this, 'select', function (n) {\n\t\t\t\toConfig.fnSelect.call( that, nButton, oConfig, n );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t$(nButton).click( function (e) {\n\t\t\t//e.preventDefault();\n\t\t\t\n\t\t\tif ( oConfig.fnClick !== null )\n\t\t\t{\n\t\t\t\toConfig.fnClick.call( that, nButton, oConfig, null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Provide a complete function to match the behaviour of the flash elements */\n\t\t\tif ( oConfig.fnComplete !== null )\n\t\t\t{\n\t\t\t\toConfig.fnComplete.call( that, nButton, oConfig, null, null );\n\t\t\t}\n\t\t\t\n\t\t\tthat._fnCollectionHide( nButton, oConfig );\n\t\t} );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Flash button functions\n\t */\n\t\n\t/**\n\t * Configure a flash based button for interaction events\n\t *  @method  _fnFlashConfig\n\t *  @param   {Node} nButton Button element which is being considered\n\t *  @param   {o} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashConfig\": function ( nButton, oConfig )\n\t{\n\t\tvar that = this;\n\t\tvar flash = new ZeroClipboard_TableTools.Client();\n\t\t\n\t\tif ( oConfig.fnInit !== null )\n\t\t{\n\t\t\toConfig.fnInit.call( this, nButton, oConfig );\n\t\t}\n\t\t\n\t\tflash.setHandCursor( true );\n\t\t\n\t\tif ( oConfig.sAction == \"flash_save\" )\n\t\t{\n\t\t\tflash.setAction( 'save' );\n\t\t\tflash.setCharSet( (oConfig.sCharSet==\"utf16le\") ? 'UTF16LE' : 'UTF8' );\n\t\t\tflash.setBomInc( oConfig.bBomInc );\n\t\t\tflash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );\n\t\t}\n\t\telse if ( oConfig.sAction == \"flash_pdf\" )\n\t\t{\n\t\t\tflash.setAction( 'pdf' );\n\t\t\tflash.setFileName( oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tflash.setAction( 'copy' );\n\t\t}\n\t\t\n\t\tflash.addEventListener('mouseOver', function(client) {\n\t\t\tif ( oConfig.fnMouseover !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseover.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('mouseOut', function(client) {\n\t\t\tif ( oConfig.fnMouseout !== null )\n\t\t\t{\n\t\t\t\toConfig.fnMouseout.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('mouseDown', function(client) {\n\t\t\tif ( oConfig.fnClick !== null )\n\t\t\t{\n\t\t\t\toConfig.fnClick.call( that, nButton, oConfig, flash );\n\t\t\t}\n\t\t} );\n\t\t\n\t\tflash.addEventListener('complete', function (client, text) {\n\t\t\tif ( oConfig.fnComplete !== null )\n\t\t\t{\n\t\t\t\toConfig.fnComplete.call( that, nButton, oConfig, flash, text );\n\t\t\t}\n\t\t\tthat._fnCollectionHide( nButton, oConfig );\n\t\t} );\n\t\t\n\t\tthis._fnFlashGlue( flash, nButton, oConfig.sToolTip );\n\t},\n\t\n\t\n\t/**\n\t * Wait until the id is in the DOM before we \"glue\" the swf. Note that this function will call\n\t * itself (using setTimeout) until it completes successfully\n\t *  @method  _fnFlashGlue\n\t *  @param   {Object} clip Zero clipboard object\n\t *  @param   {Node} node node to glue swf to\n\t *  @param   {String} text title of the flash movie\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashGlue\": function ( flash, node, text )\n\t{\n\t\tvar that = this;\n\t\tvar id = node.getAttribute('id');\n\t\t\n\t\tif ( document.getElementById(id) )\n\t\t{\n\t\t\tflash.glue( node, text );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout( function () {\n\t\t\t\tthat._fnFlashGlue( flash, node, text );\n\t\t\t}, 100 );\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Set the text for the flash clip to deal with\n\t * \n\t * This function is required for large information sets. There is a limit on the \n\t * amount of data that can be transferred between Javascript and Flash in a single call, so\n\t * we use this method to build up the text in Flash by sending over chunks. It is estimated\n\t * that the data limit is around 64k, although it is undocumented, and appears to be different\n\t * between different flash versions. We chunk at 8KiB.\n\t *  @method  _fnFlashSetText\n\t *  @param   {Object} clip the ZeroClipboard object\n\t *  @param   {String} sData the data to be set\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnFlashSetText\": function ( clip, sData )\n\t{\n\t\tvar asData = this._fnChunkData( sData, 8192 );\n\t\t\n\t\tclip.clearText();\n\t\tfor ( var i=0, iLen=asData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tclip.appendText( asData[i] );\n\t\t}\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Data retrieval functions\n\t */\n\t\n\t/**\n\t * Convert the mixed columns variable into a boolean array the same size as the columns, which\n\t * indicates which columns we want to include\n\t *  @method  _fnColumnTargets\n\t *  @param   {String|Array} mColumns The columns to be included in data retrieval. If a string\n\t *\t\t\t then it can take the value of \"visible\" or \"hidden\" (to include all visible or\n\t *\t\t\t hidden columns respectively). Or an array of column indexes\n\t *  @returns {Array} A boolean array the length of the columns of the table, which each value\n\t *\t\t\t indicating if the column is to be included or not\n\t *  @private \n\t */\n\t\"_fnColumnTargets\": function ( mColumns )\n\t{\n\t\tvar aColumns = [];\n\t\tvar dt = this.s.dt;\n\t\t\n\t\tif ( typeof mColumns == \"object\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( false );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=mColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns[ mColumns[i] ] = true;\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"visible\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bVisible ? true : false );\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"hidden\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bVisible ? false : true );\n\t\t\t}\n\t\t}\n\t\telse if ( mColumns == \"sortable\" )\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( dt.aoColumns[i].bSortable ? true : false );\n\t\t\t}\n\t\t}\n\t\telse /* all */\n\t\t{\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taColumns.push( true );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn aColumns;\n\t},\n\t\n\t\n\t/**\n\t * New line character(s) depend on the platforms\n\t *  @method  method\n\t *  @param   {Object} oConfig Button configuration object - only interested in oConfig.sNewLine\n\t *  @returns {String} Newline character\n\t */\n\t\"_fnNewline\": function ( oConfig )\n\t{\n\t\tif ( oConfig.sNewLine == \"auto\" )\n\t\t{\n\t\t\treturn navigator.userAgent.match(/Windows/) ? \"\\r\\n\" : \"\\n\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn oConfig.sNewLine;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Get data from DataTables' internals and format it for output\n\t *  @method  _fnGetDataTablesData\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @param   {String} oConfig.sFieldBoundary Field boundary for the data cells in the string\n\t *  @param   {String} oConfig.sFieldSeperator Field separator for the data cells\n\t *  @param   {String} oConfig.sNewline New line options\n\t *  @param   {Mixed} oConfig.mColumns Which columns should be included in the output\n\t *  @param   {Boolean} oConfig.bHeader Include the header\n\t *  @param   {Boolean} oConfig.bFooter Include the footer\n\t *  @param   {Boolean} oConfig.bSelectedOnly Include only the selected rows in the output\n\t *  @returns {String} Concatenated string of data\n\t *  @private \n\t */\n\t\"_fnGetDataTablesData\": function ( oConfig )\n\t{\n\t\tvar i, iLen, j, jLen;\n\t\tvar aRow, aData=[], sLoopData='', arr;\n\t\tvar dt = this.s.dt, tr, child;\n\t\tvar regex = new RegExp(oConfig.sFieldBoundary, \"g\"); /* Do it here for speed */\n\t\tvar aColumnsInc = this._fnColumnTargets( oConfig.mColumns );\n\t\tvar bSelectedOnly = (typeof oConfig.bSelectedOnly != 'undefined') ? oConfig.bSelectedOnly : false;\n\t\t\n\t\t/*\n\t\t * Header\n\t\t */\n\t\tif ( oConfig.bHeader )\n\t\t{\n\t\t\taRow = [];\n\t\t\t\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = dt.aoColumns[i].sTitle.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" ).replace(/^\\s+|\\s+$/g,\"\");\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n\t\t}\n\t\t\n\t\t/*\n\t\t * Body\n\t\t */\n\t\tvar aDataIndex = dt.aiDisplay;\n\t\tvar aSelected = this.fnGetSelected();\n\t\tif ( this.s.select.type !== \"none\" && bSelectedOnly && aSelected.length !== 0 )\n\t\t{\n\t\t\taDataIndex = [];\n\t\t\tfor ( i=0, iLen=aSelected.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taDataIndex.push( dt.oInstance.fnGetPosition( aSelected[i] ) );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor ( j=0, jLen=aDataIndex.length ; j<jLen ; j++ )\n\t\t{\n\t\t\ttr = dt.aoData[ aDataIndex[j] ].nTr;\n\t\t\taRow = [];\n\t\t\t\n\t\t\t/* Columns */\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] )\n\t\t\t\t{\n\t\t\t\t\t/* Convert to strings (with small optimisation) */\n\t\t\t\t\tvar mTypeData = dt.oApi._fnGetCellData( dt, aDataIndex[j], i, 'display' );\n\t\t\t\t\tif ( oConfig.fnCellRender )\n\t\t\t\t\t{\n\t\t\t\t\t\tsLoopData = oConfig.fnCellRender( mTypeData, i, tr, aDataIndex[j] )+\"\";\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof mTypeData == \"string\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Strip newlines, replace img tags with alt attr. and finally strip html... */\n\t\t\t\t\t\tsLoopData = mTypeData.replace(/\\n/g,\" \");\n\t\t\t\t\t\tsLoopData =\n\t\t\t\t\t\t \tsLoopData.replace(/<img.*?\\s+alt\\s*=\\s*(?:\"([^\"]+)\"|'([^']+)'|([^\\s>]+)).*?>/gi,\n\t\t\t\t\t\t \t\t'$1$2$3');\n\t\t\t\t\t\tsLoopData = sLoopData.replace( /<.*?>/g, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsLoopData = mTypeData+\"\";\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Trim and clean the data */\n\t\t\t\t\tsLoopData = sLoopData.replace(/^\\s+/, '').replace(/\\s+$/, '');\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\t/* Bound it and add it to the total data */\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n      \n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n      \n\t\t\t/* Details rows from fnOpen */\n\t\t\tif ( oConfig.bOpenRows )\n\t\t\t{\n\t\t\t\tarr = $.grep(dt.aoOpenRows, function(o) { return o.nParent === tr; });\n\t\t\t\t\n\t\t\t\tif ( arr.length === 1 )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = this._fnBoundData( $('td', arr[0].nTr).html(), oConfig.sFieldBoundary, regex );\n\t\t\t\t\taData.push( sLoopData );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/*\n\t\t * Footer\n\t\t */\n\t\tif ( oConfig.bFooter && dt.nTFoot !== null )\n\t\t{\n\t\t\taRow = [];\n\t\t\t\n\t\t\tfor ( i=0, iLen=dt.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aColumnsInc[i] && dt.aoColumns[i].nTf !== null )\n\t\t\t\t{\n\t\t\t\t\tsLoopData = dt.aoColumns[i].nTf.innerHTML.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t\t\tsLoopData = this._fnHtmlDecode( sLoopData );\n\t\t\t\t\t\n\t\t\t\t\taRow.push( this._fnBoundData( sLoopData, oConfig.sFieldBoundary, regex ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\taData.push( aRow.join(oConfig.sFieldSeperator) );\n\t\t}\n\t\t\n\t\t_sLastData = aData.join( this._fnNewline(oConfig) );\n\t\treturn _sLastData;\n\t},\n\t\n\t\n\t/**\n\t * Wrap data up with a boundary string\n\t *  @method  _fnBoundData\n\t *  @param   {String} sData data to bound\n\t *  @param   {String} sBoundary bounding char(s)\n\t *  @param   {RegExp} regex search for the bounding chars - constructed outside for efficiency\n\t *\t\t\t in the loop\n\t *  @returns {String} bound data\n\t *  @private \n\t */\n\t\"_fnBoundData\": function ( sData, sBoundary, regex )\n\t{\n\t\tif ( sBoundary === \"\" )\n\t\t{\n\t\t\treturn sData;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn sBoundary + sData.replace(regex, sBoundary+sBoundary) + sBoundary;\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Break a string up into an array of smaller strings\n\t *  @method  _fnChunkData\n\t *  @param   {String} sData data to be broken up\n\t *  @param   {Int} iSize chunk size\n\t *  @returns {Array} String array of broken up text\n\t *  @private \n\t */\n\t\"_fnChunkData\": function ( sData, iSize )\n\t{\n\t\tvar asReturn = [];\n\t\tvar iStrlen = sData.length;\n\t\t\n\t\tfor ( var i=0 ; i<iStrlen ; i+=iSize )\n\t\t{\n\t\t\tif ( i+iSize < iStrlen )\n\t\t\t{\n\t\t\t\tasReturn.push( sData.substring( i, i+iSize ) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tasReturn.push( sData.substring( i, iStrlen ) );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn asReturn;\n\t},\n\t\n\t\n\t/**\n\t * Decode HTML entities\n\t *  @method  _fnHtmlDecode\n\t *  @param   {String} sData encoded string\n\t *  @returns {String} decoded string\n\t *  @private \n\t */\n\t\"_fnHtmlDecode\": function ( sData )\n\t{\n\t\tif ( sData.indexOf('&') === -1 )\n\t\t{\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\tvar n = document.createElement('div');\n\n\t\treturn sData.replace( /&([^\\s]*);/g, function( match, match2 ) {\n\t\t\tif ( match.substr(1, 1) === '#' )\n\t\t\t{\n\t\t\t\treturn String.fromCharCode( Number(match2.substr(1)) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tn.innerHTML = match;\n\t\t\t\treturn n.childNodes[0].nodeValue;\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Printing functions\n\t */\n\t\n\t/**\n\t * Show print display\n\t *  @method  _fnPrintStart\n\t *  @param   {Event} e Event object\n\t *  @param   {Object} oConfig Button configuration object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintStart\": function ( oConfig )\n\t{\n\t  var that = this;\n\t  var oSetDT = this.s.dt;\n\t  \n\t\t/* Parse through the DOM hiding everything that isn't needed for the table */\n\t\tthis._fnPrintHideNodes( oSetDT.nTable );\n\t\t\n\t\t/* Show the whole table */\n\t\tthis.s.print.saveStart = oSetDT._iDisplayStart;\n\t\tthis.s.print.saveLength = oSetDT._iDisplayLength;\n\n\t\tif ( oConfig.bShowAll )\n\t\t{\n\t\t\toSetDT._iDisplayStart = 0;\n\t\t\toSetDT._iDisplayLength = -1;\n\t\t\toSetDT.oApi._fnCalculateEnd( oSetDT );\n\t\t\toSetDT.oApi._fnDraw( oSetDT );\n\t\t}\n\t\t\n\t\t/* Adjust the display for scrolling which might be done by DataTables */\n\t\tif ( oSetDT.oScroll.sX !== \"\" || oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tthis._fnPrintScrollStart( oSetDT );\n\n\t\t\t// If the table redraws while in print view, the DataTables scrolling\n\t\t\t// setup would hide the header, so we need to readd it on draw\n\t\t\t$(this.s.dt.nTable).bind('draw.DTTT_Print', function () {\n\t\t\t\tthat._fnPrintScrollStart( oSetDT );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/* Remove the other DataTables feature nodes - but leave the table! and info div */\n\t\tvar anFeature = oSetDT.aanFeatures;\n\t\tfor ( var cFeature in anFeature )\n\t\t{\n\t\t\tif ( cFeature != 'i' && cFeature != 't' && cFeature.length == 1 )\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=anFeature[cFeature].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.dom.print.hidden.push( {\n\t\t\t\t\t\t\"node\": anFeature[cFeature][i],\n\t\t\t\t\t\t\"display\": \"block\"\n\t\t\t\t\t} );\n\t\t\t\t\tanFeature[cFeature][i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Print class can be used for styling */\n\t\t$(document.body).addClass( this.classes.print.body );\n\n\t\t/* Show information message to let the user know what is happening */\n\t\tif ( oConfig.sInfo !== \"\" )\n\t\t{\n\t\t\tthis.fnInfo( oConfig.sInfo, 3000 );\n\t\t}\n\n\t\t/* Add a message at the top of the page */\n\t\tif ( oConfig.sMessage )\n\t\t{\n\t\t\tthis.dom.print.message = document.createElement( \"div\" );\n\t\t\tthis.dom.print.message.className = this.classes.print.message;\n\t\t\tthis.dom.print.message.innerHTML = oConfig.sMessage;\n\t\t\tdocument.body.insertBefore( this.dom.print.message, document.body.childNodes[0] );\n\t\t}\n\t\t\n\t\t/* Cache the scrolling and the jump to the top of the page */\n\t\tthis.s.print.saveScroll = $(window).scrollTop();\n\t\twindow.scrollTo( 0, 0 );\n\n\t\t/* Bind a key event listener to the document for the escape key -\n\t\t * it is removed in the callback\n\t\t */\n\t\t$(document).bind( \"keydown.DTTT\", function(e) {\n\t\t\t/* Only interested in the escape key */\n\t\t\tif ( e.keyCode == 27 )\n\t\t\t{\n\t\t\t\te.preventDefault();\n\t\t\t\tthat._fnPrintEnd.call( that, e );\n\t\t\t}\n\t\t} );\n\t},\n\t\n\t\n\t/**\n\t * Printing is finished, resume normal display\n\t *  @method  _fnPrintEnd\n\t *  @param   {Event} e Event object\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintEnd\": function ( e )\n\t{\n\t\tvar that = this;\n\t\tvar oSetDT = this.s.dt;\n\t\tvar oSetPrint = this.s.print;\n\t\tvar oDomPrint = this.dom.print;\n\t\t\n\t\t/* Show all hidden nodes */\n\t\tthis._fnPrintShowNodes();\n\t\t\n\t\t/* Restore DataTables' scrolling */\n\t\tif ( oSetDT.oScroll.sX !== \"\" || oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\t$(this.s.dt.nTable).unbind('draw.DTTT_Print');\n\n\t\t\tthis._fnPrintScrollEnd();\n\t\t}\n\t\t\n\t\t/* Restore the scroll */\n\t\twindow.scrollTo( 0, oSetPrint.saveScroll );\n\t\t\n\t\t/* Drop the print message */\n\t\tif ( oDomPrint.message !== null )\n\t\t{\n\t\t\tdocument.body.removeChild( oDomPrint.message );\n\t\t\toDomPrint.message = null;\n\t\t}\n\t\t\n\t\t/* Styling class */\n\t\t$(document.body).removeClass( 'DTTT_Print' );\n\t\t\n\t\t/* Restore the table length */\n\t\toSetDT._iDisplayStart = oSetPrint.saveStart;\n\t\toSetDT._iDisplayLength = oSetPrint.saveLength;\n\t\toSetDT.oApi._fnCalculateEnd( oSetDT );\n\t\toSetDT.oApi._fnDraw( oSetDT );\n\t\t\n\t\t$(document).unbind( \"keydown.DTTT\" );\n\t},\n\t\n\t\n\t/**\n\t * Take account of scrolling in DataTables by showing the full table\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintScrollStart\": function ()\n\t{\n\t\tvar \n\t\t\toSetDT = this.s.dt,\n\t\t\tnScrollHeadInner = oSetDT.nScrollHead.getElementsByTagName('div')[0],\n\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\tnScrollBody = oSetDT.nTable.parentNode;\n\n\t\t/* Copy the header in the thead in the body table, this way we show one single table when\n\t\t * in print view. Note that this section of code is more or less verbatim from DT 1.7.0\n\t\t */\n\t\tvar nTheadSize = oSetDT.nTable.getElementsByTagName('thead');\n\t\tif ( nTheadSize.length > 0 )\n\t\t{\n\t\t\toSetDT.nTable.removeChild( nTheadSize[0] );\n\t\t}\n\t\t\n\t\tif ( oSetDT.nTFoot !== null )\n\t\t{\n\t\t\tvar nTfootSize = oSetDT.nTable.getElementsByTagName('tfoot');\n\t\t\tif ( nTfootSize.length > 0 )\n\t\t\t{\n\t\t\t\toSetDT.nTable.removeChild( nTfootSize[0] );\n\t\t\t}\n\t\t}\n\t\t\n\t\tnTheadSize = oSetDT.nTHead.cloneNode(true);\n\t\toSetDT.nTable.insertBefore( nTheadSize, oSetDT.nTable.childNodes[0] );\n\t\t\n\t\tif ( oSetDT.nTFoot !== null )\n\t\t{\n\t\t\tnTfootSize = oSetDT.nTFoot.cloneNode(true);\n\t\t\toSetDT.nTable.insertBefore( nTfootSize, oSetDT.nTable.childNodes[1] );\n\t\t}\n\t\t\n\t\t/* Now adjust the table's viewport so we can actually see it */\n\t\tif ( oSetDT.oScroll.sX !== \"\" )\n\t\t{\n\t\t\toSetDT.nTable.style.width = $(oSetDT.nTable).outerWidth()+\"px\";\n\t\t\tnScrollBody.style.width = $(oSetDT.nTable).outerWidth()+\"px\";\n\t\t\tnScrollBody.style.overflow = \"visible\";\n\t\t}\n\t\t\n\t\tif ( oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.height = $(oSetDT.nTable).outerHeight()+\"px\";\n\t\t\tnScrollBody.style.overflow = \"visible\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Take account of scrolling in DataTables by showing the full table. Note that the redraw of\n\t * the DataTable that we do will actually deal with the majority of the hard work here\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintScrollEnd\": function ()\n\t{\n\t\tvar \n\t\t\toSetDT = this.s.dt,\n\t\t\tnScrollBody = oSetDT.nTable.parentNode;\n\t\t\n\t\tif ( oSetDT.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.width = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sX );\n\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t}\n\t\t\n\t\tif ( oSetDT.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnScrollBody.style.height = oSetDT.oApi._fnStringToCss( oSetDT.oScroll.sY );\n\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t}\n\t},\n\t\n\t\n\t/**\n\t * Resume the display of all TableTools hidden nodes\n\t *  @method  _fnPrintShowNodes\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintShowNodes\": function ( )\n\t{\n\t  var anHidden = this.dom.print.hidden;\n\t  \n\t\tfor ( var i=0, iLen=anHidden.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tanHidden[i].node.style.display = anHidden[i].display;\n\t\t}\n\t\tanHidden.splice( 0, anHidden.length );\n\t},\n\t\n\t\n\t/**\n\t * Hide nodes which are not needed in order to display the table. Note that this function is\n\t * recursive\n\t *  @method  _fnPrintHideNodes\n\t *  @param   {Node} nNode Element which should be showing in a 'print' display\n\t *  @returns void\n\t *  @private \n\t */\n\t\"_fnPrintHideNodes\": function ( nNode )\n\t{\n\t  var anHidden = this.dom.print.hidden;\n\t  \n\t\tvar nParent = nNode.parentNode;\n\t\tvar nChildren = nParent.childNodes;\n\t\tfor ( var i=0, iLen=nChildren.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( nChildren[i] != nNode && nChildren[i].nodeType == 1 )\n\t\t\t{\n\t\t\t\t/* If our node is shown (don't want to show nodes which were previously hidden) */\n\t\t\t\tvar sDisplay = $(nChildren[i]).css(\"display\");\n\t\t\t \tif ( sDisplay != \"none\" )\n\t\t\t\t{\n\t\t\t\t\t/* Cache the node and it's previous state so we can restore it */\n\t\t\t\t\tanHidden.push( {\n\t\t\t\t\t\t\"node\": nChildren[i],\n\t\t\t\t\t\t\"display\": sDisplay\n\t\t\t\t\t} );\n\t\t\t\t\tnChildren[i].style.display = \"none\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( nParent.nodeName != \"BODY\" )\n\t\t{\n\t\t\tthis._fnPrintHideNodes( nParent );\n\t\t}\n\t}\n};\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static variables\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Store of all instances that have been created of TableTools, so one can look up other (when\n * there is need of a master)\n *  @property _aInstances\n *  @type\t Array\n *  @default  []\n *  @private\n */\nTableTools._aInstances = [];\n\n\n/**\n * Store of all listeners and their callback functions\n *  @property _aListeners\n *  @type\t Array\n *  @default  []\n */\nTableTools._aListeners = [];\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Static methods\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/**\n * Get an array of all the master instances\n *  @method  fnGetMasters\n *  @returns {Array} List of master TableTools instances\n *  @static\n */\nTableTools.fnGetMasters = function ()\n{\n\tvar a = [];\n\tfor ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( TableTools._aInstances[i].s.master )\n\t\t{\n\t\t\ta.push( TableTools._aInstances[i] );\n\t\t}\n\t}\n\treturn a;\n};\n\n/**\n * Get the master instance for a table node (or id if a string is given)\n *  @method  fnGetInstance\n *  @returns {Object} ID of table OR table node, for which we want the TableTools instance\n *  @static\n */\nTableTools.fnGetInstance = function ( node )\n{\n\tif ( typeof node != 'object' )\n\t{\n\t\tnode = document.getElementById(node);\n\t}\n\t\n\tfor ( var i=0, iLen=TableTools._aInstances.length ; i<iLen ; i++ )\n\t{\n\t\tif ( TableTools._aInstances[i].s.master && TableTools._aInstances[i].dom.table == node )\n\t\t{\n\t\t\treturn TableTools._aInstances[i];\n\t\t}\n\t}\n\treturn null;\n};\n\n\n/**\n * Add a listener for a specific event\n *  @method  _fnEventListen\n *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)\n *  @param   {String} type Event type\n *  @param   {Function} fn Function\n *  @returns void\n *  @private\n *  @static\n */\nTableTools._fnEventListen = function ( that, type, fn )\n{\n\tTableTools._aListeners.push( {\n\t\t\"that\": that,\n\t\t\"type\": type,\n\t\t\"fn\": fn\n\t} );\n};\n\t\n\n/**\n * An event has occurred - look up every listener and fire it off. We check that the event we are\n * going to fire is attached to the same table (using the table node as reference) before firing\n *  @method  _fnEventDispatch\n *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)\n *  @param   {String} type Event type\n *  @param   {Node} node Element that the event occurred on (may be null)\n *  @param   {boolean} [selected] Indicate if the node was selected (true) or deselected (false)\n *  @returns void\n *  @private\n *  @static\n */\nTableTools._fnEventDispatch = function ( that, type, node, selected )\n{\n\tvar listeners = TableTools._aListeners;\n\tfor ( var i=0, iLen=listeners.length ; i<iLen ; i++ )\n\t{\n\t\tif ( that.dom.table == listeners[i].that.dom.table && listeners[i].type == type )\n\t\t{\n\t\t\tlisteners[i].fn( node, selected );\n\t\t}\n\t}\n};\n\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Constants\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n\nTableTools.buttonBase = {\n\t// Button base\n\t\"sAction\": \"text\",\n\t\"sTag\": \"default\",\n\t\"sLinerTag\": \"default\",\n\t\"sButtonClass\": \"DTTT_button_text\",\n\t\"sButtonText\": \"Button text\",\n\t\"sTitle\": \"\",\n\t\"sToolTip\": \"\",\n\n\t// Common button specific options\n\t\"sCharSet\": \"utf8\",\n\t\"bBomInc\": false,\n\t\"sFileName\": \"*.csv\",\n\t\"sFieldBoundary\": \"\",\n\t\"sFieldSeperator\": \"\\t\",\n\t\"sNewLine\": \"auto\",\n\t\"mColumns\": \"all\", /* \"all\", \"visible\", \"hidden\" or array of column integers */\n\t\"bHeader\": true,\n\t\"bFooter\": true,\n\t\"bOpenRows\": false,\n\t\"bSelectedOnly\": false,\n\n\t// Callbacks\n\t\"fnMouseover\": null,\n\t\"fnMouseout\": null,\n\t\"fnClick\": null,\n\t\"fnSelect\": null,\n\t\"fnComplete\": null,\n\t\"fnInit\": null,\n\t\"fnCellRender\": null\n};\n\n\n/**\n * @namespace Default button configurations\n */\nTableTools.BUTTONS = {\n\t\"csv\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_save\",\n\t\t\"sButtonClass\": \"DTTT_button_csv\",\n\t\t\"sButtonText\": \"CSV\",\n\t\t\"sFieldBoundary\": '\"',\n\t\t\"sFieldSeperator\": \",\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t}\n\t} ),\n\n\t\"xls\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_save\",\n\t\t\"sCharSet\": \"utf16le\",\n\t\t\"bBomInc\": true,\n\t\t\"sButtonClass\": \"DTTT_button_xls\",\n\t\t\"sButtonText\": \"Excel\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t}\n\t} ),\n\n\t\"copy\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_copy\",\n\t\t\"sButtonClass\": \"DTTT_button_copy\",\n\t\t\"sButtonText\": \"Copy\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, this.fnGetTableData(oConfig) );\n\t\t},\n\t\t\"fnComplete\": function(nButton, oConfig, flash, text) {\n\t\t\tvar\n\t\t\t\tlines = text.split('\\n').length,\n\t\t\t\tlen = this.s.dt.nTFoot === null ? lines-1 : lines-2,\n\t\t\t\tplural = (len==1) ? \"\" : \"s\";\n\t\t\tthis.fnInfo( '<h6>Table copied</h6>'+\n\t\t\t\t'<p>Copied '+len+' row'+plural+' to the clipboard.</p>',\n\t\t\t\t1500\n\t\t\t);\n\t\t}\n\t} ),\n\n\t\"pdf\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"flash_pdf\",\n\t\t\"sNewLine\": \"\\n\",\n\t\t\"sFileName\": \"*.pdf\",\n\t\t\"sButtonClass\": \"DTTT_button_pdf\",\n\t\t\"sButtonText\": \"PDF\",\n\t\t\"sPdfOrientation\": \"portrait\",\n\t\t\"sPdfSize\": \"A4\",\n\t\t\"sPdfMessage\": \"\",\n\t\t\"fnClick\": function( nButton, oConfig, flash ) {\n\t\t\tthis.fnSetText( flash, \n\t\t\t\t\"title:\"+ this.fnGetTitle(oConfig) +\"\\n\"+\n\t\t\t\t\"message:\"+ oConfig.sPdfMessage +\"\\n\"+\n\t\t\t\t\"colWidth:\"+ this.fnCalcColRatios(oConfig) +\"\\n\"+\n\t\t\t\t\"orientation:\"+ oConfig.sPdfOrientation +\"\\n\"+\n\t\t\t\t\"size:\"+ oConfig.sPdfSize +\"\\n\"+\n\t\t\t\t\"--/TableToolsOpts--\\n\" +\n\t\t\t\tthis.fnGetTableData(oConfig)\n\t\t\t);\n\t\t}\n\t} ),\n\n\t\"print\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sInfo\": \"<h6>Print view</h6><p>Please use your browser's print function to \"+\n\t\t  \"print this table. Press escape when finished.\",\n\t\t\"sMessage\": null,\n\t\t\"bShowAll\": true,\n\t\t\"sToolTip\": \"View print view\",\n\t\t\"sButtonClass\": \"DTTT_button_print\",\n\t\t\"sButtonText\": \"Print\",\n\t\t\"fnClick\": function ( nButton, oConfig ) {\n\t\t\tthis.fnPrint( true, oConfig );\n\t\t}\n\t} ),\n\n\t\"text\": $.extend( {}, TableTools.buttonBase ),\n\n\t\"select\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select button\",\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length !== 0 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"select_single\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select button\",\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tvar iSelected = this.fnGetSelected().length;\n\t\t\tif ( iSelected == 1 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"select_all\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Select all\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis.fnSelectAll();\n\t\t},\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length == this.s.dt.fnRecordsDisplay() ) {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t}\n\t} ),\n\n\t\"select_none\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sButtonText\": \"Deselect all\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis.fnSelectNone();\n\t\t},\n\t\t\"fnSelect\": function( nButton, oConfig ) {\n\t\t\tif ( this.fnGetSelected().length !== 0 ) {\n\t\t\t\t$(nButton).removeClass( this.classes.buttons.disabled );\n\t\t\t} else {\n\t\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t\t}\n\t\t},\n\t\t\"fnInit\": function( nButton, oConfig ) {\n\t\t\t$(nButton).addClass( this.classes.buttons.disabled );\n\t\t}\n\t} ),\n\n\t\"ajax\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAjaxUrl\": \"/xhr.php\",\n\t\t\"sButtonText\": \"Ajax button\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tvar sData = this.fnGetTableData(oConfig);\n\t\t\t$.ajax( {\n\t\t\t\t\"url\": oConfig.sAjaxUrl,\n\t\t\t\t\"data\": [\n\t\t\t\t\t{ \"name\": \"tableData\", \"value\": sData }\n\t\t\t\t],\n\t\t\t\t\"success\": oConfig.fnAjaxComplete,\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"type\": \"POST\", \n\t\t\t\t\"cache\": false,\n\t\t\t\t\"error\": function () {\n\t\t\t\t\talert( \"Error detected when sending table data to server\" );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t\"fnAjaxComplete\": function( json ) {\n\t\t\talert( 'Ajax complete' );\n\t\t}\n\t} ),\n\n\t\"div\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"div\",\n\t\t\"sTag\": \"div\",\n\t\t\"sButtonClass\": \"DTTT_nonbutton\",\n\t\t\"sButtonText\": \"Text button\"\n\t} ),\n\n\t\"collection\": $.extend( {}, TableTools.buttonBase, {\n\t\t\"sAction\": \"collection\",\n\t\t\"sButtonClass\": \"DTTT_button_collection\",\n\t\t\"sButtonText\": \"Collection\",\n\t\t\"fnClick\": function( nButton, oConfig ) {\n\t\t\tthis._fnCollectionShow(nButton, oConfig);\n\t\t}\n\t} )\n};\n/*\n *  on* callback parameters:\n *  \t1. node - button element\n *  \t2. object - configuration object for this button\n *  \t3. object - ZeroClipboard reference (flash button only)\n *  \t4. string - Returned string from Flash (flash button only - and only on 'complete')\n */\n\n\n\n/**\n * @namespace Classes used by TableTools - allows the styles to be override easily.\n *   Note that when TableTools initialises it will take a copy of the classes object\n *   and will use its internal copy for the remainder of its run time.\n */\nTableTools.classes = {\n\t\"container\": \"DTTT_container\",\n\t\"buttons\": {\n\t\t\"normal\": \"DTTT_button\",\n\t\t\"disabled\": \"DTTT_disabled\"\n\t},\n\t\"collection\": {\n\t\t\"container\": \"DTTT_collection\",\n\t\t\"background\": \"DTTT_collection_background\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"DTTT_button\",\n\t\t\t\"disabled\": \"DTTT_disabled\"\n\t\t}\n\t},\n\t\"select\": {\n\t\t\"table\": \"DTTT_selectable\",\n\t\t\"row\": \"DTTT_selected\"\n\t},\n\t\"print\": {\n\t\t\"body\": \"DTTT_Print\",\n\t\t\"info\": \"DTTT_print_info\",\n\t\t\"message\": \"DTTT_PrintMessage\"\n\t}\n};\n\n\n/**\n * @namespace ThemeRoller classes - built in for compatibility with DataTables' \n *   bJQueryUI option.\n */\nTableTools.classes_themeroller = {\n\t\"container\": \"DTTT_container ui-buttonset ui-buttonset-multi\",\n\t\"buttons\": {\n\t\t\"normal\": \"DTTT_button ui-button ui-state-default\"\n\t},\n\t\"collection\": {\n\t\t\"container\": \"DTTT_collection ui-buttonset ui-buttonset-multi\"\n\t}\n};\n\n\n/**\n * @namespace TableTools default settings for initialisation\n */\nTableTools.DEFAULTS = {\n\t\"sSwfPath\":        \"media/swf/copy_csv_xls_pdf.swf\",\n\t\"sRowSelect\":      \"none\",\n\t\"sSelectedClass\":  null,\n\t\"fnPreRowSelect\":  null,\n\t\"fnRowSelected\":   null,\n\t\"fnRowDeselected\": null,\n\t\"aButtons\":        [ \"copy\", \"csv\", \"xls\", \"pdf\", \"print\" ],\n\t\"oTags\": {\n\t\t\"container\": \"div\",\n\t\t\"button\": \"a\", // We really want to use buttons here, but Firefox and IE ignore the\n\t\t                 // click on the Flash element in the button (but not mouse[in|out]).\n\t\t\"liner\": \"span\",\n\t\t\"collection\": {\n\t\t\t\"container\": \"div\",\n\t\t\t\"button\": \"a\",\n\t\t\t\"liner\": \"span\"\n\t\t}\n\t}\n};\n\n\n/**\n * Name of this class\n *  @constant CLASS\n *  @type\t String\n *  @default  TableTools\n */\nTableTools.prototype.CLASS = \"TableTools\";\n\n\n/**\n * TableTools version\n *  @constant  VERSION\n *  @type\t  String\n *  @default   See code\n */\nTableTools.VERSION = \"2.1.4\";\nTableTools.prototype.VERSION = TableTools.VERSION;\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Initialisation\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n/*\n * Register a new feature with DataTables\n */\nif ( typeof $.fn.dataTable == \"function\" &&\n\t typeof $.fn.dataTableExt.fnVersionCheck == \"function\" &&\n\t $.fn.dataTableExt.fnVersionCheck('1.9.0') )\n{\n\t$.fn.dataTableExt.aoFeatures.push( {\n\t\t\"fnInit\": function( oDTSettings ) {\n\t\t\tvar oOpts = typeof oDTSettings.oInit.oTableTools != 'undefined' ? \n\t\t\t\toDTSettings.oInit.oTableTools : {};\n\t\t\t\n\t\t\tvar oTT = new TableTools( oDTSettings.oInstance, oOpts );\n\t\t\tTableTools._aInstances.push( oTT );\n\t\t\t\n\t\t\treturn oTT.dom.container;\n\t\t},\n\t\t\"cFeature\": \"T\",\n\t\t\"sFeature\": \"TableTools\"\n\t} );\n}\nelse\n{\n\talert( \"Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download\");\n}\n\n$.fn.DataTable.TableTools = TableTools;\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/extras/TableTools/media/js/ZeroClipboard.js",
    "content": "// Simple Set Clipboard System\n// Author: Joseph Huckaby\n\nvar ZeroClipboard_TableTools = {\n\t\n\tversion: \"1.0.4-TableTools2\",\n\tclients: {}, // registered upload clients on page, indexed by id\n\tmoviePath: '', // URL to movie\n\tnextId: 1, // ID of next movie\n\t\n\t$: function(thingy) {\n\t\t// simple DOM lookup utility function\n\t\tif (typeof(thingy) == 'string') thingy = document.getElementById(thingy);\n\t\tif (!thingy.addClass) {\n\t\t\t// extend element with a few useful methods\n\t\t\tthingy.hide = function() { this.style.display = 'none'; };\n\t\t\tthingy.show = function() { this.style.display = ''; };\n\t\t\tthingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };\n\t\t\tthingy.removeClass = function(name) {\n\t\t\t\tthis.className = this.className.replace( new RegExp(\"\\\\s*\" + name + \"\\\\s*\"), \" \").replace(/^\\s+/, '').replace(/\\s+$/, '');\n\t\t\t};\n\t\t\tthingy.hasClass = function(name) {\n\t\t\t\treturn !!this.className.match( new RegExp(\"\\\\s*\" + name + \"\\\\s*\") );\n\t\t\t}\n\t\t}\n\t\treturn thingy;\n\t},\n\t\n\tsetMoviePath: function(path) {\n\t\t// set path to ZeroClipboard.swf\n\t\tthis.moviePath = path;\n\t},\n\t\n\tdispatch: function(id, eventName, args) {\n\t\t// receive event from flash movie, send to client\t\t\n\t\tvar client = this.clients[id];\n\t\tif (client) {\n\t\t\tclient.receiveEvent(eventName, args);\n\t\t}\n\t},\n\t\n\tregister: function(id, client) {\n\t\t// register new client to receive events\n\t\tthis.clients[id] = client;\n\t},\n\t\n\tgetDOMObjectPosition: function(obj) {\n\t\t// get absolute coordinates for dom element\n\t\tvar info = {\n\t\t\tleft: 0, \n\t\t\ttop: 0, \n\t\t\twidth: obj.width ? obj.width : obj.offsetWidth, \n\t\t\theight: obj.height ? obj.height : obj.offsetHeight\n\t\t};\n\t\t\n\t\tif ( obj.style.width != \"\" )\n\t\t\tinfo.width = obj.style.width.replace(\"px\",\"\");\n\t\t\n\t\tif ( obj.style.height != \"\" )\n\t\t\tinfo.height = obj.style.height.replace(\"px\",\"\");\n\n\t\twhile (obj) {\n\t\t\tinfo.left += obj.offsetLeft;\n\t\t\tinfo.top += obj.offsetTop;\n\t\t\tobj = obj.offsetParent;\n\t\t}\n\n\t\treturn info;\n\t},\n\t\n\tClient: function(elem) {\n\t\t// constructor for new simple upload client\n\t\tthis.handlers = {};\n\t\t\n\t\t// unique ID\n\t\tthis.id = ZeroClipboard_TableTools.nextId++;\n\t\tthis.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;\n\t\t\n\t\t// register client with singleton to receive flash events\n\t\tZeroClipboard_TableTools.register(this.id, this);\n\t\t\n\t\t// create movie\n\t\tif (elem) this.glue(elem);\n\t}\n};\n\nZeroClipboard_TableTools.Client.prototype = {\n\t\n\tid: 0, // unique ID for us\n\tready: false, // whether movie is ready to receive events or not\n\tmovie: null, // reference to movie object\n\tclipText: '', // text to copy to clipboard\n\tfileName: '', // default file save name\n\taction: 'copy', // action to perform\n\thandCursorEnabled: true, // whether to show hand cursor, or default pointer cursor\n\tcssEffects: true, // enable CSS mouse effects on dom container\n\thandlers: null, // user event handlers\n\tsized: false,\n\t\n\tglue: function(elem, title) {\n\t\t// glue to DOM element\n\t\t// elem can be ID or actual DOM element object\n\t\tthis.domElement = ZeroClipboard_TableTools.$(elem);\n\t\t\n\t\t// float just above object, or zIndex 99 if dom element isn't set\n\t\tvar zIndex = 99;\n\t\tif (this.domElement.style.zIndex) {\n\t\t\tzIndex = parseInt(this.domElement.style.zIndex) + 1;\n\t\t}\n\t\t\n\t\t// find X/Y position of domElement\n\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\t\n\t\t// create floating DIV above element\n\t\tthis.div = document.createElement('div');\n\t\tvar style = this.div.style;\n\t\tstyle.position = 'absolute';\n\t\tstyle.left = '0px';\n\t\tstyle.top = '0px';\n\t\tstyle.width = (box.width) + 'px';\n\t\tstyle.height = box.height + 'px';\n\t\tstyle.zIndex = zIndex;\n\t\t\n\t\tif ( typeof title != \"undefined\" && title != \"\" ) {\n\t\t\tthis.div.title = title;\n\t\t}\n\t\tif ( box.width != 0 && box.height != 0 ) {\n\t\t\tthis.sized = true;\n\t\t}\n\t\t\n\t\t// style.backgroundColor = '#f00'; // debug\n\t\tif ( this.domElement ) {\n\t\t\tthis.domElement.appendChild(this.div);\n\t\t\tthis.div.innerHTML = this.getHTML( box.width, box.height );\n\t\t}\n\t},\n\t\n\tpositionElement: function() {\n\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\tvar style = this.div.style;\n\t\t\n\t\tstyle.position = 'absolute';\n\t\t//style.left = (this.domElement.offsetLeft)+'px';\n\t\t//style.top = this.domElement.offsetTop+'px';\n\t\tstyle.width = box.width + 'px';\n\t\tstyle.height = box.height + 'px';\n\t\t\n\t\tif ( box.width != 0 && box.height != 0 ) {\n\t\t\tthis.sized = true;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar flash = this.div.childNodes[0];\n\t\tflash.width = box.width;\n\t\tflash.height = box.height;\n\t},\n\t\n\tgetHTML: function(width, height) {\n\t\t// return HTML for movie\n\t\tvar html = '';\n\t\tvar flashvars = 'id=' + this.id + \n\t\t\t'&width=' + width + \n\t\t\t'&height=' + height;\n\t\t\t\n\t\tif (navigator.userAgent.match(/MSIE/)) {\n\t\t\t// IE gets an OBJECT tag\n\t\t\tvar protocol = location.href.match(/^https/i) ? 'https://' : 'http://';\n\t\t\thtml += '<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0\" width=\"'+width+'\" height=\"'+height+'\" id=\"'+this.movieId+'\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"always\" /><param name=\"allowFullScreen\" value=\"false\" /><param name=\"movie\" value=\"'+ZeroClipboard_TableTools.moviePath+'\" /><param name=\"loop\" value=\"false\" /><param name=\"menu\" value=\"false\" /><param name=\"quality\" value=\"best\" /><param name=\"bgcolor\" value=\"#ffffff\" /><param name=\"flashvars\" value=\"'+flashvars+'\"/><param name=\"wmode\" value=\"transparent\"/></object>';\n\t\t}\n\t\telse {\n\t\t\t// all other browsers get an EMBED tag\n\t\t\thtml += '<embed id=\"'+this.movieId+'\" src=\"'+ZeroClipboard_TableTools.moviePath+'\" loop=\"false\" menu=\"false\" quality=\"best\" bgcolor=\"#ffffff\" width=\"'+width+'\" height=\"'+height+'\" name=\"'+this.movieId+'\" align=\"middle\" allowScriptAccess=\"always\" allowFullScreen=\"false\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" flashvars=\"'+flashvars+'\" wmode=\"transparent\" />';\n\t\t}\n\t\treturn html;\n\t},\n\t\n\thide: function() {\n\t\t// temporarily hide floater offscreen\n\t\tif (this.div) {\n\t\t\tthis.div.style.left = '-2000px';\n\t\t}\n\t},\n\t\n\tshow: function() {\n\t\t// show ourselves after a call to hide()\n\t\tthis.reposition();\n\t},\n\t\n\tdestroy: function() {\n\t\t// destroy control and floater\n\t\tif (this.domElement && this.div) {\n\t\t\tthis.hide();\n\t\t\tthis.div.innerHTML = '';\n\t\t\t\n\t\t\tvar body = document.getElementsByTagName('body')[0];\n\t\t\ttry { body.removeChild( this.div ); } catch(e) {;}\n\t\t\t\n\t\t\tthis.domElement = null;\n\t\t\tthis.div = null;\n\t\t}\n\t},\n\t\n\treposition: function(elem) {\n\t\t// reposition our floating div, optionally to new container\n\t\t// warning: container CANNOT change size, only position\n\t\tif (elem) {\n\t\t\tthis.domElement = ZeroClipboard_TableTools.$(elem);\n\t\t\tif (!this.domElement) this.hide();\n\t\t}\n\t\t\n\t\tif (this.domElement && this.div) {\n\t\t\tvar box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);\n\t\t\tvar style = this.div.style;\n\t\t\tstyle.left = '' + box.left + 'px';\n\t\t\tstyle.top = '' + box.top + 'px';\n\t\t}\n\t},\n\t\n\tclearText: function() {\n\t\t// clear the text to be copy / saved\n\t\tthis.clipText = '';\n\t\tif (this.ready) this.movie.clearText();\n\t},\n\t\n\tappendText: function(newText) {\n\t\t// append text to that which is to be copied / saved\n\t\tthis.clipText += newText;\n\t\tif (this.ready) { this.movie.appendText(newText) ;}\n\t},\n\t\n\tsetText: function(newText) {\n\t\t// set text to be copied to be copied / saved\n\t\tthis.clipText = newText;\n\t\tif (this.ready) { this.movie.setText(newText) ;}\n\t},\n\t\n\tsetCharSet: function(charSet) {\n\t\t// set the character set (UTF16LE or UTF8)\n\t\tthis.charSet = charSet;\n\t\tif (this.ready) { this.movie.setCharSet(charSet) ;}\n\t},\n\t\n\tsetBomInc: function(bomInc) {\n\t\t// set if the BOM should be included or not\n\t\tthis.incBom = bomInc;\n\t\tif (this.ready) { this.movie.setBomInc(bomInc) ;}\n\t},\n\t\n\tsetFileName: function(newText) {\n\t\t// set the file name\n\t\tthis.fileName = newText;\n\t\tif (this.ready) this.movie.setFileName(newText);\n\t},\n\t\n\tsetAction: function(newText) {\n\t\t// set action (save or copy)\n\t\tthis.action = newText;\n\t\tif (this.ready) this.movie.setAction(newText);\n\t},\n\t\n\taddEventListener: function(eventName, func) {\n\t\t// add user event listener for event\n\t\t// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel\n\t\teventName = eventName.toString().toLowerCase().replace(/^on/, '');\n\t\tif (!this.handlers[eventName]) this.handlers[eventName] = [];\n\t\tthis.handlers[eventName].push(func);\n\t},\n\t\n\tsetHandCursor: function(enabled) {\n\t\t// enable hand cursor (true), or default arrow cursor (false)\n\t\tthis.handCursorEnabled = enabled;\n\t\tif (this.ready) this.movie.setHandCursor(enabled);\n\t},\n\t\n\tsetCSSEffects: function(enabled) {\n\t\t// enable or disable CSS effects on DOM container\n\t\tthis.cssEffects = !!enabled;\n\t},\n\t\n\treceiveEvent: function(eventName, args) {\n\t\t// receive event from flash\n\t\teventName = eventName.toString().toLowerCase().replace(/^on/, '');\n\t\t\n\t\t// special behavior for certain events\n\t\tswitch (eventName) {\n\t\t\tcase 'load':\n\t\t\t\t// movie claims it is ready, but in IE this isn't always the case...\n\t\t\t\t// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function\n\t\t\t\tthis.movie = document.getElementById(this.movieId);\n\t\t\t\tif (!this.movie) {\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tsetTimeout( function() { self.receiveEvent('load', null); }, 1 );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// firefox on pc needs a \"kick\" in order to set these in certain cases\n\t\t\t\tif (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tsetTimeout( function() { self.receiveEvent('load', null); }, 100 );\n\t\t\t\t\tthis.ready = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.ready = true;\n\t\t\t\tthis.movie.clearText();\n\t\t\t\tthis.movie.appendText( this.clipText );\n\t\t\t\tthis.movie.setFileName( this.fileName );\n\t\t\t\tthis.movie.setAction( this.action );\n\t\t\t\tthis.movie.setCharSet( this.charSet );\n\t\t\t\tthis.movie.setBomInc( this.incBom );\n\t\t\t\tthis.movie.setHandCursor( this.handCursorEnabled );\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseover':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\t//this.domElement.addClass('hover');\n\t\t\t\t\tif (this.recoverActive) this.domElement.addClass('active');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseout':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.recoverActive = false;\n\t\t\t\t\tif (this.domElement.hasClass('active')) {\n\t\t\t\t\t\tthis.domElement.removeClass('active');\n\t\t\t\t\t\tthis.recoverActive = true;\n\t\t\t\t\t}\n\t\t\t\t\t//this.domElement.removeClass('hover');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mousedown':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.domElement.addClass('active');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 'mouseup':\n\t\t\t\tif (this.domElement && this.cssEffects) {\n\t\t\t\t\tthis.domElement.removeClass('active');\n\t\t\t\t\tthis.recoverActive = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t} // switch eventName\n\t\t\n\t\tif (this.handlers[eventName]) {\n\t\t\tfor (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {\n\t\t\t\tvar func = this.handlers[eventName][idx];\n\t\t\t\n\t\t\t\tif (typeof(func) == 'function') {\n\t\t\t\t\t// actual function reference\n\t\t\t\t\tfunc(this, args);\n\t\t\t\t}\n\t\t\t\telse if ((typeof(func) == 'object') && (func.length == 2)) {\n\t\t\t\t\t// PHP style object + method, i.e. [myObject, 'myMethod']\n\t\t\t\t\tfunc[0][ func[1] ](this, args);\n\t\t\t\t}\n\t\t\t\telse if (typeof(func) == 'string') {\n\t\t\t\t\t// name of function\n\t\t\t\t\twindow[func](this, args);\n\t\t\t\t}\n\t\t\t} // foreach event handler defined\n\t\t} // user defined handler for event\n\t}\n\t\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/DT_bootstrap.css",
    "content": "\ndiv.dataTables_length label {\n\tfloat: left;\n\ttext-align: left;\n}\n\ndiv.dataTables_length select {\n\twidth: 75px;\n}\n\ndiv.dataTables_filter label {\n\tfloat: right;\n}\n\ndiv.dataTables_info {\n\tpadding-top: 0;\n}\n\ndiv.dataTables_paginate {\n\tfloat: right;\n\tmargin: 0;\n}\n\ntable.dynamicTable.table {\n\tclear: both;\n\tmargin-bottom: 0 !important;\n\tmax-width: none !important;\n}\n\ntable.table thead .sorting,\ntable.table thead .sorting_asc,\ntable.table thead .sorting_desc,\ntable.table thead .sorting_asc_disabled,\ntable.table thead .sorting_desc_disabled {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.table thead .sorting { background-image: url('../images/sort_both.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_asc { background-image: url('../images/sort_asc.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_desc { background-image: url('../images/sort_desc.png'); background-repeat: no-repeat; background-position: center right; }\n\ntable.table thead .sorting_asc_disabled { background-image: url('../images/sort_asc_disabled.png'); background-repeat: no-repeat; background-position: center right; }\ntable.table thead .sorting_desc_disabled { background-image: url('../images/sort_desc_disabled.png'); background-repeat: no-repeat; background-position: center right; }\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n/* Scrolling */\ndiv.dataTables_scrollHead table {\n\tmargin-bottom: 0 !important;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\ndiv.dataTables_scrollHead table thead tr:last-child th:first-child,\ndiv.dataTables_scrollHead table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody tbody tr:first-child th,\ndiv.dataTables_scrollBody tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n\tborder-top: none;\n}\n\n\n\n\n/*\n * TableTools styles\n */\n.table tbody tr.active td,\n.table tbody tr.active th {\n\tbackground-color: #08C;\n\tcolor: white;\n}\n\n.table tbody tr.active:hover td,\n.table tbody tr.active:hover th {\n\tbackground-color: #0075b0 !important;\n}\n\n.table-striped tbody tr.active:nth-child(odd) td,\n.table-striped tbody tr.active:nth-child(odd) th {\n\tbackground-color: #017ebc;\n}\n\ntable.DTTT_selectable tbody tr {\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ndiv.DTTT .btn {\n\tcolor: #333 !important;\n\tfont-size: 12px;\n}\n\ndiv.DTTT .btn:hover {\n\ttext-decoration: none !important;\n}\n\n\nul.DTTT_dropdown.dropdown-menu a {\n\tcolor: #333 !important; /* needed only when demo_page.css is included */\n}\n\nul.DTTT_dropdown.dropdown-menu li:hover a {\n\tbackground-color: #0088cc;\n\tcolor: white !important;\n}\n\n/* TableTools information display */\ndiv.DTTT_print_info.modal {\n\theight: 150px;\n\tmargin-top: -75px;\n\ttext-align: center;\n}\n\ndiv.DTTT_print_info h6 {\n\tfont-weight: normal;\n\tfont-size: 28px;\n\tline-height: 28px;\n\tmargin: 1em;\n}\n\ndiv.DTTT_print_info p {\n\tfont-size: 14px;\n\tline-height: 20px;\n}\n\n\n\n/*\n * FixedColumns styles\n */\ndiv.DTFC_LeftHeadWrapper table,\ndiv.DTFC_LeftFootWrapper table,\ntable.DTFC_Cloned tr.even {\n\tbackground-color: white;\n}\n\ndiv.DTFC_LeftHeadWrapper table {\n\tmargin-bottom: 0 !important;\n\tborder-top-right-radius: 0 !important;\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,\ndiv.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {\n\tborder-bottom-left-radius: 0 !important;\n\tborder-bottom-right-radius: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper table {\n\tborder-top: none;\n\tmargin-bottom: 0 !important;\n}\n\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child th,\ndiv.DTFC_LeftBodyWrapper tbody tr:first-child td {\n\tborder-top: none;\n}\n\ndiv.DTFC_LeftFootWrapper table {\n\tborder-top: none;\n}\n\n.dataTables_wrapper label { margin-bottom: 0; }\n.dataTables_wrapper .row-fluid:first-child { padding: 0 0 15px; }\n.dataTables_wrapper .row-fluid:last-child { padding: 15px 0 0; }\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_page.css",
    "content": "\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * General page setup\n */\n#dt_example {\n\tfont: 80%/1.45em \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: #333;\n\tbackground-color: #fff;\n}\n\n\n#dt_example #container {\n\twidth: 800px;\n\tmargin: 30px auto;\n\tpadding: 0;\n}\n\n\n#dt_example #footer {\n\tmargin: 50px auto 0 auto;\n\tpadding: 0;\n}\n\n#dt_example #demo {\n\tmargin: 30px auto 0 auto;\n}\n\n#dt_example .demo_jui {\n\tmargin: 30px auto 0 auto;\n}\n\n#dt_example .big {\n\tfont-size: 1.3em;\n\tfont-weight: bold;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n}\n\n#dt_example .spacer {\n\theight: 20px;\n\tclear: both;\n}\n\n#dt_example .clear {\n\tclear: both;\n}\n\n#dt_example pre {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n#dt_example h1 {\n\tmargin-top: 2em;\n\tfont-size: 1.3em;\n\tfont-weight: normal;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n\tborder-bottom: 1px solid #B0BED9;\n\tclear: both;\n}\n\n#dt_example h2 {\n\tfont-size: 1.2em;\n\tfont-weight: normal;\n\tline-height: 1.6em;\n\tcolor: #4E6CA3;\n\tclear: both;\n}\n\n#dt_example a {\n\tcolor: #0063DC;\n\ttext-decoration: none;\n}\n\n#dt_example a:hover {\n\ttext-decoration: underline;\n}\n\n#dt_example ul {\n\tcolor: #4E6CA3;\n}\n\n.css_right {\n\tfloat: right;\n}\n\n.css_left {\n\tfloat: left;\n}\n\n.demo_links {\n\tfloat: left;\n\twidth: 50%;\n\tmargin-bottom: 1em;\n}\n\n#demo_info {\n\tpadding: 5px;\n\tborder: 1px solid #B0BED9;\n\theight: 100px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n#dt_example code {\n\tfont-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n\tpadding: 2px 4px !important;\n\twhite-space: nowrap;\n\tfont-size: 0.9em;\n\n\tcolor: #D14;\n\tbackground-color: #F7F7F9;\n\n\tborder: 1px solid #E1E1E8;\n\t-webkit-border-radius: 3px;\n\t   -moz-border-radius: 3px;\n\t        border-radius: 3px;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table.css",
    "content": "/*\n *  File:         demo_table.css\n *  CVS:          $Id$\n *  Description:  CSS descriptions for DataTables demo pages\n *  Author:       Allan Jardine\n *  Created:      Tue May 12 06:47:22 BST 2009\n *  Modified:     $Date$ by $Author$\n *  Language:     CSS\n *  Project:      DataTables\n *\n *  Copyright 2009 Allan Jardine. All Rights Reserved.\n *\n * ***************************************************************************\n * DESCRIPTION\n *\n * The styles given here are suitable for the demos that are used with the standard DataTables\n * distribution (see www.datatables.net). You will most likely wish to modify these styles to\n * meet the layout requirements of your site.\n *\n * Common issues:\n *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is\n *     no conflict between the two pagination types. If you want to use full_numbers pagination\n *     ensure that you either have \"example_alt_pagination\" as a body class name, or better yet,\n *     modify that selector.\n *   Note that the path used for Images is relative. All images are by default located in\n *     ../images/ - relative to this CSS file.\n */\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables features\n */\n\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\tzoom: 1; /* Feeling sorry for IE */\n}\n\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n.dataTables_length {\n\twidth: 40%;\n\tfloat: left;\n}\n\n.dataTables_filter {\n\twidth: 50%;\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_info {\n\twidth: 60%;\n\tfloat: left;\n}\n\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n/* Pagination nested */\n.paginate_disabled_previous, .paginate_enabled_previous,\n.paginate_disabled_next, .paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover, .paginate_enabled_previous:hover,\n.paginate_disabled_next:hover, .paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active, .paginate_enabled_previous:active,\n.paginate_disabled_next:active, .paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous, .paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next, .paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_disabled_previous {\n\tbackground: url('../images/back_disabled.png') no-repeat top left;\n}\n\n.paginate_enabled_previous {\n\tbackground: url('../images/back_enabled.png') no-repeat top left;\n}\n.paginate_enabled_previous:hover {\n\tbackground: url('../images/back_enabled_hover.png') no-repeat top left;\n}\n\n.paginate_disabled_next {\n\tbackground: url('../images/forward_disabled.png') no-repeat top right;\n}\n\n.paginate_enabled_next {\n\tbackground: url('../images/forward_enabled.png') no-repeat top right;\n}\n.paginate_enabled_next:hover {\n\tbackground: url('../images/forward_enabled_hover.png') no-repeat top right;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables display\n */\ntable.display {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n\t\n\t/* Note Firefox 3.5 and before have a bug with border-collapse\n\t * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) \n\t * border-spacing: 0; is one possible option. Conditional-css.com is\n\t * useful for this kind of thing\n\t *\n\t * Further note IE 6/7 has problems when calculating widths with border width.\n\t * It subtracts one px relative to the other browsers from the first column, and\n\t * adds one to the end...\n\t *\n\t * If you want that effect I'd suggest setting a border-top/left on th/td's and \n\t * then filling in the gaps with other borders.\n\t */\n}\n\ntable.display thead th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-bottom: 1px solid black;\n\tfont-weight: bold;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\ntable.display tfoot th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-top: 1px solid black;\n\tfont-weight: bold;\n}\n\ntable.display tr.heading2 td {\n\tborder-bottom: 1px solid #aaa;\n}\n\ntable.display td {\n\tpadding: 3px 10px;\n}\n\ntable.display td.center {\n\ttext-align: center;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables sorting\n */\n\n.sorting_asc {\n\tbackground: url('../images/sort_asc.png') no-repeat center right;\n}\n\n.sorting_desc {\n\tbackground: url('../images/sort_desc.png') no-repeat center right;\n}\n\n.sorting {\n\tbackground: url('../images/sort_both.png') no-repeat center right;\n}\n\n.sorting_asc_disabled {\n\tbackground: url('../images/sort_asc_disabled.png') no-repeat center right;\n}\n\n.sorting_desc_disabled {\n\tbackground: url('../images/sort_desc_disabled.png') no-repeat center right;\n}\n \ntable.display thead th:active,\ntable.display thead td:active {\n\toutline: none;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables row classes\n */\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.odd.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.even.gradeC {\n\tbackground-color: #eeeeff;\n}\n\ntable.display tr.odd.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.even.gradeX {\n\tbackground-color: #ffeeee;\n}\n\ntable.display tr.odd.gradeU {\n\tbackground-color: #ddd;\n}\n\ntable.display tr.even.gradeU {\n\tbackground-color: #eee;\n}\n\n\ntr.odd {\n\tbackground-color: #E2E4FF;\n}\n\ntr.even {\n\tbackground-color: white;\n}\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Misc\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n.top, .bottom {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n.top .dataTables_info {\n\tfloat: none;\n}\n\n.clear {\n\tclear: both;\n}\n\n.dataTables_empty {\n\ttext-align: center;\n}\n\ntfoot input {\n\tmargin: 0.5em 0;\n\twidth: 100%;\n\tcolor: #444;\n}\n\ntfoot input.search_init {\n\tcolor: #999;\n}\n\ntd.group {\n\tbackground-color: #d1cfd0;\n\tborder-bottom: 2px solid #A19B9E;\n\tborder-top: 2px solid #A19B9E;\n}\n\ntd.details {\n\tbackground-color: #d1cfd0;\n\tborder: 2px solid #A19B9E;\n}\n\n\n.example_alt_pagination div.dataTables_info {\n\twidth: 40%;\n}\n\n.paging_full_numbers {\n\twidth: 400px;\n\theight: 22px;\n\tline-height: 22px;\n}\n\n.paging_full_numbers a:active {\n\toutline: none\n}\n\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n \t.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\ntable.display tr.even.row_selected td {\n\tbackground-color: #B0BED9;\n}\n\ntable.display tr.odd.row_selected td {\n\tbackground-color: #9FAFD1;\n}\n\n\n/*\n * Sorting classes for columns\n */\n/* For the standard odd/even */\ntr.odd td.sorting_1 {\n\tbackground-color: #D3D6FF;\n}\n\ntr.odd td.sorting_2 {\n\tbackground-color: #DADCFF;\n}\n\ntr.odd td.sorting_3 {\n\tbackground-color: #E0E2FF;\n}\n\ntr.even td.sorting_1 {\n\tbackground-color: #EAEBFF;\n}\n\ntr.even td.sorting_2 {\n\tbackground-color: #F2F3FF;\n}\n\ntr.even td.sorting_3 {\n\tbackground-color: #F9F9FF;\n}\n\n\n/* For the Conditional-CSS grading rows */\n/*\n \tColour calculations (based off the main row colours)\n  Level 1:\n\t\tdd > c4\n\t\tee > d5\n\tLevel 2:\n\t  dd > d1\n\t  ee > e2\n */\ntr.odd.gradeA td.sorting_1 {\n\tbackground-color: #c4ffc4;\n}\n\ntr.odd.gradeA td.sorting_2 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.odd.gradeA td.sorting_3 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.even.gradeA td.sorting_1 {\n\tbackground-color: #d5ffd5;\n}\n\ntr.even.gradeA td.sorting_2 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.even.gradeA td.sorting_3 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.odd.gradeC td.sorting_1 {\n\tbackground-color: #c4c4ff;\n}\n\ntr.odd.gradeC td.sorting_2 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.odd.gradeC td.sorting_3 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.even.gradeC td.sorting_1 {\n\tbackground-color: #d5d5ff;\n}\n\ntr.even.gradeC td.sorting_2 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.even.gradeC td.sorting_3 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.odd.gradeX td.sorting_1 {\n\tbackground-color: #ffc4c4;\n}\n\ntr.odd.gradeX td.sorting_2 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.odd.gradeX td.sorting_3 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.even.gradeX td.sorting_1 {\n\tbackground-color: #ffd5d5;\n}\n\ntr.even.gradeX td.sorting_2 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.even.gradeX td.sorting_3 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.odd.gradeU td.sorting_1 {\n\tbackground-color: #c4c4c4;\n}\n\ntr.odd.gradeU td.sorting_2 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.odd.gradeU td.sorting_3 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.even.gradeU td.sorting_1 {\n\tbackground-color: #d5d5d5;\n}\n\ntr.even.gradeU td.sorting_2 {\n\tbackground-color: #e2e2e2;\n}\n\ntr.even.gradeU td.sorting_3 {\n\tbackground-color: #e2e2e2;\n}\n\n\n/*\n * Row highlighting example\n */\n.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {\n\tbackground-color: #E6FF99;\n}\n\n.ex_highlight_row #example tr.even:hover {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_1 {\n\tbackground-color: #DDFF75;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_2 {\n\tbackground-color: #E7FF9E;\n}\n\n.ex_highlight_row #example tr.even:hover td.sorting_3 {\n\tbackground-color: #E2FF89;\n}\n\n.ex_highlight_row #example tr.odd:hover {\n\tbackground-color: #E6FF99;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_1 {\n\tbackground-color: #D6FF5C;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_2 {\n\tbackground-color: #E0FF84;\n}\n\n.ex_highlight_row #example tr.odd:hover td.sorting_3 {\n\tbackground-color: #DBFF70;\n}\n\n\n/*\n * KeyTable\n */\ntable.KeyTable td {\n\tborder: 3px solid transparent;\n}\n\ntable.KeyTable td.focus {\n\tborder: 3px solid #3366FF;\n}\n\ntable.display tr.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.gradeU {\n\tbackground-color: #ddd;\n}\n\ndiv.box {\n\theight: 100px;\n\tpadding: 10px;\n\toverflow: auto;\n\tborder: 1px solid #8080FF;\n\tbackground-color: #E5E5FF;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/demo_table_jui.css",
    "content": "/*\n *  File:         demo_table_jui.css\n *  CVS:          $Id$\n *  Description:  CSS descriptions for DataTables demo pages\n *  Author:       Allan Jardine\n *  Created:      Tue May 12 06:47:22 BST 2009\n *  Modified:     $Date$ by $Author$\n *  Language:     CSS\n *  Project:      DataTables\n *\n *  Copyright 2009 Allan Jardine. All Rights Reserved.\n *\n * ***************************************************************************\n * DESCRIPTION\n *\n * The styles given here are suitable for the demos that are used with the standard DataTables\n * distribution (see www.datatables.net). You will most likely wish to modify these styles to\n * meet the layout requirements of your site.\n *\n * Common issues:\n *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is\n *     no conflict between the two pagination types. If you want to use full_numbers pagination\n *     ensure that you either have \"example_alt_pagination\" as a body class name, or better yet,\n *     modify that selector.\n *   Note that the path used for Images is relative. All images are by default located in\n *     ../images/ - relative to this CSS file.\n */\n\n\n/*\n * jQuery UI specific styling\n */\n\n.paging_two_button .ui-button {\n\tfloat: left;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\n.paging_full_numbers .ui-button {\n\tpadding: 2px 6px;\n\tmargin: 0;\n\tcursor: pointer;\n\t* cursor: hand;\n\tcolor: #333 !important;\n}\n\n.dataTables_paginate .ui-button {\n\tmargin-right: -0.1em !important;\n}\n\n.paging_full_numbers {\n\twidth: 350px !important;\n}\n\n.dataTables_wrapper .ui-toolbar {\n\tpadding: 5px;\n}\n\n.dataTables_paginate {\n\twidth: auto;\n}\n\n.dataTables_info {\n\tpadding-top: 3px;\n}\n\ntable.display thead th {\n\tpadding: 3px 0px 3px 10px;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\ndiv.dataTables_wrapper .ui-widget-header {\n\tfont-weight: normal;\n}\n\n\n/*\n * Sort arrow icon positioning\n */\ntable.display thead th div.DataTables_sort_wrapper {\n\tposition: relative;\n\tpadding-right: 20px;\n}\n\ntable.display thead th div.DataTables_sort_wrapper span {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n\tright: 0;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * Everything below this line is the same as demo_table.css. This file is\n * required for 'cleanliness' of the markup\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables features\n */\n\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n}\n\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 50%;\n\twidth: 250px;\n\tmargin-left: -125px;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 11px;\n\tpadding: 2px 0;\n}\n\n.dataTables_length {\n\twidth: 40%;\n\tfloat: left;\n}\n\n.dataTables_filter {\n\twidth: 50%;\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_info {\n\twidth: 50%;\n\tfloat: left;\n}\n\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables display\n */\ntable.display {\n\tmargin: 0 auto;\n\twidth: 100%;\n\tclear: both;\n\tborder-collapse: collapse;\n}\n\ntable.display tfoot th {\n\tpadding: 3px 0px 3px 10px;\n\tfont-weight: bold;\n\tfont-weight: normal;\n}\n\ntable.display tr.heading2 td {\n\tborder-bottom: 1px solid #aaa;\n}\n\ntable.display td {\n\tpadding: 3px 10px;\n}\n\ntable.display td.center {\n\ttext-align: center;\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables sorting\n */\n\n.sorting_asc {\n\tbackground: url('../images/sort_asc.png') no-repeat center right;\n}\n\n.sorting_desc {\n\tbackground: url('../images/sort_desc.png') no-repeat center right;\n}\n\n.sorting {\n\tbackground: url('../images/sort_both.png') no-repeat center right;\n}\n\n.sorting_asc_disabled {\n\tbackground: url('../images/sort_asc_disabled.png') no-repeat center right;\n}\n\n.sorting_desc_disabled {\n\tbackground: url('../images/sort_desc_disabled.png') no-repeat center right;\n}\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables row classes\n */\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\n\n\n\ntable.display tr.odd.gradeA {\n\tbackground-color: #ddffdd;\n}\n\ntable.display tr.even.gradeA {\n\tbackground-color: #eeffee;\n}\n\ntable.display tr.odd.gradeC {\n\tbackground-color: #ddddff;\n}\n\ntable.display tr.even.gradeC {\n\tbackground-color: #eeeeff;\n}\n\ntable.display tr.odd.gradeX {\n\tbackground-color: #ffdddd;\n}\n\ntable.display tr.even.gradeX {\n\tbackground-color: #ffeeee;\n}\n\ntable.display tr.odd.gradeU {\n\tbackground-color: #ddd;\n}\n\ntable.display tr.even.gradeU {\n\tbackground-color: #eee;\n}\n\n\ntr.odd {\n\tbackground-color: #E2E4FF;\n}\n\ntr.even {\n\tbackground-color: white;\n}\n\n\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Misc\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t-webkit-overflow-scrolling: touch;\n}\n\n.top, .bottom {\n\tpadding: 15px;\n\tbackground-color: #F5F5F5;\n\tborder: 1px solid #CCCCCC;\n}\n\n.top .dataTables_info {\n\tfloat: none;\n}\n\n.clear {\n\tclear: both;\n}\n\n.dataTables_empty {\n\ttext-align: center;\n}\n\ntfoot input {\n\tmargin: 0.5em 0;\n\twidth: 100%;\n\tcolor: #444;\n}\n\ntfoot input.search_init {\n\tcolor: #999;\n}\n\ntd.group {\n\tbackground-color: #d1cfd0;\n\tborder-bottom: 2px solid #A19B9E;\n\tborder-top: 2px solid #A19B9E;\n}\n\ntd.details {\n\tbackground-color: #d1cfd0;\n\tborder: 2px solid #A19B9E;\n}\n\n\n.example_alt_pagination div.dataTables_info {\n\twidth: 40%;\n}\n\n.paging_full_numbers a.paginate_button,\n \t.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\ntable.display tr.even.row_selected td {\n\tbackground-color: #B0BED9;\n}\n\ntable.display tr.odd.row_selected td {\n\tbackground-color: #9FAFD1;\n}\n\n\n/*\n * Sorting classes for columns\n */\n/* For the standard odd/even */\ntr.odd td.sorting_1 {\n\tbackground-color: #D3D6FF;\n}\n\ntr.odd td.sorting_2 {\n\tbackground-color: #DADCFF;\n}\n\ntr.odd td.sorting_3 {\n\tbackground-color: #E0E2FF;\n}\n\ntr.even td.sorting_1 {\n\tbackground-color: #EAEBFF;\n}\n\ntr.even td.sorting_2 {\n\tbackground-color: #F2F3FF;\n}\n\ntr.even td.sorting_3 {\n\tbackground-color: #F9F9FF;\n}\n\n\n/* For the Conditional-CSS grading rows */\n/*\n \tColour calculations (based off the main row colours)\n  Level 1:\n\t\tdd > c4\n\t\tee > d5\n\tLevel 2:\n\t  dd > d1\n\t  ee > e2\n */\ntr.odd.gradeA td.sorting_1 {\n\tbackground-color: #c4ffc4;\n}\n\ntr.odd.gradeA td.sorting_2 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.odd.gradeA td.sorting_3 {\n\tbackground-color: #d1ffd1;\n}\n\ntr.even.gradeA td.sorting_1 {\n\tbackground-color: #d5ffd5;\n}\n\ntr.even.gradeA td.sorting_2 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.even.gradeA td.sorting_3 {\n\tbackground-color: #e2ffe2;\n}\n\ntr.odd.gradeC td.sorting_1 {\n\tbackground-color: #c4c4ff;\n}\n\ntr.odd.gradeC td.sorting_2 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.odd.gradeC td.sorting_3 {\n\tbackground-color: #d1d1ff;\n}\n\ntr.even.gradeC td.sorting_1 {\n\tbackground-color: #d5d5ff;\n}\n\ntr.even.gradeC td.sorting_2 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.even.gradeC td.sorting_3 {\n\tbackground-color: #e2e2ff;\n}\n\ntr.odd.gradeX td.sorting_1 {\n\tbackground-color: #ffc4c4;\n}\n\ntr.odd.gradeX td.sorting_2 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.odd.gradeX td.sorting_3 {\n\tbackground-color: #ffd1d1;\n}\n\ntr.even.gradeX td.sorting_1 {\n\tbackground-color: #ffd5d5;\n}\n\ntr.even.gradeX td.sorting_2 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.even.gradeX td.sorting_3 {\n\tbackground-color: #ffe2e2;\n}\n\ntr.odd.gradeU td.sorting_1 {\n\tbackground-color: #c4c4c4;\n}\n\ntr.odd.gradeU td.sorting_2 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.odd.gradeU td.sorting_3 {\n\tbackground-color: #d1d1d1;\n}\n\ntr.even.gradeU td.sorting_1 {\n\tbackground-color: #d5d5d5;\n}\n\ntr.even.gradeU td.sorting_2 {\n\tbackground-color: #e2e2e2;\n}\n\ntr.even.gradeU td.sorting_3 {\n\tbackground-color: #e2e2e2;\n}\n\n\n/*\n * Row highlighting example\n */\n.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {\n\tbackground-color: #ECFFB3;\n}\n\n.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {\n\tbackground-color: #E6FF99;\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables.css",
    "content": "\n/*\n * Table\n */\ntable.dataTable {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n}\n\ntable.dataTable thead th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-bottom: 1px solid black;\n\tfont-weight: bold;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.dataTable tfoot th {\n\tpadding: 3px 18px 3px 10px;\n\tborder-top: 1px solid black;\n\tfont-weight: bold;\n}\n\ntable.dataTable td {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td.center,\ntable.dataTable td.dataTables_empty {\n\ttext-align: center;\n}\n\ntable.dataTable tr.odd { background-color: #E2E4FF; }\ntable.dataTable tr.even { background-color: white; }\n\ntable.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }\ntable.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }\ntable.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }\ntable.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }\ntable.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }\ntable.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }\n\n\n/*\n * Table wrapper\n */\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\t*zoom: 1;\n}\n\n\n/*\n * Page length menu\n */\n.dataTables_length {\n\tfloat: left;\n}\n\n\n/*\n * Filter\n */\n.dataTables_filter {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n/*\n * Table information\n */\n.dataTables_info {\n\tclear: both;\n\tfloat: left;\n}\n\n\n/*\n * Pagination\n */\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n/* Two button pagination - previous / next */\n.paginate_disabled_previous,\n.paginate_enabled_previous,\n.paginate_disabled_next,\n.paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover,\n.paginate_enabled_previous:hover,\n.paginate_disabled_next:hover,\n.paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active,\n.paginate_enabled_previous:active,\n.paginate_disabled_next:active,\n.paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous,\n.paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next,\n.paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }\n.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }\n.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }\n\n.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }\n.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }\n.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }\n\n/* Full number pagination */\n.paging_full_numbers {\n\theight: 22px;\n\tline-height: 22px;\n}\n.paging_full_numbers a:active {\n\toutline: none\n}\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tborder-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\n\n/*\n * Processing indicator\n */\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n\n/*\n * Sorting\n */\n.sorting { background: url('../images/sort_both.png') no-repeat center right; }\n.sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }\n.sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }\n\n.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }\n.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }\n \ntable.dataTable thead th:active,\ntable.dataTable thead td:active {\n\toutline: none;\n}\n\n\n/*\n * Scrolling\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/css/jquery.dataTables_themeroller.css",
    "content": "\n\n/*\n * Table\n */\ntable.dataTable {\n\tmargin: 0 auto;\n\tclear: both;\n\twidth: 100%;\n\tborder-collapse: collapse;\n}\n\ntable.dataTable thead th {\n\tpadding: 3px 0px 3px 10px;\n\tcursor: pointer;\n\t*cursor: hand;\n}\n\ntable.dataTable tfoot th {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td {\n\tpadding: 3px 10px;\n}\n\ntable.dataTable td.center,\ntable.dataTable td.dataTables_empty {\n\ttext-align: center;\n}\n\ntable.dataTable tr.odd { background-color: #E2E4FF; }\ntable.dataTable tr.even { background-color: white; }\n\ntable.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }\ntable.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }\ntable.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }\ntable.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }\ntable.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }\ntable.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }\n\n\n/*\n * Table wrapper\n */\n.dataTables_wrapper {\n\tposition: relative;\n\tclear: both;\n\t*zoom: 1;\n}\n.dataTables_wrapper .ui-widget-header {\n\tfont-weight: normal;\n}\n.dataTables_wrapper .ui-toolbar {\n\tpadding: 5px;\n}\n\n\n/*\n * Page length menu\n */\n.dataTables_length {\n\tfloat: left;\n}\n\n\n/*\n * Filter\n */\n.dataTables_filter {\n\tfloat: right;\n\ttext-align: right;\n}\n\n\n/*\n * Table information\n */\n.dataTables_info {\n\tpadding-top: 3px;\n\tclear: both;\n\tfloat: left;\n}\n\n\n/*\n * Pagination\n */\n.dataTables_paginate {\n\tfloat: right;\n\ttext-align: right;\n}\n\n.dataTables_paginate .ui-button {\n\tmargin-right: -0.1em !important;\n}\n\n.paging_two_button .ui-button {\n\tfloat: left;\n\tcursor: pointer;\n\t* cursor: hand;\n}\n\n.paging_full_numbers .ui-button {\n\tpadding: 2px 6px;\n\tmargin: 0;\n\tcursor: pointer;\n\t* cursor: hand;\n\tcolor: #333 !important;\n}\n\n/* Two button pagination - previous / next */\n.paginate_disabled_previous,\n.paginate_enabled_previous,\n.paginate_disabled_next,\n.paginate_enabled_next {\n\theight: 19px;\n\tfloat: left;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #111 !important;\n}\n.paginate_disabled_previous:hover,\n.paginate_enabled_previous:hover,\n.paginate_disabled_next:hover,\n.paginate_enabled_next:hover {\n\ttext-decoration: none !important;\n}\n.paginate_disabled_previous:active,\n.paginate_enabled_previous:active,\n.paginate_disabled_next:active,\n.paginate_enabled_next:active {\n\toutline: none;\n}\n\n.paginate_disabled_previous,\n.paginate_disabled_next {\n\tcolor: #666 !important;\n}\n.paginate_disabled_previous,\n.paginate_enabled_previous {\n\tpadding-left: 23px;\n}\n.paginate_disabled_next,\n.paginate_enabled_next {\n\tpadding-right: 23px;\n\tmargin-left: 10px;\n}\n\n.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; }\n.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; }\n.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; }\n\n.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; }\n.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; }\n.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; }\n\n/* Full number pagination */\n.paging_full_numbers a:active {\n\toutline: none\n}\n.paging_full_numbers a:hover {\n\ttext-decoration: none;\n}\n\n.paging_full_numbers a.paginate_button,\n.paging_full_numbers a.paginate_active {\n\tborder: 1px solid #aaa;\n\t-webkit-border-radius: 5px;\n\t-moz-border-radius: 5px;\n\tborder-radius: 5px;\n\tpadding: 2px 5px;\n\tmargin: 0 3px;\n\tcursor: pointer;\n\t*cursor: hand;\n\tcolor: #333 !important;\n}\n\n.paging_full_numbers a.paginate_button {\n\tbackground-color: #ddd;\n}\n\n.paging_full_numbers a.paginate_button:hover {\n\tbackground-color: #ccc;\n\ttext-decoration: none !important;\n}\n\n.paging_full_numbers a.paginate_active {\n\tbackground-color: #99B3FF;\n}\n\n\n/*\n * Processing indicator\n */\n.dataTables_processing {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 250px;\n\theight: 30px;\n\tmargin-left: -125px;\n\tmargin-top: -15px;\n\tpadding: 14px 0 2px 0;\n\tborder: 1px solid #ddd;\n\ttext-align: center;\n\tcolor: #999;\n\tfont-size: 14px;\n\tbackground-color: white;\n}\n\n\n/*\n * Sorting\n */\ntable.dataTable thead th div.DataTables_sort_wrapper {\n\tposition: relative;\n\tpadding-right: 20px;\n}\n\ntable.dataTable thead th div.DataTables_sort_wrapper span {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n\tright: 0;\n}\n\ntable.dataTable th:active {\n\toutline: none;\n}\n\n\n/*\n * Scrolling\n */\n.dataTables_scroll {\n\tclear: both;\n}\n\n.dataTables_scrollBody {\n\t*margin-top: -1px;\n\t-webkit-overflow-scrolling: touch;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/DT_bootstrap.js",
    "content": "/* Set the defaults for DataTables initialisation */\n$.extend( true, $.fn.dataTable.defaults, {\n\t\"sDom\": \"<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>\",\n\t\"sPaginationType\": \"bootstrap\",\n\t\"oLanguage\": {\n\t\t\"sLengthMenu\": \"_MENU_ records per page\"\n\t}\n} );\n\n\n/* Default class modification */\n$.extend( $.fn.dataTableExt.oStdClasses, {\n\t\"sWrapper\": \"dataTables_wrapper form-inline\"\n} );\n\n\n/* API method to get paging information */\n$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n{\n    return {\n        \"iStart\":         oSettings._iDisplayStart,\n        \"iEnd\":           oSettings.fnDisplayEnd(),\n        \"iLength\":        oSettings._iDisplayLength,\n        \"iTotal\":         oSettings.fnRecordsTotal(),\n        \"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n        \"iPage\":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n        \"iTotalPages\":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n    };\n}\n  \n/* Bootstrap style pagination control */\n$.extend( $.fn.dataTableExt.oPagination, {\n    \"bootstrap\": {\n        \"fnInit\": function( oSettings, nPaging, fnDraw ) {\n            var oLang = oSettings.oLanguage.oPaginate;\n            var fnClickHandler = function ( e ) {\n                e.preventDefault();\n                if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n                    fnDraw( oSettings );\n                }\n            };\n  \n            $(nPaging).addClass('pagination').append(\n                '<ul>' +\n                    '<li class=\"prev disabled\"><a href=\"#\">&larr; ' + oLang.sFirst + '</a></li>' +\n                    '<li class=\"prev disabled\"><a href=\"#\">&larr; '+oLang.sPrevious+'</a></li>'+\n                    '<li class=\"next disabled\"><a href=\"#\">' + oLang.sNext + ' &rarr; </a></li>' +\n                    '<li class=\"next disabled\"><a href=\"#\">' + oLang.sLast + ' &rarr; </a></li>' +\n                '</ul>'\n            );\n            var els = $('a', nPaging);\n            $(els[0]).bind('click.DT', { action: \"first\" }, fnClickHandler);\n            $(els[1]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n            $(els[2]).bind('click.DT', { action: \"next\" }, fnClickHandler);\n            $(els[3]).bind('click.DT', { action: \"last\" }, fnClickHandler);\n        },\n  \n        \"fnUpdate\": function ( oSettings, fnDraw ) {\n            var iListLength = 5;\n            var oPaging = oSettings.oInstance.fnPagingInfo();\n            var an = oSettings.aanFeatures.p;\n            var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n  \n            if ( oPaging.iTotalPages < iListLength) {\n                iStart = 1;\n                iEnd = oPaging.iTotalPages;\n            }\n            else if ( oPaging.iPage <= iHalf ) {\n                iStart = 1;\n                iEnd = iListLength;\n            } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n                iStart = oPaging.iTotalPages - iListLength + 1;\n                iEnd = oPaging.iTotalPages;\n            } else {\n                iStart = oPaging.iPage - iHalf + 1;\n                iEnd = iStart + iListLength - 1;\n            }\n  \n            for ( i=0, iLen=an.length ; i<iLen ; i++ ) {\n                // Remove the middle elements\n                $('li:gt(1)', an[i]).filter(':not(.next)').remove();\n  \n                // Add the new list items and their event handlers\n                for ( j=iStart ; j<=iEnd ; j++ ) {\n                    sClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n                    $('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n                        .insertBefore( $('li.next:first', an[i])[0] )\n                        .bind('click', function (e) {\n                            e.preventDefault();\n                            oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\n                            fnDraw( oSettings );\n                        } );\n                }\n  \n                // Add / remove disabled classes from the static elements\n                if ( oPaging.iPage === 0 ) {\n                    $('li.prev', an[i]).addClass('disabled');\n                } else {\n                    $('li.prev', an[i]).removeClass('disabled');\n                }\n  \n                if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n                    $('li.next', an[i]).addClass('disabled');\n                } else {\n                    $('li.next', an[i]).removeClass('disabled');\n                }\n            }\n        }\n    }\n} );\n\n\n/*\n * TableTools Bootstrap compatibility\n * Required TableTools 2.1+\n */\nif ( $.fn.DataTable.TableTools ) {\n\t// Set the classes that TableTools uses to something suitable for Bootstrap\n\t$.extend( true, $.fn.DataTable.TableTools.classes, {\n\t\t\"container\": \"DTTT btn-group\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"btn\",\n\t\t\t\"disabled\": \"disabled\"\n\t\t},\n\t\t\"collection\": {\n\t\t\t\"container\": \"DTTT_dropdown dropdown-menu\",\n\t\t\t\"buttons\": {\n\t\t\t\t\"normal\": \"\",\n\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t}\n\t\t},\n\t\t\"print\": {\n\t\t\t\"info\": \"DTTT_print_info modal\"\n\t\t},\n\t\t\"select\": {\n\t\t\t\"row\": \"active\"\n\t\t}\n\t} );\n\n\t// Have the collection use a bootstrap compatible dropdown\n\t$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n\t\t\"collection\": {\n\t\t\t\"container\": \"ul\",\n\t\t\t\"button\": \"li\",\n\t\t\t\"liner\": \"a\"\n\t\t}\n\t} );\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.dataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a column to the list used for the table with default values\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nTh The th element for this column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddColumn( oSettings, nTh )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.columns;\n\t\t\tvar iCol = oSettings.aoColumns.length;\n\t\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t\t\t} );\n\t\t\toSettings.aoColumns.push( oCol );\n\t\t\t\n\t\t\t/* Add a column specific filter */\n\t\t\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t\t\t{\n\t\t\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\t\t\n\t\t\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\t\t\tif ( oPre.bRegex === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bRegex = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bSmart === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bSmart = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t\t\t{\n\t\t\t\t\toPre.bCaseInsensitive = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Use the column options function to initialise classes etc */\n\t\t\t_fnColumnOptions( oSettings, iCol, null );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply options for a column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column index to consider\n\t\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\t\t\n\t\t\t/* User specified column options */\n\t\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t\t{\n\t\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t\t\t{\n\t\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oOptions.sType !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = oOptions.sType;\n\t\t\t\t\toCol._bAutoType = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$.extend( oCol, oOptions );\n\t\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\t\n\t\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t\t * priority if defined\n\t\t\t\t */\n\t\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t\t{\n\t\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t\t}\n\t\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t\t}\n\t\t\n\t\t\t/* Cache the data get and set functions for speed */\n\t\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\t\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\t\t\n\t\t\toCol.fnGetData = function (oData, sSpecific) {\n\t\t\t\tvar innerData = mData( oData, sSpecific );\n\t\t\n\t\t\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t\t\t{\n\t\t\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t\t\t}\n\t\t\t\treturn innerData;\n\t\t\t};\n\t\t\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\t\t\n\t\t\t/* Feature sorting overrides column specific when off */\n\t\t\tif ( !oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\toCol.bSortable = false;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check that the class assignment is correct for sorting */\n\t\t\tif ( !oCol.bSortable ||\n\t\t\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\t\t\toCol.sSortingClassJUI = \"\";\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t\t\t}\n\t\t\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t\t\t{\n\t\t\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\t\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust the table column widths for new data. Note: you would probably want to \n\t\t * do a redraw after calling this function!\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAdjustColumnSizing ( oSettings )\n\t\t{\n\t\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of a visible column to the index in the data array (take account\n\t\t * of hidden columns)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMatch Visible column index to lookup\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\n\t\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\t\taiVis[iMatch] :\n\t\t\t\tnull;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Covert the index of an index in the data array and convert it to the visible\n\t\t *   column index (take account of hidden columns)\n\t\t *  @param {int} iMatch Column index to lookup\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the data index\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t\t{\n\t\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\t\n\t\t\treturn iPos !== -1 ? iPos : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the number of visible columns\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {int} i the number of visible columns\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnVisbleColumns( oSettings )\n\t\t{\n\t\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of column indexes that match a given property\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sParam Parameter in aoColumns to look for - typically \n\t\t *    bVisible or bSearchable\n\t\t *  @returns {array} Array of indexes with matched properties\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetColumns( oSettings, sParam )\n\t\t{\n\t\t\tvar a = [];\n\t\t\n\t\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\t\tif ( val[sParam] ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\treturn a;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the sort type based on an input string\n\t\t *  @param {string} sData data we wish to know the type of\n\t\t *  @returns {string} type (defaults to 'string' if no type can be detected)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectType( sData )\n\t\t{\n\t\t\tvar aTypes = DataTable.ext.aTypes;\n\t\t\tvar iLen = aTypes.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sType = aTypes[i]( sData );\n\t\t\t\tif ( sType !== null )\n\t\t\t\t{\n\t\t\t\t\treturn sType;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'string';\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Figure out how to reorder a display list\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {int} aiReturn index list for reordering\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReOrderIndex ( oSettings, sColumns )\n\t\t{\n\t\t\tvar aColumns = sColumns.split(',');\n\t\t\tvar aiReturn = [];\n\t\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\taiReturn.push( j );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aiReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the column ordering that DataTables expects\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {string} comma separated list of names\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnColumnOrdering ( oSettings )\n\t\t{\n\t\t\tvar sNames = '';\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t\t\t}\n\t\t\tif ( sNames.length == iLen )\n\t\t\t{\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\treturn sNames.slice(0, -1);\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take the column definitions and static columns arrays and calculate how\n\t\t * they relate to column indexes. The callback function will then apply the\n\t\t * definition found for a column to a suitable configuration object.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t\t *    column index and the definition for that column.\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen;\n\t\t\n\t\t\t// Column definitions with aTargets\n\t\t\tif ( aoColDefs )\n\t\t\t{\n\t\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t\t{\n\t\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t// Statically defined columns array\n\t\t\tif ( aoCols )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfn( i, aoCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add a data array to the table, creating DOM node etc. This is the parallel to \n\t\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t\t * DOM source.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData data array to be added\n\t\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddData ( oSettings, aDataSupplied )\n\t\t{\n\t\t\tvar oCol;\n\t\t\t\n\t\t\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\t\t\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\t\t\taDataSupplied.slice() :\n\t\t\t\t$.extend( true, {}, aDataSupplied );\n\t\t\t\n\t\t\t/* Create the object for storing information about this new row */\n\t\t\tvar iRow = oSettings.aoData.length;\n\t\t\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\t\t\toData._aData = aDataIn;\n\t\t\toSettings.aoData.push( oData );\n\t\t\n\t\t\t/* Create the cells */\n\t\t\tvar nTd, sThisType;\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\t\n\t\t\t\t/* Use rendered data for filtering / sorting */\n\t\t\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* See if we should auto-detect the column type */\n\t\t\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Add to the display array */\n\t\t\toSettings.aiDisplayMaster.push( iRow );\n\t\t\n\t\t\t/* Create the DOM information */\n\t\t\tif ( !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, iRow );\n\t\t\t}\n\t\t\n\t\t\treturn iRow;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read in the data from the target table from the DOM\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGatherData( oSettings )\n\t\t{\n\t\t\tvar iLoop, i, iLen, j, jLen, jInner,\n\t\t\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\t\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\t\t\toCol, oData;\n\t\t\t\n\t\t\t/*\n\t\t\t * Process by row first\n\t\t\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t\t\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t\t\t */\n\t\t\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t\t\t{\n\t\t\t\tnTr = oSettings.nTBody.firstChild;\n\t\t\t\twhile ( nTr )\n\t\t\t\t{\n\t\t\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t\t\t} ) );\n\t\t\n\t\t\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\t\t\tjInner = 0;\n\t\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\t\t\tjInner++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnTr = nTr.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t\t\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t\t\t * setup!\n\t\t\t */\n\t\t\tnTrs = _fnGetTrNodes( oSettings );\n\t\t\tnTds = [];\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTd = nTrs[i].firstChild;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTds.push( nTd );\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Now process by column */\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[iColumn];\n\t\t\n\t\t\t\t/* Get the title of the column - unless there is a user set one */\n\t\t\t\tif ( oCol.sTitle === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar\n\t\t\t\t\tbAutoType = oCol._bAutoType,\n\t\t\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\t\t\tbClass = oCol.sClass !== null,\n\t\t\t\t\tbVisible = oCol.bVisible,\n\t\t\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\t\t\n\t\t\t\t/* A single loop to rule them all (and be more efficient) */\n\t\t\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t\t\t{\n\t\t\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t\t\t{\n\t\t\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Type detection */\n\t\t\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.mRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Rendering */\n\t\t\t\t\t\tif ( bRender )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Classes */\n\t\t\t\t\t\tif ( bClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Column visibility */\n\t\t\t\t\t\tif ( !bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Row created callbacks */\n\t\t\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toData = oSettings.aoData[i];\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TR element and convert it to an index in aoData\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n the TR element to find\n\t\t *  @returns {int} index if the node is found, null if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToDataIndex( oSettings, n )\n\t\t{\n\t\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Take a TD element and convert it into a column data index (not the visible index)\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow The row number the TD/TH can be found in\n\t\t *  @param {node} n The TD/TH element to find\n\t\t *  @returns {int} index if the node is found, -1 if not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t\t{\n\t\t\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\t\t\n\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( anCells[i] === n )\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of data for a given row from the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n\t\t *  @param {array} aiColumns Array of column indexes to get data from\n\t\t *  @returns {array} Data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n\t\t{\n\t\t\tvar out = [];\n\t\t\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n\t\t *  @returns {*} Cell data\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n\t\t{\n\t\t\tvar sData;\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t\t\t{\n\t\t\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t\t\t}\n\t\t\t\treturn oCol.sDefaultContent;\n\t\t\t}\n\t\t\n\t\t\t/* When the data source is null, we can use default column data */\n\t\t\tif ( sData === null && oCol.sDefaultContent !== null )\n\t\t\t{\n\t\t\t\tsData = oCol.sDefaultContent;\n\t\t\t}\n\t\t\telse if ( typeof sData === 'function' )\n\t\t\t{\n\t\t\t\t/* If the data source is a function, then we run it and use the return */\n\t\t\t\treturn sData();\n\t\t\t}\n\t\t\n\t\t\tif ( sSpecific == 'display' && sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the value for a specific cell, into the internal data cache\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData row id\n\t\t *  @param {int} iCol Column index\n\t\t *  @param {*} val Value to set\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetCellData( oSettings, iRow, iCol, val )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\tvar oData = oSettings.aoData[iRow]._aData;\n\t\t\n\t\t\toCol.fnSetData( oData, val );\n\t\t}\n\t\t\n\t\t\n\t\t// Private variable that is used to match array syntax in the data property object\n\t\tvar __reArray = /\\[.*?\\]$/;\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to get data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data get function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, type, extra) {\n\t\t\t\t\treturn mSource( data, type, extra );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* If there is a . in the source string then the data source is in a \n\t\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t\t * be used if defined, rather than throwing an error\n\t\t\t\t */\n\t\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\t\tvar a = src.split('.');\n\t\t\t\t\tvar arrayNotation, out, innerSrc;\n\t\t\n\t\t\t\t\tif ( src !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\n\t\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\t\n\t\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\t\n\t\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, type) {\n\t\t\t\t\treturn data[mSource];\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return a function that can be used to set data from a source object, taking\n\t\t * into account the ability to use nested objects as a source\n\t\t *  @param {string|int|function} mSource The data source for the object\n\t\t *  @returns {function} Data set function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSetObjectDataFn( mSource )\n\t\t{\n\t\t\tif ( mSource === null )\n\t\t\t{\n\t\t\t\t/* Nothing to do when the data source is null */\n\t\t\t\treturn function (data, val) {};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'function' )\n\t\t\t{\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tmSource( data, 'set', val );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t\t\t{\n\t\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\t\tvar setData = function (data, val, src) {\n\t\t\t\t\tvar a = src.split('.'), b;\n\t\t\t\t\tvar arrayNotation, o, innerSrc;\n\t\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\t\n\t\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\treturn setData( data, val, mSource );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Array or flat object mapping */\n\t\t\t\treturn function (data, val) {\n\t\t\t\t\tdata[mSource] = val;\t\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the full table data\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns array {array} aData Master data array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetDataMaster ( oSettings )\n\t\t{\n\t\t\tvar aData = [];\n\t\t\tvar iLen = oSettings.aoData.length;\n\t\t\tfor ( var i=0 ; i<iLen; i++ )\n\t\t\t{\n\t\t\t\taData.push( oSettings.aoData[i]._aData );\n\t\t\t}\n\t\t\treturn aData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Nuke the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnClearTable( oSettings )\n\t\t{\n\t\t\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\t\t\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Take an array of integers (index array) and remove a target integer (value - not \n\t\t * the key!)\n\t\t *  @param {array} a Index array to target\n\t\t *  @param {int} iTarget value to find\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDeleteIndex( a, iTarget )\n\t\t{\n\t\t\tvar iTargetIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( a[i] == iTarget )\n\t\t\t\t{\n\t\t\t\t\tiTargetIndex = i;\n\t\t\t\t}\n\t\t\t\telse if ( a[i] > iTarget )\n\t\t\t\t{\n\t\t\t\t\ta[i]--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( iTargetIndex != -1 )\n\t\t\t{\n\t\t\t\ta.splice( iTargetIndex, 1 );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t /**\n\t\t * Call the developer defined fnRender function for a given cell (row/column) with\n\t\t * the required parameters and return the result.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow aoData index for the row\n\t\t *  @param {int} iCol aoColumns index for the column\n\t\t *  @returns {*} Return of the developer's fnRender function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnRender( oSettings, iRow, iCol )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[iCol];\n\t\t\n\t\t\treturn oCol.fnRender( {\n\t\t\t\t\"iDataRow\":    iRow,\n\t\t\t\t\"iDataColumn\": iCol,\n\t\t\t\t\"oSettings\":   oSettings,\n\t\t\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\t\t\"mDataProp\":   oCol.mData\n\t\t\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n\t\t}\n\t\t/**\n\t\t * Create a new TR element (and it's TD children) for a row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iRow Row to consider\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateTr ( oSettings, iRow )\n\t\t{\n\t\t\tvar oData = oSettings.aoData[iRow];\n\t\t\tvar nTd;\n\t\t\n\t\t\tif ( oData.nTr === null )\n\t\t\t{\n\t\t\t\toData.nTr = document.createElement('tr');\n\t\t\n\t\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t\t * to the aoData array for fast look up\n\t\t\t\t */\n\t\t\t\toData.nTr._DT_RowIndex = iRow;\n\t\t\n\t\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t\tif ( oData._aData.DT_RowId )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( oData._aData.DT_RowClass )\n\t\t\t\t{\n\t\t\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Process each column */\n\t\t\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\t\t\tnTd = document.createElement( oCol.sCellType );\n\t\t\n\t\t\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t\t\t * value in the data source - so can just use that\n\t\t\t\t\t */\n\t\t\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t\n\t\t\t\t\t/* Add user defined class */\n\t\t\t\t\tif ( oCol.sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ( oCol.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\t\t\toData._anHidden[i] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t\t{\n\t\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create the HTML header for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildHead( oSettings )\n\t\t{\n\t\t\tvar i, nTh, iLen, j, jLen;\n\t\t\tvar iThs = $('th, td', oSettings.nTHead).length;\n\t\t\tvar iCorrector = 0;\n\t\t\tvar jqChildren;\n\t\t\t\n\t\t\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\t\t\tif ( iThs !== 0 )\n\t\t\t{\n\t\t\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\t\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\t\t\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnTr.appendChild( nTh );\n\t\t\t\t}\n\t\t\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\t/* ARIA role for the rows */\t\n\t\t\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\t\t\n\t\t\t/* Add the extra markup needed by jQuery UI's themes */\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\t\t\n\t\t\t\t\tvar nDiv = document.createElement('div');\n\t\t\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\t\t\n\t\t\t\t\tvar nSpan = document.createElement('span');\n\t\t\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\t\t\tnDiv.appendChild( nSpan );\n\t\t\t\t\tnTh.appendChild( nDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Deal with the footer - add classes if required */\n\t\t\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t\t\t{\n\t\t\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t\t\t}\n\t\t\t\n\t\t\t/* Cache the footer elements */\n\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t{\n\t\t\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anCells[i] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the header (or footer) element based on the column visibility states. The\n\t\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t\t * traversed over cell at a time in a rows x columns grid fashion, although each \n\t\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t\t * already a cell in that position.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\t\tvar aoLocal = [];\n\t\t\tvar aApplied = [];\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar iRowspan, iColspan;\n\t\t\n\t\t\tif (  bIncludeHidden === undefined )\n\t\t\t{\n\t\t\t\tbIncludeHidden = false;\n\t\t\t}\n\t\t\n\t\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\t\n\t\t\t\t/* Remove any columns which are currently hidden */\n\t\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t\t{\n\t\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\t\taApplied.push( [] );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\t\t\n\t\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\t\tif ( nLocalTr )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tiRowspan = 1;\n\t\t\t\t\tiColspan = 1;\n\t\t\n\t\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t\t */\n\t\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\t\taApplied[i][j] = 1;\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Insert the required TR nodes into the table for display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDraw( oSettings )\n\t\t{\n\t\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar i, iLen, n;\n\t\t\tvar anRows = [];\n\t\t\tvar iRowCount = 0;\n\t\t\tvar iStripes = oSettings.asStripeClasses.length;\n\t\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\t\t\n\t\t\toSettings.bDrawing = true;\n\t\t\t\n\t\t\t/* Check and see if we have an initial draw position from state saving */\n\t\t\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t\t\t{\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t\t\t}\n\t\t\t\toSettings.iInitDisplayStart = -1;\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing draw intercept */\n\t\t\tif ( oSettings.bDeferLoading )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = false;\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t}\n\t\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aiDisplay.length !== 0 )\n\t\t\t{\n\t\t\t\tvar iStart = oSettings._iDisplayStart;\n\t\t\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\t\t\n\t\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tiStart = 0;\n\t\t\t\t\tiEnd = oSettings.aoData.length;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tvar nRow = aoData.nTr;\n\t\t\t\t\t\n\t\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\t\t\n\t\t\t\t\tanRows.push( nRow );\n\t\t\t\t\tiRowCount++;\n\t\t\t\t\t\n\t\t\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\t\t\tif ( iOpenRows !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\t\t\n\t\t\t\tif ( oSettings.asStripeClasses[0] )\n\t\t\t\t{\n\t\t\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t\t\t}\n\t\t\n\t\t\t\tvar oLang = oSettings.oLanguage;\n\t\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t\t}\n\t\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t\t{\n\t\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t\t}\n\t\t\n\t\t\t\tvar nTd = document.createElement( 'td' );\n\t\t\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\t\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\t\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\t\t\n\t\t\t\tanRows[ iRowCount ].appendChild( nTd );\n\t\t\t}\n\t\t\t\n\t\t\t/* Header and footer callbacks */\n\t\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\t\t\n\t\t\t/* \n\t\t\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t\t\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t\t\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t\t\t */\n\t\t\tvar\n\t\t\t\tnAddFrag = document.createDocumentFragment(),\n\t\t\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\t\t\tnBodyPar, nTrs;\n\t\t\t\n\t\t\tif ( oSettings.nTBody )\n\t\t\t{\n\t\t\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\t\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\t\t\n\t\t\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t\t\t * up. When not infinite scroll, always do it.\n\t\t\t\t */\n\t\t\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t\t\t{\n\t\t\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Put the draw table into the dom */\n\t\t\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\t\t\tif ( nBodyPar !== null )\n\t\t\t\t{\n\t\t\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Call all required callback functions for the end of a draw */\n\t\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\t\t\n\t\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\t\toSettings.bSorted = false;\n\t\t\toSettings.bFiltered = false;\n\t\t\toSettings.bDrawing = false;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\tif ( !oSettings._bInitComplete )\n\t\t\t\t{\n\t\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table - taking account of the various features which are enabled\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReDraw( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t/* Sorting will refilter and draw for us */\n\t\t\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* Filtering will redraw for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add the options to the page HTML for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAddOptionsHtml ( oSettings )\n\t\t{\n\t\t\t/*\n\t\t\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t\t\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t\t\t */\n\t\t\tvar nHolding = $('<div></div>')[0];\n\t\t\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\t\t\n\t\t\t/* \n\t\t\t * All DataTables are wrapped in a div\n\t\t\t */\n\t\t\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\t\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\t\n\t\t\t/* Track where we want to insert the option */\n\t\t\tvar nInsertNode = oSettings.nTableWrapper;\n\t\t\t\n\t\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\t\tvar aDom = oSettings.sDom.split('');\n\t\t\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\t\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t\t{\n\t\t\t\tiPushFeature = 0;\n\t\t\t\tcOption = aDom[i];\n\t\t\t\t\n\t\t\t\tif ( cOption == '<' )\n\t\t\t\t{\n\t\t\t\t\t/* New container div */\n\t\t\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\t\t\n\t\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\t\tcNext = aDom[i+1];\n\t\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\t\tj = 2;\n\t\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\t\t\tnInsertNode = nNewNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == '>' )\n\t\t\t\t{\n\t\t\t\t\t/* End container div */\n\t\t\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t\t\t{\n\t\t\t\t\t/* Length */\n\t\t\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t\t\t{\n\t\t\t\t\t/* Filter */\n\t\t\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\t/* pRocessing */\n\t\t\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 't' )\n\t\t\t\t{\n\t\t\t\t\t/* Table */\n\t\t\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t\t\t{\n\t\t\t\t\t/* Info */\n\t\t\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t\t\t{\n\t\t\t\t\t/* Pagination */\n\t\t\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t}\n\t\t\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Plug-in features */\n\t\t\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Add to the 2D features array */\n\t\t\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\t\t\tnInsertNode.appendChild( nTmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\t\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t\t * create a layout grid (array) of rows x columns, which contains a reference\n\t\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t\t * any column / row could be removed and the new grid constructed\n\t\t *  @param array {object} aLayout Array to store the calculated layout in\n\t\t *  @param {node} nThead The header/footer element for the table\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDetectHeader ( aLayout, nThead )\n\t\t{\n\t\t\tvar nTrs = $(nThead).children('tr');\n\t\t\tvar nTr, nCell;\n\t\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\t\tvar bUnique;\n\t\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\t\tvar k = a[i];\n\t\t                while ( k[j] ) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn j;\n\t\t\t};\n\t\t\n\t\t\taLayout.splice( 0, aLayout.length );\n\t\t\t\n\t\t\t/* We know how many rows there are in the layout - so prep it */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taLayout.push( [] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Calculate a layout array */\n\t\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnTr = nTrs[i];\n\t\t\t\tiColumn = 0;\n\t\t\t\t\n\t\t\t\t/* For every cell in the row... */\n\t\t\t\tnCell = nTr.firstChild;\n\t\t\t\twhile ( nCell ) {\n\t\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\t\n\t\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t\t\t * accordingly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of unique th elements, one for each column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t\t *  @returns array {node} aReturn list of unique th's\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t\t{\n\t\t\tvar aReturn = [];\n\t\t\tif ( !aLayout )\n\t\t\t{\n\t\t\t\taLayout = oSettings.aoHeader;\n\t\t\t\tif ( nHeader )\n\t\t\t\t{\n\t\t\t\t\taLayout = [];\n\t\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t\t{\n\t\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aReturn;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the table using an Ajax call\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {boolean} Block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdate( oSettings )\n\t\t{\n\t\t\tif ( oSettings.bAjaxDataGet )\n\t\t\t{\n\t\t\t\toSettings.iDraw++;\n\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\t\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\t\t\tfunction(json) {\n\t\t\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t\t\t}, oSettings );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Build up the parameters in an object needed for a server-side processing request\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {bool} block the table drawing or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxParameters( oSettings )\n\t\t{\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\t\t\tvar i, j;\n\t\t\t\n\t\t\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\t\t\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\t\t\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\t\t\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\t\t\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\t\t\toSettings._iDisplayLength : -1 } );\n\t\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\t\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t\t\t}\n\t\t\t\n\t\t\t/* Filtering */\n\t\t\tif ( oSettings.oFeatures.bFilter !== false )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\t\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Sorting */\n\t\t\tif ( oSettings.oFeatures.bSort !== false )\n\t\t\t{\n\t\t\t\tvar iCounter = 0;\n\t\t\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\t\t\n\t\t\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\t\t\tiCounter++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\t\t\n\t\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn aoData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Add Ajax parameters from plug-ins\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param array {objects} aoData name/value pairs to send to the server\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnServerParams( oSettings, aoData )\n\t\t{\n\t\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Data the data from the server (nuking the old) and redraw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} json json data return from the server.\n\t\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t\t *  @param {array} json.aaData The data to display on this page\n\t\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnAjaxUpdateDraw ( oSettings, json )\n\t\t{\n\t\t\tif ( json.sEcho !== undefined )\n\t\t\t{\n\t\t\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t\t\t * very fast interaction, and later queries are completed much faster\n\t\t\t\t */\n\t\t\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( !oSettings.oScroll.bInfinite ||\n\t\t\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t\t\t{\n\t\t\t\t_fnClearTable( oSettings );\n\t\t\t}\n\t\t\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\t\t\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\t\t\n\t\t\t/* Determine if reordering is required */\n\t\t\tvar sOrdering = _fnColumnOrdering(oSettings);\n\t\t\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\t\t\tvar aiIndex;\n\t\t\tif ( bReOrder )\n\t\t\t{\n\t\t\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t\t\t}\n\t\t\t\n\t\t\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\t\t\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( bReOrder )\n\t\t\t\t{\n\t\t\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\t\t\tvar aDataSorted = [];\n\t\t\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t\t\t}\n\t\t\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\toSettings.bAjaxDataGet = false;\n\t\t\t_fnDraw( oSettings );\n\t\t\toSettings.bAjaxDataGet = true;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for filtering text\n\t\t *  @returns {node} Filter control element\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlFilter ( oSettings )\n\t\t{\n\t\t\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\t\t\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t\t\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t\t\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\t\t\n\t\t\tvar nFilter = document.createElement( 'div' );\n\t\t\tnFilter.className = oSettings.oClasses.sFilter;\n\t\t\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\t\t\tif ( !oSettings.aanFeatures.f )\n\t\t\t{\n\t\t\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t\t\t}\n\t\t\t\n\t\t\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\t\t\n\t\t\t// Store a reference to the input element, so other input elements could be\n\t\t\t// added to the filter wrapper if needed (submit button for example)\n\t\t\tnFilter._DT_Input = jqFilter[0];\n\t\t\n\t\t\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\t\t\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t\t\t/* Update all other filter input elements for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\t\t\n\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Now do the filter */\n\t\t\t\tif ( val != oPreviousSearch.sSearch )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\t\t\"sSearch\": val, \n\t\t\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\n\t\t\tjqFilter\n\t\t\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t\t/* Prevent form submission */\n\t\t\t\t\tif ( e.keyCode == 13 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\treturn nFilter;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table using both the global filter and column based filtering\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oSearch search information\n\t\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t\t{\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t\t/* Save the filtering values */\n\t\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t\t};\n\t\t\n\t\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\n\t\t\t\t/* Now do the individual column filter */\n\t\t\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Custom filtering */\n\t\t\t\t_fnFilterCustom( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfnSaveFilter( oInput );\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function we have been filtering */\n\t\t\toSettings.bFiltered = true;\n\t\t\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\toSettings._iDisplayStart = 0;\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t\t\n\t\t\t/* Rebuild search array 'offline' */\n\t\t\t_fnBuildSearchArray( oSettings, 0 );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply custom filtering functions\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCustom( oSettings )\n\t\t{\n\t\t\tvar afnFilters = DataTable.ext.afnFiltering;\n\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\n\t\t\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar iCorrector = 0;\n\t\t\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\t\t\tvar bTest = afnFilters[i](\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\t\t\tiDisIndex\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\t\t\tif ( !bTest )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the table on a per-column basis\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iColumn column to filter\n\t\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t\t *  @param {bool} bSmart use smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tif ( sInput === \"\" )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iIndexCorrector = 0;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t\n\t\t\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\t\t\toSettings.aoColumns[iColumn].sType );\n\t\t\t\tif ( ! rpSearch.test( sData ) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\t\t\tiIndexCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the data table based on user input and draw the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sInput string to filter on\n\t\t *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar i;\n\t\t\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\t\t\n\t\t\t/* Check if we are forcing or not - optional parameter */\n\t\t\tif ( !iForce )\n\t\t\t{\n\t\t\t\tiForce = 0;\n\t\t\t}\n\t\t\t\n\t\t\t/* Need to take account of custom filtering functions - always filter */\n\t\t\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t\t\t{\n\t\t\t\tiForce = 1;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * If the input is blank - we want the full data set\n\t\t\t */\n\t\t\tif ( sInput.length <= 0 )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\t * We are starting a new search or the new search string is smaller \n\t\t\t\t * then the old one (i.e. delete). Search from the master array\n\t\t\t \t */\n\t\t\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\t\t\n\t\t\t\t\t/* Force a rebuild of the search array */\n\t\t\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\t\t\n\t\t\t\t\t/* Search through all records to populate the search array\n\t\t\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t\t\t * mapping\n\t\t\t\t\t */\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t  }\n\t\t\t  else\n\t\t\t\t{\n\t\t\t  \t/* Using old search array - refine it - do it this way for speed\n\t\t\t  \t * Don't have to search the whole master array again\n\t\t\t\t\t */\n\t\t\t  \tvar iIndexCorrector = 0;\n\t\t\t  \t\n\t\t\t  \t/* Search the current results */\n\t\t\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t\t\t{\n\t\t\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t\t\t{\n\t\t\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t\t\t  \t\t\tiIndexCorrector++;\n\t\t\t  \t\t}\n\t\t\t  \t}\n\t\t\t  }\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create an array which can be quickly search through\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iMaster use the master data array - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchArray ( oSettings, iMaster )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t/* Clear out the old data */\n\t\t\t\toSettings.asDataSearch = [];\n\t\t\n\t\t\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\t\t\tvar aiIndex = (iMaster===1) ?\n\t\t\t\t \toSettings.aiDisplayMaster :\n\t\t\t\t \toSettings.aiDisplay;\n\t\t\t\t\n\t\t\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\t\t\toSettings,\n\t\t\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a searchable string from a single data row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {array} aData Row data array to use for the data to search\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBuildSearchRow( oSettings, aData )\n\t\t{\n\t\t\tvar sSearch = aData.join('  ');\n\t\t\t\n\t\t\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\t\t\tif ( sSearch.indexOf('&') !== -1 )\n\t\t\t{\n\t\t\t\tsSearch = $('<div>').html(sSearch).text();\n\t\t\t}\n\t\t\t\n\t\t\t// Strip newline characters\n\t\t\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Build a regular expression object suitable for searching a table\n\t\t *  @param {string} sSearch string to search for\n\t\t *  @param {bool} bRegex treat as a regular expression or not\n\t\t *  @param {bool} bSmart perform smart filtering or not\n\t\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t\t *  @returns {RegExp} constructed object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n\t\t{\n\t\t\tvar asSearch, sRegExpString;\n\t\t\t\n\t\t\tif ( bSmart )\n\t\t\t{\n\t\t\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t\t\t */\n\t\t\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\t\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\t\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\t\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Convert raw data into something that the user can search on\n\t\t *  @param {string} sData data to be modified\n\t\t *  @param {string} sType data type\n\t\t *  @returns {string} search string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnDataToSearch ( sData, sType )\n\t\t{\n\t\t\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t\t\t{\n\t\t\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t\t\t}\n\t\t\telse if ( sData === null )\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\telse if ( sType == \"html\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t}\n\t\t\telse if ( typeof sData === \"string\" )\n\t\t\t{\n\t\t\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t\t\t}\n\t\t\treturn sData;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * scape a string such that it can be used in a regular expression\n\t\t *  @param {string} sVal string to escape\n\t\t *  @returns {string} escaped string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnEscapeRegex ( sVal )\n\t\t{\n\t\t\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\t\t\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\t\t\treturn sVal.replace(reReplace, '\\\\$1');\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the info display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Information element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlInfo ( oSettings )\n\t\t{\n\t\t\tvar nInfo = document.createElement( 'div' );\n\t\t\tnInfo.className = oSettings.oClasses.sInfo;\n\t\t\t\n\t\t\t/* Actions that are to be taken once only for this feature */\n\t\t\tif ( !oSettings.aanFeatures.i )\n\t\t\t{\n\t\t\t\t/* Add draw callback */\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\t\"sName\": \"information\"\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t\t/* Add id */\n\t\t\t\tnInfo.id = oSettings.sTableId+'_info';\n\t\t\t}\n\t\t\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\t\t\n\t\t\treturn nInfo;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the information elements in the display\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnUpdateInfo ( oSettings )\n\t\t{\n\t\t\t/* Show information about the table */\n\t\t\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar\n\t\t\t\toLang = oSettings.oLanguage,\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsOut;\n\t\t\t\n\t\t\tif ( iTotal === 0 )\n\t\t\t{\n\t\t\t\t/* Empty record set */\n\t\t\t\tsOut = oLang.sInfoEmpty;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t/* Normal record set */\n\t\t\t\tsOut = oLang.sInfo;\n\t\t\t}\n\t\t\n\t\t\tif ( iTotal != iMax )\n\t\t\t{\n\t\t\t\t/* Record set after filtering */\n\t\t\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t\t\t}\n\t\t\n\t\t\t// Convert the macros\n\t\t\tsOut += oLang.sInfoPostFix;\n\t\t\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\t\t\n\t\t\tif ( oLang.fnInfoCallback !== null )\n\t\t\t{\n\t\t\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t\t\t}\n\t\t\t\n\t\t\tvar n = oSettings.aanFeatures.i;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t$(n[i]).html( sOut );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _fnInfoMacros ( oSettings, str )\n\t\t{\n\t\t\tvar\n\t\t\t\tiStart = oSettings._iDisplayStart+1,\n\t\t\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\t\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\t\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\t\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\t\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\t\t\tiMax = oSettings.fnRecordsTotal(),\n\t\t\t\tsMax = oSettings.fnFormatNumber( iMax );\n\t\t\n\t\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t\t// internally\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t\t\t}\n\t\t\n\t\t\treturn str.\n\t\t\t\treplace(/_START_/g, sStart).\n\t\t\t\treplace(/_END_/g,   sEnd).\n\t\t\t\treplace(/_TOTAL_/g, sTotal).\n\t\t\t\treplace(/_MAX_/g,   sMax);\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitialise ( oSettings )\n\t\t{\n\t\t\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\t\t\n\t\t\t/* Ensure that the table data is fully initialised */\n\t\t\tif ( oSettings.bInitialised === false )\n\t\t\t{\n\t\t\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the display HTML options */\n\t\t\t_fnAddOptionsHtml( oSettings );\n\t\t\t\n\t\t\t/* Build and draw the header / footer for the table */\n\t\t\t_fnBuildHead( oSettings );\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\n\t\t\t/* Okay to show that something is going on now */\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\n\t\t\t/* Calculate sizes for columns */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth )\n\t\t\t{\n\t\t\t\t_fnCalculateColumnWidths( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If there is default sorting required - let's do it. The sort function will do the\n\t\t\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t\t\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t\t\t */\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* if there is an ajax source load the data */\n\t\t\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\tvar aoData = [];\n\t\t\t\t_fnServerParams( oSettings, aoData );\n\t\t\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\t\t\n\t\t\t\t\t/* Got the data - add it to the table */\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t\t\t */\n\t\t\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t_fnInitComplete( oSettings, json );\n\t\t\t\t}, oSettings );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t{\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t_fnInitComplete( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Draw the table for the first time, adding all required features\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t\t *    with client-side processing (optional)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnInitComplete ( oSettings, json )\n\t\t{\n\t\t\toSettings._bInitComplete = true;\n\t\t\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Language compatibility - when certain options are given, and others aren't, we\n\t\t * need to duplicate the values over, in order to provide backwards compatibility\n\t\t * with older language files.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLanguageCompat( oLanguage )\n\t\t{\n\t\t\tvar oDefaults = DataTable.defaults.oLanguage;\n\t\t\n\t\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t\t * sZeroRecords - assuming that is given.\n\t\t\t */\n\t\t\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t\t\t}\n\t\t\n\t\t\t/* Likewise with loading records */\n\t\t\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\t\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t\t\t{\n\t\t\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for user display length changing\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Display length feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlLength ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\t\t\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\t\t\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\t\t\tvar i, iLen;\n\t\t\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\t\t\n\t\t\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tsStdMenu += '</select>';\n\t\t\t\n\t\t\tvar nLength = document.createElement( 'div' );\n\t\t\tif ( !oSettings.aanFeatures.l )\n\t\t\t{\n\t\t\t\tnLength.id = oSettings.sTableId+'_length';\n\t\t\t}\n\t\t\tnLength.className = oSettings.oClasses.sLength;\n\t\t\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\t\t\n\t\t\t/*\n\t\t\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t\t\t * and Stefan Skopnik for fixing the fix!\n\t\t\t */\n\t\t\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\t\t\n\t\t\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\t\t\tvar iVal = $(this).val();\n\t\t\t\t\n\t\t\t\t/* Update all other length options for the new display */\n\t\t\t\tvar n = oSettings.aanFeatures.l;\n\t\t\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( n[i] != this.parentNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Redraw the table */\n\t\t\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\n\t\t\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\t\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t} );\n\t\t\n\t\t\n\t\t\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\t\t\n\t\t\treturn nLength;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Recalculate the end point based on the start point\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateEnd( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bPaginate === false )\n\t\t\t{\n\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Set the end point of the display - based on how many elements there are\n\t\t\t\t * still to display\n\t\t\t\t */\n\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t\t * Note that most of the paging logic is done in \n\t\t * DataTable.ext.oPagination\n\t\t */\n\t\t\n\t\t/**\n\t\t * Generate the node required for default pagination\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Pagination feature node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlPaginate ( oSettings )\n\t\t{\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar nPaginate = document.createElement( 'div' );\n\t\t\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\t\t\n\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\t\t\tfunction( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t}\n\t\t\t);\n\t\t\t\n\t\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t} );\n\t\t\t\t\t},\n\t\t\t\t\t\"sName\": \"pagination\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nPaginate;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Alter the display settings to change the page\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer)\n\t\t *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnPageChange ( oSettings, mAction )\n\t\t{\n\t\t\tvar iOldStart = oSettings._iDisplayStart;\n\t\t\t\n\t\t\tif ( typeof mAction === \"number\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"first\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t\telse if ( mAction == \"previous\" )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t\t\t0;\n\t\t\t\t\n\t\t\t\t/* Correct for under-run */\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t  oSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"next\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Make sure we are not over running the display array */\n\t\t\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( mAction == \"last\" )\n\t\t\t{\n\t\t\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t\t\t{\n\t\t\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t\t\t}\n\t\t\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\t\t\n\t\t\treturn iOldStart != oSettings._iDisplayStart;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate the node required for the processing node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Processing element\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlProcessing ( oSettings )\n\t\t{\n\t\t\tvar nProcessing = document.createElement( 'div' );\n\t\t\t\n\t\t\tif ( !oSettings.aanFeatures.r )\n\t\t\t{\n\t\t\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t\t\t}\n\t\t\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\t\t\tnProcessing.className = oSettings.oClasses.sProcessing;\n\t\t\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\t\t\n\t\t\treturn nProcessing;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Display or hide the processing indicator\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bShow Show the processing indicator (true) or not (false)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnProcessingDisplay ( oSettings, bShow )\n\t\t{\n\t\t\tif ( oSettings.oFeatures.bProcessing )\n\t\t\t{\n\t\t\t\tvar an = oSettings.aanFeatures.r;\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n\t\t}\n\t\t\n\t\t/**\n\t\t * Add any control elements for the table - specifically scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnFeatureHtmlTable ( oSettings )\n\t\t{\n\t\t\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\treturn oSettings.nTable;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * The HTML structure that we want to generate in this function is:\n\t\t\t *  div - nScroller\n\t\t\t *    div - nScrollHead\n\t\t\t *      div - nScrollHeadInner\n\t\t\t *        table - nScrollHeadTable\n\t\t\t *          thead - nThead\n\t\t\t *    div - nScrollBody\n\t\t\t *      table - oSettings.nTable\n\t\t\t *        thead - nTheadSize\n\t\t\t *        tbody - nTbody\n\t\t\t *    div - nScrollFoot\n\t\t\t *      div - nScrollFootInner\n\t\t\t *        table - nScrollFootTable\n\t\t\t *          tfoot - nTfoot\n\t\t\t */\n\t\t\tvar\n\t\t\t \tnScroller = document.createElement('div'),\n\t\t\t \tnScrollHead = document.createElement('div'),\n\t\t\t \tnScrollHeadInner = document.createElement('div'),\n\t\t\t \tnScrollBody = document.createElement('div'),\n\t\t\t \tnScrollFoot = document.createElement('div'),\n\t\t\t \tnScrollFootInner = document.createElement('div'),\n\t\t\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t\t\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\t\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t\t\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\t\t\toClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tnScrollHead.appendChild( nScrollHeadInner );\n\t\t\tnScrollFoot.appendChild( nScrollFootInner );\n\t\t\tnScrollBody.appendChild( oSettings.nTable );\n\t\t\tnScroller.appendChild( nScrollHead );\n\t\t\tnScroller.appendChild( nScrollBody );\n\t\t\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\t\t\tnScrollHeadTable.appendChild( nThead );\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScroller.appendChild( nScrollFoot );\n\t\t\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\t\t\tnScrollFootTable.appendChild( nTfoot );\n\t\t\t}\n\t\t\t\n\t\t\tnScroller.className = oClasses.sScrollWrapper;\n\t\t\tnScrollHead.className = oClasses.sScrollHead;\n\t\t\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\t\t\tnScrollBody.className = oClasses.sScrollBody;\n\t\t\tnScrollFoot.className = oClasses.sScrollFoot;\n\t\t\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\t\t\n\t\t\tif ( oSettings.oScroll.bAutoCss )\n\t\t\t{\n\t\t\t\tnScrollHead.style.overflow = \"hidden\";\n\t\t\t\tnScrollHead.style.position = \"relative\";\n\t\t\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\t\t\tnScrollBody.style.overflow = \"auto\";\n\t\t\t}\n\t\t\t\n\t\t\tnScrollHead.style.border = \"0\";\n\t\t\tnScrollHead.style.width = \"100%\";\n\t\t\tnScrollFoot.style.border = \"0\";\n\t\t\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\t\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\t\t\n\t\t\t/* Modify attributes to respect the clones */\n\t\t\tnScrollHeadTable.removeAttribute('id');\n\t\t\tnScrollHeadTable.style.marginLeft = \"0\";\n\t\t\toSettings.nTable.style.marginLeft = \"0\";\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.removeAttribute('id');\n\t\t\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Move caption elements from the body to the header, footer or leave where it is\n\t\t\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\t\t\tvar nCaption = $(oSettings.nTable).children('caption');\n\t\t\tif ( nCaption.length > 0 )\n\t\t\t{\n\t\t\t\tnCaption = nCaption[0];\n\t\t\t\tif ( nCaption._captionSide === \"top\" )\n\t\t\t\t{\n\t\t\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t\t\t{\n\t\t\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Sizing\n\t\t\t */\n\t\t\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\t\t\n\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t\t\t$(nScrollBody).scroll( function (e) {\n\t\t\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\t\t\n\t\t\t\t\tif ( nTfoot !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* When yscrolling, add the height */\n\t\t\tif ( oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw - align columns across the tables */\n\t\t\toSettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\t\"sName\": \"scrolling\"\n\t\t\t} );\n\t\t\t\n\t\t\t/* Infinite scrolling event handlers */\n\t\t\tif ( oSettings.oScroll.bInfinite )\n\t\t\t{\n\t\t\t\t$(nScrollBody).scroll( function() {\n\t\t\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.nScrollHead = nScrollHead;\n\t\t\toSettings.nScrollFoot = nScrollFoot;\n\t\t\t\n\t\t\treturn nScroller;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the various tables for resizing. It's a bit of a pig this function, but\n\t\t * basically the idea to:\n\t\t *   1. Re-create the table inside the scrolling div\n\t\t *   2. Take live measurements from the DOM\n\t\t *   3. Apply the measurements\n\t\t *   4. Clean up\n\t\t *  @param {object} o dataTables settings object\n\t\t *  @returns {node} Node to add to the DOM\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollDraw ( o )\n\t\t{\n\t\t\tvar\n\t\t\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\t\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\t\t\tnScrollBody = o.nTable.parentNode,\n\t\t\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\t\t\tnTheadSize, nTfootSize,\n\t\t\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\t\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\t\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\t\t\tie67 = o.oBrowser.bScrollOversize,\n\t\t\t\tzeroOut = function(nSizer) {\n\t\t\t\t\toStyle = nSizer.style;\n\t\t\t\t\toStyle.paddingTop = \"0\";\n\t\t\t\t\toStyle.paddingBottom = \"0\";\n\t\t\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\t\t\toStyle.height = 0;\n\t\t\t\t};\n\t\t\t\n\t\t\t/*\n\t\t\t * 1. Re-create the table inside the scrolling div\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t\t\t$(o.nTable).children('thead, tfoot').remove();\n\t\t\n\t\t\t/* Clone the current header and footer elements and then place it into the inner table */\n\t\t\tnTheadSize = $(o.nTHead).clone()[0];\n\t\t\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\t\t\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\t\t\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\t\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\t\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\t\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t\t */\n\t\t\t\n\t\t\t/* Remove old sizing and apply the calculated column widths\n\t\t\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t\t * calculated sizes to this header\n\t\t\t */\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = '100%';\n\t\t\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\t\t\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\t\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\n\t\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\t\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Size the table as a whole */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t{\n\t\t\t\t/* No x scrolling */\n\t\t\t\to.nTable.style.width = \"100%\";\n\t\t\t\t\n\t\t\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t\t * into account.\n\t\t\t\t */\n\t\t\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t/* x scroll inner has been given - use it */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t\t\t{\n\t\t\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Not possible to take account of it */\n\t\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* All else fails */\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t\t\t * a temporary variable. This is required because the column width calculation is done\n\t\t\t * before this table DOM is created.\n\t\t\t */\n\t\t\tiSanityWidth = $(o.nTable).outerWidth();\n\t\t\t\n\t\t\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t\t\t * set the width based on the real headers\n\t\t\t */\n\t\t\t\n\t\t\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t\t\t// DOM properties.\n\t\t\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t\t\t \n\t\t\t// Read all widths in next pass. Forces layout only once because we do not change \n\t\t\t// any DOM properties.\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t}, anHeadSizers );\n\t\t\t \n\t\t\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t\t\t// read any DOM properties.\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = aApplied[i];\n\t\t\t}, anHeadToSize );\n\t\t\n\t\t\t$(anHeadSizers).height(0);\n\t\t\t\n\t\t\t/* Same again with the footer if we have one */\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t\t\t}, anFootSizers );\n\t\t\t\t \n\t\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootToSize );\n\t\t\n\t\t\t\t$(anFootSizers).height(0);\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * 3. Apply the measurements\n\t\t\t */\n\t\t\t\n\t\t\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t\t\t * to what they currently are\n\t\t\t */\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = aApplied[i];\n\t\t\t}, anHeadSizers );\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t\t\t}, anFootSizers );\n\t\t\t}\n\t\t\t\n\t\t\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\t\t */\n\t\t\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t\t\t{\n\t\t\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\t\t\n\t\t\t\t/* IE6/7 are a law unto themselves... */\n\t\t\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t\t\t{\n\t\t\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\t\t\tif ( o.oScroll.sX === \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t\t\t}\n\t\t\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\t\t\" calculation\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\t\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\t\t\n\t\t\t\tif ( o.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * 4. Clean up\n\t\t\t */\n\t\t\tif ( o.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t\t */\n\t\t\t\tif ( ie67 )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t\t\t{\n\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\t\t\n\t\t\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t\t\t \to.oScroll.iBarWidth : 0;\n\t\t\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t\t\t{\n\t\t\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Finally set the width's of the header and footer tables */\n\t\t\tvar iOuterWidth = $(o.nTable).outerWidth();\n\t\t\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\n\t\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\t\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\t\t\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t\n\t\t\tif ( o.nTFoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\t\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\t\t}\n\t\t\n\t\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\t\t$(nScrollBody).scroll();\n\t\t\t\n\t\t\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\t\t\tif ( o.bSorted || o.bFiltered )\n\t\t\t{\n\t\t\t\tnScrollBody.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Apply a given function to the display child nodes of an element array (typically\n\t\t * TD children of TR rows\n\t\t *  @param {function} fn Method to apply to the objects\n\t\t *  @param array {nodes} an1 List of elements to look through for display children\n\t\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t\t{\n\t\t\tvar index=0, i=0, iLen=an1.length;\n\t\t\tvar nNode1, nNode2;\n\t\t\n\t\t\twhile ( i < iLen )\n\t\t\t{\n\t\t\t\tnNode1 = an1[i].firstChild;\n\t\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\t\t\twhile ( nNode1 )\n\t\t\t\t{\n\t\t\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( an2 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t\t *  @param {string} sWidth width to be converted\n\t\t *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n\t\t *  @returns {int} iWidth width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnConvertToWidth ( sWidth, nParent )\n\t\t{\n\t\t\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t\n\t\t\tif ( !nParent )\n\t\t\t{\n\t\t\t\tnParent = document.body;\n\t\t\t}\n\t\t\t\n\t\t\tvar iWidth;\n\t\t\tvar nTmp = document.createElement( \"div\" );\n\t\t\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\t\t\n\t\t\tnParent.appendChild( nTmp );\n\t\t\tiWidth = nTmp.offsetWidth;\n\t\t\tnParent.removeChild( nTmp );\n\t\t\t\n\t\t\treturn ( iWidth );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Calculate the width of columns for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCalculateColumnWidths ( oSettings )\n\t\t{\n\t\t\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\t\t\tvar iUserInputs = 0;\n\t\t\tvar iTmpWidth;\n\t\t\tvar iVisibleColumns = 0;\n\t\t\tvar iColums = oSettings.aoColumns.length;\n\t\t\tvar i, iIndex, iCorrector, iWidth;\n\t\t\tvar oHeaders = $('th', oSettings.nTHead);\n\t\t\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\t\t\tvar nWrapper = oSettings.nTable.parentNode;\n\t\t\t\n\t\t\t/* Convert any user input sizes into pixel sizes */\n\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiVisibleColumns++;\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\t\t\tnWrapper );\n\t\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tiUserInputs++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* If the number of columns in the DOM equals the number that we have to process in \n\t\t\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t\t\t * sizes can be set in order for this to happen, nor scrolling used\n\t\t\t */\n\t\t\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\t\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t\t\t * calculating table widths.\n\t\t\t\t */\n\t\t\t\tvar\n\t\t\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\t\t\tnDivSizing;\n\t\t\t\t\n\t\t\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\t\t\tnCalcTmp.appendChild( nTheadClone );\n\t\t\t\tif ( oSettings.nTFoot !== null )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\t\t\tn.style.width = \"\";\n\t\t\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnCalcTmp.appendChild( nBody );\n\t\t\t\tnBody.appendChild( nTr );\n\t\t\t\t\n\t\t\t\t/* Remove any sizing that was previously applied by the styles */\n\t\t\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\t\t\tif ( jqColSizing.length === 0 )\n\t\t\t\t{\n\t\t\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Apply custom sizing to the cloned header */\n\t\t\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oColumn.bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Find the biggest td for each column and put it into the table */\n\t\t\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\t\t\tif ( nTd !== null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build the table and 'display' it */\n\t\t\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t\t\t * but I think correct behaviour\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = \"\";\n\t\t\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t\t\t{\n\t\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t\t}\n\t\t\t\telse if ( widthAttr )\n\t\t\t\t{\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t\t\t}\n\t\t\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\t\t\n\t\t\t\t/* Scrolling considerations */\n\t\t\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\t\t\n\t\t\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t\t\t * no elements there, under which circumstances we use the header elements\n\t\t\t\t */\n\t\t\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\t\t\tif ( oNodes.length === 0 )\n\t\t\t\t{\n\t\t\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t\t\t * should be by summing the user given values, and the automatic values\n\t\t\t\t */\n\t\t\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar iTotal = 0;\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t\t\t}\n\t\t\n\t\t\t\tiCorrector = 0;\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\t\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\t\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t\t\t}\n\t\t\n\t\t\tif ( widthAttr )\n\t\t\t{\n\t\t\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust a table's width to take account of scrolling\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} n table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollingWidthAdjust ( oSettings, n )\n\t\t{\n\t\t\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t\t\t * + scroll bar will fit into the area avaialble.\n\t\t\t\t */\n\t\t\t\tvar iOrigWidth = $(n).width();\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t\t{\n\t\t\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the widest node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {node} widest table node\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetWidestNode( oSettings, iCol )\n\t\t{\n\t\t\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\t\t\tif ( iMaxIndex < 0 )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t\t\t{\n\t\t\t\tvar n = document.createElement('td');\n\t\t\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\t\t\treturn n;\n\t\t\t}\n\t\t\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the maximum strlen for each data column\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iCol column of interest\n\t\t *  @returns {string} max string length for each column\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetMaxLenString( oSettings, iCol )\n\t\t{\n\t\t\tvar iMax = -1;\n\t\t\tvar iMaxIndex = -1;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t\t\t{\n\t\t\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\t\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\t\t\tif ( s.length > iMax )\n\t\t\t\t{\n\t\t\t\t\tiMax = s.length;\n\t\t\t\t\tiMaxIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn iMaxIndex;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Append a CSS unit (only if required) to a string\n\t\t *  @param {array} aArray1 first array\n\t\t *  @param {array} aArray2 second array\n\t\t *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnStringToCss( s )\n\t\t{\n\t\t\tif ( s === null )\n\t\t\t{\n\t\t\t\treturn \"0px\";\n\t\t\t}\n\t\t\t\n\t\t\tif ( typeof s == 'number' )\n\t\t\t{\n\t\t\t\tif ( s < 0 )\n\t\t\t\t{\n\t\t\t\t\treturn \"0px\";\n\t\t\t\t}\n\t\t\t\treturn s+\"px\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if the last character is not 0-9 */\n\t\t\tvar c = s.charCodeAt( s.length-1 );\n\t\t\tif (c < 0x30 || c > 0x39)\n\t\t\t{\n\t\t\t\treturn s;\n\t\t\t}\n\t\t\treturn s+\"px\";\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the width of a scroll bar in this browser being used\n\t\t *  @returns {int} width in pixels\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnScrollBarWidth ()\n\t\t{  \n\t\t\tvar inner = document.createElement('p');\n\t\t\tvar style = inner.style;\n\t\t\tstyle.width = \"100%\";\n\t\t\tstyle.height = \"200px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\t\n\t\t\tvar outer = document.createElement('div');\n\t\t\tstyle = outer.style;\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.top = \"0px\";\n\t\t\tstyle.left = \"0px\";\n\t\t\tstyle.visibility = \"hidden\";\n\t\t\tstyle.width = \"200px\";\n\t\t\tstyle.height = \"150px\";\n\t\t\tstyle.padding = \"0px\";\n\t\t\tstyle.overflow = \"hidden\";\n\t\t\touter.appendChild(inner);\n\t\t\t\n\t\t\tdocument.body.appendChild(outer);\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.style.overflow = 'scroll';\n\t\t\tvar w2 = inner.offsetWidth;\n\t\t\tif ( w1 == w2 )\n\t\t\t{\n\t\t\t\tw2 = outer.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeChild(outer);\n\t\t\treturn (w1 - w2);  \n\t\t}\n\t\t\n\t\t/**\n\t\t * Change the order of the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {bool} bApplyClasses optional - should we apply classes or not\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSort ( oSettings, bApplyClasses )\n\t\t{\n\t\t\tvar\n\t\t\t\ti, iLen, j, jLen, k, kLen,\n\t\t\t\tsDataType, nTh,\n\t\t\t\taaSort = [],\n\t\t\t \taiOrig = [],\n\t\t\t\toSort = DataTable.ext.oSort,\n\t\t\t\taoData = oSettings.aoData,\n\t\t\t\taoColumns = oSettings.aoColumns,\n\t\t\t\toAria = oSettings.oLanguage.oAria;\n\t\t\t\n\t\t\t/* No sorting required if server-side or no sorting array */\n\t\t\tif ( !oSettings.oFeatures.bServerSide && \n\t\t\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t\t\t{\n\t\t\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\t\t\toSettings.aaSorting.slice();\n\t\t\t\t\n\t\t\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t\t\t * get the data from the developer's function and apply it for this column\n\t\t\t\t */\n\t\t\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tvar iColumn = aaSort[i][0];\n\t\t\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t\t\t */\n\t\t\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t\t\t}\n\t\t\n\t\t\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t\t\t * function runs. This make the sorting function a very simple comparison\n\t\t\t\t */\n\t\t\t\tvar iSortLen = aaSort.length;\n\t\t\t\tvar fnSortFormat, aDataSort;\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t\t *  \tvar iTest;\n\t\t\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t\t\t *  \tif (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t\t *    if (iTest !== 0)\n\t\t\t\t *  \t\treturn iTest;\n\t\t\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t *  }\n\t\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t\t */\n\t\t\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\t\t\n\t\t\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Alter the sorting classes to take account of the changes */\n\t\t\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\t\t\tnTh = aoColumns[i].nTh;\n\t\t\t\tnTh.removeAttribute('aria-sort');\n\t\t\t\tnTh.removeAttribute('aria-label');\n\t\t\t\t\n\t\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\t\tif ( aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Tell the draw function that we have sorted the data */\n\t\t\toSettings.bSorted = true;\n\t\t\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\t\t\n\t\t\t/* Copy the master data into the draw array and re-draw */\n\t\t\tif ( oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\t/* _fnFilter() will redraw the table for us */\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort handler (click) to a node\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {node} nNode node to attach the handler to\n\t\t *  @param {int} iDataIndex column sorting index\n\t\t *  @param {function} [fnCallback] callback function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n\t\t{\n\t\t\t_fnBindAction( nNode, {}, function (e) {\n\t\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t\t\t * disabled, as we need to perform slightly different actions.\n\t\t\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t\t\t * too early), so we only do it when we absolutely have to.\n\t\t\t\t */\n\t\t\t\tvar fnInnerSorting = function () {\n\t\t\t\t\tvar iColumn, iNextSort;\n\t\t\t\t\t\n\t\t\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\t\t\tif ( e.shiftKey )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\t\t\tvar bFound = false;\n\t\t\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* No sort yet - add it in */\n\t\t\t\t\t\tif ( bFound === false )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Run the sort */\n\t\t\t\t\t_fnSort( oSettings );\n\t\t\t\t}; /* /fnInnerSorting */\n\t\t\t\t\n\t\t\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t\t\t{\n\t\t\t\t\tfnInnerSorting();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tfnInnerSorting();\n\t\t\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0 );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Call the user specified callback function - used for async user interaction */\n\t\t\t\tif ( typeof fnCallback == 'function' )\n\t\t\t\t{\n\t\t\t\t\tfnCallback( oSettings );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Set the sorting classes on the header, Note: it is safe to call this function \n\t\t * when bSort and bSortClasses are false\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSortingClasses( oSettings )\n\t\t{\n\t\t\tvar i, iLen, j, jLen, iFound;\n\t\t\tvar aaSort, sClass;\n\t\t\tvar iColumns = oSettings.aoColumns.length;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.aaSortingFixed !== null )\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taaSort = oSettings.aaSorting.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the required classes to the header */\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t\t{\n\t\t\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\t\t\tiFound = -1;\n\t\t\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\t\t\tiFound = j;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\t\t\n\t\t\t\t\tif ( oSettings.bJUI )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar sSpanClass;\n\t\t\t\t\t\tif ( iFound == -1 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t\t\t * _fnAddColumn\n\t\t\t\t\t */\n\t\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* \n\t\t\t * Apply the required classes to the table body\n\t\t\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t\t\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t\t\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t\t\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t\t\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t\t\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t\t\t * row found to see if the whole column needs processed can miss classes since the first\n\t\t\t * column might be new.\n\t\t\t */\n\t\t\tsClass = oClasses.sSortColumn;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\t\t\n\t\t\t\t/* Determine what the sorting class for each column should be */\n\t\t\t\tvar iClass, iTargetCol;\n\t\t\t\tvar asClasses = [];\n\t\t\t\tfor (i = 0; i < iColumns; i++)\n\t\t\t\t{\n\t\t\t\t\tasClasses.push(\"\");\n\t\t\t\t}\n\t\t\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t\t\t{\n\t\t\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\t\t\n\t\t\t\t\tif ( iClass < 3 )\n\t\t\t\t\t{\n\t\t\t\t\t\tiClass++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Make changes to the classes for each cell as needed */\n\t\t\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\t\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\t\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t\t\t{\n\t\t\t\t\t/* Determine which column we're looking at */\n\t\t\t\t\tiTargetCol = i % iColumns;\n\t\t\t\t\t\n\t\t\t\t\t/* What is the full list of classes now */\n\t\t\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t\t\t/* What sorting class should be applied? */\n\t\t\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\t\t\n\t\t\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We changed something */\n\t\t\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* We need to add a class */\n\t\t\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Save the state of a table in a cookie such that the page can be reloaded\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSaveState ( oSettings )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\t/* Store the interesting variables */\n\t\t\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\t\t\tvar oState = {\n\t\t\t\t\"iCreate\":      new Date().getTime(),\n\t\t\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\t\t\"abVisCols\":    []\n\t\t\t};\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\t\t\n\t\t\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Attempt to load a saved table state from a cookie\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {object} oInit DataTables init object so we can override settings\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLoadState ( oSettings, oInit )\n\t\t{\n\t\t\tif ( !oSettings.oFeatures.bStateSave )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\t\t\tif ( !oData )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t * cancelling of loading by returning false\n\t\t\t */\n\t\t\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Store the saved state so it might be accessed at any time */\n\t\t\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\t\t\n\t\t\t/* Restore key features */\n\t\t\toSettings._iDisplayStart    = oData.iStart;\n\t\t\toSettings.iInitDisplayStart = oData.iStart;\n\t\t\toSettings._iDisplayEnd      = oData.iEnd;\n\t\t\toSettings._iDisplayLength   = oData.iLength;\n\t\t\toSettings.aaSorting         = oData.aaSorting.slice();\n\t\t\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\t\t\n\t\t\t/* Search filtering  */\n\t\t\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t\t\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\t\t\n\t\t\t/* Column visibility state\n\t\t\t * Pass back visibility settings to the init handler, but to do not here override\n\t\t\t * the init object that the user might have passed in\n\t\t\t */\n\t\t\toInit.saved_aoColumns = [];\n\t\t\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t\t\t{\n\t\t\t\toInit.saved_aoColumns[i] = {};\n\t\t\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a new cookie with a value to store the state of a table\n\t\t *  @param {string} sName name of the cookie to create\n\t\t *  @param {string} sValue the value the cookie should take\n\t\t *  @param {int} iSecs duration of the cookie\n\t\t *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n\t\t *  @param {function} fnCallback User definable function to modify the cookie\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n\t\t{\n\t\t\tvar date = new Date();\n\t\t\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\t\t\n\t\t\t/* \n\t\t\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t\t\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t\t\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t\t\t * patch to use at least some of the path\n\t\t\t */\n\t\t\tvar aParts = window.location.pathname.split('/');\n\t\t\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\t\t\tvar sFullCookie, oData;\n\t\t\t\n\t\t\tif ( fnCallback !== null )\n\t\t\t{\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\t\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\t\t\taParts.join('/')+\"/\" );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t\t\t}\n\t\t\t\n\t\t\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t\t\t * belonging to DataTables.\n\t\t\t */\n\t\t\tvar\n\t\t\t\taCookies =document.cookie.split(';'),\n\t\t\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\t\t\taOldCookies = [];\n\t\t\t\n\t\t\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\t\t\n\t\t\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch( e ) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\t// Make sure we delete the oldest ones first\n\t\t\t\taOldCookies.sort( function (a, b) {\n\t\t\t\t\treturn b.time - a.time;\n\t\t\t\t} );\n\t\t\n\t\t\t\t// Eliminate as many old DataTables cookies as we need to\n\t\t\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar old = aOldCookies.pop();\n\t\t\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\t\t\taParts.join('/') + \"/\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tdocument.cookie = sFullCookie;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Read an old cookie to get a cookie with an old table state\n\t\t *  @param {string} sName name of the cookie to read\n\t\t *  @returns {string} contents of the cookie - or null if no cookie with that name found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnReadCookie ( sName )\n\t\t{\n\t\t\tvar\n\t\t\t\taParts = window.location.pathname.split('/'),\n\t\t\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t\t\t \tsCookieContents = document.cookie.split(';');\n\t\t\t\n\t\t\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t\t\t{\n\t\t\t\tvar c = sCookieContents[i];\n\t\t\t\t\n\t\t\t\twhile (c.charAt(0)==' ')\n\t\t\t\t{\n\t\t\t\t\tc = c.substring(1,c.length);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t\t\t{\n\t\t\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return the settings object for a particular table\n\t\t *  @param {node} nTable table we are using as a dataTable\n\t\t *  @returns {object} Settings object - or null if not found\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnSettingsFromNode ( nTable )\n\t\t{\n\t\t\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t\t\t{\n\t\t\t\t\treturn DataTable.settings[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an array with the TR nodes for the table\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @returns {array} TR array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTrNodes ( oSettings )\n\t\t{\n\t\t\tvar aNodes = [];\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\taNodes.push( aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn aNodes;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Return an flat array with all TD nodes for the table, or row\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n\t\t *    if not given then the return array will contain all nodes for the table\n\t\t *  @returns {array} TD array\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n\t\t{\n\t\t\tvar anReturn = [];\n\t\t\tvar iCorrector;\n\t\t\tvar anTds, nTd;\n\t\t\tvar iRow, iRows=oSettings.aoData.length,\n\t\t\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\t\t\n\t\t\t/* Allow the collection to be limited to just one row */\n\t\t\tif ( iIndividualRow !== undefined )\n\t\t\t{\n\t\t\t\tiStart = iIndividualRow;\n\t\t\t\tiEnd = iIndividualRow+1;\n\t\t\t}\n\t\t\n\t\t\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tif ( oData.nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\t\t\tanTds = [];\n\t\t\t\t\tnTd = oData.nTr.firstChild;\n\t\t\t\t\twhile ( nTd )\n\t\t\t\t\t{\n\t\t\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tiCorrector = 0;\n\t\t\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\t\t\tiCorrector++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn anReturn;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Log an error message\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {int} iLevel log error messages, or display them to the user\n\t\t *  @param {string} sMesg error message\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnLog( oSettings, iLevel, sMesg )\n\t\t{\n\t\t\tvar sAlert = (oSettings===null) ?\n\t\t\t\t\"DataTables warning: \"+sMesg :\n\t\t\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\t\t\n\t\t\tif ( iLevel === 0 )\n\t\t\t{\n\t\t\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t\t\t{\n\t\t\t\t\talert( sAlert );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(sAlert);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if ( window.console && console.log )\n\t\t\t{\n\t\t\t\tconsole.log( sAlert );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * See if a property is defined on one object, if so assign it to the other object\n\t\t *  @param {object} oRet target object\n\t\t *  @param {object} oSrc source object\n\t\t *  @param {string} sName property\n\t\t *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnMap( oRet, oSrc, sName, sMappedName )\n\t\t{\n\t\t\tif ( sMappedName === undefined )\n\t\t\t{\n\t\t\t\tsMappedName = sName;\n\t\t\t}\n\t\t\tif ( oSrc[sName] !== undefined )\n\t\t\t{\n\t\t\t\toRet[sMappedName] = oSrc[sName];\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n\t\t * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n\t\t * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n\t\t * we do want to deep copy arrays.\n\t\t *  @param {object} oOut Object to extend\n\t\t *  @param {object} oExtender Object from which the properties will be applied to oOut\n\t\t *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n\t\t *  @memberof DataTable#oApi\n\t\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t\t */\n\t\tfunction _fnExtend( oOut, oExtender )\n\t\t{\n\t\t\tvar val;\n\t\t\t\n\t\t\tfor ( var prop in oExtender )\n\t\t\t{\n\t\t\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t\t\t{\n\t\t\t\t\tval = oExtender[prop];\n\t\t\n\t\t\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t\t\t{\n\t\t\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\toOut[prop] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn oOut;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Bind an event handers to allow a click or return key to activate the callback.\n\t\t * This is good for accessibility since a return on the keyboard will have the\n\t\t * same effect as a click, if the element has focus.\n\t\t *  @param {element} n Element to bind the action to\n\t\t *  @param {object} oData Data object to pass to the triggered function\n\t\t *  @param {function} fn Callback function for when the event is triggered\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBindAction( n, oData, fn )\n\t\t{\n\t\t\t$(n)\n\t\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} )\n\t\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t} } )\n\t\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Register a callback function. Easily allows a callback function to be added to\n\t\t * an array store of callback functions that can then all be called together.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {function} fn Function to be called back\n\t\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t\t{\n\t\t\tif ( fn )\n\t\t\t{\n\t\t\t\toSettings[sStore].push( {\n\t\t\t\t\t\"fn\": fn,\n\t\t\t\t\t\"sName\": sName\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Fire callback functions and trigger events. Note that the loop over the callback\n\t\t * array store is done backwards! Further note that you do not want to fire off triggers\n\t\t * in time sensitive applications (for example cell creation) as its slow.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t\t *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n\t\t *    is fired\n\t\t *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n\t\t{\n\t\t\tvar aoStore = oSettings[sStore];\n\t\t\tvar aRet =[];\n\t\t\n\t\t\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t\t\t}\n\t\t\n\t\t\tif ( sTrigger !== null )\n\t\t\t{\n\t\t\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t\t\t}\n\t\t\n\t\t\treturn aRet;\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n\t\t * library, then we use that as it is fast, safe and accurate. If the function isn't \n\t\t * available then we need to built it ourselves - the inspiration for this function comes\n\t\t * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n\t\t * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n\t\t * do what we need, without requiring a dependency for DataTables.\n\t\t *  @param {object} o JSON object to be converted\n\t\t *  @returns {string} JSON string\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n\t\t{\n\t\t\t/* Not an object or array */\n\t\t\tvar sType = typeof o;\n\t\t\tif (sType !== \"object\" || o === null)\n\t\t\t{\n\t\t\t\t// simple data type\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\to = '\"'+o+'\"';\n\t\t\t\t}\n\t\t\t\treturn o+\"\";\n\t\t\t}\n\t\t\n\t\t\t/* If object or array, need to recurse over it */\n\t\t\tvar\n\t\t\t\tsProp, mValue,\n\t\t\t\tjson = [],\n\t\t\t\tbArr = $.isArray(o);\n\t\t\t\n\t\t\tfor (sProp in o)\n\t\t\t{\n\t\t\t\tmValue = o[sProp];\n\t\t\t\tsType = typeof mValue;\n\t\t\n\t\t\t\tif (sType === \"string\")\n\t\t\t\t{\n\t\t\t\t\tmValue = '\"'+mValue+'\"';\n\t\t\t\t}\n\t\t\t\telse if (sType === \"object\" && mValue !== null)\n\t\t\t\t{\n\t\t\t\t\tmValue = _fnJsonString(mValue);\n\t\t\t\t}\n\t\t\n\t\t\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t\t\t}\n\t\t\n\t\t\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * From some browsers (specifically IE6/7) we need special handling to work around browser\n\t\t * bugs - this function is used to detect when these workarounds are needed.\n\t\t *  @param {object} oSettings dataTables settings object\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnBrowserDetect( oSettings )\n\t\t{\n\t\t\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t\t\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t\t\t * without forcing scrolling\n\t\t\t */\n\t\t\tvar n = $(\n\t\t\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t\t\t'</div>'+\n\t\t\t\t'</div>')[0];\n\t\t\n\t\t\tdocument.body.appendChild( n );\n\t\t\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\t\t\tdocument.body.removeChild( n );\n\t\t}\n\t\t\n\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar i, iLen, a = [], tr;\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\t\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\t\t\n\t\t\tif ( !oOpts )\n\t\t\t{\n\t\t\t\toOpts = {};\n\t\t\t}\n\t\t\n\t\t\toOpts = $.extend( {}, {\n\t\t\t\t\"filter\": \"none\", // applied\n\t\t\t\t\"order\": \"current\", // \"original\"\n\t\t\t\t\"page\": \"all\" // current\n\t\t\t}, oOpts );\n\t\t\n\t\t\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t\t\t// senseless otherwise\n\t\t\tif ( oOpts.page == 'current' )\n\t\t\t{\n\t\t\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr ;\n\t\t\t\t\tif ( tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\ttr = aoData[ i ].nTr;\n\t\t\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( tr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t\t\t}\n\t\t\n\t\t\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t\t\t * to make the selector act like it would in a full table - so we need\n\t\t\t * to build both results and then combine them together\n\t\t\t */\n\t\t\tvar jqA = $(a);\n\t\t\tvar jqTRs = jqA.filter( sSelector );\n\t\t\tvar jqDescendants = jqA.find( sSelector );\n\t\t\n\t\t\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to  \n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for \n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"filter\": \"applied\"});\n\t\t *      \n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the filter\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\tvar aOut = [];\n\t\t\tvar i, iLen, iIndex;\n\t\t\tvar aTrs = this.$( sSelector, oOpts );\n\t\t\n\t\t\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t\t\t}\n\t\t\n\t\t\treturn aOut;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using \n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} mData The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in \n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *    \n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *    \n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *        \n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( mData, bRedraw )\n\t\t{\n\t\t\tif ( mData.length === 0 )\n\t\t\t{\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\t\n\t\t\tvar aiReturn = [];\n\t\t\tvar iTest;\n\t\t\t\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t\t\t{\n\t\t\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\t\t\tif ( iTest == -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn aiReturn;\n\t\t\t\t\t}\n\t\t\t\t\taiReturn.push( iTest );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiTest = _fnAddData( oSettings, mData );\n\t\t\t\tif ( iTest == -1 )\n\t\t\t\t{\n\t\t\t\t\treturn aiReturn;\n\t\t\t\t}\n\t\t\t\taiReturn.push( iTest );\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn aiReturn;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data \n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n\t\t * through the sWidth parameter). This can be useful when the width of the table's \n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      $(window).bind('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\tthis.fnDraw( false );\n\t\t\t}\n\t\t\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\tthis.oApi._fnScrollDraw(oSettings);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnClearTable( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which \n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\t\t\tif ( nTrParent )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 1;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [fnCallBack] Callback function\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, iAODataIndex;\n\t\t\t\n\t\t\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\t\t\n\t\t\t/* Return the data array from this row */\n\t\t\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\t\t\n\t\t\t/* Update the _DT_RowIndex parameter */\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the target row from the search array */\n\t\t\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\t\t\n\t\t\t/* Delete from the display arrays */\n\t\t\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t\t\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\t\t\n\t\t\t/* If there is a user callback function - call it */\n\t\t\tif ( typeof fnCallBack === \"function\" )\n\t\t\t{\n\t\t\t\tfnCallBack.call( this, oSettings, oData );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check for an 'overflow' they case for displaying the table */\n\t\t\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\treturn oData;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables \n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( bRemove )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\t\t\tvar nBody = oSettings.nTBody;\n\t\t\tvar i, iLen;\n\t\t\n\t\t\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\t\t\n\t\t\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\t\t\toSettings.bDestroying = true;\n\t\t\t\n\t\t\t/* Fire off the destroy callbacks for plug-ins etc */\n\t\t\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\t\t\n\t\t\t/* If the table is not being removed, restore the hidden columns */\n\t\t\tif ( !bRemove )\n\t\t\t{\n\t\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Blitz all DT events */\n\t\t\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\t\t\n\t\t\t/* If there is an 'empty' indicator row, remove it */\n\t\t\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\t\t\n\t\t\t/* When scrolling we had to break the table up - restore it */\n\t\t\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('thead').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t\t\t{\n\t\t\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\t\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the DataTables generated nodes, events and classes */\n\t\t\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t\t\t$(oSettings.nTableWrapper).remove();\n\t\t\t\n\t\t\toSettings.aaSorting = [];\n\t\t\toSettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\n\t\t\t$('th, td', oSettings.nTHead).removeClass( [\n\t\t\t\toSettings.oClasses.sSortable,\n\t\t\t\toSettings.oClasses.sSortableAsc,\n\t\t\t\toSettings.oClasses.sSortableDesc,\n\t\t\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t\t\t);\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\t\t\n\t\t\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\t\t\tvar kids = jqWrapper.contents();\n\t\t\t\t\t$(this).append( kids );\n\t\t\t\t\tjqWrapper.remove();\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the TR elements back into the table in their original order */\n\t\t\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t\t\t{\n\t\t\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t\t\t}\n\t\t\telse if ( !bRemove )\n\t\t\t{\n\t\t\t\tnOrig.appendChild( oSettings.nTable );\n\t\t\t}\n\t\t\n\t\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Restore the width of the original table */\n\t\t\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t\t\t{\n\t\t\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t\t\t}\n\t\t\t\n\t\t\t/* If the were originally stripe classes - then we add them back here. Note\n\t\t\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t\t\t * it's a good effort without getting carried away\n\t\t\t */\n\t\t\tiLen = oSettings.asDestroyStripes.length;\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar anRows = $(nBody).children('tr');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( DataTable.settings[i] == oSettings )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* End it all */\n\t\t\toSettings = null;\n\t\t\toInit = null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( bComplete )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tif ( bComplete === false )\n\t\t\t{\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( !oSettings.oFeatures.bFilter )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bRegex === undefined || bRegex === null )\n\t\t\t{\n\t\t\t\tbRegex = false;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bSmart === undefined || bSmart === null )\n\t\t\t{\n\t\t\t\tbSmart = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t\t\t{\n\t\t\t\tbShowGlobal = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t\t\t{\n\t\t\t\tbCaseInsensitive = true;\n\t\t\t}\n\t\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null )\n\t\t\t{\n\t\t\t\t/* Global filter */\n\t\t\t\t_fnFilterComplete( oSettings, {\n\t\t\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t}, 1 );\n\t\t\t\t\n\t\t\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t\t\t{\n\t\t\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t\t\t// inside an iframe or frame...\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch ( e ) {\n\t\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Single column filter */\n\t\t\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\t\t\"bRegex\": bRegex,\n\t\t\t\t\t\"bSmart\": bSmart,\n\t\t\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t\t\t} );\n\t\t\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the \n\t\t * provided parameters.\n\t\t *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [iCol] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( mRow, iCol )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( mRow !== undefined )\n\t\t\t{\n\t\t\t\tvar iRow = mRow;\n\t\t\t\tif ( typeof mRow === 'object' )\n\t\t\t\t{\n\t\t\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\t\t\tif (sNode === \"tr\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sNode === \"td\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( iCol !== undefined )\n\t\t\t\t{\n\t\t\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t\t\t}\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow]._aData : null;\n\t\t\t}\n\t\t\treturn _fnGetDataMaster( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will \n\t\t * typically want to use the '$' API method in preference to this as it is more \n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t\n\t\t\tif ( iRow !== undefined ) {\n\t\t\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\t\t\toSettings.aoData[iRow].nTr : null;\n\t\t\t}\n\t\t\treturn _fnGetTrNodes( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible), \n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *        \n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *        \n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *      \n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( nNode )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\t\t\n\t\t\tif ( sNodeName == \"TR\" )\n\t\t\t{\n\t\t\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t\t\t}\n\t\t\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\t\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\t\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently \n\t\t * on display on the page, with the HTML contents that is passed into the \n\t\t * function. This can be used, for example, to ask for confirmation that a \n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *      \n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *      \n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\t/* Find settings from table node */\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\n\t\t\t/* Check that the row given is in the table */\n\t\t\tvar nTableRows = _fnGetTrNodes( oSettings );\n\t\t\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* the old open one if there is one */\n\t\t\tthis.fnClose( nTr );\n\t\t\t\n\t\t\tvar nNewRow = document.createElement(\"tr\");\n\t\t\tvar nNewCell = document.createElement(\"td\");\n\t\t\tnNewRow.appendChild( nNewCell );\n\t\t\tnNewCell.className = sClass;\n\t\t\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\t\t\n\t\t\tif (typeof mHtml === \"string\")\n\t\t\t{\n\t\t\t\tnNewCell.innerHTML = mHtml;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(nNewCell).html( mHtml );\n\t\t\t}\n\t\t\n\t\t\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\t\t\tvar nTrs = $('tr', oSettings.nTBody);\n\t\t\tif ( $.inArray(nTr, nTrs) != -1  )\n\t\t\t{\n\t\t\t\t$(nNewRow).insertAfter(nTr);\n\t\t\t}\n\t\t\t\n\t\t\toSettings.aoOpenRows.push( {\n\t\t\t\t\"nTr\": nNewRow,\n\t\t\t\t\"nParent\": nTr\n\t\t\t} );\n\t\t\t\n\t\t\treturn nNewRow;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API \n\t\t * function. With this function you can have a DataTables table go to the next, \n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\t_fnPageChange( oSettings, mAction );\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen;\n\t\t\tvar aoColumns = oSettings.aoColumns;\n\t\t\tvar aoData = oSettings.aoData;\n\t\t\tvar nTd, bAppend, iBefore;\n\t\t\t\n\t\t\t/* No point in doing anything if we are requesting what is already true */\n\t\t\tif ( aoColumns[iCol].bVisible == bShow )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Show the column */\n\t\t\tif ( bShow )\n\t\t\t{\n\t\t\t\tvar iInsert = 0;\n\t\t\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t{\n\t\t\t\t\t\tiInsert++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\t\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\t\t\n\t\t\t\t/* Which coloumn should we be inserting before? */\n\t\t\t\tif ( !bAppend )\n\t\t\t\t{\n\t\t\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tiBefore = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( bAppend )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Remove a column from display */\n\t\t\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Clear to set the visible flag */\n\t\t\taoColumns[iCol].bVisible = bShow;\n\t\t\n\t\t\t/* Redraw the header and footer based on the new column visibility */\n\t\t\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\t\t\tif ( oSettings.nTFoot )\n\t\t\t{\n\t\t\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t\t\t}\n\t\t\t\n\t\t\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\t\t\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a redraw incase anything depending on the table columns needs it \n\t\t\t * (built-in: scrolling) \n\t\t\t */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnSaveState( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See \n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *      \n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the \n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\toSettings.aaSorting = aaSort;\n\t\t\t_fnSort( oSettings );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      \n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t\t\t \tfnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\t\tvar i, iLen, sDisplay;\n\t\t\tvar iRow = (typeof mRow === 'object') ? \n\t\t\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\t\t\n\t\t\tif ( $.isArray(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Array update - update the whole row */\n\t\t\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\t\t\n\t\t\t\t/* Flag to the function that we are recursing */\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t\t\t{\n\t\t\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\t\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\t\t\n\t\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Individual cell update */\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\t\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t\n\t\t\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\t\t\tif ( oCol.fnRender !== null )\n\t\t\t\t{\n\t\t\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t\t\t{\n\t\t\t\t\t/* Do the actual HTML update */\n\t\t\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t\t\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t\t\t */\n\t\t\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\t\t\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\t\t\toSettings, \n\t\t\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t\t\t);\n\t\t\t\n\t\t\t/* Perform pre-draw actions */\n\t\t\tif ( bAction === undefined || bAction )\n\t\t\t{\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Redraw the table */\n\t\t\tif ( bRedraw === undefined || bRedraw )\n\t\t\t{\n\t\t\t\t_fnReDraw( oSettings );\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\t\t\n\t\t\n\t\t/*\n\t\t * This is really a good bit rubbish this method of exposing the internal methods\n\t\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t\t */\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a wrapper function for exporting an internal functions to an external API.\n\t\t *  @param {string} sFunc API function name\n\t\t *  @returns {function} wrapped function\n\t\t *  @memberof DataTable#oApi\n\t\t */\n\t\tfunction _fnExternApiFunc (sFunc)\n\t\t{\n\t\t\treturn function() {\n\t\t\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\t\t\tArray.prototype.slice.call(arguments) );\n\t\t\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t\t\t};\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Reference to internal functions for use by plug-in developers. Note that these\n\t\t * methods are references to internal functions and are considered to be private.\n\t\t * If you use these methods, be aware that they are liable to change between versions\n\t\t * (check the upgrade notes).\n\t\t *  @namespace\n\t\t */\n\t\tthis.oApi = {\n\t\t\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\t\t\"_fnInitialise\": _fnInitialise,\n\t\t\t\"_fnInitComplete\": _fnInitComplete,\n\t\t\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\t\t\"_fnAddColumn\": _fnAddColumn,\n\t\t\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\t\t\"_fnAddData\": _fnAddData,\n\t\t\t\"_fnCreateTr\": _fnCreateTr,\n\t\t\t\"_fnGatherData\": _fnGatherData,\n\t\t\t\"_fnBuildHead\": _fnBuildHead,\n\t\t\t\"_fnDrawHead\": _fnDrawHead,\n\t\t\t\"_fnDraw\": _fnDraw,\n\t\t\t\"_fnReDraw\": _fnReDraw,\n\t\t\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\t\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\t\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\t\t\"_fnServerParams\": _fnServerParams,\n\t\t\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\t\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\t\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\t\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\t\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\t\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\t\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\t\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\t\t\"_fnFilter\": _fnFilter,\n\t\t\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\t\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\t\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\t\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\t\t\"_fnSort\": _fnSort,\n\t\t\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\t\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\t\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\t\t\"_fnPageChange\": _fnPageChange,\n\t\t\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\t\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\t\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\t\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\t\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\t\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\t\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\t\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\t\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\t\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\t\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\t\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\t\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\t\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\t\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\t\t\"_fnStringToCss\": _fnStringToCss,\n\t\t\t\"_fnDetectType\": _fnDetectType,\n\t\t\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\t\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\t\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\t\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\t\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\t\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\t\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\t\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\t\t\"_fnLog\": _fnLog,\n\t\t\t\"_fnClearTable\": _fnClearTable,\n\t\t\t\"_fnSaveState\": _fnSaveState,\n\t\t\t\"_fnLoadState\": _fnLoadState,\n\t\t\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\t\t\"_fnReadCookie\": _fnReadCookie,\n\t\t\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\t\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\t\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\t\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\t\t\"_fnMap\": _fnMap,\n\t\t\t\"_fnGetRowData\": _fnGetRowData,\n\t\t\t\"_fnGetCellData\": _fnGetCellData,\n\t\t\t\"_fnSetCellData\": _fnSetCellData,\n\t\t\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\t\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\t\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\t\t\"_fnBindAction\": _fnBindAction,\n\t\t\t\"_fnExtend\": _fnExtend,\n\t\t\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\t\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\t\t\"_fnJsonString\": _fnJsonString,\n\t\t\t\"_fnRender\": _fnRender,\n\t\t\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\t\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\t\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\t\t\"_fnGetColumns\": _fnGetColumns\n\t\t};\n\t\t\n\t\t$.extend( DataTable.ext.oApi, this.oApi );\n\t\t\n\t\tfor ( var sFunc in DataTable.ext.oApi )\n\t\t{\n\t\t\tif ( sFunc )\n\t\t\t{\n\t\t\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar bUsePassedData = false;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\t\t\t\"table: \"+this.nodeName );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( DataTable.settings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn DataTable.settings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( oInit.bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( DataTable.settings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tDataTable.settings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\":        this,\n\t\t\t\t\"oApi\":          _that.oApi,\n\t\t\t\t\"oInit\":         oInit,\n\t\t\t\t\"sDestroyWidth\": $(this).width(),\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\tDataTable.settings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\tif ( !oInit )\n\t\t\t{\n\t\t\t\toInit = {};\n\t\t\t}\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\toInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n\t\t\t_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n\t\t\t_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripeClasses\" );\n\t\t\t_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n\t\t\t_fnMap( oSettings, oInit, \"fnServerData\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n\t\t\t_fnMap( oSettings, oInit, \"sServerMethod\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSorting\" );\n\t\t\t_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n\t\t\t_fnMap( oSettings, oInit, \"aLengthMenu\" );\n\t\t\t_fnMap( oSettings, oInit, \"sPaginationType\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxSource\" );\n\t\t\t_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n\t\t\t_fnMap( oSettings, oInit, \"iCookieDuration\" );\n\t\t\t_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n\t\t\t_fnMap( oSettings, oInit, \"sDom\" );\n\t\t\t_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n\t\t\t_fnMap( oSettings, oInit, \"iTabIndex\" );\n\t\t\t_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n\t\t\t_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n\t\t\t_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n\t\t\t_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateLoad\" );\n\t\t\t_fnMap( oSettings, oInit, \"fnStateSave\" );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t\t\t\t   oSettings.oFeatures.bSortClasses )\n\t\t\t{\n\t\t\t\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t\t\t\t * processing must be enabled by the developer\n\t\t\t\t */\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n\t\t\t}\n\t\t\telse if ( oSettings.oFeatures.bDeferRender )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t\t\t\t * you want to have multiple tables with multiple independent classes \n\t\t\t\t */\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\t\t\t\n\t\t\t\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oSettings.oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by a cookie! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\toSettings.oFeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.aaData !== null )\n\t\t\t{\n\t\t\t\tbUsePassedData = true;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tif ( oInit.oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t\t\t\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toSettings.oClasses.sStripeOdd,\n\t\t\t\t\toSettings.oClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tiLen=oSettings.asStripeClasses.length;\n\t\t\toSettings.asDestroyStripes = [];\n\t\t\tif (iLen)\n\t\t\t{\n\t\t\t\tvar bStripeRemove = false;\n\t\t\t\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\t\t\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tbStripeRemove = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\t\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( bStripeRemove )\n\t\t\t\t{\n\t\t\t\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\t\t\t\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t\t\t\t{\n\t\t\t\t\tif ( aoColumnsInit[i] === null )\n\t\t\t\t\t{\n\t\t\t\t\t\taoColumnsInit[i] = {};\n\t\t\t\t\t}\n\t\t\t\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * Check the aaSorting array\n\t\t\t */\n\t\t\tfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][0] = 0;\n\t\t\t\t}\n\t\t\t\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\t\t\t\n\t\t\t\t/* Add a default sorting index */\n\t\t\t\tif ( oSettings.aaSorting[i][2] === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][2] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\t\t\t\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Set the current sorting index based on aoColumns.asSorting */\n\t\t\t\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = [ document.createElement( 'thead' ) ];\n\t\t\t\tthis.appendChild( thead[0] );\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = [ document.createElement( 'tbody' ) ];\n\t\t\t\tthis.appendChild( tbody[0] );\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\toSettings.nTBody.setAttribute( \"role\", \"alert\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\n\t\t\toSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = [ document.createElement( 'tfoot' ) ];\n\t\t\t\tthis.appendChild( tfoot[0] );\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length > 0 )\n\t\t\t{\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( bUsePassedData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* Grab the data from the page */\n\t\t\t\t_fnGatherData( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t * to ensure compatibility.\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t *    version, or false if this version of DataTales is not suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n\t */\n\tDataTable.fnVersionCheck = function( sVersion )\n\t{\n\t\t/* This is cheap, but effective */\n\t\tvar fnZPad = function (Zpad, count)\n\t\t{\n\t\t\twhile(Zpad.length < count) {\n\t\t\t\tZpad += '0';\n\t\t\t}\n\t\t\treturn Zpad;\n\t\t};\n\t\tvar aThis = DataTable.ext.sVersion.split('.');\n\t\tvar aThat = sVersion.split('.');\n\t\tvar sThis = '', sThat = '';\n\t\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsThis += fnZPad( aThis[i], 3 );\n\t\t\tsThat += fnZPad( aThat[i], 3 );\n\t\t}\n\t\t\n\t\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n\t};\n\t\n\t\n\t/**\n\t * Check if a TABLE node is a DataTable table already or not.\n\t *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n\t *    node types can be passed in, but will always return false).\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var ex = document.getElementById('example');\n\t *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n\t *      $(ex).dataTable();\n\t *    }\n\t */\n\tDataTable.fnIsDataTable = function ( nTable )\n\t{\n\t\tvar o = DataTable.settings;\n\t\n\t\tfor ( var i=0 ; i<o.length ; i++ )\n\t\t{\n\t\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn false;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can select to\n\t * get only currently visible tables.\n\t *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n\t *    visible tables only.\n\t *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    var table = $.fn.dataTable.fnTables(true);\n\t *    if ( table.length > 0 ) {\n\t *      $(table).dataTable().fnAdjustColumnSizing();\n\t *    }\n\t */\n\tDataTable.fnTables = function ( bVisible )\n\t{\n\t\tvar out = [];\n\t\n\t\tjQuery.each( DataTable.settings, function (i, o) {\n\t\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t\t{\n\t\t\t\tout.push( o.nTable );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn out;\n\t};\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t/**\n\t * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n\t * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n\t * of the build in methods use this method to provide their own capabilities (sorting methods\n\t * for example).\n\t * \n\t * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n\t * and modified by plug-ins.\n\t *  @namespace\n\t */\n\tDataTable.models.ext = {\n\t\t/**\n\t\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t\t * over the filtering logic. Each element in this array is a function (parameters\n\t\t * described below) that is called for every row in the table, and your logic decides if\n\t\t * it should be included in the filtered data set or not.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       Function input parameters:\n\t\t *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t\t *    // a certain range.\n\t\t *    $.fn.dataTableExt.afnFiltering.push(\n\t\t *      function( oSettings, aData, iDataIndex ) {\n\t\t *        var iMin = document.getElementById('min').value * 1;\n\t\t *        var iMax = document.getElementById('max').value * 1;\n\t\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"afnFiltering\": [],\n\t\n\t\n\t\t/**\n\t\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t\t * an array of the values you wish to be sorted for the column in question and then return\n\t\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t\t * data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *         <li>{int} Target column index</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{array} Data for the column to be sorted upon</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t\t *    {\n\t\t *      var aData = [];\n\t\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t\t *        aData.push( this.value );\n\t\t *      } );\n\t\t *      return aData;\n\t\t *    }\n\t\t */\n\t\t\"afnSortData\": [],\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t\t *   <ul>\n\t\t *     <li>{function} fnInit Initialisation of the plug-in\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t\t *                into DataTables control (sDom) - for example this might be useful when \n\t\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t\t *     <li>{string} sFeature Feature name</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t * \n\t\t *  @example\n\t\t *    // How TableTools initialises itself.\n\t\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\",\n\t\t *      \"sFeature\": \"TableTools\"\n\t\t *    } );\n\t\t */\n\t\t\"aoFeatures\": [],\n\t\n\t\n\t\t/**\n\t\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t\t * column) or they can be automatically detected by the methods in this array. The functions\n\t\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t\t * and returning the type if it is a known type, or null otherwise.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be analysed</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t\t *           on to the other type detection functions.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  \n\t\t *  @example\n\t\t *    // Currency type detection plug-in:\n\t\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t\t *      function ( sData ) {\n\t\t *        var sValidChars = \"0123456789.-\";\n\t\t *        var Char;\n\t\t *        \n\t\t *        // Check the numeric part\n\t\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t\t *          Char = sData.charAt(i); \n\t\t *          if (sValidChars.indexOf(Char) == -1) {\n\t\t *            return null;\n\t\t *          }\n\t\t *        }\n\t\t *        \n\t\t *        // Check prefixed by currency\n\t\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t\t *          return 'currency';\n\t\t *        }\n\t\t *        return null;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\t\"aTypes\": [],\n\t\n\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t\t * in order to ensure compatibility.\n\t\t *  @type function\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t\t *    required version, or false if this version of DataTales is not suitable\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iApiIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t\t * the format that should be filtered upon. This is done by adding functions this object \n\t\t * with a parameter name which matches the sType for that target column. This is the\n\t\t * corollary of <i>afnSortData</i> for filtering data.\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t * \n\t\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *  @deprecated\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t *    }\n\t\t */\n\t\t\"ofnSearch\": {},\n\t\n\t\n\t\t/**\n\t\t * Container for all private functions in DataTables so they can be exposed externally\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oApi\": {},\n\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oStdClasses\": {},\n\t\t\n\t\n\t\t/**\n\t\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oJUIClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t\t * the addition of pagination controls by extending this object, which can then be enabled\n\t\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t\t * to) that has two properties, both methods that are used by DataTables to update the\n\t\t * control's state.\n\t\t *   <ul>\n\t\t *     <li>\n\t\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t\t *         of the table. It is expected that this function will add the required DOM elements \n\t\t *         to the page for the paging controls to work. The element pointer \n\t\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t\t *         as children\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t\t *               change, this method must be called to redraw the table.</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *     <li>\n\t\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t\t *         status.\n\t\t *       <ul>\n\t     *         <li>\n\t     *           Function input parameters:\n\t     *           <ul>\n\t\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t\t *               or attach new event listeners</li>\n\t     *           </ul>\n\t     *         </li>\n\t\t *         <li>\n\t\t *           Function return:\n\t\t *           <ul>\n\t\t *             <li>No return required</li>\n\t\t *           </ul>\n\t\t *         </il>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t\t *        nFirst = document.createElement( 'span' );\n\t\t *        nPrevious = document.createElement( 'span' );\n\t\t *        nNext = document.createElement( 'span' );\n\t\t *        nLast = document.createElement( 'span' );\n\t\t *        \n\t\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t\t *        \n\t\t *        nFirst.className = \"paginate_button first\";\n\t\t *        nPrevious.className = \"paginate_button previous\";\n\t\t *        nNext.className=\"paginate_button next\";\n\t\t *        nLast.className = \"paginate_button last\";\n\t\t *        \n\t\t *        nPaging.appendChild( nFirst );\n\t\t *        nPaging.appendChild( nPrevious );\n\t\t *        nPaging.appendChild( nNext );\n\t\t *        nPaging.appendChild( nLast );\n\t\t *        \n\t\t *        $(nFirst).click( function () {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nPrevious).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nNext).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nLast).click( function() {\n\t\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t\t *          fnCallbackDraw( oSettings );\n\t\t *        } );\n\t\t *        \n\t\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t\t *      },\n\t\t *      \n\t\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t\t *        if ( !oSettings.aanFeatures.p ) {\n\t\t *          return;\n\t\t *        }\n\t\t *        \n\t\t *        // Loop over each instance of the pager\n\t\t *        var an = oSettings.aanFeatures.p;\n\t\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t\t *          var buttons = an[i].getElementsByTagName('span');\n\t\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t\t *          }\n\t\t *          \n\t\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t\t *            buttons[2].className = \"paginate_disabled_next\";\n\t\t *            buttons[3].className = \"paginate_disabled_next\";\n\t\t *          }\n\t\t *          else {\n\t\t *            buttons[2].className = \"paginate_enabled_next\";\n\t\t *            buttons[3].className = \"paginate_enabled_next\";\n\t\t *          }\n\t\t *        }\n\t\t *      }\n\t\t *    };\n\t\t */\n\t\t\"oPagination\": {},\n\t\n\t\n\t\t/**\n\t\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t\t * data column (you can add your own type detection functions, or override automatic \n\t\t * detection using sType). With this specific type given to the column, DataTables will \n\t\t * apply the required sort from the functions in the object. Each sort type must provide\n\t\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t\t * are run). The two sorting functions are typical Javascript sort methods:\n\t\t *   <ul>\n\t     *     <li>\n\t     *       Function input parameters:\n\t     *       <ul>\n\t\t *         <li>{*} Data to compare to the second parameter</li>\n\t\t *         <li>{*} Data to compare to the first parameter</li>\n\t     *       </ul>\n\t     *     </li>\n\t\t *     <li>\n\t\t *       Function return:\n\t\t *       <ul>\n\t\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t\t *           the first parameter should be sorted height than the second parameter.</li>\n\t\t *       </ul>\n\t\t *     </il>\n\t\t *   </ul>\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-case-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-case-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Case-insensitive string sorting, with pre-formatting\n\t\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t\t *      \"string-pre\": function(x) {\n\t\t *        return x.toLowerCase();\n\t\t *      },\n\t\t *      \"string-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"oSort\": {},\n\t\n\t\n\t\t/**\n\t\t * Version string for plug-ins to check compatibility. Allowed format is\n\t\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t\t * e are optional\n\t\t *  @type string\n\t\t *  @default Version number\n\t\t */\n\t\t\"sVersion\": DataTable.version,\n\t\n\t\n\t\t/**\n\t\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t\t *  @type string\n\t\t *  @default alert\n\t\t */\n\t\t\"sErrMode\": \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Store information for DataTables to access globally about other instances\n\t\t *  @namespace\n\t\t *  @private\n\t\t */\n\t\t\"_oExternConfig\": {\n\t\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\t\"iNextUnique\": 0\n\t\t}\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings \n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data \n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is \n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": [],\n\t\n\t\t/**\n\t\t * Array of TD elements that are cached for hidden rows, so they can be\n\t\t * reinserted into the table if a column is made visible again (or to act\n\t\t * as a store if a column is made hidden). Only hidden columns have a \n\t\t * reference in the array. For non-hidden columns the value is either\n\t\t * undefined or null.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t *  @private\n\t\t */\n\t\t\"_anHidden\": [],\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults.columns} \n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t\t * to do with the data, and this property serves as the switch. Firstly, you \n\t\t * can have the sorting and filtering use the rendered value (true - default), \n\t\t * or you can have the sorting and filtering us the original value (false).\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\t\n\t\t/**\n\t\t * Flag to indicate to the type detection method if the automatic type\n\t\t * detection should be used, or if a column type (sType) has been specified\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @private\n\t\t */\n\t\t\"_bAutoType\": true,\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column \n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get - \n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @default null\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b> \n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array \n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data \n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t\t * in DataTables as such, but can be used for plug-ins to reference the \n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation \n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which \n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\" },\n\t\t *          { \"sTitle\": \"Browser\" },\n\t\t *          { \"sTitle\": \"Platform\" },\n\t\t *          { \"sTitle\": \"Version\" },\n\t\t *          { \"sTitle\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (mData)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaData\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"aoColumns\": [\n\t\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t\t * initialisation. You can define which column(s) the sort is performed upon, \n\t\t * and the sorting direction, with this variable. The aaSorting array should \n\t\t * contain an array for each column to be sorted initially containing the \n\t\t * column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSorting\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the aaSorting parameter, but \n\t\t * cannot be overridden by user interaction with the table. What this means \n\t\t * is that you could have a column (visible or hidden) which the sorting will \n\t\t * always be forced on first - any sorting after that (from the user) will \n\t\t * then be performed as required. This can be useful for grouping rows \n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aaSortingFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be \n\t\t * either a 1D array of options which will be used for both the displayed \n\t\t * option and the value, or a 2D array which will use the array in the first \n\t\t * position as the value, and the array in the second position as the \n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t *  \n\t\t *  @example\n\t\t *    // Setting the default display length as well as length menu\n\t\t *    // This is likely to be wanted if you remove the '10' option which\n\t\t *    // is the iDisplayLength default.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 25,\n\t\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The aoColumns option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see \n\t\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t\t * column, multiple columns, or all columns, using the aTargets property of \n\t\t * each object in the array. This allows great flexibility when creating \n\t\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t\t * columns you specifically want. aoColumnDefs may use any of the column \n\t\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t\t * have aTargets defined in each object in the array. Values in the aTargets\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as oSearch, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size \n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoSearchCols\": [\n\t\t *          null,\n\t\t *          { \"sSearch\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This \n\t\t * array may be of any length, and DataTables will apply each class \n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t\t *    options</i>\n\t\t *  @dtopt Option\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using aoColumns.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bAutoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t\t *        \"bDeferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with \n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *      \n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false,\n\t\t *        \"bDestroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.sDom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bFilter\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information \n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bInfo\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bJQueryUI\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bLengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *    \n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false,\n\t\t *        \"bRetrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *    \n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var oTable = initTable();\n\t\t *      // perform API operations with oTable \n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollAutoCss\": false,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollAutoCss\": true,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t\t * data as a user scrolls through a table, which is very useful for large\n\t\t * dataset. This cannot be used with pagination, which is automatically\n\t\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t\t * in preference to this option.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollInfinite\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the \"bSortable\" option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSort\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bSortClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t\t * table display information such as pagination information, display length,\n\t\t * filtering and sorting. As such when the end user reloads the page the\n\t\t * display display will match what thy had previously set up.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * Customise the cookie and / or the parameters being stored when using\n\t\t * DataTables with state saving enabled. This function is called whenever\n\t\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t\t * returned. Note that the data object passed in is a Javascript object which\n\t\t * must be converted to a string (JSON.stringify for example).\n\t\t *  @type function\n\t\t *  @param {string} sName Name of the cookie defined by DataTables\n\t\t *  @param {object} oData Data to be stored in the cookie\n\t\t *  @param {string} sExpires Cookie expires string\n\t\t *  @param {string} sPath Path of the cookie to set\n\t\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t\t *    using encodeURIComponent())\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t\t *          // Customise oData or sName or whatever else here\n\t\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDataIndex The index of this row in aoData\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnDrawCallback\": function( oSettings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' even.\n\t\t *  @type function\n\t\t *  @param {node} nFoot \"TR\" element for the footer\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the \n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the \n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} iIn number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnFormatNumber\": function ( iIn ) {\n\t\t *          if ( iIn &lt; 1000 ) {\n\t\t *            return iIn;\n\t\t *          } else {\n\t\t *            var \n\t\t *              s=(iIn+\"\"), \n\t\t *              a=s.split(\"\"), out=\"\", \n\t\t *              iLen=s.length;\n\t\t *            \n\t\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t\t *                out = \"'\"+out;\n\t\t *              }\n\t\t *              out = a[iLen-i-1]+out;\n\t\t *            }\n\t\t *          }\n\t\t *          return out;\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( iIn ) {\n\t\t\tif ( iIn < 1000 )\n\t\t\t{\n\t\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\t\treturn iIn;\n\t\t\t}\n\t\n\t\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\t\n\t\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t\t{\n\t\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t\t}\n\t\t\t\tout = a[iLen-i-1]+out;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} nHead \"TR\" element for the header\n\t\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t\t *  @param {int} iStart Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} iEnd Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} iStart Starting position in data for the draw\n\t\t *  @param {int} iEnd End position in data for the draw\n\t\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t\t *        return iStart +\" to \"+ iEnd;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnInitComplete\": function(oSettings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} nRow \"TR\" element for the current row\n\t\t *  @param {array} aData Raw data array for this row\n\t\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( aData[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server ($.getJSON) so something more suitable for your\n\t\t * application. For example you could use POST data, or pull information from\n\t\t * a Gears or AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t\t *  @param {array} aoData A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} fnCallback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // POST data to server\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"xhr.php\",\n\t\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t\t *          oSettings.jqXHR = $.ajax( {\n\t\t *            \"dataType\": 'json', \n\t\t *            \"type\": \"POST\", \n\t\t *            \"url\": sSource, \n\t\t *            \"data\": aoData, \n\t\t *            \"success\": fnCallback\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\t\"url\":  sUrl,\n\t\t\t\t\"data\": aoData,\n\t\t\t\t\"success\": function (json) {\n\t\t\t\t\tif ( json.sError ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\t\tfnCallback( json );\n\t\t\t\t},\n\t\t\t\t\"dataType\": \"json\",\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} aoData Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t\t *    as this is passed by reference.\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bProcessing\": true,\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"fnServerParams\": function ( aoData ) {\n\t\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from its state saving\n\t\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoad\": function (oSettings) {\n\t\t *          var o;\n\t\t *          \n\t\t *          // Send an Ajax request to the server to get the data. Note that\n\t\t *          // this is a synchronous request.\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"async\": false,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              o = json;\n\t\t *            }\n\t\t *          } );\n\t\t *          \n\t\t *          return o;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoad\": function ( oSettings ) {\n\t\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\t\tvar oData;\n\t\n\t\t\ttry {\n\t\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t\t} catch (e) {\n\t\t\t\toData = null;\n\t\t\t}\n\t\n\t\t\treturn oData;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for \n\t\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that is to be loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object that was loaded\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored - by default it will use a cookie, but you\n\t\t * might want to use local storage (HTML5) or a server-side database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSave\": function (oSettings, oData) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": oData,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\t\tthis.oApi._fnCreateCookie( \n\t\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\t\toSettings.iCookieDuration, \n\t\t\t\toSettings.sCookiePrefix, \n\t\t\t\toSettings.fnCookieCallback\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table \n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or \n\t\t * other state properties or modification. Note that for plug-in authors, you should \n\t\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {object} oData The state object to be saved\n\t\t *  @dtopt Callbacks\n\t\t * \n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bStateSave\": true,\n\t\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t\t *          oData.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration of the cookie which is used for storing session information. This\n\t\t * value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iCookieDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t\t *        \"iDeferLoading\": [ 57, 100 ],\n\t\t *        \"oSearch\": {\n\t\t *          \"sSearch\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (bLengthChange) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iDisplayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * The scroll gap is the amount of scrolling that is left to go before\n\t\t * DataTables will load the next 'page' of data automatically. You typically\n\t\t * want a gap which is big enough that the scrolling will be smooth for the\n\t\t * user, while not so large that it will load more data than need.\n\t\t *  @type int\n\t\t *  @default 100\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bScrollInfinite\": true,\n\t\t *        \"bScrollCollapse\": true,\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"iScrollLoadGap\": 50\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iScrollLoadGap\": 100,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"iTabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oAria\": {\n\t\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t\t *  @namespace\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\t\t\n\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *  @dtopt Language\n\t\t\t\t * \n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"oLanguage\": {\n\t\t\t\t *          \"oPaginate\": {\n\t\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information that \n\t\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t\t * can be freely moved or removed as the language requirements change.\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the \n\t\t\t * format of this string should match sInfo.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended \n\t\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t\t * to format large numbers that are used in the table information. By\n\t\t\t * default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sInfoThousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoThousands\": \",\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *    \n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * By default DataTables will look for the property 'aaData' when obtaining\n\t\t * data from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted object\n\t\t * notation to get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default aaData\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    // Get data from { \"data\": [...] }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data\"\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t\t *        \"sAjaxDataProp\": \"data.inner\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sAjaxDataProp\": \"aaData\",\n\t\n\t\n\t\t/**\n\t\t * You can instruct DataTables to load data from an external source using this\n\t\t * parameter (use aData if you want to pass data in you already have). Simply\n\t\t * provide a url a JSON object can be obtained from. This object must include\n\t\t * the parameter 'aaData' which is the data source for the table.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter can be used to override the default prefix that DataTables\n\t\t * assigns to a cookie when state saving is enabled.\n\t\t *  @type string\n\t\t *  @default SpryMedia_DataTables_\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\t\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * DataTables features two different built-in pagination interaction methods\n\t\t * ('two_button' or 'full_numbers') which present different page controls to\n\t\t * the end user. Further methods can be added using the API (see below).\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sPaginationType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t\t * layout, or you have a large number of columns in the table, you can enable\n\t\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t\t * property can be any CSS unit, or a number (in which case it will be treated\n\t\t * as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"bScrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Options\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollX\": \"100%\",\n\t\t *        \"sScrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *  @dtopt Features\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"bServerSide\": true,\n\t\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t\t *        \"sServerMethod\": \"POST\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sServerMethod\": \"GET\"\n\t};\n\t\n\t\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.columns = {\n\t\t/**\n\t\t * Allows a column's sorting to take multiple columns into account when \n\t\t * doing a sort. For example first name / last name columns make sense to \n\t\t * do a multi-column sort over the two columns.\n\t\t *  @type array\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          { \"aDataSort\": [ 0, 1 ] },\n\t\t *          { \"aDataSort\": [ 1, 0 ] },\n\t\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\n\t\t/**\n\t\t * You can control the default sorting direction, and even alter the behaviour\n\t\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t\t * parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          { \"asSorting\": [ \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"asSorting\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSearchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bSortable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t\t * to use the original data (before rendering) for sorting and filtering \n\t\t * (the default is to used the rendered data that the user can see). This \n\t\t * may be useful for dates etc.\n\t\t * \n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"bUseRendered\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"bVisible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\t\n\t\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @param {int} iCol The column index for aoColumns\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [3],\n\t\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t\t *            if ( sData == \"1.7\" ) {\n\t\t *              $(nTd).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * <code>Deprecated</code> Custom display function that will be called for the \n\t\t * display of each cell in this column.\n\t\t *\n\t\t * Please note that this option has now been deprecated and will be removed\n\t\t * in the next version of DataTables. Please use mRender / mData rather than\n\t\t * fnRender.\n\t\t *  @type function\n\t\t *  @param {object} o Object with the following parameters:\n\t\t *  @param {int}    o.iDataRow The row in aoData\n\t\t *  @param {int}    o.iDataColumn The column in question\n\t\t *  @param {array}  o.aData The data for the row in question\n\t\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t\t *  @param {object} o.mDataProp The data property used for this column\n\t\t *  @param {*}      val The current cell value\n\t\t *  @returns {string} The string you which to use in the display\n\t\t *  @dtopt Columns\n\t\t *  @deprecated\n\t\t */\n\t\t\"fnRender\": null,\n\t\n\t\n\t\t/**\n\t\t * The column index (starting from 0!) that you wish a sort to be performed\n\t\t * upon when this column is selected for sorting. This can be used for sorting\n\t\t * on hidden columns for example.\n\t\t *  @type int\n\t\t *  @default -1 <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"iDataSort\": 1 },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t\t * in DataTables for this option, but it is strongly recommended that you use\n\t\t * mData in preference to mDataProp.\n\t\t *  @name DataTable.defaults.columns.mDataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any JSON data source property,\n\t\t * including deeply nested objects / properties. mData can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source.</li>\n\t\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t\t *       by default, so you will need to specify the default content you want -\n\t\t *       typically an empty string). This can be useful on generated columns such \n\t\t *       as edit / delete action columns.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row</li>\n\t\t *         <li>{string} The type call data requested - this will be 'set' when\n\t\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t\t *           DataTables expects to get the raw data for the object back</li>\n\t\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is not required when 'set' is the type\n\t\t *       of call, but otherwise the return is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t\t * reflects the flexibility of this property and is consistent with the naming of\n\t\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t\t * it automatically maps the old name to the new if required.\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          { \"mData\": \"platform.inner\" },\n\t\t *          { \"mData\": \"platform.details.0\" },\n\t\t *          { \"mData\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Using mData as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to mData and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t\t * but not altering the underlying data for the table, use this property. mData\n\t\t * can actually do everything this property can and more, but this parameter is\n\t\t * easier to use since there is no 'set' option. Like mData is can be given\n\t\t * in a number of different ways to effect its behaviour, with the addition of \n\t\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t\t * objects):\n\t\t *   <ul>\n\t\t *     <li>integer - treated as an array index for the data source. This is the\n\t\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t\t *     <li>string - read an object property from the data source. Note that you can\n\t\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t\t *       data source and also array brackets to indicate that the data reader should\n\t\t *       loop over the data source array. When characters are given between the array\n\t\t *       brackets, these characters are used to join the data source array together.\n\t\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t\t *     <li>function - the function given will be executed whenever DataTables \n\t\t *       needs to set or get the data for a cell in the column. The function \n\t\t *       takes three parameters:\n\t\t *       <ul>\n\t\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t\t *           'type' or 'sort'.</li>\n\t\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t\t *       </ul>\n\t\t *       The return value from the function is what will be used for the data\n\t\t *       requested.</li>\n\t\t *    </ul>\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use mData</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t\t *        \"aoColumns\": [\n\t\t *          { \"mData\": \"engine\" },\n\t\t *          { \"mData\": \"browser\" },\n\t\t *          {\n\t\t *            \"mData\": \"platform\",\n\t\t *            \"mRender\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t * \n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *        {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"mData\": \"download_link\",\n\t\t *          \"mRender\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ {\n\t\t *          \"aTargets\": [ 0 ],\n\t\t *          \"sCellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sClass\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this, and it is not documented on the \n\t\t * general DataTables.net documentation\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *  @dtopt Columns\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"sContentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\",\n\t\t *            \"aTargets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"mData\": null,\n\t\t *            \"sDefaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sName\": \"engine\" },\n\t\t *          { \"sName\": \"browser\" },\n\t\t *          { \"sName\": \"platform\" },\n\t\t *          { \"sName\": \"version\" },\n\t\t *          { \"sName\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the sorting which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to sorting. This allows sorting to occur on user editable\n\t\t * elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [\n\t\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"sSortDataType\": \"dom-text\" },\n\t\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t\t *          { \"sSortDataType\": \"dom-select\" },\n\t\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t\t *    original HTML table.</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sTitle\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be sorted.\n\t\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t\t * before sorting)) are currently available. Note that only date formats\n\t\t * understood by Javascript's Date() object will be accepted as type date. For\n\t\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t\t * 'date' or 'html' (by default). Further types can be adding through\n\t\t * plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sType\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *  @dtopt Columns\n\t\t * \n\t\t *  @example\n\t\t *    // Using aoColumnDefs\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumnDefs\": [ \n\t\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Using aoColumns\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"aoColumns\": [ \n\t\t *          { \"sWidth\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a \n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t * \n\t * Note that this object is related to {@link DataTable.defaults} but this \n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant \n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\t\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t\t * this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoCss\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t\t * using the Scroller plug-in.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfinite\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\t\t\n\t\t\t/**\n\t\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t\t * when using infinite scrolling.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type int\n\t\t\t */\n\t\t\t\"iLoadGap\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\t\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See \n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false\n\t\t},\n\t\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The \n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\t\n\t\t/**\n\t\t * Search data array for regular expression searching\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDataSearch\": [],\n\t\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a \n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\t\n\t\t/**\n\t\t * Store the applied search for each column - see \n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t *   <li>Index 2 - index of asSorting for this column</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array|null\n\t\t *  @default null\n\t\t */\n\t\t\"aaSortingFixed\": null,\n\t\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width \n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of \n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data \n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string \n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\t\n\t\t/**\n\t\t * The cookie duration (for bStateSave) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iCookieDuration\": 0,\n\t\t\n\t\t/**\n\t\t * The cookie name prefix.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sCookiePrefix\": \"\",\n\t\t\n\t\t/**\n\t\t * Callback function for cookie creation.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnCookieCallback\": null,\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object \n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an \n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\t\n\t\t/**\n\t\t * State that was loaded from the cookie. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case \n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering. \n\t\t * This can be used for working with the XHR information in one of the \n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra \n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t\t * this property to get the end point\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *  @private\n\t\t */\n\t\t\"_iDisplayEnd\": 10,\n\t\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw \n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than \n\t\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplayMaster.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t\t} else {\n\t\t\t\treturn this.aiDisplay.length;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * Set the display end point - aiDisplay index\n\t\t *  @type function\n\t\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._iDisplayEnd;\n\t\t\t}\n\t\t},\n\t\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\t\n\t$.extend( DataTable.ext.oStdClasses, {\n\t\t\"sTable\": \"dataTable\",\n\t\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\t\"sPageJUINext\": \"\",\n\t\t\"sPageJUIPrev\": \"\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"paginate_active\",\n\t\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\t\"sPageFirst\": \"first\",\n\t\t\"sPagePrevious\": \"previous\",\n\t\t\"sPageNext\": \"next\",\n\t\t\"sPageLast\": \"last\",\n\t\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t\t/* Two buttons buttons */\n\t\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\t\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"ui-state-default\",\n\t\t\"sSortDesc\": \"ui-state-default\",\n\t\t\"sSortable\": \"ui-state-default\",\n\t\t\"sSortableAsc\": \"ui-state-default\",\n\t\t\"sSortableDesc\": \"ui-state-default\",\n\t\t\"sSortableNone\": \"ui-state-default\",\n\t\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\t\n\t\t/* Misc */\n\t\t\"sFooterTH\": \"ui-state-default\",\n\t\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n\t} );\n\t\n\t/*\n\t * Variable: oPagination\n\t * Purpose:  \n\t * Scope:    jQuery.fn.dataTableExt\n\t */\n\t$.extend( DataTable.ext.oPagination, {\n\t\t/*\n\t\t * Variable: two_button\n\t\t * Purpose:  Standard two button (forward/back) pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"two_button\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t\t:\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t\t$(nPaging).append( sAppend );\n\t\t\t\t\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nPrevious = els[0],\n\t\t\t\t\tnNext = els[1];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\t\n\t\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.two_button.fnUpdate\n\t\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar nNode;\n\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\t\tif ( nNode )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Previous page */\n\t\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t\t    \n\t\t\t\t\t\t/* Next page */\n\t\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * Variable: iFullNumbersShowPages\n\t\t * Purpose:  Change the number of pages which can be seen\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"iFullNumbersShowPages\": 5,\n\t\t\n\t\t/*\n\t\t * Variable: full_numbers\n\t\t * Purpose:  Full numbers pagination\n\t\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t\t */\n\t\t\"full_numbers\": {\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnInit\n\t\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t\t */\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t$(nPaging).append(\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t\t'<span></span>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t\t);\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\tnNext = els[2],\n\t\t\t\t\tnLast = els[3];\n\t\t\t\t\n\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\t\n\t\t\t\t/* ID the first elements only */\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t/*\n\t\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t\t * Purpose:  Update the list of page buttons shows\n\t\t\t * Returns:  -\n\t\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t\t */\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\t\tvar sList = \"\";\n\t\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar fnBind = function (j) {\n\t\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\t/* Pages calculation */\n\t\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = 1;\n\t\t\t\t\tiCurrentPage = 1;\n\t\t\t\t}\n\t\t\t\telse if (iPages < iPageCount)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t\t{\n\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\tiEndButton = iPageCount;\n\t\t\t\t}\n\t\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t\t}\n\t\n\t\t\t\t\n\t\t\t\t/* Build the dynamic list */\n\t\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Loop over each instance of the pager */\n\t\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tnNode = an[i];\n\t\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t\t.html( sList )\n\t\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\t\n\t\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\t\tanStatic = [\n\t\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t\t];\n\t\n\t\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t$.extend( DataTable.ext.oSort, {\n\t\t/*\n\t\t * text sorting\n\t\t */\n\t\t\"string-pre\": function ( a )\n\t\t{\n\t\t\tif ( typeof a != 'string' ) {\n\t\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t\t}\n\t\t\treturn a.toLowerCase();\n\t\t},\n\t\n\t\t\"string-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"string-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * html sorting (ignore html tags)\n\t\t */\n\t\t\"html-pre\": function ( a )\n\t\t{\n\t\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t\t},\n\t\t\n\t\t\"html-asc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\t\n\t\t\"html-desc\": function ( x, y )\n\t\t{\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * date sorting\n\t\t */\n\t\t\"date-pre\": function ( a )\n\t\t{\n\t\t\tvar x = Date.parse( a );\n\t\t\t\n\t\t\tif ( isNaN(x) || x===\"\" )\n\t\t\t{\n\t\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t\t}\n\t\t\treturn x;\n\t\t},\n\t\n\t\t\"date-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"date-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t},\n\t\t\n\t\t\n\t\t/*\n\t\t * numerical sorting\n\t\t */\n\t\t\"numeric-pre\": function ( a )\n\t\t{\n\t\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t\t},\n\t\n\t\t\"numeric-asc\": function ( x, y )\n\t\t{\n\t\t\treturn x - y;\n\t\t},\n\t\t\n\t\t\"numeric-desc\": function ( x, y )\n\t\t{\n\t\t\treturn y - x;\n\t\t}\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.aTypes, [\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is numeric\n\t\t * Returns:  string:'numeric' or null\n\t\t * Inputs:   mixed:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\t/* Allow zero length strings as a number */\n\t\t\tif ( typeof sData === 'number' )\n\t\t\t{\n\t\t\t\treturn 'numeric';\n\t\t\t}\n\t\t\telse if ( typeof sData !== 'string' )\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tvar sValidFirstChars = \"0123456789-\";\n\t\t\tvar sValidChars = \"0123456789.\";\n\t\t\tvar Char;\n\t\t\tvar bDecimal = false;\n\t\t\t\n\t\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\t\tChar = sData.charAt(0); \n\t\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Check all the other characters are valid */\n\t\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t\t{\n\t\t\t\tChar = sData.charAt(i); \n\t\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Only allowed one decimal place... */\n\t\t\t\tif ( Char == \".\" )\n\t\t\t\t{\n\t\t\t\t\tif ( bDecimal )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbDecimal = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn 'numeric';\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string is actually a formatted date\n\t\t * Returns:  string:'date' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tvar iParse = Date.parse(sData);\n\t\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t\t{\n\t\t\t\treturn 'date';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: -\n\t\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t\t * Returns:  string:'html' or null\n\t\t * Inputs:   string:sText - string to check\n\t\t */\n\t\tfunction ( sData )\n\t\t{\n\t\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t\t{\n\t\t\t\treturn 'html';\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t] );\n\t\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/js/jquery.js",
    "content": "/*! jQuery v1.8.2 jquery.com | jquery.org/license */\n(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e=\"data-\"+c.replace(I,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:+d+\"\"===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b===\"data\"&&p.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c===\"input\"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,\"display\")===\"none\"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,\"olddisplay\"),b?(!e[f]&&c.style.display===\"none\"&&(c.style.display=\"\"),c.style.display===\"\"&&bZ(c)&&(e[f]=p._data(c,\"olddisplay\",cc(c.nodeName)))):(d=bH(c,\"display\"),!e[f]&&d!==\"none\"&&p._data(c,\"olddisplay\",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display===\"none\"||c.style.display===\"\")c.style.display=b?e[f]||\"\":\"none\"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function ca(a,b,c,d){var e=c===(d?\"border\":\"content\")?4:b===\"width\"?1:0,f=0;for(;e<4;e+=2)c===\"margin\"&&(f+=p.css(a,c+bV[e],!0)),d?(c===\"content\"&&(f-=parseFloat(bH(a,\"padding\"+bV[e]))||0),c!==\"margin\"&&(f-=parseFloat(bH(a,\"border\"+bV[e]+\"Width\"))||0)):(f+=parseFloat(bH(a,\"padding\"+bV[e]))||0,c!==\"padding\"&&(f+=parseFloat(bH(a,\"border\"+bV[e]+\"Width\"))||0));return f}function cb(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,\"boxSizing\")===\"border-box\";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?\"border\":\"content\"),e)+\"px\"}function cc(a){if(bS[a])return bS[a];var b=p(\"<\"+a+\">\").appendTo(e.body),c=b.css(\"display\");b.remove();if(c===\"none\"||c===\"\"){bI=e.body.appendChild(bI||p.extend(e.createElement(\"iframe\"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(\"<!doctype html><html><body>\"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,\"display\"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c&&p.type(b)===\"object\")for(e in b)ci(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!=\"string\"&&(c=b,b=\"*\");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\\+/.test(d),f&&(d=d.substr(1)||\"*\"),e=a[d]=a[d]||[],e[f?\"unshift\":\"push\"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h==\"string\"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g[\"*\"]&&(h=cA(a,c,d,e,\"*\",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]===\"*\")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader(\"content-type\"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+\" \"+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!==\"*\"){if(h!==\"*\"&&h!==e){c=i[h+\" \"+e]||i[\"* \"+e];if(!c)for(d in i){f=d.split(\" \");if(f[1]===e){c=i[h+\" \"+f[0]]||i[\"* \"+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a[\"throws\"])b=c(b);else try{b=c(b)}catch(k){return{state:\"parsererror\",error:c?k:\"No conversion from \"+h+\" to \"+e}}}h=e}return{state:\"success\",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT[\"*\"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,\"fx\"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,\"fx\").length||j.empty.fire()})})),a.nodeType===1&&(\"height\"in b||\"width\"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,\"display\")===\"inline\"&&p.css(a,\"float\")===\"none\"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)===\"inline\"?m.display=\"inline-block\":m.zoom=1)),c.overflow&&(m.overflow=\"hidden\",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?\"hide\":\"show\"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,\"fxshow\")||p._data(a,\"fxshow\",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,\"fxshow\",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e===\"width\"||e===\"height\"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d[\"margin\"+c]=d[\"padding\"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,r=/\\S/,s=/\\s+/,t=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,u=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^[\\],:{}\\s]*$/,x=/(?:^|:|,)(?:\\s*\\[)+/g,y=/\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,z=/\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,A=/^-ms-/,B=/-([\\da-z])/gi,C=function(a,b){return(b+\"\").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener(\"DOMContentLoaded\",D,!1),p.ready()):e.readyState===\"complete\"&&(e.detachEvent(\"onreadystatechange\",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a==\"string\"){a.charAt(0)===\"<\"&&a.charAt(a.length-1)===\">\"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:\"\",jquery:\"1.8.2\",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b&&(d.selector=this.selector+\".\"+b+\"(\"+c+\")\"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),\"slice\",k.call(arguments).join(\",\"))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h==\"boolean\"&&(k=h,h=arguments[1]||{},i=2),typeof h!=\"object\"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger(\"ready\").off(\"ready\")},isFunction:function(a){return p.type(a)===\"function\"},isArray:Array.isArray||function(a){return p.type(a)===\"array\"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||\"object\"},isPlainObject:function(a){if(!a||p.type(a)!==\"object\"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,\"constructor\")&&!n.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!=\"string\"?null:(typeof b==\"boolean\"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!=\"string\")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,\"@\").replace(z,\"]\").replace(x,\"\")))return(new Function(\"return \"+b))();p.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,e;if(!c||typeof c!=\"string\")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)&&p.error(\"Invalid XML: \"+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,\"ms-\").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(\"﻿ \")?function(a){return a==null?\"\":o.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(t,\"\")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c===\"string\"||c===\"function\"||c===\"regexp\"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d==\"number\")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i==\"number\"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c==\"string\"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d==\"object\"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState===\"complete\")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener(\"DOMContentLoaded\",D,!1),a.addEventListener(\"load\",p.ready,!1);else{e.attachEvent(\"onreadystatechange\",D),a.attachEvent(\"onload\",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll(\"left\")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){E[\"[object \"+b+\"]\"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a==\"string\"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e===\"function\"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!==\"string\"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",p.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",p.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",p.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+\"With\"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement(\"div\");n.setAttribute(\"className\",\"t\"),n.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",c=n.getElementsByTagName(\"*\"),d=n.getElementsByTagName(\"a\")[0],d.style.cssText=\"top:1px;float:left;opacity:.5\";if(!c||!c.length)return{};f=e.createElement(\"select\"),g=f.appendChild(e.createElement(\"option\")),h=n.getElementsByTagName(\"input\")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName(\"tbody\").length,htmlSerialize:!!n.getElementsByTagName(\"link\").length,style:/top/.test(d.getAttribute(\"style\")),hrefNormalized:d.getAttribute(\"href\")===\"/a\",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value===\"on\",optSelected:g.selected,getSetAttribute:n.className!==\"t\",enctype:!!e.createElement(\"form\").enctype,html5Clone:e.createElement(\"nav\").cloneNode(!0).outerHTML!==\"<:nav></:nav>\",boxModel:e.compatMode===\"CSS1Compat\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent(\"onclick\",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent(\"onclick\"),n.detachEvent(\"onclick\",m)),h=e.createElement(\"input\"),h.value=\"t\",h.setAttribute(\"type\",\"radio\"),b.radioValue=h.value===\"t\",h.setAttribute(\"checked\",\"checked\"),h.setAttribute(\"name\",\"t\"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j=\"on\"+k,l=j in n,l||(n.setAttribute(j,\"return;\"),l=typeof n[j]==\"function\"),b[k+\"Bubbles\"]=l;return p(function(){var c,d,f,g,h=\"padding:0;margin:0;border:0;display:block;overflow:hidden;\",i=e.getElementsByTagName(\"body\")[0];if(!i)return;c=e.createElement(\"div\"),c.style.cssText=\"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\",i.insertBefore(c,i.firstChild),d=e.createElement(\"div\"),c.appendChild(d),d.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",f=d.getElementsByTagName(\"td\"),f[0].style.cssText=\"padding:0;margin:0;border:0;display:none\",l=f[0].offsetHeight===0,f[0].style.display=\"\",f[1].style.display=\"none\",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML=\"\",d.style.cssText=\"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!==\"1%\",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:\"4px\"}).width===\"4px\",g=e.createElement(\"div\"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width=\"0\",d.style.width=\"1px\",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!=\"undefined\"&&(d.innerHTML=\"\",d.style.cssText=h+\"width:1px;padding:1px;display:inline;zoom:1\",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display=\"block\",d.style.overflow=\"visible\",d.innerHTML=\"<div></div>\",d.firstChild.style.width=\"5px\",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:\"jQuery\"+(p.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c==\"string\",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c==\"object\"||typeof c==\"function\")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute(\"classid\")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,\"parsedAttrs\")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf(\"data-\")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,\"parsedAttrs\",!0)}}return k}return typeof a==\"object\"?this.each(function(){p.data(this,a)}):(d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\",p.access(this,function(c){if(c===b)return k=this.triggerHandler(\"getData\"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler(\"setData\"+e,d),p.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e===\"inprogress\"&&(e=c.shift(),d--),e&&(b===\"fx\"&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks(\"once memory\").add(function(){p.removeData(a,b+\"queue\",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!=\"string\"&&(c=a,a=\"fx\",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a===\"fx\"&&b[0]!==\"inprogress\"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!=\"string\"&&(c=a,a=b),a=a||\"fx\";while(h--)d=p._data(g[h],a+\"queueHooks\"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\\t\\r\\n]/g,P=/\\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a==\"string\"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=\" \"+e.className+\" \";for(g=0,h=b.length;g<h;g++)f.indexOf(\" \"+b[g]+\" \")<0&&(f+=b[g]+\" \");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a==\"string\"||a===b){c=(a||\"\").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(\" \"+e.className+\" \").replace(O,\" \");for(f=0,g=c.length;f<g;f++)while(d.indexOf(\" \"+c[f]+\" \")>=0)d=d.replace(\" \"+c[f]+\" \",\" \");e.className=a?p.trim(d):\"\"}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c===\"string\"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className&&p._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":p._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(\" \"+this[c].className+\" \").replace(O,\" \").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&\"get\"in c&&(d=c.get(f,\"value\"))!==b?d:(d=f.value,typeof d==\"string\"?d.replace(P,\"\"):d==null?\"\":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f=\"\":typeof f==\"number\"?f+=\"\":p.isArray(f)&&(f=p.map(f,function(a){return a==null?\"\":a+\"\"})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,f,\"value\")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type===\"select-one\";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,\"optgroup\"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find(\"option\").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute==\"undefined\")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&\"set\"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+\"\"),d)}return g&&\"get\"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,\"\"),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error(\"type property can't be changed\");else if(!p.support.radioValue&&b===\"radio\"&&p.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,\"button\")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,\"button\"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&\"set\"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&\"get\"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!=\"boolean\"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!==\"\":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+\"\"}},p.each([\"width\",\"height\"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c===\"\")return a.setAttribute(b,\"auto\"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===\"\"&&(b=\"false\"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+\"\"}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype=\"encoding\"),p.support.checkOn||p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\\.]*|)(?:\\.(.+)|)$/,X=/(?:^|\\s)hover(\\.\\S+|)\\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,\"mouseenter$1 mouseleave$1\")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!=\"undefined\"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(\" \");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||\"\").split(\".\").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(\".\")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent(\"on\"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||\"\")).split(\" \");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp(\"(^|\\\\.)\"+j.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d===\"**\"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,\"events\",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf(\"!\")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(\".\")>=0&&(t=s.split(\".\"),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c==\"object\"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+t.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,m=s.indexOf(\":\")<0?\"on\"+s:\"\";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,\"events\")||{})[c.type]&&p._data(k,\"handle\"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!==\"click\"||!p.nodeName(f,\"a\"))&&p.acceptData(f)&&m&&f[s]&&(s!==\"focus\"&&s!==\"blur\"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,\"events\")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!==\"click\"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!==\"click\"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d=\"on\"+b;a.detachEvent&&(typeof a[d]==\"undefined\"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,\"form\"))return!1;p.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=p.nodeName(c,\"input\")||p.nodeName(c,\"button\")?c.form:b;d&&!p._data(d,\"_submit_attached\")&&(p.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),p._data(d,\"_submit_attached\",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,\"form\"))return!1;p.event.remove(this,\"._submit\")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")p.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"&&(this._just_changed=!0)}),p.event.add(this,\"click._change\",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate(\"change\",this,a,!0)});return!1}p.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,\"_change_attached\")&&(p.event.add(b,\"change._change\",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate(\"change\",this.parentNode,a,!0)}),p._data(b,\"_change_attached\",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"&&b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,\"._change\"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a==\"object\"){typeof c!=\"string\"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a==\"object\"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||\"**\",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,\"**\"):this.off(b,a||\"**\",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,\"lastToggle\"+a.guid)||0)%d;return p._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!=\"string\")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,\"$1\"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c===\"input\"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c===\"input\"||c===\"button\")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L,\" \");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir===\"parentNode\",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+\" \"+g+\" \",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i==\"string\"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||\"*\",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[\" \"],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join(\"\").replace(L,\"$1\"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(\"\"))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u=\"0\",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG(\"*\",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type===\"ID\"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,\"\"),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,\"\"),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join(\"\");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n=\"undefined\",o=(\"sizcache\"+Math.random()).replace(\".\",\"\"),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",F=\"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",G=F.replace(\"w\",\"w#\"),H=\"([*^$|!~]?=)\",I=\"\\\\[\"+E+\"*(\"+F+\")\"+E+\"*(?:\"+H+E+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+G+\")|)|)\"+E+\"*\\\\]\",J=\":(\"+F+\")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\"+I+\")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",K=\":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+E+\"*((?:-\\\\d)?\\\\d*)\"+E+\"*\\\\)|)(?=[^-]|$)\",L=new RegExp(\"^\"+E+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+E+\"+$\",\"g\"),M=new RegExp(\"^\"+E+\"*,\"+E+\"*\"),N=new RegExp(\"^\"+E+\"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\"+E+\"*\"),O=new RegExp(J),P=/^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,Q=/^:not/,R=/[\\x20\\t\\r\\n\\f]*[+~]/,S=/:not\\($/,T=/h\\d/i,U=/input|select|textarea|button/i,V=/\\\\(?!\\\\)/g,W={ID:new RegExp(\"^#(\"+F+\")\"),CLASS:new RegExp(\"^\\\\.(\"+F+\")\"),NAME:new RegExp(\"^\\\\[name=['\\\"]?(\"+F+\")['\\\"]?\\\\]\"),TAG:new RegExp(\"^(\"+F.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+I),PSEUDO:new RegExp(\"^\"+J),POS:new RegExp(K,\"i\"),CHILD:new RegExp(\"^:(only|nth|first|last)-child(?:\\\\(\"+E+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+E+\"*(?:([+-]|)\"+E+\"*(\\\\d+)|))\"+E+\"*\\\\)|)\",\"i\"),needsContext:new RegExp(\"^\"+E+\"*[>+~]|\"+K,\"i\")},X=function(a){var b=r.createElement(\"div\");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),Z=X(function(a){return a.innerHTML=\"<a href='#'></a>\",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute(\"href\")===\"#\"}),$=X(function(a){a.innerHTML=\"<select></select>\";var b=typeof a.lastChild.getAttribute(\"multiple\");return b!==\"boolean\"&&b!==\"string\"}),_=X(function(a){return a.innerHTML=\"<div class='hidden e'></div><div class='hidden'></div>\",!a.getElementsByClassName||!a.getElementsByClassName(\"e\").length?!1:(a.lastChild.className=\"e\",a.getElementsByClassName(\"e\").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML=\"<a name='\"+o+\"'></a><div name='\"+o+\"'></div>\",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c=\"\",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent==\"string\")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!==\"HTML\":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]==\"boolean\"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute(\"href\",2)},type:function(a){return a.getAttribute(\"type\")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode(\"id\").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a===\"*\"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,\"\"),a[3]=(a[4]||a[5]||\"\").replace(V,\"\"),a[2]===\"~=\"&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]===\"nth\"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]===\"even\"||a[2]===\"odd\")),a[4]=+(a[6]+a[7]||a[2]===\"odd\")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(\")\",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,\"\"),function(b){return b.getAttribute(\"id\")===a}}:function(a){return a=a.replace(V,\"\"),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode(\"id\");return c&&c.value===a}},TAG:function(a){return a===\"*\"?function(){return!0}:(a=a.replace(V,\"\").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp(\"(^|\"+E+\")\"+a+\"(\"+E+\"|$)\"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute(\"class\")||\"\")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b===\"!=\":b?(f+=\"\",b===\"=\"?f===c:b===\"!=\"?f!==c:b===\"^=\"?c&&f.indexOf(c)===0:b===\"*=\"?c&&f.indexOf(c)>-1:b===\"$=\"?c&&f.substr(f.length-c.length)===c:b===\"~=\"?(\" \"+f+\" \").indexOf(c)>-1:b===\"|=\"?f===c||f.substr(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d){return a===\"nth\"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case\"only\":case\"first\":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a===\"first\")return!0;c=b;case\"last\":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error(\"unsupported pseudo: \"+a);return d[o]?d(b):d.length>1?(c=[a,a,\"\",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,\"$1\"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"&&!!a.checked||b===\"option\"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>\"@\"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()===\"input\"&&(b=a.type)===\"text\"&&((c=a.getAttribute(\"type\"))==null||c.toLowerCase()===b)},radio:bd(\"radio\"),checkbox:bd(\"checkbox\"),file:bd(\"file\"),password:bd(\"password\"),image:bd(\"image\"),submit:be(\"submit\"),reset:be(\"reset\"),button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"&&a.type===\"button\"||b===\"button\"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\\\/g,d=/\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,e=[\":focus\"],f=[\":active\",\":focus\"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML=\"<select><option selected=''></option></select>\",a.querySelectorAll(\"[selected]\").length||e.push(\"\\\\[\"+E+\"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\"),a.querySelectorAll(\":checked\").length||e.push(\":checked\")}),X(function(a){a.innerHTML=\"<p test=''></p>\",a.querySelectorAll(\"[test^='']\").length&&e.push(\"[*^$]=\"+E+\"*(?:\\\"\\\"|'')\"),a.innerHTML=\"<input type='hidden'/>\",a.querySelectorAll(\":enabled\").length||e.push(\":enabled\",\":disabled\")}),e=new RegExp(e.join(\"|\")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!==\"object\"){i=bh(a),(k=d.getAttribute(\"id\"))?l=k.replace(c,\"\\\\$&\"):d.setAttribute(\"id\",l),l=\"[id='\"+l+\"'] \",j=i.length;while(j--)i[j]=l+i[j].join(\"\");m=R.test(a)&&d.parentNode||d,n=i.join(\",\")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute(\"id\")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,\"div\");try{h.call(b,\"[test!='']:sizzle\"),f.push(\"!=\",J)}catch(c){}}),f=new RegExp(f.join(\"|\")),bc.matchesSelector=function(b,c){c=c.replace(d,\"='$1']\");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[\":\"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\\[\\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!=\"string\")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack(\"\",\"find\",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(bj(this,a,!0),\"filter\",a)},is:function(a){return!!a&&(typeof a==\"string\"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!=\"string\"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,\"closest\",a)},index:function(a){return a?typeof a==\"string\"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a==\"string\"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return p.dir(a,\"parentNode\",c)},next:function(a){return bi(a,\"nextSibling\")},prev:function(a){return bi(a,\"previousSibling\")},nextAll:function(a){return p.dir(a,\"nextSibling\")},prevAll:function(a){return p.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return p.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return p.dir(a,\"previousSibling\",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d==\"string\"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(\",\"))}}),p.extend({filter:function(a,b,c){return c&&(a=\":not(\"+a+\")\"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",bm=/ jQuery\\d+=\"(?:null|\\d+)\"/g,bn=/^\\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,bp=/<([\\w:]+)/,bq=/<tbody/i,br=/<|&#?\\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp(\"<(?:\"+bl+\")[\\\\s/>]\",\"i\"),bv=/^(?:checkbox|radio)$/,bw=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bx=/\\/(java|ecma)script/i,by=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,bz={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],area:[1,\"<map>\",\"</map>\"],_default:[0,\"\",\"\"]},bA=bk(e),bB=bA.appendChild(e.createElement(\"div\"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,\"X<div>\",\"</div>\"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,\"body\")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),\"before\",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),\"after\",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName(\"*\")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName(\"*\"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,\"\"):b;if(typeof a==\"string\"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(bo,\"<$1></$2>\");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),\"replaceWith\",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!=\"string\"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j==\"string\"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,\"tr\");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],\"table\")?bC(this[i],\"tbody\"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0}):p.error(\"no ajax\"):p.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(by,\"\")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i==\"string\"&&i.length<512&&c===e&&i.charAt(0)===\"<\"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test(\"<\"+a.nodeName+\">\")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment==\"undefined\")b=e;for(f=0;(h=a[f])!=null;f++){typeof h==\"number\"&&(h+=\"\");if(!h)continue;if(typeof h==\"string\")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement(\"div\"),s.appendChild(l),h=h.replace(bo,\"<$1></$2>\"),i=(bp.exec(h)||[\"\",\"\"])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i===\"table\"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===\"<table>\"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],\"tbody\")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,\"input\")?bG(h):typeof h.getElementsByTagName!=\"undefined\"&&p.grep(h.getElementsByTagName(\"input\"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,\"script\")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!=\"undefined\"&&(r=p.grep(p.merge([],h.getElementsByTagName(\"script\")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \\/]([\\w.]+)/.exec(a)||/(webkit)[ \\/]([\\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(a)||/(msie) ([\\w.]+)/.exec(a)||a.indexOf(\"compatible\")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\\([^)]*\\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp(\"^(\"+q+\")(.*)$\",\"i\"),bQ=new RegExp(\"^(\"+q+\")(?!px)[a-z%]+$\",\"i\"),bR=new RegExp(\"^([-+])=(\"+q+\")\",\"i\"),bS={},bT={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bU={letterSpacing:0,fontWeight:400},bV=[\"Top\",\"Right\",\"Bottom\",\"Left\"],bW=[\"Webkit\",\"O\",\"Moz\",\"ms\"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a==\"boolean\";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,\"opacity\");return c===\"\"?\"1\":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":p.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&\"get\"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g===\"string\"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g=\"number\");if(d==null||g===\"number\"&&isNaN(d))return;g===\"number\"&&!p.cssNumber[i]&&(d+=\"px\");if(!h||!(\"set\"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&\"get\"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f===\"normal\"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===\"\"&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b===\"fontSize\"?\"1em\":e,e=f.pixelLeft+\"px\",f.left=c,d&&(a.runtimeStyle.left=d)),e===\"\"?\"auto\":e}),p.each([\"height\",\"width\"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,\"display\"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,\"boxSizing\")===\"border-box\"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",f=d&&d.filter||c.filter||\"\";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,\"\"))===\"\"&&c.removeAttribute){c.removeAttribute(\"filter\");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+\" \"+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:\"inline-block\"},function(){if(b)return bH(a,\"marginRight\")})}}),!p.support.pixelPosition&&p.fn.position&&p.each([\"top\",\"left\"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+\"px\":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,\"display\"))===\"none\"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\\[\\]$/,cf=/\\r?\\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,\"\\r\\n\")}}):{name:b.name,value:c.replace(cf,\"\\r\\n\")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?\"\":b,e[e.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join(\"&\").replace(cd,\"+\")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,cn=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\\/\\//,cq=/\\?/,cr=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=[\"*/\"]+[\"*\"];try{ck=f.href}catch(cy){ck=e.createElement(\"a\"),ck.href=\"\",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!=\"string\"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(\" \");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c==\"object\"&&(f=\"POST\"),p.ajax({url:a,type:f,dataType:\"html\",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p(\"<div>\").append(a.replace(cr,\"\")).find(e):a)}),this},p.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each([\"get\",\"post\"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,\"script\")},getJSON:function(a,b,c){return p.get(a,b,c,\"json\")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":p.parseJSON,\"text xml\":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||\"\",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader(\"Last-Modified\"),w&&(p.lastModified[d]=w),w=x.getResponseHeader(\"Etag\"),w&&(p.etag[d]=w)),a===304?(y=\"notmodified\",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y=\"error\",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+\"\",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger(\"ajax\"+(k?\"Success\":\"Error\"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger(\"ajaxComplete\",[x,l]),--p.active||p.event.trigger(\"ajaxStop\"))}typeof a==\"object\"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks(\"once memory\"),r=l.statusCode||{},t={},u={},v=0,w=\"canceled\",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+\"\").replace(cl,\"\").replace(cp,cj[1]+\"//\"),l.dataTypes=p.trim(l.dataType||\"*\").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(\":\")+(i[3]?\"\":i[1]===\"http:\"?80:443)!==cj.join(\":\")+(cj[3]?\"\":cj[1]===\"http:\"?80:443)),l.data&&l.processData&&typeof l.data!=\"string\"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger(\"ajaxStart\");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?\"&\":\"?\")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,\"$1_=\"+z);l.url=A+(A===l.url?(cq.test(l.url)?\"&\":\"?\")+\"_=\"+z:\"\")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader(\"Content-Type\",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader(\"If-Modified-Since\",p.lastModified[d]),p.etag[d]&&x.setRequestHeader(\"If-None-Match\",p.etag[d])),x.setRequestHeader(\"Accept\",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!==\"*\"?\", \"+cx+\"; q=0.01\":\"\"):l.accepts[\"*\"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w=\"abort\";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,\"No Transport\");else{x.readyState=1,j&&n.trigger(\"ajaxSend\",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort(\"timeout\")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\\?/,cG=/(=)\\?(?=&|$)|\\?\\?/,cH=p.now();p.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=cE.pop()||p.expando+\"_\"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter(\"json jsonp\",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i==\"string\"&&!(c.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&cG.test(i);if(c.dataTypes[0]===\"jsonp\"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,\"$1\"+f):m?c.data=i.replace(cG,\"$1\"+f):k&&(c.url+=(cF.test(j)?\"&\":\"?\")+c.jsonp+\"=\"+f),c.converters[\"script json\"]=function(){return h||p.error(f+\" was not called\"),h[0]},c.dataTypes[0]=\"json\",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),\"script\"}),p.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter(\"script\",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\",a.global=!1)}),p.ajaxTransport(\"script\",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName(\"head\")[0]||e.documentElement;return{send:function(f,g){c=e.createElement(\"script\"),c.async=\"async\",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,\"success\")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&\"withCredentials\"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e[\"X-Requested-With\"]&&(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=\"\"}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp(\"^(?:([-+])=|)(\"+q+\")([a-z%]*)$\",\"i\"),cR=/queueHooks$/,cS=[cY],cT={\"*\":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?\"\":\"px\");if(d!==\"px\"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||\".5\",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?\"\":\"px\")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,\"\"),!b||b===\"auto\"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d==\"boolean\"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!=\"string\"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,c=a!=null&&a+\"queueHooks\",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$(\"show\"),slideUp:c$(\"hide\"),slideToggle:c$(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a==\"object\"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!=\"undefined\"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,\"marginTop\"))||0,c+=parseFloat(p.css(a,\"marginLeft\"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,\"position\");d===\"static\"&&(a.style.position=\"relative\");var e=p(a),f=e.offset(),g=p.css(a,\"top\"),h=p.css(a,\"left\"),i=(d===\"absolute\"||d===\"fixed\")&&p.inArray(\"auto\",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),\"using\"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,\"marginTop\"))||0,c.left-=parseFloat(p.css(a,\"marginLeft\"))||0,d.top+=parseFloat(p.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(p.css(b[0],\"borderLeftWidth\"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,\"position\")===\"static\")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:\"height\",Width:\"width\"},function(a,c){p.each({padding:\"inner\"+a,content:c,\"\":\"outer\"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!=\"boolean\"),h=d||(e===!0||f===!0?\"margin\":\"border\");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement[\"client\"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body[\"scroll\"+a],f[\"scroll\"+a],c.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define==\"function\"&&define.amd&&define.amd.jQuery&&define(\"jquery\",[],function(){return p})})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/DataTables.js",
    "content": "/**\n * @summary     DataTables\n * @description Paginate, search and sort HTML tables\n * @version     1.9.4\n * @file        jquery.dataTables.js\n * @author      Allan Jardine (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n *\n * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.\n *\n * This source file is free software, under either the GPL v2 license or a\n * BSD style license, available at:\n *   http://datatables.net/license_gpl2\n *   http://datatables.net/license_bsd\n * \n * This source file is distributed in the hope that it will be useful, but \n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY \n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n * \n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\t// Define as an AMD module if possible\n\tif ( typeof define === 'function' && define.amd )\n\t{\n\t\tdefine( ['jquery'], factory );\n\t}\n\t/* Define using browser globals otherwise\n\t * Prevent multiple instantiations if the script is loaded twice\n\t */\n\telse if ( jQuery && !jQuery.fn.dataTable )\n\t{\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\t/** \n\t * DataTables is a plug-in for the jQuery Javascript library. It is a \n\t * highly flexible tool, based upon the foundations of progressive \n\t * enhancement, which will add advanced interaction controls to any \n\t * HTML table. For a full list of features please refer to\n\t * <a href=\"http://datatables.net\">DataTables.net</a>.\n\t *\n\t * Note that the <i>DataTable</i> object is not a global variable but is\n\t * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which \n\t * it may be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [oInit={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.3+\n\t * \n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false,\n\t *        \"bSort\": false \n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function( oInit )\n\t{\n\t\trequire('core.columns.js');\n\t\trequire('core.data.js');\n\t\trequire('core.draw.js');\n\t\trequire('core.ajax.js');\n\t\trequire('core.filter.js');\n\t\trequire('core.info.js');\n\t\trequire('core.init.js');\n\t\trequire('core.length.js');\n\t\trequire('core.page.js');\n\t\trequire('core.processing.js');\n\t\trequire('core.scrolling.js');\n\t\trequire('core.sizing.js');\n\t\trequire('core.sort.js');\n\t\trequire('core.state.js');\n\t\trequire('core.support.js');\n\n\t\trequire('api.methods.js');\n\t\trequire('api.internal.js');\n\t\t\n\t\tvar _that = this;\n\t\tthis.each(function() {\n\t\t\trequire('core.constructor.js');\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\trequire('api.static.js');\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.9.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are created for the\n\t * tables on a given page.\n\t * \n\t * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i> \n\t * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has available\n\t * to it. These models define the objects that are used to hold the active state \n\t * and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\trequire('model.ext.js');\n\trequire('model.search.js');\n\trequire('model.row.js');\n\trequire('model.column.js');\n\trequire('model.defaults.js');\n\trequire('model.defaults.columns.js');\n\trequire('model.settings.js');\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension options.\n\t * \n\t * Note that the <i>DataTable.ext</i> object is available through\n\t * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is\n\t * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\tDataTable.ext = $.extend( true, {}, DataTable.models.ext );\n\trequire('ext.classes.js');\n\trequire('ext.paging.js');\n\trequire('ext.sorting.js');\n\trequire('ext.types.js');\n\n\t// jQuery aliases\n\t$.fn.DataTable = DataTable;\n\t$.fn.dataTable = DataTable;\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same point as\n\t * fnDrawCallback. This may be useful for binding events or performing calculations when\n\t * the table is altered at all.\n\t *  @name DataTable#draw\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Filter event, fired when the filtering applied to the table (using the build in global\n\t * global filter, or column filters) is altered.\n\t *  @name DataTable#filter\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Sort event, fired when the sorting applied to the table is altered.\n\t *  @name DataTable#sort\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully drawn,\n\t * including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save is required.\n\t * This method allows modification of the state saving object prior to actually doing the\n\t * save, including addition or other state properties (for plug-ins) or modification\n\t * of a DataTables core property.\n\t *  @name DataTable#stateSaveParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state - allowing modification\n\t * of the saved state is required or loading of state for a plug-in.\n\t *  @name DataTable#stateLoadParams\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and the settings\n\t * object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing (be it,\n\t * sort, filter or anything else). Can be used to indicate to the end user that\n\t * there is something happening, or that something has finished.\n\t *  @name DataTable#processing\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to \n\t * made to the server for new data (note that this trigger is called in fnServerData,\n\t * if you override fnServerData and which to use this event, you need to trigger it in\n\t * you success function).\n\t *  @name DataTable#xhr\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing\n\t * the bDestroy:true parameter in the initialisation object. This can be used to remove\n\t * bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n}));\n\n}(window, document));\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.internal.js",
    "content": "\n/*\n * This is really a good bit rubbish this method of exposing the internal methods\n * publicly... - To be fixed in 2.0 using methods on the prototype\n */\n\n\n/**\n * Create a wrapper function for exporting an internal functions to an external API.\n *  @param {string} sFunc API function name\n *  @returns {function} wrapped function\n *  @memberof DataTable#oApi\n */\nfunction _fnExternApiFunc (sFunc)\n{\n\treturn function() {\n\t\tvar aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat( \n\t\t\tArray.prototype.slice.call(arguments) );\n\t\treturn DataTable.ext.oApi[sFunc].apply( this, aArgs );\n\t};\n}\n\n\n/**\n * Reference to internal functions for use by plug-in developers. Note that these\n * methods are references to internal functions and are considered to be private.\n * If you use these methods, be aware that they are liable to change between versions\n * (check the upgrade notes).\n *  @namespace\n */\nthis.oApi = {\n\t\"_fnExternApiFunc\": _fnExternApiFunc,\n\t\"_fnInitialise\": _fnInitialise,\n\t\"_fnInitComplete\": _fnInitComplete,\n\t\"_fnLanguageCompat\": _fnLanguageCompat,\n\t\"_fnAddColumn\": _fnAddColumn,\n\t\"_fnColumnOptions\": _fnColumnOptions,\n\t\"_fnAddData\": _fnAddData,\n\t\"_fnCreateTr\": _fnCreateTr,\n\t\"_fnGatherData\": _fnGatherData,\n\t\"_fnBuildHead\": _fnBuildHead,\n\t\"_fnDrawHead\": _fnDrawHead,\n\t\"_fnDraw\": _fnDraw,\n\t\"_fnReDraw\": _fnReDraw,\n\t\"_fnAjaxUpdate\": _fnAjaxUpdate,\n\t\"_fnAjaxParameters\": _fnAjaxParameters,\n\t\"_fnAjaxUpdateDraw\": _fnAjaxUpdateDraw,\n\t\"_fnServerParams\": _fnServerParams,\n\t\"_fnAddOptionsHtml\": _fnAddOptionsHtml,\n\t\"_fnFeatureHtmlTable\": _fnFeatureHtmlTable,\n\t\"_fnScrollDraw\": _fnScrollDraw,\n\t\"_fnAdjustColumnSizing\": _fnAdjustColumnSizing,\n\t\"_fnFeatureHtmlFilter\": _fnFeatureHtmlFilter,\n\t\"_fnFilterComplete\": _fnFilterComplete,\n\t\"_fnFilterCustom\": _fnFilterCustom,\n\t\"_fnFilterColumn\": _fnFilterColumn,\n\t\"_fnFilter\": _fnFilter,\n\t\"_fnBuildSearchArray\": _fnBuildSearchArray,\n\t\"_fnBuildSearchRow\": _fnBuildSearchRow,\n\t\"_fnFilterCreateSearch\": _fnFilterCreateSearch,\n\t\"_fnDataToSearch\": _fnDataToSearch,\n\t\"_fnSort\": _fnSort,\n\t\"_fnSortAttachListener\": _fnSortAttachListener,\n\t\"_fnSortingClasses\": _fnSortingClasses,\n\t\"_fnFeatureHtmlPaginate\": _fnFeatureHtmlPaginate,\n\t\"_fnPageChange\": _fnPageChange,\n\t\"_fnFeatureHtmlInfo\": _fnFeatureHtmlInfo,\n\t\"_fnUpdateInfo\": _fnUpdateInfo,\n\t\"_fnFeatureHtmlLength\": _fnFeatureHtmlLength,\n\t\"_fnFeatureHtmlProcessing\": _fnFeatureHtmlProcessing,\n\t\"_fnProcessingDisplay\": _fnProcessingDisplay,\n\t\"_fnVisibleToColumnIndex\": _fnVisibleToColumnIndex,\n\t\"_fnColumnIndexToVisible\": _fnColumnIndexToVisible,\n\t\"_fnNodeToDataIndex\": _fnNodeToDataIndex,\n\t\"_fnVisbleColumns\": _fnVisbleColumns,\n\t\"_fnCalculateEnd\": _fnCalculateEnd,\n\t\"_fnConvertToWidth\": _fnConvertToWidth,\n\t\"_fnCalculateColumnWidths\": _fnCalculateColumnWidths,\n\t\"_fnScrollingWidthAdjust\": _fnScrollingWidthAdjust,\n\t\"_fnGetWidestNode\": _fnGetWidestNode,\n\t\"_fnGetMaxLenString\": _fnGetMaxLenString,\n\t\"_fnStringToCss\": _fnStringToCss,\n\t\"_fnDetectType\": _fnDetectType,\n\t\"_fnSettingsFromNode\": _fnSettingsFromNode,\n\t\"_fnGetDataMaster\": _fnGetDataMaster,\n\t\"_fnGetTrNodes\": _fnGetTrNodes,\n\t\"_fnGetTdNodes\": _fnGetTdNodes,\n\t\"_fnEscapeRegex\": _fnEscapeRegex,\n\t\"_fnDeleteIndex\": _fnDeleteIndex,\n\t\"_fnReOrderIndex\": _fnReOrderIndex,\n\t\"_fnColumnOrdering\": _fnColumnOrdering,\n\t\"_fnLog\": _fnLog,\n\t\"_fnClearTable\": _fnClearTable,\n\t\"_fnSaveState\": _fnSaveState,\n\t\"_fnLoadState\": _fnLoadState,\n\t\"_fnCreateCookie\": _fnCreateCookie,\n\t\"_fnReadCookie\": _fnReadCookie,\n\t\"_fnDetectHeader\": _fnDetectHeader,\n\t\"_fnGetUniqueThs\": _fnGetUniqueThs,\n\t\"_fnScrollBarWidth\": _fnScrollBarWidth,\n\t\"_fnApplyToChildren\": _fnApplyToChildren,\n\t\"_fnMap\": _fnMap,\n\t\"_fnGetRowData\": _fnGetRowData,\n\t\"_fnGetCellData\": _fnGetCellData,\n\t\"_fnSetCellData\": _fnSetCellData,\n\t\"_fnGetObjectDataFn\": _fnGetObjectDataFn,\n\t\"_fnSetObjectDataFn\": _fnSetObjectDataFn,\n\t\"_fnApplyColumnDefs\": _fnApplyColumnDefs,\n\t\"_fnBindAction\": _fnBindAction,\n\t\"_fnExtend\": _fnExtend,\n\t\"_fnCallbackReg\": _fnCallbackReg,\n\t\"_fnCallbackFire\": _fnCallbackFire,\n\t\"_fnJsonString\": _fnJsonString,\n\t\"_fnRender\": _fnRender,\n\t\"_fnNodeToColumnIndex\": _fnNodeToColumnIndex,\n\t\"_fnInfoMacros\": _fnInfoMacros,\n\t\"_fnBrowserDetect\": _fnBrowserDetect,\n\t\"_fnGetColumns\": _fnGetColumns\n};\n\n$.extend( DataTable.ext.oApi, this.oApi );\n\nfor ( var sFunc in DataTable.ext.oApi )\n{\n\tif ( sFunc )\n\t{\n\t\tthis[sFunc] = _fnExternApiFunc(sFunc);\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.methods.js",
    "content": "/**\n * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n * return the resulting jQuery object.\n *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n *    criterion (\"applied\") or all TR elements (i.e. no filter).\n *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n *    Can be either 'current', whereby the current sorting of the table is used, or\n *    'original' whereby the original order the data was read into the table is used.\n *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n *    'current' and filter is 'applied', regardless of what they might be given as.\n *  @returns {object} jQuery object, filtered by the given selector.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Highlight every second row\n *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n *    } );\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Filter to rows with 'Webkit' in them, add a background colour and then\n *      // remove the filter, thus highlighting the 'Webkit' rows only.\n *      oTable.fnFilter('Webkit');\n *      oTable.$('tr', {\"filter\": \"applied\"}).css('backgroundColor', 'blue');\n *      oTable.fnFilter('');\n *    } );\n */\nthis.$ = function ( sSelector, oOpts )\n{\n\tvar i, iLen, a = [], tr;\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar aoData = oSettings.aoData;\n\tvar aiDisplay = oSettings.aiDisplay;\n\tvar aiDisplayMaster = oSettings.aiDisplayMaster;\n\n\tif ( !oOpts )\n\t{\n\t\toOpts = {};\n\t}\n\n\toOpts = $.extend( {}, {\n\t\t\"filter\": \"none\", // applied\n\t\t\"order\": \"current\", // \"original\"\n\t\t\"page\": \"all\" // current\n\t}, oOpts );\n\n\t// Current page implies that order=current and fitler=applied, since it is fairly\n\t// senseless otherwise\n\tif ( oOpts.page == 'current' )\n\t{\n\t\tfor ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"current\" && oOpts.filter == \"none\" )\n\t{\n\t\tfor ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplayMaster[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"current\" && oOpts.filter == \"applied\" )\n\t{\n\t\tfor ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ aiDisplay[i] ].nTr;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"original\" && oOpts.filter == \"none\" )\n\t{\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ i ].nTr ;\n\t\t\tif ( tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse if ( oOpts.order == \"original\" && oOpts.filter == \"applied\" )\n\t{\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\ttr = aoData[ i ].nTr;\n\t\t\tif ( $.inArray( i, aiDisplay ) !== -1 && tr )\n\t\t\t{\n\t\t\t\ta.push( tr );\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t_fnLog( oSettings, 1, \"Unknown selection options\" );\n\t}\n\n\t/* We need to filter on the TR elements and also 'find' in their descendants\n\t * to make the selector act like it would in a full table - so we need\n\t * to build both results and then combine them together\n\t */\n\tvar jqA = $(a);\n\tvar jqTRs = jqA.filter( sSelector );\n\tvar jqDescendants = jqA.find( sSelector );\n\n\treturn $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );\n};\n\n\n/**\n * Almost identical to $ in operation, but in this case returns the data for the matched\n * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n * rather than any descendants, so the data can be obtained for the row/cell. If matching\n * rows are found, the data returned is the original data array/object that was used to  \n * create the row (or a generated array if from a DOM source).\n *\n * This method is often useful in-combination with $ where both functions are given the\n * same parameters and the array indexes will match identically.\n *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n *    criterion (\"applied\") or all elements (i.e. no filter).\n *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n *    Can be either 'current', whereby the current sorting of the table is used, or\n *    'original' whereby the original order the data was read into the table is used.\n *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be \n *    'current' and filter is 'applied', regardless of what they might be given as.\n *  @returns {array} Data for the matched elements. If any elements, as a result of the\n *    selector, were not TR, TD or TH elements in the DataTable, they will have a null \n *    entry in the array.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Get the data from the first row in the table\n *      var data = oTable._('tr:first');\n *\n *      // Do something useful with the data\n *      alert( \"First cell is: \"+data[0] );\n *    } );\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *\n *      // Filter to 'Webkit' and get all data for \n *      oTable.fnFilter('Webkit');\n *      var data = oTable._('tr', {\"filter\": \"applied\"});\n *      \n *      // Do something with the data\n *      alert( data.length+\" rows matched the filter\" );\n *    } );\n */\nthis._ = function ( sSelector, oOpts )\n{\n\tvar aOut = [];\n\tvar i, iLen, iIndex;\n\tvar aTrs = this.$( sSelector, oOpts );\n\n\tfor ( i=0, iLen=aTrs.length ; i<iLen ; i++ )\n\t{\n\t\taOut.push( this.fnGetData(aTrs[i]) );\n\t}\n\n\treturn aOut;\n};\n\n\n/**\n * Add a single new row or multiple rows of data to the table. Please note\n * that this is suitable for client-side processing only - if you are using \n * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n * must add it to the data source, i.e. the server-side, through an Ajax call.\n *  @param {array|object} mData The data to be added to the table. This can be:\n *    <ul>\n *      <li>1D array of data - add a single row with the data provided</li>\n *      <li>2D array of arrays - add multiple rows in a single call</li>\n *      <li>object - data object when using <i>mData</i></li>\n *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n *    </ul>\n *  @param {bool} [bRedraw=true] redraw the table or not\n *  @returns {array} An array of integers, representing the list of indexes in \n *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to \n *    the table.\n *  @dtopt API\n *\n *  @example\n *    // Global var for counter\n *    var giCount = 2;\n *    \n *    $(document).ready(function() {\n *      $('#example').dataTable();\n *    } );\n *    \n *    function fnClickAddRow() {\n *      $('#example').dataTable().fnAddData( [\n *        giCount+\".1\",\n *        giCount+\".2\",\n *        giCount+\".3\",\n *        giCount+\".4\" ]\n *      );\n *        \n *      giCount++;\n *    }\n */\nthis.fnAddData = function( mData, bRedraw )\n{\n\tif ( mData.length === 0 )\n\t{\n\t\treturn [];\n\t}\n\t\n\tvar aiReturn = [];\n\tvar iTest;\n\t\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\t/* Check if we want to add multiple rows or not */\n\tif ( typeof mData[0] === \"object\" && mData[0] !== null )\n\t{\n\t\tfor ( var i=0 ; i<mData.length ; i++ )\n\t\t{\n\t\t\tiTest = _fnAddData( oSettings, mData[i] );\n\t\t\tif ( iTest == -1 )\n\t\t\t{\n\t\t\t\treturn aiReturn;\n\t\t\t}\n\t\t\taiReturn.push( iTest );\n\t\t}\n\t}\n\telse\n\t{\n\t\tiTest = _fnAddData( oSettings, mData );\n\t\tif ( iTest == -1 )\n\t\t{\n\t\t\treturn aiReturn;\n\t\t}\n\t\taiReturn.push( iTest );\n\t}\n\t\n\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n\treturn aiReturn;\n};\n\n\n/**\n * This function will make DataTables recalculate the column sizes, based on the data \n * contained in the table and the sizes applied to the columns (in the DOM, CSS or \n * through the sWidth parameter). This can be useful when the width of the table's \n * parent element changes (for example a window resize).\n *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable( {\n *        \"sScrollY\": \"200px\",\n *        \"bPaginate\": false\n *      } );\n *      \n *      $(window).bind('resize', function () {\n *        oTable.fnAdjustColumnSizing();\n *      } );\n *    } );\n */\nthis.fnAdjustColumnSizing = function ( bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);\n\t_fnAdjustColumnSizing( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\tthis.fnDraw( false );\n\t}\n\telse if ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t{\n\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\tthis.oApi._fnScrollDraw(oSettings);\n\t}\n};\n\n\n/**\n * Quickly and simply clear a table\n *  @param {bool} [bRedraw=true] redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n *      oTable.fnClearTable();\n *    } );\n */\nthis.fnClearTable = function( bRedraw )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t_fnClearTable( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnDraw( oSettings );\n\t}\n};\n\n\n/**\n * The exact opposite of 'opening' a row, this function will close any rows which \n * are currently 'open'.\n *  @param {node} nTr the table row to 'close'\n *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnClose = function( nTr )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t{\n\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t{\n\t\t\tvar nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;\n\t\t\tif ( nTrParent )\n\t\t\t{\n\t\t\t\t/* Remove it if it is currently on display */\n\t\t\t\tnTrParent.removeChild( oSettings.aoOpenRows[i].nTr );\n\t\t\t}\n\t\t\toSettings.aoOpenRows.splice( i, 1 );\n\t\t\treturn 0;\n\t\t}\n\t}\n\treturn 1;\n};\n\n\n/**\n * Remove a row for the table\n *  @param {mixed} mTarget The index of the row from aoData to be deleted, or\n *    the TR element you want to delete\n *  @param {function|null} [fnCallBack] Callback function\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @returns {array} The row that was deleted\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Immediately remove the first row\n *      oTable.fnDeleteRow( 0 );\n *    } );\n */\nthis.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen, iAODataIndex;\n\t\n\tiAODataIndex = (typeof mTarget === 'object') ? \n\t\t_fnNodeToDataIndex(oSettings, mTarget) : mTarget;\n\t\n\t/* Return the data array from this row */\n\tvar oData = oSettings.aoData.splice( iAODataIndex, 1 );\n\n\t/* Update the _DT_RowIndex parameter */\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t{\n\t\t\toSettings.aoData[i].nTr._DT_RowIndex = i;\n\t\t}\n\t}\n\t\n\t/* Remove the target row from the search array */\n\tvar iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );\n\toSettings.asDataSearch.splice( iDisplayIndex, 1 );\n\t\n\t/* Delete from the display arrays */\n\t_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );\n\t_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );\n\t\n\t/* If there is a user callback function - call it */\n\tif ( typeof fnCallBack === \"function\" )\n\t{\n\t\tfnCallBack.call( this, oSettings, oData );\n\t}\n\t\n\t/* Check for an 'overflow' they case for displaying the table */\n\tif ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )\n\t{\n\t\toSettings._iDisplayStart -= oSettings._iDisplayLength;\n\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\treturn oData;\n};\n\n\n/**\n * Restore the table to it's original state in the DOM by removing all of DataTables \n * enhancements, alterations to the DOM structure of the table and event listeners.\n *  @param {boolean} [bRemove=false] Completely remove the table from the DOM\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n *      var oTable = $('#example').dataTable();\n *      oTable.fnDestroy();\n *    } );\n */\nthis.fnDestroy = function ( bRemove )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar nOrig = oSettings.nTableWrapper.parentNode;\n\tvar nBody = oSettings.nTBody;\n\tvar i, iLen;\n\n\tbRemove = (bRemove===undefined) ? false : bRemove;\n\t\n\t/* Flag to note that the table is currently being destroyed - no action should be taken */\n\toSettings.bDestroying = true;\n\t\n\t/* Fire off the destroy callbacks for plug-ins etc */\n\t_fnCallbackFire( oSettings, \"aoDestroyCallback\", \"destroy\", [oSettings] );\n\n\t/* If the table is not being removed, restore the hidden columns */\n\tif ( !bRemove )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible === false )\n\t\t\t{\n\t\t\t\tthis.fnSetColumnVis( i, true );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Blitz all DT events */\n\t$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');\n\t\n\t/* If there is an 'empty' indicator row, remove it */\n\t$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();\n\t\n\t/* When scrolling we had to break the table up - restore it */\n\tif ( oSettings.nTable != oSettings.nTHead.parentNode )\n\t{\n\t\t$(oSettings.nTable).children('thead').remove();\n\t\toSettings.nTable.appendChild( oSettings.nTHead );\n\t}\n\t\n\tif ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )\n\t{\n\t\t$(oSettings.nTable).children('tfoot').remove();\n\t\toSettings.nTable.appendChild( oSettings.nTFoot );\n\t}\n\t\n\t/* Remove the DataTables generated nodes, events and classes */\n\toSettings.nTable.parentNode.removeChild( oSettings.nTable );\n\t$(oSettings.nTableWrapper).remove();\n\t\n\toSettings.aaSorting = [];\n\toSettings.aaSortingFixed = [];\n\t_fnSortingClasses( oSettings );\n\t\n\t$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );\n\t\n\t$('th, td', oSettings.nTHead).removeClass( [\n\t\toSettings.oClasses.sSortable,\n\t\toSettings.oClasses.sSortableAsc,\n\t\toSettings.oClasses.sSortableDesc,\n\t\toSettings.oClasses.sSortableNone ].join(' ')\n\t);\n\tif ( oSettings.bJUI )\n\t{\n\t\t$('th span.'+oSettings.oClasses.sSortIcon\n\t\t\t+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();\n\n\t\t$('th, td', oSettings.nTHead).each( function () {\n\t\t\tvar jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);\n\t\t\tvar kids = jqWrapper.contents();\n\t\t\t$(this).append( kids );\n\t\t\tjqWrapper.remove();\n\t\t} );\n\t}\n\t\n\t/* Add the TR elements back into the table in their original order */\n\tif ( !bRemove && oSettings.nTableReinsertBefore )\n\t{\n\t\tnOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );\n\t}\n\telse if ( !bRemove )\n\t{\n\t\tnOrig.appendChild( oSettings.nTable );\n\t}\n\n\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoData[i].nTr !== null )\n\t\t{\n\t\t\tnBody.appendChild( oSettings.aoData[i].nTr );\n\t\t}\n\t}\n\t\n\t/* Restore the width of the original table */\n\tif ( oSettings.oFeatures.bAutoWidth === true )\n\t{\n\t  oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);\n\t}\n\t\n\t/* If the were originally stripe classes - then we add them back here. Note\n\t * this is not fool proof (for example if not all rows had stripe classes - but\n\t * it's a good effort without getting carried away\n\t */\n\tiLen = oSettings.asDestroyStripes.length;\n\tif (iLen)\n\t{\n\t\tvar anRows = $(nBody).children('tr');\n\t\tfor ( i=0 ; i<iLen ; i++ )\n\t\t{\n\t\t\tanRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );\n\t\t}\n\t}\n\t\n\t/* Remove the settings object from the settings array */\n\tfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n\t{\n\t\tif ( DataTable.settings[i] == oSettings )\n\t\t{\n\t\t\tDataTable.settings.splice( i, 1 );\n\t\t}\n\t}\n\t\n\t/* End it all */\n\toSettings = null;\n\toInit = null;\n};\n\n\n/**\n * Redraw the table\n *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n *      oTable.fnDraw();\n *    } );\n */\nthis.fnDraw = function( bComplete )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tif ( bComplete === false )\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\telse\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n};\n\n\n/**\n * Filter the input based on data\n *  @param {string} sInput String to filter the table on\n *  @param {int|null} [iColumn] Column to limit filtering to\n *  @param {bool} [bRegex=false] Treat as regular expression or not\n *  @param {bool} [bSmart=true] Perform smart filtering or not\n *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sometime later - filter...\n *      oTable.fnFilter( 'test string' );\n *    } );\n */\nthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( !oSettings.oFeatures.bFilter )\n\t{\n\t\treturn;\n\t}\n\t\n\tif ( bRegex === undefined || bRegex === null )\n\t{\n\t\tbRegex = false;\n\t}\n\t\n\tif ( bSmart === undefined || bSmart === null )\n\t{\n\t\tbSmart = true;\n\t}\n\t\n\tif ( bShowGlobal === undefined || bShowGlobal === null )\n\t{\n\t\tbShowGlobal = true;\n\t}\n\t\n\tif ( bCaseInsensitive === undefined || bCaseInsensitive === null )\n\t{\n\t\tbCaseInsensitive = true;\n\t}\n\t\n\tif ( iColumn === undefined || iColumn === null )\n\t{\n\t\t/* Global filter */\n\t\t_fnFilterComplete( oSettings, {\n\t\t\t\"sSearch\":sInput+\"\",\n\t\t\t\"bRegex\": bRegex,\n\t\t\t\"bSmart\": bSmart,\n\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t}, 1 );\n\t\t\n\t\tif ( bShowGlobal && oSettings.aanFeatures.f )\n\t\t{\n\t\t\tvar n = oSettings.aanFeatures.f;\n\t\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( n[i]._DT_Input != document.activeElement )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\t\t\t\t\t$(n[i]._DT_Input).val( sInput );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Single column filter */\n\t\t$.extend( oSettings.aoPreSearchCols[ iColumn ], {\n\t\t\t\"sSearch\": sInput+\"\",\n\t\t\t\"bRegex\": bRegex,\n\t\t\t\"bSmart\": bSmart,\n\t\t\t\"bCaseInsensitive\": bCaseInsensitive\n\t\t} );\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t}\n};\n\n\n/**\n * Get the data for the whole table, an individual row or an individual cell based on the \n * provided parameters.\n *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as\n *    a TR node then the data source for the whole row will be returned. If given as a\n *    TD/TH cell node then iCol will be automatically calculated and the data for the\n *    cell returned. If given as an integer, then this is treated as the aoData internal\n *    data index for the row (see fnGetPosition) and the data for that row used.\n *  @param {int} [iCol] Optional column index that you want the data of.\n *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n *    returned. If mRow is defined, just data for that row, and is iCol is\n *    defined, only data for the designated cell is returned.\n *  @dtopt API\n *\n *  @example\n *    // Row data\n *    $(document).ready(function() {\n *      oTable = $('#example').dataTable();\n *\n *      oTable.$('tr').click( function () {\n *        var data = oTable.fnGetData( this );\n *        // ... do something with the array / object of data for the row\n *      } );\n *    } );\n *\n *  @example\n *    // Individual cell data\n *    $(document).ready(function() {\n *      oTable = $('#example').dataTable();\n *\n *      oTable.$('td').click( function () {\n *        var sData = oTable.fnGetData( this );\n *        alert( 'The cell clicked on had the value of '+sData );\n *      } );\n *    } );\n */\nthis.fnGetData = function( mRow, iCol )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( mRow !== undefined )\n\t{\n\t\tvar iRow = mRow;\n\t\tif ( typeof mRow === 'object' )\n\t\t{\n\t\t\tvar sNode = mRow.nodeName.toLowerCase();\n\t\t\tif (sNode === \"tr\" )\n\t\t\t{\n\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow);\n\t\t\t}\n\t\t\telse if ( sNode === \"td\" )\n\t\t\t{\n\t\t\t\tiRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);\n\t\t\t\tiCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );\n\t\t\t}\n\t\t}\n\n\t\tif ( iCol !== undefined )\n\t\t{\n\t\t\treturn _fnGetCellData( oSettings, iRow, iCol, '' );\n\t\t}\n\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\toSettings.aoData[iRow]._aData : null;\n\t}\n\treturn _fnGetDataMaster( oSettings );\n};\n\n\n/**\n * Get an array of the TR nodes that are used in the table's body. Note that you will \n * typically want to use the '$' API method in preference to this as it is more \n * flexible.\n *  @param {int} [iRow] Optional row index for the TR element you want\n *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n *    in the table's body, or iRow is defined, just the TR element requested.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Get the nodes from the table\n *      var nNodes = oTable.fnGetNodes( );\n *    } );\n */\nthis.fnGetNodes = function( iRow )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t\n\tif ( iRow !== undefined ) {\n\t\treturn (oSettings.aoData[iRow]!==undefined) ?\n\t\t\toSettings.aoData[iRow].nTr : null;\n\t}\n\treturn _fnGetTrNodes( oSettings );\n};\n\n\n/**\n * Get the array indexes of a particular cell from it's DOM element\n * and column index including hidden columns\n *  @param {node} nNode this can either be a TR, TD or TH in the table's body\n *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n *    if given as a cell, an array of [row index, column index (visible), \n *    column index (all)] is given.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      $('#example tbody td').click( function () {\n *        // Get the position of the current data from the node\n *        var aPos = oTable.fnGetPosition( this );\n *        \n *        // Get the data array for this row\n *        var aData = oTable.fnGetData( aPos[0] );\n *        \n *        // Update the data array and return the value\n *        aData[ aPos[1] ] = 'clicked';\n *        this.innerHTML = 'clicked';\n *      } );\n *      \n *      // Init DataTables\n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnGetPosition = function( nNode )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar sNodeName = nNode.nodeName.toUpperCase();\n\t\n\tif ( sNodeName == \"TR\" )\n\t{\n\t\treturn _fnNodeToDataIndex(oSettings, nNode);\n\t}\n\telse if ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t{\n\t\tvar iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );\n\t\tvar iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );\n\t\treturn [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];\n\t}\n\treturn null;\n};\n\n\n/**\n * Check to see if a row is 'open' or not.\n *  @param {node} nTr the table row to check\n *  @returns {boolean} true if the row is currently open, false otherwise\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnIsOpen = function( nTr )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar aoOpenRows = oSettings.aoOpenRows;\n\t\n\tfor ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )\n\t{\n\t\tif ( oSettings.aoOpenRows[i].nParent == nTr )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n\n/**\n * This function will place a new row directly after a row which is currently \n * on display on the page, with the HTML contents that is passed into the \n * function. This can be used, for example, to ask for confirmation that a \n * particular record should be deleted.\n *  @param {node} nTr The table row to 'open'\n *  @param {string|node|jQuery} mHtml The HTML to put into the row\n *  @param {string} sClass Class to give the new TD cell\n *  @returns {node} The row opened. Note that if the table row passed in as the\n *    first parameter, is not found in the table, this method will silently\n *    return.\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable;\n *      \n *      // 'open' an information row when a row is clicked on\n *      $('#example tbody tr').click( function () {\n *        if ( oTable.fnIsOpen(this) ) {\n *          oTable.fnClose( this );\n *        } else {\n *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n *        }\n *      } );\n *      \n *      oTable = $('#example').dataTable();\n *    } );\n */\nthis.fnOpen = function( nTr, mHtml, sClass )\n{\n\t/* Find settings from table node */\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\n\t/* Check that the row given is in the table */\n\tvar nTableRows = _fnGetTrNodes( oSettings );\n\tif ( $.inArray(nTr, nTableRows) === -1 )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* the old open one if there is one */\n\tthis.fnClose( nTr );\n\t\n\tvar nNewRow = document.createElement(\"tr\");\n\tvar nNewCell = document.createElement(\"td\");\n\tnNewRow.appendChild( nNewCell );\n\tnNewCell.className = sClass;\n\tnNewCell.colSpan = _fnVisbleColumns( oSettings );\n\n\tif (typeof mHtml === \"string\")\n\t{\n\t\tnNewCell.innerHTML = mHtml;\n\t}\n\telse\n\t{\n\t\t$(nNewCell).html( mHtml );\n\t}\n\n\t/* If the nTr isn't on the page at the moment - then we don't insert at the moment */\n\tvar nTrs = $('tr', oSettings.nTBody);\n\tif ( $.inArray(nTr, nTrs) != -1  )\n\t{\n\t\t$(nNewRow).insertAfter(nTr);\n\t}\n\t\n\toSettings.aoOpenRows.push( {\n\t\t\"nTr\": nNewRow,\n\t\t\"nParent\": nTr\n\t} );\n\t\n\treturn nNewRow;\n};\n\n\n/**\n * Change the pagination - provides the internal logic for pagination in a simple API \n * function. With this function you can have a DataTables table go to the next, \n * previous, first or last pages.\n *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n *    or page number to jump to (integer), note that page 0 is the first page.\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      oTable.fnPageChange( 'next' );\n *    } );\n */\nthis.fnPageChange = function ( mAction, bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\t_fnPageChange( oSettings, mAction );\n\t_fnCalculateEnd( oSettings );\n\t\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnDraw( oSettings );\n\t}\n};\n\n\n/**\n * Show a particular column\n *  @param {int} iCol The column whose display should be changed\n *  @param {bool} bShow Show (true) or hide (false) the column\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Hide the second column after initialisation\n *      oTable.fnSetColumnVis( 1, false );\n *    } );\n */\nthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen;\n\tvar aoColumns = oSettings.aoColumns;\n\tvar aoData = oSettings.aoData;\n\tvar nTd, bAppend, iBefore;\n\t\n\t/* No point in doing anything if we are requesting what is already true */\n\tif ( aoColumns[iCol].bVisible == bShow )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Show the column */\n\tif ( bShow )\n\t{\n\t\tvar iInsert = 0;\n\t\tfor ( i=0 ; i<iCol ; i++ )\n\t\t{\n\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tiInsert++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Need to decide if we should use appendChild or insertBefore */\n\t\tbAppend = (iInsert >= _fnVisbleColumns( oSettings ));\n\n\t\t/* Which coloumn should we be inserting before? */\n\t\tif ( !bAppend )\n\t\t{\n\t\t\tfor ( i=iCol ; i<aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tiBefore = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tif ( bAppend )\n\t\t\t\t{\n\t\t\t\t\taoData[i].nTr.appendChild( \n\t\t\t\t\t\taoData[i]._anHidden[iCol]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taoData[i].nTr.insertBefore(\n\t\t\t\t\t\taoData[i]._anHidden[iCol], \n\t\t\t\t\t\t_fnGetTdNodes( oSettings, i )[iBefore] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Remove a column from display */\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aoData[i].nTr !== null )\n\t\t\t{\n\t\t\t\tnTd = _fnGetTdNodes( oSettings, i )[iCol];\n\t\t\t\taoData[i]._anHidden[iCol] = nTd;\n\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Clear to set the visible flag */\n\taoColumns[iCol].bVisible = bShow;\n\n\t/* Redraw the header and footer based on the new column visibility */\n\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\tif ( oSettings.nTFoot )\n\t{\n\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t}\n\t\n\t/* If there are any 'open' rows, then we need to alter the colspan for this col change */\n\tfor ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );\n\t}\n\t\n\t/* Do a redraw incase anything depending on the table columns needs it \n\t * (built-in: scrolling) \n\t */\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnAdjustColumnSizing( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\t_fnSaveState( oSettings );\n};\n\n\n/**\n * Get the settings for a particular table for external manipulation\n *  @returns {object} DataTables settings object. See \n *    {@link DataTable.models.oSettings}\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      var oSettings = oTable.fnSettings();\n *      \n *      // Show an example parameter from the settings\n *      alert( oSettings._iDisplayStart );\n *    } );\n */\nthis.fnSettings = function()\n{\n\treturn _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n};\n\n\n/**\n * Sort the table by a particular column\n *  @param {int} iCol the data index to sort on. Note that this will not match the \n *    'display index' if you have hidden data entries\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sort immediately with columns 0 and 1\n *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n *    } );\n */\nthis.fnSort = function( aaSort )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\toSettings.aaSorting = aaSort;\n\t_fnSort( oSettings );\n};\n\n\n/**\n * Attach a sort listener to an element for a given column\n *  @param {node} nNode the element to attach the sort listener to\n *  @param {int} iColumn the column that a click on this node will sort on\n *  @param {function} [fnCallback] callback function when sort is run\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      \n *      // Sort on column 1, when 'sorter' is clicked on\n *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n *    } );\n */\nthis.fnSortListener = function( nNode, iColumn, fnCallback )\n{\n\t_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,\n\t \tfnCallback );\n};\n\n\n/**\n * Update a table cell or row - this method will accept either a single value to\n * update the cell with, an array of values with one element for each column or\n * an object in the same format as the original data source. The function is\n * self-referencing in order to make the multi column updates easier.\n *  @param {object|array|string} mData Data to update the cell/row with\n *  @param {node|int} mRow TR element you want to update or the aoData index\n *  @param {int} [iColumn] The column to update (not used of mData is an array or object)\n *  @param {bool} [bRedraw=true] Redraw the table or not\n *  @param {bool} [bAction=true] Perform pre-draw actions or not\n *  @returns {int} 0 on success, 1 on error\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row\n *    } );\n */\nthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n{\n\tvar oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );\n\tvar i, iLen, sDisplay;\n\tvar iRow = (typeof mRow === 'object') ? \n\t\t_fnNodeToDataIndex(oSettings, mRow) : mRow;\n\t\n\tif ( $.isArray(mData) && iColumn === undefined )\n\t{\n\t\t/* Array update - update the whole row */\n\t\toSettings.aoData[iRow]._aData = mData.slice();\n\t\t\n\t\t/* Flag to the function that we are recursing */\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t}\n\t}\n\telse if ( $.isPlainObject(mData) && iColumn === undefined )\n\t{\n\t\t/* Object update - update the whole row - assume the developer gets the object right */\n\t\toSettings.aoData[iRow]._aData = $.extend( true, {}, mData );\n\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tthis.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Individual cell update */\n\t\t_fnSetCellData( oSettings, iRow, iColumn, mData );\n\t\tsDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\n\t\tvar oCol = oSettings.aoColumns[iColumn];\n\t\tif ( oCol.fnRender !== null )\n\t\t{\n\t\t\tsDisplay = _fnRender( oSettings, iRow, iColumn );\n\t\t\tif ( oCol.bUseRendered )\n\t\t\t{\n\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sDisplay );\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( oSettings.aoData[iRow].nTr !== null )\n\t\t{\n\t\t\t/* Do the actual HTML update */\n\t\t\t_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;\n\t\t}\n\t}\n\t\n\t/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw\n\t * will rebuild the search array - however, the redraw might be disabled by the user)\n\t */\n\tvar iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );\n\toSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(\n\t\toSettings, \n\t\t_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )\n\t);\n\t\n\t/* Perform pre-draw actions */\n\tif ( bAction === undefined || bAction )\n\t{\n\t\t_fnAdjustColumnSizing( oSettings );\n\t}\n\t\n\t/* Redraw the table */\n\tif ( bRedraw === undefined || bRedraw )\n\t{\n\t\t_fnReDraw( oSettings );\n\t}\n\treturn 0;\n};\n\n\n/**\n * Provide a common method for plug-ins to check the version of DataTables being used, in order\n * to ensure compatibility.\n *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n *    formats \"X\" and \"X.Y\" are also acceptable.\n *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n *    version, or false if this version of DataTales is not suitable\n *  @method\n *  @dtopt API\n *\n *  @example\n *    $(document).ready(function() {\n *      var oTable = $('#example').dataTable();\n *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n *    } );\n */\nthis.fnVersionCheck = DataTable.ext.fnVersionCheck;\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/api/api.static.js",
    "content": "\n\n/**\n * Provide a common method for plug-ins to check the version of DataTables being used, in order\n * to ensure compatibility.\n *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n *    formats \"X\" and \"X.Y\" are also acceptable.\n *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n *    version, or false if this version of DataTales is not suitable\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );\n */\nDataTable.fnVersionCheck = function( sVersion )\n{\n\t/* This is cheap, but effective */\n\tvar fnZPad = function (Zpad, count)\n\t{\n\t\twhile(Zpad.length < count) {\n\t\t\tZpad += '0';\n\t\t}\n\t\treturn Zpad;\n\t};\n\tvar aThis = DataTable.ext.sVersion.split('.');\n\tvar aThat = sVersion.split('.');\n\tvar sThis = '', sThat = '';\n\t\n\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ )\n\t{\n\t\tsThis += fnZPad( aThis[i], 3 );\n\t\tsThat += fnZPad( aThat[i], 3 );\n\t}\n\t\n\treturn parseInt(sThis, 10) >= parseInt(sThat, 10);\n};\n\n\n/**\n * Check if a TABLE node is a DataTable table already or not.\n *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other\n *    node types can be passed in, but will always return false).\n *  @returns {boolean} true the table given is a DataTable, or false otherwise\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    var ex = document.getElementById('example');\n *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {\n *      $(ex).dataTable();\n *    }\n */\nDataTable.fnIsDataTable = function ( nTable )\n{\n\tvar o = DataTable.settings;\n\n\tfor ( var i=0 ; i<o.length ; i++ )\n\t{\n\t\tif ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get all DataTable tables that have been initialised - optionally you can select to\n * get only currently visible tables.\n *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or \n *    visible tables only.\n *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    var table = $.fn.dataTable.fnTables(true);\n *    if ( table.length > 0 ) {\n *      $(table).dataTable().fnAdjustColumnSizing();\n *    }\n */\nDataTable.fnTables = function ( bVisible )\n{\n\tvar out = [];\n\n\tjQuery.each( DataTable.settings, function (i, o) {\n\t\tif ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )\n\t\t{\n\t\t\tout.push( o.nTable );\n\t\t}\n\t} );\n\n\treturn out;\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.ajax.js",
    "content": "\n\n/**\n * Update the table using an Ajax call\n *  @param {object} oSettings dataTables settings object\n *  @returns {boolean} Block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdate( oSettings )\n{\n\tif ( oSettings.bAjaxDataGet )\n\t{\n\t\toSettings.iDraw++;\n\t\t_fnProcessingDisplay( oSettings, true );\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar aoData = _fnAjaxParameters( oSettings );\n\t\t_fnServerParams( oSettings, aoData );\n\t\t\n\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,\n\t\t\tfunction(json) {\n\t\t\t\t_fnAjaxUpdateDraw( oSettings, json );\n\t\t\t}, oSettings );\n\t\treturn false;\n\t}\n\telse\n\t{\n\t\treturn true;\n\t}\n}\n\n\n/**\n * Build up the parameters in an object needed for a server-side processing request\n *  @param {object} oSettings dataTables settings object\n *  @returns {bool} block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxParameters( oSettings )\n{\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar aoData = [], mDataProp, aaSort, aDataSort;\n\tvar i, j;\n\t\n\taoData.push( { \"name\": \"sEcho\",          \"value\": oSettings.iDraw } );\n\taoData.push( { \"name\": \"iColumns\",       \"value\": iColumns } );\n\taoData.push( { \"name\": \"sColumns\",       \"value\": _fnColumnOrdering(oSettings) } );\n\taoData.push( { \"name\": \"iDisplayStart\",  \"value\": oSettings._iDisplayStart } );\n\taoData.push( { \"name\": \"iDisplayLength\", \"value\": oSettings.oFeatures.bPaginate !== false ?\n\t\toSettings._iDisplayLength : -1 } );\n\t\t\n\tfor ( i=0 ; i<iColumns ; i++ )\n\t{\n\t  mDataProp = oSettings.aoColumns[i].mData;\n\t\taoData.push( { \"name\": \"mDataProp_\"+i, \"value\": typeof(mDataProp)===\"function\" ? 'function' : mDataProp } );\n\t}\n\t\n\t/* Filtering */\n\tif ( oSettings.oFeatures.bFilter !== false )\n\t{\n\t\taoData.push( { \"name\": \"sSearch\", \"value\": oSettings.oPreviousSearch.sSearch } );\n\t\taoData.push( { \"name\": \"bRegex\",  \"value\": oSettings.oPreviousSearch.bRegex } );\n\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t{\n\t\t\taoData.push( { \"name\": \"sSearch_\"+i,     \"value\": oSettings.aoPreSearchCols[i].sSearch } );\n\t\t\taoData.push( { \"name\": \"bRegex_\"+i,      \"value\": oSettings.aoPreSearchCols[i].bRegex } );\n\t\t\taoData.push( { \"name\": \"bSearchable_\"+i, \"value\": oSettings.aoColumns[i].bSearchable } );\n\t\t}\n\t}\n\t\n\t/* Sorting */\n\tif ( oSettings.oFeatures.bSort !== false )\n\t{\n\t\tvar iCounter = 0;\n\n\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\toSettings.aaSorting.slice();\n\t\t\n\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t{\n\t\t\taDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;\n\t\t\t\n\t\t\tfor ( j=0 ; j<aDataSort.length ; j++ )\n\t\t\t{\n\t\t\t\taoData.push( { \"name\": \"iSortCol_\"+iCounter,  \"value\": aDataSort[j] } );\n\t\t\t\taoData.push( { \"name\": \"sSortDir_\"+iCounter,  \"value\": aaSort[i][1] } );\n\t\t\t\tiCounter++;\n\t\t\t}\n\t\t}\n\t\taoData.push( { \"name\": \"iSortingCols\",   \"value\": iCounter } );\n\t\t\n\t\tfor ( i=0 ; i<iColumns ; i++ )\n\t\t{\n\t\t\taoData.push( { \"name\": \"bSortable_\"+i,  \"value\": oSettings.aoColumns[i].bSortable } );\n\t\t}\n\t}\n\t\n\treturn aoData;\n}\n\n\n/**\n * Add Ajax parameters from plug-ins\n *  @param {object} oSettings dataTables settings object\n *  @param array {objects} aoData name/value pairs to send to the server\n *  @memberof DataTable#oApi\n */\nfunction _fnServerParams( oSettings, aoData )\n{\n\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );\n}\n\n\n/**\n * Data the data from the server (nuking the old) and redraw the table\n *  @param {object} oSettings dataTables settings object\n *  @param {object} json json data return from the server.\n *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n *  @param {array} json.aaData The data to display on this page\n *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdateDraw ( oSettings, json )\n{\n\tif ( json.sEcho !== undefined )\n\t{\n\t\t/* Protect against old returns over-writing a new one. Possible when you get\n\t\t * very fast interaction, and later queries are completed much faster\n\t\t */\n\t\tif ( json.sEcho*1 < oSettings.iDraw )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings.iDraw = json.sEcho * 1;\n\t\t}\n\t}\n\t\n\tif ( !oSettings.oScroll.bInfinite ||\n\t\t   (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )\n\t{\n\t\t_fnClearTable( oSettings );\n\t}\n\toSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);\n\toSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);\n\t\n\t/* Determine if reordering is required */\n\tvar sOrdering = _fnColumnOrdering(oSettings);\n\tvar bReOrder = (json.sColumns !== undefined && sOrdering !== \"\" && json.sColumns != sOrdering );\n\tvar aiIndex;\n\tif ( bReOrder )\n\t{\n\t\taiIndex = _fnReOrderIndex( oSettings, json.sColumns );\n\t}\n\t\n\tvar aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );\n\tfor ( var i=0, iLen=aData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( bReOrder )\n\t\t{\n\t\t\t/* If we need to re-order, then create a new array with the correct order and add it */\n\t\t\tvar aDataSorted = [];\n\t\t\tfor ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\taDataSorted.push( aData[i][ aiIndex[j] ] );\n\t\t\t}\n\t\t\t_fnAddData( oSettings, aDataSorted );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* No re-order required, sever got it \"right\" - just straight add */\n\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t}\n\t}\n\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\n\toSettings.bAjaxDataGet = false;\n\t_fnDraw( oSettings );\n\toSettings.bAjaxDataGet = true;\n\t_fnProcessingDisplay( oSettings, false );\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.columns.js",
    "content": "\n\n/**\n * Add a column to the list used for the table with default values\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nTh The th element for this column\n *  @memberof DataTable#oApi\n */\nfunction _fnAddColumn( oSettings, nTh )\n{\n\tvar oDefaults = DataTable.defaults.columns;\n\tvar iCol = oSettings.aoColumns.length;\n\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\"sSortingClass\": oSettings.oClasses.sSortable,\n\t\t\"sSortingClassJUI\": oSettings.oClasses.sSortJUI,\n\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\"mData\": oDefaults.mData ? oDefaults.oDefaults : iCol\n\t} );\n\toSettings.aoColumns.push( oCol );\n\t\n\t/* Add a column specific filter */\n\tif ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )\n\t{\n\t\toSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );\n\t}\n\telse\n\t{\n\t\tvar oPre = oSettings.aoPreSearchCols[ iCol ];\n\t\t\n\t\t/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */\n\t\tif ( oPre.bRegex === undefined )\n\t\t{\n\t\t\toPre.bRegex = true;\n\t\t}\n\t\t\n\t\tif ( oPre.bSmart === undefined )\n\t\t{\n\t\t\toPre.bSmart = true;\n\t\t}\n\t\t\n\t\tif ( oPre.bCaseInsensitive === undefined )\n\t\t{\n\t\t\toPre.bCaseInsensitive = true;\n\t\t}\n\t}\n\t\n\t/* Use the column options function to initialise classes etc */\n\t_fnColumnOptions( oSettings, iCol, null );\n}\n\n\n/**\n * Apply options for a column\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column index to consider\n *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnOptions( oSettings, iCol, oOptions )\n{\n\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\n\t/* User specified column options */\n\tif ( oOptions !== undefined && oOptions !== null )\n\t{\n\t\t/* Backwards compatibility for mDataProp */\n\t\tif ( oOptions.mDataProp && !oOptions.mData )\n\t\t{\n\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t}\n\n\t\tif ( oOptions.sType !== undefined )\n\t\t{\n\t\t\toCol.sType = oOptions.sType;\n\t\t\toCol._bAutoType = false;\n\t\t}\n\t\t\n\t\t$.extend( oCol, oOptions );\n\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\n\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t * priority if defined\n\t\t */\n\t\tif ( oOptions.iDataSort !== undefined )\n\t\t{\n\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t}\n\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t}\n\n\t/* Cache the data get and set functions for speed */\n\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\tvar mData = _fnGetObjectDataFn( oCol.mData );\n\n\toCol.fnGetData = function (oData, sSpecific) {\n\t\tvar innerData = mData( oData, sSpecific );\n\n\t\tif ( oCol.mRender && (sSpecific && sSpecific !== '') )\n\t\t{\n\t\t\treturn mRender( innerData, sSpecific, oData );\n\t\t}\n\t\treturn innerData;\n\t};\n\toCol.fnSetData = _fnSetObjectDataFn( oCol.mData );\n\t\n\t/* Feature sorting overrides column specific when off */\n\tif ( !oSettings.oFeatures.bSort )\n\t{\n\t\toCol.bSortable = false;\n\t}\n\t\n\t/* Check that the class assignment is correct for sorting */\n\tif ( !oCol.bSortable ||\n\t\t ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableNone;\n\t\toCol.sSortingClassJUI = \"\";\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortable;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableAsc;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;\n\t}\n\telse if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )\n\t{\n\t\toCol.sSortingClass = oSettings.oClasses.sSortableDesc;\n\t\toCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;\n\t}\n}\n\n\n/**\n * Adjust the table column widths for new data. Note: you would probably want to \n * do a redraw after calling this function!\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAdjustColumnSizing ( oSettings )\n{\n\t/* Not interested in doing column width calculation if auto-width is disabled */\n\tif ( oSettings.oFeatures.bAutoWidth === false )\n\t{\n\t\treturn false;\n\t}\n\t\n\t_fnCalculateColumnWidths( oSettings );\n\tfor ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;\n\t}\n}\n\n\n/**\n * Covert the index of a visible column to the index in the data array (take account\n * of hidden columns)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iMatch Visible column index to lookup\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\n\treturn typeof aiVis[iMatch] === 'number' ?\n\t\taiVis[iMatch] :\n\t\tnull;\n}\n\n\n/**\n * Covert the index of an index in the data array and convert it to the visible\n *   column index (take account of hidden columns)\n *  @param {int} iMatch Column index to lookup\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnIndexToVisible( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\tvar iPos = $.inArray( iMatch, aiVis );\n\n\treturn iPos !== -1 ? iPos : null;\n}\n\n\n/**\n * Get the number of visible columns\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the number of visible columns\n *  @memberof DataTable#oApi\n */\nfunction _fnVisbleColumns( oSettings )\n{\n\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n}\n\n\n/**\n * Get an array of column indexes that match a given property\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sParam Parameter in aoColumns to look for - typically \n *    bVisible or bSearchable\n *  @returns {array} Array of indexes with matched properties\n *  @memberof DataTable#oApi\n */\nfunction _fnGetColumns( oSettings, sParam )\n{\n\tvar a = [];\n\n\t$.map( oSettings.aoColumns, function(val, i) {\n\t\tif ( val[sParam] ) {\n\t\t\ta.push( i );\n\t\t}\n\t} );\n\n\treturn a;\n}\n\n\n/**\n * Get the sort type based on an input string\n *  @param {string} sData data we wish to know the type of\n *  @returns {string} type (defaults to 'string' if no type can be detected)\n *  @memberof DataTable#oApi\n */\nfunction _fnDetectType( sData )\n{\n\tvar aTypes = DataTable.ext.aTypes;\n\tvar iLen = aTypes.length;\n\t\n\tfor ( var i=0 ; i<iLen ; i++ )\n\t{\n\t\tvar sType = aTypes[i]( sData );\n\t\tif ( sType !== null )\n\t\t{\n\t\t\treturn sType;\n\t\t}\n\t}\n\t\n\treturn 'string';\n}\n\n\n/**\n * Figure out how to reorder a display list\n *  @param {object} oSettings dataTables settings object\n *  @returns array {int} aiReturn index list for reordering\n *  @memberof DataTable#oApi\n */\nfunction _fnReOrderIndex ( oSettings, sColumns )\n{\n\tvar aColumns = sColumns.split(',');\n\tvar aiReturn = [];\n\t\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tfor ( var j=0 ; j<iLen ; j++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].sName == aColumns[j] )\n\t\t\t{\n\t\t\t\taiReturn.push( j );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn aiReturn;\n}\n\n\n/**\n * Get the column ordering that DataTables expects\n *  @param {object} oSettings dataTables settings object\n *  @returns {string} comma separated list of names\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnOrdering ( oSettings )\n{\n\tvar sNames = '';\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tsNames += oSettings.aoColumns[i].sName+',';\n\t}\n\tif ( sNames.length == iLen )\n\t{\n\t\treturn \"\";\n\t}\n\treturn sNames.slice(0, -1);\n}\n\n\n/**\n * Take the column definitions and static columns arrays and calculate how\n * they relate to column indexes. The callback function will then apply the\n * definition found for a column to a suitable configuration object.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n *  @param {array} aoCols The aoColumns array that defines columns individually\n *  @param {function} fn Callback function - takes two parameters, the calculated\n *    column index and the definition for that column.\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n{\n\tvar i, iLen, j, jLen, k, kLen;\n\n\t// Column definitions with aTargets\n\tif ( aoColDefs )\n\t{\n\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\tvar aTargets = aoColDefs[i].aTargets;\n\t\t\tif ( !$.isArray( aTargets ) )\n\t\t\t{\n\t\t\t\t_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );\n\t\t\t}\n\n\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\twhile( oSettings.aoColumns.length <= aTargets[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\tfn( aTargets[j], aoColDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\tfn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\tfor ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t     $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( k, aoColDefs[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Statically defined columns array\n\tif ( aoCols )\n\t{\n\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfn( i, aoCols[i] );\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.constructor.js",
    "content": "var i=0, iLen, j, jLen, k, kLen;\nvar sId = this.getAttribute( 'id' );\nvar bInitHandedOff = false;\nvar bUsePassedData = false;\n\n\n/* Sanity check */\nif ( this.nodeName.toLowerCase() != 'table' )\n{\n\t_fnLog( null, 0, \"Attempted to initialise DataTables on a node which is not a \"+\n\t\t\"table: \"+this.nodeName );\n\treturn;\n}\n\n/* Check to see if we are re-initialising a table */\nfor ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )\n{\n\t/* Base check on table node */\n\tif ( DataTable.settings[i].nTable == this )\n\t{\n\t\tif ( oInit === undefined || oInit.bRetrieve )\n\t\t{\n\t\t\treturn DataTable.settings[i].oInstance;\n\t\t}\n\t\telse if ( oInit.bDestroy )\n\t\t{\n\t\t\tDataTable.settings[i].oInstance.fnDestroy();\n\t\t\tbreak;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( DataTable.settings[i], 0, \"Cannot reinitialise DataTable.\\n\\n\"+\n\t\t\t\t\"To retrieve the DataTables object for this table, pass no arguments or see \"+\n\t\t\t\t\"the docs for bRetrieve and bDestroy\" );\n\t\t\treturn;\n\t\t}\n\t}\n\t\n\t/* If the element we are initialising has the same ID as a table which was previously\n\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t * instance by simply deleting it. This is under the assumption that the table has been\n\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t */\n\tif ( DataTable.settings[i].sTableId == this.id )\n\t{\n\t\tDataTable.settings.splice( i, 1 );\n\t\tbreak;\n\t}\n}\n\n/* Ensure the table has an ID - required for accessibility */\nif ( sId === null || sId === \"\" )\n{\n\tsId = \"DataTables_Table_\"+(DataTable.ext._oExternConfig.iNextUnique++);\n\tthis.id = sId;\n}\n\n/* Create the settings object for this table and set some of the default parameters */\nvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\"nTable\":        this,\n\t\"oApi\":          _that.oApi,\n\t\"oInit\":         oInit,\n\t\"sDestroyWidth\": $(this).width(),\n\t\"sInstance\":     sId,\n\t\"sTableId\":      sId\n} );\nDataTable.settings.push( oSettings );\n\n// Need to add the instance after the instance after the settings object has been added\n// to the settings array, so we can self reference the table instance if more than one\noSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\n/* Setting up the initialisation object */\nif ( !oInit )\n{\n\toInit = {};\n}\n\n// Backwards compatibility, before we apply all the defaults\nif ( oInit.oLanguage )\n{\n\t_fnLanguageCompat( oInit.oLanguage );\n}\n\noInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );\n\n// Map the initialisation options onto the settings object\n_fnMap( oSettings.oFeatures, oInit, \"bPaginate\" );\n_fnMap( oSettings.oFeatures, oInit, \"bLengthChange\" );\n_fnMap( oSettings.oFeatures, oInit, \"bFilter\" );\n_fnMap( oSettings.oFeatures, oInit, \"bSort\" );\n_fnMap( oSettings.oFeatures, oInit, \"bInfo\" );\n_fnMap( oSettings.oFeatures, oInit, \"bProcessing\" );\n_fnMap( oSettings.oFeatures, oInit, \"bAutoWidth\" );\n_fnMap( oSettings.oFeatures, oInit, \"bSortClasses\" );\n_fnMap( oSettings.oFeatures, oInit, \"bServerSide\" );\n_fnMap( oSettings.oFeatures, oInit, \"bDeferRender\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollX\", \"sX\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollXInner\", \"sXInner\" );\n_fnMap( oSettings.oScroll, oInit, \"sScrollY\", \"sY\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollCollapse\", \"bCollapse\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollInfinite\", \"bInfinite\" );\n_fnMap( oSettings.oScroll, oInit, \"iScrollLoadGap\", \"iLoadGap\" );\n_fnMap( oSettings.oScroll, oInit, \"bScrollAutoCss\", \"bAutoCss\" );\n_fnMap( oSettings, oInit, \"asStripeClasses\" );\n_fnMap( oSettings, oInit, \"asStripClasses\", \"asStripeClasses\" ); // legacy\n_fnMap( oSettings, oInit, \"fnServerData\" );\n_fnMap( oSettings, oInit, \"fnFormatNumber\" );\n_fnMap( oSettings, oInit, \"sServerMethod\" );\n_fnMap( oSettings, oInit, \"aaSorting\" );\n_fnMap( oSettings, oInit, \"aaSortingFixed\" );\n_fnMap( oSettings, oInit, \"aLengthMenu\" );\n_fnMap( oSettings, oInit, \"sPaginationType\" );\n_fnMap( oSettings, oInit, \"sAjaxSource\" );\n_fnMap( oSettings, oInit, \"sAjaxDataProp\" );\n_fnMap( oSettings, oInit, \"iCookieDuration\" );\n_fnMap( oSettings, oInit, \"sCookiePrefix\" );\n_fnMap( oSettings, oInit, \"sDom\" );\n_fnMap( oSettings, oInit, \"bSortCellsTop\" );\n_fnMap( oSettings, oInit, \"iTabIndex\" );\n_fnMap( oSettings, oInit, \"oSearch\", \"oPreviousSearch\" );\n_fnMap( oSettings, oInit, \"aoSearchCols\", \"aoPreSearchCols\" );\n_fnMap( oSettings, oInit, \"iDisplayLength\", \"_iDisplayLength\" );\n_fnMap( oSettings, oInit, \"bJQueryUI\", \"bJUI\" );\n_fnMap( oSettings, oInit, \"fnCookieCallback\" );\n_fnMap( oSettings, oInit, \"fnStateLoad\" );\n_fnMap( oSettings, oInit, \"fnStateSave\" );\n_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\n/* Callback functions which are array driven */\n_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\nif ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&\n\t   oSettings.oFeatures.bSortClasses )\n{\n\t/* Enable sort classes for server-side processing. Safe to do it here, since server-side\n\t * processing must be enabled by the developer\n\t */\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );\n}\nelse if ( oSettings.oFeatures.bDeferRender )\n{\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );\n}\n\nif ( oInit.bJQueryUI )\n{\n\t/* Use the JUI classes object for display. You could clone the oStdClasses object if \n\t * you want to have multiple tables with multiple independent classes \n\t */\n\t$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );\n\t\n\tif ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === \"lfrtip\" )\n\t{\n\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t}\n}\nelse\n{\n\t$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );\n}\n$(this).addClass( oSettings.oClasses.sTable );\n\n/* Calculate the scroll bar width and cache it for use later on */\nif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n{\n\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n}\n\nif ( oSettings.iInitDisplayStart === undefined )\n{\n\t/* Display start point, taking into account the save saving */\n\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\toSettings._iDisplayStart = oInit.iDisplayStart;\n}\n\n/* Must be done after everything which can be overridden by a cookie! */\nif ( oInit.bStateSave )\n{\n\toSettings.oFeatures.bStateSave = true;\n\t_fnLoadState( oSettings, oInit );\n\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n}\n\nif ( oInit.iDeferLoading !== null )\n{\n\toSettings.bDeferLoading = true;\n\tvar tmp = $.isArray( oInit.iDeferLoading );\n\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n}\n\nif ( oInit.aaData !== null )\n{\n\tbUsePassedData = true;\n}\n\n/* Language definitions */\nif ( oInit.oLanguage.sUrl !== \"\" )\n{\n\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t * get async to the remainder of this function we use bInitHandedOff to indicate that \n\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t */\n\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t_fnLanguageCompat( json );\n\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t_fnInitialise( oSettings );\n\t} );\n\tbInitHandedOff = true;\n}\nelse\n{\n\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n}\n\n\n/*\n * Stripes\n */\nif ( oInit.asStripeClasses === null )\n{\n\toSettings.asStripeClasses =[\n\t\toSettings.oClasses.sStripeOdd,\n\t\toSettings.oClasses.sStripeEven\n\t];\n}\n\n/* Remove row stripe classes if they are already on the table row */\niLen=oSettings.asStripeClasses.length;\noSettings.asDestroyStripes = [];\nif (iLen)\n{\n\tvar bStripeRemove = false;\n\tvar anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');\n\tfor ( i=0 ; i<iLen ; i++ )\n\t{\n\t\tif ( anRows.hasClass( oSettings.asStripeClasses[i] ) )\n\t\t{\n\t\t\tbStripeRemove = true;\n\t\t\t\n\t\t\t/* Store the classes which we are about to remove so they can be re-added on destroy */\n\t\t\toSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );\n\t\t}\n\t}\n\t\n\tif ( bStripeRemove )\n\t{\n\t\tanRows.removeClass( oSettings.asStripeClasses.join(' ') );\n\t}\n}\n\n/*\n * Columns\n * See if we should load columns automatically or use defined ones\n */\nvar anThs = [];\nvar aoColumnsInit;\nvar nThead = this.getElementsByTagName('thead');\nif ( nThead.length !== 0 )\n{\n\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\tanThs = _fnGetUniqueThs( oSettings );\n}\n\n/* If not given a column array, generate one with nulls */\nif ( oInit.aoColumns === null )\n{\n\taoColumnsInit = [];\n\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t{\n\t\taoColumnsInit.push( null );\n\t}\n}\nelse\n{\n\taoColumnsInit = oInit.aoColumns;\n}\n\n/* Add the columns */\nfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n{\n\t/* Short cut - use the loop to check if we have column visibility state to restore */\n\tif ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )\n\t{\n\t\tif ( aoColumnsInit[i] === null )\n\t\t{\n\t\t\taoColumnsInit[i] = {};\n\t\t}\n\t\taoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;\n\t}\n\t\n\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n}\n\n/* Apply the column definitions */\n_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t_fnColumnOptions( oSettings, iCol, oDef );\n} );\n\n\n/*\n * Sorting\n * Check the aaSorting array\n */\nfor ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )\n{\n\tif ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )\n\t{\n\t\toSettings.aaSorting[i][0] = 0;\n\t}\n\tvar oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];\n\t\n\t/* Add a default sorting index */\n\tif ( oSettings.aaSorting[i][2] === undefined )\n\t{\n\t\toSettings.aaSorting[i][2] = 0;\n\t}\n\t\n\t/* If aaSorting is not defined, then we use the first indicator in asSorting */\n\tif ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )\n\t{\n\t\toSettings.aaSorting[i][1] = oColumn.asSorting[0];\n\t}\n\t\n\t/* Set the current sorting index based on aoColumns.asSorting */\n\tfor ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )\n\t{\n\t\tif ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )\n\t\t{\n\t\t\toSettings.aaSorting[i][2] = j;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\t\n/* Do a first pass on the sorting classes (allows any size changes to be taken into\n * account, and also will apply sorting disabled classes if disabled\n */\n_fnSortingClasses( oSettings );\n\n\n/*\n * Final init\n * Cache the header, body and footer as required, creating them if needed\n */\n\n/* Browser support detection */\n_fnBrowserDetect( oSettings );\n\n// Work around for Webkit bug 83867 - store the caption-side before removing from doc\nvar captions = $(this).children('caption').each( function () {\n\tthis._captionSide = $(this).css('caption-side');\n} );\n\nvar thead = $(this).children('thead');\nif ( thead.length === 0 )\n{\n\tthead = [ document.createElement( 'thead' ) ];\n\tthis.appendChild( thead[0] );\n}\noSettings.nTHead = thead[0];\n\nvar tbody = $(this).children('tbody');\nif ( tbody.length === 0 )\n{\n\ttbody = [ document.createElement( 'tbody' ) ];\n\tthis.appendChild( tbody[0] );\n}\noSettings.nTBody = tbody[0];\noSettings.nTBody.setAttribute( \"role\", \"alert\" );\noSettings.nTBody.setAttribute( \"aria-live\", \"polite\" );\noSettings.nTBody.setAttribute( \"aria-relevant\", \"all\" );\n\nvar tfoot = $(this).children('tfoot');\nif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n{\n\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t// a tfoot element for the caption element to be appended to\n\ttfoot = [ document.createElement( 'tfoot' ) ];\n\tthis.appendChild( tfoot[0] );\n}\n\nif ( tfoot.length > 0 )\n{\n\toSettings.nTFoot = tfoot[0];\n\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n}\n\n/* Check if there is data passing into the constructor */\nif ( bUsePassedData )\n{\n\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t{\n\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t}\n}\nelse\n{\n\t/* Grab the data from the page */\n\t_fnGatherData( oSettings );\n}\n\n/* Copy the data index array */\noSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\n/* Initialisation complete - table can be drawn */\noSettings.bInitialised = true;\n\n/* Check if we need to initialise the table (it might not have been handed off to the\n * language processor)\n */\nif ( bInitHandedOff === false )\n{\n\t_fnInitialise( oSettings );\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.data.js",
    "content": "/**\n * Add a data array to the table, creating DOM node etc. This is the parallel to \n * _fnGatherData, but for adding rows from a Javascript source, rather than a\n * DOM source.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aData data array to be added\n *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n *  @memberof DataTable#oApi\n */\nfunction _fnAddData ( oSettings, aDataSupplied )\n{\n\tvar oCol;\n\t\n\t/* Take an independent copy of the data source so we can bash it about as we wish */\n\tvar aDataIn = ($.isArray(aDataSupplied)) ?\n\t\taDataSupplied.slice() :\n\t\t$.extend( true, {}, aDataSupplied );\n\t\n\t/* Create the object for storing information about this new row */\n\tvar iRow = oSettings.aoData.length;\n\tvar oData = $.extend( true, {}, DataTable.models.oRow );\n\toData._aData = aDataIn;\n\toSettings.aoData.push( oData );\n\n\t/* Create the cells */\n\tvar nTd, sThisType;\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toCol = oSettings.aoColumns[i];\n\n\t\t/* Use rendered data for filtering / sorting */\n\t\tif ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )\n\t\t{\n\t\t\t_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t}\n\t\t\n\t\t/* See if we should auto-detect the column type */\n\t\tif ( oCol._bAutoType && oCol.sType != 'string' )\n\t\t{\n\t\t\t/* Attempt to auto detect the type - same as _fnGatherData() */\n\t\t\tvar sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );\n\t\t\tif ( sVarType !== null && sVarType !== '' )\n\t\t\t{\n\t\t\t\tsThisType = _fnDetectType( sVarType );\n\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t{\n\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t}\n\t\t\t\telse if ( oCol.sType != sThisType && oCol.sType != \"html\" )\n\t\t\t\t{\n\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Add to the display array */\n\toSettings.aiDisplayMaster.push( iRow );\n\n\t/* Create the DOM information */\n\tif ( !oSettings.oFeatures.bDeferRender )\n\t{\n\t\t_fnCreateTr( oSettings, iRow );\n\t}\n\n\treturn iRow;\n}\n\n\n/**\n * Read in the data from the target table from the DOM\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnGatherData( oSettings )\n{\n\tvar iLoop, i, iLen, j, jLen, jInner,\n\t \tnTds, nTrs, nTd, nTr, aLocalData, iThisIndex,\n\t\tiRow, iRows, iColumn, iColumns, sNodeName,\n\t\toCol, oData;\n\t\n\t/*\n\t * Process by row first\n\t * Add the data object for the whole table - storing the tr node. Note - no point in getting\n\t * DOM based data if we are going to go and replace it with Ajax source data.\n\t */\n\tif ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )\n\t{\n\t\tnTr = oSettings.nTBody.firstChild;\n\t\twhile ( nTr )\n\t\t{\n\t\t\tif ( nTr.nodeName.toUpperCase() == \"TR\" )\n\t\t\t{\n\t\t\t\tiThisIndex = oSettings.aoData.length;\n\t\t\t\tnTr._DT_RowIndex = iThisIndex;\n\t\t\t\toSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {\n\t\t\t\t\t\"nTr\": nTr\n\t\t\t\t} ) );\n\n\t\t\t\toSettings.aiDisplayMaster.push( iThisIndex );\n\t\t\t\tnTd = nTr.firstChild;\n\t\t\t\tjInner = 0;\n\t\t\t\twhile ( nTd )\n\t\t\t\t{\n\t\t\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );\n\t\t\t\t\t\tjInner++;\n\t\t\t\t\t}\n\t\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tnTr = nTr.nextSibling;\n\t\t}\n\t}\n\t\n\t/* Gather in the TD elements of the Table - note that this is basically the same as\n\t * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet\n\t * setup!\n\t */\n\tnTrs = _fnGetTrNodes( oSettings );\n\tnTds = [];\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\tnTd = nTrs[i].firstChild;\n\t\twhile ( nTd )\n\t\t{\n\t\t\tsNodeName = nTd.nodeName.toUpperCase();\n\t\t\tif ( sNodeName == \"TD\" || sNodeName == \"TH\" )\n\t\t\t{\n\t\t\t\tnTds.push( nTd );\n\t\t\t}\n\t\t\tnTd = nTd.nextSibling;\n\t\t}\n\t}\n\t\n\t/* Now process by column */\n\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t{\n\t\toCol = oSettings.aoColumns[iColumn];\n\n\t\t/* Get the title of the column - unless there is a user set one */\n\t\tif ( oCol.sTitle === null )\n\t\t{\n\t\t\toCol.sTitle = oCol.nTh.innerHTML;\n\t\t}\n\t\t\n\t\tvar\n\t\t\tbAutoType = oCol._bAutoType,\n\t\t\tbRender = typeof oCol.fnRender === 'function',\n\t\t\tbClass = oCol.sClass !== null,\n\t\t\tbVisible = oCol.bVisible,\n\t\t\tnCell, sThisType, sRendered, sValType;\n\t\t\n\t\t/* A single loop to rule them all (and be more efficient) */\n\t\tif ( bAutoType || bRender || bClass || !bVisible )\n\t\t{\n\t\t\tfor ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )\n\t\t\t{\n\t\t\t\toData = oSettings.aoData[iRow];\n\t\t\t\tnCell = nTds[ (iRow*iColumns) + iColumn ];\n\t\t\t\t\n\t\t\t\t/* Type detection */\n\t\t\t\tif ( bAutoType && oCol.sType != 'string' )\n\t\t\t\t{\n\t\t\t\t\tsValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );\n\t\t\t\t\tif ( sValType !== '' )\n\t\t\t\t\t{\n\t\t\t\t\t\tsThisType = _fnDetectType( sValType );\n\t\t\t\t\t\tif ( oCol.sType === null )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toCol.sType = sThisType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( oCol.sType != sThisType && \n\t\t\t\t\t\t          oCol.sType != \"html\" )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* String is always the 'fallback' option */\n\t\t\t\t\t\t\toCol.sType = 'string';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( oCol.mRender )\n\t\t\t\t{\n\t\t\t\t\t// mRender has been defined, so we need to get the value and set it\n\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t}\n\t\t\t\telse if ( oCol.mData !== iColumn )\n\t\t\t\t{\n\t\t\t\t\t// If mData is not the same as the column number, then we need to\n\t\t\t\t\t// get the dev set value. If it is the column, no point in wasting\n\t\t\t\t\t// time setting the value that is already there!\n\t\t\t\t\tnCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Rendering */\n\t\t\t\tif ( bRender )\n\t\t\t\t{\n\t\t\t\t\tsRendered = _fnRender( oSettings, iRow, iColumn );\n\t\t\t\t\tnCell.innerHTML = sRendered;\n\t\t\t\t\tif ( oCol.bUseRendered )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Use the rendered data for filtering / sorting */\n\t\t\t\t\t\t_fnSetCellData( oSettings, iRow, iColumn, sRendered );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Classes */\n\t\t\t\tif ( bClass )\n\t\t\t\t{\n\t\t\t\t\tnCell.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Column visibility */\n\t\t\t\tif ( !bVisible )\n\t\t\t\t{\n\t\t\t\t\toData._anHidden[iColumn] = nCell;\n\t\t\t\t\tnCell.parentNode.removeChild( nCell );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toData._anHidden[iColumn] = null;\n\t\t\t\t}\n\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Row created callbacks */\n\tif ( oSettings.aoRowCreatedCallback.length !== 0 )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toData = oSettings.aoData[i];\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );\n\t\t}\n\t}\n}\n\n\n/**\n * Take a TR element and convert it to an index in aoData\n *  @param {object} oSettings dataTables settings object\n *  @param {node} n the TR element to find\n *  @returns {int} index if the node is found, null if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToDataIndex( oSettings, n )\n{\n\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n}\n\n\n/**\n * Take a TD element and convert it into a column data index (not the visible index)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow The row number the TD/TH can be found in\n *  @param {node} n The TD/TH element to find\n *  @returns {int} index if the node is found, -1 if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n{\n\tvar anCells = _fnGetTdNodes( oSettings, iRow );\n\n\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tif ( anCells[i] === n )\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n/**\n * Get an array of data for a given row from the internal data cache\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {string} sSpecific data get type ('type' 'filter' 'sort')\n *  @param {array} aiColumns Array of column indexes to get data from\n *  @returns {array} Data array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )\n{\n\tvar out = [];\n\tfor ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )\n\t{\n\t\tout.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );\n\t}\n\treturn out;\n}\n\n\n/**\n * Get the data for a given cell from the internal cache, taking into account data mapping\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {int} iCol Column index\n *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')\n *  @returns {*} Cell data\n *  @memberof DataTable#oApi\n */\nfunction _fnGetCellData( oSettings, iRow, iCol, sSpecific )\n{\n\tvar sData;\n\tvar oCol = oSettings.aoColumns[iCol];\n\tvar oData = oSettings.aoData[iRow]._aData;\n\n\tif ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )\n\t{\n\t\tif ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )\n\t\t{\n\t\t\t_fnLog( oSettings, 0, \"Requested unknown parameter \"+\n\t\t\t\t(typeof oCol.mData=='function' ? '{mData function}' : \"'\"+oCol.mData+\"'\")+\n\t\t\t\t\" from the data source for row \"+iRow );\n\t\t\toSettings.iDrawError = oSettings.iDraw;\n\t\t}\n\t\treturn oCol.sDefaultContent;\n\t}\n\n\t/* When the data source is null, we can use default column data */\n\tif ( sData === null && oCol.sDefaultContent !== null )\n\t{\n\t\tsData = oCol.sDefaultContent;\n\t}\n\telse if ( typeof sData === 'function' )\n\t{\n\t\t/* If the data source is a function, then we run it and use the return */\n\t\treturn sData();\n\t}\n\n\tif ( sSpecific == 'display' && sData === null )\n\t{\n\t\treturn '';\n\t}\n\treturn sData;\n}\n\n\n/**\n * Set the value for a specific cell, into the internal data cache\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData row id\n *  @param {int} iCol Column index\n *  @param {*} val Value to set\n *  @memberof DataTable#oApi\n */\nfunction _fnSetCellData( oSettings, iRow, iCol, val )\n{\n\tvar oCol = oSettings.aoColumns[iCol];\n\tvar oData = oSettings.aoData[iRow]._aData;\n\n\toCol.fnSetData( oData, val );\n}\n\n\n// Private variable that is used to match array syntax in the data property object\nvar __reArray = /\\[.*?\\]$/;\n\n/**\n * Return a function that can be used to get data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data get function\n *  @memberof DataTable#oApi\n */\nfunction _fnGetObjectDataFn( mSource )\n{\n\tif ( mSource === null )\n\t{\n\t\t/* Give an empty string for rendering / sorting etc */\n\t\treturn function (data, type) {\n\t\t\treturn null;\n\t\t};\n\t}\n\telse if ( typeof mSource === 'function' )\n\t{\n\t\treturn function (data, type, extra) {\n\t\t\treturn mSource( data, type, extra );\n\t\t};\n\t}\n\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t{\n\t\t/* If there is a . in the source string then the data source is in a \n\t\t * nested object so we loop over the data for each level to get the next\n\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t * be used if defined, rather than throwing an error\n\t\t */\n\t\tvar fetchData = function (data, type, src) {\n\t\t\tvar a = src.split('.');\n\t\t\tvar arrayNotation, out, innerSrc;\n\n\t\t\tif ( src !== \"\" )\n\t\t\t{\n\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\n\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\n\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tout = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = a.join('.');\n\n\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\n\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\treturn function (data, type) {\n\t\t\treturn fetchData( data, type, mSource );\n\t\t};\n\t}\n\telse\n\t{\n\t\t/* Array or flat object mapping */\n\t\treturn function (data, type) {\n\t\t\treturn data[mSource];\t\n\t\t};\n\t}\n}\n\n\n/**\n * Return a function that can be used to set data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data set function\n *  @memberof DataTable#oApi\n */\nfunction _fnSetObjectDataFn( mSource )\n{\n\tif ( mSource === null )\n\t{\n\t\t/* Nothing to do when the data source is null */\n\t\treturn function (data, val) {};\n\t}\n\telse if ( typeof mSource === 'function' )\n\t{\n\t\treturn function (data, val) {\n\t\t\tmSource( data, 'set', val );\n\t\t};\n\t}\n\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )\n\t{\n\t\t/* Like the get, we need to get data from a nested object */\n\t\tvar setData = function (data, val, src) {\n\t\t\tvar a = src.split('.'), b;\n\t\t\tvar arrayNotation, o, innerSrc;\n\n\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\tarrayNotation = a[i].match(__reArray);\n\n\t\t\t\tif ( arrayNotation )\n\t\t\t\t{\n\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\t\t\t\n\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\tb = a.slice();\n\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\tinnerSrc = b.join('.');\n\n\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\to = {};\n\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t}\n\n\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t// trying to set the value - create it\n\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t{\n\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t}\n\t\t\t\tdata = data[ a[i] ];\n\t\t\t}\n\n\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\tdata[ a[a.length-1].replace(__reArray, '') ] = val;\n\t\t};\n\n\t\treturn function (data, val) {\n\t\t\treturn setData( data, val, mSource );\n\t\t};\n\t}\n\telse\n\t{\n\t\t/* Array or flat object mapping */\n\t\treturn function (data, val) {\n\t\t\tdata[mSource] = val;\t\n\t\t};\n\t}\n}\n\n\n/**\n * Return an array with the full table data\n *  @param {object} oSettings dataTables settings object\n *  @returns array {array} aData Master data array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetDataMaster ( oSettings )\n{\n\tvar aData = [];\n\tvar iLen = oSettings.aoData.length;\n\tfor ( var i=0 ; i<iLen; i++ )\n\t{\n\t\taData.push( oSettings.aoData[i]._aData );\n\t}\n\treturn aData;\n}\n\n\n/**\n * Nuke the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnClearTable( oSettings )\n{\n\toSettings.aoData.splice( 0, oSettings.aoData.length );\n\toSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );\n\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );\n\t_fnCalculateEnd( oSettings );\n}\n\n\n /**\n * Take an array of integers (index array) and remove a target integer (value - not \n * the key!)\n *  @param {array} a Index array to target\n *  @param {int} iTarget value to find\n *  @memberof DataTable#oApi\n */\nfunction _fnDeleteIndex( a, iTarget )\n{\n\tvar iTargetIndex = -1;\n\t\n\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t{\n\t\tif ( a[i] == iTarget )\n\t\t{\n\t\t\tiTargetIndex = i;\n\t\t}\n\t\telse if ( a[i] > iTarget )\n\t\t{\n\t\t\ta[i]--;\n\t\t}\n\t}\n\t\n\tif ( iTargetIndex != -1 )\n\t{\n\t\ta.splice( iTargetIndex, 1 );\n\t}\n}\n\n\n /**\n * Call the developer defined fnRender function for a given cell (row/column) with\n * the required parameters and return the result.\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow aoData index for the row\n *  @param {int} iCol aoColumns index for the column\n *  @returns {*} Return of the developer's fnRender function\n *  @memberof DataTable#oApi\n */\nfunction _fnRender( oSettings, iRow, iCol )\n{\n\tvar oCol = oSettings.aoColumns[iCol];\n\n\treturn oCol.fnRender( {\n\t\t\"iDataRow\":    iRow,\n\t\t\"iDataColumn\": iCol,\n\t\t\"oSettings\":   oSettings,\n\t\t\"aData\":       oSettings.aoData[iRow]._aData,\n\t\t\"mDataProp\":   oCol.mData\n\t}, _fnGetCellData(oSettings, iRow, iCol, 'display') );\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.draw.js",
    "content": "/**\n * Create a new TR element (and it's TD children) for a row\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow Row to consider\n *  @memberof DataTable#oApi\n */\nfunction _fnCreateTr ( oSettings, iRow )\n{\n\tvar oData = oSettings.aoData[iRow];\n\tvar nTd;\n\n\tif ( oData.nTr === null )\n\t{\n\t\toData.nTr = document.createElement('tr');\n\n\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t * to the aoData array for fast look up\n\t\t */\n\t\toData.nTr._DT_RowIndex = iRow;\n\n\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\tif ( oData._aData.DT_RowId )\n\t\t{\n\t\t\toData.nTr.id = oData._aData.DT_RowId;\n\t\t}\n\n\t\tif ( oData._aData.DT_RowClass )\n\t\t{\n\t\t\toData.nTr.className = oData._aData.DT_RowClass;\n\t\t}\n\n\t\t/* Process each column */\n\t\tfor ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar oCol = oSettings.aoColumns[i];\n\t\t\tnTd = document.createElement( oCol.sCellType );\n\n\t\t\t/* Render if needed - if bUseRendered is true then we already have the rendered\n\t\t\t * value in the data source - so can just use that\n\t\t\t */\n\t\t\tnTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?\n\t\t\t\t_fnRender( oSettings, iRow, i ) :\n\t\t\t\t_fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\n\t\t\t/* Add user defined class */\n\t\t\tif ( oCol.sClass !== null )\n\t\t\t{\n\t\t\t\tnTd.className = oCol.sClass;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oCol.bVisible )\n\t\t\t{\n\t\t\t\toData.nTr.appendChild( nTd );\n\t\t\t\toData._anHidden[i] = null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toData._anHidden[i] = nTd;\n\t\t\t}\n\n\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t{\n\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );\n\t}\n}\n\n\n/**\n * Create the HTML header for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildHead( oSettings )\n{\n\tvar i, nTh, iLen, j, jLen;\n\tvar iThs = $('th, td', oSettings.nTHead).length;\n\tvar iCorrector = 0;\n\tvar jqChildren;\n\t\n\t/* If there is a header in place - then use it - otherwise it's going to get nuked... */\n\tif ( iThs !== 0 )\n\t{\n\t\t/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\tnTh.setAttribute('role', 'columnheader');\n\t\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t\t{\n\t\t\t\tnTh.setAttribute('tabindex', oSettings.iTabIndex);\n\t\t\t\tnTh.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t}\n\n\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t{\n\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t}\n\t\t\t\n\t\t\t/* Set the title of the column if it is user defined (not what was auto detected) */\n\t\t\tif ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )\n\t\t\t{\n\t\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* We don't have a header in the DOM - so we are going to have to create one */\n\t\tvar nTr = document.createElement( \"tr\" );\n\t\t\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\tnTh.innerHTML = oSettings.aoColumns[i].sTitle;\n\t\t\tnTh.setAttribute('tabindex', '0');\n\t\t\t\n\t\t\tif ( oSettings.aoColumns[i].sClass !== null )\n\t\t\t{\n\t\t\t\t$(nTh).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t}\n\t\t\t\n\t\t\tnTr.appendChild( nTh );\n\t\t}\n\t\t$(oSettings.nTHead).html( '' )[0].appendChild( nTr );\n\t\t_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );\n\t}\n\t\n\t/* ARIA role for the rows */\t\n\t$(oSettings.nTHead).children('tr').attr('role', 'row');\n\t\n\t/* Add the extra markup needed by jQuery UI's themes */\n\tif ( oSettings.bJUI )\n\t{\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTh = oSettings.aoColumns[i].nTh;\n\t\t\t\n\t\t\tvar nDiv = document.createElement('div');\n\t\t\tnDiv.className = oSettings.oClasses.sSortJUIWrapper;\n\t\t\t$(nTh).contents().appendTo(nDiv);\n\t\t\t\n\t\t\tvar nSpan = document.createElement('span');\n\t\t\tnSpan.className = oSettings.oClasses.sSortIcon;\n\t\t\tnDiv.appendChild( nSpan );\n\t\t\tnTh.appendChild( nDiv );\n\t\t}\n\t}\n\t\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bSortable !== false )\n\t\t\t{\n\t\t\t\t_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* Deal with the footer - add classes if required */\n\tif ( oSettings.oClasses.sFooterTH !== \"\" )\n\t{\n\t\t$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );\n\t}\n\t\n\t/* Cache the footer elements */\n\tif ( oSettings.nTFoot !== null )\n\t{\n\t\tvar anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( anCells[i] )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].nTf = anCells[i];\n\t\t\t\tif ( oSettings.aoColumns[i].sClass )\n\t\t\t\t{\n\t\t\t\t\t$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Draw the header (or footer) element based on the column visibility states. The\n * methodology here is to use the layout array from _fnDetectHeader, modified for\n * the instantaneous column visibility, to construct the new layout. The grid is\n * traversed over cell at a time in a rows x columns grid fashion, although each \n * cell insert can cover multiple elements in the grid - which is tracks using the\n * aApplied array. Cell inserts in the grid will only occur where there isn't\n * already a cell in that position.\n *  @param {object} oSettings dataTables settings object\n *  @param array {objects} aoSource Layout array from _fnDetectHeader\n *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, \n *  @memberof DataTable#oApi\n */\nfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n{\n\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\tvar aoLocal = [];\n\tvar aApplied = [];\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar iRowspan, iColspan;\n\n\tif (  bIncludeHidden === undefined )\n\t{\n\t\tbIncludeHidden = false;\n\t}\n\n\t/* Make a copy of the master layout array, but without the visible columns in it */\n\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t{\n\t\taoLocal[i] = aoSource[i].slice();\n\t\taoLocal[i].nTr = aoSource[i].nTr;\n\n\t\t/* Remove any columns which are currently hidden */\n\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t{\n\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t{\n\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t}\n\t\t}\n\n\t\t/* Prep the applied array - it needs an element for each row */\n\t\taApplied.push( [] );\n\t}\n\n\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t{\n\t\tnLocalTr = aoLocal[i].nTr;\n\t\t\n\t\t/* All cells are going to be replaced, so empty out the row */\n\t\tif ( nLocalTr )\n\t\t{\n\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t{\n\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t}\n\t\t}\n\n\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tiRowspan = 1;\n\t\t\tiColspan = 1;\n\n\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t */\n\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t{\n\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\taApplied[i][j] = 1;\n\n\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t{\n\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\tiRowspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t{\n\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tiColspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\taoLocal[i][j].cell.rowSpan = iRowspan;\n\t\t\t\taoLocal[i][j].cell.colSpan = iColspan;\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Insert the required TR nodes into the table for display\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnDraw( oSettings )\n{\n\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\treturn;\n\t}\n\t\n\tvar i, iLen, n;\n\tvar anRows = [];\n\tvar iRowCount = 0;\n\tvar iStripes = oSettings.asStripeClasses.length;\n\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\n\toSettings.bDrawing = true;\n\t\n\t/* Check and see if we have an initial draw position from state saving */\n\tif ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )\n\t{\n\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\toSettings._iDisplayStart = oSettings.iInitDisplayStart;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?\n\t\t\t\t0 : oSettings.iInitDisplayStart;\n\t\t}\n\t\toSettings.iInitDisplayStart = -1;\n\t\t_fnCalculateEnd( oSettings );\n\t}\n\t\n\t/* Server-side processing draw intercept */\n\tif ( oSettings.bDeferLoading )\n\t{\n\t\toSettings.bDeferLoading = false;\n\t\toSettings.iDraw++;\n\t}\n\telse if ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\toSettings.iDraw++;\n\t}\n\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t{\n\t\treturn;\n\t}\n\t\n\tif ( oSettings.aiDisplay.length !== 0 )\n\t{\n\t\tvar iStart = oSettings._iDisplayStart;\n\t\tvar iEnd = oSettings._iDisplayEnd;\n\t\t\n\t\tif ( oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\tiStart = 0;\n\t\t\tiEnd = oSettings.aoData.length;\n\t\t}\n\t\t\n\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t{\n\t\t\tvar aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];\n\t\t\tif ( aoData.nTr === null )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, oSettings.aiDisplay[j] );\n\t\t\t}\n\n\t\t\tvar nRow = aoData.nTr;\n\t\t\t\n\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\tif ( iStripes !== 0 )\n\t\t\t{\n\t\t\t\tvar sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t{\n\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null, \n\t\t\t\t[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );\n\t\t\t\n\t\t\tanRows.push( nRow );\n\t\t\tiRowCount++;\n\t\t\t\n\t\t\t/* If there is an open row - and it is attached to this parent - attach it on redraw */\n\t\t\tif ( iOpenRows !== 0 )\n\t\t\t{\n\t\t\t\tfor ( var k=0 ; k<iOpenRows ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( nRow == oSettings.aoOpenRows[k].nParent )\n\t\t\t\t\t{\n\t\t\t\t\t\tanRows.push( oSettings.aoOpenRows[k].nTr );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Table is empty - create a row with an empty message in it */\n\t\tanRows[ 0 ] = document.createElement( 'tr' );\n\t\t\n\t\tif ( oSettings.asStripeClasses[0] )\n\t\t{\n\t\t\tanRows[ 0 ].className = oSettings.asStripeClasses[0];\n\t\t}\n\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar sZero = oLang.sZeroRecords;\n\t\tif ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t\t{\n\t\t\tsZero = oLang.sLoadingRecords;\n\t\t}\n\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t{\n\t\t\tsZero = oLang.sEmptyTable;\n\t\t}\n\n\t\tvar nTd = document.createElement( 'td' );\n\t\tnTd.setAttribute( 'valign', \"top\" );\n\t\tnTd.colSpan = _fnVisbleColumns( oSettings );\n\t\tnTd.className = oSettings.oClasses.sRowEmpty;\n\t\tnTd.innerHTML = _fnInfoMacros( oSettings, sZero );\n\t\t\n\t\tanRows[ iRowCount ].appendChild( nTd );\n\t}\n\t\n\t/* Header and footer callbacks */\n\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], \n\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\n\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], \n\t\t_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );\n\t\n\t/* \n\t * Need to remove any old row from the display - note we can't just empty the tbody using\n\t * $().html('') since this will unbind the jQuery event handlers (even although the node \n\t * still exists!) - equally we can't use innerHTML, since IE throws an exception.\n\t */\n\tvar\n\t\tnAddFrag = document.createDocumentFragment(),\n\t\tnRemoveFrag = document.createDocumentFragment(),\n\t\tnBodyPar, nTrs;\n\t\n\tif ( oSettings.nTBody )\n\t{\n\t\tnBodyPar = oSettings.nTBody.parentNode;\n\t\tnRemoveFrag.appendChild( oSettings.nTBody );\n\t\t\n\t\t/* When doing infinite scrolling, only remove child rows when sorting, filtering or start\n\t\t * up. When not infinite scroll, always do it.\n\t\t */\n\t\tif ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||\n\t\t \toSettings.bSorted || oSettings.bFiltered )\n\t\t{\n\t\t\twhile( (n = oSettings.nTBody.firstChild) )\n\t\t\t{\n\t\t\t\toSettings.nTBody.removeChild( n );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Put the draw table into the dom */\n\t\tfor ( i=0, iLen=anRows.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnAddFrag.appendChild( anRows[i] );\n\t\t}\n\t\t\n\t\toSettings.nTBody.appendChild( nAddFrag );\n\t\tif ( nBodyPar !== null )\n\t\t{\n\t\t\tnBodyPar.appendChild( oSettings.nTBody );\n\t\t}\n\t}\n\t\n\t/* Call all required callback functions for the end of a draw */\n\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t/* Draw is complete, sorting and filtering must be as well */\n\toSettings.bSorted = false;\n\toSettings.bFiltered = false;\n\toSettings.bDrawing = false;\n\t\n\tif ( oSettings.oFeatures.bServerSide )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\tif ( !oSettings._bInitComplete )\n\t\t{\n\t\t\t_fnInitComplete( oSettings );\n\t\t}\n\t}\n}\n\n\n/**\n * Redraw the table - taking account of the various features which are enabled\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnReDraw( oSettings )\n{\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\t/* Sorting will refilter and draw for us */\n\t\t_fnSort( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse if ( oSettings.oFeatures.bFilter )\n\t{\n\t\t/* Filtering will redraw for us */\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse\n\t{\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n}\n\n\n/**\n * Add the options to the page HTML for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAddOptionsHtml ( oSettings )\n{\n\t/*\n\t * Create a temporary, empty, div which we can later on replace with what we have generated\n\t * we do it this way to rendering the 'options' html offline - speed :-)\n\t */\n\tvar nHolding = $('<div></div>')[0];\n\toSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );\n\t\n\t/* \n\t * All DataTables are wrapped in a div\n\t */\n\toSettings.nTableWrapper = $('<div id=\"'+oSettings.sTableId+'_wrapper\" class=\"'+oSettings.oClasses.sWrapper+'\" role=\"grid\"></div>')[0];\n\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\n\t/* Track where we want to insert the option */\n\tvar nInsertNode = oSettings.nTableWrapper;\n\t\n\t/* Loop over the user set positioning and place the elements as needed */\n\tvar aDom = oSettings.sDom.split('');\n\tvar nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;\n\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t{\n\t\tiPushFeature = 0;\n\t\tcOption = aDom[i];\n\t\t\n\t\tif ( cOption == '<' )\n\t\t{\n\t\t\t/* New container div */\n\t\t\tnNewNode = $('<div></div>')[0];\n\t\t\t\n\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\tcNext = aDom[i+1];\n\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t{\n\t\t\t\tsAttr = \"\";\n\t\t\t\tj = 2;\n\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t{\n\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Replace jQuery UI constants */\n\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = oSettings.oClasses.sJUIHeader;\n\t\t\t\t}\n\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = oSettings.oClasses.sJUIFooter;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t */\n\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t{\n\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t}\n\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t{\n\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ti += j; /* Move along the position array */\n\t\t\t}\n\t\t\t\n\t\t\tnInsertNode.appendChild( nNewNode );\n\t\t\tnInsertNode = nNewNode;\n\t\t}\n\t\telse if ( cOption == '>' )\n\t\t{\n\t\t\t/* End container div */\n\t\t\tnInsertNode = nInsertNode.parentNode;\n\t\t}\n\t\telse if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )\n\t\t{\n\t\t\t/* Length */\n\t\t\tnTmp = _fnFeatureHtmlLength( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'f' && oSettings.oFeatures.bFilter )\n\t\t{\n\t\t\t/* Filter */\n\t\t\tnTmp = _fnFeatureHtmlFilter( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'r' && oSettings.oFeatures.bProcessing )\n\t\t{\n\t\t\t/* pRocessing */\n\t\t\tnTmp = _fnFeatureHtmlProcessing( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 't' )\n\t\t{\n\t\t\t/* Table */\n\t\t\tnTmp = _fnFeatureHtmlTable( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption ==  'i' && oSettings.oFeatures.bInfo )\n\t\t{\n\t\t\t/* Info */\n\t\t\tnTmp = _fnFeatureHtmlInfo( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( cOption == 'p' && oSettings.oFeatures.bPaginate )\n\t\t{\n\t\t\t/* Pagination */\n\t\t\tnTmp = _fnFeatureHtmlPaginate( oSettings );\n\t\t\tiPushFeature = 1;\n\t\t}\n\t\telse if ( DataTable.ext.aoFeatures.length !== 0 )\n\t\t{\n\t\t\t/* Plug-in features */\n\t\t\tvar aoFeatures = DataTable.ext.aoFeatures;\n\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t{\n\t\t\t\t\tnTmp = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\tif ( nTmp )\n\t\t\t\t\t{\n\t\t\t\t\t\tiPushFeature = 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Add to the 2D features array */\n\t\tif ( iPushFeature == 1 && nTmp !== null )\n\t\t{\n\t\t\tif ( typeof oSettings.aanFeatures[cOption] !== 'object' )\n\t\t\t{\n\t\t\t\toSettings.aanFeatures[cOption] = [];\n\t\t\t}\n\t\t\toSettings.aanFeatures[cOption].push( nTmp );\n\t\t\tnInsertNode.appendChild( nTmp );\n\t\t}\n\t}\n\t\n\t/* Built our DOM structure - replace the holding div with what we want */\n\tnHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );\n}\n\n\n/**\n * Use the DOM source to create up an array of header cells. The idea here is to\n * create a layout grid (array) of rows x columns, which contains a reference\n * to the cell that that point in the grid (regardless of col/rowspan), such that\n * any column / row could be removed and the new grid constructed\n *  @param array {object} aLayout Array to store the calculated layout in\n *  @param {node} nThead The header/footer element for the table\n *  @memberof DataTable#oApi\n */\nfunction _fnDetectHeader ( aLayout, nThead )\n{\n\tvar nTrs = $(nThead).children('tr');\n\tvar nTr, nCell;\n\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\tvar bUnique;\n\tvar fnShiftCol = function ( a, i, j ) {\n\t\tvar k = a[i];\n                while ( k[j] ) {\n\t\t\tj++;\n\t\t}\n\t\treturn j;\n\t};\n\n\taLayout.splice( 0, aLayout.length );\n\t\n\t/* We know how many rows there are in the layout - so prep it */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\taLayout.push( [] );\n\t}\n\t\n\t/* Calculate a layout array */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\tnTr = nTrs[i];\n\t\tiColumn = 0;\n\t\t\n\t\t/* For every cell in the row... */\n\t\tnCell = nTr.firstChild;\n\t\twhile ( nCell ) {\n\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t{\n\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\n\t\t\t\t/* There might be colspan cells already in this row, so shift our target \n\t\t\t\t * accordingly\n\t\t\t\t */\n\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\t\t\t\n\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\t\t\t\n\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t};\n\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnCell = nCell.nextSibling;\n\t\t}\n\t}\n}\n\n\n/**\n * Get an array of unique th elements, one for each column\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nHeader automatically detect the layout from this node - optional\n *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n *  @returns array {node} aReturn list of unique th's\n *  @memberof DataTable#oApi\n */\nfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n{\n\tvar aReturn = [];\n\tif ( !aLayout )\n\t{\n\t\taLayout = oSettings.aoHeader;\n\t\tif ( nHeader )\n\t\t{\n\t\t\taLayout = [];\n\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t}\n\t}\n\n\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t{\n\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tif ( aLayout[i][j].unique && \n\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t{\n\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn aReturn;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.filter.js",
    "content": "\n\n/**\n * Generate the node required for filtering text\n *  @returns {node} Filter control element\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlFilter ( oSettings )\n{\n\tvar oPreviousSearch = oSettings.oPreviousSearch;\n\t\n\tvar sSearchStr = oSettings.oLanguage.sSearch;\n\tsSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?\n\t  sSearchStr.replace('_INPUT_', '<input type=\"text\" />') :\n\t  sSearchStr===\"\" ? '<input type=\"text\" />' : sSearchStr+' <input type=\"text\" />';\n\t\n\tvar nFilter = document.createElement( 'div' );\n\tnFilter.className = oSettings.oClasses.sFilter;\n\tnFilter.innerHTML = '<label>'+sSearchStr+'</label>';\n\tif ( !oSettings.aanFeatures.f )\n\t{\n\t\tnFilter.id = oSettings.sTableId+'_filter';\n\t}\n\t\n\tvar jqFilter = $('input[type=\"text\"]', nFilter);\n\n\t// Store a reference to the input element, so other input elements could be\n\t// added to the filter wrapper if needed (submit button for example)\n\tnFilter._DT_Input = jqFilter[0];\n\n\tjqFilter.val( oPreviousSearch.sSearch.replace('\"','&quot;') );\n\tjqFilter.bind( 'keyup.DT', function(e) {\n\t\t/* Update all other filter input elements for the new display */\n\t\tvar n = oSettings.aanFeatures.f;\n\t\tvar val = this.value===\"\" ? \"\" : this.value; // mental IE8 fix :-(\n\n\t\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( n[i] != $(this).parents('div.dataTables_filter')[0] )\n\t\t\t{\n\t\t\t\t$(n[i]._DT_Input).val( val );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Now do the filter */\n\t\tif ( val != oPreviousSearch.sSearch )\n\t\t{\n\t\t\t_fnFilterComplete( oSettings, { \n\t\t\t\t\"sSearch\": val, \n\t\t\t\t\"bRegex\": oPreviousSearch.bRegex,\n\t\t\t\t\"bSmart\": oPreviousSearch.bSmart ,\n\t\t\t\t\"bCaseInsensitive\": oPreviousSearch.bCaseInsensitive \n\t\t\t} );\n\t\t}\n\t} );\n\n\tjqFilter\n\t\t.attr('aria-controls', oSettings.sTableId)\n\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t/* Prevent form submission */\n\t\t\tif ( e.keyCode == 13 )\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t);\n\t\n\treturn nFilter;\n}\n\n\n/**\n * Filter the table using both the global filter and column based filtering\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oSearch search information\n *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterComplete ( oSettings, oInput, iForce )\n{\n\tvar oPrevSearch = oSettings.oPreviousSearch;\n\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\tvar fnSaveFilter = function ( oFilter ) {\n\t\t/* Save the filtering values */\n\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t};\n\n\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t/* Global filter */\n\t\t_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );\n\t\tfnSaveFilter( oInput );\n\n\t\t/* Now do the individual column filter */\n\t\tfor ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )\n\t\t{\n\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex, \n\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t}\n\t\t\n\t\t/* Custom filtering */\n\t\t_fnFilterCustom( oSettings );\n\t}\n\telse\n\t{\n\t\tfnSaveFilter( oInput );\n\t}\n\t\n\t/* Tell the draw function we have been filtering */\n\toSettings.bFiltered = true;\n\t$(oSettings.oInstance).trigger('filter', oSettings);\n\t\n\t/* Redraw the table */\n\toSettings._iDisplayStart = 0;\n\t_fnCalculateEnd( oSettings );\n\t_fnDraw( oSettings );\n\t\n\t/* Rebuild search array 'offline' */\n\t_fnBuildSearchArray( oSettings, 0 );\n}\n\n\n/**\n * Apply custom filtering functions\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCustom( oSettings )\n{\n\tvar afnFilters = DataTable.ext.afnFiltering;\n\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\n\tfor ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )\n\t{\n\t\tvar iCorrector = 0;\n\t\tfor ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )\n\t\t{\n\t\t\tvar iDisIndex = oSettings.aiDisplay[j-iCorrector];\n\t\t\tvar bTest = afnFilters[i](\n\t\t\t\toSettings,\n\t\t\t\t_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),\n\t\t\t\tiDisIndex\n\t\t\t);\n\t\t\t\n\t\t\t/* Check if we should use this row based on the filtering function */\n\t\t\tif ( !bTest )\n\t\t\t{\n\t\t\t\toSettings.aiDisplay.splice( j-iCorrector, 1 );\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Filter the table on a per-column basis\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sInput string to filter on\n *  @param {int} iColumn column to filter\n *  @param {bool} bRegex treat search string as a regular expression or not\n *  @param {bool} bSmart use smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )\n{\n\tif ( sInput === \"\" )\n\t{\n\t\treturn;\n\t}\n\t\n\tvar iIndexCorrector = 0;\n\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\n\tfor ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )\n\t{\n\t\tvar sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),\n\t\t\toSettings.aoColumns[iColumn].sType );\n\t\tif ( ! rpSearch.test( sData ) )\n\t\t{\n\t\t\toSettings.aiDisplay.splice( i, 1 );\n\t\t\tiIndexCorrector++;\n\t\t}\n\t}\n}\n\n\n/**\n * Filter the data table based on user input and draw the table\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sInput string to filter on\n *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)\n *  @param {bool} bRegex treat as a regular expression or not\n *  @param {bool} bSmart perform smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )\n{\n\tvar i;\n\tvar rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );\n\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\n\t/* Check if we are forcing or not - optional parameter */\n\tif ( !iForce )\n\t{\n\t\tiForce = 0;\n\t}\n\t\n\t/* Need to take account of custom filtering functions - always filter */\n\tif ( DataTable.ext.afnFiltering.length !== 0 )\n\t{\n\t\tiForce = 1;\n\t}\n\t\n\t/*\n\t * If the input is blank - we want the full data set\n\t */\n\tif ( sInput.length <= 0 )\n\t{\n\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t}\n\telse\n\t{\n\t\t/*\n\t\t * We are starting a new search or the new search string is smaller \n\t\t * then the old one (i.e. delete). Search from the master array\n\t \t */\n\t\tif ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||\n\t\t\t   oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||\n\t\t\t   sInput.indexOf(oPrevSearch.sSearch) !== 0 )\n\t\t{\n\t\t\t/* Nuke the old display array - we are going to rebuild it */\n\t\t\toSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);\n\t\t\t\n\t\t\t/* Force a rebuild of the search array */\n\t\t\t_fnBuildSearchArray( oSettings, 1 );\n\t\t\t\n\t\t\t/* Search through all records to populate the search array\n\t\t\t * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 \n\t\t\t * mapping\n\t\t\t */\n\t\t\tfor ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t{\n\t\t\t\t\toSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );\n\t\t\t\t}\n\t\t\t}\n\t  }\n\t  else\n\t\t{\n\t  \t/* Using old search array - refine it - do it this way for speed\n\t  \t * Don't have to search the whole master array again\n\t\t\t */\n\t  \tvar iIndexCorrector = 0;\n\t  \t\n\t  \t/* Search the current results */\n\t  \tfor ( i=0 ; i<oSettings.asDataSearch.length ; i++ )\n\t\t\t{\n\t  \t\tif ( ! rpSearch.test(oSettings.asDataSearch[i]) )\n\t\t\t\t{\n\t  \t\t\toSettings.aiDisplay.splice( i-iIndexCorrector, 1 );\n\t  \t\t\tiIndexCorrector++;\n\t  \t\t}\n\t  \t}\n\t  }\n\t}\n}\n\n\n/**\n * Create an array which can be quickly search through\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iMaster use the master data array - optional\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildSearchArray ( oSettings, iMaster )\n{\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t/* Clear out the old data */\n\t\toSettings.asDataSearch = [];\n\n\t\tvar aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );\n\t\tvar aiIndex = (iMaster===1) ?\n\t\t \toSettings.aiDisplayMaster :\n\t\t \toSettings.aiDisplay;\n\t\t\n\t\tfor ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toSettings.asDataSearch[i] = _fnBuildSearchRow(\n\t\t\t\toSettings,\n\t\t\t\t_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )\n\t\t\t);\n\t\t}\n\t}\n}\n\n\n/**\n * Create a searchable string from a single data row\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aData Row data array to use for the data to search\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildSearchRow( oSettings, aData )\n{\n\tvar sSearch = aData.join('  ');\n\t\n\t/* If it looks like there is an HTML entity in the string, attempt to decode it */\n\tif ( sSearch.indexOf('&') !== -1 )\n\t{\n\t\tsSearch = $('<div>').html(sSearch).text();\n\t}\n\t\n\t// Strip newline characters\n\treturn sSearch.replace( /[\\n\\r]/g, \" \" );\n}\n\n/**\n * Build a regular expression object suitable for searching a table\n *  @param {string} sSearch string to search for\n *  @param {bool} bRegex treat as a regular expression or not\n *  @param {bool} bSmart perform smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n *  @returns {RegExp} constructed object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )\n{\n\tvar asSearch, sRegExpString;\n\t\n\tif ( bSmart )\n\t{\n\t\t/* Generate the regular expression to use. Something along the lines of:\n\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo\\b)(?=.*?\\bthree\\b).*$\n\t\t */\n\t\tasSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );\n\t\tsRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';\n\t\treturn new RegExp( sRegExpString, bCaseInsensitive ? \"i\" : \"\" );\n\t}\n\telse\n\t{\n\t\tsSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );\n\t\treturn new RegExp( sSearch, bCaseInsensitive ? \"i\" : \"\" );\n\t}\n}\n\n\n/**\n * Convert raw data into something that the user can search on\n *  @param {string} sData data to be modified\n *  @param {string} sType data type\n *  @returns {string} search string\n *  @memberof DataTable#oApi\n */\nfunction _fnDataToSearch ( sData, sType )\n{\n\tif ( typeof DataTable.ext.ofnSearch[sType] === \"function\" )\n\t{\n\t\treturn DataTable.ext.ofnSearch[sType]( sData );\n\t}\n\telse if ( sData === null )\n\t{\n\t\treturn '';\n\t}\n\telse if ( sType == \"html\" )\n\t{\n\t\treturn sData.replace(/[\\r\\n]/g,\" \").replace( /<.*?>/g, \"\" );\n\t}\n\telse if ( typeof sData === \"string\" )\n\t{\n\t\treturn sData.replace(/[\\r\\n]/g,\" \");\n\t}\n\treturn sData;\n}\n\n\n/**\n * scape a string such that it can be used in a regular expression\n *  @param {string} sVal string to escape\n *  @returns {string} escaped string\n *  @memberof DataTable#oApi\n */\nfunction _fnEscapeRegex ( sVal )\n{\n\tvar acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ];\n\tvar reReplace = new RegExp( '(\\\\' + acEscape.join('|\\\\') + ')', 'g' );\n\treturn sVal.replace(reReplace, '\\\\$1');\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.info.js",
    "content": "\n/**\n * Generate the node required for the info display\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Information element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlInfo ( oSettings )\n{\n\tvar nInfo = document.createElement( 'div' );\n\tnInfo.className = oSettings.oClasses.sInfo;\n\t\n\t/* Actions that are to be taken once only for this feature */\n\tif ( !oSettings.aanFeatures.i )\n\t{\n\t\t/* Add draw callback */\n\t\toSettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\"sName\": \"information\"\n\t\t} );\n\t\t\n\t\t/* Add id */\n\t\tnInfo.id = oSettings.sTableId+'_info';\n\t}\n\toSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );\n\t\n\treturn nInfo;\n}\n\n\n/**\n * Update the information elements in the display\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnUpdateInfo ( oSettings )\n{\n\t/* Show information about the table */\n\tif ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )\n\t{\n\t\treturn;\n\t}\n\t\n\tvar\n\t\toLang = oSettings.oLanguage,\n\t\tiStart = oSettings._iDisplayStart+1,\n\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\tiMax = oSettings.fnRecordsTotal(),\n\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\tsOut;\n\t\n\tif ( iTotal === 0 )\n\t{\n\t\t/* Empty record set */\n\t\tsOut = oLang.sInfoEmpty;\n\t}\n\telse {\n\t\t/* Normal record set */\n\t\tsOut = oLang.sInfo;\n\t}\n\n\tif ( iTotal != iMax )\n\t{\n\t\t/* Record set after filtering */\n\t\tsOut += ' ' + oLang.sInfoFiltered;\n\t}\n\n\t// Convert the macros\n\tsOut += oLang.sInfoPostFix;\n\tsOut = _fnInfoMacros( oSettings, sOut );\n\t\n\tif ( oLang.fnInfoCallback !== null )\n\t{\n\t\tsOut = oLang.fnInfoCallback.call( oSettings.oInstance, \n\t\t\toSettings, iStart, iEnd, iMax, iTotal, sOut );\n\t}\n\t\n\tvar n = oSettings.aanFeatures.i;\n\tfor ( var i=0, iLen=n.length ; i<iLen ; i++ )\n\t{\n\t\t$(n[i]).html( sOut );\n\t}\n}\n\n\nfunction _fnInfoMacros ( oSettings, str )\n{\n\tvar\n\t\tiStart = oSettings._iDisplayStart+1,\n\t\tsStart = oSettings.fnFormatNumber( iStart ),\n\t\tiEnd = oSettings.fnDisplayEnd(),\n\t\tsEnd = oSettings.fnFormatNumber( iEnd ),\n\t\tiTotal = oSettings.fnRecordsDisplay(),\n\t\tsTotal = oSettings.fnFormatNumber( iTotal ),\n\t\tiMax = oSettings.fnRecordsTotal(),\n\t\tsMax = oSettings.fnFormatNumber( iMax );\n\n\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t// internally\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\tsStart = oSettings.fnFormatNumber( 1 );\n\t}\n\n\treturn str.\n\t\treplace(/_START_/g, sStart).\n\t\treplace(/_END_/g,   sEnd).\n\t\treplace(/_TOTAL_/g, sTotal).\n\t\treplace(/_MAX_/g,   sMax);\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.init.js",
    "content": "\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnInitialise ( oSettings )\n{\n\tvar i, iLen, iAjaxStart=oSettings.iInitDisplayStart;\n\t\n\t/* Ensure that the table data is fully initialised */\n\tif ( oSettings.bInitialised === false )\n\t{\n\t\tsetTimeout( function(){ _fnInitialise( oSettings ); }, 200 );\n\t\treturn;\n\t}\n\t\n\t/* Show the display HTML options */\n\t_fnAddOptionsHtml( oSettings );\n\t\n\t/* Build and draw the header / footer for the table */\n\t_fnBuildHead( oSettings );\n\t_fnDrawHead( oSettings, oSettings.aoHeader );\n\tif ( oSettings.nTFoot )\n\t{\n\t\t_fnDrawHead( oSettings, oSettings.aoFooter );\n\t}\n\n\t/* Okay to show that something is going on now */\n\t_fnProcessingDisplay( oSettings, true );\n\t\n\t/* Calculate sizes for columns */\n\tif ( oSettings.oFeatures.bAutoWidth )\n\t{\n\t\t_fnCalculateColumnWidths( oSettings );\n\t}\n\t\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t{\n\t\t\toSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );\n\t\t}\n\t}\n\t\n\t/* If there is default sorting required - let's do it. The sort function will do the\n\t * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows\n\t * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)\n\t */\n\tif ( oSettings.oFeatures.bSort )\n\t{\n\t\t_fnSort( oSettings );\n\t}\n\telse if ( oSettings.oFeatures.bFilter )\n\t{\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch );\n\t}\n\telse\n\t{\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n\t\n\t/* if there is an ajax source load the data */\n\tif ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )\n\t{\n\t\tvar aoData = [];\n\t\t_fnServerParams( oSettings, aoData );\n\t\toSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {\n\t\t\tvar aData = (oSettings.sAjaxDataProp !== \"\") ?\n\t\t\t \t_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;\n\n\t\t\t/* Got the data - add it to the table */\n\t\t\tfor ( i=0 ; i<aData.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddData( oSettings, aData[i] );\n\t\t\t}\n\t\t\t\n\t\t\t/* Reset the init display for cookie saving. We've already done a filter, and\n\t\t\t * therefore cleared it before. So we need to make it appear 'fresh'\n\t\t\t */\n\t\t\toSettings.iInitDisplayStart = iAjaxStart;\n\t\t\t\n\t\t\tif ( oSettings.oFeatures.bSort )\n\t\t\t{\n\t\t\t\t_fnSort( oSettings );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t_fnDraw( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t_fnInitComplete( oSettings, json );\n\t\t}, oSettings );\n\t\treturn;\n\t}\n\t\n\t/* Server-side processing initialisation complete is done at the end of _fnDraw */\n\tif ( !oSettings.oFeatures.bServerSide )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\t_fnInitComplete( oSettings );\n\t}\n}\n\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} oSettings dataTables settings object\n *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n *    with client-side processing (optional)\n *  @memberof DataTable#oApi\n */\nfunction _fnInitComplete ( oSettings, json )\n{\n\toSettings._bInitComplete = true;\n\t_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );\n}\n\n\n/**\n * Language compatibility - when certain options are given, and others aren't, we\n * need to duplicate the values over, in order to provide backwards compatibility\n * with older language files.\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnLanguageCompat( oLanguage )\n{\n\tvar oDefaults = DataTable.defaults.oLanguage;\n\n\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t * sZeroRecords - assuming that is given.\n\t */\n\tif ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&\n\t\toDefaults.sEmptyTable === \"No data available in table\" )\n\t{\n\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );\n\t}\n\n\t/* Likewise with loading records */\n\tif ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&\n\t\toDefaults.sLoadingRecords === \"Loading...\" )\n\t{\n\t\t_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.length.js",
    "content": "\n\n/**\n * Generate the node required for user display length changing\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Display length feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlLength ( oSettings )\n{\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\treturn null;\n\t}\n\t\n\t/* This can be overruled by not using the _MENU_ var/macro in the language variable */\n\tvar sName = 'name=\"'+oSettings.sTableId+'_length\"';\n\tvar sStdMenu = '<select size=\"1\" '+sName+'>';\n\tvar i, iLen;\n\tvar aLengthMenu = oSettings.aLengthMenu;\n\t\n\tif ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && \n\t\t\ttypeof aLengthMenu[1] === 'object' )\n\t{\n\t\tfor ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[0][i]+'\">'+aLengthMenu[1][i]+'</option>';\n\t\t}\n\t}\n\telse\n\t{\n\t\tfor ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tsStdMenu += '<option value=\"'+aLengthMenu[i]+'\">'+aLengthMenu[i]+'</option>';\n\t\t}\n\t}\n\tsStdMenu += '</select>';\n\t\n\tvar nLength = document.createElement( 'div' );\n\tif ( !oSettings.aanFeatures.l )\n\t{\n\t\tnLength.id = oSettings.sTableId+'_length';\n\t}\n\tnLength.className = oSettings.oClasses.sLength;\n\tnLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';\n\t\n\t/*\n\t * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,\n\t * and Stefan Skopnik for fixing the fix!\n\t */\n\t$('select option[value=\"'+oSettings._iDisplayLength+'\"]', nLength).attr(\"selected\", true);\n\t\n\t$('select', nLength).bind( 'change.DT', function(e) {\n\t\tvar iVal = $(this).val();\n\t\t\n\t\t/* Update all other length options for the new display */\n\t\tvar n = oSettings.aanFeatures.l;\n\t\tfor ( i=0, iLen=n.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( n[i] != this.parentNode )\n\t\t\t{\n\t\t\t\t$('select', n[i]).val( iVal );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Redraw the table */\n\t\toSettings._iDisplayLength = parseInt(iVal, 10);\n\t\t_fnCalculateEnd( oSettings );\n\t\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )\n\t\t{\n\t\t\toSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;\n\t\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ( oSettings._iDisplayLength == -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t\t\n\t\t_fnDraw( oSettings );\n\t} );\n\n\n\t$('select', nLength).attr('aria-controls', oSettings.sTableId);\n\t\n\treturn nLength;\n}\n\n\n/**\n * Recalculate the end point based on the start point\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnCalculateEnd( oSettings )\n{\n\tif ( oSettings.oFeatures.bPaginate === false )\n\t{\n\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t}\n\telse\n\t{\n\t\t/* Set the end point of the display - based on how many elements there are\n\t\t * still to display\n\t\t */\n\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||\n\t\t\t   oSettings._iDisplayLength == -1 )\n\t\t{\n\t\t\toSettings._iDisplayEnd = oSettings.aiDisplay.length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.page.js",
    "content": "\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Note that most of the paging logic is done in \n * DataTable.ext.oPagination\n */\n\n/**\n * Generate the node required for default pagination\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Pagination feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlPaginate ( oSettings )\n{\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\treturn null;\n\t}\n\t\n\tvar nPaginate = document.createElement( 'div' );\n\tnPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;\n\t\n\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, \n\t\tfunction( oSettings ) {\n\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t_fnDraw( oSettings );\n\t\t}\n\t);\n\t\n\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\tif ( !oSettings.aanFeatures.p )\n\t{\n\t\toSettings.aoDrawCallback.push( {\n\t\t\t\"fn\": function( oSettings ) {\n\t\t\t\tDataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {\n\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t} );\n\t\t\t},\n\t\t\t\"sName\": \"pagination\"\n\t\t} );\n\t}\n\treturn nPaginate;\n}\n\n\n/**\n * Alter the display settings to change the page\n *  @param {object} oSettings dataTables settings object\n *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n *    or page number to jump to (integer)\n *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1\n *  @memberof DataTable#oApi\n */\nfunction _fnPageChange ( oSettings, mAction )\n{\n\tvar iOldStart = oSettings._iDisplayStart;\n\t\n\tif ( typeof mAction === \"number\" )\n\t{\n\t\toSettings._iDisplayStart = mAction * oSettings._iDisplayLength;\n\t\tif ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"first\" )\n\t{\n\t\toSettings._iDisplayStart = 0;\n\t}\n\telse if ( mAction == \"previous\" )\n\t{\n\t\toSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?\n\t\t\toSettings._iDisplayStart - oSettings._iDisplayLength :\n\t\t\t0;\n\t\t\n\t\t/* Correct for under-run */\n\t\tif ( oSettings._iDisplayStart < 0 )\n\t\t{\n\t\t  oSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"next\" )\n\t{\n\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t{\n\t\t\t/* Make sure we are not over running the display array */\n\t\t\tif ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )\n\t\t\t{\n\t\t\t\toSettings._iDisplayStart += oSettings._iDisplayLength;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse if ( mAction == \"last\" )\n\t{\n\t\tif ( oSettings._iDisplayLength >= 0 )\n\t\t{\n\t\t\tvar iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;\n\t\t\toSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toSettings._iDisplayStart = 0;\n\t\t}\n\t}\n\telse\n\t{\n\t\t_fnLog( oSettings, 0, \"Unknown paging action: \"+mAction );\n\t}\n\t$(oSettings.oInstance).trigger('page', oSettings);\n\t\n\treturn iOldStart != oSettings._iDisplayStart;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.processing.js",
    "content": "\n\n/**\n * Generate the node required for the processing node\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Processing element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlProcessing ( oSettings )\n{\n\tvar nProcessing = document.createElement( 'div' );\n\t\n\tif ( !oSettings.aanFeatures.r )\n\t{\n\t\tnProcessing.id = oSettings.sTableId+'_processing';\n\t}\n\tnProcessing.innerHTML = oSettings.oLanguage.sProcessing;\n\tnProcessing.className = oSettings.oClasses.sProcessing;\n\toSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );\n\t\n\treturn nProcessing;\n}\n\n\n/**\n * Display or hide the processing indicator\n *  @param {object} oSettings dataTables settings object\n *  @param {bool} bShow Show the processing indicator (true) or not (false)\n *  @memberof DataTable#oApi\n */\nfunction _fnProcessingDisplay ( oSettings, bShow )\n{\n\tif ( oSettings.oFeatures.bProcessing )\n\t{\n\t\tvar an = oSettings.aanFeatures.r;\n\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tan[i].style.visibility = bShow ? \"visible\" : \"hidden\";\n\t\t}\n\t}\n\n\t$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.scrolling.js",
    "content": "/**\n * Add any control elements for the table - specifically scrolling\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Node to add to the DOM\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlTable ( oSettings )\n{\n\t/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */\n\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t{\n\t\treturn oSettings.nTable;\n\t}\n\t\n\t/*\n\t * The HTML structure that we want to generate in this function is:\n\t *  div - nScroller\n\t *    div - nScrollHead\n\t *      div - nScrollHeadInner\n\t *        table - nScrollHeadTable\n\t *          thead - nThead\n\t *    div - nScrollBody\n\t *      table - oSettings.nTable\n\t *        thead - nTheadSize\n\t *        tbody - nTbody\n\t *    div - nScrollFoot\n\t *      div - nScrollFootInner\n\t *        table - nScrollFootTable\n\t *          tfoot - nTfoot\n\t */\n\tvar\n\t \tnScroller = document.createElement('div'),\n\t \tnScrollHead = document.createElement('div'),\n\t \tnScrollHeadInner = document.createElement('div'),\n\t \tnScrollBody = document.createElement('div'),\n\t \tnScrollFoot = document.createElement('div'),\n\t \tnScrollFootInner = document.createElement('div'),\n\t \tnScrollHeadTable = oSettings.nTable.cloneNode(false),\n\t \tnScrollFootTable = oSettings.nTable.cloneNode(false),\n\t\tnThead = oSettings.nTable.getElementsByTagName('thead')[0],\n\t \tnTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null : \n\t\t\toSettings.nTable.getElementsByTagName('tfoot')[0],\n\t\toClasses = oSettings.oClasses;\n\t\n\tnScrollHead.appendChild( nScrollHeadInner );\n\tnScrollFoot.appendChild( nScrollFootInner );\n\tnScrollBody.appendChild( oSettings.nTable );\n\tnScroller.appendChild( nScrollHead );\n\tnScroller.appendChild( nScrollBody );\n\tnScrollHeadInner.appendChild( nScrollHeadTable );\n\tnScrollHeadTable.appendChild( nThead );\n\tif ( nTfoot !== null )\n\t{\n\t\tnScroller.appendChild( nScrollFoot );\n\t\tnScrollFootInner.appendChild( nScrollFootTable );\n\t\tnScrollFootTable.appendChild( nTfoot );\n\t}\n\t\n\tnScroller.className = oClasses.sScrollWrapper;\n\tnScrollHead.className = oClasses.sScrollHead;\n\tnScrollHeadInner.className = oClasses.sScrollHeadInner;\n\tnScrollBody.className = oClasses.sScrollBody;\n\tnScrollFoot.className = oClasses.sScrollFoot;\n\tnScrollFootInner.className = oClasses.sScrollFootInner;\n\t\n\tif ( oSettings.oScroll.bAutoCss )\n\t{\n\t\tnScrollHead.style.overflow = \"hidden\";\n\t\tnScrollHead.style.position = \"relative\";\n\t\tnScrollFoot.style.overflow = \"hidden\";\n\t\tnScrollBody.style.overflow = \"auto\";\n\t}\n\t\n\tnScrollHead.style.border = \"0\";\n\tnScrollHead.style.width = \"100%\";\n\tnScrollFoot.style.border = \"0\";\n\tnScrollHeadInner.style.width = oSettings.oScroll.sXInner !== \"\" ?\n\t\toSettings.oScroll.sXInner : \"100%\"; /* will be overwritten */\n\t\n\t/* Modify attributes to respect the clones */\n\tnScrollHeadTable.removeAttribute('id');\n\tnScrollHeadTable.style.marginLeft = \"0\";\n\toSettings.nTable.style.marginLeft = \"0\";\n\tif ( nTfoot !== null )\n\t{\n\t\tnScrollFootTable.removeAttribute('id');\n\t\tnScrollFootTable.style.marginLeft = \"0\";\n\t}\n\t\n\t/* Move caption elements from the body to the header, footer or leave where it is\n\t * depending on the configuration. Note that the DTD says there can be only one caption */\n\tvar nCaption = $(oSettings.nTable).children('caption');\n\tif ( nCaption.length > 0 )\n\t{\n\t\tnCaption = nCaption[0];\n\t\tif ( nCaption._captionSide === \"top\" )\n\t\t{\n\t\t\tnScrollHeadTable.appendChild( nCaption );\n\t\t}\n\t\telse if ( nCaption._captionSide === \"bottom\" && nTfoot )\n\t\t{\n\t\t\tnScrollFootTable.appendChild( nCaption );\n\t\t}\n\t}\n\t\n\t/*\n\t * Sizing\n\t */\n\t/* When x-scrolling add the width and a scroller to move the header with the body */\n\tif ( oSettings.oScroll.sX !== \"\" )\n\t{\n\t\tnScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\tnScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );\n\t\t\n\t\tif ( nTfoot !== null )\n\t\t{\n\t\t\tnScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );\t\n\t\t}\n\t\t\n\t\t/* When the body is scrolled, then we also want to scroll the headers */\n\t\t$(nScrollBody).scroll( function (e) {\n\t\t\tnScrollHead.scrollLeft = this.scrollLeft;\n\t\t\t\n\t\t\tif ( nTfoot !== null )\n\t\t\t{\n\t\t\t\tnScrollFoot.scrollLeft = this.scrollLeft;\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t/* When yscrolling, add the height */\n\tif ( oSettings.oScroll.sY !== \"\" )\n\t{\n\t\tnScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );\n\t}\n\t\n\t/* Redraw - align columns across the tables */\n\toSettings.aoDrawCallback.push( {\n\t\t\"fn\": _fnScrollDraw,\n\t\t\"sName\": \"scrolling\"\n\t} );\n\t\n\t/* Infinite scrolling event handlers */\n\tif ( oSettings.oScroll.bInfinite )\n\t{\n\t\t$(nScrollBody).scroll( function() {\n\t\t\t/* Use a blocker to stop scrolling from loading more data while other data is still loading */\n\t\t\tif ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )\n\t\t\t{\n\t\t\t\t/* Check if we should load the next data set */\n\t\t\t\tif ( $(this).scrollTop() + $(this).height() > \n\t\t\t\t\t$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )\n\t\t\t\t{\n\t\t\t\t\t/* Only do the redraw if we have to - we might be at the end of the data */\n\t\t\t\t\tif ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnPageChange( oSettings, 'next' );\n\t\t\t\t\t\t_fnCalculateEnd( oSettings );\n\t\t\t\t\t\t_fnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\toSettings.nScrollHead = nScrollHead;\n\toSettings.nScrollFoot = nScrollFoot;\n\t\n\treturn nScroller;\n}\n\n\n/**\n * Update the various tables for resizing. It's a bit of a pig this function, but\n * basically the idea to:\n *   1. Re-create the table inside the scrolling div\n *   2. Take live measurements from the DOM\n *   3. Apply the measurements\n *   4. Clean up\n *  @param {object} o dataTables settings object\n *  @returns {node} Node to add to the DOM\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollDraw ( o )\n{\n\tvar\n\t\tnScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],\n\t\tnScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],\n\t\tnScrollBody = o.nTable.parentNode,\n\t\ti, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,\n\t\tnTheadSize, nTfootSize,\n\t\tiWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,\n\t\tnScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,\n\t\tnScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,\n\t\tie67 = o.oBrowser.bScrollOversize,\n\t\tzeroOut = function(nSizer) {\n\t\t\toStyle = nSizer.style;\n\t\t\toStyle.paddingTop = \"0\";\n\t\t\toStyle.paddingBottom = \"0\";\n\t\t\toStyle.borderTopWidth = \"0\";\n\t\t\toStyle.borderBottomWidth = \"0\";\n\t\t\toStyle.height = 0;\n\t\t};\n\t\n\t/*\n\t * 1. Re-create the table inside the scrolling div\n\t */\n\t\n\t/* Remove the old minimised thead and tfoot elements in the inner table */\n\t$(o.nTable).children('thead, tfoot').remove();\n\n\t/* Clone the current header and footer elements and then place it into the inner table */\n\tnTheadSize = $(o.nTHead).clone()[0];\n\to.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );\n\tanHeadToSize = o.nTHead.getElementsByTagName('tr');\n\tanHeadSizers = nTheadSize.getElementsByTagName('tr');\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\tnTfootSize = $(o.nTFoot).clone()[0];\n\t\to.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );\n\t\tanFootToSize = o.nTFoot.getElementsByTagName('tr');\n\t\tanFootSizers = nTfootSize.getElementsByTagName('tr');\n\t}\n\t\n\t/*\n\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t */\n\t\n\t/* Remove old sizing and apply the calculated column widths\n\t * Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t * calculated sizes to this header\n\t */\n\tif ( o.oScroll.sX === \"\" )\n\t{\n\t\tnScrollBody.style.width = '100%';\n\t\tnScrollHeadInner.parentNode.style.width = '100%';\n\t}\n\t\n\tvar nThs = _fnGetUniqueThs( o, nTheadSize );\n\tfor ( i=0, iLen=nThs.length ; i<iLen ; i++ )\n\t{\n\t\tiVis = _fnVisibleToColumnIndex( o, i );\n\t\tnThs[i].style.width = o.aoColumns[iVis].sWidth;\n\t}\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( function(n) {\n\t\t\tn.style.width = \"\";\n\t\t}, anFootSizers );\n\t}\n\n\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t// then hide it (end of this function), so add the header height to the body scroller.\n\tif ( o.oScroll.bCollapse && o.oScroll.sY !== \"\" )\n\t{\n\t\tnScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+\"px\";\n\t}\n\t\n\t/* Size the table as a whole */\n\tiSanityWidth = $(o.nTable).outerWidth();\n\tif ( o.oScroll.sX === \"\" )\n\t{\n\t\t/* No x scrolling */\n\t\to.nTable.style.width = \"100%\";\n\t\t\n\t\t/* I know this is rubbish - but IE7 will make the width of the table when 100% include\n\t\t * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this\n\t\t * into account.\n\t\t */\n\t\tif ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight || \n\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t{\n\t\t\to.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);\n\t\t}\n\t}\n\telse\n\t{\n\t\tif ( o.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\t/* x scroll inner has been given - use it */\n\t\t\to.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);\n\t\t}\n\t\telse if ( iSanityWidth == $(nScrollBody).width() &&\n\t\t   $(nScrollBody).height() < $(o.nTable).height() )\n\t\t{\n\t\t\t/* There is y-scrolling - try to take account of the y scroll bar */\n\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );\n\t\t\tif ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )\n\t\t\t{\n\t\t\t\t/* Not possible to take account of it */\n\t\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* All else fails */\n\t\t\to.nTable.style.width = _fnStringToCss( iSanityWidth );\n\t\t}\n\t}\n\t\n\t/* Recalculate the sanity width - now that we've applied the required width, before it was\n\t * a temporary variable. This is required because the column width calculation is done\n\t * before this table DOM is created.\n\t */\n\tiSanityWidth = $(o.nTable).outerWidth();\n\t\n\t/* We want the hidden header to have zero height, so remove padding and borders. Then\n\t * set the width based on the real headers\n\t */\n\t\n\t// Apply all styles in one pass. Invalidates layout only once because we don't read any \n\t// DOM properties.\n\t_fnApplyToChildren( zeroOut, anHeadSizers );\n\t \n\t// Read all widths in next pass. Forces layout only once because we do not change \n\t// any DOM properties.\n\t_fnApplyToChildren( function(nSizer) {\n\t\taApplied.push( _fnStringToCss( $(nSizer).width() ) );\n\t}, anHeadSizers );\n\t \n\t// Apply all widths in final pass. Invalidates layout only once because we do not\n\t// read any DOM properties.\n\t_fnApplyToChildren( function(nToSize, i) {\n\t\tnToSize.style.width = aApplied[i];\n\t}, anHeadToSize );\n\n\t$(anHeadSizers).height(0);\n\t\n\t/* Same again with the footer if we have one */\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( zeroOut, anFootSizers );\n\t\t \n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\taAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );\n\t\t}, anFootSizers );\n\t\t \n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = aAppliedFooter[i];\n\t\t}, anFootToSize );\n\n\t\t$(anFootSizers).height(0);\n\t}\n\t\n\t/*\n\t * 3. Apply the measurements\n\t */\n\t\n\t/* \"Hide\" the header and footer that we used for the sizing. We want to also fix their width\n\t * to what they currently are\n\t */\n\t_fnApplyToChildren( function(nSizer, i) {\n\t\tnSizer.innerHTML = \"\";\n\t\tnSizer.style.width = aApplied[i];\n\t}, anHeadSizers );\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = \"\";\n\t\t\tnSizer.style.width = aAppliedFooter[i];\n\t\t}, anFootSizers );\n\t}\n\t\n\t/* Sanity check that the table is of a sensible width. If not then we are going to get\n\t * misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t */\n\tif ( $(o.nTable).outerWidth() < iSanityWidth )\n\t{\n\t\t/* The min width depends upon if we have a vertical scrollbar visible or not */\n\t\tvar iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || \n\t\t\t$(nScrollBody).css('overflow-y') == \"scroll\")) ?\n\t\t\t\tiSanityWidth+o.oScroll.iBarWidth : iSanityWidth;\n\t\t\n\t\t/* IE6/7 are a law unto themselves... */\n\t\tif ( ie67 && (nScrollBody.scrollHeight > \n\t\t\tnScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == \"scroll\")  )\n\t\t{\n\t\t\to.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );\n\t\t}\n\t\t\n\t\t/* Apply the calculated minimum width to the table wrappers */\n\t\tnScrollBody.style.width = _fnStringToCss( iCorrection );\n\t\to.nScrollHead.style.width = _fnStringToCss( iCorrection );\n\t\t\n\t\tif ( o.nTFoot !== null )\n\t\t{\n\t\t\to.nScrollFoot.style.width = _fnStringToCss( iCorrection );\n\t\t}\n\t\t\n\t\t/* And give the user a warning that we've stopped the table getting too small */\n\t\tif ( o.oScroll.sX === \"\" )\n\t\t{\n\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\" misalignment. The table has been drawn at its minimum possible width.\" );\n\t\t}\n\t\telse if ( o.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\t_fnLog( o, 1, \"The table cannot fit into the current element which will cause column\"+\n\t\t\t\t\" misalignment. Increase the sScrollXInner value or remove it to allow automatic\"+\n\t\t\t\t\" calculation\" );\n\t\t}\n\t}\n\telse\n\t{\n\t\tnScrollBody.style.width = _fnStringToCss( '100%' );\n\t\to.nScrollHead.style.width = _fnStringToCss( '100%' );\n\t\t\n\t\tif ( o.nTFoot !== null )\n\t\t{\n\t\t\to.nScrollFoot.style.width = _fnStringToCss( '100%' );\n\t\t}\n\t}\n\t\n\t\n\t/*\n\t * 4. Clean up\n\t */\n\tif ( o.oScroll.sY === \"\" )\n\t{\n\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t */\n\t\tif ( ie67 )\n\t\t{\n\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );\n\t\t}\n\t}\n\t\n\tif ( o.oScroll.sY !== \"\" && o.oScroll.bCollapse )\n\t{\n\t\tnScrollBody.style.height = _fnStringToCss( o.oScroll.sY );\n\t\t\n\t\tvar iExtra = (o.oScroll.sX !== \"\" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?\n\t\t \to.oScroll.iBarWidth : 0;\n\t\tif ( o.nTable.offsetHeight < nScrollBody.offsetHeight )\n\t\t{\n\t\t\tnScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );\n\t\t}\n\t}\n\t\n\t/* Finally set the width's of the header and footer tables */\n\tvar iOuterWidth = $(o.nTable).outerWidth();\n\tnScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );\n\tnScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );\n\n\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\tvar bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == \"scroll\";\n\tnScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t\n\tif ( o.nTFoot !== null )\n\t{\n\t\tnScrollFootTable.style.width = _fnStringToCss( iOuterWidth );\n\t\tnScrollFootInner.style.width = _fnStringToCss( iOuterWidth );\n\t\tnScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+\"px\" : \"0px\";\n\t}\n\n\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t$(nScrollBody).scroll();\n\t\n\t/* If sorting or filtering has occurred, jump the scrolling back to the top */\n\tif ( o.bSorted || o.bFiltered )\n\t{\n\t\tnScrollBody.scrollTop = 0;\n\t}\n}\n\n\n/**\n * Apply a given function to the display child nodes of an element array (typically\n * TD children of TR rows\n *  @param {function} fn Method to apply to the objects\n *  @param array {nodes} an1 List of elements to look through for display children\n *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyToChildren( fn, an1, an2 )\n{\n\tvar index=0, i=0, iLen=an1.length;\n\tvar nNode1, nNode2;\n\n\twhile ( i < iLen )\n\t{\n\t\tnNode1 = an1[i].firstChild;\n\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\twhile ( nNode1 )\n\t\t{\n\t\t\tif ( nNode1.nodeType === 1 )\n\t\t\t{\n\t\t\t\tif ( an2 )\n\t\t\t\t{\n\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t}\n\t\ti++;\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sizing.js",
    "content": "/**\n * Convert a CSS unit width to pixels (e.g. 2em)\n *  @param {string} sWidth width to be converted\n *  @param {node} nParent parent to get the with for (required for relative widths) - optional\n *  @returns {int} iWidth width in pixels\n *  @memberof DataTable#oApi\n */\nfunction _fnConvertToWidth ( sWidth, nParent )\n{\n\tif ( !sWidth || sWidth === null || sWidth === '' )\n\t{\n\t\treturn 0;\n\t}\n\t\n\tif ( !nParent )\n\t{\n\t\tnParent = document.body;\n\t}\n\t\n\tvar iWidth;\n\tvar nTmp = document.createElement( \"div\" );\n\tnTmp.style.width = _fnStringToCss( sWidth );\n\t\n\tnParent.appendChild( nTmp );\n\tiWidth = nTmp.offsetWidth;\n\tnParent.removeChild( nTmp );\n\t\n\treturn ( iWidth );\n}\n\n\n/**\n * Calculate the width of columns for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnCalculateColumnWidths ( oSettings )\n{\n\tvar iTableWidth = oSettings.nTable.offsetWidth;\n\tvar iUserInputs = 0;\n\tvar iTmpWidth;\n\tvar iVisibleColumns = 0;\n\tvar iColums = oSettings.aoColumns.length;\n\tvar i, iIndex, iCorrector, iWidth;\n\tvar oHeaders = $('th', oSettings.nTHead);\n\tvar widthAttr = oSettings.nTable.getAttribute('width');\n\tvar nWrapper = oSettings.nTable.parentNode;\n\t\n\t/* Convert any user input sizes into pixel sizes */\n\tfor ( i=0 ; i<iColums ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t{\n\t\t\tiVisibleColumns++;\n\t\t\t\n\t\t\tif ( oSettings.aoColumns[i].sWidth !== null )\n\t\t\t{\n\t\t\t\tiTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig, \n\t\t\t\t\tnWrapper );\n\t\t\t\tif ( iTmpWidth !== null )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\tiUserInputs++;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/* If the number of columns in the DOM equals the number that we have to process in \n\t * DataTables, then we can use the offsets that are created by the web-browser. No custom \n\t * sizes can be set in order for this to happen, nor scrolling used\n\t */\n\tif ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&\n\t\toSettings.oScroll.sX === \"\" && oSettings.oScroll.sY === \"\" )\n\t{\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tiTmpWidth = $(oHeaders[i]).width();\n\t\t\tif ( iTmpWidth !== null )\n\t\t\t{\n\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Otherwise we are going to have to do some calculations to get the width of each column.\n\t\t * Construct a 1 row table with the widest node in the data, and any user defined widths,\n\t\t * then insert it into the DOM and allow the browser to do all the hard work of\n\t\t * calculating table widths.\n\t\t */\n\t\tvar\n\t\t\tnCalcTmp = oSettings.nTable.cloneNode( false ),\n\t\t\tnTheadClone = oSettings.nTHead.cloneNode(true),\n\t\t\tnBody = document.createElement( 'tbody' ),\n\t\t\tnTr = document.createElement( 'tr' ),\n\t\t\tnDivSizing;\n\t\t\n\t\tnCalcTmp.removeAttribute( \"id\" );\n\t\tnCalcTmp.appendChild( nTheadClone );\n\t\tif ( oSettings.nTFoot !== null )\n\t\t{\n\t\t\tnCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, nCalcTmp.getElementsByTagName('tr') );\n\t\t}\n\t\t\n\t\tnCalcTmp.appendChild( nBody );\n\t\tnBody.appendChild( nTr );\n\t\t\n\t\t/* Remove any sizing that was previously applied by the styles */\n\t\tvar jqColSizing = $('thead th', nCalcTmp);\n\t\tif ( jqColSizing.length === 0 )\n\t\t{\n\t\t\tjqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);\n\t\t}\n\n\t\t/* Apply custom sizing to the cloned header */\n\t\tvar nThs = _fnGetUniqueThs( oSettings, nTheadClone );\n\t\tiCorrector = 0;\n\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t{\n\t\t\tvar oColumn = oSettings.aoColumns[i];\n\t\t\tif ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== \"\" )\n\t\t\t{\n\t\t\t\tnThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );\n\t\t\t}\n\t\t\telse if ( oColumn.bVisible )\n\t\t\t{\n\t\t\t\tnThs[i-iCorrector].style.width = \"\";\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\n\t\t/* Find the biggest td for each column and put it into the table */\n\t\tfor ( i=0 ; i<iColums ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tvar nTd = _fnGetWidestNode( oSettings, i );\n\t\t\t\tif ( nTd !== null )\n\t\t\t\t{\n\t\t\t\t\tnTd = nTd.cloneNode(true);\n\t\t\t\t\tif ( oSettings.aoColumns[i].sContentPadding !== \"\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnTd.innerHTML += oSettings.aoColumns[i].sContentPadding;\n\t\t\t\t\t}\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Build the table and 'display' it */\n\t\tnWrapper.appendChild( nCalcTmp );\n\t\t\n\t\t/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,\n\t\t * when not scrolling leave the table width as it is. This results in slightly different,\n\t\t * but I think correct behaviour\n\t\t */\n\t\tif ( oSettings.oScroll.sX !== \"\" && oSettings.oScroll.sXInner !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);\n\t\t}\n\t\telse if ( oSettings.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = \"\";\n\t\t\tif ( $(nCalcTmp).width() < nWrapper.offsetWidth )\n\t\t\t{\n\t\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t\t}\n\t\t}\n\t\telse if ( oSettings.oScroll.sY !== \"\" )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );\n\t\t}\n\t\telse if ( widthAttr )\n\t\t{\n\t\t\tnCalcTmp.style.width = _fnStringToCss( widthAttr );\n\t\t}\n\t\tnCalcTmp.style.visibility = \"hidden\";\n\t\t\n\t\t/* Scrolling considerations */\n\t\t_fnScrollingWidthAdjust( oSettings, nCalcTmp );\n\t\t\n\t\t/* Read the width's calculated by the browser and store them for use by the caller. We\n\t\t * first of all try to use the elements in the body, but it is possible that there are\n\t\t * no elements there, under which circumstances we use the header elements\n\t\t */\n\t\tvar oNodes = $(\"tbody tr:eq(0)\", nCalcTmp).children();\n\t\tif ( oNodes.length === 0 )\n\t\t{\n\t\t\toNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );\n\t\t}\n\n\t\t/* Browsers need a bit of a hand when a width is assigned to any columns when \n\t\t * x-scrolling as they tend to collapse the table to the min-width, even if\n\t\t * we sent the column widths. So we need to keep track of what the table width\n\t\t * should be by summing the user given values, and the automatic values\n\t\t */\n\t\tif ( oSettings.oScroll.sX !== \"\" )\n\t\t{\n\t\t\tvar iTotal = 0;\n\t\t\tiCorrector = 0;\n\t\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aoColumns[i].sWidthOrig === null )\n\t\t\t\t\t{\n\t\t\t\t\t\tiTotal += $(oNodes[iCorrector]).outerWidth();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +\n\t\t\t\t\t\t\t($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());\n\t\t\t\t\t}\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnCalcTmp.style.width = _fnStringToCss( iTotal );\n\t\t\toSettings.nTable.style.width = _fnStringToCss( iTotal );\n\t\t}\n\n\t\tiCorrector = 0;\n\t\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t\t{\n\t\t\tif ( oSettings.aoColumns[i].bVisible )\n\t\t\t{\n\t\t\t\tiWidth = $(oNodes[iCorrector]).width();\n\t\t\t\tif ( iWidth !== null && iWidth > 0 )\n\t\t\t\t{\n\t\t\t\t\toSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );\n\t\t\t\t}\n\t\t\t\tiCorrector++;\n\t\t\t}\n\t\t}\n\n\t\tvar cssWidth = $(nCalcTmp).css('width');\n\t\toSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?\n\t\t    cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );\n\t\tnCalcTmp.parentNode.removeChild( nCalcTmp );\n\t}\n\n\tif ( widthAttr )\n\t{\n\t\toSettings.nTable.style.width = _fnStringToCss( widthAttr );\n\t}\n}\n\n\n/**\n * Adjust a table's width to take account of scrolling\n *  @param {object} oSettings dataTables settings object\n *  @param {node} n table node\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollingWidthAdjust ( oSettings, n )\n{\n\tif ( oSettings.oScroll.sX === \"\" && oSettings.oScroll.sY !== \"\" )\n\t{\n\t\t/* When y-scrolling only, we want to remove the width of the scroll bar so the table\n\t\t * + scroll bar will fit into the area avaialble.\n\t\t */\n\t\tvar iOrigWidth = $(n).width();\n\t\tn.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );\n\t}\n\telse if ( oSettings.oScroll.sX !== \"\" )\n\t{\n\t\t/* When x-scrolling both ways, fix the table at it's current size, without adjusting */\n\t\tn.style.width = _fnStringToCss( $(n).outerWidth() );\n\t}\n}\n\n\n/**\n * Get the widest node\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column of interest\n *  @returns {node} widest table node\n *  @memberof DataTable#oApi\n */\nfunction _fnGetWidestNode( oSettings, iCol )\n{\n\tvar iMaxIndex = _fnGetMaxLenString( oSettings, iCol );\n\tif ( iMaxIndex < 0 )\n\t{\n\t\treturn null;\n\t}\n\n\tif ( oSettings.aoData[iMaxIndex].nTr === null )\n\t{\n\t\tvar n = document.createElement('td');\n\t\tn.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );\n\t\treturn n;\n\t}\n\treturn _fnGetTdNodes(oSettings, iMaxIndex)[iCol];\n}\n\n\n/**\n * Get the maximum strlen for each data column\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column of interest\n *  @returns {string} max string length for each column\n *  @memberof DataTable#oApi\n */\nfunction _fnGetMaxLenString( oSettings, iCol )\n{\n\tvar iMax = -1;\n\tvar iMaxIndex = -1;\n\t\n\tfor ( var i=0 ; i<oSettings.aoData.length ; i++ )\n\t{\n\t\tvar s = _fnGetCellData( oSettings, i, iCol, 'display' )+\"\";\n\t\ts = s.replace( /<.*?>/g, \"\" );\n\t\tif ( s.length > iMax )\n\t\t{\n\t\t\tiMax = s.length;\n\t\t\tiMaxIndex = i;\n\t\t}\n\t}\n\t\n\treturn iMaxIndex;\n}\n\n\n/**\n * Append a CSS unit (only if required) to a string\n *  @param {array} aArray1 first array\n *  @param {array} aArray2 second array\n *  @returns {int} 0 if match, 1 if length is different, 2 if no match\n *  @memberof DataTable#oApi\n */\nfunction _fnStringToCss( s )\n{\n\tif ( s === null )\n\t{\n\t\treturn \"0px\";\n\t}\n\t\n\tif ( typeof s == 'number' )\n\t{\n\t\tif ( s < 0 )\n\t\t{\n\t\t\treturn \"0px\";\n\t\t}\n\t\treturn s+\"px\";\n\t}\n\t\n\t/* Check if the last character is not 0-9 */\n\tvar c = s.charCodeAt( s.length-1 );\n\tif (c < 0x30 || c > 0x39)\n\t{\n\t\treturn s;\n\t}\n\treturn s+\"px\";\n}\n\n\n/**\n * Get the width of a scroll bar in this browser being used\n *  @returns {int} width in pixels\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollBarWidth ()\n{  \n\tvar inner = document.createElement('p');\n\tvar style = inner.style;\n\tstyle.width = \"100%\";\n\tstyle.height = \"200px\";\n\tstyle.padding = \"0px\";\n\t\n\tvar outer = document.createElement('div');\n\tstyle = outer.style;\n\tstyle.position = \"absolute\";\n\tstyle.top = \"0px\";\n\tstyle.left = \"0px\";\n\tstyle.visibility = \"hidden\";\n\tstyle.width = \"200px\";\n\tstyle.height = \"150px\";\n\tstyle.padding = \"0px\";\n\tstyle.overflow = \"hidden\";\n\touter.appendChild(inner);\n\t\n\tdocument.body.appendChild(outer);\n\tvar w1 = inner.offsetWidth;\n\touter.style.overflow = 'scroll';\n\tvar w2 = inner.offsetWidth;\n\tif ( w1 == w2 )\n\t{\n\t\tw2 = outer.clientWidth;\n\t}\n\t\n\tdocument.body.removeChild(outer);\n\treturn (w1 - w2);  \n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.sort.js",
    "content": "/**\n * Change the order of the table\n *  @param {object} oSettings dataTables settings object\n *  @param {bool} bApplyClasses optional - should we apply classes or not\n *  @memberof DataTable#oApi\n */\nfunction _fnSort ( oSettings, bApplyClasses )\n{\n\tvar\n\t\ti, iLen, j, jLen, k, kLen,\n\t\tsDataType, nTh,\n\t\taaSort = [],\n\t \taiOrig = [],\n\t\toSort = DataTable.ext.oSort,\n\t\taoData = oSettings.aoData,\n\t\taoColumns = oSettings.aoColumns,\n\t\toAria = oSettings.oLanguage.oAria;\n\t\n\t/* No sorting required if server-side or no sorting array */\n\tif ( !oSettings.oFeatures.bServerSide && \n\t\t(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )\n\t{\n\t\taaSort = ( oSettings.aaSortingFixed !== null ) ?\n\t\t\toSettings.aaSortingFixed.concat( oSettings.aaSorting ) :\n\t\t\toSettings.aaSorting.slice();\n\t\t\n\t\t/* If there is a sorting data type, and a function belonging to it, then we need to\n\t\t * get the data from the developer's function and apply it for this column\n\t\t */\n\t\tfor ( i=0 ; i<aaSort.length ; i++ )\n\t\t{\n\t\t\tvar iColumn = aaSort[i][0];\n\t\t\tvar iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );\n\t\t\tsDataType = oSettings.aoColumns[ iColumn ].sSortDataType;\n\t\t\tif ( DataTable.ext.afnSortData[sDataType] )\n\t\t\t{\n\t\t\t\tvar aData = DataTable.ext.afnSortData[sDataType].call( \n\t\t\t\t\toSettings.oInstance, oSettings, iColumn, iVisColumn\n\t\t\t\t);\n\t\t\t\tif ( aData.length === aoData.length )\n\t\t\t\t{\n\t\t\t\t\tfor ( j=0, jLen=aoData.length ; j<jLen ; j++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnSetCellData( oSettings, j, iColumn, aData[j] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnLog( oSettings, 0, \"Returned data sort array (col \"+iColumn+\") is the wrong length\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Create a value - key array of the current row positions such that we can use their\n\t\t * current position during the sort, if values match, in order to perform stable sorting\n\t\t */\n\t\tfor ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taiOrig[ oSettings.aiDisplayMaster[i] ] = i;\n\t\t}\n\n\t\t/* Build an internal data array which is specific to the sort, so we can get and prep\n\t\t * the data to be sorted only once, rather than needing to do it every time the sorting\n\t\t * function runs. This make the sorting function a very simple comparison\n\t\t */\n\t\tvar iSortLen = aaSort.length;\n\t\tvar fnSortFormat, aDataSort;\n\t\tfor ( i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( j=0 ; j<iSortLen ; j++ )\n\t\t\t{\n\t\t\t\taDataSort = aoColumns[ aaSort[j][0] ].aDataSort;\n\n\t\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tsDataType = aoColumns[ aDataSort[k] ].sType;\n\t\t\t\t\tfnSortFormat = oSort[ (sDataType ? sDataType : 'string')+\"-pre\" ];\n\t\t\t\t\t\n\t\t\t\t\taoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?\n\t\t\t\t\t\tfnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :\n\t\t\t\t\t\t_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t *  fnLocalSorting = function(a,b){\n\t\t *  \tvar iTest;\n\t\t *  \tiTest = oSort['string-asc']('data11', 'data12');\n\t\t *  \tif (iTest !== 0)\n\t\t *  \t\treturn iTest;\n\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t *    if (iTest !== 0)\n\t\t *  \t\treturn iTest;\n\t\t *  \treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t *  }\n\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t * test the next column. If all columns match, then we use a numeric sort on the row \n\t\t * positions in the original data array to provide a stable sort.\n\t\t */\n\t\toSettings.aiDisplayMaster.sort( function ( a, b ) {\n\t\t\tvar k, l, lLen, iTest, aDataSort, sDataType;\n\t\t\tfor ( k=0 ; k<iSortLen ; k++ )\n\t\t\t{\n\t\t\t\taDataSort = aoColumns[ aaSort[k][0] ].aDataSort;\n\n\t\t\t\tfor ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )\n\t\t\t\t{\n\t\t\t\t\tsDataType = aoColumns[ aDataSort[l] ].sType;\n\t\t\t\t\t\n\t\t\t\t\tiTest = oSort[ (sDataType ? sDataType : 'string')+\"-\"+aaSort[k][1] ](\n\t\t\t\t\t\taoData[a]._aSortData[ aDataSort[l] ],\n\t\t\t\t\t\taoData[b]._aSortData[ aDataSort[l] ]\n\t\t\t\t\t);\n\t\t\t\t\n\t\t\t\t\tif ( iTest !== 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn iTest;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t} );\n\t}\n\t\n\t/* Alter the sorting classes to take account of the changes */\n\tif ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )\n\t{\n\t\t_fnSortingClasses( oSettings );\n\t}\n\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\tvar sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, \"\" );\n\t\tnTh = aoColumns[i].nTh;\n\t\tnTh.removeAttribute('aria-sort');\n\t\tnTh.removeAttribute('aria-label');\n\t\t\n\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\tif ( aoColumns[i].bSortable )\n\t\t{\n\t\t\tif ( aaSort.length > 0 && aaSort[0][0] == i )\n\t\t\t{\n\t\t\t\tnTh.setAttribute('aria-sort', aaSort[0][1]==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\n\t\t\t\tvar nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? \n\t\t\t\t\taoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];\n\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t(nextSort==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnTh.setAttribute('aria-label', sTitle+\n\t\t\t\t\t(aoColumns[i].asSorting[0]==\"asc\" ? oAria.sSortAscending : oAria.sSortDescending) );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnTh.setAttribute('aria-label', sTitle);\n\t\t}\n\t}\n\t\n\t/* Tell the draw function that we have sorted the data */\n\toSettings.bSorted = true;\n\t$(oSettings.oInstance).trigger('sort', oSettings);\n\t\n\t/* Copy the master data into the draw array and re-draw */\n\tif ( oSettings.oFeatures.bFilter )\n\t{\n\t\t/* _fnFilter() will redraw the table for us */\n\t\t_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );\n\t}\n\telse\n\t{\n\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\toSettings._iDisplayStart = 0; /* reset display back to page 0 */\n\t\t_fnCalculateEnd( oSettings );\n\t\t_fnDraw( oSettings );\n\t}\n}\n\n\n/**\n * Attach a sort handler (click) to a node\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nNode node to attach the handler to\n *  @param {int} iDataIndex column sorting index\n *  @param {function} [fnCallback] callback function\n *  @memberof DataTable#oApi\n */\nfunction _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )\n{\n\t_fnBindAction( nNode, {}, function (e) {\n\t\t/* If the column is not sortable - don't to anything */\n\t\tif ( oSettings.aoColumns[iDataIndex].bSortable === false )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t/*\n\t\t * This is a little bit odd I admit... I declare a temporary function inside the scope of\n\t\t * _fnBuildHead and the click handler in order that the code presented here can be used \n\t\t * twice - once for when bProcessing is enabled, and another time for when it is \n\t\t * disabled, as we need to perform slightly different actions.\n\t\t *   Basically the issue here is that the Javascript engine in modern browsers don't \n\t\t * appear to allow the rendering engine to update the display while it is still executing\n\t\t * it's thread (well - it does but only after long intervals). This means that the \n\t\t * 'processing' display doesn't appear for a table sort. To break the js thread up a bit\n\t\t * I force an execution break by using setTimeout - but this breaks the expected \n\t\t * thread continuation for the end-developer's point of view (their code would execute\n\t\t * too early), so we only do it when we absolutely have to.\n\t\t */\n\t\tvar fnInnerSorting = function () {\n\t\t\tvar iColumn, iNextSort;\n\t\t\t\n\t\t\t/* If the shift key is pressed then we are multiple column sorting */\n\t\t\tif ( e.shiftKey )\n\t\t\t{\n\t\t\t\t/* Are we already doing some kind of sort on this column? */\n\t\t\t\tvar bFound = false;\n\t\t\t\tfor ( var i=0 ; i<oSettings.aaSorting.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oSettings.aaSorting[i][0] == iDataIndex )\n\t\t\t\t\t{\n\t\t\t\t\t\tbFound = true;\n\t\t\t\t\t\tiColumn = oSettings.aaSorting[i][0];\n\t\t\t\t\t\tiNextSort = oSettings.aaSorting[i][2]+1;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Reached the end of the sorting options, remove from multi-col sort */\n\t\t\t\t\t\t\toSettings.aaSorting.splice( i, 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* Move onto next sorting direction */\n\t\t\t\t\t\t\toSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\t\t\toSettings.aaSorting[i][2] = iNextSort;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* No sort yet - add it in */\n\t\t\t\tif ( bFound === false )\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t/* If no shift key then single column sort */\n\t\t\t\tif ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )\n\t\t\t\t{\n\t\t\t\t\tiColumn = oSettings.aaSorting[0][0];\n\t\t\t\t\tiNextSort = oSettings.aaSorting[0][2]+1;\n\t\t\t\t\tif ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )\n\t\t\t\t\t{\n\t\t\t\t\t\tiNextSort = 0;\n\t\t\t\t\t}\n\t\t\t\t\toSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];\n\t\t\t\t\toSettings.aaSorting[0][2] = iNextSort;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toSettings.aaSorting.splice( 0, oSettings.aaSorting.length );\n\t\t\t\t\toSettings.aaSorting.push( [ iDataIndex, \n\t\t\t\t\t\toSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Run the sort */\n\t\t\t_fnSort( oSettings );\n\t\t}; /* /fnInnerSorting */\n\t\t\n\t\tif ( !oSettings.oFeatures.bProcessing )\n\t\t{\n\t\t\tfnInnerSorting();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, true );\n\t\t\tsetTimeout( function() {\n\t\t\t\tfnInnerSorting();\n\t\t\t\tif ( !oSettings.oFeatures.bServerSide )\n\t\t\t\t{\n\t\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t}\n\t\t\n\t\t/* Call the user specified callback function - used for async user interaction */\n\t\tif ( typeof fnCallback == 'function' )\n\t\t{\n\t\t\tfnCallback( oSettings );\n\t\t}\n\t} );\n}\n\n\n/**\n * Set the sorting classes on the header, Note: it is safe to call this function \n * when bSort and bSortClasses are false\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSortingClasses( oSettings )\n{\n\tvar i, iLen, j, jLen, iFound;\n\tvar aaSort, sClass;\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar oClasses = oSettings.oClasses;\n\t\n\tfor ( i=0 ; i<iColumns ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t{\n\t\t\t$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +\" \"+ oClasses.sSortDesc +\n\t\t\t\t\" \"+ oSettings.aoColumns[i].sSortingClass );\n\t\t}\n\t}\n\t\n\tif ( oSettings.aaSortingFixed !== null )\n\t{\n\t\taaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );\n\t}\n\telse\n\t{\n\t\taaSort = oSettings.aaSorting.slice();\n\t}\n\t\n\t/* Apply the required classes to the header */\n\tfor ( i=0 ; i<oSettings.aoColumns.length ; i++ )\n\t{\n\t\tif ( oSettings.aoColumns[i].bSortable )\n\t\t{\n\t\t\tsClass = oSettings.aoColumns[i].sSortingClass;\n\t\t\tiFound = -1;\n\t\t\tfor ( j=0 ; j<aaSort.length ; j++ )\n\t\t\t{\n\t\t\t\tif ( aaSort[j][0] == i )\n\t\t\t\t{\n\t\t\t\t\tsClass = ( aaSort[j][1] == \"asc\" ) ?\n\t\t\t\t\t\toClasses.sSortAsc : oClasses.sSortDesc;\n\t\t\t\t\tiFound = j;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(oSettings.aoColumns[i].nTh).addClass( sClass );\n\t\t\t\n\t\t\tif ( oSettings.bJUI )\n\t\t\t{\n\t\t\t\t/* jQuery UI uses extra markup */\n\t\t\t\tvar jqSpan = $(\"span.\"+oClasses.sSortIcon,  oSettings.aoColumns[i].nTh);\n\t\t\t\tjqSpan.removeClass(oClasses.sSortJUIAsc +\" \"+ oClasses.sSortJUIDesc +\" \"+ \n\t\t\t\t\toClasses.sSortJUI +\" \"+ oClasses.sSortJUIAscAllowed +\" \"+ oClasses.sSortJUIDescAllowed );\n\t\t\t\t\n\t\t\t\tvar sSpanClass;\n\t\t\t\tif ( iFound == -1 )\n\t\t\t\t{\n\t\t\t\t \tsSpanClass = oSettings.aoColumns[i].sSortingClassJUI;\n\t\t\t\t}\n\t\t\t\telse if ( aaSort[iFound][1] == \"asc\" )\n\t\t\t\t{\n\t\t\t\t\tsSpanClass = oClasses.sSortJUIAsc;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsSpanClass = oClasses.sSortJUIDesc;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tjqSpan.addClass( sSpanClass );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* No sorting on this column, so add the base class. This will have been assigned by\n\t\t\t * _fnAddColumn\n\t\t\t */\n\t\t\t$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );\n\t\t}\n\t}\n\t\n\t/* \n\t * Apply the required classes to the table body\n\t * Note that this is given as a feature switch since it can significantly slow down a sort\n\t * on large data sets (adding and removing of classes is always slow at the best of times..)\n\t * Further to this, note that this code is admittedly fairly ugly. It could be made a lot \n\t * simpler using jQuery selectors and add/removeClass, but that is significantly slower\n\t * (on the order of 5 times slower) - hence the direct DOM manipulation here.\n\t * Note that for deferred drawing we do use jQuery - the reason being that taking the first\n\t * row found to see if the whole column needs processed can miss classes since the first\n\t * column might be new.\n\t */\n\tsClass = oClasses.sSortColumn;\n\t\n\tif ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )\n\t{\n\t\tvar nTds = _fnGetTdNodes( oSettings );\n\t\t\n\t\t/* Determine what the sorting class for each column should be */\n\t\tvar iClass, iTargetCol;\n\t\tvar asClasses = [];\n\t\tfor (i = 0; i < iColumns; i++)\n\t\t{\n\t\t\tasClasses.push(\"\");\n\t\t}\n\t\tfor (i = 0, iClass = 1; i < aaSort.length; i++)\n\t\t{\n\t\t\tiTargetCol = parseInt( aaSort[i][0], 10 );\n\t\t\tasClasses[iTargetCol] = sClass + iClass;\n\t\t\t\n\t\t\tif ( iClass < 3 )\n\t\t\t{\n\t\t\t\tiClass++;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Make changes to the classes for each cell as needed */\n\t\tvar reClass = new RegExp(sClass + \"[123]\");\n\t\tvar sTmpClass, sCurrentClass, sNewClass;\n\t\tfor ( i=0, iLen=nTds.length; i<iLen; i++ )\n\t\t{\n\t\t\t/* Determine which column we're looking at */\n\t\t\tiTargetCol = i % iColumns;\n\t\t\t\n\t\t\t/* What is the full list of classes now */\n\t\t\tsCurrentClass = nTds[i].className;\n\t\t\t/* What sorting class should be applied? */\n\t\t\tsNewClass = asClasses[iTargetCol];\n\t\t\t/* What would the new full list be if we did a replacement? */\n\t\t\tsTmpClass = sCurrentClass.replace(reClass, sNewClass);\n\t\t\t\n\t\t\tif ( sTmpClass != sCurrentClass )\n\t\t\t{\n\t\t\t\t/* We changed something */\n\t\t\t\tnTds[i].className = $.trim( sTmpClass );\n\t\t\t}\n\t\t\telse if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )\n\t\t\t{\n\t\t\t\t/* We need to add a class */\n\t\t\t\tnTds[i].className = sCurrentClass + \" \" + sNewClass;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.state.js",
    "content": "\n\n/**\n * Save the state of a table in a cookie such that the page can be reloaded\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSaveState ( oSettings )\n{\n\tif ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )\n\t{\n\t\treturn;\n\t}\n\n\t/* Store the interesting variables */\n\tvar i, iLen, bInfinite=oSettings.oScroll.bInfinite;\n\tvar oState = {\n\t\t\"iCreate\":      new Date().getTime(),\n\t\t\"iStart\":       (bInfinite ? 0 : oSettings._iDisplayStart),\n\t\t\"iEnd\":         (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),\n\t\t\"iLength\":      oSettings._iDisplayLength,\n\t\t\"aaSorting\":    $.extend( true, [], oSettings.aaSorting ),\n\t\t\"oSearch\":      $.extend( true, {}, oSettings.oPreviousSearch ),\n\t\t\"aoSearchCols\": $.extend( true, [], oSettings.aoPreSearchCols ),\n\t\t\"abVisCols\":    []\n\t};\n\n\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t{\n\t\toState.abVisCols.push( oSettings.aoColumns[i].bVisible );\n\t}\n\n\t_fnCallbackFire( oSettings, \"aoStateSaveParams\", 'stateSaveParams', [oSettings, oState] );\n\t\n\toSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );\n}\n\n\n/**\n * Attempt to load a saved table state from a cookie\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oInit DataTables init object so we can override settings\n *  @memberof DataTable#oApi\n */\nfunction _fnLoadState ( oSettings, oInit )\n{\n\tif ( !oSettings.oFeatures.bStateSave )\n\t{\n\t\treturn;\n\t}\n\n\tvar oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );\n\tif ( !oData )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t * cancelling of loading by returning false\n\t */\n\tvar abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );\n\tif ( $.inArray( false, abStateLoad ) !== -1 )\n\t{\n\t\treturn;\n\t}\n\t\n\t/* Store the saved state so it might be accessed at any time */\n\toSettings.oLoadedState = $.extend( true, {}, oData );\n\t\n\t/* Restore key features */\n\toSettings._iDisplayStart    = oData.iStart;\n\toSettings.iInitDisplayStart = oData.iStart;\n\toSettings._iDisplayEnd      = oData.iEnd;\n\toSettings._iDisplayLength   = oData.iLength;\n\toSettings.aaSorting         = oData.aaSorting.slice();\n\toSettings.saved_aaSorting   = oData.aaSorting.slice();\n\t\n\t/* Search filtering  */\n\t$.extend( oSettings.oPreviousSearch, oData.oSearch );\n\t$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );\n\t\n\t/* Column visibility state\n\t * Pass back visibility settings to the init handler, but to do not here override\n\t * the init object that the user might have passed in\n\t */\n\toInit.saved_aoColumns = [];\n\tfor ( var i=0 ; i<oData.abVisCols.length ; i++ )\n\t{\n\t\toInit.saved_aoColumns[i] = {};\n\t\toInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];\n\t}\n\n\t_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );\n}\n\n\n/**\n * Create a new cookie with a value to store the state of a table\n *  @param {string} sName name of the cookie to create\n *  @param {string} sValue the value the cookie should take\n *  @param {int} iSecs duration of the cookie\n *  @param {string} sBaseName sName is made up of the base + file name - this is the base\n *  @param {function} fnCallback User definable function to modify the cookie\n *  @memberof DataTable#oApi\n */\nfunction _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )\n{\n\tvar date = new Date();\n\tdate.setTime( date.getTime()+(iSecs*1000) );\n\t\n\t/* \n\t * Shocking but true - it would appear IE has major issues with having the path not having\n\t * a trailing slash on it. We need the cookie to be available based on the path, so we\n\t * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the\n\t * patch to use at least some of the path\n\t */\n\tvar aParts = window.location.pathname.split('/');\n\tvar sNameFile = sName + '_' + aParts.pop().replace(/[\\/:]/g,\"\").toLowerCase();\n\tvar sFullCookie, oData;\n\t\n\tif ( fnCallback !== null )\n\t{\n\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t$.parseJSON( sValue ) : eval( '('+sValue+')' );\n\t\tsFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),\n\t\t\taParts.join('/')+\"/\" );\n\t}\n\telse\n\t{\n\t\tsFullCookie = sNameFile + \"=\" + encodeURIComponent(sValue) +\n\t\t\t\"; expires=\" + date.toGMTString() +\"; path=\" + aParts.join('/')+\"/\";\n\t}\n\t\n\t/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies\n\t * belonging to DataTables.\n\t */\n\tvar\n\t\taCookies =document.cookie.split(';'),\n\t\tiNewCookieLen = sFullCookie.split(';')[0].length,\n\t\taOldCookies = [];\n\t\n\tif ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */\n\t{\n\t\tfor ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( aCookies[i].indexOf( sBaseName ) != -1 )\n\t\t\t{\n\t\t\t\t/* It's a DataTables cookie, so eval it and check the time stamp */\n\t\t\t\tvar aSplitCookie = aCookies[i].split('=');\n\t\t\t\ttry {\n\t\t\t\t\toData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );\n\n\t\t\t\t\tif ( oData && oData.iCreate )\n\t\t\t\t\t{\n\t\t\t\t\t\taOldCookies.push( {\n\t\t\t\t\t\t\t\"name\": aSplitCookie[0],\n\t\t\t\t\t\t\t\"time\": oData.iCreate\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch( e ) {}\n\t\t\t}\n\t\t}\n\n\t\t// Make sure we delete the oldest ones first\n\t\taOldCookies.sort( function (a, b) {\n\t\t\treturn b.time - a.time;\n\t\t} );\n\n\t\t// Eliminate as many old DataTables cookies as we need to\n\t\twhile ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {\n\t\t\tif ( aOldCookies.length === 0 ) {\n\t\t\t\t// Deleted all DT cookies and still not enough space. Can't state save\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar old = aOldCookies.pop();\n\t\t\tdocument.cookie = old.name+\"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=\"+\n\t\t\t\taParts.join('/') + \"/\";\n\t\t}\n\t}\n\t\n\tdocument.cookie = sFullCookie;\n}\n\n\n/**\n * Read an old cookie to get a cookie with an old table state\n *  @param {string} sName name of the cookie to read\n *  @returns {string} contents of the cookie - or null if no cookie with that name found\n *  @memberof DataTable#oApi\n */\nfunction _fnReadCookie ( sName )\n{\n\tvar\n\t\taParts = window.location.pathname.split('/'),\n\t\tsNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\\/:]/g,\"\").toLowerCase() + '=',\n\t \tsCookieContents = document.cookie.split(';');\n\t\n\tfor( var i=0 ; i<sCookieContents.length ; i++ )\n\t{\n\t\tvar c = sCookieContents[i];\n\t\t\n\t\twhile (c.charAt(0)==' ')\n\t\t{\n\t\t\tc = c.substring(1,c.length);\n\t\t}\n\t\t\n\t\tif (c.indexOf(sNameEQ) === 0)\n\t\t{\n\t\t\treturn decodeURIComponent( c.substring(sNameEQ.length,c.length) );\n\t\t}\n\t}\n\treturn null;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/core/core.support.js",
    "content": "\n/**\n * Return the settings object for a particular table\n *  @param {node} nTable table we are using as a dataTable\n *  @returns {object} Settings object - or null if not found\n *  @memberof DataTable#oApi\n */\nfunction _fnSettingsFromNode ( nTable )\n{\n\tfor ( var i=0 ; i<DataTable.settings.length ; i++ )\n\t{\n\t\tif ( DataTable.settings[i].nTable === nTable )\n\t\t{\n\t\t\treturn DataTable.settings[i];\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\n\n/**\n * Return an array with the TR nodes for the table\n *  @param {object} oSettings dataTables settings object\n *  @returns {array} TR array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetTrNodes ( oSettings )\n{\n\tvar aNodes = [];\n\tvar aoData = oSettings.aoData;\n\tfor ( var i=0, iLen=aoData.length ; i<iLen ; i++ )\n\t{\n\t\tif ( aoData[i].nTr !== null )\n\t\t{\n\t\t\taNodes.push( aoData[i].nTr );\n\t\t}\n\t}\n\treturn aNodes;\n}\n\n\n/**\n * Return an flat array with all TD nodes for the table, or row\n *  @param {object} oSettings dataTables settings object\n *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional \n *    if not given then the return array will contain all nodes for the table\n *  @returns {array} TD array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetTdNodes ( oSettings, iIndividualRow )\n{\n\tvar anReturn = [];\n\tvar iCorrector;\n\tvar anTds, nTd;\n\tvar iRow, iRows=oSettings.aoData.length,\n\t\tiColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;\n\t\n\t/* Allow the collection to be limited to just one row */\n\tif ( iIndividualRow !== undefined )\n\t{\n\t\tiStart = iIndividualRow;\n\t\tiEnd = iIndividualRow+1;\n\t}\n\n\tfor ( iRow=iStart ; iRow<iEnd ; iRow++ )\n\t{\n\t\toData = oSettings.aoData[iRow];\n\t\tif ( oData.nTr !== null )\n\t\t{\n\t\t\t/* get the TD child nodes - taking into account text etc nodes */\n\t\t\tanTds = [];\n\t\t\tnTd = oData.nTr.firstChild;\n\t\t\twhile ( nTd )\n\t\t\t{\n\t\t\t\tsNodeName = nTd.nodeName.toLowerCase();\n\t\t\t\tif ( sNodeName == 'td' || sNodeName == 'th' )\n\t\t\t\t{\n\t\t\t\t\tanTds.push( nTd );\n\t\t\t\t}\n\t\t\t\tnTd = nTd.nextSibling;\n\t\t\t}\n\n\t\t\tiCorrector = 0;\n\t\t\tfor ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )\n\t\t\t{\n\t\t\t\tif ( oSettings.aoColumns[iColumn].bVisible )\n\t\t\t\t{\n\t\t\t\t\tanReturn.push( anTds[iColumn-iCorrector] );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tanReturn.push( oData._anHidden[iColumn] );\n\t\t\t\t\tiCorrector++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn anReturn;\n}\n\n\n/**\n * Log an error message\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iLevel log error messages, or display them to the user\n *  @param {string} sMesg error message\n *  @memberof DataTable#oApi\n */\nfunction _fnLog( oSettings, iLevel, sMesg )\n{\n\tvar sAlert = (oSettings===null) ?\n\t\t\"DataTables warning: \"+sMesg :\n\t\t\"DataTables warning (table id = '\"+oSettings.sTableId+\"'): \"+sMesg;\n\t\n\tif ( iLevel === 0 )\n\t{\n\t\tif ( DataTable.ext.sErrMode == 'alert' )\n\t\t{\n\t\t\talert( sAlert );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(sAlert);\n\t\t}\n\t\treturn;\n\t}\n\telse if ( window.console && console.log )\n\t{\n\t\tconsole.log( sAlert );\n\t}\n}\n\n\n/**\n * See if a property is defined on one object, if so assign it to the other object\n *  @param {object} oRet target object\n *  @param {object} oSrc source object\n *  @param {string} sName property\n *  @param {string} [sMappedName] name to map too - optional, sName used if not given\n *  @memberof DataTable#oApi\n */\nfunction _fnMap( oRet, oSrc, sName, sMappedName )\n{\n\tif ( sMappedName === undefined )\n\t{\n\t\tsMappedName = sName;\n\t}\n\tif ( oSrc[sName] !== undefined )\n\t{\n\t\toRet[sMappedName] = oSrc[sName];\n\t}\n}\n\n\n/**\n * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow\n * copy arrays. The reason we need to do this, is that we don't want to deep copy array\n * init values (such as aaSorting) since the dev wouldn't be able to override them, but\n * we do want to deep copy arrays.\n *  @param {object} oOut Object to extend\n *  @param {object} oExtender Object from which the properties will be applied to oOut\n *  @returns {object} oOut Reference, just for convenience - oOut === the return.\n *  @memberof DataTable#oApi\n *  @todo This doesn't take account of arrays inside the deep copied objects.\n */\nfunction _fnExtend( oOut, oExtender )\n{\n\tvar val;\n\t\n\tfor ( var prop in oExtender )\n\t{\n\t\tif ( oExtender.hasOwnProperty(prop) )\n\t\t{\n\t\t\tval = oExtender[prop];\n\n\t\t\tif ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )\n\t\t\t{\n\t\t\t\t$.extend( true, oOut[prop], val );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toOut[prop] = val;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oOut;\n}\n\n\n/**\n * Bind an event handers to allow a click or return key to activate the callback.\n * This is good for accessibility since a return on the keyboard will have the\n * same effect as a click, if the element has focus.\n *  @param {element} n Element to bind the action to\n *  @param {object} oData Data object to pass to the triggered function\n *  @param {function} fn Callback function for when the event is triggered\n *  @memberof DataTable#oApi\n */\nfunction _fnBindAction( n, oData, fn )\n{\n\t$(n)\n\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\tfn(e);\n\t\t\t} )\n\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\tif ( e.which === 13 ) {\n\t\t\t\tfn(e);\n\t\t\t} } )\n\t\t.bind( 'selectstart.DT', function () {\n\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\treturn false;\n\t\t\t} );\n}\n\n\n/**\n * Register a callback function. Easily allows a callback function to be added to\n * an array store of callback functions that can then all be called together.\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n *  @param {function} fn Function to be called back\n *  @param {string} sName Identifying name for the callback (i.e. a label)\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n{\n\tif ( fn )\n\t{\n\t\toSettings[sStore].push( {\n\t\t\t\"fn\": fn,\n\t\t\t\"sName\": sName\n\t\t} );\n\t}\n}\n\n\n/**\n * Fire callback functions and trigger events. Note that the loop over the callback\n * array store is done backwards! Further note that you do not want to fire off triggers\n * in time sensitive applications (for example cell creation) as its slow.\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger\n *    is fired\n *  @param {array} aArgs Array of arguments to pass to the callback function / trigger\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )\n{\n\tvar aoStore = oSettings[sStore];\n\tvar aRet =[];\n\n\tfor ( var i=aoStore.length-1 ; i>=0 ; i-- )\n\t{\n\t\taRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );\n\t}\n\n\tif ( sTrigger !== null )\n\t{\n\t\t$(oSettings.oInstance).trigger(sTrigger, aArgs);\n\t}\n\n\treturn aRet;\n}\n\n\n/**\n * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other\n * library, then we use that as it is fast, safe and accurate. If the function isn't \n * available then we need to built it ourselves - the inspiration for this function comes\n * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is\n * not perfect and absolutely should not be used as a replacement to json2.js - but it does\n * do what we need, without requiring a dependency for DataTables.\n *  @param {object} o JSON object to be converted\n *  @returns {string} JSON string\n *  @memberof DataTable#oApi\n */\nvar _fnJsonString = (window.JSON) ? JSON.stringify : function( o )\n{\n\t/* Not an object or array */\n\tvar sType = typeof o;\n\tif (sType !== \"object\" || o === null)\n\t{\n\t\t// simple data type\n\t\tif (sType === \"string\")\n\t\t{\n\t\t\to = '\"'+o+'\"';\n\t\t}\n\t\treturn o+\"\";\n\t}\n\n\t/* If object or array, need to recurse over it */\n\tvar\n\t\tsProp, mValue,\n\t\tjson = [],\n\t\tbArr = $.isArray(o);\n\t\n\tfor (sProp in o)\n\t{\n\t\tmValue = o[sProp];\n\t\tsType = typeof mValue;\n\n\t\tif (sType === \"string\")\n\t\t{\n\t\t\tmValue = '\"'+mValue+'\"';\n\t\t}\n\t\telse if (sType === \"object\" && mValue !== null)\n\t\t{\n\t\t\tmValue = _fnJsonString(mValue);\n\t\t}\n\n\t\tjson.push((bArr ? \"\" : '\"'+sProp+'\":') + mValue);\n\t}\n\n\treturn (bArr ? \"[\" : \"{\") + json + (bArr ? \"]\" : \"}\");\n};\n\n\n/**\n * From some browsers (specifically IE6/7) we need special handling to work around browser\n * bugs - this function is used to detect when these workarounds are needed.\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBrowserDetect( oSettings )\n{\n\t/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the\n\t * width of the scrollbar, while other browsers ensure the inner element is contained\n\t * without forcing scrolling\n\t */\n\tvar n = $(\n\t\t'<div style=\"position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden\">'+\n\t\t\t'<div style=\"position:absolute; top:1px; left:1px; width:100px; overflow:scroll;\">'+\n\t\t\t\t'<div id=\"DT_BrowserTest\" style=\"width:100%; height:10px;\"></div>'+\n\t\t\t'</div>'+\n\t\t'</div>')[0];\n\n\tdocument.body.appendChild( n );\n\toSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;\n\tdocument.body.removeChild( n );\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.classes.js",
    "content": "\n$.extend( DataTable.ext.oStdClasses, {\n\t\"sTable\": \"dataTable\",\n\n\t/* Two buttons buttons */\n\t\"sPagePrevEnabled\": \"paginate_enabled_previous\",\n\t\"sPagePrevDisabled\": \"paginate_disabled_previous\",\n\t\"sPageNextEnabled\": \"paginate_enabled_next\",\n\t\"sPageNextDisabled\": \"paginate_disabled_next\",\n\t\"sPageJUINext\": \"\",\n\t\"sPageJUIPrev\": \"\",\n\t\n\t/* Full numbers paging buttons */\n\t\"sPageButton\": \"paginate_button\",\n\t\"sPageButtonActive\": \"paginate_active\",\n\t\"sPageButtonStaticDisabled\": \"paginate_button paginate_button_disabled\",\n\t\"sPageFirst\": \"first\",\n\t\"sPagePrevious\": \"previous\",\n\t\"sPageNext\": \"next\",\n\t\"sPageLast\": \"last\",\n\t\n\t/* Striping classes */\n\t\"sStripeOdd\": \"odd\",\n\t\"sStripeEven\": \"even\",\n\t\n\t/* Empty row */\n\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t/* Features */\n\t\"sWrapper\": \"dataTables_wrapper\",\n\t\"sFilter\": \"dataTables_filter\",\n\t\"sInfo\": \"dataTables_info\",\n\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\"sLength\": \"dataTables_length\",\n\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t/* Sorting */\n\t\"sSortAsc\": \"sorting_asc\",\n\t\"sSortDesc\": \"sorting_desc\",\n\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\"sSortableNone\": \"sorting_disabled\",\n\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\"sSortJUIAsc\": \"\",\n\t\"sSortJUIDesc\": \"\",\n\t\"sSortJUI\": \"\",\n\t\"sSortJUIAscAllowed\": \"\",\n\t\"sSortJUIDescAllowed\": \"\",\n\t\"sSortJUIWrapper\": \"\",\n\t\"sSortIcon\": \"\",\n\t\n\t/* Scrolling */\n\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t/* Misc */\n\t\"sFooterTH\": \"\",\n\t\"sJUIHeader\": \"\",\n\t\"sJUIFooter\": \"\"\n} );\n\n\n$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {\n\t/* Two buttons buttons */\n\t\"sPagePrevEnabled\": \"fg-button ui-button ui-state-default ui-corner-left\",\n\t\"sPagePrevDisabled\": \"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled\",\n\t\"sPageNextEnabled\": \"fg-button ui-button ui-state-default ui-corner-right\",\n\t\"sPageNextDisabled\": \"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled\",\n\t\"sPageJUINext\": \"ui-icon ui-icon-circle-arrow-e\",\n\t\"sPageJUIPrev\": \"ui-icon ui-icon-circle-arrow-w\",\n\t\n\t/* Full numbers paging buttons */\n\t\"sPageButton\": \"fg-button ui-button ui-state-default\",\n\t\"sPageButtonActive\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\"sPageButtonStaticDisabled\": \"fg-button ui-button ui-state-default ui-state-disabled\",\n\t\"sPageFirst\": \"first ui-corner-tl ui-corner-bl\",\n\t\"sPageLast\": \"last ui-corner-tr ui-corner-br\",\n\t\n\t/* Features */\n\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\n\t/* Sorting */\n\t\"sSortAsc\": \"ui-state-default\",\n\t\"sSortDesc\": \"ui-state-default\",\n\t\"sSortable\": \"ui-state-default\",\n\t\"sSortableAsc\": \"ui-state-default\",\n\t\"sSortableDesc\": \"ui-state-default\",\n\t\"sSortableNone\": \"ui-state-default\",\n\t\"sSortJUIAsc\": \"css_right ui-icon ui-icon-triangle-1-n\",\n\t\"sSortJUIDesc\": \"css_right ui-icon ui-icon-triangle-1-s\",\n\t\"sSortJUI\": \"css_right ui-icon ui-icon-carat-2-n-s\",\n\t\"sSortJUIAscAllowed\": \"css_right ui-icon ui-icon-carat-1-n\",\n\t\"sSortJUIDescAllowed\": \"css_right ui-icon ui-icon-carat-1-s\",\n\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\n\t/* Scrolling */\n\t\"sScrollHead\": \"dataTables_scrollHead ui-state-default\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot ui-state-default\",\n\t\n\t/* Misc */\n\t\"sFooterTH\": \"ui-state-default\",\n\t\"sJUIHeader\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix\",\n\t\"sJUIFooter\": \"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix\"\n} );\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.paging.js",
    "content": "/*\n * Variable: oPagination\n * Purpose:  \n * Scope:    jQuery.fn.dataTableExt\n */\n$.extend( DataTable.ext.oPagination, {\n\t/*\n\t * Variable: two_button\n\t * Purpose:  Standard two button (forward/back) pagination\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"two_button\": {\n\t\t/*\n\t\t * Function: oPagination.two_button.fnInit\n\t\t * Purpose:  Initialise dom elements required for pagination with forward/back buttons only\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t */\n\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t{\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t{\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar sAppend = (!oSettings.bJUI) ?\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+'</a>'\n\t\t\t\t:\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUIPrev+'\"></span></a>'+\n\t\t\t\t'<a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oClasses.sPageJUINext+'\"></span></a>';\n\t\t\t$(nPaging).append( sAppend );\n\t\t\t\n\t\t\tvar els = $('a', nPaging);\n\t\t\tvar nPrevious = els[0],\n\t\t\t\tnNext = els[1];\n\t\t\t\n\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nNext,     {action: \"next\"},     fnClickHandler );\n\t\t\t\n\t\t\t/* ID the first elements only */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\n\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: oPagination.two_button.fnUpdate\n\t\t * Purpose:  Update the two button pagination at the end of the draw\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t */\n\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t{\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar nNode;\n\n\t\t\t/* Loop over each instance of the pager */\n\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnNode = an[i].firstChild;\n\t\t\t\tif ( nNode )\n\t\t\t\t{\n\t\t\t\t\t/* Previous page */\n\t\t\t\t\tnNode.className = ( oSettings._iDisplayStart === 0 ) ?\n\t\t\t\t\t    oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;\n\t\t\t\t\t    \n\t\t\t\t\t/* Next page */\n\t\t\t\t\tnNode = nNode.nextSibling;\n\t\t\t\t\tnNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?\n\t\t\t\t\t    oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t\n\t\n\t/*\n\t * Variable: iFullNumbersShowPages\n\t * Purpose:  Change the number of pages which can be seen\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"iFullNumbersShowPages\": 5,\n\t\n\t/*\n\t * Variable: full_numbers\n\t * Purpose:  Full numbers pagination\n\t * Scope:    jQuery.fn.dataTableExt.oPagination\n\t */\n\t\"full_numbers\": {\n\t\t/*\n\t\t * Function: oPagination.full_numbers.fnInit\n\t\t * Purpose:  Initialise dom elements required for pagination with a list of the pages\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           node:nPaging - the DIV which contains this pagination control\n\t\t *           function:fnCallbackDraw - draw function which must be called on update\n\t\t */\n\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t{\n\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t{\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(nPaging).append(\n\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a>'+\n\t\t\t\t'<a  tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a>'+\n\t\t\t\t'<span></span>'+\n\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a>'+\n\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a>'\n\t\t\t);\n\t\t\tvar els = $('a', nPaging);\n\t\t\tvar nFirst = els[0],\n\t\t\t\tnPrev = els[1],\n\t\t\t\tnNext = els[2],\n\t\t\t\tnLast = els[3];\n\t\t\t\n\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"},    fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nPrev,  {action: \"previous\"}, fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nNext,  {action: \"next\"},     fnClickHandler );\n\t\t\toSettings.oApi._fnBindAction( nLast,  {action: \"last\"},     fnClickHandler );\n\t\t\t\n\t\t\t/* ID the first elements only */\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t}\n\t\t},\n\t\t\n\t\t/*\n\t\t * Function: oPagination.full_numbers.fnUpdate\n\t\t * Purpose:  Update the list of page buttons shows\n\t\t * Returns:  -\n\t\t * Inputs:   object:oSettings - dataTables settings object\n\t\t *           function:fnCallbackDraw - draw function to call on page change\n\t\t */\n\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t{\n\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;\n\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\tvar sList = \"\";\n\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\tvar fnBind = function (j) {\n\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t/* Use the information in the element to jump to the required page */\n\t\t\t\t\toSettings.oApi._fnPageChange( oSettings, e.data.page );\n\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\te.preventDefault();\n\t\t\t\t} );\n\t\t\t};\n\t\t\t\n\t\t\t/* Pages calculation */\n\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = 1;\n\t\t\t\tiCurrentPage = 1;\n\t\t\t}\n\t\t\telse if (iPages < iPageCount)\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = iPages;\n\t\t\t}\n\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t{\n\t\t\t\tiStartButton = 1;\n\t\t\t\tiEndButton = iPageCount;\n\t\t\t}\n\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t{\n\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\tiEndButton = iPages;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t}\n\n\t\t\t\n\t\t\t/* Build the dynamic list */\n\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t{\n\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+'\">'+oSettings.fnFormatNumber(i)+'</a>' :\n\t\t\t\t\t'<a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButtonActive+'\">'+oSettings.fnFormatNumber(i)+'</a>';\n\t\t\t}\n\t\t\t\n\t\t\t/* Loop over each instance of the pager */\n\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tnNode = an[i];\n\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t/* Build up the dynamic list first - html and listeners */\n\t\t\t\t$('span:eq(0)', nNode)\n\t\t\t\t\t.html( sList )\n\t\t\t\t\t.children('a').each( fnBind );\n\t\t\t\t\n\t\t\t\t/* Update the permanent button's classes */\n\t\t\t\tanButtons = nNode.getElementsByTagName('a');\n\t\t\t\tanStatic = [\n\t\t\t\t\tanButtons[0], anButtons[1], \n\t\t\t\t\tanButtons[anButtons.length-2], anButtons[anButtons.length-1]\n\t\t\t\t];\n\n\t\t\t\t$(anStatic).removeClass( oClasses.sPageButton+\" \"+oClasses.sPageButtonActive+\" \"+oClasses.sPageButtonStaticDisabled );\n\t\t\t\t$([anStatic[0], anStatic[1]]).addClass( \n\t\t\t\t\t(iCurrentPage==1) ?\n\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t);\n\t\t\t\t$([anStatic[2], anStatic[3]]).addClass(\n\t\t\t\t\t(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?\n\t\t\t\t\t\toClasses.sPageButtonStaticDisabled :\n\t\t\t\t\t\toClasses.sPageButton\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n} );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.sorting.js",
    "content": "\n$.extend( DataTable.ext.oSort, {\n\t/*\n\t * text sorting\n\t */\n\t\"string-pre\": function ( a )\n\t{\n\t\tif ( typeof a != 'string' ) {\n\t\t\ta = (a !== null && a.toString) ? a.toString() : '';\n\t\t}\n\t\treturn a.toLowerCase();\n\t},\n\n\t\"string-asc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t},\n\t\n\t\"string-desc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t},\n\t\n\t\n\t/*\n\t * html sorting (ignore html tags)\n\t */\n\t\"html-pre\": function ( a )\n\t{\n\t\treturn a.replace( /<.*?>/g, \"\" ).toLowerCase();\n\t},\n\t\n\t\"html-asc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t},\n\t\n\t\"html-desc\": function ( x, y )\n\t{\n\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t},\n\t\n\t\n\t/*\n\t * date sorting\n\t */\n\t\"date-pre\": function ( a )\n\t{\n\t\tvar x = Date.parse( a );\n\t\t\n\t\tif ( isNaN(x) || x===\"\" )\n\t\t{\n\t\t\tx = Date.parse( \"01/01/1970 00:00:00\" );\n\t\t}\n\t\treturn x;\n\t},\n\n\t\"date-asc\": function ( x, y )\n\t{\n\t\treturn x - y;\n\t},\n\t\n\t\"date-desc\": function ( x, y )\n\t{\n\t\treturn y - x;\n\t},\n\t\n\t\n\t/*\n\t * numerical sorting\n\t */\n\t\"numeric-pre\": function ( a )\n\t{\n\t\treturn (a==\"-\" || a===\"\") ? 0 : a*1;\n\t},\n\n\t\"numeric-asc\": function ( x, y )\n\t{\n\t\treturn x - y;\n\t},\n\t\n\t\"numeric-desc\": function ( x, y )\n\t{\n\t\treturn y - x;\n\t}\n} );\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/ext/ext.types.js",
    "content": "\n\n$.extend( DataTable.ext.aTypes, [\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string is numeric\n\t * Returns:  string:'numeric' or null\n\t * Inputs:   mixed:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\t/* Allow zero length strings as a number */\n\t\tif ( typeof sData === 'number' )\n\t\t{\n\t\t\treturn 'numeric';\n\t\t}\n\t\telse if ( typeof sData !== 'string' )\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tvar sValidFirstChars = \"0123456789-\";\n\t\tvar sValidChars = \"0123456789.\";\n\t\tvar Char;\n\t\tvar bDecimal = false;\n\t\t\n\t\t/* Check for a valid first char (no period and allow negatives) */\n\t\tChar = sData.charAt(0); \n\t\tif (sValidFirstChars.indexOf(Char) == -1) \n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t/* Check all the other characters are valid */\n\t\tfor ( var i=1 ; i<sData.length ; i++ ) \n\t\t{\n\t\t\tChar = sData.charAt(i); \n\t\t\tif (sValidChars.indexOf(Char) == -1) \n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t/* Only allowed one decimal place... */\n\t\t\tif ( Char == \".\" )\n\t\t\t{\n\t\t\t\tif ( bDecimal )\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tbDecimal = true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn 'numeric';\n\t},\n\t\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string is actually a formatted date\n\t * Returns:  string:'date' or null\n\t * Inputs:   string:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\tvar iParse = Date.parse(sData);\n\t\tif ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )\n\t\t{\n\t\t\treturn 'date';\n\t\t}\n\t\treturn null;\n\t},\n\t\n\t/*\n\t * Function: -\n\t * Purpose:  Check to see if a string should be treated as an HTML string\n\t * Returns:  string:'html' or null\n\t * Inputs:   string:sText - string to check\n\t */\n\tfunction ( sData )\n\t{\n\t\tif ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )\n\t\t{\n\t\t\treturn 'html';\n\t\t}\n\t\treturn null;\n\t}\n] );\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.column.js",
    "content": "\n\n\n/**\n * Template object for the column information object in DataTables. This object\n * is held in the settings aoColumns array and contains all the information that\n * DataTables needs about each individual column.\n * \n * Note that this object is related to {@link DataTable.defaults.columns} \n * but this one is the internal data store for DataTables's cache of columns.\n * It should NOT be manipulated outside of DataTables. Any configuration should\n * be done through the initialisation options.\n *  @namespace\n */\nDataTable.models.oColumn = {\n\t/**\n\t * A list of the columns that sorting should occur on when this column\n\t * is sorted. That this property is an array allows multi-column sorting\n\t * to be defined for a column (for example first name / last name columns\n\t * would benefit from this). The values are integers pointing to the\n\t * columns to be sorted on (typically it will be a single integer pointing\n\t * at itself, but that doesn't need to be the case).\n\t *  @type array\n\t */\n\t\"aDataSort\": null,\n\n\t/**\n\t * Define the sorting directions that are applied to the column, in sequence\n\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t * as the sorting direction when the column if first sorted (clicked on).\n\t * Sort it again (click again) and it will move on to the next index.\n\t * Repeat until loop.\n\t *  @type array\n\t */\n\t\"asSorting\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is searchable, and thus should be included\n\t * in the filtering or not.\n\t *  @type boolean\n\t */\n\t\"bSearchable\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is sortable or not.\n\t *  @type boolean\n\t */\n\t\"bSortable\": null,\n\t\n\t/**\n\t * <code>Deprecated</code> When using fnRender, you have two options for what \n\t * to do with the data, and this property serves as the switch. Firstly, you \n\t * can have the sorting and filtering use the rendered value (true - default), \n\t * or you can have the sorting and filtering us the original value (false).\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type boolean\n\t *  @deprecated\n\t */\n\t\"bUseRendered\": null,\n\t\n\t/**\n\t * Flag to indicate if the column is currently visible in the table or not\n\t *  @type boolean\n\t */\n\t\"bVisible\": null,\n\t\n\t/**\n\t * Flag to indicate to the type detection method if the automatic type\n\t * detection should be used, or if a column type (sType) has been specified\n\t *  @type boolean\n\t *  @default true\n\t *  @private\n\t */\n\t\"_bAutoType\": true,\n\t\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} nTd The TD node that has been created\n\t *  @param {*} sData The Data for the cell\n\t *  @param {array|object} oData The data for the whole row\n\t *  @param {int} iRow The row index for the aoData data store\n\t *  @default null\n\t */\n\t\"fnCreatedCell\": null,\n\t\n\t/**\n\t * Function to get data from a cell in a column. You should <b>never</b>\n\t * access data directly through _aData internally in DataTables - always use\n\t * the method attached to this property. It allows mData to function as\n\t * required. This function is automatically assigned by the column \n\t * initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array \n\t *    (i.e. aoData[]._aData)\n\t *  @param {string} sSpecific The specific data type you want to get - \n\t *    'display', 'type' 'filter' 'sort'\n\t *  @returns {*} The data for the cell from the given row's data\n\t *  @default null\n\t */\n\t\"fnGetData\": null,\n\t\n\t/**\n\t * <code>Deprecated</code> Custom display function that will be called for the \n\t * display of each cell in this column.\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type function\n\t *  @param {object} o Object with the following parameters:\n\t *  @param {int}    o.iDataRow The row in aoData\n\t *  @param {int}    o.iDataColumn The column in question\n\t *  @param {array}  o.aData The data for the row in question\n\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t *  @returns {string} The string you which to use in the display\n\t *  @default null\n\t *  @deprecated\n\t */\n\t\"fnRender\": null,\n\t\n\t/**\n\t * Function to set data for a cell in the column. You should <b>never</b> \n\t * set the data directly to _aData internally in DataTables - always use\n\t * this method. It allows mData to function as required. This function\n\t * is automatically assigned by the column initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array \n\t *    (i.e. aoData[]._aData)\n\t *  @param {*} sValue Value to set\n\t *  @default null\n\t */\n\t\"fnSetData\": null,\n\t\n\t/**\n\t * Property to read the value for the cells in the column from the data \n\t * source array / object. If null, then the default content is used, if a\n\t * function is given then the return from the function is used.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mData\": null,\n\t\n\t/**\n\t * Partner property to mData which is used (only when defined) to get\n\t * the data - i.e. it is basically the same as mData, but without the\n\t * 'set' option, and also the data fed to it is the result from mData.\n\t * This is the rendering method to match the data method of mData.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mRender\": null,\n\t\n\t/**\n\t * Unique header TH/TD element for this column - this is what the sorting\n\t * listener is attached to (if sorting is enabled.)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTh\": null,\n\t\n\t/**\n\t * Unique footer TH/TD element for this column (if there is one). Not used \n\t * in DataTables as such, but can be used for plug-ins to reference the \n\t * footer for each column.\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTf\": null,\n\t\n\t/**\n\t * The class to apply to all TD elements in the table's TBODY for the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sClass\": null,\n\t\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t *  @type string\n\t */\n\t\"sContentPadding\": null,\n\t\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because mData\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDefaultContent\": null,\n\t\n\t/**\n\t * Name for the column, allowing reference to the column by name as well as\n\t * by index (needs a lookup to work by name).\n\t *  @type string\n\t */\n\t\"sName\": null,\n\t\n\t/**\n\t * Custom sorting data type - defines which of the available plug-ins in\n\t * afnSortData the custom sorting will use - if any is defined.\n\t *  @type string\n\t *  @default std\n\t */\n\t\"sSortDataType\": 'std',\n\t\n\t/**\n\t * Class to be applied to the header element when sorting on this column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClass\": null,\n\t\n\t/**\n\t * Class to be applied to the header element when sorting on this column -\n\t * when jQuery UI theming is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClassJUI\": null,\n\t\n\t/**\n\t * Title of the column - what is seen in the TH element (nTh).\n\t *  @type string\n\t */\n\t\"sTitle\": null,\n\t\n\t/**\n\t * Column sorting and filtering type\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sType\": null,\n\t\n\t/**\n\t * Width of the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidth\": null,\n\t\n\t/**\n\t * Width of the column when it was first \"encountered\"\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidthOrig\": null\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.columns.js",
    "content": "\n\n/**\n * Column options that can be given to DataTables at initialisation time.\n *  @namespace\n */\nDataTable.defaults.columns = {\n\t/**\n\t * Allows a column's sorting to take multiple columns into account when \n\t * doing a sort. For example first name / last name columns make sense to \n\t * do a multi-column sort over the two columns.\n\t *  @type array\n\t *  @default null <i>Takes the value of the column index automatically</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"aDataSort\": [ 0, 1 ], \"aTargets\": [ 0 ] },\n\t *          { \"aDataSort\": [ 1, 0 ], \"aTargets\": [ 1 ] },\n\t *          { \"aDataSort\": [ 2, 3, 4 ], \"aTargets\": [ 2 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          { \"aDataSort\": [ 0, 1 ] },\n\t *          { \"aDataSort\": [ 1, 0 ] },\n\t *          { \"aDataSort\": [ 2, 3, 4 ] },\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aDataSort\": null,\n\n\n\t/**\n\t * You can control the default sorting direction, and even alter the behaviour\n\t * of the sort handler (i.e. only allow ascending sorting etc) using this\n\t * parameter.\n\t *  @type array\n\t *  @default [ 'asc', 'desc' ]\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"asSorting\": [ \"asc\" ], \"aTargets\": [ 1 ] },\n\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ], \"aTargets\": [ 2 ] },\n\t *          { \"asSorting\": [ \"desc\" ], \"aTargets\": [ 3 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          null,\n\t *          { \"asSorting\": [ \"asc\" ] },\n\t *          { \"asSorting\": [ \"desc\", \"asc\", \"asc\" ] },\n\t *          { \"asSorting\": [ \"desc\" ] },\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"asSorting\": [ 'asc', 'desc' ],\n\n\n\t/**\n\t * Enable or disable filtering on the data in this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bSearchable\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bSearchable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSearchable\": true,\n\n\n\t/**\n\t * Enable or disable sorting on this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bSortable\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bSortable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSortable\": true,\n\n\n\t/**\n\t * <code>Deprecated</code> When using fnRender() for a column, you may wish \n\t * to use the original data (before rendering) for sorting and filtering \n\t * (the default is to used the rendered data that the user can see). This \n\t * may be useful for dates etc.\n\t * \n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t *  @deprecated\n\t */\n\t\"bUseRendered\": true,\n\n\n\t/**\n\t * Enable or disable the display of this column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"bVisible\": false, \"aTargets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"bVisible\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bVisible\": true,\n\t\n\t\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} nTd The TD node that has been created\n\t *  @param {*} sData The Data for the cell\n\t *  @param {array|object} oData The data for the whole row\n\t *  @param {int} iRow The row index for the aoData data store\n\t *  @param {int} iCol The column index for aoColumns\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [3],\n\t *          \"fnCreatedCell\": function (nTd, sData, oData, iRow, iCol) {\n\t *            if ( sData == \"1.7\" ) {\n\t *              $(nTd).css('color', 'blue')\n\t *            }\n\t *          }\n\t *        } ]\n\t *      });\n\t *    } );\n\t */\n\t\"fnCreatedCell\": null,\n\n\n\t/**\n\t * <code>Deprecated</code> Custom display function that will be called for the \n\t * display of each cell in this column.\n\t *\n\t * Please note that this option has now been deprecated and will be removed\n\t * in the next version of DataTables. Please use mRender / mData rather than\n\t * fnRender.\n\t *  @type function\n\t *  @param {object} o Object with the following parameters:\n\t *  @param {int}    o.iDataRow The row in aoData\n\t *  @param {int}    o.iDataColumn The column in question\n\t *  @param {array}  o.aData The data for the row in question\n\t *  @param {object} o.oSettings The settings object for this DataTables instance\n\t *  @param {object} o.mDataProp The data property used for this column\n\t *  @param {*}      val The current cell value\n\t *  @returns {string} The string you which to use in the display\n\t *  @dtopt Columns\n\t *  @deprecated\n\t */\n\t\"fnRender\": null,\n\n\n\t/**\n\t * The column index (starting from 0!) that you wish a sort to be performed\n\t * upon when this column is selected for sorting. This can be used for sorting\n\t * on hidden columns for example.\n\t *  @type int\n\t *  @default -1 <i>Use automatically calculated column index</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"iDataSort\": 1, \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"iDataSort\": 1 },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"iDataSort\": -1,\n\n\n\t/**\n\t * This parameter has been replaced by mData in DataTables to ensure naming\n\t * consistency. mDataProp can still be used, as there is backwards compatibility\n\t * in DataTables for this option, but it is strongly recommended that you use\n\t * mData in preference to mDataProp.\n\t *  @name DataTable.defaults.columns.mDataProp\n\t */\n\n\n\t/**\n\t * This property can be used to read data from any JSON data source property,\n\t * including deeply nested objects / properties. mData can be given in a\n\t * number of different ways which effect its behaviour:\n\t *   <ul>\n\t *     <li>integer - treated as an array index for the data source. This is the\n\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t *     <li>string - read an object property from the data source. Note that you can\n\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t *       data source.</li>\n\t *     <li>null - the sDefaultContent option will be used for the cell (null\n\t *       by default, so you will need to specify the default content you want -\n\t *       typically an empty string). This can be useful on generated columns such \n\t *       as edit / delete action columns.</li>\n\t *     <li>function - the function given will be executed whenever DataTables \n\t *       needs to set or get the data for a cell in the column. The function \n\t *       takes three parameters:\n\t *       <ul>\n\t *         <li>{array|object} The data source for the row</li>\n\t *         <li>{string} The type call data requested - this will be 'set' when\n\t *           setting data or 'filter', 'display', 'type', 'sort' or undefined when \n\t *           gathering data. Note that when <i>undefined</i> is given for the type\n\t *           DataTables expects to get the raw data for the object back</li>\n\t *         <li>{*} Data to set when the second parameter is 'set'.</li>\n\t *       </ul>\n\t *       The return value from the function is not required when 'set' is the type\n\t *       of call, but otherwise the return is what will be used for the data\n\t *       requested.</li>\n\t *    </ul>\n\t *\n\t * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change\n\t * reflects the flexibility of this property and is consistent with the naming of\n\t * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as\n\t * it automatically maps the old name to the new if required.\n\t *  @type string|int|function|null\n\t *  @default null <i>Use automatically calculated column index</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Read table data from objects\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t *        \"aoColumns\": [\n\t *          { \"mData\": \"engine\" },\n\t *          { \"mData\": \"browser\" },\n\t *          { \"mData\": \"platform.inner\" },\n\t *          { \"mData\": \"platform.details.0\" },\n\t *          { \"mData\": \"platform.details.1\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Using mData as a function to provide different information for\n\t *    // sorting, filtering and display. In this case, currency (price)\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"mData\": function ( source, type, val ) {\n\t *            if (type === 'set') {\n\t *              source.price = val;\n\t *              // Store the computed dislay and filter values for efficiency\n\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t *              return;\n\t *            }\n\t *            else if (type === 'display') {\n\t *              return source.price_display;\n\t *            }\n\t *            else if (type === 'filter') {\n\t *              return source.price_filter;\n\t *            }\n\t *            // 'sort', 'type' and undefined all just use the integer\n\t *            return source.price;\n\t *          }\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"mData\": null,\n\n\n\t/**\n\t * This property is the rendering partner to mData and it is suggested that\n\t * when you want to manipulate data for display (including filtering, sorting etc)\n\t * but not altering the underlying data for the table, use this property. mData\n\t * can actually do everything this property can and more, but this parameter is\n\t * easier to use since there is no 'set' option. Like mData is can be given\n\t * in a number of different ways to effect its behaviour, with the addition of \n\t * supporting array syntax for easy outputting of arrays (including arrays of\n\t * objects):\n\t *   <ul>\n\t *     <li>integer - treated as an array index for the data source. This is the\n\t *       default that DataTables uses (incrementally increased for each column).</li>\n\t *     <li>string - read an object property from the data source. Note that you can\n\t *       use Javascript dotted notation to read deep properties / arrays from the\n\t *       data source and also array brackets to indicate that the data reader should\n\t *       loop over the data source array. When characters are given between the array\n\t *       brackets, these characters are used to join the data source array together.\n\t *       For example: \"accounts[, ].name\" would result in a comma separated list with\n\t *       the 'name' value from the 'accounts' array of objects.</li>\n\t *     <li>function - the function given will be executed whenever DataTables \n\t *       needs to set or get the data for a cell in the column. The function \n\t *       takes three parameters:\n\t *       <ul>\n\t *         <li>{array|object} The data source for the row (based on mData)</li>\n\t *         <li>{string} The type call data requested - this will be 'filter', 'display', \n\t *           'type' or 'sort'.</li>\n\t *         <li>{array|object} The full data source for the row (not based on mData)</li>\n\t *       </ul>\n\t *       The return value from the function is what will be used for the data\n\t *       requested.</li>\n\t *    </ul>\n\t *  @type string|int|function|null\n\t *  @default null <i>Use mData</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Create a comma separated list from an array of objects\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/deep.txt\",\n\t *        \"aoColumns\": [\n\t *          { \"mData\": \"engine\" },\n\t *          { \"mData\": \"browser\" },\n\t *          {\n\t *            \"mData\": \"platform\",\n\t *            \"mRender\": \"[, ].name\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Use as a function to create a link from the data source\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *        {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"mData\": \"download_link\",\n\t *          \"mRender\": function ( data, type, full ) {\n\t *            return '<a href=\"'+data+'\">Download</a>';\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"mRender\": null,\n\n\n\t/**\n\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t *  @type string\n\t *  @default td\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Make the first column use TH cells\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ {\n\t *          \"aTargets\": [ 0 ],\n\t *          \"sCellType\": \"th\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sCellType\": \"td\",\n\n\n\t/**\n\t * Class to give to each cell in this column.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sClass\": \"my_class\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sClass\": \"my_class\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sClass\": \"\",\n\t\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer \n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t * Generally you shouldn't need this, and it is not documented on the \n\t * general DataTables.net documentation\n\t *  @type string\n\t *  @default <i>Empty string<i>\n\t *  @dtopt Columns\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"sContentPadding\": \"mmm\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sContentPadding\": \"\",\n\n\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because mData\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          {\n\t *            \"mData\": null,\n\t *            \"sDefaultContent\": \"Edit\",\n\t *            \"aTargets\": [ -1 ]\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"mData\": null,\n\t *            \"sDefaultContent\": \"Edit\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sDefaultContent\": null,\n\n\n\t/**\n\t * This parameter is only used in DataTables' server-side processing. It can\n\t * be exceptionally useful to know what columns are being displayed on the\n\t * client side, and to map these to database fields. When defined, the names\n\t * also allow DataTables to reorder information from the server if it comes\n\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t * client-side, your server-side code does not also need updating).\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sName\": \"engine\", \"aTargets\": [ 0 ] },\n\t *          { \"sName\": \"browser\", \"aTargets\": [ 1 ] },\n\t *          { \"sName\": \"platform\", \"aTargets\": [ 2 ] },\n\t *          { \"sName\": \"version\", \"aTargets\": [ 3 ] },\n\t *          { \"sName\": \"grade\", \"aTargets\": [ 4 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sName\": \"engine\" },\n\t *          { \"sName\": \"browser\" },\n\t *          { \"sName\": \"platform\" },\n\t *          { \"sName\": \"version\" },\n\t *          { \"sName\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sName\": \"\",\n\n\n\t/**\n\t * Defines a data source type for the sorting which can be used to read\n\t * real-time information from the table (updating the internally cached\n\t * version) prior to sorting. This allows sorting to occur on user editable\n\t * elements such as form inputs.\n\t *  @type string\n\t *  @default std\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [\n\t *          { \"sSortDataType\": \"dom-text\", \"aTargets\": [ 2, 3 ] },\n\t *          { \"sType\": \"numeric\", \"aTargets\": [ 3 ] },\n\t *          { \"sSortDataType\": \"dom-select\", \"aTargets\": [ 4 ] },\n\t *          { \"sSortDataType\": \"dom-checkbox\", \"aTargets\": [ 5 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [\n\t *          null,\n\t *          null,\n\t *          { \"sSortDataType\": \"dom-text\" },\n\t *          { \"sSortDataType\": \"dom-text\", \"sType\": \"numeric\" },\n\t *          { \"sSortDataType\": \"dom-select\" },\n\t *          { \"sSortDataType\": \"dom-checkbox\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sSortDataType\": \"std\",\n\n\n\t/**\n\t * The title of this column.\n\t *  @type string\n\t *  @default null <i>Derived from the 'TH' value for this column in the \n\t *    original HTML table.</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sTitle\": \"My column title\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sTitle\": \"My column title\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sTitle\": null,\n\n\n\t/**\n\t * The type allows you to specify how the data for this column will be sorted.\n\t * Four types (string, numeric, date and html (which will strip HTML tags\n\t * before sorting)) are currently available. Note that only date formats\n\t * understood by Javascript's Date() object will be accepted as type date. For\n\t * example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string', 'numeric',\n\t * 'date' or 'html' (by default). Further types can be adding through\n\t * plug-ins.\n\t *  @type string\n\t *  @default null <i>Auto-detected from raw data</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sType\": \"html\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sType\": \"html\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sType\": null,\n\n\n\t/**\n\t * Defining the width of the column, this parameter may take any CSS value\n\t * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not\n\t * been given a specific width through this interface ensuring that the table\n\t * remains readable.\n\t *  @type string\n\t *  @default null <i>Automatic</i>\n\t *  @dtopt Columns\n\t * \n\t *  @example\n\t *    // Using aoColumnDefs\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumnDefs\": [ \n\t *          { \"sWidth\": \"20%\", \"aTargets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using aoColumns\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoColumns\": [ \n\t *          { \"sWidth\": \"20%\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sWidth\": null\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.defaults.js",
    "content": "\n\n/**\n * Initialisation options that can be given to DataTables at initialisation \n * time.\n *  @namespace\n */\nDataTable.defaults = {\n\t/**\n\t * An array of data to use for the table, passed in at initialisation which \n\t * will be used in preference to any data which is already in the DOM. This is\n\t * particularly useful for constructing tables purely in Javascript, for\n\t * example with a custom Ajax call.\n\t *  @type array\n\t *  @default null\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    // Using a 2D array data source\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"aaData\": [\n\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t *        ],\n\t *        \"aoColumns\": [\n\t *          { \"sTitle\": \"Engine\" },\n\t *          { \"sTitle\": \"Browser\" },\n\t *          { \"sTitle\": \"Platform\" },\n\t *          { \"sTitle\": \"Version\" },\n\t *          { \"sTitle\": \"Grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Using an array of objects as a data source (mData)\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"aaData\": [\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  4,\n\t *            \"grade\":    \"X\"\n\t *          },\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  5,\n\t *            \"grade\":    \"C\"\n\t *          }\n\t *        ],\n\t *        \"aoColumns\": [\n\t *          { \"sTitle\": \"Engine\",   \"mData\": \"engine\" },\n\t *          { \"sTitle\": \"Browser\",  \"mData\": \"browser\" },\n\t *          { \"sTitle\": \"Platform\", \"mData\": \"platform\" },\n\t *          { \"sTitle\": \"Version\",  \"mData\": \"version\" },\n\t *          { \"sTitle\": \"Grade\",    \"mData\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aaData\": null,\n\n\n\t/**\n\t * If sorting is enabled, then DataTables will perform a first pass sort on \n\t * initialisation. You can define which column(s) the sort is performed upon, \n\t * and the sorting direction, with this variable. The aaSorting array should \n\t * contain an array for each column to be sorted initially containing the \n\t * column's index and a direction string ('asc' or 'desc').\n\t *  @type array\n\t *  @default [[0,'asc']]\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    // Sort by 3rd column first, and then 4th column\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSorting\": [[2,'asc'], [3,'desc']]\n\t *      } );\n\t *    } );\n\t *    \n\t *    // No initial sorting\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSorting\": []\n\t *      } );\n\t *    } );\n\t */\n\t\"aaSorting\": [[0,'asc']],\n\n\n\t/**\n\t * This parameter is basically identical to the aaSorting parameter, but \n\t * cannot be overridden by user interaction with the table. What this means \n\t * is that you could have a column (visible or hidden) which the sorting will \n\t * always be forced on first - any sorting after that (from the user) will \n\t * then be performed as required. This can be useful for grouping rows \n\t * together.\n\t *  @type array\n\t *  @default null\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aaSortingFixed\": [[0,'asc']]\n\t *      } );\n\t *    } )\n\t */\n\t\"aaSortingFixed\": null,\n\n\n\t/**\n\t * This parameter allows you to readily specify the entries in the length drop\n\t * down menu that DataTables shows when pagination is enabled. It can be \n\t * either a 1D array of options which will be used for both the displayed \n\t * option and the value, or a 2D array which will use the array in the first \n\t * position as the value, and the array in the second position as the \n\t * displayed options (useful for language strings such as 'All').\n\t *  @type array\n\t *  @default [ 10, 25, 50, 100 ]\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aLengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t *      } );\n\t *    } );\n\t *  \n\t *  @example\n\t *    // Setting the default display length as well as length menu\n\t *    // This is likely to be wanted if you remove the '10' option which\n\t *    // is the iDisplayLength default.\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayLength\": 25,\n\t *        \"aLengthMenu\": [[25, 50, 100, -1], [25, 50, 100, \"All\"]]\n\t *      } );\n\t *    } );\n\t */\n\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\n\n\t/**\n\t * The aoColumns option in the initialisation parameter allows you to define\n\t * details about the way individual columns behave. For a full list of\n\t * column options that can be set, please see \n\t * {@link DataTable.defaults.columns}. Note that if you use aoColumns to\n\t * define your columns, you must have an entry in the array for every single\n\t * column that you have in your table (these can be null if you don't which\n\t * to specify any options).\n\t *  @member\n\t */\n\t\"aoColumns\": null,\n\n\t/**\n\t * Very similar to aoColumns, aoColumnDefs allows you to target a specific \n\t * column, multiple columns, or all columns, using the aTargets property of \n\t * each object in the array. This allows great flexibility when creating \n\t * tables, as the aoColumnDefs arrays can be of any length, targeting the \n\t * columns you specifically want. aoColumnDefs may use any of the column \n\t * options available: {@link DataTable.defaults.columns}, but it _must_\n\t * have aTargets defined in each object in the array. Values in the aTargets\n\t * array may be:\n\t *   <ul>\n\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t *     <li>a negative integer - column index counting from the right</li>\n\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t *   </ul>\n\t *  @member\n\t */\n\t\"aoColumnDefs\": null,\n\n\n\t/**\n\t * Basically the same as oSearch, this parameter defines the individual column\n\t * filtering state at initialisation time. The array must be of the same size \n\t * as the number of columns, and each element be an object with the parameters\n\t * \"sSearch\" and \"bEscapeRegex\" (the latter is optional). 'null' is also\n\t * accepted and the default will be used.\n\t *  @type array\n\t *  @default []\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"aoSearchCols\": [\n\t *          null,\n\t *          { \"sSearch\": \"My filter\" },\n\t *          null,\n\t *          { \"sSearch\": \"^[0-9]\", \"bEscapeRegex\": false }\n\t *        ]\n\t *      } );\n\t *    } )\n\t */\n\t\"aoSearchCols\": [],\n\n\n\t/**\n\t * An array of CSS classes that should be applied to displayed rows. This \n\t * array may be of any length, and DataTables will apply each class \n\t * sequentially, looping when required.\n\t *  @type array\n\t *  @default null <i>Will take the values determined by the oClasses.sStripe*\n\t *    options</i>\n\t *  @dtopt Option\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"asStripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t *      } );\n\t *    } )\n\t */\n\t\"asStripeClasses\": null,\n\n\n\t/**\n\t * Enable or disable automatic column width calculation. This can be disabled\n\t * as an optimisation (it takes some time to calculate the widths) if the\n\t * tables widths are passed in using aoColumns.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bAutoWidth\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bAutoWidth\": true,\n\n\n\t/**\n\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t * are using an Ajax or JS data source for the table. This option, when set to\n\t * true, will cause DataTables to defer the creation of the table elements for\n\t * each row until they are needed for a draw - saving a significant amount of\n\t * time.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/arrays.txt\",\n\t *        \"bDeferRender\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDeferRender\": false,\n\n\n\t/**\n\t * Replace a DataTable which matches the given selector and replace it with \n\t * one which has the properties of the new initialisation object passed. If no\n\t * table matches the selector, then the new DataTable will be constructed as\n\t * per normal.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false\n\t *      } );\n\t *      \n\t *      // Some time later....\n\t *      $('#example').dataTable( {\n\t *        \"bFilter\": false,\n\t *        \"bDestroy\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDestroy\": false,\n\n\n\t/**\n\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t * that it allows the end user to input multiple words (space separated) and\n\t * will match a row containing those words, even if not in the order that was\n\t * specified (this allow matching across multiple columns). Note that if you\n\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t * default filtering input box and retain filtering abilities, please use\n\t * {@link DataTable.defaults.sDom}.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bFilter\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bFilter\": true,\n\n\n\t/**\n\t * Enable or disable the table information display. This shows information \n\t * about the data that is currently visible on the page, including information\n\t * about filtered data if that action is being performed.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bInfo\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bInfo\": true,\n\n\n\t/**\n\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t * slightly different and additional mark-up from what DataTables has\n\t * traditionally used).\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bJQueryUI\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bJQueryUI\": false,\n\n\n\t/**\n\t * Allows the end user to select the size of a formatted page from a select\n\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bLengthChange\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bLengthChange\": true,\n\n\n\t/**\n\t * Enable or disable pagination.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bPaginate\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bPaginate\": true,\n\n\n\t/**\n\t * Enable or disable the display of a 'processing' indicator when the table is\n\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t * large amounts of data where it can take a noticeable amount of time to sort\n\t * the entries.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bProcessing\": false,\n\n\n\t/**\n\t * Retrieve the DataTables object for the given selector. Note that if the\n\t * table has already been initialised, this parameter will cause DataTables\n\t * to simply return the object that has already been set up - it will not take\n\t * account of any changes you might have made to the initialisation object\n\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t * that you understand this). bDestroy can be used to reinitialise a table if\n\t * you need.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      initTable();\n\t *      tableActions();\n\t *    } );\n\t *    \n\t *    function initTable ()\n\t *    {\n\t *      return $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false,\n\t *        \"bRetrieve\": true\n\t *      } );\n\t *    }\n\t *    \n\t *    function tableActions ()\n\t *    {\n\t *      var oTable = initTable();\n\t *      // perform API operations with oTable \n\t *    }\n\t */\n\t\"bRetrieve\": false,\n\n\n\t/**\n\t * Indicate if DataTables should be allowed to set the padding / margin\n\t * etc for the scrolling header elements or not. Typically you will want\n\t * this.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollAutoCss\": false,\n\t *        \"sScrollY\": \"200px\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollAutoCss\": true,\n\n\n\t/**\n\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t * the table's viewport to the given height at all times (useful for layout).\n\t * However, this can look odd when filtering data down to a small data set,\n\t * and the footer is left \"floating\" further down. This parameter (when\n\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t * the result set will fit within the given Y height.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200\",\n\t *        \"bScrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollCollapse\": false,\n\n\n\t/**\n\t * Enable infinite scrolling for DataTables (to be used in combination with\n\t * sScrollY). Infinite scrolling means that DataTables will continually load\n\t * data as a user scrolls through a table, which is very useful for large\n\t * dataset. This cannot be used with pagination, which is automatically\n\t * disabled. Note - the Scroller extra for DataTables is recommended in\n\t * in preference to this option.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollInfinite\": true,\n\t *        \"bScrollCollapse\": true,\n\t *        \"sScrollY\": \"200px\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollInfinite\": false,\n\n\n\t/**\n\t * Configure DataTables to use server-side processing. Note that the\n\t * sAjaxSource parameter must also be given in order to give DataTables a\n\t * source to obtain the required data for each draw.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"xhr.php\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bServerSide\": false,\n\n\n\t/**\n\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t * disabled by the \"bSortable\" option for each column.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bSort\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSort\": true,\n\n\n\t/**\n\t * Allows control over whether DataTables should use the top (true) unique\n\t * cell that is found for a single column, or the bottom (false - default).\n\t * This is useful when using complex headers.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bSortCellsTop\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortCellsTop\": false,\n\n\n\t/**\n\t * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and\n\t * 'sorting_3' to the columns which are currently being sorted on. This is\n\t * presented as a feature switch as it can increase processing time (while\n\t * classes are removed and added) so for large data sets you might want to\n\t * turn this off.\n\t *  @type boolean\n\t *  @default true\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bSortClasses\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortClasses\": true,\n\n\n\t/**\n\t * Enable or disable state saving. When enabled a cookie will be used to save\n\t * table display information such as pagination information, display length,\n\t * filtering and sorting. As such when the end user reloads the page the\n\t * display display will match what thy had previously set up.\n\t *  @type boolean\n\t *  @default false\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bStateSave\": false,\n\n\n\t/**\n\t * Customise the cookie and / or the parameters being stored when using\n\t * DataTables with state saving enabled. This function is called whenever\n\t * the cookie is modified, and it expects a fully formed cookie string to be\n\t * returned. Note that the data object passed in is a Javascript object which\n\t * must be converted to a string (JSON.stringify for example).\n\t *  @type function\n\t *  @param {string} sName Name of the cookie defined by DataTables\n\t *  @param {object} oData Data to be stored in the cookie\n\t *  @param {string} sExpires Cookie expires string\n\t *  @param {string} sPath Path of the cookie to set\n\t *  @returns {string} Cookie formatted string (which should be encoded by\n\t *    using encodeURIComponent())\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"fnCookieCallback\": function (sName, oData, sExpires, sPath) {\n\t *          // Customise oData or sName or whatever else here\n\t *          return sName + \"=\"+JSON.stringify(oData)+\"; expires=\" + sExpires +\"; path=\" + sPath;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnCookieCallback\": null,\n\n\n\t/**\n\t * This function is called when a TR element is created (and all TD child\n\t * elements have been inserted), or registered if using a DOM source, allowing\n\t * manipulation of the TR element (adding classes etc).\n\t *  @type function\n\t *  @param {node} nRow \"TR\" element for the current row\n\t *  @param {array} aData Raw data array for this row\n\t *  @param {int} iDataIndex The index of this row in aoData\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnCreatedRow\": function( nRow, aData, iDataIndex ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( aData[4] == \"A\" )\n\t *          {\n\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnCreatedRow\": null,\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify any aspect you want about the created DOM.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnDrawCallback\": function( oSettings ) {\n\t *          alert( 'DataTables has redrawn the table' );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnDrawCallback\": null,\n\n\n\t/**\n\t * Identical to fnHeaderCallback() but for the table footer this function\n\t * allows you to modify the table footer on every 'draw' even.\n\t *  @type function\n\t *  @param {node} nFoot \"TR\" element for the footer\n\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t *  @param {int} iStart Index for the current display starting point in the \n\t *    display array\n\t *  @param {int} iEnd Index for the current display ending point in the \n\t *    display array\n\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t *    to the full data array\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnFooterCallback\": function( nFoot, aData, iStart, iEnd, aiDisplay ) {\n\t *          nFoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+iStart;\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnFooterCallback\": null,\n\n\n\t/**\n\t * When rendering large numbers in the information element for the table\n\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t * function will override the default method DataTables uses.\n\t *  @type function\n\t *  @member\n\t *  @param {int} iIn number to be formatted\n\t *  @returns {string} formatted string for DataTables to show the number\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnFormatNumber\": function ( iIn ) {\n\t *          if ( iIn &lt; 1000 ) {\n\t *            return iIn;\n\t *          } else {\n\t *            var \n\t *              s=(iIn+\"\"), \n\t *              a=s.split(\"\"), out=\"\", \n\t *              iLen=s.length;\n\t *            \n\t *            for ( var i=0 ; i&lt;iLen ; i++ ) {\n\t *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {\n\t *                out = \"'\"+out;\n\t *              }\n\t *              out = a[iLen-i-1]+out;\n\t *            }\n\t *          }\n\t *          return out;\n\t *        };\n\t *      } );\n\t *    } );\n\t */\n\t\"fnFormatNumber\": function ( iIn ) {\n\t\tif ( iIn < 1000 )\n\t\t{\n\t\t\t// A small optimisation for what is likely to be the majority of use cases\n\t\t\treturn iIn;\n\t\t}\n\n\t\tvar s=(iIn+\"\"), a=s.split(\"\"), out=\"\", iLen=s.length;\n\t\t\n\t\tfor ( var i=0 ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( i%3 === 0 && i !== 0 )\n\t\t\t{\n\t\t\t\tout = this.oLanguage.sInfoThousands+out;\n\t\t\t}\n\t\t\tout = a[iLen-i-1]+out;\n\t\t}\n\t\treturn out;\n\t},\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify the header row. This can be used to calculate and\n\t * display useful information about the table.\n\t *  @type function\n\t *  @param {node} nHead \"TR\" element for the header\n\t *  @param {array} aData Full table data (as derived from the original HTML)\n\t *  @param {int} iStart Index for the current display starting point in the\n\t *    display array\n\t *  @param {int} iEnd Index for the current display ending point in the\n\t *    display array\n\t *  @param {array int} aiDisplay Index array to translate the visual position\n\t *    to the full data array\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnHeaderCallback\": function( nHead, aData, iStart, iEnd, aiDisplay ) {\n\t *          nHead.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(iEnd-iStart)+\" records\";\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnHeaderCallback\": null,\n\n\n\t/**\n\t * The information element can be used to convey information about the current\n\t * state of the table. Although the internationalisation options presented by\n\t * DataTables are quite capable of dealing with most customisations, there may\n\t * be times where you wish to customise the string further. This callback\n\t * allows you to do exactly that.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {int} iStart Starting position in data for the draw\n\t *  @param {int} iEnd End position in data for the draw\n\t *  @param {int} iMax Total number of rows in the table (regardless of\n\t *    filtering)\n\t *  @param {int} iTotal Total number of rows in the data set, after filtering\n\t *  @param {string} sPre The string that DataTables has formatted using it's\n\t *    own rules\n\t *  @returns {string} The string to be displayed in the information element.\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $('#example').dataTable( {\n\t *      \"fnInfoCallback\": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {\n\t *        return iStart +\" to \"+ iEnd;\n\t *      }\n\t *    } );\n\t */\n\t\"fnInfoCallback\": null,\n\n\n\t/**\n\t * Called when the table has been initialised. Normally DataTables will\n\t * initialise sequentially and there will be no need for this function,\n\t * however, this does not hold true when using external language information\n\t * since that is obtained using an async XHR call.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnInitComplete\": function(oSettings, json) {\n\t *          alert( 'DataTables has finished its initialisation.' );\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnInitComplete\": null,\n\n\n\t/**\n\t * Called at the very start of each table draw and can be used to cancel the\n\t * draw by returning false, any other return (including undefined) results in\n\t * the full draw occurring).\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t *    return) will allow it to complete.\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnPreDrawCallback\": function( oSettings ) {\n\t *          if ( $('#test').val() == 1 ) {\n\t *            return false;\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnPreDrawCallback\": null,\n\n\n\t/**\n\t * This function allows you to 'post process' each row after it have been\n\t * generated for each table draw, but before it is rendered on screen. This\n\t * function might be used for setting the row class name etc.\n\t *  @type function\n\t *  @param {node} nRow \"TR\" element for the current row\n\t *  @param {array} aData Raw data array for this row\n\t *  @param {int} iDisplayIndex The display index for the current table draw\n\t *  @param {int} iDisplayIndexFull The index of the data in the full list of\n\t *    rows (after filtering)\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fnRowCallback\": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( aData[4] == \"A\" )\n\t *          {\n\t *            $('td:eq(4)', nRow).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnRowCallback\": null,\n\n\n\t/**\n\t * This parameter allows you to override the default function which obtains\n\t * the data from the server ($.getJSON) so something more suitable for your\n\t * application. For example you could use POST data, or pull information from\n\t * a Gears or AIR database.\n\t *  @type function\n\t *  @member\n\t *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)\n\t *  @param {array} aoData A key/value pair object containing the data to send\n\t *    to the server\n\t *  @param {function} fnCallback to be called on completion of the data get\n\t *    process that will draw the data on the page.\n\t *  @param {object} oSettings DataTables settings object\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    // POST data to server\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true,\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"xhr.php\",\n\t *        \"fnServerData\": function ( sSource, aoData, fnCallback, oSettings ) {\n\t *          oSettings.jqXHR = $.ajax( {\n\t *            \"dataType\": 'json', \n\t *            \"type\": \"POST\", \n\t *            \"url\": sSource, \n\t *            \"data\": aoData, \n\t *            \"success\": fnCallback\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnServerData\": function ( sUrl, aoData, fnCallback, oSettings ) {\n\t\toSettings.jqXHR = $.ajax( {\n\t\t\t\"url\":  sUrl,\n\t\t\t\"data\": aoData,\n\t\t\t\"success\": function (json) {\n\t\t\t\tif ( json.sError ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, json.sError );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$(oSettings.oInstance).trigger('xhr', [oSettings, json]);\n\t\t\t\tfnCallback( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, \"DataTables warning: JSON data from \"+\n\t\t\t\t\t\t\"server could not be parsed. This is caused by a JSON formatting error.\" );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\n\t/**\n\t * It is often useful to send extra data to the server when making an Ajax\n\t * request - for example custom filtering information, and this callback\n\t * function makes it trivial to send extra information to the server. The\n\t * passed in parameter is the data set that has been constructed by\n\t * DataTables, and you can add to this or modify it as you require.\n\t *  @type function\n\t *  @param {array} aoData Data array (array of objects which are name/value\n\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t *    server. In the case of Ajax sourced data with server-side processing\n\t *    this will be an empty array, for server-side processing there will be a\n\t *    significant number of parameters!\n\t *  @returns {undefined} Ensure that you modify the aoData array passed in,\n\t *    as this is passed by reference.\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bProcessing\": true,\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"fnServerParams\": function ( aoData ) {\n\t *          aoData.push( { \"name\": \"more_data\", \"value\": \"my_value\" } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnServerParams\": null,\n\n\n\t/**\n\t * Load the table state. With this function you can define from where, and how, the\n\t * state of a table is loaded. By default DataTables will load from its state saving\n\t * cookie, but you might wish to use local storage (HTML5) or a server-side database.\n\t *  @type function\n\t *  @member\n\t *  @param {object} oSettings DataTables settings object\n\t *  @return {object} The DataTables state object to be loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoad\": function (oSettings) {\n\t *          var o;\n\t *          \n\t *          // Send an Ajax request to the server to get the data. Note that\n\t *          // this is a synchronous request.\n\t *          $.ajax( {\n\t *            \"url\": \"/state_load\",\n\t *            \"async\": false,\n\t *            \"dataType\": \"json\",\n\t *            \"success\": function (json) {\n\t *              o = json;\n\t *            }\n\t *          } );\n\t *          \n\t *          return o;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoad\": function ( oSettings ) {\n\t\tvar sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );\n\t\tvar oData;\n\n\t\ttry {\n\t\t\toData = (typeof $.parseJSON === 'function') ? \n\t\t\t\t$.parseJSON(sData) : eval( '('+sData+')' );\n\t\t} catch (e) {\n\t\t\toData = null;\n\t\t}\n\n\t\treturn oData;\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the saved state prior to loading that state.\n\t * This callback is called when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state. Note that for \n\t * plug-in authors, you should use the 'stateLoadParams' event to load parameters for \n\t * a plug-in.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object that is to be loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Remove a saved filter, so filtering is never loaded\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t *          oData.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // Disallow state loading by returning false\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoadParams\": function (oSettings, oData) {\n\t *          return false;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoadParams\": null,\n\n\n\t/**\n\t * Callback that is called when the state has been loaded from the state saving method\n\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object that was loaded\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Show an alert with the filtering value that was saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateLoaded\": function (oSettings, oData) {\n\t *          alert( 'Saved filter was: '+oData.oSearch.sSearch );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoaded\": null,\n\n\n\t/**\n\t * Save the table state. This function allows you to define where and how the state\n\t * information for the table is stored - by default it will use a cookie, but you\n\t * might want to use local storage (HTML5) or a server-side database.\n\t *  @type function\n\t *  @member\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object to be saved\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateSave\": function (oSettings, oData) {\n\t *          // Send an Ajax request to the server with the state object\n\t *          $.ajax( {\n\t *            \"url\": \"/state_save\",\n\t *            \"data\": oData,\n\t *            \"dataType\": \"json\",\n\t *            \"method\": \"POST\"\n\t *            \"success\": function () {}\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSave\": function ( oSettings, oData ) {\n\t\tthis.oApi._fnCreateCookie( \n\t\t\toSettings.sCookiePrefix+oSettings.sInstance, \n\t\t\tthis.oApi._fnJsonString(oData), \n\t\t\toSettings.iCookieDuration, \n\t\t\toSettings.sCookiePrefix, \n\t\t\toSettings.fnCookieCallback\n\t\t);\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the state to be saved. Called when the table \n\t * has changed state a new state save is required. This method allows modification of\n\t * the state saving object prior to actually doing the save, including addition or \n\t * other state properties or modification. Note that for plug-in authors, you should \n\t * use the 'stateSaveParams' event to save parameters for a plug-in.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} oData The state object to be saved\n\t *  @dtopt Callbacks\n\t * \n\t *  @example\n\t *    // Remove a saved filter, so filtering is never saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bStateSave\": true,\n\t *        \"fnStateSaveParams\": function (oSettings, oData) {\n\t *          oData.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSaveParams\": null,\n\n\n\t/**\n\t * Duration of the cookie which is used for storing session information. This\n\t * value is given in seconds.\n\t *  @type int\n\t *  @default 7200 <i>(2 hours)</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iCookieDuration\": 60*60*24; // 1 day\n\t *      } );\n\t *    } )\n\t */\n\t\"iCookieDuration\": 7200,\n\n\n\t/**\n\t * When enabled DataTables will not make a request to the server for the first\n\t * page draw - rather it will use the data already on the page (no sorting etc\n\t * will be applied to it), thus saving on an XHR at load time. iDeferLoading\n\t * is used to indicate that deferred loading is required, but it is also used\n\t * to tell DataTables how many records there are in the full table (allowing\n\t * the information element and pagination to be displayed correctly). In the case\n\t * where a filtering is applied to the table on initial load, this can be\n\t * indicated by giving the parameter as an array, where the first element is\n\t * the number of records available after filtering and the second element is the\n\t * number of records without filtering (allowing the table information element\n\t * to be shown correctly).\n\t *  @type int | array\n\t *  @default null\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    // 57 records available in the table, no filtering applied\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"iDeferLoading\": 57\n\t *      } );\n\t *    } );\n\t * \n\t *  @example\n\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/server_processing.php\",\n\t *        \"iDeferLoading\": [ 57, 100 ],\n\t *        \"oSearch\": {\n\t *          \"sSearch\": \"my_filter\"\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"iDeferLoading\": null,\n\n\n\t/**\n\t * Number of rows to display on a single page when using pagination. If\n\t * feature enabled (bLengthChange) then the end user will be able to override\n\t * this to a custom setting using a pop-up menu.\n\t *  @type int\n\t *  @default 10\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayLength\": 50\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayLength\": 10,\n\n\n\t/**\n\t * Define the starting point for data display when using DataTables with\n\t * pagination. Note that this parameter is the number of records, rather than\n\t * the page number, so if you have 10 records per page and want to start on\n\t * the third page, it should be \"20\".\n\t *  @type int\n\t *  @default 0\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iDisplayStart\": 20\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayStart\": 0,\n\n\n\t/**\n\t * The scroll gap is the amount of scrolling that is left to go before\n\t * DataTables will load the next 'page' of data automatically. You typically\n\t * want a gap which is big enough that the scrolling will be smooth for the\n\t * user, while not so large that it will load more data than need.\n\t *  @type int\n\t *  @default 100\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bScrollInfinite\": true,\n\t *        \"bScrollCollapse\": true,\n\t *        \"sScrollY\": \"200px\",\n\t *        \"iScrollLoadGap\": 50\n\t *      } );\n\t *    } );\n\t */\n\t\"iScrollLoadGap\": 100,\n\n\n\t/**\n\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t * and filtering) by adding a tabindex attribute to the required elements. This\n\t * allows you to tab through the controls and press the enter key to activate them.\n\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t * disable built-in keyboard navigation.\n\t *  @type int\n\t *  @default 0\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"iTabIndex\": 1\n\t *      } );\n\t *    } );\n\t */\n\t\"iTabIndex\": 0,\n\n\n\t/**\n\t * All strings that DataTables uses in the user interface that it creates\n\t * are defined in this object, allowing you to modified them individually or\n\t * completely replace them all as required.\n\t *  @namespace\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t * must be internationalised as well).\n\t\t *  @namespace\n\t\t */\n\t\t\"oAria\": {\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oAria\": {\n\t\t\t *            \"sSortAscending\": \" - click/return to sort ascending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oAria\": {\n\t\t\t *            \"sSortDescending\": \" - click/return to sort descending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t},\n\n\t\t/**\n\t\t * Pagination string used by DataTables for the two built-in pagination\n\t\t * control types (\"two_button\" and \"full_numbers\")\n\t\t *  @namespace\n\t\t */\n\t\t\"oPaginate\": {\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the first page.\n\t\t\t *  @type string\n\t\t\t *  @default First\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sFirst\": \"First page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sFirst\": \"First\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the last page.\n\t\t\t *  @type string\n\t\t\t *  @default Last\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sLast\": \"Last page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLast\": \"Last\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use for the 'next' pagination button (to take the user to the \n\t\t\t * next page).\n\t\t\t *  @type string\n\t\t\t *  @default Next\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sNext\": \"Next page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sNext\": \"Next\",\n\t\t\n\t\t\n\t\t\t/**\n\t\t\t * Text to use for the 'previous' pagination button (to take the user to  \n\t\t\t * the previous page).\n\t\t\t *  @type string\n\t\t\t *  @default Previous\n\t\t\t *  @dtopt Language\n\t\t\t * \n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"oLanguage\": {\n\t\t\t *          \"oPaginate\": {\n\t\t\t *            \"sPrevious\": \"Previous page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sPrevious\": \"Previous\"\n\t\t},\n\t\n\t\t/**\n\t\t * This string is shown in preference to sZeroRecords when the table is\n\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t * parameter - if it is not given, the value of sZeroRecords will be used\n\t\t * instead (either the default or given value).\n\t\t *  @type string\n\t\t *  @default No data available in table\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sEmptyTable\": \"No data available in table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t/**\n\t\t * This string gives information to the end user about the information that \n\t\t * is current on display on the page. The _START_, _END_ and _TOTAL_ \n\t\t * variables are all dynamically replaced as the table display updates, and \n\t\t * can be freely moved or removed as the language requirements change.\n\t\t *  @type string\n\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfo\": \"Got a total of _TOTAL_ entries to show (_START_ to _END_)\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t/**\n\t\t * Display information string for when the table is empty. Typically the \n\t\t * format of this string should match sInfo.\n\t\t *  @type string\n\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoEmpty\": \"No entries to show\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t/**\n\t\t * When a user filters the information in a table, this string is appended \n\t\t * to the information (sInfo) to give an idea of how strong the filtering \n\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t *  @type string\n\t\t *  @default (filtered from _MAX_ total entries)\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoFiltered\": \" - filtering from _MAX_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t/**\n\t\t * If can be useful to append extra information to the info string at times,\n\t\t * and this variable does exactly that. This information will be appended to\n\t\t * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are\n\t\t * being used) at all times.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoPostFix\": \"All records shown are derived from real information.\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t/**\n\t\t * DataTables has a build in number formatter (fnFormatNumber) which is used\n\t\t * to format large numbers that are used in the table information. By\n\t\t * default a comma is used, but this can be trivially changed to any\n\t\t * character you wish with this parameter.\n\t\t *  @type string\n\t\t *  @default ,\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sInfoThousands\": \"'\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoThousands\": \",\",\n\t\n\t\n\t\t/**\n\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t * with a custom select box if required.\n\t\t *  @type string\n\t\t *  @default Show _MENU_ entries\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    // Language change only\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLengthMenu\": \"Display _MENU_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Language and options change\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLengthMenu\": 'Display <select>'+\n\t\t *            '<option value=\"10\">10</option>'+\n\t\t *            '<option value=\"20\">20</option>'+\n\t\t *            '<option value=\"30\">30</option>'+\n\t\t *            '<option value=\"40\">40</option>'+\n\t\t *            '<option value=\"50\">50</option>'+\n\t\t *            '<option value=\"-1\">All</option>'+\n\t\t *            '</select> records'\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t/**\n\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t * parameter is not used when loading data by server-side processing, just\n\t\t * Ajax sourced data with client-side processing.\n\t\t *  @type string\n\t\t *  @default Loading...\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sLoadingRecords\": \"Please wait - loading...\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t/**\n\t\t * Text which is displayed when the table is processing a user action\n\t\t * (usually a sort command or similar).\n\t\t *  @type string\n\t\t *  @default Processing...\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sProcessing\": \"DataTables is currently busy\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t/**\n\t\t * Details the actions that will be taken when the user types into the\n\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t * then the input box is appended to the string automatically.\n\t\t *  @type string\n\t\t *  @default Search:\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    // Input text box will be appended at the end automatically\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sSearch\": \"Filter records:\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *    \n\t\t *  @example\n\t\t *    // Specify where the filter should appear\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sSearch\": \"Apply filter _INPUT_ to table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t/**\n\t\t * All of the language information can be stored in a file on the\n\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t * and the object has the same properties as the oLanguage object in the\n\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t * the example language files to see how this works in action.\n\t\t *  @type string\n\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sUrl\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Text shown inside the table records when the is no information to be\n\t\t * displayed after filtering. sEmptyTable is shown when there is simply no\n\t\t * information in the table at all (regardless of filtering).\n\t\t *  @type string\n\t\t *  @default No matching records found\n\t\t *  @dtopt Language\n\t\t * \n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"oLanguage\": {\n\t\t *          \"sZeroRecords\": \"No records to display\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sZeroRecords\": \"No matching records found\"\n\t},\n\n\n\t/**\n\t * This parameter allows you to have define the global filtering state at\n\t * initialisation time. As an object the \"sSearch\" parameter must be\n\t * defined, but all other parameters are optional. When \"bRegex\" is true,\n\t * the search string will be treated as a regular expression, when false\n\t * (default) it will be treated as a straight string. When \"bSmart\"\n\t * DataTables will use it's smart filtering methods (to word match at\n\t * any point in the data), when false this will not be done.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"oSearch\": {\"sSearch\": \"Initial search\"}\n\t *      } );\n\t *    } )\n\t */\n\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\n\n\t/**\n\t * By default DataTables will look for the property 'aaData' when obtaining\n\t * data from an Ajax source or for server-side processing - this parameter\n\t * allows that property to be changed. You can use Javascript dotted object\n\t * notation to get a data source for multiple levels of nesting.\n\t *  @type string\n\t *  @default aaData\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    // Get data from { \"data\": [...] }\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t *        \"sAjaxDataProp\": \"data\"\n\t *      } );\n\t *    } );\n\t *    \n\t *  @example\n\t *    // Get data from { \"data\": { \"inner\": [...] } }\n\t *    $(document).ready( function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"sources/data.txt\",\n\t *        \"sAjaxDataProp\": \"data.inner\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sAjaxDataProp\": \"aaData\",\n\n\n\t/**\n\t * You can instruct DataTables to load data from an external source using this\n\t * parameter (use aData if you want to pass data in you already have). Simply\n\t * provide a url a JSON object can be obtained from. This object must include\n\t * the parameter 'aaData' which is the data source for the table.\n\t *  @type string\n\t *  @default null\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sAjaxSource\": \"http://www.sprymedia.co.uk/dataTables/json.php\"\n\t *      } );\n\t *    } )\n\t */\n\t\"sAjaxSource\": null,\n\n\n\t/**\n\t * This parameter can be used to override the default prefix that DataTables\n\t * assigns to a cookie when state saving is enabled.\n\t *  @type string\n\t *  @default SpryMedia_DataTables_\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sCookiePrefix\": \"my_datatable_\",\n\t *      } );\n\t *    } );\n\t */\n\t\"sCookiePrefix\": \"SpryMedia_DataTables_\",\n\n\n\t/**\n\t * This initialisation variable allows you to specify exactly where in the\n\t * DOM you want DataTables to inject the various controls it adds to the page\n\t * (for example you might want the pagination controls at the top of the\n\t * table). DIV elements (with or without a custom class) can also be added to\n\t * aid styling. The follow syntax is used:\n\t *   <ul>\n\t *     <li>The following options are allowed:\t\n\t *       <ul>\n\t *         <li>'l' - Length changing</li\n\t *         <li>'f' - Filtering input</li>\n\t *         <li>'t' - The table!</li>\n\t *         <li>'i' - Information</li>\n\t *         <li>'p' - Pagination</li>\n\t *         <li>'r' - pRocessing</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following constants are allowed:\n\t *       <ul>\n\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following syntax is expected:\n\t *       <ul>\n\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>Examples:\n\t *       <ul>\n\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t *       </ul>\n\t *     </li>\n\t *   </ul>\n\t *  @type string\n\t *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b> \n\t *    <\"H\"lfr>t<\"F\"ip> <i>(when bJQueryUI is true)</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sDom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t *      } );\n\t *    } );\n\t */\n\t\"sDom\": \"lfrtip\",\n\n\n\t/**\n\t * DataTables features two different built-in pagination interaction methods\n\t * ('two_button' or 'full_numbers') which present different page controls to\n\t * the end user. Further methods can be added using the API (see below).\n\t *  @type string\n\t *  @default two_button\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sPaginationType\": \"full_numbers\"\n\t *      } );\n\t *    } )\n\t */\n\t\"sPaginationType\": \"two_button\",\n\n\n\t/**\n\t * Enable horizontal scrolling. When a table is too wide to fit into a certain\n\t * layout, or you have a large number of columns in the table, you can enable\n\t * x-scrolling to show the table in a viewport, which can be scrolled. This\n\t * property can be any CSS unit, or a number (in which case it will be treated\n\t * as a pixel measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollX\": \"100%\",\n\t *        \"bScrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollX\": \"\",\n\n\n\t/**\n\t * This property can be used to force a DataTable to use more width than it\n\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t * table which requires to be well spaced, this parameter is useful for\n\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t * measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Options\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollX\": \"100%\",\n\t *        \"sScrollXInner\": \"110%\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollXInner\": \"\",\n\n\n\t/**\n\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t * to the given height, and enable scrolling for any data which overflows the\n\t * current viewport. This can be used as an alternative to paging to display\n\t * a lot of data in a small area (although paging and scrolling can both be\n\t * enabled at the same time). This property can be any CSS unit, or a number\n\t * (in which case it will be treated as a pixel measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *  @dtopt Features\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollY\": \"\",\n\n\n\t/**\n\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t * processing or Ajax sourced data.\n\t *  @type string\n\t *  @default GET\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t * \n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"bServerSide\": true,\n\t *        \"sAjaxSource\": \"scripts/post.php\",\n\t *        \"sServerMethod\": \"POST\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sServerMethod\": \"GET\"\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.ext.js",
    "content": "\n\n/**\n * DataTables extension options and plug-ins. This namespace acts as a collection \"area\"\n * for plug-ins that can be used to extend the default DataTables behaviour - indeed many\n * of the build in methods use this method to provide their own capabilities (sorting methods\n * for example).\n * \n * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed\n * and modified by plug-ins.\n *  @namespace\n */\nDataTable.models.ext = {\n\t/**\n\t * Plug-in filtering functions - this method of filtering is complimentary to the default\n\t * type based filtering, and a lot more comprehensive as it allows you complete control\n\t * over the filtering logic. Each element in this array is a function (parameters\n\t * described below) that is called for every row in the table, and your logic decides if\n\t * it should be included in the filtered data set or not.\n\t *   <ul>\n\t *     <li>\n\t *       Function input parameters:\n\t *       <ul>\n\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *         <li>{array|object} Data for the row to be processed (same as the original format\n\t *           that was passed in as the data source, or an array from a DOM data source</li>\n\t *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can\n\t *           be useful to retrieve the TR element if you need DOM interaction.</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t *\n\t *  @example\n\t *    // The following example shows custom filtering being applied to the fourth column (i.e.\n\t *    // the aData[3] index) based on two input values from the end-user, matching the data in \n\t *    // a certain range.\n\t *    $.fn.dataTableExt.afnFiltering.push(\n\t *      function( oSettings, aData, iDataIndex ) {\n\t *        var iMin = document.getElementById('min').value * 1;\n\t *        var iMax = document.getElementById('max').value * 1;\n\t *        var iVersion = aData[3] == \"-\" ? 0 : aData[3]*1;\n\t *        if ( iMin == \"\" && iMax == \"\" ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin == \"\" && iVersion < iMax ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin < iVersion && \"\" == iMax ) {\n\t *          return true;\n\t *        }\n\t *        else if ( iMin < iVersion && iVersion < iMax ) {\n\t *          return true;\n\t *        }\n\t *        return false;\n\t *      }\n\t *    );\n\t */\n\t\"afnFiltering\": [],\n\n\n\t/**\n\t * Plug-in sorting functions - this method of sorting is complimentary to the default type\n\t * based sorting that DataTables does automatically, allowing much greater control over the\n\t * the data that is being used to sort a column. This is useful if you want to do sorting\n\t * based on live data (for example the contents of an 'input' element) rather than just the\n\t * static string that DataTables knows of. The way these plug-ins work is that you create\n\t * an array of the values you wish to be sorted for the column in question and then return\n\t * that array. Which pre-sorting function is run here depends on the sSortDataType parameter\n\t * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort \n\t * data.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n     *         <li>{int} Target column index</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{array} Data for the column to be sorted upon</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  \n\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t *  @type array\n\t *  @default []\n\t *  @deprecated\n\t *\n\t *  @example\n\t *    // Updating the cached sorting information with user entered values in HTML input elements\n\t *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )\n\t *    {\n\t *      var aData = [];\n\t *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {\n\t *        aData.push( this.value );\n\t *      } );\n\t *      return aData;\n\t *    }\n\t */\n\t\"afnSortData\": [],\n\n\n\t/**\n\t * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are\n\t * available to DataTables. These feature plug-ins are accessible through the sDom initialisation\n\t * option. As such, each feature plug-in must describe a function that is used to initialise\n\t * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name\n\t * of the feature (sFeature). Thus the objects attached to this method must provide:\n\t *   <ul>\n\t *     <li>{function} fnInit Initialisation of the plug-in\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>{node|null} The element which contains your feature. Note that the return\n\t *                may also be void if your plug-in does not require to inject any DOM elements \n\t *                into DataTables control (sDom) - for example this might be useful when \n\t *                developing a plug-in which allows table control via keyboard entry.</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </li>\n\t *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>\n\t *     <li>{string} sFeature Feature name</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t * \n\t *  @example\n\t *    // How TableTools initialises itself.\n\t *    $.fn.dataTableExt.aoFeatures.push( {\n\t *      \"fnInit\": function( oSettings ) {\n\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t *      },\n\t *      \"cFeature\": \"T\",\n\t *      \"sFeature\": \"TableTools\"\n\t *    } );\n\t */\n\t\"aoFeatures\": [],\n\n\n\t/**\n\t * Type detection plug-in functions - DataTables utilises types to define how sorting and\n\t * filtering behave, and types can be either  be defined by the developer (sType for the\n\t * column) or they can be automatically detected by the methods in this array. The functions\n\t * defined in the array are quite simple, taking a single parameter (the data to analyse) \n\t * and returning the type if it is a known type, or null otherwise.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data from the column cell to be analysed</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{string|null} Data type detected, or null if unknown (and thus pass it\n\t *           on to the other type detection functions.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t *  \n\t *  @example\n\t *    // Currency type detection plug-in:\n\t *    jQuery.fn.dataTableExt.aTypes.push(\n\t *      function ( sData ) {\n\t *        var sValidChars = \"0123456789.-\";\n\t *        var Char;\n\t *        \n\t *        // Check the numeric part\n\t *        for ( i=1 ; i<sData.length ; i++ ) {\n\t *          Char = sData.charAt(i); \n\t *          if (sValidChars.indexOf(Char) == -1) {\n\t *            return null;\n\t *          }\n\t *        }\n\t *        \n\t *        // Check prefixed by currency\n\t *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {\n\t *          return 'currency';\n\t *        }\n\t *        return null;\n\t *      }\n\t *    );\n\t */\n\t\"aTypes\": [],\n\n\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, \n\t * in order to ensure compatibility.\n\t *  @type function\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note \n\t *    that the formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the \n\t *    required version, or false if this version of DataTales is not suitable\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t *    } );\n\t */\n\t\"fnVersionCheck\": DataTable.fnVersionCheck,\n\n\n\t/**\n\t * Index for what 'this' index API functions should use\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iApiIndex\": 0,\n\n\n\t/**\n\t * Pre-processing of filtering data plug-ins - When you assign the sType for a column\n\t * (or have it automatically detected for you by DataTables or a type detection plug-in), \n\t * you will typically be using this for custom sorting, but it can also be used to provide \n\t * custom filtering by allowing you to pre-processing the data and returning the data in\n\t * the format that should be filtered upon. This is done by adding functions this object \n\t * with a parameter name which matches the sType for that target column. This is the\n\t * corollary of <i>afnSortData</i> for filtering data.\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data from the column cell to be prepared for filtering</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{string|null} Formatted string that will be used for the filtering.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t * \n\t * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for\n\t * the different uses that DataTables can put the data to. Specifically <i>mData</i> when\n\t * used as a function will give you a 'type' (sorting, filtering etc) that you can use to \n\t * prepare the data as required for the different types. As such, this method is deprecated.\n\t *  @type object\n\t *  @default {}\n\t *  @deprecated\n\t *\n\t *  @example\n\t *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {\n\t *      return sData.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t *    }\n\t */\n\t\"ofnSearch\": {},\n\n\n\t/**\n\t * Container for all private functions in DataTables so they can be exposed externally\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oApi\": {},\n\n\n\t/**\n\t * Storage for the various classes that DataTables uses\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oStdClasses\": {},\n\t\n\n\t/**\n\t * Storage for the various classes that DataTables uses - jQuery UI suitable\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oJUIClasses\": {},\n\n\n\t/**\n\t * Pagination plug-in methods - The style and controls of the pagination can significantly \n\t * impact on how the end user interacts with the data in your table, and DataTables allows \n\t * the addition of pagination controls by extending this object, which can then be enabled\n\t * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that\n\t * is added is an object (the property name of which is what <i>sPaginationType</i> refers\n\t * to) that has two properties, both methods that are used by DataTables to update the\n\t * control's state.\n\t *   <ul>\n\t *     <li>\n\t *       fnInit -  Initialisation of the paging controls. Called only during initialisation \n\t *         of the table. It is expected that this function will add the required DOM elements \n\t *         to the page for the paging controls to work. The element pointer \n\t *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging \n\t *         controls (note that this is a 2D array to allow for multiple instances of each \n\t *         DataTables DOM element). It is suggested that you add the controls to this element \n\t *         as children\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *             <li>{node} Container into which the pagination controls must be inserted</li>\n\t *             <li>{function} Draw callback function - whenever the controls cause a page\n\t *               change, this method must be called to redraw the table.</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>No return required</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </il>\n\t *     <li>\n\t *       fnInit -  This function is called whenever the paging status of the table changes and is\n\t *         typically used to update classes and/or text of the paging controls to reflex the new \n\t *         status.\n\t *       <ul>\n     *         <li>\n     *           Function input parameters:\n     *           <ul>\n\t *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>\n\t *             <li>{function} Draw callback function - in case you need to redraw the table again\n\t *               or attach new event listeners</li>\n     *           </ul>\n     *         </li>\n\t *         <li>\n\t *           Function return:\n\t *           <ul>\n\t *             <li>No return required</li>\n\t *           </ul>\n\t *         </il>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type object\n\t *  @default {}\n\t *\n\t *  @example\n\t *    $.fn.dataTableExt.oPagination.four_button = {\n\t *      \"fnInit\": function ( oSettings, nPaging, fnCallbackDraw ) {\n\t *        nFirst = document.createElement( 'span' );\n\t *        nPrevious = document.createElement( 'span' );\n\t *        nNext = document.createElement( 'span' );\n\t *        nLast = document.createElement( 'span' );\n\t *        \n\t *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );\n\t *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );\n\t *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );\n\t *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );\n\t *        \n\t *        nFirst.className = \"paginate_button first\";\n\t *        nPrevious.className = \"paginate_button previous\";\n\t *        nNext.className=\"paginate_button next\";\n\t *        nLast.className = \"paginate_button last\";\n\t *        \n\t *        nPaging.appendChild( nFirst );\n\t *        nPaging.appendChild( nPrevious );\n\t *        nPaging.appendChild( nNext );\n\t *        nPaging.appendChild( nLast );\n\t *        \n\t *        $(nFirst).click( function () {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"first\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nPrevious).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"previous\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nNext).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"next\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nLast).click( function() {\n\t *          oSettings.oApi._fnPageChange( oSettings, \"last\" );\n\t *          fnCallbackDraw( oSettings );\n\t *        } );\n\t *        \n\t *        $(nFirst).bind( 'selectstart', function () { return false; } );\n\t *        $(nPrevious).bind( 'selectstart', function () { return false; } );\n\t *        $(nNext).bind( 'selectstart', function () { return false; } );\n\t *        $(nLast).bind( 'selectstart', function () { return false; } );\n\t *      },\n\t *      \n\t *      \"fnUpdate\": function ( oSettings, fnCallbackDraw ) {\n\t *        if ( !oSettings.aanFeatures.p ) {\n\t *          return;\n\t *        }\n\t *        \n\t *        // Loop over each instance of the pager\n\t *        var an = oSettings.aanFeatures.p;\n\t *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {\n\t *          var buttons = an[i].getElementsByTagName('span');\n\t *          if ( oSettings._iDisplayStart === 0 ) {\n\t *            buttons[0].className = \"paginate_disabled_previous\";\n\t *            buttons[1].className = \"paginate_disabled_previous\";\n\t *          }\n\t *          else {\n\t *            buttons[0].className = \"paginate_enabled_previous\";\n\t *            buttons[1].className = \"paginate_enabled_previous\";\n\t *          }\n\t *          \n\t *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {\n\t *            buttons[2].className = \"paginate_disabled_next\";\n\t *            buttons[3].className = \"paginate_disabled_next\";\n\t *          }\n\t *          else {\n\t *            buttons[2].className = \"paginate_enabled_next\";\n\t *            buttons[3].className = \"paginate_enabled_next\";\n\t *          }\n\t *        }\n\t *      }\n\t *    };\n\t */\n\t\"oPagination\": {},\n\n\n\t/**\n\t * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the\n\t * data column (you can add your own type detection functions, or override automatic \n\t * detection using sType). With this specific type given to the column, DataTables will \n\t * apply the required sort from the functions in the object. Each sort type must provide\n\t * two mandatory methods, one each for ascending and descending sorting, and can optionally\n\t * provide a pre-formatting method that will help speed up sorting by allowing DataTables\n\t * to pre-format the sort data only once (rather than every time the actual sort functions\n\t * are run). The two sorting functions are typical Javascript sort methods:\n\t *   <ul>\n     *     <li>\n     *       Function input parameters:\n     *       <ul>\n\t *         <li>{*} Data to compare to the second parameter</li>\n\t *         <li>{*} Data to compare to the first parameter</li>\n     *       </ul>\n     *     </li>\n\t *     <li>\n\t *       Function return:\n\t *       <ul>\n\t *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than\n\t *           the second parameter, ===0 if the two parameters are equal and >0 if\n\t *           the first parameter should be sorted height than the second parameter.</li>\n\t *       </ul>\n\t *     </il>\n\t *   </ul>\n\t *  @type object\n\t *  @default {}\n\t *\n\t *  @example\n\t *    // Case-sensitive string sorting, with no pre-formatting method\n\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t *      \"string-case-asc\": function(x,y) {\n\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t *      },\n\t *      \"string-case-desc\": function(x,y) {\n\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t *      }\n\t *    } );\n\t *\n\t *  @example\n\t *    // Case-insensitive string sorting, with pre-formatting\n\t *    $.extend( $.fn.dataTableExt.oSort, {\n\t *      \"string-pre\": function(x) {\n\t *        return x.toLowerCase();\n\t *      },\n\t *      \"string-asc\": function(x,y) {\n\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t *      },\n\t *      \"string-desc\": function(x,y) {\n\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t *      }\n\t *    } );\n\t */\n\t\"oSort\": {},\n\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and\n\t * e are optional\n\t *  @type string\n\t *  @default Version number\n\t */\n\t\"sVersion\": DataTable.version,\n\n\n\t/**\n\t * How should DataTables report an error. Can take the value 'alert' or 'throw'\n\t *  @type string\n\t *  @default alert\n\t */\n\t\"sErrMode\": \"alert\",\n\n\n\t/**\n\t * Store information for DataTables to access globally about other instances\n\t *  @namespace\n\t *  @private\n\t */\n\t\"_oExternConfig\": {\n\t\t/* int:iNextUnique - next unique number for an instance */\n\t\t\"iNextUnique\": 0\n\t}\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.row.js",
    "content": "\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * each individual row. This is the object format used for the settings \n * aoData array.\n *  @namespace\n */\nDataTable.models.oRow = {\n\t/**\n\t * TR element for the row\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTr\": null,\n\n\t/**\n\t * Data object from the original data source for the row. This is either\n\t * an array if using the traditional form of DataTables, or an object if\n\t * using mData options. The exact type will depend on the passed in\n\t * data from the data source, or will be an array if using DOM a data \n\t * source.\n\t *  @type array|object\n\t *  @default []\n\t */\n\t\"_aData\": [],\n\n\t/**\n\t * Sorting data cache - this array is ostensibly the same length as the\n\t * number of columns (although each index is generated only as it is \n\t * needed), and holds the data that is used for sorting each column in the\n\t * row. We do this cache generation at the start of the sort in order that\n\t * the formatting of the sort data need be done only once for each cell\n\t * per sort. This array should not be read from or written to by anything\n\t * other than the master sorting methods.\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\t\"_aSortData\": [],\n\n\t/**\n\t * Array of TD elements that are cached for hidden rows, so they can be\n\t * reinserted into the table if a column is made visible again (or to act\n\t * as a store if a column is made hidden). Only hidden columns have a \n\t * reference in the array. For non-hidden columns the value is either\n\t * undefined or null.\n\t *  @type array nodes\n\t *  @default []\n\t *  @private\n\t */\n\t\"_anHidden\": [],\n\n\t/**\n\t * Cache of the class name that DataTables has applied to the row, so we\n\t * can quickly look at this variable rather than needing to do a DOM check\n\t * on className for the nTr property.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @private\n\t */\n\t\"_sRowStripe\": \"\"\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.search.js",
    "content": "\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * search information for the global filter and individual column filters.\n *  @namespace\n */\nDataTable.models.oSearch = {\n\t/**\n\t * Flag to indicate if the filtering should be case insensitive or not\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bCaseInsensitive\": true,\n\n\t/**\n\t * Applied search term\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sSearch\": \"\",\n\n\t/**\n\t * Flag to indicate if the search term should be interpreted as a\n\t * regular expression (true) or not (false) and therefore and special\n\t * regex characters escaped.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bRegex\": false,\n\n\t/**\n\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bSmart\": true\n};\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/DataTables/media/src/model/model.settings.js",
    "content": "\n\n/**\n * DataTables settings object - this holds all the information needed for a\n * given table, including configuration, data and current application of the\n * table options. DataTables does not have a single instance for each DataTable\n * with the settings attached to that instance, but rather instances of the\n * DataTable \"class\" are created on-the-fly as needed (typically by a \n * $().dataTable() call) and the settings object is then applied to that\n * instance.\n * \n * Note that this object is related to {@link DataTable.defaults} but this \n * one is the internal data store for DataTables's cache of columns. It should\n * NOT be manipulated outside of DataTables. Any configuration should be done\n * through the initialisation options.\n *  @namespace\n *  @todo Really should attach the settings object to individual instances so we\n *    don't need to create new instances on each $().dataTable() call (if the\n *    table already exists). It would also save passing oSettings around and\n *    into every single function. However, this is a very significant \n *    architecture change for DataTables and will almost certainly break\n *    backwards compatibility with older installations. This is something that\n *    will be done in 2.0.\n */\nDataTable.models.oSettings = {\n\t/**\n\t * Primary features of DataTables and their enablement state.\n\t *  @namespace\n\t */\n\t\"oFeatures\": {\n\t\t\n\t\t/**\n\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t * optimum table and columns widths (true) or not (false).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bAutoWidth\": null,\n\n\t\t/**\n\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t * needed by a driven page draw. This can give a significant speed\n\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t * difference at all fro DOM and server-side processing tables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bDeferRender\": null,\n\t\t\n\t\t/**\n\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bFilter\": null,\n\t\t\n\t\t/**\n\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t * flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bInfo\": null,\n\t\t\n\t\t/**\n\t\t * Present a user control allowing the end user to change the page size\n\t\t * when pagination is enabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bLengthChange\": null,\n\n\t\t/**\n\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t * changing must also be disabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bPaginate\": null,\n\t\t\n\t\t/**\n\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t * user request - typically an Ajax request for server-side processing.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bProcessing\": null,\n\t\t\n\t\t/**\n\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t * get all data from the server for every draw - there is no filtering,\n\t\t * sorting or paging done on the client-side.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bServerSide\": null,\n\t\t\n\t\t/**\n\t\t * Sorting enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSort\": null,\n\t\t\n\t\t/**\n\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t * there is a lot of DOM interaction.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortClasses\": null,\n\t\t\n\t\t/**\n\t\t * State saving enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bStateSave\": null\n\t},\n\t\n\n\t/**\n\t * Scrolling settings for a table.\n\t *  @namespace\n\t */\n\t\"oScroll\": {\n\t\t/**\n\t\t * Indicate if DataTables should be allowed to set the padding / margin\n\t\t * etc for the scrolling header elements or not. Typically you will want\n\t\t * this.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bAutoCss\": null,\n\t\t\n\t\t/**\n\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t * table container down to the height of the table (when true).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bCollapse\": null,\n\t\t\n\t\t/**\n\t\t * Infinite scrolling enablement flag. Now deprecated in favour of\n\t\t * using the Scroller plug-in.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bInfinite\": null,\n\t\t\n\t\t/**\n\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t * during table initialisation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iBarWidth\": 0,\n\t\t\n\t\t/**\n\t\t * Space (in pixels) between the bottom of the scrolling container and \n\t\t * the bottom of the scrolling viewport before the next page is loaded\n\t\t * when using infinite scrolling.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t */\n\t\t\"iLoadGap\": null,\n\t\t\n\t\t/**\n\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is \n\t\t * disabled if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sX\": null,\n\t\t\n\t\t/**\n\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t * should not need to use this.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @deprecated\n\t\t */\n\t\t\"sXInner\": null,\n\t\t\n\t\t/**\n\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t * if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sY\": null\n\t},\n\t\n\t/**\n\t * Language information for the table.\n\t *  @namespace\n\t *  @extends DataTable.defaults.oLanguage\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Information callback function. See \n\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnInfoCallback\": null\n\t},\n\t\n\t/**\n\t * Browser support parameters\n\t *  @namespace\n\t */\n\t\"oBrowser\": {\n\t\t/**\n\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t * scrolling element (IE6/7)\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bScrollOversize\": false\n\t},\n\t\n\t/**\n\t * Array referencing the nodes which are used for the features. The \n\t * parameters of this object match what is allowed by sDom - i.e.\n\t *   <ul>\n\t *     <li>'l' - Length changing</li>\n\t *     <li>'f' - Filtering input</li>\n\t *     <li>'t' - The table!</li>\n\t *     <li>'i' - Information</li>\n\t *     <li>'p' - Pagination</li>\n\t *     <li>'r' - pRocessing</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aanFeatures\": [],\n\t\n\t/**\n\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t * information.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoData\": [],\n\t\n\t/**\n\t * Array of indexes which are in the current display (after filtering etc)\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplay\": [],\n\t\n\t/**\n\t * Array of indexes for display - no filtering\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplayMaster\": [],\n\t\n\t/**\n\t * Store information about each column that is in use\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoColumns\": [],\n\t\n\t/**\n\t * Store information about the table's header\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeader\": [],\n\t\n\t/**\n\t * Store information about the table's footer\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooter\": [],\n\t\n\t/**\n\t * Search data array for regular expression searching\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asDataSearch\": [],\n\t\n\t/**\n\t * Store the applied global search information in case we want to force a \n\t * research or compare the old search to a new one.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t */\n\t\"oPreviousSearch\": {},\n\t\n\t/**\n\t * Store the applied search for each column - see \n\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t * filtering information for each column.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreSearchCols\": [],\n\t\n\t/**\n\t * Sorting that is applied to the table. Note that the inner arrays are\n\t * used in the following manner:\n\t * <ul>\n\t *   <li>Index 0 - column number</li>\n\t *   <li>Index 1 - current sorting direction</li>\n\t *   <li>Index 2 - index of asSorting for this column</li>\n\t * </ul>\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @todo These inner arrays should really be objects\n\t */\n\t\"aaSorting\": null,\n\t\n\t/**\n\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t * aaSorting).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array|null\n\t *  @default null\n\t */\n\t\"aaSortingFixed\": null,\n\t\n\t/**\n\t * Classes to use for the striping of a table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asStripeClasses\": null,\n\t\n\t/**\n\t * If restoring a table - we should restore its striping classes as well\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asDestroyStripes\": [],\n\t\n\t/**\n\t * If restoring a table - we should restore its width \n\t *  @type int\n\t *  @default 0\n\t */\n\t\"sDestroyWidth\": 0,\n\t\n\t/**\n\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCallback\": [],\n\t\n\t/**\n\t * Callback functions for the header on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeaderCallback\": [],\n\t\n\t/**\n\t * Callback function for the footer on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooterCallback\": [],\n\t\n\t/**\n\t * Array of callback functions for draw callback functions\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDrawCallback\": [],\n\t\n\t/**\n\t * Array of callback functions for row created function\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCreatedCallback\": [],\n\t\n\t/**\n\t * Callback functions for just before the table is redrawn. A return of \n\t * false will be used to cancel the draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreDrawCallback\": [],\n\t\n\t/**\n\t * Callback functions for when the table has been initialised.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoInitComplete\": [],\n\n\t\n\t/**\n\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t * saving state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSaveParams\": [],\n\t\n\t/**\n\t * Callbacks for modifying the settings that have been stored for state saving\n\t * prior to using the stored values to restore the state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoadParams\": [],\n\t\n\t/**\n\t * Callbacks for operating on the settings object once the saved state has been\n\t * loaded\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoaded\": [],\n\t\n\t/**\n\t * Cache the table ID for quick access\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sTableId\": \"\",\n\t\n\t/**\n\t * The TABLE node for the main table\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTable\": null,\n\t\n\t/**\n\t * Permanent ref to the thead element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTHead\": null,\n\t\n\t/**\n\t * Permanent ref to the tfoot element - if it exists\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTFoot\": null,\n\t\n\t/**\n\t * Permanent ref to the tbody element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTBody\": null,\n\t\n\t/**\n\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTableWrapper\": null,\n\t\n\t/**\n\t * Indicate if when using server-side processing the loading of data \n\t * should be deferred until the second draw.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDeferLoading\": false,\n\t\n\t/**\n\t * Indicate if all required information has been read in\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bInitialised\": false,\n\t\n\t/**\n\t * Information about open rows. Each object in the array has the parameters\n\t * 'nTr' and 'nParent'\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoOpenRows\": [],\n\t\n\t/**\n\t * Dictate the positioning of DataTables' control elements - see\n\t * {@link DataTable.model.oInit.sDom}.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDom\": null,\n\t\n\t/**\n\t * Which type of pagination should be used.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string \n\t *  @default two_button\n\t */\n\t\"sPaginationType\": \"two_button\",\n\t\n\t/**\n\t * The cookie duration (for bStateSave) in seconds.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iCookieDuration\": 0,\n\t\n\t/**\n\t * The cookie name prefix.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sCookiePrefix\": \"\",\n\t\n\t/**\n\t * Callback function for cookie creation.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t *  @default null\n\t */\n\t\"fnCookieCallback\": null,\n\t\n\t/**\n\t * Array of callback functions for state saving. Each array element is an \n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t *       and the JSON string to save that has been thus far created. Returns\n\t *       a JSON string to be inserted into a json object \n\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSave\": [],\n\t\n\t/**\n\t * Array of callback functions for state loading. Each array element is an \n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings \n\t *       and the object stored. May return false to cancel state loading</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoad\": [],\n\t\n\t/**\n\t * State that was loaded from the cookie. Useful for back reference\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oLoadedState\": null,\n\t\n\t/**\n\t * Source url for AJAX data for the table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sAjaxSource\": null,\n\t\n\t/**\n\t * Property from a given object from which to read the table data from. This\n\t * can be an empty string (when not server-side processing), in which case \n\t * it is  assumed an an array is given directly.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sAjaxDataProp\": null,\n\t\n\t/**\n\t * Note if draw should be blocked while getting data\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bAjaxDataGet\": true,\n\t\n\t/**\n\t * The last jQuery XHR object that was used for server-side data gathering. \n\t * This can be used for working with the XHR information in one of the \n\t * callbacks\n\t *  @type object\n\t *  @default null\n\t */\n\t\"jqXHR\": null,\n\t\n\t/**\n\t * Function to get the server-side data.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnServerData\": null,\n\t\n\t/**\n\t * Functions which are called prior to sending an Ajax request so extra \n\t * parameters can easily be sent to the server\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoServerParams\": [],\n\t\n\t/**\n\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if \n\t * required).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sServerMethod\": null,\n\t\n\t/**\n\t * Format numbers for display.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnFormatNumber\": null,\n\t\n\t/**\n\t * List of options that can be used for the user selectable length menu.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aLengthMenu\": null,\n\t\n\t/**\n\t * Counter for the draws that the table does. Also used as a tracker for\n\t * server-side processing\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iDraw\": 0,\n\t\n\t/**\n\t * Indicate if a redraw is being done - useful for Ajax\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDrawing\": false,\n\t\n\t/**\n\t * Draw index (iDraw) of the last error when parsing the returned data\n\t *  @type int\n\t *  @default -1\n\t */\n\t\"iDrawError\": -1,\n\t\n\t/**\n\t * Paging display length\n\t *  @type int\n\t *  @default 10\n\t */\n\t\"_iDisplayLength\": 10,\n\n\t/**\n\t * Paging start point - aiDisplay index\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"_iDisplayStart\": 0,\n\n\t/**\n\t * Paging end point - aiDisplay index. Use fnDisplayEnd rather than\n\t * this property to get the end point\n\t *  @type int\n\t *  @default 10\n\t *  @private\n\t */\n\t\"_iDisplayEnd\": 10,\n\t\n\t/**\n\t * Server-side processing - number of records in the result set\n\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type int\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsTotal\": 0,\n\n\t/**\n\t * Server-side processing - number of records in the current display set\n\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type boolean\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsDisplay\": 0,\n\t\n\t/**\n\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t */\n\t\"bJUI\": null,\n\t\n\t/**\n\t * The classes to use for the table\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oClasses\": {},\n\t\n\t/**\n\t * Flag attached to the settings object so you can check in the draw \n\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bFiltered\": false,\n\t\n\t/**\n\t * Flag attached to the settings object so you can check in the draw \n\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bSorted\": false,\n\t\n\t/**\n\t * Indicate that if multiple rows are in the header and there is more than \n\t * one unique cell per column, if the top one (true) or bottom one (false) \n\t * should be used for sorting / title by DataTables.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t */\n\t\"bSortCellsTop\": null,\n\t\n\t/**\n\t * Initialisation object that is used for the table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInit\": null,\n\t\n\t/**\n\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t * destroy so they can clean up markup and events.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDestroyCallback\": [],\n\n\t\n\t/**\n\t * Get the number of records in the current record set, before filtering\n\t *  @type function\n\t */\n\t\"fnRecordsTotal\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\treturn parseInt(this._iRecordsTotal, 10);\n\t\t} else {\n\t\t\treturn this.aiDisplayMaster.length;\n\t\t}\n\t},\n\t\n\t/**\n\t * Get the number of records in the current record set, after filtering\n\t *  @type function\n\t */\n\t\"fnRecordsDisplay\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\treturn parseInt(this._iRecordsDisplay, 10);\n\t\t} else {\n\t\t\treturn this.aiDisplay.length;\n\t\t}\n\t},\n\t\n\t/**\n\t * Set the display end point - aiDisplay index\n\t *  @type function\n\t *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here\n\t */\n\t\"fnDisplayEnd\": function ()\n\t{\n\t\tif ( this.oFeatures.bServerSide ) {\n\t\t\tif ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {\n\t\t\t\treturn this._iDisplayStart+this.aiDisplay.length;\n\t\t\t} else {\n\t\t\t\treturn Math.min( this._iDisplayStart+this._iDisplayLength, \n\t\t\t\t\tthis._iRecordsDisplay );\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._iDisplayEnd;\n\t\t}\n\t},\n\t\n\t/**\n\t * The DataTables object for this table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInstance\": null,\n\t\n\t/**\n\t * Unique identifier for each instance of the DataTables object. If there\n\t * is an ID on the table node, then it takes that value, otherwise an\n\t * incrementing internal counter is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sInstance\": null,\n\n\t/**\n\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t * keyboard navigation of the table and its controls.\n\t */\n\t\"iTabIndex\": 0,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollHead\": null,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollFoot\": null\n};\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/.gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln    merge=union\n*.csproj merge=union\n*.vbproj merge=union\n*.fsproj merge=union\n*.dbproj merge=union\n\n# Standard to msysgit\n*.doc\t diff=astextplain\n*.DOC\t diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot  diff=astextplain\n*.DOT  diff=astextplain\n*.pdf  diff=astextplain\n*.PDF\t diff=astextplain\n*.rtf\t diff=astextplain\n*.RTF\t diff=astextplain\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/.gitignore",
    "content": "#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.classpath\n.settings/\n.loadpath\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# PDT-specific\n.buildpath\n\n\n#################\n## Visual Studio\n#################\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n[Dd]ebug/\n[Rr]elease/\n*_i.c\n*_p.c\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.vspscc\n.builds\n*.dotCover\n\n## TODO: If you have NuGet Package Restore enabled, uncomment this\n#packages/\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n\n# Visual Studio profiler\n*.psess\n*.vsp\n\n# ReSharper is a .NET coding add-in\n_ReSharper*\n\n# Installshield output folder\n[Ee]xpress\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish\n\n# Others\n[Bb]in\n[Oo]bj\nsql\nTestResults\n*.Cache\nClientBin\nstylecop.*\n~$*\n*.dbmdl\nGenerated_Code #added for RIA/Silverlight projects\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\n\n\n\n############\n## Windows\n############\n\n# Windows image file caches\nThumbs.db\n\n# Folder config file\nDesktop.ini\n\n\n#############\n## Python\n#############\n\n*.py[co]\n\n# Packages\n*.egg\n*.egg-info\ndist\nbuild\neggs\nparts\nbin\nvar\nsdist\ndevelop-eggs\n.installed.cfg\n\n# Installer logs\npip-log.txt\n\n# Unit test / coverage reports\n.coverage\n.tox\n\n#Translations\n*.mo\n\n#Mr Developer\n.mr.developer.cfg\n\n# Mac crap\n.DS_Store\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/LICENSE",
    "content": "Copyright 2012 Steven Usher & Brad Vincent\n\nReleased under the MIT license\nYou are free to use FooTable in commercial projects as long as this copyright header is left intact."
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/README.md",
    "content": "FooTable\n========\n\nFooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome - No matter how many columns of data you may have in them.\n\n![FooTable](https://raw.github.com/bradvin/FooTable/master/screenshot.jpg \"FooTable\")\n\nFooTable also now has a sorting and filtering add-on. Footable also works with jQuery 1.4.4 and above!\n\nIndex\n-----\n\n* [What does it do?](#whatdoesitdo)\n* [Demo](#demo)\n* [Data Attribute Configuration](#dataattributeconfig)\n* [Breakpoints](#breakpoints)\n* [Usage](#usage)\n* [Extensible](#extensible)\n  * [Parsers](#parsers)\n* [Thanks](#thanks)\n\n<h2 id=\"whatdoesitdo\">What does it do?</h2>\n\nFooTable transforms your HTML tables into expandable responsive tables. This is how it works:\n\n1. It hides certain columns of data at different resolutions (we call these breakpoints).\n2. Rows become expandable to show the data that was hidden.\n\nSo simple! So all the data that is hidden can always be seen just by clicking the row.\n\n<h2 id=\"demo\">Demo</h2>\n\nCheck out the [FooTable homepage](http://themergency.com/footable/) where we will be adding more demos, including the responsive demo!\n\n<h2 id=\"dataattributeconfig\">Data Attribute Configuration</h2>\n\nOne of the main goals of FooTable was to make it completely configurable via data attributes inside the table. We wanted you to be able to look at the HTML markup and see exactly how the FooTable was going to function. Take a look at this markup for example:\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-class=\"expand\">\n        First Name\n      </th>\n      <th>\n        Last Name\n      </th>\n      <th data-hide=\"phone,tablet\">\n        Job Title\n      </th>\n      <th data-hide=\"phone,tablet\">\n        DOB\n      </th>\n      <th data-hide=\"phone\">\n        Status\n      </th>\n    </tr>\n  </thead>\n```\n\nSo you can immediately see that certain columns will be hidden on phones and tablets. We are also going to assign all cells in the first column with a class of \"expand\" - this is used to style the cool plus/minus icons in the demo.\n\nAll available \"data-\" attributes are listed below with their descriptions. The \"Applied To\" column specifies whether the attribute should be added to the table header cells or body cells.\n\n<table>\n  <tr>\n    <th>Name</th>\n    <th>Values</th>\n    <th>Applied To</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-class</td>\n    <td style=\"white-space:nowrap;\">CSS Class</td>\n    <td>header</td>\n    <td>This specifies a CSS class to be applied to all cells in a column.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-hide</td>\n    <td style=\"white-space:nowrap;\"><a href=\"#breakpoints\">breakpoint</a> | default</td>\n    <td>header</td>\n    <td>This specifies at which breakpoints to hide a column. Seperate multiple using a comma.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-ignore</td>\n    <td style=\"white-space:nowrap;\">true | false</td>\n    <td>header</td>\n    <td>This will stop the column being included in the detail row creation.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-name</td>\n    <td style=\"white-space:nowrap;\">String</td>\n    <td>header</td>\n    <td>This will override the name of the column in the detail row.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-type</td>\n    <td style=\"white-space:nowrap;\"><a href=\"#parsers\">parser</a> | alpha</td>\n    <td>header</td>\n    <td>This specifies the parser to use to retrieve a cell's value.</td>\n  </tr>\n  <tr>\n    <td style=\"white-space:nowrap;\">data-value</td>\n    <td style=\"white-space:nowrap;\">Any</td>\n    <td>body</td>\n    <td>This specifies a value to use other than the text of the cell.</td>\n  </tr>\n</table>\n\n<h2 id=\"breakpoints\">Breakpoints</h2>\n\nWe work with the concepts of \"breakpoints\", which are different device widths we care about. The default breakpoints are:\n\n```javascript\nbreakpoints: {\n  phone: 480,\n  tablet: 1024\n}\n```\n\nSo looking at the markup in the *Data Attribute Configuration* section, you can now tell that the *Job Title*, *DOB* and *Status* columns will be hidden when the screen width is below 480 (phone).\n\nThere are also two built-in breakpoints called \"default\" and \"all\".\n\nThe \"default\" breakpoint is the fallback breakpoint for when the current screen width is larger than any defined breakpoint. Looking at the above JS snippet the \"default\" breakpoint would be applied once the screen width is larger than 1024 (tablet).\n\nThe last breakpoint \"all\" is pretty straight forward in it's use. You can always hide a column on any screen width by applying the *data-hide=\"all\"* attribute to the header.\n\n<h2 id=\"usage\">Usage</h2>\n\nCreate a simple table (don't forget to set the data attributes for each column!):\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th>Name</th>\n      <th data-hide=\"phone,tablet\">Phone</th>\n      <th data-hide=\"phone,tablet\">Email</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Bob Builder</td>\n      <td>555-12345</td>\n      <td>bob@home.com</td>\n    </tr>\n    <tr>\n      <td>Bridget Jones</td>\n      <td>544-776655</td>\n      <td>bjones@mysite.com</td>\n    </tr>\n    <tr>\n      <td>Tom Cruise</td>\n      <td>555-99911</td>\n      <td>cruise1@crazy.com</td>\n    </tr>\n  </tbody>\n</table>\n```\n\nThen include the FooTable CSS and JS in your page head:\n\n```html\n<link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n<!-- obviously you have jQuery already included -->\n<script src=\"js/footable.js\" type=\"text/javascript\"></script>\n```\n\nAnd finally, call the FooTable plugin:\n\n```html\n<script type=\"text/javascript\">\n  $(function() {\n    $('.footable').footable();\n  });\n</script>\n```\n\n<h2 id=\"extensible\">Extensible</h2>\n\nAnother goal of FooTable was to make it super extensible. If you look at the code you will see that there is a plugin framework within the plugin, so extra mods can be attached just by including another javascript file. We also didn't want to bloat FooTable, so you can only use what you need and leave out everything else. \n\nWorking add-ons:\n\n* sorting\n* filtering\n\nOthere add-on ideas so far are:\n\n* conditional formatting\n* json loading\n\n<h3 id=\"parsers\">Parsers</h3>\n\nParsers are the heart of FooTable as data is what we are displaying and working with and due to this they are highly extensible. They are used to retrieve values from cells or alternatively from a \"data-value\" attribute.\nBy default there is only an \"alpha\" parser and this will be used unless a custom parser is implemented and a column is set to use it via the \"data-type\" attribute.\n\nThe below is the very simple \"alpha\" parser used by default to retrieve a cell's value:\n\n```javascript\nalpha: function (cell) {\n  return $(cell).data('value') || $.trim($(cell).text());\n}\n```\n\nThe below is an example of a numeric parser and how to apply it (these can be wrapped up in a plugin; see the sortable plugin):\n\n```html\n<script type=\"text/javascript\">\n  $(function() {\n    $('.footable').footable({\n      parsers: {\n        numeric: function (cell) {\n          var val = $(cell).data('value') || $(cell).text().replace(/[^0-9.-]/g, '');\n          val = parseFloat(val);\n          if (isNaN(val)) val = 0;\n          return val;\n        }\n      }\n    });\n  });\n</script>\n```\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-type=\"numeric\">\n        Count\n      </th>\n      ...\n    </tr>\n  </thead>\n  ...\n```\n\nAs you can see in the snippet for the \"numeric\" parser, like the \"alpha\" parser, they both check for a \"data-value\" attribute and will use this value before using a cell's text.\n\nAn example of this could look like the below, where you want to display the name of a number instead of the actual value:\n\n```html\n<table class=\"footable\">\n  <thead>\n    <tr>\n      <th data-type=\"numeric\">\n        Count\n      </th>\n      ...\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td data-value=\"0\">Zero</td>\n      ...\n    </tr>\n    <tr>\n      <td data-value=\"1\">One</td>\n      ...\n    </tr>\n    ...\n  </tbody>\n  ...\n```\n\n<h2 id=\"thanks\">Thanks</h2>\n\nWe would not have created FooTable without inspiration from others. Thanks must be given to:\n\n* Catalin for his [original table CSS](http://www.red-team-design.com/practical-css3-tables-with-rounded-corners)\n* [Chris Coyier](http://css-tricks.com/responsive-data-tables/) (also check out Chris' [responsive table roundup post](http://css-tricks.com/responsive-data-table-roundup/))\n* [Zurb](http://www.zurb.com/playground/responsive-tables)\n* [Dave Bushell](http://dbushell.com/2012/01/05/responsive-tables-2/)\n* [Filament Group](http://filamentgroup.com/examples/rwd-table-patterns/)\n* [Stewart Curry](http://www.irishstu.com/stublog/2011/12/13/tables-responsive-design-part-2-nchilds/)"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-responsive.css",
    "content": "/*!\n * Bootstrap Responsive v2.3.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.clearfix {\n  *zoom: 1;\n}\n\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.clearfix:after {\n  clear: both;\n}\n\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\n.hidden {\n  display: none;\n  visibility: hidden;\n}\n\n.visible-phone {\n  display: none !important;\n}\n\n.visible-tablet {\n  display: none !important;\n}\n\n.hidden-desktop {\n  display: none !important;\n}\n\n.visible-desktop {\n  display: inherit !important;\n}\n\n@media (min-width: 768px) and (max-width: 979px) {\n  .hidden-desktop {\n    display: inherit !important;\n  }\n  .visible-desktop {\n    display: none !important ;\n  }\n  .visible-tablet {\n    display: inherit !important;\n  }\n  .hidden-tablet {\n    display: none !important;\n  }\n}\n\n@media (max-width: 767px) {\n  .hidden-desktop {\n    display: inherit !important;\n  }\n  .visible-desktop {\n    display: none !important;\n  }\n  .visible-phone {\n    display: inherit !important;\n  }\n  .hidden-phone {\n    display: none !important;\n  }\n}\n\n.visible-print {\n  display: none !important;\n}\n\n@media print {\n  .visible-print {\n    display: inherit !important;\n  }\n  .hidden-print {\n    display: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .row {\n    margin-left: -30px;\n    *zoom: 1;\n  }\n  .row:before,\n  .row:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row:after {\n    clear: both;\n  }\n  [class*=\"span\"] {\n    float: left;\n    min-height: 1px;\n    margin-left: 30px;\n  }\n  .container,\n  .navbar-static-top .container,\n  .navbar-fixed-top .container,\n  .navbar-fixed-bottom .container {\n    width: 1170px;\n  }\n  .span12 {\n    width: 1170px;\n  }\n  .span11 {\n    width: 1070px;\n  }\n  .span10 {\n    width: 970px;\n  }\n  .span9 {\n    width: 870px;\n  }\n  .span8 {\n    width: 770px;\n  }\n  .span7 {\n    width: 670px;\n  }\n  .span6 {\n    width: 570px;\n  }\n  .span5 {\n    width: 470px;\n  }\n  .span4 {\n    width: 370px;\n  }\n  .span3 {\n    width: 270px;\n  }\n  .span2 {\n    width: 170px;\n  }\n  .span1 {\n    width: 70px;\n  }\n  .offset12 {\n    margin-left: 1230px;\n  }\n  .offset11 {\n    margin-left: 1130px;\n  }\n  .offset10 {\n    margin-left: 1030px;\n  }\n  .offset9 {\n    margin-left: 930px;\n  }\n  .offset8 {\n    margin-left: 830px;\n  }\n  .offset7 {\n    margin-left: 730px;\n  }\n  .offset6 {\n    margin-left: 630px;\n  }\n  .offset5 {\n    margin-left: 530px;\n  }\n  .offset4 {\n    margin-left: 430px;\n  }\n  .offset3 {\n    margin-left: 330px;\n  }\n  .offset2 {\n    margin-left: 230px;\n  }\n  .offset1 {\n    margin-left: 130px;\n  }\n  .row-fluid {\n    width: 100%;\n    *zoom: 1;\n  }\n  .row-fluid:before,\n  .row-fluid:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row-fluid:after {\n    clear: both;\n  }\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: left;\n    width: 100%;\n    min-height: 30px;\n    margin-left: 2.564102564102564%;\n    *margin-left: 2.5109110747408616%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"span\"]:first-child {\n    margin-left: 0;\n  }\n  .row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 2.564102564102564%;\n  }\n  .row-fluid .span12 {\n    width: 100%;\n    *width: 99.94680851063829%;\n  }\n  .row-fluid .span11 {\n    width: 91.45299145299145%;\n    *width: 91.39979996362975%;\n  }\n  .row-fluid .span10 {\n    width: 82.90598290598291%;\n    *width: 82.8527914166212%;\n  }\n  .row-fluid .span9 {\n    width: 74.35897435897436%;\n    *width: 74.30578286961266%;\n  }\n  .row-fluid .span8 {\n    width: 65.81196581196582%;\n    *width: 65.75877432260411%;\n  }\n  .row-fluid .span7 {\n    width: 57.26495726495726%;\n    *width: 57.21176577559556%;\n  }\n  .row-fluid .span6 {\n    width: 48.717948717948715%;\n    *width: 48.664757228587014%;\n  }\n  .row-fluid .span5 {\n    width: 40.17094017094017%;\n    *width: 40.11774868157847%;\n  }\n  .row-fluid .span4 {\n    width: 31.623931623931625%;\n    *width: 31.570740134569924%;\n  }\n  .row-fluid .span3 {\n    width: 23.076923076923077%;\n    *width: 23.023731587561375%;\n  }\n  .row-fluid .span2 {\n    width: 14.52991452991453%;\n    *width: 14.476723040552828%;\n  }\n  .row-fluid .span1 {\n    width: 5.982905982905983%;\n    *width: 5.929714493544281%;\n  }\n  .row-fluid .offset12 {\n    margin-left: 105.12820512820512%;\n    *margin-left: 105.02182214948171%;\n  }\n  .row-fluid .offset12:first-child {\n    margin-left: 102.56410256410257%;\n    *margin-left: 102.45771958537915%;\n  }\n  .row-fluid .offset11 {\n    margin-left: 96.58119658119658%;\n    *margin-left: 96.47481360247316%;\n  }\n  .row-fluid .offset11:first-child {\n    margin-left: 94.01709401709402%;\n    *margin-left: 93.91071103837061%;\n  }\n  .row-fluid .offset10 {\n    margin-left: 88.03418803418803%;\n    *margin-left: 87.92780505546462%;\n  }\n  .row-fluid .offset10:first-child {\n    margin-left: 85.47008547008548%;\n    *margin-left: 85.36370249136206%;\n  }\n  .row-fluid .offset9 {\n    margin-left: 79.48717948717949%;\n    *margin-left: 79.38079650845607%;\n  }\n  .row-fluid .offset9:first-child {\n    margin-left: 76.92307692307693%;\n    *margin-left: 76.81669394435352%;\n  }\n  .row-fluid .offset8 {\n    margin-left: 70.94017094017094%;\n    *margin-left: 70.83378796144753%;\n  }\n  .row-fluid .offset8:first-child {\n    margin-left: 68.37606837606839%;\n    *margin-left: 68.26968539734497%;\n  }\n  .row-fluid .offset7 {\n    margin-left: 62.393162393162385%;\n    *margin-left: 62.28677941443899%;\n  }\n  .row-fluid .offset7:first-child {\n    margin-left: 59.82905982905982%;\n    *margin-left: 59.72267685033642%;\n  }\n  .row-fluid .offset6 {\n    margin-left: 53.84615384615384%;\n    *margin-left: 53.739770867430444%;\n  }\n  .row-fluid .offset6:first-child {\n    margin-left: 51.28205128205128%;\n    *margin-left: 51.175668303327875%;\n  }\n  .row-fluid .offset5 {\n    margin-left: 45.299145299145295%;\n    *margin-left: 45.1927623204219%;\n  }\n  .row-fluid .offset5:first-child {\n    margin-left: 42.73504273504273%;\n    *margin-left: 42.62865975631933%;\n  }\n  .row-fluid .offset4 {\n    margin-left: 36.75213675213675%;\n    *margin-left: 36.645753773413354%;\n  }\n  .row-fluid .offset4:first-child {\n    margin-left: 34.18803418803419%;\n    *margin-left: 34.081651209310785%;\n  }\n  .row-fluid .offset3 {\n    margin-left: 28.205128205128204%;\n    *margin-left: 28.0987452264048%;\n  }\n  .row-fluid .offset3:first-child {\n    margin-left: 25.641025641025642%;\n    *margin-left: 25.53464266230224%;\n  }\n  .row-fluid .offset2 {\n    margin-left: 19.65811965811966%;\n    *margin-left: 19.551736679396257%;\n  }\n  .row-fluid .offset2:first-child {\n    margin-left: 17.094017094017094%;\n    *margin-left: 16.98763411529369%;\n  }\n  .row-fluid .offset1 {\n    margin-left: 11.11111111111111%;\n    *margin-left: 11.004728132387708%;\n  }\n  .row-fluid .offset1:first-child {\n    margin-left: 8.547008547008547%;\n    *margin-left: 8.440625568285142%;\n  }\n  input,\n  textarea,\n  .uneditable-input {\n    margin-left: 0;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 30px;\n  }\n  input.span12,\n  textarea.span12,\n  .uneditable-input.span12 {\n    width: 1156px;\n  }\n  input.span11,\n  textarea.span11,\n  .uneditable-input.span11 {\n    width: 1056px;\n  }\n  input.span10,\n  textarea.span10,\n  .uneditable-input.span10 {\n    width: 956px;\n  }\n  input.span9,\n  textarea.span9,\n  .uneditable-input.span9 {\n    width: 856px;\n  }\n  input.span8,\n  textarea.span8,\n  .uneditable-input.span8 {\n    width: 756px;\n  }\n  input.span7,\n  textarea.span7,\n  .uneditable-input.span7 {\n    width: 656px;\n  }\n  input.span6,\n  textarea.span6,\n  .uneditable-input.span6 {\n    width: 556px;\n  }\n  input.span5,\n  textarea.span5,\n  .uneditable-input.span5 {\n    width: 456px;\n  }\n  input.span4,\n  textarea.span4,\n  .uneditable-input.span4 {\n    width: 356px;\n  }\n  input.span3,\n  textarea.span3,\n  .uneditable-input.span3 {\n    width: 256px;\n  }\n  input.span2,\n  textarea.span2,\n  .uneditable-input.span2 {\n    width: 156px;\n  }\n  input.span1,\n  textarea.span1,\n  .uneditable-input.span1 {\n    width: 56px;\n  }\n  .thumbnails {\n    margin-left: -30px;\n  }\n  .thumbnails > li {\n    margin-left: 30px;\n  }\n  .row-fluid .thumbnails {\n    margin-left: 0;\n  }\n}\n\n@media (min-width: 768px) and (max-width: 979px) {\n  .row {\n    margin-left: -20px;\n    *zoom: 1;\n  }\n  .row:before,\n  .row:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row:after {\n    clear: both;\n  }\n  [class*=\"span\"] {\n    float: left;\n    min-height: 1px;\n    margin-left: 20px;\n  }\n  .container,\n  .navbar-static-top .container,\n  .navbar-fixed-top .container,\n  .navbar-fixed-bottom .container {\n    width: 724px;\n  }\n  .span12 {\n    width: 724px;\n  }\n  .span11 {\n    width: 662px;\n  }\n  .span10 {\n    width: 600px;\n  }\n  .span9 {\n    width: 538px;\n  }\n  .span8 {\n    width: 476px;\n  }\n  .span7 {\n    width: 414px;\n  }\n  .span6 {\n    width: 352px;\n  }\n  .span5 {\n    width: 290px;\n  }\n  .span4 {\n    width: 228px;\n  }\n  .span3 {\n    width: 166px;\n  }\n  .span2 {\n    width: 104px;\n  }\n  .span1 {\n    width: 42px;\n  }\n  .offset12 {\n    margin-left: 764px;\n  }\n  .offset11 {\n    margin-left: 702px;\n  }\n  .offset10 {\n    margin-left: 640px;\n  }\n  .offset9 {\n    margin-left: 578px;\n  }\n  .offset8 {\n    margin-left: 516px;\n  }\n  .offset7 {\n    margin-left: 454px;\n  }\n  .offset6 {\n    margin-left: 392px;\n  }\n  .offset5 {\n    margin-left: 330px;\n  }\n  .offset4 {\n    margin-left: 268px;\n  }\n  .offset3 {\n    margin-left: 206px;\n  }\n  .offset2 {\n    margin-left: 144px;\n  }\n  .offset1 {\n    margin-left: 82px;\n  }\n  .row-fluid {\n    width: 100%;\n    *zoom: 1;\n  }\n  .row-fluid:before,\n  .row-fluid:after {\n    display: table;\n    line-height: 0;\n    content: \"\";\n  }\n  .row-fluid:after {\n    clear: both;\n  }\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: left;\n    width: 100%;\n    min-height: 30px;\n    margin-left: 2.7624309392265194%;\n    *margin-left: 2.709239449864817%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"span\"]:first-child {\n    margin-left: 0;\n  }\n  .row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 2.7624309392265194%;\n  }\n  .row-fluid .span12 {\n    width: 100%;\n    *width: 99.94680851063829%;\n  }\n  .row-fluid .span11 {\n    width: 91.43646408839778%;\n    *width: 91.38327259903608%;\n  }\n  .row-fluid .span10 {\n    width: 82.87292817679558%;\n    *width: 82.81973668743387%;\n  }\n  .row-fluid .span9 {\n    width: 74.30939226519337%;\n    *width: 74.25620077583166%;\n  }\n  .row-fluid .span8 {\n    width: 65.74585635359117%;\n    *width: 65.69266486422946%;\n  }\n  .row-fluid .span7 {\n    width: 57.18232044198895%;\n    *width: 57.12912895262725%;\n  }\n  .row-fluid .span6 {\n    width: 48.61878453038674%;\n    *width: 48.56559304102504%;\n  }\n  .row-fluid .span5 {\n    width: 40.05524861878453%;\n    *width: 40.00205712942283%;\n  }\n  .row-fluid .span4 {\n    width: 31.491712707182323%;\n    *width: 31.43852121782062%;\n  }\n  .row-fluid .span3 {\n    width: 22.92817679558011%;\n    *width: 22.87498530621841%;\n  }\n  .row-fluid .span2 {\n    width: 14.3646408839779%;\n    *width: 14.311449394616199%;\n  }\n  .row-fluid .span1 {\n    width: 5.801104972375691%;\n    *width: 5.747913483013988%;\n  }\n  .row-fluid .offset12 {\n    margin-left: 105.52486187845304%;\n    *margin-left: 105.41847889972962%;\n  }\n  .row-fluid .offset12:first-child {\n    margin-left: 102.76243093922652%;\n    *margin-left: 102.6560479605031%;\n  }\n  .row-fluid .offset11 {\n    margin-left: 96.96132596685082%;\n    *margin-left: 96.8549429881274%;\n  }\n  .row-fluid .offset11:first-child {\n    margin-left: 94.1988950276243%;\n    *margin-left: 94.09251204890089%;\n  }\n  .row-fluid .offset10 {\n    margin-left: 88.39779005524862%;\n    *margin-left: 88.2914070765252%;\n  }\n  .row-fluid .offset10:first-child {\n    margin-left: 85.6353591160221%;\n    *margin-left: 85.52897613729868%;\n  }\n  .row-fluid .offset9 {\n    margin-left: 79.8342541436464%;\n    *margin-left: 79.72787116492299%;\n  }\n  .row-fluid .offset9:first-child {\n    margin-left: 77.07182320441989%;\n    *margin-left: 76.96544022569647%;\n  }\n  .row-fluid .offset8 {\n    margin-left: 71.2707182320442%;\n    *margin-left: 71.16433525332079%;\n  }\n  .row-fluid .offset8:first-child {\n    margin-left: 68.50828729281768%;\n    *margin-left: 68.40190431409427%;\n  }\n  .row-fluid .offset7 {\n    margin-left: 62.70718232044199%;\n    *margin-left: 62.600799341718584%;\n  }\n  .row-fluid .offset7:first-child {\n    margin-left: 59.94475138121547%;\n    *margin-left: 59.838368402492065%;\n  }\n  .row-fluid .offset6 {\n    margin-left: 54.14364640883978%;\n    *margin-left: 54.037263430116376%;\n  }\n  .row-fluid .offset6:first-child {\n    margin-left: 51.38121546961326%;\n    *margin-left: 51.27483249088986%;\n  }\n  .row-fluid .offset5 {\n    margin-left: 45.58011049723757%;\n    *margin-left: 45.47372751851417%;\n  }\n  .row-fluid .offset5:first-child {\n    margin-left: 42.81767955801105%;\n    *margin-left: 42.71129657928765%;\n  }\n  .row-fluid .offset4 {\n    margin-left: 37.01657458563536%;\n    *margin-left: 36.91019160691196%;\n  }\n  .row-fluid .offset4:first-child {\n    margin-left: 34.25414364640884%;\n    *margin-left: 34.14776066768544%;\n  }\n  .row-fluid .offset3 {\n    margin-left: 28.45303867403315%;\n    *margin-left: 28.346655695309746%;\n  }\n  .row-fluid .offset3:first-child {\n    margin-left: 25.69060773480663%;\n    *margin-left: 25.584224756083227%;\n  }\n  .row-fluid .offset2 {\n    margin-left: 19.88950276243094%;\n    *margin-left: 19.783119783707537%;\n  }\n  .row-fluid .offset2:first-child {\n    margin-left: 17.12707182320442%;\n    *margin-left: 17.02068884448102%;\n  }\n  .row-fluid .offset1 {\n    margin-left: 11.32596685082873%;\n    *margin-left: 11.219583872105325%;\n  }\n  .row-fluid .offset1:first-child {\n    margin-left: 8.56353591160221%;\n    *margin-left: 8.457152932878806%;\n  }\n  input,\n  textarea,\n  .uneditable-input {\n    margin-left: 0;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 20px;\n  }\n  input.span12,\n  textarea.span12,\n  .uneditable-input.span12 {\n    width: 710px;\n  }\n  input.span11,\n  textarea.span11,\n  .uneditable-input.span11 {\n    width: 648px;\n  }\n  input.span10,\n  textarea.span10,\n  .uneditable-input.span10 {\n    width: 586px;\n  }\n  input.span9,\n  textarea.span9,\n  .uneditable-input.span9 {\n    width: 524px;\n  }\n  input.span8,\n  textarea.span8,\n  .uneditable-input.span8 {\n    width: 462px;\n  }\n  input.span7,\n  textarea.span7,\n  .uneditable-input.span7 {\n    width: 400px;\n  }\n  input.span6,\n  textarea.span6,\n  .uneditable-input.span6 {\n    width: 338px;\n  }\n  input.span5,\n  textarea.span5,\n  .uneditable-input.span5 {\n    width: 276px;\n  }\n  input.span4,\n  textarea.span4,\n  .uneditable-input.span4 {\n    width: 214px;\n  }\n  input.span3,\n  textarea.span3,\n  .uneditable-input.span3 {\n    width: 152px;\n  }\n  input.span2,\n  textarea.span2,\n  .uneditable-input.span2 {\n    width: 90px;\n  }\n  input.span1,\n  textarea.span1,\n  .uneditable-input.span1 {\n    width: 28px;\n  }\n}\n\n@media (max-width: 767px) {\n  body {\n    padding-right: 20px;\n    padding-left: 20px;\n  }\n  .navbar-fixed-top,\n  .navbar-fixed-bottom,\n  .navbar-static-top {\n    margin-right: -20px;\n    margin-left: -20px;\n  }\n  .container-fluid {\n    padding: 0;\n  }\n  .dl-horizontal dt {\n    float: none;\n    width: auto;\n    clear: none;\n    text-align: left;\n  }\n  .dl-horizontal dd {\n    margin-left: 0;\n  }\n  .container {\n    width: auto;\n  }\n  .row-fluid {\n    width: 100%;\n  }\n  .row,\n  .thumbnails {\n    margin-left: 0;\n  }\n  .thumbnails > li {\n    float: none;\n    margin-left: 0;\n  }\n  [class*=\"span\"],\n  .uneditable-input[class*=\"span\"],\n  .row-fluid [class*=\"span\"] {\n    display: block;\n    float: none;\n    width: 100%;\n    margin-left: 0;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .span12,\n  .row-fluid .span12 {\n    width: 100%;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .row-fluid [class*=\"offset\"]:first-child {\n    margin-left: 0;\n  }\n  .input-large,\n  .input-xlarge,\n  .input-xxlarge,\n  input[class*=\"span\"],\n  select[class*=\"span\"],\n  textarea[class*=\"span\"],\n  .uneditable-input {\n    display: block;\n    width: 100%;\n    min-height: 30px;\n    -webkit-box-sizing: border-box;\n       -moz-box-sizing: border-box;\n            box-sizing: border-box;\n  }\n  .input-prepend input,\n  .input-append input,\n  .input-prepend input[class*=\"span\"],\n  .input-append input[class*=\"span\"] {\n    display: inline-block;\n    width: auto;\n  }\n  .controls-row [class*=\"span\"] + [class*=\"span\"] {\n    margin-left: 0;\n  }\n  .modal {\n    position: fixed;\n    top: 20px;\n    right: 20px;\n    left: 20px;\n    width: auto;\n    margin: 0;\n  }\n  .modal.fade {\n    top: -100px;\n  }\n  .modal.fade.in {\n    top: 20px;\n  }\n}\n\n@media (max-width: 480px) {\n  .nav-collapse {\n    -webkit-transform: translate3d(0, 0, 0);\n  }\n  .page-header h1 small {\n    display: block;\n    line-height: 20px;\n  }\n  input[type=\"checkbox\"],\n  input[type=\"radio\"] {\n    border: 1px solid #ccc;\n  }\n  .form-horizontal .control-label {\n    float: none;\n    width: auto;\n    padding-top: 0;\n    text-align: left;\n  }\n  .form-horizontal .controls {\n    margin-left: 0;\n  }\n  .form-horizontal .control-list {\n    padding-top: 0;\n  }\n  .form-horizontal .form-actions {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n  .media .pull-left,\n  .media .pull-right {\n    display: block;\n    float: none;\n    margin-bottom: 10px;\n  }\n  .media-object {\n    margin-right: 0;\n    margin-left: 0;\n  }\n  .modal {\n    top: 10px;\n    right: 10px;\n    left: 10px;\n  }\n  .modal-header .close {\n    padding: 10px;\n    margin: -10px;\n  }\n  .carousel-caption {\n    position: static;\n  }\n}\n\n@media (max-width: 979px) {\n  body {\n    padding-top: 0;\n  }\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    position: static;\n  }\n  .navbar-fixed-top {\n    margin-bottom: 20px;\n  }\n  .navbar-fixed-bottom {\n    margin-top: 20px;\n  }\n  .navbar-fixed-top .navbar-inner,\n  .navbar-fixed-bottom .navbar-inner {\n    padding: 5px;\n  }\n  .navbar .container {\n    width: auto;\n    padding: 0;\n  }\n  .navbar .brand {\n    padding-right: 10px;\n    padding-left: 10px;\n    margin: 0 0 0 -5px;\n  }\n  .nav-collapse {\n    clear: both;\n  }\n  .nav-collapse .nav {\n    float: none;\n    margin: 0 0 10px;\n  }\n  .nav-collapse .nav > li {\n    float: none;\n  }\n  .nav-collapse .nav > li > a {\n    margin-bottom: 2px;\n  }\n  .nav-collapse .nav > .divider-vertical {\n    display: none;\n  }\n  .nav-collapse .nav .nav-header {\n    color: #777777;\n    text-shadow: none;\n  }\n  .nav-collapse .nav > li > a,\n  .nav-collapse .dropdown-menu a {\n    padding: 9px 15px;\n    font-weight: bold;\n    color: #777777;\n    -webkit-border-radius: 3px;\n       -moz-border-radius: 3px;\n            border-radius: 3px;\n  }\n  .nav-collapse .btn {\n    padding: 4px 10px 4px;\n    font-weight: normal;\n    -webkit-border-radius: 4px;\n       -moz-border-radius: 4px;\n            border-radius: 4px;\n  }\n  .nav-collapse .dropdown-menu li + li a {\n    margin-bottom: 2px;\n  }\n  .nav-collapse .nav > li > a:hover,\n  .nav-collapse .nav > li > a:focus,\n  .nav-collapse .dropdown-menu a:hover,\n  .nav-collapse .dropdown-menu a:focus {\n    background-color: #f2f2f2;\n  }\n  .navbar-inverse .nav-collapse .nav > li > a,\n  .navbar-inverse .nav-collapse .dropdown-menu a {\n    color: #999999;\n  }\n  .navbar-inverse .nav-collapse .nav > li > a:hover,\n  .navbar-inverse .nav-collapse .nav > li > a:focus,\n  .navbar-inverse .nav-collapse .dropdown-menu a:hover,\n  .navbar-inverse .nav-collapse .dropdown-menu a:focus {\n    background-color: #111111;\n  }\n  .nav-collapse.in .btn-group {\n    padding: 0;\n    margin-top: 5px;\n  }\n  .nav-collapse .dropdown-menu {\n    position: static;\n    top: auto;\n    left: auto;\n    display: none;\n    float: none;\n    max-width: none;\n    padding: 0;\n    margin: 0 15px;\n    background-color: transparent;\n    border: none;\n    -webkit-border-radius: 0;\n       -moz-border-radius: 0;\n            border-radius: 0;\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n  }\n  .nav-collapse .open > .dropdown-menu {\n    display: block;\n  }\n  .nav-collapse .dropdown-menu:before,\n  .nav-collapse .dropdown-menu:after {\n    display: none;\n  }\n  .nav-collapse .dropdown-menu .divider {\n    display: none;\n  }\n  .nav-collapse .nav > li > .dropdown-menu:before,\n  .nav-collapse .nav > li > .dropdown-menu:after {\n    display: none;\n  }\n  .nav-collapse .navbar-form,\n  .nav-collapse .navbar-search {\n    float: none;\n    padding: 10px 15px;\n    margin: 10px 0;\n    border-top: 1px solid #f2f2f2;\n    border-bottom: 1px solid #f2f2f2;\n    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n  .navbar-inverse .nav-collapse .navbar-form,\n  .navbar-inverse .nav-collapse .navbar-search {\n    border-top-color: #111111;\n    border-bottom-color: #111111;\n  }\n  .navbar .nav-collapse .nav.pull-right {\n    float: none;\n    margin-left: 0;\n  }\n  .nav-collapse,\n  .nav-collapse.collapse {\n    height: 0;\n    overflow: hidden;\n  }\n  .navbar .btn-navbar {\n    display: block;\n  }\n  .navbar-static .navbar-inner {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n}\n\n@media (min-width: 980px) {\n  .nav-collapse.collapse {\n    height: auto !important;\n    overflow: visible !important;\n  }\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap-tab.js",
    "content": "/* ========================================================\n * bootstrap-tab.js v2.3.1\n * http://twitter.github.com/bootstrap/javascript.html#tabs\n * ========================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================== */\n\n\n!function ($) {\n\n  \"use strict\"; // jshint ;_;\n\n\n /* TAB CLASS DEFINITION\n  * ==================== */\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.prototype = {\n\n    constructor: Tab\n\n  , show: function () {\n      var $this = this.element\n        , $ul = $this.closest('ul:not(.dropdown-menu)')\n        , selector = $this.attr('data-target')\n        , previous\n        , $target\n        , e\n\n      if (!selector) {\n        selector = $this.attr('href')\n        selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n      }\n\n      if ( $this.parent('li').hasClass('active') ) return\n\n      previous = $ul.find('.active:last a')[0]\n\n      e = $.Event('show', {\n        relatedTarget: previous\n      })\n\n      $this.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      $target = $(selector)\n\n      this.activate($this.parent('li'), $ul)\n      this.activate($target, $target.parent(), function () {\n        $this.trigger({\n          type: 'shown'\n        , relatedTarget: previous\n        })\n      })\n    }\n\n  , activate: function ( element, container, callback) {\n      var $active = container.find('> .active')\n        , transition = callback\n            && $.support.transition\n            && $active.hasClass('fade')\n\n      function next() {\n        $active\n          .removeClass('active')\n          .find('> .dropdown-menu > .active')\n          .removeClass('active')\n\n        element.addClass('active')\n\n        if (transition) {\n          element[0].offsetWidth // reflow for transition\n          element.addClass('in')\n        } else {\n          element.removeClass('fade')\n        }\n\n        if ( element.parent('.dropdown-menu') ) {\n          element.closest('li.dropdown').addClass('active')\n        }\n\n        callback && callback()\n      }\n\n      transition ?\n        $active.one($.support.transition.end, next) :\n        next()\n\n      $active.removeClass('in')\n    }\n  }\n\n\n /* TAB PLUGIN DEFINITION\n  * ===================== */\n\n  var old = $.fn.tab\n\n  $.fn.tab = function ( option ) {\n    return this.each(function () {\n      var $this = $(this)\n        , data = $this.data('tab')\n      if (!data) $this.data('tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tab.Constructor = Tab\n\n\n /* TAB NO CONFLICT\n  * =============== */\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n /* TAB DATA-API\n  * ============ */\n\n  $(document).on('click.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n    e.preventDefault()\n    $(this).tab('show')\n  })\n\n}(window.jQuery);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrap.css",
    "content": "/*!\n * Bootstrap v2.3.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n.clearfix {\n  *zoom: 1;\n}\n\n.clearfix:before,\n.clearfix:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.clearfix:after {\n  clear: both;\n}\n\n.hide-text {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.input-block-level {\n  display: block;\n  width: 100%;\n  min-height: 30px;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nnav,\nsection {\n  display: block;\n}\n\naudio,\ncanvas,\nvideo {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n}\n\naudio:not([controls]) {\n  display: none;\n}\n\nhtml {\n  font-size: 100%;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\n\na:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\na:hover,\na:active {\n  outline: 0;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nimg {\n  width: auto\\9;\n  height: auto;\n  max-width: 100%;\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic;\n}\n\n#map_canvas img,\n.google-maps img {\n  max-width: none;\n}\n\nbutton,\ninput,\nselect,\ntextarea {\n  margin: 0;\n  font-size: 100%;\n  vertical-align: middle;\n}\n\nbutton,\ninput {\n  *overflow: visible;\n  line-height: normal;\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\n\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  cursor: pointer;\n  -webkit-appearance: button;\n}\n\nlabel,\nselect,\nbutton,\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"],\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  cursor: pointer;\n}\n\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n  -webkit-appearance: none;\n}\n\ntextarea {\n  overflow: auto;\n  vertical-align: top;\n}\n\n@media print {\n  * {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  .ir a:after,\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  @page  {\n    margin: 0.5cm;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 20px;\n  color: #333333;\n  background-color: #ffffff;\n}\n\na {\n  color: #0088cc;\n  text-decoration: none;\n}\n\na:hover,\na:focus {\n  color: #005580;\n  text-decoration: underline;\n}\n\n.img-rounded {\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.img-polaroid {\n  padding: 4px;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.img-circle {\n  -webkit-border-radius: 500px;\n     -moz-border-radius: 500px;\n          border-radius: 500px;\n}\n\n.row {\n  margin-left: -20px;\n  *zoom: 1;\n}\n\n.row:before,\n.row:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.row:after {\n  clear: both;\n}\n\n[class*=\"span\"] {\n  float: left;\n  min-height: 1px;\n  margin-left: 20px;\n}\n\n.container,\n.navbar-static-top .container,\n.navbar-fixed-top .container,\n.navbar-fixed-bottom .container {\n  width: 940px;\n}\n\n.span12 {\n  width: 940px;\n}\n\n.span11 {\n  width: 860px;\n}\n\n.span10 {\n  width: 780px;\n}\n\n.span9 {\n  width: 700px;\n}\n\n.span8 {\n  width: 620px;\n}\n\n.span7 {\n  width: 540px;\n}\n\n.span6 {\n  width: 460px;\n}\n\n.span5 {\n  width: 380px;\n}\n\n.span4 {\n  width: 300px;\n}\n\n.span3 {\n  width: 220px;\n}\n\n.span2 {\n  width: 140px;\n}\n\n.span1 {\n  width: 60px;\n}\n\n.offset12 {\n  margin-left: 980px;\n}\n\n.offset11 {\n  margin-left: 900px;\n}\n\n.offset10 {\n  margin-left: 820px;\n}\n\n.offset9 {\n  margin-left: 740px;\n}\n\n.offset8 {\n  margin-left: 660px;\n}\n\n.offset7 {\n  margin-left: 580px;\n}\n\n.offset6 {\n  margin-left: 500px;\n}\n\n.offset5 {\n  margin-left: 420px;\n}\n\n.offset4 {\n  margin-left: 340px;\n}\n\n.offset3 {\n  margin-left: 260px;\n}\n\n.offset2 {\n  margin-left: 180px;\n}\n\n.offset1 {\n  margin-left: 100px;\n}\n\n.row-fluid {\n  width: 100%;\n  *zoom: 1;\n}\n\n.row-fluid:before,\n.row-fluid:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.row-fluid:after {\n  clear: both;\n}\n\n.row-fluid [class*=\"span\"] {\n  display: block;\n  float: left;\n  width: 100%;\n  min-height: 30px;\n  margin-left: 2.127659574468085%;\n  *margin-left: 2.074468085106383%;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n.row-fluid [class*=\"span\"]:first-child {\n  margin-left: 0;\n}\n\n.row-fluid .controls-row [class*=\"span\"] + [class*=\"span\"] {\n  margin-left: 2.127659574468085%;\n}\n\n.row-fluid .span12 {\n  width: 100%;\n  *width: 99.94680851063829%;\n}\n\n.row-fluid .span11 {\n  width: 91.48936170212765%;\n  *width: 91.43617021276594%;\n}\n\n.row-fluid .span10 {\n  width: 82.97872340425532%;\n  *width: 82.92553191489361%;\n}\n\n.row-fluid .span9 {\n  width: 74.46808510638297%;\n  *width: 74.41489361702126%;\n}\n\n.row-fluid .span8 {\n  width: 65.95744680851064%;\n  *width: 65.90425531914893%;\n}\n\n.row-fluid .span7 {\n  width: 57.44680851063829%;\n  *width: 57.39361702127659%;\n}\n\n.row-fluid .span6 {\n  width: 48.93617021276595%;\n  *width: 48.88297872340425%;\n}\n\n.row-fluid .span5 {\n  width: 40.42553191489362%;\n  *width: 40.37234042553192%;\n}\n\n.row-fluid .span4 {\n  width: 31.914893617021278%;\n  *width: 31.861702127659576%;\n}\n\n.row-fluid .span3 {\n  width: 23.404255319148934%;\n  *width: 23.351063829787233%;\n}\n\n.row-fluid .span2 {\n  width: 14.893617021276595%;\n  *width: 14.840425531914894%;\n}\n\n.row-fluid .span1 {\n  width: 6.382978723404255%;\n  *width: 6.329787234042553%;\n}\n\n.row-fluid .offset12 {\n  margin-left: 104.25531914893617%;\n  *margin-left: 104.14893617021275%;\n}\n\n.row-fluid .offset12:first-child {\n  margin-left: 102.12765957446808%;\n  *margin-left: 102.02127659574467%;\n}\n\n.row-fluid .offset11 {\n  margin-left: 95.74468085106382%;\n  *margin-left: 95.6382978723404%;\n}\n\n.row-fluid .offset11:first-child {\n  margin-left: 93.61702127659574%;\n  *margin-left: 93.51063829787232%;\n}\n\n.row-fluid .offset10 {\n  margin-left: 87.23404255319149%;\n  *margin-left: 87.12765957446807%;\n}\n\n.row-fluid .offset10:first-child {\n  margin-left: 85.1063829787234%;\n  *margin-left: 84.99999999999999%;\n}\n\n.row-fluid .offset9 {\n  margin-left: 78.72340425531914%;\n  *margin-left: 78.61702127659572%;\n}\n\n.row-fluid .offset9:first-child {\n  margin-left: 76.59574468085106%;\n  *margin-left: 76.48936170212764%;\n}\n\n.row-fluid .offset8 {\n  margin-left: 70.2127659574468%;\n  *margin-left: 70.10638297872339%;\n}\n\n.row-fluid .offset8:first-child {\n  margin-left: 68.08510638297872%;\n  *margin-left: 67.9787234042553%;\n}\n\n.row-fluid .offset7 {\n  margin-left: 61.70212765957446%;\n  *margin-left: 61.59574468085106%;\n}\n\n.row-fluid .offset7:first-child {\n  margin-left: 59.574468085106375%;\n  *margin-left: 59.46808510638297%;\n}\n\n.row-fluid .offset6 {\n  margin-left: 53.191489361702125%;\n  *margin-left: 53.085106382978715%;\n}\n\n.row-fluid .offset6:first-child {\n  margin-left: 51.063829787234035%;\n  *margin-left: 50.95744680851063%;\n}\n\n.row-fluid .offset5 {\n  margin-left: 44.68085106382979%;\n  *margin-left: 44.57446808510638%;\n}\n\n.row-fluid .offset5:first-child {\n  margin-left: 42.5531914893617%;\n  *margin-left: 42.4468085106383%;\n}\n\n.row-fluid .offset4 {\n  margin-left: 36.170212765957444%;\n  *margin-left: 36.06382978723405%;\n}\n\n.row-fluid .offset4:first-child {\n  margin-left: 34.04255319148936%;\n  *margin-left: 33.93617021276596%;\n}\n\n.row-fluid .offset3 {\n  margin-left: 27.659574468085104%;\n  *margin-left: 27.5531914893617%;\n}\n\n.row-fluid .offset3:first-child {\n  margin-left: 25.53191489361702%;\n  *margin-left: 25.425531914893618%;\n}\n\n.row-fluid .offset2 {\n  margin-left: 19.148936170212764%;\n  *margin-left: 19.04255319148936%;\n}\n\n.row-fluid .offset2:first-child {\n  margin-left: 17.02127659574468%;\n  *margin-left: 16.914893617021278%;\n}\n\n.row-fluid .offset1 {\n  margin-left: 10.638297872340425%;\n  *margin-left: 10.53191489361702%;\n}\n\n.row-fluid .offset1:first-child {\n  margin-left: 8.51063829787234%;\n  *margin-left: 8.404255319148938%;\n}\n\n[class*=\"span\"].hide,\n.row-fluid [class*=\"span\"].hide {\n  display: none;\n}\n\n[class*=\"span\"].pull-right,\n.row-fluid [class*=\"span\"].pull-right {\n  float: right;\n}\n\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  *zoom: 1;\n}\n\n.container:before,\n.container:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.container:after {\n  clear: both;\n}\n\n.container-fluid {\n  padding-right: 20px;\n  padding-left: 20px;\n  *zoom: 1;\n}\n\n.container-fluid:before,\n.container-fluid:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.container-fluid:after {\n  clear: both;\n}\n\np {\n  margin: 0 0 10px;\n}\n\n.lead {\n  margin-bottom: 20px;\n  font-size: 21px;\n  font-weight: 200;\n  line-height: 30px;\n}\n\nsmall {\n  font-size: 85%;\n}\n\nstrong {\n  font-weight: bold;\n}\n\nem {\n  font-style: italic;\n}\n\ncite {\n  font-style: normal;\n}\n\n.muted {\n  color: #999999;\n}\n\na.muted:hover,\na.muted:focus {\n  color: #808080;\n}\n\n.text-warning {\n  color: #c09853;\n}\n\na.text-warning:hover,\na.text-warning:focus {\n  color: #a47e3c;\n}\n\n.text-error {\n  color: #b94a48;\n}\n\na.text-error:hover,\na.text-error:focus {\n  color: #953b39;\n}\n\n.text-info {\n  color: #3a87ad;\n}\n\na.text-info:hover,\na.text-info:focus {\n  color: #2d6987;\n}\n\n.text-success {\n  color: #468847;\n}\n\na.text-success:hover,\na.text-success:focus {\n  color: #356635;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-center {\n  text-align: center;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 10px 0;\n  font-family: inherit;\n  font-weight: bold;\n  line-height: 20px;\n  color: inherit;\n  text-rendering: optimizelegibility;\n}\n\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small {\n  font-weight: normal;\n  line-height: 1;\n  color: #999999;\n}\n\nh1,\nh2,\nh3 {\n  line-height: 40px;\n}\n\nh1 {\n  font-size: 38.5px;\n}\n\nh2 {\n  font-size: 31.5px;\n}\n\nh3 {\n  font-size: 24.5px;\n}\n\nh4 {\n  font-size: 17.5px;\n}\n\nh5 {\n  font-size: 14px;\n}\n\nh6 {\n  font-size: 11.9px;\n}\n\nh1 small {\n  font-size: 24.5px;\n}\n\nh2 small {\n  font-size: 17.5px;\n}\n\nh3 small {\n  font-size: 14px;\n}\n\nh4 small {\n  font-size: 14px;\n}\n\n.page-header {\n  padding-bottom: 9px;\n  margin: 20px 0 30px;\n  border-bottom: 1px solid #eeeeee;\n}\n\nul,\nol {\n  padding: 0;\n  margin: 0 0 10px 25px;\n}\n\nul ul,\nul ol,\nol ol,\nol ul {\n  margin-bottom: 0;\n}\n\nli {\n  line-height: 20px;\n}\n\nul.unstyled,\nol.unstyled {\n  margin-left: 0;\n  list-style: none;\n}\n\nul.inline,\nol.inline {\n  margin-left: 0;\n  list-style: none;\n}\n\nul.inline > li,\nol.inline > li {\n  display: inline-block;\n  *display: inline;\n  padding-right: 5px;\n  padding-left: 5px;\n  *zoom: 1;\n}\n\ndl {\n  margin-bottom: 20px;\n}\n\ndt,\ndd {\n  line-height: 20px;\n}\n\ndt {\n  font-weight: bold;\n}\n\ndd {\n  margin-left: 10px;\n}\n\n.dl-horizontal {\n  *zoom: 1;\n}\n\n.dl-horizontal:before,\n.dl-horizontal:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.dl-horizontal:after {\n  clear: both;\n}\n\n.dl-horizontal dt {\n  float: left;\n  width: 160px;\n  overflow: hidden;\n  clear: left;\n  text-align: right;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.dl-horizontal dd {\n  margin-left: 180px;\n}\n\nhr {\n  margin: 20px 0;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n  border-bottom: 1px solid #ffffff;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #999999;\n}\n\nabbr.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\nblockquote {\n  padding: 0 0 0 15px;\n  margin: 0 0 20px;\n  border-left: 5px solid #eeeeee;\n}\n\nblockquote p {\n  margin-bottom: 0;\n  font-size: 17.5px;\n  font-weight: 300;\n  line-height: 1.25;\n}\n\nblockquote small {\n  display: block;\n  line-height: 20px;\n  color: #999999;\n}\n\nblockquote small:before {\n  content: '\\2014 \\00A0';\n}\n\nblockquote.pull-right {\n  float: right;\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n\nblockquote.pull-right p,\nblockquote.pull-right small {\n  text-align: right;\n}\n\nblockquote.pull-right small:before {\n  content: '';\n}\n\nblockquote.pull-right small:after {\n  content: '\\00A0 \\2014';\n}\n\nq:before,\nq:after,\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\n\naddress {\n  display: block;\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 20px;\n}\n\ncode,\npre {\n  padding: 0 3px 2px;\n  font-family: Monaco, Menlo, Consolas, \"Courier New\", monospace;\n  font-size: 12px;\n  color: #333333;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\ncode {\n  padding: 2px 4px;\n  color: #d14;\n  white-space: nowrap;\n  background-color: #f7f7f9;\n  border: 1px solid #e1e1e8;\n}\n\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 20px;\n  word-break: break-all;\n  word-wrap: break-word;\n  white-space: pre;\n  white-space: pre-wrap;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\npre.prettyprint {\n  margin-bottom: 20px;\n}\n\npre code {\n  padding: 0;\n  color: inherit;\n  white-space: pre;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\nform {\n  margin: 0 0 20px;\n}\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: 40px;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\n\nlegend small {\n  font-size: 15px;\n  color: #999999;\n}\n\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 20px;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n\nlabel {\n  display: block;\n  margin-bottom: 5px;\n}\n\nselect,\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  display: inline-block;\n  height: 20px;\n  padding: 4px 6px;\n  margin-bottom: 10px;\n  font-size: 14px;\n  line-height: 20px;\n  color: #555555;\n  vertical-align: middle;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\ninput,\ntextarea,\n.uneditable-input {\n  width: 206px;\n}\n\ntextarea {\n  height: auto;\n}\n\ntextarea,\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"datetime\"],\ninput[type=\"datetime-local\"],\ninput[type=\"date\"],\ninput[type=\"month\"],\ninput[type=\"time\"],\ninput[type=\"week\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"url\"],\ninput[type=\"search\"],\ninput[type=\"tel\"],\ninput[type=\"color\"],\n.uneditable-input {\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;\n     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;\n       -o-transition: border linear 0.2s, box-shadow linear 0.2s;\n          transition: border linear 0.2s, box-shadow linear 0.2s;\n}\n\ntextarea:focus,\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"datetime\"]:focus,\ninput[type=\"datetime-local\"]:focus,\ninput[type=\"date\"]:focus,\ninput[type=\"month\"]:focus,\ninput[type=\"time\"]:focus,\ninput[type=\"week\"]:focus,\ninput[type=\"number\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"url\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"color\"]:focus,\n.uneditable-input:focus {\n  border-color: rgba(82, 168, 236, 0.8);\n  outline: 0;\n  outline: thin dotted \\9;\n  /* IE6-9 */\n\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  *margin-top: 0;\n  line-height: normal;\n}\n\ninput[type=\"file\"],\ninput[type=\"image\"],\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"],\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  width: auto;\n}\n\nselect,\ninput[type=\"file\"] {\n  height: 30px;\n  /* In IE7, the height of the select element cannot be changed by height, only font-size */\n\n  *margin-top: 4px;\n  /* For IE7, add top margin to align select with labels */\n\n  line-height: 30px;\n}\n\nselect {\n  width: 220px;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n}\n\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\nselect:focus,\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n.uneditable-input,\n.uneditable-textarea {\n  color: #999999;\n  cursor: not-allowed;\n  background-color: #fcfcfc;\n  border-color: #cccccc;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);\n}\n\n.uneditable-input {\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.uneditable-textarea {\n  width: auto;\n  height: auto;\n}\n\ninput:-moz-placeholder,\ntextarea:-moz-placeholder {\n  color: #999999;\n}\n\ninput:-ms-input-placeholder,\ntextarea:-ms-input-placeholder {\n  color: #999999;\n}\n\ninput::-webkit-input-placeholder,\ntextarea::-webkit-input-placeholder {\n  color: #999999;\n}\n\n.radio,\n.checkbox {\n  min-height: 20px;\n  padding-left: 20px;\n}\n\n.radio input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n\n.controls > .radio:first-child,\n.controls > .checkbox:first-child {\n  padding-top: 5px;\n}\n\n.radio.inline,\n.checkbox.inline {\n  display: inline-block;\n  padding-top: 5px;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 10px;\n}\n\n.input-mini {\n  width: 60px;\n}\n\n.input-small {\n  width: 90px;\n}\n\n.input-medium {\n  width: 150px;\n}\n\n.input-large {\n  width: 210px;\n}\n\n.input-xlarge {\n  width: 270px;\n}\n\n.input-xxlarge {\n  width: 530px;\n}\n\ninput[class*=\"span\"],\nselect[class*=\"span\"],\ntextarea[class*=\"span\"],\n.uneditable-input[class*=\"span\"],\n.row-fluid input[class*=\"span\"],\n.row-fluid select[class*=\"span\"],\n.row-fluid textarea[class*=\"span\"],\n.row-fluid .uneditable-input[class*=\"span\"] {\n  float: none;\n  margin-left: 0;\n}\n\n.input-append input[class*=\"span\"],\n.input-append .uneditable-input[class*=\"span\"],\n.input-prepend input[class*=\"span\"],\n.input-prepend .uneditable-input[class*=\"span\"],\n.row-fluid input[class*=\"span\"],\n.row-fluid select[class*=\"span\"],\n.row-fluid textarea[class*=\"span\"],\n.row-fluid .uneditable-input[class*=\"span\"],\n.row-fluid .input-prepend [class*=\"span\"],\n.row-fluid .input-append [class*=\"span\"] {\n  display: inline-block;\n}\n\ninput,\ntextarea,\n.uneditable-input {\n  margin-left: 0;\n}\n\n.controls-row [class*=\"span\"] + [class*=\"span\"] {\n  margin-left: 20px;\n}\n\ninput.span12,\ntextarea.span12,\n.uneditable-input.span12 {\n  width: 926px;\n}\n\ninput.span11,\ntextarea.span11,\n.uneditable-input.span11 {\n  width: 846px;\n}\n\ninput.span10,\ntextarea.span10,\n.uneditable-input.span10 {\n  width: 766px;\n}\n\ninput.span9,\ntextarea.span9,\n.uneditable-input.span9 {\n  width: 686px;\n}\n\ninput.span8,\ntextarea.span8,\n.uneditable-input.span8 {\n  width: 606px;\n}\n\ninput.span7,\ntextarea.span7,\n.uneditable-input.span7 {\n  width: 526px;\n}\n\ninput.span6,\ntextarea.span6,\n.uneditable-input.span6 {\n  width: 446px;\n}\n\ninput.span5,\ntextarea.span5,\n.uneditable-input.span5 {\n  width: 366px;\n}\n\ninput.span4,\ntextarea.span4,\n.uneditable-input.span4 {\n  width: 286px;\n}\n\ninput.span3,\ntextarea.span3,\n.uneditable-input.span3 {\n  width: 206px;\n}\n\ninput.span2,\ntextarea.span2,\n.uneditable-input.span2 {\n  width: 126px;\n}\n\ninput.span1,\ntextarea.span1,\n.uneditable-input.span1 {\n  width: 46px;\n}\n\n.controls-row {\n  *zoom: 1;\n}\n\n.controls-row:before,\n.controls-row:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.controls-row:after {\n  clear: both;\n}\n\n.controls-row [class*=\"span\"],\n.row-fluid .controls-row [class*=\"span\"] {\n  float: left;\n}\n\n.controls-row .checkbox[class*=\"span\"],\n.controls-row .radio[class*=\"span\"] {\n  padding-top: 5px;\n}\n\ninput[disabled],\nselect[disabled],\ntextarea[disabled],\ninput[readonly],\nselect[readonly],\ntextarea[readonly] {\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"][readonly],\ninput[type=\"checkbox\"][readonly] {\n  background-color: transparent;\n}\n\n.control-group.warning .control-label,\n.control-group.warning .help-block,\n.control-group.warning .help-inline {\n  color: #c09853;\n}\n\n.control-group.warning .checkbox,\n.control-group.warning .radio,\n.control-group.warning input,\n.control-group.warning select,\n.control-group.warning textarea {\n  color: #c09853;\n}\n\n.control-group.warning input,\n.control-group.warning select,\n.control-group.warning textarea {\n  border-color: #c09853;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.warning input:focus,\n.control-group.warning select:focus,\n.control-group.warning textarea:focus {\n  border-color: #a47e3c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;\n}\n\n.control-group.warning .input-prepend .add-on,\n.control-group.warning .input-append .add-on {\n  color: #c09853;\n  background-color: #fcf8e3;\n  border-color: #c09853;\n}\n\n.control-group.error .control-label,\n.control-group.error .help-block,\n.control-group.error .help-inline {\n  color: #b94a48;\n}\n\n.control-group.error .checkbox,\n.control-group.error .radio,\n.control-group.error input,\n.control-group.error select,\n.control-group.error textarea {\n  color: #b94a48;\n}\n\n.control-group.error input,\n.control-group.error select,\n.control-group.error textarea {\n  border-color: #b94a48;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.error input:focus,\n.control-group.error select:focus,\n.control-group.error textarea:focus {\n  border-color: #953b39;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;\n}\n\n.control-group.error .input-prepend .add-on,\n.control-group.error .input-append .add-on {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #b94a48;\n}\n\n.control-group.success .control-label,\n.control-group.success .help-block,\n.control-group.success .help-inline {\n  color: #468847;\n}\n\n.control-group.success .checkbox,\n.control-group.success .radio,\n.control-group.success input,\n.control-group.success select,\n.control-group.success textarea {\n  color: #468847;\n}\n\n.control-group.success input,\n.control-group.success select,\n.control-group.success textarea {\n  border-color: #468847;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.success input:focus,\n.control-group.success select:focus,\n.control-group.success textarea:focus {\n  border-color: #356635;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;\n}\n\n.control-group.success .input-prepend .add-on,\n.control-group.success .input-append .add-on {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #468847;\n}\n\n.control-group.info .control-label,\n.control-group.info .help-block,\n.control-group.info .help-inline {\n  color: #3a87ad;\n}\n\n.control-group.info .checkbox,\n.control-group.info .radio,\n.control-group.info input,\n.control-group.info select,\n.control-group.info textarea {\n  color: #3a87ad;\n}\n\n.control-group.info input,\n.control-group.info select,\n.control-group.info textarea {\n  border-color: #3a87ad;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n\n.control-group.info input:focus,\n.control-group.info select:focus,\n.control-group.info textarea:focus {\n  border-color: #2d6987;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;\n}\n\n.control-group.info .input-prepend .add-on,\n.control-group.info .input-append .add-on {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #3a87ad;\n}\n\ninput:focus:invalid,\ntextarea:focus:invalid,\nselect:focus:invalid {\n  color: #b94a48;\n  border-color: #ee5f5b;\n}\n\ninput:focus:invalid:focus,\ntextarea:focus:invalid:focus,\nselect:focus:invalid:focus {\n  border-color: #e9322d;\n  -webkit-box-shadow: 0 0 6px #f8b9b7;\n     -moz-box-shadow: 0 0 6px #f8b9b7;\n          box-shadow: 0 0 6px #f8b9b7;\n}\n\n.form-actions {\n  padding: 19px 20px 20px;\n  margin-top: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #e5e5e5;\n  *zoom: 1;\n}\n\n.form-actions:before,\n.form-actions:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.form-actions:after {\n  clear: both;\n}\n\n.help-block,\n.help-inline {\n  color: #595959;\n}\n\n.help-block {\n  display: block;\n  margin-bottom: 10px;\n}\n\n.help-inline {\n  display: inline-block;\n  *display: inline;\n  padding-left: 5px;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.input-append,\n.input-prepend {\n  display: inline-block;\n  margin-bottom: 10px;\n  font-size: 0;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n\n.input-append input,\n.input-prepend input,\n.input-append select,\n.input-prepend select,\n.input-append .uneditable-input,\n.input-prepend .uneditable-input,\n.input-append .dropdown-menu,\n.input-prepend .dropdown-menu,\n.input-append .popover,\n.input-prepend .popover {\n  font-size: 14px;\n}\n\n.input-append input,\n.input-prepend input,\n.input-append select,\n.input-prepend select,\n.input-append .uneditable-input,\n.input-prepend .uneditable-input {\n  position: relative;\n  margin-bottom: 0;\n  *margin-left: 0;\n  vertical-align: top;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-append input:focus,\n.input-prepend input:focus,\n.input-append select:focus,\n.input-prepend select:focus,\n.input-append .uneditable-input:focus,\n.input-prepend .uneditable-input:focus {\n  z-index: 2;\n}\n\n.input-append .add-on,\n.input-prepend .add-on {\n  display: inline-block;\n  width: auto;\n  height: 20px;\n  min-width: 16px;\n  padding: 4px 5px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 20px;\n  text-align: center;\n  text-shadow: 0 1px 0 #ffffff;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n}\n\n.input-append .add-on,\n.input-prepend .add-on,\n.input-append .btn,\n.input-prepend .btn,\n.input-append .btn-group > .dropdown-toggle,\n.input-prepend .btn-group > .dropdown-toggle {\n  vertical-align: top;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.input-append .active,\n.input-prepend .active {\n  background-color: #a9dba9;\n  border-color: #46a546;\n}\n\n.input-prepend .add-on,\n.input-prepend .btn {\n  margin-right: -1px;\n}\n\n.input-prepend .add-on:first-child,\n.input-prepend .btn:first-child {\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-append input,\n.input-append select,\n.input-append .uneditable-input {\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-append input + .btn-group .btn:last-child,\n.input-append select + .btn-group .btn:last-child,\n.input-append .uneditable-input + .btn-group .btn:last-child {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-append .add-on,\n.input-append .btn,\n.input-append .btn-group {\n  margin-left: -1px;\n}\n\n.input-append .add-on:last-child,\n.input-append .btn:last-child,\n.input-append .btn-group:last-child > .dropdown-toggle {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append input,\n.input-prepend.input-append select,\n.input-prepend.input-append .uneditable-input {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.input-prepend.input-append input + .btn-group .btn,\n.input-prepend.input-append select + .btn-group .btn,\n.input-prepend.input-append .uneditable-input + .btn-group .btn {\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append .add-on:first-child,\n.input-prepend.input-append .btn:first-child {\n  margin-right: -1px;\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.input-prepend.input-append .add-on:last-child,\n.input-prepend.input-append .btn:last-child {\n  margin-left: -1px;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.input-prepend.input-append .btn-group:first-child {\n  margin-left: 0;\n}\n\ninput.search-query {\n  padding-right: 14px;\n  padding-right: 4px \\9;\n  padding-left: 14px;\n  padding-left: 4px \\9;\n  /* IE7-8 doesn't have border-radius, so don't indent the padding */\n\n  margin-bottom: 0;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n/* Allow for input prepend/append in search forms */\n\n.form-search .input-append .search-query,\n.form-search .input-prepend .search-query {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.form-search .input-append .search-query {\n  -webkit-border-radius: 14px 0 0 14px;\n     -moz-border-radius: 14px 0 0 14px;\n          border-radius: 14px 0 0 14px;\n}\n\n.form-search .input-append .btn {\n  -webkit-border-radius: 0 14px 14px 0;\n     -moz-border-radius: 0 14px 14px 0;\n          border-radius: 0 14px 14px 0;\n}\n\n.form-search .input-prepend .search-query {\n  -webkit-border-radius: 0 14px 14px 0;\n     -moz-border-radius: 0 14px 14px 0;\n          border-radius: 0 14px 14px 0;\n}\n\n.form-search .input-prepend .btn {\n  -webkit-border-radius: 14px 0 0 14px;\n     -moz-border-radius: 14px 0 0 14px;\n          border-radius: 14px 0 0 14px;\n}\n\n.form-search input,\n.form-inline input,\n.form-horizontal input,\n.form-search textarea,\n.form-inline textarea,\n.form-horizontal textarea,\n.form-search select,\n.form-inline select,\n.form-horizontal select,\n.form-search .help-inline,\n.form-inline .help-inline,\n.form-horizontal .help-inline,\n.form-search .uneditable-input,\n.form-inline .uneditable-input,\n.form-horizontal .uneditable-input,\n.form-search .input-prepend,\n.form-inline .input-prepend,\n.form-horizontal .input-prepend,\n.form-search .input-append,\n.form-inline .input-append,\n.form-horizontal .input-append {\n  display: inline-block;\n  *display: inline;\n  margin-bottom: 0;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.form-search .hide,\n.form-inline .hide,\n.form-horizontal .hide {\n  display: none;\n}\n\n.form-search label,\n.form-inline label,\n.form-search .btn-group,\n.form-inline .btn-group {\n  display: inline-block;\n}\n\n.form-search .input-append,\n.form-inline .input-append,\n.form-search .input-prepend,\n.form-inline .input-prepend {\n  margin-bottom: 0;\n}\n\n.form-search .radio,\n.form-search .checkbox,\n.form-inline .radio,\n.form-inline .checkbox {\n  padding-left: 0;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.form-search .radio input[type=\"radio\"],\n.form-search .checkbox input[type=\"checkbox\"],\n.form-inline .radio input[type=\"radio\"],\n.form-inline .checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-right: 3px;\n  margin-left: 0;\n}\n\n.control-group {\n  margin-bottom: 10px;\n}\n\nlegend + .control-group {\n  margin-top: 20px;\n  -webkit-margin-top-collapse: separate;\n}\n\n.form-horizontal .control-group {\n  margin-bottom: 20px;\n  *zoom: 1;\n}\n\n.form-horizontal .control-group:before,\n.form-horizontal .control-group:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.form-horizontal .control-group:after {\n  clear: both;\n}\n\n.form-horizontal .control-label {\n  float: left;\n  width: 160px;\n  padding-top: 5px;\n  text-align: right;\n}\n\n.form-horizontal .controls {\n  *display: inline-block;\n  *padding-left: 20px;\n  margin-left: 180px;\n  *margin-left: 0;\n}\n\n.form-horizontal .controls:first-child {\n  *padding-left: 180px;\n}\n\n.form-horizontal .help-block {\n  margin-bottom: 0;\n}\n\n.form-horizontal input + .help-block,\n.form-horizontal select + .help-block,\n.form-horizontal textarea + .help-block,\n.form-horizontal .uneditable-input + .help-block,\n.form-horizontal .input-prepend + .help-block,\n.form-horizontal .input-append + .help-block {\n  margin-top: 10px;\n}\n\n.form-horizontal .form-actions {\n  padding-left: 180px;\n}\n\ntable {\n  max-width: 100%;\n  background-color: transparent;\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.table {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.table th,\n.table td {\n  padding: 8px;\n  line-height: 20px;\n  text-align: left;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n\n.table th {\n  font-weight: bold;\n}\n\n.table thead th {\n  vertical-align: bottom;\n}\n\n.table caption + thead tr:first-child th,\n.table caption + thead tr:first-child td,\n.table colgroup + thead tr:first-child th,\n.table colgroup + thead tr:first-child td,\n.table thead:first-child tr:first-child th,\n.table thead:first-child tr:first-child td {\n  border-top: 0;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n\n.table .table {\n  background-color: #ffffff;\n}\n\n.table-condensed th,\n.table-condensed td {\n  padding: 4px 5px;\n}\n\n.table-bordered {\n  border: 1px solid #dddddd;\n  border-collapse: separate;\n  *border-collapse: collapse;\n  border-left: 0;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border-left: 1px solid #dddddd;\n}\n\n.table-bordered caption + thead tr:first-child th,\n.table-bordered caption + tbody tr:first-child th,\n.table-bordered caption + tbody tr:first-child td,\n.table-bordered colgroup + thead tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child th,\n.table-bordered colgroup + tbody tr:first-child td,\n.table-bordered thead:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child th,\n.table-bordered tbody:first-child tr:first-child td {\n  border-top: 0;\n}\n\n.table-bordered thead:first-child tr:first-child > th:first-child,\n.table-bordered tbody:first-child tr:first-child > td:first-child,\n.table-bordered tbody:first-child tr:first-child > th:first-child {\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.table-bordered thead:first-child tr:first-child > th:last-child,\n.table-bordered tbody:first-child tr:first-child > td:last-child,\n.table-bordered tbody:first-child tr:first-child > th:last-child {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n\n.table-bordered thead:last-child tr:last-child > th:first-child,\n.table-bordered tbody:last-child tr:last-child > td:first-child,\n.table-bordered tbody:last-child tr:last-child > th:first-child,\n.table-bordered tfoot:last-child tr:last-child > td:first-child,\n.table-bordered tfoot:last-child tr:last-child > th:first-child {\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n\n.table-bordered thead:last-child tr:last-child > th:last-child,\n.table-bordered tbody:last-child tr:last-child > td:last-child,\n.table-bordered tbody:last-child tr:last-child > th:last-child,\n.table-bordered tfoot:last-child tr:last-child > td:last-child,\n.table-bordered tfoot:last-child tr:last-child > th:last-child {\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {\n  -webkit-border-bottom-left-radius: 0;\n          border-bottom-left-radius: 0;\n  -moz-border-radius-bottomleft: 0;\n}\n\n.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {\n  -webkit-border-bottom-right-radius: 0;\n          border-bottom-right-radius: 0;\n  -moz-border-radius-bottomright: 0;\n}\n\n.table-bordered caption + thead tr:first-child th:first-child,\n.table-bordered caption + tbody tr:first-child td:first-child,\n.table-bordered colgroup + thead tr:first-child th:first-child,\n.table-bordered colgroup + tbody tr:first-child td:first-child {\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.table-bordered caption + thead tr:first-child th:last-child,\n.table-bordered caption + tbody tr:first-child td:last-child,\n.table-bordered colgroup + thead tr:first-child th:last-child,\n.table-bordered colgroup + tbody tr:first-child td:last-child {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n}\n\n.table-striped tbody > tr:nth-child(odd) > td,\n.table-striped tbody > tr:nth-child(odd) > th {\n  background-color: #f9f9f9;\n}\n\n.table-hover tbody tr:hover > td,\n.table-hover tbody tr:hover > th {\n  background-color: #f5f5f5;\n}\n\ntable td[class*=\"span\"],\ntable th[class*=\"span\"],\n.row-fluid table td[class*=\"span\"],\n.row-fluid table th[class*=\"span\"] {\n  display: table-cell;\n  float: none;\n  margin-left: 0;\n}\n\n.table td.span1,\n.table th.span1 {\n  float: none;\n  width: 44px;\n  margin-left: 0;\n}\n\n.table td.span2,\n.table th.span2 {\n  float: none;\n  width: 124px;\n  margin-left: 0;\n}\n\n.table td.span3,\n.table th.span3 {\n  float: none;\n  width: 204px;\n  margin-left: 0;\n}\n\n.table td.span4,\n.table th.span4 {\n  float: none;\n  width: 284px;\n  margin-left: 0;\n}\n\n.table td.span5,\n.table th.span5 {\n  float: none;\n  width: 364px;\n  margin-left: 0;\n}\n\n.table td.span6,\n.table th.span6 {\n  float: none;\n  width: 444px;\n  margin-left: 0;\n}\n\n.table td.span7,\n.table th.span7 {\n  float: none;\n  width: 524px;\n  margin-left: 0;\n}\n\n.table td.span8,\n.table th.span8 {\n  float: none;\n  width: 604px;\n  margin-left: 0;\n}\n\n.table td.span9,\n.table th.span9 {\n  float: none;\n  width: 684px;\n  margin-left: 0;\n}\n\n.table td.span10,\n.table th.span10 {\n  float: none;\n  width: 764px;\n  margin-left: 0;\n}\n\n.table td.span11,\n.table th.span11 {\n  float: none;\n  width: 844px;\n  margin-left: 0;\n}\n\n.table td.span12,\n.table th.span12 {\n  float: none;\n  width: 924px;\n  margin-left: 0;\n}\n\n.table tbody tr.success > td {\n  background-color: #dff0d8;\n}\n\n.table tbody tr.error > td {\n  background-color: #f2dede;\n}\n\n.table tbody tr.warning > td {\n  background-color: #fcf8e3;\n}\n\n.table tbody tr.info > td {\n  background-color: #d9edf7;\n}\n\n.table-hover tbody tr.success:hover > td {\n  background-color: #d0e9c6;\n}\n\n.table-hover tbody tr.error:hover > td {\n  background-color: #ebcccc;\n}\n\n.table-hover tbody tr.warning:hover > td {\n  background-color: #faf2cc;\n}\n\n.table-hover tbody tr.info:hover > td {\n  background-color: #c4e3f3;\n}\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  display: inline-block;\n  width: 14px;\n  height: 14px;\n  margin-top: 1px;\n  *margin-right: .3em;\n  line-height: 14px;\n  vertical-align: text-top;\n  background-image: url(\"../img/glyphicons-halflings.png\");\n  background-position: 14px 14px;\n  background-repeat: no-repeat;\n}\n\n/* White icons with optional class, or on hover/focus/active states of certain elements */\n\n.icon-white,\n.nav-pills > .active > a > [class^=\"icon-\"],\n.nav-pills > .active > a > [class*=\" icon-\"],\n.nav-list > .active > a > [class^=\"icon-\"],\n.nav-list > .active > a > [class*=\" icon-\"],\n.navbar-inverse .nav > .active > a > [class^=\"icon-\"],\n.navbar-inverse .nav > .active > a > [class*=\" icon-\"],\n.dropdown-menu > li > a:hover > [class^=\"icon-\"],\n.dropdown-menu > li > a:focus > [class^=\"icon-\"],\n.dropdown-menu > li > a:hover > [class*=\" icon-\"],\n.dropdown-menu > li > a:focus > [class*=\" icon-\"],\n.dropdown-menu > .active > a > [class^=\"icon-\"],\n.dropdown-menu > .active > a > [class*=\" icon-\"],\n.dropdown-submenu:hover > a > [class^=\"icon-\"],\n.dropdown-submenu:focus > a > [class^=\"icon-\"],\n.dropdown-submenu:hover > a > [class*=\" icon-\"],\n.dropdown-submenu:focus > a > [class*=\" icon-\"] {\n  background-image: url(\"../img/glyphicons-halflings-white.png\");\n}\n\n.icon-glass {\n  background-position: 0      0;\n}\n\n.icon-music {\n  background-position: -24px 0;\n}\n\n.icon-search {\n  background-position: -48px 0;\n}\n\n.icon-envelope {\n  background-position: -72px 0;\n}\n\n.icon-heart {\n  background-position: -96px 0;\n}\n\n.icon-star {\n  background-position: -120px 0;\n}\n\n.icon-star-empty {\n  background-position: -144px 0;\n}\n\n.icon-user {\n  background-position: -168px 0;\n}\n\n.icon-film {\n  background-position: -192px 0;\n}\n\n.icon-th-large {\n  background-position: -216px 0;\n}\n\n.icon-th {\n  background-position: -240px 0;\n}\n\n.icon-th-list {\n  background-position: -264px 0;\n}\n\n.icon-ok {\n  background-position: -288px 0;\n}\n\n.icon-remove {\n  background-position: -312px 0;\n}\n\n.icon-zoom-in {\n  background-position: -336px 0;\n}\n\n.icon-zoom-out {\n  background-position: -360px 0;\n}\n\n.icon-off {\n  background-position: -384px 0;\n}\n\n.icon-signal {\n  background-position: -408px 0;\n}\n\n.icon-cog {\n  background-position: -432px 0;\n}\n\n.icon-trash {\n  background-position: -456px 0;\n}\n\n.icon-home {\n  background-position: 0 -24px;\n}\n\n.icon-file {\n  background-position: -24px -24px;\n}\n\n.icon-time {\n  background-position: -48px -24px;\n}\n\n.icon-road {\n  background-position: -72px -24px;\n}\n\n.icon-download-alt {\n  background-position: -96px -24px;\n}\n\n.icon-download {\n  background-position: -120px -24px;\n}\n\n.icon-upload {\n  background-position: -144px -24px;\n}\n\n.icon-inbox {\n  background-position: -168px -24px;\n}\n\n.icon-play-circle {\n  background-position: -192px -24px;\n}\n\n.icon-repeat {\n  background-position: -216px -24px;\n}\n\n.icon-refresh {\n  background-position: -240px -24px;\n}\n\n.icon-list-alt {\n  background-position: -264px -24px;\n}\n\n.icon-lock {\n  background-position: -287px -24px;\n}\n\n.icon-flag {\n  background-position: -312px -24px;\n}\n\n.icon-headphones {\n  background-position: -336px -24px;\n}\n\n.icon-volume-off {\n  background-position: -360px -24px;\n}\n\n.icon-volume-down {\n  background-position: -384px -24px;\n}\n\n.icon-volume-up {\n  background-position: -408px -24px;\n}\n\n.icon-qrcode {\n  background-position: -432px -24px;\n}\n\n.icon-barcode {\n  background-position: -456px -24px;\n}\n\n.icon-tag {\n  background-position: 0 -48px;\n}\n\n.icon-tags {\n  background-position: -25px -48px;\n}\n\n.icon-book {\n  background-position: -48px -48px;\n}\n\n.icon-bookmark {\n  background-position: -72px -48px;\n}\n\n.icon-print {\n  background-position: -96px -48px;\n}\n\n.icon-camera {\n  background-position: -120px -48px;\n}\n\n.icon-font {\n  background-position: -144px -48px;\n}\n\n.icon-bold {\n  background-position: -167px -48px;\n}\n\n.icon-italic {\n  background-position: -192px -48px;\n}\n\n.icon-text-height {\n  background-position: -216px -48px;\n}\n\n.icon-text-width {\n  background-position: -240px -48px;\n}\n\n.icon-align-left {\n  background-position: -264px -48px;\n}\n\n.icon-align-center {\n  background-position: -288px -48px;\n}\n\n.icon-align-right {\n  background-position: -312px -48px;\n}\n\n.icon-align-justify {\n  background-position: -336px -48px;\n}\n\n.icon-list {\n  background-position: -360px -48px;\n}\n\n.icon-indent-left {\n  background-position: -384px -48px;\n}\n\n.icon-indent-right {\n  background-position: -408px -48px;\n}\n\n.icon-facetime-video {\n  background-position: -432px -48px;\n}\n\n.icon-picture {\n  background-position: -456px -48px;\n}\n\n.icon-pencil {\n  background-position: 0 -72px;\n}\n\n.icon-map-marker {\n  background-position: -24px -72px;\n}\n\n.icon-adjust {\n  background-position: -48px -72px;\n}\n\n.icon-tint {\n  background-position: -72px -72px;\n}\n\n.icon-edit {\n  background-position: -96px -72px;\n}\n\n.icon-share {\n  background-position: -120px -72px;\n}\n\n.icon-check {\n  background-position: -144px -72px;\n}\n\n.icon-move {\n  background-position: -168px -72px;\n}\n\n.icon-step-backward {\n  background-position: -192px -72px;\n}\n\n.icon-fast-backward {\n  background-position: -216px -72px;\n}\n\n.icon-backward {\n  background-position: -240px -72px;\n}\n\n.icon-play {\n  background-position: -264px -72px;\n}\n\n.icon-pause {\n  background-position: -288px -72px;\n}\n\n.icon-stop {\n  background-position: -312px -72px;\n}\n\n.icon-forward {\n  background-position: -336px -72px;\n}\n\n.icon-fast-forward {\n  background-position: -360px -72px;\n}\n\n.icon-step-forward {\n  background-position: -384px -72px;\n}\n\n.icon-eject {\n  background-position: -408px -72px;\n}\n\n.icon-chevron-left {\n  background-position: -432px -72px;\n}\n\n.icon-chevron-right {\n  background-position: -456px -72px;\n}\n\n.icon-plus-sign {\n  background-position: 0 -96px;\n}\n\n.icon-minus-sign {\n  background-position: -24px -96px;\n}\n\n.icon-remove-sign {\n  background-position: -48px -96px;\n}\n\n.icon-ok-sign {\n  background-position: -72px -96px;\n}\n\n.icon-question-sign {\n  background-position: -96px -96px;\n}\n\n.icon-info-sign {\n  background-position: -120px -96px;\n}\n\n.icon-screenshot {\n  background-position: -144px -96px;\n}\n\n.icon-remove-circle {\n  background-position: -168px -96px;\n}\n\n.icon-ok-circle {\n  background-position: -192px -96px;\n}\n\n.icon-ban-circle {\n  background-position: -216px -96px;\n}\n\n.icon-arrow-left {\n  background-position: -240px -96px;\n}\n\n.icon-arrow-right {\n  background-position: -264px -96px;\n}\n\n.icon-arrow-up {\n  background-position: -289px -96px;\n}\n\n.icon-arrow-down {\n  background-position: -312px -96px;\n}\n\n.icon-share-alt {\n  background-position: -336px -96px;\n}\n\n.icon-resize-full {\n  background-position: -360px -96px;\n}\n\n.icon-resize-small {\n  background-position: -384px -96px;\n}\n\n.icon-plus {\n  background-position: -408px -96px;\n}\n\n.icon-minus {\n  background-position: -433px -96px;\n}\n\n.icon-asterisk {\n  background-position: -456px -96px;\n}\n\n.icon-exclamation-sign {\n  background-position: 0 -120px;\n}\n\n.icon-gift {\n  background-position: -24px -120px;\n}\n\n.icon-leaf {\n  background-position: -48px -120px;\n}\n\n.icon-fire {\n  background-position: -72px -120px;\n}\n\n.icon-eye-open {\n  background-position: -96px -120px;\n}\n\n.icon-eye-close {\n  background-position: -120px -120px;\n}\n\n.icon-warning-sign {\n  background-position: -144px -120px;\n}\n\n.icon-plane {\n  background-position: -168px -120px;\n}\n\n.icon-calendar {\n  background-position: -192px -120px;\n}\n\n.icon-random {\n  width: 16px;\n  background-position: -216px -120px;\n}\n\n.icon-comment {\n  background-position: -240px -120px;\n}\n\n.icon-magnet {\n  background-position: -264px -120px;\n}\n\n.icon-chevron-up {\n  background-position: -288px -120px;\n}\n\n.icon-chevron-down {\n  background-position: -313px -119px;\n}\n\n.icon-retweet {\n  background-position: -336px -120px;\n}\n\n.icon-shopping-cart {\n  background-position: -360px -120px;\n}\n\n.icon-folder-close {\n  width: 16px;\n  background-position: -384px -120px;\n}\n\n.icon-folder-open {\n  width: 16px;\n  background-position: -408px -120px;\n}\n\n.icon-resize-vertical {\n  background-position: -432px -119px;\n}\n\n.icon-resize-horizontal {\n  background-position: -456px -118px;\n}\n\n.icon-hdd {\n  background-position: 0 -144px;\n}\n\n.icon-bullhorn {\n  background-position: -24px -144px;\n}\n\n.icon-bell {\n  background-position: -48px -144px;\n}\n\n.icon-certificate {\n  background-position: -72px -144px;\n}\n\n.icon-thumbs-up {\n  background-position: -96px -144px;\n}\n\n.icon-thumbs-down {\n  background-position: -120px -144px;\n}\n\n.icon-hand-right {\n  background-position: -144px -144px;\n}\n\n.icon-hand-left {\n  background-position: -168px -144px;\n}\n\n.icon-hand-up {\n  background-position: -192px -144px;\n}\n\n.icon-hand-down {\n  background-position: -216px -144px;\n}\n\n.icon-circle-arrow-right {\n  background-position: -240px -144px;\n}\n\n.icon-circle-arrow-left {\n  background-position: -264px -144px;\n}\n\n.icon-circle-arrow-up {\n  background-position: -288px -144px;\n}\n\n.icon-circle-arrow-down {\n  background-position: -312px -144px;\n}\n\n.icon-globe {\n  background-position: -336px -144px;\n}\n\n.icon-wrench {\n  background-position: -360px -144px;\n}\n\n.icon-tasks {\n  background-position: -384px -144px;\n}\n\n.icon-filter {\n  background-position: -408px -144px;\n}\n\n.icon-briefcase {\n  background-position: -432px -144px;\n}\n\n.icon-fullscreen {\n  background-position: -456px -144px;\n}\n\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n.dropdown-toggle {\n  *margin-bottom: -3px;\n}\n\n.dropdown-toggle:active,\n.open .dropdown-toggle {\n  outline: 0;\n}\n\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  vertical-align: top;\n  border-top: 4px solid #000000;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n  content: \"\";\n}\n\n.dropdown .caret {\n  margin-top: 8px;\n  margin-left: 2px;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding;\n          background-clip: padding-box;\n}\n\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n\n.dropdown-menu .divider {\n  *width: 100%;\n  height: 1px;\n  margin: 9px 1px;\n  *margin: -5px 0 5px;\n  overflow: hidden;\n  background-color: #e5e5e5;\n  border-bottom: 1px solid #ffffff;\n}\n\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 20px;\n  color: #333333;\n  white-space: nowrap;\n}\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-submenu:hover > a,\n.dropdown-submenu:focus > a {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #0081c2;\n  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -o-linear-gradient(top, #0088cc, #0077b3);\n  background-image: linear-gradient(to bottom, #0088cc, #0077b3);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);\n}\n\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #ffffff;\n  text-decoration: none;\n  background-color: #0081c2;\n  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);\n  background-image: -o-linear-gradient(top, #0088cc, #0077b3);\n  background-image: linear-gradient(to bottom, #0088cc, #0077b3);\n  background-repeat: repeat-x;\n  outline: 0;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);\n}\n\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #999999;\n}\n\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: default;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.open {\n  *z-index: 1000;\n}\n\n.open > .dropdown-menu {\n  display: block;\n}\n\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px solid #000000;\n  content: \"\";\n}\n\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 1px;\n}\n\n.dropdown-submenu {\n  position: relative;\n}\n\n.dropdown-submenu > .dropdown-menu {\n  top: 0;\n  left: 100%;\n  margin-top: -6px;\n  margin-left: -1px;\n  -webkit-border-radius: 0 6px 6px 6px;\n     -moz-border-radius: 0 6px 6px 6px;\n          border-radius: 0 6px 6px 6px;\n}\n\n.dropdown-submenu:hover > .dropdown-menu {\n  display: block;\n}\n\n.dropup .dropdown-submenu > .dropdown-menu {\n  top: auto;\n  bottom: 0;\n  margin-top: 0;\n  margin-bottom: -2px;\n  -webkit-border-radius: 5px 5px 5px 0;\n     -moz-border-radius: 5px 5px 5px 0;\n          border-radius: 5px 5px 5px 0;\n}\n\n.dropdown-submenu > a:after {\n  display: block;\n  float: right;\n  width: 0;\n  height: 0;\n  margin-top: 5px;\n  margin-right: -10px;\n  border-color: transparent;\n  border-left-color: #cccccc;\n  border-style: solid;\n  border-width: 5px 0 5px 5px;\n  content: \" \";\n}\n\n.dropdown-submenu:hover > a:after {\n  border-left-color: #ffffff;\n}\n\n.dropdown-submenu.pull-left {\n  float: none;\n}\n\n.dropdown-submenu.pull-left > .dropdown-menu {\n  left: -100%;\n  margin-left: 10px;\n  -webkit-border-radius: 6px 0 6px 6px;\n     -moz-border-radius: 6px 0 6px 6px;\n          border-radius: 6px 0 6px 6px;\n}\n\n.dropdown .dropdown-menu .nav-header {\n  padding-right: 20px;\n  padding-left: 20px;\n}\n\n.typeahead {\n  z-index: 1051;\n  margin-top: 2px;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n\n.well-large {\n  padding: 24px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.well-small {\n  padding: 9px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n     -moz-transition: opacity 0.15s linear;\n       -o-transition: opacity 0.15s linear;\n          transition: opacity 0.15s linear;\n}\n\n.fade.in {\n  opacity: 1;\n}\n\n.collapse {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n     -moz-transition: height 0.35s ease;\n       -o-transition: height 0.35s ease;\n          transition: height 0.35s ease;\n}\n\n.collapse.in {\n  height: auto;\n}\n\n.close {\n  float: right;\n  font-size: 20px;\n  font-weight: bold;\n  line-height: 20px;\n  color: #000000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n\n.close:hover,\n.close:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.4;\n  filter: alpha(opacity=40);\n}\n\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.btn {\n  display: inline-block;\n  *display: inline;\n  padding: 4px 12px;\n  margin-bottom: 0;\n  *margin-left: .3em;\n  font-size: 14px;\n  line-height: 20px;\n  color: #333333;\n  text-align: center;\n  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\n  vertical-align: middle;\n  cursor: pointer;\n  background-color: #f5f5f5;\n  *background-color: #e6e6e6;\n  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n  background-repeat: repeat-x;\n  border: 1px solid #cccccc;\n  *border: 0;\n  border-color: #e6e6e6 #e6e6e6 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  border-bottom-color: #b3b3b3;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  *zoom: 1;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn:hover,\n.btn:focus,\n.btn:active,\n.btn.active,\n.btn.disabled,\n.btn[disabled] {\n  color: #333333;\n  background-color: #e6e6e6;\n  *background-color: #d9d9d9;\n}\n\n.btn:active,\n.btn.active {\n  background-color: #cccccc \\9;\n}\n\n.btn:first-child {\n  *margin-left: 0;\n}\n\n.btn:hover,\n.btn:focus {\n  color: #333333;\n  text-decoration: none;\n  background-position: 0 -15px;\n  -webkit-transition: background-position 0.1s linear;\n     -moz-transition: background-position 0.1s linear;\n       -o-transition: background-position 0.1s linear;\n          transition: background-position 0.1s linear;\n}\n\n.btn:focus {\n  outline: thin dotted #333;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n.btn.active,\n.btn:active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn.disabled,\n.btn[disabled] {\n  cursor: default;\n  background-image: none;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-large {\n  padding: 11px 19px;\n  font-size: 17.5px;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.btn-large [class^=\"icon-\"],\n.btn-large [class*=\" icon-\"] {\n  margin-top: 4px;\n}\n\n.btn-small {\n  padding: 2px 10px;\n  font-size: 11.9px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.btn-small [class^=\"icon-\"],\n.btn-small [class*=\" icon-\"] {\n  margin-top: 0;\n}\n\n.btn-mini [class^=\"icon-\"],\n.btn-mini [class*=\" icon-\"] {\n  margin-top: -1px;\n}\n\n.btn-mini {\n  padding: 0 6px;\n  font-size: 10.5px;\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-right: 0;\n  padding-left: 0;\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.btn-primary.active,\n.btn-warning.active,\n.btn-danger.active,\n.btn-success.active,\n.btn-info.active,\n.btn-inverse.active {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.btn-primary {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #006dcc;\n  *background-color: #0044cc;\n  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));\n  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);\n  background-image: -o-linear-gradient(top, #0088cc, #0044cc);\n  background-image: linear-gradient(to bottom, #0088cc, #0044cc);\n  background-repeat: repeat-x;\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary:active,\n.btn-primary.active,\n.btn-primary.disabled,\n.btn-primary[disabled] {\n  color: #ffffff;\n  background-color: #0044cc;\n  *background-color: #003bb3;\n}\n\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #003399 \\9;\n}\n\n.btn-warning {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #faa732;\n  *background-color: #f89406;\n  background-image: -moz-linear-gradient(top, #fbb450, #f89406);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));\n  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);\n  background-image: -o-linear-gradient(top, #fbb450, #f89406);\n  background-image: linear-gradient(to bottom, #fbb450, #f89406);\n  background-repeat: repeat-x;\n  border-color: #f89406 #f89406 #ad6704;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning:active,\n.btn-warning.active,\n.btn-warning.disabled,\n.btn-warning[disabled] {\n  color: #ffffff;\n  background-color: #f89406;\n  *background-color: #df8505;\n}\n\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #c67605 \\9;\n}\n\n.btn-danger {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #da4f49;\n  *background-color: #bd362f;\n  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));\n  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);\n  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);\n  background-repeat: repeat-x;\n  border-color: #bd362f #bd362f #802420;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger:active,\n.btn-danger.active,\n.btn-danger.disabled,\n.btn-danger[disabled] {\n  color: #ffffff;\n  background-color: #bd362f;\n  *background-color: #a9302a;\n}\n\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #942a25 \\9;\n}\n\n.btn-success {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #5bb75b;\n  *background-color: #51a351;\n  background-image: -moz-linear-gradient(top, #62c462, #51a351);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));\n  background-image: -webkit-linear-gradient(top, #62c462, #51a351);\n  background-image: -o-linear-gradient(top, #62c462, #51a351);\n  background-image: linear-gradient(to bottom, #62c462, #51a351);\n  background-repeat: repeat-x;\n  border-color: #51a351 #51a351 #387038;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-success:hover,\n.btn-success:focus,\n.btn-success:active,\n.btn-success.active,\n.btn-success.disabled,\n.btn-success[disabled] {\n  color: #ffffff;\n  background-color: #51a351;\n  *background-color: #499249;\n}\n\n.btn-success:active,\n.btn-success.active {\n  background-color: #408140 \\9;\n}\n\n.btn-info {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #49afcd;\n  *background-color: #2f96b4;\n  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));\n  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);\n  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);\n  background-repeat: repeat-x;\n  border-color: #2f96b4 #2f96b4 #1f6377;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-info:hover,\n.btn-info:focus,\n.btn-info:active,\n.btn-info.active,\n.btn-info.disabled,\n.btn-info[disabled] {\n  color: #ffffff;\n  background-color: #2f96b4;\n  *background-color: #2a85a0;\n}\n\n.btn-info:active,\n.btn-info.active {\n  background-color: #24748c \\9;\n}\n\n.btn-inverse {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #363636;\n  *background-color: #222222;\n  background-image: -moz-linear-gradient(top, #444444, #222222);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));\n  background-image: -webkit-linear-gradient(top, #444444, #222222);\n  background-image: -o-linear-gradient(top, #444444, #222222);\n  background-image: linear-gradient(to bottom, #444444, #222222);\n  background-repeat: repeat-x;\n  border-color: #222222 #222222 #000000;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.btn-inverse:hover,\n.btn-inverse:focus,\n.btn-inverse:active,\n.btn-inverse.active,\n.btn-inverse.disabled,\n.btn-inverse[disabled] {\n  color: #ffffff;\n  background-color: #222222;\n  *background-color: #151515;\n}\n\n.btn-inverse:active,\n.btn-inverse.active {\n  background-color: #080808 \\9;\n}\n\nbutton.btn,\ninput[type=\"submit\"].btn {\n  *padding-top: 3px;\n  *padding-bottom: 3px;\n}\n\nbutton.btn::-moz-focus-inner,\ninput[type=\"submit\"].btn::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\n\nbutton.btn.btn-large,\ninput[type=\"submit\"].btn.btn-large {\n  *padding-top: 7px;\n  *padding-bottom: 7px;\n}\n\nbutton.btn.btn-small,\ninput[type=\"submit\"].btn.btn-small {\n  *padding-top: 3px;\n  *padding-bottom: 3px;\n}\n\nbutton.btn.btn-mini,\ninput[type=\"submit\"].btn.btn-mini {\n  *padding-top: 1px;\n  *padding-bottom: 1px;\n}\n\n.btn-link,\n.btn-link:active,\n.btn-link[disabled] {\n  background-color: transparent;\n  background-image: none;\n  -webkit-box-shadow: none;\n     -moz-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-link {\n  color: #0088cc;\n  cursor: pointer;\n  border-color: transparent;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-link:hover,\n.btn-link:focus {\n  color: #005580;\n  text-decoration: underline;\n  background-color: transparent;\n}\n\n.btn-link[disabled]:hover,\n.btn-link[disabled]:focus {\n  color: #333333;\n  text-decoration: none;\n}\n\n.btn-group {\n  position: relative;\n  display: inline-block;\n  *display: inline;\n  *margin-left: .3em;\n  font-size: 0;\n  white-space: nowrap;\n  vertical-align: middle;\n  *zoom: 1;\n}\n\n.btn-group:first-child {\n  *margin-left: 0;\n}\n\n.btn-group + .btn-group {\n  margin-left: 5px;\n}\n\n.btn-toolbar {\n  margin-top: 10px;\n  margin-bottom: 10px;\n  font-size: 0;\n}\n\n.btn-toolbar > .btn + .btn,\n.btn-toolbar > .btn-group + .btn,\n.btn-toolbar > .btn + .btn-group {\n  margin-left: 5px;\n}\n\n.btn-group > .btn {\n  position: relative;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-group > .btn + .btn {\n  margin-left: -1px;\n}\n\n.btn-group > .btn,\n.btn-group > .dropdown-menu,\n.btn-group > .popover {\n  font-size: 14px;\n}\n\n.btn-group > .btn-mini {\n  font-size: 10.5px;\n}\n\n.btn-group > .btn-small {\n  font-size: 11.9px;\n}\n\n.btn-group > .btn-large {\n  font-size: 17.5px;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.btn-group > .btn:last-child,\n.btn-group > .dropdown-toggle {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.btn-group > .btn.large:first-child {\n  margin-left: 0;\n  -webkit-border-bottom-left-radius: 6px;\n          border-bottom-left-radius: 6px;\n  -webkit-border-top-left-radius: 6px;\n          border-top-left-radius: 6px;\n  -moz-border-radius-bottomleft: 6px;\n  -moz-border-radius-topleft: 6px;\n}\n\n.btn-group > .btn.large:last-child,\n.btn-group > .large.dropdown-toggle {\n  -webkit-border-top-right-radius: 6px;\n          border-top-right-radius: 6px;\n  -webkit-border-bottom-right-radius: 6px;\n          border-bottom-right-radius: 6px;\n  -moz-border-radius-topright: 6px;\n  -moz-border-radius-bottomright: 6px;\n}\n\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active {\n  z-index: 2;\n}\n\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n.btn-group > .btn + .dropdown-toggle {\n  *padding-top: 5px;\n  padding-right: 8px;\n  *padding-bottom: 5px;\n  padding-left: 8px;\n  -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);\n     -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);\n          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);\n}\n\n.btn-group > .btn-mini + .dropdown-toggle {\n  *padding-top: 2px;\n  padding-right: 5px;\n  *padding-bottom: 2px;\n  padding-left: 5px;\n}\n\n.btn-group > .btn-small + .dropdown-toggle {\n  *padding-top: 5px;\n  *padding-bottom: 4px;\n}\n\n.btn-group > .btn-large + .dropdown-toggle {\n  *padding-top: 7px;\n  padding-right: 12px;\n  *padding-bottom: 7px;\n  padding-left: 12px;\n}\n\n.btn-group.open .dropdown-toggle {\n  background-image: none;\n  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.btn-group.open .btn.dropdown-toggle {\n  background-color: #e6e6e6;\n}\n\n.btn-group.open .btn-primary.dropdown-toggle {\n  background-color: #0044cc;\n}\n\n.btn-group.open .btn-warning.dropdown-toggle {\n  background-color: #f89406;\n}\n\n.btn-group.open .btn-danger.dropdown-toggle {\n  background-color: #bd362f;\n}\n\n.btn-group.open .btn-success.dropdown-toggle {\n  background-color: #51a351;\n}\n\n.btn-group.open .btn-info.dropdown-toggle {\n  background-color: #2f96b4;\n}\n\n.btn-group.open .btn-inverse.dropdown-toggle {\n  background-color: #222222;\n}\n\n.btn .caret {\n  margin-top: 8px;\n  margin-left: 0;\n}\n\n.btn-large .caret {\n  margin-top: 6px;\n}\n\n.btn-large .caret {\n  border-top-width: 5px;\n  border-right-width: 5px;\n  border-left-width: 5px;\n}\n\n.btn-mini .caret,\n.btn-small .caret {\n  margin-top: 8px;\n}\n\n.dropup .btn-large .caret {\n  border-bottom-width: 5px;\n}\n\n.btn-primary .caret,\n.btn-warning .caret,\n.btn-danger .caret,\n.btn-info .caret,\n.btn-success .caret,\n.btn-inverse .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.btn-group-vertical {\n  display: inline-block;\n  *display: inline;\n  /* IE7 inline-block hack */\n\n  *zoom: 1;\n}\n\n.btn-group-vertical > .btn {\n  display: block;\n  float: none;\n  max-width: 100%;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.btn-group-vertical > .btn + .btn {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:first-child {\n  -webkit-border-radius: 4px 4px 0 0;\n     -moz-border-radius: 4px 4px 0 0;\n          border-radius: 4px 4px 0 0;\n}\n\n.btn-group-vertical > .btn:last-child {\n  -webkit-border-radius: 0 0 4px 4px;\n     -moz-border-radius: 0 0 4px 4px;\n          border-radius: 0 0 4px 4px;\n}\n\n.btn-group-vertical > .btn-large:first-child {\n  -webkit-border-radius: 6px 6px 0 0;\n     -moz-border-radius: 6px 6px 0 0;\n          border-radius: 6px 6px 0 0;\n}\n\n.btn-group-vertical > .btn-large:last-child {\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n}\n\n.alert {\n  padding: 8px 35px 8px 14px;\n  margin-bottom: 20px;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n  background-color: #fcf8e3;\n  border: 1px solid #fbeed5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.alert,\n.alert h4 {\n  color: #c09853;\n}\n\n.alert h4 {\n  margin: 0;\n}\n\n.alert .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  line-height: 20px;\n}\n\n.alert-success {\n  color: #468847;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n\n.alert-success h4 {\n  color: #468847;\n}\n\n.alert-danger,\n.alert-error {\n  color: #b94a48;\n  background-color: #f2dede;\n  border-color: #eed3d7;\n}\n\n.alert-danger h4,\n.alert-error h4 {\n  color: #b94a48;\n}\n\n.alert-info {\n  color: #3a87ad;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n\n.alert-info h4 {\n  color: #3a87ad;\n}\n\n.alert-block {\n  padding-top: 14px;\n  padding-bottom: 14px;\n}\n\n.alert-block > p,\n.alert-block > ul {\n  margin-bottom: 0;\n}\n\n.alert-block p + p {\n  margin-top: 5px;\n}\n\n.nav {\n  margin-bottom: 20px;\n  margin-left: 0;\n  list-style: none;\n}\n\n.nav > li > a {\n  display: block;\n}\n\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n\n.nav > li > a > img {\n  max-width: none;\n}\n\n.nav > .pull-right {\n  float: right;\n}\n\n.nav-header {\n  display: block;\n  padding: 3px 15px;\n  font-size: 11px;\n  font-weight: bold;\n  line-height: 20px;\n  color: #999999;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n  text-transform: uppercase;\n}\n\n.nav li + .nav-header {\n  margin-top: 9px;\n}\n\n.nav-list {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-bottom: 0;\n}\n\n.nav-list > li > a,\n.nav-list .nav-header {\n  margin-right: -15px;\n  margin-left: -15px;\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n}\n\n.nav-list > li > a {\n  padding: 3px 15px;\n}\n\n.nav-list > .active > a,\n.nav-list > .active > a:hover,\n.nav-list > .active > a:focus {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  background-color: #0088cc;\n}\n\n.nav-list [class^=\"icon-\"],\n.nav-list [class*=\" icon-\"] {\n  margin-right: 2px;\n}\n\n.nav-list .divider {\n  *width: 100%;\n  height: 1px;\n  margin: 9px 1px;\n  *margin: -5px 0 5px;\n  overflow: hidden;\n  background-color: #e5e5e5;\n  border-bottom: 1px solid #ffffff;\n}\n\n.nav-tabs,\n.nav-pills {\n  *zoom: 1;\n}\n\n.nav-tabs:before,\n.nav-pills:before,\n.nav-tabs:after,\n.nav-pills:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.nav-tabs:after,\n.nav-pills:after {\n  clear: both;\n}\n\n.nav-tabs > li,\n.nav-pills > li {\n  float: left;\n}\n\n.nav-tabs > li > a,\n.nav-pills > li > a {\n  padding-right: 12px;\n  padding-left: 12px;\n  margin-right: 2px;\n  line-height: 14px;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs > li {\n  margin-bottom: -1px;\n}\n\n.nav-tabs > li > a {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  line-height: 20px;\n  border: 1px solid transparent;\n  -webkit-border-radius: 4px 4px 0 0;\n     -moz-border-radius: 4px 4px 0 0;\n          border-radius: 4px 4px 0 0;\n}\n\n.nav-tabs > li > a:hover,\n.nav-tabs > li > a:focus {\n  border-color: #eeeeee #eeeeee #dddddd;\n}\n\n.nav-tabs > .active > a,\n.nav-tabs > .active > a:hover,\n.nav-tabs > .active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #ffffff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n\n.nav-pills > li > a {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  margin-top: 2px;\n  margin-bottom: 2px;\n  -webkit-border-radius: 5px;\n     -moz-border-radius: 5px;\n          border-radius: 5px;\n}\n\n.nav-pills > .active > a,\n.nav-pills > .active > a:hover,\n.nav-pills > .active > a:focus {\n  color: #ffffff;\n  background-color: #0088cc;\n}\n\n.nav-stacked > li {\n  float: none;\n}\n\n.nav-stacked > li > a {\n  margin-right: 0;\n}\n\n.nav-tabs.nav-stacked {\n  border-bottom: 0;\n}\n\n.nav-tabs.nav-stacked > li > a {\n  border: 1px solid #ddd;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.nav-tabs.nav-stacked > li:first-child > a {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.nav-tabs.nav-stacked > li:last-child > a {\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomright: 4px;\n  -moz-border-radius-bottomleft: 4px;\n}\n\n.nav-tabs.nav-stacked > li > a:hover,\n.nav-tabs.nav-stacked > li > a:focus {\n  z-index: 2;\n  border-color: #ddd;\n}\n\n.nav-pills.nav-stacked > li > a {\n  margin-bottom: 3px;\n}\n\n.nav-pills.nav-stacked > li:last-child > a {\n  margin-bottom: 1px;\n}\n\n.nav-tabs .dropdown-menu {\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n}\n\n.nav-pills .dropdown-menu {\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.nav .dropdown-toggle .caret {\n  margin-top: 6px;\n  border-top-color: #0088cc;\n  border-bottom-color: #0088cc;\n}\n\n.nav .dropdown-toggle:hover .caret,\n.nav .dropdown-toggle:focus .caret {\n  border-top-color: #005580;\n  border-bottom-color: #005580;\n}\n\n/* move down carets for tabs */\n\n.nav-tabs .dropdown-toggle .caret {\n  margin-top: 8px;\n}\n\n.nav .active .dropdown-toggle .caret {\n  border-top-color: #fff;\n  border-bottom-color: #fff;\n}\n\n.nav-tabs .active .dropdown-toggle .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n\n.nav > .dropdown.active > a:hover,\n.nav > .dropdown.active > a:focus {\n  cursor: pointer;\n}\n\n.nav-tabs .open .dropdown-toggle,\n.nav-pills .open .dropdown-toggle,\n.nav > li.dropdown.open.active > a:hover,\n.nav > li.dropdown.open.active > a:focus {\n  color: #ffffff;\n  background-color: #999999;\n  border-color: #999999;\n}\n\n.nav li.dropdown.open .caret,\n.nav li.dropdown.open.active .caret,\n.nav li.dropdown.open a:hover .caret,\n.nav li.dropdown.open a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n  opacity: 1;\n  filter: alpha(opacity=100);\n}\n\n.tabs-stacked .open > a:hover,\n.tabs-stacked .open > a:focus {\n  border-color: #999999;\n}\n\n.tabbable {\n  *zoom: 1;\n}\n\n.tabbable:before,\n.tabbable:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.tabbable:after {\n  clear: both;\n}\n\n.tab-content {\n  overflow: auto;\n}\n\n.tabs-below > .nav-tabs,\n.tabs-right > .nav-tabs,\n.tabs-left > .nav-tabs {\n  border-bottom: 0;\n}\n\n.tab-content > .tab-pane,\n.pill-content > .pill-pane {\n  display: none;\n}\n\n.tab-content > .active,\n.pill-content > .active {\n  display: block;\n}\n\n.tabs-below > .nav-tabs {\n  border-top: 1px solid #ddd;\n}\n\n.tabs-below > .nav-tabs > li {\n  margin-top: -1px;\n  margin-bottom: 0;\n}\n\n.tabs-below > .nav-tabs > li > a {\n  -webkit-border-radius: 0 0 4px 4px;\n     -moz-border-radius: 0 0 4px 4px;\n          border-radius: 0 0 4px 4px;\n}\n\n.tabs-below > .nav-tabs > li > a:hover,\n.tabs-below > .nav-tabs > li > a:focus {\n  border-top-color: #ddd;\n  border-bottom-color: transparent;\n}\n\n.tabs-below > .nav-tabs > .active > a,\n.tabs-below > .nav-tabs > .active > a:hover,\n.tabs-below > .nav-tabs > .active > a:focus {\n  border-color: transparent #ddd #ddd #ddd;\n}\n\n.tabs-left > .nav-tabs > li,\n.tabs-right > .nav-tabs > li {\n  float: none;\n}\n\n.tabs-left > .nav-tabs > li > a,\n.tabs-right > .nav-tabs > li > a {\n  min-width: 74px;\n  margin-right: 0;\n  margin-bottom: 3px;\n}\n\n.tabs-left > .nav-tabs {\n  float: left;\n  margin-right: 19px;\n  border-right: 1px solid #ddd;\n}\n\n.tabs-left > .nav-tabs > li > a {\n  margin-right: -1px;\n  -webkit-border-radius: 4px 0 0 4px;\n     -moz-border-radius: 4px 0 0 4px;\n          border-radius: 4px 0 0 4px;\n}\n\n.tabs-left > .nav-tabs > li > a:hover,\n.tabs-left > .nav-tabs > li > a:focus {\n  border-color: #eeeeee #dddddd #eeeeee #eeeeee;\n}\n\n.tabs-left > .nav-tabs .active > a,\n.tabs-left > .nav-tabs .active > a:hover,\n.tabs-left > .nav-tabs .active > a:focus {\n  border-color: #ddd transparent #ddd #ddd;\n  *border-right-color: #ffffff;\n}\n\n.tabs-right > .nav-tabs {\n  float: right;\n  margin-left: 19px;\n  border-left: 1px solid #ddd;\n}\n\n.tabs-right > .nav-tabs > li > a {\n  margin-left: -1px;\n  -webkit-border-radius: 0 4px 4px 0;\n     -moz-border-radius: 0 4px 4px 0;\n          border-radius: 0 4px 4px 0;\n}\n\n.tabs-right > .nav-tabs > li > a:hover,\n.tabs-right > .nav-tabs > li > a:focus {\n  border-color: #eeeeee #eeeeee #eeeeee #dddddd;\n}\n\n.tabs-right > .nav-tabs .active > a,\n.tabs-right > .nav-tabs .active > a:hover,\n.tabs-right > .nav-tabs .active > a:focus {\n  border-color: #ddd #ddd #ddd transparent;\n  *border-left-color: #ffffff;\n}\n\n.nav > .disabled > a {\n  color: #999999;\n}\n\n.nav > .disabled > a:hover,\n.nav > .disabled > a:focus {\n  text-decoration: none;\n  cursor: default;\n  background-color: transparent;\n}\n\n.navbar {\n  *position: relative;\n  *z-index: 2;\n  margin-bottom: 20px;\n  overflow: visible;\n}\n\n.navbar-inner {\n  min-height: 40px;\n  padding-right: 20px;\n  padding-left: 20px;\n  background-color: #fafafa;\n  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));\n  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);\n  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);\n  background-repeat: repeat-x;\n  border: 1px solid #d4d4d4;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);\n  *zoom: 1;\n  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);\n}\n\n.navbar-inner:before,\n.navbar-inner:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.navbar-inner:after {\n  clear: both;\n}\n\n.navbar .container {\n  width: auto;\n}\n\n.nav-collapse.collapse {\n  height: auto;\n  overflow: visible;\n}\n\n.navbar .brand {\n  display: block;\n  float: left;\n  padding: 10px 20px 10px;\n  margin-left: -20px;\n  font-size: 20px;\n  font-weight: 200;\n  color: #777777;\n  text-shadow: 0 1px 0 #ffffff;\n}\n\n.navbar .brand:hover,\n.navbar .brand:focus {\n  text-decoration: none;\n}\n\n.navbar-text {\n  margin-bottom: 0;\n  line-height: 40px;\n  color: #777777;\n}\n\n.navbar-link {\n  color: #777777;\n}\n\n.navbar-link:hover,\n.navbar-link:focus {\n  color: #333333;\n}\n\n.navbar .divider-vertical {\n  height: 40px;\n  margin: 0 9px;\n  border-right: 1px solid #ffffff;\n  border-left: 1px solid #f2f2f2;\n}\n\n.navbar .btn,\n.navbar .btn-group {\n  margin-top: 5px;\n}\n\n.navbar .btn-group .btn,\n.navbar .input-prepend .btn,\n.navbar .input-append .btn,\n.navbar .input-prepend .btn-group,\n.navbar .input-append .btn-group {\n  margin-top: 0;\n}\n\n.navbar-form {\n  margin-bottom: 0;\n  *zoom: 1;\n}\n\n.navbar-form:before,\n.navbar-form:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.navbar-form:after {\n  clear: both;\n}\n\n.navbar-form input,\n.navbar-form select,\n.navbar-form .radio,\n.navbar-form .checkbox {\n  margin-top: 5px;\n}\n\n.navbar-form input,\n.navbar-form select,\n.navbar-form .btn {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n.navbar-form input[type=\"image\"],\n.navbar-form input[type=\"checkbox\"],\n.navbar-form input[type=\"radio\"] {\n  margin-top: 3px;\n}\n\n.navbar-form .input-append,\n.navbar-form .input-prepend {\n  margin-top: 5px;\n  white-space: nowrap;\n}\n\n.navbar-form .input-append input,\n.navbar-form .input-prepend input {\n  margin-top: 0;\n}\n\n.navbar-search {\n  position: relative;\n  float: left;\n  margin-top: 5px;\n  margin-bottom: 0;\n}\n\n.navbar-search .search-query {\n  padding: 4px 14px;\n  margin-bottom: 0;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n.navbar-static-top {\n  position: static;\n  margin-bottom: 0;\n}\n\n.navbar-static-top .navbar-inner {\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n  margin-bottom: 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-static-top .navbar-inner {\n  border-width: 0 0 1px;\n}\n\n.navbar-fixed-bottom .navbar-inner {\n  border-width: 1px 0 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-fixed-bottom .navbar-inner {\n  padding-right: 0;\n  padding-left: 0;\n  -webkit-border-radius: 0;\n     -moz-border-radius: 0;\n          border-radius: 0;\n}\n\n.navbar-static-top .container,\n.navbar-fixed-top .container,\n.navbar-fixed-bottom .container {\n  width: 940px;\n}\n\n.navbar-fixed-top {\n  top: 0;\n}\n\n.navbar-fixed-top .navbar-inner,\n.navbar-static-top .navbar-inner {\n  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);\n}\n\n.navbar-fixed-bottom {\n  bottom: 0;\n}\n\n.navbar-fixed-bottom .navbar-inner {\n  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);\n}\n\n.navbar .nav {\n  position: relative;\n  left: 0;\n  display: block;\n  float: left;\n  margin: 0 10px 0 0;\n}\n\n.navbar .nav.pull-right {\n  float: right;\n  margin-right: 0;\n}\n\n.navbar .nav > li {\n  float: left;\n}\n\n.navbar .nav > li > a {\n  float: none;\n  padding: 10px 15px 10px;\n  color: #777777;\n  text-decoration: none;\n  text-shadow: 0 1px 0 #ffffff;\n}\n\n.navbar .nav .dropdown-toggle .caret {\n  margin-top: 8px;\n}\n\n.navbar .nav > li > a:focus,\n.navbar .nav > li > a:hover {\n  color: #333333;\n  text-decoration: none;\n  background-color: transparent;\n}\n\n.navbar .nav > .active > a,\n.navbar .nav > .active > a:hover,\n.navbar .nav > .active > a:focus {\n  color: #555555;\n  text-decoration: none;\n  background-color: #e5e5e5;\n  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);\n}\n\n.navbar .btn-navbar {\n  display: none;\n  float: right;\n  padding: 7px 10px;\n  margin-right: 5px;\n  margin-left: 5px;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #ededed;\n  *background-color: #e5e5e5;\n  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));\n  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);\n  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);\n  background-repeat: repeat-x;\n  border-color: #e5e5e5 #e5e5e5 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);\n}\n\n.navbar .btn-navbar:hover,\n.navbar .btn-navbar:focus,\n.navbar .btn-navbar:active,\n.navbar .btn-navbar.active,\n.navbar .btn-navbar.disabled,\n.navbar .btn-navbar[disabled] {\n  color: #ffffff;\n  background-color: #e5e5e5;\n  *background-color: #d9d9d9;\n}\n\n.navbar .btn-navbar:active,\n.navbar .btn-navbar.active {\n  background-color: #cccccc \\9;\n}\n\n.navbar .btn-navbar .icon-bar {\n  display: block;\n  width: 18px;\n  height: 2px;\n  background-color: #f5f5f5;\n  -webkit-border-radius: 1px;\n     -moz-border-radius: 1px;\n          border-radius: 1px;\n  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.btn-navbar .icon-bar + .icon-bar {\n  margin-top: 3px;\n}\n\n.navbar .nav > li > .dropdown-menu:before {\n  position: absolute;\n  top: -7px;\n  left: 9px;\n  display: inline-block;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-left: 7px solid transparent;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  content: '';\n}\n\n.navbar .nav > li > .dropdown-menu:after {\n  position: absolute;\n  top: -6px;\n  left: 10px;\n  display: inline-block;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  border-left: 6px solid transparent;\n  content: '';\n}\n\n.navbar-fixed-bottom .nav > li > .dropdown-menu:before {\n  top: auto;\n  bottom: -7px;\n  border-top: 7px solid #ccc;\n  border-bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.2);\n}\n\n.navbar-fixed-bottom .nav > li > .dropdown-menu:after {\n  top: auto;\n  bottom: -6px;\n  border-top: 6px solid #ffffff;\n  border-bottom: 0;\n}\n\n.navbar .nav li.dropdown > a:hover .caret,\n.navbar .nav li.dropdown > a:focus .caret {\n  border-top-color: #333333;\n  border-bottom-color: #333333;\n}\n\n.navbar .nav li.dropdown.open > .dropdown-toggle,\n.navbar .nav li.dropdown.active > .dropdown-toggle,\n.navbar .nav li.dropdown.open.active > .dropdown-toggle {\n  color: #555555;\n  background-color: #e5e5e5;\n}\n\n.navbar .nav li.dropdown > .dropdown-toggle .caret {\n  border-top-color: #777777;\n  border-bottom-color: #777777;\n}\n\n.navbar .nav li.dropdown.open > .dropdown-toggle .caret,\n.navbar .nav li.dropdown.active > .dropdown-toggle .caret,\n.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {\n  border-top-color: #555555;\n  border-bottom-color: #555555;\n}\n\n.navbar .pull-right > li > .dropdown-menu,\n.navbar .nav > li > .dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu:before,\n.navbar .nav > li > .dropdown-menu.pull-right:before {\n  right: 12px;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu:after,\n.navbar .nav > li > .dropdown-menu.pull-right:after {\n  right: 13px;\n  left: auto;\n}\n\n.navbar .pull-right > li > .dropdown-menu .dropdown-menu,\n.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {\n  right: 100%;\n  left: auto;\n  margin-right: -1px;\n  margin-left: 0;\n  -webkit-border-radius: 6px 0 6px 6px;\n     -moz-border-radius: 6px 0 6px 6px;\n          border-radius: 6px 0 6px 6px;\n}\n\n.navbar-inverse .navbar-inner {\n  background-color: #1b1b1b;\n  background-image: -moz-linear-gradient(top, #222222, #111111);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));\n  background-image: -webkit-linear-gradient(top, #222222, #111111);\n  background-image: -o-linear-gradient(top, #222222, #111111);\n  background-image: linear-gradient(to bottom, #222222, #111111);\n  background-repeat: repeat-x;\n  border-color: #252525;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);\n}\n\n.navbar-inverse .brand,\n.navbar-inverse .nav > li > a {\n  color: #999999;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n\n.navbar-inverse .brand:hover,\n.navbar-inverse .nav > li > a:hover,\n.navbar-inverse .brand:focus,\n.navbar-inverse .nav > li > a:focus {\n  color: #ffffff;\n}\n\n.navbar-inverse .brand {\n  color: #999999;\n}\n\n.navbar-inverse .navbar-text {\n  color: #999999;\n}\n\n.navbar-inverse .nav > li > a:focus,\n.navbar-inverse .nav > li > a:hover {\n  color: #ffffff;\n  background-color: transparent;\n}\n\n.navbar-inverse .nav .active > a,\n.navbar-inverse .nav .active > a:hover,\n.navbar-inverse .nav .active > a:focus {\n  color: #ffffff;\n  background-color: #111111;\n}\n\n.navbar-inverse .navbar-link {\n  color: #999999;\n}\n\n.navbar-inverse .navbar-link:hover,\n.navbar-inverse .navbar-link:focus {\n  color: #ffffff;\n}\n\n.navbar-inverse .divider-vertical {\n  border-right-color: #222222;\n  border-left-color: #111111;\n}\n\n.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,\n.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,\n.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {\n  color: #ffffff;\n  background-color: #111111;\n}\n\n.navbar-inverse .nav li.dropdown > a:hover .caret,\n.navbar-inverse .nav li.dropdown > a:focus .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {\n  border-top-color: #999999;\n  border-bottom-color: #999999;\n}\n\n.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,\n.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,\n.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {\n  border-top-color: #ffffff;\n  border-bottom-color: #ffffff;\n}\n\n.navbar-inverse .navbar-search .search-query {\n  color: #ffffff;\n  background-color: #515151;\n  border-color: #111111;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);\n  -webkit-transition: none;\n     -moz-transition: none;\n       -o-transition: none;\n          transition: none;\n}\n\n.navbar-inverse .navbar-search .search-query:-moz-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {\n  color: #cccccc;\n}\n\n.navbar-inverse .navbar-search .search-query:focus,\n.navbar-inverse .navbar-search .search-query.focused {\n  padding: 5px 15px;\n  color: #333333;\n  text-shadow: 0 1px 0 #ffffff;\n  background-color: #ffffff;\n  border: 0;\n  outline: 0;\n  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);\n}\n\n.navbar-inverse .btn-navbar {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #0e0e0e;\n  *background-color: #040404;\n  background-image: -moz-linear-gradient(top, #151515, #040404);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));\n  background-image: -webkit-linear-gradient(top, #151515, #040404);\n  background-image: -o-linear-gradient(top, #151515, #040404);\n  background-image: linear-gradient(to bottom, #151515, #040404);\n  background-repeat: repeat-x;\n  border-color: #040404 #040404 #000000;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n}\n\n.navbar-inverse .btn-navbar:hover,\n.navbar-inverse .btn-navbar:focus,\n.navbar-inverse .btn-navbar:active,\n.navbar-inverse .btn-navbar.active,\n.navbar-inverse .btn-navbar.disabled,\n.navbar-inverse .btn-navbar[disabled] {\n  color: #ffffff;\n  background-color: #040404;\n  *background-color: #000000;\n}\n\n.navbar-inverse .btn-navbar:active,\n.navbar-inverse .btn-navbar.active {\n  background-color: #000000 \\9;\n}\n\n.breadcrumb {\n  padding: 8px 15px;\n  margin: 0 0 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.breadcrumb > li {\n  display: inline-block;\n  *display: inline;\n  text-shadow: 0 1px 0 #ffffff;\n  *zoom: 1;\n}\n\n.breadcrumb > li > .divider {\n  padding: 0 5px;\n  color: #ccc;\n}\n\n.breadcrumb > .active {\n  color: #999999;\n}\n\n.pagination {\n  margin: 20px 0;\n}\n\n.pagination ul {\n  display: inline-block;\n  *display: inline;\n  margin-bottom: 0;\n  margin-left: 0;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  *zoom: 1;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.pagination ul > li {\n  display: inline;\n}\n\n.pagination ul > li > a,\n.pagination ul > li > span {\n  float: left;\n  padding: 4px 12px;\n  line-height: 20px;\n  text-decoration: none;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-left-width: 0;\n}\n\n.pagination ul > li > a:hover,\n.pagination ul > li > a:focus,\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  background-color: #f5f5f5;\n}\n\n.pagination ul > .active > a,\n.pagination ul > .active > span {\n  color: #999999;\n  cursor: default;\n}\n\n.pagination ul > .disabled > span,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > a:hover,\n.pagination ul > .disabled > a:focus {\n  color: #999999;\n  cursor: default;\n  background-color: transparent;\n}\n\n.pagination ul > li:first-child > a,\n.pagination ul > li:first-child > span {\n  border-left-width: 1px;\n  -webkit-border-bottom-left-radius: 4px;\n          border-bottom-left-radius: 4px;\n  -webkit-border-top-left-radius: 4px;\n          border-top-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  -moz-border-radius-topleft: 4px;\n}\n\n.pagination ul > li:last-child > a,\n.pagination ul > li:last-child > span {\n  -webkit-border-top-right-radius: 4px;\n          border-top-right-radius: 4px;\n  -webkit-border-bottom-right-radius: 4px;\n          border-bottom-right-radius: 4px;\n  -moz-border-radius-topright: 4px;\n  -moz-border-radius-bottomright: 4px;\n}\n\n.pagination-centered {\n  text-align: center;\n}\n\n.pagination-right {\n  text-align: right;\n}\n\n.pagination-large ul > li > a,\n.pagination-large ul > li > span {\n  padding: 11px 19px;\n  font-size: 17.5px;\n}\n\n.pagination-large ul > li:first-child > a,\n.pagination-large ul > li:first-child > span {\n  -webkit-border-bottom-left-radius: 6px;\n          border-bottom-left-radius: 6px;\n  -webkit-border-top-left-radius: 6px;\n          border-top-left-radius: 6px;\n  -moz-border-radius-bottomleft: 6px;\n  -moz-border-radius-topleft: 6px;\n}\n\n.pagination-large ul > li:last-child > a,\n.pagination-large ul > li:last-child > span {\n  -webkit-border-top-right-radius: 6px;\n          border-top-right-radius: 6px;\n  -webkit-border-bottom-right-radius: 6px;\n          border-bottom-right-radius: 6px;\n  -moz-border-radius-topright: 6px;\n  -moz-border-radius-bottomright: 6px;\n}\n\n.pagination-mini ul > li:first-child > a,\n.pagination-small ul > li:first-child > a,\n.pagination-mini ul > li:first-child > span,\n.pagination-small ul > li:first-child > span {\n  -webkit-border-bottom-left-radius: 3px;\n          border-bottom-left-radius: 3px;\n  -webkit-border-top-left-radius: 3px;\n          border-top-left-radius: 3px;\n  -moz-border-radius-bottomleft: 3px;\n  -moz-border-radius-topleft: 3px;\n}\n\n.pagination-mini ul > li:last-child > a,\n.pagination-small ul > li:last-child > a,\n.pagination-mini ul > li:last-child > span,\n.pagination-small ul > li:last-child > span {\n  -webkit-border-top-right-radius: 3px;\n          border-top-right-radius: 3px;\n  -webkit-border-bottom-right-radius: 3px;\n          border-bottom-right-radius: 3px;\n  -moz-border-radius-topright: 3px;\n  -moz-border-radius-bottomright: 3px;\n}\n\n.pagination-small ul > li > a,\n.pagination-small ul > li > span {\n  padding: 2px 10px;\n  font-size: 11.9px;\n}\n\n.pagination-mini ul > li > a,\n.pagination-mini ul > li > span {\n  padding: 0 6px;\n  font-size: 10.5px;\n}\n\n.pager {\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n  *zoom: 1;\n}\n\n.pager:before,\n.pager:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.pager:after {\n  clear: both;\n}\n\n.pager li {\n  display: inline;\n}\n\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 15px;\n     -moz-border-radius: 15px;\n          border-radius: 15px;\n}\n\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #999999;\n  cursor: default;\n  background-color: #fff;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop,\n.modal-backdrop.fade.in {\n  opacity: 0.8;\n  filter: alpha(opacity=80);\n}\n\n.modal {\n  position: fixed;\n  top: 10%;\n  left: 50%;\n  z-index: 1050;\n  width: 560px;\n  margin-left: -280px;\n  background-color: #ffffff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.3);\n  *border: 1px solid #999;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  outline: none;\n  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding-box;\n          background-clip: padding-box;\n}\n\n.modal.fade {\n  top: -25%;\n  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;\n     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;\n       -o-transition: opacity 0.3s linear, top 0.3s ease-out;\n          transition: opacity 0.3s linear, top 0.3s ease-out;\n}\n\n.modal.fade.in {\n  top: 10%;\n}\n\n.modal-header {\n  padding: 9px 15px;\n  border-bottom: 1px solid #eee;\n}\n\n.modal-header .close {\n  margin-top: 2px;\n}\n\n.modal-header h3 {\n  margin: 0;\n  line-height: 30px;\n}\n\n.modal-body {\n  position: relative;\n  max-height: 400px;\n  padding: 15px;\n  overflow-y: auto;\n}\n\n.modal-form {\n  margin-bottom: 0;\n}\n\n.modal-footer {\n  padding: 14px 15px 15px;\n  margin-bottom: 0;\n  text-align: right;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  -webkit-border-radius: 0 0 6px 6px;\n     -moz-border-radius: 0 0 6px 6px;\n          border-radius: 0 0 6px 6px;\n  *zoom: 1;\n  -webkit-box-shadow: inset 0 1px 0 #ffffff;\n     -moz-box-shadow: inset 0 1px 0 #ffffff;\n          box-shadow: inset 0 1px 0 #ffffff;\n}\n\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.modal-footer:after {\n  clear: both;\n}\n\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1030;\n  display: block;\n  font-size: 11px;\n  line-height: 1.4;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  visibility: visible;\n}\n\n.tooltip.in {\n  opacity: 0.8;\n  filter: alpha(opacity=80);\n}\n\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 8px;\n  color: #ffffff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000000;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-top-color: #000000;\n  border-width: 5px 5px 0;\n}\n\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-right-color: #000000;\n  border-width: 5px 5px 5px 0;\n}\n\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-left-color: #000000;\n  border-width: 5px 0 5px 5px;\n}\n\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-bottom-color: #000000;\n  border-width: 0 5px 5px;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1010;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  text-align: left;\n  white-space: normal;\n  background-color: #ffffff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n     -moz-background-clip: padding;\n          background-clip: padding-box;\n}\n\n.popover.top {\n  margin-top: -10px;\n}\n\n.popover.right {\n  margin-left: 10px;\n}\n\n.popover.bottom {\n  margin-top: 10px;\n}\n\n.popover.left {\n  margin-left: -10px;\n}\n\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  -webkit-border-radius: 5px 5px 0 0;\n     -moz-border-radius: 5px 5px 0 0;\n          border-radius: 5px 5px 0 0;\n}\n\n.popover-title:empty {\n  display: none;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n.popover .arrow,\n.popover .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n\n.popover .arrow {\n  border-width: 11px;\n}\n\n.popover .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n\n.popover.top .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n\n.popover.top .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  border-top-color: #ffffff;\n  border-bottom-width: 0;\n}\n\n.popover.right .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n\n.popover.right .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  border-right-color: #ffffff;\n  border-left-width: 0;\n}\n\n.popover.bottom .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  border-top-width: 0;\n}\n\n.popover.bottom .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  border-bottom-color: #ffffff;\n  border-top-width: 0;\n}\n\n.popover.left .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n  border-right-width: 0;\n}\n\n.popover.left .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  border-left-color: #ffffff;\n  border-right-width: 0;\n}\n\n.thumbnails {\n  margin-left: -20px;\n  list-style: none;\n  *zoom: 1;\n}\n\n.thumbnails:before,\n.thumbnails:after {\n  display: table;\n  line-height: 0;\n  content: \"\";\n}\n\n.thumbnails:after {\n  clear: both;\n}\n\n.row-fluid .thumbnails {\n  margin-left: 0;\n}\n\n.thumbnails > li {\n  float: left;\n  margin-bottom: 20px;\n  margin-left: 20px;\n}\n\n.thumbnail {\n  display: block;\n  padding: 4px;\n  line-height: 20px;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);\n  -webkit-transition: all 0.2s ease-in-out;\n     -moz-transition: all 0.2s ease-in-out;\n       -o-transition: all 0.2s ease-in-out;\n          transition: all 0.2s ease-in-out;\n}\n\na.thumbnail:hover,\na.thumbnail:focus {\n  border-color: #0088cc;\n  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);\n}\n\n.thumbnail > img {\n  display: block;\n  max-width: 100%;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.thumbnail .caption {\n  padding: 9px;\n  color: #555555;\n}\n\n.media,\n.media-body {\n  overflow: hidden;\n  *overflow: visible;\n  zoom: 1;\n}\n\n.media,\n.media .media {\n  margin-top: 15px;\n}\n\n.media:first-child {\n  margin-top: 0;\n}\n\n.media-object {\n  display: block;\n}\n\n.media-heading {\n  margin: 0 0 5px;\n}\n\n.media > .pull-left {\n  margin-right: 10px;\n}\n\n.media > .pull-right {\n  margin-left: 10px;\n}\n\n.media-list {\n  margin-left: 0;\n  list-style: none;\n}\n\n.label,\n.badge {\n  display: inline-block;\n  padding: 2px 4px;\n  font-size: 11.844px;\n  font-weight: bold;\n  line-height: 14px;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #999999;\n}\n\n.label {\n  -webkit-border-radius: 3px;\n     -moz-border-radius: 3px;\n          border-radius: 3px;\n}\n\n.badge {\n  padding-right: 9px;\n  padding-left: 9px;\n  -webkit-border-radius: 9px;\n     -moz-border-radius: 9px;\n          border-radius: 9px;\n}\n\n.label:empty,\n.badge:empty {\n  display: none;\n}\n\na.label:hover,\na.label:focus,\na.badge:hover,\na.badge:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n\n.label-important,\n.badge-important {\n  background-color: #b94a48;\n}\n\n.label-important[href],\n.badge-important[href] {\n  background-color: #953b39;\n}\n\n.label-warning,\n.badge-warning {\n  background-color: #f89406;\n}\n\n.label-warning[href],\n.badge-warning[href] {\n  background-color: #c67605;\n}\n\n.label-success,\n.badge-success {\n  background-color: #468847;\n}\n\n.label-success[href],\n.badge-success[href] {\n  background-color: #356635;\n}\n\n.label-info,\n.badge-info {\n  background-color: #3a87ad;\n}\n\n.label-info[href],\n.badge-info[href] {\n  background-color: #2d6987;\n}\n\n.label-inverse,\n.badge-inverse {\n  background-color: #333333;\n}\n\n.label-inverse[href],\n.badge-inverse[href] {\n  background-color: #1a1a1a;\n}\n\n.btn .label,\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.btn-mini .label,\n.btn-mini .badge {\n  top: 0;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-moz-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-ms-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 0 0;\n  }\n  to {\n    background-position: 40px 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f7f7f7;\n  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));\n  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);\n  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);\n  background-repeat: repeat-x;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.progress .bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #0e90d2;\n  background-image: -moz-linear-gradient(top, #149bdf, #0480be);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));\n  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);\n  background-image: -o-linear-gradient(top, #149bdf, #0480be);\n  background-image: linear-gradient(to bottom, #149bdf, #0480be);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  -webkit-transition: width 0.6s ease;\n     -moz-transition: width 0.6s ease;\n       -o-transition: width 0.6s ease;\n          transition: width 0.6s ease;\n}\n\n.progress .bar + .bar {\n  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n}\n\n.progress-striped .bar {\n  background-color: #149bdf;\n  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));\n  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);\n  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);\n  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);\n  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);\n  -webkit-background-size: 40px 40px;\n     -moz-background-size: 40px 40px;\n       -o-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n\n.progress.active .bar {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n     -moz-animation: progress-bar-stripes 2s linear infinite;\n      -ms-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n\n.progress-danger .bar,\n.progress .bar-danger {\n  background-color: #dd514c;\n  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));\n  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);\n  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);\n}\n\n.progress-danger.progress-striped .bar,\n.progress-striped .bar-danger {\n  background-color: #ee5f5b;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-success .bar,\n.progress .bar-success {\n  background-color: #5eb95e;\n  background-image: -moz-linear-gradient(top, #62c462, #57a957);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));\n  background-image: -webkit-linear-gradient(top, #62c462, #57a957);\n  background-image: -o-linear-gradient(top, #62c462, #57a957);\n  background-image: linear-gradient(to bottom, #62c462, #57a957);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);\n}\n\n.progress-success.progress-striped .bar,\n.progress-striped .bar-success {\n  background-color: #62c462;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-info .bar,\n.progress .bar-info {\n  background-color: #4bb1cf;\n  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));\n  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);\n  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);\n}\n\n.progress-info.progress-striped .bar,\n.progress-striped .bar-info {\n  background-color: #5bc0de;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.progress-warning .bar,\n.progress .bar-warning {\n  background-color: #faa732;\n  background-image: -moz-linear-gradient(top, #fbb450, #f89406);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));\n  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);\n  background-image: -o-linear-gradient(top, #fbb450, #f89406);\n  background-image: linear-gradient(to bottom, #fbb450, #f89406);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);\n}\n\n.progress-warning.progress-striped .bar,\n.progress-striped .bar-warning {\n  background-color: #fbb450;\n  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));\n  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);\n  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);\n  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);\n  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);\n}\n\n.accordion {\n  margin-bottom: 20px;\n}\n\n.accordion-group {\n  margin-bottom: 2px;\n  border: 1px solid #e5e5e5;\n  -webkit-border-radius: 4px;\n     -moz-border-radius: 4px;\n          border-radius: 4px;\n}\n\n.accordion-heading {\n  border-bottom: 0;\n}\n\n.accordion-heading .accordion-toggle {\n  display: block;\n  padding: 8px 15px;\n}\n\n.accordion-toggle {\n  cursor: pointer;\n}\n\n.accordion-inner {\n  padding: 9px 15px;\n  border-top: 1px solid #e5e5e5;\n}\n\n.carousel {\n  position: relative;\n  margin-bottom: 20px;\n  line-height: 1;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n     -moz-transition: 0.6s ease-in-out left;\n       -o-transition: 0.6s ease-in-out left;\n          transition: 0.6s ease-in-out left;\n}\n\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  line-height: 1;\n}\n\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n\n.carousel-inner > .active {\n  left: 0;\n}\n\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.carousel-inner > .next {\n  left: 100%;\n}\n\n.carousel-inner > .prev {\n  left: -100%;\n}\n\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n\n.carousel-inner > .active.left {\n  left: -100%;\n}\n\n.carousel-inner > .active.right {\n  left: 100%;\n}\n\n.carousel-control {\n  position: absolute;\n  top: 40%;\n  left: 15px;\n  width: 40px;\n  height: 40px;\n  margin-top: -20px;\n  font-size: 60px;\n  font-weight: 100;\n  line-height: 30px;\n  color: #ffffff;\n  text-align: center;\n  background: #222222;\n  border: 3px solid #ffffff;\n  -webkit-border-radius: 23px;\n     -moz-border-radius: 23px;\n          border-radius: 23px;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n\n.carousel-control.right {\n  right: 15px;\n  left: auto;\n}\n\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #ffffff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n\n.carousel-indicators {\n  position: absolute;\n  top: 15px;\n  right: 15px;\n  z-index: 5;\n  margin: 0;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  display: block;\n  float: left;\n  width: 10px;\n  height: 10px;\n  margin-left: 5px;\n  text-indent: -999px;\n  background-color: #ccc;\n  background-color: rgba(255, 255, 255, 0.25);\n  border-radius: 5px;\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 15px;\n  background: #333333;\n  background: rgba(0, 0, 0, 0.75);\n}\n\n.carousel-caption h4,\n.carousel-caption p {\n  line-height: 20px;\n  color: #ffffff;\n}\n\n.carousel-caption h4 {\n  margin: 0 0 5px;\n}\n\n.carousel-caption p {\n  margin-bottom: 0;\n}\n\n.hero-unit {\n  padding: 60px;\n  margin-bottom: 30px;\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n  -webkit-border-radius: 6px;\n     -moz-border-radius: 6px;\n          border-radius: 6px;\n}\n\n.hero-unit h1 {\n  margin-bottom: 0;\n  font-size: 60px;\n  line-height: 1;\n  letter-spacing: -1px;\n  color: inherit;\n}\n\n.hero-unit li {\n  line-height: 30px;\n}\n\n.pull-right {\n  float: right;\n}\n\n.pull-left {\n  float: left;\n}\n\n.hide {\n  display: none;\n}\n\n.show {\n  display: block;\n}\n\n.invisible {\n  visibility: hidden;\n}\n\n.affix {\n  position: fixed;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.css",
    "content": "/* ============================================================\n * bootstrapSwitch v1.2 by Larentis Mattia @spiritualGuru\n * http://www.larentis.eu/switch/\n * ============================================================\n * Licensed under the Apache License, Version 2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n * ============================================================ */\n.has-switch {\n  display: inline-block;\n  cursor: pointer;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  border: 1px solid;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  position: relative;\n  text-align: left;\n  overflow: hidden;\n  line-height: 8px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n  min-width: 100px;\n}\n.has-switch.switch-mini {\n  min-width: 72px;\n}\n.has-switch.switch-small {\n  min-width: 80px;\n}\n.has-switch.switch-large {\n  min-width: 120px;\n}\n.has-switch.deactivate {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  cursor: default !important;\n}\n.has-switch.deactivate label,\n.has-switch.deactivate span {\n  cursor: default !important;\n}\n.has-switch > div {\n  display: inline-block;\n  width: 150%;\n  position: relative;\n  top: 0;\n}\n.has-switch > div.switch-animate {\n  -webkit-transition: left 0.5s;\n  -moz-transition: left 0.5s;\n  -o-transition: left 0.5s;\n  transition: left 0.5s;\n}\n.has-switch > div.switch-off {\n  left: -50%;\n}\n.has-switch > div.switch-on {\n  left: 0%;\n}\n.has-switch input[type=checkbox] {\n  display: none;\n}\n.has-switch span,\n.has-switch label {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  cursor: pointer;\n  position: relative;\n  display: inline-block;\n  height: 100%;\n  padding-bottom: 4px;\n  padding-top: 4px;\n  font-size: 14px;\n  line-height: 20px;\n}\n.has-switch span.switch-mini,\n.has-switch label.switch-mini {\n  padding-bottom: 4px;\n  padding-top: 4px;\n  font-size: 10px;\n  line-height: 9px;\n}\n.has-switch span.switch-small,\n.has-switch label.switch-small {\n  padding-bottom: 3px;\n  padding-top: 3px;\n  font-size: 12px;\n  line-height: 18px;\n}\n.has-switch span.switch-large,\n.has-switch label.switch-large {\n  padding-bottom: 9px;\n  padding-top: 9px;\n  font-size: 16px;\n  line-height: normal;\n}\n.has-switch label {\n  text-align: center;\n  margin-top: -1px;\n  margin-bottom: -1px;\n  z-index: 100;\n  width: 34%;\n  border-left: 1px solid #cccccc;\n  border-right: 1px solid #cccccc;\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #f5f5f5;\n  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));\n  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);\n  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);\n  border-color: #e6e6e6 #e6e6e6 #bfbfbf;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #e6e6e6;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch label:hover,\n.has-switch label:focus,\n.has-switch label:active,\n.has-switch label.active,\n.has-switch label.disabled,\n.has-switch label[disabled] {\n  color: #ffffff;\n  background-color: #e6e6e6;\n  *background-color: #d9d9d9;\n}\n.has-switch label:active,\n.has-switch label.active {\n  background-color: #cccccc \\9;\n}\n.has-switch label i {\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  line-height: 18px;\n  pointer-events: none;\n}\n.has-switch span {\n  text-align: center;\n  z-index: 1;\n  width: 33%;\n}\n.has-switch span.switch-left {\n  -webkit-border-top-left-radius: 4px;\n  -moz-border-radius-topleft: 4px;\n  border-top-left-radius: 4px;\n  -webkit-border-bottom-left-radius: 4px;\n  -moz-border-radius-bottomleft: 4px;\n  border-bottom-left-radius: 4px;\n}\n.has-switch span.switch-right {\n  color: #333333;\n  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\n  background-color: #f0f0f0;\n  background-image: -moz-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#ffffff));\n  background-image: -webkit-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: -o-linear-gradient(top, #e6e6e6, #ffffff);\n  background-image: linear-gradient(to bottom, #e6e6e6, #ffffff);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0);\n  border-color: #ffffff #ffffff #d9d9d9;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #ffffff;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-right:hover,\n.has-switch span.switch-right:focus,\n.has-switch span.switch-right:active,\n.has-switch span.switch-right.active,\n.has-switch span.switch-right.disabled,\n.has-switch span.switch-right[disabled] {\n  color: #333333;\n  background-color: #ffffff;\n  *background-color: #f2f2f2;\n}\n.has-switch span.switch-right:active,\n.has-switch span.switch-right.active {\n  background-color: #e6e6e6 \\9;\n}\n.has-switch span.switch-primary,\n.has-switch span.switch-left {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #005fcc;\n  background-image: -moz-linear-gradient(top, #0044cc, #0088cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#0088cc));\n  background-image: -webkit-linear-gradient(top, #0044cc, #0088cc);\n  background-image: -o-linear-gradient(top, #0044cc, #0088cc);\n  background-image: linear-gradient(to bottom, #0044cc, #0088cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0);\n  border-color: #0088cc #0088cc #005580;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #0088cc;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-primary:hover,\n.has-switch span.switch-left:hover,\n.has-switch span.switch-primary:focus,\n.has-switch span.switch-left:focus,\n.has-switch span.switch-primary:active,\n.has-switch span.switch-left:active,\n.has-switch span.switch-primary.active,\n.has-switch span.switch-left.active,\n.has-switch span.switch-primary.disabled,\n.has-switch span.switch-left.disabled,\n.has-switch span.switch-primary[disabled],\n.has-switch span.switch-left[disabled] {\n  color: #ffffff;\n  background-color: #0088cc;\n  *background-color: #0077b3;\n}\n.has-switch span.switch-primary:active,\n.has-switch span.switch-left:active,\n.has-switch span.switch-primary.active,\n.has-switch span.switch-left.active {\n  background-color: #006699 \\9;\n}\n.has-switch span.switch-info {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #41a7c5;\n  background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de));\n  background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: -o-linear-gradient(top, #2f96b4, #5bc0de);\n  background-image: linear-gradient(to bottom, #2f96b4, #5bc0de);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0);\n  border-color: #5bc0de #5bc0de #28a1c5;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #5bc0de;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-info:hover,\n.has-switch span.switch-info:focus,\n.has-switch span.switch-info:active,\n.has-switch span.switch-info.active,\n.has-switch span.switch-info.disabled,\n.has-switch span.switch-info[disabled] {\n  color: #ffffff;\n  background-color: #5bc0de;\n  *background-color: #46b8da;\n}\n.has-switch span.switch-info:active,\n.has-switch span.switch-info.active {\n  background-color: #31b0d5 \\9;\n}\n.has-switch span.switch-success {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #58b058;\n  background-image: -moz-linear-gradient(top, #51a351, #62c462);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462));\n  background-image: -webkit-linear-gradient(top, #51a351, #62c462);\n  background-image: -o-linear-gradient(top, #51a351, #62c462);\n  background-image: linear-gradient(to bottom, #51a351, #62c462);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0);\n  border-color: #62c462 #62c462 #3b9e3b;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #62c462;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-success:hover,\n.has-switch span.switch-success:focus,\n.has-switch span.switch-success:active,\n.has-switch span.switch-success.active,\n.has-switch span.switch-success.disabled,\n.has-switch span.switch-success[disabled] {\n  color: #ffffff;\n  background-color: #62c462;\n  *background-color: #4fbd4f;\n}\n.has-switch span.switch-success:active,\n.has-switch span.switch-success.active {\n  background-color: #42b142 \\9;\n}\n.has-switch span.switch-warning {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #f9a123;\n  background-image: -moz-linear-gradient(top, #f89406, #fbb450);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450));\n  background-image: -webkit-linear-gradient(top, #f89406, #fbb450);\n  background-image: -o-linear-gradient(top, #f89406, #fbb450);\n  background-image: linear-gradient(to bottom, #f89406, #fbb450);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0);\n  border-color: #fbb450 #fbb450 #f89406;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #fbb450;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-warning:hover,\n.has-switch span.switch-warning:focus,\n.has-switch span.switch-warning:active,\n.has-switch span.switch-warning.active,\n.has-switch span.switch-warning.disabled,\n.has-switch span.switch-warning[disabled] {\n  color: #ffffff;\n  background-color: #fbb450;\n  *background-color: #faa937;\n}\n.has-switch span.switch-warning:active,\n.has-switch span.switch-warning.active {\n  background-color: #fa9f1e \\9;\n}\n.has-switch span.switch-danger {\n  color: #ffffff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n  background-color: #d14641;\n  background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b));\n  background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: -o-linear-gradient(top, #bd362f, #ee5f5b);\n  background-image: linear-gradient(to bottom, #bd362f, #ee5f5b);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0);\n  border-color: #ee5f5b #ee5f5b #e51d18;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  *background-color: #ee5f5b;\n  /* Darken IE7 buttons by default so they stand out more given they won't have borders */\n\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.has-switch span.switch-danger:hover,\n.has-switch span.switch-danger:focus,\n.has-switch span.switch-danger:active,\n.has-switch span.switch-danger.active,\n.has-switch span.switch-danger.disabled,\n.has-switch span.switch-danger[disabled] {\n  color: #ffffff;\n  background-color: #ee5f5b;\n  *background-color: #ec4844;\n}\n.has-switch span.switch-danger:active,\n.has-switch span.switch-danger.active {\n  background-color: #e9322d \\9;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/bootstrap/bootstrapSwitch.js",
    "content": "/* ============================================================\n * bootstrapSwitch v1.3 by Larentis Mattia @spiritualGuru\n * http://www.larentis.eu/switch/\n * ============================================================\n * Licensed under the Apache License, Version 2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n * ============================================================ */\n\n!function ($) {\n  \"use strict\";\n\n  $.fn['bootstrapSwitch'] = function (method) {\n    var methods = {\n      init: function () {\n        return this.each(function () {\n            var $element = $(this)\n              , $div\n              , $switchLeft\n              , $switchRight\n              , $label\n              , myClasses = \"\"\n              , classes = $element.attr('class')\n              , color\n              , moving\n              , onLabel = \"ON\"\n              , offLabel = \"OFF\"\n              , icon = false;\n\n            $.each(['switch-mini', 'switch-small', 'switch-large'], function (i, el) {\n              if (classes.indexOf(el) >= 0)\n                myClasses = el;\n            });\n\n            $element.addClass('has-switch');\n\n            if ($element.data('on') !== undefined)\n              color = \"switch-\" + $element.data('on');\n\n            if ($element.data('on-label') !== undefined)\n              onLabel = $element.data('on-label');\n\n            if ($element.data('off-label') !== undefined)\n              offLabel = $element.data('off-label');\n\n            if ($element.data('icon') !== undefined)\n              icon = $element.data('icon');\n\n            $switchLeft = $('<span>')\n              .addClass(\"switch-left\")\n              .addClass(myClasses)\n              .addClass(color)\n              .html(onLabel);\n\n            color = '';\n            if ($element.data('off') !== undefined)\n              color = \"switch-\" + $element.data('off');\n\n            $switchRight = $('<span>')\n              .addClass(\"switch-right\")\n              .addClass(myClasses)\n              .addClass(color)\n              .html(offLabel);\n\n            $label = $('<label>')\n              .html(\"&nbsp;\")\n              .addClass(myClasses)\n              .attr('for', $element.find('input').attr('id'));\n\n            if (icon) {\n              $label.html('<i class=\"icon icon-' + icon + '\"></i>');\n            }\n\n            $div = $element.find(':checkbox').wrap($('<div>')).parent().data('animated', false);\n\n            if ($element.data('animated') !== false)\n              $div.addClass('switch-animate').data('animated', true);\n\n            $div\n              .append($switchLeft)\n              .append($label)\n              .append($switchRight);\n\n            $element.find('>div').addClass(\n              $element.find('input').is(':checked') ? 'switch-on' : 'switch-off'\n            );\n\n            if ($element.find('input').is(':disabled'))\n              $(this).addClass('deactivate');\n\n            var changeStatus = function ($this) {\n              $this.siblings('label').trigger('mousedown').trigger('mouseup').trigger('click');\n            };\n\n            $element.on('keydown', function (e) {\n              if (e.keyCode === 32) {\n                e.stopImmediatePropagation();\n                e.preventDefault();\n                changeStatus($(e.target).find('span:first'));\n              }\n            });\n\n            $switchLeft.on('click', function (e) {\n              changeStatus($(this));\n            });\n\n            $switchRight.on('click', function (e) {\n              changeStatus($(this));\n            });\n\n            $element.find('input').on('change', function (e) {\n              var $this = $(this)\n                , $element = $this.parent()\n                , thisState = $this.is(':checked')\n                , state = $element.is('.switch-off');\n\n              e.preventDefault();\n\n              $element.css('left', '');\n\n              if (state === thisState) {\n\n                if (thisState)\n                  $element.removeClass('switch-off').addClass('switch-on');\n                else $element.removeClass('switch-on').addClass('switch-off');\n\n                if ($element.data('animated') !== false)\n                  $element.addClass(\"switch-animate\");\n\n                $element.parent().trigger('switch-change', {'el': $this, 'value': thisState})\n              }\n            });\n\n            $element.find('label').on('mousedown touchstart', function (e) {\n              var $this = $(this);\n              moving = false;\n\n              e.preventDefault();\n              e.stopImmediatePropagation();\n\n              $this.closest('div').removeClass('switch-animate');\n\n              if ($this.closest('.switch').is('.deactivate'))\n                $this.unbind('click');\n              else {\n                $this.on('mousemove touchmove', function (e) {\n                  var $element = $(this).closest('.switch')\n                    , relativeX = (e.pageX || e.originalEvent.targetTouches[0].pageX) - $element.offset().left\n                    , percent = (relativeX / $element.width()) * 100\n                    , left = 25\n                    , right = 75;\n\n                  moving = true;\n\n                  if (percent < left)\n                    percent = left;\n                  else if (percent > right)\n                    percent = right;\n\n                  $element.find('>div').css('left', (percent - right) + \"%\")\n                });\n\n                $this.on('click touchend', function (e) {\n                  var $this = $(this)\n                    , $target = $(e.target)\n                    , $myCheckBox = $target.siblings('input');\n\n                  e.stopImmediatePropagation();\n                  e.preventDefault();\n\n                  $this.unbind('mouseleave');\n\n                  if (moving)\n                    $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25));\n                  else $myCheckBox.prop(\"checked\", !$myCheckBox.is(\":checked\"));\n\n                  moving = false;\n                  $myCheckBox.trigger('change');\n                });\n\n                $this.on('mouseleave', function (e) {\n                  var $this = $(this)\n                    , $myCheckBox = $this.siblings('input');\n\n                  e.preventDefault();\n                  e.stopImmediatePropagation();\n\n                  $this.unbind('mouseleave');\n                  $this.trigger('mouseup');\n\n                  $myCheckBox.prop('checked', !(parseInt($this.parent().css('left')) < -25)).trigger('change');\n                });\n\n                $this.on('mouseup', function (e) {\n                  e.stopImmediatePropagation();\n                  e.preventDefault();\n\n                  $(this).unbind('mousemove');\n                });\n              }\n            });\n          }\n        );\n      },\n      toggleActivation: function () {\n        $(this).toggleClass('deactivate');\n      },\n      isActive: function () {\n        return !$(this).hasClass('deactivate');\n      },\n      setActive: function (active) {\n        if (active)\n          $(this).removeClass('deactivate');\n        else $(this).addClass('deactivate');\n      },\n      toggleState: function (skipOnChange) {\n        var $input = $(this).find('input:checkbox');\n        $input.prop('checked', !$input.is(':checked')).trigger('change', skipOnChange);\n      },\n      setState: function (value, skipOnChange) {\n        $(this).find('input:checkbox').prop('checked', value).trigger('change', skipOnChange);\n      },\n      status: function () {\n        return $(this).find('input:checkbox').is(':checked');\n      },\n      destroy: function () {\n        var $div = $(this).find('div')\n          , $checkbox;\n\n        $div.find(':not(input:checkbox)').remove();\n\n        $checkbox = $div.children();\n        $checkbox.unwrap().unwrap();\n\n        $checkbox.unbind('change');\n\n        return $checkbox;\n      }\n    };\n\n    if (methods[method])\n      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n    else if (typeof method === 'object' || !method)\n      return methods.init.apply(this, arguments);\n    else\n      $.error('Method ' + method + ' does not exist!');\n  };\n}(jQuery);\n\n$(function () {\n  $('.switch')['bootstrapSwitch']();\n});\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable-0.1.css",
    "content": ".footable { width: 100%; }\n.footable.breakpoint > tbody > tr > td.expand { background: url('img/plus.png') no-repeat 5px center; padding-left: 40px; }\n.footable.breakpoint > tbody > tr.footable-detail-show > td.expand { background: url('img/minus.png') no-repeat 5px center; }\n.footable.breakpoint > tbody > tr.footable-row-detail { background: #eee; }\n.footable > tbody img { vertical-align:middle; }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.paginate.css",
    "content": "tfoot.footable-pagination tr td {\n  text-align: center;\n}\n\n.footable-nav {\n\tlist-style: none;\n  padding: 0;\n  margin: 0;\n  display: inline-block;\n}\n\n  .footable-nav li {\n\t  display: inline-block;\n  }\n\n    .footable-nav li a {\n\t    display: inline-block;\n\t    padding: 5px 10px;\n\t    text-decoration: none;\n\t    color: #0066cc;\n      font-weight: bold;\n    }\n\n  .footable-nav .footable-page-current {\n\t  background: #888;\n    border-radius: 50%;\n  }\n\n    .footable-nav .footable-page-current a{\n\t    color: #fff;\n    }"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/css/footable.sortable-0.1.css",
    "content": ".footable > thead > tr > th > span.footable-sort-indicator {\n  width: 16px;\n  height: 16px;\n  display: block;\n  float:right;\n  background: url('img/sorting_sprite.png') no-repeat top left;\n}\n\n.footable > thead > tr > th.footable-sortable:hover {\n  cursor:pointer;\n}\n\n.footable > thead > tr > th.footable-sortable > span {\n  \n}\n\n.footable > thead > tr > th.footable-sorted > span.footable-sort-indicator {\n  background-position: 0 -16px;\n}\n\n.footable > thead > tr > th.footable-sorted-desc > span.footable-sort-indicator {\n  background-position: 0 -32px;\n}\n\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-bootstrapSwitch.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap-responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrapSwitch.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script src=\"bootstrap/bootstrapSwitch.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td>\n                <div class=\"switch switch-mini\">\n                    <input type=\"checkbox\">\n                </div>\n            </td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-colspan.htm",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title></title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n    <style>\n      .test-class { background-color: #5BFF82; }\n    </style>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th colspan=\"3\" data-hide=\"phone\" data-ignore=\"true\" data-sort-ignore=\"true\"></th>\n          <th>ID</th>\n          <th>Date 1</th>\n          <th data-hide=\"phone\" colspan=\"3\" data-sort-match=\"1\" data-names=\"Date 2,Date 3,Date 4\" data-class=\"test-class\">Dates 2, 3, 4 (Sorts on 3)</th>\n          <th data-hide=\"phone,tablet\">Date 5</th>\n          <th data-hide=\"phone,tablet\">Note</th>\n          <th data-hide=\"phone,tablet\">Section</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>2</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-003</td>\n          <td>03/01/2014</td>\n\n          <td>10/01/2016</td>\n          <td>01/01/2014</td>\n          <td>23/01/2014</td>\n\n          <td>18/01/2014</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>3</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-001</td>\n          <td>03/01/2015</td>\n\n          <td>10/01/2015</td>\n          <td>02/01/2014</td>\n          <td>24/01/2014</td>\n\n          <td>18/01/2015</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>1</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-002</td>\n          <td>03/01/2016</td>\n\n          <td>10/01/2014</td>\n          <td>03/01/2014</td>\n          <td>22/01/2014</td>\n\n          <td>18/01/2016</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n      </tbody>\n    </table>\n\n  </body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-events.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n\t\t$('table').footable();\n\t  \n\t\t//THIS IS THE WRONG WAY TO DO IT\n\t\t//$('.bind-to-me').click(function() {\n\t\t//\talert('you clicked me!');\n\t\t//});\t\t\t\n\t\t\n\t\t//RATHER BIND USING ON\n\t\t$('table').on('click', '.bind-to-me', function() {\n\t\t\talert('you clicked me!');\n\t\t});\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td>\n                <a href=\"#\" class=\"bind-to-me\">click me</a>\n            </td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-enter-disabled.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <form action=\"\" method=\"get\" name=\"dummy-form\">\n    <table data-filter=\"#filter\" data-filter-disable-enter=\"true\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    </form>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n      \n      $('.clear-filter').click(function (e) {\n        e.preventDefault();\n        $('table').trigger('footable_clear_filter');\n      });\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981 <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering-via-events.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n\t  \n\t    $('.clear-filter').click(function(e) {\n\t\t    e.preventDefault();\n\t\t    $('table').trigger('footable_clear_filter');\n\t    });\n\t\t\n\t\t$('.do-filter').click(function(e) {\n\t\t\te.preventDefault();\n\t\t\t$('#filter').val($(this).text());\n\t\t\t$('table').trigger('footable_filter', {filter : $(this).text()} );\n\t\t});\n\t  \n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. <a href=\"#filter\" class=\"do-filter\">jun</a>, <a href=\"#filter\" class=\"do-filter\">elec</a>, <a href=\"#filter\" class=\"do-filter\">1981</a> - <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-filtering.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n\t  \n\t    $('.clear-filter').click(function(e) {\n\t\t    e.preventDefault();\n\t\t    $('table').trigger('footable_clear_filter');\n\t    });\n\t  \n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981 <a href=\"#clear\" class=\"clear-filter\" title=\"clear filter\">x</a>\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-group-headers.htm",
    "content": "﻿<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title></title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n\n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n    <style>\n      .test-class { background-color: #5BFF82; }\n    </style>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr class=\"footable-group-row\">\n          <th data-group=\"group1\" colspan=\"4\">Group 1</th>\n          <th data-group=\"group2\" colspan=\"5\">Group 2</th>\n          <th data-group=\"group3\" colspan=\"2\">Group 3</th>\n        </tr>\n        <tr>\n          <th data-group=\"group1\" colspan=\"3\" data-hide=\"phone\" data-ignore=\"true\" data-sort-ignore=\"true\"></th>\n          <th data-group=\"group1\">ID</th>\n          <th data-group=\"group2\">Date 1</th>\n          <th data-group=\"group2\" data-hide=\"phone\" colspan=\"3\" data-sort-match=\"2\" data-names=\"Date 2,Date 3,Date 4\" data-class=\"test-class\">Dates 2, 3, 4 (Sorts on 3)</th>\n          <th data-group=\"group2\" data-hide=\"phone\">Date 5</th>\n          <th data-group=\"group3\" data-hide=\"phone,tablet\">Note</th>\n          <th data-group=\"group3\" data-hide=\"phone,tablet\">Section</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>2</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-003</td>\n          <td>03/01/2014</td>\n\n          <td>10/01/2016</td>\n          <td>01/01/2014</td>\n          <td>23/01/2014</td>\n\n          <td>18/01/2014</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>3</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-001</td>\n          <td>03/01/2015</td>\n\n          <td>10/01/2015</td>\n          <td>02/01/2014</td>\n          <td>24/01/2014</td>\n\n          <td>18/01/2015</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n        <tr>\n          <td>\n            <input type=\"checkbox\"/>\n          </td>\n          <td>1</td>\n          <td>\n            <img src=\"images/disabled.png\" />\n          </td>\n          <td>000-002</td>\n          <td>03/01/2016</td>\n\n          <td>10/01/2014</td>\n          <td>03/01/2014</td>\n          <td>22/01/2014</td>\n\n          <td>18/01/2016</td>\n          <td>&nbsp;</td>\n          <td>INT</td>\n        </tr>\n      </tbody>\n    </table>\n\n  </body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination-multiple.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table id=\"table1\" class=\"footable\" data-page-navigation=\"#pagination1\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination1\" class=\"footable-nav\"><span>Pages:</span></ul>\n\t\n\t\n    <table id=\"table2\" class=\"footable\" data-page-navigation=\"#pagination2\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination2\" class=\"footable-nav\"><span>Pages:</span></ul>\t\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\" data-page-navigation=\"#pagination\" data-page-size=\"7\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            <span>First Name</span>\n          </th>\n          <th>\n            <span>Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\n      <tfoot class=\"footable-pagination\">\n        <tr>\n          <td colspan=\"5\"><ul id=\"pagination\" class=\"footable-nav\" /></td>\n        </tr>\n      </tfoot>\n    </table>\n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-filtering.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.filter.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    search:<input id=\"filter\" type=\"text\" /> e.g. jun, elec, 1981\n    <table data-filter=\"#filter\" class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"active\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"suspended\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"active\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"disabled\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting-pagination.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.paginate.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.paginate.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\" data-page-size=\"5\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            <span title=\"table sorted by this column on load\">First Name</span>\n          </th>\n          <th data-hide=\"default\" data-sort-ignore=\"true\">\n            <span title=\"sorting disabled on this column\">Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n\n    <ul id=\"pagination\" class=\"footable-nav\"><span>Pages:</span></ul>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-sorting.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\" data-sort-initial=\"true\">\n            <span title=\"table sorted by this column on load\">First Name</span>\n          </th>\n          <th data-hide=\"default\" data-sort-ignore=\"true\">\n            <span title=\"sorting disabled on this column\">Last Name</span>\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n            DOB\n          </th>\n          <th data-hide=\"phone\" data-type=\"numeric\">\n            Status\n          </th>\n        </tr>\n      </thead>\n\t\t<tbody>\n\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-toc.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <style type=\"text/css\">\n    .footable-row-detail-inner ul { padding:0 20px; margin:0; }\n    .footable tbody { display:none; }\n    .footable tfoot tr td { padding:10px; text-align:center; }\n  </style>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      setTimeout(function() {\n        $('table').footable({\n          createDetail: function (element, data) {  //creates the contents of the detail row\n            for (var i = 0; i < data.length; i++) {\n              element.append(data[i].display);\n            }\n          },\n        });\n      }, 2000);\n    });\n  </script>\n</head>\n  <body>\n\t<div style=\"width:320px\">\n\t\t<table class=\"footable\">\n\t\t  <thead>\n\t\t\t<tr>\n\t\t\t  <th data-class=\"expand\">\n\t\t\t\tChapter\n\t\t\t  </th>\n\t\t\t  <th data-hide=\"default,phone,tablet\">\n\t\t\t\tSections\n\t\t\t  </th>\n\t\t\t</tr>\n\t\t  </thead>\n\t\t  <tbody data-init=\"show\">\n\t\t\t<tr><td>Getting Started</td><td><ul><li>Your First FooTable</li><li>Options</li><li>Configuration via Data Attributes</li></ul></td></tr>\n\t\t\t<tr><td>Sorting Plugin</td><td><ul><li>How to setup</li><li>Sorting Options</li><li>Data Attributes</li><li>Styling</li></ul></td></tr>\n\t\t\t<tr><td>Extend FooTable</td><td></td></tr>\n\t\t  </tbody>\n\t\t  <tfoot data-init=\"hide\">\n\t\t\t<tr>\n\t\t\t  <td colspan=\"2\">2 seconds to load data...</td>\n\t\t\t</tr>\n\t\t  </tfoot>\n\t\t</table>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-widthHeightOverride.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title>FooTable - jQuery plugin for responsive HTML tables</title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable({\n\t\t\t\t\tcalculateWidthAndHeightOverride:function($table, info) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar parentWidth = $table.parent().width();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (info.viewportWidth < info.width) info.width = info.viewportWidth;\n\t\t\t\t\t\tif (info.viewportHeight < info.height) info.height = info.viewportHeight;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (parentWidth < info.width) info.width = parentWidth;\n\n\t\t\t\t\t\treturn info;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('a.resize').click(function() {\n\t\t\t\t\tvar w = $(this).data('size');\n\t\t\t\t\t$('.footable-container').css({width:w});\n\t\t\t\t\t$('table')[0].footable.resize();\n\t\t\t\t});\n      });\n    </script>\n  </head>\n  <body>\n\t\t<a href=\"#300px\" data-size=\"300px\" class=\"resize\">300px</a>\n\t\t<a href=\"#768px\" data-size=\"768px\" class=\"resize\">768px</a>\n\t\t<a href=\"#100%\" data-size=\"100%\" class=\"resize\">100%</a>\n\t\t<div style=\"width:100%\" class=\"footable-container\">\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a href=\"#\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a href=\"#\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a href=\"#\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a href=\"#\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-with-bootstrap.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"css/footable.sortable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <link href=\"bootstrap/bootstrap-responsive.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <style type=\"text/css\">\n\tbody { margin:30px; }\n  </style>\n  \n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.sortable.js\" type=\"text/javascript\"></script>\n  <script src=\"bootstrap/bootstrap-tab.js\" type=\"text/javascript\"></script>\n  \n  <script type=\"text/javascript\">\n    $(function() {\n\t\t$('table').footable();\n\t  \n\t\t$('#myTab a').click(function (e) {\n\t\t\te.preventDefault();\n\t\t\t$(this).tab('show');\n\t\t}).on('shown', function (e) {\t\n\t\t\t$('.tab-pane.active table').trigger('footable_resize');\n\t\t});\n    });\n  </script>\n</head>\n  <body>\n\t<ul class=\"nav nav-tabs\" id=\"myTab\">\n\t\t<li class=\"active\"><a href=\"#table1\">Leads</a></li>\n\t\t<li><a href=\"#table2\">Contacts</a></li>\n\t\t<li><a href=\"#table3\">Messages</a></li>\n\t\t<li><a href=\"#table4\">Settings</a></li>\n\t</ul>\n\n\t<div class=\"tab-content\">\n\t\t<div class=\"tab-pane active\" id=\"table1\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Isidra</td><td><a target=\"_blank\" href=\"http://www.google.com\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Shona</td><td>Woldt</td><td><a target=\"_blank\" href=\"http://www.google.com\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\t\t\n\t\t<div class=\"tab-pane\" id=\"table2\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lizzee</td><td><a target=\"_blank\" href=\"http://www.google.com\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a target=\"_blank\" href=\"http://www.google.com\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n\t\t\t\t\t<tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\n\t\t<div class=\"tab-pane\" id=\"table3\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\n\n\t\t<div class=\"tab-pane\" id=\"table4\">  \n\t\t\n\t\t\t<table class=\"footable\">\n\t\t\t  <thead>\n\t\t\t\t<tr>\n\t\t\t\t  <th data-class=\"expand\" data-sort-initial=\"true\">\n\t\t\t\t\t<span title=\"table sorted by this column on load\">First Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th>\n\t\t\t\t\t<span title=\"sorting disabled on this column\">Last Name</span>\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\">\n\t\t\t\t\tJob Title\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone,tablet\" data-type=\"numeric\">\n\t\t\t\t\tDOB\n\t\t\t\t  </th>\n\t\t\t\t  <th data-hide=\"phone\" data-type=\"numeric\">\n\t\t\t\t\tStatus\n\t\t\t\t  </th>\n\t\t\t\t</tr>\n\t\t\t  </thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n\t\t\t\t\t<tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n\t\t\t  </tbody>\t  \n\t\t\t</table>\n\t\t\n\t\t</div>\t\t\n\t</div>\n  \n  \n  \n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo-zebra.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable().find('> tbody > tr:not(.footable-row-detail):nth-child(even)').addClass('zebra');\n    });\n  </script>\n  <style type=\"text/css\">\n    .footable tbody tr.zebra {\n      background:#fee;\n    }\n  </style>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(20);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(20);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo2.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title>FooTable - jQuery plugin for responsive HTML tables</title>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n    <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function() {\n        $('table').footable();\n      });\n    </script>\n  </head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr><td>Isidra</td><td><a href=\"#\">Boudreaux</a></td><td>Traffic Court Referee</td><td data-value=\"78025368997\">22 Jun 1972</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maria</td><td>Nicley</td><td>Meat Packager</td><td data-value=\"-100297281571\">28 Oct 1966</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Shona</td><td>Woldt</td><td><a href=\"#\">Airline Transport Pilot</a></td><td data-value=\"370961043292\">3 Oct 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Granville</td><td>Leonardo</td><td>Business Services Sales Representative</td><td data-value=\"-22133780420\">19 Apr 1969</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Easer</td><td>Dragoo</td><td>Drywall Stripper</td><td data-value=\"250833505574\">13 Dec 1977</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maple</td><td>Halladay</td><td>Aviation Tactical Readiness Officer</td><td data-value=\"694116650726\">30 Dec 1991</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Maxine</td><td>Woldt</td><td>Business Services Sales Representative</td><td data-value=\"561440464855\">17 Oct 1987</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Lorraine</td><td>Mcgaughy</td><td>Hemodialysis Technician</td><td data-value=\"437400551390\">11 Nov 1983</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lizzee</td><td><a href=\"#\">Goodlow</a></td><td>Technical Services Librarian</td><td data-value=\"-257733999319\">1 Nov 1961</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Judi</td><td>Badgett</td><td>Electrical Lineworker</td><td data-value=\"362134712000\">23 Jun 1981</td><td data-value=\"1\"><a href=\"#\"><img title=\"active\" src=\"images/active.png\" /></a></td></tr>\n        <tr><td>Rivka</td><td>Bittinger</td><td>Broadcast Maintenance Engineer</td><td data-value=\"751149063430\">20 Oct 1993</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Isidra</td><td>Furniss</td><td>Jig Bore Tool Maker</td><td data-value=\"550552096836\">13 Jun 1987</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Lauri</td><td>Hyland</td><td>Blackjack Supervisor</td><td data-value=\"500874333932\">15 Nov 1985</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Consuelo</td><td>Robare</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"130022316732\">13 Feb 1974</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Hogle</td><td>Potato Sorter</td><td data-value=\"-191925229848\">2 Dec 1963</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Ilona</td><td>Mcgaughy</td><td>Cloak Room Attendant</td><td data-value=\"638227930531\">23 Mar 1990</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n        <tr><td>Jesusa</td><td>Shumpert</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-224275853603\">23 Nov 1962</td><td data-value=\"3\"><img title=\"suspended\" src=\"images/suspended.png\" /></td></tr>\n        <tr><td>Claudine</td><td>Pennock</td><td>Electrical Lineworker</td><td data-value=\"41757078895\">29 Apr 1971</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Carie</td><td>Branco</td><td>Fashion Designer</td><td data-value=\"300894955786\">15 Jul 1979</td><td data-value=\"1\"><img title=\"active\" src=\"images/active.png\" /></td></tr>\n        <tr><td>Jason</td><td>Mcfetridge</td><td>Staff Electronic Warfare Officer</td><td data-value=\"361093678671\">11 Jun 1981</td><td data-value=\"2\"><img title=\"disabled\" src=\"images/disabled.png\" /></td></tr>\n      </tbody>\t  \n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo3.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"phone\">\n            Job Title\n          </th>\n          <th data-hide=\"phone,tablet\">\n            DOB\n          </th>\n          <th data-hide=\"phone\">\n            Status\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra1\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra2\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra3\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra4\n          </th>\n          <th data-hide=\"phone,tablet\">\n            Extra5\n          </th>               \n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(50, 5);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/demo4.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n    <table class=\"footable\">\n      <thead>\n        <tr>\n          <th data-class=\"expand\">\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th data-hide=\"all\">\n            Job Title\n          </th>\n          <th data-hide=\"all\">\n            DOB\n          </th>\n          <th data-hide=\"all\">\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <script type=\"text/javascript\">\n          window.generateRows(50);\n        </script>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/footable.jquery.json",
    "content": "{\n    \"name\": \"footable\",\n    \"title\": \"FooTable\",\n    \"description\": \"jQuery plugin to make HTML tables responsive\",\n    \"keywords\": [\n        \"table\",\n        \"responsive\"\n    ],\n    \"version\": \"0.1.0\",\n    \"author\": {\n        \"name\": \"FooPlugins\",\n        \"url\": \"http://fooplugins.com\"\n    },\n    \"maintainers\": [\n        {\n            \"name\": \"Steven Usher\",\n            \"email\": \"steveush@gmail.com\",\n            \"url\": \"http://gnarf.net\"\n        },\n        {\n            \"name\": \"Brad Vincent\",\n            \"email\": \"bradvin@gmail.com\",\n            \"url\": \"http://themergency.com\"\n        }\n    ],\n    \"licenses\": [\n        {\n            \"type\": \"MIT\",\n            \"url\": \"https://github.com/bradvin/FooTable/blob/master/LICENSE\"\n        }\n    ],\n    \"bugs\": \"https://github.com/bradvin/FooTable/issues\",\n    \"homepage\": \"http://themergency.com/footable/\",\n    \"docs\": \"https://github.com/bradvin/FooTable\",\n    \"download\": \"https://github.com/bradvin/FooTable/archive/master.zip\",\n    \"dependencies\": {\n        \"jquery\": \">=1.4.4\"\n    }\n}"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/data-generator.js",
    "content": "﻿(function(w, undefined) {\n  var firstNames = ['Elodia', 'Sephnie', 'Maxine', 'Claudine', 'Londa', 'Gwyn', 'Consuelo', 'Mariko', 'Lashanda', 'Jesusa', 'Bernie', 'Annamaria', 'Muriel', 'Nikia', 'Margene', 'Lorraine', 'Annemarie', 'Rayna', 'Anonina', 'Carie', 'Gran', 'Jua', 'Jacqulyn', 'Whiney', 'Renaa', 'Usha', 'Annea', 'Jack', 'Chun', 'Eddy', 'Isidra', 'Myesha', 'Ami', 'Easer', 'Karon', 'Granville', 'Maria', 'Shenia', 'Solomon', 'Marquia', 'Charles', 'Neie', 'Beariz', 'Humbero', 'Rigobero', 'Lamon', 'Rivka', 'Phoebe', 'Renea', 'Celia', 'Shay', 'Sanford', 'Gwen', 'Lizzee', 'Lucila', 'Alice', 'Lauri', 'Desmond', 'Raeann', 'Rona', 'Jason', 'Lilian', 'Karena', 'Dennise', 'Delana', 'Rheba', 'Doy', 'Dolly', 'Venice', 'Dalene', 'Cyndy', 'Ilona', 'Lakeshia', 'Laurena', 'Lorriane', 'Kaci', 'Velve', 'Maple', 'Maire', 'Marline', 'Bar', 'Nelly', 'Shona', 'Karole', 'Judi', 'Ardelia', 'Alonzo', 'Junie', 'Alvina', 'Ilda'];\n  var lastNames = ['Ortego', 'Landa', 'Piermarini', 'Valles', 'Lusher', 'Branco', 'Falls', 'Hallett', 'Nicley', 'Cambareri', 'Han', 'Edwin', 'Lan', 'Dauenhauer', 'Cerrone', 'Matsumura', 'Mosher', 'Dragoo', 'Robare', 'Judon', 'Kyger', 'Bonk', 'Mcgaughy', 'Mcfetridge', 'Maxton', 'Roling', 'Klotz', 'Boudreaux', 'Hayton', 'Leonardo', 'Schug', 'Dewitt', 'Wohlwend', 'Hoos', 'Pennock', 'Sprinkle', 'Weick', 'Gilliland', 'Resler', 'Badgett', 'Bittinger', 'Letts', 'Bottom', 'Hibler', 'Fuhrman', 'Lewis', 'Moudy', 'Goyette', 'Difranco', 'Kyles', 'Sluss', 'Bruening', 'Halladay', 'Leinen', 'Leister', 'Morgado', 'Wadkins', 'Yingst', 'Hyland', 'Carasco', 'Stever', 'Weisz', 'Woldt', 'Leak', 'Sinclair', 'Heinen', 'Furniss', 'Hosler', 'Shumpert', 'Keasler', 'Stgelais', 'Landers', 'Hogle', 'Ates', 'Vanatta', 'Goodlow', 'Haner', 'Yaple', 'Lamark', 'Cataldo', 'Smelcer', 'Marco', 'Quaranta', 'Cooke', 'Ardrey', 'Guilford', 'Polo', 'Sprouse', 'Gaffney', 'Lafromboise'];\n  var jobTitles = ['Language Translator', 'Propeller-Driven Airplane Mechanic', 'Work Ticket Distributor', 'Pipe Organ Technician', 'LAN Systems Administrator', 'Employment Clerk', 'Electrical Lineworker', 'Serials Librarian', 'Technical Services Librarian', 'Blackjack Supervisor', 'Pulpwood Cutter', 'Military Science Teacher', 'Missile Pad Mechanic', 'Psychology Professor', 'Scene and Lighting Design Lecturer', 'Internet Marketing Manager', 'Business Services Sales Representative', 'Assistant Corporation Counsel', 'Photocopying Equipment Repairer', 'Post-Anesthesia Care Unit Nurse', 'Animal Husbandry Manager', 'Electrical Engineering Director', 'Drag Car Racer', 'Auto Detailer', 'Childrens Pastor', 'Strawberry Sorter', 'Geophysicist', 'Financial Accountant', 'Crown and Bridge Technician', 'Jig Bore Tool Maker', 'Union Representative', 'High School Librarian', 'High School History Teacher', 'Beveling and Edging Machine Operator', 'Roller Skater', 'Wallpaperer Helper', 'Childcare Center Administrator', 'Ordnance Engineer', 'Industrial Waste Treatment Technician', 'Airline Transport Pilot', 'Window Trimmer', 'Garment Presser', 'State Archivist', 'Die Designer', 'Ventriloquist', 'Calculus Professor', 'Technical Writer', 'Meat Packager', 'Automobile Body Painter', 'Aircraft Landing Gear Inspector', 'Fashion Designer', 'Drywall Stripper', 'Clown', 'National Association for Stock Car Auto Racing Driver', 'Staff Electronic Warfare Officer', 'Hydroelectric Machinery Mechanic', 'Clinical Services Director', 'Traffic Court Referee', 'Internal Medicine Nurse Practitioner', 'Horticulture Instructor', 'Ships Electronic Warfare Officer', 'Broadcast Maintenance Engineer', 'Weight Training Instructor', 'Potato Sorter', 'Appliance Parts Counter Clerk', 'Body Shop Supervisor', 'Accounts Collector', 'Commercial Lender', 'Scale Clerk', 'Obstetrician/Gynecologist', 'Gaming Cage Cashier', 'Fresco Artist', 'Youth Pastor', 'Parachute Officer', 'Geophysical Engineer', 'Route Sales Person', 'Master of Ceremonies', 'Cloak Room Attendant', 'Gas Main Fitter', 'Religious Activities Director', 'Hemodialysis Technician', 'Telephone Lines Repairer', 'Periodontist', 'Wood Fence Installer', 'Offbearer', 'Aviation Tactical Readiness Officer', 'Biology Laboratory Assistant', 'Emergency Room Orderly', 'Magician', 'Dog Trainer'];\n  var statuses = [{ 'name': 'Active', 'value': 1 }, { 'name': 'Disabled', 'value': 2 }, { 'name': 'Suspended', 'value': 3 }];\n  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n  function randomDate() {\n    var start = new Date(1960, 0, 1), end = new Date(1994, 0, 1);\n    return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n  }\n\n  w.generateRows = function(rows, extraCols) {\n    rows = rows || 100;\n    extraCols = extraCols || 0;\n    for (var i = 0; i < rows; i++) {\n      var data = {\n        firstName: firstNames[Math.floor(Math.random() * firstNames.length)],\n        lastName: lastNames[Math.floor(Math.random() * lastNames.length)],\n        jobTitle: jobTitles[Math.floor(Math.random() * jobTitles.length)],\n        status: statuses[Math.floor(Math.random() * statuses.length)],\n        dob: randomDate()\n      };\n      var row = '<tr>';\n      //row += '<td class=\"expand\"></td>';\n      row += '<td>' + data.firstName + '</td>';\n      row += '<td>' + data.lastName + '</td>';\n      row += '<td>' + data.jobTitle + '</td>';\n      row += '<td data-value=\"' + data.dob.getTime() + '\">' + data.dob.getDate() + ' ' + months[data.dob.getMonth()] + ' ' + data.dob.getFullYear() +'</td>';\n      row += '<td data-value=\"' + data.status.value + '\">' + data.status.name + '</td>';\n      for (var j = 0; j < extraCols; j++) {\n        row += '<td>' + (i+1) + '.' + (j+1) + '</td>';\n      }\n      row += '</tr>';\n      document.writeln(row);\n    }\n  };\n})(window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.filter.js",
    "content": "(function ($, w, undefined) {\n  if (w.footable == undefined || w.footable == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var jQversion = w.footable.version.parse($.fn.jquery);\n  if (jQversion.major == 1 && jQversion.minor < 8) { // For older versions of jQuery, anything below 1.8\n    $.expr[':'].ftcontains = function (a, i, m) {\n      return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;\n    };\n  } else { // For jQuery 1.8 and above\n    $.expr[':'].ftcontains = $.expr.createPseudo(function (arg) {\n      return function (elem) {\n\t  var text = $(elem).find('td').text();\n\t  var data = $(elem).find('td[data-value]').each(function() {\n\t\ttext += $(this).data('value');\n\t  });\n        return text.toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n      };\n    });\n  }\n\n  var defaults = {\n    filter: {\n      enabled: true,\n      input: '.footable-filter',\n      timeout: 300,\n      minimum: 2,\n      disableEnter: false\n    }\n  };\n\n  function Filter() {\n    var p = this;\n    p.name = 'Footable Filter';\n    p.init = function (ft) {\n      if (ft.options.filter.enabled == true) {\n        ft.timers.register('filter');\n        $(ft.table).bind({\n          'footable_initialized': function (e) {\n            var $table = $(e.ft.table);\n            var data = {\n              'input': $table.data('filter') || e.ft.options.filter.input,\n              'timeout': $table.data('filter-timeout') || e.ft.options.filter.timeout,\n              'minimum': $table.data('filter-minimum') || e.ft.options.filter.minimum,\n              'disableEnter': $table.data('filter-disable-enter') || e.ft.options.filter.disableEnter\n            };\n            if (data.disableEnter) {\n              $(data.input).keypress(function (event) {\n                if (window.event)\n                  return (window.event.keyCode != 13);\n                else\n                  return (event.which != 13);\n              });\n            }\n            $table.bind('footable_clear_filter', function () {\n              $(data.input).val('');\n              p.clearFilter(e.ft);\n            });\n            $table.bind('footable_filter', function (event, args) {\n\t\t\t\tp.filter(e.ft, args.filter);\n            });\n            $(data.input).keyup(function (eve) {\n              e.ft.timers.filter.stop();\n              if (eve.which == 27) { $(data.input).val(''); }\n              e.ft.timers.filter.start(function () {\n                e.ft.raise('footable_filtering');\n                var val = $(data.input).val() || '';\n                p.filter(e.ft, val);\n              }, data.timeout);\n            });\n          }\n        });\n      }\n    };\n\t\n\tp.filter = function(ft, filterString) {\n\t\tvar $table = $(ft.table);\n\t\tvar minimum = $table.data('filter-minimum') || ft.options.filter.minimum;\n\t\tif (!filterString || filterString.length < minimum) {\n\t\t\tp.clearFilter(ft);\n\t\t} else {\n\t\t\tvar filters = filterString.split(' ');\n\t\t\t$table.find('> tbody > tr').hide().addClass('footable-filtered');\n\t\t\tvar rows = $table.find('> tbody > tr:not(.footable-row-detail)');\n\t\t\t$.each(filters, function (i, f) {\n\t\t\t\tif (f && f.length)\n\t\t\t\t\trows = rows.filter('*:ftcontains(\"' + f + '\")');\n\t\t\t});\n\t\t\trows.each(function () {\n\t\t\t\tp.showRow(this, ft);\n\t\t\t\t$(this).removeClass('footable-filtered');\n\t\t\t});\n\t\t\tft.raise('footable_filtered', { filter : filterString });\n\t\t}\t\t\n\t};\n\n    p.clearFilter = function (ft) {\n      $(ft.table).find('> tbody > tr:not(.footable-row-detail)').removeClass('footable-filtered').each(function () {\n        p.showRow(this, ft);\n      });\n      ft.raise('footable_filtered', { cleared : true });\n    };\n\n    p.showRow = function (row, ft) {\n      var $row = $(row), $next = $row.next(), $table = $(ft.table);\n      if ($row.is(':visible')) return; //already visible - do nothing\n      if ($table.hasClass('breakpoint') && $row.hasClass('footable-detail-show') && $next.hasClass('footable-row-detail')) {\n        $row.add($next).show();\n        ft.createOrUpdateDetailRow(row);\n      }\n      else $row.show();\n    };\n  };\n\n  w.footable.plugins.register(new Filter(), defaults);\n\n})(jQuery, window);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.js",
    "content": "﻿/*!\n * FooTable - Awesome Responsive Tables\n * Version : 0.5\n * http://themergency.com/footable\n *\n * Requires jQuery - http://jquery.com/\n *\n * Copyright 2012 Steven Usher & Brad Vincent\n * Released under the MIT license\n * You are free to use FooTable in commercial projects as long as this copyright header is left intact.\n *\n * Date: 22 Apr 2013\n */\n(function ($, w, undefined) {\n    w.footable = {\n        options: {\n            delay: 100, // The number of millseconds to wait before triggering the react event\n            breakpoints: { // The different screen resolution breakpoints\n                phone: 480,\n                tablet: 1024\n            },\n            parsers: {  // The default parser to parse the value out of a cell (values are used in building up row detail)\n                alpha: function (cell) {\n                    return $(cell).data('value') || $.trim($(cell).text());\n                }\n            },\n            calculateWidthAndHeightOverride: null,\n            toggleSelector: ' > tbody > tr:not(.footable-row-detail)', //the selector to show/hide the detail row\n            columnDataSelector: '> thead > tr:last-child > th, > thead > tr:last-child > td', //the selector used to find the column data in the thead\n            createDetail: function (element, data) {\n                /// <summary>This function is used by FooTable to generate the detail view seen when expanding a collapsed row.</summary>\n                /// <param name=\"element\">This is the div that contains all the detail row information, anything could be added to it.</param>\n                /// <param name=\"data\">\n                ///  This is an array of objects containing the cell information for the current row.\n                ///  These objects look like the below:\n                ///    obj = {\n                ///      'name': String, // The name of the column\n                ///      'value': Object, // The value parsed from the cell using the parsers. This could be a string, a number or whatever the parser outputs.\n                ///      'display': String, // This is the actual HTML from the cell, so if you have images etc you want moved this is the one to use and is the default value used.\n                ///      'group': String, // This is the identifier used in the data-group attribute of the column.\n                ///      'groupName': String // This is the actual name of the group the column belongs to.\n                ///    }\n                /// </param>\n\n                var groups = { '_none': { 'name': null, 'data': [] } };\n                for (var i = 0; i < data.length; i++) {\n                    var groupid = data[i].group;\n                    if (groupid != null) {\n                        if (!(groupid in groups))\n                            groups[groupid] = { 'name': data[i].groupName, 'data': [] };\n\n                        groups[groupid].data.push(data[i]);\n                    } else {\n                        groups._none.data.push(data[i]);\n                    }\n                }\n\n                for (var group in groups) {\n                    if (groups[group].data.length == 0) continue;\n                    if (group != '_none') element.append('<h4>' + groups[group].name + '</h4>');\n\n                    for (var j = 0; j < groups[group].data.length; j++) {\n                        var separator = (groups[group].data[j].name) ? ':' : '';\n                        element.append('<div><strong>' + groups[group].data[j].name + '</strong> ' + separator + ' ' + groups[group].data[j].display + '</div>');\n                    }\n                }\n            },\n            classes: {\n                loading: 'footable-loading',\n                loaded: 'footable-loaded',\n                sorted: 'footable-sorted',\n                descending: 'footable-sorted-desc',\n                indicator: 'footable-sort-indicator'\n            },\n            debug: false // Whether or not to log information to the console.\n        },\n\n        version: {\n            major: 0, minor: 5,\n            toString: function () {\n                return w.footable.version.major + '.' + w.footable.version.minor;\n            },\n            parse: function (str) {\n                version = /(\\d+)\\.?(\\d+)?\\.?(\\d+)?/.exec(str);\n                return {\n                    major: parseInt(version[1]) || 0,\n                    minor: parseInt(version[2]) || 0,\n                    patch: parseInt(version[3]) || 0\n                };\n            }\n        },\n\n        plugins: {\n            _validate: function (plugin) {\n                ///<summary>Simple validation of the <paramref name=\"plugin\"/> to make sure any members called by Foobox actually exist.</summary>\n                ///<param name=\"plugin\">The object defining the plugin, this should implement a string property called \"name\" and a function called \"init\".</param>\n\n                if (typeof plugin['name'] !== 'string') {\n                    if (w.footable.options.debug == true) console.error('Validation failed, plugin does not implement a string property called \"name\".', plugin);\n                    return false;\n                }\n                if (!$.isFunction(plugin['init'])) {\n                    if (w.footable.options.debug == true) console.error('Validation failed, plugin \"' + plugin['name'] + '\" does not implement a function called \"init\".', plugin);\n                    return false;\n                }\n                if (w.footable.options.debug == true) console.log('Validation succeeded for plugin \"' + plugin['name'] + '\".', plugin);\n                return true;\n            },\n            registered: [], // An array containing all registered plugins.\n            register: function (plugin, options) {\n                ///<summary>Registers a <paramref name=\"plugin\"/> and its default <paramref name=\"options\"/> with Foobox.</summary>\n                ///<param name=\"plugin\">The plugin that should implement a string property called \"name\" and a function called \"init\".</param>\n                ///<param name=\"options\">The default options to merge with the Foobox's base options.</param>\n\n                if (w.footable.plugins._validate(plugin)) {\n                    w.footable.plugins.registered.push(plugin);\n                    if (options != undefined && typeof options === 'object') $.extend(true, w.footable.options, options);\n                    if (w.footable.options.debug == true) console.log('Plugin \"' + plugin['name'] + '\" has been registered with the Foobox.', plugin);\n                }\n            },\n            init: function (instance) {\n                ///<summary>Loops through all registered plugins and calls the \"init\" method supplying the current <paramref name=\"instance\"/> of the Foobox as the first parameter.</summary>\n                ///<param name=\"instance\">The current instance of the Foobox that the plugin is being initialized for.</param>\n\n                for (var i = 0; i < w.footable.plugins.registered.length; i++) {\n                    try {\n                        w.footable.plugins.registered[i]['init'](instance);\n                    } catch (err) {\n                        if (w.footable.options.debug == true) console.error(err);\n                    }\n                }\n            }\n        }\n    };\n\n    var instanceCount = 0;\n\n    $.fn.footable = function (options) {\n        ///<summary>The main constructor call to initialize the plugin using the supplied <paramref name=\"options\"/>.</summary>\n        ///<param name=\"options\">\n        ///<para>A JSON object containing user defined options for the plugin to use. Any options not supplied will have a default value assigned.</para>\n        ///<para>Check the documentation or the default options object above for more information on available options.</para>\n        ///</param>\n\n        options = options || {};\n        var o = $.extend(true, {}, w.footable.options, options); //merge user and default options\n        return this.each(function () {\n            instanceCount++;\n            this.footable = new Footable(this, o, instanceCount);\n        });\n    };\n\n    //helper for using timeouts\n    function Timer() {\n        ///<summary>Simple timer object created around a timeout.</summary>\n        var t = this;\n        t.id = null;\n        t.busy = false;\n        t.start = function (code, milliseconds) {\n            ///<summary>Starts the timer and waits the specified amount of <paramref name=\"milliseconds\"/> before executing the supplied <paramref name=\"code\"/>.</summary>\n            ///<param name=\"code\">The code to execute once the timer runs out.</param>\n            ///<param name=\"milliseconds\">The time in milliseconds to wait before executing the supplied <paramref name=\"code\"/>.</param>\n\n            if (t.busy) {\n                return;\n            }\n            t.stop();\n            t.id = setTimeout(function () {\n                code();\n                t.id = null;\n                t.busy = false;\n            }, milliseconds);\n            t.busy = true;\n        };\n        t.stop = function () {\n            ///<summary>Stops the timer if its runnning and resets it back to its starting state.</summary>\n\n            if (t.id != null) {\n                clearTimeout(t.id);\n                t.id = null;\n                t.busy = false;\n            }\n        };\n    };\n\n    function Footable(t, o, id) {\n        ///<summary>Inits a new instance of the plugin.</summary>\n        ///<param name=\"t\">The main table element to apply this plugin to.</param>\n        ///<param name=\"o\">The options supplied to the plugin. Check the defaults object to see all available options.</param>\n        ///<param name=\"id\">The id to assign to this instance of the plugin.</param>\n\n        var ft = this;\n        ft.id = id;\n        ft.table = t;\n        ft.options = o;\n        ft.breakpoints = [];\n        ft.breakpointNames = '';\n        ft.columns = {};\n\n        var opt = ft.options;\n        var cls = opt.classes;\n        var indexOffset = 0;\n\n        // This object simply houses all the timers used in the footable.\n        ft.timers = {\n            resize: new Timer(),\n            register: function (name) {\n                ft.timers[name] = new Timer();\n                return ft.timers[name];\n            }\n        };\n\n        w.footable.plugins.init(ft);\n\n        ft.init = function () {\n            var $window = $(w), $table = $(ft.table);\n\n            if ($table.hasClass(cls.loaded)) {\n                //already loaded FooTable for the table, so don't init again\n                ft.raise('footable_already_initialized');\n                return;\n            }\n\n            $table.addClass(cls.loading);\n\n            // Get the column data once for the life time of the plugin\n            $table.find(opt.columnDataSelector).each(function () {\n                var data = ft.getColumnData(this);\n                ft.columns[data.index] = data;\n\n                if (data.className != null) {\n                    var selector = '', first = true;\n                    $.each(data.matches, function (m, match) { //support for colspans\n                        if (!first) {\n                            selector += ', ';\n                        }\n                        selector += '> tbody > tr:not(.footable-row-detail) > td:nth-child(' + (parseInt(match) + 1) + ')';\n                        first = false;\n                    });\n                    //add the className to the cells specified by data-class=\"blah\"\n                    $table.find(selector).not('.footable-cell-detail').addClass(data.className);\n                }\n            });\n\n            // Create a nice friendly array to work with out of the breakpoints object.\n            for (var name in opt.breakpoints) {\n                ft.breakpoints.push({ 'name': name, 'width': opt.breakpoints[name] });\n                ft.breakpointNames += (name + ' ');\n            }\n\n            // Sort the breakpoints so the smallest is checked first\n            ft.breakpoints.sort(function (a, b) {\n                return a['width'] - b['width'];\n            });\n\n            //bind the toggle selector click events\n            ft.bindToggleSelectors();\n\n            ft.raise('footable_initializing');\n\n            $table.bind('footable_initialized', function () {\n                //resize the footable onload\n                ft.resize();\n\n                //remove the loading class\n                $table.removeClass(cls.loading);\n\n                //hides all elements within the table that have the attribute data-hide=\"init\"\n                //what does this do? LOL\n                $table.find('[data-init=\"hide\"]').hide();\n                $table.find('[data-init=\"show\"]').show();\n\n                //add the loaded class\n                $table.addClass(cls.loaded);\n            });\n\n            $table.bind('footable_resize', function () {\n                ft.resize();\n            });\n\n            $window\n                .bind('resize.footable', function () {\n                    ft.timers.resize.stop();\n                    ft.timers.resize.start(function () {\n                        ft.resize();\n                    }, opt.delay);\n                });\n\n            ft.raise('footable_initialized');\n        };\n\n        //moved this out into it's own function so that it can be called from other add-ons\n        ft.bindToggleSelectors = function () {\n            var $table = $(ft.table);\n            $table.find(opt.toggleSelector).unbind('click.footable').bind('click.footable', function (e) {\n                if ($table.is('.breakpoint') && $(e.target).is('td')) {\n                    var $row = $(this).is('tr') ? $(this) : $(this).parents('tr:first');\n                    ft.toggleDetail($row.get(0));\n                }\n            });\n        };\n\n        ft.parse = function (cell, column) {\n            var parser = opt.parsers[column.type] || opt.parsers.alpha;\n            return parser(cell);\n        };\n\n        ft.getColumnData = function (th) {\n            var $th = $(th), hide = $th.data('hide'), index = $th.index();\n            hide = hide || '';\n            hide = hide.split(',');\n            var data = {\n                'index': index,\n                'hide': { },\n                'type': $th.data('type') || 'alpha',\n                'name': $.trim($th.data('name') || $th.text()),\n                'ignore': $th.data('ignore') || false,\n                'className': $th.data('class') || null,\n                'matches': [],\n                'names': { },\n                'group': $th.data('group') || null,\n                'groupName': null\n            };\n\n            if (data.group != null) {\n                var $group = $(ft.table).find('> thead > tr.footable-group-row > th[data-group=\"' + data.group + '\"], > thead > tr.footable-group-row > td[data-group=\"' + data.group + '\"]').first();\n                data.groupName = ft.parse($group, { 'type': 'alpha' });\n            }\n\n            var pcolspan = parseInt($th.prev().attr('colspan') || 0);\n            indexOffset += pcolspan > 1 ? pcolspan - 1 : 0;\n            var colspan = parseInt($th.attr('colspan') || 0), curindex = data.index + indexOffset;\n            if (colspan > 1) {\n                var names = $th.data('names');\n                names = names || '';\n                names = names.split(',');\n                for (var i = 0; i < colspan; i++) {\n                    data.matches.push(i + curindex);\n                    if (i < names.length) data.names[i + curindex] = names[i];\n                }\n            } else {\n                data.matches.push(curindex);\n            }\n\n            data.hide['default'] = ($th.data('hide') === \"all\") || ($.inArray('default', hide) >= 0);\n\n            for (var name in opt.breakpoints) {\n                data.hide[name] = ($th.data('hide') === \"all\") || ($.inArray(name, hide) >= 0);\n            }\n            var e = ft.raise('footable_column_data', { 'column': { 'data': data, 'th': th } });\n            return e.column.data;\n        };\n\n        ft.getViewportWidth = function () {\n            return window.innerWidth || (document.body ? document.body.offsetWidth : 0);\n        };\n\n        ft.getViewportHeight = function () {\n            return window.innerHeight || (document.body ? document.body.offsetHeight : 0);\n        };\n\n        ft.calculateWidthAndHeight = function ($table, info) {\n            if (jQuery.isFunction(opt.calculateWidthAndHeightOverride)) {\n                return opt.calculateWidthAndHeightOverride($table, info);\n            }\n            if (info.viewportWidth < info.width) info.width = info.viewportWidth;\n            if (info.viewportHeight < info.height) info.height = info.viewportHeight;\n\n            return info;\n        };\n\n        ft.hasBreakpointColumn = function (breakpoint) {\n            for (var c in ft.columns) {\n                if (ft.columns[c].hide[breakpoint]) {\n                    return true;\n                }\n            }\n            return false;\n        };\n\n        ft.resize = function () {\n            var $table = $(ft.table);\n            var info = {\n                'width': $table.width(),                  //the table width\n                'height': $table.height(),                //the table height\n                'viewportWidth': ft.getViewportWidth(),   //the width of the viewport\n                'viewportHeight': ft.getViewportHeight(), //the width of the viewport\n                'orientation': null\n            };\n            info.orientation = info.viewportWidth > info.viewportHeight ? 'landscape' : 'portrait';\n\n            info = ft.calculateWidthAndHeight($table, info);\n\n            var pinfo = $table.data('footable_info');\n            $table.data('footable_info', info);\n            ft.raise('footable_resizing', { 'old': pinfo, 'info': info });\n\n            // This (if) statement is here purely to make sure events aren't raised twice as mobile safari seems to do\n            if (!pinfo || ((pinfo && pinfo.width && pinfo.width != info.width) || (pinfo && pinfo.height && pinfo.height != info.height))) {\n                var current = null, breakpoint;\n                for (var i = 0; i < ft.breakpoints.length; i++) {\n                    breakpoint = ft.breakpoints[i];\n                    if (breakpoint && breakpoint.width && info.width <= breakpoint.width) {\n                        current = breakpoint;\n                        break;\n                    }\n                }\n\n                var breakpointName = (current == null ? 'default' : current['name']);\n\n                var hasBreakpointFired = ft.hasBreakpointColumn(breakpointName);\n\n                $table\n                    .removeClass('default breakpoint').removeClass(ft.breakpointNames)\n                    .addClass(breakpointName + (hasBreakpointFired ? ' breakpoint' : ''))\n                    .find('> thead > tr:last-child > th')\n                    .each(function () {\n                        var data = ft.columns[$(this).index()], selector = '', first = true;\n                        $.each(data.matches, function (m, match) {\n                            if (!first) {\n                                selector += ', ';\n                            }\n                            var count = match + 1;\n                            selector += '> tbody > tr:not(.footable-row-detail) > td:nth-child(' + count + ')';\n                            selector += ', > tfoot > tr:not(.footable-row-detail) > td:nth-child(' + count + ')';\n                            selector += ', > colgroup > col:nth-child(' + count + ')';\n                            first = false;\n                        });\n\n                        selector += ', > thead > tr[data-group-row=\"true\"] > th[data-group=\"' + data.group + '\"]';\n                        var $column = $table.find(selector).add(this);\n                        if (data.hide[breakpointName] == false) $column.show();\n                        else $column.hide();\n\n                        if ($table.find('> thead > tr.footable-group-row').length == 1) {\n                            var $groupcols = $table.find('> thead > tr:last-child > th[data-group=\"' + data.group + '\"]:visible, > thead > tr:last-child > th[data-group=\"' + data.group + '\"]:visible'),\n                                $group = $table.find('> thead > tr.footable-group-row > th[data-group=\"' + data.group + '\"], > thead > tr.footable-group-row > td[data-group=\"' + data.group + '\"]'),\n                                groupspan = 0;\n\n                            $.each($groupcols, function () {\n                                groupspan += parseInt($(this).attr('colspan') || 1);\n                            });\n\n                            if (groupspan > 0) $group.attr('colspan', groupspan).show();\n                            else $group.hide();\n                        }\n                    })\n                    .end()\n                    .find('> tbody > tr.footable-detail-show').each(function () {\n                        ft.createOrUpdateDetailRow(this);\n                    });\n\n                $table.find('> tbody > tr.footable-detail-show:visible').each(function () {\n                    var $next = $(this).next();\n                    if ($next.hasClass('footable-row-detail')) {\n                        if (!hasBreakpointFired) $next.hide();\n                        else $next.show();\n                    }\n                });\n\n                // adding .footable-first-column and .footable-last-column to the first and last th and td of each row in order to allow\n                // for styling if the first or last column is hidden (which won't work using :first-child or :last-child)\n                $table.find('> thead > tr > th.footable-last-column, > tbody > tr > td.footable-last-column').removeClass('footable-last-column');\n                $table.find('> thead > tr > th.footable-first-column, > tbody > tr > td.footable-first-column').removeClass('footable-first-column');\n                $table.find('> thead > tr, > tbody > tr')\n                    .find('> th:visible:last, > td:visible:last')\n                    .addClass('footable-last-column')\n                    .end()\n                    .find('> th:visible:first, > td:visible:first')\n                    .addClass('footable-first-column');\n\n                ft.raise('footable_breakpoint_' + breakpointName, { 'info': info });\n            }\n\n            ft.raise('footable_resized', { 'old': pinfo, 'info': info });\n        };\n\n        ft.toggleDetail = function (actualRow) {\n            var $row = $(actualRow),\n                created = ft.createOrUpdateDetailRow($row.get(0)),\n                $next = $row.next();\n\n            if (!created && $next.is(':visible')) {\n                $row.removeClass('footable-detail-show');\n                //only hide the next row if it's a detail row\n                if ($next.hasClass('footable-row-detail')) $next.hide();\n            } else {\n                $row.addClass('footable-detail-show');\n                $next.show();\n            }\n        };\n\n        ft.getColumnFromTdIndex = function (index) {\n            /// <summary>Returns the correct column data for the supplied index taking into account colspans.</summary>\n            /// <param name=\"index\">The index to retrieve the column data for.</param>\n            /// <returns type=\"json\">A JSON object containing the column data for the supplied index.</returns>\n            var result = null;\n            for (var column in ft.columns) {\n                if ($.inArray(index, ft.columns[column].matches) >= 0) {\n                    result = ft.columns[column];\n                    break;\n                }\n            }\n            return result;\n        };\n\n        ft.createOrUpdateDetailRow = function (actualRow) {\n            var $row = $(actualRow), $next = $row.next(), $detail, values = [];\n            if ($row.is(':hidden')) return false; //if the row is hidden for some readon (perhaps filtered) then get out of here\n            ft.raise('footable_rowdetailupdated', { 'row': $row, 'detail': $next });\n            $row.find('> td:hidden').each(function () {\n                var index = $(this).index(), column = ft.getColumnFromTdIndex(index), name = column.name;\n                if (column.ignore == true) return true;\n\n                if (index in column.names) name = column.names[index];\n                values.push({ 'name': name, 'value': ft.parse(this, column), 'display': $.trim($(this).html()), 'group': column.group, 'groupName': column.groupName });\n                return true;\n            });\n            if (values.length == 0) return false; //return if we don't have any data to show\n            var colspan = $row.find('> td:visible').length;\n            var exists = $next.hasClass('footable-row-detail');\n            if (!exists) { // Create\n                $next = $('<tr class=\"footable-row-detail\"><td class=\"footable-cell-detail\"><div class=\"footable-row-detail-inner\"></div></td></tr>');\n                $row.after($next);\n            }\n            $next.find('> td:first').attr('colspan', colspan);\n            $detail = $next.find('.footable-row-detail-inner').empty();\n            opt.createDetail($detail, values);\n            return !exists;\n        };\n\n        ft.raise = function (eventName, args) {\n            args = args || { };\n            var def = { 'ft': ft };\n            $.extend(true, def, args);\n            var e = $.Event(eventName, def);\n            if (!e.ft) {\n                $.extend(true, e, def);\n            } //pre jQuery 1.6 which did not allow data to be passed to event object constructor\n            $(ft.table).trigger(e);\n            return e;\n        };\n\n        ft.init();\n        return ft;\n    };\n})(jQuery, window);\n"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.paginate.js",
    "content": "(function ($, w, undefined) {\n    if (w.footable == undefined || w.footable == null)\n        throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n    var defaults = {\n        paginate: true,\n        pageSize: 10,\n        pageNavigation: '.footable-nav'\n    };\n\n    function pageInfo(ft) {\n        var $table = $(ft.table), $tbody = $table.find('> tbody');\n        this.pageNavigation = $table.data('page-navigation') || ft.options.pageNavigation;\n        this.pageSize = $table.data('page-size') || ft.options.pageSize;\n        this.currentPage = 0;\n        this.pages = [];\n    };\n\n    function Paginate() {\n        var p = this;\n        p.name = 'Footable Paginate';\n\n        p.init = function (ft) {\n            if (ft.options.paginate == true) {\n                $(ft.table).bind({\n                    'footable_initialized': function (e) {\n                        e.ft.pageInfo = new pageInfo(e.ft);\n\t\t\t\t\t\te.ft.raise('footable_setup_paging');\n                    },\n                    'footable_sorted footable_filtered footable_setup_paging': function () {\n                        p.setupPaging(ft);\n                    }\n                });\n            }\n        };\n\t\t\n\t\tp.setupPaging = function(ft) {\n\t\t\tvar $tbody = $(ft.table).find('> tbody');\n\t\t\tp.createPages(ft, $tbody);\n\t\t\tp.createNavigation(ft, $tbody);\n\t\t\tp.fillPage(ft, $tbody, ft.pageInfo.currentPage);\n\t\t};\n\n        p.createPages = function (ft, tbody) {\n            var pages = 1;\n            var info = ft.pageInfo;\n            var pageCount = pages * info.pageSize;\n            var page = [];\n            var lastPage = [];\n            info.pages = [];\n            var rows = tbody.find('> tr:not(.footable-filtered,.footable-row-detail)');\n            rows.each(function (i, row) {\n                page.push(row);\n                if (i === pageCount - 1) {\n                    info.pages.push(page);\n                    pages++;\n                    pageCount = pages * info.pageSize;\n                    page = [];\n                } else if (i >= rows.length - (rows.length % info.pageSize)) {\n                    lastPage.push(row);\n                }\n            });\n            if (lastPage.length > 0) info.pages.push(lastPage);\n            if (info.currentPage >= info.pages.length) info.currentPage = info.pages.length - 1;\n            if (info.currentPage < 0) info.currentPage = 0;\n        };\n\n        p.createNavigation = function (ft, tbody) {\n            var $nav = $(ft.pageInfo.pageNavigation);\n            if ($nav.length == 0) return;\n            $nav.find('li').remove();\n            var info = ft.pageInfo;\n            if (info.pages.length > 0) {\n\n                $nav.append('<li class=\"footable-page-arrow\"><a data-page=\"prev\" href=\"#prev\">&laquo;</a></li>');\n                $.each(info.pages, function (i, page) {\n                    if (page.length > 0) {\n                        $nav.append('<li class=\"footable-page\"><a data-page=\"' + i + '\" href=\"#\">' + (i + 1) + '</a></li>');\n                    }\n                });\n                $nav.append('<li class=\"footable-page-arrow\"><a data-page=\"next\" href=\"#next\">&raquo;</a></li>');\n            }\n            $nav.find('a').click(function (e) {\n                e.preventDefault();\n                var page = $(this).data('page');\n                var newPage = info.currentPage;\n                if (page == 'prev') {\n                    if (newPage > 0) newPage--;\n                } else if (page == 'next') {\n                    if (newPage < info.pages.length - 1) newPage++;\n                } else {\n                    newPage = page;\n                }\n                if (info.currentPage != newPage) {\n                    p.fillPage(ft, tbody, newPage);\n                }\n                $nav.find('li').removeClass('footable-page-current');\n                $nav.find('li.footable-page > a[data-page=' + info.currentPage + ']').parent().addClass('footable-page-current');\n            });\n            $nav.find('li.footable-page > a[data-page=' + info.currentPage + ']').parent().addClass('footable-page-current');\n        };\n\n        p.fillPage = function (ft, tbody, pageNumber) {\n            ft.pageInfo.currentPage = pageNumber;\n            tbody.find('> tr').hide();\n            $(ft.pageInfo.pages[pageNumber]).each(function () {\n                p.showRow(this, ft);\n            });\n        };\n\n        p.showRow = function (row, ft) {\n            var $row = $(row), $next = $row.next(), $table = $(ft.table);\n            if ($table.hasClass('breakpoint') && $row.hasClass('footable-detail-show') && $next.hasClass('footable-row-detail')) {\n                $row.add($next).show();\n                ft.createOrUpdateDetailRow(row);\n            }\n            else $row.show();\n        };\n    };\n\n    w.footable.plugins.register(new Paginate(), defaults);\n\n})(jQuery, window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.plugin.template.js",
    "content": "﻿(function ($, w, undefined) {\n  if (w.footable == undefined || w.foobox == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var defaults = {\n    /*\n       Plugin options here, example:\n\n        var defaults = {\n          myPlugin: {\n            enabled: true\n          }\n        };\n\n       This would allow you to access this option using ft.options.myPlugin.enabled\n    */\n  };\n\n  function MyPlugin() {\n    var p = this;\n    p.name = 'Footable MyPlugin';\n    p.init = function(ft) {\n      $(ft.table).bind({\n        /*\n           Bind to relevant events here to modify/add functionality to Footable, example:\n\n            $(ft.table).bind({\n              'footable_initialized': function(e){\n                if (e.ft.options.myPlugin.enabled == true){\n                  alert('Hello World');\n                }\n              }\n            });\n\n           This would listen for the 'footable_initialized' event and when called check if the plugin is enabled\n           and if it is alert 'Hello World' to the user.\n        */\n      });\n    };\n  };\n  \n  w.footable.plugins.register(new MyPlugin(), defaults);\n  \n})(jQuery, window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/js/footable.sortable.js",
    "content": "﻿(function($, w, undefined) {\n  if (w.footable == undefined || w.footable == null)\n    throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');\n\n  var defaults = {\n    sort: true,\n    sorters: {\n      alpha: function(a, b) {\n        if (a == b) return 0;\n        if (a < b) return -1;\n        return 1;\n      },\n      numeric: function(a, b) {\n        return a - b;\n      }\n    },\n    parsers: {\n      numeric: function(cell) {\n        var val = $(cell).data('value') || $(cell).text().replace(/[^0-9.-]/g, '');\n        val = parseFloat(val);\n        if (isNaN(val)) val = 0;\n        return val;\n      }\n    },\n    classes: {\n      sort: {\n        sortable: 'footable-sortable',\n        sorted: 'footable-sorted',\n        descending: 'footable-sorted-desc',\n        indicator: 'footable-sort-indicator'\n      }\n    }\n  };\n\n  function Sortable() {\n    var p = this;\n    p.name = 'Footable Sortable';\n    p.init = function(ft) {\n      if (ft.options.sort == true) {\n        $(ft.table).bind({\n          'footable_initialized': function(e) {\n            var cls = ft.options.classes.sort, column;\n\n            var $table = $(e.ft.table), $tbody = $table.find('> tbody'), $th;\n\n            $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').each(function(ec) {\n              $th = $(this), column = e.ft.columns[$th.index()];\n              if (column.sort.ignore != true) {\n                $th.addClass(cls.sortable);\n                $('<span />').addClass(cls.indicator).appendTo($th);\n              }\n            });\n\n            $table.find('> thead > tr:last-child > th.' + cls.sortable + ', > thead > tr:last-child > td.' + cls.sortable).click(function(ec) {\n              $th = $(this), column = e.ft.columns[$th.index()];\n              if (column.sort.ignore == true) return true;\n              ec.preventDefault();\n\n              $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').not($th).removeClass(cls.sorted + ' ' + cls.descending);\n\n              if ($th.hasClass(cls.sorted)) {\n                p.reverse(e.ft, $tbody);\n                $th.removeClass(cls.sorted).addClass(cls.descending);\n              } else if ($th.hasClass(cls.descending)) {\n                p.reverse(e.ft, $tbody);\n                $th.removeClass(cls.descending).addClass(cls.sorted);\n              } else {\n                p.sort(e.ft, $tbody, column);\n                $th.removeClass(cls.descending).addClass(cls.sorted);\n              }\n              e.ft.bindToggleSelectors();\n              e.ft.raise('footable_sorted', { column : column });\n              return false;\n            });\n\n            var didSomeSorting = false;\n            for (var c in e.ft.columns) {\n              column = e.ft.columns[c];\n              if (column.sort.initial) {\n                p.sort(e.ft, $tbody, column);\n                didSomeSorting = true;\n                $th = $table.find('> thead > tr:last-child > th:eq(' + c + '), > thead > tr:last-child > td:eq(' + c + ')');\n\n                if (column.sort.initial == 'descending') {\n                  p.reverse(e.ft, $tbody);\n                  $th.addClass(cls.descending);\n                } else {\n                  $th.addClass(cls.sorted);\n                }\n\n                break;\n              } else if (column.sort.ignore != true) {\n\n              }\n            }\n            if (didSomeSorting) {\n              e.ft.bindToggleSelectors();\n            }\n          },\n          'footable_column_data': function(e) {\n            var $th = $(e.column.th);\n            e.column.data.sort = e.column.data.sort || {};\n            e.column.data.sort.initial = $th.data('sort-initial') || false;\n            e.column.data.sort.ignore = $th.data('sort-ignore') || false;\n            e.column.data.sort.selector = $th.data('sort-selector') || null;\n\n            var match = $th.data('sort-match') || 0;\n            if (match >= e.column.data.matches.length) match = 0;\n            e.column.data.sort.match = e.column.data.matches[match];\n          }\n        });\n      }\n    };\n    \n    p.rows = function(ft, tbody, column) {\n      var rows = [];\n      tbody.find('> tr').each(function() {\n        var $row = $(this), $next = null;\n        if ($row.hasClass('footable-row-detail')) return true;\n        if ($row.next().hasClass('footable-row-detail')) {\n          $next = $row.next().get(0);\n        }\n        var row = { 'row': $row, 'detail': $next };\n        if (column != undefined) {\n          row.value = ft.parse(this.cells[column.sort.match], column);\n        }\n        rows.push(row);\n        return true;\n      }).detach();\n      return rows;\n    };\n\n    p.sort = function(ft, tbody, column) {\n      var rows = p.rows(ft, tbody, column);\n      var sorter = ft.options.sorters[column.type] || ft.options.sorters.alpha;\n      rows.sort(function(a, b) { return sorter(a.value, b.value); });\n      for (var j = 0; j < rows.length; j++) {\n        tbody.append(rows[j].row);\n        if (rows[j].detail != null) {\n          tbody.append(rows[j].detail);\n        }\n      }\n    };\n\n    p.reverse = function(ft, tbody) {\n      var rows = p.rows(ft, tbody);\n      for (var i = rows.length - 1; i >= 0; i--) {\n        tbody.append(rows[i].row);\n        if (rows[i].detail != null) {\n          tbody.append(rows[i].detail);\n        }\n      }\n    };\n  }\n\n  ;\n\n  w.footable.plugins.register(new Sortable(), defaults);\n\n})(jQuery, window);"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/responsive-container.htm",
    "content": "<!DOCTYPE html>\n\n<html>\n  <head>\n    <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\" />\n    <meta name=\"format-detection\" content=\"telephone=no\" />\n\n    <title>FooTable Responsive Demo</title>\n    <style type=\"text/css\">\n        body { margin: 5px 10px;padding: 0; font-family:courier new; font-size:12px; }\n        \n        .frame-border {\n          padding: 20px;\n        }\n        \n        .device-selector {\n          text-align:center;\n        }\n        \n        .device-selector a {\n          background: url(device-sprite.png) no-repeat top left;\n          width: 48px; height: 48px;\n          margin:0 10px;\n          display:inline-block;\n          border:solid 5px transparent;\n          border-radius:3px;\n        }\n        \n          .device-selector a.tablet{ background-position: 0 0; } \n          .device-selector a.tablet-landscape{ background-position: -96px 0; } \n          .device-selector a.mobile{ background-position: -192px 0; } \n          .device-selector a.mobile-landscape{ background-position: -288px 0; } \n          .device-selector a.desktop{ background-position: -384px 0; }\n\n            .device-selector a:hover {\n              background-color:#eee;\n            }\n          \n            .device-selector a.chosen {\n              background-color:#ddd;\n            }\n            \n        .demo-selector {\n          text-align:center;\n        }\n        \n          .demo-selector p {\n            display:inline-block;\n          }\n          \n          .demo-selector a {\n            text-decoration:none;\n            color:#00f;\n          }\n          \n            .demo-selector a.chosen {\n              text-decoration:underline;\n              font-weight:bold;\n              color:#f00;\n            }\n            \n          .demo-selector .demo-desc {\n            font-size:18px;\n            font-family:arial;\n          }\n            \n        #demo-frame {\n          border: solid 3px #ddd;\n          width: 1024px;\n          height: 600px;\n          margin-left:50%;\n          position:fixed;\n          left:-512px;\n          border-radius:5px;\n        }\n        \n    </style>    \n    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\" type=\"text/javascript\"></script>\n    <script type=\"text/javascript\">\n      $(function () {\n    \t\t$('.device-selector > a').click(function(e) {\n    \t\t\te.preventDefault();\n          var $this = $(this);\n          $this.addClass('chosen').siblings('a').removeClass('chosen');\n    \t\t\tvar width = $this.data('width');\n          var left = (parseInt(width) / 2) * -1;\n    \t\t\tvar height = $this.data('height');\n    \t\t\t$('#demo-frame').animate({ 'width': width, 'left' : left });\n    \t\t});\n        \n        $('.demo-selector > a').click(function(e) {\n          e.preventDefault();\n          var $this = $(this);\n          $this.addClass('chosen').siblings('a').removeClass('chosen');\n          var url = $this.data('url');\n          $('#demo-frame').attr('src', url);\n          $('.demo-desc span').text( $this.data('desc') );\n          $('.demo-desc a').attr('href', url);\n        });\n      });\n    </script>\n  </head>\n  <body>\n    <div class=\"device-selector\">\n      <p>choose a viewport:</p>\n      <a class=\"mobile\" data-width=\"320px\" data-height=\"480px\" href=\"#mobile\"></a>\n      <a class=\"tablet\" data-width=\"768px\" data-height=\"1024px\" href=\"#tablet\"></a>\n      <a class=\"desktop\" data-width=\"1224px\" data-height=\"600px\" href=\"#desktop\"></a>\n    </div>\n    <div class=\"demo-selector\">\n      <p>choose a demo:</p>\n      <a class=\"chosen\" data-desc=\"This demo shows a really simple table that only contains text (nothing fancy)\" data-url=\"demo.htm\" href=\"#simple\">simple</a>\n      <a data-url=\"demo2.htm\" data-desc=\"This demo shows a table with some more involved html, including images and links\" href=\"#html\">html</a>\n      <a data-url=\"demo-sorting.htm\" data-desc=\"This demo shows off the sortable add-on, so the table columns can be sorted by clicking the column headers\" href=\"#sorting\">sorting</a>\n      <a data-url=\"demo-filtering.htm\" data-desc=\"This demo shows off the filtering add-on, so the table rows can be filtered by a textbox somewhere on the page\" href=\"#filtering\">filtering</a>\n      <a data-url=\"demo-sorting-filtering.htm\" data-desc=\"Combines both the filtering and sorting add-ons together\" href=\"#sorting-filtering\">sorting+filtering</a>\n      <div class=\"demo-desc\"><span>This demo shows a really simple table that only contains text (nothing fancy)</span> <a href=\"demo.htm\" title=\"open demo in new window\" target=\"_blank\"><img border=\"0\" src=\"images/external.png\" /></a></div>\n    </div>\n    <div style=\"clear: both\"></div>\n    <div class=\"frame-border\">\n      <iframe id=\"demo-frame\" src=\"demo.htm\"></iframe>\n    </div>\n    <div style=\"clear: both\"></div>\n  </body>\n</html>"
  },
  {
    "path": "target/mongo/style/eu/theme/scripts/plugins/tables/FooTable/test-adding-attribs.htm",
    "content": "﻿<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>FooTable - jQuery plugin for responsive HTML tables</title>\n  <meta name=\"viewport\" content = \"width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no\" />\n  \n  <link href=\"css/footable-0.1.css\" rel=\"stylesheet\" type=\"text/css\" />\n  \n  <script src=\"js/data-generator.js\" type=\"text/javascript\"></script>\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" type=\"text/javascript\"></script>\n  <script src=\"js/footable.js\" type=\"text/javascript\"></script>\n  <script type=\"text/javascript\">\n    $(function() {\n\t\t\t$.expr[\":\"].contains2 = $.expr.createPseudo(function(arg) {\n\t\t\t\t\treturn function( elem ) {\n\t\t\t\t\t\t\treturn $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;\n\t\t\t\t\t};\n\t\t\t});\n\n\t\t\tjQuery.fn.attrAppendWithComma = function (a, c) {\n\t\t\t\t\tvar b;\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\t\tb = $(this);\n\t\t\t\t\t\t\tif (b.attr(a) !== undefined && b.attr(a) != \"\") {\n\t\t\t\t\t\t\t\t\tb.attr(a, b.attr(a) + ',' + c)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tb.attr(a, c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t};\n\n\t\t\t$('th:eq(0)').attr('data-class', 'expand');\n\n\t\t\t$('th:gt(2)').attrAppendWithComma('data-hide', 'tablet');\n\n\t\t\t$('th:gt(1)').attrAppendWithComma('data-hide', 'phone');\n\t\t\t\n      $('table').footable();\n    });\n  </script>\n</head>\n  <body>\n<table class=\"footable\">\n      <thead>\n        <tr>\n          <th>\n            First Name\n          </th>\n          <th>\n            Last Name\n          </th>\n          <th>\n            Job Title\n          </th>\n          <th>\n            DOB\n          </th>\n          <th>\n            Status\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n\t\t\t\t<tr><td>Marquia</td><td>Yaple</td><td>Clinical Services Director</td><td data-value=\"244465146369\">30 Sep 1977</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Sephnie</td><td>Hogle</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"133419815423\">25 Mar 1974</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Laurena</td><td>Sprouse</td><td>Broadcast Maintenance Engineer</td><td data-value=\"444485661385\">1 Feb 1984</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Solomon</td><td>Leinen</td><td>Youth Pastor</td><td data-value=\"-313103208156\">30 Jan 1960</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lauri</td><td>Lewis</td><td>Youth Pastor</td><td data-value=\"550673782140\">14 Jun 1987</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Raeann</td><td>Haner</td><td>Internal Medicine Nurse Practitioner</td><td data-value=\"-263975597222\">20 Aug 1961</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lucila</td><td>Stgelais</td><td>Childcare Center Administrator</td><td data-value=\"-153466436643\">19 Feb 1965</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Beariz</td><td>Bittinger</td><td>Serials Librarian</td><td data-value=\"404201120945\">23 Oct 1982</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Elodia</td><td>Lamark</td><td>Telephone Lines Repairer</td><td data-value=\"192519325613\">7 Feb 1976</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Maple</td><td>Ates</td><td>Drag Car Racer</td><td data-value=\"217566162480\">23 Nov 1976</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Ilona</td><td>Landa</td><td>Serials Librarian</td><td data-value=\"350692609732\">11 Feb 1981</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Rona</td><td>Klotz</td><td>Offbearer</td><td data-value=\"195546142025\">13 Mar 1976</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Raeann</td><td>Klotz</td><td>Fashion Designer</td><td data-value=\"596032715944\">20 Nov 1988</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Neie</td><td>Leonardo</td><td>Clown</td><td data-value=\"225363385465\">21 Feb 1977</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Maple</td><td>Gaffney</td><td>Jig Bore Tool Maker</td><td data-value=\"188576037442\">23 Dec 1975</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Gwen</td><td>Han</td><td>Employment Clerk</td><td data-value=\"11029092743\">8 May 1970</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Jason</td><td>Matsumura</td><td>Electrical Engineering Director</td><td data-value=\"22974045863\">23 Sep 1970</td><td data-value=\"2\">Disabled</td></tr>\n\t\t\t\t<tr><td>Lorriane</td><td>Sprinkle</td><td>Strawberry Sorter</td><td data-value=\"124084128018\">7 Dec 1973</td><td data-value=\"1\">Active</td></tr>\n\t\t\t\t<tr><td>Bernie</td><td>Bruening</td><td>Horticulture Instructor</td><td data-value=\"-227799605447\">13 Oct 1962</td><td data-value=\"3\">Suspended</td></tr>\n\t\t\t\t<tr><td>Marquia</td><td>Hoos</td><td>Route Sales Person</td><td data-value=\"218209892894\">30 Nov 1976</td><td data-value=\"3\">Suspended</td></tr>\n      </tbody>\n    </table>\n    \n  </body>\n</html>\n"
  },
  {
    "path": "target/mongo/style/eu/theme/skins/css/blue-gray.css",
    "content": ".btn-primary,\n#flotTip,\n.btn-group.open .btn-primary.dropdown-toggle,\n.btn-primary.disabled,\n.btn-primary[disabled],\n.btn-primary:hover,\n.label-primary,\n.table-primary thead th,\n.pagination ul > .active > a,\n.pagination ul > .active > span,\n.gallery ul li .thumb,\n.widget-activity ul.filters li.glyphicons.active i,\n.ui-slider-wrap .slider-primary .ui-slider-range,\n.accordion-heading .accordion-toggle,\n.ui-widget-header,\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active,\n.fc-event-skin,\n#external-events li,\n.notyfy_wrapper.notyfy_primary,\n.progress.progress-primary .bar,\n.alert.alert-primary,\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a,\n.gritter-item-wrapper.gritter-primary .gritter-item,\n#content-notification .notyfy_wrapper.notyfy_primary,\n.ribbon-wrapper .ribbon.primary,\n.label.label-primary,\n.widget-stats.primary,\n.widget-stats.primary:hover,\n.tabsbar:not(.tabsbar-2) ul li.active a,\n.widget.widget-wizard-pills .widget-head ul li.primary a,\n.bwizard-steps li.active,\n.sliderContainer .ui-rangeSlider-bar,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active,\n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close,\n#tlyPageGuideWrapper #tlyPageGuideMessages span,\n.tabsbar.tabsbar-2.active-fill ul li.active a,\n.shop-client-products.list ul li a .glyphicons i,\n.social-large:not(.social-large-2) a.active,\n.social-large:not(.social-large-2) a:hover,\n#landing_1 .banner-1 .carousel-indicators li.active,\n.navbar.main,\n.navbar.main .btn-navbar,\n.navbar.main .btn-navbar:hover,\n.nav-timeline > li.active > a,\n.nav-timeline > li > a:hover,\n.nav-timeline > li.active > a:hover,\n.layout-timeline ul.timeline > li.active .type:before,\n.layout-timeline ul.timeline > li.active .type:after,\n.layout-timeline ul.timeline > li.active:before,\n.carousel.carousel-1 .carousel-indicators li.active,\n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active,\n.widget.widget-body-primary > .widget-body {\n  background-color: #496cad;\n}\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover,\n#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover,\n.widget-stats.primary,\n.btn-primary,\n.tabsbar:not(.tabsbar-2) ul li.active a {\n  background-color: #6785bd;\n  background-image: -moz-linear-gradient(top, #7b96c7, #496cad);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#7b96c7), to(#496cad));\n  background-image: -webkit-linear-gradient(top, #7b96c7, #496cad);\n  background-image: -o-linear-gradient(top, #7b96c7, #496cad);\n  background-image: linear-gradient(to bottom, #7b96c7, #496cad);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7b96c7', endColorstr='#ff496cad', GradientType=0);\n}\na,\np a,\n.widget .widget-body.list ul li .count,\n.widget-stats .txt strong,\n.glyphicons.single i:before,\n.glyphicons.single,\n.table-primary tbody td.important,\n.widget.widget-3 .widget-body.large.cancellations span span:first-child,\n.widget .widget-footer a:hover,\n.widget .widget-footer a:hover i:before,\n.widget.widget-3 .widget-footer a:hover,\n.widget.widget-3 .widget-footer a:hover i:before,\nblockquote small,\n.tabsbar.tabsbar-2 ul li.active a,\n.tabsbar.tabsbar-2 ul li.active a i:before,\n.glyphicons.primary i:before,\n.glyphicons.standard:not(.disabled):hover i:before,\n.menubar.links.primary ul li a,\n.text-primary,\n#docs_icons .glyphicons i:before,\n.widget.widget-tabs-double-2 .widget-head ul li.active a i:before,\n.widget.widget-tabs-double-2 .widget-head ul li.active a,\n.shop-client-products.product-details .form-horizontal .price,\n.widget-activity ul.list li:hover .activity-icon i:before,\n.widget-activity ul.list li.highlight .activity-icon i:before,\n#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before,\n#landing_1 .banner .banner-wrapper.banner-1 p a,\n#landing_1 .banner .banner-wrapper.banner-1 h3,\n#landing_2 .banner .banner-wrapper.banner-1 p a,\n#landing_2 .banner .banner-wrapper.banner-1 .buy a,\n#landing_2 .banner .banner-wrapper.banner-1 h3,\n#landing_1 .banner-1 .carousel-caption a,\ndiv.glyphicons.glyphicon-primary i:before,\n.layout-timeline ul.timeline > li.active .type,\n.layout-timeline ul.timeline > li.active .type i:before,\n.social-large.social-large-2 a.active i:before,\n.social-large.social-large-2 a:hover i:before,\n.social-large.social-large-2 a.active,\n.social-large.social-large-2 a:hover,\nhtml.front #footer a:not(.btn) {\n  color: #496cad;\n}\n.btn-primary,\n.ui-slider-wrap .slider-primary .ui-slider-handle,\n#flotTip,\n.widget.widget-2.primary .widget-head,\n.widget .widget-body.list.list-2 ul li.active a i:before,\n.table-primary thead th,\n.pagination ul > .active > a,\n.pagination ul > .active > span,\n.widget.widget-4 .widget-head .heading,\n.ui-widget-header,\n.fc-event-skin,\n.alert.alert-primary,\n.pagination ul > li > a:hover,\n.pagination ul > li.primary > a,\n.widget-stats.primary,\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n.widget-chat .media .media-body,\n.widget-chat .media .media-body.right,\n#menu .slim-scroll > ul.menu-0 > li.active > a,\n#menu > ul.menu-0 > li.active > a {\n  border-color: #496cad;\n}\n.table-primary tbody td {\n  background-color: #f9fafc;\n}\n.table-primary tbody tr.selected td,\n.table-primary tbody tr.selectable:hover td {\n  background-color: #d5dded;\n}\n.table-primary.table-bordered tbody td,\n.table-primary,\n.pagination ul > .disabled > a,\n.pagination ul > .disabled > span {\n  border-color: #f9fafc;\n}\n.navbar.main {\n  border-bottom-color: #324a77;\n}\n.navbar.main .topnav {\n  border-left-color: #324a77;\n  border-right-color: #8da4cf;\n}\n.navbar.main .topnav > li:first-child {\n  border-left-color: #8da4cf;\n}\n.navbar.main .topnav > li.glyphs,\n.navbar.main .topnav > li.search {\n  border-left-color: #324a77;\n  border-right-color: #8da4cf;\n  box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n  -moz-box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n  -webkit-box-shadow: -1px 0 0 0 #8da4cf, 1px 0 0 0 #324a77;\n}\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n  border-left-color: #324a77;\n}\nhtml.rtl .navbar.main .topnav {\n  border-left-color: #8da4cf;\n  border-right-color: #324a77;\n}\nhtml.rtl .navbar.main .topnav > li.glyphs {\n  border-left-color: #8da4cf;\n  border-right-color: #324a77;\n  box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n  -moz-box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n  -webkit-box-shadow: -1px 0 0 0 #324a77, 1px 0 0 0 #8da4cf;\n}\n.navbar.main .topnav > li:last-child.glyphs,\n.navbar.main .topnav > li:last-child.search {\n  box-shadow: -1px 0 0 0 #8da4cf;\n  -moz-box-shadow: -1px 0 0 0 #8da4cf;\n  -webkit-box-shadow: -1px 0 0 0 #8da4cf;\n}\n.navbar.main .topnav > li:last-child {\n  border-right-color: #324a77;\n}\n.navbar.main .topnav > li.active > a,\n.navbar.main .topnav > li:hover > a,\n.navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul {\n  background: #324a77;\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li.active:last-child,\n.navbar.main .topnav > li.glyphs ul li:hover:last-child {\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li.active,\n.navbar.main .topnav > li.glyphs ul li:hover,\n.navbar.main .topnav > li.search form {\n  background: #8da4cf;\n  border-color: #2b3f65;\n}\n.navbar.main .topnav > li.glyphs ul li .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  color: #8da4cf !important;\n}\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n  color: #fff !important;\n}\nhtml.front .navbar.main .secondary {\n  background: #2b3f65;\n  border-color: #324a77;\n}\n.navbar.main .topnav > li.search form button i:before,\n.navbar.main .topnav > li.search form input {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input::-webkit-input-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input:-moz-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input::-moz-placeholder {\n  color: #324a77;\n}\n.navbar.main .topnav > li.search form input:-ms-input-placeholder {\n  color: #324a77;\n}\n.bwizard-steps li.active:after,\n.sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner {\n  border-left-color: #496cad;\n}\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner {\n  border-right-color: #496cad;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after,\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after {\n  border-top-color: #496cad;\n}\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after {\n  border-bottom-color: #496cad;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #2b3f65;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #41619b;\n}\n.tlypageguide_shadow:after {\n  background-color: rgba(73, 108, 173, 0.2);\n}\n.widget .widget-body.list.list-2 ul li.active {\n  border-color: #8da4cf;\n}\n.widget .widget-body.list.list-2 ul li a {\n  color: #8da4cf;\n}\n.widget .widget-body.list.list-2 ul li a i:before {\n  background: #f9fafc;\n  color: #6988c0;\n  border-color: #8da4cf;\n}\n"
  },
  {
    "path": "target/mongo/style/eu/theme/skins/less/blue-gray.less",
    "content": "@primaryColor: #496cad;\n#gradient {\n.vertical(@startColor: #555, @endColor: #333) {\n   background-color: mix(@startColor, @endColor, 60%);\n   background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n   background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n   background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n   background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n   background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n   background-repeat: repeat-x;\n   filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n}\n}\n\n.btn-primary, \n#flotTip, \n.btn-group.open .btn-primary.dropdown-toggle, .btn-primary.disabled, .btn-primary[disabled], .btn-primary:hover, \n.label-primary, \n.table-primary thead th, \n.pagination ul > .active > a, .pagination ul > .active > span, \n.gallery ul li .thumb, \n.widget-activity ul.filters li.glyphicons.active i, \n.ui-slider-wrap .slider-primary .ui-slider-range, \n.accordion-heading .accordion-toggle, \n.ui-widget-header, \n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, \n.fc-event-skin, \n#external-events li, \n.notyfy_wrapper.notyfy_primary, \n.progress.progress-primary .bar, \n.alert.alert-primary, \n.pagination ul > li > a:hover, .pagination ul > li.primary > a, \n.gritter-item-wrapper.gritter-primary .gritter-item, \n#content-notification .notyfy_wrapper.notyfy_primary, \n.ribbon-wrapper .ribbon.primary, \n.label.label-primary, \n.widget-stats.primary, .widget-stats.primary:hover, \n.tabsbar:not(.tabsbar-2) ul li.active a, \n.widget.widget-wizard-pills .widget-head ul li.primary a, \n.bwizard-steps li.active, \n.sliderContainer .ui-rangeSlider-bar, \n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active, \n#tlyPageGuideWrapper #tlyPageGuideMessages .tlypageguide_close, \n#tlyPageGuideWrapper #tlyPageGuideMessages span, \n.tabsbar.tabsbar-2.active-fill ul li.active a, \n.shop-client-products.list ul li a .glyphicons i, \n.social-large:not(.social-large-2) a.active, .social-large:not(.social-large-2) a:hover, \n#landing_1 .banner-1 .carousel-indicators li.active, \n.navbar.main, \n.navbar.main .btn-navbar, .navbar.main .btn-navbar:hover, \n.nav-timeline > li.active > a, .nav-timeline > li > a:hover, .nav-timeline > li.active > a:hover, \n.layout-timeline ul.timeline > li.active .type:before, .layout-timeline ul.timeline > li.active .type:after, \n.layout-timeline ul.timeline > li.active:before, \n.carousel.carousel-1 .carousel-indicators li.active, \n.widget-body-gray .ui-datepicker .ui-datepicker-calendar tbody td a.ui-state-active, \n.widget.widget-body-primary > .widget-body\n{\n\tbackground-color: @primaryColor;\n}\n\n#menu .slim-scroll > ul.menu-0 > li.active > a, \n#menu .slim-scroll > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover, \n#menu > ul.menu-0 > li.active:not(.hasSubmenu) > a:hover, \n.widget-stats.primary, \n.btn-primary, \n.tabsbar:not(.tabsbar-2) ul li.active a\n{\n\t#gradient > .vertical(lighten(@primaryColor, 15%), @primaryColor);\n}\n\na, p a, \n.widget .widget-body.list ul li .count, \n.widget-stats .txt strong, \n.glyphicons.single i:before, \n.glyphicons.single, \n.table-primary tbody td.important, \n.widget.widget-3 .widget-body.large.cancellations span span:first-child, \n.widget .widget-footer a:hover, .widget .widget-footer a:hover i:before, \n.widget.widget-3 .widget-footer a:hover, .widget.widget-3 .widget-footer a:hover i:before, \nblockquote small, \n.tabsbar.tabsbar-2 ul li.active a, \n.tabsbar.tabsbar-2 ul li.active a i:before, \n.glyphicons.primary i:before, .glyphicons.standard:not(.disabled):hover i:before, \n.menubar.links.primary ul li a, \n.text-primary, \n#docs_icons .glyphicons i:before, \n.widget.widget-tabs-double-2 .widget-head ul li.active a i:before, .widget.widget-tabs-double-2 .widget-head ul li.active a, \n.shop-client-products.product-details .form-horizontal .price, \n.widget-activity ul.list li:hover .activity-icon i:before, .widget-activity ul.list li.highlight .activity-icon i:before, \n#menu ul.menu-1 > li.hasSubmenu.active ul li .glyphicons:hover i:before, \n#landing_1 .banner .banner-wrapper.banner-1 p a, \n#landing_1 .banner .banner-wrapper.banner-1 h3, \n#landing_2 .banner .banner-wrapper.banner-1 p a, #landing_2 .banner .banner-wrapper.banner-1 .buy a, \n#landing_2 .banner .banner-wrapper.banner-1 h3, \n#landing_1 .banner-1 .carousel-caption a, \ndiv.glyphicons.glyphicon-primary i:before, \n.layout-timeline ul.timeline > li.active .type, \n.layout-timeline ul.timeline > li.active .type i:before, \n.social-large.social-large-2 a.active i:before, .social-large.social-large-2 a:hover i:before, \n.social-large.social-large-2 a.active, .social-large.social-large-2 a:hover, \nhtml.front #footer a:not(.btn)\n{\n\tcolor: @primaryColor;\n}\n\n.btn-primary, \n.ui-slider-wrap .slider-primary .ui-slider-handle, \n#flotTip, \n.widget.widget-2.primary .widget-head, \n.widget .widget-body.list.list-2 ul li.active a i:before, \n.table-primary thead th, \n.pagination ul > .active > a, .pagination ul > .active > span, \n.widget.widget-4 .widget-head .heading, \n.ui-widget-header, \n.fc-event-skin, \n.alert.alert-primary, \n.pagination ul > li > a:hover, .pagination ul > li.primary > a, \n.widget-stats.primary, \n#menu .slim-scroll > ul.menu-0 > li.active > a, \n.widget-chat .media .media-body, \n.widget-chat .media .media-body.right, \n#menu .slim-scroll > ul.menu-0 > li.active > a, #menu > ul.menu-0 > li.active > a\n{\n\tborder-color: @primaryColor;\n}\n\n.table-primary tbody td\n{\n\tbackground-color: lighten(@primaryColor, 50%);\n}\n\n.table-primary tbody tr.selected td, .table-primary tbody tr.selectable:hover td\n{\n\tbackground-color: lighten(@primaryColor, 40%);\n}\n\n.table-primary.table-bordered tbody td, .table-primary, .pagination ul > .disabled > a, .pagination ul > .disabled > span\n{\n\tborder-color: lighten(@primaryColor, 50%);\n}\n\n@headerBorder0: darken(@primaryColor, 20%);\n@headerBorder1: darken(@primaryColor, 15%);\n@headerBorder2: lighten(@primaryColor, 20%);\n.navbar.main {\n\tborder-bottom-color: @headerBorder1;\n}\n\n.navbar.main .topnav {\n\tborder-left-color: @headerBorder1;\n\tborder-right-color: @headerBorder2;\n}\n\n.navbar.main .topnav > li:first-child {\n\tborder-left-color: @headerBorder2;\n}\n\n.navbar.main .topnav > li.glyphs, .navbar.main .topnav > li.search {\n\tborder-left-color: @headerBorder1;\n\tborder-right-color: @headerBorder2;\n\tbox-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2, 1px 0 0 0 @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav.pull-right > li:last-child {\n\tborder-left-color: @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav {\n\tborder-left-color: @headerBorder2;\n\tborder-right-color: @headerBorder1;\n}\n\nhtml.rtl .navbar.main .topnav > li.glyphs {\n\tborder-left-color: @headerBorder2;\n\tborder-right-color: @headerBorder1;\n\tbox-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder1, 1px 0 0 0 @headerBorder2;\n}\n\n.navbar.main .topnav > li:last-child.glyphs, .navbar.main .topnav > li:last-child.search {\n\tbox-shadow: -1px 0 0 0 @headerBorder2;\n\t-moz-box-shadow: -1px 0 0 0 @headerBorder2;\n\t-webkit-box-shadow: -1px 0 0 0 @headerBorder2;\n}\n\n.navbar.main .topnav > li:last-child {\n\tborder-right-color: @headerBorder1;\n}\n\n.navbar.main .topnav > li.active > a, .navbar.main .topnav > li:hover > a, .navbar.main .topnav > li.open > a,\n.navbar.main .topnav > li.glyphs ul {\n\tbackground: @headerBorder1;\n\tborder-color: @headerBorder0;\n}\n\n.navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover {\n\t&:last-child { border-color: @headerBorder0; }\n}\n\n.navbar.main .topnav > li.glyphs ul li.active, .navbar.main .topnav > li.glyphs ul li:hover, \n.navbar.main .topnav > li.search form {\n\tbackground: @headerBorder2;\n\tborder-color: @headerBorder0;\n}\n\n.navbar.main .topnav > li.glyphs ul li .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n\tcolor: @headerBorder2 !important;\n}\n\n.navbar.main .topnav > li.glyphs ul li.active .glyphicons,\n.navbar.main .topnav > li.glyphs ul li:hover .glyphicons,\n.navbar.main .topnav > li.glyphs ul li .glyphicons i:before {\n\tcolor: #fff !important;\n}\n\nhtml.front .navbar.main .secondary {\n\tbackground: @headerBorder0;\n\tborder-color: @headerBorder1;\n}\n\n.navbar.main .topnav > li.search form button i:before, .navbar.main .topnav > li.search form input {\n\tcolor: @headerBorder1;\n}\n\n.navbar.main .topnav > li.search form input {\n\t&::-webkit-input-placeholder { color: @headerBorder1; }\n\t&:-moz-placeholder { color: @headerBorder1; }\n\t&::-moz-placeholder { color: @headerBorder1; }\n\t&:-ms-input-placeholder { color: @headerBorder1; }\n}\n\n.bwizard-steps li.active:after, .sliderContainer .ui-rangeSlider-rightArrow .ui-rangeSlider-arrow-inner\n{\n\tborder-left-color: @primaryColor;\n}\n\n.sliderContainer .ui-rangeSlider-leftArrow .ui-rangeSlider-arrow-inner\n{\n\tborder-right-color: @primaryColor;\n}\n\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_right:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_left:after, #tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_top:after\n{\n\tborder-top-color: @primaryColor;\n}\n\n#tlyPageGuideWrapper #tlyPageGuide li.tlypageguide-active.tlypageguide_bottom:after\n{\n\tborder-bottom-color: @primaryColor;\n}\n\n.btn-primary:active, .btn-primary.active\n{\n\tbackground-color: darken(@primaryColor, 20%);\n}\n\n.btn-primary:hover, .btn-primary:focus\n{\n\tbackground-color: darken(@primaryColor, 5%);\n}\n\n.tlypageguide_shadow:after\n{\n\tbackground-color: fade(@primaryColor, 20%);\n}\n\n.widget .widget-body.list.list-2 ul li\n{\n\t&.active { border-color: lighten(@primaryColor, 20%); }\n\ta { color: lighten(@primaryColor, 20%); i:before { background: lighten(@primaryColor, 50%); color: lighten(@primaryColor, 10%); border-color: lighten(@primaryColor, 20%); } }\n}"
  }
]